typedef unsigned char   undefined;

typedef unsigned char    bool;
typedef unsigned char    byte;
typedef unsigned int    dword;
typedef unsigned long long    GUID;
typedef pointer32 ImageBaseOffset32;

typedef long double    longdouble;
typedef long long    longlong;
typedef unsigned char    uchar;
typedef unsigned int    uint;
typedef unsigned long    ulong;
typedef unsigned long long    ulonglong;
typedef unsigned char    undefined1;
typedef unsigned short    undefined2;
typedef unsigned int    undefined4;
typedef unsigned long long    undefined6;
typedef unsigned long long    undefined7;
typedef unsigned long long    undefined8;
typedef unsigned short    ushort;
typedef unsigned short    wchar16;
typedef short    wchar_t;
typedef unsigned short    word;
typedef struct _s_UnwindMapEntry _s_UnwindMapEntry, *P_s_UnwindMapEntry;

typedef struct _s_UnwindMapEntry UnwindMapEntry;

typedef int __ehstate_t;

struct _s_UnwindMapEntry {
    __ehstate_t toState;
    void (*action)(void);
};

typedef struct _s_HandlerType _s_HandlerType, *P_s_HandlerType;

typedef struct TypeDescriptor TypeDescriptor, *PTypeDescriptor;

typedef int ptrdiff_t;

struct TypeDescriptor {
    void *pVFTable;
    void *spare;
    char name[0];
};

struct _s_HandlerType {
    uint adjectives;
    struct TypeDescriptor *pType;
    ptrdiff_t dispCatchObj;
    void *addressOfHandler;
};

typedef union IMAGE_RESOURCE_DIRECTORY_ENTRY_DirectoryUnion IMAGE_RESOURCE_DIRECTORY_ENTRY_DirectoryUnion, *PIMAGE_RESOURCE_DIRECTORY_ENTRY_DirectoryUnion;

typedef struct IMAGE_RESOURCE_DIRECTORY_ENTRY_DirectoryStruct IMAGE_RESOURCE_DIRECTORY_ENTRY_DirectoryStruct, *PIMAGE_RESOURCE_DIRECTORY_ENTRY_DirectoryStruct;

struct IMAGE_RESOURCE_DIRECTORY_ENTRY_DirectoryStruct {
    dword OffsetToDirectory;
    dword DataIsDirectory;
};

union IMAGE_RESOURCE_DIRECTORY_ENTRY_DirectoryUnion {
    dword OffsetToData;
    struct IMAGE_RESOURCE_DIRECTORY_ENTRY_DirectoryStruct IMAGE_RESOURCE_DIRECTORY_ENTRY_DirectoryStruct;
};

typedef struct _s_FuncInfo _s_FuncInfo, *P_s_FuncInfo;

typedef struct _s_TryBlockMapEntry _s_TryBlockMapEntry, *P_s_TryBlockMapEntry;

typedef struct _s_TryBlockMapEntry TryBlockMapEntry;

typedef struct _s_ESTypeList _s_ESTypeList, *P_s_ESTypeList;

typedef struct _s_ESTypeList ESTypeList;

typedef struct _s_HandlerType HandlerType;

struct _s_FuncInfo {
    uint magicNumber_and_bbtFlags;
    __ehstate_t maxState;
    UnwindMapEntry *pUnwindMap;
    uint nTryBlocks;
    TryBlockMapEntry *pTryBlockMap;
    uint nIPMapEntries;
    void *pIPToStateMap;
    ESTypeList *pESTypeList;
    int EHFlags;
};

struct _s_ESTypeList {
    int nCount;
    HandlerType *pTypeArray;
};

struct _s_TryBlockMapEntry {
    __ehstate_t tryLow;
    __ehstate_t tryHigh;
    __ehstate_t catchHigh;
    int nCatches;
    HandlerType *pHandlerArray;
};

typedef struct type_info type_info, *Ptype_info;

struct type_info { // PlaceHolder Class Structure
};

typedef struct _s__RTTIBaseClassDescriptor _s__RTTIBaseClassDescriptor, *P_s__RTTIBaseClassDescriptor;

typedef struct _s__RTTIBaseClassDescriptor RTTIBaseClassDescriptor;

typedef struct PMD PMD, *PPMD;

typedef struct _s__RTTIClassHierarchyDescriptor _s__RTTIClassHierarchyDescriptor, *P_s__RTTIClassHierarchyDescriptor;

typedef struct _s__RTTIClassHierarchyDescriptor RTTIClassHierarchyDescriptor;

struct PMD {
    ptrdiff_t mdisp;
    ptrdiff_t pdisp;
    ptrdiff_t vdisp;
};

struct _s__RTTIBaseClassDescriptor {
    struct TypeDescriptor *pTypeDescriptor; // ref to TypeDescriptor (RTTI 0) for class
    dword numContainedBases; // count of extended classes in BaseClassArray (RTTI 2)
    struct PMD where; // member displacement structure
    dword attributes; // bit flags
    RTTIClassHierarchyDescriptor *pClassHierarchyDescriptor; // ref to ClassHierarchyDescriptor (RTTI 3) for class
};

struct _s__RTTIClassHierarchyDescriptor {
    dword signature;
    dword attributes; // bit flags
    dword numBaseClasses; // number of base classes (i.e. rtti1Count)
    RTTIBaseClassDescriptor **pBaseClassArray; // ref to BaseClassArray (RTTI 2)
};

typedef struct _s__RTTICompleteObjectLocator _s__RTTICompleteObjectLocator, *P_s__RTTICompleteObjectLocator;

typedef struct _s__RTTICompleteObjectLocator RTTICompleteObjectLocator;

struct _s__RTTICompleteObjectLocator {
    dword signature;
    dword offset; // offset of vbtable within class
    dword cdOffset; // constructor displacement offset
    struct TypeDescriptor *pTypeDescriptor; // ref to TypeDescriptor (RTTI 0) for class
    RTTIClassHierarchyDescriptor *pClassDescriptor; // ref to ClassHierarchyDescriptor (RTTI 3)
};

typedef ulonglong __uint64;

typedef struct CLIENT_ID CLIENT_ID, *PCLIENT_ID;

struct CLIENT_ID {
    void *UniqueProcess;
    void *UniqueThread;
};

typedef struct _s_FuncInfo FuncInfo;

typedef struct _cpinfo _cpinfo, *P_cpinfo;

typedef uint UINT;

typedef uchar BYTE;

struct _cpinfo {
    UINT MaxCharSize;
    BYTE DefaultChar[2];
    BYTE LeadByte[12];
};

typedef struct _cpinfo *LPCPINFO;

typedef ulong DWORD;

typedef DWORD LCTYPE;

typedef DWORD LGRPID;

typedef int BOOL;

typedef char CHAR;

typedef CHAR *LPSTR;

typedef BOOL (*LOCALE_ENUMPROCA)(LPSTR);

typedef struct _SYSTEM_INFO _SYSTEM_INFO, *P_SYSTEM_INFO;

typedef union _union_530 _union_530, *P_union_530;

typedef void *LPVOID;

typedef ulong ULONG_PTR;

typedef ULONG_PTR DWORD_PTR;

typedef ushort WORD;

typedef struct _struct_531 _struct_531, *P_struct_531;

struct _struct_531 {
    WORD wProcessorArchitecture;
    WORD wReserved;
};

union _union_530 {
    DWORD dwOemId;
    struct _struct_531 s;
};

struct _SYSTEM_INFO {
    union _union_530 u;
    DWORD dwPageSize;
    LPVOID lpMinimumApplicationAddress;
    LPVOID lpMaximumApplicationAddress;
    DWORD_PTR dwActiveProcessorMask;
    DWORD dwNumberOfProcessors;
    DWORD dwProcessorType;
    DWORD dwAllocationGranularity;
    WORD wProcessorLevel;
    WORD wProcessorRevision;
};

typedef struct _OVERLAPPED _OVERLAPPED, *P_OVERLAPPED;

typedef union _union_518 _union_518, *P_union_518;

typedef void *HANDLE;

typedef struct _struct_519 _struct_519, *P_struct_519;

typedef void *PVOID;

struct _struct_519 {
    DWORD Offset;
    DWORD OffsetHigh;
};

union _union_518 {
    struct _struct_519 s;
    PVOID Pointer;
};

struct _OVERLAPPED {
    ULONG_PTR Internal;
    ULONG_PTR InternalHigh;
    union _union_518 u;
    HANDLE hEvent;
};

typedef struct _SYSTEMTIME _SYSTEMTIME, *P_SYSTEMTIME;

struct _SYSTEMTIME {
    WORD wYear;
    WORD wMonth;
    WORD wDayOfWeek;
    WORD wDay;
    WORD wHour;
    WORD wMinute;
    WORD wSecond;
    WORD wMilliseconds;
};

typedef struct _TIME_ZONE_INFORMATION _TIME_ZONE_INFORMATION, *P_TIME_ZONE_INFORMATION;

typedef long LONG;

typedef wchar_t WCHAR;

typedef struct _SYSTEMTIME SYSTEMTIME;

struct _TIME_ZONE_INFORMATION {
    LONG Bias;
    WCHAR StandardName[32];
    SYSTEMTIME StandardDate;
    LONG StandardBias;
    WCHAR DaylightName[32];
    SYSTEMTIME DaylightDate;
    LONG DaylightBias;
};

typedef struct _COMSTAT _COMSTAT, *P_COMSTAT;

typedef struct _COMSTAT *LPCOMSTAT;

struct _COMSTAT {
    DWORD fCtsHold:1;
    DWORD fDsrHold:1;
    DWORD fRlsdHold:1;
    DWORD fXoffHold:1;
    DWORD fXoffSent:1;
    DWORD fEof:1;
    DWORD fTxim:1;
    DWORD fReserved:25;
    DWORD cbInQue;
    DWORD cbOutQue;
};

typedef struct _WIN32_FIND_DATAW _WIN32_FIND_DATAW, *P_WIN32_FIND_DATAW;

typedef struct _WIN32_FIND_DATAW *LPWIN32_FIND_DATAW;

typedef struct _FILETIME _FILETIME, *P_FILETIME;

typedef struct _FILETIME FILETIME;

struct _FILETIME {
    DWORD dwLowDateTime;
    DWORD dwHighDateTime;
};

struct _WIN32_FIND_DATAW {
    DWORD dwFileAttributes;
    FILETIME ftCreationTime;
    FILETIME ftLastAccessTime;
    FILETIME ftLastWriteTime;
    DWORD nFileSizeHigh;
    DWORD nFileSizeLow;
    DWORD dwReserved0;
    DWORD dwReserved1;
    WCHAR cFileName[260];
    WCHAR cAlternateFileName[14];
};

typedef struct _DCB _DCB, *P_DCB;

struct _DCB {
    DWORD DCBlength;
    DWORD BaudRate;
    DWORD fBinary:1;
    DWORD fParity:1;
    DWORD fOutxCtsFlow:1;
    DWORD fOutxDsrFlow:1;
    DWORD fDtrControl:2;
    DWORD fDsrSensitivity:1;
    DWORD fTXContinueOnXoff:1;
    DWORD fOutX:1;
    DWORD fInX:1;
    DWORD fErrorChar:1;
    DWORD fNull:1;
    DWORD fRtsControl:2;
    DWORD fAbortOnError:1;
    DWORD fDummy2:17;
    WORD wReserved;
    WORD XonLim;
    WORD XoffLim;
    BYTE ByteSize;
    BYTE Parity;
    BYTE StopBits;
    char XonChar;
    char XoffChar;
    char ErrorChar;
    char EofChar;
    char EvtChar;
    WORD wReserved1;
};

typedef struct _WIN32_FIND_DATAA _WIN32_FIND_DATAA, *P_WIN32_FIND_DATAA;

struct _WIN32_FIND_DATAA {
    DWORD dwFileAttributes;
    FILETIME ftCreationTime;
    FILETIME ftLastAccessTime;
    FILETIME ftLastWriteTime;
    DWORD nFileSizeHigh;
    DWORD nFileSizeLow;
    DWORD dwReserved0;
    DWORD dwReserved1;
    CHAR cFileName[260];
    CHAR cAlternateFileName[14];
};

typedef struct _MEMORYSTATUS _MEMORYSTATUS, *P_MEMORYSTATUS;

typedef ULONG_PTR SIZE_T;

struct _MEMORYSTATUS {
    DWORD dwLength;
    DWORD dwMemoryLoad;
    SIZE_T dwTotalPhys;
    SIZE_T dwAvailPhys;
    SIZE_T dwTotalPageFile;
    SIZE_T dwAvailPageFile;
    SIZE_T dwTotalVirtual;
    SIZE_T dwAvailVirtual;
};

typedef struct _SECURITY_ATTRIBUTES _SECURITY_ATTRIBUTES, *P_SECURITY_ATTRIBUTES;

typedef struct _SECURITY_ATTRIBUTES *LPSECURITY_ATTRIBUTES;

struct _SECURITY_ATTRIBUTES {
    DWORD nLength;
    LPVOID lpSecurityDescriptor;
    BOOL bInheritHandle;
};

typedef struct _COMMTIMEOUTS _COMMTIMEOUTS, *P_COMMTIMEOUTS;

struct _COMMTIMEOUTS {
    DWORD ReadIntervalTimeout;
    DWORD ReadTotalTimeoutMultiplier;
    DWORD ReadTotalTimeoutConstant;
    DWORD WriteTotalTimeoutMultiplier;
    DWORD WriteTotalTimeoutConstant;
};

typedef struct _STARTUPINFOA _STARTUPINFOA, *P_STARTUPINFOA;

typedef BYTE *LPBYTE;

struct _STARTUPINFOA {
    DWORD cb;
    LPSTR lpReserved;
    LPSTR lpDesktop;
    LPSTR lpTitle;
    DWORD dwX;
    DWORD dwY;
    DWORD dwXSize;
    DWORD dwYSize;
    DWORD dwXCountChars;
    DWORD dwYCountChars;
    DWORD dwFillAttribute;
    DWORD dwFlags;
    WORD wShowWindow;
    WORD cbReserved2;
    LPBYTE lpReserved2;
    HANDLE hStdInput;
    HANDLE hStdOutput;
    HANDLE hStdError;
};

typedef struct _MEMORYSTATUS *LPMEMORYSTATUS;

typedef struct _COMMTIMEOUTS *LPCOMMTIMEOUTS;

typedef DWORD (*PTHREAD_START_ROUTINE)(LPVOID);

typedef struct _EXCEPTION_POINTERS _EXCEPTION_POINTERS, *P_EXCEPTION_POINTERS;

typedef LONG (*PTOP_LEVEL_EXCEPTION_FILTER)(struct _EXCEPTION_POINTERS *);

typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;

typedef struct _EXCEPTION_RECORD _EXCEPTION_RECORD, *P_EXCEPTION_RECORD;

typedef struct _EXCEPTION_RECORD EXCEPTION_RECORD;

typedef EXCEPTION_RECORD *PEXCEPTION_RECORD;

typedef struct _CONTEXT _CONTEXT, *P_CONTEXT;

typedef struct _CONTEXT CONTEXT;

typedef CONTEXT *PCONTEXT;

typedef struct _FLOATING_SAVE_AREA _FLOATING_SAVE_AREA, *P_FLOATING_SAVE_AREA;

typedef struct _FLOATING_SAVE_AREA FLOATING_SAVE_AREA;

struct _FLOATING_SAVE_AREA {
    DWORD ControlWord;
    DWORD StatusWord;
    DWORD TagWord;
    DWORD ErrorOffset;
    DWORD ErrorSelector;
    DWORD DataOffset;
    DWORD DataSelector;
    BYTE RegisterArea[80];
    DWORD Cr0NpxState;
};

struct _CONTEXT {
    DWORD ContextFlags;
    DWORD Dr0;
    DWORD Dr1;
    DWORD Dr2;
    DWORD Dr3;
    DWORD Dr6;
    DWORD Dr7;
    FLOATING_SAVE_AREA FloatSave;
    DWORD SegGs;
    DWORD SegFs;
    DWORD SegEs;
    DWORD SegDs;
    DWORD Edi;
    DWORD Esi;
    DWORD Ebx;
    DWORD Edx;
    DWORD Ecx;
    DWORD Eax;
    DWORD Ebp;
    DWORD Eip;
    DWORD SegCs;
    DWORD EFlags;
    DWORD Esp;
    DWORD SegSs;
    BYTE ExtendedRegisters[512];
};

struct _EXCEPTION_RECORD {
    DWORD ExceptionCode;
    DWORD ExceptionFlags;
    struct _EXCEPTION_RECORD *ExceptionRecord;
    PVOID ExceptionAddress;
    DWORD NumberParameters;
    ULONG_PTR ExceptionInformation[15];
};

struct _EXCEPTION_POINTERS {
    PEXCEPTION_RECORD ExceptionRecord;
    PCONTEXT ContextRecord;
};

typedef struct _SYSTEM_INFO *LPSYSTEM_INFO;

typedef struct _TIME_ZONE_INFORMATION *LPTIME_ZONE_INFORMATION;

typedef struct _DCB *LPDCB;

typedef struct _RTL_CRITICAL_SECTION _RTL_CRITICAL_SECTION, *P_RTL_CRITICAL_SECTION;

typedef struct _RTL_CRITICAL_SECTION RTL_CRITICAL_SECTION;

typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;

typedef struct _RTL_CRITICAL_SECTION_DEBUG _RTL_CRITICAL_SECTION_DEBUG, *P_RTL_CRITICAL_SECTION_DEBUG;

typedef struct _RTL_CRITICAL_SECTION_DEBUG *PRTL_CRITICAL_SECTION_DEBUG;

typedef struct _LIST_ENTRY _LIST_ENTRY, *P_LIST_ENTRY;

typedef struct _LIST_ENTRY LIST_ENTRY;

struct _RTL_CRITICAL_SECTION {
    PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
    LONG LockCount;
    LONG RecursionCount;
    HANDLE OwningThread;
    HANDLE LockSemaphore;
    ULONG_PTR SpinCount;
};

struct _LIST_ENTRY {
    struct _LIST_ENTRY *Flink;
    struct _LIST_ENTRY *Blink;
};

struct _RTL_CRITICAL_SECTION_DEBUG {
    WORD Type;
    WORD CreatorBackTraceIndex;
    struct _RTL_CRITICAL_SECTION *CriticalSection;
    LIST_ENTRY ProcessLocksList;
    DWORD EntryCount;
    DWORD ContentionCount;
    DWORD Flags;
    WORD CreatorBackTraceIndexHigh;
    WORD SpareWORD;
};

typedef struct _OVERLAPPED *LPOVERLAPPED;

typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;

typedef struct _WIN32_FIND_DATAA *LPWIN32_FIND_DATAA;

typedef struct _STARTUPINFOA *LPSTARTUPINFOA;

typedef struct _RTL_CRITICAL_SECTION *PRTL_CRITICAL_SECTION;

typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION;

typedef void (*PTIMERAPCROUTINE)(LPVOID, DWORD, DWORD);

typedef struct _SYSTEMTIME *LPSYSTEMTIME;

typedef struct IAdviseSink IAdviseSink, *PIAdviseSink;

typedef struct IAdviseSinkVtbl IAdviseSinkVtbl, *PIAdviseSinkVtbl;

typedef long HRESULT;


// WARNING! conflicting data type names: /guiddef.h/GUID - /GUID

typedef GUID IID;

typedef DWORD ULONG;

typedef struct tagFORMATETC tagFORMATETC, *PtagFORMATETC;

typedef struct tagFORMATETC FORMATETC;

typedef struct tagSTGMEDIUM tagSTGMEDIUM, *PtagSTGMEDIUM;

typedef struct tagSTGMEDIUM uSTGMEDIUM;

typedef uSTGMEDIUM STGMEDIUM;

typedef struct IMoniker IMoniker, *PIMoniker;

typedef WORD CLIPFORMAT;

typedef struct tagDVTARGETDEVICE tagDVTARGETDEVICE, *PtagDVTARGETDEVICE;

typedef struct tagDVTARGETDEVICE DVTARGETDEVICE;

typedef union _union_2260 _union_2260, *P_union_2260;

typedef struct IUnknown IUnknown, *PIUnknown;

typedef struct IMonikerVtbl IMonikerVtbl, *PIMonikerVtbl;

typedef GUID CLSID;

typedef struct IStream IStream, *PIStream;

typedef union _ULARGE_INTEGER _ULARGE_INTEGER, *P_ULARGE_INTEGER;

typedef union _ULARGE_INTEGER ULARGE_INTEGER;

typedef struct IBindCtx IBindCtx, *PIBindCtx;

typedef struct IEnumMoniker IEnumMoniker, *PIEnumMoniker;

typedef WCHAR OLECHAR;

typedef OLECHAR *LPOLESTR;

typedef struct HBITMAP__ HBITMAP__, *PHBITMAP__;

typedef struct HBITMAP__ *HBITMAP;

typedef void *HMETAFILEPICT;

typedef struct HENHMETAFILE__ HENHMETAFILE__, *PHENHMETAFILE__;

typedef struct HENHMETAFILE__ *HENHMETAFILE;

typedef HANDLE HGLOBAL;

typedef struct IStorage IStorage, *PIStorage;

typedef struct IUnknownVtbl IUnknownVtbl, *PIUnknownVtbl;

typedef struct IStreamVtbl IStreamVtbl, *PIStreamVtbl;

typedef union _LARGE_INTEGER _LARGE_INTEGER, *P_LARGE_INTEGER;

typedef union _LARGE_INTEGER LARGE_INTEGER;

typedef struct tagSTATSTG tagSTATSTG, *PtagSTATSTG;

typedef struct tagSTATSTG STATSTG;

typedef struct _struct_22 _struct_22, *P_struct_22;

typedef struct _struct_23 _struct_23, *P_struct_23;

typedef double ULONGLONG;

typedef struct IBindCtxVtbl IBindCtxVtbl, *PIBindCtxVtbl;

typedef struct tagBIND_OPTS tagBIND_OPTS, *PtagBIND_OPTS;

typedef struct tagBIND_OPTS BIND_OPTS;

typedef struct IRunningObjectTable IRunningObjectTable, *PIRunningObjectTable;

typedef struct IEnumString IEnumString, *PIEnumString;

typedef struct IEnumMonikerVtbl IEnumMonikerVtbl, *PIEnumMonikerVtbl;

typedef struct IStorageVtbl IStorageVtbl, *PIStorageVtbl;

typedef LPOLESTR *SNB;

typedef struct IEnumSTATSTG IEnumSTATSTG, *PIEnumSTATSTG;

typedef struct _struct_19 _struct_19, *P_struct_19;

typedef struct _struct_20 _struct_20, *P_struct_20;

typedef double LONGLONG;

typedef struct IRunningObjectTableVtbl IRunningObjectTableVtbl, *PIRunningObjectTableVtbl;

typedef struct IEnumStringVtbl IEnumStringVtbl, *PIEnumStringVtbl;

typedef struct IEnumSTATSTGVtbl IEnumSTATSTGVtbl, *PIEnumSTATSTGVtbl;

struct IAdviseSink {
    struct IAdviseSinkVtbl *lpVtbl;
};

struct IAdviseSinkVtbl {
    HRESULT (*QueryInterface)(struct IAdviseSink *, IID *, void **);
    ULONG (*AddRef)(struct IAdviseSink *);
    ULONG (*Release)(struct IAdviseSink *);
    void (*OnDataChange)(struct IAdviseSink *, FORMATETC *, STGMEDIUM *);
    void (*OnViewChange)(struct IAdviseSink *, DWORD, LONG);
    void (*OnRename)(struct IAdviseSink *, struct IMoniker *);
    void (*OnSave)(struct IAdviseSink *);
    void (*OnClose)(struct IAdviseSink *);
};

struct IStreamVtbl {
    HRESULT (*QueryInterface)(struct IStream *, IID *, void **);
    ULONG (*AddRef)(struct IStream *);
    ULONG (*Release)(struct IStream *);
    HRESULT (*Read)(struct IStream *, void *, ULONG, ULONG *);
    HRESULT (*Write)(struct IStream *, void *, ULONG, ULONG *);
    HRESULT (*Seek)(struct IStream *, LARGE_INTEGER, DWORD, ULARGE_INTEGER *);
    HRESULT (*SetSize)(struct IStream *, ULARGE_INTEGER);
    HRESULT (*CopyTo)(struct IStream *, struct IStream *, ULARGE_INTEGER, ULARGE_INTEGER *, ULARGE_INTEGER *);
    HRESULT (*Commit)(struct IStream *, DWORD);
    HRESULT (*Revert)(struct IStream *);
    HRESULT (*LockRegion)(struct IStream *, ULARGE_INTEGER, ULARGE_INTEGER, DWORD);
    HRESULT (*UnlockRegion)(struct IStream *, ULARGE_INTEGER, ULARGE_INTEGER, DWORD);
    HRESULT (*Stat)(struct IStream *, STATSTG *, DWORD);
    HRESULT (*Clone)(struct IStream *, struct IStream **);
};

union _union_2260 {
    HBITMAP hBitmap;
    HMETAFILEPICT hMetaFilePict;
    HENHMETAFILE hEnhMetaFile;
    HGLOBAL hGlobal;
    LPOLESTR lpszFileName;
    struct IStream *pstm;
    struct IStorage *pstg;
};

struct tagFORMATETC {
    CLIPFORMAT cfFormat;
    DVTARGETDEVICE *ptd;
    DWORD dwAspect;
    LONG lindex;
    DWORD tymed;
};

struct IEnumStringVtbl {
    HRESULT (*QueryInterface)(struct IEnumString *, IID *, void **);
    ULONG (*AddRef)(struct IEnumString *);
    ULONG (*Release)(struct IEnumString *);
    HRESULT (*Next)(struct IEnumString *, ULONG, LPOLESTR *, ULONG *);
    HRESULT (*Skip)(struct IEnumString *, ULONG);
    HRESULT (*Reset)(struct IEnumString *);
    HRESULT (*Clone)(struct IEnumString *, struct IEnumString **);
};

struct IStream {
    struct IStreamVtbl *lpVtbl;
};

struct _struct_20 {
    DWORD LowPart;
    LONG HighPart;
};

struct _struct_19 {
    DWORD LowPart;
    LONG HighPart;
};

union _LARGE_INTEGER {
    struct _struct_19 s;
    struct _struct_20 u;
    LONGLONG QuadPart;
};

struct IMoniker {
    struct IMonikerVtbl *lpVtbl;
};

struct IEnumString {
    struct IEnumStringVtbl *lpVtbl;
};

struct IEnumMonikerVtbl {
    HRESULT (*QueryInterface)(struct IEnumMoniker *, IID *, void **);
    ULONG (*AddRef)(struct IEnumMoniker *);
    ULONG (*Release)(struct IEnumMoniker *);
    HRESULT (*Next)(struct IEnumMoniker *, ULONG, struct IMoniker **, ULONG *);
    HRESULT (*Skip)(struct IEnumMoniker *, ULONG);
    HRESULT (*Reset)(struct IEnumMoniker *);
    HRESULT (*Clone)(struct IEnumMoniker *, struct IEnumMoniker **);
};

struct tagSTGMEDIUM {
    DWORD tymed;
    union _union_2260 u;
    struct IUnknown *pUnkForRelease;
};

struct tagBIND_OPTS {
    DWORD cbStruct;
    DWORD grfFlags;
    DWORD grfMode;
    DWORD dwTickCountDeadline;
};

struct _struct_22 {
    DWORD LowPart;
    DWORD HighPart;
};

struct _struct_23 {
    DWORD LowPart;
    DWORD HighPart;
};

union _ULARGE_INTEGER {
    struct _struct_22 s;
    struct _struct_23 u;
    ULONGLONG QuadPart;
};

struct tagDVTARGETDEVICE {
    DWORD tdSize;
    WORD tdDriverNameOffset;
    WORD tdDeviceNameOffset;
    WORD tdPortNameOffset;
    WORD tdExtDevmodeOffset;
    BYTE tdData[1];
};

struct IBindCtx {
    struct IBindCtxVtbl *lpVtbl;
};

struct IBindCtxVtbl {
    HRESULT (*QueryInterface)(struct IBindCtx *, IID *, void **);
    ULONG (*AddRef)(struct IBindCtx *);
    ULONG (*Release)(struct IBindCtx *);
    HRESULT (*RegisterObjectBound)(struct IBindCtx *, struct IUnknown *);
    HRESULT (*RevokeObjectBound)(struct IBindCtx *, struct IUnknown *);
    HRESULT (*ReleaseBoundObjects)(struct IBindCtx *);
    HRESULT (*SetBindOptions)(struct IBindCtx *, BIND_OPTS *);
    HRESULT (*GetBindOptions)(struct IBindCtx *, BIND_OPTS *);
    HRESULT (*GetRunningObjectTable)(struct IBindCtx *, struct IRunningObjectTable **);
    HRESULT (*RegisterObjectParam)(struct IBindCtx *, LPOLESTR, struct IUnknown *);
    HRESULT (*GetObjectParam)(struct IBindCtx *, LPOLESTR, struct IUnknown **);
    HRESULT (*EnumObjectParam)(struct IBindCtx *, struct IEnumString **);
    HRESULT (*RevokeObjectParam)(struct IBindCtx *, LPOLESTR);
};

struct tagSTATSTG {
    LPOLESTR pwcsName;
    DWORD type;
    ULARGE_INTEGER cbSize;
    FILETIME mtime;
    FILETIME ctime;
    FILETIME atime;
    DWORD grfMode;
    DWORD grfLocksSupported;
    CLSID clsid;
    DWORD grfStateBits;
    DWORD reserved;
};

struct IRunningObjectTableVtbl {
    HRESULT (*QueryInterface)(struct IRunningObjectTable *, IID *, void **);
    ULONG (*AddRef)(struct IRunningObjectTable *);
    ULONG (*Release)(struct IRunningObjectTable *);
    HRESULT (*Register)(struct IRunningObjectTable *, DWORD, struct IUnknown *, struct IMoniker *, DWORD *);
    HRESULT (*Revoke)(struct IRunningObjectTable *, DWORD);
    HRESULT (*IsRunning)(struct IRunningObjectTable *, struct IMoniker *);
    HRESULT (*GetObjectA)(struct IRunningObjectTable *, struct IMoniker *, struct IUnknown **);
    HRESULT (*NoteChangeTime)(struct IRunningObjectTable *, DWORD, FILETIME *);
    HRESULT (*GetTimeOfLastChange)(struct IRunningObjectTable *, struct IMoniker *, FILETIME *);
    HRESULT (*EnumRunning)(struct IRunningObjectTable *, struct IEnumMoniker **);
};

struct IStorageVtbl {
    HRESULT (*QueryInterface)(struct IStorage *, IID *, void **);
    ULONG (*AddRef)(struct IStorage *);
    ULONG (*Release)(struct IStorage *);
    HRESULT (*CreateStream)(struct IStorage *, OLECHAR *, DWORD, DWORD, DWORD, struct IStream **);
    HRESULT (*OpenStream)(struct IStorage *, OLECHAR *, void *, DWORD, DWORD, struct IStream **);
    HRESULT (*CreateStorage)(struct IStorage *, OLECHAR *, DWORD, DWORD, DWORD, struct IStorage **);
    HRESULT (*OpenStorage)(struct IStorage *, OLECHAR *, struct IStorage *, DWORD, SNB, DWORD, struct IStorage **);
    HRESULT (*CopyTo)(struct IStorage *, DWORD, IID *, SNB, struct IStorage *);
    HRESULT (*MoveElementTo)(struct IStorage *, OLECHAR *, struct IStorage *, OLECHAR *, DWORD);
    HRESULT (*Commit)(struct IStorage *, DWORD);
    HRESULT (*Revert)(struct IStorage *);
    HRESULT (*EnumElements)(struct IStorage *, DWORD, void *, DWORD, struct IEnumSTATSTG **);
    HRESULT (*DestroyElement)(struct IStorage *, OLECHAR *);
    HRESULT (*RenameElement)(struct IStorage *, OLECHAR *, OLECHAR *);
    HRESULT (*SetElementTimes)(struct IStorage *, OLECHAR *, FILETIME *, FILETIME *, FILETIME *);
    HRESULT (*SetClass)(struct IStorage *, IID *);
    HRESULT (*SetStateBits)(struct IStorage *, DWORD, DWORD);
    HRESULT (*Stat)(struct IStorage *, STATSTG *, DWORD);
};

struct IMonikerVtbl {
    HRESULT (*QueryInterface)(struct IMoniker *, IID *, void **);
    ULONG (*AddRef)(struct IMoniker *);
    ULONG (*Release)(struct IMoniker *);
    HRESULT (*GetClassID)(struct IMoniker *, CLSID *);
    HRESULT (*IsDirty)(struct IMoniker *);
    HRESULT (*Load)(struct IMoniker *, struct IStream *);
    HRESULT (*Save)(struct IMoniker *, struct IStream *, BOOL);
    HRESULT (*GetSizeMax)(struct IMoniker *, ULARGE_INTEGER *);
    HRESULT (*BindToObject)(struct IMoniker *, struct IBindCtx *, struct IMoniker *, IID *, void **);
    HRESULT (*BindToStorage)(struct IMoniker *, struct IBindCtx *, struct IMoniker *, IID *, void **);
    HRESULT (*Reduce)(struct IMoniker *, struct IBindCtx *, DWORD, struct IMoniker **, struct IMoniker **);
    HRESULT (*ComposeWith)(struct IMoniker *, struct IMoniker *, BOOL, struct IMoniker **);
    HRESULT (*Enum)(struct IMoniker *, BOOL, struct IEnumMoniker **);
    HRESULT (*IsEqual)(struct IMoniker *, struct IMoniker *);
    HRESULT (*Hash)(struct IMoniker *, DWORD *);
    HRESULT (*IsRunning)(struct IMoniker *, struct IBindCtx *, struct IMoniker *, struct IMoniker *);
    HRESULT (*GetTimeOfLastChange)(struct IMoniker *, struct IBindCtx *, struct IMoniker *, FILETIME *);
    HRESULT (*Inverse)(struct IMoniker *, struct IMoniker **);
    HRESULT (*CommonPrefixWith)(struct IMoniker *, struct IMoniker *, struct IMoniker **);
    HRESULT (*RelativePathTo)(struct IMoniker *, struct IMoniker *, struct IMoniker **);
    HRESULT (*GetDisplayName)(struct IMoniker *, struct IBindCtx *, struct IMoniker *, LPOLESTR *);
    HRESULT (*ParseDisplayName)(struct IMoniker *, struct IBindCtx *, struct IMoniker *, LPOLESTR, ULONG *, struct IMoniker **);
    HRESULT (*IsSystemMoniker)(struct IMoniker *, DWORD *);
};

struct IStorage {
    struct IStorageVtbl *lpVtbl;
};

struct IEnumSTATSTGVtbl {
    HRESULT (*QueryInterface)(struct IEnumSTATSTG *, IID *, void **);
    ULONG (*AddRef)(struct IEnumSTATSTG *);
    ULONG (*Release)(struct IEnumSTATSTG *);
    HRESULT (*Next)(struct IEnumSTATSTG *, ULONG, STATSTG *, ULONG *);
    HRESULT (*Skip)(struct IEnumSTATSTG *, ULONG);
    HRESULT (*Reset)(struct IEnumSTATSTG *);
    HRESULT (*Clone)(struct IEnumSTATSTG *, struct IEnumSTATSTG **);
};

struct HBITMAP__ {
    int unused;
};

struct IEnumSTATSTG {
    struct IEnumSTATSTGVtbl *lpVtbl;
};

struct IRunningObjectTable {
    struct IRunningObjectTableVtbl *lpVtbl;
};

struct IUnknownVtbl {
    HRESULT (*QueryInterface)(struct IUnknown *, IID *, void **);
    ULONG (*AddRef)(struct IUnknown *);
    ULONG (*Release)(struct IUnknown *);
};

struct IUnknown {
    struct IUnknownVtbl *lpVtbl;
};

struct HENHMETAFILE__ {
    int unused;
};

struct IEnumMoniker {
    struct IEnumMonikerVtbl *lpVtbl;
};

typedef struct IEnumSTATDATA IEnumSTATDATA, *PIEnumSTATDATA;

typedef struct IEnumSTATDATAVtbl IEnumSTATDATAVtbl, *PIEnumSTATDATAVtbl;

typedef struct tagSTATDATA tagSTATDATA, *PtagSTATDATA;

typedef struct tagSTATDATA STATDATA;

struct IEnumSTATDATA {
    struct IEnumSTATDATAVtbl *lpVtbl;
};

struct IEnumSTATDATAVtbl {
    HRESULT (*QueryInterface)(struct IEnumSTATDATA *, IID *, void **);
    ULONG (*AddRef)(struct IEnumSTATDATA *);
    ULONG (*Release)(struct IEnumSTATDATA *);
    HRESULT (*Next)(struct IEnumSTATDATA *, ULONG, STATDATA *, ULONG *);
    HRESULT (*Skip)(struct IEnumSTATDATA *, ULONG);
    HRESULT (*Reset)(struct IEnumSTATDATA *);
    HRESULT (*Clone)(struct IEnumSTATDATA *, struct IEnumSTATDATA **);
};

struct tagSTATDATA {
    FORMATETC formatetc;
    DWORD advf;
    struct IAdviseSink *pAdvSink;
    DWORD dwConnection;
};

typedef struct IMalloc IMalloc, *PIMalloc;

typedef struct IMallocVtbl IMallocVtbl, *PIMallocVtbl;

struct IMalloc {
    struct IMallocVtbl *lpVtbl;
};

struct IMallocVtbl {
    HRESULT (*QueryInterface)(struct IMalloc *, IID *, void **);
    ULONG (*AddRef)(struct IMalloc *);
    ULONG (*Release)(struct IMalloc *);
    void * (*Alloc)(struct IMalloc *, SIZE_T);
    void * (*Realloc)(struct IMalloc *, void *, SIZE_T);
    void (*Free)(struct IMalloc *, void *);
    SIZE_T (*GetSize)(struct IMalloc *, void *);
    int (*DidAlloc)(struct IMalloc *, void *);
    void (*HeapMinimize)(struct IMalloc *);
};

typedef struct IEnumFORMATETCVtbl IEnumFORMATETCVtbl, *PIEnumFORMATETCVtbl;

typedef struct IEnumFORMATETC IEnumFORMATETC, *PIEnumFORMATETC;

struct IEnumFORMATETCVtbl {
    HRESULT (*QueryInterface)(struct IEnumFORMATETC *, IID *, void **);
    ULONG (*AddRef)(struct IEnumFORMATETC *);
    ULONG (*Release)(struct IEnumFORMATETC *);
    HRESULT (*Next)(struct IEnumFORMATETC *, ULONG, FORMATETC *, ULONG *);
    HRESULT (*Skip)(struct IEnumFORMATETC *, ULONG);
    HRESULT (*Reset)(struct IEnumFORMATETC *);
    HRESULT (*Clone)(struct IEnumFORMATETC *, struct IEnumFORMATETC **);
};

struct IEnumFORMATETC {
    struct IEnumFORMATETCVtbl *lpVtbl;
};

typedef struct IDataObjectVtbl IDataObjectVtbl, *PIDataObjectVtbl;

typedef struct IDataObject IDataObject, *PIDataObject;

struct IDataObject {
    struct IDataObjectVtbl *lpVtbl;
};

struct IDataObjectVtbl {
    HRESULT (*QueryInterface)(struct IDataObject *, IID *, void **);
    ULONG (*AddRef)(struct IDataObject *);
    ULONG (*Release)(struct IDataObject *);
    HRESULT (*GetData)(struct IDataObject *, FORMATETC *, STGMEDIUM *);
    HRESULT (*GetDataHere)(struct IDataObject *, FORMATETC *, STGMEDIUM *);
    HRESULT (*QueryGetData)(struct IDataObject *, FORMATETC *);
    HRESULT (*GetCanonicalFormatEtc)(struct IDataObject *, FORMATETC *, FORMATETC *);
    HRESULT (*SetData)(struct IDataObject *, FORMATETC *, STGMEDIUM *, BOOL);
    HRESULT (*EnumFormatEtc)(struct IDataObject *, DWORD, struct IEnumFORMATETC **);
    HRESULT (*DAdvise)(struct IDataObject *, FORMATETC *, DWORD, struct IAdviseSink *, DWORD *);
    HRESULT (*DUnadvise)(struct IDataObject *, DWORD);
    HRESULT (*EnumDAdvise)(struct IDataObject *, struct IEnumSTATDATA **);
};

typedef struct IDataObject *LPDATAOBJECT;

typedef STGMEDIUM *LPSTGMEDIUM;

typedef void (*_PHNDLR)(int);

typedef CRITICAL_SECTION _Rmtx;

typedef struct IDropTargetVtbl IDropTargetVtbl, *PIDropTargetVtbl;

typedef struct IDropTarget IDropTarget, *PIDropTarget;

typedef struct _POINTL _POINTL, *P_POINTL;

typedef struct _POINTL POINTL;

struct IDropTargetVtbl {
    HRESULT (*QueryInterface)(struct IDropTarget *, IID *, void **);
    ULONG (*AddRef)(struct IDropTarget *);
    ULONG (*Release)(struct IDropTarget *);
    HRESULT (*DragEnter)(struct IDropTarget *, struct IDataObject *, DWORD, POINTL, DWORD *);
    HRESULT (*DragOver)(struct IDropTarget *, DWORD, POINTL, DWORD *);
    HRESULT (*DragLeave)(struct IDropTarget *);
    HRESULT (*Drop)(struct IDropTarget *, struct IDataObject *, DWORD, POINTL, DWORD *);
};

struct _POINTL {
    LONG x;
    LONG y;
};

struct IDropTarget {
    struct IDropTargetVtbl *lpVtbl;
};

typedef struct IDropTarget *LPDROPTARGET;

typedef struct _Collvec _Collvec, *P_Collvec;

struct _Collvec {
    uint _Page;
    wchar_t *_LocaleName;
};

typedef struct _Cvtvec _Cvtvec, *P_Cvtvec;

struct _Cvtvec {
    uint _Page;
    uint _Mbcurmax;
    int _Isclocale;
    uchar _Isleadbyte[32];
};

typedef struct _Ctypevec _Ctypevec, *P_Ctypevec;

struct _Ctypevec {
    uint _Page;
    short *_Table;
    int _Delfl;
    wchar_t *_LocaleName;
};

typedef struct _strflt _strflt, *P_strflt;

struct _strflt {
    int sign;
    int decpt;
    int flag;
    char *mantissa;
};

typedef struct _flt _flt, *P_flt;

struct _flt {
    int flags;
    int nbytes;
    long lval;
    double dval;
};

typedef struct _strflt *STRFLT;

typedef enum enum_3272 {
    INTRNCVT_OK=0,
    INTRNCVT_OVERFLOW=1,
    INTRNCVT_UNDERFLOW=2
} enum_3272;

typedef enum enum_3272 INTRNCVT_STATUS;

typedef struct _flt *FLT;

typedef longlong fpos_t;

typedef struct _iobuf _iobuf, *P_iobuf;

struct _iobuf {
    char *_ptr;
    int _cnt;
    char *_base;
    int _flag;
    int _file;
    int _charbuf;
    int _bufsiz;
    char *_tmpfname;
};

typedef struct _iobuf FILE;

typedef struct _COORD _COORD, *P_COORD;

typedef struct _COORD COORD;

typedef short SHORT;

struct _COORD {
    SHORT X;
    SHORT Y;
};

typedef struct _SMALL_RECT _SMALL_RECT, *P_SMALL_RECT;

typedef struct _SMALL_RECT SMALL_RECT;

struct _SMALL_RECT {
    SHORT Left;
    SHORT Top;
    SHORT Right;
    SHORT Bottom;
};

typedef struct _WINDOW_BUFFER_SIZE_RECORD _WINDOW_BUFFER_SIZE_RECORD, *P_WINDOW_BUFFER_SIZE_RECORD;

typedef struct _WINDOW_BUFFER_SIZE_RECORD WINDOW_BUFFER_SIZE_RECORD;

struct _WINDOW_BUFFER_SIZE_RECORD {
    COORD dwSize;
};

typedef struct _FOCUS_EVENT_RECORD _FOCUS_EVENT_RECORD, *P_FOCUS_EVENT_RECORD;

struct _FOCUS_EVENT_RECORD {
    BOOL bSetFocus;
};

typedef struct _INPUT_RECORD _INPUT_RECORD, *P_INPUT_RECORD;

typedef union _union_961 _union_961, *P_union_961;

typedef struct _KEY_EVENT_RECORD _KEY_EVENT_RECORD, *P_KEY_EVENT_RECORD;

typedef struct _KEY_EVENT_RECORD KEY_EVENT_RECORD;

typedef struct _MOUSE_EVENT_RECORD _MOUSE_EVENT_RECORD, *P_MOUSE_EVENT_RECORD;

typedef struct _MOUSE_EVENT_RECORD MOUSE_EVENT_RECORD;

typedef struct _MENU_EVENT_RECORD _MENU_EVENT_RECORD, *P_MENU_EVENT_RECORD;

typedef struct _MENU_EVENT_RECORD MENU_EVENT_RECORD;

typedef struct _FOCUS_EVENT_RECORD FOCUS_EVENT_RECORD;

typedef union _union_955 _union_955, *P_union_955;

struct _MOUSE_EVENT_RECORD {
    COORD dwMousePosition;
    DWORD dwButtonState;
    DWORD dwControlKeyState;
    DWORD dwEventFlags;
};

union _union_955 {
    WCHAR UnicodeChar;
    CHAR AsciiChar;
};

struct _KEY_EVENT_RECORD {
    BOOL bKeyDown;
    WORD wRepeatCount;
    WORD wVirtualKeyCode;
    WORD wVirtualScanCode;
    union _union_955 uChar;
    DWORD dwControlKeyState;
};

struct _MENU_EVENT_RECORD {
    UINT dwCommandId;
};

union _union_961 {
    KEY_EVENT_RECORD KeyEvent;
    MOUSE_EVENT_RECORD MouseEvent;
    WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
    MENU_EVENT_RECORD MenuEvent;
    FOCUS_EVENT_RECORD FocusEvent;
};

struct _INPUT_RECORD {
    WORD EventType;
    union _union_961 Event;
};

typedef struct _CONSOLE_SCREEN_BUFFER_INFO _CONSOLE_SCREEN_BUFFER_INFO, *P_CONSOLE_SCREEN_BUFFER_INFO;

struct _CONSOLE_SCREEN_BUFFER_INFO {
    COORD dwSize;
    COORD dwCursorPosition;
    WORD wAttributes;
    SMALL_RECT srWindow;
    COORD dwMaximumWindowSize;
};

typedef struct _INPUT_RECORD *PINPUT_RECORD;

typedef struct _CONSOLE_SCREEN_BUFFER_INFO *PCONSOLE_SCREEN_BUFFER_INFO;

typedef BOOL (*PHANDLER_ROUTINE)(DWORD);

typedef char *va_list;

typedef uint uintptr_t;

typedef struct tagOFNW tagOFNW, *PtagOFNW;

typedef struct HWND__ HWND__, *PHWND__;

typedef struct HWND__ *HWND;

typedef struct HINSTANCE__ HINSTANCE__, *PHINSTANCE__;

typedef struct HINSTANCE__ *HINSTANCE;

typedef WCHAR *LPCWSTR;

typedef WCHAR *LPWSTR;

typedef long LONG_PTR;

typedef LONG_PTR LPARAM;

typedef uint UINT_PTR;

typedef UINT_PTR WPARAM;

typedef UINT_PTR (*LPOFNHOOKPROC)(HWND, UINT, WPARAM, LPARAM);

struct tagOFNW {
    DWORD lStructSize;
    HWND hwndOwner;
    HINSTANCE hInstance;
    LPCWSTR lpstrFilter;
    LPWSTR lpstrCustomFilter;
    DWORD nMaxCustFilter;
    DWORD nFilterIndex;
    LPWSTR lpstrFile;
    DWORD nMaxFile;
    LPWSTR lpstrFileTitle;
    DWORD nMaxFileTitle;
    LPCWSTR lpstrInitialDir;
    LPCWSTR lpstrTitle;
    DWORD Flags;
    WORD nFileOffset;
    WORD nFileExtension;
    LPCWSTR lpstrDefExt;
    LPARAM lCustData;
    LPOFNHOOKPROC lpfnHook;
    LPCWSTR lpTemplateName;
    void *pvReserved;
    DWORD dwReserved;
    DWORD FlagsEx;
};

struct HWND__ {
    int unused;
};

struct HINSTANCE__ {
    int unused;
};

typedef struct tagCHOOSECOLORW tagCHOOSECOLORW, *PtagCHOOSECOLORW;

typedef DWORD COLORREF;

typedef UINT_PTR (*LPCCHOOKPROC)(HWND, UINT, WPARAM, LPARAM);

struct tagCHOOSECOLORW {
    DWORD lStructSize;
    HWND hwndOwner;
    HWND hInstance;
    COLORREF rgbResult;
    COLORREF *lpCustColors;
    DWORD Flags;
    LPARAM lCustData;
    LPCCHOOKPROC lpfnHook;
    LPCWSTR lpTemplateName;
};

typedef UINT_PTR (*LPPAGEPAINTHOOK)(HWND, UINT, WPARAM, LPARAM);

typedef struct tagCHOOSEFONTW tagCHOOSEFONTW, *PtagCHOOSEFONTW;

typedef struct tagCHOOSEFONTW CHOOSEFONTW;

typedef CHOOSEFONTW *LPCHOOSEFONTW;

typedef struct HDC__ HDC__, *PHDC__;

typedef struct HDC__ *HDC;

typedef struct tagLOGFONTW tagLOGFONTW, *PtagLOGFONTW;

typedef struct tagLOGFONTW *LPLOGFONTW;

typedef int INT;

typedef UINT_PTR (*LPCFHOOKPROC)(HWND, UINT, WPARAM, LPARAM);

struct tagCHOOSEFONTW {
    DWORD lStructSize;
    HWND hwndOwner;
    HDC hDC;
    LPLOGFONTW lpLogFont;
    INT iPointSize;
    DWORD Flags;
    COLORREF rgbColors;
    LPARAM lCustData;
    LPCFHOOKPROC lpfnHook;
    LPCWSTR lpTemplateName;
    HINSTANCE hInstance;
    LPWSTR lpszStyle;
    WORD nFontType;
    WORD ___MISSING_ALIGNMENT__;
    INT nSizeMin;
    INT nSizeMax;
};

struct tagLOGFONTW {
    LONG lfHeight;
    LONG lfWidth;
    LONG lfEscapement;
    LONG lfOrientation;
    LONG lfWeight;
    BYTE lfItalic;
    BYTE lfUnderline;
    BYTE lfStrikeOut;
    BYTE lfCharSet;
    BYTE lfOutPrecision;
    BYTE lfClipPrecision;
    BYTE lfQuality;
    BYTE lfPitchAndFamily;
    WCHAR lfFaceName[32];
};

struct HDC__ {
    int unused;
};

typedef UINT_PTR (*LPSETUPHOOKPROC)(HWND, UINT, WPARAM, LPARAM);

typedef struct tagCHOOSECOLORW *LPCHOOSECOLORW;

typedef UINT_PTR (*LPPRINTHOOKPROC)(HWND, UINT, WPARAM, LPARAM);

typedef struct tagPDW tagPDW, *PtagPDW;

struct tagPDW {
    DWORD lStructSize;
    HWND hwndOwner;
    HGLOBAL hDevMode;
    HGLOBAL hDevNames;
    HDC hDC;
    DWORD Flags;
    WORD nFromPage;
    WORD nToPage;
    WORD nMinPage;
    WORD nMaxPage;
    WORD nCopies;
    HINSTANCE hInstance;
    LPARAM lCustData;
    LPPRINTHOOKPROC lpfnPrintHook;
    LPSETUPHOOKPROC lpfnSetupHook;
    LPCWSTR lpPrintTemplateName;
    LPCWSTR lpSetupTemplateName;
    HGLOBAL hPrintTemplate;
    HGLOBAL hSetupTemplate;
};

typedef struct tagPSDW tagPSDW, *PtagPSDW;

typedef struct tagPOINT tagPOINT, *PtagPOINT;

typedef struct tagPOINT POINT;

typedef struct tagRECT tagRECT, *PtagRECT;

typedef struct tagRECT RECT;

typedef UINT_PTR (*LPPAGESETUPHOOK)(HWND, UINT, WPARAM, LPARAM);

struct tagPOINT {
    LONG x;
    LONG y;
};

struct tagRECT {
    LONG left;
    LONG top;
    LONG right;
    LONG bottom;
};

struct tagPSDW {
    DWORD lStructSize;
    HWND hwndOwner;
    HGLOBAL hDevMode;
    HGLOBAL hDevNames;
    DWORD Flags;
    POINT ptPaperSize;
    RECT rtMinMargin;
    RECT rtMargin;
    HINSTANCE hInstance;
    LPARAM lCustData;
    LPPAGESETUPHOOK lpfnPageSetupHook;
    LPPAGEPAINTHOOK lpfnPagePaintHook;
    LPCWSTR lpPageSetupTemplateName;
    HGLOBAL hPageSetupTemplate;
};

typedef struct tagOFNW *LPOPENFILENAMEW;

typedef struct tagPSDW *LPPAGESETUPDLGW;

typedef struct tagPDW *LPPRINTDLGW;

typedef int mbstate_t;

typedef struct lconv lconv, *Plconv;

struct lconv {
    char *decimal_point;
    char *thousands_sep;
    char *grouping;
    char *int_curr_symbol;
    char *currency_symbol;
    char *mon_decimal_point;
    char *mon_thousands_sep;
    char *mon_grouping;
    char *positive_sign;
    char *negative_sign;
    char int_frac_digits;
    char frac_digits;
    char p_cs_precedes;
    char p_sep_by_space;
    char n_cs_precedes;
    char n_sep_by_space;
    char p_sign_posn;
    char n_sign_posn;
    wchar_t *_W_decimal_point;
    wchar_t *_W_thousands_sep;
    wchar_t *_W_int_curr_symbol;
    wchar_t *_W_currency_symbol;
    wchar_t *_W_mon_decimal_point;
    wchar_t *_W_mon_thousands_sep;
    wchar_t *_W_positive_sign;
    wchar_t *_W_negative_sign;
};

typedef uint size_t;

typedef ushort wint_t;

typedef struct threadlocaleinfostruct threadlocaleinfostruct, *Pthreadlocaleinfostruct;

typedef struct threadlocaleinfostruct *pthreadlocinfo;

typedef struct localerefcount localerefcount, *Plocalerefcount;

typedef struct localerefcount locrefcount;

typedef struct __lc_time_data __lc_time_data, *P__lc_time_data;

struct __lc_time_data {
    char *wday_abbr[7];
    char *wday[7];
    char *month_abbr[12];
    char *month[12];
    char *ampm[2];
    char *ww_sdatefmt;
    char *ww_ldatefmt;
    char *ww_timefmt;
    int ww_caltype;
    int refcount;
    wchar_t *_W_wday_abbr[7];
    wchar_t *_W_wday[7];
    wchar_t *_W_month_abbr[12];
    wchar_t *_W_month[12];
    wchar_t *_W_ampm[2];
    wchar_t *_W_ww_sdatefmt;
    wchar_t *_W_ww_ldatefmt;
    wchar_t *_W_ww_timefmt;
    wchar_t *_W_ww_locale_name;
};

struct localerefcount {
    char *locale;
    wchar_t *wlocale;
    int *refcount;
    int *wrefcount;
};

struct threadlocaleinfostruct {
    int refcount;
    uint lc_codepage;
    uint lc_collate_cp;
    uint lc_time_cp;
    locrefcount lc_category[6];
    int lc_clike;
    int mb_cur_max;
    int *lconv_intl_refcount;
    int *lconv_num_refcount;
    int *lconv_mon_refcount;
    struct lconv *lconv;
    int *ctype1_refcount;
    ushort *ctype1;
    ushort *pctype;
    uchar *pclmap;
    uchar *pcumap;
    struct __lc_time_data *lc_time_curr;
    wchar_t *locale_name[6];
};

typedef struct threadlocaleinfostruct threadlocinfo;

typedef struct localeinfo_struct localeinfo_struct, *Plocaleinfo_struct;

typedef struct threadmbcinfostruct threadmbcinfostruct, *Pthreadmbcinfostruct;

typedef struct threadmbcinfostruct *pthreadmbcinfo;

struct localeinfo_struct {
    pthreadlocinfo locinfo;
    pthreadmbcinfo mbcinfo;
};

struct threadmbcinfostruct {
    int refcount;
    int mbcodepage;
    int ismbcodepage;
    ushort mbulinfo[6];
    uchar mbctype[257];
    uchar mbcasemap[256];
    wchar_t *mblocalename;
};

typedef int errno_t;

typedef int intptr_t;

typedef struct localeinfo_struct *_locale_t;

typedef longlong __time64_t;

typedef size_t rsize_t;

typedef ushort wctype_t;

typedef struct _browseinfoW _browseinfoW, *P_browseinfoW;

typedef struct _ITEMIDLIST _ITEMIDLIST, *P_ITEMIDLIST;

typedef struct _ITEMIDLIST ITEMIDLIST;

typedef ITEMIDLIST *LPCITEMIDLIST;

typedef int (*BFFCALLBACK)(HWND, UINT, LPARAM, LPARAM);

typedef struct _SHITEMID _SHITEMID, *P_SHITEMID;

typedef struct _SHITEMID SHITEMID;

typedef ushort USHORT;

struct _SHITEMID {
    USHORT cb;
    BYTE abID[1];
};

struct _ITEMIDLIST {
    SHITEMID mkid;
};

struct _browseinfoW {
    HWND hwndOwner;
    LPCITEMIDLIST pidlRoot;
    LPWSTR pszDisplayName;
    LPCWSTR lpszTitle;
    UINT ulFlags;
    BFFCALLBACK lpfn;
    LPARAM lParam;
    int iImage;
};

typedef struct _browseinfoW *LPBROWSEINFOW;

typedef ITEMIDLIST *LPITEMIDLIST;

typedef struct tagWNDCLASSW tagWNDCLASSW, *PtagWNDCLASSW;

typedef struct tagWNDCLASSW *LPWNDCLASSW;

typedef LONG_PTR LRESULT;

typedef LRESULT (*WNDPROC)(HWND, UINT, WPARAM, LPARAM);

typedef struct HICON__ HICON__, *PHICON__;

typedef struct HICON__ *HICON;

typedef HICON HCURSOR;

typedef struct HBRUSH__ HBRUSH__, *PHBRUSH__;

typedef struct HBRUSH__ *HBRUSH;

struct HBRUSH__ {
    int unused;
};

struct HICON__ {
    int unused;
};

struct tagWNDCLASSW {
    UINT style;
    WNDPROC lpfnWndProc;
    int cbClsExtra;
    int cbWndExtra;
    HINSTANCE hInstance;
    HICON hIcon;
    HCURSOR hCursor;
    HBRUSH hbrBackground;
    LPCWSTR lpszMenuName;
    LPCWSTR lpszClassName;
};

typedef struct tagMSG tagMSG, *PtagMSG;

typedef struct tagMSG *LPMSG;

struct tagMSG {
    HWND hwnd;
    UINT message;
    WPARAM wParam;
    LPARAM lParam;
    DWORD time;
    POINT pt;
};

typedef struct _ICONINFO _ICONINFO, *P_ICONINFO;

typedef struct _ICONINFO ICONINFO;

struct _ICONINFO {
    BOOL fIcon;
    DWORD xHotspot;
    DWORD yHotspot;
    HBITMAP hbmMask;
    HBITMAP hbmColor;
};

typedef struct tagMENUITEMINFOW tagMENUITEMINFOW, *PtagMENUITEMINFOW;

typedef struct HMENU__ HMENU__, *PHMENU__;

typedef struct HMENU__ *HMENU;

struct tagMENUITEMINFOW {
    UINT cbSize;
    UINT fMask;
    UINT fType;
    UINT fState;
    UINT wID;
    HMENU hSubMenu;
    HBITMAP hbmpChecked;
    HBITMAP hbmpUnchecked;
    ULONG_PTR dwItemData;
    LPWSTR dwTypeData;
    UINT cch;
    HBITMAP hbmpItem;
};

struct HMENU__ {
    int unused;
};

typedef struct tagSCROLLINFO tagSCROLLINFO, *PtagSCROLLINFO;

struct tagSCROLLINFO {
    UINT cbSize;
    UINT fMask;
    int nMin;
    int nMax;
    UINT nPage;
    int nPos;
    int nTrackPos;
};

typedef struct tagSCROLLINFO SCROLLINFO;

typedef LRESULT (*HOOKPROC)(int, WPARAM, LPARAM);

typedef BOOL (*DRAWSTATEPROC)(HDC, LPARAM, WPARAM, int, int);

typedef struct tagACCEL tagACCEL, *PtagACCEL;

struct tagACCEL {
    BYTE fVirt;
    WORD key;
    WORD cmd;
};

typedef struct tagMENUITEMINFOW MENUITEMINFOW;

typedef MENUITEMINFOW *LPCMENUITEMINFOW;

typedef struct tagPAINTSTRUCT tagPAINTSTRUCT, *PtagPAINTSTRUCT;

typedef struct tagPAINTSTRUCT *LPPAINTSTRUCT;

struct tagPAINTSTRUCT {
    HDC hdc;
    BOOL fErase;
    RECT rcPaint;
    BOOL fRestore;
    BOOL fIncUpdate;
    BYTE rgbReserved[32];
};

typedef struct DLGTEMPLATE DLGTEMPLATE, *PDLGTEMPLATE;

struct DLGTEMPLATE {
    DWORD style;
    DWORD dwExtendedStyle;
    WORD cdit;
    short x;
    short y;
    short cx;
    short cy;
};

typedef struct tagWNDCLASSEXW tagWNDCLASSEXW, *PtagWNDCLASSEXW;

typedef struct tagWNDCLASSEXW WNDCLASSEXW;

struct tagWNDCLASSEXW {
    UINT cbSize;
    UINT style;
    WNDPROC lpfnWndProc;
    int cbClsExtra;
    int cbWndExtra;
    HINSTANCE hInstance;
    HICON hIcon;
    HCURSOR hCursor;
    HBRUSH hbrBackground;
    LPCWSTR lpszMenuName;
    LPCWSTR lpszClassName;
    HICON hIconSm;
};

typedef struct DLGTEMPLATE *LPCDLGTEMPLATEW;

typedef struct tagPAINTSTRUCT PAINTSTRUCT;

typedef struct tagWNDCLASSW WNDCLASSW;

typedef void (*TIMERPROC)(HWND, UINT, UINT_PTR, DWORD);

typedef struct tagWINDOWPLACEMENT tagWINDOWPLACEMENT, *PtagWINDOWPLACEMENT;

typedef struct tagWINDOWPLACEMENT WINDOWPLACEMENT;

struct tagWINDOWPLACEMENT {
    UINT length;
    UINT flags;
    UINT showCmd;
    POINT ptMinPosition;
    POINT ptMaxPosition;
    RECT rcNormalPosition;
};

typedef struct tagMSG MSG;

typedef PVOID HDEVNOTIFY;

typedef SCROLLINFO *LPCSCROLLINFO;

typedef struct tagACCEL *LPACCEL;

typedef ICONINFO *PICONINFO;

typedef struct tagMENUITEMINFOW *LPMENUITEMINFOW;

typedef struct tagSCROLLINFO *LPSCROLLINFO;

typedef int INT_PTR;

typedef INT_PTR (*DLGPROC)(HWND, UINT, WPARAM, LPARAM);

typedef HANDLE HDWP;

typedef struct exception exception, *Pexception;

struct exception { // PlaceHolder Class Structure
};

typedef struct num_get<unsigned_short,class_std::istreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_> num_get<unsigned_short,class_std::istreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>, *Pnum_get<unsigned_short,class_std::istreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>;

struct num_get<unsigned_short,class_std::istreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_> { // PlaceHolder Class Structure
};

typedef struct collate<wchar_t> collate<wchar_t>, *Pcollate<wchar_t>;

struct collate<wchar_t> { // PlaceHolder Class Structure
};

typedef struct bad_cast bad_cast, *Pbad_cast;

struct bad_cast { // PlaceHolder Class Structure
};

typedef struct time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>, *Ptime_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>;

struct time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> { // PlaceHolder Class Structure
};

typedef struct money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_> money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>, *Pmoney_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>;

struct money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_> { // PlaceHolder Class Structure
};

typedef struct num_put<unsigned_short,class_std::ostreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_> num_put<unsigned_short,class_std::ostreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>, *Pnum_put<unsigned_short,class_std::ostreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>;

struct num_put<unsigned_short,class_std::ostreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_> { // PlaceHolder Class Structure
};

typedef struct basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>, *Pbasic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>;

struct basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> { // PlaceHolder Class Structure
};

typedef struct bad_typeid bad_typeid, *Pbad_typeid;

struct bad_typeid { // PlaceHolder Class Structure
};

typedef struct _Mpunct<char> _Mpunct<char>, *P_Mpunct<char>;

struct _Mpunct<char> { // PlaceHolder Class Structure
};

typedef struct moneypunct<char,1> moneypunct<char,1>, *Pmoneypunct<char,1>;

struct moneypunct<char,1> { // PlaceHolder Class Structure
};

typedef struct time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_> time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>, *Ptime_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>;

struct time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_> { // PlaceHolder Class Structure
};

typedef struct codecvt<unsigned_short,char,int> codecvt<unsigned_short,char,int>, *Pcodecvt<unsigned_short,char,int>;

struct codecvt<unsigned_short,char,int> { // PlaceHolder Class Structure
};

typedef struct bad_alloc bad_alloc, *Pbad_alloc;

struct bad_alloc { // PlaceHolder Class Structure
};

typedef struct collate<char> collate<char>, *Pcollate<char>;

struct collate<char> { // PlaceHolder Class Structure
};

typedef struct num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>, *Pnum_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>;

struct num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> { // PlaceHolder Class Structure
};

typedef struct money_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> money_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>, *Pmoney_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>;

struct money_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> { // PlaceHolder Class Structure
};

typedef struct basic_filebuf<char,struct_std::char_traits<char>_> basic_filebuf<char,struct_std::char_traits<char>_>, *Pbasic_filebuf<char,struct_std::char_traits<char>_>;

struct basic_filebuf<char,struct_std::char_traits<char>_> { // PlaceHolder Class Structure
};

typedef struct collate<unsigned_short> collate<unsigned_short>, *Pcollate<unsigned_short>;

struct collate<unsigned_short> { // PlaceHolder Class Structure
};

typedef struct __non_rtti_object __non_rtti_object, *P__non_rtti_object;

struct __non_rtti_object { // PlaceHolder Class Structure
};

typedef struct moneypunct<char,0> moneypunct<char,0>, *Pmoneypunct<char,0>;

struct moneypunct<char,0> { // PlaceHolder Class Structure
};

typedef struct basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>, *Pbasic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>;

struct basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> { // PlaceHolder Class Structure
};

typedef struct _Locimp _Locimp, *P_Locimp;

struct _Locimp { // PlaceHolder Class Structure
};

typedef struct _GUID _GUID, *P_GUID;

struct _GUID {
    ulong Data1;
    ushort Data2;
    ushort Data3;
    uchar Data4[8];
};

typedef struct _ABC _ABC, *P_ABC;

struct _ABC {
    int abcA;
    UINT abcB;
    int abcC;
};

typedef struct _devicemodeW _devicemodeW, *P_devicemodeW;

typedef union _union_660 _union_660, *P_union_660;

typedef union _union_663 _union_663, *P_union_663;

typedef struct _struct_661 _struct_661, *P_struct_661;

typedef struct _struct_662 _struct_662, *P_struct_662;

union _union_663 {
    DWORD dmDisplayFlags;
    DWORD dmNup;
};

struct _struct_661 {
    short dmOrientation;
    short dmPaperSize;
    short dmPaperLength;
    short dmPaperWidth;
    short dmScale;
    short dmCopies;
    short dmDefaultSource;
    short dmPrintQuality;
};

struct _struct_662 {
    POINTL dmPosition;
    DWORD dmDisplayOrientation;
    DWORD dmDisplayFixedOutput;
};

union _union_660 {
    struct _struct_661 field0;
    struct _struct_662 field1;
};

struct _devicemodeW {
    WCHAR dmDeviceName[32];
    WORD dmSpecVersion;
    WORD dmDriverVersion;
    WORD dmSize;
    WORD dmDriverExtra;
    DWORD dmFields;
    union _union_660 field6_0x4c;
    short dmColor;
    short dmDuplex;
    short dmYResolution;
    short dmTTOption;
    short dmCollate;
    WCHAR dmFormName[32];
    WORD dmLogPixels;
    DWORD dmBitsPerPel;
    DWORD dmPelsWidth;
    DWORD dmPelsHeight;
    union _union_663 field17_0xb4;
    DWORD dmDisplayFrequency;
    DWORD dmICMMethod;
    DWORD dmICMIntent;
    DWORD dmMediaType;
    DWORD dmDitherType;
    DWORD dmReserved1;
    DWORD dmReserved2;
    DWORD dmPanningWidth;
    DWORD dmPanningHeight;
};

typedef struct _RGNDATAHEADER _RGNDATAHEADER, *P_RGNDATAHEADER;

struct _RGNDATAHEADER {
    DWORD dwSize;
    DWORD iType;
    DWORD nCount;
    DWORD nRgnSize;
    RECT rcBound;
};

typedef struct _DOCINFOW _DOCINFOW, *P_DOCINFOW;

typedef struct _DOCINFOW DOCINFOW;

struct _DOCINFOW {
    int cbSize;
    LPCWSTR lpszDocName;
    LPCWSTR lpszOutput;
    LPCWSTR lpszDatatype;
    DWORD fwType;
};

typedef struct _devicemodeW DEVMODEW;

typedef struct tagENHMETAHEADER tagENHMETAHEADER, *PtagENHMETAHEADER;

typedef struct tagENHMETAHEADER *LPENHMETAHEADER;

typedef struct _RECTL _RECTL, *P_RECTL;

typedef struct _RECTL RECTL;

typedef struct tagSIZE tagSIZE, *PtagSIZE;

typedef struct tagSIZE SIZE;

typedef SIZE SIZEL;

struct tagSIZE {
    LONG cx;
    LONG cy;
};

struct _RECTL {
    LONG left;
    LONG top;
    LONG right;
    LONG bottom;
};

struct tagENHMETAHEADER {
    DWORD iType;
    DWORD nSize;
    RECTL rclBounds;
    RECTL rclFrame;
    DWORD dSignature;
    DWORD nVersion;
    DWORD nBytes;
    DWORD nRecords;
    WORD nHandles;
    WORD sReserved;
    DWORD nDescription;
    DWORD offDescription;
    DWORD nPalEntries;
    SIZEL szlDevice;
    SIZEL szlMillimeters;
    DWORD cbPixelFormat;
    DWORD offPixelFormat;
    DWORD bOpenGL;
    SIZEL szlMicrometers;
};

typedef struct tagPALETTEENTRY tagPALETTEENTRY, *PtagPALETTEENTRY;

struct tagPALETTEENTRY {
    BYTE peRed;
    BYTE peGreen;
    BYTE peBlue;
    BYTE peFlags;
};

typedef struct tagLOGPALETTE tagLOGPALETTE, *PtagLOGPALETTE;

typedef struct tagLOGPALETTE LOGPALETTE;

typedef struct tagPALETTEENTRY PALETTEENTRY;

struct tagLOGPALETTE {
    WORD palVersion;
    WORD palNumEntries;
    PALETTEENTRY palPalEntry[1];
};

typedef struct tagTEXTMETRICW tagTEXTMETRICW, *PtagTEXTMETRICW;

typedef struct tagTEXTMETRICW TEXTMETRICW;

struct tagTEXTMETRICW {
    LONG tmHeight;
    LONG tmAscent;
    LONG tmDescent;
    LONG tmInternalLeading;
    LONG tmExternalLeading;
    LONG tmAveCharWidth;
    LONG tmMaxCharWidth;
    LONG tmWeight;
    LONG tmOverhang;
    LONG tmDigitizedAspectX;
    LONG tmDigitizedAspectY;
    WCHAR tmFirstChar;
    WCHAR tmLastChar;
    WCHAR tmDefaultChar;
    WCHAR tmBreakChar;
    BYTE tmItalic;
    BYTE tmUnderlined;
    BYTE tmStruckOut;
    BYTE tmPitchAndFamily;
    BYTE tmCharSet;
};

typedef struct tagLOGBRUSH tagLOGBRUSH, *PtagLOGBRUSH;

typedef struct tagLOGBRUSH LOGBRUSH;

struct tagLOGBRUSH {
    UINT lbStyle;
    COLORREF lbColor;
    ULONG_PTR lbHatch;
};

typedef struct _OUTLINETEXTMETRICW _OUTLINETEXTMETRICW, *P_OUTLINETEXTMETRICW;

typedef struct tagPANOSE tagPANOSE, *PtagPANOSE;

typedef struct tagPANOSE PANOSE;

typedef CHAR *PSTR;

struct tagPANOSE {
    BYTE bFamilyType;
    BYTE bSerifStyle;
    BYTE bWeight;
    BYTE bProportion;
    BYTE bContrast;
    BYTE bStrokeVariation;
    BYTE bArmStyle;
    BYTE bLetterform;
    BYTE bMidline;
    BYTE bXHeight;
};

struct _OUTLINETEXTMETRICW {
    UINT otmSize;
    TEXTMETRICW otmTextMetrics;
    BYTE otmFiller;
    PANOSE otmPanoseNumber;
    UINT otmfsSelection;
    UINT otmfsType;
    int otmsCharSlopeRise;
    int otmsCharSlopeRun;
    int otmItalicAngle;
    UINT otmEMSquare;
    int otmAscent;
    int otmDescent;
    UINT otmLineGap;
    UINT otmsCapEmHeight;
    UINT otmsXHeight;
    RECT otmrcFontBox;
    int otmMacAscent;
    int otmMacDescent;
    UINT otmMacLineGap;
    UINT otmusMinimumPPEM;
    POINT otmptSubscriptSize;
    POINT otmptSubscriptOffset;
    POINT otmptSuperscriptSize;
    POINT otmptSuperscriptOffset;
    UINT otmsStrikeoutSize;
    int otmsStrikeoutPosition;
    int otmsUnderscoreSize;
    int otmsUnderscorePosition;
    PSTR otmpFamilyName;
    PSTR otmpFaceName;
    PSTR otmpStyleName;
    PSTR otmpFullName;
};

typedef struct _RGNDATA _RGNDATA, *P_RGNDATA;

typedef struct _RGNDATAHEADER RGNDATAHEADER;

struct _RGNDATA {
    RGNDATAHEADER rdh;
    char Buffer[1];
};

typedef struct tagLOGFONTW LOGFONTW;

typedef int (*OLDFONTENUMPROCW)(LOGFONTW *, TEXTMETRICW *, DWORD, LPARAM);

typedef OLDFONTENUMPROCW FONTENUMPROCW;

typedef struct tagXFORM tagXFORM, *PtagXFORM;

typedef struct tagXFORM XFORM;

typedef float FLOAT;

struct tagXFORM {
    FLOAT eM11;
    FLOAT eM12;
    FLOAT eM21;
    FLOAT eM22;
    FLOAT eDx;
    FLOAT eDy;
};

typedef struct _RGNDATA RGNDATA;

typedef struct tagBITMAPINFOHEADER tagBITMAPINFOHEADER, *PtagBITMAPINFOHEADER;

typedef struct tagBITMAPINFOHEADER BITMAPINFOHEADER;

struct tagBITMAPINFOHEADER {
    DWORD biSize;
    LONG biWidth;
    LONG biHeight;
    WORD biPlanes;
    WORD biBitCount;
    DWORD biCompression;
    DWORD biSizeImage;
    LONG biXPelsPerMeter;
    LONG biYPelsPerMeter;
    DWORD biClrUsed;
    DWORD biClrImportant;
};

typedef struct _OUTLINETEXTMETRICW *LPOUTLINETEXTMETRICW;

typedef struct tagTEXTMETRICW *LPTEXTMETRICW;

typedef struct tagBITMAPINFO tagBITMAPINFO, *PtagBITMAPINFO;

typedef struct tagRGBQUAD tagRGBQUAD, *PtagRGBQUAD;

typedef struct tagRGBQUAD RGBQUAD;

struct tagRGBQUAD {
    BYTE rgbBlue;
    BYTE rgbGreen;
    BYTE rgbRed;
    BYTE rgbReserved;
};

struct tagBITMAPINFO {
    BITMAPINFOHEADER bmiHeader;
    RGBQUAD bmiColors[1];
};

typedef BOOL (*ABORTPROC)(HDC, int);

typedef struct tagBITMAPINFO BITMAPINFO;

typedef struct tagBITMAPINFO *LPBITMAPINFO;

typedef struct _RGNDATA *LPRGNDATA;

typedef struct tagPALETTEENTRY *LPPALETTEENTRY;

typedef struct _ABC *LPABC;

typedef struct _devicemodeW *PDEVMODEW;

typedef struct _devicemodeW *LPDEVMODEW;

typedef ushort *RPC_WSTR;

typedef GUID UUID;

typedef long RPC_STATUS;

typedef PVOID PSECURITY_DESCRIPTOR;

typedef struct _IMAGE_SECTION_HEADER _IMAGE_SECTION_HEADER, *P_IMAGE_SECTION_HEADER;

typedef union _union_226 _union_226, *P_union_226;

union _union_226 {
    DWORD PhysicalAddress;
    DWORD VirtualSize;
};

struct _IMAGE_SECTION_HEADER {
    BYTE Name[8];
    union _union_226 Misc;
    DWORD VirtualAddress;
    DWORD SizeOfRawData;
    DWORD PointerToRawData;
    DWORD PointerToRelocations;
    DWORD PointerToLinenumbers;
    WORD NumberOfRelocations;
    WORD NumberOfLinenumbers;
    DWORD Characteristics;
};

typedef WCHAR *PCNZWCH;

typedef CHAR *LPCSTR;

typedef struct _SID_IDENTIFIER_AUTHORITY _SID_IDENTIFIER_AUTHORITY, *P_SID_IDENTIFIER_AUTHORITY;

typedef struct _SID_IDENTIFIER_AUTHORITY *PSID_IDENTIFIER_AUTHORITY;

struct _SID_IDENTIFIER_AUTHORITY {
    BYTE Value[6];
};

typedef struct _ACL _ACL, *P_ACL;

typedef struct _ACL ACL;

typedef ACL *PACL;

struct _ACL {
    BYTE AclRevision;
    BYTE Sbz1;
    WORD AclSize;
    WORD AceCount;
    WORD Sbz2;
};

typedef struct _OSVERSIONINFOW _OSVERSIONINFOW, *P_OSVERSIONINFOW;

typedef struct _OSVERSIONINFOW *LPOSVERSIONINFOW;

struct _OSVERSIONINFOW {
    DWORD dwOSVersionInfoSize;
    DWORD dwMajorVersion;
    DWORD dwMinorVersion;
    DWORD dwBuildNumber;
    DWORD dwPlatformId;
    WCHAR szCSDVersion[128];
};

typedef struct _MEMORY_BASIC_INFORMATION _MEMORY_BASIC_INFORMATION, *P_MEMORY_BASIC_INFORMATION;

typedef struct _MEMORY_BASIC_INFORMATION *PMEMORY_BASIC_INFORMATION;

struct _MEMORY_BASIC_INFORMATION {
    PVOID BaseAddress;
    PVOID AllocationBase;
    DWORD AllocationProtect;
    SIZE_T RegionSize;
    DWORD State;
    DWORD Protect;
    DWORD Type;
};

typedef enum _SECURITY_IMPERSONATION_LEVEL {
    SecurityAnonymous=0,
    SecurityIdentification=1,
    SecurityImpersonation=2,
    SecurityDelegation=3
} _SECURITY_IMPERSONATION_LEVEL;

typedef enum _SECURITY_IMPERSONATION_LEVEL SECURITY_IMPERSONATION_LEVEL;

typedef LONG *PLONG;

typedef struct _OSVERSIONINFOA _OSVERSIONINFOA, *P_OSVERSIONINFOA;

struct _OSVERSIONINFOA {
    DWORD dwOSVersionInfoSize;
    DWORD dwMajorVersion;
    DWORD dwMinorVersion;
    DWORD dwBuildNumber;
    DWORD dwPlatformId;
    CHAR szCSDVersion[128];
};

typedef struct _OSVERSIONINFOA *LPOSVERSIONINFOA;

typedef enum _SID_NAME_USE {
    SidTypeUser=1,
    SidTypeGroup=2,
    SidTypeDomain=3,
    SidTypeAlias=4,
    SidTypeWellKnownGroup=5,
    SidTypeDeletedAccount=6,
    SidTypeInvalid=7,
    SidTypeUnknown=8,
    SidTypeComputer=9,
    SidTypeLabel=10
} _SID_NAME_USE;

typedef enum _SID_NAME_USE *PSID_NAME_USE;

typedef DWORD ACCESS_MASK;

typedef PVOID PSID;

typedef enum _TOKEN_INFORMATION_CLASS {
    TokenUser=1,
    TokenGroups=2,
    TokenPrivileges=3,
    TokenOwner=4,
    TokenPrimaryGroup=5,
    TokenDefaultDacl=6,
    TokenSource=7,
    TokenType=8,
    TokenImpersonationLevel=9,
    TokenStatistics=10,
    TokenRestrictedSids=11,
    TokenSessionId=12,
    TokenGroupsAndPrivileges=13,
    TokenSessionReference=14,
    TokenSandBoxInert=15,
    TokenAuditPolicy=16,
    TokenOrigin=17,
    TokenElevationType=18,
    TokenLinkedToken=19,
    TokenElevation=20,
    TokenHasRestrictions=21,
    TokenAccessInformation=22,
    TokenVirtualizationAllowed=23,
    TokenVirtualizationEnabled=24,
    TokenIntegrityLevel=25,
    TokenUIAccess=26,
    TokenMandatoryPolicy=27,
    TokenLogonSid=28,
    MaxTokenInfoClass=29
} _TOKEN_INFORMATION_CLASS;

typedef enum _TOKEN_INFORMATION_CLASS TOKEN_INFORMATION_CLASS;

typedef struct _IMAGE_SECTION_HEADER *PIMAGE_SECTION_HEADER;

typedef DWORD SECURITY_INFORMATION;

typedef WCHAR *LPWCH;

typedef BYTE BOOLEAN;

typedef struct _SECURITY_QUALITY_OF_SERVICE _SECURITY_QUALITY_OF_SERVICE, *P_SECURITY_QUALITY_OF_SERVICE;

typedef struct _SECURITY_QUALITY_OF_SERVICE SECURITY_QUALITY_OF_SERVICE;

typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE;

struct _SECURITY_QUALITY_OF_SERVICE {
    DWORD Length;
    SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
    SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
    BOOLEAN EffectiveOnly;
};

typedef CHAR *LPCH;

typedef WORD LANGID;

typedef DWORD LCID;

typedef CHAR *PCNZCH;

typedef HANDLE *PHANDLE;

typedef struct tagCONVCONTEXT tagCONVCONTEXT, *PtagCONVCONTEXT;

typedef struct tagCONVCONTEXT *PCONVCONTEXT;

struct tagCONVCONTEXT {
    UINT cb;
    UINT wFlags;
    UINT wCountryID;
    int iCodePage;
    DWORD dwLangID;
    DWORD dwSecurity;
    SECURITY_QUALITY_OF_SERVICE qos;
};

typedef struct HCONV__ HCONV__, *PHCONV__;

typedef struct HCONV__ *HCONV;

struct HCONV__ {
    int unused;
};

typedef struct HSZ__ HSZ__, *PHSZ__;

typedef struct HSZ__ *HSZ;

struct HSZ__ {
    int unused;
};

typedef struct HDDEDATA__ HDDEDATA__, *PHDDEDATA__;

struct HDDEDATA__ {
    int unused;
};

typedef struct HDDEDATA__ *HDDEDATA;

typedef HDDEDATA (*PFNCALLBACK)(UINT, UINT, HCONV, HSZ, HSZ, HDDEDATA, ULONG_PTR, ULONG_PTR);

typedef struct IMAGE_DOS_HEADER IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;

struct IMAGE_DOS_HEADER {
    char e_magic[2]; // Magic number
    word e_cblp; // Bytes of last page
    word e_cp; // Pages in file
    word e_crlc; // Relocations
    word e_cparhdr; // Size of header in paragraphs
    word e_minalloc; // Minimum extra paragraphs needed
    word e_maxalloc; // Maximum extra paragraphs needed
    word e_ss; // Initial (relative) SS value
    word e_sp; // Initial SP value
    word e_csum; // Checksum
    word e_ip; // Initial IP value
    word e_cs; // Initial (relative) CS value
    word e_lfarlc; // File address of relocation table
    word e_ovno; // Overlay number
    word e_res[4][4]; // Reserved words
    word e_oemid; // OEM identifier (for e_oeminfo)
    word e_oeminfo; // OEM information; e_oemid specific
    word e_res2[10][10]; // Reserved words
    dword e_lfanew; // File address of new exe header
    byte e_program[64]; // Actual DOS program
};

typedef struct tm tm, *Ptm;

struct tm {
    int tm_sec;
    int tm_min;
    int tm_hour;
    int tm_mday;
    int tm_mon;
    int tm_year;
    int tm_wday;
    int tm_yday;
    int tm_isdst;
};

typedef long clock_t;

typedef struct tagLC_STRINGS tagLC_STRINGS, *PtagLC_STRINGS;

struct tagLC_STRINGS {
    wchar_t szLanguage[64];
    wchar_t szCountry[64];
    wchar_t szCodePage[16];
    wchar_t szLocaleName[85];
};

typedef struct tagLC_STRINGS *LPLC_STRINGS;

typedef struct _IMAGELIST _IMAGELIST, *P_IMAGELIST;

typedef struct _IMAGELIST *HIMAGELIST;

struct _IMAGELIST {
};

typedef struct tagPOINT *LPPOINT;

typedef struct HFONT__ HFONT__, *PHFONT__;

struct HFONT__ {
    int unused;
};

typedef struct HKEY__ HKEY__, *PHKEY__;

struct HKEY__ {
    int unused;
};

typedef struct HACCEL__ HACCEL__, *PHACCEL__;

typedef struct HACCEL__ *HACCEL;

struct HACCEL__ {
    int unused;
};

typedef struct HPALETTE__ HPALETTE__, *PHPALETTE__;

struct HPALETTE__ {
    int unused;
};

typedef HINSTANCE HMODULE;

typedef HANDLE HLOCAL;

typedef struct HPEN__ HPEN__, *PHPEN__;

struct HPEN__ {
    int unused;
};

typedef long *LPLONG;

typedef int (*FARPROC)(void);

typedef WORD ATOM;

typedef struct HRGN__ HRGN__, *PHRGN__;

typedef struct HRGN__ *HRGN;

struct HRGN__ {
    int unused;
};

typedef struct HWINSTA__ HWINSTA__, *PHWINSTA__;

typedef struct HWINSTA__ *HWINSTA;

struct HWINSTA__ {
    int unused;
};

typedef struct tagRECT *LPRECT;

typedef BOOL *LPBOOL;

typedef void *HGDIOBJ;

typedef struct HKEY__ *HKEY;

typedef struct HHOOK__ HHOOK__, *PHHOOK__;

struct HHOOK__ {
    int unused;
};

typedef struct HHOOK__ *HHOOK;

typedef struct HFONT__ *HFONT;

typedef DWORD *LPDWORD;

typedef struct HPEN__ *HPEN;

typedef struct HPALETTE__ *HPALETTE;

typedef DWORD *PDWORD;

typedef int *LPINT;

typedef struct tagSIZE *LPSIZE;

typedef struct _FILETIME *LPFILETIME;

typedef HANDLE *LPHANDLE;

typedef WORD *LPWORD;

typedef HKEY *PHKEY;

typedef BYTE *PBYTE;

typedef void *LPCVOID;

typedef struct IMAGE_RESOURCE_DIRECTORY_ENTRY_NameStruct IMAGE_RESOURCE_DIRECTORY_ENTRY_NameStruct, *PIMAGE_RESOURCE_DIRECTORY_ENTRY_NameStruct;

struct IMAGE_RESOURCE_DIRECTORY_ENTRY_NameStruct {
    dword NameOffset;
    dword NameIsString;
};

typedef struct IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA32, *PIMAGE_THUNK_DATA32;

struct IMAGE_THUNK_DATA32 {
    dword StartAddressOfRawData;
    dword EndAddressOfRawData;
    dword AddressOfIndex;
    dword AddressOfCallBacks;
    dword SizeOfZeroFill;
    dword Characteristics;
};

typedef struct IMAGE_RESOURCE_DIR_STRING_U_52 IMAGE_RESOURCE_DIR_STRING_U_52, *PIMAGE_RESOURCE_DIR_STRING_U_52;

struct IMAGE_RESOURCE_DIR_STRING_U_52 {
    word Length;
    wchar16 NameString[26];
};

typedef struct IMAGE_RESOURCE_DIR_STRING_U_14 IMAGE_RESOURCE_DIR_STRING_U_14, *PIMAGE_RESOURCE_DIR_STRING_U_14;

struct IMAGE_RESOURCE_DIR_STRING_U_14 {
    word Length;
    wchar16 NameString[7];
};

typedef struct IMAGE_SECTION_HEADER IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

typedef union Misc Misc, *PMisc;

typedef enum SectionFlags {
    IMAGE_SCN_TYPE_NO_PAD=8,
    IMAGE_SCN_RESERVED_0001=16,
    IMAGE_SCN_CNT_CODE=32,
    IMAGE_SCN_CNT_INITIALIZED_DATA=64,
    IMAGE_SCN_CNT_UNINITIALIZED_DATA=128,
    IMAGE_SCN_LNK_OTHER=256,
    IMAGE_SCN_LNK_INFO=512,
    IMAGE_SCN_RESERVED_0040=1024,
    IMAGE_SCN_LNK_REMOVE=2048,
    IMAGE_SCN_LNK_COMDAT=4096,
    IMAGE_SCN_GPREL=32768,
    IMAGE_SCN_MEM_16BIT=131072,
    IMAGE_SCN_MEM_PURGEABLE=131072,
    IMAGE_SCN_MEM_LOCKED=262144,
    IMAGE_SCN_MEM_PRELOAD=524288,
    IMAGE_SCN_ALIGN_1BYTES=1048576,
    IMAGE_SCN_ALIGN_2BYTES=2097152,
    IMAGE_SCN_ALIGN_4BYTES=3145728,
    IMAGE_SCN_ALIGN_8BYTES=4194304,
    IMAGE_SCN_ALIGN_16BYTES=5242880,
    IMAGE_SCN_ALIGN_32BYTES=6291456,
    IMAGE_SCN_ALIGN_64BYTES=7340032,
    IMAGE_SCN_ALIGN_128BYTES=8388608,
    IMAGE_SCN_ALIGN_256BYTES=9437184,
    IMAGE_SCN_ALIGN_512BYTES=10485760,
    IMAGE_SCN_ALIGN_1024BYTES=11534336,
    IMAGE_SCN_ALIGN_2048BYTES=12582912,
    IMAGE_SCN_ALIGN_4096BYTES=13631488,
    IMAGE_SCN_ALIGN_8192BYTES=14680064,
    IMAGE_SCN_LNK_NRELOC_OVFL=16777216,
    IMAGE_SCN_MEM_DISCARDABLE=33554432,
    IMAGE_SCN_MEM_NOT_CACHED=67108864,
    IMAGE_SCN_MEM_NOT_PAGED=134217728,
    IMAGE_SCN_MEM_SHARED=268435456,
    IMAGE_SCN_MEM_EXECUTE=536870912,
    IMAGE_SCN_MEM_READ=1073741824,
    IMAGE_SCN_MEM_WRITE=2147483648
} SectionFlags;

union Misc {
    dword PhysicalAddress;
    dword VirtualSize;
};

struct IMAGE_SECTION_HEADER {
    char Name[8];
    union Misc Misc;
    ImageBaseOffset32 VirtualAddress;
    dword SizeOfRawData;
    dword PointerToRawData;
    dword PointerToRelocations;
    dword PointerToLinenumbers;
    word NumberOfRelocations;
    word NumberOfLinenumbers;
    enum SectionFlags Characteristics;
};

typedef struct IMAGE_DATA_DIRECTORY IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;

struct IMAGE_DATA_DIRECTORY {
    ImageBaseOffset32 VirtualAddress;
    dword Size;
};

typedef struct IMAGE_RESOURCE_DATA_ENTRY IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY;

struct IMAGE_RESOURCE_DATA_ENTRY {
    dword OffsetToData;
    dword Size;
    dword CodePage;
    dword Reserved;
};

typedef struct IMAGE_RESOURCE_DIR_STRING_U_40 IMAGE_RESOURCE_DIR_STRING_U_40, *PIMAGE_RESOURCE_DIR_STRING_U_40;

struct IMAGE_RESOURCE_DIR_STRING_U_40 {
    word Length;
    wchar16 NameString[20];
};

typedef struct IMAGE_RESOURCE_DIRECTORY IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY;

struct IMAGE_RESOURCE_DIRECTORY {
    dword Characteristics;
    dword TimeDateStamp;
    word MajorVersion;
    word MinorVersion;
    word NumberOfNamedEntries;
    word NumberOfIdEntries;
};

typedef struct IMAGE_DIRECTORY_ENTRY_EXPORT IMAGE_DIRECTORY_ENTRY_EXPORT, *PIMAGE_DIRECTORY_ENTRY_EXPORT;

struct IMAGE_DIRECTORY_ENTRY_EXPORT {
    dword Characteristics;
    dword TimeDateStamp;
    word MajorVersion;
    word MinorVersion;
    ImageBaseOffset32 Name;
    dword Base;
    dword NumberOfFunctions;
    dword NumberOfNames;
    ImageBaseOffset32 AddressOfFunctions;
    ImageBaseOffset32 AddressOfNames;
    ImageBaseOffset32 AddressOfNameOrdinals;
};

typedef struct IMAGE_RESOURCE_DIR_STRING_U_42 IMAGE_RESOURCE_DIR_STRING_U_42, *PIMAGE_RESOURCE_DIR_STRING_U_42;

struct IMAGE_RESOURCE_DIR_STRING_U_42 {
    word Length;
    wchar16 NameString[21];
};

typedef struct IMAGE_RESOURCE_DIR_STRING_U_48 IMAGE_RESOURCE_DIR_STRING_U_48, *PIMAGE_RESOURCE_DIR_STRING_U_48;

struct IMAGE_RESOURCE_DIR_STRING_U_48 {
    word Length;
    wchar16 NameString[24];
};

typedef union IMAGE_RESOURCE_DIRECTORY_ENTRY_NameUnion IMAGE_RESOURCE_DIRECTORY_ENTRY_NameUnion, *PIMAGE_RESOURCE_DIRECTORY_ENTRY_NameUnion;

union IMAGE_RESOURCE_DIRECTORY_ENTRY_NameUnion {
    struct IMAGE_RESOURCE_DIRECTORY_ENTRY_NameStruct IMAGE_RESOURCE_DIRECTORY_ENTRY_NameStruct;
    dword Name;
    word Id;
};

typedef struct IMAGE_RESOURCE_DIR_STRING_U_46 IMAGE_RESOURCE_DIR_STRING_U_46, *PIMAGE_RESOURCE_DIR_STRING_U_46;

struct IMAGE_RESOURCE_DIR_STRING_U_46 {
    word Length;
    wchar16 NameString[23];
};

typedef struct IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;

struct IMAGE_OPTIONAL_HEADER32 {
    word Magic;
    byte MajorLinkerVersion;
    byte MinorLinkerVersion;
    dword SizeOfCode;
    dword SizeOfInitializedData;
    dword SizeOfUninitializedData;
    ImageBaseOffset32 AddressOfEntryPoint;
    ImageBaseOffset32 BaseOfCode;
    ImageBaseOffset32 BaseOfData;
    pointer32 ImageBase;
    dword SectionAlignment;
    dword FileAlignment;
    word MajorOperatingSystemVersion;
    word MinorOperatingSystemVersion;
    word MajorImageVersion;
    word MinorImageVersion;
    word MajorSubsystemVersion;
    word MinorSubsystemVersion;
    dword Win32VersionValue;
    dword SizeOfImage;
    dword SizeOfHeaders;
    dword CheckSum;
    word Subsystem;
    word DllCharacteristics;
    dword SizeOfStackReserve;
    dword SizeOfStackCommit;
    dword SizeOfHeapReserve;
    dword SizeOfHeapCommit;
    dword LoaderFlags;
    dword NumberOfRvaAndSizes;
    struct IMAGE_DATA_DIRECTORY DataDirectory[16];
};

typedef struct IMAGE_RESOURCE_DIR_STRING_U_30 IMAGE_RESOURCE_DIR_STRING_U_30, *PIMAGE_RESOURCE_DIR_STRING_U_30;

struct IMAGE_RESOURCE_DIR_STRING_U_30 {
    word Length;
    wchar16 NameString[15];
};

typedef struct IMAGE_FILE_HEADER IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;

struct IMAGE_FILE_HEADER {
    word Machine; // 332
    word NumberOfSections;
    dword TimeDateStamp;
    dword PointerToSymbolTable;
    dword NumberOfSymbols;
    word SizeOfOptionalHeader;
    word Characteristics;
};

typedef struct IMAGE_RESOURCE_DIR_STRING_U_36 IMAGE_RESOURCE_DIR_STRING_U_36, *PIMAGE_RESOURCE_DIR_STRING_U_36;

struct IMAGE_RESOURCE_DIR_STRING_U_36 {
    word Length;
    wchar16 NameString[18];
};

typedef struct IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;

struct IMAGE_NT_HEADERS32 {
    char Signature[4];
    struct IMAGE_FILE_HEADER FileHeader;
    struct IMAGE_OPTIONAL_HEADER32 OptionalHeader;
};

typedef struct IMAGE_RESOURCE_DIR_STRING_U_38 IMAGE_RESOURCE_DIR_STRING_U_38, *PIMAGE_RESOURCE_DIR_STRING_U_38;

struct IMAGE_RESOURCE_DIR_STRING_U_38 {
    word Length;
    wchar16 NameString[19];
};

typedef struct IMAGE_RESOURCE_DIR_STRING_U_34 IMAGE_RESOURCE_DIR_STRING_U_34, *PIMAGE_RESOURCE_DIR_STRING_U_34;

struct IMAGE_RESOURCE_DIR_STRING_U_34 {
    word Length;
    wchar16 NameString[17];
};

typedef union IMAGE_RESOURCE_DIRECTORY_ENTRY IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY;

union IMAGE_RESOURCE_DIRECTORY_ENTRY {
    union IMAGE_RESOURCE_DIRECTORY_ENTRY_NameUnion NameUnion;
    union IMAGE_RESOURCE_DIRECTORY_ENTRY_DirectoryUnion DirectoryUnion;
};

typedef struct IMAGE_RESOURCE_DIR_STRING_U_20 IMAGE_RESOURCE_DIR_STRING_U_20, *PIMAGE_RESOURCE_DIR_STRING_U_20;

struct IMAGE_RESOURCE_DIR_STRING_U_20 {
    word Length;
    wchar16 NameString[10];
};

typedef struct IMAGE_RESOURCE_DIR_STRING_U_26 IMAGE_RESOURCE_DIR_STRING_U_26, *PIMAGE_RESOURCE_DIR_STRING_U_26;

struct IMAGE_RESOURCE_DIR_STRING_U_26 {
    word Length;
    wchar16 NameString[13];
};

typedef struct IMAGE_RESOURCE_DIR_STRING_U_28 IMAGE_RESOURCE_DIR_STRING_U_28, *PIMAGE_RESOURCE_DIR_STRING_U_28;

struct IMAGE_RESOURCE_DIR_STRING_U_28 {
    word Length;
    wchar16 NameString[14];
};

typedef struct IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY32, *PIMAGE_LOAD_CONFIG_DIRECTORY32;

struct IMAGE_LOAD_CONFIG_DIRECTORY32 {
    dword Size;
    dword TimeDateStamp;
    word MajorVersion;
    word MinorVersion;
    dword GlobalFlagsClear;
    dword GlobalFlagsSet;
    dword CriticalSectionDefaultTimeout;
    dword DeCommitFreeBlockThreshold;
    dword DeCommitTotalFreeThreshold;
    pointer32 LockPrefixTable;
    dword MaximumAllocationSize;
    dword VirtualMemoryThreshold;
    dword ProcessHeapFlags;
    dword ProcessAffinityMask;
    word CsdVersion;
    word DependentLoadFlags;
    pointer32 EditList;
    pointer32 SecurityCookie;
    pointer32 SEHandlerTable;
    dword SEHandlerCount;
};

typedef struct IMAGE_RESOURCE_DIR_STRING_U_24 IMAGE_RESOURCE_DIR_STRING_U_24, *PIMAGE_RESOURCE_DIR_STRING_U_24;

struct IMAGE_RESOURCE_DIR_STRING_U_24 {
    word Length;
    wchar16 NameString[12];
};

typedef struct _EXPLICIT_ACCESS_W _EXPLICIT_ACCESS_W, *P_EXPLICIT_ACCESS_W;

typedef enum _ACCESS_MODE {
    NOT_USED_ACCESS=0,
    GRANT_ACCESS=1,
    SET_ACCESS=2,
    DENY_ACCESS=3,
    REVOKE_ACCESS=4,
    SET_AUDIT_SUCCESS=5,
    SET_AUDIT_FAILURE=6
} _ACCESS_MODE;

typedef enum _ACCESS_MODE ACCESS_MODE;

typedef struct _TRUSTEE_W _TRUSTEE_W, *P_TRUSTEE_W;

typedef struct _TRUSTEE_W TRUSTEE_W;

typedef enum _MULTIPLE_TRUSTEE_OPERATION {
    NO_MULTIPLE_TRUSTEE=0,
    TRUSTEE_IS_IMPERSONATE=1
} _MULTIPLE_TRUSTEE_OPERATION;

typedef enum _MULTIPLE_TRUSTEE_OPERATION MULTIPLE_TRUSTEE_OPERATION;

typedef enum _TRUSTEE_FORM {
    TRUSTEE_IS_SID=0,
    TRUSTEE_IS_NAME=1,
    TRUSTEE_BAD_FORM=2,
    TRUSTEE_IS_OBJECTS_AND_SID=3,
    TRUSTEE_IS_OBJECTS_AND_NAME=4
} _TRUSTEE_FORM;

typedef enum _TRUSTEE_FORM TRUSTEE_FORM;

typedef enum _TRUSTEE_TYPE {
    TRUSTEE_IS_UNKNOWN=0,
    TRUSTEE_IS_USER=1,
    TRUSTEE_IS_GROUP=2,
    TRUSTEE_IS_DOMAIN=3,
    TRUSTEE_IS_ALIAS=4,
    TRUSTEE_IS_WELL_KNOWN_GROUP=5,
    TRUSTEE_IS_DELETED=6,
    TRUSTEE_IS_INVALID=7,
    TRUSTEE_IS_COMPUTER=8
} _TRUSTEE_TYPE;

typedef enum _TRUSTEE_TYPE TRUSTEE_TYPE;

struct _TRUSTEE_W {
    struct _TRUSTEE_W *pMultipleTrustee;
    MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation;
    TRUSTEE_FORM TrusteeForm;
    TRUSTEE_TYPE TrusteeType;
    LPWSTR ptstrName;
};

struct _EXPLICIT_ACCESS_W {
    DWORD grfAccessPermissions;
    ACCESS_MODE grfAccessMode;
    DWORD grfInheritance;
    TRUSTEE_W Trustee;
};

typedef struct _EXPLICIT_ACCESS_W *PEXPLICIT_ACCESS_W;

typedef enum _SE_OBJECT_TYPE {
    SE_UNKNOWN_OBJECT_TYPE=0,
    SE_FILE_OBJECT=1,
    SE_SERVICE=2,
    SE_PRINTER=3,
    SE_REGISTRY_KEY=4,
    SE_LMSHARE=5,
    SE_KERNEL_OBJECT=6,
    SE_WINDOW_OBJECT=7,
    SE_DS_OBJECT=8,
    SE_DS_OBJECT_ALL=9,
    SE_PROVIDER_DEFINED_OBJECT=10,
    SE_WMIGUID_OBJECT=11,
    SE_REGISTRY_WOW64_32KEY=12
} _SE_OBJECT_TYPE;

typedef enum _SE_OBJECT_TYPE SE_OBJECT_TYPE;

typedef LONG LSTATUS;

typedef ACCESS_MASK REGSAM;

typedef struct WSAData WSAData, *PWSAData;

typedef struct WSAData WSADATA;

struct WSAData {
    WORD wVersion;
    WORD wHighVersion;
    char szDescription[257];
    char szSystemStatus[129];
    ushort iMaxSockets;
    ushort iMaxUdpDg;
    char *lpVendorInfo;
};

typedef struct servent servent, *Pservent;

struct servent {
    char *s_name;
    char **s_aliases;
    short s_port;
    char *s_proto;
};

typedef ushort u_short;

typedef UINT_PTR SOCKET;

typedef WSADATA *LPWSADATA;

typedef struct sockaddr sockaddr, *Psockaddr;

struct sockaddr {
    u_short sa_family;
    char sa_data[14];
};

typedef struct fd_set fd_set, *Pfd_set;

typedef uint u_int;

struct fd_set {
    u_int fd_count;
    SOCKET fd_array[64];
};

typedef ulong u_long;

typedef struct timeval timeval, *Ptimeval;

struct timeval {
    long tv_sec;
    long tv_usec;
};

typedef struct hostent hostent, *Phostent;

struct hostent {
    char *h_name;
    char **h_aliases;
    short h_addrtype;
    short h_length;
    char **h_addr_list;
};

typedef struct _tiddata _tiddata, *P_tiddata;

typedef struct _tiddata *_ptiddata;

typedef struct setloc_struct setloc_struct, *Psetloc_struct;

typedef struct setloc_struct _setloc_struct;

typedef struct _is_ctype_compatible _is_ctype_compatible, *P_is_ctype_compatible;

struct _is_ctype_compatible {
    ulong id;
    int is_clike;
};

struct setloc_struct {
    wchar_t *pchLanguage;
    wchar_t *pchCountry;
    int iLocState;
    int iPrimaryLen;
    BOOL bAbbrevLanguage;
    BOOL bAbbrevCountry;
    UINT _cachecp;
    wchar_t _cachein[131];
    wchar_t _cacheout[131];
    struct _is_ctype_compatible _Loc_c[5];
    wchar_t _cacheLocaleName[85];
};

struct _tiddata {
    ulong _tid;
    uintptr_t _thandle;
    int _terrno;
    ulong _tdoserrno;
    uint _fpds;
    ulong _holdrand;
    char *_token;
    wchar_t *_wtoken;
    uchar *_mtoken;
    char *_errmsg;
    wchar_t *_werrmsg;
    char *_namebuf0;
    wchar_t *_wnamebuf0;
    char *_namebuf1;
    wchar_t *_wnamebuf1;
    char *_asctimebuf;
    wchar_t *_wasctimebuf;
    void *_gmtimebuf;
    char *_cvtbuf;
    uchar _con_ch_buf[5];
    ushort _ch_buf_used;
    void *_initaddr;
    void *_initarg;
    void *_pxcptacttab;
    void *_tpxcptinfoptrs;
    int _tfpecode;
    pthreadmbcinfo ptmbcinfo;
    pthreadlocinfo ptlocinfo;
    int _ownlocale;
    ulong _NLG_dwCode;
    void *_terminate;
    void *_unexpected;
    void *_translator;
    void *_purecall;
    void *_curexception;
    void *_curcontext;
    int _ProcessingThrow;
    void *_curexcspec;
    void *_pFrameInfoChain;
    _setloc_struct _setloc_data;
    void *_reserved1;
    void *_reserved2;
    void *_reserved3;
    void *_reserved4;
    void *_reserved5;
    int _cxxReThrow;
    ulong __initDomain;
    int _initapartment;
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_> iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>, *Piserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Class Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2> oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>, *Poserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>;

struct oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2> { // PlaceHolder Class Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_> iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>, *Piserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Class Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_> iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>, *Piserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Class Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_> iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>, *Piserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Class Structure
};

typedef struct CNoTrackObject CNoTrackObject, *PCNoTrackObject;

struct CNoTrackObject { // PlaceHolder Structure
};

typedef enum _EXCEPTION_DISPOSITION {
} _EXCEPTION_DISPOSITION;

typedef struct Replicator Replicator, *PReplicator;

struct Replicator { // PlaceHolder Structure
};

typedef struct __type_info_node __type_info_node, *P__type_info_node;

struct __type_info_node { // PlaceHolder Structure
};

typedef struct DName DName, *PDName;

struct DName { // PlaceHolder Structure
};

typedef struct _s_RTTIBaseClassDescriptor _s_RTTIBaseClassDescriptor, *P_s_RTTIBaseClassDescriptor;

struct _s_RTTIBaseClassDescriptor { // PlaceHolder Structure
};

typedef struct TranslatorGuardRN TranslatorGuardRN, *PTranslatorGuardRN;

struct TranslatorGuardRN { // PlaceHolder Structure
};

typedef struct CParkingWnd CParkingWnd, *PCParkingWnd;

struct CParkingWnd { // PlaceHolder Structure
};

typedef struct EHExceptionRecord EHExceptionRecord, *PEHExceptionRecord;

struct EHExceptionRecord { // PlaceHolder Structure
};

typedef struct DNameStatusNode DNameStatusNode, *PDNameStatusNode;

struct DNameStatusNode { // PlaceHolder Structure
};

typedef struct _LocaleUpdate _LocaleUpdate, *P_LocaleUpdate;

struct _LocaleUpdate { // PlaceHolder Structure
};

typedef struct pcharNode pcharNode, *PpcharNode;

struct pcharNode { // PlaceHolder Structure
};

typedef struct CatchGuardRN CatchGuardRN, *PCatchGuardRN;

struct CatchGuardRN { // PlaceHolder Structure
};

typedef struct _s_RTTICompleteObjectLocator _s_RTTICompleteObjectLocator, *P_s_RTTICompleteObjectLocator;

struct _s_RTTICompleteObjectLocator { // PlaceHolder Structure
};

typedef struct _s_CatchableType _s_CatchableType, *P_s_CatchableType;

struct _s_CatchableType { // PlaceHolder Structure
};

typedef struct EHRegistrationNode EHRegistrationNode, *PEHRegistrationNode;

struct EHRegistrationNode { // PlaceHolder Structure
};

typedef enum Tokens {
} Tokens;

typedef struct pairNode pairNode, *PpairNode;

struct pairNode { // PlaceHolder Structure
};

typedef struct CDialog CDialog, *PCDialog;

struct CDialog { // PlaceHolder Structure
};

typedef struct DNameNode DNameNode, *PDNameNode;

struct DNameNode { // PlaceHolder Structure
};

typedef struct UnDecorator UnDecorator, *PUnDecorator;

struct UnDecorator { // PlaceHolder Structure
};

typedef enum DNameStatus {
} DNameStatus;

typedef struct pDNameNode pDNameNode, *PpDNameNode;

struct pDNameNode { // PlaceHolder Structure
};

typedef struct HeapManager HeapManager, *PHeapManager;

struct HeapManager { // PlaceHolder Structure
};

typedef struct sp_counted_base sp_counted_base, *Psp_counted_base;

struct sp_counted_base { // PlaceHolder Structure
};

typedef struct sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter> sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>, *Psp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>;

struct sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter> { // PlaceHolder Structure
};

typedef struct sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter> sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>, *Psp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>;

struct sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter> { // PlaceHolder Structure
};

typedef struct sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter> sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>, *Psp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>;

struct sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter> { // PlaceHolder Structure
};

typedef struct sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter> sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>, *Psp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>;

struct sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter> { // PlaceHolder Structure
};

typedef struct sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter> sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>, *Psp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>;

struct sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter> { // PlaceHolder Structure
};

typedef struct sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter> sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>, *Psp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>;

struct sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter> { // PlaceHolder Structure
};

typedef struct sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter> sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>, *Psp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>;

struct sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter> { // PlaceHolder Structure
};

typedef struct W727C087E W727C087E, *PW727C087E;

struct W727C087E { // PlaceHolder Structure
};

typedef struct WA36B9095 WA36B9095, *PWA36B9095;

struct WA36B9095 { // PlaceHolder Structure
};

typedef struct basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_> basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>, *Pbasic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>;

struct basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_> { // PlaceHolder Structure
};

typedef struct multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_> multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>, *Pmultiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>;

struct multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_> { // PlaceHolder Structure
};

typedef struct nothrow_t nothrow_t, *Pnothrow_t;

struct nothrow_t { // PlaceHolder Structure
};

typedef struct _Fac_node _Fac_node, *P_Fac_node;

struct _Fac_node { // PlaceHolder Structure
};

typedef struct messages<char> messages<char>, *Pmessages<char>;

struct messages<char> { // PlaceHolder Structure
};

typedef struct ostreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_> ostreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>, *Postreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>;

struct ostreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_> { // PlaceHolder Structure
};

typedef struct locale locale, *Plocale;

struct locale { // PlaceHolder Structure
};

typedef struct basic_streambuf<char,struct_std::char_traits<char>_> basic_streambuf<char,struct_std::char_traits<char>_>, *Pbasic_streambuf<char,struct_std::char_traits<char>_>;

struct basic_streambuf<char,struct_std::char_traits<char>_> { // PlaceHolder Structure
};

typedef struct ios_base ios_base, *Pios_base;

struct ios_base { // PlaceHolder Structure
};

typedef struct istreambuf_iterator<char,struct_std::char_traits<char>_> istreambuf_iterator<char,struct_std::char_traits<char>_>, *Pistreambuf_iterator<char,struct_std::char_traits<char>_>;

struct istreambuf_iterator<char,struct_std::char_traits<char>_> { // PlaceHolder Structure
};

typedef struct ostreambuf_iterator<char,struct_std::char_traits<char>_> ostreambuf_iterator<char,struct_std::char_traits<char>_>, *Postreambuf_iterator<char,struct_std::char_traits<char>_>;

struct ostreambuf_iterator<char,struct_std::char_traits<char>_> { // PlaceHolder Structure
};

typedef struct multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_> multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>, *Pmultiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>;

struct multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_> { // PlaceHolder Structure
};

typedef struct _String_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_> _String_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>, *P_String_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>;

struct _String_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_> { // PlaceHolder Structure
};

typedef struct istreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_> istreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>, *Pistreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>;

struct istreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_> { // PlaceHolder Structure
};

typedef struct _String_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> _String_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>, *P_String_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>;

struct _String_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> { // PlaceHolder Structure
};

typedef struct _String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_> _String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>, *P_String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>;

struct _String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_> { // PlaceHolder Structure
};

typedef struct set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_> set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>, *Pset<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>;

struct set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_> { // PlaceHolder Structure
};

typedef struct _Mutex _Mutex, *P_Mutex;

struct _Mutex { // PlaceHolder Structure
};

typedef struct _String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> _String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>, *P_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>;

struct _String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> { // PlaceHolder Structure
};

typedef struct _Locinfo _Locinfo, *P_Locinfo;

struct _Locinfo { // PlaceHolder Structure
};

typedef struct _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>, *P_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>;

struct _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> { // PlaceHolder Structure
};

typedef struct _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>, *P_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>;

struct _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> { // PlaceHolder Structure
};

typedef struct _Lockit _Lockit, *P_Lockit;

struct _Lockit { // PlaceHolder Structure
};

typedef struct id id, *Pid;

struct id { // PlaceHolder Structure
};

typedef struct facet facet, *Pfacet;

struct facet { // PlaceHolder Structure
};

typedef enum _Initfl {
} _Initfl;

typedef struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_> extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>, *Pextended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>;

struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base> extended_type_info_typeid<class_boost_132::detail::sp_counted_base>, *Pextended_type_info_typeid<class_boost_132::detail::sp_counted_base>;

struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W3CA43D38::W9A6A458E> extended_type_info_typeid<class_W3CA43D38::W9A6A458E>, *Pextended_type_info_typeid<class_W3CA43D38::W9A6A458E>;

struct extended_type_info_typeid<class_W3CA43D38::W9A6A458E> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_WD4D119EE::W59FB47B0> extended_type_info_typeid<class_WD4D119EE::W59FB47B0>, *Pextended_type_info_typeid<class_WD4D119EE::W59FB47B0>;

struct extended_type_info_typeid<class_WD4D119EE::W59FB47B0> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W71DA37B9::W6AB18A23> extended_type_info_typeid<class_W71DA37B9::W6AB18A23>, *Pextended_type_info_typeid<class_W71DA37B9::W6AB18A23>;

struct extended_type_info_typeid<class_W71DA37B9::W6AB18A23> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W71DA37B9::W64105C87> extended_type_info_typeid<class_W71DA37B9::W64105C87>, *Pextended_type_info_typeid<class_W71DA37B9::W64105C87>;

struct extended_type_info_typeid<class_W71DA37B9::W64105C87> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_> extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>, *Pextended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>;

struct extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>, *Pextended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>;

struct extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W3CA43D38::WF45DE894> extended_type_info_typeid<class_W3CA43D38::WF45DE894>, *Pextended_type_info_typeid<class_W3CA43D38::WF45DE894>;

struct extended_type_info_typeid<class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_> extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>, *Pextended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>;

struct extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W3CA43D38::WB891841E> extended_type_info_typeid<class_W3CA43D38::WB891841E>, *Pextended_type_info_typeid<class_W3CA43D38::WB891841E>;

struct extended_type_info_typeid<class_W3CA43D38::WB891841E> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W71DA37B9::W1A7DB823> extended_type_info_typeid<class_W71DA37B9::W1A7DB823>, *Pextended_type_info_typeid<class_W71DA37B9::W1A7DB823>;

struct extended_type_info_typeid<class_W71DA37B9::W1A7DB823> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W5D651E7E::W03E39C79> extended_type_info_typeid<class_W5D651E7E::W03E39C79>, *Pextended_type_info_typeid<class_W5D651E7E::W03E39C79>;

struct extended_type_info_typeid<class_W5D651E7E::W03E39C79> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost::optional<unsigned_int>_> extended_type_info_typeid<class_boost::optional<unsigned_int>_>, *Pextended_type_info_typeid<class_boost::optional<unsigned_int>_>;

struct extended_type_info_typeid<class_boost::optional<unsigned_int>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_WB3204DCB::W30062E43> extended_type_info_typeid<class_WB3204DCB::W30062E43>, *Pextended_type_info_typeid<class_WB3204DCB::W30062E43>;

struct extended_type_info_typeid<class_WB3204DCB::W30062E43> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_> extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>, *Pextended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>;

struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>, *Pextended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>;

struct extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_> extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>, *Pextended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>;

struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>, *Pextended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>;

struct extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W3CA43D38::W24C1131C> extended_type_info_typeid<class_W3CA43D38::W24C1131C>, *Pextended_type_info_typeid<class_W3CA43D38::W24C1131C>;

struct extended_type_info_typeid<class_W3CA43D38::W24C1131C> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>, *Pextended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>;

struct extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W88619A38::W0F3EE231> extended_type_info_typeid<class_W88619A38::W0F3EE231>, *Pextended_type_info_typeid<class_W88619A38::W0F3EE231>;

struct extended_type_info_typeid<class_W88619A38::W0F3EE231> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_> extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>, *Pextended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>;

struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>, *Pextended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>;

struct extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost::optional<bool>_> extended_type_info_typeid<class_boost::optional<bool>_>, *Pextended_type_info_typeid<class_boost::optional<bool>_>;

struct extended_type_info_typeid<class_boost::optional<bool>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W88619A38::WDDC4C4A6> extended_type_info_typeid<class_W88619A38::WDDC4C4A6>, *Pextended_type_info_typeid<class_W88619A38::WDDC4C4A6>;

struct extended_type_info_typeid<class_W88619A38::WDDC4C4A6> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>, *Pextended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>;

struct extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_> extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>, *Pextended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>;

struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_> extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>, *Pextended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>;

struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_> extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>, *Pextended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>;

struct extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>, *Pextended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>;

struct extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W76AFA8BF::W727C087E> extended_type_info_typeid<class_W76AFA8BF::W727C087E>, *Pextended_type_info_typeid<class_W76AFA8BF::W727C087E>;

struct extended_type_info_typeid<class_W76AFA8BF::W727C087E> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_WB3204DCB::W0A458440> extended_type_info_typeid<class_WB3204DCB::W0A458440>, *Pextended_type_info_typeid<class_WB3204DCB::W0A458440>;

struct extended_type_info_typeid<class_WB3204DCB::W0A458440> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>, *Pextended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>;

struct extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W88619A38::W7EEDEEF7> extended_type_info_typeid<class_W88619A38::W7EEDEEF7>, *Pextended_type_info_typeid<class_W88619A38::W7EEDEEF7>;

struct extended_type_info_typeid<class_W88619A38::W7EEDEEF7> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W76AFA8BF::WA36B9095> extended_type_info_typeid<class_W76AFA8BF::WA36B9095>, *Pextended_type_info_typeid<class_W76AFA8BF::WA36B9095>;

struct extended_type_info_typeid<class_W76AFA8BF::WA36B9095> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_WB4D94959::W1B0A637A> extended_type_info_typeid<class_WB4D94959::W1B0A637A>, *Pextended_type_info_typeid<class_WB4D94959::W1B0A637A>;

struct extended_type_info_typeid<class_WB4D94959::W1B0A637A> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_> extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>, *Pextended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>;

struct extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W3CA43D38::W25643903> extended_type_info_typeid<class_W3CA43D38::W25643903>, *Pextended_type_info_typeid<class_W3CA43D38::W25643903>;

struct extended_type_info_typeid<class_W3CA43D38::W25643903> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W88619A38::W9718CCBF> extended_type_info_typeid<class_W88619A38::W9718CCBF>, *Pextended_type_info_typeid<class_W88619A38::W9718CCBF>;

struct extended_type_info_typeid<class_W88619A38::W9718CCBF> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W88619A38::WA7693960> extended_type_info_typeid<class_W88619A38::WA7693960>, *Pextended_type_info_typeid<class_W88619A38::WA7693960>;

struct extended_type_info_typeid<class_W88619A38::WA7693960> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_> extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>, *Pextended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>;

struct extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_> extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>, *Pextended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>;

struct extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_WB4D94959::W2B0723D7> extended_type_info_typeid<class_WB4D94959::W2B0723D7>, *Pextended_type_info_typeid<class_WB4D94959::W2B0723D7>;

struct extended_type_info_typeid<class_WB4D94959::W2B0723D7> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_WD4D119EE::W94A2E6C6> extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>, *Pextended_type_info_typeid<class_WD4D119EE::W94A2E6C6>;

struct extended_type_info_typeid<class_WD4D119EE::W94A2E6C6> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W71DA37B9::W7EE09E61> extended_type_info_typeid<class_W71DA37B9::W7EE09E61>, *Pextended_type_info_typeid<class_W71DA37B9::W7EE09E61>;

struct extended_type_info_typeid<class_W71DA37B9::W7EE09E61> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_WD4D119EE::WDF413249> extended_type_info_typeid<class_WD4D119EE::WDF413249>, *Pextended_type_info_typeid<class_WD4D119EE::WDF413249>;

struct extended_type_info_typeid<class_WD4D119EE::WDF413249> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W88619A38::W40F1E0EC> extended_type_info_typeid<class_W88619A38::W40F1E0EC>, *Pextended_type_info_typeid<class_W88619A38::W40F1E0EC>;

struct extended_type_info_typeid<class_W88619A38::W40F1E0EC> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W47457227::W2907F2E9> extended_type_info_typeid<class_W47457227::W2907F2E9>, *Pextended_type_info_typeid<class_W47457227::W2907F2E9>;

struct extended_type_info_typeid<class_W47457227::W2907F2E9> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost_132::detail::shared_count> extended_type_info_typeid<class_boost_132::detail::shared_count>, *Pextended_type_info_typeid<class_boost_132::detail::shared_count>;

struct extended_type_info_typeid<class_boost_132::detail::shared_count> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>, *Pextended_type_info_typeid<class_W3CA43D38::W7D89EDB2>;

struct extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost::optional<int>_> extended_type_info_typeid<class_boost::optional<int>_>, *Pextended_type_info_typeid<class_boost::optional<int>_>;

struct extended_type_info_typeid<class_boost::optional<int>_> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_common::WB943A9F0> extended_type_info_typeid<class_common::WB943A9F0>, *Pextended_type_info_typeid<class_common::WB943A9F0>;

struct extended_type_info_typeid<class_common::WB943A9F0> { // PlaceHolder Structure
};

typedef struct extended_type_info_typeid<class_boost::filesystem::path> extended_type_info_typeid<class_boost::filesystem::path>, *Pextended_type_info_typeid<class_boost::filesystem::path>;

struct extended_type_info_typeid<class_boost::filesystem::path> { // PlaceHolder Structure
};

typedef struct void_caster void_caster, *Pvoid_caster;

struct void_caster { // PlaceHolder Structure
};

typedef struct void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894> void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>, *Pvoid_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>;

struct void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2> void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>, *Pvoid_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>;

struct void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2> { // PlaceHolder Structure
};

typedef struct void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base> void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>, *Pvoid_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>;

struct void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base> { // PlaceHolder Structure
};

typedef struct void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894> void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>, *Pvoid_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>;

struct void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894> void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>, *Pvoid_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>;

struct void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base> void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>, *Pvoid_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>;

struct void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base> { // PlaceHolder Structure
};

typedef struct void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base> void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>, *Pvoid_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>;

struct void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base> { // PlaceHolder Structure
};

typedef struct void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base> void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>, *Pvoid_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>;

struct void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base> { // PlaceHolder Structure
};

typedef struct void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894> void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>, *Pvoid_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>;

struct void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base> void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>, *Pvoid_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>;

struct void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base> { // PlaceHolder Structure
};

typedef struct void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894> void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>, *Pvoid_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>;

struct void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base> void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>, *Pvoid_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>;

struct void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base> { // PlaceHolder Structure
};

typedef struct void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894> void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>, *Pvoid_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>;

struct void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base> void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>, *Pvoid_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>;

struct void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_> singleton_wrapper<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>, *Psingleton_wrapper<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>;

struct singleton_wrapper<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_> singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>, *Psingleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>;

struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::WB1EE6FBF>_> singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::WB1EE6FBF>_>, *Psingleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::WB1EE6FBF>_>;

struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::WB1EE6FBF>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W1B0A637A>_> singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W1B0A637A>_>, *Psingleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W1B0A637A>_>;

struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W1B0A637A>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_> singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_>, *Psingleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_>;

struct singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>_> singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>_>, *Psingleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>_>;

struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_> singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>, *Psingleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>;

struct singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_> singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>, *Psingleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>;

struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>_> singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>_>, *Psingleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>_>;

struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_> singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>, *Psingleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>;

struct singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W1B0F0FDB>_> singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W1B0F0FDB>_>, *Psingleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W1B0F0FDB>_>;

struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W1B0F0FDB>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_> singleton_wrapper<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>, *Psingleton_wrapper<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>;

struct singleton_wrapper<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_> singleton_wrapper<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>, *Psingleton_wrapper<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>;

struct singleton_wrapper<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_> singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>, *Psingleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>;

struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_> singleton_wrapper<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>, *Psingleton_wrapper<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>;

struct singleton_wrapper<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>_> singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>_>, *Psingleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>_>;

struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_> singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_>, *Psingleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_>;

struct singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_> singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>, *Psingleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>;

struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_> singleton_wrapper<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>, *Psingleton_wrapper<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>;

struct singleton_wrapper<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_> singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>, *Psingleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>;

struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_> singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>, *Psingleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>;

struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>_> singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>_>, *Psingleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>_>;

struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_> singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>, *Psingleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>;

struct singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_> singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>, *Psingleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>;

struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_> singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>, *Psingleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>;

struct singleton_wrapper<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>_> singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>_>, *Psingleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>_>;

struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_> singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_> singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>, *Psingleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>;

struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_> singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>, *Psingleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>;

struct singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_> singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>, *Psingleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>;

struct singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_> singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>, *Psingleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>;

struct singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>_> singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>_>, *Psingleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>_>;

struct singleton_wrapper<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_> singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>, *Psingleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>;

struct singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_> { // PlaceHolder Structure
};

typedef struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_> singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>, *Psingleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>;

struct singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>, *Poserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>;

struct oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6> iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>, *Piserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>;

struct iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>, *Poserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>;

struct oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>, *Piserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>;

struct iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>, *Poserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>;

struct oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_> iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>, *Piserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>;

struct iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count> iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>, *Piserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2> iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>, *Piserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>;

struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_> pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2> iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>, *Piserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>;

struct iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count> iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>, *Piserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>, *Poserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>;

struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>, *Piserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>;

struct iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_> iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>, *Poserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>;

struct oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>, *Poserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>;

struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0> oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>, *Poserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>;

struct oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>, *Piserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>;

struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>, *Poserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>;

struct oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_> iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_> oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>, *Poserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>;

struct oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>, *Piserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>;

struct iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43> iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>, *Piserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>;

struct iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_> pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_> iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>, *Piserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_> iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>, *Piserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>, *Poserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>;

struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E> oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>, *Poserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>;

struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_> iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>, *Poserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>;

struct oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>, *Poserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>;

struct oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>, *Poserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>;

struct oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path> oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>, *Poserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>;

struct oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>, *Poserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>;

struct oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79> iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>, *Piserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>;

struct iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>, *Piserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>;

struct iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>, *Poserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>;

struct oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_> pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894> iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>, *Piserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>;

struct iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231> iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>, *Piserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>;

struct iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6> oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>, *Poserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>;

struct oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>, *Poserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>;

struct oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43> oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>, *Poserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>;

struct oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>, *Piserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>;

struct iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>, *Piserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>;

struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0> iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>, *Piserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>;

struct iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_> iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>, *Piserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_> oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>, *Poserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>;

struct oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_> { // PlaceHolder Structure
};

typedef struct basic_iarchive basic_iarchive, *Pbasic_iarchive;

struct basic_iarchive { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>, *Piserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>;

struct iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>, *Poserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>;

struct oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>, *Poserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>;

struct oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_> oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>, *Poserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>;

struct oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_> iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_> iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>, *Piserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>;

struct iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>, *Poserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>;

struct oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path> iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>, *Piserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>, *Poserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>;

struct oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>, *Piserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>;

struct iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>, *Poserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>;

struct oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_> pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_> iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>, *Piserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>, *Poserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>;

struct oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC> iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>, *Piserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>;

struct iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E> iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>, *Piserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>;

struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7> iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>, *Piserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>;

struct iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>, *Poserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>;

struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6> iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>, *Piserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>;

struct iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_> iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>, *Piserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>;

struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>, *Piserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>;

struct iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960> oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>, *Poserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>;

struct oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_> iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>, *Piserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_> pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_> pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>, *Piserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>;

struct iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> { // PlaceHolder Structure
};

typedef struct archive_serializer_map<class_boost::archive::xml_oarchive> archive_serializer_map<class_boost::archive::xml_oarchive>, *Parchive_serializer_map<class_boost::archive::xml_oarchive>;

struct archive_serializer_map<class_boost::archive::xml_oarchive> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>, *Poserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>;

struct oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_> oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>, *Poserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>;

struct oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960> iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>, *Piserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>;

struct iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_> iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249> iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>, *Piserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>;

struct iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>, *Piserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_> oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>, *Poserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>;

struct oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440> iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>, *Piserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>;

struct iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79> oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>, *Poserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>;

struct oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>, *Poserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>;

struct oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>, *Piserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>;

struct iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>, *Piserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>;

struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_> iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6> oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>, *Poserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>;

struct oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>, *Piserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>, *Poserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>;

struct oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>, *Piserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>;

struct iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_> oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>, *Poserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>;

struct oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_> oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>, *Poserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>;

struct oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_> oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>, *Poserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>;

struct oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>, *Piserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC> oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>, *Poserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>;

struct oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9> oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>, *Poserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>;

struct oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>, *Piserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct archive_serializer_map<class_boost::archive::binary_oarchive> archive_serializer_map<class_boost::archive::binary_oarchive>, *Parchive_serializer_map<class_boost::archive::binary_oarchive>;

struct archive_serializer_map<class_boost::archive::binary_oarchive> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>, *Poserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>;

struct oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>, *Piserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>;

struct iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>, *Piserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>, *Poserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>;

struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>, *Piserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_> pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>, *Piserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>;

struct iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>, *Poserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>;

struct oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_> iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>, *Piserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>, *Poserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>;

struct oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>, *Piserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>;

struct iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_> pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_> iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7> oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>, *Poserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>;

struct oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>, *Poserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>;

struct oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>, *Piserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>;

struct iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_> oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>, *Poserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>;

struct oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>, *Poserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>;

struct oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_> pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>, *Poserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>;

struct oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>, *Poserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>;

struct oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_> iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>, *Piserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>, *Poserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>;

struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF> oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>, *Poserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>;

struct oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>, *Poserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>;

struct oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_> oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>, *Poserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>;

struct oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_> iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>, *Piserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>, *Piserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>;

struct iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>, *Piserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>;

struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>, *Poserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>;

struct oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_> oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>, *Poserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>;

struct oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9> iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>, *Piserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>;

struct iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_> pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>, *Poserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>;

struct oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>, *Poserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>;

struct oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_> iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>, *Piserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>;

struct iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>, *Poserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>;

struct oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> { // PlaceHolder Structure
};

typedef struct basic_oarchive basic_oarchive, *Pbasic_oarchive;

struct basic_oarchive { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_> iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>, *Piserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>, *Piserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>;

struct iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_> pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_> oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>, *Poserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>;

struct oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>, *Poserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>;

struct oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894> pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440> oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>, *Poserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>;

struct oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>, *Piserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>;

struct iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_> pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>, *Piserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>;

struct iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_> iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>, *Piserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>;

struct iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF> iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>, *Piserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>;

struct iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_> iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>, *Piserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>;

struct iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249> oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>, *Poserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>;

struct oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>, *Poserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>;

struct oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2> oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>, *Poserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>;

struct oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>, *Piserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>;

struct iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> { // PlaceHolder Structure
};

typedef struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>, *Piserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>;

struct iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_> pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>, *Ppointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>;

struct pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>, *Ppointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>;

struct pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>, *Poserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>;

struct oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>, *Poserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>;

struct oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> { // PlaceHolder Structure
};

typedef struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>, *Ppointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>;

struct pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> { // PlaceHolder Structure
};

typedef struct pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_> pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>, *Ppointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>;

struct pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_> { // PlaceHolder Structure
};

typedef struct oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231> oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>, *Poserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>;

struct oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231> { // PlaceHolder Structure
};

typedef struct guid_initializer<class_W3CA43D38::W24C1131C> guid_initializer<class_W3CA43D38::W24C1131C>, *Pguid_initializer<class_W3CA43D38::W24C1131C>;

struct guid_initializer<class_W3CA43D38::W24C1131C> { // PlaceHolder Structure
};

typedef struct map<class_boost::archive::binary_oarchive> map<class_boost::archive::binary_oarchive>, *Pmap<class_boost::archive::binary_oarchive>;

struct map<class_boost::archive::binary_oarchive> { // PlaceHolder Structure
};

typedef struct guid_initializer<class_W3CA43D38::WB1EE6FBF> guid_initializer<class_W3CA43D38::WB1EE6FBF>, *Pguid_initializer<class_W3CA43D38::WB1EE6FBF>;

struct guid_initializer<class_W3CA43D38::WB1EE6FBF> { // PlaceHolder Structure
};

typedef struct guid_initializer<class_WB4D94959::W2B0723D7> guid_initializer<class_WB4D94959::W2B0723D7>, *Pguid_initializer<class_WB4D94959::W2B0723D7>;

struct guid_initializer<class_WB4D94959::W2B0723D7> { // PlaceHolder Structure
};

typedef struct map<class_boost::archive::naked_binary_iarchive> map<class_boost::archive::naked_binary_iarchive>, *Pmap<class_boost::archive::naked_binary_iarchive>;

struct map<class_boost::archive::naked_binary_iarchive> { // PlaceHolder Structure
};

typedef struct guid_initializer<class_W76AFA8BF::WA36B9095> guid_initializer<class_W76AFA8BF::WA36B9095>, *Pguid_initializer<class_W76AFA8BF::WA36B9095>;

struct guid_initializer<class_W76AFA8BF::WA36B9095> { // PlaceHolder Structure
};

typedef struct guid_initializer<class_WB4D94959::W1B0A637A> guid_initializer<class_WB4D94959::W1B0A637A>, *Pguid_initializer<class_WB4D94959::W1B0A637A>;

struct guid_initializer<class_WB4D94959::W1B0A637A> { // PlaceHolder Structure
};

typedef struct guid_initializer<class_W76AFA8BF::W727C087E> guid_initializer<class_W76AFA8BF::W727C087E>, *Pguid_initializer<class_W76AFA8BF::W727C087E>;

struct guid_initializer<class_W76AFA8BF::W727C087E> { // PlaceHolder Structure
};

typedef struct guid_initializer<class_W3CA43D38::W9A6A458E> guid_initializer<class_W3CA43D38::W9A6A458E>, *Pguid_initializer<class_W3CA43D38::W9A6A458E>;

struct guid_initializer<class_W3CA43D38::W9A6A458E> { // PlaceHolder Structure
};

typedef struct guid_initializer<class_W3CA43D38::W25643903> guid_initializer<class_W3CA43D38::W25643903>, *Pguid_initializer<class_W3CA43D38::W25643903>;

struct guid_initializer<class_W3CA43D38::W25643903> { // PlaceHolder Structure
};

typedef struct map<class_boost::archive::xml_iarchive> map<class_boost::archive::xml_iarchive>, *Pmap<class_boost::archive::xml_iarchive>;

struct map<class_boost::archive::xml_iarchive> { // PlaceHolder Structure
};

typedef struct guid_initializer<class_W3CA43D38::W1B0F0FDB> guid_initializer<class_W3CA43D38::W1B0F0FDB>, *Pguid_initializer<class_W3CA43D38::W1B0F0FDB>;

struct guid_initializer<class_W3CA43D38::W1B0F0FDB> { // PlaceHolder Structure
};

typedef struct map<class_boost::archive::xml_oarchive> map<class_boost::archive::xml_oarchive>, *Pmap<class_boost::archive::xml_oarchive>;

struct map<class_boost::archive::xml_oarchive> { // PlaceHolder Structure
};

typedef struct map<class_boost::archive::binary_iarchive> map<class_boost::archive::binary_iarchive>, *Pmap<class_boost::archive::binary_iarchive>;

struct map<class_boost::archive::binary_iarchive> { // PlaceHolder Structure
};

typedef struct map<class_boost::archive::naked_xml_iarchive> map<class_boost::archive::naked_xml_iarchive>, *Pmap<class_boost::archive::naked_xml_iarchive>;

struct map<class_boost::archive::naked_xml_iarchive> { // PlaceHolder Structure
};

typedef struct W25643903 W25643903, *PW25643903;

struct W25643903 { // PlaceHolder Structure
};

typedef struct W1B0F0FDB W1B0F0FDB, *PW1B0F0FDB;

struct W1B0F0FDB { // PlaceHolder Structure
};

typedef struct WF45DE894 WF45DE894, *PWF45DE894;

struct WF45DE894 { // PlaceHolder Structure
};

typedef struct W24C1131C W24C1131C, *PW24C1131C;

struct W24C1131C { // PlaceHolder Structure
};

typedef struct W7D89EDB2 W7D89EDB2, *PW7D89EDB2;

struct W7D89EDB2 { // PlaceHolder Structure
};

typedef struct W9A6A458E W9A6A458E, *PW9A6A458E;

struct W9A6A458E { // PlaceHolder Structure
};

typedef struct WB1EE6FBF WB1EE6FBF, *PWB1EE6FBF;

struct WB1EE6FBF { // PlaceHolder Structure
};

typedef struct _LDBL12 _LDBL12, *P_LDBL12;

struct _LDBL12 {
    uchar ld12[12];
};

typedef struct _CRT_FLOAT _CRT_FLOAT, *P_CRT_FLOAT;

struct _CRT_FLOAT {
    float f;
};

typedef struct _CRT_DOUBLE _CRT_DOUBLE, *P_CRT_DOUBLE;

struct _CRT_DOUBLE {
    double x;
};

typedef int (*_onexit_t)(void);

typedef struct HDROP__ HDROP__, *PHDROP__;

struct HDROP__ {
    int unused;
};

typedef struct HDROP__ *HDROP;

typedef struct _SHFILEINFOW _SHFILEINFOW, *P_SHFILEINFOW;

typedef struct _SHFILEINFOW SHFILEINFOW;

struct _SHFILEINFOW {
    HICON hIcon;
    int iIcon;
    DWORD dwAttributes;
    WCHAR szDisplayName[260];
    WCHAR szTypeName[80];
};

typedef struct IUnknown *LPUNKNOWN;

typedef struct _PRINTER_DEFAULTSW _PRINTER_DEFAULTSW, *P_PRINTER_DEFAULTSW;

struct _PRINTER_DEFAULTSW {
    LPWSTR pDatatype;
    LPDEVMODEW pDevMode;
    ACCESS_MASK DesiredAccess;
};

typedef struct _PRINTER_DEFAULTSW *LPPRINTER_DEFAULTSW;




undefined4 * __fastcall FUN_00401000(undefined4 *param_1)

{
  std::exception::exception((exception *)param_1,(char **)&stack0x00000004);
  *param_1 = std::bad_exception::vftable;
  return param_1;
}



undefined4 * __thiscall FUN_00401024(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::bad_exception::vftable;
  exception::~exception((exception *)param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_00401046(undefined4 *param_1)

{
  std::exception::exception((exception *)param_1,(char **)&stack0x00000004);
  *param_1 = std::bad_alloc::vftable;
  return param_1;
}



// Library Function - Single Match
//  public: __thiscall std::bad_alloc::bad_alloc(void)
// 
// Library: Visual Studio 2008 Release

bad_alloc * __thiscall std::bad_alloc::bad_alloc(bad_alloc *this)

{
  exception::exception((exception *)this,&PTR_s_bad_allocation_0324717c,1);
  *(undefined ***)this = vftable;
  return this;
}



void __fastcall FUN_00401078(undefined4 *param_1)

{
  *param_1 = std::bad_alloc::vftable;
  exception::~exception((exception *)param_1);
  return;
}



undefined4 * __thiscall FUN_00401083(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::bad_alloc::vftable;
  exception::~exception((exception *)param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_004010a5(void *param_1,int param_2,void *param_3,int param_4)

{
  _memcpy_s(param_1,param_2 * 2,param_3,param_4 * 2);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned short * __cdecl std::char_traits<unsigned short>::_Copy_s(unsigned short
// *,unsigned int,unsigned short const *,unsigned int)
//  public: static wchar_t * __cdecl std::char_traits<wchar_t>::_Copy_s(wchar_t *,unsigned
// int,wchar_t const *,unsigned int)
// 
// Libraries: Visual Studio 2008 Debug, Visual Studio 2008 Release

undefined4 Copy_s(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_004010a5(param_1,param_2,param_3,param_4);
  return param_1;
}



void * FUN_004010e0(void *param_1,rsize_t param_2,void *param_3,rsize_t param_4)

{
  _memcpy_s(param_1,param_2,param_3,param_4);
  return param_1;
}



// Library Function - Single Match
//  public: static char * __cdecl std::char_traits<char>::_Move_s(char *,unsigned int,char const
// *,unsigned int)
// 
// Libraries: Visual Studio 2008 Debug, Visual Studio 2008 Release

char * __cdecl
std::char_traits<char>::_Move_s(char *param_1,uint param_2,char *param_3,uint param_4)

{
  _memmove_s(param_1,param_2,param_3,param_4);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00401118(undefined4 *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  FUN_00a3f1a9();
  *param_1_00 = std::runtime_error::vftable;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 3),param_1);
  return param_1_00;
}



void __fastcall FUN_0040114d(undefined4 *param_1)

{
  *param_1 = std::runtime_error::vftable;
  FUN_004017b2(1,0);
  exception::~exception((exception *)param_1);
  return;
}



int __fastcall FUN_0040116a(int param_1)

{
  if (0xf < *(uint *)(param_1 + 0x24)) {
    return *(int *)(param_1 + 0x10);
  }
  return param_1 + 0x10;
}



undefined4 __thiscall FUN_00401178(undefined4 param_1,byte param_2)

{
  FUN_0040114d();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Different Base Names
//  public: __thiscall std::logic_error::logic_error(class std::logic_error const &)
//  public: __thiscall std::runtime_error::runtime_error(class std::runtime_error const &)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

undefined4 * __thiscall FID_conflict_runtime_error(undefined4 *param_1_00,exception *param_1)

{
  std::exception::exception((exception *)param_1_00,param_1);
  *param_1_00 = std::runtime_error::vftable;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 3),
             (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0xc));
  return param_1_00;
}



void __fastcall FUN_004011ce(undefined4 *param_1)

{
  *param_1 = boost::exception::vftable;
  FUN_00401874();
  return;
}



void __fastcall FUN_004011dc(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::clone_base::vftable;
  return;
}



undefined4 * __thiscall FUN_004011e3(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::exception_detail::clone_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00401200(int param_1,int param_2)

{
  int iVar1;
  undefined4 *puVar2;
  
  iVar1 = param_2;
  if (*(int **)(param_2 + 4) != (int *)0x0) {
    puVar2 = (undefined4 *)(**(code **)(**(int **)(param_2 + 4) + 0x14))(&param_2);
    FUN_00401636(*puVar2);
    FUN_00401874();
  }
  *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(iVar1 + 0xc);
  *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(iVar1 + 0x10);
  *(undefined4 *)(param_1 + 8) = *(undefined4 *)(iVar1 + 8);
  FUN_00401636(0);
  FUN_00401874();
  return;
}



void __fastcall FUN_00401273(undefined4 *param_1)

{
  *param_1 = boost::detail::sp_counted_base::vftable;
  return;
}



void __fastcall FUN_0040127a(int *param_1)

{
  int iVar1;
  
  LOCK();
  iVar1 = param_1[1] + -1;
  param_1[1] = iVar1;
  UNLOCK();
  if (iVar1 == 0) {
    (**(code **)(*param_1 + 4))();
    LOCK();
    iVar1 = param_1[2] + -1;
    param_1[2] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
                    // WARNING: Could not recover jumptable at 0x004012a1. Too many branches
                    // WARNING: Treating indirect jump as call
      (**(code **)(*param_1 + 8))();
      return;
    }
  }
  return;
}



void __fastcall FUN_004012a6(int *param_1)

{
  if (*param_1 != 0) {
    FUN_0040127a();
    return;
  }
  return;
}



undefined4 __thiscall FUN_004012b2(undefined4 *param_1_00,undefined4 param_1)

{
  (**(code **)(*(int *)param_1_00[1] + 8))(param_1,*param_1_00,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_004012d0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,char *param_3)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x4012dc;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_2c,param_3);
  local_8 = 0;
  FUN_00401118(local_2c);
  FUN_004017b2(1,0);
  param_1_00[10] = param_1;
  *param_1_00 = boost::system::system_error::vftable;
  param_1_00[0xb] = param_2;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 0xc));
  return param_1_00;
}



void __fastcall FUN_00401328(undefined4 *param_1)

{
  *param_1 = boost::system::system_error::vftable;
  FUN_004017b2(1,0);
  FUN_0040114d();
  return;
}



undefined4 __thiscall FUN_00401345(undefined4 param_1,byte param_2)

{
  FUN_00401328();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __fastcall FUN_00401361(int param_1)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this;
  char *pcVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined local_34 [28];
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  if (*(int *)(param_1 + 0x44) == 0) {
    local_8 = 0;
    if (*(uint *)(param_1 + 0x24) < 0x10) {
      pcVar1 = (char *)(param_1 + 0x10);
    }
    else {
      pcVar1 = *(char **)(param_1 + 0x10);
    }
    this = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           (param_1 + 0x30);
    local_18 = param_1;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (this,pcVar1);
    if (*(int *)(param_1 + 0x44) != 0) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (this,": ");
    }
    pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_004012b2(local_34);
    local_8 = CONCAT31(local_8._1_3_,1);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (this,pbVar2,0,0xffffffff);
    FUN_004017b2(1,0);
  }
  if (*(uint *)(param_1 + 0x48) < 0x10) {
    param_1 = param_1 + 0x34;
  }
  else {
    param_1 = *(int *)(param_1 + 0x34);
  }
  return param_1;
}



undefined * Catch_All_004013d7(void)

{
  int iVar1;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + -0x14);
  if (*(uint *)(iVar1 + 0x24) < 0x10) {
    iVar1 = iVar1 + 0x10;
  }
  else {
    iVar1 = *(int *)(iVar1 + 0x10);
  }
  *(int *)(unaff_EBP + -0x14) = iVar1;
  return &DAT_004013f1;
}



undefined4 * __thiscall FUN_004013ff(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = FUN_008288a0();
  FUN_004012d0(param_1,uVar1,param_2);
  *param_1_00 = boost::thread_exception::vftable;
  return param_1_00;
}



undefined4 * __fastcall FUN_00401426(undefined4 *param_1)

{
  FUN_004013ff(0xb,"boost::thread_resource_error");
  *param_1 = boost::thread_resource_error::vftable;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0040143f(BOOL param_1,BOOL param_2)

{
  HANDLE pvVar1;
  undefined4 uVar2;
  
  pvVar1 = CreateEventA((LPSECURITY_ATTRIBUTES)0x0,param_1,param_2,(LPCSTR)0x0);
  if (pvVar1 == (HANDLE)0x0) {
    uVar2 = FUN_00401426();
    FUN_00401bd4(uVar2);
  }
  return;
}



void __fastcall FUN_00401477(uint *param_1)

{
  uint uVar1;
  HANDLE hEvent;
  
  LOCK();
  uVar1 = *param_1;
  *param_1 = *param_1 + 0x80000000;
  UNLOCK();
  if (((uVar1 & 0x40000000) == 0) && (-0x80000000 < (int)uVar1)) {
    LOCK();
    uVar1 = *param_1;
    *param_1 = *param_1 | 0x40000000;
    UNLOCK();
    if ((uVar1 >> 0x1e & 1) == 0) {
      hEvent = (HANDLE)FUN_004014a7();
      SetEvent(hEvent);
    }
  }
  return;
}



HANDLE __fastcall FUN_004014a7(int param_1)

{
  HANDLE *ppvVar1;
  HANDLE hObject;
  HANDLE pvVar2;
  
  ppvVar1 = (HANDLE *)(param_1 + 4);
  hObject = *ppvVar1;
  if (hObject == (HANDLE)0x0) {
    hObject = (HANDLE)FUN_0040143f(0,0);
    LOCK();
    pvVar2 = *ppvVar1;
    if (pvVar2 == (HANDLE)0x0) {
      *ppvVar1 = hObject;
      pvVar2 = (HANDLE)0x0;
    }
    UNLOCK();
    if (pvVar2 != (HANDLE)0x0) {
      CloseHandle(hObject);
      return pvVar2;
    }
  }
  return hObject;
}



void __fastcall FUN_004014d9(undefined4 *param_1)

{
  undefined4 *this;
  
  this = param_1 + 5;
  *param_1 = boost::exception_detail::bad_alloc_::vftable;
  *this = boost::exception_detail::bad_alloc_::vftable;
  *this = std::bad_alloc::vftable;
  exception::~exception((exception *)this);
  *param_1 = boost::exception::vftable;
  FUN_00401874();
  return;
}



undefined4 __thiscall FUN_00401505(undefined4 param_1,byte param_2)

{
  FUN_004014d9();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_00401521(undefined4 *param_1)

{
  undefined4 *this;
  
  this = param_1 + 5;
  *param_1 = boost::exception_detail::bad_exception_::vftable;
  *this = boost::exception_detail::bad_exception_::vftable;
  *this = std::bad_exception::vftable;
  exception::~exception((exception *)this);
  *param_1 = boost::exception::vftable;
  FUN_00401874();
  return;
}



undefined4 __thiscall FUN_0040154d(undefined4 param_1,byte param_2)

{
  FUN_00401521();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 * __thiscall FUN_00401569(undefined4 *param_1_00,int param_1)

{
  *param_1_00 = boost::exception::vftable;
  FUN_0040161c(param_1 + 4);
  param_1_00[2] = *(undefined4 *)(param_1 + 8);
  param_1_00[3] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[4] = *(undefined4 *)(param_1 + 0x10);
  return param_1_00;
}



void __fastcall FUN_0040159c(int param_1)

{
  _free(*(void **)(param_1 + 0x1c));
  FUN_00401829(1,0);
  return;
}



// Library Function - Single Match
//  public: __thiscall std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >(void)
// 
// Library: Visual Studio 2008 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this)

{
  *(undefined4 *)(this + 0x18) = 0xf;
  _Eos(this,0);
  return this;
}



// Library Function - Single Match
//  public: __thiscall std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >(char const *)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          char *param_1)

{
  *(undefined4 *)(this + 0x18) = 0xf;
  _Eos(this,0);
  assign(this,param_1);
  return this;
}



// Library Function - Single Match
//  public: __thiscall std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> > const &)
// 
// Library: Visual Studio 2008 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  *(undefined4 *)(this + 0x18) = 0xf;
  _Eos(this,0);
  assign(this,param_1,0,0xffffffff);
  return this;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          char *param_1)

{
  char cVar1;
  char *pcVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  
  pcVar2 = param_1;
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  pbVar3 = assign(this,param_1,(int)pcVar2 - (int)(param_1 + 1));
  return pbVar3;
}



void thunk_FUN_00401874(void)

{
  FUN_00401874();
  return;
}



int ** __thiscall FUN_0040161c(int **param_1_00,int **param_1)

{
  int *piVar1;
  
  piVar1 = *param_1;
  *param_1_00 = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 0xc))();
  }
  return param_1_00;
}



void __thiscall FUN_00401636(int **param_1_00,int *param_1)

{
  FUN_00401874();
  *param_1_00 = param_1;
  if (param_1 != (int *)0x0) {
    (**(code **)(*param_1 + 0xc))();
  }
  return;
}



void __fastcall FUN_00401651(int param_1)

{
  if (*(char *)(param_1 + 4) != '\0') {
    FUN_00401477();
    return;
  }
  return;
}



void __fastcall FUN_0040165f(void **param_1)

{
  _free(*param_1);
  return;
}



// Library Function - Single Match
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>
// >::assign(char const *)
// 
// Libraries: Visual Studio 2005 Debug, Visual Studio 2005 Release, Visual Studio 2008 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          char *param_1)

{
  char cVar1;
  char *pcVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  
  pcVar2 = param_1;
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  pbVar3 = append(this,param_1,(int)pcVar2 - (int)(param_1 + 1));
  return pbVar3;
}



// Library Function - Single Match
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>
// >::assign(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// const &,unsigned int,unsigned int)
// 
// Library: Visual Studio 2008 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
          uint param_2,uint param_3)

{
  bool bVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  uint uVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar4;
  
  if (*(uint *)(param_1 + 0x14) < param_2) {
    _String_base::_Xran();
  }
  uVar3 = *(int *)(param_1 + 0x14) - param_2;
  if (param_3 < *(int *)(param_1 + 0x14) - param_2) {
    uVar3 = param_3;
  }
  if (this == param_1) {
    erase(this,uVar3 + param_2,0xffffffff);
    erase(this,0,param_2);
  }
  else {
    bVar1 = _Grow(this,uVar3,false);
    if (bVar1) {
      if (*(uint *)(param_1 + 0x18) < 0x10) {
        pbVar4 = param_1 + 4;
      }
      else {
        pbVar4 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                  (param_1 + 4);
      }
      if (*(uint *)(this + 0x18) < 0x10) {
        pbVar2 = this + 4;
      }
      else {
        pbVar2 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                  (this + 4);
      }
      FUN_004010e0(pbVar2,*(uint *)(this + 0x18),pbVar4 + param_2,uVar3);
      _Eos(this,uVar3);
    }
  }
  return this;
}



// Library Function - Single Match
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>
// >::assign(char const *,unsigned int)
// 
// Library: Visual Studio 2008 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          char *param_1,uint param_2)

{
  bool bVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  
  bVar1 = _Inside(this,param_1);
  if (bVar1) {
    if (*(uint *)(this + 0x18) < 0x10) {
      pbVar2 = this + 4;
    }
    else {
      pbVar2 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                (this + 4);
    }
    this = assign(this,this,(int)param_1 - (int)pbVar2,param_2);
  }
  else {
    bVar1 = _Grow(this,param_2,false);
    if (bVar1) {
      if (*(uint *)(this + 0x18) < 0x10) {
        pbVar2 = this + 4;
      }
      else {
        pbVar2 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                  (this + 4);
      }
      FUN_004010e0(pbVar2,*(uint *)(this + 0x18),param_1,param_2);
      _Eos(this,param_2);
    }
  }
  return this;
}



// Library Function - Single Match
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>
// >::assign(char const *)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          char *param_1)

{
  char cVar1;
  char *pcVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  
  pcVar2 = param_1;
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  pbVar3 = assign(this,param_1,(int)pcVar2 - (int)(param_1 + 1));
  return pbVar3;
}



void __thiscall
FUN_004017b2(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,char param_1,uint param_2)

{
  undefined4 uVar1;
  
  if ((param_1 != '\0') && (0xf < *(uint *)(param_1_00 + 0x18))) {
    uVar1 = *(undefined4 *)(param_1_00 + 4);
    if (param_2 != 0) {
      FUN_004010e0(param_1_00 + 4,0x10,uVar1,param_2);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uVar1);
  }
  *(undefined4 *)(param_1_00 + 0x18) = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (param_1_00,param_2);
  return;
}



int __fastcall FUN_004017fd(int param_1)

{
  if (0xf < *(uint *)(param_1 + 0x18)) {
    return *(int *)(param_1 + 4);
  }
  return param_1 + 4;
}



void __thiscall FUN_0040180b(int param_1_00,int param_1)

{
  *(int *)(param_1_00 + 0x14) = param_1;
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    param_1_00 = param_1_00 + 4;
  }
  else {
    param_1_00 = *(int *)(param_1_00 + 4);
  }
  *(undefined2 *)(param_1_00 + param_1 * 2) = 0;
  return;
}



void __thiscall FUN_00401829(int param_1_00,char param_1,int param_2)

{
  undefined4 uVar1;
  
  if ((param_1 != '\0') && (7 < *(uint *)(param_1_00 + 0x18))) {
    uVar1 = *(undefined4 *)(param_1_00 + 4);
    if (param_2 != 0) {
      Copy_s((undefined4 *)(param_1_00 + 4),8,uVar1,param_2);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uVar1);
  }
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  FUN_0040180b(param_2);
  return;
}



void __fastcall FUN_00401874(int **param_1)

{
  char cVar1;
  
  if (*param_1 != (int *)0x0) {
    cVar1 = (**(code **)(**param_1 + 0x10))();
    if (cVar1 != '\0') {
      *param_1 = (int *)0x0;
    }
  }
  return;
}



// Library Function - Single Match
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>
// >::append(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// const &,unsigned int,unsigned int)
// 
// Library: Visual Studio 2008 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
          uint param_2,uint param_3)

{
  int iVar1;
  bool bVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar4;
  
  if (*(uint *)(param_1 + 0x14) < param_2) {
    _String_base::_Xran();
  }
  if (*(int *)(param_1 + 0x14) - param_2 < param_3) {
    param_3 = *(int *)(param_1 + 0x14) - param_2;
  }
  if ((-*(int *)(this + 0x14) - 1U <= param_3) ||
     (*(uint *)(this + 0x14) + param_3 < *(uint *)(this + 0x14))) {
    _String_base::_Xlen();
  }
  if (param_3 != 0) {
    iVar1 = *(int *)(this + 0x14);
    bVar2 = _Grow(this,iVar1 + param_3,false);
    if (bVar2) {
      if (*(uint *)(param_1 + 0x18) < 0x10) {
        pbVar4 = param_1 + 4;
      }
      else {
        pbVar4 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                  (param_1 + 4);
      }
      if (*(uint *)(this + 0x18) < 0x10) {
        pbVar3 = this + 4;
      }
      else {
        pbVar3 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                  (this + 4);
      }
      FUN_004010e0(pbVar3 + *(int *)(this + 0x14),*(uint *)(this + 0x18) - *(int *)(this + 0x14),
                   pbVar4 + param_2,param_3);
      _Eos(this,iVar1 + param_3);
    }
  }
  return this;
}



// Library Function - Single Match
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>
// >::append(char const *,unsigned int)
// 
// Library: Visual Studio 2008 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          char *param_1,uint param_2)

{
  int iVar1;
  bool bVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  
  bVar2 = _Inside(this,param_1);
  if (bVar2) {
    if (*(uint *)(this + 0x18) < 0x10) {
      pbVar3 = this + 4;
    }
    else {
      pbVar3 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                (this + 4);
    }
    this = append(this,this,(int)param_1 - (int)pbVar3,param_2);
  }
  else {
    if ((-*(int *)(this + 0x14) - 1U <= param_2) ||
       (*(uint *)(this + 0x14) + param_2 < *(uint *)(this + 0x14))) {
      _String_base::_Xlen();
    }
    if (param_2 != 0) {
      iVar1 = *(int *)(this + 0x14);
      bVar2 = _Grow(this,iVar1 + param_2,false);
      if (bVar2) {
        if (*(uint *)(this + 0x18) < 0x10) {
          pbVar3 = this + 4;
        }
        else {
          pbVar3 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **
                    )(this + 4);
        }
        FUN_004010e0(pbVar3 + *(int *)(this + 0x14),*(uint *)(this + 0x18) - *(int *)(this + 0x14),
                     param_1,param_2);
        _Eos(this,iVar1 + param_2);
      }
    }
  }
  return this;
}



// Library Function - Single Match
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>
// >::erase(unsigned int,unsigned int)
// 
// Library: Visual Studio 2008 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          uint param_1,uint param_2)

{
  undefined4 *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  
  if (*(uint *)(this + 0x14) < param_1) {
    _String_base::_Xran();
  }
  uVar2 = *(int *)(this + 0x14) - param_1;
  if (uVar2 < param_2) {
    param_2 = uVar2;
  }
  if (param_2 != 0) {
    puVar3 = (undefined4 *)(this + 4);
    puVar1 = puVar3;
    if (0xf < *(uint *)(this + 0x18)) {
      puVar1 = (undefined4 *)*puVar3;
      puVar3 = (undefined4 *)*puVar3;
    }
    char_traits<char>::_Move_s
              ((char *)((int)puVar3 + param_1),*(uint *)(this + 0x18) - param_1,
               (char *)((int)puVar1 + param_2 + param_1),uVar2 - param_2);
    _Eos(this,*(int *)(this + 0x14) - param_2);
  }
  return this;
}



// Library Function - Single Match
//  protected: void __thiscall std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >::_Eos(unsigned int)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release, Visual Studio 2008 Release

void __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          uint param_1)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  
  *(uint *)(this + 0x14) = param_1;
  if (*(uint *)(this + 0x18) < 0x10) {
    pbVar1 = this + 4;
  }
  else {
    pbVar1 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
              (this + 4);
  }
  pbVar1[param_1] =
       (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  return;
}



// Library Function - Single Match
//  protected: bool __thiscall std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >::_Grow(unsigned int,bool)
// 
// Library: Visual Studio 2008 Release

bool __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Grow
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          uint param_1,bool param_2)

{
  uint uVar1;
  
  if (param_1 == 0xffffffff) {
    _String_base::_Xlen();
  }
  if (*(uint *)(this + 0x18) < param_1) {
    FUN_00401af2(param_1,*(undefined4 *)(this + 0x14));
  }
  else if ((param_2) && (param_1 < 0x10)) {
    uVar1 = *(uint *)(this + 0x14);
    if (param_1 < *(uint *)(this + 0x14)) {
      uVar1 = param_1;
    }
    FUN_004017b2(1,uVar1);
  }
  else if (param_1 == 0) {
    _Eos(this,0);
  }
  return param_1 != 0;
}



// Library Function - Single Match
//  protected: bool __thiscall std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >::_Inside(char const *)
// 
// Library: Visual Studio 2008 Release

bool __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Inside
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          char *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  if (param_1 != (char *)0x0) {
    puVar1 = (undefined4 *)(this + 4);
    puVar2 = puVar1;
    if (0xf < *(uint *)(this + 0x18)) {
      puVar2 = (undefined4 *)*puVar1;
    }
    if (puVar2 <= param_1) {
      if (0xf < *(uint *)(this + 0x18)) {
        puVar1 = (undefined4 *)*puVar1;
      }
      if (param_1 < (char *)(*(int *)(this + 0x14) + (int)puVar1)) {
        return true;
      }
    }
  }
  return false;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __thiscall FUN_00401af2(int param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  uVar3 = param_1 | 0xf;
  if (uVar3 != 0xffffffff) {
    uVar1 = *(uint *)(param_1_00 + 0x18);
    uVar2 = uVar1 >> 1;
    param_1 = uVar3;
    if ((uVar3 / 3 < uVar2) && (uVar1 <= -uVar2 - 2)) {
      param_1 = uVar2 + uVar1;
    }
  }
  std::_Allocate<char>(param_1 + 1,(char *)0x0);
  FUN_00401b77();
  return;
}



undefined * Catch_All_00401b4d(void)

{
  int iVar1;
  char *pcVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  *(BADSPACEBASE **)(unaff_EBP + -0x10) = register0x00000010;
  *(int *)(unaff_EBP + 8) = iVar1;
  *(undefined *)(unaff_EBP + -4) = 2;
  pcVar2 = std::_Allocate<char>(iVar1 + 1,(char *)0x0);
  *(char **)(unaff_EBP + -0x14) = pcVar2;
  return &DAT_00401b6e;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00401b77(void)

{
  uint uVar1;
  undefined4 unaff_EBX;
  int unaff_EBP;
  undefined4 unaff_ESI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_EDI;
  
  if (*(int *)(unaff_EBP + 0xc) != 0) {
    FUN_004010e0();
  }
  FUN_004017b2(1,0);
  uVar1 = *(uint *)(unaff_EBP + 0xc);
  *(undefined4 *)(unaff_EDI + 4) = unaff_EBX;
  *(undefined4 *)(unaff_EDI + 0x18) = unaff_ESI;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (unaff_EDI,uVar1);
  return;
}



void Catch_All_00401bbf(void)

{
  code *pcVar1;
  
  FUN_004017b2(1,0);
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00401bd4(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_e0 [96];
  undefined local_80 [120];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xd0;
  local_8 = 0x401be3;
  uVar2 = FUN_00401f62(local_e0,param_1);
  local_8 = 0;
  FUN_00401f7a(local_80,uVar2);
  __CxxThrowException_8(local_80,&DAT_03115334);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// Library Function - Single Match
//  char * __cdecl std::_Allocate<char>(unsigned int,char *)
// 
// Library: Visual Studio 2005 Release

char * __cdecl std::_Allocate<char>(uint param_1,char *param_2)

{
  code *pcVar1;
  char *pcVar2;
  uint uVar3;
  undefined **local_10 [3];
  
  if (param_1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = param_1;
    if ((int)(0xffffffff / (ulonglong)param_1) == 0) {
      param_1 = 0;
      exception::exception((exception *)local_10,(char **)&param_1);
      local_10[0] = bad_alloc::vftable;
      __CxxThrowException_8(local_10,&DAT_031153a4);
      pcVar1 = (code *)swi(3);
      pcVar2 = (char *)(*pcVar1)();
      return pcVar2;
    }
  }
  pcVar2 = (char *)operator_new(uVar3);
  return pcVar2;
}



void __fastcall FUN_00401c67(int param_1)

{
  FUN_00401e27();
  *(undefined ***)(param_1 + 0x68) = boost::exception_detail::clone_base::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >(class
// boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class
// std::domain_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::evaluation_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::rounding_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error> > const &)
// 
// Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release

undefined4 * __thiscall clone_impl<>(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0x18] = &DAT_00fac8dc;
    param_1_00[0x1a] = boost::exception_detail::clone_base::vftable;
  }
  FUN_00401ce6(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::thread_resource_error>_>
                ::vftable;
  param_1_00[0x13] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::thread_resource_error>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x18] + 4) + 0x60 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::thread_resource_error>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0x18] + 4) + 0x5c + (int)param_1_00) = 0;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00401ce6(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FUN_00401d2d(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0x4c;
  }
  FUN_00401569(iVar1);
  *param_1_00 = boost::exception_detail::error_info_injector<class_boost::thread_resource_error>::
                vftable;
  param_1_00[0x13] =
       boost::exception_detail::error_info_injector<class_boost::thread_resource_error>::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_00401d2d(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00401d45(param_1);
  *param_1_00 = boost::thread_resource_error::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_00401d45(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00401d5d(param_1);
  *param_1_00 = boost::thread_exception::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00401d5d(undefined4 *param_1_00,int param_1)

{
  FID_conflict_runtime_error(param_1);
  *param_1_00 = boost::system::system_error::vftable;
  param_1_00[10] = *(undefined4 *)(param_1 + 0x28);
  param_1_00[0xb] = *(undefined4 *)(param_1 + 0x2c);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 0xc),
             (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0x30));
  return param_1_00;
}



undefined4 * __thiscall FUN_00401da3(undefined4 *param_1_00,exception *param_1)

{
  std::exception::exception((exception *)param_1_00,param_1);
  *param_1_00 = std::bad_alloc::vftable;
  return param_1_00;
}



int __thiscall FUN_00401dbb(int param_1,byte param_2)

{
  FUN_00401e27();
  *(undefined ***)(param_1 + 0x68) = boost::exception_detail::clone_base::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_00401dde(undefined4 param_1,byte param_2)

{
  FUN_00401dfa();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_00401dfa(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::error_info_injector<class_boost::thread_resource_error>::
             vftable;
  param_1[0x13] =
       boost::exception_detail::error_info_injector<class_boost::thread_resource_error>::vftable;
  param_1[0x13] = boost::exception::vftable;
  FUN_00401874();
  *param_1 = boost::thread_exception::vftable;
  FUN_00401328();
  return;
}



void __fastcall FUN_00401e27(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::thread_resource_error>_>
             ::vftable;
  param_1[0x13] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::thread_resource_error>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1[0x18] + 4) + 0x60 + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::thread_resource_error>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0x18] + 4) + 0x5c + (int)param_1) = *(int *)(param_1[0x18] + 4) + -8;
  FUN_00401dfa();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __fastcall FUN_00401e54(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  
  pvVar1 = operator_new(0x6c);
  iVar2 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00401eda(param_1 + -0x68,local_14,1);
  }
  if (iVar2 != 0) {
    iVar2 = *(int *)(*(int *)(iVar2 + 0x60) + 4) + 0x60 + iVar2;
  }
  return iVar2;
}



void __fastcall FUN_00401e9f(int param_1)

{
  code *pcVar1;
  undefined local_70 [108];
  
  clone_impl<>(param_1 + -0x68,1);
  __CxxThrowException_8(local_70,&DAT_03115334);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_00401ec2(undefined4 *param_1_00,exception *param_1)

{
  std::exception::exception((exception *)param_1_00,param_1);
  *param_1_00 = std::bad_exception::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00401eda(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  if (param_3 != 0) {
    param_1_00[0x18] = &DAT_00fac8dc;
    param_1_00[0x1a] = boost::exception_detail::clone_base::vftable;
  }
  FUN_00401ce6(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::thread_resource_error>_>
                ::vftable;
  param_1_00[0x13] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::thread_resource_error>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x18] + 4) + 0x60 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::thread_resource_error>_>
       ::vftable;
  *(int *)(*(int *)(param_1_00[0x18] + 4) + 0x5c + (int)param_1_00) =
       *(int *)(param_1_00[0x18] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x4c;
  }
  FUN_00401200(param_1_00 + 0x13,param_1);
  return param_1_00;
}



undefined4 FUN_00401f62(undefined4 param_1,undefined4 param_2)

{
  FUN_0040237d(param_2);
  return param_1;
}



undefined4 FUN_00401f7a(undefined4 param_1,undefined4 param_2)

{
  FUN_004023b2(param_2,1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00401f94(undefined4 param_1)

{
  undefined4 uVar1;
  undefined local_68 [8];
  char *local_60;
  char *local_5c;
  undefined4 local_58;
  undefined **local_40;
  undefined local_3c [36];
  int local_18;
  void *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x58;
  local_8 = 0x401fa0;
  local_14 = (void *)0x0;
  FUN_0040213e();
  local_8 = 0;
  FUN_0040243a(local_3c,1);
  local_8 = CONCAT31(local_8._1_3_,1);
  local_60 = 
  "class boost::exception_ptr __cdecl boost::exception_detail::get_static_exception_object<struct boost::exception_detail::bad_alloc_>(void)"
  ;
  local_5c = "D:\\boost_1_53_0\\boost/exception/detail/exception_ptr.hpp";
  local_58 = 0x7c;
  if ((DAT_032edff4 & 1) == 0) {
    DAT_032edff4 = DAT_032edff4 | 1;
    local_8._0_1_ = 2;
    local_14 = operator_new(0x2c);
    local_8._0_1_ = 3;
    if (local_14 == (void *)0x0) {
      uVar1 = 0;
    }
    else {
      uVar1 = clone_impl<>(local_68,1);
    }
    local_8 = CONCAT31(local_8._1_3_,2);
    uVar1 = FUN_00402760(uVar1);
    FUN_00439f9e(uVar1);
    if (local_18 != 0) {
      FUN_0040127a();
    }
    _atexit(FUN_00c73c30);
  }
  FUN_00439f9e(&DAT_032edfec);
  FUN_004024b6();
  local_40 = boost::exception_detail::clone_base::vftable;
  FUN_004014d9();
  return param_1;
}



undefined4 * __fastcall FUN_0040213e(undefined4 *param_1)

{
  *param_1 = boost::exception::vftable;
  param_1[1] = 0;
  param_1[4] = 0xffffffff;
  param_1[2] = 0;
  param_1[3] = 0;
  std::bad_alloc::bad_alloc((bad_alloc *)(param_1 + 5));
  param_1[5] = boost::exception_detail::bad_alloc_::vftable;
  *param_1 = boost::exception_detail::bad_alloc_::vftable;
  return param_1;
}



void __fastcall FUN_00402172(int param_1)

{
  FUN_004024b6();
  *(undefined ***)(param_1 + 0x28) = boost::exception_detail::clone_base::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >(class
// boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class
// std::domain_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::evaluation_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::rounding_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error> > const &)
// 
// Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release

undefined4 * __thiscall clone_impl<>(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[8] = &DAT_00fafc20;
    param_1_00[10] = boost::exception_detail::clone_base::vftable;
  }
  FUN_004022cc(param_1);
  *param_1_00 = boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_alloc_>::
                vftable;
  param_1_00[5] =
       boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_alloc_>::vftable;
  *(undefined ***)(*(int *)(param_1_00[8] + 4) + 0x20 + (int)param_1_00) =
       boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_alloc_>::vftable;
  *(undefined4 *)(*(int *)(param_1_00[8] + 4) + 0x1c + (int)param_1_00) = 0;
  return param_1_00;
}



undefined4 * __fastcall FUN_004021f1(undefined4 *param_1)

{
  *param_1 = boost::exception::vftable;
  param_1[1] = 0;
  param_1[4] = 0xffffffff;
  param_1[2] = 0;
  param_1[3] = 0;
  FUN_00401000("bad exception");
  param_1[5] = boost::exception_detail::bad_exception_::vftable;
  *param_1 = boost::exception_detail::bad_exception_::vftable;
  return param_1;
}



void __fastcall FUN_0040222a(int param_1)

{
  FUN_004025cd();
  *(undefined ***)(param_1 + 0x28) = boost::exception_detail::clone_base::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >(class
// boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class
// std::domain_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::evaluation_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::rounding_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error> > const &)
// 
// Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release

undefined4 * __thiscall clone_impl<>(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[8] = &DAT_00fafc20;
    param_1_00[10] = boost::exception_detail::clone_base::vftable;
  }
  FUN_00402336(param_1);
  *param_1_00 = boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_exception_>
                ::vftable;
  param_1_00[5] =
       boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_exception_>::vftable;
  *(undefined ***)(*(int *)(param_1_00[8] + 4) + 0x20 + (int)param_1_00) =
       boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_exception_>::vftable;
  *(undefined4 *)(*(int *)(param_1_00[8] + 4) + 0x1c + (int)param_1_00) = 0;
  return param_1_00;
}



int __thiscall FUN_004022a9(int param_1,byte param_2)

{
  FUN_004024b6();
  *(undefined ***)(param_1 + 0x28) = boost::exception_detail::clone_base::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004022cc(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FUN_00401569(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0x14;
  }
  FUN_00401da3(iVar1);
  *param_1_00 = boost::exception_detail::bad_alloc_::vftable;
  param_1_00[5] = boost::exception_detail::bad_alloc_::vftable;
  return param_1_00;
}



int __thiscall FUN_00402313(int param_1,byte param_2)

{
  FUN_004025cd();
  *(undefined ***)(param_1 + 0x28) = boost::exception_detail::clone_base::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00402336(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FUN_00401569(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0x14;
  }
  FUN_00401ec2(iVar1);
  *param_1_00 = boost::exception_detail::bad_exception_::vftable;
  param_1_00[5] = boost::exception_detail::bad_exception_::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_0040237d(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00401d2d(param_1);
  param_1_00[0x13] = boost::exception::vftable;
  param_1_00[0x14] = 0;
  param_1_00[0x17] = 0xffffffff;
  param_1_00[0x15] = 0;
  param_1_00[0x16] = 0;
  *param_1_00 = boost::exception_detail::error_info_injector<class_boost::thread_resource_error>::
                vftable;
  param_1_00[0x13] =
       boost::exception_detail::error_info_injector<class_boost::thread_resource_error>::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004023b2(undefined4 *param_1_00,int param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0x18] = &DAT_00fac8dc;
    param_1_00[0x1a] = boost::exception_detail::clone_base::vftable;
  }
  FUN_00401ce6(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::thread_resource_error>_>
                ::vftable;
  param_1_00[0x13] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::thread_resource_error>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x18] + 4) + 0x60 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::thread_resource_error>_>
       ::vftable;
  *(int *)(*(int *)(param_1_00[0x18] + 4) + 0x5c + (int)param_1_00) =
       *(int *)(param_1_00[0x18] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x4c;
  }
  FUN_00401200(param_1_00 + 0x13,param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0040243a(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[8] = &DAT_00fafc20;
    param_1_00[10] = boost::exception_detail::clone_base::vftable;
  }
  FUN_004022cc(param_1);
  *param_1_00 = boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_alloc_>::
                vftable;
  param_1_00[5] =
       boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_alloc_>::vftable;
  *(undefined ***)(*(int *)(param_1_00[8] + 4) + 0x20 + (int)param_1_00) =
       boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_alloc_>::vftable;
  *(int *)(*(int *)(param_1_00[8] + 4) + 0x1c + (int)param_1_00) = *(int *)(param_1_00[8] + 4) + -8;
  FUN_00401200(param_1_00,param_1);
  return param_1_00;
}



void __fastcall FUN_004024b6(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_alloc_>::
             vftable;
  param_1[5] = boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_alloc_>::
               vftable;
  *(undefined ***)(*(int *)(param_1[8] + 4) + 0x20 + (int)param_1) =
       boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_alloc_>::vftable;
  *(int *)(*(int *)(param_1[8] + 4) + 0x1c + (int)param_1) = *(int *)(param_1[8] + 4) + -8;
  FUN_004014d9();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __fastcall FUN_004024e3(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  
  pvVar1 = operator_new(0x2c);
  iVar2 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00402668(param_1 + -0x28,local_14,1);
  }
  if (iVar2 != 0) {
    iVar2 = *(int *)(*(int *)(iVar2 + 0x20) + 4) + 0x20 + iVar2;
  }
  return iVar2;
}



void __fastcall FUN_0040252e(int param_1)

{
  code *pcVar1;
  undefined local_30 [44];
  
  clone_impl<>(param_1 + -0x28,1);
  __CxxThrowException_8(local_30,&DAT_03115424);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_004025cd(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_exception_>::
             vftable;
  param_1[5] = boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_exception_>::
               vftable;
  *(undefined ***)(*(int *)(param_1[8] + 4) + 0x20 + (int)param_1) =
       boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_exception_>::vftable;
  *(int *)(*(int *)(param_1[8] + 4) + 0x1c + (int)param_1) = *(int *)(param_1[8] + 4) + -8;
  FUN_00401521();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __fastcall FUN_004025fa(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  
  pvVar1 = operator_new(0x2c);
  iVar2 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_004026e4(param_1 + -0x28,local_14,1);
  }
  if (iVar2 != 0) {
    iVar2 = *(int *)(*(int *)(iVar2 + 0x20) + 4) + 0x20 + iVar2;
  }
  return iVar2;
}



void __fastcall FUN_00402645(int param_1)

{
  code *pcVar1;
  undefined local_30 [44];
  
  clone_impl<>(param_1 + -0x28,1);
  __CxxThrowException_8(local_30,&DAT_031154a4);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00402668(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  if (param_3 != 0) {
    param_1_00[8] = &DAT_00fafc20;
    param_1_00[10] = boost::exception_detail::clone_base::vftable;
  }
  FUN_004022cc(param_1);
  *param_1_00 = boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_alloc_>::
                vftable;
  param_1_00[5] =
       boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_alloc_>::vftable;
  *(undefined ***)(*(int *)(param_1_00[8] + 4) + 0x20 + (int)param_1_00) =
       boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_alloc_>::vftable;
  *(int *)(*(int *)(param_1_00[8] + 4) + 0x1c + (int)param_1_00) = *(int *)(param_1_00[8] + 4) + -8;
  FUN_00401200(param_1_00,param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_004026e4(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  if (param_3 != 0) {
    param_1_00[8] = &DAT_00fafc20;
    param_1_00[10] = boost::exception_detail::clone_base::vftable;
  }
  FUN_00402336(param_1);
  *param_1_00 = boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_exception_>
                ::vftable;
  param_1_00[5] =
       boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_exception_>::vftable;
  *(undefined ***)(*(int *)(param_1_00[8] + 4) + 0x20 + (int)param_1_00) =
       boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_exception_>::vftable;
  *(int *)(*(int *)(param_1_00[8] + 4) + 0x1c + (int)param_1_00) = *(int *)(param_1_00[8] + 4) + -8;
  FUN_00401200(param_1_00,param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_00402760(int *param_1_00,int param_1)

{
  int iVar1;
  
  if (param_1 == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = *(int *)(*(int *)(param_1 + 0x20) + 4) + 0x20 + param_1;
  }
  *param_1_00 = iVar1;
  param_1_00[1] = 0;
  FUN_004027ee(param_1_00,param_1,param_1_00 + 1);
  return param_1_00;
}



void __thiscall
FUN_004027ee(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)FUN_00402864(param_2);
  uVar1 = *param_3;
  *param_3 = *puVar2;
  *puVar2 = uVar1;
  if (param_1_00 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,param_2,param_2);
  return;
}



void __thiscall
FUN_00402829(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)FUN_004028c1(param_2);
  uVar1 = *param_3;
  *param_3 = *puVar2;
  *puVar2 = uVar1;
  if (param_1_00 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,param_2,param_2);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00402864(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_alloc_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004028aa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004028c1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::exception_detail::clone_impl<struct_boost::exception_detail::bad_exception_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00402907(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0040291e(void)

{
  FUN_00401dde();
  return;
}



void FUN_00402926(void)

{
  FUN_00401e9f();
  return;
}



void FUN_0040292e(void)

{
  FUN_00401dbb();
  return;
}



void FUN_00402936(void)

{
  FUN_00402313();
  return;
}



void FUN_00402941(void)

{
  FUN_004024e3();
  return;
}



void FUN_00402949(void)

{
  FUN_0040154d();
  return;
}



void FUN_00402951(void)

{
  FUN_00401505();
  return;
}



void FUN_00402959(void)

{
  FUN_00402645();
  return;
}



void FUN_00402961(void)

{
  FUN_004022a9();
  return;
}



void FUN_0040296c(void)

{
  FUN_00402313();
  return;
}



void FUN_00402974(void)

{
  FUN_00401e54();
  return;
}



void FUN_0040297c(void)

{
  FUN_0040252e();
  return;
}



void FUN_00402984(void)

{
  FUN_004022a9();
  return;
}



void FUN_0040298c(void)

{
  FUN_004025fa();
  return;
}



void FUN_00402994(void)

{
  FUN_00401dbb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00402a40(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0xb4);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00402f60();
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0040e9ef(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



void FUN_00402aa9(undefined4 *param_1)

{
  *param_1 = 0xa0c;
  return;
}



undefined4 __thiscall FUN_00402ab6(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402aee(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402b26(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402b5e(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402b96(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402bce(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402c06(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402c3e(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402c76(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402cae(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402ce6(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402d1e(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402d56(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402d8e(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402dc6(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402dfe(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402e39(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402e74(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402eaf(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402eea(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00402f25(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



void FUN_00402f60(void)

{
  undefined4 *in_EAX;
  
  in_EAX[1] = 0;
  in_EAX[2] = 0;
  *in_EAX = WAC38D41E::W0B27B7B3::vftable;
  in_EAX[3] = 0;
  in_EAX[4] = 0;
  in_EAX[5] = 0;
  in_EAX[6] = 0;
  in_EAX[7] = 0;
  in_EAX[8] = 0;
  in_EAX[9] = 0;
  in_EAX[10] = 0;
  in_EAX[0xb] = 0;
  in_EAX[0xc] = 0;
  in_EAX[0xd] = 0;
  in_EAX[0xe] = 0;
  in_EAX[0xf] = 0;
  in_EAX[0x10] = 0;
  in_EAX[0x11] = 0;
  in_EAX[0x12] = 0;
  in_EAX[0x13] = 0;
  in_EAX[0x14] = 0;
  in_EAX[0x15] = 0;
  in_EAX[0x16] = 0;
  in_EAX[0x17] = 0;
  in_EAX[0x18] = 0;
  in_EAX[0x19] = 0;
  in_EAX[0x1a] = 0;
  in_EAX[0x1b] = 0;
  in_EAX[0x1c] = 0;
  in_EAX[0x1d] = 0;
  in_EAX[0x1e] = 0;
  in_EAX[0x1f] = 0;
  in_EAX[0x20] = 0;
  in_EAX[0x21] = 0;
  in_EAX[0x22] = 0;
  in_EAX[0x23] = 0;
  in_EAX[0x24] = 0;
  in_EAX[0x25] = 0;
  in_EAX[0x26] = 0;
  in_EAX[0x27] = 0;
  in_EAX[0x28] = 0;
  in_EAX[0x29] = 0;
  in_EAX[0x2a] = 0;
  in_EAX[0x2b] = 0;
  in_EAX[0x2c] = 0;
  return;
}



void FUN_00403085(undefined4 *param_1)

{
  *param_1 = 0xa0d;
  return;
}



undefined4 __thiscall FUN_00403092(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004030ca(undefined4 *param_1_00,byte param_1)

{
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fe6();
  *param_1_00 = W47457227::WE8E82499::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00403184(undefined4 *param_1)

{
  *param_1 = 0x5022;
  return;
}



undefined4 __thiscall FUN_00403191(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_004031c9(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00403201(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00403239(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00403271(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_004032a9(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_004032e1(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00403319(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00403351(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00403389(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_004033c1(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_004033f9(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00403431(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00403469(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_004034a1(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_004034d9(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00403514(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0040354f(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0040358a(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_004035c5(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_00403600(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00403a20(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x60);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00b89b23();
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0040ece3(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0040420d(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x1c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_005f5c65(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0040f36d(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0040737d(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x2c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WC43342B0::W9760E90A::vftable;
    puVar2[1] = 0;
    puVar2[2] = 0;
    puVar2[3] = 0;
    puVar2[4] = 0;
    puVar2[5] = 0;
    puVar2[6] = 0;
    puVar2[7] = 0;
    puVar2[8] = 0;
    puVar2[9] = 0;
    puVar2[10] = 0;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00411c1d(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 __thiscall FUN_00407401(undefined4 param_1_00,byte param_1)

{
  FUN_0040741d();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0040741d(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = WC43342B0::W9760E90A::vftable;
  local_8 = 6;
  if (local_20 != param_1 + 1) {
    param_1[1] = 0;
  }
  iVar1 = param_1[2];
  param_1[2] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  if (local_20 != param_1 + 3) {
    param_1[3] = 0;
  }
  iVar1 = param_1[4];
  param_1[4] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  if (local_20 != param_1 + 5) {
    param_1[5] = 0;
  }
  iVar1 = param_1[6];
  param_1[6] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 5;
  if (param_1[10] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 4;
  if (param_1[8] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 3;
  if (param_1[6] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 2;
  if (param_1[4] != 0) {
    FUN_0040127a();
  }
  local_8 = CONCAT31(local_8._1_3_,1);
  if (param_1[2] != 0) {
    FUN_0040127a();
  }
  *param_1 = WCF831331::W03FDD85F::vftable;
  return;
}



void Catch_All_004074f0(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_004074fa(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  FUN_005d11c9(param_1_00 + 0x1c);
  FUN_004a5a31(param_1);
  if (param_3 != 0) {
    FUN_0040127a();
  }
  return;
}



uint FUN_00407537(undefined *param_1)

{
  *param_1 = 0;
  return (uint)param_1 & 0xffffff00;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_00407543(int param_1_00,undefined4 param_1)

{
  undefined uVar1;
  char cVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined4 **ppuStack_7c;
  int *piStack_78;
  undefined4 *local_64 [7];
  undefined4 local_48;
  int local_44;
  int local_40;
  undefined4 local_3c;
  undefined4 ***local_38;
  undefined4 **local_34;
  undefined local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x54;
  local_8 = 0x40754f;
  local_48 = 0;
  piStack_78 = (int *)0x0;
  local_3c = param_1;
  local_18 = 7;
  ppuStack_7c = (undefined4 **)0x40756c;
  FUN_0040180b();
  local_34 = (undefined4 **)0x0;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  piStack_78 = &local_44;
  ppuStack_7c = (undefined4 **)0x407587;
  (***(code ***)(*(int *)(param_1_00 + 0xc) + 4))();
  local_8._0_1_ = 3;
  uVar1 = (undefined)local_8;
  local_8._0_1_ = 3;
  if (local_44 != 0) {
    ppuStack_7c = (undefined4 **)0x407598;
    cVar2 = FUN_00479536();
    uVar1 = (undefined)local_8;
    if (cVar2 != '\0') {
      ppuStack_7c = local_64;
      uVar3 = FUN_0047957d();
      ppuStack_7c = (undefined4 **)0xffffffff;
      local_8._0_1_ = 4;
      FID_conflict_assign(uVar3,0);
      ppuStack_7c = (undefined4 **)0x0;
      local_8._0_1_ = 3;
      FUN_00401829(1);
      ppuStack_7c = &local_38;
      puVar4 = (undefined4 *)FUN_00479598(local_44);
      ppuStack_7c = (undefined4 **)*puVar4;
      *puVar4 = 0;
      FUN_0040c727();
      uVar1 = (undefined)local_8;
      if (local_38 != (undefined4 ***)0x0) {
        ppuStack_7c = (undefined4 **)0x1;
        (*(code *)**local_38)();
        uVar1 = (undefined)local_8;
      }
    }
  }
  local_8._0_1_ = uVar1;
  local_38 = &ppuStack_7c;
  ppuStack_7c = local_34;
  local_34 = (undefined4 **)0x0;
  FUN_00480703(local_3c,local_30);
  local_8 = CONCAT31(local_8._1_3_,2);
  local_48 = 1;
  if (local_40 != 0) {
    ppuStack_7c = (undefined4 **)0x407618;
    FUN_0040127a();
  }
  ppuStack_7c = (undefined4 **)0x0;
  FUN_00401829(1);
  ppuStack_7c = (undefined4 **)0x40762a;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0040762d(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x407639;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fac4f8,0xe);
  local_8 = 0;
  local_18 = 0xa2a7e868;
  local_14 = 0x92c504f3;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



void __thiscall FUN_00407681(int *param_1_00,int param_1,char param_2)

{
  undefined4 uVar1;
  int *piVar2;
  undefined4 unaff_EBX;
  int iVar3;
  int local_60;
  undefined4 uStack_5c;
  undefined local_50 [52];
  void *pvStack_1c;
  undefined4 local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c37ee7;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if (param_1 == 0) {
    local_60 = 0;
  }
  else {
    local_60 = param_1 + 8;
  }
  uVar1 = (**(code **)(*param_1_00 + 0x28))(local_50,1,DAT_0323f878 ^ (uint)&stack0xffffff90);
  local_14 = (void *)0x0;
  FUN_0040e327(unaff_EBX,uVar1);
  local_14 = (void *)0xffffffff;
  FUN_00401829(1,0);
  if (param_2 != '\0') {
    if (param_1 == 0) {
      iVar3 = 0;
    }
    else {
      iVar3 = param_1 + 8;
    }
    uVar1 = basic_string<>(&DAT_00fac518,3);
    local_14 = (void *)0x1;
    local_60 = 0x1dcc4927;
    uStack_5c = 0xbce07a91;
    uVar1 = FUN_00b94470(&local_60,uVar1);
    local_14 = (void *)CONCAT31(local_14._1_3_,2);
    FUN_0040e327(iVar3,uVar1);
    FUN_00401829(1,0);
    local_14 = (void *)0xffffffff;
    FUN_00401829(1,0);
    FUN_00417ba7(param_1 + 8U,1);
    FUN_0040e4a0(-(uint)(param_1 != 0) & param_1 + 8U,&DAT_00fac520);
    FUN_00823cac(&stack0xffffff90,2);
    FUN_0040c559(&LAB_00415f49);
    piVar2 = (int *)FUN_00415f60();
    *(undefined2 *)(*(int *)(*piVar2 + 4) + 0x30 + (int)piVar2) = 0x30;
    FUN_00417ba7(piVar2,0x29);
  }
  ExceptionList = pvStack_1c;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004077d5(undefined4 *param_1)

{
  undefined4 uVar1;
  int *piVar2;
  undefined local_b0 [168];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa0;
  local_8 = 0x4077e4;
  *param_1 = 1;
  param_1[1] = 0x29;
  uVar1 = basic_string<>(&DAT_00fac530);
  local_8 = 0;
  FUN_0040c97f(local_b0,uVar1);
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00401829(1,0);
  piVar2 = (int *)FUN_0040c64f(local_b0,param_1 + 2);
  if ((*(byte *)(*(int *)(*piVar2 + 4) + 8 + (int)piVar2) & 6) != 0) {
    param_1[2] = 0;
  }
  local_8 = 0xffffffff;
  *(undefined *)(param_1 + 3) = 0;
  FUN_0040785a();
  return;
}



void FUN_0040785a(void)

{
  int in_EAX;
  
  FUN_0040c9d8();
  *(undefined4 *)(in_EAX + 0x50) = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)(undefined4 *)(in_EAX + 0x50));
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00407876(int *param_1)

{
  int *piVar1;
  int iVar2;
  undefined local_1c [8];
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x407882;
  local_14 = 0;
  piVar1 = (int *)FUN_00415ea2(local_1c);
  if (*piVar1 == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1 + 4;
  }
  *param_1 = iVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(piVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004078cf(void)

{
  undefined4 param_4;
  undefined4 local_38 [8];
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_14 = 0;
  local_18 = local_38;
  local_8 = 2;
  local_38[0] = param_4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000014);
}



void __fastcall FUN_00407972(int param_1)

{
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c4af9a;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x20);
}



void __fastcall FUN_00407b28(int param_1)

{
  (**(code **)(**(int **)(param_1 + 0xc) + 8))(0);
  (**(code **)(**(int **)(param_1 + 0x14) + 8))(0);
  return;
}



void FUN_00407b41(void)

{
  undefined4 *puVar1;
  undefined4 local_1a4;
  undefined *puStack_1a0;
  uint uStack_19c;
  undefined auStack_18c [4];
  undefined4 *local_188;
  undefined local_180 [356];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41e4a;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_18c;
  uStack_19c = DAT_0323f878 ^ (uint)&stack0xfffffe68;
  ExceptionList = &local_14;
  puStack_1a0 = local_180;
  local_1a4 = 0x407b8f;
  puVar1 = (undefined4 *)FUN_00415a66();
  local_188 = &local_1a4;
  local_c = 0;
  local_1a4 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_004080fc(int param_1_00,undefined4 param_1,int param_2)

{
  FUN_005d11c9(param_1_00 + 0x24);
  if (param_2 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_00408130(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined4 *puVar2;
  undefined *apuStack_e4 [2];
  undefined *puStack_dc;
  int *piStack_d8;
  undefined4 uStack_cc;
  undefined2 *puStack_c8;
  undefined *puStack_c4;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_a8 [52];
  undefined4 local_74;
  undefined4 local_70 [9];
  undefined local_4c [4];
  undefined4 local_48;
  undefined4 local_44;
  undefined **local_34;
  undefined *local_30;
  int *local_2c;
  undefined2 local_28;
  undefined2 local_26;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_70;
  local_70[0] = 0x2c;
  local_48 = param_1;
  local_74 = 0;
  puStack_c4 = (undefined *)0x408169;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_a8,&DAT_00fac584,9);
  local_74._0_1_ = 1;
  local_28 = 0x867f;
  local_26 = 0xeb8e;
  puStack_c4 = (undefined *)0x40818c;
  FUN_00b94330();
  local_74._0_1_ = 3;
  puStack_c4 = (undefined *)0x40819c;
  FUN_004017b2();
  (**(code **)(*param_1_00 + 0x30))();
  local_28 = 0x63d6;
  local_26 = 0x901;
  puStack_c4 = local_4c;
  puStack_c8 = &local_28;
  uStack_cc = 0x4081d7;
  puVar2 = (undefined4 *)FUN_00b941c0();
  local_74 = CONCAT31(local_74._1_3_,4);
  *puVar2 = 0;
  puStack_c4 = (undefined *)0x1;
  local_34 = apuStack_e4;
  local_30 = &LAB_004085c3;
  apuStack_e4[0] = (undefined *)0x0;
  local_2c = param_1_00;
  cVar1 = FUN_007f2630(&local_30);
  if (cVar1 == '\0') {
    if (&stack0x00000000 != (undefined *)0xdc) {
      puStack_dc = local_30;
      piStack_d8 = local_2c;
    }
    apuStack_e4[0] = &DAT_00fac909;
  }
  else {
    apuStack_e4[0] = (undefined *)0x0;
  }
  puVar2 = (undefined4 *)FUN_0041523c(local_70);
  local_44 = *puVar2;
                    // WARNING: Subroutine does not return
  puStack_c4 = &UNK_0040824c;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

undefined4 __thiscall FUN_00408413(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined *puVar5;
  undefined local_154 [192];
  undefined local_94 [28];
  void *local_78;
  undefined4 local_70;
  undefined4 local_6c;
  undefined local_50 [28];
  undefined local_34 [24];
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_6c = 0xdc;
  local_70 = 0;
  local_18 = 0;
  local_c = param_1;
  local_8 = param_2;
  uVar3 = basic_string<>(&DAT_00fac5a4,6);
  local_70 = 1;
  local_14 = 0xd763b4d5;
  local_10 = 0x683ec30f;
  uVar3 = FUN_00b94470(&local_14,uVar3);
  local_70._0_1_ = 2;
  basic_string<>(uVar3);
  piVar1 = *(int **)(param_1_00 + 0x1c);
  local_1c = 7;
  FUN_0040180b(0);
  local_70._0_1_ = 4;
  uVar3 = (**(code **)(*piVar1 + 0xc))(local_94,local_34);
  local_70._0_1_ = 5;
  FUN_004155ac(local_c,uVar3,local_50);
  local_18 = 1;
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  local_70 = (uint)local_70._1_3_ << 8;
  FUN_00401829(1,0);
  FUN_0040c8aa(local_154);
  local_70 = 6;
  uVar3 = FUN_00495f34();
  local_8 = FUN_00823cac(&local_14,8,uVar3);
  puVar5 = &LAB_00415099;
  FUN_0040c559(&LAB_004150a2);
  FUN_0040c559(puVar5);
  uVar3 = FUN_00415f60();
  FUN_0040c573(uVar3);
  uVar4 = FUN_0040c93e();
  uVar3 = local_c;
  local_70._0_1_ = 7;
  FUN_0040e5f4(uVar4);
  local_70 = CONCAT31(local_70._1_3_,6);
  FUN_00401829(1,0);
  cVar2 = FUN_0041506b(uVar3);
  if (cVar2 == '\0') {
    FUN_00828050(uVar3,0);
  }
  local_70 = local_70 & 0xffffff00;
  FUN_004085a7();
  ExceptionList = local_78;
  return uVar3;
}



void FUN_004085a7(void)

{
  int in_EAX;
  
  FUN_0040c906();
  *(undefined4 *)(in_EAX + 0x54) = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)(undefined4 *)(in_EAX + 0x54));
  return;
}



void __thiscall FUN_0040867c(int *param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  if (param_3 == 0) {
    (**(code **)(*param_1_00 + 0x60))(param_1,param_2);
  }
  else if (param_3 == 1) {
    (**(code **)(*param_1_00 + 100))(param_1,param_2);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_004086a7(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 8);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_00408722(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x10);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_0040879d(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00408818(int param_1)

{
  undefined4 *puVar1;
  undefined4 local_34;
  undefined *puStack_30;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0;
  if (param_1 != 0) {
    puStack_30 = local_1c;
    local_34 = 0x40883b;
    puVar1 = (undefined4 *)FUN_00402a40();
    local_14 = &local_34;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_34 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  puStack_30 = (undefined *)0x4088ec;
  FUN_00507e58();
  return;
}



void __fastcall FUN_004088f4(int param_1)

{
  if (*(int *)(param_1 + 0x14) != 0) {
    FUN_0060eddf();
    return;
  }
  return;
}



void __fastcall FUN_00408901(int param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uStack_a4;
  undefined4 uStack_a0;
  int iStack_9c;
  int local_98;
  undefined auStack_94 [84];
  char cStack_40;
  undefined local_3c [32];
  uint local_1c;
  void *pvStack_18;
  void *local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  uStack_10 = &LAB_00c2865d;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&uStack_a4;
  ExceptionList = &local_14;
  local_3c[0] = 0;
  local_c = 0;
  (***(code ***)(*(int *)(param_1 + 0xc) + 4))(&local_98,DAT_0323f878 ^ (uint)&stack0xffffff50);
  uStack_10._0_1_ = 1;
  if (iStack_9c != 0) {
    cVar1 = FUN_00479536();
    if (cVar1 != '\0') {
      uVar2 = FUN_0047957d(auStack_94);
      uStack_10._0_1_ = 2;
      FUN_0040cafb(uVar2);
      uStack_10._0_1_ = 1;
      FUN_00401829(1,0);
    }
  }
  if ((-(uint)(cStack_40 != '\0') & 0x6a1cd8) != 0) {
    uVar2 = basic_string<>(&DAT_00fac5e0,9);
    uStack_10._0_1_ = 3;
    uStack_a4 = 0x775cf488;
    uStack_a0 = 0x25efa282;
    uVar2 = FUN_00b94470(&uStack_a4,uVar2);
    uStack_10._0_1_ = 4;
    FUN_0040c7b1(uVar2);
    FID_conflict_assign(local_3c,0,0xffffffff);
    FUN_00401829(1,0);
    uStack_10._0_1_ = 1;
    FUN_00401829(1,0);
  }
  uVar2 = basic_string<>(&DAT_00fac60c);
  uStack_10._0_1_ = 5;
  uVar3 = basic_string<>(&DAT_00fac5f4,10);
  uStack_10._0_1_ = 6;
  uStack_a4 = 0xe5d74619;
  uStack_a0 = 0x71654462;
  uVar3 = FUN_00b94470(&uStack_a4,uVar3);
  uStack_10._0_1_ = 7;
  FUN_0040c7b1(uVar3);
  FID_conflict_assign(uVar2,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  uStack_10 = (undefined *)((uint)uStack_10._1_3_ << 8);
  if (local_98 != 0) {
    FUN_0040127a();
  }
  if (cStack_40 != '\0') {
    FUN_00401829(1,0);
  }
  ExceptionList = pvStack_18;
  ___security_check_cookie_4();
  return;
}



void FUN_00408b1a(undefined4 param_1,undefined4 param_2)

{
  undefined local_40 [44];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1fc95;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00480c4d();
  local_c = 0;
  FUN_004180b1();
  FUN_00470562();
  local_c._0_1_ = 1;
  FUN_00414f38();
  local_c._0_1_ = 2;
  FUN_004180b1();
  FUN_00470562(local_40,param_2);
  local_c._0_1_ = 3;
  FUN_00414f38();
  local_c = CONCAT31(local_c._1_3_,4);
  FUN_00465be3();
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



undefined4 __thiscall FUN_0040944a(int param_1_00,undefined4 param_1)

{
  (**(code **)(*(int *)(*(int *)(param_1_00 + 4) + 4) + 0x1c))(param_1,0);
  return param_1;
}



void FUN_00409467(void)

{
  int iVar1;
  undefined local_40 [44];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4af67;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00403a20(local_40,DAT_0323f878 ^ (uint)&stack0xffffffa8);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00409ca9(void)

{
  int iVar1;
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c23e87;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0040420d(local_28,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0040c559(code *param_1)

{
  int iVar1;
  int *unaff_ESI;
  
  if (unaff_ESI == (int *)0x0) {
    iVar1 = 0;
  }
  else {
    iVar1 = *(int *)(*unaff_ESI + 4) + (int)unaff_ESI;
  }
  (*param_1)(iVar1);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0040c573(int *param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  uint uVar4;
  uint local_2c [3];
  char local_20;
  locale local_1c [4];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x40c57f;
  local_18 = 0;
  FUN_00415f7a(param_1);
  local_8 = 0;
  if (local_20 != '\0') {
    uVar2 = FUN_00417498(local_1c);
    local_8._0_1_ = 1;
    piVar3 = (int *)FUN_00416e6a(uVar2);
    std::locale::~locale(local_1c);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar1 = *(int *)(*param_1 + 4);
    uVar2 = *(undefined4 *)((int)param_1 + iVar1 + 0x28);
    local_2c[0] = local_2c[0] & 0xffffff00;
    uVar4 = local_2c[0];
    (**(code **)(*piVar3 + 0x18))
              (local_2c,local_2c[0],uVar2,*(int *)(*param_1 + 4) + (int)param_1,
               *(undefined2 *)((int)param_1 + iVar1 + 0x30),param_2);
    if ((char)local_2c[0] != '\0') {
      local_18 = 4;
    }
    local_8 = 0;
    piVar3 = (int *)FUN_0040c629(uVar4,uVar2);
    return piVar3;
  }
  FUN_00417b8a(local_18,0);
  local_8 = 0xffffffff;
  FUN_00416035();
  return param_1;
}



undefined * Catch_All_0040c602(void)

{
  int unaff_EBP;
  
  FUN_00417b70(*(uint *)((int)*(int **)(unaff_EBP + 8) + *(int *)(**(int **)(unaff_EBP + 8) + 4) + 8
                        ) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_0040c624;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0040c629(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  
  FUN_00417b8a(*(undefined4 *)(unaff_EBP + -0x14),unaff_EBX);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00416035();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0040c64f(int *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  undefined local_34 [4];
  undefined4 local_30;
  undefined4 local_28;
  char local_20;
  locale local_1c [4];
  undefined4 local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x40c65b;
  local_18[0] = 0;
  FUN_00413f8e(param_1,0);
  local_8 = 0;
  if (local_20 != '\0') {
    uVar1 = FUN_00417498(local_1c);
    local_8._0_1_ = 1;
    piVar2 = (int *)FUN_0040e683(uVar1);
    std::locale::~locale(local_1c);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar3 = *(int *)(*param_1 + 4) + (int)param_1;
    iVar4 = *(int *)(iVar3 + 0x28);
    local_28 = CONCAT31(local_28._1_3_,1);
    local_30 = CONCAT31(local_30._1_3_,iVar4 == 0);
    uVar1 = local_30;
    (**(code **)(*piVar2 + 0x24))(local_34,iVar4,local_30,0,local_28,iVar3,local_18,param_2);
    local_8 = 0;
    piVar2 = (int *)FUN_0040c700(iVar4,uVar1);
    return piVar2;
  }
  FUN_00417b8a(local_18[0],0);
  local_8 = 0xffffffff;
  FUN_00413965();
  return param_1;
}



undefined * Catch_All_0040c6db(void)

{
  int unaff_EBP;
  
  FUN_00417b70(*(uint *)((int)*(int **)(unaff_EBP + 8) + *(int *)(**(int **)(unaff_EBP + 8) + 4) + 8
                        ) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_0040c6fd;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0040c700(void)

{
  int unaff_EBP;
  
  FUN_00417b8a(*(undefined4 *)(unaff_EBP + -0x14),0);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00413965();
  return;
}



void FUN_0040c727(undefined4 *param_1)

{
  undefined4 *puVar1;
  int *unaff_EDI;
  
  puVar1 = (undefined4 *)*unaff_EDI;
  if ((param_1 != puVar1) && (puVar1 != (undefined4 *)0x0)) {
    (**(code **)*puVar1)(1);
  }
  *unaff_EDI = (int)param_1;
  return;
}



void FUN_0040c749(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  uint uVar2;
  undefined4 uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar2 = 0;
  }
  else {
    uVar2 = *(int *)(in_EAX + 0x14) - iVar1 >> 3;
  }
  if ((uint)(*(int *)(in_EAX + 0x10) - iVar1 >> 3) < uVar2) {
    uVar3 = FUN_00478fca(param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar3;
  }
  else {
    FUN_0046e65a();
    FUN_0047d9ac(&local_10,param_1,local_10,local_c);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_0040c7b1(undefined4 param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 *unaff_EBX;
  undefined4 *puVar4;
  undefined local_78 [56];
  undefined local_40 [24];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_8 = 0x40c7bd;
  puVar2 = (undefined4 *)((undefined4 *)unaff_EBX[6])[1];
  local_14 = (undefined4 *)unaff_EBX[6];
  while (puVar4 = puVar2, *(char *)((int)puVar4 + 0x45) == '\0') {
    cVar1 = FUN_00412a58(puVar4 + 3,param_1);
    if (cVar1 == '\0') {
      puVar2 = (undefined4 *)*puVar4;
      local_14 = puVar4;
    }
    else {
      puVar2 = (undefined4 *)puVar4[2];
    }
  }
  local_20 = unaff_EBX[6];
  local_18 = local_14;
  local_24 = *unaff_EBX;
  local_1c = local_24;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    cVar1 = FUN_00412a58(param_1,local_14 + 3);
    if (cVar1 == '\0') goto LAB_0040c897;
  }
  local_28 = 7;
  FUN_0040180b(0);
  local_8 = 0;
  basic_string<>(param_1);
  local_8._0_1_ = 1;
  basic_string<>(local_40);
  local_8 = CONCAT31(local_8._1_3_,2);
  puVar2 = (undefined4 *)FUN_0040cb79(&local_24,local_78,local_1c,local_18);
  local_1c = *puVar2;
  local_18 = (undefined4 *)puVar2[1];
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
LAB_0040c897:
  iVar3 = FUN_006badde();
  return iVar3 + 0x1c;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0040c8aa(int *param_1)

{
  *param_1 = (int)&PTR_00fad658;
  param_1[2] = (int)&DAT_00fad660;
  param_1[0x15] = (int)std::basic_ios<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  FUN_0040cd1a(param_1,param_1 + 3);
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 4)) =
       std::
       basic_stringstream<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
       vftable;
  FUN_0041390f(param_1 + 3,3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0040c906(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x54) + 4) + -0x54 + param_1) =
       std::
       basic_stringstream<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
       vftable;
  FUN_004130d1();
  FUN_0040c954();
  return;
}



undefined4 __fastcall FUN_0040c93e(undefined4 param_1)

{
  int in_EAX;
  
  FUN_00413014(in_EAX + 0xc);
  return param_1;
}



void __fastcall FUN_0040c954(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0xc) + 4) + -0xc + param_1) =
       std::basic_iostream<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -4) + 4) + -4 + param_1) =
       std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0xc) + 4) + -0xc + param_1) =
       std::basic_istream<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0040c97f(int *param_1)

{
  *param_1 = (int)&PTR_00fc1cdc;
  param_1[0x14] = (int)std::basic_ios<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  basic_istream<>(param_1 + 2,0,0);
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 4)) =
       std::
       basic_istringstream<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
       ::vftable;
  FUN_0040cb22(param_1 + 2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0040c9d8(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x50) + 4) + -0x50 + param_1) =
       std::
       basic_istringstream<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
       ::vftable;
  FUN_004130d1();
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x50) + 4) + param_1 + -0x50) =
       std::basic_istream<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  return;
}



void FUN_0040ca17(void)

{
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



int __thiscall FUN_0040ca2f(int param_1_00,byte param_1)

{
  FUN_004085a7();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -0x54);
  }
  return param_1_00 + -0x54;
}



undefined4 * __thiscall FUN_0040ca4e(undefined4 *param_1_00,byte param_1)

{
  FUN_0040c954();
  *param_1_00 = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -3);
  }
  return param_1_00 + -3;
}



int __thiscall FUN_0040ca7f(int param_1_00,byte param_1)

{
  FUN_0040785a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -0x50);
  }
  return param_1_00 + -0x50;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::basic_istream<char,struct std::char_traits<char>
// >::basic_istream<char,struct std::char_traits<char> >(class std::basic_streambuf<char,struct
// std::char_traits<char> > *,bool)
//  public: __thiscall std::basic_istream<unsigned short,struct std::char_traits<unsigned short>
// >::basic_istream<unsigned short,struct std::char_traits<unsigned short> >(class
// std::basic_streambuf<unsigned short,struct std::char_traits<unsigned short> > *,bool)
//  public: __thiscall std::basic_istream<wchar_t,struct std::char_traits<wchar_t>
// >::basic_istream<wchar_t,struct std::char_traits<wchar_t> >(class
// std::basic_streambuf<wchar_t,struct std::char_traits<wchar_t> > *,bool)
// 
// Libraries: Visual Studio 2008 Debug, Visual Studio 2008 Release

int * __thiscall basic_istream<>(int *param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  if (param_3 != 0) {
    *param_1_00 = (int)&DAT_00fad9c4;
    param_1_00[2] = (int)std::basic_ios<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  }
  *(undefined ***)((int)param_1_00 + *(int *)(*param_1_00 + 4)) =
       std::basic_istream<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  param_1_00[1] = 0;
  FUN_00412b2b(param_1,param_2);
  return param_1_00;
}



void FUN_0040cafb(undefined4 param_1)

{
  char *in_EAX;
  
  if (*in_EAX == '\0') {
    FUN_00412a6f(param_1);
  }
  else {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0040cb22(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  basic_streambuf<>();
  *param_1 = std::
             basic_stringbuf<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             ::vftable;
  iVar1 = *(int *)(param_1_00 + 0x14);
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    param_1_00 = param_1_00 + 4;
  }
  else {
    param_1_00 = *(int *)(param_1_00 + 4);
  }
  param_1[0xf] = 0;
  uVar2 = FUN_004138e6(1);
  param_1[0x10] = uVar2;
  if (iVar1 != 0) {
    FUN_00413856(param_1_00);
  }
  return param_1;
}



undefined4 * FUN_0040cb79(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 != '\0') {
        cVar1 = FUN_00412a58(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_0040ccf8;
        uVar4 = 0;
        goto LAB_0040cb9b;
      }
      cVar1 = FUN_00412a58(param_2,param_4 + 0xc);
      if (cVar1 == '\0') {
LAB_0040cc88:
        cVar1 = FUN_00412a58(param_4 + 0xc,param_2);
        if (cVar1 == '\0') {
LAB_0040ccf8:
          puVar3 = (undefined4 *)FUN_0040d62b(in_EAX,param_2);
          *param_1 = *puVar3;
          param_1[1] = puVar3[1];
          return param_1;
        }
        FUN_0040e0e4();
        cVar1 = FUN_006b8eca();
        if ((cVar1 == '\0') && (cVar1 = FUN_00412a58(param_2,param_4 + 0xc), cVar1 == '\0'))
        goto LAB_0040ccf8;
        if (*(char *)(*(int *)(param_4 + 8) + 0x45) == '\0') {
          uVar4 = 1;
          goto LAB_0040cb9b;
        }
      }
      else {
        iVar2 = FUN_0040e131();
        cVar1 = FUN_00412a58(*(int *)(iVar2 + 4) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_0040cc88;
        if (*(char *)(*(int *)(param_4 + 8) + 0x45) == '\0') {
          uVar4 = 1;
          goto LAB_0040cb9b;
        }
      }
      uVar4 = 0;
      goto LAB_0040cb9b;
    }
    cVar1 = FUN_00412a58(param_2,param_4 + 0xc);
    if (cVar1 == '\0') goto LAB_0040ccf8;
  }
  uVar4 = 1;
LAB_0040cb9b:
  FUN_0040d6f5(param_1,uVar4,param_2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0040cd1a(int *param_1,undefined4 param_2)

{
  basic_istream<>(param_2,0,0);
  *(undefined ***)((int)param_1 + *(int *)(param_1[2] + 4) + 8) =
       std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 4)) =
       std::basic_iostream<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0040cd5e(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,int param_6,uint *param_7,undefined4 param_8)

{
  int iVar1;
  undefined4 uVar2;
  char cVar3;
  undefined4 uVar4;
  uint uVar5;
  undefined *local_68;
  locale local_64 [4];
  int local_60;
  uint *local_5c;
  undefined4 local_58;
  uint local_54;
  undefined4 ***local_4c [5];
  uint local_38;
  undefined local_34 [4];
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uVar2 = param_8;
  iVar1 = param_6;
  uStack_4 = 0x60;
  local_8 = 0x40cd6a;
  local_54 = 0xffffffff;
  local_5c = param_7;
  if ((*(uint *)(param_6 + 0x10) & 0x4000) == 0) {
    local_60 = 0;
    uVar4 = FUN_00417498(local_64);
    local_8 = 4;
    uVar4 = Getifld(local_58,local_34,&param_2,&param_4,*(undefined4 *)(iVar1 + 0x10),uVar4,
                    &local_60);
    uVar5 = FUN_0082403e(local_34,&local_68,uVar4);
    local_8 = 0xffffffff;
    std::locale::~locale(local_64);
    if (((local_68 != local_34) && (local_60 == 0)) && (uVar5 < 2)) {
      local_54 = uVar5;
    }
  }
  else {
    uVar4 = FUN_00417498(&local_58);
    local_8 = 0;
    local_54 = FUN_004173bd(uVar4);
    local_8 = 0xffffffff;
    std::locale::~locale((locale *)&local_58);
    FUN_00412976(1,0);
    local_8 = 1;
    uVar4 = FUN_00416c0d(local_30);
    local_8._0_1_ = 2;
    FID_conflict_append(uVar4,0,0xffffffff);
    local_8._0_1_ = 1;
    FUN_00401829(1,0);
    FID_conflict_append(1,0);
    uVar4 = FUN_00416bf6(local_30);
    local_8._0_1_ = 3;
    FID_conflict_append(uVar4,0,0xffffffff);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_00401829(1,0);
    if (local_38 < 8) {
      local_4c[0] = local_4c;
    }
    local_54 = _Getloctxt<>(&param_2,&param_4,2,local_4c[0]);
    local_8 = 0xffffffff;
    FUN_00401829(1,0);
  }
  cVar3 = equal(&param_4);
  if (cVar3 != '\0') {
    *local_5c = *local_5c | 1;
  }
  if ((int)local_54 < 0) {
    *local_5c = *local_5c | 2;
  }
  else {
    *(bool *)uVar2 = local_54 != 0;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0040cefc(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,int param_6,uint *param_7,undefined2 *param_8)

{
  int iVar1;
  uint *puVar2;
  undefined2 *puVar3;
  char cVar4;
  undefined4 uVar5;
  uint uVar6;
  char *local_48;
  undefined4 *local_44;
  locale local_40 [4];
  int local_3c;
  char *local_38;
  char local_34;
  char local_33 [43];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar3 = param_8;
  puVar2 = param_7;
  iVar1 = param_6;
  uStack_4 = 0x38;
  local_8 = 0x40cf08;
  local_3c = 0;
  local_44 = param_1;
  uVar5 = FUN_00417498(local_40);
  local_8 = 0;
  uVar5 = Getifld(local_38,&local_34,&param_2,&param_4,*(undefined4 *)(iVar1 + 0x10),uVar5);
  local_8 = 0xffffffff;
  std::locale::~locale(local_40);
  local_38 = local_33;
  if (local_34 != '-') {
    local_38 = &local_34;
  }
  uVar6 = FUN_0082403e(local_38,&local_48,uVar5,&local_3c);
  cVar4 = equal(&param_4);
  if (cVar4 != '\0') {
    *puVar2 = *puVar2 | 1;
  }
  if (((local_48 == local_38) || (local_3c != 0)) || (0xffff < uVar6)) {
    *puVar2 = *puVar2 | 2;
  }
  else {
    if (local_34 == '-') {
      uVar6 = -uVar6;
    }
    *puVar3 = (short)uVar6;
  }
  *local_44 = param_2;
  local_44[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0040cfcb(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,int param_6,uint *param_7,int *param_8)

{
  uint *puVar1;
  int *piVar2;
  char cVar3;
  undefined4 uVar4;
  int iVar5;
  char *local_48;
  undefined4 *local_44;
  locale local_40 [4];
  int local_3c;
  char *local_38;
  char local_34;
  char local_33 [43];
  undefined4 local_8;
  undefined4 uStack_4;
  
  piVar2 = param_8;
  puVar1 = param_7;
  iVar5 = param_6;
  uStack_4 = 0x38;
  local_8 = 0x40cfd7;
  local_3c = 0;
  local_44 = param_1;
  uVar4 = FUN_00417498(local_40);
  local_8 = 0;
  uVar4 = Getifld(local_38,&local_34,&param_2,&param_4,*(undefined4 *)(iVar5 + 0x10),uVar4);
  local_8 = 0xffffffff;
  std::locale::~locale(local_40);
  local_38 = local_33;
  if (local_34 != '-') {
    local_38 = &local_34;
  }
  iVar5 = FUN_0082403e(local_38,&local_48,uVar4,&local_3c);
  cVar3 = equal(&param_4);
  if (cVar3 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_48 == local_38) || (local_3c != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    if (local_34 == '-') {
      iVar5 = -iVar5;
    }
    *piVar2 = iVar5;
  }
  *local_44 = param_2;
  local_44[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_0040d096(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,int param_6,uint *param_7,undefined4 *param_8)

{
  int iVar1;
  uint *puVar2;
  undefined4 *puVar3;
  char cVar4;
  undefined4 uVar5;
  undefined *local_44;
  undefined4 *local_40;
  locale local_3c [4];
  int local_38;
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar3 = param_8;
  puVar2 = param_7;
  iVar1 = param_6;
  uStack_4 = 0x38;
  local_8 = 0x40d0a2;
  local_38 = 0;
  local_40 = param_1;
  uVar5 = FUN_00417498(local_3c);
  local_8 = 0;
  uVar5 = Getifld(param_1_00,local_34,&param_2,&param_4,*(undefined4 *)(iVar1 + 0x10),uVar5,
                  &local_38);
  uVar5 = __Stolx(local_34,&local_44,uVar5);
  local_8 = 0xffffffff;
  std::locale::~locale(local_3c);
  cVar4 = equal(&param_4);
  if (cVar4 != '\0') {
    *puVar2 = *puVar2 | 1;
  }
  if ((local_44 == local_34) || (local_38 != 0)) {
    *puVar2 = *puVar2 | 2;
  }
  else {
    *puVar3 = uVar5;
  }
  *local_40 = param_2;
  local_40[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_0040d144(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,int param_6,uint *param_7,undefined4 *param_8)

{
  int iVar1;
  uint *puVar2;
  undefined4 *puVar3;
  char cVar4;
  undefined4 uVar5;
  undefined *local_44;
  undefined4 *local_40;
  locale local_3c [4];
  int local_38;
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar3 = param_8;
  puVar2 = param_7;
  iVar1 = param_6;
  uStack_4 = 0x38;
  local_8 = 0x40d150;
  local_38 = 0;
  local_40 = param_1;
  uVar5 = FUN_00417498(local_3c);
  local_8 = 0;
  uVar5 = Getifld(param_1_00,local_34,&param_2,&param_4,*(undefined4 *)(iVar1 + 0x10),uVar5,
                  &local_38);
  uVar5 = FUN_0082403e(local_34,&local_44,uVar5);
  local_8 = 0xffffffff;
  std::locale::~locale(local_3c);
  cVar4 = equal(&param_4);
  if (cVar4 != '\0') {
    *puVar2 = *puVar2 | 1;
  }
  if ((local_44 == local_34) || (local_38 != 0)) {
    *puVar2 = *puVar2 | 2;
  }
  else {
    *puVar3 = uVar5;
  }
  *local_40 = param_2;
  local_40[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_0040d1f2(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,int param_6,uint *param_7,undefined8 *param_8)

{
  int iVar1;
  uint *puVar2;
  undefined8 *puVar3;
  char cVar4;
  undefined4 uVar5;
  undefined8 uVar6;
  undefined *local_44;
  undefined4 *local_40;
  locale local_3c [4];
  int local_38;
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar3 = param_8;
  puVar2 = param_7;
  iVar1 = param_6;
  uStack_4 = 0x3c;
  local_8 = 0x40d1fe;
  local_38 = 0;
  local_40 = param_1;
  uVar5 = FUN_00417498(local_3c);
  local_8 = 0;
  uVar5 = Getifld(param_1_00,local_34,&param_2,&param_4,*(undefined4 *)(iVar1 + 0x10),uVar5,
                  &local_38);
  uVar6 = __Stollx(local_34,&local_44,uVar5);
  local_8 = 0xffffffff;
  std::locale::~locale(local_3c);
  cVar4 = equal(&param_4);
  if (cVar4 != '\0') {
    *puVar2 = *puVar2 | 1;
  }
  if ((local_44 == local_34) || (local_38 != 0)) {
    *puVar2 = *puVar2 | 2;
  }
  else {
    *puVar3 = uVar6;
  }
  *local_40 = param_2;
  local_40[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_0040d2a9(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,int param_6,uint *param_7,undefined8 *param_8)

{
  int iVar1;
  uint *puVar2;
  undefined8 *puVar3;
  char cVar4;
  undefined4 uVar5;
  undefined8 uVar6;
  undefined *local_44;
  undefined4 *local_40;
  locale local_3c [4];
  int local_38;
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar3 = param_8;
  puVar2 = param_7;
  iVar1 = param_6;
  uStack_4 = 0x3c;
  local_8 = 0x40d2b5;
  local_38 = 0;
  local_40 = param_1;
  uVar5 = FUN_00417498(local_3c);
  local_8 = 0;
  uVar5 = Getifld(param_1_00,local_34,&param_2,&param_4,*(undefined4 *)(iVar1 + 0x10),uVar5,
                  &local_38);
  uVar6 = FUN_00824341(local_34,&local_44,uVar5);
  local_8 = 0xffffffff;
  std::locale::~locale(local_3c);
  cVar4 = equal(&param_4);
  if (cVar4 != '\0') {
    *puVar2 = *puVar2 | 1;
  }
  if ((local_44 == local_34) || (local_38 != 0)) {
    *puVar2 = *puVar2 | 2;
  }
  else {
    *puVar3 = uVar6;
  }
  *local_40 = param_2;
  local_40[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,float &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,float &)const 
// 
// Library: Visual Studio 2008 Release

void do_get(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint *puVar1;
  float *pfVar2;
  char cVar3;
  undefined4 uVar4;
  float10 fVar5;
  uint *param_7;
  float *param_8;
  undefined *local_60;
  locale local_5c [4];
  int local_58;
  float local_54;
  undefined local_50 [72];
  undefined4 local_8;
  undefined4 uStack_4;
  
  pfVar2 = param_8;
  puVar1 = param_7;
  uStack_4 = 0x50;
  local_8 = 0x40d36c;
  local_58 = 0;
  uVar4 = FUN_00417498(local_5c);
  local_8 = 0;
  uVar4 = Getffld(local_54,local_50,&param_2,&stack0x00000010,uVar4,&local_58);
  fVar5 = (float10)__Stofx(local_50,&local_60,uVar4);
  local_54 = (float)fVar5;
  local_8 = 0xffffffff;
  std::locale::~locale(local_5c);
  cVar3 = equal(&stack0x00000010);
  if (cVar3 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_60 == local_50) || (local_58 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *pfVar2 = local_54;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,double &)const 
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,long double &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,double &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,long double &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint *puVar1;
  double *pdVar2;
  char cVar3;
  undefined4 uVar4;
  float10 fVar5;
  uint *param_7;
  double *param_8;
  undefined *local_5c;
  locale local_58 [4];
  int local_54;
  undefined local_50 [72];
  undefined4 local_8;
  undefined4 uStack_4;
  
  pdVar2 = param_8;
  puVar1 = param_7;
  uStack_4 = 0x54;
  local_8 = 0x40d414;
  local_54 = 0;
  uVar4 = FUN_00417498(local_58);
  local_8 = 0;
  uVar4 = Getffld(param_1_00,local_50,&param_2,&stack0x00000010,uVar4,&local_54);
  fVar5 = (float10)FUN_00824568(local_50,&local_5c,uVar4);
  local_8 = 0xffffffff;
  std::locale::~locale(local_58);
  cVar3 = equal(&stack0x00000010);
  if (cVar3 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_5c == local_50) || (local_54 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *pdVar2 = (double)fVar5;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,long double &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,long double &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint *puVar1;
  double *pdVar2;
  char cVar3;
  undefined4 uVar4;
  float10 fVar5;
  uint *param_7;
  double *param_8;
  undefined *local_5c;
  locale local_58 [4];
  int local_54;
  undefined local_50 [72];
  undefined4 local_8;
  undefined4 uStack_4;
  
  pdVar2 = param_8;
  puVar1 = param_7;
  uStack_4 = 0x54;
  local_8 = 0x40d4bc;
  local_54 = 0;
  uVar4 = FUN_00417498(local_58);
  local_8 = 0;
  uVar4 = Getffld(param_1_00,local_50,&param_2,&stack0x00000010,uVar4,&local_54);
  fVar5 = (float10)FUN_008245d1(local_50,&local_5c,uVar4);
  local_8 = 0xffffffff;
  std::locale::~locale(local_58);
  cVar3 = equal(&stack0x00000010);
  if (cVar3 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_5c == local_50) || (local_54 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *pdVar2 = (double)fVar5;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,void * &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,void * &)const 
// 
// Library: Visual Studio 2008 Release

void do_get(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint *puVar1;
  undefined4 *puVar2;
  char cVar3;
  undefined4 uVar4;
  uint *param_7;
  undefined4 *param_8;
  undefined *local_48;
  locale local_44 [4];
  int local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar2 = param_8;
  puVar1 = param_7;
  uStack_4 = 0x38;
  local_8 = 0x40d564;
  local_40 = 0;
  uVar4 = FUN_00417498(local_44);
  local_8 = 0;
  local_38 = Getifld(local_38,local_34,&param_2,&stack0x00000010,0x800,uVar4);
  local_8 = 0xffffffff;
  std::locale::~locale(local_44);
  local_3c = FUN_0082403e(local_34,&local_48,local_38,&local_40);
  local_38 = 0;
  cVar3 = equal(&stack0x00000010);
  if (cVar3 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_48 == local_34) || (local_40 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *puVar2 = local_3c;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00a421fb();
  return;
}



undefined4 * __thiscall FUN_0040d60e(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::locale::facet::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0040d62b(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  puVar2 = (undefined4 *)local_8[1];
  local_c = CONCAT31(local_c._1_3_,1);
  while (*(char *)((int)puVar2 + 0x45) == '\0') {
    local_8 = puVar2;
    cVar1 = FUN_00412a58(param_2,puVar2 + 3);
    local_c = CONCAT31(local_c._1_3_,cVar1);
    if (cVar1 == '\0') {
      puVar2 = (undefined4 *)puVar2[2];
    }
    else {
      puVar2 = (undefined4 *)*puVar2;
    }
  }
  local_14 = *param_1;
  local_10 = local_8;
  if ((char)local_c != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_0040d69d;
    }
    FUN_0040e131();
  }
  puVar2 = local_10;
  cVar1 = FUN_00412a58(local_10 + 3,param_2);
  uVar3 = local_c;
  if (cVar1 == '\0') {
    *unaff_EBX = local_14;
    unaff_EBX[1] = puVar2;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_0040d69d:
  puVar2 = (undefined4 *)FUN_0040d6f5(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0040d6f5(int **param_1_00,undefined4 *param_1,char param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x40d701;
  if (0x4924922 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_0040e214(unaff_ESI[6],param_1_00,unaff_ESI[6],param_3,0);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_0040d81c;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_0040d81c;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_0040d81c:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0x11) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x44) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0x11) == '\0') {
LAB_0040d7d8:
        *(undefined *)(piVar1 + 0x11) = 1;
        *(undefined *)(piVar7 + 0x11) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x44) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_0040e192(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x44) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x44) = 0;
        FUN_0040e1d2(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0x11) == '\0') goto LAB_0040d7d8;
    if (piVar8 == (int *)*piVar1) {
      FUN_0040e1d2(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x44) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x44) = 0;
    FUN_0040e192(unaff_ESI);
  } while( true );
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  private: int __cdecl std::num_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Getifld(char *,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > &,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > &,int,class
// std::locale const &)const 
//  private: int __cdecl std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Getifld(char *,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,int,class std::locale const &)const 
// 
// Library: Visual Studio 2008 Release

void Getifld(int param_1,char *param_2,undefined4 param_3,undefined4 param_4,uint param_5,
            undefined4 param_6)

{
  bool bVar1;
  char cVar2;
  byte bVar3;
  char cVar4;
  short sVar5;
  short sVar6;
  short sVar7;
  short sVar8;
  undefined2 uVar9;
  int *piVar10;
  void *pvVar11;
  char *pcVar12;
  uint uVar13;
  undefined4 ****ppppuVar14;
  size_t local_68;
  char *local_58;
  undefined local_4c [4];
  undefined4 ****local_48 [4];
  int local_38;
  uint local_34;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8 = 0x40d850;
  piVar10 = (int *)FUN_004173bd(param_6);
  grouping(local_4c);
  sVar5 = 0;
  local_8 = 0;
  if (local_38 != 0) {
    sVar5 = (**(code **)(*piVar10 + 8))();
  }
  param_1 = param_1 + 8;
  sVar6 = _Maklocchr<>(0x30,0,param_1);
  local_58 = param_2;
  cVar2 = equal(param_4);
  if (cVar2 == '\0') {
    sVar7 = _Maklocchr<>(0x2b,0,param_1);
    sVar8 = FID_conflict_operator_();
    if (sVar8 == sVar7) {
      *param_2 = '+';
    }
    else {
      sVar7 = _Maklocchr<>(0x2d,0,param_1);
      sVar8 = FID_conflict_operator_();
      if (sVar8 != sVar7) goto LAB_0040d90c;
      *param_2 = '-';
    }
    local_58 = param_2 + 1;
    Inc();
  }
LAB_0040d90c:
  param_5 = param_5 & 0xe00;
  if (param_5 == 0x400) {
    bVar3 = 8;
  }
  else if (param_5 == 0x800) {
    bVar3 = 0x10;
  }
  else {
    bVar3 = -(param_5 != 0) & 10;
  }
  cVar2 = '\0';
  bVar1 = false;
  cVar4 = FUN_0040e881(param_3,param_4);
  if (cVar4 == '\0') {
LAB_0040d9ed:
    if (bVar3 != 0) {
LAB_0040d9f3:
      if (bVar3 != 10) goto LAB_0040d9f9;
    }
    local_68 = 10;
  }
  else {
    sVar7 = FID_conflict_operator_();
    if (sVar7 != sVar6) goto LAB_0040d9ed;
    cVar2 = '\x01';
    Inc();
    cVar4 = FUN_0040e881(param_3,param_4);
    if (cVar4 == '\0') {
LAB_0040d9e0:
      if (bVar3 == 0) {
        bVar3 = 8;
        goto LAB_0040d9ed;
      }
      goto LAB_0040d9f3;
    }
    sVar6 = _Maklocchr<>(0x78,0,param_1);
    sVar7 = FID_conflict_operator_();
    if (sVar7 != sVar6) {
      sVar6 = _Maklocchr<>(0x58,0,param_1);
      sVar7 = FID_conflict_operator_();
      if (sVar7 != sVar6) goto LAB_0040d9e0;
    }
    if ((bVar3 != 0) && (bVar3 != 0x10)) goto LAB_0040d9e0;
    bVar3 = 0x10;
    cVar2 = '\0';
    Inc();
LAB_0040d9f9:
    local_68 = ((bVar3 != 8) - 1 & 0xfffffff2) + 0x16;
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_30,1,cVar2);
  local_8 = CONCAT31(local_8._1_3_,1);
  uVar13 = 0;
  cVar4 = FUN_0040e881(param_3,param_4);
  if (cVar4 != '\0') {
    do {
      uVar9 = FID_conflict_operator_(param_1);
      cVar4 = _Maklocbyte<>(uVar9);
      *local_58 = cVar4;
      pvVar11 = _memchr("0123456789abcdefABCDEF",(int)cVar4,local_68);
      if (pvVar11 == (void *)0x0) {
        pcVar12 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  ::operator[](local_30,uVar13);
        if ((*pcVar12 == '\0') || (sVar5 == 0)) break;
        sVar6 = FID_conflict_operator_();
        if (sVar6 != sVar5) break;
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                  (local_30,1,'\0');
        uVar13 = uVar13 + 1;
      }
      else {
        if (((bVar1) || (*local_58 != '0')) && (local_58 < param_2 + 0x1f)) {
          local_58 = local_58 + 1;
          bVar1 = true;
        }
        cVar2 = '\x01';
        pcVar12 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  ::operator[](local_30,uVar13);
        if (*pcVar12 != '\x7f') {
          pcVar12 = std::
                    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                    operator[](local_30,uVar13);
          *pcVar12 = *pcVar12 + '\x01';
        }
      }
      Inc();
      cVar4 = FUN_0040e881(param_3,param_4);
    } while (cVar4 != '\0');
    if (uVar13 != 0) {
      pcVar12 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                operator[](local_30,uVar13);
      if (*pcVar12 < '\x01') {
        cVar2 = '\0';
      }
      else {
        uVar13 = uVar13 + 1;
      }
    }
  }
  if (local_34 < 0x10) {
    local_48[0] = local_48;
  }
  ppppuVar14 = local_48[0];
  if (cVar2 == '\0') {
LAB_0040db67:
    local_58 = param_2;
  }
  else {
    while ((uVar13 != 0 && (*(char *)ppppuVar14 != '\x7f'))) {
      uVar13 = uVar13 - 1;
      if (uVar13 != 0) {
        pcVar12 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  ::operator[](local_30,uVar13);
        if (*(char *)ppppuVar14 != *pcVar12) goto LAB_0040db67;
      }
      if (uVar13 == 0) {
        pcVar12 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  ::operator[](local_30,0);
        if (*(char *)ppppuVar14 < *pcVar12) goto LAB_0040db67;
      }
      if ('\0' < *(char *)(undefined4 ****)((int)ppppuVar14 + 1)) {
        ppppuVar14 = (undefined4 ****)((int)ppppuVar14 + 1);
      }
    }
    if (!bVar1) {
      *local_58 = '0';
      local_58 = local_58 + 1;
    }
  }
  *local_58 = '\0';
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  private: int __cdecl std::num_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Getffld(char *,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > &,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > &,class
// std::locale const &)const 
//  private: int __cdecl std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Getffld(char *,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,class std::locale const &)const 
// 
// Library: Visual Studio 2008 Release

void Getffld(int param_1,char *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  bool bVar1;
  bool bVar2;
  char cVar3;
  ushort uVar4;
  short sVar5;
  short sVar6;
  ushort uVar7;
  int *piVar8;
  uint uVar9;
  undefined4 ****ppppuVar10;
  uint uVar11;
  char *pcVar12;
  lconv *plVar13;
  char *pcVar14;
  int local_64;
  uint local_60;
  char local_58;
  int local_54;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [28];
  undefined local_30 [4];
  undefined4 ****local_2c [5];
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x60;
  local_8 = 0x40dba0;
  piVar8 = (int *)FUN_004173bd(param_5);
  grouping(local_30);
  local_8 = 0;
  param_1 = param_1 + 8;
  uVar4 = _Maklocchr<>(0x30,0,param_1);
  uVar9 = (uint)uVar4;
  bVar1 = false;
  cVar3 = equal(param_4);
  pcVar14 = param_2;
  if (cVar3 == '\0') {
    sVar5 = _Maklocchr<>(0x2b,0,param_1);
    sVar6 = FID_conflict_operator_();
    if (sVar6 == sVar5) {
      *param_2 = '+';
    }
    else {
      sVar5 = _Maklocchr<>(0x2d,0,param_1);
      sVar6 = FID_conflict_operator_();
      if (sVar6 != sVar5) goto LAB_0040dc46;
      *param_2 = '-';
    }
    Inc();
    pcVar14 = param_2 + 1;
  }
LAB_0040dc46:
  local_54 = 0;
  local_64 = 0;
  bVar2 = false;
  ppppuVar10 = local_2c[0];
  if (local_18 < 0x10) {
    ppppuVar10 = local_2c;
  }
  local_58 = (char)uVar4;
  if (*(char *)ppppuVar10 == '\x7f') {
LAB_0040ddfa:
    cVar3 = FUN_0040e881(param_3,param_4);
    if (cVar3 != '\0') {
      do {
        uVar7 = FID_conflict_operator_();
        if ((uVar7 < uVar4) || (uVar11 = FID_conflict_operator_(), uVar9 + 9 < (uVar11 & 0xffff)))
        break;
        if (local_54 < 0x24) {
          uVar7 = FID_conflict_operator_();
          if ((uVar7 != uVar4) || (local_54 != 0)) {
            cVar3 = FID_conflict_operator_();
            *pcVar14 = cVar3 + ('0' - local_58);
            pcVar14 = pcVar14 + 1;
            local_54 = local_54 + 1;
          }
        }
        else {
          local_64 = local_64 + 1;
        }
        bVar2 = true;
        Inc();
        cVar3 = FUN_0040e881(param_3,param_4);
      } while (cVar3 != '\0');
      goto LAB_0040de77;
    }
  }
  else {
    ppppuVar10 = local_2c[0];
    if (local_18 < 0x10) {
      ppppuVar10 = local_2c;
    }
    if (*(char *)ppppuVar10 < '\x01') goto LAB_0040ddfa;
    sVar5 = (**(code **)(*piVar8 + 8))();
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_4c,1,'\0');
    local_60 = 0;
    local_8 = CONCAT31(local_8._1_3_,1);
    cVar3 = FUN_0040e881(param_3,param_4);
    if (cVar3 != '\0') {
      do {
        uVar7 = FID_conflict_operator_();
        if ((uVar7 < uVar4) || (uVar11 = FID_conflict_operator_(), uVar9 + 9 < (uVar11 & 0xffff))) {
          pcVar12 = std::
                    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                    operator[](local_4c,local_60);
          if ((*pcVar12 == '\0') ||
             ((sVar5 == 0 || (sVar6 = FID_conflict_operator_(), sVar6 != sVar5)))) break;
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                    (local_4c,1,'\0');
          local_60 = local_60 + 1;
        }
        else {
          bVar2 = true;
          if (local_54 < 0x24) {
            uVar7 = FID_conflict_operator_();
            if ((uVar7 != uVar4) || (local_54 != 0)) {
              cVar3 = FID_conflict_operator_();
              *pcVar14 = cVar3 + ('0' - local_58);
              pcVar14 = pcVar14 + 1;
              local_54 = local_54 + 1;
            }
          }
          else {
            local_64 = local_64 + 1;
          }
          pcVar12 = std::
                    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                    operator[](local_4c,local_60);
          if (*pcVar12 != '\x7f') {
            pcVar12 = std::
                      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                      operator[](local_4c,local_60);
            *pcVar12 = *pcVar12 + '\x01';
          }
        }
        Inc();
        cVar3 = FUN_0040e881(param_3,param_4);
      } while (cVar3 != '\0');
      if (local_60 != 0) {
        pcVar12 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  ::operator[](local_4c,local_60);
        if (*pcVar12 < '\x01') {
          bVar1 = true;
        }
        else {
          local_60 = local_60 + 1;
        }
      }
    }
    if (local_18 < 0x10) {
      local_2c[0] = local_2c;
    }
    ppppuVar10 = local_2c[0];
    if (!bVar1) {
      while( true ) {
        if ((local_60 == 0) || (*(char *)ppppuVar10 == '\x7f')) goto LAB_0040dde8;
        local_60 = local_60 - 1;
        if (((local_60 != 0) &&
            (pcVar12 = std::
                       basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       ::operator[](local_4c,local_60), *(char *)ppppuVar10 != *pcVar12)) ||
           ((local_60 == 0 &&
            (pcVar12 = std::
                       basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       ::operator[](local_4c,0), *(char *)ppppuVar10 < *pcVar12)))) break;
        if ('\0' < *(char *)(undefined4 ****)((int)ppppuVar10 + 1)) {
          ppppuVar10 = (undefined4 ****)((int)ppppuVar10 + 1);
        }
      }
      bVar1 = true;
    }
LAB_0040dde8:
    local_8 = local_8 & 0xffffff00;
    FUN_004017b2(1,0);
LAB_0040de77:
    if ((bVar2) && (local_54 == 0)) {
      *pcVar14 = '0';
      pcVar14 = pcVar14 + 1;
    }
  }
  cVar3 = FUN_0040e881(param_3,param_4);
  if (cVar3 != '\0') {
    sVar5 = (**(code **)(*piVar8 + 4))();
    sVar6 = FID_conflict_operator_();
    if (sVar6 == sVar5) {
      plVar13 = _localeconv();
      *pcVar14 = *plVar13->decimal_point;
      pcVar14 = pcVar14 + 1;
      Inc();
    }
  }
  if (local_54 == 0) {
    while ((cVar3 = FUN_0040e881(param_3,param_4), cVar3 != '\0' &&
           (uVar7 = FID_conflict_operator_(), uVar7 == uVar4))) {
      local_64 = local_64 + -1;
      bVar2 = true;
      Inc();
    }
    if (local_64 < 0) {
      *pcVar14 = '0';
      pcVar14 = pcVar14 + 1;
    }
  }
  while (((cVar3 = FUN_0040e881(param_3,param_4), cVar3 != '\0' &&
          (uVar7 = FID_conflict_operator_(), uVar4 <= uVar7)) &&
         (uVar11 = FID_conflict_operator_(), (uVar11 & 0xffff) <= uVar9 + 9))) {
    if (local_54 < 0x24) {
      cVar3 = FID_conflict_operator_();
      *pcVar14 = cVar3 + ('0' - local_58);
      pcVar14 = pcVar14 + 1;
      local_54 = local_54 + 1;
    }
    bVar2 = true;
    Inc();
  }
  if ((!bVar2) || (cVar3 = FUN_0040e881(param_3,param_4), cVar3 == '\0')) goto LAB_0040e0bd;
  sVar5 = _Maklocchr<>(0x65,0,param_1);
  sVar6 = FID_conflict_operator_();
  if (sVar6 != sVar5) {
    sVar5 = _Maklocchr<>(0x45,0,param_1);
    sVar6 = FID_conflict_operator_();
    if (sVar6 != sVar5) goto LAB_0040e0bd;
  }
  *pcVar14 = 'e';
  pcVar12 = pcVar14 + 1;
  Inc();
  local_54 = 0;
  bVar2 = false;
  cVar3 = equal(param_4);
  if (cVar3 == '\0') {
    sVar5 = _Maklocchr<>(0x2b,0,param_1);
    sVar6 = FID_conflict_operator_();
    if (sVar6 == sVar5) {
      *pcVar12 = '+';
    }
    else {
      sVar5 = _Maklocchr<>(0x2d,0,param_1);
      sVar6 = FID_conflict_operator_();
      if (sVar6 != sVar5) goto LAB_0040e025;
      *pcVar12 = '-';
    }
    Inc();
    pcVar12 = pcVar14 + 2;
  }
LAB_0040e025:
  pcVar14 = pcVar12;
  cVar3 = FUN_0040e881(param_3,param_4);
  if (cVar3 != '\0') {
    do {
      uVar7 = FID_conflict_operator_();
      if (uVar7 != uVar4) break;
      bVar2 = true;
      Inc();
      cVar3 = FUN_0040e881(param_3,param_4);
    } while (cVar3 != '\0');
    if (bVar2) {
      *pcVar14 = '0';
      pcVar14 = pcVar14 + 1;
    }
  }
  while (((cVar3 = FUN_0040e881(param_3,param_4), cVar3 != '\0' &&
          (uVar7 = FID_conflict_operator_(), uVar4 <= uVar7)) &&
         (uVar11 = FID_conflict_operator_(), (uVar11 & 0xffff) <= uVar9 + 9))) {
    if (local_54 < 8) {
      cVar3 = FID_conflict_operator_();
      *pcVar14 = cVar3 + ('0' - local_58);
      pcVar14 = pcVar14 + 1;
      local_54 = local_54 + 1;
    }
    bVar2 = true;
    Inc();
  }
LAB_0040e0bd:
  if ((bVar1) || (!bVar2)) {
    pcVar14 = param_2;
  }
  *pcVar14 = '\0';
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



void FUN_0040e0e4(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x45) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x45) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x45) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x45) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



void FUN_0040e131(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x45) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x45) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x45) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x45) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x45) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x45) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



void __thiscall FUN_0040e192(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x45) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



void __thiscall FUN_0040e1d2(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x45) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void * FUN_0040e214(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                   undefined4 param_5)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x48);
  if (pvVar1 != (void *)0x0) {
    FUN_0040e2d6(param_1,param_2,param_3,param_5);
  }
  return pvVar1;
}



void Catch_All_0040e25a(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



// Library Function - Multiple Matches With Different Base Names
//  public: unsigned short __thiscall std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >::operator*(void)const 
//  public: wchar_t __thiscall std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t>
// >::operator*(void)const 
// 
// Library: Visual Studio 2008 Release

undefined2 __fastcall FID_conflict_operator_(int param_1)

{
  if (*(char *)(param_1 + 4) == '\0') {
    Peek();
  }
  return *(undefined2 *)(param_1 + 6);
}



// Library Function - Multiple Matches With Same Base Name
//  private: void __thiscall std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >::_Inc(void)
//  private: void __thiscall std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t>
// >::_Inc(void)
// 
// Library: Visual Studio 2008 Release

void __fastcall Inc(int *param_1)

{
  short sVar1;
  
  if (*param_1 != 0) {
    sVar1 = sbumpc();
    if (sVar1 != -1) {
      *(undefined *)(param_1 + 1) = 0;
      return;
    }
  }
  *param_1 = 0;
  *(undefined *)(param_1 + 1) = 1;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  private: unsigned short __thiscall std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >::_Peek(void)
//  private: unsigned short __thiscall std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >::_Peek(void)const 
//  private: wchar_t __thiscall std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t>
// >::_Peek(void)
//  private: wchar_t __thiscall std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t>
// >::_Peek(void)const 
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

undefined2 __fastcall Peek(int *param_1)

{
  short sVar1;
  
  if (*param_1 != 0) {
    sVar1 = sgetc();
    if (sVar1 != -1) {
      *(short *)((int)param_1 + 6) = sVar1;
      goto LAB_0040e2cc;
    }
  }
  *param_1 = 0;
LAB_0040e2cc:
  *(undefined *)(param_1 + 1) = 1;
  return *(undefined2 *)((int)param_1 + 6);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_0040e2d6(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined param_4)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = param_1;
  unaff_ESI[1] = param_2;
  unaff_ESI[2] = param_3;
  basic_string<>(param_1_00);
  basic_string<>(param_1_00 + 0x1c);
  *(undefined *)(unaff_ESI + 0x11) = param_4;
  *(undefined *)((int)unaff_ESI + 0x45) = 0;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0040e327(int *param_1,int param_2)

{
  uint uVar1;
  short sVar2;
  undefined2 *puVar3;
  uint uVar4;
  char local_28;
  int local_20;
  int local_1c;
  
  uVar1 = *(uint *)(param_2 + 0x14);
  uVar4 = *(uint *)(*(int *)(*param_1 + 4) + 0x18 + (int)param_1);
  local_1c = 0;
  if (((int)uVar4 < 1) || (uVar4 <= uVar1)) {
    local_20 = 0;
  }
  else {
    local_20 = uVar4 - uVar1;
  }
  FUN_00415f7a(param_1);
  if (local_28 == '\0') {
    local_1c = 4;
    goto LAB_0040e43e;
  }
  if ((*(uint *)(*(int *)(*param_1 + 4) + 0x10 + (int)param_1) & 0x1c0) == 0x40) {
LAB_0040e3c9:
    for (uVar4 = 0; uVar4 < uVar1; uVar4 = uVar4 + 1) {
      puVar3 = (undefined2 *)FUN_004127c3(uVar4);
      sVar2 = sputc(*puVar3);
      if (sVar2 == -1) {
        local_1c = 4;
        break;
      }
    }
    if (local_1c == 0) {
      for (; local_20 != 0; local_20 = local_20 + -1) {
        sVar2 = sputc(*(undefined2 *)((int)param_1 + *(int *)(*param_1 + 4) + 0x30));
        if (sVar2 == -1) {
          local_1c = 4;
          break;
        }
      }
    }
  }
  else {
    for (; local_20 != 0; local_20 = local_20 + -1) {
      sVar2 = sputc(*(undefined2 *)((int)param_1 + *(int *)(*param_1 + 4) + 0x30));
      if (sVar2 == -1) {
        local_1c = 4;
        break;
      }
    }
    if (local_1c == 0) goto LAB_0040e3c9;
  }
  *(undefined4 *)((int)param_1 + *(int *)(*param_1 + 4) + 0x18) = 0;
LAB_0040e43e:
  FUN_00417b8a(local_1c,0);
  FUN_00416035();
  return param_1;
}



undefined * Catch_All_0040e477(void)

{
  int unaff_EBP;
  
  FUN_00417b70(*(uint *)((int)*(int **)(unaff_EBP + 8) + *(int *)(**(int **)(unaff_EBP + 8) + 4) + 8
                        ) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_0040e499;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0040e4a0(int *param_1,short *param_2)

{
  short sVar1;
  short *psVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  char local_20;
  int local_1c;
  
  iVar5 = 0;
  local_1c = 0;
  psVar2 = param_2;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  iVar3 = (int)psVar2 - (int)(param_2 + 1) >> 1;
  iVar4 = *(int *)(*(int *)(*param_1 + 4) + 0x18 + (int)param_1);
  if ((0 < iVar4) && (iVar3 < iVar4)) {
    iVar5 = iVar4 - iVar3;
  }
  FUN_00415f7a(param_1);
  if (local_20 == '\0') {
    local_1c = 4;
    goto LAB_0040e56f;
  }
  if ((*(uint *)(*(int *)(*param_1 + 4) + 0x10 + (int)param_1) & 0x1c0) == 0x40) {
LAB_0040e543:
    iVar4 = (**(code **)(**(int **)(*(int *)(*param_1 + 4) + 0x28 + (int)param_1) + 0x20))
                      (param_2,iVar3);
    if (iVar4 == iVar3) {
      for (; 0 < iVar5; iVar5 = iVar5 + -1) {
        sVar1 = sputc(*(undefined2 *)((int)param_1 + *(int *)(*param_1 + 4) + 0x30));
        if (sVar1 == -1) {
          local_1c = 4;
          break;
        }
      }
    }
    else {
      local_1c = 4;
    }
  }
  else {
    for (; 0 < iVar5; iVar5 = iVar5 + -1) {
      sVar1 = sputc(*(undefined2 *)((int)param_1 + *(int *)(*param_1 + 4) + 0x30));
      if (sVar1 == -1) {
        local_1c = 4;
        break;
      }
    }
    if (local_1c == 0) goto LAB_0040e543;
  }
  *(undefined4 *)((int)param_1 + *(int *)(*param_1 + 4) + 0x18) = 0;
LAB_0040e56f:
  FUN_00417b8a(local_1c,0);
  FUN_00416035();
  return param_1;
}



undefined * Catch_All_0040e5ca(void)

{
  int unaff_EBP;
  
  FUN_00417b70(*(uint *)((int)*(int **)(unaff_EBP + 8) + *(int *)(**(int **)(unaff_EBP + 8) + 4) + 8
                        ) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_0040e5ec;
}



void FUN_0040e5f4(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  *param_1)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  undefined local_18 [8];
  undefined local_10 [12];
  
  FUN_008262c0();
  uVar2 = FUN_00412721(local_10);
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            (param_1,local_18);
  cVar1 = FUN_00412797(uVar2);
  if (cVar1 == '\0') {
    iVar3 = FUN_008258d0();
    FUN_00411c7a(param_1);
    if (iVar3 != 0) {
      FUN_00824ef0(iVar3);
    }
  }
  return;
}



void FUN_0040e651(void)

{
  int *piVar1;
  int unaff_EBX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  piVar1 = unaff_ESI + 2;
  FUN_00411d95(piVar1,piVar1,2);
  if (unaff_EBX == 0) {
    *unaff_ESI = 0;
  }
  else {
    *piVar1 = unaff_EBX;
    *unaff_ESI = 0xfac911;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

facet * FUN_0040e683(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x40e68f;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032ef6b4;
  local_8 = 0;
  local_14[0] = DAT_032ef6b4;
  uVar2 = std::locale::id::operator_unsigned_int((id *)0x32f11d4);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = FUN_0040e898(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032ef6b4 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  int __cdecl std::_Getloctxt<unsigned short,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >(class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > &,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > &,unsigned int,unsigned short const *)
//  int __cdecl std::_Getloctxt<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,unsigned int,wchar_t const *)
// 
// Library: Visual Studio 2008 Release

void _Getloctxt<>(undefined4 param_1,undefined4 param_2,uint param_3,short *param_4)

{
  bool bVar1;
  char cVar2;
  short sVar3;
  char *pcVar4;
  int iVar5;
  uint uVar6;
  uint local_3c;
  uint local_38;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x40e72c;
  iVar5 = 0;
  sVar3 = *param_4;
  while (sVar3 != 0) {
    if (sVar3 == *param_4) {
      param_3 = param_3 + 1;
    }
    iVar5 = iVar5 + 1;
    sVar3 = param_4[iVar5];
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_30,param_3,'\0');
  local_8 = 0;
  local_3c = 1;
  while( true ) {
    iVar5 = 0;
    bVar1 = false;
    local_38 = 0;
    if (param_3 == 0) break;
    do {
      sVar3 = param_4[iVar5];
      if (sVar3 != 0) {
        do {
          if (sVar3 == *param_4) break;
          iVar5 = iVar5 + 1;
          sVar3 = param_4[iVar5];
        } while (sVar3 != 0);
      }
      pcVar4 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
               operator[](local_30,local_38);
      if (*pcVar4 == '\0') {
        iVar5 = iVar5 + local_3c;
        if ((param_4[iVar5] == *param_4) || (param_4[iVar5] == 0)) {
          uVar6 = 0x7f;
          if (local_3c < 0x7f) {
            uVar6 = local_3c;
          }
          pcVar4 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                   ::operator[](local_30,local_38);
          *pcVar4 = (char)uVar6;
        }
        else {
          cVar2 = equal(param_2);
          if ((cVar2 == '\0') && (sVar3 = FID_conflict_operator_(), param_4[iVar5] == sVar3)) {
            bVar1 = true;
          }
          else {
            uVar6 = 0x7f;
            if (local_3c < 0x7f) {
              uVar6 = local_3c;
            }
            pcVar4 = std::
                     basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                     operator[](local_30,local_38);
            *pcVar4 = (char)uVar6;
          }
        }
      }
      else {
        pcVar4 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                 operator[](local_30,local_38);
        iVar5 = iVar5 + *pcVar4;
      }
      local_38 = local_38 + 1;
    } while (local_38 < param_3);
    if ((!bVar1) || (cVar2 = equal(param_2), cVar2 != '\0')) break;
    local_3c = local_3c + 1;
    Inc();
  }
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



bool FUN_0040e881(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = equal(param_2);
  return cVar1 == '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0040e898(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0x40e8a7;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x10);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = collate<>(uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 4;
}



// Library Function - Multiple Matches With Same Base Name
//  public: bool __thiscall std::istreambuf_iterator<char,struct std::char_traits<char>
// >::equal(class std::istreambuf_iterator<char,struct std::char_traits<char> > const &)const 
//  public: bool __thiscall std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> >::equal(class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> > const &)const 
//  public: bool __thiscall std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t>
// >::equal(class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > const &)const 
// 
// Library: Visual Studio 2003 Release

undefined4 __thiscall equal(int *param_1_00,int *param_1)

{
  if (*(char *)(param_1_00 + 1) == '\0') {
    Peek();
  }
  if (*(char *)(param_1 + 1) == '\0') {
    Peek();
  }
  if (*param_1_00 == 0) {
    if (*param_1 == 0) {
      return 1;
    }
  }
  else if (*param_1 != 0) {
    return 1;
  }
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::collate<char>::collate<char>(class std::_Locinfo const &,unsigned int)
//  public: __thiscall std::collate<unsigned short>::collate<unsigned short>(class std::_Locinfo
// const &,unsigned int)
//  public: __thiscall std::collate<wchar_t>::collate<wchar_t>(class std::_Locinfo const &,unsigned
// int)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release

undefined4 * __thiscall collate<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  _Collvec _Var1;
  
  param_1_00[1] = param_2;
  *param_1_00 = std::
                num_get<wchar_t,class_std::istreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                ::vftable;
  _Var1 = __Getcoll();
  *(_Collvec *)(param_1_00 + 2) = _Var1;
  return param_1_00;
}



void Catch_All_0040e9d8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0040e9ef(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAC38D41E::W0B27B7B3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0040ea35(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040ea92(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040eaef(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040eb4c(void)

{
  int iVar1;
  code *pcVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  if (iVar1 != 0) {
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0040eb6f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W24F38DA5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0040ebb5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040ec12(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040ec6f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040eccc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0040ece3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W13A880BC::WF311DE02>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0040ed29(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040ed86(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040ede3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040ee40(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040ee9d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040eefa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040ef57(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040efb4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f011(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f06e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f0cb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f128(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f185(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f1e2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f23f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f29c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f2f9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f356(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0040f36d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::WB07AE826>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0040f3b3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f410(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f46d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f4ca(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f527(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f584(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f5e1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f63e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f69b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f6f8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f755(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f7b2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f80f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f86c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f8c9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f926(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f983(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040f9e0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040fa3d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040fa9a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040faf7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040fb54(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040fbb1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040fc0e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040fc6b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040fcc8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040fd25(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040fd82(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040fddf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040fe3c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040fe99(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040fef6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040ff53(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0040ffb0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041000d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041006a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004100c7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410124(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410181(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004101de(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041023b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410298(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004102f5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410352(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004103af(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041040c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410469(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004104c6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410523(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410580(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004105dd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041063a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410697(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004106f4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410751(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004107ae(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041080b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410868(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004108c5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410922(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041097f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004109dc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410a39(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410a96(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410af3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410b50(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410bad(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410c0a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410c67(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410cc4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410d21(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410d7e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410ddb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410e38(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410e95(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410ef2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410f4f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00410fac(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411009(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411066(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004110c3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411120(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041117d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004111da(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411237(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411294(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004112f1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041134e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004113ab(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411408(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411465(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004114c2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041151f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041157c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004115d9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411636(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411693(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004116f0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041174d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004117aa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411807(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411864(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004118c1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041191e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041197b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004119d8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411a35(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411a92(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411aef(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411b4c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411ba9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00411c06(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00411c1d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WC43342B0::W9760E90A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00411c63(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00411c7a(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  *param_1)

{
  int iVar1;
  _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
  *p_Var2;
  wchar_t *pwVar3;
  wchar_t *pwVar4;
  undefined local_18 [8];
  undefined local_10 [12];
  
  iVar1 = *(int *)(param_1 + 0x14);
  if (iVar1 != 0) {
    p_Var2 = (_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)std::
                basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                ::begin(param_1,local_10);
    pwVar3 = std::
             _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             ::operator*(p_Var2);
    p_Var2 = (_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)std::
                basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                ::begin(param_1,local_18);
    pwVar4 = std::
             _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             ::operator*(p_Var2);
    FUN_004126db(pwVar4,pwVar3 + iVar1);
  }
  return;
}



void __fastcall FUN_00411cc1(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __fastcall FUN_00411cde(int param_1)

{
  if (*(undefined4 **)(param_1 + 0xc) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xc))(1);
  }
  return;
}



void FUN_00411cec(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00411e8f(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<class_boost::shared_ptr<class_W14E3BFCC::W5959A26E>,class_boost::_mfi::mf0<class_boost::shared_ptr<class_W14E3BFCC::W5959A26E>,class_W14E3BFCC::W2296D43D>,class_boost::_bi::list1<class_boost::_bi::value<class_WB3204DCB::W9959A9F6*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



undefined4 FUN_00411d27(undefined4 param_1)

{
  FUN_00411e68(param_1);
  return param_1;
}



void FUN_00411d3f(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00411ed8(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<class_boost::filesystem::path,class_boost::_mfi::mf1<class_boost::filesystem::path,class_WC43342B0::W9760E90A,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WC43342B0::W9760E90A*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



undefined4 FUN_00411d7a(undefined4 param_1)

{
  FUN_00411fb2(param_1);
  return param_1;
}



void FUN_00411d95(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00411f21(0);
    return;
  }
  *param_2 = &PTR_vftable_0324b764;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00411e1b(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00411f69(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(class_W133E5AC5::W76B051B4&,unsigned_short),class_boost::_bi::list2<struct_boost::arg<1>,class_boost::_bi::value<enum_W133E5AC5::W7206750B::Type>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



undefined4 __thiscall FUN_00411e68(int param_1_00,undefined4 param_1)

{
  FUN_00411fe0(param_1_00 + 4,param_1,0,param_1_00);
  return param_1;
}



void FUN_00411e8f(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<class_boost::shared_ptr<class_W14E3BFCC::W5959A26E>,class_boost::_mfi::mf0<class_boost::shared_ptr<class_W14E3BFCC::W5959A26E>,class_W14E3BFCC::W2296D43D>,class_boost::_bi::list1<class_boost::_bi::value<class_WB3204DCB::W9959A9F6*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<class_boost::shared_ptr<class_W14E3BFCC::W5959A26E>,class_boost::_mfi::mf0<class_boost::shared_ptr<class_W14E3BFCC::W5959A26E>,class_W14E3BFCC::W2296D43D>,class_boost::_bi::list1<class_boost::_bi::value<class_WB3204DCB::W9959A9F6*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00411ed8(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<class_boost::filesystem::path,class_boost::_mfi::mf1<class_boost::filesystem::path,class_WC43342B0::W9760E90A,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WC43342B0::W9760E90A*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<class_boost::filesystem::path,class_boost::_mfi::mf1<class_boost::filesystem::path,class_WC43342B0::W9760E90A,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WC43342B0::W9760E90A*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00411f21(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0324b764;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0324b764);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_00411f69(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(class_W133E5AC5::W76B051B4&,unsigned_short),class_boost::_bi::list2<struct_boost::arg<1>,class_boost::_bi::value<enum_W133E5AC5::W7206750B::Type>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,bool_(__cdecl*)(class_W133E5AC5::W76B051B4&,unsigned_short),class_boost::_bi::list2<struct_boost::arg<1>,class_boost::_bi::value<enum_W133E5AC5::W7206750B::Type>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 __thiscall FUN_00411fb2(uint param_1_00,undefined4 param_1)

{
  uint local_8;
  
  local_8 = param_1_00 & 0xffffff00;
  FUN_00411ffd(param_1_00 + 4,param_1,local_8,param_1_00);
  return param_1;
}



undefined4 FUN_00411fe0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_0041201e(param_4,param_2,param_1);
  return param_2;
}



undefined4 FUN_00411ffd(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 *in_EAX;
  
  FUN_0041203b(param_4,param_2,*in_EAX);
  return param_2;
}



undefined4 FUN_0041201e(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0041207b(param_1,param_2,param_3);
  return param_2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0041203b(code **param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined local_30 [28];
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x412047;
  local_14 = 0;
  uVar1 = (**param_1)(local_30,param_3);
  local_8 = 0;
  basic_string<>(uVar1);
  FUN_00401829(1,0);
  return param_2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0041207b(code **param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  undefined local_1c [8];
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x412087;
  local_14 = 0;
  puVar1 = (undefined4 *)(**param_1)(local_1c);
  *param_2 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// Library Function - Single Match
//  public: wchar_t const & __thiscall std::_String_const_iterator<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::operator*(void)const 
// 
// Library: Visual Studio 2008 Release

wchar_t * __thiscall
std::_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
::operator*(_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            *this)

{
  int iVar1;
  int iVar2;
  
  if (*(int *)this != -4) {
    if (*(int *)this == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *(int *)this;
    if (*(uint *)(iVar1 + 0x18) < 8) {
      iVar2 = iVar1 + 4;
    }
    else {
      iVar2 = *(int *)(iVar1 + 4);
    }
    if ((uint)(iVar2 + *(int *)(iVar1 + 0x14) * 2) <= *(uint *)(this + 4)) {
      FUN_00a3fb10();
    }
  }
  return *(wchar_t **)(this + 4);
}



int __thiscall
FUN_00412114(int param_1_00,uint param_1,uint param_2,int param_3,uint param_4,uint param_5)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  
  if ((*(uint *)(param_1_00 + 0x14) < param_1) || (*(uint *)(param_3 + 0x14) < param_4)) {
    std::_String_base::_Xran();
  }
  uVar1 = *(int *)(param_1_00 + 0x14) - param_1;
  if (uVar1 < param_2) {
    param_2 = uVar1;
  }
  uVar1 = *(int *)(param_3 + 0x14) - param_4;
  if (uVar1 < param_5) {
    param_5 = uVar1;
  }
  if (-param_5 - 1 <= *(int *)(param_1_00 + 0x14) - param_2) {
    std::_String_base::_Xlen();
  }
  uVar1 = *(uint *)(param_1_00 + 0x14);
  uVar7 = (uVar1 - param_1) - param_2;
  uVar2 = (uVar1 - param_2) + param_5;
  if (uVar1 < uVar2) {
    FUN_004182d2(uVar2,0);
  }
  if (param_1_00 == param_3) {
    if (param_2 < param_5) {
      if (param_1 < param_4) {
        uVar1 = *(uint *)(param_1_00 + 0x18);
        if (param_4 < param_2 + param_1) {
          if (uVar1 < 8) {
            iVar5 = param_1_00 + 4;
            iVar6 = param_1_00 + 4;
          }
          else {
            iVar5 = *(int *)(param_1_00 + 4);
            iVar6 = *(int *)(param_1_00 + 4);
          }
          FUN_00418102(iVar6 + param_1 * 2,uVar1 - param_1,iVar5 + param_4 * 2,param_2);
          if (*(uint *)(param_1_00 + 0x18) < 8) {
            iVar5 = param_1_00 + 4;
            iVar6 = param_1_00 + 4;
          }
          else {
            iVar5 = *(int *)(param_1_00 + 4);
            iVar6 = *(int *)(param_1_00 + 4);
          }
          iVar4 = (param_2 + param_1) * 2;
          FUN_00418102(iVar6 + (param_1 + param_5) * 2,
                       (*(uint *)(param_1_00 + 0x18) - param_1) - param_5,iVar4 + iVar5,uVar7);
          if (*(uint *)(param_1_00 + 0x18) < 8) {
            iVar5 = param_1_00 + 4;
            iVar6 = param_1_00 + 4;
          }
          else {
            iVar5 = *(int *)(param_1_00 + 4);
            iVar6 = *(int *)(param_1_00 + 4);
          }
          uVar7 = param_5 - param_2;
          iVar3 = (*(uint *)(param_1_00 + 0x18) - param_1) - param_2;
          iVar5 = iVar5 + (param_4 + param_5) * 2;
          iVar4 = iVar4 + iVar6;
        }
        else {
          if (uVar1 < 8) {
            iVar5 = param_1_00 + 4;
            iVar6 = param_1_00 + 4;
          }
          else {
            iVar5 = *(int *)(param_1_00 + 4);
            iVar6 = *(int *)(param_1_00 + 4);
          }
          FUN_00418102(iVar6 + (param_1 + param_5) * 2,(uVar1 - param_1) - param_5,
                       iVar5 + (param_2 + param_1) * 2,uVar7);
          if (*(uint *)(param_1_00 + 0x18) < 8) {
            iVar5 = param_1_00 + 4;
            iVar4 = param_1_00 + 4;
          }
          else {
            iVar5 = *(int *)(param_1_00 + 4);
            iVar4 = *(int *)(param_1_00 + 4);
          }
          iVar5 = iVar5 + ((param_4 - param_2) + param_5) * 2;
          iVar3 = *(uint *)(param_1_00 + 0x18) - param_1;
          iVar4 = iVar4 + param_1 * 2;
          uVar7 = param_5;
        }
      }
      else {
        if (*(uint *)(param_1_00 + 0x18) < 8) {
          iVar5 = param_1_00 + 4;
          iVar6 = param_1_00 + 4;
        }
        else {
          iVar5 = *(int *)(param_1_00 + 4);
          iVar6 = *(int *)(param_1_00 + 4);
        }
        FUN_00418102(iVar6 + (param_1 + param_5) * 2,
                     (*(uint *)(param_1_00 + 0x18) - param_1) - param_5,
                     iVar5 + (param_2 + param_1) * 2,uVar7);
        if (*(uint *)(param_1_00 + 0x18) < 8) {
          iVar5 = param_1_00 + 4;
          iVar4 = param_1_00 + 4;
        }
        else {
          iVar5 = *(int *)(param_1_00 + 4);
          iVar4 = *(int *)(param_1_00 + 4);
        }
        iVar5 = iVar5 + param_4 * 2;
        iVar3 = *(uint *)(param_1_00 + 0x18) - param_1;
        iVar4 = iVar4 + param_1 * 2;
        uVar7 = param_5;
      }
    }
    else {
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar5 = param_1_00 + 4;
        iVar6 = param_1_00 + 4;
      }
      else {
        iVar5 = *(int *)(param_1_00 + 4);
        iVar6 = *(int *)(param_1_00 + 4);
      }
      FUN_00418102(iVar6 + param_1 * 2,*(uint *)(param_1_00 + 0x18) - param_1,iVar5 + param_4 * 2,
                   param_5);
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar5 = param_1_00 + 4;
        iVar4 = param_1_00 + 4;
      }
      else {
        iVar5 = *(int *)(param_1_00 + 4);
        iVar4 = *(int *)(param_1_00 + 4);
      }
      iVar3 = (*(uint *)(param_1_00 + 0x18) - param_1) - param_5;
      iVar5 = iVar5 + (param_2 + param_1) * 2;
      iVar4 = iVar4 + (param_1 + param_5) * 2;
    }
    FUN_00418102(iVar4,iVar3,iVar5,uVar7);
  }
  else {
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      iVar5 = param_1_00 + 4;
      iVar6 = param_1_00 + 4;
    }
    else {
      iVar5 = *(int *)(param_1_00 + 4);
      iVar6 = *(int *)(param_1_00 + 4);
    }
    FUN_00418102(iVar6 + (param_1 + param_5) * 2,(*(uint *)(param_1_00 + 0x18) - param_1) - param_5,
                 iVar5 + (param_2 + param_1) * 2,uVar7);
    if (*(uint *)(param_3 + 0x18) < 8) {
      param_3 = param_3 + 4;
    }
    else {
      param_3 = *(int *)(param_3 + 4);
    }
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      iVar5 = param_1_00 + 4;
    }
    else {
      iVar5 = *(int *)(param_1_00 + 4);
    }
    Copy_s(iVar5 + param_1 * 2,*(uint *)(param_1_00 + 0x18) - param_1,param_3 + param_4 * 2,param_5)
    ;
  }
  FUN_0040180b(uVar2);
  return param_1_00;
}



int __thiscall FUN_00412473(int param_1_00,uint param_1,uint param_2,int param_3,uint param_4)

{
  undefined4 *puVar1;
  char cVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  undefined4 *puVar6;
  int iVar7;
  
  cVar2 = FUN_00417ec1(param_3);
  if (cVar2 == '\0') {
    if (*(uint *)(param_1_00 + 0x14) < param_1) {
      std::_String_base::_Xran();
    }
    uVar4 = *(int *)(param_1_00 + 0x14) - param_1;
    if (uVar4 < param_2) {
      param_2 = uVar4;
    }
    if (-param_4 - 1 <= *(int *)(param_1_00 + 0x14) - param_2) {
      std::_String_base::_Xlen();
    }
    iVar5 = (*(int *)(param_1_00 + 0x14) - param_1) - param_2;
    if (param_4 < param_2) {
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar3 = param_1_00 + 4;
        iVar7 = param_1_00 + 4;
      }
      else {
        iVar3 = *(int *)(param_1_00 + 4);
        iVar7 = *(int *)(param_1_00 + 4);
      }
      FUN_00418102(iVar7 + (param_1 + param_4) * 2,
                   (*(uint *)(param_1_00 + 0x18) - param_1) - param_4,
                   iVar3 + (param_2 + param_1) * 2,iVar5);
    }
    if ((param_4 != 0) || (param_2 != 0)) {
      iVar3 = (*(int *)(param_1_00 + 0x14) - param_2) + param_4;
      cVar2 = FUN_004182d2(iVar3,0);
      if (cVar2 != '\0') {
        if (param_2 < param_4) {
          puVar6 = (undefined4 *)(param_1_00 + 4);
          puVar1 = puVar6;
          if (7 < *(uint *)(param_1_00 + 0x18)) {
            puVar1 = (undefined4 *)*puVar6;
            puVar6 = (undefined4 *)*puVar6;
          }
          FUN_00418102((int)puVar6 + (param_1 + param_4) * 2,
                       (*(uint *)(param_1_00 + 0x18) - param_1) - param_4,
                       (int)puVar1 + (param_2 + param_1) * 2,iVar5);
        }
        if (*(uint *)(param_1_00 + 0x18) < 8) {
          iVar5 = param_1_00 + 4;
        }
        else {
          iVar5 = *(int *)(param_1_00 + 4);
        }
        Copy_s(iVar5 + param_1 * 2,*(uint *)(param_1_00 + 0x18) - param_1,param_3,param_4);
        FUN_0040180b(iVar3);
      }
    }
  }
  else {
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      iVar5 = param_1_00 + 4;
    }
    else {
      iVar5 = *(int *)(param_1_00 + 4);
    }
    param_1_00 = FUN_00412114(param_1,param_2,param_1_00,param_3 - iVar5 >> 1,param_4);
  }
  return param_1_00;
}



int __thiscall FUN_004125d9(int *param_1_00,int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1_00;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *param_1)))) {
    FUN_00a3fb10();
  }
  return param_1_00[1] - param_1[1] >> 1;
}



void FUN_00412602(undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    FUN_004125d9(&stack0x0000000c);
  }
  return;
}



// Library Function - Single Match
//  public: class std::_String_iterator<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::begin(void)
// 
// Library: Visual Studio 2005 Release

undefined4 __thiscall
std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
          (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
           *this,undefined4 param_1)

{
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *pbVar1;
  
  if (*(uint *)(this + 0x18) < 8) {
    pbVar1 = this + 4;
  }
  else {
    pbVar1 = *(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
               **)(this + 4);
  }
  FUN_00412747(pbVar1,this);
  return param_1;
}



basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __thiscall
FUN_00412639(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4
            ,int param_5,int param_6)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int iVar5;
  undefined local_10 [12];
  
  puVar2 = (undefined4 *)
           std::
           basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
           begin(param_1_00,local_10);
  if (param_5 == param_6) {
    uVar4 = *puVar2;
    uVar1 = puVar2[1];
    uVar3 = FUN_00412602(param_3,param_4,param_1,param_2);
    uVar4 = FUN_00412602(param_1,param_2,uVar4,uVar1,uVar3);
    FID_conflict_erase(uVar4,uVar3);
  }
  else {
    uVar4 = *puVar2;
    uVar1 = puVar2[1];
    iVar5 = param_6 - param_5 >> 1;
    uVar3 = FUN_00412602(param_3,param_4,param_1,param_2,param_5,iVar5);
    uVar4 = FUN_00412602(param_1,param_2,uVar4,uVar1,uVar3);
    FUN_00412473(uVar4,uVar3,param_5,iVar5);
  }
  return param_1_00;
}



void FUN_004126db(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined local_18 [8];
  undefined local_10 [12];
  
  puVar3 = (undefined4 *)FUN_00412721(local_18);
  uVar1 = *puVar3;
  uVar2 = puVar3[1];
  puVar3 = (undefined4 *)FUN_00412721(local_10);
  FUN_00412639(*puVar3,puVar3[1],uVar1,uVar2,param_1,param_2);
  return;
}



undefined4 __thiscall FUN_00412721(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    iVar1 = param_1_00 + 4;
  }
  else {
    iVar1 = *(int *)(param_1_00 + 4);
  }
  FUN_00412747(iVar1 + *(int *)(param_1_00 + 0x14) * 2,param_1_00);
  return param_1;
}



int * __thiscall FUN_00412747(int *param_1_00,undefined4 *param_1,int param_2)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  *param_1_00 = 0;
  if ((param_2 != 0) && (param_1 != (undefined4 *)0x0)) {
    puVar1 = (undefined4 *)(param_2 + 4);
    puVar2 = puVar1;
    if (7 < *(uint *)(param_2 + 0x18)) {
      puVar2 = (undefined4 *)*puVar1;
    }
    if (puVar2 <= param_1) {
      if (7 < *(uint *)(param_2 + 0x18)) {
        puVar1 = (undefined4 *)*puVar1;
      }
      if (param_1 <= (undefined4 *)((int)puVar1 + *(int *)(param_2 + 0x14) * 2)) goto LAB_0041278a;
    }
  }
  FUN_00a3fb10();
LAB_0041278a:
  *param_1_00 = param_2;
  param_1_00[1] = (int)param_1;
  return param_1_00;
}



bool __thiscall FUN_00412797(int *param_1_00,int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1_00;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *param_1)))) {
    FUN_00a3fb10();
  }
  return param_1_00[1] == param_1[1];
}



int __thiscall FUN_004127c3(int param_1_00,uint param_1)

{
  if (*(uint *)(param_1_00 + 0x14) < param_1) {
    FUN_00a3fb10();
  }
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    param_1_00 = param_1_00 + 4;
  }
  else {
    param_1_00 = *(int *)(param_1_00 + 4);
  }
  return param_1_00 + param_1 * 2;
}



// Library Function - Multiple Matches With Same Base Name
//  char __cdecl std::_Maklocbyte<unsigned short>(unsigned short,struct _Cvtvec const &)
//  char __cdecl std::_Maklocbyte<wchar_t>(wchar_t,struct _Cvtvec const &)
// 
// Library: Visual Studio 2008 Release

undefined __thiscall _Maklocbyte<>(uint3 param_1_00,wchar_t param_1,_Cvtvec *param_2)

{
  mbstate_t local_c;
  undefined4 uStack_8;
  
  local_c = 0;
  uStack_8 = (uint)param_1_00;
  __Wcrtomb((char *)((int)&uStack_8 + 3),param_1,&local_c,param_2);
  return uStack_8._3_1_;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00412813(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,uint param_1,undefined4 param_2)

{
  bool bVar1;
  
  if (param_1 == 0xffffffff) {
    std::_String_base::_Xlen();
  }
  bVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Grow
                    (param_1_00,param_1,false);
  if (bVar1) {
    FUN_00416295(0,param_1,param_2);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
              (param_1_00,param_1);
  }
  return param_1_00;
}



// Library Function - Single Match
//  public: __thiscall std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >(unsigned int,char)
// 
// Library: Visual Studio 2005 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          uint param_1,char param_2)

{
  undefined3 in_stack_00000009;
  
  *(undefined4 *)(this + 0x18) = 0xf;
  _Eos(this,0);
  FUN_00412813(param_1,_param_2);
  return this;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::append(unsigned
// int,unsigned short)
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::append(unsigned int,wchar_t)
// 
// Library: Visual Studio 2005 Release

int __thiscall FID_conflict_append(int param_1_00,uint param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  
  if (-*(int *)(param_1_00 + 0x14) - 1U <= param_1) {
    std::_String_base::_Xlen();
  }
  if (param_1 != 0) {
    iVar2 = *(int *)(param_1_00 + 0x14) + param_1;
    cVar1 = FUN_004182d2(iVar2,0);
    if (cVar1 != '\0') {
      FID_conflict__Chassign(*(undefined4 *)(param_1_00 + 0x14),param_1,param_2);
      FUN_0040180b(iVar2);
    }
  }
  return param_1_00;
}



undefined4 * FUN_004128c4(undefined4 *param_1,undefined2 param_2,uint param_3)

{
  uint uVar1;
  undefined4 *puVar2;
  
  if (param_3 != 0) {
    puVar2 = param_1;
    for (uVar1 = param_3 >> 1; uVar1 != 0; uVar1 = uVar1 - 1) {
      *puVar2 = CONCAT22(param_2,param_2);
      puVar2 = puVar2 + 1;
    }
    for (uVar1 = (uint)((param_3 & 1) != 0); uVar1 != 0; uVar1 = uVar1 - 1) {
      *(undefined2 *)puVar2 = param_2;
      puVar2 = (undefined4 *)((int)puVar2 + 2);
    }
  }
  return param_1;
}



// Library Function - Multiple Matches With Different Base Names
//  protected: void __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::_Chassign(unsigned int,unsigned int,unsigned
// short)
//  protected: void __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::_Chassign(unsigned int,unsigned int,wchar_t)
// 
// Library: Visual Studio 2008 Release

void __thiscall FID_conflict__Chassign(int param_1_00,int param_1,int param_2,undefined4 param_3)

{
  if (param_2 == 1) {
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      param_1_00 = param_1_00 + 4;
    }
    else {
      param_1_00 = *(int *)(param_1_00 + 4);
    }
    *(undefined2 *)(param_1_00 + param_1 * 2) = (undefined2)param_3;
  }
  else {
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      param_1_00 = param_1_00 + 4;
    }
    else {
      param_1_00 = *(int *)(param_1_00 + 4);
    }
    FUN_004128c4(param_1_00 + param_1 * 2,param_3,param_2);
  }
  return;
}



undefined4 __thiscall FUN_00412939(undefined4 param_1_00,int param_1,undefined4 param_2)

{
  char cVar1;
  
  if (param_1 == -1) {
    std::_String_base::_Xlen();
  }
  cVar1 = FUN_004182d2(param_1,0);
  if (cVar1 != '\0') {
    FID_conflict__Chassign(0,param_1,param_2);
    FUN_0040180b(param_1);
  }
  return param_1_00;
}



int __thiscall FUN_00412976(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  FUN_0040180b(0);
  FUN_00412939(param_1,param_2);
  return param_1_00;
}



int FUN_0041299c(ushort *param_1,ushort *param_2,int param_3)

{
  if (param_3 != 0) {
    do {
      if (*param_1 != *param_2) {
        return (-(uint)(*param_1 < *param_2) & 0xfffffffe) + 1;
      }
      param_1 = param_1 + 1;
      param_2 = param_2 + 1;
      param_3 = param_3 + -1;
    } while (param_3 != 0);
  }
  return 0;
}



uint __thiscall
FUN_004129cd(int param_1_00,uint param_1,uint param_2,undefined4 param_3,uint param_4)

{
  uint uVar1;
  
  if (*(uint *)(param_1_00 + 0x14) < param_1) {
    std::_String_base::_Xran();
  }
  uVar1 = *(int *)(param_1_00 + 0x14) - param_1;
  if (uVar1 < param_2) {
    param_2 = uVar1;
  }
  uVar1 = param_4;
  if (param_2 < param_4) {
    uVar1 = param_2;
  }
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    param_1_00 = param_1_00 + 4;
  }
  else {
    param_1_00 = *(int *)(param_1_00 + 4);
  }
  uVar1 = FUN_0041299c(param_1_00 + param_1 * 2,param_3,uVar1);
  if (uVar1 == 0) {
    if (param_2 < param_4) {
      uVar1 = 0xffffffff;
    }
    else {
      uVar1 = (uint)(param_2 != param_4);
    }
  }
  return uVar1;
}



void __thiscall FUN_00412a34(int param_1_00,int param_1)

{
  int iVar1;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    iVar1 = param_1 + 4;
  }
  else {
    iVar1 = *(int *)(param_1 + 4);
  }
  FUN_004129cd(0,*(undefined4 *)(param_1_00 + 0x14),iVar1,*(undefined4 *)(param_1 + 0x14));
  return;
}



bool FUN_00412a58(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  
  iVar1 = FUN_00412a34(param_2);
  return iVar1 < 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_00412a6f(undefined4 param_1)

{
  undefined *puVar1;
  undefined *unaff_ESI;
  
  puVar1 = &LAB_00c29771;
  if (unaff_ESI != (undefined *)0xfffffffc) {
    puVar1 = (undefined *)basic_string<>(param_1);
  }
  *unaff_ESI = 1;
  return puVar1;
}



void __fastcall FUN_00412a9f(int param_1)

{
  locale *this;
  undefined4 uVar1;
  
  *(undefined4 *)(param_1 + 0x24) = 0;
  *(undefined4 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0x201;
  *(undefined4 *)(param_1 + 0x14) = 6;
  *(undefined4 *)(param_1 + 0x18) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(undefined4 *)(param_1 + 0x20) = 0;
  FUN_00417a55(0,0);
  this = (locale *)operator_new(4);
  if (this == (locale *)0x0) {
    uVar1 = 0;
  }
  else {
    uVar1 = std::locale::locale(this);
  }
  *(undefined4 *)(param_1 + 0x24) = uVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: unsigned short __thiscall std::basic_ios<unsigned short,struct std::char_traits<unsigned
// short> >::widen(char)const 
//  public: wchar_t __thiscall std::basic_ios<wchar_t,struct std::char_traits<wchar_t>
// >::widen(char)const 
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release

void widen(undefined4 param_1)

{
  undefined4 uVar1;
  int *piVar2;
  locale local_14 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0x412af7;
  uVar1 = FUN_00417498(local_14);
  local_8 = 0;
  piVar2 = (int *)FUN_00413d06(uVar1);
  local_8 = 0xffffffff;
  std::locale::~locale(local_14);
  (**(code **)(*piVar2 + 0x28))(param_1);
  return;
}



void __thiscall FUN_00412b2b(ios_base *param_1_00,undefined4 param_1,char param_2)

{
  undefined2 uVar1;
  
  FUN_00412a9f();
  *(undefined4 *)(param_1_00 + 0x28) = param_1;
  *(undefined4 *)(param_1_00 + 0x2c) = 0;
  uVar1 = widen(0x20);
  *(undefined2 *)(param_1_00 + 0x30) = uVar1;
  if (*(int *)(param_1_00 + 0x28) == 0) {
    FUN_00417b70(*(uint *)(param_1_00 + 8) | 4,0);
  }
  if (param_2 == '\0') {
    *(undefined4 *)(param_1_00 + 4) = 0;
  }
  else {
    std::ios_base::_Addstd(param_1_00);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00412b7a(undefined4 *param_1)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x412b86;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_2c,"call to empty boost::function");
  local_8 = 0;
  FUN_00401118(local_2c);
  FUN_004017b2(1,0);
  *param_1 = boost::bad_function_call::vftable;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00412bbe(undefined4 *param_1_00,int param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_00412ee5(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_function_call>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_function_call>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_function_call>_>
       ::vftable;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1);
  return param_1_00;
}



undefined4 FUN_00412c46(undefined4 param_1,undefined4 param_2)

{
  FUN_00412bbe(param_2,1);
  return param_1;
}



undefined4 * __thiscall FUN_00412c60(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00412f2c(param_1);
  param_1_00[10] = boost::exception::vftable;
  param_1_00[0xb] = 0;
  param_1_00[0xe] = 0xffffffff;
  param_1_00[0xc] = 0;
  param_1_00[0xd] = 0;
  *param_1_00 = boost::exception_detail::error_info_injector<class_boost::bad_function_call>::
                vftable;
  param_1_00[10] =
       boost::exception_detail::error_info_injector<class_boost::bad_function_call>::vftable;
  return param_1_00;
}



undefined4 FUN_00412c95(undefined4 param_1,undefined4 param_2)

{
  FUN_00412c60(param_2);
  return param_1;
}



void __fastcall FUN_00412cad(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_function_call>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_function_call>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_function_call>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  FUN_00412ceb();
  return;
}



void __fastcall FUN_00412cda(int param_1)

{
  FUN_00412cad();
  *(undefined ***)(param_1 + 0x44) = boost::exception_detail::clone_base::vftable;
  return;
}



void __fastcall FUN_00412ceb(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::error_info_injector<class_boost::bad_function_call>::vftable;
  param_1[10] = boost::exception_detail::error_info_injector<class_boost::bad_function_call>::
                vftable;
  param_1[10] = boost::exception::vftable;
  FUN_00401874();
  FUN_0040114d();
  return;
}



void FUN_00412d12(void)

{
  FUN_00412e20();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00412d1a(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  if (param_3 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_00412ee5(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_function_call>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_function_call>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_function_call>_>
       ::vftable;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __fastcall FUN_00412da2(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  
  pvVar1 = operator_new(0x48);
  iVar2 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00412d1a(param_1 + -0x44,local_14,1);
  }
  if (iVar2 != 0) {
    iVar2 = *(int *)(*(int *)(iVar2 + 0x3c) + 4) + 0x3c + iVar2;
  }
  return iVar2;
}



void FUN_00412ded(void)

{
  FUN_00412da2();
  return;
}



void __fastcall FUN_00412df5(int param_1)

{
  code *pcVar1;
  undefined local_4c [72];
  
  clone_impl<>(param_1 + -0x44,1);
  __CxxThrowException_8(local_4c,&DAT_0311562c);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00412e18(void)

{
  FUN_00412df5();
  return;
}



int __thiscall FUN_00412e20(int param_1,byte param_2)

{
  FUN_00412cad();
  *(undefined ***)(param_1 + 0x44) = boost::exception_detail::clone_base::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_00412e43(void)

{
  FUN_00412e20();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >(class
// boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class
// std::domain_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::evaluation_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::rounding_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error> > const &)
// 
// Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release

undefined4 * __thiscall clone_impl<>(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_00412ee5(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_function_call>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_function_call>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_function_call>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) = 0;
  return param_1_00;
}



void __fastcall thunk_FUN_0040114d(undefined4 *param_1)

{
  *param_1 = std::runtime_error::vftable;
  FUN_004017b2(1,0);
  exception::~exception((exception *)param_1);
  return;
}



undefined4 __thiscall FUN_00412ec1(undefined4 param_1,byte param_2)

{
  FUN_00412ceb();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_00412edd(void)

{
  FUN_00412ec1();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00412ee5(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FUN_00412f2c(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0x28;
  }
  FUN_00401569(iVar1);
  *param_1_00 = boost::exception_detail::error_info_injector<class_boost::bad_function_call>::
                vftable;
  param_1_00[10] =
       boost::exception_detail::error_info_injector<class_boost::bad_function_call>::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_00412f2c(undefined4 *param_1_00,undefined4 param_1)

{
  FID_conflict_runtime_error(param_1);
  *param_1_00 = boost::bad_function_call::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00412f44(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_98 [60];
  undefined local_5c [84];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x88;
  local_8 = 0x412f53;
  uVar2 = FUN_00412c95(local_98,param_1);
  local_8 = 0;
  FUN_00412c46(local_5c,uVar2);
  __CxxThrowException_8(local_5c,&DAT_0311562c);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_00412f82(undefined4 *param_1_00,byte param_1)

{
  *(undefined ***)(*(int *)(param_1_00[-1] + 4) + -4 + (int)param_1_00) =
       std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  *param_1_00 = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -1);
  }
  return param_1_00 + -1;
}



void __fastcall FUN_00412fb8(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -4) + 4) + -4 + param_1) =
       std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  return;
}



int __thiscall FUN_00412fc7(int param_1_00,byte param_1)

{
  FUN_00412fe6();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -8);
  }
  return param_1_00 + -8;
}



void __fastcall FUN_00412fe6(int *param_1)

{
  int *piVar1;
  
  piVar1 = param_1 + 2;
  *(undefined ***)(*(int *)(*param_1 + 4) + -8 + (int)piVar1) =
       std::basic_istream<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  *piVar1 = (int)std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)piVar1);
  return;
}



void __fastcall FUN_00413005(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -8) + 4) + -8 + param_1) =
       std::basic_istream<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00413014(int param_1)

{
  uint uVar1;
  undefined local_4c [24];
  undefined4 local_34;
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x413020;
  if (((*(uint *)(param_1 + 0x40) & 2) == 0) && (**(uint **)(param_1 + 0x24) != 0)) {
    uVar1 = **(uint **)(param_1 + 0x24);
    if (uVar1 <= *(uint *)(param_1 + 0x3c)) {
      uVar1 = *(uint *)(param_1 + 0x3c);
    }
    basic_string<>(**(int **)(param_1 + 0x14),(int)(uVar1 - **(int **)(param_1 + 0x14)) >> 1);
    local_8 = 0;
  }
  else {
    if (((*(uint *)(param_1 + 0x40) & 4) != 0) || (**(int **)(param_1 + 0x20) == 0)) {
      local_34 = 7;
      FUN_0040180b(0);
      local_8 = 2;
      basic_string<>(local_4c);
      goto LAB_004130bf;
    }
    basic_string<>(**(int **)(param_1 + 0x10),
                   (**(int **)(param_1 + 0x20) + **(int **)(param_1 + 0x30) * 2) -
                   **(int **)(param_1 + 0x10) >> 1);
    local_8 = 1;
  }
  basic_string<>(local_30);
LAB_004130bf:
  FUN_00401829(1,0);
  FUN_00a421fb();
  return;
}



void __fastcall FUN_004130d1(undefined4 *param_1)

{
  *param_1 = std::
             basic_stringbuf<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             ::vftable;
  if ((*(byte *)(param_1 + 0x10) & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)param_1[4]);
  }
  *(undefined4 *)param_1[4] = 0;
  *(undefined4 *)param_1[8] = 0;
  *(undefined4 *)param_1[0xc] = 0;
  *(undefined4 *)param_1[5] = 0;
  *(undefined4 *)param_1[9] = 0;
  *(undefined4 *)param_1[0xd] = 0;
  param_1[0x10] = param_1[0x10] & 0xfffffffe;
  param_1[0xf] = 0;
  FUN_0041321a();
  return;
}



// Library Function - Single Match
//  public: __thiscall std::locale::locale(void)
// 
// Library: Visual Studio 2008 Release

locale * __thiscall std::locale::locale(locale *this)

{
  _Locimp *p_Var1;
  facet *this_00;
  
  p_Var1 = _Init();
  *(_Locimp **)this = p_Var1;
  this_00 = (facet *)FUN_008238c4();
  facet::_Incref(this_00);
  return this;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: void __thiscall std::basic_streambuf<char,struct std::char_traits<char>
// >::_Init(void)
//  protected: void __thiscall std::basic_streambuf<unsigned short,struct std::char_traits<unsigned
// short> >::_Init(void)
//  protected: void __thiscall std::basic_streambuf<wchar_t,struct std::char_traits<wchar_t>
// >::_Init(void)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __fastcall Init(int param_1)

{
  *(int *)(param_1 + 0x20) = param_1 + 0x18;
  *(int *)(param_1 + 0x24) = param_1 + 0x1c;
  *(int *)(param_1 + 0x30) = param_1 + 0x28;
  *(int *)(param_1 + 0x10) = param_1 + 8;
  *(int *)(param_1 + 0x34) = param_1 + 0x2c;
  *(undefined4 **)(param_1 + 0x14) = (undefined4 *)(param_1 + 0xc);
  *(undefined4 *)(param_1 + 0xc) = 0;
  **(undefined4 **)(param_1 + 0x24) = 0;
  **(undefined4 **)(param_1 + 0x34) = 0;
  **(undefined4 **)(param_1 + 0x10) = 0;
  **(undefined4 **)(param_1 + 0x20) = 0;
  **(undefined4 **)(param_1 + 0x30) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  protected: __thiscall std::basic_streambuf<char,struct std::char_traits<char>
// >::basic_streambuf<char,struct std::char_traits<char> >(void)
//  protected: __thiscall std::basic_streambuf<unsigned short,struct std::char_traits<unsigned
// short> >::basic_streambuf<unsigned short,struct std::char_traits<unsigned short> >(void)
//  protected: __thiscall std::basic_streambuf<wchar_t,struct std::char_traits<wchar_t>
// >::basic_streambuf<wchar_t,struct std::char_traits<wchar_t> >(void)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

undefined4 * __fastcall basic_streambuf<>(undefined4 *param_1)

{
  locale *this;
  undefined4 uVar1;
  
  *param_1 = std::basic_streambuf<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  std::_Mutex::_Mutex((_Mutex *)(param_1 + 1));
  this = (locale *)operator_new(4);
  if (this == (locale *)0x0) {
    uVar1 = 0;
  }
  else {
    uVar1 = std::locale::locale(this);
  }
  param_1[0xe] = uVar1;
  Init();
  return param_1;
}



undefined4 __thiscall FUN_004131c2(undefined4 param_1,byte param_2)

{
  FUN_0041321a();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 FUN_004131de(void)

{
  return 0xffff;
}



void FUN_004131e6(undefined4 *param_1)

{
  *param_1 = 0xffffffff;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  return;
}



void FUN_00413200(undefined4 *param_1)

{
  *param_1 = 0xffffffff;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  return;
}



void __fastcall FUN_0041321a(undefined4 *param_1)

{
  locale *this;
  
  this = (locale *)param_1[0xe];
  *param_1 = std::basic_streambuf<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  if (this != (locale *)0x0) {
    std::locale::~locale(this);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(this);
  }
  FUN_00823c4d();
  return;
}



undefined4 __thiscall FUN_00413243(undefined4 param_1,byte param_2)

{
  FUN_004130d1();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_0041325f(int param_1_00,short param_1)

{
  short *psVar1;
  int iVar2;
  byte bVar3;
  int iVar4;
  short *psVar5;
  int iVar6;
  undefined4 uVar7;
  int iVar8;
  int *piVar9;
  uint uVar10;
  uint uVar11;
  bool bVar12;
  
  if ((*(byte *)(param_1_00 + 0x40) & 8) != 0) {
    uVar11 = **(uint **)(param_1_00 + 0x24);
    if ((uVar11 != 0) && (uVar10 = *(uint *)(param_1_00 + 0x3c), uVar11 < uVar10)) {
      iVar4 = **(int **)(param_1_00 + 0x34);
      **(uint **)(param_1_00 + 0x24) = uVar10;
      **(int **)(param_1_00 + 0x34) = (int)((uVar11 + iVar4 * 2) - uVar10) >> 1;
    }
  }
  if (param_1 == -1) {
    uVar7 = FUN_0041343b(&param_1);
    return uVar7;
  }
  uVar11 = **(uint **)(param_1_00 + 0x24);
  if ((uVar11 != 0) && (piVar9 = *(int **)(param_1_00 + 0x34), uVar11 < uVar11 + *piVar9 * 2)) {
    *piVar9 = *piVar9 + -1;
    psVar5 = **(short ***)(param_1_00 + 0x24);
    psVar1 = psVar5 + 1;
    **(short ***)(param_1_00 + 0x24) = psVar1;
    *psVar5 = param_1;
    return CONCAT22((short)((uint)psVar1 >> 0x10),param_1);
  }
  if ((*(byte *)(param_1_00 + 0x40) & 2) != 0) {
    return 0xffff;
  }
  if (uVar11 == 0) {
    uVar11 = 0;
  }
  else {
    uVar11 = (int)((**(int **)(param_1_00 + 0x34) * 2 - **(int **)(param_1_00 + 0x10)) + uVar11) >>
             1;
  }
  uVar10 = uVar11 >> 1;
  if (uVar10 < 0x20) {
    uVar10 = 0x20;
LAB_00413317:
    do {
      if (uVar11 <= 0x7fffffff - uVar10) break;
      uVar10 = uVar10 >> 1;
    } while (uVar10 != 0);
    bVar12 = uVar10 == 0;
  }
  else {
    bVar12 = uVar10 == 0;
    if (!bVar12) goto LAB_00413317;
  }
  if (bVar12) {
    return 0xffff;
  }
  iVar4 = uVar10 + uVar11;
  iVar8 = _Allocate<>(iVar4,0);
  iVar6 = **(int **)(param_1_00 + 0x10);
  if (uVar11 == 0) {
    *(int *)(param_1_00 + 0x3c) = iVar8;
    **(int **)(param_1_00 + 0x14) = iVar8;
    **(int **)(param_1_00 + 0x24) = iVar8;
    **(int **)(param_1_00 + 0x34) = iVar4 * 2 >> 1;
    bVar3 = *(byte *)(param_1_00 + 0x40);
    **(int **)(param_1_00 + 0x10) = iVar8;
    piVar9 = *(int **)(param_1_00 + 0x20);
    if ((bVar3 & 4) == 0) {
      *piVar9 = iVar8;
      **(undefined4 **)(param_1_00 + 0x30) = 1;
      goto LAB_0041340d;
    }
  }
  else {
    Copy_s(iVar8,iVar4,iVar6,uVar11);
    *(int *)(param_1_00 + 0x3c) = iVar8 + (*(int *)(param_1_00 + 0x3c) - iVar6 >> 1) * 2;
    iVar2 = iVar8 + (**(int **)(param_1_00 + 0x24) - iVar6 >> 1) * 2;
    **(int **)(param_1_00 + 0x14) = iVar8 + (**(int **)(param_1_00 + 0x14) - iVar6 >> 1) * 2;
    **(int **)(param_1_00 + 0x24) = iVar2;
    **(int **)(param_1_00 + 0x34) = (iVar4 * 2 - iVar2) + iVar8 >> 1;
    if ((*(byte *)(param_1_00 + 0x40) & 4) == 0) {
      iVar2 = **(int **)(param_1_00 + 0x24);
      iVar4 = iVar8 + (**(int **)(param_1_00 + 0x20) - iVar6 >> 1) * 2;
      **(int **)(param_1_00 + 0x10) = iVar8;
      **(int **)(param_1_00 + 0x20) = iVar4;
      **(int **)(param_1_00 + 0x30) = (iVar2 - iVar4) + 2 >> 1;
      goto LAB_0041340d;
    }
    **(int **)(param_1_00 + 0x10) = iVar8;
    piVar9 = *(int **)(param_1_00 + 0x20);
  }
  *piVar9 = 0;
  **(int **)(param_1_00 + 0x30) = iVar8 >> 1;
LAB_0041340d:
  if ((*(byte *)(param_1_00 + 0x40) & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar6);
  }
  *(uint *)(param_1_00 + 0x40) = *(uint *)(param_1_00 + 0x40) | 1;
  **(int **)(param_1_00 + 0x34) = **(int **)(param_1_00 + 0x34) + -1;
  psVar5 = **(short ***)(param_1_00 + 0x24);
  psVar1 = psVar5 + 1;
  **(short ***)(param_1_00 + 0x24) = psVar1;
  *psVar5 = param_1;
  return CONCAT22((short)((uint)psVar1 >> 0x10),param_1);
}



short FUN_0041343b(short *param_1)

{
  if (*param_1 != -1) {
    return *param_1;
  }
  return 0;
}



void __thiscall FUN_00413453(int param_1_00,short param_1)

{
  uint uVar1;
  
  uVar1 = **(uint **)(param_1_00 + 0x20);
  if ((uVar1 != 0) && (**(uint **)(param_1_00 + 0x10) < uVar1)) {
    if ((param_1 == -1) ||
       ((param_1 == *(short *)(uVar1 - 2) || ((*(byte *)(param_1_00 + 0x40) & 2) == 0)))) {
      **(int **)(param_1_00 + 0x30) = **(int **)(param_1_00 + 0x30) + 1;
      **(int **)(param_1_00 + 0x20) = **(int **)(param_1_00 + 0x20) + -2;
      if (param_1 != -1) {
        ***(short ***)(param_1_00 + 0x20) = param_1;
      }
      FUN_0041343b(&param_1);
    }
  }
  return;
}



undefined4 __fastcall FUN_004134aa(int param_1)

{
  int *piVar1;
  undefined2 *puVar2;
  undefined2 *puVar3;
  undefined4 uVar4;
  
  piVar1 = *(int **)(param_1 + 0x20);
  puVar2 = (undefined2 *)*piVar1;
  if (puVar2 == (undefined2 *)0x0) {
    return 0xffff;
  }
  if (puVar2 < puVar2 + **(int **)(param_1 + 0x30)) {
    uVar4 = CONCAT22((short)((uint)piVar1 >> 0x10),*puVar2);
  }
  else if ((((*(byte *)(param_1 + 0x40) & 4) == 0) &&
           (puVar3 = (undefined2 *)**(undefined4 **)(param_1 + 0x24), puVar3 != (undefined2 *)0x0))
          && ((puVar2 < puVar3 || (puVar2 < *(undefined2 **)(param_1 + 0x3c))))) {
    if (*(undefined2 **)(param_1 + 0x3c) < puVar3) {
      *(undefined2 **)(param_1 + 0x3c) = puVar3;
    }
    **(int **)(param_1 + 0x30) = *(int *)(param_1 + 0x3c) - *piVar1 >> 1;
    uVar4 = CONCAT22((short)((uint)(undefined2 *)**(undefined4 **)(param_1 + 0x20) >> 0x10),
                     *(undefined2 *)**(undefined4 **)(param_1 + 0x20));
  }
  else {
    uVar4 = 0xffff;
  }
  return uVar4;
}



void __thiscall FUN_0041350e(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  (**(code **)(*param_1_00 + 0x1c))(param_1,0xffffffff,param_2);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual int __thiscall std::basic_streambuf<unsigned short,struct
// std::char_traits<unsigned short> >::_Xsgetn_s(unsigned short *,unsigned int,int)
//  protected: virtual int __thiscall std::basic_streambuf<wchar_t,struct std::char_traits<wchar_t>
// >::_Xsgetn_s(wchar_t *,unsigned int,int)
// 
// Libraries: Visual Studio 2008 Debug, Visual Studio 2008 Release

int __thiscall Xsgetn_s(int *param_1_00,short *param_1,undefined4 param_2,int param_3)

{
  short sVar1;
  int iVar2;
  int local_8;
  
  local_8 = 0;
  if (0 < param_3) {
    do {
      if (*(int *)param_1_00[8] == 0) {
        iVar2 = 0;
      }
      else {
        iVar2 = *(int *)param_1_00[0xc];
      }
      if (iVar2 < 1) {
        sVar1 = (**(code **)(*param_1_00 + 0x14))();
        if (sVar1 == -1) {
          return local_8;
        }
        *param_1 = sVar1;
        param_1 = param_1 + 1;
        local_8 = local_8 + 1;
        param_3 = param_3 + -1;
      }
      else {
        if (param_3 < iVar2) {
          iVar2 = param_3;
        }
        Copy_s(param_1,param_2,*(int *)param_1_00[8],iVar2);
        *(int *)param_1_00[0xc] = *(int *)param_1_00[0xc] - iVar2;
        local_8 = local_8 + iVar2;
        param_3 = param_3 - iVar2;
        param_1 = param_1 + iVar2;
        *(int *)param_1_00[8] = *(int *)param_1_00[8] + iVar2 * 2;
      }
    } while (0 < param_3);
  }
  return local_8;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual int __thiscall std::basic_streambuf<unsigned short,struct
// std::char_traits<unsigned short> >::xsputn(unsigned short const *,int)
//  protected: virtual int __thiscall std::basic_streambuf<wchar_t,struct std::char_traits<wchar_t>
// >::xsputn(wchar_t const *,int)
// 
// Libraries: Visual Studio 2008 Debug, Visual Studio 2008 Release

int __thiscall xsputn(int *param_1_00,undefined2 *param_1,int param_2)

{
  short sVar1;
  int iVar2;
  int iVar3;
  int local_8;
  
  local_8 = 0;
  if (0 < param_2) {
    do {
      if (*(int *)param_1_00[9] == 0) {
        iVar2 = 0;
      }
      else {
        iVar2 = *(int *)param_1_00[0xd];
      }
      if (iVar2 < 1) {
        sVar1 = (**(code **)(*param_1_00 + 4))(*param_1);
        if (sVar1 == -1) {
          return local_8;
        }
        param_1 = param_1 + 1;
        local_8 = local_8 + 1;
        param_2 = param_2 + -1;
      }
      else {
        iVar3 = iVar2;
        if (param_2 < iVar2) {
          iVar3 = param_2;
        }
        Copy_s(*(int *)param_1_00[9],iVar2,param_1,iVar3);
        *(int *)param_1_00[0xd] = *(int *)param_1_00[0xd] - iVar3;
        local_8 = local_8 + iVar3;
        param_2 = param_2 - iVar3;
        param_1 = param_1 + iVar3;
        *(int *)param_1_00[9] = *(int *)param_1_00[9] + iVar3 * 2;
      }
    } while (0 < param_2);
  }
  return local_8;
}



void __thiscall FUN_0041362e(int param_1_00,int *param_1,int param_2,int param_3,byte param_4)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  
  uVar1 = **(uint **)(param_1_00 + 0x24);
  if ((uVar1 != 0) && (*(uint *)(param_1_00 + 0x3c) < uVar1)) {
    *(uint *)(param_1_00 + 0x3c) = uVar1;
  }
  if (((param_4 & 1) != 0) && (iVar4 = **(int **)(param_1_00 + 0x20), iVar4 != 0)) {
    if (param_3 == 2) {
      iVar6 = *(int *)(param_1_00 + 0x3c);
LAB_0041367b:
      iVar6 = param_2 + (iVar6 - **(int **)(param_1_00 + 0x10) >> 1);
    }
    else if (param_3 == 1) {
      iVar6 = iVar4;
      if ((param_4 & 2) == 0) goto LAB_0041367b;
LAB_0041368f:
      iVar6 = -1;
    }
    else {
      iVar6 = param_2;
      if (param_3 != 0) goto LAB_0041368f;
    }
    if ((iVar6 < 0) || (*(int *)(param_1_00 + 0x3c) - **(int **)(param_1_00 + 0x10) >> 1 < iVar6)) {
      iVar6 = -1;
    }
    else {
      iVar4 = (**(int **)(param_1_00 + 0x10) - iVar4 >> 1) + iVar6;
      **(int **)(param_1_00 + 0x30) = **(int **)(param_1_00 + 0x30) - iVar4;
      **(int **)(param_1_00 + 0x20) = **(int **)(param_1_00 + 0x20) + iVar4 * 2;
      if ((param_4 & 2) != 0) {
        iVar4 = **(int **)(param_1_00 + 0x24);
        if (iVar4 != 0) {
          iVar2 = **(int **)(param_1_00 + 0x34);
          iVar3 = **(int **)(param_1_00 + 0x20);
          **(int **)(param_1_00 + 0x24) = iVar3;
          **(int **)(param_1_00 + 0x34) = (iVar4 + iVar2 * 2) - iVar3 >> 1;
        }
      }
    }
    goto LAB_00413761;
  }
  if (((param_4 & 2) == 0) || (uVar1 = **(uint **)(param_1_00 + 0x24), uVar1 == 0)) {
    iVar6 = -1;
    goto LAB_00413761;
  }
  if (param_3 == 2) {
    uVar5 = *(uint *)(param_1_00 + 0x3c);
LAB_00413716:
    iVar6 = param_2 + ((int)(uVar5 - **(int **)(param_1_00 + 0x10)) >> 1);
  }
  else {
    uVar5 = uVar1;
    if (param_3 == 1) goto LAB_00413716;
    iVar6 = -1;
    if (param_3 == 0) {
      iVar6 = param_2;
    }
  }
  if ((iVar6 < 0) || (*(int *)(param_1_00 + 0x3c) - **(int **)(param_1_00 + 0x10) >> 1 < iVar6)) {
    iVar6 = -1;
  }
  else {
    iVar4 = ((int)(**(int **)(param_1_00 + 0x10) - uVar1) >> 1) + iVar6;
    **(int **)(param_1_00 + 0x34) = **(int **)(param_1_00 + 0x34) - iVar4;
    **(int **)(param_1_00 + 0x24) = **(int **)(param_1_00 + 0x24) + iVar4 * 2;
  }
LAB_00413761:
  *param_1 = iVar6;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  return;
}



void __thiscall FUN_00413778(int param_1_00,int *param_1,int param_2,undefined4 param_3,int param_4)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  byte param_8;
  
  param_4 = param_4 + param_2;
  uVar1 = **(uint **)(param_1_00 + 0x24);
  if ((uVar1 != 0) && (*(uint *)(param_1_00 + 0x3c) < uVar1)) {
    *(uint *)(param_1_00 + 0x3c) = uVar1;
  }
  if (param_4 != -1) {
    if (((param_8 & 1) == 0) || (**(int **)(param_1_00 + 0x20) == 0)) {
      if (((param_8 & 2) != 0) &&
         (((uVar1 = **(uint **)(param_1_00 + 0x24), uVar1 != 0 && (-1 < param_4)) &&
          (param_4 <= *(int *)(param_1_00 + 0x3c) - **(int **)(param_1_00 + 0x10) >> 1)))) {
        iVar4 = ((int)(**(int **)(param_1_00 + 0x10) - uVar1) >> 1) + param_4;
        **(int **)(param_1_00 + 0x34) = **(int **)(param_1_00 + 0x34) - iVar4;
        **(int **)(param_1_00 + 0x24) = **(int **)(param_1_00 + 0x24) + iVar4 * 2;
        goto LAB_0041383b;
      }
    }
    else if ((-1 < param_4) &&
            (param_4 <= *(int *)(param_1_00 + 0x3c) - **(int **)(param_1_00 + 0x10) >> 1)) {
      iVar4 = (**(int **)(param_1_00 + 0x10) - **(int **)(param_1_00 + 0x20) >> 1) + param_4;
      **(int **)(param_1_00 + 0x30) = **(int **)(param_1_00 + 0x30) - iVar4;
      **(int **)(param_1_00 + 0x20) = **(int **)(param_1_00 + 0x20) + iVar4 * 2;
      if ((param_8 & 2) != 0) {
        iVar4 = **(int **)(param_1_00 + 0x24);
        if (iVar4 != 0) {
          iVar2 = **(int **)(param_1_00 + 0x34);
          iVar3 = **(int **)(param_1_00 + 0x20);
          **(int **)(param_1_00 + 0x24) = iVar3;
          **(int **)(param_1_00 + 0x34) = (iVar4 + iVar2 * 2) - iVar3 >> 1;
        }
      }
      goto LAB_0041383b;
    }
    param_4 = -1;
  }
LAB_0041383b:
  *param_1 = param_4;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  return;
}



undefined4 __fastcall FUN_00413851(undefined4 param_1)

{
  return param_1;
}



void FUN_00413856(void)

{
  int iVar1;
  int in_EAX;
  int iVar2;
  int iVar3;
  int unaff_ESI;
  
  if (((byte)*(undefined4 *)(unaff_ESI + 0x40) & 6) != 6) {
    iVar2 = _Allocate<>();
    Copy_s(iVar2);
    iVar1 = in_EAX * 2;
    *(int *)(unaff_ESI + 0x3c) = iVar1 + iVar2;
    if ((*(byte *)(unaff_ESI + 0x40) & 4) == 0) {
      **(int **)(unaff_ESI + 0x10) = iVar2;
      **(int **)(unaff_ESI + 0x20) = iVar2;
      **(int **)(unaff_ESI + 0x30) = iVar1 >> 1;
    }
    if ((*(uint *)(unaff_ESI + 0x40) & 2) == 0) {
      iVar3 = iVar1 + iVar2;
      if ((*(uint *)(unaff_ESI + 0x40) & 0x10) == 0) {
        iVar3 = iVar2;
      }
      **(int **)(unaff_ESI + 0x14) = iVar2;
      **(int **)(unaff_ESI + 0x24) = iVar3;
      **(int **)(unaff_ESI + 0x34) = (iVar1 - iVar3) + iVar2 >> 1;
      if (**(int **)(unaff_ESI + 0x20) == 0) {
        **(int **)(unaff_ESI + 0x10) = iVar2;
        **(undefined4 **)(unaff_ESI + 0x20) = 0;
        **(int **)(unaff_ESI + 0x30) = iVar2 >> 1;
      }
    }
    *(uint *)(unaff_ESI + 0x40) = *(uint *)(unaff_ESI + 0x40) | 1;
  }
  return;
}



uint FUN_004138e6(byte param_1)

{
  uint uVar1;
  
  uVar1 = 0;
  if ((param_1 & 1) == 0) {
    uVar1 = 4;
  }
  if ((param_1 & 2) == 0) {
    uVar1 = uVar1 | 2;
  }
  if ((param_1 & 8) != 0) {
    uVar1 = uVar1 | 8;
  }
  if ((param_1 & 4) != 0) {
    uVar1 = uVar1 | 0x10;
  }
  return uVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0041390f(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  basic_streambuf<>();
  param_1[0xf] = 0;
  *param_1 = std::
             basic_stringbuf<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             ::vftable;
  uVar1 = FUN_004138e6(param_2);
  param_1[0x10] = uVar1;
  return param_1;
}



locale * __thiscall FUN_00413944(locale *param_1_00,byte param_1)

{
  std::locale::~locale(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall thunk_FUN_00413965(int **param_1)

{
  if (*(int *)(*(int *)(**param_1 + 4) + 0x28 + (int)*param_1) != 0) {
    FUN_00823c6d();
    return;
  }
  return;
}



void __fastcall FUN_00413965(int **param_1)

{
  if (*(int *)(*(int *)(**param_1 + 4) + 0x28 + (int)*param_1) != 0) {
    FUN_00823c6d();
    return;
  }
  return;
}



undefined4 __thiscall FUN_0041397d(undefined4 param_1_00,byte param_1)

{
  FUN_00413999();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00413999(undefined4 *param_1)

{
  *param_1 = std::ctype<wchar_t>::vftable;
  if (param_1[5] != 0) {
    _free((void *)param_1[4]);
  }
  *param_1 = std::locale::facet::vftable;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short const * __thiscall std::ctype<unsigned short>::do_is(unsigned
// short const *,unsigned short const *,short *)const 
//  protected: virtual wchar_t const * __thiscall std::ctype<wchar_t>::do_is(wchar_t const *,wchar_t
// const *,short *)const 
// 
// Library: Visual Studio 2005 Release

void __thiscall do_is(int param_1_00,wchar_t *param_1,wchar_t *param_2,short *param_3)

{
  __Getwctypes(param_1,param_2,param_3,(_Ctypevec *)(param_1_00 + 8));
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short const * __thiscall std::ctype<unsigned
// short>::do_scan_is(short,unsigned short const *,unsigned short const *)const 
//  protected: virtual wchar_t const * __thiscall std::ctype<wchar_t>::do_scan_is(short,wchar_t
// const *,wchar_t const *)const 
// 
// Library: Visual Studio 2005 Release

undefined2 * __thiscall
do_scan_is(int *param_1_00,undefined4 param_1,undefined2 *param_2,undefined2 *param_3)

{
  char cVar1;
  
  while( true ) {
    if (param_2 == param_3) {
      return param_2;
    }
    cVar1 = (**(code **)(*param_1_00 + 8))(param_1,*param_2);
    if (cVar1 != '\0') break;
    param_2 = param_2 + 1;
  }
  return param_2;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short const * __thiscall std::ctype<unsigned
// short>::do_scan_not(short,unsigned short const *,unsigned short const *)const 
//  protected: virtual wchar_t const * __thiscall std::ctype<wchar_t>::do_scan_not(short,wchar_t
// const *,wchar_t const *)const 
// 
// Library: Visual Studio 2005 Release

undefined2 * __thiscall
do_scan_not(int *param_1_00,undefined4 param_1,undefined2 *param_2,undefined2 *param_3)

{
  char cVar1;
  
  while( true ) {
    if (param_2 == param_3) {
      return param_2;
    }
    cVar1 = (**(code **)(*param_1_00 + 8))(param_1,*param_2);
    if (cVar1 == '\0') break;
    param_2 = param_2 + 1;
  }
  return param_2;
}



wchar_t * __thiscall FUN_00413a2c(int param_1_00,wchar_t *param_1,wchar_t *param_2)

{
  wchar_t wVar1;
  
  if (param_1 != param_2) {
    do {
      wVar1 = __Towlower(*param_1,(_Ctypevec *)(param_1_00 + 8));
      *param_1 = wVar1;
      param_1 = param_1 + 1;
    } while (param_1 != param_2);
  }
  return param_1;
}



void __thiscall FUN_00413a59(int param_1_00,wchar_t param_1)

{
  __Towlower(param_1,(_Ctypevec *)(param_1_00 + 8));
  return;
}



wchar_t * __thiscall FUN_00413a6b(int param_1_00,wchar_t *param_1,wchar_t *param_2)

{
  wchar_t wVar1;
  
  if (param_1 != param_2) {
    do {
      wVar1 = __Towupper(*param_1,(_Ctypevec *)(param_1_00 + 8));
      *param_1 = wVar1;
      param_1 = param_1 + 1;
    } while (param_1 != param_2);
  }
  return param_1;
}



void __thiscall FUN_00413a98(int param_1_00,wchar_t param_1)

{
  __Towupper(param_1,(_Ctypevec *)(param_1_00 + 8));
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual char const * __thiscall std::ctype<unsigned short>::do_widen(char const
// *,char const *,unsigned short *)const 
//  protected: virtual char const * __thiscall std::ctype<wchar_t>::do_widen(char const *,char const
// *,wchar_t *)const 
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void __thiscall do_widen(int *param_1_00,int param_1,int param_2,undefined4 param_3)

{
  (**(code **)(*param_1_00 + 0x2c))(param_1,param_2,param_3,param_2 - param_1);
  return;
}



uint __fastcall Dowiden(uint param_1)

{
  int iVar1;
  uint uVar2;
  mbstate_t mStack_c;
  uint uStack_8;
  
  mStack_c = 0;
  uStack_8 = param_1;
  iVar1 = __Mbrtowc((wchar_t *)&uStack_8,&stack0x00000004,1,&mStack_c,(_Cvtvec *)(param_1 + 0x18));
  uVar2 = 0xffff;
  if (-1 < iVar1) {
    uVar2 = uStack_8 & 0xffff;
  }
  return uVar2;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: unsigned short __thiscall std::ctype<unsigned short>::_Dowiden(char)const 
//  protected: wchar_t __thiscall std::ctype<wchar_t>::_Dowiden(char)const 
// 
// Library: Visual Studio 2008 Release

uint __fastcall Dowiden(uint param_1)

{
  int iVar1;
  uint uVar2;
  mbstate_t local_c;
  uint local_8;
  
  local_c = 0;
  local_8 = param_1;
  iVar1 = __Mbrtowc((wchar_t *)&local_8,&stack0x00000004,1,&local_c,(_Cvtvec *)(param_1 + 0x18));
  uVar2 = 0xffff;
  if (-1 < iVar1) {
    uVar2 = local_8 & 0xffff;
  }
  return uVar2;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual char const * __thiscall std::ctype<unsigned short>::_Do_widen_s(char const
// *,char const *,unsigned short *,unsigned int)const 
//  protected: virtual char const * __thiscall std::ctype<wchar_t>::_Do_widen_s(char const *,char
// const *,wchar_t *,unsigned int)const 
// 
// Library: Visual Studio 2008 Release

undefined * Do_widen_s(undefined *param_1,undefined *param_2,undefined2 *param_3,uint param_4)

{
  undefined2 uVar1;
  
  if (param_4 < (uint)((int)param_2 - (int)param_1)) {
    FUN_00a3fb10();
  }
  if (param_1 != param_2) {
    do {
      uVar1 = Dowiden(*param_1);
      *param_3 = uVar1;
      param_1 = param_1 + 1;
      param_3 = param_3 + 1;
    } while (param_1 != param_2);
  }
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short const * __thiscall std::ctype<unsigned
// short>::do_narrow(unsigned short const *,unsigned short const *,char,char *)const 
//  protected: virtual wchar_t const * __thiscall std::ctype<wchar_t>::do_narrow(wchar_t const
// *,wchar_t const *,char,char *)const 
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void __thiscall
do_narrow(int *param_1_00,int param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  (**(code **)(*param_1_00 + 0x38))(param_1,param_2,param_3,param_4,param_2 - param_1 >> 1);
  return;
}



void __thiscall Donarrow(int param_1_00,wchar_t param_1)

{
  mbstate_t mStack_14;
  char acStack_10 [8];
  uint uStack_8;
  
  uStack_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  mStack_14 = 0;
  __Wcrtomb(acStack_10,param_1,&mStack_14,(_Cvtvec *)(param_1_00 + 0x18));
  ___security_check_cookie_4();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: char __thiscall std::ctype<unsigned short>::_Donarrow(unsigned short,char)const 
//  protected: char __thiscall std::ctype<wchar_t>::_Donarrow(wchar_t,char)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall Donarrow(int param_1_00,wchar_t param_1)

{
  mbstate_t local_14;
  char local_10 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = 0;
  __Wcrtomb(local_10,param_1,&local_14,(_Cvtvec *)(param_1_00 + 0x18));
  ___security_check_cookie_4();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short const * __thiscall std::ctype<unsigned
// short>::_Do_narrow_s(unsigned short const *,unsigned short const *,char,char *,unsigned int)const
// 
//  protected: virtual wchar_t const * __thiscall std::ctype<wchar_t>::_Do_narrow_s(wchar_t const
// *,wchar_t const *,char,char *,unsigned int)const 
// 
// Library: Visual Studio 2008 Release

undefined2 *
Do_narrow_s(undefined2 *param_1,undefined2 *param_2,undefined4 param_3,undefined *param_4,
           uint param_5)

{
  undefined uVar1;
  
  if (param_5 < (uint)((int)param_2 - (int)param_1 >> 1)) {
    FUN_00a3fb10();
  }
  if (param_1 != param_2) {
    do {
      uVar1 = Donarrow(*param_1,param_3);
      param_1 = param_1 + 1;
      *param_4 = uVar1;
      param_4 = param_4 + 1;
    } while (param_1 != param_2);
  }
  return param_1;
}



// Library Function - Single Match
//  public: struct _Ctypevec __thiscall std::_Locinfo::_Getctype(void)const 
// 
// Library: Visual Studio 2008 Release

_Ctypevec * __thiscall std::_Locinfo::_Getctype(_Locinfo *this,_Ctypevec *__return_storage_ptr__)

{
  _Ctypevec *p_Var1;
  _Ctypevec local_14;
  
  p_Var1 = __Getctype(&local_14);
  __return_storage_ptr__->_Page = p_Var1->_Page;
  __return_storage_ptr__->_Table = p_Var1->_Table;
  __return_storage_ptr__->_Delfl = p_Var1->_Delfl;
  __return_storage_ptr__->_LocaleName = p_Var1->_LocaleName;
  return __return_storage_ptr__;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: void __thiscall std::ctype<unsigned short>::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::ctype<wchar_t>::_Init(class std::_Locinfo const &)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release

void __thiscall Init(int param_1_00,_Locinfo *param_1)

{
  _Ctypevec *p_Var1;
  _Collvec _Var2;
  _Ctypevec local_14;
  
  p_Var1 = std::_Locinfo::_Getctype(param_1,&local_14);
  *(uint *)(param_1_00 + 8) = p_Var1->_Page;
  *(short **)(param_1_00 + 0xc) = p_Var1->_Table;
  *(int *)(param_1_00 + 0x10) = p_Var1->_Delfl;
  *(wchar_t **)(param_1_00 + 0x14) = p_Var1->_LocaleName;
  _Var2 = __Getcoll();
  *(_Collvec *)(param_1_00 + 0x18) = _Var2;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::ctype<unsigned short>::ctype<unsigned short>(class std::_Locinfo const
// &,unsigned int)
//  public: __thiscall std::ctype<wchar_t>::ctype<wchar_t>(class std::_Locinfo const &,unsigned int)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release

undefined4 * __thiscall ctype<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::ctype<wchar_t>::vftable;
  Init(param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00413c65(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0x413c74;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x20);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = ctype<>(uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

facet * FUN_00413d06(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x413d12;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032ef6b8;
  local_8 = 0;
  local_14[0] = DAT_032ef6b8;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032bc824);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = FUN_00413c65(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032ef6b8 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short __thiscall std::basic_streambuf<unsigned short,struct
// std::char_traits<unsigned short> >::uflow(void)
//  protected: virtual unsigned short __thiscall std::basic_streambuf<wchar_t,struct
// std::char_traits<wchar_t> >::uflow(void)
// 
// Libraries: Visual Studio 2008 Debug, Visual Studio 2008 Release

undefined2 __fastcall uflow(int *param_1)

{
  undefined2 *puVar1;
  short sVar2;
  
  sVar2 = (**(code **)(*param_1 + 0x10))();
  if (sVar2 == -1) {
    return 0xffff;
  }
  *(int *)param_1[0xc] = *(int *)param_1[0xc] + -1;
  puVar1 = *(undefined2 **)(int *)param_1[8];
  *(int *)param_1[8] = (int)(puVar1 + 1);
  return *puVar1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: unsigned short __thiscall std::basic_streambuf<unsigned short,struct
// std::char_traits<unsigned short> >::sbumpc(void)
//  public: unsigned short __thiscall std::basic_streambuf<wchar_t,struct std::char_traits<wchar_t>
// >::sbumpc(void)
// 
// Library: Visual Studio 2008 Release

undefined2 __fastcall sbumpc(int *param_1)

{
  undefined2 *puVar1;
  undefined2 uVar2;
  int iVar3;
  
  if (*(int *)param_1[8] == 0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *(int *)param_1[0xc];
  }
  if (0 < iVar3) {
    *(int *)param_1[0xc] = *(int *)param_1[0xc] + -1;
    puVar1 = *(undefined2 **)(int *)param_1[8];
    *(int *)param_1[8] = (int)(puVar1 + 1);
    return *puVar1;
  }
  uVar2 = (**(code **)(*param_1 + 0x14))();
  return uVar2;
}



undefined4 FUN_00413e00(void)

{
  return 0xffff;
}



undefined2 __fastcall FUN_00413e06(int param_1)

{
  short sVar1;
  undefined2 uVar2;
  int iVar3;
  
  iVar3 = 0;
  if (**(int **)(param_1 + 0x20) != 0) {
    iVar3 = **(int **)(param_1 + 0x30);
  }
  if (1 < iVar3) {
    **(int **)(param_1 + 0x30) = **(int **)(param_1 + 0x30) + -1;
    **(int **)(param_1 + 0x20) = **(int **)(param_1 + 0x20) + 2;
    return *(undefined2 *)**(undefined4 **)(param_1 + 0x20);
  }
  sVar1 = sbumpc();
  if (sVar1 == -1) {
    return 0xffff;
  }
  uVar2 = sgetc();
  return uVar2;
}



bool __thiscall FUN_00413e54(int param_1_00,ushort param_1,wchar_t param_2)

{
  ushort uVar1;
  
  uVar1 = __Getwctype(param_2,(_Ctypevec *)(param_1_00 + 8));
  return (param_1 & uVar1) != 0;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

uint __thiscall FUN_00413e71(int *param_1_00,locale param_1)

{
  char cVar1;
  short sVar2;
  undefined4 uVar3;
  int *piVar4;
  uint uVar5;
  int iVar6;
  
  iVar6 = *(int *)(*param_1_00 + 4) + (int)param_1_00;
  if (*(int *)(iVar6 + 8) == 0) {
    if (*(int *)(iVar6 + 0x2c) != 0) {
      FUN_00415fcd();
    }
    if ((param_1 == (locale)0x0) &&
       ((*(uint *)(*(int *)(*param_1_00 + 4) + 0x10 + (int)param_1_00) & 1) != 0)) {
      uVar3 = FUN_00417498(&param_1);
      piVar4 = (int *)FUN_00413d06(uVar3);
      std::locale::~locale(&param_1);
      sVar2 = sgetc();
      while (sVar2 != -1) {
        cVar1 = (**(code **)(*piVar4 + 8))(0x48,sVar2);
        if (cVar1 == '\0') goto LAB_00413f29;
        sVar2 = FUN_00413e06();
      }
      FUN_00417b70(*(uint *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 8) | 1,0);
LAB_00413f29:
      uVar5 = FUN_00413f66();
      return uVar5;
    }
    iVar6 = *(int *)(*param_1_00 + 4) + (int)param_1_00;
    if (*(int *)(iVar6 + 8) == 0) {
      return CONCAT31((int3)((uint)*(int *)(*param_1_00 + 4) >> 8),1);
    }
  }
  uVar5 = FUN_00417b70(*(uint *)(iVar6 + 8) | 2,0);
  return uVar5 & 0xffffff00;
}



undefined * Catch_All_00413f3f(void)

{
  int unaff_EBP;
  
  FUN_00417b70(*(uint *)((int)*(int **)(unaff_EBP + -0x14) +
                        *(int *)(**(int **)(unaff_EBP + -0x14) + 4) + 8) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  return &DAT_00413f61;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

uint FUN_00413f66(void)

{
  int iVar1;
  uint uVar2;
  int unaff_EBX;
  int *unaff_ESI;
  
  iVar1 = *(int *)(*unaff_ESI + 4);
  if (*(int *)((int)unaff_ESI + iVar1 + 8) == unaff_EBX) {
    uVar2 = CONCAT31((int3)((uint)iVar1 >> 8),1);
  }
  else {
    uVar2 = FUN_00417b70(*(uint *)((int)unaff_ESI + iVar1 + 8) | 2,unaff_EBX);
    uVar2 = uVar2 & 0xffffff00;
  }
  return uVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00413f8e(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  
  FUN_004416bd(param_1);
  uVar1 = FUN_00413e71(param_2);
  *(undefined *)(param_1_00 + 4) = uVar1;
  return param_1_00;
}



void FUN_00413fc2(undefined *param_1)

{
  *param_1 = 0x4e;
  param_1[1] = 0x37;
  param_1[2] = 2;
  param_1[3] = 0x87;
  param_1[4] = 0x3f;
  param_1[5] = 0xfe;
  param_1[6] = 0xe2;
  param_1[7] = 0x22;
  param_1[8] = 0xac;
  param_1[9] = 0x75;
  param_1[10] = 0xb1;
  param_1[0xb] = 0xec;
  param_1[0xc] = 0x80;
  param_1[0xd] = 0xf5;
  param_1[0xe] = 0x25;
  param_1[0xf] = 0x5c;
  return;
}



void Catch_All_0041404c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004140f8(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x414104;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WDE765622::WBE3F1864::RTTI_Type_Descriptor,
                   &WDE765622::W48180F6F::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WDE765622::WBE3F1864::RTTI_Type_Descriptor,
                           &WDE765622::W48180F6F::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



undefined4 FUN_00414eb1(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("D:\\wxWidgets-2.9.3\\include\\wx/msw/gdiimage.h",0x94,
                 "wxGDIImage::CloneGDIRefData","Assert failure",L"must be implemented if used");
  }
  return 0;
}



undefined4 __thiscall FUN_00414ee0(undefined4 param_1_00,byte param_1)

{
  FUN_008f7630();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00414efc(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x00414efe. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x24))();
  return;
}



undefined4 __fastcall FUN_00414f01(int param_1)

{
  char cVar1;
  
  if (*(int *)(param_1 + 4) != 0) {
    cVar1 = (**(code **)(**(int **)(param_1 + 4) + 4))();
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



void __fastcall FUN_00414f1a(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x00414f1c. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x2c))();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00414f38(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = 0;
  *param_1_00 = wxBitmap::vftable;
  FUN_008f4d60(param_1,param_2);
  return param_1_00;
}



undefined4 FUN_0041506b(undefined4 param_1)

{
  int *piVar1;
  undefined4 uVar2;
  undefined local_10 [12];
  
  piVar1 = (int *)FUN_00827d70(local_10,param_1,0);
  if ((*piVar1 == 0) || (uVar2 = 1, *piVar1 == 1)) {
    uVar2 = 0;
  }
  return uVar2;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004151df(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3CA43D38::W66F14F78>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00415225(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0041523c(undefined4 *param_1)

{
  void *pvVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 *param_11;
  
  uVar3 = 0;
  pvVar1 = operator_new(0x90);
  if (pvVar1 != (void *)0x0) {
    param_11 = (undefined4 *)0x0;
    FUN_00672a11();
    uVar3 = FUN_004945cd(pvVar1);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_004151df();
  uVar3 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar3;
  if (pvVar1 != (void *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c();
  FUN_00507e58();
  if (param_11 != (undefined4 *)0x0) {
    (**(code **)*param_11)();
  }
  return param_1;
}



void Catch_All_0041533f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00415413(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00415502(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_00415590(undefined4 param_1_00,undefined4 param_1)

{
  basic_string<>(param_1);
  return param_1_00;
}



void FUN_004155a2(void)

{
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004155ac(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  basic_string<>(param_2);
  uVar1 = FUN_00825e20(param_3);
  basic_string<>(uVar1);
  FUN_00401829(1,0);
  return param_1;
}



undefined4 * __thiscall FUN_004155f4(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WDE765622::WE13D998E::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_00415657(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00415721(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004157eb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004158b5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041597f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00415a03(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB3204DCB::W3EAB728D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00415a49(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00415a60(void)

{
  return 0x93ea627d;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00415a66(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WB3204DCB::W3EAB728D::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00415a03(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00415acd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB3204DCB::W9959A9F6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00415b13(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00415c11(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00415d11(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_00415df6(undefined4 *param_1_00,byte param_1)

{
  param_1_00[1] = WDE765622::W77ADCAD2::vftable;
  *param_1_00 = WDE765622::WE13D998E::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00415e1a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB3204DCB::W684456ED>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00415e60(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_00415e77(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WDE765622::W77ADCAD2::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_00415e94(void)

{
  return 0xf0bc6213;
}



void FUN_00415e9a(void)

{
  FUN_00415df6();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00415ea2(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[1] = WDE765622::W77ADCAD2::vftable;
    *puVar2 = WB3204DCB::W684456ED::vftable;
    puVar2[1] = WB3204DCB::W684456ED::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00415e1a(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 * __thiscall FUN_00415f17(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00415f3b(undefined4 *param_1)

{
  *param_1 = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)param_1);
  return;
}



void __fastcall FUN_00415f60(code **param_1)

{
  int iVar1;
  int *unaff_ESI;
  
  if (unaff_ESI == (int *)0x0) {
    iVar1 = 0;
  }
  else {
    iVar1 = *(int *)(*unaff_ESI + 4) + (int)unaff_ESI;
  }
  (**param_1)(iVar1,param_1[1]);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00415f7a(int param_1_00,int *param_1)

{
  FUN_004416bd(param_1);
  if ((*(int *)((int)param_1 + *(int *)(*param_1 + 4) + 8) == 0) &&
     (*(int *)((int)param_1 + *(int *)(*param_1 + 4) + 0x2c) != 0)) {
    FUN_00415fcd();
  }
  *(bool *)(param_1_00 + 4) = *(int *)(*(int *)(*param_1 + 4) + 8 + (int)param_1) == 0;
  return param_1_00;
}



int * __fastcall FUN_00415fcd(int *param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  uVar2 = 0;
  if ((*(byte *)((int)param_1 + *(int *)(*param_1 + 4) + 8) & 6) == 0) {
    iVar1 = (**(code **)(**(int **)((int)param_1 + *(int *)(*param_1 + 4) + 0x28) + 0x30))();
    if (iVar1 == -1) {
      uVar2 = 4;
    }
  }
  FUN_00417b8a(uVar2,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00416008(int *param_1)

{
  if ((*(byte *)(*(int *)(*param_1 + 4) + 0x10 + (int)param_1) & 2) != 0) {
    FUN_00415fcd();
  }
  return;
}



undefined4 Catch_All_0041602f(void)

{
  return 0x416029;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00416035(void)

{
  char cVar1;
  
  cVar1 = thunk_FUN_00a45751();
  if (cVar1 == '\0') {
    FUN_00416008();
  }
  FUN_00413965();
  return;
}



void __thiscall
FUN_0041606b(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  int iVar1;
  undefined auStack_54 [4];
  char local_50 [68];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)auStack_54;
  iVar1 = _sprintf_s(local_50,0x40,"%p",param_6);
  FUN_004176ca(param_1_00,param_1,param_2,param_3,param_4,param_5,local_50,iVar1);
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_004160d2(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            int param_4,undefined4 param_5,double param_6)

{
  char *_Format;
  int iVar1;
  int iVar2;
  undefined auStack_9c [3];
  undefined local_99;
  uint local_98;
  uint local_94;
  undefined4 local_90;
  undefined4 local_8c;
  int local_88 [2];
  char local_80 [116];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)auStack_9c;
  iVar2 = *(int *)(param_4 + 0x14);
  local_90 = param_1;
  if ((iVar2 < 1) && ((*(uint *)(param_4 + 0x10) & 0x2000) == 0)) {
    iVar2 = 6;
  }
  local_88[0] = 0x24;
  if (iVar2 < 0x25) {
    local_88[0] = iVar2;
  }
  iVar2 = iVar2 - local_88[0];
  local_98 = 0;
  local_94 = 0;
  if ((*(uint *)(param_4 + 0x10) & 0x3000) == 0x2000) {
    local_99 = param_6 < 0.0 != NAN(param_6);
    if ((bool)local_99) {
      param_6 = -param_6;
    }
    if (1e+35 < param_6 != (param_6 == 1e+35)) {
      do {
        if (4999 < local_98) break;
        param_6 = param_6 / 10000000000.0;
        local_98 = local_98 + 10;
      } while (1e+35 < param_6 != (param_6 == 1e+35));
    }
    if (0.0 < param_6 != NAN(param_6)) {
      for (; ((9 < iVar2 && (param_6 <= 1e-35)) && (local_94 < 5000)); local_94 = local_94 + 10) {
        iVar2 = iVar2 + -10;
        param_6 = param_6 * 10000000000.0;
      }
    }
    if ((bool)local_99) {
      param_6 = -param_6;
    }
  }
  local_8c = param_1_00;
  _Format = (char *)FUN_004168a1(param_1_00,local_88,0x4c,*(uint *)(param_4 + 0x10),local_88[0],
                                 param_6);
  iVar1 = _sprintf_s(local_80,0x6c,_Format);
  FUN_004163a1(local_8c,local_90,param_2,param_3,param_4,param_5,local_80,local_98,local_94,iVar2,
               iVar1);
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>
// >::append(unsigned int,char)
// 
// Library: Visual Studio 2005 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          uint param_1,char param_2)

{
  int iVar1;
  bool bVar2;
  undefined3 in_stack_00000009;
  
  if (-*(int *)(this + 0x14) - 1U <= param_1) {
    _String_base::_Xlen();
  }
  if (param_1 != 0) {
    iVar1 = *(int *)(this + 0x14);
    bVar2 = _Grow(this,iVar1 + param_1,false);
    if (bVar2) {
      FUN_00416295(*(undefined4 *)(this + 0x14),param_1,_param_2);
      _Eos(this,iVar1 + param_1);
    }
  }
  return this;
}



void __thiscall FUN_00416295(int param_1_00,int param_1,size_t param_2,char param_3)

{
  if (param_2 == 1) {
    if (*(uint *)(param_1_00 + 0x18) < 0x10) {
      param_1_00 = param_1_00 + 4;
    }
    else {
      param_1_00 = *(int *)(param_1_00 + 4);
    }
    *(char *)(param_1_00 + param_1) = param_3;
  }
  else {
    if (*(uint *)(param_1_00 + 0x18) < 0x10) {
      param_1_00 = param_1_00 + 4;
    }
    else {
      param_1_00 = *(int *)(param_1_00 + 4);
    }
    _memset((void *)(param_1_00 + param_1),(int)param_3,param_2);
  }
  return;
}



// Library Function - Single Match
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>
// >::insert(unsigned int,unsigned int,char)
// 
// Library: Visual Studio 2008 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          uint param_1,uint param_2,char param_3)

{
  int iVar1;
  uint uVar2;
  bool bVar3;
  uint **ppuVar4;
  undefined3 in_stack_0000000d;
  
  uVar2 = param_1;
  if (*(uint *)(this + 0x14) < param_1) {
    _String_base::_Xran();
  }
  if (-*(int *)(this + 0x14) - 1U <= param_2) {
    _String_base::_Xlen();
  }
  if (param_2 != 0) {
    iVar1 = *(int *)(this + 0x14);
    bVar3 = _Grow(this,iVar1 + param_2,false);
    if (bVar3) {
      ppuVar4 = (uint **)(this + 4);
      param_1 = (uint)ppuVar4;
      if (0xf < *(uint *)(this + 0x18)) {
        param_1 = (uint)*ppuVar4;
        ppuVar4 = (uint **)*ppuVar4;
      }
      char_traits<char>::_Move_s
                ((char *)((int)ppuVar4 + param_2 + uVar2),(*(uint *)(this + 0x18) - uVar2) - param_2
                 ,(char *)(param_1 + uVar2),*(int *)(this + 0x14) - uVar2);
      FUN_00416295(uVar2,param_2,_param_3);
      _Eos(this,iVar1 + param_2);
    }
  }
  return this;
}



// Library Function - Single Match
//  public: char & __thiscall std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >::operator[](unsigned int)
// 
// Library: Visual Studio 2005 Release

char * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::operator[]
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          uint param_1)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  
  if (*(uint *)(this + 0x14) < param_1) {
    FUN_00a3fb10();
  }
  if (*(uint *)(this + 0x18) < 0x10) {
    pbVar1 = this + 4;
  }
  else {
    pbVar1 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
              (this + 4);
  }
  return (char *)(pbVar1 + param_1);
}



void FUN_004163a1(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5,
                 undefined4 param_6,char *param_7,uint param_8,uint param_9,uint param_10,
                 size_t param_11)

{
  char cVar1;
  undefined4 uVar2;
  undefined2 uVar3;
  uint uVar4;
  undefined4 uVar5;
  int *piVar6;
  lconv *plVar7;
  undefined4 ****ppppuVar8;
  char *_Str;
  uint uVar9;
  undefined4 *puVar10;
  void *pvVar11;
  int iVar12;
  undefined *puVar13;
  char *_Control;
  void *pvStack_84;
  char cStack_80;
  undefined uStack_7f;
  undefined uStack_7e;
  void *apvStack_7c [2];
  uint uStack_74;
  int local_70;
  uint uStack_6c;
  int iStack_68;
  int *local_64 [2];
  undefined4 local_5c;
  locale local_58 [4];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_54 [20];
  uint uStack_40;
  undefined4 uStack_3c;
  undefined local_38 [4];
  undefined4 ****appppuStack_34 [5];
  uint uStack_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1f96d;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&pvStack_84;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff70;
  ExceptionList = &local_14;
  local_5c = param_2;
  local_70 = param_5;
  uVar5 = FUN_00417498(local_58);
  local_c = 0;
  piVar6 = (int *)FUN_004173bd(uVar5,uVar4);
  local_c = 0xffffffff;
  local_64[0] = piVar6;
  std::locale::~locale(local_58);
  grouping(local_38);
  local_c = 1;
  uStack_6c = (**(code **)(*piVar6 + 8))();
  uStack_6c = uStack_6c & 0xffff;
  uStack_3c = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (abStack_54,0);
  local_c = CONCAT31(local_c._1_3_,2);
  uStack_74 = _Maklocchr<>(0x30,0,param_1 + 8);
  uStack_74 = uStack_74 & 0xffff;
  if ((*param_7 == '+') || (iStack_68 = 0, *param_7 == '-')) {
    iStack_68 = 1;
  }
  plVar7 = _localeconv();
  cStack_80 = *plVar7->decimal_point;
  uStack_7f = 0x65;
  uStack_7e = 0;
  pvStack_84 = _memchr(param_7,0x65,param_11);
  apvStack_7c[0] = _memchr(param_7,(int)cStack_80,param_11);
  if (apvStack_7c[0] == (void *)0x0) {
    param_10 = 0;
  }
  ppppuVar8 = appppuStack_34[0];
  if (uStack_20 < 0x10) {
    ppppuVar8 = appppuStack_34;
  }
  if (*(char *)ppppuVar8 != '\x7f') {
    ppppuVar8 = appppuStack_34[0];
    if (uStack_20 < 0x10) {
      ppppuVar8 = appppuStack_34;
    }
    if ('\0' < *(char *)ppppuVar8) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                (abStack_54,param_7,param_11);
      if (pvStack_84 == (void *)0x0) {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                  (abStack_54,param_10,'0');
      }
      else {
        if (apvStack_7c[0] == (void *)0x0) {
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                    (abStack_54,param_8,'0');
          param_8 = 0;
        }
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
                  (abStack_54,(int)pvStack_84 - (int)param_7,param_10,'0');
      }
      if (apvStack_7c[0] == (void *)0x0) {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                  (abStack_54,param_8,'0');
      }
      else {
        apvStack_7c[0] = (void *)((int)apvStack_7c[0] - (int)param_7);
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
                  (abStack_54,(int)apvStack_7c[0] + 1,param_9,'0');
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
                  (abStack_54,(uint)apvStack_7c[0],param_8,'0');
        param_9 = 0;
      }
      param_8 = 0;
      ppppuVar8 = appppuStack_34[0];
      if (uStack_20 < 0x10) {
        ppppuVar8 = appppuStack_34;
      }
      _Control = &cStack_80;
      _Str = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
             operator[](abStack_54,0);
      pvStack_84 = (void *)_strcspn(_Str,_Control);
      while (((cVar1 = *(char *)ppppuVar8, cVar1 != '\x7f' && ('\0' < cVar1)) &&
             ((uint)(int)cVar1 < (uint)((int)pvStack_84 - iStack_68)))) {
        pvStack_84 = (void *)((int)pvStack_84 - (int)cVar1);
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
                  (abStack_54,(uint)pvStack_84,1,'\0');
        if ('\0' < *(char *)(undefined4 ****)((int)ppppuVar8 + 1)) {
          ppppuVar8 = (undefined4 ****)((int)ppppuVar8 + 1);
        }
      }
      param_7 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                operator[](abStack_54,0);
      param_10 = 0;
      param_11 = uStack_40;
    }
  }
  uVar4 = *(uint *)(local_70 + 0x18);
  uVar9 = param_8 + param_9 + param_10 + param_11;
  if (((int)uVar4 < 1) || (uVar4 <= uVar9)) {
    pvStack_84 = (void *)0x0;
  }
  else {
    pvStack_84 = (void *)(uVar4 - uVar9);
  }
  uVar4 = *(uint *)(local_70 + 0x10) & 0x1c0;
  if (uVar4 != 0x40) {
    if ((uVar4 == 0x100) && (iStack_68 != 0)) {
      puVar10 = (undefined4 *)Putc(param_1,apvStack_7c,param_3,param_4,param_7,1);
      param_3 = *puVar10;
      param_4 = puVar10[1];
      param_7 = param_7 + 1;
      param_11 = param_11 - 1;
    }
    puVar10 = (undefined4 *)Rep(param_1,apvStack_7c,param_3,param_4,param_6,pvStack_84);
    param_3 = *puVar10;
    param_4 = puVar10[1];
    pvStack_84 = (void *)0x0;
  }
  pvVar11 = _memchr(param_7,(int)cStack_80,param_11);
  if (pvVar11 != (void *)0x0) {
    iVar12 = ((int)pvVar11 - (int)param_7) + 1;
    puVar10 = (undefined4 *)
              FUN_004175a6(param_1,apvStack_7c,param_3,param_4,param_7,(int)pvVar11 - (int)param_7,
                           uStack_6c);
    puVar10 = (undefined4 *)Rep(param_1,apvStack_7c,*puVar10,puVar10[1],uStack_74,param_8);
    uVar5 = *puVar10;
    uVar2 = puVar10[1];
    uVar3 = (**(code **)(*local_64[0] + 4))();
    puVar10 = (undefined4 *)Rep(param_1,local_64,uVar5,uVar2,uVar3,1);
    puVar10 = (undefined4 *)Rep(param_1,local_64,*puVar10,puVar10[1],uStack_74,param_9);
    param_3 = *puVar10;
    param_11 = param_11 - iVar12;
    param_4 = puVar10[1];
    param_7 = param_7 + iVar12;
  }
  pvVar11 = _memchr(param_7,0x65,param_11);
  if (pvVar11 != (void *)0x0) {
    iVar12 = ((int)pvVar11 - (int)param_7) + 1;
    puVar10 = (undefined4 *)
              FUN_004175a6(param_1,local_64,param_3,param_4,param_7,(int)pvVar11 - (int)param_7,
                           uStack_6c);
    puVar10 = (undefined4 *)Rep(param_1,local_64,*puVar10,puVar10[1],uStack_74,param_10);
    param_10 = 0;
    puVar13 = &DAT_00fad9b4;
    if ((*(byte *)(local_70 + 0x10) & 4) == 0) {
      puVar13 = &DAT_00fad9b8;
    }
    puVar10 = (undefined4 *)Putc(param_1,local_64,*puVar10,puVar10[1],puVar13,1);
    param_3 = *puVar10;
    param_11 = param_11 - iVar12;
    param_4 = puVar10[1];
    param_7 = param_7 + iVar12;
  }
  puVar10 = (undefined4 *)FUN_004175a6(param_1,local_64,param_3,param_4,param_7,param_11,uStack_6c);
  puVar10 = (undefined4 *)Rep(param_1,apvStack_7c,*puVar10,puVar10[1],uStack_74,param_10);
  uVar5 = *puVar10;
  uVar2 = puVar10[1];
  *(undefined4 *)(local_70 + 0x18) = 0;
  Rep(param_1,local_5c,uVar5,uVar2,param_6,pvStack_84);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void FUN_004168a1(undefined4 param_1,undefined *param_2,char param_3,uint param_4)

{
  undefined *puVar1;
  char *pcVar2;
  char cVar3;
  
  *param_2 = 0x25;
  puVar1 = param_2 + 1;
  if ((param_4 & 0x20) != 0) {
    *puVar1 = 0x2b;
    puVar1 = param_2 + 2;
  }
  if ((param_4 & 0x10) != 0) {
    *puVar1 = 0x23;
    puVar1 = puVar1 + 1;
  }
  *puVar1 = 0x2e;
  puVar1[1] = 0x2a;
  pcVar2 = puVar1 + 2;
  if (param_3 != '\0') {
    *pcVar2 = param_3;
    pcVar2 = puVar1 + 3;
  }
  param_4 = param_4 & 0x3000;
  if (param_4 == 0x2000) {
    cVar3 = 'f';
  }
  else if (param_4 == 0x3000) {
    cVar3 = 'a';
  }
  else {
    cVar3 = (param_4 != 0x1000) * '\x02' + 'e';
  }
  *pcVar2 = cVar3;
  pcVar2[1] = '\0';
  return;
}



void __thiscall
FUN_00416905(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            int param_4,undefined4 param_5,double param_6)

{
  double dVar1;
  char *_Format;
  int iVar2;
  uint uVar3;
  int iVar4;
  undefined auStack_9c [7];
  undefined local_95;
  uint local_94;
  undefined4 local_90;
  undefined4 local_8c;
  int local_88 [2];
  char local_80 [116];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)auStack_9c;
  iVar4 = *(int *)(param_4 + 0x14);
  uVar3 = 0;
  local_90 = param_1;
  if ((iVar4 < 1) && ((*(uint *)(param_4 + 0x10) & 0x2000) == 0)) {
    iVar4 = 6;
  }
  local_88[0] = 0x24;
  if (iVar4 < 0x25) {
    local_88[0] = iVar4;
  }
  iVar4 = iVar4 - local_88[0];
  local_94 = 0;
  dVar1 = param_6;
  if (((*(uint *)(param_4 + 0x10) & 0x3000) == 0x2000) &&
     ((NAN(param_6 * 0.5) || NAN(param_6)) == (param_6 * 0.5 == param_6))) {
    if (param_6 < 0.0) {
      dVar1 = -param_6;
    }
    local_95 = param_6 < 0.0;
    if (1e+35 < dVar1 != (dVar1 == 1e+35)) {
      do {
        if (4999 < local_94) break;
        dVar1 = dVar1 / 10000000000.0;
        local_94 = local_94 + 10;
      } while (1e+35 < dVar1 != (dVar1 == 1e+35));
    }
    if (0.0 < dVar1 != NAN(dVar1)) {
      for (; ((9 < iVar4 && (dVar1 <= 1e-35)) && (uVar3 < 5000)); uVar3 = uVar3 + 10) {
        iVar4 = iVar4 + -10;
        dVar1 = dVar1 * 10000000000.0;
      }
    }
    if (param_6 < 0.0) {
      dVar1 = -dVar1;
    }
  }
  local_8c = param_1_00;
  _Format = (char *)FUN_004168a1(param_1_00,local_88,0,*(uint *)(param_4 + 0x10),local_88[0],dVar1);
  iVar2 = _sprintf_s(local_80,0x6c,_Format);
  FUN_004163a1(local_8c,local_90,param_2,param_3,param_4,param_5,local_80,local_94,uVar3,iVar4,iVar2
              );
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00416a85(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            int param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char *_Format;
  int iVar1;
  undefined auStack_5c [4];
  undefined local_58 [8];
  char local_50 [68];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)auStack_5c;
  _Format = (char *)FUN_00417923(param_1_00,local_58,&DAT_00fad998,*(undefined4 *)(param_4 + 0x10),
                                 param_6,param_7);
  iVar1 = _sprintf_s(local_50,0x40,_Format);
  FUN_004176ca(param_1_00,param_1,param_2,param_3,param_4,param_5,local_50,iVar1);
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00416b01(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            int param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char *_Format;
  int iVar1;
  undefined auStack_5c [4];
  undefined local_58 [8];
  char local_50 [68];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)auStack_5c;
  _Format = (char *)FUN_00417923(param_1_00,local_58,&DAT_00fad994,*(undefined4 *)(param_4 + 0x10),
                                 param_6,param_7);
  iVar1 = _sprintf_s(local_50,0x40,_Format);
  FUN_004176ca(param_1_00,param_1,param_2,param_3,param_4,param_5,local_50,iVar1);
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00416b7d(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            int param_4,undefined4 param_5,undefined4 param_6)

{
  char *_Format;
  int iVar1;
  undefined auStack_5c [4];
  undefined local_58 [8];
  char local_50 [68];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)auStack_5c;
  _Format = (char *)FUN_00417923(param_1_00,local_58,&DAT_00fad990,*(undefined4 *)(param_4 + 0x10),
                                 param_6);
  iVar1 = _sprintf_s(local_50,0x40,_Format);
  FUN_004176ca(param_1_00,param_1,param_2,param_3,param_4,param_5,local_50,iVar1);
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00416bf6(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0x14))(param_1,0);
  return param_1;
}



undefined4 __thiscall FUN_00416c0d(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0x10))(param_1,0);
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  private: class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __cdecl std::num_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::_Put(class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,unsigned short const *,unsigned int)const 
//  private: class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > __cdecl
// std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// >::_Put(class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >,wchar_t const
// *,unsigned int)const 
// 
// Library: Visual Studio 2008 Release

void Put(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4,
        undefined2 *param_5,int param_6)

{
  if (param_6 != 0) {
    do {
      FUN_0041767b(*param_5);
      param_6 = param_6 + -1;
      param_5 = param_5 + 1;
    } while (param_6 != 0);
  }
  *param_2 = param_3;
  param_2[1] = param_4;
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_00416c59(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,
            undefined4 param_5,char param_6)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined local_60 [28];
  undefined local_44 [4];
  locale local_40 [4];
  undefined4 local_3c;
  undefined4 local_38;
  int *local_34;
  undefined4 ***local_2c [4];
  uint local_1c;
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x50;
  local_8 = 0x416c65;
  local_38 = param_1;
  local_34 = param_1_00;
  if ((*(uint *)(param_4 + 0x10) & 0x4000) == 0) {
    (**(code **)(*param_1_00 + 0x1c))(param_1,param_2,param_3,param_4,param_5,param_6);
  }
  else {
    uVar3 = FUN_00417498(local_40);
    local_8 = 0;
    local_3c = FUN_004173bd(uVar3);
    std::locale::~locale(local_40);
    local_18 = 7;
    FUN_0040180b(0);
    local_8 = 1;
    if (param_6 == '\0') {
      uVar3 = FUN_00416c0d(local_60);
      local_8._0_1_ = 3;
    }
    else {
      uVar3 = FUN_00416bf6(local_60);
      local_8._0_1_ = 2;
    }
    FID_conflict_assign(uVar3,0,0xffffffff);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_00401829(1,0);
    uVar1 = *(uint *)(param_4 + 0x18);
    if (((int)uVar1 < 1) || (uVar1 <= local_1c)) {
      iVar4 = 0;
    }
    else {
      iVar4 = uVar1 - local_1c;
    }
    if ((*(uint *)(param_4 + 0x10) & 0x1c0) != 0x40) {
      puVar5 = (undefined4 *)Rep(local_34,local_44,param_2,param_3,param_5,iVar4);
      param_2 = *puVar5;
      param_3 = puVar5[1];
      iVar4 = 0;
    }
    if (local_18 < 8) {
      local_2c[0] = local_2c;
    }
    puVar5 = (undefined4 *)Put(local_34,local_44,param_2,param_3,local_2c[0],local_1c);
    uVar3 = *puVar5;
    uVar2 = puVar5[1];
    *(undefined4 *)(param_4 + 0x18) = 0;
    Rep(local_34,local_38,uVar3,uVar2,param_5,iVar4);
    FUN_00401829(1,0);
  }
  FUN_00a421fb();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::collate<char>::collate<char>(class std::_Locinfo const &,unsigned int)
//  public: __thiscall std::collate<unsigned short>::collate<unsigned short>(class std::_Locinfo
// const &,unsigned int)
//  public: __thiscall std::collate<wchar_t>::collate<wchar_t>(class std::_Locinfo const &,unsigned
// int)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release

undefined4 * __thiscall collate<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  _Collvec _Var1;
  
  param_1_00[1] = param_2;
  *param_1_00 = std::
                num_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                ::vftable;
  _Var1 = __Getcoll();
  *(_Collvec *)(param_1_00 + 2) = _Var1;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00416dcb(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0x416dda;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x10);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = collate<>(uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

facet * FUN_00416e6a(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x416e76;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032ef6bc;
  local_8 = 0;
  local_14[0] = DAT_032ef6bc;
  uVar2 = std::locale::id::operator_unsigned_int((id *)0x32f11d0);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = FUN_00416dcb(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032ef6bc = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// Library Function - Single Match
//  public: __thiscall std::locale::id::operator unsigned int(void)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release, Visual Studio 2008 Release,
// Visual Studio 2010 Release

uint __thiscall std::locale::id::operator_unsigned_int(id *this)

{
  id *local_8;
  
  if (*(int *)this == 0) {
    local_8 = this;
    _Lockit::_Lockit((_Lockit *)&local_8,0);
    if (*(int *)this == 0) {
      DAT_032bc818 = DAT_032bc818 + 1;
      *(int *)this = DAT_032bc818;
    }
    FUN_00823810();
  }
  return *(uint *)this;
}



// Library Function - Single Match
//  public: class std::locale::facet const * __thiscall std::locale::_Getfacet(unsigned int)const 
// 
// Library: Visual Studio 2005 Release

facet * __thiscall std::locale::_Getfacet(locale *this,uint param_1)

{
  int iVar1;
  facet *pfVar2;
  
  iVar1 = *(int *)this;
  if (param_1 < *(uint *)(iVar1 + 0xc)) {
    pfVar2 = *(facet **)(*(int *)(iVar1 + 8) + param_1 * 4);
  }
  else {
    pfVar2 = (facet *)0x0;
  }
  if ((pfVar2 == (facet *)0x0) && (*(char *)(iVar1 + 0x14) != '\0')) {
    iVar1 = FUN_008238c4();
    if (param_1 < *(uint *)(iVar1 + 0xc)) {
      pfVar2 = *(facet **)(*(int *)(iVar1 + 8) + param_1 * 4);
    }
    else {
      pfVar2 = (facet *)0x0;
    }
  }
  return pfVar2;
}



undefined4 __thiscall FUN_00416f73(undefined4 param_1_00,byte param_1)

{
  FUN_00416f8f();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00416f8f(undefined4 *param_1)

{
  *param_1 = std::numpunct<wchar_t>::vftable;
  Tidy();
  *param_1 = std::locale::facet::vftable;
  return;
}



undefined4 __thiscall FUN_00416fa5(int param_1_00,undefined4 param_1)

{
  basic_string<>(*(undefined4 *)(param_1_00 + 0x10));
  return param_1;
}



undefined4 __thiscall FUN_00416fbf(int param_1_00,undefined4 param_1)

{
  basic_string<>(*(undefined4 *)(param_1_00 + 0x14));
  return param_1;
}



wchar_t * FUN_00416fd9(char *param_1,undefined4 param_2,_Cvtvec *param_3)

{
  char *pcVar1;
  char cVar2;
  char *pcVar3;
  int iVar4;
  wchar_t *pwVar5;
  char *pcVar6;
  int iVar7;
  uint uVar8;
  mbstate_t local_14;
  mbstate_t local_10;
  wchar_t *local_c;
  wchar_t local_8 [2];
  
  iVar7 = 0;
  local_10 = 0;
  pcVar1 = param_1 + 1;
  pcVar3 = param_1;
  do {
    cVar2 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar2 != '\0');
  pcVar6 = pcVar3 + (1 - (int)pcVar1);
  local_c = (wchar_t *)param_1;
  while ((pcVar6 != (char *)0x0 &&
         (iVar4 = __Mbrtowc(local_8,(char *)local_c,(size_t)pcVar6,&local_10,param_3), 0 < iVar4)))
  {
    local_c = (wchar_t *)((int)local_c + iVar4);
    pcVar6 = pcVar6 + -iVar4;
    iVar7 = iVar7 + 1;
  }
  uVar8 = iVar7 + 1;
  pwVar5 = (wchar_t *)
           FUN_00823c23(-(uint)((int)((ulonglong)uVar8 * 2 >> 0x20) != 0) |
                        (uint)((ulonglong)uVar8 * 2));
  local_14 = 0;
  local_c = pwVar5;
  while ((uVar8 != 0 &&
         (iVar7 = __Mbrtowc(pwVar5,param_1,(size_t)(pcVar3 + (1 - (int)pcVar1)),&local_14,param_3),
         0 < iVar7))) {
    param_1 = param_1 + iVar7;
    uVar8 = uVar8 - 1;
    pwVar5 = pwVar5 + 1;
  }
  *pwVar5 = L'\0';
  return local_c;
}



// Library Function - Multiple Matches With Same Base Name
//  private: void __thiscall std::numpunct<char>::_Tidy(void)
//  private: void __thiscall std::numpunct<unsigned short>::_Tidy(void)
//  private: void __thiscall std::numpunct<wchar_t>::_Tidy(void)
// 
// Library: Visual Studio

void __fastcall Tidy(int param_1)

{
  FUN_00a3f66c(*(undefined4 *)(param_1 + 8));
  FUN_00a3f66c(*(undefined4 *)(param_1 + 0x10));
  FUN_00a3f66c(*(undefined4 *)(param_1 + 0x14));
  return;
}



void FUN_0041709c(char *param_1)

{
  char cVar1;
  char *pcVar2;
  char *pcVar3;
  
  pcVar2 = param_1;
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  pcVar2 = pcVar2 + (1 - (int)(param_1 + 1));
  pcVar3 = (char *)FUN_00823c23(pcVar2);
  for (; pcVar2 != (char *)0x0; pcVar2 = pcVar2 + -1) {
    *pcVar3 = *param_1;
    pcVar3 = pcVar3 + 1;
    param_1 = param_1 + 1;
  }
  return;
}



void FUN_004170cc(_Collvec *param_1)

{
  _Collvec _Var1;
  
  _Var1 = __Getcoll();
  *param_1 = _Var1;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_004170df(wchar_t *param_1_00,undefined4 param_1,char param_2)

{
  wchar_t wVar1;
  lconv *plVar2;
  undefined4 uVar3;
  _Collvec _Var4;
  _Collvec local_24;
  _Collvec local_1c [2];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x4170eb;
  local_1c[0]._LocaleName = param_1_00;
  plVar2 = _localeconv();
  *(undefined4 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 8) = 0;
  *(undefined4 *)(param_1_00 + 10) = 0;
  local_8 = 0;
  __Getcoll();
  uVar3 = FUN_0041709c(plVar2->grouping,0,&local_24);
  *(undefined4 *)(param_1_00 + 4) = uVar3;
  local_24 = __Getcoll();
  uVar3 = FUN_00416fd9("false",0,&local_24);
  *(undefined4 *)(param_1_00 + 8) = uVar3;
  _Var4 = __Getcoll();
  local_24 = _Var4;
  uVar3 = FUN_00416fd9(&DAT_00fad868,0,&local_24);
  local_8 = 0xffffffff;
  *(undefined4 *)(param_1_00 + 10) = uVar3;
  _Var4 = __Getcoll();
  local_24 = _Var4;
  wVar1 = _Maklocchr<>(*plVar2->decimal_point,0,&local_24);
  param_1_00[6] = wVar1;
  _Var4 = __Getcoll();
  local_24 = _Var4;
  wVar1 = _Maklocchr<>(*plVar2->thousands_sep,0,&local_24);
  param_1_00[7] = wVar1;
  if (param_2 != '\0') {
    __Getcoll();
    uVar3 = FUN_0041709c(&PTR_02bd3fc0,0,&local_24);
    *(undefined4 *)(param_1_00 + 4) = uVar3;
    _Var4 = __Getcoll();
    local_24 = _Var4;
    wVar1 = _Maklocchr<>(0x2e,0,&local_24);
    param_1_00[6] = wVar1;
    local_1c[0] = __Getcoll();
    wVar1 = _Maklocchr<>(0x2c,0,local_1c);
    param_1_00[7] = wVar1;
  }
  return;
}



void Catch_All_00417200(void)

{
  code *pcVar1;
  
  Tidy();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::numpunct<unsigned short>::numpunct<unsigned short>(class std::_Locinfo
// const &,unsigned int,bool)
//  public: __thiscall std::numpunct<wchar_t>::numpunct<wchar_t>(class std::_Locinfo const
// &,unsigned int,bool)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
numpunct<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::numpunct<wchar_t>::vftable;
  FUN_004170df(param_1,param_3);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  public: __thiscall std::_Locinfo::_Locinfo(class std::basic_string<char,struct
// std::char_traits<char>,class std::allocator<char> > const &)
// 
// Library: Visual Studio 2008 Release

_Locinfo * __thiscall
std::_Locinfo::_Locinfo
          (_Locinfo *this,
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  _Lockit::_Lockit((_Lockit *)this,0);
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (this + 4));
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (this + 0x20));
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (this + 0x3c));
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (this + 0x58));
  _Locinfo_ctor(this,param_1);
  return this;
}



// Library Function - Single Match
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// __thiscall std::locale::name(void)const 
// 
// Library: Visual Studio 2008 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::locale::name(locale *this,
                 basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                 *param_1)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
                     )(*(int *)this + 0x18));
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  public: __thiscall std::_Locinfo::~_Locinfo(void)
// 
// Library: Visual Studio 2008 Release

void __thiscall std::_Locinfo::~_Locinfo(_Locinfo *this)

{
  _Locinfo_dtor(this);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_00823810();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0041731a(int *param_1,locale *param_2)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  undefined4 uVar2;
  int iVar3;
  _Locinfo local_a8 [116];
  undefined local_34 [28];
  void *local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x98;
  local_8 = 0x417329;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    local_18 = operator_new(0x18);
    local_8 = 0;
    if (local_18 == (void *)0x0) {
      iVar3 = 0;
    }
    else {
      pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_34);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar2 = std::_Locinfo::_Locinfo(local_a8,pbVar1);
      local_8 = 2;
      local_14 = 3;
      iVar3 = numpunct<>(uVar2,0,1);
    }
    local_8 = 3;
    *param_1 = iVar3;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a8);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

facet * FUN_004173bd(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x4173c9;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032ef6c0;
  local_8 = 0;
  local_14[0] = DAT_032ef6c0;
  uVar2 = std::locale::id::operator_unsigned_int((id *)0x32f11cc);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = FUN_0041731a(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032ef6c0 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// Library Function - Single Match
//  public: void __thiscall std::locale::facet::_Incref(void)
// 
// Library: Visual Studio

void __thiscall std::locale::facet::_Incref(facet *this)

{
  facet *local_8;
  
  local_8 = this;
  _Lockit::_Lockit((_Lockit *)&local_8,0);
  if (*(int *)(this + 4) != -1) {
    *(int *)(this + 4) = *(int *)(this + 4) + 1;
  }
  FUN_00823810();
  return;
}



facet ** __thiscall FUN_00417482(facet **param_1_00,facet **param_1)

{
  facet *this;
  
  this = *param_1;
  *param_1_00 = this;
  std::locale::facet::_Incref(this);
  return param_1_00;
}



undefined4 __thiscall FUN_00417498(int param_1_00,undefined4 param_1)

{
  FUN_00417482(*(undefined4 *)(param_1_00 + 0x24));
  return param_1;
}



// Library Function - Single Match
//  public: class std::locale::facet * __thiscall std::locale::facet::_Decref(void)
// 
// Library: Visual Studio 2008 Release

facet * __thiscall std::locale::facet::_Decref(facet *this)

{
  int iVar1;
  facet *local_8;
  
  local_8 = this;
  _Lockit::_Lockit((_Lockit *)&local_8,0);
  iVar1 = *(int *)(this + 4);
  if ((iVar1 != 0) && (iVar1 != -1)) {
    *(int *)(this + 4) = iVar1 + -1;
  }
  iVar1 = *(int *)(this + 4);
  FUN_00823810();
  return (facet *)(~-(uint)(iVar1 != 0) & (uint)this);
}



// Library Function - Single Match
//  public: __thiscall std::locale::~locale(void)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release, Visual Studio 2008 Release

void __thiscall std::locale::~locale(locale *this)

{
  undefined4 *puVar1;
  
  if (*(facet **)this != (facet *)0x0) {
    puVar1 = (undefined4 *)facet::_Decref(*(facet **)this);
    if (puVar1 != (undefined4 *)0x0) {
      (**(code **)*puVar1)(1);
    }
  }
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_004174fe(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1,*(char **)(param_1_00 + 8));
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// __thiscall std::numpunct<unsigned short>::grouping(void)const 
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// __thiscall std::numpunct<wchar_t>::grouping(void)const 
// 
// Library: Visual Studio 2008 Release

undefined4 __thiscall grouping(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0xc))(param_1,0);
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  unsigned short __cdecl std::_Maklocchr<unsigned short>(char,unsigned short *,struct _Cvtvec
// const &)
//  wchar_t __cdecl std::_Maklocchr<wchar_t>(char,wchar_t *,struct _Cvtvec const &)
// 
// Library: Visual Studio 2008 Release

uint _Maklocchr<>(undefined4 param_1,undefined4 param_2,_Cvtvec *param_3)

{
  mbstate_t local_c;
  uint local_8;
  
  local_8 = 0;
  local_c = 0;
  __Mbrtowc((wchar_t *)&local_8,(char *)&param_1,1,&local_c,param_3);
  return local_8 & 0xffff;
}



// Library Function - Multiple Matches With Same Base Name
//  private: class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __cdecl std::num_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::_Putc(class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,char const *,unsigned int)const 
//  private: class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > __cdecl
// std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// >::_Putc(class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >,char const
// *,unsigned int)const 
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void Putc(int param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4,undefined *param_5,
         int param_6)

{
  undefined2 uVar1;
  
  if (param_6 != 0) {
    do {
      uVar1 = _Maklocchr<>(*param_5,0,param_1 + 8);
      FUN_0041767b(uVar1);
      param_6 = param_6 + -1;
      param_5 = param_5 + 1;
    } while (param_6 != 0);
  }
  *param_2 = param_3;
  param_2[1] = param_4;
  return;
}



undefined4 *
FUN_004175a6(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4,
            void *param_5,size_t param_6,undefined4 param_7)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  size_t sVar4;
  undefined local_18 [8];
  undefined local_10 [12];
  
  while( true ) {
    pvVar2 = _memchr(param_5,0,param_6);
    sVar4 = param_6;
    if (pvVar2 != (void *)0x0) {
      sVar4 = (int)pvVar2 - (int)param_5;
    }
    puVar3 = (undefined4 *)Putc(param_1,local_18,param_3,param_4,param_5,sVar4);
    param_3 = *puVar3;
    param_4 = puVar3[1];
    if (param_6 - sVar4 == 0) break;
    if ((short)param_7 != 0) {
      puVar3 = (undefined4 *)Rep(param_1,local_10,*puVar3,puVar3[1],param_7,1);
      param_3 = *puVar3;
      param_4 = puVar3[1];
    }
    param_5 = (void *)((int)param_5 + sVar4 + 1);
    param_6 = (param_6 - sVar4) - 1;
  }
  uVar1 = *puVar3;
  param_2[1] = puVar3[1];
  *param_2 = uVar1;
  return param_2;
}



// Library Function - Multiple Matches With Same Base Name
//  public: unsigned short __thiscall std::basic_streambuf<unsigned short,struct
// std::char_traits<unsigned short> >::sputc(unsigned short)
//  public: unsigned short __thiscall std::basic_streambuf<wchar_t,struct std::char_traits<wchar_t>
// >::sputc(wchar_t)
// 
// Library: Visual Studio 2005 Release

uint __thiscall sputc(int *param_1_00,uint param_1)

{
  undefined2 *puVar1;
  int iVar2;
  
  if (*(int *)param_1_00[9] == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = *(int *)param_1_00[0xd];
  }
  if (iVar2 < 1) {
    param_1 = (**(code **)(*param_1_00 + 4))(param_1);
  }
  else {
    *(int *)param_1_00[0xd] = *(int *)param_1_00[0xd] + -1;
    puVar1 = *(undefined2 **)(int *)param_1_00[9];
    *(int *)param_1_00[9] = (int)(puVar1 + 1);
    *puVar1 = (short)param_1;
  }
  return param_1 & 0xffff;
}



undefined * __thiscall FUN_0041767b(undefined *param_1_00,undefined4 param_1)

{
  short sVar1;
  
  if ((*(int *)(param_1_00 + 4) != 0) && (sVar1 = sputc(param_1), sVar1 != -1)) {
    return param_1_00;
  }
  *param_1_00 = 1;
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  private: class std::ostreambuf_iterator<char,struct std::char_traits<char> > __cdecl
// std::num_put<char,class std::ostreambuf_iterator<char,struct std::char_traits<char> >
// >::_Rep(class std::ostreambuf_iterator<char,struct std::char_traits<char> >,char,unsigned
// int)const 
//  private: class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __cdecl std::num_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::_Rep(class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,unsigned short,unsigned int)const 
//  private: class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > __cdecl
// std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// >::_Rep(class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t>
// >,wchar_t,unsigned int)const 
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void Rep(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4,
        undefined4 param_5,int param_6)

{
  if (param_6 != 0) {
    do {
      FUN_0041767b(param_5);
      param_6 = param_6 + -1;
    } while (param_6 != 0);
  }
  *param_2 = param_3;
  param_2[1] = param_4;
  return;
}



void FUN_004176ca(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 int param_5,undefined4 param_6,char *param_7,uint param_8)

{
  char cVar1;
  undefined4 uVar2;
  undefined2 uVar3;
  uint uVar4;
  undefined4 uVar5;
  undefined4 ****ppppuVar6;
  rsize_t _DstSize;
  undefined4 *puVar7;
  int iVar8;
  undefined4 local_5c;
  undefined4 ****local_58;
  int local_54 [2];
  int local_4c [2];
  undefined4 local_44;
  int *local_40;
  locale local_3c [4];
  undefined local_38 [4];
  undefined4 ****local_34 [5];
  uint local_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c23626;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&local_5c;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_14;
  local_5c = param_1;
  local_44 = param_2;
  local_4c[0] = param_5;
  uVar5 = FUN_00417498(local_3c);
  local_c = 0;
  local_40 = (int *)FUN_004173bd(uVar5,uVar4);
  local_c = 0xffffffff;
  std::locale::~locale(local_3c);
  grouping(local_38);
  local_c = 1;
  cVar1 = *param_7;
  if ((cVar1 == '+') || (cVar1 == '-')) {
    local_54[0] = 1;
  }
  else if ((cVar1 == '0') && ((param_7[1] == 'x' || (param_7[1] == 'X')))) {
    local_54[0] = 2;
  }
  else {
    local_54[0] = 0;
  }
  ppppuVar6 = local_34[0];
  if (local_20 < 0x10) {
    ppppuVar6 = local_34;
  }
  if (*(char *)ppppuVar6 != '\x7f') {
    ppppuVar6 = local_34[0];
    if (local_20 < 0x10) {
      ppppuVar6 = local_34;
    }
    if ('\0' < *(char *)ppppuVar6) {
      uVar4 = param_8;
      if (local_20 < 0x10) {
        local_58 = local_34;
      }
      else {
        local_58 = local_34[0];
      }
      while (((cVar1 = *(char *)local_58, cVar1 != '\x7f' && ('\0' < cVar1)) &&
             ((uint)(int)cVar1 < uVar4 - local_54[0]))) {
        uVar4 = uVar4 - (int)cVar1;
        _DstSize = (param_8 - uVar4) + 1;
        _memmove_s(param_7 + uVar4 + 1,_DstSize,param_7 + uVar4,_DstSize);
        param_8 = param_8 + 1;
        param_7[uVar4] = '\0';
        param_5 = local_4c[0];
        if ('\0' < *(char *)(undefined4 ****)((int)local_58 + 1)) {
          local_58 = (undefined4 ****)((int)local_58 + 1);
        }
      }
    }
  }
  uVar4 = *(uint *)(param_5 + 0x18);
  if (((int)uVar4 < 1) || (uVar4 <= param_8)) {
    iVar8 = 0;
  }
  else {
    iVar8 = uVar4 - param_8;
  }
  uVar4 = *(uint *)(param_5 + 0x10) & 0x1c0;
  if (uVar4 != 0x40) {
    if (uVar4 == 0x100) {
      puVar7 = (undefined4 *)Putc(local_5c,local_4c,param_3,param_4,param_7,local_54[0]);
      param_8 = param_8 - local_54[0];
      param_7 = param_7 + local_54[0];
      puVar7 = (undefined4 *)Rep(local_5c,local_4c,*puVar7,puVar7[1],param_6,iVar8);
    }
    else {
      puVar7 = (undefined4 *)Rep(local_5c,local_4c,param_3,param_4,param_6,iVar8);
    }
    param_3 = *puVar7;
    param_4 = puVar7[1];
    iVar8 = 0;
  }
  uVar3 = (**(code **)(*local_40 + 8))();
  puVar7 = (undefined4 *)FUN_004175a6(local_5c,local_54,param_3,param_4,param_7,param_8,uVar3);
  uVar5 = *puVar7;
  uVar2 = puVar7[1];
  *(undefined4 *)(param_5 + 0x18) = 0;
  Rep(local_5c,local_44,uVar5,uVar2,param_6,iVar8);
  FUN_004017b2(1,0);
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void FUN_00417923(undefined4 param_1,undefined *param_2,char *param_3,uint param_4)

{
  char *pcVar1;
  byte bVar2;
  
  *param_2 = 0x25;
  pcVar1 = param_2 + 1;
  if ((param_4 & 0x20) != 0) {
    *pcVar1 = '+';
    pcVar1 = param_2 + 2;
  }
  if ((param_4 & 8) != 0) {
    *pcVar1 = '#';
    pcVar1 = pcVar1 + 1;
  }
  if (*param_3 == 'L') {
    *pcVar1 = 'I';
    pcVar1[1] = '6';
    pcVar1 = pcVar1 + 2;
    *pcVar1 = '4';
  }
  else {
    *pcVar1 = *param_3;
  }
  if ((param_4 & 0xe00) == 0x400) {
    bVar2 = 0x6f;
  }
  else if ((param_4 & 0xe00) == 0x800) {
    bVar2 = ~((char)param_4 << 3) & 0x20U | 0x58;
  }
  else {
    bVar2 = param_3[1];
  }
  pcVar1[1] = bVar2;
  pcVar1[2] = '\0';
  return;
}



void __thiscall
FUN_00417997(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            int param_4,undefined4 param_5,undefined4 param_6)

{
  char *_Format;
  int iVar1;
  undefined auStack_5c [4];
  undefined local_58 [8];
  char local_50 [68];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)auStack_5c;
  _Format = (char *)FUN_00417923(param_1_00,local_58,&DAT_00fad98c,*(undefined4 *)(param_4 + 0x10),
                                 param_6);
  iVar1 = _sprintf_s(local_50,0x40,_Format);
  FUN_004176ca(param_1_00,param_1,param_2,param_3,param_4,param_5,local_50,iVar1);
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_00417a1b(undefined4 *param_1,byte param_2)

{
  *param_1 = std::ios_base::failure::vftable;
  FUN_0040114d();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __thiscall FUN_00417a55(int param_1_00,uint param_1,char param_2)

{
  void *pvVar1;
  uint uVar2;
  uint extraout_ECX;
  undefined4 uVar3;
  undefined ***pppuVar4;
  undefined *puVar5;
  undefined **local_a0 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_78 [28];
  undefined **local_5c [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  pvVar1 = ExceptionList;
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1f8ef;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  *(uint *)(param_1_00 + 8) = param_1 & 0x17;
  uVar2 = *(uint *)(param_1_00 + 0xc) & param_1 & 0x17;
  if (uVar2 != 0) {
    uVar3 = 0;
    if (param_2 == '\0') goto LAB_00417aa7;
    puVar5 = (undefined *)0x0;
    pppuVar4 = (undefined ***)0x0;
    do {
      __CxxThrowException_8(pppuVar4,puVar5);
      uVar2 = extraout_ECX;
LAB_00417aa7:
      if ((uVar2 & 4) == 0) {
        uVar3 = 2;
        if ((uVar2 & 2) == 0) {
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_34,"ios_base::eofbit set");
          local_c = 2;
          FUN_00401118(local_34);
          local_5c[0] = std::ios_base::failure::vftable;
          pppuVar4 = local_5c;
        }
        else {
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_78,"ios_base::failbit set");
          local_c = 1;
          FUN_00401118(local_78);
          local_a0[0] = std::ios_base::failure::vftable;
          pppuVar4 = local_a0;
          uVar3 = 2;
        }
      }
      else {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
        basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  (local_78,"ios_base::badbit set");
        local_c = uVar3;
        FUN_00401118(local_78);
        local_a0[0] = std::ios_base::failure::vftable;
        pppuVar4 = local_a0;
      }
      puVar5 = &DAT_031154fc;
    } while( true );
  }
  ExceptionList = pvVar1;
  return;
}



void __thiscall FUN_00417b70(int param_1_00,uint param_1,undefined4 param_2)

{
  if (*(int *)(param_1_00 + 0x28) == 0) {
    param_1 = param_1 | 4;
  }
  FUN_00417a55(param_1,param_2);
  return;
}



void __thiscall FUN_00417b8a(int param_1_00,uint param_1,undefined4 param_2)

{
  if (param_1 != 0) {
    FUN_00417b70(*(uint *)(param_1_00 + 8) | param_1,param_2);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_00417ba7(int *param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  uint uVar4;
  uint local_2c [3];
  char local_20;
  locale local_1c [4];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x417bb3;
  local_18 = 0;
  FUN_00415f7a(param_1);
  local_8 = 0;
  if (local_20 != '\0') {
    uVar2 = FUN_00417498(local_1c);
    local_8._0_1_ = 1;
    piVar3 = (int *)FUN_00416e6a(uVar2);
    std::locale::~locale(local_1c);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar1 = *(int *)(*param_1 + 4);
    uVar2 = *(undefined4 *)((int)param_1 + iVar1 + 0x28);
    local_2c[0] = local_2c[0] & 0xffffff00;
    uVar4 = local_2c[0];
    (**(code **)(*piVar3 + 0x1c))
              (local_2c,local_2c[0],uVar2,*(int *)(*param_1 + 4) + (int)param_1,
               *(undefined2 *)((int)param_1 + iVar1 + 0x30),param_2);
    if ((char)local_2c[0] != '\0') {
      local_18 = 4;
    }
    local_8 = 0;
    piVar3 = (int *)FUN_00417c5d(uVar4,uVar2);
    return piVar3;
  }
  FUN_00417b8a(local_18,0);
  local_8 = 0xffffffff;
  FUN_00416035();
  return param_1;
}



undefined * Catch_All_00417c36(void)

{
  int unaff_EBP;
  
  FUN_00417b70(*(uint *)((int)*(int **)(unaff_EBP + 8) + *(int *)(**(int **)(unaff_EBP + 8) + 4) + 8
                        ) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_00417c58;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00417c5d(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  
  FUN_00417b8a(*(undefined4 *)(unaff_EBP + -0x14),unaff_EBX);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00416035();
  return;
}



undefined4 * __thiscall FUN_00417c83(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WCF831331::W03FDD85F::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00417ca0(undefined4 *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  FUN_00a3f1a9();
  *param_1_00 = std::logic_error::vftable;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 3),param_1);
  return param_1_00;
}



undefined4 * __thiscall FUN_00417cd5(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00417ca0(param_1);
  *param_1_00 = std::length_error::vftable;
  return param_1_00;
}



void __fastcall FUN_00417cf8(undefined4 *param_1)

{
  *param_1 = std::logic_error::vftable;
  FUN_004017b2(1,0);
  exception::~exception((exception *)param_1);
  return;
}



undefined4 * __thiscall FUN_00417d15(undefined4 *param_1,byte param_2)

{
  *param_1 = std::length_error::vftable;
  FUN_00417cf8();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_00417d4f(undefined4 param_1,byte param_2)

{
  FUN_00417cf8();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Different Base Names
//  public: __thiscall std::logic_error::logic_error(class std::logic_error const &)
//  public: __thiscall std::runtime_error::runtime_error(class std::runtime_error const &)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

undefined4 * __thiscall FID_conflict_runtime_error(undefined4 *param_1_00,exception *param_1)

{
  std::exception::exception((exception *)param_1_00,param_1);
  *param_1_00 = std::logic_error::vftable;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 3),
             (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0xc));
  return param_1_00;
}



void __fastcall FUN_00417da5(undefined4 *param_1)

{
  *param_1 = W133E5AC5::WE7CAD561::vftable;
  return;
}



void FUN_00417dac(short *param_1)

{
  short sVar1;
  short *psVar2;
  
  psVar2 = param_1;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  FID_conflict_assign(param_1,(int)psVar2 - (int)(param_1 + 1) >> 1);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >(unsigned short const *)
//  public: __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >(wchar_t const *)
// 
// Library: Visual Studio 2005 Release

int __thiscall basic_string<>(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  FUN_0040180b(0);
  FUN_00417dac(param_1);
  return param_1_00;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::append(class
// std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > const &,unsigned int,unsigned int)
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::append(class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const
// &,unsigned int,unsigned int)
// 
// Library: Visual Studio 2008 Release

int __thiscall FID_conflict_append(int param_1_00,int param_1,uint param_2,uint param_3)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  
  if (*(uint *)(param_1 + 0x14) < param_2) {
    std::_String_base::_Xran();
  }
  uVar2 = *(int *)(param_1 + 0x14) - param_2;
  if (uVar2 < param_3) {
    param_3 = uVar2;
  }
  if ((-*(int *)(param_1_00 + 0x14) - 1U <= param_3) ||
     (*(uint *)(param_1_00 + 0x14) + param_3 < *(uint *)(param_1_00 + 0x14))) {
    std::_String_base::_Xlen();
  }
  if (param_3 != 0) {
    iVar3 = *(int *)(param_1_00 + 0x14) + param_3;
    cVar1 = FUN_004182d2(iVar3,0);
    if (cVar1 != '\0') {
      if (*(uint *)(param_1 + 0x18) < 8) {
        param_1 = param_1 + 4;
      }
      else {
        param_1 = *(int *)(param_1 + 4);
      }
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar4 = param_1_00 + 4;
      }
      else {
        iVar4 = *(int *)(param_1_00 + 4);
      }
      Copy_s(iVar4 + *(int *)(param_1_00 + 0x14) * 2,
             *(uint *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14),param_1 + param_2 * 2,
             param_3);
      FUN_0040180b(iVar3);
    }
  }
  return param_1_00;
}



// Library Function - Single Match
//  public: __thiscall std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >(char const *,unsigned int)
// 
// Library: Visual Studio 2005 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          char *param_1,uint param_2)

{
  *(undefined4 *)(this + 0x18) = 0xf;
  _Eos(this,0);
  assign(this,param_1,param_2);
  return this;
}



uint __thiscall FUN_00417ec1(int param_1_00,undefined4 *param_1)

{
  undefined4 *in_EAX;
  undefined4 *puVar1;
  
  if (param_1 != (undefined4 *)0x0) {
    in_EAX = (undefined4 *)(param_1_00 + 4);
    puVar1 = in_EAX;
    if (7 < *(uint *)(param_1_00 + 0x18)) {
      puVar1 = (undefined4 *)*in_EAX;
    }
    if (puVar1 <= param_1) {
      if (7 < *(uint *)(param_1_00 + 0x18)) {
        in_EAX = (undefined4 *)*in_EAX;
      }
      in_EAX = (undefined4 *)((int)in_EAX + *(int *)(param_1_00 + 0x14) * 2);
      if (param_1 < in_EAX) {
        return CONCAT31((int3)((uint)in_EAX >> 8),1);
      }
    }
  }
  return (uint)in_EAX & 0xffffff00;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::assign(unsigned short
// const *,unsigned int)
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::assign(wchar_t const *,unsigned int)
// 
// Library: Visual Studio 2008 Release

int __thiscall FID_conflict_assign(int param_1_00,int param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  
  cVar1 = FUN_00417ec1(param_1);
  if (cVar1 == '\0') {
    cVar1 = FUN_004182d2(param_2,0);
    if (cVar1 != '\0') {
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar2 = param_1_00 + 4;
      }
      else {
        iVar2 = *(int *)(param_1_00 + 4);
      }
      Copy_s(iVar2,*(uint *)(param_1_00 + 0x18),param_1,param_2);
      FUN_0040180b(param_2);
    }
  }
  else {
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      iVar2 = param_1_00 + 4;
    }
    else {
      iVar2 = *(int *)(param_1_00 + 4);
    }
    param_1_00 = FID_conflict_assign(param_1_00,param_1 - iVar2 >> 1,param_2);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >(unsigned short const
// *,unsigned int)
//  public: __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >(wchar_t const *,unsigned int)
// 
// Library: Visual Studio 2005 Release

int __thiscall basic_string<>(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  FUN_0040180b(0);
  FID_conflict_assign(param_1,param_2);
  return param_1_00;
}



void FUN_00417f97(void)

{
  char *unaff_ESI;
  
  if (*unaff_ESI != '\0') {
    FUN_00401829(1,0);
    *unaff_ESI = '\0';
  }
  return;
}



// Library Function - Single Match
//  public: __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >(void)
// 
// Library: Visual Studio 2008 Release

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __thiscall
std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
          (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
           *this)

{
  *(undefined4 *)(this + 0x18) = 7;
  FUN_0040180b(0);
  return this;
}



void FUN_00417fc1(void)

{
  FUN_00417fc9();
  return;
}



void FUN_00417fc9(void)

{
  int *piVar1;
  int iVar2;
  int **in_EAX;
  
  piVar1 = *in_EAX;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[2] + -1;
    piVar1[2] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
                    // WARNING: Could not recover jumptable at 0x00417fdd. Too many branches
                    // WARNING: Treating indirect jump as call
      (**(code **)(*piVar1 + 8))();
      return;
    }
  }
  return;
}



void __fastcall thunk_FUN_00417fe6(int param_1)

{
  HANDLE hObject;
  
  LOCK();
  hObject = *(HANDLE *)(param_1 + 4);
  *(HANDLE *)(param_1 + 4) = (HANDLE)0x0;
  UNLOCK();
  if (hObject != (HANDLE)0x0) {
    CloseHandle(hObject);
  }
  return;
}



void __fastcall FUN_00417fe6(int param_1)

{
  HANDLE hObject;
  
  LOCK();
  hObject = *(HANDLE *)(param_1 + 4);
  *(HANDLE *)(param_1 + 4) = (HANDLE)0x0;
  UNLOCK();
  if (hObject != (HANDLE)0x0) {
    CloseHandle(hObject);
  }
  return;
}



void __fastcall FUN_00417ff9(undefined4 *param_1)

{
  *param_1 = W47457227::WE8E82499::vftable;
  return;
}



undefined4 * __thiscall FUN_00418000(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W47457227::WE8E82499::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0041801d(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0324bc00;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0324bc00);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_00418065(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0041801d(0);
    return;
  }
  *param_2 = &PTR_vftable_0324bc00;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_004180b1(void)

{
  int *piVar1;
  int unaff_EBX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  piVar1 = unaff_ESI + 2;
  FUN_00418065(piVar1,piVar1,2);
  if (unaff_EBX == 0) {
    *unaff_ESI = 0;
  }
  else {
    *piVar1 = unaff_EBX;
    *unaff_ESI = 0xfad9bd;
  }
  return;
}



void FUN_004180e3(void *param_1,int param_2,void *param_3,int param_4)

{
  _memmove_s(param_1,param_2 * 2,param_3,param_4 * 2);
  return;
}



undefined4 FUN_00418102(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_004180e3(param_1,param_2,param_3,param_4);
  return param_1;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::erase(unsigned
// int,unsigned int)
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::erase(unsigned int,unsigned int)
// 
// Library: Visual Studio 2008 Release

int __thiscall FID_conflict_erase(int param_1_00,undefined4 *param_1,uint param_2)

{
  uint uVar1;
  uint uVar2;
  undefined4 *puVar3;
  
  uVar1 = (uint)param_1;
  if (*(uint *)(param_1_00 + 0x14) < param_1) {
    std::_String_base::_Xran();
  }
  uVar2 = *(int *)(param_1_00 + 0x14) - (int)param_1;
  if (uVar2 < param_2) {
    param_2 = uVar2;
  }
  if (param_2 != 0) {
    puVar3 = (undefined4 *)(param_1_00 + 4);
    param_1 = puVar3;
    if (7 < *(uint *)(param_1_00 + 0x18)) {
      param_1 = (undefined4 *)*puVar3;
      puVar3 = (undefined4 *)*puVar3;
    }
    FUN_00418102((int)puVar3 + uVar1 * 2,*(uint *)(param_1_00 + 0x18) - uVar1,
                 (int)param_1 + (uVar1 + param_2) * 2,uVar2 - param_2);
    FUN_0040180b(*(int *)(param_1_00 + 0x14) - param_2);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  unsigned short * __cdecl std::_Allocate<unsigned short>(unsigned int,unsigned short *)
//  wchar_t * __cdecl std::_Allocate<wchar_t>(unsigned int,wchar_t *)
// 
// Library: Visual Studio 2005 Release

void _Allocate<>(char *param_1)

{
  code *pcVar1;
  char *pcVar2;
  undefined **local_10 [3];
  
  if (param_1 == (char *)0x0) {
    pcVar2 = (char *)0x0;
  }
  else {
    pcVar2 = param_1;
    if ((uint)(0xffffffff / ZEXT48(param_1)) < 2) {
      param_1 = (char *)0x0;
      std::exception::exception((exception *)local_10,&param_1);
      local_10[0] = std::bad_alloc::vftable;
      __CxxThrowException_8(local_10,&DAT_031153a4);
      pcVar1 = (code *)swi(3);
      (*pcVar1)();
      return;
    }
  }
  operator_new((int)pcVar2 * 2);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __thiscall FUN_004181eb(int param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  uVar3 = param_1 | 7;
  if (uVar3 < 0x7fffffff) {
    uVar1 = *(uint *)(param_1_00 + 0x18);
    uVar2 = uVar1 >> 1;
    param_1 = uVar3;
    if ((uVar3 / 3 < uVar2) && (uVar1 <= 0x7ffffffe - uVar2)) {
      param_1 = uVar2 + uVar1;
    }
  }
  _Allocate<>(param_1 + 1,0);
  FUN_00418275();
  return;
}



undefined * Catch_All_0041824b(void)

{
  int iVar1;
  undefined4 uVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  *(BADSPACEBASE **)(unaff_EBP + -0x10) = register0x00000010;
  *(int *)(unaff_EBP + 8) = iVar1;
  *(undefined *)(unaff_EBP + -4) = 2;
  uVar2 = _Allocate<>(iVar1 + 1,0);
  *(undefined4 *)(unaff_EBP + -0x14) = uVar2;
  return &DAT_0041826c;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00418275(void)

{
  undefined4 uVar1;
  undefined4 unaff_EBX;
  int unaff_EBP;
  undefined4 unaff_ESI;
  int unaff_EDI;
  
  if (*(int *)(unaff_EBP + 0xc) != 0) {
    Copy_s();
  }
  FUN_00401829(1,0);
  uVar1 = *(undefined4 *)(unaff_EBP + 0xc);
  *(undefined4 *)(unaff_EDI + 4) = unaff_EBX;
  *(undefined4 *)(unaff_EDI + 0x18) = unaff_ESI;
  FUN_0040180b(uVar1);
  return;
}



void Catch_All_004182bd(void)

{
  code *pcVar1;
  
  FUN_00401829(1,0);
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



bool __thiscall FUN_004182d2(int param_1_00,uint param_1,char param_2)

{
  uint uVar1;
  
  if (0x7ffffffe < param_1) {
    std::_String_base::_Xlen();
  }
  if (*(uint *)(param_1_00 + 0x18) < param_1) {
    FUN_004181eb(param_1,*(undefined4 *)(param_1_00 + 0x14));
  }
  else if ((param_2 == '\0') || (7 < param_1)) {
    if (param_1 == 0) {
      FUN_0040180b(0);
    }
  }
  else {
    uVar1 = *(uint *)(param_1_00 + 0x14);
    if (param_1 < *(uint *)(param_1_00 + 0x14)) {
      uVar1 = param_1;
    }
    FUN_00401829(1,uVar1);
  }
  return param_1 != 0;
}



int __fastcall FUN_00418333(int param_1)

{
  if (7 < *(uint *)(param_1 + 0x18)) {
    return *(int *)(param_1 + 4);
  }
  return param_1 + 4;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::assign(class
// std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > const &,unsigned int,unsigned int)
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::assign(class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const
// &,unsigned int,unsigned int)
// 
// Library: Visual Studio 2008 Release

int __thiscall FID_conflict_assign(int param_1_00,int param_1,uint param_2,uint param_3)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  
  if (*(uint *)(param_1 + 0x14) < param_2) {
    std::_String_base::_Xran();
  }
  uVar3 = *(int *)(param_1 + 0x14) - param_2;
  if (param_3 < uVar3) {
    uVar3 = param_3;
  }
  if (param_1_00 == param_1) {
    FID_conflict_erase(uVar3 + param_2,0xffffffff);
    FID_conflict_erase(0,param_2);
  }
  else {
    cVar1 = FUN_004182d2(uVar3,0);
    if (cVar1 != '\0') {
      if (*(uint *)(param_1 + 0x18) < 8) {
        param_1 = param_1 + 4;
      }
      else {
        param_1 = *(int *)(param_1 + 4);
      }
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar2 = param_1_00 + 4;
      }
      else {
        iVar2 = *(int *)(param_1_00 + 4);
      }
      Copy_s(iVar2,*(uint *)(param_1_00 + 0x18),param_1 + param_2 * 2,uVar3);
      FUN_0040180b(uVar3);
    }
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >(class
// std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > const &)
//  public: __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > const &)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release

int __thiscall basic_string<>(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  FUN_0040180b(0);
  FID_conflict_assign(param_1,0,0xffffffff);
  return param_1_00;
}



void FUN_004183fa(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  PTR_FUN_03235c4c = (undefined *)0x0;
  DAT_03235e98 = 5;
  FUN_008f99b0(param_1,param_2,0,param_4);
  return;
}



undefined ** FUN_00418467(void)

{
  return &PTR_u_W724E51CA_03247220;
}



undefined ** FUN_0041846d(void)

{
  return &PTR_PTR_DAT_00fac474;
}



undefined * FUN_00418473(void)

{
  return &DAT_032ee160;
}



void __fastcall FUN_00418479(int param_1)

{
  if (*(undefined4 **)(param_1 + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 8))(1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00418487(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 local_34;
  undefined4 *puStack_30;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x418493;
  puStack_30 = (undefined4 *)0x41849d;
  FUN_008f9c30();
  local_8 = 0;
  puStack_30 = param_1 + 0x59;
  *param_1 = WC43342B0::W724E51CA::vftable;
  param_1[0x10] = WC43342B0::W724E51CA::vftable;
  local_34 = 0x4184ba;
  FUN_00418543();
  puStack_30 = (undefined4 *)local_1c;
  local_8._0_1_ = 1;
  local_34 = 0x4184c7;
  puVar1 = (undefined4 *)FUN_0040737d();
  local_14 = &local_34;
  local_8 = CONCAT31(local_8._1_3_,2);
  local_34 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00418500(int param_1_00,byte param_1)

{
  FUN_004185c5(param_1_00 + 0x164);
  FUN_008f9c60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00418543(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = wxLocale::vftable;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0xc));
  param_1[0x13] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x15));
  param_1[0x1c] = 0;
  FUN_0084ae10();
  FUN_00847510();
  param_1[0x2e] = 0;
  param_1[0x2f] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004185c5(int param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  int iStack_24;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  puVar1 = (undefined4 *)auStack_20;
  local_8 = 6;
  if (*(int *)(param_1 + 0xbc) != 0) {
    iStack_24 = 0x4185ea;
    FUN_0040127a();
  }
  local_8._0_1_ = 5;
  iStack_24 = 0x4185f6;
  FUN_00847af0();
  local_8._0_1_ = 4;
  if (*(int *)(param_1 + 0x28) != 0) {
    iStack_24 = 0x418606;
    FUN_0040127a();
  }
  local_8._0_1_ = 3;
  if (*(int *)(param_1 + 0x20) != 0) {
    iStack_24 = 0x418616;
    FUN_0040127a();
  }
  local_8._0_1_ = 2;
  if (*(int *)(param_1 + 0x18) != 0) {
    iStack_24 = 0x418626;
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (*(int *)(param_1 + 0x10) != 0) {
    puVar1 = &uStack_28;
    uStack_28 = 0x418637;
    iStack_24 = *(int *)(param_1 + 0x10);
    FUN_004186ab();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (*(int *)(param_1 + 0xc) != 0) {
    *(undefined4 *)((int)puVar1 + -4) = 0x418647;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (*(int *)(param_1 + 4) != 0) {
    *(undefined4 *)((int)puVar1 + -4) = 0x418657;
    FUN_0040127a();
  }
  *(undefined4 *)((int)puVar1 + -4) = 0x41865c;
  return;
}



void __fastcall FUN_0041865f(int param_1)

{
  FUN_0042d44a(*(undefined4 *)(param_1 + 0x48));
  return;
}



void FUN_00418671(void)

{
  FUN_0074ca40();
  FUN_0042a320();
  FUN_00b93f30();
  FUN_0074ca40();
  thunk_FUN_0083f180();
  return;
}



void __fastcall FUN_0041869c(undefined4 param_1)

{
  int *in_EAX;
  
  if (*in_EAX != 0) {
    FUN_004186ab(*in_EAX,param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004186ab(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uStack_28;
  undefined4 *puStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  puStack_24 = param_1 + 0xd;
  local_8 = 3;
  puVar1 = &uStack_28;
  uStack_28 = 0x4186ca;
  FUN_006bcfc9();
  puVar1[-1] = 0x4186d2;
  FUN_00417fe6();
  puVar1[-1] = param_1 + 3;
  local_8 = CONCAT31(local_8._1_3_,1);
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x4186df;
  FUN_00492aa0();
  *(undefined4 *)((int)puVar2 + -4) = 0x4186e7;
  FUN_00417fe6();
  *(undefined4 **)((int)puVar2 + -4) = param_1;
  *param_1 = W30100A62::W021B89C7::vftable;
                    // WARNING: Subroutine does not return
  *(undefined **)((int)puVar2 + -8) = &UNK_004186f3;
  FUN_00a3f6a1();
}



void FUN_004186fe(void)

{
  undefined4 *unaff_ESI;
  
  FUN_00418734(*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_00418734(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int *in_EAX;
  int *unaff_EBX;
  
  iVar1 = *(int *)in_EAX[6];
  if ((param_1 == 0) || (param_1 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_2 == iVar1) {
    iVar1 = in_EAX[6];
    if ((param_3 == 0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_4 == iVar1) {
      FUN_004f9b50(*(undefined4 *)(in_EAX[6] + 4));
      *(int *)(in_EAX[6] + 4) = in_EAX[6];
      in_EAX[7] = 0;
      *(int *)in_EAX[6] = in_EAX[6];
      *(int *)(in_EAX[6] + 8) = in_EAX[6];
      unaff_EBX[1] = *(int *)in_EAX[6];
      *unaff_EBX = *in_EAX;
      return;
    }
  }
  while( true ) {
    if ((param_1 == 0) || (param_1 != param_3)) {
      FUN_00a3fb10();
    }
    if (param_2 == param_4) break;
    FUN_00452ecb();
    FUN_004187ef();
  }
  *unaff_EBX = *in_EAX;
  unaff_EBX[1] = param_2;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x004188da)
// WARNING: Removing unreachable block (ram,0x004188ea)
// WARNING: Removing unreachable block (ram,0x004188f3)
// WARNING: Removing unreachable block (ram,0x004188f6)
// WARNING: Removing unreachable block (ram,0x004188e6)
// WARNING: Removing unreachable block (ram,0x00418903)
// WARNING: Removing unreachable block (ram,0x00418913)
// WARNING: Removing unreachable block (ram,0x0041891e)
// WARNING: Removing unreachable block (ram,0x0041891a)
// WARNING: Removing unreachable block (ram,0x0041890e)
// WARNING: Removing unreachable block (ram,0x00418921)

void FUN_004187ef(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x4187fb;
  if (*(char *)((int)param_4 + 0x19) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00452ecb();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x19) == '\0') {
    if (*(char *)(param_4[2] + 0x19) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x19) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x19) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x19) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x19) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x19) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 6) != '\x01') {
LAB_00418a52:
    if (param_4[5] != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_00418a06:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 6) != '\x01'))
  goto LAB_00418a4e;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 6) == '\0') {
      *(undefined *)(ppiVar4 + 6) = 1;
      *(undefined *)(ppiVar3 + 6) = 0;
      FUN_0042bfd4(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x19) == '\0') {
      if ((*(char *)(*ppiVar4 + 6) != '\x01') || (*(char *)(ppiVar4[2] + 6) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 6) == '\x01') {
          *(undefined *)(*ppiVar4 + 6) = 1;
          *(undefined *)(ppiVar4 + 6) = 0;
          FUN_0042c014(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 6) = *(undefined *)(ppiVar3 + 6);
        *(undefined *)(ppiVar3 + 6) = 1;
        *(undefined *)(ppiVar4[2] + 6) = 1;
        FUN_0042bfd4(param_1);
        goto LAB_00418a4e;
      }
LAB_004189fd:
      *(undefined *)(ppiVar4 + 6) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 6) == '\0') {
      *(undefined *)(ppiVar4 + 6) = 1;
      *(undefined *)(ppiVar3 + 6) = 0;
      FUN_0042c014(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x19) == '\0') {
      if ((*(char *)(ppiVar4[2] + 6) == '\x01') && (*(char *)(*ppiVar4 + 6) == '\x01'))
      goto LAB_004189fd;
      if (*(char *)(*ppiVar4 + 6) == '\x01') {
        *(undefined *)(ppiVar4[2] + 6) = 1;
        *(undefined *)(ppiVar4 + 6) = 0;
        FUN_0042bfd4(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 6) = *(undefined *)(ppiVar3 + 6);
      *(undefined *)(ppiVar3 + 6) = 1;
      *(undefined *)(*ppiVar4 + 6) = 1;
      FUN_0042c014(param_1);
LAB_00418a4e:
      *(undefined *)(ppiVar5 + 6) = 1;
      goto LAB_00418a52;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_00418a06;
}



void FUN_00418a88(void)

{
  FUN_00418500();
  return;
}



undefined4 __fastcall FUN_00418a90(int param_1)

{
  return *(undefined4 *)(param_1 + 0x160);
}



void __thiscall FUN_00418a97(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x160) = param_1;
  return;
}



undefined FUN_00418aa4(void)

{
  return 1;
}



undefined __fastcall FUN_00418aa9(int param_1)

{
  return *(undefined *)(param_1 + 0x15e);
}



undefined4 __thiscall thunk_FUN_00845c70(int *param_1_00,int param_1)

{
  char cVar1;
  
  if (((DAT_032bcb68 != (int *)0x0) && (param_1_00 != DAT_032bcb68)) &&
     (*(int *)(param_1 + 0xc) != DAT_032bd450)) {
    cVar1 = (**(code **)(*DAT_032bcb68 + 0x18))(param_1);
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



void __thiscall FUN_00418ab5(int *param_1_00,int *param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *param_1_00;
  uVar2 = (**(code **)(*param_1 + 0x10))();
  (**(code **)(iVar1 + 0x1c))(uVar2);
  return;
}



void __thiscall FUN_00418acf(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x10) = param_1;
  return;
}



void __thiscall FUN_00418ad9(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0xc) = param_1;
  return;
}



void FUN_00418ae3(undefined *param_1,undefined *param_2)

{
  undefined uVar1;
  
  if (param_1 != param_2) {
    uVar1 = *param_1;
    *param_1 = *param_2;
    *param_2 = uVar1;
  }
  return;
}



void FUN_00418afa(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W30100A62::W021B89C7::vftable;
  return;
}



undefined4 __thiscall FUN_00418b01(undefined4 param_1_00,byte param_1)

{
  FUN_00847af0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __fastcall
FUN_00418b1d(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1)

{
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int * __thiscall FUN_00418b2d(int *param_1_00,int param_1,int param_2,int param_3,int param_4)

{
  bool bVar1;
  
  bVar1 = PTR_FUN_03235c4c != (undefined *)0x0;
  param_1_00[2] = param_3;
  *param_1_00 = param_1;
  param_1_00[1] = param_2;
  param_1_00[3] = param_4;
  if (((bVar1) && (param_2 != -1)) && (param_2 < param_1)) {
    FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0xb3b,
                 "wxEventTableEntryBase::wxEventTableEntryBase",
                 "idLast == wxID_ANY || winid <= idLast",
                 "invalid IDs range: lower bound > upper bound");
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_00418b84(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  *param_1_00 = param_1;
  param_1_00[1] = param_4;
  param_1_00[2] = param_5;
  param_1_00[3] = param_2;
  param_1_00[4] = param_3;
  param_1_00[5] = DAT_032bcb44;
  DAT_032bcb44 = param_1_00;
  FUN_0083ec80();
  return param_1_00;
}



undefined4 * __thiscall FUN_00418bc1(undefined4 *param_1_00,undefined4 param_1)

{
  FID_conflict_runtime_error(param_1);
  *param_1_00 = std::out_of_range::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_00418bd9(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00417ca0(param_1);
  *param_1_00 = std::out_of_range::vftable;
  return param_1_00;
}



void FUN_00418bf1(undefined *param_1)

{
  *param_1 = 0xbf;
  param_1[1] = 0xf7;
  param_1[2] = 0xd1;
  param_1[3] = 0x14;
  param_1[4] = 0xd3;
  param_1[5] = 0x78;
  param_1[6] = 0x4a;
  param_1[7] = 0xd1;
  param_1[8] = 0x91;
  param_1[9] = 0xbb;
  param_1[10] = 0x7c;
  param_1[0xb] = 0x5c;
  param_1[0xc] = 0xe8;
  param_1[0xd] = 0x32;
  param_1[0xe] = 0x1a;
  param_1[0xf] = 0x1a;
  return;
}



void FUN_00418c35(undefined *param_1)

{
  *param_1 = 0x10;
  param_1[1] = 0xae;
  param_1[2] = 0xac;
  param_1[3] = 0x17;
  param_1[4] = 0xe6;
  param_1[5] = 0xab;
  param_1[6] = 0x40;
  param_1[7] = 0x80;
  param_1[8] = 0xb4;
  param_1[9] = 0x9d;
  param_1[10] = 0x8c;
  param_1[0xb] = 0xde;
  param_1[0xc] = 0xdc;
  param_1[0xd] = 0xb4;
  param_1[0xe] = 0xb8;
  param_1[0xf] = 0xf7;
  return;
}



void FUN_00418c79(undefined *param_1)

{
  *param_1 = 0x9a;
  param_1[1] = 0x6c;
  param_1[2] = 0x2c;
  param_1[3] = 0x75;
  param_1[4] = 0x73;
  param_1[5] = 0x2c;
  param_1[6] = 0x44;
  param_1[7] = 0xfe;
  param_1[8] = 0x9a;
  param_1[9] = 0x30;
  param_1[10] = 0xe9;
  param_1[0xb] = 0x71;
  param_1[0xc] = 3;
  param_1[0xd] = 100;
  param_1[0xe] = 0xb0;
  param_1[0xf] = 0x28;
  return;
}



undefined4 FUN_00418d61(undefined4 param_1)

{
  FUN_00b9afb0(param_1,2,8,0x18,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00418d80(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  undefined4 *puStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puStack_24 = param_1 + 1;
  puVar1 = &uStack_28;
  uStack_28 = 0x418d9c;
  FUN_004192b3();
  *param_1 = W133E5AC5::WE7CAD561::vftable;
  puVar1[-1] = 0x418da7;
  return;
}



void FUN_00418daa(char *param_1)

{
  code *pcVar1;
  char *pcVar2;
  undefined **local_10 [3];
  
  if (param_1 == (char *)0x0) {
    pcVar2 = (char *)0x0;
  }
  else {
    pcVar2 = param_1;
    if ((uint)(0xffffffff / ZEXT48(param_1)) < 4) {
      param_1 = (char *)0x0;
      std::exception::exception((exception *)local_10,&param_1);
      local_10[0] = std::bad_alloc::vftable;
      __CxxThrowException_8(local_10,&DAT_031153a4);
      pcVar1 = (code *)swi(3);
      (*pcVar1)();
      return;
    }
  }
  operator_new((int)pcVar2 << 2);
  return;
}



void FUN_00418df9(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x40);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 0xf) = 1;
  *(undefined *)((int)puVar1 + 0x3d) = 0;
  return;
}



void FUN_00418e23(int param_1)

{
  if (*(char *)(param_1 + 0x3d) == '\0') {
    FUN_00418e23(*(undefined4 *)(param_1 + 8));
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __thiscall FUN_00418e61(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x3d) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



void __thiscall FUN_00418ea1(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x3d) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x00418fce)
// WARNING: Removing unreachable block (ram,0x00418fde)
// WARNING: Removing unreachable block (ram,0x00418fe7)
// WARNING: Removing unreachable block (ram,0x00418fea)
// WARNING: Removing unreachable block (ram,0x00418fda)
// WARNING: Removing unreachable block (ram,0x00418ff7)
// WARNING: Removing unreachable block (ram,0x00419007)
// WARNING: Removing unreachable block (ram,0x00419012)
// WARNING: Removing unreachable block (ram,0x0041900e)
// WARNING: Removing unreachable block (ram,0x00419002)
// WARNING: Removing unreachable block (ram,0x00419015)

void FUN_00418ee3(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x418eef;
  if (*(char *)((int)param_4 + 0x3d) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_0041917c();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x3d) == '\0') {
    if (*(char *)(param_4[2] + 0x3d) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x3d) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x3d) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x3d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x3d) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x3d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0xf) != '\x01') {
LAB_00419146:
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_004190fa:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xf) != '\x01'))
  goto LAB_00419142;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0xf) == '\0') {
      *(undefined *)(ppiVar4 + 0xf) = 1;
      *(undefined *)(ppiVar3 + 0xf) = 0;
      FUN_00418e61(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x3d) == '\0') {
      if ((*(char *)(*ppiVar4 + 0xf) != '\x01') || (*(char *)(ppiVar4[2] + 0xf) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0xf) == '\x01') {
          *(undefined *)(*ppiVar4 + 0xf) = 1;
          *(undefined *)(ppiVar4 + 0xf) = 0;
          FUN_00418ea1(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0xf) = *(undefined *)(ppiVar3 + 0xf);
        *(undefined *)(ppiVar3 + 0xf) = 1;
        *(undefined *)(ppiVar4[2] + 0xf) = 1;
        FUN_00418e61(param_1);
        goto LAB_00419142;
      }
LAB_004190f1:
      *(undefined *)(ppiVar4 + 0xf) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0xf) == '\0') {
      *(undefined *)(ppiVar4 + 0xf) = 1;
      *(undefined *)(ppiVar3 + 0xf) = 0;
      FUN_00418ea1(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x3d) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0xf) == '\x01') && (*(char *)(*ppiVar4 + 0xf) == '\x01'))
      goto LAB_004190f1;
      if (*(char *)(*ppiVar4 + 0xf) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0xf) = 1;
        *(undefined *)(ppiVar4 + 0xf) = 0;
        FUN_00418e61(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0xf) = *(undefined *)(ppiVar3 + 0xf);
      *(undefined *)(ppiVar3 + 0xf) = 1;
      *(undefined *)(*ppiVar4 + 0xf) = 1;
      FUN_00418ea1(param_1);
LAB_00419142:
      *(undefined *)(ppiVar5 + 0xf) = 1;
      goto LAB_00419146;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_004190fa;
}



void FUN_0041917c(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x3d) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x3d) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x3d) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x3d) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



void FUN_004191c9(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_00418e23(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_0041917c();
    FUN_00418ee3();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_0041927f(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_004191c9(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004192b3(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x4192cb;
  FUN_0041927f();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_004192d2;
  FUN_00a3f6a1();
}



void FUN_0041933f(undefined *param_1)

{
  *param_1 = 0xca;
  param_1[1] = 0xb5;
  param_1[2] = 0x33;
  param_1[3] = 0x60;
  param_1[4] = 0x91;
  param_1[5] = 0xf6;
  param_1[6] = 0xdb;
  param_1[7] = 0x8d;
  param_1[8] = 0x3e;
  param_1[9] = 8;
  param_1[10] = 9;
  param_1[0xb] = 0x4c;
  param_1[0xc] = 0x86;
  param_1[0xd] = 0x53;
  param_1[0xe] = 0xd8;
  param_1[0xf] = 0xc1;
  return;
}



// WARNING: Removing unreachable block (ram,0x004194c9)

char FUN_004193d5(int param_1)

{
  char cVar1;
  char cVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  char local_29;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5c703;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  local_c = 0;
  local_29 = FUN_00419c3c(param_1 + 8);
  if (local_29 == '\0') {
    FUN_00b940e0(0xd3f0cd8e,uVar3);
  }
  local_c._0_1_ = 1;
  if (local_29 != '\0') {
    cVar1 = FUN_00419c73(param_1 + 8);
    if (cVar1 == '\0') {
      uVar5 = 0xc59ec8d2;
    }
    else {
      cVar1 = (**(code **)(iRam00000000 + 8))();
      if (cVar1 != '\0') {
        cVar2 = (**(code **)(iRam00000000 + 0xc))();
        if (cVar2 == '\0') {
          ExceptionList = local_14;
          return cVar1;
        }
        puVar4 = (undefined4 *)FUN_00ba5abe();
        *(undefined4 *)(param_1 + 0x1d0) = *puVar4;
        Sleep(0x32);
        (**(code **)(iRam00000000 + 0x10))();
        ExceptionList = local_14;
        return cVar1;
      }
      uVar5 = 0x5b6071ba;
    }
    local_29 = '\0';
    FUN_00b940e0(uVar5,uVar3);
  }
  ExceptionList = local_14;
  return local_29;
}



void FUN_004194e7(undefined *param_1)

{
  *param_1 = 0x72;
  param_1[1] = 0x34;
  param_1[2] = 0xcc;
  param_1[3] = 0xfc;
  param_1[4] = 0x6d;
  param_1[5] = 0x87;
  param_1[6] = 0xb4;
  param_1[7] = 0x80;
  param_1[8] = 0xaa;
  param_1[9] = 0x9d;
  param_1[10] = 0x2b;
  param_1[0xb] = 0xe7;
  param_1[0xc] = 0xf9;
  param_1[0xd] = 0x8b;
  param_1[0xe] = 0xf3;
  param_1[0xf] = 0xc;
  return;
}



void FUN_0041957a(undefined *param_1)

{
  *param_1 = 0xa4;
  param_1[1] = 0x35;
  param_1[2] = 3;
  param_1[3] = 0x36;
  param_1[4] = 3;
  param_1[5] = 0x60;
  param_1[6] = 0x78;
  param_1[7] = 0xd8;
  param_1[8] = 0xf;
  param_1[9] = 0xa3;
  param_1[10] = 0x5b;
  param_1[0xb] = 0xcc;
  param_1[0xc] = 0xf2;
  param_1[0xd] = 0x31;
  param_1[0xe] = 0xf4;
  param_1[0xf] = 0xdd;
  return;
}



void FUN_00419610(undefined *param_1)

{
  *param_1 = 0x88;
  param_1[1] = 0x84;
  param_1[2] = 0xf0;
  param_1[3] = 0x5a;
  param_1[4] = 0x1a;
  param_1[5] = 0xcd;
  param_1[6] = 0xaa;
  param_1[7] = 0x9f;
  param_1[8] = 0x91;
  param_1[9] = 0xda;
  param_1[10] = 0xb9;
  param_1[0xb] = 0x8e;
  param_1[0xc] = 0x41;
  param_1[0xd] = 0xd4;
  param_1[0xe] = 0x36;
  param_1[0xf] = 0xb4;
  return;
}



void FUN_004196a6(undefined *param_1)

{
  *param_1 = 0xb3;
  param_1[1] = 0x72;
  param_1[2] = 0xc5;
  param_1[3] = 0x8b;
  param_1[4] = 0x6f;
  param_1[5] = 0x7e;
  param_1[6] = 0x83;
  param_1[7] = 0xe1;
  param_1[8] = 0x40;
  param_1[9] = 0x95;
  param_1[10] = 0x20;
  param_1[0xb] = 0xb3;
  param_1[0xc] = 0x96;
  param_1[0xd] = 0xd7;
  param_1[0xe] = 0x7a;
  param_1[0xf] = 7;
  return;
}



undefined4 __thiscall FUN_0041973c(undefined4 param_1_00,byte param_1)

{
  FUN_00418d80(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00419759(undefined *param_1)

{
  *param_1 = 0xa9;
  param_1[1] = 0xb2;
  param_1[2] = 0xf0;
  param_1[3] = 0x38;
  param_1[4] = 0xf0;
  param_1[5] = 0x28;
  param_1[6] = 0x46;
  param_1[7] = 0x87;
  param_1[8] = 0xa4;
  param_1[9] = 0xd6;
  param_1[10] = 0x66;
  param_1[0xb] = 0x16;
  param_1[0xc] = 0xb5;
  param_1[0xd] = 0x32;
  param_1[0xe] = 0xed;
  param_1[0xf] = 0xc9;
  return;
}



void FUN_004197ef(undefined *param_1)

{
  *param_1 = 0x94;
  param_1[1] = 0x67;
  param_1[2] = 0xb9;
  param_1[3] = 0xa5;
  param_1[4] = 0x8d;
  param_1[5] = 0xd8;
  param_1[6] = 0x4e;
  param_1[7] = 0x11;
  param_1[8] = 0xa1;
  param_1[9] = 0x76;
  param_1[10] = 0x79;
  param_1[0xb] = 0x32;
  param_1[0xc] = 0x93;
  param_1[0xd] = 0x45;
  param_1[0xe] = 0x32;
  param_1[0xf] = 0xe7;
  return;
}



// WARNING: Removing unreachable block (ram,0x00419971)

char FUN_00419885(int param_1)

{
  char cVar1;
  char cVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  char local_29;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5c703;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  local_c = 0;
  local_29 = FUN_00419f2a(param_1 + 8);
  if (local_29 == '\0') {
    FUN_00b940e0(0x420880b2,uVar3);
  }
  local_c._0_1_ = 1;
  if (local_29 != '\0') {
    cVar1 = FUN_0041a023(param_1 + 8);
    if (cVar1 == '\0') {
      uVar5 = 0xb1018025;
    }
    else {
      cVar1 = (**(code **)(iRam00000000 + 8))();
      if (cVar1 != '\0') {
        cVar2 = (**(code **)(iRam00000000 + 0xc))();
        if (cVar2 == '\0') {
          ExceptionList = local_14;
          return cVar1;
        }
        puVar4 = (undefined4 *)FUN_00ba5abe();
        *(undefined4 *)(param_1 + 0x1d0) = *puVar4;
        (**(code **)(iRam00000000 + 0x10))();
        ExceptionList = local_14;
        return cVar1;
      }
      uVar5 = 0x2ab0d76a;
    }
    local_29 = '\0';
    FUN_00b940e0(uVar5,uVar3);
  }
  ExceptionList = local_14;
  return local_29;
}



void Catch_All_00419afb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00419b58(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



bool FUN_00419c3c(int param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  bool bVar4;
  undefined local_28 [16];
  int local_18 [5];
  
  piVar1 = (int *)FUN_0041933f(local_28);
  local_18[0] = *piVar1;
  local_18[1] = piVar1[1];
  local_18[2] = piVar1[2];
  local_18[3] = piVar1[3];
  iVar2 = 4;
  bVar4 = true;
  piVar1 = (int *)(param_1 + 0x164);
  piVar3 = local_18;
  do {
    if (iVar2 == 0) {
      return bVar4;
    }
    iVar2 = iVar2 + -1;
    bVar4 = *piVar1 == *piVar3;
    piVar1 = piVar1 + 1;
    piVar3 = piVar3 + 1;
  } while (bVar4);
  return bVar4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00419c73(void)

{
  int iVar1;
  undefined local_28 [32];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x419c7f;
  iVar1 = FUN_0041c58d(local_28);
  local_8 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



uint FUN_00419dae(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int local_24;
  undefined4 local_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5c3aa;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_24 = 0;
  local_c = 0;
  cVar1 = FUN_00419c73(param_2,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x936b5727);
    uVar2 = FUN_005d1159();
    local_c = 0xffffffff;
    if (local_24 != 0) {
      uVar2 = FUN_0040127a();
    }
    ExceptionList = local_14;
    return uVar2 & 0xffffff00;
  }
  local_20 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_24);
}



undefined * __thiscall FUN_00419e70(undefined *param_1_00,undefined4 param_1)

{
  *param_1_00 = 0;
  FUN_00439f42(param_1);
  return param_1_00;
}



void FUN_00419e85(int param_1)

{
  undefined4 *in_EAX;
  
  if (param_1 == 0) {
    param_1 = 1;
  }
  else if (param_1 == 1) {
    param_1 = 0;
  }
  else {
    param_1 = 2;
  }
  *in_EAX = param_1;
  return;
}



void FUN_00419eb3(undefined4 *param_1,int param_2,int param_3)

{
  int *piVar1;
  
  piVar1 = (int *)FUN_00419e85(param_2);
  if (((~-(uint)(*piVar1 != 1) & 0x7a491c) != 0) ||
     (piVar1 = (int *)FUN_00419e85(param_3), (~-(uint)(*piVar1 != 1) & 0x7a491c) != 0)) {
    *param_1 = 0;
    return;
  }
  if (((~-(uint)(param_2 != 1) & 0x7a491c) != 0) && ((~-(uint)(param_3 != 1) & 0x7a491c) != 0)) {
    *param_1 = 1;
    return;
  }
  *param_1 = 2;
  return;
}



bool FUN_00419f2a(int param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  bool bVar4;
  undefined local_28 [16];
  int local_18 [5];
  
  piVar1 = (int *)FUN_004197ef(local_28);
  local_18[0] = *piVar1;
  local_18[1] = piVar1[1];
  local_18[2] = piVar1[2];
  local_18[3] = piVar1[3];
  iVar2 = 4;
  bVar4 = true;
  piVar1 = (int *)(param_1 + 0x164);
  piVar3 = local_18;
  do {
    if (iVar2 == 0) {
      return bVar4;
    }
    iVar2 = iVar2 + -1;
    bVar4 = *piVar1 == *piVar3;
    piVar1 = piVar1 + 1;
    piVar3 = piVar3 + 1;
  } while (bVar4);
  return bVar4;
}



uint FUN_00419f61(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int local_24;
  undefined4 local_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5c3aa;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_24 = 0;
  local_c = 0;
  cVar1 = FUN_0041a023(param_2,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x6248f456);
    uVar2 = FUN_005d1159();
    local_c = 0xffffffff;
    if (local_24 != 0) {
      uVar2 = FUN_0040127a();
    }
    ExceptionList = local_14;
    return uVar2 & 0xffffff00;
  }
  local_20 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_24);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0041a023(void)

{
  undefined4 *puVar1;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x41a02f;
  puVar1 = (undefined4 *)FUN_0041cb31(local_20);
  local_8 = 0;
  local_18 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0041a0db(undefined *param_1)

{
  *param_1 = 0x23;
  param_1[1] = 0xc3;
  param_1[2] = 0xe9;
  param_1[3] = 0x1f;
  param_1[4] = 0xde;
  param_1[5] = 0x54;
  param_1[6] = 0x43;
  param_1[7] = 0xc6;
  param_1[8] = 0x98;
  param_1[9] = 0x53;
  param_1[10] = 0x71;
  param_1[0xb] = 0xde;
  param_1[0xc] = 0xf1;
  param_1[0xd] = 0xf0;
  param_1[0xe] = 0x9d;
  param_1[0xf] = 100;
  return;
}



void FUN_0041a11f(undefined *param_1)

{
  *param_1 = 0x22;
  param_1[1] = 0x9e;
  param_1[2] = 0x10;
  param_1[3] = 0x9d;
  param_1[4] = 0x21;
  param_1[5] = 0xcd;
  param_1[6] = 0x4e;
  param_1[7] = 0x71;
  param_1[8] = 0xb9;
  param_1[9] = 0xab;
  param_1[10] = 0x5e;
  param_1[0xb] = 0xb4;
  param_1[0xc] = 0x54;
  param_1[0xd] = 0xaf;
  param_1[0xe] = 8;
  param_1[0xf] = 0x6f;
  return;
}



undefined4 FUN_0041a1e0(undefined4 param_1)

{
  FUN_00b9b050(param_1,4,10);
  return param_1;
}



void FUN_0041a1fb(undefined *param_1)

{
  *param_1 = 0xb9;
  param_1[1] = 0x50;
  param_1[2] = 0xfb;
  param_1[3] = 0x5e;
  param_1[4] = 0xcc;
  param_1[5] = 0x4f;
  param_1[6] = 0x41;
  param_1[7] = 0xea;
  param_1[8] = 0x83;
  param_1[9] = 0x66;
  param_1[10] = 0xd9;
  param_1[0xb] = 0x84;
  param_1[0xc] = 0x8e;
  param_1[0xd] = 0x5c;
  param_1[0xe] = 0x8c;
  param_1[0xf] = 3;
  return;
}



void FUN_0041a23f(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W5FC6A77E::W54980B19::vftable;
  return;
}



undefined4 * __thiscall FUN_0041a2ad(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W133E5AC5::WDAD47D14::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0041a2ca(int *param_1,int param_2)

{
  int iVar1;
  char cVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined4 uVar5;
  int **ppiVar6;
  int iVar7;
  int *unaff_EBX;
  uint unaff_ESI;
  int *piVar8;
  char *pcVar9;
  bool bVar10;
  int **ppiStack_3d4;
  int ***pppiStack_3d0;
  int *piStack_3cc;
  int iStack_3c8;
  uint uStack_3c4;
  int *piStack_3b4;
  int **local_3b0;
  int **ppiStack_3ac;
  int ***pppiStack_3a8;
  int iStack_3a4;
  int local_3a0;
  int *piStack_39c;
  int *piStack_398;
  int *local_394;
  int local_390;
  int *piStack_38c;
  undefined auStack_388 [28];
  int *piStack_36c;
  int *apiStack_368 [7];
  int iStack_34c;
  int *piStack_348;
  undefined4 uStack_344;
  char cStack_338;
  undefined auStack_334 [28];
  int *piStack_318;
  undefined auStack_314 [24];
  undefined4 uStack_2fc;
  undefined4 uStack_2f8;
  undefined4 uStack_2f4;
  undefined4 uStack_2f0;
  undefined4 uStack_2ec;
  char cStack_2d8;
  char acStack_2bc [4];
  undefined4 uStack_2b8;
  undefined4 uStack_2b4;
  undefined4 uStack_2b0;
  undefined4 uStack_2ac;
  undefined auStack_298 [28];
  undefined auStack_27c [28];
  char acStack_260 [4];
  undefined4 uStack_25c;
  undefined4 uStack_fc;
  undefined4 uStack_f8;
  undefined4 uStack_f4;
  undefined4 uStack_f0;
  char cStack_bc;
  undefined4 uStack_9c;
  undefined4 uStack_94;
  void *local_1c;
  undefined4 uStack_18;
  undefined4 local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c5c6a2;
  local_14 = ExceptionList;
  local_1c = (void *)(DAT_0323f878 ^ (uint)&piStack_3b4);
  uStack_3c4 = DAT_0323f878 ^ (uint)&stack0xfffffc40;
  ExceptionList = &local_14;
  iStack_3c8 = param_2;
  local_3a0 = param_2;
  piStack_3cc = &local_390;
  local_3b0 = (int **)0x0;
  local_394 = param_1;
  pppiStack_3d0 = (int ***)0x41a329;
  (**(code **)(*param_1 + 8))();
  local_14 = (void *)0x0;
  if (piStack_398 == (int *)0x0) goto LAB_0041ae11;
  piStack_3b4 = piStack_398;
  pppiStack_3d0 = (int ***)(piStack_398 + 0x8b);
  ppiStack_3d4 = &piStack_36c;
  FUN_0041b756();
  cStack_2d8 = '\0';
  local_14._0_1_ = 2;
  if (piStack_36c != (int *)0x0) {
    pppiStack_3d0 = (int ***)0x41a378;
    FUN_0041c550();
  }
  local_390 = 0;
  piStack_38c = (int *)0x0;
  pppiStack_3d0 = (int ***)&DAT_00fac204;
  local_14._0_1_ = 3;
  ppiStack_3d4 = (int **)0x41a399;
  basic_string<>();
  iStack_3a4 = 0;
  local_3a0 = 0;
  pppiStack_3d0 = (int ***)&DAT_00fac208;
  local_14._0_1_ = 5;
  ppiStack_3d4 = (int **)0x41a3ba;
  basic_string<>();
  pppiStack_3d0 = (int ***)&uStack_2f8;
  local_14._0_1_ = 6;
  ppiStack_3d4 = (int **)0x41a3cf;
  puVar3 = (undefined4 *)FUN_0041a0db();
  uStack_2b8 = *puVar3;
  uStack_2b4 = puVar3[1];
  uStack_2b0 = puVar3[2];
  pppiStack_3d0 = (int ***)&piStack_348;
  uStack_2ac = puVar3[3];
  ppiStack_3d4 = (int **)0x41a3ea;
  puVar3 = (undefined4 *)FUN_0041a11f();
  uStack_2f8 = *puVar3;
  uStack_2f4 = puVar3[1];
  uStack_2f0 = puVar3[2];
  piVar4 = piStack_3b4 + 0x59;
  uStack_2ec = puVar3[3];
  iVar7 = (int)piStack_3b4 + (0x174 - (int)piVar4);
  bVar10 = true;
  piVar8 = piVar4;
  puVar3 = &uStack_2b8;
  do {
    if (iVar7 == 0) break;
    iVar7 = iVar7 + -1;
    bVar10 = *(char *)piVar8 == *(char *)puVar3;
    piVar8 = (int *)((int)piVar8 + 1);
    puVar3 = (undefined4 *)((int)puVar3 + 1);
  } while (bVar10);
  if (bVar10) {
    pppiStack_3d0 = (int ***)0x41a426;
    FUN_004fe47e();
    pppiStack_3d0 = (int ***)0xffffffff;
    ppiStack_3d4 = (int **)0x0;
    FID_conflict_assign(pppiStack_3a8);
    pppiStack_3d0 = (int ***)&DAT_00fac20c;
    ppiStack_3d4 = (int **)0x41a44a;
    basic_string<>();
    local_14._0_1_ = 7;
    pppiStack_3d0 = (int ***)0x7;
    ppiStack_3d4 = (int **)0x0;
    FUN_0041b008(auStack_314);
    pppiStack_3d0 = (int ***)0x0;
    ppiStack_3d4 = (int **)0x1;
    local_14 = (void *)CONCAT31(local_14._1_3_,9);
    FUN_00401829();
    pppiStack_3d0 = (int ***)0x41a494;
    piVar4 = (int *)(**(code **)(*piStack_39c + 0x10))();
    pppiStack_3d0 = (int ***)0x41a4a1;
    piStack_3b4 = piVar4;
    (**(code **)(*piVar4 + 0xc))();
    while( true ) {
      pppiStack_3d0 = (int ***)0x41a6a1;
      cVar2 = (**(code **)(*piVar4 + 0x10))();
      if (cVar2 == '\0') break;
      pppiStack_3d0 = (int ***)auStack_388;
      ppiStack_3d4 = (int **)0x41a4b4;
      (**(code **)(*piStack_3b4 + 4))();
      uStack_18._0_1_ = 10;
      ppiStack_3d4 = ppiStack_3ac;
      iVar7 = FUN_00412a34();
      ppiStack_3d4 = (int **)0x0;
      uStack_18 = CONCAT31(uStack_18._1_3_,9);
      FUN_00401829(1);
      if (iVar7 != 0) {
        ppiStack_3d4 = &piStack_3b4;
        (**(code **)*unaff_EBX)();
        piVar4 = piStack_3b4;
        uStack_18._0_1_ = 0xb;
        ppiStack_3d4 = (int **)(piStack_3b4 + 0x8b);
        FUN_0041b756(&iStack_34c);
        cStack_338 = '\0';
        uStack_18._0_1_ = 0xd;
        if (iStack_34c != 0) {
          ppiStack_3d4 = (int **)0x41a545;
          FUN_0041c550();
        }
        piVar8 = piVar4 + 0x59;
        iVar7 = (int)piVar4 + (0x174 - (int)piVar8);
        bVar10 = true;
        puVar3 = &uStack_2fc;
        do {
          if (iVar7 == 0) break;
          iVar7 = iVar7 + -1;
          bVar10 = *(char *)piVar8 == *(char *)puVar3;
          piVar8 = (int *)((int)piVar8 + 1);
          puVar3 = (undefined4 *)((int)puVar3 + 1);
        } while (bVar10);
        if (bVar10) {
          ppiStack_3d4 = (int **)&DAT_00fac210;
          basic_string<>();
          uStack_18 = CONCAT31(uStack_18._1_3_,0xe);
          ppiStack_3d4 = (int **)0x7;
          FUN_0041b008(&piStack_38c,0);
          ppiStack_3d4 = &piStack_318;
          uStack_18._0_1_ = 0xf;
          uStack_18._1_3_ = 0;
          unaff_ESI = unaff_ESI | 3;
          iVar7 = FUN_00412a34();
          bVar10 = true;
          if (iVar7 != 0) goto LAB_0041a5bf;
        }
        else {
LAB_0041a5bf:
          bVar10 = false;
        }
        if ((unaff_ESI & 2) != 0) {
          unaff_ESI = unaff_ESI & 0xfffffffd;
          ppiStack_3d4 = (int **)0x0;
          FUN_00401829(1);
        }
        uStack_18 = 0xd;
        if ((unaff_ESI & 1) != 0) {
          unaff_ESI = unaff_ESI & 0xfffffffe;
          ppiStack_3d4 = (int **)0x0;
          FUN_00401829(1);
        }
        if (bVar10) {
          ppiStack_3d4 = (int **)0x41a611;
          FUN_004fe47e();
          ppiStack_3d4 = apiStack_368;
          uVar5 = (**(code **)(*unaff_EBX + 4))();
          ppiStack_3d4 = (int **)0xffffffff;
          uStack_18 = CONCAT31(uStack_18._1_3_,0x10);
          FID_conflict_assign(uVar5,0);
          ppiStack_3d4 = (int **)0x0;
          FUN_00401829(1);
        }
        if (cStack_338 != '\0') {
          ppiStack_3d4 = (int **)0x0;
          FUN_00401829(1);
          cStack_338 = '\0';
        }
        uStack_18._0_1_ = 0xb;
        if (piStack_348 != (int *)0x0) {
          ppiStack_3d4 = (int **)0x41a67a;
          FUN_0040127a();
        }
        uStack_18 = CONCAT31(uStack_18._1_3_,9);
        if (local_3b0 != (int **)0x0) {
          ppiStack_3d4 = (int **)0x41a68f;
          FUN_0040127a();
        }
      }
      ppiStack_3d4 = (int **)0x41a69a;
      (**(code **)(*unaff_EBX + 8))();
      piVar4 = unaff_EBX;
    }
LAB_0041a956:
    pppiStack_3d0 = (int ***)0x0;
    ppiStack_3d4 = (int **)0x1;
    local_14._0_1_ = 6;
    FUN_00401829();
    if ((local_390 != 0) && (iStack_3a4 != 0)) {
      pppiStack_3d0 = &local_3b0;
      ppiStack_3d4 = (int **)0x41a98b;
      FUN_0041c508();
      pppiStack_3d0 = (int ***)acStack_260;
      local_14._0_1_ = 0x1b;
      ppiStack_3d4 = (int **)0x41a9a1;
      FUN_0041c276();
      pppiStack_3d0 = (int ***)0x0;
      uStack_2fc = 7;
      ppiStack_3d4 = (int **)0x41a9b8;
      FUN_0040180b();
      local_14._0_1_ = 0x1d;
      pppiStack_3d0 = (int ***)0x7;
      ppiStack_3d4 = (int **)0x0;
      uVar5 = FUN_0041b008(auStack_334);
      pppiStack_3d0 = (int ***)0x6;
      ppiStack_3d4 = (int **)&DAT_00fac21c;
      local_14._0_1_ = 0x1e;
      pppiStack_3d0 = (int ***)basic_string<>();
      ppiStack_3d4 = &piStack_348;
      local_14._0_1_ = 0x1f;
      piStack_348 = (int *)0x2cdb9839;
      uStack_344 = 0x393e111e;
      ppiStack_3d4 = (int **)FUN_00b94470();
      local_14._0_1_ = 0x20;
      pppiStack_3d0 = (int ***)uVar5;
      FUN_0041c102(&uStack_2f8);
      pppiStack_3d0 = (int ***)0x0;
      ppiStack_3d4 = (int **)0x1;
      FUN_00401829();
      pppiStack_3d0 = (int ***)0x0;
      ppiStack_3d4 = (int **)0x1;
      FUN_00401829();
      pppiStack_3d0 = (int ***)0x0;
      ppiStack_3d4 = (int **)0x1;
      FUN_00401829();
      pppiStack_3d0 = (int ***)0x0;
      ppiStack_3d4 = (int **)0x1;
      local_14 = (void *)CONCAT31(local_14._1_3_,0x25);
      FUN_00401829();
      uStack_25c = 1;
      if (acStack_260[0] == '\0') {
        acStack_260[0] = '\x01';
      }
      if (cStack_bc == '\0') {
        ppiStack_3d4 = (int **)0x41aad0;
        pppiStack_3d0 = (int ***)&uStack_2f8;
        FUN_00412a6f();
      }
      else {
        pppiStack_3d0 = (int ***)0xffffffff;
        ppiStack_3d4 = (int **)0x0;
        FID_conflict_assign(&uStack_2f8);
      }
      pppiStack_3d0 = (int ***)auStack_27c;
      ppiStack_3d4 = (int **)0x41aae4;
      FUN_0041b0a1();
      pppiStack_3d0 = (int ***)auStack_298;
      ppiStack_3d4 = (int **)0x41aaf8;
      FUN_0041b0a1();
      pppiStack_3d0 = (int ***)&uStack_2b8;
      ppiStack_3d4 = (int **)0x41ab05;
      puVar3 = (undefined4 *)FUN_0041a1fb();
      iVar1 = local_390;
      uStack_fc = *puVar3;
      uStack_f8 = puVar3[1];
      uStack_f4 = puVar3[2];
      uStack_f0 = puVar3[3];
      pppiStack_3d0 = (int ***)0x41ab29;
      FUN_0041c550();
      pppiStack_3d0 = (int ***)0x41ab3b;
      FUN_0041c550();
      uStack_9c = 1;
      uStack_94 = 1;
      pppiStack_3d0 = (int ***)0x41ab58;
      FUN_0041c0c6();
      pppiStack_3d0 = (int ***)0x41ab65;
      pppiStack_3d0 = (int ***)FUN_0041b02a();
      ppiStack_3d4 = (int **)0x41ab72;
      FUN_0041b043();
      pppiStack_3d0 = (int ***)0x41ab81;
      pppiStack_3d0 = (int ***)FUN_0041b02a();
      ppiStack_3d4 = (int **)0x41ab8e;
      FUN_0041b043();
      pppiStack_3d0 = (int ***)acStack_260;
      ppiStack_3d4 = local_3b0;
      FUN_0041be41();
      iVar7 = iStack_3a4;
      local_3b0[0x91] = (int *)0x0;
      local_3b0[0x92] = (int *)0x0;
      pppiStack_3d0 = *(int ****)(iStack_3a4 + 0x250);
      ppiStack_3d4 = *(int ***)(iVar1 + 0x250);
      ppiVar6 = (int **)FUN_0041ba00(&pppiStack_3a8);
      local_3b0[0x94] = *ppiVar6;
      pppiStack_3d0 = *(int ****)(iVar7 + 0x24c);
      ppiStack_3d4 = *(int ***)(iVar1 + 0x24c);
      ppiVar6 = (int **)FUN_00419eb3(&pppiStack_3a8);
      local_3b0[0x93] = *ppiVar6;
      pppiStack_3d0 = (int ***)(piStack_398 + 0x8d);
      ppiStack_3d4 = (int **)0x41ac17;
      FUN_0041b126();
      if ((-(uint)((char)piStack_348 != '\0') & 0x6a1cd8) != 0) {
        pppiStack_3d0 = (int ***)0x41ac40;
        FUN_0041ba77();
      }
      pppiStack_3a8 = &ppiStack_3d4;
      *(undefined *)(local_3b0 + 0x95) = 1;
      ppiStack_3d4 = local_3b0;
                    // WARNING: Subroutine does not return
      FUN_0043c023(&ppiStack_3ac);
    }
  }
  else {
    iVar7 = (int)piStack_3b4 + (0x174 - (int)piVar4);
    bVar10 = true;
    puVar3 = &uStack_2f8;
    do {
      if (iVar7 == 0) break;
      iVar7 = iVar7 + -1;
      bVar10 = *(char *)piVar4 == *(char *)puVar3;
      piVar4 = (int *)((int)piVar4 + 1);
      puVar3 = (undefined4 *)((int)puVar3 + 1);
    } while (bVar10);
    if (bVar10) {
      pppiStack_3d0 = (int ***)0x41a6d3;
      FUN_004fe47e();
      pppiStack_3d0 = (int ***)0xffffffff;
      ppiStack_3d4 = (int **)0x0;
      FID_conflict_assign(pppiStack_3a8);
      pppiStack_3d0 = (int ***)&DAT_00fac214;
      ppiStack_3d4 = (int **)0x41a6f4;
      basic_string<>();
      local_14._0_1_ = 0x11;
      pppiStack_3d0 = (int ***)0x7;
      ppiStack_3d4 = (int **)0x0;
      FUN_0041b008(auStack_314);
      pppiStack_3d0 = (int ***)0x0;
      ppiStack_3d4 = (int **)0x1;
      local_14 = (void *)CONCAT31(local_14._1_3_,0x13);
      FUN_00401829();
      pppiStack_3d0 = (int ***)0x41a73b;
      piVar4 = (int *)(**(code **)(*piStack_39c + 0x10))();
      pppiStack_3d0 = (int ***)0x41a748;
      piStack_3b4 = piVar4;
      (**(code **)(*piVar4 + 0xc))();
      while( true ) {
        pppiStack_3d0 = (int ***)0x41a94e;
        cVar2 = (**(code **)(*piVar4 + 0x10))();
        if (cVar2 == '\0') break;
        pppiStack_3d0 = (int ***)auStack_388;
        ppiStack_3d4 = (int **)0x41a75b;
        (**(code **)(*piStack_3b4 + 4))();
        uStack_18._0_1_ = 0x14;
        ppiStack_3d4 = ppiStack_3ac;
        iVar7 = FUN_00412a34();
        ppiStack_3d4 = (int **)0x0;
        uStack_18 = CONCAT31(uStack_18._1_3_,0x13);
        FUN_00401829(1);
        if (iVar7 != 0) {
          ppiStack_3d4 = &piStack_3b4;
          (**(code **)*unaff_EBX)();
          piVar4 = piStack_3b4;
          uStack_18._0_1_ = 0x15;
          ppiStack_3d4 = (int **)(piStack_3b4 + 0x8b);
          FUN_0041b756(&iStack_34c);
          cStack_338 = '\0';
          uStack_18._0_1_ = 0x17;
          if (iStack_34c != 0) {
            ppiStack_3d4 = (int **)0x41a7ec;
            FUN_0041c550();
          }
          piVar8 = piVar4 + 0x59;
          iVar7 = (int)piVar4 + (0x174 - (int)piVar8);
          bVar10 = true;
          pcVar9 = acStack_2bc;
          do {
            if (iVar7 == 0) break;
            iVar7 = iVar7 + -1;
            bVar10 = *(char *)piVar8 == *pcVar9;
            piVar8 = (int *)((int)piVar8 + 1);
            pcVar9 = pcVar9 + 1;
          } while (bVar10);
          if (bVar10) {
            ppiStack_3d4 = (int **)&DAT_00fac218;
            basic_string<>();
            uStack_18 = CONCAT31(uStack_18._1_3_,0x18);
            ppiStack_3d4 = (int **)0x7;
            FUN_0041b008(&piStack_38c,0);
            ppiStack_3d4 = &piStack_318;
            uStack_18._0_1_ = 0x19;
            uStack_18._1_3_ = 0;
            unaff_ESI = unaff_ESI | 0xc;
            iVar7 = FUN_00412a34();
            bVar10 = true;
            if (iVar7 != 0) goto LAB_0041a869;
          }
          else {
LAB_0041a869:
            bVar10 = false;
          }
          if ((unaff_ESI & 8) != 0) {
            unaff_ESI = unaff_ESI & 0xfffffff7;
            ppiStack_3d4 = (int **)0x0;
            FUN_00401829(1);
          }
          uStack_18 = 0x17;
          if ((unaff_ESI & 4) != 0) {
            unaff_ESI = unaff_ESI & 0xfffffffb;
            ppiStack_3d4 = (int **)0x0;
            FUN_00401829(1);
          }
          if (bVar10) {
            ppiStack_3d4 = (int **)0x41a8be;
            FUN_004fe47e();
            ppiStack_3d4 = &piStack_38c;
            uVar5 = (**(code **)(*unaff_EBX + 4))();
            ppiStack_3d4 = (int **)0xffffffff;
            uStack_18 = CONCAT31(uStack_18._1_3_,0x1a);
            FID_conflict_assign(uVar5,0);
            ppiStack_3d4 = (int **)0x0;
            FUN_00401829(1);
          }
          if (cStack_338 != '\0') {
            ppiStack_3d4 = (int **)0x0;
            FUN_00401829(1);
            cStack_338 = '\0';
          }
          uStack_18._0_1_ = 0x15;
          if (piStack_348 != (int *)0x0) {
            ppiStack_3d4 = (int **)0x41a927;
            FUN_0040127a();
          }
          uStack_18 = CONCAT31(uStack_18._1_3_,0x13);
          if (local_3b0 != (int **)0x0) {
            ppiStack_3d4 = (int **)0x41a93c;
            FUN_0040127a();
          }
        }
        ppiStack_3d4 = (int **)0x41a947;
        (**(code **)(*unaff_EBX + 8))();
        piVar4 = unaff_EBX;
      }
      goto LAB_0041a956;
    }
  }
  pppiStack_3d0 = (int ***)0x0;
  ppiStack_3d4 = (int **)0x1;
  FUN_00401829();
  local_14._0_1_ = 4;
  if (local_3a0 != 0) {
    pppiStack_3d0 = (int ***)0x41adba;
    FUN_0040127a();
  }
  pppiStack_3d0 = (int ***)0x0;
  ppiStack_3d4 = (int **)0x1;
  FUN_00401829();
  local_14 = (void *)CONCAT31(local_14._1_3_,2);
  if (piStack_38c != (int *)0x0) {
    pppiStack_3d0 = (int ***)0x41adde;
    FUN_0040127a();
  }
  if (cStack_2d8 != '\0') {
    pppiStack_3d0 = (int ***)0x0;
    ppiStack_3d4 = (int **)0x1;
    FUN_00401829();
    cStack_2d8 = '\0';
  }
  local_14 = (void *)((uint)local_14 & 0xffffff00);
  if (apiStack_368[0] != (int *)0x0) {
    pppiStack_3d0 = (int ***)0x41ae11;
    FUN_0040127a();
  }
LAB_0041ae11:
  local_14 = (void *)0xffffffff;
  if (local_394 != (int *)0x0) {
    pppiStack_3d0 = (int ***)0x41ae26;
    FUN_0040127a();
  }
  ExceptionList = local_1c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall
FUN_0041b008(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0041b0fc(param_1_00,param_2,param_3,(int)&param_1 + 3);
  return param_1;
}



int FUN_0041b02a(void)

{
  int unaff_ESI;
  uint unaff_EDI;
  
  if ((uint)(*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc) >> 2) <= unaff_EDI) {
    FUN_00a3fb10();
  }
  return *(int *)(unaff_ESI + 0xc) + unaff_EDI * 4;
}



void FUN_0041b043(undefined4 *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int in_EAX;
  uint uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = *(int *)(in_EAX + 0x14) - iVar1 >> 2;
  }
  puVar2 = *(undefined4 **)(in_EAX + 0x10);
  if ((uint)((int)puVar2 - iVar1 >> 2) < uVar3) {
    *puVar2 = *param_1;
    *(undefined4 **)(in_EAX + 0x10) = puVar2 + 1;
  }
  else {
    FUN_0046e65a();
    FUN_0041b144(&local_10,param_1,local_10,local_c);
  }
  return;
}



void __thiscall FUN_0041b0a1(int param_1_00,undefined4 param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(param_1_00 + 0x10);
  uVar2 = FUN_00430b0c();
  if ((uint)((iVar1 - *(int *)(param_1_00 + 0xc)) / 0x1c) < uVar2) {
    uVar3 = FUN_0041b246(iVar1,1,param_1);
    *(undefined4 *)(param_1_00 + 0x10) = uVar3;
  }
  else {
    FUN_004494bc(iVar1,param_1_00);
    FUN_0041b1dc(&local_10,local_10,local_c,param_1);
  }
  return;
}



int __thiscall FUN_0041b0fc(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  FUN_0040180b(0);
  FID_conflict_assign(param_1,param_2,param_3);
  return param_1_00;
}



undefined * __thiscall FUN_0041b126(undefined *param_1_00,char *param_1)

{
  *param_1_00 = 0;
  if (*param_1 != '\0') {
    FUN_00439f42(param_1 + 4);
  }
  return param_1_00;
}



undefined4 FUN_0041b144(undefined4 param_1,undefined4 param_2,int param_3,int param_4)

{
  int in_EAX;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc) & 0xfffffffcU) == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = param_4 - local_8 >> 2;
  }
  FUN_0041b26b(1,param_2,param_3,param_4);
  FUN_0046e65a();
  FUN_0041b675(local_8);
  return param_1;
}



undefined4 * __fastcall FUN_0041b1bc(undefined4 param_1_00,int param_2,undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *unaff_ESI;
  
  puVar1 = unaff_ESI;
  iVar2 = param_2;
  if (param_2 != 0) {
    do {
      *puVar1 = *param_1;
      iVar2 = iVar2 + -1;
      puVar1 = puVar1 + 1;
    } while (iVar2 != 0);
  }
  return unaff_ESI + param_2;
}



undefined4 __thiscall
FUN_0041b1dc(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  int local_c;
  int iStack_8;
  
  local_c = param_1_00;
  iStack_8 = param_1_00;
  if ((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x1c == 0) {
    uVar1 = 0;
  }
  else {
    FUN_004494bc(*(int *)(param_1_00 + 0xc),param_1_00);
    uVar1 = FUN_0041b6e4(&local_c);
  }
  FUN_0041b40a(param_2,param_3,1,param_4);
  FUN_004494bc(*(undefined4 *)(param_1_00 + 0xc),param_1_00);
  FUN_0041b6b7(param_1,uVar1);
  return param_1;
}



int __thiscall FUN_0041b246(int param_1_00,int param_1,int param_2,undefined4 param_3)

{
  FUN_0041b80c(param_1,param_2,param_3,param_1_00 + 8);
  return param_2 * 0x1c + param_1;
}



void FUN_0041b26b(uint param_1,undefined4 *param_2,undefined4 param_3,undefined4 *param_4)

{
  undefined4 *puVar1;
  uint uVar2;
  int in_EAX;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int extraout_ECX;
  uint uVar6;
  undefined8 uVar7;
  uint local_8;
  
  uVar2 = param_1;
  iVar5 = *(int *)(in_EAX + 0xc);
  if (iVar5 == 0) {
    local_8 = 0;
  }
  else {
    local_8 = *(int *)(in_EAX + 0x14) - iVar5 >> 2;
  }
  if (param_1 != 0) {
    iVar3 = *(int *)(in_EAX + 0x10);
    uVar7 = CONCAT44(0x3fffffff,iVar3);
    iVar5 = iVar3 - iVar5 >> 2;
    if (0x3fffffffU - iVar5 < param_1) {
      uVar7 = FUN_004423c1();
      iVar5 = extraout_ECX;
    }
    uVar6 = iVar5 + uVar2;
    if (local_8 < uVar6) {
      if ((int)((ulonglong)uVar7 >> 0x20) - (local_8 >> 1) < local_8) {
        local_8 = 0;
      }
      else {
        local_8 = local_8 + (local_8 >> 1);
      }
      if (local_8 < uVar6) {
        local_8 = uVar6;
      }
      iVar3 = FUN_00467f53();
      FUN_0041b1bc(param_2);
      FUN_0061526b(*(undefined4 *)(in_EAX + 0xc));
      FUN_0061526b(param_4);
      iVar5 = *(int *)(in_EAX + 0xc);
      if (iVar5 != 0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar5);
      }
      *(uint *)(in_EAX + 0x14) = iVar3 + local_8 * 4;
      *(uint *)(in_EAX + 0x10) = iVar3 + (param_1 + (*(int *)(in_EAX + 0x10) - iVar5 >> 2)) * 4;
      *(int *)(in_EAX + 0xc) = iVar3;
    }
    else if ((uint)((int)uVar7 - (int)param_4 >> 2) < uVar2) {
      param_1 = *param_2;
      FUN_0061526b(param_4);
      FUN_0041b1bc(&param_1);
      *(int *)(in_EAX + 0x10) = *(int *)(in_EAX + 0x10) + uVar2 * 4;
      iVar5 = *(int *)(in_EAX + 0x10);
      for (; param_4 != (undefined4 *)(iVar5 + uVar2 * -4); param_4 = param_4 + 1) {
        *param_4 = param_1;
      }
    }
    else {
      param_1 = *param_2;
      iVar5 = (int)uVar7 + uVar2 * -4;
      uVar4 = FUN_0061526b(iVar5);
      *(undefined4 *)(in_EAX + 0x10) = uVar4;
      iVar5 = iVar5 - (int)param_4 >> 2;
      if (0 < iVar5) {
        _memmove_s((void *)(iVar3 + iVar5 * -4),iVar5 * 4,param_4,iVar5 * 4);
      }
      puVar1 = param_4 + uVar2;
      for (; param_4 != puVar1; param_4 = param_4 + 1) {
        *param_4 = param_1;
      }
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __thiscall
FUN_0041b40a(int param_1_00,undefined4 param_1,int param_2,uint param_3,undefined4 param_4)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  int iVar5;
  int extraout_ECX;
  undefined auStack_50 [28];
  undefined auStack_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x54;
  local_8 = 0x41b416;
  uVar1 = FUN_00430b0c();
  if (param_3 != 0) {
    iVar2 = (*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x1c;
    iVar5 = 0x9249249;
    if (0x9249249U - iVar2 < param_3) {
      iVar2 = FUN_004423c1();
      iVar5 = extraout_ECX;
    }
    uVar3 = iVar2 + param_3;
    if (uVar1 < uVar3) {
      if (iVar5 - (uVar1 >> 1) < uVar1) {
        uVar1 = 0;
      }
      else {
        uVar1 = uVar1 + (uVar1 >> 1);
      }
      if (uVar1 < uVar3) {
        uVar1 = uVar3;
      }
      iVar5 = FUN_0043043a(uVar1,0);
      iVar2 = (param_2 - *(int *)(param_1_00 + 0xc)) / 0x1c;
      local_8 = 0;
      FUN_0041b246(iVar2 * 0x1c + iVar5,param_3,param_4);
      FUN_0041b834(*(undefined4 *)(param_1_00 + 0xc),param_2,iVar5);
      FUN_0041b834(param_2,*(undefined4 *)(param_1_00 + 0x10),(iVar2 + param_3) * 0x1c + iVar5);
      if (*(int *)(param_1_00 + 0xc) != 0) {
        FUN_0041c390(*(int *)(param_1_00 + 0xc),*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
      }
      *(uint *)(param_1_00 + 0x14) = uVar1 * 0x1c + iVar5;
      *(uint *)(param_1_00 + 0x10) =
           (param_3 + (*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x1c) * 0x1c +
           iVar5;
      *(int *)(param_1_00 + 0xc) = iVar5;
    }
    else {
      if ((uint)((*(int *)(param_1_00 + 0x10) - param_2) / 0x1c) < param_3) {
        basic_string<>(param_4);
        local_8 = 2;
        FUN_0041b834(param_2,*(undefined4 *)(param_1_00 + 0x10),param_3 * 0x1c + param_2);
        local_8 = CONCAT31(local_8._1_3_,3);
        FUN_0041b246(*(undefined4 *)(param_1_00 + 0x10),
                     param_3 - (*(int *)(param_1_00 + 0x10) - param_2) / 0x1c,auStack_34);
        local_8 = 2;
        *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + param_3 * 0x1c;
        FUN_0041b8cc(param_2,*(int *)(param_1_00 + 0x10) + param_3 * -0x1c,auStack_34);
      }
      else {
        basic_string<>(param_4);
        local_8 = 5;
        iVar2 = *(int *)(param_1_00 + 0x10);
        iVar5 = iVar2 + param_3 * -0x1c;
        uVar4 = FUN_0041b834(iVar5,iVar2,iVar2);
        *(undefined4 *)(param_1_00 + 0x10) = uVar4;
        FUN_0043100f(param_2,iVar5,iVar2);
        FUN_0041b8cc(param_2,param_3 * 0x1c + param_2,auStack_50);
      }
      FUN_00401829(1,0);
    }
  }
  FUN_00a4220a();
  return;
}



void Catch_All_0041b524(void)

{
  int iVar1;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + -0x5c);
  if (1 < *(int *)(unaff_EBP + -0x50)) {
    FUN_0041c390(*(undefined4 *)(unaff_EBP + -0x54),iVar1 * 0x1c + *(int *)(unaff_EBP + -0x54));
  }
  if (0 < *(int *)(unaff_EBP + -0x50)) {
    FUN_0041c390(iVar1 * 0x1c + *(int *)(unaff_EBP + -0x54),
                 (*(int *)(unaff_EBP + 0x10) + iVar1) * 0x1c + *(int *)(unaff_EBP + -0x54));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x54));
}



void FUN_0041b56e(void)

{
  undefined4 uVar1;
  int unaff_EBP;
  int unaff_ESI;
  uint unaff_EDI;
  
  __CxxThrowException_8();
  if ((uint)((*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_EBP + 0xc)) / 0x1c) < unaff_EDI) {
    basic_string<>();
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_0041b834(*(undefined4 *)(unaff_EBP + 0xc));
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_0041b246(*(undefined4 *)(unaff_ESI + 0x10));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + unaff_EDI * 0x1c;
    FUN_0041b8cc(*(undefined4 *)(unaff_EBP + 0xc));
  }
  else {
    basic_string<>();
    *(undefined4 *)(unaff_EBP + -4) = 5;
    *(undefined4 *)(unaff_EBP + -0x50) = *(undefined4 *)(unaff_ESI + 0x10);
    *(int *)(unaff_EBP + -0x50) = *(int *)(unaff_EBP + -0x50) + unaff_EDI * -0x1c;
    uVar1 = FUN_0041b834(*(undefined4 *)(unaff_EBP + -0x50));
    *(undefined4 *)(unaff_ESI + 0x10) = uVar1;
    FUN_0043100f(*(undefined4 *)(unaff_EBP + 0xc));
    FUN_0041b8cc(*(undefined4 *)(unaff_EBP + 0xc));
  }
  FUN_00401829();
  FUN_00a4220a();
  return;
}



void Catch_All_0041b5f2(void)

{
  int iVar1;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 0x10) * 0x1c;
  FUN_0041c390(iVar1 + *(int *)(unaff_EBP + 0xc),
               *(int *)(*(int *)(unaff_EBP + -0x58) + 0x10) + iVar1);
  FUN_0041b56e(0);
  return;
}



void FUN_0041b675(int param_1)

{
  int *piVar1;
  int *piVar2;
  int **in_EAX;
  int iVar3;
  int **unaff_EBX;
  
  piVar1 = *in_EAX;
  piVar2 = in_EAX[1];
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar1;
  }
  piVar2 = piVar2 + param_1;
  if (piVar2 <= *(int **)(iVar3 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(int **)(iVar3 + 0xc) <= piVar2) goto LAB_0041b6ab;
  }
  FUN_00a3fb10();
LAB_0041b6ab:
  unaff_EBX[1] = piVar2;
  *unaff_EBX = piVar1;
  return;
}



void __thiscall FUN_0041b6b7(undefined4 *param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar1 = *param_1_00;
  uVar2 = param_1_00[1];
  FUN_0041b70c(param_2);
  *param_1 = uVar1;
  param_1[1] = uVar2;
  return;
}



int __thiscall FUN_0041b6e4(int *param_1_00,int *param_1)

{
  if ((*param_1_00 == 0) || (*param_1_00 != *param_1)) {
    FUN_00a3fb10();
  }
  return (param_1_00[1] - param_1[1]) / 0x1c;
}



int ** __thiscall FUN_0041b70c(int **param_1_00,int param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *param_1_00;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *param_1_00;
    if (piVar1 != (int *)0x0) goto LAB_0041b721;
    iVar2 = 0;
  }
  else {
LAB_0041b721:
    iVar2 = *piVar1;
  }
  if (param_1_00[1] + param_1 * 7 <= *(int **)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *piVar1;
    }
    if (*(int **)(iVar2 + 0xc) <= param_1_00[1] + param_1 * 7) goto LAB_0041b74c;
  }
  FUN_00a3fb10();
LAB_0041b74c:
  param_1_00[1] = param_1_00[1] + param_1 * 7;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0041b756(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x41b762;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W133E5AC5::W4860BBCB::RTTI_Type_Descriptor,
                   &W7DEA1187::WF43FCF5E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W133E5AC5::W4860BBCB::RTTI_Type_Descriptor,
                           &W7DEA1187::WF43FCF5E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_0041b80c(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_0041b84f(param_1,param_2,param_3,param_4,0,0);
  return;
}



void __thiscall
FUN_0041b834(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0041b8a4(param_1,param_2,param_3,param_1_00 + 8);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0041b84f(int param_1,int param_2,undefined4 param_3)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    FUN_0041bc8b(param_1,param_3);
    param_1 = param_1 + 0x1c;
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_0041b881(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 8); iVar1 = iVar1 + 0x1c)
  {
    FUN_0041c33b(0);
  }
  __CxxThrowException_8(0,0);
  return;
}



void FUN_0041b8a4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_0041b94a(param_1,param_2,param_3,param_4,param_2,0);
  return;
}



void FUN_0041b8cc(int param_1,int param_2,undefined4 param_3)

{
  for (; param_1 != param_2; param_1 = param_1 + 0x1c) {
    FID_conflict_assign(param_3,0,0xffffffff);
  }
  return;
}



void Catch_All_0041b933(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void FUN_0041b94a(int param_1,int param_2,int param_3)

{
  undefined local_34 [24];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x41b956;
  local_1c = 7;
  FUN_0040180b(0);
  local_8 = 1;
  for (; param_1 != param_2; param_1 = param_1 + 0x1c) {
    FUN_0041bc8b(param_3,local_34);
    FUN_0043165e(param_1);
    param_3 = param_3 + 0x1c;
  }
  FUN_00401829(1,0);
  FUN_00a4220a();
  return;
}



void Catch_All_0041b99f(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x38); iVar1 != *(int *)(unaff_EBP + -0x34);
      iVar1 = iVar1 + 0x1c) {
    FUN_0041c33b(0);
  }
  __CxxThrowException_8(0,0);
  FUN_00401829(1,unaff_EBX);
  FUN_00a4220a();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0041b9cf(void)

{
  basic_string<>(&stack0x00000004);
  FUN_00401829(1,0);
  return;
}



void FUN_0041ba00(undefined4 *param_1,int param_2,int param_3)

{
  int *piVar1;
  
  piVar1 = (int *)FUN_00419e85(param_2);
  if (((~-(uint)(*piVar1 != 1) & 0x7a491c) != 0) &&
     (piVar1 = (int *)FUN_00419e85(param_3), (~-(uint)(*piVar1 != 1) & 0x7a491c) != 0)) {
    *param_1 = 0;
    return;
  }
  if (((~-(uint)(param_2 != 1) & 0x7a491c) == 0) && ((~-(uint)(param_3 != 1) & 0x7a491c) == 0)) {
    *param_1 = 2;
  }
  else {
    *param_1 = 1;
  }
  return;
}



void FUN_0041ba77(void)

{
  char *in_EAX;
  char *unaff_ESI;
  
  if (*unaff_ESI == '\0') {
    if (*in_EAX != '\0') {
      FUN_00439f42(in_EAX + 4);
    }
  }
  else if (*in_EAX == '\0') {
    *unaff_ESI = '\0';
  }
  else {
    *(undefined4 *)(unaff_ESI + 4) = *(undefined4 *)(in_EAX + 4);
  }
  return;
}



void FUN_0041ba9f(void)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  uint uVar3;
  int iVar4;
  uint uVar5;
  int unaff_EBX;
  uint uVar6;
  
  if (in_EAX != unaff_EBX) {
    uVar3 = *(int *)(unaff_EBX + 0x10) - *(int *)(unaff_EBX + 0xc) >> 2;
    if (uVar3 == 0) {
      FUN_0041c0c6();
    }
    else {
      iVar4 = *(int *)(in_EAX + 0xc);
      uVar5 = *(int *)(in_EAX + 0x10) - iVar4 >> 2;
      if (uVar5 < uVar3) {
        if (iVar4 == 0) {
          uVar6 = 0;
        }
        else {
          uVar6 = *(int *)(in_EAX + 0x14) - iVar4 >> 2;
        }
        if (uVar6 < uVar3) {
          if (iVar4 != 0) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(iVar4);
          }
          iVar4 = *(int *)(unaff_EBX + 0x10);
          iVar1 = *(int *)(unaff_EBX + 0xc);
          *(undefined4 *)(in_EAX + 0xc) = 0;
          *(undefined4 *)(in_EAX + 0x10) = 0;
          *(undefined4 *)(in_EAX + 0x14) = 0;
          if (iVar4 - iVar1 >> 2 == 0) {
            return;
          }
          cVar2 = FUN_0041c251();
          if (cVar2 == '\0') {
            return;
          }
          iVar4 = *(int *)(unaff_EBX + 0xc);
        }
        else {
          iVar4 = *(int *)(unaff_EBX + 0xc) + uVar5 * 4;
          FUN_0041c051(*(int *)(unaff_EBX + 0xc));
        }
        iVar4 = FUN_0061526b(iVar4);
      }
      else {
        FUN_0041c051(*(undefined4 *)(unaff_EBX + 0xc));
        iVar4 = *(int *)(in_EAX + 0xc) +
                (*(int *)(unaff_EBX + 0x10) - *(int *)(unaff_EBX + 0xc) >> 2) * 4;
      }
      *(int *)(in_EAX + 0x10) = iVar4;
    }
  }
  return;
}



int __thiscall
FUN_0041bb63(int param_1_00,int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_10 [4];
  undefined4 local_c;
  
  FUN_004494bc(param_3,param_1_00);
  FUN_004494bc(param_5,param_1_00);
  cVar1 = FUN_00449367(local_10);
  if (cVar1 == '\0') {
    uVar2 = FUN_0041bc63(local_c,*(undefined4 *)(param_1_00 + 0x10),*(undefined4 *)(param_1 + 4));
    FUN_0041c390(uVar2,*(undefined4 *)(param_1_00 + 0x10));
    *(undefined4 *)(param_1_00 + 0x10) = uVar2;
  }
  return param_1;
}



void __fastcall FUN_0041bbc1(int param_1)

{
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_004494bc(*(undefined4 *)(param_1 + 0x10),param_1);
  FUN_004494bc(*(undefined4 *)(param_1 + 0xc),param_1);
  FUN_0041bb63(&local_14,local_14,local_10,local_c,local_8);
  return;
}



int FUN_0041bbfc(int param_1,int param_2,int param_3)

{
  for (; param_1 != param_2; param_1 = param_1 + 0x1c) {
    FID_conflict_assign(param_1,0,0xffffffff);
    param_3 = param_3 + 0x1c;
  }
  return param_3;
}



int FUN_0041bc24(int param_1,int param_2,int param_3)

{
  FUN_0041bbfc(param_1,param_2,param_3,param_2,0,0);
  return ((param_2 - param_1) / 0x1c) * 0x1c + param_3;
}



void FUN_0041bc63(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0041bc24(param_1,param_2,param_3,param_2,param_2,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_0041bc8b(int param_1,undefined4 param_2)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c3081f;
  if (param_1 != 0) {
    puVar1 = (undefined *)basic_string<>(param_2);
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_0041bcb6(int param_1,int param_2,int param_3)

{
  for (; param_1 != param_2; param_1 = param_1 + 0x1c) {
    FUN_0041bc8b(param_3,param_1);
    param_3 = param_3 + 0x1c;
  }
  return param_3;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 Catch_All_0041bce8(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0x10);
      iVar1 = iVar1 + 0x1c) {
    FUN_0041c33b(0);
  }
  __CxxThrowException_8(0,0);
  return *(undefined4 *)(unaff_EBP + 0x10);
}



void FUN_0041bd0e(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_0041bcb6(param_1,param_2,param_3,param_4,param_2,0);
  return;
}



void __thiscall
FUN_0041bd36(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0041bd0e(param_1,param_2,param_3,param_1_00 + 8);
  return;
}



int __thiscall FUN_0041bd51(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  undefined4 uVar4;
  int iVar5;
  uint uVar6;
  undefined4 uVar7;
  
  if (param_1_00 != param_1) {
    uVar2 = (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x1c;
    if (uVar2 == 0) {
      FUN_0041bbc1();
    }
    else {
      uVar3 = (*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x1c;
      if (uVar3 < uVar2) {
        uVar6 = FUN_00430b0c();
        if (uVar6 < uVar2) {
          if (*(int *)(param_1_00 + 0xc) != 0) {
            FUN_0041c390(*(int *)(param_1_00 + 0xc),*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
          }
          cVar1 = FUN_0042f1ff((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x1c);
          if (cVar1 == '\0') {
            return param_1_00;
          }
          uVar4 = *(undefined4 *)(param_1_00 + 0xc);
          uVar7 = *(undefined4 *)(param_1 + 0x10);
          iVar5 = *(int *)(param_1 + 0xc);
        }
        else {
          iVar5 = uVar3 * 0x1c + *(int *)(param_1 + 0xc);
          FUN_0041bc63(*(int *)(param_1 + 0xc),iVar5,*(undefined4 *)(param_1_00 + 0xc));
          uVar4 = *(undefined4 *)(param_1_00 + 0x10);
          uVar7 = *(undefined4 *)(param_1 + 0x10);
        }
        iVar5 = FUN_0041bd36(iVar5,uVar7,uVar4);
      }
      else {
        uVar4 = FUN_0041bc63(*(undefined4 *)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x10),
                             *(int *)(param_1_00 + 0xc));
        FUN_0041c390(uVar4,*(undefined4 *)(param_1_00 + 0x10));
        iVar5 = ((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x1c) * 0x1c +
                *(int *)(param_1_00 + 0xc);
      }
      *(int *)(param_1_00 + 0x10) = iVar5;
    }
  }
  return param_1_00;
}



void FUN_0041be41(char *param_1,char *param_2)

{
  if (*param_1 == '\0') {
    if (*param_2 != '\0') {
      if ((undefined4 *)(param_1 + 4) != (undefined4 *)0x0) {
        *(undefined4 *)(param_1 + 4) = *(undefined4 *)(param_2 + 4);
      }
      *param_1 = '\x01';
    }
  }
  else if (*param_2 == '\0') {
    *param_1 = '\0';
  }
  else {
    *(undefined4 *)(param_1 + 4) = *(undefined4 *)(param_2 + 4);
  }
  FUN_0041ba77();
  FUN_0041c550();
  FUN_0041c550();
  FUN_0041c550();
  FUN_0041c550();
  *(undefined4 *)(param_1 + 0x90) = *(undefined4 *)(param_2 + 0x90);
  *(undefined4 *)(param_1 + 0x94) = *(undefined4 *)(param_2 + 0x94);
  *(undefined4 *)(param_1 + 0x98) = *(undefined4 *)(param_2 + 0x98);
  *(undefined4 *)(param_1 + 0x9c) = *(undefined4 *)(param_2 + 0x9c);
  FUN_0041c550();
  FUN_0041c550();
  FUN_0041c550();
  FUN_0041c550();
  FUN_0041c550();
  FUN_0041c550();
  *(undefined4 *)(param_1 + 0x160) = *(undefined4 *)(param_2 + 0x160);
  *(undefined4 *)(param_1 + 0x164) = *(undefined4 *)(param_2 + 0x164);
  *(undefined4 *)(param_1 + 0x168) = *(undefined4 *)(param_2 + 0x168);
  *(undefined4 *)(param_1 + 0x16c) = *(undefined4 *)(param_2 + 0x16c);
  *(undefined4 *)(param_1 + 0x170) = *(undefined4 *)(param_2 + 0x170);
  FUN_0041ba9f();
  FUN_0041bd51(param_2 + 0x18c);
  FUN_0041c550();
  *(undefined4 *)(param_1 + 0x1c4) = *(undefined4 *)(param_2 + 0x1c4);
  *(undefined4 *)(param_1 + 0x1c8) = *(undefined4 *)(param_2 + 0x1c8);
  *(undefined4 *)(param_1 + 0x1cc) = *(undefined4 *)(param_2 + 0x1cc);
  *(undefined4 *)(param_1 + 0x1d0) = *(undefined4 *)(param_2 + 0x1d0);
  FUN_0041c550();
  FUN_0041bd51(param_2 + 500);
  FUN_0041c550();
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_2 + 0x230);
}



undefined4 FUN_0041c034(void)

{
  int *unaff_ESI;
  int *unaff_EDI;
  
  if ((*unaff_ESI == 0) || (*unaff_ESI != *unaff_EDI)) {
    FUN_00a3fb10();
  }
  return CONCAT31((int3)((uint)unaff_ESI[1] >> 8),unaff_ESI[1] != unaff_EDI[1]);
}



void * __fastcall FUN_0041c051(undefined4 param_1_00,void *param_2,void *param_1)

{
  int in_EAX;
  int iVar1;
  rsize_t _DstSize;
  
  iVar1 = in_EAX - (int)param_1 >> 2;
  _DstSize = iVar1 * 4;
  if (0 < iVar1) {
    _memmove_s(param_2,_DstSize,param_1,_DstSize);
  }
  return (void *)(_DstSize + (int)param_2);
}



undefined4 FUN_0041c078(int param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  cVar1 = FUN_0041c034();
  if (cVar1 != '\0') {
    uVar2 = FUN_0041c051(local_8);
    *(undefined4 *)(param_1 + 0x10) = uVar2;
  }
  return param_2;
}



void FUN_0041c0c6(void)

{
  undefined4 in_EAX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0041c078(in_EAX,&local_14,local_14,local_10,local_c,local_8);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0041c102(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  basic_string<>(param_2);
  uVar1 = FID_conflict_append(param_3,0,0xffffffff);
  basic_string<>(uVar1);
  FUN_00401829(1,0);
  return param_1;
}



void __fastcall FUN_0041c14d(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_0041c165();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __fastcall FUN_0041c165(undefined4 param_1,int param_2)

{
  if (*(char *)(param_2 + 0x23c) != '\0') {
    *(undefined *)(param_2 + 0x23c) = 0;
  }
  if (*(char *)(param_2 + 0x234) != '\0') {
    *(char *)(param_2 + 0x234) = '\0';
  }
  FUN_0041c3e3(param_2);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0041c182(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W133E5AC5::W7AC0216B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0041c1c8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_0041c165();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0041c1e8(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_0041c182(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_0041c235(void)

{
  int **ppiVar1;
  int *unaff_ESI;
  
  ppiVar1 = (int **)FUN_00418daa(1,0);
  if (ppiVar1 == (int **)0x0) {
    ppiVar1 = (int **)0x0;
  }
  else {
    *ppiVar1 = unaff_ESI;
  }
  *unaff_ESI = (int)ppiVar1;
  return;
}



undefined4 __fastcall FUN_0041c251(undefined4 param_1)

{
  int iVar1;
  int unaff_ESI;
  uint unaff_EDI;
  
  if (0x3fffffff < unaff_EDI) {
    FUN_004423c1(param_1);
  }
  iVar1 = FUN_00467f53();
  *(int *)(unaff_ESI + 0xc) = iVar1;
  *(int *)(unaff_ESI + 0x10) = iVar1;
  iVar1 = iVar1 + unaff_EDI * 4;
  *(int *)(unaff_ESI + 0x14) = iVar1;
  return CONCAT31((int3)((uint)iVar1 >> 8),1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_0041c276(undefined *param_1)

{
  *param_1 = 0;
  param_1[8] = 0;
  param_1[0x10] = 0;
  param_1[0x30] = 0;
  param_1[0x50] = 0;
  param_1[0x70] = 0;
  param_1[0xa0] = 0;
  param_1[0xc0] = 0;
  param_1[0xe0] = 0;
  param_1[0x100] = 0;
  param_1[0x120] = 0;
  param_1[0x140] = 0;
  *(undefined4 *)(param_1 + 0x160) = 0;
  FUN_00674aaa(param_1 + 0x174);
  FUN_004398f2();
  param_1[0x1a4] = 0;
  *(undefined4 *)(param_1 + 0x1c4) = 0;
  *(undefined4 *)(param_1 + 0x1c8) = 0;
  *(undefined4 *)(param_1 + 0x1cc) = 0;
  *(undefined4 *)(param_1 + 0x1d0) = 0;
  param_1[0x1d4] = 0;
  FUN_004398f2();
  param_1[0x20c] = 0;
  *(undefined4 *)(param_1 + 0x22c) = 0;
  *(undefined4 *)(param_1 + 0x230) = 0;
  return param_1;
}



void __fastcall FUN_0041c332(undefined4 *param_1)

{
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



undefined4 __thiscall FUN_0041c33b(undefined4 param_1_00,byte param_1)

{
  FUN_00401829(1,0);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0041c35b(int param_1,int param_2)

{
  for (; param_1 != param_2; param_1 = param_1 + 0x1c) {
    FUN_0041c33b(0);
  }
  return;
}



void __thiscall
FUN_0041c376(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0041c35b(param_1,param_2,param_3,param_1_00);
  return;
}



void __thiscall FUN_0041c390(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_0041c376(param_1,param_2,param_1_00 + 8);
  return;
}



void __fastcall FUN_0041c3a7(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_0041c390(*(int *)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
  }
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  return;
}



void __fastcall FUN_0041c3d1(undefined4 *param_1)

{
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0041c3e3(int param_1)

{
  if (*(int *)(param_1 + 0x230) != 0) {
    FUN_0040127a();
  }
  FUN_00417f97();
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 500));
}



void FUN_0041c4da(void)

{
  char *in_EAX;
  
  if (in_EAX[8] != '\0') {
    in_EAX[8] = '\0';
  }
  if (*in_EAX != '\0') {
    *in_EAX = '\0';
  }
  return;
}



void FUN_0041c4eb(void)

{
  int unaff_ESI;
  undefined4 extraout_var;
  
  FUN_0041c276(unaff_ESI);
  FUN_00bb083b(extraout_var);
  *(undefined *)(unaff_ESI + 0x254) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0041c508(undefined4 param_1)

{
  void *pvVar1;
  
  pvVar1 = operator_new(600);
  if (pvVar1 != (void *)0x0) {
    FUN_0041c4eb();
  }
  FUN_0041c1e8(param_1);
  return param_1;
}



char * __fastcall FUN_0041c550(char *param_1)

{
  char *in_EAX;
  
  if (*param_1 == '\0') {
    if (*in_EAX != '\0') {
      FUN_00412a6f(in_EAX + 4);
    }
  }
  else if (*in_EAX == '\0') {
    FUN_00401829(1,0);
    *param_1 = '\0';
  }
  else {
    FID_conflict_assign(in_EAX + 4,0,0xffffffff);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0041c58d(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x90);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0041c601(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0041ca50(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0041c601(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x41c60d;
  FUN_00b9a937(param_1);
  *param_1 = WDC9698AF::WED2156ED::vftable;
  param_1[0x22] = 0;
  param_1[0x23] = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  puVar1 = (undefined4 *)FUN_0041d245(local_20);
  local_8 = CONCAT31(local_8._1_3_,2);
  local_18 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 __thiscall FUN_0041c974(undefined4 param_1_00,byte param_1)

{
  FUN_0041c990();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0041c990(undefined4 *param_1)

{
  int iVar1;
  uint3 uVar2;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = WDC9698AF::WED2156ED::vftable;
  local_8._1_3_ = 0;
  uVar2 = local_8._1_3_;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  if (local_20 != param_1 + 0x22) {
    param_1[0x22] = 0;
  }
  iVar1 = param_1[0x23];
  param_1[0x23] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
    uVar2 = local_8._1_3_;
  }
  local_8._1_3_ = uVar2;
  local_8._0_1_ = 1;
  if (param_1[0x23] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00b9a8dd();
  return;
}



void Catch_All_0041c9ee(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_0041c9f8(undefined4 param_1,undefined4 param_2)

{
  FUN_0041d449(param_1,param_2);
  return param_1;
}



void __fastcall FUN_0041ca18(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x0041ca23. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(*(int *)(param_1 + 0x88) + 4) + 4))();
  return;
}



void FUN_0041ca26(void)

{
  FUN_0041d4aa();
  return;
}



void __fastcall FUN_0041ca34(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x0041ca3f. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(*(int *)(param_1 + 0x88) + 4) + 0x10))();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0041ca50(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WDC9698AF::WED2156ED>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0041ca96(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0041caad(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0041cae8(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WDC9698AF::WED2156ED>,class_boost::_bi::list1<class_boost::_bi::value<class_WDC9698AF::WED2156ED*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0041cae8(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WDC9698AF::WED2156ED>,class_boost::_bi::list1<class_boost::_bi::value<class_WDC9698AF::WED2156ED*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WDC9698AF::WED2156ED>,class_boost::_bi::list1<class_boost::_bi::value<class_WDC9698AF::WED2156ED*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0041cb31(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x94);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0041cba5(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0041cfb1(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0041cba5(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined local_28 [12];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x41cbb1;
  FUN_00b9a937(param_1);
  *param_1 = W4CC606CD::W3587FE0E::vftable;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  puVar1 = (undefined4 *)FUN_0041e6f6(local_28);
  local_8 = CONCAT31(local_8._1_3_,2);
  local_1c = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 __thiscall FUN_0041ced9(undefined4 param_1_00,byte param_1)

{
  FUN_0041cef5();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0041cef5(undefined4 *param_1)

{
  int iVar1;
  uint3 uVar2;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = W4CC606CD::W3587FE0E::vftable;
  local_8._1_3_ = 0;
  uVar2 = local_8._1_3_;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  if (local_20 != param_1 + 0x23) {
    param_1[0x23] = 0;
  }
  iVar1 = param_1[0x24];
  param_1[0x24] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
    uVar2 = local_8._1_3_;
  }
  local_8._1_3_ = uVar2;
  local_8._0_1_ = 1;
  if (param_1[0x24] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00b9a8dd();
  return;
}



void Catch_All_0041cf53(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_0041cf5d(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x0041cf68. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(*(int *)(param_1 + 0x8c) + 4) + 4))();
  return;
}



char __fastcall FUN_0041cf6b(int param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  cVar1 = (**(code **)(*(int *)(*(int *)(param_1 + 0x8c) + 4) + 0xc))();
  if (cVar1 == '\0') {
    uVar2 = 0x696c0321;
  }
  else {
    cVar1 = FUN_0041e854();
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0x6c19c5b3;
  }
  FUN_00b940e0(uVar2);
  return '\0';
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0041cfb1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W4CC606CD::W3587FE0E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0041cff7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0041d00e(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0041d047(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W4CC606CD::W3587FE0E>,class_boost::_bi::list1<class_boost::_bi::value<class_W4CC606CD::W3587FE0E*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_0041d047(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W4CC606CD::W3587FE0E>,class_boost::_bi::list1<class_boost::_bi::value<class_W4CC606CD::W3587FE0E*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W4CC606CD::W3587FE0E>,class_boost::_bi::list1<class_boost::_bi::value<class_W4CC606CD::W3587FE0E*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



bool FUN_0041d094(int param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  bool bVar4;
  undefined local_28 [16];
  int local_18 [5];
  
  piVar1 = (int *)FUN_0041a1fb(local_28);
  local_18[0] = *piVar1;
  local_18[1] = piVar1[1];
  local_18[2] = piVar1[2];
  local_18[3] = piVar1[3];
  iVar2 = 4;
  bVar4 = true;
  piVar1 = (int *)(param_1 + 0x164);
  piVar3 = local_18;
  do {
    if (iVar2 == 0) {
      return bVar4;
    }
    iVar2 = iVar2 + -1;
    bVar4 = *piVar1 == *piVar3;
    piVar1 = piVar1 + 1;
    piVar3 = piVar3 + 1;
  } while (bVar4);
  return bVar4;
}



uint FUN_0041d0cb(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int local_24;
  undefined4 local_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5c3aa;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_24 = 0;
  local_c = 0;
  cVar1 = FUN_0041d18d(param_2,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x9533c9a);
    uVar2 = FUN_005d1159();
    local_c = 0xffffffff;
    if (local_24 != 0) {
      uVar2 = FUN_0040127a();
    }
    ExceptionList = local_14;
    return uVar2 & 0xffffff00;
  }
  local_20 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_24);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0041d18d(void)

{
  undefined4 *puVar1;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x41d199;
  puVar1 = (undefined4 *)FUN_0041f2eb(local_20);
  local_8 = 0;
  local_18 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0041d245(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0xbc);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0041d2b9(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0041ddc0(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0041d2b9(undefined4 *param_1)

{
  byte bVar1;
  undefined4 *puVar2;
  int *piVar3;
  undefined local_28 [4];
  int local_24;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x41d2c5;
  *param_1 = WDC9698AF::WB889EAF7::vftable;
  FUN_00ba0e6c(param_1 + 1);
  param_1[0x29] = WB009B997::W0CEED8AA::vftable;
  param_1[0x2a] = 0;
  param_1[0x2b] = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0;
  param_1[0x2e] = 0;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  (**(code **)(param_1[1] + 0x18))(local_28,0);
  local_8._0_1_ = 3;
  puVar2 = (undefined4 *)FUN_00ba54e8();
  piVar3 = (int *)FUN_00419e85(*puVar2);
  local_15 = (~-(uint)(*piVar3 != 1) & 0x7a491c) != 0;
  local_8 = CONCAT31(local_8._1_3_,2);
  if (local_24 != 0) {
    FUN_0040127a();
  }
  if (local_15 == '\0') {
    param_1[0x27] = 0;
    param_1[0x28] = 0;
    FUN_0041dcaf(0);
    param_1[0x2c] = 0;
    *(undefined *)((int)param_1 + 0xa1) = 1;
    bVar1 = 5;
    do {
      bVar1 = bVar1 - 1;
      if (*(int *)(&UNK_00fac140 + (uint)bVar1 * 4) == 0) break;
    } while (bVar1 != 0);
    FUN_0041d92b(0);
    *(undefined *)((int)param_1 + 0x9d) = 0;
    *(undefined *)((int)param_1 + 0x9f) = 0;
    *(undefined *)((int)param_1 + 0x9e) = 0;
  }
  else {
    FUN_00b940e0(0xd381025b);
  }
  return param_1;
}



undefined4 __thiscall FUN_0041d3ba(undefined4 param_1_00,byte param_1)

{
  FUN_0041d3d6();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0041d3d6(undefined4 *param_1)

{
  int iVar1;
  uint3 uVar2;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = WDC9698AF::WB889EAF7::vftable;
  local_8._1_3_ = 0;
  uVar2 = local_8._1_3_;
  local_8._0_1_ = 3;
  local_8._1_3_ = 0;
  if (local_20 != param_1 + 0x2d) {
    param_1[0x2d] = 0;
  }
  iVar1 = param_1[0x2e];
  param_1[0x2e] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
    uVar2 = local_8._1_3_;
  }
  local_8._1_3_ = uVar2;
  local_8._0_1_ = 2;
  if (param_1[0x2e] != 0) {
    FUN_0040127a();
  }
  param_1[0x29] = WB009B997::WF742B1F9::vftable;
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00ba0de9();
  return;
}



void Catch_All_0041d43f(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0041d449(int param_1_00,undefined4 *param_1,uint param_2)

{
  undefined4 *puVar1;
  undefined local_1c [8];
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x41d455;
  local_14 = 0;
  if (param_2 < 2) {
    (**(code **)(*(int *)(param_1_00 + 4) + 0x18))(param_1,0);
    return param_1;
  }
  puVar1 = (undefined4 *)FUN_00b92262(local_1c);
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



char FUN_0041d4aa(void)

{
  char cVar1;
  int unaff_ESI;
  int *piStack_20;
  int iStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = (**(code **)(*(int *)(unaff_ESI + 4) + 0xc))(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xa424d505);
    cVar1 = '\0';
  }
  else {
    cVar1 = FUN_0041d788(unaff_ESI + 0x9c);
    if (cVar1 == '\0') {
      FUN_00b940e0(0xace71b24);
      cVar1 = '\0';
    }
    else {
      FUN_0079a0e3(&piStack_20);
      uStack_c = 0;
      if ((piStack_20 == (int *)0x0) || (cVar1 = (**(code **)(*piStack_20 + 0x18))(), cVar1 == '\0')
         ) {
        cVar1 = '\0';
        FUN_00b940e0(0xf9a9138d);
      }
      else {
        cVar1 = '\x01';
      }
      uStack_c = 0xffffffff;
      if (iStack_1c != 0) {
        FUN_0040127a();
      }
      if (cVar1 != '\0') {
        ExceptionList = local_14;
        return cVar1;
      }
    }
    (**(code **)(*(int *)(unaff_ESI + 4) + 0x10))();
  }
  ExceptionList = local_14;
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool __fastcall FUN_0041d58c(int param_1)

{
  char cVar1;
  int *piVar2;
  bool bVar3;
  undefined4 uVar4;
  undefined local_1c [4];
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x41d598;
  *(undefined4 *)(param_1 + 0xb0) = 0;
  *(undefined *)(param_1 + 0xa1) = 1;
  cVar1 = FUN_0041d9a3();
  if (cVar1 == '\0') {
    uVar4 = 0x58edb8be;
    bVar3 = false;
  }
  else {
    cVar1 = FUN_0041d6dd(1);
    if (cVar1 == '\0') {
      uVar4 = 0x3d3967eb;
      bVar3 = false;
    }
    else {
      cVar1 = FUN_0041d716(1);
      if (cVar1 == '\0') {
        uVar4 = 0x34999f3a;
        bVar3 = false;
      }
      else {
        cVar1 = FUN_0041d74f(1);
        if (cVar1 == '\0') {
          uVar4 = 0x2badebad;
          bVar3 = false;
        }
        else {
          FUN_0041d449(local_1c,0);
          local_8 = 0;
          piVar2 = (int *)FUN_00ba5381(1);
          bVar3 = (~-(uint)(*piVar2 != 1) & 0x7a491c) != 0;
          local_8 = 0xffffffff;
          if (local_18 != 0) {
            FUN_0040127a();
          }
          if (bVar3) {
            return bVar3;
          }
          uVar4 = 0xa4c89b8d;
        }
      }
    }
  }
  FUN_00b940e0(uVar4);
  return bVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_0041d672(void)

{
  int *piVar1;
  undefined local_20 [4];
  int local_1c;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x41d67e;
  FUN_0041d449(local_20,0);
  local_8 = 0;
  piVar1 = (int *)FUN_00ba5381(0);
  local_11 = (~-(uint)(*piVar1 != 1) & 0x7a491c) != 0;
  local_8 = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  if (local_11 == '\0') {
    FUN_00b940e0(0xd7f18696);
  }
  return local_11;
}



char __thiscall FUN_0041d6dd(int param_1_00,int param_1)

{
  char cVar1;
  
  *(bool *)(param_1_00 + 0x9e) = param_1 == 0;
  cVar1 = FUN_0041d788(param_1_00 + 0x9c);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x98a74f9c);
  }
  return cVar1;
}



char __thiscall FUN_0041d716(int param_1_00,int param_1)

{
  char cVar1;
  
  *(bool *)(param_1_00 + 0x9f) = param_1 == 0;
  cVar1 = FUN_0041d788(param_1_00 + 0x9c);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x1205d058);
  }
  return cVar1;
}



char __thiscall FUN_0041d74f(int param_1_00,int param_1)

{
  char cVar1;
  
  *(bool *)(param_1_00 + 0x9d) = param_1 == 0;
  cVar1 = FUN_0041d788(param_1_00 + 0x9c);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xbbf2923a);
  }
  return cVar1;
}



void FUN_0041d788(int param_1)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  char *pcVar5;
  byte bVar6;
  undefined4 *puVar7;
  char cVar8;
  undefined4 uVar9;
  undefined auStack_4c [7];
  byte local_45;
  int *local_44;
  int local_40;
  byte local_3c;
  undefined4 local_3b;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c284dc;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_4c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_14;
  FUN_0079a0e3(&local_44);
  local_c = 0;
  cVar8 = local_44 != (int *)0x0;
  if ((bool)cVar8) {
    cVar8 = (**(code **)(*local_44 + 0x14))(uVar2);
    if (cVar8 == '\0') {
      uVar9 = 0x6be9276d;
      cVar8 = '\0';
      goto LAB_0041d83c;
    }
    cVar8 = (**(code **)(*local_44 + 0x1c))(&local_45);
    if (cVar8 == '\0') {
      uVar9 = 0x632d31b4;
      cVar8 = '\0';
      goto LAB_0041d83c;
    }
    cVar8 = (**(code **)(*local_44 + 0x34))(0xbd);
    if (cVar8 == '\0') {
      uVar9 = 0x3a4a4c27;
      goto LAB_0041d83c;
    }
  }
  else {
    uVar9 = 0x3ea41c44;
LAB_0041d83c:
    FUN_00b940e0(uVar9);
  }
  bVar6 = local_45 & 0x5b;
  local_45 = bVar6;
  if (cVar8 != '\0') {
    puVar7 = &local_3b;
    for (iVar4 = 7; iVar4 != 0; iVar4 = iVar4 + -1) {
      *puVar7 = 0;
      puVar7 = puVar7 + 1;
    }
    *(undefined2 *)puVar7 = 0;
    *(undefined *)((int)puVar7 + 2) = 0;
    pcVar5 = (char *)(param_1 + 7);
    iVar4 = 8;
    iVar1 = 2;
    do {
      iVar3 = iVar1;
      if (*pcVar5 == '\0') {
        local_45 = local_45 & 0xfb;
      }
      else {
        local_45 = local_45 | 4;
      }
      (&local_3c)[iVar3] = local_45;
      *(byte *)((int)&local_3b + iVar3) = local_45 | 0x20;
      *(byte *)((int)&local_3b + iVar3 + 1) = local_45;
      pcVar5 = pcVar5 + -1;
      iVar4 = iVar4 + -1;
      iVar1 = iVar3 + 3;
    } while (iVar4 != 0);
    *(byte *)((int)&local_3b + iVar3 + 2) = local_45 | 0x80;
    *(byte *)((int)&local_3b + iVar3 + 3) = local_45;
    local_3c = bVar6;
    local_3b._0_1_ = bVar6;
    cVar8 = (**(code **)(*local_44 + 0x24))(&local_3c,iVar3 + 5);
    if (cVar8 == '\0') {
      uVar9 = 0xef585284;
    }
    else {
      cVar8 = (**(code **)(*local_44 + 0x18))();
      if (cVar8 != '\0') goto LAB_0041d8f7;
      uVar9 = 0x18055470;
    }
    FUN_00b940e0(uVar9);
  }
LAB_0041d8f7:
  local_c = 0xffffffff;
  if (local_40 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



char __thiscall FUN_0041d92b(int param_1_00,char param_1)

{
  byte in_AL;
  char param_11;
  
  if (4 < in_AL) {
    in_AL = 5;
  }
  if (in_AL == 0) {
    *(undefined *)(param_1_00 + 0xa3) = 0;
    *(undefined *)(param_1_00 + 0xa2) = 0;
    *(undefined *)(param_1_00 + 0xa0) = 1;
  }
  else {
    *(byte *)(param_1_00 + 0xa3) = in_AL - 1 & 1;
    *(byte *)(param_1_00 + 0xa2) = (byte)(in_AL - 1) >> 1 & 1;
    *(undefined *)(param_1_00 + 0xa0) = 0;
  }
  if (param_1 == '\0') {
    param_11 = '\x01';
  }
  else {
    param_11 = FUN_0041d788(param_1_00 + 0x9c);
    if (param_11 == '\0') {
      FUN_00b940e0(0x9f26b4c8);
    }
  }
  return param_11;
}



char __fastcall FUN_0041d9a3(int param_1)

{
  char cVar1;
  
  cVar1 = FUN_0041d788(param_1 + 0x9c);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x2962c7d9);
  }
  return cVar1;
}



void FUN_0041d9ce(int *param_1,uint param_2)

{
  byte bVar1;
  uint uVar2;
  int unaff_ESI;
  char cVar3;
  undefined4 uVar4;
  undefined uStack_58;
  byte local_57;
  byte bStack_56;
  byte bStack_55;
  uint local_54;
  int *local_50;
  int local_4c;
  uint local_48;
  uint local_44;
  int *local_40;
  int iStack_3c;
  int iStack_38;
  int iStack_34;
  int iStack_30;
  int iStack_2c;
  int iStack_28;
  int iStack_24;
  undefined uStack_20;
  undefined2 uStack_1f;
  undefined uStack_1d;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c284ac;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&uStack_58;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_14;
  local_40 = param_1;
  *param_1 = 0;
  if (param_2 == 0) goto LAB_0041dc75;
  local_54 = 0;
  local_44 = 0;
  FUN_0079a0e3(&local_50);
  local_c = 0;
  cVar3 = local_50 != (int *)0x0;
  if ((bool)cVar3) {
    cVar3 = (**(code **)(*local_50 + 0x14))(uVar2);
    if (cVar3 == '\0') {
      uVar4 = 0xa5151496;
      cVar3 = '\0';
      goto LAB_0041daa1;
    }
    cVar3 = (**(code **)(*local_50 + 0x1c))(&local_57);
    if (cVar3 == '\0') {
      uVar4 = 0xe147dbb7;
      cVar3 = '\0';
      goto LAB_0041daa1;
    }
    cVar3 = (**(code **)(*local_50 + 0x34))(0xbd);
    if (cVar3 == '\0') {
      uVar4 = 0xb7cee4db;
      goto LAB_0041daa1;
    }
  }
  else {
    uVar4 = 0xec516b2b;
LAB_0041daa1:
    FUN_00b940e0(uVar4);
  }
  local_57 = local_57 & 0xb3;
  local_48 = 0;
  if (cVar3 != '\0') {
    do {
      if (param_2 <= local_48) break;
      bVar1 = (**(code **)(*(int *)(unaff_ESI + 0xa4) + 4))();
      bStack_55 = bVar1 & 1;
      if (cVar3 != '\0') {
        iStack_34 = (uint)(local_57 & 0xf7) * 0x1010101;
        if ((bVar1 & 1) == 0) {
          local_57 = local_57 & 0xf3;
        }
        else {
          local_57 = local_57 & 0xf7 | 4;
        }
        iStack_2c = (uint)local_57 * 0x1010101;
        local_57 = local_57 | 8;
        iStack_24 = (uint)local_57 * 0x1010101;
        uStack_20 = (undefined)iStack_24;
        uStack_1f = (undefined2)((uint)iStack_24 >> 8);
        uStack_1d = (undefined)((uint)iStack_24 >> 0x18);
        iStack_30 = iStack_34;
        iStack_28 = iStack_2c;
        cVar3 = (**(code **)(*local_50 + 0x24))(&iStack_34,0x18);
        if (cVar3 == '\0') {
          uVar4 = 0x76294e89;
          cVar3 = '\0';
LAB_0041dc0b:
          FUN_00b940e0(uVar4);
        }
        else {
          do {
            cVar3 = (**(code **)(*local_50 + 0x1c))(&bStack_56);
            if (cVar3 == '\0') {
              uVar4 = 0x4d7852af;
              goto LAB_0041dc0b;
            }
          } while ((bStack_56 & 8) == 0);
          if (cVar3 != '\0') {
            local_57 = local_57 & 0xf7;
            iStack_3c = (uint)local_57 * 0x1010101;
            iStack_38 = iStack_3c;
            cVar3 = (**(code **)(*local_50 + 0x24))(&iStack_3c,8);
            if (cVar3 == '\0') {
              uVar4 = 0x919ba1ee;
              cVar3 = '\0';
              goto LAB_0041dc0b;
            }
            do {
              cVar3 = (**(code **)(*local_50 + 0x1c))(&bStack_56);
              if (cVar3 == '\0') {
                uVar4 = 0x40e35c51;
                goto LAB_0041dc0b;
              }
            } while ((bStack_56 & 8) != 0);
            if (cVar3 != '\0') {
              if (bStack_55 == (bStack_56 >> 6 & 1)) {
                local_54 = local_54 + 1;
              }
              else {
                local_44 = local_44 + 1;
              }
            }
          }
        }
      }
      local_48 = local_48 + 1;
    } while (cVar3 != '\0');
    if (cVar3 != '\0') {
      cVar3 = (**(code **)(*local_50 + 0x18))();
      if (cVar3 == '\0') {
        FUN_00b940e0(0x57f9f5c0);
      }
      else {
        uVar2 = local_44;
        if (local_44 < local_54) {
          uVar2 = local_54;
        }
        *local_40 = uVar2 * 2 - param_2;
      }
    }
  }
  local_c = 0xffffffff;
  if (local_4c != 0) {
    FUN_0040127a();
  }
LAB_0041dc75:
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void FUN_0041dc94(uint param_1)

{
  byte bVar1;
  
  bVar1 = 5;
  do {
    bVar1 = bVar1 - 1;
    if (*(uint *)(&UNK_00fac140 + (uint)bVar1 * 4) <= param_1) {
      return;
    }
  } while (bVar1 != 0);
  return;
}



char __thiscall FUN_0041dcaf(int param_1_00,char param_1)

{
  char in_AL;
  char cVar1;
  undefined *puVar2;
  
  if (in_AL == '\0') {
    *(undefined *)(param_1_00 + 0x9c) = 0;
  }
  else {
    if (in_AL != '\x01') {
      puVar2 = (undefined *)0xf9049f5a;
      goto LAB_0041dcfd;
    }
    *(undefined *)(param_1_00 + 0x9c) = 1;
  }
  if (param_1 == '\0') {
    return '\x01';
  }
  cVar1 = FUN_0041d788(param_1_00 + 0x9c);
  if (cVar1 != '\0') {
    return cVar1;
  }
  puVar2 = &DAT_027819a9;
LAB_0041dcfd:
  FUN_00b940e0(puVar2);
  return '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0041dd0a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x41dd16;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W7DEA1187::W51C98F4E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W7DEA1187::W51C98F4E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0041ddc0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WDC9698AF::WB889EAF7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0041de06(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041df6c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0041df89(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W5FC6A77E::W5212F7B0::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_0041e0f9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041e21b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041e394(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041e4cf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



bool __thiscall FUN_0041e636(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  bool bVar2;
  undefined4 uVar3;
  int local_8;
  
  bVar2 = *(char *)(*(int *)(param_1_00 + 4) + 0xa1) != '\0';
  if (bVar2) {
    local_8 = 0;
    (**(code **)(**(int **)(*(int *)(param_1_00 + 4) + 0xb4) + 0x10))(&local_8,0);
    cVar1 = FUN_0041d9ce(param_1,param_2);
    if (cVar1 != '\0') {
      return (bool)cVar1;
    }
    uVar3 = 0x3832bf53;
    bVar2 = false;
  }
  else {
    uVar3 = 0xb2e952f7;
    local_8 = param_1_00;
  }
  FUN_00b940e0(uVar3);
  return bVar2;
}



void Catch_All_0041e6df(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0041e6f6(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0xa0);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0041e76a(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0041ec14(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0041e76a(undefined4 *param_1)

{
  undefined4 *puVar1;
  int *piVar2;
  undefined local_28 [4];
  int local_24;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x41e776;
  *param_1 = W4CC606CD::W67324509::vftable;
  FUN_00ba0e6c(param_1 + 1);
  local_8 = 0;
  *(undefined *)(param_1 + 0x27) = 0;
  *(undefined *)((int)param_1 + 0x9d) = 0;
  *(undefined *)((int)param_1 + 0x9e) = 0;
  *(undefined *)((int)param_1 + 0x9f) = 0;
  (**(code **)(param_1[1] + 0x18))(local_28,0);
  local_8._0_1_ = 1;
  puVar1 = (undefined4 *)FUN_00ba54e8();
  piVar2 = (int *)FUN_00419e85(*puVar1);
  local_15 = (~-(uint)(*piVar2 != 1) & 0x7a491c) != 0;
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_24 != 0) {
    FUN_0040127a();
  }
  if (local_15 != '\0') {
    FUN_00b940e0(0xffbc5bc);
  }
  return param_1;
}



undefined4 __thiscall FUN_0041e80a(undefined4 param_1_00,byte param_1)

{
  FUN_0041e826();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0041e826(undefined4 *param_1)

{
  *param_1 = W4CC606CD::W67324509::vftable;
  FUN_00ba0de9();
  return;
}



void Catch_All_0041e84a(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_0041e854(void)

{
  char cVar1;
  undefined4 *puVar2;
  int *piVar3;
  undefined4 uVar4;
  undefined local_24 [4];
  int local_20;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x41e860;
  cVar1 = FUN_0041eb16(1);
  if (cVar1 == '\0') {
    uVar4 = 0xfcdbbdb2;
  }
  else {
    cVar1 = FUN_0041ebac(1);
    if (cVar1 == '\0') {
      uVar4 = 0x2357172a;
    }
    else {
      cVar1 = FUN_0041eb61(1);
      if (cVar1 != '\0') {
        FUN_0041d449(local_24,0);
        local_8 = 0;
        puVar2 = (undefined4 *)FUN_00ba5381(1);
        piVar3 = (int *)FUN_00419e85(*puVar2);
        local_11 = (~-(uint)(*piVar3 != 1) & 0x7a491c) != 0;
        local_8 = 0xffffffff;
        if (local_20 != 0) {
          FUN_0040127a();
        }
        if (local_11 == '\0') {
          return cVar1;
        }
        FUN_00b940e0(0xec3b603f);
        return '\0';
      }
      uVar4 = 0x60e5abe9;
    }
  }
  FUN_00b940e0(uVar4);
  return '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_0041e925(void)

{
  undefined4 *puVar1;
  int *piVar2;
  undefined local_24 [4];
  int local_20;
  char local_12;
  undefined local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x41e931;
  local_11 = 1;
  FUN_0041d449(local_24,0);
  local_8 = 0;
  puVar1 = (undefined4 *)FUN_00ba5381(0);
  piVar2 = (int *)FUN_00419e85(*puVar1);
  local_12 = (~-(uint)(*piVar2 != 1) & 0x7a491c) != 0;
  local_8 = 0xffffffff;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  if (local_12 != '\0') {
    FUN_00b940e0(0x90ebd283);
    local_11 = 0;
  }
  return local_11;
}



char FUN_0041e9a0(char param_1,char param_2,char param_3,char param_4)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  char local_26;
  byte local_25;
  byte local_24;
  byte local_23;
  int *local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_14;
  FUN_0079a0e3(&local_20);
  local_c = 0;
  local_26 = local_20 != (int *)0x0;
  if ((bool)local_26) {
    cVar1 = (**(code **)(*local_20 + 0x14))(uVar2);
    if (cVar1 == '\0') {
      uVar3 = 0x2bc9b1db;
      local_26 = '\0';
      goto LAB_0041ea7f;
    }
    cVar1 = (**(code **)(*local_20 + 0x1c))(&local_25);
    if (cVar1 == '\0') {
      uVar3 = 0xe2364d39;
      local_26 = '\0';
      goto LAB_0041ea7f;
    }
    local_26 = (**(code **)(*local_20 + 0x34))(0xff);
    if (local_26 == '\0') {
      uVar3 = 0x45fe6077;
      goto LAB_0041ea7f;
    }
  }
  else {
    uVar3 = 0x178b3e20;
LAB_0041ea7f:
    FUN_00b940e0(uVar3);
  }
  local_25 = local_25 & 0x95 |
             ((((param_4 == '\0') * '\x02' | param_3 == '\0') << 2 | param_2 != '\0') << 2 |
             param_1 != '\0') * '\x02';
  if (local_26 != '\0') {
    local_24 = local_25 & 0x7f;
    local_23 = local_25 | 0x80;
    cVar1 = (**(code **)(*local_20 + 0x24))(&local_24,2);
    if (cVar1 == '\0') {
      uVar3 = 0x2c7d32a6;
      local_26 = '\0';
    }
    else {
      local_26 = (**(code **)(*local_20 + 0x18))();
      if (local_26 != '\0') goto LAB_0041eaec;
      uVar3 = 0xcdb02e43;
    }
    FUN_00b940e0(uVar3);
  }
LAB_0041eaec:
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return local_26;
}



char __thiscall FUN_0041eb16(int param_1_00,int param_1)

{
  char cVar1;
  
  *(bool *)(param_1_00 + 0x9f) = param_1 == 0;
  cVar1 = FUN_0041e9a0(*(undefined *)(param_1_00 + 0x9c),*(undefined *)(param_1_00 + 0x9d),
                       *(undefined *)(param_1_00 + 0x9e),param_1 == 0);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x88f8ff6e);
  }
  return cVar1;
}



char __thiscall FUN_0041eb61(int param_1_00,int param_1)

{
  char cVar1;
  
  *(bool *)(param_1_00 + 0x9c) = param_1 == 0;
  cVar1 = FUN_0041e9a0(param_1 == 0,*(undefined *)(param_1_00 + 0x9d),
                       *(undefined *)(param_1_00 + 0x9e),*(undefined *)(param_1_00 + 0x9f));
  if (cVar1 == '\0') {
    FUN_00b940e0(0x7596025b);
  }
  return cVar1;
}



char __thiscall FUN_0041ebac(int param_1_00,int param_1)

{
  char cVar1;
  
  *(bool *)(param_1_00 + 0x9d) = param_1 == 0;
  cVar1 = FUN_0041e9a0(*(undefined *)(param_1_00 + 0x9c),param_1 == 0,
                       *(undefined *)(param_1_00 + 0x9e),*(undefined *)(param_1_00 + 0x9f));
  if (cVar1 == '\0') {
    FUN_00b940e0(0xcc5cc6a);
  }
  return cVar1;
}



undefined4 __thiscall FUN_0041ebf7(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  (**(code **)(*(int *)(param_1_00 + 4) + 0x2c))(param_1,param_2,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0041ec14(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W4CC606CD::W67324509>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0041ec5a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041edc8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041ef48(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041f07d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041f199(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0041f2d4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0041f2eb(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x94);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0041f35f(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0041f829(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0041f35f(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined local_28 [12];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x41f36b;
  FUN_00b9a937(param_1);
  *param_1 = WF71CF803::WBF1951BF::vftable;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  puVar1 = (undefined4 *)FUN_0041f90c(local_28);
  local_8 = CONCAT31(local_8._1_3_,2);
  local_1c = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 __thiscall FUN_0041f725(undefined4 param_1_00,byte param_1)

{
  FUN_0041f741();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0041f741(undefined4 *param_1)

{
  int iVar1;
  uint3 uVar2;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = WF71CF803::WBF1951BF::vftable;
  local_8._1_3_ = 0;
  uVar2 = local_8._1_3_;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  if (local_20 != param_1 + 0x23) {
    param_1[0x23] = 0;
  }
  iVar1 = param_1[0x24];
  param_1[0x24] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
    uVar2 = local_8._1_3_;
  }
  local_8._1_3_ = uVar2;
  local_8._0_1_ = 1;
  if (param_1[0x24] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00b9a8dd();
  return;
}



void Catch_All_0041f79f(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0041f7a9(int param_1_00,undefined4 param_1)

{
  FUN_0041fa4b(*(undefined4 *)(param_1_00 + 0x8c),param_1);
  return param_1;
}



undefined4 __fastcall FUN_0041f7c9(int param_1)

{
  int iVar1;
  char cVar2;
  
  iVar1 = *(int *)(param_1 + 0x8c);
  cVar2 = (**(code **)(*(int *)(iVar1 + 4) + 4))();
  if (cVar2 != '\0') {
    cVar2 = (**(code **)(*(int *)(iVar1 + 0x9c) + 4))();
    if (cVar2 != '\0') {
      return 1;
    }
  }
  return 0;
}



void __fastcall FUN_0041f7f4(int param_1)

{
  FUN_0041fabe(*(undefined4 *)(param_1 + 0x8c));
  return;
}



void FUN_0041f800(void)

{
  FUN_0041fc33();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0041f829(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF71CF803::WBF1951BF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0041f86f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0041f886(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0041f8bf(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WF71CF803::WBF1951BF>,class_boost::_bi::list1<class_boost::_bi::value<class_WF71CF803::WBF1951BF*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_0041f8bf(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WF71CF803::WBF1951BF>,class_boost::_bi::list1<class_boost::_bi::value<class_WF71CF803::WBF1951BF*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WF71CF803::WBF1951BF>,class_boost::_bi::list1<class_boost::_bi::value<class_WF71CF803::WBF1951BF*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0041f90c(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x138);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0041f980(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0041ffba(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0041f980(undefined4 *param_1)

{
  *param_1 = WF71CF803::W85944F7A::vftable;
  FUN_00ba0e6c(param_1 + 1);
  FUN_00ba0e6c(param_1 + 0x27);
  *(undefined *)(param_1 + 0x4d) = 0;
  *(undefined *)((int)param_1 + 0x135) = 0;
  *(undefined *)((int)param_1 + 0x136) = 1;
  *(undefined *)((int)param_1 + 0x137) = 0;
  return param_1;
}



undefined4 __thiscall FUN_0041f9d4(undefined4 param_1_00,byte param_1)

{
  FUN_0041f9f0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0041f9f0(undefined4 *param_1)

{
  *param_1 = WF71CF803::W85944F7A::vftable;
  if (*(char *)(param_1 + 0x4d) != '\0') {
    FUN_0041fc33();
    *(char *)(param_1 + 0x4d) = '\0';
  }
  FUN_00ba0de9();
  FUN_00ba0de9();
  return;
}



void Catch_All_0041fa41(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0041fa4b(int param_1_00,int param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  undefined local_1c [20];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x41fa57;
  if (param_1_00 == 0) {
    (**(code **)(*(int *)(param_1 + 4) + 0x18))(param_2,0);
  }
  else {
    if (param_1_00 != 1) {
      puVar1 = (undefined4 *)FUN_00b92262(local_1c);
      *param_2 = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
    (**(code **)(*(int *)(param_1 + 0x9c) + 0x18))(param_2,0);
  }
  return param_2;
}



void FUN_0041fabe(int param_1)

{
  bool bVar1;
  bool bVar2;
  char cVar3;
  undefined uStack_29;
  int *piStack_28;
  int iStack_24;
  int *piStack_20;
  int iStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c28489;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar3 = (**(code **)(*(int *)(param_1 + 4) + 0xc))(DAT_0323f878 ^ (uint)&stack0xffffffc8);
  if (cVar3 == '\0') {
    FUN_00b940e0(0x42bb0cb4);
    bVar1 = false;
  }
  else {
    FUN_0041fec3(&piStack_28);
    uStack_c = 0;
    if (piStack_28 == (int *)0x0) {
LAB_0041fb3a:
      bVar1 = false;
      FUN_00b940e0(0x87d3f95a);
    }
    else {
      cVar3 = (**(code **)(*piStack_28 + 0x18))();
      if (cVar3 == '\0') goto LAB_0041fb3a;
      bVar1 = true;
    }
    uStack_c = 0xffffffff;
    if (iStack_24 != 0) {
      FUN_0040127a();
    }
  }
  cVar3 = (**(code **)(*(int *)(param_1 + 0x9c) + 0xc))();
  if (cVar3 == '\0') {
    FUN_00b940e0(0x52676a2f);
    bVar2 = false;
    goto LAB_0041fbdb;
  }
  FUN_0041fec3(&piStack_20);
  uStack_c = 1;
  if (piStack_20 == (int *)0x0) {
LAB_0041fbb4:
    bVar2 = false;
    FUN_00b940e0(0xf10481a0);
  }
  else {
    cVar3 = (**(code **)(*piStack_20 + 0x18))();
    if (cVar3 == '\0') goto LAB_0041fbb4;
    bVar2 = true;
  }
  uStack_c = 0xffffffff;
  if (iStack_1c != 0) {
    FUN_0040127a();
  }
LAB_0041fbdb:
  if ((bVar1) && (bVar2)) {
    uStack_29 = 1;
  }
  else {
    uStack_29 = 0;
    if (bVar1) {
      (**(code **)(*(int *)(param_1 + 4) + 0x10))();
    }
    if (bVar2) {
      (**(code **)(*(int *)(param_1 + 0x9c) + 0x10))();
    }
  }
  *(undefined *)(param_1 + 0x134) = uStack_29;
  ExceptionList = local_14;
  return;
}



undefined4 FUN_0041fc33(void)

{
  char cVar1;
  char cVar2;
  int unaff_ESI;
  
  cVar1 = (**(code **)(*(int *)(unaff_ESI + 4) + 0x10))();
  cVar2 = (**(code **)(*(int *)(unaff_ESI + 0x9c) + 0x10))();
  *(undefined *)(unaff_ESI + 0x134) = 0;
  if ((cVar1 != '\0') && (cVar2 != '\0')) {
    return 1;
  }
  return 0;
}



bool __fastcall FUN_0041fc60(int param_1)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  bool bVar4;
  undefined4 uVar5;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_14;
  cVar1 = FUN_0041fda1(1);
  if (cVar1 == '\0') {
    uVar5 = 0xd47ca67c;
    bVar4 = false;
  }
  else {
    *(undefined *)(param_1 + 0x135) = 0;
    cVar1 = FUN_0041ff6d(uVar2);
    if (cVar1 == '\0') {
      uVar5 = 0xa0b79db0;
      bVar4 = false;
    }
    else {
      FUN_0041fa4b(param_1,local_20);
      local_c = 0;
      piVar3 = (int *)FUN_00ba5381(1);
      bVar4 = (~-(uint)(*piVar3 != 1) & 0x7a491c) != 0;
      local_c = 0xffffffff;
      if (local_1c != 0) {
        FUN_0040127a();
      }
      if (bVar4) {
        ExceptionList = local_14;
        return bVar4;
      }
      uVar5 = 0x67969c75;
    }
  }
  FUN_00b940e0(uVar5);
  ExceptionList = local_14;
  return bVar4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_0041fd35(undefined4 param_1)

{
  int *piVar1;
  bool bVar2;
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x41fd41;
  FUN_0041fa4b(param_1,local_18);
  local_8 = 0;
  piVar1 = (int *)FUN_00ba5381(0);
  bVar2 = (~-(uint)(*piVar1 != 1) & 0x7a491c) != 0;
  local_8 = 0xffffffff;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  if (!bVar2) {
    FUN_00b940e0(0x773f0ade);
  }
  return bVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_0041fda1(int param_1)

{
  char cVar1;
  undefined uVar2;
  int unaff_ESI;
  int *local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x41fdad;
  *(bool *)(unaff_ESI + 0x137) = param_1 == 0;
  FUN_0041fec3(&local_18);
  local_8 = 0;
  if (local_18 != (int *)0x0) {
    cVar1 = (**(code **)(*local_18 + 0x28))(*(undefined *)(unaff_ESI + 0x137));
    if (cVar1 != '\0') {
      uVar2 = 1;
      goto LAB_0041fdf8;
    }
  }
  uVar2 = 0;
  FUN_00b940e0(0x4d12d285);
LAB_0041fdf8:
  local_8 = 0xffffffff;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  return uVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_0041fe12(undefined4 param_1,char param_2)

{
  char cVar1;
  undefined uVar2;
  undefined4 uVar3;
  int *local_24;
  int local_20;
  int *local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x41fe1e;
  FUN_0041fec3(&local_24);
  local_8 = 0;
  FUN_0041fec3(&local_1c);
  local_8 = CONCAT31(local_8._1_3_,1);
  if (local_24 == (int *)0x0) {
LAB_0041fe54:
    uVar3 = 0xd9f0817;
  }
  else {
    cVar1 = (**(code **)(*local_24 + 0x2c))(param_1);
    if (cVar1 == '\0') goto LAB_0041fe54;
    if (local_1c != (int *)0x0) {
      if (((char)param_1 == '\0') || (param_2 == '\0')) {
        uVar3 = 0;
      }
      else {
        uVar3 = 1;
      }
      cVar1 = (**(code **)(*local_1c + 0x2c))(uVar3);
      if (cVar1 != '\0') {
        uVar2 = 1;
        goto LAB_0041fe99;
      }
    }
    uVar3 = 0x888c8ef;
  }
  uVar2 = 0;
  FUN_00b940e0(uVar3);
LAB_0041fe99:
  local_8 = local_8 & 0xffffff00;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  return uVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0041fec3(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  undefined local_1c [4];
  int local_18;
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x41fecf;
  local_14 = 0;
  uVar1 = (**(code **)(*param_1_00 + 0x2c))(local_1c,0xa20cec6d);
  local_8 = 1;
  FUN_0041dd0a(param_1,uVar1);
  local_8 = local_8 & 0xffffff00;
  local_14 = 1;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return param_1;
}



bool FUN_0041ff10(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int *piVar3;
  undefined local_c [8];
  
  puVar1 = (undefined4 *)FUN_00ba55d8(param_1);
  puVar2 = (undefined4 *)FUN_00ba55d8(param_1);
  piVar3 = (int *)FUN_00419eb3(local_c,*puVar2,*puVar1);
  return (~-(uint)(*piVar3 != 1) & 0x7a491c) != 0;
}



char FUN_0041ff6d(void)

{
  byte bVar1;
  char cVar2;
  int in_EAX;
  
  if (*(char *)(in_EAX + 0x135) == '\0') {
    bVar1 = 0;
  }
  else {
    bVar1 = *(byte *)(in_EAX + 0x136);
  }
  cVar2 = FUN_0041fe12('\x01' - (bVar1 == 0),'\x01' - (bVar1 < 2));
  if (cVar2 == '\0') {
    FUN_00b940e0(0xb66e0f32);
  }
  return cVar2;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0041ffba(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF71CF803::W85944F7A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00420000(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



uint FUN_004200ce(undefined4 param_1,int param_2)

{
  uint uVar1;
  int *piVar2;
  
  if ((param_2 == 0) || (param_2 - 1U == 0)) {
    piVar2 = (int *)FUN_00ba5779(param_1);
    uVar1 = CONCAT31((int3)(~-(uint)(*piVar2 != 1) >> 8),(~-(uint)(*piVar2 != 1) & 0x7a491c) != 0);
  }
  else {
    uVar1 = param_2 - 1U & 0xffffff00;
  }
  return uVar1;
}



void Catch_All_0042015a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00420171(void)

{
  return 0x6e58daf4;
}



uint FUN_0042022e(undefined4 param_1,int param_2)

{
  uint uVar1;
  int *piVar2;
  
  if ((param_2 == 0) || (param_2 - 1U == 0)) {
    piVar2 = (int *)FUN_00ba5705(param_1);
    uVar1 = CONCAT31((int3)(~-(uint)(*piVar2 != 1) >> 8),(~-(uint)(*piVar2 != 1) & 0x7a491c) != 0);
  }
  else {
    uVar1 = param_2 - 1U & 0xffffff00;
  }
  return uVar1;
}



void Catch_All_004202ba(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_004202d1(void)

{
  return 0x3218626f;
}



void Catch_All_0042042a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0042055c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00420573(void)

{
  return 0xeef6f47a;
}



bool FUN_00420630(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int *piVar3;
  undefined local_10 [12];
  
  puVar1 = (undefined4 *)FUN_00ba51ff(param_1);
  puVar2 = (undefined4 *)FUN_00ba51ff(param_1);
  piVar3 = (int *)FUN_00419eb3(local_10,*puVar2,*puVar1);
  return (~-(uint)(*piVar3 != 1) & 0x7a491c) != 0;
}



void Catch_All_004206ce(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



bool FUN_004207a2(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int *piVar3;
  undefined local_10 [12];
  
  puVar1 = (undefined4 *)FUN_00ba5271(param_1);
  puVar2 = (undefined4 *)FUN_00ba5271(param_1);
  piVar3 = (int *)FUN_00419eb3(local_10,*puVar2,*puVar1);
  return (~-(uint)(*piVar3 != 1) & 0x7a491c) != 0;
}



void Catch_All_00420840(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00420857(void)

{
  return 0x61df9739;
}



void __fastcall FUN_0042085d(undefined4 *param_1)

{
  *param_1 = W5FC6A77E::W5212F7B0::vftable;
  return;
}



void Catch_All_004209b7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00420afd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00420c43(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00420c5a(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x420c66;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fae690,4);
  local_8 = 0;
  local_18 = 0x38196234;
  local_14 = 0x6bb63408;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00420cab(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x420cb7;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fae69c,9);
  local_8 = 0;
  local_18 = 0x6766a5e6;
  local_14 = 0x19d21f7b;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_00420cfc(int *param_1)

{
  undefined4 uVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  undefined local_3c [4];
  undefined4 local_38;
  undefined4 local_30;
  char local_28;
  locale local_24 [4];
  undefined4 local_20;
  undefined4 local_1c [5];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x420d08;
  local_1c[0] = 0;
  FUN_00413f8e(param_1,0);
  local_8 = 0;
  if (local_28 != '\0') {
    local_20 = 0;
    uVar1 = FUN_00417498(local_24);
    local_8._0_1_ = 1;
    piVar2 = (int *)FUN_0040e683(uVar1);
    std::locale::~locale(local_24);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar3 = *(int *)(*param_1 + 4) + (int)param_1;
    iVar4 = *(int *)(iVar3 + 0x28);
    local_30 = CONCAT31(local_30._1_3_,1);
    local_38 = CONCAT31(local_38._1_3_,iVar4 == 0);
    uVar1 = local_38;
    (**(code **)(*piVar2 + 0x20))(local_3c,iVar4,local_38,0,local_30,iVar3,local_1c,&local_20);
    local_8 = 0;
    piVar2 = (int *)FUN_00420db4(iVar4,uVar1);
    return piVar2;
  }
  FUN_00417b8a(local_1c[0],0);
  local_8 = 0xffffffff;
  FUN_00413965();
  return param_1;
}



undefined * Catch_All_00420d8d(void)

{
  int unaff_EBP;
  
  FUN_00417b70(*(uint *)((int)*(int **)(unaff_EBP + 8) + *(int *)(**(int **)(unaff_EBP + 8) + 4) + 8
                        ) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_00420daf;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00420db4(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  
  if ((*(byte *)(unaff_EBP + -0x18) & 2) == 0) {
    **(undefined4 **)(unaff_EBP + 0xc) = *(undefined4 *)(unaff_EBP + -0x1c);
  }
  else {
    *(uint *)(unaff_EBP + -0x18) = *(uint *)(unaff_EBP + -0x18) | 2;
  }
  FUN_00417b8a(*(undefined4 *)(unaff_EBP + -0x18),unaff_EBX);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00413965();
  return;
}



void FUN_00420df9(int param_1,undefined4 param_2)

{
  int iVar1;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    iVar1 = param_1 + 4;
  }
  else {
    iVar1 = *(int *)(param_1 + 4);
  }
  FUN_00420f3f(iVar1,param_2,*(undefined4 *)(param_1 + 0x14));
  return;
}



void FUN_00420e1c(void)

{
  int in_EAX;
  uint uVar1;
  undefined4 *puVar2;
  undefined local_18 [8];
  undefined4 local_10;
  undefined4 local_c;
  
  uVar1 = *(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc) >> 2;
  if (uVar1 == 0) {
    FUN_0046e65a();
    FUN_0041b26b(1 - (*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc) >> 2),&stack0x00000004,
                 local_10,local_c);
  }
  else if (1 < uVar1) {
    FUN_0046e65a();
    FUN_0046e65a();
    puVar2 = (undefined4 *)FUN_0041b675(1);
    FUN_0041c078(in_EAX,local_18,*puVar2,puVar2[1],local_10,local_c);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00420e9e(void)

{
  int iVar1;
  uint uVar2;
  undefined4 *puVar3;
  int unaff_ESI;
  undefined local_28 [8];
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0;
  iVar1 = *(int *)(unaff_ESI + 0x10);
  uVar2 = (iVar1 - *(int *)(unaff_ESI + 0xc)) / 0x1c;
  if (uVar2 == 0) {
    FUN_004494bc(iVar1,unaff_ESI);
    FUN_0041b40a(local_18,local_14,
                 1 - (*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc)) / 0x1c,
                 &stack0x00000004);
  }
  else if (1 < uVar2) {
    FUN_004494bc(iVar1,unaff_ESI);
    FUN_004494bc(*(undefined4 *)(unaff_ESI + 0xc),unaff_ESI);
    puVar3 = (undefined4 *)FUN_0041b6b7(local_28,1);
    FUN_0041bb63(local_20,*puVar3,puVar3[1],local_18,local_14);
  }
  FUN_00401829(1,0);
  return;
}



uint __thiscall FUN_00420f3f(int param_1_00,undefined2 *param_1,uint param_2,uint param_3)

{
  undefined2 uVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  uint uVar7;
  int iVar8;
  
  if ((param_3 != 0) || (*(uint *)(param_1_00 + 0x14) < param_2)) {
    if ((param_2 < *(uint *)(param_1_00 + 0x14)) &&
       (uVar7 = *(uint *)(param_1_00 + 0x14) - param_2, param_3 <= uVar7)) {
      puVar5 = (undefined4 *)(param_1_00 + 4);
      uVar2 = *(uint *)(param_1_00 + 0x18);
      puVar6 = puVar5;
      if (7 < uVar2) {
        puVar6 = (undefined4 *)*puVar5;
      }
      iVar8 = (int)puVar6 + param_2 * 2;
      uVar1 = *param_1;
      param_2 = uVar7 + (1 - param_3);
      while (iVar4 = FUN_004210aa(iVar8,uVar1,param_2), iVar4 != 0) {
        iVar3 = FUN_0041299c(iVar4,param_1,param_3);
        if (iVar3 == 0) {
          if (7 < uVar2) {
            puVar5 = (undefined4 *)*puVar5;
          }
          return iVar4 - (int)puVar5 >> 1;
        }
        param_2 = param_2 + (-1 - (iVar4 - iVar8 >> 1));
        iVar8 = iVar4 + 2;
      }
    }
    param_2 = 0xffffffff;
  }
  return param_2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * FUN_00420fe9(void)

{
  LONG LVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  if ((_DAT_032ef6c4 & 1) == 0) {
    _DAT_032ef6c4 = _DAT_032ef6c4 | 1;
    DAT_032ef6c8 = (undefined4 *)0x0;
    _atexit((_func_4879 *)&LAB_00c73c68);
  }
  LVar1 = InterlockedExchangeAdd((LONG *)&DAT_032ef6cc,0);
  if (LVar1 == 0) {
    FUN_00b9acd0();
    LVar1 = InterlockedExchangeAdd((LONG *)&DAT_032ef6cc,0);
    if ((LVar1 == 0) && (DAT_032ef6c8 == (undefined4 *)0x0)) {
      pvVar2 = operator_new(0x3c);
      if (pvVar2 == (void *)0x0) {
        puVar3 = (undefined4 *)0x0;
      }
      else {
        puVar3 = (undefined4 *)FUN_00b93d20(pvVar2);
      }
      if ((puVar3 != DAT_032ef6c8) && (DAT_032ef6c8 != (undefined4 *)0x0)) {
        (**(code **)*DAT_032ef6c8)(1);
      }
      DAT_032ef6c8 = puVar3;
      InterlockedExchange((LONG *)&DAT_032ef6cc,1);
    }
    FUN_00b9ac60();
  }
  return DAT_032ef6c8;
}



short * FUN_004210aa(short *param_1,short param_2,int param_3)

{
  if (param_3 != 0) {
    do {
      if (*param_1 == param_2) {
        return param_1;
      }
      param_1 = param_1 + 1;
      param_3 = param_3 + -1;
    } while (param_3 != 0);
  }
  return (short *)0x0;
}



void FUN_004210ca(undefined *param_1)

{
  *param_1 = 0xdf;
  param_1[1] = 0xcc;
  param_1[2] = 0xff;
  param_1[3] = 0x9b;
  param_1[4] = 0x9d;
  param_1[5] = 0x6d;
  param_1[6] = 0xe9;
  param_1[7] = 0x96;
  param_1[8] = 0xdc;
  param_1[9] = 0xa5;
  param_1[10] = 0xcd;
  param_1[0xb] = 0x4a;
  param_1[0xc] = 0xc1;
  param_1[0xd] = 0x36;
  param_1[0xe] = 0xac;
  param_1[0xf] = 0xa5;
  return;
}



void FUN_0042110e(undefined *param_1)

{
  *param_1 = 0xef;
  param_1[1] = 0x55;
  param_1[2] = 0x73;
  param_1[3] = 0x71;
  param_1[4] = 4;
  param_1[5] = 0x53;
  param_1[6] = 0x71;
  param_1[7] = 0xfc;
  param_1[8] = 0xe4;
  param_1[9] = 0x8a;
  param_1[10] = 0xe0;
  param_1[0xb] = 0x20;
  param_1[0xc] = 0x16;
  param_1[0xd] = 0x29;
  param_1[0xe] = 0xa7;
  param_1[0xf] = 0x1d;
  return;
}



void FUN_00421152(undefined *param_1)

{
  *param_1 = 0xcc;
  param_1[1] = 0xcd;
  param_1[2] = 0x8f;
  param_1[3] = 0x29;
  param_1[4] = 0xaa;
  param_1[5] = 0x3f;
  param_1[6] = 0x1b;
  param_1[7] = 0x92;
  param_1[8] = 0x73;
  param_1[9] = 0xea;
  param_1[10] = 0x47;
  param_1[0xb] = 0x3d;
  param_1[0xc] = 9;
  param_1[0xd] = 0x35;
  param_1[0xe] = 0xaa;
  param_1[0xf] = 0xba;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_004212d2(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x4212ea;
  FUN_0042154c();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_004212f1;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_004211d6(int *param_1)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  
  ppiVar2 = (int **)FUN_00418daa(1,0);
  if (ppiVar2 == (int **)0x0) {
    ppiVar2 = (int **)0x0;
  }
  else {
    *ppiVar2 = param_1;
  }
  *param_1 = (int)ppiVar2;
  iVar3 = FUN_00421b50();
  piVar1 = param_1 + 6;
  *piVar1 = iVar3;
  *(undefined *)(iVar3 + 0x39) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[7] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_0042122a(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined local_5c [28];
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined4 local_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0x421236;
  FUN_00421509(param_2);
  local_1c = param_1[6];
  local_20 = *param_1;
  cVar1 = FUN_006b8eca();
  iVar3 = local_14;
  if (cVar1 == '\0') {
    cVar1 = FUN_00412a58(param_2,local_14 + 0xc);
    if (cVar1 == '\0') goto LAB_004212bf;
  }
  local_30 = 0;
  uStack_2c = 0;
  uStack_28 = 0;
  uStack_24 = 0;
  basic_string<>(param_2);
  local_40 = local_30;
  uStack_3c = uStack_2c;
  uStack_38 = uStack_28;
  uStack_34 = uStack_24;
  local_8 = 0;
  puVar2 = (undefined4 *)FUN_00421368(&local_20,local_5c,local_18,iVar3);
  local_18 = *puVar2;
  local_14 = puVar2[1];
  FUN_00401829(1,0);
LAB_004212bf:
  iVar3 = FUN_006badde();
  return iVar3 + 0x1c;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004212d2(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x4212ea;
  FUN_0042154c();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_004212f1;
  FUN_00a3f6a1();
}



void FUN_004212fa(undefined4 *param_1,undefined4 *param_2,undefined4 param_3)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  int local_c;
  
  puVar3 = &local_10;
  FUN_00421509(param_3);
  local_14 = param_1[6];
  local_18 = *param_1;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (cVar2 = FUN_00412a58(param_3,local_c + 0xc), cVar2 != '\0')) {
    local_14 = param_1[6];
    local_18 = *param_1;
    puVar3 = &local_18;
  }
  uVar1 = puVar3[1];
  *param_2 = *puVar3;
  param_2[1] = uVar1;
  return;
}



undefined4 * FUN_00421368(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 != '\0') {
        cVar1 = FUN_00412a58(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_004214e7;
        uVar4 = 0;
        goto LAB_0042138a;
      }
      cVar1 = FUN_00412a58(param_2,param_4 + 0xc);
      if (cVar1 == '\0') {
LAB_00421477:
        cVar1 = FUN_00412a58(param_4 + 0xc,param_2);
        if (cVar1 == '\0') {
LAB_004214e7:
          puVar3 = (undefined4 *)FUN_00421580(in_EAX,param_2);
          *param_1 = *puVar3;
          param_1[1] = puVar3[1];
          return param_1;
        }
        FUN_007449dd();
        cVar1 = FUN_006b8eca();
        if ((cVar1 == '\0') && (cVar1 = FUN_00412a58(param_2,param_4 + 0xc), cVar1 == '\0'))
        goto LAB_004214e7;
        if (*(char *)(*(int *)(param_4 + 8) + 0x39) == '\0') {
          uVar4 = 1;
          goto LAB_0042138a;
        }
      }
      else {
        iVar2 = FUN_00421832();
        cVar1 = FUN_00412a58(*(int *)(iVar2 + 4) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_00421477;
        if (*(char *)(*(int *)(param_4 + 8) + 0x39) == '\0') {
          uVar4 = 1;
          goto LAB_0042138a;
        }
      }
      uVar4 = 0;
      goto LAB_0042138a;
    }
    cVar1 = FUN_00412a58(param_2,param_4 + 0xc);
    if (cVar1 == '\0') goto LAB_004214e7;
  }
  uVar4 = 1;
LAB_0042138a:
  FUN_004216e5(param_1,uVar4,param_2);
  return param_1;
}



void FUN_00421509(undefined4 param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  undefined4 *unaff_EDI;
  undefined4 *local_8;
  
  puVar1 = (undefined4 *)((undefined4 *)unaff_EDI[6])[1];
  local_8 = (undefined4 *)unaff_EDI[6];
  while (puVar3 = puVar1, *(char *)((int)puVar3 + 0x39) == '\0') {
    cVar2 = FUN_00412a58(puVar3 + 3,param_1);
    if (cVar2 == '\0') {
      puVar1 = (undefined4 *)*puVar3;
      local_8 = puVar3;
    }
    else {
      puVar1 = (undefined4 *)puVar3[2];
    }
  }
  unaff_EBX[1] = local_8;
  *unaff_EBX = *unaff_EDI;
  return;
}



void FUN_0042154c(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_0042164a(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_00421580(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  puVar2 = (undefined4 *)local_8[1];
  local_c = CONCAT31(local_c._1_3_,1);
  while (*(char *)((int)puVar2 + 0x39) == '\0') {
    local_8 = puVar2;
    cVar1 = FUN_00412a58(param_2,puVar2 + 3);
    local_c = CONCAT31(local_c._1_3_,cVar1);
    if (cVar1 == '\0') {
      puVar2 = (undefined4 *)puVar2[2];
    }
    else {
      puVar2 = (undefined4 *)*puVar2;
    }
  }
  local_14 = *param_1;
  local_10 = local_8;
  if ((char)local_c != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_004215f2;
    }
    FUN_00421832();
  }
  puVar2 = local_10;
  cVar1 = FUN_00412a58(local_10 + 3,param_2);
  uVar3 = local_c;
  if (cVar1 == '\0') {
    *unaff_EBX = local_14;
    unaff_EBX[1] = puVar2;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_004215f2:
  puVar2 = (undefined4 *)FUN_004216e5(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void FUN_0042164a(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_00421b2c();
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_007449dd();
    FUN_00421893();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_004216e5(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x4216f1;
  if (0x5d1745b < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_00421b7a(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_0042180a;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_0042180a;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_0042180a:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xe) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x38) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xe) == '\0') {
LAB_004217c6:
        *(undefined *)(piVar1 + 0xe) = 1;
        *(undefined *)(piVar7 + 0xe) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x38) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007d0aa6(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x38) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x38) = 0;
        FUN_00437338(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xe) == '\0') goto LAB_004217c6;
    if (piVar8 == (int *)*piVar1) {
      FUN_00437338(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x38) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x38) = 0;
    FUN_007d0aa6(unaff_ESI);
  } while( true );
}



void FUN_00421832(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x39) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x39) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x39) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x39) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x39) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x39) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x0042197e)
// WARNING: Removing unreachable block (ram,0x0042198e)
// WARNING: Removing unreachable block (ram,0x00421997)
// WARNING: Removing unreachable block (ram,0x0042199a)
// WARNING: Removing unreachable block (ram,0x0042198a)
// WARNING: Removing unreachable block (ram,0x004219a7)
// WARNING: Removing unreachable block (ram,0x004219b7)
// WARNING: Removing unreachable block (ram,0x004219c2)
// WARNING: Removing unreachable block (ram,0x004219be)
// WARNING: Removing unreachable block (ram,0x004219b2)
// WARNING: Removing unreachable block (ram,0x004219c5)

void FUN_00421893(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x42189f;
  if (*(char *)((int)param_4 + 0x39) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_007449dd();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
    if (*(char *)(param_4[2] + 0x39) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x39) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x39) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0xe) != '\x01') {
LAB_00421af6:
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_00421aaa:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xe) != '\x01'))
  goto LAB_00421af2;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0xe) == '\0') {
      *(undefined *)(ppiVar4 + 0xe) = 1;
      *(undefined *)(ppiVar3 + 0xe) = 0;
      FUN_007d0aa6(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x39) == '\0') {
      if ((*(char *)(*ppiVar4 + 0xe) != '\x01') || (*(char *)(ppiVar4[2] + 0xe) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0xe) == '\x01') {
          *(undefined *)(*ppiVar4 + 0xe) = 1;
          *(undefined *)(ppiVar4 + 0xe) = 0;
          FUN_00437338(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0xe) = *(undefined *)(ppiVar3 + 0xe);
        *(undefined *)(ppiVar3 + 0xe) = 1;
        *(undefined *)(ppiVar4[2] + 0xe) = 1;
        FUN_007d0aa6(param_1);
        goto LAB_00421af2;
      }
LAB_00421aa1:
      *(undefined *)(ppiVar4 + 0xe) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0xe) == '\0') {
      *(undefined *)(ppiVar4 + 0xe) = 1;
      *(undefined *)(ppiVar3 + 0xe) = 0;
      FUN_00437338(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x39) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0xe) == '\x01') && (*(char *)(*ppiVar4 + 0xe) == '\x01'))
      goto LAB_00421aa1;
      if (*(char *)(*ppiVar4 + 0xe) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0xe) = 1;
        *(undefined *)(ppiVar4 + 0xe) = 0;
        FUN_007d0aa6(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0xe) = *(undefined *)(ppiVar3 + 0xe);
      *(undefined *)(ppiVar3 + 0xe) = 1;
      *(undefined *)(*ppiVar4 + 0xe) = 1;
      FUN_00437338(param_1);
LAB_00421af2:
      *(undefined *)(ppiVar5 + 0xe) = 1;
      goto LAB_00421af6;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_00421aaa;
}



void FUN_00421b2c(void)

{
  int *piVar1;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EDI + 0x18);
  FUN_00421bef(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(unaff_EDI + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



void FUN_00421b50(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x3c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 0xe) = 1;
  *(undefined *)((int)puVar1 + 0x39) = 0;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00421b7a(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x3c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    basic_string<>(param_1_00);
    puVar1[10] = *(undefined4 *)(param_1_00 + 0x1c);
    puVar1[0xb] = *(undefined4 *)(param_1_00 + 0x20);
    puVar1[0xc] = *(undefined4 *)(param_1_00 + 0x24);
    puVar1[0xd] = *(undefined4 *)(param_1_00 + 0x28);
    *(undefined *)(puVar1 + 0xe) = 0;
    *(undefined *)((int)puVar1 + 0x39) = 0;
  }
  return puVar1;
}



void Catch_All_00421bdc(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void FUN_00421bef(int param_1)

{
  if (*(char *)(param_1 + 0x39) == '\0') {
    FUN_00421bef(*(undefined4 *)(param_1 + 8));
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00421c7e(undefined4 param_1,char param_2)

{
  undefined *puVar1;
  undefined4 uVar2;
  undefined local_38 [24];
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x7c;
  local_8 = 0x421c8a;
  local_14 = 0;
  if (param_2 == '\0') {
    local_20 = 7;
    FUN_0040180b(0);
    puVar1 = local_38;
    local_14 = 2;
  }
  else {
    puVar1 = (undefined *)basic_string<>(&DAT_00fae700);
    local_14 = 1;
  }
  local_8 = (uint)(param_2 == '\0');
  uVar2 = basic_string<>(&DAT_00fae6ec,8);
  local_8 = 2;
  local_1c = 0x6a73d664;
  local_18 = 0x5f69c6c;
  uVar2 = FUN_00b94470(&local_1c,uVar2);
  local_8 = CONCAT31(local_8._1_3_,3);
  FUN_0041c102(param_1,puVar1,uVar2);
  local_14 = local_14 | 4;
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  if ((local_14 & 2) != 0) {
    local_14 = local_14 & 0xfffffffd;
    FUN_00401829(1,0);
  }
  if ((local_14 & 1) != 0) {
    FUN_00401829(1,0);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00421d61(undefined4 param_1,char param_2)

{
  undefined *puVar1;
  undefined4 uVar2;
  undefined local_38 [24];
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x7c;
  local_8 = 0x421d6d;
  local_14 = 0;
  if (param_2 == '\0') {
    local_20 = 7;
    FUN_0040180b(0);
    puVar1 = local_38;
    local_14 = 2;
  }
  else {
    puVar1 = (undefined *)basic_string<>(&DAT_00fae700);
    local_14 = 1;
  }
  local_8 = (uint)(param_2 == '\0');
  uVar2 = basic_string<>(&DAT_00fae704,8);
  local_8 = 2;
  local_1c = 0x2ca98720;
  local_18 = 0x301ee8fc;
  uVar2 = FUN_00b94470(&local_1c,uVar2);
  local_8 = CONCAT31(local_8._1_3_,3);
  FUN_0041c102(param_1,puVar1,uVar2);
  local_14 = local_14 | 4;
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  if ((local_14 & 2) != 0) {
    local_14 = local_14 & 0xfffffffd;
    FUN_00401829(1,0);
  }
  if ((local_14 & 1) != 0) {
    FUN_00401829(1,0);
  }
  return param_1;
}



void FUN_00421e44(undefined *param_1)

{
  *param_1 = 0x4b;
  param_1[1] = 0xd2;
  param_1[2] = 0x36;
  param_1[3] = 0xb7;
  param_1[4] = 0xee;
  param_1[5] = 0xdc;
  param_1[6] = 0x50;
  param_1[7] = 0xe;
  param_1[8] = 0x4e;
  param_1[9] = 0x35;
  param_1[10] = 0x2b;
  param_1[0xb] = 0x40;
  param_1[0xc] = 0x16;
  param_1[0xd] = 0x23;
  param_1[0xe] = 99;
  param_1[0xf] = 0x83;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00421e88(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x421e94;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fae718,8);
  local_8 = 0;
  local_18 = 0x4d01637;
  local_14 = 0x29bc78d8;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00421ed9(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x421ee5;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fae72c,0xb);
  local_8 = 0;
  local_18 = 0x478e5abf;
  local_14 = 0x1f833f05;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00421f2a(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x421f36;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fae744,7);
  local_8 = 0;
  local_18 = 0x7df8e4f5;
  local_14 = 0x77439958;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00421f7b(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x421f87;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fae754,8);
  local_8 = 0;
  local_18 = 0xaf46c959;
  local_14 = 0x8bc26886;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00421fcc(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x421fd8;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fae768,5);
  local_8 = 0;
  local_18 = 0xa5a29d45;
  local_14 = 0x359ee7f1;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0042201d(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x422029;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fae774,7);
  local_8 = 0;
  local_18 = 0xb0f1b6fc;
  local_14 = 0xd6f7748d;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



void FUN_0042206e(undefined *param_1)

{
  *param_1 = 0x4d;
  param_1[1] = 0x9d;
  param_1[2] = 0x22;
  param_1[3] = 0x5b;
  param_1[4] = 0xe0;
  param_1[5] = 0x73;
  param_1[6] = 0x81;
  param_1[7] = 0x2c;
  param_1[8] = 0x4e;
  param_1[9] = 0x5f;
  param_1[10] = 0x2d;
  param_1[0xb] = 5;
  param_1[0xc] = 0x22;
  param_1[0xd] = 0xca;
  param_1[0xe] = 0x3d;
  param_1[0xf] = 0x78;
  return;
}



int __thiscall FUN_004220c0(int param_1_00,uint param_1)

{
  if (*(uint *)(param_1_00 + 0x14) < param_1) {
    FUN_00a3fb10();
  }
  if (7 < *(uint *)(param_1_00 + 0x18)) {
    return *(int *)(param_1_00 + 4) + param_1 * 2;
  }
  return param_1_00 + 4 + param_1 * 2;
}



void __thiscall FUN_004220f0(int param_1_00,uint param_1)

{
  if (param_1 <= *(uint *)(param_1_00 + 0x14)) {
    FID_conflict_erase(param_1,0xffffffff);
    return;
  }
  FID_conflict_append(param_1 - *(uint *)(param_1_00 + 0x14),0);
  return;
}



void __thiscall FUN_00422120(int param_1_00,uint param_1,undefined4 param_2)

{
  if (param_1 <= *(uint *)(param_1_00 + 0x14)) {
    FID_conflict_erase();
    return;
  }
  FID_conflict_append(param_1 - *(uint *)(param_1_00 + 0x14),param_2);
  return;
}



void __thiscall
FUN_00422150(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,uint param_1)

{
  if (param_1 <= *(uint *)(param_1_00 + 0x14)) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
              (param_1_00,param_1,0xffffffff);
    return;
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
            (param_1_00,param_1 - *(uint *)(param_1_00 + 0x14),'\0');
  return;
}



void __thiscall
FUN_00422180(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            uint param_2,char param_3)

{
  if (param_2 <= *(uint *)(param_1 + 0x14)) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
              (param_1,param_2,0xffffffff);
    return;
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
            (param_1,param_2 - *(uint *)(param_1 + 0x14),param_3);
  return;
}



int __thiscall FUN_004221b0(int param_1_00,uint param_1)

{
  if (*(uint *)(param_1_00 + 0x14) < param_1) {
    FUN_00a3fb10();
  }
  if (0xf < *(uint *)(param_1_00 + 0x18)) {
    return *(int *)(param_1_00 + 4) + param_1;
  }
  return param_1_00 + 4 + param_1;
}



void FUN_004221e0(void)

{
  uint uVar1;
  uint *unaff_ESI;
  
  uVar1 = *unaff_ESI;
  if (uVar1 != 0) {
    if ((uVar1 & 1) == 0) {
      if (*(code **)(uVar1 & 0xfffffffe) != (code *)0x0) {
        (**(code **)(uVar1 & 0xfffffffe))(unaff_ESI + 2,unaff_ESI + 2,2);
      }
    }
    *unaff_ESI = 0;
  }
  return;
}



void __fastcall FUN_00422210(int param_1)

{
  FUN_00422340();
  *(undefined4 *)(param_1 + 0x54) = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)(undefined4 *)(param_1 + 0x54));
  return;
}



void __thiscall FUN_00422230(uint *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  uint uVar2;
  uint *extraout_ECX;
  undefined local_40 [44];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c235d8;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a(DAT_0323f878 ^ (uint)local_40);
    local_c = 0;
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  (**(code **)((uVar2 & 0xfffffffe) + 4))(param_1_00 + 2,param_1);
  ExceptionList = local_14;
  return;
}



int * __thiscall FUN_004222a0(int *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c283e7;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    *param_1_00 = (int)&PTR_00fad658;
    param_1_00[2] = (int)&DAT_00fad660;
    param_1_00[0x15] = (int)std::basic_ios<char,struct_std::char_traits<char>_>::vftable;
    local_4 = 0;
  }
  FUN_004224c0(param_1_00 + 3,0);
  local_4 = 1;
  *(undefined ***)((int)param_1_00 + *(int *)(*param_1_00 + 4)) =
       std::basic_stringstream<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
       vftable;
  FUN_00423910(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00422340(int param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c132ab;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x54) + 4) + -0x54 + param_1) =
       std::basic_stringstream<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
       vftable;
  iVar1 = param_1 + -0x48;
  local_4 = 0;
  FUN_00422ee0(uVar2);
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x54) + 4) + -0xc + iVar1) =
       std::basic_iostream<char,struct_std::char_traits<char>_>::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x4c) + 4) + -4 + iVar1) =
       std::basic_ostream<char,struct_std::char_traits<char>_>::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x54) + 4) + -0xc + iVar1) =
       std::basic_istream<char,struct_std::char_traits<char>_>::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 FUN_004223d0(undefined4 param_1)

{
  FUN_00422d30(param_1);
  return param_1;
}



void __fastcall FUN_004223f0(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0xc) + 4) + -0xc + param_1) =
       std::basic_iostream<char,struct_std::char_traits<char>_>::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -4) + 4) + -4 + param_1) =
       std::basic_ostream<char,struct_std::char_traits<char>_>::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0xc) + 4) + -0xc + param_1) =
       std::basic_istream<char,struct_std::char_traits<char>_>::vftable;
  return;
}



undefined4 * __thiscall FUN_00422420(undefined4 *param_1_00,byte param_1)

{
  FUN_00422340();
  *param_1_00 = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -0x15);
  }
  return param_1_00 + -0x15;
}



int * __thiscall FUN_00422460(undefined4 *param_1_00,byte param_1)

{
  int *piVar1;
  
  piVar1 = param_1_00 + -3;
  *(undefined ***)(*(int *)(*piVar1 + 4) + -0xc + (int)param_1_00) =
       std::basic_iostream<char,struct_std::char_traits<char>_>::vftable;
  *(undefined ***)(*(int *)(param_1_00[-1] + 4) + -4 + (int)param_1_00) =
       std::basic_ostream<char,struct_std::char_traits<char>_>::vftable;
  *(undefined ***)(*(int *)(param_1_00[-3] + 4) + -0xc + (int)param_1_00) =
       std::basic_istream<char,struct_std::char_traits<char>_>::vftable;
  *param_1_00 = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(piVar1);
  }
  return piVar1;
}



int * __thiscall FUN_004224c0(int *param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  undefined uVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c28397;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    *param_1_00 = (int)&DAT_00fae784;
    param_1_00[2] = (int)&DAT_00fae78c;
    param_1_00[3] = (int)std::basic_ios<char,struct_std::char_traits<char>_>::vftable;
    local_4 = 0;
  }
  *(undefined ***)((int)param_1_00 + *(int *)(*param_1_00 + 4)) =
       std::basic_istream<char,struct_std::char_traits<char>_>::vftable;
  param_1_00[1] = 0;
  iVar1 = *(int *)(*param_1_00 + 4);
  FUN_00412a9f(uVar3);
  *(undefined4 *)((int)param_1_00 + iVar1 + 0x28) = param_1;
  *(undefined4 *)((int)param_1_00 + iVar1 + 0x2c) = 0;
  uVar2 = FUN_00422b80(0x20);
  *(undefined *)((int)param_1_00 + iVar1 + 0x30) = uVar2;
  if (*(int *)((int)param_1_00 + iVar1 + 0x28) == 0) {
    FUN_00417a55(*(uint *)((int)param_1_00 + iVar1 + 8) | 4,0);
  }
  *(undefined4 *)((int)param_1_00 + iVar1 + 4) = 0;
  *(undefined ***)((int)param_1_00 + *(int *)(param_1_00[2] + 4) + 8) =
       std::basic_ostream<char,struct_std::char_traits<char>_>::vftable;
  *(undefined ***)((int)param_1_00 + *(int *)(*param_1_00 + 4)) =
       std::basic_iostream<char,struct_std::char_traits<char>_>::vftable;
  ExceptionList = local_c;
  return param_1_00;
}



int * __thiscall FUN_004225a0(int *param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2834c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_3 != 0) {
    *param_1_00 = (int)&DAT_00fad9c4;
    param_1_00[2] = (int)std::basic_ios<char,struct_std::char_traits<char>_>::vftable;
    local_4 = 0;
  }
  *(undefined ***)((int)param_1_00 + *(int *)(*param_1_00 + 4)) =
       std::basic_istream<char,struct_std::char_traits<char>_>::vftable;
  param_1_00[1] = 0;
  FUN_00422c10(param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_00422630(void)

{
  undefined4 *unaff_EBX;
  char *unaff_ESI;
  char *unaff_EDI;
  undefined4 param_4;
  short *param_5;
  
  FUN_004226c0((int)unaff_ESI - (int)unaff_EDI);
  *unaff_EBX = param_4;
  unaff_EBX[1] = param_5;
  if (unaff_EDI != unaff_ESI) {
    do {
      *param_5 = (short)*unaff_EDI;
      unaff_EDI = unaff_EDI + 1;
      param_5 = param_5 + 1;
    } while (unaff_EDI != unaff_ESI);
  }
  return;
}



void __thiscall FUN_00422680(undefined4 *param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar1 = *param_1_00;
  uVar2 = param_1_00[1];
  FUN_004226c0(param_2);
  *param_1 = uVar1;
  param_1[1] = uVar2;
  return;
}



int * __thiscall FUN_004226c0(int *param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  
  if (*param_1_00 != -4) {
    if (*param_1_00 == 0) {
      FUN_00a3fb10();
    }
    iVar2 = *param_1_00;
    if (*(uint *)(iVar2 + 0x18) < 8) {
      iVar4 = iVar2 + 4;
    }
    else {
      iVar4 = *(int *)(iVar2 + 4);
    }
    uVar1 = param_1_00[1] + param_1 * 2;
    if (uVar1 <= (uint)(iVar4 + *(int *)(iVar2 + 0x14) * 2)) {
      if (*(uint *)(iVar2 + 0x18) < 8) {
        uVar3 = iVar2 + 4;
      }
      else {
        uVar3 = *(uint *)(iVar2 + 4);
      }
      if (uVar3 <= uVar1) goto LAB_00422711;
    }
    FUN_00a3fb10();
  }
LAB_00422711:
  param_1_00[1] = param_1_00[1] + param_1 * 2;
  return param_1_00;
}



undefined4 * __thiscall FUN_00422720(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::ctype<char>::vftable;
  if ((int)param_1_00[5] < 1) {
    if ((int)param_1_00[5] < 0) {
      FUN_00a3f66c(param_1_00[4]);
    }
  }
  else {
    _free((void *)param_1_00[4]);
  }
  *param_1_00 = std::locale::facet::vftable;
  if ((param_1 & 1) == 0) {
    return param_1_00;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1_00);
}



byte * __thiscall FUN_00422770(int param_1_00,byte *param_1,byte *param_2)

{
  int iVar1;
  
  if (param_1 != param_2) {
    do {
      iVar1 = __Tolower((uint)*param_1,(_Ctypevec *)(param_1_00 + 8));
      *param_1 = (byte)iVar1;
      param_1 = param_1 + 1;
    } while (param_1 != param_2);
  }
  return param_1;
}



void __thiscall FUN_004227a0(int param_1_00,byte param_1)

{
  __Tolower((uint)param_1,(_Ctypevec *)(param_1_00 + 8));
  return;
}



byte * __thiscall FUN_004227c0(int param_1_00,byte *param_1,byte *param_2)

{
  int iVar1;
  
  if (param_1 != param_2) {
    do {
      iVar1 = __Toupper((uint)*param_1,(_Ctypevec *)(param_1_00 + 8));
      *param_1 = (byte)iVar1;
      param_1 = param_1 + 1;
    } while (param_1 != param_2);
  }
  return param_1;
}



void __thiscall FUN_004227f0(int param_1_00,byte param_1)

{
  __Toupper((uint)param_1,(_Ctypevec *)(param_1_00 + 8));
  return;
}



void __thiscall FUN_00422810(int *param_1_00,int param_1,int param_2,undefined4 param_3)

{
  (**(code **)(*param_1_00 + 0x1c))(param_1,param_2,param_3,param_2 - param_1);
  return;
}



int FUN_00422840(void *param_1,int param_2,void *param_3,uint param_4)

{
  if (param_4 < (uint)(param_2 - (int)param_1)) {
    FUN_00a3fb10();
  }
  _memcpy_s(param_3,param_4,param_1,param_2 - (int)param_1);
  return param_2;
}



void __thiscall
FUN_00422880(int *param_1_00,int param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  (**(code **)(*param_1_00 + 0x28))(param_1,param_2,param_3,param_4,param_2 - param_1);
  return;
}



undefined FUN_004228b0(undefined param_1)

{
  return param_1;
}



int FUN_004228c0(void *param_1,int param_2,undefined4 param_3,void *param_4,uint param_5)

{
  if (param_5 < (uint)(param_2 - (int)param_1)) {
    FUN_00a3fb10();
  }
  _memcpy_s(param_4,param_5,param_1,param_2 - (int)param_1);
  return param_2;
}



undefined4 * __thiscall FUN_00422900(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  _Ctypevec *p_Var1;
  _Ctypevec local_10;
  
  param_1_00[1] = param_2;
  *param_1_00 = std::ctype<char>::vftable;
  p_Var1 = __Getctype(&local_10);
  param_1_00[2] = p_Var1->_Page;
  param_1_00[3] = p_Var1->_Table;
  param_1_00[4] = p_Var1->_Delfl;
  param_1_00[5] = p_Var1->_LocaleName;
  return param_1_00;
}



undefined4 FUN_00422940(int *param_1,locale *param_2)

{
  uint uVar1;
  void *pvVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  undefined4 uVar4;
  int iVar5;
  undefined local_9c [4];
  undefined4 local_98;
  uint local_84;
  _Locinfo local_80 [116];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1b680;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff50;
  ExceptionList = &local_c;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar2 = operator_new(0x18);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      iVar5 = 0;
    }
    else {
      pbVar3 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_9c);
      local_4 = CONCAT31(local_4._1_3_,1);
      uVar4 = std::_Locinfo::_Locinfo(local_80,pbVar3);
      iVar5 = FUN_00422900(uVar4,0);
    }
    local_4 = 2;
    *param_1 = iVar5;
    if ((pvVar2 != (void *)0x0) && (std::_Locinfo::~_Locinfo(local_80), 0xf < local_84)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_98,uVar1);
    }
  }
  ExceptionList = local_c;
  return 2;
}



facet * FUN_00422a40(int *param_1)

{
  uint uVar1;
  facet *pfVar2;
  uint uVar3;
  int iVar4;
  facet *pfVar5;
  facet *local_24;
  _Lockit local_20 [4];
  _Lockit local_1c [4];
  bad_cast local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1f628;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  std::_Lockit::_Lockit(local_1c,0);
  pfVar2 = DAT_032ef6d4;
  local_4 = 0;
  local_24 = DAT_032ef6d4;
  if (DAT_032bc81c == 0) {
    std::_Lockit::_Lockit(local_20,0);
    if (DAT_032bc81c == 0) {
      DAT_032bc818 = DAT_032bc818 + 1;
      DAT_032bc81c = DAT_032bc818;
    }
    FUN_00823810(uVar3);
  }
  uVar1 = DAT_032bc81c;
  iVar4 = *param_1;
  if (DAT_032bc81c < *(uint *)(iVar4 + 0xc)) {
    pfVar5 = *(facet **)(*(int *)(iVar4 + 8) + DAT_032bc81c * 4);
    if (pfVar5 == (facet *)0x0) goto LAB_00422ad4;
LAB_00422af2:
    if (pfVar5 != (facet *)0x0) goto LAB_00422b48;
  }
  else {
    pfVar5 = (facet *)0x0;
LAB_00422ad4:
    if (*(char *)(iVar4 + 0x14) == '\0') goto LAB_00422af2;
    iVar4 = FUN_008238c4();
    if (uVar1 < *(uint *)(iVar4 + 0xc)) {
      pfVar5 = *(facet **)(*(int *)(iVar4 + 8) + uVar1 * 4);
      goto LAB_00422af2;
    }
  }
  pfVar5 = pfVar2;
  if (pfVar2 == (facet *)0x0) {
    iVar4 = FUN_00422940(&local_24,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_18,"bad cast");
      __CxxThrowException_8(local_18,&DAT_03115570);
    }
    pfVar5 = local_24;
    DAT_032ef6d4 = local_24;
    std::locale::facet::_Incref(local_24);
    std::locale::facet::facet_Register(pfVar5);
  }
LAB_00422b48:
  local_4 = 0xffffffff;
  FUN_00823810(uVar3);
  ExceptionList = local_c;
  return pfVar5;
}



undefined FUN_00422b70(undefined param_1)

{
  return param_1;
}



void FUN_00422b80(undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined4 *puVar4;
  facet *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c235a8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  uVar2 = FUN_00417498(&local_10);
  local_4 = 0;
  piVar3 = (int *)FUN_00422a40(uVar2,uVar1);
  local_4 = 0xffffffff;
  if (local_10 != (facet *)0x0) {
    puVar4 = (undefined4 *)std::locale::facet::_Decref(local_10);
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)(1);
    }
  }
  (**(code **)(*piVar3 + 0x18))(param_1);
  ExceptionList = local_10;
  return;
}



void __thiscall FUN_00422c10(ios_base *param_1_00,undefined4 param_1,char param_2)

{
  ios_base iVar1;
  
  FUN_00412a9f();
  *(undefined4 *)(param_1_00 + 0x28) = param_1;
  *(undefined4 *)(param_1_00 + 0x2c) = 0;
  iVar1 = (ios_base)FUN_00422b80(0x20);
  param_1_00[0x30] = iVar1;
  if (*(int *)(param_1_00 + 0x28) == 0) {
    FUN_00417a55(*(uint *)(param_1_00 + 8) | 4,0);
  }
  if (param_2 != '\0') {
    std::ios_base::_Addstd(param_1_00);
    return;
  }
  *(undefined4 *)(param_1_00 + 4) = 0;
  return;
}



int * __thiscall FUN_00422c70(undefined4 *param_1_00,byte param_1)

{
  int *piVar1;
  
  piVar1 = param_1_00 + -1;
  *(undefined ***)(*(int *)(*piVar1 + 4) + -4 + (int)param_1_00) =
       std::basic_ostream<char,struct_std::char_traits<char>_>::vftable;
  *param_1_00 = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(piVar1);
  }
  return piVar1;
}



void __fastcall FUN_00422cb0(int *param_1)

{
  int *piVar1;
  
  piVar1 = param_1 + 1;
  *(undefined ***)(*(int *)(*param_1 + 4) + -4 + (int)piVar1) =
       std::basic_ostream<char,struct_std::char_traits<char>_>::vftable;
  *piVar1 = (int)std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)piVar1);
  return;
}



void __fastcall FUN_00422cd0(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -4) + 4) + -4 + param_1) =
       std::basic_ostream<char,struct_std::char_traits<char>_>::vftable;
  return;
}



int * __thiscall FUN_00422ce0(undefined4 *param_1_00,byte param_1)

{
  int *piVar1;
  
  piVar1 = param_1_00 + -2;
  *(undefined ***)(*(int *)(*piVar1 + 4) + -8 + (int)param_1_00) =
       std::basic_istream<char,struct_std::char_traits<char>_>::vftable;
  *param_1_00 = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(piVar1);
  }
  return piVar1;
}



void __fastcall FUN_00422d20(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -8) + 4) + -8 + param_1) =
       std::basic_istream<char,struct_std::char_traits<char>_>::vftable;
  return;
}



void __thiscall
FUN_00422d30(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  void *pvVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  undefined4 local_4c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_48 [4];
  undefined4 local_44;
  undefined4 local_34;
  uint local_30;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [4];
  uint local_28;
  undefined4 local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1f6f8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_4c;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  local_4c = 0;
  if (((*(uint *)(param_1_00 + 0x40) & 2) == 0) && (**(uint **)(param_1_00 + 0x24) != 0)) {
    uVar4 = **(uint **)(param_1_00 + 0x24);
    if (uVar4 <= *(uint *)(param_1_00 + 0x3c)) {
      uVar4 = *(uint *)(param_1_00 + 0x3c);
    }
    local_30 = 0xf;
    local_34 = 0;
    local_44 = (uint)local_44._1_3_ << 8;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_48,**(char ***)(param_1_00 + 0x14),uVar4 - (int)**(char ***)(param_1_00 + 0x14)
              );
    local_4 = 0;
  }
  else {
    if (((*(uint *)(param_1_00 + 0x40) & 4) != 0) || (**(int **)(param_1_00 + 0x20) == 0)) {
      local_14 = 0xf;
      local_18 = 0;
      local_28 = local_28 & 0xffffff00;
      local_4 = 2;
      *(undefined4 *)(param_1 + 0x18) = 0xf;
      *(undefined4 *)(param_1 + 0x14) = 0;
      param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0
      ;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (param_1,local_2c,0,0xffffffff);
      pvVar1 = ExceptionList;
      uVar4 = local_28;
      ExceptionList = local_c;
      uVar2 = local_14;
      goto joined_r0x00422e4c;
    }
    local_30 = 0xf;
    local_34 = 0;
    local_44 = (uint)local_44._1_3_ << 8;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_48,**(char ***)(param_1_00 + 0x10),
               (**(int **)(param_1_00 + 0x30) + **(int **)(param_1_00 + 0x20)) -
               (int)**(char ***)(param_1_00 + 0x10));
    local_4 = 1;
  }
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,local_48,0,0xffffffff);
  pvVar1 = ExceptionList;
  uVar4 = local_44;
  ExceptionList = local_c;
  uVar2 = local_30;
joined_r0x00422e4c:
  local_c = ExceptionList;
  if (0xf < uVar2) {
    ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uVar4,uVar3);
  }
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00422e80(int param_1)

{
  if ((*(byte *)(param_1 + 0x40) & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(**(undefined4 **)(param_1 + 0x10));
  }
  **(undefined4 **)(param_1 + 0x10) = 0;
  **(undefined4 **)(param_1 + 0x20) = 0;
  **(undefined4 **)(param_1 + 0x30) = 0;
  **(undefined4 **)(param_1 + 0x14) = 0;
  **(undefined4 **)(param_1 + 0x24) = 0;
  **(undefined4 **)(param_1 + 0x34) = 0;
  *(uint *)(param_1 + 0x40) = *(uint *)(param_1 + 0x40) & 0xfffffffe;
  *(undefined4 *)(param_1 + 0x3c) = 0;
  return;
}



void __fastcall FUN_00422ee0(undefined4 *param_1)

{
  facet **ppfVar1;
  uint uVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1327b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = std::basic_stringbuf<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
             vftable;
  FUN_00422e80(uVar2);
  *param_1 = std::basic_streambuf<char,struct_std::char_traits<char>_>::vftable;
  local_4 = 0;
  ppfVar1 = (facet **)param_1[0xe];
  if (ppfVar1 != (facet **)0x0) {
    if (*ppfVar1 != (facet *)0x0) {
      puVar3 = (undefined4 *)std::locale::facet::_Decref(*ppfVar1);
      if (puVar3 != (undefined4 *)0x0) {
        (**(code **)*puVar3)(1);
      }
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(ppfVar1);
  }
  local_4 = 0xffffffff;
  FUN_00823c4d();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00422f70(int param_1)

{
  *(int *)(param_1 + 0x20) = param_1 + 0x18;
  *(int *)(param_1 + 0x24) = param_1 + 0x1c;
  *(int *)(param_1 + 0x10) = param_1 + 8;
  *(int *)(param_1 + 0x30) = param_1 + 0x28;
  *(undefined4 **)(param_1 + 0x14) = (undefined4 *)(param_1 + 0xc);
  *(int *)(param_1 + 0x34) = param_1 + 0x2c;
  *(undefined4 *)(param_1 + 0xc) = 0;
  **(undefined4 **)(param_1 + 0x24) = 0;
  **(undefined4 **)(param_1 + 0x34) = 0;
  **(undefined4 **)(param_1 + 0x10) = 0;
  **(undefined4 **)(param_1 + 0x20) = 0;
  **(undefined4 **)(param_1 + 0x30) = 0;
  return;
}



undefined4 * __fastcall FUN_00422fd0(undefined4 *param_1)

{
  uint uVar1;
  _Locimp **pp_Var2;
  _Locimp *p_Var3;
  int iVar4;
  _Lockit local_14 [4];
  undefined4 *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c0fd1b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *param_1 = std::basic_streambuf<char,struct_std::char_traits<char>_>::vftable;
  local_10 = param_1;
  std::_Mutex::_Mutex((_Mutex *)(param_1 + 1));
  local_4 = 0;
  pp_Var2 = (_Locimp **)operator_new(4);
  if (pp_Var2 == (_Locimp **)0x0) {
    pp_Var2 = (_Locimp **)0x0;
  }
  else {
    p_Var3 = std::locale::_Init();
    *pp_Var2 = p_Var3;
    iVar4 = FUN_008238c4(uVar1);
    std::_Lockit::_Lockit(local_14,0);
    if (*(int *)(iVar4 + 4) != -1) {
      *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
    }
    FUN_00823810();
  }
  param_1[0xe] = pp_Var2;
  FUN_00422f70();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_00423080(undefined4 *param_1,byte param_2)

{
  facet **ppfVar1;
  uint uVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1327b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = std::basic_streambuf<char,struct_std::char_traits<char>_>::vftable;
  local_4 = 0;
  ppfVar1 = (facet **)param_1[0xe];
  if (ppfVar1 != (facet **)0x0) {
    if (*ppfVar1 != (facet *)0x0) {
      puVar3 = (undefined4 *)std::locale::facet::_Decref(*ppfVar1);
      if (puVar3 != (undefined4 *)0x0) {
        (**(code **)*puVar3)(1);
      }
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(ppfVar1);
  }
  local_4 = 0xffffffff;
  FUN_00823c4d(uVar2);
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_00423120(undefined4 *param_1)

{
  *param_1 = 0xffffffff;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  return;
}



void FUN_00423140(undefined4 *param_1)

{
  *param_1 = 0xffffffff;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  return;
}



void __fastcall FUN_00423160(undefined4 *param_1)

{
  facet **ppfVar1;
  undefined4 *puVar2;
  
  ppfVar1 = (facet **)param_1[0xe];
  *param_1 = std::basic_streambuf<char,struct_std::char_traits<char>_>::vftable;
  if (ppfVar1 != (facet **)0x0) {
    if (*ppfVar1 != (facet *)0x0) {
      puVar2 = (undefined4 *)std::locale::facet::_Decref(*ppfVar1);
      if (puVar2 != (undefined4 *)0x0) {
        (**(code **)*puVar2)(1);
      }
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(ppfVar1);
  }
  FUN_00823c4d();
  return;
}



undefined4 __thiscall FUN_004231a0(undefined4 param_1_00,byte param_1)

{
  FUN_00422ee0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_004231c0(int param_1_00,int param_1)

{
  byte bVar1;
  int iVar2;
  int *piVar3;
  undefined *puVar4;
  void *_Src;
  int iVar5;
  uint uVar6;
  char *_Dst;
  uint uVar7;
  bool bVar8;
  
  if ((*(byte *)(param_1_00 + 0x40) & 8) != 0) {
    uVar7 = **(uint **)(param_1_00 + 0x24);
    if ((uVar7 != 0) && (uVar6 = *(uint *)(param_1_00 + 0x3c), uVar7 < uVar6)) {
      iVar2 = **(int **)(param_1_00 + 0x34);
      **(uint **)(param_1_00 + 0x24) = uVar6;
      **(int **)(param_1_00 + 0x34) = (iVar2 + uVar7) - uVar6;
    }
  }
  if (param_1 == -1) {
    return 0;
  }
  uVar7 = **(uint **)(param_1_00 + 0x24);
  if ((uVar7 != 0) && (piVar3 = *(int **)(param_1_00 + 0x34), uVar7 < *piVar3 + uVar7)) {
    *piVar3 = *piVar3 + -1;
    puVar4 = (undefined *)**(int **)(param_1_00 + 0x24);
    **(int **)(param_1_00 + 0x24) = (int)(puVar4 + 1);
    *puVar4 = (char)param_1;
    return param_1;
  }
  if ((*(byte *)(param_1_00 + 0x40) & 2) != 0) {
    return -1;
  }
  if (uVar7 == 0) {
    uVar7 = 0;
  }
  else {
    uVar7 = (**(int **)(param_1_00 + 0x34) - **(int **)(param_1_00 + 0x10)) + uVar7;
  }
  uVar6 = uVar7 >> 1;
  if (uVar6 < 0x20) {
    uVar6 = 0x20;
  }
  else {
    bVar8 = uVar6 == 0;
    if (bVar8) goto LAB_00423272;
  }
  do {
    if (uVar7 <= 0x7fffffff - uVar6) break;
    uVar6 = uVar6 >> 1;
  } while (uVar6 != 0);
  bVar8 = uVar6 == 0;
LAB_00423272:
  if (bVar8) {
    return -1;
  }
  uVar6 = uVar6 + uVar7;
  _Dst = std::_Allocate<char>(uVar6,(char *)0x0);
  _Src = **(void ***)(param_1_00 + 0x10);
  if (uVar7 == 0) {
    *(char **)(param_1_00 + 0x3c) = _Dst;
    **(char ***)(param_1_00 + 0x14) = _Dst;
    **(char ***)(param_1_00 + 0x24) = _Dst;
    **(uint **)(param_1_00 + 0x34) = uVar6;
    bVar1 = *(byte *)(param_1_00 + 0x40);
    **(char ***)(param_1_00 + 0x10) = _Dst;
    if ((bVar1 & 4) == 0) {
      **(char ***)(param_1_00 + 0x20) = _Dst;
      **(undefined4 **)(param_1_00 + 0x30) = 1;
    }
    else {
      **(char ***)(param_1_00 + 0x20) = (char *)0x0;
      **(char ***)(param_1_00 + 0x30) = _Dst;
    }
  }
  else {
    _memcpy_s(_Dst,uVar6,_Src,uVar7);
    *(char **)(param_1_00 + 0x3c) = _Dst + ((int)*(char **)(param_1_00 + 0x3c) - (int)_Src);
    iVar2 = **(int **)(param_1_00 + 0x24);
    **(char ***)(param_1_00 + 0x14) = _Dst + ((int)**(char ***)(param_1_00 + 0x14) - (int)_Src);
    **(char ***)(param_1_00 + 0x24) = _Dst + (iVar2 - (int)_Src);
    **(char ***)(param_1_00 + 0x34) = _Dst + (uVar6 - (int)(_Dst + (iVar2 - (int)_Src)));
    if ((*(byte *)(param_1_00 + 0x40) & 4) == 0) {
      iVar2 = **(int **)(param_1_00 + 0x20);
      iVar5 = **(int **)(param_1_00 + 0x24);
      **(char ***)(param_1_00 + 0x10) = _Dst;
      **(char ***)(param_1_00 + 0x20) = _Dst + (iVar2 - (int)_Src);
      **(int **)(param_1_00 + 0x30) = (iVar5 - (int)(_Dst + (iVar2 - (int)_Src))) + 1;
    }
    else {
      **(char ***)(param_1_00 + 0x10) = _Dst;
      **(undefined4 **)(param_1_00 + 0x20) = 0;
      **(char ***)(param_1_00 + 0x30) = _Dst;
    }
  }
  if ((*(byte *)(param_1_00 + 0x40) & 1) == 0) {
    *(uint *)(param_1_00 + 0x40) = *(uint *)(param_1_00 + 0x40) | 1;
    **(int **)(param_1_00 + 0x34) = **(int **)(param_1_00 + 0x34) + -1;
    puVar4 = (undefined *)**(int **)(param_1_00 + 0x24);
    **(int **)(param_1_00 + 0x24) = (int)(puVar4 + 1);
    *puVar4 = (char)param_1;
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(_Src);
}



int __thiscall FUN_00423390(int param_1_00,int param_1)

{
  uint uVar1;
  
  uVar1 = **(uint **)(param_1_00 + 0x20);
  if ((uVar1 != 0) && (**(uint **)(param_1_00 + 0x10) < uVar1)) {
    if ((param_1 == -1) ||
       (((char)param_1 == *(char *)(uVar1 - 1) || ((*(byte *)(param_1_00 + 0x40) & 2) == 0)))) {
      **(int **)(param_1_00 + 0x30) = **(int **)(param_1_00 + 0x30) + 1;
      **(int **)(param_1_00 + 0x20) = **(int **)(param_1_00 + 0x20) + -1;
      if (param_1 != -1) {
        ***(char ***)(param_1_00 + 0x20) = (char)param_1;
        return param_1;
      }
      return 0;
    }
  }
  return -1;
}



uint __fastcall FUN_004233e0(int param_1)

{
  byte *pbVar1;
  byte *pbVar2;
  
  pbVar1 = **(byte ***)(param_1 + 0x20);
  if (pbVar1 == (byte *)0x0) {
    return 0xffffffff;
  }
  if (pbVar1 < pbVar1 + **(int **)(param_1 + 0x30)) {
    return (uint)*pbVar1;
  }
  if ((((*(byte *)(param_1 + 0x40) & 4) == 0) &&
      (pbVar2 = **(byte ***)(param_1 + 0x24), pbVar2 != (byte *)0x0)) &&
     ((pbVar1 < pbVar2 || (pbVar1 < *(byte **)(param_1 + 0x3c))))) {
    if (*(byte **)(param_1 + 0x3c) < pbVar2) {
      *(byte **)(param_1 + 0x3c) = pbVar2;
    }
    **(int **)(param_1 + 0x30) = *(int *)(param_1 + 0x3c) - (int)**(byte ***)(param_1 + 0x20);
    return (uint)***(byte ***)(param_1 + 0x20);
  }
  return 0xffffffff;
}



void __thiscall FUN_00423450(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  (**(code **)(*param_1_00 + 0x1c))(param_1,0xffffffff,param_2);
  return;
}



undefined4 __fastcall FUN_00423470(int param_1)

{
  if (**(int **)(param_1 + 0x20) != 0) {
    return **(undefined4 **)(param_1 + 0x30);
  }
  return 0;
}



undefined4 FUN_00423490(void)

{
  return 0xffffffff;
}



uint __fastcall FUN_004234a0(int *param_1)

{
  byte *pbVar1;
  int iVar2;
  
  iVar2 = (**(code **)(*param_1 + 0x10))();
  if (iVar2 == -1) {
    return 0xffffffff;
  }
  *(int *)param_1[0xc] = *(int *)param_1[0xc] + -1;
  pbVar1 = *(byte **)param_1[8];
  *(byte **)param_1[8] = pbVar1 + 1;
  return (uint)*pbVar1;
}



int __thiscall FUN_004234d0(int *param_1_00,undefined *param_1,rsize_t param_2,rsize_t param_3)

{
  rsize_t _MaxCount;
  int iVar1;
  int local_4;
  
  local_4 = 0;
  if ((int)param_3 < 1) {
    return 0;
  }
  do {
    _MaxCount = FUN_00423470();
    if ((int)_MaxCount < 1) {
      iVar1 = (**(code **)(*param_1_00 + 0x14))();
      if (iVar1 == -1) {
        return local_4;
      }
      local_4 = local_4 + 1;
      *param_1 = (char)iVar1;
      param_1 = param_1 + 1;
      iVar1 = -1;
    }
    else {
      if ((int)param_3 < (int)_MaxCount) {
        _MaxCount = param_3;
      }
      _memcpy_s(param_1,param_2,*(void **)param_1_00[8],_MaxCount);
      *(int *)param_1_00[0xc] = *(int *)param_1_00[0xc] - _MaxCount;
      local_4 = local_4 + _MaxCount;
      param_1 = param_1 + _MaxCount;
      iVar1 = -_MaxCount;
      *(int *)param_1_00[8] = *(int *)param_1_00[8] + _MaxCount;
    }
    param_3 = param_3 + iVar1;
  } while (0 < (int)param_3);
  return local_4;
}



int __thiscall FUN_00423560(int *param_1_00,undefined *param_1,rsize_t param_2)

{
  rsize_t _DstSize;
  int iVar1;
  rsize_t _MaxCount;
  int local_4;
  
  local_4 = 0;
  if ((int)param_2 < 1) {
    return 0;
  }
  do {
    _DstSize = FUN_00425980();
    if ((int)_DstSize < 1) {
      iVar1 = (**(code **)(*param_1_00 + 4))(*param_1);
      if (iVar1 == -1) {
        return local_4;
      }
      local_4 = local_4 + 1;
      param_1 = param_1 + 1;
      iVar1 = -1;
    }
    else {
      _MaxCount = _DstSize;
      if ((int)param_2 < (int)_DstSize) {
        _MaxCount = param_2;
      }
      _memcpy_s(*(void **)param_1_00[9],_DstSize,param_1,_MaxCount);
      *(int *)param_1_00[0xd] = *(int *)param_1_00[0xd] - _MaxCount;
      local_4 = local_4 + _MaxCount;
      param_1 = param_1 + _MaxCount;
      iVar1 = -_MaxCount;
      *(int *)param_1_00[9] = *(int *)param_1_00[9] + _MaxCount;
    }
    param_2 = param_2 + iVar1;
  } while (0 < (int)param_2);
  return local_4;
}



void __thiscall FUN_004235f0(int param_1_00,int *param_1,int param_2,int param_3,byte param_4)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  uVar1 = **(uint **)(param_1_00 + 0x24);
  if ((uVar1 != 0) && (*(uint *)(param_1_00 + 0x3c) < uVar1)) {
    *(uint *)(param_1_00 + 0x3c) = uVar1;
  }
  if (((param_4 & 1) == 0) || (iVar4 = **(int **)(param_1_00 + 0x20), iVar4 == 0)) {
    if (((param_4 & 2) == 0) || (uVar1 = **(uint **)(param_1_00 + 0x24), uVar1 == 0)) {
      iVar4 = -1;
      goto LAB_0042372d;
    }
    if (param_3 == 2) {
      iVar4 = param_2 + (*(int *)(param_1_00 + 0x3c) - **(int **)(param_1_00 + 0x10));
    }
    else if (param_3 == 1) {
      iVar4 = param_2 + (uVar1 - **(int **)(param_1_00 + 0x10));
    }
    else {
      iVar4 = -1;
      if (param_3 == 0) {
        iVar4 = param_2;
      }
    }
    if ((-1 < iVar4) && (iVar4 <= *(int *)(param_1_00 + 0x3c) - **(int **)(param_1_00 + 0x10))) {
      iVar5 = (**(int **)(param_1_00 + 0x10) - uVar1) + iVar4;
      **(int **)(param_1_00 + 0x34) = **(int **)(param_1_00 + 0x34) - iVar5;
      **(int **)(param_1_00 + 0x24) = **(int **)(param_1_00 + 0x24) + iVar5;
      goto LAB_0042372d;
    }
  }
  else {
    if (param_3 == 2) {
      param_2 = param_2 + (*(int *)(param_1_00 + 0x3c) - **(int **)(param_1_00 + 0x10));
    }
    else if (param_3 == 1) {
      if ((param_4 & 2) == 0) {
        param_2 = param_2 + (iVar4 - **(int **)(param_1_00 + 0x10));
      }
      else {
LAB_0042365a:
        param_2 = -1;
      }
    }
    else if (param_3 != 0) goto LAB_0042365a;
    if ((-1 < param_2) && (param_2 <= *(int *)(param_1_00 + 0x3c) - **(int **)(param_1_00 + 0x10)))
    {
      iVar4 = (**(int **)(param_1_00 + 0x10) - iVar4) + param_2;
      **(int **)(param_1_00 + 0x30) = **(int **)(param_1_00 + 0x30) - iVar4;
      **(int **)(param_1_00 + 0x20) = **(int **)(param_1_00 + 0x20) + iVar4;
      iVar4 = param_2;
      if ((param_4 & 2) != 0) {
        iVar5 = **(int **)(param_1_00 + 0x24);
        if (iVar5 != 0) {
          iVar2 = **(int **)(param_1_00 + 0x20);
          iVar3 = **(int **)(param_1_00 + 0x34);
          **(int **)(param_1_00 + 0x24) = iVar2;
          **(int **)(param_1_00 + 0x34) = (iVar3 + iVar5) - iVar2;
        }
      }
      goto LAB_0042372d;
    }
  }
  iVar4 = -1;
LAB_0042372d:
  *param_1 = iVar4;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  return;
}



void __thiscall FUN_00423750(int param_1_00,int *param_1,int param_2,undefined4 param_3,int param_4)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  byte param_8;
  
  param_4 = param_4 + param_2;
  uVar1 = **(uint **)(param_1_00 + 0x24);
  if ((uVar1 != 0) && (*(uint *)(param_1_00 + 0x3c) < uVar1)) {
    *(uint *)(param_1_00 + 0x3c) = uVar1;
  }
  if (param_4 != -1) {
    if (((param_8 & 1) == 0) || (**(int **)(param_1_00 + 0x20) == 0)) {
      if (((param_8 & 2) != 0) &&
         (((uVar1 = **(uint **)(param_1_00 + 0x24), uVar1 != 0 && (-1 < param_4)) &&
          (param_4 <= *(int *)(param_1_00 + 0x3c) - **(int **)(param_1_00 + 0x10))))) {
        iVar4 = (**(int **)(param_1_00 + 0x10) - uVar1) + param_4;
        **(int **)(param_1_00 + 0x34) = **(int **)(param_1_00 + 0x34) - iVar4;
        **(int **)(param_1_00 + 0x24) = **(int **)(param_1_00 + 0x24) + iVar4;
        goto LAB_00423805;
      }
    }
    else if ((-1 < param_4) &&
            (param_4 <= *(int *)(param_1_00 + 0x3c) - **(int **)(param_1_00 + 0x10))) {
      iVar4 = (**(int **)(param_1_00 + 0x10) - **(int **)(param_1_00 + 0x20)) + param_4;
      **(int **)(param_1_00 + 0x30) = **(int **)(param_1_00 + 0x30) - iVar4;
      **(int **)(param_1_00 + 0x20) = **(int **)(param_1_00 + 0x20) + iVar4;
      if ((param_8 & 2) != 0) {
        iVar4 = **(int **)(param_1_00 + 0x24);
        if (iVar4 != 0) {
          iVar2 = **(int **)(param_1_00 + 0x20);
          iVar3 = **(int **)(param_1_00 + 0x34);
          **(int **)(param_1_00 + 0x24) = iVar2;
          **(int **)(param_1_00 + 0x34) = (iVar3 + iVar4) - iVar2;
        }
      }
      goto LAB_00423805;
    }
    param_4 = -1;
  }
LAB_00423805:
  *param_1 = param_4;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  return;
}



undefined4 __fastcall FUN_00423820(undefined4 param_1)

{
  return param_1;
}



void __thiscall FUN_00423830(int param_1_00,void *param_1,uint param_2,undefined4 param_3)

{
  char *_Dst;
  char *pcVar1;
  
  *(undefined4 *)(param_1_00 + 0x3c) = 0;
  *(undefined4 *)(param_1_00 + 0x40) = param_3;
  if ((param_2 != 0) && (((byte)param_3 & 6) != 6)) {
    _Dst = std::_Allocate<char>(param_2,(char *)0x0);
    _memcpy_s(_Dst,param_2,param_1,param_2);
    *(char **)(param_1_00 + 0x3c) = _Dst + param_2;
    if ((*(byte *)(param_1_00 + 0x40) & 4) == 0) {
      **(char ***)(param_1_00 + 0x10) = _Dst;
      **(char ***)(param_1_00 + 0x20) = _Dst;
      **(uint **)(param_1_00 + 0x30) = param_2;
    }
    if ((*(uint *)(param_1_00 + 0x40) & 2) == 0) {
      pcVar1 = _Dst + param_2;
      if ((*(uint *)(param_1_00 + 0x40) & 0x10) == 0) {
        pcVar1 = _Dst;
      }
      **(char ***)(param_1_00 + 0x14) = _Dst;
      **(char ***)(param_1_00 + 0x24) = pcVar1;
      **(char ***)(param_1_00 + 0x34) = _Dst + (param_2 - (int)pcVar1);
      if (**(int **)(param_1_00 + 0x20) == 0) {
        **(char ***)(param_1_00 + 0x10) = _Dst;
        **(undefined4 **)(param_1_00 + 0x20) = 0;
        **(char ***)(param_1_00 + 0x30) = _Dst;
      }
    }
    *(uint *)(param_1_00 + 0x40) = *(uint *)(param_1_00 + 0x40) | 1;
  }
  return;
}



uint FUN_004238e0(byte param_1)

{
  uint uVar1;
  
  uVar1 = 0;
  if ((param_1 & 1) == 0) {
    uVar1 = 4;
  }
  if ((param_1 & 2) == 0) {
    uVar1 = uVar1 | 2;
  }
  if ((param_1 & 8) != 0) {
    uVar1 = uVar1 | 8;
  }
  if ((param_1 & 4) != 0) {
    uVar1 = uVar1 | 0x10;
  }
  return uVar1;
}



undefined4 * __thiscall FUN_00423910(undefined4 *param_1_00,byte param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00c172e8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00422fd0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  uVar1 = 0;
  *param_1_00 = std::basic_stringbuf<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                ::vftable;
  if ((param_1 & 1) == 0) {
    uVar1 = 4;
  }
  if ((param_1 & 2) == 0) {
    uVar1 = uVar1 | 2;
  }
  if ((param_1 & 8) != 0) {
    uVar1 = uVar1 | 8;
  }
  if ((param_1 & 4) != 0) {
    uVar1 = uVar1 | 0x10;
  }
  param_1_00[0x10] = uVar1;
  param_1_00[0xf] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



int * __thiscall FUN_00423990(int *param_1_00,code *param_1)

{
  if (param_1_00 == (int *)0x0) {
    (*param_1)(0);
    return (int *)0x0;
  }
  (*param_1)(*(int *)(*param_1_00 + 4) + (int)param_1_00);
  return param_1_00;
}



int * FUN_004239c0(int *param_1,code **param_2)

{
  if (param_1 == (int *)0x0) {
    (**param_2)(0,param_2[1]);
    return (int *)0x0;
  }
  (**param_2)(*(int *)(*param_1 + 4) + (int)param_1,param_2[1]);
  return param_1;
}



undefined4 * __thiscall FUN_00423a00(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::locale::facet::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall
FUN_00423a20(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  int iVar1;
  undefined auStack_54 [4];
  char local_50 [68];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)auStack_54;
  iVar1 = _sprintf_s(local_50,0x40,"%p",param_6);
  FUN_004251d0(param_1_00,param_1,param_2,param_3,param_4,param_5,local_50,iVar1);
  ___security_check_cookie_4();
  return;
}



void FUN_00423a90(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,
                 undefined4 param_5,double param_6)

{
  int iVar1;
  char *pcVar2;
  int iVar3;
  char cVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  undefined auStack_f4 [39];
  undefined local_cd;
  undefined4 local_cc;
  undefined4 local_c8;
  int local_c4;
  char local_c0;
  char local_bf [7];
  char local_b8 [116];
  uint local_44;
  
  local_44 = DAT_0323f878 ^ (uint)auStack_f4;
  local_cc = param_1;
  iVar1 = *(int *)(param_4 + 0x14);
  local_c4 = param_4;
  if ((iVar1 < 1) && ((*(uint *)(param_4 + 0x10) & 0x2000) == 0)) {
    iVar1 = 6;
  }
  iVar3 = 0x24;
  if (iVar1 < 0x25) {
    iVar3 = iVar1;
  }
  uVar5 = *(uint *)(param_4 + 0x10);
  iVar1 = iVar1 - iVar3;
  uVar6 = 0;
  uVar7 = 0;
  if ((uVar5 & 0x3000) == 0x2000) {
    local_cd = param_6 < 0.0 != NAN(param_6);
    if ((bool)local_cd) {
      param_6 = -param_6;
    }
    if (1e+35 < param_6 != (param_6 == 1e+35)) {
      do {
        if (4999 < uVar6) break;
        param_6 = param_6 / 10000000000.0;
        uVar6 = uVar6 + 10;
      } while (1e+35 < param_6 != (param_6 == 1e+35));
    }
    if (0.0 < param_6 != NAN(param_6)) {
      for (; ((9 < iVar1 && (param_6 <= 1e-35)) && (uVar7 < 5000)); uVar7 = uVar7 + 10) {
        iVar1 = iVar1 + -10;
        param_6 = param_6 * 10000000000.0;
      }
    }
    if ((bool)local_cd) {
      param_6 = -param_6;
    }
  }
  local_c0 = '%';
  pcVar2 = local_bf;
  if ((uVar5 & 0x20) != 0) {
    local_bf[0] = '+';
    pcVar2 = local_bf + 1;
  }
  if ((uVar5 & 0x10) != 0) {
    *pcVar2 = '#';
    pcVar2 = pcVar2 + 1;
  }
  *pcVar2 = '.';
  pcVar2[1] = '*';
  pcVar2[2] = 'L';
  uVar5 = uVar5 & 0x3000;
  if (uVar5 == 0x2000) {
    cVar4 = 'f';
  }
  else if (uVar5 == 0x3000) {
    cVar4 = 'a';
  }
  else {
    cVar4 = (uVar5 != 0x1000) * '\x02' + 'e';
  }
  pcVar2[3] = cVar4;
  pcVar2[4] = '\0';
  iVar3 = _sprintf_s(local_b8,0x6c,&local_c0,iVar3,param_6);
  FUN_00423c60(local_c8,local_cc,param_2,param_3,local_c4,param_5,local_b8,uVar6,uVar7,iVar1,iVar3);
  ___security_check_cookie_4();
  return;
}



void FUN_00423c60(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 int param_5,undefined4 param_6,undefined4 ***param_7,void *param_8,uint param_9,
                 uint param_10,size_t param_11)

{
  char cVar1;
  undefined4 uVar2;
  undefined uVar3;
  uint uVar4;
  undefined4 uVar5;
  int *piVar6;
  undefined4 *puVar7;
  lconv *plVar8;
  void *pvVar9;
  undefined4 ***_Str;
  size_t sVar10;
  uint uVar11;
  int iVar12;
  undefined *puVar13;
  void *pvVar14;
  undefined4 ***pppuVar15;
  void *pvStack_7c;
  char cStack_78;
  undefined uStack_77;
  undefined uStack_76;
  int aiStack_74 [2];
  undefined4 local_6c;
  int local_64;
  undefined4 uStack_60;
  undefined4 local_5c;
  facet *local_58;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_54 [4];
  undefined4 ***apppuStack_50 [4];
  uint uStack_40;
  uint uStack_3c;
  undefined local_38 [4];
  undefined4 ***apppuStack_34 [5];
  uint uStack_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1f6b8;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&pvStack_7c;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_14;
  local_5c = param_2;
  local_64 = param_5;
  uVar5 = FUN_00417498(&local_58);
  local_c = 0;
  piVar6 = (int *)FUN_00424e70(uVar5,uVar4);
  local_c = 0xffffffff;
  local_6c = piVar6;
  if ((local_58 != (facet *)0x0) &&
     (puVar7 = (undefined4 *)std::locale::facet::_Decref(local_58), puVar7 != (undefined4 *)0x0)) {
    (**(code **)*puVar7)(1);
  }
  FUN_0085c060(local_38);
  local_c = 1;
  uVar3 = (**(code **)(*piVar6 + 8))();
  uStack_60 = CONCAT31(uStack_60._1_3_,uVar3);
  uStack_3c = 0xf;
  uStack_40 = 0;
  apppuStack_50[0] = (undefined4 ***)((uint)apppuStack_50[0] & 0xffffff00);
  local_c = CONCAT31(local_c._1_3_,2);
  if ((*(char *)param_7 == '+') || (aiStack_74[0] = 0, *(char *)param_7 == '-')) {
    aiStack_74[0] = 1;
  }
  plVar8 = _localeconv();
  cStack_78 = *plVar8->decimal_point;
  uStack_77 = 0x65;
  uStack_76 = 0;
  pvVar9 = _memchr(param_7,0x65,param_11);
  pvStack_7c = _memchr(param_7,(int)cStack_78,param_11);
  if (pvStack_7c == (void *)0x0) {
    param_10 = 0;
  }
  pppuVar15 = apppuStack_34[0];
  if (uStack_20 < 0x10) {
    pppuVar15 = apppuStack_34;
  }
  if (*(char *)pppuVar15 != '\x7f') {
    pppuVar15 = apppuStack_34[0];
    if (uStack_20 < 0x10) {
      pppuVar15 = apppuStack_34;
    }
    if ('\0' < *(char *)pppuVar15) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                (abStack_54,(char *)param_7,param_11);
      pvVar14 = pvStack_7c;
      if (pvVar9 == (void *)0x0) {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                  (abStack_54,param_10,'0');
        pvVar14 = pvStack_7c;
      }
      else {
        if (pvStack_7c == (void *)0x0) {
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                    (abStack_54,(uint)param_8,'0');
          param_8 = pvVar14;
        }
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
                  (abStack_54,(int)pvVar9 - (int)param_7,param_10,'0');
      }
      if (pvVar14 == (void *)0x0) {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                  (abStack_54,(uint)param_8,'0');
      }
      else {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
                  (abStack_54,((int)pvVar14 - (int)param_7) + 1,param_9,'0');
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
                  (abStack_54,(int)pvVar14 - (int)param_7,(uint)param_8,'0');
        param_9 = 0;
      }
      param_8 = (void *)0x0;
      pppuVar15 = apppuStack_34[0];
      if (uStack_20 < 0x10) {
        pppuVar15 = apppuStack_34;
      }
      _Str = apppuStack_50[0];
      if (uStack_3c < 0x10) {
        _Str = apppuStack_50;
      }
      sVar10 = _strcspn((char *)_Str,&cStack_78);
      cVar1 = *(char *)pppuVar15;
      param_11 = uStack_40;
      while (((uStack_40 = param_11, cVar1 != '\x7f' && ('\0' < cVar1)) &&
             ((uint)(int)cVar1 < sVar10 - aiStack_74[0]))) {
        sVar10 = sVar10 - (int)cVar1;
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
                  (abStack_54,sVar10,1,'\0');
        if ('\0' < *(char *)((int)pppuVar15 + 1)) {
          pppuVar15 = (undefined4 ***)((int)pppuVar15 + 1);
        }
        param_11 = uStack_40;
        cVar1 = *(char *)pppuVar15;
      }
      param_7 = apppuStack_50[0];
      if (uStack_3c < 0x10) {
        param_7 = apppuStack_50;
      }
      param_10 = 0;
    }
  }
  uVar4 = *(uint *)(local_64 + 0x18);
  uVar11 = (int)param_8 + param_11 + param_10 + param_9;
  if (((int)uVar4 < 1) || (uVar4 <= uVar11)) {
    pvStack_7c = (void *)0x0;
  }
  else {
    pvStack_7c = (void *)(uVar4 - uVar11);
  }
  uVar4 = *(uint *)(local_64 + 0x10) & 0x1c0;
  if (uVar4 != 0x40) {
    if (uVar4 == 0x100) {
      if (aiStack_74[0] != 0) {
        puVar7 = (undefined4 *)FUN_00424ff0(param_1,aiStack_74,param_3,param_4,param_7,1);
        param_3 = *puVar7;
        param_4 = puVar7[1];
        param_7 = (undefined4 ***)((int)param_7 + 1);
        param_11 = param_11 - 1;
      }
      puVar7 = (undefined4 *)FUN_00425160(param_1,aiStack_74,param_3,param_4,param_6,pvStack_7c);
      param_3 = *puVar7;
      param_4 = puVar7[1];
    }
    else {
      puVar7 = (undefined4 *)FUN_00425160(param_1,aiStack_74,param_3,param_4,param_6,pvStack_7c);
      param_3 = *puVar7;
      param_4 = puVar7[1];
    }
    pvStack_7c = (void *)0x0;
  }
  pvVar9 = _memchr(param_7,(int)cStack_78,param_11);
  if (pvVar9 != (void *)0x0) {
    iVar12 = ((int)pvVar9 - (int)param_7) + 1;
    puVar7 = (undefined4 *)
             FUN_00425060(param_1,aiStack_74,param_3,param_4,param_7,(int)pvVar9 - (int)param_7,
                          uStack_60);
    puVar7 = (undefined4 *)FUN_00425160(param_1,aiStack_74,*puVar7,puVar7[1],0x30,param_8);
    uVar5 = *puVar7;
    uVar2 = puVar7[1];
    uVar3 = (**(code **)(*local_6c + 4))();
    local_6c = (int *)CONCAT31(local_6c._1_3_,uVar3);
    puVar7 = (undefined4 *)FUN_00425160(param_1,aiStack_74,uVar5,uVar2,local_6c,1);
    puVar7 = (undefined4 *)FUN_00425160(param_1,&local_6c,*puVar7,puVar7[1],0x30,param_9);
    param_3 = *puVar7;
    param_7 = (undefined4 ***)((int)param_7 + iVar12);
    param_11 = param_11 - iVar12;
    param_4 = puVar7[1];
  }
  pvVar9 = _memchr(param_7,0x65,param_11);
  if (pvVar9 != (void *)0x0) {
    iVar12 = ((int)pvVar9 - (int)param_7) + 1;
    puVar7 = (undefined4 *)
             FUN_00425060(param_1,&local_6c,param_3,param_4,param_7,(int)pvVar9 - (int)param_7,
                          uStack_60);
    puVar7 = (undefined4 *)FUN_00425160(param_1,&local_6c,*puVar7,puVar7[1],0x30,param_10);
    param_10 = 0;
    puVar13 = &DAT_00fad9b4;
    if ((*(byte *)(local_64 + 0x10) & 4) == 0) {
      puVar13 = &DAT_00fad9b8;
    }
    puVar7 = (undefined4 *)FUN_00424ff0(param_1,&local_6c,*puVar7,puVar7[1],puVar13,1);
    param_3 = *puVar7;
    param_7 = (undefined4 ***)((int)param_7 + iVar12);
    param_11 = param_11 - iVar12;
    param_4 = puVar7[1];
  }
  puVar7 = (undefined4 *)FUN_00425060(param_1,&local_6c,param_3,param_4,param_7,param_11,uStack_60);
  puVar7 = (undefined4 *)FUN_00425160(param_1,&local_6c,*puVar7,puVar7[1],0x30,param_10);
  uVar5 = *puVar7;
  uVar2 = puVar7[1];
  *(undefined4 *)(local_64 + 0x18) = 0;
  FUN_00425160(param_1,local_5c,uVar5,uVar2,param_6,pvStack_7c);
  if (uStack_3c < 0x10) {
    uStack_3c = 0xf;
    uStack_40 = 0;
    apppuStack_50[0] = (undefined4 ***)((uint)apppuStack_50[0] & 0xffffff00);
    if (uStack_20 < 0x10) {
      ExceptionList = local_14;
      ___security_check_cookie_4();
      return;
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(apppuStack_34[0]);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(apppuStack_50[0]);
}



void FUN_004241f0(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,
                 undefined4 param_5,double param_6)

{
  double dVar1;
  int iVar2;
  char *pcVar3;
  int iVar4;
  char cVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  undefined auStack_f4 [39];
  undefined local_cd;
  undefined4 local_cc;
  undefined4 local_c8;
  int local_c4;
  char local_c0;
  char local_bf [7];
  char local_b8 [116];
  uint local_44;
  
  local_44 = DAT_0323f878 ^ (uint)auStack_f4;
  local_cc = param_1;
  iVar2 = *(int *)(param_4 + 0x14);
  local_c4 = param_4;
  if ((iVar2 < 1) && ((*(uint *)(param_4 + 0x10) & 0x2000) == 0)) {
    iVar2 = 6;
  }
  iVar4 = 0x24;
  if (iVar2 < 0x25) {
    iVar4 = iVar2;
  }
  uVar6 = *(uint *)(param_4 + 0x10);
  iVar2 = iVar2 - iVar4;
  uVar7 = 0;
  uVar8 = 0;
  dVar1 = param_6;
  if (((uVar6 & 0x3000) == 0x2000) &&
     ((NAN(param_6 * 0.5) || NAN(param_6)) == (param_6 * 0.5 == param_6))) {
    if (param_6 < 0.0) {
      dVar1 = -param_6;
    }
    local_cd = param_6 < 0.0;
    if (1e+35 < dVar1 != (dVar1 == 1e+35)) {
      do {
        if (4999 < uVar7) break;
        dVar1 = dVar1 / 10000000000.0;
        uVar7 = uVar7 + 10;
      } while (1e+35 < dVar1 != (dVar1 == 1e+35));
    }
    if (0.0 < dVar1 != NAN(dVar1)) {
      for (; ((9 < iVar2 && (dVar1 <= 1e-35)) && (uVar8 < 5000)); uVar8 = uVar8 + 10) {
        iVar2 = iVar2 + -10;
        dVar1 = dVar1 * 10000000000.0;
      }
    }
    if (param_6 < 0.0) {
      dVar1 = -dVar1;
    }
  }
  local_c0 = '%';
  pcVar3 = local_bf;
  if ((uVar6 & 0x20) != 0) {
    local_bf[0] = '+';
    pcVar3 = local_bf + 1;
  }
  if ((uVar6 & 0x10) != 0) {
    *pcVar3 = '#';
    pcVar3 = pcVar3 + 1;
  }
  *pcVar3 = '.';
  pcVar3[1] = '*';
  uVar6 = uVar6 & 0x3000;
  if (uVar6 == 0x2000) {
    cVar5 = 'f';
  }
  else if (uVar6 == 0x3000) {
    cVar5 = 'a';
  }
  else {
    cVar5 = (uVar6 != 0x1000) * '\x02' + 'e';
  }
  pcVar3[2] = cVar5;
  pcVar3[3] = '\0';
  iVar4 = _sprintf_s(local_b8,0x6c,&local_c0,iVar4,dVar1);
  FUN_00423c60(local_c8,local_cc,param_2,param_3,local_c4,param_5,local_b8,uVar7,uVar8,iVar2,iVar4);
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_004243d0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            int param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char *_Format;
  int iVar1;
  undefined auStack_5c [4];
  undefined local_58 [8];
  char local_50 [68];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)auStack_5c;
  _Format = (char *)FUN_00425480(param_1_00,local_58,&DAT_00fad998,*(undefined4 *)(param_4 + 0x10),
                                 param_6,param_7);
  iVar1 = _sprintf_s(local_50,0x40,_Format);
  FUN_004251d0(param_1_00,param_1,param_2,param_3,param_4,param_5,local_50,iVar1);
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00424460(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            int param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char *_Format;
  int iVar1;
  undefined auStack_5c [4];
  undefined local_58 [8];
  char local_50 [68];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)auStack_5c;
  _Format = (char *)FUN_00425480(param_1_00,local_58,&DAT_00fad994,*(undefined4 *)(param_4 + 0x10),
                                 param_6,param_7);
  iVar1 = _sprintf_s(local_50,0x40,_Format);
  FUN_004251d0(param_1_00,param_1,param_2,param_3,param_4,param_5,local_50,iVar1);
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_004244f0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            int param_4,undefined4 param_5,undefined4 param_6)

{
  char *_Format;
  int iVar1;
  undefined auStack_5c [4];
  undefined local_58 [8];
  char local_50 [68];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)auStack_5c;
  _Format = (char *)FUN_00425480(param_1_00,local_58,&DAT_00fad990,*(undefined4 *)(param_4 + 0x10),
                                 param_6);
  iVar1 = _sprintf_s(local_50,0x40,_Format);
  FUN_004251d0(param_1_00,param_1,param_2,param_3,param_4,param_5,local_50,iVar1);
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00424570(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00,param_1,0,0xffffffff);
  return;
}



undefined4 __thiscall FUN_00424590(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0x10))(param_1);
  return param_1;
}



void __thiscall
FUN_004245b0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,
            undefined4 param_5,char param_6)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar5;
  int iVar6;
  undefined4 ****ppppuVar7;
  undefined auStack_6c [4];
  undefined4 local_68;
  facet *local_64 [2];
  undefined local_5c [4];
  undefined4 local_58;
  uint local_44;
  undefined local_40 [8];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_38 [4];
  undefined4 ****local_34 [4];
  uint local_24;
  uint local_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1f670;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_6c;
  ExceptionList = &local_14;
  local_68 = param_1;
  if ((*(uint *)(param_4 + 0x10) & 0x4000) == 0) {
    (**(code **)(*param_1_00 + 0x1c))
              (param_1,param_2,param_3,param_4,param_5,param_6,DAT_0323f878 ^ (uint)&stack0xffffff88
              );
  }
  else {
    uVar3 = FUN_00417498(local_64);
    local_c = 0;
    FUN_00424e70(uVar3);
    local_c = 0xffffffff;
    if ((local_64[0] != (facet *)0x0) &&
       (puVar4 = (undefined4 *)std::locale::facet::_Decref(local_64[0]), puVar4 != (undefined4 *)0x0
       )) {
      (**(code **)*puVar4)(1);
    }
    local_20 = 0xf;
    local_24 = 0;
    local_34[0] = (undefined4 ****)((uint)local_34[0] & 0xffffff00);
    local_c = 1;
    if (param_6 == '\0') {
      pbVar5 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_00424590(local_5c);
      local_c._0_1_ = 3;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (local_38,pbVar5,0,0xffffffff);
    }
    else {
      pbVar5 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_0085c080(local_5c);
      local_c._0_1_ = 2;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (local_38,pbVar5,0,0xffffffff);
    }
    local_c = CONCAT31(local_c._1_3_,1);
    if (0xf < local_44) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_58);
    }
    uVar1 = *(uint *)(param_4 + 0x18);
    if (((int)uVar1 < 1) || (uVar1 <= local_24)) {
      iVar6 = 0;
    }
    else {
      iVar6 = uVar1 - local_24;
    }
    if ((*(uint *)(param_4 + 0x10) & 0x1c0) != 0x40) {
      puVar4 = (undefined4 *)FUN_00425160(param_1_00,local_64,param_2,param_3,param_5,iVar6);
      param_2 = *puVar4;
      param_3 = puVar4[1];
      iVar6 = 0;
    }
    ppppuVar7 = local_34[0];
    if (local_20 < 0x10) {
      ppppuVar7 = local_34;
    }
    puVar4 = (undefined4 *)FUN_00424ff0(param_1_00,local_40,param_2,param_3,ppppuVar7,local_24);
    uVar3 = *puVar4;
    uVar2 = puVar4[1];
    *(undefined4 *)(param_4 + 0x18) = 0;
    FUN_00425160(param_1_00,local_68,uVar3,uVar2,param_5,iVar6);
    if (0xf < local_20) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_34[0]);
    }
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::collate<char>::collate<char>(class std::_Locinfo const &,unsigned int)
//  public: __thiscall std::collate<unsigned short>::collate<unsigned short>(class std::_Locinfo
// const &,unsigned int)
//  public: __thiscall std::collate<wchar_t>::collate<wchar_t>(class std::_Locinfo const &,unsigned
// int)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release

undefined4 * __thiscall collate<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  _Collvec _Var1;
  
  param_1_00[1] = param_2;
  *param_1_00 = std::
                num_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>::
                vftable;
  _Var1 = __Getcoll();
  *(_Collvec *)(param_1_00 + 2) = _Var1;
  return param_1_00;
}



undefined4 FUN_004247f0(int *param_1,locale *param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  bool bVar4;
  _Collvec _Var5;
  undefined local_9c [4];
  undefined4 local_98;
  uint local_84;
  _Locinfo local_80 [116];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1b680;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff50;
  ExceptionList = &local_c;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    puVar2 = (undefined4 *)operator_new(0x10);
    local_4 = 0;
    bVar4 = puVar2 == (undefined4 *)0x0;
    if (bVar4) {
      puVar2 = (undefined4 *)0x0;
    }
    else {
      pbVar3 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_9c);
      local_4 = CONCAT31(local_4._1_3_,1);
      std::_Locinfo::_Locinfo(local_80,pbVar3);
      puVar2[1] = 0;
      *puVar2 = std::
                num_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>::
                vftable;
      _Var5 = __Getcoll();
      *(_Collvec *)(puVar2 + 2) = _Var5;
    }
    local_4 = 2;
    *param_1 = (int)puVar2;
    if ((!bVar4) && (std::_Locinfo::~_Locinfo(local_80), 0xf < local_84)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_98,uVar1);
    }
  }
  ExceptionList = local_c;
  return 4;
}



facet * FUN_00424900(int *param_1)

{
  facet *pfVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  facet *pfVar5;
  facet *local_24;
  _Lockit local_20 [4];
  _Lockit local_1c [4];
  bad_cast local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1f628;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  std::_Lockit::_Lockit(local_1c,0);
  pfVar1 = DAT_032ef6d8;
  local_4 = 0;
  local_24 = DAT_032ef6d8;
  if (DAT_032f11bc == 0) {
    std::_Lockit::_Lockit(local_20,0);
    if (DAT_032f11bc == 0) {
      DAT_032bc818 = DAT_032bc818 + 1;
      DAT_032f11bc = DAT_032bc818;
    }
    FUN_00823810(uVar3);
  }
  uVar2 = DAT_032f11bc;
  iVar4 = *param_1;
  if (DAT_032f11bc < *(uint *)(iVar4 + 0xc)) {
    pfVar5 = *(facet **)(*(int *)(iVar4 + 8) + DAT_032f11bc * 4);
    if (pfVar5 == (facet *)0x0) goto LAB_00424994;
LAB_004249b2:
    if (pfVar5 != (facet *)0x0) goto LAB_00424a08;
  }
  else {
    pfVar5 = (facet *)0x0;
LAB_00424994:
    if (*(char *)(iVar4 + 0x14) == '\0') goto LAB_004249b2;
    iVar4 = FUN_008238c4();
    if (uVar2 < *(uint *)(iVar4 + 0xc)) {
      pfVar5 = *(facet **)(*(int *)(iVar4 + 8) + uVar2 * 4);
      goto LAB_004249b2;
    }
  }
  pfVar5 = pfVar1;
  if (pfVar1 == (facet *)0x0) {
    iVar4 = FUN_004247f0(&local_24,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_18,"bad cast");
      __CxxThrowException_8(local_18,&DAT_03115570);
    }
    pfVar5 = local_24;
    DAT_032ef6d8 = local_24;
    std::locale::facet::_Incref(local_24);
    std::locale::facet::facet_Register(pfVar5);
  }
LAB_00424a08:
  local_4 = 0xffffffff;
  FUN_00823810(uVar3);
  ExceptionList = local_c;
  return pfVar5;
}



undefined4 * __thiscall FUN_00424a30(undefined4 *param_1,byte param_2)

{
  *param_1 = std::numpunct<char>::vftable;
  FUN_00a3f66c(param_1[2]);
  FUN_00a3f66c(param_1[4]);
  FUN_00a3f66c(param_1[5]);
  *param_1 = std::locale::facet::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined __fastcall FUN_00424a80(int param_1)

{
  return *(undefined *)(param_1 + 0xc);
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00424a90(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  char cVar1;
  char *pcVar2;
  char *pcVar3;
  
  pcVar2 = *(char **)(param_1_00 + 0x10);
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  pcVar3 = pcVar2;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,pcVar2,(int)pcVar3 - (int)(pcVar2 + 1));
  return param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00424ae0(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  char cVar1;
  char *pcVar2;
  char *pcVar3;
  
  pcVar2 = *(char **)(param_1_00 + 0x14);
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  pcVar3 = pcVar2;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,pcVar2,(int)pcVar3 - (int)(pcVar2 + 1));
  return param_1;
}



void __fastcall FUN_00424b30(int param_1)

{
  FUN_00a3f66c(*(undefined4 *)(param_1 + 8));
  FUN_00a3f66c(*(undefined4 *)(param_1 + 0x10));
  FUN_00a3f66c(*(undefined4 *)(param_1 + 0x14));
  return;
}



_Collvec __thiscall FUN_00424b60(int param_1_00,undefined4 param_1,char param_2)

{
  char cVar1;
  undefined **ppuVar2;
  lconv *plVar3;
  char *pcVar4;
  char *pcVar5;
  undefined *puVar6;
  undefined **ppuVar7;
  char *pcVar8;
  undefined *puVar9;
  char *pcVar10;
  undefined1 *puVar11;
  undefined **ppuVar12;
  _Collvec _Var13;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c0fcf0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  plVar3 = _localeconv();
  *(undefined4 *)(param_1_00 + 8) = 0;
  *(undefined4 *)(param_1_00 + 0x10) = 0;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  local_8 = 0;
  __Getcoll();
  pcVar10 = plVar3->grouping;
  pcVar4 = pcVar10;
  do {
    cVar1 = *pcVar4;
    pcVar4 = pcVar4 + 1;
  } while (cVar1 != '\0');
  pcVar4 = pcVar4 + (1 - (int)(pcVar10 + 1));
  pcVar5 = (char *)FUN_00823c23(pcVar4);
  pcVar8 = pcVar5;
  for (; pcVar4 != (char *)0x0; pcVar4 = pcVar4 + -1) {
    *pcVar8 = *pcVar10;
    pcVar8 = pcVar8 + 1;
    pcVar10 = pcVar10 + 1;
  }
  *(char **)(param_1_00 + 8) = pcVar5;
  __Getcoll();
  pcVar10 = "false";
  pcVar4 = "false";
  do {
    pcVar8 = pcVar4;
    pcVar4 = pcVar8 + 1;
  } while (*pcVar8 != '\0');
  pcVar8 = pcVar8 + -0xfad85f;
  pcVar5 = (char *)FUN_00823c23(pcVar8);
  pcVar4 = pcVar5;
  for (; pcVar8 != (char *)0x0; pcVar8 = pcVar8 + -1) {
    *pcVar4 = *pcVar10;
    pcVar4 = pcVar4 + 1;
    pcVar10 = pcVar10 + 1;
  }
  *(char **)(param_1_00 + 0x10) = pcVar5;
  __Getcoll();
  puVar11 = &DAT_00fad868;
  pcVar4 = "true";
  do {
    pcVar10 = pcVar4;
    pcVar4 = pcVar10 + 1;
  } while (*pcVar10 != '\0');
  pcVar10 = pcVar10 + -0xfad867;
  puVar6 = (undefined *)FUN_00823c23(pcVar10);
  puVar9 = puVar6;
  for (; pcVar10 != (char *)0x0; pcVar10 = pcVar10 + -1) {
    *puVar9 = *puVar11;
    puVar9 = puVar9 + 1;
    puVar11 = puVar11 + 1;
  }
  *(undefined **)(param_1_00 + 0x14) = puVar6;
  local_8 = 0xffffffff;
  __Getcoll();
  *(char *)(param_1_00 + 0xc) = *plVar3->decimal_point;
  _Var13 = __Getcoll();
  cVar1 = *plVar3->thousands_sep;
  _Var13._Page._1_3_ = _Var13._Page._1_3_;
  _Var13._Page._0_1_ = cVar1;
  _Var13._LocaleName = (wchar_t *)plVar3->thousands_sep;
  *(char *)(param_1_00 + 0xd) = cVar1;
  if (param_2 != '\0') {
    __Getcoll();
    ppuVar12 = &PTR_02bd3fc0;
    ppuVar2 = &PTR_02bd3fc0;
    do {
      ppuVar7 = ppuVar2;
      ppuVar2 = (undefined **)((int)ppuVar7 + 1);
    } while (*(char *)ppuVar7 != '\0');
    pcVar4 = (char *)((int)ppuVar7 + -0x2bd3fbf);
    puVar6 = (undefined *)FUN_00823c23(pcVar4);
    puVar9 = puVar6;
    for (; pcVar4 != (char *)0x0; pcVar4 = pcVar4 + -1) {
      *puVar9 = *(undefined *)ppuVar12;
      puVar9 = puVar9 + 1;
      ppuVar12 = (undefined **)((int)ppuVar12 + 1);
    }
    *(undefined **)(param_1_00 + 8) = puVar6;
    __Getcoll();
    *(undefined *)(param_1_00 + 0xc) = 0x2e;
    _Var13 = __Getcoll();
    *(undefined *)(param_1_00 + 0xd) = 0x2c;
  }
  ExceptionList = local_10;
  return _Var13;
}



void Catch_All_00424cd7(void)

{
  code *pcVar1;
  
  FUN_00424b30();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall
FUN_00424cf0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc2518;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = param_2;
  local_4 = 0;
  *param_1_00 = std::numpunct<char>::vftable;
  FUN_00424b60(param_1,param_3);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_00424d60(int *param_1,locale *param_2)

{
  uint uVar1;
  void *pvVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  undefined4 uVar4;
  int iVar5;
  undefined local_9c [4];
  undefined4 local_98;
  uint local_84;
  _Locinfo local_80 [116];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1b62f;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff50;
  ExceptionList = &local_c;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar2 = operator_new(0x18);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      iVar5 = 0;
    }
    else {
      pbVar3 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_9c);
      local_4 = CONCAT31(local_4._1_3_,1);
      uVar4 = std::_Locinfo::_Locinfo(local_80,pbVar3);
      local_4 = 2;
      iVar5 = FUN_00424cf0(uVar4,0,1);
    }
    *param_1 = iVar5;
    local_4 = 3;
    if ((pvVar2 != (void *)0x0) && (std::_Locinfo::~_Locinfo(local_80), 0xf < local_84)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_98,uVar1);
    }
  }
  ExceptionList = local_c;
  return 4;
}



facet * FUN_00424e70(int *param_1)

{
  facet *pfVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  facet *pfVar5;
  facet *local_24;
  _Lockit local_20 [4];
  _Lockit local_1c [4];
  bad_cast local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1f5f8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  std::_Lockit::_Lockit(local_1c,0);
  pfVar1 = DAT_032ef6dc;
  local_4 = 0;
  local_24 = DAT_032ef6dc;
  if (DAT_032f11c0 == 0) {
    std::_Lockit::_Lockit(local_20,0);
    if (DAT_032f11c0 == 0) {
      DAT_032bc818 = DAT_032bc818 + 1;
      DAT_032f11c0 = DAT_032bc818;
    }
    FUN_00823810(uVar3);
  }
  uVar2 = DAT_032f11c0;
  iVar4 = *param_1;
  if (DAT_032f11c0 < *(uint *)(iVar4 + 0xc)) {
    pfVar5 = *(facet **)(*(int *)(iVar4 + 8) + DAT_032f11c0 * 4);
    if (pfVar5 == (facet *)0x0) goto LAB_00424f04;
LAB_00424f22:
    if (pfVar5 != (facet *)0x0) goto LAB_00424f78;
  }
  else {
    pfVar5 = (facet *)0x0;
LAB_00424f04:
    if (*(char *)(iVar4 + 0x14) == '\0') goto LAB_00424f22;
    iVar4 = FUN_008238c4();
    if (uVar2 < *(uint *)(iVar4 + 0xc)) {
      pfVar5 = *(facet **)(*(int *)(iVar4 + 8) + uVar2 * 4);
      goto LAB_00424f22;
    }
  }
  pfVar5 = pfVar1;
  if (pfVar1 == (facet *)0x0) {
    iVar4 = FUN_00424d60(&local_24,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_18,"bad cast");
      __CxxThrowException_8(local_18,&DAT_03115570);
    }
    pfVar5 = local_24;
    DAT_032ef6dc = local_24;
    std::locale::facet::_Incref(local_24);
    std::locale::facet::facet_Register(pfVar5);
  }
LAB_00424f78:
  local_4 = 0xffffffff;
  FUN_00823810(uVar3);
  ExceptionList = local_c;
  return pfVar5;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00424fa0(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  char cVar1;
  char *pcVar2;
  char *pcVar3;
  
  pcVar2 = *(char **)(param_1_00 + 8);
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  pcVar3 = pcVar2;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,pcVar2,(int)pcVar3 - (int)(pcVar2 + 1));
  return param_1;
}



void FUN_00424ff0(undefined4 param_1,undefined4 *param_2,undefined4 param_3,int *param_4,
                 byte *param_5,int param_6)

{
  byte bVar1;
  int *piVar2;
  byte *pbVar3;
  uint uVar4;
  
  if (param_6 != 0) {
    do {
      if (param_4 == (int *)0x0) {
LAB_00425042:
        param_3 = CONCAT31(param_3._1_3_,1);
      }
      else {
        bVar1 = *param_5;
        if ((*(int *)param_4[9] == 0) || (piVar2 = (int *)param_4[0xd], *piVar2 < 1)) {
          uVar4 = (**(code **)(*param_4 + 4))(bVar1);
        }
        else {
          *piVar2 = *piVar2 + -1;
          pbVar3 = *(byte **)param_4[9];
          *(byte **)param_4[9] = pbVar3 + 1;
          *pbVar3 = bVar1;
          uVar4 = (uint)bVar1;
        }
        if (uVar4 == 0xffffffff) goto LAB_00425042;
      }
      param_6 = param_6 + -1;
      param_5 = param_5 + 1;
    } while (param_6 != 0);
  }
  *param_2 = param_3;
  param_2[1] = param_4;
  return;
}



undefined4 *
FUN_00425060(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4,
            void *param_5,size_t param_6,undefined4 param_7)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  size_t sVar4;
  undefined local_18 [8];
  undefined local_10 [12];
  
  while( true ) {
    pvVar2 = _memchr(param_5,0,param_6);
    sVar4 = param_6;
    if (pvVar2 != (void *)0x0) {
      sVar4 = (int)pvVar2 - (int)param_5;
    }
    puVar3 = (undefined4 *)FUN_00424ff0(param_1,local_18,param_3,param_4,param_5,sVar4);
    param_3 = *puVar3;
    param_4 = puVar3[1];
    if (param_6 - sVar4 == 0) break;
    if ((char)param_7 != '\0') {
      puVar3 = (undefined4 *)FUN_00425160(param_1,local_10,*puVar3,puVar3[1],param_7,1);
      param_3 = *puVar3;
      param_4 = puVar3[1];
    }
    param_5 = (void *)((int)param_5 + sVar4 + 1);
    param_6 = (param_6 - sVar4) - 1;
  }
  uVar1 = *puVar3;
  param_2[1] = puVar3[1];
  *param_2 = uVar1;
  return param_2;
}



undefined __fastcall FUN_00425100(int param_1)

{
  return *(undefined *)(param_1 + 0xd);
}



undefined * __thiscall FUN_00425110(undefined *param_1_00,byte param_1)

{
  int *piVar1;
  int *piVar2;
  byte *pbVar3;
  uint uVar4;
  
  piVar1 = *(int **)(param_1_00 + 4);
  if (piVar1 != (int *)0x0) {
    if ((*(int *)piVar1[9] == 0) || (piVar2 = (int *)piVar1[0xd], *piVar2 < 1)) {
      uVar4 = (**(code **)(*piVar1 + 4))(param_1);
    }
    else {
      *piVar2 = *piVar2 + -1;
      pbVar3 = *(byte **)piVar1[9];
      *(byte **)piVar1[9] = pbVar3 + 1;
      *pbVar3 = param_1;
      uVar4 = (uint)param_1;
    }
    if (uVar4 != 0xffffffff) {
      return param_1_00;
    }
  }
  *param_1_00 = 1;
  return param_1_00;
}



void FUN_00425160(undefined4 param_1,undefined4 *param_2,undefined4 param_3,int *param_4,
                 byte param_5,int param_6)

{
  int *piVar1;
  byte *pbVar2;
  uint uVar3;
  
  if (param_6 != 0) {
    do {
      if (param_4 == (int *)0x0) {
LAB_004251af:
        param_3 = CONCAT31(param_3._1_3_,1);
      }
      else {
        if ((*(int *)param_4[9] == 0) || (piVar1 = (int *)param_4[0xd], *piVar1 < 1)) {
          uVar3 = (**(code **)(*param_4 + 4))(param_5);
        }
        else {
          *piVar1 = *piVar1 + -1;
          pbVar2 = *(byte **)param_4[9];
          *(byte **)param_4[9] = pbVar2 + 1;
          *pbVar2 = param_5;
          uVar3 = (uint)param_5;
        }
        if (uVar3 == 0xffffffff) goto LAB_004251af;
      }
      param_6 = param_6 + -1;
    } while (param_6 != 0);
  }
  *param_2 = param_3;
  param_2[1] = param_4;
  return;
}



void FUN_004251d0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 int param_5,undefined4 param_6,char *param_7,uint param_8)

{
  rsize_t _DstSize;
  char *_Src;
  char cVar1;
  undefined4 uVar2;
  undefined uVar3;
  uint uVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  undefined4 ****ppppuVar7;
  int iVar8;
  undefined auStack_5c [4];
  char *local_58;
  int local_54;
  undefined4 ****local_50 [2];
  int local_48;
  undefined4 local_44;
  undefined4 local_40;
  facet *local_3c;
  undefined local_38 [4];
  undefined4 ****local_34 [5];
  uint local_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c23570;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_5c;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_14;
  local_40 = param_2;
  local_48 = param_5;
  local_58 = param_7;
  uVar5 = FUN_00417498(&local_3c);
  local_c = 0;
  local_44 = (int *)FUN_00424e70(uVar5,uVar4);
  local_c = 0xffffffff;
  if ((local_3c != (facet *)0x0) &&
     (puVar6 = (undefined4 *)std::locale::facet::_Decref(local_3c), puVar6 != (undefined4 *)0x0)) {
    (**(code **)*puVar6)(1);
  }
  FUN_0085c060(local_38);
  local_c = 1;
  cVar1 = *param_7;
  if ((cVar1 == '+') || (cVar1 == '-')) {
    local_54 = 1;
  }
  else if ((cVar1 == '0') && ((param_7[1] == 'x' || (param_7[1] == 'X')))) {
    local_54 = 2;
  }
  else {
    local_54 = 0;
  }
  ppppuVar7 = local_34[0];
  if (local_20 < 0x10) {
    ppppuVar7 = local_34;
  }
  if (*(char *)ppppuVar7 != '\x7f') {
    ppppuVar7 = local_34[0];
    if (local_20 < 0x10) {
      ppppuVar7 = local_34;
    }
    if ('\0' < *(char *)ppppuVar7) {
      local_50[0] = local_34[0];
      if (local_20 < 0x10) {
        local_50[0] = local_34;
      }
      cVar1 = *(char *)local_50[0];
      param_5 = local_48;
      uVar4 = param_8;
      while (((local_48 = param_5, cVar1 != '\x7f' && ('\0' < cVar1)) &&
             ((uint)(int)cVar1 < uVar4 - local_54))) {
        uVar4 = uVar4 - (int)cVar1;
        _DstSize = (param_8 - uVar4) + 1;
        _Src = local_58 + uVar4;
        _memmove_s(local_58 + uVar4 + 1,_DstSize,_Src,_DstSize);
        *_Src = '\0';
        param_8 = param_8 + 1;
        if ('\0' < *(char *)((int)local_50[0] + 1)) {
          local_50[0] = (undefined4 ****)((int)local_50[0] + 1);
        }
        param_5 = local_48;
        cVar1 = *(char *)local_50[0];
      }
    }
  }
  uVar4 = *(uint *)(param_5 + 0x18);
  if (((int)uVar4 < 1) || (uVar4 <= param_8)) {
    iVar8 = 0;
  }
  else {
    iVar8 = uVar4 - param_8;
  }
  uVar4 = *(uint *)(param_5 + 0x10) & 0x1c0;
  if (uVar4 != 0x40) {
    if (uVar4 == 0x100) {
      puVar6 = (undefined4 *)FUN_00424ff0(param_1,local_50,param_3,param_4,local_58,local_54);
      local_58 = local_58 + local_54;
      param_8 = param_8 - local_54;
      puVar6 = (undefined4 *)FUN_00425160(param_1,local_50,*puVar6,puVar6[1],param_6,iVar8);
      param_3 = *puVar6;
      param_4 = puVar6[1];
    }
    else {
      puVar6 = (undefined4 *)FUN_00425160(param_1,local_50,param_3,param_4,param_6,iVar8);
      param_3 = *puVar6;
      param_4 = puVar6[1];
    }
    iVar8 = 0;
  }
  uVar3 = (**(code **)(*local_44 + 8))();
  local_44 = (int *)CONCAT31(local_44._1_3_,uVar3);
  puVar6 = (undefined4 *)FUN_00425060(param_1,local_50,param_3,param_4,local_58,param_8,local_44);
  uVar5 = *puVar6;
  uVar2 = puVar6[1];
  *(undefined4 *)(local_48 + 0x18) = 0;
  FUN_00425160(param_1,local_40,uVar5,uVar2,param_6,iVar8);
  if (0xf < local_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_34[0]);
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void FUN_00425480(undefined4 param_1,undefined *param_2,char *param_3,uint param_4)

{
  char *pcVar1;
  byte *pbVar2;
  
  *param_2 = 0x25;
  pcVar1 = param_2 + 1;
  if ((param_4 & 0x20) != 0) {
    *pcVar1 = '+';
    pcVar1 = param_2 + 2;
  }
  if ((param_4 & 8) != 0) {
    *pcVar1 = '#';
    pcVar1 = pcVar1 + 1;
  }
  if (*param_3 == 'L') {
    *pcVar1 = 'I';
    pcVar1[1] = '6';
    pcVar1 = pcVar1 + 2;
    *pcVar1 = '4';
  }
  else {
    *pcVar1 = *param_3;
  }
  pbVar2 = (byte *)(pcVar1 + 1);
  if ((param_4 & 0xe00) == 0x400) {
    *pbVar2 = 0x6f;
    pcVar1[2] = '\0';
    return;
  }
  if ((param_4 & 0xe00) != 0x800) {
    *pbVar2 = param_3[1];
    pcVar1[2] = '\0';
    return;
  }
  *pbVar2 = ~((char)param_4 * '\b') & 0x20U | 0x58;
  pcVar1[2] = '\0';
  return;
}



void __thiscall
FUN_00425510(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            int param_4,undefined4 param_5,undefined4 param_6)

{
  char *_Format;
  int iVar1;
  undefined auStack_5c [4];
  undefined local_58 [8];
  char local_50 [68];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)auStack_5c;
  _Format = (char *)FUN_00425480(param_1_00,local_58,&DAT_00fad98c,*(undefined4 *)(param_4 + 0x10),
                                 param_6);
  iVar1 = _sprintf_s(local_50,0x40,_Format);
  FUN_004251d0(param_1_00,param_1,param_2,param_3,param_4,param_5,local_50,iVar1);
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall
FUN_00425590(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  (**(code **)(*param_1_00 + 0x1c))(param_1,param_2,param_3,param_4,param_5,param_6);
  return param_1;
}



int * __thiscall FUN_004255c0(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  char *pcVar4;
  int *piVar5;
  uint uVar6;
  uint uStack_48;
  uint local_38 [3];
  char local_2c;
  undefined4 local_28;
  facet *local_24;
  uint local_20;
  int *local_1c;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c2d380;
  local_10 = ExceptionList;
  uStack_48 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_48;
  ExceptionList = &local_10;
  local_20 = 0;
  local_1c = param_1_00;
  FUN_00425790(param_1_00);
  local_8 = 0;
  if (local_2c != '\0') {
    uVar2 = FUN_00417498(&local_24);
    local_8._0_1_ = 1;
    FUN_00424900(uVar2);
    local_8._0_1_ = 0;
    if (local_24 != (facet *)0x0) {
      puVar3 = (undefined4 *)std::locale::facet::_Decref(local_24);
      if (puVar3 != (undefined4 *)0x0) {
        (**(code **)*puVar3)(1);
      }
    }
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar1 = *(int *)(*param_1_00 + 4);
    local_28 = CONCAT31(local_28._1_3_,*(undefined *)(iVar1 + 0x30 + (int)param_1_00));
    local_38[0] = local_38[0] & 0xffffff00;
    pcVar4 = (char *)FUN_00425590(local_38,local_38[0],
                                  *(undefined4 *)((int)param_1_00 + iVar1 + 0x28),
                                  *(int *)(*param_1_00 + 4) + (int)param_1_00,local_28,param_1);
    if (*pcVar4 != '\0') {
      local_20 = 4;
    }
    local_8 = 0;
    piVar5 = (int *)FUN_004256bc();
    return piVar5;
  }
  if (local_20 != 0) {
    uVar6 = *(uint *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 8) | local_20;
    if (*(int *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 0x28) == 0) {
      uVar6 = uVar6 | 4;
    }
    FUN_00417a55(uVar6,0);
  }
  local_8 = 0xffffffff;
  FUN_00425900();
  ExceptionList = local_10;
  return param_1_00;
}



undefined * Catch_All_0042568c(void)

{
  int unaff_EBP;
  
  FUN_00417a55(*(uint *)((int)*(int **)(unaff_EBP + -0x18) +
                        *(int *)(**(int **)(unaff_EBP + -0x18) + 4) + 8) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_004256b7;
}



void FUN_004256bc(void)

{
  uint uVar1;
  uint unaff_EBX;
  int unaff_EBP;
  int *unaff_ESI;
  
  if (*(uint *)(unaff_EBP + -0x1c) != unaff_EBX) {
    uVar1 = *(uint *)((int)unaff_ESI + *(int *)(*unaff_ESI + 4) + 8) | *(uint *)(unaff_EBP + -0x1c);
    if (*(uint *)((int)unaff_ESI + *(int *)(*unaff_ESI + 4) + 0x28) == unaff_EBX) {
      uVar1 = uVar1 | 4;
    }
    FUN_00417a55(uVar1,unaff_EBX);
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00425900();
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



// Library Function - Single Match
//  public: char const & __thiscall std::_String_const_iterator<char,struct
// std::char_traits<char>,class std::allocator<char> >::operator*(void)const 
// 
// Library: Visual Studio 2008 Release

char * __thiscall
std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
operator*(_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
          *this)

{
  int iVar1;
  int iVar2;
  
  if (*(int *)this != -4) {
    if (*(int *)this == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *(int *)this;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar2 = iVar1 + 4;
    }
    else {
      iVar2 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar2) <= *(uint *)(this + 4)) {
      FUN_00a3fb10();
    }
  }
  return *(char **)(this + 4);
}



undefined4 * __thiscall FUN_00425750(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00425780(undefined4 *param_1)

{
  *param_1 = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)param_1);
  return;
}



int ** __thiscall FUN_00425790(int **param_1_00,int *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c23538;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  if (*(int *)(*(int *)(*param_1 + 4) + 0x28 + (int)param_1) != 0) {
    FUN_00823c64(uVar1);
  }
  local_4 = 0;
  if ((*(int *)((int)param_1 + *(int *)(*param_1 + 4) + 8) == 0) &&
     (*(int *)((int)param_1 + *(int *)(*param_1 + 4) + 0x2c) != 0)) {
    FUN_00425840();
  }
  *(bool *)(param_1_00 + 1) = *(int *)(*(int *)(*param_1 + 4) + 8 + (int)param_1) == 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00425820(int **param_1)

{
  if (*(int *)(*(int *)(**param_1 + 4) + 0x28 + (int)*param_1) != 0) {
    FUN_00823c6d();
    return;
  }
  return;
}



int * __fastcall FUN_00425840(int *param_1)

{
  int iVar1;
  uint uVar2;
  
  uVar2 = 0;
  if ((*(byte *)((int)param_1 + *(int *)(*param_1 + 4) + 8) & 6) == 0) {
    iVar1 = (**(code **)(**(int **)((int)param_1 + *(int *)(*param_1 + 4) + 0x28) + 0x30))();
    if (iVar1 == -1) {
      uVar2 = 4;
    }
  }
  if (uVar2 != 0) {
    uVar2 = *(uint *)((int)param_1 + *(int *)(*param_1 + 4) + 8) | uVar2;
    if (*(int *)((int)param_1 + *(int *)(*param_1 + 4) + 0x28) == 0) {
      uVar2 = uVar2 | 4;
    }
    FUN_00417a55(uVar2,0);
  }
  return param_1;
}



void __fastcall FUN_004258a0(int *param_1)

{
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c28310;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  local_8 = 0;
  if ((*(byte *)(*(int *)(*param_1 + 4) + 0x10 + (int)param_1) & 2) != 0) {
    FUN_00425840();
  }
  ExceptionList = local_10;
  return;
}



undefined4 Catch_All_004258f3(void)

{
  return 0x4258e1;
}



void __fastcall FUN_00425900(int **param_1)

{
  char cVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2d348;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  cVar1 = thunk_FUN_00a45751(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  if (cVar1 == '\0') {
    FUN_004258a0();
  }
  local_4 = 0xffffffff;
  if (*(int *)(*(int *)(**param_1 + 4) + 0x28 + (int)*param_1) != 0) {
    FUN_00823c6d();
  }
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_00425980(int param_1)

{
  if (**(int **)(param_1 + 0x24) != 0) {
    return **(undefined4 **)(param_1 + 0x34);
  }
  return 0;
}



uint __thiscall FUN_004259a0(int *param_1_00,byte param_1)

{
  int *piVar1;
  byte *pbVar2;
  uint uVar3;
  
  if ((*(int *)param_1_00[9] != 0) && (piVar1 = (int *)param_1_00[0xd], 0 < *piVar1)) {
    *piVar1 = *piVar1 + -1;
    pbVar2 = *(byte **)param_1_00[9];
    *(byte **)param_1_00[9] = pbVar2 + 1;
    *pbVar2 = param_1;
    return (uint)param_1;
  }
                    // WARNING: Could not recover jumptable at 0x004259d8. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar3 = (**(code **)(*param_1_00 + 4))();
  return uVar3;
}



void __thiscall FUN_004259e0(int param_1_00,uint param_1,undefined4 param_2)

{
  if (param_1 != 0) {
    param_1 = *(uint *)(param_1_00 + 8) | param_1;
    if (*(int *)(param_1_00 + 0x28) == 0) {
      param_1 = param_1 | 4;
    }
    FUN_00417a55(param_1,param_2);
  }
  return;
}



int * FUN_00425a10(int *param_1,byte param_2)

{
  byte bVar1;
  int *piVar2;
  int *piVar3;
  byte *pbVar4;
  uint uVar5;
  uint uVar6;
  char local_20;
  int local_18;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c31ed8;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  uVar6 = 0;
  FUN_00425790(param_1);
  if (local_20 != '\0') {
    local_18 = *(int *)(*(int *)(*param_1 + 4) + 0x18 + (int)param_1);
    if (local_18 < 2) {
      local_18 = 0;
    }
    else {
      local_18 = local_18 + -1;
    }
    local_8 = 1;
    if ((*(uint *)((int)param_1 + *(int *)(*param_1 + 4) + 0x10) & 0x1c0) == 0x40) {
LAB_00425adc:
      piVar2 = *(int **)(*(int *)(*param_1 + 4) + 0x28 + (int)param_1);
      if ((*(int *)piVar2[9] == 0) || (piVar3 = (int *)piVar2[0xd], *piVar3 < 1)) {
        uVar5 = (**(code **)(*piVar2 + 4))(param_2);
      }
      else {
        *piVar3 = *piVar3 + -1;
        pbVar4 = *(byte **)piVar2[9];
        *(byte **)piVar2[9] = pbVar4 + 1;
        *pbVar4 = param_2;
        uVar5 = (uint)param_2;
      }
      if (uVar5 == 0xffffffff) {
        uVar6 = 4;
      }
      for (; (uVar6 == 0 && (0 < local_18)); local_18 = local_18 + -1) {
        bVar1 = *(byte *)(*(int *)(*param_1 + 4) + 0x30 + (int)param_1);
        piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + 4) + 0x28);
        if ((*(int *)piVar2[9] == 0) || (piVar3 = (int *)piVar2[0xd], *piVar3 < 1)) {
          uVar5 = (**(code **)(*piVar2 + 4))(bVar1);
        }
        else {
          *piVar3 = *piVar3 + -1;
          pbVar4 = *(byte **)piVar2[9];
          *(byte **)piVar2[9] = pbVar4 + 1;
          *pbVar4 = bVar1;
          uVar5 = (uint)bVar1;
        }
        if (uVar5 == 0xffffffff) {
          uVar6 = 4;
        }
      }
    }
    else {
      while (uVar6 == 0) {
        if (local_18 < 1) goto LAB_00425adc;
        bVar1 = *(byte *)((int)param_1 + *(int *)(*param_1 + 4) + 0x30);
        piVar2 = *(int **)((int)param_1 + *(int *)(*param_1 + 4) + 0x28);
        if ((*(int *)piVar2[9] == 0) || (piVar3 = (int *)piVar2[0xd], *piVar3 < 1)) {
          uVar5 = (**(code **)(*piVar2 + 4))(bVar1);
        }
        else {
          *piVar3 = *piVar3 + -1;
          pbVar4 = *(byte **)piVar2[9];
          *(byte **)piVar2[9] = pbVar4 + 1;
          *pbVar4 = bVar1;
          uVar5 = (uint)bVar1;
        }
        if (uVar5 == 0xffffffff) {
          uVar6 = 4;
        }
        local_18 = local_18 + -1;
      }
    }
  }
  local_8 = 0;
  *(undefined4 *)((int)param_1 + *(int *)(*param_1 + 4) + 0x18) = 0;
  if (uVar6 != 0) {
    uVar6 = *(uint *)((int)param_1 + *(int *)(*param_1 + 4) + 8) | uVar6;
    if (*(int *)((int)param_1 + *(int *)(*param_1 + 4) + 0x28) == 0) {
      uVar6 = uVar6 | 4;
    }
    FUN_00417a55(uVar6,0);
  }
  local_8 = 0xffffffff;
  FUN_00425900();
  ExceptionList = local_10;
  return param_1;
}



undefined * Catch_All_00425b84(void)

{
  int unaff_EBP;
  
  FUN_00417a55(*(uint *)((int)*(int **)(unaff_EBP + 8) + *(int *)(**(int **)(unaff_EBP + 8) + 4) + 8
                        ) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_00425bb2;
}



int * __thiscall FUN_00425c20(int *param_1_00,undefined4 *param_1,int param_2)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  *param_1_00 = 0;
  if ((param_2 != 0) && (param_1 != (undefined4 *)0x0)) {
    puVar1 = (undefined4 *)(param_2 + 4);
    puVar2 = puVar1;
    if (0xf < *(uint *)(param_2 + 0x18)) {
      puVar2 = (undefined4 *)*puVar1;
    }
    if (puVar2 <= param_1) {
      if (0xf < *(uint *)(param_2 + 0x18)) {
        puVar1 = (undefined4 *)*puVar1;
      }
      if (param_1 <= (undefined4 *)(*(int *)(param_2 + 0x14) + (int)puVar1)) goto LAB_00425c65;
    }
  }
  FUN_00a3fb10();
LAB_00425c65:
  *param_1_00 = param_2;
  param_1_00[1] = (int)param_1;
  return param_1_00;
}



undefined4 __thiscall FUN_00425c80(undefined4 param_1,byte param_2)

{
  FUN_00b9ae90();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_00425ca0(int param_1)

{
  if (0xf < *(uint *)(param_1 + 0x34)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x20));
  }
  *(undefined4 *)(param_1 + 0x34) = 0xf;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined *)(param_1 + 0x20) = 0;
  if (0xf < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined *)(param_1 + 4) = 0;
  return;
}



void FUN_00425cf0(void)

{
  FUN_00425ca0();
  return;
}



void __fastcall FUN_00425d00(int param_1)

{
  if (0xf < *(uint *)(param_1 + 0x70)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x5c));
  }
  *(undefined4 *)(param_1 + 0x70) = 0xf;
  *(undefined4 *)(param_1 + 0x6c) = 0;
  *(undefined *)(param_1 + 0x5c) = 0;
  FUN_00425ca0();
  return;
}



void FUN_00425d30(void)

{
  int unaff_ESI;
  
  if (7 < *(uint *)(unaff_ESI + 0x34)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0x20));
  }
  *(undefined4 *)(unaff_ESI + 0x34) = 7;
  *(undefined4 *)(unaff_ESI + 0x30) = 0;
  *(undefined2 *)(unaff_ESI + 0x20) = 0;
  if (7 < *(uint *)(unaff_ESI + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 4));
  }
  *(undefined4 *)(unaff_ESI + 0x18) = 7;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined2 *)(unaff_ESI + 4) = 0;
  return;
}



void FUN_00425d80(void)

{
  FUN_00425d30();
  return;
}



void FUN_00425d90(void)

{
  int in_EAX;
  
  if (7 < *(uint *)(in_EAX + 0x70)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(in_EAX + 0x5c));
  }
  *(undefined4 *)(in_EAX + 0x70) = 7;
  *(undefined4 *)(in_EAX + 0x6c) = 0;
  *(undefined2 *)(in_EAX + 0x5c) = 0;
  FUN_00425d30();
  return;
}



int FUN_00425dc0(void)

{
  int unaff_ESI;
  uint unaff_EDI;
  
  if ((uint)(*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc) >> 2) <= unaff_EDI) {
    FUN_00a3fb10();
  }
  return *(int *)(unaff_ESI + 0xc) + unaff_EDI * 4;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00425de0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,char *param_1,char *param_2,undefined4 param_3)

{
  char cVar1;
  char *pcVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1f5d3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 0xf;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  param_1_00[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  local_4 = 0;
  *(undefined4 *)(param_1_00 + 0x34) = 0xf;
  *(undefined4 *)(param_1_00 + 0x30) = 0;
  param_1_00[0x20] =
       (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  pcVar2 = param_1;
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00 + 0x1c,param_1,(int)pcVar2 - (int)(param_1 + 1));
  local_4 = CONCAT31(local_4._1_3_,1);
  param_1_00[0x38] =
       (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  param_1_00[0x39] =
       (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  *(undefined4 *)(param_1_00 + 0x3c) = param_3;
  param_1_00[0x40] =
       (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  if (param_2 != (char *)0x0) {
    pcVar2 = param_2;
    do {
      cVar1 = *pcVar2;
      pcVar2 = pcVar2 + 1;
    } while (cVar1 != '\0');
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (param_1_00,param_2,(int)pcVar2 - (int)(param_2 + 1));
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00425e90(int param_1_00,undefined4 param_1)

{
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1b5bb;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00426240(param_1_00 + 0x10);
  FUN_004264a0();
  local_c = 0;
  FUN_004262e0();
  if (0xf < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  FUN_00425ca0();
  ExceptionList = local_14;
  return param_1;
}



undefined4 __thiscall FUN_00425f50(int param_1_00,undefined4 param_1)

{
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1b5bb;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00426240(param_1_00 + 0x10);
  FUN_004264a0();
  local_c = 0;
  FUN_004262e0();
  if (0xf < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  FUN_00425ca0();
  ExceptionList = local_14;
  return param_1;
}



int FUN_00426010(int param_1)

{
  short *psVar1;
  short *psVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c282f3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x34) = 7;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined2 *)(param_1 + 0x20) = 0;
  psVar1 = &DAT_00fae798;
  do {
    psVar2 = psVar1;
    psVar1 = psVar2 + 1;
  } while (*psVar2 != 0);
  FID_conflict_assign(&DAT_00fae798,(int)(psVar2 + -0x7d73cc) >> 1);
  *(undefined *)(param_1 + 0x38) = 0;
  *(undefined *)(param_1 + 0x39) = 0;
  *(undefined4 *)(param_1 + 0x3c) = 0;
  *(undefined *)(param_1 + 0x40) = 0;
  ExceptionList = local_c;
  return param_1;
}



void FUN_004260b0(undefined4 *param_1)

{
  undefined auStack_e4 [68];
  undefined4 uStack_a0;
  undefined4 uStack_9c;
  undefined *puStack_98;
  undefined local_80 [92];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d318;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puStack_98 = (undefined *)param_1[2];
  uStack_9c = param_1[1];
  uStack_a0 = *param_1;
  FUN_00426370(auStack_e4);
  FUN_00426530(local_80);
  local_4 = 0;
  puStack_98 = (undefined *)0x42611f;
  FUN_00426410();
  if (7 < local_10) {
                    // WARNING: Subroutine does not return
    puStack_98 = &UNK_00426133;
    FUN_00a3f6a1();
  }
  local_14 = 0;
  local_10 = 7;
  local_24 = local_24 & 0xffff0000;
  FUN_00425d30();
  ExceptionList = local_c;
  return;
}



void FUN_00426180(int param_1)

{
  undefined auStack_e4 [68];
  undefined4 uStack_a0;
  undefined4 uStack_9c;
  undefined *puStack_98;
  undefined local_80 [92];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d318;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uStack_9c = *(undefined4 *)(param_1 + 0xc);
  uStack_a0 = *(undefined4 *)(param_1 + 8);
  puStack_98 = (undefined *)uStack_a0;
  FUN_00426370(auStack_e4);
  FUN_00426530(local_80);
  local_4 = 0;
  puStack_98 = (undefined *)0x4261ea;
  FUN_00426410();
  if (7 < local_10) {
                    // WARNING: Subroutine does not return
    puStack_98 = &UNK_004261fe;
    FUN_00a3f6a1();
  }
  local_14 = 0;
  local_10 = 7;
  local_24 = local_24 & 0xffff0000;
  FUN_00425d30();
  ExceptionList = local_c;
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00426240(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c172b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 0xf;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  param_1_00[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00,param_1,0,0xffffffff);
  local_4 = 0;
  *(undefined4 *)(param_1_00 + 0x34) = 0xf;
  *(undefined4 *)(param_1_00 + 0x30) = 0;
  param_1_00[0x20] =
       (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00 + 0x1c,param_1 + 0x1c,0,0xffffffff);
  param_1_00[0x38] = param_1[0x38];
  param_1_00[0x39] = param_1[0x39];
  *(undefined4 *)(param_1_00 + 0x3c) = *(undefined4 *)(param_1 + 0x3c);
  param_1_00[0x40] = param_1[0x40];
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_004262e0(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1b588;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00426240(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1_00 + 0x44) = *(undefined4 *)(param_1 + 0x44);
  *(undefined4 *)(param_1_00 + 0x48) = *(undefined4 *)(param_1 + 0x48);
  *(undefined4 *)(param_1_00 + 0x4c) = *(undefined4 *)(param_1 + 0x4c);
  *(undefined4 *)(param_1_00 + 0x50) = *(undefined4 *)(param_1 + 0x50);
  *(undefined *)(param_1_00 + 0x54) = *(undefined *)(param_1 + 0x54);
  *(undefined4 *)(param_1_00 + 0x70) = 0xf;
  *(undefined4 *)(param_1_00 + 0x6c) = 0;
  *(undefined *)(param_1_00 + 0x5c) = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 0x58),
             (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0x58),0,0xffffffff);
  ExceptionList = local_c;
  return param_1_00;
}



int FUN_00426370(int param_1)

{
  int unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c282b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(unaff_EDI,0,0xffffffff);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x34) = 7;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined2 *)(param_1 + 0x20) = 0;
  FID_conflict_assign(unaff_EDI + 0x1c,0,0xffffffff);
  *(undefined *)(param_1 + 0x38) = *(undefined *)(unaff_EDI + 0x38);
  *(undefined *)(param_1 + 0x39) = *(undefined *)(unaff_EDI + 0x39);
  *(undefined4 *)(param_1 + 0x3c) = *(undefined4 *)(unaff_EDI + 0x3c);
  *(undefined *)(param_1 + 0x40) = *(undefined *)(unaff_EDI + 0x40);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00426410(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d2e8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00426370(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_1_00 + 0x44);
  *(undefined4 *)(param_1 + 0x48) = *(undefined4 *)(param_1_00 + 0x48);
  *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1_00 + 0x4c);
  *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(param_1_00 + 0x50);
  *(undefined *)(param_1 + 0x54) = *(undefined *)(param_1_00 + 0x54);
  *(undefined4 *)(param_1 + 0x70) = 7;
  *(undefined4 *)(param_1 + 0x6c) = 0;
  *(undefined2 *)(param_1 + 0x5c) = 0;
  FID_conflict_assign(param_1_00 + 0x58,0,0xffffffff);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_004264a0(int param_1)

{
  uint uVar1;
  undefined4 param_11;
  undefined4 param_12;
  undefined4 param_13;
  undefined4 param_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1b55b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00426240(&stack0x00000004);
  *(undefined4 *)(param_1 + 0x44) = param_11;
  *(undefined4 *)(param_1 + 0x48) = param_12;
  *(undefined4 *)(param_1 + 0x4c) = param_13;
  *(undefined4 *)(param_1 + 0x50) = param_14;
  *(undefined *)(param_1 + 0x54) = 0;
  *(undefined4 *)(param_1 + 0x70) = 0xf;
  *(undefined4 *)(param_1 + 0x6c) = 0;
  *(undefined *)(param_1 + 0x5c) = 0;
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_004265d0(uVar1);
  FUN_00425ca0();
  ExceptionList = local_c;
  return param_1;
}



int FUN_00426530(int param_1)

{
  uint uVar1;
  undefined4 param_11;
  undefined4 param_12;
  undefined4 param_13;
  undefined4 param_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2d2bb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00426370(param_1);
  *(undefined4 *)(param_1 + 0x44) = param_11;
  *(undefined4 *)(param_1 + 0x48) = param_12;
  *(undefined4 *)(param_1 + 0x4c) = param_13;
  *(undefined4 *)(param_1 + 0x50) = param_14;
  *(undefined *)(param_1 + 0x54) = 0;
  *(undefined4 *)(param_1 + 0x70) = 7;
  *(undefined4 *)(param_1 + 0x6c) = 0;
  *(undefined2 *)(param_1 + 0x5c) = 0;
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00426630(uVar1);
  FUN_00425d30();
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_004265d0(int param_1)

{
  int iVar1;
  undefined uVar2;
  
  if (*(char *)(param_1 + 0x54) == '\0') {
    iVar1 = *(int *)(param_1 + 0x44);
    if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *(int *)(param_1 + 0x4c))))) {
      FUN_00a3fb10();
    }
    if (*(int *)(param_1 + 0x48) != *(int *)(param_1 + 0x50)) {
      uVar2 = FUN_00426940(param_1 + 0x44,*(undefined4 *)(param_1 + 0x4c),
                           *(undefined4 *)(param_1 + 0x50),param_1 + 0x58);
      *(undefined *)(param_1 + 0x54) = uVar2;
      return;
    }
    *(undefined *)(param_1 + 0x54) = 0;
  }
  return;
}



void FUN_00426630(void)

{
  int iVar1;
  undefined uVar2;
  int in_EAX;
  
  if (*(char *)(in_EAX + 0x54) == '\0') {
    iVar1 = *(int *)(in_EAX + 0x44);
    if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *(int *)(in_EAX + 0x4c))))) {
      FUN_00a3fb10();
    }
    if (*(int *)(in_EAX + 0x48) != *(int *)(in_EAX + 0x50)) {
      uVar2 = FUN_00426ed0(in_EAX + 0x58,*(undefined4 *)(in_EAX + 0x4c),
                           *(undefined4 *)(in_EAX + 0x50));
      *(undefined *)(in_EAX + 0x54) = uVar2;
      return;
    }
    *(undefined *)(in_EAX + 0x54) = 0;
  }
  return;
}



void FUN_00426680(void)

{
  FUN_0042a2b0();
  FUN_00427860();
  return;
}



void FUN_004266b0(void)

{
  FUN_0042a2b0();
  FUN_004279f0();
  return;
}



int * __thiscall FUN_004266f0(undefined4 param_1_00,int *param_1)

{
  int *piVar1;
  int *piVar2;
  short *psVar3;
  char cVar4;
  short sVar5;
  uint uVar6;
  int *local_28;
  char local_24;
  uint local_20;
  int local_1c;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c37d80;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  uVar6 = 0;
  local_20 = 0;
  FUN_00415f7a(param_1);
  if (local_24 != '\0') {
    local_1c = *(int *)(*(int *)(*param_1 + 4) + 0x18 + (int)param_1);
    if (local_1c < 2) {
      local_1c = 0;
    }
    else {
      local_1c = local_1c + -1;
    }
    local_8 = 1;
    if ((*(uint *)((int)param_1 + *(int *)(*param_1 + 4) + 0x10) & 0x1c0) == 0x40) {
LAB_004267cb:
      piVar1 = *(int **)(*(int *)(*param_1 + 4) + 0x28 + (int)param_1);
      if ((*(int *)piVar1[9] == 0) || (piVar2 = (int *)piVar1[0xd], *piVar2 < 1)) {
        sVar5 = (**(code **)(*piVar1 + 4))(param_1_00);
      }
      else {
        *piVar2 = *piVar2 + -1;
        psVar3 = *(short **)piVar1[9];
        *(short **)piVar1[9] = psVar3 + 1;
        sVar5 = (short)param_1_00;
        *psVar3 = sVar5;
      }
      if (sVar5 == -1) {
        uVar6 = 4;
      }
      for (; (uVar6 == 0 && (0 < local_1c)); local_1c = local_1c + -1) {
        piVar1 = *(int **)(*(int *)(*param_1 + 4) + 0x28 + (int)param_1);
        sVar5 = *(short *)(*(int *)(*param_1 + 4) + 0x30 + (int)param_1);
        if ((*(int *)piVar1[9] == 0) || (piVar2 = (int *)piVar1[0xd], *piVar2 < 1)) {
          sVar5 = (**(code **)(*piVar1 + 4))(sVar5);
        }
        else {
          *piVar2 = *piVar2 + -1;
          psVar3 = *(short **)piVar1[9];
          *(short **)piVar1[9] = psVar3 + 1;
          *psVar3 = sVar5;
        }
        if (sVar5 == -1) {
          uVar6 = 4;
        }
      }
    }
    else {
      while (uVar6 == 0) {
        if (local_1c < 1) goto LAB_004267cb;
        piVar1 = *(int **)(*(int *)(*param_1 + 4) + 0x28 + (int)param_1);
        sVar5 = *(short *)(*(int *)(*param_1 + 4) + 0x30 + (int)param_1);
        if ((*(int *)piVar1[9] == 0) || (piVar2 = (int *)piVar1[0xd], *piVar2 < 1)) {
          sVar5 = (**(code **)(*piVar1 + 4))(sVar5);
        }
        else {
          *piVar2 = *piVar2 + -1;
          psVar3 = *(short **)piVar1[9];
          *(short **)piVar1[9] = psVar3 + 1;
          *psVar3 = sVar5;
          uVar6 = local_20;
        }
        if (sVar5 == -1) {
          uVar6 = 4;
          local_20 = 4;
        }
        local_1c = local_1c + -1;
      }
    }
  }
  local_8 = 0;
  *(undefined4 *)((int)param_1 + *(int *)(*param_1 + 4) + 0x18) = 0;
  if (uVar6 != 0) {
    uVar6 = *(uint *)((int)param_1 + *(int *)(*param_1 + 4) + 8) | uVar6;
    if (*(int *)((int)param_1 + *(int *)(*param_1 + 4) + 0x28) == 0) {
      uVar6 = uVar6 | 4;
    }
    FUN_00417a55(uVar6,0);
  }
  local_8 = 3;
  cVar4 = thunk_FUN_00a45751();
  if (cVar4 == '\0') {
    FUN_00416008();
  }
  local_8 = 0xffffffff;
  if (*(int *)(*(int *)(*local_28 + 4) + 0x28 + (int)local_28) != 0) {
    FUN_00823c6d();
  }
  ExceptionList = local_10;
  return param_1;
}



undefined * Catch_All_00426880(void)

{
  int unaff_EBP;
  
  FUN_00417a55(*(uint *)((int)*(int **)(unaff_EBP + 8) + *(int *)(**(int **)(unaff_EBP + 8) + 4) + 8
                        ) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_004268ae;
}



undefined4 __thiscall FUN_00426940(int param_1_00,int *param_1,int param_2,int param_3)

{
  char cVar1;
  int iVar2;
  int iVar3;
  char *pcVar4;
  int *piVar5;
  int iVar6;
  bool bVar7;
  char local_14 [8];
  int local_c;
  
  if (*(int *)(param_1_00 + 0x3c) == 0) {
    while( true ) {
      iVar2 = *param_1;
      if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != param_2)))) {
        FUN_00a3fb10();
      }
      if (param_1[1] == param_3) break;
      if (*param_1 != -4) {
        if (*param_1 == 0) {
          FUN_00a3fb10();
        }
        iVar2 = *param_1;
        if (*(uint *)(iVar2 + 0x18) < 0x10) {
          iVar3 = iVar2 + 4;
        }
        else {
          iVar3 = *(int *)(iVar2 + 4);
        }
        if ((uint)(*(int *)(iVar2 + 0x14) + iVar3) <= (uint)param_1[1]) {
          FUN_00a3fb10();
        }
      }
      if (*(int *)(param_1_00 + 0x30) == 0) {
        if (*(char *)(param_1_00 + 0x39) == '\0') break;
        iVar2 = _isspace((int)*(char *)param_1[1]);
        bVar7 = iVar2 == 0;
      }
      else {
        local_14[0] = *(char *)param_1[1];
        iVar2 = FUN_004277a0(local_14,0,1);
        bVar7 = iVar2 == -1;
      }
      if (bVar7) break;
      if (*param_1 != -4) {
        if (*param_1 == 0) {
          FUN_00a3fb10();
        }
        iVar2 = *param_1;
        if (*(uint *)(iVar2 + 0x18) < 0x10) {
          iVar3 = iVar2 + 4;
        }
        else {
          iVar3 = *(int *)(iVar2 + 4);
        }
        if ((uint)(*(int *)(iVar2 + 0x14) + iVar3) <= (uint)param_1[1]) {
          FUN_00a3fb10();
        }
      }
      param_1[1] = param_1[1] + 1;
    }
  }
  iVar2 = *param_1;
  local_c = param_1[1];
  if (*(int *)(param_1_00 + 0x3c) == 0) {
    if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != param_2)))) {
      FUN_00a3fb10();
    }
    if (param_1[1] == param_3) {
      return 0;
    }
    if (*param_1 != -4) {
      if (*param_1 == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *param_1;
      if (*(uint *)(iVar3 + 0x18) < 0x10) {
        iVar6 = iVar3 + 4;
      }
      else {
        iVar6 = *(int *)(iVar3 + 4);
      }
      if ((uint)(*(int *)(iVar3 + 0x14) + iVar6) <= (uint)param_1[1]) {
        FUN_00a3fb10();
      }
    }
    cVar1 = FUN_004274d0(*(undefined *)param_1[1]);
    if (cVar1 == '\0') {
      while( true ) {
        iVar3 = *param_1;
        if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != param_2)))) {
          FUN_00a3fb10();
        }
        if (param_1[1] == param_3) break;
        if (*param_1 != -4) {
          if (*param_1 == 0) {
            FUN_00a3fb10();
          }
          iVar3 = *param_1;
          if (*(uint *)(iVar3 + 0x18) < 0x10) {
            iVar6 = iVar3 + 4;
          }
          else {
            iVar6 = *(int *)(iVar3 + 4);
          }
          if ((uint)(*(int *)(iVar3 + 0x14) + iVar6) <= (uint)param_1[1]) {
            FUN_00a3fb10();
          }
        }
        if (*(int *)(param_1_00 + 0x30) == 0) {
          if (*(char *)(param_1_00 + 0x39) != '\0') {
            iVar3 = _isspace((int)*(char *)param_1[1]);
            bVar7 = iVar3 == 0;
            goto LAB_00426b99;
          }
        }
        else {
          local_14[0] = *(char *)param_1[1];
          iVar3 = FUN_004277a0(local_14,0,1);
          bVar7 = iVar3 == -1;
LAB_00426b99:
          if (!bVar7) break;
        }
        if (*param_1 != -4) {
          if (*param_1 == 0) {
            FUN_00a3fb10();
          }
          iVar3 = *param_1;
          if (*(uint *)(iVar3 + 0x18) < 0x10) {
            iVar6 = iVar3 + 4;
          }
          else {
            iVar6 = *(int *)(iVar3 + 4);
          }
          if ((uint)(*(int *)(iVar3 + 0x14) + iVar6) <= (uint)param_1[1]) {
            FUN_00a3fb10();
          }
        }
        cVar1 = FUN_004274d0(*(undefined *)param_1[1]);
        if (cVar1 != '\0') break;
        if (*param_1 != -4) {
          if (*param_1 == 0) {
            FUN_00a3fb10();
          }
          iVar3 = *param_1;
          if (*(uint *)(iVar3 + 0x18) < 0x10) {
            iVar6 = iVar3 + 4;
          }
          else {
            iVar6 = *(int *)(iVar3 + 4);
          }
          if ((uint)(*(int *)(iVar3 + 0x14) + iVar6) <= (uint)param_1[1]) {
            FUN_00a3fb10();
          }
          if (*param_1 != -4) {
            if (*param_1 == 0) {
              FUN_00a3fb10();
            }
            iVar3 = *param_1;
            if (*(uint *)(iVar3 + 0x18) < 0x10) {
              iVar6 = iVar3 + 4;
            }
            else {
              iVar6 = *(int *)(iVar3 + 4);
            }
            if ((uint)(*(int *)(iVar3 + 0x14) + iVar6) <= (uint)param_1[1]) {
              FUN_00a3fb10();
            }
          }
        }
        param_1[1] = param_1[1] + 1;
      }
    }
    else {
      if (*param_1 != -4) {
        if (*param_1 == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *param_1;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar6 = iVar3 + 4;
        }
        else {
          iVar6 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar6) <= (uint)param_1[1]) {
          FUN_00a3fb10();
        }
        if (*param_1 != -4) {
          if (*param_1 == 0) {
            FUN_00a3fb10();
          }
          iVar3 = *param_1;
          if (*(uint *)(iVar3 + 0x18) < 0x10) {
            iVar6 = iVar3 + 4;
          }
          else {
            iVar6 = *(int *)(iVar3 + 4);
          }
          if ((uint)(*(int *)(iVar3 + 0x14) + iVar6) <= (uint)param_1[1]) {
            FUN_00a3fb10();
          }
        }
      }
      param_1[1] = param_1[1] + 1;
    }
    goto LAB_00426eaf;
  }
  if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != param_2)))) {
    FUN_00a3fb10();
  }
  if (param_1[1] == param_3) {
    if (*(char *)(param_1_00 + 0x40) != '\0') {
      return 0;
    }
    *(undefined *)(param_1_00 + 0x40) = 1;
    FUN_00427f50(iVar2,local_c,*param_1,param_1[1]);
    return 1;
  }
  if (*param_1 != -4) {
    if (*param_1 == 0) {
      FUN_00a3fb10();
    }
    iVar3 = *param_1;
    if (*(uint *)(iVar3 + 0x18) < 0x10) {
      iVar6 = iVar3 + 4;
    }
    else {
      iVar6 = *(int *)(iVar3 + 4);
    }
    if ((uint)(*(int *)(iVar3 + 0x14) + iVar6) <= (uint)param_1[1]) {
      FUN_00a3fb10();
    }
  }
  cVar1 = FUN_004274d0(*(undefined *)param_1[1]);
  if (cVar1 == '\0') {
    if (*(char *)(param_1_00 + 0x40) == '\0') {
      pcVar4 = std::
               _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
               ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                            *)param_1);
      cVar1 = FUN_00427520(*pcVar4);
      if (cVar1 != '\0') goto LAB_00426eab;
    }
    if (*param_1 != -4) {
      if (*param_1 == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *param_1;
      if (*(uint *)(iVar3 + 0x18) < 0x10) {
        iVar6 = iVar3 + 4;
      }
      else {
        iVar6 = *(int *)(iVar3 + 4);
      }
      if ((uint)(*(int *)(iVar3 + 0x14) + iVar6) <= (uint)param_1[1]) {
        FUN_00a3fb10();
      }
    }
    cVar1 = FUN_00427520(*(undefined *)param_1[1]);
    if (cVar1 != '\0') {
      piVar5 = (int *)std::
                      _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      ::operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                                    *)param_1);
      local_c = piVar5[1];
      iVar2 = *piVar5;
    }
    while( true ) {
      iVar3 = *param_1;
      if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != param_2)))) {
        FUN_00a3fb10();
      }
      if (param_1[1] == param_3) break;
      if (*param_1 != -4) {
        if (*param_1 == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *param_1;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar6 = iVar3 + 4;
        }
        else {
          iVar6 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar6) <= (uint)param_1[1]) {
          FUN_00a3fb10();
        }
      }
      if (*(int *)(param_1_00 + 0x30) == 0) {
        if (*(char *)(param_1_00 + 0x39) != '\0') {
          iVar3 = _isspace((int)*(char *)param_1[1]);
          bVar7 = iVar3 == 0;
          goto LAB_00426df9;
        }
      }
      else {
        local_14[0] = *(char *)param_1[1];
        iVar3 = FUN_004277a0(local_14,0,1);
        bVar7 = iVar3 == -1;
LAB_00426df9:
        if (!bVar7) break;
      }
      if (*param_1 != -4) {
        if (*param_1 == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *param_1;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar6 = iVar3 + 4;
        }
        else {
          iVar6 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar6) <= (uint)param_1[1]) {
          FUN_00a3fb10();
        }
      }
      cVar1 = FUN_004274d0(*(undefined *)param_1[1]);
      if (cVar1 != '\0') break;
      if (*param_1 != -4) {
        if (*param_1 == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *param_1;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar6 = iVar3 + 4;
        }
        else {
          iVar6 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar6) <= (uint)param_1[1]) {
          FUN_00a3fb10();
        }
        if (*param_1 != -4) {
          if (*param_1 == 0) {
            FUN_00a3fb10();
          }
          iVar3 = *param_1;
          if (*(uint *)(iVar3 + 0x18) < 0x10) {
            iVar6 = iVar3 + 4;
          }
          else {
            iVar6 = *(int *)(iVar3 + 4);
          }
          if ((uint)(*(int *)(iVar3 + 0x14) + iVar6) <= (uint)param_1[1]) {
            FUN_00a3fb10();
          }
        }
      }
      param_1[1] = param_1[1] + 1;
    }
  }
  else if (*(char *)(param_1_00 + 0x40) != '\0') {
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
               *)param_1);
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)param_1);
    *(undefined *)(param_1_00 + 0x40) = 0;
    goto LAB_00426eaf;
  }
LAB_00426eab:
  *(undefined *)(param_1_00 + 0x40) = 1;
LAB_00426eaf:
  FUN_00427f50(iVar2,local_c,*param_1,param_1[1]);
  return 1;
}



undefined4 FUN_00426ed0(undefined4 param_1,int param_2,int param_3)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int *unaff_ESI;
  int unaff_EDI;
  bool bVar6;
  uint local_c [2];
  int local_4;
  
  if (*(int *)(unaff_EDI + 0x3c) == 0) {
    while( true ) {
      iVar2 = *unaff_ESI;
      if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != param_2)))) {
        FUN_00a3fb10();
      }
      if (unaff_ESI[1] == param_3) break;
      if (*unaff_ESI != -4) {
        if (*unaff_ESI == 0) {
          FUN_00a3fb10();
        }
        iVar2 = *unaff_ESI;
        if (*(uint *)(iVar2 + 0x18) < 8) {
          iVar3 = iVar2 + 4;
        }
        else {
          iVar3 = *(int *)(iVar2 + 4);
        }
        if ((uint)(iVar3 + *(int *)(iVar2 + 0x14) * 2) <= (uint)unaff_ESI[1]) {
          FUN_00a3fb10();
        }
      }
      if (*(int *)(unaff_EDI + 0x30) == 0) {
        if (*(char *)(unaff_EDI + 0x39) == '\0') break;
        iVar2 = _iswspace(*(ushort *)unaff_ESI[1]);
        bVar6 = iVar2 == 0;
      }
      else {
        local_c[0] = (uint)*(ushort *)unaff_ESI[1];
        iVar2 = FUN_00420f3f(local_c,0,1);
        bVar6 = iVar2 == -1;
      }
      if (bVar6) break;
      if (*unaff_ESI != -4) {
        if (*unaff_ESI == 0) {
          FUN_00a3fb10();
        }
        iVar2 = *unaff_ESI;
        if (*(uint *)(iVar2 + 0x18) < 8) {
          iVar3 = iVar2 + 4;
        }
        else {
          iVar3 = *(int *)(iVar2 + 4);
        }
        if ((uint)(iVar3 + *(int *)(iVar2 + 0x14) * 2) <= (uint)unaff_ESI[1]) {
          FUN_00a3fb10();
        }
      }
      unaff_ESI[1] = unaff_ESI[1] + 2;
    }
  }
  iVar2 = *unaff_ESI;
  local_4 = unaff_ESI[1];
  if (*(int *)(unaff_EDI + 0x3c) != 0) {
    if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != param_2)))) {
      FUN_00a3fb10();
    }
    if (unaff_ESI[1] == param_3) {
      if (*(char *)(unaff_EDI + 0x40) != '\0') {
        return 0;
      }
      *(undefined *)(unaff_EDI + 0x40) = 1;
      FUN_00428080(iVar2,local_4,*unaff_ESI,unaff_ESI[1]);
      return 1;
    }
    if (*unaff_ESI != -4) {
      if (*unaff_ESI == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *unaff_ESI;
      if (*(uint *)(iVar3 + 0x18) < 8) {
        iVar5 = iVar3 + 4;
      }
      else {
        iVar5 = *(int *)(iVar3 + 4);
      }
      if ((uint)(iVar5 + *(int *)(iVar3 + 0x14) * 2) <= (uint)unaff_ESI[1]) {
        FUN_00a3fb10();
      }
    }
    if (*(int *)(unaff_EDI + 0x14) == 0) {
      if (*(char *)(unaff_EDI + 0x38) != '\0') {
        iVar3 = _iswpunct(*(ushort *)unaff_ESI[1]);
        bVar6 = iVar3 == 0;
        goto LAB_004272ed;
      }
LAB_00427315:
      if (*(char *)(unaff_EDI + 0x40) == '\0') {
        std::
        _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
        ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                     *)unaff_ESI);
        cVar1 = FUN_004275a0();
        if (cVar1 != '\0') goto LAB_004274a1;
      }
      std::
      _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
      ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                   *)unaff_ESI);
      cVar1 = FUN_004275a0();
      if (cVar1 != '\0') {
        piVar4 = (int *)FUN_00847800();
        local_4 = piVar4[1];
        iVar2 = *piVar4;
      }
      while( true ) {
        iVar3 = *unaff_ESI;
        if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != param_2)))) {
          FUN_00a3fb10();
        }
        if (unaff_ESI[1] == param_3) break;
        if (*unaff_ESI != -4) {
          if (*unaff_ESI == 0) {
            FUN_00a3fb10();
          }
          iVar3 = *unaff_ESI;
          if (*(uint *)(iVar3 + 0x18) < 8) {
            iVar5 = iVar3 + 4;
          }
          else {
            iVar5 = *(int *)(iVar3 + 4);
          }
          if ((uint)(iVar5 + *(int *)(iVar3 + 0x14) * 2) <= (uint)unaff_ESI[1]) {
            FUN_00a3fb10();
          }
        }
        if (*(int *)(unaff_EDI + 0x30) == 0) {
          if (*(char *)(unaff_EDI + 0x39) != '\0') {
            iVar3 = _iswspace(*(ushort *)unaff_ESI[1]);
            bVar6 = iVar3 == 0;
            goto LAB_004273ec;
          }
        }
        else {
          local_c[0] = (uint)*(ushort *)unaff_ESI[1];
          iVar3 = FUN_00420f3f(local_c,0,1);
          bVar6 = iVar3 == -1;
LAB_004273ec:
          if (!bVar6) break;
        }
        if (*unaff_ESI != -4) {
          if (*unaff_ESI == 0) {
            FUN_00a3fb10();
          }
          iVar3 = *unaff_ESI;
          if (*(uint *)(iVar3 + 0x18) < 8) {
            iVar5 = iVar3 + 4;
          }
          else {
            iVar5 = *(int *)(iVar3 + 4);
          }
          if ((uint)(iVar5 + *(int *)(iVar3 + 0x14) * 2) <= (uint)unaff_ESI[1]) {
            FUN_00a3fb10();
          }
        }
        if (*(int *)(unaff_EDI + 0x14) == 0) {
          if (*(char *)(unaff_EDI + 0x38) != '\0') {
            iVar3 = _iswpunct(*(ushort *)unaff_ESI[1]);
            bVar6 = iVar3 == 0;
            goto LAB_0042745f;
          }
        }
        else {
          local_c[0] = (uint)*(ushort *)unaff_ESI[1];
          iVar3 = FUN_00420f3f(local_c,0,1);
          bVar6 = iVar3 == -1;
LAB_0042745f:
          if (!bVar6) break;
        }
        if (*unaff_ESI != -4) {
          if (*unaff_ESI == 0) {
            FUN_00a3fb10();
          }
          iVar3 = *unaff_ESI;
          if (*(uint *)(iVar3 + 0x18) < 8) {
            iVar5 = iVar3 + 4;
          }
          else {
            iVar5 = *(int *)(iVar3 + 4);
          }
          if ((uint)(iVar5 + *(int *)(iVar3 + 0x14) * 2) <= (uint)unaff_ESI[1]) {
            FUN_00a3fb10();
          }
        }
        FUN_00847800();
      }
    }
    else {
      local_c[0] = (uint)*(ushort *)unaff_ESI[1];
      iVar3 = FUN_00420f3f(local_c,0,1);
      bVar6 = iVar3 == -1;
LAB_004272ed:
      if (bVar6) goto LAB_00427315;
      if (*(char *)(unaff_EDI + 0x40) != '\0') {
        std::
        _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
        ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                     *)unaff_ESI);
        FUN_00847800();
        *(undefined *)(unaff_EDI + 0x40) = 0;
        goto LAB_004274a5;
      }
    }
LAB_004274a1:
    *(undefined *)(unaff_EDI + 0x40) = 1;
    goto LAB_004274a5;
  }
  if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != param_2)))) {
    FUN_00a3fb10();
  }
  if (unaff_ESI[1] == param_3) {
    return 0;
  }
  if (*unaff_ESI != -4) {
    if (*unaff_ESI == 0) {
      FUN_00a3fb10();
    }
    iVar3 = *unaff_ESI;
    if (*(uint *)(iVar3 + 0x18) < 8) {
      iVar5 = iVar3 + 4;
    }
    else {
      iVar5 = *(int *)(iVar3 + 4);
    }
    if ((uint)(iVar5 + *(int *)(iVar3 + 0x14) * 2) <= (uint)unaff_ESI[1]) {
      FUN_00a3fb10();
    }
  }
  if (*(int *)(unaff_EDI + 0x14) == 0) {
    if (*(char *)(unaff_EDI + 0x38) != '\0') {
      iVar3 = _iswpunct(*(ushort *)unaff_ESI[1]);
      bVar6 = iVar3 == 0;
      goto LAB_00427056;
    }
  }
  else {
    local_c[0] = (uint)*(ushort *)unaff_ESI[1];
    iVar3 = FUN_00420f3f(local_c,0,1);
    bVar6 = iVar3 == -1;
LAB_00427056:
    if (!bVar6) {
      if (*unaff_ESI != -4) {
        if (*unaff_ESI == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *unaff_ESI;
        if (*(uint *)(iVar3 + 0x18) < 8) {
          iVar5 = iVar3 + 4;
        }
        else {
          iVar5 = *(int *)(iVar3 + 4);
        }
        if ((uint)(iVar5 + *(int *)(iVar3 + 0x14) * 2) <= (uint)unaff_ESI[1]) {
          FUN_00a3fb10();
        }
        if (*unaff_ESI != -4) {
          if (*unaff_ESI == 0) {
            FUN_00a3fb10();
          }
          iVar3 = *unaff_ESI;
          if (*(uint *)(iVar3 + 0x18) < 8) {
            iVar5 = iVar3 + 4;
          }
          else {
            iVar5 = *(int *)(iVar3 + 4);
          }
          if ((uint)(iVar5 + *(int *)(iVar3 + 0x14) * 2) <= (uint)unaff_ESI[1]) {
            FUN_00a3fb10();
          }
        }
      }
      unaff_ESI[1] = unaff_ESI[1] + 2;
      goto LAB_004274a5;
    }
  }
  while( true ) {
    iVar3 = *unaff_ESI;
    if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != param_2)))) {
      FUN_00a3fb10();
    }
    if (unaff_ESI[1] == param_3) break;
    if (*unaff_ESI != -4) {
      if (*unaff_ESI == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *unaff_ESI;
      if (*(uint *)(iVar3 + 0x18) < 8) {
        iVar5 = iVar3 + 4;
      }
      else {
        iVar5 = *(int *)(iVar3 + 4);
      }
      if ((uint)(iVar5 + *(int *)(iVar3 + 0x14) * 2) <= (uint)unaff_ESI[1]) {
        FUN_00a3fb10();
      }
    }
    if (*(int *)(unaff_EDI + 0x30) == 0) {
      if (*(char *)(unaff_EDI + 0x39) != '\0') {
        iVar3 = _iswspace(*(ushort *)unaff_ESI[1]);
        bVar6 = iVar3 == 0;
        goto LAB_00427152;
      }
    }
    else {
      local_c[0] = (uint)*(ushort *)unaff_ESI[1];
      iVar3 = FUN_00420f3f(local_c,0,1);
      bVar6 = iVar3 == -1;
LAB_00427152:
      if (!bVar6) break;
    }
    if (*unaff_ESI != -4) {
      if (*unaff_ESI == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *unaff_ESI;
      if (*(uint *)(iVar3 + 0x18) < 8) {
        iVar5 = iVar3 + 4;
      }
      else {
        iVar5 = *(int *)(iVar3 + 4);
      }
      if ((uint)(iVar5 + *(int *)(iVar3 + 0x14) * 2) <= (uint)unaff_ESI[1]) {
        FUN_00a3fb10();
      }
    }
    if (*(int *)(unaff_EDI + 0x14) == 0) {
      if (*(char *)(unaff_EDI + 0x38) != '\0') {
        iVar3 = _iswpunct(*(ushort *)unaff_ESI[1]);
        bVar6 = iVar3 == 0;
        goto LAB_004271c6;
      }
    }
    else {
      local_c[0] = (uint)*(ushort *)unaff_ESI[1];
      iVar3 = FUN_00420f3f(local_c,0,1);
      bVar6 = iVar3 == -1;
LAB_004271c6:
      if (!bVar6) break;
    }
    if (*unaff_ESI != -4) {
      if (*unaff_ESI == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *unaff_ESI;
      if (*(uint *)(iVar3 + 0x18) < 8) {
        iVar5 = iVar3 + 4;
      }
      else {
        iVar5 = *(int *)(iVar3 + 4);
      }
      if ((uint)(iVar5 + *(int *)(iVar3 + 0x14) * 2) <= (uint)unaff_ESI[1]) {
        FUN_00a3fb10();
      }
      if (*unaff_ESI != -4) {
        if (*unaff_ESI == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *unaff_ESI;
        if (*(uint *)(iVar3 + 0x18) < 8) {
          iVar5 = iVar3 + 4;
        }
        else {
          iVar5 = *(int *)(iVar3 + 4);
        }
        if ((uint)(iVar5 + *(int *)(iVar3 + 0x14) * 2) <= (uint)unaff_ESI[1]) {
          FUN_00a3fb10();
        }
      }
    }
    unaff_ESI[1] = unaff_ESI[1] + 2;
  }
LAB_004274a5:
  FUN_00428080(iVar2,local_4,*unaff_ESI,unaff_ESI[1]);
  return 1;
}



bool __thiscall FUN_004274d0(int param_1_00,char param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 0x14) != 0) {
    iVar1 = FUN_004277a0(&param_1,0,1);
    return iVar1 != -1;
  }
  if (*(char *)(param_1_00 + 0x38) != '\0') {
    iVar1 = _ispunct((int)param_1);
    return iVar1 != 0;
  }
  return false;
}



bool __thiscall FUN_00427520(int param_1_00,char param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 0x30) != 0) {
    iVar1 = FUN_004277a0(&param_1,0,1);
    return iVar1 != -1;
  }
  if (*(char *)(param_1_00 + 0x39) != '\0') {
    iVar1 = _isspace((int)param_1);
    return iVar1 != 0;
  }
  return false;
}



void __fastcall FUN_00427570(int param_1)

{
  undefined uVar1;
  
  uVar1 = FUN_00426940(param_1 + 0x44,*(undefined4 *)(param_1 + 0x4c),
                       *(undefined4 *)(param_1 + 0x50),param_1 + 0x58);
  *(undefined *)(param_1 + 0x54) = uVar1;
  return;
}



bool __fastcall FUN_004275a0(uint param_1)

{
  int in_EAX;
  int iVar1;
  uint local_4;
  
  if (*(int *)(in_EAX + 0x30) != 0) {
    local_4 = param_1 & 0xffff;
    iVar1 = FUN_00420f3f(&local_4,0,1);
    return iVar1 != -1;
  }
  if (*(char *)(in_EAX + 0x39) != '\0') {
    local_4 = param_1;
    iVar1 = _iswspace((wint_t)param_1);
    return iVar1 != 0;
  }
  return false;
}



undefined4 FUN_004275f0(undefined4 param_1)

{
  code *pcVar1;
  char cVar2;
  undefined4 uVar3;
  undefined **local_20 [3];
  TypeDescriptor *local_14;
  undefined **local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c23508;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar2 = FUN_00427750(DAT_0323f878 ^ (uint)&stack0xffffffcc);
  if (cVar2 != '\0') {
    ExceptionList = local_c;
    return param_1;
  }
  std::bad_cast::bad_cast((bad_cast *)local_20,"bad cast");
  local_20[0] = boost::bad_lexical_cast::vftable;
  local_14 = &std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
              RTTI_Type_Descriptor;
  local_10 = &PTR_vftable_0324d364;
  local_4 = 0;
  FUN_00427b80(local_20);
  pcVar1 = (code *)swi(3);
  uVar3 = (*pcVar1)();
  return uVar3;
}



undefined4 FUN_004276a0(undefined4 param_1)

{
  code *pcVar1;
  char cVar2;
  undefined4 uVar3;
  undefined **local_20 [3];
  TypeDescriptor *local_14;
  undefined **local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c23508;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar2 = FUN_00427be0(DAT_0323f878 ^ (uint)&stack0xffffffcc);
  if (cVar2 != '\0') {
    ExceptionList = local_c;
    return param_1;
  }
  std::bad_cast::bad_cast((bad_cast *)local_20,"bad cast");
  local_20[0] = boost::bad_lexical_cast::vftable;
  local_14 = &std::
              basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              ::RTTI_Type_Descriptor;
  local_10 = &PTR_vftable_0324d364;
  local_4 = 0;
  FUN_00427b80(local_20);
  pcVar1 = (code *)swi(3);
  uVar3 = (*pcVar1)();
  return uVar3;
}



uint FUN_00427750(void)

{
  char *pcVar1;
  bool bVar2;
  bool bVar3;
  char **in_EAX;
  uint uVar4;
  int *unaff_EDI;
  
  pcVar1 = *in_EAX;
  if (pcVar1 == in_EAX[1]) {
    return (uint)in_EAX & 0xffffff00;
  }
  bVar2 = false;
  if (*pcVar1 == '-') {
    bVar3 = true;
  }
  else {
    bVar3 = false;
    if (*pcVar1 != '+') goto LAB_00427777;
  }
  bVar2 = bVar3;
  *in_EAX = pcVar1 + 1;
LAB_00427777:
  uVar4 = FUN_00428ce0(*in_EAX);
  if (bVar2) {
    *unaff_EDI = -*unaff_EDI;
  }
  return uVar4;
}



undefined4 * __thiscall FUN_004277a0(int param_1_00,char *param_1,undefined4 *param_2,uint param_3)

{
  void *_Buf;
  uint uVar1;
  void *pvVar2;
  int iVar3;
  uint uVar4;
  size_t _MaxCount;
  
  uVar1 = (uint)param_2;
  if ((param_3 != 0) || (*(uint *)(param_1_00 + 0x14) < param_2)) {
    if ((param_2 < *(uint *)(param_1_00 + 0x14)) &&
       (uVar4 = *(uint *)(param_1_00 + 0x14) - (int)param_2, param_3 <= uVar4)) {
      _MaxCount = uVar4 + (1 - param_3);
      if (*(uint *)(param_1_00 + 0x18) < 0x10) {
        iVar3 = param_1_00 + 4;
      }
      else {
        iVar3 = *(int *)(param_1_00 + 4);
      }
      param_2 = (undefined4 *)(param_1_00 + 4);
      _Buf = (void *)(iVar3 + uVar1);
      pvVar2 = _memchr(_Buf,(int)*param_1,_MaxCount);
      while (pvVar2 != (void *)0x0) {
        iVar3 = FUN_0042a160(pvVar2,param_1,param_3);
        if (iVar3 == 0) {
          if (0xf < *(uint *)(param_1_00 + 0x18)) {
            param_2 = (undefined4 *)*param_2;
          }
          return (undefined4 *)((int)pvVar2 - (int)param_2);
        }
        _MaxCount = (int)_Buf + ((_MaxCount - 1) - (int)pvVar2);
        _Buf = (void *)((int)pvVar2 + 1);
        pvVar2 = _memchr(_Buf,(int)*param_1,_MaxCount);
      }
    }
    param_2 = (undefined4 *)0xffffffff;
  }
  return param_2;
}



undefined4 FUN_00427860(undefined4 param_1,undefined2 param_2,facet *param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 *puVar4;
  int unaff_ESI;
  undefined4 local_48;
  undefined4 local_40;
  facet *local_3c;
  uint uStack_38;
  undefined4 *local_28 [2];
  undefined4 local_20;
  undefined4 local_1c;
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c234d8;
  local_c = ExceptionList;
  uStack_38 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_4 = 0;
  local_28[0] = &local_40;
  local_40 = CONCAT22(local_40._2_2_,param_2);
  local_3c = param_3;
  local_48 = (undefined *)0x4278b6;
  std::_Lockit::_Lockit((_Lockit *)local_28,0);
  if (*(int *)(param_3 + 4) != -1) {
    *(int *)(param_3 + 4) = *(int *)(param_3 + 4) + 1;
  }
  FUN_00823810();
  if (*(uint *)(unaff_ESI + 0x18) < 0x10) {
    iVar3 = unaff_ESI + 4;
  }
  else {
    iVar3 = *(int *)(unaff_ESI + 4);
  }
  local_48 = (undefined *)(*(int *)(unaff_ESI + 0x14) + iVar3);
  FUN_00425c20();
  if (*(uint *)(unaff_ESI + 0x18) < 0x10) {
    local_48 = (undefined *)(unaff_ESI + 4);
  }
  else {
    local_48 = *(undefined **)(unaff_ESI + 4);
  }
  FUN_00425c20();
  local_48 = (undefined *)local_28[0];
  FUN_004287b0(local_20,local_1c);
  uVar2 = local_1c;
  uVar1 = local_20;
  local_3c = (facet *)local_1c;
  local_40 = local_20;
  local_28[0] = &local_48;
  local_48 = (undefined *)CONCAT22(local_48._2_2_,param_2);
  std::_Lockit::_Lockit((_Lockit *)local_28,0);
  if (*(int *)(param_3 + 4) != -1) {
    *(int *)(param_3 + 4) = *(int *)(param_3 + 4) + 1;
  }
  FUN_00823810();
  if (*(uint *)(unaff_ESI + 0x18) < 0x10) {
    iVar3 = unaff_ESI + 4;
  }
  else {
    iVar3 = *(int *)(unaff_ESI + 4);
  }
  FUN_00425c20(iVar3,unaff_ESI);
  puVar4 = (undefined4 *)FUN_00428870(local_18,local_20,local_1c,uVar1,uVar2);
  local_48 = (undefined *)*puVar4;
  FUN_00427ea0();
  local_4 = 0xffffffff;
  if (param_3 != (facet *)0x0) {
    local_3c = (facet *)0x4279c2;
    puVar4 = (undefined4 *)std::locale::facet::_Decref(param_3);
    if (puVar4 != (undefined4 *)0x0) {
      local_3c = (facet *)0x1;
      local_40 = 0x4279d0;
      (**(code **)*puVar4)();
    }
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall
FUN_004279f0(int param_1_00,undefined4 param_1,undefined2 param_2,facet *param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 local_50;
  undefined4 local_48;
  facet *local_44;
  uint uStack_40;
  undefined4 *local_28 [2];
  undefined4 local_20;
  undefined4 local_1c;
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c234a8;
  local_c = ExceptionList;
  uStack_40 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  local_4 = 0;
  local_28[0] = &local_48;
  local_48 = CONCAT22(local_48._2_2_,param_2);
  local_44 = param_3;
  local_50 = (undefined *)0x427a49;
  std::_Lockit::_Lockit((_Lockit *)local_28,0);
  if (*(int *)(param_3 + 4) != -1) {
    *(int *)(param_3 + 4) = *(int *)(param_3 + 4) + 1;
  }
  FUN_00823810();
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    iVar3 = param_1_00 + 4;
  }
  else {
    iVar3 = *(int *)(param_1_00 + 4);
  }
  local_50 = (undefined *)(iVar3 + *(int *)(param_1_00 + 0x14) * 2);
  FUN_00412747();
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    local_50 = (undefined *)(param_1_00 + 4);
  }
  else {
    local_50 = *(undefined **)(param_1_00 + 4);
  }
  FUN_00412747();
  local_50 = (undefined *)local_28[0];
  FUN_00428a50(local_20,local_1c);
  uVar2 = local_1c;
  uVar1 = local_20;
  local_44 = (facet *)local_1c;
  local_48 = local_20;
  local_28[0] = &local_50;
  local_50 = (undefined *)CONCAT22(local_50._2_2_,param_2);
  std::_Lockit::_Lockit((_Lockit *)local_28,0);
  if (*(int *)(param_3 + 4) != -1) {
    *(int *)(param_3 + 4) = *(int *)(param_3 + 4) + 1;
  }
  FUN_00823810();
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    iVar3 = param_1_00 + 4;
  }
  else {
    iVar3 = *(int *)(param_1_00 + 4);
  }
  FUN_00412747(iVar3,param_1_00);
  puVar4 = (undefined4 *)FUN_00428b10(local_18,local_20,local_1c,uVar1,uVar2);
  local_50 = (undefined *)*puVar4;
  FUN_00427fd0();
  local_4 = 0xffffffff;
  if (param_3 != (facet *)0x0) {
    local_44 = (facet *)0x427b58;
    puVar4 = (undefined4 *)std::locale::facet::_Decref(param_3);
    if (puVar4 != (undefined4 *)0x0) {
      local_44 = (facet *)0x1;
      local_48 = 0x427b66;
      (**(code **)*puVar4)();
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_00427b80(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_6c [40];
  undefined local_44 [56];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c17288;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_00428c90(local_6c,param_1,DAT_0323f878 ^ (uint)local_6c);
  local_4 = 0;
  FUN_00428cb0(local_44,uVar2);
  __CxxThrowException_8(local_44,&DAT_03115724);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



uint FUN_00427be0(void)

{
  short *psVar1;
  bool bVar2;
  bool bVar3;
  short **in_EAX;
  uint uVar4;
  int *unaff_EDI;
  
  psVar1 = *in_EAX;
  if (psVar1 == in_EAX[1]) {
    return (uint)in_EAX & 0xffffff00;
  }
  bVar2 = false;
  if (*psVar1 == 0x2d) {
    bVar3 = true;
  }
  else {
    bVar3 = false;
    if (*psVar1 != 0x2b) goto LAB_00427c11;
  }
  bVar2 = bVar3;
  *in_EAX = psVar1 + 1;
LAB_00427c11:
  uVar4 = FUN_00429040(*in_EAX);
  if (bVar2) {
    *unaff_EDI = -*unaff_EDI;
  }
  return uVar4;
}



void __fastcall FUN_00427bec(undefined4 param_1,short *param_2)

{
  bool bVar1;
  bool bVar2;
  short **in_EAX;
  int *unaff_EDI;
  
  bVar1 = false;
  if (*param_2 == 0x2d) {
    bVar2 = true;
  }
  else {
    bVar2 = false;
    if (*param_2 != 0x2b) goto LAB_00427c11;
  }
  bVar1 = bVar2;
  *in_EAX = param_2 + 1;
LAB_00427c11:
  FUN_00429040(*in_EAX);
  if (bVar1) {
    *unaff_EDI = -*unaff_EDI;
  }
  return;
}



void FUN_00427c30(void)

{
  int iVar1;
  undefined2 *in_EAX;
  undefined2 *unaff_EDI;
  _Lockit local_4 [4];
  
  *unaff_EDI = *in_EAX;
  iVar1 = *(int *)(in_EAX + 2);
  *(int *)(unaff_EDI + 2) = iVar1;
  std::_Lockit::_Lockit(local_4,0);
  if (*(int *)(iVar1 + 4) != -1) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  FUN_00823810();
  return;
}



void __fastcall FUN_00427c70(int param_1)

{
  FUN_00428140();
  *(undefined ***)(param_1 + 0x30) = boost::exception_detail::clone_base::vftable;
  return;
}



undefined4 * __thiscall FUN_00427c90(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c0fccc;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[10] = &DAT_00fae7a4;
    param_1_00[0xc] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00427d40(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>_>
                ::vftable;
  param_1_00[5] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[10] + 4) + 0x28 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[10] + 4) + 0x24 + (int)param_1_00) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00427d40(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c0fc88;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_00a3f2c8(param_1);
  *param_1_00 = boost::bad_lexical_cast::vftable;
  param_1_00[3] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[4] = *(undefined4 *)(param_1 + 0x10);
  local_4 = 0;
  param_1_00[5] = boost::exception::vftable;
  piVar1 = *(int **)(param_1 + 0x18);
  param_1_00[6] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 0xc))(uVar2);
  }
  param_1_00[7] = *(undefined4 *)(param_1 + 0x1c);
  param_1_00[8] = *(undefined4 *)(param_1 + 0x20);
  param_1_00[9] = *(undefined4 *)(param_1 + 0x24);
  *param_1_00 = boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>::vftable
  ;
  param_1_00[5] =
       boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>::vftable;
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_00427e10(int param_1,byte param_2)

{
  FUN_00428140();
  *(undefined ***)(param_1 + 0x30) = boost::exception_detail::clone_base::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 * __thiscall FUN_00427e40(undefined4 *param_1,byte param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>::vftable;
  param_1[5] = boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>::vftable;
  param_1[5] = boost::exception::vftable;
  if ((int *)param_1[6] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[6] + 0x10))();
    if (cVar1 != '\0') {
      param_1[6] = 0;
    }
  }
  *param_1 = boost::bad_lexical_cast::vftable;
  FUN_00a3f2e5();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_00427ea0(int param_1,char *param_2,int param_3,char *param_4)

{
  int iVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_EDI;
  
  *(undefined4 *)(unaff_EDI + 0x18) = 0xf;
  *(undefined4 *)(unaff_EDI + 0x14) = 0;
  unaff_EDI[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  if ((param_1 != -4) && ((param_1 == 0 || (param_1 != param_3)))) {
    FUN_00a3fb10();
  }
  if (param_2 != param_4) {
    if ((param_3 != -4) && ((param_3 == 0 || (param_3 != param_1)))) {
      FUN_00a3fb10();
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 0x10) {
        iVar1 = param_1 + 4;
      }
      else {
        iVar1 = *(int *)(param_1 + 4);
      }
      if ((char *)(*(int *)(param_1 + 0x14) + iVar1) <= param_2) {
        FUN_00a3fb10();
      }
    }
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (unaff_EDI,param_2,(int)param_4 - (int)param_2);
  }
  return;
}



void __thiscall
FUN_00427f50(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  ppiVar2 = (int **)(param_1_00 + 4);
  ppiVar1 = ppiVar2;
  if (0xf < *(uint *)(param_1_00 + 0x18)) {
    ppiVar1 = (int **)*ppiVar2;
  }
  FUN_00425c20(*(int *)(param_1_00 + 0x14) + (int)ppiVar1,param_1_00);
  if (0xf < *(uint *)(param_1_00 + 0x18)) {
    ppiVar2 = (int **)*ppiVar2;
  }
  FUN_00425c20(ppiVar2,param_1_00);
  FUN_00428270(local_10,local_c,local_18,local_14,param_1,param_2,param_3,param_4);
  return;
}



int __thiscall FUN_00427fd0(int param_1_00,int param_1,uint param_2,int param_3,uint param_4)

{
  int iVar1;
  
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  if ((param_1 != -4) && ((param_1 == 0 || (param_1 != param_3)))) {
    FUN_00a3fb10();
  }
  if (param_2 != param_4) {
    if ((param_3 != -4) && ((param_3 == 0 || (param_3 != param_1)))) {
      FUN_00a3fb10();
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar1 = param_1 + 4;
      }
      else {
        iVar1 = *(int *)(param_1 + 4);
      }
      if ((uint)(iVar1 + *(int *)(param_1 + 0x14) * 2) <= param_2) {
        FUN_00a3fb10();
      }
    }
    FID_conflict_assign(param_2,(int)(param_4 - param_2) >> 1);
  }
  return param_1_00;
}



void __thiscall
FUN_00428080(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  ppiVar2 = (int **)(param_1_00 + 4);
  ppiVar1 = ppiVar2;
  if (7 < *(uint *)(param_1_00 + 0x18)) {
    ppiVar1 = (int **)*ppiVar2;
  }
  FUN_00412747((int)ppiVar1 + *(int *)(param_1_00 + 0x14) * 2,param_1_00);
  if (7 < *(uint *)(param_1_00 + 0x18)) {
    ppiVar2 = (int **)*ppiVar2;
  }
  FUN_00412747(ppiVar2,param_1_00);
  FUN_00428440(local_10,local_c,local_18,local_14,param_1,param_2,param_3,param_4);
  return;
}



void __fastcall FUN_00428100(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>::vftable;
  param_1[5] = boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>::vftable;
  param_1[5] = boost::exception::vftable;
  if ((int *)param_1[6] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[6] + 0x10))();
    if (cVar1 != '\0') {
      param_1[6] = 0;
    }
  }
  *param_1 = boost::bad_lexical_cast::vftable;
  FUN_00a3f2e5();
  return;
}



void __fastcall FUN_00428140(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>_>
             ::vftable;
  param_1[5] = boost::exception_detail::
               clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>_>
               ::vftable;
  *(undefined ***)(*(int *)(param_1[10] + 4) + 0x28 + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>_>
       ::vftable;
  *(int *)(*(int *)(param_1[10] + 4) + 0x24 + (int)param_1) = *(int *)(param_1[10] + 4) + -8;
  *param_1 = boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>::vftable;
  param_1[5] = boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>::vftable;
  param_1[5] = boost::exception::vftable;
  if ((int *)param_1[6] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[6] + 0x10))();
    if (cVar1 != '\0') {
      param_1[6] = 0;
    }
  }
  *param_1 = boost::bad_lexical_cast::vftable;
  FUN_00a3f2e5();
  return;
}



int __fastcall FUN_004281b0(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x34);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00428610(param_1 + -0x30,local_14,1);
    if (iVar2 != 0) {
      ExceptionList = local_c;
      return *(int *)(*(int *)(iVar2 + 0x28) + 4) + 0x28 + iVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_00428240(int param_1)

{
  code *pcVar1;
  undefined local_34 [52];
  
  FUN_00427c90(param_1 + -0x30,1);
  __CxxThrowException_8(local_34,&DAT_03115724);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00428270(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,int param_1,int param_2,int param_3,uint param_4,int param_5,uint param_6,
            int param_7,uint param_8)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  int iVar2;
  int local_28;
  int local_24;
  int local_18;
  int local_14;
  
  if ((param_5 != -4) && ((param_5 == 0 || (param_5 != param_7)))) {
    FUN_00a3fb10();
  }
  if (param_6 != param_8) {
    if (*(uint *)(param_1_00 + 0x18) < 0x10) {
      pbVar1 = param_1_00 + 4;
    }
    else {
      pbVar1 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                (param_1_00 + 4);
    }
    FUN_00425c20(pbVar1,param_1_00);
    if ((param_7 != -4) && ((param_7 == 0 || (param_7 != param_5)))) {
      FUN_00a3fb10();
    }
    if (param_5 != -4) {
      if (param_5 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_5 + 0x18) < 0x10) {
        iVar2 = param_5 + 4;
      }
      else {
        iVar2 = *(int *)(param_5 + 4);
      }
      if ((uint)(*(int *)(param_5 + 0x14) + iVar2) <= param_6) {
        FUN_00a3fb10();
      }
    }
    if (param_4 != 0) {
      if ((param_3 != -4) && ((param_3 == 0 || (param_3 != param_1)))) {
        FUN_00a3fb10();
      }
      param_4 = param_4 - param_2;
    }
    if (param_2 == 0) {
      param_2 = 0;
    }
    else {
      if ((param_1 != -4) && ((param_1 == 0 || (param_1 != local_18)))) {
        FUN_00a3fb10();
      }
      param_2 = param_2 - local_14;
    }
    FUN_00429ec0(param_2,param_4,param_6,param_8 - param_6);
    return param_1_00;
  }
  if (*(uint *)(param_1_00 + 0x18) < 0x10) {
    pbVar1 = param_1_00 + 4;
  }
  else {
    pbVar1 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
              (param_1_00 + 4);
  }
  FUN_00425c20(pbVar1,param_1_00);
  if (param_4 != 0) {
    if ((param_3 != -4) && ((param_3 == 0 || (param_3 != param_1)))) {
      FUN_00a3fb10();
    }
    param_4 = param_4 - param_2;
  }
  if (param_2 != 0) {
    if ((param_1 != -4) && ((param_1 == 0 || (param_1 != local_28)))) {
      FUN_00a3fb10();
    }
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
              (param_1_00,param_2 - local_24,param_4);
    return param_1_00;
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
            (param_1_00,0,param_4);
  return param_1_00;
}



int __thiscall
FUN_00428440(int param_1_00,int param_1,int param_2,int param_3,int param_4,int param_5,uint param_6
            ,int param_7,uint param_8)

{
  int iVar1;
  int local_28;
  int local_24;
  int local_18;
  int local_14;
  
  if ((param_5 != -4) && ((param_5 == 0 || (param_5 != param_7)))) {
    FUN_00a3fb10();
  }
  if (param_6 != param_8) {
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      iVar1 = param_1_00 + 4;
    }
    else {
      iVar1 = *(int *)(param_1_00 + 4);
    }
    FUN_00412747(iVar1,param_1_00);
    if ((param_7 != -4) && ((param_7 == 0 || (param_7 != param_5)))) {
      FUN_00a3fb10();
    }
    if (param_5 != -4) {
      if (param_5 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_5 + 0x18) < 8) {
        iVar1 = param_5 + 4;
      }
      else {
        iVar1 = *(int *)(param_5 + 4);
      }
      if ((uint)(iVar1 + *(int *)(param_5 + 0x14) * 2) <= param_6) {
        FUN_00a3fb10();
      }
    }
    if (param_4 != 0) {
      if ((param_3 != -4) && ((param_3 == 0 || (param_3 != param_1)))) {
        FUN_00a3fb10();
      }
      param_4 = param_4 - param_2 >> 1;
    }
    if (param_2 != 0) {
      if ((param_1 != -4) && ((param_1 == 0 || (param_1 != local_18)))) {
        FUN_00a3fb10();
      }
      param_2 = param_2 - local_14 >> 1;
    }
    FUN_00412473(param_2,param_4,param_6,(int)(param_8 - param_6) >> 1);
    return param_1_00;
  }
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    iVar1 = param_1_00 + 4;
  }
  else {
    iVar1 = *(int *)(param_1_00 + 4);
  }
  FUN_00412747(iVar1,param_1_00);
  if (param_4 != 0) {
    if ((param_3 != -4) && ((param_3 == 0 || (param_3 != param_1)))) {
      FUN_00a3fb10();
    }
    param_4 = param_4 - param_2 >> 1;
  }
  if (param_2 != 0) {
    if ((param_1 != -4) && ((param_1 == 0 || (param_1 != local_28)))) {
      FUN_00a3fb10();
    }
    FID_conflict_erase(param_2 - local_24 >> 1,param_4);
    return param_1_00;
  }
  FID_conflict_erase(0,param_4);
  return param_1_00;
}



undefined4 * __thiscall
FUN_00428610(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c13254;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_3 != 0) {
    param_1_00[10] = &DAT_00fae7a4;
    param_1_00[0xc] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00427d40(param_1);
  local_4 = 1;
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>_>
                ::vftable;
  param_1_00[5] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[10] + 4) + 0x28 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>_>
       ::vftable;
  *(int *)(*(int *)(param_1_00[10] + 4) + 0x24 + (int)param_1_00) =
       *(int *)(param_1_00[10] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x14;
  }
  FUN_00401200(param_1_00 + 5,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



bool __thiscall FUN_004286e0(int param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  
  if ((*(char *)(param_1 + 0x54) != '\0') && (*(char *)(param_1_00 + 0x54) != '\0')) {
    iVar1 = *(int *)(param_1 + 0x44);
    if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *(int *)(param_1_00 + 0x44))))) {
      FUN_00a3fb10();
    }
    if (*(int *)(param_1 + 0x48) == *(int *)(param_1_00 + 0x48)) {
      cVar2 = FUN_008477a0(param_1_00 + 0x4c);
      if (cVar2 != '\0') {
        return true;
      }
    }
    return false;
  }
  return *(char *)(param_1 + 0x54) == *(char *)(param_1_00 + 0x54);
}



void FUN_00428750(void)

{
  int in_EAX;
  
  if (0xf < *(uint *)(in_EAX + 0x18)) {
    FUN_00425c20(*(undefined4 *)(in_EAX + 4),in_EAX);
    return;
  }
  FUN_00425c20(in_EAX + 4,in_EAX);
  return;
}



void FUN_00428780(void)

{
  int in_EAX;
  
  if (0xf < *(uint *)(in_EAX + 0x18)) {
    FUN_00425c20(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 4),in_EAX);
    return;
  }
  FUN_00425c20(*(int *)(in_EAX + 0x14) + in_EAX + 4,in_EAX);
  return;
}



void FUN_004287b0(void)

{
  undefined4 *puVar1;
  undefined2 param_5;
  facet *param_6;
  undefined4 local_24;
  facet *local_20;
  uint uStack_1c;
  undefined4 *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c23478;
  local_c = ExceptionList;
  uStack_1c = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  local_10 = &local_24;
  local_24 = CONCAT22(local_24._2_2_,param_5);
  local_20 = param_6;
  std::_Lockit::_Lockit((_Lockit *)&local_10,0);
  if (*(int *)(param_6 + 4) != -1) {
    *(int *)(param_6 + 4) = *(int *)(param_6 + 4) + 1;
  }
  FUN_00823810();
  FUN_004294e0();
  local_4 = 0xffffffff;
  if (param_6 != (facet *)0x0) {
    local_20 = (facet *)0x42884f;
    puVar1 = (undefined4 *)std::locale::facet::_Decref(param_6);
    if (puVar1 != (undefined4 *)0x0) {
      local_20 = (facet *)0x1;
      local_24 = 0x42885d;
      (**(code **)*puVar1)();
    }
  }
  ExceptionList = local_c;
  return;
}



int * FUN_00428870(int *param_1,int param_2,byte *param_3,int param_4,byte *param_5,ushort param_6,
                  uint param_7)

{
  byte bVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  uint uVar5;
  _Lockit local_14 [4];
  _Lockit local_10 [4];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c23448;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  local_4 = 0;
  while( true ) {
    if ((param_2 != -4) && ((param_2 == 0 || (param_2 != param_4)))) {
      FUN_00a3fb10(uVar2);
    }
    uVar5 = param_7;
    if (param_3 == param_5) {
      local_4 = 0xffffffff;
      *param_1 = param_2;
      param_1[1] = (int)param_3;
      if (param_7 == 0) {
        ExceptionList = local_c;
        return param_1;
      }
      std::_Lockit::_Lockit(local_10,0);
      iVar3 = *(int *)(uVar5 + 4);
      if ((iVar3 != 0) && (iVar3 != -1)) {
        *(int *)(uVar5 + 4) = iVar3 + -1;
      }
      goto LAB_004289b2;
    }
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10(uVar2);
      }
      if (*(uint *)(param_2 + 0x18) < 0x10) {
        iVar3 = param_2 + 4;
      }
      else {
        iVar3 = *(int *)(param_2 + 4);
      }
      if ((byte *)(*(int *)(param_2 + 0x14) + iVar3) <= param_3) {
        FUN_00a3fb10(uVar2);
      }
    }
    bVar1 = *param_3;
    iVar3 = FUN_00422a40(&param_7);
    uVar5 = param_7;
    if ((*(ushort *)(*(int *)(iVar3 + 0x10) + (uint)bVar1 * 2) & param_6) == 0) break;
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10(uVar2);
      }
      if (*(uint *)(param_2 + 0x18) < 0x10) {
        iVar3 = param_2 + 4;
      }
      else {
        iVar3 = *(int *)(param_2 + 4);
      }
      if ((byte *)(*(int *)(param_2 + 0x14) + iVar3) <= param_3) {
        FUN_00a3fb10();
      }
    }
    param_3 = param_3 + 1;
  }
  local_4 = 0xffffffff;
  *param_1 = param_2;
  param_1[1] = (int)param_3;
  if (param_7 != 0) {
    std::_Lockit::_Lockit(local_14,0);
    iVar3 = *(int *)(uVar5 + 4);
    if ((iVar3 != 0) && (iVar3 != -1)) {
      *(int *)(uVar5 + 4) = iVar3 + -1;
    }
LAB_004289b2:
    puVar4 = (undefined4 *)(~-(uint)(*(int *)(uVar5 + 4) != 0) & uVar5);
    FUN_00823810();
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)(1);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_004289f0(void)

{
  int in_EAX;
  
  if (7 < *(uint *)(in_EAX + 0x18)) {
    FUN_00412747(*(undefined4 *)(in_EAX + 4),in_EAX);
    return;
  }
  FUN_00412747(in_EAX + 4,in_EAX);
  return;
}



void FUN_00428a20(void)

{
  int in_EAX;
  
  if (7 < *(uint *)(in_EAX + 0x18)) {
    FUN_00412747(*(int *)(in_EAX + 4) + *(int *)(in_EAX + 0x14) * 2,in_EAX);
    return;
  }
  FUN_00412747(in_EAX + 4 + *(int *)(in_EAX + 0x14) * 2,in_EAX);
  return;
}



void FUN_00428a50(void)

{
  undefined4 *puVar1;
  undefined2 param_5;
  facet *param_6;
  undefined4 local_24;
  facet *local_20;
  uint uStack_1c;
  undefined4 *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c23478;
  local_c = ExceptionList;
  uStack_1c = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  local_10 = &local_24;
  local_24 = CONCAT22(local_24._2_2_,param_5);
  local_20 = param_6;
  std::_Lockit::_Lockit((_Lockit *)&local_10,0);
  if (*(int *)(param_6 + 4) != -1) {
    *(int *)(param_6 + 4) = *(int *)(param_6 + 4) + 1;
  }
  FUN_00823810();
  FUN_00429690();
  local_4 = 0xffffffff;
  if (param_6 != (facet *)0x0) {
    local_20 = (facet *)0x428aef;
    puVar1 = (undefined4 *)std::locale::facet::_Decref(param_6);
    if (puVar1 != (undefined4 *)0x0) {
      local_20 = (facet *)0x1;
      local_24 = 0x428afd;
      (**(code **)*puVar1)();
    }
  }
  ExceptionList = local_c;
  return;
}



int * FUN_00428b10(int *param_1,int param_2,undefined2 *param_3,int param_4,undefined2 *param_5,
                  undefined2 param_6,uint param_7)

{
  undefined2 uVar1;
  char cVar2;
  uint uVar3;
  int *piVar4;
  int iVar5;
  undefined4 *puVar6;
  uint uVar7;
  _Lockit a_Stack_14 [4];
  _Lockit local_10 [4];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c23448;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  local_4 = 0;
  while( true ) {
    if ((param_2 != -4) && ((param_2 == 0 || (param_2 != param_4)))) {
      FUN_00a3fb10(uVar3);
    }
    uVar7 = param_7;
    if (param_3 == param_5) {
      local_4 = 0xffffffff;
      *param_1 = param_2;
      param_1[1] = (int)param_3;
      if (param_7 == 0) {
        ExceptionList = local_c;
        return param_1;
      }
      std::_Lockit::_Lockit(local_10,0);
      iVar5 = *(int *)(uVar7 + 4);
      if ((iVar5 != 0) && (iVar5 != -1)) {
        *(int *)(uVar7 + 4) = iVar5 + -1;
      }
      goto LAB_00428c5a;
    }
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10(uVar3);
      }
      if (*(uint *)(param_2 + 0x18) < 8) {
        iVar5 = param_2 + 4;
      }
      else {
        iVar5 = *(int *)(param_2 + 4);
      }
      if ((undefined2 *)(iVar5 + *(int *)(param_2 + 0x14) * 2) <= param_3) {
        FUN_00a3fb10(uVar3);
      }
    }
    uVar1 = *param_3;
    piVar4 = (int *)FUN_00413d06(&param_7);
    cVar2 = (**(code **)(*piVar4 + 8))(param_6,uVar1);
    uVar7 = param_7;
    if (cVar2 == '\0') break;
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 8) {
        iVar5 = param_2 + 4;
      }
      else {
        iVar5 = *(int *)(param_2 + 4);
      }
      if ((undefined2 *)(iVar5 + *(int *)(param_2 + 0x14) * 2) <= param_3) {
        FUN_00a3fb10();
      }
    }
    param_3 = param_3 + 1;
  }
  local_4 = 0xffffffff;
  *param_1 = param_2;
  param_1[1] = (int)param_3;
  if (param_7 != 0) {
    std::_Lockit::_Lockit(a_Stack_14,0);
    iVar5 = *(int *)(uVar7 + 4);
    if ((iVar5 != 0) && (iVar5 != -1)) {
      *(int *)(uVar7 + 4) = iVar5 + -1;
    }
LAB_00428c5a:
    puVar6 = (undefined4 *)(~-(uint)(*(int *)(uVar7 + 4) != 0) & uVar7);
    FUN_00823810();
    if (puVar6 != (undefined4 *)0x0) {
      (**(code **)*puVar6)(1);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00428c90(undefined4 param_1,undefined4 param_2)

{
  FUN_004293c0(param_2);
  return param_1;
}



undefined4 FUN_00428cb0(undefined4 param_1,undefined4 param_2)

{
  FUN_00429410(param_2,1);
  return param_1;
}



void __fastcall FUN_00428ce0(int param_1_00,uint *param_2,char *param_1)

{
  char cVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  char *pcVar6;
  undefined4 *puVar7;
  uint uVar8;
  uint uVar9;
  char *pcVar10;
  undefined auStack_44 [6];
  char local_3e;
  byte local_3d;
  _Locimp *local_3c;
  char cStack_35;
  uint *local_34;
  int local_30;
  undefined local_2c [4];
  uint uStack_28;
  int local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined local_4;
  undefined3 uStack_3;
  
  local_4 = 0xff;
  uStack_3 = 0xffffff;
  puStack_8 = &LAB_00c23410;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_44;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  *param_2 = 0;
  local_34 = param_2;
  if ((((char *)(param_1_00 + -1) < param_1) || (cVar2 = *(char *)(param_1_00 + -1), cVar2 < '0'))
     || ('9' < cVar2)) goto LAB_00429020;
  *param_2 = (int)cVar2 - 0x30;
  pcVar10 = (char *)(param_1_00 + -2);
  uVar8 = 1;
  local_3e = '\0';
  local_3c = std::locale::_Init();
  iVar4 = FUN_008238c4(uVar3);
  std::_Lockit::_Lockit((_Lockit *)&local_30,0);
  if (*(int *)(iVar4 + 4) != -1) {
    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  uStack_3 = 0;
  FUN_00823b7b();
  cVar2 = FUN_004299c0();
  if (cVar2 == '\0') {
    piVar5 = (int *)FUN_00424e70(&local_3c);
    FUN_0085c060(local_2c);
    local_4 = 1;
    local_30 = local_18;
    if ((local_18 == 0) || (pcVar6 = (char *)FUN_004221b0(0), *pcVar6 < '\x01')) {
LAB_00428f55:
      local_4 = 0;
      if (0xf < local_14) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_28);
      }
      local_14 = 0xf;
      local_18 = 0;
      uStack_28 = uStack_28 & 0xffffff00;
      goto LAB_00428f83;
    }
    local_3d = 0;
    cStack_35 = (**(code **)(*piVar5 + 8))();
    pcVar6 = (char *)FUN_004221b0(0);
    cVar2 = *pcVar6 + -1;
    param_2 = local_34;
    for (; local_34 = param_2, param_1 <= pcVar10; pcVar10 = pcVar10 + -1) {
      if (cVar2 == '\0') {
        if (*pcVar10 != cStack_35) goto LAB_00428f55;
        if (param_1 == pcVar10) goto joined_r0x00428f48;
        if ((uint)local_3d < local_30 - 1U) {
          local_3d = local_3d + 1;
        }
        pcVar6 = (char *)FUN_004221b0(local_3d);
        cVar2 = *pcVar6;
      }
      else {
        uVar3 = uVar8 * 10;
        if (uVar3 / 10 != uVar8) {
          local_3e = '\x01';
        }
        cVar1 = *pcVar10;
        uVar9 = (int)cVar1 - 0x30;
        uVar8 = uVar9 * uVar3;
        if ((((cVar1 < '0') || ('9' < cVar1)) || ((uVar9 != 0 && (uVar8 / uVar9 != uVar3)))) ||
           ((-uVar8 - 1 < *param_2 || ((local_3e != '\0' && (uVar9 != 0)))))) {
joined_r0x00428f48:
          if (0xf < local_14) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(uStack_28);
          }
          local_14 = 0xf;
          local_18 = 0;
          uStack_28 = uStack_28 & 0xffffff00;
          std::locale::~locale((locale *)&local_3c);
          goto LAB_00429020;
        }
        *param_2 = *param_2 + uVar8;
        cVar2 = cVar2 + -1;
        uVar8 = uVar3;
      }
      param_2 = local_34;
    }
    if (0xf < local_14) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_28);
    }
    local_14 = 0xf;
    local_18 = 0;
    uStack_28 = uStack_28 & 0xffffff00;
  }
  else {
LAB_00428f83:
    if (param_1 <= pcVar10) {
      do {
        uVar3 = uVar8 * 10;
        if (uVar3 / 10 != uVar8) {
          local_3e = '\x01';
        }
        cVar2 = *pcVar10;
        uVar9 = (int)cVar2 - 0x30;
        uVar8 = uVar9 * uVar3;
        if (((((cVar2 < '0') || ('9' < cVar2)) || ((uVar9 != 0 && (uVar8 / uVar9 != uVar3)))) ||
            (-uVar8 - 1 < *param_2)) || ((local_3e != '\0' && (uVar9 != 0)))) {
          local_4 = 0xff;
          uStack_3 = 0xffffff;
          if ((local_3c != (_Locimp *)0x0) &&
             (puVar7 = (undefined4 *)std::locale::facet::_Decref((facet *)local_3c),
             puVar7 != (undefined4 *)0x0)) {
            (**(code **)*puVar7)(1);
          }
          goto LAB_00429020;
        }
        pcVar10 = pcVar10 + -1;
        *param_2 = *param_2 + uVar8;
        uVar8 = uVar3;
      } while (param_1 <= pcVar10);
      std::locale::~locale((locale *)&local_3c);
      goto LAB_00429020;
    }
  }
  std::locale::~locale((locale *)&local_3c);
LAB_00429020:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00429040(int param_1_00,uint *param_2,ushort *param_1)

{
  ushort uVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  char *pcVar6;
  undefined4 *puVar7;
  uint uVar8;
  uint uVar9;
  ushort *puVar10;
  undefined auStack_40 [2];
  char local_3e;
  byte local_3d;
  _Locimp *local_3c;
  uint *local_38;
  uint local_34;
  int local_30;
  undefined local_2c [4];
  uint uStack_28;
  int local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined local_4;
  undefined3 uStack_3;
  
  local_4 = 0xff;
  uStack_3 = 0xffffff;
  puStack_8 = &LAB_00c233d0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_40;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  *param_2 = 0;
  local_38 = param_2;
  if ((((ushort *)(param_1_00 + -2) < param_1) ||
      (uVar1 = *(ushort *)(param_1_00 + -2), uVar1 < 0x30)) || (0x39 < uVar1)) goto LAB_00429399;
  *param_2 = uVar1 - 0x30;
  puVar10 = (ushort *)(param_1_00 + -4);
  uVar8 = 1;
  local_3e = '\0';
  local_3c = std::locale::_Init();
  iVar4 = FUN_008238c4(uVar3);
  std::_Lockit::_Lockit((_Lockit *)&local_34,0);
  if (*(int *)(iVar4 + 4) != -1) {
    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  uStack_3 = 0;
  FUN_00823b7b();
  cVar2 = FUN_004299c0();
  if (cVar2 == '\0') {
    piVar5 = (int *)FUN_004173bd(&local_3c);
    grouping(local_2c);
    local_4 = 1;
    local_30 = local_18;
    if ((local_18 == 0) || (pcVar6 = (char *)FUN_004221b0(0), *pcVar6 < '\x01')) {
LAB_004292ca:
      local_4 = 0;
      if (0xf < local_14) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_28);
      }
      local_14 = 0xf;
      local_18 = 0;
      uStack_28 = uStack_28 & 0xffffff00;
      goto LAB_004292f8;
    }
    local_3d = 0;
    local_34 = (**(code **)(*piVar5 + 8))();
    local_34 = local_34 & 0xffff;
    pcVar6 = (char *)FUN_004221b0(0);
    cVar2 = *pcVar6 + -1;
    param_2 = local_38;
    for (; local_38 = param_2, param_1 <= puVar10; puVar10 = puVar10 + -1) {
      if (cVar2 == '\0') {
        if (*puVar10 != (ushort)local_34) goto LAB_004292ca;
        if (param_1 == puVar10) goto joined_r0x004292bd;
        if ((uint)local_3d < local_30 - 1U) {
          local_3d = local_3d + 1;
        }
        pcVar6 = (char *)FUN_004221b0(local_3d);
        cVar2 = *pcVar6;
      }
      else {
        uVar3 = uVar8 * 10;
        if (uVar3 / 10 != uVar8) {
          local_3e = '\x01';
        }
        uVar1 = *puVar10;
        uVar9 = uVar1 - 0x30;
        uVar8 = uVar9 * uVar3;
        if ((((uVar1 < 0x30) || (0x39 < uVar1)) || ((uVar9 != 0 && (uVar8 / uVar9 != uVar3)))) ||
           ((-uVar8 - 1 < *param_2 || ((local_3e != '\0' && (uVar9 != 0)))))) {
joined_r0x004292bd:
          if (0xf < local_14) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(uStack_28);
          }
          local_14 = 0xf;
          local_18 = 0;
          uStack_28 = uStack_28 & 0xffffff00;
          std::locale::~locale((locale *)&local_3c);
          goto LAB_00429399;
        }
        *param_2 = *param_2 + uVar8;
        cVar2 = cVar2 + -1;
        uVar8 = uVar3;
      }
      param_2 = local_38;
    }
    if (0xf < local_14) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_28);
    }
    local_14 = 0xf;
    local_18 = 0;
    uStack_28 = uStack_28 & 0xffffff00;
  }
  else {
LAB_004292f8:
    if (param_1 <= puVar10) {
      do {
        uVar3 = uVar8 * 10;
        if (uVar3 / 10 != uVar8) {
          local_3e = '\x01';
        }
        uVar1 = *puVar10;
        uVar9 = uVar1 - 0x30;
        uVar8 = uVar9 * uVar3;
        if (((((uVar1 < 0x30) || (0x39 < uVar1)) || ((uVar9 != 0 && (uVar8 / uVar9 != uVar3)))) ||
            (-uVar8 - 1 < *param_2)) || ((local_3e != '\0' && (uVar9 != 0)))) {
          local_4 = 0xff;
          uStack_3 = 0xffffff;
          if ((local_3c != (_Locimp *)0x0) &&
             (puVar7 = (undefined4 *)std::locale::facet::_Decref((facet *)local_3c),
             puVar7 != (undefined4 *)0x0)) {
            (**(code **)*puVar7)(1);
          }
          goto LAB_00429399;
        }
        puVar10 = puVar10 + -1;
        *param_2 = *param_2 + uVar8;
        uVar8 = uVar3;
      } while (param_1 <= puVar10);
      std::locale::~locale((locale *)&local_3c);
      goto LAB_00429399;
    }
  }
  std::locale::~locale((locale *)&local_3c);
LAB_00429399:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_004293c0(undefined4 *param_1_00,int param_1)

{
  FUN_00a3f2c8(param_1);
  *param_1_00 = boost::bad_lexical_cast::vftable;
  param_1_00[3] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[4] = *(undefined4 *)(param_1 + 0x10);
  param_1_00[5] = boost::exception::vftable;
  param_1_00[6] = 0;
  param_1_00[7] = 0;
  param_1_00[8] = 0;
  param_1_00[9] = 0xffffffff;
  *param_1_00 = boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>::vftable
  ;
  param_1_00[5] =
       boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_00429410(undefined4 *param_1_00,int param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c13254;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[10] = &DAT_00fae7a4;
    param_1_00[0xc] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00427d40(param_1);
  local_4 = 1;
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>_>
                ::vftable;
  param_1_00[5] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[10] + 4) + 0x28 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_lexical_cast>_>
       ::vftable;
  *(int *)(*(int *)(param_1_00[10] + 4) + 0x24 + (int)param_1_00) =
       *(int *)(param_1_00[10] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x14;
  }
  FUN_00401200(param_1_00 + 5,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



int * FUN_004294e0(int *param_1,undefined4 param_2,int param_3,byte *param_4,int param_5,
                  byte *param_6,ushort param_7,facet *param_8)

{
  byte bVar1;
  uint uVar2;
  byte *pbVar3;
  int iVar4;
  undefined4 *puVar5;
  byte *pbVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c23398;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  do {
    pbVar6 = param_6;
    if ((param_5 != -4) && ((param_5 == 0 || (param_5 != param_3)))) {
      FUN_00a3fb10(uVar2);
    }
    if (pbVar6 == param_4) {
      *param_1 = param_3;
      local_4 = 0xffffffff;
      param_1[1] = (int)param_4;
      if (param_8 != (facet *)0x0) {
        puVar5 = (undefined4 *)std::locale::facet::_Decref(param_8);
        if (puVar5 != (undefined4 *)0x0) {
          (**(code **)*puVar5)(1);
        }
      }
      ExceptionList = local_c;
      return param_1;
    }
    if (param_5 != -4) {
      if (param_5 == 0) {
        FUN_00a3fb10(uVar2);
      }
      if (*(uint *)(param_5 + 0x18) < 0x10) {
        pbVar3 = (byte *)(param_5 + 4);
      }
      else {
        pbVar3 = *(byte **)(param_5 + 4);
      }
      if (pbVar6 <= pbVar3) {
        FUN_00a3fb10(uVar2);
      }
    }
    param_6 = pbVar6 + -1;
    if (param_5 != -4) {
      if (param_5 == 0) {
        FUN_00a3fb10(uVar2);
      }
      if (*(uint *)(param_5 + 0x18) < 0x10) {
        iVar4 = param_5 + 4;
      }
      else {
        iVar4 = *(int *)(param_5 + 4);
      }
      if ((byte *)(*(int *)(param_5 + 0x14) + iVar4) <= param_6) {
        FUN_00a3fb10(uVar2);
      }
    }
    bVar1 = *param_6;
    iVar4 = FUN_00422a40(&param_8);
  } while ((*(ushort *)(*(int *)(iVar4 + 0x10) + (uint)bVar1 * 2) & param_7) != 0);
  if (param_5 != -4) {
    if (param_5 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(param_5 + 0x18) < 0x10) {
      iVar4 = param_5 + 4;
    }
    else {
      iVar4 = *(int *)(param_5 + 4);
    }
    if ((byte *)(*(int *)(param_5 + 0x14) + iVar4) <= param_6) {
      FUN_00a3fb10();
    }
  }
  local_4 = 0xffffffff;
  *param_1 = param_5;
  param_1[1] = (int)pbVar6;
  if (param_8 != (facet *)0x0) {
    puVar5 = (undefined4 *)std::locale::facet::_Decref(param_8);
    if (puVar5 != (undefined4 *)0x0) {
      (**(code **)*puVar5)(1);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



bool FUN_00429660(byte param_1)

{
  ushort uVar1;
  ushort *in_EAX;
  int iVar2;
  
  uVar1 = *in_EAX;
  iVar2 = FUN_00422a40(in_EAX + 2);
  return (*(ushort *)(*(int *)(iVar2 + 0x10) + (uint)param_1 * 2) & uVar1) != 0;
}



int * FUN_00429690(int *param_1,undefined4 param_2,int param_3,undefined2 *param_4,int param_5,
                  undefined2 *param_6,undefined2 param_7,facet *param_8)

{
  undefined2 uVar1;
  char cVar2;
  uint uVar3;
  undefined2 *puVar4;
  int *piVar5;
  int iVar6;
  undefined4 *puVar7;
  undefined2 *puVar8;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c23398;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  do {
    puVar8 = param_6;
    if ((param_5 != -4) && ((param_5 == 0 || (param_5 != param_3)))) {
      FUN_00a3fb10(uVar3);
    }
    if (puVar8 == param_4) {
      *param_1 = param_3;
      local_4 = 0xffffffff;
      param_1[1] = (int)param_4;
      if (param_8 != (facet *)0x0) {
        puVar7 = (undefined4 *)std::locale::facet::_Decref(param_8);
        if (puVar7 != (undefined4 *)0x0) {
          (**(code **)*puVar7)(1);
        }
      }
      ExceptionList = local_c;
      return param_1;
    }
    if (param_5 != -4) {
      if (param_5 == 0) {
        FUN_00a3fb10(uVar3);
      }
      if (*(uint *)(param_5 + 0x18) < 8) {
        puVar4 = (undefined2 *)(param_5 + 4);
      }
      else {
        puVar4 = *(undefined2 **)(param_5 + 4);
      }
      if (puVar8 <= puVar4) {
        FUN_00a3fb10(uVar3);
      }
    }
    param_6 = puVar8 + -1;
    if (param_5 != -4) {
      if (param_5 == 0) {
        FUN_00a3fb10(uVar3);
      }
      if (*(uint *)(param_5 + 0x18) < 8) {
        iVar6 = param_5 + 4;
      }
      else {
        iVar6 = *(int *)(param_5 + 4);
      }
      if ((undefined2 *)(iVar6 + *(int *)(param_5 + 0x14) * 2) <= param_6) {
        FUN_00a3fb10(uVar3);
      }
    }
    uVar1 = *param_6;
    piVar5 = (int *)FUN_00413d06(&param_8);
    cVar2 = (**(code **)(*piVar5 + 8))(param_7,uVar1);
  } while (cVar2 != '\0');
  if (param_5 != -4) {
    if (param_5 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(param_5 + 0x18) < 8) {
      iVar6 = param_5 + 4;
    }
    else {
      iVar6 = *(int *)(param_5 + 4);
    }
    if ((undefined2 *)(iVar6 + *(int *)(param_5 + 0x14) * 2) <= param_6) {
      FUN_00a3fb10();
    }
  }
  local_4 = 0xffffffff;
  *param_1 = param_5;
  param_1[1] = (int)puVar8;
  if (param_8 != (facet *)0x0) {
    puVar7 = (undefined4 *)std::locale::facet::_Decref(param_8);
    if (puVar7 != (undefined4 *)0x0) {
      (**(code **)*puVar7)(1);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_00429820(undefined4 param_1)

{
  undefined2 uVar1;
  undefined2 *in_EAX;
  int *piVar2;
  
  uVar1 = *in_EAX;
  piVar2 = (int *)FUN_00413d06(in_EAX + 2);
  (**(code **)(*piVar2 + 8))(uVar1,param_1);
  return;
}



int * __fastcall FUN_00429850(int *param_1)

{
  int iVar1;
  uint uVar2;
  
  if (*param_1 != -4) {
    if (*param_1 == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *param_1;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      uVar2 = iVar1 + 4;
    }
    else {
      uVar2 = *(uint *)(iVar1 + 4);
    }
    if ((uint)param_1[1] <= uVar2) {
      FUN_00a3fb10();
    }
  }
  param_1[1] = param_1[1] + -1;
  return param_1;
}



void FUN_00429890(void)

{
  FUN_00427e10();
  return;
}



void FUN_004298a0(void)

{
  FUN_00428240();
  return;
}



void FUN_004298b0(void)

{
  FUN_00427e10();
  return;
}



void FUN_004298c0(void)

{
  FUN_004281b0();
  return;
}



void FUN_004298d0(void)

{
  FUN_00427e40();
  return;
}



void __thiscall FUN_004298e0(int param_1_00,char *param_1)

{
  char cVar1;
  char *pcVar2;
  
  pcVar2 = param_1;
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  FUN_00429910(0,*(undefined4 *)(param_1_00 + 0x14),param_1,(int)pcVar2 - (int)(param_1 + 1));
  return;
}



uint __thiscall
FUN_00429910(int param_1_00,uint param_1,uint param_2,undefined4 param_3,uint param_4)

{
  uint uVar1;
  
  if (*(uint *)(param_1_00 + 0x14) < param_1) {
    std::_String_base::_Xran();
  }
  uVar1 = *(int *)(param_1_00 + 0x14) - param_1;
  if (uVar1 < param_2) {
    param_2 = uVar1;
  }
  uVar1 = param_2;
  if (param_4 <= param_2) {
    uVar1 = param_4;
  }
  if (*(uint *)(param_1_00 + 0x18) < 0x10) {
    param_1_00 = param_1_00 + 4;
  }
  else {
    param_1_00 = *(int *)(param_1_00 + 4);
  }
  uVar1 = FUN_0042a160(param_1_00 + param_1,param_3,uVar1);
  if (uVar1 == 0) {
    if (param_2 < param_4) {
      return 0xffffffff;
    }
    uVar1 = (uint)(param_2 != param_4);
  }
  return uVar1;
}



void __thiscall FUN_00429980(int param_1_00,int param_1)

{
  if (0xf < *(uint *)(param_1 + 0x18)) {
    FUN_00429910(0,*(undefined4 *)(param_1_00 + 0x14),*(undefined4 *)(param_1 + 4),
                 *(undefined4 *)(param_1 + 0x14));
    return;
  }
  FUN_00429910(0,*(undefined4 *)(param_1_00 + 0x14),param_1 + 4,*(undefined4 *)(param_1 + 0x14));
  return;
}



undefined __fastcall FUN_004299c0(int *param_1,int *param_2)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  undefined local_65;
  undefined local_60 [4];
  uint local_5c;
  undefined4 local_4c;
  uint local_48;
  undefined local_44 [4];
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  undefined local_28 [4];
  undefined4 local_24;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1b51b;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  bVar3 = false;
  bVar2 = false;
  bVar1 = false;
  if (*param_2 == *param_1) {
LAB_00429a70:
    local_65 = 1;
  }
  else {
    iVar5 = std::locale::name((locale *)param_2,local_28);
    local_4 = 0;
    bVar2 = false;
    bVar1 = false;
    iVar5 = FUN_00429910(0,*(undefined4 *)(iVar5 + 0x14),&DAT_00fae7ac,1);
    if (iVar5 != 0) {
      uVar6 = std::locale::name((locale *)param_1,local_44);
      local_4 = 1;
      std::locale::name((locale *)param_2,local_60);
      local_4 = 2;
      bVar3 = true;
      bVar2 = true;
      bVar1 = true;
      iVar5 = FUN_00429980(uVar6);
      if (iVar5 == 0) goto LAB_00429a70;
    }
    bVar3 = true;
    local_65 = 0;
  }
  if (bVar1) {
    if (0xf < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c,uVar4);
    }
    local_48 = 0xf;
    local_4c = 0;
    local_5c = local_5c & 0xffffff00;
  }
  if (bVar2) {
    if (0xf < local_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_40,uVar4);
    }
    local_2c = 0xf;
    local_30 = 0;
    local_40 = local_40 & 0xffffff00;
  }
  if ((bVar3) && (0xf < local_10)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar4);
  }
  ExceptionList = local_c;
  return local_65;
}



int __thiscall
FUN_00429b10(int param_1_00,int **param_1,uint param_2,int **param_3,int **param_4,int **param_5)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  undefined *puVar4;
  rsize_t _DstSize;
  rsize_t _MaxCount;
  void *_Dst;
  int **ppiVar5;
  int iVar6;
  void *_Src;
  uint uVar7;
  int **ppiVar8;
  
  uVar1 = (uint)param_1;
  if ((*(uint *)(param_1_00 + 0x14) < param_1) || (*(uint *)((int)param_3 + 0x14) < param_4)) {
    std::_String_base::_Xran();
  }
  uVar2 = *(int *)(param_1_00 + 0x14) - (int)param_1;
  if (uVar2 < param_2) {
    param_2 = uVar2;
  }
  uVar3 = *(int *)((int)param_3 + 0x14) - (int)param_4;
  uVar2 = (uint)param_5;
  if (uVar3 < param_5) {
    uVar2 = uVar3;
  }
  if (-uVar2 - 1 <= *(int *)(param_1_00 + 0x14) - param_2) {
    std::_String_base::_Xlen();
  }
  uVar3 = *(uint *)(param_1_00 + 0x14);
  uVar7 = (uVar3 - param_2) + uVar2;
  _MaxCount = (uVar3 - (int)param_1) - param_2;
  if (uVar3 < uVar7) {
    if (uVar7 == 0xffffffff) {
      std::_String_base::_Xlen();
    }
    if (*(uint *)(param_1_00 + 0x18) < uVar7) {
      FUN_00401af2(uVar7,*(undefined4 *)(param_1_00 + 0x14));
    }
    else if (uVar7 == 0) {
      *(undefined4 *)(param_1_00 + 0x14) = 0;
      if (*(uint *)(param_1_00 + 0x18) < 0x10) {
        puVar4 = (undefined *)(param_1_00 + 4);
      }
      else {
        puVar4 = *(undefined **)(param_1_00 + 4);
      }
      *puVar4 = 0;
    }
  }
  ppiVar8 = (int **)(param_1_00 + 4);
  if ((int **)param_1_00 == param_3) {
    param_3 = ppiVar8;
    if (param_2 < uVar2) {
      if (param_1 < param_4) {
        uVar3 = *(uint *)(param_1_00 + 0x18);
        if (param_4 < (int)param_1 + param_2) {
          ppiVar5 = ppiVar8;
          if (0xf < uVar3) {
            ppiVar5 = (int **)*ppiVar8;
            param_3 = (int **)*ppiVar8;
          }
          _memmove_s((void *)((int)param_3 + (int)param_1),uVar3 - (int)param_1,
                     (void *)((int)ppiVar5 + (int)param_4),param_2);
          ppiVar5 = ppiVar8;
          param_3 = ppiVar8;
          if (0xf < *(uint *)(param_1_00 + 0x18)) {
            ppiVar5 = (int **)*ppiVar8;
            param_3 = (int **)*ppiVar8;
          }
          _memmove_s((void *)((int)ppiVar5 + uVar2 + (int)param_1),
                     (*(uint *)(param_1_00 + 0x18) - (int)param_1) - uVar2,
                     (void *)((int)param_3 + param_2 + (int)param_1),_MaxCount);
          param_1 = ppiVar8;
          param_3 = ppiVar8;
          if (0xf < *(uint *)(param_1_00 + 0x18)) {
            param_1 = (int **)*ppiVar8;
            param_3 = (int **)*ppiVar8;
          }
          _MaxCount = uVar2 - param_2;
          _Src = (void *)((int)param_3 + uVar2 + (int)param_4);
          _DstSize = (*(uint *)(param_1_00 + 0x18) - uVar1) - param_2;
          _Dst = (void *)((int)param_1 + param_2 + uVar1);
        }
        else {
          ppiVar5 = ppiVar8;
          if (0xf < uVar3) {
            ppiVar5 = (int **)*ppiVar8;
            param_3 = (int **)*ppiVar8;
          }
          _memmove_s((void *)((int)ppiVar5 + uVar2 + (int)param_1),(uVar3 - (int)param_1) - uVar2,
                     (void *)((int)param_3 + param_2 + (int)param_1),_MaxCount);
          uVar1 = *(uint *)(param_1_00 + 0x18);
          if (uVar1 < 0x10) {
            _Src = (void *)((int)ppiVar8 + uVar2 + ((int)param_4 - param_2));
            _DstSize = uVar1 - (int)param_1;
            _Dst = (void *)((int)ppiVar8 + (int)param_1);
            _MaxCount = uVar2;
          }
          else {
            _Src = (void *)(((int)*ppiVar8 - param_2) + (int)param_4 + uVar2);
            _DstSize = uVar1 - (int)param_1;
            _Dst = (void *)((int)*ppiVar8 + (int)param_1);
            _MaxCount = uVar2;
          }
        }
      }
      else {
        ppiVar5 = ppiVar8;
        if (0xf < *(uint *)(param_1_00 + 0x18)) {
          ppiVar5 = (int **)*ppiVar8;
          param_3 = (int **)*ppiVar8;
        }
        _memmove_s((void *)((int)ppiVar5 + uVar2 + (int)param_1),
                   (*(uint *)(param_1_00 + 0x18) - (int)param_1) - uVar2,
                   (void *)((int)param_3 + param_2 + (int)param_1),_MaxCount);
        uVar1 = *(uint *)(param_1_00 + 0x18);
        if (uVar1 < 0x10) {
          _Src = (void *)((int)ppiVar8 + (int)param_4);
          _DstSize = uVar1 - (int)param_1;
          _Dst = (void *)((int)ppiVar8 + (int)param_1);
          _MaxCount = uVar2;
        }
        else {
          _Src = (void *)((int)*ppiVar8 + (int)param_4);
          _DstSize = uVar1 - (int)param_1;
          _Dst = (void *)((int)*ppiVar8 + (int)param_1);
          _MaxCount = uVar2;
        }
      }
    }
    else {
      ppiVar5 = ppiVar8;
      if (0xf < *(uint *)(param_1_00 + 0x18)) {
        ppiVar5 = (int **)*ppiVar8;
        param_3 = (int **)*ppiVar8;
      }
      _memmove_s((void *)((int)param_3 + (int)param_1),*(uint *)(param_1_00 + 0x18) - (int)param_1,
                 (void *)((int)ppiVar5 + (int)param_4),uVar2);
      ppiVar5 = ppiVar8;
      param_4 = ppiVar8;
      if (0xf < *(uint *)(param_1_00 + 0x18)) {
        ppiVar5 = (int **)*ppiVar8;
        param_4 = (int **)*ppiVar8;
      }
      _Src = (void *)((int)param_4 + param_2 + (int)param_1);
      _DstSize = (*(uint *)(param_1_00 + 0x18) - (int)param_1) - uVar2;
      _Dst = (void *)((int)ppiVar5 + uVar2 + (int)param_1);
    }
    _memmove_s(_Dst,_DstSize,_Src,_MaxCount);
  }
  else {
    ppiVar5 = ppiVar8;
    param_5 = ppiVar8;
    if (0xf < *(uint *)(param_1_00 + 0x18)) {
      ppiVar5 = (int **)*ppiVar8;
      param_5 = (int **)*ppiVar8;
    }
    _memmove_s((void *)((int)ppiVar5 + uVar2 + (int)param_1),
               (*(uint *)(param_1_00 + 0x18) - (int)param_1) - uVar2,
               (void *)((int)param_5 + param_2 + (int)param_1),_MaxCount);
    if (*(uint *)((int)param_3 + 0x18) < 0x10) {
      iVar6 = (int)param_3 + 4;
    }
    else {
      iVar6 = *(int *)((int)param_3 + 4);
    }
    ppiVar5 = ppiVar8;
    if (0xf < *(uint *)(param_1_00 + 0x18)) {
      ppiVar5 = (int **)*ppiVar8;
    }
    _memcpy_s((void *)((int)ppiVar5 + (int)param_1),*(uint *)(param_1_00 + 0x18) - (int)param_1,
              (void *)(iVar6 + (int)param_4),uVar2);
  }
  *(uint *)(param_1_00 + 0x14) = uVar7;
  if (0xf < *(uint *)(param_1_00 + 0x18)) {
    ppiVar8 = (int **)*ppiVar8;
  }
  *(undefined *)((int)ppiVar8 + uVar7) = 0;
  return param_1_00;
}



int __thiscall
FUN_00429ec0(int param_1_00,uint param_1,uint param_2,undefined4 *param_3,uint param_4)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  uint uVar4;
  rsize_t _MaxCount;
  int iVar5;
  
  if (param_3 != (undefined4 *)0x0) {
    uVar4 = *(uint *)(param_1_00 + 0x18);
    puVar1 = (undefined4 *)(param_1_00 + 4);
    puVar3 = puVar1;
    if (0xf < uVar4) {
      puVar3 = (undefined4 *)*puVar1;
    }
    if (puVar3 <= param_3) {
      puVar3 = puVar1;
      if (0xf < uVar4) {
        puVar3 = (undefined4 *)*puVar1;
      }
      if (param_3 < (undefined4 *)(*(int *)(param_1_00 + 0x14) + (int)puVar3)) {
        if (0xf < uVar4) {
          puVar1 = (undefined4 *)*puVar1;
        }
        iVar2 = FUN_00429b10(param_1,param_2,param_1_00,(int)param_3 - (int)puVar1,param_4);
        return iVar2;
      }
    }
  }
  if (*(uint *)(param_1_00 + 0x14) < param_1) {
    std::_String_base::_Xran();
  }
  uVar4 = *(int *)(param_1_00 + 0x14) - param_1;
  if (uVar4 < param_2) {
    param_2 = uVar4;
  }
  if (-param_4 - 1 <= *(int *)(param_1_00 + 0x14) - param_2) {
    std::_String_base::_Xlen();
  }
  _MaxCount = (*(int *)(param_1_00 + 0x14) - param_1) - param_2;
  if (param_4 < param_2) {
    if (*(uint *)(param_1_00 + 0x18) < 0x10) {
      iVar2 = param_1_00 + 4;
      iVar5 = param_1_00 + 4;
    }
    else {
      iVar2 = *(int *)(param_1_00 + 4);
      iVar5 = *(int *)(param_1_00 + 4);
    }
    _memmove_s((void *)(iVar5 + param_1 + param_4),
               (*(uint *)(param_1_00 + 0x18) - param_1) - param_4,
               (void *)(iVar2 + param_1 + param_2),_MaxCount);
  }
  if ((param_4 != 0) || (param_2 != 0)) {
    uVar4 = (*(int *)(param_1_00 + 0x14) - param_2) + param_4;
    if (uVar4 == 0xffffffff) {
      std::_String_base::_Xlen();
    }
    if (*(uint *)(param_1_00 + 0x18) < uVar4) {
      FUN_00401af2(uVar4,*(undefined4 *)(param_1_00 + 0x14));
    }
    else if (uVar4 == 0) {
      *(undefined4 *)(param_1_00 + 0x14) = 0;
      if (*(uint *)(param_1_00 + 0x18) < 0x10) {
        *(undefined *)(param_1_00 + 4) = 0;
        return param_1_00;
      }
      **(undefined **)(param_1_00 + 4) = 0;
      return param_1_00;
    }
    if (uVar4 != 0) {
      if (param_2 < param_4) {
        puVar1 = (undefined4 *)(param_1_00 + 4);
        puVar3 = puVar1;
        if (0xf < *(uint *)(param_1_00 + 0x18)) {
          puVar3 = (undefined4 *)*puVar1;
          puVar1 = (undefined4 *)*puVar1;
        }
        _memmove_s((void *)((int)puVar1 + param_4 + param_1),
                   (*(uint *)(param_1_00 + 0x18) - param_1) - param_4,
                   (void *)((int)puVar3 + param_2 + param_1),_MaxCount);
      }
      if (*(uint *)(param_1_00 + 0x18) < 0x10) {
        iVar2 = param_1_00 + 4;
      }
      else {
        iVar2 = *(int *)(param_1_00 + 4);
      }
      _memcpy_s((void *)(iVar2 + param_1),*(uint *)(param_1_00 + 0x18) - param_1,param_3,param_4);
      *(uint *)(param_1_00 + 0x14) = uVar4;
      if (0xf < *(uint *)(param_1_00 + 0x18)) {
        *(undefined *)(*(int *)(param_1_00 + 4) + uVar4) = 0;
        return param_1_00;
      }
      *(undefined *)(param_1_00 + 4 + uVar4) = 0;
    }
  }
  return param_1_00;
}



int FUN_0042a0a0(int param_1,int param_2,int param_3,int param_4)

{
  if (param_2 == 0) {
    return param_2;
  }
  if ((param_1 != -4) && ((param_1 == 0 || (param_1 != param_3)))) {
    FUN_00a3fb10();
  }
  return param_2 - param_4;
}



undefined4 __thiscall FUN_0042a0d0(int param_1_00,undefined4 param_1)

{
  if (0xf < *(uint *)(param_1_00 + 0x18)) {
    FUN_00425c20(*(undefined4 *)(param_1_00 + 4),param_1_00);
    return param_1;
  }
  FUN_00425c20(param_1_00 + 4,param_1_00);
  return param_1;
}



undefined4 __thiscall FUN_0042a110(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_00425c20(param_1,param_2);
  return param_1_00;
}



undefined4 __thiscall FUN_0042a130(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  if (*(uint *)(param_1_00 + 0x18) < 0x10) {
    iVar1 = param_1_00 + 4;
  }
  else {
    iVar1 = *(int *)(param_1_00 + 4);
  }
  FUN_00425c20(*(int *)(param_1_00 + 0x14) + iVar1,param_1_00);
  return param_1;
}



uint FUN_0042a160(int *param_1,int *param_2,uint param_3)

{
  int iVar1;
  
  if (3 < param_3) {
    do {
      if (*param_1 != *param_2) goto LAB_0042a18b;
      param_3 = param_3 - 4;
      param_2 = param_2 + 1;
      param_1 = param_1 + 1;
    } while (3 < param_3);
  }
  if (param_3 == 0) {
    return 0;
  }
LAB_0042a18b:
  iVar1 = (uint)*(byte *)param_1 - (uint)*(byte *)param_2;
  if (iVar1 == 0) {
    if (param_3 < 2) {
      return 0;
    }
    iVar1 = (uint)*(byte *)((int)param_1 + 1) - (uint)*(byte *)((int)param_2 + 1);
    if (iVar1 == 0) {
      if (param_3 < 3) {
        return 0;
      }
      iVar1 = (uint)*(byte *)((int)param_1 + 2) - (uint)*(byte *)((int)param_2 + 2);
      if (iVar1 == 0) {
        if (param_3 < 4) {
          return 0;
        }
        iVar1 = (uint)*(byte *)((int)param_1 + 3) - (uint)*(byte *)((int)param_2 + 3);
      }
    }
  }
  return iVar1 >> 0x1f | 1;
}



void __fastcall FUN_0042a1e0(undefined4 *param_1)

{
  *param_1 = boost::bad_lexical_cast::vftable;
  FUN_00a3f2e5();
  return;
}



undefined4 * __thiscall FUN_0042a1f0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::bad_lexical_cast::vftable;
  FUN_00a3f2e5();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



char * FUN_0042a220(void)

{
  return "bad lexical cast: source type value could not be interpreted as target";
}



undefined4 * __thiscall FUN_0042a230(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  std::bad_cast::bad_cast((bad_cast *)param_1_00,"bad cast");
  param_1_00[3] = param_1;
  *param_1_00 = boost::bad_lexical_cast::vftable;
  param_1_00[4] = param_2;
  return param_1_00;
}



void __fastcall FUN_0042a260(int *param_1)

{
  int iVar1;
  undefined2 in_AX;
  undefined2 *unaff_EDI;
  int *local_4;
  
  *unaff_EDI = in_AX;
  iVar1 = *param_1;
  *(int *)(unaff_EDI + 2) = iVar1;
  local_4 = param_1;
  std::_Lockit::_Lockit((_Lockit *)&local_4,0);
  if (*(int *)(iVar1 + 4) != -1) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  FUN_00823810();
  return;
}



void FUN_0042a290(void)

{
  int in_EAX;
  undefined4 *puVar1;
  
  if (*(facet **)(in_EAX + 4) != (facet *)0x0) {
    puVar1 = (undefined4 *)std::locale::facet::_Decref(*(facet **)(in_EAX + 4));
    if (puVar1 != (undefined4 *)0x0) {
      (**(code **)*puVar1)(1);
    }
  }
  return;
}



void __fastcall FUN_0042a2b0(int *param_1)

{
  int iVar1;
  undefined2 *unaff_EDI;
  int *local_4;
  
  *unaff_EDI = 0x48;
  iVar1 = *param_1;
  *(int *)(unaff_EDI + 2) = iVar1;
  local_4 = param_1;
  std::_Lockit::_Lockit((_Lockit *)&local_4,0);
  if (*(int *)(iVar1 + 4) != -1) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  FUN_00823810();
  return;
}



void FUN_0042a2f0(short *param_1)

{
  short sVar1;
  short *psVar2;
  
  psVar2 = param_1;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  FID_conflict_assign(param_1,(int)psVar2 - (int)(param_1 + 1) >> 1);
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * FUN_0042a320(void)

{
  undefined4 *puVar1;
  uint uVar2;
  LONG LVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c13208;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  if ((_DAT_032f0654 & 1) == 0) {
    _DAT_032f0654 = _DAT_032f0654 | 1;
    DAT_032f02f4 = (undefined4 *)0x0;
    _atexit((_func_4879 *)&LAB_00c73c80);
  }
  LVar3 = InterlockedExchangeAdd((LONG *)&DAT_032ef6e0,0);
  if (LVar3 == 0) {
    FUN_00b9acd0(uVar2);
    local_4 = 0;
    LVar3 = InterlockedExchangeAdd((LONG *)&DAT_032ef6e0,0);
    if ((LVar3 == 0) && (DAT_032f02f4 == (undefined4 *)0x0)) {
      puVar4 = (undefined4 *)operator_new(8);
      if (puVar4 == (undefined4 *)0x0) {
        puVar4 = (undefined4 *)0x0;
      }
      else {
        *puVar4 = W30100A62::WF886DF0A::vftable;
        puVar4[1] = 0;
      }
      puVar1 = DAT_032f02f4;
      if ((puVar4 != DAT_032f02f4) && (DAT_032f02f4 != (undefined4 *)0x0)) {
        *DAT_032f02f4 = W30100A62::WF886DF0A::vftable;
        *puVar1 = W30100A62::W021B89C7::vftable;
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(puVar1);
      }
      DAT_032f02f4 = puVar4;
      InterlockedExchange((LONG *)&DAT_032ef6e0,1);
    }
    local_4 = 0xffffffff;
    FUN_00b9ac60();
  }
  ExceptionList = local_c;
  return DAT_032f02f4;
}



void __fastcall FUN_0042a430(undefined4 *param_1)

{
  *param_1 = WB009B997::WF742B1F9::vftable;
  return;
}



undefined4 * __thiscall FUN_0042a440(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WB009B997::WF742B1F9::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0042a460(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0042a4c0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0042a4c0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0042a520(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0042a520(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0fc60;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB009B997::W0CEED8AA>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0042a599(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __fastcall FUN_0042a5c0(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_30;
  undefined4 local_2c;
  undefined local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d278;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  local_30 = 0;
  local_10 = 7;
  local_14 = 0;
  local_24 = local_24 & 0xffff0000;
  FID_conflict_assign(&DAT_00fae860,0xd);
  local_4 = 0;
  local_30 = 0xdbdc4d4b;
  local_2c = 0x4b8d7273;
  FUN_00b94470(&local_30,local_28);
  if (7 < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0042a670(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_00fae87c,0x16);
  local_4 = 0;
  local_2c = 0x4d2a5f75;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0042a710(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_00fae894,0x15);
  local_4 = 0;
  local_2c = 0x315ea99b;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0042a7b0(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_00fae8ac,0x1d);
  local_4 = 0;
  local_2c = 0xfc96d4cb;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0042a850(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_00fae8cc,0x1c);
  local_4 = 0;
  local_2c = 0xa1a9b848;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0042a8f0(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_00fae8ec,0x15);
  local_4 = 0;
  local_2c = 0x616c212f;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0042a990(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_00fae904,0x22);
  local_4 = 0;
  local_2c = 0x5560d943;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0042aa30(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_00fae928,0x1c);
  local_4 = 0;
  local_2c = 0xfa14adef;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0042aad0(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_00fae948,0x21);
  local_4 = 0;
  local_2c = 0x2d2afff3;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0042ab70(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_00fae96c,0xe);
  local_4 = 0;
  local_2c = 0x268bed7f;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0042ac10(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_00fae97c,0x12);
  local_4 = 0;
  local_2c = 0x22018797;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0042acb0(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_00fae990,0x1f);
  local_4 = 0;
  local_2c = 0x8793c053;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0042ad50(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_00fae9b0,0x17);
  local_4 = 0;
  local_2c = 0xe23b650;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0042adf0(undefined4 param_1_00,byte param_1)

{
  FUN_00b93740();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0042ae10(undefined4 param_1_00,byte param_1)

{
  FUN_00b92d80();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0042ae30(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0042ae90(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0042ae90(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0042aef0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0042aef0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0fc40;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_common::WB943A9F0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0042af69(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0042af90(undefined4 param_1_00,byte param_1)

{
  FUN_00b926a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0042afb0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0042b010(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0042b010(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0042b070(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0042b070(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0fc20;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8D447680::WFF7D5095>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0042b0e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042b102(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42b10e;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W5FC6A77E::W2CF15A39::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W5FC6A77E::W2CF15A39::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042b1b8(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42b1c4;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W5FC6A77E::WE526BBEE::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W5FC6A77E::WE526BBEE::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042b26e(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42b27a;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W5FC6A77E::WC074A70C::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W5FC6A77E::WC074A70C::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042b324(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42b330;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W5FC6A77E::W20952F7B::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W5FC6A77E::W20952F7B::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042b3da(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42b3e6;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W5FC6A77E::W4F8E28EC::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W5FC6A77E::W4F8E28EC::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



int FUN_0042b490(uint param_1)

{
  int unaff_ESI;
  
  if ((uint)((*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc)) / 0x1c) <= param_1) {
    FUN_00a3fb10();
  }
  return param_1 * 0x1c + *(int *)(unaff_ESI + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042b4b4(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42b4c0;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W5FC6A77E::W38EAE812::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W5FC6A77E::W38EAE812::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042b56a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42b576;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W5FC6A77E::WDF4991D1::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W5FC6A77E::WDF4991D1::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042b620(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42b62c;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W5FC6A77E::W23B3CC73::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W5FC6A77E::W23B3CC73::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void __fastcall FUN_0042b8f8(undefined4 *param_1)

{
  *param_1 = W5FC6A77E::W04C30681::vftable;
  return;
}



undefined4 * __thiscall FUN_0042b8ff(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W5FC6A77E::W04C30681::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0042b91c(undefined4 param_1_00,byte param_1)

{
  FUN_00b9a8dd();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_0042b93d(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x42b955;
  FUN_0042ba16();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0042b95c;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0042b93d(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x42b955;
  FUN_0042ba16();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0042b95c;
  FUN_00a3f6a1();
}



void FUN_0042b965(void)

{
  int in_EAX;
  uint uVar1;
  undefined4 uVar2;
  
  if (*(uint *)(in_EAX + 0x14) <= *(int *)(in_EAX + 0x1c) + 1U) {
    FUN_00614eb5();
  }
  uVar1 = *(int *)(in_EAX + 0x18) + *(int *)(in_EAX + 0x1c);
  if (*(uint *)(in_EAX + 0x14) <= uVar1) {
    uVar1 = uVar1 - *(uint *)(in_EAX + 0x14);
  }
  if (*(int *)(uVar1 * 4 + *(int *)(in_EAX + 0x10)) == 0) {
    uVar2 = FUN_0042bbe0();
    *(undefined4 *)(uVar1 * 4 + *(int *)(in_EAX + 0x10)) = uVar2;
  }
  FUN_0042bc2a();
  *(int *)(in_EAX + 0x1c) = *(int *)(in_EAX + 0x1c) + 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042b9b9(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  
  while (param_1[7] != 0) {
    FUN_0042bafc();
  }
  iVar3 = param_1[5];
  while (iVar2 = param_1[4], iVar3 != 0) {
    iVar3 = iVar3 + -1;
    piVar1 = (int *)(iVar2 + iVar3 * 4);
    if (*piVar1 != 0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*piVar1);
    }
  }
  if (iVar2 != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  param_1[5] = 0;
  param_1[4] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void FUN_0042ba16(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_0042bb2a(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



undefined4 FUN_0042ba4a(void)

{
  int *piVar1;
  int **in_EAX;
  int iVar2;
  int iVar3;
  int *piVar4;
  uint uVar5;
  
  piVar4 = (int *)((int)in_EAX[7] + (int)in_EAX[6]);
  if (piVar4 < in_EAX[6]) {
    FUN_00a3fb10();
  }
  piVar1 = *in_EAX;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
    iVar2 = 0;
  }
  else {
    iVar3 = *piVar1;
    iVar2 = *piVar1;
  }
  uVar5 = (int)piVar4 - 1;
  if (uVar5 <= (uint)(*(int *)(iVar2 + 0x1c) + *(int *)(iVar3 + 0x18))) {
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *piVar1;
    }
    if (*(uint *)(iVar2 + 0x18) <= uVar5) goto LAB_0042baa2;
  }
  FUN_00a3fb10();
LAB_0042baa2:
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
    iVar2 = 0;
  }
  else {
    iVar3 = *piVar1;
    iVar2 = *piVar1;
  }
  if ((uint)(*(int *)(iVar2 + 0x1c) + *(int *)(iVar3 + 0x18)) <= uVar5) {
    FUN_00a3fb10();
  }
  if (piVar1 == (int *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1;
  }
  if (*(uint *)(iVar2 + 0x14) <= uVar5) {
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *piVar1;
    }
    uVar5 = uVar5 - *(int *)(iVar2 + 0x14);
  }
  if (piVar1 == (int *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1;
  }
  return *(undefined4 *)(*(int *)(iVar2 + 0x10) + uVar5 * 4);
}



void FUN_0042bafc(void)

{
  int *piVar1;
  int unaff_EDI;
  
  if (*(int *)(unaff_EDI + 0x1c) != 0) {
    FUN_00507e58();
    piVar1 = (int *)(unaff_EDI + 0x1c);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      *(undefined4 *)(unaff_EDI + 0x18) = 0;
    }
  }
  return;
}



void FUN_0042bb2a(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_004f9b50(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00452ecb();
    FUN_004187ef();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void __fastcall FUN_0042bbe0(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 0x20) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 << 5);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_0042bc2a(undefined4 param_1,int param_2)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c29771;
  if (param_2 != 0) {
    puVar1 = (undefined *)FUN_00672a11();
  }
  return puVar1;
}



undefined4 __thiscall FUN_0042bc51(undefined4 param_1_00,byte param_1)

{
  FUN_0042bdb1();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0042bc6d(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WE7A5EFDD::WEE468C80::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0042bc8a(undefined4 *param_1)

{
  *param_1 = WE7A5EFDD::WEE468C80::vftable;
  return;
}



void FUN_0042bc91(void)

{
  undefined4 *in_EAX;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*in_EAX);
}



void FUN_0042bc9a(void)

{
  FUN_0042bd80();
  FUN_0042bd80();
  return;
}



void FUN_0042bcad(int param_1)

{
  int iVar1;
  
  LOCK();
  iVar1 = *(int *)(param_1 + 0x10) + -1;
  *(int *)(param_1 + 0x10) = iVar1;
  UNLOCK();
  if ((iVar1 == 0) && (param_1 != 0)) {
    FUN_0042bc9a();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __fastcall FUN_0042bcd2(int *param_1)

{
  if (*param_1 != 0) {
    FUN_0042bcad(*param_1);
  }
  return;
}



int * __thiscall FUN_0042bce0(int *param_1_00,byte param_1)

{
  if (*param_1_00 != 0) {
    FUN_0042bcad(*param_1_00);
  }
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0042bd04(int param_1,int param_2)

{
  for (; param_1 != param_2; param_1 = param_1 + 4) {
    FUN_0042bce0(0);
  }
  return;
}



void __thiscall
FUN_0042bd1f(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0042bd04(param_1,param_2,param_3,param_1_00);
  return;
}



void __thiscall FUN_0042bd39(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_0042bd1f(param_1,param_2,param_1_00 + 8);
  return;
}



void FUN_0042bd50(void)

{
  undefined4 *unaff_ESI;
  
  if (unaff_ESI[3] != 0) {
    FUN_0042bd39(unaff_ESI[3],unaff_ESI[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI[3]);
  }
  unaff_ESI[3] = 0;
  unaff_ESI[4] = 0;
  unaff_ESI[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*unaff_ESI);
}



void __fastcall FUN_0042bd80(HANDLE *param_1)

{
  HANDLE hObject;
  
  hObject = *param_1;
  if ((hObject != (HANDLE)0x0) && (hObject != (HANDLE)0xffffffff)) {
    CloseHandle(hObject);
  }
  return;
}



void __fastcall FUN_0042bd93(HANDLE *param_1)

{
  HANDLE hObject;
  
  hObject = *param_1;
  if ((hObject != (HANDLE)0x0) && (hObject != (HANDLE)0xffffffff)) {
    CloseHandle(hObject);
  }
  return;
}



void FUN_0042bd98(void)

{
  FUN_0042bd80();
  FUN_0042bd50();
  FUN_00417fe6();
  return;
}



void __fastcall FUN_0042bdb1(undefined4 *param_1)

{
  *param_1 = WE7A5EFDD::W6A7F14E5::vftable;
  FUN_0042bd98();
  FUN_00417fe6();
  *param_1 = WE7A5EFDD::WEE468C80::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042bdd4(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42bde0;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::WBF585E8D::RTTI_Type_Descriptor,
                   &W5FC6A77E::WD2507BCE::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::WBF585E8D::RTTI_Type_Descriptor,
                           &W5FC6A77E::WD2507BCE::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042be8a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42be96;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::WBF585E8D::RTTI_Type_Descriptor,
                   &W5FC6A77E::W11E9826A::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::WBF585E8D::RTTI_Type_Descriptor,
                           &W5FC6A77E::W11E9826A::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void __fastcall FUN_0042bf40(undefined4 *param_1)

{
  *param_1 = W5FC6A77E::W1152088D::vftable;
  return;
}



undefined4 * __thiscall FUN_0042bf47(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W5FC6A77E::W1152088D::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0042bf64(undefined4 param_1_00,byte param_1)

{
  FUN_00b922e3();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0042bf80(int *param_1)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  
  ppiVar2 = (int **)FUN_00418daa(1,0);
  if (ppiVar2 == (int **)0x0) {
    ppiVar2 = (int **)0x0;
  }
  else {
    *ppiVar2 = param_1;
  }
  *param_1 = (int)ppiVar2;
  iVar3 = FUN_00697fb3();
  piVar1 = param_1 + 6;
  *piVar1 = iVar3;
  *(undefined *)(iVar3 + 0x19) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[7] = 0;
  return param_1;
}



void __thiscall FUN_0042bfd4(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x19) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



void __thiscall FUN_0042c014(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x19) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0042c056(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5FC6A77E::WA64801F7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0042c09c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_0042c0b3(void)

{
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042c0b8(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42c0c4;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W5FC6A77E::W41667251::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W5FC6A77E::W41667251::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042c16e(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42c17a;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W5FC6A77E::W0D490440::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W5FC6A77E::W0D490440::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042c224(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42c230;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W5FC6A77E::WEFC090DE::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W5FC6A77E::WEFC090DE::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042c2da(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42c2e6;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W5FC6A77E::W48C82EB6::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W5FC6A77E::W48C82EB6::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042c390(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42c39c;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W5FC6A77E::WAFCD195D::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W5FC6A77E::WAFCD195D::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_0042c446(uint *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  int *unaff_EBX;
  int *unaff_EDI;
  bool bVar4;
  undefined4 *local_14;
  int local_10;
  undefined4 *local_c;
  
  local_14 = (undefined4 *)unaff_EBX[6];
  bVar4 = true;
  if (*(char *)((int)(undefined4 *)local_14[1] + 0x11) == '\0') {
    puVar2 = (undefined4 *)local_14[1];
    do {
      local_14 = puVar2;
      bVar4 = *param_1 < (uint)local_14[3];
      if (bVar4) {
        puVar2 = (undefined4 *)*local_14;
      }
      else {
        puVar2 = (undefined4 *)local_14[2];
      }
    } while (*(char *)((int)puVar2 + 0x11) == '\0');
  }
  local_10 = *unaff_EBX;
  local_c = local_14;
  if (bVar4 != false) {
    puVar2 = *(undefined4 **)unaff_EBX[6];
    if (local_10 == 0) {
      FUN_00a3fb10();
    }
    if (local_14 == puVar2) {
      bVar4 = true;
      goto LAB_0042c4be;
    }
    FUN_0076b32a();
  }
  if (*param_1 <= (uint)local_c[3]) {
    *unaff_EDI = local_10;
    unaff_EDI[1] = (int)local_c;
    *(undefined *)(unaff_EDI + 2) = 0;
    return;
  }
LAB_0042c4be:
  piVar3 = (int *)FUN_00464c60(&local_10,bVar4,param_1);
  iVar1 = piVar3[1];
  *unaff_EDI = *piVar3;
  unaff_EDI[1] = iVar1;
  *(undefined *)(unaff_EDI + 2) = 1;
  return;
}



undefined4 FUN_0042c512(void)

{
  return 0xd9838b25;
}



undefined4 * __thiscall FUN_0042c518(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W5FC6A77E::WBF585E8D::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0042c535(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5FC6A77E::W15624A4A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0042c57b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0042c592(char *param_1)

{
  char *unaff_EDI;
  
  if (*unaff_EDI == '\0') {
    if (*param_1 == '\0') {
      return;
    }
    basic_string<>(param_1 + 4);
    FUN_0041b9cf();
    FUN_00412a6f();
  }
  else {
    if (*param_1 == '\0') {
      if (*unaff_EDI == '\0') {
        return;
      }
      FUN_00401829();
      *unaff_EDI = '\0';
      return;
    }
    basic_string<>(param_1 + 4);
    FUN_0041b9cf();
    FID_conflict_assign();
  }
  FUN_00401829();
  return;
}



void __fastcall FUN_0042c62b(undefined4 *param_1)

{
  *param_1 = W133E5AC5::W3ACEF8EC::vftable;
  return;
}



undefined4 * __thiscall FUN_0042c632(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W133E5AC5::W3ACEF8EC::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0042c64f(undefined4 param_1_00,byte param_1)

{
  FUN_00b91e1e();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0042c719(undefined4 *param_1,undefined4 *param_2,undefined4 param_3)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  FUN_0042c929(param_3);
  local_10 = param_1[6];
  local_14 = *param_1;
  cVar2 = FUN_006b8eca();
  if (cVar2 == '\0') {
    cVar2 = FUN_00412a58(param_3,local_8 + 0xc);
    if (cVar2 == '\0') {
      puVar3 = &local_c;
      goto LAB_0042c777;
    }
  }
  local_10 = param_1[6];
  local_14 = *param_1;
  puVar3 = &local_14;
LAB_0042c777:
  uVar1 = puVar3[1];
  *param_2 = *puVar3;
  param_2[1] = uVar1;
  return;
}



undefined4 * FUN_0042c788(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 != '\0') {
        cVar1 = FUN_00412a58(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_0042c907;
        uVar4 = 0;
        goto LAB_0042c7aa;
      }
      cVar1 = FUN_00412a58(param_2,param_4 + 0xc);
      if (cVar1 == '\0') {
LAB_0042c897:
        cVar1 = FUN_00412a58(param_4 + 0xc,param_2);
        if (cVar1 == '\0') {
LAB_0042c907:
          puVar3 = (undefined4 *)FUN_0042c96c(in_EAX,param_2);
          *param_1 = *puVar3;
          param_1[1] = puVar3[1];
          return param_1;
        }
        FUN_0041917c();
        cVar1 = FUN_006b8eca();
        if ((cVar1 == '\0') && (cVar1 = FUN_00412a58(param_2,param_4 + 0xc), cVar1 == '\0'))
        goto LAB_0042c907;
        if (*(char *)(*(int *)(param_4 + 8) + 0x3d) == '\0') {
          uVar4 = 1;
          goto LAB_0042c7aa;
        }
      }
      else {
        iVar2 = FUN_00690d36();
        cVar1 = FUN_00412a58(*(int *)(iVar2 + 4) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_0042c897;
        if (*(char *)(*(int *)(param_4 + 8) + 0x3d) == '\0') {
          uVar4 = 1;
          goto LAB_0042c7aa;
        }
      }
      uVar4 = 0;
      goto LAB_0042c7aa;
    }
    cVar1 = FUN_00412a58(param_2,param_4 + 0xc);
    if (cVar1 == '\0') goto LAB_0042c907;
  }
  uVar4 = 1;
LAB_0042c7aa:
  FUN_0042ca36(param_1,uVar4,param_2);
  return param_1;
}



void FUN_0042c929(undefined4 param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  undefined4 *unaff_EDI;
  undefined4 *local_8;
  
  puVar1 = (undefined4 *)((undefined4 *)unaff_EDI[6])[1];
  local_8 = (undefined4 *)unaff_EDI[6];
  while (puVar3 = puVar1, *(char *)((int)puVar3 + 0x3d) == '\0') {
    cVar2 = FUN_00412a58(puVar3 + 3,param_1);
    if (cVar2 == '\0') {
      puVar1 = (undefined4 *)*puVar3;
      local_8 = puVar3;
    }
    else {
      puVar1 = (undefined4 *)puVar3[2];
    }
  }
  unaff_EBX[1] = local_8;
  *unaff_EBX = *unaff_EDI;
  return;
}



void FUN_0042c96c(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  puVar2 = (undefined4 *)local_8[1];
  local_c = CONCAT31(local_c._1_3_,1);
  while (*(char *)((int)puVar2 + 0x3d) == '\0') {
    local_8 = puVar2;
    cVar1 = FUN_00412a58(param_2,puVar2 + 3);
    local_c = CONCAT31(local_c._1_3_,cVar1);
    if (cVar1 == '\0') {
      puVar2 = (undefined4 *)puVar2[2];
    }
    else {
      puVar2 = (undefined4 *)*puVar2;
    }
  }
  local_14 = *param_1;
  local_10 = local_8;
  if ((char)local_c != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_0042c9de;
    }
    FUN_00690d36();
  }
  puVar2 = local_10;
  cVar1 = FUN_00412a58(local_10 + 3,param_2);
  uVar3 = local_c;
  if (cVar1 == '\0') {
    *unaff_EBX = local_14;
    unaff_EBX[1] = puVar2;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_0042c9de:
  puVar2 = (undefined4 *)FUN_0042ca36(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0042ca36(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x42ca42;
  if (0x5555553 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_0042cb83(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_0042cb5b;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_0042cb5b;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_0042cb5b:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xf) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x3c) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xf) == '\0') {
LAB_0042cb17:
        *(undefined *)(piVar1 + 0xf) = 1;
        *(undefined *)(piVar7 + 0xf) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x3c) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_00418e61(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x3c) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x3c) = 0;
        FUN_00418ea1(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xf) == '\0') goto LAB_0042cb17;
    if (piVar8 == (int *)*piVar1) {
      FUN_00418ea1(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x3c) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x3c) = 0;
    FUN_00418e61(unaff_ESI);
  } while( true );
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_0042cb83(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x40);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    basic_string<>(param_1_00);
    puVar1[10] = *(undefined4 *)(param_1_00 + 0x1c);
    puVar1[0xb] = *(undefined4 *)(param_1_00 + 0x20);
    puVar1[0xc] = *(undefined4 *)(param_1_00 + 0x24);
    puVar1[0xd] = *(undefined4 *)(param_1_00 + 0x28);
    *(undefined *)(puVar1 + 0xe) = *(undefined *)(param_1_00 + 0x2c);
    *(undefined *)(puVar1 + 0xf) = 0;
    *(undefined *)((int)puVar1 + 0x3d) = 0;
  }
  return puVar1;
}



void Catch_All_0042cbe6(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042cbf9(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x42cc05;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_0042ccb7(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = W7DEA1187::WF43FCF5E::vftable;
    puVar2[8] = 0;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



undefined4 * __thiscall FUN_0042cc90(undefined4 *param_1_00,byte param_1)

{
  FUN_00417f97();
  *param_1_00 = W133E5AC5::W4860BBCB::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_0042ccb7(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W7DEA1187::WF43FCF5E*,class_boost::detail::sp_ms_deleter<class_W7DEA1187::WF43FCF5E>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_0042ccfd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



uint __thiscall FUN_0042cd0e(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W7DEA1187::WF43FCF5E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



undefined4 * __thiscall FUN_0042cd2f(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W133E5AC5::W4860BBCB::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0042cd4c(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x4c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00b91641();
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0042cfe4(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



undefined4 __thiscall FUN_0042cec9(undefined4 param_1_00,byte param_1)

{
  FUN_00ba0de9();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042cee5(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x42cef1;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W894DDB77::W93F46233::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W894DDB77::W93F46233::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_0042cf9b(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_00faed15;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0042cfe4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7DEA1187::W1A5E7DF7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0042d02a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0042d087(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0042d09e(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0042d114(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W7DEA1187::W4B274C3D>,class_boost::_bi::list1<class_boost::_bi::value<class_W7DEA1187::W4B274C3D*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0042d0d9(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0042d15d(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W894DDB77::WA955C8D5>,class_boost::_bi::list1<class_boost::_bi::value<class_W7DEA1187::W4B274C3D*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0042d114(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W7DEA1187::W4B274C3D>,class_boost::_bi::list1<class_boost::_bi::value<class_W7DEA1187::W4B274C3D*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W7DEA1187::W4B274C3D>,class_boost::_bi::list1<class_boost::_bi::value<class_W7DEA1187::W4B274C3D*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0042d15d(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W894DDB77::WA955C8D5>,class_boost::_bi::list1<class_boost::_bi::value<class_W7DEA1187::W4B274C3D*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W894DDB77::WA955C8D5>,class_boost::_bi::list1<class_boost::_bi::value<class_W7DEA1187::W4B274C3D*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __thiscall
FUN_0042d1a6(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00,param_1,0,0xffffffff);
  return;
}



undefined4 __thiscall FUN_0042d1b6(undefined4 param_1_00,byte param_1)

{
  FUN_00b9162c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_0042d1d2(void)

{
  return 0xa20cec6d;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0042d1d8(undefined4 *param_1)

{
  *param_1 = W7DEA1187::W32F16721::vftable;
  FUN_00507e58();
  FUN_00507e58();
  if (param_1[4] != 0) {
    FUN_0040127a();
  }
  if (param_1[2] != 0) {
    FUN_0040127a();
  }
  *param_1 = W5FC6A77E::W5212F7B0::vftable;
  return;
}



undefined4 __thiscall FUN_0042d236(undefined4 param_1_00,byte param_1)

{
  FUN_0042d1d8();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0042d252(undefined4 param_1_00,byte param_1)

{
  FUN_00bab0df();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0042d26e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7DEA1187::W7EB9541D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0042d2b4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_0042d2cb(void)

{
  return 0x9ca2b975;
}



void __fastcall FUN_0042d2d1(undefined4 param_1)

{
  FUN_0042f0e5(param_1);
  return;
}



void __fastcall FUN_0042d2d9(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0040127a();
    return;
  }
  return;
}



void __fastcall FUN_0042d2e6(undefined4 *param_1)

{
  *param_1 = boost::program_options::abstract_variables_map::vftable;
  return;
}



undefined4 * __thiscall FUN_0042d2ed(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::program_options::abstract_variables_map::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0042d44a(int param_1_00,int param_2,undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  wchar_t *pwVar4;
  int iVar5;
  uint uVar6;
  undefined *puVar7;
  char *pcVar8;
  char *pcVar9;
  char *pcVar10;
  char *pcVar11;
  char *pcVar12;
  char *pcVar13;
  char *pcVar14;
  char cVar15;
  undefined auStack_62c [2];
  undefined local_62a;
  void *local_628 [2];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_620 [12];
  uint local_614;
  int local_610;
  undefined auStack_604 [192];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_544 [8];
  undefined auStack_53c [4];
  undefined auStack_538 [244];
  undefined auStack_444 [8];
  undefined auStack_43c [56];
  undefined auStack_404 [28];
  undefined4 uStack_3e8;
  undefined auStack_3b8 [16];
  undefined local_3a8 [116];
  undefined auStack_334 [128];
  undefined auStack_2b4 [8];
  undefined auStack_2ac [644];
  void *pvStack_28;
  undefined4 uStack_20;
  undefined4 local_1c;
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c602b8;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_62c;
  ExceptionList = &local_14;
  local_610 = param_1_00;
  local_628[0] = operator_new(8);
  local_c = 0;
  if (local_628[0] == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00843fb0(0);
  }
  local_c = 0xffffffff;
  FUN_00842ed0(uVar2);
  local_62a = 1;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_544,"Allowed options");
  local_c = 1;
  FUN_00a6e300(local_544,0x50,0x28);
  local_c._0_1_ = 3;
  FUN_004017b2(1,0);
  pcVar14 = "Run as portable application";
  pcVar13 = "portable";
  pcVar12 = "Enable automatic censorship";
  pcVar11 = "censor";
  pcVar10 = "Enable Arabic GUI (experimental)";
  pcVar9 = "arabic";
  pcVar8 = "Show this help message";
  puVar7 = &DAT_00fab7d0;
  FUN_00a6b740(local_628);
  FUN_00a6e8a0(puVar7,pcVar8);
  FUN_00a6e8a0(pcVar9,pcVar10);
  FUN_00a6e8a0(pcVar11,pcVar12);
  FUN_00a6e8a0(pcVar13,pcVar14);
  FUN_00a72490();
  local_c = CONCAT31(local_c._1_3_,4);
  if (*(int *)(param_2 + 0x14) == 0) {
    local_614 = *(uint *)(param_2 + 4);
    uVar2 = FUN_00823c23(-(uint)((int)((ulonglong)local_614 * 4 >> 0x20) != 0) |
                         (uint)((ulonglong)local_614 * 4));
    uVar6 = 0;
    *(undefined4 *)(param_2 + 0x14) = uVar2;
    param_1_00 = local_610;
    if (local_614 != 0) {
      do {
        iVar3 = FUN_004325d6(uVar6);
        if (*(uint *)(iVar3 + 0x18) < 8) {
          pwVar4 = (wchar_t *)(iVar3 + 4);
        }
        else {
          pwVar4 = *(wchar_t **)(iVar3 + 4);
        }
        pwVar4 = __wcsdup(pwVar4);
        *(wchar_t **)(*(int *)(param_2 + 0x14) + uVar6 * 4) = pwVar4;
        uVar6 = uVar6 + 1;
        param_1_00 = local_610;
      } while (uVar6 < local_614);
    }
  }
  iVar3 = FUN_004302ec(local_3a8,param_1);
  uStack_18 = 5;
  FUN_00a738b0(auStack_2ac);
  *(undefined **)(iVar3 + 0x68) = auStack_2ac;
  FUN_00a738a0();
  uVar2 = FUN_00430362(auStack_43c);
  local_1c._0_1_ = 6;
  FUN_00a72e70(uVar2,auStack_538);
  FUN_0042ef14();
  local_1c = CONCAT31(local_1c._1_3_,4);
  FUN_0042ef4c(auStack_3b8);
  FUN_00a73890(auStack_53c);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(abStack_620,"help");
  uStack_20._0_1_ = 7;
  local_628[0] = (void *)FUN_0042f186(abStack_620);
  uStack_20._0_1_ = 4;
  FUN_004017b2(1,0);
  if (local_628[0] == (void *)0x0) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (abStack_620,"arabic");
    uStack_20._0_1_ = 0xd;
    uVar2 = *(undefined4 *)(param_1_00 + 0xb8);
    iVar3 = FUN_0042f186(abStack_620);
    *(bool *)uVar2 = iVar3 != 0;
    uStack_20._0_1_ = 4;
    FUN_004017b2(1,0);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (abStack_620,"censor");
    uStack_20._0_1_ = 0xe;
    iVar3 = *(int *)(param_1_00 + 0xb8);
    iVar5 = FUN_0042f186(abStack_620);
    *(bool *)(iVar3 + 2) = iVar5 != 0;
    uStack_20._0_1_ = 4;
    FUN_004017b2(1,0);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (abStack_620,"portable");
    uStack_20._0_1_ = 0xf;
    iVar3 = *(int *)(param_1_00 + 0xb8);
    iVar5 = FUN_0042f186(abStack_620);
    *(bool *)(iVar3 + 4) = iVar5 != 0;
    uStack_20._0_1_ = 4;
    FUN_004017b2(1,0);
    if ((**(char **)(param_1_00 + 0xb8) == '\0') || (cVar1 = FUN_00849620(7,0), cVar1 != '\0')) {
      cVar15 = '\0';
      cVar1 = (**(code **)(**(int **)(param_1_00 + 0x1c) + 8))(&stack0xfffff9c3);
      if (cVar1 != '\0') {
        basic_string<>(
                      L"The application has expired. You should download the latest version from http://www.omnius-server.com/download"
                      );
        uStack_20._0_1_ = 0x11;
        FUN_0042efd1(abStack_620);
        uStack_20._0_1_ = 4;
        FUN_00401829(1,0);
        if (cVar15 != '\0') goto LAB_0042ee2a;
      }
      basic_string<>(L"AE9FBE26-F1C1-4EC4-D9AD-F33A97E2632D");
      uStack_20._0_1_ = 0x12;
      iVar3 = FUN_00ba3c70(abStack_620);
      uStack_20 = CONCAT31(uStack_20._1_3_,0x13);
                    // WARNING: Subroutine does not return
      FUN_0043c023(iVar3 + 4);
    }
    basic_string<>(L"This language is not supported by the system.");
    uStack_20._0_1_ = 0x10;
    FUN_0042efd1(abStack_620);
    FUN_00401829(1,0);
  }
  else {
    FUN_004222a0(3,1);
    uStack_20._0_1_ = 8;
    FUN_00a6b760(auStack_334,auStack_2b4);
    FUN_004325b6(L"Help");
    uStack_20._0_1_ = 9;
    FUN_004223d0(auStack_604);
    uStack_20._0_1_ = 10;
    uVar2 = FUN_00ba84f0();
    uStack_20._0_1_ = 0xb;
    basic_string<>(uVar2);
    uStack_3e8 = 0;
    uStack_20._0_1_ = 0xc;
    FUN_008fe490(auStack_404,auStack_444,0x804,0,0xffffffff,0xffffffff);
    FUN_0040159c();
    FUN_00401829(1,0);
    FUN_004017b2(1,0);
    FUN_0040159c();
    uStack_20._0_1_ = 4;
    FUN_00422210();
  }
LAB_0042ee2a:
  uStack_20 = CONCAT31(uStack_20._1_3_,3);
  FUN_0042eecb();
  uStack_20 = 0xffffffff;
  FUN_0042ee7c();
  ExceptionList = pvStack_28;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_0042ee7c(int param_1)

{
  FUN_0042f10d();
  FUN_0043991f();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x3c));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0042eecb(undefined4 *param_1)

{
  FUN_0042f0e5();
  FUN_0042f1bb();
  FUN_0042f15e();
  *param_1 = boost::program_options::abstract_variables_map::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void thunk_FUN_0042ef4c(undefined4 *param_1)

{
  FUN_0042f2f3();
  FUN_0042f2f3();
  FUN_0042f245();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void __fastcall FUN_0042ef14(int param_1)

{
  FUN_0042f33c();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x1c));
}



void __fastcall FUN_0042ef3c(undefined4 param_1)

{
  FUN_0042f15e(param_1);
  return;
}



void __fastcall FUN_0042ef44(undefined4 param_1)

{
  FUN_0042f1bb(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0042ef4c(undefined4 *param_1)

{
  FUN_0042f2f3();
  FUN_0042f2f3();
  FUN_0042f245();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



undefined4 __thiscall FUN_0042ef8d(undefined4 param_1_00,byte param_1)

{
  FUN_00869920();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0042efbd(void)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *(undefined4 *)(in_EAX + 0x24);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0x28);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0042efd1(undefined4 param_1)

{
  undefined local_58 [36];
  undefined local_34 [28];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x42efdd;
  FUN_004325b6(L"Error");
  local_8 = 0;
  basic_string<>(param_1);
  local_18 = 0;
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_008fe490(local_34,local_58,0x204,0,0xffffffff,0xffffffff);
  FUN_0040159c();
  FUN_0040159c();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_0042f034(int param_1_00,int param_1)

{
  char cVar1;
  undefined4 uVar2;
  int aiStack_3c [5];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  int *local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x42f040;
  local_1c = aiStack_3c;
  aiStack_3c[0] = param_1_00;
  local_18 = param_1_00;
  FUN_004398d8();
  local_8 = 0;
  aiStack_3c[0] = (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x1c;
  cVar1 = FUN_0042f1ff();
  if (cVar1 != '\0') {
    aiStack_3c[0] = param_1;
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_004494bc(*(undefined4 *)(param_1 + 0x10));
    aiStack_3c[0] = param_1;
    FUN_004494bc(*(undefined4 *)(param_1 + 0xc));
    aiStack_3c[0] = *(int *)(param_1_00 + 0xc);
    uVar2 = FUN_004303de(local_28,local_24,local_20,local_1c);
    *(undefined4 *)(param_1_00 + 0x10) = uVar2;
  }
  return param_1_00;
}



void Catch_All_0042f0af(void)

{
  code *pcVar1;
  
  FUN_0042f245();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_0042f0c1(undefined4 *param_1)

{
  FUN_0042f245();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void __fastcall FUN_0042f0d3(undefined4 *param_1)

{
  FUN_0043991f();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_0042f0e5(undefined4 *param_1)

{
  FUN_0042f26f();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_0042f10d(undefined4 *param_1)

{
  FUN_0042f2c9();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void __fastcall thunk_FUN_0042f2f3(uint *param_1)

{
  if (*param_1 != 0) {
    if ((*param_1 & 1) == 0) {
      FUN_0042f73f(param_1 + 2);
    }
    *param_1 = 0;
  }
  return;
}



void __fastcall FUN_0042f13a(undefined4 *param_1)

{
  FUN_0042f312();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void __fastcall FUN_0042f14c(undefined4 *param_1)

{
  FUN_0042f33c();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_0042f15e(undefined4 *param_1)

{
  FUN_0042f366();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



undefined4 FUN_0042f186(undefined4 param_1)

{
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  FUN_0042f5c4(&local_18,param_1);
  param_1 = 0;
  FUN_00430400(local_18,local_14,local_10,local_c,&param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_0042f1bb(undefined4 *param_1)

{
  FUN_0042f3c0();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void FUN_0042f1e3(void)

{
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



undefined4 __thiscall FUN_0042f1ff(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  int iVar2;
  
  uVar1 = 0;
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  *(undefined4 *)(param_1_00 + 0x10) = 0;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  if (param_1 == 0) {
    uVar1 = 0;
  }
  else {
    if (0x9249249 < param_1) {
      uVar1 = FUN_004423c1();
    }
    iVar2 = FUN_0043043a(param_1,uVar1);
    *(int *)(param_1_00 + 0xc) = iVar2;
    *(int *)(param_1_00 + 0x10) = iVar2;
    *(uint *)(param_1_00 + 0x14) = param_1 * 0x1c + iVar2;
    uVar1 = 1;
  }
  return uVar1;
}



void __fastcall FUN_0042f245(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_0042f41a(*(int *)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
  }
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  return;
}



void __fastcall FUN_0042f26f(int param_1)

{
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  FUN_00430228(*(undefined4 *)(param_1 + 0x18),param_1);
  FUN_00430228(**(undefined4 **)(param_1 + 0x18),param_1);
  FUN_0042f431(&local_10,local_10,local_c,local_18,local_14);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x18));
}



void __fastcall FUN_0042f2c9(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_0042f4d8(*(int *)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
  }
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  return;
}



void __fastcall FUN_0042f2f3(uint *param_1)

{
  if (*param_1 != 0) {
    if ((*param_1 & 1) == 0) {
      FUN_0042f73f(param_1 + 2);
    }
    *param_1 = 0;
  }
  return;
}



void __fastcall FUN_0042f312(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_0042f4ef(*(int *)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
  }
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  return;
}



void __fastcall FUN_0042f33c(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_0042f506(*(int *)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
  }
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  return;
}



void __fastcall FUN_0042f366(int param_1)

{
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  FUN_00430228(*(undefined4 *)(param_1 + 0x18),param_1);
  FUN_00430228(**(undefined4 **)(param_1 + 0x18),param_1);
  FUN_0042f51d(&local_10,local_10,local_c,local_18,local_14);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x18));
}



void __fastcall FUN_0042f3c0(int param_1)

{
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  FUN_00430228(*(undefined4 *)(param_1 + 0x18),param_1);
  FUN_00430228(**(undefined4 **)(param_1 + 0x18),param_1);
  FUN_0042f698(&local_10,local_10,local_c,local_18,local_14);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x18));
}



void __thiscall FUN_0042f41a(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_00430420(param_1,param_2,param_1_00 + 8);
  return;
}



undefined4 __thiscall
FUN_0042f431(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined local_10 [12];
  
  FUN_00430228(**(undefined4 **)(param_1_00 + 0x18),param_1_00);
  cVar1 = FUN_00449367(local_10);
  if (cVar1 != '\0') {
    FUN_00430228(*(undefined4 *)(param_1_00 + 0x18),param_1_00);
    cVar1 = FUN_00449367(local_10);
    if (cVar1 != '\0') {
      FUN_0042f9e5();
      FUN_0042f682(param_1);
      return param_1;
    }
  }
  while (cVar1 = FUN_00449367(&stack0x00000010), cVar1 == '\0') {
    FUN_0042fa91();
    FUN_0042f757(local_10,param_2,param_3);
  }
  FUN_0042fae0(param_1,param_2,param_3);
  return param_1;
}



void __thiscall FUN_0042f4d8(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_00430487(param_1,param_2,param_1_00 + 8);
  return;
}



void __thiscall FUN_0042f4ef(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_004304a1(param_1,param_2,param_1_00 + 8);
  return;
}



void __thiscall FUN_0042f506(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_004304bb(param_1,param_2,param_1_00 + 8);
  return;
}



undefined4 __thiscall
FUN_0042f51d(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined local_10 [12];
  
  FUN_00430228(**(undefined4 **)(param_1_00 + 0x18),param_1_00);
  cVar1 = FUN_00449367(local_10);
  if (cVar1 != '\0') {
    FUN_00430228(*(undefined4 *)(param_1_00 + 0x18),param_1_00);
    cVar1 = FUN_00449367(local_10);
    if (cVar1 != '\0') {
      FUN_0042fd91();
      FUN_0042f682(param_1);
      return param_1;
    }
  }
  while (cVar1 = FUN_00449367(&stack0x00000010), cVar1 == '\0') {
    FUN_0043024e();
    FUN_0042fb03(local_10,param_2,param_3);
  }
  FUN_0042fae0(param_1,param_2,param_3);
  return param_1;
}



void __thiscall FUN_0042f5c4(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  puVar2 = *(undefined4 **)(param_1_00 + 0x18);
  puVar4 = (undefined4 *)puVar2[1];
  local_8 = puVar2;
  while (puVar3 = puVar4, *(char *)((int)puVar3 + 0x39) == '\0') {
    cVar1 = FUN_004316c1(puVar3 + 3,param_2);
    if (cVar1 == '\0') {
      if (*(char *)((int)puVar2 + 0x39) != '\0') {
        cVar1 = FUN_004316c1(param_2,puVar3 + 3);
        if (cVar1 != '\0') {
          puVar2 = puVar3;
        }
      }
      puVar4 = (undefined4 *)*puVar3;
      local_8 = puVar3;
    }
    else {
      puVar4 = (undefined4 *)puVar3[2];
    }
  }
  if (*(char *)((int)puVar2 + 0x39) == '\0') {
    puVar4 = (undefined4 *)*puVar2;
  }
  else {
    puVar4 = *(undefined4 **)(*(int *)(param_1_00 + 0x18) + 4);
  }
  while (*(char *)((int)puVar4 + 0x39) == '\0') {
    cVar1 = FUN_004316c1(param_2,puVar4 + 3);
    if (cVar1 == '\0') {
      puVar4 = (undefined4 *)puVar4[2];
    }
    else {
      puVar2 = puVar4;
      puVar4 = (undefined4 *)*puVar4;
    }
  }
  FUN_00430228(local_8,param_1_00);
  FUN_00430228(puVar2,param_1_00);
  *param_1 = local_c;
  param_1[1] = local_8;
  param_1[2] = local_14;
  param_1[3] = local_10;
  return;
}



undefined4 __thiscall FUN_0042f682(int param_1_00,undefined4 param_1)

{
  FUN_00430228(**(undefined4 **)(param_1_00 + 0x18),param_1_00);
  return param_1;
}



undefined4 __thiscall
FUN_0042f698(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined local_10 [12];
  
  FUN_00430228(**(undefined4 **)(param_1_00 + 0x18),param_1_00);
  cVar1 = FUN_00449367(local_10);
  if (cVar1 != '\0') {
    FUN_00430228(*(undefined4 *)(param_1_00 + 0x18),param_1_00);
    cVar1 = FUN_00449367(local_10);
    if (cVar1 != '\0') {
      FUN_00430045();
      FUN_0042f682(param_1);
      return param_1;
    }
  }
  while (cVar1 = FUN_00449367(&stack0x00000010), cVar1 == '\0') {
    FUN_0043029d();
    FUN_0042fdb7(local_10,param_2,param_3);
  }
  FUN_0042fae0(param_1,param_2,param_3);
  return param_1;
}



void __thiscall FUN_0042f73f(code **param_1_00,undefined4 param_1)

{
  if (*param_1_00 != (code *)0x0) {
    (**param_1_00)(param_1,param_1,2);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x0042f845)
// WARNING: Removing unreachable block (ram,0x0042f855)
// WARNING: Removing unreachable block (ram,0x0042f85e)
// WARNING: Removing unreachable block (ram,0x0042f861)
// WARNING: Removing unreachable block (ram,0x0042f851)
// WARNING: Removing unreachable block (ram,0x0042f86e)
// WARNING: Removing unreachable block (ram,0x0042f87e)
// WARNING: Removing unreachable block (ram,0x0042f889)
// WARNING: Removing unreachable block (ram,0x0042f885)
// WARNING: Removing unreachable block (ram,0x0042f879)
// WARNING: Removing unreachable block (ram,0x0042f88c)

void FUN_0042f757(undefined4 param_1,undefined4 param_2,int *param_3)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x42f763;
  if (*(char *)((int)param_3 + 0x45) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_58,&DAT_03115668);
  }
  FUN_0042fa91();
  ppiVar5 = (int **)*param_3;
  if (*(char *)((int)ppiVar5 + 0x45) == '\0') {
    if (*(char *)(param_3[2] + 0x45) == '\0') {
      ppiVar5 = (int **)param_3[2];
    }
  }
  else {
    ppiVar5 = (int **)param_3[2];
  }
  ppiVar3 = (int **)param_3[1];
  if (*(char *)((int)ppiVar5 + 0x45) == '\0') {
    ppiVar5[1] = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(local_14 + 0x18) + 4) == param_3) {
    *(int ***)(*(int *)(local_14 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar3 == param_3) {
    *ppiVar3 = (int *)ppiVar5;
  }
  else {
    ppiVar3[2] = (int *)ppiVar5;
  }
  if (**(int ***)(local_14 + 0x18) == param_3) {
    ppiVar4 = ppiVar3;
    if (*(char *)((int)ppiVar5 + 0x45) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar4 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x45) == '\0') {
        ppiVar4 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(local_14 + 0x18) = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(local_14 + 0x18) + 8) == param_3) {
    ppiVar4 = ppiVar3;
    if (*(char *)((int)ppiVar5 + 0x45) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar4 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x45) == '\0') {
        ppiVar4 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(local_14 + 0x18) + 8) = ppiVar4;
  }
  if (*(char *)(param_3 + 0x11) != '\x01') {
LAB_0042f9ae:
    FUN_004304d5(0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
LAB_0042f962:
  ppiVar4 = ppiVar3;
  if ((ppiVar5 == *(int ***)(*(int *)(local_14 + 0x18) + 4)) ||
     (*(char *)(ppiVar5 + 0x11) != '\x01')) goto LAB_0042f9aa;
  ppiVar3 = (int **)*ppiVar4;
  if (ppiVar5 == ppiVar3) {
    ppiVar3 = (int **)ppiVar4[2];
    if (*(char *)(ppiVar3 + 0x11) == '\0') {
      *(undefined *)(ppiVar3 + 0x11) = 1;
      *(undefined *)(ppiVar4 + 0x11) = 0;
      FUN_0042fa0b(ppiVar4);
      ppiVar3 = (int **)ppiVar4[2];
    }
    if (*(char *)((int)ppiVar3 + 0x45) == '\0') {
      if ((*(char *)(*ppiVar3 + 0x11) != '\x01') || (*(char *)(ppiVar3[2] + 0x11) != '\x01')) {
        if (*(char *)(ppiVar3[2] + 0x11) == '\x01') {
          *(undefined *)(*ppiVar3 + 0x11) = 1;
          *(undefined *)(ppiVar3 + 0x11) = 0;
          FUN_0042fa4d(ppiVar3);
          ppiVar3 = (int **)ppiVar4[2];
        }
        *(undefined *)(ppiVar3 + 0x11) = *(undefined *)(ppiVar4 + 0x11);
        *(undefined *)(ppiVar4 + 0x11) = 1;
        *(undefined *)(ppiVar3[2] + 0x11) = 1;
        FUN_0042fa0b(ppiVar4);
        goto LAB_0042f9aa;
      }
LAB_0042f959:
      *(undefined *)(ppiVar3 + 0x11) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar3 + 0x11) == '\0') {
      *(undefined *)(ppiVar3 + 0x11) = 1;
      *(undefined *)(ppiVar4 + 0x11) = 0;
      FUN_0042fa4d(ppiVar4);
      ppiVar3 = (int **)*ppiVar4;
    }
    if (*(char *)((int)ppiVar3 + 0x45) == '\0') {
      if ((*(char *)(ppiVar3[2] + 0x11) == '\x01') && (*(char *)(*ppiVar3 + 0x11) == '\x01'))
      goto LAB_0042f959;
      if (*(char *)(*ppiVar3 + 0x11) == '\x01') {
        *(undefined *)(ppiVar3[2] + 0x11) = 1;
        *(undefined *)(ppiVar3 + 0x11) = 0;
        FUN_0042fa0b(ppiVar3);
        ppiVar3 = (int **)*ppiVar4;
      }
      *(undefined *)(ppiVar3 + 0x11) = *(undefined *)(ppiVar4 + 0x11);
      *(undefined *)(ppiVar4 + 0x11) = 1;
      *(undefined *)(*ppiVar3 + 0x11) = 1;
      FUN_0042fa4d(ppiVar4);
LAB_0042f9aa:
      *(undefined *)(ppiVar5 + 0x11) = 1;
      goto LAB_0042f9ae;
    }
  }
  ppiVar3 = (int **)ppiVar4[1];
  ppiVar5 = ppiVar4;
  goto LAB_0042f962;
}



void __fastcall FUN_0042f9e5(int param_1)

{
  int *piVar1;
  
  piVar1 = (int *)(param_1 + 0x18);
  FUN_0043006b(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



void __thiscall FUN_0042fa0b(int param_1_00,int *param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1[2];
  param_1[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x45) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1;
  }
  ppiVar1[1] = (int *)param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1[1];
    if (param_1 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1;
  param_1[1] = (int)ppiVar1;
  return;
}



void __thiscall FUN_0042fa4d(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1;
  *param_1 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x45) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1;
  }
  *(int *)(iVar1 + 4) = param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1_00 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1[1];
    if (param_1 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1;
  param_1[1] = iVar1;
  return;
}



void __fastcall FUN_0042fa91(int *param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  iVar2 = param_1[1];
  if (*(char *)(iVar2 + 0x45) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x45) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x45) == '\0');
      param_1[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x45) == '\0' &&
             (param_1[1] == *(int *)(iVar2 + 8)))) {
        param_1[1] = iVar2;
      }
      param_1[1] = iVar2;
    }
    return;
  }
  FUN_00a3fb10();
  return;
}



void __thiscall
FUN_0042fae0(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00430228(param_3,param_1_00);
  *param_1 = param_1_00;
  param_1[1] = param_1_00;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x0042fbf1)
// WARNING: Removing unreachable block (ram,0x0042fc01)
// WARNING: Removing unreachable block (ram,0x0042fc0a)
// WARNING: Removing unreachable block (ram,0x0042fc0d)
// WARNING: Removing unreachable block (ram,0x0042fbfd)
// WARNING: Removing unreachable block (ram,0x0042fc1a)
// WARNING: Removing unreachable block (ram,0x0042fc2a)
// WARNING: Removing unreachable block (ram,0x0042fc35)
// WARNING: Removing unreachable block (ram,0x0042fc31)
// WARNING: Removing unreachable block (ram,0x0042fc25)
// WARNING: Removing unreachable block (ram,0x0042fc38)

void FUN_0042fb03(undefined4 param_1,undefined4 param_2,int *param_3)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x42fb0f;
  if (*(char *)((int)param_3 + 0x39) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_58,&DAT_03115668);
  }
  FUN_0043024e();
  ppiVar5 = (int **)*param_3;
  if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
    if (*(char *)(param_3[2] + 0x39) == '\0') {
      ppiVar5 = (int **)param_3[2];
    }
  }
  else {
    ppiVar5 = (int **)param_3[2];
  }
  ppiVar3 = (int **)param_3[1];
  if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
    ppiVar5[1] = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(local_14 + 0x18) + 4) == param_3) {
    *(int ***)(*(int *)(local_14 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar3 == param_3) {
    *ppiVar3 = (int *)ppiVar5;
  }
  else {
    ppiVar3[2] = (int *)ppiVar5;
  }
  if (**(int ***)(local_14 + 0x18) == param_3) {
    ppiVar4 = ppiVar3;
    if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar4 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x39) == '\0') {
        ppiVar4 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(local_14 + 0x18) = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(local_14 + 0x18) + 8) == param_3) {
    ppiVar4 = ppiVar3;
    if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar4 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x39) == '\0') {
        ppiVar4 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(local_14 + 0x18) + 8) = ppiVar4;
  }
  if (*(char *)(param_3 + 0xe) != '\x01') {
LAB_0042fd5a:
    FUN_004304f4(0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
LAB_0042fd0e:
  ppiVar4 = ppiVar3;
  if ((ppiVar5 == *(int ***)(*(int *)(local_14 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xe) != '\x01')
     ) goto LAB_0042fd56;
  ppiVar3 = (int **)*ppiVar4;
  if (ppiVar5 == ppiVar3) {
    ppiVar3 = (int **)ppiVar4[2];
    if (*(char *)(ppiVar3 + 0xe) == '\0') {
      *(undefined *)(ppiVar3 + 0xe) = 1;
      *(undefined *)(ppiVar4 + 0xe) = 0;
      FUN_004300e1(ppiVar4);
      ppiVar3 = (int **)ppiVar4[2];
    }
    if (*(char *)((int)ppiVar3 + 0x39) == '\0') {
      if ((*(char *)(*ppiVar3 + 0xe) != '\x01') || (*(char *)(ppiVar3[2] + 0xe) != '\x01')) {
        if (*(char *)(ppiVar3[2] + 0xe) == '\x01') {
          *(undefined *)(*ppiVar3 + 0xe) = 1;
          *(undefined *)(ppiVar3 + 0xe) = 0;
          FUN_00430123(ppiVar3);
          ppiVar3 = (int **)ppiVar4[2];
        }
        *(undefined *)(ppiVar3 + 0xe) = *(undefined *)(ppiVar4 + 0xe);
        *(undefined *)(ppiVar4 + 0xe) = 1;
        *(undefined *)(ppiVar3[2] + 0xe) = 1;
        FUN_004300e1(ppiVar4);
        goto LAB_0042fd56;
      }
LAB_0042fd05:
      *(undefined *)(ppiVar3 + 0xe) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar3 + 0xe) == '\0') {
      *(undefined *)(ppiVar3 + 0xe) = 1;
      *(undefined *)(ppiVar4 + 0xe) = 0;
      FUN_00430123(ppiVar4);
      ppiVar3 = (int **)*ppiVar4;
    }
    if (*(char *)((int)ppiVar3 + 0x39) == '\0') {
      if ((*(char *)(ppiVar3[2] + 0xe) == '\x01') && (*(char *)(*ppiVar3 + 0xe) == '\x01'))
      goto LAB_0042fd05;
      if (*(char *)(*ppiVar3 + 0xe) == '\x01') {
        *(undefined *)(ppiVar3[2] + 0xe) = 1;
        *(undefined *)(ppiVar3 + 0xe) = 0;
        FUN_004300e1(ppiVar3);
        ppiVar3 = (int **)*ppiVar4;
      }
      *(undefined *)(ppiVar3 + 0xe) = *(undefined *)(ppiVar4 + 0xe);
      *(undefined *)(ppiVar4 + 0xe) = 1;
      *(undefined *)(*ppiVar3 + 0xe) = 1;
      FUN_00430123(ppiVar4);
LAB_0042fd56:
      *(undefined *)(ppiVar5 + 0xe) = 1;
      goto LAB_0042fd5a;
    }
  }
  ppiVar3 = (int **)ppiVar4[1];
  ppiVar5 = ppiVar4;
  goto LAB_0042fd0e;
}



void __fastcall FUN_0042fd91(int param_1)

{
  int *piVar1;
  
  piVar1 = (int *)(param_1 + 0x18);
  FUN_004300a6(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x0042fea5)
// WARNING: Removing unreachable block (ram,0x0042feb5)
// WARNING: Removing unreachable block (ram,0x0042febe)
// WARNING: Removing unreachable block (ram,0x0042fec1)
// WARNING: Removing unreachable block (ram,0x0042feb1)
// WARNING: Removing unreachable block (ram,0x0042fece)
// WARNING: Removing unreachable block (ram,0x0042fede)
// WARNING: Removing unreachable block (ram,0x0042fee9)
// WARNING: Removing unreachable block (ram,0x0042fee5)
// WARNING: Removing unreachable block (ram,0x0042fed9)
// WARNING: Removing unreachable block (ram,0x0042feec)

void FUN_0042fdb7(undefined4 param_1,undefined4 param_2,int *param_3)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x42fdc3;
  if (*(char *)((int)param_3 + 0x29) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_58,&DAT_03115668);
  }
  FUN_0043029d();
  ppiVar5 = (int **)*param_3;
  if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
    if (*(char *)(param_3[2] + 0x29) == '\0') {
      ppiVar5 = (int **)param_3[2];
    }
  }
  else {
    ppiVar5 = (int **)param_3[2];
  }
  ppiVar3 = (int **)param_3[1];
  if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
    ppiVar5[1] = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(local_14 + 0x18) + 4) == param_3) {
    *(int ***)(*(int *)(local_14 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar3 == param_3) {
    *ppiVar3 = (int *)ppiVar5;
  }
  else {
    ppiVar3[2] = (int *)ppiVar5;
  }
  if (**(int ***)(local_14 + 0x18) == param_3) {
    ppiVar4 = ppiVar3;
    if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar4 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x29) == '\0') {
        ppiVar4 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(local_14 + 0x18) = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(local_14 + 0x18) + 8) == param_3) {
    ppiVar4 = ppiVar3;
    if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar4 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x29) == '\0') {
        ppiVar4 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(local_14 + 0x18) + 8) = ppiVar4;
  }
  if (*(char *)(param_3 + 10) != '\x01') {
LAB_0043000e:
    FUN_00430513(0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
LAB_0042ffc2:
  ppiVar4 = ppiVar3;
  if ((ppiVar5 == *(int ***)(*(int *)(local_14 + 0x18) + 4)) || (*(char *)(ppiVar5 + 10) != '\x01'))
  goto LAB_0043000a;
  ppiVar3 = (int **)*ppiVar4;
  if (ppiVar5 == ppiVar3) {
    ppiVar3 = (int **)ppiVar4[2];
    if (*(char *)(ppiVar3 + 10) == '\0') {
      *(undefined *)(ppiVar3 + 10) = 1;
      *(undefined *)(ppiVar4 + 10) = 0;
      FUN_004301a2(ppiVar4);
      ppiVar3 = (int **)ppiVar4[2];
    }
    if (*(char *)((int)ppiVar3 + 0x29) == '\0') {
      if ((*(char *)(*ppiVar3 + 10) != '\x01') || (*(char *)(ppiVar3[2] + 10) != '\x01')) {
        if (*(char *)(ppiVar3[2] + 10) == '\x01') {
          *(undefined *)(*ppiVar3 + 10) = 1;
          *(undefined *)(ppiVar3 + 10) = 0;
          FUN_004301e4(ppiVar3);
          ppiVar3 = (int **)ppiVar4[2];
        }
        *(undefined *)(ppiVar3 + 10) = *(undefined *)(ppiVar4 + 10);
        *(undefined *)(ppiVar4 + 10) = 1;
        *(undefined *)(ppiVar3[2] + 10) = 1;
        FUN_004301a2(ppiVar4);
        goto LAB_0043000a;
      }
LAB_0042ffb9:
      *(undefined *)(ppiVar3 + 10) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar3 + 10) == '\0') {
      *(undefined *)(ppiVar3 + 10) = 1;
      *(undefined *)(ppiVar4 + 10) = 0;
      FUN_004301e4(ppiVar4);
      ppiVar3 = (int **)*ppiVar4;
    }
    if (*(char *)((int)ppiVar3 + 0x29) == '\0') {
      if ((*(char *)(ppiVar3[2] + 10) == '\x01') && (*(char *)(*ppiVar3 + 10) == '\x01'))
      goto LAB_0042ffb9;
      if (*(char *)(*ppiVar3 + 10) == '\x01') {
        *(undefined *)(ppiVar3[2] + 10) = 1;
        *(undefined *)(ppiVar3 + 10) = 0;
        FUN_004301a2(ppiVar3);
        ppiVar3 = (int **)*ppiVar4;
      }
      *(undefined *)(ppiVar3 + 10) = *(undefined *)(ppiVar4 + 10);
      *(undefined *)(ppiVar4 + 10) = 1;
      *(undefined *)(*ppiVar3 + 10) = 1;
      FUN_004301e4(ppiVar4);
LAB_0043000a:
      *(undefined *)(ppiVar5 + 10) = 1;
      goto LAB_0043000e;
    }
  }
  ppiVar3 = (int **)ppiVar4[1];
  ppiVar5 = ppiVar4;
  goto LAB_0042ffc2;
}



void __fastcall FUN_00430045(int param_1)

{
  int *piVar1;
  
  piVar1 = (int *)(param_1 + 0x18);
  FUN_00430167(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



void FUN_0043006b(int param_1)

{
  if (*(char *)(param_1 + 0x45) == '\0') {
    FUN_0043006b(*(undefined4 *)(param_1 + 8));
    FUN_004304d5(0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_004300a6(int param_1)

{
  if (*(char *)(param_1 + 0x39) == '\0') {
    FUN_004300a6(*(undefined4 *)(param_1 + 8));
    FUN_004304f4(0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __thiscall FUN_004300e1(int param_1_00,int *param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1[2];
  param_1[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x39) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1;
  }
  ppiVar1[1] = (int *)param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1[1];
    if (param_1 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1;
  param_1[1] = (int)ppiVar1;
  return;
}



void __thiscall FUN_00430123(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1;
  *param_1 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x39) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1;
  }
  *(int *)(iVar1 + 4) = param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1_00 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1[1];
    if (param_1 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1;
  param_1[1] = iVar1;
  return;
}



void FUN_00430167(int param_1)

{
  if (*(char *)(param_1 + 0x29) == '\0') {
    FUN_00430167(*(undefined4 *)(param_1 + 8));
    FUN_00430513(0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __thiscall FUN_004301a2(int param_1_00,int *param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1[2];
  param_1[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x29) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1;
  }
  ppiVar1[1] = (int *)param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1[1];
    if (param_1 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1;
  param_1[1] = (int)ppiVar1;
  return;
}



void __thiscall FUN_004301e4(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1;
  *param_1 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x29) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1;
  }
  *(int *)(iVar1 + 4) = param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1_00 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1[1];
    if (param_1 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1;
  param_1[1] = iVar1;
  return;
}



undefined4 * __thiscall FUN_00430228(undefined4 *param_1_00,undefined4 param_1,undefined4 *param_2)

{
  *param_1_00 = 0;
  param_1_00[1] = param_1;
  if (param_2 == (undefined4 *)0x0) {
    FUN_00a3fb10();
  }
  *param_1_00 = *param_2;
  return param_1_00;
}



void __fastcall FUN_0043024e(int *param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  iVar2 = param_1[1];
  if (*(char *)(iVar2 + 0x39) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x39) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x39) == '\0');
      param_1[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x39) == '\0' &&
             (param_1[1] == *(int *)(iVar2 + 8)))) {
        param_1[1] = iVar2;
      }
      param_1[1] = iVar2;
    }
    return;
  }
  FUN_00a3fb10();
  return;
}



void __fastcall FUN_0043029d(int *param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  iVar2 = param_1[1];
  if (*(char *)(iVar2 + 0x29) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x29) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x29) == '\0');
      param_1[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x29) == '\0' &&
             (param_1[1] == *(int *)(iVar2 + 8)))) {
        param_1[1] = iVar2;
      }
      param_1[1] = iVar2;
    }
    return;
  }
  FUN_00a3fb10();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004302ec(undefined4 param_1,int param_2,int param_3)

{
  undefined4 uVar1;
  undefined local_40 [24];
  undefined4 local_28 [8];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x4302f8;
  FUN_004307dd(local_40,param_3 + ((uint)(param_2 == 0) + param_2) * 4);
  local_8 = 0;
  uVar1 = FUN_0043083d(local_28);
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_00a75400(uVar1);
  FUN_0042f245();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_28[0]);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00430362(void)

{
  undefined4 uVar1;
  int unaff_ESI;
  undefined4 local_30 [6];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x43036e;
  local_18 = 0;
  uVar1 = FUN_00a738c0();
  FUN_0043059b(*(undefined4 *)(unaff_ESI + 0x68),uVar1);
  local_8 = 0;
  uVar1 = FUN_00a77b20(local_30);
  local_8._0_1_ = 1;
  FUN_004305b7(uVar1);
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_0042f33c();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_30[0]);
}



void __thiscall
FUN_004303de(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  FUN_004308c1(param_1,param_2,param_3,param_4,param_5,param_1_00 + 8);
  return;
}



void __thiscall
FUN_00430400(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  FUN_004308e9(param_1,param_2,param_3,param_4,param_5,param_1_00);
  return;
}



void __thiscall
FUN_00430420(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0043091d(param_1,param_2,param_3,param_1_00);
  return;
}



void FUN_0043043a(char *param_1)

{
  code *pcVar1;
  char *pcVar2;
  undefined **local_10 [3];
  
  if (param_1 == (char *)0x0) {
    pcVar2 = (char *)0x0;
  }
  else {
    pcVar2 = param_1;
    if ((uint)(0xffffffff / ZEXT48(param_1)) < 0x1c) {
      param_1 = (char *)0x0;
      std::exception::exception((exception *)local_10,&param_1);
      local_10[0] = std::bad_alloc::vftable;
      __CxxThrowException_8(local_10,&DAT_031153a4);
      pcVar1 = (code *)swi(3);
      (*pcVar1)();
      return;
    }
  }
  operator_new((int)pcVar2 * 0x1c);
  return;
}



void __thiscall
FUN_00430487(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00430938(param_1,param_2,param_3,param_1_00);
  return;
}



void __thiscall
FUN_004304a1(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00430953(param_1,param_2,param_3,param_1_00);
  return;
}



void __thiscall
FUN_004304bb(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0043096c(param_1,param_2,param_3,param_1_00);
  return;
}



undefined4 __thiscall FUN_004304d5(undefined4 param_1_00,byte param_1)

{
  FUN_0042f1e3();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_004304f4(undefined4 param_1_00,byte param_1)

{
  FUN_00430536();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00430513(undefined4 param_1_00,byte param_1)

{
  FUN_004017b2(1,0);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00430536(void)

{
  FUN_00430564();
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_00430564(int *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c17215;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  if ((undefined4 *)*param_1 != (undefined4 *)0x0) {
    puVar1 = (undefined *)(***(code ***)(undefined4 *)*param_1)(1);
  }
  return puVar1;
}



int __thiscall FUN_0043059b(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_004306a7();
  *(undefined4 *)(param_1_00 + 0x18) = param_1;
  *(undefined4 *)(param_1_00 + 0x1c) = param_2;
  return param_1_00;
}



int __thiscall FUN_004305b7(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  undefined4 uVar4;
  int iVar5;
  uint uVar6;
  undefined4 uVar7;
  
  if (param_1_00 != param_1) {
    uVar2 = (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x54;
    if (uVar2 == 0) {
      FUN_004306ea();
    }
    else {
      uVar3 = (*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x54;
      if (uVar3 < uVar2) {
        uVar6 = FUN_004306d4();
        if (uVar6 < uVar2) {
          if (*(int *)(param_1_00 + 0xc) != 0) {
            FUN_0042f506(*(int *)(param_1_00 + 0xc),*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
          }
          cVar1 = FUN_00430731((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x54);
          if (cVar1 == '\0') {
            return param_1_00;
          }
          uVar4 = *(undefined4 *)(param_1_00 + 0xc);
          uVar7 = *(undefined4 *)(param_1 + 0x10);
          iVar5 = *(int *)(param_1 + 0xc);
        }
        else {
          iVar5 = uVar3 * 0x54 + *(int *)(param_1 + 0xc);
          FUN_00430985(*(int *)(param_1 + 0xc),iVar5,*(undefined4 *)(param_1_00 + 0xc));
          uVar4 = *(undefined4 *)(param_1_00 + 0x10);
          uVar7 = *(undefined4 *)(param_1 + 0x10);
        }
        iVar5 = FUN_004309ae(iVar5,uVar7,uVar4);
      }
      else {
        uVar4 = FUN_00430985(*(undefined4 *)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x10),
                             *(int *)(param_1_00 + 0xc));
        FUN_0042f506(uVar4,*(undefined4 *)(param_1_00 + 0x10));
        iVar5 = ((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x54) * 0x54 +
                *(int *)(param_1_00 + 0xc);
      }
      *(int *)(param_1_00 + 0x10) = iVar5;
    }
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __fastcall FUN_004306a7(int param_1)

{
  int aiStack_2c [6];
  int *local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  uStack_8 = 0x4306b3;
  local_14 = aiStack_2c;
  aiStack_2c[0] = param_1;
  FUN_004398d8();
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  return param_1;
}



int __fastcall FUN_004306d4(int param_1)

{
  if (*(int *)(param_1 + 0xc) == 0) {
    return 0;
  }
  return (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) / 0x54;
}



void __fastcall FUN_004306ea(int param_1)

{
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  FUN_004494bc(*(undefined4 *)(param_1 + 0x10),param_1);
  FUN_004494bc(*(undefined4 *)(param_1 + 0xc),param_1);
  FUN_00430777(&local_10,local_10,local_c,local_18,local_14);
  return;
}



undefined4 __thiscall FUN_00430731(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  int iVar2;
  
  uVar1 = 0;
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  *(undefined4 *)(param_1_00 + 0x10) = 0;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  if (param_1 == 0) {
    uVar1 = 0;
  }
  else {
    if (0x30c30c3 < param_1) {
      uVar1 = FUN_004423c1();
    }
    iVar2 = FUN_004309c9(param_1,uVar1);
    *(int *)(param_1_00 + 0xc) = iVar2;
    *(int *)(param_1_00 + 0x10) = iVar2;
    *(uint *)(param_1_00 + 0x14) = param_1 * 0x54 + iVar2;
    uVar1 = 1;
  }
  return uVar1;
}



int __thiscall
FUN_00430777(int param_1_00,int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_10 [4];
  undefined4 local_c;
  
  FUN_004494bc(param_3,param_1_00);
  FUN_004494bc(param_5,param_1_00);
  cVar1 = FUN_00449367(local_10);
  if (cVar1 == '\0') {
    uVar2 = FUN_00430985(local_c,*(undefined4 *)(param_1_00 + 0x10),*(undefined4 *)(param_1 + 4));
    FUN_0042f506(uVar2,*(undefined4 *)(param_1_00 + 0x10));
    *(undefined4 *)(param_1_00 + 0x10) = uVar2;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_004307dd(undefined4 *param_1_00,undefined4 param_1,undefined4 *param_2)

{
  undefined local_30 [28];
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0;
  local_14 = 0;
  FUN_004398f2();
  local_8 = 0;
  local_14 = 1;
  for (; param_1_00 != param_2; param_1_00 = param_1_00 + 1) {
    basic_string<>(*param_1_00);
    local_8 = 1;
    FUN_0041b0a1(local_30);
    local_8 = local_8 & 0xffffff00;
    FUN_00401829(1,0);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0043083d(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  undefined local_34 [28];
  undefined4 local_18;
  uint local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0;
  local_18 = 0;
  FUN_004398f2();
  local_8 = 0;
  local_18 = 1;
  local_14 = 0;
  if ((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x1c != 0) {
    do {
      uVar1 = FUN_0042b490(local_14);
      uVar1 = FUN_00a7a0c0(local_34,uVar1);
      local_8 = 1;
      FUN_00430aa3(uVar1);
      local_8 = local_8 & 0xffffff00;
      FUN_004017b2(1,0);
      local_14 = local_14 + 1;
    } while (local_14 < (uint)((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x1c));
  }
  return param_1;
}



void FUN_004308c1(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  FUN_00430eea(param_2,param_4,param_5,param_6,param_4,0);
  return;
}



void FUN_004308e9(void)

{
  int *piVar1;
  char cVar2;
  int *param_5;
  
  cVar2 = FUN_00449367(&stack0x0000000c);
  piVar1 = param_5;
  while (cVar2 == '\0') {
    *piVar1 = *piVar1 + 1;
    FUN_0043024e();
    cVar2 = FUN_00449367(&stack0x0000000c);
  }
  return;
}



void FUN_0043091d(int param_1,int param_2)

{
  for (; param_1 != param_2; param_1 = param_1 + 0x1c) {
    FUN_00431037(0);
  }
  return;
}



void FUN_00430938(int param_1,int param_2)

{
  for (; param_1 != param_2; param_1 = param_1 + 8) {
    FUN_00431057(0);
  }
  return;
}



void FUN_00430953(int param_1,int param_2)

{
  for (; param_1 != param_2; param_1 = param_1 + 0x54) {
    FUN_0043107a();
  }
  return;
}



void FUN_0043096c(int param_1,int param_2)

{
  for (; param_1 != param_2; param_1 = param_1 + 0x54) {
    FUN_004310b0();
  }
  return;
}



void FUN_00430985(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00430f42(param_1,param_2,param_3,param_2,param_2,0);
  return;
}



void __thiscall
FUN_004309ae(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00430f82(param_1,param_2,param_3,param_1_00 + 8);
  return;
}



void FUN_004309c9(char *param_1)

{
  code *pcVar1;
  char *pcVar2;
  undefined **local_10 [3];
  
  if (param_1 == (char *)0x0) {
    pcVar2 = (char *)0x0;
  }
  else {
    pcVar2 = param_1;
    if ((uint)(0xffffffff / ZEXT48(param_1)) < 0x54) {
      param_1 = (char *)0x0;
      std::exception::exception((exception *)local_10,&param_1);
      local_10[0] = std::bad_alloc::vftable;
      __CxxThrowException_8(local_10,&DAT_031153a4);
      pcVar1 = (code *)swi(3);
      (*pcVar1)();
      return;
    }
  }
  operator_new((int)pcVar2 * 0x54);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00430a16(int param_1_00,int param_1)

{
  char cVar1;
  undefined4 uVar2;
  int aiStack_3c [5];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  int *local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x430a22;
  local_1c = aiStack_3c;
  aiStack_3c[0] = param_1_00;
  local_18 = param_1_00;
  FUN_004398d8();
  local_8 = 0;
  aiStack_3c[0] = (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x1c;
  cVar1 = FUN_0042f1ff();
  if (cVar1 != '\0') {
    aiStack_3c[0] = param_1;
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_004494bc(*(undefined4 *)(param_1 + 0x10));
    aiStack_3c[0] = param_1;
    FUN_004494bc(*(undefined4 *)(param_1 + 0xc));
    aiStack_3c[0] = *(int *)(param_1_00 + 0xc);
    uVar2 = FUN_00430faa(local_28,local_24,local_20,local_1c);
    *(undefined4 *)(param_1_00 + 0x10) = uVar2;
  }
  return param_1_00;
}



void Catch_All_00430a91(void)

{
  code *pcVar1;
  
  FUN_0041c3a7();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_00430aa3(int param_1_00,undefined4 param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(param_1_00 + 0x10);
  uVar2 = FUN_00430b0c();
  if ((uint)((iVar1 - *(int *)(param_1_00 + 0xc)) / 0x1c) < uVar2) {
    uVar3 = FUN_00430b8c(iVar1,1,param_1);
    *(undefined4 *)(param_1_00 + 0x10) = uVar3;
  }
  else {
    FUN_004494bc(iVar1,param_1_00);
    FUN_00430b22(&local_10,local_10,local_c,param_1);
  }
  return;
}



void FUN_00430afe(void)

{
  FUN_00431037(0);
  return;
}



int __fastcall FUN_00430b0c(int param_1)

{
  if (*(int *)(param_1 + 0xc) == 0) {
    return 0;
  }
  return (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc)) / 0x1c;
}



undefined4 __thiscall
FUN_00430b22(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  int local_c;
  int iStack_8;
  
  local_c = param_1_00;
  iStack_8 = param_1_00;
  if ((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x1c == 0) {
    uVar1 = 0;
  }
  else {
    FUN_004494bc(*(int *)(param_1_00 + 0xc),param_1_00);
    uVar1 = FUN_0041b6e4(&local_c);
  }
  FUN_00430bc5(param_2,param_3,1,param_4);
  FUN_004494bc(*(undefined4 *)(param_1_00 + 0xc),param_1_00);
  FUN_0041b6b7(param_1,uVar1);
  return param_1;
}



int __thiscall FUN_00430b8c(int param_1_00,int param_1,int param_2,undefined4 param_3)

{
  FUN_00430fcc(param_1,param_2,param_3,param_1_00 + 8);
  return param_2 * 0x1c + param_1;
}



undefined4 __thiscall FUN_00430bb1(int param_1_00,undefined4 param_1)

{
  FUN_004494bc(*(undefined4 *)(param_1_00 + 0xc),param_1_00);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __thiscall
FUN_00430bc5(int param_1_00,undefined4 param_1,int param_2,uint param_3,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_4)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  int iVar5;
  int extraout_ECX;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_50 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x54;
  local_8 = 0x430bd1;
  uVar1 = FUN_00430b0c();
  if (param_3 != 0) {
    iVar2 = (*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x1c;
    iVar5 = 0x9249249;
    if (0x9249249U - iVar2 < param_3) {
      iVar2 = FUN_004423c1();
      iVar5 = extraout_ECX;
    }
    uVar3 = iVar2 + param_3;
    if (uVar1 < uVar3) {
      if (iVar5 - (uVar1 >> 1) < uVar1) {
        uVar1 = 0;
      }
      else {
        uVar1 = uVar1 + (uVar1 >> 1);
      }
      if (uVar1 < uVar3) {
        uVar1 = uVar3;
      }
      iVar5 = FUN_0043043a(uVar1,0);
      iVar2 = (param_2 - *(int *)(param_1_00 + 0xc)) / 0x1c;
      local_8 = 0;
      FUN_00430b8c(iVar2 * 0x1c + iVar5,param_3,param_4);
      FUN_00430ff4(*(undefined4 *)(param_1_00 + 0xc),param_2,iVar5);
      FUN_00430ff4(param_2,*(undefined4 *)(param_1_00 + 0x10),(iVar2 + param_3) * 0x1c + iVar5);
      if (*(int *)(param_1_00 + 0xc) != 0) {
        FUN_0042f41a(*(int *)(param_1_00 + 0xc),*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
      }
      *(uint *)(param_1_00 + 0x14) = uVar1 * 0x1c + iVar5;
      *(uint *)(param_1_00 + 0x10) =
           (param_3 + (*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x1c) * 0x1c +
           iVar5;
      *(int *)(param_1_00 + 0xc) = iVar5;
    }
    else {
      if ((uint)((*(int *)(param_1_00 + 0x10) - param_2) / 0x1c) < param_3) {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
        basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  (abStack_34,param_4);
        local_8 = 2;
        FUN_00430ff4(param_2,*(undefined4 *)(param_1_00 + 0x10),param_3 * 0x1c + param_2);
        local_8 = CONCAT31(local_8._1_3_,3);
        FUN_00430b8c(*(undefined4 *)(param_1_00 + 0x10),
                     param_3 - (*(int *)(param_1_00 + 0x10) - param_2) / 0x1c,abStack_34);
        local_8 = 2;
        *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + param_3 * 0x1c;
        FUN_00431209(param_2,*(int *)(param_1_00 + 0x10) + param_3 * -0x1c,abStack_34);
      }
      else {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
        basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  (abStack_50,param_4);
        local_8 = 5;
        iVar2 = *(int *)(param_1_00 + 0x10);
        iVar5 = iVar2 + param_3 * -0x1c;
        uVar4 = FUN_00430ff4(iVar5,iVar2,iVar2);
        *(undefined4 *)(param_1_00 + 0x10) = uVar4;
        FUN_0043100f(param_2,iVar5,iVar2);
        FUN_00431209(param_2,param_3 * 0x1c + param_2,abStack_50);
      }
      FUN_004017b2(1,0);
    }
  }
  FUN_00a4220a();
  return;
}



void Catch_All_00430cdf(void)

{
  int iVar1;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + -0x5c);
  if (1 < *(int *)(unaff_EBP + -0x50)) {
    FUN_0042f41a(*(undefined4 *)(unaff_EBP + -0x54),iVar1 * 0x1c + *(int *)(unaff_EBP + -0x54));
  }
  if (0 < *(int *)(unaff_EBP + -0x50)) {
    FUN_0042f41a(iVar1 * 0x1c + *(int *)(unaff_EBP + -0x54),
                 (*(int *)(unaff_EBP + 0x10) + iVar1) * 0x1c + *(int *)(unaff_EBP + -0x54));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x54));
}



void FUN_00430d29(void)

{
  undefined4 uVar1;
  int unaff_EBP;
  int unaff_ESI;
  uint unaff_EDI;
  
  __CxxThrowException_8();
  if ((uint)((*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_EBP + 0xc)) / 0x1c) < unaff_EDI) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EBP + -0x30),
               *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                (unaff_EBP + -0x60));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_00430ff4(*(undefined4 *)(unaff_EBP + 0xc));
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_00430b8c(*(undefined4 *)(unaff_ESI + 0x10));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + unaff_EDI * 0x1c;
    FUN_00431209(*(undefined4 *)(unaff_EBP + 0xc));
  }
  else {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EBP + -0x4c),
               *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                (unaff_EBP + -0x60));
    *(undefined4 *)(unaff_EBP + -4) = 5;
    *(undefined4 *)(unaff_EBP + -0x50) = *(undefined4 *)(unaff_ESI + 0x10);
    *(int *)(unaff_EBP + -0x50) = *(int *)(unaff_EBP + -0x50) + unaff_EDI * -0x1c;
    uVar1 = FUN_00430ff4(*(undefined4 *)(unaff_EBP + -0x50));
    *(undefined4 *)(unaff_ESI + 0x10) = uVar1;
    FUN_0043100f(*(undefined4 *)(unaff_EBP + 0xc));
    FUN_00431209(*(undefined4 *)(unaff_EBP + 0xc));
  }
  FUN_004017b2();
  FUN_00a4220a();
  return;
}



void Catch_All_00430dad(void)

{
  int iVar1;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 0x10) * 0x1c;
  FUN_0042f41a(iVar1 + *(int *)(unaff_EBP + 0xc),
               *(int *)(*(int *)(unaff_EBP + -0x58) + 0x10) + iVar1);
  FUN_00430d29(0);
  return;
}



void Catch_All_00430e76(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00430ed3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_00430eea(int param_1,int param_2,int param_3)

{
  for (; param_1 != param_2; param_1 = param_1 + 0x1c) {
    FUN_00431268(param_3,param_1);
    param_3 = param_3 + 0x1c;
  }
  return param_3;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 Catch_All_00430f1c(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0x10);
      iVar1 = iVar1 + 0x1c) {
    FUN_00431037(0);
  }
  __CxxThrowException_8(0,0);
  return *(undefined4 *)(unaff_EBP + 0x10);
}



int FUN_00430f42(int param_1,int param_2,int param_3)

{
  uint local_c;
  uint local_8;
  
  local_8 = local_8 & 0xffffff00;
  local_c = local_c & 0xffffff00;
  FUN_004310e6(param_1,param_2,param_3,param_2,local_c,local_8);
  return ((param_2 - param_1) / 0x54) * 0x54 + param_3;
}



void FUN_00430f82(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_0043110c(param_1,param_2,param_3,param_4,param_2,0);
  return;
}



void __thiscall
FUN_00430faa(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  FUN_00431164(param_1,param_2,param_3,param_4,param_5,param_1_00 + 8);
  return;
}



void FUN_00430fcc(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_0043118c(param_1,param_2,param_3,param_4,0,0);
  return;
}



void __thiscall
FUN_00430ff4(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_004311e1(param_1,param_2,param_3,param_1_00 + 8);
  return;
}



void FUN_0043100f(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0043122a(param_1,param_2,param_3,param_2,param_2,0);
  return;
}



undefined4 __thiscall FUN_00431037(undefined4 param_1_00,byte param_1)

{
  FUN_004017b2(1,0);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_00431057(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 4) != 0) {
    FUN_0040127a();
  }
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0043107a(int param_1)

{
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x38));
}



void __fastcall FUN_004310b0(int param_1)

{
  FUN_0042f245();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x38));
}



int FUN_004310e6(int param_1,int param_2,int param_3)

{
  for (; param_1 != param_2; param_1 = param_1 + 0x54) {
    FUN_00431293(param_1);
    param_3 = param_3 + 0x54;
  }
  return param_3;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_0043110c(int param_1,int param_2,int param_3)

{
  for (; param_1 != param_2; param_1 = param_1 + 0x54) {
    FUN_0043154e(param_3,param_1);
    param_3 = param_3 + 0x54;
  }
  return param_3;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 Catch_All_0043113e(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0x10);
      iVar1 = iVar1 + 0x54) {
    FUN_004310b0();
  }
  __CxxThrowException_8(0,0);
  return *(undefined4 *)(unaff_EBP + 0x10);
}



void FUN_00431164(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  FUN_0041bcb6(param_2,param_4,param_5,param_6,param_4,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0043118c(int param_1,int param_2,undefined4 param_3)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    FUN_00431268(param_1,param_3);
    param_1 = param_1 + 0x1c;
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_004311be(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 8); iVar1 = iVar1 + 0x1c)
  {
    FUN_00431037(0);
  }
  __CxxThrowException_8(0,0);
  return;
}



void FUN_004311e1(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_0043145f(param_1,param_2,param_3,param_4,param_2,0);
  return;
}



void FUN_00431209(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1,
                 basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                 *param_2,basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          *param_3)

{
  for (; param_1 != param_2; param_1 = param_1 + 0x1c) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (param_1,param_3,0,0xffffffff);
  }
  return;
}



int FUN_0043122a(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)

{
  FUN_004314e4(param_1,param_2,param_3,param_2,param_5,0);
  return param_3 + ((param_2 - param_1) / 0x1c) * -0x1c;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined *
FUN_00431268(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c3081f;
  if (param_1 != (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)0x0
     ) {
    puVar1 = (undefined *)
             std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
             basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       (param_1,param_2);
  }
  return puVar1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00431293(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00,param_1,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);
  FUN_004312d6(param_1 + 0x20);
  FUN_004312d6(param_1 + 0x38);
  param_1_00[0x50] = param_1[0x50];
  param_1_00[0x51] = param_1[0x51];
  return param_1_00;
}



int __thiscall FUN_004312d6(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  undefined4 uVar4;
  int iVar5;
  uint uVar6;
  undefined4 uVar7;
  
  if (param_1_00 != param_1) {
    uVar2 = (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x1c;
    if (uVar2 == 0) {
      FUN_004313c6();
    }
    else {
      uVar3 = (*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x1c;
      if (uVar3 < uVar2) {
        uVar6 = FUN_00430b0c();
        if (uVar6 < uVar2) {
          if (*(int *)(param_1_00 + 0xc) != 0) {
            FUN_0042f41a(*(int *)(param_1_00 + 0xc),*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
          }
          cVar1 = FUN_0042f1ff((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x1c);
          if (cVar1 == '\0') {
            return param_1_00;
          }
          uVar4 = *(undefined4 *)(param_1_00 + 0xc);
          uVar7 = *(undefined4 *)(param_1 + 0x10);
          iVar5 = *(int *)(param_1 + 0xc);
        }
        else {
          iVar5 = uVar3 * 0x1c + *(int *)(param_1 + 0xc);
          FUN_0043150b(*(int *)(param_1 + 0xc),iVar5,*(undefined4 *)(param_1_00 + 0xc));
          uVar4 = *(undefined4 *)(param_1_00 + 0x10);
          uVar7 = *(undefined4 *)(param_1 + 0x10);
        }
        iVar5 = FUN_00431533(iVar5,uVar7,uVar4);
      }
      else {
        uVar4 = FUN_0043150b(*(undefined4 *)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x10),
                             *(int *)(param_1_00 + 0xc));
        FUN_0042f41a(uVar4,*(undefined4 *)(param_1_00 + 0x10));
        iVar5 = ((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x1c) * 0x1c +
                *(int *)(param_1_00 + 0xc);
      }
      *(int *)(param_1_00 + 0x10) = iVar5;
    }
  }
  return param_1_00;
}



void __fastcall FUN_004313c6(int param_1)

{
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_004494bc(*(undefined4 *)(param_1 + 0x10),param_1);
  FUN_004494bc(*(undefined4 *)(param_1 + 0xc),param_1);
  FUN_00431401(&local_14,local_14,local_10,local_c,local_8);
  return;
}



int __thiscall
FUN_00431401(int param_1_00,int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_10 [4];
  undefined4 local_c;
  
  FUN_004494bc(param_3,param_1_00);
  FUN_004494bc(param_5,param_1_00);
  cVar1 = FUN_00449367(local_10);
  if (cVar1 == '\0') {
    uVar2 = FUN_0043150b(local_c,*(undefined4 *)(param_1_00 + 0x10),*(undefined4 *)(param_1 + 4));
    FUN_0042f41a(uVar2,*(undefined4 *)(param_1_00 + 0x10));
    *(undefined4 *)(param_1_00 + 0x10) = uVar2;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void FUN_0043145f(int param_1,int param_2,int param_3)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_34 [24];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x43146b;
  local_1c = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_34,0);
  local_8 = 1;
  for (; param_1 != param_2; param_1 = param_1 + 0x1c) {
    FUN_00431268(param_3,local_34);
    FUN_0043165e(param_1);
    param_3 = param_3 + 0x1c;
  }
  FUN_004017b2(1,0);
  FUN_00a4220a();
  return;
}



void Catch_All_004314b4(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x38); iVar1 != *(int *)(unaff_EBP + -0x34);
      iVar1 = iVar1 + 0x1c) {
    FUN_00431037(0);
  }
  __CxxThrowException_8(0,0);
  FUN_004017b2(1,unaff_EBX);
  FUN_00a4220a();
  return;
}



int FUN_004314e4(int param_1,int param_2,int param_3)

{
  if (param_1 != param_2) {
    do {
      param_3 = param_3 + -0x1c;
      param_2 = param_2 + -0x1c;
      FUN_0043165e(param_2);
    } while (param_2 != param_1);
  }
  return param_3;
}



void FUN_0043150b(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_004315cf(param_1,param_2,param_3,param_2,param_2,0);
  return;
}



void __thiscall
FUN_00431533(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0043160e(param_1,param_2,param_3,param_1_00 + 8);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_0043154e(int param_1,undefined4 param_2)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c3081f;
  if (param_1 != 0) {
    puVar1 = (undefined *)FUN_00431579(param_2);
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00431579(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1_00,param_1);
  *(undefined4 *)(param_1_00 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);
  FUN_0042f034(param_1 + 0x20);
  FUN_0042f034(param_1 + 0x38);
  param_1_00[0x50] = param_1[0x50];
  param_1_00[0x51] = param_1[0x51];
  return param_1_00;
}



int FUN_004315cf(int param_1,int param_2,int param_3)

{
  FUN_00431636(param_1,param_2,param_3,param_2,0,0);
  return ((param_2 - param_1) / 0x1c) * 0x1c + param_3;
}



void FUN_0043160e(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00430eea(param_1,param_2,param_3,param_4,param_2,0);
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00431636(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_3)

{
  for (; param_1 != param_2; param_1 = param_1 + 0x1c) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (param_3,param_1,0,0xffffffff);
    param_3 = param_3 + 0x1c;
  }
  return param_3;
}



void __thiscall FUN_0043165e(int param_1_00,int param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  if (param_1_00 != param_1) {
    uVar1 = *(undefined4 *)(param_1_00 + 4);
    uVar2 = *(undefined4 *)(param_1_00 + 8);
    uVar3 = *(undefined4 *)(param_1_00 + 0xc);
    uVar4 = *(undefined4 *)(param_1_00 + 0x10);
    *(undefined4 *)(param_1_00 + 4) = *(undefined4 *)(param_1 + 4);
    *(undefined4 *)(param_1_00 + 8) = *(undefined4 *)(param_1 + 8);
    *(undefined4 *)(param_1_00 + 0xc) = *(undefined4 *)(param_1 + 0xc);
    *(undefined4 *)(param_1_00 + 0x10) = *(undefined4 *)(param_1 + 0x10);
    *(undefined4 *)(param_1 + 4) = uVar1;
    *(undefined4 *)(param_1 + 8) = uVar2;
    *(undefined4 *)(param_1 + 0xc) = uVar3;
    *(undefined4 *)(param_1 + 0x10) = uVar4;
    uVar1 = *(undefined4 *)(param_1_00 + 0x14);
    *(undefined4 *)(param_1_00 + 0x14) = *(undefined4 *)(param_1 + 0x14);
    *(undefined4 *)(param_1 + 0x14) = uVar1;
    uVar1 = *(undefined4 *)(param_1_00 + 0x18);
    *(undefined4 *)(param_1_00 + 0x18) = *(undefined4 *)(param_1 + 0x18);
    *(undefined4 *)(param_1 + 0x18) = uVar1;
  }
  ___security_check_cookie_4();
  return;
}



bool FUN_004316c1(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  
  iVar1 = FUN_00429980(param_2);
  return iVar1 < 0;
}



void FUN_004316d8(undefined4 param_1,undefined4 param_2)

{
  FUN_004316c1(param_1,param_2);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004316ea(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAC38D41E::WEBAE1F95>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00431730(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int **)(unaff_EBP + 8) != (int *)0x0) {
    (**(code **)(**(int **)(unaff_EBP + 8) + 0x10))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0043182f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int **)(unaff_EBP + 8) != (int *)0x0) {
    (**(code **)(**(int **)(unaff_EBP + 8) + 4))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00431eaa(undefined4 *param_1)

{
  FUN_00432034();
  *param_1 = wxGIFHandler::vftable;
  FUN_00432199(L"GIF file");
  FUN_00432199(&DAT_00faef24);
  param_1[0x21] = 0xd;
  FUN_00432199(L"image/gif");
  param_1[0x24] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00431f0a(undefined4 *param_1)

{
  undefined local_38 [36];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x431f16;
  local_14 = param_1;
  FUN_00432034();
  local_8 = 0;
  *param_1 = wxJPEGHandler::vftable;
  FUN_00432199(L"JPEG file");
  FUN_00432199(&DAT_00faef54);
  FUN_004325b6(L"jpeg");
  local_8._0_1_ = 1;
  FUN_00854700(local_38,1);
  local_8._0_1_ = 0;
  FUN_0040159c();
  FUN_004325b6(&DAT_00faef68);
  local_8._0_1_ = 2;
  FUN_00854700(local_38,1);
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_0040159c();
  param_1[0x21] = 0x11;
  FUN_00432199(L"image/jpeg");
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00431fba(undefined4 *param_1)

{
  FUN_00432034();
  *param_1 = wxPNGHandler::vftable;
  FUN_00432199(L"PNG file");
  FUN_00432199(&DAT_00faeef4);
  param_1[0x21] = 0xf;
  FUN_00432199(L"image/png");
  return param_1;
}



undefined4 __thiscall FUN_00432013(undefined4 param_1_00,byte param_1)

{
  FUN_0043209b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined FUN_0043202f(void)

{
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00432034(undefined4 *param_1)

{
  undefined *puVar1;
  
  param_1[1] = 0;
  puVar1 = PTR_DAT_03236318;
  *param_1 = wxImageHandler::vftable;
  FUN_004325b6(puVar1);
  FUN_004325b6(PTR_DAT_03236318);
  FUN_00853ce0(0);
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x18));
  param_1[0x1f] = 0;
  param_1[0x21] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0043209b(undefined4 *param_1)

{
  FUN_0040159c();
  FUN_00853f30();
  FUN_0040159c();
  FUN_0040159c();
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined4 FUN_004320ea(void)

{
  return 1;
}



undefined4 __thiscall
FUN_004320f0(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4
            ,undefined4 param_5)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *pbVar4;
  undefined local_10 [12];
  
  puVar1 = (undefined4 *)
           std::
           basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
           begin(param_1_00,local_10);
  iVar2 = FUN_00412602(param_2,param_3,*puVar1,puVar1[1]);
  uVar3 = FUN_00412602(param_4,param_5,param_2,param_3);
  FID_conflict_erase(iVar2,uVar3);
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    pbVar4 = param_1_00 + 4;
  }
  else {
    pbVar4 = *(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
               **)(param_1_00 + 4);
  }
  FUN_00412747(pbVar4 + iVar2 * 2,param_1_00);
  return param_1;
}



void __fastcall
FUN_00432156(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined local_20 [8];
  undefined local_18 [8];
  undefined local_10 [12];
  
  puVar3 = (undefined4 *)FUN_00412721(local_20);
  uVar1 = *puVar3;
  uVar2 = puVar3[1];
  puVar3 = (undefined4 *)
           std::
           basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
           begin(param_1,local_18);
  FUN_004320f0(local_10,*puVar3,puVar3[1],uVar1,uVar2);
  return;
}



undefined4 __thiscall FUN_00432199(undefined4 param_1_00,int param_1)

{
  if (param_1 == 0) {
    FUN_00432156();
  }
  else {
    FUN_0042a2f0(param_1);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_004321bb(undefined4 *param_1)

{
  FUN_00432034();
  *param_1 = wxXPMHandler::vftable;
  FUN_00432199(L"XPM file");
  FUN_00432199(&DAT_00faef9c);
  param_1[0x21] = 9;
  FUN_00432199(L"image/xpm");
  return param_1;
}



void __fastcall FUN_00432214(int *param_1)

{
  int iVar1;
  
  if ((*(char *)(param_1 + 2) != '\0') && (iVar1 = *param_1, iVar1 != 0)) {
    FUN_0040159c();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __thiscall FUN_00432231(undefined4 param_1_00,undefined4 *param_1)

{
  param_1[1] = 0;
  *param_1 = param_1_00;
  *(undefined *)(param_1 + 2) = 0;
  return;
}



int __fastcall FUN_00432242(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (*(uint *)(iVar1 + 0x18) < 8) {
    iVar1 = iVar1 + 4;
  }
  else {
    iVar1 = *(int *)(iVar1 + 4);
  }
  return iVar1 + param_1[1] * 2;
}



int __fastcall thunk_FUN_00432242(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (*(uint *)(iVar1 + 0x18) < 8) {
    iVar1 = iVar1 + 4;
  }
  else {
    iVar1 = *(int *)(iVar1 + 4);
  }
  return iVar1 + param_1[1] * 2;
}



bool FUN_0043225e(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = FUN_00432636(param_2,1);
  return cVar1 == '\0';
}



void * FUN_00432277(void *param_1,int param_2)

{
  void *_Dst;
  
  _Dst = _malloc(param_2 + 1U);
  _memcpy(_Dst,param_1,param_2 + 1U);
  return _Dst;
}



void __thiscall FUN_00432299(void **param_1_00,void **param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  void *pvVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  
  FUN_0043c1dd();
  pvVar2 = (void *)FUN_00850350();
  pvVar3 = *param_1;
  if (pvVar3 == pvVar2) {
    pvVar3 = (void *)FUN_00850350();
    *param_1_00 = pvVar3;
  }
  else if (*(char *)((int)pvVar3 + 10) == '\0') {
    puVar4 = (undefined4 *)operator_new(0xc);
    if (puVar4 == (undefined4 *)0x0) {
      puVar4 = (undefined4 *)0x0;
    }
    else {
      uVar1 = *(undefined4 *)((int)*param_1 + 4);
                    // WARNING: Load size is inaccurate
      uVar5 = FUN_00432277(**param_1,uVar1);
      *puVar4 = uVar5;
      puVar4[1] = uVar1;
      *(undefined2 *)(puVar4 + 2) = 1;
      *(undefined *)((int)puVar4 + 10) = 1;
    }
    *param_1_00 = puVar4;
  }
  else {
    *param_1_00 = pvVar3;
    FUN_0043c126();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00432305(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00850350();
  *param_1_00 = uVar1;
  FUN_00432299(param_1);
  return param_1_00;
}



int FUN_00432335(char *param_1)

{
  char *pcVar1;
  char cVar2;
  
  if (param_1 != (char *)0x0) {
    pcVar1 = param_1 + 1;
    do {
      cVar2 = *param_1;
      param_1 = param_1 + 1;
    } while (cVar2 != '\0');
    return (int)param_1 - (int)pcVar1;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int ** FUN_0043234d(int **param_1,int param_2,int param_3)

{
  int *piVar1;
  
  if (param_3 == -1) {
    param_3 = FUN_00432335(param_2);
  }
  piVar1 = (int *)FUN_00850350();
  *param_1 = piVar1;
  if (param_2 != 0) {
    piVar1 = (int *)operator_new(0xc);
    if (piVar1 == (int *)0x0) {
      piVar1 = (int *)0x0;
    }
    else {
      *piVar1 = param_2;
      piVar1[1] = param_3;
      *(undefined2 *)(piVar1 + 2) = 1;
      *(undefined *)((int)piVar1 + 10) = 0;
    }
    *param_1 = piVar1;
  }
  return param_1;
}



undefined4 __thiscall FUN_004323b7(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_0043234d(param_1,*param_1_00,param_1_00[1],0);
  return param_1;
}



undefined4 FUN_004323d6(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  
  iVar1 = FUN_00850390(param_2);
  if (iVar1 == 0) {
    FUN_0043234d(param_1,&PTR_02bd3fc0,0);
  }
  else {
    FUN_004323b7(param_1);
  }
  return param_1;
}



undefined4 FUN_00432413(undefined4 param_1,undefined4 param_2)

{
  FUN_004323d6(param_1,param_2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0043242d(undefined4 param_1)

{
  undefined4 uVar1;
  undefined local_18 [4];
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x432439;
  local_14 = 0;
  uVar1 = FUN_00432413(local_18,DAT_032bd50c);
  local_8 = 1;
  FUN_00432305(uVar1);
  local_14 = 1;
  local_8 = local_8 & 0xffffff00;
  FUN_0043c1dd();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __thiscall
FUN_00432475(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1_00);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  FUN_00853ce0(0);
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            (param_1_00 + 0x34);
  *(undefined4 *)(param_1_00 + 0x50) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            (param_1_00 + 0x58);
  *(undefined4 *)(param_1_00 + 0x74) = 0;
  FUN_00859060(param_1,param_2,param_3);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0043250a(void)

{
  FUN_0040159c();
  FUN_0040159c();
  FUN_00853f30();
  FUN_0040159c();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __thiscall
FUN_00432544(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,undefined4 param_1,undefined4 param_2)

{
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1_00);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  FUN_00853ce0(0);
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            (param_1_00 + 0x34);
  *(undefined4 *)(param_1_00 + 0x50) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            (param_1_00 + 0x58);
  *(undefined4 *)(param_1_00 + 0x74) = 0;
  FUN_00858e70(param_1,param_2);
  return param_1_00;
}



int __thiscall FUN_004325a0(int param_1_00,undefined4 param_1)

{
  basic_string<>(param_1);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  return param_1_00;
}



int __thiscall FUN_004325b6(int param_1_00,undefined2 *param_1)

{
  if (param_1 == (undefined2 *)0x0) {
    param_1 = &DAT_00fae9c8;
  }
  basic_string<>(param_1);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  return param_1_00;
}



int __thiscall FUN_004325d6(int param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= param_1)) {
    FUN_00840480("D:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                 "nIndex < m_nCount",L"wxArrayString: index out of bounds");
  }
  return param_1 * 0x24 + *(int *)(param_1_00 + 8);
}



int __thiscall FUN_0043261a(int param_1_00,int param_1)

{
  if (param_1_00 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  return param_1_00;
}



bool __thiscall FUN_00432636(int param_1_00,int param_1,char param_2)

{
  int iVar1;
  bool bVar2;
  
  if (*(int *)(param_1_00 + 0x14) == *(int *)(param_1 + 0x14)) {
    if (param_2 == '\0') {
      iVar1 = FUN_00850470(param_1);
    }
    else {
      iVar1 = FUN_00850760(param_1);
    }
    bVar2 = iVar1 == 0;
  }
  else {
    bVar2 = false;
  }
  return bVar2;
}



void __fastcall FUN_00432666(int *param_1)

{
  if ((undefined4 *)*param_1 != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)*param_1)(1);
  }
  return;
}



undefined4 * __thiscall FUN_004326c4(undefined4 *param_1_00,byte param_1)

{
  FUN_00401829(1,0);
  *param_1_00 = WDE765622::W79AD8149::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_00432c6c(void)

{
  undefined4 uVar1;
  undefined local_10 [12];
  
  FUN_00432231(local_10);
  uVar1 = FUN_00432242();
  FUN_00432214();
  return uVar1;
}



int __thiscall FUN_00432c92(int param_1_00,int param_1)

{
  if (param_1_00 != param_1) {
    FUN_00856100(param_1);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __fastcall
FUN_00432caa(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1)

{
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  FUN_00853ce0(0);
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            (param_1 + 0x34);
  *(undefined4 *)(param_1 + 0x50) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            (param_1 + 0x58);
  *(undefined4 *)(param_1 + 0x74) = 0;
  FUN_00856240();
  return param_1;
}



undefined4 * __thiscall FUN_00432da0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WDE765622::W79AD8149::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00432dbd(void)

{
  char cVar1;
  uint uVar2;
  undefined local_54 [28];
  undefined local_38 [24];
  undefined4 local_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3bf9c;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_54;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_14;
  local_20 = 7;
  FUN_0040180b(0);
  local_c = 0;
  cVar1 = FUN_00bac450(local_38,uVar2);
  if (cVar1 != '\0') {
    FUN_00ba83f0(local_38);
    local_c = CONCAT31(local_c._1_3_,1);
    FUN_00495f34();
    FUN_004017b2(1,0);
  }
  FUN_00401829(1,0);
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void Catch_All_0043333b(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004333ec(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(100);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_004419e0(pvVar2,param_2,param_3);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_004385bf(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



undefined4 * __thiscall FUN_004337dd(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W5D651E7E::W5BE3794D::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined ** FUN_004337fa(void)

{
  return &PTR_u_WE037749E_03247238;
}



undefined ** FUN_00433800(void)

{
  return &PTR_PTR_00fab5cc;
}



undefined * FUN_00433806(void)

{
  return &DAT_032ee234;
}



undefined4 __thiscall FUN_004338eb(undefined4 param_1_00,byte param_1)

{
  FUN_0043487b(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0043487b(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_1c [5];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  *param_1 = W5D651E7E::WE037749E::vftable;
  local_8 = 0xe;
  if (local_1c != param_1 + 0x8f) {
    param_1[0x8f] = 0;
  }
  iVar1 = param_1[0x90];
  param_1[0x90] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  if (local_1c != param_1 + 0xa0) {
    param_1[0xa0] = 0;
  }
  iVar1 = param_1[0xa1];
  param_1[0xa1] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  FUN_0044489d();
  if (local_1c != param_1 + 0x8a) {
    param_1[0x8a] = 0;
  }
  iVar1 = param_1[0x8b];
  param_1[0x8b] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  FUN_007a6013();
  FUN_007a6013();
  local_8._0_1_ = 0xd;
  if (param_1[0xb8] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 0xc;
  FUN_0044237a(param_1 + 0xb1);
  local_8._0_1_ = 0xb;
  FUN_0044237a(param_1 + 0xab);
  local_8._0_1_ = 10;
  if (param_1[0xaa] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 9;
  if (param_1[0xa7] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 8;
  if (param_1[0xa5] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 7;
  if (param_1[0xa3] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 6;
  if (param_1[0xa1] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 5;
  FUN_004636a8();
  local_8._0_1_ = 4;
  if (param_1[0x90] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 3;
  FUN_0043d639(param_1 + 0x8e);
  local_8._0_1_ = 2;
  if (param_1[0x8d] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (param_1[0x8b] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00928690();
  return;
}



void Catch_All_00434a08(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_00434a12(int param_1_00,int param_1)

{
  bool bVar1;
  int iVar2;
  undefined4 *puVar3;
  uint uVar4;
  undefined *local_e4;
  code *local_e0;
  uint uStack_dc;
  undefined *local_c8;
  int local_c4;
  char local_bd;
  undefined **local_bc;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined *local_b0;
  undefined local_a8 [4];
  int local_a4;
  int local_9c;
  undefined local_98 [12];
  int local_8c;
  int local_88;
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5c292;
  local_14 = ExceptionList;
  uStack_dc = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_14;
  local_e0 = (code *)0x434a59;
  local_9c = param_1_00;
  FUN_006ad7fd();
  local_c = 0;
  if (*(char *)(param_1 + 0x2a) != '\0') {
    local_e0 = (code *)0x434a78;
    iVar2 = FUN_0048ad96();
    if (iVar2 != 0) {
      local_b8 = 0;
      local_b4 = 0;
      local_c._0_1_ = 1;
      if (iVar2 != 1) {
        local_e0 = (code *)0x0;
        local_e4 = (undefined *)0x0;
        puVar3 = (undefined4 *)FUN_0043bfa5(local_a8,iVar2);
        local_bc = &local_e4;
        local_c = CONCAT31(local_c._1_3_,3);
        local_e4 = (undefined *)*puVar3;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar3 + 1);
      }
      local_bc = &local_e4;
      local_e4 = (undefined *)0x1e62;
      local_e0 = (code *)0x43;
      FUN_00465be3(&local_c8);
      local_e0 = (code *)&local_b8;
      local_c._0_1_ = 2;
      local_e4 = (undefined *)0x434acb;
      FUN_005d11c9();
      local_c._0_1_ = 1;
      if (local_c4 != 0) {
        local_e0 = (code *)0x434b68;
        FUN_0040127a();
      }
      local_c8 = (undefined *)0x0;
      local_c4 = 0;
      local_bc = &local_e4;
      local_c._0_1_ = 5;
      local_e4 = (undefined *)0x1e62;
      local_e0 = (code *)0x44;
      FUN_00465be3(local_a8);
      local_e0 = (code *)&local_c8;
      local_c._0_1_ = 6;
      local_e4 = (undefined *)0x434bac;
      FUN_005d11c9();
      local_c = CONCAT31(local_c._1_3_,5);
      if (local_a4 != 0) {
        local_e0 = (code *)0x434bc1;
        FUN_0040127a();
      }
      local_bc = &local_e4;
      local_e4 = local_c8;
                    // WARNING: Subroutine does not return
      FUN_0043c023(&local_c4);
    }
  }
  local_e0 = (code *)0x434d33;
  FUN_00442131();
  local_c._0_1_ = 0xb;
  local_e0 = (code *)0x434d44;
  FUN_00478dda();
  local_e0 = (code *)0x434d4d;
  FUN_00478e58();
  local_c = (uint)local_c._1_3_ << 8;
  if (local_c4 != 0) {
    local_e0 = (code *)0x434d62;
    FUN_0040127a();
  }
  local_e0 = (code *)0x434d6b;
  FUN_0048acf8();
  local_c8 = (undefined *)0xc350;
  local_c4 = 0;
  while( true ) {
    local_e4 = local_a8;
    local_e0 = FUN_0043bca3;
    FUN_0043b835();
    local_e0 = (code *)&local_b8;
    local_e4 = (undefined *)0x434d9c;
    FUN_0043be95();
    local_e0 = (code *)local_98;
    local_e4 = (undefined *)0x434da6;
    FUN_004382a5();
    local_e0 = (code *)local_98;
    local_c = CONCAT31(local_c._1_3_,0xc);
    local_e4 = local_b0;
    FUN_0048a682();
    uVar4 = 0;
    iVar2 = local_88 - local_8c >> 3;
    bVar1 = true;
    if (iVar2 != 0) {
      if (iVar2 == 0) {
        local_e0 = (code *)0x434ddb;
        FUN_00a3fb10();
      }
      do {
        local_e0 = (code *)&local_bd;
        local_e4 = (undefined *)0x434df0;
        FUN_0048b220();
        if (local_bd == '\0') {
          bVar1 = false;
        }
        uVar4 = uVar4 + 1;
        param_1_00 = local_9c;
      } while (uVar4 < (uint)(local_88 - local_8c >> 3));
    }
    local_e0 = (code *)local_98;
    local_c = local_c & 0xffffff00;
    local_e4 = (undefined *)0x434e1f;
    FUN_0044237a();
    if (bVar1) break;
    local_e0 = (code *)0x1;
    local_e4 = (undefined *)0x434e32;
    FUN_00841c70();
  }
  local_e0 = (code *)0x434e42;
  FUN_004470d3();
  local_e0 = (code *)0x434e4d;
  FUN_00441fdf();
  local_e0 = (code *)0x434e58;
  (**(code **)(**(int **)(param_1_00 + 0x230) + 8))();
  local_e0 = (code *)0x434e65;
  FUN_00829a20();
  local_e4 = (undefined *)0x434e6b;
  local_e0 = (code *)(param_1_00 + 0x238);
  FUN_0043a50d();
  local_e0 = (code *)0x0;
  local_e4 = (undefined *)0x434e77;
  (**(code **)(**(int **)(param_1_00 + 0x2a4) + 8))();
  local_e4 = (undefined *)0x434e82;
  (**(code **)(**(int **)(param_1_00 + 0x298) + 0x48))();
  *(undefined *)(param_1 + 0x24) = 1;
  puStack_10 = (undefined *)0xffffffff;
  if (local_b0 != (undefined *)0x0) {
    local_e4 = (undefined *)0x434e9e;
    FUN_0040127a();
  }
  ExceptionList = pvStack_18;
  return;
}



void __fastcall FUN_00434eb6(int param_1)

{
  void *pvVar1;
  int local_50;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  uStack_10 = &LAB_00c4cb0e;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  pvVar1 = operator_new(0x210);
  local_c = 0;
  if (pvVar1 == (void *)0x0) {
    local_50 = 0;
  }
  else {
    FUN_006ad7fd();
    local_50 = FUN_0044a5c6();
  }
  local_c = 0xffffffff;
  FUN_00463759();
  FUN_0044bdc5();
  (**(code **)(**(int **)(param_1 + 0x298) + 0xc))();
  uStack_10 = (undefined *)0x1;
  FUN_00414f38();
  uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,2);
  (**(code **)(**(int **)(local_50 + 0x204) + 0x35c))();
  local_14 = (void *)CONCAT31(local_14._1_3_,1);
  FUN_008f7630();
  local_14 = (void *)0xffffffff;
  FUN_0083e850();
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x29c);
}



void FUN_00435131(int param_1)

{
  char cVar1;
  undefined4 uVar2;
  TypeDescriptor **ppTVar3;
  TypeDescriptor *local_f4;
  code *local_f0;
  uint uStack_ec;
  undefined auStack_dc [3];
  char local_d9;
  TypeDescriptor **local_d8;
  undefined4 local_d4;
  TypeDescriptor local_d0;
  char *local_c8;
  int local_c4;
  TypeDescriptor local_c0;
  undefined local_b8 [8];
  int local_b0;
  int local_a8;
  char local_24 [4];
  char *local_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = -1;
  puStack_10 = &LAB_00c5c1dc;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_dc;
  uStack_ec = DAT_0323f878 ^ (uint)&stack0xffffff18;
  ExceptionList = &local_14;
  local_f0 = *(code **)(param_1 + 0x60);
  local_c4 = param_1;
  local_f4 = (TypeDescriptor *)0x435185;
  uVar2 = FUN_00a0b780();
  local_f0 = (code *)0x0;
  local_f4 = &W88FE58D1::W70330F9B::RTTI_Type_Descriptor;
  local_b0 = ___RTDynamicCast(uVar2,0,&wxWindow::RTTI_Type_Descriptor);
  if (local_b0 != 0) {
    local_f0 = (code *)local_24;
    local_f4 = (TypeDescriptor *)0x4351b7;
    FUN_0048c85a();
    local_c = 0;
    if ((-(uint)(local_24[0] != '\0') & 0x6a1cd8) != 0) {
      local_c8 = local_20;
      local_f0 = (code *)0x4351ef;
      FUN_006ad7fd();
      local_c._0_1_ = 1;
      local_f0 = (code *)local_20;
      local_f4 = &local_d0;
      FUN_0048aa3a();
      local_c._0_1_ = 3;
      if (local_a8 != 0) {
        local_f0 = (code *)0x43521b;
        FUN_0040127a();
      }
      local_f0 = (code *)0x435224;
      cVar1 = FUN_0048b2d9();
      if (cVar1 != '\0') {
        local_d8 = &local_f4;
        local_f4 = (TypeDescriptor *)0x1e62;
        local_f0 = (code *)0x46;
        ppTVar3 = (TypeDescriptor **)FUN_00465be3(&local_c0);
        local_d8 = &local_f4;
        local_c = CONCAT31(local_c._1_3_,4);
        local_f4 = *ppTVar3;
                    // WARNING: Subroutine does not return
        FUN_0043c023(ppTVar3 + 1);
      }
      *(undefined *)(local_b0 + 0x2e5) = 0;
      local_f0 = (code *)0x4353ad;
      FUN_0048b177();
      local_d4 = 0;
      local_d8 = (TypeDescriptor **)0xc350;
      while( true ) {
        local_f4 = &local_c0;
        local_f0 = FUN_0043bca3;
        FUN_0043b835();
        local_f0 = (code *)local_b8;
        local_f4 = (TypeDescriptor *)0x4353dd;
        FUN_0043be95();
        local_f0 = (code *)&local_d9;
        local_d9 = '\0';
        local_f4 = (TypeDescriptor *)0x4353f4;
        FUN_0048b220();
        if (local_d9 != '\0') break;
        local_f0 = (code *)0x1;
        local_f4 = (TypeDescriptor *)0x435408;
        FUN_00841c70();
      }
      local_f0 = (code *)local_c8;
      local_f4 = (TypeDescriptor *)0x435419;
      FUN_0044700c();
      local_f0 = (code *)local_c8;
      local_f4 = (TypeDescriptor *)0x43542a;
      FUN_00441f4a();
      local_c = (uint)local_c._1_3_ << 8;
      if (local_d0.spare != (void *)0x0) {
        local_f0 = (code *)0x43543f;
        FUN_0040127a();
      }
    }
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00435465(void)

{
  undefined4 local_58;
  undefined4 *local_54;
  undefined local_40 [32];
  undefined4 local_20;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0;
  local_54 = &local_20;
  local_58 = 0x435486;
  FUN_00444d4e();
  local_54 = (undefined4 *)local_40;
  local_8 = CONCAT31(local_8._1_3_,1);
  local_58 = 0x435493;
  FUN_004382a5();
  local_14 = &local_58;
  local_58 = local_20;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00435570(void)

{
  undefined4 local_58;
  undefined4 *local_54;
  undefined local_40 [32];
  undefined4 local_20;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_54 = &local_20;
  local_8 = 1;
  local_58 = 0x435594;
  FUN_00444d4e();
  local_54 = (undefined4 *)local_40;
  local_8 = CONCAT31(local_8._1_3_,2);
  local_58 = 0x4355a1;
  FUN_004382a5();
  local_14 = &local_58;
  local_58 = local_20;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004358b3(void)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x4358d1;
  FUN_004636a8();
  local_8 = 0xffffffff;
  puVar1[-1] = 0x4358dc;
  FUN_00924620();
  puVar1[-1] = 0x4358e1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00435dd9(int param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  int iStack_24;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  iStack_24 = param_1 + 0xf8;
  local_8 = 1;
  puVar1 = &uStack_28;
  uStack_28 = 0x435dfb;
  FUN_00436b30();
  local_8 = local_8 & 0xffffff00;
  puVar1[-1] = 0x435e07;
  FUN_0092de10();
  local_8 = 0xffffffff;
  puVar1[-1] = 0x435e12;
  FUN_00846530();
  puVar1[-1] = 0x435e17;
  return;
}



void FUN_00435e1a(void)

{
  int unaff_EDI;
  undefined *local_19c;
  undefined *local_198;
  uint uStack_194;
  undefined auStack_188 [4];
  undefined *local_184;
  int local_180;
  undefined **local_17c;
  undefined local_178 [24];
  undefined local_160 [124];
  char local_e4;
  undefined local_e0 [196];
  uint local_1c;
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5eb44;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_188;
  uStack_194 = DAT_0323f878 ^ (uint)&stack0xfffffe70;
  ExceptionList = &local_14;
  local_198 = local_178;
  local_19c = (undefined *)0x435e63;
  FUN_004382a5();
  local_c = 0;
  local_198 = (undefined *)0x435e74;
  FUN_0044cf09();
  local_198 = (undefined *)(unaff_EDI + 0x248);
  local_19c = local_178;
  FUN_00471a88(local_160);
  local_c._0_1_ = 1;
  *(undefined *)(unaff_EDI + 0x2a0) = 0;
  if (local_e4 == '\0') {
    local_198 = local_160;
    local_19c = (undefined *)0x435eab;
    FUN_00471b43();
    local_e4 = '\x01';
  }
  local_198 = (undefined *)DAT_03238d10;
  local_19c = DAT_03238d0c;
  FUN_0091ca70(local_e0);
  *(undefined *)(unaff_EDI + 0x2a0) = 1;
  local_198 = (undefined *)0x435ee2;
  FUN_00471f41();
  local_c = CONCAT31(local_c._1_3_,2);
  if (local_184 != (undefined *)0x0) {
    local_17c = &local_19c;
    local_19c = local_184;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&local_180);
  }
  local_c._0_1_ = 1;
  if (local_180 != 0) {
    local_198 = (undefined *)0x435f47;
    FUN_0040127a();
  }
  local_198 = local_160;
  local_c = (uint)local_c._1_3_ << 8;
  local_19c = (undefined *)0x435f59;
  FUN_00435f8e();
  local_c = 0xffffffff;
  local_198 = local_178;
  local_19c = (undefined *)0x435f6b;
  FUN_00436aef();
  ExceptionList = pvStack_18;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00435f8e(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 3;
  if (*(int *)(param_1 + 0x138) != 0) {
    iStack_24 = 0x435fb3;
    FUN_0040127a();
  }
  local_8._0_1_ = 2;
  iStack_24 = 0x435fc2;
  FUN_0092de10();
  iStack_24 = param_1 + 0x58;
  local_8._0_1_ = 1;
  puVar1 = &uStack_28;
  uStack_28 = 0x435fcf;
  FUN_0042b93d();
  puVar1[-1] = param_1 + 0x40;
  local_8 = (uint)local_8._1_3_ << 8;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x435fdc;
  FUN_00436aef();
  local_8 = 0xffffffff;
  *(undefined4 *)((int)puVar2 + -4) = 0x435fe7;
  FUN_00846530();
  *(undefined4 *)((int)puVar2 + -4) = 0x435fec;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00435fef(int param_1)

{
  int unaff_EDI;
  undefined4 *unaff_FS_OFFSET;
  undefined *local_18c;
  undefined4 *local_188;
  undefined4 uStack_178;
  undefined local_174 [24];
  undefined **local_15c;
  undefined *local_158;
  int local_154;
  undefined4 local_150;
  undefined4 local_148;
  undefined4 local_144 [31];
  char local_c8;
  undefined local_c4 [188];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_144;
  local_144[0] = 0x24;
  local_148 = 0;
  if ((-(uint)(param_1 != 0) & 0x7a491c) != 0) {
    local_188 = (undefined4 *)local_174;
    local_18c = (undefined *)0x436035;
    FUN_004382a5();
    local_148._0_1_ = 1;
    local_188 = (undefined4 *)0x436041;
    FUN_0044cf09();
    local_188 = (undefined4 *)(unaff_EDI + 0x248);
    local_18c = local_174;
    FUN_00471a88(local_144);
    local_148._0_1_ = 2;
    *(undefined *)(unaff_EDI + 0x2a0) = 0;
    if (local_c8 == '\0') {
      local_18c = (undefined *)0x43606e;
      local_188 = local_144;
      FUN_00471b43();
      local_c8 = '\x01';
    }
    local_188 = (undefined4 *)local_c4;
    local_18c = (undefined *)0x436084;
    FUN_0060d4ba();
    *(undefined *)(unaff_EDI + 0x2a0) = 1;
    local_188 = (undefined4 *)0x436096;
    FUN_00471f41();
    local_148 = CONCAT31(local_148._1_3_,3);
    if (local_158 != (undefined *)0x0) {
      local_15c = &local_18c;
      local_18c = local_158;
                    // WARNING: Subroutine does not return
      FUN_0043c023(&local_154);
    }
    local_148._0_1_ = 2;
    if (local_154 != 0) {
      local_188 = (undefined4 *)0x4360ed;
      FUN_0040127a();
    }
    local_148._0_1_ = 1;
    local_18c = (undefined *)0x4360fa;
    local_188 = local_144;
    FUN_00435f8e();
    local_188 = (undefined4 *)local_174;
    local_148 = (uint)local_148._1_3_ << 8;
    local_18c = (undefined *)0x436107;
    FUN_00436aef();
  }
  local_148 = 0xffffffff;
  local_188 = (undefined4 *)0x436116;
  FUN_00507e58();
  *unaff_FS_OFFSET = local_150;
  uStack_178 = 0x436131;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004361de(int param_1)

{
  undefined4 *puVar1;
  undefined4 *unaff_FS_OFFSET;
  undefined4 local_1b0;
  undefined4 local_1ac;
  undefined auStack_1a8 [24];
  undefined4 uStack_190;
  undefined4 *puStack_18c;
  undefined4 uStack_17c;
  undefined *local_150;
  undefined4 local_14c;
  undefined4 uStack_144;
  undefined *local_140;
  undefined local_13c [12];
  undefined4 *local_130;
  undefined4 local_12c;
  undefined4 local_124;
  undefined4 local_120 [70];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_120;
  puStack_18c = local_120;
  local_120[0] = 0x4c;
  local_124 = 0;
  if ((-(uint)(param_1 != 0) & 0x7a491c) != 0) {
    uStack_190 = 0x436229;
    FUN_004706e4();
    local_140 = auStack_1a8;
    local_150 = &LAB_004361b8;
    local_14c = 0;
    local_1ac = uStack_144;
    FUN_004381dc(&LAB_004361b8,0);
    local_130 = &local_1b0;
    local_124._0_1_ = 2;
    local_1b0 = 0x1e62;
    local_1ac = 0x34;
    puVar1 = (undefined4 *)FUN_00465be3(local_13c);
    local_130 = &local_1b0;
    local_124 = CONCAT31(local_124._1_3_,3);
    local_1b0 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_124 = 0xffffffff;
  puStack_18c = (undefined4 *)0x4363a9;
  FUN_00507e58();
  *unaff_FS_OFFSET = local_12c;
  uStack_17c = 0x4363c4;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004363f4(int param_1)

{
  undefined4 *puVar1;
  undefined4 *unaff_FS_OFFSET;
  undefined4 local_1b0;
  undefined4 local_1ac;
  undefined auStack_1a8 [24];
  undefined4 uStack_190;
  undefined4 *puStack_18c;
  undefined4 uStack_17c;
  undefined *local_150;
  undefined4 local_14c;
  undefined4 uStack_144;
  undefined *local_140;
  undefined local_13c [12];
  undefined4 *local_130;
  undefined4 local_12c;
  undefined4 local_124;
  undefined4 local_120 [70];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_120;
  puStack_18c = local_120;
  local_120[0] = 0x4c;
  local_124 = 0;
  if ((-(uint)(param_1 != 0) & 0x7a491c) != 0) {
    uStack_190 = 0x43643f;
    FUN_004706e4();
    local_140 = auStack_1a8;
    local_150 = &LAB_004363ce;
    local_14c = 0;
    local_1ac = uStack_144;
    FUN_004381dc(&LAB_004363ce,0);
    local_130 = &local_1b0;
    local_124._0_1_ = 2;
    local_1b0 = 0x1e62;
    local_1ac = 0x79;
    puVar1 = (undefined4 *)FUN_00465be3(local_13c);
    local_130 = &local_1b0;
    local_124 = CONCAT31(local_124._1_3_,3);
    local_1b0 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_124 = 0xffffffff;
  puStack_18c = (undefined4 *)0x4365bf;
  FUN_00507e58();
  *unaff_FS_OFFSET = local_12c;
  uStack_17c = 0x4365da;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004366a2(void)

{
  int *piVar1;
  char cVar2;
  int unaff_ESI;
  undefined auStack_58 [4];
  undefined4 uStack_54;
  undefined auStack_50 [4];
  undefined4 uStack_4c;
  undefined auStack_48 [8];
  undefined4 uStack_40;
  int **ppiStack_3c;
  undefined4 *puStack_38;
  undefined4 local_24;
  int local_20;
  int *local_1c;
  int local_18;
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = (int *)0x0;
  local_18 = 0;
  local_24 = 0;
  local_20 = 0;
  puStack_38 = &local_24;
  local_8 = 1;
  ppiStack_3c = &local_1c;
  uStack_40 = 0x4366d6;
  cVar2 = (**(code **)(**(int **)(unaff_ESI + 0x298) + 0x60))();
  if ((cVar2 != '\0') && (local_1c != (int *)0x0)) {
    uStack_40 = 0x4366e6;
    cVar2 = (**(code **)(*local_1c + 0xc))();
    piVar1 = local_1c;
    if (cVar2 != '\0') {
      local_14 = (undefined *)CONCAT31(local_14._1_3_,**(undefined **)(unaff_ESI + 0x2dc));
      uStack_40 = local_14;
      local_14 = auStack_48;
      uStack_4c = 0x43670d;
      FUN_00444c9f();
      local_14 = auStack_50;
      uStack_54 = 0x43671f;
      FUN_00444cb0();
      local_14 = auStack_58;
      FUN_00444cb0();
      (**(code **)(*piVar1 + 0x10))();
    }
  }
  local_8 = local_8 & 0xffffff00;
  if (local_20 != 0) {
    uStack_40 = 0x436748;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    uStack_40 = 0x436758;
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0043675e(void)

{
  int *piVar1;
  char cVar2;
  int unaff_ESI;
  undefined auStack_58 [4];
  undefined4 uStack_54;
  undefined auStack_50 [4];
  undefined4 uStack_4c;
  undefined auStack_48 [8];
  undefined4 uStack_40;
  int **ppiStack_3c;
  undefined4 *puStack_38;
  undefined4 local_24;
  int local_20;
  int *local_1c;
  int local_18;
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = (int *)0x0;
  local_18 = 0;
  local_24 = 0;
  local_20 = 0;
  puStack_38 = &local_24;
  local_8 = 1;
  ppiStack_3c = &local_1c;
  uStack_40 = 0x436792;
  cVar2 = (**(code **)(**(int **)(unaff_ESI + 0x298) + 100))();
  if ((cVar2 != '\0') && (local_1c != (int *)0x0)) {
    uStack_40 = 0x4367a2;
    cVar2 = (**(code **)(*local_1c + 0xc))();
    piVar1 = local_1c;
    if (cVar2 != '\0') {
      local_14 = (undefined *)CONCAT31(local_14._1_3_,**(undefined **)(unaff_ESI + 0x2dc));
      uStack_40 = local_14;
      local_14 = auStack_48;
      uStack_4c = 0x4367c9;
      FUN_00444c9f();
      local_14 = auStack_50;
      uStack_54 = 0x4367db;
      FUN_00444cb0();
      local_14 = auStack_58;
      FUN_00444cb0();
      (**(code **)(*piVar1 + 0x10))();
    }
  }
  local_8 = local_8 & 0xffffff00;
  if (local_20 != 0) {
    uStack_40 = 0x436804;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    uStack_40 = 0x436814;
    FUN_0040127a();
  }
  return;
}



undefined4 FUN_00436ad0(undefined4 param_1,undefined4 param_2)

{
  FUN_00436c13(param_1,param_2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00436aef(undefined4 *param_1)

{
  FUN_00436bee();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



int FUN_00436b17(void)

{
  int unaff_ESI;
  uint unaff_EDI;
  
  if ((uint)(*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc) >> 3) <= unaff_EDI) {
    FUN_00a3fb10();
  }
  return *(int *)(unaff_ESI + 0xc) + unaff_EDI * 8;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00436b30(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x436b48;
  FUN_00436c53();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00436b4f;
  FUN_00a3f6a1();
}



void __thiscall FUN_00436b58(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxCloseEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void __thiscall FUN_00436ba3(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxAuiNotebookEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void FUN_00436bee(void)

{
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0xc) != 0) {
    FUN_0043a4e8(*(undefined4 *)(unaff_ESI + 0x10));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0xc));
  }
  *(undefined4 *)(unaff_ESI + 0xc) = 0;
  *(undefined4 *)(unaff_ESI + 0x10) = 0;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00436c13(undefined4 param_1,undefined4 param_2)

{
  int unaff_EDI;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(unaff_EDI + 0x10));
  FUN_00436c87(param_1,param_2);
  LeaveCriticalSection((LPCRITICAL_SECTION)(unaff_EDI + 0x10));
  return param_1;
}



void FUN_00436c53(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_00436d3e(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00436c87(int *param_1,undefined4 param_2)

{
  int local_2c;
  int local_28;
  undefined4 local_24;
  undefined local_20;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x436c93;
  FUN_00436df4(&local_2c,param_2);
  local_20 = 0;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  local_24 = 2;
  FUN_00436e6f(&local_2c);
  *(undefined4 *)(local_2c + 0x68) = 2;
  FUN_0041ba77();
  if (local_28 != 0) {
    LOCK();
    *(int *)(local_28 + 8) = *(int *)(local_28 + 8) + 1;
    UNLOCK();
  }
  *param_1 = local_2c;
  param_1[1] = local_28;
  if (local_28 != 0) {
    LOCK();
    *(int *)(local_28 + 8) = *(int *)(local_28 + 8) + 1;
    UNLOCK();
  }
  FUN_00417fc9();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_28 != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



void FUN_00436d3e(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_004372fc(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_007449dd();
    FUN_00436eb8();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00436df4(undefined4 *param_1,int param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  
  FUN_0043714d();
  pvVar2 = operator_new(0x78);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0043737a(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00438985(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (param_2 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



void FUN_00436e6f(undefined4 param_1)

{
  undefined4 *puVar1;
  int unaff_ESI;
  int *unaff_EDI;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10 [12];
  
  if (*unaff_EDI == 2) {
    local_14 = *(undefined4 *)(unaff_ESI + 0x34);
    local_18 = *(undefined4 *)(unaff_ESI + 0x1c);
  }
  else {
    puVar1 = (undefined4 *)FUN_007a89a4(local_10,unaff_EDI);
    local_18 = *puVar1;
    local_14 = puVar1[1];
  }
  FUN_004371fa(&local_18,unaff_EDI,param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x00436fa3)
// WARNING: Removing unreachable block (ram,0x00436fb3)
// WARNING: Removing unreachable block (ram,0x00436fbc)
// WARNING: Removing unreachable block (ram,0x00436fbf)
// WARNING: Removing unreachable block (ram,0x00436faf)
// WARNING: Removing unreachable block (ram,0x00436fcc)
// WARNING: Removing unreachable block (ram,0x00436fdc)
// WARNING: Removing unreachable block (ram,0x00436fe7)
// WARNING: Removing unreachable block (ram,0x00436fe3)
// WARNING: Removing unreachable block (ram,0x00436fd7)
// WARNING: Removing unreachable block (ram,0x00436fea)

void FUN_00436eb8(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x436ec4;
  if (*(char *)((int)param_4 + 0x39) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_007449dd();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
    if (*(char *)(param_4[2] + 0x39) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x39) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x39) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0xe) != '\x01') {
LAB_0043711b:
    FUN_00507e58();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_004370cf:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xe) != '\x01'))
  goto LAB_00437117;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0xe) == '\0') {
      *(undefined *)(ppiVar4 + 0xe) = 1;
      *(undefined *)(ppiVar3 + 0xe) = 0;
      FUN_007d0aa6(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x39) == '\0') {
      if ((*(char *)(*ppiVar4 + 0xe) != '\x01') || (*(char *)(ppiVar4[2] + 0xe) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0xe) == '\x01') {
          *(undefined *)(*ppiVar4 + 0xe) = 1;
          *(undefined *)(ppiVar4 + 0xe) = 0;
          FUN_00437338(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0xe) = *(undefined *)(ppiVar3 + 0xe);
        *(undefined *)(ppiVar3 + 0xe) = 1;
        *(undefined *)(ppiVar4[2] + 0xe) = 1;
        FUN_007d0aa6(param_1);
        goto LAB_00437117;
      }
LAB_004370c6:
      *(undefined *)(ppiVar4 + 0xe) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0xe) == '\0') {
      *(undefined *)(ppiVar4 + 0xe) = 1;
      *(undefined *)(ppiVar3 + 0xe) = 0;
      FUN_00437338(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x39) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0xe) == '\x01') && (*(char *)(*ppiVar4 + 0xe) == '\x01'))
      goto LAB_004370c6;
      if (*(char *)(*ppiVar4 + 0xe) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0xe) = 1;
        *(undefined *)(ppiVar4 + 0xe) = 0;
        FUN_007d0aa6(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0xe) = *(undefined *)(ppiVar3 + 0xe);
      *(undefined *)(ppiVar3 + 0xe) = 1;
      *(undefined *)(*ppiVar4 + 0xe) = 1;
      FUN_00437338(param_1);
LAB_00437117:
      *(undefined *)(ppiVar5 + 0xe) = 1;
      goto LAB_0043711b;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_004370cf;
}



void __fastcall FUN_0043714d(int **param_1)

{
  char cVar1;
  void *local_20;
  undefined4 local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c485ed;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_00439f23(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    local_20 = operator_new(0x10);
    local_c = 0;
    if (local_20 != (void *)0x0) {
      FUN_004376af(**param_1);
    }
    local_c = 0xffffffff;
    FUN_00438224();
    local_20 = *(void **)**param_1;
                    // WARNING: Load size is inaccurate
    local_1c = *((void **)**param_1)[5];
    FUN_00437498(1,&local_20,0);
  }
  else {
    FUN_00437588(1,2);
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_004371fa(undefined4 *param_1_00,undefined4 *param_1,undefined4 *param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 local_48 [3];
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_30;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x437206;
  FUN_007a1c11(param_1_00);
  local_20 = local_18;
  local_1c = local_14;
  FUN_006a90d6(param_3,local_18,local_14);
  puVar2 = (undefined4 *)FUN_00437ab5();
  local_28 = *puVar2;
  local_24 = puVar2[1];
  if (param_1_00 == (undefined4 *)0x0) {
    FUN_00a3fb10();
  }
  local_30 = *param_1_00;
  puVar2 = param_1_00 + 7;
  local_1c = param_1_00[0xd];
  local_20 = *puVar2;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    uVar3 = FUN_006badde();
    cVar1 = FUN_007a1be8(uVar3);
    if (cVar1 != '\0') {
      FUN_007a8b44(puVar2,&local_20,*param_1,param_1[1]);
    }
  }
  FUN_007a73d3(&local_18,param_2);
  local_1c = param_1_00[0xd];
  local_20 = *puVar2;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    FUN_006badde();
    cVar1 = FUN_007a1be8(param_2);
    if (cVar1 != '\0') {
      return;
    }
  }
  local_48[0] = *param_2;
  FUN_0041b126(param_2 + 1);
  local_3c = local_30;
  local_38 = local_24;
  local_8 = 0;
  FUN_004375e5(puVar2,local_48);
  return;
}



void FUN_004372fc(int param_1)

{
  if (*(char *)(param_1 + 0x39) == '\0') {
    FUN_004372fc(*(undefined4 *)(param_1 + 8));
    FUN_00507e58();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __thiscall FUN_00437338(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x39) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043737a(undefined4 param_1_00,undefined4 *param_1)

{
  *(undefined *)(param_1 + 1) = 1;
  param_1[2] = 0;
  param_1[3] = 0;
  *param_1 = boost::signals2::detail::
             connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot0<void,class_boost::function<void___cdecl(void)>_>,class_boost::signals2::mutex>
             ::vftable;
  FUN_004373e3(param_1 + 4,param_1_00);
  FUN_00672a11();
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x14));
  param_1[0x1a] = 0;
  *(undefined *)(param_1 + 0x1b) = 0;
  return param_1;
}



void FUN_004373d8(void)

{
  int in_EAX;
  
  if (*(char *)(in_EAX + 4) != '\0') {
    *(undefined *)(in_EAX + 4) = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_004373e3(int *param_1,uint param_2)

{
  int iVar1;
  undefined4 uVar2;
  char cVar3;
  int **ppiVar4;
  int iVar5;
  
  ppiVar4 = (int **)FUN_00418daa(1,0);
  if (ppiVar4 == (int **)0x0) {
    ppiVar4 = (int **)0x0;
  }
  else {
    *ppiVar4 = param_1;
  }
  *param_1 = (int)ppiVar4;
  iVar5 = *(int *)(param_2 + 0x10);
  iVar1 = *(int *)(param_2 + 0xc);
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  if ((iVar5 - iVar1) / 0xc != 0) {
    cVar3 = FUN_00437705();
    if (cVar3 != '\0') {
      iVar5 = FUN_00439f82();
      uVar2 = *(undefined4 *)(iVar5 + 4);
      FUN_0046de1a();
      param_2 = param_2 & 0xffffff00;
      iVar5 = FUN_004389e2(uVar2,param_1[3],param_2,param_2);
      param_1[4] = iVar5;
    }
  }
  return param_1;
}



void Catch_All_00437486(void)

{
  code *pcVar1;
  
  FUN_0043c470();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00437498(char param_1,int **param_2,uint param_3)

{
  int iVar1;
  char cVar2;
  int **ppiVar3;
  int *piVar4;
  int *piVar5;
  int **unaff_EBX;
  undefined local_30 [12];
  int *local_24;
  int *local_20;
  int *local_1c;
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4374a4;
  local_20 = *param_2;
  local_1c = param_2[1];
  local_18 = 0;
  while( true ) {
    piVar4 = local_1c;
    piVar5 = local_20;
    local_24 = ((int **)**unaff_EBX)[5];
    if ((local_20 == (int *)0x0) || (local_20 != *(int **)**unaff_EBX)) {
      FUN_00a3fb10();
    }
    if ((piVar4 == local_24) || ((param_3 != 0 && (param_3 <= local_18)))) break;
    ppiVar3 = (int **)FUN_006adbc2();
    piVar5 = *ppiVar3;
    (**(code **)(*piVar5 + 8))();
    local_8 = 0;
    if (param_1 != '\0') {
      piVar4 = (int *)FUN_006adbc2();
      iVar1 = *piVar4;
      cVar2 = FUN_00439ec4(iVar1 + 0x10);
      if (cVar2 == '\x01') {
        *(undefined *)(iVar1 + 4) = 0;
      }
    }
    piVar4 = (int *)FUN_006adbc2();
    cVar2 = *(char *)(*piVar4 + 4);
    local_8 = 0xffffffff;
    (**(code **)(*piVar5 + 0xc))();
    if (cVar2 == '\0') {
      piVar5 = (int *)FUN_006adbc2();
      ppiVar3 = (int **)FUN_00437866(**unaff_EBX,local_30,*piVar5 + 0x68);
      local_20 = *ppiVar3;
      local_1c = ppiVar3[1];
    }
    else {
      FUN_007a741a();
    }
    local_18 = local_18 + 1;
  }
  unaff_EBX[2] = piVar5;
  unaff_EBX[3] = piVar4;
  return;
}



void FUN_00437588(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  int **in_EAX;
  int *local_c;
  int *local_8;
  
  local_8 = ((int **)**in_EAX)[5];
  local_c = *(int **)**in_EAX;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    local_c = in_EAX[2];
    local_8 = in_EAX[3];
  }
  else {
    local_8 = (int *)*((int **)**in_EAX)[5];
    local_c = *(int **)**in_EAX;
  }
  FUN_00437498(param_1,&local_c,param_2);
  return;
}



void FUN_004375e5(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 uVar4;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_10 = (undefined4 *)param_1[6];
  puVar3 = (undefined4 *)local_10[1];
  cVar2 = *(char *)((int)puVar3 + 0x21);
  cVar1 = '\x01';
  local_c = CONCAT31(local_c._1_3_,1);
  while (cVar2 == '\0') {
    local_8 = puVar3;
    cVar1 = FUN_0043772e();
    local_c = CONCAT31(local_c._1_3_,cVar1);
    if (cVar1 == '\0') {
      puVar3 = (undefined4 *)puVar3[2];
    }
    else {
      puVar3 = (undefined4 *)*puVar3;
    }
    local_10 = local_8;
    cVar2 = *(char *)((int)puVar3 + 0x21);
  }
  local_14 = *param_1;
  local_8 = local_10;
  if (cVar1 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar2 = FUN_006b8eca();
    if (cVar2 != '\0') {
      uVar4 = 1;
      goto LAB_0043765a;
    }
    FUN_00437bca();
  }
  puVar3 = local_10;
  cVar2 = FUN_0043772e();
  uVar4 = local_c;
  if (cVar2 == '\0') {
    *unaff_EBX = local_14;
    unaff_EBX[1] = puVar3;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_0043765a:
  puVar3 = (undefined4 *)FUN_0043791e(&local_1c,uVar4,local_8,param_2);
  uVar4 = puVar3[1];
  *unaff_EBX = *puVar3;
  unaff_EBX[1] = uVar4;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_004376af(int param_1_00,undefined4 param_1)

{
  void *pvVar1;
  int unaff_ESI;
  
  pvVar1 = operator_new(0x40);
  if (pvVar1 != (void *)0x0) {
    FUN_00437756(pvVar1,param_1);
  }
  FUN_00438258(unaff_ESI);
  *(undefined4 *)(unaff_ESI + 8) = *(undefined4 *)(param_1_00 + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xc);
}



undefined4 FUN_00437705(void)

{
  uint in_EAX;
  int iVar1;
  int unaff_EDI;
  
  if (0x15555555 < in_EAX) {
    FUN_004423c1();
  }
  iVar1 = FUN_0044577a();
  *(int *)(unaff_EDI + 0xc) = iVar1;
  *(int *)(unaff_EDI + 0x10) = iVar1;
  *(uint *)(unaff_EDI + 0x14) = in_EAX * 0xc + iVar1;
  return 1;
}



int __fastcall FUN_0043772e(undefined4 param_1,int *param_2)

{
  int iVar1;
  uint3 uVar2;
  int *unaff_ESI;
  
  iVar1 = *unaff_ESI;
  uVar2 = (uint3)((uint)iVar1 >> 8);
  if (iVar1 != *param_2) {
    return CONCAT31(uVar2,iVar1 < *param_2);
  }
  if (iVar1 != 1) {
    return (uint)uVar2 << 8;
  }
  return CONCAT31((int3)((uint)unaff_ESI[2] >> 8),unaff_ESI[2] < param_2[2]);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00437756(undefined4 *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  char cVar3;
  int iVar4;
  int local_4c;
  int local_48;
  int local_34;
  int local_30;
  
  FUN_007a1c5e(param_1);
  FUN_007a1d21(param_1 + 7);
  *(undefined *)(param_1 + 0xf) = *(undefined *)(param_2 + 0x3c);
  uVar1 = *(undefined4 *)param_1[5];
  uVar2 = *param_1;
  while( true ) {
    cVar3 = FUN_006b8eca();
    if (cVar3 != '\0') break;
    iVar4 = FUN_006badde();
    *(undefined4 *)(iVar4 + 0xc) = uVar2;
    *(undefined4 *)(iVar4 + 0x10) = uVar1;
    FUN_007a1c11(param_2);
    FUN_00620942();
    FUN_007a1c11(param_2);
    while( true ) {
      if ((local_34 == 0) || (local_34 != local_4c)) {
        FUN_00a3fb10();
      }
      if (local_30 == local_48) break;
      FUN_007a741a();
      FUN_007a741a();
    }
    FUN_00620942();
    FUN_00620942();
  }
  return param_1;
}



undefined4 FUN_00437866(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int *in_EAX;
  int *piVar4;
  undefined local_2c [8];
  int local_24;
  int local_20;
  undefined4 local_1c;
  undefined4 local_18;
  int local_14;
  int local_10;
  int local_c;
  
  local_c = param_1 + 0x1c;
  FUN_007a73d3(&local_1c,param_3);
  FUN_006badde();
  cVar3 = FUN_006b8eca();
  if (cVar3 != '\0') {
    local_14 = *in_EAX;
    local_10 = in_EAX[1];
    FUN_007a741a();
    FUN_007a89a4(local_2c,param_3);
    FUN_007a1c11(param_1);
    iVar1 = local_14;
    if ((local_14 == 0) || (local_14 != local_24)) {
      FUN_00a3fb10();
    }
    iVar2 = local_10;
    if (local_10 == local_20) {
      FUN_007a8b44(local_c,local_2c,local_1c,local_18);
    }
    else {
      piVar4 = (int *)FUN_00437b09(local_c,param_3);
      *piVar4 = iVar1;
      piVar4[1] = iVar2;
    }
  }
  FUN_007a1ccc(param_2,*in_EAX,in_EAX[1]);
  return param_2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0043791e(undefined4 *param_1,char param_2,int **param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int **ppiVar5;
  int *piVar6;
  undefined4 *unaff_ESI;
  int *piVar7;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x43792a;
  if (0xcccccca < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::length_error::vftable;
    __CxxThrowException_8(local_54,&DAT_03115554);
  }
  piVar4 = (int *)FUN_007a8eee(unaff_ESI[6],param_3,unaff_ESI[6],0);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar7 = piVar4;
  if (param_3 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    *(int **)(unaff_ESI[6] + 8) = piVar4;
  }
  else if (param_2 == '\0') {
    param_3[2] = piVar4;
    if (param_3 == *(int ***)(unaff_ESI[6] + 8)) {
      *(int **)(unaff_ESI[6] + 8) = piVar4;
    }
  }
  else {
    *param_3 = piVar4;
    if (param_3 == *(int ***)(int **)unaff_ESI[6]) {
      *(int **)unaff_ESI[6] = piVar4;
    }
  }
  do {
    while( true ) {
      ppiVar5 = (int **)(piVar7 + 1);
      if (*(char *)(*ppiVar5 + 8) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x20) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar5;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar6 = ppiVar2[2];
      if (*(char *)(piVar6 + 8) == '\0') {
LAB_00437a07:
        *(undefined *)(piVar1 + 8) = 1;
        *(undefined *)(piVar6 + 8) = 1;
        *(undefined *)((*ppiVar5)[1] + 0x20) = 0;
        piVar7 = (int *)(*ppiVar5)[1];
      }
      else {
        if (piVar7 == (int *)piVar1[2]) {
          FUN_007a1dd4(unaff_ESI);
          piVar7 = piVar1;
        }
        *(undefined *)(piVar7[1] + 0x20) = 1;
        *(undefined *)(*(int *)(piVar7[1] + 4) + 0x20) = 0;
        FUN_00437a73(unaff_ESI);
      }
    }
    piVar6 = *ppiVar2;
    if (*(char *)(piVar6 + 8) == '\0') goto LAB_00437a07;
    if (piVar7 == (int *)*piVar1) {
      FUN_00437a73(unaff_ESI);
      piVar7 = piVar1;
    }
    *(undefined *)(piVar7[1] + 0x20) = 1;
    *(undefined *)(*(int *)(piVar7[1] + 4) + 0x20) = 0;
    FUN_007a1dd4(unaff_ESI);
  } while( true );
}



void __thiscall FUN_00437a73(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x21) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



void FUN_00437ab5(void)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  if (*unaff_ESI == (int *)0x0) {
    FUN_00a3fb10();
  }
  piVar1 = (int *)unaff_ESI[1][1];
  unaff_ESI[1] = piVar1;
  if (*unaff_ESI == (int *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = **unaff_ESI;
  }
  if (piVar1 == *(int **)(iVar2 + 0x14)) {
    FUN_00a3fb10();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00437ae1(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x437af9;
  FUN_00437c2b();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00437b00;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_00437b09(undefined4 *param_1,undefined4 *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 local_34 [3];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x437b15;
  FUN_007a73d3(&local_18,param_2);
  local_1c = param_1[6];
  local_20 = *param_1;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    cVar1 = FUN_0043772e();
    if (cVar1 == '\0') goto LAB_00437b8f;
  }
  local_34[0] = *param_2;
  FUN_0041b126(param_2 + 1);
  local_28 = 0;
  local_24 = 0;
  local_8 = 0;
  puVar2 = (undefined4 *)FUN_00437c6f(&local_20,local_34,local_18,local_14);
  local_18 = *puVar2;
  local_14 = puVar2[1];
LAB_00437b8f:
  iVar3 = FUN_006badde();
  return iVar3 + 0xc;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00437ba2(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x437bba;
  FUN_007a89eb();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00437bc1;
  FUN_00a3f6a1();
}



void FUN_00437bca(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x21) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x21) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x21) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x21) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x21) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x21) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



void FUN_00437c2b(void)

{
  int *piVar1;
  int iVar2;
  int unaff_ESI;
  
  piVar1 = *(int **)(unaff_ESI + 0x14);
  iVar2 = *piVar1;
  *piVar1 = (int)piVar1;
  *(int *)(*(int *)(unaff_ESI + 0x14) + 4) = *(int *)(unaff_ESI + 0x14);
  *(undefined4 *)(unaff_ESI + 0x18) = 0;
  if (iVar2 != *(int *)(unaff_ESI + 0x14)) {
    if (*(int *)(iVar2 + 0xc) != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0x14));
}



undefined4 * FUN_00437c6f(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  undefined4 *puVar2;
  undefined4 uVar3;
  
  if (*(int *)(in_EAX + 0x1c) == 0) {
    param_4 = *(int *)(in_EAX + 0x18);
  }
  else {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 != '\0') {
        param_4 = *(int *)(*(int *)(in_EAX + 0x18) + 8);
        cVar1 = FUN_0043772e();
        if (cVar1 == '\0') goto LAB_00437dcf;
        uVar3 = 0;
        goto LAB_00437c91;
      }
      cVar1 = FUN_0043772e();
      if (cVar1 == '\0') {
LAB_00437d70:
        cVar1 = FUN_0043772e();
        if (cVar1 == '\0') {
LAB_00437dcf:
          puVar2 = (undefined4 *)FUN_004375e5(in_EAX,param_2);
          *param_1 = *puVar2;
          param_1[1] = puVar2[1];
          return param_1;
        }
        FUN_00620942();
        cVar1 = FUN_006b8eca();
        if ((cVar1 == '\0') && (cVar1 = FUN_0043772e(), cVar1 == '\0')) goto LAB_00437dcf;
        cVar1 = *(char *)(*(int *)(param_4 + 8) + 0x21);
      }
      else {
        FUN_00437bca();
        cVar1 = FUN_0043772e();
        if (cVar1 == '\0') goto LAB_00437d70;
        cVar1 = *(char *)(*(int *)(param_4 + 8) + 0x21);
      }
      if (cVar1 == '\0') {
        uVar3 = 1;
      }
      else {
        uVar3 = 0;
      }
      goto LAB_00437c91;
    }
    cVar1 = FUN_0043772e();
    if (cVar1 == '\0') goto LAB_00437dcf;
  }
  uVar3 = 1;
LAB_00437c91:
  FUN_0043791e(param_1,uVar3,param_4,param_2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00437df1(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x10);
  if (pvVar1 != (void *)0x0) {
    FUN_0043831a(param_2,param_3,0);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00437e25(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x10);
  if (pvVar1 != (void *)0x0) {
    FUN_00438348(param_2,param_3,0);
  }
  return;
}



void FUN_00437e59(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_14 = param_1;
  uStack_10 = param_2;
  uStack_c = param_3;
  uStack_8 = param_4;
  cVar1 = FUN_007f2630(&local_14);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_14;
      unaff_EBX[3] = uStack_10;
      unaff_EBX[4] = uStack_c;
      unaff_EBX[5] = uStack_8;
    }
    *unaff_EBX = &DAT_00faf3b1;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



void FUN_004381dc(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_14 = param_1;
  uStack_10 = param_2;
  uStack_c = param_3;
  uStack_8 = param_4;
  cVar1 = FUN_007f2630(&local_14);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_14;
      unaff_EBX[3] = uStack_10;
      unaff_EBX[4] = uStack_c;
      unaff_EBX[5] = uStack_8;
    }
    *unaff_EBX = &DAT_00faf3d1;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



void FUN_00438224(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *unaff_ESI;
  undefined local_c [4];
  int local_8;
  
  puVar2 = (undefined4 *)FUN_0043850d(local_c);
  if (puVar2 != unaff_ESI) {
    uVar1 = *puVar2;
    *puVar2 = *unaff_ESI;
    *unaff_ESI = uVar1;
  }
  uVar1 = unaff_ESI[1];
  unaff_ESI[1] = puVar2[1];
  puVar2[1] = uVar1;
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00438258(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_00438a48(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_004382a5(int *param_1)

{
  int **ppiVar1;
  
  ppiVar1 = (int **)FUN_00418daa(1,0);
  if (ppiVar1 == (int **)0x0) {
    ppiVar1 = (int **)0x0;
  }
  else {
    *ppiVar1 = param_1;
  }
  *param_1 = (int)ppiVar1;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  return param_1;
}



void FUN_004382e2(void)

{
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  
  *unaff_ESI = *unaff_EDI;
  unaff_ESI[1] = unaff_EDI[1];
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EDI + 2);
}



void FUN_00438301(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *in_EAX;
  unaff_ESI[1] = in_EAX[1];
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 2);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_0043831a(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  param_1_00[1] = param_3;
  param_1_00[2] = param_1;
  *param_1_00 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxCloseEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
                ::vftable;
  param_1_00[3] = param_2;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_00438348(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  param_1_00[1] = param_3;
  param_1_00[2] = param_1;
  *param_1_00 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxAuiNotebookEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
                ::vftable;
  param_1_00[3] = param_2;
  return;
}



undefined4 __thiscall FUN_00438473(undefined4 param_1_00,byte param_1)

{
  FUN_00845630();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_004384e8(undefined4 param_1)

{
  int iVar1;
  int *unaff_ESI;
  
  iVar1 = FUN_00438ebe(param_1,0);
  *unaff_ESI = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0043850d(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_00438f1c(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void __fastcall FUN_0043855a(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x0043855f. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(param_1 + 0x6c))();
  return;
}



void Catch_All_004385a8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004385bf(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5D651E7E::W44B0ED88>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00438605(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00438662(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int **)(unaff_EBP + 8) != (int *)0x0) {
    (**(code **)(**(int **)(unaff_EBP + 8) + 4))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004386c0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int **)(unaff_EBP + 8) != (int *)0x0) {
    (**(code **)(**(int **)(unaff_EBP + 8) + 4))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0043871e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_004388bf(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 local_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined *local_38 [2];
  undefined4 local_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1b2fd;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_44 = param_2;
  uStack_40 = param_3;
  uStack_3c = param_4;
  cVar1 = FUN_007f2630(&local_44,DAT_0323f878 ^ (uint)&stack0xffffffb0);
  if (cVar1 == '\0') {
    local_30 = local_44;
    uStack_2c = uStack_40;
    uStack_28 = uStack_3c;
    local_38[0] = &DAT_00faf3e9;
  }
  else {
    local_38[0] = (undefined *)0x0;
  }
  local_c = 0;
  FUN_004fc9c9(local_38);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return param_1;
}



undefined4 * __thiscall FUN_00438958(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *in_EAX;
  
  while( true ) {
    if (param_1_00 == param_1) {
      return in_EAX;
    }
    if (in_EAX != (undefined4 *)0x0) break;
    in_EAX = (undefined4 *)0x8;
    param_1_00 = param_1_00 + 2;
  }
  *in_EAX = *param_1_00;
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 1);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00438985(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot0<void,class_boost::function<void___cdecl(void)>_>,class_boost::signals2::mutex>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004389cb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_004389e2(int param_1_00,int param_1,int param_2)

{
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0xc) {
    if (param_2 != 0) {
      FUN_00439e18();
    }
    param_2 = param_2 + 0xc;
  }
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_00438a23(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0xc); iVar1 = iVar1 + 0xc)
  {
    FUN_0043c400();
  }
  __CxxThrowException_8(0,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00438a48(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::grouped_list<int,struct_std::less<int>,class_boost::shared_ptr<class_boost::signals2::detail::connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot0<void,class_boost::function<void___cdecl(void)>_>,class_boost::signals2::mutex>_>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00438a8e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_00438f79(*(undefined4 *)(unaff_EBP + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00438aae(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00438cb2(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::WE037749E,class_boost::shared_ptr<class_W47457227::WE8E82499>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::WE037749E*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00438b58(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00438cff(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<unsigned_int,class_boost::_mfi::mf2<unsigned_int,class_W5D651E7E::W44B0ED88,class_boost::shared_ptr<class_WDE765622::W441A93CE>,class_boost::function<bool___cdecl(class_boost::shared_ptr<class_WDE765622::WBE3F1864>)>_>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::W44B0ED88*>,class_boost::_bi::value<class_boost::shared_ptr<class_WDE765622::W50B455F0>_>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00438b93(undefined4 param_1,TypeDescriptor **param_2,uint param_3)

{
  if (param_3 == 4) {
    *param_2 = &boost::_bi::
                bind_t<void,class_boost::_mfi::mf2<void,class_WCF831331::W03FDD85F,class_std::basic_stringstream<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>&,bool>,class_boost::_bi::list3<class_boost::_bi::value<class_boost::shared_ptr<class_WCF831331::W03FDD85F>_>,struct_boost::arg<1>,class_boost::_bi::value<bool>_>_>
                ::RTTI_Type_Descriptor;
    *(undefined *)(param_2 + 1) = 0;
    *(undefined *)((int)param_2 + 5) = 0;
  }
  else {
    param_3 = param_3 & 0xffffff00;
    FUN_00438d60(param_3);
  }
  return;
}



void FUN_00438bdf(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00438dc4(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_WCF831331::W03FDD85F,class_std::basic_stringstream<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>&>,class_boost::_bi::list2<class_boost::_bi::value<class_boost::shared_ptr<class_WCF831331::W03FDD85F>_>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00438c1a(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00438e25(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W5D651E7E::WE037749E>,class_boost::_bi::list1<class_boost::_bi::value<class_W5D651E7E::WE037749E*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00438c53(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00438e72(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,void_(__cdecl*)(class_boost::optional<unsigned_int>&,unsigned_int),class_boost::_bi::list2<class_boost::reference_wrapper<class_boost::optional<unsigned_int>_>,class_boost::_bi::value<unsigned_int>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_00438c9b(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_00438f79(iVar1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __fastcall FUN_00438cb2(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::WE037749E,class_boost::shared_ptr<class_W47457227::WE8E82499>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::WE037749E*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::WE037749E,class_boost::shared_ptr<class_W47457227::WE8E82499>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::WE037749E*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void FUN_00438cff(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  uint unaff_EBX;
  int unaff_EDI;
  
  if ((unaff_EDI == 0) || (unaff_EDI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_00754b70();
    }
    if (unaff_EDI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EBX + 0xc);
  }
  else {
    if (unaff_EDI != 2) {
      if (unaff_EDI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<unsigned_int,class_boost::_mfi::mf2<unsigned_int,class_W5D651E7E::W44B0ED88,class_boost::shared_ptr<class_WDE765622::W441A93CE>,class_boost::function<bool___cdecl(class_boost::shared_ptr<class_WDE765622::WBE3F1864>)>_>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::W44B0ED88*>,class_boost::_bi::value<class_boost::shared_ptr<class_WDE765622::W50B455F0>_>,struct_boost::arg<1>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EBX);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<unsigned_int,class_boost::_mfi::mf2<unsigned_int,class_W5D651E7E::W44B0ED88,class_boost::shared_ptr<class_WDE765622::W441A93CE>,class_boost::function<bool___cdecl(class_boost::shared_ptr<class_WDE765622::WBE3F1864>)>_>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::W44B0ED88*>,class_boost::_bi::value<class_boost::shared_ptr<class_WDE765622::W50B455F0>_>,struct_boost::arg<1>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[3];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



void __fastcall FUN_00438d60(uint param_1)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  int unaff_EBX;
  
  if ((unaff_EBX == 0) || (unaff_EBX == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_004382e2();
    }
    if (unaff_EBX != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(param_1 + 8);
  }
  else {
    if (unaff_EBX != 2) {
      if (unaff_EBX == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<void,class_boost::_mfi::mf2<void,class_WCF831331::W03FDD85F,class_std::basic_stringstream<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>&,bool>,class_boost::_bi::list3<class_boost::_bi::value<class_boost::shared_ptr<class_WCF831331::W03FDD85F>_>,struct_boost::arg<1>,class_boost::_bi::value<bool>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & param_1);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<void,class_boost::_mfi::mf2<void,class_WCF831331::W03FDD85F,class_std::basic_stringstream<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>&,bool>,class_boost::_bi::list3<class_boost::_bi::value<class_boost::shared_ptr<class_WCF831331::W03FDD85F>_>,struct_boost::arg<1>,class_boost::_bi::value<bool>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[2];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



void FUN_00438dc4(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  uint unaff_EBX;
  int unaff_EDI;
  
  if ((unaff_EDI == 0) || (unaff_EDI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_00438301();
    }
    if (unaff_EDI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EBX + 8);
  }
  else {
    if (unaff_EDI != 2) {
      if (unaff_EDI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<void,class_boost::_mfi::mf1<void,class_WCF831331::W03FDD85F,class_std::basic_stringstream<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>&>,class_boost::_bi::list2<class_boost::_bi::value<class_boost::shared_ptr<class_WCF831331::W03FDD85F>_>,struct_boost::arg<1>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EBX);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<void,class_boost::_mfi::mf1<void,class_WCF831331::W03FDD85F,class_std::basic_stringstream<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>&>,class_boost::_bi::list2<class_boost::_bi::value<class_boost::shared_ptr<class_WCF831331::W03FDD85F>_>,struct_boost::arg<1>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[2];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



void __fastcall FUN_00438e25(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W5D651E7E::WE037749E>,class_boost::_bi::list1<class_boost::_bi::value<class_W5D651E7E::WE037749E*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W5D651E7E::WE037749E>,class_boost::_bi::list1<class_boost::_bi::value<class_W5D651E7E::WE037749E*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void __fastcall FUN_00438e72(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,void_(__cdecl*)(class_boost::optional<unsigned_int>&,unsigned_int),class_boost::_bi::list2<class_boost::reference_wrapper<class_boost::optional<unsigned_int>_>,class_boost::_bi::value<unsigned_int>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,void_(__cdecl*)(class_boost::optional<unsigned_int>&,unsigned_int),class_boost::_bi::list2<class_boost::reference_wrapper<class_boost::optional<unsigned_int>_>,class_boost::_bi::value<unsigned_int>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00438ebe(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar3 = (undefined4 *)FUN_00439dde(0x74);
  puVar4 = (undefined4 *)0x0;
  if (puVar3 != (undefined4 *)0x0) {
    uVar1 = *param_1;
    uVar2 = param_1[1];
    FUN_00439966();
    *puVar3 = boost::detail::
              thread_data<class_boost::_bi::bind_t<void,class_boost::_mfi::mf0<void,class_W133E5AC5::W6C03B106>,class_boost::_bi::list1<class_boost::_bi::value<class_W133E5AC5::W6C03B106*>_>_>_>
              ::vftable;
    puVar3[0x1b] = uVar1;
    puVar3[0x1c] = uVar2;
    puVar4 = puVar3;
  }
  return puVar4;
}



void Catch_All_00438f09(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_0043d5e9(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00438f1c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::signal0_impl<void,class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(void)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&)>,class_boost::signals2::mutex>::invocation_state>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00438f62(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_006943d0(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00438f79(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  iStack_24 = param_1 + 0x1c;
  puVar1 = &uStack_28;
  uStack_28 = 0x438f95;
  FUN_00437ba2();
  local_8 = 0xffffffff;
  puVar1[-1] = param_1;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x438f9f;
  FUN_00437ae1();
  *(undefined4 *)((int)puVar2 + -4) = 0x438fa4;
  return;
}



undefined4 __thiscall FUN_00438fa7(undefined4 param_1,byte param_2)

{
  FUN_0082a030();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_0043912c(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_004391fe(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf2<void,class_W5D651E7E::WE037749E,class_boost::function<bool___cdecl(class_boost::shared_ptr<class_WDE765622::WBE3F1864>)>,bool>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::WE037749E*>,class_boost::_bi::value<bool_(__cdecl*)(class_boost::shared_ptr<class_WDE765622::WBE3F1864>)>,class_boost::_bi::value<bool>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_004391b8(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0043924c(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::WB910D23D,unsigned_int>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::WB910D23D*>,class_boost::_bi::value<unsigned_int>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_004391fe(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  int iVar2;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
        *param_1 = *param_2;
        param_2 = param_2 + 1;
        param_1 = param_1 + 1;
      }
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf2<void,class_W5D651E7E::WE037749E,class_boost::function<bool___cdecl(class_boost::shared_ptr<class_WDE765622::WBE3F1864>)>,bool>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::WE037749E*>,class_boost::_bi::value<bool_(__cdecl*)(class_boost::shared_ptr<class_WDE765622::WBE3F1864>)>,class_boost::_bi::value<bool>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf2<void,class_W5D651E7E::WE037749E,class_boost::function<bool___cdecl(class_boost::shared_ptr<class_WDE765622::WBE3F1864>)>,bool>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::WE037749E*>,class_boost::_bi::value<bool_(__cdecl*)(class_boost::shared_ptr<class_WDE765622::WBE3F1864>)>,class_boost::_bi::value<bool>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void __fastcall FUN_0043924c(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::WB910D23D,unsigned_int>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::WB910D23D*>,class_boost::_bi::value<unsigned_int>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::WB910D23D,unsigned_int>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::WB910D23D*>,class_boost::_bi::value<unsigned_int>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



int * __fastcall FUN_00439298(int *param_1)

{
  int **ppiVar1;
  
  ppiVar1 = (int **)FUN_00418daa(1,0);
  if (ppiVar1 == (int **)0x0) {
    ppiVar1 = (int **)0x0;
  }
  else {
    *ppiVar1 = param_1;
  }
  *param_1 = (int)ppiVar1;
  return param_1;
}



undefined4 __fastcall FUN_004392b8(undefined4 param_1)

{
  FUN_00439298();
  return param_1;
}



void FUN_004392d2(char *param_1)

{
  code *pcVar1;
  char *pcVar2;
  undefined **local_10 [3];
  
  if (param_1 == (char *)0x0) {
    pcVar2 = (char *)0x0;
  }
  else {
    pcVar2 = param_1;
    if ((uint)(0xffffffff / ZEXT48(param_1)) < 0x20) {
      param_1 = (char *)0x0;
      std::exception::exception((exception *)local_10,&param_1);
      local_10[0] = std::bad_alloc::vftable;
      __CxxThrowException_8(local_10,&DAT_031153a4);
      pcVar1 = (code *)swi(3);
      (*pcVar1)();
      return;
    }
  }
  operator_new((int)pcVar2 << 5);
  return;
}



void FUN_0043931f(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_004392d2(1,0);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)((int)puVar1 + 0x1d) = 0;
  *(undefined *)(puVar1 + 7) = 1;
  return;
}



void __fastcall FUN_0043934d(int param_1)

{
  int *piVar1;
  int iVar2;
  
  iVar2 = FUN_0043931f();
  piVar1 = (int *)(param_1 + 0x18);
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x1d) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_00439372(undefined4 param_1_00,undefined4 param_1)

{
  undefined4 auStack_2c [5];
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x43937e;
  local_18 = auStack_2c;
  auStack_2c[0] = param_1_00;
  local_14 = param_1_00;
  FUN_006202ef(param_1);
  local_8 = 0;
  auStack_2c[0] = 0x43939d;
  FUN_0043934d();
  return param_1_00;
}



undefined4 __fastcall FUN_004393a7(undefined4 param_1)

{
  undefined4 uStack_8;
  
  uStack_8 = param_1;
  FUN_00439372((int)&uStack_8 + 3,(int)&uStack_8 + 3);
  return param_1;
}



void FUN_004393c0(int param_1)

{
  if (*(char *)(param_1 + 0x1d) == '\0') {
    FUN_004393c0(*(undefined4 *)(param_1 + 8));
    FUN_004394a7(0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __fastcall FUN_004393fb(int param_1)

{
  int *piVar1;
  
  piVar1 = (int *)(param_1 + 0x18);
  FUN_004393c0(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



void __thiscall FUN_00439421(int param_1_00,int *param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1[2];
  param_1[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x1d) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1;
  }
  ppiVar1[1] = (int *)param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1[1];
    if (param_1 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1;
  param_1[1] = (int)ppiVar1;
  return;
}



void __thiscall FUN_00439463(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1;
  *param_1 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x1d) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1;
  }
  *(int *)(iVar1 + 4) = param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1_00 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1[1];
    if (param_1 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1;
  param_1[1] = iVar1;
  return;
}



int __thiscall FUN_004394a7(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x14) != 0) {
    FUN_0040127a();
  }
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x004395b8)
// WARNING: Removing unreachable block (ram,0x004395c8)
// WARNING: Removing unreachable block (ram,0x004395d1)
// WARNING: Removing unreachable block (ram,0x004395d4)
// WARNING: Removing unreachable block (ram,0x004395c4)
// WARNING: Removing unreachable block (ram,0x004395e1)
// WARNING: Removing unreachable block (ram,0x004395f1)
// WARNING: Removing unreachable block (ram,0x004395fc)
// WARNING: Removing unreachable block (ram,0x004395f8)
// WARNING: Removing unreachable block (ram,0x004395ec)
// WARNING: Removing unreachable block (ram,0x004395ff)

void FUN_004394ca(undefined4 param_1,undefined4 param_2,int *param_3)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x4394d6;
  if (*(char *)((int)param_3 + 0x1d) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_58,&DAT_03115668);
  }
  FUN_00439758();
  ppiVar5 = (int **)*param_3;
  if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
    if (*(char *)(param_3[2] + 0x1d) == '\0') {
      ppiVar5 = (int **)param_3[2];
    }
  }
  else {
    ppiVar5 = (int **)param_3[2];
  }
  ppiVar3 = (int **)param_3[1];
  if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
    ppiVar5[1] = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(local_14 + 0x18) + 4) == param_3) {
    *(int ***)(*(int *)(local_14 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar3 == param_3) {
    *ppiVar3 = (int *)ppiVar5;
  }
  else {
    ppiVar3[2] = (int *)ppiVar5;
  }
  if (**(int ***)(local_14 + 0x18) == param_3) {
    ppiVar4 = ppiVar3;
    if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar4 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x1d) == '\0') {
        ppiVar4 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(local_14 + 0x18) = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(local_14 + 0x18) + 8) == param_3) {
    ppiVar4 = ppiVar3;
    if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar4 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x1d) == '\0') {
        ppiVar4 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(local_14 + 0x18) + 8) = ppiVar4;
  }
  if (*(char *)(param_3 + 7) != '\x01') {
LAB_00439721:
    FUN_004394a7(0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
LAB_004396d5:
  ppiVar4 = ppiVar3;
  if ((ppiVar5 == *(int ***)(*(int *)(local_14 + 0x18) + 4)) || (*(char *)(ppiVar5 + 7) != '\x01'))
  goto LAB_0043971d;
  ppiVar3 = (int **)*ppiVar4;
  if (ppiVar5 == ppiVar3) {
    ppiVar3 = (int **)ppiVar4[2];
    if (*(char *)(ppiVar3 + 7) == '\0') {
      *(undefined *)(ppiVar3 + 7) = 1;
      *(undefined *)(ppiVar4 + 7) = 0;
      FUN_00439421(ppiVar4);
      ppiVar3 = (int **)ppiVar4[2];
    }
    if (*(char *)((int)ppiVar3 + 0x1d) == '\0') {
      if ((*(char *)(*ppiVar3 + 7) != '\x01') || (*(char *)(ppiVar3[2] + 7) != '\x01')) {
        if (*(char *)(ppiVar3[2] + 7) == '\x01') {
          *(undefined *)(*ppiVar3 + 7) = 1;
          *(undefined *)(ppiVar3 + 7) = 0;
          FUN_00439463(ppiVar3);
          ppiVar3 = (int **)ppiVar4[2];
        }
        *(undefined *)(ppiVar3 + 7) = *(undefined *)(ppiVar4 + 7);
        *(undefined *)(ppiVar4 + 7) = 1;
        *(undefined *)(ppiVar3[2] + 7) = 1;
        FUN_00439421(ppiVar4);
        goto LAB_0043971d;
      }
LAB_004396cc:
      *(undefined *)(ppiVar3 + 7) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar3 + 7) == '\0') {
      *(undefined *)(ppiVar3 + 7) = 1;
      *(undefined *)(ppiVar4 + 7) = 0;
      FUN_00439463(ppiVar4);
      ppiVar3 = (int **)*ppiVar4;
    }
    if (*(char *)((int)ppiVar3 + 0x1d) == '\0') {
      if ((*(char *)(ppiVar3[2] + 7) == '\x01') && (*(char *)(*ppiVar3 + 7) == '\x01'))
      goto LAB_004396cc;
      if (*(char *)(*ppiVar3 + 7) == '\x01') {
        *(undefined *)(ppiVar3[2] + 7) = 1;
        *(undefined *)(ppiVar3 + 7) = 0;
        FUN_00439421(ppiVar3);
        ppiVar3 = (int **)*ppiVar4;
      }
      *(undefined *)(ppiVar3 + 7) = *(undefined *)(ppiVar4 + 7);
      *(undefined *)(ppiVar4 + 7) = 1;
      *(undefined *)(*ppiVar3 + 7) = 1;
      FUN_00439463(ppiVar4);
LAB_0043971d:
      *(undefined *)(ppiVar5 + 7) = 1;
      goto LAB_00439721;
    }
  }
  ppiVar3 = (int **)ppiVar4[1];
  ppiVar5 = ppiVar4;
  goto LAB_004396d5;
}



void __fastcall FUN_00439758(int *param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  iVar2 = param_1[1];
  if (*(char *)(iVar2 + 0x1d) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x1d) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x1d) == '\0');
      param_1[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x1d) == '\0' &&
             (param_1[1] == *(int *)(iVar2 + 8)))) {
        param_1[1] = iVar2;
      }
      param_1[1] = iVar2;
    }
    return;
  }
  FUN_00a3fb10();
  return;
}



undefined4 __thiscall
FUN_004397a7(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined local_10 [12];
  
  FUN_00430228(**(undefined4 **)(param_1_00 + 0x18),param_1_00);
  cVar1 = FUN_00449367(local_10);
  if (cVar1 != '\0') {
    FUN_00430228(*(undefined4 *)(param_1_00 + 0x18),param_1_00);
    cVar1 = FUN_00449367(local_10);
    if (cVar1 != '\0') {
      FUN_004393fb();
      FUN_0042f682(param_1);
      return param_1;
    }
  }
  while (cVar1 = FUN_00449367(&stack0x00000010), cVar1 == '\0') {
    FUN_00439758();
    FUN_004394ca(local_10,param_2,param_3);
  }
  FUN_0042fae0(param_1,param_2,param_3);
  return param_1;
}



void __fastcall FUN_0043984e(int param_1)

{
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  FUN_00430228(*(undefined4 *)(param_1 + 0x18),param_1);
  FUN_00430228(**(undefined4 **)(param_1 + 0x18),param_1);
  FUN_004397a7(&local_10,local_10,local_c,local_18,local_14);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x18));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_004398a8(undefined4 *param_1)

{
  FUN_0043984e();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void __fastcall FUN_004398d0(undefined4 param_1)

{
  FUN_004398a8(param_1);
  return;
}



undefined4 __fastcall FUN_004398d8(undefined4 param_1)

{
  FUN_00439298();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __fastcall FUN_004398f2(int param_1)

{
  int aiStack_30 [7];
  int *local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4398fe;
  local_14 = aiStack_30;
  aiStack_30[0] = param_1;
  FUN_004398d8();
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  return param_1;
}



void __fastcall FUN_0043991f(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(int *)(param_1 + 0xc));
  }
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_0043993e(undefined4 *param_1)

{
  FUN_0042f2c9();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00439966(undefined4 *param_1)

{
  undefined4 uVar1;
  
  *param_1 = boost::detail::thread_data_base::vftable;
  param_1[1] = 0;
  param_1[2] = 0xffffffff;
  param_1[3] = 0;
  FUN_004393a7();
  param_1[0xc] = 0;
  FUN_004398f2();
  FUN_004398f2();
  uVar1 = FUN_0040143f(1,0);
  param_1[0x19] = uVar1;
  *(undefined *)(param_1 + 0x1a) = 1;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004399cc(undefined4 *param_1)

{
  *param_1 = boost::signals2::detail::
             connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot0<void,class_boost::function<void___cdecl(void)>_>,class_boost::signals2::mutex>
             ::vftable;
  if (*(char *)(param_1 + 0x1b) != '\0') {
    *(undefined *)(param_1 + 0x1b) = 0;
  }
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x14));
  FUN_007a7d59(param_1 + 4);
  *param_1 = boost::signals2::detail::connection_body_base::vftable;
  FUN_00417fc9();
  return;
}



undefined4 __thiscall FUN_00439a1b(undefined4 param_1_00,byte param_1)

{
  FUN_004399cc();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00439a37(undefined4 *param_1_00,int param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[8] = &DAT_00fafc20;
    param_1_00[10] = boost::exception_detail::clone_base::vftable;
  }
  FUN_00439d5f(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::bad_alloc>_>
                ::vftable;
  param_1_00[3] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::bad_alloc>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[8] + 4) + 0x20 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::bad_alloc>_>::
       vftable;
  *(int *)(*(int *)(param_1_00[8] + 4) + 0x1c + (int)param_1_00) = *(int *)(param_1_00[8] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xc;
  }
  FUN_00401200(param_1_00 + 3,param_1);
  return param_1_00;
}



undefined4 FUN_00439abf(undefined4 param_1,undefined4 param_2)

{
  FUN_00439a37(param_2,1);
  return param_1;
}



undefined4 * __thiscall FUN_00439ad9(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00401da3(param_1);
  param_1_00[3] = boost::exception::vftable;
  param_1_00[4] = 0;
  param_1_00[7] = 0xffffffff;
  param_1_00[5] = 0;
  param_1_00[6] = 0;
  *param_1_00 = boost::exception_detail::error_info_injector<class_std::bad_alloc>::vftable;
  param_1_00[3] = boost::exception_detail::error_info_injector<class_std::bad_alloc>::vftable;
  return param_1_00;
}



undefined4 FUN_00439b0e(undefined4 param_1,undefined4 param_2)

{
  FUN_00439ad9(param_2);
  return param_1;
}



void __fastcall FUN_00439b26(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_std::bad_alloc>_>
             ::vftable;
  param_1[3] = boost::exception_detail::
               clone_impl<struct_boost::exception_detail::error_info_injector<class_std::bad_alloc>_>
               ::vftable;
  *(undefined ***)(*(int *)(param_1[8] + 4) + 0x20 + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::bad_alloc>_>::
       vftable;
  *(int *)(*(int *)(param_1[8] + 4) + 0x1c + (int)param_1) = *(int *)(param_1[8] + 4) + -8;
  FUN_00439b64();
  return;
}



void __fastcall FUN_00439b53(int param_1)

{
  FUN_00439b26();
  *(undefined ***)(param_1 + 0x28) = boost::exception_detail::clone_base::vftable;
  return;
}



void __fastcall FUN_00439b64(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::error_info_injector<class_std::bad_alloc>::vftable;
  param_1[3] = boost::exception_detail::error_info_injector<class_std::bad_alloc>::vftable;
  param_1[3] = boost::exception::vftable;
  FUN_00401874();
  *param_1 = std::bad_alloc::vftable;
  exception::~exception((exception *)param_1);
  return;
}



void FUN_00439b91(void)

{
  FUN_00439c9f();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00439b99(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  if (param_3 != 0) {
    param_1_00[8] = &DAT_00fafc20;
    param_1_00[10] = boost::exception_detail::clone_base::vftable;
  }
  FUN_00439d5f(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::bad_alloc>_>
                ::vftable;
  param_1_00[3] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::bad_alloc>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[8] + 4) + 0x20 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::bad_alloc>_>::
       vftable;
  *(int *)(*(int *)(param_1_00[8] + 4) + 0x1c + (int)param_1_00) = *(int *)(param_1_00[8] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xc;
  }
  FUN_00401200(param_1_00 + 3,param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __fastcall FUN_00439c21(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  
  pvVar1 = operator_new(0x2c);
  iVar2 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00439b99(param_1 + -0x28,local_14,1);
  }
  if (iVar2 != 0) {
    iVar2 = *(int *)(*(int *)(iVar2 + 0x20) + 4) + 0x20 + iVar2;
  }
  return iVar2;
}



void FUN_00439c6c(void)

{
  FUN_00439c21();
  return;
}



void __fastcall FUN_00439c74(int param_1)

{
  code *pcVar1;
  undefined local_30 [44];
  
  clone_impl<>(param_1 + -0x28,1);
  __CxxThrowException_8(local_30,&DAT_03115890);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00439c97(void)

{
  FUN_00439c74();
  return;
}



int __thiscall FUN_00439c9f(int param_1,byte param_2)

{
  FUN_00439b26();
  *(undefined ***)(param_1 + 0x28) = boost::exception_detail::clone_base::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_00439cc2(void)

{
  FUN_00439c9f();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >(class
// boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class
// std::domain_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::evaluation_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::rounding_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error> > const &)
// 
// Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release

undefined4 * __thiscall clone_impl<>(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[8] = &DAT_00fafc20;
    param_1_00[10] = boost::exception_detail::clone_base::vftable;
  }
  FUN_00439d5f(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::bad_alloc>_>
                ::vftable;
  param_1_00[3] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::bad_alloc>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[8] + 4) + 0x20 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::bad_alloc>_>::
       vftable;
  *(undefined4 *)(*(int *)(param_1_00[8] + 4) + 0x1c + (int)param_1_00) = 0;
  return param_1_00;
}



undefined4 __thiscall FUN_00439d3b(undefined4 param_1,byte param_2)

{
  FUN_00439b64();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_00439d57(void)

{
  FUN_00439d3b();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00439d5f(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FUN_00401da3(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0xc;
  }
  FUN_00401569(iVar1);
  *param_1_00 = boost::exception_detail::error_info_injector<class_std::bad_alloc>::vftable;
  param_1_00[3] = boost::exception_detail::error_info_injector<class_std::bad_alloc>::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00439da6(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_5c [44];
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0x439db2;
  uVar2 = FUN_00439b0e(local_30,param_1);
  local_8 = 0;
  FUN_00439abf(local_5c,uVar2);
  __CxxThrowException_8(local_5c,&DAT_03115890);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00439dde(SIZE_T param_1)

{
  HANDLE hHeap;
  LPVOID pvVar1;
  undefined4 uVar2;
  DWORD dwFlags;
  bad_alloc local_1c [20];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x439dea;
  dwFlags = 0;
  hHeap = GetProcessHeap();
  pvVar1 = HeapAlloc(hHeap,dwFlags,param_1);
  if (pvVar1 == (LPVOID)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_1c);
    local_8 = 0;
    FUN_00439da6(uVar2);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_00439e18(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (iVar1 < 0) {
    iVar1 = -1 - iVar1;
  }
                    // WARNING: Could not recover jumptable at 0x00439e3b. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(&DAT_00439ebc + iVar1 * 4))();
  return;
}



undefined FUN_00439ec4(void)

{
  char cVar1;
  
  FUN_0046de1a();
  while( true ) {
    FUN_00439f82();
    cVar1 = FUN_0041c034();
    if (cVar1 == '\0') {
      return 0;
    }
    FUN_007c96e9();
    cVar1 = FUN_0043a323();
    if (cVar1 != '\0') break;
    FUN_00439f57();
  }
  return 1;
}



undefined4 __fastcall FUN_00439f23(int *param_1)

{
  int iVar1;
  
  if (*param_1 == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = *(int *)(*param_1 + 4);
  }
  return CONCAT31((int3)((uint)iVar1 >> 8),iVar1 == 1);
}



void FUN_00439f3b(void)

{
  int **in_EAX;
  
                    // WARNING: Could not recover jumptable at 0x00439f3f. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**in_EAX + 0xc))();
  return;
}



void __thiscall FUN_00439f42(undefined *param_1_00,undefined4 *param_1)

{
  if ((undefined4 *)(param_1_00 + 4) != (undefined4 *)0x0) {
    *(undefined4 *)(param_1_00 + 4) = *param_1;
  }
  *param_1_00 = 1;
  return;
}



void FUN_00439f57(void)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_00439f6e;
    }
  }
  iVar2 = *piVar1;
LAB_00439f6e:
  if (*(int **)(iVar2 + 0x10) <= unaff_ESI[1]) {
    FUN_00a3fb10();
  }
  unaff_ESI[1] = unaff_ESI[1] + 3;
  return;
}



void FUN_00439f82(void)

{
  uint uVar1;
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  
  *unaff_ESI = 0;
  uVar1 = unaff_EDI[4];
  if (uVar1 < (uint)unaff_EDI[3]) {
    FUN_00a3fb10();
  }
  *unaff_ESI = *unaff_EDI;
  unaff_ESI[1] = uVar1;
  return;
}



void __thiscall FUN_00439f9e(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = *param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00439fbb(undefined4 *param_1)

{
  undefined4 uVar1;
  int local_18;
  
  uVar1 = FUN_00465bbc();
  if (param_1 != (undefined4 *)0xfffffffc) {
    FUN_00439f9e(uVar1);
  }
  *param_1 = 0;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return param_1;
}



undefined4 FUN_0043a007(undefined4 param_1)

{
  FUN_00439fbb(param_1);
  return param_1;
}



undefined4 FUN_0043a01e(undefined4 param_1)

{
  FUN_0043a007(param_1);
  return param_1;
}



void FUN_0043a039(int param_1)

{
  undefined4 unaff_ESI;
  
  if (param_1 < 0) {
    FUN_0043a01e(unaff_ESI);
  }
  else {
    FUN_0043a007(unaff_ESI);
  }
  return;
}



void FUN_0043a05d(undefined4 param_1)

{
  FUN_0043a039(param_1,0);
  return;
}



undefined4 FUN_0043a085(undefined4 param_1)

{
  int **in_EAX;
  
  (**(code **)(**in_EAX + 4))(param_1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0043a09e(undefined4 *param_1,undefined4 *param_2)

{
  int **ppiVar1;
  undefined4 uVar2;
  
  ppiVar1 = (int **)FUN_0043a085(&param_2);
  if (param_1 + 1 != (undefined4 *)0x0) {
    uVar2 = (**(code **)(**ppiVar1 + 8))();
    param_1[1] = uVar2;
  }
  *param_1 = 1;
  if (param_2 != (undefined4 *)0x0) {
    (**(code **)*param_2)(1);
  }
  return param_1;
}



undefined4 FUN_0043a0fc(undefined4 param_1,undefined4 param_2)

{
  FUN_0043a09e(param_1,param_2);
  return param_1;
}



undefined4 FUN_0043a116(undefined4 param_1)

{
  undefined4 *in_EAX;
  
  FUN_0043a0fc(param_1,*in_EAX);
  return param_1;
}



void FUN_0043a12f(int param_1)

{
  undefined4 in_EAX;
  undefined4 unaff_ESI;
  
  if (param_1 < 0) {
    FUN_0043a116(unaff_ESI);
  }
  else {
    FUN_0043a0fc(unaff_ESI,in_EAX);
  }
  return;
}



void FUN_0043a150(undefined4 param_1)

{
  FUN_0043a12f(param_1,0);
  return;
}



void __break(void)

{
  code *pcVar1;
  
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0043a179(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 in_EAX;
  
  switch(in_EAX) {
  case 0:
    FUN_0043a05d(param_1,param_2,param_4);
    break;
  case 1:
    FUN_0043a150(param_1,param_2,param_4);
    break;
  case 2:
  case 3:
  case 4:
  case 5:
  case 6:
  case 7:
  case 8:
  case 9:
  case 10:
  case 0xb:
  case 0xc:
  case 0xd:
  case 0xe:
  case 0xf:
  case 0x10:
  case 0x11:
  case 0x12:
  case 0x13:
                    // WARNING: Subroutine does not return
    __break(param_4);
  default:
                    // WARNING: Subroutine does not return
    __break(0,param_4);
  }
  return;
}



void FUN_0043a219(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0043a179(param_1,param_3,0,0);
  return;
}



undefined4 __fastcall FUN_0043a248(undefined4 param_1_00,int *param_2,undefined4 param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = *param_2;
  iVar2 = iVar1;
  if (iVar1 < 0) {
    iVar2 = -1 - iVar1;
  }
  FUN_0043a219(iVar1,iVar2,param_2 + 1,0);
  return param_1;
}



undefined4 FUN_0043a277(undefined4 param_1)

{
  FUN_0043a248(param_1);
  return param_1;
}



undefined4 FUN_0043a291(undefined4 param_1)

{
  FUN_0043a277(param_1);
  return param_1;
}



void FUN_0043a2a6(void)

{
  int *in_EAX;
  int iVar1;
  
  iVar1 = *in_EAX;
  if (iVar1 < 0) {
    iVar1 = -1 - iVar1;
  }
                    // WARNING: Could not recover jumptable at 0x0043a2b6. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(&DAT_0043a316 + iVar1 * 4))();
  return;
}



void FUN_0043a31e(void)

{
  int *in_EAX;
  int iVar1;
  
  iVar1 = *in_EAX;
  if (iVar1 < 0) {
    iVar1 = -1 - iVar1;
  }
                    // WARNING: Could not recover jumptable at 0x0043a2b6. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(&DAT_0043a316 + iVar1 * 4))();
  return;
}



void FUN_0043a323(void)

{
  int *in_EAX;
  int iVar1;
  
  iVar1 = *in_EAX;
  if (iVar1 < 0) {
    iVar1 = -1 - iVar1;
  }
                    // WARNING: Could not recover jumptable at 0x0043a332. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(&DAT_0043a373 + iVar1 * 4))();
  return;
}



void FUN_0043a37b(void)

{
  char cVar1;
  undefined4 *puVar2;
  int unaff_EBX;
  undefined auStack_40 [6];
  undefined local_3a;
  undefined local_39;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_28 [12];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5ea0b;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_40;
  ExceptionList = &local_14;
  puVar2 = (undefined4 *)FUN_0046de1a(DAT_0323f878 ^ (uint)&stack0xffffffb8);
  local_38 = *puVar2;
  local_34 = puVar2[1];
  do {
    FUN_00439f82();
    cVar1 = FUN_0041c034();
    if (cVar1 == '\0') {
LAB_0043a440:
      ExceptionList = local_14;
      ___security_check_cookie_4();
      return;
    }
    local_3a = 0;
    FUN_007c96e9();
    FUN_0043a291(local_28);
    local_c = 0;
    local_39 = 0;
    FUN_007c96e9();
    cVar1 = FUN_0043a323();
    local_c = 0xffffffff;
    if (cVar1 != '\0') {
      *(undefined *)(unaff_EBX + 4) = 0;
      FUN_0043a2a6();
      goto LAB_0043a440;
    }
    FUN_0043a2a6();
    FUN_00439f57();
  } while( true );
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined __fastcall FUN_0043a45f(int param_1)

{
  LPCRITICAL_SECTION lpCriticalSection;
  undefined uVar1;
  
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x50);
  EnterCriticalSection(lpCriticalSection);
  FUN_0043a37b(lpCriticalSection);
  uVar1 = *(undefined *)(param_1 + 4);
  LeaveCriticalSection(lpCriticalSection);
  return uVar1;
}



void __fastcall FUN_0043a498(int param_1)

{
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x50));
  return;
}



void __fastcall FUN_0043a4a3(undefined4 *param_1)

{
  *param_1 = boost::signals2::detail::connection_body_base::vftable;
  FUN_00417fc9();
  return;
}



undefined4 * __thiscall FUN_0043a4b1(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::signals2::detail::connection_body_base::vftable;
  FUN_00417fc9();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0043a4d6(char *param_1)

{
  if (*param_1 != '\0') {
    *param_1 = '\0';
  }
  return;
}



void FUN_0043a4df(void)

{
  LPCRITICAL_SECTION *in_EAX;
  
  LeaveCriticalSection(*in_EAX);
  return;
}



void FUN_0043a4e8(int *param_1)

{
  int *piVar1;
  int *in_EAX;
  int *piVar2;
  
  if (in_EAX != param_1) {
    piVar2 = in_EAX + 1;
    do {
      if (*piVar2 != 0) {
        FUN_0040127a();
      }
      piVar1 = piVar2 + 1;
      piVar2 = piVar2 + 2;
    } while (piVar1 != param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0043a50d(void)

{
  int *piVar1;
  int *piVar2;
  undefined **local_64 [19];
  undefined local_18 [4];
  undefined local_14 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x58;
  local_8 = 0x43a519;
  piVar1 = (int *)FUN_00829980(local_14);
  piVar2 = (int *)FUN_008293e0(local_18);
  if (*piVar2 == *piVar1) {
    FUN_004013ff(0x24,"boost thread: trying joining itself");
    local_64[0] = boost::thread_resource_error::vftable;
    local_8 = 0;
    FUN_00401bd4(local_64);
  }
  FUN_0082a7e0();
  return;
}



void FUN_0043a56a(uint *param_1)

{
  __aulldiv(*param_1 + 0x2ac18000,param_1[1] + 0xfe624e21 + (uint)(0xd53e7fff < *param_1),10,0);
  return;
}



int FUN_0043a58a(short *param_1)

{
  short sVar1;
  ushort uVar2;
  uint uVar3;
  
  sVar1 = (short)((int)(0xe - (uint)(ushort)param_1[1]) / 0xc);
  uVar2 = (*param_1 - sVar1) + 0x12c0;
  uVar3 = (uint)uVar2;
  return ((((uint)(ushort)(sVar1 * 0xc + -3 + param_1[1]) * 0x99 + 2) / 5 + uVar3 / 400) -
         uVar3 / 100) + (uint)(ushort)param_1[2] + uVar3 * 0x16d + -0x7d2d + (uint)(uVar2 >> 2);
}



undefined4 * __thiscall
FUN_0043a605(undefined4 *param_1_00,undefined2 param_1,undefined2 param_2,undefined2 param_3)

{
  undefined4 uVar1;
  undefined4 uStack_c;
  undefined4 local_8;
  
  uStack_c = CONCAT22(param_1,(short)param_1_00);
  local_8 = CONCAT22(param_3,param_2);
  uVar1 = FUN_0043a58a((int)&uStack_c + 2);
  *param_1_00 = uVar1;
  return param_1_00;
}



// WARNING: Removing unreachable block (ram,0x0043a646)

undefined4 FUN_0043a638(ushort param_1)

{
  if (((param_1 & 3) == 0) && (((uint)param_1 % 100 != 0 || ((uint)param_1 % 400 == 0)))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0043a670(undefined4 param_1,short param_2)

{
  char cVar1;
  
  if (param_2 == 2) {
    cVar1 = FUN_0043a638(param_1);
    if (cVar1 != '\0') {
      return 0x1d;
    }
    return 0x1c;
  }
  if ((((param_2 != 4) && (param_2 != 6)) && (param_2 != 9)) && (param_2 != 0xb)) {
    return 0x1f;
  }
  return 0x1e;
}



undefined4 * __thiscall FUN_0043a6ab(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00418bd9(param_1);
  *param_1_00 = boost::gregorian::bad_day_of_month::vftable;
  return param_1_00;
}



undefined4 __thiscall
FUN_0043a6c3(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  ushort uVar1;
  uint uVar2;
  undefined4 uVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_5c [72];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c281bd;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_14;
  FUN_0043a605(param_1,param_2,param_3);
  uVar1 = FUN_0043a670(param_1,param_2,uVar2);
  if (uVar1 < (ushort)param_3) {
    uVar3 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      (local_5c,"Day of month is not valid for year");
    local_c = 0;
    uVar3 = FUN_0043a6ab(uVar3);
    local_c = CONCAT31(local_c._1_3_,1);
    FUN_0043aad4(uVar3);
  }
  ExceptionList = local_14;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043a74d(undefined4 *param_1_00,int param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043aa75(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>_>
       ::vftable;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1);
  return param_1_00;
}



undefined4 FUN_0043a7d5(undefined4 param_1,undefined4 param_2)

{
  FUN_0043a74d(param_2,1);
  return param_1;
}



undefined4 * __thiscall FUN_0043a7ef(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_0043aabc(param_1);
  param_1_00[10] = boost::exception::vftable;
  param_1_00[0xb] = 0;
  param_1_00[0xe] = 0xffffffff;
  param_1_00[0xc] = 0;
  param_1_00[0xd] = 0;
  *param_1_00 = boost::exception_detail::
                error_info_injector<struct_boost::gregorian::bad_day_of_month>::vftable;
  param_1_00[10] =
       boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>::
       vftable;
  return param_1_00;
}



undefined4 FUN_0043a824(undefined4 param_1,undefined4 param_2)

{
  FUN_0043a7ef(param_2);
  return param_1;
}



void __fastcall FUN_0043a83c(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  FUN_0043a87a();
  return;
}



void __fastcall FUN_0043a869(int param_1)

{
  FUN_0043a83c();
  *(undefined ***)(param_1 + 0x44) = boost::exception_detail::clone_base::vftable;
  return;
}



void __fastcall FUN_0043a87a(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>
             ::vftable;
  param_1[10] = boost::exception_detail::
                error_info_injector<struct_boost::gregorian::bad_day_of_month>::vftable;
  param_1[10] = boost::exception::vftable;
  FUN_00401874();
  *param_1 = std::out_of_range::vftable;
  FUN_00417cf8();
  return;
}



void FUN_0043a8a7(void)

{
  FUN_0043a9b5();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_0043a8af(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  if (param_3 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043aa75(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>_>
       ::vftable;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __fastcall FUN_0043a937(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  
  pvVar1 = operator_new(0x48);
  iVar2 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_0043a8af(param_1 + -0x44,local_14,1);
  }
  if (iVar2 != 0) {
    iVar2 = *(int *)(*(int *)(iVar2 + 0x3c) + 4) + 0x3c + iVar2;
  }
  return iVar2;
}



void FUN_0043a982(void)

{
  FUN_0043a937();
  return;
}



void __fastcall FUN_0043a98a(int param_1)

{
  code *pcVar1;
  undefined local_4c [72];
  
  clone_impl<>(param_1 + -0x44,1);
  __CxxThrowException_8(local_4c,&DAT_0311582c);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0043a9ad(void)

{
  FUN_0043a98a();
  return;
}



int __thiscall FUN_0043a9b5(int param_1,byte param_2)

{
  FUN_0043a83c();
  *(undefined ***)(param_1 + 0x44) = boost::exception_detail::clone_base::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_0043a9d8(void)

{
  FUN_0043a9b5();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >(class
// boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class
// std::domain_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::evaluation_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::rounding_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error> > const &)
// 
// Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release

undefined4 * __thiscall clone_impl<>(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043aa75(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) = 0;
  return param_1_00;
}



undefined4 __thiscall FUN_0043aa51(undefined4 param_1,byte param_2)

{
  FUN_0043a87a();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_0043aa6d(void)

{
  FUN_0043aa51();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043aa75(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FUN_0043aabc(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0x28;
  }
  FUN_00401569(iVar1);
  *param_1_00 = boost::exception_detail::
                error_info_injector<struct_boost::gregorian::bad_day_of_month>::vftable;
  param_1_00[10] =
       boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_month>::
       vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_0043aabc(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00418bc1(param_1);
  *param_1_00 = boost::gregorian::bad_day_of_month::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0043aad4(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_98 [60];
  undefined local_5c [84];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x88;
  local_8 = 0x43aae3;
  uVar2 = FUN_0043a824(local_98,param_1);
  local_8 = 0;
  FUN_0043a7d5(local_5c,uVar2);
  __CxxThrowException_8(local_5c,&DAT_0311582c);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_0043ab12(undefined4 *param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x43ab1e;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_2c,"Day of month value is out of range 1..31");
  local_8 = 0;
  FUN_00418bd9(uVar1);
  FUN_004017b2(1,0);
  *param_1 = boost::gregorian::bad_day_of_month::vftable;
  return param_1;
}



void __fastcall FUN_0043ab53(undefined4 *param_1)

{
  *param_1 = std::out_of_range::vftable;
  FUN_00417cf8();
  return;
}



void FUN_0043ab5e(void)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_40 [44];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2cff5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar2 = FUN_0043ab12(DAT_0323f878 ^ (uint)local_40);
  local_c = 0;
  FUN_0043aad4(uVar2);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_0043ab9c(ushort *param_1_00,uint param_1)

{
  ushort *extraout_ECX;
  undefined4 uVar1;
  
  if (1 < (param_1 & 0xffff) + 1) goto LAB_0043abba;
  uVar1 = 0;
  while( true ) {
    param_1 = FUN_0043ab5e(*param_1_00,param_1,uVar1);
    param_1_00 = extraout_ECX;
LAB_0043abba:
    if ((ushort)param_1 < 0x20) break;
    uVar1 = 1;
  }
  *param_1_00 = (ushort)param_1;
  return;
}



undefined2 * __thiscall FUN_0043abcd(undefined2 *param_1_00,undefined4 param_1)

{
  *param_1_00 = 1;
  FUN_0043ab9c(param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043abe5(undefined4 *param_1_00,int param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043af0d(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>_>
       ::vftable;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1);
  return param_1_00;
}



undefined4 FUN_0043ac6d(undefined4 param_1,undefined4 param_2)

{
  FUN_0043abe5(param_2,1);
  return param_1;
}



undefined4 * __thiscall FUN_0043ac87(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_0043af54(param_1);
  param_1_00[10] = boost::exception::vftable;
  param_1_00[0xb] = 0;
  param_1_00[0xe] = 0xffffffff;
  param_1_00[0xc] = 0;
  param_1_00[0xd] = 0;
  *param_1_00 = boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>::
                vftable;
  param_1_00[10] =
       boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>::vftable;
  return param_1_00;
}



undefined4 FUN_0043acbc(undefined4 param_1,undefined4 param_2)

{
  FUN_0043ac87(param_2);
  return param_1;
}



void __fastcall FUN_0043acd4(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  FUN_0043ad12();
  return;
}



void __fastcall FUN_0043ad01(int param_1)

{
  FUN_0043acd4();
  *(undefined ***)(param_1 + 0x44) = boost::exception_detail::clone_base::vftable;
  return;
}



void __fastcall FUN_0043ad12(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>::
             vftable;
  param_1[10] = boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>::
                vftable;
  param_1[10] = boost::exception::vftable;
  FUN_00401874();
  *param_1 = std::out_of_range::vftable;
  FUN_00417cf8();
  return;
}



void FUN_0043ad3f(void)

{
  FUN_0043ae4d();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_0043ad47(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  if (param_3 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043af0d(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>_>
       ::vftable;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __fastcall FUN_0043adcf(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  
  pvVar1 = operator_new(0x48);
  iVar2 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_0043ad47(param_1 + -0x44,local_14,1);
  }
  if (iVar2 != 0) {
    iVar2 = *(int *)(*(int *)(iVar2 + 0x3c) + 4) + 0x3c + iVar2;
  }
  return iVar2;
}



void FUN_0043ae1a(void)

{
  FUN_0043adcf();
  return;
}



void __fastcall FUN_0043ae22(int param_1)

{
  code *pcVar1;
  undefined local_4c [72];
  
  clone_impl<>(param_1 + -0x44,1);
  __CxxThrowException_8(local_4c,&DAT_03115a2c);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0043ae45(void)

{
  FUN_0043ae22();
  return;
}



int __thiscall FUN_0043ae4d(int param_1,byte param_2)

{
  FUN_0043acd4();
  *(undefined ***)(param_1 + 0x44) = boost::exception_detail::clone_base::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_0043ae70(void)

{
  FUN_0043ae4d();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >(class
// boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class
// std::domain_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::evaluation_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::rounding_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error> > const &)
// 
// Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release

undefined4 * __thiscall clone_impl<>(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043af0d(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) = 0;
  return param_1_00;
}



undefined4 __thiscall FUN_0043aee9(undefined4 param_1,byte param_2)

{
  FUN_0043ad12();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_0043af05(void)

{
  FUN_0043aee9();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043af0d(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FUN_0043af54(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0x28;
  }
  FUN_00401569(iVar1);
  *param_1_00 = boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>::
                vftable;
  param_1_00[10] =
       boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_month>::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_0043af54(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00418bc1(param_1);
  *param_1_00 = boost::gregorian::bad_month::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0043af6c(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_98 [60];
  undefined local_5c [84];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x88;
  local_8 = 0x43af7b;
  uVar2 = FUN_0043acbc(local_98,param_1);
  local_8 = 0;
  FUN_0043ac6d(local_5c,uVar2);
  __CxxThrowException_8(local_5c,&DAT_03115a2c);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0043afaa(undefined4 *param_1,byte param_2)

{
  *param_1 = std::out_of_range::vftable;
  FUN_00417cf8();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_0043afcc(undefined4 *param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x43afd8;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_2c,"Month number is out of range 1..12");
  local_8 = 0;
  FUN_00418bd9(uVar1);
  FUN_004017b2(1,0);
  *param_1 = boost::gregorian::bad_month::vftable;
  return param_1;
}



void FUN_0043b00d(void)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_40 [44];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2cff5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar2 = FUN_0043afcc(DAT_0323f878 ^ (uint)local_40);
  local_c = 0;
  FUN_0043af6c(uVar2);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_0043b04b(ushort *param_1_00,uint param_1)

{
  ushort *extraout_ECX;
  undefined4 uVar1;
  
  if (1 < (param_1 & 0xffff) + 1) goto LAB_0043b069;
  uVar1 = 0;
  while( true ) {
    param_1 = FUN_0043b00d(*param_1_00,param_1,uVar1);
    param_1_00 = extraout_ECX;
LAB_0043b069:
    if ((ushort)param_1 < 0xd) break;
    uVar1 = 1;
  }
  *param_1_00 = (ushort)param_1;
  return;
}



undefined2 * __thiscall FUN_0043b07c(undefined2 *param_1_00,undefined4 param_1)

{
  *param_1_00 = 1;
  FUN_0043b04b(param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043b094(undefined4 *param_1_00,int param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043b3bc(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>_>
       ::vftable;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1);
  return param_1_00;
}



undefined4 FUN_0043b11c(undefined4 param_1,undefined4 param_2)

{
  FUN_0043b094(param_2,1);
  return param_1;
}



undefined4 * __thiscall FUN_0043b136(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_0043b403(param_1);
  param_1_00[10] = boost::exception::vftable;
  param_1_00[0xb] = 0;
  param_1_00[0xe] = 0xffffffff;
  param_1_00[0xc] = 0;
  param_1_00[0xd] = 0;
  *param_1_00 = boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>::
                vftable;
  param_1_00[10] =
       boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>::vftable;
  return param_1_00;
}



undefined4 FUN_0043b16b(undefined4 param_1,undefined4 param_2)

{
  FUN_0043b136(param_2);
  return param_1;
}



void __fastcall FUN_0043b183(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  FUN_0043b1c1();
  return;
}



void __fastcall FUN_0043b1b0(int param_1)

{
  FUN_0043b183();
  *(undefined ***)(param_1 + 0x44) = boost::exception_detail::clone_base::vftable;
  return;
}



void __fastcall FUN_0043b1c1(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>::
             vftable;
  param_1[10] = boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>::
                vftable;
  param_1[10] = boost::exception::vftable;
  FUN_00401874();
  *param_1 = std::out_of_range::vftable;
  FUN_00417cf8();
  return;
}



void FUN_0043b1ee(void)

{
  FUN_0043b2fc();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_0043b1f6(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  if (param_3 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043b3bc(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>_>
       ::vftable;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __fastcall FUN_0043b27e(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  
  pvVar1 = operator_new(0x48);
  iVar2 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_0043b1f6(param_1 + -0x44,local_14,1);
  }
  if (iVar2 != 0) {
    iVar2 = *(int *)(*(int *)(iVar2 + 0x3c) + 4) + 0x3c + iVar2;
  }
  return iVar2;
}



void FUN_0043b2c9(void)

{
  FUN_0043b27e();
  return;
}



void __fastcall FUN_0043b2d1(int param_1)

{
  code *pcVar1;
  undefined local_4c [72];
  
  clone_impl<>(param_1 + -0x44,1);
  __CxxThrowException_8(local_4c,&DAT_031159a4);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0043b2f4(void)

{
  FUN_0043b2d1();
  return;
}



int __thiscall FUN_0043b2fc(int param_1,byte param_2)

{
  FUN_0043b183();
  *(undefined ***)(param_1 + 0x44) = boost::exception_detail::clone_base::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_0043b31f(void)

{
  FUN_0043b2fc();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >(class
// boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class
// std::domain_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::evaluation_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::rounding_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error> > const &)
// 
// Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release

undefined4 * __thiscall clone_impl<>(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043b3bc(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) = 0;
  return param_1_00;
}



undefined4 __thiscall FUN_0043b398(undefined4 param_1,byte param_2)

{
  FUN_0043b1c1();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_0043b3b4(void)

{
  FUN_0043b398();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043b3bc(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FUN_0043b403(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0x28;
  }
  FUN_00401569(iVar1);
  *param_1_00 = boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>::
                vftable;
  param_1_00[10] =
       boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_year>::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_0043b403(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00418bc1(param_1);
  *param_1_00 = boost::gregorian::bad_year::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0043b41b(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_98 [60];
  undefined local_5c [84];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x88;
  local_8 = 0x43b42a;
  uVar2 = FUN_0043b16b(local_98,param_1);
  local_8 = 0;
  FUN_0043b11c(local_5c,uVar2);
  __CxxThrowException_8(local_5c,&DAT_031159a4);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_0043b459(undefined4 *param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x43b465;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_2c,"Year is out of valid range: 1400..10000");
  local_8 = 0;
  FUN_00418bd9(uVar1);
  FUN_004017b2(1,0);
  *param_1 = boost::gregorian::bad_year::vftable;
  return param_1;
}



void FUN_0043b49a(void)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_40 [44];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2cff5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar2 = FUN_0043b459(DAT_0323f878 ^ (uint)local_40);
  local_c = 0;
  FUN_0043b41b(uVar2);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_0043b4d8(ushort *param_1_00,uint param_1)

{
  ushort *extraout_ECX;
  undefined4 uVar1;
  
  if (0x578 < (param_1 & 0xffff) + 1) goto LAB_0043b4f9;
  uVar1 = 0;
  while( true ) {
    param_1 = FUN_0043b49a(*param_1_00,param_1,uVar1);
    param_1_00 = extraout_ECX;
LAB_0043b4f9:
    if ((ushort)param_1 < 0x2711) break;
    uVar1 = 1;
  }
  *param_1_00 = (ushort)param_1;
  return;
}



undefined2 * __thiscall FUN_0043b510(undefined2 *param_1_00,undefined4 param_1)

{
  *param_1_00 = 0x578;
  FUN_0043b4d8(param_1);
  return param_1_00;
}



undefined8 FUN_0043b52a(int param_1,int param_2)

{
  bool bVar1;
  
  if ((param_2 < 1) && (param_2 < 0)) {
    bVar1 = param_1 != 0;
    param_1 = -param_1;
    param_2 = -(param_2 + (uint)bVar1);
  }
  return CONCAT44(param_2,param_1);
}



longlong FUN_0043b546(int param_1,uint param_2,uint param_3,undefined4 param_4,int param_5)

{
  uint uVar1;
  undefined8 uVar2;
  longlong lVar3;
  undefined8 uVar4;
  
  if (param_1 < 0) {
    param_1 = -param_1;
LAB_0043b5b3:
    if (-1 < (int)param_2) goto LAB_0043b5b9;
  }
  else if (-1 < (int)param_2) {
    if ((-1 < (int)param_3) && (-1 < param_5)) {
      uVar2 = __allmul(param_1,param_1 >> 0x1f,0x3c,0);
      uVar2 = __allmul((uint)uVar2 + param_2,
                       (int)((ulonglong)uVar2 >> 0x20) + ((int)param_2 >> 0x1f) +
                       (uint)CARRY4((uint)uVar2,param_2),0x3c,0);
      lVar3 = __allmul((uint)uVar2 + param_3,
                       (int)((ulonglong)uVar2 >> 0x20) + ((int)param_3 >> 0x1f) +
                       (uint)CARRY4((uint)uVar2,param_3),1000000,0);
      return lVar3 + CONCAT44(param_5,param_4);
    }
    goto LAB_0043b5b3;
  }
  param_2 = -param_2;
LAB_0043b5b9:
  if ((int)param_3 < 0) {
    param_3 = -param_3;
  }
  uVar2 = FUN_0043b52a(param_4,param_5);
  uVar1 = -(int)uVar2;
  lVar3 = __allmul(param_1,param_1 >> 0x1f,0x3c,0);
  lVar3 = __allmul(lVar3 + (int)param_2,0x3c,0);
  uVar4 = __allmul(lVar3 + (int)param_3,1000000,0);
  return CONCAT44((-(int)((ulonglong)uVar4 >> 0x20) -
                  ((int)((ulonglong)uVar2 >> 0x20) + (uint)((int)uVar2 != 0))) -
                  (uint)(uVar1 < (uint)uVar4),uVar1 - (uint)uVar4);
}



undefined8 * __thiscall
FUN_0043b630(undefined8 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  undefined8 uVar1;
  
  uVar1 = FUN_0043b546(param_1,param_2,param_3,param_4,param_5);
  *param_1_00 = uVar1;
  return param_1_00;
}



undefined4 __thiscall
FUN_0043b659(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  FUN_0043b630(param_1,param_2,param_3,param_4,param_5);
  return param_1_00;
}



undefined4 FUN_0043b67a(int param_1)

{
  undefined4 uVar1;
  
  uVar1 = 0;
  if ((param_1 == 0) || (param_1 == -1)) {
    uVar1 = 1;
  }
  return uVar1;
}



undefined4 __fastcall FUN_0043b68d(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (((iVar1 != 0) && (iVar1 != -1)) && (iVar1 != -2)) {
    return 0;
  }
  return 1;
}



void __thiscall FUN_0043b6a4(uint *param_1_00,uint *param_1,uint *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  char cVar4;
  
  cVar4 = FUN_0043bd2a();
  if ((cVar4 == '\0') && (cVar4 = FUN_0043b68d(), cVar4 == '\0')) {
LAB_0043b753:
    uVar1 = *param_2;
    uVar2 = *param_1_00;
    uVar3 = param_1_00[1];
    *param_1 = uVar1 + *param_1_00;
    param_1[1] = uVar3 + CARRY4(uVar1,uVar2);
    return;
  }
  cVar4 = FUN_0043bd4a();
  if ((cVar4 == '\0') && (*param_2 != 0xfffffffe)) {
    uVar1 = param_1_00[1];
    uVar2 = *param_1_00;
    cVar4 = FUN_0043bd84(uVar2,uVar1);
    if (((cVar4 == '\0') || (*param_2 != 0)) &&
       ((cVar4 = FUN_0043bd9c(uVar2,uVar1), cVar4 == '\0' || (*param_2 != 0xffffffff)))) {
      cVar4 = FUN_0043bd5f();
      if (cVar4 != '\0') {
        *param_1 = uVar2;
        param_1[1] = uVar1;
        return;
      }
      if (*param_2 != 0xffffffff) {
        if (*param_2 == 0) {
          *param_1 = 0;
          param_1[1] = 0x80000000;
          return;
        }
        goto LAB_0043b753;
      }
      *param_1 = 0xffffffff;
      goto LAB_0043b772;
    }
  }
  *param_1 = 0xfffffffe;
LAB_0043b772:
  param_1[1] = 0x7fffffff;
  return;
}



longlong * __thiscall FUN_0043b782(longlong *param_1_00,int *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 uVar2;
  char cVar3;
  undefined4 *puVar4;
  longlong lVar5;
  int local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10 [12];
  
  *(undefined4 *)((int)param_1_00 + 4) = 0;
  *(undefined4 *)param_1_00 = 1;
  iVar1 = *param_1;
  cVar3 = FUN_0043b67a(iVar1);
  if (((cVar3 == '\0') && (iVar1 != -2)) && (cVar3 = FUN_0043bd2a(), cVar3 == '\0')) {
    local_18 = *param_2;
    uVar2 = param_2[1];
    lVar5 = __allmul(iVar1,0,0x1dd76000,0x14);
    *param_1_00 = lVar5 + CONCAT44(uVar2,local_18);
    return param_1_00;
  }
  local_18 = *param_2;
  local_14 = param_2[1];
  local_1c = iVar1;
  puVar4 = (undefined4 *)FUN_0043b6a4(local_10,&local_1c);
  *(undefined4 *)param_1_00 = *puVar4;
  *(undefined4 *)((int)param_1_00 + 4) = puVar4[1];
  return param_1_00;
}



undefined4 __fastcall FUN_0043b81b(undefined4 param_1)

{
  FUN_0043b782(&stack0x00000004,&stack0x00000008);
  return param_1;
}



undefined4 FUN_0043b835(undefined4 param_1,code *param_2)

{
  undefined4 *puVar1;
  undefined4 extraout_ECX;
  undefined4 extraout_ECX_00;
  undefined4 extraout_ECX_01;
  undefined4 unaff_EBX;
  undefined8 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined *puVar5;
  undefined4 uStack_4c;
  undefined8 uStack_48;
  undefined4 uStack_40;
  _FILETIME local_34;
  undefined auStack_2c [40];
  
  GetSystemTimeAsFileTime(&local_34);
  uVar2 = FUN_0043a56a(&local_34);
  uStack_48 = __aulldvrm(uVar2,1000000,0);
  puVar5 = auStack_2c;
  puVar1 = (undefined4 *)(*param_2)(&uStack_48,puVar5);
  FUN_0043abcd(*(undefined2 *)(puVar1 + 3));
  uVar4 = extraout_ECX_00;
  FUN_0043b07c(*(short *)(puVar1 + 4) + 1);
  uVar3 = extraout_ECX_01;
  FUN_0043b510(*(short *)(puVar1 + 5) + 0x76c);
  FUN_0043a6c3(uVar3,uVar4,puVar5);
  FUN_0043b659(puVar1[2],puVar1[1],*puVar1,extraout_ECX,0);
  FUN_0043b81b(uStack_4c,uStack_40,unaff_EBX);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043b8fc(undefined4 *param_1_00,int param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043bc1e(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::runtime_error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::runtime_error>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::runtime_error>_>::
       vftable;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1);
  return param_1_00;
}



undefined4 FUN_0043b984(undefined4 param_1,undefined4 param_2)

{
  FUN_0043b8fc(param_2,1);
  return param_1;
}



undefined4 * __thiscall FUN_0043b99e(undefined4 *param_1_00,undefined4 param_1)

{
  FID_conflict_runtime_error(param_1);
  param_1_00[10] = boost::exception::vftable;
  param_1_00[0xb] = 0;
  param_1_00[0xe] = 0xffffffff;
  param_1_00[0xc] = 0;
  param_1_00[0xd] = 0;
  *param_1_00 = boost::exception_detail::error_info_injector<class_std::runtime_error>::vftable;
  param_1_00[10] = boost::exception_detail::error_info_injector<class_std::runtime_error>::vftable;
  return param_1_00;
}



undefined4 FUN_0043b9d3(undefined4 param_1,undefined4 param_2)

{
  FUN_0043b99e(param_2);
  return param_1;
}



void __fastcall FUN_0043b9eb(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_std::runtime_error>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::runtime_error>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::runtime_error>_>::
       vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  FUN_0043ba29();
  return;
}



void __fastcall FUN_0043ba18(int param_1)

{
  FUN_0043b9eb();
  *(undefined ***)(param_1 + 0x44) = boost::exception_detail::clone_base::vftable;
  return;
}



void __fastcall FUN_0043ba29(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::error_info_injector<class_std::runtime_error>::vftable;
  param_1[10] = boost::exception_detail::error_info_injector<class_std::runtime_error>::vftable;
  param_1[10] = boost::exception::vftable;
  FUN_00401874();
  FUN_0040114d();
  return;
}



void FUN_0043ba50(void)

{
  FUN_0043bb5e();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_0043ba58(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  if (param_3 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043bc1e(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::runtime_error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::runtime_error>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::runtime_error>_>::
       vftable;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __fastcall FUN_0043bae0(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  
  pvVar1 = operator_new(0x48);
  iVar2 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_0043ba58(param_1 + -0x44,local_14,1);
  }
  if (iVar2 != 0) {
    iVar2 = *(int *)(*(int *)(iVar2 + 0x3c) + 4) + 0x3c + iVar2;
  }
  return iVar2;
}



void FUN_0043bb2b(void)

{
  FUN_0043bae0();
  return;
}



void __fastcall FUN_0043bb33(int param_1)

{
  code *pcVar1;
  undefined local_4c [72];
  
  clone_impl<>(param_1 + -0x44,1);
  __CxxThrowException_8(local_4c,&DAT_031157a4);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0043bb56(void)

{
  FUN_0043bb33();
  return;
}



int __thiscall FUN_0043bb5e(int param_1,byte param_2)

{
  FUN_0043b9eb();
  *(undefined ***)(param_1 + 0x44) = boost::exception_detail::clone_base::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_0043bb81(void)

{
  FUN_0043bb5e();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >(class
// boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class
// std::domain_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::evaluation_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::rounding_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error> > const &)
// 
// Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release

undefined4 * __thiscall clone_impl<>(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043bc1e(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::runtime_error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::runtime_error>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::runtime_error>_>::
       vftable;
  *(undefined4 *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) = 0;
  return param_1_00;
}



undefined4 __thiscall FUN_0043bbfa(undefined4 param_1,byte param_2)

{
  FUN_0043ba29();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_0043bc16(void)

{
  FUN_0043bbfa();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043bc1e(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FID_conflict_runtime_error(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0x28;
  }
  FUN_00401569(iVar1);
  *param_1_00 = boost::exception_detail::error_info_injector<class_std::runtime_error>::vftable;
  param_1_00[10] = boost::exception_detail::error_info_injector<class_std::runtime_error>::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0043bc65(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_98 [60];
  undefined local_5c [84];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x88;
  local_8 = 0x43bc74;
  uVar2 = FUN_0043b9d3(local_98,param_1);
  local_8 = 0;
  FUN_0043b984(local_5c,uVar2);
  __CxxThrowException_8(local_5c,&DAT_031157a4);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0043bca3(__time64_t *param_1)

{
  uint uVar1;
  tm *ptVar2;
  undefined4 uVar3;
  undefined auStack_60 [4];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_5c [72];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2323f;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_60;
  ExceptionList = &local_14;
  ptVar2 = __gmtime64(param_1);
  if (ptVar2 == (tm *)0x0) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_5c,"could not convert calendar time to UTC time");
    local_c = 0;
    uVar3 = FUN_00401118(local_5c);
    local_c = CONCAT31(local_c._1_3_,1);
    FUN_0043bc65(uVar3,uVar1);
  }
  ExceptionList = local_14;
  return;
}



undefined4 FUN_0043bd15(undefined4 param_1)

{
  FUN_0043b835(param_1,FUN_0043bca3);
  return param_1;
}



undefined4 FUN_0043bd2a(void)

{
  char cVar1;
  
  cVar1 = FUN_0043bd5f();
  if (cVar1 == '\0') {
    cVar1 = FUN_0043bd4a();
    if (cVar1 == '\0') {
      return 0;
    }
  }
  return 1;
}



undefined4 __fastcall FUN_0043bd4a(int *param_1)

{
  if ((*param_1 == -2) && (param_1[1] == 0x7fffffff)) {
    return 1;
  }
  return 0;
}



undefined4 __fastcall FUN_0043bd5f(int *param_1)

{
  if (((*param_1 != 0) || (param_1[1] != -0x80000000)) &&
     ((*param_1 != -1 || (param_1[1] != 0x7fffffff)))) {
    return 0;
  }
  return 1;
}



undefined4 FUN_0043bd84(int param_1,int param_2)

{
  if ((param_1 == -1) && (param_2 == 0x7fffffff)) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0043bd9c(int param_1,int param_2)

{
  undefined4 uVar1;
  
  uVar1 = 0;
  if ((param_1 == 0) && (param_2 == -0x80000000)) {
    uVar1 = 1;
  }
  return uVar1;
}



void __fastcall FUN_0043bdb0(undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  char cVar5;
  uint *unaff_EBX;
  uint *unaff_ESI;
  uint *unaff_EDI;
  
  cVar5 = FUN_0043bd2a(param_1);
  if ((cVar5 == '\0') && (cVar5 = FUN_0043bd2a(param_1), cVar5 == '\0')) {
LAB_0043be73:
    uVar1 = *unaff_EBX;
    uVar2 = *unaff_EDI;
    uVar3 = unaff_EBX[1];
    uVar4 = unaff_EDI[1];
    *unaff_ESI = uVar1 + *unaff_EDI;
    unaff_ESI[1] = uVar3 + uVar4 + (uint)CARRY4(uVar1,uVar2);
    return;
  }
  cVar5 = FUN_0043bd4a();
  if ((((cVar5 == '\0') && (cVar5 = FUN_0043bd4a(), cVar5 == '\0')) &&
      ((cVar5 = FUN_0043bd84(*unaff_EDI,unaff_EDI[1]), cVar5 == '\0' ||
       (cVar5 = FUN_0043bd9c(*unaff_EBX,unaff_EBX[1]), cVar5 == '\0')))) &&
     ((cVar5 = FUN_0043bd9c(*unaff_EDI,unaff_EDI[1]), cVar5 == '\0' ||
      (cVar5 = FUN_0043bd84(*unaff_EBX,unaff_EBX[1]), cVar5 == '\0')))) {
    cVar5 = FUN_0043bd5f();
    if (cVar5 != '\0') {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
      return;
    }
    cVar5 = FUN_0043bd84(*unaff_EBX,unaff_EBX[1]);
    if (cVar5 == '\0') {
      cVar5 = FUN_0043bd9c(*unaff_EBX,unaff_EBX[1]);
      if (cVar5 != '\0') {
        *unaff_ESI = 0;
        unaff_ESI[1] = 0x80000000;
        return;
      }
      goto LAB_0043be73;
    }
    *unaff_ESI = 0xffffffff;
  }
  else {
    *unaff_ESI = 0xfffffffe;
  }
  unaff_ESI[1] = 0x7fffffff;
  return;
}



void __thiscall FUN_0043be95(uint *param_1_00,int *param_1)

{
  char cVar1;
  uint *in_EAX;
  int iVar2;
  int *piVar3;
  int iVar4;
  
  cVar1 = FUN_0043bd2a();
  if (cVar1 == '\0') {
    cVar1 = FUN_0043bd2a();
    if (cVar1 == '\0') {
      iVar2 = *in_EAX + *param_1_00;
      iVar4 = in_EAX[1] + param_1_00[1] + (uint)CARRY4(*in_EAX,*param_1_00);
      goto LAB_0043befd;
    }
  }
  piVar3 = (int *)FUN_0043bdb0();
  iVar2 = *piVar3;
  iVar4 = piVar3[1];
LAB_0043befd:
  param_1[1] = iVar4;
  *param_1 = iVar2;
  return;
}



void __thiscall FUN_0043bf0c(int param_1_00,undefined param_1)

{
  if (*(char *)(param_1_00 + 0x2a) == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x849,"wxCloseEvent::Veto","m_canVeto"
                   ,L"call to Veto() ignored (can\'t veto this event)");
    }
  }
  else {
    *(undefined *)(param_1_00 + 0x29) = param_1;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043bf48(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::WEF6E0235>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0043bf8e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_0043bfa5(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x20);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[1] = 0;
    puVar2[2] = 0;
    puVar2[4] = param_2;
    puVar2[5] = param_3;
    *puVar2 = W47457227::WEF6E0235::vftable;
    puVar2[6] = param_4;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0043bf48(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void __thiscall FUN_0043c023(int *param_1_00,int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  *param_1_00 = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043c03e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WDE765622::W50B455F0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0043c084(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0043c09b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WDE765622::W441A93CE::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0043c0b8(undefined4 *param_1)

{
  *param_1 = WDE765622::W441A93CE::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0043c0bf(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WDE765622::W50B455F0::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0043c03e(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void __fastcall FUN_0043c126(int *param_1)

{
  short *psVar1;
  int iVar2;
  
  iVar2 = FUN_00850350();
  if (*param_1 != iVar2) {
    psVar1 = (short *)(*param_1 + 8);
    *psVar1 = *psVar1 + 1;
  }
  return;
}



undefined4 * __thiscall FUN_0043c13a(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = *param_1;
  FUN_0043c126();
  return param_1_00;
}



void __fastcall thunk_FUN_0043c1dd(int *param_1)

{
  short *psVar1;
  int iVar2;
  
  iVar2 = FUN_00850350();
  if (*param_1 != iVar2) {
    psVar1 = (short *)(*param_1 + 8);
    *psVar1 = *psVar1 + -1;
    if ((*(short *)(*param_1 + 8) == 0) && (*param_1 != 0)) {
      FUN_0043c1b8(1);
    }
    iVar2 = FUN_00850350();
    *param_1 = iVar2;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0043c155(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined local_1c [8];
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x43c161;
  local_14 = 0;
  uVar1 = FUN_00851ce0(local_1c,param_2,0xffffffff,param_3);
  local_8 = 1;
  FUN_0043c13a(uVar1);
  local_14 = 1;
  local_8 = local_8 & 0xffffff00;
  FUN_0043c1dd();
  return param_1;
}



void FUN_0043c1a4(void)

{
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440();
  }
  return;
}



void ** __thiscall FUN_0043c1b8(void **param_1_00,byte param_1)

{
  if (*(char *)((int)param_1_00 + 10) != '\0') {
    _free(*param_1_00);
  }
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0043c1dd(int *param_1)

{
  short *psVar1;
  int iVar2;
  
  iVar2 = FUN_00850350();
  if (*param_1 != iVar2) {
    psVar1 = (short *)(*param_1 + 8);
    *psVar1 = *psVar1 + -1;
    if ((*(short *)(*param_1 + 8) == 0) && (*param_1 != 0)) {
      FUN_0043c1b8(1);
    }
    iVar2 = FUN_00850350();
    *param_1 = iVar2;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_0043c211(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined local_14 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x43c21d;
  uVar1 = FUN_0043c1a4();
  puVar2 = (undefined4 *)FUN_0043c155(local_14,param_1,uVar1);
  local_8 = 0;
  basic_string<>(*(undefined4 *)*puVar2);
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_0043c1dd();
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  return param_1_00;
}



void Catch_All_0043c2a6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0043c372(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0043c400(void)

{
  int *in_EAX;
  int iVar1;
  
  iVar1 = *in_EAX;
  if (iVar1 < 0) {
    iVar1 = -1 - iVar1;
  }
                    // WARNING: Could not recover jumptable at 0x0043c410. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(&DAT_0043c468 + iVar1 * 4))();
  return;
}



void FUN_0043c470(void)

{
  int iVar1;
  int unaff_ESI;
  int iVar2;
  
  iVar2 = *(int *)(unaff_ESI + 0xc);
  if (iVar2 != 0) {
    iVar1 = *(int *)(unaff_ESI + 0x10);
    for (; iVar2 != iVar1; iVar2 = iVar2 + 0xc) {
      FUN_0043c400();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0xc));
  }
  *(undefined4 *)(unaff_ESI + 0xc) = 0;
  *(undefined4 *)(unaff_ESI + 0x10) = 0;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0043c4a4(undefined4 *param_1)

{
  FUN_0043c470();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void thunk_FUN_0043c4a4(undefined4 *param_1)

{
  FUN_0043c470();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void Catch_All_0043c65b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0043c67f(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0043c729(undefined4 *param_1)

{
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fe6();
  *param_1 = W47457227::WE8E82499::vftable;
  return;
}



undefined4 __thiscall FUN_0043c862(undefined4 param_1_00,byte param_1)

{
  FUN_0043c729(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_0043c8c5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0043c8e9(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043c921(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043c959(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043c991(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043c9c9(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043ca01(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043ca39(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043ca71(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043caa9(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043cae1(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043cb19(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043cb51(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043cb89(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043cbc1(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043cbf9(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043cc34(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043cc6f(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043ccaa(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043cce5(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043cd20(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



undefined4 __thiscall FUN_0043cd5b(int param_1_00,undefined4 param_1)

{
  FUN_004180b1();
  FUN_00465af6(param_1_00 + 4,param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043cea9(undefined4 *param_1_00,int param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0x18] = &DAT_00fac8dc;
    param_1_00[0x1a] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043d1d1(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::lock_error>_>
                ::vftable;
  param_1_00[0x13] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::lock_error>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[0x18] + 4) + 0x60 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::lock_error>_>::
       vftable;
  *(int *)(*(int *)(param_1_00[0x18] + 4) + 0x5c + (int)param_1_00) =
       *(int *)(param_1_00[0x18] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x4c;
  }
  FUN_00401200(param_1_00 + 0x13,param_1);
  return param_1_00;
}



undefined4 FUN_0043cf31(undefined4 param_1,undefined4 param_2)

{
  FUN_0043cea9(param_2,1);
  return param_1;
}



undefined4 * __thiscall FUN_0043cf4b(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_0043d218(param_1);
  param_1_00[0x13] = boost::exception::vftable;
  param_1_00[0x14] = 0;
  param_1_00[0x17] = 0xffffffff;
  param_1_00[0x15] = 0;
  param_1_00[0x16] = 0;
  *param_1_00 = boost::exception_detail::error_info_injector<class_boost::lock_error>::vftable;
  param_1_00[0x13] = boost::exception_detail::error_info_injector<class_boost::lock_error>::vftable;
  return param_1_00;
}



undefined4 FUN_0043cf80(undefined4 param_1,undefined4 param_2)

{
  FUN_0043cf4b(param_2);
  return param_1;
}



void __fastcall FUN_0043cf98(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::lock_error>_>
             ::vftable;
  param_1[0x13] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::lock_error>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1[0x18] + 4) + 0x60 + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::lock_error>_>::
       vftable;
  *(int *)(*(int *)(param_1[0x18] + 4) + 0x5c + (int)param_1) = *(int *)(param_1[0x18] + 4) + -8;
  FUN_0043cfd6();
  return;
}



void __fastcall FUN_0043cfc5(int param_1)

{
  FUN_0043cf98();
  *(undefined ***)(param_1 + 0x68) = boost::exception_detail::clone_base::vftable;
  return;
}



void __fastcall FUN_0043cfd6(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::error_info_injector<class_boost::lock_error>::vftable;
  param_1[0x13] = boost::exception_detail::error_info_injector<class_boost::lock_error>::vftable;
  param_1[0x13] = boost::exception::vftable;
  FUN_00401874();
  *param_1 = boost::thread_exception::vftable;
  FUN_00401328();
  return;
}



void FUN_0043d003(void)

{
  FUN_0043d111();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_0043d00b(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  if (param_3 != 0) {
    param_1_00[0x18] = &DAT_00fac8dc;
    param_1_00[0x1a] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043d1d1(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::lock_error>_>
                ::vftable;
  param_1_00[0x13] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::lock_error>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[0x18] + 4) + 0x60 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::lock_error>_>::
       vftable;
  *(int *)(*(int *)(param_1_00[0x18] + 4) + 0x5c + (int)param_1_00) =
       *(int *)(param_1_00[0x18] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x4c;
  }
  FUN_00401200(param_1_00 + 0x13,param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __fastcall FUN_0043d093(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  
  pvVar1 = operator_new(0x6c);
  iVar2 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_0043d00b(param_1 + -0x68,local_14,1);
  }
  if (iVar2 != 0) {
    iVar2 = *(int *)(*(int *)(iVar2 + 0x60) + 4) + 0x60 + iVar2;
  }
  return iVar2;
}



void FUN_0043d0de(void)

{
  FUN_0043d093();
  return;
}



void __fastcall FUN_0043d0e6(int param_1)

{
  code *pcVar1;
  undefined local_70 [108];
  
  clone_impl<>(param_1 + -0x68,1);
  __CxxThrowException_8(local_70,&DAT_0311591c);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0043d109(void)

{
  FUN_0043d0e6();
  return;
}



int __thiscall FUN_0043d111(int param_1,byte param_2)

{
  FUN_0043cf98();
  *(undefined ***)(param_1 + 0x68) = boost::exception_detail::clone_base::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_0043d134(void)

{
  FUN_0043d111();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >(class
// boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class
// std::domain_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::evaluation_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::rounding_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error> > const &)
// 
// Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release

undefined4 * __thiscall clone_impl<>(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0x18] = &DAT_00fac8dc;
    param_1_00[0x1a] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0043d1d1(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::lock_error>_>
                ::vftable;
  param_1_00[0x13] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::lock_error>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[0x18] + 4) + 0x60 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::lock_error>_>::
       vftable;
  *(undefined4 *)(*(int *)(param_1_00[0x18] + 4) + 0x5c + (int)param_1_00) = 0;
  return param_1_00;
}



undefined4 __thiscall FUN_0043d1ad(undefined4 param_1,byte param_2)

{
  FUN_0043cfd6();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_0043d1c9(void)

{
  FUN_0043d1ad();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043d1d1(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FUN_0043d218(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0x4c;
  }
  FUN_00401569(iVar1);
  *param_1_00 = boost::exception_detail::error_info_injector<class_boost::lock_error>::vftable;
  param_1_00[0x13] = boost::exception_detail::error_info_injector<class_boost::lock_error>::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_0043d218(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00401d45(param_1);
  *param_1_00 = boost::lock_error::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0043d230(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_e0 [96];
  undefined local_80 [120];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xd0;
  local_8 = 0x43d23f;
  uVar2 = FUN_0043cf80(local_e0,param_1);
  local_8 = 0;
  FUN_0043cf31(local_80,uVar2);
  __CxxThrowException_8(local_80,&DAT_0311591c);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0043d26e(undefined4 *param_1,byte param_2)

{
  *param_1 = boost::thread_exception::vftable;
  FUN_00401328();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_0043d290(undefined4 *param_1)

{
  *param_1 = boost::thread_exception::vftable;
  FUN_00401328();
  return;
}



void __thiscall FUN_0043d29b(uint *param_1_00,uint *param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  while( true ) {
    uVar1 = *param_1;
    if ((uVar1 & 0x80000000) == 0) {
      uVar3 = uVar1 | 0x80000000;
    }
    else {
      uVar3 = uVar1 + 1;
    }
    LOCK();
    uVar2 = *param_1_00;
    if (uVar1 == uVar2) {
      *param_1_00 = uVar3;
      uVar2 = uVar1;
    }
    UNLOCK();
    if (uVar2 == *param_1) break;
    *param_1 = uVar2;
  }
  return;
}



void __thiscall FUN_0043d2ca(uint *param_1_00,uint *param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  uVar1 = *param_1 & 0x3fffffff | 0x40000000;
  do {
    *param_1 = uVar1;
    uVar3 = uVar1;
    if ((uVar1 & 0x80000000) == 0) {
      uVar3 = uVar1 - 1 | 0x80000000;
    }
    LOCK();
    uVar2 = *param_1_00;
    if (uVar1 == uVar2) {
      *param_1_00 = uVar3 & 0xbfffffff;
      uVar2 = uVar1;
    }
    UNLOCK();
    uVar1 = uVar2;
  } while (uVar2 != *param_1);
  return;
}



void __fastcall FUN_0043d307(uint *param_1)

{
  uint uVar1;
  HANDLE hHandle;
  uint local_8;
  
  LOCK();
  uVar1 = *param_1;
  *param_1 = *param_1 | 0x80000000;
  UNLOCK();
  if ((int)uVar1 < 0) {
    local_8 = *param_1;
    FUN_0043d29b(&local_8);
    if ((local_8 & 0x80000000) != 0) {
      hHandle = (HANDLE)FUN_004014a7();
      do {
        WaitForSingleObject(hHandle,0xffffffff);
        FUN_0043d2ca(&local_8);
      } while ((local_8 & 0x80000000) != 0);
    }
  }
  return;
}



void __fastcall FUN_0043d358(int *param_1)

{
  uint uVar1;
  undefined ***pppuVar2;
  undefined **local_b0 [19];
  undefined **local_64 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c37c52;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff48;
  ExceptionList = &local_14;
  if (*param_1 != 0) goto LAB_0043d3ba;
  FUN_004013ff(1,"boost unique_lock has no mutex");
  local_b0[0] = boost::lock_error::vftable;
  local_c = 0;
  pppuVar2 = local_b0;
  while( true ) {
    FUN_0043d230(pppuVar2);
LAB_0043d3ba:
    if (*(char *)(param_1 + 1) == '\0') break;
    FUN_004013ff(0x24,"boost unique_lock owns already the mutex");
    local_64[0] = boost::lock_error::vftable;
    local_c = 1;
    pppuVar2 = local_64;
  }
  FUN_0043d307(uVar1);
  *(undefined *)(param_1 + 1) = 1;
  ExceptionList = local_14;
  return;
}



undefined4 * __thiscall FUN_0043d406(undefined4 *param_1_00,undefined4 param_1)

{
  *param_1_00 = param_1;
  *(undefined *)(param_1_00 + 1) = 0;
  FUN_0043d358();
  return param_1_00;
}



uint __fastcall FUN_0043d41e(undefined4 param_1,int param_2)

{
  uint uVar1;
  uint in_EAX;
  uint *puVar2;
  
  puVar2 = (uint *)(param_2 + 4);
  do {
    uVar1 = *puVar2;
    if (uVar1 == 0) {
      return in_EAX & 0xffffff00;
    }
    LOCK();
    in_EAX = *puVar2;
    if (uVar1 == in_EAX) {
      *puVar2 = uVar1 + 1;
      in_EAX = uVar1;
    }
    UNLOCK();
  } while (in_EAX != uVar1);
  return CONCAT31((int3)(in_EAX >> 8),1);
}



void FUN_0043d445(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W47457227::W31782023::vftable;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043d44c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::W77573D26>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0043d492(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0043d4a9(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::W77573D26::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0043d44c(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0043d542(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0043d4a9(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



void FUN_0043d5e9(LPVOID param_1)

{
  HANDLE hHeap;
  DWORD dwFlags;
  
  dwFlags = 0;
  hHeap = GetProcessHeap();
  HeapFree(hHeap,dwFlags,param_1);
  return;
}



void FUN_0043d5fd(undefined4 *param_1)

{
  (**(code **)*param_1)(0);
  FUN_0043d5e9(param_1);
  return;
}



void FUN_0043d613(int param_1)

{
  int iVar1;
  
  LOCK();
  iVar1 = *(int *)(param_1 + 4) + -1;
  *(int *)(param_1 + 4) = iVar1;
  UNLOCK();
  if (iVar1 == 0) {
    FUN_0043d5fd(param_1);
  }
  return;
}



void __fastcall FUN_0043d62b(int *param_1)

{
  if (*param_1 != 0) {
    FUN_0043d613(*param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0043d639(int *param_1)

{
  FUN_008299e0();
  if (*param_1 != 0) {
    FUN_0043d613(*param_1);
  }
  return;
}



undefined4 __thiscall FUN_0043d66c(undefined4 param_1_00,byte param_1)

{
  FUN_00928690();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_0043d6c2(undefined4 *param_1)

{
  FUN_0092a2f0();
  *param_1 = wxFrame::vftable;
  FUN_00928670();
  return param_1;
}



void FUN_0043d6f1(void)

{
  char cVar1;
  
  cVar1 = FUN_009237b0();
  if (cVar1 == '\0') {
    FUN_00915300();
    return;
  }
  return;
}



void FUN_0043d72f(undefined4 param_1)

{
  FUN_00922de0(param_1);
  FUN_0091bc20(param_1);
  FUN_0043d79e();
  return;
}



bool __fastcall FUN_0043d76a(int param_1)

{
  undefined4 uVar1;
  int iVar2;
  
  uVar1 = FUN_0091ac40();
  iVar2 = FUN_0091cdc0(uVar1);
  return iVar2 == param_1;
}



void FUN_0043d79e(void)

{
  char cVar1;
  
  cVar1 = FUN_00922e10();
  FUN_00922dc0('\x01' - (cVar1 != '\0'));
  return;
}



undefined8 FUN_0043d7b9(void)

{
  return 0;
}



undefined4 __thiscall FUN_0043d7be(int param_1_00,undefined4 param_1)

{
  FUN_0091dce0(param_1,*(undefined4 *)(param_1_00 + 300),0);
  return param_1;
}



void FUN_0043d7dd(void)

{
  FUN_0043261a();
  return;
}



undefined4 __thiscall FUN_0043d7e8(int param_1_00,undefined4 param_1)

{
  FUN_004325a0(param_1_00 + 0xe8);
  return param_1;
}



void __fastcall FUN_0043d806(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x0043d80c. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x290))();
  return;
}



void __thiscall FUN_0043d812(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  int *local_c;
  int *piStack_8;
  
  iVar1 = *param_1_00;
  local_c = param_1_00;
  piStack_8 = param_1_00;
  uVar2 = (**(code **)(iVar1 + 0x7c))(&local_c,param_1);
  (**(code **)(iVar1 + 0x94))(uVar2);
  return;
}



void __thiscall FUN_0043d836(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  int *local_c;
  int *piStack_8;
  
  iVar1 = *param_1_00;
  local_c = param_1_00;
  piStack_8 = param_1_00;
  uVar2 = (**(code **)(iVar1 + 0x7c))(&local_c,param_1);
  (**(code **)(iVar1 + 0x98))(uVar2);
  return;
}



void __thiscall FUN_0043d85a(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *(undefined4 *)(param_1_00 + 100);
  *param_1 = *(undefined4 *)(param_1_00 + 0x60);
  param_1[1] = uVar1;
  return;
}



undefined4 __thiscall FUN_0043d86c(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  int *local_c;
  int *piStack_8;
  
  iVar1 = *param_1_00;
  local_c = param_1_00;
  piStack_8 = param_1_00;
  uVar2 = (**(code **)(iVar1 + 0xa4))(&local_c);
  (**(code **)(iVar1 + 0x80))(param_1,uVar2);
  return param_1;
}



void __thiscall FUN_0043d896(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *(undefined4 *)(param_1_00 + 0x6c);
  *param_1 = *(undefined4 *)(param_1_00 + 0x68);
  param_1[1] = uVar1;
  return;
}



undefined4 __thiscall FUN_0043d8a8(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  int *local_c;
  int *piStack_8;
  
  iVar1 = *param_1_00;
  local_c = param_1_00;
  piStack_8 = param_1_00;
  uVar2 = (**(code **)(iVar1 + 0xa8))(&local_c);
  (**(code **)(iVar1 + 0x80))(param_1,uVar2);
  return param_1;
}



void __thiscall FUN_0043d8d2(int *param_1_00,int **param_1)

{
  int *local_c;
  int *local_8;
  
  local_c = param_1_00;
  local_8 = param_1_00;
  (**(code **)(*param_1_00 + 0x27c))(&local_8,&local_c);
  *param_1 = local_8;
  param_1[1] = local_c;
  return;
}



void FUN_0043d8f9(int *param_1)

{
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  FUN_0043d8d2(&local_14);
  FUN_0091b530(&local_c);
  if (local_10 <= local_8) {
    local_10 = local_8;
  }
  if (local_14 <= local_c) {
    local_14 = local_c;
  }
  *param_1 = local_14;
  param_1[1] = local_10;
  return;
}



byte __fastcall FUN_0043d95d(int param_1)

{
  return *(byte *)(param_1 + 0xdc) >> 1 & 1;
}



undefined4 __fastcall FUN_0043d968(int param_1)

{
  return *(undefined4 *)(param_1 + 0xe0);
}



void __thiscall FUN_0043d96f(int param_1_00,undefined param_1)

{
  *(undefined *)(param_1_00 + 0x10c) = param_1;
  return;
}



undefined __fastcall FUN_0043d97c(int param_1)

{
  return *(undefined *)(param_1 + 0x10c);
}



undefined4 __fastcall FUN_0043d983(int param_1)

{
  return *(undefined4 *)(param_1 + 0x74);
}



int __thiscall FUN_0043d987(int param_1_00,int param_1)

{
  if (param_1_00 != param_1) {
    FUN_0083ea60(param_1);
  }
  return param_1_00;
}



void FUN_0043d99f(void)

{
  FUN_0043d987();
  return;
}



bool __fastcall FUN_0043d9aa(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_009116e0();
  return param_1 == iVar1;
}



undefined FUN_0043d9bd(void)

{
  return 0xff;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0043d9c0(int param_1)

{
  *(undefined ***)(param_1 + 0x1c) = wxObject::vftable;
  FUN_0083e850();
  *(undefined ***)(param_1 + 8) = wxObject::vftable;
  FUN_0083e850();
  FUN_00921450();
  return;
}



undefined4 __thiscall FUN_0043da06(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x110) = param_1;
  return 1;
}



undefined4 __fastcall FUN_0043da15(int param_1)

{
  return *(undefined4 *)(param_1 + 0x78);
}



undefined4 __fastcall FUN_0043da19(undefined4 param_1)

{
  return param_1;
}



void __thiscall thunk_FUN_0091b600(int *param_1_00,undefined4 ***param_1)

{
  undefined4 ***pppuStack_14;
  undefined4 ***apppuStack_c [2];
  undefined auStack_4 [4];
  
  pppuStack_14 = param_1;
  (**(code **)(*param_1_00 + 0x94))();
  (**(code **)(*param_1_00 + 0x84))();
  (**(code **)(*param_1_00 + 0x278))(auStack_4);
  if (((undefined4 ****)apppuStack_c[0] != apppuStack_c) ||
     (&pppuStack_14 != (undefined4 ****)pppuStack_14)) {
    (**(code **)(*param_1_00 + 0x288))(0xffffffff,0xffffffff,apppuStack_c,pppuStack_14,0);
  }
  return;
}



void FUN_0043da21(undefined4 *param_1)

{
  *param_1 = DAT_03238d04;
  param_1[1] = DAT_03238d08;
  return;
}



undefined FUN_0043da45(void)

{
  return 0;
}



undefined FUN_0043da54(void)

{
  return 0;
}



char * __fastcall FUN_0043da86(int param_1)

{
  char *pcVar1;
  
  if (*(type_info **)(param_1 + 0xc) == (type_info *)0x0) {
    return (char *)0x0;
  }
  pcVar1 = type_info::name(*(type_info **)(param_1 + 0xc),(__type_info_node *)&DAT_032eb214);
  return pcVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0043da9b(undefined4 *param_1,undefined4 param_2)

{
  FUN_0082b820(param_2,0);
  FUN_009d2b80();
  *param_1 = boost::archive::xml_iarchive::vftable;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0043dad2(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  *param_1 = boost::archive::xml_iarchive::vftable;
  local_8 = 0;
  auStack_24[0] = 0x43daf3;
  FUN_0082ce10();
  local_8 = 0xffffffff;
  puVar1 = auStack_24;
  auStack_24[0] = 0x43dafe;
  FUN_0082b930();
  puVar1[-1] = 0x43db03;
  return;
}



void __fastcall FUN_0043db06(undefined4 *param_1)

{
  *param_1 = boost::archive::xml_oarchive::vftable;
  FUN_0043e647();
  return;
}



undefined4 __thiscall FUN_0043dd24(undefined4 param_1_00,byte param_1)

{
  FUN_0043dd64();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0043dd40(void)

{
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0043dd64(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = W5D651E7E::WBEC1F469::vftable;
  local_8 = 5;
  if (local_20 != param_1 + 3) {
    param_1[3] = 0;
  }
  iVar1 = param_1[4];
  param_1[4] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_8 = 4;
  FUN_0043dd40();
  FUN_00417fe6();
  local_8._0_1_ = 1;
  if (param_1[4] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (param_1[2] != 0) {
    FUN_0040127a();
  }
  *param_1 = WF22948E2::W4FECD79D::vftable;
  return;
}



undefined * Catch_All_0043dde2(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 4;
  return &DAT_0043ddef;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

undefined4 __thiscall FUN_0043ddf4(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  undefined4 uVar2;
  undefined local_8c [28];
  void *local_70;
  undefined4 local_68;
  undefined4 local_64;
  undefined local_48 [28];
  undefined local_2c [24];
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_64 = 0x38;
  local_68 = 0x43de04;
  local_8 = param_1;
  local_c = 0;
  uVar2 = basic_string<>(&DAT_00fab554,0x15);
  local_68 = 0;
  local_10 = 0x76e7b808;
  local_c = 0x40cd77b7;
  uVar2 = FUN_00b94470(&local_10,uVar2);
  local_68._0_1_ = 1;
  basic_string<>(uVar2);
  piVar1 = *(int **)(param_1_00 + 4);
  local_14 = 7;
  FUN_0040180b(0);
  local_68._0_1_ = 3;
  uVar2 = (**(code **)(*piVar1 + 0x10))(local_8c,local_2c);
  local_68 = CONCAT31(local_68._1_3_,4);
  FUN_004155ac(local_8,uVar2,local_48);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  ExceptionList = local_70;
  return local_8;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

undefined4 __thiscall FUN_0043ded2(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  undefined4 uVar2;
  undefined local_8c [28];
  void *local_70;
  undefined4 local_68;
  undefined4 local_64;
  undefined local_48 [28];
  undefined local_2c [24];
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_64 = 0x38;
  local_68 = 0x43dee2;
  local_8 = param_1;
  local_c = 0;
  uVar2 = basic_string<>(&DAT_00fab580,0x1a);
  local_68 = 0;
  local_10 = 0xfd1bb674;
  local_c = 0x3dca9938;
  uVar2 = FUN_00b94470(&local_10,uVar2);
  local_68._0_1_ = 1;
  basic_string<>(uVar2);
  piVar1 = *(int **)(param_1_00 + 4);
  local_14 = 7;
  FUN_0040180b(0);
  local_68._0_1_ = 3;
  uVar2 = (**(code **)(*piVar1 + 0x10))(local_8c,local_2c);
  local_68 = CONCAT31(local_68._1_3_,4);
  FUN_004155ac(local_8,uVar2,local_48);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  ExceptionList = local_70;
  return local_8;
}



void __fastcall FUN_0043dfb0(int *param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int *local_f4 [2];
  char cStack_ec;
  undefined local_e4 [28];
  int local_c8 [2];
  int aiStack_c0 [34];
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41ac3;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_f4;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff00;
  ExceptionList = &local_14;
  iVar6 = 2;
  local_f4[0] = param_1;
  FUN_0043d406(param_1 + 5);
  local_c = 0;
  FUN_0043ded2(local_38);
  local_c = CONCAT31(local_c._1_3_,1);
  cVar2 = FUN_0041506b(local_38,uVar3);
  if (cVar2 != '\0') {
    cVar2 = FUN_00441993(local_38);
    if (cVar2 != '\0') goto LAB_0043e084;
  }
  uVar4 = FUN_0043ddf4(local_e4);
  local_c._0_1_ = 2;
  FID_conflict_assign(uVar4,0,0xffffffff);
  local_c = CONCAT31(local_c._1_3_,1);
  FUN_00401829(1,0);
  iVar6 = 0;
LAB_0043e084:
  cVar2 = FUN_0041506b(local_38);
  if (cVar2 != '\0') {
    cVar2 = FUN_00441993(local_38);
    if (cVar2 != '\0') {
      FUN_0043e743(local_c8);
      local_c = CONCAT31(local_c._1_3_,3);
      iVar1 = *(int *)(local_c8[0] + 4);
      *(undefined4 *)((int)aiStack_c0 + iVar1 + 4) = 0;
      FUN_00417a55(*(undefined4 *)((int)aiStack_c0 + iVar1),0);
      FUN_0043e7ac();
      if (*(int *)((int)aiStack_c0 + *(int *)(local_c8[0] + 4)) == 0) {
        FUN_0043e4a0(param_1,local_c8);
        piVar5 = (int *)FUN_00419e85(iVar6);
        if ((~-(uint)(*piVar5 != 1) & 0x7a491c) != 0) {
          iVar6 = 1;
        }
      }
      FUN_0043e832();
      local_c = CONCAT31(local_c._1_3_,1);
      FUN_0043e1a3();
      param_1 = local_f4[0];
    }
  }
  FUN_00401829(1,0);
  local_c = 0xffffffff;
  if (cStack_ec != '\0') {
    FUN_00401477();
  }
  if ((~-(uint)(iVar6 != 1) & 0x7a491c) != 0) {
    (**(code **)(*param_1 + 8))(1);
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void FUN_0043e1a3(void)

{
  int in_EAX;
  
  FUN_0043e7dd();
  *(undefined4 *)(in_EAX + 0x58) = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)(undefined4 *)(in_EAX + 0x58));
  return;
}



void __thiscall FUN_0043e1bf(int param_1_00,char param_1)

{
  char cVar1;
  uint uVar2;
  undefined auStack_f0 [7];
  char local_e9;
  char local_e4;
  undefined local_e0 [140];
  undefined local_54 [28];
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41a6c;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_f0;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff08;
  ExceptionList = &local_14;
  if (param_1 == '\0') {
    FUN_0043d406(param_1_00 + 0x14);
    local_e9 = *(int *)(param_1_00 + 0x1c) < 2;
    if (local_e4 != '\0') {
      FUN_00401477();
    }
    if (local_e9 == '\0') goto LAB_0043e33b;
  }
  FUN_0043ded2(local_38);
  local_c = 0;
  basic_string<>(local_38);
  local_c = CONCAT31(local_c._1_3_,1);
  FUN_00825480(uVar2);
  cVar1 = FUN_0041506b(local_54);
  if (cVar1 == '\0') {
    FUN_00828050(local_54,0);
  }
  cVar1 = FUN_0041506b(local_54);
  if (cVar1 != '\0') {
    cVar1 = FUN_00441954(local_54);
    if (cVar1 != '\0') {
      FUN_0043ef04(local_e0,local_38);
      local_c._0_1_ = 2;
      FUN_0043d406(param_1_00 + 0x14);
      local_c._0_1_ = 3;
      FUN_0043e54f(local_e0);
      local_c._0_1_ = 2;
      if (local_e4 != '\0') {
        FUN_00401477();
      }
      local_c = CONCAT31(local_c._1_3_,1);
      FUN_0043e360();
    }
  }
  FUN_00401829(1,0);
  FUN_00401829(1,0);
LAB_0043e33b:
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void FUN_0043e360(void)

{
  int in_EAX;
  
  FUN_0043efa3();
  *(undefined4 *)(in_EAX + 0x54) = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)(undefined4 *)(in_EAX + 0x54));
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined *
FUN_0043e37c(undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,
            undefined4 param_6,int param_7)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c16f4d;
  if (param_3 != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  if (param_5 != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  if (param_7 != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void FUN_0043e4a0(int param_1,undefined4 param_2)

{
  undefined local_5c [60];
  int local_20;
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0x43e4ac;
  FUN_0043da9b(local_5c,param_2);
  local_8 = 1;
  if (*(uint *)(param_1 + 0x38) < 0x10) {
    local_20 = param_1 + 0x24;
  }
  else {
    local_20 = *(int *)(param_1 + 0x24);
  }
  local_1c = param_1 + 0x1c;
  FUN_0043f3d7();
  local_8 = 0;
  FUN_0043e502();
  return;
}



undefined * Catch_All_0043e4eb(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 0;
  *(undefined4 *)(*(int *)(unaff_EBP + 8) + 0x1c) = 1;
  return &DAT_0043e4ff;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0043e502(void)

{
  int unaff_EBP;
  int unaff_ESI;
  int iVar1;
  
  *(undefined *)(unaff_EBP + -4) = 3;
  if (*(uint *)(unaff_ESI + 0x54) < 0x10) {
    iVar1 = unaff_ESI + 0x40;
  }
  else {
    iVar1 = *(int *)(unaff_ESI + 0x40);
  }
  *(undefined4 *)(unaff_EBP + -0x18) = *(undefined4 *)(unaff_ESI + 0xc);
  *(int *)(unaff_EBP + -0x1c) = iVar1;
  FUN_0043f436(unaff_EBP + -0x4f);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_0043dad2(unaff_EBP + -0x58);
  return;
}



undefined4 Catch_All_0043e53e(void)

{
  FUN_0044f0bf();
  return 0x43e529;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0043e54f(int param_1_00,undefined4 param_1)

{
  undefined local_47 [43];
  int local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x43e55b;
  FUN_0082e0c0(param_1,0);
  local_8 = 0;
  local_18 = (undefined4 *)(param_1_00 + 0x1c);
  *local_18 = 1;
  if (*(uint *)(param_1_00 + 0x38) < 0x10) {
    local_1c = param_1_00 + 0x24;
  }
  else {
    local_1c = *(int *)(param_1_00 + 0x24);
  }
  FUN_0061111a(local_47);
  local_18 = *(undefined4 **)(param_1_00 + 0xc);
  if (*(uint *)(param_1_00 + 0x54) < 0x10) {
    local_1c = param_1_00 + 0x40;
  }
  else {
    local_1c = *(int *)(param_1_00 + 0x40);
  }
  FUN_0043f4ad(local_47);
  local_8 = 0xffffffff;
  FUN_0043e647();
  return;
}



void FUN_0043e5d9(void)

{
  FUN_0043f524();
  return;
}



void FUN_0043e5ef(void)

{
  FUN_0043f54c();
  return;
}



void FUN_0043e605(void)

{
  FUN_0043f574();
  return;
}



void FUN_0043e61b(void)

{
  FUN_0043f59c();
  return;
}



void FUN_0043e631(void)

{
  FUN_0043f5c4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0043e647(undefined4 *param_1)

{
  *param_1 = boost::archive::xml_oarchive_impl<class_boost::archive::xml_oarchive>::vftable;
  FUN_0082d530();
  FUN_0082e7d0();
  return;
}



void FUN_0043e679(void)

{
  FUN_0043f5ec(&stack0x00000004);
  return;
}



void FUN_0043e697(void)

{
  FUN_0043f614(&stack0x00000004);
  return;
}



void FUN_0043e6b5(void)

{
  FUN_0043f63c(&stack0x00000004);
  return;
}



void FUN_0043e6d3(void)

{
  FUN_0043f664(&stack0x00000004);
  return;
}



void FUN_0043e6f1(void)

{
  FUN_0043f68c(&stack0x00000004);
  return;
}



void FUN_0043e70f(void)

{
  FUN_0043f6b4();
  return;
}



void FUN_0043e725(void)

{
  FUN_0043f6dc(&stack0x00000004);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0043e743(int *param_1)

{
  *param_1 = (int)&PTR_00fafce0;
  param_1[0x16] = (int)std::basic_ios<char,struct_std::char_traits<char>_>::vftable;
  FUN_004225a0(param_1 + 2,0,0);
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 4)) =
       std::basic_ifstream<char,struct_std::char_traits<char>_>::vftable;
  std::basic_filebuf<char,struct_std::char_traits<char>_>::
  basic_filebuf<char,struct_std::char_traits<char>_>
            ((basic_filebuf<char,struct_std::char_traits<char>_> *)(param_1 + 2),(_iobuf *)0x0);
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 4)) =
       boost::filesystem::basic_ifstream<char,struct_std::char_traits<char>_>::vftable;
  return param_1;
}



void __fastcall FUN_0043e7ac(uint param_1)

{
  int in_EAX;
  int iVar1;
  
  if (*(uint *)(in_EAX + 0x18) < 8) {
    iVar1 = in_EAX + 4;
  }
  else {
    iVar1 = *(int *)(in_EAX + 4);
  }
  iVar1 = FUN_0043f313(iVar1,param_1 | 1);
  if (iVar1 == 0) {
    FUN_004259e0(2,0);
  }
  return;
}



void __fastcall FUN_0043e7dd(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x58) + 4) + -0x58 + param_1) =
       boost::filesystem::basic_ifstream<char,struct_std::char_traits<char>_>::vftable;
  ~basic_ostringstream<>(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: virtual __thiscall std::basic_ostringstream<char,struct std::char_traits<char>,class
// std::allocator<char> >::~basic_ostringstream<char,struct std::char_traits<char>,class
// std::allocator<char> >(void)
//  public: virtual __thiscall std::basic_ostringstream<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short>
// >::~basic_ostringstream<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> >(void)
//  public: virtual __thiscall std::basic_ostringstream<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::~basic_ostringstream<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >(void)
// 
// Libraries: Visual Studio 2012 Release, Visual Studio 2015 Release

void __fastcall ~basic_ostringstream<>(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x58) + 4) + -0x58 + param_1) =
       std::basic_ifstream<char,struct_std::char_traits<char>_>::vftable;
  std::basic_filebuf<char,struct_std::char_traits<char>_>::
  ~basic_filebuf<char,struct_std::char_traits<char>_>
            ((basic_filebuf<char,struct_std::char_traits<char>_> *)(param_1 + -0x50));
  *(undefined ***)
   ((basic_filebuf<char,struct_std::char_traits<char>_> *)(param_1 + -0x50) +
   *(int *)(*(int *)(param_1 + -0x58) + 4) + -8) =
       std::basic_istream<char,struct_std::char_traits<char>_>::vftable;
  return;
}



void FUN_0043e832(void)

{
  basic_filebuf<char,struct_std::char_traits<char>_> *pbVar1;
  int unaff_ESI;
  
  pbVar1 = std::basic_filebuf<char,struct_std::char_traits<char>_>::close
                     ((basic_filebuf<char,struct_std::char_traits<char>_> *)(unaff_ESI + 8));
  if (pbVar1 == (basic_filebuf<char,struct_std::char_traits<char>_> *)0x0) {
    FUN_004259e0(2,0);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  public: virtual __thiscall std::basic_filebuf<char,struct std::char_traits<char>
// >::~basic_filebuf<char,struct std::char_traits<char> >(void)
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::basic_filebuf<char,struct_std::char_traits<char>_>::
~basic_filebuf<char,struct_std::char_traits<char>_>
          (basic_filebuf<char,struct_std::char_traits<char>_> *this)

{
  *(undefined ***)this = vftable;
  if (this[0x48] != (basic_filebuf<char,struct_std::char_traits<char>_>)0x0) {
    close(this);
  }
  FUN_00423160();
  return;
}



void __thiscall FUN_0043e887(int param_1_00,int param_1)

{
  uint uVar1;
  int *piVar2;
  _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *p_Var3;
  char *pcVar4;
  size_t sVar5;
  int iVar6;
  char cVar7;
  size_t _Count;
  undefined4 local_6c;
  char *local_68;
  int local_64;
  undefined4 *local_60;
  char *pcStack_5c;
  undefined local_58 [8];
  undefined local_50 [8];
  undefined auStack_48 [8];
  undefined auStack_40 [8];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_38 [20];
  uint local_24;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1f0ad;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&local_6c;
  ExceptionList = &local_14;
  if (param_1 != -1) {
    uVar1 = **(uint **)(param_1_00 + 0x24);
    cVar7 = (char)param_1;
    if ((uVar1 == 0) || (piVar2 = *(int **)(param_1_00 + 0x34), *piVar2 + uVar1 <= uVar1)) {
      if (*(void **)(param_1_00 + 0x4c) != (void *)0x0) {
        if (*(int *)(param_1_00 + 0x3c) == 0) {
          std::_Fputc<char>(cVar7,*(void **)(param_1_00 + 0x4c));
        }
        else {
          local_6c = CONCAT31(local_6c._1_3_,cVar7);
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_38,8,'\0');
          local_c = 0;
          p_Var3 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    *)FUN_0042a0d0(local_58);
          pcVar4 = std::
                   _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                   ::operator*(p_Var3);
          uVar1 = local_24;
          p_Var3 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    *)FUN_0042a0d0(local_50);
          local_68 = std::
                     _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                     ::operator*(p_Var3);
          pcVar4 = pcVar4 + uVar1;
          while (iVar6 = (**(code **)(**(int **)(param_1_00 + 0x3c) + 0x14))
                                   (param_1_00 + 0x44,&local_6c,(int)&local_6c + 1,&local_60,
                                    local_68,pcVar4,&local_64), -1 < iVar6) {
            if (1 < iVar6) {
              if (iVar6 == 3) {
                std::_Fputc<char>((char)local_6c,*(void **)(param_1_00 + 0x4c));
              }
              break;
            }
            p_Var3 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      *)FUN_0042a0d0(auStack_48);
            pcVar4 = std::
                     _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                     ::operator*(p_Var3);
            _Count = local_64 - (int)pcVar4;
            if (_Count != 0) {
              p_Var3 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        *)FUN_0042a0d0(auStack_40);
              pcVar4 = std::
                       _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       ::operator*(p_Var3);
              sVar5 = _fwrite(pcVar4,1,_Count,*(FILE **)(param_1_00 + 0x4c));
              if (_Count != sVar5) break;
            }
            *(undefined *)(param_1_00 + 0x41) = 1;
            if (local_60 != &local_6c) break;
            if (_Count == 0) {
              if (0x1f < local_24) break;
              std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
              append(local_38,8,'\0');
            }
            p_Var3 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      *)FUN_0042a0d0(local_58);
            pcStack_5c = std::
                         _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                         ::operator*(p_Var3);
            uVar1 = local_24;
            p_Var3 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      *)FUN_0042a0d0(local_50);
            local_68 = std::
                       _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       ::operator*(p_Var3);
            pcVar4 = pcStack_5c + uVar1;
          }
          FUN_004017b2(1,0);
        }
      }
    }
    else {
      *piVar2 = *piVar2 + -1;
      pcVar4 = **(char ***)(param_1_00 + 0x24);
      **(char ***)(param_1_00 + 0x24) = pcVar4 + 1;
      *pcVar4 = cVar7;
    }
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  protected: virtual int __thiscall std::basic_filebuf<char,struct std::char_traits<char>
// >::pbackfail(int)
// 
// Library: Visual Studio 2008 Release

int __thiscall
std::basic_filebuf<char,struct_std::char_traits<char>_>::pbackfail
          (basic_filebuf<char,struct_std::char_traits<char>_> *this,int param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  
  iVar1 = param_1;
  uVar3 = **(uint **)(this + 0x20);
  if (((uVar3 == 0) || (uVar3 <= **(uint **)(this + 0x10))) ||
     ((param_1 != -1 && ((uint)*(byte *)(uVar3 - 1) != param_1)))) {
    if (((*(int *)(this + 0x4c) != 0) && (param_1 != -1)) && (*(int *)(this + 0x3c) == 0)) {
      param_1 = CONCAT13((char)param_1,(undefined3)param_1);
      cVar2 = _Ungetc<>((int)&param_1 + 3,*(int *)(this + 0x4c));
      if (cVar2 != '\0') {
        return iVar1;
      }
    }
    uVar3 = 0xffffffff;
  }
  else {
    **(int **)(this + 0x30) = **(int **)(this + 0x30) + 1;
    **(int **)(this + 0x20) = **(int **)(this + 0x20) + -1;
    uVar3 = -(uint)(param_1 != -1) & param_1;
  }
  return uVar3;
}



// Library Function - Single Match
//  protected: virtual int __thiscall std::basic_filebuf<char,struct std::char_traits<char>
// >::underflow(void)
// 
// Libraries: Visual Studio 2003, Visual Studio 2005, Visual Studio 2008

int __thiscall
std::basic_filebuf<char,struct_std::char_traits<char>_>::underflow
          (basic_filebuf<char,struct_std::char_traits<char>_> *this)

{
  byte *pbVar1;
  byte *pbVar2;
  int iVar3;
  int iVar4;
  
  pbVar1 = **(byte ***)(this + 0x20);
  if ((pbVar1 != (byte *)0x0) &&
     (pbVar2 = **(byte ***)(this + 0x20), pbVar2 < pbVar2 + **(int **)(this + 0x30))) {
    return (uint)*pbVar1;
  }
  iVar3 = (**(code **)(*(int *)this + 0x14))();
  iVar4 = -1;
  if (iVar3 != -1) {
    (**(code **)(*(int *)this + 8))(iVar3);
    iVar4 = iVar3;
  }
  return iVar4;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_0043eb43(int param_1)

{
  _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *p_Var1;
  char *pcVar2;
  int iVar3;
  rsize_t _MaxCount;
  undefined local_68 [8];
  undefined local_60 [8];
  undefined local_58 [8];
  undefined local_50 [8];
  undefined local_48 [8];
  char *local_40;
  char *local_3c;
  int local_38;
  char local_31;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [20];
  int local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x58;
  local_8 = 0x43eb4f;
  if ((**(int **)(param_1 + 0x20) == 0) ||
     (**(int **)(param_1 + 0x30) + **(uint **)(param_1 + 0x20) <= **(uint **)(param_1 + 0x20))) {
    if (*(void **)(param_1 + 0x4c) != (void *)0x0) {
      if (*(int *)(param_1 + 0x3c) != 0) {
        local_18 = 0xf;
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
                  (local_30,0);
        local_8 = 0;
LAB_0043ec85:
        while (iVar3 = _fgetc(*(FILE **)(param_1 + 0x4c)), iVar3 != -1) {
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                    (local_30,1,(char)iVar3);
          p_Var1 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    *)FUN_0042a0d0(local_48);
          pcVar2 = std::
                   _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                   ::operator*(p_Var1);
          iVar3 = local_1c;
          p_Var1 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    *)FUN_0042a0d0(local_68);
          local_3c = std::
                     _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                     ::operator*(p_Var1);
          iVar3 = (**(code **)(**(int **)(param_1 + 0x3c) + 0x10))
                            (param_1 + 0x44,local_3c,pcVar2 + iVar3,&local_38,&local_31,local_30,
                             &local_40);
          if (iVar3 < 0) break;
          if (1 < iVar3) {
            if (iVar3 == 3) goto code_r0x0043ec2e;
            break;
          }
          if (local_40 != &local_31) {
            p_Var1 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      *)FUN_0042a0d0(local_58);
            pcVar2 = std::
                     _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                     ::operator*(p_Var1);
            pcVar2 = pcVar2 + (local_1c - local_38);
            while (0 < (int)pcVar2) {
              pcVar2 = pcVar2 + -1;
              _ungetc((int)pcVar2[local_38],*(FILE **)(param_1 + 0x4c));
            }
            break;
          }
          p_Var1 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    *)FUN_0042a0d0(local_60);
          pcVar2 = std::
                   _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                   ::operator*(p_Var1);
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
                    (local_30,0,local_38 - (int)pcVar2);
        }
        goto LAB_0043ec9a;
      }
      std::_Fgetc<char>(&local_31,*(void **)(param_1 + 0x4c));
    }
  }
  else {
    **(int **)(param_1 + 0x30) = **(int **)(param_1 + 0x30) + -1;
    **(int **)(param_1 + 0x20) = **(int **)(param_1 + 0x20) + 1;
  }
LAB_0043eb7e:
  FUN_00a421fb();
  return;
code_r0x0043ec2e:
  if (local_1c != 0) goto code_r0x0043ec33;
  goto LAB_0043ec85;
code_r0x0043ec33:
  p_Var1 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
           )FUN_0042a0d0(local_50);
  _MaxCount = 1;
  pcVar2 = std::
           _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
           operator*(p_Var1);
  _memcpy_s(&local_31,1,pcVar2,_MaxCount);
LAB_0043ec9a:
  FUN_004017b2(1,0);
  goto LAB_0043eb7e;
}



void __thiscall
FUN_0043ece4(basic_filebuf<char,struct_std::char_traits<char>_> *param_1_00,undefined4 *param_1,
            int param_2,int param_3)

{
  basic_filebuf<char,struct_std::char_traits<char>_> *pbVar1;
  undefined4 uVar2;
  bool bVar3;
  int iVar4;
  undefined4 local_10;
  undefined4 local_c;
  
  pbVar1 = param_1_00 + 0x40;
  if (((**(basic_filebuf<char,struct_std::char_traits<char>_> ***)(param_1_00 + 0x20) == pbVar1) &&
      (param_3 == 1)) && (*(int *)(param_1_00 + 0x3c) == 0)) {
    param_2 = param_2 + -1;
  }
  if ((((*(int *)(param_1_00 + 0x4c) != 0) &&
       (bVar3 = std::basic_filebuf<char,struct_std::char_traits<char>_>::_Endwrite(param_1_00),
       bVar3)) &&
      (((param_2 == 0 && (param_3 == 1)) ||
       (iVar4 = _fseek(*(FILE **)(param_1_00 + 0x4c),param_2,param_3), iVar4 == 0)))) &&
     (iVar4 = _fgetpos(*(FILE **)(param_1_00 + 0x4c),(fpos_t *)&local_10), iVar4 == 0)) {
    if (**(basic_filebuf<char,struct_std::char_traits<char>_> ***)(param_1_00 + 0x20) == pbVar1) {
      **(basic_filebuf<char,struct_std::char_traits<char>_> ***)(param_1_00 + 0x10) = pbVar1;
      **(basic_filebuf<char,struct_std::char_traits<char>_> ***)(param_1_00 + 0x20) =
           param_1_00 + 0x41;
      **(basic_filebuf<char,struct_std::char_traits<char>_> ***)(param_1_00 + 0x30) =
           param_1_00 + (0x41 - (int)(param_1_00 + 0x41));
    }
    param_1[2] = local_10;
    param_1[3] = local_c;
    uVar2 = *(undefined4 *)(param_1_00 + 0x44);
    *param_1 = 0;
    param_1[4] = uVar2;
    return;
  }
  *param_1 = 0xffffffff;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  return;
}



void __thiscall
FUN_0043eda5(basic_filebuf<char,struct_std::char_traits<char>_> *param_1_00,undefined4 *param_1,
            int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  undefined4 uVar1;
  bool bVar2;
  int iVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  local_10 = param_4;
  local_c = param_5;
  if ((((*(int *)(param_1_00 + 0x4c) != 0) &&
       (bVar2 = std::basic_filebuf<char,struct_std::char_traits<char>_>::_Endwrite(param_1_00),
       bVar2)) && (iVar3 = _fsetpos(*(FILE **)(param_1_00 + 0x4c),(fpos_t *)&local_10), iVar3 == 0))
     && (((param_2 == 0 || (iVar3 = _fseek(*(FILE **)(param_1_00 + 0x4c),param_2,1), iVar3 == 0)) &&
         (iVar3 = _fgetpos(*(FILE **)(param_1_00 + 0x4c),(fpos_t *)&local_10), iVar3 == 0)))) {
    *(undefined4 *)(param_1_00 + 0x44) = param_6;
    if (**(basic_filebuf<char,struct_std::char_traits<char>_> ***)(param_1_00 + 0x20) ==
        param_1_00 + 0x40) {
      **(basic_filebuf<char,struct_std::char_traits<char>_> ***)(param_1_00 + 0x10) =
           param_1_00 + 0x40;
      **(basic_filebuf<char,struct_std::char_traits<char>_> ***)(param_1_00 + 0x20) =
           param_1_00 + 0x41;
      **(basic_filebuf<char,struct_std::char_traits<char>_> ***)(param_1_00 + 0x30) =
           param_1_00 + (0x41 - (int)(param_1_00 + 0x41));
    }
    param_1[2] = local_10;
    param_1[3] = local_c;
    uVar1 = *(undefined4 *)(param_1_00 + 0x44);
    *param_1 = 0;
    param_1[4] = uVar1;
    return;
  }
  *param_1 = 0xffffffff;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  return;
}



// Library Function - Single Match
//  protected: virtual class std::basic_streambuf<char,struct std::char_traits<char> > * __thiscall
// std::basic_filebuf<char,struct std::char_traits<char> >::setbuf(char *,int)
// 
// Library: Visual Studio 2005 Release

basic_streambuf<char,struct_std::char_traits<char>_> * __thiscall
std::basic_filebuf<char,struct_std::char_traits<char>_>::setbuf
          (basic_filebuf<char,struct_std::char_traits<char>_> *this,char *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = 0;
  if (*(FILE **)(this + 0x4c) != (FILE *)0x0) {
    if ((param_1 == (char *)0x0) && (param_2 == 0)) {
      iVar1 = 4;
    }
    iVar1 = _setvbuf(*(FILE **)(this + 0x4c),param_1,iVar1,param_2);
    if (iVar1 == 0) {
      _Init(this,*(_iobuf **)(this + 0x4c),1);
      return (basic_streambuf<char,struct_std::char_traits<char>_> *)this;
    }
  }
  return (basic_streambuf<char,struct_std::char_traits<char>_> *)0x0;
}



// Library Function - Single Match
//  protected: virtual int __thiscall std::basic_filebuf<char,struct std::char_traits<char>
// >::sync(void)
// 
// Library: Visual Studio 2008 Release

int __thiscall
std::basic_filebuf<char,struct_std::char_traits<char>_>::sync
          (basic_filebuf<char,struct_std::char_traits<char>_> *this)

{
  int iVar1;
  
  if (*(int *)(this + 0x4c) != 0) {
    iVar1 = (**(code **)(*(int *)this + 4))(0xffffffff);
    if (iVar1 != -1) {
      iVar1 = _fflush(*(FILE **)(this + 0x4c));
      if (iVar1 < 0) {
        return -1;
      }
    }
  }
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual void __thiscall std::basic_filebuf<char,struct std::char_traits<char>
// >::imbue(class std::locale const &)
//  protected: virtual void __thiscall std::basic_filebuf<unsigned short,struct
// std::char_traits<unsigned short> >::imbue(class std::locale const &)
//  protected: virtual void __thiscall std::basic_filebuf<wchar_t,struct std::char_traits<wchar_t>
// >::imbue(class std::locale const &)
// 
// Library: Visual Studio 2005 Release

void imbue(undefined4 param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_0043f704(param_1);
  Initcvt(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0043ef04(int *param_1,int param_2)

{
  int iVar1;
  
  *param_1 = (int)&PTR_00fad658;
  param_1[0x15] = (int)std::basic_ios<char,struct_std::char_traits<char>_>::vftable;
  if (*(uint *)(param_2 + 0x18) < 8) {
    param_2 = param_2 + 4;
  }
  else {
    param_2 = *(int *)(param_2 + 4);
  }
  basic_ostream<>(param_1 + 1,0,0);
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 4)) =
       std::basic_ofstream<char,struct_std::char_traits<char>_>::vftable;
  std::basic_filebuf<char,struct_std::char_traits<char>_>::
  basic_filebuf<char,struct_std::char_traits<char>_>
            ((basic_filebuf<char,struct_std::char_traits<char>_> *)(param_1 + 1),(_iobuf *)0x0);
  iVar1 = FUN_0043f313(param_2,2);
  if (iVar1 == 0) {
    FUN_004259e0(2,0);
  }
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 4)) =
       boost::filesystem::basic_ofstream<char,struct_std::char_traits<char>_>::vftable;
  return param_1;
}



void __fastcall FUN_0043efa3(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x54) + 4) + -0x54 + param_1) =
       boost::filesystem::basic_ofstream<char,struct_std::char_traits<char>_>::vftable;
  FUN_0043efb9(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0043efb9(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x54) + 4) + -0x54 + param_1) =
       std::basic_ofstream<char,struct_std::char_traits<char>_>::vftable;
  std::basic_filebuf<char,struct_std::char_traits<char>_>::
  ~basic_filebuf<char,struct_std::char_traits<char>_>
            ((basic_filebuf<char,struct_std::char_traits<char>_> *)(param_1 + -0x50));
  *(undefined ***)
   ((basic_filebuf<char,struct_std::char_traits<char>_> *)(param_1 + -0x50) +
   *(int *)(*(int *)(param_1 + -0x54) + 4) + -4) =
       std::basic_ostream<char,struct_std::char_traits<char>_>::vftable;
  return;
}



int __thiscall FUN_0043eff8(int param_1_00,byte param_1)

{
  FUN_0043e1a3();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -0x58);
  }
  return param_1_00 + -0x58;
}



int __thiscall FUN_0043f017(int param_1_00,byte param_1)

{
  FUN_0043f0a2();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -0x58);
  }
  return param_1_00 + -0x58;
}



basic_filebuf<char,struct_std::char_traits<char>_> * __thiscall
FUN_0043f036(basic_filebuf<char,struct_std::char_traits<char>_> *param_1_00,byte param_1)

{
  std::basic_filebuf<char,struct_std::char_traits<char>_>::
  ~basic_filebuf<char,struct_std::char_traits<char>_>(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_0043f052(int param_1_00,byte param_1)

{
  FUN_0043e360();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -0x54);
  }
  return param_1_00 + -0x54;
}



undefined4 * __thiscall FUN_0043f071(undefined4 *param_1_00,byte param_1)

{
  FUN_0043efb9();
  *param_1_00 = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -0x15);
  }
  return param_1_00 + -0x15;
}



void __fastcall FUN_0043f0a2(int param_1)

{
  ~basic_ostringstream<>();
  *(undefined4 *)(param_1 + 0x58) = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)(undefined4 *)(param_1 + 0x58));
  return;
}



// Library Function - Single Match
//  public: class std::basic_filebuf<char,struct std::char_traits<char> > * __thiscall
// std::basic_filebuf<char,struct std::char_traits<char> >::close(void)
// 
// Library: Visual Studio 2008 Release

basic_filebuf<char,struct_std::char_traits<char>_> * __thiscall
std::basic_filebuf<char,struct_std::char_traits<char>_>::close
          (basic_filebuf<char,struct_std::char_traits<char>_> *this)

{
  bool bVar1;
  int iVar2;
  basic_filebuf<char,struct_std::char_traits<char>_> *pbVar3;
  
  if (*(int *)(this + 0x4c) != 0) {
    bVar1 = _Endwrite(this);
    pbVar3 = this;
    if (!bVar1) {
      pbVar3 = (basic_filebuf<char,struct_std::char_traits<char>_> *)0x0;
    }
    iVar2 = _fclose(*(FILE **)(this + 0x4c));
    if (iVar2 == 0) goto LAB_0043f0e4;
  }
  pbVar3 = (basic_filebuf<char,struct_std::char_traits<char>_> *)0x0;
LAB_0043f0e4:
  this[0x48] = (basic_filebuf<char,struct_std::char_traits<char>_>)0x0;
  this[0x41] = (basic_filebuf<char,struct_std::char_traits<char>_>)0x0;
  FUN_00422f70();
  *(undefined4 *)(this + 0x4c) = 0;
  *(undefined4 *)(this + 0x44) = DAT_032ef6e8;
  *(undefined4 *)(this + 0x3c) = 0;
  return pbVar3;
}



// Library Function - Single Match
//  protected: void __thiscall std::basic_filebuf<char,struct std::char_traits<char> >::_Init(struct
// _iobuf *,enum std::basic_filebuf<char,struct std::char_traits<char> >::_Initfl)
// 
// Library: Visual Studio 2005 Release

void __thiscall
std::basic_filebuf<char,struct_std::char_traits<char>_>::_Init
          (basic_filebuf<char,struct_std::char_traits<char>_> *this,_iobuf *param_1,_Initfl param_2)

{
  undefined4 uVar1;
  
  this[0x48] = (basic_filebuf<char,struct_std::char_traits<char>_>)(param_2 == 1);
  this[0x41] = (basic_filebuf<char,struct_std::char_traits<char>_>)0x0;
  FUN_00422f70();
  if (param_1 != (_iobuf *)0x0) {
    basic_streambuf<char,struct_std::char_traits<char>_>::_Init
              ((basic_streambuf<char,struct_std::char_traits<char>_> *)this,&param_1->_base,
               &param_1->_ptr,&param_1->_cnt,&param_1->_base,&param_1->_ptr,&param_1->_cnt);
  }
  *(_iobuf **)(this + 0x4c) = param_1;
  uVar1 = DAT_032ef6e8;
  *(undefined4 *)(this + 0x3c) = 0;
  *(undefined4 *)(this + 0x44) = uVar1;
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Single Match
//  protected: bool __thiscall std::basic_filebuf<char,struct std::char_traits<char>
// >::_Endwrite(void)
// 
// Library: Visual Studio 2008 Release

bool __thiscall
std::basic_filebuf<char,struct_std::char_traits<char>_>::_Endwrite
          (basic_filebuf<char,struct_std::char_traits<char>_> *this)

{
  undefined uVar1;
  int iVar2;
  _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *p_Var3;
  char *pcVar4;
  size_t sVar5;
  size_t _Count;
  undefined local_5c [8];
  undefined local_54 [8];
  undefined local_4c [8];
  undefined local_44 [8];
  char *local_3c;
  int local_38;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_34 [20];
  int local_20;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0x43f158;
  if (((*(int *)(this + 0x3c) != 0) &&
      (this[0x41] != (basic_filebuf<char,struct_std::char_traits<char>_>)0x0)) &&
     (iVar2 = (**(code **)(*(int *)this + 4))(0xffffffff), iVar2 != -1)) {
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_34,8,'\0');
    local_8 = 0;
LAB_0043f190:
    p_Var3 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              *)FUN_0042a0d0(local_5c);
    pcVar4 = _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             ::operator*(p_Var3);
    iVar2 = local_20;
    p_Var3 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              *)FUN_0042a0d0(local_44);
    local_3c = _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
               ::operator*(p_Var3);
    iVar2 = (**(code **)(**(int **)(this + 0x3c) + 0x18))
                      (this + 0x44,local_3c,pcVar4 + iVar2,&local_38);
    if (iVar2 == 0) {
      this[0x41] = (basic_filebuf<char,struct_std::char_traits<char>_>)0x0;
    }
    else if (iVar2 != 1) goto LAB_0043f1e2;
    p_Var3 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              *)FUN_0042a0d0(local_54);
    pcVar4 = _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             ::operator*(p_Var3);
    _Count = local_38 - (int)pcVar4;
    if (_Count != 0) {
      p_Var3 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)FUN_0042a0d0(local_4c);
      pcVar4 = _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
               ::operator*(p_Var3);
      sVar5 = _fwrite(pcVar4,1,_Count,*(FILE **)(this + 0x4c));
      if (_Count != sVar5) goto LAB_0043f1e2;
    }
    if (this[0x41] == (basic_filebuf<char,struct_std::char_traits<char>_>)0x0) goto LAB_0043f1e2;
    if (_Count == 0) {
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                (local_34,8,'\0');
    }
    goto LAB_0043f190;
  }
LAB_0043f25a:
  uVar1 = FUN_00a421fb();
  return (bool)uVar1;
LAB_0043f1e2:
  FUN_004017b2(1,0);
  goto LAB_0043f25a;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: void __thiscall std::basic_filebuf<char,struct std::char_traits<char>
// >::_Initcvt(class std::codecvt<char,char,int> *)
//  protected: void __thiscall std::basic_filebuf<unsigned short,struct std::char_traits<unsigned
// short> >::_Initcvt(class std::codecvt<unsigned short,char,int> *)
//  protected: void __thiscall std::basic_filebuf<wchar_t,struct std::char_traits<wchar_t>
// >::_Initcvt(class std::codecvt<wchar_t,char,int> *)
// 
// Library: Visual Studio 2005 Release

void __thiscall Initcvt(int param_1_00,int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 4))();
  if (cVar1 == '\0') {
    *(int **)(param_1_00 + 0x3c) = param_1;
    FUN_00422f70();
  }
  else {
    *(undefined4 *)(param_1_00 + 0x3c) = 0;
  }
  return;
}



undefined4
FUN_0043f288(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,
            undefined4 param_5,undefined4 param_6,undefined4 *param_7)

{
  *param_4 = param_2;
  *param_7 = param_5;
  return 3;
}



undefined4
FUN_0043f2a2(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  *param_4 = param_2;
  return 3;
}



uint FUN_0043f2b2(undefined4 param_1,int param_2,int param_3,uint param_4)

{
  uint uVar1;
  
  uVar1 = param_3 - param_2;
  if (param_4 < (uint)(param_3 - param_2)) {
    uVar1 = param_4;
  }
  return uVar1;
}



// Library Function - Single Match
//  protected: void __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::_Init(char
// * *,char * *,int *,char * *,char * *,int *)
// 
// Library: Visual Studio 2005 Release

void __thiscall
std::basic_streambuf<char,struct_std::char_traits<char>_>::_Init
          (basic_streambuf<char,struct_std::char_traits<char>_> *this,char **param_1,char **param_2,
          int *param_3,char **param_4,char **param_5,int *param_6)

{
  *(char ***)(this + 0x10) = param_1;
  *(char ***)(this + 0x14) = param_4;
  *(char ***)(this + 0x20) = param_2;
  *(char ***)(this + 0x24) = param_5;
  *(int **)(this + 0x30) = param_3;
  *(int **)(this + 0x34) = param_6;
  return;
}



// Library Function - Single Match
//  public: __thiscall std::basic_filebuf<char,struct std::char_traits<char>
// >::basic_filebuf<char,struct std::char_traits<char> >(struct _iobuf *)
// 
// Library: Visual Studio 2005 Release

basic_filebuf<char,struct_std::char_traits<char>_> * __thiscall
std::basic_filebuf<char,struct_std::char_traits<char>_>::
basic_filebuf<char,struct_std::char_traits<char>_>
          (basic_filebuf<char,struct_std::char_traits<char>_> *this,_iobuf *param_1)

{
  FUN_00422fd0();
  *(undefined ***)this = vftable;
  _Init(this,param_1,0);
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0043f313(wchar_t *param_1,int param_2)

{
  _iobuf *p_Var1;
  undefined4 uVar2;
  basic_filebuf<char,struct_std::char_traits<char>_> *unaff_ESI;
  
  if ((*(int *)(unaff_ESI + 0x4c) == 0) &&
     (p_Var1 = std::_Fiopen(param_1,param_2,0x40), p_Var1 != (_iobuf *)0x0)) {
    std::basic_filebuf<char,struct_std::char_traits<char>_>::_Init(unaff_ESI,p_Var1,1);
    uVar2 = FUN_0043f377(&param_2);
    uVar2 = FUN_0043f704(uVar2);
    Initcvt(uVar2);
    std::locale::~locale((locale *)&param_2);
  }
  return;
}



undefined4 __thiscall FUN_0043f377(int param_1_00,undefined4 param_1)

{
  FUN_00417482(*(undefined4 *)(param_1_00 + 0x38));
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0043f38a(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_0043f83f(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



int FUN_0043f3d7(void)

{
  undefined4 *in_EAX;
  int iVar1;
  int unaff_EBX;
  
  FUN_0082ace0(*in_EAX);
  FUN_0043fc05(in_EAX[1]);
  FUN_0082af90(*in_EAX);
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + -9;
  }
  return iVar1;
}



int FUN_0043f436(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_0043f4ad(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int __thiscall FUN_0043f524(int param_1_00,undefined4 param_1)

{
  FUN_0082aa30(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_0043f54c(int param_1_00,undefined4 param_1)

{
  FUN_0082aa60(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_0043f574(int param_1_00,undefined4 param_1)

{
  FUN_0082a9f0(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_0043f59c(int param_1_00,undefined4 param_1)

{
  FUN_0082a9c0(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_0043f5c4(int param_1_00,undefined4 param_1)

{
  FUN_0082ae00(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_0043f5ec(int param_1_00,undefined4 param_1)

{
  FUN_0082d860(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_0043f614(int param_1_00,undefined4 param_1)

{
  FUN_0082d8a0(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_0043f63c(int param_1_00,undefined4 param_1)

{
  FUN_0082d880(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_0043f664(int param_1_00,undefined4 param_1)

{
  FUN_0082d830(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_0043f68c(int param_1_00,undefined4 param_1)

{
  FUN_0082d800(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_0043f6b4(int param_1_00,undefined4 param_1)

{
  FUN_0082df40(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_0043f6dc(int param_1_00,undefined4 param_1)

{
  FUN_0082d7d0(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

facet * FUN_0043f704(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x43f710;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032ef6ec;
  local_8 = 0;
  local_14[0] = DAT_032ef6ec;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032f11f4);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = FUN_0043f7a1(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032ef6ec = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0043f7a1(int *param_1,locale *param_2)

{
  undefined4 *puVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0x43f7b0;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    puVar1 = (undefined4 *)operator_new(8);
    local_8 = 0;
    if (puVar1 == (undefined4 *)0x0) {
      puVar1 = (undefined4 *)0x0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      std::_Locinfo::_Locinfo(local_a4,pbVar2);
      puVar1[1] = 0;
      local_14 = 3;
      *puVar1 = std::codecvt<char,char,int>::vftable;
    }
    local_8 = 2;
    *param_1 = (int)puVar1;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 2;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0043f83f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5D651E7E::W03E39C79>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0043f885(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0043f89c(undefined4 param_1)

{
  FUN_0082d4f0();
  FUN_0043fb74(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W5D651E7E::W03E39C79> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W5D651E7E::W03E39C79> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>
::get_const_instance(void)

{
                    // 0x3f8c2  597
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW03E39C79@W5D651E7E@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW03E39C79@W5D651E7E@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>::
    oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>
              ((oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c73cc5);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_0043f8c7(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W5D651E7E::W03E39C79> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W5D651E7E::W03E39C79> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>
::get_instance(void)

{
                    // 0x3f8e9  917
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW03E39C79@W5D651E7E@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW03E39C79@W5D651E7E@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>::
    oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>
              ((oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c73cc5);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_0043f933(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef6f0 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W5D651E7E::W03E39C79>::oserializer<class boost::archive::xml_oarchive,class
// W5D651E7E::W03E39C79>(void)

oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>::
oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>
          (oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79> *this)

{
  extended_type_info_typeid<class_W5D651E7E::W03E39C79> *peVar1;
  
                    // 0x3f95c  55
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW03E39C79@W5D651E7E@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W5D651E7E::W03E39C79>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W5D651E7E::W03E39C79>
// >::get_const_instance(void)

extended_type_info_typeid<class_W5D651E7E::W03E39C79> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>::
get_const_instance(void)

{
                    // 0x3f976  429
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW03E39C79@W5D651E7E@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW03E39C79@W5D651E7E@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_0043f9b7();
    _atexit((_func_4879 *)&LAB_00c73ce0);
  }
  return (extended_type_info_typeid<class_W5D651E7E::W03E39C79> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W5D651E7E::W03E39C79>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W5D651E7E::W03E39C79> >::get_instance(void)

extended_type_info_typeid<class_W5D651E7E::W03E39C79> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>::
get_instance(void)

{
                    // 0x3f97b  749
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW03E39C79@W5D651E7E@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW03E39C79@W5D651E7E@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_0043f9b7();
    _atexit((_func_4879 *)&LAB_00c73ce0);
  }
  return (extended_type_info_typeid<class_W5D651E7E::W03E39C79> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>
* FUN_0043f9b7(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>::vftable;
  FUN_00830c60(&W5D651E7E::W03E39C79::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_0043fa07(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W5D651E7E::W03E39C79>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W5D651E7E::W03E39C79> *this,
                basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0x3fa48  1665
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW03E39C79@W5D651E7E@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  if (param_1 == (basic_oarchive *)0xfffffff7) {
    param_1 = (basic_oarchive *)0x0;
  }
  FUN_0044115c(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W5D651E7E::W03E39C79> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W5D651E7E::W03E39C79> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W5D651E7E::W03E39C79> *peVar1;
  
                    // 0x3fa93  517
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW03E39C79@W5D651E7E@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW03E39C79@W5D651E7E@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c73cf6);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_0043fa98(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W5D651E7E::W03E39C79> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W5D651E7E::W03E39C79> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W5D651E7E::W03E39C79> *peVar1;
  
                    // 0x3faba  837
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW03E39C79@W5D651E7E@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW03E39C79@W5D651E7E@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W5D651E7E::W03E39C79>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c73cf6);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_0043fb0a(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef6f2 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W5D651E7E::W03E39C79>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W5D651E7E::W03E39C79> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3fb33  1549
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW03E39C79@W5D651E7E@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  if (param_1 == (basic_iarchive *)0xfffffff7) {
    param_1 = (basic_iarchive *)0x0;
  }
  FUN_004411d3(param_1 + 9);
  return;
}



void __thiscall FUN_0043fb74(int **param_1_00,undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_b0 [152];
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3041f;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_b0;
  ExceptionList = &local_14;
  if ((*(byte *)(*(int *)(**param_1_00 + 4) + 8 + (int)*param_1_00) & 6) != 0) {
    uVar2 = FUN_00832e60(0xd,0,0,1);
    local_c = 0;
    FUN_0043fc7f(uVar2);
  }
  FUN_004255c0(*param_1,uVar1);
  ExceptionList = pvStack_18;
  return;
}



void __fastcall FUN_0043fbef(int param_1)

{
  FUN_008330e0();
  exception::~exception((exception *)(param_1 + 0x8c));
  return;
}



void __thiscall FUN_0043fc05(int **param_1_00,undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_b0 [152];
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3041f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if ((*(byte *)(*(int *)(**param_1_00 + 4) + 8 + (int)*param_1_00) & 6) == 0) {
    FUN_0043fd3a(param_1,DAT_0323f878 ^ (uint)local_b0);
    ExceptionList = pvStack_18;
    return;
  }
  uVar2 = FUN_00832e60(8,0,0,1);
  local_c = 0;
  FUN_0043fc7f(uVar2);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0043fc7f(undefined4 param_1)

{
  code *pcVar1;
  undefined local_a0 [156];
  
  FUN_0043fca9(param_1,1);
  __CxxThrowException_8(local_a0,&DAT_03115a80);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



int * __thiscall FUN_0043fca9(int *param_1_00,int *param_1,int param_2)

{
  exception *peVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  
  if (param_2 != 0) {
    *param_1_00 = (int)&PTR_00fafcf0;
    if (param_1 == (int *)0x0) {
      peVar1 = (exception *)0x0;
    }
    else {
      peVar1 = (exception *)(*(int *)(*param_1 + 4) + (int)param_1);
    }
    std::exception::exception((exception *)(param_1_00 + 0x23),peVar1);
  }
  *(undefined ***)((int)param_1_00 + *(int *)(*param_1_00 + 4)) =
       boost::archive::archive_exception::vftable;
  *(undefined4 *)(*(int *)(*param_1_00 + 4) + -4 + (int)param_1_00) = 0;
  piVar4 = param_1_00 + 1;
  piVar3 = param_1;
  for (iVar2 = 0x20; piVar3 = piVar3 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
    *piVar4 = *piVar3;
    piVar4 = piVar4 + 1;
  }
  param_1_00[0x21] = param_1[0x21];
  return param_1_00;
}



int __thiscall FUN_0043fd18(int param_1,byte param_2)

{
  FUN_0043fbef();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1 + -0x8c);
  }
  return param_1 + -0x8c;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __fastcall FUN_0043fd3a(int *param_1)

{
  undefined4 uVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  undefined local_40 [4];
  undefined4 local_3c;
  undefined4 local_34;
  char local_2c;
  locale local_28 [4];
  undefined4 local_24;
  int *local_20;
  undefined4 local_1c [5];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x43fd46;
  local_1c[0] = 0;
  local_20 = param_1;
  FUN_00441871(param_1,0);
  local_8 = 0;
  if (local_2c != '\0') {
    local_24 = 0;
    uVar1 = FUN_00417498(local_28);
    local_8._0_1_ = 1;
    piVar2 = (int *)FUN_00440e5e(uVar1);
    std::locale::~locale(local_28);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar3 = *(int *)(*param_1 + 4) + (int)param_1;
    iVar4 = *(int *)(iVar3 + 0x28);
    local_34 = CONCAT31(local_34._1_3_,1);
    local_3c = CONCAT31(local_3c._1_3_,iVar4 == 0);
    (**(code **)(*piVar2 + 0x20))(local_40,iVar4,local_3c,0,local_34,iVar3,local_1c,&local_24);
    local_8 = 0;
    piVar2 = (int *)FUN_0043fdef(iVar4);
    return piVar2;
  }
  FUN_004259e0(local_1c[0],0);
  local_8 = 0xffffffff;
  FUN_00413965();
  return param_1;
}



undefined * Catch_All_0043fdcd(void)

{
  int unaff_EBP;
  
  FUN_004259e0(4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_0043fdea;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0043fdef(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  
  if ((*(byte *)(unaff_EBP + -0x18) & 2) == 0) {
    **(undefined4 **)(unaff_EBP + 8) = *(undefined4 *)(unaff_EBP + -0x20);
  }
  else {
    *(uint *)(unaff_EBP + -0x18) = *(uint *)(unaff_EBP + -0x18) | 2;
  }
  FUN_004259e0(*(undefined4 *)(unaff_EBP + -0x18),unaff_EBX);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00413965();
  return;
}


/*
Unable to decompile 'FUN_0044002c'
Cause: 
Low-level Error: Cannot properly adjust input varnodes
*/


// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_0044037f(char *param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,int param_6,uint *param_7,undefined8 *param_8)

{
  uint *puVar1;
  undefined8 *puVar2;
  bool bVar3;
  int iVar4;
  undefined8 uVar5;
  int *this;
  istreambuf_iterator<char,struct_std::char_traits<char>_> *local_44;
  undefined4 *local_40;
  locale local_3c [4];
  int local_38;
  istreambuf_iterator<char,struct_std::char_traits<char>_> local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar2 = param_8;
  puVar1 = param_7;
  iVar4 = param_6;
  uStack_4 = 0x3c;
  local_8 = 0x44038b;
  local_38 = 0;
  local_40 = param_1;
  FUN_00417498(local_3c);
  local_8 = 0;
  this = &local_38;
  iVar4 = std::num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::
          _Getifld((num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                    *)this,param_1_00,local_34,
                   (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_2,
                   (int)&param_4,*(locale **)(iVar4 + 0x10));
  uVar5 = FUN_00824341(local_34,&local_44,iVar4,this);
  local_8 = 0xffffffff;
  std::locale::~locale(local_3c);
  bVar3 = std::istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_2,
                     (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_4);
  if (bVar3) {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_44 == local_34) || (local_38 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *puVar2 = uVar5;
  }
  *local_40 = param_2;
  local_40[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Single Match
//  protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> >
// __thiscall std::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> >
// >::do_get(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class
// std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,float
// &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::do_get
          (undefined4 param_1,undefined4 *param_11,undefined4 param_12,undefined4 param_13)

{
  uint *puVar1;
  float *pfVar2;
  bool bVar3;
  int iVar4;
  float10 fVar5;
  uint *param_16;
  float *param_17;
  int *this;
  istreambuf_iterator<char,struct_std::char_traits<char>_> *local_60;
  locale local_5c [4];
  int local_58;
  char *local_54;
  istreambuf_iterator<char,struct_std::char_traits<char>_> local_50 [72];
  undefined4 local_8;
  undefined4 uStack_4;
  
  pfVar2 = param_17;
  puVar1 = param_16;
  uStack_4 = 0x50;
  local_8 = 0x440442;
  local_58 = 0;
  FUN_00417498(local_5c);
  local_8 = 0;
  this = &local_58;
  iVar4 = _Getffld((num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                    *)this,local_54,local_50,
                   (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                   (locale *)&stack0x00000010);
  fVar5 = (float10)__Stofx(local_50,&local_60,iVar4,this);
  local_54 = (char *)(float)fVar5;
  local_8 = 0xffffffff;
  locale::~locale(local_5c);
  bVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                     (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&stack0x00000010);
  if (bVar3) {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_60 == local_50) || (local_58 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *pfVar2 = (float)local_54;
  }
  *param_11 = param_12;
  param_11[1] = param_13;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> >
// __thiscall std::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> >
// >::do_get(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class
// std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,double
// &)const 
//  protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> >
// __thiscall std::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> >
// >::do_get(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class
// std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,long
// double &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall do_get(char *param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint *puVar1;
  double *pdVar2;
  bool bVar3;
  int iVar4;
  float10 fVar5;
  uint *param_7;
  double *param_8;
  int *this;
  istreambuf_iterator<char,struct_std::char_traits<char>_> *local_5c;
  locale local_58 [4];
  int local_54;
  istreambuf_iterator<char,struct_std::char_traits<char>_> local_50 [72];
  undefined4 local_8;
  undefined4 uStack_4;
  
  pdVar2 = param_8;
  puVar1 = param_7;
  uStack_4 = 0x54;
  local_8 = 0x4404ea;
  local_54 = 0;
  FUN_00417498(local_58);
  local_8 = 0;
  this = &local_54;
  iVar4 = std::num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::
          _Getffld((num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                    *)this,param_1_00,local_50,
                   (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_2,
                   (locale *)&stack0x00000010);
  fVar5 = (float10)FUN_00824568(local_50,&local_5c,iVar4,this);
  local_8 = 0xffffffff;
  std::locale::~locale(local_58);
  bVar3 = std::istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_2,
                     (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&stack0x00000010);
  if (bVar3) {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_5c == local_50) || (local_54 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *pdVar2 = (double)fVar5;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Single Match
//  protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> >
// __thiscall std::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> >
// >::do_get(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class
// std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,long
// double &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::do_get
          (void *this,undefined4 *param_11,undefined4 param_12,undefined4 param_13)

{
  uint *puVar1;
  double *pdVar2;
  bool bVar3;
  int iVar4;
  float10 fVar5;
  uint *param_16;
  double *param_17;
  int *this_00;
  istreambuf_iterator<char,struct_std::char_traits<char>_> *local_5c;
  locale local_58 [4];
  int local_54;
  istreambuf_iterator<char,struct_std::char_traits<char>_> local_50 [72];
  undefined4 local_8;
  undefined4 uStack_4;
  
  pdVar2 = param_17;
  puVar1 = param_16;
  uStack_4 = 0x54;
  local_8 = 0x440592;
  local_54 = 0;
  FUN_00417498(local_58);
  local_8 = 0;
  this_00 = &local_54;
  iVar4 = _Getffld((num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                    *)this_00,(char *)this,local_50,
                   (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                   (locale *)&stack0x00000010);
  fVar5 = (float10)FUN_008245d1(local_50,&local_5c,iVar4,this_00);
  local_8 = 0xffffffff;
  locale::~locale(local_58);
  bVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                     (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&stack0x00000010);
  if (bVar3) {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_5c == local_50) || (local_54 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *pdVar2 = (double)fVar5;
  }
  *param_11 = param_12;
  param_11[1] = param_13;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Single Match
//  protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> >
// __thiscall std::num_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> >
// >::do_get(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class
// std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,void *
// &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::do_get
          (undefined4 param_1,undefined4 *param_11,undefined4 param_12,undefined4 param_13)

{
  uint *puVar1;
  undefined4 *puVar2;
  bool bVar3;
  num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> *this;
  uint *param_16;
  undefined4 *param_17;
  istreambuf_iterator<char,struct_std::char_traits<char>_> *local_48;
  locale local_44 [4];
  int local_40;
  undefined4 local_3c;
  char *local_38;
  istreambuf_iterator<char,struct_std::char_traits<char>_> local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar2 = param_17;
  puVar1 = param_16;
  uStack_4 = 0x38;
  local_8 = 0x44063a;
  local_40 = 0;
  FUN_00417498(local_44);
  local_8 = 0;
  local_38 = (char *)_Getifld(this,local_38,local_34,
                              (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                              (int)&stack0x00000010,(locale *)0x800);
  local_8 = 0xffffffff;
  locale::~locale(local_44);
  local_3c = FUN_0082403e(local_34,&local_48,local_38,&local_40);
  local_38 = (char *)0x0;
  bVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                     (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&stack0x00000010);
  if (bVar3) {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_48 == local_34) || (local_40 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *puVar2 = local_3c;
  }
  *param_11 = param_12;
  param_11[1] = param_13;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Single Match
//  private: int __cdecl std::num_get<char,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > >::_Getifld(char *,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > &,class std::istreambuf_iterator<char,struct std::char_traits<char> >
// &,int,class std::locale const &)const 
// 
// Library: Visual Studio 2008 Release

int __thiscall
std::num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::_Getifld
          (num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> *this,
          char *param_1,istreambuf_iterator<char,struct_std::char_traits<char>_> *param_2,
          istreambuf_iterator<char,struct_std::char_traits<char>_> *param_3,int param_4,
          locale *param_5)

{
  bool bVar1;
  char cVar2;
  byte bVar3;
  char cVar4;
  istreambuf_iterator<char,struct_std::char_traits<char>_> iVar5;
  int *piVar6;
  uint uVar7;
  void *pvVar8;
  char *pcVar9;
  int iVar10;
  undefined4 ***pppuVar11;
  size_t local_68;
  istreambuf_iterator<char,struct_std::char_traits<char>_> *local_54;
  char local_4e;
  undefined local_4c [4];
  undefined4 ***local_48 [4];
  int local_38;
  uint local_34;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x58;
  local_8 = 0x4406f0;
  piVar6 = (int *)FUN_00424e70();
  FUN_0085c060(local_4c);
  local_8 = 0;
  if (local_38 == 0) {
    local_4e = '\0';
  }
  else {
    local_4e = (**(code **)(*piVar6 + 8))();
  }
  local_54 = param_2;
  bVar1 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    (param_3,(istreambuf_iterator<char,struct_std::char_traits<char>_> *)param_4);
  if (!bVar1) {
    cVar2 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
    if (cVar2 == '+') {
      *param_2 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x2b;
    }
    else {
      cVar2 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
      if (cVar2 != '-') goto LAB_00440768;
      *param_2 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x2d;
    }
    local_54 = param_2 + 1;
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_3);
  }
LAB_00440768:
  uVar7 = (uint)param_5 & 0xe00;
  if (uVar7 == 0x400) {
    bVar3 = 8;
  }
  else if (uVar7 == 0x800) {
    bVar3 = 0x10;
  }
  else {
    bVar3 = -(uVar7 != 0) & 10;
  }
  cVar2 = '\0';
  bVar1 = false;
  cVar4 = FUN_0044104b(param_3,param_4);
  if (cVar4 == '\0') {
LAB_00440816:
    if (bVar3 != 0) {
LAB_0044081c:
      if (bVar3 != 10) goto LAB_00440821;
    }
    local_68 = 10;
  }
  else {
    cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
    if (cVar4 != '0') goto LAB_00440816;
    cVar2 = '\x01';
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_3);
    cVar4 = FUN_0044104b(param_3,param_4);
    if (cVar4 == '\0') {
LAB_0044080d:
      if (bVar3 == 0) {
        bVar3 = 8;
        goto LAB_00440816;
      }
      goto LAB_0044081c;
    }
    cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
    if (cVar4 != 'x') {
      cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
      if (cVar4 != 'X') goto LAB_0044080d;
    }
    if ((bVar3 != 0) && (bVar3 != 0x10)) goto LAB_0044080d;
    bVar3 = 0x10;
    cVar2 = '\0';
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_3);
LAB_00440821:
    local_68 = ((bVar3 != 8) - 1 & 0xfffffff2) + 0x16;
  }
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_30,1,cVar2);
  local_8 = CONCAT31(local_8._1_3_,1);
  uVar7 = 0;
  cVar4 = FUN_0044104b(param_3,param_4);
  if (cVar4 != '\0') {
    do {
      iVar5 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)
              istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
      *local_54 = iVar5;
      pvVar8 = _memchr("0123456789abcdefABCDEF",(int)(char)iVar5,local_68);
      if (pvVar8 == (void *)0x0) {
        pcVar9 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                 operator[](local_30,uVar7);
        if ((*pcVar9 == '\0') || (local_4e == '\0')) break;
        cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
        if (cVar4 != local_4e) break;
        basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                  (local_30,1,'\0');
        uVar7 = uVar7 + 1;
      }
      else {
        if (((bVar1) ||
            (*local_54 != (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x30)) &&
           (local_54 < param_2 + 0x1f)) {
          local_54 = local_54 + 1;
          bVar1 = true;
        }
        cVar2 = '\x01';
        pcVar9 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                 operator[](local_30,uVar7);
        if (*pcVar9 != '\x7f') {
          pcVar9 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                   operator[](local_30,uVar7);
          *pcVar9 = *pcVar9 + '\x01';
        }
      }
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_3);
      cVar4 = FUN_0044104b(param_3,param_4);
    } while (cVar4 != '\0');
    if (uVar7 != 0) {
      pcVar9 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
               operator[](local_30,uVar7);
      if (*pcVar9 < '\x01') {
        cVar2 = '\0';
      }
      else {
        uVar7 = uVar7 + 1;
      }
    }
  }
  if (local_34 < 0x10) {
    local_48[0] = local_48;
  }
  pppuVar11 = local_48[0];
  if (cVar2 == '\0') {
LAB_0044097e:
    local_54 = param_2;
  }
  else {
    while ((uVar7 != 0 && (*(char *)pppuVar11 != '\x7f'))) {
      uVar7 = uVar7 - 1;
      if (uVar7 != 0) {
        pcVar9 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                 operator[](local_30,uVar7);
        if (*(char *)pppuVar11 != *pcVar9) goto LAB_0044097e;
      }
      if (uVar7 == 0) {
        pcVar9 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                 operator[](local_30,0);
        if (*(char *)pppuVar11 < *pcVar9) goto LAB_0044097e;
      }
      if ('\0' < *(char *)(undefined4 ***)((int)pppuVar11 + 1)) {
        pppuVar11 = (undefined4 ***)((int)pppuVar11 + 1);
      }
    }
    if (!bVar1) {
      *local_54 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x30;
      local_54 = local_54 + 1;
    }
  }
  *local_54 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x0;
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  iVar10 = FUN_00a421fb();
  return iVar10;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Single Match
//  private: int __cdecl std::num_get<char,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > >::_Getffld(char *,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > &,class std::istreambuf_iterator<char,struct std::char_traits<char> >
// &,class std::locale const &)const 
// 
// Library: Visual Studio 2008 Release

int __thiscall
std::num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::_Getffld
          (num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> *this,
          char *param_1,istreambuf_iterator<char,struct_std::char_traits<char>_> *param_2,
          istreambuf_iterator<char,struct_std::char_traits<char>_> *param_3,locale *param_4)

{
  bool bVar1;
  bool bVar2;
  char cVar3;
  char cVar4;
  bool bVar5;
  istreambuf_iterator<char,struct_std::char_traits<char>_> iVar6;
  int *piVar7;
  undefined4 ****ppppuVar8;
  char *pcVar9;
  lconv *plVar10;
  int iVar11;
  uint uVar12;
  istreambuf_iterator<char,struct_std::char_traits<char>_> *piVar13;
  int local_60;
  int local_58;
  istreambuf_iterator<char,struct_std::char_traits<char>_> *local_54;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [28];
  undefined local_30 [4];
  undefined4 ****local_2c [5];
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x5c;
  local_8 = 0x4409b7;
  piVar7 = (int *)FUN_00424e70();
  FUN_0085c060(local_30);
  local_8 = 0;
  local_54 = param_2;
  bVar1 = false;
  bVar2 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    (param_3,(istreambuf_iterator<char,struct_std::char_traits<char>_> *)param_4);
  if (!bVar2) {
    cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
    if (cVar3 == '+') {
      *param_2 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x2b;
    }
    else {
      cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
      if (cVar3 != '-') goto LAB_00440a1c;
      *param_2 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x2d;
    }
    local_54 = param_2 + 1;
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_3);
  }
LAB_00440a1c:
  local_58 = 0;
  local_60 = 0;
  bVar2 = false;
  ppppuVar8 = local_2c[0];
  if (local_18 < 0x10) {
    ppppuVar8 = local_2c;
  }
  if (*(char *)ppppuVar8 == '\x7f') {
LAB_00440ba6:
    cVar3 = FUN_0044104b(param_3,param_4);
    if (cVar3 != '\0') {
      do {
        cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
        if ((cVar3 < '0') ||
           (cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3),
           '9' < cVar3)) break;
        if (local_58 < 0x24) {
          cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
          if ((cVar3 != '0') || (local_58 != 0)) {
            iVar6 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)
                    istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
            local_58 = local_58 + 1;
            *local_54 = iVar6;
            local_54 = local_54 + 1;
          }
        }
        else {
          local_60 = local_60 + 1;
        }
        bVar2 = true;
        istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_3);
        cVar3 = FUN_0044104b(param_3,param_4);
      } while (cVar3 != '\0');
      goto LAB_00440c11;
    }
  }
  else {
    ppppuVar8 = local_2c[0];
    if (local_18 < 0x10) {
      ppppuVar8 = local_2c;
    }
    if (*(char *)ppppuVar8 < '\x01') goto LAB_00440ba6;
    cVar3 = (**(code **)(*piVar7 + 8))();
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_4c,1,'\0');
    local_8 = CONCAT31(local_8._1_3_,1);
    uVar12 = 0;
    cVar4 = FUN_0044104b(param_3,param_4);
    if (cVar4 != '\0') {
      do {
        cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
        if ((cVar4 < '0') ||
           (cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3),
           '9' < cVar4)) {
          pcVar9 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                   operator[](local_4c,uVar12);
          if ((*pcVar9 == '\0') ||
             ((cVar3 == '\0' ||
              (cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3),
              cVar4 != cVar3)))) break;
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                    (local_4c,1,'\0');
          uVar12 = uVar12 + 1;
        }
        else {
          bVar2 = true;
          if (local_58 < 0x24) {
            cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
            if ((cVar4 != '0') || (local_58 != 0)) {
              iVar6 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)
                      istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
              local_58 = local_58 + 1;
              *local_54 = iVar6;
              local_54 = local_54 + 1;
            }
          }
          else {
            local_60 = local_60 + 1;
          }
          pcVar9 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                   operator[](local_4c,uVar12);
          if (*pcVar9 != '\x7f') {
            pcVar9 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                     operator[](local_4c,uVar12);
            *pcVar9 = *pcVar9 + '\x01';
          }
        }
        istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_3);
        cVar4 = FUN_0044104b(param_3,param_4);
      } while (cVar4 != '\0');
      if (uVar12 != 0) {
        pcVar9 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                 operator[](local_4c,uVar12);
        if (*pcVar9 < '\x01') {
          bVar1 = true;
        }
        else {
          uVar12 = uVar12 + 1;
        }
      }
    }
    if (local_18 < 0x10) {
      local_2c[0] = local_2c;
    }
    ppppuVar8 = local_2c[0];
    if (!bVar1) {
      while( true ) {
        if ((uVar12 == 0) || (*(char *)ppppuVar8 == '\x7f')) goto LAB_00440b94;
        uVar12 = uVar12 - 1;
        if (((uVar12 != 0) &&
            (pcVar9 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                      operator[](local_4c,uVar12), *(char *)ppppuVar8 != *pcVar9)) ||
           ((uVar12 == 0 &&
            (pcVar9 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                      operator[](local_4c,0), *(char *)ppppuVar8 < *pcVar9)))) break;
        if ('\0' < *(char *)(undefined4 ****)((int)ppppuVar8 + 1)) {
          ppppuVar8 = (undefined4 ****)((int)ppppuVar8 + 1);
        }
      }
      bVar1 = true;
    }
LAB_00440b94:
    local_8 = local_8 & 0xffffff00;
    FUN_004017b2(1,0);
LAB_00440c11:
    if ((bVar2) && (local_58 == 0)) {
      *local_54 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x30;
      local_54 = local_54 + 1;
    }
  }
  cVar3 = FUN_0044104b(param_3,param_4);
  if (cVar3 != '\0') {
    cVar3 = (**(code **)(*piVar7 + 4))();
    cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
    if (cVar4 == cVar3) {
      plVar10 = _localeconv();
      *local_54 = *(istreambuf_iterator<char,struct_std::char_traits<char>_> *)
                   plVar10->decimal_point;
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_3);
      local_54 = local_54 + 1;
    }
  }
  if (local_58 == 0) {
    while ((cVar3 = FUN_0044104b(param_3,param_4), cVar3 != '\0' &&
           (cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3),
           cVar3 == '0'))) {
      local_60 = local_60 + -1;
      bVar2 = true;
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_3);
    }
    if (local_60 < 0) {
      *local_54 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x30;
      local_54 = local_54 + 1;
    }
  }
  while (((cVar3 = FUN_0044104b(param_3,param_4), cVar3 != '\0' &&
          (cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3),
          '/' < cVar3)) &&
         (cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3),
         cVar3 < ':'))) {
    if (local_58 < 0x24) {
      iVar6 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)
              istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
      *local_54 = iVar6;
      local_54 = local_54 + 1;
      local_58 = local_58 + 1;
    }
    bVar2 = true;
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_3);
  }
  if (((!bVar2) || (cVar3 = FUN_0044104b(param_3,param_4), cVar3 == '\0')) ||
     ((cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3),
      cVar3 != 'e' &&
      (cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3),
      cVar3 != 'E')))) goto LAB_00440dde;
  *local_54 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x65;
  piVar13 = local_54 + 1;
  istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_3);
  local_58 = 0;
  bVar2 = false;
  bVar5 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    (param_3,(istreambuf_iterator<char,struct_std::char_traits<char>_> *)param_4);
  if (!bVar5) {
    cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
    if (cVar3 == '+') {
      *piVar13 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x2b;
    }
    else {
      cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
      if (cVar3 != '-') goto LAB_00440d61;
      *piVar13 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x2d;
    }
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_3);
    piVar13 = local_54 + 2;
  }
LAB_00440d61:
  local_54 = piVar13;
  cVar3 = FUN_0044104b(param_3,param_4);
  if (cVar3 != '\0') {
    do {
      cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
      if (cVar3 != '0') break;
      bVar2 = true;
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_3);
      cVar3 = FUN_0044104b(param_3,param_4);
    } while (cVar3 != '\0');
    if (bVar2) {
      *local_54 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x30;
      local_54 = local_54 + 1;
    }
  }
  while (((cVar3 = FUN_0044104b(param_3,param_4), cVar3 != '\0' &&
          (cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3),
          '/' < cVar3)) &&
         (cVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3),
         cVar3 < ':'))) {
    if (local_58 < 8) {
      iVar6 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)
              istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_3);
      *local_54 = iVar6;
      local_54 = local_54 + 1;
      local_58 = local_58 + 1;
    }
    bVar2 = true;
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_3);
  }
LAB_00440dde:
  if ((bVar1) || (!bVar2)) {
    local_54 = param_2;
  }
  *local_54 = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x0;
  FUN_004017b2(1,0);
  iVar11 = FUN_00a421fb();
  return iVar11;
}



// Library Function - Single Match
//  public: char __thiscall std::istreambuf_iterator<char,struct std::char_traits<char>
// >::operator*(void)const 
// 
// Library: Visual Studio 2008 Release

char __thiscall
std::istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*
          (istreambuf_iterator<char,struct_std::char_traits<char>_> *this)

{
  if (this[4] == (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x0) {
    _Peek(this);
  }
  return (char)this[5];
}



// Library Function - Single Match
//  private: void __thiscall std::istreambuf_iterator<char,struct std::char_traits<char>
// >::_Inc(void)
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc
          (istreambuf_iterator<char,struct_std::char_traits<char>_> *this)

{
  int iVar1;
  
  if (*(basic_streambuf<char,struct_std::char_traits<char>_> **)this !=
      (basic_streambuf<char,struct_std::char_traits<char>_> *)0x0) {
    iVar1 = basic_streambuf<char,struct_std::char_traits<char>_>::sbumpc
                      (*(basic_streambuf<char,struct_std::char_traits<char>_> **)this);
    if (iVar1 != -1) {
      this[4] = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x0;
      return;
    }
  }
  *(undefined4 *)this = 0;
  this[4] = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x1;
  return;
}



// Library Function - Single Match
//  private: char __thiscall std::istreambuf_iterator<char,struct std::char_traits<char>
// >::_Peek(void)
// 
// Library: Visual Studio 2008 Release

char __thiscall
std::istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
          (istreambuf_iterator<char,struct_std::char_traits<char>_> *this)

{
  int iVar1;
  
  if (*(basic_streambuf<char,struct_std::char_traits<char>_> **)this !=
      (basic_streambuf<char,struct_std::char_traits<char>_> *)0x0) {
    iVar1 = basic_streambuf<char,struct_std::char_traits<char>_>::sgetc
                      (*(basic_streambuf<char,struct_std::char_traits<char>_> **)this);
    if (iVar1 != -1) {
      this[5] = SUB41(iVar1,0);
      goto LAB_00440e55;
    }
  }
  *(undefined4 *)this = 0;
LAB_00440e55:
  this[4] = (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x1;
  return (char)this[5];
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

facet * FUN_00440e5e(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x440e6a;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032ef6f4;
  local_8 = 0;
  local_14[0] = DAT_032ef6f4;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032f11e4);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = FUN_00441062(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032ef6f4 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Single Match
//  int __cdecl std::_Getloctxt<char,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > >(class std::istreambuf_iterator<char,struct std::char_traits<char> >
// &,class std::istreambuf_iterator<char,struct std::char_traits<char> > &,unsigned int,char const
// *)
// 
// Library: Visual Studio 2008 Release

int __cdecl
std::_Getloctxt<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
          (istreambuf_iterator<char,struct_std::char_traits<char>_> *param_1,
          istreambuf_iterator<char,struct_std::char_traits<char>_> *param_2,uint param_3,
          char *param_4)

{
  bool bVar1;
  char cVar2;
  bool bVar3;
  char *pcVar4;
  uint uVar5;
  int iVar6;
  uint local_3c;
  uint local_38;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x440f07;
  cVar2 = *param_4;
  pcVar4 = param_4;
  while (cVar2 != '\0') {
    if (cVar2 == *param_4) {
      param_3 = param_3 + 1;
    }
    pcVar4 = pcVar4 + 1;
    cVar2 = *pcVar4;
  }
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_30,param_3,'\0');
  local_8 = 0;
  local_3c = 1;
  while( true ) {
    iVar6 = 0;
    bVar3 = false;
    local_38 = 0;
    if (param_3 == 0) break;
    do {
      cVar2 = param_4[iVar6];
      if (cVar2 != '\0') {
        do {
          if (cVar2 == *param_4) break;
          iVar6 = iVar6 + 1;
          cVar2 = param_4[iVar6];
        } while (cVar2 != '\0');
      }
      pcVar4 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
               operator[](local_30,local_38);
      if (*pcVar4 == '\0') {
        iVar6 = iVar6 + local_3c;
        if ((param_4[iVar6] == *param_4) || (param_4[iVar6] == '\0')) {
          uVar5 = 0x7f;
          if (local_3c < 0x7f) {
            uVar5 = local_3c;
          }
          pcVar4 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                   operator[](local_30,local_38);
          *pcVar4 = (char)uVar5;
        }
        else {
          bVar1 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal(param_1,param_2);
          if ((bVar1) ||
             (cVar2 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_1),
             param_4[iVar6] != cVar2)) {
            uVar5 = 0x7f;
            if (local_3c < 0x7f) {
              uVar5 = local_3c;
            }
            pcVar4 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                     operator[](local_30,local_38);
            *pcVar4 = (char)uVar5;
          }
          else {
            bVar3 = true;
          }
        }
      }
      else {
        pcVar4 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                 operator[](local_30,local_38);
        iVar6 = iVar6 + *pcVar4;
      }
      local_38 = local_38 + 1;
    } while (local_38 < param_3);
    if ((!bVar3) ||
       (bVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal(param_1,param_2),
       bVar3)) break;
    local_3c = local_3c + 1;
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_1);
  }
  FUN_004017b2(1,0);
  iVar6 = FUN_00a421fb();
  return iVar6;
}



bool FUN_0044104b(istreambuf_iterator<char,struct_std::char_traits<char>_> *param_1,
                 istreambuf_iterator<char,struct_std::char_traits<char>_> *param_2)

{
  bool bVar1;
  
  bVar1 = std::istreambuf_iterator<char,struct_std::char_traits<char>_>::equal(param_1,param_2);
  return !bVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00441062(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0x441071;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x10);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = collate<>(uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 4;
}



// Library Function - Single Match
//  public: bool __thiscall std::istreambuf_iterator<char,struct std::char_traits<char>
// >::equal(class std::istreambuf_iterator<char,struct std::char_traits<char> > const &)const 
// 
// Library: Visual Studio 2003 Release

bool __thiscall
std::istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
          (istreambuf_iterator<char,struct_std::char_traits<char>_> *this,
          istreambuf_iterator<char,struct_std::char_traits<char>_> *param_1)

{
  if (this[4] == (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x0) {
    _Peek(this);
  }
  if (param_1[4] == (istreambuf_iterator<char,struct_std::char_traits<char>_>)0x0) {
    _Peek(param_1);
  }
  if (*(int *)this == 0) {
    if (*(int *)param_1 == 0) {
      return true;
    }
  }
  else if (*(int *)param_1 != 0) {
    return true;
  }
  return false;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::collate<char>::collate<char>(class std::_Locinfo const &,unsigned int)
//  public: __thiscall std::collate<unsigned short>::collate<unsigned short>(class std::_Locinfo
// const &,unsigned int)
//  public: __thiscall std::collate<wchar_t>::collate<wchar_t>(class std::_Locinfo const &,unsigned
// int)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release

undefined4 * __thiscall collate<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  _Collvec _Var1;
  
  param_1_00[1] = param_2;
  *param_1_00 = std::
                num_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::
                vftable;
  _Var1 = __Getcoll();
  *(_Collvec *)(param_1_00 + 2) = _Var1;
  return param_1_00;
}



int FUN_0044115c(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_004411d3(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W47457227::W2907F2E9> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W47457227::W2907F2E9> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>
::get_const_instance(void)

{
                    // 0x4124a  605
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW2907F2E9@W47457227@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW2907F2E9@W47457227@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>::
    oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>
              ((oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c73d11);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_0044124f(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W47457227::W2907F2E9> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W47457227::W2907F2E9> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>
::get_instance(void)

{
                    // 0x41271  925
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW2907F2E9@W47457227@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW2907F2E9@W47457227@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>::
    oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>
              ((oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c73d11);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004412bb(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef6f8 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W47457227::W2907F2E9>::oserializer<class boost::archive::xml_oarchive,class
// W47457227::W2907F2E9>(void)

oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>::
oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>
          (oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9> *this)

{
  extended_type_info_typeid<class_W47457227::W2907F2E9> *peVar1;
  
                    // 0x412e4  63
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW2907F2E9@W47457227@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W47457227::W2907F2E9>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W47457227::W2907F2E9>
// >::get_const_instance(void)

extended_type_info_typeid<class_W47457227::W2907F2E9> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>::
get_const_instance(void)

{
                    // 0x412fe  437
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW2907F2E9@W47457227@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW2907F2E9@W47457227@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_0044133f();
    _atexit((_func_4879 *)&LAB_00c73d2c);
  }
  return (extended_type_info_typeid<class_W47457227::W2907F2E9> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W47457227::W2907F2E9>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W47457227::W2907F2E9> >::get_instance(void)

extended_type_info_typeid<class_W47457227::W2907F2E9> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>::
get_instance(void)

{
                    // 0x41303  757
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW2907F2E9@W47457227@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW2907F2E9@W47457227@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_0044133f();
    _atexit((_func_4879 *)&LAB_00c73d2c);
  }
  return (extended_type_info_typeid<class_W47457227::W2907F2E9> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>
* FUN_0044133f(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>::vftable;
  FUN_00830c60(&W47457227::W2907F2E9::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_0044138f(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W47457227::W2907F2E9>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W47457227::W2907F2E9> *this,
                basic_oarchive *param_1,void *param_2)

{
  undefined4 uStack_58;
  undefined4 uStack_54;
  undefined *puStack_50;
  undefined local_3c [8];
  undefined4 *local_34;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
                    // 0x413d0  1673
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW2907F2E9@W47457227@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  uStack_4 = 0x2c;
  uStack_8 = 0x4413dc;
  puStack_50 = local_3c;
  uStack_54 = 0x4413eb;
  (**(code **)(*(int *)this + 0xc))();
  local_34 = &uStack_58;
  uStack_58 = *(undefined4 *)((int)param_2 + 4);
                    // WARNING: Subroutine does not return
  FUN_0043c023((int)param_2 + 8);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W47457227::W2907F2E9> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W47457227::W2907F2E9> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W47457227::W2907F2E9> *peVar1;
  
                    // 0x41448  525
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW2907F2E9@W47457227@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW2907F2E9@W47457227@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c73d42);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_0044144d(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W47457227::W2907F2E9> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W47457227::W2907F2E9> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W47457227::W2907F2E9> *peVar1;
  
                    // 0x4146f  845
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW2907F2E9@W47457227@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW2907F2E9@W47457227@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W47457227::W2907F2E9>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c73d42);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004414bf(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef6fa = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W47457227::W2907F2E9>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W47457227::W2907F2E9> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x414e8  1557
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW2907F2E9@W47457227@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_0044158c();
  return;
}



void FUN_004414fa(void)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_00441515(iVar1 + 9);
  return;
}



int FUN_00441515(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  FUN_0082d4f0();
  FUN_0082dbd0(uVar1);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_0044158c(void)

{
  int unaff_ESI;
  undefined4 uStack_54;
  undefined auStack_44 [4];
  undefined4 *local_40;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_3c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_38 [24];
  undefined4 local_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4ad0b;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_44;
  ExceptionList = &local_14;
  local_20 = 0xf;
  uStack_54 = 0x4415d6;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_38,0);
  local_c = 0;
  if (*(uint *)(unaff_ESI + 0x24) < 0x10) {
    local_40 = (undefined4 *)(unaff_ESI + 0x10);
  }
  else {
    local_40 = *(undefined4 **)(unaff_ESI + 0x10);
  }
  local_3c = local_38;
  FUN_00441643();
  local_40 = &uStack_54;
  FUN_004671c7(local_38);
  FUN_00467135(unaff_ESI);
  uStack_54 = 1;
  FUN_004017b2();
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



int __fastcall FUN_00441643(undefined4 *param_1)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_0082ace0(*param_1);
  FUN_0082ad80(param_1[1]);
  FUN_0082af90(*param_1);
  if (iVar1 == -9) {
    iVar1 = 0;
  }
  return iVar1;
}



void FUN_004416ad(void)

{
  FUN_00833110();
  return;
}



void FUN_004416b5(void)

{
  FUN_0043fd18();
  return;
}



int ** __thiscall FUN_004416bd(int **param_1_00,int *param_1)

{
  *param_1_00 = param_1;
  if (*(int *)(*(int *)(*param_1 + 4) + 0x28 + (int)param_1) != 0) {
    FUN_00823c64();
  }
  return param_1_00;
}



// Library Function - Single Match
//  public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sbumpc(void)
// 
// Library: Visual Studio 2008 Release

int __thiscall
std::basic_streambuf<char,struct_std::char_traits<char>_>::sbumpc
          (basic_streambuf<char,struct_std::char_traits<char>_> *this)

{
  byte *pbVar1;
  int iVar2;
  
  if (**(int **)(this + 0x20) == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = **(int **)(this + 0x30);
  }
  if (0 < iVar2) {
    **(int **)(this + 0x30) = **(int **)(this + 0x30) + -1;
    pbVar1 = **(byte ***)(this + 0x20);
    **(byte ***)(this + 0x20) = pbVar1 + 1;
    return (uint)*pbVar1;
  }
                    // WARNING: Could not recover jumptable at 0x0044170b. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar2 = (**(code **)(*(int *)this + 0x14))();
  return iVar2;
}



// Library Function - Single Match
//  public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sgetc(void)
// 
// Library: Visual Studio 2008 Release

int __thiscall
std::basic_streambuf<char,struct_std::char_traits<char>_>::sgetc
          (basic_streambuf<char,struct_std::char_traits<char>_> *this)

{
  int iVar1;
  
  if (**(byte ***)(this + 0x20) == (byte *)0x0) {
    iVar1 = 0;
  }
  else {
    iVar1 = **(int **)(this + 0x30);
  }
  if (0 < iVar1) {
    return (uint)***(byte ***)(this + 0x20);
  }
                    // WARNING: Could not recover jumptable at 0x0044172b. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = (**(code **)(*(int *)this + 0x10))();
  return iVar1;
}



uint __fastcall FUN_0044172e(basic_streambuf<char,struct_std::char_traits<char>_> *param_1)

{
  int iVar1;
  uint uVar2;
  
  iVar1 = 0;
  if (**(int **)(param_1 + 0x20) != 0) {
    iVar1 = **(int **)(param_1 + 0x30);
  }
  if (1 < iVar1) {
    **(int **)(param_1 + 0x30) = **(int **)(param_1 + 0x30) + -1;
    **(int **)(param_1 + 0x20) = **(int **)(param_1 + 0x20) + 1;
    return (uint)***(byte ***)(param_1 + 0x20);
  }
  iVar1 = std::basic_streambuf<char,struct_std::char_traits<char>_>::sbumpc(param_1);
  if (iVar1 == -1) {
    return 0xffffffff;
  }
  uVar2 = std::basic_streambuf<char,struct_std::char_traits<char>_>::sgetc(param_1);
  return uVar2;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

uint __thiscall FUN_00441770(int *param_1_00,locale param_1)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  
  if (*(int *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 8) == 0) {
    if (*(int *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 0x2c) != 0) {
      FUN_00425840();
    }
    if ((param_1 == (locale)0x0) &&
       ((*(uint *)(*(int *)(*param_1_00 + 4) + 0x10 + (int)param_1_00) & 1) != 0)) {
      uVar1 = FUN_00417498(&param_1);
      iVar2 = FUN_00422a40(uVar1);
      std::locale::~locale(&param_1);
      uVar3 = std::basic_streambuf<char,struct_std::char_traits<char>_>::sgetc
                        (*(basic_streambuf<char,struct_std::char_traits<char>_> **)
                          (*(int *)(*param_1_00 + 4) + 0x28 + (int)param_1_00));
      while (uVar3 != 0xffffffff) {
        if ((*(byte *)(*(int *)(iVar2 + 0x10) + (uVar3 & 0xff) * 2) & 0x48) == 0) goto LAB_00441816;
        uVar3 = FUN_0044172e();
      }
      FUN_004259e0(1,0);
LAB_00441816:
      uVar3 = FUN_0044184e();
      return uVar3;
    }
    if (*(int *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 8) == 0) {
      return CONCAT31((int3)((uint)*(int *)(*param_1_00 + 4) >> 8),1);
    }
  }
  uVar3 = FUN_004259e0(2,0);
  return uVar3 & 0xffffff00;
}



undefined * Catch_All_0044182c(void)

{
  int unaff_EBP;
  
  FUN_004259e0(4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  return &DAT_00441849;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

uint FUN_0044184e(void)

{
  uint uVar1;
  int unaff_EBX;
  int *unaff_ESI;
  
  if (*(int *)((int)unaff_ESI + *(int *)(*unaff_ESI + 4) + 8) == unaff_EBX) {
    uVar1 = CONCAT31((int3)((uint)*(int *)(*unaff_ESI + 4) >> 8),1);
  }
  else {
    uVar1 = FUN_004259e0(2,unaff_EBX);
    uVar1 = uVar1 & 0xffffff00;
  }
  return uVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00441871(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  
  FUN_004416bd(param_1);
  uVar1 = FUN_00441770(param_2);
  *(undefined *)(param_1_00 + 4) = uVar1;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::basic_ostream<char,struct std::char_traits<char>
// >::basic_ostream<char,struct std::char_traits<char> >(class std::basic_streambuf<char,struct
// std::char_traits<char> > *,bool)
//  public: __thiscall std::basic_ostream<unsigned short,struct std::char_traits<unsigned short>
// >::basic_ostream<unsigned short,struct std::char_traits<unsigned short> >(class
// std::basic_streambuf<unsigned short,struct std::char_traits<unsigned short> > *,bool)
//  public: __thiscall std::basic_ostream<wchar_t,struct std::char_traits<wchar_t>
// >::basic_ostream<wchar_t,struct std::char_traits<wchar_t> >(class
// std::basic_streambuf<wchar_t,struct std::char_traits<wchar_t> > *,bool)
// 
// Libraries: Visual Studio 2008 Debug, Visual Studio 2008 Release

int * __thiscall basic_ostream<>(int *param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  if (param_3 != 0) {
    *param_1_00 = (int)&DAT_00fae78c;
    param_1_00[1] = (int)std::basic_ios<char,struct_std::char_traits<char>_>::vftable;
  }
  *(undefined ***)((int)param_1_00 + *(int *)(*param_1_00 + 4)) =
       std::basic_ostream<char,struct_std::char_traits<char>_>::vftable;
  FUN_00422c10(param_1,param_2);
  return param_1_00;
}



// Library Function - Single Match
//  bool __cdecl std::_Fgetc<char>(char &,void *)
// 
// Library: Visual Studio 2008 Release

bool __cdecl std::_Fgetc<char>(char *param_1,void *param_2)

{
  int iVar1;
  
  iVar1 = _fgetc((FILE *)param_2);
  if (iVar1 == -1) {
    return false;
  }
  *param_1 = (char)iVar1;
  return true;
}



// Library Function - Multiple Matches With Same Base Name
//  bool __cdecl std::_Ungetc<char>(char const &,struct _iobuf *)
//  bool __cdecl std::_Ungetc<char>(char const &,void *)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

bool _Ungetc<>(byte *param_1,FILE *param_2)

{
  int iVar1;
  
  iVar1 = _ungetc((uint)*param_1,param_2);
  return iVar1 != -1;
}



// Library Function - Single Match
//  bool __cdecl std::_Fputc<char>(char,void *)
// 
// Library: Visual Studio 2008 Release

bool __cdecl std::_Fputc<char>(char param_1,void *param_2)

{
  int iVar1;
  
  iVar1 = _fputc((int)param_1,(FILE *)param_2);
  return iVar1 != -1;
}



bool FUN_00441954(undefined4 param_1)

{
  int *piVar1;
  undefined local_10 [12];
  
  piVar1 = (int *)FUN_00827d70(local_10,param_1,0);
  return *piVar1 == 3;
}



undefined4 __thiscall FUN_0044197d(undefined4 param_1_00,undefined4 param_1)

{
  FID_conflict_assign(param_1,0,0xffffffff);
  return param_1_00;
}



bool FUN_00441993(undefined4 param_1)

{
  int *piVar1;
  undefined local_10 [12];
  
  piVar1 = (int *)FUN_00827d70(local_10,param_1,0);
  return *piVar1 == 2;
}



undefined4 * __thiscall FUN_004419bc(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF22948E2::W4FECD79D::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_004419d9(undefined4 *param_1)

{
  *param_1 = WF22948E2::W4FECD79D::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004419e0(undefined4 *param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined local_28 [8];
  undefined4 local_20;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  *param_1 = W5D651E7E::W44B0ED88::vftable;
  param_1[1] = param_2;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  FUN_00441bb4(param_1 + 6);
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  local_8._0_1_ = 5;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 0x11);
  }
  param_1[0x11] = piVar1;
  local_8._0_1_ = 6;
  iVar2 = FUN_00697fb3();
  piVar1 = param_1 + 0x17;
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x19) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[0x18] = 0;
  local_8._0_1_ = 7;
  puVar3 = (undefined4 *)FUN_004425ab(local_28);
  local_8 = CONCAT31(local_8._1_3_,8);
  local_20 = *puVar3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar3 + 1);
}



undefined4 __thiscall FUN_00441b98(undefined4 param_1,byte param_2)

{
  FUN_00441bfc();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00441bb4(undefined4 *param_1)

{
  *param_1 = WDE765622::W1893D24D::vftable;
  FUN_004382a5(param_1 + 1);
  return param_1;
}



undefined4 __thiscall FUN_00441be0(undefined4 param_1,byte param_2)

{
  FUN_0047873f();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_00441bfc(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_20;
  char local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = W5D651E7E::W44B0ED88::vftable;
  local_8 = 7;
  local_18 = param_1;
  FUN_00478ed6();
  if (&local_20 != param_1 + 0xd) {
    param_1[0xd] = 0;
  }
  iVar1 = param_1[0xe];
  param_1[0xe] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  FUN_0043d406(param_1 + 0xf);
  local_8._0_1_ = 8;
  FUN_004f9b2c();
  local_8 = CONCAT31(local_8._1_3_,7);
  if (local_1c != '\0') {
    FUN_00401477();
  }
  if (&local_20 != param_1 + 2) {
    param_1[2] = 0;
  }
  iVar1 = param_1[3];
  param_1[3] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_8 = 6;
  FUN_00441c9d();
  return;
}



undefined * Catch_All_00441c8b(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 6;
  return &DAT_00441c98;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00441c9d(void)

{
  int unaff_EBX;
  int unaff_EBP;
  undefined4 *unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 5;
  FUN_0048ae42(unaff_ESI + 0x11);
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 3;
  if (unaff_ESI[0xe] != unaff_EBX) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 2;
  FUN_0047873f();
  FUN_00417fe6();
  *(char *)(unaff_EBP + -4) = (char)unaff_EBX;
  if (unaff_ESI[3] != unaff_EBX) {
    FUN_0040127a();
  }
  *unaff_ESI = WDE765622::WE13D998E::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_00441cf1(int param_1)

{
  undefined4 param_10;
  undefined4 local_38;
  int local_34;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_34 = param_1 + 0x10;
  local_8 = 1;
  local_38 = 0x441d12;
  FUN_0043d406();
  local_14 = &local_38;
  local_38 = param_10;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x0000002c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_00441d89(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char local_18;
  
  FUN_0043d406(param_1_00 + 0x10);
  (**(code **)(*(int *)(param_1_00 + 0x18) + 0xc))(param_1,param_2);
  if (local_18 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_00441f4a(int param_1_00,undefined4 param_1)

{
  char cVar1;
  char local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x441f56;
  FUN_0043d406(param_1_00 + 0x3c);
  local_8 = 0;
  FUN_0048abce(param_1);
  FUN_0048a8a5(param_1);
  FUN_00478125(&local_18,&param_1);
  local_1c = *(undefined4 *)(param_1_00 + 0x5c);
  local_20 = *(undefined4 *)(param_1_00 + 0x44);
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    FUN_006badde();
    FUN_0074ca40();
    FUN_004187ef((undefined4 *)(param_1_00 + 0x44),&local_20,local_18,local_14);
  }
  local_8 = 0xffffffff;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00441fdf(int param_1)

{
  char cVar1;
  char local_28;
  
  FUN_0043d406(param_1 + 0x3c);
  FUN_0048ac5a();
  FUN_0048a97a();
  while( true ) {
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') break;
    FUN_006badde();
    FUN_0074ca40();
    FUN_00452ecb();
  }
  FUN_004f9b2c();
  if (local_28 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

uint __fastcall FUN_0044206a(int param_1)

{
  uint uVar1;
  int iVar2;
  char local_24;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x442076;
  FUN_0043d406(param_1 + 0x3c);
  local_8 = 0;
  FUN_00478125(local_20,&stack0x0000000c);
  local_14 = *(undefined4 *)(param_1 + 0x5c);
  local_18 = *(undefined4 *)(param_1 + 0x44);
  uVar1 = FUN_006b8eca();
  if ((char)uVar1 == '\0') {
    iVar2 = FUN_006badde();
    local_18 = *(undefined4 *)(iVar2 + 4);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar2 + 8);
  }
  local_8 = 0xffffffff;
  if (local_24 != '\0') {
    uVar1 = FUN_00401477();
  }
  return uVar1 & 0xffffff00;
}



void FUN_00442131(void)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *(undefined4 *)(in_EAX + 0x34);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0x38);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004421e2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W515EA149::WF9909B07>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00442228(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_004422dd(undefined4 param_1,byte param_2)

{
  FUN_00478aee();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004422f9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WABE12921::W31353214>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044233f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_00442356(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WABE12921::WEF35E497::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00442373(undefined4 *param_1)

{
  *param_1 = WABE12921::WEF35E497::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0044237a(undefined4 *param_1)

{
  if (param_1[3] != 0) {
    FUN_0043a4e8(param_1[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004423c1(void)

{
  code *pcVar1;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x4423cd;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_2c,"vector<T> too long");
  local_8 = 0;
  FUN_00417ca0(local_2c);
  local_54[0] = std::length_error::vftable;
  __CxxThrowException_8(local_54,&DAT_03115554);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00442400(int param_1)

{
  int in_EAX;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 8) {
    FUN_00417fc9();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0044241a(undefined4 *param_1)

{
  if (param_1[3] != 0) {
    FUN_00442400(param_1[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00442461(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = WABE12921::W31353214::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 3);
  }
  param_1[3] = piVar1;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 0xb);
  }
  param_1[0xb] = piVar1;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004424dd(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x44);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00442461(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_004422f9(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044254e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB09F3247::W144266B3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00442594(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004425ab(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0xac);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0048a4e7(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0044254e(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



undefined4 FUN_0044261f(void)

{
  return 0xc488350;
}



void __fastcall FUN_00442625(undefined4 *param_1)

{
  *param_1 = WDE765622::WE13D998E::vftable;
  return;
}



void FUN_0044266e(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00442706(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0044279e(void)

{
  int iVar1;
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c28ff2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_28);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00442892(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0044292a(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_004429c2(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00442a5a(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00442af2(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00442b8a(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00442c22(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00442cba(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e192;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_007bdf16();
  local_c = 0;
  iVar1 = FUN_00467341();
  local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00442da9(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00442e41(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00442ed9(int param_1)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c26b3a;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00443a80(local_20,*(undefined4 *)(param_1 + 4),0);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00442fbf(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00443057(void)

{
  int iVar1;
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e15f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_0047996d(local_34);
  local_c = 0;
  iVar1 = FUN_0046752c();
  local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00443150(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e12c;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0044330b(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_004433a3(void)

{
  int iVar1;
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c28ff2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_28);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00443497(void)

{
  int iVar1;
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c28ff2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_28);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_004435bf(void)

{
  int iVar1;
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c274a0;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_28);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_004436ef(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00443787(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0044381f(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_004438f3(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0044398b(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00443a23(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::WB12EDA64>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00443a69(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_00443a80(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined *local_14;
  
  local_14 = (undefined *)0x0;
  pvVar2 = operator_new(0x20);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    local_14 = &stack0xffffffd8;
    uVar3 = FUN_004674c3(param_2,param_3,param_4);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00443a23();
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != (undefined *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3);
  return param_1;
}



undefined4 * __thiscall FUN_00443b10(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W14E3BFCC::WFA1587ED::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00443b2d(undefined4 *param_1)

{
  *param_1 = W14E3BFCC::WFA1587ED::vftable;
  return;
}



void __fastcall FUN_00443b34(undefined4 *param_1)

{
  *param_1 = W14E3BFCC::WB77945B3::vftable;
  return;
}



void FUN_00443ba1(void)

{
  return;
}



undefined4 __fastcall FUN_00443de1(undefined4 param_1)

{
  byte unaff_retaddr;
  
  FUN_00443e06(param_1);
  if ((unaff_retaddr & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_00443dfe(undefined4 param_1)

{
  FUN_0044613e(param_1);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void FUN_00443e06(undefined4 *param_1)

{
  *param_1 = W5D651E7E::W2942E3A2::vftable;
  FUN_0074ca40();
  FUN_00443e47();
  return;
}



undefined * Catch_All_00443e37(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 7;
  return &DAT_00443e44;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00443e47(void)

{
  int unaff_EBP;
  int unaff_EDI;
  
  *(undefined *)(unaff_EBP + -4) = 6;
  FUN_0044613e();
  *(undefined *)(unaff_EBP + -4) = 5;
  FUN_0044613e();
  *(undefined *)(unaff_EBP + -4) = 4;
  FUN_00507e58();
  *(undefined *)(unaff_EBP + -4) = 3;
  if (*(int *)(unaff_EDI + 0x1d4) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 2;
  FUN_004636a8();
  *(undefined *)(unaff_EBP + -4) = 1;
  if (*(int *)(unaff_EDI + 0x180) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 0;
  FUN_00a19e90();
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00846530();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0044489d(void)

{
  int *piVar1;
  int iVar2;
  int unaff_EDI;
  char local_14;
  
  FUN_0043d406(*(int *)(unaff_EDI + 0x184) + 0x3d8);
  FUN_0074ca40();
  if (local_14 != '\0') {
    FUN_00401477();
  }
  piVar1 = *(int **)(unaff_EDI + 0x184);
  while( true ) {
    iVar2 = (**(code **)(*piVar1 + 0x358))();
    if (iVar2 == 0) break;
    (**(code **)(*piVar1 + 0x378))(0);
  }
  FUN_00a140b0();
  return;
}



undefined4 __fastcall FUN_00444c9f(undefined4 param_1)

{
  FUN_00463759();
  return param_1;
}



undefined4 __fastcall FUN_00444cb0(undefined4 param_1)

{
  FUN_006ad7fd();
  return param_1;
}



undefined4 FUN_00444d4e(undefined4 param_1)

{
  FUN_00451dc7(param_1);
  return param_1;
}



// Library Function - Single Match
//  void __stdcall `vector constructor iterator'(void *,unsigned int,int,void * (__thiscall*)(void
// *))
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release,
// Visual Studio 2019 Release

void _vector_constructor_iterator_
               (void *param_1,uint param_2,int param_3,_func_void_ptr_void_ptr *param_4)

{
  int iVar1;
  void *unaff_ESI;
  
  for (iVar1 = param_3 + -1; -1 < iVar1; iVar1 = iVar1 + -1) {
    (*param_4)(unaff_ESI);
  }
  return;
}



undefined4 __thiscall FUN_00444d9b(undefined4 param_1_00,byte param_1)

{
  FUN_0044613e();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00444db7(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  
  uVar4 = 0;
  *param_1 = boost::signals2::
             signal0<void,class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(void)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&)>,class_boost::signals2::mutex>
             ::vftable;
  pvVar2 = operator_new(0x28);
  if (pvVar2 != (void *)0x0) {
    uVar4 = FUN_0044508d(pvVar2);
  }
  param_1[2] = uVar4;
  param_1[3] = 0;
  puVar3 = (undefined4 *)FUN_00445575(uVar4);
  uVar1 = param_1[3];
  param_1[3] = *puVar3;
  *puVar3 = uVar1;
  if (pvVar2 != (void *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1 + 2,uVar4,uVar4);
  return param_1;
}



void FUN_00444e30(void)

{
  char cVar1;
  uint uVar2;
  undefined4 *unaff_EBX;
  undefined auStack_148 [4];
  LPCRITICAL_SECTION local_144;
  undefined4 uStack_140;
  undefined4 local_138;
  undefined4 local_134;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5fab5;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_148;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffeb0;
  ExceptionList = &local_14;
  local_138 = 0;
  local_134 = 0;
  local_144 = (LPCRITICAL_SECTION)(unaff_EBX + 4);
  local_c = 0;
  EnterCriticalSection(local_144);
  local_c = CONCAT31(local_c._1_3_,1);
  cVar1 = FUN_00439f23(uVar2);
  if (cVar1 != '\0') {
    FUN_00437588(0,1);
  }
  uStack_140 = *unaff_EBX;
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EBX + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0044503b(char *param_1)

{
  FUN_00445066();
  if (*param_1 != '\0') {
    *param_1 = '\0';
  }
  return;
}



void FUN_00445066(void)

{
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0x7c) != 0) {
    if (*(int *)(unaff_ESI + 0x80) != 0) {
      FUN_004452c2();
    }
    if (10 < *(uint *)(unaff_ESI + 0x78)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0x7c));
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int ** FUN_0044508d(int **param_1)

{
  int **ppiVar1;
  int *piVar2;
  int **ppiVar3;
  undefined4 uVar4;
  undefined local_58 [64];
  void *local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  ppiVar3 = param_1;
  uStack_4 = 0x48;
  local_8 = 0x445099;
  local_14 = 0;
  local_18 = operator_new(0x10);
  local_8 = 0;
  if (local_18 != (void *)0x0) {
    uVar4 = FUN_004451d7(local_58,(int)&param_1 + 3);
    local_8 = CONCAT31(local_8._1_3_,1);
    local_14 = 1;
    FUN_00445251(local_18,uVar4);
  }
  local_8 = 2;
  FUN_0043850d(ppiVar3);
  local_8 = 4;
  if ((local_14 & 1) != 0) {
    FUN_00438f79(local_58);
  }
  ppiVar1 = (int **)**ppiVar3;
  piVar2 = ppiVar1[5];
  ppiVar3[2] = (int *)0x0;
  ppiVar3[3] = piVar2;
  ppiVar3[2] = *ppiVar1;
  InitializeCriticalSection((LPCRITICAL_SECTION)(ppiVar3 + 4));
  return ppiVar3;
}



void __fastcall FUN_00445124(int *param_1)

{
  if (*(uint *)(*param_1 + 0x8c) < *(uint *)(*param_1 + 0x90)) {
    FUN_00445142(param_1[2]);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_00445142(int **param_1_00,int param_1)

{
  char cVar1;
  void *pvVar2;
  LPCRITICAL_SECTION lpCriticalSection;
  undefined4 local_20;
  undefined4 local_1c;
  LPCRITICAL_SECTION local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x44514e;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1_00 + 4);
  local_18 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  local_8 = 0;
  if (**param_1_00 == param_1) {
    cVar1 = FUN_00439f23();
    if (cVar1 == '\0') {
      pvVar2 = operator_new(0x10);
      local_8._0_1_ = 1;
      if (pvVar2 != (void *)0x0) {
        FUN_004376af(**param_1_00);
      }
      local_8 = (uint)local_8._1_3_ << 8;
      FUN_00438224();
    }
    local_20 = *(undefined4 *)**param_1_00;
    local_1c = *(undefined4 *)((undefined4 *)**param_1_00)[5];
    FUN_00437498(0,&local_20,0);
    lpCriticalSection = local_18;
  }
  LeaveCriticalSection(lpCriticalSection);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_004451d7(int *param_1,undefined *param_2)

{
  int **ppiVar1;
  int iVar2;
  int *piVar3;
  
  ppiVar1 = (int **)FUN_00418daa(1,0);
  if (ppiVar1 == (int **)0x0) {
    ppiVar1 = (int **)0x0;
  }
  else {
    *ppiVar1 = param_1;
  }
  *param_1 = (int)ppiVar1;
  iVar2 = FUN_006a6d92();
  param_1[5] = iVar2;
  param_1[6] = 0;
  piVar3 = (int *)FUN_00418daa(1,0);
  if (piVar3 == (int *)0x0) {
    piVar3 = (int *)0x0;
  }
  else {
    *piVar3 = (int)(param_1 + 7);
  }
  param_1[7] = (int)piVar3;
  *(undefined *)(param_1 + 9) = param_1._3_1_;
  FUN_007a8e91();
  *(undefined *)(param_1 + 0xf) = *param_2;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_00445251(int param_1,undefined4 param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x40);
  if (pvVar1 != (void *)0x0) {
    FUN_00437756(pvVar1,param_2);
  }
  FUN_00438258(param_1);
  operator_new(1);
  FUN_00445308(param_1 + 8);
  return param_1;
}



void __fastcall FUN_004452c2(int param_1)

{
  int in_EAX;
  uint uVar1;
  uint uVar2;
  
  uVar2 = *(int *)(param_1 + 0x80) * 0xc + -0xc + *(int *)(param_1 + 0x7c);
  uVar1 = uVar2 + in_EAX * -0xc;
  for (; uVar1 < uVar2; uVar2 = uVar2 - 0xc) {
    FUN_0043a2a6();
  }
  return;
}



void __fastcall FUN_004452ee(int param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = (int *)(param_1 + 0x80);
  iVar2 = *piVar1;
  if (iVar2 != 0) {
    FUN_004452c2();
    *piVar1 = *piVar1 - iVar2;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00445308(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_004455cd(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



int * __thiscall FUN_00445355(uint param_1_00,int *param_1)

{
  int iVar1;
  uint uVar2;
  uint *puVar3;
  undefined4 uVar4;
  uint uVar5;
  uint local_c;
  uint local_8;
  
  iVar1 = *param_1;
  uVar2 = *(uint *)(iVar1 + 0x78);
  local_c = param_1_00;
  local_8 = param_1_00;
  if ((*(uint *)(iVar1 + 0x80) == uVar2) && (uVar5 = *(uint *)(iVar1 + 0x80) + 1, uVar2 < uVar5)) {
    local_c = uVar2 << 2;
    local_8 = uVar5;
    puVar3 = &local_8;
    if (uVar5 <= uVar2 << 2) {
      puVar3 = &local_c;
    }
    uVar2 = *puVar3;
    uVar4 = FUN_004453e9(uVar2);
    FUN_00445066();
    *(undefined4 *)(iVar1 + 0x7c) = uVar4;
    *(uint *)(iVar1 + 0x78) = uVar2;
  }
  FUN_004453af(iVar1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_004453af(int param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c31b58;
  if (*(int *)(param_1 + 0x80) * 0xc + *(int *)(param_1 + 0x7c) != 0) {
    puVar1 = (undefined *)FUN_00445844();
  }
  *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_004453e9(uint param_1)

{
  int iVar1;
  int unaff_ESI;
  undefined local_24 [28];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x4453f5;
  iVar1 = unaff_ESI;
  if (10 < param_1) {
    iVar1 = FUN_0044577a();
  }
  FUN_004454cb(iVar1,param_1);
  local_8 = 0;
  param_1 = param_1 & 0xffffff00;
  FUN_00445716(*(int *)(unaff_ESI + 0x80) * 0xc + *(int *)(unaff_ESI + 0x7c),iVar1,param_1,param_1);
  local_8 = 0xffffffff;
  local_24[0] = 1;
  FUN_004454e7(local_24);
  return iVar1;
}



void FUN_0044545a(undefined4 param_1)

{
  FUN_004454e7(param_1);
  return;
}



undefined * Catch_004454b9(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  return &UNK_0044549d;
}



void __thiscall FUN_004454cb(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined *in_EAX;
  
  *(undefined4 *)(in_EAX + 4) = param_1_00;
  *(undefined4 *)(in_EAX + 0xc) = param_1;
  *in_EAX = 0;
  *(undefined **)(in_EAX + 8) = &LAB_004452ae;
  *(undefined4 *)(in_EAX + 0x10) = param_2;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004454e7(char *param_1)

{
  if (*param_1 == '\0') {
    (**(code **)(param_1 + 8))(*(undefined4 *)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x10));
  }
  return;
}



undefined4 Catch_All_00445511(void)

{
  return 0x44550b;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00445517(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5D651E7E::W2942E3A2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044555d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int **)(unaff_EBP + 8) != (int *)0x0) {
    (**(code **)(**(int **)(unaff_EBP + 8) + 4))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00445575(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::signal0_impl<void,class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(void)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&)>,class_boost::signals2::mutex>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004455bb(void)

{
  code *pcVar1;
  
  FUN_007a79c0();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004455cd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_boost::signals2::optional_last_value<void>_>::
              vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00445613(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void Catch_00445668(void)

{
  int *piVar1;
  code *pcVar2;
  int **ppiVar3;
  
  ppiVar3 = (int **)FUN_006adbc2();
  piVar1 = *ppiVar3;
  (**(code **)(*piVar1 + 8))();
  *(undefined *)(piVar1 + 1) = 0;
  (**(code **)(*piVar1 + 0xc))();
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



undefined4 FUN_0044568d(void)

{
  return 0;
}



void FUN_00445690(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_004456c9(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W5D651E7E::W2942E3A2>,class_boost::_bi::list1<class_boost::_bi::value<class_W5D651E7E::W2942E3A2*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_004456c9(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W5D651E7E::W2942E3A2>,class_boost::_bi::list1<class_boost::_bi::value<class_W5D651E7E::W2942E3A2*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W5D651E7E::W2942E3A2>,class_boost::_bi::list1<class_boost::_bi::value<class_W5D651E7E::W2942E3A2*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00445716(int param_1_00,int param_1,int param_2)

{
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0xc) {
    if (param_2 != 0) {
      FUN_00445844();
    }
    param_2 = param_2 + 0xc;
  }
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int Catch_All_00445755(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0xc); iVar1 = iVar1 + 0xc)
  {
    FUN_0043a2a6();
  }
  __CxxThrowException_8(0,0);
  return iVar1;
}



void __fastcall FUN_0044577a(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 0xc) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 * 0xc);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_004457c4(undefined4 param_1,int *param_2)

{
  int iVar1;
  
  iVar1 = *param_2;
  if (iVar1 < 0) {
    iVar1 = -1 - iVar1;
  }
                    // WARNING: Could not recover jumptable at 0x004457e5. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(&DAT_0044583c + iVar1 * 4))();
  return;
}



void FUN_00445844(void)

{
  int iVar1;
  int *unaff_ESI;
  int *unaff_EDI;
  int *local_8;
  
  local_8 = unaff_ESI + 1;
  FUN_004457c4(&local_8);
  iVar1 = *unaff_EDI;
  if (iVar1 < 0) {
    iVar1 = -1 - iVar1;
  }
  *unaff_ESI = iVar1;
  return;
}



undefined4 FUN_0044586e(void)

{
  int in_EAX;
  int iVar1;
  
  if (*(char *)(in_EAX + 4) != '\0') {
    if (*(int *)(in_EAX + 0xc) == 0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *(int *)(*(int *)(in_EAX + 0xc) + 4);
    }
    if (iVar1 == 0) {
      return 0;
    }
  }
  return 1;
}



void FUN_0044588b(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  FUN_00446315(param_1,0xffffffff,param_2,param_3,param_4,param_5,param_6);
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_004458ab(undefined4 param_1)

{
  char cVar1;
  undefined local_c8 [88];
  uint local_70;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb8;
  local_8 = 0x4458ba;
  FUN_00445a53(param_1);
  local_8 = 0;
  local_70 = local_70 | 0x2007fc;
  cVar1 = FUN_00a14d60();
  if (cVar1 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/aui/framemanager.h",0x14f,
                   "wxAuiPaneInfo::DefaultPane","test.IsValid()",
                   "window settings and pane settings are incompatible");
    }
  }
  else {
    FUN_00445bf6(local_c8);
  }
  local_8 = 0xffffffff;
  FUN_00445bb2();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __fastcall
FUN_00445933(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1)

{
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            (param_1 + 0x24);
  *(undefined4 *)(param_1 + 0x40) = 0;
  *(undefined4 *)(param_1 + 0x4c) = 0;
  *(undefined ***)(param_1 + 0x48) = wxBitmap::vftable;
  *(undefined4 *)(param_1 + 0x6c) = 0;
  *(undefined4 *)(param_1 + 0x70) = 0;
  *(undefined4 *)(param_1 + 0x74) = 0;
  *(undefined4 *)(param_1 + 0x78) = 0;
  *(undefined4 *)(param_1 + 0x7c) = 0;
  *(undefined4 *)(param_1 + 0x80) = 0;
  *(undefined4 *)(param_1 + 0x84) = 0;
  *(undefined4 *)(param_1 + 0x88) = 0;
  *(undefined4 *)(param_1 + 0x8c) = 0;
  *(undefined4 *)(param_1 + 0x90) = 0;
  FUN_0086a600();
  *(undefined4 *)(param_1 + 0xa4) = 0;
  *(undefined4 *)(param_1 + 0xa8) = 0;
  *(undefined4 *)(param_1 + 0xac) = 0;
  *(undefined4 *)(param_1 + 0xb0) = 0;
  *(undefined4 *)(param_1 + 0x50) = 0;
  *(undefined4 *)(param_1 + 0x54) = 0;
  *(undefined4 *)(param_1 + 0x58) = 0;
  *(undefined4 *)(param_1 + 0x5c) = 4;
  *(undefined4 *)(param_1 + 0x60) = 0;
  *(undefined4 *)(param_1 + 100) = 0;
  *(undefined4 *)(param_1 + 0x68) = 0;
  *(undefined4 *)(param_1 + 0x84) = DAT_03238d0c;
  *(undefined4 *)(param_1 + 0x88) = DAT_03238d10;
  *(undefined4 *)(param_1 + 0x8c) = DAT_03238d04;
  *(undefined4 *)(param_1 + 0x90) = DAT_03238d08;
  *(undefined4 *)(param_1 + 0x6c) = DAT_03238d04;
  *(undefined4 *)(param_1 + 0x70) = DAT_03238d08;
  *(undefined4 *)(param_1 + 0x74) = DAT_03238d04;
  *(undefined4 *)(param_1 + 0x78) = DAT_03238d08;
  *(undefined4 *)(param_1 + 0x7c) = DAT_03238d04;
  *(undefined4 *)(param_1 + 0x80) = DAT_03238d08;
  *(undefined4 *)(param_1 + 0x94) = 0;
  FUN_004458ab();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __thiscall
FUN_00445a53(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,int param_1)

{
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1_00);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            (param_1_00 + 0x24);
  *(undefined4 *)(param_1_00 + 0x40) = 0;
  *(undefined4 *)(param_1_00 + 0x4c) = 0;
  *(undefined ***)(param_1_00 + 0x48) = wxBitmap::vftable;
  *(undefined4 *)(param_1_00 + 0x6c) = 0;
  *(undefined4 *)(param_1_00 + 0x70) = 0;
  *(undefined4 *)(param_1_00 + 0x74) = 0;
  *(undefined4 *)(param_1_00 + 0x78) = 0;
  *(undefined4 *)(param_1_00 + 0x7c) = 0;
  *(undefined4 *)(param_1_00 + 0x80) = 0;
  *(undefined4 *)(param_1_00 + 0x84) = 0;
  *(undefined4 *)(param_1_00 + 0x88) = 0;
  *(undefined4 *)(param_1_00 + 0x8c) = 0;
  *(undefined4 *)(param_1_00 + 0x90) = 0;
  FUN_0086a600();
  *(undefined4 *)(param_1_00 + 0xa4) = 0;
  *(undefined4 *)(param_1_00 + 0xa8) = 0;
  *(undefined4 *)(param_1_00 + 0xac) = 0;
  *(undefined4 *)(param_1_00 + 0xb0) = 0;
  FUN_0043261a(param_1);
  FUN_0043261a(param_1 + 0x24);
  FUN_0043d987(param_1 + 0x48);
  *(undefined4 *)(param_1_00 + 0x50) = *(undefined4 *)(param_1 + 0x50);
  *(undefined4 *)(param_1_00 + 0x54) = *(undefined4 *)(param_1 + 0x54);
  *(undefined4 *)(param_1_00 + 0x58) = *(undefined4 *)(param_1 + 0x58);
  *(undefined4 *)(param_1_00 + 0x5c) = *(undefined4 *)(param_1 + 0x5c);
  *(undefined4 *)(param_1_00 + 0x60) = *(undefined4 *)(param_1 + 0x60);
  *(undefined4 *)(param_1_00 + 100) = *(undefined4 *)(param_1 + 100);
  *(undefined4 *)(param_1_00 + 0x68) = *(undefined4 *)(param_1 + 0x68);
  *(undefined4 *)(param_1_00 + 0x6c) = *(undefined4 *)(param_1 + 0x6c);
  *(undefined4 *)(param_1_00 + 0x70) = *(undefined4 *)(param_1 + 0x70);
  *(undefined4 *)(param_1_00 + 0x74) = *(undefined4 *)(param_1 + 0x74);
  *(undefined4 *)(param_1_00 + 0x78) = *(undefined4 *)(param_1 + 0x78);
  *(undefined4 *)(param_1_00 + 0x7c) = *(undefined4 *)(param_1 + 0x7c);
  *(undefined4 *)(param_1_00 + 0x80) = *(undefined4 *)(param_1 + 0x80);
  *(undefined4 *)(param_1_00 + 0x84) = *(undefined4 *)(param_1 + 0x84);
  *(undefined4 *)(param_1_00 + 0x88) = *(undefined4 *)(param_1 + 0x88);
  *(undefined4 *)(param_1_00 + 0x8c) = *(undefined4 *)(param_1 + 0x8c);
  *(undefined4 *)(param_1_00 + 0x90) = *(undefined4 *)(param_1 + 0x90);
  *(undefined4 *)(param_1_00 + 0x94) = *(undefined4 *)(param_1 + 0x94);
  FUN_00a18760(param_1 + 0x98);
  *(undefined4 *)(param_1_00 + 0xa4) = *(undefined4 *)(param_1 + 0xa4);
  *(undefined4 *)(param_1_00 + 0xa8) = *(undefined4 *)(param_1 + 0xa8);
  *(undefined4 *)(param_1_00 + 0xac) = *(undefined4 *)(param_1 + 0xac);
  *(undefined4 *)(param_1_00 + 0xb0) = *(undefined4 *)(param_1 + 0xb0);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00445bb2(void)

{
  FUN_00a15c90();
  FUN_008f7630();
  FUN_0040159c();
  FUN_0040159c();
  return;
}



int __thiscall FUN_00445bf6(int param_1_00,int param_1)

{
  FUN_0043261a(param_1);
  FUN_0043261a(param_1 + 0x24);
  *(undefined4 *)(param_1_00 + 0x50) = *(undefined4 *)(param_1 + 0x50);
  *(undefined4 *)(param_1_00 + 0x54) = *(undefined4 *)(param_1 + 0x54);
  *(undefined4 *)(param_1_00 + 0x58) = *(undefined4 *)(param_1 + 0x58);
  *(undefined4 *)(param_1_00 + 0x5c) = *(undefined4 *)(param_1 + 0x5c);
  *(undefined4 *)(param_1_00 + 0x60) = *(undefined4 *)(param_1 + 0x60);
  *(undefined4 *)(param_1_00 + 100) = *(undefined4 *)(param_1 + 100);
  *(undefined4 *)(param_1_00 + 0x68) = *(undefined4 *)(param_1 + 0x68);
  *(undefined4 *)(param_1_00 + 0x6c) = *(undefined4 *)(param_1 + 0x6c);
  *(undefined4 *)(param_1_00 + 0x70) = *(undefined4 *)(param_1 + 0x70);
  *(undefined4 *)(param_1_00 + 0x74) = *(undefined4 *)(param_1 + 0x74);
  *(undefined4 *)(param_1_00 + 0x78) = *(undefined4 *)(param_1 + 0x78);
  *(undefined4 *)(param_1_00 + 0x7c) = *(undefined4 *)(param_1 + 0x7c);
  *(undefined4 *)(param_1_00 + 0x80) = *(undefined4 *)(param_1 + 0x80);
  *(undefined4 *)(param_1_00 + 0x84) = *(undefined4 *)(param_1 + 0x84);
  *(undefined4 *)(param_1_00 + 0x88) = *(undefined4 *)(param_1 + 0x88);
  *(undefined4 *)(param_1_00 + 0x8c) = *(undefined4 *)(param_1 + 0x8c);
  *(undefined4 *)(param_1_00 + 0x90) = *(undefined4 *)(param_1 + 0x90);
  *(undefined4 *)(param_1_00 + 0x94) = *(undefined4 *)(param_1 + 0x94);
  FUN_00a18760(param_1 + 0x98);
  *(undefined4 *)(param_1_00 + 0xa4) = *(undefined4 *)(param_1 + 0xa4);
  *(undefined4 *)(param_1_00 + 0xa8) = *(undefined4 *)(param_1 + 0xa8);
  *(undefined4 *)(param_1_00 + 0xac) = *(undefined4 *)(param_1 + 0xac);
  *(undefined4 *)(param_1_00 + 0xb0) = *(undefined4 *)(param_1 + 0xb0);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_00445ccb(undefined4 param_1_00,uint param_1,char param_2)

{
  char cVar1;
  undefined local_c8 [88];
  uint local_70;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb8;
  local_8 = 0x445cda;
  FUN_00445a53(param_1_00);
  local_8 = 0;
  if (param_2 == '\0') {
    local_70 = local_70 & ~param_1;
  }
  else {
    local_70 = local_70 | param_1;
  }
  cVar1 = FUN_00a14d60();
  if (cVar1 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/aui/framemanager.h",0x16d,
                   "wxAuiPaneInfo::SetFlag","test.IsValid()",
                   "window settings and pane settings are incompatible");
    }
  }
  else {
    FUN_00445bf6(local_c8);
  }
  local_8 = 0xffffffff;
  FUN_00445bb2();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_00445d61(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  void *pvVar1;
  undefined4 uVar2;
  
  pvVar1 = operator_new(0x48);
  uVar2 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00930190(param_1,param_2,param_3,param_4,param_5);
  }
  (**(code **)(*param_1_00 + 0x14))(param_1_00[0xc],uVar2);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_00445db1(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  void *pvVar1;
  undefined4 uVar2;
  
  pvVar1 = operator_new(0x48);
  uVar2 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009303b0(param_1,param_2,param_3,param_4,param_5,param_6);
  }
  (**(code **)(*param_1_00 + 0x14))(param_1_00[0xc],uVar2);
  return;
}



void FUN_00445e04(undefined4 param_1)

{
  FUN_00445db1(param_1,param_1,0,0,0,0);
  return;
}



undefined4 * __thiscall FUN_00445e1a(undefined4 *param_1_00,undefined4 param_1)

{
  *param_1_00 = wxListBase::vftable;
  FUN_0086ad40(param_1);
  return param_1_00;
}



undefined4 * __thiscall
FUN_00445e32(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  FUN_0086b5c0(param_1,param_2,param_3,param_4,param_5);
  *param_1_00 = wxwxSizerItemListNode::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_00445e59(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x18);
  if (pvVar1 != (void *)0x0) {
    FUN_00445e32(param_1_00,param_1,param_2,param_3,param_4);
  }
  return;
}



int __thiscall thunk_FUN_0086b200(int param_1_00,int *param_1)

{
  int iVar1;
  char cVar2;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x14) != *param_1)) {
    FUN_00840480("..\\..\\src\\common\\list.cpp",0x146,"wxListBase::Find",
                 "m_keyType == key.GetKeyType()",L"this list is not keyed on the type of this key");
  }
  iVar1 = *(int *)(param_1_00 + 0xc);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    cVar2 = FUN_0086b190(*(undefined4 *)(iVar1 + 4));
    if (cVar2 != '\0') break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  return iVar1;
}



undefined4 * __thiscall FUN_00445e9c(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00445e1a(param_1);
  *param_1_00 = wxSizerItemList::vftable;
  return param_1_00;
}



void __fastcall thunk_FUN_0086ade0(undefined4 *param_1)

{
  int *piVar1;
  int *piVar2;
  
  *param_1 = wxListBase::vftable;
  piVar2 = (int *)param_1[3];
  while (piVar2 != (int *)0x0) {
    piVar1 = (int *)piVar2[3];
    if (param_1[5] == 2) {
      _free((void *)piVar2[1]);
    }
    if (*(char *)(param_1 + 2) != '\0') {
      (**(code **)(*piVar2 + 4))();
    }
    piVar2[5] = 0;
    (**(code **)*piVar2)(1);
    piVar2 = piVar1;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00445eb9(undefined4 *param_1)

{
  *param_1 = wxObject::vftable;
  param_1[1] = 0;
  FUN_0086ab10();
  *param_1 = wxSizer::vftable;
  param_1[2] = wxSizer::vftable;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  FUN_00445e9c(0);
  param_1[0x11] = 0;
  return param_1;
}



void __fastcall FUN_00445f18(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x00445f1a. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 100))();
  return;
}



undefined4 __thiscall FUN_00445f1d(undefined4 param_1_00,byte param_1)

{
  FUN_00930be0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall thunk_FUN_00930be0(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  pvStack_c = ExceptionList;
  puStack_8 = &LAB_00bd8f2e;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &pvStack_c;
  *param_1 = wxSizer::vftable;
  param_1[2] = wxSizer::vftable;
  iVar1 = param_1[0xe];
  uStack_4 = 2;
  for (; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if (*(int **)(iVar1 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar1 + 8) + 4))(1,uVar2);
    }
  }
  FUN_0086b130();
  uStack_4._0_1_ = 1;
  FUN_0086ade0();
  uStack_4 = (uint)uStack_4._1_3_ << 8;
  FUN_0086ab30();
  uStack_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_c;
  return;
}



void FUN_00445f3e(void)

{
  FUN_00445f1d();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00445f46(undefined4 *param_1_00,int param_1)

{
  FUN_00445eb9();
  *param_1_00 = wxBoxSizer::vftable;
  param_1_00[2] = wxBoxSizer::vftable;
  param_1_00[0x14] = 0;
  param_1_00[0x15] = 0;
  param_1_00[0x12] = param_1;
  param_1_00[0x13] = 0;
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 != 4)) && (param_1 != 8)) {
    FUN_00840480("D:\\wxWidgets-2.9.3\\include\\wx/sizer.h",0x39d,"wxBoxSizer::wxBoxSizer",
                 "m_orient == wxHORIZONTAL || m_orient == wxVERTICAL",
                 L"invalid value for wxBoxSizer orientation");
  }
  return param_1_00;
}



int __thiscall FUN_00445fba(int param_1_00,byte param_1)

{
  *(undefined ***)(param_1_00 + 0x164) = wxControlContainerBase::vftable;
  FUN_009150e0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00445fe0(int param_1)

{
  *(undefined ***)(param_1 + 0x164) = wxControlContainerBase::vftable;
  FUN_009150e0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00445fef(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  FUN_00446386();
  *param_1_00 = wxPanel::vftable;
  FUN_0092fcc0(param_1,param_2,param_3,param_4,param_5,param_6);
  return param_1_00;
}



undefined4 * __thiscall FUN_00446032(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::signals2::signal_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0044604f(undefined4 *param_1)

{
  *param_1 = boost::signals2::signal_base::vftable;
  return;
}



void FUN_00446056(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_EDI;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(in_EAX + 4));
  *unaff_EDI = *in_EAX;
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 1);
}



void FUN_00446080(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int **ppiVar5;
  int **local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00446056(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  local_c = 0;
  iVar1 = *(int *)(*local_20)[5];
  iVar2 = **local_20;
  while( true ) {
    iVar3 = (*local_20)[5];
    if ((iVar2 == 0) || (iVar2 != **local_20)) {
      FUN_00a3fb10();
    }
    if (iVar1 == iVar3) break;
    ppiVar5 = (int **)FUN_006adbc2();
    piVar4 = *ppiVar5;
    (**(code **)(*piVar4 + 8))();
    *(undefined *)(piVar4 + 1) = 0;
    (**(code **)(*piVar4 + 0xc))();
    FUN_007a741a();
  }
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0044613e(undefined4 *param_1)

{
  *param_1 = boost::signals2::
             signal0<void,class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(void)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&)>,class_boost::signals2::mutex>
             ::vftable;
  FUN_00446080(param_1[2]);
  if (param_1[3] != 0) {
    FUN_0040127a();
  }
  *param_1 = boost::signals2::signal_base::vftable;
  return;
}



void FUN_00446190(void)

{
  char cVar1;
  
  cVar1 = FUN_009237b0();
  if (cVar1 == '\0') {
    FUN_00915300();
    return;
  }
  return;
}



void FUN_004461ce(undefined4 param_1)

{
  FUN_00922de0(param_1);
  FUN_0091bc20(param_1);
  FUN_0043d79e();
  return;
}



undefined4 * __thiscall FUN_004461fa(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxControlContainerBase::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00446217(undefined4 *param_1)

{
  *param_1 = wxControlContainerBase::vftable;
  return;
}



void __thiscall FUN_0044621e(int param_1_00,undefined4 param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 4) != 0)) {
    FUN_00840480("D:\\wxWidgets-2.9.3\\include\\wx/containr.h",0x37,
                 "wxControlContainerBase::SetContainerWindow","!m_winParent",
                 L"shouldn\'t be called twice");
  }
  *(undefined4 *)(param_1_00 + 4) = param_1;
  return;
}



void __fastcall thunk_FUN_00845630(undefined4 *param_1)

{
  *param_1 = wxEventFunctor::vftable;
  return;
}



void __thiscall FUN_00446274(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  (**(code **)(param_1_00 + 8))(param_2);
  return;
}



undefined4 __thiscall FUN_00446292(int param_1_00,int param_1)

{
  bool bVar1;
  type_info *ptVar2;
  type_info *this;
  undefined4 uVar3;
  
  ptVar2 = (type_info *)___RTtypeid(param_1_00);
  this = (type_info *)___RTtypeid(param_1);
  bVar1 = type_info::operator==(this,ptVar2);
  if (bVar1) {
    if ((((*(int *)(param_1_00 + 8) == *(int *)(param_1 + 8)) &&
         ((*(int *)(param_1_00 + 8) == 0 || (*(int *)(param_1_00 + 0xc) == *(int *)(param_1 + 0xc)))
         )) || (*(int *)(param_1 + 8) == 0)) &&
       ((*(int *)(param_1_00 + 4) == *(int *)(param_1 + 4) || (*(int *)(param_1 + 4) == 0)))) {
      uVar3 = 1;
    }
    else {
      uVar3 = 0;
    }
  }
  else {
    uVar3 = 0;
  }
  return uVar3;
}



undefined4 *
FUN_004462ea(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxObjectEventFunctor::vftable;
    puVar1[1] = param_4;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    return puVar1;
  }
  return (undefined4 *)0x0;
}



void __thiscall
FUN_00446315(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar2 = param_6;
  uVar1 = FUN_004462ea(&param_3,param_4,param_5,param_7,param_1_00,param_6);
  FUN_008461a0(param_1,param_2,param_3,uVar1,uVar2);
  return;
}



void FUN_0044634a(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  FUN_00446315(0xffffffff,0xffffffff,param_1,param_2,param_3,param_4,param_5);
  return;
}



void FUN_0044636b(int param_1)

{
  FUN_00923970(*(undefined4 *)(param_1 + 8));
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00446386(undefined4 *param_1)

{
  FUN_00446436();
  *param_1 = wxNavigationEnabled<class_wxWindow>::vftable;
  FUN_00922e80();
  FUN_0044621e(param_1);
  FUN_0044634a(DAT_032bfe6c,&LAB_00446259,0,0,0);
  FUN_0044634a(DAT_032bfe38,&LAB_00446264,0,0,0);
  FUN_0044634a(DAT_032bfe40,FUN_0044636b,0,0,0);
  return param_1;
}



undefined4 __thiscall FUN_00446410(undefined4 param_1_00,byte param_1)

{
  FUN_009150e0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00446436(undefined4 *param_1)

{
  FUN_0091ee00();
  *param_1 = wxWindow::vftable;
  param_1[0x55] = 0;
  param_1[0x56] = 0;
  param_1[0x57] = 0;
  param_1[0x58] = 0;
  FUN_0090d6e0();
  return param_1;
}



void __fastcall FUN_0044647c(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x0044647e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x10c))();
  return;
}



void __fastcall FUN_004465ba(int **param_1)

{
  if (*param_1 != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x004465c2. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**param_1 + 0x14))();
    return;
  }
  return;
}



undefined4 __thiscall FUN_004468c7(undefined4 param_1_00,byte param_1)

{
  FUN_004468e3();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004468e3(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_28 [3];
  char local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  *param_1 = W5D651E7E::WB910D23D::vftable;
  local_8._0_1_ = 9;
  local_8._1_3_ = 0;
  local_18 = param_1;
  FUN_0043d406(param_1 + 9);
  local_8._0_1_ = 10;
  FUN_007d4af6();
  local_8._0_1_ = 9;
  if (local_1c != '\0') {
    FUN_00401477();
  }
  FUN_0043d406(param_1 + 5);
  local_8._0_1_ = 0xb;
  if (local_28 != param_1 + 7) {
    param_1[7] = 0;
  }
  iVar1 = param_1[8];
  param_1[8] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 9;
  if (local_1c != '\0') {
    FUN_00401477();
  }
  if (*(char *)(param_1 + 0x1c) != '\0') {
    *(undefined *)(param_1 + 0x1c) = 0;
  }
  local_8._0_1_ = 7;
  if (param_1[0x19] != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  local_8._0_1_ = 5;
  if (param_1[0x14] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 4;
  FUN_007d4ace(param_1 + 0xb);
  FUN_00417fe6();
  local_8._0_1_ = 2;
  if (param_1[8] != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  local_8 = (uint)local_8._1_3_ << 8;
  if (param_1[4] != 0) {
    FUN_0040127a();
  }
  return;
}



void Catch_All_004469da(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0044700c(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *puVar3;
  char local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x447018;
  FUN_0043d406(param_1_00 + 0x24);
  local_8 = 0;
  puVar1 = (undefined4 *)(param_1_00 + 0x2c);
  FUN_00674114(&param_1);
  local_1c = *(undefined4 *)(param_1_00 + 0x44);
  local_20 = *puVar1;
  puVar3 = &local_18;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (param_1 < *(uint *)(local_14 + 0xc))) {
    local_24 = *(undefined4 *)(param_1_00 + 0x44);
    local_28 = *puVar1;
    puVar3 = &local_28;
  }
  local_20 = *puVar3;
  local_1c = puVar3[1];
  local_2c = *(undefined4 *)(param_1_00 + 0x44);
  local_30 = *puVar1;
  param_1 = puVar3;
  cVar2 = FUN_006b8eca();
  if (cVar2 == '\0') {
    FUN_006badde();
    FUN_0048dadb();
    FUN_007d4f0e(puVar1,&local_30,*param_1,param_1[1]);
  }
  local_8 = 0xffffffff;
  if (local_34 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004470d3(int param_1)

{
  char cVar1;
  char local_28;
  
  FUN_0043d406(param_1 + 0x24);
  while( true ) {
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') break;
    FUN_006badde();
    FUN_0048dadb();
    FUN_00448b61();
  }
  FUN_007d4af6();
  if (local_28 != '\0') {
    FUN_00401477();
  }
  return;
}



void FUN_00447248(undefined4 param_1)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *local_1ec;
  undefined *puStack_1e8;
  uint uStack_1e4;
  undefined auStack_1d4 [7];
  undefined local_1cd;
  undefined4 **local_1cc;
  undefined4 local_1c4;
  undefined4 local_1c0;
  int local_1bc;
  undefined local_1b8 [96];
  undefined **local_158;
  undefined local_154 [312];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4acd5;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_1d4;
  uStack_1e4 = DAT_0323f878 ^ (uint)&stack0xfffffe20;
  ExceptionList = &local_14;
  local_1c4 = 0;
  puStack_1e8 = (undefined *)0x4472a0;
  FUN_00467993();
  puStack_1e8 = local_154;
  local_c = 0;
  local_158 = W515EA149::W818B7449::vftable;
  local_1ec = (undefined4 *)0x4472bf;
  FUN_004382a5();
  local_1c0 = 0;
  local_1bc = 0;
  puStack_1e8 = (undefined *)param_1;
  local_1ec = &local_1c0;
  local_c._0_1_ = 2;
  cVar1 = FUN_0044206a(&local_158);
  if (cVar1 == '\0') {
    local_c._0_1_ = 1;
    if (local_1bc != 0) {
      puStack_1e8 = (undefined *)0x4477ca;
      FUN_0040127a();
    }
    local_c = (uint)local_c._1_3_ << 8;
    puStack_1e8 = (undefined *)0x4477de;
    FUN_0049a6ab();
    puStack_1e8 = (undefined *)0x4477ea;
    FUN_004679c2();
    ExceptionList = local_14;
    ___security_check_cookie_4();
    return;
  }
  puStack_1e8 = local_1b8;
  local_1cd = 0;
  local_1ec = (undefined4 *)0x44730d;
  puVar2 = (undefined4 *)FUN_0043d4a9();
  local_1cc = &local_1ec;
  local_c = CONCAT31(local_c._1_3_,3);
  local_1ec = (undefined4 *)*puVar2;
  local_1c4 = 1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0044793c(void)

{
  char cVar1;
  int param_4;
  undefined **local_7c [23];
  undefined4 local_20;
  int local_1c;
  undefined4 local_18;
  undefined local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x11c;
  local_18 = 0;
  local_8 = 0;
  FUN_00467993();
  local_8._0_1_ = 1;
  local_11 = 0;
  FUN_004497c4();
  local_8._0_1_ = 2;
  FUN_00467c1e();
  local_8._0_1_ = 1;
  FUN_00401829();
  local_7c[0] = W515EA149::W818B7449::vftable;
  FUN_004382a5();
  local_20 = 0;
  local_1c = 0;
  local_8._0_1_ = 4;
  cVar1 = FUN_0044206a(local_7c);
  if (cVar1 != '\0') {
                    // WARNING: Subroutine does not return
    FUN_0043c023(&stack0x00000010);
  }
  local_8._0_1_ = 3;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_0049a6ab();
  FUN_004679c2();
  local_8 = 0xffffffff;
  if (param_4 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_00447c41(int param_1,undefined4 param_2,int param_3)

{
  undefined *puVar1;
  int iVar2;
  undefined local_1c [20];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  puVar1 = &LAB_00c4ab8b;
  local_8 = 0;
  if (*(int *)(param_1 + 0x14) != 0) {
    iVar2 = FUN_00465be3(local_1c);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar2 + 4);
  }
  local_8 = 0xffffffff;
  if (param_3 != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  return puVar1;
}



void FUN_00447d0d(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0x14) != 0) {
    uVar1 = FUN_00432c6c();
    basic_string<>(uVar1);
    FUN_00447e4a();
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00447e4a(undefined4 param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *lpFile;
  int param_6;
  uint param_7;
  undefined4 local_54;
  undefined4 local_50;
  undefined local_4c [20];
  undefined4 local_38;
  undefined4 ***local_2c [5];
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x60;
  local_8 = 0;
  if (param_6 != 0) {
    FUN_0044960b();
    local_8._0_1_ = 1;
    iVar1 = FUN_00420df9(local_4c,0);
    if (iVar1 == 0) {
      FID_conflict_erase(0,local_38);
      uVar2 = basic_string<>(&DAT_00fab504,8);
      local_8 = CONCAT31(local_8._1_3_,2);
      local_54 = 0xab251a1;
      local_50 = 0x56b6cbde;
    }
    else {
      uVar2 = basic_string<>(&DAT_00fab518,5);
      local_8 = CONCAT31(local_8._1_3_,3);
      local_54 = 0x52d776c0;
      local_50 = 0x5c4f9418;
    }
    FUN_00b94470(&local_54,uVar2);
    FUN_00401829(1,0);
    lpFile = param_2;
    if (param_7 < 8) {
      lpFile = &param_2;
    }
    if (local_18 < 8) {
      local_2c[0] = local_2c;
    }
    ShellExecuteW((HWND)0x0,(LPCWSTR)local_2c[0],(LPCWSTR)lpFile,(LPCWSTR)0x0,(LPCWSTR)0x0,1);
    FUN_00401829(1,0);
    FUN_00401829(1,0);
  }
  FUN_00401829(1,0);
  FUN_00a421fb();
  return;
}



void FUN_00447f37(void)

{
  uint uVar1;
  undefined4 uVar2;
  char *pcVar3;
  int unaff_ESI;
  undefined4 unaff_EDI;
  undefined local_20 [4];
  char local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c4175d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_20;
  ExceptionList = &local_14;
  FUN_0043d406(unaff_ESI + 0x54);
  *(undefined4 *)(unaff_ESI + 0x5c) = unaff_EDI;
  if (local_1c != '\0') {
    FUN_00401477(uVar1);
  }
  uVar2 = (**(code **)(**(int **)(unaff_ESI + 0xc) + 4))();
  FUN_0043d406(uVar2);
  uStack_c = 0;
  pcVar3 = (char *)(**(code **)(**(int **)(unaff_ESI + 0xc) + 0x10))();
  if (*pcVar3 == '\0') {
    if ((undefined4 *)(pcVar3 + 4) != (undefined4 *)0x0) {
      *(undefined4 *)(pcVar3 + 4) = unaff_EDI;
    }
    *pcVar3 = '\x01';
  }
  else {
    *(undefined4 *)(pcVar3 + 4) = unaff_EDI;
  }
  uStack_c = 0xffffffff;
  if (local_1c != '\0') {
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_00447fda(int param_1_00,int param_1)

{
  int *piVar1;
  undefined4 uVar2;
  int **ppiVar3;
  char cStack_50;
  int iStack_4c;
  int iStack_48;
  char cStack_40;
  int iStack_38;
  void *local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  uStack_10 = &LAB_00c48331;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if (*(int *)(param_1 + 0x14) != 0) {
    (**(code **)(**(int **)(param_1_00 + 0xc) + 4))();
    FUN_0043d406();
    uStack_c = 0;
    ppiVar3 = (int **)(**(code **)(**(int **)(param_1_00 + 0xc) + 8))();
    uStack_10._0_1_ = 1;
    piVar1 = *ppiVar3;
    basic_string<>(param_1);
    FUN_0041b9cf();
    uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,2);
    (**(code **)(*piVar1 + 8))();
    FUN_00401829();
    uStack_c = CONCAT31(uStack_c._1_3_,5);
    if (iStack_38 != 0) {
      FUN_0040127a();
    }
    if (iStack_4c != 0) {
      FUN_0043d406();
      uVar2 = *(undefined4 *)(param_1_00 + 0x5c);
      if (cStack_50 != '\0') {
        FUN_00401477();
      }
      if (*(char *)(iStack_4c + 0x234) == '\0') {
        if ((undefined4 *)(iStack_4c + 0x238) != (undefined4 *)0x0) {
          *(undefined4 *)(iStack_4c + 0x238) = uVar2;
        }
        *(char *)(iStack_4c + 0x234) = '\x01';
      }
      else {
        *(undefined4 *)(iStack_4c + 0x238) = uVar2;
      }
      *(undefined4 *)(iStack_4c + 0x248) = 1;
      FUN_0044953d();
    }
    uStack_c = uStack_c & 0xffffff00;
    if (iStack_48 != 0) {
      FUN_0040127a();
    }
    uStack_c = 0xffffffff;
    if (cStack_40 != '\0') {
      FUN_00401477();
    }
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00448127(undefined4 param_1,undefined4 param_2)

{
  undefined local_34 [28];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x448133;
  basic_string<>(param_2);
  local_18 = 0;
  local_8 = 0;
  FUN_00933170(local_34,0);
  FUN_0040159c();
  return;
}



undefined __fastcall FUN_00448248(int param_1)

{
  undefined4 uVar1;
  undefined4 extraout_ECX;
  undefined local_b9;
  uint local_b8;
  undefined local_b4 [28];
  undefined local_98 [132];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4b411;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if ((*(int *)(param_1 + 0x18) == 0) || (*(int *)(param_1 + 0x54) == 0)) {
    local_b9 = 0;
    FUN_00b940e0(0x43b6abfa,DAT_0323f878 ^ (uint)&stack0xffffff38);
  }
  else {
    local_b9 = 1;
    FUN_00449269(local_98);
    local_c = 0;
    FUN_0040e327(local_98,param_1 + 4);
    uVar1 = FUN_00496342(local_b4);
    local_c._0_1_ = 1;
    uVar1 = FUN_004266f0(local_98,extraout_ECX,uVar1);
    FUN_0040e327(uVar1);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00401829(1,0);
    local_b8 = 0;
    if ((*(int *)(param_1 + 0x6c) - *(int *)(param_1 + 0x68)) / 0x1c != 0) {
      do {
        FUN_0040e4a0(local_98,&DAT_00fb04cc);
        uVar1 = FUN_0042b490(local_b8);
        FUN_0040e327(local_98,uVar1);
        local_b8 = local_b8 + 1;
      } while (local_b8 < (uint)((*(int *)(param_1 + 0x6c) - *(int *)(param_1 + 0x68)) / 0x1c));
    }
    uVar1 = FUN_004266f0(local_98,0x1c,param_1 + 0x40);
    FUN_0040e327(uVar1);
    uVar1 = FUN_004491d9();
    local_c = CONCAT31(local_c._1_3_,2);
    FID_conflict_assign(uVar1,0,0xffffffff);
    FUN_00401829(1,0);
    local_c = 0xffffffff;
    FUN_0044922e();
  }
  ExceptionList = local_14;
  return local_b9;
}



void FUN_004483d5(undefined4 param_1)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *local_27c;
  undefined *puStack_278;
  uint uStack_274;
  undefined auStack_264 [3];
  undefined local_261;
  undefined4 **local_25c;
  undefined4 local_254;
  int local_250;
  undefined local_24c [20];
  undefined **local_238;
  undefined local_234 [536];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4b91d;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_264;
  uStack_274 = DAT_0323f878 ^ (uint)&stack0xfffffd90;
  ExceptionList = &local_14;
  puStack_278 = (undefined *)0x448424;
  FUN_00467993();
  puStack_278 = local_234;
  local_c = 0;
  local_261 = 0;
  local_238 = W515EA149::W818B7449::vftable;
  local_27c = (undefined4 *)0x448444;
  FUN_004382a5();
  local_254 = 0;
  local_250 = 0;
  puStack_278 = (undefined *)param_1;
  local_27c = &local_254;
  local_c._0_1_ = 2;
  cVar1 = FUN_0044206a(&local_238);
  if (cVar1 == '\0') {
    local_c._0_1_ = 1;
    if (local_250 != 0) {
      puStack_278 = (undefined *)0x4488bd;
      FUN_0040127a();
    }
    local_c = (uint)local_c._1_3_ << 8;
    puStack_278 = (undefined *)0x4488ce;
    FUN_0049a6ab();
    puStack_278 = (undefined *)0x4488d7;
    FUN_004679c2();
    ExceptionList = local_14;
    ___security_check_cookie_4();
    return;
  }
  puStack_278 = local_24c;
  local_27c = (undefined4 *)0x44848a;
  puVar2 = (undefined4 *)FUN_0043d4a9();
  local_25c = &local_27c;
  local_c = CONCAT31(local_c._1_3_,3);
  local_27c = (undefined4 *)*puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void FUN_004488fd(void)

{
  int unaff_EDI;
  
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EDI + 0x5c));
}



void FUN_00448932(void)

{
  undefined4 *in_EAX;
  char *unaff_ESI;
  
  if (*unaff_ESI == '\0') {
    FUN_00439f42(in_EAX);
  }
  else {
    *(undefined4 *)(unaff_ESI + 4) = *in_EAX;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_00448949(int *param_1)

{
  int **ppiVar1;
  
  ppiVar1 = (int **)FUN_00418daa(1,0);
  if (ppiVar1 == (int **)0x0) {
    ppiVar1 = (int **)0x0;
  }
  else {
    *ppiVar1 = param_1;
  }
  *param_1 = (int)ppiVar1;
  FUN_00448bae();
  return param_1;
}



int FUN_00448982(uint *param_1)

{
  char cVar1;
  int iVar2;
  uint *unaff_EBX;
  undefined4 local_20;
  int local_1c;
  uint local_18;
  uint local_14;
  undefined local_10 [12];
  
  FUN_00674114(param_1);
  local_14 = unaff_EBX[6];
  local_18 = *unaff_EBX;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*param_1 < *(uint *)(local_1c + 0xc))) {
    local_18 = *param_1;
    local_14 = 0;
    FUN_00448a0c(local_10,&local_18,local_20,local_1c);
  }
  iVar2 = FUN_006badde();
  return iVar2 + 4;
}



undefined4 * FUN_00448a0c(undefined4 *param_1,uint *param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  bool bVar4;
  undefined4 uVar5;
  
  if (*(int *)(in_EAX + 0x1c) == 0) {
    param_4 = *(int *)(in_EAX + 0x18);
  }
  else {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 != '\0') {
        param_4 = *(int *)(*(int *)(in_EAX + 0x18) + 8);
        if (*param_2 <= *(uint *)(param_4 + 0xc)) goto LAB_00448b3f;
        uVar5 = 0;
        goto LAB_00448a2e;
      }
      bVar4 = *(uint *)(param_4 + 0xc) < *param_2;
      if (*param_2 < *(uint *)(param_4 + 0xc)) {
        iVar2 = FUN_005d021f();
        if (*param_2 <= *(uint *)(*(int *)(iVar2 + 4) + 0xc)) {
          bVar4 = *(uint *)(param_4 + 0xc) < *param_2;
          goto LAB_00448af2;
        }
        cVar1 = *(char *)(*(int *)(param_4 + 8) + 0x15);
      }
      else {
LAB_00448af2:
        if (!bVar4) {
LAB_00448b3f:
          puVar3 = (undefined4 *)FUN_005d015b(in_EAX,param_2);
          *param_1 = *puVar3;
          param_1[1] = puVar3[1];
          return param_1;
        }
        FUN_00448b61();
        cVar1 = FUN_006b8eca();
        if ((cVar1 == '\0') && (*(uint *)(param_4 + 0xc) <= *param_2)) goto LAB_00448b3f;
        cVar1 = *(char *)(*(int *)(param_4 + 8) + 0x15);
      }
      if (cVar1 == '\0') {
        uVar5 = 1;
      }
      else {
        uVar5 = 0;
      }
      goto LAB_00448a2e;
    }
    if (*(uint *)(param_4 + 0xc) <= *param_2) goto LAB_00448b3f;
  }
  uVar5 = 1;
LAB_00448a2e:
  FUN_004650b9(param_1,uVar5,param_4,param_2);
  return param_1;
}



void FUN_00448b61(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x15) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x15) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x15) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x15) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



void FUN_00448bae(void)

{
  int *piVar1;
  int iVar2;
  int unaff_ESI;
  
  iVar2 = FUN_00448bcf();
  piVar1 = (int *)(unaff_ESI + 0x18);
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x45) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  return;
}



void FUN_00448bcf(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x48);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 0x11) = 1;
  *(undefined *)((int)puVar1 + 0x45) = 0;
  return;
}



void FUN_00448bf9(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_00fb04d1;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_00448c42(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_14 = param_1;
  uStack_10 = param_2;
  uStack_c = param_3;
  uStack_8 = param_4;
  cVar1 = FUN_007f2630(&local_14);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_14;
      unaff_EBX[3] = uStack_10;
      unaff_EBX[4] = uStack_c;
      unaff_EBX[5] = uStack_8;
    }
    *unaff_EBX = &DAT_00fb04d9;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00448d9a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5D651E7E::W11A225E9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00448de0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00448e3d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00448e9a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00448ef7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00448f88(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00449091(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::WB910D23D,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::WB910D23D*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00448fc3(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_004490da(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W16B30E62::W1D123498,class_boost::shared_ptr<class_W208886B1::WB7D69BFC>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W16B30E62::W1D123498*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00448ffc(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00449127(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<unsigned_int,class_boost::_mfi::mf2<unsigned_int,class_W5D651E7E::W44B0ED88,class_boost::shared_ptr<class_WDE765622::W441A93CE>,class_boost::function<bool___cdecl(class_boost::shared_ptr<class_WDE765622::WBE3F1864>)>_>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::W44B0ED88*>,class_boost::_bi::value<class_boost::shared_ptr<class_WDE765622::W441A93CE>_>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00449091(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::WB910D23D,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::WB910D23D*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::WB910D23D,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::WB910D23D*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_004490da(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W16B30E62::W1D123498,class_boost::shared_ptr<class_W208886B1::WB7D69BFC>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W16B30E62::W1D123498*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W16B30E62::W1D123498,class_boost::shared_ptr<class_W208886B1::WB7D69BFC>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W16B30E62::W1D123498*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void FUN_00449127(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  uint unaff_EBX;
  int unaff_EDI;
  
  if ((unaff_EDI == 0) || (unaff_EDI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_00754b70();
    }
    if (unaff_EDI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EBX + 0xc);
  }
  else {
    if (unaff_EDI != 2) {
      if (unaff_EDI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<unsigned_int,class_boost::_mfi::mf2<unsigned_int,class_W5D651E7E::W44B0ED88,class_boost::shared_ptr<class_WDE765622::W441A93CE>,class_boost::function<bool___cdecl(class_boost::shared_ptr<class_WDE765622::WBE3F1864>)>_>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::W44B0ED88*>,class_boost::_bi::value<class_boost::shared_ptr<class_WDE765622::W441A93CE>_>,struct_boost::arg<1>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EBX);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<unsigned_int,class_boost::_mfi::mf2<unsigned_int,class_W5D651E7E::W44B0ED88,class_boost::shared_ptr<class_WDE765622::W441A93CE>,class_boost::function<bool___cdecl(class_boost::shared_ptr<class_WDE765622::WBE3F1864>)>_>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::W44B0ED88*>,class_boost::_bi::value<class_boost::shared_ptr<class_WDE765622::W441A93CE>_>,struct_boost::arg<1>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[3];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



undefined4 __fastcall FUN_004491d9(undefined4 param_1)

{
  int in_EAX;
  
  FUN_00413014(in_EAX + 4);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: virtual __thiscall std::basic_ostringstream<char,struct std::char_traits<char>,class
// std::allocator<char> >::~basic_ostringstream<char,struct std::char_traits<char>,class
// std::allocator<char> >(void)
//  public: virtual __thiscall std::basic_ostringstream<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short>
// >::~basic_ostringstream<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> >(void)
//  public: virtual __thiscall std::basic_ostringstream<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::~basic_ostringstream<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >(void)
// 
// Libraries: Visual Studio 2012 Release, Visual Studio 2015 Release

void __fastcall ~basic_ostringstream<>(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x4c) + 4) + -0x4c + param_1) =
       std::
       basic_ostringstream<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
       ::vftable;
  FUN_004130d1();
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x4c) + 4) + param_1 + -0x4c) =
       std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  return;
}



void FUN_0044922e(void)

{
  int in_EAX;
  
  ~basic_ostringstream<>();
  *(undefined4 *)(in_EAX + 0x4c) = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)(undefined4 *)(in_EAX + 0x4c));
  return;
}



int __thiscall FUN_0044924a(int param_1_00,byte param_1)

{
  FUN_0044922e();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -0x4c);
  }
  return param_1_00 + -0x4c;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_00449269(int *param_1)

{
  *param_1 = (int)&DAT_00fad660;
  param_1[0x13] = (int)std::basic_ios<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 4)) =
       std::basic_ostream<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  FUN_00412b2b(param_1 + 1,0);
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 4)) =
       std::
       basic_ostringstream<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
       ::vftable;
  FUN_0041390f(param_1 + 1,2);
  return param_1;
}



void FUN_004492d4(void)

{
  FUN_00401477();
  return;
}



void __thiscall FUN_004492db(int param_1_00,int param_1)

{
  *(int *)(param_1_00 + 8) = *(int *)(param_1_00 + 8) - param_1;
  ReleaseSemaphore(*(HANDLE *)(param_1_00 + 0x28),param_1,(LPLONG)0x0);
  return;
}



int ** __fastcall FUN_004492f7(int **param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *param_1;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *param_1;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_00449311;
    }
  }
  iVar2 = *piVar1;
LAB_00449311:
  if (*(int **)(iVar2 + 0x10) <= param_1[1]) {
    FUN_00a3fb10();
  }
  param_1[1] = param_1[1] + 1;
  return param_1;
}



void __thiscall FUN_00449326(HANDLE *param_1_00,LONG param_1)

{
  *(undefined *)(param_1_00 + 3) = 1;
  ReleaseSemaphore(*param_1_00,param_1,(LPLONG)0x0);
  return;
}



int * __fastcall FUN_0044933b(int **param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *param_1;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *param_1;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_00449355;
    }
  }
  iVar2 = *piVar1;
LAB_00449355:
  if (*(int **)(iVar2 + 0x10) <= param_1[1]) {
    FUN_00a3fb10();
  }
  return param_1[1];
}



bool __thiscall FUN_00449367(int *param_1_00,int *param_1)

{
  if ((*param_1_00 == 0) || (*param_1_00 != *param_1)) {
    FUN_00a3fb10();
  }
  return param_1_00[1] == param_1[1];
}



void __thiscall FUN_0044938e(int *param_1_00,int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  *param_1_00 = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 0x10) = *(int *)(iVar1 + 0x10) + 1;
    UNLOCK();
  }
  return;
}



undefined4 * __thiscall FUN_004493a9(undefined4 *param_1_00,int param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)FUN_0044938e(param_1);
  uVar1 = *puVar2;
  *puVar2 = *param_1_00;
  *param_1_00 = uVar1;
  if (param_1 != 0) {
    FUN_0042bcad(param_1);
  }
  return param_1_00;
}



int FUN_004493d8(int param_1,int param_2,int param_3)

{
  for (; param_1 != param_2; param_1 = param_1 + 4) {
    FUN_004493a9(param_1);
    param_3 = param_3 + 4;
  }
  return param_3;
}



int FUN_004493fc(int param_1,int param_2,int param_3)

{
  FUN_004493d8(param_1,param_2,param_3,param_1,0,0);
  return param_3 + (param_2 - param_1 >> 2) * 4;
}



void FUN_00449436(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_004493fc(param_1,param_2,param_3,param_2,param_2,0);
  return;
}



int __thiscall
FUN_0044945e(int param_1_00,int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_10 [4];
  undefined4 local_c;
  
  FUN_004494bc(param_3,param_1_00);
  FUN_004494bc(param_5,param_1_00);
  cVar1 = FUN_00449367(local_10);
  if (cVar1 == '\0') {
    uVar2 = FUN_00449436(local_c,*(undefined4 *)(param_1_00 + 0x10),*(undefined4 *)(param_1 + 4));
    FUN_0042bd39(uVar2,*(undefined4 *)(param_1_00 + 0x10));
    *(undefined4 *)(param_1_00 + 0x10) = uVar2;
  }
  return param_1;
}



undefined4 * __thiscall FUN_004494bc(undefined4 *param_1_00,uint param_1,undefined4 *param_2)

{
  *param_1_00 = 0;
  if (((param_2 == (undefined4 *)0x0) || (param_1 < (uint)param_2[3])) ||
     ((uint)param_2[4] < param_1)) {
    FUN_00a3fb10();
  }
  *param_1_00 = *param_2;
  param_1_00[1] = param_1;
  return param_1_00;
}



void __fastcall FUN_004494ee(int param_1)

{
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_004494bc(*(undefined4 *)(param_1 + 0x10),param_1);
  FUN_004494bc(*(undefined4 *)(param_1 + 0xc),param_1);
  FUN_0044945e(&local_14,local_14,local_10,local_c,local_8);
  return;
}



undefined4 * __thiscall FUN_00449529(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_0042bd80();
  *param_1_00 = param_1;
  return param_1_00;
}



void __fastcall FUN_0044953d(int param_1)

{
  char cVar1;
  int *piVar2;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c482f6;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if (*(int *)(param_1 + 8) != 0) {
    FUN_0043d307(DAT_0323f878 ^ (uint)&stack0xffffffc8);
    if (*(int *)(param_1 + 8) != 0) {
      FUN_004492db(*(int *)(param_1 + 8));
      FUN_004494bc(*(undefined4 *)(param_1 + 0x1c),param_1 + 0x10);
      FUN_004494bc(*(undefined4 *)(param_1 + 0x20),param_1 + 0x10);
      while( true ) {
        cVar1 = FUN_00449367(local_20);
        if (cVar1 != '\0') break;
        piVar2 = (int *)FUN_0044933b();
        FUN_00449326(*(undefined4 *)(*piVar2 + 8));
        FUN_004492f7();
      }
      FUN_004494ee();
      FUN_0042bd80();
      *(undefined4 *)(param_1 + 0x28) = 0;
    }
    local_c = 0xffffffff;
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0044960b(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x449617;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fb0574,0xb);
  local_8 = 0;
  local_18 = 0x39d8388e;
  local_14 = 0x9de89224;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



undefined4 __thiscall FUN_0044965c(undefined4 param_1_00,byte param_1)

{
  FUN_00933fa0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00449678(int *param_1)

{
  (**(code **)(*param_1 + 0x2c))();
  return;
}



undefined4 * __thiscall FUN_00449680(undefined4 *param_1_00,undefined2 *param_1)

{
  FUN_009340c0();
  *param_1_00 = wxDataObjectSimple::vftable;
  *(undefined2 *)(param_1_00 + 2) = *param_1;
  return param_1_00;
}



void thunk_FUN_00933fa0(void)

{
  FUN_00933fa0();
  return;
}



undefined4 __thiscall FUN_004496a4(undefined4 param_1,byte param_2)

{
  FUN_004496c0();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_004496c0(void)

{
  FUN_0040159c();
  FUN_00933fa0();
  return;
}



void __thiscall FUN_004496d3(int param_1_00,undefined2 *param_1)

{
  *param_1 = *(undefined2 *)(param_1_00 + 8);
  return;
}



void __thiscall FUN_004496e1(int param_1_00,undefined2 *param_1)

{
  *param_1 = *(undefined2 *)(param_1_00 + 8);
  return;
}



void __thiscall FUN_004496ef(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  (**(code **)(*param_1_00 + 0x30))(param_2);
  return;
}



void __thiscall
FUN_004496fb(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  (**(code **)(*param_1_00 + 0x34))(param_2,param_3);
  return;
}



int __fastcall FUN_0044970b(int param_1)

{
  return *(int *)(param_1 + 0x20) + 1;
}



undefined4 __thiscall FUN_00449710(int param_1_00,undefined4 param_1)

{
  FUN_004325a0(param_1_00 + 0xc);
  return param_1;
}



void FUN_0044972b(void)

{
  FUN_0043261a();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00449733(undefined4 *param_1_00,undefined4 param_1)

{
  undefined2 local_12 [5];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x44973f;
  local_12[0] = 0xd;
  FUN_00449680(local_12);
  local_8 = 0;
  *param_1_00 = wxTextDataObject::vftable;
  FUN_004325a0(param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004497c4(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4497d0;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fb058c,7);
  local_8 = 0;
  local_18 = 0xea67436;
  local_14 = 0xa0c5ddf3;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



void FUN_00449815(int param_1)

{
  if (*(char *)(param_1 + 0x45) == '\0') {
    FUN_00449815(*(undefined4 *)(param_1 + 8));
    FUN_00401829(1,0);
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_00449867(void)

{
  int *piVar1;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EDI + 0x18);
  FUN_00449815(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(unaff_EDI + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x00449976)
// WARNING: Removing unreachable block (ram,0x00449986)
// WARNING: Removing unreachable block (ram,0x0044998f)
// WARNING: Removing unreachable block (ram,0x00449992)
// WARNING: Removing unreachable block (ram,0x00449982)
// WARNING: Removing unreachable block (ram,0x0044999f)
// WARNING: Removing unreachable block (ram,0x004499af)
// WARNING: Removing unreachable block (ram,0x004499ba)
// WARNING: Removing unreachable block (ram,0x004499b6)
// WARNING: Removing unreachable block (ram,0x004499aa)
// WARNING: Removing unreachable block (ram,0x004499bd)

void FUN_0044988b(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x449897;
  if (*(char *)((int)param_4 + 0x45) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_0040e0e4();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x45) == '\0') {
    if (*(char *)(param_4[2] + 0x45) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x45) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x45) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x45) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x45) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x45) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0x11) != '\x01') {
LAB_00449aee:
    FUN_00401829(1,0);
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_00449aa2:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0x11) != '\x01')
     ) goto LAB_00449aea;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0x11) == '\0') {
      *(undefined *)(ppiVar4 + 0x11) = 1;
      *(undefined *)(ppiVar3 + 0x11) = 0;
      FUN_0040e192(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x45) == '\0') {
      if ((*(char *)(*ppiVar4 + 0x11) != '\x01') || (*(char *)(ppiVar4[2] + 0x11) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0x11) == '\x01') {
          *(undefined *)(*ppiVar4 + 0x11) = 1;
          *(undefined *)(ppiVar4 + 0x11) = 0;
          FUN_0040e1d2(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0x11) = *(undefined *)(ppiVar3 + 0x11);
        *(undefined *)(ppiVar3 + 0x11) = 1;
        *(undefined *)(ppiVar4[2] + 0x11) = 1;
        FUN_0040e192(param_1);
        goto LAB_00449aea;
      }
LAB_00449a99:
      *(undefined *)(ppiVar4 + 0x11) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0x11) == '\0') {
      *(undefined *)(ppiVar4 + 0x11) = 1;
      *(undefined *)(ppiVar3 + 0x11) = 0;
      FUN_0040e1d2(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x45) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0x11) == '\x01') && (*(char *)(*ppiVar4 + 0x11) == '\x01'))
      goto LAB_00449a99;
      if (*(char *)(*ppiVar4 + 0x11) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0x11) = 1;
        *(undefined *)(ppiVar4 + 0x11) = 0;
        FUN_0040e192(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0x11) = *(undefined *)(ppiVar3 + 0x11);
      *(undefined *)(ppiVar3 + 0x11) = 1;
      *(undefined *)(*ppiVar4 + 0x11) = 1;
      FUN_0040e1d2(param_1);
LAB_00449aea:
      *(undefined *)(ppiVar5 + 0x11) = 1;
      goto LAB_00449aee;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_00449aa2;
}



void FUN_00449b32(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_00449867();
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_0040e0e4();
    FUN_0044988b();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_00449bcd(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_00449b32(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00449c01(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x449c19;
  FUN_00449bcd();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00449c20;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_00449c01(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x449c19;
  FUN_00449bcd();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00449c20;
  FUN_00a3f6a1();
}



void FUN_00449c3c(int param_1)

{
  if (*(char *)(param_1 + 0x41) == '\0') {
    FUN_00449c3c(*(undefined4 *)(param_1 + 8));
    FUN_00672431();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __thiscall FUN_00449c78(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x41) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



void FUN_00449cb8(void)

{
  FUN_00672431();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x00449db0)
// WARNING: Removing unreachable block (ram,0x00449dc0)
// WARNING: Removing unreachable block (ram,0x00449dc9)
// WARNING: Removing unreachable block (ram,0x00449dcc)
// WARNING: Removing unreachable block (ram,0x00449dbc)
// WARNING: Removing unreachable block (ram,0x00449dd9)
// WARNING: Removing unreachable block (ram,0x00449de9)
// WARNING: Removing unreachable block (ram,0x00449df4)
// WARNING: Removing unreachable block (ram,0x00449df0)
// WARNING: Removing unreachable block (ram,0x00449de4)
// WARNING: Removing unreachable block (ram,0x00449df7)

void FUN_00449cc5(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x449cd1;
  if (*(char *)((int)param_4 + 0x41) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00449f5a();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x41) == '\0') {
    if (*(char *)(param_4[2] + 0x41) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x41) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x41) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x41) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x41) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x41) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0x10) != '\x01') {
LAB_00449f28:
    FUN_00672431();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_00449edc:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0x10) != '\x01')
     ) goto LAB_00449f24;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0x10) == '\0') {
      *(undefined *)(ppiVar4 + 0x10) = 1;
      *(undefined *)(ppiVar3 + 0x10) = 0;
      FUN_00449c78(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x41) == '\0') {
      if ((*(char *)(*ppiVar4 + 0x10) != '\x01') || (*(char *)(ppiVar4[2] + 0x10) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0x10) == '\x01') {
          *(undefined *)(*ppiVar4 + 0x10) = 1;
          *(undefined *)(ppiVar4 + 0x10) = 0;
          FUN_007c5099(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0x10) = *(undefined *)(ppiVar3 + 0x10);
        *(undefined *)(ppiVar3 + 0x10) = 1;
        *(undefined *)(ppiVar4[2] + 0x10) = 1;
        FUN_00449c78(param_1);
        goto LAB_00449f24;
      }
LAB_00449ed3:
      *(undefined *)(ppiVar4 + 0x10) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0x10) == '\0') {
      *(undefined *)(ppiVar4 + 0x10) = 1;
      *(undefined *)(ppiVar3 + 0x10) = 0;
      FUN_007c5099(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x41) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0x10) == '\x01') && (*(char *)(*ppiVar4 + 0x10) == '\x01'))
      goto LAB_00449ed3;
      if (*(char *)(*ppiVar4 + 0x10) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0x10) = 1;
        *(undefined *)(ppiVar4 + 0x10) = 0;
        FUN_00449c78(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0x10) = *(undefined *)(ppiVar3 + 0x10);
      *(undefined *)(ppiVar3 + 0x10) = 1;
      *(undefined *)(*ppiVar4 + 0x10) = 1;
      FUN_007c5099(param_1);
LAB_00449f24:
      *(undefined *)(ppiVar5 + 0x10) = 1;
      goto LAB_00449f28;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_00449edc;
}



void FUN_00449f5a(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x41) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x41) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x41) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x41) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



void FUN_00449fa7(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int *in_EAX;
  int *unaff_EBX;
  
  iVar1 = *(int *)in_EAX[6];
  if ((param_1 == 0) || (param_1 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_2 == iVar1) {
    iVar1 = in_EAX[6];
    if ((param_3 == 0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_4 == iVar1) {
      FUN_00449c3c(*(undefined4 *)(in_EAX[6] + 4));
      *(int *)(in_EAX[6] + 4) = in_EAX[6];
      in_EAX[7] = 0;
      *(int *)in_EAX[6] = in_EAX[6];
      *(int *)(in_EAX[6] + 8) = in_EAX[6];
      unaff_EBX[1] = *(int *)in_EAX[6];
      *unaff_EBX = *in_EAX;
      return;
    }
  }
  while( true ) {
    if ((param_1 == 0) || (param_1 != param_3)) {
      FUN_00a3fb10();
    }
    if (param_2 == param_4) break;
    FUN_00449f5a();
    FUN_00449cc5();
  }
  *unaff_EBX = *in_EAX;
  unaff_EBX[1] = param_2;
  return;
}



void FUN_0044a062(void)

{
  undefined4 *unaff_ESI;
  
  FUN_00449fa7(*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0044a098(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x44a0b0;
  FUN_0044a062();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0044a0b7;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_0044a098(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x44a0b0;
  FUN_0044a062();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0044a0b7;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0044a0c5(int param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  iStack_24 = param_1 + 0x28;
  local_8 = 1;
  puVar1 = &uStack_28;
  uStack_28 = 0x44a0e4;
  FUN_0044a098();
  puVar1[-1] = 0x44a0ec;
  FUN_00417fe6();
  local_8 = 0xffffffff;
  puVar1[-1] = 0x44a0f5;
  FUN_00507e58();
  puVar1[-1] = param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0044a0fb;
  FUN_00a3f6a1();
}



void Catch_All_0044a14c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_0044a0c5(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0044a23b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0044a305(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_0044a391(int param_1)

{
  if (*(int **)(param_1 + 0xc) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0xc) + 0x10))(1);
  }
  return;
}



void Catch_All_0044a3e6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int **)(unaff_EBP + 8) != (int *)0x0) {
    (**(code **)(**(int **)(unaff_EBP + 8) + 0x10))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



int * __thiscall FUN_0044a480(int *param_1_00,int *param_1,int *param_2)

{
  uint uVar1;
  
  *param_1 = *param_2;
  param_1[1] = param_2[1];
  uVar1 = (**(code **)(*param_1_00 + 0xe8))();
  if ((uVar1 >> 3 & 1) == 0) {
    if (param_2[1] == -1) {
      param_1[1] = 2;
    }
  }
  else if (*param_2 == -1) {
    *param_1 = 2;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_0044a4d9(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  FUN_0044ced6();
  *param_1_00 = wxStaticLine::vftable;
  FUN_009389b0(param_1,param_2,param_3,param_4,param_5,param_6);
  return param_1_00;
}



undefined ** FUN_0044a51c(void)

{
  return &PTR_u_WE57E9D05_03247250;
}



undefined ** FUN_0044a554(void)

{
  return &PTR_PTR_00fab488;
}



undefined * FUN_0044a55a(void)

{
  return &DAT_032ee28c;
}



undefined4 __thiscall FUN_0044a5aa(undefined4 param_1,byte param_2)

{
  FUN_0044a703();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0044a5c6(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_28 = 0x44a5e1;
  FUN_0044cc1c();
  *param_1 = W5D651E7E::WE57E9D05::vftable;
  param_1[0x7c] = 0;
  param_1[0x7d] = 0;
  param_1[0x7e] = 0;
  param_1[0x7f] = 0;
  local_8 = CONCAT31(local_8._1_3_,3);
  local_28 = 0x44a606;
  FUN_0044a77d();
  local_14 = &local_2c;
  local_2c = param_3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000010);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_0044a703(undefined4 *param_1)

{
  *param_1 = W5D651E7E::WE57E9D05::vftable;
  FUN_005d1159();
  FUN_0044a746();
  return;
}



undefined * Catch_All_0044a736(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 2;
  return &DAT_0044a743;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0044a746(void)

{
  int unaff_EBP;
  int unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 1;
  if (*(int *)(unaff_ESI + 0x1fc) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 0;
  if (*(int *)(unaff_ESI + 500) != 0) {
    FUN_0040127a();
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00924620();
  return;
}



void FUN_0044a77d(void)

{
  int unaff_ESI;
  
  FUN_005d1159();
  *(undefined4 *)(unaff_ESI + 0x200) = 0;
  *(undefined4 *)(unaff_ESI + 0x204) = 0;
  *(undefined4 *)(unaff_ESI + 0x20c) = 0;
  return;
}



void FUN_0044bd6d(void)

{
  int unaff_ESI;
  
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_ESI + 0x1fc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0044bdc5(int param_1_00,undefined4 param_1,int param_2)

{
  undefined4 *puVar1;
  undefined4 local_74;
  undefined *local_70;
  undefined local_5c [28];
  undefined4 local_40;
  undefined local_1c [4];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0;
  local_70 = (undefined *)(param_1_00 + 0x1f8);
  local_74 = 0x44bde6;
  FUN_005d11c9();
  local_18 = &local_74;
  local_74 = 0x1e62;
  local_70 = (undefined *)0x1;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_8._0_1_ = 1;
  local_70 = (undefined *)*puVar1;
  local_74 = 0x44be14;
  local_70 = (undefined *)FUN_0044bd6d();
  local_8._0_1_ = 2;
  local_74 = 0x44be21;
  basic_string<>();
  local_40 = 0;
  local_8._0_1_ = 3;
  local_70 = local_5c;
  local_74 = 0x44be38;
  (**(code **)(**(int **)(param_1_00 + 0x20c) + 0x54))();
  local_74 = 0x44be40;
  FUN_0040159c();
  local_74 = 0;
  FUN_00401829(1);
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_18 != (undefined4 *)0x0) {
    local_74 = 0x44be5c;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    local_74 = 0x44be6c;
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0044be74(uint *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  uint uVar2;
  uint *extraout_ECX;
  
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a();
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  (**(code **)((uVar2 & 0xfffffffe) + 4))(param_1_00 + 2,param_1);
  return;
}



void __fastcall FUN_0044c095(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044c0b2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D821358::W6E289215>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044c0f8(void)

{
  int iVar1;
  code *pcVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  if (iVar1 != 0) {
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0044c11b(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 *unaff_ESI;
  undefined local_48 [28];
  undefined local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x44c127;
  *unaff_ESI = W7D821358::W6E289215::vftable;
  uVar1 = FUN_0041c102(local_48,param_1,param_2);
  local_8 = 0;
  uVar1 = FUN_0041c102(local_2c,uVar1,param_3);
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_0041c102(unaff_ESI + 1,uVar1,param_4);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_0044c183(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x20);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0044c11b(param_2,param_3,param_4,param_5);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0044c0b2(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0044c201(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x44c20d;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fb0a00,4);
  local_8 = 0;
  local_18 = 0x230e3a21;
  local_14 = 0x995c81f3;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0044c252(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x44c25e;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fb09d8,8);
  local_8 = 0;
  local_18 = 0xa0ebd13e;
  local_14 = 0x4d112052;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0044c2a3(void)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x54);
  if (pvVar1 != (void *)0x0) {
    FUN_0040180b();
    FUN_0046fe93(pvVar1);
  }
  FUN_0044c47f();
  if (pvVar1 != (void *)0x0) {
    FUN_00401829();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000010);
}



void FUN_0044c3e5(void)

{
  FUN_0044c3fa();
  return;
}



void FUN_0044c3f0(void)

{
  int in_EAX;
  
  FUN_0044237a(in_EAX + 4);
  return;
}



void FUN_0044c3fa(void)

{
  int unaff_ESI;
  
  if (unaff_ESI != 0) {
    FUN_00401829(1,0);
    FUN_00401829(1,0);
    FUN_0044237a(unaff_ESI + 4);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044c427(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D821358::W685894F9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044c46d(void)

{
  code *pcVar1;
  
  FUN_0044c3fa();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044c47f(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_0044c427(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_0044c5e0(undefined4 param_1)

{
  int *unaff_ESI;
  undefined4 unaff_retaddr;
  
  (**(code **)(*unaff_ESI + 0x35c))(param_1,0);
  FUN_009409d0(unaff_retaddr);
  return;
}



undefined4 __thiscall FUN_0044c5fe(undefined4 param_1_00,byte param_1)

{
  FUN_0093f590();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_0044c61a(undefined4 *param_1)

{
  FUN_0044ced6();
  param_1[0x65] = 0;
  param_1[0x66] = 0;
  *param_1 = wxAnyButton::vftable;
  return param_1;
}



void __fastcall thunk_FUN_0093f590(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bda128;
  pvStack_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &pvStack_c;
  *param_1 = wxAnyButton::vftable;
  uStack_4 = 0;
  if ((undefined4 *)param_1[0x65] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x65])(1,uVar2);
  }
  iVar1 = param_1[0x66];
  if (iVar1 != 0) {
    _free(*(void **)(iVar1 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  uStack_4 = 0xffffffff;
  FUN_0044cd6b();
  ExceptionList = pvStack_c;
  return;
}



undefined4 __thiscall FUN_0044c63f(undefined4 param_1_00,byte param_1)

{
  FUN_0093dd00();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_0044c65b(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8)

{
  FUN_0044c61a();
  *param_1_00 = wxButton::vftable;
  *(undefined *)(param_1_00 + 0x67) = 0;
  FUN_0093deb0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_0044c6ab(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  void *pvVar1;
  undefined4 uVar2;
  
  pvVar1 = operator_new(0x48);
  uVar2 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00930260(param_1,param_2,param_3,param_4,param_5);
  }
  (**(code **)(*param_1_00 + 0x14))(param_1_00[0xc],uVar2);
  return;
}



undefined4 __thiscall FUN_0044c6fb(undefined4 param_1_00,byte param_1)

{
  FUN_0044c785();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0044c717(void)

{
  FUN_0044c6fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_0044c722(undefined4 *param_1)

{
  FUN_00446386();
  *param_1 = wxPanel::vftable;
  FUN_0093d340(param_1);
  *param_1 = wxScrolled<class_wxPanel>::vftable;
  param_1[0x5e] = wxScrolled<class_wxPanel>::vftable;
  return param_1;
}



undefined4 * __fastcall FUN_0044c764(undefined4 *param_1)

{
  FUN_0044c722();
  *param_1 = wxScrolledWindow::vftable;
  param_1[0x5e] = wxScrolledWindow::vftable;
  return param_1;
}



void __fastcall thunk_FUN_0093d1e0(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = wxScrollHelperBase::vftable;
  if ((int *)param_1[0xc] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0xc] + 4))(1);
    param_1[0xc] = 0;
  }
  if ((param_1[6] != 0) && (param_1[0x17] != 0)) {
    cVar1 = FUN_0091c050(param_1[0x17]);
    if ((cVar1 != '\0') && ((int *)param_1[0x17] != (int *)0x0)) {
      (**(code **)(*(int *)param_1[0x17] + 4))(1);
    }
    param_1[0x17] = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0044c785(int param_1)

{
  FUN_0093d1e0();
  *(undefined ***)(param_1 + 0x164) = wxControlContainerBase::vftable;
  FUN_009150e0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0044c7c0(int param_1)

{
  FUN_0093d1e0();
  *(undefined ***)(param_1 + 0x164) = wxControlContainerBase::vftable;
  FUN_009150e0();
  return;
}



undefined4 * __thiscall FUN_0044c7c5(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxHtmlWindowInterface::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0044c7e2(undefined4 *param_1)

{
  *param_1 = wxHtmlWindowInterface::vftable;
  return;
}



undefined4 * __thiscall FUN_0044c7e9(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxHtmlWindowMouseHelper::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0044c806(undefined4 *param_1)

{
  *param_1 = wxHtmlWindowMouseHelper::vftable;
  return;
}



undefined4 __thiscall FUN_0044c844(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  int local_c;
  int iStack_8;
  
  if (param_1_00 == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = param_1_00 + 0x178;
  }
  local_c = param_1_00;
  iStack_8 = param_1_00;
  uVar1 = FUN_0091da70(&local_c);
  FUN_0093d160(param_1,param_1_00,iVar2,uVar1);
  return param_1;
}



undefined4 FUN_0044c89b(void)

{
  return 0;
}



void FUN_0044c8ba(void)

{
  FUN_0044c8fb();
  return;
}



void __thiscall FUN_0044c8c5(int *param_1_00,undefined4 *param_1)

{
  (**(code **)(*param_1_00 + 0x28))(*param_1,param_1[1]);
  return;
}



void __fastcall FUN_0044c8d6(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x0044c8d8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x28))();
  return;
}



void FUN_0044c8db(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  
  uVar1 = param_2[1];
  *param_1 = *param_2;
  param_1[1] = uVar1;
  return;
}



void FUN_0044c8f0(void)

{
  FUN_0044c8fb();
  return;
}



undefined4 __thiscall FUN_0044c8fb(undefined4 param_1,byte param_2)

{
  FUN_009f1890();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_0044c917(void)

{
  FUN_0044c8fb();
  return;
}



undefined4 __thiscall FUN_0044ca20(undefined4 param_1_00,byte param_1)

{
  FUN_00937830();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0044ca3c(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxRefCounter::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0044ca59(undefined4 *param_1)

{
  param_1[1] = 1;
  *param_1 = wxGDIImageRefData::vftable;
  param_1[4] = 0;
  param_1[3] = 0;
  param_1[2] = 0;
  param_1[5] = 0;
  return;
}



void __fastcall FUN_0044ca77(undefined4 *param_1)

{
  *param_1 = wxRefCounter::vftable;
  return;
}



undefined4 __thiscall FUN_0044ca7e(undefined4 param_1_00,byte param_1)

{
  FUN_0044ca9a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0044ca9a(undefined4 *param_1)

{
  *param_1 = wxIconRefData::vftable;
  FUN_0092c650();
  *param_1 = wxRefCounter::vftable;
  return;
}



bool __fastcall FUN_0044cac6(int param_1)

{
  return *(int *)(param_1 + 0x14) != 0;
}



undefined4 * FUN_0044cacf(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0044ca59();
    *puVar1 = wxIconRefData::vftable;
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_0044cb04(undefined4 param_1_00,byte param_1)

{
  FUN_0044cb20();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0044cb20(undefined4 *param_1)

{
  *param_1 = wxStaticBitmap::vftable;
  FUN_0093b370();
  FUN_00937830();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_0044cb56(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  FUN_0044ced6();
  *param_1_00 = wxStaticBitmap::vftable;
  *(undefined *)(param_1_00 + 0x65) = 1;
  param_1_00[0x66] = 0;
  param_1_00[0x67] = 0;
  FUN_0093ba30(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  return param_1_00;
}



undefined __fastcall FUN_0044cbb0(int param_1)

{
  return *(undefined *)(param_1 + 0xd);
}



undefined __fastcall FUN_0044cbb4(int param_1)

{
  return *(undefined *)(param_1 + 0xf);
}



undefined __fastcall FUN_0044cbb8(int param_1)

{
  return *(undefined *)(param_1 + 0xe);
}



undefined __fastcall FUN_0044cbbc(int param_1)

{
  return *(undefined *)(param_1 + 0x10);
}



undefined __fastcall FUN_0044cbc0(int param_1)

{
  return *(undefined *)(param_1 + 0xc);
}



void __thiscall FUN_0044cbc4(int *param_1_00,uint param_1)

{
  (**(code **)(*param_1_00 + 0x28))(param_1,param_1 >> 8,param_1 >> 0x10,0xff);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044cbe4(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[1] = 0;
  *param_1_00 = wxColour::vftable;
  FUN_0093b2c0();
  FUN_0044cbc4(param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_0044cc1c(undefined4 *param_1)

{
  FUN_0044cca8();
  *param_1 = wxDialog::vftable;
  FUN_00924140();
  return param_1;
}



undefined4 __thiscall FUN_0044cc4b(undefined4 param_1_00,byte param_1)

{
  FUN_00925cd0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_0044cc67(undefined4 *param_1)

{
  FUN_00925500();
  *param_1 = wxTopLevelWindowMSW::vftable;
  param_1[0x69] = 0;
  param_1[0x6a] = 0;
  param_1[0x6b] = 0;
  param_1[0x6c] = 0;
  FUN_00925a60();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_0044cca8(undefined4 *param_1)

{
  FUN_0044cc67();
  *param_1 = wxDialogBase::vftable;
  FUN_0086a600();
  FUN_00938e90();
  return param_1;
}



undefined4 __thiscall FUN_0044cce6(undefined4 param_1_00,byte param_1)

{
  FUN_0044cd0c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall thunk_FUN_00925cd0(undefined4 *param_1)

{
  uint uVar1;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bd84e8;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &pvStack_c;
  *param_1 = wxTopLevelWindowMSW::vftable;
  uStack_4 = 0;
  if ((int *)param_1[0x70] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x70] + 4))(1,uVar1);
  }
  FUN_0091e7c0();
  if ((((uint)param_1[0x38] >> 3 & 1) != 0) && (param_1[0x11] != 0)) {
    BringWindowToTop(*(HWND *)(param_1[0x11] + 0x13c));
  }
  uStack_4 = 0xffffffff;
  FUN_009255e0();
  ExceptionList = pvStack_c;
  return;
}



void __fastcall thunk_FUN_0086aa30(int param_1)

{
  if (*(int *)(param_1 + 8) != 0) {
    FUN_00a3f66c(*(int *)(param_1 + 8));
    *(undefined4 *)(param_1 + 8) = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0044cd0c(undefined4 *param_1)

{
  *param_1 = wxDialogBase::vftable;
  FUN_0086aa30();
  FUN_00925cd0();
  return;
}



undefined4 __thiscall FUN_0044cd43(undefined4 param_1_00,byte param_1)

{
  FUN_00924620();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0044cd6b(void)

{
  FUN_0086aa30();
  FUN_009375f0();
  return;
}



undefined4 __thiscall FUN_0044cd9c(undefined4 param_1_00,byte param_1)

{
  FUN_009375f0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_0044cdb8(undefined4 *param_1)

{
  FUN_00446436();
  *param_1 = wxControlBase::vftable;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x59));
  param_1[0x60] = 0;
  return param_1;
}



undefined4 __thiscall FUN_0044cddd(undefined4 param_1_00,byte param_1)

{
  FUN_0044cd6b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0044cdf9(int param_1_00,undefined4 param_1)

{
  FUN_009367d0(param_1,*(undefined4 *)(param_1_00 + 300),0);
  return param_1;
}



void FUN_0044ce18(undefined4 param_1)

{
  FUN_0043261a(param_1);
  FUN_0091a950();
  FUN_0095f6a0(param_1);
  return;
}



undefined4 __thiscall FUN_0044ce78(int param_1_00,undefined4 param_1)

{
  FUN_004325a0(param_1_00 + 0x164);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_0044ced6(undefined4 *param_1)

{
  FUN_0044cdb8();
  *param_1 = wxControl::vftable;
  FUN_0086a600();
  return param_1;
}



void FUN_0044cf09(void)

{
  undefined auStack_18 [4];
  undefined4 uStack_14;
  
  uStack_14 = 0x44cf16;
  FUN_00465fd0();
  uStack_14 = 0x44cf1f;
  FUN_007ce2c9();
  FUN_0043d542(auStack_18);
  FUN_0044d0cc();
  FUN_0044ef22(auStack_18);
  FUN_0044d0cc();
  FUN_0044edb4(auStack_18);
  FUN_0044d0cc();
  FUN_0044ec49(auStack_18);
  FUN_0044d0cc();
  FUN_0044eadb(auStack_18);
  FUN_0044d0cc();
  FUN_0044e96d(auStack_18);
  FUN_0044d0cc();
  FUN_0044e802(auStack_18);
  FUN_0044d0cc();
  FUN_0044e697(auStack_18);
  FUN_0044d0cc();
  FUN_0044e52c(auStack_18);
  FUN_0044d0cc();
  FUN_0044e3c1(auStack_18);
  FUN_0044d0cc();
  FUN_0044e256(auStack_18);
  FUN_0044d0cc();
  FUN_0044e0dc(auStack_18);
  FUN_0044d0cc();
  FUN_0044df71(auStack_18);
  FUN_0044d0cc();
  FUN_0044de03(auStack_18);
  FUN_0044d0cc();
  FUN_0044dc98(auStack_18);
  FUN_0044d0cc();
  FUN_0044db2d(auStack_18);
  FUN_0044d0cc();
  FUN_0044d9c2(auStack_18);
  FUN_0044d0cc();
  FUN_0044d854(auStack_18);
  FUN_0044d0cc();
  FUN_0044d6e9(auStack_18);
  FUN_0044d0cc();
  FUN_0044d57e(auStack_18);
  FUN_0044d0cc();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_0044d0cc(undefined4 param_1,int *param_2,int param_3)

{
  undefined *puVar1;
  undefined **local_20;
  undefined **local_1c;
  undefined *local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  puVar1 = &LAB_00c482d3;
  if (param_2 != (int *)0x0) {
    local_18[0] = (undefined *)0x0;
    local_1c = local_18;
    local_20 = W47457227::W7D4DB7EE::vftable;
    local_8._0_1_ = 1;
    local_8._1_3_ = 0;
    (**(code **)(*param_2 + 4))(&local_20);
    local_8 = (uint)local_8._1_3_ << 8;
    local_20 = W47457227::WCE763347::vftable;
    if (((local_18[0] == (undefined *)0x2) || (local_18[0] == (undefined *)0x5)) ||
       (((undefined *)0xc < local_18[0] && (local_18[0] < (undefined *)0xf)))) {
      local_18[0] = (undefined *)0x1;
    }
    puVar1 = local_18[0];
    if (local_18[0] != (undefined *)0x0) {
      puVar1 = (undefined *)IsValidLanguageGroup((LGRPID)local_18[0],1);
      if (puVar1 != (undefined *)0x0) {
        puVar1 = (undefined *)FUN_0044d43e(&param_2);
      }
    }
  }
  local_8 = 0xffffffff;
  if (param_3 != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0044d15c(int param_1_00,int param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int extraout_ECX;
  undefined8 uVar4;
  uint local_1c;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 == 0) {
    local_1c = 0;
  }
  else {
    local_1c = *(int *)(param_1 + 0x14) - iVar1 >> 3;
  }
  iVar3 = *(int *)(param_1 + 0x10);
  iVar1 = iVar3 - iVar1 >> 3;
  uVar4 = CONCAT44(0x1fffffff,iVar1);
  if (iVar1 == 0x1fffffff) {
    uVar4 = FUN_004423c1();
    iVar3 = extraout_ECX;
  }
  uVar2 = (int)uVar4 + 1;
  if (local_1c < uVar2) {
    if ((int)((ulonglong)uVar4 >> 0x20) - (local_1c >> 1) < local_1c) {
      local_1c = 0;
    }
    else {
      local_1c = local_1c + (local_1c >> 1);
    }
    if (local_1c < uVar2) {
      local_1c = uVar2;
    }
    iVar3 = FUN_0046aed6();
    iVar1 = *(int *)(param_1 + 0xc);
    FUN_00478fca(param_1_00);
    FUN_00674fdf(param_3,iVar3);
    FUN_00674fdf(*(undefined4 *)(param_1 + 0x10),iVar3 + 8 + (param_3 - iVar1 >> 3) * 8);
    if (*(int *)(param_1 + 0xc) != 0) {
      FUN_0043a4e8(*(int *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
    }
    *(uint *)(param_1 + 0x14) = iVar3 + local_1c * 8;
    *(int *)(param_1 + 0x10) =
         iVar3 + ((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc) >> 3) + 1) * 8;
    *(int *)(param_1 + 0xc) = iVar3;
    return;
  }
  if (iVar3 - param_3 >> 3 == 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1_00 + 4);
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 4);
}



void Catch_All_0044d25b(void)

{
  int iVar1;
  int iVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + -0x1c);
  iVar2 = *(int *)(unaff_EBP + -0x20);
  if (1 < *(int *)(unaff_EBP + 8)) {
    FUN_0043a4e8(iVar1 + iVar2 * 8);
  }
  if (0 < *(int *)(unaff_EBP + 8)) {
    FUN_0043a4e8(iVar1 + 8 + iVar2 * 8);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar1);
}



void FUN_0044d28f(void)

{
  int extraout_ECX;
  undefined4 *unaff_EBX;
  int unaff_EBP;
  
  __CxxThrowException_8();
  *(undefined4 *)(unaff_EBP + -0x24) = *unaff_EBX;
  if (extraout_ECX - *(int *)(unaff_EBP + 0x10) >> 3 == 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



void Catch_All_0044d30a(void)

{
  int unaff_EBP;
  
  FUN_0043a4e8(*(int *)(*(int *)(unaff_EBP + 8) + 0x10) + 8);
  FUN_0044d28f(0);
  return;
}



void FUN_0044d397(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int *piVar1;
  int in_EAX;
  int iVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc) & 0xfffffff8U) == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = param_4 - local_8 >> 3;
  }
  FUN_0044d15c();
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *local_14;
  }
  piVar1 = (int *)(local_10 + local_8 * 8);
  if (piVar1 <= *(int **)(iVar2 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *local_14;
    }
    if (*(int **)(iVar2 + 0xc) <= piVar1) goto LAB_0044d42f;
  }
  FUN_00a3fb10();
LAB_0044d42f:
  param_1[1] = piVar1;
  *param_1 = local_14;
  return;
}



void FUN_0044d43e(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  uint uVar2;
  undefined4 uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar2 = 0;
  }
  else {
    uVar2 = *(int *)(in_EAX + 0x14) - iVar1 >> 3;
  }
  if ((uint)(*(int *)(in_EAX + 0x10) - iVar1 >> 3) < uVar2) {
    uVar3 = FUN_00478fca(param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar3;
  }
  else {
    FUN_0046e65a();
    FUN_0044d397(&local_10,param_1,local_10,local_c);
  }
  return;
}



undefined4 * __thiscall FUN_0044d49d(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W47457227::W31782023::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044d4ba(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::W0DE483DF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044d500(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044d517(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::W0DE483DF::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044d4ba(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044d57e(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044d517(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044d625(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::WDE760CAB>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044d66b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044d682(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::WDE760CAB::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044d625(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044d6e9(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044d682(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044d790(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::WEF3585D5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044d7d6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044d7ed(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::WEF3585D5::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044d790(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044d854(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044d7ed(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044d8fe(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::W6BCB2A8D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044d944(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044d95b(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::W6BCB2A8D::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044d8fe(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044d9c2(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044d95b(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044da69(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::WBEC7F034>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044daaf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044dac6(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::WBEC7F034::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044da69(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044db2d(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044dac6(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044dbd4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::W4BBD16FC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044dc1a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044dc31(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::W4BBD16FC::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044dbd4(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044dc98(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044dc31(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044dd3f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::WD5D4F622>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044dd85(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044dd9c(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::WD5D4F622::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044dd3f(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044de03(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044dd9c(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044dead(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::WDA4593CC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044def3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044df0a(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::WDA4593CC::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044dead(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044df71(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044df0a(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044e018(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::WEBAFDC6F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044e05e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044e075(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::WEBAFDC6F::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044e018(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044e0dc(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044e075(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044e183(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::W059C9E04>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044e1c9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_0044e1e0(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x1c))(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044e1ef(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::W059C9E04::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044e183(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044e256(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044e1ef(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044e2fd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::W3A4D42F7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044e343(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044e35a(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::W3A4D42F7::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044e2fd(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044e3c1(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044e35a(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044e468(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::W3857470C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044e4ae(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044e4c5(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::W3857470C::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044e468(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044e52c(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044e4c5(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044e5d3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::W59069AD3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044e619(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044e630(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::W59069AD3::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044e5d3(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044e697(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044e630(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044e73e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::WF4D67C87>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044e784(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044e79b(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::WF4D67C87::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044e73e(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044e802(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044e79b(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044e8a9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::WFDDE0B7C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044e8ef(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044e906(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::WFDDE0B7C::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044e8a9(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044e96d(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044e906(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044ea17(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::WC2DE9373>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044ea5d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044ea74(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::WC2DE9373::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044ea17(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044eadb(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044ea74(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044eb85(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::WB4E2E172>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044ebcb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044ebe2(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::WB4E2E172::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044eb85(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044ec49(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044ebe2(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044ecf0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::WBD508035>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044ed36(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044ed4d(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::WBD508035::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044ecf0(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044edb4(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044ed4d(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0044ee5e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::W384CA4AC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0044eea4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0044eebb(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::W384CA4AC::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0044ee5e(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0044ef22(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_0044eebb(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



undefined4 __thiscall FUN_0044f062(undefined4 param_1_00,byte param_1)

{
  FUN_0044f07e();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0044f07e(undefined4 *param_1)

{
  *param_1 = W5D651E7E::W03E39C79::vftable;
  FUN_0043dd40();
  if (param_1[0xc] != 0) {
    FUN_0040127a();
  }
  FUN_004670e1();
  return;
}



void FUN_0044f0bf(void)

{
  int in_EAX;
  
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0x30);
}



undefined4 __fastcall FUN_0044f0e8(undefined4 param_1)

{
  FUN_00492da1();
  return param_1;
}



void FUN_0044f1d1(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W5D651E7E::W1EA48AD2::vftable;
  return;
}



undefined ** FUN_0044f1d8(void)

{
  return &PTR_u_W95101E40_03247268;
}



undefined ** FUN_0044f1de(void)

{
  return &PTR_PTR_00fab43c;
}



undefined * FUN_0044f1e4(void)

{
  return &DAT_032ee2bc;
}



undefined4 __thiscall FUN_0045081c(undefined4 param_1_00,byte param_1)

{
  FUN_00450838();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00450838(undefined4 *param_1)

{
  *param_1 = W5D651E7E::W95101E40::vftable;
  param_1[0x7d] = W5D651E7E::W95101E40::vftable;
  FUN_007d4ace(param_1 + 0xc9);
  FUN_0042b93d(param_1 + 0xc1);
  FUN_00697eb3(param_1 + 0xb8);
  FUN_00417fe6();
  if (param_1[0xa5] != 0) {
    FUN_0040127a();
  }
  FUN_004636a8();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  param_1[0x7d] = W5D651E7E::W1EA48AD2::vftable;
  FUN_00a29210();
  return;
}



void FUN_00450979(int *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int **ppiVar3;
  int iVar4;
  undefined ***pppuVar5;
  undefined *puVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined ***pppuStack_300;
  undefined ***pppuStack_2fc;
  undefined ***pppuStack_2f8;
  undefined ****ppppuStack_2f4;
  undefined **ppuStack_2f0;
  int **ppiStack_2ec;
  undefined ****ppppuStack_2e8;
  undefined *puStack_2e4;
  undefined ****ppppuStack_2e0;
  undefined *****pppppuStack_2dc;
  undefined ***pppuStack_2d8;
  undefined **local_2d4;
  undefined ***local_2d0;
  undefined **ppuStack_2cc;
  undefined ***local_2bc;
  int *local_2b8;
  undefined *local_2b4;
  undefined auStack_2b0 [4];
  undefined auStack_2ac [4];
  undefined auStack_2a8 [4];
  int iStack_2a4;
  undefined *puStack_2a0;
  undefined **local_29c;
  undefined4 uStack_298;
  undefined4 uStack_294;
  int iStack_290;
  undefined4 uStack_28c;
  undefined4 uStack_288;
  undefined4 uStack_284;
  undefined4 local_280;
  undefined **ppuStack_270;
  undefined **ppuStack_26c;
  undefined4 uStack_268;
  int iStack_264;
  undefined local_260 [4];
  int iStack_25c;
  undefined auStack_258 [4];
  int iStack_254;
  undefined **appuStack_250 [7];
  undefined4 uStack_234;
  undefined **appuStack_22c [7];
  undefined4 uStack_210;
  undefined **appuStack_208 [7];
  undefined4 uStack_1ec;
  undefined auStack_1c8 [28];
  undefined4 uStack_1ac;
  undefined auStack_1a4 [28];
  undefined4 uStack_188;
  undefined **appuStack_180 [7];
  undefined4 uStack_164;
  undefined auStack_140 [36];
  undefined **appuStack_11c [7];
  undefined4 uStack_100;
  undefined auStack_f8 [28];
  undefined4 uStack_dc;
  undefined auStack_d4 [28];
  undefined4 uStack_b8;
  undefined auStack_b0 [28];
  undefined4 uStack_94;
  undefined auStack_8c [36];
  undefined auStack_68 [40];
  void *pvStack_40;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  uStack_10 = &LAB_00c2cd82;
  local_14 = ExceptionList;
  ppuStack_2cc = (undefined **)(DAT_0323f878 ^ (uint)&stack0xfffffd38);
  ExceptionList = &local_14;
  local_2bc = &local_2d4;
  local_2d4 = (undefined **)0x1e62;
  local_2d0 = (undefined ***)0xa2;
  pppuStack_2d8 = (undefined ***)&local_2b4;
  pppppuStack_2dc = (undefined *****)0x4509cb;
  puVar2 = (undefined4 *)FUN_00465be3();
  local_c = 0;
  local_2d0 = (undefined ***)*puVar2;
  local_2b8 = param_1 + 0x94;
  local_2d4 = (undefined **)0x4509f0;
  local_2d0 = (undefined ***)FUN_0046376d();
  local_c._0_1_ = 1;
  local_2d4 = (undefined **)0x450a02;
  basic_string<>();
  local_280 = 0;
  local_c = CONCAT31(local_c._1_3_,2);
  local_2d0 = &local_29c;
  local_2d4 = (undefined **)0x450a1e;
  (**(code **)(*(int *)param_1[0xa6] + 0x54))();
  local_2d4 = (undefined **)0x450a27;
  FUN_0040159c();
  local_2d4 = (undefined **)0x0;
  pppuStack_2d8 = (undefined ***)0x1;
  pppppuStack_2dc = (undefined *****)0x450a33;
  FUN_00401829();
  uStack_10 = (undefined *)0xffffffff;
  if (local_2b4 != (undefined *)0x0) {
    local_2d4 = (undefined **)0x450a48;
    FUN_0040127a();
  }
  pppuStack_2d8 = (undefined ***)0x1e62;
  local_2d4 = (undefined **)0x16;
  pppppuStack_2dc = (undefined *****)&local_2b8;
  ppppuStack_2e0 = (undefined ****)0x450a63;
  puVar2 = (undefined4 *)FUN_00465be3();
  uStack_10 = (undefined *)0x3;
  local_2d4 = (undefined **)*puVar2;
  pppuStack_2d8 = (undefined ***)0x450a80;
  local_2d4 = (undefined **)FUN_0046376d();
  uStack_10._0_1_ = 4;
  pppuStack_2d8 = (undefined ***)0x450a92;
  basic_string<>();
  uStack_284 = 0;
  uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,5);
  local_2d4 = &puStack_2a0;
  pppuStack_2d8 = (undefined ***)0x450aae;
  (**(code **)(*(int *)param_1[0xa7] + 0x54))();
  pppuStack_2d8 = (undefined ***)0x450ab7;
  FUN_0040159c();
  pppuStack_2d8 = (undefined ***)0x0;
  pppppuStack_2dc = (undefined *****)0x1;
  ppppuStack_2e0 = (undefined ****)0x450ac3;
  FUN_00401829();
  local_14 = (void *)0xffffffff;
  if (local_2b8 != (int *)0x0) {
    pppuStack_2d8 = (undefined ***)0x450ad8;
    FUN_0040127a();
  }
  pppppuStack_2dc = (undefined *****)0x1e62;
  pppuStack_2d8 = (undefined ***)0xa2;
  ppppuStack_2e0 = &local_2bc;
  puStack_2e4 = (undefined *)0x450af3;
  ppiVar3 = (int **)FUN_00465be3();
  local_14 = (void *)0x6;
  pppuStack_2d8 = (undefined ***)*ppiVar3;
  pppppuStack_2dc = (undefined *****)0x450b10;
  pppuStack_2d8 = (undefined ***)FUN_0046376d();
  local_14._0_1_ = 7;
  pppppuStack_2dc = (undefined *****)0x450b22;
  basic_string<>();
  uStack_288 = 0;
  local_14 = (void *)CONCAT31(local_14._1_3_,8);
  pppuStack_2d8 = (undefined ***)&iStack_2a4;
  pppppuStack_2dc = (undefined *****)0x450b3e;
  (**(code **)(*(int *)param_1[0xa8] + 0x54))();
  pppppuStack_2dc = (undefined *****)0x450b47;
  FUN_0040159c();
  pppppuStack_2dc = (undefined *****)0x0;
  ppppuStack_2e0 = (undefined ****)0x1;
  puStack_2e4 = (undefined *)0x450b53;
  FUN_00401829();
  uStack_18 = 0xffffffff;
  if (local_2bc != (undefined ***)0x0) {
    pppppuStack_2dc = (undefined *****)0x450b68;
    FUN_0040127a();
  }
  ppppuStack_2e0 = (undefined ****)0x1e62;
  pppppuStack_2dc = (undefined *****)0x21;
  puStack_2e4 = &stack0xfffffd40;
  ppppuStack_2e8 = (undefined ****)0x450b83;
  puVar2 = (undefined4 *)FUN_00465be3();
  uStack_18 = 9;
  pppppuStack_2dc = (undefined *****)*puVar2;
  ppppuStack_2e0 = (undefined ****)0x450ba0;
  pppppuStack_2dc = (undefined *****)FUN_0046376d();
  uStack_18._0_1_ = 10;
  ppppuStack_2e0 = (undefined ****)0x450bb2;
  basic_string<>();
  uStack_28c = 0;
  uStack_18 = CONCAT31(uStack_18._1_3_,0xb);
  pppppuStack_2dc = (undefined *****)auStack_2a8;
  ppppuStack_2e0 = (undefined ****)0x450bce;
  (**(code **)(*(int *)param_1[0xaa] + 0x54))();
  ppppuStack_2e0 = (undefined ****)0x450bd7;
  FUN_0040159c();
  ppppuStack_2e0 = (undefined ****)0x0;
  puStack_2e4 = (undefined *)0x1;
  ppppuStack_2e8 = (undefined ****)0x450be3;
  FUN_00401829();
  uStack_1c = 0xffffffff;
  if (&stack0x00000000 != (undefined *)0x2d8) {
    ppppuStack_2e0 = (undefined ****)0x450bf8;
    FUN_0040127a();
  }
  ppuStack_2cc = &puStack_2e4;
  puStack_2e4 = (undefined *)0x1e62;
  ppppuStack_2e0 = (undefined ****)0xa3;
  ppppuStack_2e8 = (undefined ****)&stack0xfffffd3c;
  ppiStack_2ec = (int **)0x450c13;
  puVar2 = (undefined4 *)FUN_00465be3();
  uStack_1c = 0xc;
  ppppuStack_2e0 = (undefined ****)*puVar2;
  puStack_2e4 = (undefined *)0x450c30;
  ppppuStack_2e0 = (undefined ****)FUN_0046376d();
  uStack_1c._0_1_ = 0xd;
  puStack_2e4 = (undefined *)0x450c42;
  basic_string<>();
  iStack_290 = 0;
  uStack_1c = CONCAT31(uStack_1c._1_3_,0xe);
  ppppuStack_2e0 = (undefined ****)auStack_2ac;
  puStack_2e4 = (undefined *)0x450c5e;
  (**(code **)(*(int *)param_1[0xac] + 0x54))();
  puStack_2e4 = (undefined *)0x450c67;
  FUN_0040159c();
  puStack_2e4 = (undefined *)0x0;
  ppppuStack_2e8 = (undefined ****)0x1;
  ppiStack_2ec = (int **)0x450c73;
  FUN_00401829();
  uStack_20 = 0xffffffff;
  if (&stack0x00000000 != (undefined *)0x2dc) {
    puStack_2e4 = (undefined *)0x450c88;
    FUN_0040127a();
  }
  local_2d0 = (undefined ***)&ppppuStack_2e8;
  ppppuStack_2e8 = (undefined ****)0x1e62;
  puStack_2e4 = (undefined *)0xa6;
  ppiStack_2ec = (int **)&stack0xfffffd38;
  ppuStack_2f0 = (undefined **)0x450ca3;
  puVar2 = (undefined4 *)FUN_00465be3();
  uStack_20 = 0xf;
  puStack_2e4 = (undefined *)*puVar2;
  ppppuStack_2e8 = (undefined ****)0x450cc0;
  puStack_2e4 = (undefined *)FUN_0046376d();
  uStack_20._0_1_ = 0x10;
  ppppuStack_2e8 = (undefined ****)0x450cd2;
  basic_string<>();
  uStack_294 = 0;
  uStack_20 = CONCAT31(uStack_20._1_3_,0x11);
  puStack_2e4 = auStack_2b0;
  ppppuStack_2e8 = (undefined ****)0x450cee;
  (**(code **)(*(int *)param_1[0xad] + 0x54))();
  ppppuStack_2e8 = (undefined ****)0x450cf7;
  FUN_0040159c();
  ppppuStack_2e8 = (undefined ****)0x0;
  ppiStack_2ec = (int **)0x1;
  ppuStack_2f0 = (undefined **)0x450d03;
  FUN_00401829();
  uStack_24 = 0xffffffff;
  if (&stack0x00000000 != (undefined *)0x2e0) {
    ppppuStack_2e8 = (undefined ****)0x450d18;
    FUN_0040127a();
  }
  local_2d4 = (undefined **)&ppiStack_2ec;
  ppiStack_2ec = (int **)0x1e62;
  ppppuStack_2e8 = (undefined ****)0xa7;
  ppuStack_2f0 = (undefined **)&ppuStack_2cc;
  ppppuStack_2f4 = (undefined ****)0x450d33;
  puVar2 = (undefined4 *)FUN_00465be3();
  uStack_24 = 0x12;
  ppppuStack_2e8 = (undefined ****)*puVar2;
  ppiStack_2ec = (int **)0x450d50;
  ppppuStack_2e8 = (undefined ****)FUN_0046376d();
  uStack_24._0_1_ = 0x13;
  ppiStack_2ec = (int **)0x450d62;
  basic_string<>();
  uStack_298 = 0;
  uStack_24 = CONCAT31(uStack_24._1_3_,0x14);
  ppppuStack_2e8 = (undefined ****)&local_2b4;
  ppiStack_2ec = (int **)0x450d7e;
  (**(code **)(*(int *)param_1[0xae] + 0x54))();
  ppiStack_2ec = (int **)0x450d87;
  FUN_0040159c();
  ppiStack_2ec = (int **)0x0;
  ppuStack_2f0 = (undefined **)0x1;
  ppppuStack_2f4 = (undefined ****)0x450d93;
  FUN_00401829();
  uStack_28 = 0xffffffff;
  if (ppuStack_2cc != (undefined **)0x0) {
    ppiStack_2ec = (int **)0x450da8;
    FUN_0040127a();
  }
  pppuStack_2d8 = &ppuStack_2f0;
  ppuStack_2f0 = (undefined **)0x1e63;
  ppiStack_2ec = (int **)0x2a;
  ppppuStack_2f4 = &local_2d0;
  pppuStack_2f8 = (undefined ***)0x450dc7;
  puVar2 = (undefined4 *)FUN_00465be3();
  uStack_28 = 0x15;
  ppiStack_2ec = (int **)*puVar2;
  ppuStack_2f0 = (undefined **)0x450de4;
  ppiStack_2ec = (int **)FUN_0046376d();
  uStack_28._0_1_ = 0x16;
  ppuStack_2f0 = (undefined **)0x450df6;
  basic_string<>();
  local_29c = (undefined **)0x0;
  uStack_28 = CONCAT31(uStack_28._1_3_,0x17);
  ppiStack_2ec = &local_2b8;
  ppuStack_2f0 = (undefined **)0x450e12;
  (**(code **)(*(int *)param_1[0xb0] + 0x54))();
  ppuStack_2f0 = (undefined **)0x450e1b;
  FUN_0040159c();
  ppuStack_2f0 = (undefined **)0x0;
  ppppuStack_2f4 = (undefined ****)0x1;
  pppuStack_2f8 = (undefined ***)0x450e27;
  FUN_00401829();
  uStack_2c = 0xffffffff;
  if (local_2d0 != (undefined ***)0x0) {
    ppuStack_2f0 = (undefined **)0x450e3c;
    FUN_0040127a();
  }
  pppppuStack_2dc = &ppppuStack_2f4;
  ppppuStack_2f4 = (undefined ****)0x1e62;
  ppuStack_2f0 = (undefined **)0xa8;
  pppuStack_2f8 = &local_2d4;
  pppuStack_2fc = (undefined ***)0x450e57;
  puVar2 = (undefined4 *)FUN_00465be3();
  uStack_2c = 0x18;
  ppuStack_2f0 = (undefined **)*puVar2;
  ppppuStack_2f4 = (undefined ****)0x450e74;
  ppuStack_2f0 = (undefined **)FUN_0046376d();
  uStack_2c._0_1_ = 0x19;
  ppppuStack_2f4 = (undefined ****)0x450e86;
  basic_string<>();
  puStack_2a0 = (undefined *)0x0;
  uStack_2c = CONCAT31(uStack_2c._1_3_,0x1a);
  ppuStack_2f0 = (undefined **)&local_2bc;
  ppppuStack_2f4 = (undefined ****)0x450ea2;
  (**(code **)(*(int *)param_1[0xb1] + 0x54))();
  ppppuStack_2f4 = (undefined ****)0x450eab;
  FUN_0040159c();
  ppppuStack_2f4 = (undefined ****)0x0;
  pppuStack_2f8 = (undefined ***)0x1;
  pppuStack_2fc = (undefined ***)0x450eb7;
  FUN_00401829();
  uStack_30 = 0xffffffff;
  if (local_2d4 != (undefined **)0x0) {
    ppppuStack_2f4 = (undefined ****)0x450ecc;
    FUN_0040127a();
  }
  ppppuStack_2e0 = &pppuStack_2f8;
  pppuStack_2f8 = (undefined ***)0x1e62;
  ppppuStack_2f4 = (undefined ****)0x21;
  pppuStack_2fc = (undefined ***)&pppuStack_2d8;
  pppuStack_300 = (undefined ***)0x450ee7;
  puVar2 = (undefined4 *)FUN_00465be3();
  uStack_30 = 0x1b;
  ppppuStack_2f4 = (undefined ****)*puVar2;
  pppuStack_2f8 = (undefined ***)0x450f04;
  ppppuStack_2f4 = (undefined ****)FUN_0046376d();
  uStack_30._0_1_ = 0x1c;
  pppuStack_2f8 = (undefined ***)0x450f16;
  basic_string<>();
  iStack_2a4 = 0;
  uStack_30 = CONCAT31(uStack_30._1_3_,0x1d);
  ppppuStack_2f4 = (undefined ****)&stack0xfffffd40;
  pppuStack_2f8 = (undefined ***)0x450f32;
  (**(code **)(*(int *)param_1[0xb3] + 0x54))();
  pppuStack_2f8 = (undefined ***)0x450f3b;
  FUN_0040159c();
  pppuStack_2f8 = (undefined ***)0x0;
  pppuStack_2fc = (undefined ***)0x1;
  pppuStack_300 = (undefined ***)0x450f47;
  FUN_00401829();
  uStack_34 = 0xffffffff;
  if (pppuStack_2d8 != (undefined ***)0x0) {
    pppuStack_2f8 = (undefined ***)0x450f5c;
    FUN_0040127a();
  }
  uStack_268 = 0;
  ppuStack_26c = wxImage::vftable;
  uStack_34 = 0x1e;
  pppuStack_2f8 = (undefined ***)0x450f86;
  FUN_00463759();
  local_2d0 = &ppuStack_26c;
  local_2d4 = W09E346CD::W21FEF8FD::vftable;
  uStack_34 = CONCAT31(uStack_34._1_3_,0x20);
  pppuStack_2f8 = &local_2d4;
  pppuStack_2fc = (undefined ***)0x450faf;
  (**(code **)((int)*pppppuStack_2dc + 4))();
  ppppuStack_2e8 = &pppuStack_300;
  uStack_38._0_1_ = 0x1f;
  pppuStack_300 = (undefined ***)0x1e62;
  pppuStack_2fc = (undefined ***)0xa1;
  puVar2 = (undefined4 *)FUN_00465be3(&pppuStack_2d8);
  uStack_38._0_1_ = 0x21;
  pppuStack_2fc = (undefined ***)*puVar2;
  pppuStack_300 = (undefined ***)0x450fef;
  pppuStack_2fc = (undefined ***)FUN_0046376d();
  uStack_38._0_1_ = 0x22;
  pppuStack_300 = (undefined ***)0x451004;
  basic_string<>();
  uStack_234 = 0;
  ppppuStack_2e8 = &pppuStack_300;
  uStack_38._0_1_ = 0x23;
  pppuStack_300 = (undefined ***)0x1e62;
  pppuStack_2fc = (undefined ***)0xa0;
  puVar2 = (undefined4 *)FUN_00465be3(&iStack_2a4);
  uStack_38._0_1_ = 0x24;
  pppuStack_2fc = (undefined ***)*puVar2;
  pppuStack_300 = (undefined ***)0x451049;
  pppuStack_2fc = (undefined ***)FUN_0046376d();
  uStack_38._0_1_ = 0x25;
  pppuStack_300 = (undefined ***)0x45105e;
  basic_string<>();
  uStack_210 = 0;
  pppuStack_2fc = appuStack_250;
  pppuStack_300 = appuStack_22c;
  uStack_38._0_1_ = 0x26;
  FUN_00456e00(0x1772);
  pppuStack_2fc = (undefined ***)0x45109a;
  FUN_0040159c();
  pppuStack_2fc = (undefined ***)0x0;
  pppuStack_300 = (undefined ***)0x1;
  FUN_00401829();
  uStack_38._0_1_ = 0x23;
  if (puStack_2a0 != (undefined *)0x0) {
    pppuStack_2fc = (undefined ***)0x4510bd;
    FUN_0040127a();
  }
  pppuStack_2fc = (undefined ***)0x4510c9;
  FUN_0040159c();
  pppuStack_2fc = (undefined ***)0x0;
  pppuStack_300 = (undefined ***)0x1;
  FUN_00401829();
  uStack_38._0_1_ = 0x1f;
  if (local_2d4 != (undefined **)0x0) {
    pppuStack_2fc = (undefined ***)0x4510ed;
    FUN_0040127a();
  }
  ppppuStack_2e8 = &pppuStack_300;
  pppuStack_300 = (undefined ***)0x1e62;
  pppuStack_2fc = (undefined ***)0x24;
  puVar2 = (undefined4 *)FUN_00465be3(&uStack_294);
  uStack_38._0_1_ = 0x27;
  pppuStack_2fc = (undefined ***)*puVar2;
  pppuStack_300 = (undefined ***)0x451125;
  pppuStack_2fc = (undefined ***)FUN_0046376d();
  uStack_38._0_1_ = 0x28;
  pppuStack_300 = (undefined ***)0x45113a;
  basic_string<>();
  uStack_1ac = 0;
  ppppuStack_2e8 = &pppuStack_300;
  uStack_38._0_1_ = 0x29;
  pppuStack_300 = (undefined ***)0x1e62;
  pppuStack_2fc = (undefined ***)0x23;
  puVar2 = (undefined4 *)FUN_00465be3(&local_2d0);
  uStack_38._0_1_ = 0x2a;
  pppuStack_2fc = (undefined ***)*puVar2;
  pppuStack_300 = (undefined ***)0x45117e;
  pppuStack_2fc = (undefined ***)FUN_0046376d();
  uStack_38._0_1_ = 0x2b;
  pppuStack_300 = (undefined ***)0x451193;
  basic_string<>();
  uStack_234 = 0;
  uStack_38._0_1_ = 0x2c;
  pppuStack_2fc = (undefined ***)PTR_DAT_03236318;
  pppuStack_300 = (undefined ***)0x4511b4;
  FUN_004325b6();
  ppppuStack_2e8 = &pppuStack_300;
  uStack_38._0_1_ = 0x2d;
  pppuStack_300 = (undefined ***)0x1e62;
  pppuStack_2fc = (undefined ***)0x91;
  puVar2 = (undefined4 *)FUN_00465be3(&pppuStack_2d8);
  uStack_38._0_1_ = 0x2e;
  pppuStack_2fc = (undefined ***)*puVar2;
  pppuStack_300 = (undefined ***)0x4511f4;
  pppuStack_2fc = (undefined ***)FUN_0046376d();
  uStack_38._0_1_ = 0x2f;
  pppuStack_300 = (undefined ***)0x451209;
  basic_string<>();
  uStack_210 = 0;
  pppuStack_2fc = (undefined ***)0xffffffff;
  pppuStack_300 = &ppuStack_270;
  uStack_38._0_1_ = 0x30;
  ppppuStack_2e8 = (undefined ****)FUN_00414f38();
  pppuStack_2fc = (undefined ***)auStack_1c8;
  pppuStack_300 = appuStack_250;
  uVar7 = 0x1774;
  uStack_38._0_1_ = 0x31;
  FUN_00456e00(0x1771,appuStack_22c,appuStack_208);
  pppuStack_2fc = (undefined ***)FUN_00456e00(uVar7);
  pppuStack_300 = (undefined ***)0x451280;
  FUN_00456e85();
  uStack_38._0_1_ = 0x30;
  pppuStack_2fc = (undefined ***)0x451291;
  FUN_008f7630();
  pppuStack_2fc = (undefined ***)0x45129d;
  FUN_0040159c();
  pppuStack_2fc = (undefined ***)0x0;
  pppuStack_300 = (undefined ***)0x1;
  FUN_00401829();
  uStack_38._0_1_ = 0x2d;
  if (local_2d4 != (undefined **)0x0) {
    pppuStack_2fc = (undefined ***)0x4512c1;
    FUN_0040127a();
  }
  pppuStack_2fc = (undefined ***)0x4512cd;
  FUN_0040159c();
  pppuStack_2fc = (undefined ***)0x4512d9;
  FUN_0040159c();
  pppuStack_2fc = (undefined ***)0x0;
  pppuStack_300 = (undefined ***)0x1;
  FUN_00401829();
  uStack_38._0_1_ = 0x29;
  if (ppuStack_2cc != (undefined **)0x0) {
    pppuStack_2fc = (undefined ***)0x4512fa;
    FUN_0040127a();
  }
  pppuStack_2fc = (undefined ***)0x451306;
  FUN_0040159c();
  pppuStack_2fc = (undefined ***)0x0;
  pppuStack_300 = (undefined ***)0x1;
  FUN_00401829();
  uStack_38._0_1_ = 0x1f;
  if (iStack_290 != 0) {
    pppuStack_2fc = (undefined ***)0x45132a;
    FUN_0040127a();
  }
  ppuStack_2cc = *(undefined ***)param_1[199];
  local_2d0 = (undefined ***)param_1[0xc1];
  puStack_2a0 = (undefined *)param_1[199];
  iStack_2a4 = param_1[0xc1];
  pppuStack_2fc = (undefined ***)0x451364;
  cVar1 = FUN_006b8eca();
  if (cVar1 != '\0') {
    uStack_298 = 0;
    local_29c = wxBitmap::vftable;
    uStack_38._0_1_ = 0x39;
    iVar4 = param_1[0xb5];
    if (iVar4 == 1) {
      pppuStack_2fc = (undefined ***)(param_1 + 0x8e);
    }
    else if (iVar4 == 2) {
      pppuStack_2fc = (undefined ***)(param_1 + 0x92);
    }
    else if (iVar4 == 3) {
      pppuStack_2fc = (undefined ***)(param_1 + 0x90);
    }
    else {
      pppuStack_2fc = (undefined ***)(param_1 + 0x8c);
    }
    pppuStack_300 = (undefined ***)0x45156e;
    FUN_0043d987();
    pppuStack_2fc = &local_29c;
    pppuStack_300 = (undefined ***)0x451584;
    FUN_0043d987();
    pppuStack_2fc = (undefined ***)PTR_DAT_03236318;
    pppuStack_300 = (undefined ***)0x451596;
    FUN_004325b6();
    ppppuStack_2e8 = &pppuStack_300;
    uStack_38._0_1_ = 0x3a;
    pppuStack_300 = (undefined ***)0x1e62;
    pppuStack_2fc = (undefined ***)0x89;
    puVar2 = (undefined4 *)FUN_00465be3(&iStack_2a4);
    uStack_38._0_1_ = 0x3b;
    pppuStack_2fc = (undefined ***)*puVar2;
    pppuStack_300 = (undefined ***)0x4515d3;
    pppuStack_2fc = (undefined ***)FUN_0046376d();
    uStack_38._0_1_ = 0x3c;
    pppuStack_300 = (undefined ***)0x4515e8;
    basic_string<>();
    uStack_100 = 0;
    ppppuStack_2e8 = &pppuStack_300;
    uStack_38._0_1_ = 0x3d;
    pppuStack_300 = (undefined ***)0x1e62;
    pppuStack_2fc = (undefined ***)0xa1;
    puVar2 = (undefined4 *)FUN_00465be3(&uStack_294);
    uStack_38._0_1_ = 0x3e;
    pppuStack_2fc = (undefined ***)*puVar2;
    pppuStack_300 = (undefined ***)0x45162f;
    pppuStack_2fc = (undefined ***)FUN_0046376d();
    uStack_38._0_1_ = 0x3f;
    pppuStack_300 = (undefined ***)0x451644;
    basic_string<>();
    uStack_94 = 0;
    ppppuStack_2e8 = &pppuStack_300;
    uStack_38._0_1_ = 0x40;
    pppuStack_300 = (undefined ***)0x1e62;
    pppuStack_2fc = (undefined ***)0xa0;
    puVar2 = (undefined4 *)FUN_00465be3(&uStack_268);
    uStack_38._0_1_ = 0x41;
    pppuStack_2fc = (undefined ***)*puVar2;
    pppuStack_300 = (undefined ***)0x45168e;
    pppuStack_2fc = (undefined ***)FUN_0046376d();
    uStack_38._0_1_ = 0x42;
    pppuStack_300 = (undefined ***)0x4516a3;
    basic_string<>();
    uStack_b8 = 0;
    pppuStack_2fc = (undefined ***)auStack_8c;
    pppuStack_300 = appuStack_11c;
    uVar7 = 0x1773;
    uStack_38._0_1_ = 0x43;
    FUN_00456e00(0x1772,auStack_d4,auStack_b0);
    FUN_00456e00(uVar7);
    pppuStack_2fc = (undefined ***)0x4516fa;
    FUN_0040159c();
    pppuStack_2fc = (undefined ***)0x0;
    pppuStack_300 = (undefined ***)0x1;
    FUN_00401829();
    uStack_38._0_1_ = 0x40;
    if (iStack_264 != 0) {
      pppuStack_2fc = (undefined ***)0x451721;
      FUN_0040127a();
    }
    pppuStack_2fc = (undefined ***)0x45172d;
    FUN_0040159c();
    pppuStack_2fc = (undefined ***)0x0;
    pppuStack_300 = (undefined ***)0x1;
    FUN_00401829();
    uStack_38._0_1_ = 0x3d;
    if (iStack_290 != 0) {
      pppuStack_2fc = (undefined ***)0x451751;
      FUN_0040127a();
    }
    pppuStack_2fc = (undefined ***)0x45175d;
    FUN_0040159c();
    pppuStack_2fc = (undefined ***)0x0;
    pppuStack_300 = (undefined ***)0x1;
    FUN_00401829();
    uStack_38._0_1_ = 0x3a;
    if (puStack_2a0 != (undefined *)0x0) {
      pppuStack_2fc = (undefined ***)0x45177e;
      FUN_0040127a();
    }
    uStack_38._0_1_ = 0x39;
    pppuStack_2fc = (undefined ***)0x451792;
    FUN_0040159c();
    pppuStack_2fc = (undefined ***)PTR_DAT_03236318;
    pppuStack_300 = (undefined ***)0x4517a4;
    FUN_004325b6();
    ppppuStack_2e8 = &pppuStack_300;
    uStack_38._0_1_ = 0x44;
    pppuStack_300 = (undefined ***)0x1e62;
    pppuStack_2fc = (undefined ***)0x37;
    puVar2 = (undefined4 *)FUN_00465be3(auStack_258);
    uStack_38._0_1_ = 0x45;
    pppuStack_2fc = (undefined ***)*puVar2;
    pppuStack_300 = (undefined ***)0x4517e9;
    pppuStack_2fc = (undefined ***)FUN_0046376d();
    uStack_38._0_1_ = 0x46;
    pppuStack_300 = (undefined ***)0x4517fe;
    basic_string<>();
    uStack_1ec = 0;
    uStack_38._0_1_ = 0x47;
    pppuStack_2fc = (undefined ***)PTR_DAT_03236318;
    pppuStack_300 = (undefined ***)0x45181f;
    FUN_004325b6();
    ppppuStack_2e8 = &pppuStack_300;
    uStack_38._0_1_ = 0x48;
    pppuStack_300 = (undefined ***)0x1e62;
    pppuStack_2fc = (undefined ***)0x79;
    puVar2 = (undefined4 *)FUN_00465be3(local_260);
    uStack_38._0_1_ = 0x49;
    pppuStack_2fc = (undefined ***)*puVar2;
    pppuStack_300 = (undefined ***)0x451860;
    pppuStack_2fc = (undefined ***)FUN_0046376d();
    uStack_38._0_1_ = 0x4a;
    pppuStack_300 = (undefined ***)0x451875;
    basic_string<>();
    uStack_164 = 0;
    ppppuStack_2e8 = &pppuStack_300;
    uStack_38._0_1_ = 0x4b;
    pppuStack_300 = (undefined ***)0x1e62;
    pppuStack_2fc = (undefined ***)0x20;
    puVar2 = (undefined4 *)FUN_00465be3(&local_2d0);
    uStack_38._0_1_ = 0x4c;
    pppuStack_2fc = (undefined ***)*puVar2;
    pppuStack_300 = (undefined ***)0x4518ba;
    pppuStack_2fc = (undefined ***)FUN_0046376d();
    uStack_38._0_1_ = 0x4d;
    pppuStack_300 = (undefined ***)0x4518cf;
    basic_string<>();
    uStack_188 = 0;
    ppppuStack_2e8 = &pppuStack_300;
    uStack_38._0_1_ = 0x4e;
    pppuStack_300 = (undefined ***)0x1e62;
    pppuStack_2fc = (undefined ***)0x34;
    puVar2 = (undefined4 *)FUN_00465be3(&pppuStack_2d8);
    uStack_38._0_1_ = 0x4f;
    pppuStack_2fc = (undefined ***)*puVar2;
    pppuStack_300 = (undefined ***)0x451911;
    pppuStack_2fc = (undefined ***)FUN_0046376d();
    uStack_38._0_1_ = 0x50;
    pppuStack_300 = (undefined ***)0x451926;
    basic_string<>();
    uStack_dc = 0;
    pppuStack_2fc = (undefined ***)auStack_140;
    pppuStack_300 = appuStack_208;
    uVar8 = 0x1778;
    puVar6 = auStack_68;
    pppuVar5 = appuStack_180;
    uVar7 = 0x1776;
    uStack_38._0_1_ = 0x51;
    FUN_00456e00(0x1775,auStack_f8,auStack_1a4);
    FUN_00456e00(uVar7,pppuVar5,puVar6);
    FUN_00456e00(uVar8);
    pppuStack_2fc = (undefined ***)0x45199c;
    FUN_0040159c();
    pppuStack_2fc = (undefined ***)0x0;
    pppuStack_300 = (undefined ***)0x1;
    FUN_00401829();
    uStack_38._0_1_ = 0x4e;
    if (local_2d4 != (undefined **)0x0) {
      pppuStack_2fc = (undefined ***)0x4519bf;
      FUN_0040127a();
    }
    pppuStack_2fc = (undefined ***)0x4519cb;
    FUN_0040159c();
    pppuStack_2fc = (undefined ***)0x0;
    pppuStack_300 = (undefined ***)0x1;
    FUN_00401829();
    uStack_38._0_1_ = 0x4b;
    if (ppuStack_2cc != (undefined **)0x0) {
      pppuStack_2fc = (undefined ***)0x4519ee;
      FUN_0040127a();
    }
    pppuStack_2fc = (undefined ***)0x4519fa;
    FUN_0040159c();
    pppuStack_2fc = (undefined ***)0x0;
    pppuStack_300 = (undefined ***)0x1;
    FUN_00401829();
    uStack_38._0_1_ = 0x48;
    if (iStack_25c != 0) {
      pppuStack_2fc = (undefined ***)0x451a20;
      FUN_0040127a();
    }
    pppuStack_2fc = (undefined ***)0x451a2c;
    FUN_0040159c();
    pppuStack_2fc = (undefined ***)0x451a38;
    FUN_0040159c();
    pppuStack_2fc = (undefined ***)0x0;
    pppuStack_300 = (undefined ***)0x1;
    FUN_00401829();
    uStack_38._0_1_ = 0x44;
    if (iStack_254 != 0) {
      pppuStack_2fc = (undefined ***)0x451a5e;
      FUN_0040127a();
    }
    uStack_38._0_1_ = 0x39;
    pppuStack_2fc = (undefined ***)0x451a72;
    FUN_0040159c();
    ppppuStack_2e8 = &pppuStack_300;
    pppuStack_300 = (undefined ***)0x1e62;
    pppuStack_2fc = (undefined ***)0x24;
    puVar2 = (undefined4 *)FUN_00465be3(&uStack_294);
    uStack_38._0_1_ = 0x52;
    pppuStack_2fc = (undefined ***)*puVar2;
    pppuStack_300 = (undefined ***)0x451aaa;
    pppuStack_2fc = (undefined ***)FUN_0046376d();
    uStack_38._0_1_ = 0x53;
    pppuStack_300 = (undefined ***)0x451abf;
    basic_string<>();
    uStack_188 = 0;
    ppppuStack_2e8 = &pppuStack_300;
    uStack_38._0_1_ = 0x54;
    pppuStack_300 = (undefined ***)0x1e62;
    pppuStack_2fc = (undefined ***)0x23;
    puVar2 = (undefined4 *)FUN_00465be3(&uStack_268);
    uStack_38._0_1_ = 0x55;
    pppuStack_2fc = (undefined ***)*puVar2;
    pppuStack_300 = (undefined ***)0x451b09;
    pppuStack_2fc = (undefined ***)FUN_0046376d();
    uStack_38._0_1_ = 0x56;
    pppuStack_300 = (undefined ***)0x451b1e;
    basic_string<>();
    uStack_164 = 0;
    uStack_38._0_1_ = 0x57;
    pppuStack_2fc = (undefined ***)PTR_DAT_03236318;
    pppuStack_300 = (undefined ***)0x451b3f;
    FUN_004325b6();
    ppppuStack_2e8 = &pppuStack_300;
    uStack_38._0_1_ = 0x58;
    pppuStack_300 = (undefined ***)0x1e62;
    pppuStack_2fc = (undefined ***)0x7d;
    puVar2 = (undefined4 *)FUN_00465be3(local_260);
    uStack_38._0_1_ = 0x59;
    pppuStack_2fc = (undefined ***)*puVar2;
    pppuStack_300 = (undefined ***)0x451b82;
    pppuStack_2fc = (undefined ***)FUN_0046376d();
    uStack_38._0_1_ = 0x5a;
    pppuStack_300 = (undefined ***)0x451b97;
    basic_string<>();
    uStack_1ec = 0;
    uStack_38._0_1_ = 0x5b;
    pppuStack_2fc = (undefined ***)0xffffffff;
    pppuStack_300 = &ppuStack_270;
    ppppuStack_2e8 = (undefined ****)FUN_00414f38();
    pppuStack_2fc = (undefined ***)auStack_1a4;
    pppuStack_300 = appuStack_180;
    uVar7 = 0x1774;
    uStack_38._0_1_ = 0x5c;
    FUN_00456e00(0x1777,appuStack_208,auStack_140);
    pppuStack_2fc = (undefined ***)FUN_00456e00(uVar7);
    pppuStack_300 = (undefined ***)0x451c11;
    FUN_00456e85();
    uStack_38._0_1_ = 0x5b;
    pppuStack_2fc = (undefined ***)0x451c25;
    FUN_008f7630();
    pppuStack_2fc = (undefined ***)0x451c31;
    FUN_0040159c();
    pppuStack_2fc = (undefined ***)0x0;
    pppuStack_300 = (undefined ***)0x1;
    FUN_00401829();
    uStack_38._0_1_ = 0x58;
    if (iStack_25c != 0) {
      pppuStack_2fc = (undefined ***)0x451c58;
      FUN_0040127a();
    }
    pppuStack_2fc = (undefined ***)0x451c64;
    FUN_0040159c();
    pppuStack_2fc = (undefined ***)0x451c70;
    FUN_0040159c();
    pppuStack_2fc = (undefined ***)0x0;
    pppuStack_300 = (undefined ***)0x1;
    FUN_00401829();
    uStack_38._0_1_ = 0x54;
    if (iStack_264 != 0) {
      pppuStack_2fc = (undefined ***)0x451c97;
      FUN_0040127a();
    }
    pppuStack_2fc = (undefined ***)0x451ca3;
    FUN_0040159c();
    pppuStack_2fc = (undefined ***)0x0;
    pppuStack_300 = (undefined ***)0x1;
    FUN_00401829();
    uStack_38._0_1_ = 0x39;
    if (iStack_290 != 0) {
      pppuStack_2fc = (undefined ***)0x451cc7;
      FUN_0040127a();
    }
    pppuStack_2fc = (undefined ***)0x451cd1;
    (**(code **)(*param_1 + 0x360))();
    uStack_38._0_1_ = 0x1f;
    pppuStack_2fc = (undefined ***)0x451ce2;
    FUN_008f7630();
    uStack_38 = CONCAT31(uStack_38._1_3_,0x1e);
    if (pppppuStack_2dc != (undefined *****)0x0) {
      pppuStack_2fc = (undefined ***)0x451cf7;
      FUN_0040127a();
    }
    uStack_38 = 0xffffffff;
    ppuStack_270 = wxObject::vftable;
    pppuStack_2fc = (undefined ***)0x451d16;
    FUN_0083e850();
    ExceptionList = pvStack_40;
    return;
  }
  pppuStack_2fc = (undefined ***)0x451371;
  puVar2 = (undefined4 *)FUN_006badde();
  ppppuStack_2e8 = (undefined ****)*puVar2;
  pppuStack_2fc = (undefined ***)0x45137c;
  iVar4 = FUN_006badde();
  pppuStack_2d8 = *(undefined ****)(iVar4 + 4);
  pppuStack_2fc = (undefined ***)(iVar4 + 8);
                    // WARNING: Subroutine does not return
  pppuStack_300 = (undefined ***)&UNK_00451390;
  FUN_0043c023();
}



undefined4 FUN_00451dc7(undefined4 param_1)

{
  FUN_004747e9(param_1);
  return param_1;
}



void __thiscall FUN_00451ebc(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  undefined4 uStack_14;
  
  piVar1 = *(int **)(param_1_00 + 0x290);
  if (piVar1 != (int *)0x0) {
    FUN_00452fbf(&LAB_00a2b6b0,0,param_1,uStack_14);
    (**(code **)(*piVar1 + 0x18))();
  }
  return;
}



void __thiscall FUN_00451f1f(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  undefined4 uStack_14;
  
  piVar1 = *(int **)(param_1_00 + 0x290);
  if (piVar1 != (int *)0x0) {
    FUN_00452fbf(&LAB_00a2b6b0,0,param_1,uStack_14);
    (**(code **)(*piVar1 + 0x24))();
  }
  return;
}



void __thiscall FUN_00451f82(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  undefined4 uStack_14;
  
  piVar1 = *(int **)(param_1_00 + 0x290);
  if (piVar1 != (int *)0x0) {
    FUN_00452fbf(&LAB_00a2b6b0,0,param_1,uStack_14);
    (**(code **)(*piVar1 + 0x2c))();
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00452064(void)

{
  int *unaff_ESI;
  undefined local_70 [104];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x60;
  local_8 = 0x452070;
  FUN_0092bd60(DAT_032ee2b8,0x1779);
  local_8 = 0;
  (**(code **)(*unaff_ESI + 0x20))(local_70);
  local_8 = 0xffffffff;
  FUN_00454a4e();
  FUN_00a421fb();
  return;
}



void FUN_00452124(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined *local_34;
  undefined4 uStack_30;
  uint uStack_2c;
  undefined auStack_28 [4];
  undefined **local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  uStack_2c = DAT_0323f878 ^ (uint)auStack_28;
  ExceptionList = &local_14;
  uStack_30 = param_2;
  local_34 = local_20;
  puVar1 = (undefined4 *)FUN_004573fc();
  local_c = 0;
  local_34 = (undefined *)*puVar1;
  local_24 = &local_34;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void __fastcall FUN_004521a1(int param_1)

{
  int iStack_20;
  int iStack_1c;
  
  iStack_20 = param_1;
  iStack_1c = param_1;
  FUN_00457384(&iStack_20);
  FUN_004925a9(*(int *)(param_1 + 0x98),0);
  if (-1 < *(int *)(*(int *)(param_1 + 0x98) + 0x180) + -1) {
    iStack_1c = 0x4521e6;
    FUN_004929f0();
  }
  return;
}



void FUN_004521ef(void)

{
  FUN_00493ee0();
  FUN_00493ee0();
  FUN_0049288c();
  return;
}



void __thiscall FUN_00452215(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1_00 + 0xe0) = *(undefined4 *)(param_1 + 4);
  FUN_00452064();
  return;
}



// WARNING: Removing unreachable block (ram,0x004523fd)
// WARNING: Removing unreachable block (ram,0x0045240f)

void __fastcall FUN_0045236c(int param_1)

{
  uint uVar1;
  char local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c4a002;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  local_c = 0;
  FUN_0043d406(param_1 + 0x2d8);
  local_c._0_1_ = 1;
  if (*(int *)(param_1 + 0x2fc) != 0) {
    FUN_00452a5a(uVar1);
    FUN_004fe47e();
    FUN_00452a84();
  }
  local_c = (uint)local_c._1_3_ << 8;
  if (local_1c != '\0') {
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_004526a6(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 local_38;
  int local_34;
  undefined local_30 [16];
  undefined4 local_20;
  undefined4 local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c16cf2;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_14;
  local_38 = *(undefined4 *)(param_1 + 0x14);
  local_34 = param_1_00;
  FUN_00452ac8(local_30,&local_38);
  local_1c = *(undefined4 *)(param_1_00 + 0x31c);
  local_20 = *(undefined4 *)(param_1_00 + 0x304);
  cVar1 = FUN_006b8eca(uVar2);
  if ((cVar1 == '\0') && (*(int *)(local_34 + 0x290) != 0)) {
    iVar3 = FUN_006badde();
    local_20 = *(undefined4 *)(iVar3 + 4);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar3 + 8);
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_00452943(int *param_1)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  
  ppiVar2 = (int **)FUN_00418daa(1,0);
  if (ppiVar2 == (int **)0x0) {
    ppiVar2 = (int **)0x0;
  }
  else {
    *ppiVar2 = param_1;
  }
  *param_1 = (int)ppiVar2;
  iVar3 = FUN_004654df();
  piVar1 = param_1 + 6;
  *piVar1 = iVar3;
  *(undefined *)(iVar3 + 0x15) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[7] = 0;
  return param_1;
}



int FUN_00452997(int *param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *unaff_EBX;
  int local_18;
  int local_14;
  undefined local_10 [12];
  
  iVar3 = FUN_00452f18();
  if (unaff_EBX == (int *)0x0) {
    FUN_00a3fb10();
  }
  iVar1 = *unaff_EBX;
  local_14 = unaff_EBX[6];
  local_18 = iVar1;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (*param_1 < *(int *)(iVar3 + 0xc))) {
    local_18 = *param_1;
    local_14 = 0;
    FUN_00452be5(local_10,&local_18,iVar1,iVar3);
  }
  iVar3 = FUN_006badde();
  return iVar3 + 4;
}



void FUN_00452a31(void)

{
  int **ppiVar1;
  int *unaff_ESI;
  
  ppiVar1 = (int **)FUN_00418daa(1,0);
  if (ppiVar1 == (int **)0x0) {
    ppiVar1 = (int **)0x0;
  }
  else {
    *ppiVar1 = unaff_ESI;
  }
  *unaff_ESI = (int)ppiVar1;
  unaff_ESI[4] = 0;
  unaff_ESI[5] = 0;
  unaff_ESI[6] = 0;
  unaff_ESI[7] = 0;
  return;
}



void FUN_00452a5a(void)

{
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0x1c) + *(uint *)(unaff_ESI + 0x18) < *(uint *)(unaff_ESI + 0x18)) {
    FUN_00a3fb10();
  }
  FUN_006913fd();
  return;
}



void FUN_00452a84(void)

{
  int *piVar1;
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0x1c) != 0) {
    if (*(int *)(*(int *)(*(int *)(unaff_ESI + 0x10) + (*(uint *)(unaff_ESI + 0x18) >> 1) * 4) + 4 +
                (*(uint *)(unaff_ESI + 0x18) & 1) * 8) != 0) {
      FUN_0040127a();
    }
    *(int *)(unaff_ESI + 0x18) = *(int *)(unaff_ESI + 0x18) + 1;
    if ((uint)(*(int *)(unaff_ESI + 0x14) * 2) <= *(uint *)(unaff_ESI + 0x18)) {
      *(undefined4 *)(unaff_ESI + 0x18) = 0;
    }
    piVar1 = (int *)(unaff_ESI + 0x1c);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      *(undefined4 *)(unaff_ESI + 0x18) = 0;
    }
  }
  return;
}



void FUN_00452ac8(undefined4 *param_1,int *param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  FUN_00452e99(param_2);
  local_10 = unaff_EBX[6];
  local_14 = *unaff_EBX;
  puVar3 = &local_c;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (*param_2 < *(int *)(local_8 + 0xc))) {
    local_10 = unaff_EBX[6];
    local_14 = *unaff_EBX;
    puVar3 = &local_14;
  }
  uVar1 = puVar3[1];
  *param_1 = *puVar3;
  param_1[1] = uVar1;
  return;
}



void __thiscall FUN_00452b29(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxRibbonButtonBarEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



undefined4 __fastcall FUN_00452b74(int param_1)

{
  return *(undefined4 *)(param_1 + 4);
}



void FUN_00452bd8(void)

{
  int in_EAX;
  
  if (*(int *)(in_EAX + 8) != 0) {
    FUN_0040127a();
    return;
  }
  return;
}



undefined4 * FUN_00452be5(undefined4 *param_1,int *param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int in_EAX;
  int iVar4;
  undefined4 *puVar5;
  bool bVar6;
  undefined4 uVar7;
  
  if (*(int *)(in_EAX + 0x1c) == 0) {
    param_4 = *(int *)(in_EAX + 0x18);
  }
  else {
    cVar3 = FUN_006b8eca();
    if (cVar3 == '\0') {
      cVar3 = FUN_006b8eca();
      if (cVar3 != '\0') {
        param_4 = *(int *)(*(int *)(in_EAX + 0x18) + 8);
        if (*param_2 <= *(int *)(param_4 + 0xc)) goto LAB_00452d18;
        uVar7 = 0;
        goto LAB_00452c07;
      }
      iVar4 = *param_2;
      iVar1 = *(int *)(param_4 + 0xc);
      bVar6 = SBORROW4(iVar1,iVar4);
      iVar2 = iVar1 - iVar4;
      if (iVar4 < iVar1) {
        iVar4 = FUN_005d021f();
        iVar2 = *param_2;
        if (iVar2 <= *(int *)(*(int *)(iVar4 + 4) + 0xc)) {
          bVar6 = SBORROW4(*(int *)(param_4 + 0xc),iVar2);
          iVar2 = *(int *)(param_4 + 0xc) - iVar2;
          goto LAB_00452ccb;
        }
        cVar3 = *(char *)(*(int *)(param_4 + 8) + 0x15);
      }
      else {
LAB_00452ccb:
        if (bVar6 == iVar2 < 0) {
LAB_00452d18:
          puVar5 = (undefined4 *)FUN_007d4c77(in_EAX,param_2);
          *param_1 = *puVar5;
          param_1[1] = puVar5[1];
          return param_1;
        }
        FUN_00448b61();
        cVar3 = FUN_006b8eca();
        if ((cVar3 == '\0') && (*(int *)(param_4 + 0xc) <= *param_2)) goto LAB_00452d18;
        cVar3 = *(char *)(*(int *)(param_4 + 8) + 0x15);
      }
      if (cVar3 == '\0') {
        uVar7 = 1;
      }
      else {
        uVar7 = 0;
      }
      goto LAB_00452c07;
    }
    if (*(int *)(param_4 + 0xc) <= *param_2) goto LAB_00452d18;
  }
  uVar7 = 1;
LAB_00452c07:
  FUN_007d4d3b(param_1,uVar7,param_4,param_2);
  return param_1;
}



undefined4 * FUN_00452d3a(undefined4 *param_1,int *param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int in_EAX;
  int iVar4;
  undefined4 *puVar5;
  bool bVar6;
  undefined4 uVar7;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar3 = FUN_006b8eca();
    if (cVar3 == '\0') {
      cVar3 = FUN_006b8eca();
      if (cVar3 == '\0') {
        iVar4 = *param_2;
        iVar1 = *(int *)(param_4 + 0xc);
        bVar6 = SBORROW4(iVar1,iVar4);
        iVar2 = iVar1 - iVar4;
        if (iVar4 < iVar1) {
          iVar4 = FUN_007fd84d();
          iVar2 = *param_2;
          if (*(int *)(*(int *)(iVar4 + 4) + 0xc) < iVar2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x19) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_00452d5c;
          }
          bVar6 = SBORROW4(*(int *)(param_4 + 0xc),iVar2);
          iVar2 = *(int *)(param_4 + 0xc) - iVar2;
        }
        if (bVar6 != iVar2 < 0) {
          FUN_00452ecb();
          cVar3 = FUN_006b8eca();
          if ((cVar3 != '\0') || (*param_2 < *(int *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x19) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_00452d5c;
          }
        }
LAB_00452e77:
        puVar5 = (undefined4 *)FUN_00471fff(in_EAX,param_2);
        *param_1 = *puVar5;
        param_1[1] = puVar5[1];
        return param_1;
      }
      if (*param_2 <= *(int *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_00452e77;
      uVar7 = 0;
      goto LAB_00452d5c;
    }
    if (*(int *)(param_4 + 0xc) <= *param_2) goto LAB_00452e77;
  }
  uVar7 = 1;
LAB_00452d5c:
  FUN_006bd125(param_1,uVar7,param_2);
  return param_1;
}



void FUN_00452e99(int *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x19) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((int)puVar2[3] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x19) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



void FUN_00452ecb(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x19) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x19) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x19) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x19) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



undefined4 * __fastcall FUN_00452f18(undefined4 param_1,int *param_2)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  puVar2 = *(undefined4 **)(in_EAX + 0x18);
  if (*(char *)((int)(undefined4 *)puVar2[1] + 0x15) == '\0') {
    puVar1 = puVar2;
    puVar3 = (undefined4 *)puVar2[1];
    do {
      puVar2 = puVar3;
      if ((int)puVar2[3] < *param_2) {
        puVar3 = (undefined4 *)puVar2[2];
        puVar2 = puVar1;
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
      }
      puVar1 = puVar2;
    } while (*(char *)((int)puVar3 + 0x15) == '\0');
  }
  return puVar2;
}



undefined4 FUN_00452f3b(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *in_EAX;
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x1c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *in_EAX;
    puVar1[4] = in_EAX[1];
                    // WARNING: Subroutine does not return
    FUN_0043c023(in_EAX + 2);
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00452f87(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxRibbonButtonBarEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[2] = param_1;
    puVar1[3] = param_2;
  }
  return puVar1;
}



void FUN_00452fbf(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_14 = param_1;
  uStack_10 = param_2;
  uStack_c = param_3;
  uStack_8 = param_4;
  cVar1 = FUN_007f2630(&local_14);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_14;
      unaff_EBX[3] = uStack_10;
      unaff_EBX[4] = uStack_c;
      unaff_EBX[5] = uStack_8;
    }
    *unaff_EBX = &DAT_00fb0dbd;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



void FUN_004530e3(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00453190(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::W95101E40,class_boost::shared_ptr<class_WDE765622::W441A93CE>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::W95101E40*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0045311c(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_004531dd(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf1<bool,class_wxRibbonButtonBarEvent,class_wxMenu*>,class_boost::_bi::list2<class_boost::_bi::value<class_wxRibbonButtonBarEvent*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00453155(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0045322a(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::W95101E40,class_boost::shared_ptr<class_W5D651E7E::W44980BFD>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::W95101E40*>,class_boost::_bi::value<class_boost::shared_ptr<class_W5D651E7E::W44980BFD>_>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_00453190(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::W95101E40,class_boost::shared_ptr<class_WDE765622::W441A93CE>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::W95101E40*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::W95101E40,class_boost::shared_ptr<class_WDE765622::W441A93CE>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::W95101E40*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void __fastcall FUN_004531dd(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf1<bool,class_wxRibbonButtonBarEvent,class_wxMenu*>,class_boost::_bi::list2<class_boost::_bi::value<class_wxRibbonButtonBarEvent*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf1<bool,class_wxRibbonButtonBarEvent,class_wxMenu*>,class_boost::_bi::list2<class_boost::_bi::value<class_wxRibbonButtonBarEvent*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void FUN_0045322a(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  uint unaff_EBX;
  int unaff_EDI;
  
  if ((unaff_EDI == 0) || (unaff_EDI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_0048f996();
    }
    if (unaff_EDI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EBX + 0x10);
  }
  else {
    if (unaff_EDI != 2) {
      if (unaff_EDI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::W95101E40,class_boost::shared_ptr<class_W5D651E7E::W44980BFD>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::W95101E40*>,class_boost::_bi::value<class_boost::shared_ptr<class_W5D651E7E::W44980BFD>_>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EBX);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<void,class_boost::_mfi::mf1<void,class_W5D651E7E::W95101E40,class_boost::shared_ptr<class_W5D651E7E::W44980BFD>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W5D651E7E::W95101E40*>,class_boost::_bi::value<class_boost::shared_ptr<class_W5D651E7E::W44980BFD>_>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[4];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004532fe(void)

{
  int *unaff_ESI;
  char local_18;
  
  if ((-(uint)(*unaff_ESI != 0) & 0x7a491c) != 0) {
    FUN_004db8a7();
  }
  FUN_0043d406(unaff_ESI + 8);
  *(undefined *)(unaff_ESI + 0x15) = 1;
  FUN_0044953d();
  if (local_18 != '\0') {
    FUN_00401477();
  }
  return;
}



void FUN_00453352(void)

{
  int in_EAX;
  
  if (*(char *)(in_EAX + 4) != '\0') {
    FUN_0043d358();
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00453360(void)

{
  code *pcVar1;
  undefined4 uVar2;
  
  uVar2 = FUN_00401426();
  FUN_00401bd4(uVar2);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

HANDLE * FUN_0045337f(HANDLE *param_1,HANDLE *param_2)

{
  HANDLE pvVar1;
  HANDLE hSourceProcessHandle;
  BOOL BVar2;
  undefined4 uVar3;
  
  pvVar1 = CreateSemaphoreA((LPSECURITY_ATTRIBUTES)0x0,0,0x7fffffff,(LPCSTR)0x0);
  if (pvVar1 == (HANDLE)0x0) {
    pvVar1 = (HANDLE)FUN_00453360();
  }
  *param_1 = pvVar1;
  pvVar1 = *param_2;
  hSourceProcessHandle = GetCurrentProcess();
  param_2 = (HANDLE *)0x0;
  BVar2 = DuplicateHandle(hSourceProcessHandle,pvVar1,hSourceProcessHandle,&param_2,0,0,2);
  if (BVar2 == 0) {
    uVar3 = FUN_00401426();
    FUN_00401bd4(uVar3);
  }
  param_1[1] = param_2;
  param_1[2] = (HANDLE)0x1;
  *(undefined *)(param_1 + 3) = 0;
  param_1[4] = (HANDLE)0x0;
  return param_1;
}



void FUN_00453403(int param_1,int param_2,undefined4 param_3)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    if (param_1 != 0) {
      FUN_0044938e(param_3);
    }
    param_1 = param_1 + 4;
  }
  return;
}



int FUN_00453428(void)

{
  int unaff_EBX;
  int unaff_ESI;
  
  FUN_00453403();
  return unaff_EBX + unaff_ESI * 4;
}



int __thiscall FUN_0045344e(int param_1_00,int param_1)

{
  int in_EAX;
  
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 4) {
    if (in_EAX != 0) {
      FUN_0044938e(param_1_00);
    }
    in_EAX = in_EAX + 4;
  }
  return in_EAX;
}



void FUN_00453473(undefined4 param_1)

{
  FUN_0045344e(param_1,param_1,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00453497(int param_1,int param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  int extraout_ECX;
  int iVar5;
  undefined8 uVar6;
  uint local_18;
  
  iVar5 = param_1;
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 == 0) {
    local_18 = 0;
  }
  else {
    local_18 = *(int *)(param_1 + 0x14) - iVar1 >> 2;
  }
  iVar3 = *(int *)(param_1 + 0x10);
  iVar1 = iVar3 - iVar1 >> 2;
  uVar6 = CONCAT44(0x3fffffff,iVar1);
  if (iVar1 == 0x3fffffff) {
    uVar6 = FUN_004423c1();
    iVar3 = extraout_ECX;
  }
  uVar2 = (int)uVar6 + 1;
  if (local_18 < uVar2) {
    if ((int)((ulonglong)uVar6 >> 0x20) - (local_18 >> 1) < local_18) {
      local_18 = 0;
    }
    else {
      local_18 = local_18 + (local_18 >> 1);
    }
    if (local_18 < uVar2) {
      local_18 = uVar2;
    }
    iVar3 = FUN_00467f53();
    iVar1 = param_4 - *(int *)(iVar5 + 0xc);
    FUN_00453428(param_2);
    FUN_00453473(param_4,iVar3);
    FUN_00453473(*(undefined4 *)(iVar5 + 0x10),iVar3 + 4 + (iVar1 >> 2) * 4);
    iVar1 = *(int *)(iVar5 + 0xc);
    if (iVar1 != 0) {
      FUN_0042bd39(iVar1,*(int *)(iVar5 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar5 + 0xc));
    }
    *(uint *)(iVar5 + 0x14) = iVar3 + local_18 * 4;
    *(int *)(iVar5 + 0x10) = iVar3 + ((*(int *)(iVar5 + 0x10) - iVar1 >> 2) + 1) * 4;
    *(int *)(iVar5 + 0xc) = iVar3;
  }
  else {
    if (iVar3 - param_4 >> 2 == 0) {
      FUN_0044938e(param_2);
      FUN_00453473(*(undefined4 *)(iVar5 + 0x10),param_4 + 4);
      FUN_00453428(&param_2);
      *(int *)(iVar5 + 0x10) = *(int *)(iVar5 + 0x10) + 4;
      iVar1 = *(int *)(iVar5 + 0x10);
      for (iVar5 = param_4; iVar3 = param_2, iVar5 != iVar1 + -4; iVar5 = iVar5 + 4) {
        FUN_004493a9(&param_2);
      }
    }
    else {
      FUN_0044938e(param_2);
      iVar3 = *(int *)(iVar5 + 0x10);
      iVar1 = iVar3 + -4;
      uVar4 = FUN_00453473(iVar3,iVar3);
      iVar3 = param_4;
      *(undefined4 *)(iVar5 + 0x10) = uVar4;
      while (iVar3 != iVar1) {
        iVar1 = iVar1 + -4;
        FUN_004493a9(iVar1);
      }
      iVar1 = param_4 + 4;
      for (iVar5 = param_4; iVar3 = param_1, iVar5 != iVar1; iVar5 = iVar5 + 4) {
        FUN_004493a9(&param_1);
      }
    }
    if (iVar3 != 0) {
      FUN_0042bcad(iVar3);
    }
  }
  return;
}



void Catch_All_00453594(void)

{
  int iVar1;
  int iVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + -0x1c);
  iVar2 = *(int *)(unaff_EBP + -0x20);
  if (1 < *(int *)(unaff_EBP + -0x18)) {
    FUN_0042bd39(iVar1,iVar1 + iVar2 * 4);
  }
  if (0 < *(int *)(unaff_EBP + -0x18)) {
    FUN_0042bd39(iVar1 + iVar2 * 4,iVar1 + 4 + iVar2 * 4);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar1);
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004535ce(void)

{
  undefined4 uVar1;
  int extraout_ECX;
  int iVar2;
  int unaff_EBP;
  uint unaff_ESI;
  int unaff_EDI;
  int iVar3;
  
  __CxxThrowException_8();
  if ((uint)(extraout_ECX - *(int *)(unaff_EBP + 0x14) >> 2) < unaff_ESI) {
    FUN_0044938e();
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_00453473();
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_00453428();
    *(int *)(unaff_EDI + 0x10) = *(int *)(unaff_EDI + 0x10) + 4;
    iVar2 = *(int *)(unaff_EDI + 0x10);
    for (iVar3 = *(int *)(unaff_EBP + 0x14); iVar3 != iVar2 + -4; iVar3 = iVar3 + 4) {
      FUN_004493a9();
    }
    iVar2 = *(int *)(unaff_EBP + 0xc);
  }
  else {
    FUN_0044938e();
    *(undefined4 *)(unaff_EBP + -4) = 5;
    iVar2 = *(int *)(unaff_EDI + 0x10) + -4;
    uVar1 = FUN_00453473();
    *(undefined4 *)(unaff_EDI + 0x10) = uVar1;
    iVar3 = *(int *)(unaff_EBP + 0x14);
    if (iVar3 != iVar2) {
      do {
        iVar2 = iVar2 + -4;
        FUN_004493a9();
      } while (iVar2 != iVar3);
      iVar3 = *(int *)(unaff_EBP + 0x14);
    }
    iVar2 = iVar3 + 4;
    for (; iVar3 != iVar2; iVar3 = iVar3 + 4) {
      FUN_004493a9();
    }
    iVar2 = *(int *)(unaff_EBP + 8);
  }
  if (iVar2 != 0) {
    FUN_0042bcad();
  }
  return;
}



void Catch_All_0045364f(void)

{
  int unaff_EBP;
  
  FUN_0042bd39(*(int *)(unaff_EBP + 0x14) + 4,*(int *)(*(int *)(unaff_EBP + 8) + 0x10) + 4);
  FUN_004535ce(0);
  return;
}



void FUN_004536df(undefined4 param_1,int param_2,int param_3)

{
  undefined4 uVar1;
  int in_EAX;
  undefined4 *puVar2;
  int iVar3;
  undefined4 *unaff_EDI;
  int local_10;
  int local_c;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc) & 0xfffffffcU) == 0) {
    iVar3 = 0;
  }
  else {
    FUN_004494bc(*(int *)(in_EAX + 0xc),in_EAX);
    if ((param_2 == 0) || (param_2 != local_10)) {
      FUN_00a3fb10();
    }
    iVar3 = param_3 - local_c >> 2;
  }
  FUN_00453497();
  FUN_004494bc(*(undefined4 *)(in_EAX + 0xc),in_EAX);
  puVar2 = (undefined4 *)FUN_004537c5(iVar3);
  uVar1 = *puVar2;
  unaff_EDI[1] = puVar2[1];
  *unaff_EDI = uVar1;
  return;
}



void FUN_00453763(int param_1,undefined4 param_2)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 local_c;
  undefined4 local_8;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 == 0) {
    uVar2 = 0;
  }
  else {
    uVar2 = *(int *)(param_1 + 0x14) - iVar1 >> 2;
  }
  if ((uint)(*(int *)(param_1 + 0x10) - iVar1 >> 2) < uVar2) {
    uVar3 = FUN_00453428(param_2);
    *(undefined4 *)(param_1 + 0x10) = uVar3;
  }
  else {
    FUN_004494bc(*(int *)(param_1 + 0x10),param_1);
    FUN_004536df(param_2,local_c,local_8);
  }
  return;
}



void FUN_004537c5(int param_1)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 != (int *)0x0) goto LAB_004537d6;
    iVar2 = 0;
  }
  else {
LAB_004537d6:
    iVar2 = *piVar1;
  }
  if (unaff_ESI[1] + param_1 <= *(int **)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *piVar1;
    }
    if (*(int **)(iVar2 + 0xc) <= unaff_ESI[1] + param_1) goto LAB_00453802;
  }
  FUN_00a3fb10();
LAB_00453802:
  unaff_ESI[1] = unaff_ESI[1] + param_1;
  return;
}



void FUN_0045380b(void)

{
  int in_EAX;
  
  FUN_004494bc(*(undefined4 *)(in_EAX + 0x10),in_EAX);
  FUN_004537c5(0xffffffff);
  FUN_0044933b();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0045384a(undefined4 param_1)

{
  int *piVar1;
  undefined4 uVar2;
  int unaff_ESI;
  HANDLE local_18;
  HANDLE local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x453856;
  FUN_0043d307();
  local_8 = 1;
  if (*(HANDLE *)(unaff_ESI + 0x28) == (HANDLE)0x0) {
    local_14 = CreateSemaphoreA((LPSECURITY_ATTRIBUTES)0x0,0,0x7fffffff,(LPCSTR)0x0);
    if (local_14 == (HANDLE)0x0) {
      local_14 = (HANDLE)FUN_00453360();
    }
    FUN_0042bd80();
    *(HANDLE *)(unaff_ESI + 0x28) = local_14;
  }
  *(int *)(unaff_ESI + 8) = *(int *)(unaff_ESI + 8) + 1;
  if ((*(int *)(unaff_ESI + 0x20) - *(int *)(unaff_ESI + 0x1c) & 0xfffffffcU) != 0) {
    piVar1 = (int *)FUN_0045380b();
    if (*(char *)(*piVar1 + 0xc) == '\0') {
      piVar1 = (int *)FUN_0045380b();
      LOCK();
      *(int *)(*piVar1 + 8) = *(int *)(*piVar1 + 8) + 1;
      UNLOCK();
      uVar2 = FUN_0045380b();
      FUN_0044938e(uVar2);
      goto LAB_0045394d;
    }
  }
  local_18 = operator_new(0x14);
  local_8._0_1_ = 2;
  if (local_18 == (void *)0x0) {
    local_14 = (HANDLE)0x0;
  }
  else {
    local_14 = (HANDLE)FUN_0045337f(local_18,unaff_ESI + 0x28);
  }
  if (local_14 != (HANDLE)0x0) {
    LOCK();
    *(int *)((int)local_14 + 0x10) = *(int *)((int)local_14 + 0x10) + 1;
    UNLOCK();
  }
  local_8 = CONCAT31(local_8._1_3_,3);
  local_18 = local_14;
  FUN_00453763(unaff_ESI + 0x10,&local_18);
  FUN_0044938e(&local_18);
  if (local_14 != (HANDLE)0x0) {
    FUN_0042bcad(local_14);
  }
LAB_0045394d:
  local_8 = local_8 & 0xffffff00;
  FUN_00401477();
  return param_1;
}



void FUN_00453963(void)

{
  int *in_EAX;
  
  LOCK();
  *(int *)(*in_EAX + 8) = *(int *)(*in_EAX + 8) + -1;
  UNLOCK();
  if (*in_EAX != 0) {
    FUN_0042bcad(*in_EAX);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0045397d(int *param_1)

{
  undefined ***pppuVar1;
  undefined **local_a8 [19];
  undefined **local_5c [21];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x9c;
  local_8 = 0x45398c;
  if (*param_1 != 0) goto LAB_004539b7;
  FUN_004013ff(1,"boost unique_lock has no mutex");
  local_5c[0] = boost::lock_error::vftable;
  local_8 = 0;
  pppuVar1 = local_5c;
  while( true ) {
    FUN_0043d230(pppuVar1);
LAB_004539b7:
    if (*(char *)(param_1 + 1) != '\0') break;
    param_1 = (int *)0x1;
    FUN_004013ff(1,"boost unique_lock doesn\'t own the mutex");
    local_a8[0] = boost::lock_error::vftable;
    local_8 = 1;
    pppuVar1 = local_a8;
  }
  FUN_00401477();
  *(undefined *)(param_1 + 1) = 0;
  return;
}



bool FUN_004539f5(void)

{
  undefined4 uVar1;
  char cVar2;
  DWORD DVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 auStack_5c [5];
  undefined4 uStack_48;
  bool local_29;
  int local_28;
  undefined4 *local_24;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c4c460;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_c = 0;
  FUN_0045384a();
  FUN_0044938e();
  local_c = CONCAT31(local_c._1_3_,1);
  if (local_28 != 0) {
    FUN_0042bcad();
  }
  FUN_0045397d();
  while( true ) {
    uVar1 = *local_24;
    puVar5 = (undefined4 *)&stack0x00000008;
    puVar6 = auStack_5c;
    for (iVar4 = 8; iVar4 != 0; iVar4 = iVar4 + -1) {
      *puVar6 = *puVar5;
      puVar5 = puVar5 + 1;
      puVar6 = puVar6 + 1;
    }
    cVar2 = FUN_0082a570(uVar1);
    if (cVar2 == '\0') break;
    uStack_48 = 0x453a96;
    DVar3 = WaitForSingleObject((HANDLE)local_24[1],0);
    local_29 = DVar3 == 0;
    if (local_29) {
LAB_00453aaa:
      LOCK();
      local_24[2] = local_24[2] + -1;
      UNLOCK();
      FUN_0042bcad();
      local_c = 0xffffffff;
      FUN_0043d358();
      ExceptionList = local_14;
      return local_29;
    }
  }
  local_29 = false;
  goto LAB_00453aaa;
}



void FUN_00453ae1(undefined4 *param_1,int param_2)

{
  if (param_2 == 0) {
    param_1[1] = 0x7fffffff;
LAB_00453b3d:
    *param_1 = 0xfffffffe;
    return;
  }
  if (param_2 == 1) {
    *param_1 = 0;
  }
  else {
    if (param_2 == 2) {
      *param_1 = 0xffffffff;
      param_1[1] = 0x7fffffff;
      return;
    }
    if (param_2 != 3) {
      param_1[1] = 0x7fffffff;
      if (param_2 == 4) {
        *param_1 = 0xfffffffd;
        return;
      }
      goto LAB_00453b3d;
    }
    *param_1 = 1;
  }
  param_1[1] = 0x80000000;
  return;
}



undefined4 __thiscall FUN_00453b45(undefined4 param_1_00,undefined4 param_1)

{
  FUN_00453ae1(param_1_00,param_1);
  return param_1_00;
}



void FUN_00453b5c(undefined4 *param_1,int param_2)

{
  if (param_2 != 0) {
    if (param_2 == 1) {
      *param_1 = 0;
      return;
    }
    if (param_2 == 2) {
      *param_1 = 0xffffffff;
      return;
    }
    if (param_2 == 3) {
      *param_1 = 1;
      return;
    }
    if (param_2 == 4) {
      *param_1 = 0xfffffffd;
      return;
    }
  }
  *param_1 = 0xfffffffe;
  return;
}



undefined4 * __thiscall FUN_00453ba4(undefined4 *param_1_00,int param_1)

{
  undefined4 *puVar1;
  undefined4 extraout_ECX;
  undefined4 extraout_ECX_00;
  int extraout_ECX_01;
  int iVar2;
  undefined4 extraout_ECX_02;
  undefined4 extraout_ECX_03;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 *local_c [2];
  
  iVar2 = param_1;
  local_c[0] = param_1_00;
  puVar1 = (undefined4 *)FUN_00453b5c(local_c,param_1);
  *param_1_00 = *puVar1;
  if (param_1 == 3) {
    FUN_0043abcd(1);
    uVar4 = extraout_ECX;
    FUN_0043b07c(1);
    uVar3 = extraout_ECX_00;
    FUN_0043b510(0x578);
    puVar1 = (undefined4 *)FUN_0043a6c3(uVar3,uVar4,iVar2);
    *param_1_00 = *puVar1;
    iVar2 = extraout_ECX_01;
  }
  if (param_1 == 4) {
    FUN_0043abcd(0x1f);
    uVar4 = extraout_ECX_02;
    FUN_0043b07c(0xc);
    uVar3 = extraout_ECX_03;
    FUN_0043b510(9999);
    puVar1 = (undefined4 *)FUN_0043a6c3(uVar3,uVar4,iVar2);
    *param_1_00 = *puVar1;
  }
  return param_1_00;
}



undefined4 __fastcall FUN_00453c32(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_14;
  undefined4 local_10;
  
  local_14 = 0xfffffffe;
  local_10 = 0x7fffffff;
  uVar1 = FUN_00453ba4(0);
  FUN_0043b782(uVar1,&local_14);
  return param_1;
}



undefined4 * __fastcall FUN_00453c64(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[2] = 0xffffffff;
  param_1[3] = 0xffffffff;
  *(undefined *)(param_1 + 4) = 1;
  FUN_00453c32();
  return param_1;
}



undefined4 FUN_00453c86(undefined4 param_1)

{
  FUN_00453c64(0);
  return param_1;
}



void FUN_00453ca3(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 auStack_50 [6];
  undefined4 uStack_38;
  undefined *puStack_34;
  undefined local_28 [36];
  
  puStack_34 = local_28;
  uStack_38 = 0x453cb8;
  puVar1 = (undefined4 *)FUN_00453c86();
  puVar3 = auStack_50;
  for (iVar2 = 8; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar3 = *puVar1;
    puVar1 = puVar1 + 1;
    puVar3 = puVar3 + 1;
  }
  FUN_004539f5(param_2);
  return;
}



void FUN_00453cd7(void)

{
  uint uVar1;
  int unaff_ESI;
  undefined local_20 [4];
  char local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c59589;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_14;
  FUN_0043d406(unaff_ESI + 0x20);
  local_c = 0;
  if (*(char *)(unaff_ESI + 0x54) == '\0') {
    do {
      FUN_00453ca3(unaff_ESI + 0x28,local_20);
    } while (*(char *)(unaff_ESI + 0x54) == '\0');
  }
  local_c = 0xffffffff;
  if (local_1c != '\0') {
    FUN_00401477(uVar1);
  }
  ExceptionList = local_14;
  return;
}



void FUN_00453d5d(void)

{
  int in_EAX;
  
  if (in_EAX != 0) {
    FUN_0042bd98();
    FUN_00417fe6();
    FUN_00507e58();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  return;
}



void Catch_All_00453dca(void)

{
  code *pcVar1;
  
  FUN_00453d5d();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00453ddc(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  puVar1 = (undefined4 *)FUN_00418daa(1,0);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = param_1 + 4;
  }
  param_1[4] = puVar1;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  return param_1;
}



undefined4 FUN_00453f07(void)

{
  DWORD DVar1;
  
  if (DAT_032bdb68 != 0) {
    DVar1 = GetCurrentThreadId();
    if (DVar1 != DAT_032bdb68) {
      return 0;
    }
  }
  return 1;
}



undefined4 __thiscall FUN_00453f24(undefined4 param_1_00,byte param_1)

{
  FUN_00944830();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00453f40(void)

{
  FUN_00453f24();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00453f4b(undefined4 *param_1)

{
  param_1[1] = 0;
  *param_1 = wxColour::vftable;
  FUN_0093b2c0();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00453f77(undefined4 *param_1)

{
  FUN_0044ced6();
  FUN_009412f0();
  param_1[0x65] = wxComboCtrlBase::vftable;
  *param_1 = wxComboCtrlBase::vftable;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x69));
  param_1[0x70] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x72));
  param_1[0x79] = 0;
  param_1[0x86] = 0;
  param_1[0x87] = 0;
  param_1[0x90] = 0;
  param_1[0x91] = 0;
  param_1[0x92] = 0;
  param_1[0x93] = 0;
  param_1[0x94] = 0;
  param_1[0x95] = 0;
  param_1[0x96] = 0;
  param_1[0x97] = 0;
  FUN_00453f4b();
  param_1[0xa4] = 0;
  param_1[0xa3] = wxBitmap::vftable;
  param_1[0xa6] = 0;
  param_1[0xa5] = wxBitmap::vftable;
  param_1[0xa8] = 0;
  param_1[0xa7] = wxBitmap::vftable;
  param_1[0xaa] = 0;
  param_1[0xa9] = wxBitmap::vftable;
  param_1[0xab] = 0;
  param_1[0xac] = 0;
  FUN_00942ff0();
  return param_1;
}



undefined4 __thiscall FUN_00454056(undefined4 param_1_00,byte param_1)

{
  FUN_00947100();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00454072(void)

{
  FUN_00454056();
  return;
}



undefined4 __thiscall FUN_0045407d(undefined4 param_1_00,byte param_1)

{
  FUN_0086bb60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00454099(undefined4 *param_1)

{
  FUN_00845b70();
  *param_1 = wxTimer::vftable;
  FUN_0086bc10();
  FUN_0086b960(param_1,0xffffffff);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_004540d2(undefined4 *param_1)

{
  FUN_00453f77();
  *param_1 = wxComboCtrl::vftable;
  param_1[0x65] = wxComboCtrl::vftable;
  param_1[0xb2] = 0;
  param_1[0xb3] = 0;
  FUN_00454099();
  param_1[0xc5] = 0;
  param_1[0xc6] = 0;
  param_1[199] = 0;
  param_1[200] = 0;
  FUN_009b4100();
  return param_1;
}



undefined4 __thiscall FUN_00454151(undefined4 param_1_00,byte param_1)

{
  FUN_0045416d();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0045416d(undefined4 *param_1)

{
  *param_1 = W09E346CD::W7EDBDB8A::vftable;
  param_1[0x65] = W09E346CD::W7EDBDB8A::vftable;
  if (param_1[0xcc] != 0) {
    FUN_0040127a();
  }
  FUN_00947100();
  return;
}



void FUN_004541b2(void)

{
  FUN_00454151();
  return;
}



void __thiscall FUN_004541bd(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0x84))(param_1,1);
  return;
}



void __thiscall thunk_FUN_00946ab0(int *param_1_00,int param_1)

{
  (**(code **)(*param_1_00 + 0x84))(param_1,0);
  if (param_1_00[2] != 0) {
    if (param_1_00[2] + 0x40 != param_1) {
      FID_conflict_assign(param_1,0,0xffffffff);
    }
    FUN_00946350();
  }
  return;
}



void __thiscall thunk_FUN_00945e70(int *param_1,undefined4 param_2)

{
  (**(code **)(*param_1 + 0x54))();
  (**(code **)(*param_1 + 0xc))(param_2);
  return;
}



undefined4 FUN_004541d8(undefined4 param_1)

{
  FUN_009469f0(param_1);
  return param_1;
}



undefined4 FUN_004541ef(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00946d60(param_1,param_2,param_3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0045420c(int *param_1)

{
  undefined local_34 [24];
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x454218;
  local_1c = 7;
  FUN_0040180b(0);
  local_18 = 0;
  local_8 = 0;
  (**(code **)(*param_1 + 4))(local_34);
  FUN_0040159c();
  return;
}



void __fastcall FUN_0045424c(int *param_1)

{
  (**(code **)(*param_1 + 0x50))(0xffffffff);
  return;
}



void __fastcall FUN_00454254(int *param_1)

{
  (**(code **)(*param_1 + 0x60))(0xffffffff,0xffffffff);
  return;
}



int __fastcall FUN_0045425e(int param_1)

{
  return param_1 + -0x194;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004542df(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4542eb;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x45431a;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x45432d;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00454335(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x454341;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x454370;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x454383;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0045438b(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x454397;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x4543c6;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x4543d9;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004543e1(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4543ed;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x45441c;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x45442f;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00454437(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x454443;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x454472;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x454485;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0045448d(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x454499;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x4544c8;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x4544db;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004544e3(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4544ef;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x45451e;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x454531;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00454539(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x454545;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x454574;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x454587;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0045458f(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x45459b;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x4545ca;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x4545dd;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004545e5(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4545f1;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x454620;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x454633;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0045463b(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x454647;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x454676;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x454689;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00454691(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x45469d;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x4546cc;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x4546df;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004546e7(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4546f3;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x454722;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x454735;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0045473d(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x454749;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x454778;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x45478b;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00454793(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x45479f;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x4547ce;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x4547e1;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004547e9(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4547f5;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x454824;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x454837;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0045483f(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x45484b;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x45487a;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x45488d;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00454895(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4548a1;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x4548d0;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x4548e3;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004548eb(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4548f7;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x454926;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x454939;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00454941(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x45494d;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x45497c;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x45498f;
  FUN_0083e850();
  return;
}



undefined4 __thiscall FUN_00454997(undefined4 param_1_00,undefined4 param_1)

{
  FUN_0043d987(param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004549a9(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4549b5;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x4549e4;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x4549f7;
  FUN_0083e850();
  return;
}



undefined4 * __thiscall FUN_004549ff(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_00454a21(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = wxObjectEventFunctor::vftable;
    puVar1[2] = param_1;
    puVar1[3] = param_2;
    return puVar1;
  }
  return (undefined4 *)0x0;
}



void __fastcall thunk_FUN_0040159c(int param_1)

{
  _free(*(void **)(param_1 + 0x1c));
  FUN_00401829(1,0);
  return;
}



void __fastcall FUN_00454a4e(undefined4 *param_1)

{
  FUN_0040159c();
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined ** FUN_00454a67(void)

{
  return &PTR_u_W46A423FF_03247280;
}



undefined ** FUN_00454a6d(void)

{
  return &PTR_PTR_00fab420;
}



undefined * FUN_00454a73(void)

{
  return &DAT_032ee430;
}



undefined4 __thiscall FUN_00454ec3(undefined4 param_1_00,byte param_1)

{
  FUN_00454edf();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00454edf(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = W5D651E7E::W46A423FF::vftable;
  cVar1 = FUN_0086bae0();
  if (cVar1 != '\0') {
    (**(code **)(param_1[0x6d] + 0x54))();
  }
  FUN_004636a8();
  FUN_00417fe6();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_0086bb60();
  FUN_00948ee0();
  return;
}



void __thiscall FUN_00454f87(int *param_1_00,int param_1)

{
  int local_20;
  int local_1c;
  int local_18;
  int local_14;
  int local_10;
  int local_c;
  
  local_20 = 0;
  local_1c = 0;
  local_18 = 0;
  local_14 = 0;
  (**(code **)(*param_1_00 + 0x364))(2,&local_20);
  if ((int *)param_1_00[0x8b] != (int *)0x0) {
    FUN_004555c3(&local_10);
    (**(code **)(*(int *)param_1_00[0x8b] + 0x288))
              ((local_18 - local_10) / 2 + local_20,(local_14 - local_c) / 2 + local_1c,0xffffffff,
               0xffffffff,0);
  }
  (**(code **)(*param_1_00 + 0x364))(1,&local_20);
  if ((int *)param_1_00[0x7f] != (int *)0x0) {
    FUN_004555c3(&local_10);
    (**(code **)(*(int *)param_1_00[0x7f] + 0x288))
              ((local_18 - local_10) / 2 + local_20,(local_14 - local_c) / 2 + local_1c,0xffffffff,
               0xffffffff,0);
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



void __fastcall FUN_00455052(int param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined *local_74;
  int local_70;
  uint uStack_6c;
  undefined **local_60;
  int local_5c;
  undefined local_3c [28];
  undefined4 local_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2c7a8;
  local_14 = ExceptionList;
  uStack_6c = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_14;
  local_74 = (undefined *)0x455085;
  local_70 = param_1;
  FUN_00455131();
  piVar1 = (int *)(param_1 + 0x1f8);
  *piVar1 = *piVar1 + 1;
  if (*piVar1 == 0x14) {
    local_60 = &local_74;
    *piVar1 = 0;
    local_74 = (undefined *)0x1e62;
    local_70 = 0x7b;
    puVar2 = (undefined4 *)FUN_00465be3(&local_60);
    local_c = 0;
    local_70 = *puVar2;
    local_74 = (undefined *)0x4550d1;
    local_70 = FUN_0046376d();
    local_c._0_1_ = 1;
    local_74 = (undefined *)0x4550e0;
    basic_string<>();
    local_20 = 0;
    local_70 = 0;
    local_74 = local_3c;
    local_c = CONCAT31(local_c._1_3_,2);
    FUN_00933170();
    local_70 = 0x4550ff;
    FUN_0040159c();
    local_70 = 0;
    local_74 = (undefined *)0x1;
    FUN_00401829();
    local_c = 0xffffffff;
    if (local_5c != 0) {
      local_70 = 0x45511d;
      FUN_0040127a();
    }
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00455131(void)

{
  undefined4 uVar1;
  undefined *puVar2;
  undefined local_3c [36];
  undefined local_18 [16];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x45513d;
  puVar2 = local_3c;
  uVar1 = FUN_00455539(local_18,puVar2);
  uVar1 = FUN_00455557(uVar1,puVar2);
  local_8 = 0;
  FUN_00933170(uVar1,3);
  FUN_0040159c();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0045522f(int param_1)

{
  int *unaff_ESI;
  char local_74;
  undefined local_70 [104];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_8 = 0x45523b;
  FUN_0043d406(unaff_ESI + 0x88);
  unaff_ESI[0x8a] = param_1;
  if (local_74 != '\0') {
    FUN_00401477();
  }
  FUN_0092bd60(DAT_032ee42c,0x1771);
  local_8 = 0;
  (**(code **)(*unaff_ESI + 0x20))(local_70);
  local_8 = 0xffffffff;
  FUN_00454a4e();
  FUN_00a421fb();
  return;
}



void __fastcall FUN_00455297(int param_1)

{
  int iVar1;
  int *piVar2;
  char local_c;
  
  FUN_0043d406(param_1 + 0x220);
  iVar1 = *(int *)(param_1 + 0x228);
  if (local_c != '\0') {
    FUN_00401477();
  }
  if (iVar1 == 0) {
    piVar2 = *(int **)(param_1 + 0x1fc);
    param_1 = param_1 + 0x200;
  }
  else if (iVar1 == 1) {
    piVar2 = *(int **)(param_1 + 0x1fc);
    param_1 = param_1 + 0x208;
  }
  else if (iVar1 == 2) {
    piVar2 = *(int **)(param_1 + 0x1fc);
    param_1 = param_1 + 0x210;
  }
  else {
    if (iVar1 != 3) {
      return;
    }
    piVar2 = *(int **)(param_1 + 0x1fc);
    param_1 = param_1 + 0x218;
  }
  (**(code **)(*piVar2 + 0x35c))(param_1);
  return;
}



void __thiscall FUN_00455319(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxSizeEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void __thiscall FUN_00455364(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxTimerEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void __thiscall FUN_004553af(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxMouseEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004553fa(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x10);
  if (pvVar1 != (void *)0x0) {
    FUN_00455496(param_2,param_3,0);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0045542e(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x10);
  if (pvVar1 != (void *)0x0) {
    FUN_004554c4(param_2,param_3,0);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00455462(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x10);
  if (pvVar1 != (void *)0x0) {
    FUN_004554f2(param_2,param_3,0);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_00455496(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  param_1_00[1] = param_3;
  param_1_00[2] = param_1;
  *param_1_00 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxSizeEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
                ::vftable;
  param_1_00[3] = param_2;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_004554c4(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  param_1_00[1] = param_3;
  param_1_00[2] = param_1;
  *param_1_00 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxTimerEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
                ::vftable;
  param_1_00[3] = param_2;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_004554f2(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  param_1_00[1] = param_3;
  param_1_00[2] = param_1;
  *param_1_00 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxMouseEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
                ::vftable;
  param_1_00[3] = param_2;
  return;
}



undefined4 * __thiscall FUN_00455520(undefined4 *param_1_00,undefined4 param_1)

{
  *param_1_00 = 0;
  param_1_00[1] = 0;
  FUN_0086cca0(param_1);
  return param_1_00;
}



undefined4 FUN_00455539(undefined4 param_1)

{
  undefined4 uVar1;
  undefined local_28 [36];
  
  uVar1 = FUN_0086cc50(local_28);
  FUN_00455520(uVar1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00455557(undefined4 param_1,undefined4 param_2)

{
  undefined local_38 [36];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x455563;
  local_14[0] = 0;
  FUN_0086c940(0);
  FUN_004325b6(&DAT_00fb1b74);
  local_8 = 0;
  FUN_00872a30(param_2,local_38,local_14);
  FUN_0040159c();
  return param_2;
}



void __thiscall
FUN_004555a8(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  (**(code **)(*param_1_00 + 0x288))(param_1,param_2,0xffffffff,0xffffffff,param_3);
  return;
}



void __thiscall FUN_004555c3(int *param_1_00,int **param_1)

{
  int *local_c;
  int *local_8;
  
  local_c = param_1_00;
  local_8 = param_1_00;
  (**(code **)(*param_1_00 + 0x278))(&local_8,&local_c);
  *param_1 = local_8;
  param_1[1] = local_c;
  return;
}



undefined4 __thiscall FUN_004555ea(undefined4 param_1_00,byte param_1)

{
  FUN_00948ee0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00455667(undefined4 *param_1)

{
  _free((void *)param_1[2]);
  param_1[2] = 0;
  param_1[1] = 0;
  *param_1 = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_0045566c(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  FUN_009333f0();
  *param_1_00 = wxStatusBar::vftable;
  param_1_00[0x6a] = 0;
  param_1_00[0x6b] = 0;
  param_1_00[0x6c] = 0;
  param_1_00[0x69] = 0;
  FUN_00948fe0(param_1,param_2,param_3,param_4);
  return param_1_00;
}



undefined ** FUN_004556c2(void)

{
  return &PTR_u_W9E102B1E_03247298;
}



undefined ** FUN_004556c8(void)

{
  return &PTR_PTR_00fab404;
}



undefined * FUN_004556ce(void)

{
  return &DAT_032ee4ac;
}



undefined4 __thiscall FUN_004559a0(undefined4 param_1,byte param_2)

{
  FUN_004559bc();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_004559bc(undefined4 *param_1)

{
  char local_1c;
  
  *param_1 = W5D651E7E::W9E102B1E::vftable;
  param_1[0x65] = W5D651E7E::W9E102B1E::vftable;
  FUN_0043d406(param_1 + 0xf6);
  FUN_0074ca40();
  if (local_1c != '\0') {
    FUN_00401477();
  }
  FUN_00455a2e();
  return;
}



undefined * Catch_All_00455a1e(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 8;
  return &DAT_00455a2b;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00455a2e(void)

{
  int unaff_EBP;
  int unaff_EDI;
  
  *(undefined *)(unaff_EBP + -4) = 7;
  FUN_00507e58();
  *(undefined *)(unaff_EBP + -4) = 6;
  if (*(int *)(unaff_EDI + 0x3e4) != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 4;
  FUN_004636a8();
  *(undefined *)(unaff_EBP + -4) = 3;
  FUN_008f7630();
  *(undefined *)(unaff_EBP + -4) = 2;
  FUN_008f7630();
  *(undefined *)(unaff_EBP + -4) = 1;
  FUN_008f7630();
  *(undefined *)(unaff_EBP + -4) = 0;
  FUN_008f7630();
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00a12710();
  return;
}



undefined4 FUN_00456019(void)

{
  void *pvVar1;
  undefined4 unaff_EBX;
  undefined4 uVar2;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c49f92;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  pvVar1 = operator_new(0x240);
  uVar2 = 0;
  local_c = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_00463759();
    FUN_006ad7fd();
    uVar2 = FUN_00612acd(pvVar1,unaff_EBX,0xffffffff);
  }
  local_c = 0xffffffff;
  FUN_00a13df0();
  ExceptionList = local_14;
  return uVar2;
}



void FUN_004560bc(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00456142(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf2<void,class_W5D651E7E::W9E102B1E,class_W88FE58D1::W70330F9B*,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::W9E102B1E*>,class_boost::_bi::value<class_W88FE58D1::W70330F9B*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00456109(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0045618f(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf2<void,class_W5D651E7E::W9E102B1E,class_W88FE58D1::W70330F9B*,enum_W88FE58D1::WF34549A3::Type>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::W9E102B1E*>,class_boost::_bi::value<class_W88FE58D1::W70330F9B*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_00456142(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf2<void,class_W5D651E7E::W9E102B1E,class_W88FE58D1::W70330F9B*,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::W9E102B1E*>,class_boost::_bi::value<class_W88FE58D1::W70330F9B*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf2<void,class_W5D651E7E::W9E102B1E,class_W88FE58D1::W70330F9B*,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::W9E102B1E*>,class_boost::_bi::value<class_W88FE58D1::W70330F9B*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void __fastcall FUN_0045618f(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf2<void,class_W5D651E7E::W9E102B1E,class_W88FE58D1::W70330F9B*,enum_W88FE58D1::WF34549A3::Type>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::W9E102B1E*>,class_boost::_bi::value<class_W88FE58D1::W70330F9B*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf2<void,class_W5D651E7E::W9E102B1E,class_W88FE58D1::W70330F9B*,enum_W88FE58D1::WF34549A3::Type>,class_boost::_bi::list3<class_boost::_bi::value<class_W5D651E7E::W9E102B1E*>,class_boost::_bi::value<class_W88FE58D1::W70330F9B*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void FUN_004561dc(void)

{
  FUN_004559a0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall
FUN_004561e7(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  param_1_00[1] = 0;
  *param_1_00 = (int)wxColour::vftable;
  FUN_0093b2c0();
  (**(code **)(*param_1_00 + 0x28))(param_1,param_2,param_3,param_4);
  return param_1_00;
}



undefined4 __thiscall FUN_00456228(undefined4 param_1_00,byte param_1)

{
  FUN_004564c0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00456244(void)

{
  FUN_00456228();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_0045624f(undefined4 *param_1)

{
  FUN_0044ced6();
  param_1[0x65] = wxWithImages::vftable;
  param_1[0x66] = 0;
  *(undefined *)(param_1 + 0x67) = 0;
  *param_1 = wxBookCtrlBase::vftable;
  param_1[0x65] = wxBookCtrlBase::vftable;
  FUN_0086a600();
  FUN_0094a820();
  return param_1;
}



bool __thiscall FUN_004562b1(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  
  FUN_0094a850();
  iVar1 = (**(code **)(*param_1_00 + 0x3ac))(param_1);
  return iVar1 != 0;
}



int __thiscall FUN_004562d1(int param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= param_1)) {
    FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  return *(int *)(param_1_00 + 8) + param_1 * 4;
}



int __thiscall thunk_FUN_004562d1(int param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= param_1)) {
    FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  return *(int *)(param_1_00 + 8) + param_1 * 4;
}



void __thiscall
FUN_0045636c(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  int iVar1;
  undefined4 uVar2;
  
  FUN_0094a850();
  iVar1 = *param_1_00;
  uVar2 = (**(code **)(iVar1 + 0x358))(param_1,param_2,param_3,param_4);
  (**(code **)(iVar1 + 0x388))(uVar2);
  return;
}



int __thiscall FUN_0045639d(int param_1_00,byte param_1)

{
  *(undefined ***)(param_1_00 + 0x1c4) = wxControlContainerBase::vftable;
  FUN_004564c0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_004563c3(void)

{
  FUN_0045639d();
  return;
}



void FUN_004563e4(int param_1)

{
  FUN_00923970(*(undefined4 *)(param_1 + 8));
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_004563ff(undefined4 *param_1)

{
  FUN_0045624f();
  *param_1 = wxNavigationEnabled<class_wxBookCtrlBase>::vftable;
  param_1[0x65] = wxNavigationEnabled<class_wxBookCtrlBase>::vftable;
  FUN_00922e80();
  FUN_0044621e(param_1);
  FUN_0044634a(DAT_032bfe6c,&LAB_004563ce,0,0,0);
  FUN_0044634a(DAT_032bfe38,&LAB_004563d9,0,0,0);
  FUN_0044634a(DAT_032bfe40,FUN_004563e4,0,0,0);
  return param_1;
}



undefined4 * __thiscall FUN_00456493(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxWithImages::vftable;
  FUN_00456630();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_004564b5(undefined4 *param_1)

{
  *param_1 = wxWithImages::vftable;
  FUN_00456630();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004564c0(int param_1)

{
  FUN_0086aa30();
  *(undefined ***)(param_1 + 0x194) = wxWithImages::vftable;
  FUN_00456630();
  FUN_0044cd6b();
  return;
}



void __fastcall FUN_00456509(int param_1)

{
  *(undefined ***)(param_1 + 0x1c4) = wxControlContainerBase::vftable;
  FUN_004564c0();
  return;
}



void FUN_00456518(void)

{
  char cVar1;
  
  cVar1 = FUN_009237b0();
  if (cVar1 == '\0') {
    FUN_00915300();
    return;
  }
  return;
}



void FUN_00456556(undefined4 param_1)

{
  FUN_00922de0(param_1);
  FUN_0091bc20(param_1);
  FUN_0043d79e();
  return;
}



undefined4 __thiscall FUN_00456609(undefined4 param_1_00,byte param_1)

{
  FUN_00a12710();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00456625(void)

{
  FUN_00456609();
  return;
}



void __fastcall FUN_00456630(int param_1)

{
  if (*(char *)(param_1 + 8) != '\0') {
    if (*(int **)(param_1 + 4) != (int *)0x0) {
      (**(code **)(**(int **)(param_1 + 4) + 4))(1);
    }
    *(undefined4 *)(param_1 + 4) = 0;
    *(undefined *)(param_1 + 8) = 0;
  }
  return;
}



void __thiscall FUN_00456651(int param_1_00,undefined4 param_1)

{
  FUN_00456630();
  *(undefined4 *)(param_1_00 + 4) = param_1;
  return;
}



undefined4 __thiscall FUN_00456664(undefined4 param_1_00,byte param_1)

{
  FUN_00921450();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00456680(undefined4 *param_1)

{
  FUN_004563ff();
  *param_1 = wxAuiNotebook::vftable;
  param_1[0x65] = wxAuiNotebook::vftable;
  FUN_00a1cf70(0,0xc9);
  FUN_00a11de0();
  param_1[0xd6] = 0;
  param_1[0xd7] = 0;
  param_1[0xda] = 0;
  param_1[0xd9] = wxFont::vftable;
  param_1[0xdc] = 0;
  param_1[0xdb] = wxFont::vftable;
  FUN_00a0a1a0();
  return param_1;
}



undefined ** FUN_00456704(void)

{
  return &PTR_u_WCD4E0E58_032472b0;
}



undefined ** FUN_0045670a(void)

{
  return &PTR_PTR_00fab3e8;
}



undefined * FUN_00456710(void)

{
  return &DAT_032ee504;
}



undefined4 __thiscall FUN_00456965(undefined4 param_1_00,byte param_1)

{
  FUN_00456981();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00456981(undefined4 *param_1)

{
  *param_1 = W5D651E7E::WCD4E0E58::vftable;
  param_1[0x65] = W5D651E7E::WCD4E0E58::vftable;
  FUN_004636a8();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_00a12710();
  return;
}



void FUN_00456b13(void)

{
  FUN_00456965();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00456b1e(undefined4 *param_1_00,byte param_1)

{
  if (param_1_00[4] != 0) {
    FUN_0040127a();
  }
  *param_1_00 = W88FE58D1::WD4DB19B6::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00456b5c(int param_1)

{
  FUN_0048b097(*(undefined4 *)(param_1 + 0xc));
  FUN_0048ede8(*(undefined4 *)(param_1 + 8));
  FUN_0048ec68(*(undefined4 *)(param_1 + 8),1);
  FUN_0048e754(*(undefined4 *)(param_1 + 8),0);
  return;
}



void __fastcall FUN_00456b8f(int param_1)

{
  FUN_0048b177();
  FUN_0048ede8(*(undefined4 *)(param_1 + 8));
  return;
}



void __fastcall FUN_00456bae(int param_1)

{
  FUN_00447248(*(undefined4 *)(param_1 + 0x14));
  return;
}



void FUN_00456bba(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0043d4a9();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void __fastcall FUN_00456c3a(int param_1)

{
  int iStack_20;
  int iStack_1c;
  
  iStack_20 = param_1;
  iStack_1c = param_1;
  FUN_0048eeb8(&iStack_20);
  FUN_0044793c(*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 0x14));
  return;
}



void FUN_00456c68(void)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00432c6c();
  basic_string<>(uVar1);
  FUN_00447e4a();
  return;
}



undefined4 * __thiscall FUN_00456c8a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W88FE58D1::WD4DB19B6::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00456ca7(undefined4 *param_1)

{
  *param_1 = W88FE58D1::WD4DB19B6::vftable;
  return;
}



undefined4 * __thiscall FUN_00456cae(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W98E1E5E7::W6A665594::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00456d1b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W5D651E7E::W4CB61229::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00456d38(char param_1_00,int param_1)

{
  FUN_0043d406(param_1 + 0x1f0);
  if (param_1_00 != '\0') {
    FUN_00401477();
  }
  FUN_00447f37();
  return;
}



undefined4 __thiscall FUN_00456dac(undefined4 param_1_00,byte param_1)

{
  FUN_00a2c810();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int FUN_00456dc8(int param_1)

{
  uint uVar1;
  int in_EAX;
  int *piVar2;
  uint uVar3;
  
  uVar1 = *(uint *)(in_EAX + 0x1a8);
  uVar3 = 0;
  if (uVar1 != 0) {
    do {
      piVar2 = (int *)FUN_004562d1(uVar3);
      if (*(int *)(*piVar2 + 0xf0) == param_1) {
        return *piVar2;
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar1);
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00456e00(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int unaff_EDI;
  undefined local_1c [20];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x456e0c;
  iVar1 = FUN_00456dc8(param_1);
  if (iVar1 != 0) {
    FUN_0043261a(param_2);
    FUN_0043261a(param_3);
    FUN_0094bd30(unaff_EDI);
    local_8 = 0;
    FUN_00a2a980(iVar1,0,local_1c);
    FUN_00a2a980(iVar1,1,local_1c);
    FUN_00a2a980(iVar1,2,local_1c);
    local_8 = 0xffffffff;
    *(undefined *)(unaff_EDI + 0x1d4) = 0;
    FUN_00457221();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00456e85(int *param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  int *piVar5;
  int *piVar6;
  undefined local_30 [8];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x456e91;
  iVar2 = FUN_00456dc8();
  if (iVar2 == 0) {
    return param_1;
  }
  local_20 = 0;
  local_1c = 0;
  local_28 = 0;
  local_24 = 0;
  local_14 = iVar2;
  cVar1 = (**(code **)(*param_1_00 + 0x10))();
  if (cVar1 != '\0') {
    puVar3 = (undefined4 *)FUN_004571ab();
    local_20 = *puVar3;
    local_1c = puVar3[1];
    cVar1 = (**(code **)(PTR_vftable_03238cc8 + 0x10))();
    if (cVar1 == '\0') {
      local_28 = local_20;
      local_24 = local_1c;
      FUN_00457186(0x3fe0000000000000);
    }
  }
  cVar1 = (**(code **)(PTR_vftable_03238cc8 + 0x10))();
  if (cVar1 != '\0') {
    puVar3 = (undefined4 *)FUN_004571ab();
    local_28 = *puVar3;
    local_24 = puVar3[1];
    cVar1 = (**(code **)(*param_1_00 + 0x10))();
    if (cVar1 == '\0') {
      local_20 = local_28;
      local_1c = local_24;
      FUN_00457186(0x4000000000000000);
    }
  }
  piVar5 = (int *)(iVar2 + 0x48);
  FUN_0043d987();
  cVar1 = (**(code **)(*piVar5 + 0x10))();
  if (cVar1 == '\0') {
    FUN_00a2b720(&local_20,local_14 + 0x58,local_20,local_1c);
    local_8 = 0;
LAB_00456fc6:
    FUN_0043d987();
    local_8 = 0xffffffff;
    FUN_008f7630();
  }
  else {
    uVar4 = FUN_004571ab(local_30);
    cVar1 = FUN_00457169(uVar4);
    if (cVar1 != '\0') {
      FUN_00a2b720(&local_20,piVar5,local_20,local_1c);
      local_8 = 1;
      goto LAB_00456fc6;
    }
  }
  piVar6 = (int *)(local_14 + 0x58);
  FUN_0043d987();
  cVar1 = (**(code **)(*piVar6 + 0x10))();
  if (cVar1 == '\0') {
    FUN_00a2b720(&local_28,piVar5,local_28,local_24);
    local_8 = 2;
  }
  else {
    uVar4 = FUN_004571ab(local_30);
    cVar1 = FUN_00457169(uVar4);
    if (cVar1 == '\0') goto LAB_00457055;
    FUN_00a2b720(&local_28,piVar6,local_28,local_24);
    local_8 = 3;
  }
  FUN_0043d987();
  local_8 = 0xffffffff;
  FUN_008f7630();
LAB_00457055:
  FUN_0043d987();
  cVar1 = (**(code **)(*(int *)(local_14 + 0x50) + 0x10))();
  if (cVar1 == '\0') {
    FUN_00a2b7c0(&local_28,piVar5);
    local_8 = 4;
    FUN_0043d987();
    local_8 = 0xffffffff;
    FUN_008f7630();
  }
  piVar5 = (int *)(local_14 + 0x60);
  FUN_0043d987();
  cVar1 = (**(code **)(*piVar5 + 0x10))();
  if (cVar1 == '\0') {
    FUN_00a2b7c0(local_18,piVar6);
    local_8 = 5;
    FUN_0043d987();
    local_8 = 0xffffffff;
    FUN_008f7630();
  }
  *(undefined *)(param_1 + 0x1d4) = 0;
  return param_1;
}



undefined4 FUN_00457169(int *param_1,int *param_2)

{
  if ((*param_1 == *param_2) && (param_1[1] == param_2[1])) {
    return 0;
  }
  return 1;
}



undefined4 * __fastcall FUN_00457186(undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00a49750();
  *param_1 = uVar1;
  uVar1 = FUN_00a49750();
  param_1[1] = uVar1;
  return param_1;
}



void __thiscall FUN_004571ab(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 local_c;
  
  uVar1 = 0;
  if (*(int *)(param_1_00 + 4) == 0) {
    local_c = 0;
  }
  else {
    local_c = *(undefined4 *)(*(int *)(param_1_00 + 4) + 8);
    uVar1 = *(undefined4 *)(*(int *)(param_1_00 + 4) + 0xc);
  }
  *param_1 = local_c;
  param_1[1] = uVar1;
  return;
}



undefined4 __thiscall FUN_004571df(undefined4 param_1_00,byte param_1)

{
  FUN_00457221();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_004571fb(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x00457200. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 0x1a0))();
  return;
}



undefined4 __fastcall thunk_FUN_0094f580(int param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined **ppuVar3;
  
  puVar1 = *(undefined4 **)(param_1 + 8);
  if (puVar1 != (undefined4 *)0x0) {
    ppuVar3 = (undefined **)(**(code **)*puVar1)();
    if (ppuVar3 == &PTR_u_wxMSWDCImpl_0323af3c) {
LAB_0094f5c5:
      return puVar1[0x42];
    }
    if (ppuVar3[3] != (undefined *)0x0) {
      cVar2 = FUN_0048a047(&PTR_u_wxMSWDCImpl_0323af3c);
      if (cVar2 != '\0') goto LAB_0094f5c5;
    }
    if (ppuVar3[4] != (undefined *)0x0) {
      cVar2 = FUN_0048a047(&PTR_u_wxMSWDCImpl_0323af3c);
      if (cVar2 != '\0') goto LAB_0094f5c5;
    }
  }
  return 0;
}



void __fastcall FUN_0045720b(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x00457210. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 0x1a4))();
  return;
}



void __fastcall FUN_00457216(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x0045721b. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 0x1a8))();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00457221(undefined4 *param_1)

{
  *param_1 = wxDC::vftable;
  if ((int *)param_1[2] != (int *)0x0) {
    (**(code **)(*(int *)param_1[2] + 4))(1);
  }
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall thunk_FUN_00457221(undefined4 *param_1)

{
  *param_1 = wxDC::vftable;
  if ((int *)param_1[2] != (int *)0x0) {
    (**(code **)(*(int *)param_1[2] + 4))(1);
  }
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined4 __thiscall FUN_00457266(undefined4 param_1_00,byte param_1)

{
  FUN_00a2d040();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00457282(undefined4 *param_1)

{
  *param_1 = W5D651E7E::W44980BFD::vftable;
  return;
}



undefined4 FUN_00457384(undefined4 param_1)

{
  FUN_00468575(param_1,0);
  return param_1;
}



void Catch_All_004573e5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004573fc(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W5D651E7E::WA086EB4B::vftable;
    puVar2[1] = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00457486(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 * __thiscall FUN_00457469(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W5D651E7E::W44980BFD::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00457486(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5D651E7E::WA086EB4B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004574cc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __fastcall FUN_004575f5(undefined4 param_1)

{
  byte unaff_retaddr;
  
  FUN_00457a2a(param_1);
  if ((unaff_retaddr & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined ** FUN_00457705(void)

{
  return &PTR_u_W1D123498_032472c8;
}



undefined ** FUN_0045773d(void)

{
  return &PTR_PTR_00fab3cc;
}



undefined * FUN_00457743(void)

{
  return &DAT_032ee534;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void FUN_00457a2a(undefined4 *param_1)

{
  char local_18;
  
  *param_1 = W16B30E62::W1D123498::vftable;
  param_1[0x5d] = W16B30E62::W1D123498::vftable;
  param_1[0x71] = W16B30E62::W1D123498::vftable;
  param_1[0x72] = W16B30E62::W1D123498::vftable;
  FUN_0043d406(param_1 + 0x99);
  FUN_00478a2d();
  if (local_18 != '\0') {
    FUN_00401477();
  }
  FUN_0043d406(param_1 + 0x93);
  FUN_0074ca40();
  FUN_0074ca40();
  if (local_18 != '\0') {
    FUN_00401477();
  }
  FUN_005d1159();
  FUN_00457af5();
  return;
}



undefined * Catch_All_00457ae3(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 0x12;
  return &DAT_00457af0;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00457af5(void)

{
  int unaff_EBX;
  int unaff_EBP;
  int unaff_EDI;
  
  FUN_00401829(1,unaff_EBX);
  FUN_00401829(1,unaff_EBX);
  FUN_00401829(1,unaff_EBX);
  *(undefined *)(unaff_EBP + -4) = 0xe;
  FUN_00507e58();
  *(undefined *)(unaff_EBP + -4) = 0xd;
  FUN_00507e58();
  *(undefined *)(unaff_EBP + -4) = 0xc;
  FUN_00507e58();
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 10;
  if (*(int *)(unaff_EDI + 0x2c8) != unaff_EBX) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 9;
  if (*(int *)(unaff_EDI + 0x2c0) != unaff_EBX) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 8;
  *(undefined ***)(unaff_EDI + 0x2a8) = wxObject::vftable;
  FUN_0083e850();
  *(undefined *)(unaff_EBP + -4) = 7;
  *(undefined ***)(unaff_EDI + 0x294) = wxObject::vftable;
  FUN_0083e850();
  *(undefined *)(unaff_EBP + -4) = 6;
  *(undefined ***)(unaff_EDI + 0x28c) = wxObject::vftable;
  FUN_0083e850();
  *(undefined *)(unaff_EBP + -4) = 5;
  *(undefined ***)(unaff_EDI + 0x284) = wxObject::vftable;
  FUN_0083e850();
  *(undefined *)(unaff_EBP + -4) = 4;
  FUN_0047d892(unaff_EDI + 0x26c);
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 2;
  if (*(int *)(unaff_EDI + 0x260) != unaff_EBX) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 1;
  if (*(int *)(unaff_EDI + 600) != unaff_EBX) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_009f3c60();
  return;
}



void __thiscall FUN_00457c67(int param_1_00,int param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int local_18;
  int local_14;
  int local_10;
  undefined4 local_c;
  int local_8;
  
  local_8 = param_1_00;
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x28c);
  iVar1 = param_2[3] + -1 + param_2[1];
  (**(code **)(**(int **)(param_1 + 8) + 0x140))
            ((param_2[2] * 2) / 3 + *param_2,iVar1,*param_2 + param_2[2],iVar1);
  local_18 = *param_2;
  local_14 = param_2[3] + -1 + param_2[1];
  iVar1 = local_8 + 0x294;
  iVar2 = local_8 + 0x2a8;
  local_10 = 0x20;
  local_c = 1;
  (**(code **)(**(int **)(param_1 + 8) + 0x130))(&local_18,iVar2,iVar1,0x20);
  local_18 = *param_2 + 0x20;
  local_14 = param_2[3] + -1 + param_2[1];
  local_c = 1;
  local_10 = (param_2[2] * 2) / 3 + -0x20;
  (**(code **)(**(int **)(param_1 + 8) + 0x130))(&local_18,iVar1,iVar2,0x20);
  return;
}



void __fastcall FUN_00457f68(int param_1)

{
  int iVar1;
  int iVar2;
  uint uStack_5c;
  undefined **ppuStack_58;
  uint uStack_54;
  uint *local_40;
  int local_3c;
  char local_34;
  undefined local_30 [28];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41427;
  local_14 = ExceptionList;
  uStack_54 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  ppuStack_58 = (undefined **)local_30;
  uStack_5c = 0x457fa0;
  FUN_004382a5();
  local_c = 0;
  ppuStack_58 = (undefined **)(param_1 + 0x24c);
  uStack_5c = 0x457fb5;
  FUN_0043d406();
  local_c._0_1_ = 1;
  if (*(int *)(param_1 + 0x254) == 0) {
    ppuStack_58 = (undefined **)&local_40;
    uStack_5c = 0x457fcf;
    FUN_0045865b();
    local_c._0_1_ = 2;
    ppuStack_58 = (undefined **)0x457fdc;
    FUN_004fe47e();
    local_c._0_1_ = 1;
    if (local_3c != 0) {
      ppuStack_58 = (undefined **)0x457fee;
      FUN_0040127a();
    }
  }
  if (*(int *)(param_1 + 0x25c) == 0) {
    ppuStack_58 = (undefined **)&local_40;
    uStack_5c = 0x458003;
    FUN_0045865b();
    local_c._0_1_ = 3;
    ppuStack_58 = (undefined **)0x45800e;
    FUN_004fe47e();
    local_c._0_1_ = 1;
    if (local_3c != 0) {
      ppuStack_58 = (undefined **)0x458020;
      FUN_0040127a();
    }
  }
  ppuStack_58 = (undefined **)local_30;
  uStack_5c = 0x45802c;
  FUN_0047d8c8();
  uStack_5c = *(int *)(*(int *)(param_1 + 0x254) + 0x10) - *(int *)(*(int *)(param_1 + 0x254) + 0xc)
  ;
  if ((uStack_5c & 0xfffffff8) == 0) {
    local_40 = &uStack_5c;
    ppuStack_58 = (undefined **)uStack_5c;
    FUN_0047da5a(&uStack_5c);
    FUN_0047d908();
  }
  ppuStack_58 = (undefined **)local_30;
  uStack_5c = 0x458066;
  FUN_0047d8c8();
  local_c._0_1_ = 0;
  if (local_34 != '\0') {
    ppuStack_58 = (undefined **)0x45807b;
    FUN_00401477();
  }
  ppuStack_58 = (undefined **)(param_1 + 0x264);
  uStack_5c = 0x45808b;
  FUN_0043d406();
  local_c._0_1_ = 4;
  ppuStack_58 = (undefined **)0x45809d;
  FUN_00478a2d();
  uStack_5c = 0x4580a7;
  ppuStack_58 = (undefined **)(param_1 + 0x26c);
  FUN_0047d8c8();
  iVar1 = *(int *)(param_1 + 0x27c);
  iVar2 = *(int *)(param_1 + 0x278);
  local_c = (uint)local_c._1_3_ << 8;
  if (local_34 != '\0') {
    ppuStack_58 = (undefined **)0x4580c8;
    FUN_00401477();
  }
  ppuStack_58 = (undefined **)0x4580cf;
  FUN_0091ba80();
  uStack_5c = 0x4580d7;
  ppuStack_58 = (undefined **)(iVar1 - iVar2 >> 3);
  FUN_009f3e20();
  ppuStack_58 = (undefined **)0x4580e2;
  (**(code **)(*(int *)(param_1 + 0x174) + 4))();
  ppuStack_58 = (undefined **)0x4580e9;
  FUN_0091bae0();
  local_c = 0xffffffff;
  ppuStack_58 = (undefined **)local_30;
  uStack_5c = 0x4580f8;
  FUN_0047d892();
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_0045810d(int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined auStack_98 [7];
  char local_91;
  char local_8c;
  undefined local_88 [36];
  undefined local_64 [24];
  undefined4 local_4c;
  undefined4 local_48;
  undefined local_40 [36];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c413cf;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_98;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff60;
  ExceptionList = &local_14;
  FUN_004585c3(local_40);
  local_c = 0;
  local_4c = 7;
  FUN_0040180b(0);
  local_48 = 0;
  local_c._0_1_ = 1;
  if (*(uint *)(param_1 + 0x350) < 8) {
    iVar3 = param_1 + 0x33c;
  }
  else {
    iVar3 = *(int *)(param_1 + 0x33c);
  }
  FUN_004325b6(iVar3);
  local_c._0_1_ = 2;
  local_91 = FUN_00852010(local_88,local_64);
  local_c._0_1_ = 1;
  FUN_0040159c(uVar1);
  if (local_91 == '\0') {
    if (*(uint *)(param_1 + 0x36c) < 8) {
      iVar3 = param_1 + 0x358;
    }
    else {
      iVar3 = *(int *)(param_1 + 0x358);
    }
    FUN_004325b6(iVar3);
    local_c._0_1_ = 5;
    local_91 = FUN_00852010(local_88,local_64);
    local_c._0_1_ = 1;
    FUN_0040159c();
    if (local_91 == '\0') {
      if (*(uint *)(param_1 + 0x388) < 8) {
        iVar3 = param_1 + 0x374;
      }
      else {
        iVar3 = *(int *)(param_1 + 0x374);
      }
      FUN_004325b6(iVar3);
      local_c._0_1_ = 8;
      local_91 = FUN_00852010(local_88,local_64);
      local_c._0_1_ = 1;
      FUN_0040159c();
      if (local_91 == '\0') goto LAB_0045838d;
      FUN_0043d406(param_1 + 0x2cc);
      local_c._0_1_ = 9;
      if ((-(uint)(*(int *)(param_1 + 0x318) != 0) & 0x7a491c) != 0) {
        uVar2 = FUN_00432c6c();
        uVar2 = basic_string<>(uVar2);
        local_c._0_1_ = 10;
        goto LAB_00458362;
      }
    }
    else {
      FUN_0043d406(param_1 + 0x2cc);
      local_c._0_1_ = 6;
      if ((-(uint)(*(int *)(param_1 + 0x2f8) != 0) & 0x7a491c) != 0) {
        uVar2 = FUN_00432c6c();
        uVar2 = basic_string<>(uVar2);
        local_c._0_1_ = 7;
        goto LAB_00458362;
      }
    }
  }
  else {
    FUN_0043d406(param_1 + 0x2cc);
    local_c._0_1_ = 3;
    if ((-(uint)(*(int *)(param_1 + 0x2d8) != 0) & 0x7a491c) != 0) {
      uVar2 = FUN_00432c6c();
      uVar2 = basic_string<>(uVar2);
      local_c._0_1_ = 4;
LAB_00458362:
      FUN_0044be74(uVar2);
      FUN_00401829(1,0);
    }
  }
  local_c._0_1_ = 1;
  if (local_8c != '\0') {
    FUN_00401477();
  }
LAB_0045838d:
  FUN_0040159c();
  FUN_0040159c();
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



uint * __thiscall FUN_004583c1(uint *param_1_00,uint *param_1)

{
  uint uVar1;
  int iVar2;
  uint *puVar3;
  uint *puVar4;
  uint local_58 [2];
  uint local_50 [6];
  undefined4 local_38 [9];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1af2e;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar1 = *param_1_00;
  local_58[0] = 0;
  if (uVar1 != 0) {
    local_58[0] = uVar1;
    if ((uVar1 & 1) == 0) {
      (**(code **)(uVar1 & 0xfffffffe))
                (param_1_00 + 2,local_50,0,DAT_0323f878 ^ (uint)&stack0xffffff98);
    }
    else {
      puVar3 = param_1_00 + 2;
      puVar4 = local_50;
      for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar4 = *puVar3;
        puVar3 = puVar3 + 1;
        puVar4 = puVar4 + 1;
      }
    }
  }
  if (param_1 != local_58) {
    local_38[0] = 0;
    local_c._0_1_ = 1;
    local_c._1_3_ = 0;
    FUN_00475d30(local_38);
    FUN_00475d30(local_58);
    FUN_00475d30(param_1);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00507e58();
  }
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return param_1;
}



void __thiscall FUN_0045848f(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxHtmlLinkEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



undefined8 __fastcall FUN_004584da(int param_1)

{
  return *(undefined8 *)(param_1 + 8);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004584e1(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxHtmlLinkEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[2] = param_1;
    puVar1[3] = param_2;
  }
  return puVar1;
}



void FUN_00458519(void)

{
  FUN_004575f5();
  return;
}



void FUN_00458524(void)

{
  FUN_004575f5();
  return;
}



void FUN_0045852f(void)

{
  FUN_004575f5();
  return;
}



void __fastcall FUN_0045853a(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x0045853c. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x34))();
  return;
}



void __fastcall thunk_FUN_00958000(int param_1)

{
  uint uVar1;
  int iVar2;
  
  uVar1 = *(uint *)(param_1 + 0xc);
  if (uVar1 < 0x1e) {
    FUN_00957d20(0,uVar1);
    return;
  }
  iVar2 = *(int *)(param_1 + 0xc);
  FUN_00957d20((uVar1 >> 1) - 5,(uVar1 >> 1) + 5);
  FUN_00957d20(iVar2 + -10,iVar2);
  FUN_00957d20(0,10);
  FUN_00a49750();
  return;
}



void FUN_00458544(void)

{
  return;
}



void __fastcall FUN_00458547(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x00458549. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x5c))();
  return;
}



void __fastcall FUN_0045854c(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x0045854e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x58))();
  return;
}



undefined4 FUN_00458551(void)

{
  return 8;
}



undefined4 __fastcall FUN_00458555(int *param_1)

{
  undefined4 *puVar1;
  int **ppiVar2;
  int *local_8;
  int *piStack_4;
  
  ppiVar2 = &local_8;
  local_8 = param_1;
  piStack_4 = param_1;
  (**(code **)(*param_1 + 0x18))(&local_8);
  puVar1 = (undefined4 *)FUN_0043d8d2(ppiVar2);
  return *puVar1;
}



undefined4 __fastcall FUN_0045856c(int *param_1)

{
  int iVar1;
  int **ppiVar2;
  int *local_8;
  int *piStack_4;
  
  ppiVar2 = &local_8;
  local_8 = param_1;
  piStack_4 = param_1;
  (**(code **)(*param_1 + 0x18))(&local_8);
  iVar1 = FUN_0043d8d2(ppiVar2);
  return *(undefined4 *)(iVar1 + 4);
}



undefined4 __fastcall FUN_00458584(int param_1)

{
  return *(undefined4 *)(param_1 + 8);
}



undefined4 __thiscall FUN_00458599(int param_1_00,undefined4 param_1)

{
  FUN_00957130(param_1,*(undefined4 *)(param_1_00 + 300),0);
  return param_1;
}



undefined4 __thiscall FUN_004585c3(int param_1_00,undefined4 param_1)

{
  FUN_004325a0(param_1_00 + 8);
  return param_1;
}



void __fastcall FUN_004585de(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_0047d892(iVar1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004585f5(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W208886B1::WB7D69BFC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0045863b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_0047d892(*(undefined4 *)(unaff_EBP + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0045865b(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x18);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_004382a5(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_004585f5(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



void __thiscall FUN_004586cc(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  *param_1_00 = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 4);
  param_1_00[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  return;
}



undefined4 * __thiscall FUN_004586e8(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_004586cc(param_1);
  *param_1_00 = wxColourBase::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_00458700(undefined4 *param_1_00,int param_1)

{
  FUN_004586e8(param_1);
  *param_1_00 = wxColour::vftable;
  param_1_00[2] = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 3) = *(undefined *)(param_1 + 0xc);
  *(undefined *)((int)param_1_00 + 0xd) = *(undefined *)(param_1 + 0xd);
  *(undefined *)((int)param_1_00 + 0xe) = *(undefined *)(param_1 + 0xe);
  *(undefined *)((int)param_1_00 + 0xf) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 4) = *(undefined *)(param_1 + 0x10);
  return param_1_00;
}



void __fastcall FUN_0045873f(undefined4 *param_1)

{
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined4 __thiscall FUN_0045874a(undefined4 param_1,byte param_2)

{
  FUN_00458766();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_00458766(undefined4 *param_1)

{
  *param_1 = W16B30E62::W0D716411::vftable;
  FUN_005d1159();
  FUN_004587a6();
  return;
}



undefined * Catch_All_00458796(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 3;
  return &DAT_004587a3;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004587a6(void)

{
  int unaff_EBP;
  undefined4 *unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 2;
  if (unaff_ESI[0xb] != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 1;
  if (unaff_ESI[9] != 0) {
    FUN_0040127a();
  }
  FUN_00401829(1,0);
  *unaff_ESI = W208886B1::WEE9C9FAB::vftable;
  return;
}



void __fastcall FUN_004587de(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x2c);
}



undefined4 FUN_0045882f(undefined4 param_1)

{
  int in_EAX;
  
  basic_string<>(in_EAX + 4);
  return param_1;
}



void FUN_004599ed(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined local_370 [12];
  undefined local_364 [32];
  undefined4 local_344;
  undefined4 local_30c;
  undefined local_308 [24];
  undefined4 local_2f0;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c53536;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  basic_string<>();
  local_c = 0;
  local_30c = 7;
  FUN_0040180b();
  local_344 = 7;
  FUN_0040180b();
  local_2f0 = 7;
  FUN_0040180b();
  local_c._0_1_ = 0xb;
  FUN_00465be3(local_364);
  local_c._0_1_ = 0xc;
  uVar1 = FUN_004587de();
  local_c = CONCAT31(local_c._1_3_,0xd);
  iVar2 = FUN_0044c183(local_370,uVar1,local_308);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar2 + 4);
}



void __thiscall FUN_0045a14a(uint param_1_00,int param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_e4;
  uint local_e0;
  undefined4 local_dc;
  undefined4 local_d8;
  uint uStack_d4;
  uint *local_c0;
  undefined4 local_bc;
  uint local_b8;
  undefined local_a4 [24];
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bf8d;
  local_14 = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  local_c0 = (uint *)*(undefined **)(param_1 + 0x24);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_c0;
  }
  else {
    local_bc = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_bc;
  }
  local_8c = &local_dc;
  local_bc = (undefined *)
             CONCAT31(local_bc._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_dc = 0;
  local_d8 = 0;
  local_c0 = &local_e0;
  local_c = 0;
  local_e4 = 0;
  local_e0 = param_1_00 & 0xffffff00;
  local_b8 = param_1_00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c0 = &local_e4;
  local_c = CONCAT31(local_c._1_3_,1);
  local_e4 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045a3e0(uint param_1_00,int param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_e4;
  uint local_e0;
  undefined4 local_dc;
  undefined4 local_d8;
  uint uStack_d4;
  uint *local_c0;
  undefined4 local_bc;
  uint local_b8;
  undefined local_a4 [24];
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bf8d;
  local_14 = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  local_c0 = (uint *)*(undefined **)(param_1 + 0x24);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_c0;
  }
  else {
    local_bc = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_bc;
  }
  local_8c = &local_dc;
  local_bc = (undefined *)
             CONCAT31(local_bc._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_dc = 0;
  local_d8 = 0;
  local_c0 = &local_e0;
  local_c = 0;
  local_e4 = 0;
  local_e0 = param_1_00 & 0xffffff00;
  local_b8 = param_1_00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c0 = &local_e4;
  local_c = CONCAT31(local_c._1_3_,1);
  local_e4 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045a676(int param_1_00,uint param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_dc;
  uint local_d8;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  uint *local_bc;
  undefined4 local_b8;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_bc = (uint *)*(undefined **)(param_1 + 8);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_bc;
  }
  else {
    local_b8 = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_b8;
  }
  local_94 = &local_d4;
  local_b8 = (undefined *)
             CONCAT31(local_b8._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_d4 = 0;
  local_d0 = 0;
  local_bc = &local_d8;
  local_c = 0;
  local_dc = 0;
  local_d8 = param_1 & 0xffffff00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 4),0);
  local_bc = &local_dc;
  local_c = CONCAT31(local_c._1_3_,1);
  local_dc = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045a904(int param_1_00,uint param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_dc;
  uint local_d8;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  uint *local_bc;
  undefined4 local_b8;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_bc = (uint *)*(undefined **)(param_1 + 8);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_bc;
  }
  else {
    local_b8 = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_b8;
  }
  local_94 = &local_d4;
  local_b8 = (undefined *)
             CONCAT31(local_b8._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_d4 = 0;
  local_d0 = 0;
  local_bc = &local_d8;
  local_c = 0;
  local_dc = 0;
  local_d8 = param_1 & 0xffffff00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 4),0);
  local_bc = &local_dc;
  local_c = CONCAT31(local_c._1_3_,1);
  local_dc = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045ab92(int param_1_00,uint param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_dc;
  uint local_d8;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  uint *local_bc;
  undefined4 local_b8;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_bc = (uint *)*(undefined **)(param_1 + 8);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_bc;
  }
  else {
    local_b8 = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_b8;
  }
  local_94 = &local_d4;
  local_b8 = (undefined *)
             CONCAT31(local_b8._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_d4 = 0;
  local_d0 = 0;
  local_bc = &local_d8;
  local_c = 0;
  local_dc = 0;
  local_d8 = param_1 & 0xffffff00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 4),0);
  local_bc = &local_dc;
  local_c = CONCAT31(local_c._1_3_,1);
  local_dc = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045ae20(int param_1_00,uint param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_dc;
  uint local_d8;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  uint *local_bc;
  undefined4 local_b8;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_bc = (uint *)*(undefined **)(param_1 + 8);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_bc;
  }
  else {
    local_b8 = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_b8;
  }
  local_94 = &local_d4;
  local_b8 = (undefined *)
             CONCAT31(local_b8._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_d4 = 0;
  local_d0 = 0;
  local_bc = &local_d8;
  local_c = 0;
  local_dc = 0;
  local_d8 = param_1 & 0xffffff00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 4),0);
  local_bc = &local_dc;
  local_c = CONCAT31(local_c._1_3_,1);
  local_dc = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045b0ae(uint param_1_00,int param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 local_17c;
  uint local_178;
  uint uStack_174;
  uint *local_160;
  undefined4 local_15c;
  uint local_158;
  undefined4 *local_154;
  undefined local_150 [16];
  undefined local_140 [300];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5c164;
  local_14 = ExceptionList;
  uStack_174 = DAT_0323f878 ^ (uint)&stack0xfffffe90;
  ExceptionList = &local_14;
  local_160 = (uint *)*(undefined **)(param_1 + 0xc);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_160;
  }
  else {
    local_15c = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_15c;
  }
  local_15c = (undefined *)
              CONCAT31(local_15c._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_158 = param_1_00;
  if (*(int *)(param_1 + 8) != 0) {
    local_17c = 0;
    local_178 = param_1_00 & 0xffffff00;
    local_160 = &local_178;
    puVar2 = (undefined4 *)FUN_00443a80(local_150);
    local_160 = &local_17c;
    local_c = 0;
    local_17c = *puVar2;
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  local_154 = &local_17c;
  local_17c = 0;
  local_178 = 0;
  local_c = 0x15;
  iVar3 = FUN_00443a80(local_140,*(undefined4 *)(param_1 + 4),0);
  local_c = CONCAT31(local_c._1_3_,0x16);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar3 + 4);
}



void __thiscall FUN_0045b639(uint param_1_00,int param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_f4;
  uint local_f0;
  uint uStack_ec;
  uint *local_d8;
  undefined4 local_d4;
  uint local_d0;
  undefined local_a8 [148];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5c03c;
  local_14 = ExceptionList;
  uStack_ec = DAT_0323f878 ^ (uint)&stack0xffffff18;
  ExceptionList = &local_14;
  local_d8 = (uint *)*(undefined **)(param_1 + 0x20);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_d8;
  }
  else {
    local_d4 = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_d4;
  }
  local_d8 = &local_f0;
  local_d4 = (undefined *)
             CONCAT31(local_d4._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_f4 = 0;
  local_f0 = param_1_00 & 0xffffff00;
  local_d0 = param_1_00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a8,*(undefined4 *)(param_1 + 0x28),0);
  local_d8 = &local_f4;
  local_c = 0;
  local_f4 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void FUN_0045b9b4(void)

{
  undefined4 *puVar1;
  undefined4 local_c4;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 local_b0;
  uint uStack_ac;
  undefined local_9c [8];
  undefined4 *local_94;
  undefined4 *local_90;
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bdc2;
  local_14 = ExceptionList;
  uStack_ac = DAT_0323f878 ^ (uint)&stack0xffffff58;
  ExceptionList = &local_14;
  local_8c = &local_b4;
  local_b4 = 0;
  local_b0 = 0;
  local_90 = &local_bc;
  local_bc = 0;
  local_b8 = 0;
  local_c = 1;
  local_c4 = 0xa0c;
  local_c0 = 0x60;
  puVar1 = (undefined4 *)FUN_00465be3(local_9c);
  local_c4 = *puVar1;
  local_94 = &local_c4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void __thiscall FUN_0045bb1d(uint param_1_00,int param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_e4;
  uint local_e0;
  undefined4 local_dc;
  undefined4 local_d8;
  uint uStack_d4;
  uint *local_c0;
  undefined4 local_bc;
  uint local_b8;
  undefined local_a4 [24];
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bf8d;
  local_14 = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  local_c0 = (uint *)*(undefined **)(param_1 + 0x24);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_c0;
  }
  else {
    local_bc = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_bc;
  }
  local_8c = &local_dc;
  local_bc = (undefined *)
             CONCAT31(local_bc._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_dc = 0;
  local_d8 = 0;
  local_c0 = &local_e0;
  local_c = 0;
  local_e4 = 0;
  local_e0 = param_1_00 & 0xffffff00;
  local_b8 = param_1_00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c0 = &local_e4;
  local_c = CONCAT31(local_c._1_3_,1);
  local_e4 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045bdb3(uint param_1_00,int param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_e4;
  uint local_e0;
  undefined4 local_dc;
  undefined4 local_d8;
  uint uStack_d4;
  uint *local_c0;
  undefined4 local_bc;
  uint local_b8;
  undefined local_a4 [24];
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bf8d;
  local_14 = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  local_c0 = (uint *)*(undefined **)(param_1 + 0x24);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_c0;
  }
  else {
    local_bc = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_bc;
  }
  local_8c = &local_dc;
  local_bc = (undefined *)
             CONCAT31(local_bc._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_dc = 0;
  local_d8 = 0;
  local_c0 = &local_e0;
  local_c = 0;
  local_e4 = 0;
  local_e0 = param_1_00 & 0xffffff00;
  local_b8 = param_1_00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c0 = &local_e4;
  local_c = CONCAT31(local_c._1_3_,1);
  local_e4 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045c049(uint param_1_00,int param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_e4;
  uint local_e0;
  undefined4 local_dc;
  undefined4 local_d8;
  uint uStack_d4;
  uint *local_c0;
  undefined4 local_bc;
  uint local_b8;
  undefined local_a4 [24];
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bf8d;
  local_14 = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  local_c0 = (uint *)*(undefined **)(param_1 + 0x24);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_c0;
  }
  else {
    local_bc = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_bc;
  }
  local_8c = &local_dc;
  local_bc = (undefined *)
             CONCAT31(local_bc._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_dc = 0;
  local_d8 = 0;
  local_c0 = &local_e0;
  local_c = 0;
  local_e4 = 0;
  local_e0 = param_1_00 & 0xffffff00;
  local_b8 = param_1_00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c0 = &local_e4;
  local_c = CONCAT31(local_c._1_3_,1);
  local_e4 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045c2df(uint param_1_00,int param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_e4;
  uint local_e0;
  undefined4 local_dc;
  undefined4 local_d8;
  uint uStack_d4;
  uint *local_c0;
  undefined4 local_bc;
  uint local_b8;
  undefined local_a4 [24];
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bf8d;
  local_14 = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  local_c0 = (uint *)*(undefined **)(param_1 + 0x24);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_c0;
  }
  else {
    local_bc = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_bc;
  }
  local_8c = &local_dc;
  local_bc = (undefined *)
             CONCAT31(local_bc._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_dc = 0;
  local_d8 = 0;
  local_c0 = &local_e0;
  local_c = 0;
  local_e4 = 0;
  local_e0 = param_1_00 & 0xffffff00;
  local_b8 = param_1_00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c0 = &local_e4;
  local_c = CONCAT31(local_c._1_3_,1);
  local_e4 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045c575(uint param_1_00,int param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_e4;
  uint local_e0;
  undefined4 local_dc;
  undefined4 local_d8;
  uint uStack_d4;
  uint *local_c0;
  undefined4 local_bc;
  uint local_b8;
  undefined local_a4 [24];
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bf8d;
  local_14 = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  local_c0 = (uint *)*(undefined **)(param_1 + 0x24);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_c0;
  }
  else {
    local_bc = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_bc;
  }
  local_8c = &local_dc;
  local_bc = (undefined *)
             CONCAT31(local_bc._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_dc = 0;
  local_d8 = 0;
  local_c0 = &local_e0;
  local_c = 0;
  local_e4 = 0;
  local_e0 = param_1_00 & 0xffffff00;
  local_b8 = param_1_00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c0 = &local_e4;
  local_c = CONCAT31(local_c._1_3_,1);
  local_e4 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045c80b(uint param_1_00,int param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_e4;
  uint local_e0;
  undefined4 local_dc;
  undefined4 local_d8;
  uint uStack_d4;
  uint *local_c0;
  undefined4 local_bc;
  uint local_b8;
  undefined local_a4 [24];
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bf8d;
  local_14 = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  local_c0 = (uint *)*(undefined **)(param_1 + 0x24);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_c0;
  }
  else {
    local_bc = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_bc;
  }
  local_8c = &local_dc;
  local_bc = (undefined *)
             CONCAT31(local_bc._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_dc = 0;
  local_d8 = 0;
  local_c0 = &local_e0;
  local_c = 0;
  local_e4 = 0;
  local_e0 = param_1_00 & 0xffffff00;
  local_b8 = param_1_00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c0 = &local_e4;
  local_c = CONCAT31(local_c._1_3_,1);
  local_e4 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045caa1(uint param_1_00,int param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_e4;
  uint local_e0;
  undefined4 local_dc;
  undefined4 local_d8;
  uint uStack_d4;
  uint *local_c0;
  undefined4 local_bc;
  uint local_b8;
  undefined local_a4 [24];
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bf8d;
  local_14 = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  local_c0 = (uint *)*(undefined **)(param_1 + 0x24);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_c0;
  }
  else {
    local_bc = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_bc;
  }
  local_8c = &local_dc;
  local_bc = (undefined *)
             CONCAT31(local_bc._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_dc = 0;
  local_d8 = 0;
  local_c0 = &local_e0;
  local_c = 0;
  local_e4 = 0;
  local_e0 = param_1_00 & 0xffffff00;
  local_b8 = param_1_00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c0 = &local_e4;
  local_c = CONCAT31(local_c._1_3_,1);
  local_e4 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045cd37(uint param_1_00,int param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_e4;
  uint local_e0;
  undefined4 local_dc;
  undefined4 local_d8;
  uint uStack_d4;
  uint *local_c0;
  undefined4 local_bc;
  uint local_b8;
  undefined local_a4 [24];
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bf8d;
  local_14 = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  local_c0 = (uint *)*(undefined **)(param_1 + 0x24);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_c0;
  }
  else {
    local_bc = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_bc;
  }
  local_8c = &local_dc;
  local_bc = (undefined *)
             CONCAT31(local_bc._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_dc = 0;
  local_d8 = 0;
  local_c0 = &local_e0;
  local_c = 0;
  local_e4 = 0;
  local_e0 = param_1_00 & 0xffffff00;
  local_b8 = param_1_00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c0 = &local_e4;
  local_c = CONCAT31(local_c._1_3_,1);
  local_e4 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void FUN_0045cfcd(int param_1)

{
  int iVar1;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_94 = &local_d4;
  local_d4 = 0;
  local_d0 = 0;
  local_c = 0;
  iVar1 = FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0045d22c(int param_1)

{
  int iVar1;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_94 = &local_d4;
  local_d4 = 0;
  local_d0 = 0;
  local_c = 0;
  iVar1 = FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0045d47f(int param_1)

{
  int iVar1;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_94 = &local_d4;
  local_d4 = 0;
  local_d0 = 0;
  local_c = 0;
  iVar1 = FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0045d6de(int param_1)

{
  int iVar1;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_94 = &local_d4;
  local_d4 = 0;
  local_d0 = 0;
  local_c = 0;
  iVar1 = FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0045d93d(int param_1)

{
  int iVar1;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_94 = &local_d4;
  local_d4 = 0;
  local_d0 = 0;
  local_c = 0;
  iVar1 = FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0045db9c(int param_1)

{
  int iVar1;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_94 = &local_d4;
  local_d4 = 0;
  local_d0 = 0;
  local_c = 0;
  iVar1 = FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 0x20),0);
  local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0045ddfb(int param_1)

{
  int iVar1;
  undefined local_b0 [156];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5be71;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00443a80(local_b0,*(undefined4 *)(param_1 + 8),0);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0045e134(void)

{
  undefined4 *puVar1;
  undefined4 local_c4;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 local_b0;
  uint uStack_ac;
  undefined local_9c [8];
  undefined4 *local_94;
  undefined4 *local_90;
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bdc2;
  local_14 = ExceptionList;
  uStack_ac = DAT_0323f878 ^ (uint)&stack0xffffff58;
  ExceptionList = &local_14;
  local_8c = &local_b4;
  local_b4 = 0;
  local_b0 = 0;
  local_90 = &local_bc;
  local_bc = 0;
  local_b8 = 0;
  local_c = 1;
  local_c4 = 0xa0c;
  local_c0 = 0x14b;
  puVar1 = (undefined4 *)FUN_00465be3(local_9c);
  local_c4 = *puVar1;
  local_94 = &local_c4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0045e29d(void)

{
  undefined4 *puVar1;
  undefined4 local_c4;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 local_b0;
  uint uStack_ac;
  undefined local_9c [8];
  undefined4 *local_94;
  undefined4 *local_90;
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bdc2;
  local_14 = ExceptionList;
  uStack_ac = DAT_0323f878 ^ (uint)&stack0xffffff58;
  ExceptionList = &local_14;
  local_8c = &local_b4;
  local_b4 = 0;
  local_b0 = 0;
  local_90 = &local_bc;
  local_bc = 0;
  local_b8 = 0;
  local_c = 1;
  local_c4 = 0xa0c;
  local_c0 = 0x17a;
  puVar1 = (undefined4 *)FUN_00465be3(local_9c);
  local_c4 = *puVar1;
  local_94 = &local_c4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0045e406(void)

{
  undefined4 *puVar1;
  undefined4 local_c4;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 local_b0;
  uint uStack_ac;
  undefined local_9c [8];
  undefined4 *local_94;
  undefined4 *local_90;
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bdc2;
  local_14 = ExceptionList;
  uStack_ac = DAT_0323f878 ^ (uint)&stack0xffffff58;
  ExceptionList = &local_14;
  local_8c = &local_b4;
  local_b4 = 0;
  local_b0 = 0;
  local_90 = &local_bc;
  local_bc = 0;
  local_b8 = 0;
  local_c = 1;
  local_c4 = 0xa0c;
  local_c0 = 0x17b;
  puVar1 = (undefined4 *)FUN_00465be3(local_9c);
  local_c4 = *puVar1;
  local_94 = &local_c4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0045e56f(void)

{
  undefined4 *puVar1;
  undefined4 local_c4;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 local_b0;
  uint uStack_ac;
  undefined local_9c [8];
  undefined4 *local_94;
  undefined4 *local_90;
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bdc2;
  local_14 = ExceptionList;
  uStack_ac = DAT_0323f878 ^ (uint)&stack0xffffff58;
  ExceptionList = &local_14;
  local_8c = &local_b4;
  local_b4 = 0;
  local_b0 = 0;
  local_90 = &local_bc;
  local_bc = 0;
  local_b8 = 0;
  local_c = 1;
  local_c4 = 0xa0c;
  local_c0 = 0x1c1;
  puVar1 = (undefined4 *)FUN_00465be3(local_9c);
  local_c4 = *puVar1;
  local_94 = &local_c4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0045e6d8(void)

{
  undefined4 *puVar1;
  undefined4 local_c4;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 local_b0;
  uint uStack_ac;
  undefined local_9c [8];
  undefined4 *local_94;
  undefined4 *local_90;
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bdc2;
  local_14 = ExceptionList;
  uStack_ac = DAT_0323f878 ^ (uint)&stack0xffffff58;
  ExceptionList = &local_14;
  local_8c = &local_b4;
  local_b4 = 0;
  local_b0 = 0;
  local_90 = &local_bc;
  local_bc = 0;
  local_b8 = 0;
  local_c = 1;
  local_c4 = 0xa0c;
  local_c0 = 0x211;
  puVar1 = (undefined4 *)FUN_00465be3(local_9c);
  local_c4 = *puVar1;
  local_94 = &local_c4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0045e841(int param_1)

{
  int iVar1;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_94 = &local_d4;
  local_d4 = 0;
  local_d0 = 0;
  local_c = 0;
  iVar1 = FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 4),0);
  local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0045ea94(int param_1)

{
  int iVar1;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_94 = &local_d4;
  local_d4 = 0;
  local_d0 = 0;
  local_c = 0;
  iVar1 = FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 4),0);
  local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0045ece7(int param_1)

{
  int iVar1;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_94 = &local_d4;
  local_d4 = 0;
  local_d0 = 0;
  local_c = 0;
  iVar1 = FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 4),0);
  local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0045ef3a(int param_1)

{
  int iVar1;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_94 = &local_d4;
  local_d4 = 0;
  local_d0 = 0;
  local_c = 0;
  iVar1 = FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 4),0);
  local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void __thiscall FUN_0045f18d(int param_1_00,uint param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_dc;
  uint local_d8;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  uint *local_bc;
  undefined4 local_b8;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_bc = (uint *)*(undefined **)(param_1 + 8);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_bc;
  }
  else {
    local_b8 = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_b8;
  }
  local_94 = &local_d4;
  local_b8 = (undefined *)
             CONCAT31(local_b8._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_d4 = 0;
  local_d0 = 0;
  local_bc = &local_d8;
  local_c = 0;
  local_dc = 0;
  local_d8 = param_1 & 0xffffff00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 4),0);
  local_bc = &local_dc;
  local_c = CONCAT31(local_c._1_3_,1);
  local_dc = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045f41b(int param_1_00,uint param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_dc;
  uint local_d8;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  uint *local_bc;
  undefined4 local_b8;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_bc = (uint *)*(undefined **)(param_1 + 8);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_bc;
  }
  else {
    local_b8 = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_b8;
  }
  local_94 = &local_d4;
  local_b8 = (undefined *)
             CONCAT31(local_b8._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_d4 = 0;
  local_d0 = 0;
  local_bc = &local_d8;
  local_c = 0;
  local_dc = 0;
  local_d8 = param_1 & 0xffffff00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 4),0);
  local_bc = &local_dc;
  local_c = CONCAT31(local_c._1_3_,1);
  local_dc = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void __thiscall FUN_0045f6a9(int param_1_00,uint param_1)

{
  undefined **ppuVar1;
  undefined4 *puVar2;
  undefined4 local_dc;
  uint local_d8;
  undefined4 local_d4;
  undefined4 local_d0;
  uint uStack_cc;
  uint *local_bc;
  undefined4 local_b8;
  undefined local_a4 [16];
  undefined4 *local_94;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5beff;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_bc = (uint *)*(undefined **)(param_1 + 8);
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    ppuVar1 = (undefined **)&local_bc;
  }
  else {
    local_b8 = (undefined *)0x1;
    ppuVar1 = (undefined **)&local_b8;
  }
  local_94 = &local_d4;
  local_b8 = (undefined *)
             CONCAT31(local_b8._1_3_,(~-(uint)(*ppuVar1 != (undefined *)0x1) & 0x7a491c) != 0);
  local_d4 = 0;
  local_d0 = 0;
  local_bc = &local_d8;
  local_c = 0;
  local_dc = 0;
  local_d8 = param_1 & 0xffffff00;
  puVar2 = (undefined4 *)FUN_00443a80(local_a4,*(undefined4 *)(param_1 + 4),0);
  local_bc = &local_dc;
  local_c = CONCAT31(local_c._1_3_,1);
  local_dc = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



void FUN_0045f937(void)

{
  undefined4 *puVar1;
  undefined4 local_c4;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 local_b0;
  uint uStack_ac;
  undefined local_9c [8];
  undefined4 *local_94;
  undefined4 *local_90;
  undefined4 *local_8c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5bdc2;
  local_14 = ExceptionList;
  uStack_ac = DAT_0323f878 ^ (uint)&stack0xffffff58;
  ExceptionList = &local_14;
  local_8c = &local_b4;
  local_b4 = 0;
  local_b0 = 0;
  local_90 = &local_bc;
  local_bc = 0;
  local_b8 = 0;
  local_c = 1;
  local_c4 = 0xa0c;
  local_c0 = 0x20b;
  puVar1 = (undefined4 *)FUN_00465be3(local_9c);
  local_c4 = *puVar1;
  local_94 = &local_c4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0045faa0(undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 *unaff_EDI;
  undefined local_10 [12];
  
  uVar1 = unaff_EDI[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(unaff_EDI[5] - uVar1) >> 3;
  }
  uVar2 = unaff_EDI[4];
  if ((uint)((int)(uVar2 - uVar1) >> 3) < uVar3) {
    uVar4 = FUN_00478fca(param_1);
    unaff_EDI[4] = uVar4;
  }
  else {
    if (uVar2 < uVar1) {
      FUN_00a3fb10();
    }
    FUN_0045faff(local_10,param_1,*unaff_EDI,uVar2);
  }
  return;
}



void FUN_0045faff(int **param_1,undefined4 param_2,int *param_3,int param_4)

{
  int *piVar1;
  int *piVar2;
  int **in_EAX;
  int iVar3;
  int iVar4;
  
  piVar1 = in_EAX[3];
  if (((int)in_EAX[4] - (int)piVar1 & 0xfffffff8U) == 0) {
    iVar4 = 0;
  }
  else {
    if (in_EAX[4] < piVar1) {
      FUN_00a3fb10();
    }
    if ((param_3 == (int *)0x0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    iVar4 = param_4 - (int)piVar1 >> 3;
  }
  FUN_0044d15c();
  piVar1 = in_EAX[3];
  if (in_EAX[4] < piVar1) {
    FUN_00a3fb10();
  }
  piVar2 = *in_EAX;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar2;
  }
  piVar1 = piVar1 + iVar4 * 2;
  if (piVar1 <= *(int **)(iVar3 + 0x10)) {
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *piVar2;
    }
    if (*(int **)(iVar4 + 0xc) <= piVar1) goto LAB_0045fb92;
  }
  FUN_00a3fb10();
LAB_0045fb92:
  param_1[1] = piVar1;
  *param_1 = piVar2;
  return;
}



void FUN_0045fba4(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W208886B1::WEE9C9FAB::vftable;
  return;
}



undefined4 FUN_004604b5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f79540,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f79748,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00f79950,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f79b58,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00f79d60,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00f79f68,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f7a170,0x19b,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00460535(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00f7a348,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f7a550,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00f7a758,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f7a960,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00f7ab68,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00f7ad70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00f7af78,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_00f7b180,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00f7b388,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f7b590,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f7b798,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_00f7b9a0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f7bba8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00f7bdb0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f7bfb8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f7c1c0,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_00f7c3c8,0x200,param_2), cVar1 != '\0')))))) &&
     (((cVar1 = (*param_1)(&DAT_00f7c5d0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f7c7d8,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f7c9e0,0x1d6,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0046068a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00f7cbb8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f7cdc0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00f7cfc8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f7d1d0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00f7d3d8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00f7d5e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00f7d7e8,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_00f7d9f0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00f7dbf8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f7de00,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f7e008,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_00f7e210,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f7e418,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00f7e620,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f7e828,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f7ea30,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_00f7ec38,0x200,param_2), cVar1 != '\0')))))) &&
     ((((cVar1 = (*param_1)(&DAT_00f7ee40,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f7f048,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f7f250,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f7f458,0x162,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004607f0(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00f7f5c0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f7f7c8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00f7f9d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f7fbd8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00f7fde0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00f7ffe8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00f801f0,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_00f803f8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00f80600,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f80808,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f80a10,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_00f80c18,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f80e20,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00f81028,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f81230,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f81438,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_00f81640,0x200,param_2), cVar1 != '\0')))))) &&
     ((((cVar1 = (*param_1)(&DAT_00f81848,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f81a50,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f81c58,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f81e60,0xc2,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00460956(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00f81f28,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f82130,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f82338,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f82540,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_00f82748,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00f82950,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f82b58,0x200,param_2), cVar1 != '\0')))))) &&
      (cVar1 = (*param_1)(&DAT_00f82d60,0x200,param_2), cVar1 != '\0')) &&
     ((((((cVar1 = (*param_1)(&DAT_00f82f68,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f83170,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f83378,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00f83580,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f83788,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00f83990,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00f83b98,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00f83da0,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_00f83fa8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_00f841b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00f843b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00f845c0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_00f847c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00f849d0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_00f84bd8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_00f84de0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00f84fe8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_00f851f0,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_00f853f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00f85600,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00f85808,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00f85a10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f85c18,0x200,param_2), cVar1 != '\0')))))))) &&
      (((cVar1 = (*param_1)(&DAT_00f85e20,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00f86028,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f86230,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_00f7a30c,0x3b,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00460ba7(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00f86438,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f86640,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f86848,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f86a50,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_00f86c58,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_00f86e60,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f87068,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00f87270,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_00f87478,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00f87680,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00f87888,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_00f87a90,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f87c98,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00f87ea0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_00f880a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00f882b0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00f884b8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_00f886c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00f888c8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_00f88ad0,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_00f88cd8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00f88ee0,0x200,param_2), cVar1 != '\0')))))))))) &&
       (cVar1 = (*param_1)(&DAT_00f890e8,0x200,param_2), cVar1 != '\0')))) &&
     (((cVar1 = (*param_1)(&DAT_00f892f0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f894f8,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f89700,0xea,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00460d62(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f897f0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f899f8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00f89c00,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f89e08,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f8a010,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f8a218,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f8a420,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_00f8a628,0x200,param_2), cVar1 != '\0' &&
       ((((((cVar1 = (*param_1)(&DAT_00f8a830,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00f8aa38,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00f8ac40,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00f8ae48,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00f8b050,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_00f8b258,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00f8b460,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00f8b668,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_00f8b870,0x200,param_2), cVar1 != '\0')))))) &&
     ((((cVar1 = (*param_1)(&DAT_00f8ba78,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f8bc80,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f8be88,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00f8c090,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f8c298,0x10e,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00460ed9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f8c3a8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f8c5b0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00f8c7b8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f8c9c0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f8cbc8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f8cdd0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f8cfd8,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00f8d1e0,0x200,param_2), cVar1 != '\0')))) &&
     (((cVar1 = (*param_1)(&DAT_00f8d3e8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f8d5f0,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f8d7f8,0x4a,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00460f92(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f8d848,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f8da50,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00f8dc58,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f8de60,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f8e068,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00f8e270,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f8e478,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00f8e680,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_00f8e888,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f8ea90,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f8ec98,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f8eea0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f8f0a8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_00f8f2b0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f8f4b8,0x125,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00461092(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00f8f5e0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f8f7e8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00f8f9f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f8fbf8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00f8fe00,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00f90008,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00f90210,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_00f90418,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00f90620,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f90828,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f90a30,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_00f90c38,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f90e40,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00f91048,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f91250,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f91458,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_00f91660,0x200,param_2), cVar1 != '\0')))))) &&
     ((((cVar1 = (*param_1)(&DAT_00f91868,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f91a70,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f91c78,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f91e80,0xd2,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004611f8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f91f58,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f92160,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00f92368,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f92570,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f92778,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00f92980,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f92b88,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00f92d90,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_00f92f98,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f931a0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f933a8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f935b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f937b8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_00f939c0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f93bc8,0xa6,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004612f8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f93c70,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f93e78,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f94080,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f94288,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00f94490,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f94698,0x17c,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0046136b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f94818,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f94a20,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00f94c28,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f94e30,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f95038,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f95240,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f95448,0x200,param_2), cVar1 != '\0')))))))) &&
      (cVar1 = (*param_1)(&DAT_00f95650,0x200,param_2), cVar1 != '\0')) &&
     (((((((cVar1 = (*param_1)(&DAT_00f95858,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00f95a60,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00f95c68,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00f95e70,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f96078,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_00f96280,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_00f96488,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f96690,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_00f96898,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00f96aa0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00f96ca8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00f96eb0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_00f970b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00f972c0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00f974c8,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_00f976d0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f978d8,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_00f97ae0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00f97ce8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f97ef0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f980f8,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_00f98300,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f98508,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f98710,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f98918,0x82,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0046159d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00f989a0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f98ba8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00f98db0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f98fb8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00f991c0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00f993c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00f995d0,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_00f997d8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00f999e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f99be8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f99df0,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_00f99ff8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f9a200,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00f9a408,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f9a610,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f9a818,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_00f9aa20,0x200,param_2), cVar1 != '\0')))))) &&
     ((((cVar1 = (*param_1)(&DAT_00f9ac28,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f9ae30,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f9b038,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f9b240,0xe6,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00461703(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00f9b328,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f9b530,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00f9b738,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f9b940,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00f9bb48,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00f9bd50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00f9bf58,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_00f9c160,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00f9c368,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f9c570,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f9c778,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_00f9c980,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f9cb88,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00f9cd90,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f9cf98,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f9d1a0,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_00f9d3a8,0x200,param_2), cVar1 != '\0')))))) &&
     ((((cVar1 = (*param_1)(&DAT_00f9d5b0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f9d7b8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f9d9c0,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f9dbc8,0x74,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00461866(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f9dc40,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f9de48,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f9e050,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f9e258,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f9e460,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f9e668,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f9e870,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f9ea78,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00f9ec80,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f9ee88,0xf8,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00461911(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_00f9ef88,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00f9f190,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_00f9f398,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00f9f5a0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00f9f7a8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_00f9f9b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00f9fbb8,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_00f9fdc0,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_00f9ffc8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fa01d0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00fa03d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00fa05e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00fa07e8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_00fa09f0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00fa0bf8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00fa0e00,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_00fa1008,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_00fa1210,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00fa1418,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00fa1620,0x200,param_2), cVar1 != '\0')))))) &&
     (((cVar1 = (*param_1)(&DAT_00fa1828,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00fa1a30,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00fa1c38,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00fa1e40,0xdd,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00461aaa(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_00fa1f20,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00fa2128,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_00fa2330,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fa2538,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00fa2740,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_00fa2948,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00fa2b50,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_00fa2d58,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_00fa2f60,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fa3168,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00fa3370,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00fa3578,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00fa3780,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_00fa3988,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00fa3b90,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00fa3d98,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_00fa3fa0,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_00fa41a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00fa43b0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00fa45b8,0x200,param_2), cVar1 != '\0')))))) &&
     (((cVar1 = (*param_1)(&DAT_00fa47c0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00fa49c8,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00fa4bd0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00fa4dd8,0xf5,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00461c43(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_00fa4ed0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00fa50d8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00fa52e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fa54e8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_00fa56f0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00fa58f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fa5b00,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_00fa5d08,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_00fa5f10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00fa6118,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00fa6320,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00fa6528,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00fa6730,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00fa6938,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00fa6b40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fa6d48,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_00fa6f50,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00fa7158,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00fa7360,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00fa7568,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_00fa7770,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00fa7978,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00fa7b80,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00fa7d88,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fa7f90,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_00fa8198,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((((cVar1 = (*param_1)(&DAT_00fa83a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fa85a8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00fa87b0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00fa89b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00fa8bc0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_00fa8dc8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00fa8fd0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00fa91d8,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00fa93e0,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00fa95e8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00fa97f0,499,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00461eb9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00fa9a08,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00fa9c10,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00fa9e18,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00faa020,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00faa228,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00faa430,0xba,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00461f2c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00faa4f0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00faa6f8,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00faa900,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00faab08,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00faad10,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00faaf18,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00fab120,0xd5,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00461fac(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f78b38,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f78d40,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f78f48,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f79150,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f79358,0x99,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



void __fastcall FUN_00462012(undefined4 *param_1)

{
  *param_1 = WAC38D41E::WD1B77F36::vftable;
  return;
}



undefined4 * __thiscall FUN_00462019(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WAC38D41E::WD1B77F36::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_004620c3(undefined4 param_1_00,byte param_1)

{
  FUN_00462112();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_00462680(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x462698;
  FUN_0046296b();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0046269f;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004620e4(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  iStack_24 = param_1 + 0x20;
  puVar1 = &uStack_28;
  uStack_28 = 0x462100;
  FUN_0049c7cb();
  local_8 = 0xffffffff;
  puVar1[-1] = param_1;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x46210a;
  FUN_0049c7cb();
  *(undefined4 *)((int)puVar2 + -4) = 0x46210f;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00462112(undefined4 *param_1)

{
  *param_1 = WAC38D41E::W06F90B13::vftable;
  FUN_004620e4(param_1 + 0x2e);
  FUN_00462680(param_1 + 0x26);
  FUN_0046488c();
  FUN_00417fe6();
  *param_1 = WAC38D41E::WD1B77F36::vftable;
  return;
}



void Catch_All_0046216d(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char * FUN_0046231d(char *param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  undefined4 local_5c;
  undefined4 local_58;
  int iStack_54;
  char local_40 [32];
  char *local_20;
  undefined4 local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  iStack_54 = param_4;
  local_18 = &local_5c;
  local_8 = 0;
  local_1c = 0;
  local_58 = param_3;
  local_20 = param_1;
  local_5c = param_2;
  FUN_004623ad(param_1);
  local_8 = 0;
  local_1c = 1;
  if ((*param_1 == '\0') && (param_4 != 0)) {
    iStack_54 = 0;
    local_18 = &local_5c;
    local_58 = param_3;
    local_5c = param_2;
    FUN_004623ad(local_40);
    local_8 = 1;
    iStack_54 = 0x462394;
    FUN_0041c550();
    if (local_40[0] != '\0') {
      iStack_54 = 0;
      local_58 = 1;
      local_5c = 0x4623a3;
      FUN_00401829();
    }
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall
FUN_004623ad(int param_1_00,undefined *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  char cVar1;
  undefined4 **ppuVar2;
  undefined4 *puVar3;
  undefined4 *local_34;
  undefined4 local_30;
  undefined4 *local_2c;
  undefined4 *local_28;
  char local_20;
  undefined4 *local_1c;
  int local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4623b9;
  local_14 = 0;
  FUN_0043d406();
  local_8 = 1;
  local_2c = (undefined4 *)param_2;
  local_28 = (undefined4 *)param_4;
  puVar3 = (undefined4 *)(param_1_00 + 0x98);
  local_18 = FUN_00462f15();
  if (puVar3 == (undefined4 *)0x0) {
    FUN_00a3fb10();
  }
  local_34 = (undefined4 *)*puVar3;
  local_30 = *(undefined4 *)(param_1_00 + 0xb0);
  local_1c = local_34;
  cVar1 = FUN_006b8eca();
  if ((cVar1 == '\0') && (cVar1 = FUN_0046299f(), cVar1 == '\0')) {
    ppuVar2 = &local_1c;
  }
  else {
    local_30 = *(undefined4 *)(param_1_00 + 0xb0);
    local_34 = (undefined4 *)*puVar3;
    ppuVar2 = &local_34;
  }
  local_2c = *ppuVar2;
  local_28 = ppuVar2[1];
  local_1c = (undefined4 *)0x0;
  local_18 = 0;
  local_8._0_1_ = 2;
  local_30 = *(undefined4 *)(param_1_00 + 0xb0);
  local_34 = (undefined4 *)*puVar3;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    FUN_006badde();
    FUN_005d11c9();
    if (local_1c != (undefined4 *)0x0) {
      (**(code **)*local_1c)(param_1);
      local_8._0_1_ = 1;
      local_14 = 1;
      if (local_18 != 0) {
        FUN_0040127a();
      }
      local_8 = (uint)local_8._1_3_ << 8;
      if (local_20 == '\0') {
        return param_1;
      }
      FUN_00401477();
      return param_1;
    }
  }
  local_8._0_1_ = 1;
  *param_1 = 0;
  local_14 = 1;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



undefined * __fastcall FUN_00462566(undefined *param_1)

{
  char *in_EAX;
  
  *param_1 = 0;
  if (*in_EAX != '\0') {
    FUN_00412a6f(in_EAX + 4);
  }
  return param_1;
}



int FUN_0046257e(int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 *unaff_EBX;
  undefined4 local_34 [3];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1eef0;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_14;
  FUN_00462f15(unaff_EBX);
  if (param_1 == 0) {
    FUN_00a3fb10(uVar2);
  }
  local_34[0] = *(undefined4 *)(param_1 + 0x18);
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    cVar1 = FUN_0046299f();
    if (cVar1 == '\0') {
      iVar3 = FUN_006badde();
      ExceptionList = local_14;
      return iVar3 + 8;
    }
  }
  local_34[0] = 0;
  local_c = 0;
  local_28 = *unaff_EBX;
  local_24 = unaff_EBX[1];
  local_20 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_34);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00462680(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x462698;
  FUN_0046296b();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0046269f;
  FUN_00a3f6a1();
}



int FUN_004626a8(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  int local_2c;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  FUN_00462d18(param_1,param_2);
  local_2c = 0;
  local_1c = local_c;
  local_20 = local_10;
  while( true ) {
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') break;
    local_2c = local_2c + 1;
    FUN_00696a87();
  }
  FUN_004628b5(&local_20,local_18,local_14,local_10,local_c);
  return local_2c;
}



undefined4 * FUN_0046272f(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  undefined4 *puVar2;
  undefined4 uVar3;
  
  if (*(int *)(in_EAX + 0x1c) == 0) {
    uVar3 = 1;
    goto LAB_00462751;
  }
  cVar1 = FUN_006b8eca();
  if (cVar1 != '\0') {
    cVar1 = FUN_0046299f();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_00462751;
    }
    goto LAB_00462893;
  }
  cVar1 = FUN_006b8eca();
  if (cVar1 != '\0') {
    cVar1 = FUN_0046299f();
    if (cVar1 == '\0') goto LAB_00462893;
    uVar3 = 0;
    goto LAB_00462751;
  }
  cVar1 = FUN_0046299f();
  if (cVar1 == '\0') {
LAB_0046282e:
    cVar1 = FUN_0046299f();
    if (cVar1 == '\0') {
LAB_00462893:
      puVar2 = (undefined4 *)FUN_004629b8(in_EAX,param_2);
      *param_1 = *puVar2;
      param_1[1] = puVar2[1];
      return param_1;
    }
    FUN_00696a87();
    cVar1 = FUN_006b8eca();
    if ((cVar1 == '\0') && (cVar1 = FUN_0046299f(), cVar1 == '\0')) goto LAB_00462893;
    if (*(char *)(*(int *)(param_4 + 8) + 0x1d) == '\0') {
      uVar3 = 1;
      goto LAB_00462751;
    }
  }
  else {
    FUN_00696e3c();
    cVar1 = FUN_0046299f();
    if (cVar1 == '\0') goto LAB_0046282e;
    if (*(char *)(*(int *)(param_4 + 8) + 0x1d) == '\0') {
      uVar3 = 1;
      goto LAB_00462751;
    }
  }
  uVar3 = 0;
LAB_00462751:
  FUN_00462dc8(param_1,uVar3,param_2);
  return param_1;
}



void FUN_004628b5(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_00462f4d(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00696a87();
    FUN_00462a7f();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_0046296b(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_004628b5(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



undefined4 __fastcall FUN_0046299f(undefined4 param_1,int *param_2)

{
  int *unaff_ESI;
  
  if ((*param_2 <= *unaff_ESI) && ((*param_2 < *unaff_ESI || (param_2[1] <= unaff_ESI[1])))) {
    return 0;
  }
  return 1;
}



void FUN_004629b8(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 uVar4;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_10 = (undefined4 *)param_1[6];
  puVar3 = (undefined4 *)local_10[1];
  cVar2 = *(char *)((int)puVar3 + 0x1d);
  cVar1 = '\x01';
  local_c = CONCAT31(local_c._1_3_,1);
  while (cVar2 == '\0') {
    local_8 = puVar3;
    cVar1 = FUN_0046299f();
    local_c = CONCAT31(local_c._1_3_,cVar1);
    if (cVar1 == '\0') {
      puVar3 = (undefined4 *)puVar3[2];
    }
    else {
      puVar3 = (undefined4 *)*puVar3;
    }
    local_10 = local_8;
    cVar2 = *(char *)((int)puVar3 + 0x1d);
  }
  local_14 = *param_1;
  local_8 = local_10;
  if (cVar1 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar2 = FUN_006b8eca();
    if (cVar2 != '\0') {
      uVar4 = 1;
      goto LAB_00462a2a;
    }
    FUN_00696e3c();
  }
  puVar3 = local_10;
  cVar2 = FUN_0046299f();
  uVar4 = local_c;
  if (cVar2 == '\0') {
    *unaff_EBX = local_14;
    unaff_EBX[1] = puVar3;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_00462a2a:
  puVar3 = (undefined4 *)FUN_00462dc8(&local_1c,uVar4,param_2);
  uVar4 = puVar3[1];
  *unaff_EBX = *puVar3;
  unaff_EBX[1] = uVar4;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x00462b6a)
// WARNING: Removing unreachable block (ram,0x00462b7a)
// WARNING: Removing unreachable block (ram,0x00462b83)
// WARNING: Removing unreachable block (ram,0x00462b86)
// WARNING: Removing unreachable block (ram,0x00462b76)
// WARNING: Removing unreachable block (ram,0x00462b93)
// WARNING: Removing unreachable block (ram,0x00462ba3)
// WARNING: Removing unreachable block (ram,0x00462bae)
// WARNING: Removing unreachable block (ram,0x00462baa)
// WARNING: Removing unreachable block (ram,0x00462b9e)
// WARNING: Removing unreachable block (ram,0x00462bb1)

void FUN_00462a7f(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x462a8b;
  if (*(char *)((int)param_4 + 0x1d) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00696a87();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
    if (*(char *)(param_4[2] + 0x1d) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x1d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x1d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 7) != '\x01') {
LAB_00462ce2:
    if (param_4[6] != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_00462c96:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 7) != '\x01'))
  goto LAB_00462cde;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 7) == '\0') {
      *(undefined *)(ppiVar4 + 7) = 1;
      *(undefined *)(ppiVar3 + 7) = 0;
      FUN_00745426(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x1d) == '\0') {
      if ((*(char *)(*ppiVar4 + 7) != '\x01') || (*(char *)(ppiVar4[2] + 7) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 7) == '\x01') {
          *(undefined *)(*ppiVar4 + 7) = 1;
          *(undefined *)(ppiVar4 + 7) = 0;
          FUN_006baade(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 7) = *(undefined *)(ppiVar3 + 7);
        *(undefined *)(ppiVar3 + 7) = 1;
        *(undefined *)(ppiVar4[2] + 7) = 1;
        FUN_00745426(param_1);
        goto LAB_00462cde;
      }
LAB_00462c8d:
      *(undefined *)(ppiVar4 + 7) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 7) == '\0') {
      *(undefined *)(ppiVar4 + 7) = 1;
      *(undefined *)(ppiVar3 + 7) = 0;
      FUN_006baade(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x1d) == '\0') {
      if ((*(char *)(ppiVar4[2] + 7) == '\x01') && (*(char *)(*ppiVar4 + 7) == '\x01'))
      goto LAB_00462c8d;
      if (*(char *)(*ppiVar4 + 7) == '\x01') {
        *(undefined *)(ppiVar4[2] + 7) = 1;
        *(undefined *)(ppiVar4 + 7) = 0;
        FUN_00745426(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 7) = *(undefined *)(ppiVar3 + 7);
      *(undefined *)(ppiVar3 + 7) = 1;
      *(undefined *)(*ppiVar4 + 7) = 1;
      FUN_006baade(param_1);
LAB_00462cde:
      *(undefined *)(ppiVar5 + 7) = 1;
      goto LAB_00462ce2;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_00462c96;
}



void FUN_00462d18(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  char cVar3;
  undefined4 *unaff_EBX;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 *local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  cVar3 = *(char *)((int)(undefined4 *)local_8[1] + 0x1d);
  puVar2 = local_8;
  local_c = (undefined4 *)local_8[1];
  while (cVar3 == '\0') {
    cVar3 = FUN_0046299f();
    if (cVar3 == '\0') {
      if ((*(char *)((int)local_8 + 0x1d) != '\0') && (cVar3 = FUN_0046299f(), cVar3 != '\0')) {
        local_8 = local_c;
      }
      puVar4 = (undefined4 *)*local_c;
    }
    else {
      puVar4 = (undefined4 *)local_c[2];
      local_c = puVar2;
    }
    puVar2 = local_c;
    local_c = puVar4;
    cVar3 = *(char *)((int)puVar4 + 0x1d);
  }
  if (*(char *)((int)local_8 + 0x1d) == '\0') {
    puVar4 = (undefined4 *)*local_8;
  }
  else {
    puVar4 = *(undefined4 **)(param_1[6] + 4);
  }
  cVar3 = *(char *)((int)puVar4 + 0x1d);
  while (cVar3 == '\0') {
    cVar3 = FUN_0046299f();
    if (cVar3 == '\0') {
      puVar5 = (undefined4 *)puVar4[2];
    }
    else {
      puVar5 = (undefined4 *)*puVar4;
      local_8 = puVar4;
    }
    puVar4 = puVar5;
    cVar3 = *(char *)((int)puVar5 + 0x1d);
  }
  uVar1 = *param_1;
  *unaff_EBX = uVar1;
  unaff_EBX[2] = uVar1;
  unaff_EBX[1] = puVar2;
  unaff_EBX[3] = local_8;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_00462dc8(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x462dd4;
  if (0xffffffd < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_00462f8b(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_00462eed;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_00462eed;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_00462eed:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 7) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x1c) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 7) == '\0') {
LAB_00462ea9:
        *(undefined *)(piVar1 + 7) = 1;
        *(undefined *)(piVar7 + 7) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x1c) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_00745426(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x1c) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x1c) = 0;
        FUN_006baade(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 7) == '\0') goto LAB_00462ea9;
    if (piVar8 == (int *)*piVar1) {
      FUN_006baade(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x1c) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x1c) = 0;
    FUN_00745426(unaff_ESI);
  } while( true );
}



undefined4 * FUN_00462f15(void)

{
  undefined4 *puVar1;
  char cVar2;
  int in_EAX;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar3 = (undefined4 *)(*(undefined4 **)(in_EAX + 0x18))[1];
  cVar2 = *(char *)((int)puVar3 + 0x1d);
  puVar1 = *(undefined4 **)(in_EAX + 0x18);
  while (cVar2 == '\0') {
    cVar2 = FUN_0046299f();
    if (cVar2 == '\0') {
      puVar4 = (undefined4 *)*puVar3;
    }
    else {
      puVar4 = (undefined4 *)puVar3[2];
      puVar3 = puVar1;
    }
    puVar1 = puVar3;
    puVar3 = puVar4;
    cVar2 = *(char *)((int)puVar4 + 0x1d);
  }
  return puVar1;
}



void FUN_00462f4d(int param_1)

{
  if (*(char *)(param_1 + 0x1d) == '\0') {
    FUN_00462f4d(*(undefined4 *)(param_1 + 8));
    if (*(int *)(param_1 + 0x18) != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



undefined4 FUN_00462f8b(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *in_EAX;
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *in_EAX;
    puVar1[4] = in_EAX[1];
    puVar1[5] = in_EAX[2];
                    // WARNING: Subroutine does not return
    FUN_0043c023(in_EAX + 3);
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_00462fdd(int param_1)

{
  FUN_007c1e0d(param_1);
  FUN_007c1e0d(param_1 + 0x20);
  return param_1;
}



int FUN_00463009(void)

{
  undefined4 *in_EAX;
  int *piVar1;
  int iVar2;
  int local_18;
  undefined4 local_14;
  undefined4 local_10;
  
  if (in_EAX[0xf] == 0) {
    if (in_EAX[7] == 0) {
      iVar2 = 1;
      local_18 = iVar2;
    }
    else {
      local_10 = in_EAX[6];
      local_14 = *in_EAX;
      FUN_0076b32a();
      piVar1 = (int *)FUN_006badde();
      iVar2 = *piVar1 + 1;
      local_18 = iVar2;
    }
  }
  else {
    local_10 = *(undefined4 *)in_EAX[0xe];
    local_14 = in_EAX[8];
    piVar1 = (int *)FUN_006badde();
    iVar2 = *piVar1;
    local_18 = iVar2;
    FUN_0049cccf(in_EAX + 8,&local_14,local_14,local_10);
  }
  FUN_0042c446(&local_18);
  return iVar2;
}



void FUN_00463099(void)

{
  int iVar1;
  int *in_EAX;
  int local_1c;
  int local_18;
  
  FUN_004630fe(&local_1c,&stack0x00000004);
  iVar1 = in_EAX[6];
  if ((local_1c == 0) || (local_1c != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (local_18 != iVar1) {
    FUN_0042c446(&stack0x00000004);
    FUN_0049cccf();
  }
  return;
}



int * FUN_004630fe(int *param_1,uint *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  int *unaff_ESI;
  undefined4 *puVar5;
  int local_14;
  int local_10;
  int local_c;
  undefined4 *local_8;
  
  puVar5 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar5[1] + 0x11) == '\0') {
    puVar2 = (undefined4 *)puVar5[1];
    do {
      if ((uint)puVar2[3] < *param_2) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar5 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x11) == '\0');
  }
  puVar2 = (undefined4 *)unaff_ESI[6];
  local_8 = puVar5;
  local_c = *unaff_ESI;
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  if ((puVar5 == puVar2) || (*param_2 < (uint)puVar5[3])) {
    local_10 = unaff_ESI[6];
    local_14 = *unaff_ESI;
    piVar4 = &local_14;
  }
  else {
    piVar4 = &local_c;
  }
  iVar1 = *piVar4;
  param_1[1] = piVar4[1];
  *param_1 = iVar1;
  return param_1;
}



void __fastcall FUN_004631c3(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0xf;
  return;
}



void __fastcall FUN_004631cf(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0xd;
  return;
}



void __fastcall FUN_00463217(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 5;
  return;
}



void __fastcall FUN_0046323b(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 2;
  return;
}



void FUN_00463250(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = WAC38D41E::W887DE3C8::vftable;
  return;
}



undefined4 __thiscall FUN_004632e4(undefined4 param_1_00,byte param_1)

{
  FUN_00463300();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00463300(undefined4 *param_1)

{
  undefined4 uVar1;
  char local_20;
  
  *param_1 = WAC38D41E::WEBAE1F95::vftable;
  uVar1 = param_1[10];
  FUN_0043d406(param_1[1] + 4);
  FUN_00463099(uVar1);
  if (local_20 != '\0') {
    FUN_00401477();
  }
  FUN_0074ca40();
  FUN_004017b2(1,0);
  if (param_1[2] != 0) {
    FUN_0040127a();
  }
  *param_1 = WAC38D41E::W887DE3C8::vftable;
  return;
}



void Catch_All_0046338b(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00463395(void)

{
  undefined4 param_4;
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_14 = local_2c;
  local_8 = 1;
  local_2c[0] = param_4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000014);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0046341c(undefined4 param_1,undefined4 param_2)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x0000000c);
}



undefined4 __thiscall FUN_00463474(int param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined *local_4c [2];
  undefined *local_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined *local_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined *local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined **local_8;
  
  uStack_18 = *(undefined4 *)(param_1_00 + 0x28);
  uStack_1c = *(undefined4 *)(param_1_00 + 4);
  local_14 = &LAB_00462504;
  local_20 = &LAB_00462504;
  local_8 = local_4c;
  local_4c[0] = (undefined *)0x0;
  local_10 = uStack_1c;
  local_c = uStack_18;
  cVar1 = FUN_007f2630(&local_20);
  if (cVar1 == '\0') {
    if (&stack0x00000000 != (undefined *)0x44) {
      local_44 = local_20;
      uStack_40 = uStack_1c;
      uStack_3c = uStack_18;
    }
    local_4c[0] = &DAT_00fb33f1;
  }
  else {
    local_4c[0] = (undefined *)0x0;
  }
  FUN_004685c7(param_1);
  return param_1;
}



void FUN_004634ea(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0046354c(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<class_W47457227::W783E54BC,class_boost::_mfi::mf2<class_W47457227::W783E54BC,class_WAC38D41E::W06F90B13,unsigned_int,class_W47457227::W783E54BC&>,class_boost::_bi::list3<class_boost::_bi::value<class_WAC38D41E::W06F90B13*>,class_boost::_bi::value<unsigned_int>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



undefined4 * FUN_00463523(undefined4 *param_1,code **param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined local_c [8];
  
  puVar2 = (undefined4 *)(**param_2)(local_c,param_2[2],param_3);
  uVar1 = puVar2[1];
  *param_1 = *puVar2;
  param_1[1] = uVar1;
  return param_1;
}



void __fastcall FUN_0046354c(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<class_W47457227::W783E54BC,class_boost::_mfi::mf2<class_W47457227::W783E54BC,class_WAC38D41E::W06F90B13,unsigned_int,class_W47457227::W783E54BC&>,class_boost::_bi::list3<class_boost::_bi::value<class_WAC38D41E::W06F90B13*>,class_boost::_bi::value<unsigned_int>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<class_W47457227::W783E54BC,class_boost::_mfi::mf2<class_W47457227::W783E54BC,class_WAC38D41E::W06F90B13,unsigned_int,class_W47457227::W783E54BC&>,class_boost::_bi::list3<class_boost::_bi::value<class_WAC38D41E::W06F90B13*>,class_boost::_bi::value<unsigned_int>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



undefined4 __thiscall FUN_00463598(undefined4 param_1,byte param_2)

{
  FUN_004636a8();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_004636a8(undefined4 *param_1)

{
  *param_1 = WAC38D41E::W6CF31641::vftable;
  FUN_005d1159();
  FUN_005d1159();
  FUN_004636f0();
  return;
}



undefined * Catch_All_004636e0(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 2;
  return &DAT_004636ed;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004636f0(void)

{
  int unaff_EBP;
  int unaff_EDI;
  
  *(undefined *)(unaff_EBP + -4) = 1;
  FUN_00507e58();
  *(undefined *)(unaff_EBP + -4) = 0;
  if (*(int *)(unaff_EDI + 0x14) != 0) {
    FUN_0040127a();
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  if (*(int *)(unaff_EDI + 0xc) != 0) {
    FUN_0040127a();
  }
  return;
}



void FUN_00463759(void)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *(undefined4 *)(in_EAX + 0x10);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0x14);
}



void __fastcall FUN_0046376d(int param_1)

{
  if ((-(uint)(*(int *)(param_1 + 0x18) != 0) & 0x7a491c) != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 0x14);
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x14);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *
FUN_00463802(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1,int param_2,int param_3)

{
  if (param_2 == 0) {
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  }
  else {
    FUN_0046376d(param_2);
  }
  if (param_3 != 0) {
    FUN_0040127a();
  }
  return param_1;
}



undefined4 FUN_00463912(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f65560,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f65768,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f65970,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f65b78,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00f65d80,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f65f84,0x23,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00463982(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f65fa8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f661b0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f663b8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f665c0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f667c8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f669d0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f66bd8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f66de0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f66fe8,0x6b,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00463a1d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f67058,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f67260,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f67468,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f67670,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f67878,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f67a80,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f67c88,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f67e90,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f68098,0xdb,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00463abb(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f681b0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f683b8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f685c0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f687c8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f689d0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f68bd8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f68de0,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00f68fe8,0x19e,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00463b48(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f69188,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f69390,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f69598,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f697a0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f699a8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f69bb0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f69db8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f69fc0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f6a1c8,0xee,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00463be6(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f6a2b8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f6a4c0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f6a6c8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f6a8d0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f6aad8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f6ace0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f6aee8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f6b0f0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f6b2f8,0x131,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00463c84(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f6b430,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f6b638,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f6b840,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f6ba48,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f6bc50,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f6be58,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f6c060,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f6c268,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f67054,1,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00463d1f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f6c470,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f6c678,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00f6c880,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f6ca88,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00f6cc90,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00f6ce98,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f68174,0x38,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00463d9c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f6d0a0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f6d2a8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f6d4b0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f6d6b8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f6d8c0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f6dac8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f6dcd0,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00f6ded8,0xcd,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00463e29(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f6dfa8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f6e1b0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f6e3b8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f6e5c0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f6e7c8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f6e9d0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f6ebd8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f6ede0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f6efe8,0x57,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00463ec4(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f6f040,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f6f248,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f6f450,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f6f658,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f6f860,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f6fa68,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f6fc70,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00f6fe74,0x3b,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00463f4e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f6feb0,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f700b8,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f702c0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f704c8,0x174,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00463fa7(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f70640,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f70848,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f70a50,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f70c58,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f70e60,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f71068,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f71270,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f71478,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00f71680,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f71888,0x1d3,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00464052(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f71a78,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f71c80,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f71e88,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f72090,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f72298,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f724a0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f726a8,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00f728b0,0x1ac,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004640df(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f72a60,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f72c68,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f72e70,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f73078,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f73280,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f73488,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f73690,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f73898,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f71a5c,0x18,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0046417a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f73aa0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f73ca8,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00f73eb0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f740b8,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00f742c0,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00f744c8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f746cc,0x14,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004641f7(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f746e8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f748f0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f74af8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f74d00,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f74f08,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f75110,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f75318,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f75520,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f75728,0x5b,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00464292(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f757a8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f759b0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f75bb8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f75dc0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f75fc8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f761d0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f763d8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f765e0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f75784,0x21,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0046432d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f767e8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f769f0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f76bf8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f76e00,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f77008,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f77210,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f77418,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f77620,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00f77828,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f77a30,0xfc,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004643d8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f77b30,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f77d38,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f77f40,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f78148,0x138,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00464431(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f78288,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f78490,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f78698,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f788a0,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f78aa8,0x8f,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



void FUN_00464497(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * thunk_FUN_00464734(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c16bb9;
  if (param_1[2] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = W47457227::WCB8A8F94::vftable;
  return puVar1;
}



undefined4 * __thiscall FUN_00464710(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W47457227::WCB8A8F94::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0046472d(undefined4 *param_1)

{
  *param_1 = W47457227::WCB8A8F94::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_00464734(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c16bb9;
  if (param_1[2] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = W47457227::WCB8A8F94::vftable;
  return puVar1;
}



void FUN_00464761(void)

{
  undefined4 unaff_ESI;
  
  FUN_00401829(1,0);
  FUN_00464734(unaff_ESI);
  return;
}



undefined4 __thiscall FUN_0046483d(undefined4 param_1_00,byte param_1)

{
  FUN_0046488c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00464859(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  iStack_24 = param_1 + 0x20;
  puVar1 = &uStack_28;
  uStack_28 = 0x464875;
  FUN_007fde36();
  local_8 = 0xffffffff;
  puVar1[-1] = param_1;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x46487f;
  FUN_007fde36();
  *(undefined4 *)((int)puVar2 + -4) = 0x464884;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_00464b8e(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x464ba6;
  FUN_00464dad();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00464bad;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0046488c(undefined4 *param_1)

{
  *param_1 = WAC38D41E::WE6DA295B::vftable;
  FUN_00464c38(param_1 + 0x1b);
  FUN_00464b8e(param_1 + 0x13);
  FUN_00464859(param_1 + 3);
  FUN_00417fe6();
  return;
}



undefined4 * FUN_004648db(int param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30 [2];
  undefined4 local_28;
  undefined4 local_24;
  char local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41265;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_14;
  *param_2 = 0;
  FUN_0043d406(param_1 + 4);
  local_c = 0;
  local_38 = param_3;
  local_34 = param_4;
  puVar5 = (undefined4 *)(param_1 + 0x6c);
  FUN_00464f6a(local_30,&local_38);
  local_24 = *(undefined4 *)(param_1 + 0x84);
  local_28 = *puVar5;
  cVar1 = FUN_006b8eca(uVar2);
  if (cVar1 == '\0') {
    cVar1 = FUN_00464fe5();
    if (cVar1 == '\0') {
      puVar3 = local_30;
      goto LAB_0046498b;
    }
  }
  local_24 = *(undefined4 *)(param_1 + 0x84);
  local_28 = *puVar5;
  puVar3 = &local_28;
LAB_0046498b:
  local_38 = *puVar3;
  local_34 = puVar3[1];
  local_24 = *(undefined4 *)(param_1 + 0x84);
  local_28 = *puVar5;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    iVar4 = FUN_006badde();
    *param_2 = *(undefined4 *)(iVar4 + 8);
  }
  else {
    puVar5 = (undefined4 *)FUN_00465804(&local_38);
    *param_2 = *puVar5;
    local_24 = param_4;
    local_28 = param_3;
    puVar5 = (undefined4 *)FUN_00464bb6(&local_28);
    local_24 = *param_2;
    *puVar5 = local_24;
    local_28 = param_3;
    FUN_00464b33(&local_28);
  }
  local_c = 0xffffffff;
  if (local_1c != '\0') {
    FUN_00401477();
  }
  ExceptionList = local_14;
  return param_2;
}



void FUN_00464a7c(int *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  int *unaff_EBX;
  int *unaff_EDI;
  undefined4 uVar4;
  int local_18;
  undefined4 *local_14;
  undefined4 *local_10;
  undefined4 local_c;
  
  local_10 = (undefined4 *)unaff_EBX[6];
  local_c = CONCAT31(local_c._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_10[1] + 0x11) == '\0') {
    puVar2 = (undefined4 *)local_10[1];
    do {
      local_10 = puVar2;
      local_c = CONCAT31(local_c._1_3_,*param_1 < (int)local_10[3]);
      if (*param_1 < (int)local_10[3]) {
        puVar2 = (undefined4 *)*local_10;
      }
      else {
        puVar2 = (undefined4 *)local_10[2];
      }
    } while (*(char *)((int)puVar2 + 0x11) == '\0');
  }
  local_18 = *unaff_EBX;
  local_14 = local_10;
  if ((char)local_c != '\0') {
    puVar2 = *(undefined4 **)unaff_EBX[6];
    if (local_18 == 0) {
      FUN_00a3fb10();
    }
    if (local_10 == puVar2) {
      uVar4 = 1;
      goto LAB_00464ae7;
    }
    FUN_0076b32a();
  }
  uVar4 = local_c;
  if (*param_1 <= (int)local_14[3]) {
    *unaff_EDI = local_18;
    unaff_EDI[1] = (int)local_14;
    *(undefined *)(unaff_EDI + 2) = 0;
    return;
  }
LAB_00464ae7:
  piVar3 = (int *)FUN_00464c60(&local_18,uVar4,param_1);
  iVar1 = piVar3[1];
  *unaff_EDI = *piVar3;
  unaff_EDI[1] = iVar1;
  *(undefined *)(unaff_EDI + 2) = 1;
  return;
}



void FUN_00464b33(uint *param_1)

{
  undefined4 uVar1;
  int in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *unaff_ESI;
  undefined local_10 [4];
  undefined4 local_c;
  
  puVar3 = *(undefined4 **)(in_EAX + 0x18);
  local_c = CONCAT31(local_c._1_3_,1);
  if (*(char *)((int)(undefined4 *)puVar3[1] + 0x15) == '\0') {
    puVar2 = (undefined4 *)puVar3[1];
    do {
      puVar3 = puVar2;
      local_c = CONCAT31(local_c._1_3_,*param_1 < (uint)puVar3[3]);
      if (*param_1 < (uint)puVar3[3]) {
        puVar2 = (undefined4 *)*puVar3;
      }
      else {
        puVar2 = (undefined4 *)puVar3[2];
      }
    } while (*(char *)((int)puVar2 + 0x15) == '\0');
  }
  puVar3 = (undefined4 *)FUN_004650b9(local_10,local_c,puVar3,param_1);
  uVar1 = *puVar3;
  unaff_ESI[1] = puVar3[1];
  *unaff_ESI = uVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00464b8e(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x464ba6;
  FUN_00464dad();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00464bad;
  FUN_00a3f6a1();
}



int FUN_00464bb6(undefined4 *param_1)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  int iVar4;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  FUN_00464f6a(&local_10,param_1);
  local_14 = in_EAX[6];
  local_18 = *in_EAX;
  cVar2 = FUN_006b8eca();
  uVar1 = local_c;
  if (cVar2 == '\0') {
    cVar2 = FUN_00464fe5();
    if (cVar2 == '\0') goto LAB_00464c26;
  }
  local_24 = *param_1;
  local_1c = 0;
  local_20 = param_1[1];
  puVar3 = (undefined4 *)FUN_00464de3(&local_18,&local_24,local_10,uVar1);
  local_10 = *puVar3;
  local_c = puVar3[1];
LAB_00464c26:
  iVar4 = FUN_006badde();
  return iVar4 + 8;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00464c38(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x464c50;
  FUN_00464fb1();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00464c57;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_00464c60(int **param_1_00,undefined4 *param_1,char param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x464c6c;
  if (0x3ffffffd < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_0076b549(unaff_ESI[6],param_1_00,unaff_ESI[6],param_3);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_00464d85;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_00464d85;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_00464d85:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 4) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x10) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 4) == '\0') {
LAB_00464d41:
        *(undefined *)(piVar1 + 4) = 1;
        *(undefined *)(piVar7 + 4) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x10) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007e2489(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x10) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x10) = 0;
        FUN_0049cbd2(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 4) == '\0') goto LAB_00464d41;
    if (piVar8 == (int *)*piVar1) {
      FUN_0049cbd2(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x10) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x10) = 0;
    FUN_007e2489(unaff_ESI);
  } while( true );
}



void FUN_00464dad(void)

{
  undefined4 *unaff_ESI;
  
  FUN_00464ffe(*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



undefined4 * FUN_00464de3(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  undefined4 *puVar2;
  undefined4 uVar3;
  
  if (*(int *)(in_EAX + 0x1c) == 0) {
    param_4 = *(int *)(in_EAX + 0x18);
  }
  else {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 == '\0') {
        cVar1 = FUN_00464fe5();
        if (cVar1 != '\0') {
          FUN_007fd84d();
          cVar1 = FUN_00464fe5();
          if (cVar1 != '\0') {
            if (*(char *)(*(int *)(param_4 + 8) + 0x19) == '\0') {
              uVar3 = 1;
            }
            else {
              uVar3 = 0;
            }
            goto LAB_00464e05;
          }
        }
        cVar1 = FUN_00464fe5();
        if (cVar1 == '\0') {
LAB_00464f48:
          puVar2 = (undefined4 *)FUN_0046520c(in_EAX,param_2);
          *param_1 = *puVar2;
          param_1[1] = puVar2[1];
          return param_1;
        }
        FUN_00452ecb();
        cVar1 = FUN_006b8eca();
        if ((cVar1 == '\0') && (cVar1 = FUN_00464fe5(), cVar1 == '\0')) goto LAB_00464f48;
        if (*(char *)(*(int *)(param_4 + 8) + 0x19) == '\0') goto LAB_00464e01;
      }
      else {
        param_4 = *(int *)(*(int *)(in_EAX + 0x18) + 8);
        cVar1 = FUN_00464fe5();
        if (cVar1 == '\0') goto LAB_00464f48;
      }
      uVar3 = 0;
      goto LAB_00464e05;
    }
    cVar1 = FUN_00464fe5();
    if (cVar1 == '\0') goto LAB_00464f48;
  }
LAB_00464e01:
  uVar3 = 1;
LAB_00464e05:
  FUN_0046538c(param_1,uVar3,param_4,param_2);
  return param_1;
}



void FUN_00464f6a(undefined4 *param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)((undefined4 *)unaff_EBX[6])[1];
  cVar2 = *(char *)((int)local_8 + 0x19);
  puVar1 = (undefined4 *)unaff_EBX[6];
  while (cVar2 == '\0') {
    cVar2 = FUN_00464fe5();
    if (cVar2 == '\0') {
      puVar3 = (undefined4 *)*local_8;
    }
    else {
      puVar3 = (undefined4 *)local_8[2];
      local_8 = puVar1;
    }
    puVar1 = local_8;
    local_8 = puVar3;
    cVar2 = *(char *)((int)puVar3 + 0x19);
  }
  param_1[1] = puVar1;
  *param_1 = *unaff_EBX;
  return;
}



void FUN_00464fb1(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_004652d6(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



undefined4 __fastcall FUN_00464fe5(undefined4 param_1,uint *param_2)

{
  uint *unaff_ESI;
  
  if ((*param_2 <= *unaff_ESI) &&
     ((*param_2 < *unaff_ESI || ((int)param_2[1] <= (int)unaff_ESI[1])))) {
    return 0;
  }
  return 1;
}



void FUN_00464ffe(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int *in_EAX;
  int *unaff_EBX;
  
  iVar1 = *(int *)in_EAX[6];
  if ((param_1 == 0) || (param_1 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_2 == iVar1) {
    iVar1 = in_EAX[6];
    if ((param_3 == 0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_4 == iVar1) {
      FUN_007d4c11(*(undefined4 *)(in_EAX[6] + 4));
      *(int *)(in_EAX[6] + 4) = in_EAX[6];
      in_EAX[7] = 0;
      *(int *)in_EAX[6] = in_EAX[6];
      *(int *)(in_EAX[6] + 8) = in_EAX[6];
      unaff_EBX[1] = *(int *)in_EAX[6];
      *unaff_EBX = *in_EAX;
      return;
    }
  }
  while( true ) {
    if ((param_1 == 0) || (param_1 != param_3)) {
      FUN_00a3fb10();
    }
    if (param_2 == param_4) break;
    FUN_00448b61();
    FUN_007d4f0e();
  }
  *unaff_EBX = *in_EAX;
  unaff_EBX[1] = param_2;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004650b9(undefined4 *param_1,char param_2,int **param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int **ppiVar5;
  int *piVar6;
  int *piVar7;
  undefined4 *unaff_EDI;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x4650c5;
  if (0x1ffffffd < (uint)unaff_EDI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::length_error::vftable;
    __CxxThrowException_8(local_54,&DAT_03115554);
  }
  piVar4 = (int *)FUN_005d02c2(unaff_EDI[6],param_3,unaff_EDI[6]);
  unaff_EDI[7] = unaff_EDI[7] + 1;
  piVar7 = piVar4;
  if (param_3 == (int **)unaff_EDI[6]) {
    ((int **)unaff_EDI[6])[1] = piVar4;
    *(int **)unaff_EDI[6] = piVar4;
    *(int **)(unaff_EDI[6] + 8) = piVar4;
  }
  else if (param_2 == '\0') {
    param_3[2] = piVar4;
    if (param_3 == *(int ***)(unaff_EDI[6] + 8)) {
      *(int **)(unaff_EDI[6] + 8) = piVar4;
    }
  }
  else {
    *param_3 = piVar4;
    if (param_3 == *(int ***)(int **)unaff_EDI[6]) {
      *(int **)unaff_EDI[6] = piVar4;
    }
  }
  do {
    while( true ) {
      ppiVar5 = (int **)(piVar7 + 1);
      if (*(char *)(*ppiVar5 + 5) != '\0') {
        *(undefined *)(*(int *)(unaff_EDI[6] + 4) + 0x14) = 1;
        uVar3 = *unaff_EDI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar5;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar6 = ppiVar2[2];
      if (*(char *)(piVar6 + 5) == '\0') {
LAB_004651a0:
        *(undefined *)(piVar1 + 5) = 1;
        *(undefined *)(piVar6 + 5) = 1;
        *(undefined *)((*ppiVar5)[1] + 0x14) = 0;
        piVar7 = (int *)(*ppiVar5)[1];
      }
      else {
        if (piVar7 == (int *)piVar1[2]) {
          FUN_00492c11(unaff_EDI);
          piVar7 = piVar1;
        }
        *(undefined *)(piVar7[1] + 0x14) = 1;
        *(undefined *)(*(int *)(piVar7[1] + 4) + 0x14) = 0;
        FUN_005d0280(unaff_EDI);
      }
    }
    piVar6 = *ppiVar2;
    if (*(char *)(piVar6 + 5) == '\0') goto LAB_004651a0;
    if (piVar7 == (int *)*piVar1) {
      FUN_005d0280(unaff_EDI);
      piVar7 = piVar1;
    }
    *(undefined *)(piVar7[1] + 0x14) = 1;
    *(undefined *)(*(int *)(piVar7[1] + 4) + 0x14) = 0;
    FUN_00492c11(unaff_EDI);
  } while( true );
}



void FUN_0046520c(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 uVar4;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_10 = (undefined4 *)param_1[6];
  puVar3 = (undefined4 *)local_10[1];
  cVar2 = *(char *)((int)puVar3 + 0x19);
  cVar1 = '\x01';
  local_c = CONCAT31(local_c._1_3_,1);
  while (cVar2 == '\0') {
    local_8 = puVar3;
    cVar1 = FUN_00464fe5();
    local_c = CONCAT31(local_c._1_3_,cVar1);
    if (cVar1 == '\0') {
      puVar3 = (undefined4 *)puVar3[2];
    }
    else {
      puVar3 = (undefined4 *)*puVar3;
    }
    local_10 = local_8;
    cVar2 = *(char *)((int)puVar3 + 0x19);
  }
  local_14 = *param_1;
  local_8 = local_10;
  if (cVar1 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar2 = FUN_006b8eca();
    if (cVar2 != '\0') {
      uVar4 = 1;
      goto LAB_00465281;
    }
    FUN_007fd84d();
  }
  puVar3 = local_10;
  cVar2 = FUN_00464fe5();
  uVar4 = local_c;
  if (cVar2 == '\0') {
    *unaff_EBX = local_14;
    unaff_EBX[1] = puVar3;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_00465281:
  puVar3 = (undefined4 *)FUN_0046538c(&local_1c,uVar4,local_8,param_2);
  uVar4 = puVar3[1];
  *unaff_EBX = *puVar3;
  unaff_EBX[1] = uVar4;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void FUN_004652d6(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_004657d2(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00452ecb();
    FUN_00465509();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0046538c(undefined4 *param_1,char param_2,int **param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int **ppiVar5;
  int *piVar6;
  int *piVar7;
  undefined4 *unaff_EDI;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x465398;
  if (0x15555553 < (uint)unaff_EDI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::length_error::vftable;
    __CxxThrowException_8(local_54,&DAT_03115554);
  }
  piVar4 = (int *)FUN_00465796(unaff_EDI[6],param_3,unaff_EDI[6]);
  unaff_EDI[7] = unaff_EDI[7] + 1;
  piVar7 = piVar4;
  if (param_3 == (int **)unaff_EDI[6]) {
    ((int **)unaff_EDI[6])[1] = piVar4;
    *(int **)unaff_EDI[6] = piVar4;
    *(int **)(unaff_EDI[6] + 8) = piVar4;
  }
  else if (param_2 == '\0') {
    param_3[2] = piVar4;
    if (param_3 == *(int ***)(unaff_EDI[6] + 8)) {
      *(int **)(unaff_EDI[6] + 8) = piVar4;
    }
  }
  else {
    *param_3 = piVar4;
    if (param_3 == *(int ***)(int **)unaff_EDI[6]) {
      *(int **)unaff_EDI[6] = piVar4;
    }
  }
  do {
    while( true ) {
      ppiVar5 = (int **)(piVar7 + 1);
      if (*(char *)(*ppiVar5 + 6) != '\0') {
        *(undefined *)(*(int *)(unaff_EDI[6] + 4) + 0x18) = 1;
        uVar3 = *unaff_EDI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar5;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar6 = ppiVar2[2];
      if (*(char *)(piVar6 + 6) == '\0') {
LAB_00465473:
        *(undefined *)(piVar1 + 6) = 1;
        *(undefined *)(piVar6 + 6) = 1;
        *(undefined *)((*ppiVar5)[1] + 0x18) = 0;
        piVar7 = (int *)(*ppiVar5)[1];
      }
      else {
        if (piVar7 == (int *)piVar1[2]) {
          FUN_0042bfd4(unaff_EDI);
          piVar7 = piVar1;
        }
        *(undefined *)(piVar7[1] + 0x18) = 1;
        *(undefined *)(*(int *)(piVar7[1] + 4) + 0x18) = 0;
        FUN_0042c014(unaff_EDI);
      }
    }
    piVar6 = *ppiVar2;
    if (*(char *)(piVar6 + 6) == '\0') goto LAB_00465473;
    if (piVar7 == (int *)*piVar1) {
      FUN_0042c014(unaff_EDI);
      piVar7 = piVar1;
    }
    *(undefined *)(piVar7[1] + 0x18) = 1;
    *(undefined *)(*(int *)(piVar7[1] + 4) + 0x18) = 0;
    FUN_0042bfd4(unaff_EDI);
  } while( true );
}



void FUN_004654df(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 5) = 1;
  *(undefined *)((int)puVar1 + 0x15) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x004655f4)
// WARNING: Removing unreachable block (ram,0x00465604)
// WARNING: Removing unreachable block (ram,0x0046560d)
// WARNING: Removing unreachable block (ram,0x00465610)
// WARNING: Removing unreachable block (ram,0x00465600)
// WARNING: Removing unreachable block (ram,0x0046561d)
// WARNING: Removing unreachable block (ram,0x0046562d)
// WARNING: Removing unreachable block (ram,0x00465638)
// WARNING: Removing unreachable block (ram,0x00465634)
// WARNING: Removing unreachable block (ram,0x00465628)
// WARNING: Removing unreachable block (ram,0x0046563b)

void FUN_00465509(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x465515;
  if (*(char *)((int)param_4 + 0x19) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00452ecb();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x19) == '\0') {
    if (*(char *)(param_4[2] + 0x19) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x19) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x19) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x19) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x19) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x19) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 6) != '\x01') {
LAB_0046576c:
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_00465720:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 6) != '\x01'))
  goto LAB_00465768;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 6) == '\0') {
      *(undefined *)(ppiVar4 + 6) = 1;
      *(undefined *)(ppiVar3 + 6) = 0;
      FUN_0042bfd4(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x19) == '\0') {
      if ((*(char *)(*ppiVar4 + 6) != '\x01') || (*(char *)(ppiVar4[2] + 6) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 6) == '\x01') {
          *(undefined *)(*ppiVar4 + 6) = 1;
          *(undefined *)(ppiVar4 + 6) = 0;
          FUN_0042c014(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 6) = *(undefined *)(ppiVar3 + 6);
        *(undefined *)(ppiVar3 + 6) = 1;
        *(undefined *)(ppiVar4[2] + 6) = 1;
        FUN_0042bfd4(param_1);
        goto LAB_00465768;
      }
LAB_00465717:
      *(undefined *)(ppiVar4 + 6) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 6) == '\0') {
      *(undefined *)(ppiVar4 + 6) = 1;
      *(undefined *)(ppiVar3 + 6) = 0;
      FUN_0042c014(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x19) == '\0') {
      if ((*(char *)(ppiVar4[2] + 6) == '\x01') && (*(char *)(*ppiVar4 + 6) == '\x01'))
      goto LAB_00465717;
      if (*(char *)(*ppiVar4 + 6) == '\x01') {
        *(undefined *)(ppiVar4[2] + 6) = 1;
        *(undefined *)(ppiVar4 + 6) = 0;
        FUN_0042bfd4(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 6) = *(undefined *)(ppiVar3 + 6);
      *(undefined *)(ppiVar3 + 6) = 1;
      *(undefined *)(*ppiVar4 + 6) = 1;
      FUN_0042c014(param_1);
LAB_00465768:
      *(undefined *)(ppiVar5 + 6) = 1;
      goto LAB_0046576c;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_00465720;
}



void FUN_00465796(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 *unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(0x1c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *unaff_ESI;
    puVar1[4] = unaff_ESI[1];
    puVar1[5] = unaff_ESI[2];
    *(undefined *)(puVar1 + 6) = 0;
    *(undefined *)((int)puVar1 + 0x19) = 0;
  }
  return;
}



void FUN_004657d2(int param_1)

{
  if (*(char *)(param_1 + 0x19) == '\0') {
    FUN_004657d2(*(undefined4 *)(param_1 + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



int * FUN_00465804(int *param_1)

{
  undefined4 *in_EAX;
  int *piVar1;
  undefined4 local_10;
  undefined4 local_c;
  
  *param_1 = 0;
  if (in_EAX[0xf] == 0) {
    if (in_EAX[7] == 0) {
      *param_1 = 1;
    }
    else {
      local_c = in_EAX[6];
      local_10 = *in_EAX;
      FUN_0076b32a();
      piVar1 = (int *)FUN_006badde();
      *param_1 = *piVar1 + 1;
    }
  }
  else {
    local_c = *(undefined4 *)in_EAX[0xe];
    local_10 = in_EAX[8];
    piVar1 = (int *)FUN_006badde();
    *param_1 = *piVar1;
    FUN_0049cccf(in_EAX + 8,&local_10,local_10,local_c);
  }
  FUN_00464a7c(param_1);
  return param_1;
}



undefined * __thiscall
FUN_004659e9(int param_1_00,undefined *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 local_14;
  undefined4 local_10;
  undefined4 uStack_c;
  undefined4 *local_8;
  
  if (*(undefined4 **)(param_1_00 + 4) == (undefined4 *)0x0) {
    *param_1 = 0;
  }
  else {
    uStack_c = *(undefined4 *)(param_1_00 + 0xc);
    local_8 = &local_14;
    local_10 = param_3;
    local_14 = param_2;
    (**(code **)**(undefined4 **)(param_1_00 + 4))(param_1);
  }
  return param_1;
}



void Catch_All_00465aba(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int **)(unaff_EBP + 8) != (int *)0x0) {
    (**(code **)(**(int **)(unaff_EBP + 8) + 4))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_00465ad2(undefined4 *param_1)

{
  *param_1 = W47457227::WB8775817::vftable;
  return;
}



undefined4 * __thiscall FUN_00465ad9(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W47457227::WB8775817::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_00465af6(undefined4 param_1,int *param_2)

{
  undefined4 *puVar1;
  undefined local_2c [12];
  char local_20;
  undefined4 local_1c;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_14 = 0;
  local_8 = 1;
  FUN_0043d406();
  local_8._0_1_ = 2;
  FUN_00465bbc();
  local_14 = 1;
  if (*param_2 == 0) {
    FUN_00672a11();
    puVar1 = (undefined4 *)FUN_0046a982(local_2c);
    local_8 = CONCAT31(local_8._1_3_,3);
    local_1c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  local_8._0_1_ = 1;
  if (local_20 != '\0') {
    FUN_00401477();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00507e58();
  return param_2;
}



void FUN_00465bbc(void)

{
  int iVar1;
  char cVar2;
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  
  *unaff_ESI = 0;
  iVar1 = unaff_EDI[1];
  unaff_ESI[1] = iVar1;
  if (iVar1 != 0) {
    cVar2 = FUN_0043d41e();
    if (cVar2 == '\0') {
      unaff_ESI[1] = 0;
    }
  }
  if (unaff_ESI[1] != 0) {
    *unaff_ESI = *unaff_EDI;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00465be3(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_18;
  
  puVar2 = (undefined4 *)operator_new(0x2c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_0046ac65(puVar2);
    *puVar2 = W47457227::W1B404FD8::vftable;
    puVar2[10] = param_3;
    puVar2[9] = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00465f73(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00465c6c(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = 0;
  local_18 = &local_30;
  local_8 = 1;
  local_2c = param_3;
  local_30 = param_2;
  FUN_00465be3(param_1);
  local_18 = &local_30;
  local_30 = param_4;
  local_14 = 1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000014);
}



undefined4 * __thiscall FUN_00465f51(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W47457227::W1B404FD8::vftable;
  FUN_0046acb4();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00465f73(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::W1B404FD8>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00465fb9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

int FUN_00465fd0(void)

{
  int iVar1;
  LONG LVar2;
  void *pvVar3;
  int iVar4;
  
  if ((_DAT_032f0af8 & 1) == 0) {
    _DAT_032f0af8 = _DAT_032f0af8 | 1;
    DAT_032f02f0 = 0;
    _atexit((_func_4879 *)&LAB_00c73e4d);
  }
  LVar2 = InterlockedExchangeAdd((LONG *)&DAT_032ef6fc,0);
  if (LVar2 == 0) {
    FUN_00b9acd0();
    LVar2 = InterlockedExchangeAdd((LONG *)&DAT_032ef6fc,0);
    if ((LVar2 == 0) && (DAT_032f02f0 == 0)) {
      pvVar3 = operator_new(0xb0);
      if (pvVar3 == (void *)0x0) {
        iVar4 = 0;
      }
      else {
        iVar4 = FUN_00466090();
      }
      iVar1 = DAT_032f02f0;
      if ((iVar4 != DAT_032f02f0) && (DAT_032f02f0 != 0)) {
        FUN_00466134(DAT_032f02f0);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      DAT_032f02f0 = iVar4;
      InterlockedExchange((LONG *)&DAT_032ef6fc,1);
    }
    FUN_00b9ac60();
  }
  return DAT_032f02f0;
}



void FUN_00466090(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = 0;
  in_EAX[1] = 0;
  in_EAX[2] = 0;
  in_EAX[3] = 0;
  in_EAX[4] = 0;
  in_EAX[5] = 0;
  in_EAX[6] = 0;
  in_EAX[7] = 0;
  in_EAX[8] = 0;
  in_EAX[9] = 0;
  in_EAX[10] = 0;
  in_EAX[0xb] = 0;
  in_EAX[0xc] = 0;
  in_EAX[0xd] = 0;
  in_EAX[0xe] = 0;
  in_EAX[0xf] = 0;
  in_EAX[0x10] = 0;
  in_EAX[0x11] = 0;
  in_EAX[0x12] = 0;
  in_EAX[0x13] = 0;
  in_EAX[0x14] = 0;
  in_EAX[0x15] = 0;
  in_EAX[0x16] = 0;
  in_EAX[0x17] = 0;
  in_EAX[0x18] = 0;
  in_EAX[0x19] = 0;
  in_EAX[0x1a] = 0;
  in_EAX[0x1b] = 0;
  in_EAX[0x1c] = 0;
  in_EAX[0x1d] = 0;
  in_EAX[0x1e] = 0;
  in_EAX[0x1f] = 0;
  in_EAX[0x20] = 0;
  in_EAX[0x21] = 0;
  in_EAX[0x22] = 0;
  in_EAX[0x23] = 0;
  in_EAX[0x24] = 0;
  in_EAX[0x25] = 0;
  in_EAX[0x26] = 0;
  in_EAX[0x27] = 0;
  in_EAX[0x28] = 0;
  in_EAX[0x29] = 0;
  in_EAX[0x2a] = 0;
  in_EAX[0x2b] = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00466134(void)

{
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fc9();
  FUN_00417fe6();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall thunk_FUN_0046afce(undefined4 *param_1)

{
  *param_1 = W47457227::WC015BA19::vftable;
  FUN_005d1159();
  if (param_1[2] != 0) {
    FUN_0040127a();
  }
  *param_1 = W47457227::W1E04FC9F::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00466268(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::WE0357D0D::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_004672e4(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004662cf(void)

{
  undefined4 uVar1;
  undefined local_24 [4];
  int local_20;
  undefined local_1c [4];
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x4662db;
  FUN_007ce2c9();
  FUN_00465fd0();
  uVar1 = FUN_0043d542(local_1c);
  local_8 = 0;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044ef22(local_1c);
  local_8 = 1;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0046664c(local_1c);
  local_8 = 2;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044dc98(local_1c);
  local_8 = 3;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044e3c1(local_1c);
  local_8 = 4;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044e802(local_1c);
  local_8 = 5;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044d9c2(local_1c);
  local_8 = 6;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044d6e9(local_1c);
  local_8 = 7;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044d57e(local_1c);
  local_8 = 8;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044e52c(local_1c);
  local_8 = 9;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044e697(local_1c);
  local_8 = 10;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044df71(local_1c);
  local_8 = 0xb;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044e0dc(local_1c);
  local_8 = 0xc;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044e256(local_1c);
  local_8 = 0xd;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044db2d(local_1c);
  local_8 = 0xe;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044ec49(local_1c);
  local_8 = 0xf;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044edb4(local_1c);
  local_8 = 0x10;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044de03(local_1c);
  local_8 = 0x11;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044eadb(local_1c);
  local_8 = 0x12;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044d854(local_1c);
  local_8 = 0x13;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  uVar1 = FUN_0044e96d(local_24);
  local_8 = 0x14;
  FUN_0044d43e(uVar1);
  local_8 = 0xffffffff;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0046664c(undefined4 param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined local_30 [12];
  char local_24;
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0;
  local_18 = 0;
  FUN_0043d406(param_1_00);
  local_8 = 1;
  FUN_00465bbc();
  local_18 = 1;
  if (*param_1 == 0) {
    puVar1 = (undefined4 *)FUN_00466268(local_30);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



undefined4 __thiscall FUN_004670bb(undefined4 param_1_00,byte param_1)

{
  FUN_004670e1();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_004670d7(void)

{
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004670e1(undefined4 *param_1)

{
  *param_1 = W47457227::W2907F2E9::vftable;
  FUN_005d1159();
  FUN_004017b2(1,0);
  if (param_1[2] != 0) {
    FUN_0040127a();
  }
  return;
}



void Catch_All_0046712b(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_00467135(int param_1,int param_2,int param_3)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c1ad78;
  if (param_2 != 0) {
    puVar1 = (undefined *)FUN_005d11c9(param_1 + 4);
  }
  if (param_3 != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_004671c7(undefined4 param_1)

{
  int iVar1;
  undefined4 *unaff_EDI;
  undefined local_64 [12];
  undefined4 *local_58;
  int local_54;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_3c;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x58;
  local_4c = param_1;
  *unaff_EDI = 0;
  unaff_EDI[1] = 0;
  local_8 = 0;
  local_48 = 1;
  FUN_004382a5(local_64);
  local_8 = 1;
  FUN_004662cf();
  iVar1 = local_54 - (int)local_58 >> 3;
  if (iVar1 != 0) {
    if (iVar1 == 0) {
      FUN_00a3fb10();
    }
    local_3c = *local_58;
                    // WARNING: Subroutine does not return
    FUN_0043c023(local_58 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  FUN_00436aef(local_64);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004672e4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W47457227::WE0357D0D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046732a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4
FUN_00467341(undefined4 param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x28);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = W47457227::W382BE461::vftable;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (puVar1 + 3),param_2);
  }
  FUN_00467419(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00467398(undefined4 param_1,char *param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x28);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = W47457227::W382BE461::vftable;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (puVar1 + 3),param_2);
  }
  FUN_00467419(param_1);
  return param_1;
}



undefined4 __thiscall FUN_004673ef(undefined4 param_1_00,byte param_1)

{
  FUN_004017b2(1,0);
  FUN_0046afce();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00467419(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_00467466(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00467466(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::W382BE461>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004674ac(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_004674c3(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 *in_EAX;
  
  in_EAX[1] = 0;
  in_EAX[2] = 0;
  in_EAX[4] = param_1;
  in_EAX[5] = param_2;
  in_EAX[6] = param_3;
  *in_EAX = W47457227::WB12EDA64::vftable;
  *(undefined *)(in_EAX + 7) = 0;
  if ((char)param_4 != '\0') {
    if ((undefined2 *)((int)in_EAX + 0x1e) != (undefined2 *)0x0) {
      *(undefined2 *)((int)in_EAX + 0x1e) = (short)((uint)param_4 >> 0x10);
    }
    *(undefined *)(in_EAX + 7) = 1;
  }
  return;
}



int __thiscall FUN_00467506(int param_1_00,byte param_1)

{
  if (*(char *)(param_1_00 + 0x1c) != '\0') {
    *(undefined *)(param_1_00 + 0x1c) = 0;
  }
  FUN_0046afce();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0046752c(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x28);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = W47457227::W8857BD2F::vftable;
    basic_string<>(param_2);
  }
  FUN_004675e9(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00467583(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x28);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = W47457227::W8857BD2F::vftable;
    basic_string<>(param_2);
  }
  FUN_004675e9(param_1);
  return param_1;
}



void __thiscall FUN_004675da(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x30))(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004675e9(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_00467636(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00467636(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::W8857BD2F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046767c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_00467794(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W47457227::WD35327CE::vftable;
  FUN_0046acb4();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004677b6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::WD35327CE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004677fc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_00467914(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W47457227::WD4966DBD::vftable;
  FUN_0046acb4();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00467936(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::WD4966DBD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046797c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00467993(void)

{
  undefined4 *unaff_EDI;
  
  *unaff_EDI = W47457227::WE3F12033::vftable;
  FUN_00467a19();
  return;
}



undefined4 __thiscall FUN_004679a6(undefined4 param_1,byte param_2)

{
  FUN_004679c2();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_004679c2(undefined4 *param_1)

{
  *param_1 = W47457227::WE3F12033::vftable;
  FUN_00467e73();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[1]);
}



void FUN_004679dd(void)

{
  int in_EAX;
  int unaff_ESI;
  
  if (unaff_ESI != in_EAX) {
    FUN_00467a4d(unaff_ESI + 4,in_EAX + 4);
  }
  return;
}



void __fastcall FUN_004679f1(uint param_1)

{
  int in_EAX;
  undefined4 uVar1;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_ESI;
  
  if (param_1 < *(uint *)(in_EAX + 0x20)) {
    uVar1 = FUN_00467bd7(param_1);
    basic_string<>(uVar1);
  }
  else {
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_ESI)
    ;
  }
  return;
}



void FUN_00467a19(void)

{
  int unaff_ESI;
  undefined auStack_c [4];
  undefined *local_8;
  
  local_8 = auStack_c;
  FUN_00439298();
  *(undefined4 *)(unaff_ESI + 0x10) = 0;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined4 *)(unaff_ESI + 0x18) = 0;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  return;
}



void FUN_00467a3d(void)

{
  undefined4 *unaff_ESI;
  
  FUN_00467e73();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*unaff_ESI);
}



int FUN_00467a4d(int param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  if (param_1 != param_2) {
    if (*(uint *)(param_2 + 0x1c) == 0) {
      FUN_00467e73();
    }
    else if (*(uint *)(param_1 + 0x1c) < *(uint *)(param_2 + 0x1c)) {
      FUN_00467f9f();
      local_18 = local_10;
      local_14 = local_c;
      puVar3 = (undefined4 *)FUN_00690e57();
      uVar1 = *puVar3;
      uVar2 = puVar3[1];
      FUN_00467f9f();
      FUN_00467f9f();
      FUN_00467fc5(&local_10,local_18,local_14,uVar1,uVar2,local_10,local_c);
      FUN_00467f9f();
      FUN_00467f9f();
      FUN_00468140(param_1,uVar1,local_18,local_14,uVar1,uVar2,local_10,local_c);
    }
    else {
      FUN_00467f9f();
      FUN_00467f9f();
      FUN_00467f9f();
      FUN_00467fc5(&local_18,local_10,local_c,local_18,local_14,local_20,local_1c);
      FUN_00467f9f();
      FUN_00467c77(&local_10,local_18,local_14,local_10,local_c);
    }
  }
  return param_1;
}



void FUN_00467bd7(void)

{
  FUN_00467f9f();
  FUN_00690e57();
  FUN_004684a0();
  return;
}



void FUN_00467c1e(undefined4 param_1)

{
  int in_EAX;
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  
  if (*(uint *)(in_EAX + 0x14) <= *(int *)(in_EAX + 0x1c) + 1U) {
    FUN_00467d9a();
  }
  uVar1 = *(int *)(in_EAX + 0x18) + *(int *)(in_EAX + 0x1c);
  if (*(uint *)(in_EAX + 0x14) <= uVar1) {
    uVar1 = uVar1 - *(uint *)(in_EAX + 0x14);
  }
  iVar3 = uVar1 * 4;
  if (*(int *)(iVar3 + *(int *)(in_EAX + 0x10)) == 0) {
    uVar2 = FUN_0043043a(1,0);
    *(undefined4 *)(iVar3 + *(int *)(in_EAX + 0x10)) = uVar2;
  }
  FUN_0041bc8b(*(undefined4 *)(*(int *)(in_EAX + 0x10) + iVar3),param_1);
  *(int *)(in_EAX + 0x1c) = *(int *)(in_EAX + 0x1c) + 1;
  return;
}



undefined4 FUN_00467c77(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  int local_1c;
  int local_18;
  int local_14;
  uint local_10;
  int local_c;
  
  FUN_00467f9f();
  FUN_00467f9f();
  FUN_00467f9f();
  iVar1 = local_24;
  if ((local_24 == 0) || (local_24 != local_14)) {
    FUN_00a3fb10();
  }
  iVar2 = local_20;
  local_10 = local_20 - local_10;
  if ((local_1c == 0) || (local_1c != iVar1)) {
    FUN_00a3fb10();
  }
  local_c = local_18 - iVar2;
  FUN_00467f9f();
  if ((local_2c == 0) || (local_2c != local_1c)) {
    FUN_00a3fb10();
  }
  if (local_10 < (uint)(local_28 - local_18)) {
    FUN_00467f9f();
    FUN_0046801a(&local_2c,local_2c,local_28,local_24,local_20,local_1c,local_18);
    if (local_c != 0) {
      do {
        FUN_00467eb7();
        local_c = local_c + -1;
      } while (local_c != 0);
      local_c = 0;
    }
  }
  else {
    FUN_00467f9f();
    FUN_0046806f(&local_2c,local_1c,local_18,local_2c,local_28,local_24,local_20);
    for (; local_c != 0; local_c = local_c + -1) {
      FUN_00467ee6();
    }
  }
  FUN_00467f9f();
  FUN_00690e2e();
  return param_1;
}



void FUN_00467d9a(void)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  uint uVar5;
  uint uVar6;
  int unaff_ESI;
  undefined8 uVar7;
  
  uVar7 = CONCAT44(0x9249249,*(int *)(unaff_ESI + 0x14));
  if (*(int *)(unaff_ESI + 0x14) == 0x9249249) {
    uVar7 = FUN_00467f14();
  }
  uVar5 = (uint)uVar7 >> 1;
  if (uVar5 < 8) {
    uVar5 = 8;
  }
  uVar6 = 1;
  if ((1 < uVar5) && ((uint)uVar7 <= (int)((ulonglong)uVar7 >> 0x20) - uVar5)) {
    uVar6 = uVar5;
  }
  uVar5 = *(uint *)(unaff_ESI + 0x18);
  puVar1 = (undefined4 *)FUN_00467f53();
  FUN_0061526b(*(int *)(unaff_ESI + 0x10) + uVar5 * 4);
  if (uVar6 < uVar5) {
    FUN_0061526b(*(undefined4 *)(unaff_ESI + 0x10));
    puVar4 = (undefined4 *)FUN_0061526b(*(int *)(unaff_ESI + 0x10) + uVar6 * 4);
    uVar5 = uVar6;
  }
  else {
    iVar2 = uVar6 - uVar5;
    puVar3 = (undefined4 *)FUN_0061526b(*(undefined4 *)(unaff_ESI + 0x10));
    puVar4 = puVar1;
    if (iVar2 != 0) {
      for (; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar3 = 0;
        puVar3 = puVar3 + 1;
      }
    }
  }
  if (uVar5 != 0) {
    for (; uVar5 != 0; uVar5 = uVar5 - 1) {
      *puVar4 = 0;
      puVar4 = puVar4 + 1;
    }
  }
  if (*(int *)(unaff_ESI + 0x10) == 0) {
    *(int *)(unaff_ESI + 0x14) = *(int *)(unaff_ESI + 0x14) + uVar6;
    *(undefined4 **)(unaff_ESI + 0x10) = puVar1;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(int *)(unaff_ESI + 0x10));
}



void FUN_00467e73(void)

{
  int *piVar1;
  int iVar2;
  int in_EAX;
  int iVar3;
  
  while (*(int *)(in_EAX + 0x1c) != 0) {
    FUN_00467ee6();
  }
  iVar3 = *(int *)(in_EAX + 0x14);
  while (iVar2 = *(int *)(in_EAX + 0x10), iVar3 != 0) {
    iVar3 = iVar3 + -1;
    piVar1 = (int *)(iVar2 + iVar3 * 4);
    if (*piVar1 != 0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*piVar1);
    }
  }
  if (iVar2 != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  *(undefined4 *)(in_EAX + 0x14) = 0;
  *(undefined4 *)(in_EAX + 0x10) = 0;
  return;
}



void FUN_00467eb7(void)

{
  int *piVar1;
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0x1c) != 0) {
    FUN_0041c33b(0);
    *(int *)(unaff_ESI + 0x18) = *(int *)(unaff_ESI + 0x18) + 1;
    if (*(uint *)(unaff_ESI + 0x14) <= *(uint *)(unaff_ESI + 0x18)) {
      *(undefined4 *)(unaff_ESI + 0x18) = 0;
    }
    piVar1 = (int *)(unaff_ESI + 0x1c);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      *(undefined4 *)(unaff_ESI + 0x18) = 0;
    }
  }
  return;
}



void FUN_00467ee6(void)

{
  int *piVar1;
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0x1c) != 0) {
    FUN_0041c33b(0);
    piVar1 = (int *)(unaff_ESI + 0x1c);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      *(undefined4 *)(unaff_ESI + 0x18) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00467f14(void)

{
  code *pcVar1;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x467f20;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_2c,"deque<T> too long");
  local_8 = 0;
  FUN_00417ca0(local_2c);
  local_54[0] = std::length_error::vftable;
  __CxxThrowException_8(local_54,&DAT_03115554);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_00467f53(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 4) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 << 2);
  return;
}



void FUN_00467f9f(void)

{
  uint unaff_EBX;
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  
  *unaff_EDI = 0;
  if (((unaff_ESI == (undefined4 *)0x0) || (unaff_EBX < (uint)unaff_ESI[6])) ||
     ((uint)(unaff_ESI[7] + unaff_ESI[6]) < unaff_EBX)) {
    FUN_00a3fb10();
  }
  *unaff_EDI = *unaff_ESI;
  unaff_EDI[1] = unaff_EBX;
  return;
}



undefined4
FUN_00467fc5(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 *param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  if (param_4 == (undefined4 *)0x0) {
    param_4 = (undefined4 *)0x0;
  }
  else {
    param_4 = (undefined4 *)*param_4;
  }
  if (param_2 == (undefined4 *)0x0) {
    param_2 = (undefined4 *)0x0;
  }
  else {
    param_2 = (undefined4 *)*param_2;
  }
  FUN_004680c4(param_1,param_1,param_1,0,*param_2,param_3,*param_4,param_5,param_6,param_7);
  return param_1;
}



undefined4
FUN_0046801a(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 *param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  if (param_4 == (undefined4 *)0x0) {
    param_4 = (undefined4 *)0x0;
  }
  else {
    param_4 = (undefined4 *)*param_4;
  }
  if (param_2 == (undefined4 *)0x0) {
    param_2 = (undefined4 *)0x0;
  }
  else {
    param_2 = (undefined4 *)*param_2;
  }
  FUN_0046832e(param_1,param_1,param_1,0,*param_2,param_3,*param_4,param_5,param_6,param_7);
  return param_1;
}



undefined4
FUN_0046806f(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 *param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  if (param_4 == (undefined4 *)0x0) {
    param_4 = (undefined4 *)0x0;
  }
  else {
    param_4 = (undefined4 *)*param_4;
  }
  if (param_2 == (undefined4 *)0x0) {
    param_2 = (undefined4 *)0x0;
  }
  else {
    param_2 = (undefined4 *)*param_2;
  }
  FUN_004683c2(param_1,param_1,param_1,0,*param_2,param_3,*param_4,param_5,param_6,param_7);
  return param_1;
}



undefined4 FUN_004680c4(undefined4 param_1)

{
  undefined4 uVar1;
  int param_6;
  int param_8;
  int local_8;
  
  FUN_00690e2e();
  for (local_8 = param_6; local_8 != param_8; local_8 = local_8 + 1) {
    FUN_004684a0();
    uVar1 = FUN_004684a0();
    FID_conflict_assign(uVar1,0,0xffffffff);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00468140(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,
                 int param_7,int param_8)

{
  uint uVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int iVar5;
  int local_24;
  int local_20;
  
  FUN_00467f9f();
  if ((param_3 == 0) || (param_3 != local_24)) {
    FUN_00a3fb10();
  }
  uVar2 = param_4 - local_20;
  uVar1 = *(uint *)(param_1 + 0x1c);
  if ((param_5 == 0) || (param_5 != param_7)) {
    FUN_00a3fb10();
  }
  if (param_6 != param_8) {
    if (uVar2 < uVar1 - uVar2) {
      while( true ) {
        if ((param_5 == 0) || (param_5 != param_7)) {
          FUN_00a3fb10();
        }
        if (param_6 == param_8) break;
        uVar3 = FUN_004684a0();
        uVar3 = basic_string<>(uVar3);
        if (*(uint *)(param_1 + 0x14) <= *(int *)(param_1 + 0x1c) + 1U) {
          FUN_00467d9a();
        }
        iVar5 = *(int *)(param_1 + 0x18);
        if (iVar5 == 0) {
          iVar5 = *(int *)(param_1 + 0x14);
        }
        iVar5 = iVar5 + -1;
        if (*(int *)(*(int *)(param_1 + 0x10) + iVar5 * 4) == 0) {
          uVar4 = FUN_0043043a(1,0);
          *(undefined4 *)(*(int *)(param_1 + 0x10) + iVar5 * 4) = uVar4;
        }
        FUN_0041bc8b(*(undefined4 *)(*(int *)(param_1 + 0x10) + iVar5 * 4),uVar3);
        *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + 1;
        *(int *)(param_1 + 0x18) = iVar5;
        FUN_00401829(1,0);
        FUN_006913c6();
      }
      iVar5 = *(int *)(param_1 + 0x1c) - uVar1;
      if (uVar2 != 0) {
        FUN_0046843e(iVar5,iVar5 + uVar2);
        iVar5 = iVar5 + uVar2;
      }
      FUN_0046831f(iVar5);
      return;
    }
    while( true ) {
      if ((param_5 == 0) || (param_5 != param_7)) {
        FUN_00a3fb10();
      }
      if (param_6 == param_8) break;
      uVar3 = FUN_004684a0();
      uVar3 = basic_string<>(uVar3);
      FUN_00467c1e(uVar3);
      FUN_00401829(1,0);
      FUN_006913c6();
    }
    if (uVar2 < uVar1) {
      FUN_0046843e(uVar2,uVar1);
      FUN_0046843e(uVar1,*(undefined4 *)(param_1 + 0x1c));
      FUN_0046843e(uVar2,*(undefined4 *)(param_1 + 0x1c));
    }
  }
  return;
}



void Catch_All_00468246(void)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int unaff_EBP;
  
  iVar3 = *(int *)(unaff_EBP + 8);
  uVar2 = *(uint *)(unaff_EBP + -0x18);
  while (uVar2 < *(uint *)(iVar3 + 0x1c)) {
    FUN_00467eb7();
  }
  __CxxThrowException_8(0,0);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  iVar3 = *(int *)(uVar2 + 0x1c) - *(int *)(unaff_EBP + -0x18);
  if (*(int *)(unaff_EBP + -0x14) != 0) {
    iVar1 = iVar3 + *(int *)(unaff_EBP + -0x14);
    FUN_0046843e(iVar3,iVar1);
    iVar3 = iVar1;
  }
  FUN_0046831f(iVar3);
  return;
}



void Catch_All_004682de(void)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int unaff_EBP;
  
  iVar3 = *(int *)(unaff_EBP + 8);
  uVar2 = *(uint *)(unaff_EBP + -0x18);
  while (uVar2 < *(uint *)(iVar3 + 0x1c)) {
    FUN_00467ee6();
  }
  __CxxThrowException_8(0,0);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  iVar3 = *(int *)(uVar2 + 0x1c) - *(int *)(unaff_EBP + -0x18);
  if (*(int *)(unaff_EBP + -0x14) != 0) {
    iVar1 = iVar3 + *(int *)(unaff_EBP + -0x14);
    FUN_0046843e(iVar3,iVar1);
    iVar3 = iVar1;
  }
  FUN_0046831f(iVar3);
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0046831f(void)

{
  FUN_0046843e();
  return;
}



undefined4 * FUN_0046832e(undefined4 *param_1)

{
  undefined4 uVar1;
  int param_6;
  int param_8;
  undefined4 param_9;
  undefined4 param_10;
  
  FUN_00690e57();
  *param_1 = param_9;
  param_1[1] = param_10;
  for (; param_6 != param_8; param_8 = param_8 + -1) {
    uVar1 = FUN_004684a0();
    FUN_004684a0();
    FID_conflict_assign(uVar1,0,0xffffffff);
  }
  return param_1;
}



undefined4 FUN_004683c2(undefined4 param_1)

{
  undefined4 uVar1;
  int param_6;
  int param_8;
  int local_8;
  
  FUN_00690e2e();
  for (local_8 = param_6; local_8 != param_8; local_8 = local_8 + 1) {
    uVar1 = FUN_004684a0();
    FUN_004684a0();
    FID_conflict_assign(uVar1,0,0xffffffff);
  }
  return param_1;
}



void FUN_0046843e(int param_1,int param_2)

{
  undefined4 uVar1;
  
  FUN_00467f9f();
  for (; (param_1 != param_2 && (param_2 = param_2 + -1, param_1 != param_2)); param_1 = param_1 + 1
      ) {
    FUN_00690e2e();
    uVar1 = FUN_004684a0();
    FUN_00690e2e();
    FUN_004684a0();
    FUN_0043165e(uVar1);
  }
  return;
}



undefined4 FUN_004684a0(void)

{
  int **in_EAX;
  int *piVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  
  piVar1 = *in_EAX;
  piVar4 = in_EAX[1];
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *in_EAX;
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
      goto LAB_004684be;
    }
  }
  iVar3 = *piVar1;
LAB_004684be:
  if (piVar1 == (int *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1;
  }
  if ((int *)(*(int *)(iVar2 + 0x1c) + *(int *)(iVar3 + 0x18)) <= in_EAX[1]) {
    FUN_00a3fb10();
  }
  piVar1 = *in_EAX;
  if (piVar1 == (int *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar1;
  }
  if (*(int **)(iVar3 + 0x14) <= piVar4) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    piVar4 = (int *)((int)piVar4 - *(int *)(iVar3 + 0x14));
  }
  if (piVar1 == (int *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar1;
  }
  return *(undefined4 *)(*(int *)(iVar3 + 0x10) + (int)piVar4 * 4);
}



void __fastcall FUN_00468509(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 10;
  return;
}



void __fastcall FUN_00468515(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0xe;
  return;
}



void __fastcall FUN_00468521(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 1;
  return;
}



void __fastcall FUN_0046852d(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 7;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00468539(undefined4 *param_1)

{
  FUN_00507e58();
  if (param_1[2] != 0) {
    FUN_0040127a();
  }
  *param_1 = W47457227::WCB8A8F94::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_00468575(int *param_1_00,undefined4 param_1)

{
  undefined **local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_38;
  undefined4 local_18;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_18 = 0;
  local_48 = W47457227::W4D2A618B::vftable;
  local_44 = 0;
  local_40 = 0;
  local_38 = 0;
  local_8 = 1;
  (**(code **)(*param_1_00 + 0x10))(&local_48);
  FUN_00492da1();
  local_18 = 1;
  local_8 = local_8 & 0xffffff00;
  FUN_00468539(&local_48);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004685c7(undefined4 param_1)

{
  int *unaff_EDI;
  undefined **local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x54;
  local_14 = 0;
  local_8 = 1;
  FUN_00672a11();
  local_60 = 0;
  local_5c = 0;
  local_64 = W47457227::W4D2A618B::vftable;
  local_8._0_1_ = 4;
  FUN_00672a11();
  local_8._0_1_ = 1;
  FUN_00507e58();
  local_8._0_1_ = 5;
  (**(code **)(*unaff_EDI + 0x10))(&local_64);
  FUN_00492da1();
  local_14 = 1;
  local_8._0_1_ = 1;
  FUN_00468539(&local_64);
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00507e58();
  return param_1;
}



void __fastcall FUN_00468655(undefined4 param_1,int param_2)

{
  undefined *in_EAX;
  
  *in_EAX = 0;
  if (*(char *)(param_2 + 0x1c) != '\0') {
    if ((undefined2 *)(in_EAX + 2) != (undefined2 *)0x0) {
      *(undefined2 *)(in_EAX + 2) = *(undefined2 *)(param_2 + 0x1e);
    }
    *in_EAX = 1;
  }
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00468670(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  int in_EAX;
  
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
                     )(in_EAX + 0xc));
  return param_1;
}



undefined4 FUN_0046868b(undefined4 param_1)

{
  int in_EAX;
  
  basic_string<>(in_EAX + 0x24);
  return param_1;
}



undefined4 FUN_004686a6(undefined4 param_1)

{
  FUN_00b9af20(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004686c0(undefined4 param_1)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



undefined4 __thiscall FUN_00468717(undefined4 param_1_00,byte param_1)

{
  FUN_00401829(1,0);
  FUN_00464734(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_00468740(undefined4 param_1)

{
  int in_EAX;
  
  basic_string<>(in_EAX + 0xc);
  return param_1;
}



void FUN_0046875b(undefined4 param_1)

{
  FID_conflict_assign(param_1,0,0xffffffff);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __thiscall
FUN_0046876e(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,undefined4 param_1,int param_2,int *param_3)

{
  int iVar1;
  char cVar2;
  undefined4 uVar3;
  int **ppiVar4;
  uint uVar5;
  undefined local_58 [28];
  undefined local_3c [4];
  int local_38;
  undefined4 local_34;
  int *local_30;
  int local_2c;
  undefined4 local_28;
  int local_24;
  undefined4 local_20;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_1c;
  int local_18;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x46877a;
  local_20 = param_1;
  local_18 = param_2;
  local_30 = param_3;
  local_28 = 0;
  local_1c = param_1_00;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1_00);
  local_8 = 0;
  uVar5 = 0;
  local_28 = 1;
  if (*(int *)(local_18 + 0x14) != 0) {
    do {
      cVar2 = FUN_0046be9b(uVar5,&local_2c,&local_34);
      iVar1 = local_18;
      if (cVar2 == '\0') {
        uVar3 = FUN_0041b008(local_58,uVar5,0xffffffff);
        local_8 = 4;
        FID_conflict_append(uVar3,0,0xffffffff);
        local_8 = local_8 & 0xffffff00;
        FUN_00401829(1,0);
        uVar5 = *(uint *)(iVar1 + 0x14);
      }
      else {
        uVar3 = FUN_0041b008(local_58,uVar5,local_24 - uVar5);
        local_8 = 1;
        FID_conflict_append(uVar3,0,0xffffffff);
        local_8 = local_8 & 0xffffff00;
        FUN_00401829(1,0);
        ppiVar4 = (int **)(**(code **)(*local_30 + 0xc))(local_3c,local_34);
        local_8 = 2;
        (**(code **)(**ppiVar4 + 0x10))(local_20);
        local_8 = local_8 & 0xffffff00;
        if (local_38 != 0) {
          FUN_0040127a();
        }
        uVar3 = FUN_00468740(local_58);
        local_8 = 3;
        FID_conflict_append(uVar3,0,0xffffffff);
        local_8 = local_8 & 0xffffff00;
        FUN_00401829(1,0);
        uVar5 = local_24 + local_2c;
      }
    } while (uVar5 < *(uint *)(local_18 + 0x14));
  }
  return local_1c;
}



void FUN_004688af(int param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 unaff_ESI;
  undefined4 local_84;
  undefined4 local_80;
  uint uStack_7c;
  int aiStack_6c [2];
  undefined local_64 [8];
  undefined4 *local_5c;
  undefined4 uStack_4c;
  char cStack_48;
  undefined auStack_44 [8];
  undefined local_3c [28];
  void *pvStack_20;
  uint local_1c;
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3be12;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)aiStack_6c;
  uStack_7c = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_14;
  local_80 = 0x4688f8;
  puVar1 = (undefined4 *)FUN_00492da1();
  local_c = 0;
  local_5c = &local_84;
  local_80 = *(undefined4 *)(param_1 + 0x28);
  local_84 = *(undefined4 *)(param_1 + 0x24);
  (***(code ***)*puVar1)(local_3c);
  uStack_18 = 2;
  if (aiStack_6c[0] != 0) {
    FUN_0040127a();
  }
  if ((-(uint)(cStack_48 != '\0') & 0x6a1cd8) == 0) {
    uStack_4c = 7;
    FUN_0040180b(0);
    uStack_18 = 4;
    puVar2 = local_64;
  }
  else {
    puVar2 = (undefined *)FUN_0046876e(unaff_ESI,auStack_44,param_1);
    uStack_18 = 3;
  }
  FUN_0046875b(puVar2);
  FUN_00401829(1,0);
  if (cStack_48 != '\0') {
    FUN_00401829(1,0);
  }
  ExceptionList = pvStack_20;
  uStack_7c = 0x4689b3;
  ___security_check_cookie_4();
  return;
}



void FUN_004689b9(int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  char local_c8;
  undefined2 local_c6;
  undefined local_c4 [36];
  undefined local_a0 [8];
  int local_98 [12];
  undefined2 auStack_68 [36];
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41194;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_14;
  FUN_0040c8aa(local_a0);
  local_c = 0;
  FUN_0040c559(&LAB_00415f49);
  FUN_00468655(uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  if ((-(uint)(local_c8 != '\0') & 0x6a1cd8) != 0) {
    *(undefined2 *)((int)auStack_68 + *(int *)(local_98[0] + 4)) = local_c6;
  }
  if (*(int *)(param_1 + 0x18) != 0) {
    FUN_00823cac(local_c4,*(int *)(param_1 + 0x18));
    FUN_00415f60();
  }
  FUN_00469622(local_98,*(undefined4 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x14));
  uVar2 = FUN_0040c93e();
  uStack_18 = CONCAT31(uStack_18._1_3_,2);
  FUN_0046875b(uVar2);
  FUN_00401829(1,0);
  uStack_18 = 0xffffffff;
  FUN_004085a7();
  ExceptionList = pvStack_20;
  return;
}



void FUN_00468aca(int param_1)

{
  uint uVar1;
  int *piVar2;
  undefined4 uVar3;
  undefined local_c4 [36];
  undefined local_a0 [8];
  undefined local_98 [120];
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41152;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  FUN_0040c8aa(local_a0);
  local_c = 0;
  FUN_0040c559(&LAB_00415f49);
  if (*(int *)(param_1 + 0x18) != 0) {
    FUN_00823cac(local_c4,*(int *)(param_1 + 0x18),uVar1);
    piVar2 = (int *)FUN_00415f60();
    *(undefined2 *)((int)piVar2 + *(int *)(*piVar2 + 4) + 0x30) = 0x30;
  }
  FUN_00469701(local_98,*(undefined4 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x14));
  uVar3 = FUN_0040c93e();
  uStack_18 = CONCAT31(uStack_18._1_3_,1);
  FUN_0046875b(uVar3);
  FUN_00401829(1,0);
  uStack_18 = 0xffffffff;
  FUN_004085a7();
  ExceptionList = pvStack_20;
  return;
}



void FUN_00468bae(int param_1)

{
  uint uVar1;
  int *piVar2;
  undefined4 uVar3;
  undefined local_c4 [36];
  undefined local_a0 [8];
  undefined local_98 [120];
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41152;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  FUN_0040c8aa(local_a0);
  local_c = 0;
  FUN_0040c559(&LAB_004150a2);
  if (*(int *)(param_1 + 0x18) != 0) {
    FUN_00823cac(local_c4,*(int *)(param_1 + 0x18),uVar1);
    piVar2 = (int *)FUN_00415f60();
    *(undefined2 *)((int)piVar2 + *(int *)(*piVar2 + 4) + 0x30) = 0x30;
  }
  if (*(char *)(param_1 + 0x1c) != '\0') {
    FUN_0040c559(&LAB_00415099);
  }
  FUN_00469701(local_98,*(undefined4 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x14));
  uVar3 = FUN_0040c93e();
  uStack_18 = CONCAT31(uStack_18._1_3_,1);
  FUN_0046875b(uVar3);
  FUN_00401829(1,0);
  uStack_18 = 0xffffffff;
  FUN_004085a7();
  ExceptionList = pvStack_20;
  return;
}



void FUN_00468ca6(int param_1)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined local_c4 [44];
  undefined local_98 [120];
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c37a0d;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_14;
  FUN_0040c8aa();
  local_c = 0;
  iVar2 = *(int *)(param_1 + 0x1c);
  cVar1 = *(char *)(param_1 + 0x20);
  if (*(int *)(param_1 + 0x18) != 0) {
    FUN_00823cac(local_c4,*(int *)(param_1 + 0x18),uVar3);
    FUN_00415f60();
  }
  if (cVar1 != '\0') {
    FUN_0040c559();
  }
  if (iVar2 != 0) {
    FUN_00823c96(local_c4,iVar2);
    FUN_00415f60();
  }
  FUN_004697e0(local_98,*(undefined8 *)(param_1 + 0x10));
  uVar4 = FUN_0040c93e();
  uStack_18 = CONCAT31(uStack_18._1_3_,1);
  FUN_0046875b(uVar4);
  FUN_00401829(1,0);
  uStack_18 = 0xffffffff;
  FUN_004085a7();
  ExceptionList = pvStack_20;
  return;
}



void FUN_00468e43(int param_1)

{
  uint uVar1;
  uint uVar2;
  int *piVar3;
  undefined *puVar4;
  undefined4 uVar5;
  uint local_d0;
  undefined local_c4 [36];
  undefined local_a0 [8];
  undefined local_98 [132];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4111b;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff20;
  ExceptionList = &local_14;
  FUN_0040c8aa(local_a0);
  local_c = 0;
  uVar1 = *(uint *)(*(int *)(param_1 + 0xc) + 8);
  local_d0 = 0;
  if (uVar1 != 0) {
    do {
      FUN_00823cac(local_c4,2,uVar2);
      FUN_0040c559(&LAB_004150a2);
      piVar3 = (int *)FUN_00415f60();
      *(undefined2 *)((int)piVar3 + *(int *)(*piVar3 + 4) + 0x30) = 0x30;
      FUN_0040c559(&LAB_00415099);
      puVar4 = (undefined *)FUN_00b92870();
      FUN_00417ba7(local_98,*puVar4);
      local_d0 = local_d0 + 1;
    } while (local_d0 < uVar1);
  }
  uVar5 = FUN_0040c93e();
  local_c = CONCAT31(local_c._1_3_,1);
  FUN_0046875b(uVar5);
  FUN_00401829(1,0);
  local_c = 0xffffffff;
  FUN_004085a7();
  ExceptionList = local_14;
  return;
}



void FUN_00468f5a(void)

{
  undefined4 *puVar1;
  int unaff_ESI;
  undefined4 local_7c;
  undefined4 local_78;
  uint uStack_74;
  undefined local_64 [8];
  undefined4 *local_5c;
  undefined4 uStack_4c;
  char cStack_48;
  undefined auStack_44 [8];
  undefined local_3c [28];
  void *pvStack_20;
  uint local_1c;
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c410dd;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_64;
  uStack_74 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_14;
  local_78 = 0x468f9e;
  puVar1 = (undefined4 *)FUN_00492da1();
  local_c = 0;
  local_5c = &local_7c;
  local_7c = 0;
  local_78 = 0;
  (***(code ***)*puVar1)(local_3c);
  uStack_18 = 2;
  if (unaff_ESI != 0) {
    FUN_0040127a();
  }
  if ((-(uint)(cStack_48 != '\0') & 0x6a1cd8) == 0) {
    uStack_4c = 7;
    FUN_0040180b(0);
    uStack_18 = 3;
    FUN_0046875b(local_64);
    FUN_00401829(1,0);
  }
  else {
    FUN_0046875b(auStack_44);
  }
  if (cStack_48 != '\0') {
    FUN_00401829(1,0);
  }
  ExceptionList = pvStack_20;
  uStack_74 = 0x469047;
  ___security_check_cookie_4();
  return;
}



void FUN_0046904d(int *param_1)

{
  undefined4 *puVar1;
  int *piVar2;
  int **ppiVar3;
  int local_114;
  int local_110;
  uint uStack_10c;
  int *local_fc [2];
  int iStack_f4;
  undefined auStack_f0 [24];
  undefined4 uStack_d8;
  undefined auStack_d4 [140];
  char cStack_48;
  undefined auStack_44 [8];
  undefined local_3c [20];
  undefined uStack_28;
  void *pvStack_20;
  uint local_1c;
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c30f04;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_fc;
  uStack_10c = DAT_0323f878 ^ (uint)&stack0xfffffef8;
  ExceptionList = &local_14;
  local_110 = 0x46909f;
  puVar1 = (undefined4 *)FUN_00492da1();
  local_c = 0;
  local_fc[0] = &local_114;
  local_110 = param_1[10];
  local_114 = param_1[9];
  (***(code ***)*puVar1)(local_3c);
  uStack_18 = 2;
  if (iStack_f4 != 0) {
    FUN_0040127a();
  }
  if ((-(uint)(cStack_48 != '\0') & 0x6a1cd8) == 0) {
    uStack_d8 = 7;
    FUN_0040180b(0);
    uStack_18 = 5;
    FUN_0046875b(auStack_f0);
    FUN_00401829(1,0);
  }
  else {
    FUN_0040c97f(auStack_d4,auStack_44);
    uStack_18 = 3;
    piVar2 = (int *)FUN_0040c64f(auStack_d4,&stack0xfffffef8);
    if ((*(byte *)(*(int *)(*piVar2 + 4) + 8 + (int)piVar2) & 6) != 0) {
      local_110 = 0;
    }
    ppiVar3 = (int **)(**(code **)(*param_1 + 0xc))(&stack0xfffffef8,local_110);
    uStack_28 = 4;
    (**(code **)(**ppiVar3 + 0x10))(local_114);
    uStack_18 = 3;
    if (local_fc[0] != (int *)0x0) {
      FUN_0040127a();
    }
    uStack_18 = 2;
    FUN_0040785a();
  }
  if (cStack_48 != '\0') {
    FUN_00401829(1,0);
  }
  ExceptionList = pvStack_20;
  uStack_10c = 0x4691eb;
  ___security_check_cookie_4();
  return;
}



void FUN_00469231(int *param_1)

{
  uint uVar1;
  int iVar2;
  int **ppiVar3;
  undefined4 uVar4;
  undefined4 unaff_EBX;
  uint uVar5;
  int iStack_cc;
  undefined local_c8 [4];
  undefined auStack_c4 [32];
  undefined auStack_a4 [4];
  undefined local_a0 [8];
  undefined auStack_98 [128];
  undefined uStack_18;
  undefined4 local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3bdd1;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_14;
  FUN_0040c8aa(local_a0);
  local_c = 0;
  uVar5 = 1;
  iVar2 = (**(code **)(*param_1 + 8))(uVar1);
  if (iVar2 != 0) {
    do {
      if (1 < uVar5) {
        FUN_0040e4a0(auStack_98,&DAT_00f64e08);
      }
      ppiVar3 = (int **)(**(code **)(*param_1 + 0xc))(auStack_c4,uVar5);
      local_14 = (void *)CONCAT31(local_14._1_3_,1);
      (**(code **)(**ppiVar3 + 0x10))(unaff_EBX);
      uStack_18 = 0;
      if (iStack_cc != 0) {
        FUN_0040127a();
      }
      uVar4 = FUN_00468740(local_c8);
      uStack_18 = 2;
      FUN_0040e327(auStack_a4,uVar4);
      uStack_18 = 0;
      FUN_00401829(1,0);
      uVar5 = uVar5 + 1;
      uVar1 = (**(code **)(*param_1 + 8))();
    } while (uVar5 <= uVar1);
  }
  uVar4 = FUN_0040c93e();
  local_c = CONCAT31(local_c._1_3_,3);
  FUN_0046875b(uVar4);
  FUN_00401829(1,0);
  local_c = 0xffffffff;
  FUN_004085a7();
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_00469373(int param_1_00,int *param_1)

{
  uint uVar1;
  int **ppiVar2;
  undefined4 uVar3;
  undefined4 extraout_ECX;
  undefined4 unaff_ESI;
  uint uStack_c8;
  undefined auStack_c4 [32];
  undefined auStack_a4 [4];
  undefined local_a0 [8];
  undefined auStack_98 [128];
  undefined uStack_18;
  undefined4 local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3bdd1;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_14;
  FUN_0040c8aa(local_a0);
  local_c = 0;
  uStack_c8 = (**(code **)(*param_1 + 8))(uVar1);
  uVar1 = 1;
  if (uStack_c8 != 0) {
    do {
      ppiVar2 = (int **)(**(code **)(*param_1 + 0xc))(auStack_c4,uVar1);
      local_14 = (void *)CONCAT31(local_14._1_3_,1);
      (**(code **)(**ppiVar2 + 0x10))(unaff_ESI);
      uStack_18 = 0;
      if (param_1_00 != 0) {
        FUN_0040127a();
      }
      uVar3 = FUN_00468740(&uStack_c8);
      uStack_18 = 2;
      uVar3 = FUN_00417ba7(auStack_a4,uVar1,extraout_ECX,&DAT_00f64e10,extraout_ECX,uVar3);
      uVar3 = FUN_0040e4a0(uVar3);
      FUN_0040e327(uVar3);
      local_c = local_c & 0xffffff00;
      FUN_00401829(1,0);
      if (uVar1 < uStack_c8) {
        FUN_0040e4a0(auStack_98,&DAT_00f64e18);
      }
      uVar1 = uVar1 + 1;
    } while (uVar1 <= uStack_c8);
  }
  uVar3 = FUN_0040c93e();
  local_c = CONCAT31(local_c._1_3_,3);
  FUN_0046875b(uVar3);
  FUN_00401829(1,0);
  local_c = 0xffffffff;
  FUN_004085a7();
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_00469622(int *param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  int iVar4;
  uint local_30;
  char local_24;
  locale local_20 [4];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x46962e;
  local_1c = 0;
  FUN_00415f7a(param_1);
  local_8 = 0;
  if (local_24 != '\0') {
    uVar2 = FUN_00417498(local_20);
    local_8._0_1_ = 1;
    piVar3 = (int *)FUN_00416e6a(uVar2);
    std::locale::~locale(local_20);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar1 = *(int *)(*param_1 + 4);
    uVar2 = *(undefined4 *)((int)param_1 + iVar1 + 0x28);
    iVar4 = *(int *)(*param_1 + 4) + (int)param_1;
    local_30 = local_30 & 0xffffff00;
    (**(code **)(*piVar3 + 0x14))
              (&param_2,local_30,uVar2,iVar4,*(undefined2 *)((int)param_1 + iVar1 + 0x30),param_2,
               param_3);
    if ((char)param_2 != '\0') {
      local_1c = 4;
    }
    local_8 = 0;
    piVar3 = (int *)FUN_004696db(local_30,uVar2,iVar4);
    return piVar3;
  }
  FUN_00417b8a(local_1c,0);
  local_8 = 0xffffffff;
  FUN_00416035();
  return param_1;
}



undefined * Catch_All_004696b4(void)

{
  int unaff_EBP;
  
  FUN_00417b70(*(uint *)((int)*(int **)(unaff_EBP + 8) + *(int *)(**(int **)(unaff_EBP + 8) + 4) + 8
                        ) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_004696d6;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004696db(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  
  FUN_00417b8a(*(undefined4 *)(unaff_EBP + -0x18),unaff_EBX);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00416035();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_00469701(int *param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  int iVar4;
  uint local_30;
  char local_24;
  locale local_20 [4];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x46970d;
  local_1c = 0;
  FUN_00415f7a(param_1);
  local_8 = 0;
  if (local_24 != '\0') {
    uVar2 = FUN_00417498(local_20);
    local_8._0_1_ = 1;
    piVar3 = (int *)FUN_00416e6a(uVar2);
    std::locale::~locale(local_20);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar1 = *(int *)(*param_1 + 4);
    uVar2 = *(undefined4 *)((int)param_1 + iVar1 + 0x28);
    iVar4 = *(int *)(*param_1 + 4) + (int)param_1;
    local_30 = local_30 & 0xffffff00;
    (**(code **)(*piVar3 + 0x10))
              (&param_2,local_30,uVar2,iVar4,*(undefined2 *)((int)param_1 + iVar1 + 0x30),param_2,
               param_3);
    if ((char)param_2 != '\0') {
      local_1c = 4;
    }
    local_8 = 0;
    piVar3 = (int *)FUN_004697ba(local_30,uVar2,iVar4);
    return piVar3;
  }
  FUN_00417b8a(local_1c,0);
  local_8 = 0xffffffff;
  FUN_00416035();
  return param_1;
}



undefined * Catch_All_00469793(void)

{
  int unaff_EBP;
  
  FUN_00417b70(*(uint *)((int)*(int **)(unaff_EBP + 8) + *(int *)(**(int **)(unaff_EBP + 8) + 4) + 8
                        ) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_004697b5;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004697ba(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  
  FUN_00417b8a(*(undefined4 *)(unaff_EBP + -0x18),unaff_EBX);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00416035();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_004697e0(int *param_1,undefined8 param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  undefined4 uVar4;
  uint local_30;
  char local_24;
  locale local_20 [4];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4697ec;
  local_1c = 0;
  FUN_00415f7a();
  local_8 = 0;
  if (local_24 != '\0') {
    FUN_00417498();
    local_8._0_1_ = 1;
    piVar2 = (int *)FUN_00416e6a();
    std::locale::~locale(local_20);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar1 = *(int *)(*param_1 + 4);
    uVar4 = *(undefined4 *)((int)param_1 + iVar1 + 0x28);
    iVar3 = *(int *)(*param_1 + 4) + (int)param_1;
    local_30 = local_30 & 0xffffff00;
    (**(code **)(*piVar2 + 0xc))
              (&param_2,local_30,uVar4,iVar3,*(undefined2 *)((int)param_1 + iVar1 + 0x30),
               CONCAT71(param_2._1_7_,(char)param_2));
    if ((char)param_2 != '\0') {
      local_1c = 4;
    }
    local_8 = 0;
    piVar2 = (int *)FUN_0046989b(local_30,uVar4,iVar3);
    return piVar2;
  }
  FUN_00417b8a(local_1c,0);
  local_8 = 0xffffffff;
  FUN_00416035();
  return param_1;
}



undefined * Catch_All_00469874(void)

{
  int unaff_EBP;
  
  FUN_00417b70(*(uint *)((int)*(int **)(unaff_EBP + 8) + *(int *)(**(int **)(unaff_EBP + 8) + 4) + 8
                        ) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_00469896;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0046989b(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  
  FUN_00417b8a(*(undefined4 *)(unaff_EBP + -0x18),unaff_EBX);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00416035();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> > __thiscall std::messages<char>::do_get(int,int,int,class
// std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)const 
//  protected: virtual class std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> > __thiscall std::messages<unsigned
// short>::do_get(int,int,int,class std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &)const 
//  protected: virtual class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::messages<wchar_t>::do_get(int,int,int,class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const
// &)const 
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release

undefined4 do_get(undefined4 param_1,undefined4 param_2)

{
  basic_string<>(param_1);
  return param_2;
}



undefined4 __thiscall FUN_004698f2(undefined4 param_1_00,byte param_1)

{
  FUN_00464734(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0046990f(undefined4 param_1,undefined4 *param_2)

{
  *param_2 = W47457227::WE3F12033::vftable;
  FUN_00467a19();
  FUN_004679dd();
  return param_2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0046994d(undefined4 param_1,undefined4 param_2)

{
  FUN_00467a19();
  FUN_00467c1e(param_2);
  FUN_004679dd();
  FUN_004679c2();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __thiscall
FUN_0046999b(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,undefined4 param_1,int *param_2)

{
  char cVar1;
  undefined4 uVar2;
  int **ppiVar3;
  uint uVar4;
  int unaff_EDI;
  undefined local_74 [32];
  int local_54;
  undefined local_50 [28];
  undefined local_34 [4];
  int local_30;
  undefined4 local_2c;
  undefined4 local_28;
  int local_24;
  int *local_20;
  int local_1c;
  undefined4 local_18;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8 = 0x4699a7;
  local_18 = param_1;
  local_20 = param_2;
  local_2c = 0;
  local_14 = param_1_00;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1_00);
  local_8 = 0;
  uVar4 = 0;
  local_2c = 1;
  if (*(int *)(unaff_EDI + 0x14) != 0) {
    do {
      cVar1 = FUN_0046be9b(uVar4,&local_24,&local_28);
      if (cVar1 == '\0') {
        uVar2 = FUN_0041b008(local_50,uVar4,0xffffffff);
        local_8 = 5;
        FID_conflict_append(uVar2,0,0xffffffff);
        local_8 = local_8 & 0xffffff00;
        FUN_00401829(1,0);
        uVar4 = *(uint *)(unaff_EDI + 0x14);
      }
      else {
        uVar2 = FUN_0041b008(local_50,uVar4,local_1c - uVar4);
        local_8 = 1;
        FID_conflict_append(uVar2,0,0xffffffff);
        local_8 = local_8 & 0xffffff00;
        FUN_00401829(1,0);
        ppiVar3 = (int **)(**(code **)(*local_20 + 0xc))(local_34,local_28);
        local_8 = 2;
        (**(code **)(**ppiVar3 + 0x10))(local_18);
        local_8 = local_8 & 0xffffff00;
        if (local_30 != 0) {
          FUN_0040127a();
        }
        FUN_0046990f(local_18,local_74);
        local_8 = 3;
        if (local_54 != 0) {
          uVar2 = FUN_004679f1();
          local_8 = CONCAT31(local_8._1_3_,4);
          FID_conflict_append(uVar2,0,0xffffffff);
          FUN_00401829(1,0);
        }
        uVar4 = local_1c + local_24;
        local_8 = local_8 & 0xffffff00;
        FUN_004679c2();
      }
    } while (uVar4 < *(uint *)(unaff_EDI + 0x14));
  }
  return local_14;
}



void __thiscall FUN_00469aec(undefined4 param_1_00,int param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int unaff_ESI;
  undefined4 local_84;
  undefined4 local_80;
  uint uStack_7c;
  undefined local_6c [8];
  undefined4 *local_64;
  char cStack_48;
  undefined local_3c [28];
  void *pvStack_20;
  uint local_1c;
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c47f58;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_6c;
  uStack_7c = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_14;
  local_80 = 0x469b33;
  puVar1 = (undefined4 *)FUN_00492da1();
  local_c = 0;
  local_64 = &local_84;
  local_80 = *(undefined4 *)(param_1 + 0x28);
  local_84 = *(undefined4 *)(param_1 + 0x24);
  (***(code ***)*puVar1)(local_3c);
  uStack_18 = 2;
  if (unaff_ESI != 0) {
    FUN_0040127a();
  }
  if ((-(uint)(cStack_48 != '\0') & 0x6a1cd8) == 0) {
    FUN_00467993();
    uStack_18 = 4;
    FUN_004679dd();
    FUN_004679c2();
  }
  else {
    uVar2 = FUN_0046999b(param_1_00,param_1);
    uStack_18 = 3;
    FUN_0046994d(param_1_00,uVar2);
    FUN_00401829(1,0);
  }
  if (cStack_48 != '\0') {
    FUN_00401829(1,0);
  }
  ExceptionList = pvStack_20;
  uStack_7c = 0x469bef;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00469bf5(undefined4 param_1_00,int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  char local_c8;
  undefined2 local_c6;
  undefined local_c4 [36];
  undefined local_a0 [8];
  int local_98 [12];
  undefined2 auStack_68 [36];
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41194;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_14;
  FUN_0040c8aa(local_a0);
  local_c = 0;
  FUN_0040c559(&LAB_00415f49);
  FUN_00468655(uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  if ((-(uint)(local_c8 != '\0') & 0x6a1cd8) != 0) {
    *(undefined2 *)((int)auStack_68 + *(int *)(local_98[0] + 4)) = local_c6;
  }
  if (*(int *)(param_1 + 0x18) != 0) {
    FUN_00823cac(local_c4,*(int *)(param_1 + 0x18));
    FUN_00415f60();
  }
  FUN_00469622(local_98,*(undefined4 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x14));
  uVar2 = FUN_0040c93e();
  uStack_18 = CONCAT31(uStack_18._1_3_,2);
  FUN_0046994d(param_1_00,uVar2);
  FUN_00401829(1,0);
  uStack_18 = 0xffffffff;
  FUN_004085a7();
  ExceptionList = pvStack_20;
  return;
}



void __thiscall FUN_00469d05(undefined4 param_1_00,int param_1)

{
  uint uVar1;
  int *piVar2;
  undefined4 uVar3;
  undefined local_c4 [36];
  undefined local_a0 [8];
  undefined local_98 [120];
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41152;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  FUN_0040c8aa(local_a0);
  local_c = 0;
  FUN_0040c559(&LAB_00415f49);
  if (*(int *)(param_1 + 0x18) != 0) {
    FUN_00823cac(local_c4,*(int *)(param_1 + 0x18),uVar1);
    piVar2 = (int *)FUN_00415f60();
    *(undefined2 *)((int)piVar2 + *(int *)(*piVar2 + 4) + 0x30) = 0x30;
  }
  FUN_00469701(local_98,*(undefined4 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x14));
  uVar3 = FUN_0040c93e();
  uStack_18 = CONCAT31(uStack_18._1_3_,1);
  FUN_0046994d(param_1_00,uVar3);
  FUN_00401829(1,0);
  uStack_18 = 0xffffffff;
  FUN_004085a7();
  ExceptionList = pvStack_20;
  return;
}



void __thiscall FUN_00469de8(undefined4 param_1_00,int param_1)

{
  uint uVar1;
  int *piVar2;
  undefined4 uVar3;
  undefined local_c4 [36];
  undefined local_a0 [8];
  undefined local_98 [120];
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41152;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  FUN_0040c8aa(local_a0);
  local_c = 0;
  FUN_0040c559(&LAB_004150a2);
  if (*(int *)(param_1 + 0x18) != 0) {
    FUN_00823cac(local_c4,*(int *)(param_1 + 0x18),uVar1);
    piVar2 = (int *)FUN_00415f60();
    *(undefined2 *)((int)piVar2 + *(int *)(*piVar2 + 4) + 0x30) = 0x30;
  }
  if (*(char *)(param_1 + 0x1c) != '\0') {
    FUN_0040c559(&LAB_00415099);
  }
  FUN_00469701(local_98,*(undefined4 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x14));
  uVar3 = FUN_0040c93e();
  uStack_18 = CONCAT31(uStack_18._1_3_,1);
  FUN_0046994d(param_1_00,uVar3);
  FUN_00401829(1,0);
  uStack_18 = 0xffffffff;
  FUN_004085a7();
  ExceptionList = pvStack_20;
  return;
}



void FUN_00469edf(int param_1)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 unaff_ESI;
  undefined local_c4 [44];
  undefined local_98 [120];
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c37a0d;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_14;
  FUN_0040c8aa();
  local_c = 0;
  iVar2 = *(int *)(param_1 + 0x1c);
  cVar1 = *(char *)(param_1 + 0x20);
  if (*(int *)(param_1 + 0x18) != 0) {
    FUN_00823cac(local_c4,*(int *)(param_1 + 0x18),uVar3);
    FUN_00415f60();
  }
  if (cVar1 != '\0') {
    FUN_0040c559();
  }
  if (iVar2 != 0) {
    FUN_00823c96(local_c4,iVar2);
    FUN_00415f60();
  }
  FUN_004697e0(local_98,*(undefined8 *)(param_1 + 0x10));
  uVar4 = FUN_0040c93e();
  uStack_18 = CONCAT31(uStack_18._1_3_,1);
  FUN_0046994d(unaff_ESI,uVar4);
  FUN_00401829(1,0);
  uStack_18 = 0xffffffff;
  FUN_004085a7();
  ExceptionList = pvStack_20;
  return;
}



void __thiscall FUN_0046a07a(undefined4 param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  int *piVar3;
  undefined *puVar4;
  undefined4 uVar5;
  uint local_d0;
  undefined local_c4 [36];
  undefined local_a0 [8];
  undefined local_98 [132];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4111b;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff20;
  ExceptionList = &local_14;
  FUN_0040c8aa(local_a0);
  local_c = 0;
  uVar1 = *(uint *)(*(int *)(param_1 + 0xc) + 8);
  local_d0 = 0;
  if (uVar1 != 0) {
    do {
      FUN_00823cac(local_c4,2,uVar2);
      FUN_0040c559(&LAB_004150a2);
      piVar3 = (int *)FUN_00415f60();
      *(undefined2 *)((int)piVar3 + *(int *)(*piVar3 + 4) + 0x30) = 0x30;
      FUN_0040c559(&LAB_00415099);
      puVar4 = (undefined *)FUN_00b92870();
      FUN_00417ba7(local_98,*puVar4);
      local_d0 = local_d0 + 1;
    } while (local_d0 < uVar1);
  }
  uVar5 = FUN_0040c93e();
  local_c = CONCAT31(local_c._1_3_,1);
  FUN_0046994d(param_1_00,uVar5);
  FUN_00401829(1,0);
  local_c = 0xffffffff;
  FUN_004085a7();
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_0046a191(undefined4 param_1)

{
  undefined4 *puVar1;
  int unaff_ESI;
  undefined4 local_7c;
  undefined4 local_78;
  uint uStack_74;
  undefined local_64 [8];
  undefined4 *local_5c;
  undefined4 uStack_4c;
  char cStack_48;
  undefined auStack_44 [8];
  undefined local_3c [28];
  void *pvStack_20;
  uint local_1c;
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c410dd;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_64;
  uStack_74 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_14;
  local_78 = 0x46a1d5;
  puVar1 = (undefined4 *)FUN_00492da1();
  local_c = 0;
  local_5c = &local_7c;
  local_7c = 0;
  local_78 = 0;
  (***(code ***)*puVar1)(local_3c);
  uStack_18 = 2;
  if (unaff_ESI != 0) {
    FUN_0040127a();
  }
  if ((-(uint)(cStack_48 != '\0') & 0x6a1cd8) == 0) {
    uStack_4c = 7;
    FUN_0040180b(0);
    uStack_18 = 3;
    FUN_0046994d(param_1,local_64);
    FUN_00401829(1,0);
  }
  else {
    FUN_0046994d(param_1,auStack_44);
  }
  if (cStack_48 != '\0') {
    FUN_00401829(1,0);
  }
  ExceptionList = pvStack_20;
  uStack_74 = 0x46a27c;
  ___security_check_cookie_4();
  return;
}



void FUN_0046a282(int *param_1)

{
  undefined4 *puVar1;
  int *piVar2;
  int **ppiVar3;
  undefined4 unaff_ESI;
  int local_114;
  int local_110;
  uint uStack_10c;
  int *local_fc [2];
  int iStack_f4;
  undefined auStack_f0 [24];
  undefined4 uStack_d8;
  undefined auStack_d4 [140];
  char cStack_48;
  undefined auStack_44 [8];
  undefined local_3c [20];
  undefined uStack_28;
  void *pvStack_20;
  uint local_1c;
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c30f04;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_fc;
  uStack_10c = DAT_0323f878 ^ (uint)&stack0xfffffef8;
  ExceptionList = &local_14;
  local_110 = 0x46a2d4;
  puVar1 = (undefined4 *)FUN_00492da1();
  local_c = 0;
  local_fc[0] = &local_114;
  local_110 = param_1[10];
  local_114 = param_1[9];
  (***(code ***)*puVar1)(local_3c);
  uStack_18 = 2;
  if (iStack_f4 != 0) {
    FUN_0040127a();
  }
  if ((-(uint)(cStack_48 != '\0') & 0x6a1cd8) == 0) {
    uStack_d8 = 7;
    FUN_0040180b(0);
    uStack_18 = 5;
    FUN_0046994d(unaff_ESI,auStack_f0);
    FUN_00401829(1,0);
  }
  else {
    FUN_0040c97f(auStack_d4,auStack_44);
    uStack_18 = 3;
    piVar2 = (int *)FUN_0040c64f(auStack_d4,&stack0xfffffef8);
    if ((*(byte *)(*(int *)(*piVar2 + 4) + 8 + (int)piVar2) & 6) != 0) {
      local_110 = 0;
    }
    ppiVar3 = (int **)(**(code **)(*param_1 + 0xc))(&stack0xfffffef8,local_110);
    uStack_28 = 4;
    (**(code **)(**ppiVar3 + 0x10))(local_114);
    uStack_18 = 3;
    if (local_fc[0] != (int *)0x0) {
      FUN_0040127a();
    }
    uStack_18 = 2;
    FUN_0040785a();
  }
  if (cStack_48 != '\0') {
    FUN_00401829(1,0);
  }
  ExceptionList = pvStack_20;
  uStack_10c = 0x46a420;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0046a466(int param_1_00,int *param_1)

{
  uint uVar1;
  int **ppiVar2;
  undefined4 uVar3;
  undefined4 unaff_EBX;
  uint uVar4;
  undefined4 uStack_94;
  uint uStack_90;
  undefined auStack_84 [24];
  undefined auStack_6c [32];
  uint uStack_4c;
  undefined local_3c [4];
  undefined auStack_38 [32];
  undefined uStack_18;
  undefined4 local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c410a4;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00467993(DAT_0323f878 ^ (uint)&stack0xffffff60);
  local_c = 0;
  uVar1 = (**(code **)(*param_1 + 8))();
  uStack_90 = 1;
  if (uVar1 != 0) {
    do {
      ppiVar2 = (int **)(**(code **)(*param_1 + 0xc))(auStack_84,uStack_90);
      local_14 = (void *)CONCAT31(local_14._1_3_,1);
      (**(code **)(**ppiVar2 + 0x10))(uStack_94);
      uStack_18 = 0;
      uVar4 = 0;
      if (param_1_00 != 0) {
        FUN_0040127a();
      }
      FUN_0046990f(unaff_EBX,auStack_6c);
      uStack_18 = 2;
      if (uStack_4c != 0) {
        do {
          uVar3 = FUN_004679f1();
          uStack_18 = 3;
          FUN_00467c1e(uVar3);
          uStack_18 = 2;
          FUN_00401829(1,0);
          uVar4 = uVar4 + 1;
        } while (uVar4 < uStack_4c);
      }
      uStack_18 = 0;
      FUN_004679c2();
      uStack_90 = uStack_90 + 1;
    } while (uStack_90 <= uVar1);
  }
  if (*(undefined **)(param_1_00 + 0xc) != local_3c) {
    FUN_00467a4d(*(undefined **)(param_1_00 + 0xc) + 4,auStack_38);
  }
  FUN_004679c2();
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_0046a5bc(int param_1_00,int *param_1)

{
  uint uVar1;
  int **ppiVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 extraout_ECX;
  undefined4 unaff_EBX;
  undefined4 unaff_ESI;
  uint uVar5;
  undefined4 uStack_154;
  uint uStack_150;
  undefined auStack_144 [8];
  undefined local_13c [4];
  undefined auStack_138 [20];
  undefined auStack_124 [24];
  uint uStack_10c;
  undefined auStack_108 [92];
  undefined auStack_ac [8];
  undefined auStack_a4 [132];
  undefined uStack_20;
  undefined uStack_18;
  undefined4 local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41063;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00467993(DAT_0323f878 ^ (uint)&stack0xfffffea0);
  local_c = 0;
  uVar1 = (**(code **)(*param_1 + 8))();
  uStack_150 = 1;
  if (uVar1 != 0) {
    do {
      ppiVar2 = (int **)(**(code **)(*param_1 + 0xc))(auStack_144,uStack_150);
      local_14 = (void *)CONCAT31(local_14._1_3_,1);
      (**(code **)(**ppiVar2 + 0x10))(uStack_154);
      uStack_18 = 0;
      if (param_1_00 != 0) {
        FUN_0040127a();
      }
      FUN_0046990f(unaff_EBX,auStack_124);
      uStack_18 = 2;
      FUN_0040c8aa(auStack_ac);
      uStack_18 = 3;
      uVar3 = FUN_00417ba7(auStack_a4,unaff_ESI,extraout_ECX,&DAT_00f64de8);
      FUN_0040e4a0(uVar3);
      uVar5 = 0;
      if (uStack_10c != 0) {
        do {
          uVar3 = FUN_004679f1();
          uStack_20 = 4;
          uVar4 = FUN_0040c93e();
          uStack_20 = 5;
          uVar3 = FUN_0041c102(auStack_108,uVar4,uVar3);
          uStack_20 = 6;
          FUN_00467c1e(uVar3);
          FUN_00401829(1,0);
          FUN_00401829(1,0);
          uStack_20 = 3;
          FUN_00401829(1,0);
          uVar5 = uVar5 + 1;
        } while (uVar5 < uStack_10c);
      }
      uStack_20 = 2;
      FUN_004085a7();
      uStack_20 = 0;
      FUN_004679c2();
      uStack_150 = uStack_150 + 1;
    } while (uStack_150 <= uVar1);
  }
  if (*(undefined **)(param_1_00 + 0xc) != local_13c) {
    FUN_00467a4d(*(undefined **)(param_1_00 + 0xc) + 4,auStack_138);
  }
  FUN_004679c2();
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0046a90d(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x14);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W47457227::W6BA237A4::vftable;
    puVar2[1] = param_2;
    *(undefined *)(puVar2 + 2) = 0;
    puVar2[3] = 0;
    puVar2[4] = 0;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0046abe3(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0046a982(undefined4 *param_1)

{
  char cVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined4 local_bc [5];
  undefined4 uStack_a8;
  undefined *puStack_a4;
  undefined4 uStack_a0;
  undefined local_8c [8];
  undefined4 local_84;
  undefined4 local_80;
  undefined local_4c [40];
  undefined local_24 [8];
  undefined4 local_1c;
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x7c;
  local_8 = 1;
  *param_1 = 0;
  param_1[1] = 0;
  local_14 = 1;
  uStack_a0 = 0x200;
  puStack_a4 = local_8c;
  uStack_a8 = 0x46a9b5;
  FUN_00b74200();
  local_18 = local_bc;
  local_8._0_1_ = 2;
  FUN_00672a11();
  piVar2 = (int *)FUN_00ba6d80(local_4c);
  local_8._0_1_ = 3;
  local_bc[0] = 0;
  local_18 = local_bc;
  cVar1 = (**(code **)(*piVar2 + 4))(local_8c);
  local_8._0_1_ = 2;
  FUN_0046aa8b(local_4c);
  if (cVar1 != '\0') {
    local_84 = 0;
    local_80 = 0;
    puVar3 = (undefined4 *)FUN_0046a90d(local_24,local_8c);
    local_8 = CONCAT31(local_8._1_3_,4);
    local_1c = *puVar3;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar3 + 1);
  }
  local_8._0_1_ = 1;
  FUN_00b73a90();
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0046aa8b(undefined4 *param_1)

{
  FUN_00507e58();
  *param_1 = W76FAFBE0::WAD5067CC::vftable;
  return;
}



undefined4 __thiscall FUN_0046aab4(undefined4 param_1_00,byte param_1)

{
  FUN_0046aad0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_0046aad0(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c1696c;
  *param_1 = W47457227::W6BA237A4::vftable;
  *(undefined *)(param_1 + 2) = 0;
  if (param_1[4] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = W47457227::WB8775817::vftable;
  return puVar1;
}



void Catch_All_0046ab0b(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall
FUN_0046ab85(int param_1_00,undefined *param_1,undefined4 param_2,undefined4 param_3)

{
  char local_38;
  
  *param_1 = 0;
  if (*(char *)(param_1_00 + 8) != '\0') {
    FUN_0046c31d(param_3);
    FUN_0041c550();
    if (local_38 != '\0') {
      FUN_00401829(1,0);
    }
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0046abe3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::W6BA237A4>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046ac29(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int **)(unaff_EBP + 8) != (int *)0x0) {
    (**(code **)(**(int **)(unaff_EBP + 8) + 4))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0046ac41(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W76FAFBE0::WAD5067CC::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0046ac5e(undefined4 *param_1)

{
  *param_1 = W76FAFBE0::WAD5067CC::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0046ac65(undefined4 *param_1)

{
  param_1[1] = 0;
  param_1[2] = 0;
  *param_1 = W47457227::W42261935::vftable;
  FUN_004382a5(param_1 + 3);
  return param_1;
}



undefined4 __thiscall FUN_0046ac98(undefined4 param_1_00,byte param_1)

{
  FUN_0046acb4();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0046acb4(undefined4 *param_1)

{
  *param_1 = W47457227::W42261935::vftable;
  FUN_0046ae17();
  FUN_0044237a(param_1 + 3);
  FUN_0046afce();
  return;
}



void Catch_All_0046acf8(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



int __fastcall FUN_0046ad3e(int param_1)

{
  return *(int *)(param_1 + 0x1c) - *(int *)(param_1 + 0x18) >> 3;
}



undefined4 * __thiscall FUN_0046ad48(int param_1_00,undefined4 *param_1,uint param_2)

{
  undefined4 *puVar1;
  
  if ((param_2 != 0) &&
     (param_2 <= (uint)(*(int *)(param_1_00 + 0x1c) - *(int *)(param_1_00 + 0x18) >> 3))) {
    if ((uint)(*(int *)(param_1_00 + 0x1c) - *(int *)(param_1_00 + 0x18) >> 3) <= param_2 - 1) {
      FUN_00a3fb10();
    }
    puVar1 = (undefined4 *)(*(int *)(param_1_00 + 0x18) + (param_2 - 1) * 8);
    *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  FUN_0046b01d();
  return param_1;
}



void FUN_0046adaf(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  uint uVar2;
  undefined4 uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar2 = 0;
  }
  else {
    uVar2 = *(int *)(in_EAX + 0x14) - iVar1 >> 3;
  }
  if ((uint)(*(int *)(in_EAX + 0x10) - iVar1 >> 3) < uVar2) {
    uVar3 = FUN_00478fca(param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar3;
  }
  else {
    FUN_0046e65a();
    FUN_0044d397(&local_10,param_1,local_10,local_c);
  }
  return;
}



void FUN_0046ae17(void)

{
  undefined4 in_EAX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046ae53(in_EAX,&local_14,local_14,local_10,local_c,local_8);
  return;
}



int FUN_0046ae53(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  int local_8;
  
  iVar3 = param_1;
  FUN_0046e65a();
  FUN_0046e65a();
  cVar4 = FUN_0041c034();
  if (cVar4 != '\0') {
    iVar1 = *(int *)(param_1 + 0x10);
    iVar2 = *(int *)(param_2 + 4);
    param_1 = local_8;
    if (local_8 != iVar1) {
      do {
        FUN_005d11c9((iVar2 - local_8) + param_1);
        param_1 = param_1 + 8;
      } while (param_1 != iVar1);
    }
    FUN_0043a4e8(*(undefined4 *)(iVar3 + 0x10));
    *(int *)(iVar3 + 0x10) = iVar2 + (iVar1 - local_8 >> 3) * 8;
  }
  return param_2;
}



void __fastcall FUN_0046aed6(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 8) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 << 3);
  return;
}



void __fastcall FUN_0046af22(undefined4 *param_1)

{
  *param_1 = W47457227::W1E04FC9F::vftable;
  return;
}



undefined4 * __thiscall FUN_0046af29(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W47457227::W1E04FC9F::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0046af46(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0xc);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[1] = 0;
    puVar2[2] = 0;
    *puVar2 = W47457227::W9031ECB8::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0046b073(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 __thiscall FUN_0046afb2(undefined4 param_1_00,byte param_1)

{
  FUN_0046afce();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0046afce(undefined4 *param_1)

{
  *param_1 = W47457227::WC015BA19::vftable;
  FUN_005d1159();
  if (param_1[2] != 0) {
    FUN_0040127a();
  }
  *param_1 = W47457227::W1E04FC9F::vftable;
  return;
}



void Catch_All_0046b013(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_0046b01d(int param_1)

{
  int *unaff_EBX;
  int *piVar1;
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x46b029;
  local_14 = 0;
  piVar1 = (int *)(param_1 + 4);
  if (*piVar1 == 0) {
    FUN_0046af46(local_18);
    local_8 = 0;
    FUN_005d11c9(piVar1);
    local_8 = 0xffffffff;
    if (local_14 != 0) {
      FUN_0040127a();
    }
  }
  *unaff_EBX = *piVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 8);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0046b073(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::W9031ECB8>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046b0b9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_0046b0d0(undefined4 param_1)

{
  FUN_0046b01d();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_0046b0e8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined param_5)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x20);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[1] = 0;
    puVar2[2] = 0;
    puVar2[4] = param_2;
    puVar2[5] = param_3;
    puVar2[6] = param_4;
    *puVar2 = W47457227::W450960C7::vftable;
    *(undefined *)(puVar2 + 7) = param_5;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0046bdb5(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0046b16c(undefined4 *param_1,undefined4 param_2,undefined param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x2c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[1] = 0;
    puVar2[2] = 0;
    *puVar2 = W47457227::W0E7020C2::vftable;
    FUN_00b9af20(puVar2 + 3);
    *(undefined *)(puVar2 + 10) = param_3;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0046be12(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 __thiscall FUN_0046b1f8(undefined4 param_1_00,byte param_1)

{
  FUN_00468539(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0046b215(void)

{
  int iVar1;
  int **ppiVar2;
  int unaff_EBX;
  int *unaff_EDI;
  int local_24;
  
  iVar1 = (**(code **)(*unaff_EDI + 8))();
  if (iVar1 != 0) {
    ppiVar2 = (int **)(**(code **)(*unaff_EDI + 0xc))();
    (**(code **)(**ppiVar2 + 0x10))();
    if (local_24 != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_0043c023(unaff_EBX + 8);
  }
  return;
}



void __thiscall FUN_0046b292(int param_1_00,int param_1)

{
  int iStack_3c;
  undefined *puStack_38;
  uint uStack_34;
  int *local_28;
  int local_24;
  undefined4 local_20;
  undefined4 local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e902;
  local_14 = ExceptionList;
  uStack_34 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_14;
  local_1c = *(undefined4 *)(param_1 + 0x28);
  local_20 = *(undefined4 *)(param_1 + 0x24);
  local_28 = &iStack_3c;
  iStack_3c = param_1_00;
  puStack_38 = (undefined *)param_1_00;
  FUN_0046bd3c();
  FUN_00465be3(&local_28);
  local_c = 0;
  puStack_38 = (undefined *)local_28;
  iStack_3c = 0x46b2fc;
  FUN_0046b215();
  puStack_38 = (undefined *)(param_1_00 + 4);
  iStack_3c = 0x46b309;
  FUN_005d11c9();
  local_c = 0xffffffff;
  if (local_24 != 0) {
    puStack_38 = (undefined *)0x46b31b;
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0046b32f(int param_1_00,int param_1)

{
  int aiStack_2c [5];
  undefined local_18 [4];
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x46b33b;
  local_14 = aiStack_2c;
  aiStack_2c[0] = param_1_00;
  FUN_00468655();
  FUN_00443a80(local_18,*(undefined4 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x14),
               *(undefined4 *)(param_1 + 0x18));
  local_8 = 0;
  aiStack_2c[0] = param_1_00 + 4;
  FUN_005d11c9();
  local_8 = 0xffffffff;
  if (local_14 != (int *)0x0) {
    aiStack_2c[0] = 0x46b382;
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0046b38a(int param_1_00,int param_1)

{
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x46b396;
  FUN_0043bfa5(local_18,*(undefined4 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x14),
               *(undefined4 *)(param_1 + 0x18));
  local_8 = 0;
  FUN_005d11c9(param_1_00 + 4);
  local_8 = 0xffffffff;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0046b3d8(int param_1_00,int param_1)

{
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x46b3e4;
  FUN_0046b0e8(local_18,*(undefined4 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x14),
               *(undefined4 *)(param_1 + 0x18),*(undefined *)(param_1 + 0x1c));
  local_8 = 0;
  FUN_005d11c9(param_1_00 + 4);
  local_8 = 0xffffffff;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0046b42f(int param_1)

{
  undefined4 *puVar1;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x46b43b;
  puVar1 = (undefined4 *)
           FUN_0046f44e(local_20,*(undefined8 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x18),
                        *(undefined4 *)(param_1 + 0x1c),*(undefined *)(param_1 + 0x20));
  local_8 = 0;
  local_18 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0046b4ab(int param_1)

{
  undefined4 uVar1;
  undefined local_34 [28];
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x46b4b7;
  uVar1 = FUN_00468670(local_34);
  local_8 = 0;
  FUN_00467341(local_18,uVar1);
  local_8._0_1_ = 1;
  FUN_005d11c9(param_1 + 4);
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0046b506(int param_1)

{
  undefined4 uVar1;
  undefined local_34 [28];
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x46b512;
  uVar1 = FUN_00468740(local_34);
  local_8 = 0;
  FUN_0046752c(local_18,uVar1);
  local_8._0_1_ = 1;
  FUN_005d11c9(param_1 + 4);
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0046b561(int param_1_00,int param_1)

{
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x46b56d;
  FUN_0046f52f(local_18,*(undefined4 *)(param_1 + 0xc));
  local_8 = 0;
  FUN_005d11c9(param_1_00 + 4);
  local_8 = 0xffffffff;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0046b5a5(int param_1)

{
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x46b5b1;
  FUN_0046af46(local_18);
  local_8 = 0;
  FUN_005d11c9(param_1 + 4);
  local_8 = 0xffffffff;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  return;
}



void __thiscall FUN_0046b5e2(int param_1_00,int *param_1)

{
  int **ppiVar1;
  int unaff_EDI;
  undefined4 uStack_48;
  undefined4 uStack_44;
  int iStack_40;
  undefined *puStack_3c;
  undefined4 uStack_38;
  undefined4 *puStack_34;
  undefined local_28 [16];
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c28ff2;
  local_14 = ExceptionList;
  puStack_34 = (undefined4 *)(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  ExceptionList = &local_14;
  uStack_38 = 1;
  puStack_3c = local_28;
  iStack_40 = 0x46b620;
  ppiVar1 = (int **)(**(code **)(*param_1 + 0xc))();
  local_14 = (void *)0x0;
  uStack_44 = 0x46b62d;
  iStack_40 = param_1_00;
  (**(code **)(**ppiVar1 + 0x10))();
  uStack_18 = 0xffffffff;
  if (unaff_EDI != 0) {
    uStack_44 = 0x46b63f;
    FUN_0040127a();
  }
  puStack_34 = &uStack_48;
  uStack_48 = *(undefined4 *)(param_1_00 + 4);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 8);
}



void __thiscall FUN_0046b6c3(int param_1_00,int *param_1)

{
  int **ppiVar1;
  int iStack_30;
  undefined local_28 [16];
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c22d92;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  ppiVar1 = (int **)(**(code **)(*param_1 + 0xc))(local_28,1,DAT_0323f878 ^ (uint)&stack0xffffffb0);
  local_14 = (void *)0x0;
  (**(code **)(**ppiVar1 + 0x10))(param_1_00);
  uStack_18 = 0xffffffff;
  if (iStack_30 != 0) {
    FUN_0040127a();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 8);
}



void FUN_0046b8b4(int param_1)

{
  undefined *puStack_4c;
  undefined *puStack_48;
  uint uStack_44;
  undefined **local_30;
  undefined local_2c [4];
  undefined *local_28;
  undefined4 local_20;
  undefined4 local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5cafa;
  local_14 = ExceptionList;
  uStack_44 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_14;
  local_1c = *(undefined4 *)(param_1 + 0x28);
  local_20 = *(undefined4 *)(param_1 + 0x24);
  local_30 = &puStack_4c;
  FUN_0046bd3c();
  FUN_0046bfdc(&local_30);
  local_c = 0;
  puStack_48 = (undefined *)local_30;
  puStack_4c = (undefined *)0x46b91f;
  FUN_0046b215();
  local_28 = (undefined *)local_30;
  puStack_48 = local_2c;
                    // WARNING: Subroutine does not return
  puStack_4c = &UNK_0046b938;
  FUN_0043c023();
}



void FUN_0046b977(void)

{
  undefined4 local_28;
  undefined local_24 [4];
  undefined4 local_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5c3aa;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_0046f90c(&local_28,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_c = 0;
  FUN_0046b215(local_28);
  local_20 = local_28;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_24);
}



void FUN_0046ba19(void)

{
  undefined4 local_28;
  undefined local_24 [4];
  undefined4 local_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5c3aa;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_0046fa8e(&local_28,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_c = 0;
  FUN_0046b215(local_28);
  local_20 = local_28;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_24);
}



void __thiscall FUN_0046babb(int param_1_00,int *param_1)

{
  int **ppiVar1;
  int unaff_EDI;
  undefined4 uStack_48;
  undefined4 uStack_44;
  int iStack_40;
  undefined *puStack_3c;
  undefined4 uStack_38;
  undefined4 *puStack_34;
  undefined local_28 [16];
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c28ff2;
  local_14 = ExceptionList;
  puStack_34 = (undefined4 *)(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  ExceptionList = &local_14;
  uStack_38 = 1;
  puStack_3c = local_28;
  iStack_40 = 0x46baf9;
  ppiVar1 = (int **)(**(code **)(*param_1 + 0xc))();
  local_14 = (void *)0x0;
  uStack_44 = 0x46bb06;
  iStack_40 = param_1_00;
  (**(code **)(**ppiVar1 + 0x10))();
  uStack_18 = 0xffffffff;
  if (unaff_EDI != 0) {
    uStack_44 = 0x46bb18;
    FUN_0040127a();
  }
  puStack_34 = &uStack_48;
  uStack_48 = *(undefined4 *)(param_1_00 + 4);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 8);
}



void __thiscall FUN_0046bb77(int param_1_00,int param_1)

{
  undefined4 uVar1;
  undefined4 local_54;
  int local_50;
  uint uStack_4c;
  undefined4 local_40;
  undefined4 local_3c;
  int local_38;
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c2c630;
  local_14 = ExceptionList;
  uStack_4c = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_14;
  local_54 = 0;
  local_50 = 0;
  local_c = 0;
  uVar1 = FUN_0046868b(local_34);
  local_c._1_3_ = (undefined3)((uint)local_c >> 8);
  local_40 = CONCAT31((int3)((uint)&local_54 >> 8),*(undefined *)(param_1 + 0x40));
  local_c._0_1_ = 2;
  FUN_0046fb84(&local_3c,uVar1,local_40);
  local_50 = 0;
  local_54 = 1;
  local_c = CONCAT31(local_c._1_3_,4);
  FUN_00401829();
  local_50 = local_3c;
  local_54 = 0x46bc05;
  FUN_0046b215();
  local_50 = param_1_00 + 4;
  local_54 = 0x46bc12;
  FUN_005d11c9();
  local_c = 0xffffffff;
  if (local_38 != 0) {
    local_50 = 0x46bc24;
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0046bc38(int param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined local_3c [28];
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x46bc44;
  uVar1 = FUN_004686a6(local_3c);
  local_8 = 0;
  puVar2 = (undefined4 *)FUN_0046b16c(local_20,uVar1,*(undefined *)(param_1 + 0x28));
  local_8 = CONCAT31(local_8._1_3_,1);
  local_18 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0046bcc0(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined local_3c [28];
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x46bccc;
  uVar1 = FUN_00468740(local_3c);
  local_8 = 0;
  puVar2 = (undefined4 *)FUN_0046fd22(local_20,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  local_18 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



undefined4 * __fastcall FUN_0046bd3c(int param_1,undefined4 *param_2)

{
  undefined4 *in_EAX;
  
  if ((-(uint)(*(int *)(param_1 + 0x10) != 0) & 0x7a491c) == 0) {
    *param_2 = 0;
    param_2[1] = in_EAX[1];
    *param_2 = *in_EAX;
  }
  else {
    FUN_0046bd69(in_EAX);
  }
  return param_2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0046bd69(uint *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  uint uVar2;
  undefined4 *puVar3;
  uint *extraout_ECX;
  undefined4 *unaff_ESI;
  undefined local_18 [16];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x46bd75;
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a();
    local_8 = 0;
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  puVar3 = (undefined4 *)(**(code **)((uVar2 & 0xfffffffe) + 4))(local_18,param_1_00 + 2,param_1);
  uVar1 = puVar3[1];
  *unaff_ESI = *puVar3;
  unaff_ESI[1] = uVar1;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0046bdb5(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::W450960C7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046bdfb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0046be12(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::W0E7020C2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046be58(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall
FUN_0046be9b(int param_1_00,int *param_2_00,uint param_1,int *param_2,undefined4 *param_3)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  char cVar5;
  undefined local_e4 [140];
  undefined local_58 [28];
  int *local_3c;
  undefined4 *local_38;
  int local_34;
  undefined local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xd8;
  local_8 = 0x46beaa;
  local_3c = param_2;
  local_38 = param_3;
  cVar5 = '\x01' - (*(int *)(param_1_00 + 0x14) - 4U < param_1);
  iVar3 = -1;
  *param_2_00 = -1;
  local_34 = param_1_00;
  if (cVar5 != '\0') {
    iVar2 = FUN_0046bfb4(&DAT_00f64c2c,param_1);
    cVar5 = iVar2 != -1;
    *param_2_00 = iVar2;
  }
  if (cVar5 != '\0') {
    iVar3 = FUN_0046bfb4(&DAT_00f64c34,*param_2_00 + 2);
    cVar5 = iVar3 != -1;
  }
  local_18 = 7;
  FUN_0040180b(0);
  local_8 = 0;
  if (cVar5 != '\0') {
    iVar2 = *param_2_00;
    *local_3c = (iVar3 - iVar2) + 1;
    uVar4 = FUN_0041b008(local_58,*param_2_00 + 2,(iVar3 - iVar2) + -2);
    local_8._0_1_ = 1;
    FID_conflict_assign(uVar4,0,0xffffffff);
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_00401829(1,0);
  }
  puVar1 = local_38;
  *local_38 = 0;
  if (cVar5 != '\0') {
    FUN_0040c97f(local_e4,local_30);
    local_8._0_1_ = 2;
    FUN_00420cfc(local_e4,puVar1);
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_0040785a();
  }
  FUN_00401829(1,0);
  FUN_00a421fb();
  return;
}



void FUN_0046bfb4(short *param_1,undefined4 param_2)

{
  short sVar1;
  short *psVar2;
  
  psVar2 = param_1;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  FUN_00420f3f(param_1,param_2,(int)psVar2 - (int)(param_1 + 1) >> 1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0046bfdc(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_18;
  
  puVar2 = (undefined4 *)operator_new(0x2c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_0046ac65(puVar2);
    *puVar2 = W47457227::WD75686CF::vftable;
    puVar2[10] = param_3;
    puVar2[9] = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0046c087(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 * __thiscall FUN_0046c065(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W47457227::WD75686CF::vftable;
  FUN_0046acb4();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0046c087(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::WD75686CF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046c0cd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_0046c7e8(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x46c800;
  FUN_0046ca9b();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0046c807;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_0046c16b(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined local_24 [8];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x46c177;
  puVar1 = (undefined4 *)
           FUN_0046d2a9(local_24,*param_1,*(undefined4 *)param_1[6],*param_1,
                        (undefined4 *)param_1[6]);
  local_8 = 0;
  local_1c = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_0046c1d7(undefined4 *param_1_00,undefined4 param_1,undefined *param_2,undefined4 param_3,
            int param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *puVar5;
  int iVar6;
  undefined4 local_54;
  int local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined *local_3c;
  undefined4 local_38;
  int local_34;
  undefined local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x46c1e3;
  local_48 = param_1;
  local_3c = param_2;
  local_4c = param_3;
  local_34 = param_4;
  FUN_0046ca37(&local_34);
  local_34 = param_1_00[6];
  local_38 = *param_1_00;
  puVar5 = &local_54;
  cVar4 = FUN_006b8eca();
  if ((cVar4 != '\0') || (param_4 < *(int *)(local_50 + 0x10))) {
    local_40 = param_1_00[6];
    local_44 = *param_1_00;
    puVar5 = &local_44;
  }
  local_38 = *puVar5;
  local_34 = puVar5[1];
  local_40 = param_1_00[6];
  local_44 = *param_1_00;
  cVar4 = FUN_006b8eca();
  if (cVar4 == '\0') {
    iVar6 = FUN_00470c05();
    uVar1 = *(undefined4 *)(iVar6 + 8);
    uVar2 = *(undefined4 *)(iVar6 + 0xc);
    iVar6 = FUN_00470c05();
    uVar3 = local_4c;
    local_34 = *(int *)(iVar6 + 0x10);
    cVar4 = FUN_00b98c70(uVar1,uVar2);
    if (cVar4 == '\0') {
      FUN_00b940e0(0x974c26a3);
    }
    local_18 = 7;
    FUN_0040180b(0);
    local_8 = 0;
    if (cVar4 != '\0') {
      cVar4 = FUN_0046d326(uVar3,local_34,local_30);
      if (cVar4 != '\0') {
        *local_3c = 0;
        FUN_00412a6f(local_30);
        FUN_00401829(1,0);
        goto LAB_0046c2f6;
      }
      FUN_00b940e0(0x4a8e0c4c);
    }
    FUN_00401829(1,0);
  }
  *local_3c = 0;
LAB_0046c2f6:
  FUN_00a421fb();
  return;
}



void FUN_0046c31d(undefined4 param_1)

{
  int in_EAX;
  undefined *unaff_ESI;
  int local_10;
  undefined4 local_c;
  
  local_10 = *(int *)(in_EAX + 0x28);
  if (local_10 == 0) {
    *unaff_ESI = 0;
  }
  else {
    local_c = 0;
    FUN_0046c1d7(in_EAX,unaff_ESI,&local_10,param_1);
  }
  return;
}



char FUN_0046c357(undefined4 param_1,int *param_2)

{
  char cVar1;
  int iVar2;
  int iStack_3c;
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c378ed;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00452943();
  local_c = 0;
  cVar1 = FUN_0046c4ec();
  if (cVar1 == '\0') {
    cVar1 = '\0';
LAB_0046c3d8:
    FUN_00b940e0();
  }
  else {
    FUN_0046c16b();
    cVar1 = FUN_0046c5d7();
    if (cVar1 == '\0') goto LAB_0046c3d8;
  }
  if (cVar1 != '\0') {
    cVar1 = (**(code **)(*param_2 + 0xc))();
    if (cVar1 == '\0') {
      cVar1 = '\0';
    }
    else {
      iVar2 = FUN_00b74bf0();
      cVar1 = iVar2 == 3;
      if ((bool)cVar1) {
        FUN_00b74bf0();
        FUN_00b72fb0();
        local_c._0_1_ = 1;
        FUN_004fe47e();
        local_c = (uint)local_c._1_3_ << 8;
        if (iStack_3c != 0) {
          FUN_0040127a();
        }
        cVar1 = FUN_00bb10c0(param_2,0x2000);
        if (cVar1 != '\0') goto LAB_0046c4c6;
      }
    }
    FUN_00b940e0();
  }
LAB_0046c4c6:
  local_c = 0xffffffff;
  FUN_007d4ace();
  ExceptionList = pvStack_18;
  return cVar1;
}



char FUN_0046c4ec(void)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int *unaff_ESI;
  undefined auStack_4c [8];
  ushort *puStack_44;
  undefined **ppuStack_40;
  undefined local_3c [8];
  undefined *local_34;
  undefined4 uStack_30;
  undefined local_24 [8];
  ushort local_1c [4];
  undefined *local_14;
  uint local_10;
  uint local_c;
  char local_5;
  
  uStack_30 = 0x46c4fd;
  FUN_007d4af6();
  uStack_30 = 8;
  local_14 = local_3c;
  local_34 = local_24;
  local_3c[0] = 0;
  ppuStack_40 = (undefined **)0x46c517;
  local_5 = (**(code **)(*unaff_ESI + 0xc))();
  if (local_5 == '\0') {
    ppuStack_40 = (undefined **)0x7d603317;
    local_5 = '\0';
  }
  else {
    ppuStack_40 = (undefined **)0x46c532;
    iVar1 = FUN_00b74bf0();
    local_5 = '\x01' - (iVar1 != 1);
    if (local_5 != '\0') goto LAB_0046c54e;
    ppuStack_40 = (undefined **)0x5c28c9a9;
  }
  puStack_44 = (ushort *)0x46c54d;
  FUN_00b940e0();
LAB_0046c54e:
  local_10 = 0;
  if (local_5 != '\0') {
    ppuStack_40 = (undefined **)0x46c560;
    local_10 = FUN_00b74bf0();
  }
  for (local_c = 0; (local_5 != '\0' && (local_c < local_10)); local_c = local_c + 1) {
    ppuStack_40 = (undefined **)0x6;
    local_14 = auStack_4c;
    puStack_44 = local_1c;
    auStack_4c[0] = 0;
    local_5 = (**(code **)(*unaff_ESI + 0xc))();
    if (local_5 == '\0') {
      ppuStack_40 = (undefined **)0xe811e679;
      puStack_44 = (ushort *)0x46c5a1;
      FUN_00b940e0();
    }
    else {
      local_14 = (undefined *)(uint)(ushort)(local_1c[0] << 8 | local_1c[0] >> 8);
      ppuStack_40 = (undefined **)0x46c5ba;
      uVar2 = FUN_00b74bf0();
      ppuStack_40 = &local_14;
      puStack_44 = (ushort *)0x46c5c5;
      puVar3 = (undefined4 *)FUN_0046c834();
      *puVar3 = uVar2;
    }
  }
  return local_5;
}



char FUN_0046c5d7(undefined4 param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined auStack_6c [8];
  undefined *puStack_64;
  undefined4 uStack_60;
  undefined local_5c [8];
  undefined *local_54;
  undefined4 uStack_50;
  undefined4 uStack_30;
  undefined local_28 [12];
  undefined local_1c [8];
  undefined *local_14;
  uint local_10;
  uint local_c;
  char local_5;
  
  uStack_50 = 0x46c5e8;
  FUN_0046c810();
  uStack_50 = 8;
  local_14 = local_5c;
  local_54 = local_1c;
  local_5c[0] = 0;
  uStack_60 = 0x46c606;
  local_5 = (**(code **)(*param_2 + 0xc))();
  if (local_5 == '\0') {
    uStack_60 = 0x1a02f714;
    local_5 = false;
  }
  else {
    uStack_60 = 0x46c621;
    iVar1 = FUN_00b74bf0();
    local_5 = iVar1 == 2;
    if ((bool)local_5) goto LAB_0046c63d;
    uStack_60 = 0xd592bda9;
  }
  puStack_64 = (undefined *)0x46c63c;
  FUN_00b940e0();
LAB_0046c63d:
  local_10 = 0;
  if (local_5 != '\0') {
    uStack_60 = 0x46c64d;
    local_10 = FUN_00b74bf0();
  }
  for (local_c = 0; (local_5 != '\0' && (local_c < local_10)); local_c = local_c + 1) {
    uStack_60 = 0xc;
    local_14 = auStack_6c;
    puStack_64 = local_28;
    auStack_6c[0] = 0;
    local_5 = (**(code **)(*param_2 + 0xc))();
    if (local_5 == '\0') {
      uStack_60 = 0xb7a462ea;
      puStack_64 = (undefined *)0x46c68c;
      FUN_00b940e0();
    }
    else {
      uStack_60 = 0x46c697;
      local_14 = (undefined *)FUN_00b74bf0();
      uStack_60 = 0x46c6a2;
      uVar2 = FUN_00b74bf0();
      uStack_60 = 0x46c6b0;
      uVar3 = FUN_00b74bf0();
      uStack_60 = param_1;
      puStack_64 = (undefined *)0x46c6be;
      puVar4 = (undefined4 *)FUN_0046c766();
      *puVar4 = uVar2;
      puVar4[1] = 0;
      puVar4[2] = uVar3;
      puVar4[3] = uStack_30;
    }
  }
  return local_5;
}



void FUN_0046c6de(void)

{
  char *in_EAX;
  char *unaff_ESI;
  
  if (*unaff_ESI == '\0') {
    if (*in_EAX != '\0') {
      FUN_0046cc2f();
    }
  }
  else if (*in_EAX == '\0') {
    *unaff_ESI = '\0';
  }
  else {
    *(undefined4 *)(unaff_ESI + 8) = *(undefined4 *)(in_EAX + 8);
    *(undefined4 *)(unaff_ESI + 0xc) = *(undefined4 *)(in_EAX + 0xc);
  }
  return;
}



void __fastcall FUN_0046c70b(undefined4 *param_1)

{
  *param_1 = WE9980253::W0E171951<wchar_t,unsigned_int>::vftable;
  return;
}



int FUN_0046c766(undefined4 *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  int *unaff_EBX;
  int local_38 [2];
  undefined4 local_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  int local_c;
  
  FUN_0046ca37(unaff_EBX);
  local_14 = param_1[6];
  local_18 = *param_1;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*unaff_EBX < *(int *)(local_c + 0x10))) {
    local_20 = 0;
    local_1c = 0;
    local_18 = 0;
    local_38[0] = *unaff_EBX;
    local_30 = 0;
    uStack_2c = 0;
    uStack_28 = 0;
    uStack_24 = local_14;
    puVar2 = (undefined4 *)FUN_0046c8d8(&local_18,local_38,local_10,local_c);
    local_10 = *puVar2;
    local_c = puVar2[1];
  }
  iVar3 = FUN_00470c05();
  return iVar3 + 8;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0046c7e8(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x46c800;
  FUN_0046ca9b();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0046c807;
  FUN_00a3f6a1();
}



void FUN_0046c810(void)

{
  int *piVar1;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EDI + 0x18);
  FUN_0046ca69(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(unaff_EDI + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



int FUN_0046c834(ushort *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 *unaff_EBX;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 *local_14;
  undefined local_10 [4];
  undefined4 *local_c;
  
  local_c = (undefined4 *)unaff_EBX[6];
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x15) == '\0') {
    puVar3 = (undefined4 *)local_c[1];
    do {
      if (*(ushort *)(puVar3 + 3) < *param_1) {
        puVar2 = (undefined4 *)puVar3[2];
      }
      else {
        puVar2 = (undefined4 *)*puVar3;
        local_c = puVar3;
      }
      puVar3 = puVar2;
    } while (*(char *)((int)puVar2 + 0x15) == '\0');
  }
  local_1c = unaff_EBX[6];
  local_14 = local_c;
  local_20 = *unaff_EBX;
  local_18 = local_20;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*param_1 < *(ushort *)(local_c + 3))) {
    local_1c = 0;
    local_20 = CONCAT22(local_20._2_2_,*param_1);
    puVar3 = (undefined4 *)FUN_0046cacf(local_10,&local_20,local_18,local_14);
    local_18 = *puVar3;
    local_14 = (undefined4 *)puVar3[1];
  }
  iVar4 = FUN_006badde();
  return iVar4 + 4;
}



undefined4 * FUN_0046c8d8(undefined4 *param_1,int *param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int in_EAX;
  int iVar4;
  undefined4 *puVar5;
  bool bVar6;
  undefined4 uVar7;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar3 = FUN_006b8eca();
    if (cVar3 == '\0') {
      cVar3 = FUN_006b8eca();
      if (cVar3 == '\0') {
        iVar4 = *param_2;
        iVar1 = *(int *)(param_4 + 0x10);
        bVar6 = SBORROW4(iVar1,iVar4);
        iVar2 = iVar1 - iVar4;
        if (iVar4 < iVar1) {
          iVar4 = FUN_007a4650();
          iVar2 = *param_2;
          if (*(int *)(*(int *)(iVar4 + 4) + 0x10) < iVar2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x29) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_0046c8fa;
          }
          bVar6 = SBORROW4(*(int *)(param_4 + 0x10),iVar2);
          iVar2 = *(int *)(param_4 + 0x10) - iVar2;
        }
        if (bVar6 != iVar2 < 0) {
          FUN_0046e6b6();
          cVar3 = FUN_006b8eca();
          if ((cVar3 != '\0') || (*param_2 < *(int *)(param_4 + 0x10))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x29) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_0046c8fa;
          }
        }
LAB_0046ca15:
        puVar5 = (undefined4 *)FUN_0046cc46(in_EAX,param_2);
        *param_1 = *puVar5;
        param_1[1] = puVar5[1];
        return param_1;
      }
      if (*param_2 <= *(int *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0x10)) goto LAB_0046ca15;
      uVar7 = 0;
      goto LAB_0046c8fa;
    }
    if (*(int *)(param_4 + 0x10) <= *param_2) goto LAB_0046ca15;
  }
  uVar7 = 1;
LAB_0046c8fa:
  FUN_0046cda2(param_1,uVar7,param_2);
  return param_1;
}



void FUN_0046ca37(int *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x29) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((int)puVar2[4] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x29) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



void FUN_0046ca69(int param_1)

{
  if (*(char *)(param_1 + 0x29) == '\0') {
    FUN_0046ca69(*(undefined4 *)(param_1 + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_0046ca9b(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_0046cd07(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



undefined4 * FUN_0046cacf(undefined4 *param_1,ushort *param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  bool bVar4;
  undefined4 uVar5;
  
  if (*(int *)(in_EAX + 0x1c) == 0) {
    param_4 = *(int *)(in_EAX + 0x18);
  }
  else {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 != '\0') {
        param_4 = *(int *)(*(int *)(in_EAX + 0x18) + 8);
        if (*param_2 <= *(ushort *)(param_4 + 0xc)) goto LAB_0046cc0d;
        uVar5 = 0;
        goto LAB_0046caf1;
      }
      bVar4 = *(ushort *)(param_4 + 0xc) < *param_2;
      if (*param_2 < *(ushort *)(param_4 + 0xc)) {
        iVar2 = FUN_005d021f();
        if (*param_2 <= *(ushort *)(*(int *)(iVar2 + 4) + 0xc)) {
          bVar4 = *(ushort *)(param_4 + 0xc) < *param_2;
          goto LAB_0046cbbe;
        }
        cVar1 = *(char *)(*(int *)(param_4 + 8) + 0x15);
      }
      else {
LAB_0046cbbe:
        if (!bVar4) {
LAB_0046cc0d:
          puVar3 = (undefined4 *)FUN_0046ceef(in_EAX,param_2);
          *param_1 = *puVar3;
          param_1[1] = puVar3[1];
          return param_1;
        }
        FUN_00448b61();
        cVar1 = FUN_006b8eca();
        if ((cVar1 == '\0') && (*(ushort *)(param_4 + 0xc) <= *param_2)) goto LAB_0046cc0d;
        cVar1 = *(char *)(*(int *)(param_4 + 8) + 0x15);
      }
      if (cVar1 == '\0') {
        uVar5 = 1;
      }
      else {
        uVar5 = 0;
      }
      goto LAB_0046caf1;
    }
    if (*(ushort *)(param_4 + 0xc) <= *param_2) goto LAB_0046cc0d;
  }
  uVar5 = 1;
LAB_0046caf1:
  FUN_004650b9(param_1,uVar5,param_4,param_2);
  return param_1;
}



void __fastcall FUN_0046cc2f(undefined4 *param_1,undefined *param_2)

{
  if ((undefined4 *)(param_2 + 8) != (undefined4 *)0x0) {
    *(undefined4 *)(param_2 + 8) = *param_1;
    *(undefined4 *)(param_2 + 0xc) = param_1[1];
  }
  *param_2 = 1;
  return;
}



void FUN_0046cc46(undefined4 *param_1,int *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x29) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (int)local_c[4]);
      if (*param_2 < (int)local_c[4]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x29) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_0046ccb9;
    }
    FUN_007a4650();
  }
  uVar3 = local_8;
  if (*param_2 <= (int)local_10[4]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_0046ccb9:
  puVar2 = (undefined4 *)FUN_0046cda2(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void FUN_0046cd07(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_0046c810();
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_0046e6b6();
    FUN_0046cfb7();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0046cda2(int **param_1_00,undefined4 *param_1,char param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x46cdae;
  if (0xaaaaaa8 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_0046d26e(unaff_ESI[6],param_1_00,unaff_ESI[6],param_3);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_0046cec7;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_0046cec7;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_0046cec7:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 10) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x28) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 10) == '\0') {
LAB_0046ce83:
        *(undefined *)(piVar1 + 10) = 1;
        *(undefined *)(piVar7 + 10) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x28) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007a3050(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x28) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x28) = 0;
        FUN_005d677b(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 10) == '\0') goto LAB_0046ce83;
    if (piVar8 == (int *)*piVar1) {
      FUN_005d677b(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x28) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x28) = 0;
    FUN_007a3050(unaff_ESI);
  } while( true );
}



void FUN_0046ceef(undefined4 *param_1,ushort *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  local_c = CONCAT31(local_c._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_8[1] + 0x15) == '\0') {
    puVar2 = (undefined4 *)local_8[1];
    do {
      local_8 = puVar2;
      local_c = CONCAT31(local_c._1_3_,*param_2 < *(ushort *)(local_8 + 3));
      if (*param_2 < *(ushort *)(local_8 + 3)) {
        puVar2 = (undefined4 *)*local_8;
      }
      else {
        puVar2 = (undefined4 *)local_8[2];
      }
    } while (*(char *)((int)puVar2 + 0x15) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_8;
  if ((char)local_c != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_0046cf67;
    }
    FUN_005d021f();
  }
  uVar3 = local_c;
  if (*param_2 <= *(ushort *)(local_10 + 3)) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_0046cf67:
  puVar2 = (undefined4 *)FUN_004650b9(&local_1c,uVar3,local_8,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x0046d0a2)
// WARNING: Removing unreachable block (ram,0x0046d0b2)
// WARNING: Removing unreachable block (ram,0x0046d0bb)
// WARNING: Removing unreachable block (ram,0x0046d0be)
// WARNING: Removing unreachable block (ram,0x0046d0ae)
// WARNING: Removing unreachable block (ram,0x0046d0cb)
// WARNING: Removing unreachable block (ram,0x0046d0db)
// WARNING: Removing unreachable block (ram,0x0046d0e6)
// WARNING: Removing unreachable block (ram,0x0046d0e2)
// WARNING: Removing unreachable block (ram,0x0046d0d6)
// WARNING: Removing unreachable block (ram,0x0046d0e9)

void FUN_0046cfb7(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x46cfc3;
  if (*(char *)((int)param_4 + 0x29) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_0046e6b6();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
    if (*(char *)(param_4[2] + 0x29) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x29) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x29) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 10) != '\x01') {
LAB_0046d21a:
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_0046d1ce:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 10) != '\x01'))
  goto LAB_0046d216;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 10) == '\0') {
      *(undefined *)(ppiVar4 + 10) = 1;
      *(undefined *)(ppiVar3 + 10) = 0;
      FUN_007a3050(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x29) == '\0') {
      if ((*(char *)(*ppiVar4 + 10) != '\x01') || (*(char *)(ppiVar4[2] + 10) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 10) == '\x01') {
          *(undefined *)(*ppiVar4 + 10) = 1;
          *(undefined *)(ppiVar4 + 10) = 0;
          FUN_005d677b(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 10) = *(undefined *)(ppiVar3 + 10);
        *(undefined *)(ppiVar3 + 10) = 1;
        *(undefined *)(ppiVar4[2] + 10) = 1;
        FUN_007a3050(param_1);
        goto LAB_0046d216;
      }
LAB_0046d1c5:
      *(undefined *)(ppiVar4 + 10) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 10) == '\0') {
      *(undefined *)(ppiVar4 + 10) = 1;
      *(undefined *)(ppiVar3 + 10) = 0;
      FUN_005d677b(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x29) == '\0') {
      if ((*(char *)(ppiVar4[2] + 10) == '\x01') && (*(char *)(*ppiVar4 + 10) == '\x01'))
      goto LAB_0046d1c5;
      if (*(char *)(*ppiVar4 + 10) == '\x01') {
        *(undefined *)(ppiVar4[2] + 10) = 1;
        *(undefined *)(ppiVar4 + 10) = 0;
        FUN_007a3050(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 10) = *(undefined *)(ppiVar3 + 10);
      *(undefined *)(ppiVar3 + 10) = 1;
      *(undefined *)(*ppiVar4 + 10) = 1;
      FUN_005d677b(param_1);
LAB_0046d216:
      *(undefined *)(ppiVar5 + 10) = 1;
      goto LAB_0046d21a;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_0046d1ce;
}



void FUN_0046d26e(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  
  puVar1 = (undefined4 *)operator_new(0x30);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar3 = puVar1 + 4;
    for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar3 = *param_4;
      param_4 = param_4 + 1;
      puVar3 = puVar3 + 1;
    }
    *(undefined *)(puVar1 + 10) = 0;
    *(undefined *)((int)puVar1 + 0x29) = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_0046d2a9(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x28);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0046d65c(pvVar2,param_2,param_3,param_4,param_5);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0046efc1(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_0046d326(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x24);
}



int FUN_0046d4e1(uint param_1)

{
  int unaff_ESI;
  
  if ((uint)(*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc)) <= param_1) {
    FUN_00a3fb10();
  }
  return *(int *)(unaff_ESI + 0xc) + param_1;
}



void FUN_0046d4fc(undefined *param_1)

{
  *param_1 = 0;
  return;
}



void FUN_0046d506(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined local_18 [8];
  undefined local_10 [12];
  
  puVar1 = (undefined4 *)FUN_00412721(local_18);
  FUN_0046d56b(local_10,*puVar1,puVar1[1],param_1);
  return;
}



void FUN_0046d537(ushort *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x29) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if (*(ushort *)(puVar2 + 3) < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x29) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



undefined4 __thiscall
FUN_0046d56b(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4
            )

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_c;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *pbStack_8;
  
  local_c = param_1_00;
  pbStack_8 = param_1_00;
  puVar1 = (undefined4 *)
           std::
           basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
           begin(param_1_00,&local_c);
  uVar2 = FUN_00412602(param_2,param_3,*puVar1,puVar1[1]);
  FID_conflict_insert(uVar2,1,param_4);
  uVar3 = param_1;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            (param_1_00,&local_c);
  FUN_00422680(uVar3,uVar2);
  return param_1;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::insert(unsigned
// int,unsigned int,unsigned short)
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::insert(unsigned int,unsigned
// int,wchar_t)
// 
// Library: Visual Studio 2008 Release

int __thiscall
FID_conflict_insert(int param_1_00,undefined4 *param_1,uint param_2,undefined4 param_3)

{
  uint uVar1;
  char cVar2;
  undefined4 *puVar3;
  int iVar4;
  
  uVar1 = (uint)param_1;
  if (*(uint *)(param_1_00 + 0x14) < param_1) {
    std::_String_base::_Xran();
  }
  if (-*(int *)(param_1_00 + 0x14) - 1U <= param_2) {
    std::_String_base::_Xlen();
  }
  if (param_2 != 0) {
    iVar4 = *(int *)(param_1_00 + 0x14) + param_2;
    cVar2 = FUN_004182d2(iVar4,0);
    if (cVar2 != '\0') {
      puVar3 = (undefined4 *)(param_1_00 + 4);
      param_1 = puVar3;
      if (7 < *(uint *)(param_1_00 + 0x18)) {
        param_1 = (undefined4 *)*puVar3;
        puVar3 = (undefined4 *)*puVar3;
      }
      FUN_00418102((int)puVar3 + (uVar1 + param_2) * 2,
                   (*(uint *)(param_1_00 + 0x18) - uVar1) - param_2,(int)param_1 + uVar1 * 2,
                   *(int *)(param_1_00 + 0x14) - uVar1);
      FID_conflict__Chassign(uVar1,param_2,param_3);
      FUN_0040180b(iVar4);
    }
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0046d65c(int *param_1,undefined4 param_2,undefined4 param_3)

{
  int *piVar1;
  char cVar2;
  int **ppiVar3;
  int iVar4;
  undefined2 *puVar5;
  undefined4 *puVar6;
  undefined4 uVar7;
  int *local_70 [3];
  int local_64;
  int local_60;
  undefined4 local_5c;
  undefined local_58;
  undefined local_54 [32];
  undefined local_34 [8];
  undefined4 local_2c;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x60;
  local_8 = 0x46d668;
  ppiVar3 = (int **)FUN_00418daa(1,0);
  if (ppiVar3 == (int **)0x0) {
    ppiVar3 = (int **)0x0;
  }
  else {
    *ppiVar3 = param_1;
  }
  *param_1 = (int)ppiVar3;
  local_8 = 0;
  iVar4 = FUN_0046e3b9();
  piVar1 = param_1 + 6;
  *piVar1 = iVar4;
  *(undefined *)(iVar4 + 0x29) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  local_70[0] = (int *)FUN_00418daa(1,0);
  if (local_70[0] == (int *)0x0) {
    local_70[0] = (int *)0x0;
  }
  else {
    *local_70[0] = (int)local_70;
  }
  local_64 = 0;
  local_60 = 0;
  local_5c = 0;
  local_58 = 0;
  local_8._0_1_ = 4;
  local_1c = param_2;
  local_14 = 0;
  local_18 = param_3;
  cVar2 = FUN_006b8eca();
  if (cVar2 != '\0') {
    if ((uint)(local_60 - local_64 >> 3) < 2) {
      if ((local_60 - local_64 & 0xfffffff8U) != 0) {
        FUN_0046db6b();
        FUN_004fe47e();
        FUN_0046dc32();
        piVar1 = (int *)param_1[8];
        uVar7 = FUN_004382a5(local_54);
        local_8._0_1_ = 0xb;
        (**(code **)(*piVar1 + 4))(param_1,uVar7);
        FUN_007a7d86();
      }
      local_8 = CONCAT31(local_8._1_3_,2);
      FUN_0044237a(local_70);
      return param_1;
    }
    puVar6 = (undefined4 *)FUN_0046db6b();
    local_2c = *puVar6;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar6 + 1);
  }
  iVar4 = FUN_006badde();
  puVar5 = (undefined2 *)FUN_006badde();
  puVar6 = (undefined4 *)FUN_0046dcab(local_34,*puVar5,*(undefined4 *)(iVar4 + 4),local_14);
  local_2c = *puVar6;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar6 + 1);
}



void __thiscall FUN_0046d8ca(int param_1_00,undefined4 param_1,int param_2)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  undefined local_5;
  
  local_5 = 0;
  FUN_0046da48(&local_5);
  (**(code **)(**(int **)(param_1_00 + 0xc) + 4))(param_1,param_2);
  FUN_0046e65a();
  ppiVar2 = (int **)FUN_0046e61f();
  piVar1 = ppiVar2[1];
  if (*ppiVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = **ppiVar2;
  }
  if (*(int **)(iVar3 + 0x10) <= piVar1) {
    FUN_00a3fb10();
  }
  *(undefined *)piVar1 = 1;
  (**(code **)(**(int **)(param_1_00 + 0x14) + 4))(param_1,param_2);
  if (*(int *)(param_2 + 0x10) != *(int *)(param_2 + 0xc)) {
    *(int *)(param_2 + 0x10) = *(int *)(param_2 + 0x10) + -1;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_0046da20(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x46da38;
  FUN_0046dd41();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0046da3f;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void thunk_FUN_0044237a(undefined4 *param_1)

{
  if (param_1[3] != 0) {
    FUN_0043a4e8(param_1[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0046da20(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x46da38;
  FUN_0046dd41();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0046da3f;
  FUN_00a3f6a1();
}



void FUN_0046da48(undefined *param_1)

{
  int iVar1;
  undefined *puVar2;
  int in_EAX;
  uint uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = *(int *)(in_EAX + 0x14) - iVar1;
  }
  puVar2 = *(undefined **)(in_EAX + 0x10);
  if ((uint)((int)puVar2 - iVar1) < uVar3) {
    *puVar2 = *param_1;
    *(undefined **)(in_EAX + 0x10) = puVar2 + 1;
  }
  else {
    FUN_0046e65a();
    FUN_0046dd75(&local_10,param_1,local_10,local_c);
  }
  return;
}



int * FUN_0046db6b(void)

{
  int **ppiVar1;
  int *piVar2;
  int iVar3;
  
  ppiVar1 = (int **)FUN_0046de1a();
  piVar2 = *ppiVar1;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    piVar2 = *ppiVar1;
    if (piVar2 == (int *)0x0) {
      iVar3 = 0;
      goto LAB_0046db90;
    }
  }
  iVar3 = *piVar2;
LAB_0046db90:
  if (*(int **)(iVar3 + 0x10) <= ppiVar1[1]) {
    FUN_00a3fb10();
  }
  return ppiVar1[1];
}



void FUN_0046dba4(undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  undefined4 *in_EAX;
  uint uVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  undefined local_10 [12];
  
  uVar1 = in_EAX[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(in_EAX[5] - uVar1) >> 3;
  }
  uVar2 = in_EAX[4];
  if ((uint)((int)(uVar2 - uVar1) >> 3) < uVar3) {
    uVar4 = FUN_00478fca(param_1);
    in_EAX[4] = uVar4;
  }
  else {
    if (uVar2 < uVar1) {
      FUN_00a3fb10();
    }
    FUN_0046e08f(local_10,param_1,*in_EAX,uVar2);
  }
  uVar1 = in_EAX[4];
  if (uVar1 < (uint)in_EAX[3]) {
    FUN_00a3fb10();
  }
  uVar4 = *in_EAX;
  puVar5 = (undefined4 *)FUN_0046de1a();
  FUN_0046e7ed(*(undefined *)(in_EAX + 6),*puVar5,puVar5[1],uVar4,uVar1);
  return;
}



void FUN_0046dc32(void)

{
  undefined uVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int *in_EAX;
  int *piVar5;
  
  uVar2 = in_EAX[4];
  if (uVar2 < (uint)in_EAX[3]) {
    FUN_00a3fb10();
  }
  iVar3 = *in_EAX;
  piVar5 = (int *)FUN_0046de1a();
  iVar4 = piVar5[1];
  uVar1 = *(undefined *)(in_EAX + 6);
  if ((iVar3 == 0) || (iVar3 != *piVar5)) {
    FUN_00a3fb10();
  }
  if (8 < (int)(uVar2 - iVar4 & 0xfffffff8)) {
    FUN_0046f019(uVar1);
  }
  if ((in_EAX[4] - in_EAX[3] & 0xfffffff8U) != 0) {
    FUN_0043a4e8(in_EAX[4]);
    in_EAX[4] = in_EAX[4] + -8;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_0046dcab(undefined4 *param_1,undefined2 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[1] = param_4;
    puVar2[2] = param_3;
    *puVar2 = WE9980253::W75B9797F<wchar_t,unsigned_int>::vftable;
    *(undefined2 *)(puVar2 + 3) = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0046f238(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void __thiscall FUN_0046dd26(int param_1_00,undefined *param_1)

{
  *param_1 = 0;
  if ((undefined2 *)(param_1 + 2) != (undefined2 *)0x0) {
    *(undefined2 *)(param_1 + 2) = *(undefined2 *)(param_1_00 + 0xc);
  }
  *param_1 = 1;
  return;
}



void FUN_0046dd41(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_0046de36(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



undefined4 * FUN_0046dd75(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  int in_EAX;
  undefined4 *puVar2;
  int local_c;
  
  if ((*(int *)(in_EAX + 0x10) != *(int *)(in_EAX + 0xc)) &&
     ((FUN_0046e65a(), param_3 == 0 || (param_3 != local_c)))) {
    FUN_00a3fb10();
  }
  FUN_0046deec(param_2,param_3,param_4);
  FUN_0046e65a();
  puVar2 = (undefined4 *)FUN_0046e61f();
  uVar1 = *puVar2;
  param_1[1] = puVar2[1];
  *param_1 = uVar1;
  return param_1;
}



// WARNING: Removing unreachable block (ram,0x0046ddff)

undefined4 __fastcall FUN_0046ddf9(undefined4 param_1)

{
  int iVar1;
  int unaff_ESI;
  int unaff_EDI;
  
  iVar1 = FUN_0046e048(param_1);
  *(int *)(unaff_ESI + 0xc) = iVar1;
  *(int *)(unaff_ESI + 0x10) = iVar1;
  *(int *)(unaff_ESI + 0x14) = iVar1 + unaff_EDI;
  return CONCAT31((int3)((uint)(iVar1 + unaff_EDI) >> 8),1);
}



void FUN_0046de1a(void)

{
  uint uVar1;
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  
  *unaff_ESI = 0;
  uVar1 = unaff_EDI[3];
  if ((uint)unaff_EDI[4] < uVar1) {
    FUN_00a3fb10();
  }
  *unaff_ESI = *unaff_EDI;
  unaff_ESI[1] = uVar1;
  return;
}



void FUN_0046de36(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_0046e67a(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_0046e6b6();
    FUN_0046e124();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_0046deec(undefined *param_1,undefined4 param_2,void *param_3)

{
  void *pvVar1;
  int in_EAX;
  uint uVar2;
  int iVar3;
  size_t sVar4;
  undefined4 uVar5;
  rsize_t _DstSize;
  int extraout_ECX;
  int iVar6;
  uint local_8;
  
  iVar6 = *(int *)(in_EAX + 0xc);
  if (iVar6 == 0) {
    local_8 = 0;
  }
  else {
    local_8 = *(int *)(in_EAX + 0x14) - iVar6;
  }
  pvVar1 = *(void **)(in_EAX + 0x10);
  if (iVar6 - (int)pvVar1 == 1) {
    FUN_004423c1();
    iVar6 = extraout_ECX;
  }
  uVar2 = (int)pvVar1 + (1 - iVar6);
  if (local_8 < uVar2) {
    if (-(local_8 >> 1) - 1 < local_8) {
      local_8 = 0;
    }
    else {
      local_8 = local_8 + (local_8 >> 1);
    }
    if (local_8 < uVar2) {
      local_8 = uVar2;
    }
    iVar3 = FUN_0046e048();
    *(undefined *)((int)param_3 + (iVar3 - *(int *)(in_EAX + 0xc))) = *param_1;
    FUN_0046e873(*(undefined4 *)(in_EAX + 0xc));
    FUN_0046e873(param_3);
    iVar6 = *(int *)(in_EAX + 0xc);
    if (iVar6 != 0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar6);
    }
    *(uint *)(in_EAX + 0x14) = local_8 + iVar3;
    *(int *)(in_EAX + 0x10) = iVar3 + (*(int *)(in_EAX + 0x10) - iVar6) + 1;
    *(int *)(in_EAX + 0xc) = iVar3;
  }
  else {
    if (pvVar1 == param_3) {
      param_1 = (undefined *)CONCAT31(param_1._1_3_,*param_1);
      FUN_0046e873(param_3);
      sVar4 = (int)param_3 + (1 - (int)*(void **)(in_EAX + 0x10));
      if (sVar4 != 0) {
        _memset(*(void **)(in_EAX + 0x10),(int)param_1,sVar4);
      }
      *(int *)(in_EAX + 0x10) = *(int *)(in_EAX + 0x10) + 1;
      pvVar1 = (void *)(*(int *)(in_EAX + 0x10) + -1);
      if (param_3 == pvVar1) {
        return;
      }
      sVar4 = (int)pvVar1 - (int)param_3;
    }
    else {
      param_1 = (undefined *)CONCAT31(param_1._1_3_,*param_1);
      uVar5 = FUN_0046e873((int)pvVar1 + -1);
      *(undefined4 *)(in_EAX + 0x10) = uVar5;
      _DstSize = (int)pvVar1 + (-1 - (int)param_3);
      if (0 < (int)_DstSize) {
        _memmove_s((void *)((int)pvVar1 - _DstSize),_DstSize,param_3,_DstSize);
      }
      if (param_3 == (void *)((int)param_3 + 1)) {
        return;
      }
      sVar4 = (int)(void *)((int)param_3 + 1) - (int)param_3;
    }
    _memset(param_3,(int)param_1,sVar4);
  }
  return;
}



void __fastcall FUN_0046e048(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((int)(0xffffffff / (ulonglong)param_1) == 0) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1);
  return;
}



void FUN_0046e08f(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int *piVar1;
  int in_EAX;
  int *piVar2;
  int **ppiVar3;
  int iVar4;
  int iVar5;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc) & 0xfffffff8U) == 0) {
    iVar5 = 0;
  }
  else {
    piVar2 = (int *)FUN_0046de1a();
    if ((param_3 == 0) || (param_3 != *piVar2)) {
      FUN_00a3fb10();
    }
    iVar5 = param_4 - piVar2[1] >> 3;
  }
  FUN_0046e3e3();
  ppiVar3 = (int **)FUN_0046de1a();
  piVar1 = *ppiVar3;
  piVar2 = ppiVar3[1];
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar4 = 0;
  }
  else {
    iVar4 = *piVar1;
  }
  piVar2 = piVar2 + iVar5 * 2;
  if (piVar2 <= *(int **)(iVar4 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar5 = 0;
    }
    else {
      iVar5 = *piVar1;
    }
    if (*(int **)(iVar5 + 0xc) <= piVar2) goto LAB_0046e115;
  }
  FUN_00a3fb10();
LAB_0046e115:
  *param_1 = piVar1;
  param_1[1] = piVar2;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x0046e20f)
// WARNING: Removing unreachable block (ram,0x0046e21f)
// WARNING: Removing unreachable block (ram,0x0046e228)
// WARNING: Removing unreachable block (ram,0x0046e22b)
// WARNING: Removing unreachable block (ram,0x0046e21b)
// WARNING: Removing unreachable block (ram,0x0046e238)
// WARNING: Removing unreachable block (ram,0x0046e248)
// WARNING: Removing unreachable block (ram,0x0046e253)
// WARNING: Removing unreachable block (ram,0x0046e24f)
// WARNING: Removing unreachable block (ram,0x0046e243)
// WARNING: Removing unreachable block (ram,0x0046e256)

void FUN_0046e124(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x46e130;
  if (*(char *)((int)param_4 + 0x29) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_0046e6b6();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
    if (*(char *)(param_4[2] + 0x29) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x29) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x29) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 10) != '\x01') {
LAB_0046e387:
    FUN_007a7d86();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_0046e33b:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 10) != '\x01'))
  goto LAB_0046e383;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 10) == '\0') {
      *(undefined *)(ppiVar4 + 10) = 1;
      *(undefined *)(ppiVar3 + 10) = 0;
      FUN_007a3050(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x29) == '\0') {
      if ((*(char *)(*ppiVar4 + 10) != '\x01') || (*(char *)(ppiVar4[2] + 10) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 10) == '\x01') {
          *(undefined *)(*ppiVar4 + 10) = 1;
          *(undefined *)(ppiVar4 + 10) = 0;
          FUN_005d677b(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 10) = *(undefined *)(ppiVar3 + 10);
        *(undefined *)(ppiVar3 + 10) = 1;
        *(undefined *)(ppiVar4[2] + 10) = 1;
        FUN_007a3050(param_1);
        goto LAB_0046e383;
      }
LAB_0046e332:
      *(undefined *)(ppiVar4 + 10) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 10) == '\0') {
      *(undefined *)(ppiVar4 + 10) = 1;
      *(undefined *)(ppiVar3 + 10) = 0;
      FUN_005d677b(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x29) == '\0') {
      if ((*(char *)(ppiVar4[2] + 10) == '\x01') && (*(char *)(*ppiVar4 + 10) == '\x01'))
      goto LAB_0046e332;
      if (*(char *)(*ppiVar4 + 10) == '\x01') {
        *(undefined *)(ppiVar4[2] + 10) = 1;
        *(undefined *)(ppiVar4 + 10) = 0;
        FUN_007a3050(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 10) = *(undefined *)(ppiVar3 + 10);
      *(undefined *)(ppiVar3 + 10) = 1;
      *(undefined *)(*ppiVar4 + 10) = 1;
      FUN_005d677b(param_1);
LAB_0046e383:
      *(undefined *)(ppiVar5 + 10) = 1;
      goto LAB_0046e387;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_0046e33b;
}



void FUN_0046e3b9(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x2c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 10) = 1;
  *(undefined *)((int)puVar1 + 0x29) = 0;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0046e3e3(int param_1_00,int param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int extraout_ECX;
  undefined8 uVar4;
  uint local_1c;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 == 0) {
    local_1c = 0;
  }
  else {
    local_1c = *(int *)(param_1 + 0x14) - iVar1 >> 3;
  }
  iVar3 = *(int *)(param_1 + 0x10);
  iVar1 = iVar3 - iVar1 >> 3;
  uVar4 = CONCAT44(0x1fffffff,iVar1);
  if (iVar1 == 0x1fffffff) {
    uVar4 = FUN_004423c1();
    iVar3 = extraout_ECX;
  }
  uVar2 = (int)uVar4 + 1;
  if (local_1c < uVar2) {
    if ((int)((ulonglong)uVar4 >> 0x20) - (local_1c >> 1) < local_1c) {
      local_1c = 0;
    }
    else {
      local_1c = local_1c + (local_1c >> 1);
    }
    if (local_1c < uVar2) {
      local_1c = uVar2;
    }
    iVar3 = FUN_0046aed6();
    iVar1 = *(int *)(param_1 + 0xc);
    FUN_00478fca(param_1_00);
    FUN_00674fdf(param_3,iVar3);
    FUN_00674fdf(*(undefined4 *)(param_1 + 0x10),iVar3 + 8 + (param_3 - iVar1 >> 3) * 8);
    if (*(int *)(param_1 + 0xc) != 0) {
      FUN_0043a4e8(*(int *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
    }
    *(uint *)(param_1 + 0x14) = iVar3 + local_1c * 8;
    *(int *)(param_1 + 0x10) =
         iVar3 + ((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc) >> 3) + 1) * 8;
    *(int *)(param_1 + 0xc) = iVar3;
    return;
  }
  if (iVar3 - param_3 >> 3 == 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1_00 + 4);
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 4);
}



void Catch_All_0046e4e2(void)

{
  int iVar1;
  int iVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + -0x1c);
  iVar2 = *(int *)(unaff_EBP + -0x20);
  if (1 < *(int *)(unaff_EBP + 8)) {
    FUN_0043a4e8(iVar1 + iVar2 * 8);
  }
  if (0 < *(int *)(unaff_EBP + 8)) {
    FUN_0043a4e8(iVar1 + 8 + iVar2 * 8);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar1);
}



void FUN_0046e516(void)

{
  int extraout_ECX;
  undefined4 *unaff_EBX;
  int unaff_EBP;
  
  __CxxThrowException_8();
  *(undefined4 *)(unaff_EBP + -0x24) = *unaff_EBX;
  if (extraout_ECX - *(int *)(unaff_EBP + 0x10) >> 3 == 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



void Catch_All_0046e590(void)

{
  int unaff_EBP;
  
  FUN_0043a4e8(*(int *)(*(int *)(unaff_EBP + 8) + 0x10) + 8);
  FUN_0046e516(0);
  return;
}



void FUN_0046e61f(void)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  int unaff_EDI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 != (int *)0x0) goto LAB_0046e630;
    iVar2 = 0;
  }
  else {
LAB_0046e630:
    iVar2 = *piVar1;
  }
  if ((uint)((int)unaff_ESI[1] + unaff_EDI) <= *(uint *)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *piVar1;
    }
    if (*(uint *)(iVar2 + 0xc) <= (uint)((int)unaff_ESI[1] + unaff_EDI)) goto LAB_0046e654;
  }
  FUN_00a3fb10();
LAB_0046e654:
  unaff_ESI[1] = (int *)((int)unaff_ESI[1] + unaff_EDI);
  return;
}



void FUN_0046e65a(void)

{
  uint unaff_EBX;
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  
  *unaff_ESI = 0;
  if (((unaff_EDI == (undefined4 *)0x0) || (unaff_EBX < (uint)unaff_EDI[3])) ||
     ((uint)unaff_EDI[4] < unaff_EBX)) {
    FUN_00a3fb10();
  }
  *unaff_ESI = *unaff_EDI;
  unaff_ESI[1] = unaff_EBX;
  return;
}



void FUN_0046e67a(int param_1)

{
  if (*(char *)(param_1 + 0x29) == '\0') {
    FUN_0046e67a(*(undefined4 *)(param_1 + 8));
    FUN_007a7d86();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_0046e6b6(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x29) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x29) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x29) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x29) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



void Catch_All_0046e749(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_0046f0a9(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0046e760(undefined4 param_1)

{
  FUN_0046e90d(param_1);
  FUN_0046e9ed();
  return;
}



void FUN_0046e7ed(undefined4 param_1,int *param_2,uint param_3,int *param_4,uint param_5)

{
  int iVar1;
  
  if ((param_2 == (int *)0x0) || (param_2 != param_4)) {
    FUN_00a3fb10();
  }
  if (param_3 != param_5) {
    if (param_4 == (int *)0x0) {
      FUN_00a3fb10();
      iVar1 = 0;
    }
    else {
      iVar1 = *param_4;
    }
    if (param_5 <= *(uint *)(iVar1 + 0xc)) {
      FUN_00a3fb10();
    }
    if (0 < (int)((param_5 - 8) - param_3) >> 3) {
                    // WARNING: Subroutine does not return
      FUN_0043c023(param_5 - 4);
    }
  }
  return;
}



int __thiscall FUN_0046e873(void *param_1_00,void *param_1)

{
  int in_EAX;
  rsize_t _DstSize;
  
  _DstSize = in_EAX - (int)param_1;
  if (_DstSize != 0) {
    _memmove_s(param_1_00,_DstSize,param_1,_DstSize);
  }
  return _DstSize + (int)param_1_00;
}



undefined4 * __thiscall FUN_0046e892(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WE9980253::W0E171951<wchar_t,unsigned_int>::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0046e900(void)

{
  FUN_007a7d86();
  return;
}



int FUN_0046e90d(undefined4 *param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  ushort *unaff_EBX;
  undefined4 local_5c;
  int local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined local_4c [24];
  ushort local_34 [2];
  undefined local_30 [28];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c27dd1;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_14;
  FUN_0046d537(unaff_EBX);
  local_50 = param_1[6];
  local_54 = *param_1;
  cVar1 = FUN_006b8eca(uVar2);
  if ((cVar1 != '\0') || (*unaff_EBX < *(ushort *)(local_58 + 0xc))) {
    uVar3 = FUN_004382a5(local_4c);
    local_c = 0;
    local_34[0] = *unaff_EBX;
    FUN_0046eebe(local_30,uVar3);
    local_c = CONCAT31(local_c._1_3_,1);
    FUN_0046eade(&local_54,local_34,local_5c,local_58);
    FUN_007a7d86();
    FUN_007a7d86();
  }
  iVar4 = FUN_006badde();
  ExceptionList = local_14;
  return iVar4 + 4;
}



int __fastcall FUN_0046e9ed(int param_1)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  int iVar3;
  uint uVar4;
  rsize_t rVar5;
  uint uVar6;
  void *pvVar7;
  
  if (param_1 != in_EAX) {
    uVar6 = *(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc);
    if (*(int *)(in_EAX + 0x10) == *(int *)(in_EAX + 0xc)) {
      FUN_0046ec48();
    }
    else {
      iVar3 = *(int *)(param_1 + 0xc);
      if ((uint)(*(int *)(param_1 + 0x10) - iVar3) < uVar6) {
        if (iVar3 == 0) {
          uVar4 = 0;
        }
        else {
          uVar4 = *(int *)(param_1 + 0x14) - iVar3;
        }
        if (uVar4 < uVar6) {
          if (iVar3 != 0) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(iVar3);
          }
          iVar3 = *(int *)(in_EAX + 0x10);
          iVar1 = *(int *)(in_EAX + 0xc);
          *(undefined4 *)(param_1 + 0xc) = 0;
          *(undefined4 *)(param_1 + 0x10) = 0;
          *(undefined4 *)(param_1 + 0x14) = 0;
          if (iVar3 == iVar1) {
            return param_1;
          }
          cVar2 = FUN_0046ddf9();
          if (cVar2 == '\0') {
            return param_1;
          }
          pvVar7 = *(void **)(param_1 + 0xc);
          rVar5 = *(int *)(in_EAX + 0x10) - (int)*(void **)(in_EAX + 0xc);
          if (rVar5 != 0) {
            _memmove_s(pvVar7,rVar5,*(void **)(in_EAX + 0xc),rVar5);
          }
          *(rsize_t *)(param_1 + 0x10) = rVar5 + (int)pvVar7;
          return param_1;
        }
        pvVar7 = (void *)((*(int *)(in_EAX + 0xc) - iVar3) + *(int *)(param_1 + 0x10));
        FUN_0046f08a(*(int *)(in_EAX + 0xc));
        rVar5 = *(int *)(in_EAX + 0x10) - (int)pvVar7;
        iVar3 = rVar5 + (int)*(void **)(param_1 + 0x10);
        if (rVar5 != 0) {
          _memmove_s(*(void **)(param_1 + 0x10),rVar5,pvVar7,rVar5);
        }
      }
      else {
        FUN_0046f08a(*(undefined4 *)(in_EAX + 0xc));
        iVar3 = (*(int *)(param_1 + 0xc) - *(int *)(in_EAX + 0xc)) + *(int *)(in_EAX + 0x10);
      }
      *(int *)(param_1 + 0x10) = iVar3;
    }
  }
  return param_1;
}



undefined4 * FUN_0046eade(undefined4 *param_1,ushort *param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  bool bVar4;
  undefined4 uVar5;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 == '\0') {
        bVar4 = *(ushort *)(param_4 + 0xc) < *param_2;
        if (*param_2 < *(ushort *)(param_4 + 0xc)) {
          iVar2 = FUN_007a4650();
          if (*(ushort *)(*(int *)(iVar2 + 4) + 0xc) < *param_2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x29) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_0046eb00;
          }
          bVar4 = *(ushort *)(param_4 + 0xc) < *param_2;
        }
        if (bVar4) {
          FUN_0046e6b6();
          cVar1 = FUN_006b8eca();
          if ((cVar1 != '\0') || (*param_2 < *(ushort *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x29) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_0046eb00;
          }
        }
LAB_0046ec26:
        puVar3 = (undefined4 *)FUN_0046ecac(in_EAX,param_2);
        *param_1 = *puVar3;
        param_1[1] = puVar3[1];
        return param_1;
      }
      if (*param_2 <= *(ushort *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_0046ec26;
      uVar5 = 0;
      goto LAB_0046eb00;
    }
    if (*(ushort *)(param_4 + 0xc) <= *param_2) goto LAB_0046ec26;
  }
  uVar5 = 1;
LAB_0046eb00:
  FUN_0046ed71(param_1,uVar5,param_2);
  return param_1;
}



void FUN_0046ec48(void)

{
  int in_EAX;
  undefined4 uVar1;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  if ((local_14 == 0) || (local_14 != local_c)) {
    FUN_00a3fb10();
  }
  if (local_10 != local_8) {
    uVar1 = FUN_0046f08a(local_8);
    *(undefined4 *)(in_EAX + 0x10) = uVar1;
  }
  return;
}



void FUN_0046ecac(undefined4 *param_1,ushort *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x29) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < *(ushort *)(local_c + 3));
      if (*param_2 < *(ushort *)(local_c + 3)) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x29) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_0046ed21;
    }
    FUN_007a4650();
  }
  uVar3 = local_8;
  if (*param_2 <= *(ushort *)(local_10 + 3)) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_0046ed21:
  puVar2 = (undefined4 *)FUN_0046ed71(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0046ed71(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x46ed7d;
  if (0x9249247 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_0046ef4e(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_0046ee96;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_0046ee96;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_0046ee96:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 10) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x28) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 10) == '\0') {
LAB_0046ee52:
        *(undefined *)(piVar1 + 10) = 1;
        *(undefined *)(piVar7 + 10) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x28) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007a3050(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x28) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x28) = 0;
        FUN_005d677b(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 10) == '\0') goto LAB_0046ee52;
    if (piVar8 == (int *)*piVar1) {
      FUN_005d677b(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x28) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x28) = 0;
    FUN_007a3050(unaff_ESI);
  } while( true );
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0046eebe(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  void *_Dst;
  char cVar3;
  int **ppiVar4;
  rsize_t _DstSize;
  int local_20;
  void *local_18;
  
  ppiVar4 = (int **)FUN_00418daa(1,0);
  if (ppiVar4 == (int **)0x0) {
    ppiVar4 = (int **)0x0;
  }
  else {
    *ppiVar4 = param_1;
  }
  *param_1 = (int)ppiVar4;
  iVar1 = *(int *)(param_2 + 0x10);
  iVar2 = *(int *)(param_2 + 0xc);
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  if (iVar1 != iVar2) {
    cVar3 = FUN_0046ddf9();
    if (cVar3 != '\0') {
      FUN_0046e65a();
      FUN_0046e65a();
      _DstSize = local_20 - (int)local_18;
      _Dst = (void *)param_1[3];
      if (_DstSize != 0) {
        _memmove_s(_Dst,_DstSize,local_18,_DstSize);
      }
      param_1[4] = _DstSize + (int)_Dst;
    }
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_0046ef4e(undefined2 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x2c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    *(undefined2 *)(puVar1 + 3) = *param_1_00;
    FUN_0046eebe(puVar1 + 4,param_1_00 + 2);
    *(undefined *)(puVar1 + 10) = 0;
    *(undefined *)((int)puVar1 + 0x29) = 0;
  }
  return puVar1;
}



void Catch_All_0046efae(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0046efc1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE9980253::WCF0157F1<wchar_t,unsigned_int>_>::
              vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046f007(void)

{
  code *pcVar1;
  
  FUN_0046f104();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_0046f019(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + -4);
}



int __thiscall FUN_0046f08a(void *param_1_00,void *param_1)

{
  int in_EAX;
  rsize_t _DstSize;
  
  _DstSize = in_EAX - (int)param_1;
  if (0 < (int)_DstSize) {
    _memmove_s(param_1_00,_DstSize,param_1,_DstSize);
  }
  return _DstSize + (int)param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0046f0a9(int param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  int iStack_24;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 1;
  if (*(int *)(param_1 + 0x2c) != 0) {
    iStack_24 = 0x46f0cb;
    FUN_0040127a();
  }
  iStack_24 = param_1 + 8;
  local_8 = local_8 & 0xffffff00;
  puVar1 = &uStack_28;
  uStack_28 = 0x46f0d8;
  FUN_0046c7e8();
  local_8 = 0xffffffff;
  if (*(int *)(param_1 + 4) != 0) {
    puVar1[-1] = 0x46f0e8;
    FUN_0040127a();
  }
  puVar1[-1] = param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0046f0ee;
  FUN_00a3f6a1();
}



void FUN_0046f0f9(void)

{
  FUN_0046f104();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_0046f104(void)

{
  int unaff_ESI;
  
  if (unaff_ESI != 0) {
    if (*(int *)(unaff_ESI + 0x24) != 0) {
      FUN_0040127a();
    }
    FUN_0046da20();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  return &LAB_00c22c2b;
}



void Catch_All_0046f184(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0046f238(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE9980253::W75B9797F<wchar_t,unsigned_int>_>::
              vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046f27e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_0046f400(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x3c))(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0046f40f(undefined4 param_1_00,byte param_1)

{
  FUN_00b9ae90();
  FUN_0046afce();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_0046f44e(undefined4 *param_1,undefined8 param_2,undefined4 param_3_00,undefined4 param_3,
            undefined param_4)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x28);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[1] = 0;
    puVar2[2] = 0;
    *(undefined8 *)(puVar2 + 4) = param_2;
    puVar2[6] = param_3_00;
    puVar2[7] = param_3;
    *puVar2 = W47457227::W8FCED6A3::vftable;
    *(undefined *)(puVar2 + 8) = param_4;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0046f4d2(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0046f4d2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::W8FCED6A3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046f518(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0046f52f(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x14);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0046f5a3(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0046f683(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0046f5a3(undefined4 *param_1,undefined4 param_2)

{
  param_1[1] = 0;
  param_1[2] = 0;
  *param_1 = W47457227::W7F524D6A::vftable;
  param_1[3] = 0;
  param_1[4] = 0;
  FUN_00b93100(param_2);
  FUN_0046f638(param_1 + 3);
  FUN_005e72d0();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0046f5f9(undefined4 param_1_00,byte param_1)

{
  FUN_005e72d0();
  FUN_0046afce();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0046f638(void)

{
  int in_EAX;
  
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 4);
}



void __fastcall FUN_0046f668(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  
  if (param_1 != in_EAX) {
    uVar1 = *param_1;
    *param_1 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = param_1[1];
  param_1[1] = uVar1;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0046f683(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::W7F524D6A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046f6c9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0046f88d(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W47457227::W605B9A16::vftable;
  FUN_0046acb4();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_0046f8f5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0046f90c(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x24);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_0046ac65(puVar2);
    *puVar2 = W47457227::WA49801F3::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0046fa31(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 * __thiscall FUN_0046fa0f(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W47457227::WA49801F3::vftable;
  FUN_0046acb4();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0046fa31(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::WA49801F3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046fa77(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0046fa8e(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x24);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_0046ac65(puVar2);
    *puVar2 = W47457227::WE2589B7E::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0046fb27(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 * __thiscall FUN_0046fb05(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W47457227::WE2589B7E::vftable;
  FUN_0046acb4();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0046fb27(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::WE2589B7E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046fb6d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0046fbfd)

undefined4 * FUN_0046fb84(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  int param_5;
  
  pvVar2 = operator_new(0x44);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0046fcc5();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_5 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000014);
}



undefined4 __thiscall FUN_0046fc9b(undefined4 param_1_00,byte param_1)

{
  FUN_00401829(1,0);
  FUN_0046acb4();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0046fcc5(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::W823F9DC3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046fd0b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0046fd22(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x28);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = W47457227::WEDB421E6::vftable;
    basic_string<>(param_2);
  }
  FUN_0046fda3(param_1);
  return param_1;
}



undefined4 __thiscall FUN_0046fd79(undefined4 param_1_00,byte param_1)

{
  FUN_00401829(1,0);
  FUN_0046afce();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0046fda3(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_0046fdf0(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0046fdf0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W47457227::WEDB421E6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0046fe36(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



int __fastcall FUN_0046fe4d(int param_1)

{
  return *(int *)(param_1 + 0x14) - *(int *)(param_1 + 0x10) >> 3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_0046fe57(int param_1,int param_2)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c2a12c;
  if (param_1 != 0) {
    puVar1 = (undefined *)FUN_0045faa0(&param_1);
  }
  if (param_2 != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0046fe93(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  *param_1 = W7D821358::WCFFFAB28::vftable;
  FUN_004382a5(param_1 + 1);
  *param_1 = W7D821358::W685894F9::vftable;
  basic_string<>(param_2);
  basic_string<>(param_3);
  return param_1;
}



void __thiscall FUN_0046fedf(int *param_1_00,int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 *puVar4;
  int extraout_ECX;
  uint uVar5;
  undefined auStack_20 [4];
  int iStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c32db2;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  uVar5 = 0;
  if (param_1 == 0) {
    iVar3 = 0;
  }
  else {
    iVar3 = param_1 + 8;
  }
  uVar2 = FUN_004266f0(iVar3,iVar3,param_1_00 + 7,uVar1);
  FUN_0040e327(uVar2);
  if (param_1_00[0x13] != 0) {
    if (param_1 == 0) {
      iVar3 = 0;
    }
    else {
      iVar3 = param_1 + 8;
    }
    uVar2 = FUN_004266f0(iVar3,param_1_00 + 0xe,param_1_00 + 0xe,uVar1);
    FUN_0040e327(uVar2);
  }
  uVar1 = (**(code **)(*param_1_00 + 4))();
  if (uVar1 == 0) {
    if (param_1 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + 8;
    }
    FUN_0040e4a0(param_1,&DAT_00f64bc4);
  }
  else {
    if (param_1 == 0) {
      iVar3 = 0;
    }
    else {
      iVar3 = param_1 + 8;
    }
    FUN_004266f0(iVar3);
    if (uVar1 != 0) {
      do {
        puVar4 = (undefined4 *)(**(code **)(*param_1_00 + 8))(auStack_20,uVar5);
        local_14 = (void *)0x0;
        (***(code ***)*puVar4)(param_1);
        uStack_c = 0xffffffff;
        iVar3 = iStack_1c;
        if (iStack_1c != 0) {
          FUN_0040127a();
          iVar3 = extraout_ECX;
        }
        uVar5 = uVar5 + 1;
      } while (uVar5 < uVar1);
    }
    if (param_1 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + 8;
    }
    uVar2 = FUN_0040e4a0(param_1,&DAT_00f64bbc,iVar3,param_1_00 + 7);
    uVar2 = FUN_0040e327(uVar2);
    FUN_004266f0(uVar2);
  }
  ExceptionList = local_14;
  return;
}



undefined4 FUN_0047001c(undefined4 param_1)

{
  basic_string<>(L"align=\'left\' ");
  return param_1;
}



undefined4 FUN_00470036(undefined4 param_1)

{
  basic_string<>(L"align=\'center\' ");
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00470382(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 extraout_ECX;
  undefined local_9c [8];
  undefined local_94 [128];
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x470391;
  local_14 = 0;
  FUN_0040c8aa(local_9c);
  local_8 = 1;
  uVar1 = FUN_0040e4a0(local_94,L"src=\'",extraout_ECX,param_2,extraout_ECX,&DAT_00f64b38);
  uVar1 = FUN_0040e327(uVar1);
  FUN_0040e4a0(uVar1);
  FUN_0040c93e();
  local_14 = 1;
  local_8 = local_8 & 0xffffff00;
  FUN_004085a7();
  return param_1;
}



undefined4 FUN_0047047c(undefined4 param_1)

{
  basic_string<>(L"valign=\'center\' ");
  return param_1;
}



undefined4 FUN_00470496(undefined4 param_1)

{
  basic_string<>(L"valign=\'top\' ");
  return param_1;
}



void __thiscall FUN_00470544(int param_1_00,int param_1)

{
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 8;
  }
  FUN_0040e327(param_1,param_1_00 + 4);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00470562(undefined4 *param_1,char param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 local_8c [5];
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined local_30 [20];
  undefined **local_1c;
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_14 = 0;
  uStack_70 = 0;
  uStack_74 = 0;
  local_8 = 1;
  uStack_78 = 0x470584;
  FUN_00874e00();
  local_18 = local_8c;
  local_8._0_1_ = 2;
  FUN_00672a11();
  puVar2 = (undefined4 *)FUN_004748d4();
  local_8._0_1_ = 3;
  local_8c[0] = 0;
  local_18 = local_8c;
  cVar1 = (**(code **)*puVar2)(local_30);
  local_8._0_1_ = 2;
  FUN_00507e58();
  if (cVar1 == '\0') {
    param_1[1] = 0;
    *param_1 = wxImage::vftable;
    local_14 = 1;
    local_8._0_1_ = 1;
    FUN_00874be0();
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_00507e58();
  }
  else {
    uVar3 = FUN_00874f80(local_30);
    if (param_2 == '\0') {
      local_8._0_1_ = 6;
      FUN_004706ad(uVar3,0xf,0xffffffff);
      local_14 = 1;
      local_8._0_1_ = 2;
      FUN_00874b30();
    }
    else {
      local_8._0_1_ = 4;
      FUN_004706ad(uVar3,0xf,0xffffffff);
      local_8._0_1_ = 5;
      FUN_00901700(param_1,1);
      local_8._0_1_ = 4;
      local_14 = 1;
      local_1c = wxObject::vftable;
      FUN_0083e850();
      local_8._0_1_ = 2;
      FUN_00874b30();
    }
    local_8._0_1_ = 1;
    FUN_00874be0();
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_00507e58();
  }
  return param_1;
}



void FUN_004706a0(void)

{
  FUN_00507e58();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_004706ad(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  param_1_00[1] = 0;
  *param_1_00 = wxImage::vftable;
  FUN_00907230(param_1,param_2,param_3);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004706e4(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  
  FUN_00845b70();
  *param_1 = W09E346CD::W766D86B7::vftable;
  FUN_004710ac(0);
  param_1[0x3d] = 6000;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 0x3e);
  }
  param_1[0x3e] = piVar1;
  iVar2 = FUN_00470e3e();
  piVar1 = param_1 + 0x44;
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x39) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[0x45] = 0;
  return param_1;
}



undefined4 __thiscall FUN_0047076a(undefined4 param_1_00,byte param_1)

{
  FUN_00435dd9(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00470889(int param_1_00,int param_1)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  int *piVar4;
  int local_50;
  int local_4c;
  int local_48;
  int local_44;
  int local_40;
  undefined4 local_3c;
  int local_38;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c27cb2;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_14;
  local_50 = *(int *)(param_1 + 0x14);
  piVar1 = (int *)(param_1_00 + 0xf8);
  FUN_00470bd3(&local_50);
  local_3c = *(undefined4 *)(param_1_00 + 0x110);
  local_40 = *piVar1;
  piVar4 = &local_48;
  cVar2 = FUN_006b8eca(uVar3);
  if ((cVar2 != '\0') || (local_50 < *(int *)(local_44 + 0x10))) {
    local_3c = *(undefined4 *)(param_1_00 + 0x110);
    local_40 = *piVar1;
    piVar4 = &local_40;
  }
  local_50 = *piVar4;
  local_4c = piVar4[1];
  local_3c = *(undefined4 *)(param_1_00 + 0x110);
  local_40 = *piVar1;
  cVar2 = FUN_006b8eca(uVar3);
  if (cVar2 == '\0') {
    FUN_00470c05();
    FUN_00672a11();
    local_c = 0;
    if ((-(uint)(local_38 != 0) & 0x7a491c) != 0) {
      FUN_004db8a7();
    }
    local_c = 0xffffffff;
    FUN_00507e58();
  }
  ExceptionList = local_14;
  return;
}



int __thiscall FUN_0047098f(int *param_1_00,undefined4 *param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 local_70;
  int local_6c;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  int local_40 [11];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1ed7c;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_14;
  FUN_00470bd3(param_1_00);
  local_64 = param_1[6];
  local_68 = *param_1;
  cVar1 = FUN_006b8eca(uVar2);
  if ((cVar1 != '\0') || (*param_1_00 < *(int *)(local_6c + 0x10))) {
    local_60 = 0;
    local_c = 0;
    local_40[0] = *param_1_00;
    FUN_00672a11();
    local_c._0_1_ = 1;
    FUN_00470a74(&local_68,local_40,local_70,local_6c);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00507e58();
    local_c = 0xffffffff;
    FUN_00507e58();
  }
  iVar3 = FUN_00470c05();
  ExceptionList = local_14;
  return iVar3 + 8;
}



undefined4 * FUN_00470a74(undefined4 *param_1,int *param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int in_EAX;
  int iVar4;
  undefined4 *puVar5;
  bool bVar6;
  undefined4 uVar7;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar3 = FUN_006b8eca();
    if (cVar3 == '\0') {
      cVar3 = FUN_006b8eca();
      if (cVar3 == '\0') {
        iVar4 = *param_2;
        iVar1 = *(int *)(param_4 + 0x10);
        bVar6 = SBORROW4(iVar1,iVar4);
        iVar2 = iVar1 - iVar4;
        if (iVar4 < iVar1) {
          iVar4 = FUN_00421832();
          iVar2 = *param_2;
          if (*(int *)(*(int *)(iVar4 + 4) + 0x10) < iVar2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x39) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_00470a96;
          }
          bVar6 = SBORROW4(*(int *)(param_4 + 0x10),iVar2);
          iVar2 = *(int *)(param_4 + 0x10) - iVar2;
        }
        if (bVar6 != iVar2 < 0) {
          FUN_007449dd();
          cVar3 = FUN_006b8eca();
          if ((cVar3 != '\0') || (*param_2 < *(int *)(param_4 + 0x10))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x39) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_00470a96;
          }
        }
LAB_00470bb1:
        puVar5 = (undefined4 *)FUN_00470c30(in_EAX,param_2);
        *param_1 = *puVar5;
        param_1[1] = puVar5[1];
        return param_1;
      }
      if (*param_2 <= *(int *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0x10)) goto LAB_00470bb1;
      uVar7 = 0;
      goto LAB_00470a96;
    }
    if (*(int *)(param_4 + 0x10) <= *param_2) goto LAB_00470bb1;
  }
  uVar7 = 1;
LAB_00470a96:
  FUN_00470cf1(param_1,uVar7,param_2);
  return param_1;
}



void FUN_00470bd3(int *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x39) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((int)puVar2[4] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x39) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



int * FUN_00470c05(void)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_00470c1c;
    }
  }
  iVar2 = *piVar1;
LAB_00470c1c:
  if (unaff_ESI[1] == *(int **)(iVar2 + 0x18)) {
    FUN_00a3fb10();
  }
  return unaff_ESI[1] + 4;
}



void FUN_00470c30(undefined4 *param_1,int *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x39) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (int)local_c[4]);
      if (*param_2 < (int)local_c[4]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x39) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_00470ca3;
    }
    FUN_00421832();
  }
  uVar3 = local_8;
  if (*param_2 <= (int)local_10[4]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_00470ca3:
  puVar2 = (undefined4 *)FUN_00470cf1(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_00470cf1(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x470cfd;
  if (0x6666664 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_00470e68(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_00470e16;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_00470e16;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_00470e16:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xe) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x38) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xe) == '\0') {
LAB_00470dd2:
        *(undefined *)(piVar1 + 0xe) = 1;
        *(undefined *)(piVar7 + 0xe) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x38) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007d0aa6(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x38) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x38) = 0;
        FUN_00437338(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xe) == '\0') goto LAB_00470dd2;
    if (piVar8 == (int *)*piVar1) {
      FUN_00437338(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x38) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x38) = 0;
    FUN_007d0aa6(unaff_ESI);
  } while( true );
}



void FUN_00470e3e(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x40);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 0xe) = 1;
  *(undefined *)((int)puVar1 + 0x39) = 0;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00470e68(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x40);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[4] = *param_1_00;
    FUN_00672a11();
    *(undefined *)(puVar1 + 0xe) = 0;
    *(undefined *)((int)puVar1 + 0x39) = 0;
  }
  return puVar1;
}



void Catch_All_00470ec5(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void __thiscall
FUN_00470ed8(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *param_1_00;
  uVar2 = FUN_0095b210(param_1_00,param_1,param_2,param_3,param_4,0);
  (**(code **)(iVar1 + 0x6c))(uVar2);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00470f04(void)

{
  undefined4 uVar1;
  undefined local_58 [36];
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x470f10;
  FUN_004325b6(PTR_DAT_03236318);
  local_8 = 0;
  FUN_004325b6(PTR_DAT_03236318);
  local_8 = CONCAT31(local_8._1_3_,1);
  uVar1 = FUN_00470ed8(0xfffffffe,local_34,local_58,0);
  FUN_0040159c();
  FUN_0040159c();
  return uVar1;
}



undefined4 __thiscall FUN_00470f63(undefined4 param_1_00,byte param_1)

{
  FUN_00959860();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00470f7f(void)

{
  FUN_0043261a();
  return;
}



undefined4 __thiscall FUN_00470f87(undefined4 param_1_00,byte param_1)

{
  FUN_0086ade0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00470fa3(undefined4 param_1_00,byte param_1)

{
  FUN_0086b2e0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_00470fbf(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  FUN_0086b5c0(param_1,param_2,param_3,param_4,param_5);
  *param_1_00 = wxwxMenuItemListNode::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_00470fe6(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x18);
  if (pvVar1 != (void *)0x0) {
    FUN_00470fbf(param_1_00,param_1,param_2,param_3,param_4);
  }
  return;
}



undefined4 * __thiscall FUN_00471024(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00445e1a(param_1);
  *param_1_00 = wxMenuItemList::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0047103c(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00845b70();
  *param_1_00 = wxMenuBase::vftable;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0x12));
  param_1_00[0x19] = 0;
  FUN_00471024(0);
  FUN_00958a10(param_1);
  return param_1_00;
}



undefined4 __thiscall FUN_00471090(undefined4 param_1_00,byte param_1)

{
  FUN_0092de10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004710ac(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_0047103c(param_1);
  *param_1_00 = wxMenu::vftable;
  FUN_0086a600();
  FUN_0092dc30();
  return param_1_00;
}



void __fastcall FUN_004710ef(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1776;
  return;
}



void __fastcall FUN_004710fb(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1774;
  return;
}



void __fastcall FUN_00471107(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1784;
  return;
}



void __fastcall FUN_00471113(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1780;
  return;
}



void __fastcall FUN_0047111f(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1778;
  return;
}



void __fastcall FUN_0047112b(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x177c;
  return;
}



void __fastcall FUN_00471137(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1772;
  return;
}



void __fastcall FUN_00471143(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1785;
  return;
}



void __fastcall FUN_0047114f(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1786;
  return;
}



void __fastcall FUN_0047115b(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1777;
  return;
}



void __fastcall FUN_00471167(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1773;
  return;
}



void __fastcall FUN_00471173(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x177b;
  return;
}



void __fastcall FUN_0047117f(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x177d;
  return;
}



void __fastcall FUN_0047118b(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x177a;
  return;
}



void __fastcall FUN_00471197(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1781;
  return;
}



void __fastcall FUN_004711a3(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1779;
  return;
}



void __fastcall FUN_004711af(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1783;
  return;
}



void __fastcall FUN_004711bb(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1771;
  return;
}



void __fastcall FUN_004711c7(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x177f;
  return;
}



void __fastcall FUN_004711d3(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x1782;
  return;
}



void __fastcall FUN_004711df(int param_1)

{
  **(undefined4 **)(param_1 + 4) = 0x177e;
  return;
}



void __fastcall FUN_004711eb(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x16;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_004711fe(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x24;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_00471211(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x21;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_00471224(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x1e;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_00471237(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x18;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_0047124a(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x1c;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_0047125d(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x20;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_00471270(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x25;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_00471283(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x22;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_00471296(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x17;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_004712a9(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x14;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_004712bc(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x1b;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_004712cf(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x1d;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_004712e2(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x1a;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_004712f5(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x1f;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_00471308(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x19;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_0047131b(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x23;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_0047132e(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x26;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_00471341(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x27;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_00471354(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x28;
  *puVar1 = 0x1e63;
  return;
}



void __fastcall FUN_00471367(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  puVar1[1] = 0x29;
  *puVar1 = 0x1e63;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0047137a(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x471386;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x4713b5;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x4713c8;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004713d0(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4713dc;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x47140b;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x47141e;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00471426(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x471432;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x471461;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x471474;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0047147c(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x471488;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x4714b7;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x4714ca;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004714d2(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4714de;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x47150d;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x471520;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00471528(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x471534;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x471563;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x471576;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0047157e(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x47158a;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x4715b9;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x4715cc;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004715d4(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4715e0;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x47160f;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x471622;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0047162a(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x471636;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x471665;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x471678;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00471680(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x47168c;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x4716bb;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x4716ce;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004716d6(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4716e2;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x471711;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x471724;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0047172c(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x471738;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x471767;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x47177a;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00471782(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x47178e;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x4717bd;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x4717d0;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004717d8(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4717e4;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x471813;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x471826;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0047182e(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x47183a;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x471869;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x47187c;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00471884(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x471890;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x4718bf;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x4718d2;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004718da(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4718e6;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x471915;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x471928;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00471930(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x47193c;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x47196b;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x47197e;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00471986(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x471992;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x4719c1;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x4719d4;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004719dc(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x4719e8;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x471a17;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x471a2a;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00471a32(void)

{
  undefined auStack_48 [24];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x471a3e;
  local_14 = auStack_48;
  FUN_004180b1();
  uStack_2c = FUN_00470562(&local_18,0);
  local_8 = 0;
  uStack_30 = 0x471a6d;
  FUN_0043d987();
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  uStack_2c = 0x471a80;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00471a88(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  int *piVar1;
  int iVar2;
  
  FUN_00845b70();
  *param_1 = W09E346CD::WD0CCAEAB::vftable;
  FUN_007a10f9(param_1 + 0x10,param_2);
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 0x16);
  }
  param_1[0x16] = piVar1;
  iVar2 = FUN_00697fb3();
  piVar1 = param_1 + 0x1c;
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x19) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[0x1d] = 0;
  param_1[0x1e] = param_3;
  *(undefined *)(param_1 + 0x1f) = 0;
  FUN_004710ac(0);
  param_1[0x4d] = 0;
  param_1[0x4e] = 0;
  return param_1;
}



undefined4 __thiscall FUN_00471b26(undefined4 param_1_00,byte param_1)

{
  FUN_00435f8e(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Removing unreachable block (ram,0x00471db3)
// WARNING: Removing unreachable block (ram,0x00471dc0)
// WARNING: Removing unreachable block (ram,0x00471d7b)
// WARNING: Removing unreachable block (ram,0x00471d90)
// WARNING: Removing unreachable block (ram,0x00471dd4)

void FUN_00471b43(int param_1)

{
  int **ppiVar1;
  undefined4 *puVar2;
  undefined ***pppuStack_ec;
  uint local_cc;
  undefined *local_c8;
  void *pvStack_c4;
  undefined **local_c0;
  undefined4 local_bc;
  undefined ***local_b8;
  undefined **local_b4;
  undefined **ppuStack_b0;
  undefined **ppuStack_a8;
  undefined **local_a4;
  undefined **local_a0;
  undefined4 *puStack_9c;
  uint local_94;
  int local_90;
  undefined auStack_8c [120];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  uStack_10 = &LAB_00c30df6;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_90 = param_1 + 0x40;
  local_94 = *(int *)(param_1 + 0x50) - *(int *)(param_1 + 0x4c) >> 3;
  local_cc = 0;
  if (local_94 != 0) {
    do {
      ppiVar1 = (int **)FUN_00436b17();
      local_c8 = (undefined *)0x0;
      local_b8 = (undefined ***)0x0;
      local_b4 = (undefined **)0x0;
      local_bc = 0;
      local_c0 = wxImage::vftable;
      local_a0 = &local_c8;
      local_a4 = W09E346CD::WDB0D4E2F::vftable;
      local_c._0_1_ = 1;
      local_c._1_3_ = 0;
      pppuStack_ec = (undefined ***)0x471bf2;
      (**(code **)(**ppiVar1 + 4))();
      puStack_9c = &local_bc;
      ppuStack_a8 = W47457227::WCE763347::vftable;
      local_a0 = W09E346CD::WB45B8BE6::vftable;
      pppuStack_ec = &local_a0;
      uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,2);
      (**(code **)(**ppiVar1 + 4))();
      local_b4 = &local_c8;
      local_a4 = W47457227::WCE763347::vftable;
      local_b8 = (undefined ***)W09E346CD::W299D7C9C::vftable;
      local_14 = (void *)CONCAT31(local_14._1_3_,3);
      (**(code **)(**ppiVar1 + 4))(&local_b8);
      local_c._0_1_ = 0;
      ppuStack_b0 = W47457227::WCE763347::vftable;
      if (local_c8 != (undefined *)0x0) {
        pppuStack_ec = (undefined ***)(param_1 + 0x58);
        FUN_00471f59();
        pppuStack_ec = (undefined ***)0x471c75;
        FUN_005d11c9();
        pppuStack_ec = (undefined ***)0x471c7f;
        pvStack_c4 = operator_new(0xb8);
        local_c._0_1_ = 4;
        if (pvStack_c4 != (void *)0x0) {
          pppuStack_ec = (undefined ***)0x471ca6;
          FUN_004325b6();
          ppuStack_a8 = (undefined **)&pppuStack_ec;
          local_c = CONCAT31(local_c._1_3_,5);
          pppuStack_ec = local_b8;
          puVar2 = (undefined4 *)FUN_00465be3(auStack_8c);
          ppuStack_a8 = (undefined **)&pppuStack_ec;
          local_c = 6;
          pppuStack_ec = (undefined ***)*puVar2;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar2 + 1);
        }
        local_c._1_3_ = 0;
        local_c._0_1_ = 0x11;
        pvStack_c4 = (void *)0x0;
        pppuStack_ec = &local_c0;
        FUN_00414f38();
        local_c._0_1_ = 0x12;
        pppuStack_ec = (undefined ***)0x471e09;
        FUN_0043d987();
        uRam00000068 = 1;
        local_c = CONCAT31(local_c._1_3_,0x11);
        FUN_008f7630();
        pvStack_c4 = (void *)0x0;
        pppuStack_ec = (undefined ***)0x471e2e;
        (**(code **)(*(int *)(param_1 + 0x80) + 0x6c))();
      }
      local_c = 0xffffffff;
      local_c0 = wxObject::vftable;
      FUN_0083e850();
      local_cc = local_cc + 1;
    } while (local_cc < local_94);
  }
  pppuStack_ec = (undefined ***)0x0;
  FUN_0044634a(DAT_032bfdd0,FUN_00471e92,0);
  ExceptionList = local_14;
  return;
}



void FUN_00471e8b(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W47457227::WCE763347::vftable;
  return;
}



void __thiscall FUN_00471e92(int param_1_00,int param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  int local_10;
  int local_c;
  
  param_1 = *(int *)(param_1 + 0x14);
  puVar1 = (undefined4 *)(param_1_00 + 0x58);
  local_c = param_1_00;
  FUN_00452e99(&param_1);
  local_18 = *(undefined4 *)(param_1_00 + 0x70);
  local_1c = *puVar1;
  puVar3 = &local_14;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (param_1 < *(int *)(local_10 + 0xc))) {
    local_20 = *(undefined4 *)(param_1_00 + 0x70);
    local_24 = *puVar1;
    puVar3 = &local_24;
  }
  local_1c = *puVar3;
  local_18 = puVar3[1];
  local_20 = *(undefined4 *)(param_1_00 + 0x70);
  local_24 = *puVar1;
  cVar2 = FUN_006b8eca();
  if (cVar2 == '\0') {
    FUN_006badde();
    FUN_005d11c9(local_c + 0x134);
  }
  else {
    FUN_005d1159();
  }
  return;
}



void FUN_00471f41(void)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *(undefined4 *)(in_EAX + 0x134);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0x138);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_00471f59(int param_1,int *param_2)

{
  char cVar1;
  int iVar2;
  undefined4 local_1c [2];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x471f65;
  FUN_00452e99(param_2);
  local_1c[0] = *(undefined4 *)(param_1 + 0x18);
  cVar1 = FUN_006b8eca();
  if ((cVar1 == '\0') && (*(int *)(local_14 + 0xc) <= *param_2)) {
    iVar2 = FUN_006badde();
    return iVar2 + 4;
  }
  local_1c[0] = 0;
  local_8 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_1c);
}



void FUN_00471fff(undefined4 *param_1,int *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x19) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (int)local_c[3]);
      if (*param_2 < (int)local_c[3]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x19) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_00472072;
    }
    FUN_007fd84d();
  }
  uVar3 = local_8;
  if (*param_2 <= (int)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_00472072:
  puVar2 = (undefined4 *)FUN_006bd125(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void __thiscall FUN_004720c0(int param_1_00,undefined4 param_1)

{
  FUN_0043d987(param_1);
  *(undefined *)(param_1_00 + 0x68) = 1;
  return;
}



void FUN_004720e7(void)

{
  FUN_00a49786();
  return;
}



void FUN_00472130(int param_1)

{
  double dVar1;
  byte bVar2;
  undefined uVar3;
  uint uVar4;
  int *unaff_ESI;
  double dVar5;
  uint uVar6;
  undefined4 uVar7;
  
  if (param_1 == 100) {
    FUN_00458700(unaff_ESI);
  }
  else {
    (**(code **)(*unaff_ESI + 0x10))();
    (**(code **)(*unaff_ESI + 0x14))();
    (**(code **)(*unaff_ESI + 0x18))();
    if (199 < param_1) {
      param_1 = 200;
    }
    if (param_1 < 1) {
      param_1 = 0;
    }
    dVar1 = ((double)param_1 - 100.0) / 100.0;
    if (param_1 < 0x65) {
      dVar1 = dVar1 + 1.0;
    }
    else {
      dVar1 = 1.0 - dVar1;
    }
    uVar7 = 0xff;
    uVar4 = FUN_004720e7(dVar1);
    uVar4 = uVar4 & 0xff;
    dVar5 = dVar1;
    bVar2 = FUN_004720e7(dVar1,uVar4,uVar7);
    uVar6 = (uint)bVar2;
    uVar3 = FUN_004720e7(dVar1,SUB84(dVar5,0),bVar2);
    FUN_004561e7(uVar3,uVar6,uVar4,uVar7);
  }
  return;
}



undefined4 FUN_0047220e(undefined4 param_1)

{
  byte bVar1;
  int *in_EAX;
  undefined4 uVar2;
  
  uVar2 = 0x78;
  bVar1 = (**(code **)(*in_EAX + 0x10))();
  if (bVar1 < 0x80) {
    bVar1 = (**(code **)(*in_EAX + 0x14))();
    if (bVar1 < 0x80) {
      bVar1 = (**(code **)(*in_EAX + 0x18))();
      if (bVar1 < 0x80) {
        uVar2 = 0xa0;
      }
    }
  }
  FUN_00472130(uVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_00472251(int param_1)

{
  undefined4 uVar1;
  
  FUN_008ff080(param_1,0xf);
  if ((int)(((0x2fd - (uint)*(byte *)(param_1 + 0xe)) - (uint)*(byte *)(param_1 + 0xf)) -
           (uint)*(byte *)(param_1 + 0xd)) < 0x3c) {
    uVar1 = FUN_00472130(0x5c);
    FUN_004722cb(uVar1);
    FUN_0083e850();
  }
  return param_1;
}



int __thiscall FUN_004722cb(int param_1_00,int param_1)

{
  FUN_0043d987(param_1);
  *(undefined4 *)(param_1_00 + 8) = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 0xc) = *(undefined *)(param_1 + 0xc);
  *(undefined *)(param_1_00 + 0xd) = *(undefined *)(param_1 + 0xd);
  *(undefined *)(param_1_00 + 0xe) = *(undefined *)(param_1 + 0xe);
  *(undefined *)(param_1_00 + 0xf) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x10) = *(undefined *)(param_1 + 0x10);
  return param_1_00;
}



void __fastcall FUN_00472304(undefined4 *param_1)

{
  *param_1 = wxAuiDockArt::vftable;
  return;
}



undefined4 * __thiscall FUN_0047230b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxAuiDockArt::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00472328(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined uVar1;
  uint uVar2;
  uint uVar3;
  int *unaff_ESI;
  undefined **local_1c [2];
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x472334;
  local_14 = 0;
  FUN_008f31a0(param_2,param_3,param_4,1);
  local_8 = 1;
  FUN_008f3b70(local_1c);
  local_8._0_1_ = 3;
  FUN_008f7630();
  FUN_00902040(0,0,0,0x7b,0x7b,0x7b);
  uVar2 = (**(code **)(*unaff_ESI + 0x18))();
  uVar2 = uVar2 & 0xff;
  uVar3 = (**(code **)(*unaff_ESI + 0x14))(uVar2);
  uVar3 = uVar3 & 0xff;
  uVar1 = (**(code **)(*unaff_ESI + 0x10))(uVar3);
  FUN_00902040(0xff,0xff,0xff,uVar1,uVar3,uVar2);
  FUN_008ff990(0x7b,0x7b,0x7b);
  FUN_00414f38(local_1c,0xffffffff);
  local_8 = (uint)local_8._1_3_ << 8;
  local_14 = 1;
  local_1c[0] = wxObject::vftable;
  FUN_0083e850();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_004723e3(int *param_1_00,int param_1,int *param_2,int param_3)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  int *unaff_ESI;
  undefined **local_44 [2];
  int local_3c;
  int local_38;
  int local_34;
  int local_30;
  uint local_2c;
  int local_28;
  int local_24;
  int local_20;
  int local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x4723ef;
  local_2c = (**(code **)(*unaff_ESI + 0x10))();
  local_2c = local_2c & 0xff;
  uVar1 = (**(code **)(*param_1_00 + 0x10))();
  iVar3 = (uVar1 & 0xff) - local_2c;
  local_2c = (**(code **)(*unaff_ESI + 0x14))();
  local_2c = local_2c & 0xff;
  uVar1 = (**(code **)(*param_1_00 + 0x14))();
  local_30 = (uVar1 & 0xff) - local_2c;
  local_2c = (**(code **)(*unaff_ESI + 0x18))();
  local_2c = local_2c & 0xff;
  uVar1 = (**(code **)(*param_1_00 + 0x18))();
  if (param_3 == 1) {
    local_18 = param_2[3];
  }
  else {
    local_18 = param_2[2];
  }
  local_18 = local_18 + -1;
  local_1c = 0;
  if (-1 < local_18) {
    local_3c = ((uVar1 & 0xff) - local_2c) * 100;
    local_38 = local_30 * 100;
    local_34 = iVar3 * 100;
    local_28 = 0;
    local_24 = 0;
    local_20 = 0;
    do {
      if (local_18 < 1) {
        iVar3 = 0;
      }
      else {
        iVar3 = (local_20 / local_18) / 100;
      }
      uVar1 = (**(code **)(*unaff_ESI + 0x10))();
      local_30 = (uVar1 & 0xff) + iVar3;
      if (local_18 < 1) {
        local_2c = 0;
      }
      else {
        local_2c = (local_24 / local_18) / 100;
      }
      uVar1 = (**(code **)(*unaff_ESI + 0x14))();
      iVar3 = (uVar1 & 0xff) + local_2c;
      if (local_18 < 1) {
        local_2c = 0;
      }
      else {
        local_2c = (local_28 / local_18) / 100;
      }
      uVar1 = (**(code **)(*unaff_ESI + 0x18))();
      uVar2 = FUN_004561e7(local_30,iVar3,(uVar1 & 0xff) + local_2c,0xff);
      local_8 = 0;
      FUN_009566f0(uVar2,1,100);
      local_8 = CONCAT31(local_8._1_3_,2);
      FUN_0083e850();
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(local_44);
      if (param_3 == 1) {
        (**(code **)(**(int **)(param_1 + 8) + 0x140))
                  (*param_2,local_1c + param_2[1],param_2[2] + *param_2,local_1c + param_2[1]);
      }
      else {
        (**(code **)(**(int **)(param_1 + 8) + 0x140))
                  (*param_2 + local_1c,param_2[1],*param_2 + local_1c,param_2[3] + param_2[1]);
      }
      local_8 = 0xffffffff;
      local_44[0] = wxObject::vftable;
      FUN_0083e850();
      local_20 = local_20 + local_34;
      local_24 = local_24 + local_38;
      local_1c = local_1c + 1;
      local_28 = local_28 + local_3c;
    } while (local_1c <= local_18);
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_004725cc(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  int unaff_EBX;
  undefined local_74 [4];
  uint local_70;
  uint local_6c;
  int local_68;
  int local_64;
  uint local_60;
  undefined local_5c [36];
  undefined local_38 [48];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8 = 0x4725d8;
  local_64 = param_1;
  local_70 = 0;
  (**(code **)(**(int **)(param_1_00 + 8) + 0xa4))();
  if (param_2 < local_68) {
    local_70 = *(uint *)(unaff_EBX + 0x14);
    local_6c = 0;
    local_60 = 0;
    if (local_70 != 0) {
      do {
        FUN_008527e0(local_38,local_60);
        local_8 = 0;
        FUN_00473d8f(&DAT_00f647a8);
        (**(code **)(**(int **)(param_1_00 + 8) + 0xa4))(local_38,&local_68,local_74,0,0,0);
        local_8 = 0xffffffff;
        if (param_2 < local_68) {
          FUN_0040159c();
          break;
        }
        local_6c = local_60;
        FUN_0040159c();
        local_60 = local_60 + 1;
      } while (local_60 < local_70);
    }
    FUN_008527e0(local_5c,local_6c);
    local_8 = 1;
    FUN_00473d8f(&DAT_00f647b0);
    iVar1 = local_64;
    basic_string<>(local_5c);
    *(undefined4 *)(iVar1 + 0x1c) = 0;
    FUN_0040159c();
  }
  else {
    FUN_004325a0(unaff_EBX);
  }
  FUN_00a421fb();
  return;
}



undefined4 __thiscall FUN_00472e2b(undefined4 param_1_00,byte param_1)

{
  FUN_00472e48(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00472e48(undefined4 *param_1)

{
  param_1[0x3f] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x3a] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x35] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x30] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x2b] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x26] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x21] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x1f] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x1d] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x1b] = wxObject::vftable;
  FUN_0083e850();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_00921450();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  param_1[1] = wxObject::vftable;
  FUN_0083e850();
  *param_1 = wxAuiDockArt::vftable;
  return;
}



void __thiscall FUN_00473025(int param_1_00,int param_1,undefined4 param_2)

{
  if (param_1 == 0) {
    *(undefined4 *)(param_1_00 + 0x118) = param_2;
  }
  else if (param_1 == 1) {
    *(undefined4 *)(param_1_00 + 0x114) = param_2;
  }
  else if (param_1 == 2) {
    *(undefined4 *)(param_1_00 + 0x120) = param_2;
  }
  else if (param_1 == 3) {
    *(undefined4 *)(param_1_00 + 0x110) = param_2;
  }
  else if (param_1 == 4) {
    *(undefined4 *)(param_1_00 + 0x11c) = param_2;
  }
  else if (param_1 == 0x10) {
    *(undefined4 *)(param_1_00 + 0x124) = param_2;
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\cmngui_CCustomDockArt.cpp",0x141,"W09E346CD::WFB170790::SetMetric",
                 "Assert failure",L"Invalid Metric Ordinal");
  }
  return;
}



undefined4 __thiscall FUN_004730b1(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  
  switch(param_2) {
  case 5:
    piVar1 = (int *)(param_1_00 + 0x14);
    goto LAB_004730ce;
  case 6:
    piVar1 = (int *)(param_1_00 + 0xc);
    goto LAB_004730ce;
  case 7:
    param_1_00 = param_1_00 + 0x98;
    break;
  case 8:
    param_1_00 = param_1_00 + 0xac;
    break;
  case 9:
    param_1_00 = param_1_00 + 0xd4;
    break;
  case 10:
    param_1_00 = param_1_00 + 0xe8;
    break;
  case 0xb:
    param_1_00 = param_1_00 + 0xc0;
    break;
  case 0xc:
    param_1_00 = param_1_00 + 0xfc;
    break;
  case 0xd:
    (**(code **)(*(int *)(param_1_00 + 4) + 0x4c))(param_1);
    return param_1;
  case 0xe:
    piVar1 = (int *)(param_1_00 + 0x1c);
LAB_004730ce:
    (**(code **)(*piVar1 + 0x3c))(param_1);
    return param_1;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\cmngui_CCustomDockArt.cpp",0x155,"W09E346CD::WFB170790::GetColour",
                   "Assert failure",L"Invalid Metric Ordinal",0);
    }
    FUN_00453f4b();
    return param_1;
  }
  FUN_00458700(param_1_00);
  return param_1;
}



void __thiscall FUN_0047318d(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  int *piVar3;
  int **unaff_FS_OFFSET;
  int *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c1ec88;
  local_14 = *unaff_FS_OFFSET;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  *unaff_FS_OFFSET = (int *)&local_14;
  switch(param_1) {
  case 5:
    piVar3 = (int *)(param_1_00 + 0x14);
    goto LAB_004731d4;
  case 6:
    piVar3 = (int *)(param_1_00 + 0xc);
    goto LAB_004731d4;
  case 7:
    break;
  case 8:
    break;
  case 9:
    break;
  case 10:
    break;
  case 0xb:
    break;
  case 0xc:
    break;
  case 0xd:
    piVar3 = (int *)(param_1_00 + 4);
LAB_004731d4:
    (**(code **)(*piVar3 + 0x30))(param_2);
    goto LAB_004732bd;
  case 0xe:
    (**(code **)(*(int *)(param_1_00 + 0x1c) + 0x30))(param_2);
    uVar2 = FUN_00472130(0x28);
    puStack_10 = (undefined *)0x0;
    (**(code **)(*(int *)(param_1_00 + 0x6c) + 0x30))(uVar2);
    local_14 = (int *)0xffffffff;
    FUN_0083e850();
    uVar2 = FUN_00472130(0x3c);
    local_14 = (int *)0x1;
    (**(code **)(*(int *)(param_1_00 + 0x74) + 0x30))(uVar2);
    uStack_c = 0xffffffff;
    FUN_0083e850();
    goto LAB_004732bd;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\cmngui_CCustomDockArt.cpp",0x171,"W09E346CD::WFB170790::SetColour",
                   "Assert failure",L"Invalid Metric Ordinal",uVar1);
    }
    goto LAB_004732bd;
  }
  FUN_004722cb(param_2);
LAB_004732bd:
  *unaff_FS_OFFSET = local_14;
  return;
}



undefined4 __thiscall FUN_00473313(int param_1_00,undefined4 param_1,int param_2)

{
  undefined **ppuVar1;
  
  if (param_2 == 0xf) {
    ppuVar1 = (undefined **)(param_1_00 + 0x24);
  }
  else {
    ppuVar1 = &PTR_vftable_03238ce4;
  }
  FUN_00473c49(ppuVar1);
  return param_1;
}



void __thiscall
FUN_004733be(int *param_1_00,int param_1,undefined4 param_2,int *param_3,int param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  int iVar7;
  
  iVar5 = param_1;
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 1);
  uVar6 = FUN_008f8a00(9);
  (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar6);
  iVar1 = *param_3;
  iVar2 = param_3[1];
  iVar3 = param_3[2];
  iVar4 = param_3[3];
  iVar7 = (**(code **)(*param_1_00 + 4))(3);
  if ((*(uint *)(param_4 + 0x58) >> 0xd & 1) == 0) {
    if (0 < iVar7) {
      do {
        (**(code **)(**(int **)(param_1 + 8) + 0x150))(iVar1,iVar2,iVar3,iVar4);
        FUN_008f7520(0xffffffff,0xffffffff);
        iVar7 = iVar7 + -1;
      } while (iVar7 != 0);
    }
  }
  else {
    param_1 = iVar7;
    if (0 < iVar7) {
      do {
        uVar6 = FUN_008f8330(0x25);
        (**(code **)(**(int **)(iVar5 + 8) + 0x58))(uVar6);
        (**(code **)(**(int **)(iVar5 + 8) + 0x140))(iVar1,iVar2,iVar3 + iVar1,iVar2);
        (**(code **)(**(int **)(iVar5 + 8) + 0x140))(iVar1,iVar2,iVar1,iVar4 + iVar2);
        (**(code **)(**(int **)(iVar5 + 8) + 0x58))(param_1_00 + 1);
        iVar7 = iVar4 + -1 + iVar2;
        (**(code **)(**(int **)(iVar5 + 8) + 0x140))(iVar1,iVar7,iVar3 + iVar1,iVar7);
        iVar7 = iVar3 + -1 + iVar1;
        (**(code **)(**(int **)(iVar5 + 8) + 0x140))(iVar7,iVar2,iVar7,iVar4 + iVar2);
        FUN_008f7520(0xffffffff,0xffffffff);
        param_1 = param_1 + -1;
      } while (param_1 != 0);
    }
  }
  return;
}



void FUN_004734fe(int param_1,char param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 *unaff_EBX;
  int unaff_EDI;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1abbe;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_14;
  if (*(int *)(param_1 + 0x124) == 0) {
    if (param_2 == '\0') {
      uVar2 = FUN_0095d7e0(param_1 + 0xd4,100);
      local_c = 1;
      (**(code **)(**(int **)(unaff_EDI + 8) + 0x60))(uVar2);
    }
    else {
      uVar2 = FUN_0095d7e0(param_1 + 0x98,100);
      local_c = 0;
      (**(code **)(**(int **)(unaff_EDI + 8) + 0x60))(uVar2,uVar1);
    }
    puStack_10 = (undefined *)0xffffffff;
    FUN_008f7630();
    (**(code **)(**(int **)(unaff_EDI + 8) + 0x150))
              (*unaff_EBX,unaff_EBX[1],unaff_EBX[2],unaff_EBX[3]);
  }
  else {
    FUN_004723e3();
  }
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_0047375a(int param_1_00,int param_1,undefined4 param_2,int *param_3,int param_4)

{
  undefined4 uVar1;
  int iVar2;
  
  uVar1 = FUN_008f8330(0x24);
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar1);
  (**(code **)(**(int **)(param_1 + 8) + 0x60))(param_1_00 + 0x1c);
  (**(code **)(**(int **)(param_1 + 8) + 0x150))(*param_3,param_3[1],param_3[2],param_3[3]);
  iVar2 = 5;
  if ((*(uint *)(param_4 + 0x58) >> 0xf & 1) == 0) {
    do {
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x6c);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + 3,param_3[1] + iVar2);
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x74);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + 3,param_3[1] + 1 + iVar2);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + 4,param_3[1] + iVar2);
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x7c);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + 5,param_3[1] + 1 + iVar2);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + 5,param_3[1] + 2 + iVar2);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + 4,param_3[1] + 2 + iVar2);
      iVar2 = iVar2 + 4;
    } while (iVar2 <= param_3[3] + -5);
  }
  else {
    do {
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x6c);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + iVar2,param_3[1] + 3);
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x74);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + 1 + iVar2,param_3[1] + 3);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + iVar2,param_3[1] + 4);
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x7c);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + 1 + iVar2,param_3[1] + 5);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + 2 + iVar2,param_3[1] + 5);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + 2 + iVar2,param_3[1] + 4);
      iVar2 = iVar2 + 4;
    } while (iVar2 <= param_3[2] + -5);
  }
  return;
}



void __thiscall
FUN_00473962(int param_1_00,int param_1,undefined4 param_2,int param_3,int param_4,int *param_5,
            int param_6)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined **local_4c;
  int local_48;
  undefined4 local_44;
  undefined4 uStack_40;
  int local_3c;
  int local_38;
  undefined **ppuStack_34;
  undefined **local_30;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  uStack_10 = &LAB_00c1ec5d;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_14;
  local_48 = 0;
  local_4c = wxBitmap::vftable;
  local_c = 0;
  if (param_6 != 0) {
    if (param_3 == 0x66) {
      uVar1 = *(uint *)(param_6 + 0x58);
      if ((uVar1 >> 0x10 & 1) == 0) {
        iVar3 = param_1_00 + 0x5c;
        if ((uVar1 & 0x4000) == 0) {
          iVar3 = param_1_00 + 0x3c;
        }
      }
      else if ((uVar1 & 0x4000) == 0) {
        iVar3 = param_1_00 + 0x44;
      }
      else {
        iVar3 = param_1_00 + 100;
      }
    }
    else if (param_3 == 0x68) {
      if ((*(uint *)(param_6 + 0x58) & 0x4000) == 0) {
        iVar3 = param_1_00 + 0x34;
      }
      else {
        iVar3 = param_1_00 + 0x54;
      }
    }
    else if ((*(uint *)(param_6 + 0x58) & 0x4000) == 0) {
      iVar3 = param_1_00 + 0x2c;
    }
    else {
      iVar3 = param_1_00 + 0x4c;
    }
    FUN_0043d987(iVar3);
    local_3c = *param_5;
    ppuStack_34 = (undefined **)param_5[2];
    local_30 = (undefined **)param_5[3];
    iVar3 = local_48;
    if (local_48 != 0) {
      iVar3 = *(int *)(local_48 + 0xc);
    }
    local_38 = param_5[1] + ((int)local_30 / 2 - iVar3 / 2);
    if (param_4 == 4) {
      local_3c = local_3c + 1;
      local_38 = local_38 + 1;
    }
    if ((param_4 == 2) || (param_4 == 4)) {
      if ((*(uint *)(param_6 + 0x58) & 0x4000) == 0) {
        uVar4 = FUN_00472130(0x78);
        local_c._0_1_ = 5;
        uVar4 = FUN_0095d7e0(uVar4,100);
        local_c = CONCAT31(local_c._1_3_,6);
        (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar4);
        uStack_10._0_1_ = 5;
        FUN_008f7630();
        uStack_10._0_1_ = 0;
        local_30 = wxObject::vftable;
        FUN_0083e850();
        uVar4 = FUN_00472130(0x46);
        uStack_10._0_1_ = 7;
        uVar4 = FUN_009566f0(uVar4,1,100);
        uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,8);
        (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar4);
        local_14._0_1_ = 7;
      }
      else {
        uVar4 = FUN_00472130(0x78);
        local_c._0_1_ = 1;
        uVar4 = FUN_0095d7e0(uVar4,100);
        local_c = CONCAT31(local_c._1_3_,2);
        (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar4);
        uStack_10._0_1_ = 1;
        FUN_008f7630();
        uStack_10._0_1_ = 0;
        local_30 = wxObject::vftable;
        FUN_0083e850();
        uVar4 = FUN_00472130(0x46);
        uStack_10._0_1_ = 3;
        uVar4 = FUN_009566f0(uVar4,1,100);
        uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,4);
        (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar4);
        local_14._0_1_ = 3;
      }
      local_4c = wxObject::vftable;
      FUN_0083e850();
      local_14 = (void *)((uint)local_14._1_3_ << 8);
      ppuStack_34 = wxObject::vftable;
      FUN_0083e850();
      (**(code **)(**(int **)(param_1 + 8) + 0x150))(local_44,uStack_40,0xf,0xf);
    }
    (**(code **)(**(int **)(param_1 + 8) + 0x164))(&local_4c,local_3c,local_38,1);
  }
  local_c = 0xffffffff;
  FUN_008f7630(uVar2);
  ExceptionList = local_14;
  return;
}



int __fastcall FUN_00473c08(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if (iVar1 == 0) {
    return iVar1;
  }
  return *(int *)(iVar1 + 0xc);
}



void __thiscall FUN_00473c14(int param_1_00,undefined4 *param_1)

{
  (**(code **)(**(int **)(param_1_00 + 8) + 0xb4))(*param_1,param_1[1],param_1[2],param_1[3]);
  return;
}



undefined4 * __thiscall FUN_00473c31(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00473dab(param_1);
  *param_1_00 = wxFontBase::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_00473c49(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00473c31(param_1);
  *param_1_00 = wxFont::vftable;
  return param_1_00;
}



void FUN_00473c61(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  FUN_009228b0(param_1,&DAT_03238d04,0,param_2,param_3,param_4,param_5,param_6,param_7);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00473c89(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  param_1_00[1] = 0;
  *param_1_00 = wxFont::vftable;
  FUN_00473c61(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  return param_1_00;
}



int __thiscall FUN_00473ccc(int param_1_00,int param_1,uint param_2)

{
  char cVar1;
  int iVar2;
  int iVar3;
  
  cVar1 = FUN_00417ec1(param_1);
  if (cVar1 == '\0') {
    if ((-*(int *)(param_1_00 + 0x14) - 1U <= param_2) ||
       (*(uint *)(param_1_00 + 0x14) + param_2 < *(uint *)(param_1_00 + 0x14))) {
      std::_String_base::_Xlen();
    }
    if (param_2 != 0) {
      iVar3 = *(int *)(param_1_00 + 0x14) + param_2;
      cVar1 = FUN_004182d2(iVar3,0);
      if (cVar1 != '\0') {
        if (*(uint *)(param_1_00 + 0x18) < 8) {
          iVar2 = param_1_00 + 4;
        }
        else {
          iVar2 = *(int *)(param_1_00 + 4);
        }
        Copy_s(iVar2 + *(int *)(param_1_00 + 0x14) * 2,
               *(uint *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14),param_1,param_2);
        FUN_0040180b(iVar3);
      }
    }
  }
  else {
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      iVar3 = param_1_00 + 4;
    }
    else {
      iVar3 = *(int *)(param_1_00 + 4);
    }
    param_1_00 = FID_conflict_append(param_1_00,param_1 - iVar3 >> 1,param_2);
  }
  return param_1_00;
}



void FUN_00473d6b(short *param_1)

{
  short sVar1;
  short *psVar2;
  
  psVar2 = param_1;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  FUN_00473ccc(param_1,(int)psVar2 - (int)(param_1 + 1) >> 1);
  return;
}



undefined4 __thiscall FUN_00473d8f(undefined4 param_1_00,undefined2 *param_1)

{
  if (param_1 == (undefined2 *)0x0) {
    param_1 = &DAT_00fae9c8;
  }
  FUN_00473d6b(param_1);
  return param_1_00;
}



undefined4 * __thiscall FUN_00473dab(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_004586cc(param_1);
  *param_1_00 = wxGDIObject::vftable;
  return param_1_00;
}



undefined4 FUN_00473dc3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f58c60,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f58e68,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f59070,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f59278,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f59480,0x1ce,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00473e29(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f59650,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f59858,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f59a60,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f59c68,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f59e70,0x1d5,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00473e8f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f5a048,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f5a250,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f5a458,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f5a660,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f5a868,0xb1,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00473ef5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f5a920,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f5ab28,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f5ad30,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f5af38,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f5b140,0x178,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00473f5b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f5b2c0,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f5b4c8,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f5b6d0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f5b8d8,0x1ed,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00473fb4(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f5c080,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f5c288,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f5c490,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f5c698,0xf4,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047400d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f5c790,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f5c998,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f5cba0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f5cda8,0x162,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00474066(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f5cf10,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f5d118,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f5d320,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f5d528,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f5d730,0xad,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004740cc(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f5d7e0,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f5d9e8,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f5dbf0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f5ddf8,0x17d,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00474125(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f5df78,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f5e180,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f5e388,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f5e590,0x136,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047417e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f5e6c8,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f5e8d0,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f5ead8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f5ece0,0x1d2,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004741d7(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f5eeb8,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f5f0c0,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f5f2c8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f5f4d0,0x181,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00474230(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f5f658,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f5f860,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f5fa68,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f5fc70,0x165,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00474289(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f5fdd8,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f5ffe0,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f601e8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f603f0,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f605f8,0x18e,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004742ef(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f60788,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f60990,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f60b98,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f60da0,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f60fa8,0x6b,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00474352(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f61050,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f61258,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f61460,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f61668,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f6186c,0x3c,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004743b5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f618b0,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f61ab8,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f61cc0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f61ec8,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f620d0,299,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047441b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f62218,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f62420,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f62628,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f62830,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f62a38,0xfa,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00474481(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f62b38,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f62d40,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f62f48,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f63150,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f63358,0xf0,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004744e7(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f63450,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f63658,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f63860,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f63a68,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00f63c70,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f63e74,0x27,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00474557(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f63eb0,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f640b8,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f642c0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f644c8,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f646d0,0xd4,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined ** FUN_004745bd(void)

{
  return &PTR_u_W7EDBDB8A_032472e0;
}



undefined ** FUN_004745c3(void)

{
  return &PTR_PTR_00f58c58;
}



undefined * FUN_004745c9(void)

{
  return &DAT_032ee5e8;
}



undefined4 FUN_004747e9(undefined4 param_1)

{
  int in_EAX;
  
  FUN_004750de(*(undefined4 *)(in_EAX + 0x328),param_1);
  return param_1;
}



void __thiscall FUN_00474806(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxKeyEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00474851(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x10);
  if (pvVar1 != (void *)0x0) {
    FUN_00474885(param_2,param_3,0);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_00474885(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  param_1_00[1] = param_3;
  param_1_00[2] = param_1;
  *param_1_00 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxKeyEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
                ::vftable;
  param_1_00[3] = param_2;
  return;
}



void __thiscall FUN_004748b3(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 local_c;
  undefined4 local_8;
  
  local_c = param_1;
  local_8 = param_2;
  (**(code **)(*param_1_00 + 0x90))(&local_c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004748d4(void)

{
  undefined4 *unaff_EDI;
  
  *unaff_EDI = W09E346CD::W663832F7::vftable;
  FUN_00672a11();
  FUN_00507e58();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined __thiscall FUN_0047490b(int param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined uVar2;
  
  uVar2 = 0;
  if ((-(uint)(*(int *)(param_1_00 + 8) != 0) & 0x7a491c) != 0) {
    cVar1 = FUN_00818f57(&LAB_00474955,param_1);
    if (cVar1 != '\0') {
      uVar2 = 1;
    }
  }
  FUN_00507e58();
  return uVar2;
}



undefined4 FUN_00474979(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f568c8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f56acc,0x36,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004749b2(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f56b08,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f56d10,0xdd,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00474a15(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f56f28,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f4501c,0x30,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00474bad(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f57cc8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f57ecc,0x1e,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00474c34(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f58100,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f58304,0x1e,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00474cbb(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f586e0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f588e8,0xc9,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00474d1e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f56650,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f56858,0x53,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 __thiscall FUN_00474d57(undefined4 param_1_00,byte param_1)

{
  FUN_00942850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_00474d73(int param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x1a4) != 0)) {
    FUN_00840480("D:\\wxWidgets-2.9.3\\include\\wx/vlbox.h",0x58,"wxVListBox::GetSelection",
                 "!HasMultipleSelection()",L"GetSelection() can\'t be used with wxLB_MULTIPLE");
  }
  return *(undefined4 *)(param_1 + 0x19c);
}



void FUN_00474db5(void)

{
  FUN_0042a260();
  return;
}



undefined4 __thiscall FUN_00474ef8(undefined4 param_1_00,byte param_1)

{
  FUN_00474f15(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00474f15(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 10;
  if (*(int *)(param_1 + 0x330) != 0) {
    iStack_24 = 0x474f3a;
    FUN_0040127a();
  }
  iStack_24 = 0;
  uStack_28 = 1;
  FUN_00401829();
  local_8._0_1_ = 8;
  iStack_24 = 0x474f58;
  FUN_00507e58();
  local_8._0_1_ = 7;
  *(undefined ***)(param_1 + 0x2dc) = wxObject::vftable;
  iStack_24 = 0x474f6e;
  FUN_0083e850();
  local_8._0_1_ = 6;
  *(undefined ***)(param_1 + 0x2c8) = wxObject::vftable;
  iStack_24 = 0x474f7f;
  FUN_0083e850();
  local_8._0_1_ = 5;
  *(undefined ***)(param_1 + 0x2b4) = wxObject::vftable;
  iStack_24 = 0x474f90;
  FUN_0083e850();
  iStack_24 = 0x474f9b;
  FUN_0040159c();
  iStack_24 = param_1 + 0x278;
  local_8._0_1_ = 3;
  puVar1 = &uStack_28;
  uStack_28 = 0x474fab;
  FUN_0044237a();
  puVar1[-1] = param_1 + 0x260;
  local_8._0_1_ = 2;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x474fbb;
  FUN_0044237a();
  local_8._0_1_ = 1;
  if (*(int *)(param_1 + 0x25c) != 0) {
    *(undefined4 *)((int)puVar2 + -4) = 0x474fce;
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  *(undefined4 *)((int)puVar2 + -4) = 0x474fdd;
  FUN_00942850();
  local_8 = 0xffffffff;
  *(undefined4 *)((int)puVar2 + -4) = 0x474fe8;
  FUN_009f3c60();
  *(undefined4 *)((int)puVar2 + -4) = 0x474fed;
  return;
}



void FUN_00475067(void)

{
  int unaff_EDI;
  
  FUN_006b1e1c();
  FUN_009f3e20(*(int *)(unaff_EDI + 0x288) - *(int *)(unaff_EDI + 0x284) >> 3);
  if (*(int *)(unaff_EDI + 0x138) == 0) {
                    // WARNING: Could not recover jumptable at 0x00475098. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*(int *)(unaff_EDI + 0x174) + 4))();
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004750de(int param_1,int *param_2)

{
  int *piVar1;
  undefined local_1c [8];
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4750ea;
  local_14 = 0;
  if (*(int *)(param_1 + 600) != 0) {
    *param_2 = *(int *)(param_1 + 600);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 0x25c);
  }
  piVar1 = (int *)FUN_0043c0bf(local_1c);
  *param_2 = *piVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(piVar1 + 1);
}



undefined4 __fastcall FUN_0047514b(int param_1)

{
  if (*(int *)(param_1 + 600) != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 0x25c);
  }
  return 0;
}



void __fastcall FUN_0047518b(int param_1)

{
  undefined4 local_54 [16];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c27c8f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_54[0] = 0;
  local_c = 0;
  if (*(int *)(param_1 + 0x40) - *(int *)(param_1 + 0x3c) >> 3 != 0) {
    FUN_00436b17();
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_54);
}



void __thiscall FUN_0047538a(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = FUN_00957f00(*(undefined4 *)(param_1 + 0x30));
  if (iVar1 != -1) {
    FUN_00957520(iVar1);
    *(int *)(param_1_00 + 0x254) = iVar1;
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



void __fastcall FUN_004753c0(int param_1)

{
  int iVar1;
  
  if (-1 < *(int *)(param_1 + 0x254)) {
    iVar1 = FUN_00436b17();
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  FUN_00942860();
  return;
}



void __thiscall FUN_00475571(int param_1_00,int param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int local_18;
  int local_14;
  int local_10;
  undefined4 local_c;
  int local_8;
  
  local_8 = param_1_00;
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x2dc);
  iVar1 = param_2[3] + -1 + param_2[1];
  (**(code **)(**(int **)(param_1 + 8) + 0x140))
            ((param_2[2] * 2) / 3 + *param_2,iVar1,*param_2 + param_2[2],iVar1);
  local_18 = *param_2;
  local_14 = param_2[3] + -1 + param_2[1];
  iVar1 = local_8 + 0x2b4;
  iVar2 = local_8 + 0x2c8;
  local_10 = 0x20;
  local_c = 1;
  (**(code **)(**(int **)(param_1 + 8) + 0x130))(&local_18,iVar2,iVar1,0x20);
  local_18 = *param_2 + 0x20;
  local_14 = param_2[3] + -1 + param_2[1];
  local_c = 1;
  local_10 = (param_2[2] * 2) / 3 + -0x20;
  (**(code **)(**(int **)(param_1 + 8) + 0x130))(&local_18,iVar1,iVar2,0x20);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00475658(undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  locale local_18 [4];
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x475664;
  uVar2 = 0;
  local_14 = 0;
  std::locale::locale(local_18);
  FUN_00474db5();
  local_8 = 1;
  local_14 = 3;
  cVar1 = FUN_00429820(param_1);
  if ((cVar1 != '\0') || ((0x40 < (ushort)param_1 && ((ushort)param_1 < 0x5b)))) {
    uVar2 = 1;
  }
  FUN_0042a290();
  std::locale::~locale(local_18);
  return uVar2;
}



void __fastcall FUN_004756d7(int param_1)

{
  if (*(int *)(param_1 + 0xd4) != 0) {
    FUN_00432156();
    FUN_00957520(0xffffffff);
    *(undefined4 *)(param_1 + 0xc) = 0xffffffff;
    FUN_00475067();
  }
  return;
}



void __thiscall FUN_00475837(int param_1_00,int param_1)

{
  char cVar1;
  
  if (((*(byte *)(param_1 + 0x28) & 7) == 0) &&
     (cVar1 = FUN_00475658(*(undefined2 *)(param_1 + 0x38)), cVar1 != '\0')) {
    FUN_00475877();
    (**(code **)(**(int **)(param_1_00 + 4) + 0x360))();
    return;
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



void __fastcall FUN_00475877(int param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  short sVar4;
  undefined4 local_bc [2];
  undefined4 local_b4;
  int local_b0;
  int local_ac;
  int local_a8;
  undefined local_a0 [36];
  undefined local_7c [28];
  undefined local_60 [12];
  int local_54;
  int local_50;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c27c41;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_bc;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  sVar4 = *(short *)(param_2 + 0x38);
  if ((sVar4 == 0) && (*(int *)(param_2 + 0x34) == 0xd)) {
    sVar4 = 0xd;
  }
  *(undefined *)(param_1 + 0x324) = 0;
  local_b0 = param_1;
  cVar1 = FUN_00475658(sVar4,uVar2);
  if (cVar1 == '\0') {
    if (sVar4 != 8) {
      if (sVar4 == 0xd) {
        FUN_00475c00();
      }
      else if (sVar4 == 0x1b) {
        FUN_00942860();
      }
      else if (sVar4 != 0x20) {
        *(undefined *)(param_2 + 0x24) = 1;
      }
      goto LAB_00475945;
    }
    if (*(int *)(param_1 + 0x31c) == 0) goto LAB_00475945;
    FUN_004220f0(*(int *)(param_1 + 0x31c) + -1);
  }
  else {
    FID_conflict_append(1,sVar4);
  }
  *(undefined *)(param_1 + 0x324) = 1;
LAB_00475945:
  if (*(char *)(param_1 + 0x324) != '\0') {
    if (*(int *)(param_1 + 0x31c) == 0) {
      FUN_00475067();
    }
    else {
      FUN_004382a5(local_60);
      local_c = 0;
      local_b4 = 0;
      local_a8 = param_1 + 0x260;
      if (*(int *)(param_1 + 0x270) - *(int *)(param_1 + 0x26c) >> 3 != 0) {
        local_ac = param_1 + 0x308;
        puVar3 = (undefined4 *)FUN_00436b17();
        local_bc[0] = *puVar3;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar3 + 1);
      }
      if ((local_50 - local_54 & 0xfffffff8U) == 0) {
        FUN_004382a5(local_7c);
        local_c = CONCAT31(local_c._1_3_,4);
        puVar3 = (undefined4 *)FUN_0043c0bf(local_a0);
        local_bc[0] = *puVar3;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar3 + 1);
      }
      FUN_00475067();
      FUN_00957520(0);
      *(undefined4 *)(param_1 + 0x254) = 0;
      local_c = 0xffffffff;
      FUN_0044237a(local_60);
    }
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00475c00(void)

{
  int iVar1;
  undefined4 extraout_ECX;
  int unaff_EBX;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x475c0c;
  local_30 = 0x475c13;
  iVar1 = FUN_00474d73();
  local_30 = 0;
  *(int *)(unaff_EBX + 0x254) = iVar1;
  local_1c = 0;
  local_18 = 0;
  local_8 = 0;
  if (-1 < iVar1) {
    local_30 = 0x475c35;
    FUN_00436b17();
    local_30 = 0x475c3d;
    FUN_004fe47e();
    local_30 = extraout_ECX;
  }
  local_14 = &local_34;
  local_34 = local_1c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void __thiscall FUN_00475ce5(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxMouseCaptureLostEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall FUN_00475d30(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = &LAB_00c12b82;
  if (param_1_00 != param_1) {
    puVar1 = (undefined *)*param_1_00;
    if (puVar1 == (undefined *)0x0) {
      puVar1 = (undefined *)FUN_00507e58();
    }
    else {
      *param_1 = puVar1;
      if (((uint)puVar1 & 1) == 0) {
        puVar1 = (undefined *)(**(code **)((uint)puVar1 & 0xfffffffe))(param_1_00 + 2,param_1 + 2,1)
        ;
      }
      else {
        puVar3 = param_1_00 + 2;
        puVar4 = param_1 + 2;
        for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
          *puVar4 = *puVar3;
          puVar3 = puVar3 + 1;
          puVar4 = puVar4 + 1;
        }
      }
      *param_1_00 = 0;
    }
  }
  return puVar1;
}



void Catch_All_00475d88(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  **(undefined4 **)(unaff_EBP + 8) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00475d97(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x10);
  if (pvVar1 != (void *)0x0) {
    FUN_00475e03(param_2,param_3,0);
  }
  return;
}



void FUN_00475dcb(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 auStack_3c [4];
  undefined4 uStack_2c;
  uint uStack_28;
  uint local_8;
  
  uStack_28 = param_2;
  local_8 = local_8 & 0xffffff00;
  uStack_2c = 0x475de4;
  puVar1 = (undefined4 *)FUN_00475e31();
  uStack_28 = local_8;
  puVar3 = auStack_3c;
  for (iVar2 = 5; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar3 = *puVar1;
    puVar1 = puVar1 + 1;
    puVar3 = puVar3 + 1;
  }
  FUN_00475e5f();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_00475e03(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  param_1_00[1] = param_3;
  param_1_00[2] = param_1;
  *param_1_00 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxMouseCaptureLostEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
                ::vftable;
  param_1_00[3] = param_2;
  return;
}



void FUN_00475e31(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *unaff_ESI;
  
  puVar2 = (undefined4 *)FUN_00475f84(param_1);
  *unaff_ESI = *puVar2;
  unaff_ESI[1] = puVar2[1];
  uVar1 = puVar2[2];
  unaff_ESI[3] = puVar2[3];
  unaff_ESI[2] = uVar1;
  return;
}



void FUN_00475e5f(void)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined param_6;
  undefined4 auStack_7c [5];
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined4 *puStack_54;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 local_1c [6];
  
  puStack_54 = &local_44;
  uStack_58 = 0x475e79;
  FUN_00412721();
  puStack_54 = &local_3c;
  uStack_58 = 0x475e85;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            ();
  puStack_54 = (undefined4 *)local_40;
  uStack_58 = local_44;
  uStack_5c = local_38;
  uStack_60 = local_3c;
  uStack_64 = 0x475ea1;
  puVar2 = (undefined4 *)FUN_00475fba();
  local_3c = *puVar2;
  local_38 = puVar2[1];
  uStack_34 = puVar2[2];
  uStack_30 = puVar2[3];
  local_44 = CONCAT31(local_44._1_3_,param_6);
  puVar2 = (undefined4 *)&stack0x00000004;
  puVar4 = local_1c;
  for (iVar3 = 5; iVar3 != 0; iVar3 = iVar3 + -1) {
    *puVar4 = *puVar2;
    puVar2 = puVar2 + 1;
    puVar4 = puVar4 + 1;
  }
  puStack_54 = (undefined4 *)0x475ec7;
  cVar1 = FUN_004761e2();
  if (cVar1 != '\0') {
    uStack_64 = local_44;
    uStack_68 = local_44;
    uStack_60 = local_3c;
    uStack_5c = local_38;
    uStack_58 = uStack_34;
    puStack_54 = (undefined4 *)uStack_30;
    puVar2 = local_1c;
    puVar4 = auStack_7c;
    for (iVar3 = 5; iVar3 != 0; iVar3 = iVar3 + -1) {
      *puVar4 = *puVar2;
      puVar2 = puVar2 + 1;
      puVar4 = puVar4 + 1;
    }
    FUN_00476216();
  }
  return;
}



void FUN_00475efd(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  char cVar8;
  undefined4 *puVar9;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_00412721(&local_c);
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            ();
  puVar9 = (undefined4 *)FUN_004760e5(&param_1,local_14,local_10,local_c,local_8);
  uVar7 = param_3;
  uVar6 = param_2;
  uVar5 = param_1;
  uVar1 = *puVar9;
  uVar2 = puVar9[1];
  uVar3 = puVar9[2];
  uVar4 = puVar9[3];
  local_8 = CONCAT31(local_8._1_3_,(undefined)param_4);
  cVar8 = FUN_004761e2();
  if (cVar8 != '\0') {
    FUN_0047638e(uVar5,uVar6,uVar7,local_8,param_4,uVar1,uVar2,uVar3,uVar4);
  }
  return;
}



void FUN_00475f84(void)

{
  undefined4 *puVar1;
  undefined4 *unaff_EDI;
  
  puVar1 = (undefined4 *)FUN_004289f0();
  *unaff_EDI = *puVar1;
  unaff_EDI[1] = puVar1[1];
  puVar1 = (undefined4 *)FUN_00428a20();
  unaff_EDI[2] = *puVar1;
  unaff_EDI[3] = puVar1[1];
  return;
}



void FUN_00475fba(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  wchar_t *pwVar2;
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  wchar_t *local_8;
  
  local_10 = param_1;
  local_c = param_2;
  cVar1 = FUN_008477d0(&param_3);
  while (cVar1 != '\0') {
    local_28 = unaff_EDI[2];
    local_24 = unaff_EDI[3];
    local_30 = *unaff_EDI;
    local_2c = unaff_EDI[1];
    cVar1 = FUN_00412797(&local_28);
    if (cVar1 != '\0') break;
    local_18 = local_10;
    local_20 = *unaff_EDI;
    local_1c = unaff_EDI[1];
    local_14 = param_2;
    while (cVar1 = FUN_008477d0(&param_3), cVar1 != '\0') {
      local_38 = unaff_EDI[2];
      local_34 = unaff_EDI[3];
      cVar1 = FUN_008477d0(&local_38);
      if (cVar1 == '\0') break;
      local_8 = std::
                _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                             *)&local_18);
      pwVar2 = std::
               _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
               ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                            *)&local_20);
      if (*local_8 != *pwVar2) break;
      FUN_00847800();
      FUN_00847800();
    }
    local_40 = unaff_EDI[2];
    local_3c = unaff_EDI[3];
    cVar1 = FUN_00412797(&local_40);
    if (cVar1 != '\0') {
      *unaff_ESI = local_10;
      unaff_ESI[2] = local_18;
      unaff_ESI[1] = param_2;
      unaff_ESI[3] = local_14;
      return;
    }
    FUN_00847800();
    cVar1 = FUN_008477d0(&param_3);
    param_2 = local_c;
  }
  *unaff_ESI = param_3;
  unaff_ESI[2] = param_3;
  unaff_ESI[3] = param_4;
  unaff_ESI[1] = param_4;
  return;
}



void FUN_004760e5(wchar_t **param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  char cVar1;
  wchar_t *pwVar2;
  undefined4 *unaff_ESI;
  wchar_t *pwVar3;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  local_10 = param_2;
  local_c = param_3;
  cVar1 = FUN_008477d0(&param_4);
  local_18 = local_10;
  while( true ) {
    if ((cVar1 == '\0') ||
       (pwVar3 = *param_1, local_14 = param_3, local_10 = local_18, pwVar3 == param_1[1])) {
      *unaff_ESI = param_4;
      unaff_ESI[2] = param_4;
      unaff_ESI[3] = param_5;
      unaff_ESI[1] = param_5;
      return;
    }
    for (; ((cVar1 = FUN_008477d0(&param_4), cVar1 != '\0' && (pwVar3 != param_1[1])) &&
           (pwVar2 = std::
                     _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                     ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                                  *)&local_18), *pwVar2 == *pwVar3)); pwVar3 = pwVar3 + 1) {
      FUN_00847800();
    }
    if (pwVar3 == param_1[1]) break;
    FUN_00847800();
    cVar1 = FUN_008477d0(&param_4);
    local_18 = local_10;
    param_3 = local_c;
  }
  *unaff_ESI = local_10;
  unaff_ESI[2] = local_18;
  unaff_ESI[1] = param_3;
  unaff_ESI[3] = local_14;
  return;
}



void FUN_004761aa(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  *param_1)

{
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            (param_1,&local_c);
  *unaff_ESI = local_c;
  unaff_ESI[1] = local_8;
  FUN_00412721(&local_c);
  unaff_ESI[2] = local_c;
  unaff_ESI[3] = local_8;
  return;
}



bool FUN_004761e2(void)

{
  char cVar1;
  int in_EAX;
  undefined4 local_c;
  undefined4 local_8;
  
  local_c = *(undefined4 *)(in_EAX + 8);
  local_8 = *(undefined4 *)(in_EAX + 0xc);
  cVar1 = FUN_00412797(&local_c);
  return cVar1 == '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00476216(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *puVar5;
  undefined4 param_8;
  undefined4 in_stack_00000024;
  undefined4 in_stack_00000028;
  uint in_stack_0000002c;
  uint local_60;
  int local_5c;
  undefined4 local_50;
  uint local_4c;
  undefined *local_44;
  undefined local_30 [8];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  uint local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uVar2 = in_stack_00000024;
  uVar1 = param_8;
  uStack_4 = 0x68;
  local_8 = 0x476222;
  local_50 = in_stack_00000028;
  local_4c = in_stack_0000002c;
  local_44 = &stack0x00000018;
  FUN_00467a19();
  local_8 = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            ();
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            ();
  while( true ) {
    cVar4 = FUN_008477d0(&local_50);
    if (cVar4 == '\0') break;
    puVar5 = (undefined4 *)FUN_00476507(local_18,local_14,local_20,local_1c,uVar1,uVar2);
    uVar3 = local_50;
    local_18 = *puVar5;
    local_14 = puVar5[1];
    local_20 = local_50;
    local_1c = local_4c;
    FUN_0047652b();
    FUN_00412721(&local_28);
    puVar5 = (undefined4 *)FUN_00475fba(uVar3,local_4c,local_28,local_24);
    FUN_00476555(*puVar5,puVar5[1],puVar5[2],puVar5[3]);
  }
  FUN_00412721(&local_28);
  puVar5 = (undefined4 *)FUN_00476507(local_18,local_14,local_20,local_1c,local_28,local_24);
  uVar1 = *puVar5;
  uVar2 = puVar5[1];
  if (local_5c == 0) {
    FUN_00412721(&local_28);
    FUN_004320f0(local_30,uVar1,uVar2,local_28,local_24);
  }
  else {
    local_14 = local_60 + local_5c;
    if (local_14 < local_60) {
      FUN_00a3fb10();
    }
    local_1c = local_60;
    if (local_5c + local_60 < local_60) {
      FUN_00a3fb10();
    }
    FUN_00412721(&local_28);
    FUN_0047657f();
  }
  FUN_005f489f();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0047638e(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *puVar5;
  undefined4 param_6;
  undefined4 in_stack_0000001c;
  undefined4 in_stack_00000020;
  uint in_stack_00000024;
  uint local_60;
  int local_5c;
  undefined4 local_50;
  uint local_4c;
  undefined *local_44;
  undefined local_30 [8];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  uint local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uVar2 = in_stack_0000001c;
  uVar1 = param_6;
  uStack_4 = 0x68;
  local_8 = 0x47639a;
  local_50 = in_stack_00000020;
  local_4c = in_stack_00000024;
  local_44 = &stack0x00000010;
  FUN_00467a19();
  local_8 = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            ();
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            ();
  while( true ) {
    cVar4 = FUN_008477d0(&local_50);
    if (cVar4 == '\0') break;
    puVar5 = (undefined4 *)FUN_00476507(local_18,local_14,local_20,local_1c,uVar1,uVar2);
    uVar3 = local_50;
    local_18 = *puVar5;
    local_14 = puVar5[1];
    local_20 = local_50;
    local_1c = local_4c;
    FUN_0047652b();
    FUN_00412721(&local_28);
    puVar5 = (undefined4 *)FUN_004760e5(&stack0x00000004,uVar3,local_4c,local_28,local_24);
    FUN_00476555(*puVar5,puVar5[1],puVar5[2],puVar5[3]);
  }
  FUN_00412721(&local_28);
  puVar5 = (undefined4 *)FUN_00476507(local_18,local_14,local_20,local_1c,local_28,local_24);
  uVar1 = *puVar5;
  uVar2 = puVar5[1];
  if (local_5c == 0) {
    FUN_00412721(&local_28);
    FUN_004320f0(local_30,uVar1,uVar2,local_28,local_24);
  }
  else {
    local_14 = local_60 + local_5c;
    if (local_14 < local_60) {
      FUN_00a3fb10();
    }
    local_1c = local_60;
    if (local_5c + local_60 < local_60) {
      FUN_00a3fb10();
    }
    FUN_00412721(&local_28);
    FUN_0047657f();
  }
  FUN_005f489f();
  return;
}



undefined4 __thiscall
FUN_00476507(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  FUN_004765ed(param_1,param_2,param_3,param_4,param_5,param_6);
  return param_1_00;
}



void __fastcall FUN_0047652b(undefined4 param_1)

{
  undefined4 *unaff_ESI;
  uint uVar1;
  
  uVar1 = unaff_ESI[7] + unaff_ESI[6];
  if (uVar1 < (uint)unaff_ESI[6]) {
    FUN_00a3fb10();
  }
  FUN_00476956(unaff_ESI,0,0,param_1,*unaff_ESI,uVar1);
  return;
}



void FUN_00476555(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = param_1;
  unaff_ESI[1] = param_2;
  unaff_ESI[2] = param_3;
  unaff_ESI[3] = param_4;
  FUN_00412797(unaff_ESI + 2);
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0047657f(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  undefined local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x47658b;
  local_18 = 7;
  FUN_0040180b(0);
  FUN_00476ba0(local_30,param_1,param_4,param_5,param_6,param_7);
  local_8 = 0;
  FUN_00476c8d(param_2,param_3,param_2,param_3,local_30);
  FUN_00401829(1,0);
  FUN_00a421fb();
  return;
}



void FUN_004765ed(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  char cVar1;
  int in_EAX;
  wchar_t *pwVar2;
  wchar_t *pwVar3;
  undefined4 *unaff_EDI;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_14 = param_3;
  local_10 = param_4;
  local_c = param_1;
  local_8 = param_2;
  while ((*(int *)(in_EAX + 0x1c) != 0 && (cVar1 = FUN_008477d0(&local_14), cVar1 != '\0'))) {
    pwVar2 = std::
             _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                          *)&local_c);
    pwVar3 = (wchar_t *)FUN_004766df();
    *pwVar2 = *pwVar3;
    FUN_00476709();
    FUN_00847800();
  }
  if (*(int *)(in_EAX + 0x1c) == 0) {
    cVar1 = FUN_00412797(&param_3);
    if (cVar1 == '\0') {
      FUN_0047690a();
      return;
    }
    *unaff_EDI = param_5;
  }
  else {
    while (cVar1 = FUN_008477d0(&param_5), cVar1 != '\0') {
      pwVar2 = std::
               _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
               ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                            *)&local_c);
      FUN_00476731(pwVar2);
      pwVar2 = std::
               _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
               ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                            *)&local_c);
      pwVar3 = (wchar_t *)FUN_004766df();
      *pwVar2 = *pwVar3;
      FUN_00476709();
      FUN_00847800();
    }
    *unaff_EDI = local_c;
    param_6 = local_8;
  }
  unaff_EDI[1] = param_6;
  return;
}



void FUN_004766df(void)

{
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0x1c) + *(uint *)(unaff_ESI + 0x18) < *(uint *)(unaff_ESI + 0x18)) {
    FUN_00a3fb10();
  }
  FUN_00476892();
  return;
}



void FUN_00476709(void)

{
  int in_EAX;
  int iVar1;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    *(int *)(in_EAX + 0x18) = *(int *)(in_EAX + 0x18) + 1;
    if ((uint)(*(int *)(in_EAX + 0x14) << 3) <= *(uint *)(in_EAX + 0x18)) {
      *(undefined4 *)(in_EAX + 0x18) = 0;
    }
    iVar1 = *(int *)(in_EAX + 0x1c) + -1;
    *(int *)(in_EAX + 0x1c) = iVar1;
    if (iVar1 == 0) {
      *(undefined4 *)(in_EAX + 0x18) = 0;
    }
  }
  return;
}



void FUN_00476731(undefined2 *param_1)

{
  undefined2 *puVar1;
  int in_EAX;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  uint uVar5;
  
  if (((*(int *)(in_EAX + 0x18) + *(int *)(in_EAX + 0x1c) & 7U) == 0) &&
     (*(uint *)(in_EAX + 0x14) <= *(int *)(in_EAX + 0x1c) + 8U >> 3)) {
    FUN_004767ab();
  }
  uVar5 = *(int *)(in_EAX + 0x18) + *(int *)(in_EAX + 0x1c);
  uVar2 = uVar5 >> 3;
  if (*(uint *)(in_EAX + 0x14) <= uVar2) {
    uVar2 = uVar2 - *(uint *)(in_EAX + 0x14);
  }
  iVar4 = uVar2 * 4;
  if (*(int *)(iVar4 + *(int *)(in_EAX + 0x10)) == 0) {
    uVar3 = _Allocate<>(8,0);
    *(undefined4 *)(iVar4 + *(int *)(in_EAX + 0x10)) = uVar3;
  }
  puVar1 = (undefined2 *)(*(int *)(*(int *)(in_EAX + 0x10) + iVar4) + (uVar5 & 7) * 2);
  if (puVar1 != (undefined2 *)0x0) {
    *puVar1 = *param_1;
  }
  *(int *)(in_EAX + 0x1c) = *(int *)(in_EAX + 0x1c) + 1;
  return;
}



void FUN_004767ab(void)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  uint uVar5;
  int unaff_ESI;
  undefined8 uVar6;
  uint local_8;
  
  uVar6 = CONCAT44(0xfffffff,*(int *)(unaff_ESI + 0x14));
  local_8 = 1;
  if (*(int *)(unaff_ESI + 0x14) == 0xfffffff) {
    uVar6 = FUN_00467f14();
  }
  uVar5 = (uint)uVar6 >> 1;
  if (uVar5 < 8) {
    uVar5 = 8;
  }
  if ((1 < uVar5) && ((uint)uVar6 <= (int)((ulonglong)uVar6 >> 0x20) - uVar5)) {
    local_8 = uVar5;
  }
  uVar5 = *(uint *)(unaff_ESI + 0x18) >> 3;
  puVar1 = (undefined4 *)FUN_00467f53();
  FUN_0061526b(*(int *)(unaff_ESI + 0x10) + uVar5 * 4);
  if (local_8 < uVar5) {
    FUN_0061526b(*(undefined4 *)(unaff_ESI + 0x10));
    puVar4 = (undefined4 *)FUN_0061526b(local_8 * 4 + *(int *)(unaff_ESI + 0x10));
    uVar5 = local_8;
  }
  else {
    iVar2 = local_8 - uVar5;
    puVar3 = (undefined4 *)FUN_0061526b(*(undefined4 *)(unaff_ESI + 0x10));
    puVar4 = puVar1;
    if (iVar2 != 0) {
      for (; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar3 = 0;
        puVar3 = puVar3 + 1;
      }
    }
  }
  if (uVar5 != 0) {
    for (; uVar5 != 0; uVar5 = uVar5 - 1) {
      *puVar4 = 0;
      puVar4 = puVar4 + 1;
    }
  }
  if (*(int *)(unaff_ESI + 0x10) == 0) {
    *(undefined4 **)(unaff_ESI + 0x10) = puVar1;
    *(int *)(unaff_ESI + 0x14) = *(int *)(unaff_ESI + 0x14) + local_8;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(int *)(unaff_ESI + 0x10));
}



int FUN_00476892(void)

{
  int *piVar1;
  int **in_EAX;
  int *piVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  
  piVar1 = in_EAX[1];
  piVar2 = *in_EAX;
  uVar5 = (uint)piVar1 >> 3;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    piVar2 = *in_EAX;
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
      goto LAB_004768bb;
    }
  }
  iVar4 = *piVar2;
LAB_004768bb:
  if (piVar2 == (int *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar2;
  }
  if ((int *)(*(int *)(iVar3 + 0x1c) + *(int *)(iVar4 + 0x18)) <= in_EAX[1]) {
    FUN_00a3fb10();
  }
  piVar2 = *in_EAX;
  if (piVar2 == (int *)0x0) {
    iVar4 = 0;
  }
  else {
    iVar4 = *piVar2;
  }
  if (*(uint *)(iVar4 + 0x14) <= uVar5) {
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *piVar2;
    }
    uVar5 = uVar5 - *(int *)(iVar4 + 0x14);
  }
  if (piVar2 == (int *)0x0) {
    iVar4 = 0;
  }
  else {
    iVar4 = *piVar2;
  }
  return *(int *)(*(int *)(iVar4 + 0x10) + uVar5 * 4) + ((uint)piVar1 & 7) * 2;
}



undefined4
FUN_0047690a(undefined4 param_1,undefined4 param_2,void *param_3,undefined4 param_4,int param_5,
            undefined4 param_6,undefined4 param_7)

{
  wchar_t *_Dst;
  int iVar1;
  rsize_t _DstSize;
  rsize_t _MaxCount;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = param_5 - (int)param_3 >> 1;
  local_10 = param_6;
  local_c = param_7;
  FUN_00422680(param_1,iVar1);
  if (0 < iVar1) {
    _DstSize = iVar1 * 2;
    _MaxCount = _DstSize;
    _Dst = std::
           _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
           ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                        *)&local_10);
    _memmove_s(_Dst,_DstSize,param_3,_MaxCount);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00476956(int *param_1,int param_2,int param_3,undefined4 param_4,int param_5,int param_6)

{
  uint uVar1;
  uint uVar2;
  
  uVar2 = param_1[6];
  if (param_1[7] + uVar2 < uVar2) {
    FUN_00a3fb10();
  }
  if ((param_5 == 0) || (param_5 != *param_1)) {
    FUN_00a3fb10();
  }
  uVar1 = param_1[7];
  uVar2 = param_6 - uVar2;
  if (param_2 != param_3) {
    if (uVar2 < uVar1 - uVar2) {
      for (; param_2 != param_3; param_2 = param_2 + 2) {
        FUN_00476a6a(param_2);
      }
      if (uVar2 == 0) {
                    // WARNING: Subroutine does not return
        FUN_00476ae4(param_1[7] - uVar1);
      }
                    // WARNING: Subroutine does not return
      FUN_00476ae4(uVar2 + (param_1[7] - uVar1));
    }
    for (; param_2 != param_3; param_2 = param_2 + 2) {
      FUN_00476731(param_2);
    }
    if (uVar2 < uVar1) {
                    // WARNING: Subroutine does not return
      FUN_00476ae4(uVar1);
    }
  }
  return;
}



void Catch_All_004769c5(void)

{
  uint uVar1;
  int iVar2;
  int unaff_EBX;
  int unaff_EBP;
  
  iVar2 = *(int *)(unaff_EBP + 8);
  uVar1 = *(uint *)(unaff_EBP + -0x14);
  while (uVar1 < *(uint *)(iVar2 + 0x1c)) {
    FUN_00476709();
  }
  __CxxThrowException_8(0,0);
  iVar2 = *(int *)(iVar2 + 0x1c) - unaff_EBX;
  if (uVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_00476ae4(uVar1 + iVar2);
  }
                    // WARNING: Subroutine does not return
  FUN_00476ae4(iVar2);
}



void Catch_All_00476a1c(void)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int unaff_EBX;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  
  iVar2 = *(int *)(unaff_EBP + 8);
  uVar1 = *(uint *)(unaff_EBP + -0x14);
  while (uVar1 < *(uint *)(iVar2 + 0x1c)) {
    if ((*(int *)(iVar2 + 0x1c) != 0) &&
       (iVar3 = *(int *)(iVar2 + 0x1c) + -1, *(int *)(iVar2 + 0x1c) = iVar3, iVar3 == 0)) {
      *(undefined4 *)(iVar2 + 0x18) = 0;
    }
  }
  __CxxThrowException_8(0,0);
  iVar2 = *(int *)(unaff_ESI + 0x1c) - unaff_EBX;
  if (unaff_EDI != 0) {
                    // WARNING: Subroutine does not return
    FUN_00476ae4(unaff_EDI + iVar2);
  }
                    // WARNING: Subroutine does not return
  FUN_00476ae4(iVar2);
}



void FUN_00476a5b(void)

{
                    // WARNING: Subroutine does not return
  FUN_00476ae4();
}



void FUN_00476a6a(undefined2 *param_1)

{
  undefined2 *puVar1;
  int in_EAX;
  undefined4 uVar2;
  int iVar3;
  uint uVar4;
  
  if (((*(byte *)(in_EAX + 0x18) & 7) == 0) &&
     (*(uint *)(in_EAX + 0x14) <= *(int *)(in_EAX + 0x1c) + 8U >> 3)) {
    FUN_004767ab();
  }
  iVar3 = *(int *)(in_EAX + 0x18);
  if (iVar3 == 0) {
    iVar3 = *(int *)(in_EAX + 0x14) << 3;
  }
  uVar4 = iVar3 - 1;
  iVar3 = (uVar4 >> 3) * 4;
  if (*(int *)(iVar3 + *(int *)(in_EAX + 0x10)) == 0) {
    uVar2 = _Allocate<>(8,0);
    *(undefined4 *)(iVar3 + *(int *)(in_EAX + 0x10)) = uVar2;
  }
  puVar1 = (undefined2 *)(*(int *)(*(int *)(in_EAX + 0x10) + iVar3) + (uVar4 & 7) * 2);
  if (puVar1 != (undefined2 *)0x0) {
    *puVar1 = *param_1;
  }
  *(int *)(in_EAX + 0x1c) = *(int *)(in_EAX + 0x1c) + 1;
  *(uint *)(in_EAX + 0x18) = uVar4;
  return;
}



void __thiscall FUN_00476ae4(int param_1_00,int param_1)

{
  undefined2 uVar1;
  int in_EAX;
  undefined2 *puVar2;
  undefined2 *puVar3;
  
  if (*(int *)(param_1_00 + 0x1c) + *(uint *)(param_1_00 + 0x18) < *(uint *)(param_1_00 + 0x18)) {
    FUN_00a3fb10();
  }
  for (; (in_EAX != param_1 && (param_1 = param_1 + -1, in_EAX != param_1)); in_EAX = in_EAX + 1) {
    puVar2 = (undefined2 *)FUN_00476b44(param_1);
    puVar3 = (undefined2 *)FUN_00476b44(in_EAX);
    if (puVar3 != puVar2) {
      uVar1 = *puVar3;
      *puVar3 = *puVar2;
      *puVar2 = uVar1;
    }
  }
  return;
}



void FUN_00476b44(int param_1)

{
  int *piVar1;
  int *piVar2;
  int **in_EAX;
  int iVar3;
  int iVar4;
  
  piVar1 = *in_EAX;
  piVar2 = in_EAX[1];
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar4 = 0;
    iVar3 = 0;
  }
  else {
    iVar4 = *piVar1;
    iVar3 = *piVar1;
  }
  if ((uint)((int)piVar2 + param_1) <= (uint)(*(int *)(iVar3 + 0x1c) + *(int *)(iVar4 + 0x18))) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(uint *)(iVar3 + 0x18) <= (uint)((int)piVar2 + param_1)) goto LAB_00476b8c;
  }
  FUN_00a3fb10();
LAB_00476b8c:
  FUN_00476892();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00476ba0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,uint param_6)

{
  undefined2 *puVar1;
  int iVar2;
  int iVar3;
  
  if ((param_5 == (int *)0x0) || (param_5 != param_3)) {
    FUN_00a3fb10();
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
            (param_1,param_6 - param_4);
  while( true ) {
    if ((param_3 == (int *)0x0) || (param_3 != param_5)) {
      FUN_00a3fb10();
    }
    if (param_4 == param_6) break;
    puVar1 = (undefined2 *)FUN_00476892();
    FID_conflict_append(1,*puVar1);
    if (param_3 == (int *)0x0) {
      FUN_00a3fb10();
      iVar3 = 0;
      iVar2 = 0;
    }
    else {
      iVar3 = *param_3;
      iVar2 = *param_3;
    }
    if ((uint)(*(int *)(iVar2 + 0x1c) + *(int *)(iVar3 + 0x18)) <= param_4) {
      FUN_00a3fb10();
    }
    param_4 = param_4 + 1;
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_00476c44(void)

{
  FUN_00401829(1,0);
  __CxxThrowException_8(0,0);
  return;
}



void __thiscall
FUN_00476c8d(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4
            ,undefined4 param_5)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined local_14 [8];
  undefined4 local_c;
  
  puVar2 = (undefined4 *)
           std::
           basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
           begin(param_1_00,local_14);
  uVar3 = *puVar2;
  uVar1 = puVar2[1];
  local_c = FUN_00412602(param_3,param_4,param_1,param_2);
  uVar3 = FUN_00412602(param_1,param_2,uVar3,uVar1);
  FUN_00412114(uVar3,local_c,param_5,0,0xffffffff);
  return;
}



// Library Function - Single Match
//  public: void __thiscall std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >::reserve(unsigned int)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release

void __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          uint param_1)

{
  uint uVar1;
  char cVar2;
  
  uVar1 = *(uint *)(this + 0x14);
  if ((uVar1 <= param_1) && (*(uint *)(this + 0x18) != param_1)) {
    cVar2 = FUN_004182d2(param_1,1);
    if (cVar2 != '\0') {
      FUN_0040180b(uVar1);
    }
  }
  return;
}



void __fastcall FUN_00476d10(undefined4 *param_1)

{
  *param_1 = WDE765622::W710CD931::vftable;
  return;
}



undefined4 * __thiscall FUN_00476d17(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WDE765622::W710CD931::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00476d34(undefined4 *param_1)

{
  param_1[1] = WDE765622::W673CE3C4::vftable;
  *param_1 = WAC38D41E::W887DE3C8::vftable;
  return;
}



void __fastcall FUN_00476df9(int param_1)

{
  if (*(int **)(param_1 + 4) != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00476e02. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(param_1 + 4) + 0x10))();
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00476e06(undefined4 *param_1_00,byte param_1)

{
  if (param_1_00[2] != 0) {
    FUN_0040127a();
  }
  *param_1_00 = WDE765622::W710CD931::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00476ec4(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  int **ppiVar2;
  
  FUN_0046e65a();
  while( true ) {
    FUN_0046e65a();
    cVar1 = FUN_0041c034();
    if (cVar1 == '\0') break;
    ppiVar2 = (int **)FUN_007c96e9();
    (**(code **)(**ppiVar2 + 0x20))(param_1,param_2);
    FUN_0062d58f();
  }
  return;
}



void FUN_00476f28(undefined4 param_1)

{
  char cVar1;
  int **ppiVar2;
  
  FUN_0046e65a();
  while( true ) {
    FUN_0046e65a();
    cVar1 = FUN_0041c034();
    if (cVar1 == '\0') break;
    ppiVar2 = (int **)FUN_007c96e9();
    (**(code **)(**ppiVar2 + 0x24))(param_1);
    FUN_0062d58f();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_00476f89(int *param_1_00,undefined4 param_1,int param_2)

{
  int *piVar1;
  char cVar2;
  int **ppiVar3;
  undefined *puStack_48;
  undefined auStack_44 [4];
  undefined4 uStack_40;
  undefined **local_1c;
  int *local_18;
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0;
  local_14 = param_1_00 + 8;
  uStack_40 = 0x476fad;
  local_18 = param_1_00;
  FUN_0046e65a();
  while( true ) {
    uStack_40 = 0x476fe7;
    FUN_0046e65a();
    uStack_40 = 0x476ff1;
    cVar2 = FUN_0041c034();
    piVar1 = local_18;
    if (cVar2 == '\0') break;
    uStack_40 = 0x476fb7;
    ppiVar3 = (int **)FUN_007c96e9();
    piVar1 = *ppiVar3;
    local_1c = (undefined **)auStack_44;
    puStack_48 = auStack_44;
    FUN_00468575();
    puStack_48 = (undefined *)0x476fd1;
    (**(code **)(*piVar1 + 8))();
    uStack_40 = 0x476fd9;
    FUN_0062d58f();
  }
  uStack_40 = 0x476fff;
  cVar2 = (**(code **)(*local_18 + 0xc))();
  if (cVar2 == '\0') {
    uStack_40 = 0x47700f;
    (**(code **)(*(int *)piVar1[0x1f] + 0xc))();
    if (piVar1[0x3c] != 0) {
      uStack_40 = 1;
      local_1c = &puStack_48;
      puStack_48 = (undefined *)piVar1[0x1f];
                    // WARNING: Subroutine does not return
      FUN_0043c023(piVar1 + 0x20);
    }
    uStack_40 = 0x477092;
    (**(code **)(*(int *)piVar1[0x1f] + 4))();
  }
  uStack_40 = 0x477099;
  cVar2 = (**(code **)(*piVar1 + 0xc))();
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    uStack_40 = 0x4770b1;
    FUN_0040127a();
  }
  return '\x01' - (cVar2 != '\0');
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_004770bb(int param_1_00,undefined4 param_1,int param_2,undefined *param_3,int param_4,
            undefined **param_5)

{
  int *piVar1;
  char cVar2;
  int **ppiVar3;
  undefined *local_48;
  undefined local_44 [4];
  undefined4 uStack_40;
  undefined *local_1c;
  int local_18;
  int local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_14 = param_1_00 + 0x20;
  local_8 = 1;
  uStack_40 = 0x4770e2;
  local_18 = param_1_00;
  FUN_0046e65a();
  while( true ) {
    uStack_40 = 0x47711c;
    FUN_0046e65a();
    uStack_40 = 0x477126;
    cVar2 = FUN_0041c034();
    if (cVar2 == '\0') break;
    uStack_40 = 0x4770ec;
    ppiVar3 = (int **)FUN_007c96e9();
    piVar1 = *ppiVar3;
    local_1c = local_44;
    local_48 = local_44;
    FUN_00468575();
    local_48 = (undefined *)0x477106;
    (**(code **)(*piVar1 + 0xc))();
    uStack_40 = 0x47710e;
    FUN_0062d58f();
  }
  if (*(int *)(local_18 + 0xf0) != 0) {
    uStack_40 = param_5;
    param_5 = &local_48;
    local_48 = param_3;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_4);
  }
  local_8 = local_8 & 0xffffff00;
  if (param_2 != 0) {
    uStack_40 = 0x477181;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (param_4 != 0) {
    uStack_40 = 0x477191;
    FUN_0040127a();
  }
  return;
}



void __fastcall FUN_00477199(int param_1)

{
  if (*(int **)(param_1 + 0xf0) != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x004771a5. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(param_1 + 0xf0) + 8))();
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_004771a9(int param_1_00,undefined4 param_1,int param_2)

{
  int *piVar1;
  char cVar2;
  int **ppiVar3;
  undefined auStack_40 [4];
  undefined4 uStack_3c;
  undefined *local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0;
  local_14 = param_1_00 + 0x20;
  uStack_3c = 0x4771ca;
  FUN_0046e65a();
  while( true ) {
    uStack_3c = 0x477204;
    FUN_0046e65a();
    uStack_3c = 0x47720e;
    cVar2 = FUN_0041c034();
    if (cVar2 == '\0') break;
    uStack_3c = 0x4771d4;
    ppiVar3 = (int **)FUN_007c96e9();
    piVar1 = *ppiVar3;
    local_18 = auStack_40;
    FUN_00468575(auStack_40);
    (**(code **)(*piVar1 + 0x18))();
    uStack_3c = 0x4771f6;
    FUN_0062d58f();
  }
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    uStack_3c = 0x477222;
    FUN_0040127a();
  }
  return;
}



void FUN_0047722a(undefined4 param_1)

{
  char cVar1;
  int **ppiVar2;
  
  FUN_0046e65a();
  while( true ) {
    FUN_0046e65a();
    cVar1 = FUN_0041c034();
    if (cVar1 == '\0') break;
    ppiVar2 = (int **)FUN_007c96e9();
    (**(code **)(**ppiVar2 + 0x1c))(param_1);
    FUN_0062d58f();
  }
  return;
}



void FUN_0047728b(void)

{
  FUN_00b74d70();
  return;
}



void __thiscall FUN_00477293(int param_1_00,uint param_1)

{
  longlong local_c;
  
  local_c = (ulonglong)param_1 * 1000;
  (**(code **)(*(int *)(param_1_00 + 0x40) + 8))(&local_c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

uint __thiscall
FUN_004772b8(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4,
            int param_5)

{
  uint uVar1;
  undefined4 local_34;
  int local_30;
  char local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_30 = param_1_00 + 0x84;
  local_8 = 1;
  local_34 = 0x4772de;
  uVar1 = FUN_0043d406();
  local_8 = CONCAT31(local_8._1_3_,2);
  if (*(int *)(param_1_00 + 0x8c) != 0) {
    local_14 = &local_34;
    local_34 = param_4;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_5);
  }
  local_8._0_1_ = 1;
  if (local_18 != '\0') {
    local_30 = 0x477341;
    uVar1 = FUN_00401477();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (param_3 != 0) {
    local_30 = 0x477351;
    uVar1 = FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (param_5 != 0) {
    local_30 = 0x477361;
    uVar1 = FUN_0040127a();
  }
  return uVar1 & 0xffffff00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0047736b(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  undefined4 local_34;
  int local_30;
  char local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0;
  local_30 = param_1_00 + 0x84;
  local_34 = 0x47738c;
  FUN_0043d406();
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(int *)(param_1_00 + 0x8c) != 0) {
    local_14 = &local_34;
    local_34 = param_2;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_3);
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_18 != '\0') {
    local_30 = 0x4773d6;
    FUN_00401477();
  }
  local_8 = 0xffffffff;
  if (param_3 != 0) {
    local_30 = 0x4773e6;
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_004773ee(int param_1_00,undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  int *piVar1;
  char cVar2;
  int **ppiVar3;
  undefined auStack_4c [8];
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined *local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0;
  local_14 = param_1_00 + 0x20;
  uStack_3c = 0x47740f;
  FUN_0046e65a();
  while( true ) {
    uStack_3c = 0x477452;
    FUN_0046e65a();
    uStack_3c = 0x47745c;
    cVar2 = FUN_0041c034();
    if (cVar2 == '\0') break;
    uStack_3c = 0x477419;
    ppiVar3 = (int **)FUN_007c96e9();
    uStack_3c = param_5;
    piVar1 = *ppiVar3;
    uStack_40 = param_4;
    uStack_44 = param_3;
    local_18 = auStack_4c;
    FUN_00468575(auStack_4c);
    (**(code **)(*piVar1 + 4))();
    uStack_3c = 0x477444;
    FUN_0062d58f();
  }
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    uStack_3c = 0x477470;
    FUN_0040127a();
  }
  return;
}



void FUN_00477478(void)

{
  char cVar1;
  int **ppiVar2;
  
  FUN_0046e65a();
  while( true ) {
    FUN_0046e65a();
    cVar1 = FUN_0041c034();
    if (cVar1 == '\0') break;
    ppiVar2 = (int **)FUN_007c96e9();
    (**(code **)(**ppiVar2 + 0x10))();
    FUN_0062d58f();
  }
  return;
}



void FUN_004774d4(undefined4 param_1)

{
  char cVar1;
  int **ppiVar2;
  
  FUN_0046e65a();
  while( true ) {
    FUN_0046e65a();
    cVar1 = FUN_0041c034();
    if (cVar1 == '\0') break;
    ppiVar2 = (int **)FUN_007c96e9();
    (**(code **)(**ppiVar2 + 0x14))(param_1);
    FUN_0062d58f();
  }
  return;
}



undefined4 __fastcall FUN_00477535(int param_1)

{
  undefined4 uVar1;
  char local_8;
  
  FUN_0043d406(param_1 + 0x84);
  local_8 = (char)param_1;
  uVar1 = *(undefined4 *)(param_1 + 0xa4);
  if (local_8 != '\0') {
    FUN_00401477();
  }
  return uVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_00477565(int param_1_00,undefined4 *param_1)

{
  FUN_0043d406(param_1_00 + 0x84);
  *param_1 = *(undefined4 *)(param_1_00 + 0x94);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0x98);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_004775c2(int param_1_00,undefined4 *param_1)

{
  FUN_0043d406(param_1_00 + 0x84);
  *param_1 = *(undefined4 *)(param_1_00 + 0x9c);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xa0);
}



void FUN_0047761f(undefined4 param_1)

{
  char cVar1;
  int **ppiVar2;
  
  FUN_0046e65a();
  while( true ) {
    FUN_0046e65a();
    cVar1 = FUN_0041c034();
    if (cVar1 == '\0') break;
    ppiVar2 = (int **)FUN_007c96e9();
    (**(code **)(**ppiVar2 + 0x38))(param_1);
    FUN_0062d58f();
  }
  return;
}



undefined4 __thiscall FUN_004777e0(undefined4 param_1,byte param_2)

{
  FUN_004777fc();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_004777fc(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_20;
  char local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = WDE765622::WC9D811A0::vftable;
  param_1[1] = WDE765622::WC9D811A0::vftable;
  local_8._0_1_ = 0x10;
  local_8._1_3_ = 0;
  if (&local_20 != param_1 + 0x1f) {
    param_1[0x1f] = 0;
  }
  iVar1 = param_1[0x20];
  param_1[0x20] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  FUN_0043d406(param_1 + 0x21);
  local_8._0_1_ = 0x11;
  FUN_005d1159();
  local_8 = CONCAT31(local_8._1_3_,0x10);
  if (local_1c != '\0') {
    FUN_00401477();
  }
  local_8 = 0xf;
  FUN_00477888();
  return;
}



undefined * Catch_All_00477876(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 0xf;
  return &DAT_00477883;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00477888(void)

{
  int unaff_EBX;
  int unaff_EBP;
  undefined4 *unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 0xe;
  if (unaff_ESI[0x3d] != unaff_EBX) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 0xd;
  FUN_0042b93d(unaff_ESI + 0x34);
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 0xb;
  if (unaff_ESI[0x2d] != unaff_EBX) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 10;
  if (unaff_ESI[0x2b] != unaff_EBX) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 9;
  if (unaff_ESI[0x28] != unaff_EBX) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 8;
  if (unaff_ESI[0x26] != unaff_EBX) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 7;
  if (unaff_ESI[0x24] != unaff_EBX) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 5;
  if (unaff_ESI[0x20] != unaff_EBX) {
    FUN_0040127a();
  }
  FUN_0042bdb1();
  unaff_ESI[0xe] = WE7A5EFDD::WF1113228::vftable;
  *(undefined *)(unaff_EBP + -4) = 2;
  FUN_0044237a(unaff_ESI + 8);
  *(undefined *)(unaff_EBP + -4) = 1;
  FUN_0044613e();
  *(char *)(unaff_EBP + -4) = (char)unaff_EBX;
  FUN_00417fc9();
  unaff_ESI[1] = WDE765622::W673CE3C4::vftable;
  *unaff_ESI = WAC38D41E::W887DE3C8::vftable;
  return;
}



void FUN_00477979(int param_1)

{
  char cVar1;
  int **ppiVar2;
  
  FUN_0046e65a();
  while( true ) {
    FUN_0046e65a();
    cVar1 = FUN_0041c034();
    if (cVar1 == '\0') break;
    ppiVar2 = (int **)FUN_007c96e9();
    (**(code **)(**ppiVar2 + 0x34))();
    FUN_0062d58f();
  }
  InterlockedExchange((LONG *)(param_1 + 0x3c),1);
  (**(code **)(*(int *)(param_1 + 0x40) + 0x10))();
  (**(code **)(**(int **)(param_1 + 0x7c) + 0x10))();
  return;
}



void FUN_004779ee(void)

{
  char cVar1;
  int **ppiVar2;
  
  FUN_0046e65a();
  while( true ) {
    FUN_0046e65a();
    cVar1 = FUN_0041c034();
    if (cVar1 == '\0') break;
    ppiVar2 = (int **)FUN_007c96e9();
    (**(code **)(**ppiVar2 + 0x28))();
    FUN_0062d58f();
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00477b8c(void)

{
  char cVar1;
  undefined4 uVar2;
  int *piVar3;
  int iVar4;
  int **ppiVar5;
  int *unaff_EDI;
  undefined local_74 [32];
  char local_54;
  int *local_50;
  int local_4c;
  int *local_48;
  int local_44;
  int local_40;
  int local_3c;
  char local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8 = 0x477b98;
  (**(code **)(*unaff_EDI + 0x3c))(&local_48);
  local_8 = 0;
  if (local_48 != (int *)0x0) {
    uVar2 = (**(code **)(*local_48 + 4))();
    FUN_0043d406(uVar2);
    local_8._0_1_ = 1;
    (**(code **)(*local_48 + 8))(&local_50);
    local_8 = CONCAT31(local_8._1_3_,2);
    piVar3 = (int *)(**(code **)(*local_50 + 0x10))();
    (**(code **)(*piVar3 + 0xc))();
    while( true ) {
      cVar1 = (**(code **)(*piVar3 + 0x10))();
      if (cVar1 == '\0') break;
      uVar2 = (**(code **)(*piVar3 + 4))(local_74);
      local_8._0_1_ = 3;
      basic_string<>(uVar2);
      local_8._0_1_ = 5;
      FUN_00401829(1,0);
      (**(code **)*piVar3)(&local_40);
      local_8._0_1_ = 6;
      if ((~-(uint)(*(int *)(local_40 + 0x244) != 1) & 0x7a491c) != 0) {
        FUN_0041b126(local_40 + 0x23c);
        local_8._0_1_ = 7;
        if ((-(uint)(local_1c != '\0') & 0x6a1cd8) != 0) {
          iVar4 = (**(code **)(*unaff_EDI + 0x34))();
          if (local_18 == iVar4) {
            *(undefined4 *)(local_40 + 0x244) = 0;
            if (*(char *)(local_40 + 0x23c) != '\0') {
              *(char *)(local_40 + 0x23c) = '\0';
            }
          }
        }
        if (local_1c != '\0') {
          local_1c = '\0';
        }
      }
      local_8._0_1_ = 6;
      (**(code **)(*piVar3 + 8))();
      local_8._0_1_ = 5;
      if (local_3c != 0) {
        FUN_0040127a();
      }
      local_8 = CONCAT31(local_8._1_3_,2);
      FUN_00401829(1,0);
    }
    ppiVar5 = (int **)(**(code **)(*local_48 + 0xc))(&local_40);
    local_8._0_1_ = 8;
    (**(code **)(**ppiVar5 + 0x14))(unaff_EDI[0x29]);
    local_8._0_1_ = 2;
    if (local_3c != 0) {
      FUN_0040127a();
    }
    local_8._0_1_ = 1;
    if (local_4c != 0) {
      FUN_0040127a();
    }
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_54 != '\0') {
      FUN_00401477();
    }
  }
  local_8 = 0xffffffff;
  if (local_44 != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



void __thiscall FUN_00477d20(int param_1_00,undefined4 *param_1)

{
  *param_1 = *(undefined4 *)(param_1_00 + 0xb0);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xb4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00477da1(int param_1_00,undefined4 *param_1)

{
  char cVar1;
  int iVar2;
  undefined local_28 [12];
  char local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x477dad;
  local_14 = 0;
  FUN_0043d406(param_1_00 + 200);
  local_8 = 1;
  FUN_00478125(local_28,&stack0x00000008);
  local_14 = *(undefined4 *)(param_1_00 + 0xe8);
  local_18 = *(undefined4 *)(param_1_00 + 0xd0);
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    iVar2 = FUN_006badde();
    *param_1 = *(undefined4 *)(iVar2 + 4);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar2 + 8);
  }
  *param_1 = 0;
  local_8 = local_8 & 0xffffff00;
  param_1[1] = 0;
  local_14 = 1;
  if (local_1c != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_00477f0f(int param_1_00,int *param_1)

{
  int *piVar1;
  undefined local_1c [8];
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x477f1b;
  local_14 = 0;
  if (*(int *)(param_1_00 + 0xa8) != 0) {
    *param_1 = *(int *)(param_1_00 + 0xa8);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1_00 + 0xac);
  }
  piVar1 = (int *)FUN_0043c0bf(local_1c);
  *param_1 = *piVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(piVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00477f7d(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00477fcc();
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00477fcc(undefined4 *param_1)

{
  int iVar1;
  code *pcVar2;
  char cVar3;
  undefined4 *puVar4;
  undefined4 *unaff_EDI;
  undefined local_6c [76];
  undefined **local_20 [3];
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x5c;
  local_8 = 0x477fd8;
  iVar1 = unaff_EDI[1];
  local_14 = 0;
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    cVar3 = FUN_0043d41e();
    if (cVar3 != '\0') {
      *param_1 = *unaff_EDI;
      return param_1;
    }
  }
  FUN_00a3f1a9();
  local_20[0] = boost::bad_weak_ptr::vftable;
  local_8 = 0;
  FUN_004783ca(local_20);
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_004783b5(local_6c);
  __CxxThrowException_8(local_6c,&DAT_03115b00);
  pcVar2 = (code *)swi(3);
  puVar4 = (undefined4 *)(*pcVar2)();
  return puVar4;
}



int FUN_0047803c(int param_1,uint *param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int local_38;
  undefined4 local_30 [3];
  uint local_24;
  undefined4 local_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1eb66;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_14;
  FUN_00697f81(param_2);
  local_30[0] = *(undefined4 *)(param_1 + 0x18);
  cVar1 = FUN_006b8eca(uVar2);
  if ((cVar1 == '\0') && (*(uint *)(local_38 + 0xc) <= *param_2)) {
    iVar3 = FUN_006badde();
    ExceptionList = local_14;
    return iVar3 + 4;
  }
  local_30[0] = 0;
  local_c = 0;
  local_24 = *param_2;
  local_20 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_30);
}



void FUN_00478125(undefined4 *param_1,uint *param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  FUN_00697f81(param_2);
  local_10 = unaff_EBX[6];
  local_14 = *unaff_EBX;
  puVar3 = &local_c;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (*param_2 < *(uint *)(local_8 + 0xc))) {
    local_10 = unaff_EBX[6];
    local_14 = *unaff_EBX;
    puVar3 = &local_14;
  }
  uVar1 = puVar3[1];
  *param_1 = *puVar3;
  param_1[1] = uVar1;
  return;
}



int FUN_00478186(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  int local_c;
  
  iVar3 = param_1;
  FUN_0046e65a();
  FUN_0046e65a();
  cVar4 = FUN_0041c034();
  if (cVar4 != '\0') {
    iVar1 = *(int *)(param_1 + 0x10);
    iVar2 = *(int *)(param_2 + 4);
    param_1 = local_c;
    if (local_c != iVar1) {
      do {
        FUN_004fe47e();
        param_1 = param_1 + 8;
      } while (param_1 != iVar1);
    }
    FUN_0043a4e8(*(undefined4 *)(iVar3 + 0x10));
    *(int *)(iVar3 + 0x10) = iVar2 + (iVar1 - local_c >> 3) * 8;
  }
  return param_2;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0047820f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_`anonymous_namespace'::WAB837BB6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00478255(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004782b2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int **)(unaff_EBP + 8) != (int *)0x0) {
    (**(code **)(**(int **)(unaff_EBP + 8) + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_004782ca(int param_1)

{
  if (*(int **)(param_1 + 0xc) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0xc) + 8))(1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00478337(undefined4 *param_1)

{
  int iVar1;
  int unaff_EBX;
  
  param_1[8] = &DAT_00fafc20;
  param_1[10] = boost::exception_detail::clone_base::vftable;
  FUN_0047861f(unaff_EBX);
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>_>
             ::vftable;
  param_1[3] = boost::exception_detail::
               clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>_>
               ::vftable;
  *(undefined ***)(*(int *)(param_1[8] + 4) + 0x20 + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>_>::
       vftable;
  *(int *)(*(int *)(param_1[8] + 4) + 0x1c + (int)param_1) = *(int *)(param_1[8] + 4) + -8;
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + 0xc;
  }
  FUN_00401200(param_1 + 3,iVar1);
  return param_1;
}



undefined4 FUN_004783b5(undefined4 param_1)

{
  FUN_00478337(param_1);
  return param_1;
}



void FUN_004783ca(undefined4 param_1)

{
  undefined4 *unaff_ESI;
  
  FUN_00478666(param_1);
  unaff_ESI[3] = boost::exception::vftable;
  unaff_ESI[4] = 0;
  unaff_ESI[5] = 0;
  unaff_ESI[6] = 0;
  unaff_ESI[7] = 0xffffffff;
  *unaff_ESI = boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>::vftable;
  unaff_ESI[3] = boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>::vftable;
  return;
}



void __fastcall FUN_00478404(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>_>
             ::vftable;
  param_1[3] = boost::exception_detail::
               clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>_>
               ::vftable;
  *(undefined ***)(*(int *)(param_1[8] + 4) + 0x20 + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>_>::
       vftable;
  *(int *)(*(int *)(param_1[8] + 4) + 0x1c + (int)param_1) = *(int *)(param_1[8] + 4) + -8;
  FUN_0047843d();
  param_1[10] = boost::exception_detail::clone_base::vftable;
  return;
}



void FUN_0047843d(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>::vftable;
  unaff_ESI[3] = boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>::vftable;
  unaff_ESI[3] = boost::exception::vftable;
  FUN_00401874();
  exception::~exception((exception *)unaff_ESI);
  return;
}



void FUN_00478460(void)

{
  FUN_00478566();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00478468(undefined4 *param_1)

{
  int iVar1;
  int unaff_EBX;
  
  param_1[8] = &DAT_00fafc20;
  param_1[10] = boost::exception_detail::clone_base::vftable;
  FUN_0047861f(unaff_EBX);
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>_>
             ::vftable;
  param_1[3] = boost::exception_detail::
               clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>_>
               ::vftable;
  *(undefined ***)(*(int *)(param_1[8] + 4) + 0x20 + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>_>::
       vftable;
  *(int *)(*(int *)(param_1[8] + 4) + 0x1c + (int)param_1) = *(int *)(param_1[8] + 4) + -8;
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + 0xc;
  }
  FUN_00401200(param_1 + 3,iVar1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_004784e6(void)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  
  pvVar1 = operator_new(0x2c);
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00478468(pvVar1,local_14);
  }
  if (iVar2 != 0) {
    iVar2 = *(int *)(*(int *)(iVar2 + 0x20) + 4) + 0x20 + iVar2;
  }
  return iVar2;
}



void FUN_00478533(void)

{
  FUN_004784e6();
  return;
}



void __fastcall FUN_0047853b(int param_1)

{
  code *pcVar1;
  undefined local_30 [44];
  
  clone_impl<>(param_1 + -0x28,1);
  __CxxThrowException_8(local_30,&DAT_03115b00);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0047855e(void)

{
  FUN_0047853b();
  return;
}



undefined4 __thiscall FUN_00478566(undefined4 param_1_00,byte param_1)

{
  FUN_00478404();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00478582(void)

{
  FUN_00478566();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >(class
// boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class
// std::domain_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::evaluation_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::rounding_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error> > const &)
// 
// Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release

undefined4 * __thiscall clone_impl<>(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[8] = &DAT_00fafc20;
    param_1_00[10] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0047861f(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>_>
                ::vftable;
  param_1_00[3] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[8] + 4) + 0x20 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>_>::
       vftable;
  *(undefined4 *)(*(int *)(param_1_00[8] + 4) + 0x1c + (int)param_1_00) = 0;
  return param_1_00;
}



undefined4 __thiscall FUN_004785fb(undefined4 param_1,byte param_2)

{
  FUN_0047843d();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_00478617(void)

{
  FUN_004785fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0047861f(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FUN_00478666(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0xc;
  }
  FUN_00401569(iVar1);
  *param_1_00 = boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>::vftable;
  param_1_00[3] = boost::exception_detail::error_info_injector<class_boost::bad_weak_ptr>::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_00478666(undefined4 *param_1_00,exception *param_1)

{
  std::exception::exception((exception *)param_1_00,param_1);
  *param_1_00 = boost::bad_weak_ptr::vftable;
  return param_1_00;
}



exception * __thiscall FUN_0047867e(exception *param_1_00,byte param_1)

{
  exception::~exception(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



char * FUN_0047869a(void)

{
  return "tr1::bad_weak_ptr";
}



void __thiscall exception::~exception(exception *this)

{
  *(undefined ***)this = std::exception::vftable;
  if (*(int *)(this + 8) != 0) {
    _free(*(void **)(this + 4));
  }
  return;
}



undefined4 * __thiscall FUN_004786a5(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WDE765622::W57E0FFA1::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_004786c2(undefined4 *param_1_00,byte param_1)

{
  FUN_00417fe6();
  *param_1_00 = WDE765622::W57E0FFA1::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined __fastcall FUN_004786e7(int param_1)

{
  undefined uVar1;
  char local_8;
  
  FUN_0043d406(param_1 + 4);
  uVar1 = *(undefined *)(param_1 + 0xc);
  local_8 = (char)param_1;
  if (local_8 != '\0') {
    FUN_00401477();
  }
  return uVar1;
}



undefined __fastcall FUN_00478713(int param_1)

{
  undefined uVar1;
  char local_8;
  
  FUN_0043d406(param_1 + 4);
  uVar1 = *(undefined *)(param_1 + 0xd);
  local_8 = (char)param_1;
  if (local_8 != '\0') {
    FUN_00401477();
  }
  return uVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_0047873f(undefined4 *param_1)

{
  *param_1 = WDE765622::W1893D24D::vftable;
  FUN_00478a2d();
  FUN_0047877f();
  return;
}



undefined * Catch_All_0047876f(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 1;
  return &DAT_0047877c;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0047877f(void)

{
  int unaff_EBP;
  undefined4 *unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 0;
  FUN_00436aef(unaff_ESI + 1);
  *unaff_ESI = WDE765622::WE13D998E::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool __thiscall FUN_00478798(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int param_11;
  
  FUN_00478a2d();
  if (((-(uint)(param_2 != 0) & 0x7a491c) != 0) &&
     (*(int *)(param_1_00 + 0x14) - *(int *)(param_1_00 + 0x10) >> 3 != 0)) {
    iVar2 = FUN_00436b17();
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar2 + 4);
  }
  iVar2 = *(int *)(param_1 + 0x10);
  iVar1 = *(int *)(param_1 + 0xc);
  FUN_00507e58();
  if (param_11 != 0) {
    FUN_0040127a();
  }
  return iVar2 - iVar1 >> 3 != 0;
}



void __thiscall FUN_00478918(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  if (*(int *)(param_1_00 + 0x14) - *(int *)(param_1_00 + 0x10) >> 3 != 0) {
    ExceptionList = &local_14;
    iVar1 = FUN_00436b17(DAT_0323f878 ^ (uint)&stack0xffffffc8);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  *param_1 = 0;
  param_1[1] = 0;
  return;
}



void FUN_00478a2d(void)

{
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0049a803(&local_14,local_14,local_10,local_c,local_8);
  return;
}



undefined4 * __thiscall FUN_00478a6a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WABE12921::W2073C27C::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00478a87(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WABE12921::W5B6013CA::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_004793c5(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_00478aee(undefined4 *param_1)

{
  *param_1 = WABE12921::W31353214::vftable;
  FUN_00478ed6();
  FUN_00478b2b();
  return;
}



undefined * Catch_All_00478b1b(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 4;
  return &DAT_00478b28;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00478b2b(void)

{
  int unaff_EBP;
  undefined4 *unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 3;
  FUN_0044241a(unaff_ESI + 0xb);
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 1;
  FUN_0044237a(unaff_ESI + 3);
  FUN_00417fe6();
  *unaff_ESI = WABE12921::WEF35E497::vftable;
  return;
}



// WARNING: Removing unreachable block (ram,0x00478dbe)
// WARNING: Removing unreachable block (ram,0x00478c03)
// WARNING: Removing unreachable block (ram,0x00478c33)

uint __thiscall FUN_00478b61(int param_1_00,undefined4 param_1,uint param_2)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  char local_24;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c40e53;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar3 = 0;
  local_c = 0;
  FUN_0043d406();
  local_c._0_1_ = 1;
  if (*(int *)(param_1_00 + 0x1c) - *(int *)(param_1_00 + 0x18) >> 3 != 0) {
    do {
      if ((uint)(*(int *)(param_1_00 + 0x1c) - *(int *)(param_1_00 + 0x18) >> 3) <= uVar3) {
        FUN_00a3fb10();
      }
      FUN_004fe47e();
      cVar1 = (**(code **)(iRam00000000 + 0x10))();
    } while ((cVar1 == '\0') &&
            (uVar3 = uVar3 + 1,
            uVar3 < (uint)(*(int *)(param_1_00 + 0x1c) - *(int *)(param_1_00 + 0x18) >> 3)));
  }
  local_c._0_1_ = 0;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  if (*(int *)(param_2 + 0x24) == 0) {
    ExceptionList = local_14;
    return param_2 & 0xffffff00;
  }
  iVar2 = FUN_00478a87();
  local_c = CONCAT31(local_c._1_3_,5);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar2 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00478dda(int param_1)

{
  int **ppiVar1;
  char local_28;
  int local_24;
  int local_20;
  int local_1c;
  int local_18;
  
  FUN_0043d406(param_1 + 4);
  FUN_0046e65a();
  while( true ) {
    FUN_0046e65a();
    if ((local_1c == 0) || (local_1c != local_24)) {
      FUN_00a3fb10();
    }
    if (local_18 == local_20) break;
    ppiVar1 = (int **)FUN_007c96e9();
    (**(code **)(**ppiVar1 + 4))();
    FUN_0062d58f();
  }
  if (local_28 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00478e58(int param_1)

{
  int **ppiVar1;
  char local_28;
  int local_24;
  int local_20;
  int local_1c;
  int local_18;
  
  FUN_0043d406(param_1 + 4);
  FUN_0046e65a();
  while( true ) {
    FUN_0046e65a();
    if ((local_1c == 0) || (local_1c != local_24)) {
      FUN_00a3fb10();
    }
    if (local_18 == local_20) break;
    ppiVar1 = (int **)FUN_007c96e9();
    (**(code **)(**ppiVar1 + 8))();
    FUN_0062d58f();
  }
  if (local_28 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00478ed6(int param_1)

{
  char local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x478ee2;
  FUN_0043d406(param_1 + 4);
  local_8 = 0;
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_00478f3c(&local_20,local_20,local_1c,local_18,local_14);
  local_8 = 0xffffffff;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return;
}



int * FUN_00478f3c(int *param_1)

{
  int iVar1;
  int iVar2;
  int in_EAX;
  int local_14;
  int local_10;
  int local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  if ((*param_1 == 0) || (*param_1 != local_14)) {
    FUN_00a3fb10();
  }
  iVar1 = param_1[1];
  if (iVar1 != local_10) {
    iVar2 = *(int *)(in_EAX + 0x10);
    local_8 = local_10;
    if (local_10 != iVar2) {
      do {
        FUN_004fe47e();
        local_8 = local_8 + 8;
      } while (local_8 != iVar2);
    }
    FUN_0043a4e8(*(undefined4 *)(in_EAX + 0x10));
    *(int *)(in_EAX + 0x10) = iVar1 + (iVar2 - local_10 >> 3) * 8;
  }
  return param_1;
}



int FUN_00478fca(void)

{
  int unaff_EBX;
  int unaff_ESI;
  
  FUN_0047932e();
  return unaff_EBX + unaff_ESI * 8;
}



void FUN_00478ff1(int **param_1,undefined4 param_2,int *param_3,int param_4)

{
  int *piVar1;
  int *piVar2;
  int **in_EAX;
  int iVar3;
  int iVar4;
  
  piVar1 = in_EAX[3];
  if (((int)in_EAX[4] - (int)piVar1 & 0xfffffff8U) == 0) {
    iVar4 = 0;
  }
  else {
    if (in_EAX[4] < piVar1) {
      FUN_00a3fb10();
    }
    if ((param_3 == (int *)0x0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    iVar4 = param_4 - (int)piVar1 >> 3;
  }
  FUN_004790b8();
  piVar1 = in_EAX[3];
  if (in_EAX[4] < piVar1) {
    FUN_00a3fb10();
  }
  piVar2 = *in_EAX;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar2;
  }
  piVar1 = piVar1 + iVar4 * 2;
  if (piVar1 <= *(int **)(iVar3 + 0x10)) {
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *piVar2;
    }
    if (*(int **)(iVar4 + 0xc) <= piVar1) goto LAB_00479084;
  }
  FUN_00a3fb10();
LAB_00479084:
  param_1[1] = piVar1;
  *param_1 = piVar2;
  return;
}



int FUN_00479096(void)

{
  int unaff_EBX;
  int unaff_ESI;
  
  FUN_00479357();
  return unaff_EBX + unaff_ESI * 8;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_004790b8(int param_1_00,int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int extraout_ECX;
  undefined8 uVar5;
  uint local_1c;
  
  iVar2 = *(int *)(param_1 + 0xc);
  if (iVar2 == 0) {
    local_1c = 0;
  }
  else {
    local_1c = *(int *)(param_1 + 0x14) - iVar2 >> 3;
  }
  iVar3 = *(int *)(param_1 + 0x10);
  iVar2 = iVar3 - iVar2 >> 3;
  uVar5 = CONCAT44(0x1fffffff,iVar2);
  if (iVar2 == 0x1fffffff) {
    uVar5 = FUN_004423c1();
    iVar3 = extraout_ECX;
  }
  uVar1 = (int)uVar5 + 1;
  if (local_1c < uVar1) {
    if ((int)((ulonglong)uVar5 >> 0x20) - (local_1c >> 1) < local_1c) {
      local_1c = 0;
    }
    else {
      local_1c = local_1c + (local_1c >> 1);
    }
    if (local_1c < uVar1) {
      local_1c = uVar1;
    }
    iVar3 = FUN_0046aed6();
    iVar2 = *(int *)(param_1 + 0xc);
    FUN_00479096();
    FUN_0047930a(param_3,iVar3);
    FUN_0047930a(*(undefined4 *)(param_1 + 0x10),iVar3 + 8 + (param_3 - iVar2 >> 3) * 8);
    if (*(int *)(param_1 + 0xc) != 0) {
      FUN_00442400(*(int *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
    }
    *(uint *)(param_1 + 0x14) = iVar3 + local_1c * 8;
    *(int *)(param_1 + 0x10) =
         iVar3 + ((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc) >> 3) + 1) * 8;
    *(int *)(param_1 + 0xc) = iVar3;
  }
  else {
    iVar2 = *(int *)(param_1_00 + 4);
    if (iVar3 - param_3 >> 3 == 0) {
      if (iVar2 != 0) {
        LOCK();
        *(int *)(iVar2 + 8) = *(int *)(iVar2 + 8) + 1;
        UNLOCK();
      }
      FUN_0047930a(*(undefined4 *)(param_1 + 0x10),param_3 + 8);
      FUN_00479096();
      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 8;
      iVar2 = *(int *)(param_1 + 0x10);
      for (; param_3 != iVar2 + -8; param_3 = param_3 + 8) {
        FUN_0047938b();
      }
    }
    else {
      if (iVar2 != 0) {
        LOCK();
        *(int *)(iVar2 + 8) = *(int *)(iVar2 + 8) + 1;
        UNLOCK();
      }
      iVar2 = *(int *)(param_1 + 0x10);
      uVar4 = FUN_0047930a(iVar2,iVar2);
      *(undefined4 *)(param_1 + 0x10) = uVar4;
      while (iVar2 = iVar2 + -8, param_3 != iVar2) {
        FUN_0047938b();
      }
      iVar2 = param_3 + 8;
      if (param_3 != iVar2) {
        do {
          FUN_0047938b();
          param_3 = param_3 + 8;
        } while (param_3 != iVar2);
      }
    }
    FUN_00417fc9();
  }
  return;
}



void Catch_All_004791b9(void)

{
  int iVar1;
  int iVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + -0x1c);
  iVar2 = *(int *)(unaff_EBP + -0x20);
  if (1 < *(int *)(unaff_EBP + 8)) {
    FUN_00442400(iVar1 + iVar2 * 8);
  }
  if (0 < *(int *)(unaff_EBP + 8)) {
    FUN_00442400(iVar1 + 8 + iVar2 * 8);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar1);
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004791ed(void)

{
  undefined4 uVar1;
  int extraout_ECX;
  int iVar2;
  int unaff_EBP;
  undefined4 *unaff_ESI;
  int iVar3;
  int unaff_EDI;
  
  __CxxThrowException_8();
  *(undefined4 *)(unaff_EBP + -0x24) = *unaff_ESI;
  iVar2 = unaff_ESI[1];
  *(int *)(unaff_EBP + -0x20) = iVar2;
  if (extraout_ECX - *(int *)(unaff_EBP + 0x10) >> 3 == 0) {
    if (iVar2 != 0) {
      LOCK();
      *(int *)(iVar2 + 8) = *(int *)(iVar2 + 8) + 1;
      UNLOCK();
    }
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_0047930a();
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_00479096();
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_EDI + 0x10) = *(int *)(unaff_EDI + 0x10) + 8;
    iVar2 = *(int *)(unaff_EDI + 0x10);
    for (iVar3 = *(int *)(unaff_EBP + 0x10); iVar3 != iVar2 + -8; iVar3 = iVar3 + 8) {
      FUN_0047938b();
    }
  }
  else {
    if (iVar2 != 0) {
      LOCK();
      *(int *)(iVar2 + 8) = *(int *)(iVar2 + 8) + 1;
      UNLOCK();
    }
    *(undefined4 *)(unaff_EBP + -4) = 5;
    iVar2 = *(int *)(unaff_EDI + 0x10) + -8;
    uVar1 = FUN_0047930a();
    *(undefined4 *)(unaff_EDI + 0x10) = uVar1;
    iVar3 = *(int *)(unaff_EBP + 0x10);
    *(int *)(unaff_EBP + 8) = iVar3;
    if (iVar3 != iVar2) {
      do {
        iVar2 = iVar2 + -8;
        FUN_0047938b();
      } while (iVar2 != *(int *)(unaff_EBP + 8));
      iVar3 = *(int *)(unaff_EBP + 0x10);
    }
    iVar2 = iVar3 + 8;
    for (; iVar3 != iVar2; iVar3 = iVar3 + 8) {
      FUN_0047938b();
    }
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00417fc9();
  return;
}



void Catch_All_00479276(void)

{
  int unaff_EBP;
  
  FUN_00442400(*(int *)(*(int *)(unaff_EBP + 8) + 0x10) + 8);
  FUN_004791ed(0);
  return;
}



void FUN_0047930a(undefined4 param_1)

{
  FUN_00479422(param_1,param_1,0);
  return;
}



void FUN_0047932e(int param_1)

{
  undefined4 *in_EAX;
  undefined4 *unaff_EDI;
  
  while( true ) {
    if (param_1 == 0) {
      return;
    }
    if (in_EAX != (undefined4 *)0x0) break;
    param_1 = param_1 + -1;
    in_EAX = (undefined4 *)0x8;
  }
  *in_EAX = *unaff_EDI;
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EDI + 1);
}



void __fastcall FUN_00479357(undefined4 *param_1_00,undefined4 *param_2,int param_1)

{
  int iVar1;
  
  if (param_1 != 0) {
    do {
      if (param_1_00 != (undefined4 *)0x0) {
        *param_1_00 = *param_2;
        iVar1 = param_2[1];
        param_1_00[1] = iVar1;
        if (iVar1 != 0) {
          LOCK();
          *(int *)(iVar1 + 8) = *(int *)(iVar1 + 8) + 1;
          UNLOCK();
        }
      }
      param_1 = param_1 + -1;
      param_1_00 = param_1_00 + 2;
    } while (param_1 != 0);
  }
  return;
}



void FUN_0047938b(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *in_EAX;
  iVar1 = in_EAX[1];
  if (iVar1 != unaff_ESI[1]) {
    if (iVar1 != 0) {
      LOCK();
      *(int *)(iVar1 + 8) = *(int *)(iVar1 + 8) + 1;
      UNLOCK();
    }
    piVar2 = (int *)unaff_ESI[1];
    if (piVar2 != (int *)0x0) {
      LOCK();
      iVar3 = piVar2[2] + -1;
      piVar2[2] = iVar3;
      UNLOCK();
      if (iVar3 == 0) {
        (**(code **)(*piVar2 + 8))();
      }
    }
    unaff_ESI[1] = iVar1;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004793c5(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WABE12921::W5B6013CA>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0047940b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_00479422(undefined4 param_1_00,undefined4 *param_2,undefined4 *param_1)

{
  int iVar1;
  undefined4 *in_EAX;
  
  if (param_2 != param_1) {
    do {
      if (in_EAX != (undefined4 *)0x0) {
        *in_EAX = *param_2;
        iVar1 = param_2[1];
        in_EAX[1] = iVar1;
        if (iVar1 != 0) {
          LOCK();
          *(int *)(iVar1 + 8) = *(int *)(iVar1 + 8) + 1;
          UNLOCK();
        }
      }
      param_2 = param_2 + 2;
      in_EAX = in_EAX + 2;
    } while (param_2 != param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_00479453(undefined4 *param_1,undefined4 param_2,undefined2 param_3,undefined4 param_4,
            undefined4 param_5)

{
  *param_1 = W14E3BFCC::W5959A26E::vftable;
  *(undefined *)(param_1 + 1) = 1;
  basic_string<>(param_2);
  *(undefined2 *)(param_1 + 9) = param_3;
  basic_string<>(param_4);
  param_1[0x11] = param_5;
  return param_1;
}



undefined4 __thiscall FUN_004794a2(undefined4 param_1_00,byte param_1)

{
  FUN_004794be();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004794be(undefined4 *param_1)

{
  *param_1 = W14E3BFCC::W5959A26E::vftable;
  if ((undefined4 *)param_1[0x11] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x11])(1);
  }
  param_1[0x11] = 0;
  if ((undefined4 *)param_1[0x11] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x11])(1);
  }
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



undefined * Catch_All_00479524(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 2;
  return &DAT_00479531;
}



char __fastcall FUN_00479536(int param_1)

{
  char cVar1;
  
  cVar1 = *(char *)(param_1 + 4);
  if (cVar1 != '\0') {
    if ((((*(int *)(param_1 + 0x1c) != 0) && (*(short *)(param_1 + 0x24) != 0)) &&
        (*(int *)(param_1 + 0x3c) != 0)) &&
       ((*(int *)(param_1 + 0x44) != 0 && (*(int *)(*(int *)(param_1 + 0x44) + 8) == 0x14)))) {
      return '\x01';
    }
    cVar1 = '\0';
  }
  return cVar1;
}



undefined4 FUN_00479562(undefined4 param_1)

{
  int in_EAX;
  
  basic_string<>(in_EAX + 8);
  return param_1;
}



undefined4 FUN_0047957d(undefined4 param_1)

{
  int in_EAX;
  
  basic_string<>(in_EAX + 0x28);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00479598(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar2 = param_2;
  uStack_4 = 8;
  local_8 = 0x4795a4;
  local_14 = 0;
  if (param_1[0x11] == 0) {
    puVar3 = (undefined4 *)FUN_00b933f0(&local_18,0);
    uVar1 = *puVar3;
    *puVar3 = 0;
    *puVar2 = uVar1;
  }
  else {
    puVar3 = (undefined4 *)FUN_00b93190(param_1[0x11],&param_1);
    uVar1 = *puVar3;
    *puVar3 = 0;
    *puVar2 = uVar1;
    local_18 = param_1;
  }
  local_8 = 0;
  local_14 = 1;
  if (local_18 != (undefined4 *)0x0) {
    (**(code **)*local_18)(1);
  }
  return puVar2;
}



undefined4 __thiscall FUN_004796b8(undefined4 param_1_00,byte param_1)

{
  FUN_004796d4();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004796d4(undefined4 *param_1)

{
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  *param_1 = W14E3BFCC::W9992244A::vftable;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  local_18 = param_1;
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_00479875(&local_28,local_28,local_24,local_20,local_1c);
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_0044237a(param_1 + 1);
  *local_18 = W14E3BFCC::WB77945B3::vftable;
  return;
}



void Catch_All_0047973a(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_004797bd(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  undefined4 local_40;
  undefined4 local_3c;
  int *local_28;
  uint local_24;
  int *local_20;
  uint local_1c;
  undefined4 *local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0;
  local_14 = param_1_00 + 4;
  local_3c = 0x4797de;
  FUN_0046e65a();
  local_3c = 0x4797ec;
  FUN_0046e65a();
  if ((local_20 == (int *)0x0) || (local_20 != local_28)) {
    local_3c = 0x4797fd;
    FUN_00a3fb10();
  }
  if (local_1c != local_24) {
    if (local_20 == (int *)0x0) {
      local_3c = 0x47980e;
      FUN_00a3fb10();
      iVar1 = 0;
    }
    else {
      iVar1 = *local_20;
    }
    if (*(uint *)(iVar1 + 0x10) <= local_1c) {
      local_3c = 0x47981a;
      FUN_00a3fb10();
    }
    local_18 = &local_40;
    local_40 = param_1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_2);
  }
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    local_3c = 0x47986d;
    FUN_0040127a();
  }
  return;
}



int * FUN_00479875(int *param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int in_EAX;
  int iVar4;
  int local_10;
  int local_c;
  
  FUN_0046e65a();
  FUN_0046e65a();
  if ((*param_1 == 0) || (*param_1 != local_10)) {
    FUN_00a3fb10();
  }
  iVar2 = param_1[1];
  if (iVar2 != local_c) {
    iVar3 = *(int *)(in_EAX + 0x10);
    iVar4 = iVar3 - local_c;
    if (local_c != iVar3) {
      iVar1 = iVar2 - local_c;
      do {
        FUN_005d11c9(iVar1 + local_c);
        local_c = local_c + 8;
      } while (local_c != iVar3);
    }
    FUN_0043a4e8(*(undefined4 *)(in_EAX + 0x10));
    *(int *)(in_EAX + 0x10) = iVar2 + (iVar4 >> 3) * 8;
  }
  return param_1;
}



void Catch_All_00479946(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int **)(unaff_EBP + 8) != (int *)0x0) {
    (**(code **)(**(int **)(unaff_EBP + 8) + 4))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_0047995e(int param_1)

{
  if (*(int **)(param_1 + 0xc) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0xc) + 4))(1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0047996d(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  longlong lVar2;
  undefined local_b8 [8];
  int local_b0 [12];
  undefined2 auStack_80 [40];
  undefined4 local_30;
  _SYSTEMTIME local_2c;
  _FILETIME local_1c [2];
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa8;
  local_8 = 0x47997c;
  local_30 = 0;
  GetLocalTime(&local_2c);
  SystemTimeToFileTime(&local_2c,local_1c);
  lVar2 = __allmul(param_2,param_3,10000000,0);
  local_1c[0] = (_FILETIME)(lVar2 + CONCAT44(local_1c[0].dwHighDateTime,local_1c[0].dwLowDateTime));
  FileTimeToSystemTime(local_1c,&local_2c);
  FUN_0040c8aa(local_b8);
  local_8 = 1;
  *(undefined2 *)((int)auStack_80 + *(int *)(local_b0[0] + 4)) = 0x30;
  FUN_00823cac(&param_2,2,CONCAT22(local_2c.wDayOfWeek,local_2c.wMonth));
  uVar1 = FUN_00415f60();
  uVar1 = FUN_00479b4a(uVar1);
  FUN_004266f0(uVar1);
  *(undefined2 *)((int)auStack_80 + *(int *)(local_b0[0] + 4)) = 0x30;
  FUN_00823cac(&param_2,2,CONCAT22(local_2c.wHour,local_2c.wDay));
  uVar1 = FUN_00415f60();
  uVar1 = FUN_00479b4a(uVar1);
  FUN_004266f0(uVar1);
  uVar1 = FUN_00479b4a(local_b0,CONCAT22(local_2c.wMonth,local_2c.wYear));
  FUN_004266f0(uVar1);
  *(undefined2 *)((int)auStack_80 + *(int *)(local_b0[0] + 4)) = 0x30;
  FUN_00823cac(&param_2,2,CONCAT22(local_2c.wMinute,local_2c.wHour));
  uVar1 = FUN_00415f60();
  uVar1 = FUN_00479b4a(uVar1);
  FUN_004266f0(uVar1);
  *(undefined2 *)((int)auStack_80 + *(int *)(local_b0[0] + 4)) = 0x30;
  FUN_00823cac(&param_2,2,CONCAT22(local_2c.wSecond,local_2c.wMinute));
  uVar1 = FUN_00415f60();
  uVar1 = FUN_00479b4a(uVar1);
  FUN_004266f0(uVar1);
  *(undefined2 *)((int)auStack_80 + *(int *)(local_b0[0] + 4)) = 0x30;
  FUN_00823cac(&param_2,2,CONCAT22(local_2c.wMilliseconds,local_2c.wSecond));
  uVar1 = FUN_00415f60();
  FUN_00479b4a(uVar1);
  FUN_0040c93e();
  local_30 = 1;
  local_8 = local_8 & 0xffffff00;
  FUN_004085a7();
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_00479b4a(int *param_1,undefined2 param_2)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  uint uVar4;
  uint local_34 [3];
  char local_28;
  uint local_24;
  locale local_20 [4];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x479b56;
  local_1c = 0;
  FUN_00415f7a(param_1);
  local_8 = 0;
  if (local_28 != '\0') {
    uVar2 = FUN_00417498(local_20);
    local_8._0_1_ = 1;
    piVar3 = (int *)FUN_00416e6a(uVar2);
    std::locale::~locale(local_20);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar1 = *(int *)(*param_1 + 4);
    uVar2 = *(undefined4 *)((int)param_1 + iVar1 + 0x28);
    local_34[0] = local_34[0] & 0xffffff00;
    local_24 = (uint)*(ushort *)((int)param_1 + iVar1 + 0x30);
    uVar4 = local_34[0];
    (**(code **)(*piVar3 + 0x18))
              (local_34,local_34[0],uVar2,*(int *)(*param_1 + 4) + (int)param_1,local_24,param_2);
    if ((char)local_34[0] != '\0') {
      local_1c = 4;
    }
    local_8 = 0;
    piVar3 = (int *)FUN_00479c07(uVar4,uVar2);
    return piVar3;
  }
  FUN_00417b8a(local_1c,0);
  local_8 = 0xffffffff;
  FUN_00416035();
  return param_1;
}



undefined * Catch_All_00479be0(void)

{
  int unaff_EBP;
  
  FUN_00417b70(*(uint *)((int)*(int **)(unaff_EBP + 8) + *(int *)(**(int **)(unaff_EBP + 8) + 4) + 8
                        ) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_00479c02;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00479c07(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  
  FUN_00417b8a(*(undefined4 *)(unaff_EBP + -0x18),unaff_EBX);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00416035();
  return;
}



undefined4 FUN_00479c2d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f349c0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f34bc8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f34dd0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f34fd8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f351e0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f353e8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f355f0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f357f8,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00f35a00,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f35c08,0x133,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00479d4b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f380d8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f382e0,0x18b,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00479d87(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f38b00,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f38d08,0xd1,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00479dc3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f38de0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f38fe8,0x7c,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00479dfc(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f39068,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f39270,0xb6,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00479e38(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f39328,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f39530,0x12d,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00479e74(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f39660,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f39868,0x199,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00479eb0(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f39a08,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f39c10,0xcc,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00479eec(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f39ce0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f39ee8,0xec,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00479f28(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f39fd8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f3a1e0,0xbb,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00479f64(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f3a2d8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f3a4e0,0x150,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00479fa0(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f409c8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f40bd0,0x13a,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00479fdc(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f40d10,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f40f18,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f41120,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f41328,0x16d,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a084(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f41a08,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f41c10,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f41e18,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f42020,0x140,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a0dd(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f42168,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f42370,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f42578,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f42780,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f42988,0x58,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a140(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f429e8,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f42bf0,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f42df8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f43000,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f43208,0x163,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a1a6(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f43370,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f43578,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f43780,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f43988,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f43b90,0xea,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a20c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f43c80,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f43e88,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f44090,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f44298,0x1af,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a265(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f44448,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f44650,0x4d,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a2ed(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f44c18,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f44e20,0x1fb,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a500(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f47068,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f47270,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f47478,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f47680,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f47884,0xf,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a563(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f478a8,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f47ab0,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f47cb8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f47ec0,0x111,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a60b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f48548,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f48750,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f48958,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f48b60,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f48d68,0xca,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a671(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f48ec8,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f490d0,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f492d8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f494e0,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f496e8,0x77,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a6d4(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f49760,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f49968,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f49b70,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f49d78,0x129,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a72d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f49ea8,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f4a0b0,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f4a2b8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f4a4c0,0x183,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a786(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f4a668,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f4a870,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f4aa78,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f4ac80,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f4ae88,0xc1,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a7ec(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f4af50,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f4b158,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f4b360,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f4b568,0x99,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a894(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f4bb10,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f4bd18,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f4bf20,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f4c128,0x54,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a939(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f4c788,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f4c990,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f4cb98,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f4cda0,0x1e3,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047a992(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f4cfa8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f4d1b0,0x17e,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047aa1d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f51c30,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f51e38,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00f52040,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f52248,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f52450,0x97,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047aa83(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f543c0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f545c8,0x11c,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047aabf(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f546e8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f548f0,0x70,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047aaf8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f54968,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f54b70,0xe0,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047ab34(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f54f40,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f55148,0xec,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047ab70(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f55238,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00f55440,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00f55648,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f55850,500,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0047ac18(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00f55f90,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00f56198,0x11d,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



void FUN_0047ac54(undefined *param_1)

{
  *param_1 = 0xaf;
  param_1[1] = 0x96;
  param_1[2] = 0xa2;
  param_1[3] = 0xb4;
  param_1[4] = 0xab;
  param_1[5] = 0xd8;
  param_1[6] = 0x49;
  param_1[7] = 0x15;
  param_1[8] = 0x8e;
  param_1[9] = 0xa2;
  param_1[10] = 0x5d;
  param_1[0xb] = 0x71;
  param_1[0xc] = 0x89;
  param_1[0xd] = 0x6a;
  param_1[0xe] = 0x3c;
  param_1[0xf] = 0xca;
  return;
}



void FUN_0047ac98(undefined *param_1)

{
  *param_1 = 0x40;
  param_1[1] = 0x1d;
  param_1[2] = 200;
  param_1[3] = 0x4d;
  param_1[4] = 0xe5;
  param_1[5] = 0x22;
  param_1[6] = 0x40;
  param_1[7] = 0x27;
  param_1[8] = 0xa8;
  param_1[9] = 0x61;
  param_1[10] = 0x45;
  param_1[0xb] = 8;
  param_1[0xc] = 0x2f;
  param_1[0xd] = 0x6c;
  param_1[0xe] = 0x6f;
  param_1[0xf] = 0x36;
  return;
}



void FUN_0047acdc(undefined *param_1)

{
  *param_1 = 0x5b;
  param_1[1] = 0x43;
  param_1[2] = 0xfd;
  param_1[3] = 0xb0;
  param_1[4] = 0xf1;
  param_1[5] = 0xb8;
  param_1[6] = 0x75;
  param_1[7] = 0x48;
  param_1[8] = 0x82;
  param_1[9] = 0x12;
  param_1[10] = 0x75;
  param_1[0xb] = 0x99;
  param_1[0xc] = 0x91;
  param_1[0xd] = 100;
  param_1[0xe] = 0xd5;
  param_1[0xf] = 0x87;
  return;
}



void FUN_0047ad20(undefined *param_1)

{
  *param_1 = 0x3c;
  param_1[1] = 0xbe;
  param_1[2] = 0xf2;
  param_1[3] = 0xfb;
  param_1[4] = 10;
  param_1[5] = 0x57;
  param_1[6] = 0x13;
  param_1[7] = 0xc2;
  param_1[8] = 0x14;
  param_1[9] = 0xd;
  param_1[10] = 6;
  param_1[0xb] = 0xd2;
  param_1[0xc] = 0x16;
  param_1[0xd] = 0xf7;
  param_1[0xe] = 0x74;
  param_1[0xf] = 0xd7;
  return;
}



void FUN_0047ad64(undefined *param_1)

{
  *param_1 = 0xa9;
  param_1[1] = 0x88;
  param_1[2] = 0xbd;
  param_1[3] = 0x98;
  param_1[4] = 3;
  param_1[5] = 0x74;
  param_1[6] = 0xf;
  param_1[7] = 0xfe;
  param_1[8] = 0x80;
  param_1[9] = 0x89;
  param_1[10] = 0xcc;
  param_1[0xb] = 0xa3;
  param_1[0xc] = 0x1c;
  param_1[0xd] = 0x1a;
  param_1[0xe] = 0x85;
  param_1[0xf] = 0x98;
  return;
}



void FUN_0047ada8(undefined *param_1)

{
  *param_1 = 0x36;
  param_1[1] = 0xc3;
  param_1[2] = 0x1e;
  param_1[3] = 0xd;
  param_1[4] = 0x6d;
  param_1[5] = 100;
  param_1[6] = 0xe7;
  param_1[7] = 0x23;
  param_1[8] = 0x35;
  param_1[9] = 0x70;
  param_1[10] = 0xd7;
  param_1[0xb] = 0x8c;
  param_1[0xc] = 0x5c;
  param_1[0xd] = 0x57;
  param_1[0xe] = 0xf6;
  param_1[0xf] = 200;
  return;
}



void FUN_0047adec(undefined *param_1)

{
  *param_1 = 0xe;
  param_1[1] = 0xbc;
  param_1[2] = 0xdb;
  param_1[3] = 0xf2;
  param_1[4] = 0x1a;
  param_1[5] = 0x68;
  param_1[6] = 2;
  param_1[7] = 0x50;
  param_1[8] = 0x70;
  param_1[9] = 0x80;
  param_1[10] = 0xcc;
  param_1[0xb] = 0x45;
  param_1[0xc] = 0x65;
  param_1[0xd] = 0x20;
  param_1[0xe] = 0x10;
  param_1[0xf] = 0x4a;
  return;
}



void FUN_0047ae74(undefined *param_1)

{
  *param_1 = 0xfc;
  param_1[1] = 0x10;
  param_1[2] = 0x73;
  param_1[3] = 0xe2;
  param_1[4] = 0x8c;
  param_1[5] = 0x6a;
  param_1[6] = 0x12;
  param_1[7] = 0x37;
  param_1[8] = 2;
  param_1[9] = 0xe3;
  param_1[10] = 0xb7;
  param_1[0xb] = 0;
  param_1[0xc] = 99;
  param_1[0xd] = 0x4d;
  param_1[0xe] = 0x49;
  param_1[0xf] = 0xe;
  return;
}



void FUN_0047aeb8(undefined *param_1)

{
  *param_1 = 0xbd;
  param_1[1] = 0x9f;
  param_1[2] = 2;
  param_1[3] = 0x8e;
  param_1[4] = 0x75;
  param_1[5] = 0xf9;
  param_1[6] = 0x46;
  param_1[7] = 0xd8;
  param_1[8] = 0xa2;
  param_1[9] = 0xb7;
  param_1[10] = 0x50;
  param_1[0xb] = 0xc0;
  param_1[0xc] = 0xcd;
  param_1[0xd] = 0x85;
  param_1[0xe] = 0x2f;
  param_1[0xf] = 0x89;
  return;
}



void FUN_0047aefc(undefined *param_1)

{
  *param_1 = 199;
  param_1[1] = 0xbd;
  param_1[2] = 0xc9;
  param_1[3] = 0xe9;
  param_1[4] = 0x5f;
  param_1[5] = 0x4a;
  param_1[6] = 0x4a;
  param_1[7] = 0xe2;
  param_1[8] = 0x89;
  param_1[9] = 0xc5;
  param_1[10] = 0xf1;
  param_1[0xb] = 0xc5;
  param_1[0xc] = 0x6e;
  param_1[0xd] = 0xe9;
  param_1[0xe] = 0xd2;
  param_1[0xf] = 0x31;
  return;
}



void FUN_0047af40(undefined *param_1)

{
  *param_1 = 0x47;
  param_1[1] = 0xc3;
  param_1[2] = 0xdb;
  param_1[3] = 0x59;
  param_1[4] = 99;
  param_1[5] = 0x19;
  param_1[6] = 0x40;
  param_1[7] = 0xd5;
  param_1[8] = 0xe2;
  param_1[9] = 0x12;
  param_1[10] = 0x59;
  param_1[0xb] = 0xd;
  param_1[0xc] = 0xd2;
  param_1[0xd] = 0x2d;
  param_1[0xe] = 0x50;
  param_1[0xf] = 0x9a;
  return;
}



void FUN_0047af84(undefined *param_1)

{
  *param_1 = 0xe1;
  param_1[1] = 0xb0;
  param_1[2] = 0x45;
  param_1[3] = 0x4e;
  param_1[4] = 0x2a;
  param_1[5] = 0xa1;
  param_1[6] = 0x41;
  param_1[7] = 4;
  param_1[8] = 0x4a;
  param_1[9] = 0x2d;
  param_1[10] = 0x24;
  param_1[0xb] = 0xb1;
  param_1[0xc] = 0x54;
  param_1[0xd] = 0xa3;
  param_1[0xe] = 0xb2;
  param_1[0xf] = 0x3c;
  return;
}



void FUN_0047afc8(undefined *param_1)

{
  *param_1 = 0x29;
  param_1[1] = 0x95;
  param_1[2] = 0xb4;
  param_1[3] = 0x19;
  param_1[4] = 0xe4;
  param_1[5] = 6;
  param_1[6] = 0xa4;
  param_1[7] = 0xc1;
  param_1[8] = 0x61;
  param_1[9] = 0xd0;
  param_1[10] = 0x44;
  param_1[0xb] = 0x5c;
  param_1[0xc] = 7;
  param_1[0xd] = 0x29;
  param_1[0xe] = 0x6b;
  param_1[0xf] = 0xfa;
  return;
}



void FUN_0047b00c(undefined *param_1)

{
  *param_1 = 0x3e;
  param_1[1] = 0xcd;
  param_1[2] = 0xf3;
  param_1[3] = 0x90;
  param_1[4] = 0x6e;
  param_1[5] = 0x95;
  param_1[6] = 0xa7;
  param_1[7] = 0xbe;
  param_1[8] = 0xf5;
  param_1[9] = 0xa8;
  param_1[10] = 0x2b;
  param_1[0xb] = 0x14;
  param_1[0xc] = 0xd6;
  param_1[0xd] = 0xe3;
  param_1[0xe] = 0x97;
  param_1[0xf] = 0xba;
  return;
}



void FUN_0047b050(undefined *param_1)

{
  *param_1 = 0xd5;
  param_1[1] = 1;
  param_1[2] = 0xd5;
  param_1[3] = 0x26;
  param_1[4] = 0xbd;
  param_1[5] = 0x82;
  param_1[6] = 0x6f;
  param_1[7] = 0x95;
  param_1[8] = 0x2e;
  param_1[9] = 0x7b;
  param_1[10] = 0x23;
  param_1[0xb] = 0x99;
  param_1[0xc] = 0xba;
  param_1[0xd] = 0x13;
  param_1[0xe] = 0x48;
  param_1[0xf] = 0xea;
  return;
}



void FUN_0047b094(undefined *param_1)

{
  *param_1 = 0xb2;
  param_1[1] = 0x4e;
  param_1[2] = 0x7c;
  param_1[3] = 0x48;
  param_1[4] = 0xac;
  param_1[5] = 0x32;
  param_1[6] = 0x99;
  param_1[7] = 0x22;
  param_1[8] = 0xbf;
  param_1[9] = 0x95;
  param_1[10] = 0x8d;
  param_1[0xb] = 0x9b;
  param_1[0xc] = 0xdc;
  param_1[0xd] = 0xb3;
  param_1[0xe] = 0x2c;
  param_1[0xf] = 0x68;
  return;
}



void FUN_0047b0d8(undefined *param_1)

{
  *param_1 = 0x7e;
  param_1[1] = 0x70;
  param_1[2] = 0x7d;
  param_1[3] = 0x93;
  param_1[4] = 0xf;
  param_1[5] = 0xee;
  param_1[6] = 0xa2;
  param_1[7] = 0xaa;
  param_1[8] = 0x76;
  param_1[9] = 99;
  param_1[10] = 0x84;
  param_1[0xb] = 0x16;
  param_1[0xc] = 0x76;
  param_1[0xd] = 0x24;
  param_1[0xe] = 0x84;
  param_1[0xf] = 0x87;
  return;
}



void FUN_0047b11c(undefined *param_1)

{
  *param_1 = 0xe;
  param_1[1] = 0xf8;
  param_1[2] = 0xc0;
  param_1[3] = 0x11;
  param_1[4] = 0x38;
  param_1[5] = 0x23;
  param_1[6] = 0xe4;
  param_1[7] = 0xd;
  param_1[8] = 0x45;
  param_1[9] = 0xd5;
  param_1[10] = 0x16;
  param_1[0xb] = 0x57;
  param_1[0xc] = 0x51;
  param_1[0xd] = 0x9c;
  param_1[0xe] = 0xc1;
  param_1[0xf] = 0x25;
  return;
}



void FUN_0047b160(undefined *param_1)

{
  *param_1 = 200;
  param_1[1] = 0xcf;
  param_1[2] = 0x6e;
  param_1[3] = 0x80;
  param_1[4] = 0xf9;
  param_1[5] = 0xa4;
  param_1[6] = 0xde;
  param_1[7] = 0x2b;
  param_1[8] = 0xd9;
  param_1[9] = 0x49;
  param_1[10] = 100;
  param_1[0xb] = 0xd3;
  param_1[0xc] = 0xe8;
  param_1[0xd] = 0x9d;
  param_1[0xe] = 0x7e;
  param_1[0xf] = 0x84;
  return;
}



void FUN_0047b1a4(undefined *param_1)

{
  *param_1 = 0x41;
  param_1[1] = 0xab;
  param_1[2] = 0xfd;
  param_1[3] = 0xf1;
  param_1[4] = 0xbd;
  param_1[5] = 0xb8;
  param_1[6] = 0x48;
  param_1[7] = 0x5a;
  param_1[8] = 0x1a;
  param_1[9] = 0xd8;
  param_1[10] = 0xd9;
  param_1[0xb] = 0x4f;
  param_1[0xc] = 0x98;
  param_1[0xd] = 0xc6;
  param_1[0xe] = 0xfc;
  param_1[0xf] = 0x2d;
  return;
}



void FUN_0047b1e8(undefined *param_1)

{
  *param_1 = 0xf6;
  param_1[1] = 0xb5;
  param_1[2] = 0xfe;
  param_1[3] = 0x15;
  param_1[4] = 0xac;
  param_1[5] = 0x8a;
  param_1[6] = 7;
  param_1[7] = 0x55;
  param_1[8] = 0xff;
  param_1[9] = 0x5a;
  param_1[10] = 0xb;
  param_1[0xb] = 0xf3;
  param_1[0xc] = 0x3a;
  param_1[0xd] = 0x4e;
  param_1[0xe] = 0x9b;
  param_1[0xf] = 3;
  return;
}



void __thiscall FUN_0047b9e3(int *param_1_00,int *param_1)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  int *piVar4;
  int **extraout_ECX;
  int **extraout_ECX_00;
  int **extraout_ECX_01;
  int **extraout_ECX_02;
  int iVar5;
  int **ppiStack_10c;
  undefined4 **ppuStack_108;
  uint uStack_104;
  int iStack_f4;
  int **local_f0;
  undefined auStack_ec [4];
  int ***pppiStack_e8;
  int *local_e4;
  int *piStack_dc;
  int iStack_d8;
  int iStack_d4;
  char cStack_cc;
  int *piStack_c4;
  int aiStack_c0 [8];
  undefined4 auStack_a0 [9];
  int *apiStack_7c [2];
  undefined auStack_74 [60];
  undefined auStack_38 [28];
  uint local_1c;
  void *local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  uStack_10 = &LAB_00c40daf;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&iStack_f4;
  uStack_104 = DAT_0323f878 ^ (uint)&stack0xffffff00;
  local_e4 = param_1_00;
  if ((-(uint)(*param_1_00 != 0) & 0x7a491c) != 0) {
    ppuStack_108 = &local_f0;
    ppiStack_10c = (int **)0x47ba47;
    ExceptionList = &local_14;
    FUN_0045865b();
    local_c = 0;
    ppuStack_108 = (undefined4 **)0x47ba58;
    piVar2 = (int *)(**(code **)(*param_1 + 0x10))();
    ppuStack_108 = (undefined4 **)0x47ba61;
    (**(code **)(*piVar2 + 0xc))();
    while( true ) {
      ppuStack_108 = (undefined4 **)0x47bc68;
      cVar1 = (**(code **)(*piVar2 + 0x10))();
      if (cVar1 == '\0') break;
      ppuStack_108 = (undefined4 **)auStack_74;
      ppiStack_10c = (int **)0x47ba75;
      ppiStack_10c = (int **)(**(code **)(*piVar2 + 4))();
      uStack_10._0_1_ = 1;
      basic_string<>();
      ppiStack_10c = (int **)0x0;
      uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,3);
      FUN_00401829(1);
      ppiStack_10c = &piStack_dc;
      (**(code **)*piVar2)();
      local_c._0_1_ = 4;
      iStack_f4 = iStack_d8;
      if ((~-(uint)(*(int *)(iStack_d8 + 0x1c4) != 1) & 0x7a491c) != 0) {
        aiStack_c0[0] = 0;
        ppuStack_108 = (undefined4 **)(param_1_00 + 8);
        local_c._0_1_ = 5;
        ppiStack_10c = (int **)0x47baed;
        FUN_0043d406();
        ppuStack_108 = (undefined4 **)(iStack_f4 + 0x164);
        ppiStack_10c = apiStack_7c;
        local_c = CONCAT31(local_c._1_3_,6);
        ppiVar3 = (int **)FUN_0047bd20();
        piVar4 = *ppiVar3;
        piStack_dc = ppiVar3[1];
        piStack_c4 = (int *)param_1_00[0x10];
        if ((piVar4 == (int *)0x0) || (ppiVar3 = extraout_ECX, piVar4 != (int *)param_1_00[10])) {
          ppuStack_108 = (undefined4 **)0x47bb2e;
          FUN_00a3fb10();
          ppiVar3 = extraout_ECX_00;
        }
        if (piStack_dc != piStack_c4) {
          if (piVar4 == (int *)0x0) {
            ppuStack_108 = (undefined4 **)0x47bb49;
            FUN_00a3fb10();
            iVar5 = 0;
          }
          else {
            iVar5 = *piVar4;
          }
          if (piStack_dc == *(int **)(iVar5 + 0x18)) {
            ppuStack_108 = (undefined4 **)0x47bb57;
            FUN_00a3fb10();
          }
          ppuStack_108 = (undefined4 **)0x47bb6a;
          piVar4 = (int *)FUN_00672a11();
          if (aiStack_c0 != piVar4) {
            auStack_a0[0] = 0;
            ppuStack_108 = (undefined4 **)auStack_a0;
            local_c._0_1_ = 8;
            ppiStack_10c = (int **)0x47bb8d;
            FUN_0047be34();
            ppiStack_10c = (int **)0x47bb97;
            ppuStack_108 = (undefined4 **)piVar4;
            FUN_0047be34();
            ppuStack_108 = (undefined4 **)aiStack_c0;
            ppiStack_10c = (int **)0x47bba5;
            FUN_0047be34();
            local_c = CONCAT31(local_c._1_3_,7);
            ppuStack_108 = (undefined4 **)0x47bbb6;
            FUN_00672431();
          }
          local_c = CONCAT31(local_c._1_3_,6);
          ppuStack_108 = (undefined4 **)0x47bbca;
          FUN_00672431();
          ppiVar3 = extraout_ECX_01;
        }
        local_c = CONCAT31(local_c._1_3_,5);
        if (cStack_cc != '\0') {
          ppuStack_108 = (undefined4 **)0x47bbe2;
          FUN_00401477();
          ppiVar3 = extraout_ECX_02;
        }
        if ((-(uint)(aiStack_c0[0] != 0) & 0x7a491c) != 0) {
          pppiStack_e8 = &ppiStack_10c;
          ppiStack_10c = ppiVar3;
          FUN_0047bdbe(&ppiStack_10c,auStack_38,iStack_f4);
          FUN_0047d908();
        }
        local_c._0_1_ = 4;
        ppuStack_108 = (undefined4 **)0x47bc29;
        FUN_00672431();
        param_1_00 = local_e4;
      }
      ppuStack_108 = (undefined4 **)0x47bc36;
      (**(code **)(*piVar2 + 8))();
      local_c._0_1_ = 3;
      if (iStack_d4 != 0) {
        ppuStack_108 = (undefined4 **)0x47bc4b;
        FUN_0040127a();
      }
      ppuStack_108 = (undefined4 **)0x0;
      ppiStack_10c = (int **)0x1;
      local_c = (uint)local_c._1_3_ << 8;
      FUN_00401829();
    }
    pppiStack_e8 = &ppiStack_10c;
    ppiStack_10c = local_f0;
                    // WARNING: Subroutine does not return
    FUN_0043c023(auStack_ec);
  }
  ___security_check_cookie_4();
  return;
}



void FUN_0047bcd4(undefined4 param_1)

{
  char cVar1;
  undefined4 *unaff_ESI;
  code *local_10;
  undefined4 local_c;
  
  *unaff_ESI = 0;
  local_10 = FUN_0047b9e3;
  local_c = param_1;
  cVar1 = FUN_007f2630(&local_10);
  if (cVar1 == '\0') {
    if ((code **)(unaff_ESI + 2) != (code **)0x0) {
      unaff_ESI[2] = local_10;
      unaff_ESI[3] = local_c;
    }
    *unaff_ESI = &DAT_00fb45c9;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0047bd20(int *param_1,byte *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int *unaff_EBX;
  byte *pbVar6;
  undefined4 *puVar7;
  bool bVar8;
  bool bVar9;
  int local_14;
  int local_10;
  int local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)((undefined4 *)unaff_EBX[6])[1];
  cVar1 = *(char *)((int)local_8 + 0x41);
  puVar7 = (undefined4 *)unaff_EBX[6];
  while (cVar1 == '\0') {
    iVar3 = 0x10;
    bVar8 = false;
    iVar5 = 0;
    bVar9 = true;
    puVar2 = local_8 + 4;
    pbVar6 = param_2;
    do {
      if (iVar3 == 0) break;
      iVar3 = iVar3 + -1;
      bVar8 = *(byte *)puVar2 < *pbVar6;
      bVar9 = *(byte *)puVar2 == *pbVar6;
      puVar2 = (undefined4 *)((int)puVar2 + 1);
      pbVar6 = pbVar6 + 1;
    } while (bVar9);
    if (!bVar9) {
      iVar5 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
    }
    if (iVar5 < 0) {
      puVar2 = (undefined4 *)local_8[2];
      local_8 = puVar7;
    }
    else {
      puVar2 = (undefined4 *)*local_8;
    }
    puVar7 = local_8;
    local_8 = puVar2;
    cVar1 = *(char *)((int)puVar2 + 0x41);
  }
  puVar2 = (undefined4 *)unaff_EBX[6];
  local_8 = puVar7;
  local_c = *unaff_EBX;
  if (*unaff_EBX == 0) {
    FUN_00a3fb10();
  }
  if (puVar7 != puVar2) {
    iVar3 = 0x10;
    bVar8 = false;
    iVar5 = 0;
    bVar9 = true;
    puVar7 = puVar7 + 4;
    do {
      if (iVar3 == 0) break;
      iVar3 = iVar3 + -1;
      bVar8 = *param_2 < *(byte *)puVar7;
      bVar9 = *param_2 == *(byte *)puVar7;
      param_2 = param_2 + 1;
      puVar7 = (undefined4 *)((int)puVar7 + 1);
    } while (bVar9);
    if (!bVar9) {
      iVar5 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
    }
    if (-1 < iVar5) {
      piVar4 = &local_c;
      goto LAB_0047bdab;
    }
  }
  local_10 = unaff_EBX[6];
  local_14 = *unaff_EBX;
  piVar4 = &local_14;
LAB_0047bdab:
  iVar3 = piVar4[1];
  *param_1 = *piVar4;
  param_1[1] = iVar3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall
FUN_0047bdbe(uint *param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  uint uVar2;
  undefined4 *puVar3;
  uint *extraout_ECX;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x47bdca;
  local_18 = 0;
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a();
    local_8 = 1;
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  puVar3 = (undefined4 *)
           (**(code **)((uVar2 & 0xfffffffe) + 4))(local_20,param_1_00 + 2,param_2,param_3);
  *param_1 = *puVar3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar3 + 1);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall FUN_0047be34(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = &LAB_00c12af1;
  if (param_1_00 != param_1) {
    puVar1 = (undefined *)*param_1_00;
    if (puVar1 == (undefined *)0x0) {
      puVar1 = (undefined *)*param_1;
      if (puVar1 != (undefined *)0x0) {
        if (((uint)puVar1 & 1) == 0) {
          puVar1 = (undefined *)FUN_00672b42(param_1 + 2);
        }
        *param_1 = 0;
      }
    }
    else {
      *param_1 = puVar1;
      if (((uint)puVar1 & 1) == 0) {
        puVar1 = (undefined *)(**(code **)((uint)puVar1 & 0xfffffffe))(param_1_00 + 2,param_1 + 2,1)
        ;
      }
      else {
        puVar3 = param_1_00 + 2;
        puVar4 = param_1 + 2;
        for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
          *puVar4 = *puVar3;
          puVar3 = puVar3 + 1;
          puVar4 = puVar4 + 1;
        }
      }
      *param_1_00 = 0;
    }
  }
  return puVar1;
}



void Catch_All_0047be9b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  **(undefined4 **)(unaff_EBP + 8) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0047beaa(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x48);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 0x10) = 1;
  *(undefined *)((int)puVar1 + 0x41) = 0;
  return;
}



void FUN_0047c97e(int *param_1,byte *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  int *unaff_EBX;
  byte *pbVar6;
  undefined4 *puVar7;
  bool bVar8;
  bool bVar9;
  undefined local_1c [4];
  undefined4 *local_18;
  int local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  puVar7 = (undefined4 *)((undefined4 *)param_1[6])[1];
  cVar1 = *(char *)((int)puVar7 + 0x41);
  local_8 = CONCAT31(local_8._1_3_,1);
  local_10 = (undefined4 *)param_1[6];
  while (cVar1 == '\0') {
    iVar4 = 0x10;
    bVar8 = false;
    iVar5 = 0;
    bVar9 = true;
    pbVar6 = param_2;
    puVar2 = puVar7 + 4;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar8 = *pbVar6 < *(byte *)puVar2;
      bVar9 = *pbVar6 == *(byte *)puVar2;
      pbVar6 = pbVar6 + 1;
      puVar2 = (undefined4 *)((int)puVar2 + 1);
    } while (bVar9);
    if (!bVar9) {
      iVar5 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
    }
    local_8._1_3_ = (uint3)((uint)local_8 >> 8);
    if (iVar5 < 0) {
      puVar2 = (undefined4 *)*puVar7;
      local_8 = CONCAT31(local_8._1_3_,1);
    }
    else {
      puVar2 = (undefined4 *)puVar7[2];
      local_8 = (uint)local_8._1_3_ << 8;
    }
    local_10 = puVar7;
    puVar7 = puVar2;
    cVar1 = *(char *)((int)puVar2 + 0x41);
  }
  local_14 = *param_1;
  local_c = local_10;
  if ((char)local_8 == '\0') {
LAB_0047ca24:
    iVar4 = 0x10;
    bVar8 = false;
    iVar5 = 0;
    bVar9 = true;
    puVar7 = local_10 + 4;
    pbVar6 = param_2;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar8 = *(byte *)puVar7 < *pbVar6;
      bVar9 = *(byte *)puVar7 == *pbVar6;
      puVar7 = (undefined4 *)((int)puVar7 + 1);
      pbVar6 = pbVar6 + 1;
    } while (bVar9);
    if (!bVar9) {
      iVar5 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
    }
    iVar4 = local_8;
    if (-1 < iVar5) {
      *(undefined *)(unaff_EBX + 2) = 0;
      goto LAB_0047ca51;
    }
  }
  else {
    local_18 = *(undefined4 **)param_1[6];
    if (local_14 == 0) {
      FUN_00a3fb10();
    }
    if (local_c != local_18) {
      FUN_007c5764();
      goto LAB_0047ca24;
    }
    iVar4 = 1;
  }
  piVar3 = (int *)FUN_0047ca99(local_1c,iVar4,param_2);
  local_14 = *piVar3;
  local_10 = (undefined4 *)piVar3[1];
  *(undefined *)(unaff_EBX + 2) = 1;
LAB_0047ca51:
  unaff_EBX[1] = (int)local_10;
  *unaff_EBX = local_14;
  return;
}



void FUN_0047ca5e(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047cbe6(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf2<void,class_W208886B1::W4AED468A,class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&>,class_boost::_bi::list3<class_boost::_bi::value<class_W208886B1::W4AED468A*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0047ca99(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x47caa5;
  if (0x5555553 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_0047cc2f(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_0047cbbe;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_0047cbbe;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_0047cbbe:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0x10) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x40) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0x10) == '\0') {
LAB_0047cb7a:
        *(undefined *)(piVar1 + 0x10) = 1;
        *(undefined *)(piVar7 + 0x10) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x40) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_00449c78(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x40) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x40) = 0;
        FUN_007c5099(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0x10) == '\0') goto LAB_0047cb7a;
    if (piVar8 == (int *)*piVar1) {
      FUN_007c5099(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x40) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x40) = 0;
    FUN_00449c78(unaff_ESI);
  } while( true );
}



void FUN_0047cbe6(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf2<void,class_W208886B1::W4AED468A,class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&>,class_boost::_bi::list3<class_boost::_bi::value<class_W208886B1::W4AED468A*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf2<void,class_W208886B1::W4AED468A,class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&>,class_boost::_bi::list3<class_boost::_bi::value<class_W208886B1::W4AED468A*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_0047cc2f(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x48);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[4] = *param_1_00;
    puVar1[5] = param_1_00[1];
    puVar1[6] = param_1_00[2];
    puVar1[7] = param_1_00[3];
    FUN_00672a11();
    *(undefined *)(puVar1 + 0x10) = 0;
    *(undefined *)((int)puVar1 + 0x41) = 0;
  }
  return;
}



void Catch_All_0047cc91(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void FUN_0047cca4(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d262(0);
    return;
  }
  *param_2 = &PTR_vftable_03254858;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047ccdf(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d2aa(0);
    return;
  }
  *param_2 = &PTR_vftable_032548f0;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047cd1a(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d2f2(0);
    return;
  }
  *param_2 = &PTR_vftable_03254988;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047cd55(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d33a(0);
    return;
  }
  *param_2 = &PTR_vftable_03254a20;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047cd90(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d382(0);
    return;
  }
  *param_2 = &PTR_vftable_03254ab8;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047cdcb(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d3ca(0);
    return;
  }
  *param_2 = &PTR_vftable_03254b50;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047ce5c(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d412(0);
    return;
  }
  *param_2 = &PTR_vftable_03254be8;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047ce97(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d45a(0);
    return;
  }
  *param_2 = &PTR_vftable_03254c80;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047ced2(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d4a2(0);
    return;
  }
  *param_2 = &PTR_vftable_03254d18;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047cf63(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d4ea(0);
    return;
  }
  *param_2 = &PTR_vftable_03254db0;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047cf9e(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d532(0);
    return;
  }
  *param_2 = &PTR_vftable_03254e48;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047cfd9(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d57a(0);
    return;
  }
  *param_2 = &PTR_vftable_03254ee0;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047d014(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d5c2(0);
    return;
  }
  *param_2 = &PTR_vftable_03254f78;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047d04f(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d60a(0);
    return;
  }
  *param_2 = &PTR_vftable_03255010;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047d08a(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d652(0);
    return;
  }
  *param_2 = &PTR_vftable_032550a8;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047d0c5(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d69a(0);
    return;
  }
  *param_2 = &PTR_vftable_03255140;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047d100(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d6e2(0);
    return;
  }
  *param_2 = &PTR_vftable_032551d8;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047d13b(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d72a(0);
    return;
  }
  *param_2 = &PTR_vftable_03255270;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047d176(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d772(0);
    return;
  }
  *param_2 = &PTR_vftable_03255308;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047d1b1(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d7ba(0);
    return;
  }
  *param_2 = &PTR_vftable_032553a0;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047d1ec(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d802(0);
    return;
  }
  *param_2 = &PTR_vftable_03255438;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047d227(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0047d84a(0);
    return;
  }
  *param_2 = &PTR_vftable_032554d0;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0047d262(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03254858;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03254858);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d2aa(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032548f0;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032548f0);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d2f2(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03254988;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03254988);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d33a(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03254a20;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03254a20);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d382(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03254ab8;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03254ab8);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d3ca(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03254b50;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03254b50);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d412(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03254be8;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03254be8);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d45a(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03254c80;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03254c80);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d4a2(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03254d18;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03254d18);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d4ea(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03254db0;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03254db0);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d532(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03254e48;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03254e48);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d57a(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03254ee0;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03254ee0);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d5c2(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03254f78;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03254f78);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d60a(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03255010;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03255010);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d652(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032550a8;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032550a8);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d69a(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03255140;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03255140);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d6e2(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032551d8;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032551d8);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d72a(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03255270;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03255270);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d772(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03255308;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03255308);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d7ba(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032553a0;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032553a0);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d802(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03255438;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03255438);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_0047d84a(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032554d0;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032554d0);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0047d892(undefined4 param_1)

{
  FUN_00478a2d();
  FUN_0044237a(param_1);
  return;
}



undefined4 Catch_All_0047d8c2(void)

{
  return 0x47d8ae;
}



void FUN_0047d8c8(void)

{
  int unaff_EBX;
  uint uVar1;
  uint local_8;
  
  local_8 = 0;
  uVar1 = *(int *)(unaff_EBX + 0x10) - *(int *)(unaff_EBX + 0xc) >> 3;
  if (uVar1 != 0) {
    do {
      FUN_0047d97e();
      FUN_0047d908();
      local_8 = local_8 + 1;
    } while (local_8 < uVar1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0047d908(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uVar2 = 0;
  local_8 = 0;
  iVar1 = *(int *)(param_1_00 + 0xc);
  if (iVar1 != 0) {
    uVar2 = *(int *)(param_1_00 + 0x14) - iVar1 >> 3;
  }
  if ((uint)(*(int *)(param_1_00 + 0x10) - iVar1 >> 3) < uVar2) {
    uVar3 = FUN_00478fca(&param_1);
    *(undefined4 *)(param_1_00 + 0x10) = uVar3;
  }
  else {
    FUN_0046e65a();
    FUN_0047d9ac(&local_1c,&param_1,local_1c,local_18);
  }
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    FUN_0040127a();
  }
  return;
}



void __fastcall FUN_0047d97e(int param_1,uint param_2)

{
  undefined4 *puVar1;
  undefined4 *unaff_ESI;
  
  if (param_2 < (uint)(*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc) >> 3)) {
    puVar1 = (undefined4 *)(*(int *)(param_1 + 0xc) + param_2 * 8);
    *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  *unaff_ESI = 0;
  unaff_ESI[1] = 0;
  return;
}



void FUN_0047d9ac(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int *piVar1;
  int in_EAX;
  int iVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc) & 0xfffffff8U) == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = param_4 - local_8 >> 3;
  }
  FUN_0046e3e3();
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *local_14;
  }
  piVar1 = (int *)(local_10 + local_8 * 8);
  if (piVar1 <= *(int **)(iVar2 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *local_14;
    }
    if (*(int **)(iVar2 + 0xc) <= piVar1) goto LAB_0047da44;
  }
  FUN_00a3fb10();
LAB_0047da44:
  param_1[1] = piVar1;
  *param_1 = local_14;
  return;
}



void __fastcall FUN_0047da53(undefined4 *param_1)

{
  *param_1 = W208886B1::WFC573B5A::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0047da5a(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W208886B1::W80D5202B::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0047dac1(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0047dac1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W208886B1::W80D5202B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0047db07(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047dc63(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_0047dc7a(int param_1)

{
  uint in_EAX;
  undefined4 uVar1;
  undefined *unaff_EBX;
  
  if (in_EAX < (uint)(*(int *)(param_1 + 0x184) - *(int *)(param_1 + 0x180) >> 2)) {
    uVar1 = FUN_00425dc0();
    FUN_00419e70(uVar1);
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



void __thiscall FUN_0047dd95(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x90))(param_1_00);
  return;
}



void Catch_All_0047dded(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047deec(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047dfeb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047e0ea(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047e1e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047e2e8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_0047e3a1(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 4))(param_1_00);
  return;
}



void Catch_All_0047e3f6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047e4f5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047e61a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047e787(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047e84b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047e935(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047ea7d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047ebc5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047ed0d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047ee55(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047ef9d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047f0e5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047f23c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_0047f33e(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x4c))(param_1_00);
  return;
}



void Catch_All_0047f393(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0047f458(undefined4 *param_1_00,byte param_1)

{
  FUN_00401829(1,0);
  *param_1_00 = W208886B1::WFC573B5A::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_0047f4c7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047f5d2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047f6dd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0047f6f4(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::detail::sp_counted_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_0047f805(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047f910(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047fa20(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047fb04(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047fbc8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047fc8c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047fd50(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0047fe14(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0047feb8(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W208886B1::WFC573B5A::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_0047ff1b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00480005(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00480104(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004801c8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_004801df(undefined4 param_1)

{
  int iVar1;
  undefined local_20 [28];
  
  iVar1 = FUN_0086d460(local_20,param_1);
  return *(undefined4 *)(iVar1 + 0x10);
}



void __fastcall FUN_004801f8(undefined4 *param_1)

{
  *param_1 = WCF831331::W03FDD85F::vftable;
  return;
}



undefined4 FUN_004801ff(undefined4 param_1)

{
  FUN_004180b1();
  FUN_00470562(param_1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00480231(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x48023d;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00f1fcb8,0x1d);
  local_8 = 0;
  local_18 = 0xc27b3318;
  local_14 = 0x31bd0321;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00480285(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x480291;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00f1fd08,0x33);
  local_8 = 0;
  local_18 = 0xff8846af;
  local_14 = 0x793dfb4f;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004802d9(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4802e5;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00f1fd70,0x30);
  local_8 = 0;
  local_18 = 0xbceb569c;
  local_14 = 0xe7a3c5ce;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0048032d(undefined4 param_1)

{
  undefined4 uVar1;
  undefined local_74 [28];
  undefined4 local_58;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8 = 0x480339;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00f1fdd4,0xb);
  local_8 = 0;
  local_18 = 0x4f0c38bd;
  local_14 = 0x7d02113e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8._0_1_ = 1;
  basic_string<>(uVar1);
  local_58 = 0;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_0092c990(local_74,4,0xffffffff,0xffffffff);
  FUN_0040159c();
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return param_1;
}



void FUN_004803b9(undefined4 *param_1)

{
  *param_1 = 0x2e4;
  param_1[1] = 0x212;
  return;
}



void __thiscall FUN_004803cd(int *param_1_00,int param_1)

{
  undefined4 uVar1;
  int *piVar2;
  int iVar3;
  char unaff_BL;
  undefined4 uStack_84;
  undefined *puStack_80;
  uint uStack_7c;
  undefined auStack_6c [4];
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined local_60 [48];
  void *pvStack_30;
  undefined4 uStack_28;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c3bbe9;
  local_14 = ExceptionList;
  uStack_7c = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_14;
  puStack_80 = local_60;
  uStack_84 = 0x480403;
  (**(code **)(*param_1_00 + 0x30))();
  if (param_1 == 0) {
    iVar3 = 0;
  }
  else {
    iVar3 = param_1 + 8;
  }
  uStack_84 = 2;
  FUN_00823cac(auStack_6c);
  uVar1 = uStack_84;
  uStack_84 = uStack_64;
  uVar1 = FUN_004266f0(iVar3,uVar1);
  uVar1 = FUN_0040c573(uVar1);
  FUN_004266f0(uVar1);
  piVar2 = (int *)FUN_00415f60();
  iVar3 = *(int *)(*piVar2 + 4) + (int)piVar2;
  *(undefined2 *)(iVar3 + 0x30) = 0x30;
  uVar1 = FUN_0040c573(piVar2,uStack_68,iVar3,uStack_64);
  uVar1 = FUN_004266f0(uVar1);
  FUN_0040c573(uVar1);
  if (unaff_BL != '\0') {
    if (param_1 == 0) {
      param_1 = 0;
    }
    else {
      param_1 = param_1 + 8;
    }
    uVar1 = basic_string<>(&DAT_00f1fcf4,8);
    uStack_28 = 0;
    uStack_84 = 0x49fe7b61;
    puStack_80 = (undefined *)0x9b3c1a4;
    uVar1 = FUN_00b94470(&uStack_84,uVar1);
    uStack_28 = CONCAT31(uStack_28._1_3_,1);
    FUN_0040e327(param_1,uVar1);
    FUN_00401829(1,0);
    FUN_00401829(1,0);
  }
  ExceptionList = pvStack_30;
  return;
}



void FUN_004804f9(int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  uint unaff_ESI;
  undefined4 *puVar4;
  int local_9c;
  undefined4 local_98;
  undefined4 local_94;
  undefined local_58 [60];
  void *pvStack_1c;
  undefined4 local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3bbb8;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff58;
  ExceptionList = &local_14;
  if (param_1 == 0) {
    local_9c = 0;
  }
  else {
    local_9c = param_1 + 8;
  }
  uVar2 = basic_string<>(&DAT_00f1fdec,0xd);
  local_c = 0;
  local_98 = 0x3c32ea66;
  local_94 = 0xb860c101;
  uVar2 = FUN_00b94470(&local_98,uVar2);
  local_c = CONCAT31(local_c._1_3_,1);
  FUN_0040e327(local_9c,uVar2,uVar1);
  FUN_00401829(1,0);
  local_c = 0xffffffff;
  FUN_00401829(1,0);
  FUN_0086c940(0);
  puVar4 = &local_98;
  FUN_00455539(local_58,puVar4);
  iVar3 = FUN_004801df(puVar4);
  if (iVar3 < 0x7d9) {
    iVar3 = 0x7d8;
  }
  uVar2 = FUN_00417ba7(param_1 + 8U,iVar3,0x7d8,&DAT_00f1fe08);
  FUN_0040e4a0(uVar2);
  uVar2 = basic_string<>(&DAT_00f1fe0c,0xd);
  local_14 = (void *)0x2;
  uVar2 = FUN_00b94470(&stack0xffffff60,uVar2);
  local_14 = (void *)CONCAT31(local_14._1_3_,3);
  FUN_0040e327(-(uint)(param_1 != 0) & param_1 + 8U,uVar2);
  FUN_00401829(1,0);
  local_14 = (void *)0xffffffff;
  FUN_00401829(1,0);
  FUN_0040e4a0(-(uint)(param_1 != 0) & unaff_ESI,&DAT_00f1fe28);
  uVar2 = basic_string<>(&DAT_00f1fe2c,0x15);
  local_14 = (void *)0x4;
  uVar2 = FUN_00b94470(&stack0xffffff60,uVar2);
  local_14 = (void *)CONCAT31(local_14._1_3_,5);
  FUN_0040e327(-(uint)(param_1 != 0) & unaff_ESI,uVar2);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  ExceptionList = pvStack_1c;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00480703(undefined4 param_1,undefined4 *param_2,undefined4 *param_3)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  int *piVar4;
  byte *pbVar5;
  uint uVar6;
  undefined4 auStack_1c4 [3];
  undefined4 uStack_1b8;
  undefined4 *puStack_1b4;
  undefined *puStack_1b0;
  undefined4 *puStack_1ac;
  undefined *puStack_1a8;
  undefined4 *puStack_1a4;
  undefined4 uStack_1a0;
  undefined4 *puStack_19c;
  undefined *puStack_198;
  undefined4 *puStack_194;
  undefined *puStack_190;
  undefined4 *puStack_18c;
  undefined *puStack_188;
  undefined local_13c [8];
  undefined local_134 [128];
  undefined local_b4 [28];
  undefined local_98 [28];
  void *local_7c;
  undefined4 local_74;
  undefined4 local_70 [14];
  undefined4 local_38;
  undefined4 local_34;
  undefined4 *local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined local_24 [28];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_70;
  local_70[0] = 0xf8;
  local_38 = 0;
  local_34 = param_1;
  local_30 = param_2;
  puStack_188 = local_13c;
  local_74 = 1;
  puStack_18c = (undefined4 *)0x480747;
  FUN_0040c8aa();
  puStack_188 = (undefined *)0x2b;
  puStack_18c = (undefined4 *)&DAT_00f1fe58;
  local_74._0_1_ = 2;
  puStack_190 = (undefined *)0x48075a;
  puStack_188 = (undefined *)basic_string<>();
  puStack_18c = &local_2c;
  local_74._0_1_ = 3;
  local_2c = 0x8f2f65b0;
  local_28 = 0x78d78641;
  puStack_190 = (undefined *)0x480779;
  puStack_188 = (undefined *)FUN_00b94470();
  puStack_18c = (undefined4 *)local_134;
  local_74._0_1_ = 4;
  puStack_190 = (undefined *)0x48078a;
  FUN_0040e327();
  puStack_188 = (undefined *)0x0;
  puStack_18c = (undefined4 *)0x1;
  puStack_190 = (undefined *)0x480797;
  FUN_00401829();
  puStack_188 = (undefined *)0x0;
  puStack_18c = (undefined4 *)0x1;
  local_74._0_1_ = 2;
  puStack_190 = (undefined *)0x4807a7;
  FUN_00401829();
  puStack_188 = (undefined *)0xa;
  puStack_18c = (undefined4 *)&DAT_00f1feb0;
  puStack_190 = (undefined *)0x4807b6;
  puStack_188 = (undefined *)basic_string<>();
  puStack_18c = &local_2c;
  local_74._0_1_ = 5;
  local_2c = 0xa08a36e2;
  local_28 = 0xffb7145c;
  puStack_190 = (undefined *)0x4807d5;
  puStack_190 = (undefined *)FUN_00b94470();
  puStack_188 = (undefined *)0x5;
  puStack_18c = (undefined4 *)&LAB_00415f49;
  puStack_194 = (undefined4 *)local_134;
  local_74._0_1_ = 6;
  puStack_198 = (undefined *)0x4807ee;
  FUN_0040e327();
  puStack_190 = (undefined *)0x4807f7;
  puStack_18c = (undefined4 *)FUN_0040c559();
  puStack_190 = (undefined *)0x4807fd;
  FUN_00417ba7();
  puStack_190 = (undefined *)0x0;
  puStack_194 = (undefined4 *)0x1;
  puStack_198 = (undefined *)0x480808;
  FUN_00401829();
  puStack_190 = (undefined *)0x0;
  puStack_194 = (undefined4 *)0x1;
  local_74._0_1_ = 2;
  puStack_198 = (undefined *)0x480818;
  FUN_00401829();
  puStack_190 = local_134;
  puStack_194 = (undefined4 *)0x480827;
  FUN_004266f0();
  puStack_190 = (undefined *)0x7;
  puStack_194 = (undefined4 *)&DAT_00f1fec8;
  puStack_198 = (undefined *)0x480837;
  puStack_190 = (undefined *)basic_string<>();
  puStack_194 = &local_2c;
  local_74._0_1_ = 7;
  local_2c = 0xa3766418;
  local_28 = 0x7138e199;
  puStack_198 = (undefined *)0x480856;
  puStack_198 = (undefined *)FUN_00b94470();
  puStack_190 = (undefined *)0x1;
  puStack_194 = (undefined4 *)&LAB_00415f49;
  puStack_19c = (undefined4 *)local_134;
  local_74._0_1_ = 8;
  uStack_1a0 = 0x48086a;
  FUN_0040e327();
  puStack_198 = (undefined *)0x480873;
  puStack_194 = (undefined4 *)FUN_0040c559();
  puStack_198 = (undefined *)0x480879;
  FUN_00417ba7();
  puStack_198 = (undefined *)0x0;
  puStack_19c = (undefined4 *)0x1;
  uStack_1a0 = 0x480884;
  FUN_00401829();
  puStack_198 = (undefined *)0x0;
  puStack_19c = (undefined4 *)0x1;
  local_74._0_1_ = 2;
  uStack_1a0 = 0x480894;
  FUN_00401829();
  puStack_198 = local_134;
  puStack_19c = (undefined4 *)0x4808a3;
  FUN_004266f0();
  puStack_198 = (undefined *)0x7;
  puStack_19c = (undefined4 *)&DAT_00f1fed8;
  uStack_1a0 = 0x4808b3;
  puStack_198 = (undefined *)basic_string<>();
  puStack_19c = &local_2c;
  local_74._0_1_ = 9;
  local_2c = 0xed788501;
  local_28 = 0x96ec17bf;
  uStack_1a0 = 0x4808d2;
  uStack_1a0 = FUN_00b94470();
  puStack_198 = (undefined *)0x29;
  puStack_19c = (undefined4 *)&LAB_00415f49;
  puStack_1a4 = (undefined4 *)local_134;
  local_74._0_1_ = 10;
  puStack_1a8 = (undefined *)0x4808e6;
  FUN_0040e327();
  uStack_1a0 = 0x4808ef;
  puStack_19c = (undefined4 *)FUN_0040c559();
  uStack_1a0 = 0x4808f5;
  FUN_00417ba7();
  uStack_1a0 = 0;
  puStack_1a4 = (undefined4 *)0x1;
  puStack_1a8 = (undefined *)0x480900;
  FUN_00401829();
  uStack_1a0 = 0;
  local_74._0_1_ = 2;
  puStack_1a4 = (undefined4 *)0x1;
  puStack_1a8 = (undefined *)0x480910;
  FUN_00401829();
  uStack_1a0 = 0xc;
  puStack_1a4 = (undefined4 *)&DAT_00f1fee8;
  puStack_1a8 = (undefined *)0x48091f;
  uStack_1a0 = basic_string<>();
  puStack_1a4 = &local_2c;
  local_74._0_1_ = 0xb;
  local_2c = 0xdc1f4d0f;
  local_28 = 0x597bffe3;
  puStack_1a8 = (undefined *)0x48093e;
  FUN_00b94470();
  uStack_1a0 = 0;
  puStack_1a4 = (undefined4 *)0x1;
  local_74._0_1_ = 0xd;
  puStack_1a8 = (undefined *)0x48094f;
  FUN_00401829();
  puVar2 = local_30;
  if (((local_30[5] == 0) || (param_3 == (undefined4 *)0x0)) || (param_3[2] != 0x14)) {
    uStack_1a0 = 0;
    puStack_1a4 = (undefined4 *)local_24;
    puStack_1a8 = local_134;
    puStack_1ac = (undefined4 *)0x480b58;
    puStack_1a8 = (undefined *)FUN_004266f0();
    puStack_1ac = (undefined4 *)0x480b5f;
    puStack_1a4 = (undefined4 *)FUN_0040e327();
    puStack_1a8 = (undefined *)0x480b67;
    FUN_00417ba7();
  }
  else {
    uStack_1a0 = 1;
    puStack_1a8 = local_134;
    puStack_1ac = (undefined4 *)0x480986;
    puStack_1a4 = (undefined4 *)local_24;
    puStack_1a8 = (undefined *)FUN_004266f0();
    puStack_1ac = (undefined4 *)0x48098d;
    puStack_1a4 = (undefined4 *)FUN_0040e327();
    puStack_1a8 = (undefined *)0x480995;
    FUN_00417ba7();
    local_30 = auStack_1c4;
    auStack_1c4[0] = 0;
    local_74._0_1_ = 0xe;
    uVar3 = FUN_00ba8980(local_b4,puVar2);
    local_74._0_1_ = 0x10;
    FUN_00ba8620(local_98,uVar3);
    local_74._0_1_ = 0x11;
    puStack_1a8 = (undefined *)0x4809d5;
    uVar3 = FUN_00ba84f0();
    puStack_1a8 = (undefined *)0xa;
    puStack_1ac = (undefined4 *)&DAT_00f1ff04;
    local_74._0_1_ = 0x12;
    puStack_1b0 = (undefined *)0x4809ed;
    puStack_1a8 = (undefined *)basic_string<>();
    puStack_1ac = &local_2c;
    local_74._0_1_ = 0x13;
    local_2c = 0xa479fd59;
    local_28 = 0xbba758d8;
    puStack_1b0 = (undefined *)0x480a0c;
    puStack_1ac = (undefined4 *)FUN_00b94470();
    puStack_1b0 = local_134;
    local_74._0_1_ = 0x14;
    puStack_1b4 = (undefined4 *)0x480a21;
    puStack_1a8 = (undefined *)uVar3;
    puStack_1b0 = (undefined *)FUN_004266f0();
    puStack_1b4 = (undefined4 *)0x480a28;
    puStack_1ac = (undefined4 *)FUN_0040e327();
    puStack_1b0 = (undefined *)0x480a30;
    FUN_0040e327();
    puStack_1a8 = (undefined *)0x0;
    puStack_1ac = (undefined4 *)0x1;
    puStack_1b0 = (undefined *)0x480a3e;
    FUN_00401829();
    puStack_1a8 = (undefined *)0x0;
    puStack_1ac = (undefined4 *)0x1;
    puStack_1b0 = (undefined *)0x480a4b;
    FUN_00401829();
    puStack_1a8 = (undefined *)0x0;
    puStack_1ac = (undefined4 *)0x1;
    puStack_1b0 = (undefined *)0x480a58;
    FUN_00401829();
    puStack_1a8 = (undefined *)0x0;
    puStack_1ac = (undefined4 *)0x1;
    puStack_1b0 = (undefined *)0x480a62;
    FUN_004017b2();
    puStack_1a8 = (undefined *)0x0;
    puStack_1ac = (undefined4 *)0x1;
    local_74._0_1_ = 0xd;
    puStack_1b0 = (undefined *)0x480a70;
    FUN_004017b2();
    puStack_1a8 = (undefined *)0x6;
    puStack_1ac = (undefined4 *)&DAT_00f1ff1c;
    puStack_1b0 = (undefined *)0x480a7f;
    puStack_1a8 = (undefined *)basic_string<>();
    puStack_1ac = &local_2c;
    local_74._0_1_ = 0x15;
    local_2c = 0xc4b863bb;
    local_28 = 0xdb6d947e;
    puStack_1b0 = (undefined *)0x480a9e;
    puStack_1a8 = (undefined *)FUN_00b94470();
    puStack_1ac = (undefined4 *)local_134;
    local_74._0_1_ = 0x16;
    puStack_1b0 = (undefined *)0x480ab2;
    puStack_1ac = (undefined4 *)FUN_004266f0();
    puStack_1b0 = (undefined *)0x480ab9;
    FUN_0040e327();
    uVar6 = 0;
    puStack_1a8 = (undefined *)0x0;
    puStack_1ac = (undefined4 *)0x1;
    puStack_1b0 = (undefined *)0x480ac7;
    FUN_00401829();
    puStack_1a8 = (undefined *)0x0;
    puStack_1ac = (undefined4 *)0x1;
    local_74._0_1_ = 0xd;
    puStack_1b0 = (undefined *)0x480ad5;
    FUN_00401829();
    uVar1 = param_3[2];
    if (uVar1 != 0) {
      do {
        puStack_1a8 = &LAB_004150a2;
        local_30 = param_3;
        puStack_1ac = (undefined4 *)0x480af9;
        piVar4 = (int *)FUN_0040c559();
        *(undefined2 *)((int)piVar4 + *(int *)(*piVar4 + 4) + 0x30) = 0x30;
        puStack_1a8 = (undefined *)0x480b13;
        pbVar5 = (byte *)FUN_00b92870();
        puStack_1a8 = (undefined *)(uint)*pbVar5;
        puStack_1ac = (undefined4 *)&LAB_00415099;
        puStack_1b4 = &local_2c;
        puStack_1b0 = (undefined *)0x2;
        uStack_1b8 = 0x480b27;
        FUN_00823cac();
        puStack_1b0 = (undefined *)0x480b30;
        FUN_00415f60();
        puStack_1b0 = (undefined *)0x480b37;
        puStack_1ac = (undefined4 *)FUN_0040c559();
        puStack_1b0 = (undefined *)0x480b3d;
        FUN_00417ba7();
        uVar6 = uVar6 + 1;
      } while (uVar6 < uVar1);
    }
  }
  puStack_1a8 = (undefined *)0x480b75;
  FUN_0040c93e();
  puStack_1a8 = (undefined *)0x0;
  puStack_1ac = (undefined4 *)0x1;
  local_38 = 1;
  puStack_1b0 = (undefined *)0x480b86;
  FUN_00401829();
  local_74._0_1_ = 1;
  puStack_1a8 = (undefined *)0x480b94;
  FUN_004085a7();
  local_74 = (uint)local_74._1_3_ << 8;
  if (param_3 != (undefined4 *)0x0) {
    puStack_1a8 = (undefined *)0x1;
    puStack_1ac = (undefined4 *)0x480ba4;
    (**(code **)*param_3)();
  }
  ExceptionList = local_7c;
  puStack_198 = (undefined *)0x480bbf;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00480c29(uint *param_1,uint *param_2)

{
  if (((int)param_1[1] <= (int)param_2[1]) &&
     (((int)param_1[1] < (int)param_2[1] || (*param_1 < *param_2)))) {
    return 1;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00480c4d(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x48);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = 0;
    puVar2[8] = 0;
    puVar2[9] = 0;
    puVar2[10] = 0;
    puVar2[0xb] = 0;
    puVar2[0xd] = 0;
    puVar2[0xc] = wxBitmap::vftable;
    puVar2[0xf] = 0;
    puVar2[0xe] = wxBitmap::vftable;
    *(undefined *)(puVar2 + 0x10) = 0;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00480e38(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00480e38(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WCF831331::W682DE3F2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00480e7e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_00480ea3(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_00480e95(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_00480ea3(*(int *)(param_1 + 0xc));
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00480ea3(int param_1)

{
  FUN_008f7630();
  FUN_008f7630();
  if (*(int *)(param_1 + 0x2c) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x24) != 0) {
    FUN_0040127a();
  }
  FUN_00507e58();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



undefined4 __thiscall FUN_00480f85(undefined4 param_1_00,byte param_1)

{
  FUN_00b9035b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined ** FUN_00480fa1(void)

{
  return &PTR_PTR_00f1fad8;
}



undefined * FUN_00480fa7(void)

{
  return &DAT_032ee78c;
}



undefined4 __thiscall FUN_004813b0(undefined4 param_1,byte param_2)

{
  FUN_004813cc();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_004813cc(undefined4 *param_1)

{
  *param_1 = WF22948E2::W0614B432::vftable;
  if (param_1[0xa0] != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xa0]);
  }
  param_1[0xa0] = 0;
  param_1[0xa1] = wxObject::vftable;
  FUN_0083e850();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[0xa0]);
}



void Catch_All_0048144e(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004814f6(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 2;
  puVar1 = auStack_24;
  auStack_24[0] = 0x481514;
  FUN_004636a8();
  local_8._0_1_ = 1;
  puVar2 = puVar1 + -1;
  puVar1[-1] = 0x481520;
  FUN_004636a8();
  local_8 = (uint)local_8._1_3_ << 8;
  if (param_1[6] != 0) {
    *(undefined4 *)((int)puVar2 + -4) = 0x481530;
    FUN_0040127a();
  }
  *param_1 = W88619A38::W976B0E2F::vftable;
  *(undefined4 *)((int)puVar2 + -4) = 0x48153b;
  return;
}



void __thiscall FUN_0048194e(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxCommandEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00481999(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x10);
  if (pvVar1 != (void *)0x0) {
    FUN_004819cd(param_2,param_3,0);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_004819cd(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  param_1_00[1] = param_3;
  param_1_00[2] = param_1;
  *param_1_00 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxCommandEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
                ::vftable;
  param_1_00[3] = param_2;
  return;
}



void FUN_004819fb(void)

{
  FUN_00480f85();
  return;
}



void FUN_00481a06(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W88619A38::W976B0E2F::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00481a0d(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  FUN_0044cca8();
  *param_1_00 = wxDialog::vftable;
  FUN_00924140();
  FUN_00924510(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  return param_1_00;
}



void __fastcall FUN_00481afc(int param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined auStack_74 [4];
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined *puStack_64;
  undefined local_3c [40];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c37606;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar3 = 0;
  if (**(int **)(param_1 + 8) != 0) {
    puStack_64 = (undefined *)0x481b41;
    uVar1 = 0x1c0;
    pvVar2 = operator_new(0x1c0);
    puStack_64 = (undefined *)uVar1;
    local_c = 0;
    if (pvVar2 != (void *)0x0) {
      uStack_68 = 0x481b60;
      FUN_00463759();
      uStack_70 = 0x481b6f;
      FUN_006ad7fd();
      local_c._0_1_ = 2;
      FUN_00482951(auStack_74,param_1 + 0x14);
      local_c = (uint)local_c._1_3_ << 8;
      uVar3 = FUN_00482fc9(pvVar2,*(undefined4 *)(param_1 + 4));
    }
    local_c = 3;
    puStack_64 = (undefined *)0x481bb6;
    FUN_004325b6();
    local_c = CONCAT31(local_c._1_3_,4);
    puStack_64 = local_3c;
    uStack_6c = *(undefined4 *)(param_1 + 4);
    uStack_70 = 0x481bd8;
    uStack_68 = uVar3;
    FUN_00b90887();
    FUN_0040159c();
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_00481bf6(int param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined auStack_74 [4];
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined *puStack_64;
  undefined local_3c [40];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c37606;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar3 = 0;
  if (**(int **)(param_1 + 8) != 0) {
    puStack_64 = (undefined *)0x481c3b;
    uVar1 = 0x1c0;
    pvVar2 = operator_new(0x1c0);
    puStack_64 = (undefined *)uVar1;
    local_c = 0;
    if (pvVar2 != (void *)0x0) {
      uStack_68 = 0x481c5a;
      FUN_00463759();
      uStack_70 = 0x481c69;
      FUN_006ad7fd();
      local_c._0_1_ = 2;
      FUN_00482a07(auStack_74,param_1 + 0x14);
      local_c = (uint)local_c._1_3_ << 8;
      uVar3 = FUN_00483622(pvVar2,*(undefined4 *)(param_1 + 4));
    }
    local_c = 3;
    puStack_64 = (undefined *)0x481cb0;
    FUN_004325b6();
    local_c = CONCAT31(local_c._1_3_,4);
    puStack_64 = local_3c;
    uStack_6c = *(undefined4 *)(param_1 + 4);
    uStack_70 = 0x481cd2;
    uStack_68 = uVar3;
    FUN_00b90887();
    FUN_0040159c();
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_00481cf0(int param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined auStack_84 [4];
  undefined4 uStack_80;
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined *puStack_6c;
  undefined local_3c [40];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c40d45;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar3 = 0;
  if (**(int **)(param_1 + 8) != 0) {
    puStack_6c = (undefined *)0x481d35;
    uVar1 = 0x210;
    pvVar2 = operator_new(0x210);
    puStack_6c = (undefined *)uVar1;
    local_c = 0;
    if (pvVar2 != (void *)0x0) {
      uStack_70 = 0x481d54;
      FUN_00463759();
      uStack_78 = 0x481d63;
      FUN_006ad7fd();
      uStack_80 = 0x481d73;
      FUN_006ad7fd();
      local_c._0_1_ = 3;
      FUN_00482abd(auStack_84,param_1 + 0x14);
      local_c = (uint)local_c._1_3_ << 8;
      uVar3 = FUN_004840f4(pvVar2,*(undefined4 *)(param_1 + 4),*(undefined *)(param_1 + 0x90));
    }
    local_c = 4;
    puStack_6c = (undefined *)0x481dc5;
    FUN_004325b6();
    local_c = CONCAT31(local_c._1_3_,5);
    puStack_6c = local_3c;
    uStack_74 = *(undefined4 *)(param_1 + 4);
    uStack_78 = 0x481de7;
    uStack_70 = uVar3;
    FUN_00b90887();
    FUN_0040159c();
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_00481e05(int param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined auStack_84 [4];
  undefined4 uStack_80;
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined *puStack_6c;
  undefined local_3c [40];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c40d45;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar3 = 0;
  if (**(int **)(param_1 + 8) != 0) {
    puStack_6c = (undefined *)0x481e4a;
    uVar1 = 0x208;
    pvVar2 = operator_new(0x208);
    puStack_6c = (undefined *)uVar1;
    local_c = 0;
    if (pvVar2 != (void *)0x0) {
      uStack_70 = 0x481e69;
      FUN_00463759();
      uStack_78 = 0x481e78;
      FUN_006ad7fd();
      uStack_80 = 0x481e88;
      FUN_006ad7fd();
      local_c._0_1_ = 3;
      FUN_00482b73(auStack_84,param_1 + 0x14);
      local_c = (uint)local_c._1_3_ << 8;
      uVar3 = FUN_00484fdc(pvVar2,*(undefined4 *)(param_1 + 4),*(undefined *)(param_1 + 0x90));
    }
    local_c = 4;
    puStack_6c = (undefined *)0x481eda;
    FUN_004325b6();
    local_c = CONCAT31(local_c._1_3_,5);
    puStack_6c = local_3c;
    uStack_74 = *(undefined4 *)(param_1 + 4);
    uStack_78 = 0x481efc;
    uStack_70 = uVar3;
    FUN_00b90887();
    FUN_0040159c();
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_00481f1a(int param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined auStack_74 [4];
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined *puStack_64;
  undefined local_3c [40];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c37606;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar3 = 0;
  if (**(int **)(param_1 + 8) != 0) {
    puStack_64 = (undefined *)0x481f5f;
    uVar1 = 0x1c0;
    pvVar2 = operator_new(0x1c0);
    puStack_64 = (undefined *)uVar1;
    local_c = 0;
    if (pvVar2 != (void *)0x0) {
      uStack_68 = 0x481f7e;
      FUN_00463759();
      uStack_70 = 0x481f8d;
      FUN_006ad7fd();
      local_c._0_1_ = 2;
      FUN_00482c29(auStack_74,param_1 + 0x14);
      local_c = (uint)local_c._1_3_ << 8;
      uVar3 = FUN_00486a3b(pvVar2,*(undefined4 *)(param_1 + 4));
    }
    local_c = 3;
    puStack_64 = (undefined *)0x481fd4;
    FUN_004325b6();
    local_c = CONCAT31(local_c._1_3_,4);
    puStack_64 = local_3c;
    uStack_6c = *(undefined4 *)(param_1 + 4);
    uStack_70 = 0x481ff6;
    uStack_68 = uVar3;
    FUN_00b90887();
    FUN_0040159c();
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_00482014(int param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined auStack_74 [4];
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined *puStack_64;
  undefined local_3c [40];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c37606;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar3 = 0;
  if (**(int **)(param_1 + 8) != 0) {
    puStack_64 = (undefined *)0x482059;
    uVar1 = 0x1c0;
    pvVar2 = operator_new(0x1c0);
    puStack_64 = (undefined *)uVar1;
    local_c = 0;
    if (pvVar2 != (void *)0x0) {
      uStack_68 = 0x482078;
      FUN_00463759();
      uStack_70 = 0x482087;
      FUN_006ad7fd();
      local_c._0_1_ = 2;
      FUN_00482cdf(auStack_74,param_1 + 0x14);
      local_c = (uint)local_c._1_3_ << 8;
      uVar3 = FUN_00487470(pvVar2,*(undefined4 *)(param_1 + 4));
    }
    local_c = 3;
    puStack_64 = (undefined *)0x4820ce;
    FUN_004325b6();
    local_c = CONCAT31(local_c._1_3_,4);
    puStack_64 = local_3c;
    uStack_6c = *(undefined4 *)(param_1 + 4);
    uStack_70 = 0x4820f0;
    uStack_68 = uVar3;
    FUN_00b90887();
    FUN_0040159c();
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_0048210e(int param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined auStack_74 [4];
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined *puStack_64;
  undefined local_3c [40];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c37606;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar3 = 0;
  if (**(int **)(param_1 + 8) != 0) {
    puStack_64 = (undefined *)0x482153;
    uVar1 = 0x1c0;
    pvVar2 = operator_new(0x1c0);
    puStack_64 = (undefined *)uVar1;
    local_c = 0;
    if (pvVar2 != (void *)0x0) {
      uStack_68 = 0x482172;
      FUN_00463759();
      uStack_70 = 0x482181;
      FUN_006ad7fd();
      local_c._0_1_ = 2;
      FUN_00482d95(auStack_74,param_1 + 0x14);
      local_c = (uint)local_c._1_3_ << 8;
      uVar3 = FUN_00487c98(pvVar2,*(undefined4 *)(param_1 + 4));
    }
    local_c = 3;
    puStack_64 = (undefined *)0x4821c8;
    FUN_004325b6();
    local_c = CONCAT31(local_c._1_3_,4);
    puStack_64 = local_3c;
    uStack_6c = *(undefined4 *)(param_1 + 4);
    uStack_70 = 0x4821ea;
    uStack_68 = uVar3;
    FUN_00b90887();
    FUN_0040159c();
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_00482208(int param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined auStack_84 [4];
  undefined4 uStack_80;
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined *puStack_6c;
  undefined local_3c [40];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c40d45;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar3 = 0;
  if (**(int **)(param_1 + 8) != 0) {
    puStack_6c = (undefined *)0x48224d;
    uVar1 = 0x208;
    pvVar2 = operator_new(0x208);
    puStack_6c = (undefined *)uVar1;
    local_c = 0;
    if (pvVar2 != (void *)0x0) {
      uStack_70 = 0x48226c;
      FUN_00463759();
      uStack_78 = 0x48227b;
      FUN_006ad7fd();
      uStack_80 = 0x48228b;
      FUN_006ad7fd();
      local_c._0_1_ = 3;
      FUN_00482e4b(auStack_84,param_1 + 0x14);
      local_c = (uint)local_c._1_3_ << 8;
      uVar3 = FUN_004886d4(pvVar2,*(undefined4 *)(param_1 + 4),*(undefined *)(param_1 + 0x90));
    }
    local_c = 4;
    puStack_6c = (undefined *)0x4822dd;
    FUN_004325b6();
    local_c = CONCAT31(local_c._1_3_,5);
    puStack_6c = local_3c;
    uStack_74 = *(undefined4 *)(param_1 + 4);
    uStack_78 = 0x4822ff;
    uStack_70 = uVar3;
    FUN_00b90887();
    FUN_0040159c();
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_0048231d(int param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined auStack_74 [4];
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined *puStack_64;
  undefined local_3c [40];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c37606;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar3 = 0;
  if (**(int **)(param_1 + 8) != 0) {
    puStack_64 = (undefined *)0x482362;
    uVar1 = 0x230;
    pvVar2 = operator_new(0x230);
    puStack_64 = (undefined *)uVar1;
    local_c = 0;
    if (pvVar2 != (void *)0x0) {
      uStack_68 = 0x482381;
      FUN_00463759();
      uStack_70 = 0x482390;
      FUN_006ad7fd();
      local_c._0_1_ = 2;
      FUN_00482f01(auStack_74,param_1 + 0x14);
      local_c = (uint)local_c._1_3_ << 8;
      uVar3 = FUN_004893c8(pvVar2,*(undefined4 *)(param_1 + 4));
    }
    local_c = 3;
    puStack_64 = (undefined *)0x4823d7;
    FUN_004325b6();
    local_c = CONCAT31(local_c._1_3_,4);
    puStack_64 = local_3c;
    uStack_6c = *(undefined4 *)(param_1 + 4);
    uStack_70 = 0x4823f9;
    uStack_68 = uVar3;
    FUN_00b90887();
    FUN_0040159c();
  }
  ExceptionList = local_14;
  return;
}



void FUN_00482417(int *param_1)

{
  undefined4 uStack_e4;
  undefined4 uStack_e0;
  undefined **ppuStack_dc;
  undefined4 uStack_d8;
  uint uStack_d4;
  int iStack_c0;
  undefined4 *apuStack_bc [42];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c22882;
  local_14 = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  uStack_d8 = 0x482455;
  iStack_c0 = (**(code **)(*param_1 + 0xc))();
  if (iStack_c0 != 0) {
    uStack_d8 = 0;
    ppuStack_dc = (undefined **)apuStack_bc;
    uStack_e0 = 0x482476;
    (**(code **)(*param_1 + 0x10))();
    local_14 = (void *)0x0;
    apuStack_bc[0] = &uStack_e4;
    uStack_e4 = 0;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&iStack_c0);
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Removing unreachable block (ram,0x00482746)
// WARNING: Removing unreachable block (ram,0x00482726)
// WARNING: Removing unreachable block (ram,0x0048286f)
// WARNING: Removing unreachable block (ram,0x00482879)
// WARNING: Removing unreachable block (ram,0x00482894)
// WARNING: Removing unreachable block (ram,0x004828d3)
// WARNING: Removing unreachable block (ram,0x004828e2)
// WARNING: Removing unreachable block (ram,0x004828eb)

void __thiscall FUN_00482530(int param_1_00,int *param_1)

{
  int iVar1;
  int iStack_150;
  int local_14c;
  undefined auStack_148 [304];
  void *pvStack_18;
  void *local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  uStack_10 = &LAB_00c30c3d;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  (**(code **)(*param_1 + 0x14))();
  uStack_10 = (undefined *)0x0;
  if (**(int **)(param_1_00 + 8) != 0) {
    FUN_004325b6();
    uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,1);
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  FUN_004325b6();
  uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,4);
  if (iStack_150 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  FUN_004325b6();
  uStack_10 = (undefined *)0x7;
  FUN_00b90911();
  FUN_0040159c();
  uStack_10 = (undefined *)0x0;
  FUN_0040159c();
  if (*(char *)(param_1 + 9) != '\0') {
    FUN_00b9014a();
  }
  iVar1 = (**(code **)(*param_1 + 0xc))();
  if (iVar1 != 0) {
    (**(code **)(*param_1 + 0x10))();
                    // WARNING: Subroutine does not return
    FUN_0043c023(auStack_148);
  }
  uStack_10 = (undefined *)0xffffffff;
  if (local_14c != 0) {
    FUN_0040127a();
  }
  ExceptionList = pvStack_18;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00482951(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x48295d;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W88619A38::W7EEDEEF7::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W88619A38::W7EEDEEF7::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00482a07(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x482a13;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W88619A38::W0F3EE231::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W88619A38::W0F3EE231::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00482abd(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x482ac9;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W88619A38::W56AE65B4::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W88619A38::W56AE65B4::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00482b73(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x482b7f;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W88619A38::W10B479FC::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W88619A38::W10B479FC::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00482c29(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x482c35;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W88619A38::W40F1E0EC::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W88619A38::W40F1E0EC::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00482cdf(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x482ceb;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W88619A38::W9718CCBF::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W88619A38::W9718CCBF::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00482d95(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x482da1;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W88619A38::WDDC4C4A6::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W88619A38::WDDC4C4A6::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00482e4b(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x482e57;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W88619A38::WA7693960::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W88619A38::WA7693960::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00482f01(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x482f0d;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W88619A38::W0801E4A7::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W88619A38::W0801E4A7::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



undefined ** FUN_00482fb7(void)

{
  return &PTR_u_W9D271878_032472f8;
}



undefined ** FUN_00482fbd(void)

{
  return &PTR_PTR_00f1f910;
}



undefined * FUN_00482fc3(void)

{
  return &DAT_032ee7e4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00482fc9(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00446386();
  *param_1 = WF22948E2::W9D271878::vftable;
  *(undefined *)(param_1 + 0x5d) = 0;
  param_1[0x5f] = param_3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000010);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_004830db(int param_1_00,byte param_1)

{
  FUN_004636a8();
  if (*(int *)(param_1_00 + 0x180) != 0) {
    FUN_0040127a();
  }
  *(undefined ***)(param_1_00 + 0x164) = wxControlContainerBase::vftable;
  FUN_009150e0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_004834e2(int param_1_00,int param_1)

{
  int *piVar1;
  
  if (*(char *)(param_1_00 + 0x174) != '\0') {
    piVar1 = *(int **)(param_1_00 + 0x178);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (((uint)piVar1[0x38] >> 0xc & 1) != 0)) {
      FUN_00840480("D:\\wxWidgets-2.9.3\\include\\wx/checkbox.h",0x3e,"wxCheckBoxBase::IsChecked",
                   "!Is3State()",
                   L"Calling IsChecked() doesn\'t make sense for a three state checkbox, Use Get3StateValue() instead"
                  );
    }
    (**(code **)(*piVar1 + 0x35c))();
    FUN_007b24af();
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void thunk_FUN_0044cd6b(void)

{
  FUN_0086aa30();
  FUN_009375f0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00483552(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  FUN_0044ced6();
  *param_1_00 = wxStaticText::vftable;
  FUN_0095f380(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  return param_1_00;
}



undefined ** FUN_00483610(void)

{
  return &PTR_u_WE3AF94A7_03247310;
}



undefined ** FUN_00483616(void)

{
  return &PTR_PTR_00f1f8f4;
}



undefined * FUN_0048361c(void)

{
  return &DAT_032ee824;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00483622(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00446386();
  *param_1 = WF22948E2::WE3AF94A7::vftable;
  param_1[0x5e] = 0;
  param_1[0x5d] = wxFont::vftable;
  param_1[0x60] = param_3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000010);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __fastcall FUN_00483c5b(int param_1)

{
  FUN_0086a600();
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x40));
  *(undefined4 *)(param_1 + 0x5c) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 100));
  *(undefined4 *)(param_1 + 0x80) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x88));
  *(undefined4 *)(param_1 + 0xa4) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0xac));
  *(undefined4 *)(param_1 + 200) = 0;
  FUN_00453f4b();
  FUN_00453f4b();
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x110));
  *(undefined4 *)(param_1 + 300) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x134));
  *(undefined4 *)(param_1 + 0x150) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x158));
  *(undefined4 *)(param_1 + 0x174) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x17c));
  *(undefined4 *)(param_1 + 0x198) = 0;
  FUN_00960220();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00483d24(undefined4 *param_1)

{
  *param_1 = wxTextAreaBase::vftable;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 1));
  param_1[8] = 0;
  FUN_00483c5b();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00483d5d(undefined4 *param_1)

{
  FUN_0044ced6();
  FUN_00422fd0();
  FUN_00483d24();
  FUN_009412f0();
  *param_1 = wxTextCtrlBase::vftable;
  param_1[0x65] = wxTextCtrlBase::vftable;
  param_1[0x74] = wxTextCtrlBase::vftable;
  param_1[0xe6] = wxTextCtrlBase::vftable;
  return param_1;
}



void FUN_00483dc8(void)

{
  FUN_00483de3();
  return;
}



void FUN_00483dd3(void)

{
  FUN_00483de3();
  return;
}



undefined4 thunk_FUN_009602e0(void)

{
  return 0xfffffffe;
}



undefined4 __thiscall FUN_00483de3(undefined4 param_1_00,byte param_1)

{
  FUN_00483f1e();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00483dff(void)

{
  FUN_00483de3();
  return;
}



undefined4 FUN_00483e0a(undefined4 param_1)

{
  FUN_009469f0(param_1);
  return param_1;
}



void FUN_00483e27(void)

{
  FUN_00483e0a();
  return;
}



undefined4 __thiscall FUN_00483e32(undefined4 param_1_00,byte param_1)

{
  FUN_00483eed();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00483e4e(int param_1)

{
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  *(undefined ***)(param_1 + 0xe8) = wxObject::vftable;
  FUN_0083e850();
  *(undefined ***)(param_1 + 0xd4) = wxObject::vftable;
  FUN_0083e850();
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  FUN_0086aa30();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00483eed(undefined4 *param_1)

{
  *param_1 = wxTextAreaBase::vftable;
  FUN_00483e4e();
  FUN_0040159c();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00483f1e(undefined4 *param_1)

{
  *param_1 = wxTextCtrlBase::vftable;
  param_1[0x65] = wxTextCtrlBase::vftable;
  param_1[0x74] = wxTextCtrlBase::vftable;
  param_1[0xe6] = wxTextCtrlBase::vftable;
  FUN_00941310();
  FUN_00483eed();
  FUN_00423160();
  FUN_0044cd6b();
  return;
}



undefined4 __thiscall FUN_00483f8c(int param_1_00,undefined4 param_1)

{
  FUN_00486927(param_1,*(undefined4 *)(param_1_00 + 300),0);
  return param_1;
}



void FUN_00483fab(void)

{
  FUN_00483fec();
  return;
}



void FUN_00483fb6(void)

{
  FUN_00483fec();
  return;
}



int __fastcall FUN_00483fc1(int param_1)

{
  return param_1 + 0x28;
}



int __thiscall thunk_FUN_009602a0(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 unaff_ESI;
  undefined4 unaff_retaddr;
  
  iVar1 = (**(code **)(*param_1_00 + 0x3c))(param_1,&param_1);
  if (iVar1 != -2) {
    (**(code **)(*param_1_00 + 0x30))(unaff_ESI,unaff_retaddr,param_1);
  }
  return iVar1;
}



undefined4 __thiscall FUN_00483fca(int param_1_00,int param_1)

{
  int iVar1;
  
  if ((-1 < param_1) &&
     (iVar1 = (**(code **)(*(int *)(param_1_00 + 0x1c8) + 0x5c))(), param_1 <= iVar1)) {
    return 1;
  }
  return 0;
}



undefined4 __thiscall FUN_00483fec(undefined4 param_1_00,byte param_1)

{
  FUN_00963240();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00484008(void)

{
  FUN_00483fec();
  return;
}



void __thiscall FUN_00484013(int param_1_00,undefined4 param_1)

{
  (**(code **)(*(int *)(param_1_00 + 0x1c8) + 0x84))(param_1,1);
  return;
}



void FUN_0048402a(void)

{
  FUN_00484013();
  return;
}



void FUN_00484035(void)

{
  FUN_009632e0();
  return;
}



void __thiscall FUN_00484040(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  (**(code **)(*param_1_00 + 0xa8))(param_1,param_2,1);
  return;
}



int __fastcall FUN_00484055(int param_1)

{
  return param_1 + -0x398;
}



void __thiscall FUN_0048405c(int param_1_00,char param_1)

{
  *(uint *)(param_1_00 + 0x14) = (param_1 != '\0') - 2;
  return;
}



undefined4 __fastcall FUN_0048406d(int param_1)

{
  return *(undefined4 *)(param_1 + -0x25c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00484074(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8)

{
  FUN_00483d5d();
  *param_1_00 = wxTextCtrl::vftable;
  param_1_00[0x65] = wxTextCtrl::vftable;
  param_1_00[0x74] = wxTextCtrl::vftable;
  param_1_00[0xe6] = wxTextCtrl::vftable;
  FUN_00961b30();
  FUN_00965f50(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
  return param_1_00;
}



undefined ** FUN_004840e2(void)

{
  return &PTR_u_WC096FFA8_03247328;
}



undefined ** FUN_004840e8(void)

{
  return &PTR_PTR_00f1f8d8;
}



undefined * FUN_004840ee(void)

{
  return &DAT_032ee864;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004840f4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00446386();
  *param_1 = WF22948E2::WC096FFA8::vftable;
  param_1[0x5e] = 0;
  param_1[0x5d] = wxFont::vftable;
  param_1[0x60] = 0;
  param_1[0x5f] = wxFont::vftable;
  param_1[0x62] = 0;
  param_1[99] = param_4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000014);
}



undefined4 __thiscall FUN_004842a8(undefined4 param_1_00,byte param_1)

{
  FUN_004842c5(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004842c5(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 4;
  puVar1 = auStack_24;
  auStack_24[0] = 0x4842e6;
  FUN_004636a8();
  local_8._0_1_ = 3;
  puVar2 = puVar1 + -1;
  puVar1[-1] = 0x4842f5;
  FUN_004636a8();
  local_8._0_1_ = 2;
  if (*(int *)(param_1 + 400) != 0) {
    *(undefined4 *)((int)puVar2 + -4) = 0x484308;
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  *(undefined4 *)((int)puVar2 + -4) = 0x484317;
  FUN_00921450();
  local_8 = (uint)local_8._1_3_ << 8;
  *(undefined4 *)((int)puVar2 + -4) = 0x484326;
  FUN_00921450();
  local_8 = 0xffffffff;
  *(undefined ***)(param_1 + 0x164) = wxControlContainerBase::vftable;
  *(undefined4 *)((int)puVar2 + -4) = 0x48433b;
  FUN_009150e0();
  *(undefined4 *)((int)puVar2 + -4) = 0x484340;
  return;
}



void FUN_004848d9(void)

{
  undefined4 *puVar1;
  int *piVar2;
  int unaff_EDI;
  int local_454;
  char *local_450;
  uint uStack_44c;
  undefined auStack_440 [4];
  undefined4 local_43c;
  int *local_438;
  int local_434;
  undefined local_40c [180];
  undefined local_358 [24];
  undefined4 local_340;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3b80f;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_440;
  uStack_44c = DAT_0323f878 ^ (uint)&stack0xfffffbb8;
  ExceptionList = &local_14;
  local_450 = (char *)0x0;
  local_340 = 7;
  local_454 = 0x484932;
  FUN_0040180b();
  local_c = 0;
  local_43c = 0;
  local_450 = (char *)0x48494c;
  puVar1 = (undefined4 *)FUN_007b27ff();
  local_450 = (char *)(unaff_EDI + 0x198);
  local_454 = unaff_EDI + 0x1d0;
  local_c._0_1_ = 1;
  FUN_007aec1b(local_358,&local_43c,*puVar1);
  local_c._0_1_ = 0;
  if (local_434 != 0) {
    local_450 = (char *)0x48498e;
    FUN_0040127a();
  }
  local_450 = "filedlg";
  local_454 = 0x48499c;
  FUN_0043c211();
  local_c._0_1_ = 2;
  local_450 = PTR_DAT_03236318;
  local_454 = 0x4849b6;
  FUN_004325b6();
  local_c._0_1_ = 3;
  local_450 = PTR_DAT_03236318;
  local_454 = 0x4849d0;
  FUN_004325b6();
  local_438 = &local_454;
  local_c._0_1_ = 4;
  local_454 = 0x1e62;
  local_450 = (char *)0x69;
  piVar2 = (int *)FUN_00465be3(local_40c);
  local_438 = &local_454;
  local_c = CONCAT31(local_c._1_3_,5);
  local_454 = *piVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(piVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00484d9e(void)

{
  FUN_00853f30();
  FUN_00484ee8();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00484dcf(int param_1)

{
  undefined4 uVar1;
  undefined local_50 [28];
  undefined4 local_34;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x484ddb;
  uVar1 = FUN_007b27ea();
  local_8 = 0;
  basic_string<>(uVar1);
  local_34 = 0;
  local_8 = CONCAT31(local_8._1_3_,1);
  (**(code **)(*(int *)(*(int *)(param_1 + 0x184) + 0x1d0) + 0x44))(local_50);
  FUN_0040159c();
  FUN_00401829(1,0);
  return;
}



undefined4 __thiscall FUN_00484e2f(undefined4 param_1,byte param_2)

{
  FUN_00484ee8();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_00484e61(int param_1)

{
  FUN_00853d00();
  FUN_00854700(param_1 + 0x238,1);
  return;
}



undefined4 __thiscall FUN_00484e83(int param_1_00,undefined4 param_1)

{
  FUN_004325a0(param_1_00 + 0x25c);
  return param_1;
}



void __fastcall FUN_00484ea1(int param_1)

{
  FUN_00853d00();
  FUN_00854700(param_1 + 0x25c,1);
  return;
}



undefined4 __thiscall FUN_00484ec3(int param_1_00,undefined4 param_1)

{
  FUN_004325a0(param_1_00 + 0x280);
  return param_1;
}



void __fastcall FUN_00484ee8(undefined4 *param_1)

{
  *param_1 = wxFileDialogBase::vftable;
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  FUN_00924620();
  return;
}



undefined4 __thiscall FUN_00484f30(int param_1_00,undefined4 param_1)

{
  FUN_004325a0(param_1_00 + 0x238);
  return param_1;
}



undefined4 * __fastcall FUN_00484f5b(undefined4 *param_1)

{
  FUN_0044c61a();
  *param_1 = wxButton::vftable;
  *(undefined *)(param_1 + 0x67) = 0;
  return param_1;
}



void __fastcall thunk_FUN_0093dd00(undefined4 *param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined **ppuVar4;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bd9e48;
  pvStack_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &pvStack_c;
  *param_1 = wxButton::vftable;
  uStack_4 = 0;
  puVar3 = (undefined4 *)FUN_0091cdc0(param_1,uVar2);
  if (puVar3 == (undefined4 *)0x0) goto LAB_0093dd92;
  ppuVar4 = (undefined **)(**(code **)*puVar3)();
  if (ppuVar4 != &PTR_u_wxTopLevelWindow_03239ae4) {
    if (ppuVar4[3] != (undefined *)0x0) {
      cVar1 = FUN_0048a047(&PTR_u_wxTopLevelWindow_03239ae4);
      if (cVar1 != '\0') goto LAB_0093dd83;
    }
    if (ppuVar4[4] == (undefined *)0x0) goto LAB_0093dd92;
    cVar1 = FUN_0048a047(&PTR_u_wxTopLevelWindow_03239ae4);
    if (cVar1 == '\0') goto LAB_0093dd92;
  }
LAB_0093dd83:
  if ((undefined4 *)puVar3[0x65] == param_1) {
    FUN_0093db60();
  }
LAB_0093dd92:
  uStack_4 = 0xffffffff;
  FUN_0093f590();
  ExceptionList = pvStack_c;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00484f81(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8)

{
  FUN_00484f5b();
  *param_1_00 = wxBitmapButton::vftable;
  FUN_00966090(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
  return param_1_00;
}



undefined ** FUN_00484fca(void)

{
  return &PTR_u_WBFBB8BEE_03247340;
}



undefined ** FUN_00484fd0(void)

{
  return &PTR_PTR_00f1f8bc;
}



undefined * FUN_00484fd6(void)

{
  return &DAT_032ee8a4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00484fdc(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00446386();
  *param_1 = WF22948E2::WBFBB8BEE::vftable;
  param_1[0x5e] = 0;
  param_1[0x5d] = wxFont::vftable;
  param_1[0x60] = 0;
  param_1[0x61] = 0;
  param_1[0x62] = param_4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000014);
}



undefined4 __thiscall FUN_0048518a(undefined4 param_1_00,byte param_1)

{
  FUN_004851a7(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004851a7(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 3;
  puVar1 = auStack_24;
  auStack_24[0] = 0x4851c8;
  FUN_004636a8();
  local_8._0_1_ = 2;
  puVar2 = puVar1 + -1;
  puVar1[-1] = 0x4851d7;
  FUN_004636a8();
  local_8._0_1_ = 1;
  if (*(int *)(param_1 + 0x18c) != 0) {
    *(undefined4 *)((int)puVar2 + -4) = 0x4851ea;
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  *(undefined4 *)((int)puVar2 + -4) = 0x4851f9;
  FUN_00921450();
  local_8 = 0xffffffff;
  *(undefined ***)(param_1 + 0x164) = wxControlContainerBase::vftable;
  *(undefined4 *)((int)puVar2 + -4) = 0x48520e;
  FUN_009150e0();
  *(undefined4 *)((int)puVar2 + -4) = 0x485213;
  return;
}



void FUN_00485974(void)

{
  undefined4 *puVar1;
  int *piVar2;
  int unaff_EBX;
  int local_614;
  char *local_610;
  uint uStack_60c;
  undefined4 local_600;
  undefined local_5fc [16];
  int *local_5ec;
  int local_5e8;
  undefined local_320 [24];
  undefined4 local_308;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3b6d7;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&local_600;
  uStack_60c = DAT_0323f878 ^ (uint)&stack0xfffff9f8;
  ExceptionList = &local_14;
  local_610 = (char *)0x0;
  local_308 = 7;
  local_614 = 0x4859cd;
  FUN_0040180b();
  local_c = 0;
  local_600 = 0;
  local_610 = (char *)0x4859e7;
  puVar1 = (undefined4 *)FUN_007b2841();
  local_610 = (char *)(unaff_EBX + 400);
  local_614 = unaff_EBX + 0x1c8;
  local_c._0_1_ = 1;
  FUN_007aec1b(local_320,&local_600,*puVar1);
  local_c._0_1_ = 0;
  if (local_5e8 != 0) {
    local_610 = (char *)0x485a2a;
    FUN_0040127a();
  }
  local_610 = "filedlg";
  local_614 = 0x485a3b;
  FUN_0043c211();
  local_c._0_1_ = 2;
  local_610 = PTR_DAT_03236318;
  local_614 = 0x485a52;
  FUN_004325b6();
  local_c._0_1_ = 3;
  local_610 = PTR_DAT_03236318;
  local_614 = 0x485a6c;
  FUN_004325b6();
  local_5ec = &local_614;
  local_c._0_1_ = 4;
  local_614 = 0x1e62;
  local_610 = (char *)0x69;
  piVar2 = (int *)FUN_00465be3(local_5fc);
  local_5ec = &local_614;
  local_c = CONCAT31(local_c._1_3_,5);
  local_614 = *piVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(piVar2 + 1);
}



void FUN_00485ebe(void)

{
  char *unaff_EDI;
  
  FUN_00485ee5();
  FUN_00417f97();
  if (*unaff_EDI != '\0') {
    FUN_00401829(1,0);
    *unaff_EDI = '\0';
  }
  return;
}



void FUN_00485ee5(void)

{
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



void FUN_00485f61(int param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  uint uVar4;
  undefined auStack_38 [20];
  uint local_24 [3];
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3085d;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xffffffa8);
  local_c = 0;
  iVar1 = (**(code **)(**(int **)(param_1 + 0x17c) + 0x368))(local_24);
  if (0 < iVar1) {
    iVar1 = *(int *)(param_1 + 0x188);
    uVar4 = 0;
    if (local_24[0] != 0) {
      do {
        puVar2 = (undefined4 *)FUN_0048671b((local_24[0] - uVar4) + -1);
        FUN_0096be80(*puVar2);
        FUN_0046e65a();
        iVar3 = FUN_00486124(auStack_38);
        FUN_00486589(*(undefined4 *)(iVar1 + 0x40),*(undefined4 *)(iVar3 + 4));
        FUN_004861ed(*(undefined4 *)(iVar1 + 0x40));
        *(int *)(iVar1 + 0x40) = *(int *)(iVar1 + 0x40) + -0x158;
        FUN_0046e65a();
        uVar4 = uVar4 + 1;
      } while (uVar4 < local_24[0]);
    }
  }
  puStack_10 = (undefined *)0xffffffff;
  FUN_0086aa30();
  ExceptionList = pvStack_18;
  return;
}



int FUN_00486090(uint param_1)

{
  int unaff_ESI;
  
  if ((uint)((*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc)) / 0x158) <= param_1) {
    FUN_00a3fb10();
  }
  return param_1 * 0x158 + *(int *)(unaff_ESI + 0xc);
}



void FUN_004860b9(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  undefined4 uVar2;
  undefined4 local_10;
  uint local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    local_c = 0;
  }
  else {
    local_c = (*(int *)(in_EAX + 0x14) - iVar1) / 0x158;
  }
  if ((uint)((*(int *)(in_EAX + 0x10) - iVar1) / 0x158) < local_c) {
    uVar2 = FUN_00486207(*(int *)(in_EAX + 0x10),1,param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar2;
  }
  else {
    FUN_0046e65a();
    FUN_0048616d(&local_10,param_1,local_10,local_c);
  }
  return;
}



void __thiscall FUN_00486124(int param_1_00,int **param_1)

{
  int *piVar1;
  int **in_EAX;
  int iVar2;
  int *piVar3;
  
  piVar3 = in_EAX[1];
  piVar1 = *in_EAX;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1;
  }
  piVar3 = piVar3 + param_1_00 * 0x56;
  if (piVar3 <= *(int **)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *piVar1;
    }
    if (*(int **)(iVar2 + 0xc) <= piVar3) goto LAB_0048615e;
  }
  FUN_00a3fb10();
LAB_0048615e:
  param_1[1] = piVar3;
  *param_1 = piVar1;
  return;
}



undefined4 FUN_0048616d(undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  int in_EAX;
  int local_c;
  
  if (((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc)) / 0x158 != 0) &&
     ((FUN_0046e65a(), param_3 == 0 || (param_3 != local_c)))) {
    FUN_00a3fb10();
  }
  FUN_0048623a(param_2,param_3,param_4);
  FUN_0046e65a();
  FUN_00486124(param_1);
  return param_1;
}



void FUN_004861ed(int param_1)

{
  int in_EAX;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 0x158) {
    FUN_00485ebe();
  }
  return;
}



int FUN_00486207(int param_1,int param_2,undefined4 param_3)

{
  FUN_0048663d(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x158 + param_1;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __thiscall FUN_0048623a(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined *puVar6;
  undefined *extraout_ECX;
  undefined *puVar7;
  int local_2d4;
  undefined auStack_2d0 [344];
  undefined auStack_178 [368];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2d0;
  local_8 = 0x486249;
  iVar3 = *(int *)(param_1_00 + 0xc);
  if (iVar3 == 0) {
    puVar7 = (undefined *)0x0;
  }
  else {
    puVar7 = (undefined *)((*(int *)(param_1_00 + 0x14) - iVar3) / 0x158);
  }
  puVar2 = (undefined *)((*(int *)(param_1_00 + 0x10) - iVar3) / 0x158);
  puVar6 = &DAT_00be82fa;
  if (puVar2 == &DAT_00be82fa) {
    puVar2 = (undefined *)FUN_004423c1();
    puVar6 = extraout_ECX;
  }
  puVar2 = puVar2 + 1;
  if (puVar7 < puVar2) {
    if (puVar6 + -((uint)puVar7 >> 1) < puVar7) {
      puVar7 = (undefined *)0x0;
    }
    else {
      puVar7 = puVar7 + ((uint)puVar7 >> 1);
    }
    if (puVar7 < puVar2) {
      puVar7 = puVar2;
    }
    iVar3 = FUN_0048653a();
    iVar4 = (param_3 - *(int *)(param_1_00 + 0xc)) / 0x158;
    local_8 = 0;
    FUN_00486207(iVar4 * 0x158 + iVar3,1,param_1);
    FUN_004865d2(param_3,iVar3);
    FUN_004865d2(*(undefined4 *)(param_1_00 + 0x10),(iVar4 + 1) * 0x158 + iVar3);
    if (*(int *)(param_1_00 + 0xc) != 0) {
      FUN_004861ed(*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
    }
    *(int *)(param_1_00 + 0x14) = (int)puVar7 * 0x158 + iVar3;
    *(int *)(param_1_00 + 0x10) =
         ((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x158 + 1) * 0x158 + iVar3;
    *(int *)(param_1_00 + 0xc) = iVar3;
  }
  else {
    if ((*(int *)(param_1_00 + 0x10) - param_3) / 0x158 == 0) {
      FUN_007b2885(auStack_178);
      local_8 = 2;
      FUN_004865d2(*(undefined4 *)(param_1_00 + 0x10),param_3 + 0x158);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_00486207(*(undefined4 *)(param_1_00 + 0x10),
                   1 - (*(int *)(param_1_00 + 0x10) - param_3) / 0x158,auStack_178);
      local_8 = 2;
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 0x158;
      iVar3 = *(int *)(param_1_00 + 0x10) + -0x158;
      local_2d4 = param_3;
      if (param_3 != iVar3) {
        do {
          FUN_007b28c0();
          local_2d4 = local_2d4 + 0x158;
        } while (local_2d4 != iVar3);
      }
    }
    else {
      FUN_007b2885(auStack_2d0);
      local_8 = 5;
      uVar1 = *(undefined4 *)(param_1_00 + 0x10);
      uVar5 = FUN_004865d2(uVar1,uVar1);
      *(undefined4 *)(param_1_00 + 0x10) = uVar5;
      FUN_004865f6(param_3,uVar1);
      local_2d4 = param_3;
      if (param_3 != param_3 + 0x158) {
        do {
          FUN_007b28c0();
          local_2d4 = local_2d4 + 0x158;
        } while (local_2d4 != param_3 + 0x158);
      }
    }
    FUN_00485ebe();
  }
  FUN_00a4220a();
  return;
}



void Catch_All_00486384(void)

{
  int unaff_EBP;
  
  if (1 < *(int *)(unaff_EBP + -0x2d0)) {
    FUN_004861ed(*(int *)(unaff_EBP + -0x2d8) * 0x158 + *(int *)(unaff_EBP + -0x2d4));
  }
  if (0 < *(int *)(unaff_EBP + -0x2d0)) {
    FUN_004861ed((*(int *)(unaff_EBP + -0x2d8) + 1) * 0x158 + *(int *)(unaff_EBP + -0x2d4));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x2d4));
}



void FUN_004863e6(void)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int unaff_EBX;
  int unaff_EBP;
  int unaff_ESI;
  
  __CxxThrowException_8();
  if ((*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_EBP + 0x10)) / unaff_EBX == 0) {
    FUN_007b2885();
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_004865d2();
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_00486207(*(undefined4 *)(unaff_ESI + 0x10));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + unaff_EBX;
    iVar1 = *(int *)(unaff_ESI + 0x10);
    iVar2 = *(int *)(unaff_EBP + 0x10);
    *(int *)(unaff_EBP + -0x2d0) = iVar2;
    while (iVar2 != iVar1 + -0x158) {
      FUN_007b28c0();
      *(int *)(unaff_EBP + -0x2d0) = *(int *)(unaff_EBP + -0x2d0) + unaff_EBX;
      iVar2 = *(int *)(unaff_EBP + -0x2d0);
    }
  }
  else {
    FUN_007b2885();
    *(undefined4 *)(unaff_EBP + -4) = 5;
    *(int *)(unaff_EBP + -0x2dc) = *(int *)(unaff_ESI + 0x10) + -0x158;
    uVar3 = FUN_004865d2();
    *(undefined4 *)(unaff_ESI + 0x10) = uVar3;
    FUN_004865f6();
    iVar2 = *(int *)(unaff_EBP + 0x10);
    iVar1 = iVar2 + 0x158;
    *(int *)(unaff_EBP + -0x2d0) = iVar2;
    while (iVar2 != iVar1) {
      FUN_007b28c0();
      *(int *)(unaff_EBP + -0x2d0) = *(int *)(unaff_EBP + -0x2d0) + unaff_EBX;
      iVar2 = *(int *)(unaff_EBP + -0x2d0);
    }
  }
  FUN_00485ebe();
  FUN_00a4220a();
  return;
}



void Catch_All_00486493(void)

{
  int unaff_EBP;
  
  FUN_004861ed(*(int *)(*(int *)(unaff_EBP + -0x2d8) + 0x10) + 0x158);
  FUN_004863e6(0);
  return;
}



void __fastcall FUN_0048653a(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 0x158) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 * 0x158);
  return;
}



int FUN_00486589(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = param_1 - in_EAX;
  if (in_EAX != param_1) {
    do {
      FUN_007b28c0();
      in_EAX = in_EAX + 0x158;
    } while (in_EAX != param_1);
  }
  return (iVar1 / 0x158) * 0x158 + param_2;
}



void FUN_004865d2(undefined4 param_1,undefined4 param_2)

{
  FUN_004866bf(param_1,param_2,param_2,0);
  return;
}



int FUN_004865f6(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = in_EAX - param_1;
  if (param_1 != in_EAX) {
    do {
      in_EAX = in_EAX + -0x158;
      FUN_007b28c0();
    } while (in_EAX != param_1);
  }
  return param_2 + (iVar1 / 0x158) * -0x158;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0048663d(int param_1,int param_2)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    FUN_00486694(param_1);
    param_1 = param_1 + 0x158;
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_00486670(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 8); iVar1 = iVar1 + 0x158)
  {
    FUN_00485ebe();
  }
  __CxxThrowException_8(0,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00486694(int param_1)

{
  if (param_1 != 0) {
    FUN_007b2885(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_004866bf(int param_1_00,int param_1,int param_2)

{
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0x158) {
    FUN_00486694(param_2);
    param_2 = param_2 + 0x158;
  }
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 Catch_All_004866f0(void)

{
  int unaff_EBP;
  int iVar1;
  
  iVar1 = *(int *)(unaff_EBP + -0x14);
  if (iVar1 != *(int *)(unaff_EBP + 0xc)) {
    do {
      FUN_00485ebe();
      iVar1 = iVar1 + 0x158;
    } while (iVar1 != *(int *)(unaff_EBP + 0xc));
  }
  __CxxThrowException_8(0,0);
  return *(undefined4 *)(unaff_EBP + 0xc);
}



int __thiscall FUN_0048671b(int param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= param_1)) {
    FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                 "uiIndex < m_nCount",0);
  }
  return *(int *)(param_1_00 + 8) + param_1 * 4;
}



int __thiscall thunk_FUN_0048671b(int param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= param_1)) {
    FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                 "uiIndex < m_nCount",0);
  }
  return *(int *)(param_1_00 + 8) + param_1 * 4;
}



int __thiscall thunk_FUN_004325d6(int param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= param_1)) {
    FUN_00840480("D:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                 "nIndex < m_nCount",L"wxArrayString: index out of bounds");
  }
  return param_1 * 0x24 + *(int *)(param_1_00 + 8);
}



void __thiscall FUN_00486764(int *param_1_00,undefined4 param_1)

{
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_10 = 1;
  local_c = 1;
  local_8 = param_1;
  (**(code **)(*param_1_00 + 0x28))(&local_10,0,0);
  return;
}



undefined4 __thiscall FUN_0048678a(undefined4 param_1_00,byte param_1)

{
  FUN_0096ba90();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_004867a6(undefined4 *param_1)

{
  FUN_0044ced6();
  param_1[0x66] = 0;
  param_1[0x65] = wxItemContainer::vftable;
  param_1[0x65] = wxWindowWithItems<class_wxControl,class_wxItemContainer>::vftable;
  *param_1 = wxWindowWithItems<class_wxControl,class_wxItemContainer>::vftable;
  return param_1;
}



undefined4 * __fastcall FUN_004867ce(undefined4 *param_1)

{
  FUN_004867a6();
  *param_1 = wxControlWithItemsBase::vftable;
  param_1[0x65] = wxControlWithItemsBase::vftable;
  return param_1;
}



undefined4 __thiscall FUN_004867ea(undefined4 param_1_00,byte param_1)

{
  FUN_0048682d();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00486806(void)

{
  FUN_004867ea();
  return;
}



undefined4 * __fastcall FUN_00486811(undefined4 *param_1)

{
  FUN_004867ce();
  *param_1 = wxControlWithItems::vftable;
  param_1[0x65] = wxControlWithItems::vftable;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0048682d(void)

{
  FUN_0096ba90();
  FUN_0044cd6b();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void thunk_FUN_0048682d(void)

{
  FUN_0096ba90();
  FUN_0044cd6b();
  return;
}



undefined4 __thiscall FUN_00486863(undefined4 param_1_00,byte param_1)

{
  FUN_0096c070();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0048687f(void)

{
  FUN_00486863();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

uint __thiscall FUN_0048688a(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  undefined local_38 [36];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x486896;
  local_14 = (**(code **)(*param_1_00 + 4))();
  uVar2 = 0;
  if (local_14 != 0) {
    do {
      (**(code **)(*param_1_00 + 8))(local_38,uVar2);
      local_8 = 0;
      cVar1 = FUN_00432636(param_1,param_2);
      local_8 = 0xffffffff;
      FUN_0040159c();
      if (cVar1 != '\0') {
        return uVar2;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < local_14);
  }
  return 0xffffffff;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_004868ea(undefined4 *param_1)

{
  FUN_00486811();
  *param_1 = wxListBoxBase::vftable;
  param_1[0x65] = wxListBoxBase::vftable;
  FUN_0086a600();
  return param_1;
}



undefined4 FUN_00486927(undefined4 param_1,undefined4 param_2)

{
  FUN_00937490(param_1,param_2,0);
  return param_1;
}



undefined4 __thiscall FUN_0048695f(undefined4 param_1_00,byte param_1)

{
  FUN_0096a1f0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0048697b(void)

{
  FUN_0048695f();
  return;
}



uint __fastcall FUN_00486986(int param_1)

{
  return *(uint *)(param_1 + -0xb4) >> 4 & 1;
}



void __thiscall
FUN_00486993(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *param_1_00;
  uVar2 = (**(code **)(iVar1 + 4))(param_2,param_3);
  (**(code **)(iVar1 + 0x2c))(param_1,uVar2);
  return;
}



void __thiscall FUN_004869b3(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 4) = param_1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_004869bd(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8,undefined4 param_9)

{
  FUN_004868ea();
  *param_1_00 = wxListBox::vftable;
  param_1_00[0x65] = wxListBox::vftable;
  FUN_0086a600();
  FUN_0096a090();
  FUN_0096b150(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9);
  return param_1_00;
}



undefined ** FUN_00486a29(void)

{
  return &PTR_u_WDAE82894_03247358;
}



undefined ** FUN_00486a2f(void)

{
  return &PTR_PTR_00f1f8a0;
}



undefined * FUN_00486a35(void)

{
  return &DAT_032ee8f8;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00486a3b(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00446386();
  *param_1 = WF22948E2::WDAE82894::vftable;
  param_1[0x5e] = 0;
  param_1[0x5d] = wxFont::vftable;
  param_1[0x60] = param_3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000010);
}



undefined4 FUN_004870ef(undefined4 param_1)

{
  FUN_00487104(0);
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall
FUN_00487104(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1)

{
  int iVar1;
  code *pcVar2;
  char cVar3;
  int iVar4;
  undefined4 uVar5;
  int *unaff_EDI;
  undefined local_d0 [132];
  undefined4 local_4c;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_48;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xdc;
  local_8 = 0x487113;
  local_4c = 0;
  local_48 = param_1;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  local_8 = 0;
  local_4c = 1;
  FUN_00449269(local_d0);
  local_8 = 1;
  iVar1 = *unaff_EDI;
  iVar4 = iVar1;
  if (iVar1 < 0) {
    iVar4 = -iVar1;
  }
  iVar4 = FUN_00487215(iVar4);
  if (iVar1 < 0) {
    *(undefined2 *)(iVar4 + -2) = 0x2d;
  }
  cVar3 = FUN_004871cb(local_48);
  if (cVar3 != '\0') {
    local_8 = local_8 & 0xffffff00;
    FUN_0044922e();
    FUN_00a421fb();
    return;
  }
  uVar5 = FUN_0042a230(&PTR_vftable_03256be4,
                       &std::
                        basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                        ::RTTI_Type_Descriptor);
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00427b80(uVar5);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



void FUN_004871c3(void)

{
  FUN_0044922e();
  return;
}



undefined4
FUN_004871cb(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 *in_EAX;
  undefined4 *puVar4;
  undefined local_20 [8];
  undefined local_18 [12];
  undefined4 local_c;
  
  uVar1 = in_EAX[1];
  uVar2 = *in_EAX;
  puVar4 = (undefined4 *)FUN_00412721(local_18);
  uVar3 = *puVar4;
  local_c = puVar4[1];
  puVar4 = (undefined4 *)
           std::
           basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
           begin(param_1,local_20);
  FUN_00487323(*puVar4,puVar4[1],uVar3,local_c,uVar2,uVar1);
  return 1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_00487215(short *param_1_00,uint param_1)

{
  char cVar1;
  short sVar2;
  int *piVar3;
  char *pcVar4;
  uint uVar5;
  char cVar6;
  uint local_3c;
  uint local_38;
  locale local_34 [4];
  undefined local_30 [20];
  uint local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  local_8 = 0x487221;
  local_38 = param_1;
  std::locale::locale(local_34);
  local_8 = 0;
  FUN_00823b7b();
  cVar1 = FUN_004299c0();
  if (cVar1 == '\0') {
    piVar3 = (int *)FUN_004173bd(local_34);
    grouping(local_30);
    local_8 = CONCAT31(local_8._1_3_,1);
    if (local_1c != 0) {
      pcVar4 = (char *)FUN_004221b0(0);
      if ('\0' < *pcVar4) {
        sVar2 = (**(code **)(*piVar3 + 8))();
        local_3c = 0;
        pcVar4 = (char *)FUN_004221b0(0);
        cVar1 = *pcVar4;
        cVar6 = cVar1;
        do {
          if (cVar6 == '\0') {
            local_3c = local_3c + 1;
            if (local_3c < local_1c) {
              pcVar4 = (char *)FUN_004221b0(local_3c);
              cVar1 = *pcVar4;
              if (cVar1 < '\x01') {
                cVar1 = '\x7f';
              }
            }
            param_1_00 = param_1_00 + -1;
            *param_1_00 = sVar2;
            cVar6 = cVar1;
          }
          uVar5 = local_38 / 10;
          cVar6 = cVar6 + -1;
          param_1_00 = param_1_00 + -1;
          *param_1_00 = (short)(local_38 % 10) + 0x30;
          local_38 = uVar5;
        } while (uVar5 != 0);
        FUN_004017b2(1,0);
        goto LAB_00487313;
      }
    }
    FUN_004017b2(1,0);
  }
  do {
    uVar5 = local_38 / 10;
    param_1_00 = param_1_00 + -1;
    *param_1_00 = (short)(local_38 % 10) + 0x30;
    local_38 = uVar5;
  } while (uVar5 != 0);
LAB_00487313:
  std::locale::~locale(local_34);
  FUN_00a421fb();
  return;
}



void __thiscall
FUN_00487323(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  FUN_0048734c(param_1,param_2,param_3,param_4,param_5,param_6,param_1_00);
  return;
}



void FUN_0048734c(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  undefined auStack_3c [4];
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c27b7b;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_3c;
  ExceptionList = &local_14;
  FUN_004873dd(param_5,param_6);
  local_c = 0;
  FUN_00476c8d(param_1,param_2,param_3,param_4,local_38);
  FUN_00401829(1,0);
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_004873dd(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  FUN_0040180b(0);
  FUN_00487408(param_1,param_2,param_2);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_00487408(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,undefined2 *param_1,undefined2 *param_2)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
            (param_1_00,(int)param_2 - (int)param_1 >> 1);
  for (; param_1 != param_2; param_1 = param_1 + 1) {
    FID_conflict_append(1,*param_1);
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_00487442(void)

{
  FUN_00401829(1,0);
  __CxxThrowException_8(0,0);
  return;
}



undefined ** FUN_0048745e(void)

{
  return &PTR_u_W58EDC5E7_03247370;
}



undefined ** FUN_00487464(void)

{
  return &PTR_PTR_00f1f884;
}



undefined * FUN_0048746a(void)

{
  return &DAT_032ee938;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00487470(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00446386();
  *param_1 = WF22948E2::W58EDC5E7::vftable;
  param_1[0x5e] = 0;
  param_1[0x5d] = wxFont::vftable;
  param_1[0x60] = param_3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000010);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_004875b2(int param_1_00,byte param_1)

{
  FUN_004636a8();
  if (*(int *)(param_1_00 + 0x184) != 0) {
    FUN_0040127a();
  }
  FUN_00921450();
  *(undefined ***)(param_1_00 + 0x164) = wxControlContainerBase::vftable;
  FUN_009150e0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00487bb8(int param_1,int param_2)

{
  (**(code **)(*(int *)(*(int *)(param_1 + 0x17c) + 0x194) + 0x18))();
  FUN_007b2dba();
  *(undefined *)(param_2 + 0x24) = 1;
  return;
}



undefined4 __thiscall FUN_00487bf0(undefined4 param_1_00,byte param_1)

{
  FUN_0096dd30();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00487c0c(void)

{
  FUN_00487bf0();
  return;
}



undefined4 * __fastcall FUN_00487c17(undefined4 *param_1)

{
  FUN_00486811();
  *param_1 = wxChoiceBase::vftable;
  param_1[0x65] = wxChoiceBase::vftable;
  return param_1;
}



undefined4 __thiscall FUN_00487c33(int param_1_00,undefined4 param_1)

{
  FUN_0096d140(param_1,*(undefined4 *)(param_1_00 + 300),0);
  return param_1;
}



undefined4 __thiscall FUN_00487c52(undefined4 param_1_00,byte param_1)

{
  FUN_0096c850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00487c6e(void)

{
  FUN_00487c52();
  return;
}



uint __fastcall FUN_00487c79(int param_1)

{
  return *(uint *)(param_1 + -0xb4) >> 3 & 1;
}



undefined ** FUN_00487c86(void)

{
  return &PTR_u_W05521310_03247388;
}



undefined ** FUN_00487c8c(void)

{
  return &PTR_PTR_00f1f858;
}



undefined * FUN_00487c92(void)

{
  return &DAT_032ee978;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00487c98(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00446386();
  *param_1 = WF22948E2::W05521310::vftable;
  param_1[0x5e] = 0;
  param_1[0x5d] = wxFont::vftable;
  param_1[0x60] = param_3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000010);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_00488427(int param_1_00,char param_1)

{
  undefined4 uVar1;
  undefined local_60 [36];
  undefined local_3c [28];
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x88;
  local_8 = 0x488436;
  if (param_1 == '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_8 = 3;
    (**(code **)(*(int *)(*(int *)(param_1_00 + 0x17c) + 0x398) + 8))(local_60);
    FUN_0040159c();
  }
  else {
    uVar1 = basic_string<>(&DAT_00f1f860,7);
    local_8 = 0;
    local_18 = 0xb72dfc66;
    local_14 = 0x57e835bf;
    uVar1 = FUN_00b94470(&local_18,uVar1);
    local_8._0_1_ = 1;
    basic_string<>(uVar1);
    local_20 = 0;
    local_8 = CONCAT31(local_8._1_3_,2);
    (**(code **)(*(int *)(*(int *)(param_1_00 + 0x17c) + 0x398) + 8))(local_3c);
    FUN_0040159c();
    FUN_00401829(1,0);
    FUN_00401829(1,0);
  }
  return;
}



undefined4
FUN_00488619(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined4 *puVar1;
  uint uVar2;
  uint uVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar4;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_ESI;
  undefined local_10 [12];
  
  puVar1 = (undefined4 *)FUN_0042a0d0(local_10);
  uVar2 = FUN_0042a0a0(param_2,param_3,*puVar1,puVar1[1]);
  uVar3 = FUN_0042a0a0(param_4,param_5,param_2,param_3);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
            (unaff_ESI,uVar2,uVar3);
  if (*(uint *)(unaff_ESI + 0x18) < 0x10) {
    pbVar4 = unaff_ESI + 4;
  }
  else {
    pbVar4 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
              (unaff_ESI + 4);
  }
  FUN_0042a110(pbVar4 + uVar2,unaff_ESI);
  return param_1;
}



void FUN_0048867c(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined local_20 [8];
  undefined local_18 [8];
  undefined local_10 [12];
  
  puVar3 = (undefined4 *)FUN_0042a130(local_20);
  uVar1 = *puVar3;
  uVar2 = puVar3[1];
  puVar3 = (undefined4 *)FUN_0042a0d0(local_18);
  FUN_00488619(local_10,*puVar3,puVar3[1],uVar1,uVar2);
  return;
}



undefined ** FUN_004886c2(void)

{
  return &PTR_u_W44B8F768_032473a0;
}



undefined ** FUN_004886c8(void)

{
  return &PTR_PTR_00f1f828;
}



undefined * FUN_004886ce(void)

{
  return &DAT_032ee9a4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004886d4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00446386();
  *param_1 = WF22948E2::W44B8F768::vftable;
  param_1[0x5e] = 0;
  param_1[0x5d] = wxFont::vftable;
  param_1[0x60] = 0;
  param_1[0x61] = 0;
  param_1[0x62] = param_4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000014);
}



void FUN_00488ff0(void)

{
  undefined4 *puVar1;
  undefined4 local_364;
  char *local_360;
  uint uStack_35c;
  undefined4 *local_350;
  undefined local_34c [816];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c306b6;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&local_350;
  uStack_35c = DAT_0323f878 ^ (uint)&stack0xfffffca8;
  ExceptionList = &local_14;
  local_360 = "wxDirCtrl";
  local_364 = 0x489040;
  FUN_0043c211();
  local_c = 0;
  local_360 = PTR_DAT_03236318;
  local_364 = 0x489058;
  FUN_004325b6();
  local_350 = &local_364;
  local_c._0_1_ = 1;
  local_364 = 0x1e62;
  local_360 = (char *)0x7c;
  puVar1 = (undefined4 *)FUN_00465be3(local_34c);
  local_350 = &local_364;
  local_c = CONCAT31(local_c._1_3_,2);
  local_364 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void __fastcall thunk_FUN_00489371(undefined4 *param_1)

{
  *param_1 = wxDirDialogBase::vftable;
  FUN_0040159c();
  FUN_0040159c();
  FUN_00924620();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_0048929b(int param_1)

{
  undefined4 uVar1;
  undefined local_70 [28];
  undefined local_54 [28];
  undefined4 local_38;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x60;
  local_8 = 0x4892a7;
  FUN_007b3609(*(undefined4 *)(param_1 + 0x188));
  local_8 = 0;
  uVar1 = FUN_00489315(local_70);
  local_8._0_1_ = 1;
  basic_string<>(uVar1);
  local_38 = 0;
  local_8 = CONCAT31(local_8._1_3_,2);
  (**(code **)(*(int *)(*(int *)(param_1 + 0x17c) + 0x1d0) + 0x44))(local_54);
  FUN_0040159c();
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00a421fb();
  return;
}



undefined4 FUN_00489315(undefined4 param_1)

{
  FUN_00825760(param_1);
  return param_1;
}



undefined4 __thiscall FUN_0048932c(undefined4 param_1,byte param_2)

{
  FUN_00489371();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_00489353(int param_1_00,undefined4 param_1)

{
  FUN_004325a0(param_1_00 + 0x1f0);
  return param_1;
}



void __fastcall FUN_00489371(undefined4 *param_1)

{
  *param_1 = wxDirDialogBase::vftable;
  FUN_0040159c();
  FUN_0040159c();
  FUN_00924620();
  return;
}



undefined4 __thiscall FUN_00489398(int param_1_00,undefined4 param_1)

{
  FUN_004325a0(param_1_00 + 0x214);
  return param_1;
}



undefined ** FUN_004893b6(void)

{
  return &PTR_u_W41FD0D12_032473b8;
}



undefined ** FUN_004893bc(void)

{
  return &PTR_PTR_00f1f7b4;
}



undefined * FUN_004893c2(void)

{
  return &DAT_032ee9f8;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004893c8(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00446386();
  *param_1 = WF22948E2::W41FD0D12::vftable;
  param_1[0x5e] = 0;
  param_1[0x5d] = wxFont::vftable;
  param_1[0x60] = param_3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000010);
}



undefined4 __thiscall FUN_004898e5(undefined4 param_1_00,byte param_1)

{
  FUN_00489902(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00489902(int param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 3;
  auStack_24[0] = 0x489923;
  FUN_00489fc5();
  local_8._0_1_ = 2;
  puVar1 = auStack_24;
  auStack_24[0] = 0x489932;
  FUN_004636a8();
  local_8._0_1_ = 1;
  if (*(int *)(param_1 + 0x184) != 0) {
    puVar1[-1] = 0x489945;
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  puVar1[-1] = 0x489954;
  FUN_00921450();
  local_8 = 0xffffffff;
  *(undefined ***)(param_1 + 0x164) = wxControlContainerBase::vftable;
  puVar1[-1] = 0x489969;
  FUN_009150e0();
  puVar1[-1] = 0x48996e;
  return;
}



undefined4 __thiscall FUN_00489f79(undefined4 param_1_00,byte param_1)

{
  FUN_00489fc5();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00489f95(undefined4 param_1)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x6c);
  if (pvVar1 != (void *)0x0) {
    FUN_0096e8c0(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00489fc5(undefined4 *param_1)

{
  *param_1 = wxTextValidator::vftable;
  FUN_00853f30();
  FUN_00853f30();
  FUN_00940c80();
  return;
}



undefined4 * __thiscall FUN_0048a008(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = TreeMultiItemRoot::vftable;
  FUN_00ba4c9c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_0048a02a(int param_1_00,int param_1,undefined4 param_2,undefined4 *param_3)

{
  FUN_0086a0a0(*param_3,param_1 - *(int *)(param_1_00 + 8) >> 2,param_2);
  return;
}



undefined4 __thiscall FUN_0048a047(int param_1_00,int param_1)

{
  char cVar1;
  
  if ((param_1 != 0) &&
     (((param_1 == param_1_00 ||
       ((*(int *)(param_1_00 + 0xc) != 0 && (cVar1 = FUN_0048a047(param_1), cVar1 != '\0')))) ||
      ((*(int *)(param_1_00 + 0x10) != 0 && (cVar1 = FUN_0048a047(param_1), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 * FUN_0048a085(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (param_1 != (undefined4 *)0x0) {
    (**(code **)*param_1)(param_2);
    cVar1 = FUN_0048a047(param_2);
    if (cVar1 != '\0') {
      return param_1;
    }
  }
  return (undefined4 *)0x0;
}



int __fastcall FUN_0048a0ab(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if (iVar1 == 0) {
    return iVar1;
  }
  return *(int *)(iVar1 + 8);
}



void __fastcall thunk_FUN_00454a4e(undefined4 *param_1)

{
  FUN_0040159c();
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



void __thiscall FUN_0048a0bc(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  (**(code **)(*param_1_00 + 0x288))(0xffffffff,0xffffffff,param_1,param_2,0);
  return;
}



void __thiscall FUN_0048a0d5(int *param_1_00,int **param_1,int **param_2)

{
  int *local_c;
  int *local_8;
  
  local_c = param_1_00;
  local_8 = param_1_00;
  (**(code **)(*param_1_00 + 0xb8))(&local_c);
  if (param_1 != (int **)0x0) {
    *param_1 = local_c;
  }
  if (param_2 != (int **)0x0) {
    *param_2 = local_8;
  }
  return;
}



void __thiscall
FUN_0048a172(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,uint param_5,undefined4 param_6)

{
  *(int *)(param_1_00 + 0x194) = param_1_00;
  FUN_0044634a(DAT_032bff1c,&LAB_0048a20e,0,0,0);
  if ((param_5 & 0xc0000000) == 0) {
    param_5 = param_5 | 0xc0000000;
  }
  FUN_0092fcc0(param_1,param_2,param_3,param_4,param_5,param_6);
  return;
}



void __thiscall FUN_0048a1c3(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxPaintEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0048a224(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x10);
  if (pvVar1 != (void *)0x0) {
    FUN_0048a258(param_2,param_3,0);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_0048a258(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  param_1_00[1] = param_3;
  param_1_00[2] = param_1;
  *param_1_00 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxPaintEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
                ::vftable;
  param_1_00[3] = param_2;
  return;
}



undefined4 __thiscall FUN_0048a286(undefined4 param_1_00,byte param_1)

{
  FUN_00b9a76b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0048a2a2(undefined4 param_1_00,byte param_1)

{
  FUN_00ba4c9c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_0048a2be(int param_1_00,int param_1)

{
  FUN_004325a0(param_1);
  *(undefined4 *)(param_1_00 + 0x24) = *(undefined4 *)(param_1 + 0x24);
  *(undefined4 *)(param_1_00 + 0x28) = *(undefined4 *)(param_1 + 0x28);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0048a2df(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FUN_00845a60(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0x28;
  }
  FUN_0048a2be(iVar1);
  *param_1_00 = wxCommandEvent::vftable;
  param_1_00[0x15] = *(undefined4 *)(param_1 + 0x54);
  param_1_00[0x16] = *(undefined4 *)(param_1 + 0x58);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0048a32a(undefined4 param_1)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x5c);
  if (pvVar1 != (void *)0x0) {
    FUN_0048a2df(param_1);
  }
  return;
}



undefined4 * __thiscall FUN_0048a35a(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_0092bd60(param_1,param_2);
  *param_1_00 = wxNotifyEvent::vftable;
  *(undefined *)(param_1_00 + 0x17) = 1;
  return param_1_00;
}



undefined4 * __thiscall FUN_0048a37a(undefined4 *param_1_00,int param_1)

{
  FUN_0048a2df(param_1);
  *param_1_00 = wxNotifyEvent::vftable;
  *(undefined *)(param_1_00 + 0x17) = *(undefined *)(param_1 + 0x5c);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0048a39b(undefined4 param_1)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x60);
  if (pvVar1 != (void *)0x0) {
    FUN_0048a37a(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_0048a3cb(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  puVar1 = (undefined4 *)operator_new(0x68);
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a37a(param_1);
    *puVar1 = wxTreeMultiEvent::vftable;
    puVar1[0x18] = *(undefined4 *)(param_1 + 0x60);
    puVar1[0x19] = *(undefined4 *)(param_1 + 100);
    puVar2 = puVar1;
  }
  return puVar2;
}



undefined4 __thiscall FUN_0048a411(undefined4 param_1,byte param_2)

{
  FUN_00454a4e();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_0048a42d(undefined4 param_1_00,byte param_1)

{
  FUN_00ba0d64();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0048a4e7(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  
  *param_1 = WB09F3247::W144266B3::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 3);
  }
  param_1[3] = piVar1;
  iVar2 = FUN_00697fb3();
  piVar1 = param_1 + 9;
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x19) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[10] = 0;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 0xb);
  }
  param_1[0xb] = piVar1;
  iVar2 = FUN_00697fb3();
  piVar1 = param_1 + 0x11;
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x19) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[0x12] = 0;
  FUN_007c1e0d(param_1 + 0x13);
  FUN_00462fdd(param_1 + 0x1b);
  return param_1;
}



undefined4 __thiscall FUN_0048a5ad(undefined4 param_1,byte param_2)

{
  FUN_0048a5ce();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_0048ae42(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x48ae5a;
  FUN_0048af74();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0048ae61;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_0048a5ce(undefined4 *param_1)

{
  char local_1c;
  
  *param_1 = WB09F3247::W144266B3::vftable;
  FUN_0043d406(param_1 + 1);
  FUN_004f9b2c();
  FUN_004f9b2c();
  FUN_0049c7f3();
  if (local_1c != '\0') {
    FUN_00401477();
  }
  FUN_0048a640();
  return;
}



undefined * Catch_All_0048a630(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 4;
  return &DAT_0048a63d;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0048a640(void)

{
  int unaff_EBP;
  int unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 3;
  FUN_004620e4(unaff_ESI + 0x6c);
  *(undefined *)(unaff_EBP + -4) = 2;
  FUN_0049c7cb(unaff_ESI + 0x4c);
  *(undefined *)(unaff_EBP + -4) = 1;
  FUN_0048ae42(unaff_ESI + 0x2c);
  *(undefined *)(unaff_EBP + -4) = 0;
  FUN_0048ae42(unaff_ESI + 0xc);
  FUN_00417fe6();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0048a682(int param_1)

{
  char cVar1;
  int iVar2;
  undefined local_3c [4];
  char local_38;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  local_8 = 0x48a68e;
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0049a803(local_3c,local_1c,local_18,local_24,local_20);
  FUN_0043d406(param_1 + 4);
  local_8 = 0;
  local_20 = **(undefined4 **)(param_1 + 0x44);
  local_24 = *(undefined4 *)(param_1 + 0x2c);
  local_28 = *(undefined4 *)(param_1 + 0x44);
  local_2c = *(undefined4 *)(param_1 + 0x2c);
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    iVar2 = FUN_006badde();
    local_1c = *(undefined4 *)(iVar2 + 4);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar2 + 8);
  }
  local_8 = 0xffffffff;
  if (local_38 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined __thiscall FUN_0048a8a5(int param_1_00,undefined4 param_1)

{
  int iVar1;
  char local_24;
  int local_20;
  int local_1c;
  undefined local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x48a8b1;
  FUN_0043d406(param_1_00 + 4);
  local_8 = 0;
  FUN_004630fe(&local_20,&param_1);
  iVar1 = *(int *)(param_1_00 + 100);
  if ((local_20 == 0) || (local_20 != *(int *)(param_1_00 + 0x4c))) {
    FUN_00a3fb10();
  }
  local_15 = local_1c != iVar1;
  if ((bool)local_15) {
    FUN_0047803c(param_1_00 + 0xc,&param_1);
    FUN_0074ca40();
    FUN_0047803c(param_1_00 + 0x2c,&param_1);
    FUN_0074ca40();
    FUN_0048ae6a(param_1_00 + 0xc,&param_1);
    FUN_0048ae6a(param_1_00 + 0x2c,&param_1);
    FUN_0049cccf((int *)(param_1_00 + 0x4c),&local_20,local_20,local_1c);
    FUN_00463099(param_1);
  }
  else {
    FUN_00b940e0(0x2bb1856f);
  }
  local_8 = 0xffffffff;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return local_15;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0048a97a(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  int unaff_EBX;
  char local_20;
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x48a986;
  FUN_0043d406(unaff_EBX + 4);
  local_8 = 0;
  iVar1 = **(int **)(unaff_EBX + 100);
  iVar2 = *(int *)(unaff_EBX + 0x4c);
  while( true ) {
    iVar3 = *(int *)(unaff_EBX + 100);
    if ((iVar2 == 0) || (iVar2 != *(int *)(unaff_EBX + 0x4c))) {
      FUN_00a3fb10();
    }
    if (iVar1 == iVar3) break;
    puVar4 = (undefined4 *)FUN_006badde();
    local_14[0] = *puVar4;
    FUN_0047803c(unaff_EBX + 0xc,local_14);
    FUN_0074ca40();
    FUN_0047803c(unaff_EBX + 0x2c,local_14);
    FUN_0074ca40();
    FUN_0048ae6a(unaff_EBX + 0xc,local_14);
    FUN_0048ae6a(unaff_EBX + 0x2c,local_14);
    FUN_00463099(local_14[0]);
    FUN_00794e17();
  }
  FUN_0049c7f3();
  local_8 = 0xffffffff;
  if (local_20 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0048aa3a(int param_1_00,undefined4 *param_1,uint param_2)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  char local_20;
  undefined4 local_1c;
  int local_18;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x48aa46;
  local_18 = 0;
  FUN_0043d406(param_1_00 + 4);
  puVar1 = (undefined4 *)(param_1_00 + 0x2c);
  local_8 = 1;
  FUN_00697f81(&param_2);
  local_28 = *(undefined4 *)(param_1_00 + 0x44);
  local_2c = *puVar1;
  puVar3 = &local_1c;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (param_2 < *(uint *)(local_18 + 0xc))) {
    local_30 = *(undefined4 *)(param_1_00 + 0x44);
    local_34 = *puVar1;
    puVar3 = &local_34;
  }
  local_2c = *puVar3;
  local_28 = puVar3[1];
  local_30 = *(undefined4 *)(param_1_00 + 0x44);
  local_34 = *puVar1;
  cVar2 = FUN_006b8eca();
  if (cVar2 != '\0') {
    *param_1 = 0;
    param_1[1] = 0;
    local_8 = local_8 & 0xffffff00;
    local_18 = 1;
    if (local_20 != '\0') {
      FUN_00401477();
    }
    return param_1;
  }
  iVar4 = FUN_006badde();
  *param_1 = *(undefined4 *)(iVar4 + 4);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar4 + 8);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __fastcall FUN_0048abce(int param_1)

{
  char cVar1;
  int iVar2;
  char local_24;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x48abda;
  FUN_0043d406(param_1 + 4);
  local_8 = 0;
  FUN_00478125(local_20,&stack0x00000004);
  local_14 = *(undefined4 *)(param_1 + 0x24);
  local_18 = *(undefined4 *)(param_1 + 0xc);
  cVar1 = FUN_006b8eca();
  cVar1 = '\x01' - (cVar1 != '\0');
  if (cVar1 == '\0') {
    FUN_00b940e0(0x502f095f);
  }
  else {
    iVar2 = FUN_006badde();
    (**(code **)(**(int **)(iVar2 + 4) + 0x20))();
  }
  local_8 = 0xffffffff;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0048ac5a(void)

{
  char cVar1;
  int iVar2;
  int unaff_EBX;
  char local_30;
  
  FUN_0043d406(unaff_EBX + 4);
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    iVar2 = FUN_006badde();
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar2 + 8);
  }
  if (local_30 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0048acf8(void)

{
  char cVar1;
  int iVar2;
  int unaff_EBX;
  char local_30;
  
  FUN_0043d406(unaff_EBX + 4);
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    iVar2 = FUN_006badde();
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar2 + 8);
  }
  if (local_30 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0048ad96(void)

{
  char cVar1;
  int iVar2;
  int unaff_EBX;
  char local_30;
  
  FUN_0043d406(unaff_EBX + 4);
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    iVar2 = FUN_006badde();
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar2 + 8);
  }
  if (local_30 != '\0') {
    FUN_00401477();
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0048ae42(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x48ae5a;
  FUN_0048af74();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0048ae61;
  FUN_00a3f6a1();
}



int FUN_0048ae6a(undefined4 param_1,int param_2)

{
  char cVar1;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined local_14 [16];
  
  FUN_00498ee1(param_2);
  param_2 = 0;
  while( true ) {
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') break;
    param_2 = param_2 + 1;
    FUN_00452ecb();
  }
  FUN_0048aed9(local_14,local_24,local_20,local_1c,local_18);
  return param_2;
}



void FUN_0048aed9(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_004f9b2c();
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00452ecb();
    FUN_004187ef();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_0048af74(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_0048aed9(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void Catch_All_0048afee(void)

{
  code *pcVar1;
  
  FUN_0048b00b();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0048b000(void)

{
  FUN_0048b00b();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_0048b00b(void)

{
  int unaff_ESI;
  
  if (unaff_ESI != 0) {
    FUN_0048b7fb();
    FUN_00417fe6();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  return &LAB_00c165af;
}



char FUN_0048b097(undefined4 param_1)

{
  char cVar1;
  int **ppiVar2;
  undefined auStack_5c [24];
  undefined4 uStack_44;
  undefined **ppuStack_40;
  uint uStack_3c;
  undefined *local_28;
  int iStack_24;
  char cStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5d921;
  local_14 = ExceptionList;
  uStack_3c = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  ppuStack_40 = (undefined **)param_1;
  uStack_44 = 0x48b0d0;
  FUN_0043d406();
  local_c = 0;
  ppuStack_40 = &local_28;
  uStack_44 = 0x48b0e4;
  ppiVar2 = (int **)FUN_0048b9ac();
  local_c._0_1_ = 1;
  ppuStack_40 = (undefined **)0x48b0f0;
  cVar1 = (**(code **)(**ppiVar2 + 4))();
  local_c = (uint)local_c._1_3_ << 8;
  cVar1 = '\x01' - (cVar1 != '\0');
  if (iStack_24 != 0) {
    ppuStack_40 = (undefined **)0x48b10a;
    FUN_0040127a();
  }
  if (cVar1 != '\0') {
    local_28 = auStack_5c;
    FUN_0048b398(&LAB_0048b337,param_1);
    cVar1 = FUN_0048b8d5();
    if (cVar1 == '\0') {
      ppuStack_40 = (undefined **)0x2bd6a9b0;
      uStack_44 = 0x48b141;
      FUN_00b940e0();
    }
    else {
      ppuStack_40 = (undefined **)0x48b14b;
      FUN_0048b96a();
    }
  }
  local_c = 0xffffffff;
  if (cStack_1c != '\0') {
    ppuStack_40 = (undefined **)0x48b160;
    FUN_00401477();
  }
  ExceptionList = local_14;
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined __fastcall FUN_0048b177(undefined4 param_1)

{
  int **ppiVar1;
  undefined local_34 [4];
  int local_30;
  undefined local_2c [4];
  int local_28;
  char local_20;
  int local_1c;
  int local_18;
  undefined local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_1c = 0;
  local_18 = 0;
  local_8 = 0;
  FUN_0043d406(param_1);
  local_8._0_1_ = 1;
  ppiVar1 = (int **)FUN_0048b9ac(local_34);
  local_8._0_1_ = 2;
  (**(code **)(**ppiVar1 + 0xc))(local_2c);
  local_8._0_1_ = 3;
  FUN_004fe47e();
  local_8._0_1_ = 2;
  if (local_28 != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (local_30 != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != '\0') {
    FUN_00401477();
  }
  local_11 = local_1c != 0;
  if ((bool)local_11) {
    FUN_00b725b0();
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined __thiscall FUN_0048b220(undefined4 param_1_00,undefined *param_1)

{
  undefined uVar1;
  int **ppiVar2;
  undefined local_38 [4];
  int local_34;
  undefined local_30 [4];
  int local_2c;
  char local_24;
  int local_20;
  int local_1c;
  undefined local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_20 = 0;
  local_1c = 0;
  local_8 = 0;
  FUN_0043d406(param_1_00);
  local_8._0_1_ = 1;
  ppiVar2 = (int **)FUN_0048b9ac(local_38);
  local_8._0_1_ = 2;
  (**(code **)(**ppiVar2 + 0xc))(local_30);
  local_8._0_1_ = 3;
  FUN_004fe47e();
  local_8._0_1_ = 2;
  if (local_2c != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (local_34 != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  local_15 = local_20 != 0;
  if ((bool)local_15) {
    uVar1 = FUN_00b729f0(local_20);
    *param_1 = uVar1;
  }
  else {
    *param_1 = 1;
  }
  local_8 = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  return local_15;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_0048b2d9(void)

{
  int **ppiVar1;
  undefined4 unaff_ESI;
  undefined local_24 [4];
  int local_20;
  char local_18;
  undefined local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x48b2e5;
  FUN_0043d406(unaff_ESI);
  local_8 = 0;
  ppiVar1 = (int **)FUN_0048b9ac(local_24);
  local_8._0_1_ = 1;
  local_11 = (**(code **)(**ppiVar1 + 8))();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_18 != '\0') {
    FUN_00401477();
  }
  return local_11;
}



void FUN_0048b398(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_00fb77a1;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0048b3e1(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0048b41c(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WB09F3247::W16F9B3D5>,class_boost::_bi::list1<class_boost::_bi::value<class_WB09F3247::W16F9B3D5*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0048b41c(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WB09F3247::W16F9B3D5>,class_boost::_bi::list1<class_boost::_bi::value<class_WB09F3247::W16F9B3D5*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WB09F3247::W16F9B3D5>,class_boost::_bi::list1<class_boost::_bi::value<class_WB09F3247::W16F9B3D5*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 __thiscall FUN_0048b7df(undefined4 param_1,byte param_2)

{
  FUN_0048b7fb();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_0048b7fb(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = WB09F3247::W540E24F8::vftable;
  local_8 = 7;
  if (local_20 != param_1 + 3) {
    param_1[3] = 0;
  }
  iVar1 = param_1[4];
  param_1[4] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  FUN_005d1159();
  FUN_005d1159();
  FUN_005d1159();
  local_8 = 6;
  FUN_0048b867();
  return;
}



undefined * Catch_All_0048b857(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 6;
  return &DAT_0048b864;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0048b867(void)

{
  int unaff_EBP;
  int unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 5;
  if (*(int *)(unaff_ESI + 0x38) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 4;
  if (*(int *)(unaff_ESI + 0x30) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 3;
  if (*(int *)(unaff_ESI + 0x28) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 2;
  if (*(int *)(unaff_ESI + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 0;
  if (*(int *)(unaff_ESI + 0x10) != 0) {
    FUN_0040127a();
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  if (*(int *)(unaff_ESI + 8) != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_0048b8d5(int param_1)

{
  undefined4 local_54;
  undefined4 local_50;
  undefined auStack_4c [56];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0;
  local_14 = (undefined4 *)auStack_4c;
  local_50 = 0x48b8f7;
  FUN_00672a11();
  local_14 = &local_54;
  local_54 = *(undefined4 *)(param_1 + 4);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 8);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0048b96a(int param_1)

{
  char local_18;
  
  FUN_0043d406(param_1 + 0x14);
  FUN_005d11c9(param_1 + 0x1c);
  if (local_18 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_0048b9ac(int param_1_00,undefined4 *param_1)

{
  FUN_0043d406(param_1_00 + 0x14);
  *param_1 = *(undefined4 *)(param_1_00 + 0x1c);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0x20);
}



void Catch_All_0048ba47(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0048baa4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0048bb01(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0048bb5e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0048bc62(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WB09F3247::W4BD65C99::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_0048bc7f(void)

{
  undefined uVar1;
  int *local_18;
  int local_14;
  
  FUN_00492da1();
  uVar1 = local_18 != (int *)0x0;
  if ((bool)uVar1) {
    uVar1 = (**(code **)(*local_18 + 0x18))();
  }
  if (local_14 != 0) {
    FUN_0040127a();
  }
  return uVar1;
}



undefined4 FUN_0048bcc5(undefined4 param_1)

{
  FUN_006895e8();
  return param_1;
}



void FUN_0048bcd8(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W88FE58D1::WE49E2281::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0048be3d(undefined4 *param_1,undefined param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W88FE58D1::W8D30757B::vftable;
    *(undefined *)(puVar2 + 1) = param_2;
    *(undefined *)((int)puVar2 + 5) = 1;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0048fa75(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0048beae(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0xc);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[1] = param_2;
    *puVar2 = W88FE58D1::W24DE739F::vftable;
    puVar2[2] = param_3;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0048fad2(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0048bf21(undefined4 *param_1,undefined param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W88FE58D1::W86079C7B::vftable;
    *(undefined *)(puVar2 + 1) = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0048fb2f(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0048c045(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W88FE58D1::WB76AA6A8::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0048fbe9(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0048c14d(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W88FE58D1::W885A8479::vftable;
    puVar2[1] = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0048fca3(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0048c1ba(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W88FE58D1::W187F7B03::vftable;
    puVar2[1] = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0048fd00(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0048c2c8(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W88FE58D1::WA3752BE1::vftable;
    puVar2[1] = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0048fdba(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined ** FUN_0048c335(void)

{
  return &PTR_u_W70330F9B_03247400;
}



undefined ** FUN_0048c33b(void)

{
  return &PTR_PTR_00f1f5d4;
}



undefined * FUN_0048c341(void)

{
  return &DAT_032eeb38;
}



undefined4 __fastcall FUN_0048c56c(undefined4 param_1)

{
  byte unaff_retaddr;
  
  FUN_0048c5a2(param_1);
  if ((unaff_retaddr & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_0048c589(int param_1)

{
  if ((-(uint)(*(int *)(param_1 + 0x1b8) != 0) & 0x7a491c) != 0) {
    FUN_004db8a7();
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void FUN_0048c5a2(undefined4 *param_1)

{
  *param_1 = W88FE58D1::W70330F9B::vftable;
  param_1[0x5d] = W88FE58D1::W70330F9B::vftable;
  FUN_005d1159();
  FUN_005d1159();
  FUN_0048c5f8();
  return;
}



undefined * Catch_All_0048c5e8(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 0x18;
  return &DAT_0048c5f5;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0048c5f8(void)

{
  int unaff_EBP;
  int unaff_EDI;
  
  if (*(char *)(unaff_EDI + 0x2dc) != '\0') {
    *(char *)(unaff_EDI + 0x2dc) = '\0';
  }
  FUN_00417fe6();
  FUN_00417fe6();
  FUN_0040159c();
  *(undefined *)(unaff_EBP + -4) = 0x13;
  FUN_00697eb3(unaff_EDI + 0x284);
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 0x11;
  if (*(int *)(unaff_EDI + 0x278) != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 0xf;
  if (*(int *)(unaff_EDI + 0x268) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 0xe;
  if (*(int *)(unaff_EDI + 0x260) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 0xd;
  if (*(int *)(unaff_EDI + 0x254) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 0xc;
  if (*(int *)(unaff_EDI + 0x248) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 0xb;
  FUN_008f7630();
  *(undefined *)(unaff_EBP + -4) = 10;
  FUN_008f7630();
  *(undefined *)(unaff_EBP + -4) = 9;
  FUN_008f7630();
  *(undefined *)(unaff_EBP + -4) = 8;
  if (*(int *)(unaff_EDI + 0x20c) != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 6;
  if (*(int *)(unaff_EDI + 0x1fc) != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 4;
  FUN_00921450();
  *(undefined *)(unaff_EBP + -4) = 3;
  FUN_00507e58();
  *(undefined *)(unaff_EBP + -4) = 2;
  FUN_00507e58();
  *(undefined *)(unaff_EBP + -4) = 1;
  FUN_00507e58();
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  *(undefined ***)(unaff_EDI + 0x174) = W88FE58D1::WE49E2281::vftable;
  *(undefined ***)(unaff_EDI + 0x164) = wxControlContainerBase::vftable;
  FUN_009150e0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __fastcall
FUN_0048c778(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,int param_2_00,undefined4 param_1,int param_2)

{
  undefined4 local_7c;
  undefined *puStack_78;
  undefined auStack_74 [4];
  undefined4 uStack_70;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 *local_18;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0x48c784;
  local_1c = param_1;
  local_20 = 0;
  uStack_70 = 0x48c799;
  local_14 = param_1_00;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1_00);
  local_8 = 0;
  local_20 = 1;
  if (param_2 == 0) {
    local_18 = (undefined4 *)auStack_74;
    puStack_78 = auStack_74;
    local_7c = 0x48c80c;
    FUN_0048eeb8();
    local_18 = &local_7c;
    local_7c = *(undefined4 *)(param_2_00 + 0x264);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2_00 + 0x268);
  }
  if (param_2 == 1) {
    local_18 = (undefined4 *)auStack_74;
    puStack_78 = auStack_74;
    local_7c = 0x48c7bd;
    FUN_0048eeb8();
    local_18 = &local_7c;
    local_7c = *(undefined4 *)(param_2_00 + 0x25c);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2_00 + 0x260);
  }
  return local_14;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0048c85a(int param_1_00,undefined4 param_1)

{
  char local_1c;
  
  FUN_0043d406(param_1_00 + 0x2d4);
  FUN_0041b126(param_1_00 + 0x2dc);
  if (local_1c != '\0') {
    FUN_00401477();
  }
  return param_1;
}



void FUN_0048c8ea(int param_1)

{
  undefined uVar1;
  char cVar2;
  undefined4 uVar3;
  void *pvVar4;
  undefined4 *puVar5;
  int iVar6;
  uint unaff_EBX;
  uint unaff_ESI;
  undefined *puStack_c4;
  int iStack_c0;
  int iStack_bc;
  undefined **ppuStack_b8;
  undefined **ppuStack_b4;
  undefined4 *puStack_b0;
  undefined4 *puStack_ac;
  undefined **ppuStack_88;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined **ppuStack_7c;
  undefined *puStack_78;
  undefined4 uStack_74;
  int iStack_70;
  undefined4 uStack_6c;
  undefined auStack_58 [4];
  undefined *puStack_54;
  undefined4 uStack_50;
  int iStack_4c;
  undefined4 uStack_48;
  undefined *apuStack_44 [2];
  undefined *puStack_3c;
  undefined4 uStack_38;
  int iStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  void *pvStack_20;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  uStack_10 = &LAB_00c49c8f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  (**(code **)(*(int *)(param_1 + 0x1d8) + 100))();
  uVar1 = *(undefined *)(param_1 + 0x2e4);
  ppuStack_88 = &puStack_c4;
  FUN_004180b1();
  FUN_00470562(&ppuStack_88,uVar1);
  uStack_10 = (undefined *)0x0;
  puStack_ac = (undefined4 *)0x48c970;
  FUN_00414f38();
  uStack_10._0_1_ = 1;
  FUN_0043d987();
  uStack_10 = (undefined *)((uint)uStack_10._1_3_ << 8);
  FUN_008f7630();
  uStack_10 = (undefined *)0xffffffff;
  ppuStack_88 = wxObject::vftable;
  FUN_0083e850();
  ppuStack_88 = &puStack_c4;
  FUN_004180b1();
  FUN_00470562(&ppuStack_88,uVar1);
  uStack_10 = (undefined *)0x2;
  puStack_ac = (undefined4 *)0x48c9e9;
  FUN_00414f38();
  uStack_10._0_1_ = 3;
  FUN_0043d987();
  uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,2);
  FUN_008f7630();
  uStack_10 = (undefined *)0xffffffff;
  ppuStack_88 = wxObject::vftable;
  FUN_0083e850();
  ppuStack_88 = &puStack_c4;
  FUN_004180b1();
  FUN_00470562(&ppuStack_88,uVar1);
  uStack_10 = (undefined *)0x4;
  puStack_ac = (undefined4 *)0x48ca62;
  FUN_00414f38();
  uStack_10._0_1_ = 5;
  FUN_0043d987();
  uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,4);
  FUN_008f7630();
  uStack_10 = (undefined *)0xffffffff;
  ppuStack_88 = wxObject::vftable;
  FUN_0083e850();
  ppuStack_88 = (undefined **)operator_new(0x58);
  uStack_10 = (undefined *)0x6;
  if (ppuStack_88 == (undefined **)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00445f46();
  }
  uStack_10 = (undefined *)0xffffffff;
  *(undefined4 *)(param_1 + 0x210) = uVar3;
  puStack_ac = (undefined4 *)0x48cae2;
  FUN_0091c600();
  pvVar4 = operator_new(0x194);
  uStack_10 = (undefined *)0x7;
  if (pvVar4 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    FUN_0043c211();
    uStack_2c = 7;
    FUN_0040180b();
    uStack_28 = 0;
    puStack_ac = &DAT_03238d04;
    puStack_b0 = &DAT_03238d0c;
    ppuStack_b4 = apuStack_44;
    uStack_10 = (undefined *)0x9;
    ppuStack_b8 = (undefined **)0x13f1;
    iStack_bc = param_1;
    unaff_EBX = 3;
    iStack_c0 = 0x48cb56;
    uVar3 = FUN_00483552();
  }
  *(undefined4 *)(param_1 + 0x240) = uVar3;
  if ((unaff_EBX & 2) != 0) {
    unaff_EBX = unaff_EBX & 0xfffffffd;
    FUN_0040159c();
  }
  uStack_10 = (undefined *)0xffffffff;
  if ((unaff_EBX & 1) != 0) {
    unaff_EBX = unaff_EBX & 0xfffffffe;
    FUN_0040159c();
  }
  puStack_ac = (undefined4 *)0xd0;
  puStack_b0 = (undefined4 *)0x0;
  ppuStack_b4 = *(undefined ***)(param_1 + 0x240);
  ppuStack_b8 = (undefined **)0x48cbac;
  FUN_00445d61();
  pvVar4 = operator_new(0x2c0);
  uStack_10 = (undefined *)0xc;
  if (pvVar4 == (void *)0x0) {
    uStack_10 = (undefined *)0xffffffff;
    *(undefined4 *)(param_1 + 0x1e0) = 0;
    ppuStack_88 = (undefined **)0x0;
    uStack_84 = 0;
    FUN_00956f20();
    iStack_4c = param_1;
    puStack_54 = &LAB_0048c8ae;
    uStack_50 = 0;
    puStack_78 = &LAB_0048c8ae;
    uStack_74 = 0;
    iStack_70 = param_1;
    uStack_6c = uStack_48;
    cVar2 = FUN_007f2630();
    if (cVar2 == '\0') {
      puStack_3c = puStack_78;
      uStack_38 = uStack_74;
      iStack_34 = iStack_70;
      uStack_30 = uStack_6c;
      apuStack_44[0] = &DAT_00fb78fd;
    }
    else {
      apuStack_44[0] = (undefined *)0x0;
    }
    uStack_10 = (undefined *)0xd;
    FUN_00607a72();
    uStack_10 = (undefined *)0xffffffff;
    FUN_00507e58();
    puStack_ac = (undefined4 *)0x2000;
    puStack_b0 = (undefined4 *)0x1;
    ppuStack_b4 = *(undefined ***)(param_1 + 0x1e0);
    ppuStack_b8 = (undefined **)0x48cce3;
    FUN_00445d61();
    ppuStack_88 = (undefined **)operator_new(0x58);
    uStack_10 = (undefined *)0xe;
    if (ppuStack_88 == (undefined **)0x0) {
      ppuStack_b4 = (undefined **)0x0;
    }
    else {
      ppuStack_b4 = (undefined **)FUN_00445f46();
    }
    uStack_10 = (undefined *)0xffffffff;
    puStack_ac = (undefined4 *)0x2000;
    puStack_b0 = (undefined4 *)0x0;
    *(undefined ***)(param_1 + 0x214) = ppuStack_b4;
    ppuStack_b8 = (undefined **)0x48cd29;
    FUN_0044c6ab();
    pvVar4 = operator_new(0x1a0);
    uStack_10 = (undefined *)0xf;
    if (pvVar4 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      FUN_0043c211();
      uStack_2c = 7;
      FUN_0040180b();
      uStack_28 = 0;
      puStack_ac = (undefined4 *)0x200000;
      puStack_b0 = &DAT_03238d04;
      ppuStack_b4 = (undefined **)&DAT_03238d0c;
      ppuStack_b8 = apuStack_44;
      uStack_10 = (undefined *)0x11;
      unaff_EBX = unaff_EBX | 0xc;
      iStack_bc = 0x1774;
      iStack_c0 = param_1;
      puStack_c4 = (undefined *)0x48cdad;
      uVar3 = FUN_0044c65b();
    }
    *(undefined4 *)(param_1 + 0x218) = uVar3;
    if ((unaff_EBX & 8) != 0) {
      unaff_EBX = unaff_EBX & 0xfffffff7;
      FUN_0040159c();
    }
    uStack_10 = (undefined *)0xffffffff;
    if ((unaff_EBX & 4) != 0) {
      FUN_0040159c();
    }
    puStack_ac = (undefined4 *)0x2000;
    puStack_b0 = (undefined4 *)0x1;
    ppuStack_b4 = *(undefined ***)(param_1 + 0x218);
    ppuStack_b8 = (undefined **)0x48cdff;
    FUN_00445d61();
    FUN_0044cbe4();
    uStack_10 = (undefined *)0x14;
    (**(code **)(**(int **)(param_1 + 0x218) + 0x17c))();
    local_14 = (void *)0xffffffff;
    ppuStack_7c = wxObject::vftable;
    FUN_0083e850();
    puStack_b0 = *(undefined4 **)(param_1 + 0x214);
    puStack_ac = (undefined4 *)0x0;
    ppuStack_b4 = (undefined **)0x48ce55;
    FUN_00931400();
    (**(code **)(**(int **)(param_1 + 0x210) + 0x4c))();
    puStack_ac = (undefined4 *)0x48ce67;
    pvVar4 = operator_new(0x58);
    local_14 = (void *)0x15;
    if (pvVar4 == (void *)0x0) {
      ppuStack_b8 = (undefined **)0x0;
    }
    else {
      puStack_ac = (undefined4 *)0x48ce84;
      ppuStack_b8 = (undefined **)FUN_00445f46();
    }
    local_14 = (void *)0xffffffff;
    puStack_ac = (undefined4 *)0x5;
    puStack_b0 = (undefined4 *)0x2000;
    ppuStack_b4 = (undefined **)0x0;
    *(undefined ***)(param_1 + 0x224) = ppuStack_b8;
    iStack_bc = 0x48cea7;
    FUN_0044c6ab();
    puStack_ac = (undefined4 *)0x48ceb1;
    pvVar4 = operator_new(0x230);
    local_14 = (void *)0x16;
    if (pvVar4 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      puStack_ac = &DAT_03238d04;
      puStack_b0 = &DAT_03238d0c;
      ppuStack_b4 = (undefined **)0xffffffff;
      ppuStack_b8 = (undefined **)param_1;
      iStack_bc = 0x48cedb;
      uVar3 = FUN_00a21c30();
    }
    local_14 = (void *)0xffffffff;
    *(undefined4 *)(param_1 + 0x21c) = uVar3;
    ppuStack_88 = (undefined **)0x30;
    puStack_ac = (undefined4 *)0x48cf04;
    FUN_008d04b0();
    puStack_ac = (undefined4 *)0x48cf0e;
    pvVar4 = operator_new(0x80);
    local_14 = (void *)0x17;
    if (pvVar4 != (void *)0x0) {
      puStack_ac = (undefined4 *)0x48cf28;
      FUN_007af07a();
    }
    local_14 = (void *)0xffffffff;
    puStack_ac = (undefined4 *)0x48cf40;
    FUN_00a1d9b0();
    puStack_ac = (undefined4 *)0x0;
    puStack_b0 = (undefined4 *)0x0;
    ppuStack_b4 = (undefined **)&LAB_0048f5fe;
    ppuStack_b8 = (undefined **)DAT_032bfe08;
    iStack_bc = 0x48cf5a;
    FUN_0044634a();
    puStack_ac = (undefined4 *)0x0;
    puStack_b0 = (undefined4 *)0x0;
    ppuStack_b4 = (undefined **)&LAB_0048f5fe;
    ppuStack_b8 = (undefined **)DAT_032bfe18;
    iStack_bc = 0x48cf74;
    FUN_0044634a();
    puStack_ac = (undefined4 *)0x48cf7e;
    puVar5 = (undefined4 *)operator_new(0x1a0);
    local_14 = (void *)0x18;
    if (puVar5 == (undefined4 *)0x0) {
      uVar3 = 0;
    }
    else {
      puStack_ac = (undefined4 *)0x48cfa0;
      FUN_0043c211();
      local_14 = (void *)CONCAT31(local_14._1_3_,0x19);
      unaff_ESI = unaff_ESI | 0x10;
      puStack_ac = *(undefined4 **)(param_1 + 0x21c);
      ppuStack_b4 = (undefined **)0x48cfc1;
      puStack_b0 = puVar5;
      uVar3 = FUN_0049007f();
    }
    local_14 = (void *)0xffffffff;
    *(undefined4 *)(param_1 + 0x1e4) = uVar3;
    if ((unaff_ESI & 0x10) != 0) {
      FUN_0040159c();
    }
    puStack_ac = (undefined4 *)auStack_58;
    ppuStack_88 = (undefined **)0xe;
    puStack_b0 = (undefined4 *)0x48d001;
    iVar6 = FUN_00490010();
    uStack_80 = *(undefined4 *)(iVar6 + 4);
    uStack_84 = 0xfa;
    puStack_ac = (undefined4 *)0x48d023;
    (**(code **)(**(int **)(param_1 + 0x1e4) + 0x94))();
    puStack_ac = (undefined4 *)0x0;
    puStack_b0 = (undefined4 *)0x5;
    ppuStack_b4 = (undefined **)0x2000;
    ppuStack_b8 = (undefined **)0x1;
    iStack_bc = *(undefined4 *)(param_1 + 0x21c);
    iStack_c0 = 0x48d03a;
    FUN_00445d61();
    puStack_ac = (undefined4 *)0x48d041;
    FUN_0048d059();
    ExceptionList = pvStack_20;
    return;
  }
  ppuStack_88 = (undefined **)&stack0xffffff58;
  puStack_ac = (undefined4 *)&stack0xffffff58;
  puStack_b0 = (undefined4 *)0x48cbd8;
  FUN_0048eeb8();
  ppuStack_88 = (undefined **)&puStack_b0;
  puStack_b0 = *(undefined4 **)(param_1 + 0x25c);
  ppuStack_b4 = (undefined **)(param_1 + 0x260);
                    // WARNING: Subroutine does not return
  ppuStack_b8 = (undefined **)&UNK_0048cbf9;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0048d059(int param_1)

{
  undefined4 *puVar1;
  undefined *puStack_78;
  undefined4 local_74;
  undefined *local_70;
  undefined local_5c [28];
  undefined4 local_40;
  undefined local_1c [4];
  int local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0x48d065;
  local_70 = (undefined *)0x48d06c;
  FUN_0091ba80();
  local_14 = (undefined **)&local_74;
  local_74 = 0x1e62;
  local_70 = (undefined *)0x2c;
  puStack_78 = local_1c;
  puVar1 = (undefined4 *)FUN_00465be3();
  local_8 = 0;
  local_74 = *puVar1;
  local_70 = (undefined *)0x0;
  puStack_78 = (undefined *)0x48d09f;
  local_70 = (undefined *)FUN_0048c778();
  local_8._0_1_ = 1;
  local_74 = 0x48d0ac;
  basic_string<>();
  local_40 = 0;
  local_8 = CONCAT31(local_8._1_3_,2);
  local_70 = local_5c;
  local_74 = 0x48d0c2;
  (**(code **)(**(int **)(param_1 + 0x240) + 0x54))();
  local_74 = 0x48d0ca;
  FUN_0040159c();
  local_74 = 0;
  puStack_78 = (undefined *)0x1;
  FUN_00401829();
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_74 = 0x48d0e5;
    FUN_0040127a();
  }
  local_74 = 0x48d0ea;
  FUN_0048d147();
  local_74 = 0x48d0f1;
  FUN_0048d1ea();
  if (*(int *)(param_1 + 0x1e0) != 0) {
    local_14 = &puStack_78;
    FUN_0048eeb8(&puStack_78);
    FUN_00491093(*(undefined4 *)(param_1 + 0x1e0));
    local_74 = 0x48d124;
    (**(code **)(*(int *)(*(int *)(param_1 + 0x1e0) + 0x174) + 4))();
  }
  local_74 = *(undefined4 *)(param_1 + 0x220);
  puStack_78 = (undefined *)0x48d12f;
  FUN_0048d299();
  local_74 = 0x48d13a;
  (**(code **)(**(int **)(param_1 + 0x224) + 0x4c))();
  local_74 = 0x48d141;
  FUN_0091bae0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_0048d147(void)

{
  undefined *puVar1;
  undefined4 uVar2;
  int unaff_ESI;
  undefined local_74 [28];
  undefined4 local_58;
  undefined local_50 [24];
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  puVar1 = &LAB_00c47e94;
  local_8 = 0x48d153;
  if (*(int *)(unaff_ESI + 0x218) != 0) {
    if (*(int *)(unaff_ESI + 0x244) == 0) {
      local_38 = 7;
      FUN_0040180b(0);
      local_34 = 0;
      local_8 = 2;
      (**(code **)(**(int **)(unaff_ESI + 0x218) + 0x54))(local_50);
      puVar1 = (undefined *)FUN_0040159c();
    }
    else {
      uVar2 = FUN_0048c778(*(int *)(unaff_ESI + 0x244),*(undefined4 *)(unaff_ESI + 0x24c));
      local_8 = 0;
      basic_string<>(uVar2);
      local_58 = 0;
      local_8 = CONCAT31(local_8._1_3_,1);
      (**(code **)(**(int **)(unaff_ESI + 0x218) + 0x54))(local_74);
      FUN_0040159c();
      puVar1 = (undefined *)FUN_00401829(1,0);
    }
  }
  return puVar1;
}



void __fastcall FUN_0048d1ea(undefined4 param_1,int param_2)

{
  undefined4 uVar1;
  undefined local_50 [24];
  undefined4 local_38;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c47e61;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if ((-(uint)(*(int *)(param_2 + 0x178) != 0) & 0x7a491c) != 0) {
    if (*(int *)(param_2 + 0x250) == 0) {
      local_38 = 7;
      FUN_0040180b(0);
      local_c = 1;
      FUN_0044be74(local_50);
    }
    else {
      uVar1 = FUN_0048c778(*(int *)(param_2 + 0x250),*(undefined4 *)(param_2 + 600));
      local_c = 0;
      FUN_0044be74(uVar1);
    }
    FUN_00401829(1,0);
  }
  ExceptionList = local_14;
  return;
}



void FUN_0048d299(int param_1)

{
  int unaff_ESI;
  undefined local_2e8 [4];
  int local_2e4;
  undefined local_2e0 [4];
  int local_2dc;
  undefined local_2d8 [4];
  int local_2d4;
  undefined local_2d0 [4];
  int local_2cc;
  undefined local_2c8 [4];
  int local_2c4;
  undefined local_2c0 [4];
  int local_2bc;
  undefined local_2b8 [4];
  int local_2b4;
  undefined local_2b0 [4];
  int local_2ac;
  undefined local_2a8 [4];
  int local_2a4;
  undefined local_2a0 [4];
  int local_29c;
  undefined4 local_27c;
  undefined local_258 [28];
  undefined4 local_23c;
  undefined local_234 [28];
  undefined4 local_218;
  undefined4 local_1f4;
  undefined local_1ec [28];
  undefined4 local_1d0;
  undefined local_1c8 [28];
  undefined4 local_1ac;
  undefined4 local_188;
  undefined4 local_164;
  undefined4 local_140;
  undefined local_138 [28];
  undefined4 local_11c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c47e30;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00a22660();
  if (param_1 == 0) {
    FUN_00465be3(local_2e8);
    local_c = 0;
    FUN_0048c778();
    local_c._0_1_ = 1;
    basic_string<>();
    local_27c = 0;
    local_c._0_1_ = 2;
    FUN_00465be3(local_2d8);
    local_c._0_1_ = 3;
    FUN_0048c778();
    local_c._0_1_ = 4;
    basic_string<>();
    local_1ac = 0;
    local_c._0_1_ = 5;
    FUN_00a23400(0x1772,local_1c8,unaff_ESI + 0x228);
    FUN_0040159c();
    FUN_00401829();
    local_c = CONCAT31(local_c._1_3_,2);
    if (local_2d4 != 0) {
      FUN_0040127a();
    }
    FUN_0040159c();
    FUN_00401829();
    local_2cc = local_2e4;
LAB_0048d801:
    local_c = 0xffffffff;
    if (local_2cc != 0) {
      FUN_0040127a();
    }
  }
  else if (param_1 == 1) {
    FUN_00465be3(local_2b8);
    local_c = 6;
    FUN_0048c778();
    local_c._0_1_ = 7;
    basic_string<>();
    local_1f4 = 0;
    local_c._0_1_ = 8;
    FUN_00465be3(local_2a8);
    local_c._0_1_ = 9;
    FUN_0048c778();
    local_c._0_1_ = 10;
    basic_string<>();
    local_23c = 0;
    local_c._0_1_ = 0xb;
    FUN_00a23400(0x1772,local_258,unaff_ESI + 0x228);
    FUN_0040159c();
    FUN_00401829();
    local_c = CONCAT31(local_c._1_3_,8);
    if (local_2a4 != 0) {
      FUN_0040127a();
    }
    FUN_0040159c();
    FUN_00401829();
    local_c = 0xffffffff;
    if (local_2b4 != 0) {
      FUN_0040127a();
    }
  }
  else {
    if (param_1 == 2) {
      FUN_00465be3(local_2d0);
      local_c = 0xc;
      FUN_0048c778();
      local_c._0_1_ = 0xd;
      basic_string<>();
      local_140 = 0;
      local_c._0_1_ = 0xe;
      FUN_00465be3(local_2c8);
      local_c._0_1_ = 0xf;
      FUN_0048c778();
      local_c._0_1_ = 0x10;
      basic_string<>();
      local_1d0 = 0;
      local_c._0_1_ = 0x11;
      FUN_00a23400(0x1772,local_1ec,unaff_ESI + 0x228);
      FUN_0040159c();
      FUN_00401829();
      local_c = CONCAT31(local_c._1_3_,0xe);
      if (local_2c4 != 0) {
        FUN_0040127a();
      }
      FUN_0040159c();
      FUN_00401829();
      goto LAB_0048d801;
    }
    if (param_1 != 3) goto LAB_0048d81b;
    FUN_00465be3(local_2a0);
    local_c = 0x12;
    FUN_0048c778();
    local_c._0_1_ = 0x13;
    basic_string<>();
    local_188 = 0;
    local_c._0_1_ = 0x14;
    FUN_00465be3(local_2c0);
    local_c._0_1_ = 0x15;
    FUN_0048c778();
    local_c._0_1_ = 0x16;
    basic_string<>();
    local_218 = 0;
    local_c._0_1_ = 0x17;
    FUN_00a23400(0x1771,local_234,unaff_ESI + 0x230);
    FUN_0040159c();
    FUN_00401829();
    local_c = CONCAT31(local_c._1_3_,0x14);
    if (local_2bc != 0) {
      FUN_0040127a();
    }
    FUN_0040159c();
    FUN_00401829();
    local_c = 0xffffffff;
    if (local_29c != 0) {
      FUN_0040127a();
    }
  }
  FUN_00a1dc40();
LAB_0048d81b:
  FUN_00a22380();
  FUN_00465be3(local_2e8);
  local_c = 0x18;
  FUN_0048c778();
  local_c._0_1_ = 0x19;
  basic_string<>();
  local_27c = 0;
  local_c = CONCAT31(local_c._1_3_,0x1a);
  FUN_00a22220();
  FUN_0040159c();
  FUN_00401829();
  local_c = 0xffffffff;
  if (local_2e4 != 0) {
    FUN_0040127a();
  }
  *(undefined4 *)(unaff_ESI + 0x1e8) = 0xffffffff;
  *(undefined4 *)(unaff_ESI + 0x1ec) = 0xffffffff;
  FUN_00a224f0();
  FUN_00465be3(local_2e0);
  local_c = 0x1b;
  FUN_0048c778();
  local_c._0_1_ = 0x1c;
  basic_string<>();
  local_164 = 0;
  local_c._0_1_ = 0x1d;
  FUN_00465be3(local_2b0);
  local_c._0_1_ = 0x1e;
  FUN_0048c778();
  local_c._0_1_ = 0x1f;
  basic_string<>();
  local_11c = 0;
  local_c._0_1_ = 0x20;
  FUN_00a23400(0x1773,local_138,unaff_ESI + 0x238);
  FUN_0040159c();
  FUN_00401829();
  local_c = CONCAT31(local_c._1_3_,0x1d);
  if (local_2ac != 0) {
    FUN_0040127a();
  }
  FUN_0040159c();
  FUN_00401829();
  local_c = 0xffffffff;
  if (local_2dc != 0) {
    FUN_0040127a();
  }
  FUN_00a1dc40();
  FUN_00a234b0();
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0048dadb(void)

{
  int iVar1;
  int unaff_ESI;
  undefined4 local_24 [3];
  char local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x48dae7;
  FUN_0043d406(unaff_ESI + 0x1f0);
  local_8 = 0;
  if (local_24 != (undefined4 *)(unaff_ESI + 0x1f8)) {
    *(undefined4 *)(unaff_ESI + 0x1f8) = 0;
  }
  iVar1 = *(int *)(unaff_ESI + 0x1fc);
  *(undefined4 *)(unaff_ESI + 0x1fc) = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_18 != '\0') {
    FUN_00401477();
  }
  return;
}



void FUN_0048dbc6(void)

{
  int *piVar1;
  int **ppiVar2;
  undefined *puStack_1a0;
  undefined *apuStack_19c [2];
  undefined4 uStack_194;
  int *piStack_190;
  int *piStack_18c;
  int *piStack_188;
  int *piStack_184;
  int *piStack_180;
  uint uStack_164;
  undefined4 local_160;
  undefined **ppuStack_15c;
  undefined **local_158;
  void *pvStack_154;
  void *local_150;
  int local_148;
  int local_144;
  int local_140;
  undefined local_13c [24];
  undefined4 uStack_124;
  undefined4 local_120;
  undefined auStack_11c [4];
  int local_118 [14];
  undefined auStack_e0 [4];
  int iStack_dc;
  int local_d8 [47];
  void *local_1c;
  void *local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  uStack_10 = &LAB_00c47ca3;
  local_14 = ExceptionList;
  local_1c = (void *)(DAT_0323f878 ^ (uint)&uStack_164);
  ExceptionList = &local_14;
  local_160 = 0;
  FUN_004710ac();
  local_c = 0;
  local_150 = operator_new(0xb8);
  local_c._0_1_ = 1;
  if (local_150 != (void *)0x0) {
    FUN_004325b6();
    local_158 = (undefined **)&stack0xfffffe84;
    local_c = CONCAT31(local_c._1_3_,2);
    piStack_180 = &local_144;
    local_160 = 1;
    piStack_184 = (int *)0x48dc7f;
    FUN_00465be3();
    local_c = 3;
    local_160 = 3;
    piStack_180 = (int *)0x48dca4;
    FUN_0048c778();
    local_c = 4;
    local_160 = 7;
    basic_string<>();
    local_120 = 0;
    piStack_180 = local_118;
    piStack_184 = (int *)local_13c;
    local_c._0_1_ = 5;
    local_c._1_3_ = 0;
    piStack_188 = (int *)0x1775;
    piStack_18c = local_d8;
    local_160 = 0xf;
    piStack_190 = (int *)0x48dcfa;
    FUN_0095b150();
  }
  if ((local_160 & 8) != 0) {
    local_160 = local_160 & 0xfffffff7;
    FUN_0040159c();
  }
  if ((local_160 & 4) != 0) {
    local_160 = local_160 & 0xfffffffb;
    piStack_180 = (int *)0x48dd2f;
    FUN_00401829();
  }
  local_c = 6;
  if (((local_160 & 2) != 0) && (local_160 = local_160 & 0xfffffffd, local_140 != 0)) {
    FUN_0040127a();
  }
  local_c = 0;
  if ((local_160 & 1) != 0) {
    local_160 = local_160 & 0xfffffffe;
    FUN_0040159c();
  }
  local_158 = apuStack_19c;
  puStack_1a0 = (undefined *)0x48dd84;
  FUN_004180b1();
  puStack_1a0 = (undefined *)0x0;
  piStack_180 = (int *)FUN_00470562(&local_158);
  local_c._0_1_ = 10;
  piStack_184 = (int *)0x48dda6;
  FUN_00414f38();
  local_c._0_1_ = 0xb;
  piStack_180 = (int *)0x48ddb6;
  FUN_004720c0();
  local_c._0_1_ = 10;
  FUN_008f7630();
  local_c = (uint)local_c._1_3_ << 8;
  local_158 = wxObject::vftable;
  FUN_0083e850();
  (**(code **)(local_d8[0] + 0x6c))();
  FUN_00470f04();
  piStack_180 = (int *)0x48de0b;
  FUN_0048eeb8();
  piStack_180 = &local_148;
  uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,0xc);
  piStack_184 = (int *)0x48de1e;
  piVar1 = (int *)FUN_0048f7c0();
  local_160 = CONCAT13(*piVar1 == 0,(undefined3)local_160);
  if (local_144 != 0) {
    FUN_0040127a();
  }
  uStack_10 = (undefined *)((uint)uStack_10 & 0xffffff00);
  if (local_158 != (undefined **)0x0) {
    FUN_0040127a();
  }
  if (local_160._3_1_ != '\0') {
    piStack_180 = (int *)0x48de5c;
    pvStack_154 = operator_new(0xb8);
    uStack_10._0_1_ = 0xd;
    if (pvStack_154 != (void *)0x0) {
      piStack_180 = (int *)0x48de80;
      FUN_004325b6();
      ppuStack_15c = (undefined **)&piStack_180;
      uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,0xe);
      uStack_164 = uStack_164 | 0x10;
      piStack_180 = (int *)0x1e62;
      piStack_184 = &local_148;
      piStack_188 = (int *)0x48deae;
      ppiVar2 = (int **)FUN_00465be3();
      uStack_10 = (undefined *)0xf;
      piStack_180 = *ppiVar2;
      uStack_164 = uStack_164 | 0x20;
      piStack_184 = (int *)0x48ded5;
      FUN_0048c778();
      uStack_10 = (undefined *)0x10;
      uStack_164 = uStack_164 | 0x40;
      piStack_180 = (int *)0x48deeb;
      basic_string<>();
      uStack_124 = 0;
      piStack_180 = (int *)0x0;
      piStack_184 = (int *)auStack_11c;
      piStack_188 = &local_140;
      uStack_10._0_1_ = 0x11;
      uStack_10._1_3_ = 0;
      uStack_164 = uStack_164 | 0x80;
      piStack_18c = (int *)0x1776;
      piStack_190 = &iStack_dc;
      uStack_194 = 0x48df24;
      FUN_0095b150();
    }
    if ((uStack_164 & 0x80) != 0) {
      uStack_164 = uStack_164 & 0xffffff7f;
      FUN_0040159c();
    }
    if ((uStack_164 & 0x40) != 0) {
      uStack_164 = uStack_164 & 0xffffffbf;
      piStack_180 = (int *)0x1;
      piStack_184 = (int *)0x48df5d;
      FUN_00401829();
    }
    uStack_10 = (undefined *)0x12;
    if (((uStack_164 & 0x20) != 0) && (uStack_164 = uStack_164 & 0xffffffdf, local_144 != 0)) {
      FUN_0040127a();
    }
    uStack_10 = (undefined *)0x0;
    if ((uStack_164 & 0x10) != 0) {
      uStack_164 = uStack_164 & 0xffffffef;
      FUN_0040159c();
    }
    piStack_180 = (int *)0xffffffff;
    ppuStack_15c = &puStack_1a0;
    FUN_004180b1();
    piStack_184 = (int *)FUN_00470562(&ppuStack_15c,0);
    uStack_10._0_1_ = 0x16;
    piStack_188 = (int *)0x48dfd5;
    piStack_180 = (int *)FUN_00414f38();
    uStack_10._0_1_ = 0x17;
    piStack_184 = (int *)0x48dfe5;
    FUN_004720c0();
    uStack_10._0_1_ = 0x16;
    FUN_008f7630();
    uStack_10 = (undefined *)((uint)uStack_10._1_3_ << 8);
    ppuStack_15c = wxObject::vftable;
    FUN_0083e850();
    piStack_180 = (int *)0x48e021;
    (**(code **)(iStack_dc + 0x6c))();
  }
  piStack_180 = (int *)0x48e02d;
  pvStack_154 = operator_new(0xb8);
  uStack_10._0_1_ = 0x18;
  if (pvStack_154 == (void *)0x0) {
    pvStack_154 = (void *)0x0;
  }
  else {
    piStack_180 = (int *)0x48e05b;
    FUN_004325b6();
    ppuStack_15c = (undefined **)&piStack_180;
    uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,0x19);
    uStack_164 = uStack_164 | 0x100;
    piStack_180 = (int *)0x1e62;
    piStack_184 = &local_148;
    piStack_188 = (int *)0x48e08a;
    ppiVar2 = (int **)FUN_00465be3();
    uStack_10 = (undefined *)0x1a;
    piStack_180 = *ppiVar2;
    uStack_164 = uStack_164 | 0x200;
    piStack_184 = (int *)0x48e0b4;
    FUN_0048c778();
    uStack_10 = (undefined *)0x1b;
    uStack_164 = uStack_164 | 0x400;
    piStack_180 = (int *)0x48e0cd;
    basic_string<>();
    uStack_124 = 0;
    piStack_180 = (int *)0x0;
    piStack_184 = (int *)auStack_11c;
    piStack_188 = &local_140;
    uStack_10._0_1_ = 0x1c;
    uStack_10._1_3_ = 0;
    uStack_164 = uStack_164 | 0x800;
    piStack_18c = (int *)0x1777;
    piStack_190 = &iStack_dc;
    uStack_194 = 0x48e102;
    pvStack_154 = (void *)FUN_0095b150();
  }
  if ((uStack_164 & 0x800) != 0) {
    uStack_164 = uStack_164 & 0xfffff7ff;
    FUN_0040159c();
  }
  if ((uStack_164 & 0x400) != 0) {
    uStack_164 = uStack_164 & 0xfffffbff;
    piStack_180 = (int *)0x1;
    piStack_184 = (int *)0x48e140;
    FUN_00401829();
  }
  uStack_10 = (undefined *)0x1d;
  if (((uStack_164 & 0x200) != 0) && (uStack_164 = uStack_164 & 0xfffffdff, local_144 != 0)) {
    FUN_0040127a();
  }
  uStack_10 = (undefined *)0x0;
  if ((uStack_164 & 0x100) != 0) {
    FUN_0040159c();
  }
  piStack_180 = (int *)0x48e199;
  (**(code **)(iStack_dc + 0x6c))();
  piStack_180 = DAT_03238d10;
  piStack_184 = (int *)DAT_03238d0c;
  piStack_188 = (int *)auStack_e0;
  piStack_18c = (int *)0x48e1b6;
  FUN_0091ca70();
  local_14 = (void *)0xffffffff;
  piStack_180 = (int *)0x48e1ca;
  FUN_0092de10();
  ExceptionList = local_1c;
  ___security_check_cookie_4();
  return;
}



// WARNING: Removing unreachable block (ram,0x0048e278)
// WARNING: Removing unreachable block (ram,0x0048e28a)

void __fastcall FUN_0048e1f0(int param_1)

{
  uint uVar1;
  char local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c4a002;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  local_c = 0;
  FUN_0043d406(param_1 + 0x200);
  local_c._0_1_ = 1;
  FUN_004fe47e(uVar1);
  local_c = (uint)local_c._1_3_ << 8;
  if (local_1c != '\0') {
    FUN_00401477();
  }
  FUN_0048ede8(param_1);
  FUN_0048e754(param_1,0);
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_0048e2a4(int param_1)

{
  undefined uVar1;
  undefined4 *puVar2;
  undefined *local_19c;
  uint local_184;
  char local_17d;
  undefined **local_17c;
  undefined **local_178;
  int local_174;
  char cStack_16c;
  undefined local_168 [4];
  int local_164;
  undefined local_160 [28];
  undefined4 local_144;
  undefined local_120 [72];
  int local_d8 [47];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c47a5b;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&local_184;
  ExceptionList = &local_14;
  local_184 = 0;
  local_19c = (undefined *)0x48e2ff;
  FUN_0043d406();
  local_c = 0;
  local_19c = (undefined *)0x48e316;
  FUN_004585c3();
  local_17c = &local_19c;
  local_c._0_1_ = 1;
  local_19c = (undefined *)0x1e63;
  puVar2 = (undefined4 *)FUN_00465be3(&local_178);
  local_c._0_1_ = 2;
  local_19c = (undefined *)*puVar2;
  FUN_0048c778();
  local_c._0_1_ = 3;
  local_19c = (undefined *)0x48e377;
  FUN_004325b6();
  local_19c = local_160;
  local_c._0_1_ = 4;
  local_17d = FUN_00852010();
  FUN_0040159c();
  local_19c = (undefined *)0x1;
  FUN_00401829();
  local_c._0_1_ = 1;
  if (local_174 != 0) {
    FUN_0040127a();
  }
  if (local_17d == '\0') {
    if (*(int **)(param_1 + 0x1f8) != (int *)0x0) {
      local_19c = (undefined *)0x48e58c;
      (**(code **)(**(int **)(param_1 + 0x1f8) + 0x18))();
    }
  }
  else {
    local_19c = (undefined *)0x48e3de;
    FUN_004710ac();
    local_c._0_1_ = 5;
    local_19c = (undefined *)0x48e3f0;
    local_17c = (undefined **)operator_new(0xb8);
    local_c._0_1_ = 6;
    uVar1 = (undefined)local_c;
    local_c._0_1_ = 6;
    if (local_17c == (undefined **)0x0) {
      local_17c = (undefined **)0x0;
      local_c._0_1_ = uVar1;
    }
    else {
      local_19c = (undefined *)0x48e414;
      FUN_004325b6();
      local_178 = &local_19c;
      local_c = CONCAT31(local_c._1_3_,7);
      local_19c = (undefined *)0x1e62;
      local_184 = 1;
      puVar2 = (undefined4 *)FUN_00465be3(local_168);
      local_c = 8;
      local_19c = (undefined *)*puVar2;
      local_184 = 3;
      FUN_0048c778();
      local_c = 9;
      local_184 = 7;
      local_19c = (undefined *)0x48e481;
      basic_string<>();
      local_144 = 0;
      local_19c = (undefined *)0x0;
      local_c._0_1_ = 10;
      local_c._1_3_ = 0;
      local_184 = 0xf;
      local_17c = (undefined **)FUN_0095b150(local_d8,0x1779,local_160,local_120);
    }
    if ((local_184 & 8) != 0) {
      local_184 = local_184 & 0xfffffff7;
      FUN_0040159c();
    }
    if ((local_184 & 4) != 0) {
      local_184 = local_184 & 0xfffffffb;
      local_19c = (undefined *)0x1;
      FUN_00401829();
    }
    local_c = 0xb;
    if (((local_184 & 2) != 0) && (local_184 = local_184 & 0xfffffffd, local_164 != 0)) {
      FUN_0040127a();
    }
    local_c = 5;
    if ((local_184 & 1) != 0) {
      FUN_0040159c();
    }
    local_19c = (undefined *)0x48e544;
    (**(code **)(local_d8[0] + 0x6c))();
    local_19c = DAT_03238d0c;
    FUN_0091ca70(local_d8);
    local_c._0_1_ = 1;
    FUN_0092de10();
  }
  FUN_0040159c();
  local_c = 0xffffffff;
  if (cStack_16c != '\0') {
    FUN_00401477();
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Removing unreachable block (ram,0x0048e666)
// WARNING: Removing unreachable block (ram,0x0048e678)

void __fastcall FUN_0048e5d5(int param_1)

{
  uint uVar1;
  char local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c4a002;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  local_c = 0;
  FUN_0043d406(param_1 + 0x27c);
  local_c._0_1_ = 1;
  if (*(int *)(param_1 + 0x2a0) != 0) {
    FUN_00452a5a(uVar1);
    FUN_004fe47e();
    FUN_00452a84();
  }
  local_c = (uint)local_c._1_3_ << 8;
  if (local_1c != '\0') {
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



void FUN_0048e754(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined *local_34;
  undefined4 uStack_30;
  uint uStack_2c;
  undefined auStack_28 [4];
  undefined **local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  uStack_2c = DAT_0323f878 ^ (uint)auStack_28;
  ExceptionList = &local_14;
  uStack_30 = param_2;
  local_34 = local_20;
  puVar1 = (undefined4 *)FUN_0048c14d();
  local_c = 0;
  local_34 = (undefined *)*puVar1;
  local_24 = &local_34;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0048e9cc(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined auStack_30 [8];
  undefined4 local_28;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c5e902;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  puVar1 = (undefined4 *)FUN_0048be3d(local_20,param_2,DAT_0323f878 ^ (uint)auStack_30);
  local_28 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0048ea72(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined auStack_30 [8];
  undefined4 local_28;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c5e902;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  puVar1 = (undefined4 *)FUN_0048c2c8(local_20,param_2,DAT_0323f878 ^ (uint)auStack_30);
  local_28 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0048eb18(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined auStack_30 [8];
  undefined4 local_28;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c5e902;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  puVar1 = (undefined4 *)FUN_0048beae(local_20,param_2,param_3,DAT_0323f878 ^ (uint)auStack_30);
  local_28 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0048ebc2(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined auStack_30 [8];
  undefined4 local_28;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c5e902;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  puVar1 = (undefined4 *)FUN_0048bf21(local_20,param_2,DAT_0323f878 ^ (uint)auStack_30);
  local_28 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0048ec68(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined *local_34;
  undefined4 uStack_30;
  uint uStack_2c;
  undefined auStack_28 [4];
  undefined **local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  uStack_2c = DAT_0323f878 ^ (uint)auStack_28;
  ExceptionList = &local_14;
  uStack_30 = param_2;
  local_34 = local_20;
  puVar1 = (undefined4 *)FUN_0048c1ba();
  local_c = 0;
  local_34 = (undefined *)*puVar1;
  local_24 = &local_34;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0048ede8(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined *puStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x48edf4;
  puStack_34 = local_20;
  local_38 = 0x48edfd;
  puVar1 = (undefined4 *)FUN_0048c045();
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0048eeb8(undefined4 *param_1)

{
  int unaff_EDI;
  
  FUN_0043d406(unaff_EDI + 0x26c);
  *param_1 = *(undefined4 *)(unaff_EDI + 0x274);
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EDI + 0x278);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0048ef13(undefined **param_1)

{
  undefined4 *puVar1;
  int unaff_ESI;
  undefined4 uStack_28;
  undefined4 *puStack_24;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  puVar1 = (undefined4 *)auStack_20;
  local_8 = 0;
  if (*(int **)(unaff_ESI + 0x1e0) != (int *)0x0) {
    puStack_24 = &param_1;
    puVar1 = &uStack_28;
    uStack_28 = 0x48ef39;
    (**(code **)(**(int **)(unaff_ESI + 0x1e0) + 0x17c))();
    puVar1[-1] = &param_1;
    puVar1[-2] = 0x48ef48;
    FUN_009575b0();
  }
  local_8 = 0xffffffff;
  param_1 = wxObject::vftable;
  *(undefined4 *)((int)puVar1 + -4) = 0x48ef5b;
  FUN_0083e850();
  *(undefined4 *)((int)puVar1 + -4) = 0x48ef60;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0048ef63(int param_1_00,undefined **param_1)

{
  undefined auStack_38 [16];
  undefined4 uStack_28;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  if (*(int *)(param_1_00 + 0x1e0) != 0) {
    local_14 = auStack_38;
    FUN_00458700(&param_1);
    FUN_00492a42(*(int *)(param_1_00 + 0x1e0));
  }
  local_8 = 0xffffffff;
  param_1 = wxObject::vftable;
  uStack_28 = 0x48efab;
  FUN_0083e850();
  return;
}



void __fastcall FUN_0048efb3(int param_1)

{
  uint uVar1;
  char local_24;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3f140;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_14;
  FUN_0043d406(param_1 + 0xf8);
  local_c = 0;
  FUN_00492da1(uVar1);
  local_c._0_1_ = 1;
  FUN_005d11c9(param_1 + 0x100);
  local_c = (uint)local_c._1_3_ << 8;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  local_c = 0xffffffff;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  FUN_0048d059();
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_0048f058(int param_1_00,int param_1)

{
  undefined auStack_20 [4];
  undefined4 uStack_1c;
  
  if (*(int *)(param_1_00 + 0x6c) != 0) {
    uStack_1c = 0x48f070;
    FUN_0091ba80();
    FUN_00492f06(auStack_20);
    FUN_004925a9(*(undefined4 *)(param_1_00 + 0x6c),*(undefined4 *)(param_1 + 0x14));
    if ((*(int *)(param_1_00 + 0x174) == 0) ||
       ((*(int *)(param_1_00 + 0x174) == 2 &&
        (-1 < *(int *)(*(int *)(param_1_00 + 0x6c) + 0x180) + -1)))) {
      uStack_1c = 0x48f0bc;
      FUN_004929f0();
    }
    uStack_1c = 0x48f0c4;
    FUN_0091bae0();
    uStack_1c = 0x48f0cf;
    FUN_0048c589();
  }
  return;
}



void __thiscall FUN_0048f0d8(int param_1_00,int param_1)

{
  if (*(int *)(param_1_00 + 0x6c) != 0) {
    FUN_0091ba80();
    FUN_0049285c(*(undefined *)(param_1 + 4),*(undefined *)(param_1 + 5));
    if (-1 < *(int *)(*(int *)(param_1_00 + 0x6c) + 0x180) + -1) {
      FUN_004929f0();
    }
    FUN_0091bae0();
    FUN_0048c589();
  }
  return;
}



void __thiscall FUN_0048f129(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  
  if (*(int *)(param_1_00 + 0x70) != 0) {
    iVar1 = *(int *)(param_1 + 4);
    iVar2 = *(int *)(param_1 + 8);
    if ((*(int *)(param_1_00 + 0x74) != iVar2) || (*(int *)(param_1_00 + 0x78) != iVar1)) {
      FUN_0091ba80();
      (**(code **)(**(int **)(param_1_00 + 0x70) + 0x358))(iVar2);
      (**(code **)(**(int **)(param_1_00 + 0x70) + 0x360))(iVar1);
      FUN_0091bae0();
      FUN_0048c589();
      *(int *)(param_1_00 + 0x74) = iVar2;
      *(int *)(param_1_00 + 0x78) = iVar1;
    }
  }
  return;
}



void __thiscall FUN_0048f185(int param_1_00,int param_1)

{
  if (*(int **)(param_1_00 + 0x70) != (int *)0x0) {
    if (*(char *)(param_1 + 4) == '\0') {
      (**(code **)(**(int **)(param_1_00 + 0x70) + 0x368))();
      FUN_0048c589();
      *(undefined4 *)(param_1_00 + 0x74) = 0xffffffff;
      *(undefined4 *)(param_1_00 + 0x78) = 0xffffffff;
    }
    else {
      FUN_0091ba80();
      (**(code **)(**(int **)(param_1_00 + 0x70) + 0x358))(1);
      (**(code **)(**(int **)(param_1_00 + 0x70) + 0x360))(1);
      FUN_0091bae0();
      FUN_0048c589();
      *(undefined4 *)(param_1_00 + 0x74) = 1;
      *(undefined4 *)(param_1_00 + 0x78) = 1;
    }
  }
  return;
}



void __fastcall FUN_0048f1f5(int param_1)

{
  uint uVar1;
  char local_24;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c405b5;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  FUN_0043d406(param_1 + 0x8c);
  local_c = 0;
  FUN_00492da1(uVar1);
  local_c._0_1_ = 1;
  FUN_004fe47e();
  local_c = (uint)local_c._1_3_ << 8;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  local_c = 0xffffffff;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  if ((*(int *)(param_1 + 0x9c) != 0) && (*(int *)(param_1 + 0xa0) != 0)) {
    FUN_00931400(*(int *)(param_1 + 0xa0),1,0);
    (**(code **)(**(int **)(param_1 + 0x9c) + 0x4c))();
  }
  if ((*(int *)(param_1 + 0x6c) != 0) && (-1 < *(int *)(*(int *)(param_1 + 0x6c) + 0x180) + -1)) {
    FUN_004929f0();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0048f2cd(int param_1)

{
  int iVar1;
  undefined4 local_20 [3];
  char local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x48f2d9;
  FUN_0043d406(param_1 + 0x8c);
  local_8 = 0;
  if (local_20 != (undefined4 *)(param_1 + 0x94)) {
    *(undefined4 *)(param_1 + 0x94) = 0;
  }
  iVar1 = *(int *)(param_1 + 0x98);
  *(undefined4 *)(param_1 + 0x98) = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_14 != '\0') {
    FUN_00401477();
  }
  if ((*(int *)(param_1 + 0x9c) != 0) && (*(int *)(param_1 + 0xa0) != 0)) {
    FUN_00931400(*(int *)(param_1 + 0xa0),0,1);
    (**(code **)(**(int **)(param_1 + 0x9c) + 0x4c))();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0048f34e(int param_1_00,int param_1)

{
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x48f35a;
  FUN_00492f06(local_18);
  local_8 = 0;
  FUN_005d11c9(param_1_00 + 0xd0);
  local_8 = 0xffffffff;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  *(undefined4 *)(param_1_00 + 0xd8) = *(undefined4 *)(param_1 + 0xc);
  FUN_0048d147();
  return;
}



void __thiscall FUN_0048f3a6(int param_1_00,int param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  if ((-(uint)(*(int *)(param_1_00 + 0x24) != 0) & 0x7a491c) == 0) {
    return;
  }
  iVar1 = *(int *)(param_1 + 4);
  if (iVar1 != 0) {
    if (iVar1 == 1) {
      uVar2 = 1;
      goto LAB_0048f3de;
    }
    if (iVar1 == 2) {
      uVar2 = 2;
      goto LAB_0048f3de;
    }
    if (iVar1 == 3) {
      uVar2 = 3;
      goto LAB_0048f3de;
    }
  }
  uVar2 = 0;
LAB_0048f3de:
  FUN_0044be74(uVar2);
  return;
}



void __thiscall FUN_0048f3e9(int param_1_00,int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1_00 + 0xa8) != 0) {
    FUN_0091ba80();
    uVar1 = *(undefined4 *)(param_1 + 4);
    *(undefined4 *)(param_1_00 + 0xac) = uVar1;
    FUN_0048d299(uVar1);
    (**(code **)(**(int **)(param_1_00 + 0xb0) + 0x4c))();
    FUN_0091bae0();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0048f42d(int param_1_00,int param_1)

{
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x48f439;
  if ((-(uint)(*(int *)(param_1_00 + 4) != 0) & 0x7a491c) != 0) {
    FUN_00492f06(local_18);
    local_8 = 0;
    FUN_005d11c9(param_1_00 + 0xdc);
    local_8 = 0xffffffff;
    if (local_14 != 0) {
      FUN_0040127a();
    }
    *(undefined4 *)(param_1_00 + 0xe4) = *(undefined4 *)(param_1 + 0xc);
    FUN_0048d1ea();
  }
  return;
}



void __thiscall FUN_0048f493(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1_00 + 0x174) = *(undefined4 *)(param_1 + 4);
  return;
}



uint * __thiscall FUN_0048f617(uint *param_1_00,uint *param_1)

{
  uint uVar1;
  int iVar2;
  uint *puVar3;
  uint *puVar4;
  uint local_58 [2];
  uint local_50 [6];
  undefined4 local_38 [9];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c12aa3;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar1 = *param_1_00;
  local_58[0] = 0;
  if (uVar1 != 0) {
    local_58[0] = uVar1;
    if ((uVar1 & 1) == 0) {
      (**(code **)(uVar1 & 0xfffffffe))
                (param_1_00 + 2,local_50,0,DAT_0323f878 ^ (uint)&stack0xffffff98);
    }
    else {
      puVar3 = param_1_00 + 2;
      puVar4 = local_50;
      for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar4 = *puVar3;
        puVar3 = puVar3 + 1;
        puVar4 = puVar4 + 1;
      }
    }
  }
  if (param_1 != local_58) {
    local_38[0] = 0;
    local_c._0_1_ = 1;
    local_c._1_3_ = 0;
    FUN_00475d30(local_38);
    FUN_00475d30(local_58);
    FUN_00475d30(param_1);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00507e58();
  }
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return param_1;
}



void __thiscall FUN_0048f6e5(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxHtmlCellEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



undefined4 __thiscall FUN_0048f730(int param_1_00,int param_1)

{
  bool bVar1;
  type_info *ptVar2;
  type_info *this;
  undefined4 uVar3;
  
  ptVar2 = (type_info *)___RTtypeid(param_1_00);
  this = (type_info *)___RTtypeid(param_1);
  bVar1 = type_info::operator!=(this,ptVar2);
  if (bVar1) {
    uVar3 = 0;
  }
  else if ((((*(int *)(param_1_00 + 8) == *(int *)(param_1 + 8)) &&
            ((*(int *)(param_1_00 + 8) == 0 ||
             (*(int *)(param_1_00 + 0xc) == *(int *)(param_1 + 0xc))))) ||
           (*(int *)(param_1 + 8) == 0)) &&
          ((*(int *)(param_1_00 + 4) == *(int *)(param_1 + 4) || (*(int *)(param_1 + 4) == 0)))) {
    uVar3 = 1;
  }
  else {
    uVar3 = 0;
  }
  return uVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0048f788(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxHtmlCellEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[2] = param_1;
    puVar1[3] = param_2;
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0048f7c0(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x48f7cc;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W47457227::W31782023::RTTI_Type_Descriptor,
                   &W47457227::W77573D26::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W47457227::W31782023::RTTI_Type_Descriptor,
                           &W47457227::W77573D26::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_0048f996(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *in_EAX;
  unaff_ESI[1] = in_EAX[1];
  unaff_ESI[2] = in_EAX[2];
  unaff_ESI[3] = in_EAX[3];
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 4);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0048f9bb(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88FE58D1::W59BEE6E9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0048fa01(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0048fa5e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0048fa75(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88FE58D1::W8D30757B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0048fabb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0048fad2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88FE58D1::W24DE739F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0048fb18(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0048fb2f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88FE58D1::W86079C7B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0048fb75(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0048fb8c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88FE58D1::W385DEA52>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0048fbd2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0048fbe9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88FE58D1::WB76AA6A8>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0048fc2f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0048fc8c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0048fca3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88FE58D1::W885A8479>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0048fce9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0048fd00(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88FE58D1::W187F7B03>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0048fd46(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0048fda3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0048fdba(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88FE58D1::WA3752BE1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0048fe00(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0048fe91(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0048ff62(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W88FE58D1::W70330F9B>,class_boost::_bi::list1<class_boost::_bi::value<class_W88FE58D1::W70330F9B*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0048feca(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0048ffaf(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W88FE58D1::W70330F9B,class_boost::shared_ptr<class_W88FE58D1::WAAAFD539>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W88FE58D1::W70330F9B*>,class_boost::_bi::value<class_boost::shared_ptr<class_W88FE58D1::WAAAFD539>_>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_0048ff62(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W88FE58D1::W70330F9B>,class_boost::_bi::list1<class_boost::_bi::value<class_W88FE58D1::W70330F9B*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W88FE58D1::W70330F9B>,class_boost::_bi::list1<class_boost::_bi::value<class_W88FE58D1::W70330F9B*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void FUN_0048ffaf(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  uint unaff_EBX;
  int unaff_EDI;
  
  if ((unaff_EDI == 0) || (unaff_EDI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_0048f996();
    }
    if (unaff_EDI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EBX + 0x10);
  }
  else {
    if (unaff_EDI != 2) {
      if (unaff_EDI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<void,class_boost::_mfi::mf1<void,class_W88FE58D1::W70330F9B,class_boost::shared_ptr<class_W88FE58D1::WAAAFD539>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W88FE58D1::W70330F9B*>,class_boost::_bi::value<class_boost::shared_ptr<class_W88FE58D1::WAAAFD539>_>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EBX);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<void,class_boost::_mfi::mf1<void,class_W88FE58D1::W70330F9B,class_boost::shared_ptr<class_W88FE58D1::WAAAFD539>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W88FE58D1::W70330F9B*>,class_boost::_bi::value<class_boost::shared_ptr<class_W88FE58D1::WAAAFD539>_>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[4];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



void FUN_00490010(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_c = *param_2;
  local_8 = param_2[1];
  FUN_0091f410(&local_14,&local_c);
  *param_1 = local_14;
  param_1[1] = local_10;
  return;
}



undefined4 * __fastcall FUN_00490043(undefined4 *param_1)

{
  FUN_0044ced6();
  param_1[0x66] = 0;
  param_1[0x65] = 0;
  *param_1 = wxGaugeBase::vftable;
  return param_1;
}



undefined4 __thiscall FUN_00490063(undefined4 param_1_00,byte param_1)

{
  FUN_00970a30();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00490072(void)

{
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0049007f(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00490043();
  *param_1 = wxGauge::vftable;
  FUN_00970870(param_2,0xffffffff,100,&DAT_03238d0c,&DAT_03238d04,0x24,&DAT_032c0398,param_3);
  return param_1;
}



undefined ** FUN_004900cb(void)

{
  return &PTR_PTR_00f1f5b8;
}



undefined * FUN_004900d1(void)

{
  return &DAT_032eec54;
}



undefined4 __thiscall FUN_00490359(undefined4 param_1_00,byte param_1)

{
  FUN_004358b3(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Removing unreachable block (ram,0x00490642)
// WARNING: Removing unreachable block (ram,0x0049064f)
// WARNING: Removing unreachable block (ram,0x00490608)
// WARNING: Removing unreachable block (ram,0x0049061c)
// WARNING: Removing unreachable block (ram,0x00490663)

void FUN_00490419(void)

{
  void *pvVar1;
  int iVar2;
  uint unaff_ESI;
  int *unaff_EDI;
  int iStack_90;
  void *pvStack_24;
  undefined4 local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c37311;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  pvVar1 = operator_new(0x174);
  local_c = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    FUN_0043c211();
    local_c = CONCAT31(local_c._1_3_,1);
    iVar2 = FUN_00445fef();
  }
  local_c = 0xffffffff;
  unaff_EDI[0x8e] = iVar2;
  if (pvVar1 != (void *)0x0) {
    FUN_0040159c();
  }
  pvVar1 = operator_new(0x58);
  local_c = 3;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_00445f46();
  }
  local_c = 0xffffffff;
  unaff_EDI[0x8f] = iVar2;
  pvVar1 = operator_new(0x1a0);
  local_c = 4;
  if (pvVar1 == (void *)0x0) {
    unaff_EDI[0x90] = 0;
    local_c = 0xffffffff;
    FUN_004180b1();
    FUN_00470562();
    local_c = 0xd;
    FUN_00414f38();
    local_c._0_1_ = 0xe;
    FUN_0044c5e0();
    local_c = CONCAT31(local_c._1_3_,0xd);
    FUN_008f7630();
    local_c = 0xffffffff;
    FUN_0083e850();
    (**(code **)(*(int *)unaff_EDI[0x90] + 0x364))();
    (**(code **)(*(int *)unaff_EDI[0x90] + 0x378))();
    FUN_00445d61();
    pvVar1 = operator_new(0x1a0);
    local_14 = (void *)0xf;
    if (pvVar1 == (void *)0x0) {
      unaff_EDI[0x91] = 0;
      if ((unaff_ESI & 0x100) != 0) {
        unaff_ESI = unaff_ESI & 0xfffffeff;
        FUN_0040159c();
      }
      if ((unaff_ESI & 0x80) != 0) {
        unaff_ESI = unaff_ESI & 0xffffff7f;
        FUN_00401829();
      }
      local_14 = (void *)0x14;
      if (((unaff_ESI & 0x40) != 0) && (unaff_ESI = unaff_ESI & 0xffffffbf, iStack_90 != 0)) {
        FUN_0040127a();
      }
      local_14 = (void *)0xffffffff;
      if ((unaff_ESI & 0x20) != 0) {
        FUN_0040159c();
      }
      FUN_004180b1();
      FUN_00470562(&stack0xffffff5c,0);
      local_14 = (void *)0x18;
      FUN_00414f38();
      local_14._0_1_ = 0x19;
      FUN_0044c5e0();
      local_14 = (void *)CONCAT31(local_14._1_3_,0x18);
      FUN_008f7630();
      local_14 = (void *)0xffffffff;
      FUN_0083e850();
      (**(code **)(*(int *)unaff_EDI[0x91] + 0x364))();
      FUN_00445d61();
      FUN_0091c600();
      FUN_00445d61();
      if (*(int *)(unaff_EDI[0x8d] + 0x180) == 1) {
        FUN_00957520();
      }
      (**(code **)(*unaff_EDI + 0x88))();
      ExceptionList = pvStack_24;
      return;
    }
    FUN_0043c211();
    local_14 = (void *)CONCAT31(local_14._1_3_,0x10);
    FUN_00465be3();
    local_14 = (void *)0x11;
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  FUN_0043c211();
  local_c = CONCAT31(local_c._1_3_,5);
  FUN_00465be3();
  local_c = 6;
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



void __thiscall FUN_004909a2(int param_1_00,int param_1)

{
  char cVar1;
  
  cVar1 = FUN_00493dc7(param_1_00 + 0x24c);
  *(char *)(param_1_00 + 0x248) = cVar1;
  if (cVar1 != '\0') {
    *(undefined *)(param_1 + 0x24) = 1;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_00490a31(int param_1_00,undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4,
            undefined4 *param_5)

{
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  if (*(byte *)(param_1_00 + 9) < (byte)param_5) {
    local_8 = 0xffffffff;
    if (param_2 != 0) {
      iStack_24 = 0x490ab7;
      FUN_0040127a();
    }
    return;
  }
  param_5 = &uStack_28;
  uStack_28 = param_1;
  iStack_24 = param_1_00;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_2);
}



void FUN_00490abf(undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    FUN_0040127a();
  }
  return;
}



void __fastcall FUN_00490acf(int param_1)

{
  FUN_0048e9cc(*(undefined4 *)(param_1 + 4),0);
  return;
}



void __thiscall FUN_00490ada(int param_1_00,undefined4 param_1)

{
  FUN_0048ea72(*(undefined4 *)(param_1_00 + 4),param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00490ae9(undefined4 param_1)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



void __thiscall FUN_00490b35(int param_1_00,char param_1)

{
  undefined4 uVar1;
  
  if (param_1 == '\0') {
    uVar1 = 0;
  }
  else {
    uVar1 = 2;
  }
  FUN_0048e754(*(undefined4 *)(param_1_00 + 4),uVar1);
  return;
}



void __thiscall FUN_00490b55(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_0048eb18(*(undefined4 *)(param_1_00 + 4),param_1,param_2);
  *(undefined *)(param_1_00 + 8) = 0;
  return;
}



void __thiscall FUN_00490b70(int param_1_00,undefined4 param_1)

{
  FUN_0048ebc2(*(undefined4 *)(param_1_00 + 4),param_1);
  *(bool *)(param_1_00 + 8) = (char)param_1 == '\0';
  return;
}



void __fastcall FUN_00490b8e(int param_1)

{
  FUN_0048e9cc(*(undefined4 *)(param_1 + 4),1);
  return;
}



void __fastcall FUN_00490b99(int param_1)

{
  FUN_0048ec68(*(undefined4 *)(param_1 + 4),2);
  return;
}



void __thiscall FUN_00490ba4(int param_1_00,char param_1)

{
  undefined4 uVar1;
  
  if (*(char *)(param_1_00 + 8) != '\0') {
    FUN_0048ebc2(*(undefined4 *)(param_1_00 + 4),1);
  }
  if (param_1 == '\0') {
    uVar1 = 3;
  }
  else {
    uVar1 = 1;
  }
  FUN_0048e754(*(undefined4 *)(param_1_00 + 4),uVar1);
  FUN_0048ec68(*(undefined4 *)(param_1_00 + 4),3);
  return;
}



undefined4 * __thiscall FUN_00490be3(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WDE765622::W048D7BA4::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00490c00(undefined4 *param_1)

{
  *param_1 = WDE765622::W048D7BA4::vftable;
  return;
}



undefined4 * __thiscall FUN_00490c07(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WDE765622::W24D6614E::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00490c24(undefined4 param_1)

{
  undefined4 local_30 [2];
  undefined4 uStack_28;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  uStack_28 = 1;
  local_14 = local_30;
  local_8 = 1;
  local_30[0] = param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



void __fastcall FUN_00490cb1(int param_1)

{
  FUN_0048ede8(*(undefined4 *)(param_1 + 4));
  FUN_0048e754(*(undefined4 *)(param_1 + 4),0);
  return;
}



undefined4 __fastcall FUN_00490d61(undefined4 param_1)

{
  byte unaff_retaddr;
  
  FUN_00490f93(param_1);
  if ((unaff_retaddr & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00490d7e(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  iStack_24 = param_1 + 0x18;
  puVar1 = &uStack_28;
  uStack_28 = 0x490d9a;
  FUN_00492ac8();
  local_8 = 0xffffffff;
  puVar1[-1] = param_1;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x490da4;
  FUN_00492ac8();
  *(undefined4 *)((int)puVar2 + -4) = 0x490da9;
  return;
}



undefined ** FUN_00490dac(void)

{
  return &PTR_u_WCE08A331_03247418;
}



undefined ** FUN_00490de4(void)

{
  return &PTR_PTR_00f1f5a4;
}



undefined * FUN_00490dea(void)

{
  return &DAT_032eeca8;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void FUN_00490f93(undefined4 *param_1)

{
  *param_1 = W88FE58D1::WCE08A331::vftable;
  param_1[0x5d] = W88FE58D1::WCE08A331::vftable;
  param_1[0x71] = W88FE58D1::WCE08A331::vftable;
  param_1[0x72] = W88FE58D1::WCE08A331::vftable;
  FUN_00493ee0();
  FUN_00493ee0();
  FUN_005d1159();
  FUN_005d1159();
  FUN_00491013();
  return;
}



undefined * Catch_All_00491003(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 6;
  return &DAT_00491010;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00491013(void)

{
  int unaff_EBP;
  int unaff_EDI;
  
  *(undefined *)(unaff_EBP + -4) = 5;
  FUN_00507e58();
  *(undefined *)(unaff_EBP + -4) = 4;
  FUN_00490d7e(unaff_EDI + 0x26c);
  *(undefined *)(unaff_EBP + -4) = 3;
  if (*(int *)(unaff_EDI + 0x268) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 2;
  if (*(int *)(unaff_EDI + 0x260) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 1;
  if (*(int *)(unaff_EDI + 600) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 0;
  *(undefined ***)(unaff_EDI + 0x24c) = wxObject::vftable;
  FUN_0083e850();
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_009f3c60();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00491093(int param_1,undefined4 param_2,int param_3)

{
  FUN_005d11c9(param_1 + 0x264);
  if (param_3 != 0) {
    FUN_0040127a();
  }
  return;
}



void __fastcall FUN_0049254d(int param_1)

{
  FUN_0091f8e0();
  *(undefined *)(param_1 + 0x29c) = 1;
  return;
}



void __fastcall FUN_00492560(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_009116e0();
  if (iVar1 == param_1) {
    FUN_0091fac0();
    if ((*(char *)(param_1 + 0x29c) != '\0') &&
       ((-(uint)(*(int *)(param_1 + 0x2a0) != 0) & 0x7a491c) != 0)) {
      FUN_004db8a7();
    }
  }
  *(undefined *)(param_1 + 0x29c) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_004925a9(undefined4 param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int local_18c;
  int local_188;
  int *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x164;
  local_8 = 0;
  if (param_2 == 0) {
    if (param_3 != 0) {
      local_188 = param_3;
      local_18 = &local_18c;
      local_18c = param_3;
                    // WARNING: Subroutine does not return
      FUN_0043c023(&param_4);
    }
  }
  else if (param_2 == 2) {
    if (param_3 != 0) {
      local_188 = param_3;
      local_18 = &local_18c;
      local_18c = param_3;
                    // WARNING: Subroutine does not return
      FUN_0043c023(&param_4);
    }
  }
  else if (param_2 == 3) {
    local_188 = 0x4925e4;
    FUN_00493ee0();
    if (param_3 != 0) {
      local_188 = param_3;
      local_18 = &local_18c;
      local_18c = param_3;
                    // WARNING: Subroutine does not return
      FUN_0043c023(&param_4);
    }
  }
  local_188 = 0x492800;
  FUN_0049288c();
  local_188 = 0x49280d;
  iVar1 = FUN_00493e5a();
  local_8 = 0xffffffff;
  if (param_4 != 0) {
    local_188 = 0x492820;
    FUN_0040127a();
  }
  return iVar1 + -1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0049282a(int param_1)

{
  if (*(int *)(param_1 + 0x28) != 0) {
    FUN_0040127a();
  }
  FUN_00401829(1,0);
  return;
}



void FUN_0049285c(char param_1,char param_2)

{
  if (param_1 != '\0') {
    FUN_00493ee0();
  }
  if (param_2 != '\0') {
    FUN_00493ee0();
  }
  FUN_0049288c();
  return;
}



void FUN_0049288c(void)

{
  undefined4 uVar1;
  int unaff_ESI;
  
  uVar1 = FUN_00493e5a();
  FUN_009f3e20(uVar1);
  if (*(int *)(unaff_ESI + 0x138) == 0) {
    (**(code **)(*(int *)(unaff_ESI + 0x174) + 0x54))
              (*(undefined4 *)(unaff_ESI + 0x188),
               *(int *)(unaff_ESI + 0x18c) + *(int *)(unaff_ESI + 0x188));
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004929bd(int param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  iStack_24 = param_1 + 0x10;
  puVar1 = &uStack_28;
  uStack_28 = 0x4929d9;
  FUN_00492aa0();
  local_8 = 0xffffffff;
  puVar1[-1] = param_1;
  puVar1[-2] = 0x4929e3;
  FUN_00464734();
  puVar1[-1] = 0x4929e8;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_00492aa0(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x492ab8;
  FUN_00492b0f();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00492abf;
  FUN_00a3f6a1();
}



undefined4 FUN_004929f0(void)

{
  char cVar1;
  int unaff_EBX;
  int unaff_EDI;
  
  if (unaff_EBX < *(int *)(unaff_EDI + 0x180)) {
    cVar1 = FUN_00492c72(unaff_EBX);
    if (cVar1 == '\0') {
      FUN_009584a0(unaff_EBX);
    }
    else {
      do {
        if (unaff_EBX != *(int *)(unaff_EDI + 0x18c) + -1 + *(int *)(unaff_EDI + 0x188)) break;
        cVar1 = FUN_009584a0(*(int *)(unaff_EDI + 0x188) + 1);
      } while (cVar1 != '\0');
    }
    (**(code **)(*(int *)(unaff_EDI + 0x174) + 0x50))();
  }
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00492a42(undefined4 param_1,undefined **param_2)

{
  undefined4 uVar1;
  
  uVar1 = FUN_009566f0(&param_2,1,100);
  FUN_0043d987(uVar1);
  FUN_0083e850();
  param_2 = wxObject::vftable;
  FUN_0083e850();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00492aa0(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x492ab8;
  FUN_00492b0f();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00492abf;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00492ac8(undefined4 *param_1)

{
  if (param_1[3] != 0) {
    FUN_00492bf9(param_1[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void FUN_00492b0f(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_00492b43(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_00492b43(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_007d4c11(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00448b61();
    FUN_007d4f0e();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_00492bf9(int param_1)

{
  int in_EAX;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 0x2c) {
    FUN_0049282a(in_EAX);
  }
  return;
}



void __thiscall FUN_00492c11(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x15) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



void FUN_00492c51(void)

{
  FUN_00490d61();
  return;
}



void FUN_00492c5c(void)

{
  FUN_00490d61();
  return;
}



void FUN_00492c67(void)

{
  FUN_00490d61();
  return;
}



undefined4 __thiscall FUN_00492c72(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  
  if ((param_1 < *(uint *)(param_1_00 + 0x14)) ||
     (*(int *)(param_1_00 + 0x18) + *(uint *)(param_1_00 + 0x14) <= param_1)) {
    uVar1 = 0;
  }
  else {
    uVar1 = 1;
  }
  return uVar1;
}



void __fastcall FUN_00492ce1(undefined4 *param_1)

{
  *param_1 = W88FE58D1::WAAAFD539::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00492ce8(undefined4 *param_1_00,byte param_1)

{
  if (param_1_00[2] != 0) {
    FUN_0040127a();
  }
  *param_1_00 = W88FE58D1::WAAAFD539::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00492d84(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W88FE58D1::WAAAFD539::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00492da1(void)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *(undefined4 *)(in_EAX + 4);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 8);
}



void __thiscall FUN_00492db5(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x14))(param_1_00);
  return;
}



undefined4 __thiscall FUN_00492e16(undefined4 param_1_00,byte param_1)

{
  FUN_00492eb7();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00492eb7(undefined4 *param_1)

{
  *param_1 = W88FE58D1::WE9B7DA30::vftable;
  FUN_005d1159();
  if (param_1[2] != 0) {
    FUN_0040127a();
  }
  *param_1 = W88FE58D1::WAAAFD539::vftable;
  return;
}



void Catch_All_00492efc(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00492f06(undefined4 param_1)

{
  FUN_00468575(param_1,0);
  return param_1;
}



undefined4 __fastcall FUN_00492fe0(undefined4 param_1)

{
  byte unaff_retaddr;
  
  FUN_004931db(param_1);
  if ((unaff_retaddr & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined ** FUN_00492fff(void)

{
  return &PTR_u_W6D9BAF5A_03247430;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void FUN_004931db(undefined4 *param_1)

{
  *param_1 = W88FE58D1::W6D9BAF5A::vftable;
  param_1[0x5d] = W88FE58D1::W6D9BAF5A::vftable;
  param_1[0x71] = W88FE58D1::W6D9BAF5A::vftable;
  param_1[0x72] = W88FE58D1::W6D9BAF5A::vftable;
  FUN_004932b9(param_1);
  FUN_00493235();
  return;
}



undefined * Catch_All_00493225(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 7;
  return &DAT_00493232;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00493235(void)

{
  int unaff_EBP;
  int unaff_EDI;
  
  FUN_007a7d86();
  *(undefined *)(unaff_EBP + -4) = 5;
  FUN_0044237a(unaff_EDI + 0x2c8);
  *(undefined *)(unaff_EBP + -4) = 4;
  FUN_0044237a(unaff_EDI + 0x2b0);
  *(undefined *)(unaff_EBP + -4) = 3;
  FUN_0044237a(unaff_EDI + 0x298);
  *(undefined *)(unaff_EBP + -4) = 2;
  FUN_004636a8();
  *(undefined *)(unaff_EBP + -4) = 1;
  *(undefined ***)(unaff_EDI + 0x254) = wxObject::vftable;
  FUN_0083e850();
  *(undefined *)(unaff_EBP + -4) = 0;
  *(undefined ***)(unaff_EDI + 0x24c) = wxObject::vftable;
  FUN_0083e850();
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_009f3c60();
  return;
}



void FUN_004932b9(void)

{
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_004a65f7(&local_10,local_10,local_c,local_18,local_14);
  FUN_0046ae17();
  FUN_0046ae17();
  FUN_0041c0c6();
  return;
}



void __thiscall FUN_004933e0(int param_1_00,int *param_1)

{
  int iVar1;
  
  (**(code **)(*(int *)param_1[2] + 0x58))(param_1_00 + 0x24c);
  iVar1 = param_1[3] + -1 + param_1[1];
  (**(code **)(*(int *)param_1[2] + 0x140))(*param_1,iVar1,param_1[2] + *param_1,iVar1);
  return;
}



undefined FUN_00493dc7(undefined4 *param_1)

{
  int in_EAX;
  int iVar1;
  undefined4 *puVar2;
  undefined uVar3;
  
  iVar1 = FUN_00474d73();
  if ((iVar1 < 0) || (*(int *)(in_EAX + 0x2f0) - *(int *)(in_EAX + 0x2ec) >> 2 <= iVar1)) {
    uVar3 = 0;
  }
  else {
    uVar3 = 1;
    puVar2 = (undefined4 *)FUN_0041b02a();
    *param_1 = *puVar2;
  }
  return uVar3;
}



void FUN_00493e0d(void)

{
  FUN_00492fe0();
  return;
}



void FUN_00493e18(void)

{
  FUN_00492fe0();
  return;
}



void FUN_00493e23(void)

{
  FUN_00492fe0();
  return;
}



int __fastcall FUN_00493e5a(int param_1)

{
  return (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x2c +
         (*(int *)(param_1 + 0x28) - *(int *)(param_1 + 0x24)) / 0x2c;
}



void FUN_00493e79(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  undefined4 uVar2;
  uint uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (*(int *)(in_EAX + 0x14) - iVar1) / 0x2c;
  }
  if ((uint)((*(int *)(in_EAX + 0x10) - iVar1) / 0x2c) < uVar3) {
    uVar2 = FUN_00493ffe(*(int *)(in_EAX + 0x10),1,param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar2;
  }
  else {
    FUN_0046e65a();
    FUN_00493f4f(&local_10,param_1,local_10,local_c);
  }
  return;
}



void FUN_00493ee0(void)

{
  int in_EAX;
  undefined4 uVar1;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  if ((local_c == 0) || (local_c != local_14)) {
    FUN_00a3fb10();
  }
  if (local_8 != local_10) {
    uVar1 = FUN_00494316(*(undefined4 *)(in_EAX + 0x10),local_8);
    FUN_00492bf9(*(undefined4 *)(in_EAX + 0x10));
    *(undefined4 *)(in_EAX + 0x10) = uVar1;
  }
  return;
}



void FUN_00493f4f(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int in_EAX;
  int iVar1;
  int *piVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc)) / 0x2c == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = (param_4 - local_8) / 0x2c;
  }
  FUN_0049402e(param_2,param_3,param_4);
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar1 = 0;
  }
  else {
    iVar1 = *local_14;
  }
  piVar2 = (int *)(local_10 + local_8 * 0x2c);
  if (piVar2 <= *(int **)(iVar1 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *local_14;
    }
    if (*(int **)(iVar1 + 0xc) <= piVar2) goto LAB_00493fef;
  }
  FUN_00a3fb10();
LAB_00493fef:
  param_1[1] = piVar2;
  *param_1 = local_14;
  return;
}



int FUN_00493ffe(int param_1,int param_2,undefined4 param_3)

{
  FUN_0049437e(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x2c + param_1;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __thiscall FUN_0049402e(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined *puVar5;
  int iVar6;
  int extraout_ECX;
  uint uVar7;
  undefined auStack_70 [44];
  undefined auStack_44 [60];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x70;
  local_8 = 0x49403a;
  iVar6 = *(int *)(param_1_00 + 0xc);
  if (iVar6 == 0) {
    uVar7 = 0;
  }
  else {
    uVar7 = (*(int *)(param_1_00 + 0x14) - iVar6) / 0x2c;
  }
  iVar3 = *(int *)(param_1_00 + 0x10);
  iVar2 = (iVar3 - iVar6) / 0x2c;
  iVar6 = 0x5d1745d;
  if (iVar2 == 0x5d1745d) {
    iVar2 = FUN_004423c1();
    iVar6 = extraout_ECX;
  }
  uVar1 = iVar2 + 1;
  if (uVar7 < uVar1) {
    if (iVar6 - (uVar7 >> 1) < uVar7) {
      uVar7 = 0;
    }
    else {
      uVar7 = uVar7 + (uVar7 >> 1);
    }
    if (uVar7 < uVar1) {
      uVar7 = uVar1;
    }
    iVar6 = FUN_0049429f();
    iVar3 = (param_3 - *(int *)(param_1_00 + 0xc)) / 0x2c;
    local_8 = 0;
    FUN_00493ffe(iVar3 * 0x2c + iVar6,1,param_1);
    FUN_0049435a(param_3,iVar6);
    FUN_0049435a(*(undefined4 *)(param_1_00 + 0x10),(iVar3 + 1) * 0x2c + iVar6);
    local_8 = 0xffffffff;
    if (*(int *)(param_1_00 + 0xc) != 0) {
      FUN_00492bf9(*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
    }
    *(uint *)(param_1_00 + 0x14) = uVar7 * 0x2c + iVar6;
    *(int *)(param_1_00 + 0x10) =
         ((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x2c + 1) * 0x2c + iVar6;
    *(int *)(param_1_00 + 0xc) = iVar6;
  }
  else {
    if ((iVar3 - param_3) / 0x2c == 0) {
      FUN_004942e9();
      local_8 = 2;
      FUN_0049435a(*(undefined4 *)(param_1_00 + 0x10),param_3 + 0x2c);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_00493ffe(*(int *)(param_1_00 + 0x10),1 - (*(int *)(param_1_00 + 0x10) - param_3) / 0x2c,
                   auStack_44);
      local_8 = 2;
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 0x2c;
      iVar6 = *(int *)(param_1_00 + 0x10);
      for (; param_3 != iVar6 + -0x2c; param_3 = param_3 + 0x2c) {
        FUN_004943d0();
      }
      puVar5 = auStack_44;
    }
    else {
      FUN_004942e9();
      local_8 = 5;
      iVar6 = *(int *)(param_1_00 + 0x10);
      uVar4 = FUN_0049435a(iVar6,iVar6);
      *(undefined4 *)(param_1_00 + 0x10) = uVar4;
      while (iVar6 = iVar6 + -0x2c, param_3 != iVar6) {
        FUN_004943d0();
      }
      iVar6 = param_3 + 0x2c;
      if (param_3 != iVar6) {
        do {
          FUN_004943d0();
          param_3 = param_3 + 0x2c;
        } while (param_3 != iVar6);
      }
      puVar5 = auStack_70;
    }
    local_8 = 0xffffffff;
    FUN_0049282a(puVar5);
  }
  FUN_00a4220a();
  return;
}



void Catch_All_00494147(void)

{
  int unaff_EBP;
  
  if (1 < *(int *)(unaff_EBP + -0x7c)) {
    FUN_00492bf9(*(int *)(unaff_EBP + -0x70) * 0x2c + *(int *)(unaff_EBP + -0x78));
  }
  if (0 < *(int *)(unaff_EBP + -0x7c)) {
    FUN_00492bf9((*(int *)(unaff_EBP + -0x70) + 1) * 0x2c + *(int *)(unaff_EBP + -0x78));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x78));
}



void FUN_00494188(void)

{
  undefined4 uVar1;
  int unaff_EBP;
  int unaff_ESI;
  int iVar2;
  int iVar3;
  int unaff_EDI;
  int iVar4;
  
  __CxxThrowException_8();
  if ((unaff_ESI - *(int *)(unaff_EBP + 0x10)) / 0x2c == 0) {
    FUN_004942e9();
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_0049435a();
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_00493ffe(*(undefined4 *)(unaff_EDI + 0x10));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_EDI + 0x10) = *(int *)(unaff_EDI + 0x10) + 0x2c;
    iVar4 = *(int *)(unaff_EDI + 0x10);
    for (iVar2 = *(int *)(unaff_EBP + 0x10); iVar2 != iVar4 + -0x2c; iVar2 = iVar2 + 0x2c) {
      FUN_004943d0();
    }
  }
  else {
    FUN_004942e9();
    *(undefined4 *)(unaff_EBP + -4) = 5;
    iVar2 = *(int *)(unaff_EDI + 0x10);
    iVar4 = iVar2 + -0x2c;
    uVar1 = FUN_0049435a();
    *(undefined4 *)(unaff_EDI + 0x10) = uVar1;
    iVar3 = *(int *)(unaff_EBP + 0x10);
    *(int *)(unaff_EBP + -0x70) = iVar3;
    if (iVar3 != iVar4) {
      *(int *)(unaff_EBP + -0x74) = iVar2;
      *(int *)(unaff_EBP + -0x74) = *(int *)(unaff_EBP + -0x74) - iVar4;
      do {
        iVar4 = iVar4 + -0x2c;
        FUN_004943d0();
      } while (iVar4 != *(int *)(unaff_EBP + -0x70));
      iVar3 = *(int *)(unaff_EBP + 0x10);
    }
    iVar4 = iVar3 + 0x2c;
    for (; iVar3 != iVar4; iVar3 = iVar3 + 0x2c) {
      FUN_004943d0();
    }
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_0049282a();
  FUN_00a4220a();
  return;
}



void Catch_All_0049420b(void)

{
  int unaff_EBP;
  
  FUN_00492bf9(*(int *)(*(int *)(unaff_EBP + -0x70) + 0x10) + 0x2c);
  FUN_00494188(0);
  return;
}



void __fastcall FUN_0049429f(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 0x2c) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 * 0x2c);
  return;
}



void FUN_004942e9(void)

{
  int in_EAX;
  int unaff_ESI;
  
  basic_string<>(in_EAX);
  *(undefined4 *)(unaff_ESI + 0x1c) = *(undefined4 *)(in_EAX + 0x1c);
  *(undefined4 *)(unaff_ESI + 0x20) = *(undefined4 *)(in_EAX + 0x20);
  *(undefined4 *)(unaff_ESI + 0x24) = *(undefined4 *)(in_EAX + 0x24);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0x28);
}



int FUN_00494316(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = param_1 - in_EAX;
  if (in_EAX != param_1) {
    do {
      FUN_004943d0();
      in_EAX = in_EAX + 0x2c;
    } while (in_EAX != param_1);
  }
  return (iVar1 / 0x2c) * 0x2c + param_2;
}



void FUN_0049435a(undefined4 param_1,undefined4 param_2)

{
  FUN_00494423(param_1,param_2,param_2,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0049437e(undefined4 param_1,int param_2,undefined4 param_3)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    FUN_004943f7(param_3);
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_004943ae(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 8); iVar1 = iVar1 + 0x2c)
  {
    FUN_0049282a(iVar1);
  }
  __CxxThrowException_8(0,0);
  return;
}



void FUN_004943d0(void)

{
  int unaff_ESI;
  int unaff_EDI;
  
  FID_conflict_assign(unaff_EDI,0,0xffffffff);
  *(undefined4 *)(unaff_ESI + 0x1c) = *(undefined4 *)(unaff_EDI + 0x1c);
  *(undefined4 *)(unaff_ESI + 0x20) = *(undefined4 *)(unaff_EDI + 0x20);
  FUN_005d11c9(unaff_ESI + 0x24);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_004943f7(int param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c29771;
  if (param_1 != 0) {
    puVar1 = (undefined *)FUN_004942e9();
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00494423(int param_1_00,int param_1,int param_2)

{
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0x2c) {
    FUN_004943f7(param_1_00);
    param_2 = param_2 + 0x2c;
  }
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 Catch_All_00494452(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0xc); iVar1 = iVar1 + 0x2c
      ) {
    FUN_0049282a(iVar1);
  }
  __CxxThrowException_8(0,0);
  return *(undefined4 *)(unaff_EBP + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004944e0(undefined4 *param_1,undefined4 *param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  
  pvVar1 = operator_new(0x1c);
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    param_2 = (undefined4 *)0x0;
    uVar2 = FUN_00496ef9();
  }
  *param_1 = uVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00494f23();
  uVar2 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar2;
  if (pvVar1 != (void *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  if (param_2 != (undefined4 *)0x0) {
    (**(code **)*param_2)();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0049457f(undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = W3CA43D38::W3B9AB33A::vftable;
    FUN_0043d406(param_2);
  }
  *param_1 = puVar1;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004945cd(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = W3CA43D38::W66F14F78::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  local_8._0_1_ = 3;
  local_8._1_3_ = 0;
  FUN_00672a11();
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  local_8._0_1_ = 5;
  FUN_004975f3();
  local_8._0_1_ = 6;
  puVar1 = (undefined4 *)FUN_004944e0(local_20);
  local_8 = CONCAT31(local_8._1_3_,7);
  local_18 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



undefined4 __thiscall FUN_00494695(undefined4 param_1_00,byte param_1)

{
  FUN_004946b1();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x004946e9)

void __fastcall FUN_004946b1(undefined4 *param_1)

{
  *param_1 = W3CA43D38::W66F14F78::vftable;
  FUN_0046f668();
  FUN_0043dd40();
  if (param_1[0xd] != 0) {
    FUN_0040127a();
  }
  FUN_00507e58();
  FUN_00417fe6();
  *param_1 = W14E3BFCC::WFD9FAB68::vftable;
  return;
}



undefined * Catch_All_0049472d(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 4;
  return &DAT_0049473a;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0049473f(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x49474b;
  local_14 = 0;
  puVar2 = (undefined4 *)FUN_0049457f(&local_18,param_1_00 + 4);
  uVar1 = *puVar2;
  *puVar2 = 0;
  *param_1 = uVar1;
  local_8 = 0;
  local_14 = 1;
  if (local_18 != (undefined4 *)0x0) {
    (**(code **)*local_18)(1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x004949ca)

void FUN_00494788(undefined *param_1,undefined4 param_2)

{
  int iVar1;
  undefined local_184 [9];
  undefined local_17b [51];
  int local_148 [2];
  int aiStack_140 [35];
  undefined4 local_b4;
  undefined *local_b0;
  int local_ac;
  int local_a8;
  undefined4 *local_a4;
  undefined4 local_a0;
  void *pvStack_94;
  undefined4 local_8c;
  undefined4 local_88 [30];
  int local_10;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_88;
  local_88[0] = 0xf0;
  local_8c = 0x4947af;
  local_b0 = param_1;
  local_b4 = 0;
  FUN_00494cc4(param_2);
  local_8c = 1;
  if (local_10 == 0) {
    *param_1 = 0;
  }
  else {
    FUN_0043e743(local_148);
    local_8c._0_1_ = 2;
    iVar1 = *(int *)(local_148[0] + 4);
    *(undefined4 *)((int)aiStack_140 + iVar1 + 4) = 0;
    FUN_00417a55(*(undefined4 *)((int)aiStack_140 + iVar1),0);
    FUN_0043e7ac();
    local_a0 = 0;
    local_8c._0_1_ = 3;
    if (*(int *)((int)aiStack_140 + *(int *)(local_148[0] + 4)) == 0) {
      FUN_004976cd(local_88);
      local_8c._0_1_ = 4;
      FUN_0043da9b(local_184,local_148);
      local_8c = CONCAT31(local_8c._1_3_,6);
      if (*(uint *)(local_ac + 0x88) < 0x10) {
        local_a8 = local_ac + 0x74;
      }
      else {
        local_a8 = *(int *)(local_ac + 0x74);
      }
      local_a4 = local_88;
      FUN_00494e35(local_17b);
      local_8c = 5;
      FUN_004948af();
      return;
    }
    *local_b0 = 0;
    local_a0 = 0;
    local_b4 = 1;
    local_8c = CONCAT31(local_8c._1_3_,1);
    FUN_0043e1a3();
  }
  FUN_00401829(1,0);
  ExceptionList = pvStack_94;
  ___security_check_cookie_4();
  return;
}



undefined * Catch_All_00494895(void)

{
  int unaff_EBP;
  
  FUN_00b92c80();
  *(undefined4 *)(unaff_EBP + -4) = 5;
  return &DAT_004948aa;
}



void FUN_004948af(void)

{
  int *piVar1;
  int iVar2;
  char *pcVar3;
  char cVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  char cVar7;
  undefined4 *unaff_EBX;
  int unaff_EBP;
  
  puVar5 = (undefined4 *)FUN_004976fa(unaff_EBP);
  *puVar5 = unaff_EBX;
  FUN_0040c727();
  if (*(undefined4 **)(unaff_EBP + -0x1c) != unaff_EBX) {
    (**(code **)**(undefined4 **)(unaff_EBP + -0x1c))();
  }
  *(bool *)(unaff_EBP + -0x11) = *(undefined4 **)(unaff_EBP + -0x18) != unaff_EBX;
  *(undefined *)(unaff_EBP + -4) = 4;
  FUN_0043dad2();
  *(undefined *)(unaff_EBP + -4) = 3;
  FUN_0043dd40();
  FUN_00b92d80();
  cVar7 = (char)unaff_EBX;
  if (*(char *)(unaff_EBP + -0x11) != cVar7) {
    piVar1 = *(int **)(*(int *)(unaff_EBP + -0x24) + 0x30);
    *(undefined **)(unaff_EBP + -0x1c) = &stack0xfffffffc;
    iVar2 = *piVar1;
    *(undefined4 **)(unaff_EBP + -0x18) = unaff_EBX;
    puVar6 = (undefined4 *)(**(code **)(iVar2 + 8))(unaff_EBP + -0x1c);
    puVar5 = (undefined4 *)*puVar6;
    *puVar6 = unaff_EBX;
    *(undefined4 **)(unaff_EBP + -0x24) = puVar5;
    *(undefined *)(unaff_EBP + -4) = 8;
    if (*(undefined4 **)(unaff_EBP + -0x1c) != unaff_EBX) {
      (**(code **)**(undefined4 **)(unaff_EBP + -0x1c))();
    }
    if ((puVar5 == unaff_EBX) || (puVar5[2] != 8)) {
LAB_0049495f:
      *(char *)(unaff_EBP + -0x11) = cVar7;
    }
    else {
      cVar4 = FUN_00bb6580(unaff_EBP + -0x34);
      *(undefined *)(unaff_EBP + -0x11) = 1;
      if (cVar4 == '\0') goto LAB_0049495f;
    }
    *(undefined *)(unaff_EBP + -4) = 3;
    if (puVar5 != unaff_EBX) {
      (**(code **)*puVar5)();
    }
    if (*(char *)(unaff_EBP + -0x11) != cVar7) {
      pcVar3 = *(char **)(unaff_EBP + -0x28);
      *pcVar3 = cVar7;
      if ((undefined4 *)(pcVar3 + 8) != unaff_EBX) {
        *(undefined4 *)(pcVar3 + 8) = *(undefined4 *)(unaff_EBP + -0x34);
        *(undefined4 *)(pcVar3 + 0xc) = *(undefined4 *)(unaff_EBP + -0x30);
      }
      *pcVar3 = '\x01';
      *(undefined4 *)(unaff_EBP + -0x2c) = 1;
      *(undefined *)(unaff_EBP + -4) = 1;
      FUN_0043e1a3();
      FUN_00401829(1);
      goto LAB_004949ea;
    }
  }
  *(undefined *)(unaff_EBP + -4) = 2;
  puVar5 = *(undefined4 **)(unaff_EBP + -0x18);
  **(char **)(unaff_EBP + -0x28) = cVar7;
  *(undefined4 *)(unaff_EBP + -0x2c) = 1;
  if (puVar5 != unaff_EBX) {
    (**(code **)*puVar5)();
  }
  *(undefined *)(unaff_EBP + -4) = 1;
  FUN_0043e1a3();
  FUN_00401829(1);
LAB_004949ea:
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  ___security_check_cookie_4();
  return;
}



void FUN_00494a0f(void)

{
  FUN_0043dd40();
  FUN_00b92d80();
  return;
}



void __thiscall
FUN_00494a20(int param_1_00,undefined4 ******param_1,undefined4 param_2,undefined4 ******param_3)

{
  undefined4 ***pppuVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined4 *******local_190;
  uint uStack_18c;
  undefined auStack_17c [3];
  char local_179;
  undefined4 *local_178;
  undefined4 *******local_174;
  undefined4 *****pppppuStack_170;
  undefined4 *local_16c;
  undefined4 *local_168;
  undefined **ppuStack_164;
  undefined4 *****apppppuStack_15b [10];
  undefined4 *****local_130 [2];
  undefined4 auStack_128 [18];
  int local_e0;
  undefined4 *******local_a0 [4];
  int local_90;
  uint local_8c;
  undefined4 *****apppppuStack_88 [27];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c370e3;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_17c;
  uStack_18c = DAT_0323f878 ^ (uint)&stack0xfffffe78;
  ExceptionList = &local_14;
  local_190 = (undefined4 *******)param_1;
  FUN_00494cc4();
  local_c = 0;
  if (local_90 != 0) {
    local_190 = (undefined4 *******)local_130;
    FUN_00494d84();
    local_c = CONCAT31(local_c._1_3_,1);
    pppuVar1 = local_130[0][1];
    local_190 = (undefined4 *******)0x0;
    *(undefined4 *)((int)auStack_128 + (int)(pppuVar1 + 1)) = 0;
    FUN_00417a55(*(undefined4 *)((int)auStack_128 + (int)pppuVar1));
    if (local_8c < 8) {
      local_a0[0] = local_a0;
    }
    local_190 = local_a0[0];
    FUN_00494e0b();
    local_179 = local_e0 != 0;
    if (!(bool)local_179) {
      local_190 = (undefined4 *******)0x19e7636d;
      FUN_00b940e0();
    }
    local_178 = (undefined4 *)0x0;
    local_c._0_1_ = 2;
    if (local_179 != '\0') {
      local_190 = (undefined4 *******)param_3;
      piVar2 = *(int **)(param_1_00 + 0x30);
      puVar3 = (undefined4 *)FUN_00bb6010(&local_168,param_2);
      local_c = CONCAT31(local_c._1_3_,3);
      local_190 = (undefined4 *******)*puVar3;
      *puVar3 = 0;
      local_174 = &local_190;
      puVar3 = (undefined4 *)(**(code **)(*piVar2 + 4))(&local_16c);
      local_190 = (undefined4 *******)*puVar3;
      *puVar3 = 0;
      FUN_0040c727();
      if (local_16c != (undefined4 *)0x0) {
        local_190 = (undefined4 *******)0x1;
        (**(code **)*local_16c)();
      }
      local_c._0_1_ = 2;
      if (local_168 != (undefined4 *)0x0) {
        local_190 = (undefined4 *******)0x1;
        (**(code **)*local_168)();
      }
      local_179 = local_178 != (undefined4 *)0x0;
      if ((bool)local_179) {
        local_190 = (undefined4 *******)apppppuStack_88;
        FUN_004976cd();
        local_c._0_1_ = 4;
        local_190 = (undefined4 *******)0x494bfb;
        FUN_00b92cd0();
        local_190 = (undefined4 *******)0x0;
        FUN_0082e0c0(local_130);
        ppuStack_164 = boost::archive::xml_oarchive::vftable;
        local_c._0_1_ = 5;
        if (*(uint *)(param_1_00 + 0x88) < 0x10) {
          local_174 = (undefined4 *******)(param_1_00 + 0x74);
        }
        else {
          local_174 = *(undefined4 ********)(param_1_00 + 0x74);
        }
        pppppuStack_170 = apppppuStack_88;
        local_190 = (undefined4 *******)apppppuStack_15b;
        FUN_00494eac();
        local_c._0_1_ = 4;
        ppuStack_164 = boost::archive::xml_oarchive::vftable;
        local_190 = (undefined4 *******)0x494c5f;
        FUN_0043e647();
        local_c._0_1_ = 2;
        local_190 = (undefined4 *******)0x494c73;
        FUN_0043dd40();
        local_190 = (undefined4 *******)0x494c7f;
        FUN_00b92d80();
      }
      else {
        local_190 = (undefined4 *******)0xe5edde55;
        FUN_00b940e0();
      }
    }
    if (local_e0 != 0) {
      local_190 = (undefined4 *******)0x494c92;
      FUN_00494ded();
    }
    local_c._0_1_ = 1;
    if (local_178 != (undefined4 *)0x0) {
      local_190 = (undefined4 *******)0x1;
      (**(code **)*local_178)();
    }
    local_c = (uint)local_c._1_3_ << 8;
    local_190 = (undefined4 *******)0x494cbb;
    FUN_0043e360();
  }
  local_190 = (undefined4 *******)0x0;
  FUN_00401829(1);
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00494cc4(int param_1_00,undefined4 param_1)

{
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_ESI;
  
  if ((-(uint)(*(int *)(param_1_00 + 0x10) != 0) & 0x7a491c) == 0) {
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_ESI)
    ;
  }
  else {
    FUN_00494cf4(unaff_ESI,param_1);
  }
  return;
}



undefined4 __thiscall FUN_00494cf4(uint *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  uint uVar2;
  uint *extraout_ECX;
  undefined4 local_60;
  undefined local_5c [72];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c27a73;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar2 = *param_1_00;
  local_60 = 0;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a(DAT_0323f878 ^ (uint)&local_60);
    local_c = 0;
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  uVar1 = (**(code **)((uVar2 & 0xfffffffe) + 4))(local_5c,param_1_00 + 2,param_2);
  local_c = 1;
  basic_string<>(uVar1);
  FUN_00401829(1,0);
  ExceptionList = local_14;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_00494d84(int *param_1)

{
  *param_1 = (int)&PTR_00fad658;
  param_1[0x15] = (int)std::basic_ios<char,struct_std::char_traits<char>_>::vftable;
  basic_ostream<>(param_1 + 1,0,0);
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 4)) =
       std::basic_ofstream<char,struct_std::char_traits<char>_>::vftable;
  std::basic_filebuf<char,struct_std::char_traits<char>_>::
  basic_filebuf<char,struct_std::char_traits<char>_>
            ((basic_filebuf<char,struct_std::char_traits<char>_> *)(param_1 + 1),(_iobuf *)0x0);
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 4)) =
       boost::filesystem::basic_ofstream<char,struct_std::char_traits<char>_>::vftable;
  return param_1;
}



void FUN_00494ded(void)

{
  basic_filebuf<char,struct_std::char_traits<char>_> *pbVar1;
  int unaff_ESI;
  
  pbVar1 = std::basic_filebuf<char,struct_std::char_traits<char>_>::close
                     ((basic_filebuf<char,struct_std::char_traits<char>_> *)(unaff_ESI + 4));
  if (pbVar1 == (basic_filebuf<char,struct_std::char_traits<char>_> *)0x0) {
    FUN_004259e0(2,0);
  }
  return;
}



void FUN_00494e0b(undefined4 param_1)

{
  uint in_EAX;
  int iVar1;
  
  iVar1 = FUN_0043f313(param_1,in_EAX | 2);
  if (iVar1 == 0) {
    FUN_004259e0(2,0);
  }
  return;
}



int FUN_00494e35(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_00494eac(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00494f23(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3CA43D38::W4397BD51>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00494f69(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::WB891841E> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::WB891841E> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>
::get_const_instance(void)

{
                    // 0x94f80  622
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWB891841E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VWB891841E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c740de);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_00494f85(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WB891841E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WB891841E> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>
::get_instance(void)

{
                    // 0x94fa7  942
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWB891841E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VWB891841E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c740de);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_00494ff4(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef740 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::WB891841E>::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::WB891841E>(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>::
oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>
          (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E> *this)

{
  extended_type_info_typeid<class_W3CA43D38::WB891841E> *peVar1;
  
                    // 0x9501d  80
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VWB891841E@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::WB891841E>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::WB891841E>
// >::get_const_instance(void)

extended_type_info_typeid<class_W3CA43D38::WB891841E> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>::
get_const_instance(void)

{
                    // 0x95037  454
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VWB891841E@W3CA43D38@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VWB891841E@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_0049509d();
    _atexit((_func_4879 *)&LAB_00c740f9);
  }
  return (extended_type_info_typeid<class_W3CA43D38::WB891841E> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_0049503c(int param_1)

{
  if (param_1 != 0) {
    FUN_0043dd40();
    FUN_00b92d80();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::WB891841E>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::WB891841E> >::get_instance(void)

extended_type_info_typeid<class_W3CA43D38::WB891841E> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>::
get_instance(void)

{
                    // 0x95061  774
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VWB891841E@W3CA43D38@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VWB891841E@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_0049509d();
    _atexit((_func_4879 *)&LAB_00c740f9);
  }
  return (extended_type_info_typeid<class_W3CA43D38::WB891841E> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>
* FUN_0049509d(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>::vftable;
  FUN_00830c60(&W3CA43D38::WB891841E::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_004950ed(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WB891841E>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E> *this,
                basic_oarchive *param_1,void *param_2)

{
  int iVar1;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB891841E> *local_8;
  
                    // 0x9512e  1690
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VWB891841E@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  if (*(uint *)((int)param_2 + 0x44) < 0x10) {
    iVar1 = (int)param_2 + 0x30;
  }
  else {
    iVar1 = *(int *)((int)param_2 + 0x30);
  }
  FUN_0082dd50(iVar1);
  FUN_00495301(param_2);
  FUN_0082de20(iVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::WB891841E> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::WB891841E> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::WB891841E> *peVar1;
  
                    // 0x951a5  542
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWB891841E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VWB891841E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7410f);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_004951aa(undefined4 *param_1)

{
  *param_1 = 0;
  return;
}



undefined4 * __thiscall FUN_004951b4(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WB891841E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WB891841E> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::WB891841E> *peVar1;
  
                    // 0x951d6  862
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWB891841E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VWB891841E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB891841E>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7410f);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_00495226(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef742 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WB891841E>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB891841E> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x9524f  1574
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VWB891841E@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  if (param_1 == (basic_iarchive *)0xfffffff7) {
    param_1 = (basic_iarchive *)0x0;
  }
  FUN_0049528a(param_1 + 9);
  return;
}



int FUN_0049528a(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_00495301(undefined4 param_1)

{
  oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> *poVar1;
  
  poVar1 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>
           ::get_instance();
  FUN_00830550(param_1,poVar1);
  return;
}



undefined4 * __thiscall FUN_00495323(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class common::WB943A9F0> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class common::WB943A9F0> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>
::get_instance(void)

{
                    // 0x95345  943
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>::
    oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>
              ((oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7412a);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_0049538f(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef743 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// common::WB943A9F0>::oserializer<class boost::archive::xml_oarchive,class common::WB943A9F0>(void)

oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>::
oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>
          (oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> *this)

{
  extended_type_info_typeid<class_common::WB943A9F0> *peVar1;
  
                    // 0x953b8  81
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class common::WB943A9F0>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class common::WB943A9F0>
// >::get_const_instance(void)

extended_type_info_typeid<class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>::
get_const_instance(void)

{
                    // 0x953d2  455
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VWB943A9F0@common@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VWB943A9F0@common@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_00495413();
    _atexit((_func_4879 *)&LAB_00c74145);
  }
  return (extended_type_info_typeid<class_common::WB943A9F0> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class common::WB943A9F0> &
// __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class common::WB943A9F0> >::get_instance(void)

extended_type_info_typeid<class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>::
get_instance(void)

{
                    // 0x953d7  775
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VWB943A9F0@common@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VWB943A9F0@common@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_00495413();
    _atexit((_func_4879 *)&LAB_00c74145);
  }
  return (extended_type_info_typeid<class_common::WB943A9F0> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_> *
FUN_00495413(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>::vftable;
  FUN_00830c60(&common::WB943A9F0::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_00495463(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class common::WB943A9F0>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> *this,
                basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> *local_8;
  
                    // 0x954a4  1691
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_0049556d();
  return;
}



undefined4 * __thiscall FUN_004954c2(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class common::WB943A9F0> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class common::WB943A9F0> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>
::get_instance(void)

{
  extended_type_info_typeid<class_common::WB943A9F0> *peVar1;
  
                    // 0x954e4  863
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7415b);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_00495534(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef745 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class common::WB943A9F0>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x9555d  1575
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_00495739(param_2);
  return;
}



void FUN_0049556d(void)

{
  int *piVar1;
  int in_EAX;
  int iVar2;
  int unaff_EBX;
  char local_19;
  char *local_18;
  int *local_14;
  undefined *local_10;
  char **local_c;
  
  piVar1 = (int *)(unaff_EBX + 8);
  local_18 = "size";
  iVar2 = in_EAX;
  if (in_EAX == -9) {
    iVar2 = 0;
  }
  local_14 = piVar1;
  FUN_0049567d(iVar2 + 9);
  if ((*piVar1 == 0) || (local_19 = '\x01', *(int *)(unaff_EBX + 4) == 0)) {
    local_19 = '\0';
  }
  local_14 = (int *)&local_19;
  local_18 = "defined";
  iVar2 = 0;
  if (in_EAX != -9) {
    iVar2 = in_EAX;
  }
  FUN_004956db(iVar2 + 9);
  if (local_19 != '\0') {
    local_18 = *(char **)(unaff_EBX + 4);
    local_14 = (int *)*piVar1;
    local_c = &local_18;
    local_10 = &DAT_00fb8b30;
    FUN_0049560f();
  }
  return;
}



int __fastcall FUN_0049560f(undefined4 *param_1)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_0082dd50(*param_1);
  FUN_00495df5(*(undefined4 *)param_1[1],((undefined4 *)param_1[1])[1]);
  FUN_0082de20(*param_1);
  if (iVar1 == -9) {
    iVar1 = 0;
  }
  return iVar1;
}



int FUN_0049567d(int param_1)

{
  undefined4 *in_EAX;
  
  FUN_0082dd50(*in_EAX);
  FUN_00495874(in_EAX[1]);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_004956db(int param_1)

{
  undefined4 *in_EAX;
  
  FUN_0082dd50(*in_EAX);
  FUN_0049589a(in_EAX[1]);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_00495739(int param_1)

{
  char local_38 [8];
  undefined4 local_30;
  char **ppcStack_2c;
  char local_1d;
  undefined local_1c [4];
  char *local_18;
  char *local_14;
  undefined *local_10;
  char **local_c;
  
  local_14 = local_1c;
  ppcStack_2c = &local_18;
  local_18 = "size";
  local_30 = 0x495765;
  FUN_004957e5();
  ppcStack_2c = (char **)0x0;
  local_18 = local_38;
  local_30 = 0;
  local_38[0] = '\0';
  FUN_00b92dc0();
  local_14 = &local_1d;
  local_18 = "defined";
  ppcStack_2c = (char **)0x4957aa;
  FUN_00495923();
  if (local_1d != '\0') {
    local_18 = *(char **)(param_1 + 4);
    local_14 = *(char **)(param_1 + 8);
    local_c = &local_18;
    local_10 = &DAT_00fb8b30;
    ppcStack_2c = (char **)0x4957dd;
    FUN_00495803();
  }
  return;
}



void FUN_004957e5(void)

{
  FUN_004958c4();
  return;
}



int __fastcall FUN_00495803(undefined4 *param_1)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_0082ace0(*param_1);
  FUN_00833a20(*(undefined4 *)param_1[1],((undefined4 *)param_1[1])[1]);
  FUN_0082af90(*param_1);
  if (iVar1 == -9) {
    iVar1 = 0;
  }
  return iVar1;
}



void FUN_00495874(undefined4 param_1)

{
  FUN_0082d4f0();
  FUN_00495b37(param_1);
  return;
}



void FUN_0049589a(undefined *param_1)

{
  FUN_0082d4f0();
  FUN_004959c3(*param_1);
  return;
}



int FUN_004958c4(void)

{
  undefined4 *in_EAX;
  int iVar1;
  int unaff_EBX;
  
  FUN_0082ace0(*in_EAX);
  FUN_00495bb2(in_EAX[1]);
  FUN_0082af90(*in_EAX);
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + -9;
  }
  return iVar1;
}



int __fastcall FUN_00495923(undefined4 param_1)

{
  int unaff_ESI;
  
  FUN_00495941(param_1);
  if (unaff_ESI != 0) {
    return unaff_ESI + -9;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00495941(undefined4 *param_1,int param_2)

{
  int *piVar1;
  code *pcVar2;
  undefined4 uVar3;
  
  FUN_0082ace0(*param_1);
  if (param_2 == -9) {
    param_2 = 0;
  }
  piVar1 = *(int **)(param_2 + 0x10);
  if ((*(byte *)(*(int *)(*piVar1 + 4) + 8 + (int)piVar1) & 6) == 0) {
    FUN_00495c2c(piVar1,param_1[1]);
    FUN_0082af90(*param_1);
    return;
  }
  uVar3 = FUN_00832e60(8,0,0,1);
  FUN_0043fc7f(uVar3);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



void __thiscall FUN_004959c3(int **param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_b0 [152];
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3041f;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_b0;
  ExceptionList = &local_14;
  if ((*(byte *)(*(int *)(**param_1_00 + 4) + 8 + (int)*param_1_00) & 6) != 0) {
    uVar2 = FUN_00832e60(0xd,0,0,1);
    local_c = 0;
    FUN_0043fc7f(uVar2);
  }
  FUN_00495a3c(param_1,uVar1);
  ExceptionList = pvStack_18;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_00495a3c(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  char *pcVar3;
  int *piVar4;
  uint local_38 [3];
  char local_2c;
  undefined4 local_28;
  locale local_24 [4];
  undefined4 local_20;
  int *local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x495a48;
  local_20 = 0;
  local_1c = param_1_00;
  FUN_00425790(param_1_00);
  local_8 = 0;
  if (local_2c != '\0') {
    uVar2 = FUN_00417498(local_24);
    local_8._0_1_ = 1;
    FUN_00424900(uVar2);
    std::locale::~locale(local_24);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar1 = *(int *)(*param_1_00 + 4);
    local_28 = CONCAT31(local_28._1_3_,*(undefined *)((int)param_1_00 + iVar1 + 0x30));
    local_38[0] = local_38[0] & 0xffffff00;
    pcVar3 = (char *)FUN_00495b16(local_38,local_38[0],
                                  *(undefined4 *)((int)param_1_00 + iVar1 + 0x28),
                                  *(int *)(*param_1_00 + 4) + (int)param_1_00,local_28,param_1);
    if (*pcVar3 != '\0') {
      local_20 = 4;
    }
    local_8 = 0;
    piVar4 = (int *)FUN_00495af0();
    return piVar4;
  }
  FUN_004259e0(local_20,0);
  local_8 = 0xffffffff;
  FUN_00425900();
  return param_1_00;
}



undefined * Catch_All_00495ace(void)

{
  int unaff_EBP;
  
  FUN_004259e0(4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_00495aeb;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00495af0(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  
  FUN_004259e0(*(undefined4 *)(unaff_EBP + -0x1c),unaff_EBX);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00425900();
  return;
}



undefined4 __thiscall
FUN_00495b16(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  (**(code **)(*param_1_00 + 0x20))(param_1,param_2,param_3,param_4,param_5,param_6);
  return param_1;
}



void __thiscall FUN_00495b37(int **param_1_00,undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_b0 [152];
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3041f;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_b0;
  ExceptionList = &local_14;
  if ((*(byte *)(*(int *)(**param_1_00 + 4) + 8 + (int)*param_1_00) & 6) != 0) {
    uVar2 = FUN_00832e60(0xd,0,0,1);
    local_c = 0;
    FUN_0043fc7f(uVar2);
  }
  FUN_00495e36(*param_1,uVar1);
  ExceptionList = pvStack_18;
  return;
}



void __thiscall FUN_00495bb2(int **param_1_00,undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_b0 [152];
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3041f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if ((*(byte *)(*(int *)(**param_1_00 + 4) + 8 + (int)*param_1_00) & 6) == 0) {
    FUN_00495cff(param_1,DAT_0323f878 ^ (uint)local_b0);
    ExceptionList = pvStack_18;
    return;
  }
  uVar2 = FUN_00832e60(8,0,0,1);
  local_c = 0;
  FUN_0043fc7f(uVar2);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_00495c2c(int *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  undefined local_34 [4];
  undefined4 local_30;
  undefined4 local_28;
  char local_20;
  locale local_1c [4];
  undefined4 local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x495c38;
  local_18[0] = 0;
  FUN_00441871(param_1,0);
  local_8 = 0;
  if (local_20 != '\0') {
    uVar1 = FUN_00417498(local_1c);
    local_8._0_1_ = 1;
    piVar2 = (int *)FUN_00440e5e(uVar1);
    std::locale::~locale(local_1c);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar3 = *(int *)(*param_1 + 4) + (int)param_1;
    iVar4 = *(int *)(iVar3 + 0x28);
    local_28 = CONCAT31(local_28._1_3_,1);
    local_30 = CONCAT31(local_30._1_3_,iVar4 == 0);
    uVar1 = local_30;
    (**(code **)(*piVar2 + 0x2c))(local_34,iVar4,local_30,0,local_28,iVar3,local_18,param_2);
    local_8 = 0;
    piVar2 = (int *)FUN_00495cd8(iVar4,uVar1);
    return piVar2;
  }
  FUN_004259e0(local_18[0],0);
  local_8 = 0xffffffff;
  FUN_00413965();
  return param_1;
}



undefined * Catch_All_00495cb8(void)

{
  int unaff_EBP;
  
  FUN_004259e0(4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_00495cd5;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00495cd8(void)

{
  int unaff_EBP;
  
  FUN_004259e0(*(undefined4 *)(unaff_EBP + -0x14),0);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00413965();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_00495cff(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int *piVar4;
  undefined local_38 [4];
  undefined4 local_34;
  undefined4 local_2c;
  char local_24;
  locale local_20 [4];
  undefined4 local_1c;
  int *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x495d0b;
  local_1c = 0;
  local_18 = param_1_00;
  FUN_00441871(param_1_00,0);
  local_8 = 0;
  if (local_24 != '\0') {
    uVar2 = FUN_00417498(local_20);
    local_8._0_1_ = 1;
    FUN_00440e5e(uVar2);
    std::locale::~locale(local_20);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar3 = *(int *)(*param_1_00 + 4) + (int)param_1_00;
    iVar1 = *(int *)(iVar3 + 0x28);
    local_34 = CONCAT31(local_34._1_3_,iVar1 == 0);
    local_2c = CONCAT31(local_2c._1_3_,1);
    FUN_00495dce(local_38,iVar1,local_34,0,local_2c,iVar3,&local_1c,param_1);
    local_8 = 0;
    piVar4 = (int *)FUN_00495da7();
    return piVar4;
  }
  FUN_004259e0(local_1c,0);
  local_8 = 0xffffffff;
  FUN_00413965();
  return param_1_00;
}



undefined * Catch_All_00495d87(void)

{
  int unaff_EBP;
  
  FUN_004259e0(4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_00495da4;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00495da7(void)

{
  int unaff_EBP;
  
  FUN_004259e0(*(undefined4 *)(unaff_EBP + -0x18),0);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00413965();
  return;
}



undefined4 __thiscall
FUN_00495dce(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8)

{
  (**(code **)(*param_1_00 + 0x24))(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)
  ;
  return param_1;
}



void __thiscall FUN_00495df5(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_0082d4f0();
  FUN_0082e9a0(param_1,param_2);
  *(undefined *)(param_1_00 + 0x10) = 1;
  return;
}



// Library Function - Single Match
//  public: class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __thiscall std::num_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::put(class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,class std::ios_base &,unsigned short,unsigned long)const 
// 
// Library: Visual Studio 2012 Release

undefined4 __thiscall
std::
num_put<unsigned_short,class_std::ostreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>
::put(void *this,undefined4 param_11,undefined4 param_12,undefined4 param_13,undefined4 param_14,
     undefined4 param_15,undefined4 param_16)

{
                    // WARNING: Load size is inaccurate
  (**(code **)(*this + 0x18))(param_11,param_12,param_13,param_14,param_15,param_16);
  return param_11;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_00495e36(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  char *pcVar3;
  int *piVar4;
  uint local_38 [3];
  char local_2c;
  undefined4 local_28;
  locale local_24 [4];
  undefined4 local_20;
  int *local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x495e42;
  local_20 = 0;
  local_1c = param_1_00;
  FUN_00425790(param_1_00);
  local_8 = 0;
  if (local_2c != '\0') {
    uVar2 = FUN_00417498(local_24);
    local_8._0_1_ = 1;
    uVar2 = FUN_00424900(uVar2);
    std::locale::~locale(local_24);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar1 = *(int *)(*param_1_00 + 4);
    local_28 = CONCAT31(local_28._1_3_,*(undefined *)((int)param_1_00 + iVar1 + 0x30));
    local_38[0] = local_38[0] & 0xffffff00;
    pcVar3 = (char *)std::
                     num_put<unsigned_short,class_std::ostreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>
                     ::put(uVar2,local_38,local_38[0],
                           *(undefined4 *)((int)param_1_00 + iVar1 + 0x28),
                           *(int *)(*param_1_00 + 4) + (int)param_1_00,local_28,param_1);
    if (*pcVar3 != '\0') {
      local_20 = 4;
    }
    local_8 = 0;
    piVar4 = (int *)FUN_00495eea();
    return piVar4;
  }
  FUN_004259e0(local_20,0);
  local_8 = 0xffffffff;
  FUN_00425900();
  return param_1_00;
}



undefined * Catch_All_00495ec8(void)

{
  int unaff_EBP;
  
  FUN_004259e0(4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_00495ee5;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00495eea(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  
  FUN_004259e0(*(undefined4 *)(unaff_EBP + -0x1c),unaff_EBX);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00425900();
  return;
}



undefined4 * __thiscall FUN_00495f10(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W14E3BFCC::WFD9FAB68::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00495f2d(undefined4 *param_1)

{
  *param_1 = W14E3BFCC::WFD9FAB68::vftable;
  return;
}



void __fastcall FUN_00495f34(int param_1)

{
  undefined local_10c [8];
  undefined *local_104;
  undefined4 uStack_100;
  uint uStack_fc;
  undefined auStack_f0 [4];
  undefined *local_ec;
  undefined local_30 [20];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3b08f;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_f0;
  uStack_fc = DAT_0323f878 ^ (uint)&stack0xffffff08;
  ExceptionList = &local_14;
  uStack_100 = 0x495f7e;
  FUN_00b72080();
  local_c = 0;
  uStack_100 = 0x495f8f;
  FUN_00b71f00();
  uStack_100 = *(undefined4 *)(param_1 + 0x14);
  if (*(uint *)(param_1 + 0x18) < 0x10) {
    local_104 = (undefined *)(param_1 + 4);
  }
  else {
    local_104 = *(undefined **)(param_1 + 4);
  }
  local_ec = local_10c;
  local_10c[0] = 0;
  FUN_00b72260();
  uStack_100 = 0x14;
  local_ec = local_10c;
  local_104 = local_30;
  local_10c[0] = 0;
  FUN_00b72390();
  local_c = 0xffffffff;
  uStack_100 = 0x495fea;
  FUN_00b72070();
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0049603c(void)

{
  int iVar1;
  int *unaff_EDI;
  undefined local_50 [12];
  undefined4 *local_44;
  int local_40;
  undefined4 local_20;
  undefined local_14 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x496048;
  (**(code **)(*unaff_EDI + 4))(local_14);
  FUN_004382a5(local_50);
  local_8 = 0;
  FUN_004662cf();
  iVar1 = local_40 - (int)local_44 >> 3;
  if (iVar1 != 0) {
    if (iVar1 == 0) {
      FUN_00a3fb10();
    }
    local_20 = *local_44;
                    // WARNING: Subroutine does not return
    FUN_0043c023(local_44 + 1);
  }
  local_8 = 0xffffffff;
  FUN_00436aef(local_50);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_00496177(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c163e4;
  if (param_1[2] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = W47457227::WCE763347::vftable;
  return puVar1;
}



void FUN_004961a4(undefined4 param_1)

{
  int unaff_EBX;
  uint uVar1;
  uint local_c;
  
  local_c = 0;
  uVar1 = *(int *)(unaff_EBX + 0x10) - *(int *)(unaff_EBX + 0xc) >> 3;
  if (uVar1 != 0) {
    do {
      if ((uint)(*(int *)(unaff_EBX + 0x10) - *(int *)(unaff_EBX + 0xc) >> 3) <= local_c) {
        FUN_00a3fb10();
      }
      FUN_0049603c(param_1);
      local_c = local_c + 1;
    } while (local_c < uVar1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004961f5(undefined4 *param_1)

{
  *param_1 = W3CA43D38::W08B0F8DC::vftable;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 1));
  *(undefined *)(param_1 + 8) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x10));
  FUN_004398f2();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00496238(undefined4 param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004962ad(param_1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  return;
}



void FUN_00496276(undefined4 param_1)

{
  FUN_0040cafb(param_1);
  return;
}



void FUN_00496287(undefined4 param_1)

{
  FID_conflict_assign(param_1,0,0xffffffff);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004962ad(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined auStack_7c [12];
  undefined4 uStack_70;
  undefined *puStack_6c;
  undefined4 uStack_68;
  undefined *puStack_64;
  undefined4 uStack_60;
  undefined *puStack_5c;
  undefined local_40 [8];
  undefined local_38 [8];
  undefined local_30 [8];
  undefined local_20 [4];
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0;
  puStack_5c = (undefined *)param_1;
  local_18 = 0;
  uStack_60 = 0x4962cf;
  basic_string<>();
  puStack_5c = local_30;
  local_8 = 0;
  local_18 = 1;
  uStack_60 = 0x4962e4;
  puVar2 = (undefined4 *)FUN_00412721();
  uVar1 = *puVar2;
  local_1c = puVar2[1];
  puStack_5c = local_40;
  uStack_60 = 0x4962f7;
  puVar2 = (undefined4 *)FUN_00412721();
  puStack_5c = (undefined *)puVar2[1];
  uStack_60 = *puVar2;
  puStack_64 = local_38;
  uStack_68 = 0x496307;
  puVar2 = (undefined4 *)
           std::
           basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
           begin();
  puStack_64 = (undefined *)puVar2[1];
  uStack_68 = *puVar2;
  FUN_004965a5(auStack_7c);
  puVar2 = (undefined4 *)FUN_004965e6();
  puStack_5c = (undefined *)local_1c;
  puStack_64 = (undefined *)puVar2[1];
  uStack_68 = *puVar2;
  puStack_6c = local_20;
  uStack_70 = 0x49633a;
  uStack_60 = uVar1;
  FUN_004320f0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00496342(undefined4 param_1)

{
  int *piVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined local_e0 [132];
  undefined local_5c [8];
  undefined local_54 [8];
  undefined local_4c [8];
  undefined local_44 [8];
  undefined local_3c [8];
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined2 local_28;
  undefined2 uStack_26;
  undefined2 local_24;
  undefined2 uStack_22;
  undefined4 local_1c;
  undefined4 local_18 [4];
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xd0;
  local_8 = 0x496351;
  local_34 = 0;
  FUN_004964ff(&local_28);
  FUN_00496e91(local_18);
  FUN_00496cf1(&local_30,&local_28);
  FUN_00496db3(&local_28,local_18[0]);
  FUN_00449269(local_e0);
  local_8 = 1;
  local_1c = __alldiv(local_30,local_2c,3600000000,0);
  FUN_00823cac(local_3c,2);
  FUN_00479b4a(local_e0,CONCAT22(uStack_26,local_28));
  piVar1 = (int *)FUN_00415f60();
  *(undefined2 *)((int)piVar1 + *(int *)(*piVar1 + 4) + 0x30) = 0x30;
  local_18[0] = FUN_00823cac(local_4c,2);
  FUN_00479b4a(piVar1,CONCAT22(local_24,uStack_26));
  piVar1 = (int *)FUN_00415f60();
  *(undefined2 *)((int)piVar1 + *(int *)(*piVar1 + 4) + 0x30) = 0x30;
  local_18[0] = FUN_00823cac(local_5c,2);
  FUN_00479b4a(piVar1,CONCAT22(uStack_22,local_24));
  piVar1 = (int *)FUN_00415f60();
  *(undefined2 *)((int)piVar1 + *(int *)(*piVar1 + 4) + 0x30) = 0x30;
  uVar2 = FUN_00823cac(local_44,2);
  uVar3 = local_1c;
  local_1c = uVar2;
  FUN_00417ba7(piVar1,uVar3);
  piVar1 = (int *)FUN_00415f60();
  *(undefined2 *)((int)piVar1 + *(int *)(*piVar1 + 4) + 0x30) = 0x30;
  FUN_00823cac(local_54,2);
  uVar3 = FUN_00496cd0();
  FUN_00417ba7(piVar1,uVar3);
  piVar1 = (int *)FUN_00415f60();
  *(undefined2 *)((int)piVar1 + *(int *)(*piVar1 + 4) + 0x30) = 0x30;
  uVar3 = FUN_00496caf();
  FUN_00417ba7(piVar1,uVar3);
  FUN_004491d9();
  local_34 = 1;
  local_8 = local_8 & 0xffffff00;
  FUN_0044922e();
  return param_1;
}



void FUN_004964eb(void)

{
  int *in_EAX;
  
  if ((8 < (uint)in_EAX[4]) && (*in_EAX != 0)) {
    FUN_00a3f66c(*in_EAX);
  }
  return;
}



undefined4 FUN_004964ff(undefined4 param_1)

{
  undefined local_30 [36];
  __time64_t local_c;
  
  __time64(&local_c);
  FUN_00496c69(&local_c,local_30);
  FUN_00496530(param_1);
  return param_1;
}



undefined4 FUN_00496530(undefined4 param_1)

{
  undefined4 extraout_ECX;
  undefined4 extraout_ECX_00;
  undefined4 *unaff_ESI;
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 extraout_var;
  undefined4 uVar3;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_c;
  
  FUN_0043abcd(*(undefined2 *)(unaff_ESI + 3));
  uVar2 = extraout_ECX;
  uVar3 = extraout_var;
  FUN_0043b07c(*(short *)(unaff_ESI + 4) + 1);
  uVar1 = extraout_ECX_00;
  FUN_0043b510(*(short *)(unaff_ESI + 5) + 0x76c);
  FUN_0043a6c3(uVar1,uVar2,uVar3);
  FUN_0043b659(unaff_ESI[2],unaff_ESI[1],*unaff_ESI,0,0);
  FUN_0043b81b(local_c,local_18,local_14);
  return param_1;
}



undefined4 FUN_004965a5(undefined4 param_1)

{
  short sVar1;
  short *psVar2;
  
  psVar2 = &DAT_00f1f3a8;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  FUN_004966dd();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004965e6(int param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  char cVar3;
  undefined4 *puVar4;
  undefined4 *unaff_EBX;
  uint param_5;
  undefined4 param_6;
  undefined4 param_7;
  undefined4 param_8;
  undefined4 param_9;
  undefined auStack_54 [4];
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 *puStack_2c;
  undefined4 local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0;
  local_14 = &uStack_3c;
  uStack_40 = 0x496606;
  FUN_0049669b();
  uStack_40 = param_9;
  uStack_44 = param_8;
  uStack_48 = param_7;
  uStack_4c = param_6;
  uStack_50 = 0x49661a;
  puVar4 = (undefined4 *)FUN_007a9e2f();
  uVar1 = *puVar4;
  uVar2 = puVar4[1];
  puStack_2c = &stack0x00000020;
  uStack_30 = 0x496634;
  cVar3 = FUN_00412797();
  if (cVar3 == '\0') {
    uStack_34 = param_9;
    uStack_38 = param_8;
    uStack_3c = 0x49665e;
    uStack_30 = uVar1;
    puStack_2c = (undefined4 *)uVar2;
    local_18 = uVar1;
    local_14 = (undefined4 *)uVar2;
    FUN_00847800();
    uStack_3c = local_14;
    uStack_40 = local_18;
    local_14 = (undefined4 *)auStack_54;
    FUN_0049669b();
    FUN_00496747();
  }
  else {
    *unaff_EBX = uVar1;
    unaff_EBX[1] = uVar2;
  }
  if ((8 < param_5) && (param_1 != 0)) {
    puStack_2c = (undefined4 *)param_1;
    uStack_30 = 0x496692;
    FUN_00a3f66c();
  }
  return;
}



void FUN_0049669b(void)

{
  uint uVar1;
  undefined4 *in_EAX;
  undefined4 *_Dst;
  undefined4 *unaff_ESI;
  
  uVar1 = in_EAX[4];
  *unaff_ESI = 0;
  unaff_ESI[4] = uVar1;
  _Dst = unaff_ESI;
  if (8 < uVar1) {
    _Dst = (undefined4 *)
           FUN_00823c23(-(uint)((int)((ulonglong)uVar1 * 2 >> 0x20) != 0) |
                        (uint)((ulonglong)uVar1 * 2));
    *unaff_ESI = _Dst;
    in_EAX = (undefined4 *)*in_EAX;
  }
  _memcpy(_Dst,in_EAX,unaff_ESI[4] * 2);
  return;
}



void FUN_004966dd(void)

{
  rsize_t _DstSize;
  uint uVar1;
  undefined4 *_Dst;
  int iVar2;
  undefined4 *unaff_ESI;
  void **unaff_EDI;
  
  unaff_ESI[4] = 0;
  *unaff_ESI = 0;
  uVar1 = (int)unaff_EDI[1] - (int)*unaff_EDI >> 1;
  unaff_ESI[4] = uVar1;
  _Dst = unaff_ESI;
  if (8 < uVar1) {
    _Dst = (undefined4 *)
           FUN_00823c23(-(uint)((int)((ulonglong)uVar1 * 2 >> 0x20) != 0) |
                        (uint)((ulonglong)uVar1 * 2));
    *unaff_ESI = _Dst;
  }
  iVar2 = (int)unaff_EDI[1] - (int)*unaff_EDI >> 1;
  if (0 < iVar2) {
    _DstSize = iVar2 * 2;
    _memmove_s(_Dst,_DstSize,*unaff_EDI,_DstSize);
  }
  iVar2 = (int)_Dst + unaff_ESI[4] * 2;
  FUN_00496800(_Dst,iVar2,iVar2 - (int)_Dst >> 1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00496747(undefined4 *param_1_00,int param_1)

{
  char cVar1;
  wchar_t *pwVar2;
  uint param_5;
  wchar_t *param_7;
  wchar_t *param_9;
  undefined4 param_10;
  undefined4 param_11;
  int local_48;
  uint local_38;
  undefined4 local_30;
  undefined4 local_2c;
  wchar_t *local_28;
  undefined4 *local_24;
  undefined4 local_20;
  undefined4 local_1c;
  wchar_t *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0;
  local_24 = param_1_00;
  FUN_0049669b();
  local_28 = param_9;
  local_20 = param_10;
  local_1c = param_11;
  local_18 = param_7;
  if (param_7 != param_9) {
    do {
      cVar1 = FUN_00496908();
      if (cVar1 == '\0') {
        local_30 = param_10;
        local_2c = param_11;
        FUN_00847800();
        pwVar2 = std::
                 _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                 ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                              *)&local_30);
        *pwVar2 = *local_18;
        param_11 = local_1c;
        param_10 = local_20;
      }
      local_18 = local_18 + 1;
      param_1_00 = local_24;
    } while (local_18 != local_28);
  }
  *param_1_00 = param_10;
  param_1_00[1] = param_11;
  if ((8 < local_38) && (local_48 != 0)) {
    FUN_00a3f66c(local_48);
  }
  if ((8 < param_5) && (param_1 != 0)) {
    FUN_00a3f66c(param_1);
  }
  return param_1_00;
}



void FUN_00496800(undefined2 *param_1,int param_2,int param_3)

{
  undefined2 uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int local_10;
  undefined2 *local_c;
  
  iVar3 = param_2 - (int)param_1 >> 1;
  if (0x20 < iVar3) {
    do {
      if (param_3 < 1) break;
      FUN_00496955(&local_10,param_1,param_2);
      param_3 = param_3 / 2 + (param_3 / 2) / 2;
      if ((int)(local_10 - (int)param_1 & 0xfffffffeU) < (int)(param_2 - (int)local_c & 0xfffffffeU)
         ) {
        FUN_00496800(param_1,local_10,param_3);
        param_1 = local_c;
      }
      else {
        FUN_00496800(local_c,param_2,param_3);
        param_2 = local_10;
      }
      iVar3 = param_2 - (int)param_1 >> 1;
    } while (0x20 < iVar3);
    if (0x20 < iVar3) {
      local_10 = param_2 - (int)param_1;
      iVar3 = local_10 >> 1;
      if (iVar3 < 2) {
        return;
      }
      iVar4 = iVar3 - (local_10 >> 0x1f) >> 1;
      while (iVar2 = local_10, 0 < iVar4) {
        iVar4 = iVar4 + -1;
        FUN_00496bfc(param_1[iVar4]);
      }
      while (1 < iVar3) {
        if (1 < iVar3) {
          uVar1 = *(undefined2 *)((int)param_1 + iVar2 + -2);
          *(undefined2 *)((int)param_1 + iVar2 + -2) = *param_1;
          FUN_00496bfc(uVar1);
        }
        iVar3 = iVar2 + -2 >> 1;
        iVar2 = iVar2 + -2;
      }
      return;
    }
  }
  if (1 < iVar3) {
    FUN_00496ac5(param_2);
  }
  return;
}



undefined4 FUN_00496908(void)

{
  ushort **ppuVar1;
  ushort *puVar2;
  ushort **in_EAX;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  ushort unaff_BX;
  
  ppuVar1 = in_EAX + 4;
  if ((ushort *)0x8 < *ppuVar1) {
    in_EAX = (ushort **)*in_EAX;
  }
  ppuVar1 = (ushort **)((int)in_EAX + (int)*ppuVar1 * 2);
  iVar3 = (int)ppuVar1 - (int)in_EAX >> 1;
  while (iVar5 = iVar3, 0 < iVar5) {
    iVar3 = iVar5 / 2;
    puVar2 = (ushort *)((int)in_EAX + iVar3 * 2);
    if (*puVar2 < unaff_BX) {
      in_EAX = (ushort **)(puVar2 + 1);
      iVar3 = iVar5 + (-1 - iVar3);
    }
  }
  if ((in_EAX == ppuVar1) || (unaff_BX < *(ushort *)in_EAX)) {
    uVar4 = 0;
  }
  else {
    uVar4 = 1;
  }
  return uVar4;
}



ushort ** FUN_00496955(ushort **param_1,ushort *param_2,ushort *param_3)

{
  ushort uVar1;
  ushort uVar2;
  ushort *puVar3;
  ushort *puVar4;
  ushort *puVar5;
  ushort *puVar6;
  ushort *puVar7;
  ushort *puVar8;
  ushort *local_8;
  
  puVar6 = param_2 + (((int)param_3 - (int)param_2 >> 1) - ((int)param_3 - (int)param_2 >> 0x1f) >>
                     1);
  FUN_00496b3d(puVar6,param_3 + -1);
  puVar7 = puVar6 + 1;
  while (puVar4 = puVar6, param_2 < puVar4) {
    uVar1 = *puVar4;
    uVar2 = puVar4[-1];
    if ((uVar1 >= uVar2 && uVar1 != uVar2) || (puVar6 = puVar4 + -1, uVar1 < uVar2)) break;
  }
  puVar6 = puVar7;
  local_8 = puVar4;
  if (puVar7 < param_3) {
    uVar1 = *puVar4;
    do {
      uVar2 = *puVar7;
      puVar6 = puVar7;
      if ((uVar1 >= uVar2 && uVar1 != uVar2) || (uVar1 < uVar2)) break;
      puVar7 = puVar7 + 1;
      puVar6 = puVar7;
    } while (puVar7 < param_3);
  }
LAB_004969de:
  do {
    puVar8 = puVar6;
    puVar5 = puVar4;
    puVar6 = local_8;
    puVar3 = puVar7;
    if (param_3 <= puVar8) {
joined_r0x004969e9:
      for (; param_2 < local_8; local_8 = local_8 + -1) {
        puVar6 = puVar6 + -1;
        if (*puVar5 <= *puVar6) {
          if (*puVar5 < *puVar6) break;
          puVar5 = puVar5 + -1;
          if (puVar5 != puVar6) {
            uVar1 = *puVar5;
            *puVar5 = *puVar6;
            *puVar6 = uVar1;
          }
        }
      }
      if (local_8 == param_2) {
        if (puVar8 == param_3) {
          *param_1 = puVar5;
          param_1[1] = puVar7;
          return param_1;
        }
        if ((puVar7 != puVar8) && (puVar5 != puVar7)) {
          uVar1 = *puVar5;
          *puVar5 = *puVar7;
          *puVar7 = uVar1;
        }
        puVar7 = puVar7 + 1;
        puVar4 = puVar5 + 1;
        puVar6 = puVar8 + 1;
        if (puVar5 != puVar8) {
          uVar1 = *puVar5;
          *puVar5 = *puVar8;
          *puVar8 = uVar1;
        }
      }
      else {
        local_8 = local_8 + -1;
        if (puVar8 != param_3) {
          puVar4 = puVar5;
          if (puVar8 != local_8) {
            uVar1 = *puVar8;
            *puVar8 = *local_8;
            *local_8 = uVar1;
          }
          goto LAB_004969dc;
        }
        puVar4 = puVar5 + -1;
        if (local_8 != puVar4) {
          uVar1 = *local_8;
          *local_8 = *puVar4;
          *puVar4 = uVar1;
        }
        puVar7 = puVar7 + -1;
        puVar6 = puVar8;
        if (puVar4 != puVar7) {
          uVar1 = *puVar4;
          *puVar4 = *puVar7;
          *puVar7 = uVar1;
        }
      }
      goto LAB_004969de;
    }
    uVar1 = *puVar8;
    if (uVar1 <= *puVar4) {
      if (uVar1 < *puVar4) goto joined_r0x004969e9;
      puVar3 = puVar7 + 1;
      if (puVar7 != puVar8) {
        uVar2 = *puVar7;
        *puVar7 = uVar1;
        *puVar8 = uVar2;
      }
    }
LAB_004969dc:
    puVar7 = puVar3;
    puVar6 = puVar8 + 1;
  } while( true );
}



void FUN_00496ac5(ushort *param_1)

{
  ushort uVar1;
  ushort uVar2;
  ushort *puVar3;
  ushort *puVar4;
  int iVar5;
  ushort *puVar6;
  ushort *unaff_EBX;
  ushort *puVar7;
  
  if ((unaff_EBX != param_1) && (puVar7 = unaff_EBX + 1, puVar7 != param_1)) {
    do {
      uVar1 = *puVar7;
      if (uVar1 < *unaff_EBX) {
        iVar5 = (int)puVar7 - (int)unaff_EBX >> 1;
        if (0 < iVar5) {
          _memmove_s(puVar7 + (1 - iVar5),iVar5 * 2,unaff_EBX,iVar5 * 2);
        }
        *unaff_EBX = uVar1;
      }
      else {
        uVar2 = puVar7[-1];
        puVar6 = puVar7 + -1;
        puVar4 = puVar7;
        while (puVar3 = puVar6, uVar1 < uVar2) {
          *puVar4 = uVar2;
          puVar6 = puVar3 + -1;
          uVar2 = *puVar6;
          puVar4 = puVar3;
        }
        *puVar4 = uVar1;
      }
      puVar7 = puVar7 + 1;
    } while (puVar7 != param_1);
  }
  return;
}



void __thiscall FUN_00496b3d(int param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 - param_1_00 >> 1 < 0x29) {
    FUN_00496bb1();
  }
  else {
    FUN_00496bb1();
    FUN_00496bb1();
    FUN_00496bb1();
    FUN_00496bb1();
  }
  return;
}



void __fastcall FUN_00496bb1(ushort *param_1)

{
  ushort uVar1;
  ushort *in_EAX;
  ushort *unaff_EDI;
  
  uVar1 = *in_EAX;
  if ((uVar1 < *param_1) && (in_EAX != param_1)) {
    *in_EAX = *param_1;
    *param_1 = uVar1;
  }
  uVar1 = *unaff_EDI;
  if ((uVar1 < *in_EAX) && (unaff_EDI != in_EAX)) {
    *unaff_EDI = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = *in_EAX;
  if ((uVar1 < *param_1) && (in_EAX != param_1)) {
    *in_EAX = *param_1;
    *param_1 = uVar1;
  }
  return;
}



void __thiscall FUN_00496bfc(int param_1_00,ushort param_1)

{
  ushort uVar1;
  int in_EAX;
  int iVar2;
  int iVar3;
  int iVar4;
  int unaff_EDI;
  
  iVar3 = in_EAX * 2;
  iVar4 = in_EAX;
  while (iVar2 = iVar3 + 2, iVar2 < unaff_EDI) {
    if (*(ushort *)(param_1_00 + iVar2 * 2) < *(ushort *)(param_1_00 + -2 + iVar2 * 2)) {
      iVar2 = iVar3 + 1;
    }
    iVar3 = iVar2 * 2;
    *(undefined2 *)(param_1_00 + iVar4 * 2) = *(undefined2 *)(iVar3 + param_1_00);
    iVar4 = iVar2;
  }
  if (iVar2 == unaff_EDI) {
    *(undefined2 *)(param_1_00 + iVar4 * 2) = *(undefined2 *)(param_1_00 + -2 + unaff_EDI * 2);
    iVar4 = unaff_EDI + -1;
  }
  while ((iVar3 = (iVar4 + -1) / 2, in_EAX < iVar4 &&
         (uVar1 = *(ushort *)(param_1_00 + iVar3 * 2), uVar1 < param_1))) {
    *(ushort *)(param_1_00 + iVar4 * 2) = uVar1;
    iVar4 = iVar3;
  }
  *(ushort *)(param_1_00 + iVar4 * 2) = param_1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00496c69(__time64_t *param_1)

{
  tm *ptVar1;
  undefined4 uVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x496c75;
  ptVar1 = __localtime64(param_1);
  if (ptVar1 == (tm *)0x0) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"could not convert calendar time to local time");
    local_8 = 0;
    uVar2 = FUN_00401118(local_2c);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_0043bc65(uVar2);
  }
  return;
}



void __fastcall FUN_00496caf(undefined4 *param_1)

{
  undefined8 uVar1;
  
  uVar1 = __alldiv(*param_1,param_1[1],1000000,0);
  __allrem(uVar1,0x3c,0);
  return;
}



void __fastcall FUN_00496cd0(undefined4 *param_1)

{
  undefined8 uVar1;
  
  uVar1 = __alldiv(*param_1,param_1[1],60000000,0);
  __allrem(uVar1,0x3c,0);
  return;
}



undefined8 * FUN_00496cf1(undefined8 *param_1,undefined4 *param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined8 uVar3;
  
  cVar1 = FUN_0043bd2a();
  if (cVar1 == '\0') {
    uVar3 = __allrem(*param_2,param_2[1],0x1dd76000,0x14);
    uVar3 = FUN_0043b546(0,0,0,uVar3);
    *param_1 = uVar3;
  }
  else {
    uVar2 = FUN_00496d69(*param_2,param_2[1]);
    FUN_00453b45(uVar2);
  }
  return param_1;
}



undefined4 FUN_00496d51(int param_1,int param_2)

{
  if ((param_1 == -2) && (param_2 == 0x7fffffff)) {
    return 1;
  }
  return 0;
}



int FUN_00496d69(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = FUN_00496d51(param_1,param_2);
  if (cVar1 != '\0') {
    return 0;
  }
  cVar1 = FUN_0043bd9c(param_1,param_2);
  if (cVar1 != '\0') {
    return 1;
  }
  cVar1 = FUN_0043bd84(param_1,param_2);
  return (-(uint)(cVar1 != '\0') & 0xfffffffd) + 5;
}



void FUN_00496db3(undefined2 *param_1,int param_2)

{
  ulonglong uVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined2 local_a;
  undefined2 uStack_6;
  
  uVar2 = ((param_2 + 0x7d2c) * 4 + 3U) / 0x23ab1;
  iVar6 = (param_2 + 0x7d2c) - (uVar2 * 0x23ab1 >> 2);
  uVar3 = (iVar6 * 4 + 3U) / 0x5b5;
  iVar6 = iVar6 - (uVar3 * 0x5b5 >> 2);
  uVar1 = (ulonglong)(iVar6 * 5 + 2) / 0x99;
  iVar4 = (int)uVar1;
  uVar1 = uVar1 / 10;
  iVar5 = (int)uVar1;
  FUN_0043b510(uVar2 * 100 + iVar5 + -0x12c0 + uVar3);
  FUN_0043abcd((iVar6 - (iVar4 * 0x99 + 2U) / 5) + 1);
  FUN_0043b07c(iVar4 + iVar5 * -0xc + 3);
  FUN_0043b510(uVar3);
  param_2._2_2_ = (undefined2)(uVar3 >> 0x10);
  *param_1 = param_2._2_2_;
  uStack_6 = (undefined2)(uVar1 >> 0x10);
  param_1[1] = uStack_6;
  param_1[2] = local_a;
  return;
}



undefined4 * __thiscall FUN_00496e91(undefined4 *param_1_00,undefined4 *param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_10 [12];
  
  cVar1 = FUN_0043bd2a();
  if (cVar1 == '\0') {
    uVar2 = __alldiv(*param_1_00,param_1_00[1],0x1dd76000,0x14);
    FUN_00496db3(local_10,uVar2);
    uVar2 = FUN_0043a58a(local_10);
    *param_1 = uVar2;
  }
  else {
    uVar2 = FUN_00496d69(*param_1_00,param_1_00[1]);
    FUN_00453ba4(uVar2);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_00496ef9(undefined4 *param_1_00,int param_1,char param_2)

{
  char cVar1;
  undefined4 *local_154;
  undefined4 *puStack_150;
  undefined4 ***local_14c;
  undefined4 *puStack_148;
  undefined4 **local_124;
  undefined4 *local_120;
  undefined4 ***local_11c;
  undefined4 ***local_5c [4];
  undefined4 local_4c;
  uint local_48;
  undefined local_44 [20];
  int local_30;
  undefined4 local_2c;
  undefined4 *local_28 [8];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x124;
  local_8 = 0;
  local_14c = (undefined4 ***)0x496f1b;
  puStack_148 = param_1_00;
  local_120 = param_1_00;
  FUN_004972dd();
  puStack_148 = (undefined4 *)0x0;
  *param_1_00 = W3CA43D38::W4397BD51::vftable;
  local_2c = 7;
  local_14c = (undefined4 ***)0x496f31;
  FUN_0040180b();
  local_8 = CONCAT31(local_8._1_3_,2);
  if (param_2 == '\0') {
    puStack_148 = (undefined4 *)local_44;
    local_14c = (undefined4 ***)0x496f4d;
    cVar1 = FUN_00bac450();
  }
  else {
    puStack_148 = (undefined4 *)0x496f42;
    cVar1 = FUN_0049734d();
  }
  if (cVar1 == '\0') {
    puStack_148 = (undefined4 *)0x496f5a;
    FUN_00432156();
  }
  if (local_30 == 0) {
    puStack_148 = (undefined4 *)0x10;
    local_124 = &local_154;
    local_14c = (undefined4 ***)local_28;
    local_154 = (undefined4 *)((uint)local_154 & 0xffffff00);
    FUN_00b92490();
  }
  else {
    puStack_148 = (undefined4 *)local_44;
    local_14c = (undefined4 ***)0x496f93;
    FUN_00ba83f0();
    puStack_148 = (undefined4 *)0x496f9f;
    FUN_00b72080();
    local_8 = CONCAT31(local_8._1_3_,4);
    puStack_148 = (undefined4 *)0x496fae;
    FUN_00b71f00();
    puStack_148 = (undefined4 *)local_4c;
    if (local_48 < 0x10) {
      local_5c[0] = local_5c;
    }
    local_124 = &local_154;
    local_154 = (undefined4 *)((uint)local_154 & 0xffffff00);
    local_14c = local_5c[0];
    FUN_00b72260();
    if ((param_1 != 0) && (*(int *)(param_1 + 8) != 0)) {
      local_124 = (undefined4 **)0x0;
      puStack_148 = (undefined4 *)0x496ff5;
      FUN_00b93390();
      puStack_148 = *(undefined4 **)(param_1 + 8);
      local_11c = (undefined4 ***)&local_154;
      local_14c = (undefined4 ***)local_124;
      local_154 = (undefined4 *)((uint)local_154 & 0xffffff00);
      FUN_00b72260();
    }
    puStack_148 = (undefined4 *)0x10;
    local_11c = (undefined4 ***)&local_154;
    local_14c = (undefined4 ***)local_28;
    local_154 = (undefined4 *)((uint)local_154 & 0xffffff00);
    FUN_00b72390();
    local_8._0_1_ = 3;
    puStack_148 = (undefined4 *)0x49704b;
    FUN_00b72070();
    puStack_148 = (undefined4 *)0x0;
    local_14c = (undefined4 ***)0x1;
    local_8 = CONCAT31(local_8._1_3_,2);
    puStack_150 = (undefined4 *)0x49705a;
    FUN_004017b2();
  }
  puStack_148 = (undefined4 *)0x497065;
  puStack_150 = (undefined4 *)FUN_00b98820();
  local_11c = &local_14c;
  local_8 = CONCAT31(local_8._1_3_,5);
  local_14c = (undefined4 ***)*puStack_150;
  puStack_150 = puStack_150 + 1;
                    // WARNING: Subroutine does not return
  local_154 = (undefined4 *)&UNK_00497083;
  FUN_0043c023();
}



undefined4 __thiscall FUN_004972c0(undefined4 param_1_00,byte param_1)

{
  FUN_00497323(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004972dd(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = WB009B997::W43ECEB89::vftable;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 1);
  }
  param_1[1] = piVar1;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00497323(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  undefined4 *puStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puStack_24 = param_1 + 1;
  puVar1 = &uStack_28;
  uStack_28 = 0x49733f;
  FUN_0044237a();
  *param_1 = WB009B997::WA665DD66::vftable;
  puVar1[-1] = 0x49734a;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0049734d(void)

{
  undefined4 uVar1;
  undefined local_90 [28];
  void *local_74;
  undefined4 local_6c;
  undefined4 local_68 [6];
  undefined4 local_50;
  undefined4 local_4c;
  char local_41;
  undefined4 local_28;
  undefined local_24 [24];
  undefined4 local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_68;
  local_68[0] = 0x38;
  local_6c = 0x49736b;
  local_c = 7;
  FUN_0040180b(0);
  local_6c = 0;
  local_41 = FUN_00bac1b0(local_24);
  local_28 = 7;
  FUN_0040180b(0);
  local_6c._0_1_ = 1;
  if (local_41 != '\0') {
    local_41 = FUN_00bac280(local_24);
    if (local_41 == '\0') {
      uVar1 = basic_string<>(&DAT_00f1f1f4);
      local_6c._0_1_ = 2;
      local_4c = FUN_0041c102(local_90,local_24,uVar1);
      local_50 = 7;
      FUN_0040180b(0);
      local_6c._0_1_ = 4;
      local_41 = FUN_00bac280(local_4c);
      FUN_00401829(1,0);
      FUN_00401829(1,0);
      FUN_00401829(1,0);
    }
  }
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  ExceptionList = local_74;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_00497469(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WB009B997::WA665DD66::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00497486(undefined4 *param_1)

{
  *param_1 = WB009B997::WA665DD66::vftable;
  return;
}



void Catch_All_004974d3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0049757e(undefined4 param_1_00,byte param_1)

{
  FUN_0049759a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_0049759a(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c37089;
  *param_1 = W3CA43D38::W3B9AB33A::vftable;
  if (*(char *)(param_1 + 2) != '\0') {
    puVar1 = (undefined *)FUN_00401477();
  }
  *param_1 = W14E3BFCC::WD4E46930::vftable;
  return puVar1;
}



undefined4 * __thiscall FUN_004975cf(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W14E3BFCC::WD4E46930::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_004975ec(undefined4 *param_1)

{
  *param_1 = W14E3BFCC::WD4E46930::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004975f3(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_68 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x58;
  local_8 = 0x4975ff;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00f1f1d0,0xe);
  local_8 = 0;
  local_14 = 0xdc85;
  local_12 = 0x79bf;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 2;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00f1f1e0,9);
  local_8._0_1_ = 3;
  local_14 = 0x27e6;
  local_12 = 0x75d2;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 5;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_68,&DAT_00f1f1ec,6);
  local_8 = CONCAT31(local_8._1_3_,6);
  local_14 = 0xe1b9;
  local_12 = 0x8845;
  FUN_00b94330(&local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_004976cd(int param_1)

{
  FUN_00b92800();
  FUN_004975f3(param_1 + 0x10);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004976fa(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  puVar2 = param_2;
  puVar3 = (undefined4 *)FUN_00b93190(param_1,&param_1);
  uVar1 = *puVar3;
  *puVar3 = 0;
  *puVar2 = uVar1;
  if (param_1 != (undefined4 *)0x0) {
    (**(code **)*param_1)(1);
  }
  return puVar2;
}



int * __thiscall FUN_00497740(int param_1_00,int *param_1,undefined4 *param_2)

{
  bool bVar1;
  undefined4 *puVar2;
  char cVar3;
  undefined4 *puVar4;
  undefined4 *local_54;
  undefined4 **local_50;
  uint uStack_4c;
  uint uStack_48;
  undefined4 *local_30;
  undefined4 ***local_2c;
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puVar2 = param_2;
  puStack_8 = &LAB_00c3af89;
  local_c = ExceptionList;
  uStack_48 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  local_4 = 1;
  if ((param_2 == (undefined4 *)0x0) || (param_2[2] == 0)) {
    bVar1 = false;
  }
  else {
    bVar1 = true;
  }
  *param_1 = 0;
  if (bVar1) {
    local_54 = *(undefined4 **)(param_1_00 + 4);
    uStack_4c = -(uint)(*(char *)(param_1_00 + 8) != '\0') & 4;
    local_50 = &local_30;
    puVar4 = (undefined4 *)FUN_00b93190();
    local_50 = (undefined4 **)*puVar4;
    local_2c = &local_50;
    *puVar4 = 0;
    local_4._0_1_ = 3;
    local_54 = (undefined4 *)0x1;
    local_10 = 7;
    local_14 = 0;
    local_24 = local_24 & 0xffff0000;
    FID_conflict_assign(&DAT_00faece0);
    local_2c = (undefined4 ***)&local_54;
    param_2 = (undefined4 *)0x0;
    local_54 = puVar2;
    local_4._0_1_ = 5;
    cVar3 = FUN_00bb9960(param_1);
    if (7 < local_10) {
      uStack_4c = local_24;
                    // WARNING: Subroutine does not return
      local_50 = (undefined4 **)&UNK_0049782c;
      FUN_00a3f6a1();
    }
    local_4 = CONCAT31(local_4._1_3_,1);
    local_10 = 7;
    local_14 = 0;
    local_24 = local_24 & 0xffff0000;
    if (local_30 != (undefined4 *)0x0) {
      uStack_4c = 1;
      local_50 = (undefined4 **)0x497853;
      (**(code **)*local_30)();
    }
    if (cVar3 != '\0') goto LAB_00497873;
  }
  if ((undefined4 *)*param_1 != (undefined4 *)0x0) {
    uStack_4c = 1;
    local_50 = (undefined4 **)0x49786d;
    (***(code ***)(undefined4 *)*param_1)();
  }
  *param_1 = 0;
LAB_00497873:
  local_4 = local_4 & 0xffffff00;
  if (param_2 != (undefined4 *)0x0) {
    uStack_4c = 1;
    local_50 = (undefined4 **)0x497885;
    (**(code **)*param_2)();
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_004978a0(int param_1_00,int *param_1,undefined4 *param_2)

{
  bool bVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *local_54;
  undefined4 **local_50;
  uint uStack_4c;
  uint uStack_48;
  undefined4 *local_3c;
  undefined4 **local_38;
  undefined4 local_34;
  int *local_30;
  undefined local_2c [4];
  uint local_28;
  undefined4 local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puVar4 = param_2;
  puStack_8 = &LAB_00c3af21;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3c;
  uStack_48 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  local_30 = param_1;
  local_4._1_3_ = 0;
  if ((param_2 == (undefined4 *)0x0) || (param_2[2] == 0)) {
    bVar1 = false;
  }
  else {
    bVar1 = true;
  }
  *param_1 = 0;
  local_34 = 1;
  if (bVar1) {
    local_14 = 7;
    local_18 = 0;
    local_28 = local_28 & 0xffff0000;
    uStack_4c = 0;
    local_50 = &local_3c;
    local_4._0_1_ = 2;
    local_4._1_3_ = 0;
    local_54 = *(undefined4 **)(param_1_00 + 4);
    puVar3 = (undefined4 *)FUN_00b93190();
    local_4._0_1_ = 3;
    local_50 = (undefined4 **)*puVar3;
    *puVar3 = 0;
    local_38 = &local_54;
    param_2 = (undefined4 *)0x0;
    local_54 = puVar4;
    cVar2 = FUN_00bb96e0(param_1,local_2c);
    local_4._0_1_ = 2;
    if (local_3c != (undefined4 *)0x0) {
      uStack_4c = 1;
      local_50 = (undefined4 **)0x49798f;
      (**(code **)*local_3c)();
    }
    local_4._0_1_ = 1;
    if (7 < local_14) {
      uStack_4c = local_28;
                    // WARNING: Subroutine does not return
      local_50 = (undefined4 **)&UNK_004979a5;
      FUN_00a3f6a1();
    }
    puVar4 = (undefined4 *)0x0;
    if (cVar2 != '\0') goto LAB_004979ca;
  }
  local_4._0_1_ = 1;
  if ((undefined4 *)*param_1 != (undefined4 *)0x0) {
    uStack_4c = 1;
    local_50 = (undefined4 **)0x4979c0;
    (***(code ***)(undefined4 *)*param_1)();
  }
  *param_1 = 0;
  puVar4 = param_2;
LAB_004979ca:
  local_4 = (uint)local_4._1_3_ << 8;
  if (puVar4 != (undefined4 *)0x0) {
    uStack_4c = 1;
    local_50 = (undefined4 **)0x4979db;
    (**(code **)*puVar4)();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_004979fc(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = WD830273C::W31A3A314::vftable;
  return;
}



undefined4 __thiscall FUN_00497ab1(undefined4 param_1,byte param_2)

{
  FUN_00497acd();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_00497acd(undefined4 *param_1)

{
  char local_1c;
  
  *param_1 = WD830273C::W100E15B5::vftable;
  param_1[1] = WD830273C::W100E15B5::vftable;
  FUN_0043d406(param_1 + 3);
  FUN_00614e3d();
  if (local_1c != '\0') {
    FUN_00401477();
  }
  if ((undefined4 *)param_1[0x11] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x11])(1);
  }
  param_1[0x11] = 0;
  FUN_00497b46();
  return;
}



undefined * Catch_All_00497b36(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 6;
  return &DAT_00497b43;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00497b46(void)

{
  int unaff_EBP;
  undefined4 *unaff_EDI;
  
  *(undefined *)(unaff_EBP + -4) = 5;
  if ((undefined4 *)unaff_EDI[0x11] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)unaff_EDI[0x11])(1);
  }
  *(undefined *)(unaff_EBP + -4) = 4;
  if (unaff_EDI[0x10] != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 2;
  FUN_00697eb3(unaff_EDI + 5);
  FUN_00417fe6();
  unaff_EDI[1] = WD830273C::W31A3A314::vftable;
  *unaff_EDI = W16D1C966::W8376C35A::vftable;
  return;
}



void FUN_00497b97(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c4044b;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_004984da(local_20,&param_1,param_2,&stack0x0000000c,
                       DAT_0323f878 ^ (uint)&stack0xffffffc8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00497c59(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c4044b;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00498599(local_20,&param_1,param_2,DAT_0323f878 ^ (uint)&stack0xffffffc8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void __fastcall FUN_00497d17(int param_1)

{
  int **ppiVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 unaff_EDI;
  undefined *puStack_d8;
  undefined4 *puStack_d4;
  undefined4 *puStack_d0;
  undefined **ppuStack_cc;
  undefined4 *puStack_c8;
  uint uStack_c4;
  undefined4 uStack_b4;
  undefined4 local_b0;
  int local_ac;
  undefined **ppuStack_a8;
  int *local_a4;
  int local_a0;
  undefined **local_9c;
  undefined ***pppuStack_94;
  char cStack_90;
  undefined4 auStack_8c [4];
  char local_7c;
  undefined4 local_78;
  uint local_74;
  undefined local_50 [12];
  undefined auStack_44 [36];
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e8ae;
  local_14 = ExceptionList;
  uStack_c4 = DAT_0323f878 ^ (uint)&stack0xffffff40;
  ExceptionList = &local_14;
  puStack_c8 = (undefined4 *)(param_1 + 0x34);
  ppuStack_cc = (undefined **)0x497d58;
  FUN_0043d406();
  local_c._1_3_ = 0;
  while( true ) {
    local_a4 = (int *)0x0;
    local_a0 = 0;
    puStack_c8 = (undefined4 *)(param_1 + 0xc);
    local_c._0_1_ = 1;
    ppuStack_cc = (undefined **)0x497d7e;
    FUN_0043d406();
    local_c = CONCAT31(local_c._1_3_,2);
    if (*(int *)(param_1 + 0x30) != 0) {
      uVar2 = *(uint *)(param_1 + 0x2c);
      if (*(int *)(param_1 + 0x30) + uVar2 < uVar2) {
        puStack_c8 = (undefined4 *)0x497da0;
        FUN_00a3fb10();
      }
      local_78 = *(undefined4 *)(param_1 + 0x14);
      puStack_c8 = (undefined4 *)0x497db4;
      local_74 = uVar2;
      puStack_c8 = (undefined4 *)FUN_006913fd();
      local_9c = (undefined **)*puStack_c8;
      puStack_c8 = puStack_c8 + 1;
                    // WARNING: Subroutine does not return
      ppuStack_cc = (undefined **)&UNK_00497dc7;
      FUN_0043c023();
    }
    local_c._0_1_ = 1;
    if (local_7c != '\0') {
      puStack_c8 = (undefined4 *)0x497e36;
      FUN_00401477();
    }
    ppiVar1 = (int **)(param_1 + 0x3c);
    if (local_a4 == (int *)0x0) break;
    if (*ppiVar1 == (int *)0x0) {
      puStack_c8 = (undefined4 *)local_50;
      ppuStack_cc = (undefined **)0x497e55;
      puStack_c8 = (undefined4 *)FUN_0046f90c();
      local_c = CONCAT31(local_c._1_3_,3);
      local_b0 = *puStack_c8;
      puStack_c8 = puStack_c8 + 1;
                    // WARNING: Subroutine does not return
      ppuStack_cc = (undefined **)&UNK_00497e71;
      FUN_0043c023();
    }
    puStack_c8 = (undefined4 *)(param_1 + 4);
    ppuStack_cc = (undefined **)0x497f29;
    (**(code **)(*local_a4 + 4))();
    local_c._0_1_ = 0;
    if (local_a0 != 0) {
      puStack_c8 = (undefined4 *)0x497f43;
      FUN_0040127a();
    }
  }
  if (*ppiVar1 != (int *)0x0) {
    puStack_c8 = (undefined4 *)0x497f53;
    iVar3 = (**(code **)(**ppiVar1 + 8))();
    if (iVar3 != 0) {
      pppuStack_94 = &ppuStack_cc;
      ppuStack_cc = (undefined **)*ppiVar1;
      puStack_d0 = (undefined4 *)(param_1 + 0x40);
                    // WARNING: Subroutine does not return
      puStack_d4 = (undefined4 *)&UNK_00497f6f;
      FUN_0043c023();
    }
    if (&pppuStack_94 != (undefined ****)ppiVar1) {
      *ppiVar1 = (int *)0x0;
    }
    iVar3 = *(int *)(param_1 + 0x40);
    *(undefined4 *)(param_1 + 0x40) = 0;
    if (iVar3 != 0) {
      puStack_c8 = (undefined4 *)0x497f96;
      FUN_0040127a();
    }
  }
  puStack_c8 = (undefined4 *)0x497f9e;
  (**(code **)(**(int **)(param_1 + 0x44) + 0x14))();
  uStack_b4 = (undefined4 *)((uint)uStack_b4 & 0xffffff);
  ppuStack_a8 = (undefined **)0x0;
  local_c._0_1_ = 5;
  puStack_c8 = (undefined4 *)0x497fb6;
  auStack_8c[0] = FUN_00b74bf0();
  pppuStack_94 = *(undefined ****)(param_1 + 0x44);
  puStack_c8 = (undefined4 *)0x0;
  ppuStack_cc = (undefined **)0x4;
  local_9c = &puStack_d8;
  puStack_d0 = auStack_8c;
  puStack_d8 = (undefined *)((uint)puStack_d8 & 0xffffff00);
  puStack_c8 = (undefined4 *)FUN_00b92ef0();
  ppuStack_cc = (undefined **)&ppuStack_a8;
  local_c = CONCAT31(local_c._1_3_,6);
  puStack_d0 = (undefined4 *)((int)&uStack_b4 + 3);
  puStack_d4 = (undefined4 *)0x497ffe;
  (**(code **)((int)*pppuStack_94 + 0x18))();
  uStack_18._0_1_ = 5;
  puStack_d4 = (undefined4 *)0x49800d;
  FUN_00b92d80();
  if ((char)((uint)unaff_EDI >> 0x18) != '\0') {
    puStack_d4 = uStack_b4;
    puStack_d8 = auStack_44;
    puVar4 = (undefined4 *)FUN_0046f52f();
    puStack_d8 = (undefined *)*puVar4;
    ppuStack_a8 = &puStack_d8;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar4 + 1);
  }
  uStack_18._0_1_ = 1;
  if (uStack_b4 != (undefined4 *)0x0) {
    puStack_d4 = (undefined4 *)0x1;
    puStack_d8 = (undefined *)0x498265;
    (**(code **)*uStack_b4)();
  }
  uStack_18 = (uint)uStack_18._1_3_ << 8;
  if (local_ac != 0) {
    puStack_d4 = (undefined4 *)0x498279;
    FUN_0040127a();
  }
  uStack_18 = 0xffffffff;
  if (cStack_90 != '\0') {
    puStack_d4 = (undefined4 *)0x498290;
    FUN_00401477();
  }
  ExceptionList = pvStack_20;
  return;
}



void __thiscall FUN_004982a6(int param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 *puVar3;
  
  iVar1 = **(int **)(param_1_00 + 0x40);
  uVar2 = *(uint *)(param_1 + 4);
  puVar3 = (undefined4 *)FUN_00453c32();
  (**(code **)(iVar1 + 0xc))(uVar2 ^ 0xc36e821c,*puVar3,puVar3[1]);
  return;
}



void __thiscall FUN_004982e2(int param_1_00,int param_1)

{
  int *piVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  undefined4 *puVar6;
  undefined4 *unaff_ESI;
  void *local_24 [2];
  undefined4 uStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c49b3f;
  local_14 = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  piVar1 = *(int **)(param_1_00 + 0x40);
  puVar6 = (undefined4 *)FUN_004987ce(param_1,local_24);
  local_c = 0;
  uVar2 = *puVar6;
  uVar3 = *(uint *)(param_1 + 4);
  iVar4 = *piVar1;
  puVar6 = (undefined4 *)FUN_00453c32(uVar5);
  (**(code **)(iVar4 + 0x10))(uVar3 ^ 0xc36e821c,uVar2,*puVar6,puVar6[1]);
  uStack_1c = 0xffffffff;
  if (unaff_ESI != (undefined4 *)0x0) {
    (**(code **)*unaff_ESI)(1);
  }
  ExceptionList = local_24[0];
  return;
}



void FUN_00498375(undefined4 *param_1)

{
  undefined4 *puVar1;
  int in_EAX;
  uint uVar2;
  void *pvVar3;
  int iVar4;
  uint uVar5;
  
  if (((*(int *)(in_EAX + 0x18) + *(int *)(in_EAX + 0x1c) & 1U) == 0) &&
     (*(uint *)(in_EAX + 0x14) <= *(int *)(in_EAX + 0x1c) + 2U >> 1)) {
    FUN_004983f4();
  }
  uVar5 = *(int *)(in_EAX + 0x18) + *(int *)(in_EAX + 0x1c);
  uVar2 = uVar5 >> 1;
  if (*(uint *)(in_EAX + 0x14) <= uVar2) {
    uVar2 = uVar2 - *(uint *)(in_EAX + 0x14);
  }
  iVar4 = uVar2 * 4;
  if (*(int *)(iVar4 + *(int *)(in_EAX + 0x10)) == 0) {
    pvVar3 = operator_new(0x10);
    *(void **)(iVar4 + *(int *)(in_EAX + 0x10)) = pvVar3;
  }
  puVar1 = (undefined4 *)(*(int *)(*(int *)(in_EAX + 0x10) + iVar4) + (uVar5 & 1) * 8);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = *param_1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 1);
  }
  *(int *)(in_EAX + 0x1c) = *(int *)(in_EAX + 0x1c) + 1;
  return;
}



void FUN_004983f4(void)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  uint uVar5;
  int unaff_ESI;
  undefined8 uVar6;
  uint local_8;
  
  uVar6 = CONCAT44(0xfffffff,*(int *)(unaff_ESI + 0x14));
  local_8 = 1;
  if (*(int *)(unaff_ESI + 0x14) == 0xfffffff) {
    uVar6 = FUN_00467f14();
  }
  uVar5 = (uint)uVar6 >> 1;
  if (uVar5 < 8) {
    uVar5 = 8;
  }
  if ((1 < uVar5) && ((uint)uVar6 <= (int)((ulonglong)uVar6 >> 0x20) - uVar5)) {
    local_8 = uVar5;
  }
  uVar5 = *(uint *)(unaff_ESI + 0x18) >> 1;
  puVar1 = (undefined4 *)FUN_00467f53();
  FUN_0061526b(*(int *)(unaff_ESI + 0x10) + uVar5 * 4);
  if (local_8 < uVar5) {
    FUN_0061526b(*(undefined4 *)(unaff_ESI + 0x10));
    puVar4 = (undefined4 *)FUN_0061526b(local_8 * 4 + *(int *)(unaff_ESI + 0x10));
    uVar5 = local_8;
  }
  else {
    iVar2 = local_8 - uVar5;
    puVar3 = (undefined4 *)FUN_0061526b(*(undefined4 *)(unaff_ESI + 0x10));
    puVar4 = puVar1;
    if (iVar2 != 0) {
      for (; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar3 = 0;
        puVar3 = puVar3 + 1;
      }
    }
  }
  if (uVar5 != 0) {
    for (; uVar5 != 0; uVar5 = uVar5 - 1) {
      *puVar4 = 0;
      puVar4 = puVar4 + 1;
    }
  }
  if (*(int *)(unaff_ESI + 0x10) == 0) {
    *(undefined4 **)(unaff_ESI + 0x10) = puVar1;
    *(int *)(unaff_ESI + 0x14) = *(int *)(unaff_ESI + 0x14) + local_8;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(int *)(unaff_ESI + 0x10));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004984da(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,undefined *param_4)

{
  undefined4 *puVar1;
  undefined uVar2;
  undefined4 uVar3;
  undefined *puVar4;
  undefined4 local_24;
  int *local_20;
  undefined4 *local_1c;
  undefined4 local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x4984e6;
  local_18 = 0;
  local_14 = (undefined4 *)((uint)local_14 & 0xffffff00);
  local_24 = 0;
  FUN_00498650(local_14);
  FUN_007a491c(&local_24,0,0);
  local_8 = 1;
  if (local_20 == (int *)0x0) {
    puVar4 = (undefined *)0x0;
  }
  else {
    puVar4 = (undefined *)(**(code **)(*local_20 + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar4 + 4);
  local_1c = puVar1;
  local_14 = puVar1;
  if (puVar1 != (undefined4 *)0x0) {
    uVar2 = *param_4;
    uVar3 = *param_2;
    local_8 = CONCAT31(local_8._1_3_,3);
    *puVar1 = WD830273C::W79A865D3::vftable;
    *(undefined4 *)(puVar4 + 8) = uVar3;
    basic_string<>(param_3);
    puVar4[0x28] = uVar2;
  }
  *puVar4 = 1;
  FUN_007a491c(&local_24,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_20);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00498599(undefined4 *param_1,undefined4 *param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined *puVar3;
  undefined4 local_28;
  int *local_24;
  undefined4 *local_20;
  undefined4 local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x4985a5;
  local_1c = 0;
  local_18 = (undefined4 *)((uint)local_18 & 0xffffff00);
  local_28 = 0;
  FUN_004986a7(local_18);
  FUN_007a491c(&local_28,0,0);
  local_8 = 1;
  if (local_24 == (int *)0x0) {
    puVar3 = (undefined *)0x0;
  }
  else {
    puVar3 = (undefined *)(**(code **)(*local_24 + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar3 + 4);
  local_20 = puVar1;
  local_18 = puVar1;
  if (puVar1 != (undefined4 *)0x0) {
    uVar2 = *param_2;
    local_8 = CONCAT31(local_8._1_3_,3);
    *puVar1 = WD830273C::W07781495::vftable;
    *(undefined4 *)(puVar3 + 8) = uVar2;
    FUN_00b92d90(param_3);
  }
  *puVar3 = 1;
  FUN_007a491c(&local_28,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_24);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00498650(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x3c);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_WD830273C::W79A865D3*,class_boost::detail::sp_ms_deleter<class_WD830273C::W79A865D3>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_00498696(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x3c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_004986a7(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x2c);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_WD830273C::W07781495*,class_boost::detail::sp_ms_deleter<class_WD830273C::W07781495>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_004986ed(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x2c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



uint __thiscall FUN_004986fe(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_WD830273C::W79A865D3>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_0049871f(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_WD830273C::W07781495>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



void FUN_00498740(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W16D1C966::W8376C35A::vftable;
  return;
}



void __fastcall FUN_00498747(undefined4 *param_1)

{
  *param_1 = WD830273C::W49D5FB99::vftable;
  return;
}



undefined4 * __thiscall FUN_0049874e(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WD830273C::W49D5FB99::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0049876b(undefined4 *param_1_00,byte param_1)

{
  FUN_00401829(1,0);
  *param_1_00 = WD830273C::W49D5FB99::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00498794(undefined4 *param_1_00,byte param_1)

{
  FUN_00b92d80();
  *param_1_00 = WD830273C::W49D5FB99::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004987ce(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  puVar2 = param_2;
  puVar3 = (undefined4 *)FUN_00b93190(param_1 + 2,&param_1);
  uVar1 = *puVar3;
  *puVar3 = 0;
  *puVar2 = uVar1;
  if (param_1 != (undefined4 *)0x0) {
    (**(code **)*param_1)(1);
  }
  return puVar2;
}



undefined4 __thiscall
FUN_00498898(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00498aca(param_1_00,param_2,param_3,param_4);
  FUN_00498c08(uVar1,param_2,param_3,param_4);
  return 1;
}



undefined4 FUN_004988c6(void)

{
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c40420;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00b92ef0();
  local_c = 0;
  FUN_00498aca();
  FUN_00498cbc();
  local_c = 0xffffffff;
  FUN_00b92d80();
  ExceptionList = local_14;
  return 1;
}



undefined4 FUN_00498950(void)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00498aca();
  FUN_00498d6d(uVar1);
  return 1;
}



undefined4 __thiscall FUN_00498973(int param_1_00,int param_1)

{
  uint uVar1;
  int *piVar2;
  DWORD aDStack_24 [2];
  char cStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c403fd;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_14;
  aDStack_24[0] = GetCurrentThreadId();
  FUN_0043d406(param_1_00 + 4);
  uStack_c = 0;
  if (param_1 == 0) {
    FUN_00498e18(param_1_00 + 0xc,aDStack_24);
  }
  else {
    piVar2 = (int *)FUN_0067409d(aDStack_24);
    *piVar2 = param_1;
  }
  uStack_c = 0xffffffff;
  if (cStack_1c != '\0') {
    FUN_00401477(uVar1);
  }
  ExceptionList = local_14;
  return 1;
}



undefined4 __fastcall FUN_00498a0a(int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  DWORD DStack_30;
  undefined4 uStack_2c;
  char cStack_24;
  undefined auStack_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c403da;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_14;
  DStack_30 = GetCurrentThreadId();
  FUN_0043d406(param_1 + 4);
  FUN_005d00fa(auStack_20,&DStack_30);
  uStack_2c = *(undefined4 *)(param_1 + 0x24);
  DStack_30 = *(DWORD *)(param_1 + 0xc);
  cVar1 = FUN_006b8eca(uVar2);
  if (cVar1 == '\0') {
    iVar3 = FUN_006badde();
    uVar4 = *(undefined4 *)(iVar3 + 4);
    uStack_c = 0xffffffff;
    if (cStack_24 != '\0') {
      FUN_00401477();
    }
  }
  else {
    uStack_c = 0xffffffff;
    if (cStack_24 != '\0') {
      FUN_00401477();
    }
    uVar4 = 0;
  }
  ExceptionList = local_14;
  return uVar4;
}



int __fastcall FUN_00498aca(int param_1)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  char local_1c;
  undefined local_18 [8];
  undefined4 local_10;
  DWORD local_c;
  int local_8;
  
  local_8 = in_EAX;
  if (in_EAX == 0) {
    FUN_0043d406(param_1 + 4);
    local_c = GetCurrentThreadId();
    FUN_005d00fa(local_18,&local_c);
    local_c = *(DWORD *)(param_1 + 0x24);
    local_10 = *(undefined4 *)(param_1 + 0xc);
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      iVar2 = FUN_006badde();
      local_8 = *(int *)(iVar2 + 4);
    }
    if (local_1c != '\0') {
      FUN_00401477();
    }
  }
  return local_8;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00498c08(int param_1)

{
  int iVar1;
  int local_3c;
  int local_38;
  int local_34;
  int local_30;
  char local_28;
  
  FUN_0043d406(param_1 + 0x2c);
  FUN_00498ee1(&stack0x00000004);
  if ((local_3c == 0) || (local_3c != local_34)) {
    FUN_00a3fb10();
  }
  if (local_38 != local_30) {
    iVar1 = FUN_006badde();
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 8);
  }
  if (local_28 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00498cbc(int param_1)

{
  int iVar1;
  int local_38;
  int local_34;
  int local_30;
  int local_2c;
  char local_24;
  
  FUN_0043d406(param_1 + 0x2c);
  FUN_00498ee1(&stack0x00000004);
  if ((local_38 == 0) || (local_38 != local_30)) {
    FUN_00a3fb10();
  }
  if (local_34 != local_2c) {
    iVar1 = FUN_006badde();
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 8);
  }
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00498d6d(int param_1)

{
  int iVar1;
  int local_38;
  int local_34;
  int local_30;
  int local_2c;
  char local_24;
  
  FUN_0043d406(param_1 + 0x2c);
  FUN_00498ee1(&stack0x00000004);
  if ((local_38 == 0) || (local_38 != local_30)) {
    FUN_00a3fb10();
  }
  if (local_34 != local_2c) {
    iVar1 = FUN_006badde();
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 8);
  }
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return;
}



int FUN_00498e18(undefined4 param_1,int param_2)

{
  char cVar1;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined local_14 [16];
  
  FUN_00498f67(param_2);
  param_2 = 0;
  while( true ) {
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') break;
    param_2 = param_2 + 1;
    FUN_00448b61();
  }
  FUN_00492b43(local_14,local_24,local_20,local_1c,local_18);
  return param_2;
}



void FUN_00498e87(uint *param_1)

{
  undefined4 uVar1;
  int in_EAX;
  undefined4 *puVar2;
  undefined4 *unaff_EDI;
  undefined local_10 [4];
  undefined4 local_c;
  
  puVar2 = *(undefined4 **)(*(int *)(in_EAX + 0x18) + 4);
  local_c = CONCAT31(local_c._1_3_,1);
  if (*(char *)((int)puVar2 + 0x19) == '\0') {
    do {
      local_c = CONCAT31(local_c._1_3_,*param_1 < (uint)puVar2[3]);
      if (*param_1 < (uint)puVar2[3]) {
        puVar2 = (undefined4 *)*puVar2;
      }
      else {
        puVar2 = (undefined4 *)puVar2[2];
      }
    } while (*(char *)((int)puVar2 + 0x19) == '\0');
  }
  puVar2 = (undefined4 *)FUN_006bd125(local_10,local_c,param_1);
  uVar1 = *puVar2;
  unaff_EDI[1] = puVar2[1];
  *unaff_EDI = uVar1;
  return;
}



void __thiscall FUN_00498ee1(undefined4 *param_1_00,uint *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *local_8;
  
  puVar4 = (undefined4 *)param_1_00[6];
  local_8 = puVar4;
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x19) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((uint)puVar2[3] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        if ((*(char *)((int)puVar4 + 0x19) != '\0') && (*param_1 < (uint)puVar2[3])) {
          puVar4 = puVar2;
        }
        puVar3 = (undefined4 *)*puVar2;
        local_8 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x19) == '\0');
  }
  if (*(char *)((int)puVar4 + 0x19) == '\0') {
    puVar2 = (undefined4 *)*puVar4;
  }
  else {
    puVar2 = *(undefined4 **)(param_1_00[6] + 4);
  }
  if (*(char *)((int)puVar2 + 0x19) == '\0') {
    do {
      if (*param_1 < (uint)puVar2[3]) {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      else {
        puVar3 = (undefined4 *)puVar2[2];
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x19) == '\0');
  }
  uVar1 = *param_1_00;
  in_EAX[1] = local_8;
  *in_EAX = uVar1;
  in_EAX[2] = uVar1;
  in_EAX[3] = puVar4;
  return;
}



void __thiscall FUN_00498f67(undefined4 *param_1_00,uint *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *local_8;
  
  puVar4 = (undefined4 *)param_1_00[6];
  local_8 = puVar4;
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x15) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((uint)puVar2[3] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        if ((*(char *)((int)puVar4 + 0x15) != '\0') && (*param_1 < (uint)puVar2[3])) {
          puVar4 = puVar2;
        }
        puVar3 = (undefined4 *)*puVar2;
        local_8 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x15) == '\0');
  }
  if (*(char *)((int)puVar4 + 0x15) == '\0') {
    puVar2 = (undefined4 *)*puVar4;
  }
  else {
    puVar2 = *(undefined4 **)(param_1_00[6] + 4);
  }
  if (*(char *)((int)puVar2 + 0x15) == '\0') {
    do {
      if (*param_1 < (uint)puVar2[3]) {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      else {
        puVar3 = (undefined4 *)puVar2[2];
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x15) == '\0');
  }
  uVar1 = *param_1_00;
  in_EAX[1] = local_8;
  *in_EAX = uVar1;
  in_EAX[2] = uVar1;
  in_EAX[3] = puVar4;
  return;
}



void __fastcall FUN_00499036(undefined4 *param_1)

{
  *param_1 = W16D1C966::W855293D2::vftable;
  return;
}



undefined4 * __thiscall FUN_0049903d(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W16D1C966::W855293D2::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00499080(undefined4 param_1_00,byte param_1)

{
  FUN_0049909c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0049909c(undefined4 *param_1)

{
  *param_1 = W16D1C966::W703EE28C::vftable;
  FUN_00b72070();
  FUN_00417fe6();
  *param_1 = W16D1C966::W855293D2::vftable;
  return;
}



void FUN_004990d6(void)

{
  int unaff_ESI;
  
  FUN_00b71f00();
  *(undefined *)(unaff_ESI + 200) = 0;
  *(undefined *)(unaff_ESI + 0xc9) = 0;
  return;
}



void __fastcall FUN_004990ef(int param_1)

{
  int iVar1;
  char local_8;
  
  iVar1 = param_1;
  FUN_0043d406(param_1 + 8);
  FUN_004990d6();
  local_8 = (char)param_1;
  if (local_8 != '\0') {
    FUN_00401477(iVar1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00499119(int param_1)

{
  char local_18;
  
  FUN_0043d406();
  if (*(char *)(param_1 + 0xc9) == '\0') {
    FUN_00b74bf0();
    (**(code **)(*(int *)(param_1 + 0x10) + 4))();
    *(undefined *)(param_1 + 200) = 1;
  }
  if (local_18 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00499204)

void __fastcall FUN_00499188(int param_1)

{
  char cVar1;
  char local_1c;
  
  FUN_0043d406();
  if (*(char *)(param_1 + 0xc9) == '\0') {
    if (*(char *)(param_1 + 4) == '\0') {
      FUN_00b74bf0();
      (**(code **)(*(int *)(param_1 + 0x10) + 4))();
      cVar1 = FUN_00b92890();
      if (cVar1 == '\0') {
        FUN_00b93390();
      }
    }
    *(undefined *)(param_1 + 200) = 1;
  }
  if (local_1c != '\0') {
    FUN_00401477();
  }
  return;
}



void __fastcall FUN_0049923d(int param_1)

{
  int iVar1;
  char local_8;
  
  iVar1 = param_1;
  FUN_0043d406(param_1 + 8);
  local_8 = (char)param_1;
  *(undefined *)(param_1 + 0xc9) = 1;
  if (local_8 != '\0') {
    FUN_00401477(iVar1);
  }
  return;
}



void __thiscall FUN_00499269(int param_1_00,char *param_1,undefined4 param_2,int param_3)

{
  char cVar1;
  undefined4 *puVar2;
  uint local_120;
  undefined local_11c [4];
  undefined *local_118;
  undefined4 **local_114;
  int iStack_110;
  uint uStack_10c;
  undefined4 local_fc;
  uint *local_f8;
  undefined4 local_f4;
  undefined4 *local_f0;
  undefined4 *local_ec;
  char local_e4;
  undefined local_24 [8];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c40313;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&local_fc;
  uStack_10c = DAT_0323f878 ^ (uint)&stack0xfffffef8;
  ExceptionList = &local_14;
  local_fc = param_2;
  iStack_110 = param_1_00 + 8;
  local_114 = (undefined4 **)0x4992c5;
  FUN_0043d406();
  local_c = 0;
  *param_1 = *(char *)(param_1_00 + 200);
  if ((*(char *)(param_1_00 + 0xc9) == '\0') || (*(char *)(param_1_00 + 200) == '\0')) {
    iStack_110 = 0;
    local_114 = &local_f0;
    local_118 = (undefined *)0x4993c7;
    puVar2 = (undefined4 *)FUN_00b933f0();
    iStack_110 = *puVar2;
    *puVar2 = 0;
    local_114 = (undefined4 **)0x4993d8;
    FUN_0040c727();
    if (local_f0 != (undefined4 *)0x0) {
      iStack_110 = 1;
      local_114 = (undefined4 **)0x4993e6;
      (**(code **)*local_f0)();
    }
  }
  else {
    iStack_110 = 0x4992fb;
    FUN_00b72050();
    local_c = CONCAT31(local_c._1_3_,1);
    iStack_110 = 0x49930a;
    cVar1 = FUN_00b92890();
    if (cVar1 == '\0') {
      local_f4 = 0;
      iStack_110 = 0x49931f;
      FUN_00b93390();
      iStack_110 = *(undefined4 *)(param_3 + 8);
      local_f8 = (uint *)local_11c;
      local_114 = (undefined4 **)local_f4;
      local_11c[0] = 0;
      local_120 = 0x49933d;
      FUN_00b72260();
    }
    iStack_110 = 0x499346;
    FUN_00b720a0();
    iStack_110 = 8;
    local_f8 = (uint *)local_11c;
    local_114 = (undefined4 **)local_24;
    local_11c[0] = 0;
    local_120 = 0x499366;
    FUN_00b72390();
    iStack_110 = 0;
    local_114 = (undefined4 **)0x8;
    local_f8 = &local_120;
    local_118 = local_24;
    local_120 = local_120 & 0xffffff00;
    puVar2 = (undefined4 *)FUN_00b932e0();
    iStack_110 = *puVar2;
    *puVar2 = 0;
    local_114 = (undefined4 **)0x499398;
    FUN_0040c727();
    if (local_ec != (undefined4 *)0x0) {
      iStack_110 = 1;
      local_114 = (undefined4 **)0x4993a6;
      (**(code **)*local_ec)();
    }
    local_c = local_c & 0xffffff00;
    iStack_110 = 0x4993b6;
    FUN_00b72070();
  }
  local_c = 0xffffffff;
  if (local_e4 != '\0') {
    iStack_110 = 0x4993fe;
    FUN_00401477();
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x004994a0)

undefined4 * FUN_00499424(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  int param_5;
  
  pvVar2 = operator_new(0x20);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0049a27e();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_5 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000014);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00499545)

undefined4 * FUN_004994cf(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x18);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0049a2db();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x004995ea)

undefined4 * FUN_00499574(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x18);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0049a338();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00499619(undefined4 *param_1,undefined param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x18);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_0049dc55(puVar2);
    *puVar2 = W515EA149::W58AD3DBE::vftable;
    *(undefined *)(puVar2 + 4) = param_2;
    puVar2[2] = *unaff_EBX;
    puVar2[3] = unaff_EBX[1];
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0049a395(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004996a1(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_0049dc55(puVar2);
    *puVar2 = W515EA149::WA0DEE60D::vftable;
    puVar2[2] = *unaff_EBX;
    puVar2[3] = unaff_EBX[1];
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0049a3f2(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00499723(undefined4 *param_1,undefined param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x18);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_0049dc55(puVar2);
    *puVar2 = W515EA149::WA29F4207::vftable;
    *(undefined *)(puVar2 + 4) = param_2;
    puVar2[2] = *unaff_EBX;
    puVar2[3] = unaff_EBX[1];
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0049a44f(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004997ab(undefined4 *param_1,undefined4 param_2,undefined param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x18);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_0049dc55(puVar2);
    puVar2[4] = param_2;
    *puVar2 = W515EA149::W3F4D8FF3::vftable;
    *(undefined *)(puVar2 + 5) = param_3;
    puVar2[2] = *unaff_EBX;
    puVar2[3] = unaff_EBX[1];
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0049a4ac(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00499839(undefined4 *param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  
  uVar4 = 0;
  pvVar2 = operator_new(0x18);
  if (pvVar2 != (void *)0x0) {
    param_3 = (undefined4 *)0x0;
    uVar4 = FUN_0049d991(pvVar2,param_2);
  }
  *param_1 = uVar4;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0049a509();
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (pvVar2 != (void *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar4);
  if (param_3 != (undefined4 *)0x0) {
    (**(code **)*param_3)();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004998d3(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_0049dc55(puVar2);
    *puVar2 = W515EA149::WC3B4F82C::vftable;
    puVar2[2] = *unaff_EBX;
    puVar2[3] = unaff_EBX[1];
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0049a566(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00499955(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x18);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_0049dc55(puVar2);
    *puVar2 = W515EA149::W8C4AA647::vftable;
    puVar2[4] = param_2;
    puVar2[2] = *unaff_EBX;
    puVar2[3] = unaff_EBX[1];
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0049a5c3(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004999dd(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x30);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0049db8a(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0049a620(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



undefined4 __thiscall FUN_00499abb(undefined4 param_1_00,byte param_1)

{
  FUN_00499ad7();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00499ad7(undefined4 *param_1)

{
  char local_1c;
  
  *param_1 = W515EA149::WF9909B07::vftable;
  param_1[1] = W515EA149::WF9909B07::vftable;
  FUN_0043d406(param_1 + 4);
  FUN_0049a74b();
  if (local_1c != '\0') {
    FUN_00401477();
  }
  FUN_0049a6ab();
  FUN_00417fe6();
  if (param_1[3] != 0) {
    FUN_0040127a();
  }
  param_1[1] = W16D1C966::W8376C35A::vftable;
  *param_1 = WDE765622::W048D7BA4::vftable;
  return;
}



void Catch_All_00499b5e(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00499ba9(undefined4 param_1)

{
  FUN_0043bd15(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_00499bba(int param_1_00,undefined4 param_1,int param_2,undefined4 param_3,undefined4 *param_4)

{
  undefined4 local_48 [2];
  undefined4 uStack_40;
  int iStack_3c;
  char local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0;
  iStack_3c = param_1_00 + 0x10;
  uStack_40 = 0x499bd8;
  FUN_0043d406();
  if (param_4 == (undefined4 *)0x0) {
    param_4 = local_48;
    local_48[0] = param_1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_2);
  }
  if (param_4 == (undefined4 *)0x1) {
    param_4 = local_48;
    local_48[0] = param_1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_2);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_14 != '\0') {
    iStack_3c = 0x499c67;
    FUN_00401477();
  }
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    iStack_3c = 0x499c77;
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_00499c7f(int param_1_00,undefined4 param_1)

{
  undefined4 local_44 [2];
  undefined4 uStack_3c;
  int iStack_38;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0;
  iStack_38 = param_1_00 + 0x10;
  uStack_3c = 0x499c9d;
  FUN_0043d406();
  local_14 = local_44;
  local_44[0] = param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_00499d0b(int param_1_00,undefined4 param_1)

{
  undefined4 local_44 [2];
  undefined4 uStack_3c;
  int iStack_38;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0;
  iStack_38 = param_1_00 + 0x10;
  uStack_3c = 0x499d29;
  FUN_0043d406();
  local_14 = local_44;
  local_44[0] = param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



void __thiscall FUN_00499d97(int param_1_00,undefined4 param_1)

{
  undefined4 uStack_44;
  undefined *puStack_40;
  uint uStack_3c;
  char local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4a94e;
  local_14 = ExceptionList;
  uStack_3c = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  puStack_40 = (undefined *)(param_1_00 + 0x10);
  uStack_44 = 0x499dd1;
  FUN_0043d406();
  local_c = 0;
  puStack_40 = local_20;
  uStack_44 = 0x499de0;
  FUN_00499ba9();
  FUN_00499619(&uStack_44,param_1);
  FUN_0049a78b(param_1_00 + 0x18);
  local_c = 0xffffffff;
  if (local_24 != '\0') {
    puStack_40 = (undefined *)0x499e13;
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00499e27(int param_1)

{
  char local_14;
  
  FUN_0043d406(param_1 + 0x10);
  FUN_0049a74b();
  if (local_14 != '\0') {
    FUN_00401477();
  }
  return;
}



void __fastcall FUN_00499e65(int param_1)

{
  undefined4 uStack_44;
  undefined *puStack_40;
  uint uStack_3c;
  char local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4a94e;
  local_14 = ExceptionList;
  uStack_3c = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  puStack_40 = (undefined *)(param_1 + 0x10);
  uStack_44 = 0x499e9f;
  FUN_0043d406();
  local_c = 0;
  puStack_40 = local_20;
  uStack_44 = 0x499eae;
  FUN_00499ba9();
  FUN_004996a1(&uStack_44);
  FUN_0049a78b(param_1 + 0x18);
  local_c = 0xffffffff;
  if (local_24 != '\0') {
    puStack_40 = (undefined *)0x499edd;
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_00499eef(int param_1_00,undefined4 param_1)

{
  undefined4 uStack_44;
  undefined *puStack_40;
  uint uStack_3c;
  char local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4a94e;
  local_14 = ExceptionList;
  uStack_3c = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  puStack_40 = (undefined *)(param_1_00 + 0x10);
  uStack_44 = 0x499f29;
  FUN_0043d406();
  local_c = 0;
  puStack_40 = local_20;
  uStack_44 = 0x499f38;
  FUN_00499ba9();
  FUN_00499723(&uStack_44,param_1);
  FUN_0049a78b(param_1_00 + 0x18);
  local_c = 0xffffffff;
  if (local_24 != '\0') {
    puStack_40 = (undefined *)0x499f6b;
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_00499f7f(int param_1)

{
  undefined4 uStack_44;
  undefined *puStack_40;
  uint uStack_3c;
  char local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4a94e;
  local_14 = ExceptionList;
  uStack_3c = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  puStack_40 = (undefined *)(param_1 + 0x10);
  uStack_44 = 0x499fb9;
  FUN_0043d406();
  local_c = 0;
  puStack_40 = local_20;
  uStack_44 = 0x499fc8;
  FUN_00499ba9();
  FUN_004998d3(&uStack_44);
  FUN_0049a78b(param_1 + 0x18);
  local_c = 0xffffffff;
  if (local_24 != '\0') {
    puStack_40 = (undefined *)0x499ff7;
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_0049a009(int param_1_00,undefined4 param_1)

{
  undefined4 uStack_44;
  undefined *puStack_40;
  uint uStack_3c;
  char local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4a94e;
  local_14 = ExceptionList;
  uStack_3c = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  puStack_40 = (undefined *)(param_1_00 + 0x10);
  uStack_44 = 0x49a043;
  FUN_0043d406();
  local_c = 0;
  puStack_40 = local_20;
  uStack_44 = 0x49a052;
  FUN_00499ba9();
  FUN_00499955(&uStack_44,param_1);
  FUN_0049a78b(param_1_00 + 0x18);
  local_c = 0xffffffff;
  if (local_24 != '\0') {
    puStack_40 = (undefined *)0x49a085;
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_0049a099(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 uStack_3c;
  undefined *puStack_38;
  uint uStack_34;
  char local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4a92b;
  local_14 = ExceptionList;
  uStack_34 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_14;
  puStack_38 = (undefined *)(param_1_00 + 0x10);
  uStack_3c = 0x49a0d2;
  FUN_0043d406();
  local_c = 0;
  puStack_38 = local_20;
  uStack_3c = 0x49a0e1;
  uVar1 = FUN_00499ba9();
  FUN_004999dd(&uStack_3c,param_1,uVar1);
  FUN_0049a78b(param_1_00 + 0x18);
  local_c = 0xffffffff;
  if (local_24 != '\0') {
    puStack_38 = (undefined *)0x49a114;
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



void __thiscall
FUN_0049a127(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uStack_44;
  undefined *puStack_40;
  uint uStack_3c;
  char local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4a94e;
  local_14 = ExceptionList;
  uStack_3c = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  puStack_40 = (undefined *)(param_1_00 + 0xc);
  uStack_44 = 0x49a161;
  FUN_0043d406();
  local_c = 0;
  puStack_40 = local_20;
  uStack_44 = 0x49a170;
  FUN_00499ba9();
  FUN_004997ab(&uStack_44,param_1,param_3);
  FUN_0049a78b(param_1_00 + 0x14);
  local_c = 0xffffffff;
  if (local_24 != '\0') {
    puStack_40 = (undefined *)0x49a1a7;
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_0049a1bb(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 extraout_ECX;
  undefined4 **local_4c;
  int iStack_48;
  undefined4 uStack_44;
  undefined *puStack_40;
  uint uStack_3c;
  undefined4 *local_30;
  undefined4 ***local_2c;
  char local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4a908;
  local_14 = ExceptionList;
  uStack_3c = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  puStack_40 = (undefined *)(param_1_00 + 0xc);
  uStack_44 = 0x49a1f5;
  FUN_0043d406();
  local_c = 0;
  puStack_40 = local_20;
  uStack_44 = 0x49a204;
  iStack_48 = FUN_00499ba9();
  local_2c = (undefined4 ***)&uStack_44;
  local_4c = &local_30;
  uStack_44 = extraout_ECX;
  puVar1 = (undefined4 *)FUN_00b93190(param_2);
  local_c._0_1_ = 1;
  local_4c = (undefined4 **)*puVar1;
  *puVar1 = 0;
  local_2c = &local_4c;
  FUN_00499839(&uStack_44,param_1);
  iStack_48 = param_1_00 + 0x14;
  local_4c = (undefined4 **)0x49a242;
  FUN_0049a78b();
  local_c = (uint)local_c._1_3_ << 8;
  if (local_30 != (undefined4 *)0x0) {
    puStack_40 = (undefined *)0x1;
    uStack_44 = 0x49a255;
    (**(code **)*local_30)();
  }
  local_c = 0xffffffff;
  if (local_24 != '\0') {
    puStack_40 = (undefined *)0x49a26a;
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0049a27e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W515EA149::W2873BBB4>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0049a2c4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0049a2db(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W515EA149::W6B2C41D0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0049a321(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0049a338(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W515EA149::W7CD70347>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0049a37e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0049a395(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W515EA149::W58AD3DBE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0049a3db(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0049a3f2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W515EA149::WA0DEE60D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0049a438(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0049a44f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W515EA149::WA29F4207>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0049a495(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0049a4ac(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W515EA149::W3F4D8FF3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0049a4f2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0049a509(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W515EA149::W6EA8DBB8>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0049a54f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0049a566(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W515EA149::WC3B4F82C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0049a5ac(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0049a5c3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W515EA149::W8C4AA647>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0049a609(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0049a620(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W515EA149::WAA9992A6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0049a666(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0049a68f(undefined4 param_1,byte param_2)

{
  FUN_0049a6ab();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_0049a6ab(undefined4 *param_1)

{
  *param_1 = W515EA149::W818B7449::vftable;
  FUN_0049a74b();
  FUN_0049a6dc();
  return;
}



undefined * Catch_All_0049a6d3(void)

{
  return &DAT_0049a6d9;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0049a6dc(void)

{
  int unaff_EBP;
  int unaff_ESI;
  
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_0044237a(unaff_ESI + 4);
  return;
}



int FUN_0049a6ef(int param_1)

{
  uint uVar1;
  uint uVar2;
  int unaff_EDI;
  int *piStack_18;
  int *piStack_14;
  
  if (param_1 != unaff_EDI) {
    piStack_14 = (int *)0x49a701;
    FUN_0049a74b();
    uVar1 = 0;
    uVar2 = *(int *)(unaff_EDI + 0x14) - *(int *)(unaff_EDI + 0x10) >> 3;
    if (uVar2 != 0) {
      do {
        if ((uint)(*(int *)(unaff_EDI + 0x14) - *(int *)(unaff_EDI + 0x10) >> 3) <= uVar1) {
          piStack_14 = (int *)0x49a722;
          FUN_00a3fb10();
        }
        piStack_18 = *(int **)(*(int *)(unaff_EDI + 0x10) + uVar1 * 8);
        piStack_14 = piStack_18;
        (**(code **)(*piStack_18 + 4))(&piStack_18);
        FUN_0049a78b(param_1);
        uVar1 = uVar1 + 1;
      } while (uVar1 < uVar2);
    }
  }
  return param_1;
}



void FUN_0049a74b(void)

{
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0049a803(&local_14,local_14,local_10,local_c,local_8);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0049a78b(undefined4 param_1,undefined4 param_2,int param_3)

{
  FUN_0040c749(&param_2);
  if (param_3 != 0) {
    FUN_0040127a();
  }
  return;
}



int * FUN_0049a803(int *param_1)

{
  int iVar1;
  int iVar2;
  int in_EAX;
  int local_18;
  int local_14;
  int local_c;
  
  FUN_0046e65a();
  FUN_0046e65a();
  if ((*param_1 == 0) || (*param_1 != local_18)) {
    FUN_00a3fb10();
  }
  iVar1 = param_1[1];
  if (iVar1 != local_14) {
    iVar2 = *(int *)(in_EAX + 0x10);
    local_c = local_14;
    if (local_14 != iVar2) {
      do {
        FUN_004fe47e();
        local_c = local_c + 8;
      } while (local_c != iVar2);
    }
    FUN_0043a4e8(*(undefined4 *)(in_EAX + 0x10));
    *(int *)(in_EAX + 0x10) = iVar1 + (iVar2 - local_14 >> 3) * 8;
  }
  return param_1;
}



void FUN_0049a891(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W515EA149::W6202213D::vftable;
  return;
}



undefined4 __thiscall FUN_0049aac2(undefined4 param_1_00,byte param_1)

{
  FUN_0049aae8();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_0049c7cb(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x49c7e3;
  FUN_0049ca43();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0049c7ea;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_0049c864(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x49c87c;
  FUN_0049ca77();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0049c883;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0049aae8(undefined4 *param_1)

{
  *param_1 = W515EA149::W29A4E4C1::vftable;
  FUN_005d1159();
  FUN_005d1159();
  if (*(char *)((int)param_1 + 0x99) != '\0') {
    *(char *)((int)param_1 + 0x99) = '\0';
  }
  if (*(char *)(param_1 + 0x24) != '\0') {
    *(char *)(param_1 + 0x24) = '\0';
  }
  if (param_1[0x23] != 0) {
    FUN_0040127a();
  }
  if (param_1[0x21] != 0) {
    FUN_0040127a();
  }
  FUN_0049c864(param_1 + 0x18);
  FUN_0049c7cb(param_1 + 0x10);
  FUN_004679c2();
  if (param_1[6] != 0) {
    FUN_0040127a();
  }
  if (param_1[4] != 0) {
    FUN_0040127a();
  }
  if (param_1[2] != 0) {
    FUN_0040127a();
  }
  *param_1 = W515EA149::W6202213D::vftable;
  return;
}



void Catch_All_0049abb9(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0049abc3(undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  undefined4 uVar2;
  undefined local_bc [8];
  undefined local_b4 [132];
  undefined local_30 [8];
  undefined4 local_28;
  undefined local_24 [8];
  undefined4 local_1c;
  undefined4 local_18;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xac;
  local_8 = 0x49abd2;
  local_28 = 0;
  FUN_0049c88c(local_24,param_2);
  FUN_0040c8aa(local_bc);
  local_8 = 1;
  FUN_00496cf1(&local_1c,local_24);
  local_18 = __alldiv(local_1c,local_18,3600000000,0);
  FUN_00823cac(local_30,2);
  piVar1 = (int *)FUN_00415f60();
  *(undefined2 *)((int)piVar1 + *(int *)(*piVar1 + 4) + 0x30) = 0x30;
  FUN_00417ba7(piVar1,local_18);
  FUN_004266f0(local_b4);
  FUN_00496cf1(&local_1c,local_24);
  FUN_00823cac(local_30,2);
  piVar1 = (int *)FUN_00415f60();
  *(undefined2 *)((int)piVar1 + *(int *)(*piVar1 + 4) + 0x30) = 0x30;
  uVar2 = FUN_00496cd0();
  FUN_00417ba7(piVar1,uVar2);
  FUN_004266f0(local_b4);
  FUN_00496cf1(&local_1c,local_24);
  FUN_00823cac(local_30,2);
  piVar1 = (int *)FUN_00415f60();
  *(undefined2 *)((int)piVar1 + *(int *)(*piVar1 + 4) + 0x30) = 0x30;
  uVar2 = FUN_00496caf();
  FUN_00417ba7(piVar1,uVar2);
  FUN_0040c93e();
  local_28 = 1;
  local_8 = local_8 & 0xffffff00;
  FUN_004085a7();
  return param_1;
}



void __thiscall FUN_0049b493(int param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 local_14c;
  undefined4 *local_148;
  uint uStack_144;
  undefined4 local_134 [3];
  undefined4 local_128;
  undefined4 *local_124;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4c422;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_134;
  uStack_144 = DAT_0323f878 ^ (uint)&stack0xfffffec0;
  ExceptionList = &local_14;
  local_128 = param_1;
  local_148 = local_134;
  local_134[0] = 0;
  local_14c = 0x49b4ef;
  iVar1 = FUN_0049c817();
  if (iVar1 != 0) {
    local_148 = (undefined4 *)0x49b500;
    FUN_00467993();
    local_124 = &local_14c;
    local_c = 0;
    local_14c = *(undefined4 *)(param_1_00 + 0x14);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1_00 + 0x18);
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_0049b857(int param_1)

{
  int iVar1;
  undefined4 local_f4;
  undefined4 *local_f0;
  uint uStack_ec;
  undefined4 local_dc [2];
  undefined4 *local_d4;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4c35a;
  local_14 = ExceptionList;
  uStack_ec = DAT_0323f878 ^ (uint)&stack0xffffff18;
  ExceptionList = &local_14;
  local_f0 = local_dc;
  local_dc[0] = 0;
  local_f4 = 0x49b89e;
  iVar1 = FUN_0049c817();
  if (iVar1 != 0) {
    local_f0 = (undefined4 *)0x49b8af;
    FUN_00467993();
    local_d4 = &local_f4;
    local_c = 0;
    local_f4 = *(undefined4 *)(param_1 + 0x14);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 0x18);
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_0049ba5b(int param_1)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4c2e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0049c817();
  if (iVar1 != 0) {
    FUN_00467993();
    local_c = 0;
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 0x18);
  }
  ExceptionList = local_14;
  return;
}



void FUN_0049bcfe(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined *local_dc;
  undefined **local_d8;
  uint uStack_d4;
  undefined **local_c4;
  int local_c0;
  undefined local_bc [28];
  undefined local_a0 [8];
  undefined local_98 [132];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4c249;
  local_14 = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  local_d8 = (undefined **)&local_c4;
  local_c4 = (undefined **)0x0;
  local_dc = (undefined *)0x49bd45;
  iVar1 = FUN_0049c817();
  if (iVar1 != 0) {
    local_d8 = (undefined **)local_a0;
    local_dc = (undefined *)0x49bd57;
    FUN_0040c8aa();
    local_d8 = (undefined **)(param_1 + 8);
    local_dc = local_bc;
    local_c = 0;
    uVar2 = FUN_0049abc3();
    local_c._0_1_ = 1;
    FUN_0040e327(local_98,uVar2);
    local_d8 = (undefined **)0x0;
    local_dc = (undefined *)0x1;
    local_c._0_1_ = 0;
    FUN_00401829();
    local_dc = local_98;
    local_d8 = (undefined **)&DAT_00f1ee60;
    FUN_0040e4a0();
    local_dc = (undefined *)0x1e62;
    if (*(char *)(param_1 + 0x10) == '\0') {
      local_d8 = (undefined **)0x4e;
      local_c4 = &local_dc;
      puVar3 = (undefined4 *)FUN_00465be3(&local_c4);
      local_c._0_1_ = 4;
      local_d8 = (undefined **)*puVar3;
      local_dc = (undefined *)0x49be18;
      local_d8 = (undefined **)FUN_0049c4e5();
      local_c._0_1_ = 5;
    }
    else {
      local_d8 = (undefined **)0x4d;
      local_c4 = &local_dc;
      puVar3 = (undefined4 *)FUN_00465be3(&local_c4);
      local_c._0_1_ = 2;
      local_d8 = (undefined **)*puVar3;
      local_dc = (undefined *)0x49bde5;
      local_d8 = (undefined **)FUN_0049c4e5();
      local_c._0_1_ = 3;
    }
    local_dc = local_98;
    FUN_0040e327();
    local_d8 = (undefined **)0x0;
    local_dc = (undefined *)0x1;
    FUN_00401829();
    local_c._0_1_ = 0;
    if (local_c0 != 0) {
      local_d8 = (undefined **)0x49be4d;
      FUN_0040127a();
    }
    local_d8 = (undefined **)0x49be5a;
    local_d8 = (undefined **)FUN_0040c93e();
    local_c = CONCAT31(local_c._1_3_,6);
    local_dc = (undefined *)0x49be6b;
    FUN_00467c1e();
    local_d8 = (undefined **)0x0;
    local_dc = (undefined *)0x1;
    FUN_00401829();
    local_c = 0xffffffff;
    local_d8 = (undefined **)0x49be88;
    FUN_004085a7();
  }
  ExceptionList = local_14;
  return;
}



void FUN_0049bea0(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined *local_dc;
  undefined **local_d8;
  uint uStack_d4;
  undefined **local_c4;
  int local_c0;
  undefined local_bc [28];
  undefined local_a0 [8];
  undefined local_98 [132];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4c16d;
  local_14 = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  local_d8 = (undefined **)&local_c4;
  local_c4 = (undefined **)0x0;
  local_dc = (undefined *)0x49bee6;
  iVar1 = FUN_0049c817();
  if (iVar1 != 0) {
    local_d8 = (undefined **)local_a0;
    local_dc = (undefined *)0x49bef8;
    FUN_0040c8aa();
    local_d8 = (undefined **)(param_1 + 8);
    local_dc = local_bc;
    local_c = 0;
    uVar2 = FUN_0049abc3();
    local_c._0_1_ = 1;
    FUN_0040e327(local_98,uVar2);
    local_d8 = (undefined **)0x0;
    local_dc = (undefined *)0x1;
    local_c._0_1_ = 0;
    FUN_00401829();
    local_dc = local_98;
    local_d8 = (undefined **)&DAT_00f1ee60;
    FUN_0040e4a0();
    local_dc = (undefined *)0x1e62;
    local_d8 = (undefined **)0x73;
    local_c4 = &local_dc;
    puVar3 = (undefined4 *)FUN_00465be3(&local_c4);
    local_c._0_1_ = 2;
    local_d8 = (undefined **)*puVar3;
    local_dc = (undefined *)0x49bf7d;
    local_d8 = (undefined **)FUN_0049c4e5();
    local_dc = local_98;
    local_c._0_1_ = 3;
    FUN_0040e327();
    local_d8 = (undefined **)0x0;
    local_dc = (undefined *)0x1;
    FUN_00401829();
    local_c._0_1_ = 0;
    if (local_c0 != 0) {
      local_d8 = (undefined **)0x49bfb2;
      FUN_0040127a();
    }
    local_d8 = (undefined **)0x49bfbf;
    local_d8 = (undefined **)FUN_0040c93e();
    local_c = CONCAT31(local_c._1_3_,4);
    local_dc = (undefined *)0x49bfd0;
    FUN_00467c1e();
    local_d8 = (undefined **)0x0;
    local_dc = (undefined *)0x1;
    FUN_00401829();
    local_c = 0xffffffff;
    local_d8 = (undefined **)0x49bfed;
    FUN_004085a7();
  }
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_0049c004(int param_1_00,int param_1)

{
  char cVar1;
  undefined uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined *local_e4;
  undefined **local_e0;
  uint uStack_dc;
  undefined **local_cc;
  int local_c8;
  undefined4 local_c4;
  int local_c0;
  undefined local_bc [28];
  undefined local_a0 [8];
  undefined local_98 [132];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4c1db;
  local_14 = ExceptionList;
  uStack_dc = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_14;
  local_e0 = (undefined **)&local_cc;
  local_cc = (undefined **)0x0;
  local_e4 = (undefined *)0x49c04b;
  iVar3 = FUN_0049c817();
  if (iVar3 != 0) {
    local_e0 = (undefined **)local_a0;
    local_e4 = (undefined *)0x49c05d;
    FUN_0040c8aa();
    local_e0 = (undefined **)(param_1 + 8);
    local_e4 = local_bc;
    local_c = 0;
    uVar4 = FUN_0049abc3();
    local_c._0_1_ = 1;
    FUN_0040e327(local_98,uVar4);
    local_e0 = (undefined **)0x0;
    local_e4 = (undefined *)0x1;
    local_c._0_1_ = 0;
    FUN_00401829();
    local_e4 = local_98;
    local_e0 = (undefined **)&DAT_00f1ee60;
    FUN_0040e4a0();
    cVar1 = *(char *)(param_1 + 0x10);
    if (*(char *)(param_1_00 + 0x99) == '\0') {
      if ((char *)(param_1_00 + 0x9a) != (char *)0x0) {
        *(char *)(param_1_00 + 0x9a) = cVar1;
      }
      *(char *)(param_1_00 + 0x99) = '\x01';
    }
    else {
      *(char *)(param_1_00 + 0x9a) = cVar1;
    }
    local_c4 = 0;
    local_c0 = 0;
    local_c._0_1_ = 2;
    uVar2 = (undefined)local_c;
    local_c._0_1_ = 2;
    local_e4 = (undefined *)0x1e62;
    if (cVar1 == '\0') {
      local_e0 = (undefined **)0x4b;
      local_cc = &local_e4;
      local_c._0_1_ = uVar2;
      FUN_00465be3(&local_cc);
      local_c._0_1_ = 4;
    }
    else {
      local_e0 = (undefined **)0x4a;
      local_cc = &local_e4;
      FUN_00465be3(&local_cc);
      local_c._0_1_ = 3;
    }
    local_e0 = (undefined **)&local_c4;
    local_e4 = (undefined *)0x49c133;
    FUN_005d11c9();
    local_c._0_1_ = 2;
    if (local_c8 != 0) {
      local_e0 = (undefined **)0x49c148;
      FUN_0040127a();
    }
    local_e0 = (undefined **)local_c4;
    local_e4 = (undefined *)0x49c157;
    local_e0 = (undefined **)FUN_0049c4e5();
    local_e4 = local_98;
    local_c._0_1_ = 5;
    FUN_0040e327();
    local_e0 = (undefined **)0x0;
    local_e4 = (undefined *)0x1;
    local_c._0_1_ = 2;
    FUN_00401829();
    local_e0 = (undefined **)0x49c18d;
    local_e0 = (undefined **)FUN_0040c93e();
    local_c._0_1_ = 6;
    local_e4 = (undefined *)0x49c19e;
    FUN_00467c1e();
    local_e0 = (undefined **)0x0;
    local_e4 = (undefined *)0x1;
    FUN_00401829();
    local_c = (uint)local_c._1_3_ << 8;
    if (local_c0 != 0) {
      local_e0 = (undefined **)0x49c1be;
      FUN_0040127a();
    }
    local_c = 0xffffffff;
    local_e0 = (undefined **)0x49c1cf;
    FUN_004085a7();
  }
  ExceptionList = local_14;
  return;
}



void FUN_0049c1e7(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined *local_dc;
  undefined **local_d8;
  uint uStack_d4;
  undefined **local_c4;
  int local_c0;
  undefined local_bc [28];
  undefined local_a0 [8];
  undefined local_98 [132];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4c16d;
  local_14 = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  local_d8 = (undefined **)&local_c4;
  local_c4 = (undefined **)0x0;
  local_dc = (undefined *)0x49c22d;
  iVar1 = FUN_0049c817();
  if (iVar1 != 0) {
    local_d8 = (undefined **)local_a0;
    local_dc = (undefined *)0x49c23f;
    FUN_0040c8aa();
    local_d8 = (undefined **)(param_1 + 8);
    local_dc = local_bc;
    local_c = 0;
    uVar2 = FUN_0049abc3();
    local_c._0_1_ = 1;
    FUN_0040e327(local_98,uVar2);
    local_d8 = (undefined **)0x0;
    local_dc = (undefined *)0x1;
    local_c._0_1_ = 0;
    FUN_00401829();
    local_dc = local_98;
    local_d8 = (undefined **)&DAT_00f1ee60;
    FUN_0040e4a0();
    local_dc = (undefined *)0x1e62;
    local_d8 = (undefined **)0x50;
    local_c4 = &local_dc;
    puVar3 = (undefined4 *)FUN_00465be3(&local_c4);
    local_c._0_1_ = 2;
    local_d8 = (undefined **)*puVar3;
    local_dc = (undefined *)0x49c2c4;
    local_d8 = (undefined **)FUN_0049c4e5();
    local_dc = local_98;
    local_c._0_1_ = 3;
    FUN_0040e327();
    local_d8 = (undefined **)0x0;
    local_dc = (undefined *)0x1;
    FUN_00401829();
    local_c._0_1_ = 0;
    if (local_c0 != 0) {
      local_d8 = (undefined **)0x49c2f9;
      FUN_0040127a();
    }
    local_d8 = (undefined **)0x49c306;
    local_d8 = (undefined **)FUN_0040c93e();
    local_c = CONCAT31(local_c._1_3_,4);
    local_dc = (undefined *)0x49c317;
    FUN_00467c1e();
    local_d8 = (undefined **)0x0;
    local_dc = (undefined *)0x1;
    FUN_00401829();
    local_c = 0xffffffff;
    local_d8 = (undefined **)0x49c334;
    FUN_004085a7();
  }
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_0049c34b(int param_1_00,int param_1)

{
  if (*(char *)(param_1_00 + 0x90) == '\0') {
    if ((undefined4 *)(param_1_00 + 0x94) != (undefined4 *)0x0) {
      *(undefined4 *)(param_1_00 + 0x94) = *(undefined4 *)(param_1 + 0x10);
    }
    *(char *)(param_1_00 + 0x90) = '\x01';
  }
  else {
    *(undefined4 *)(param_1_00 + 0x94) = *(undefined4 *)(param_1 + 0x10);
  }
  return;
}



void __thiscall FUN_0049c371(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 *puVar3;
  int unaff_EBX;
  int *local_18;
  int local_14;
  
  local_18 = (int *)0x1;
  local_14 = param_1_00;
  iVar2 = FUN_0049c817(&local_18);
  if (iVar2 != 0) {
    local_18 = *(int **)(param_1_00 + 0x80);
    iVar2 = *local_18;
    uVar1 = *(uint *)(param_1 + 0x10);
    puVar3 = (undefined4 *)FUN_00453c32();
    (**(code **)(iVar2 + 0xc))(uVar1 ^ 0xc36e821c,*puVar3,puVar3[1]);
    (**(code **)(**(int **)(unaff_EBX + 0x88) + 0xc))
              (*(uint *)(param_1 + 0x10) ^ 0xc36e821c,*(undefined4 *)(param_1 + 8),
               *(undefined4 *)(param_1 + 0xc));
  }
  return;
}



void __thiscall FUN_0049c3f4(int param_1_00,int param_1)

{
  int *piVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 *puVar5;
  int unaff_EBX;
  undefined4 local_34;
  undefined4 *local_30;
  int *local_2c;
  int local_28;
  undefined4 local_24;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c49a9b;
  local_14 = ExceptionList;
  puVar3 = (undefined4 *)(DAT_0323f878 ^ (uint)&stack0xffffffc0);
  ExceptionList = &local_14;
  local_34 = 1;
  local_28 = param_1_00;
  iVar4 = FUN_0049c817(&local_34);
  if (iVar4 != 0) {
    puVar5 = (undefined4 *)FUN_0049daf4(param_1,&local_30);
    local_34 = *puVar5;
    *puVar5 = 0;
    local_c = 0;
    local_24 = local_34;
    if (local_30 != (undefined4 *)0x0) {
      (**(code **)*local_30)(1);
    }
    piVar1 = *(int **)(param_1_00 + 0x80);
    uVar2 = *(uint *)(param_1 + 0x10);
    local_2c = piVar1;
    puVar5 = (undefined4 *)FUN_00453c32();
    (**(code **)(*piVar1 + 0x10))(uVar2 ^ 0xc36e821c,local_34,*puVar5,puVar5[1]);
    (**(code **)(**(int **)(unaff_EBX + 0x88) + 0x10))
              (*(uint *)(param_1 + 0x10) ^ 0xc36e821c,puVar3,*(undefined4 *)(param_1 + 8),
               *(undefined4 *)(param_1 + 0xc));
    local_c = 0xffffffff;
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_0049c4e5(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0049c7cb(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x49c7e3;
  FUN_0049ca43();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0049c7ea;
  FUN_00a3f6a1();
}



void FUN_0049c7f3(void)

{
  int *piVar1;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EDI + 0x18);
  FUN_005d43f9(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(unaff_EDI + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



int FUN_0049c817(undefined4 param_1)

{
  int iVar1;
  int local_20;
  int local_1c;
  int local_18;
  int local_14;
  
  FUN_0049cb4c(param_1);
  iVar1 = 0;
  while( true ) {
    if ((local_20 == 0) || (local_20 != local_18)) {
      FUN_00a3fb10();
    }
    if (local_1c == local_14) break;
    iVar1 = iVar1 + 1;
    FUN_00794e17();
  }
  return iVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0049c864(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x49c87c;
  FUN_0049ca77();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0049c883;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0049c88c(undefined4 param_1,int *param_2)

{
  char cVar1;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  int iVar5;
  undefined *puStack_a0;
  int *local_9c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_54 [28];
  int local_38;
  int local_34;
  int **local_2c;
  int local_28;
  int **local_24;
  int *local_20;
  undefined *local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x74;
  local_8 = 0x49c898;
  local_2c = (int **)&stack0xffffff68;
  local_9c = (int *)0x1;
  puStack_a0 = (undefined *)0x49c8a5;
  FUN_0043abcd();
  local_2c = &local_9c;
  puStack_a0 = (undefined *)0x1;
  FUN_0043b07c();
  local_2c = (int **)&puStack_a0;
  FUN_0043b510(0x7b2);
  FUN_0043a6c3();
  local_2c = &local_9c;
  puStack_a0 = (undefined *)0x0;
  local_9c = (int *)FUN_0043b546(0,0,0,0);
  puStack_a0 = local_1c;
  FUN_0043b81b();
  local_9c = param_2;
  puStack_a0 = (undefined *)0x49c8fc;
  cVar1 = FUN_00480c29();
  if (cVar1 != '\0') {
    local_9c = (int *)0x49c90f;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_54,"Cannot convert dates prior to Jan 1, 1970");
    local_8 = 0;
    local_9c = (int *)0x49c91e;
    FUN_00417ca0();
    local_8 = CONCAT31(local_8._1_3_,1);
    local_9c = (int *)0x49c932;
    FUN_0049d3f9();
  }
  local_9c = (int *)0x49c93e;
  FUN_00496e91();
  FUN_0049d03c();
  local_9c = &local_28;
  puStack_a0 = (undefined *)0x49c958;
  FUN_00496cf1();
  iVar2 = FUN_00496cd0();
  local_9c = (int *)0xd693a400;
  puStack_a0 = (undefined *)local_24;
  iVar3 = __alldiv(local_28);
  iVar5 = (int)local_2c * 0x18;
  local_38 = FUN_00496caf();
  local_38 = local_38 + (iVar2 + (iVar3 + iVar5) * 0x3c) * 0x3c;
  local_34 = local_38 >> 0x1f;
  local_9c = &local_38;
  puStack_a0 = (undefined *)0x49c9a3;
  puVar4 = (undefined4 *)FUN_00496c69();
  local_9c = (int *)(uint)*(ushort *)(puVar4 + 3);
  local_2c = (int **)&stack0xffffff68;
  puStack_a0 = (undefined *)0x49c9b7;
  FUN_0043abcd();
  local_2c = &local_9c;
  puStack_a0 = (undefined *)(uint)(ushort)(*(short *)(puVar4 + 4) + 1);
  FUN_0043b07c();
  local_2c = (int **)&puStack_a0;
  FUN_0043b510(*(short *)(puVar4 + 5) + 0x76c);
  FUN_0043a6c3();
  local_9c = &local_28;
  puStack_a0 = (undefined *)0x49c9f8;
  FUN_00496cf1();
  local_9c = (int *)0xf4240;
  puStack_a0 = (undefined *)local_24;
  local_9c = (int *)__allrem(local_28);
  puStack_a0 = (undefined *)*puVar4;
  FUN_0043b659(puVar4[2],puVar4[1]);
  local_24 = &local_9c;
  local_9c = local_20;
  puStack_a0 = (undefined *)local_2c;
  FUN_0043b81b();
  return param_1;
}



void FUN_0049ca43(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_0049caad(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_0049ca77(void)

{
  undefined4 *unaff_ESI;
  
  FUN_0049cc14(*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_0049caad(int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  int *in_EAX;
  
  iVar1 = *(int *)in_EAX[6];
  if ((param_2 == 0) || (param_2 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_3 == iVar1) {
    iVar1 = in_EAX[6];
    if ((param_4 == 0) || (param_4 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_5 == iVar1) {
      FUN_0049c7f3();
      param_1[1] = *(int *)in_EAX[6];
      *param_1 = *in_EAX;
      return;
    }
  }
  while( true ) {
    if ((param_2 == 0) || (param_2 != param_4)) {
      FUN_00a3fb10();
    }
    if (param_3 == param_5) break;
    FUN_00794e17();
    FUN_0049cccf();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void __thiscall FUN_0049cb4c(undefined4 *param_1_00,int *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *local_8;
  
  puVar4 = (undefined4 *)param_1_00[6];
  local_8 = puVar4;
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x11) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((int)puVar2[3] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        if ((*(char *)((int)puVar4 + 0x11) != '\0') && (*param_1 < (int)puVar2[3])) {
          puVar4 = puVar2;
        }
        puVar3 = (undefined4 *)*puVar2;
        local_8 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x11) == '\0');
  }
  if (*(char *)((int)puVar4 + 0x11) == '\0') {
    puVar2 = (undefined4 *)*puVar4;
  }
  else {
    puVar2 = *(undefined4 **)(param_1_00[6] + 4);
  }
  if (*(char *)((int)puVar2 + 0x11) == '\0') {
    do {
      if (*param_1 < (int)puVar2[3]) {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      else {
        puVar3 = (undefined4 *)puVar2[2];
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x11) == '\0');
  }
  uVar1 = *param_1_00;
  in_EAX[1] = local_8;
  *in_EAX = uVar1;
  in_EAX[2] = uVar1;
  in_EAX[3] = puVar4;
  return;
}



void __thiscall FUN_0049cbd2(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x11) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



void FUN_0049cc14(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int *in_EAX;
  int *unaff_EBX;
  
  iVar1 = *(int *)in_EAX[6];
  if ((param_1 == 0) || (param_1 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_2 == iVar1) {
    iVar1 = in_EAX[6];
    if ((param_3 == 0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_4 == iVar1) {
      FUN_0049cf5c(*(undefined4 *)(in_EAX[6] + 4));
      *(int *)(in_EAX[6] + 4) = in_EAX[6];
      in_EAX[7] = 0;
      *(int *)in_EAX[6] = in_EAX[6];
      *(int *)(in_EAX[6] + 8) = in_EAX[6];
      unaff_EBX[1] = *(int *)in_EAX[6];
      *unaff_EBX = *in_EAX;
      return;
    }
  }
  while( true ) {
    if ((param_1 == 0) || (param_1 != param_3)) {
      FUN_00a3fb10();
    }
    if (param_2 == param_4) break;
    FUN_00743d11();
    FUN_005fd4a4();
  }
  *unaff_EBX = *in_EAX;
  unaff_EBX[1] = param_2;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x0049cdba)
// WARNING: Removing unreachable block (ram,0x0049cdca)
// WARNING: Removing unreachable block (ram,0x0049cdd3)
// WARNING: Removing unreachable block (ram,0x0049cdd6)
// WARNING: Removing unreachable block (ram,0x0049cdc6)
// WARNING: Removing unreachable block (ram,0x0049cde3)
// WARNING: Removing unreachable block (ram,0x0049cdf3)
// WARNING: Removing unreachable block (ram,0x0049cdfe)
// WARNING: Removing unreachable block (ram,0x0049cdfa)
// WARNING: Removing unreachable block (ram,0x0049cdee)
// WARNING: Removing unreachable block (ram,0x0049ce01)

void FUN_0049cccf(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x49ccdb;
  if (*(char *)((int)param_4 + 0x11) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00794e17();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x11) == '\0') {
    if (*(char *)(param_4[2] + 0x11) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x11) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x11) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x11) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x11) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x11) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 4) != '\x01') {
LAB_0049cf32:
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_0049cee6:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 4) != '\x01'))
  goto LAB_0049cf2e;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 4) == '\0') {
      *(undefined *)(ppiVar4 + 4) = 1;
      *(undefined *)(ppiVar3 + 4) = 0;
      FUN_007e2489(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x11) == '\0') {
      if ((*(char *)(*ppiVar4 + 4) != '\x01') || (*(char *)(ppiVar4[2] + 4) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 4) == '\x01') {
          *(undefined *)(*ppiVar4 + 4) = 1;
          *(undefined *)(ppiVar4 + 4) = 0;
          FUN_0049cbd2(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 4) = *(undefined *)(ppiVar3 + 4);
        *(undefined *)(ppiVar3 + 4) = 1;
        *(undefined *)(ppiVar4[2] + 4) = 1;
        FUN_007e2489(param_1);
        goto LAB_0049cf2e;
      }
LAB_0049cedd:
      *(undefined *)(ppiVar4 + 4) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 4) == '\0') {
      *(undefined *)(ppiVar4 + 4) = 1;
      *(undefined *)(ppiVar3 + 4) = 0;
      FUN_0049cbd2(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x11) == '\0') {
      if ((*(char *)(ppiVar4[2] + 4) == '\x01') && (*(char *)(*ppiVar4 + 4) == '\x01'))
      goto LAB_0049cedd;
      if (*(char *)(*ppiVar4 + 4) == '\x01') {
        *(undefined *)(ppiVar4[2] + 4) = 1;
        *(undefined *)(ppiVar4 + 4) = 0;
        FUN_007e2489(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 4) = *(undefined *)(ppiVar3 + 4);
      *(undefined *)(ppiVar3 + 4) = 1;
      *(undefined *)(*ppiVar4 + 4) = 1;
      FUN_0049cbd2(param_1);
LAB_0049cf2e:
      *(undefined *)(ppiVar5 + 4) = 1;
      goto LAB_0049cf32;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_0049cee6;
}



void FUN_0049cf5c(int param_1)

{
  if (*(char *)(param_1 + 0x2d) == '\0') {
    FUN_0049cf5c(*(undefined4 *)(param_1 + 8));
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



undefined4 FUN_0049cf9a(void)

{
  char cVar1;
  int *in_EAX;
  
  if (*in_EAX != -2) {
    cVar1 = FUN_0043b67a(*in_EAX);
    if (cVar1 == '\0') {
      return 0;
    }
  }
  return 1;
}



void FUN_0049cfb3(int *param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *unaff_EBX;
  int *unaff_ESI;
  
  cVar2 = FUN_0043b68d();
  if ((cVar2 != '\0') || (cVar2 = FUN_0043b68d(), cVar2 != '\0')) {
    iVar3 = *unaff_EBX;
    if (((iVar3 == -2) || (iVar1 = *param_1, iVar1 == -2)) || ((iVar3 == -1 && (iVar1 == -1)))) {
LAB_0049cfef:
      *unaff_ESI = -2;
      return;
    }
    if (iVar3 == 0) {
      if (iVar1 == 0) goto LAB_0049cfef;
      goto LAB_0049cffb;
    }
    if (iVar3 == -1) goto LAB_0049cffb;
    if (iVar1 == -1) {
      *unaff_ESI = 0;
      return;
    }
    if (iVar1 == 0) {
      *unaff_ESI = -1;
      return;
    }
  }
  iVar3 = *unaff_EBX - *param_1;
LAB_0049cffb:
  *unaff_ESI = iVar3;
  return;
}



int FUN_0049d01c(void)

{
  int in_EAX;
  
  if (in_EAX == -2) {
    return 0;
  }
  if (in_EAX == 0) {
    return 1;
  }
  return ((in_EAX != -1) - 1 & 0xfffffffd) + 5;
}



void __fastcall FUN_0049d03c(int *param_1)

{
  char cVar1;
  int *in_EAX;
  int iVar2;
  int *unaff_EDI;
  int local_8;
  
  cVar1 = FUN_0049cf9a();
  if ((cVar1 == '\0') && (cVar1 = FUN_0049cf9a(), cVar1 == '\0')) {
    *unaff_EDI = *param_1 - *in_EAX;
    return;
  }
  local_8 = *in_EAX;
  FUN_0049cfb3(&local_8);
  iVar2 = FUN_0049d01c();
  if (iVar2 != 0) {
    if (iVar2 == 1) {
      *unaff_EDI = -0x80000000;
      return;
    }
    if (iVar2 == 2) {
      *unaff_EDI = 0x7fffffff;
      return;
    }
    if (iVar2 == 3) {
      *unaff_EDI = -0x7fffffff;
      return;
    }
    if (iVar2 == 4) {
      *unaff_EDI = 0x7ffffffd;
      return;
    }
  }
  *unaff_EDI = 0x7ffffffe;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0049d0c4(undefined4 *param_1)

{
  int iVar1;
  int unaff_EBX;
  
  param_1[0xf] = &DAT_00fafc18;
  param_1[0x11] = boost::exception_detail::clone_base::vftable;
  FUN_0049d3b2(unaff_EBX);
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_std::out_of_range>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::out_of_range>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::out_of_range>_>::
       vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + 0x28;
  }
  FUN_00401200(param_1 + 10,iVar1);
  return param_1;
}



undefined4 FUN_0049d142(undefined4 param_1)

{
  FUN_0049d0c4(param_1);
  return param_1;
}



void FUN_0049d157(undefined4 param_1)

{
  undefined4 *unaff_ESI;
  
  FUN_00418bc1(param_1);
  unaff_ESI[10] = boost::exception::vftable;
  unaff_ESI[0xb] = 0;
  unaff_ESI[0xc] = 0;
  unaff_ESI[0xd] = 0;
  unaff_ESI[0xe] = 0xffffffff;
  *unaff_ESI = boost::exception_detail::error_info_injector<class_std::out_of_range>::vftable;
  unaff_ESI[10] = boost::exception_detail::error_info_injector<class_std::out_of_range>::vftable;
  return;
}



void __fastcall FUN_0049d191(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_std::out_of_range>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::out_of_range>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::out_of_range>_>::
       vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  FUN_0049d1ca();
  param_1[0x11] = boost::exception_detail::clone_base::vftable;
  return;
}



void FUN_0049d1ca(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = boost::exception_detail::error_info_injector<class_std::out_of_range>::vftable;
  unaff_ESI[10] = boost::exception_detail::error_info_injector<class_std::out_of_range>::vftable;
  unaff_ESI[10] = boost::exception::vftable;
  FUN_00401874();
  *unaff_ESI = std::out_of_range::vftable;
  FUN_00417cf8();
  return;
}



void FUN_0049d1f3(void)

{
  FUN_0049d2f9();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0049d1fb(undefined4 *param_1)

{
  int iVar1;
  int unaff_EBX;
  
  param_1[0xf] = &DAT_00fafc18;
  param_1[0x11] = boost::exception_detail::clone_base::vftable;
  FUN_0049d3b2(unaff_EBX);
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_std::out_of_range>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::out_of_range>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::out_of_range>_>::
       vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + 0x28;
  }
  FUN_00401200(param_1 + 10,iVar1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_0049d279(void)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  
  pvVar1 = operator_new(0x48);
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_0049d1fb(pvVar1,local_14);
  }
  if (iVar2 != 0) {
    iVar2 = *(int *)(*(int *)(iVar2 + 0x3c) + 4) + 0x3c + iVar2;
  }
  return iVar2;
}



void FUN_0049d2c6(void)

{
  FUN_0049d279();
  return;
}



void __fastcall FUN_0049d2ce(int param_1)

{
  code *pcVar1;
  undefined local_4c [72];
  
  clone_impl<>(param_1 + -0x44,1);
  __CxxThrowException_8(local_4c,&DAT_03115b68);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0049d2f1(void)

{
  FUN_0049d2ce();
  return;
}



undefined4 __thiscall FUN_0049d2f9(undefined4 param_1_00,byte param_1)

{
  FUN_0049d191();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0049d315(void)

{
  FUN_0049d2f9();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >(class
// boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class
// std::domain_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::evaluation_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::rounding_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error> > const &)
// 
// Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release

undefined4 * __thiscall clone_impl<>(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_0049d3b2(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::out_of_range>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::out_of_range>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::out_of_range>_>::
       vftable;
  *(undefined4 *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) = 0;
  return param_1_00;
}



undefined4 __thiscall FUN_0049d38e(undefined4 param_1,byte param_2)

{
  FUN_0049d1ca();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_0049d3aa(void)

{
  FUN_0049d38e();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0049d3b2(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FUN_00418bc1(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0x28;
  }
  FUN_00401569(iVar1);
  *param_1_00 = boost::exception_detail::error_info_injector<class_std::out_of_range>::vftable;
  param_1_00[10] = boost::exception_detail::error_info_injector<class_std::out_of_range>::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0049d3f9(undefined4 param_1)

{
  code *pcVar1;
  undefined local_5c [84];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x88;
  local_8 = 0x49d408;
  FUN_0049d157(param_1);
  local_8 = 0;
  FUN_0049d142(local_5c);
  __CxxThrowException_8(local_5c,&DAT_03115b68);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0049d47c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0049d54a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0049d5ca(undefined4 param_1_00,byte param_1)

{
  FUN_0049d5e6();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0049d5e6(undefined4 *param_1)

{
  *param_1 = W515EA149::W851524A5::vftable;
  if (*(char *)(param_1 + 1) != '\0') {
    *(undefined *)(param_1 + 1) = 0;
  }
  *param_1 = W515EA149::W6202213D::vftable;
  return;
}



void __thiscall FUN_0049d678(int param_1_00,int param_1)

{
  if (*(char *)(param_1_00 + 4) == '\0') {
    if ((undefined *)(param_1_00 + 5) != (undefined *)0x0) {
      *(undefined *)(param_1_00 + 5) = *(undefined *)(param_1 + 0x10);
    }
    *(undefined *)(param_1_00 + 4) = 1;
  }
  else {
    *(undefined *)(param_1_00 + 5) = *(undefined *)(param_1 + 0x10);
  }
  return;
}



void FUN_0049d69a(void)

{
  undefined *in_EAX;
  char *unaff_ESI;
  
  *in_EAX = 0;
  if (*unaff_ESI != '\0') {
    if (in_EAX + 1 != (char *)0x0) {
      in_EAX[1] = unaff_ESI[1];
    }
    *in_EAX = 1;
  }
  return;
}



void __fastcall FUN_0049d6b2(undefined4 *param_1)

{
  *param_1 = W515EA149::W4CE0AD1E::vftable;
  return;
}



undefined4 * __thiscall FUN_0049d6b9(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W515EA149::W4CE0AD1E::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0049d773(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W515EA149::W4CE0AD1E::vftable;
  return;
}



undefined4 __thiscall FUN_0049d77a(int param_1_00,undefined4 param_1)

{
  int iStack_20;
  int iStack_1c;
  undefined4 local_c;
  
  iStack_20 = param_1_00;
  iStack_1c = param_1_00;
  FUN_0049d7c3(&iStack_20);
  local_c = CONCAT31((int3)((uint)&iStack_20 >> 8),*(undefined *)(param_1_00 + 0x1c));
  FUN_00499424(param_1,*(undefined4 *)(param_1_00 + 0x18),local_c);
  return param_1;
}



undefined4 FUN_0049d7c3(undefined4 param_1)

{
  FUN_00468575(param_1,0);
  return param_1;
}



undefined4 FUN_0049d831(undefined4 param_1)

{
  undefined auStack_20 [8];
  
  FUN_0049d7c3(auStack_20);
  FUN_004994cf(param_1);
  return param_1;
}



void __thiscall FUN_0049d86b(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x24))(param_1_00);
  return;
}



undefined4 FUN_0049d8cd(undefined4 param_1)

{
  undefined auStack_20 [8];
  
  FUN_0049d7c3(auStack_20);
  FUN_00499574(param_1);
  return param_1;
}



undefined4 __thiscall FUN_0049d907(int param_1_00,undefined4 param_1)

{
  FUN_00499619(param_1,*(undefined *)(param_1_00 + 0x10));
  return param_1;
}



undefined4 FUN_0049d92a(undefined4 param_1)

{
  FUN_004996a1(param_1);
  return param_1;
}



undefined4 __thiscall FUN_0049d947(int param_1_00,undefined4 param_1)

{
  FUN_00499723(param_1,*(undefined *)(param_1_00 + 0x10));
  return param_1;
}



undefined4 __thiscall FUN_0049d96a(int param_1_00,undefined4 param_1)

{
  FUN_004997ab(param_1,*(undefined4 *)(param_1_00 + 0x10),*(undefined *)(param_1_00 + 0x14));
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

undefined4 * FUN_0049d991(undefined4 *param_1,undefined4 **param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  code **ppcVar2;
  code *pcVar3;
  undefined4 *puVar4;
  undefined4 *unaff_EBX;
  undefined4 **ppuVar5;
  undefined4 *puVar6;
  undefined4 *puStack_28;
  undefined4 *puStack_24;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puStack_24 = param_1;
  puStack_28 = (undefined4 *)0x49d9aa;
  FUN_0049dc55();
  puStack_24 = param_3;
  local_8._0_1_ = 1;
  param_1[4] = param_2;
  param_3 = (undefined4 *)0x0;
  *param_1 = W515EA149::W6EA8DBB8::vftable;
  puStack_28 = &param_2;
  param_2 = &puStack_24;
  puVar4 = (undefined4 *)FUN_00bb6ee0();
  ppuVar5 = (undefined4 **)auStack_20;
  uVar1 = *puVar4;
  *puVar4 = 0;
  param_1[5] = uVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  if (param_2 != (undefined4 **)0x0) {
    puStack_24 = (undefined4 *)0x1;
    ppuVar5 = &puStack_28;
    puStack_28 = (undefined4 *)0x49d9ed;
    (*(code *)**param_2)();
  }
  param_1[2] = *unaff_EBX;
  local_8 = 0xffffffff;
  param_1[3] = unaff_EBX[1];
  if (param_3 != (undefined4 *)0x0) {
    ppcVar2 = (code **)*param_3;
    *(undefined4 *)((int)ppuVar5 + -4) = 1;
    pcVar3 = *ppcVar2;
    puVar6 = (undefined4 *)((int)ppuVar5 + -8);
    ppuVar5 = (undefined4 **)((int)ppuVar5 + -8);
    *puVar6 = 0x49da09;
    (*pcVar3)();
  }
  *(undefined4 *)((int)ppuVar5 + -4) = 0x49da10;
  return param_1;
}



undefined4 __thiscall FUN_0049da13(undefined4 param_1_00,byte param_1)

{
  FUN_0049da2f();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_0049da2f(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c12a27;
  *param_1 = W515EA149::W6EA8DBB8::vftable;
  if ((undefined4 *)param_1[5] != (undefined4 *)0x0) {
    puVar1 = (undefined *)(***(code ***)(undefined4 *)param_1[5])(1);
  }
  param_1[5] = 0;
  if ((undefined4 *)param_1[5] != (undefined4 *)0x0) {
    puVar1 = (undefined *)(***(code ***)(undefined4 *)param_1[5])(1);
  }
  *param_1 = W515EA149::W4CE0AD1E::vftable;
  return puVar1;
}



undefined * Catch_All_0049da83(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 1;
  return &DAT_0049da90;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0049da95(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 **local_34;
  int iStack_30;
  undefined4 ***local_1c;
  undefined4 *local_18;
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x49daa1;
  local_14 = 0;
  iStack_30 = param_1_00 + 8;
  local_34 = &local_18;
  puVar1 = (undefined4 *)FUN_0049daf4(param_1_00);
  local_8 = 1;
  local_34 = (undefined4 **)*puVar1;
  *puVar1 = 0;
  local_1c = &local_34;
  FUN_00499839(param_1,*(undefined4 *)(param_1_00 + 0x10));
  local_8 = local_8 & 0xffffff00;
  local_14 = 1;
  if (local_18 != (undefined4 *)0x0) {
    iStack_30 = 1;
    local_34 = (undefined4 **)0x49dae9;
    (**(code **)*local_18)();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0049daf4(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  puVar2 = param_2;
  puVar3 = (undefined4 *)FUN_00b93190(param_1[5],&param_1);
  uVar1 = *puVar3;
  *puVar3 = 0;
  *puVar2 = uVar1;
  if (param_1 != (undefined4 *)0x0) {
    (**(code **)*param_1)(1);
  }
  return puVar2;
}



void __thiscall FUN_0049db3e(undefined4 param_1_00,undefined4 *param_1)

{
  (**(code **)*param_1)(param_1_00);
  return;
}



undefined4 FUN_0049db4c(undefined4 param_1)

{
  FUN_004998d3(param_1);
  return param_1;
}



undefined4 __thiscall FUN_0049db69(int param_1_00,undefined4 param_1)

{
  FUN_00499955(param_1,*(undefined4 *)(param_1_00 + 0x10));
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0049db8a(undefined4 *param_1,undefined4 param_2)

{
  undefined4 *unaff_EDI;
  
  FUN_0049dc55(param_1);
  *param_1 = W515EA149::WAA9992A6::vftable;
  basic_string<>(param_2);
  param_1[2] = *unaff_EDI;
  param_1[3] = unaff_EDI[1];
  return param_1;
}



undefined4 * __thiscall FUN_0049dbc9(undefined4 *param_1_00,byte param_1)

{
  FUN_00401829(1,0);
  *param_1_00 = W515EA149::W4CE0AD1E::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0049dbf2(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  undefined local_30 [28];
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x49dbfe;
  local_14 = 0;
  uVar1 = FUN_0049dc3a(local_30);
  local_8 = 0;
  FUN_004999dd(param_1,uVar1,param_1_00 + 8);
  FUN_00401829(1,0);
  return param_1;
}



undefined4 FUN_0049dc3a(undefined4 param_1)

{
  int in_EAX;
  
  basic_string<>(in_EAX + 0x10);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0049dc55(undefined4 *param_1)

{
  *param_1 = W515EA149::WEB21216D::vftable;
  FUN_00453c32();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0049dc80(void)

{
  undefined4 *puVar1;
  undefined local_2c [8];
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3b4;
  local_8 = 0x49dc8f;
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_004a65f7(local_2c,local_24,local_20,local_1c,local_18);
  puVar1 = (undefined4 *)FUN_004a6682(&local_24);
  local_8 = 0;
  local_1c = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_004a5a31(void)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  undefined auStack_d8 [20];
  undefined4 uStack_c4;
  undefined *puStack_c0;
  undefined *puStack_bc;
  int **ppiStack_b8;
  uint uStack_b4;
  undefined **appuStack_a4 [2];
  undefined *puStack_9c;
  undefined auStack_98 [28];
  undefined4 uStack_7c;
  undefined4 uStack_50;
  int *piStack_48;
  int *local_30 [3];
  undefined4 *puStack_24;
  undefined4 *puStack_20;
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2bb0e;
  local_14 = ExceptionList;
  uStack_b4 = DAT_0323f878 ^ (uint)&stack0xffffff50;
  ExceptionList = &local_14;
  ppiStack_b8 = local_30;
  puStack_bc = (undefined *)0x4a5a70;
  FUN_004382a5();
  local_c = 0;
  ppiStack_b8 = (int **)0x4a5a84;
  FUN_0049dc80();
  puVar1 = puStack_24;
  if (puStack_20 < puStack_24) {
    ppiStack_b8 = (int **)0x4a5a99;
    FUN_00a3fb10();
  }
  piStack_48 = local_30[0];
  if (puStack_20 < puStack_24) {
    ppiStack_b8 = (int **)0x4a5abe;
    FUN_00a3fb10();
  }
  if ((piStack_48 == (int *)0x0) || (piStack_48 != local_30[0])) {
    ppiStack_b8 = (int **)0x4a5ad4;
    FUN_00a3fb10();
  }
  if (puVar1 != puStack_20) {
    if (piStack_48 == (int *)0x0) {
      ppiStack_b8 = (int **)0x4a5aed;
      FUN_00a3fb10();
      iVar2 = 0;
    }
    else {
      iVar2 = *piStack_48;
    }
    if (*(undefined4 **)(iVar2 + 0x10) <= puVar1) {
      ppiStack_b8 = (int **)0x4a5af9;
      FUN_00a3fb10();
    }
    uStack_50 = *puVar1;
    ppiStack_b8 = (int **)(puVar1 + 1);
                    // WARNING: Subroutine does not return
    puStack_bc = &UNK_004a5b0c;
    FUN_0043c023();
  }
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 8;
  puStack_bc = (undefined *)0x4a5cbb;
  puStack_bc = (undefined *)FUN_004b7dc9();
  local_c._0_1_ = 9;
  puStack_c0 = (undefined *)0x4a5ccd;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 10;
  uStack_c4 = 0x4a5ce4;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a5cf0;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a5cfc;
  FUN_00401829();
  local_c._0_1_ = 0;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a5d10;
  FUN_0083e850();
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 0xb;
  puStack_bc = (undefined *)0x4a5d48;
  puStack_bc = (undefined *)FUN_004b7d78();
  local_c._0_1_ = 0xc;
  puStack_c0 = (undefined *)0x4a5d5a;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 0xd;
  uStack_c4 = 0x4a5d71;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a5d7d;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a5d89;
  FUN_00401829();
  local_c._0_1_ = 0;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a5d9d;
  FUN_0083e850();
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 0xe;
  puStack_bc = (undefined *)0x4a5dd5;
  puStack_bc = (undefined *)FUN_004b7d27();
  local_c._0_1_ = 0xf;
  puStack_c0 = (undefined *)0x4a5de7;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 0x10;
  uStack_c4 = 0x4a5dfe;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a5e0a;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a5e16;
  FUN_00401829();
  local_c._0_1_ = 0;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a5e2a;
  FUN_0083e850();
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 0x11;
  puStack_bc = (undefined *)0x4a5e62;
  puStack_bc = (undefined *)FUN_004b7cd6();
  local_c._0_1_ = 0x12;
  puStack_c0 = (undefined *)0x4a5e74;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 0x13;
  uStack_c4 = 0x4a5e8b;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a5e97;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a5ea3;
  FUN_00401829();
  local_c._0_1_ = 0;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a5eb7;
  FUN_0083e850();
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 0x14;
  puStack_bc = (undefined *)0x4a5eef;
  puStack_bc = (undefined *)FUN_004b7c85();
  local_c._0_1_ = 0x15;
  puStack_c0 = (undefined *)0x4a5f01;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 0x16;
  uStack_c4 = 0x4a5f18;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a5f24;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a5f30;
  FUN_00401829();
  local_c._0_1_ = 0;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a5f44;
  FUN_0083e850();
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 0x17;
  puStack_bc = (undefined *)0x4a5f7c;
  puStack_bc = (undefined *)FUN_004b7c34();
  local_c._0_1_ = 0x18;
  puStack_c0 = (undefined *)0x4a5f8e;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 0x19;
  uStack_c4 = 0x4a5fa5;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a5fb1;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a5fbd;
  FUN_00401829();
  local_c._0_1_ = 0;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a5fd1;
  FUN_0083e850();
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 0x1a;
  puStack_bc = (undefined *)0x4a6009;
  puStack_bc = (undefined *)FUN_004b7be3();
  local_c._0_1_ = 0x1b;
  puStack_c0 = (undefined *)0x4a601b;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 0x1c;
  uStack_c4 = 0x4a6032;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a603e;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a604a;
  FUN_00401829();
  local_c._0_1_ = 0;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a605e;
  FUN_0083e850();
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 0x1d;
  puStack_bc = (undefined *)0x4a6096;
  puStack_bc = (undefined *)FUN_004b7b92();
  local_c._0_1_ = 0x1e;
  puStack_c0 = (undefined *)0x4a60a8;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 0x1f;
  uStack_c4 = 0x4a60bf;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a60cb;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a60d7;
  FUN_00401829();
  local_c._0_1_ = 0;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a60eb;
  FUN_0083e850();
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 0x20;
  puStack_bc = (undefined *)0x4a6123;
  puStack_bc = (undefined *)FUN_004b7b41();
  local_c._0_1_ = 0x21;
  puStack_c0 = (undefined *)0x4a6135;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 0x22;
  uStack_c4 = 0x4a614c;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a6158;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a6164;
  FUN_00401829();
  local_c._0_1_ = 0;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a6178;
  FUN_0083e850();
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 0x23;
  puStack_bc = (undefined *)0x4a61b0;
  puStack_bc = (undefined *)FUN_004b7af0();
  local_c._0_1_ = 0x24;
  puStack_c0 = (undefined *)0x4a61c2;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 0x25;
  uStack_c4 = 0x4a61d9;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a61e5;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a61f1;
  FUN_00401829();
  local_c._0_1_ = 0;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a6205;
  FUN_0083e850();
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 0x26;
  puStack_bc = (undefined *)0x4a623d;
  puStack_bc = (undefined *)FUN_004b7a9f();
  local_c._0_1_ = 0x27;
  puStack_c0 = (undefined *)0x4a624f;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 0x28;
  uStack_c4 = 0x4a6266;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a6272;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a627e;
  FUN_00401829();
  local_c._0_1_ = 0;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a6292;
  FUN_0083e850();
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 0x29;
  puStack_bc = (undefined *)0x4a62ca;
  puStack_bc = (undefined *)FUN_004b7a4e();
  local_c._0_1_ = 0x2a;
  puStack_c0 = (undefined *)0x4a62dc;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 0x2b;
  uStack_c4 = 0x4a62f3;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a62ff;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a630b;
  FUN_00401829();
  local_c._0_1_ = 0;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a631f;
  FUN_0083e850();
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 0x2c;
  puStack_bc = (undefined *)0x4a6357;
  puStack_bc = (undefined *)FUN_004b79fd();
  local_c._0_1_ = 0x2d;
  puStack_c0 = (undefined *)0x4a6369;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 0x2e;
  uStack_c4 = 0x4a6380;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a638c;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a6398;
  FUN_00401829();
  local_c._0_1_ = 0;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a63ac;
  FUN_0083e850();
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 0x2f;
  puStack_bc = (undefined *)0x4a63e4;
  puStack_bc = (undefined *)FUN_004b79ac();
  local_c._0_1_ = 0x30;
  puStack_c0 = (undefined *)0x4a63f6;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 0x31;
  uStack_c4 = 0x4a640d;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a6419;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a6425;
  FUN_00401829();
  local_c._0_1_ = 0;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a6439;
  FUN_0083e850();
  ppiStack_b8 = (int **)0x11;
  puStack_9c = auStack_d8;
  FUN_004180b1();
  uVar3 = FUN_007b0dbb(appuStack_a4,0);
  local_c._0_1_ = 0x32;
  puStack_bc = (undefined *)0x4a6471;
  puStack_bc = (undefined *)FUN_004b795b();
  local_c._0_1_ = 0x33;
  puStack_c0 = (undefined *)0x4a6483;
  basic_string<>();
  uStack_7c = 0;
  puStack_c0 = auStack_98;
  local_c._0_1_ = 0x34;
  uStack_c4 = 0x4a649a;
  puStack_bc = (undefined *)uVar3;
  FUN_0090d3b0();
  ppiStack_b8 = (int **)0x4a64a6;
  FUN_0040159c();
  ppiStack_b8 = (int **)0x0;
  puStack_bc = (undefined *)0x1;
  puStack_c0 = (undefined *)0x4a64b2;
  FUN_00401829();
  local_c = (uint)local_c._1_3_ << 8;
  appuStack_a4[0] = wxObject::vftable;
  ppiStack_b8 = (int **)0x4a64c6;
  FUN_0083e850();
  local_c = 0xffffffff;
  ppiStack_b8 = local_30;
  puStack_bc = (undefined *)0x4a64db;
  FUN_007b3ae8();
  ExceptionList = pvStack_18;
  return;
}



void FUN_004a64f1(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  uint uVar2;
  undefined4 uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar2 = 0;
  }
  else {
    uVar2 = *(int *)(in_EAX + 0x14) - iVar1 >> 3;
  }
  if ((uint)(*(int *)(in_EAX + 0x10) - iVar1 >> 3) < uVar2) {
    uVar3 = FUN_00478fca(param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar3;
  }
  else {
    FUN_0046e65a();
    FUN_004a6550(&local_10,param_1,local_10,local_c);
  }
  return;
}



void FUN_004a6550(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int *piVar1;
  int in_EAX;
  int iVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc) & 0xfffffff8U) == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = param_4 - local_8 >> 3;
  }
  FUN_007ce392();
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *local_14;
  }
  piVar1 = (int *)(local_10 + local_8 * 8);
  if (piVar1 <= *(int **)(iVar2 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *local_14;
    }
    if (*(int **)(iVar2 + 0xc) <= piVar1) goto LAB_004a65e8;
  }
  FUN_00a3fb10();
LAB_004a65e8:
  param_1[1] = piVar1;
  *param_1 = local_14;
  return;
}



int * FUN_004a65f7(int *param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int in_EAX;
  int iVar4;
  int local_14;
  int local_10;
  
  FUN_0046e65a();
  FUN_0046e65a();
  if ((*param_1 == 0) || (*param_1 != local_14)) {
    FUN_00a3fb10();
  }
  iVar2 = param_1[1];
  if (iVar2 != local_10) {
    iVar3 = *(int *)(in_EAX + 0x10);
    iVar4 = iVar3 - local_10;
    if (local_10 != iVar3) {
      iVar1 = iVar2 - local_10;
      do {
        FUN_005d11c9(iVar1 + local_10);
        local_10 = local_10 + 8;
      } while (local_10 != iVar3);
    }
    FUN_0043a4e8(*(undefined4 *)(in_EAX + 0x10));
    *(int *)(in_EAX + 0x10) = iVar2 + (iVar4 >> 3) * 8;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004a6682(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x4a668e;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_004afdf1(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_004afc36();
    *puVar1 = W8489743A::W873EFD0F::vftable;
    *(undefined ***)(puVar2 + 8) = W8489743A::W873EFD0F::vftable;
    *(undefined ***)(puVar2 + 0xc) = W8489743A::W873EFD0F::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



void FUN_004afc36(void)

{
  undefined4 *in_EAX;
  
  in_EAX[1] = W8489743A::WE23F487B::vftable;
  in_EAX[2] = W8489743A::W574E0796::vftable;
  *in_EAX = W8489743A::W5605E00D::vftable;
  in_EAX[1] = W8489743A::W5605E00D::vftable;
  in_EAX[2] = W8489743A::W5605E00D::vftable;
  in_EAX[3] = W8489743A::WBF882B83::vftable;
  return;
}



undefined4 * __thiscall FUN_004afc60(undefined4 *param_1_00,byte param_1)

{
  param_1_00[3] = W8489743A::W551DDDE3::vftable;
  param_1_00[2] = W8489743A::W574E0796::vftable;
  param_1_00[1] = W8489743A::WE23F487B::vftable;
  *param_1_00 = W8489743A::WE77C49A0::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_004afce7(undefined4 param_1_00,byte param_1)

{
  FUN_004c179c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_004afd05(undefined4 param_1_00,byte param_1)

{
  FUN_004bfcc4();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_004afd80(undefined4 *param_1_00,byte param_1)

{
  param_1_00[2] = W8489743A::W439B868B::vftable;
  param_1_00[1] = W8489743A::W551DDDE3::vftable;
  *param_1_00 = W8489743A::WE77C49A0::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_004afdab(void)

{
  undefined4 *in_EAX;
  
  in_EAX[3] = W8489743A::W551DDDE3::vftable;
  in_EAX[2] = W8489743A::W574E0796::vftable;
  in_EAX[1] = W8489743A::WE23F487B::vftable;
  *in_EAX = W8489743A::WE77C49A0::vftable;
  return;
}



void FUN_004afdc7(void)

{
  undefined4 *in_EAX;
  
  in_EAX[2] = W8489743A::WE23F487B::vftable;
  in_EAX[1] = W8489743A::W551DDDE3::vftable;
  *in_EAX = W8489743A::WE77C49A0::vftable;
  return;
}



void FUN_004afddc(void)

{
  undefined4 *in_EAX;
  
  in_EAX[2] = W8489743A::W551DDDE3::vftable;
  in_EAX[1] = W8489743A::WE23F487B::vftable;
  *in_EAX = W8489743A::WE77C49A0::vftable;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_004afdf1(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x24);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W8489743A::W873EFD0F*,class_boost::detail::sp_ms_deleter<class_W8489743A::W873EFD0F>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_004afe37(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004afe8e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004afee5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004aff3c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004aff93(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004affea(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0043(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b009a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b00f1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0148(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b019f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b01f6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b024d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b02a4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b02fb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0352(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b03a9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0400(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0457(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b04ae(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0505(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b055c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b05b3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b060a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0661(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b06b8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b070f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0766(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b07bd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0814(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b086b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b08c2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0919(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0970(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b09c7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0a1e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0a75(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0acc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0b23(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0b7a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0bd1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0c28(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0c7f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0cd6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0d2d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0d84(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0ddb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0e32(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0e89(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0ee0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0f37(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0f8e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b0fe5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b103c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1093(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b10ea(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1141(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1198(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b11ef(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1246(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b129d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b12f4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b134b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b13a2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b13f9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1450(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b14a7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b14fe(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1555(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b15ac(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1603(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b165a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b16b1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1708(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b175f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b17b6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b180d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1864(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x24) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b18bb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1912(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1969(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b19c0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1a17(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1a6e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1ac5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1b1c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1b73(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1bca(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1c21(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1c78(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1ccf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1d26(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1d7d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1dd4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1e2b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1e82(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1ed9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1f30(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1f87(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b1fde(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2035(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b208c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b20e3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b213a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2191(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b21e8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b223f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2296(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b22ed(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2344(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b239b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b23f2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2449(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b24a0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b24f7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b254e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b25a5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b25fc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2653(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b26aa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2701(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2758(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b27af(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2806(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b285d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b28b4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b290b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2962(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b29b9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2a10(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2a67(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2abe(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2b15(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2b6c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2bc3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2c1a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2c71(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2cc8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2d1f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2d76(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2dcd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2e24(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2e7b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2ed2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2f29(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2f80(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b2fd7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b302e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3085(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b30dc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3133(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b318a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b31e1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3238(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b328f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b32e6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b333d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3394(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b33eb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x28) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3442(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3499(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b34f0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3547(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b359e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b35f5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b364c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b36a3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b36fa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3751(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b37a8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b37ff(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3856(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b38ad(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3904(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b395b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b39b2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3a09(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3a60(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3ab7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3b0e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3b65(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3bbc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3c13(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3c6a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3cc1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3d18(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3d6f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3dc6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3e1d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3e74(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3ecb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3f22(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3f79(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b3fd0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b4027(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b407e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b40d5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b412c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b4183(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b41da(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b4231(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b4288(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b42df(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b4336(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b438d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b43e4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b443b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b4492(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b44e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b4540(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b4597(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b45ee(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b4645(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b469c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b46f3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b474a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b47a1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b47f8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b484f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b48a6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b48fd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b4954(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b49ab(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b4a02(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b4a59(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004b4ab0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x1c) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_004b4ac1(void)

{
  char *unaff_ESI;
  
  if (*unaff_ESI != '\0') {
    (***(code ***)(unaff_ESI + 4))(0);
    *unaff_ESI = '\0';
  }
  return;
}



uint __thiscall FUN_004b4ad3(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W873EFD0F>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4af4(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W95B886F7>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4b15(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W31A840D1>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4b36(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W82251E55>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4b57(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WA7F16DE9>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4b78(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WCF832E08>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4b99(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W2568AD57>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4bba(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W7D144FEA>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4bdb(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W9F06847D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4bfc(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WF599B5EE>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4c1d(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WDFDCFDDA>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4c3e(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WDFD6B24F>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4c5f(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W5451BA37>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4c80(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W10650591>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4ca1(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WF87E4CCE>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4cc2(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W23B417FA>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4ce3(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W6C4EE5E1>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4d04(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WD793ED17>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4d25(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W20B1C7D2>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4d46(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W0C4455BA>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4d67(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W2A62EAA1>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4d88(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W02AD0A4C>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4da9(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WAA919032>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4dca(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W75192CAC>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4deb(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WD8573714>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4e0c(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WFD931281>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4e2d(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WA976C815>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4e4e(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W71AB72AE>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4e6f(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W5B4CE890>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4e90(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W58A5DD5D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4eb1(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WD59C7600>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4ed2(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WC1C2D71C>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4ef3(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W0A03A1F1>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4f14(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WD16E0EE0>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4f35(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WC3E21106>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4f56(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W88FA694F>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4f77(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W0D7E4290>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4f98(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W6E6A097D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4fb9(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WAEF0C1B6>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4fda(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W3597987A>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b4ffb(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WC3566952>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b501c(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W80FD3BEA>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b503d(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W97812014>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b505e(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W2BAB1CBB>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b507f(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WA8341FB1>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b50a0(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WABAC99C1>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b50c1(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W648B52D6>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b50e2(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W6844588F>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5103(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W2B35BD4B>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5124(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WA015B3AD>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5145(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W239B5523>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5166(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W28A58826>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5187(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W681A3798>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b51a8(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W8362429A>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b51c9(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W8C7A17A0>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b51ea(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W95CC573D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b520b(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W9257B304>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b522c(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W1F404819>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b524d(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WA97338B5>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b526e(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W9759DEFF>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b528f(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W089ADCA2>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b52b0(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W582F46B9>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b52d1(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W0CAFC7E0>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b52f2(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W17621D6F>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5313(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W241515A5>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5334(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W9910E8DD>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5355(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W3F900BED>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5376(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WCAD2F771>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5397(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WCE9B847E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b53b8(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W95B1453C>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b53d9(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W2C0E0468>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b53fa(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W84D8F26D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b541b(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WCCE0E2E5>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b543c(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WC4627BE5>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b545d(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WC2BA42F5>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b547e(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WB37E51FC>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b549f(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W428586AB>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b54c0(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W937CEC14>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b54e1(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WEE61A1AF>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5502(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W975E3B99>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5523(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W1467ED57>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5544(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W4180795D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5565(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WD47D057E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5586(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W9B96AE67>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b55a7(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WF176D74B>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b55c8(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W613DB3D2>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b55e9(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W56F313A5>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b560a(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WAD1E5B25>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b562b(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WBB6051BE>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b564c(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WF79C73EE>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b566d(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WB187BC2E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b568e(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W6EBE0D07>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b56af(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WF0B2D55D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b56d0(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W6BC36498>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



void __fastcall FUN_004b56f1(int param_1)

{
  if (*(char *)(param_1 + 0x10) != '\0') {
    (***(code ***)(param_1 + 0x14))(0);
    *(undefined *)(param_1 + 0x10) = 0;
  }
  return;
}



uint __thiscall FUN_004b5709(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W04EC0C6C>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b572a(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W93464BCA>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b574b(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WFB36889D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b576c(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WCEDCA50D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b578d(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WE171F383>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b57ae(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W078EA17D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b57cf(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WA545306D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b57f0(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WC98A469A>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5811(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W91FE7B8C>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5832(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W7E26724D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5853(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WDEBD74E1>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5874(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W8E8DE343>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5895(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WCF58F066>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b58b6(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W5A74F714>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b58d7(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W5112D078>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b58f8(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W357F7B3C>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5919(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WDB49DB5C>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b593a(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W23BC3016>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b595b(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W13379232>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b597c(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W2D150762>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b599d(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W01835F27>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b59be(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W2C62C3EC>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b59df(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WE644BD34>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5a00(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W2BAB8C70>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5a21(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WC138E18D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5a42(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W40BEC737>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5a63(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W384C49FF>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5a84(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WE505E8AC>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5aa5(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W54EDF163>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5ac6(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WE1804736>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5ae7(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W709D8971>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5b08(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W552A9775>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5b29(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WA29E4920>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5b4a(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W582B0C7D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5b6b(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W0323DFAE>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5b8c(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WFFD4CF18>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5bad(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WC5243683>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5bce(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WD8066114>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5bef(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WBA98F8A6>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5c10(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W53036B65>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5c31(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W257A6E0E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5c52(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W2BA8ED22>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5c73(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W22AF9B25>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5c94(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WAFD03692>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5cb5(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W3CFCD4B6>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5cd6(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WF2848F58>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5cf7(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WA8700D65>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5d18(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W215514E2>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5d39(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WC90D7E5F>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5d5a(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WDD7CA5FE>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5d7b(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W76B55F89>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5d9c(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W104C47C3>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5dbd(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WF3B80969>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5dde(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W0B2617B2>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5dff(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W8F2747FD>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5e20(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W39B75955>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5e41(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WBC433F45>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5e62(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WE8C1055E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5e83(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W9353ADBB>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5ea4(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W2BFC5DC4>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5ec5(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W403C153E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5ee6(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W9B6C6EFA>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5f07(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W652B74E0>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5f28(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W0D2FC868>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5f49(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WFAE64C52>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5f6a(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W03525D4B>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5f8b(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W265C4016>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5fac(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WB1BB50C0>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5fcd(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WE085F211>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b5fee(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WEEFFE371>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b600f(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W7EC1DBDC>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6030(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W9C7051D2>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6051(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W39C944A0>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6072(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WF1AB95F4>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6093(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W63C6DA4B>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b60b4(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W013FFE1D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b60d5(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W49633E62>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b60f6(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WA058D196>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6117(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W1AFBDF07>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6138(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W18E6C460>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6159(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WF09394B9>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b617a(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W00A4AB00>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b619b(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W5969A9C3>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b61bc(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W9688E23B>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b61dd(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W7B35B617>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b61fe(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W0C456E8C>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b621f(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W21B612E6>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6240(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W6100BA3E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6261(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WA0AF820D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6282(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W6A6EA284>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b62a3(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W715A2180>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b62c4(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W609D8BFF>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b62e5(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W96D5F0B9>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6306(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W30346F2B>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6327(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W3AE7CA9B>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6348(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W0AEF23B6>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6369(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WDE90BFD6>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b638a(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WB6FEBBCD>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b63ab(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WEAAC2969>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b63cc(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W4C1F5CF1>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b63ed(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WDE4BD95F>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b640e(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W09C9760E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b642f(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W7EE26973>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6450(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WD55C92F4>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6471(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W5B20282F>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6492(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W5F499243>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b64b3(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WB3983BFD>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b64d4(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W95ACAF8E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b64f5(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W5ED40674>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6516(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W6ACDFBB5>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6537(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W6949241E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6558(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W5B200625>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6579(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W52EA4E56>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b659a(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W42EC263D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b65bb(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WD5ABFA60>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b65dc(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W45488EDF>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b65fd(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W7A319F03>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b661e(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W65EC8500>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b663f(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WE38B5DE8>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6660(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W9A84A823>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6681(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WC69380C3>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b66a2(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W8B722C50>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b66c3(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WB5784E62>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b66e4(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WB0A3BB79>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6705(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WF6221134>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6726(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WFA059DE2>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6747(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W80D7BBFD>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6768(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WA902DC04>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b6789(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WC6996314>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b67aa(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WDE6E9E26>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b67cb(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::W73E7994D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_004b67ec(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W8489743A::WDF4C27DA>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004b680d(undefined4 *param_1_00,byte param_1)

{
  if (*(char *)(param_1_00 + 4) != '\0') {
    (**(code **)param_1_00[5])(0);
    *(undefined *)(param_1_00 + 4) = 0;
  }
  *param_1_00 = boost::detail::sp_counted_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_004b6852(void)

{
  FUN_004afce7();
  return;
}



void FUN_004b685a(void)

{
  FUN_004afc60();
  return;
}



void FUN_004b6862(void)

{
  FUN_004afd05();
  return;
}



void FUN_004b686a(void)

{
  FUN_004afd05();
  return;
}



void FUN_004b6872(void)

{
  FUN_004afd80();
  return;
}



void FUN_004b687a(void)

{
  FUN_004afd05();
  return;
}



void FUN_004b6882(void)

{
  FUN_004afce7();
  return;
}



void FUN_004b6892(void)

{
  FUN_004afc60();
  return;
}



void __thiscall FUN_004b689a(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x28))(param_1_00);
  return;
}



void __thiscall FUN_004b68a9(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x44))(param_1_00);
  return;
}



void __thiscall FUN_004b68b8(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x6c))(param_1_00);
  return;
}



void __thiscall FUN_004b68c7(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x74))(param_1_00);
  return;
}



void __thiscall FUN_004b68d6(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x78))(param_1_00);
  return;
}



void __thiscall FUN_004b68e5(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x7c))(param_1_00);
  return;
}



void __thiscall FUN_004b68f4(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x84))(param_1_00);
  return;
}



void __thiscall FUN_004b6906(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x98))(param_1_00);
  return;
}



void __thiscall FUN_004b6918(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xc4))(param_1_00);
  return;
}



void __thiscall FUN_004b692a(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xd8))(param_1_00);
  return;
}



void __thiscall FUN_004b694e(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x58))(param_1_00);
  return;
}



undefined4 FUN_004b69f3(void)

{
  return 0x8000;
}



undefined4 FUN_004b6a8f(void)

{
  return 0x7ff0000;
}



undefined4 FUN_004b6b37(void)

{
  return 0x6000000;
}



undefined FUN_004b6b85(void)

{
  return 2;
}



void FUN_004b6ba0(void)

{
  undefined4 *puVar1;
  undefined4 local_28 [2];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c400b6;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00478a2d(DAT_0323f878 ^ (uint)local_28);
  puVar1 = (undefined4 *)FUN_004c42d1(local_20);
  local_c = 0;
  local_28[0] = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_004b6cab(void)

{
  undefined4 *puVar1;
  undefined4 local_28 [2];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c400e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00478a2d(DAT_0323f878 ^ (uint)local_28);
  puVar1 = (undefined4 *)FUN_004c42d1(local_20);
  local_c = 0;
  local_28[0] = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004b6d77(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8489743A::W88201842>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004b6dbd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004b6dd4(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[1] = 0xe1000;
    *puVar2 = W8489743A::W88201842::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_004b6d77(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_004b6e42(void)

{
  undefined4 *puVar1;
  undefined4 local_28 [2];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c400b6;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00478a2d(DAT_0323f878 ^ (uint)local_28);
  puVar1 = (undefined4 *)FUN_004b6dd4(local_20);
  local_c = 0;
  local_28[0] = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 FUN_004b7261(void)

{
  return 4;
}



undefined4 FUN_004b7265(void)

{
  return 0xb;
}



void __thiscall FUN_004b7269(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x2b0))(param_1_00);
  return;
}



void Catch_All_004b7753(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_004b77d1(void)

{
  undefined4 *puVar1;
  undefined4 local_30 [2];
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c47969;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00478a2d(DAT_0323f878 ^ (uint)local_30);
  puVar1 = (undefined4 *)FUN_004c461c(local_28,0xe1000);
  local_c = 0;
  local_30[0] = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 * __thiscall FUN_004b790c(undefined4 *param_1_00,byte param_1)

{
  param_1_00[1] = W8489743A::W551DDDE3::vftable;
  *param_1_00 = W8489743A::WE77C49A0::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b795b(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b7967;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe464,10);
  local_8 = 0;
  local_18 = 0x99cffa84;
  local_14 = 0x78d83514;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b79ac(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b79b8;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe44c,10);
  local_8 = 0;
  local_18 = 0xf423b2a0;
  local_14 = 0x30e64a7a;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b79fd(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b7a09;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe434,10);
  local_8 = 0;
  local_18 = 0x2150b421;
  local_14 = 0xbe2d3b6f;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b7a4e(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b7a5a;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe41c,10);
  local_8 = 0;
  local_18 = 0xbe93a3f7;
  local_14 = 0xe3197980;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b7a9f(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b7aab;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe404,10);
  local_8 = 0;
  local_18 = 0x92bfcb9e;
  local_14 = 0x32790ad7;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b7af0(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b7afc;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe3ec,10);
  local_8 = 0;
  local_18 = 0x9b4bf47d;
  local_14 = 0x410adf85;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b7b41(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b7b4d;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe3d4,10);
  local_8 = 0;
  local_18 = 0xbd1dede0;
  local_14 = 0x54c4fede;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b7b92(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b7b9e;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe3bc,10);
  local_8 = 0;
  local_18 = 0xbdfb2c49;
  local_14 = 0x96b1850f;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b7be3(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b7bef;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe3a4,10);
  local_8 = 0;
  local_18 = 0xbb80e7fe;
  local_14 = 0x8b5cacdf;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b7c34(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b7c40;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe38c,10);
  local_8 = 0;
  local_18 = 0x176efa94;
  local_14 = 0x395d68d2;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b7c85(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b7c91;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe374,10);
  local_8 = 0;
  local_18 = 0x10bef5fb;
  local_14 = 0x9b99350c;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b7cd6(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b7ce2;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe344,10);
  local_8 = 0;
  local_18 = 0x688333cf;
  local_14 = 0xe31d7cef;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b7d27(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b7d33;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe35c,10);
  local_8 = 0;
  local_18 = 0x37e4e289;
  local_14 = 0x9f6f38df;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b7d78(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b7d84;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe32c,10);
  local_8 = 0;
  local_18 = 0x29fdbbbf;
  local_14 = 0x2bea5511;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004b7dc9(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4b7dd5;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fbe314,10);
  local_8 = 0;
  local_18 = 0x510b8e9d;
  local_14 = 0x9d46bdb5;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004b7e1a(undefined4 param_1,undefined4 param_2,int param_3)

{
  FUN_004c4cf8();
  if (param_3 != 0) {
    FUN_0040127a();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b7e56(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b7e62;
  uVar1 = basic_string<>(&DAT_00fbe2fc,10);
  local_8 = 0;
  local_18 = 0x353e46b6;
  local_14 = 0xfbdecb36;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b7ec2(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b7ece;
  uVar1 = basic_string<>(&DAT_00fbe2f0,5);
  local_8 = 0;
  local_18 = 0x6983527e;
  local_14 = 0x5e07e3b7;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b7f2e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b7f3a;
  uVar1 = basic_string<>(&DAT_00fbe2d8,10);
  local_8 = 0;
  local_18 = 0xe32f85c2;
  local_14 = 0x805651d7;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b7f9a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b7fa6;
  uVar1 = basic_string<>(&DAT_00fbe2cc,5);
  local_8 = 0;
  local_18 = 0x408e4dc7;
  local_14 = 0x2abe36e7;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8006(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8012;
  uVar1 = basic_string<>(&DAT_00fbe29c,0x16);
  local_8 = 0;
  local_18 = 0xe1397761;
  local_14 = 0x67f49b31;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8072(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b807e;
  uVar1 = basic_string<>(&DAT_00fbe26c,0x17);
  local_8 = 0;
  local_18 = 0xdb40e082;
  local_14 = 0x4a58a936;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b80de(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b80ea;
  uVar1 = basic_string<>(&DAT_00fbe244,0x12);
  local_8 = 0;
  local_18 = 0x41f2f35e;
  local_14 = 0xc3d45278;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b814a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8156;
  uVar1 = basic_string<>(&DAT_00fbe238,5);
  local_8 = 0;
  local_18 = 0x1cd51af0;
  local_14 = 0xb20cc828;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b81b6(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b81c2;
  uVar1 = basic_string<>(&DAT_00fbe21c,0xc);
  local_8 = 0;
  local_18 = 0x60568768;
  local_14 = 0x59fb242f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8222(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b822e;
  uVar1 = basic_string<>(&DAT_00fbe210,5);
  local_8 = 0;
  local_18 = 0x4af72629;
  local_14 = 0xde31d444;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b828e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b829a;
  uVar1 = basic_string<>(&DAT_00fbe1f8,10);
  local_8 = 0;
  local_18 = 0xe899db03;
  local_14 = 0xf25d25a1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b82fa(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8306;
  uVar1 = basic_string<>(&DAT_00fbe1ec,5);
  local_8 = 0;
  local_18 = 0xe4b1c972;
  local_14 = 0x58fa4731;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8366(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8372;
  uVar1 = basic_string<>(&DAT_00fbe1e0,5);
  local_8 = 0;
  local_18 = 0xe64b1b1e;
  local_14 = 0x6c70c707;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b83d2(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b83de;
  uVar1 = basic_string<>(&DAT_00fbe1d4,4);
  local_8 = 0;
  local_18 = 0xe86b8e8e;
  local_14 = 0x918997a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b843e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b844a;
  uVar1 = basic_string<>(&DAT_00fbe1c8,5);
  local_8 = 0;
  local_18 = 0x2ce3284a;
  local_14 = 0x869edfae;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b84aa(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b84b6;
  uVar1 = basic_string<>(&DAT_00fbe1a0,0x13);
  local_8 = 0;
  local_18 = 0x509ae676;
  local_14 = 0x9b1c7ab0;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8516(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8522;
  uVar1 = basic_string<>(&DAT_00fbe194,5);
  local_8 = 0;
  local_18 = 0x32d32484;
  local_14 = 0x983296c1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8582(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b858e;
  uVar1 = basic_string<>(&DAT_00fbe180,8);
  local_8 = 0;
  local_18 = 0x3438607b;
  local_14 = 0xe23981f4;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b85ee(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b85fa;
  uVar1 = basic_string<>(&DAT_00fbe174,5);
  local_8 = 0;
  local_18 = 0x644bb396;
  local_14 = 0x47143e7e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b865a(undefined4 param_1)

{
  FUN_004be821(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b868b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8697;
  uVar1 = basic_string<>(&DAT_00fbde78,5);
  local_8 = 0;
  local_18 = 0x485edfff;
  local_14 = 0xe7ccf4e5;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b86f7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8703;
  uVar1 = basic_string<>(&DAT_00fbde68,6);
  local_8 = 0;
  local_18 = 0x50266844;
  local_14 = 0xf96a1800;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8763(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b876f;
  uVar1 = basic_string<>(&DAT_00fbde58,7);
  local_8 = 0;
  local_18 = 0xf1425401;
  local_14 = 0x82d409da;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b87cf(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b87db;
  uVar1 = basic_string<>(&DAT_00fbde4c,5);
  local_8 = 0;
  local_18 = 0xb79df5c5;
  local_14 = 0x3ac36fd;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b883b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8847;
  uVar1 = basic_string<>(&DAT_00fbde3c,7);
  local_8 = 0;
  local_18 = 0xc31a5fa5;
  local_14 = 0xc4041b3f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b88a7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b88b3;
  uVar1 = basic_string<>(&DAT_00fbde24,0xb);
  local_8 = 0;
  local_18 = 0x2f3c1d13;
  local_14 = 0x564e93ec;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8913(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b891f;
  uVar1 = basic_string<>(&DAT_00fbde0c,0xb);
  local_8 = 0;
  local_18 = 0xc2ee6637;
  local_14 = 0x89f3858e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b897f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b898b;
  uVar1 = basic_string<>(&DAT_00fbe154,0xe);
  local_8 = 0;
  local_18 = 0x1bc7d6e2;
  local_14 = 0xc4ffdb0a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b89eb(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b89f7;
  uVar1 = basic_string<>(&DAT_00fbe148,5);
  local_8 = 0;
  local_18 = 0xe6d008e9;
  local_14 = 0x55d82b0e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8a57(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8a63;
  uVar1 = basic_string<>(&DAT_00fbe120,0x13);
  local_8 = 0;
  local_18 = 0x316aca8;
  local_14 = 0xe83a02a4;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8ac3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8acf;
  uVar1 = basic_string<>(&DAT_00fbe0f4,0x14);
  local_8 = 0;
  local_18 = 0x42cd9b53;
  local_14 = 0x732ce96a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8b2f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8b3b;
  uVar1 = basic_string<>(&DAT_00fbe0cc,0x13);
  local_8 = 0;
  local_18 = 0x2caf2208;
  local_14 = 0x7a0037e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8b9b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8ba7;
  uVar1 = basic_string<>(&DAT_00fbe0c0,5);
  local_8 = 0;
  local_18 = 0x3cf60ab6;
  local_14 = 0xe4f55e01;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8c07(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8c13;
  uVar1 = basic_string<>(&DAT_00fbe0a0,0xf);
  local_8 = 0;
  local_18 = 0xda8901bf;
  local_14 = 0x8d3f0cf;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8c73(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8c7f;
  uVar1 = basic_string<>(&DAT_00fbe094,5);
  local_8 = 0;
  local_18 = 0x8914bf0d;
  local_14 = 0xa21032bb;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8cdf(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8ceb;
  uVar1 = basic_string<>(&DAT_00fbe06c,0x13);
  local_8 = 0;
  local_18 = 0xb53e15ec;
  local_14 = 0x41e96c21;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8d4b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8d57;
  uVar1 = basic_string<>(&DAT_00fbe050,0xc);
  local_8 = 0;
  local_18 = 0xcbfe4ee;
  local_14 = 0xd5bf1216;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8db7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8dc3;
  uVar1 = basic_string<>(&DAT_00fbe044,5);
  local_8 = 0;
  local_18 = 0xf5de449a;
  local_14 = 0x3211308c;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8e23(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8e2f;
  uVar1 = basic_string<>(&DAT_00fbe020,0x11);
  local_8 = 0;
  local_18 = 0x5290440a;
  local_14 = 0x836aad30;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8e8f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8e9b;
  uVar1 = basic_string<>(&DAT_00fbe014,5);
  local_8 = 0;
  local_18 = 0x9e8f14e9;
  local_14 = 0xe95ae51c;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8efb(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8f07;
  uVar1 = basic_string<>(&DAT_00fbe004,6);
  local_8 = 0;
  local_18 = 0x120d439e;
  local_14 = 0x4809bc2d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8f67(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8f73;
  uVar1 = basic_string<>(&DAT_00fbdfe8,0xd);
  local_8 = 0;
  local_18 = 0xfcd9da3a;
  local_14 = 0x5de1804c;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b8fd3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b8fdf;
  uVar1 = basic_string<>(&DAT_00fbdfdc,5);
  local_8 = 0;
  local_18 = 0xd9520871;
  local_14 = 0xcb6f194d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b903f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b904b;
  uVar1 = basic_string<>(&DAT_00fbdfbc,0xe);
  local_8 = 0;
  local_18 = 0x55af302e;
  local_14 = 0x20371d19;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b90ab(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b90b7;
  uVar1 = basic_string<>(&DAT_00fbdfb0,5);
  local_8 = 0;
  local_18 = 0x9b2c6c86;
  local_14 = 0x996b428b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9117(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9123;
  uVar1 = basic_string<>(&DAT_00fbdf94,0xc);
  local_8 = 0;
  local_18 = 0x75a929c3;
  local_14 = 0x546df16d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9183(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b918f;
  uVar1 = basic_string<>(&DAT_00fbdf88,5);
  local_8 = 0;
  local_18 = 0xa655f541;
  local_14 = 0x481fca69;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b91ef(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b91fb;
  uVar1 = basic_string<>(&DAT_00fbdf6c,0xc);
  local_8 = 0;
  local_18 = 0x9da9ef91;
  local_14 = 0x40a49226;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b925b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9267;
  uVar1 = basic_string<>(&DAT_00fbdf60,5);
  local_8 = 0;
  local_18 = 0x634b7018;
  local_14 = 0xc7f62516;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b92c7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b92d3;
  uVar1 = basic_string<>(&DAT_00fbdf38,0x13);
  local_8 = 0;
  local_18 = 0x3eee85fa;
  local_14 = 0x5e97af4d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9333(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b933f;
  uVar1 = basic_string<>(&DAT_00fbdf1c,0xc);
  local_8 = 0;
  local_18 = 0xea966a18;
  local_14 = 0x7b3ea122;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b939f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b93ab;
  uVar1 = basic_string<>(&DAT_00fbdf10,5);
  local_8 = 0;
  local_18 = 0xe24fda76;
  local_14 = 0xdc2a3000;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b940b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9417;
  uVar1 = basic_string<>(&DAT_00fbdeec,0x10);
  local_8 = 0;
  local_18 = 0x10030714;
  local_14 = 0x9351d3cd;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9477(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9483;
  uVar1 = basic_string<>(&DAT_00fbdec0,0x14);
  local_8 = 0;
  local_18 = 0xc2a90c8c;
  local_14 = 0x45e261ce;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b94e3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b94ef;
  uVar1 = basic_string<>(&DAT_00fbdea4,0xd);
  local_8 = 0;
  local_18 = 0x7bee327b;
  local_14 = 0x94dcfca0;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b954f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b955b;
  uVar1 = basic_string<>(&DAT_00fbde9c,3);
  local_8 = 0;
  local_18 = 0xdba396c7;
  local_14 = 0x47ffe016;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b95bb(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b95c7;
  uVar1 = basic_string<>(&DAT_00fbde90,4);
  local_8 = 0;
  local_18 = 0x49ff6ee1;
  local_14 = 0xf7577cb0;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9627(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9633;
  uVar1 = basic_string<>(&DAT_00fbde84,5);
  local_8 = 0;
  local_18 = 0xb6fc784a;
  local_14 = 0x73cd30e1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9693(undefined4 param_1)

{
  FUN_004bf2e4(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b96c4(undefined4 param_1)

{
  FUN_004bf350(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b96f5(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9701;
  uVar1 = basic_string<>(&DAT_00fbddec,0xf);
  local_8 = 0;
  local_18 = 0xdc260cbb;
  local_14 = 0x7cfd9c06;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9761(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b976d;
  uVar1 = basic_string<>(&DAT_00fbddd0,0xc);
  local_8 = 0;
  local_18 = 0x45456bf4;
  local_14 = 0x1c4deede;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b97cd(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b97d9;
  uVar1 = basic_string<>(&DAT_00fbddb4,0xc);
  local_8 = 0;
  local_18 = 0x1a8cc3e9;
  local_14 = 0xca1b7ad9;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9839(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9845;
  uVar1 = basic_string<>(&DAT_00fbdda8,4);
  local_8 = 0;
  local_18 = 0xe1652f3e;
  local_14 = 0x7c759f57;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b98a5(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b98b1;
  uVar1 = basic_string<>(&DAT_00fbdd90,0xb);
  local_8 = 0;
  local_18 = 0xda75ff05;
  local_14 = 0xf644668f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9911(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b991d;
  uVar1 = basic_string<>(&DAT_00fbdd84,4);
  local_8 = 0;
  local_18 = 0x814f9811;
  local_14 = 0x585bfc8f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b997d(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9989;
  uVar1 = basic_string<>(&DAT_00fbdd58,0x15);
  local_8 = 0;
  local_18 = 0xb5051bbc;
  local_14 = 0x5f529180;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b99e9(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b99f5;
  uVar1 = basic_string<>(&DAT_00fbdd1c,4);
  local_8 = 0;
  local_18 = 0xfa75bfe6;
  local_14 = 0xccb4209f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9a55(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9a61;
  uVar1 = basic_string<>(&DAT_00fbdd28,0x11);
  local_8 = 0;
  local_18 = 0x5ef5f02d;
  local_14 = 0x9dc61052;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9ac1(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9acd;
  uVar1 = basic_string<>(&DAT_00fbdd4c,4);
  local_8 = 0;
  local_18 = 0x9b057648;
  local_14 = 0xd0f34742;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9b2d(undefined4 param_1)

{
  FUN_004bf727(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9b5e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9b6a;
  uVar1 = basic_string<>(&DAT_00fbdd10,4);
  local_8 = 0;
  local_18 = 0x878d1f2d;
  local_14 = 0xa2914f28;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9bca(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9bd6;
  uVar1 = basic_string<>(&DAT_00fbdd00,7);
  local_8 = 0;
  local_18 = 0xce10673d;
  local_14 = 0x9c85a7dc;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9c36(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9c42;
  uVar1 = basic_string<>(&DAT_00fbdcf8,3);
  local_8 = 0;
  local_18 = 0x73255174;
  local_14 = 0xc2a2d630;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9ca2(undefined4 param_1)

{
  FUN_004bf87c(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9cd3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9cdf;
  uVar1 = basic_string<>(&DAT_00fbdcec,5);
  local_8 = 0;
  local_18 = 0xd2c6149b;
  local_14 = 0xe5d64812;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9d3f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9d4b;
  uVar1 = basic_string<>(&DAT_00fbdce0,5);
  local_8 = 0;
  local_18 = 0x9139d47e;
  local_14 = 0x7e36dbb4;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9dab(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9db7;
  uVar1 = basic_string<>(&DAT_00fbdcd4,5);
  local_8 = 0;
  local_18 = 0x6a3e584;
  local_14 = 0x66ae7bdc;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9e17(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9e23;
  uVar1 = basic_string<>(&DAT_00fbdcc8,5);
  local_8 = 0;
  local_18 = 0xd1505e84;
  local_14 = 0x5681cd70;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9e83(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9e8f;
  uVar1 = basic_string<>(&DAT_00fbdcbc,5);
  local_8 = 0;
  local_18 = 0x8c2ed625;
  local_14 = 0x8ec57b36;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9eef(undefined4 param_1)

{
  FUN_004bfb04(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9f20(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9f2c;
  uVar1 = basic_string<>(&DAT_00fbdcb0,5);
  local_8 = 0;
  local_18 = 0xce964168;
  local_14 = 0xee212a56;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9f8c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4b9f98;
  uVar1 = basic_string<>(&DAT_00fbdca4,5);
  local_8 = 0;
  local_18 = 0x3854f9ca;
  local_14 = 0x8686ca3;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004b9ff8(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba004;
  uVar1 = basic_string<>(&DAT_00fbdc98,5);
  local_8 = 0;
  local_18 = 0xcdded98d;
  local_14 = 0xf4e78965;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba064(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba070;
  uVar1 = basic_string<>(&DAT_00fbdc8c,5);
  local_8 = 0;
  local_18 = 0x4bff7d22;
  local_14 = 0x65718a5;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba0d0(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba0dc;
  uVar1 = basic_string<>(&DAT_00fbdc80,5);
  local_8 = 0;
  local_18 = 0x471610dc;
  local_14 = 0x7ef81de5;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba13c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba148;
  uVar1 = basic_string<>(&DAT_00fbdc74,5);
  local_8 = 0;
  local_18 = 0x37a7abd8;
  local_14 = 0x15c2850d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba1a8(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba1b4;
  uVar1 = basic_string<>(&DAT_00fbdc68,5);
  local_8 = 0;
  local_18 = 0xadb5c21e;
  local_14 = 0xac8ef87d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba214(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba220;
  uVar1 = basic_string<>(&DAT_00fbdc5c,5);
  local_8 = 0;
  local_18 = 0x5d37a7d1;
  local_14 = 0x957484bc;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba280(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba28c;
  uVar1 = basic_string<>(&DAT_00fbdc50,5);
  local_8 = 0;
  local_18 = 0x1ec26ae9;
  local_14 = 0x7567c346;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba2ec(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba2f8;
  uVar1 = basic_string<>(&DAT_00fbdc44,5);
  local_8 = 0;
  local_18 = 0xbd3b7036;
  local_14 = 0x66419b3b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba358(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba364;
  uVar1 = basic_string<>(&DAT_00fbdc38,5);
  local_8 = 0;
  local_18 = 0xe23e6e03;
  local_14 = 0x7211463;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba3c4(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba3d0;
  uVar1 = basic_string<>(&DAT_00fbdc2c,5);
  local_8 = 0;
  local_18 = 0x9260b27a;
  local_14 = 0x1ac0f4d3;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba430(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba43c;
  uVar1 = basic_string<>(&DAT_00fbdc0c,3);
  local_8 = 0;
  local_18 = 0xeef9873e;
  local_14 = 0xa3cc7770;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba49c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba4a8;
  uVar1 = basic_string<>(&DAT_00fbdc14,0xb);
  local_8 = 0;
  local_18 = 0x7f984779;
  local_14 = 0x92eae908;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba508(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba514;
  uVar1 = basic_string<>(&DAT_00fbdbf4,3);
  local_8 = 0;
  local_18 = 0xdd117fc9;
  local_14 = 0x1cbb86e1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba574(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba580;
  uVar1 = basic_string<>(&DAT_00fbdbfc,7);
  local_8 = 0;
  local_18 = 0x96d1e931;
  local_14 = 0xdacfd601;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba5e0(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba5ec;
  uVar1 = basic_string<>(&DAT_00fbdbec,3);
  local_8 = 0;
  local_18 = 0x31681d21;
  local_14 = 0x1bccceb8;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba64c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba658;
  uVar1 = basic_string<>(&DAT_00fbdbdc,7);
  local_8 = 0;
  local_18 = 0xc29013f6;
  local_14 = 0x762d513f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba6b8(undefined4 param_1)

{
  FUN_004c055d(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba6e9(undefined4 param_1)

{
  FUN_004c05c9(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba71a(undefined4 param_1)

{
  FUN_004c0635(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba74b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba757;
  uVar1 = basic_string<>(&DAT_00fbdbd0,5);
  local_8 = 0;
  local_18 = 0xaee4341e;
  local_14 = 0xc3d8f927;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba7b7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba7c3;
  uVar1 = basic_string<>(&DAT_00fbdbc0,7);
  local_8 = 0;
  local_18 = 0xa4042a19;
  local_14 = 0x96ee6c93;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba823(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba82f;
  uVar1 = basic_string<>(&DAT_00fbdba4,6);
  local_8 = 0;
  local_18 = 0x1660457e;
  local_14 = 0x89f30318;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba88f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba89b;
  uVar1 = basic_string<>(&DAT_00fbdbb4,4);
  local_8 = 0;
  local_18 = 0x51bbc9e9;
  local_14 = 0x1f738260;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba8fb(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba907;
  uVar1 = basic_string<>(&DAT_00fbdb94,7);
  local_8 = 0;
  local_18 = 0xa4571605;
  local_14 = 0xa4ad54cc;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba967(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba973;
  uVar1 = basic_string<>(&DAT_00fbdb88,4);
  local_8 = 0;
  local_18 = 0xc635804b;
  local_14 = 0x998f3df4;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ba9d3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ba9df;
  uVar1 = basic_string<>(&DAT_00fbdb7c,5);
  local_8 = 0;
  local_18 = 0x8e585502;
  local_14 = 0xff2bb0b0;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004baa3f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4baa4b;
  uVar1 = basic_string<>(&DAT_00fbdb70,4);
  local_8 = 0;
  local_18 = 0xbf306e34;
  local_14 = 0xcdefb60e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004baaab(undefined4 param_1)

{
  FUN_004c09e9(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004baadc(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4baae8;
  uVar1 = basic_string<>(&DAT_00fbdb58,0xb);
  local_8 = 0;
  local_18 = 0x6002dc40;
  local_14 = 0xaf3eedfd;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bab48(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bab54;
  uVar1 = basic_string<>(&DAT_00fbdb34,0x11);
  local_8 = 0;
  local_18 = 0xc350dd8a;
  local_14 = 0xb9f97f08;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004babb4(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4babc0;
  uVar1 = basic_string<>(&DAT_00fbdb28,5);
  local_8 = 0;
  local_18 = 0x31dbecbf;
  local_14 = 0xa4890c1e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bac20(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bac2c;
  uVar1 = basic_string<>(&DAT_00fbdb1c,4);
  local_8 = 0;
  local_18 = 0xa2492ee5;
  local_14 = 0xbabce3dc;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bac8c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bac98;
  uVar1 = basic_string<>(&DAT_00fbdb0c,6);
  local_8 = 0;
  local_18 = 0xb70df6eb;
  local_14 = 0xb0636f51;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bacf8(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bad04;
  uVar1 = basic_string<>(&DAT_00fbdafc,6);
  local_8 = 0;
  local_18 = 0x268af80f;
  local_14 = 0x15ce357c;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bad64(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bad70;
  uVar1 = basic_string<>(&DAT_00fbdaec,6);
  local_8 = 0;
  local_18 = 0x852078aa;
  local_14 = 0x53cd6f06;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004badd0(undefined4 param_1)

{
  FUN_004c0d32(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bae01(undefined4 param_1)

{
  FUN_004c0d9e(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bae32(undefined4 param_1)

{
  FUN_004c0e0a(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bae63(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bae6f;
  uVar1 = basic_string<>(&DAT_00fbdae0,5);
  local_8 = 0;
  local_18 = 0x1d600017;
  local_14 = 0x57bd0ec1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004baecf(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4baedb;
  uVar1 = basic_string<>(&DAT_00fbdad4,5);
  local_8 = 0;
  local_18 = 0x4af50e26;
  local_14 = 0xa3109456;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004baf3b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4baf47;
  uVar1 = basic_string<>(&DAT_00fbdac8,5);
  local_8 = 0;
  local_18 = 0xba8a1280;
  local_14 = 0x4e0d0667;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bafa7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bafb3;
  uVar1 = basic_string<>(&DAT_00fbdabc,5);
  local_8 = 0;
  local_18 = 0xaec35659;
  local_14 = 0x90d92015;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb013(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb01f;
  uVar1 = basic_string<>(&DAT_00fbdab0,5);
  local_8 = 0;
  local_18 = 0x2cafbd81;
  local_14 = 0x5e7a7f17;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb07f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb08b;
  uVar1 = basic_string<>(&DAT_00fbdaa4,4);
  local_8 = 0;
  local_18 = 0x7a6db72;
  local_14 = 0xb8b7728b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb0eb(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb0f7;
  uVar1 = basic_string<>(&DAT_00fbda98,5);
  local_8 = 0;
  local_18 = 0x4a616997;
  local_14 = 0xa8579335;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb157(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb163;
  uVar1 = basic_string<>(&DAT_00fbda8c,4);
  local_8 = 0;
  local_18 = 0xb36bb6ae;
  local_14 = 0xabb77d9b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb1c3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb1cf;
  uVar1 = basic_string<>(&DAT_00fbda80,5);
  local_8 = 0;
  local_18 = 0x5e5b89ff;
  local_14 = 0x512b5813;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb22f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb23b;
  uVar1 = basic_string<>(&DAT_00fbda5c,0x11);
  local_8 = 0;
  local_18 = 0xdc13b99c;
  local_14 = 0x63ec25b0;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb29b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb2a7;
  uVar1 = basic_string<>(&DAT_00fbda50,5);
  local_8 = 0;
  local_18 = 0xaa33e9ca;
  local_14 = 0x4bcaf763;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb307(undefined4 param_1)

{
  FUN_004c1341(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb338(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb344;
  uVar1 = basic_string<>(&DAT_00fbda40,6);
  local_8 = 0;
  local_18 = 0xe88249a3;
  local_14 = 0x3490801a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb3a4(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb3b0;
  uVar1 = basic_string<>(&DAT_00fbda34,5);
  local_8 = 0;
  local_18 = 0x3b9e7fef;
  local_14 = 0xd62dee8b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb410(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb41c;
  uVar1 = basic_string<>(&DAT_00fbda28,5);
  local_8 = 0;
  local_18 = 0x21eb8832;
  local_14 = 0x652de014;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb47c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb488;
  uVar1 = basic_string<>(&DAT_00fbda1c,5);
  local_8 = 0;
  local_18 = 0x2a4b4e41;
  local_14 = 0xe2453a30;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb4e8(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb4f4;
  uVar1 = basic_string<>(&DAT_00fbda0c,7);
  local_8 = 0;
  local_18 = 0xf8b8f148;
  local_14 = 0xecf6261c;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb554(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb560;
  uVar1 = basic_string<>(&DAT_00fbd9fc,7);
  local_8 = 0;
  local_18 = 0x7acc8a20;
  local_14 = 0x1e55c819;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb5c0(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb5cc;
  uVar1 = basic_string<>(&DAT_00fbd9f0,5);
  local_8 = 0;
  local_18 = 0x5d1fa65b;
  local_14 = 0x4a852ed6;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb62c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb638;
  uVar1 = basic_string<>(&DAT_00fbd9e4,5);
  local_8 = 0;
  local_18 = 0x53090bc;
  local_14 = 0x80cadbca;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb698(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb6a4;
  uVar1 = basic_string<>(&DAT_00fbd9d0,9);
  local_8 = 0;
  local_18 = 0xd41ffdd1;
  local_14 = 0xfcb73d39;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb704(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb710;
  uVar1 = basic_string<>(&DAT_00fbd9c0,7);
  local_8 = 0;
  local_18 = 0x71e9237f;
  local_14 = 0x7fb32b75;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb770(undefined4 param_1)

{
  FUN_004c17bf(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb7a1(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb7ad;
  uVar1 = basic_string<>(&DAT_00fbd9b4,5);
  local_8 = 0;
  local_18 = 0xc9dc90da;
  local_14 = 0x39119bf9;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb80d(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb819;
  uVar1 = basic_string<>(&DAT_00fbd9a8,5);
  local_8 = 0;
  local_18 = 0x2a3820de;
  local_14 = 0x2ed0a89a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb879(undefined4 param_1)

{
  FUN_004c1903(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb8aa(undefined4 param_1)

{
  FUN_004c196f(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb8db(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb8e7;
  uVar1 = basic_string<>(&DAT_00fbd99c,5);
  local_8 = 0;
  local_18 = 0xc2858cf8;
  local_14 = 0xde9e3942;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb947(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb953;
  uVar1 = basic_string<>(&DAT_00fbd990,5);
  local_8 = 0;
  local_18 = 0x5a24e4fd;
  local_14 = 0x955105e3;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bb9b3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bb9bf;
  uVar1 = basic_string<>(&DAT_00fbd984,5);
  local_8 = 0;
  local_18 = 0xcb705032;
  local_14 = 0x3a8819e6;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bba1f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bba2b;
  uVar1 = basic_string<>(&DAT_00fbd978,5);
  local_8 = 0;
  local_18 = 0x622ce36d;
  local_14 = 0xef776ade;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bba8b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bba97;
  uVar1 = basic_string<>(&DAT_00fbd96c,5);
  local_8 = 0;
  local_18 = 0x91f2f6e7;
  local_14 = 0xc9f04942;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bbaf7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bbb03;
  uVar1 = basic_string<>(&DAT_00fbd960,5);
  local_8 = 0;
  local_18 = 0x723307b2;
  local_14 = 0xef6e7c26;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bbb63(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bbb6f;
  uVar1 = basic_string<>(&DAT_00fbd948,10);
  local_8 = 0;
  local_18 = 0x990769af;
  local_14 = 0x492ca24e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bbbcf(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bbbdb;
  uVar1 = basic_string<>(&DAT_00fbd93c,5);
  local_8 = 0;
  local_18 = 0xae8e8741;
  local_14 = 0xd1d2edb3;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bbc3b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bbc47;
  uVar1 = basic_string<>(&DAT_00fbd930,5);
  local_8 = 0;
  local_18 = 0xd1ed7ecf;
  local_14 = 0xc35f9394;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bbca7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bbcb3;
  uVar1 = basic_string<>(&DAT_00fbd924,5);
  local_8 = 0;
  local_18 = 0xc74c3f14;
  local_14 = 0xfbc1ef13;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bbd13(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bbd1f;
  uVar1 = basic_string<>(&DAT_00fbd914,6);
  local_8 = 0;
  local_18 = 0x2346c442;
  local_14 = 0xd3334916;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bbd7f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bbd8b;
  uVar1 = basic_string<>(&DAT_00fbd908,5);
  local_8 = 0;
  local_18 = 0x123358fe;
  local_14 = 0xbba9ddf6;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bbdeb(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bbdf7;
  uVar1 = basic_string<>(&DAT_00fbd8fc,5);
  local_8 = 0;
  local_18 = 0x73afc5d3;
  local_14 = 0xa9514d2b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bbe57(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bbe63;
  uVar1 = basic_string<>(&DAT_00fbd8ec,6);
  local_8 = 0;
  local_18 = 0x2e8d3e75;
  local_14 = 0xe195fcf1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bbec3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bbecf;
  uVar1 = basic_string<>(&DAT_00fbd8e0,5);
  local_8 = 0;
  local_18 = 0xbdf67ff8;
  local_14 = 0x3f82e7de;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bbf2f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bbf3b;
  uVar1 = basic_string<>(&DAT_00fbd8d4,5);
  local_8 = 0;
  local_18 = 0x40178d27;
  local_14 = 0x98f67eed;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bbf9b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bbfa7;
  uVar1 = basic_string<>(&DAT_00fbd8c8,5);
  local_8 = 0;
  local_18 = 0x82ff813d;
  local_14 = 0xb00ebe82;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc007(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc013;
  uVar1 = basic_string<>(&DAT_00fbd8bc,5);
  local_8 = 0;
  local_18 = 0xbd6d6847;
  local_14 = 0x65479e92;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc073(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc07f;
  uVar1 = basic_string<>(&DAT_00fbd8a0,0xd);
  local_8 = 0;
  local_18 = 0x58856f12;
  local_14 = 0xfafc3384;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc0df(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc0eb;
  uVar1 = basic_string<>(&DAT_00fbd894,5);
  local_8 = 0;
  local_18 = 0x92310f31;
  local_14 = 0xcb6ceb35;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc14b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc157;
  uVar1 = basic_string<>(&DAT_00fbd888,5);
  local_8 = 0;
  local_18 = 0x69fc51d6;
  local_14 = 0xa550773b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc1b7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc1c3;
  uVar1 = basic_string<>(&DAT_00fbd87c,5);
  local_8 = 0;
  local_18 = 0x516a31dd;
  local_14 = 0x42874f62;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc223(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc22f;
  uVar1 = basic_string<>(&DAT_00fbd870,5);
  local_8 = 0;
  local_18 = 0x326990e4;
  local_14 = 0xfe205bf6;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc28f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc29b;
  uVar1 = basic_string<>(&DAT_00fbd864,5);
  local_8 = 0;
  local_18 = 0x3adcb78d;
  local_14 = 0xc61d83bc;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc2fb(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc307;
  uVar1 = basic_string<>(&DAT_00fbd858,5);
  local_8 = 0;
  local_18 = 0xf124e9ed;
  local_14 = 0x9d464da6;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc367(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc373;
  uVar1 = basic_string<>(&DAT_00fbd84c,5);
  local_8 = 0;
  local_18 = 0x435e070f;
  local_14 = 0x1bffef3a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc3d3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc3df;
  uVar1 = basic_string<>(&DAT_00fbd840,5);
  local_8 = 0;
  local_18 = 0xa19df342;
  local_14 = 0xcc7d70b5;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc43f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc44b;
  uVar1 = basic_string<>(&DAT_00fbd834,5);
  local_8 = 0;
  local_18 = 0x3d86aca9;
  local_14 = 0x12aa9820;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc4ab(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc4b7;
  uVar1 = basic_string<>(&DAT_00fbd828,5);
  local_8 = 0;
  local_18 = 0x646c1d60;
  local_14 = 0x857bd7b7;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc517(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc523;
  uVar1 = basic_string<>(&DAT_00fbd81c,5);
  local_8 = 0;
  local_18 = 0xbf7a0428;
  local_14 = 0xa8d3ff64;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc583(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc58f;
  uVar1 = basic_string<>(&DAT_00fbd810,5);
  local_8 = 0;
  local_18 = 0xed88b5a7;
  local_14 = 0x1101deaf;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc5ef(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc5fb;
  uVar1 = basic_string<>(&DAT_00fbd804,5);
  local_8 = 0;
  local_18 = 0x80d96371;
  local_14 = 0xf64dc45c;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc65b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc667;
  uVar1 = basic_string<>(&DAT_00fbd7f8,5);
  local_8 = 0;
  local_18 = 0xf50d4e0;
  local_14 = 0xa0a20514;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc6c7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc6d3;
  uVar1 = basic_string<>(&DAT_00fbd7ec,5);
  local_8 = 0;
  local_18 = 0xa7ed8ad8;
  local_14 = 0x2c6a33be;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc733(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc73f;
  uVar1 = basic_string<>(&DAT_00fbd7e0,5);
  local_8 = 0;
  local_18 = 0x6af0f161;
  local_14 = 0x2937ccfe;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc79f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc7ab;
  uVar1 = basic_string<>(&DAT_00fbd7d4,5);
  local_8 = 0;
  local_18 = 0x2712d008;
  local_14 = 0x3a87a13d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc80b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc817;
  uVar1 = basic_string<>(&DAT_00fbd7c4,7);
  local_8 = 0;
  local_18 = 0x57034751;
  local_14 = 0xa679fc32;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc877(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc883;
  uVar1 = basic_string<>(&DAT_00fbd7b8,5);
  local_8 = 0;
  local_18 = 0x566cbb48;
  local_14 = 0xa629bed5;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc8e3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc8ef;
  uVar1 = basic_string<>(&DAT_00fbd7ac,5);
  local_8 = 0;
  local_18 = 0x24977855;
  local_14 = 0xae85475d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc94f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc95b;
  uVar1 = basic_string<>(&DAT_00fbd7a0,5);
  local_8 = 0;
  local_18 = 0x6c445f57;
  local_14 = 0x3f81ecb;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bc9bb(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bc9c7;
  uVar1 = basic_string<>(&DAT_00fbd794,5);
  local_8 = 0;
  local_18 = 0xbc4a31f4;
  local_14 = 0xb11de1a8;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bca27(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bca33;
  uVar1 = basic_string<>(&DAT_00fbd788,5);
  local_8 = 0;
  local_18 = 0x589232d5;
  local_14 = 0x13d15fce;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bca93(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bca9f;
  uVar1 = basic_string<>(&DAT_00fbd77c,5);
  local_8 = 0;
  local_18 = 0xe8c6099c;
  local_14 = 0xfef46de3;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bcaff(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bcb0b;
  uVar1 = basic_string<>(&DAT_00fbd770,5);
  local_8 = 0;
  local_18 = 0x444dc706;
  local_14 = 0xf5103ab8;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bcb6b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bcb77;
  uVar1 = basic_string<>(&DAT_00fbd764,5);
  local_8 = 0;
  local_18 = 0xbb74e182;
  local_14 = 0xd46f5b10;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bcbd7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bcbe3;
  uVar1 = basic_string<>(&DAT_00fbd758,5);
  local_8 = 0;
  local_18 = 0xf7d9eef0;
  local_14 = 0xd7518473;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bcc43(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bcc4f;
  uVar1 = basic_string<>(&DAT_00fbd74c,5);
  local_8 = 0;
  local_18 = 0x86e29518;
  local_14 = 0xe6e46469;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bccaf(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bccbb;
  uVar1 = basic_string<>(&DAT_00fbd740,5);
  local_8 = 0;
  local_18 = 0xda2a2f33;
  local_14 = 0x1afa4e6b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bcd1b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bcd27;
  uVar1 = basic_string<>(&DAT_00fbd730,7);
  local_8 = 0;
  local_18 = 0xcc1291cf;
  local_14 = 0xd5b6abb5;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bcd87(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bcd93;
  uVar1 = basic_string<>(&DAT_00fbd724,5);
  local_8 = 0;
  local_18 = 0xce03d2d0;
  local_14 = 0x877dbc49;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bcdf3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bcdff;
  uVar1 = basic_string<>(&DAT_00fbd714,7);
  local_8 = 0;
  local_18 = 0x388af158;
  local_14 = 0x3d7392a2;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bce5f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bce6b;
  uVar1 = basic_string<>(&DAT_00fbd708,5);
  local_8 = 0;
  local_18 = 0x826396ea;
  local_14 = 0xd6468b73;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bcecb(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bced7;
  uVar1 = basic_string<>(&DAT_00fbd6fc,5);
  local_8 = 0;
  local_18 = 0xbbccdb59;
  local_14 = 0x8fd18c45;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bcf37(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bcf43;
  uVar1 = basic_string<>(&DAT_00fbd6f0,5);
  local_8 = 0;
  local_18 = 0xe25898dd;
  local_14 = 0x2d573e47;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bcfa3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bcfaf;
  uVar1 = basic_string<>(&DAT_00fbd6e4,5);
  local_8 = 0;
  local_18 = 0xd48d3a1a;
  local_14 = 0x727579b6;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd00f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd01b;
  uVar1 = basic_string<>(&DAT_00fbd6d8,5);
  local_8 = 0;
  local_18 = 0x93135c97;
  local_14 = 0x55bada02;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd07b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd087;
  uVar1 = basic_string<>(&DAT_00fbd6cc,5);
  local_8 = 0;
  local_18 = 0xa397612;
  local_14 = 0x3419fa59;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd0e7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd0f3;
  uVar1 = basic_string<>(&DAT_00fbd6c0,5);
  local_8 = 0;
  local_18 = 0xd7fff148;
  local_14 = 0x6b80f9d5;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd153(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd15f;
  uVar1 = basic_string<>(&DAT_00fbd6b4,5);
  local_8 = 0;
  local_18 = 0xdb08357f;
  local_14 = 0x64dab751;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd1bf(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd1cb;
  uVar1 = basic_string<>(&DAT_00fbd6a8,5);
  local_8 = 0;
  local_18 = 0x779d7501;
  local_14 = 0x52f1139c;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd22b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd237;
  uVar1 = basic_string<>(&DAT_00fbd69c,5);
  local_8 = 0;
  local_18 = 0xceeab1b8;
  local_14 = 0x82b4dbdc;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd297(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd2a3;
  uVar1 = basic_string<>(&DAT_00fbd690,5);
  local_8 = 0;
  local_18 = 0x6702ac2e;
  local_14 = 0x56420033;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd303(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd30f;
  uVar1 = basic_string<>(&DAT_00fbd684,5);
  local_8 = 0;
  local_18 = 0x796c25ef;
  local_14 = 0x9ca8bf73;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd36f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd37b;
  uVar1 = basic_string<>(&DAT_00fbd678,5);
  local_8 = 0;
  local_18 = 0xc8f214f9;
  local_14 = 0xdd2a4a08;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd3db(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd3e7;
  uVar1 = basic_string<>(&DAT_00fbd66c,5);
  local_8 = 0;
  local_18 = 0xfede155b;
  local_14 = 0x7c2c13e6;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd447(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd453;
  uVar1 = basic_string<>(&DAT_00fbd660,5);
  local_8 = 0;
  local_18 = 0xd49be2a9;
  local_14 = 0x30fbaadb;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd4b3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd4bf;
  uVar1 = basic_string<>(&DAT_00fbd654,5);
  local_8 = 0;
  local_18 = 0xfe608b88;
  local_14 = 0xc3708270;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd51f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd52b;
  uVar1 = basic_string<>(&DAT_00fbd648,5);
  local_8 = 0;
  local_18 = 0x69120edf;
  local_14 = 0xbded35a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd58b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd597;
  uVar1 = basic_string<>(&DAT_00fbd63c,5);
  local_8 = 0;
  local_18 = 0x59ce0dab;
  local_14 = 0x3321b513;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd5f7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd603;
  uVar1 = basic_string<>(&DAT_00fbd630,5);
  local_8 = 0;
  local_18 = 0xfbf8956f;
  local_14 = 0x8253f63b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd663(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd66f;
  uVar1 = basic_string<>(&DAT_00fbd618,5);
  local_8 = 0;
  local_18 = 0xbd11fac0;
  local_14 = 0x624ffebf;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd6cf(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd6db;
  uVar1 = basic_string<>(&DAT_00fbd624,5);
  local_8 = 0;
  local_18 = 0x220cbcd6;
  local_14 = 0xb870659d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd73b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd747;
  uVar1 = basic_string<>(&DAT_00fbd60c,5);
  local_8 = 0;
  local_18 = 0xf6e4c45a;
  local_14 = 0x687a80e9;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd7a7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd7b3;
  uVar1 = basic_string<>(&DAT_00fbd600,5);
  local_8 = 0;
  local_18 = 0xfaa1c7f0;
  local_14 = 0xd673603f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd813(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd81f;
  uVar1 = basic_string<>(&DAT_00fbd5f4,5);
  local_8 = 0;
  local_18 = 0xc8cc85fc;
  local_14 = 0xdfcfeac8;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd87f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd88b;
  uVar1 = basic_string<>(&DAT_00fbd5e8,5);
  local_8 = 0;
  local_18 = 0xa36ada2d;
  local_14 = 0x7e1c43be;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd8eb(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd8f7;
  uVar1 = basic_string<>(&DAT_00fbd5dc,5);
  local_8 = 0;
  local_18 = 0x85823c6a;
  local_14 = 0x8248fc3a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd957(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd963;
  uVar1 = basic_string<>(&DAT_00fbd5d0,5);
  local_8 = 0;
  local_18 = 0x8cdd61dd;
  local_14 = &DAT_02b27719;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bd9c3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bd9cf;
  uVar1 = basic_string<>(&DAT_00fbd5c4,5);
  local_8 = 0;
  local_18 = 0x53e23102;
  local_14 = 0x46841728;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bda2f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bda3b;
  uVar1 = basic_string<>(&DAT_00fbd5b8,5);
  local_8 = 0;
  local_18 = 0x5ffe0187;
  local_14 = 0xb983f174;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bda9b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bdaa7;
  uVar1 = basic_string<>(&DAT_00fbd5ac,5);
  local_8 = 0;
  local_18 = 0xb8c8814a;
  local_14 = 0x3cff1a8;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bdb07(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bdb13;
  uVar1 = basic_string<>(&DAT_00fbd5a0,5);
  local_8 = 0;
  local_18 = 0x32ed05d3;
  local_14 = 0x5e4b85c7;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bdb73(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bdb7f;
  uVar1 = basic_string<>(&DAT_00fbd594,5);
  local_8 = 0;
  local_18 = 0xa16dfedf;
  local_14 = 0x34385300;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bdbdf(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bdbeb;
  uVar1 = basic_string<>(&DAT_00fbd58c,3);
  local_8 = 0;
  local_18 = 0xa7dc83ed;
  local_14 = 0x889c89;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bdc4b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bdc57;
  uVar1 = basic_string<>(&DAT_00fbd580,5);
  local_8 = 0;
  local_18 = 0xe67296c6;
  local_14 = 0x91901fbb;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bdcb7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bdcc3;
  uVar1 = basic_string<>(&DAT_00fbd574,5);
  local_8 = 0;
  local_18 = 0x20dbdb34;
  local_14 = 0x491c208d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bdd23(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bdd2f;
  uVar1 = basic_string<>(&DAT_00fbd568,5);
  local_8 = 0;
  local_18 = 0x36de4e74;
  local_14 = 0x8fcbdff5;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bdd8f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bdd9b;
  uVar1 = basic_string<>(&DAT_00fbd55c,5);
  local_8 = 0;
  local_18 = 0x75fcb31b;
  local_14 = 0xe8666e3b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bddfb(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bde07;
  uVar1 = basic_string<>(&DAT_00fbd550,5);
  local_8 = 0;
  local_18 = 0x56e8b288;
  local_14 = 0x591aad26;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bde67(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bde73;
  uVar1 = basic_string<>(&DAT_00fbd544,5);
  local_8 = 0;
  local_18 = 0xc17e0b2;
  local_14 = 0xe9afca29;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bded3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bdedf;
  uVar1 = basic_string<>(&DAT_00fbd538,5);
  local_8 = 0;
  local_18 = 0xa2d373ed;
  local_14 = 0x9e9e1a20;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bdf3f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bdf4b;
  uVar1 = basic_string<>(&DAT_00fbd52c,5);
  local_8 = 0;
  local_18 = 0x95d87c74;
  local_14 = 0x5311b949;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bdfab(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bdfb7;
  uVar1 = basic_string<>(&DAT_00fbd520,5);
  local_8 = 0;
  local_18 = 0x6fb391b;
  local_14 = 0xd5f753e4;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be017(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be023;
  uVar1 = basic_string<>(&DAT_00fbd500,0xf);
  local_8 = 0;
  local_18 = 0x5077f982;
  local_14 = 0xefff7607;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be083(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be08f;
  uVar1 = basic_string<>(&DAT_00fbd4f4,5);
  local_8 = 0;
  local_18 = 0xa8d39bdc;
  local_14 = 0xfce57e28;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be0ef(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be0fb;
  uVar1 = basic_string<>(&DAT_00fbd4e8,5);
  local_8 = 0;
  local_18 = 0x27bf0204;
  local_14 = 0xca86dc2a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be15b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be167;
  uVar1 = basic_string<>(&DAT_00fbd4dc,5);
  local_8 = 0;
  local_18 = 0xa01622eb;
  local_14 = 0x370b5651;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be1c7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be1d3;
  uVar1 = basic_string<>(&DAT_00fbd4d0,5);
  local_8 = 0;
  local_18 = 0xe210779b;
  local_14 = 0x9a096490;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be233(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be23f;
  uVar1 = basic_string<>(&DAT_00fbd4c0,6);
  local_8 = 0;
  local_18 = 0xcd6b6b90;
  local_14 = 0xa60093ab;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be29f(undefined4 param_1)

{
  FUN_004c4b10(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004be2d0(int *param_1)

{
  undefined *local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::W8092421A::vftable;
  local_18 = &W8489743A::W73E7994D::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 4))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be2ff(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be30b;
  uVar1 = basic_string<>(&DAT_00fbd48c,8);
  local_8 = 0;
  local_18 = 0x200e69d8;
  local_14 = 0x37840f04;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



int __fastcall FUN_004be36b(int param_1)

{
  return param_1 + 4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004be36f(int *param_1)

{
  undefined *local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::W8092421A::vftable;
  local_18 = &W8489743A::WC6996314::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0xc))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be39e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be3aa;
  uVar1 = basic_string<>(&DAT_00fbd47c,6);
  local_8 = 0;
  local_18 = 0xe9c1ce1b;
  local_14 = 0x4a283a30;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be40a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be416;
  uVar1 = basic_string<>(&DAT_00fbd46c,7);
  local_8 = 0;
  local_18 = 0x5fb14df0;
  local_14 = 0x133615d4;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



undefined4 * __thiscall FUN_004be476(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8489743A::W551DDDE3::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004be493(int *param_1)

{
  undefined *local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::WD10DD199::vftable;
  local_18 = &W8489743A::WB0A3BB79::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x24))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be4c2(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be4ce;
  uVar1 = basic_string<>(&DAT_00fbd460,5);
  local_8 = 0;
  local_18 = 0xed2eef0d;
  local_14 = 0xbc08ce6a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004be52e(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x2c))(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004be53d(int *param_1)

{
  undefined *local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::WDD44FEF4::vftable;
  local_18 = &W8489743A::W8B722C50::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x2c))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be56c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be578;
  uVar1 = basic_string<>(&DAT_00fbd450,7);
  local_8 = 0;
  local_18 = 0x21796575;
  local_14 = 0xbeabfa79;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be5d8(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be5e4;
  uVar1 = basic_string<>(&DAT_00fbd43c,8);
  local_8 = 0;
  local_18 = 0x2cf10703;
  local_14 = 0x9f665e1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004be644(int *param_1)

{
  undefined *local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::W11E13D1D::vftable;
  local_18 = &W8489743A::W9A84A823::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x38))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be673(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be67f;
  uVar1 = basic_string<>(&DAT_00fbd42c,6);
  local_8 = 0;
  local_18 = 0xb25cec89;
  local_14 = 0xfa414d71;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004be6df(int *param_1)

{
  undefined *local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::W11E13D1D::vftable;
  local_18 = &W8489743A::W65EC8500::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x40))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be70e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be71a;
  uVar1 = basic_string<>(&DAT_00fbd41c,7);
  local_8 = 0;
  local_18 = 0x6b8ad6ec;
  local_14 = 0xeaa211f3;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004be77a(void)

{
  FUN_00478a2d();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004be786(int *param_1)

{
  undefined *local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::W11E13D1D::vftable;
  local_18 = &W8489743A::W45488EDF::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x48))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be7b5(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be7c1;
  uVar1 = basic_string<>(&DAT_00fbd40c,7);
  local_8 = 0;
  local_18 = 0x3fcc4c87;
  local_14 = 0x126e4d08;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be821(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be82d;
  uVar1 = basic_string<>(&DAT_00fbd404,3);
  local_8 = 0;
  local_18 = 0x32849c96;
  local_14 = 0x94cbc278;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be88d(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be899;
  uVar1 = basic_string<>(&DAT_00fbd340,8);
  local_8 = 0;
  local_18 = 0xe231fe5f;
  local_14 = 0x11eb3e8f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004be8f9(int *param_1)

{
  undefined *local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::WE3BF9DE0::vftable;
  local_18 = &W8489743A::W9688E23B::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x50))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be928(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be934;
  uVar1 = basic_string<>(&DAT_00fbd330,6);
  local_8 = 0;
  local_18 = 0x8b841eae;
  local_14 = 0x141620c1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004be994(void)

{
  undefined4 *in_EAX;
  
  in_EAX[1] = W8489743A::W551DDDE3::vftable;
  *in_EAX = W8489743A::WE77C49A0::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004be9a2(int *param_1)

{
  undefined *local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::WE3BF9DE0::vftable;
  local_18 = &W8489743A::WF09394B9::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x5c))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004be9d1(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4be9dd;
  uVar1 = basic_string<>(&DAT_00fbd320,7);
  local_8 = 0;
  local_18 = 0xb052bd79;
  local_14 = 0x7d3768a6;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bea3d(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bea49;
  uVar1 = basic_string<>(&DAT_00fbd310,6);
  local_8 = 0;
  local_18 = 0xe7d4812;
  local_14 = 0xe3cf1c78;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004beaa9(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x70))(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004beac0(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::W86C1BB62::vftable;
  local_1c = &W8489743A::W42EC263D::vftable;
  local_18 = &W8489743A::W42EC263D::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x70))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004beaf6(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4beb02;
  uVar1 = basic_string<>(&DAT_00fbd3f4,6);
  local_8 = 0;
  local_18 = 0x6a6699f8;
  local_14 = 0xa63002ab;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004beb62(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4beb6e;
  uVar1 = basic_string<>(&DAT_00fbd3e4,6);
  local_8 = 0;
  local_18 = 0x863aa731;
  local_14 = 0xcf3576c8;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bebce(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bebda;
  uVar1 = basic_string<>(&DAT_00fbd3d4,6);
  local_8 = 0;
  local_18 = 0x79fb4798;
  local_14 = 0xf42538bf;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004bec3a(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x80))(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bec4c(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::WD03FEC31::vftable;
  local_1c = &W8489743A::W6ACDFBB5::vftable;
  local_18 = &W8489743A::W6ACDFBB5::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x80))(&local_1c);
  return;
}



void __thiscall FUN_004bec85(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x88))(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bec97(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::WD03FEC31::vftable;
  local_1c = &W8489743A::W95ACAF8E::vftable;
  local_18 = &W8489743A::W95ACAF8E::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x88))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004becd0(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4becdc;
  uVar1 = basic_string<>(&DAT_00fbd3c0,8);
  local_8 = 0;
  local_18 = 0x1a77144f;
  local_14 = 0xdc2c4510;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bed3c(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::WD03FEC31::vftable;
  local_1c = &W8489743A::W5B20282F::vftable;
  local_18 = &W8489743A::W5B20282F::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x94))(&local_1c);
  return;
}



void __thiscall FUN_004bed75(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x94))(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bed87(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::WD03FEC31::vftable;
  local_1c = &W8489743A::W5B20282F::vftable;
  local_18 = &W8489743A::W5B20282F::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x94))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bedc0(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bedcc;
  uVar1 = basic_string<>(&DAT_00fbd3b0,7);
  local_8 = 0;
  local_18 = 0xfc3c5087;
  local_14 = 0xb814e8a7;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bee2c(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::WD03FEC31::vftable;
  local_1c = &W8489743A::W7EE26973::vftable;
  local_18 = &W8489743A::W7EE26973::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x9c))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bee65(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bee71;
  uVar1 = basic_string<>(&DAT_00fbd3a0,6);
  local_8 = 0;
  local_18 = 0x27aec6e2;
  local_14 = 0x12e86463;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004beed1(void)

{
  FUN_00432156();
  return;
}



void __thiscall FUN_004beedc(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xa8))(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004beeee(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::WD03FEC31::vftable;
  local_1c = &W8489743A::W4C1F5CF1::vftable;
  local_18 = &W8489743A::W4C1F5CF1::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0xa8))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bef27(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bef33;
  uVar1 = basic_string<>(&DAT_00fbd38c,9);
  local_8 = 0;
  local_18 = 0x413b28c3;
  local_14 = 0xfda072c1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004bef93(void)

{
  undefined4 *in_EAX;
  
  in_EAX[2] = W8489743A::W551DDDE3::vftable;
  in_EAX[1] = W8489743A::W439B868B::vftable;
  *in_EAX = W8489743A::WE77C49A0::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004befa8(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::WD03FEC31::vftable;
  local_1c = &W8489743A::WB6FEBBCD::vftable;
  local_18 = &W8489743A::WB6FEBBCD::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0xb0))(&local_1c);
  return;
}



void __thiscall FUN_004befe1(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xb8))(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004beff3(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::WD03FEC31::vftable;
  local_1c = &W8489743A::W0AEF23B6::vftable;
  local_18 = &W8489743A::W0AEF23B6::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0xb8))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf02c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf038;
  uVar1 = basic_string<>(&DAT_00fbd37c,7);
  local_8 = 0;
  local_18 = 0xd41c6d2a;
  local_14 = 0x507921f3;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bf098(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::WD03FEC31::vftable;
  local_1c = &W8489743A::W30346F2B::vftable;
  local_18 = &W8489743A::W30346F2B::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0xc0))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf0d1(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf0dd;
  uVar1 = basic_string<>(&DAT_00fbd36c,7);
  local_8 = 0;
  local_18 = 0x3c8a8a7d;
  local_14 = 0xbfdc4a64;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bf13d(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::WD03FEC31::vftable;
  local_1c = &W8489743A::W715A2180::vftable;
  local_18 = &W8489743A::W715A2180::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0xcc))(&local_1c);
  return;
}



void __thiscall FUN_004bf176(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xcc))(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bf188(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::WD03FEC31::vftable;
  local_1c = &W8489743A::W715A2180::vftable;
  local_18 = &W8489743A::W715A2180::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0xcc))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf1c1(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf1cd;
  uVar1 = basic_string<>(&DAT_00fbd360,5);
  local_8 = 0;
  local_18 = 0x243cd696;
  local_14 = 0x20d1c7f9;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bf22d(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::WD03FEC31::vftable;
  local_1c = &W8489743A::W7B35B617::vftable;
  local_18 = &W8489743A::W7B35B617::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0xe4))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf278(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf284;
  uVar1 = basic_string<>(&DAT_00fbd354,5);
  local_8 = 0;
  local_18 = 0xc8e0ce55;
  local_14 = 0xfcc6d648;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf2e4(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf2f0;
  uVar1 = basic_string<>(&DAT_00fbd300,6);
  local_8 = 0;
  local_18 = 0x2649a6ae;
  local_14 = 0xee18085b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf350(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf35c;
  uVar1 = basic_string<>(&DAT_00fbd2f0,7);
  local_8 = 0;
  local_18 = 0xaf05da9;
  local_14 = 0x39a3c918;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bf3ce(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::W6713DAB2::vftable;
  local_1c = &W8489743A::WEEFFE371::vftable;
  local_18 = &W8489743A::WEEFFE371::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0xf4))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf407(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf413;
  uVar1 = basic_string<>(&DAT_00fbd2dc,8);
  local_8 = 0;
  local_18 = 0xc61f96df;
  local_14 = 0x6a4a169c;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bf485(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_18 = &W8489743A::W61081EA6::vftable;
  local_1c = &W8489743A::WA058D196::vftable;
  local_14 = &W8489743A::WA058D196::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0xfc))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf4be(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf4ca;
  uVar1 = basic_string<>(&DAT_00fbd2c8,8);
  local_8 = 0;
  local_18 = 0xc8a08c61;
  local_14 = 0x46d4233b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bf53c(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_18 = &W8489743A::W61081EA6::vftable;
  local_1c = &W8489743A::W013FFE1D::vftable;
  local_14 = &W8489743A::W013FFE1D::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x104))(&local_1c);
  return;
}



void FUN_004bf587(void)

{
  undefined4 *in_EAX;
  
  in_EAX[2] = W8489743A::W439B868B::vftable;
  in_EAX[1] = W8489743A::W551DDDE3::vftable;
  *in_EAX = W8489743A::WE77C49A0::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bf59c(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_18 = &W8489743A::W61081EA6::vftable;
  local_1c = &W8489743A::WF1AB95F4::vftable;
  local_14 = &W8489743A::WF1AB95F4::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x10c))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf5d5(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf5e1;
  uVar1 = basic_string<>(&DAT_00fbd2a8,6);
  local_8 = 0;
  local_18 = 0xf548810;
  local_14 = 0x7ae695de;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bf653(int *param_1)

{
  undefined *local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_18 = &W8489743A::W61081EA6::vftable;
  local_1c = &W8489743A::W9C7051D2::vftable;
  local_14 = &W8489743A::W9C7051D2::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x114))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf68c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf698;
  uVar1 = basic_string<>(&DAT_00fbd2b8,6);
  local_8 = 0;
  local_18 = 0x1481c87d;
  local_14 = 0x3438a039;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004bf6f8(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x11c))(param_1_00);
  return;
}



undefined4 * __thiscall FUN_004bf70a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8489743A::W439B868B::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bf727(int *param_1)

{
  undefined **local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_18 = &W8489743A::W61081EA6::vftable;
  local_1c = W8489743A::WE1BF8EB0::vftable;
  local_14 = W8489743A::WE1BF8EB0::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x11c))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf760(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf76c;
  uVar1 = basic_string<>(&DAT_00fbd298,7);
  local_8 = 0;
  local_18 = 0xd68d96a0;
  local_14 = &DAT_0288662a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bf7de(int *param_1)

{
  undefined *local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::W61081EA6::vftable;
  local_18 = &W8489743A::W265C4016::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x124))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf810(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf81c;
  uVar1 = basic_string<>(&DAT_00fbd288,6);
  local_8 = 0;
  local_18 = 0xf5dd7ad7;
  local_14 = 0x987b527c;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf87c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf888;
  uVar1 = basic_string<>(&DAT_00fbd274,8);
  local_8 = 0;
  local_18 = 0x8cd2e086;
  local_14 = 0xd418f3d9;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf8e8(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf8f4;
  uVar1 = basic_string<>(&DAT_00fbd268,4);
  local_8 = 0;
  local_18 = 0x8766f3c5;
  local_14 = 0x1347ffd0;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf954(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf960;
  uVar1 = basic_string<>(&DAT_00fbd25c,5);
  local_8 = 0;
  local_18 = 0xcf25696;
  local_14 = 0x7ff86544;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bf9c0(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bf9cc;
  uVar1 = basic_string<>(&DAT_00fbd24c,7);
  local_8 = 0;
  local_18 = 0x8974ffa8;
  local_14 = 0x3d8296df;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bfa2c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bfa38;
  uVar1 = basic_string<>(&DAT_00fbd244,3);
  local_8 = 0;
  local_18 = 0xd43f1873;
  local_14 = 0x1f8ddc57;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bfa98(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bfaa4;
  uVar1 = basic_string<>(&DAT_00fbd238,5);
  local_8 = 0;
  local_18 = 0x2de31008;
  local_14 = 0x58b0fe84;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bfb04(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bfb10;
  uVar1 = basic_string<>(&DAT_00fbd228,6);
  local_8 = 0;
  local_18 = 0xf61c0628;
  local_14 = 0x4f9f108a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bfb70(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bfb7c;
  uVar1 = basic_string<>(&DAT_00fbd210,10);
  local_8 = 0;
  local_18 = 0x346c5d2e;
  local_14 = 0x7d3b312b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004bfbdc(void)

{
  undefined4 *in_EAX;
  
  in_EAX[1] = W8489743A::W5F13E966::vftable;
  in_EAX[2] = W8489743A::W8B7BA12B::vftable;
  in_EAX[3] = W8489743A::WA62C1D19::vftable;
  *in_EAX = W8489743A::WC72DAEAC::vftable;
  in_EAX[1] = W8489743A::WC72DAEAC::vftable;
  in_EAX[2] = W8489743A::WC72DAEAC::vftable;
  in_EAX[3] = W8489743A::WC72DAEAC::vftable;
  in_EAX[4] = W8489743A::WF3E7683A::vftable;
  return;
}



void FUN_004bfc14(void)

{
  undefined4 *unaff_ESI;
  
  FUN_004bfbdc();
  *unaff_ESI = W8489743A::W1861C082::vftable;
  unaff_ESI[1] = W8489743A::W1861C082::vftable;
  unaff_ESI[2] = W8489743A::W1861C082::vftable;
  unaff_ESI[3] = W8489743A::W1861C082::vftable;
  return;
}



void __thiscall FUN_004bfc39(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x14c))(param_1_00);
  return;
}



void __thiscall FUN_004bfc4b(int param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x24))(param_1_00 + -4);
  return;
}



undefined4 FUN_004bfc5d(void)

{
  return 0x20000;
}



void FUN_004bfc63(void)

{
  undefined4 *in_EAX;
  
  FUN_004bfc14();
  *in_EAX = W8489743A::WE8C1055E::vftable;
  in_EAX[1] = W8489743A::WE8C1055E::vftable;
  in_EAX[2] = W8489743A::WE8C1055E::vftable;
  in_EAX[3] = W8489743A::WE8C1055E::vftable;
  return;
}



undefined4 * __thiscall FUN_004bfc8a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8489743A::W5F13E966::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_004bfca7(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8489743A::W8B7BA12B::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_004bfcc4(void)

{
  undefined4 *in_EAX;
  
  in_EAX[4] = W8489743A::W551DDDE3::vftable;
  in_EAX[3] = W8489743A::WA62C1D19::vftable;
  in_EAX[2] = W8489743A::W8B7BA12B::vftable;
  in_EAX[1] = W8489743A::W5F13E966::vftable;
  *in_EAX = W8489743A::WE77C49A0::vftable;
  return;
}



void FUN_004bfce7(void)

{
  undefined4 *in_EAX;
  
  in_EAX[4] = W8489743A::W551DDDE3::vftable;
  in_EAX[3] = W8489743A::WA62C1D19::vftable;
  in_EAX[2] = W8489743A::W8B7BA12B::vftable;
  in_EAX[1] = W8489743A::W5F13E966::vftable;
  *in_EAX = W8489743A::WE77C49A0::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004bfcec(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004bfc63();
  (**(code **)(*param_1 + 0x14c))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bfd19(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bfd25;
  uVar1 = basic_string<>(&DAT_00fbd200,7);
  local_8 = 0;
  local_18 = 0x5885b3c;
  local_14 = 0x375fcc48;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bfd85(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bfd91;
  uVar1 = basic_string<>(&DAT_00fbd1f0,6);
  local_8 = 0;
  local_18 = 0xdd16e968;
  local_14 = 0xb65bec2e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bfdf1(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bfdfd;
  uVar1 = basic_string<>(&DAT_00fbd1e0,6);
  local_8 = 0;
  local_18 = 0xc78dea3c;
  local_14 = 0xb5e6b2a7;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bfe5d(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bfe69;
  uVar1 = basic_string<>(&DAT_00fbd1cc,9);
  local_8 = 0;
  local_18 = 0xe647c3a2;
  local_14 = 0x8029548e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bfec9(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bfed5;
  uVar1 = basic_string<>(&DAT_00fbd1b8,9);
  local_8 = 0;
  local_18 = 0x3a509953;
  local_14 = 0xd7e1f555;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bff35(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bff41;
  uVar1 = basic_string<>(&DAT_00fbd1ac,5);
  local_8 = 0;
  local_18 = 0xb63981a4;
  local_14 = 0xf9aea3fb;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004bffa1(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4bffad;
  uVar1 = basic_string<>(&DAT_00fbd19c,6);
  local_8 = 0;
  local_18 = 0xd474491e;
  local_14 = 0x4ea51fa2;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c000d(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0019;
  uVar1 = basic_string<>(&DAT_00fbd190,4);
  local_8 = 0;
  local_18 = 0x3b33b65d;
  local_14 = 0x898e0f4d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0044(void)

{
  undefined4 uVar1;
  int unaff_EBP;
  
  uVar1 = FUN_00b94470();
  *(undefined *)(unaff_EBP + -4) = 1;
  FID_conflict_assign(uVar1);
  FUN_00401829();
  FUN_00401829();
  return;
}



void __fastcall FUN_004c004f(int param_1,code **param_2)

{
  undefined4 in_EAX;
  int unaff_EBX;
  
  *(int *)(unaff_EBX + -0x17affbb2) = *(int *)(unaff_EBX + -0x17affbb2) + param_1;
  out(0x82,in_EAX);
                    // WARNING: Could not recover jumptable at 0x004c0059. Too many branches
                    // WARNING: Treating indirect jump as call
  (**param_2)();
  return;
}



void __fastcall FUN_004c0058(undefined4 param_1,code **param_2)

{
                    // WARNING: Could not recover jumptable at 0x004c0059. Too many branches
                    // WARNING: Treating indirect jump as call
  (**param_2)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0079(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0085;
  uVar1 = basic_string<>(&DAT_00fbd180,7);
  local_8 = 0;
  local_18 = 0xb104d4bd;
  local_14 = 0xe6ebca16;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c00e5(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c00f1;
  uVar1 = basic_string<>(&DAT_00fbd178,3);
  local_8 = 0;
  local_18 = 0x3d45d230;
  local_14 = 0x34408475;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0151(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c015d;
  uVar1 = basic_string<>(&DAT_00fbd168,6);
  local_8 = 0;
  local_18 = 0xe2f13be9;
  local_14 = 0x6ea36ad3;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c01cf(int *param_1)

{
  undefined *local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::W5635B71C::vftable;
  local_18 = &W8489743A::W215514E2::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x174))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0201(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c020d;
  uVar1 = basic_string<>(&DAT_00fbd158,7);
  local_8 = 0;
  local_18 = 0xd7d251b3;
  local_14 = 0x5e9b1738;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004c027f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8489743A::WC0FE0528>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004c02c5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004c02dc(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W8489743A::WC0FE0528::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_004c027f(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_004c0343(void)

{
  undefined4 *puVar1;
  undefined4 local_28 [2];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c400b6;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00478a2d(DAT_0323f878 ^ (uint)local_28);
  puVar1 = (undefined4 *)FUN_004c02dc(local_20);
  local_c = 0;
  local_28[0] = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c03df(int *param_1)

{
  undefined *local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::W5635B71C::vftable;
  local_18 = &W8489743A::WF2848F58::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x17c))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0411(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c041d;
  uVar1 = basic_string<>(&DAT_00fbd148,7);
  local_8 = 0;
  local_18 = 0x7d950252;
  local_14 = 0x8b92d99e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004c048f(void)

{
  undefined4 *puVar1;
  undefined4 local_28 [2];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c400b6;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00478a2d(DAT_0323f878 ^ (uint)local_28);
  puVar1 = (undefined4 *)FUN_004c439c(local_20);
  local_c = 0;
  local_28[0] = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c052b(int *param_1)

{
  undefined *local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::W5635B71C::vftable;
  local_18 = &W8489743A::WAFD03692::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x184))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c055d(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0569;
  uVar1 = basic_string<>(&DAT_00fbd138,6);
  local_8 = 0;
  local_18 = 0x9599c19f;
  local_14 = 0x3a368aa8;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c05c9(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c05d5;
  uVar1 = basic_string<>(&DAT_00fbd124,8);
  local_8 = 0;
  local_18 = 0x64c47eab;
  local_14 = 0x43921431;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0635(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0641;
  uVar1 = basic_string<>(&DAT_00fbd114,7);
  local_8 = 0;
  local_18 = 0xd8e8b08;
  local_14 = 0x634c56d7;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c06a1(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c06ad;
  uVar1 = basic_string<>(&DAT_00fbd108,5);
  local_8 = 0;
  local_18 = 0xfc3cd2fe;
  local_14 = 0xe55b2b16;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004c070d(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x198))(param_1_00);
  return;
}



void FUN_004c071f(void)

{
  undefined4 *in_EAX;
  
  FUN_004c0c92();
  *in_EAX = W8489743A::W2BA8ED22::vftable;
  in_EAX[1] = W8489743A::W2BA8ED22::vftable;
  in_EAX[2] = W8489743A::W2BA8ED22::vftable;
  in_EAX[3] = W8489743A::W2BA8ED22::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c0746(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c071f();
  (**(code **)(*param_1 + 0x198))(uVar1);
  return;
}



void __thiscall FUN_004c0773(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x1a4))(param_1_00);
  return;
}



void FUN_004c0785(void)

{
  undefined4 *in_EAX;
  
  FUN_004c0c92();
  *in_EAX = W8489743A::WFFD4CF18::vftable;
  in_EAX[1] = W8489743A::WFFD4CF18::vftable;
  in_EAX[2] = W8489743A::WFFD4CF18::vftable;
  in_EAX[3] = W8489743A::WFFD4CF18::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c07ac(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c0785();
  (**(code **)(*param_1 + 0x1a4))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c07d9(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c07e5;
  uVar1 = basic_string<>(&DAT_00fbd0fc,4);
  local_8 = 0;
  local_18 = 0xddabc12f;
  local_14 = 0x48842962;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004c0845(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x1ac))(param_1_00);
  return;
}



void FUN_004c0857(void)

{
  undefined4 *in_EAX;
  
  FUN_004c0c92();
  *in_EAX = W8489743A::W552A9775::vftable;
  in_EAX[1] = W8489743A::W552A9775::vftable;
  in_EAX[2] = W8489743A::W552A9775::vftable;
  in_EAX[3] = W8489743A::W552A9775::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c087e(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c0857();
  (**(code **)(*param_1 + 0x1ac))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c08ab(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c08b7;
  uVar1 = basic_string<>(&DAT_00fbd0ec,6);
  local_8 = 0;
  local_18 = 0xca56dc3f;
  local_14 = 0xe57473df;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004c0917(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x1b4))(param_1_00);
  return;
}



void FUN_004c0929(void)

{
  undefined4 *in_EAX;
  
  FUN_004c0c92();
  *in_EAX = W8489743A::W709D8971::vftable;
  in_EAX[1] = W8489743A::W709D8971::vftable;
  in_EAX[2] = W8489743A::W709D8971::vftable;
  in_EAX[3] = W8489743A::W709D8971::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c0950(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c0929();
  (**(code **)(*param_1 + 0x1b4))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c097d(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0989;
  uVar1 = basic_string<>(&DAT_00fbd0dc,6);
  local_8 = 0;
  local_18 = 0x94963fac;
  local_14 = 0xd8ea2492;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c09e9(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c09f5;
  uVar1 = basic_string<>(&DAT_00fbd0cc,7);
  local_8 = 0;
  local_18 = 0xbb5b05db;
  local_14 = 0x89da0889;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0a55(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0a61;
  uVar1 = basic_string<>(&DAT_00fbd0c0,5);
  local_8 = 0;
  local_18 = 0x4ffd4001;
  local_14 = 0xd01852e0;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004c0ac1(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x1bc))(param_1_00);
  return;
}



void FUN_004c0ad3(void)

{
  undefined4 *in_EAX;
  
  FUN_004c0c92();
  *in_EAX = W8489743A::WC5243683::vftable;
  in_EAX[1] = W8489743A::WC5243683::vftable;
  in_EAX[2] = W8489743A::WC5243683::vftable;
  in_EAX[3] = W8489743A::WC5243683::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c0afa(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c0ad3();
  (**(code **)(*param_1 + 0x1bc))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c0b27(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c0bd2();
  (**(code **)(*param_1 + 0x1c4))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0b54(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0b60;
  uVar1 = basic_string<>(&DAT_00fbd0b0,6);
  local_8 = 0;
  local_18 = 0xae9d1b70;
  local_14 = 0xf50e380a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004c0bc0(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x1c4))(param_1_00);
  return;
}



void FUN_004c0bd2(void)

{
  undefined4 *in_EAX;
  
  FUN_004c0c92();
  *in_EAX = W8489743A::W0323DFAE::vftable;
  in_EAX[1] = W8489743A::W0323DFAE::vftable;
  in_EAX[2] = W8489743A::W0323DFAE::vftable;
  in_EAX[3] = W8489743A::W0323DFAE::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c0bf9(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c0bd2();
  (**(code **)(*param_1 + 0x1c4))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0c26(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0c32;
  uVar1 = basic_string<>(&DAT_00fbd0a4,5);
  local_8 = 0;
  local_18 = 0x5f5a39d8;
  local_14 = 0x379a5ef8;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004c0c92(void)

{
  undefined4 *unaff_ESI;
  
  FUN_004c21b5();
  unaff_ESI[4] = W8489743A::W367D7E3D::vftable;
  *unaff_ESI = W8489743A::WF5334C1C::vftable;
  unaff_ESI[1] = W8489743A::WF5334C1C::vftable;
  unaff_ESI[2] = W8489743A::WF5334C1C::vftable;
  unaff_ESI[3] = W8489743A::WF5334C1C::vftable;
  return;
}



void __thiscall FUN_004c0cbe(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x1c8))(param_1_00);
  return;
}



undefined4 FUN_004c0cd0(void)

{
  return 0x10;
}



undefined4 FUN_004c0cd4(void)

{
  return 10;
}



undefined4 FUN_004c0cd8(void)

{
  return 0x800a0000;
}



void FUN_004c0cde(void)

{
  undefined4 *in_EAX;
  
  FUN_004c0c92();
  *in_EAX = W8489743A::W582B0C7D::vftable;
  in_EAX[1] = W8489743A::W582B0C7D::vftable;
  in_EAX[2] = W8489743A::W582B0C7D::vftable;
  in_EAX[3] = W8489743A::W582B0C7D::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c0d05(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c0cde();
  (**(code **)(*param_1 + 0x1c8))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0d32(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0d3e;
  uVar1 = basic_string<>(&DAT_00fbd090,9);
  local_8 = 0;
  local_18 = 0x438976a5;
  local_14 = 0xa2b7475f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0d9e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0daa;
  uVar1 = basic_string<>(&DAT_00fbd080,7);
  local_8 = 0;
  local_18 = 0xe31b7841;
  local_14 = 0x7988ea03;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0e0a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0e16;
  uVar1 = basic_string<>(&DAT_00fbd070,7);
  local_8 = 0;
  local_18 = 0x669a9418;
  local_14 = 0xa1788abd;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0e76(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0e82;
  uVar1 = basic_string<>(&DAT_00fbd060,7);
  local_8 = 0;
  local_18 = 0xee50ea89;
  local_14 = 0x5a0906a8;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0ee2(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0eee;
  uVar1 = basic_string<>(&DAT_00fbd050,7);
  local_8 = 0;
  local_18 = 0xb199ac84;
  local_14 = 0x7814074a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0f4e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0f5a;
  uVar1 = basic_string<>(&DAT_00fbd044,5);
  local_8 = 0;
  local_18 = 0x951fab3e;
  local_14 = 0xd743c795;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c0fba(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c0fc6;
  uVar1 = basic_string<>(&DAT_00fbd038,5);
  local_8 = 0;
  local_18 = 0x68616484;
  local_14 = 0xdd174cf0;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1026(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1032;
  uVar1 = basic_string<>(&DAT_00fbd028,7);
  local_8 = 0;
  local_18 = 0x82b46045;
  local_14 = 0xc5e807c5;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004c1092(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x1fc))(param_1_00);
  return;
}



void FUN_004c10a4(void)

{
  undefined4 *in_EAX;
  
  FUN_004c1164();
  *in_EAX = W8489743A::W01835F27::vftable;
  in_EAX[1] = W8489743A::W01835F27::vftable;
  in_EAX[2] = W8489743A::W01835F27::vftable;
  in_EAX[3] = W8489743A::W01835F27::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c10cb(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c10a4();
  (**(code **)(*param_1 + 0x1fc))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c10f8(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1104;
  uVar1 = basic_string<>(&DAT_00fbd018,6);
  local_8 = 0;
  local_18 = 0x4f13502a;
  local_14 = 0x59460375;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004c1164(void)

{
  undefined4 *unaff_ESI;
  
  FUN_004c21b5();
  unaff_ESI[4] = W8489743A::W70E40101::vftable;
  *unaff_ESI = W8489743A::WB2D55BA5::vftable;
  unaff_ESI[1] = W8489743A::WB2D55BA5::vftable;
  unaff_ESI[2] = W8489743A::WB2D55BA5::vftable;
  unaff_ESI[3] = W8489743A::WB2D55BA5::vftable;
  return;
}



void __thiscall FUN_004c1190(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x204))(param_1_00);
  return;
}



undefined4 FUN_004c11a2(void)

{
  return 0xf;
}



undefined FUN_004c11a6(void)

{
  return 7;
}



void FUN_004c11a9(void)

{
  undefined4 *in_EAX;
  
  FUN_004c1164();
  *in_EAX = W8489743A::W13379232::vftable;
  in_EAX[1] = W8489743A::W13379232::vftable;
  in_EAX[2] = W8489743A::W13379232::vftable;
  in_EAX[3] = W8489743A::W13379232::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c11d0(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c11a9();
  (**(code **)(*param_1 + 0x204))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c11fd(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1209;
  uVar1 = basic_string<>(&DAT_00fbd004,8);
  local_8 = 0;
  local_18 = 0x1cb98239;
  local_14 = 0xc1ff33e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1269(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1275;
  uVar1 = basic_string<>(&DAT_00fbcff0,8);
  local_8 = 0;
  local_18 = 0x741ec125;
  local_14 = 0x83766865;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c12d5(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c12e1;
  uVar1 = basic_string<>(&DAT_00fbcfe4,5);
  local_8 = 0;
  local_18 = 0xfd3bbeaf;
  local_14 = 0xe0f3b6a7;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1341(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c134d;
  uVar1 = basic_string<>(&DAT_00fbcfd8,4);
  local_8 = 0;
  local_18 = 0x570666e9;
  local_14 = 0xabf804fa;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004c13ad(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x220))(param_1_00);
  return;
}



void FUN_004c13bf(void)

{
  undefined4 *in_EAX;
  
  FUN_004c172f();
  *in_EAX = W8489743A::W5112D078::vftable;
  in_EAX[1] = W8489743A::W5112D078::vftable;
  in_EAX[2] = W8489743A::W5112D078::vftable;
  in_EAX[3] = W8489743A::W5112D078::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c13e6(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c13bf();
  (**(code **)(*param_1 + 0x220))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1413(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c141f;
  uVar1 = basic_string<>(&DAT_00fbcfb8,9);
  local_8 = 0;
  local_18 = 0x83b52048;
  local_14 = 0x4ac7f6e2;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004c147f(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x22c))(param_1_00);
  return;
}



void FUN_004c1491(void)

{
  undefined4 *in_EAX;
  
  FUN_004c172f();
  *in_EAX = W8489743A::W7E26724D::vftable;
  in_EAX[1] = W8489743A::W7E26724D::vftable;
  in_EAX[2] = W8489743A::W7E26724D::vftable;
  in_EAX[3] = W8489743A::W7E26724D::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c14b8(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c1491();
  (**(code **)(*param_1 + 0x22c))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c14e5(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c1775();
  (**(code **)(*param_1 + 0x230))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1512(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c151e;
  uVar1 = basic_string<>(&DAT_00fbcfac,5);
  local_8 = 0;
  local_18 = 0x28551ffe;
  local_14 = 0x1d3c59c8;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c157e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c158a;
  uVar1 = basic_string<>(&DAT_00fbcfcc,5);
  local_8 = 0;
  local_18 = 0x76e09f9b;
  local_14 = 0x6a6433c2;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004c15ea(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x218))(param_1_00);
  return;
}



void FUN_004c15fc(void)

{
  undefined4 *in_EAX;
  
  FUN_004c172f();
  *in_EAX = W8489743A::WCF58F066::vftable;
  in_EAX[1] = W8489743A::WCF58F066::vftable;
  in_EAX[2] = W8489743A::WCF58F066::vftable;
  in_EAX[3] = W8489743A::WCF58F066::vftable;
  return;
}



void thunk_FUN_004c179c(void)

{
  undefined4 *in_EAX;
  
  in_EAX[4] = W8489743A::W551DDDE3::vftable;
  in_EAX[3] = W8489743A::WA62C1D19::vftable;
  in_EAX[2] = W8489743A::W574E0796::vftable;
  in_EAX[1] = W8489743A::WE23F487B::vftable;
  *in_EAX = W8489743A::WE77C49A0::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c1628(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c15fc();
  (**(code **)(*param_1 + 0x218))(uVar1);
  return;
}



void __thiscall FUN_004c1655(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x214))(param_1_00);
  return;
}



void FUN_004c1667(void)

{
  undefined4 *in_EAX;
  
  FUN_004c172f();
  *in_EAX = W8489743A::W5A74F714::vftable;
  in_EAX[1] = W8489743A::W5A74F714::vftable;
  in_EAX[2] = W8489743A::W5A74F714::vftable;
  in_EAX[3] = W8489743A::W5A74F714::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c168e(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c1667();
  (**(code **)(*param_1 + 0x214))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c16bb(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c16c7;
  uVar1 = basic_string<>(&DAT_00fbcfa0,4);
  local_8 = 0;
  local_18 = 0x82797c70;
  local_14 = 0x9260c7cf;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004c1727(void)

{
  FUN_004afce7();
  return;
}



void FUN_004c172f(void)

{
  undefined4 *unaff_ESI;
  
  FUN_004c21b5();
  unaff_ESI[4] = W8489743A::WC14148A2::vftable;
  *unaff_ESI = W8489743A::W1BABBE30::vftable;
  unaff_ESI[1] = W8489743A::W1BABBE30::vftable;
  unaff_ESI[2] = W8489743A::W1BABBE30::vftable;
  unaff_ESI[3] = W8489743A::W1BABBE30::vftable;
  return;
}



void __thiscall FUN_004c175b(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x230))(param_1_00);
  return;
}



undefined4 FUN_004c176d(void)

{
  return 0xe;
}



undefined4 FUN_004c1771(void)

{
  return 7;
}



void FUN_004c1775(void)

{
  undefined4 *in_EAX;
  
  FUN_004c172f();
  *in_EAX = W8489743A::W91FE7B8C::vftable;
  in_EAX[1] = W8489743A::W91FE7B8C::vftable;
  in_EAX[2] = W8489743A::W91FE7B8C::vftable;
  in_EAX[3] = W8489743A::W91FE7B8C::vftable;
  return;
}



void FUN_004c179c(void)

{
  undefined4 *in_EAX;
  
  in_EAX[4] = W8489743A::W551DDDE3::vftable;
  in_EAX[3] = W8489743A::WA62C1D19::vftable;
  in_EAX[2] = W8489743A::W574E0796::vftable;
  in_EAX[1] = W8489743A::WE23F487B::vftable;
  *in_EAX = W8489743A::WE77C49A0::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c17bf(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c17cb;
  uVar1 = basic_string<>(&DAT_00fbcf8c,9);
  local_8 = 0;
  local_18 = 0x85d9b7fc;
  local_14 = 0x4120adfb;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c182b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1837;
  uVar1 = basic_string<>(&DAT_00fbcf80,4);
  local_8 = 0;
  local_18 = 0xa6846b21;
  local_14 = 0xec32192d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1897(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c18a3;
  uVar1 = basic_string<>(&DAT_00fbcf70,6);
  local_8 = 0;
  local_18 = 0x73334936;
  local_14 = 0x4f14832e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1903(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c190f;
  uVar1 = basic_string<>(&DAT_00fbcf60,6);
  local_8 = 0;
  local_18 = 0x35787e;
  local_14 = 0xab520660;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c196f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c197b;
  uVar1 = basic_string<>(&DAT_00fbcf50,7);
  local_8 = 0;
  local_18 = 0xf8b7c3f7;
  local_14 = 0xc3d727c4;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c19db(void)

{
  undefined4 uVar1;
  undefined *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c19e7;
  uVar1 = basic_string<>(&DAT_00fbcf40,6);
  local_8 = 0;
  local_18 = &DAT_01050f25;
  local_14 = 0xf3483eef;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1a47(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1a53;
  uVar1 = basic_string<>(&DAT_00fbcf1c,8);
  local_8 = 0;
  local_18 = 0x4b14896f;
  local_14 = 0xdb69bc7f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1ab3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1abf;
  uVar1 = basic_string<>(&DAT_00fbcf08,8);
  local_8 = 0;
  local_18 = 0x363f6c39;
  local_14 = 0x4381a3d8;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1b1f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1b2b;
  uVar1 = basic_string<>(&DAT_00fbcef4,8);
  local_8 = 0;
  local_18 = 0x322d66a8;
  local_14 = 0xcb99be19;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1b8b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1b97;
  uVar1 = basic_string<>(&DAT_00fbcee4,6);
  local_8 = 0;
  local_18 = 0xdcd48d1;
  local_14 = 0xb53dfaf6;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004c1bf7(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x26c))(param_1_00);
  return;
}



void FUN_004c1c09(void)

{
  undefined4 *unaff_ESI;
  
  FUN_004c2212();
  *unaff_ESI = W8489743A::WF0B2D55D::vftable;
  unaff_ESI[1] = W8489743A::WF0B2D55D::vftable;
  unaff_ESI[2] = W8489743A::WF0B2D55D::vftable;
  unaff_ESI[3] = W8489743A::WF0B2D55D::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c1c2e(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c1c09();
  (**(code **)(*param_1 + 0x26c))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1c5b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1c67;
  uVar1 = basic_string<>(&DAT_00fbced4,6);
  local_8 = 0;
  local_18 = 0x6fbc454c;
  local_14 = 0x807a7e8a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1cc7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1cd3;
  uVar1 = basic_string<>(&DAT_00fbcec4,6);
  local_8 = 0;
  local_18 = 0xef8b734;
  local_14 = 0x84349e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1d33(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1d3f;
  uVar1 = basic_string<>(&DAT_00fbceb4,6);
  local_8 = 0;
  local_18 = 0xfb1f84d3;
  local_14 = 0x9e8a9109;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1d9f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1dab;
  uVar1 = basic_string<>(&DAT_00fbcea0,8);
  local_8 = 0;
  local_18 = 0xbb6af6b7;
  local_14 = 0xb4b0d44f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1e0b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1e17;
  uVar1 = basic_string<>(&DAT_00fbce90,6);
  local_8 = 0;
  local_18 = 0xf297921;
  local_14 = 0xe8c7405;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1e77(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1e83;
  uVar1 = basic_string<>(&DAT_00fbce74,0xd);
  local_8 = 0;
  local_18 = 0x34158ace;
  local_14 = 0x43924d15;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1ee3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1eef;
  uVar1 = basic_string<>(&DAT_00fbce54,0xf);
  local_8 = 0;
  local_18 = 0x703691ab;
  local_14 = 0x4b5568cf;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1f4f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1f5b;
  uVar1 = basic_string<>(&DAT_00fbce48,5);
  local_8 = 0;
  local_18 = 0xc5e5bdb8;
  local_14 = 0xb1bca6f9;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c1fbb(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c1fc7;
  uVar1 = basic_string<>(&DAT_00fbce3c,5);
  local_8 = 0;
  local_18 = 0xcea69ab8;
  local_14 = 0x1bab0160;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2027(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2033;
  uVar1 = basic_string<>(&DAT_00fbce30,4);
  local_8 = 0;
  local_18 = 0xe253097c;
  local_14 = 0x536db1dc;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2093(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c209f;
  uVar1 = basic_string<>(&DAT_00fbce20,7);
  local_8 = 0;
  local_18 = 0x7b890f5f;
  local_14 = 0xf606095b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c20ff(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c210b;
  uVar1 = basic_string<>(&DAT_00fbcf30,6);
  local_8 = 0;
  local_18 = 0xe0d7e10;
  local_14 = 0x1b614a91;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004c216b(void)

{
  FUN_004c217b();
  return;
}



void FUN_004c2173(void)

{
  FUN_004c217b();
  return;
}



undefined4 * __thiscall FUN_004c217b(undefined4 *param_1_00,byte param_1)

{
  param_1_00[3] = W8489743A::WA62C1D19::vftable;
  param_1_00[2] = W8489743A::W574E0796::vftable;
  param_1_00[1] = W8489743A::WE23F487B::vftable;
  *param_1_00 = W8489743A::WE77C49A0::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_004c21ad(void)

{
  FUN_004c217b();
  return;
}



void FUN_004c21b5(void)

{
  undefined4 *in_EAX;
  
  in_EAX[1] = W8489743A::WE23F487B::vftable;
  in_EAX[2] = W8489743A::W574E0796::vftable;
  in_EAX[3] = W8489743A::WA62C1D19::vftable;
  *in_EAX = W8489743A::W94D082DA::vftable;
  in_EAX[1] = W8489743A::W94D082DA::vftable;
  in_EAX[2] = W8489743A::W94D082DA::vftable;
  in_EAX[3] = W8489743A::W94D082DA::vftable;
  return;
}



void FUN_004c21e6(void)

{
  undefined4 *unaff_ESI;
  
  FUN_004c21b5();
  *unaff_ESI = W8489743A::W69D00CFF::vftable;
  unaff_ESI[1] = W8489743A::W69D00CFF::vftable;
  unaff_ESI[2] = W8489743A::W69D00CFF::vftable;
  unaff_ESI[3] = W8489743A::W69D00CFF::vftable;
  unaff_ESI[4] = W8489743A::W2F4B05AF::vftable;
  return;
}



void FUN_004c2212(void)

{
  undefined4 *in_EAX;
  
  FUN_004c21e6();
  *in_EAX = W8489743A::WC6B60125::vftable;
  in_EAX[1] = W8489743A::WC6B60125::vftable;
  in_EAX[2] = W8489743A::WC6B60125::vftable;
  in_EAX[3] = W8489743A::WC6B60125::vftable;
  return;
}



void __thiscall FUN_004c2239(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x254))(param_1_00);
  return;
}



undefined4 FUN_004c224b(void)

{
  return 0xc;
}



undefined4 FUN_004c224f(void)

{
  return 0x80020000;
}



void FUN_004c2255(void)

{
  undefined4 *unaff_ESI;
  
  FUN_004c2212();
  *unaff_ESI = W8489743A::WE171F383::vftable;
  unaff_ESI[1] = W8489743A::WE171F383::vftable;
  unaff_ESI[2] = W8489743A::WE171F383::vftable;
  unaff_ESI[3] = W8489743A::WE171F383::vftable;
  return;
}



undefined4 * __thiscall FUN_004c227a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8489743A::WA62C1D19::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c2297(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c2255();
  (**(code **)(*param_1 + 0x254))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c22c4(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c22d0;
  uVar1 = basic_string<>(&DAT_00fbce10,6);
  local_8 = 0;
  local_18 = 0xba848612;
  local_14 = 0xa38494f8;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2330(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c233c;
  uVar1 = basic_string<>(&DAT_00fbce04,5);
  local_8 = 0;
  local_18 = 0x85d24e63;
  local_14 = 0x76782d8c;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c239c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c23a8;
  uVar1 = basic_string<>(&DAT_00fbcdec,10);
  local_8 = 0;
  local_18 = 0x25edf5ae;
  local_14 = 0x45af917f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2408(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2414;
  uVar1 = basic_string<>(&DAT_00fbcde0,5);
  local_8 = 0;
  local_18 = 0x5cc423b2;
  local_14 = 0xabc3a4f2;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2474(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2480;
  uVar1 = basic_string<>(&DAT_00fbcdd4,5);
  local_8 = 0;
  local_18 = 0x6fe5dd98;
  local_14 = 0x70036988;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c24e0(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c24ec;
  uVar1 = basic_string<>(&DAT_00fbcdc0,8);
  local_8 = 0;
  local_18 = 0x2de5d00a;
  local_14 = 0xdc8feda0;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c254c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2558;
  uVar1 = basic_string<>(&DAT_00fbcdac,8);
  local_8 = 0;
  local_18 = 0xfba8856f;
  local_14 = 0xa1e57bc6;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c25b8(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c25c4;
  uVar1 = basic_string<>(&DAT_00fbcda4,3);
  local_8 = 0;
  local_18 = 0x42a9244d;
  local_14 = 0xefe3ecd7;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004c2624(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x2c0))(param_1_00);
  return;
}



void FUN_004c2636(void)

{
  undefined4 *in_EAX;
  
  FUN_004c285d();
  *in_EAX = W8489743A::W428586AB::vftable;
  in_EAX[1] = W8489743A::W428586AB::vftable;
  in_EAX[2] = W8489743A::W428586AB::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c2656(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c2636();
  (**(code **)(*param_1 + 0x2c0))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2683(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c268f;
  uVar1 = basic_string<>(&DAT_00fbcd94,7);
  local_8 = 0;
  local_18 = 0xf585bdcb;
  local_14 = 0x2c581b71;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c26ef(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c26fb;
  uVar1 = basic_string<>(&DAT_00fbcd88,5);
  local_8 = 0;
  local_18 = 0xa075ff37;
  local_14 = 0x3a9ce6a8;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c275b(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2767;
  uVar1 = basic_string<>(&DAT_00fbcd78,6);
  local_8 = 0;
  local_18 = 0xce6e439b;
  local_14 = 0x3ad357d3;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c27c7(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c27d3;
  uVar1 = basic_string<>(&DAT_00fbcd6c,5);
  local_8 = 0;
  local_18 = 0x71499d37;
  local_14 = 0x1333ace4;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004c2833(void)

{
  undefined4 *in_EAX;
  
  in_EAX[1] = W8489743A::WE23F487B::vftable;
  in_EAX[2] = W8489743A::W574E0796::vftable;
  *in_EAX = W8489743A::WB083C899::vftable;
  in_EAX[1] = W8489743A::WB083C899::vftable;
  in_EAX[2] = W8489743A::WB083C899::vftable;
  in_EAX[3] = W8489743A::WD5CEE893::vftable;
  return;
}



void FUN_004c285d(void)

{
  undefined4 *unaff_ESI;
  
  FUN_004c2833();
  *unaff_ESI = W8489743A::W540CB179::vftable;
  unaff_ESI[1] = W8489743A::W540CB179::vftable;
  unaff_ESI[2] = W8489743A::W540CB179::vftable;
  return;
}



void __thiscall FUN_004c287b(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x2d4))(param_1_00);
  return;
}



int __fastcall FUN_004c288d(int param_1)

{
  return param_1 + 0xc;
}



undefined4 FUN_004c2891(void)

{
  return 9;
}



void FUN_004c2895(void)

{
  undefined4 *in_EAX;
  
  FUN_004c285d();
  *in_EAX = W8489743A::W95B1453C::vftable;
  in_EAX[1] = W8489743A::W95B1453C::vftable;
  in_EAX[2] = W8489743A::W95B1453C::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c28b5(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c2895();
  (**(code **)(*param_1 + 0x2d4))(uVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c28e2(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c28ee;
  uVar1 = basic_string<>(&DAT_00fbcd54,10);
  local_8 = 0;
  local_18 = 0xbe3635b4;
  local_14 = 0xb2756988;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c294e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c295a;
  uVar1 = basic_string<>(&DAT_00fbcd48,5);
  local_8 = 0;
  local_18 = 0x37e35c65;
  local_14 = 0x1cf61791;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c29ba(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c29c6;
  uVar1 = basic_string<>(&DAT_00fbcd40,3);
  local_8 = 0;
  local_18 = 0x8bf68129;
  local_14 = 0x44ed7604;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2a26(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2a32;
  uVar1 = basic_string<>(&DAT_00fbcd24,0xd);
  local_8 = 0;
  local_18 = 0x5f79261d;
  local_14 = 0x7041207d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2a92(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2a9e;
  uVar1 = basic_string<>(&DAT_00fbcd14,6);
  local_8 = 0;
  local_18 = 0xa1664066;
  local_14 = 0x494d2719;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2afe(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2b0a;
  uVar1 = basic_string<>(&DAT_00fbccf4,0xe);
  local_8 = 0;
  local_18 = 0xd74d9eff;
  local_14 = 0x8eb9e2dd;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2b6a(void)

{
  undefined4 uVar1;
  undefined *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2b76;
  uVar1 = basic_string<>(&DAT_00fbcce4,7);
  local_8 = 0;
  local_18 = &DAT_00e13b66;
  local_14 = 0xae2f90ed;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2bd6(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2be2;
  uVar1 = basic_string<>(&DAT_00fbccd4,6);
  local_8 = 0;
  local_18 = 0x27770c31;
  local_14 = 0xc200aaee;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2c42(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2c4e;
  uVar1 = basic_string<>(&DAT_00fbccc0,8);
  local_8 = 0;
  local_18 = 0xd2565620;
  local_14 = 0xf4caac1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2cae(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2cba;
  uVar1 = basic_string<>(&DAT_00fbccb8,3);
  local_8 = 0;
  local_18 = 0x7c947587;
  local_14 = 0x9e242595;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2d1a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2d26;
  uVar1 = basic_string<>(&DAT_00fbcca4,9);
  local_8 = 0;
  local_18 = 0x5b673eb4;
  local_14 = 0x8ebdab62;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2d86(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2d92;
  uVar1 = basic_string<>(&DAT_00fbcc94,6);
  local_8 = 0;
  local_18 = 0xb8aee4e;
  local_14 = 0xfa4273f4;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2df2(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2dfe;
  uVar1 = basic_string<>(&DAT_00fbcc84,6);
  local_8 = 0;
  local_18 = 0x251bfdb7;
  local_14 = 0x55487d60;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2e5e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2e6a;
  uVar1 = basic_string<>(&DAT_00fbcc70,9);
  local_8 = 0;
  local_18 = 0x7193c8c9;
  local_14 = 0x97af1158;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2eca(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2ed6;
  uVar1 = basic_string<>(&DAT_00fbcc64,5);
  local_8 = 0;
  local_18 = 0x3f5b1a16;
  local_14 = 0x28d35f7e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2f36(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2f42;
  uVar1 = basic_string<>(&DAT_00fbcc58,5);
  local_8 = 0;
  local_18 = 0x5ab2c433;
  local_14 = 0x220ae785;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c2fa2(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c2fae;
  uVar1 = basic_string<>(&DAT_00fbcc48,7);
  local_8 = 0;
  local_18 = 0x9120a005;
  local_14 = 0xd9486737;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c300e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c301a;
  uVar1 = basic_string<>(&DAT_00fbcc30,10);
  local_8 = 0;
  local_18 = 0x729ffab4;
  local_14 = 0xd8630ca2;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c307a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3086;
  uVar1 = basic_string<>(&DAT_00fbcc28,3);
  local_8 = 0;
  local_18 = 0xa7488e31;
  local_14 = 0x166c0d2e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c30e6(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c30f2;
  uVar1 = basic_string<>(&DAT_00fbcc18,7);
  local_8 = 0;
  local_18 = 0x50d5dac0;
  local_14 = 0x1a167419;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3152(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c315e;
  uVar1 = basic_string<>(&DAT_00fbcc04,8);
  local_8 = 0;
  local_18 = 0x4d249160;
  local_14 = 0xdc1ee7d3;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c31be(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c31ca;
  uVar1 = basic_string<>(&DAT_00fbcbf8,5);
  local_8 = 0;
  local_18 = 0x913b8be1;
  local_14 = 0x835c8137;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c322a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3236;
  uVar1 = basic_string<>(&DAT_00fbcbe8,6);
  local_8 = 0;
  local_18 = 0x753973e9;
  local_14 = 0x950f837;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3296(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c32a2;
  uVar1 = basic_string<>(&DAT_00fbcbd8,6);
  local_8 = 0;
  local_18 = 0xcdb9bd87;
  local_14 = 0x1652d4e0;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3302(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c330e;
  uVar1 = basic_string<>(&DAT_00fbcbcc,5);
  local_8 = 0;
  local_18 = 0xbafd3051;
  local_14 = 0xb36b1c29;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c336e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c337a;
  uVar1 = basic_string<>(&DAT_00fbcbb8,8);
  local_8 = 0;
  local_18 = 0x8fe7e4d3;
  local_14 = 0x8562a53d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c33da(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c33e6;
  uVar1 = basic_string<>(&DAT_00fbcbac,5);
  local_8 = 0;
  local_18 = 0xc7caff18;
  local_14 = 0x54fd17f7;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3446(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3452;
  uVar1 = basic_string<>(&DAT_00fbcb98,8);
  local_8 = 0;
  local_18 = 0xa13dfcfa;
  local_14 = 0x7fe296d4;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c34b2(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c34be;
  uVar1 = basic_string<>(&DAT_00fbcb88,6);
  local_8 = 0;
  local_18 = 0x9138caf0;
  local_14 = 0x9a3bafbb;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c351e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c352a;
  uVar1 = basic_string<>(&DAT_00fbcb70,10);
  local_8 = 0;
  local_18 = 0x1112758b;
  local_14 = 0x3852d546;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c358a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3596;
  uVar1 = basic_string<>(&DAT_00fbcb64,4);
  local_8 = 0;
  local_18 = 0x12ec800e;
  local_14 = 0x76338c81;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c35f6(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3602;
  uVar1 = basic_string<>(&DAT_00fbcb54,6);
  local_8 = 0;
  local_18 = 0x68642a55;
  local_14 = 0x4e27be45;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3662(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c366e;
  uVar1 = basic_string<>(&DAT_00fbcb30,9);
  local_8 = 0;
  local_18 = 0x90de32ed;
  local_14 = 0x4c6b8a2c;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c36ce(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c36da;
  uVar1 = basic_string<>(&DAT_00fbcb18,0xb);
  local_8 = 0;
  local_18 = 0x29c78d0d;
  local_14 = 0x6e16d22;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004c374c(void)

{
  undefined4 *puVar1;
  undefined4 local_28 [2];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c400b6;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00478a2d(DAT_0323f878 ^ (uint)local_28);
  puVar1 = (undefined4 *)FUN_004c461c(local_20,0x70800);
  local_c = 0;
  local_28[0] = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c37f4(int *param_1)

{
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::W5AD914B5::vftable;
  local_18 = &W8489743A::W88FA694F::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x36c))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3826(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3832;
  uVar1 = basic_string<>(&DAT_00fbcb08,6);
  local_8 = 0;
  local_18 = 0x84ebc2c8;
  local_14 = &DAT_01a5408d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c38aa(int *param_1)

{
  undefined **local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::W5AD914B5::vftable;
  local_1c = &W8489743A::W3597987A::vftable;
  local_18 = &W8489743A::W3597987A::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x360))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c38e3(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c38ef;
  uVar1 = basic_string<>(&DAT_00fbcaf8,6);
  local_8 = 0;
  local_18 = 0x65d02c32;
  local_14 = 0xfe71452e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c394f(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c395b;
  uVar1 = basic_string<>(&DAT_00fbcb44,7);
  local_8 = 0;
  local_18 = 0xa562da5;
  local_14 = 0xb2da67e7;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004c39cd(void)

{
  undefined4 *puVar1;
  undefined4 local_30 [2];
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c47969;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00478a2d(DAT_0323f878 ^ (uint)local_30);
  puVar1 = (undefined4 *)FUN_004c42d1(local_28);
  local_c = 0;
  local_30[0] = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c3acb(int *param_1)

{
  undefined **local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = &W8489743A::W5AD914B5::vftable;
  local_1c = &W8489743A::W97812014::vftable;
  local_18 = &W8489743A::W97812014::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x354))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3b04(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3b10;
  uVar1 = basic_string<>(&DAT_00fbcae8,6);
  local_8 = 0;
  local_18 = 0xe70c52d4;
  local_14 = &DAT_024931b2;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3b70(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3b7c;
  uVar1 = basic_string<>(&DAT_00fbcadc,5);
  local_8 = 0;
  local_18 = 0xfdc08d58;
  local_14 = 0x137d99ab;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3bdc(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3be8;
  uVar1 = basic_string<>(&DAT_00fbcacc,6);
  local_8 = 0;
  local_18 = 0xbe116107;
  local_14 = &DAT_023f2ce5;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void __thiscall FUN_004c3c48(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x5c))(param_1_00);
  return;
}



void FUN_004c3c69(void)

{
  undefined4 *puVar1;
  undefined4 local_28 [2];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c400b6;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00478a2d(DAT_0323f878 ^ (uint)local_28);
  puVar1 = (undefined4 *)FUN_004c461c(local_20,0xe1000);
  local_c = 0;
  local_28[0] = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c3d0b(int *param_1)

{
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = &W8489743A::W5AD914B5::vftable;
  local_18 = &W8489743A::WAA919032::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x390))(&local_18);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3d3d(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3d49;
  uVar1 = basic_string<>(&DAT_00fbcabc,6);
  local_8 = 0;
  local_18 = 0x3096ac43;
  local_14 = 0xe7f45065;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3da9(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3db5;
  uVar1 = basic_string<>(&DAT_00fbcaa8,9);
  local_8 = 0;
  local_18 = 0xa83b8ec;
  local_14 = 0xc60b2f98;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3e15(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3e21;
  uVar1 = basic_string<>(&DAT_00fbca98,6);
  local_8 = 0;
  local_18 = 0xc770943e;
  local_14 = 0xb2ebb084;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3e81(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3e8d;
  uVar1 = basic_string<>(&DAT_00fbca8c,4);
  local_8 = 0;
  local_18 = 0x608bb526;
  local_14 = 0x39393c1e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3eed(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3ef9;
  uVar1 = basic_string<>(&DAT_00fbca7c,6);
  local_8 = 0;
  local_18 = 0x7a308c6b;
  local_14 = 0xa46801fb;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3f59(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3f65;
  uVar1 = basic_string<>(&DAT_00fbca70,5);
  local_8 = 0;
  local_18 = 0xa5ff8563;
  local_14 = 0xe3c9d79b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c3fc5(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c3fd1;
  uVar1 = basic_string<>(&DAT_00fbca60,6);
  local_8 = 0;
  local_18 = 0x3669a892;
  local_14 = 0x5341d049;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c4031(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c403d;
  uVar1 = basic_string<>(&DAT_00fbca54,5);
  local_8 = 0;
  local_18 = 0xa54436e2;
  local_14 = 0x860ec992;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c409d(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c40a9;
  uVar1 = basic_string<>(&DAT_00fbca3c,10);
  local_8 = 0;
  local_18 = 0x499ca9c;
  local_14 = 0x66f56ec2;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c411b(int *param_1)

{
  undefined *local_20;
  undefined **local_1c;
  undefined **local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x4c4127;
  FUN_004c4238();
  local_20 = &W8489743A::W23B417FA::vftable;
  local_1c = &W8489743A::W23B417FA::vftable;
  local_18 = &W8489743A::W23B417FA::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x3ac))(&local_20);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c4160(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c416c;
  uVar1 = basic_string<>(&DAT_00fbca30,5);
  local_8 = 0;
  local_18 = 0xca368785;
  local_14 = 0xa819a515;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c41cc(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c41d8;
  uVar1 = basic_string<>(&DAT_00fbca1c,9);
  local_8 = 0;
  local_18 = 0x9da76b6c;
  local_14 = 0xb1761756;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004c4238(void)

{
  undefined4 *in_EAX;
  
  in_EAX[1] = W8489743A::WE23F487B::vftable;
  in_EAX[2] = W8489743A::W574E0796::vftable;
  *in_EAX = W8489743A::WB660AB6A::vftable;
  in_EAX[1] = W8489743A::WB660AB6A::vftable;
  in_EAX[2] = W8489743A::WB660AB6A::vftable;
  in_EAX[3] = W8489743A::WAA388164::vftable;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004c4274(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8489743A::W1734F1C7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004c42ba(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004c42d1(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[1] = 0xe1000;
    *puVar2 = W8489743A::W1734F1C7::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_004c4274(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004c433f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8489743A::WBCC1989A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004c4385(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004c439c(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W8489743A::WBCC1989A::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_004c433f(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 FUN_004c4403(void)

{
  return 2;
}



undefined4 * __thiscall FUN_004c4407(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8489743A::W574E0796::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c4424(int *param_1)

{
  undefined *local_20;
  undefined **local_1c;
  undefined **local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x4c4430;
  FUN_004c4238();
  local_20 = &W8489743A::W5451BA37::vftable;
  local_1c = &W8489743A::W5451BA37::vftable;
  local_18 = &W8489743A::W5451BA37::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x3b8))(&local_20);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c4469(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c4475;
  uVar1 = basic_string<>(&DAT_00fbca10,5);
  local_8 = 0;
  local_18 = 0x451e4d3f;
  local_14 = 0xd7f654b7;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c44d5(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c44e1;
  uVar1 = basic_string<>(&DAT_00fbca00,6);
  local_8 = 0;
  local_18 = 0x3e1a7f95;
  local_14 = 0xf1b7c899;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c4541(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c454d;
  uVar1 = basic_string<>(&DAT_00fbc9f0,7);
  local_8 = 0;
  local_18 = 0x2cafa092;
  local_14 = 0xda5ac00f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004c45bf(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8489743A::WB2F42040>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004c4605(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004c461c(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0xc);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[1] = param_2;
    *puVar2 = W8489743A::WB2F42040::vftable;
    puVar2[2] = 1;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_004c45bf(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void Catch_All_004c46d6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_004c46ed(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8489743A::WF74451E0::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_004c4771(void)

{
  undefined4 *puVar1;
  undefined4 local_30 [2];
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c47969;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00478a2d(DAT_0323f878 ^ (uint)local_30);
  puVar1 = (undefined4 *)FUN_004c461c(local_28,0xe1000);
  local_c = 0;
  local_30[0] = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 FUN_004c487d(void)

{
  return 3;
}



undefined4 * __thiscall FUN_004c4881(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8489743A::WE77C49A0::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_004c489e(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8489743A::WE23F487B::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c48bb(int *param_1)

{
  undefined **local_1c;
  undefined **local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_18 = &W8489743A::W386F1E44::vftable;
  local_1c = &W8489743A::W7D144FEA::vftable;
  local_14 = &W8489743A::W7D144FEA::vftable;
  local_8 = 0;
  (**(code **)(*param_1 + 0x3c8))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c48f4(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c4900;
  uVar1 = basic_string<>(&DAT_00fbc9dc,9);
  local_8 = 0;
  local_18 = 0xbb562548;
  local_14 = 0xe004ff44;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c4960(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c496c;
  uVar1 = basic_string<>(&DAT_00fbc9cc,7);
  local_8 = 0;
  local_18 = 0x606fed1f;
  local_14 = 0x75e1c25f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c49cc(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c49d8;
  uVar1 = basic_string<>(&DAT_00fbc9c0,4);
  local_8 = 0;
  local_18 = 0x1a9730;
  local_14 = 0xe5391859;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c4a38(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c4a44;
  uVar1 = basic_string<>(&DAT_00fbc9b0,6);
  local_8 = 0;
  local_18 = 0xbe15380d;
  local_14 = 0xc71a0a31;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c4aa4(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c4ab0;
  uVar1 = basic_string<>(&DAT_00fbc9a0,6);
  local_8 = 0;
  local_18 = 0x73b659dc;
  local_14 = 0xffc07616;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c4b10(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c4b1c;
  uVar1 = basic_string<>(&DAT_00fbc990,7);
  local_8 = 0;
  local_18 = 0x8fa5d65c;
  local_14 = 0x2d80629d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c4b7c(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c4b88;
  uVar1 = basic_string<>(&DAT_00fbc980,7);
  local_8 = 0;
  local_18 = 0x71a9d7fe;
  local_14 = 0xe6c64d6f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c4be8(undefined4 param_1)

{
  FUN_004c4b7c(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c4c19(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c4c25;
  uVar1 = basic_string<>(&DAT_00fbd4b4,5);
  local_8 = 0;
  local_18 = 0x63b472da;
  local_14 = 0xae39ee81;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c4c85(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c4c91;
  uVar1 = basic_string<>(&DAT_00fbd4a0,8);
  local_8 = 0;
  local_18 = 0xc8fee936;
  local_14 = 0x116916a1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004c4cf1(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W8489743A::W0BFE7686::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c4cf8(void)

{
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_ESI;
  int *unaff_EDI;
  undefined **local_1c;
  
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_ESI);
  local_1c = W8489743A::WE2BA492B::vftable;
  (**(code **)(*unaff_EDI + 4))(&local_1c);
  return;
}



void FUN_004c4dc8(void)

{
  int iVar1;
  int local_30;
  uint uStack_24;
  uint uStack_20;
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3024b;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_004382a5();
  local_c = 0;
  FUN_0049dc80();
  if (uStack_20 < uStack_24) {
    FUN_00a3fb10();
    FUN_00a3fb10();
  }
  if (local_30 == 0) {
    FUN_00a3fb10();
  }
  FUN_004c4f8d(uStack_24,uStack_20);
  iVar1 = (int)(uStack_20 - uStack_24) >> 3;
  if (iVar1 != 0) {
    if (iVar1 == 0) {
      FUN_00a3fb10();
    }
                    // WARNING: Subroutine does not return
    FUN_0043c023(uStack_24 + 4);
  }
  local_c = 0xffffffff;
  FUN_007b3ae8();
  ExceptionList = pvStack_18;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __fastcall
FUN_004c4f1f(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1)

{
  uint uVar1;
  ushort *puVar2;
  undefined2 *puVar3;
  int iVar4;
  uint uVar5;
  int unaff_EDI;
  
  uVar1 = *(uint *)(unaff_EDI + 0x14);
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  FUN_004220f0(uVar1);
  uVar5 = 0;
  if (uVar1 != 0) {
    do {
      puVar2 = (ushort *)FUN_004127c3(uVar5);
      puVar3 = (undefined2 *)FUN_004220c0(uVar5);
      iVar4 = _tolower((uint)*puVar2);
      uVar5 = uVar5 + 1;
      *puVar3 = (short)iVar4;
    } while (uVar5 < uVar1);
  }
  return param_1;
}



void FUN_004c4f8d(int param_1,int param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  int local_c;
  int local_8;
  
  iVar1 = param_2 - param_1 >> 3;
  if (0x20 < iVar1) {
    do {
      if (param_3 < 1) break;
      FUN_004c507f(&local_c,param_1,param_2,param_4);
      param_3 = param_3 / 2 + (param_3 / 2) / 2;
      if ((int)(local_c - param_1 & 0xfffffff8U) < (int)(param_2 - local_8 & 0xfffffff8U)) {
        FUN_004c4f8d(param_1,local_c,param_3,param_4);
        param_1 = local_8;
      }
      else {
        FUN_004c4f8d(local_8,param_2,param_3,param_4);
        param_2 = local_c;
      }
      iVar1 = param_2 - param_1 >> 3;
    } while (0x20 < iVar1);
    if (0x20 < iVar1) {
      param_2 = param_2 - param_1;
      iVar1 = param_2 >> 3;
      if (iVar1 < 2) {
        return;
      }
      FUN_004c526a(param_4);
      if (iVar1 < 2) {
        return;
      }
      if (iVar1 < 2) goto LAB_004c5052;
      do {
        FUN_004c5499(param_1,param_4);
LAB_004c5052:
        param_2 = param_2 + -8;
      } while (1 < param_2 >> 3);
      return;
    }
  }
  if ((1 < iVar1) && (param_1 != param_2)) {
    FUN_004c52b5(param_1,param_2,param_4);
  }
  return;
}



void FUN_004c507f(uint *param_1,uint param_2,uint param_3,code *param_4)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint local_c;
  uint local_8;
  
  uVar2 = param_2 + (((int)(param_3 - param_2) >> 3) - ((int)(param_3 - param_2) >> 0x1f) >> 1) * 8;
  FUN_004c51dc(uVar2,param_3 - 8,param_4);
  uVar4 = uVar2 + 8;
  while (uVar3 = uVar2, param_2 < uVar3) {
    uVar2 = uVar3 - 8;
    cVar1 = (*param_4)(uVar2,uVar3);
    if ((cVar1 != '\0') || (cVar1 = (*param_4)(uVar3,uVar2), cVar1 != '\0')) break;
  }
  while ((local_c = uVar3, local_8 = uVar4, uVar4 < param_3 &&
         ((cVar1 = (*param_4)(uVar4,uVar3), cVar1 == '\0' &&
          (cVar1 = (*param_4)(uVar3,uVar4), cVar1 == '\0'))))) {
    uVar4 = uVar4 + 8;
  }
  do {
    while (uVar2 = local_c, param_3 <= local_8) {
joined_r0x004c5136:
      for (; param_2 < local_c; local_c = local_c - 8) {
        uVar2 = uVar2 - 8;
        cVar1 = (*param_4)(uVar2,uVar3);
        if (cVar1 == '\0') {
          cVar1 = (*param_4)(uVar3,uVar2);
          if (cVar1 != '\0') break;
          uVar3 = uVar3 - 8;
          FUN_0046f668();
        }
      }
      if (local_c == param_2) {
        if (local_8 == param_3) {
          param_1[1] = uVar4;
          *param_1 = uVar3;
          return;
        }
        if (uVar4 != local_8) {
          FUN_0046f668();
        }
        uVar4 = uVar4 + 8;
        uVar3 = uVar3 + 8;
        local_8 = local_8 + 8;
      }
      else {
        local_c = local_c - 8;
        if (local_8 != param_3) goto LAB_004c5122;
        uVar3 = uVar3 - 8;
        if (local_c != uVar3) {
          FUN_0046f668();
        }
        uVar4 = uVar4 - 8;
      }
      FUN_0046f668();
    }
    cVar1 = (*param_4)(uVar3,local_8);
    if (cVar1 == '\0') {
      cVar1 = (*param_4)(local_8,uVar3);
      if (cVar1 != '\0') goto joined_r0x004c5136;
      uVar4 = uVar4 + 8;
LAB_004c5122:
      FUN_0046f668();
    }
    local_8 = local_8 + 8;
  } while( true );
}



void FUN_004c51dc(int param_1,int param_2,undefined4 param_3)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = param_2 - in_EAX >> 3;
  if (iVar1 < 0x29) {
    FUN_004c5374(param_2,param_3);
  }
  else {
    iVar1 = iVar1 + 1;
    iVar1 = (int)(iVar1 + (iVar1 >> 0x1f & 7U)) >> 3;
    FUN_004c5374(iVar1 * 0x10 + in_EAX,param_3);
    FUN_004c5374(iVar1 * 8 + param_1,param_3);
    FUN_004c5374(param_2,param_3);
    FUN_004c5374(param_2 + iVar1 * -8,param_3);
  }
  return;
}



void __fastcall FUN_004c526a(int param_1)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = (in_EAX - param_1 >> 3) - (in_EAX - param_1 >> 0x1f) >> 1;
  if (iVar1 < 1) {
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 4 + (iVar1 + -1) * 8);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_004c52b5(int param_1,int param_2)

{
  if (param_1 + 8 != param_2) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 0xc);
  }
  return &LAB_00c291bf;
}



void FUN_004c5374(undefined4 param_1,code *param_2)

{
  char cVar1;
  
  cVar1 = (*param_2)();
  if (cVar1 != '\0') {
    FUN_0046f668();
  }
  cVar1 = (*param_2)(param_1);
  if (cVar1 != '\0') {
    FUN_0046f668();
  }
  cVar1 = (*param_2)();
  if (cVar1 != '\0') {
    FUN_0046f668();
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_004c5499(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + -4);
}



void Catch_All_004c5556(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004c5624(undefined4 *param_1)

{
  *param_1 = WB3204DCB::WCF0D4C02::vftable;
  FUN_004636a8();
  *param_1 = W09E346CD::W31116714::vftable;
  return;
}



undefined4 __thiscall FUN_004c5653(undefined4 param_1_00,byte param_1)

{
  FUN_004c5624();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_004c566f(int param_1)

{
  **(undefined **)(param_1 + 4) = 0;
  return;
}



void __fastcall FUN_004c5678(int param_1)

{
  **(undefined **)(param_1 + 4) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004c570b(undefined4 param_1)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004c5756(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x4c5762;
  local_14 = 0;
  local_18 = &local_38;
  local_38 = 0x1e62;
  local_34 = 0x6e;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_18 = &local_38;
  local_8 = 1;
  local_38 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_004c57cc(undefined4 param_1,int param_2)

{
  int *piVar1;
  undefined local_24 [4];
  int local_20;
  int local_1c;
  int local_18;
  undefined local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0;
  local_11 = 0;
  FUN_004c7589(&local_1c,&param_1);
  local_8._0_1_ = 1;
  if (local_1c != 0) {
    piVar1 = (int *)FUN_004c763f(local_24,&local_1c);
    local_11 = *piVar1 == 0;
    if (local_20 != 0) {
      FUN_0040127a();
    }
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    FUN_0040127a();
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *
FUN_004c5843(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1,undefined4 param_2,int param_3)

{
  undefined4 ***local_60;
  undefined4 **local_5c;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_2c;
  undefined4 ***local_28;
  undefined4 **local_24;
  int local_20;
  undefined4 ***local_1c;
  int local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_14 = 0;
  local_2c = param_1;
  local_8 = 1;
  local_5c = (undefined4 **)0x4c5866;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  local_5c = (undefined4 **)&param_2;
  local_60 = &local_1c;
  local_14 = 1;
  FUN_004c7589();
  local_8._0_1_ = 2;
  if (local_1c != (undefined4 ***)0x0) {
    local_5c = &local_24;
    local_60 = local_1c;
    FUN_004f5f9d();
    local_8 = CONCAT31(local_8._1_3_,3);
    if (local_24 != (undefined4 **)0x0) {
      local_5c = local_24;
      local_28 = &local_60;
      local_60 = (undefined4 ***)local_24;
                    // WARNING: Subroutine does not return
      FUN_0043c023(&local_20);
    }
    local_8._0_1_ = 2;
    if (local_20 != 0) {
      local_5c = (undefined4 **)0x4c58e5;
      FUN_0040127a();
    }
  }
  local_8._0_1_ = 1;
  if (local_18 != 0) {
    local_5c = (undefined4 **)0x4c58f4;
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (param_3 != 0) {
    local_5c = (undefined4 **)0x4c5904;
    FUN_0040127a();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004c590e(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  *param_1,undefined4 param_2,int param_3)

{
  undefined4 ***local_180;
  undefined4 **local_17c;
  undefined4 uStack_16c;
  undefined4 ***local_a4;
  int local_a0;
  undefined4 local_9c;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_94;
  undefined4 ***local_90;
  undefined4 **local_8c;
  int local_88;
  void *local_84;
  undefined4 local_7c;
  undefined4 local_78 [28];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_78;
  local_78[0] = 0xe4;
  local_94 = param_1;
  local_9c = 0;
  local_7c = 1;
  local_17c = (undefined4 **)0x4c5945;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  local_17c = (undefined4 **)&param_2;
  local_180 = &local_a4;
  local_9c = 1;
  FUN_004c7589();
  local_7c._0_1_ = 2;
  if (local_a4 != (undefined4 ***)0x0) {
    local_17c = &local_8c;
    local_180 = local_a4;
    FUN_004f5f9d();
    local_7c = CONCAT31(local_7c._1_3_,3);
    if (local_8c != (undefined4 **)0x0) {
      local_17c = local_8c;
      local_90 = &local_180;
      local_180 = (undefined4 ***)local_8c;
                    // WARNING: Subroutine does not return
      FUN_0043c023(&local_88);
    }
    local_7c._0_1_ = 2;
    if (local_88 != 0) {
      local_17c = (undefined4 **)0x4c5b9d;
      FUN_0040127a();
    }
  }
  local_7c._0_1_ = 1;
  if (local_a0 != 0) {
    local_17c = (undefined4 **)0x4c5bad;
    FUN_0040127a();
  }
  local_7c = (uint)local_7c._1_3_ << 8;
  if (param_3 != 0) {
    local_17c = (undefined4 **)0x4c5bbf;
    FUN_0040127a();
  }
  ExceptionList = local_84;
  uStack_16c = 0x4c5bda;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_004c6898(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined *local_5bc;
  undefined *puStack_5b8;
  undefined *puStack_5b4;
  undefined *puStack_5b0;
  undefined *puStack_5ac;
  undefined4 local_5a8;
  undefined4 local_5a4;
  undefined4 local_5a0;
  undefined4 local_59c;
  undefined4 local_598;
  undefined4 local_594;
  undefined4 local_590;
  undefined4 local_58c;
  undefined4 local_588;
  undefined4 local_584;
  undefined4 local_580;
  undefined4 local_57c;
  undefined4 local_578;
  undefined *local_574;
  undefined4 local_570;
  undefined *local_56c;
  undefined local_14c [24];
  undefined4 local_134;
  undefined local_130 [28];
  undefined local_114 [24];
  undefined4 local_fc;
  undefined local_f8 [24];
  undefined4 local_e0;
  undefined4 *local_dc;
  undefined local_d0 [8];
  undefined4 *local_c8;
  undefined4 local_74;
  undefined4 local_70 [6];
  undefined4 local_58;
  undefined4 local_54;
  undefined4 *local_50;
  undefined4 *local_4c;
  undefined4 *local_44;
  undefined4 *local_40;
  undefined4 *local_3c;
  undefined4 *local_38;
  undefined **local_34;
  undefined4 local_28;
  undefined local_24 [24];
  undefined4 local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_70;
  local_70[0] = 0x4dc;
  local_74 = 0x4c68b9;
  local_28 = param_1;
  local_58 = 0;
  local_56c = (undefined *)0x0;
  local_54 = param_2;
  local_c = 7;
  local_570 = 0x4c68db;
  FUN_0040180b();
  local_74 = 1;
  if (*(uint *)(param_1_00 + 0x14) < 0x11) {
    local_56c = (undefined *)0xffffffff;
    local_570 = 0;
    local_578 = 0x4c68f6;
    local_574 = (undefined *)param_1_00;
    FID_conflict_assign();
  }
  else {
    local_56c = &DAT_00f1ec5c;
    local_570 = 0x4c6908;
    local_34 = (undefined **)basic_string<>();
    local_56c = (undefined *)0x10;
    local_570 = 0;
    local_574 = local_114;
    local_74._0_1_ = 2;
    local_578 = 0x4c6920;
    local_570 = FUN_0041b008();
    local_74._0_1_ = 3;
    local_56c = (undefined *)local_34;
    local_574 = local_130;
    local_578 = 0x4c6934;
    local_574 = (undefined *)FUN_0041c102();
    local_56c = (undefined *)0xffffffff;
    local_570 = 0;
    local_74._0_1_ = 4;
    local_578 = 0x4c6947;
    FID_conflict_assign();
    local_56c = (undefined *)0x0;
    local_570 = 1;
    local_574 = (undefined *)0x4c6955;
    FUN_00401829();
    local_56c = (undefined *)0x0;
    local_570 = 1;
    local_574 = (undefined *)0x4c6963;
    FUN_00401829();
    local_56c = (undefined *)0x0;
    local_570 = 1;
    local_74 = CONCAT31(local_74._1_3_,1);
    local_574 = (undefined *)0x4c6975;
    FUN_00401829();
  }
  local_56c = &DAT_00f1ec64;
  local_570 = 0x4c6985;
  basic_string<>();
  local_c8 = &local_570;
  local_570 = 0;
  local_56c = (undefined *)0x0;
  local_dc = &local_578;
  local_578 = 0;
  local_574 = (undefined *)0x0;
  local_44 = &local_580;
  local_580 = 0;
  local_57c = 0;
  local_38 = &local_588;
  local_588 = 0;
  local_584 = 0;
  local_40 = &local_590;
  local_590 = 0;
  local_58c = 0;
  local_3c = &local_598;
  local_598 = 0;
  local_594 = 0;
  local_50 = &local_5a0;
  local_5a0 = 0;
  local_59c = 0;
  local_4c = &local_5a8;
  local_5a8 = 0;
  local_5a4 = 0;
  puStack_5ac = (undefined *)0x0;
  local_fc = 7;
  puStack_5b0 = (undefined *)0x4c69f7;
  FUN_0040180b();
  puStack_5ac = local_114;
  puStack_5b0 = (undefined *)0x0;
  local_e0 = 7;
  puStack_5b4 = (undefined *)0x4c6a0d;
  FUN_0040180b();
  puStack_5b0 = local_f8;
  puStack_5b4 = (undefined *)0x0;
  local_134 = 7;
  puStack_5b8 = (undefined *)0x4c6a26;
  FUN_0040180b();
  local_74 = CONCAT31(local_74._1_3_,0x10);
  puStack_5b4 = local_14c;
  puStack_5b8 = local_24;
  local_5bc = local_d0;
  puVar1 = (undefined4 *)FUN_0046752c();
  local_5bc = (undefined *)*puVar1;
  local_34 = &local_5bc;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_004c7342(undefined4 param_1_00,undefined4 *param_1,int *param_2,int param_3)

{
  char cVar1;
  int *piVar2;
  undefined4 **ppuStack_100;
  undefined4 **ppuStack_fc;
  undefined4 uStack_ec;
  undefined4 local_94;
  undefined4 local_90;
  int *local_8c;
  int local_88;
  int **local_84;
  undefined4 *local_80;
  void *local_7c;
  undefined4 local_74;
  undefined4 *local_70;
  int local_6c;
  int *local_68;
  int local_64;
  char local_5d;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&local_70;
  local_70 = (undefined4 *)0x6c;
  local_80 = param_1;
  local_74._0_1_ = 1;
  local_74._1_3_ = 0;
  *param_1 = 0;
  param_1[1] = 0;
  local_90 = 1;
  local_94 = param_1_00;
  if (param_2 != (int *)0x0) {
    ppuStack_fc = (undefined4 **)0x4c738c;
    cVar1 = (**(code **)(*param_2 + 4))();
    if (cVar1 != '\0') {
      ppuStack_fc = &param_2;
      ppuStack_100 = &local_8c;
      FUN_004c7589();
      local_74._0_1_ = 2;
      if (local_8c != (int *)0x0) {
        ppuStack_fc = &local_68;
        ppuStack_100 = (undefined4 **)local_8c;
        FUN_004f5f9d();
        ppuStack_fc = &local_68;
        local_74 = CONCAT31(local_74._1_3_,3);
        ppuStack_100 = &local_70;
        piVar2 = (int *)FUN_004c7712();
        local_5d = *piVar2 == 0;
        if (local_6c != 0) {
          ppuStack_fc = (undefined4 **)0x4c73e1;
          FUN_0040127a();
        }
        if (local_5d != '\0') {
          ppuStack_100 = (undefined4 **)local_68;
          local_84 = (int **)&ppuStack_100;
                    // WARNING: Subroutine does not return
          FUN_0043c023(&local_64);
        }
        local_74._0_1_ = 2;
        if (local_64 != 0) {
          ppuStack_fc = (undefined4 **)0x4c752e;
          FUN_0040127a();
        }
      }
      local_74._0_1_ = 1;
      if (local_88 != 0) {
        ppuStack_fc = (undefined4 **)0x4c753e;
        FUN_0040127a();
      }
    }
  }
  local_74 = (uint)local_74._1_3_ << 8;
  if (param_3 != 0) {
    ppuStack_fc = (undefined4 **)0x4c754d;
    FUN_0040127a();
  }
  ExceptionList = local_7c;
  uStack_ec = 0x4c7567;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_004c756e(undefined4 param_1_00,undefined4 param_1)

{
  FUN_004c6898(param_1_00,param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004c7589(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4c7595;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WDE765622::W441A93CE::RTTI_Type_Descriptor,
                   &WE711C61D::WE44B5084::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WDE765622::W441A93CE::RTTI_Type_Descriptor,
                           &WE711C61D::WE44B5084::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004c763f(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4c764b;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WE711C61D::WE44B5084::RTTI_Type_Descriptor,
                   &W8489743A::WDB387060::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WE711C61D::WE44B5084::RTTI_Type_Descriptor,
                           &W8489743A::WDB387060::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_004c76f5(undefined4 param_1,undefined4 param_2)

{
  FUN_004c77c8(param_1,param_2);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004c7712(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4c771e;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WDB387060::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WDB387060::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_004c77c8(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  int unaff_EBX;
  
  puVar5 = (undefined4 *)FUN_00428a20();
  uVar1 = *puVar5;
  uVar2 = puVar5[1];
  puVar5 = (undefined4 *)FUN_004289f0();
  uVar3 = *puVar5;
  uVar4 = puVar5[1];
  *(undefined4 *)(unaff_EBX + 0x18) = 7;
  FUN_0040180b(0);
  FUN_004c7841(unaff_EBX,uVar3,uVar4,param_2,uVar1,uVar2,param_2,param_2);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c7841(void)

{
  wchar_t wVar1;
  char cVar2;
  undefined2 uVar3;
  wchar_t *pwVar4;
  int *piVar5;
  undefined4 param_4;
  
  while( true ) {
    cVar2 = FUN_00412797(&stack0x00000014);
    if (cVar2 != '\0') break;
    pwVar4 = std::
             _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                          *)&stack0x00000008);
    wVar1 = *pwVar4;
    piVar5 = (int *)FUN_00413d06(param_4);
    uVar3 = (**(code **)(*piVar5 + 0x20))(wVar1);
    FID_conflict_append(1,uVar3);
    FUN_00847800();
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_004c7895(void)

{
  FUN_00401829(1,0);
  __CxxThrowException_8(0,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c7ba5(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c7bb1;
  uVar1 = basic_string<>(&DAT_00fc01d8,8);
  local_8 = 0;
  local_18 = 0xe14eb7df;
  local_14 = 0xe83a31fb;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_004c8481(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W8489743A::WC4B9B1A3::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c84c8(void)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c858f();
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004c8503(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4c850f;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fc0410,3);
  local_8 = 0;
  local_18 = 0x33926da1;
  local_14 = 0xa8ddd4da;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c8554(void)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c8503();
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004c858f(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4c859b;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fc0408,3);
  local_8 = 0;
  local_18 = 0x78a253a8;
  local_14 = 0xa1399603;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c85e0(void)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c861b();
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004c861b(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4c8627;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fc0400,3);
  local_8 = 0;
  local_18 = 0x7802ed03;
  local_14 = 0xef93a1f9;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c866c(void)

{
  undefined4 uVar1;
  
  uVar1 = FUN_004c86a7();
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004c86a7(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4c86b3;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fc03f8,3);
  local_8 = 0;
  local_18 = 0xe8375702;
  local_14 = 0x4d370815;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



undefined4 * __thiscall FUN_004c87b4(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W09E346CD::W31116714::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_004c87d1(undefined4 *param_1)

{
  *param_1 = W09E346CD::W31116714::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

undefined4 __thiscall FUN_004c8e98(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  undefined4 uVar2;
  undefined local_8c [28];
  void *local_70;
  undefined4 local_68;
  undefined4 local_64;
  undefined local_48 [28];
  undefined local_2c [24];
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_64 = 0x38;
  local_68 = 0x4c8ea8;
  local_8 = param_1;
  local_c = 0;
  uVar2 = basic_string<>(&DAT_00f1ebe8,0x13);
  local_68 = 0;
  local_10 = 0xc2b810c9;
  local_c = 0xfddc0a3;
  uVar2 = FUN_00b94470(&local_10,uVar2);
  local_68._0_1_ = 1;
  basic_string<>(uVar2);
  piVar1 = *(int **)(param_1_00 + 8);
  local_14 = 7;
  FUN_0040180b(0);
  local_68._0_1_ = 3;
  uVar2 = (**(code **)(*piVar1 + 0x10))(local_8c,local_2c);
  local_68 = CONCAT31(local_68._1_3_,4);
  FUN_004155ac(local_8,uVar2,local_48);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  ExceptionList = local_70;
  return local_8;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

undefined4 __thiscall FUN_004c8f76(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  undefined4 uVar2;
  undefined local_8c [28];
  void *local_70;
  undefined4 local_68;
  undefined4 local_64;
  undefined local_48 [28];
  undefined local_2c [24];
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_64 = 0x38;
  local_68 = 0x4c8f86;
  local_8 = param_1;
  local_c = 0;
  uVar2 = basic_string<>(&DAT_00f1ec10,0x16);
  local_68 = 0;
  local_10 = 0xf339462d;
  local_c = 0x3fe7c45b;
  uVar2 = FUN_00b94470(&local_10,uVar2);
  local_68._0_1_ = 1;
  basic_string<>(uVar2);
  piVar1 = *(int **)(param_1_00 + 8);
  local_14 = 7;
  FUN_0040180b(0);
  local_68._0_1_ = 3;
  uVar2 = (**(code **)(*piVar1 + 0x10))(local_8c,local_2c);
  local_68 = CONCAT31(local_68._1_3_,4);
  FUN_004155ac(local_8,uVar2,local_48);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  ExceptionList = local_70;
  return local_8;
}



void __fastcall FUN_004c9054(int *param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int *local_f4 [2];
  char cStack_ec;
  undefined local_e4 [28];
  int local_c8 [2];
  int aiStack_c0 [34];
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41ac3;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_f4;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff00;
  ExceptionList = &local_14;
  iVar6 = 2;
  local_f4[0] = param_1;
  FUN_0043d406(param_1 + 4);
  local_c = 0;
  FUN_004c8f76(local_38);
  local_c = CONCAT31(local_c._1_3_,1);
  cVar2 = FUN_0041506b(local_38,uVar3);
  if (cVar2 != '\0') {
    cVar2 = FUN_00441993(local_38);
    if (cVar2 != '\0') goto LAB_004c9128;
  }
  uVar4 = FUN_004c8e98(local_e4);
  local_c._0_1_ = 2;
  FID_conflict_assign(uVar4,0,0xffffffff);
  local_c = CONCAT31(local_c._1_3_,1);
  FUN_00401829(1,0);
  iVar6 = 0;
LAB_004c9128:
  cVar2 = FUN_0041506b(local_38);
  if (cVar2 != '\0') {
    cVar2 = FUN_00441993(local_38);
    if (cVar2 != '\0') {
      FUN_0043e743(local_c8);
      local_c = CONCAT31(local_c._1_3_,3);
      iVar1 = *(int *)(local_c8[0] + 4);
      *(undefined4 *)((int)aiStack_c0 + iVar1 + 4) = 0;
      FUN_00417a55(*(undefined4 *)((int)aiStack_c0 + iVar1),0);
      FUN_0043e7ac();
      if (*(int *)((int)aiStack_c0 + *(int *)(local_c8[0] + 4)) == 0) {
        FUN_004c99bf(param_1,local_c8);
        piVar5 = (int *)FUN_00419e85(iVar6);
        if ((~-(uint)(*piVar5 != 1) & 0x7a491c) != 0) {
          iVar6 = 1;
        }
      }
      FUN_0043e832();
      local_c = CONCAT31(local_c._1_3_,1);
      FUN_0043e1a3();
      param_1 = local_f4[0];
    }
  }
  FUN_00401829(1,0);
  local_c = 0xffffffff;
  if (cStack_ec != '\0') {
    FUN_00401477();
  }
  if ((~-(uint)(iVar6 != 1) & 0x7a491c) != 0) {
    (**(code **)(*param_1 + 8))(1);
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_004c9247(int param_1_00,char param_1)

{
  char cVar1;
  uint uVar2;
  undefined auStack_f0 [7];
  char local_e9;
  char local_e4;
  undefined local_e0 [140];
  undefined local_54 [28];
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41a6c;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_f0;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff08;
  ExceptionList = &local_14;
  if (param_1 == '\0') {
    FUN_0043d406(param_1_00 + 0x10);
    local_e9 = *(int *)(param_1_00 + 0x20) < 4;
    if (local_e4 != '\0') {
      FUN_00401477();
    }
    if (local_e9 == '\0') goto LAB_004c93c1;
  }
  FUN_004c8f76(local_38);
  local_c = 0;
  basic_string<>(local_38);
  local_c = CONCAT31(local_c._1_3_,1);
  FUN_00825480(uVar2);
  cVar1 = FUN_0041506b(local_54);
  if (cVar1 == '\0') {
    FUN_00828050(local_54,0);
  }
  cVar1 = FUN_0041506b(local_54);
  if (cVar1 != '\0') {
    cVar1 = FUN_00441954(local_54);
    if (cVar1 != '\0') {
      FUN_0043ef04(local_e0,local_38);
      local_c._0_1_ = 2;
      FUN_0043d406(param_1_00 + 0x10);
      local_c._0_1_ = 3;
      FUN_004c9a74(local_e0);
      local_c._0_1_ = 2;
      if (local_e4 != '\0') {
        FUN_00401477();
      }
      local_c = CONCAT31(local_c._1_3_,1);
      FUN_0043e360();
    }
  }
  FUN_00401829(1,0);
  FUN_00401829(1,0);
LAB_004c93c1:
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void FUN_004c99bf(int param_1,undefined4 param_2)

{
  undefined local_5c [60];
  int local_20;
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0x4c99cb;
  FUN_0043da9b(local_5c,param_2);
  local_8 = 1;
  if (*(uint *)(param_1 + 0x3c) < 0x10) {
    local_20 = param_1 + 0x28;
  }
  else {
    local_20 = *(int *)(param_1 + 0x28);
  }
  local_1c = param_1 + 0x20;
  FUN_0043f3d7();
  local_8 = 0;
  FUN_004c9a21();
  return;
}



undefined * Catch_All_004c9a0a(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 0;
  *(undefined4 *)(*(int *)(unaff_EBP + 8) + 0x20) = 3;
  return &DAT_004c9a1e;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c9a21(void)

{
  undefined4 uVar1;
  int iVar2;
  int unaff_EBP;
  int unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 3;
  uVar1 = *(undefined4 *)(unaff_ESI + 0x18);
  if (*(uint *)(unaff_ESI + 0x138) < 0x10) {
    iVar2 = unaff_ESI + 0x124;
  }
  else {
    iVar2 = *(int *)(unaff_ESI + 0x124);
  }
  *(int *)(unaff_EBP + -0x1c) = iVar2;
  *(undefined4 *)(unaff_EBP + -0x18) = uVar1;
  FUN_004c9b4f(unaff_EBP + -0x4f);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_0043dad2(unaff_EBP + -0x58);
  return;
}



undefined4 Catch_All_004c9a63(void)

{
  FUN_004d94d2();
  return 0x4c9a4e;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004c9a74(undefined4 param_1)

{
  int unaff_ESI;
  undefined local_47 [43];
  int local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4c9a80;
  FUN_0082e0c0(param_1,0);
  local_8 = 0;
  local_18 = (undefined4 *)(unaff_ESI + 0x20);
  *local_18 = 3;
  if (*(uint *)(unaff_ESI + 0x3c) < 0x10) {
    local_1c = unaff_ESI + 0x28;
  }
  else {
    local_1c = *(int *)(unaff_ESI + 0x28);
  }
  FUN_0061111a(local_47);
  local_18 = *(undefined4 **)(unaff_ESI + 0x18);
  if (*(uint *)(unaff_ESI + 0x138) < 0x10) {
    local_1c = unaff_ESI + 0x124;
  }
  else {
    local_1c = *(int *)(unaff_ESI + 0x124);
  }
  FUN_004c9bc6(local_47);
  local_8 = 0xffffffff;
  FUN_0043e647();
  return;
}



int FUN_004c9b4f(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_004c9bc6(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void Catch_All_004c9c83(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WB3204DCB::W30062E43> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WB3204DCB::W30062E43> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>
::get_const_instance(void)

{
                    // 0xc9c9a  607
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW30062E43@WB3204DCB@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW30062E43@WB3204DCB@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>::
    oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>
              ((oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74176);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_004c9c9f(undefined4 *param_1)

{
  *param_1 = 3;
  return;
}



undefined4 * __thiscall FUN_004c9cac(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WB3204DCB::W30062E43> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WB3204DCB::W30062E43> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>
::get_instance(void)

{
                    // 0xc9cce  927
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW30062E43@WB3204DCB@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW30062E43@WB3204DCB@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>::
    oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>
              ((oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74176);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004c9d18(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef746 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WB3204DCB::W30062E43>::oserializer<class boost::archive::xml_oarchive,class
// WB3204DCB::W30062E43>(void)

oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>::
oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>
          (oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43> *this)

{
  extended_type_info_typeid<class_WB3204DCB::W30062E43> *peVar1;
  
                    // 0xc9d41  65
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW30062E43@WB3204DCB@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class WB3204DCB::W30062E43>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class WB3204DCB::W30062E43>
// >::get_const_instance(void)

extended_type_info_typeid<class_WB3204DCB::W30062E43> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>::
get_const_instance(void)

{
                    // 0xc9d5b  439
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW30062E43@WB3204DCB@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW30062E43@WB3204DCB@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004c9d9c();
    _atexit((_func_4879 *)&LAB_00c74191);
  }
  return (extended_type_info_typeid<class_WB3204DCB::W30062E43> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class WB3204DCB::W30062E43>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class WB3204DCB::W30062E43> >::get_instance(void)

extended_type_info_typeid<class_WB3204DCB::W30062E43> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>::
get_instance(void)

{
                    // 0xc9d60  759
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW30062E43@WB3204DCB@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW30062E43@WB3204DCB@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004c9d9c();
    _atexit((_func_4879 *)&LAB_00c74191);
  }
  return (extended_type_info_typeid<class_WB3204DCB::W30062E43> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>
* FUN_004c9d9c(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>::vftable;
  FUN_00830c60(&WB3204DCB::W30062E43::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_004c9dec(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WB3204DCB::W30062E43>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43> *this,
                basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W30062E43> *local_8;
  
                    // 0xc9e2d  1675
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW30062E43@WB3204DCB@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_004c9f01();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// WB3204DCB::W30062E43> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// WB3204DCB::W30062E43> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_WB3204DCB::W30062E43> *peVar1;
  
                    // 0xc9e4b  527
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW30062E43@WB3204DCB@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW30062E43@WB3204DCB@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c741a7);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004c9e50(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WB3204DCB::W30062E43> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WB3204DCB::W30062E43> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>
::get_instance(void)

{
  extended_type_info_typeid<class_WB3204DCB::W30062E43> *peVar1;
  
                    // 0xc9e72  847
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW30062E43@WB3204DCB@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW30062E43@WB3204DCB@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W30062E43>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c741a7);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004c9ec2(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef748 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WB3204DCB::W30062E43>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W30062E43> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0xc9eeb  1559
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW30062E43@WB3204DCB@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_004ca040(param_3);
  return;
}



void FUN_004c9f01(void)

{
  int unaff_ESI;
  int local_c;
  undefined4 local_8;
  
  local_8 = *(undefined4 *)(unaff_ESI + 0x28);
  if (*(uint *)(unaff_ESI + 0x174) < 0x10) {
    local_c = unaff_ESI + 0x160;
  }
  else {
    local_c = *(int *)(unaff_ESI + 0x160);
  }
  FUN_004ca025(&local_c);
  local_8 = *(undefined4 *)(unaff_ESI + 0x30);
  if (*(uint *)(unaff_ESI + 400) < 0x10) {
    local_c = unaff_ESI + 0x17c;
  }
  else {
    local_c = *(int *)(unaff_ESI + 0x17c);
  }
  FUN_004ca025(&local_c);
  local_8 = *(undefined4 *)(unaff_ESI + 0x38);
  if (*(uint *)(unaff_ESI + 0x1ac) < 0x10) {
    local_c = unaff_ESI + 0x198;
  }
  else {
    local_c = *(int *)(unaff_ESI + 0x198);
  }
  FUN_004ca025(&local_c);
  local_8 = *(undefined4 *)(unaff_ESI + 0x40);
  if (*(uint *)(unaff_ESI + 0x1c8) < 0x10) {
    local_c = unaff_ESI + 0x1b4;
  }
  else {
    local_c = *(int *)(unaff_ESI + 0x1b4);
  }
  FUN_004ca025(&local_c);
  local_8 = *(undefined4 *)(unaff_ESI + 0x48);
  if (*(uint *)(unaff_ESI + 0x1e4) < 0x10) {
    local_c = unaff_ESI + 0x1d0;
  }
  else {
    local_c = *(int *)(unaff_ESI + 0x1d0);
  }
  FUN_004ca025(&local_c);
  local_8 = *(undefined4 *)(unaff_ESI + 0x50);
  if (*(uint *)(unaff_ESI + 0x200) < 0x10) {
    local_c = unaff_ESI + 0x1ec;
  }
  else {
    local_c = *(int *)(unaff_ESI + 0x1ec);
  }
  FUN_004ca025(&local_c);
  local_8 = *(undefined4 *)(unaff_ESI + 0x58);
  if (*(uint *)(unaff_ESI + 0x21c) < 0x10) {
    local_c = unaff_ESI + 0x208;
  }
  else {
    local_c = *(int *)(unaff_ESI + 0x208);
  }
  FUN_004ca025(&local_c);
  return;
}



void FUN_004ca025(void)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_004ca178(iVar1 + 9);
  return;
}



void FUN_004ca040(uint param_1)

{
  int unaff_ESI;
  int local_c;
  undefined4 local_8;
  
  local_8 = *(undefined4 *)(unaff_ESI + 0x28);
  if (*(uint *)(unaff_ESI + 0x174) < 0x10) {
    local_c = unaff_ESI + 0x160;
  }
  else {
    local_c = *(int *)(unaff_ESI + 0x160);
  }
  FUN_004ca1ef(&local_c);
  local_8 = *(undefined4 *)(unaff_ESI + 0x30);
  if (*(uint *)(unaff_ESI + 400) < 0x10) {
    local_c = unaff_ESI + 0x17c;
  }
  else {
    local_c = *(int *)(unaff_ESI + 0x17c);
  }
  FUN_004ca1ef(&local_c);
  local_8 = *(undefined4 *)(unaff_ESI + 0x38);
  if (*(uint *)(unaff_ESI + 0x1ac) < 0x10) {
    local_c = unaff_ESI + 0x198;
  }
  else {
    local_c = *(int *)(unaff_ESI + 0x198);
  }
  FUN_004ca1ef(&local_c);
  local_8 = *(undefined4 *)(unaff_ESI + 0x40);
  if (*(uint *)(unaff_ESI + 0x1c8) < 0x10) {
    local_c = unaff_ESI + 0x1b4;
  }
  else {
    local_c = *(int *)(unaff_ESI + 0x1b4);
  }
  FUN_004ca1ef(&local_c);
  if (param_1 != 0) {
    local_8 = *(undefined4 *)(unaff_ESI + 0x48);
    if (*(uint *)(unaff_ESI + 0x1e4) < 0x10) {
      local_c = unaff_ESI + 0x1d0;
    }
    else {
      local_c = *(int *)(unaff_ESI + 0x1d0);
    }
    FUN_004ca1ef(&local_c);
  }
  if (1 < param_1) {
    local_8 = *(undefined4 *)(unaff_ESI + 0x50);
    if (*(uint *)(unaff_ESI + 0x200) < 0x10) {
      local_c = unaff_ESI + 0x1ec;
    }
    else {
      local_c = *(int *)(unaff_ESI + 0x1ec);
    }
    FUN_004ca1ef(&local_c);
  }
  if (2 < param_1) {
    local_8 = *(undefined4 *)(unaff_ESI + 0x58);
    if (*(uint *)(unaff_ESI + 0x21c) < 0x10) {
      local_c = unaff_ESI + 0x208;
    }
    else {
      local_c = *(int *)(unaff_ESI + 0x208);
    }
    FUN_004ca1ef(&local_c);
  }
  return;
}



int FUN_004ca178(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_004ca1ef(void)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_004ca20a(iVar1 + 9);
  return;
}



int FUN_004ca20a(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::WA7693960> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::WA7693960> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>
::get_const_instance(void)

{
                    // 0xca281  620
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWA7693960@W88619A38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VWA7693960@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>::
    oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>
              ((oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c741c2);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004ca286(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::WA7693960> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::WA7693960> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>
::get_instance(void)

{
                    // 0xca2a8  940
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWA7693960@W88619A38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VWA7693960@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>::
    oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>
              ((oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c741c2);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004ca2f2(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef749 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::WA7693960>::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::WA7693960>(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>::
oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>
          (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960> *this)

{
  extended_type_info_typeid<class_W88619A38::WA7693960> *peVar1;
  
                    // 0xca31b  78
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VWA7693960@W88619A38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W88619A38::WA7693960>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W88619A38::WA7693960>
// >::get_const_instance(void)

extended_type_info_typeid<class_W88619A38::WA7693960> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>::
get_const_instance(void)

{
                    // 0xca335  452
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VWA7693960@W88619A38@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VWA7693960@W88619A38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004ca376();
    _atexit((_func_4879 *)&LAB_00c741dd);
  }
  return (extended_type_info_typeid<class_W88619A38::WA7693960> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W88619A38::WA7693960>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W88619A38::WA7693960> >::get_instance(void)

extended_type_info_typeid<class_W88619A38::WA7693960> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>::
get_instance(void)

{
                    // 0xca33a  772
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VWA7693960@W88619A38@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VWA7693960@W88619A38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004ca376();
    _atexit((_func_4879 *)&LAB_00c741dd);
  }
  return (extended_type_info_typeid<class_W88619A38::WA7693960> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>
* FUN_004ca376(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>::vftable;
  FUN_00830c60(&W88619A38::WA7693960::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_004ca3c6(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::WA7693960>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WA7693960> *this,
                basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0xca407  1688
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VWA7693960@W88619A38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  if (param_1 == (basic_oarchive *)0xfffffff7) {
    param_1 = (basic_oarchive *)0x0;
  }
  FUN_004ca539(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W88619A38::WA7693960> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W88619A38::WA7693960> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W88619A38::WA7693960> *peVar1;
  
                    // 0xca455  540
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWA7693960@W88619A38@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VWA7693960@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c741f3);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004ca45a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::WA7693960> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::WA7693960> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W88619A38::WA7693960> *peVar1;
  
                    // 0xca47c  860
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWA7693960@W88619A38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VWA7693960@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WA7693960>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c741f3);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004ca4cc(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef74b = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::WA7693960>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WA7693960> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0xca4f5  1572
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VWA7693960@W88619A38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  if (param_1 == (basic_iarchive *)0xfffffff7) {
    param_1 = (basic_iarchive *)0x0;
  }
  FUN_004ca5b0(param_1 + 9);
  return;
}



int FUN_004ca539(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_004ca5b0(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::filesystem::path> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::filesystem::path> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>
::get_const_instance(void)

{
                    // 0xca627  627
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@Vpath@filesystem@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@Vpath@filesystem@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>::
    oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7420e);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>::get_instance(void)'
          ::`2'::t;
}



bool __fastcall FUN_004ca62c(int param_1)

{
  return *(int *)(param_1 + 8) != 0;
}



undefined4 * __thiscall FUN_004ca637(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::filesystem::path> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::filesystem::path> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>
::get_instance(void)

{
                    // 0xca659  947
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@Vpath@filesystem@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@Vpath@filesystem@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>::
    oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7420e);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004ca6a3(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef74c = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::filesystem::path>::oserializer<class boost::archive::xml_oarchive,class
// boost::filesystem::path>(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>::
oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>
          (oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path> *this)

{
  extended_type_info_typeid<class_boost::filesystem::path> *peVar1;
  
                    // 0xca6cc  85
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@Vpath@filesystem@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost::filesystem::path> const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::filesystem::path>
// >::get_const_instance(void)

extended_type_info_typeid<class_boost::filesystem::path> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>::
get_const_instance(void)

{
                    // 0xca6e6  459
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@Vpath@filesystem@boost@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@Vpath@filesystem@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004ca727();
    _atexit((_func_4879 *)&LAB_00c74229);
  }
  return (extended_type_info_typeid<class_boost::filesystem::path> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost::filesystem::path> & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::filesystem::path>
// >::get_instance(void)

extended_type_info_typeid<class_boost::filesystem::path> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>::
get_instance(void)

{
                    // 0xca6eb  779
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@Vpath@filesystem@boost@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@Vpath@filesystem@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004ca727();
    _atexit((_func_4879 *)&LAB_00c74229);
  }
  return (extended_type_info_typeid<class_boost::filesystem::path> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>
* FUN_004ca727(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>::vftable;
  FUN_00830c60(&boost::filesystem::path::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_004ca777(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::filesystem::path>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path>::save_object_data
          (oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path> *this,
          basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_boost::filesystem::path> *local_8;
  
                    // 0xca7b8  1695
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@Vpath@filesystem@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_004ca7d4();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_004ca7d4(int param_1)

{
  undefined4 uVar1;
  undefined local_50 [28];
  int local_34;
  undefined local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4ca7e0;
  local_18 = 7;
  FUN_0040180b(0);
  local_8 = 0;
  uVar1 = FUN_00489315(local_50);
  local_8._0_1_ = 1;
  FID_conflict_assign(uVar1,0,0xffffffff);
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00401829(1,0);
  if (param_1 == -9) {
    param_1 = 0;
  }
  local_34 = param_1;
  if (param_1 == -9) {
    local_34 = 0;
  }
  FUN_0082dd50("string");
  FUN_004ca9ea(local_30);
  FUN_0082de20("string");
  FUN_00401829(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::filesystem::path> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::filesystem::path> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::filesystem::path> *peVar1;
  
                    // 0xca88c  547
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@Vpath@filesystem@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@Vpath@filesystem@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7423f);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_004ca891(int param_1)

{
  if (param_1 != 0) {
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



undefined4 * __thiscall FUN_004ca8b0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::filesystem::path> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::filesystem::path> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>
::get_instance(void)

{
  extended_type_info_typeid<class_boost::filesystem::path> *peVar1;
  
                    // 0xca8d2  867
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@Vpath@filesystem@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@Vpath@filesystem@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::filesystem::path>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7423f);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004ca922(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef74e = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_004ca94b(undefined4 param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  
  FUN_00432156();
  uVar1 = FUN_008262c0();
  FUN_00411c7a(param_1,param_1_00,uVar1);
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::filesystem::path>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path>::load_object_data
          (iserializer<class_boost::archive::xml_iarchive,class_boost::filesystem::path> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0xca96c  1579
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@Vpath@filesystem@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_004ca97f(param_2);
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_004ca97f(void)

{
  undefined local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x4ca98b;
  local_18 = 7;
  FUN_0040180b(0);
  local_8 = 0;
  FUN_004caa0d();
  FUN_004ca94b(local_30);
  FUN_00401829(1,0);
  FUN_00a421fb();
  return;
}



void FUN_004ca9ea(undefined4 param_1)

{
  FUN_0082d4f0();
  FUN_0082db90(param_1);
  return;
}



int FUN_004caa0d(void)

{
  undefined4 *in_EAX;
  int unaff_EBX;
  
  FUN_0082ace0(*in_EAX);
  FUN_0082b6b0(in_EAX[1]);
  FUN_0082af90(*in_EAX);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



void Catch_All_004caab4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_004cac27(undefined4 param_1_00,byte param_1)

{
  FUN_004cac43();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004cac43(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = WB3204DCB::W9959A9F6::vftable;
  param_1[1] = WB3204DCB::W9959A9F6::vftable;
  local_8 = 6;
  if (local_20 != param_1 + 7) {
    param_1[7] = 0;
  }
  iVar1 = param_1[8];
  param_1[8] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_8 = 5;
  FUN_00502d9b();
  local_8._0_1_ = 3;
  if (param_1[8] != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  local_8 = CONCAT31(local_8._1_3_,1);
  if (param_1[3] != 0) {
    FUN_0040127a();
  }
  param_1[1] = W14E3BFCC::W2296D43D::vftable;
  *param_1 = WF22948E2::W4FECD79D::vftable;
  return;
}



undefined * Catch_All_004caccf(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 5;
  return &DAT_004cacdc;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

undefined4 __thiscall FUN_004cace1(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  undefined4 uVar2;
  undefined local_8c [28];
  void *local_70;
  undefined4 local_68;
  undefined4 local_64;
  undefined local_48 [28];
  undefined local_2c [24];
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_64 = 0x38;
  local_68 = 0x4cacf1;
  local_8 = param_1;
  local_c = 0;
  uVar2 = basic_string<>(&DAT_00f07914,0x19);
  local_68 = 0;
  local_10 = 0x6aa50f34;
  local_c = 0x8776612b;
  uVar2 = FUN_00b94470(&local_10,uVar2);
  local_68._0_1_ = 1;
  basic_string<>(uVar2);
  piVar1 = *(int **)(param_1_00 + 8);
  local_14 = 7;
  FUN_0040180b(0);
  local_68._0_1_ = 3;
  uVar2 = (**(code **)(*piVar1 + 0x10))(local_8c,local_2c);
  local_68 = CONCAT31(local_68._1_3_,4);
  FUN_004155ac(local_8,uVar2,local_48);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  ExceptionList = local_70;
  return local_8;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_004cadbf(int param_1)

{
  int iVar1;
  char cVar2;
  int local_c4 [2];
  int aiStack_bc [34];
  char local_34;
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb4;
  local_8 = 0x4cadce;
  FUN_0043d406(param_1 + 0x10);
  local_8 = 0;
  FUN_004cace1(local_30);
  local_8._0_1_ = 1;
  cVar2 = FUN_0041506b(local_30);
  if (cVar2 != '\0') {
    cVar2 = FUN_00441993(local_30);
    if (cVar2 != '\0') {
      FUN_0043e743(local_c4);
      local_8 = CONCAT31(local_8._1_3_,2);
      iVar1 = *(int *)(local_c4[0] + 4);
      *(undefined4 *)((int)aiStack_bc + iVar1 + 4) = 0;
      FUN_00417a55(*(undefined4 *)((int)aiStack_bc + iVar1),0);
      FUN_0043e7ac();
      if (*(int *)((int)aiStack_bc + *(int *)(local_c4[0] + 4)) == 0) {
        FUN_004cb484(param_1,local_c4);
      }
      FUN_0043e832();
      local_8._0_1_ = 1;
      FUN_0043e1a3();
    }
  }
  FUN_00401829(1,0);
  local_8 = 0xffffffff;
  if (local_34 != '\0') {
    FUN_00401477();
  }
  FUN_00a421fb();
  return;
}



void __thiscall FUN_004cae9d(int param_1_00,char param_1)

{
  char cVar1;
  uint uVar2;
  undefined auStack_f0 [7];
  char local_e9;
  char local_e4;
  undefined local_e0 [140];
  undefined local_54 [28];
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41a6c;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_f0;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff08;
  ExceptionList = &local_14;
  if (param_1 == '\0') {
    FUN_0043d406(param_1_00 + 0x10);
    local_e9 = *(int *)(param_1_00 + 0x18) < 2;
    if (local_e4 != '\0') {
      FUN_00401477();
    }
    if (local_e9 == '\0') goto LAB_004cb017;
  }
  FUN_004cace1(local_38);
  local_c = 0;
  basic_string<>(local_38);
  local_c = CONCAT31(local_c._1_3_,1);
  FUN_00825480(uVar2);
  cVar1 = FUN_0041506b(local_54);
  if (cVar1 == '\0') {
    FUN_00828050(local_54,0);
  }
  cVar1 = FUN_0041506b(local_54);
  if (cVar1 != '\0') {
    cVar1 = FUN_00441954(local_54);
    if (cVar1 != '\0') {
      FUN_0043ef04(local_e0,local_38);
      local_c._0_1_ = 2;
      FUN_0043d406(param_1_00 + 0x10);
      local_c._0_1_ = 3;
      FUN_004cb539(local_e0);
      local_c._0_1_ = 2;
      if (local_e4 != '\0') {
        FUN_00401477();
      }
      local_c = CONCAT31(local_c._1_3_,1);
      FUN_0043e360();
    }
  }
  FUN_00401829(1,0);
  FUN_00401829(1,0);
LAB_004cb017:
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_004cb03c(int param_1)

{
  undefined4 param_6;
  undefined4 local_378;
  undefined *local_374;
  int local_2d0;
  undefined4 local_2cc;
  undefined4 local_2c8;
  char local_2c0;
  undefined local_2bc [4];
  undefined4 *local_2b8;
  undefined4 local_2ac;
  undefined4 local_2a8 [168];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_2a8;
  local_2a8[0] = 0xac;
  local_2cc = 0;
  local_2c8 = 0;
  local_374 = (undefined *)(param_1 + 0x10);
  local_2ac._0_1_ = 3;
  local_2ac._1_3_ = 0;
  local_378 = 0x4cb083;
  local_2d0 = param_1;
  FUN_0043d406();
  local_374 = local_2bc;
  local_2ac._0_1_ = 4;
  local_378 = *(undefined4 *)(param_1 + 0x1c);
  FUN_004da1f7();
  local_2ac._0_1_ = 5;
  local_374 = (undefined *)0x4cb0a2;
  FUN_004fe47e();
  local_2ac._0_1_ = 4;
  if (local_2b8 != (undefined4 *)0x0) {
    local_374 = (undefined *)0x4cb0b2;
    FUN_0040127a();
  }
  local_2ac = CONCAT31(local_2ac._1_3_,3);
  if (local_2c0 != '\0') {
    local_374 = (undefined *)0x4cb0c3;
    FUN_00401477();
  }
  local_2b8 = &local_378;
  local_378 = param_6;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x0000001c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_004cb435(int param_1_00,undefined4 param_1)

{
  char local_18;
  
  FUN_0043d406(param_1_00 + 0xc);
  FUN_004da3fc();
  if (local_18 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void FUN_004cb484(int param_1,undefined4 param_2)

{
  undefined local_58 [60];
  int local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x4cb490;
  FUN_0043da9b(local_58,param_2);
  local_8 = 1;
  if (*(uint *)(param_1 + 0x3c) < 0x10) {
    local_1c = param_1 + 0x28;
  }
  else {
    local_1c = *(int *)(param_1 + 0x28);
  }
  local_18 = param_1 + 0x18;
  FUN_0043f3d7();
  local_8 = 0;
  FUN_004cb4e6();
  return;
}



undefined * Catch_All_004cb4cf(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 0;
  *(undefined4 *)(*(int *)(unaff_EBP + 8) + 0x18) = 1;
  return &DAT_004cb4e3;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004cb4e6(void)

{
  undefined4 uVar1;
  int iVar2;
  int unaff_EBP;
  int unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 3;
  uVar1 = *(undefined4 *)(unaff_ESI + 0x1c);
  if (*(uint *)(unaff_ESI + 0x154) < 0x10) {
    iVar2 = unaff_ESI + 0x140;
  }
  else {
    iVar2 = *(int *)(unaff_ESI + 0x140);
  }
  *(int *)(unaff_EBP + -0x18) = iVar2;
  *(undefined4 *)(unaff_EBP + -0x14) = uVar1;
  FUN_004cb614(unaff_EBP + -0x4b);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_0043dad2(unaff_EBP + -0x54);
  return;
}



undefined4 Catch_All_004cb528(void)

{
  FUN_004da381();
  return 0x4cb513;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004cb539(undefined4 param_1)

{
  int unaff_ESI;
  undefined local_47 [43];
  int local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x4cb545;
  FUN_0082e0c0(param_1,0);
  local_8 = 0;
  local_18 = (undefined4 *)(unaff_ESI + 0x18);
  *local_18 = 1;
  if (*(uint *)(unaff_ESI + 0x3c) < 0x10) {
    local_1c = unaff_ESI + 0x28;
  }
  else {
    local_1c = *(int *)(unaff_ESI + 0x28);
  }
  FUN_0061111a(local_47);
  local_18 = *(undefined4 **)(unaff_ESI + 0x1c);
  if (*(uint *)(unaff_ESI + 0x154) < 0x10) {
    local_1c = unaff_ESI + 0x140;
  }
  else {
    local_1c = *(int *)(unaff_ESI + 0x140);
  }
  FUN_004cb68b(local_47);
  local_8 = 0xffffffff;
  FUN_0043e647();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004cb5c7(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_004cb702(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



int FUN_004cb614(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_004cb68b(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004cb702(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB3204DCB::W0A458440>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004cb748(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WB3204DCB::W0A458440> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WB3204DCB::W0A458440> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>
::get_const_instance(void)

{
                    // 0xcb75f  598
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW0A458440@WB3204DCB@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW0A458440@WB3204DCB@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>::
    oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>
              ((oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7425a);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004cb764(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WB3204DCB::W0A458440> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WB3204DCB::W0A458440> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>
::get_instance(void)

{
                    // 0xcb786  918
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW0A458440@WB3204DCB@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW0A458440@WB3204DCB@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>::
    oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>
              ((oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7425a);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004cb7d0(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef830 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WB3204DCB::W0A458440>::oserializer<class boost::archive::xml_oarchive,class
// WB3204DCB::W0A458440>(void)

oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>::
oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>
          (oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440> *this)

{
  extended_type_info_typeid<class_WB3204DCB::W0A458440> *peVar1;
  
                    // 0xcb7f9  56
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW0A458440@WB3204DCB@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class WB3204DCB::W0A458440>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class WB3204DCB::W0A458440>
// >::get_const_instance(void)

extended_type_info_typeid<class_WB3204DCB::W0A458440> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>::
get_const_instance(void)

{
                    // 0xcb813  430
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW0A458440@WB3204DCB@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW0A458440@WB3204DCB@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004cb854();
    _atexit((_func_4879 *)&LAB_00c74275);
  }
  return (extended_type_info_typeid<class_WB3204DCB::W0A458440> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class WB3204DCB::W0A458440>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class WB3204DCB::W0A458440> >::get_instance(void)

extended_type_info_typeid<class_WB3204DCB::W0A458440> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>::
get_instance(void)

{
                    // 0xcb818  750
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW0A458440@WB3204DCB@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW0A458440@WB3204DCB@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004cb854();
    _atexit((_func_4879 *)&LAB_00c74275);
  }
  return (extended_type_info_typeid<class_WB3204DCB::W0A458440> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>
* FUN_004cb854(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>::vftable;
  FUN_00830c60(&WB3204DCB::W0A458440::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_004cb8a4(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WB3204DCB::W0A458440>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440> *this,
                basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_WB3204DCB::W0A458440> *local_8;
  
                    // 0xcb8e5  1666
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW0A458440@WB3204DCB@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_004cb9b5();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// WB3204DCB::W0A458440> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// WB3204DCB::W0A458440> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_WB3204DCB::W0A458440> *peVar1;
  
                    // 0xcb903  518
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW0A458440@WB3204DCB@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW0A458440@WB3204DCB@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7428b);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004cb908(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WB3204DCB::W0A458440> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WB3204DCB::W0A458440> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>
::get_instance(void)

{
  extended_type_info_typeid<class_WB3204DCB::W0A458440> *peVar1;
  
                    // 0xcb92a  838
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW0A458440@WB3204DCB@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW0A458440@WB3204DCB@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WB3204DCB::W0A458440>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7428b);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004cb97a(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef832 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WB3204DCB::W0A458440>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_WB3204DCB::W0A458440> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0xcb9a3  1550
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW0A458440@WB3204DCB@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_004cba5d();
  return;
}



void __fastcall FUN_004cb9b5(undefined4 param_1,int param_2)

{
  int iVar1;
  
  iVar1 = param_2;
  if (param_2 == -9) {
    iVar1 = 0;
  }
  FUN_004cbb05(iVar1 + 9);
  iVar1 = param_2;
  if (param_2 == -9) {
    iVar1 = 0;
  }
  FUN_004cbb7c(iVar1 + 9);
  if (param_2 == -9) {
    param_2 = 0;
  }
  FUN_004cbbf3(param_2 + 9);
  return;
}



void __fastcall FUN_004cba5d(undefined4 param_1,int param_2)

{
  int iVar1;
  
  iVar1 = param_2;
  if (param_2 == -9) {
    iVar1 = 0;
  }
  FUN_004cbc6a(iVar1 + 9);
  iVar1 = param_2;
  if (param_2 == -9) {
    iVar1 = 0;
  }
  FUN_004cbce1(iVar1 + 9);
  if (param_2 == -9) {
    param_2 = 0;
  }
  FUN_004cbd58(param_2 + 9);
  return;
}



int FUN_004cbb05(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_004cbb7c(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_004cbbf3(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_004cbc6a(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_004cbce1(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_004cbd58(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W9718CCBF> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W9718CCBF> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>
::get_const_instance(void)

{
                    // 0xcbdcf  617
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW9718CCBF@W88619A38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW9718CCBF@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>::
    oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>
              ((oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c742dc);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W0F3EE231> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W0F3EE231> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>
::get_const_instance(void)

{
                    // 0xcbdd4  599
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW0F3EE231@W88619A38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW0F3EE231@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>::
    oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>
              ((oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c742c1);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::WDDC4C4A6> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::WDDC4C4A6> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>
::get_const_instance(void)

{
                    // 0xcbdd9  624
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWDDC4C4A6@W88619A38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VWDDC4C4A6@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>::
    oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>
              ((oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c742a6);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004cbdde(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_004cbe00(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_004cbe22(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::W9718CCBF> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::W9718CCBF> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>
::get_instance(void)

{
                    // 0xcbe44  937
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW9718CCBF@W88619A38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW9718CCBF@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>::
    oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>
              ((oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c742dc);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::W0F3EE231> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::W0F3EE231> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>
::get_instance(void)

{
                    // 0xcbe8e  919
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW0F3EE231@W88619A38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW0F3EE231@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>::
    oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>
              ((oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c742c1);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::WDDC4C4A6> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::WDDC4C4A6> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>
::get_instance(void)

{
                    // 0xcbed8  944
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWDDC4C4A6@W88619A38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VWDDC4C4A6@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>::
    oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>
              ((oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c742a6);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004cbf22(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef833 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_004cbf4b(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef834 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_004cbf74(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef835 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W9718CCBF>::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W9718CCBF>(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>::
oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>
          (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF> *this)

{
  extended_type_info_typeid<class_W88619A38::W9718CCBF> *peVar1;
  
                    // 0xcbf9d  75
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW9718CCBF@W88619A38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W0F3EE231>::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W0F3EE231>(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>::
oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>
          (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231> *this)

{
  extended_type_info_typeid<class_W88619A38::W0F3EE231> *peVar1;
  
                    // 0xcbfb7  57
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW0F3EE231@W88619A38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::WDDC4C4A6>::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::WDDC4C4A6>(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>::
oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>
          (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6> *this)

{
  extended_type_info_typeid<class_W88619A38::WDDC4C4A6> *peVar1;
  
                    // 0xcbfd1  82
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VWDDC4C4A6@W88619A38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W88619A38::W9718CCBF>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W88619A38::W9718CCBF>
// >::get_const_instance(void)

extended_type_info_typeid<class_W88619A38::W9718CCBF> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>::
get_const_instance(void)

{
                    // 0xcbfeb  449
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW9718CCBF@W88619A38@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW9718CCBF@W88619A38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004cc0b1();
    _atexit((_func_4879 *)&LAB_00c74323);
  }
  return (extended_type_info_typeid<class_W88619A38::W9718CCBF> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W88619A38::W0F3EE231>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W88619A38::W0F3EE231>
// >::get_const_instance(void)

extended_type_info_typeid<class_W88619A38::W0F3EE231> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>::
get_const_instance(void)

{
                    // 0xcbff0  431
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW0F3EE231@W88619A38@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW0F3EE231@W88619A38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004cc101();
    _atexit((_func_4879 *)&LAB_00c7430d);
  }
  return (extended_type_info_typeid<class_W88619A38::W0F3EE231> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W88619A38::WDDC4C4A6>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W88619A38::WDDC4C4A6>
// >::get_const_instance(void)

extended_type_info_typeid<class_W88619A38::WDDC4C4A6> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>::
get_const_instance(void)

{
                    // 0xcbff5  456
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VWDDC4C4A6@W88619A38@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VWDDC4C4A6@W88619A38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004cc151();
    _atexit((_func_4879 *)&LAB_00c742f7);
  }
  return (extended_type_info_typeid<class_W88619A38::WDDC4C4A6> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W88619A38::W9718CCBF>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W88619A38::W9718CCBF> >::get_instance(void)

extended_type_info_typeid<class_W88619A38::W9718CCBF> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>::
get_instance(void)

{
                    // 0xcbffd  769
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW9718CCBF@W88619A38@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW9718CCBF@W88619A38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004cc0b1();
    _atexit((_func_4879 *)&LAB_00c74323);
  }
  return (extended_type_info_typeid<class_W88619A38::W9718CCBF> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W88619A38::W0F3EE231>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W88619A38::W0F3EE231> >::get_instance(void)

extended_type_info_typeid<class_W88619A38::W0F3EE231> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>::
get_instance(void)

{
                    // 0xcc039  751
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW0F3EE231@W88619A38@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW0F3EE231@W88619A38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004cc101();
    _atexit((_func_4879 *)&LAB_00c7430d);
  }
  return (extended_type_info_typeid<class_W88619A38::W0F3EE231> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W88619A38::WDDC4C4A6>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W88619A38::WDDC4C4A6> >::get_instance(void)

extended_type_info_typeid<class_W88619A38::WDDC4C4A6> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>::
get_instance(void)

{
                    // 0xcc075  776
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VWDDC4C4A6@W88619A38@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VWDDC4C4A6@W88619A38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004cc151();
    _atexit((_func_4879 *)&LAB_00c742f7);
  }
  return (extended_type_info_typeid<class_W88619A38::WDDC4C4A6> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>
* FUN_004cc0b1(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>::vftable;
  FUN_00830c60(&W88619A38::W9718CCBF::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>
* FUN_004cc101(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>::vftable;
  FUN_00830c60(&W88619A38::W0F3EE231::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>
* FUN_004cc151(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>::vftable;
  FUN_00830c60(&W88619A38::WDDC4C4A6::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_004cc1a1(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_004cc1e2(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_004cc223(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::W9718CCBF>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W9718CCBF> *this,
                basic_oarchive *param_1,void *param_2)

{
  undefined4 uVar1;
  undefined local_8 [4];
  
                    // 0xcc264  1685
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW9718CCBF@W88619A38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  FUN_004cc744(param_1 + 9);
  uVar1 = FUN_007b2d68();
  *(undefined4 *)((int)param_2 + 0x24) = uVar1;
  FUN_0061111a(param_1 + 9);
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::W0F3EE231>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W0F3EE231> *this,
                basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0xcc2db  1667
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW0F3EE231@W88619A38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  if (param_1 == (basic_oarchive *)0xfffffff7) {
    param_1 = (basic_oarchive *)0x0;
  }
  FUN_004cc5fa(param_1 + 9);
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::WDDC4C4A6>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W88619A38::WDDC4C4A6> *this,
                basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0xcc326  1692
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VWDDC4C4A6@W88619A38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  if (param_1 == (basic_oarchive *)0xfffffff7) {
    param_1 = (basic_oarchive *)0x0;
  }
  FUN_004cc671(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W88619A38::W9718CCBF> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W88619A38::W9718CCBF> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W88619A38::W9718CCBF> *peVar1;
  
                    // 0xcc374  537
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW9718CCBF@W88619A38@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW9718CCBF@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7436f);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_004cc379(undefined4 *param_1)

{
  *param_1 = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W88619A38::W0F3EE231> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W88619A38::W0F3EE231> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W88619A38::W0F3EE231> *peVar1;
  
                    // 0xcc386  519
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW0F3EE231@W88619A38@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW0F3EE231@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74354);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W88619A38::WDDC4C4A6> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W88619A38::WDDC4C4A6> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W88619A38::WDDC4C4A6> *peVar1;
  
                    // 0xcc38b  544
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWDDC4C4A6@W88619A38@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VWDDC4C4A6@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74339);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004cc390(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_004cc3b2(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_004cc3d4(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::W9718CCBF> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::W9718CCBF> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W88619A38::W9718CCBF> *peVar1;
  
                    // 0xcc3f6  857
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW9718CCBF@W88619A38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW9718CCBF@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W9718CCBF>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7436f);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::W0F3EE231> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::W0F3EE231> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W88619A38::W0F3EE231> *peVar1;
  
                    // 0xcc446  839
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW0F3EE231@W88619A38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW0F3EE231@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W0F3EE231>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74354);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::WDDC4C4A6> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::WDDC4C4A6> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W88619A38::WDDC4C4A6> *peVar1;
  
                    // 0xcc496  864
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWDDC4C4A6@W88619A38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VWDDC4C4A6@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::WDDC4C4A6>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74339);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004cc4e6(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef839 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_004cc50f(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef83a = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_004cc538(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef83b = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::W9718CCBF>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W9718CCBF> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0xcc561  1569
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW9718CCBF@W88619A38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_004cc7bb(param_3);
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::W0F3EE231>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W0F3EE231> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0xcc575  1551
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW0F3EE231@W88619A38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  if (param_1 == (basic_iarchive *)0xfffffff7) {
    param_1 = (basic_iarchive *)0x0;
  }
  FUN_004cc6cd(param_1 + 9);
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::WDDC4C4A6>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W88619A38::WDDC4C4A6> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0xcc5b6  1576
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VWDDC4C4A6@W88619A38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  if (param_1 == (basic_iarchive *)0xfffffff7) {
    param_1 = (basic_iarchive *)0x0;
  }
  FUN_0049528a(param_1 + 9);
  return;
}



int FUN_004cc5fa(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
  *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_004cc671(int param_1)

{
  undefined4 *in_EAX;
  
  FUN_0082dd50(*in_EAX);
  FUN_00495301(in_EAX[1]);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_004cc6cd(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_004cc744(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void __fastcall FUN_004cc7bb(int param_1_00,int param_2,int param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  undefined auStack_1c [4];
  int *local_18;
  int local_14;
  int *local_10;
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)auStack_1c;
  if (*(uint *)(param_2 + 0x104) < 0x10) {
    local_14 = param_2 + 0xf0;
  }
  else {
    local_14 = *(int *)(param_2 + 0xf0);
  }
  local_18 = (int *)(param_2 + 0x14);
  local_10 = local_18;
  FUN_004cc87e(param_1_00 + 9);
  if (param_1 != 0) {
    piVar1 = (int *)(param_2 + 0x24);
    *piVar1 = 0;
    if (*(uint *)(param_2 + 0x13c) < 0x10) {
      local_14 = param_2 + 0x128;
    }
    else {
      local_14 = *(int *)(param_2 + 0x128);
    }
    local_10 = piVar1;
    FUN_0043f3d7();
    iVar2 = *piVar1;
    iVar3 = FUN_007b2d68();
    if (iVar3 != iVar2) {
      FUN_007b2e93(iVar2);
      if ((-(uint)((char)local_14 != '\0') & 0x6a1cd8) != 0) {
        FUN_0041ba77();
      }
    }
  }
  ___security_check_cookie_4();
  return;
}



int FUN_004cc87e(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::optional<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > > > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::optional<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > > > >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
          ::get_const_instance(void)

{
                    // 0xcc8f5  585
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7438a);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_004cc8fa(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::optional<class std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> > > > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::optional<class std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> > > > >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
          ::get_instance(void)

{
                    // 0xcc91c  905
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7438a);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_004cc966(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef83c = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::optional<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > > >::oserializer<class boost::archive::xml_oarchive,class
// boost::optional<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > > >(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
::
oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
          (oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
           *this)

{
  extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
  *peVar1;
  
                    // 0xcc98f  43
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class boost::optional<class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > > >
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::optional<class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > > >
// >::get_const_instance(void)

extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
          ::get_const_instance(void)

{
                    // 0xcc9a9  410
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@boost@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004cca03();
    _atexit((_func_4879 *)&LAB_00c743a5);
  }
  return (extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



void FUN_004cc9ae(int param_1)

{
  if (param_1 != 0) {
    FUN_00417f97();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class boost::optional<class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > > > &
// __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::optional<class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > > >
// >::get_instance(void)

extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
          ::get_instance(void)

{
                    // 0xcc9c7  730
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@boost@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004cca03();
    _atexit((_func_4879 *)&LAB_00c743a5);
  }
  return (extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
* FUN_004cca03(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
       ::vftable;
  FUN_00830c60(&boost::
                optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>
                ::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_004cca53(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
       ::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::optional<class std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> > > >::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
::save_object_data(oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
  *local_8;
  
                    // 0xcca94  1653
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_004ccd04();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::optional<unsigned int> > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::optional<unsigned int> > >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>
::get_const_instance(void)

{
                    // 0xccab0  584
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@I@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@I@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>::
    oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c743bb);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004ccab5(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::optional<unsigned int> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::optional<unsigned int> > >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>
::get_instance(void)

{
                    // 0xccad7  904
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@I@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@I@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>::
    oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c743bb);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004ccb21(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef83e = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::optional<unsigned int> >::oserializer<class boost::archive::xml_oarchive,class
// boost::optional<unsigned int> >(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>::
oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>
          (oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>
           *this)

{
  extended_type_info_typeid<class_boost::optional<unsigned_int>_> *peVar1;
  
                    // 0xccb4a  42
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@I@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost::optional<unsigned int> > const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::optional<unsigned int> >
// >::get_const_instance(void)

extended_type_info_typeid<class_boost::optional<unsigned_int>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>
::get_const_instance(void)

{
                    // 0xccb64  409
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$optional@I@boost@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$optional@I@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004ccba5();
    _atexit((_func_4879 *)&LAB_00c743d6);
  }
  return (extended_type_info_typeid<class_boost::optional<unsigned_int>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost::optional<unsigned int> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::optional<unsigned int> >
// >::get_instance(void)

extended_type_info_typeid<class_boost::optional<unsigned_int>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>
::get_instance(void)

{
                    // 0xccb69  729
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$optional@I@boost@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$optional@I@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_004ccba5();
    _atexit((_func_4879 *)&LAB_00c743d6);
  }
  return (extended_type_info_typeid<class_boost::optional<unsigned_int>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>
* FUN_004ccba5(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>::
       vftable;
  FUN_00830c60(&boost::optional<unsigned_int>::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_004ccbf5(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>::
       vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::optional<unsigned int> >::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_>
                 *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_boost::optional<unsigned_int>_> *local_8;
  
                    // 0xccc36  1652
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@I@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_004ccf01();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::optional<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > > > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::optional<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > > > >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
  *peVar1;
  
                    // 0xccc52  498
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c743ec);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_004ccc57(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::optional<class std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> > > > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::optional<class std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> > > > >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
  *peVar1;
  
                    // 0xccc79  818
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c743ec);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_004cccc9(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef840 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::optional<class std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> > > >::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
::load_object_data(iserializer<class_boost::archive::xml_iarchive,class_boost::optional<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0xcccf2  1530
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_004ccf78();
  return;
}



void __fastcall FUN_004ccd04(int param_1)

{
  char *in_EAX;
  char local_19;
  char *local_18;
  char *local_14;
  char *local_10;
  char **local_c;
  
  local_19 = *in_EAX;
  local_14 = &local_19;
  param_1 = param_1 + 9;
  local_18 = "initialized";
  FUN_004956db(param_1);
  if (local_19 != '\0') {
    local_18 = (char *)0x0;
    local_c = &local_18;
    local_10 = "item_version";
    FUN_004cce2d(param_1);
    local_c = (char **)(in_EAX + 4);
    local_10 = "value";
    FUN_004ccea5(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::optional<unsigned int> > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::optional<unsigned int> > >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::optional<unsigned_int>_> *peVar1;
  
                    // 0xccd7b  497
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@I@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@I@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74407);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004ccd80(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::optional<unsigned int> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::optional<unsigned int> > >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>
::get_instance(void)

{
  extended_type_info_typeid<class_boost::optional<unsigned_int>_> *peVar1;
  
                    // 0xccda2  817
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@I@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@I@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<unsigned_int>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74407);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_004ccdf2(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef841 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::optional<unsigned int> >::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_boost::optional<unsigned_int>_>
                 *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0xcce1b  1529
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@I@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_004cd0d3();
  return;
}



int FUN_004cce2d(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  FUN_0082d4f0();
  FUN_004cd180(uVar1);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_004ccea5(int param_1)

{
  undefined4 *in_EAX;
  
  FUN_0082dd50(*in_EAX);
  FUN_004ca9ea(in_EAX[1]);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void __fastcall FUN_004ccf01(int param_1)

{
  char *in_EAX;
  char local_19;
  char *local_18;
  char *local_14;
  char *local_10;
  char **local_c;
  
  local_19 = *in_EAX;
  local_14 = &local_19;
  param_1 = param_1 + 9;
  local_18 = "initialized";
  FUN_004956db(param_1);
  if (local_19 != '\0') {
    local_18 = (char *)0x0;
    local_c = &local_18;
    local_10 = "item_version";
    FUN_004cce2d(param_1);
    local_c = (char **)(in_EAX + 4);
    local_10 = "value";
    FUN_0049567d(param_1);
  }
  return;
}



void FUN_004ccf78(void)

{
  undefined auStack_50 [7];
  char local_49;
  char *local_48;
  undefined4 *local_44;
  ushort local_40 [2];
  undefined4 local_3c;
  undefined4 local_38 [7];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c36ed7;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_50;
  ExceptionList = &local_14;
  local_44 = (undefined4 *)&local_49;
  local_48 = "initialized";
  FUN_00495923(DAT_0323f878 ^ (uint)&stack0xffffffa8);
  if (local_49 == '\0') {
    FUN_00417f97();
  }
  else {
    local_3c = 0;
    FUN_00831450(local_40);
    if (3 < local_40[0]) {
      local_44 = &local_3c;
      local_48 = "item_version";
      FUN_004cd077();
    }
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)local_38);
    local_c = 0;
    local_44 = local_38;
    local_48 = "value";
    FUN_004caa0d();
    FUN_0040cafb(local_38);
    FUN_0041c33b(0);
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void FUN_004cd06f(void)

{
  FUN_0041c33b(0);
  return;
}



int FUN_004cd077(void)

{
  undefined4 *in_EAX;
  int iVar1;
  int unaff_EBX;
  
  FUN_0082ace0(*in_EAX);
  FUN_004cd19d(in_EAX[1]);
  FUN_0082af90(*in_EAX);
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + -9;
  }
  return iVar1;
}



void FUN_004cd0d3(void)

{
  char *unaff_EDI;
  char local_21;
  ushort local_20 [2];
  undefined4 local_1c;
  char *local_18;
  char *local_14;
  char *local_10;
  char **local_c;
  
  local_14 = &local_21;
  local_18 = "initialized";
  FUN_00495923();
  if (local_21 == '\0') {
    if (*unaff_EDI != '\0') {
      *unaff_EDI = '\0';
    }
  }
  else {
    local_18 = (char *)0x0;
    FUN_00831450(local_20);
    if (3 < local_20[0]) {
      local_c = &local_18;
      local_10 = "item_version";
      FUN_004cd077();
    }
    local_c = (char **)&local_1c;
    local_10 = "value";
    FUN_004958c4();
    if (*unaff_EDI == '\0') {
      if ((undefined4 *)(unaff_EDI + 4) != (undefined4 *)0x0) {
        *(undefined4 *)(unaff_EDI + 4) = local_1c;
      }
      *unaff_EDI = '\x01';
    }
    else {
      *(undefined4 *)(unaff_EDI + 4) = local_1c;
    }
  }
  return;
}



void FUN_004cd180(undefined4 *param_1)

{
  param_1 = (undefined4 *)*param_1;
  FUN_00495b37(&param_1);
  return;
}



void FUN_004cd19d(undefined4 *param_1)

{
  undefined4 local_8;
  
  FUN_00495bb2(&local_8);
  *param_1 = local_8;
  return;
}



void FUN_004cd1b9(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W14E3BFCC::W2296D43D::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004cd1c0(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WB3204DCB::W3A5478FA::vftable;
    puVar2[1] = 0;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_004cd279(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004cd22b(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined local_1c [8];
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4cd237;
  local_14 = 0;
  puVar1 = (undefined4 *)FUN_004cd1c0(local_1c);
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004cd279(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB3204DCB::W3A5478FA>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004cd2bf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004cd3d6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004cd4e8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004cd5fa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004cd70c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_004cd8f3(undefined4 param_1_00,undefined4 param_1)

{
  basic_string<>(param_1);
  return param_1_00;
}



undefined4 __thiscall FUN_004cd98a(undefined4 param_1_00,byte param_1)

{
  FUN_004cd9ab();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_004ce21c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x4ce234;
  FUN_004ce456();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_004ce23b;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004cd9ab(undefined4 *param_1)

{
  *param_1 = WB3204DCB::WD02580D3::vftable;
  FUN_00502d9b();
  FUN_004ce21c(param_1 + 10);
  FUN_00417fe6();
  FUN_00401829(1,0);
  *param_1 = WDE765622::WE13D998E::vftable;
  return;
}



undefined FUN_004cd9fa(int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined uVar4;
  undefined4 local_fc;
  undefined4 local_f8;
  undefined local_f4 [28];
  undefined local_d8 [56];
  undefined local_a0 [8];
  undefined local_98 [132];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c36eae;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffef8;
  ExceptionList = &local_14;
  FUN_0040c8aa(local_a0);
  local_c = 0;
  uVar3 = basic_string<>(&DAT_00ed3c1c,0xc);
  local_c._0_1_ = 1;
  local_fc = 0x16697b8f;
  local_f8 = 0x2ac5db58;
  uVar3 = FUN_00b94470(&local_fc,uVar3);
  local_c._0_1_ = 2;
  FUN_0040e327(local_98,uVar3,uVar2);
  FUN_00401829(1,0);
  local_c._0_1_ = 0;
  FUN_00401829(1,0);
  uVar3 = FUN_00ba84f0();
  local_c._0_1_ = 3;
  FUN_0040e327(local_98,uVar3);
  local_c._0_1_ = 0;
  FUN_00401829(1,0);
  uVar3 = basic_string<>(&DAT_00ed4a4c,5);
  local_c._0_1_ = 4;
  local_fc = 0x84cf35a0;
  local_f8 = 0x3eb3969d;
  uVar3 = FUN_00b94470(&local_fc,uVar3);
  local_c._0_1_ = 5;
  FUN_0040e327(local_98,uVar3);
  uVar4 = 0;
  FUN_00401829(1,0);
  local_c._0_1_ = 0;
  FUN_00401829(1,0);
  uVar3 = FUN_0040c93e();
  local_c._0_1_ = 6;
  basic_string<>(uVar3);
  param_1 = param_1 + 4;
  local_c._0_1_ = 7;
  uVar3 = FUN_004155ac(local_f4,param_1,local_d8);
  local_c._0_1_ = 8;
  FUN_0044197d(uVar3);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  local_c = (uint)local_c._1_3_ << 8;
  FUN_00401829(1,0);
  cVar1 = FUN_0041506b(param_1);
  if (cVar1 == '\0') {
    FUN_00828050(param_1,0);
  }
  cVar1 = FUN_0041506b(param_1);
  if (cVar1 == '\0') {
LAB_004cdc38:
    uVar3 = 0x40cb1b41;
  }
  else {
    cVar1 = FUN_00441954(param_1);
    if (cVar1 == '\0') goto LAB_004cdc38;
    uVar4 = 1;
    cVar1 = FUN_00bac690();
    if (cVar1 != '\0') goto LAB_004cdc0d;
    uVar3 = 0x131f5b67;
    uVar4 = 1;
  }
  FUN_00b940e0(uVar3);
LAB_004cdc0d:
  local_c = 0xffffffff;
  FUN_004085a7();
  ExceptionList = local_14;
  return uVar4;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __thiscall FUN_004cdc44(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  int local_108 [2];
  int aiStack_100 [33];
  void *local_7c;
  undefined4 local_74;
  undefined **local_70 [2];
  undefined local_67 [47];
  char local_38;
  undefined4 local_34;
  int local_30;
  undefined4 local_2c;
  char local_25;
  undefined local_24 [4];
  undefined4 *****local_20 [5];
  uint local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_70;
  local_70[0] = (undefined **)0x8c;
  local_74 = 0x4cdc65;
  local_34 = param_2;
  FUN_0043d406(param_1_00 + 0x20);
  local_74 = 0;
  FUN_00b93100(param_2);
  local_74._0_1_ = 1;
  uVar2 = FUN_004ce11d(param_1_00 + 0x28,param_1);
  FUN_0046f638(uVar2);
  local_74._0_1_ = 0;
  FUN_005e72d0();
  local_c = 7;
  FUN_0040180b(0);
  local_74._0_1_ = 2;
  local_25 = FUN_004cd9fa(param_1_00,local_24,param_1);
  if (local_25 == '\0') {
    FUN_00b940e0(0x390c7a3c);
  }
  else {
    FUN_00494d84(local_108);
    local_74._0_1_ = 3;
    iVar1 = *(int *)(local_108[0] + 4);
    *(undefined4 *)((int)aiStack_100 + iVar1 + 4) = 0;
    FUN_00417a55(*(undefined4 *)((int)aiStack_100 + iVar1),0);
    if (local_c < 8) {
      local_20[0] = local_20;
    }
    FUN_00494e0b(local_20[0]);
    local_25 = *(int *)((int)aiStack_100 + *(int *)(local_108[0] + 4)) == 0;
    if ((bool)local_25) {
      local_25 = 0;
      local_74._0_1_ = 4;
      FUN_0082e0c0(local_108,0);
      local_70[0] = boost::archive::xml_oarchive::vftable;
      local_74._0_1_ = 5;
      if (*(uint *)(param_1_00 + 0x7c) < 0x10) {
        local_30 = param_1_00 + 0x68;
      }
      else {
        local_30 = *(int *)(param_1_00 + 0x68);
      }
      local_2c = local_34;
      FUN_004cc671(local_67);
      local_74 = CONCAT31(local_74._1_3_,4);
      local_25 = '\x01';
      local_70[0] = boost::archive::xml_oarchive::vftable;
      FUN_0043e647();
      local_74._0_1_ = 3;
      local_74._1_3_ = 0;
    }
    else {
      FUN_00b940e0(0x575fd2d4);
    }
    FUN_00494ded();
    local_74._0_1_ = 2;
    FUN_0043e360();
  }
  FUN_00401829(1,0);
  local_74 = 0xffffffff;
  if (local_38 != '\0') {
    FUN_00401477();
  }
  ExceptionList = local_7c;
  ___security_check_cookie_4();
  return;
}



undefined4 Catch_All_004cde1a(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 3;
  return 0x4cdd5d;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __thiscall FUN_004cde27(int param_1_00,undefined4 param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  undefined4 *puVar5;
  int *piVar6;
  undefined local_134 [9];
  undefined local_12b [51];
  int local_f8 [2];
  int aiStack_f0 [34];
  void *pvStack_68;
  undefined4 local_60;
  int local_5c [2];
  char local_54;
  undefined **local_50;
  undefined4 local_4c;
  int local_48;
  undefined4 local_44;
  undefined4 local_40;
  int local_3c;
  int *local_38;
  undefined4 *local_34;
  int local_30;
  undefined ***local_2c;
  char local_25;
  undefined local_24 [24];
  undefined4 local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_5c;
  local_60 = 0x4cde48;
  local_40 = param_1;
  local_34 = param_2;
  local_5c[0] = param_1_00;
  FUN_0043d406(param_1_00 + 0x20);
  local_60 = 0;
  piVar6 = &local_48;
  local_38 = (int *)(param_1_00 + 0x28);
  FUN_004ce413(param_2);
  local_2c = *(undefined ****)(param_1_00 + 0x40);
  local_30 = *(int *)(param_1_00 + 0x28);
  cVar3 = FUN_006b8eca();
  if (cVar3 == '\0') {
    cVar3 = FUN_004316c1(local_34,local_44 + 0xc);
    if (cVar3 == '\0') goto LAB_004cdebe;
  }
  local_2c = (undefined ***)local_38[6];
  local_30 = *local_38;
  piVar6 = &local_30;
LAB_004cdebe:
  local_3c = *piVar6;
  local_2c = (undefined ***)local_38[6];
  local_30 = *local_38;
  local_38 = (int *)piVar6[1];
  cVar3 = FUN_006b8eca();
  if (cVar3 == '\0') {
    iVar4 = FUN_006badde();
    puVar5 = (undefined4 *)FUN_00b93190(*(undefined4 *)(iVar4 + 0x1c),&local_34);
    uVar1 = *puVar5;
    *puVar5 = 0;
    FUN_0040c727(uVar1);
    if (local_34 != (undefined4 *)0x0) {
      (**(code **)*local_34)(1);
    }
    local_60 = 0xffffffff;
    if (local_54 != '\0') {
      FUN_00401477();
    }
  }
  else {
    local_c = 7;
    FUN_0040180b(0);
    iVar4 = local_5c[0];
    local_60._0_1_ = 1;
    local_25 = FUN_004cd9fa(local_5c[0],local_24,local_34);
    if (local_25 == '\0') {
      FUN_00b940e0(0x770f3c5b);
    }
    else {
      FUN_0043e743(local_f8);
      local_60._0_1_ = 2;
      iVar2 = *(int *)(local_f8[0] + 4);
      *(undefined4 *)((int)aiStack_f0 + iVar2 + 4) = 0;
      FUN_00417a55(*(undefined4 *)((int)aiStack_f0 + iVar2),0);
      FUN_0043e7ac();
      local_25 = *(int *)((int)aiStack_f0 + *(int *)(local_f8[0] + 4)) == 0;
      if ((bool)local_25) {
        FUN_0043da9b(local_134,local_f8);
        local_25 = 0;
        local_50 = common::WB943A9F0::vftable;
        local_4c = 0;
        local_48 = 0;
        local_44 = CONCAT22(local_44._2_2_,0xcc);
        local_60 = CONCAT31(local_60._1_3_,5);
        if (*(uint *)(iVar4 + 0x7c) < 0x10) {
          local_30 = iVar4 + 0x68;
        }
        else {
          local_30 = *(int *)(iVar4 + 0x68);
        }
        local_2c = &local_50;
        FUN_0049528a(local_12b);
        puVar5 = (undefined4 *)FUN_00b93190(&local_50,&local_38);
        uVar1 = *puVar5;
        *puVar5 = 0;
        FUN_0040c727(uVar1);
        if (local_38 != (int *)0x0) {
          (**(code **)*local_38)(1);
        }
        local_25 = 1;
        local_60 = CONCAT31(local_60._1_3_,4);
        FUN_00b92d80();
        local_60 = 3;
        FUN_004ce07a();
        return;
      }
      FUN_00b940e0(0x81fcb3af);
      local_60._0_1_ = 1;
      FUN_0043e1a3();
    }
    FUN_00401829(1,0);
    local_60 = 0xffffffff;
    if (local_54 != '\0') {
      FUN_00401477();
    }
  }
  ExceptionList = pvStack_68;
  ___security_check_cookie_4();
  return;
}



undefined * Catch_All_004ce06b(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 3;
  return &DAT_004ce078;
}



void FUN_004ce07a(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -4) = 2;
  FUN_0043dad2(unaff_EBP + -0xd8);
  *(undefined *)(unaff_EBP + -4) = 1;
  FUN_0043e1a3();
  FUN_00401829(1,unaff_EBX);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  if (*(char *)(unaff_EBP + 8) != (char)unaff_EBX) {
    FUN_00401477();
  }
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_004ce0d7(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined4 *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_14[0] = (undefined4 *)0x0;
  local_8 = 0;
  cVar1 = (**(code **)(*param_1_00 + 0xc))(local_14,param_1);
  if (cVar1 != '\0') {
    cVar1 = local_14[0] != (undefined4 *)0x0;
  }
  local_8 = 0xffffffff;
  if (local_14[0] != (undefined4 *)0x0) {
    (**(code **)*local_14[0])(1);
  }
  return cVar1;
}



int FUN_004ce11d(int param_1,
                basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int local_50;
  undefined4 local_48 [3];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_3c [28];
  undefined4 local_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1d572;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_14;
  FUN_004ce413(param_2);
  local_48[0] = *(undefined4 *)(param_1 + 0x18);
  cVar1 = FUN_006b8eca(uVar2);
  if (cVar1 == '\0') {
    cVar1 = FUN_004316c1(param_2,local_50 + 0xc);
    if (cVar1 == '\0') {
      iVar3 = FUN_006badde();
      ExceptionList = local_14;
      return iVar3 + 0x1c;
    }
  }
  local_48[0] = 0;
  local_c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_3c,param_2);
  local_20 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_48);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004ce21c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x4ce234;
  FUN_004ce456();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_004ce23b;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004ce244(void)

{
  FUN_005e72d0();
  FUN_004017b2(1,0);
  return;
}



undefined4 * FUN_004ce272(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 != '\0') {
        cVar1 = FUN_004316c1(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_004ce3f1;
        uVar4 = 0;
        goto LAB_004ce294;
      }
      cVar1 = FUN_004316c1(param_2,param_4 + 0xc);
      if (cVar1 == '\0') {
LAB_004ce381:
        cVar1 = FUN_004316c1(param_4 + 0xc,param_2);
        if (cVar1 == '\0') {
LAB_004ce3f1:
          puVar3 = (undefined4 *)FUN_004ce48a(in_EAX,param_2);
          *param_1 = *puVar3;
          param_1[1] = puVar3[1];
          return param_1;
        }
        FUN_004ce757();
        cVar1 = FUN_006b8eca();
        if ((cVar1 == '\0') && (cVar1 = FUN_004316c1(param_2,param_4 + 0xc), cVar1 == '\0'))
        goto LAB_004ce3f1;
        if (*(char *)(*(int *)(param_4 + 8) + 0x31) == '\0') {
          uVar4 = 1;
          goto LAB_004ce294;
        }
      }
      else {
        iVar2 = FUN_007ab333();
        cVar1 = FUN_004316c1(*(int *)(iVar2 + 4) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_004ce381;
        if (*(char *)(*(int *)(param_4 + 8) + 0x31) == '\0') {
          uVar4 = 1;
          goto LAB_004ce294;
        }
      }
      uVar4 = 0;
      goto LAB_004ce294;
    }
    cVar1 = FUN_004316c1(param_2,param_4 + 0xc);
    if (cVar1 == '\0') goto LAB_004ce3f1;
  }
  uVar4 = 1;
LAB_004ce294:
  FUN_004ce60a(param_1,uVar4,param_2);
  return param_1;
}



void FUN_004ce413(undefined4 param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  undefined4 *unaff_EDI;
  undefined4 *local_8;
  
  puVar1 = (undefined4 *)((undefined4 *)unaff_EDI[6])[1];
  local_8 = (undefined4 *)unaff_EDI[6];
  while (puVar3 = puVar1, *(char *)((int)puVar3 + 0x31) == '\0') {
    cVar2 = FUN_004316c1(puVar3 + 3,param_1);
    if (cVar2 == '\0') {
      puVar1 = (undefined4 *)*puVar3;
      local_8 = puVar3;
    }
    else {
      puVar1 = (undefined4 *)puVar3[2];
    }
  }
  unaff_EBX[1] = local_8;
  *unaff_EBX = *unaff_EDI;
  return;
}



void FUN_004ce456(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_004ce554(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_004ce48a(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  puVar2 = (undefined4 *)local_8[1];
  local_c = CONCAT31(local_c._1_3_,1);
  while (*(char *)((int)puVar2 + 0x31) == '\0') {
    local_8 = puVar2;
    cVar1 = FUN_004316c1(param_2,puVar2 + 3);
    local_c = CONCAT31(local_c._1_3_,cVar1);
    if (cVar1 == '\0') {
      puVar2 = (undefined4 *)puVar2[2];
    }
    else {
      puVar2 = (undefined4 *)*puVar2;
    }
  }
  local_14 = *param_1;
  local_10 = local_8;
  if ((char)local_c != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_004ce4fc;
    }
    FUN_007ab333();
  }
  puVar2 = local_10;
  cVar1 = FUN_004316c1(local_10 + 3,param_2);
  uVar3 = local_c;
  if (cVar1 == '\0') {
    *unaff_EBX = local_14;
    unaff_EBX[1] = puVar2;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_004ce4fc:
  puVar2 = (undefined4 *)FUN_004ce60a(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void FUN_004ce554(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_004ceb21(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_004ce757();
    FUN_004ce7a4();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_004ce60a(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x4ce616;
  if (0x71c71c5 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_004ceaa4(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_004ce72f;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_004ce72f;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_004ce72f:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xc) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x30) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xc) == '\0') {
LAB_004ce6eb:
        *(undefined *)(piVar1 + 0xc) = 1;
        *(undefined *)(piVar7 + 0xc) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x30) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_004cea3a(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x30) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x30) = 0;
        FUN_007ab394(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xc) == '\0') goto LAB_004ce6eb;
    if (piVar8 == (int *)*piVar1) {
      FUN_007ab394(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x30) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x30) = 0;
    FUN_004cea3a(unaff_ESI);
  } while( true );
}



void FUN_004ce757(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x31) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x31) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x31) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x31) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x004ce88f)
// WARNING: Removing unreachable block (ram,0x004ce89f)
// WARNING: Removing unreachable block (ram,0x004ce8a8)
// WARNING: Removing unreachable block (ram,0x004ce8ab)
// WARNING: Removing unreachable block (ram,0x004ce89b)
// WARNING: Removing unreachable block (ram,0x004ce8b8)
// WARNING: Removing unreachable block (ram,0x004ce8c8)
// WARNING: Removing unreachable block (ram,0x004ce8d3)
// WARNING: Removing unreachable block (ram,0x004ce8cf)
// WARNING: Removing unreachable block (ram,0x004ce8c3)
// WARNING: Removing unreachable block (ram,0x004ce8d6)

void FUN_004ce7a4(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x4ce7b0;
  if (*(char *)((int)param_4 + 0x31) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_004ce757();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x31) == '\0') {
    if (*(char *)(param_4[2] + 0x31) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x31) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x31) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x31) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x31) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x31) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0xc) != '\x01') {
LAB_004cea07:
    FUN_004ce244(param_4 + 3);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_004ce9bb:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xc) != '\x01'))
  goto LAB_004cea03;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0xc) == '\0') {
      *(undefined *)(ppiVar4 + 0xc) = 1;
      *(undefined *)(ppiVar3 + 0xc) = 0;
      FUN_004cea3a(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x31) == '\0') {
      if ((*(char *)(*ppiVar4 + 0xc) != '\x01') || (*(char *)(ppiVar4[2] + 0xc) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0xc) == '\x01') {
          *(undefined *)(*ppiVar4 + 0xc) = 1;
          *(undefined *)(ppiVar4 + 0xc) = 0;
          FUN_007ab394(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0xc) = *(undefined *)(ppiVar3 + 0xc);
        *(undefined *)(ppiVar3 + 0xc) = 1;
        *(undefined *)(ppiVar4[2] + 0xc) = 1;
        FUN_004cea3a(param_1);
        goto LAB_004cea03;
      }
LAB_004ce9b2:
      *(undefined *)(ppiVar4 + 0xc) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0xc) == '\0') {
      *(undefined *)(ppiVar4 + 0xc) = 1;
      *(undefined *)(ppiVar3 + 0xc) = 0;
      FUN_007ab394(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x31) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0xc) == '\x01') && (*(char *)(*ppiVar4 + 0xc) == '\x01'))
      goto LAB_004ce9b2;
      if (*(char *)(*ppiVar4 + 0xc) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0xc) = 1;
        *(undefined *)(ppiVar4 + 0xc) = 0;
        FUN_004cea3a(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0xc) = *(undefined *)(ppiVar3 + 0xc);
      *(undefined *)(ppiVar3 + 0xc) = 1;
      *(undefined *)(*ppiVar4 + 0xc) = 1;
      FUN_007ab394(param_1);
LAB_004cea03:
      *(undefined *)(ppiVar5 + 0xc) = 1;
      goto LAB_004cea07;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_004ce9bb;
}



void __thiscall FUN_004cea3a(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x31) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall
FUN_004ceaa4(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x34);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (puVar1 + 3),param_1_00);
    puVar1[10] = *(undefined4 *)(param_1_00 + 0x1c);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1_00 + 0x20);
  }
  return 0;
}



void Catch_All_004ceb0e(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void FUN_004ceb21(int param_1)

{
  if (*(char *)(param_1 + 0x31) == '\0') {
    FUN_004ceb21(*(undefined4 *)(param_1 + 8));
    FUN_004ce244(param_1 + 0xc);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



undefined4 FUN_004ceb5c(void)

{
  return 0xa0eaa9ab;
}



undefined4 __thiscall FUN_004ceba5(undefined4 param_1_00,byte param_1)

{
  FUN_004cebc1();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_004cebc1(undefined4 *param_1)

{
  *param_1 = WB3204DCB::WC8FD347F::vftable;
  FUN_00502d9b();
  FUN_00417fe6();
  FUN_00401829(1,0);
  *param_1 = WDE765622::WE13D998E::vftable;
  return;
}



undefined4 FUN_004cebf0(void)

{
  return 0xa7aaebb6;
}



undefined4 FUN_004cebf6(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e6d7a0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e6d9a8,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00e6dbb0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e6ddb8,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00e6dfc0,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e6e1c8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e6e3d0,0x166,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cec76(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e6e538,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e6e740,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00e6e948,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e6eb50,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00e6ed58,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e6ef60,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e6f168,0x1e3,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cecf6(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e6f368,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e6f570,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e6f778,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e6f980,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e6fb88,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e6fd90,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e6ff98,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00e701a0,0xa5,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004ced83(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e70248,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e70450,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00e70658,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e70860,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00e70a68,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e70c70,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e70e78,0x1a1,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cee03(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00e71020,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00e71228,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00e71430,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e71638,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00e71840,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e71a48,0x11d,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cee76(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e71b68,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e71d70,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e71f78,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e72180,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e72388,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e72590,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e72798,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e729a0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e72ba8,0x65,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cef11(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e72c10,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e72e18,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e73020,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e73228,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e73430,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e73638,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e73840,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00e73a48,0x1dc,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cef9e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e73c28,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e73e30,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e74038,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e74240,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e74448,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e74650,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e74858,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00e74a60,0xef,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf02b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e74b50,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e74d58,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e74f60,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e75168,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e75370,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e75578,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e75780,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00e75988,0x4c,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf0b5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e759d8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e75be0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e75de8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e75ff0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e761f8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e76400,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e76608,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00e76810,0x150,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf142(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e76968,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e76b70,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00e76d78,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e76f80,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00e77188,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e77390,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e77598,0x16a,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf1c2(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e77708,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e77910,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e77b18,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e77d20,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e77f28,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e78130,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e78338,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00e78540,0x14c,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf24f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e78690,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e78898,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e78aa0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e78ca8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e78eb0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e790b8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e792c0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e794c8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e796cc,5,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf2ea(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e796d8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e798e0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e79ae8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e79cf0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e79ef8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e7a100,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e7a308,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e7a510,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e7a718,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e7a91c,0x34,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf392(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e7a958,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e7ab60,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e7ad68,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e7af70,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e7b178,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e7b380,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e7b588,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e7b790,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e7b998,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e7bba0,0xc1,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf43d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e7bc68,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e7be70,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00e7c078,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e7c280,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e7c488,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00e7c690,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e7c898,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00e7caa0,0x200,param_2), cVar1 != '\0' &&
      ((((cVar1 = (*param_1)(&DAT_00e7cca8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e7ceb0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e7d0b8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e7d2c0,0x115,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf50a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e7d3d8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e7d5e0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00e7d7e8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e7d9f0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e7dbf8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00e7de00,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e7e008,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00e7e210,0x200,param_2), cVar1 != '\0')))) &&
     (((cVar1 = (*param_1)(&DAT_00e7e418,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e7e620,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00e7e828,0x67,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf5c3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e7e890,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e7ea98,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e7eca0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e7eea8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e7f0b0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e7f2b8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e7f4c0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e7f6c8,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e7f8d0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e7fad8,0xa2,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf66e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e7fb80,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e7fd88,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e7ff90,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e80198,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e803a0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e805a8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e807b0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e809b8,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e80bc0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e80dc8,0x80,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf719(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e80e50,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e81058,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00e81260,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e81468,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e81670,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00e81878,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e81a80,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00e81c88,0x200,param_2), cVar1 != '\0')))) &&
     (((cVar1 = (*param_1)(&DAT_00e81e90,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e82098,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00e822a0,0x6c,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf7d2(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e82310,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e82518,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e82720,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e82928,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e82b30,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e82d38,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e82f40,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e83148,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e83350,0x1ea,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf870(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e83540,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e83748,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e83950,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e83b58,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e83d60,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e83f68,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e84170,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e84378,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e84580,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e84788,0xfc,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf91b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e84888,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e84a90,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e84c98,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e84ea0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e850a8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e852b0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e854b8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e856c0,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e858c8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e85ad0,0x47,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cf9c3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e85b18,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e85d20,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e85f28,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e86130,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e86338,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e86540,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e86748,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e86950,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e86b54,0x34,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cfa5e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e86b90,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e86d98,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e86fa0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e871a8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e873b0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e875b8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e877c0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e879c8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e87bd0,0x4b,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cfaf9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e87c38,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e87e40,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e88048,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e88250,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e88458,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e88660,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e88868,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e88a70,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e88c78,0x6f,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cfb94(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e88ce8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e88ef0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e890f8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e89300,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e89508,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e89710,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e89918,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e89b20,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e89d28,0x176,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cfc32(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e89ea0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e8a0a8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e8a2b0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e8a4b8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e8a6c0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e8a8c8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e8aad0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e8acd8,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e8aee0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e8b0e8,0xf1,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cfcdd(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e8b1e0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e8b3e8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e8b5f0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e8b7f8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e8ba00,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e8bc08,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e8be10,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e8c018,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e8c220,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e0a32c,0x28,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cfd85(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e8c428,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e8c630,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e8c838,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e8ca40,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e8cc48,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e8ce50,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e8d058,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e8d260,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e8d468,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e8d670,0x8c,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cfe30(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e8d700,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e8d908,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e8db10,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e8dd18,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e8df20,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e8e128,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e8e330,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e8e538,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e1da64,0x20,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cfecb(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e8e740,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e8e948,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e8eb50,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e8ed58,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e8ef60,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e8f168,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e8f370,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00e8f578,0x1f1,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cff58(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e8f770,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e8f978,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e8fb80,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e8fd88,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e8ff90,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e90198,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e903a0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e905a8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e907b0,0x18b,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004cfff6(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e90960,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e90b68,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e90d70,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e90f78,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e91180,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e91388,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e91590,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e91798,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e919a0,0xfc,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0094(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e91aa0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e91ca8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e91eb0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e920b8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e922c0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e924c8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e926d0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e928d8,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e92ae0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e92ce8,0x1f5,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d013f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e92ee0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e930e8,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00e932f0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e934f8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e93700,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00e93908,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e93b10,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00e93d18,0x200,param_2), cVar1 != '\0')))) &&
     (((cVar1 = (*param_1)(&DAT_00e93f20,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e94128,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00e94330,0xcd,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d01fb(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e94400,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e94608,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e94810,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e94a18,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e94c20,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e94e28,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e95030,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e95238,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e95440,0x50,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0296(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e95498,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e956a0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e958a8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e95ab0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e95cb8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e95ec0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e960c8,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00e962d0,0x54,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0320(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e96328,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e96530,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e96738,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e96940,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e96b48,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e96d50,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e96f58,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00e97160,0x127,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d03ad(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e97288,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e97490,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e97698,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e978a0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e97aa8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e97cb0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e97eb8,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00e980c0,0x10e,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d043a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e981d0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e983d8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e985e0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e987e8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e989f0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e98bf8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e98e00,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e99008,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e99210,0x1d0,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d04d8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e993e8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e995f0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e997f8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e99a00,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e99c08,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e99e10,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e9a018,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e9a220,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e9a428,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e9a62c,4,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0580(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e9a638,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e9a840,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e9aa48,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e9ac50,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e9ae58,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e9b060,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e9b268,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00e9b470,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e9b678,0x18b,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d061e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e9b808,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e9ba10,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e9bc18,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e9be20,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e9c028,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e9c230,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e9c438,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00e9c640,0x139,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d06ab(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e9c780,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e9c988,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00e9cb90,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e9cd98,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00e9cfa0,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e9d1a8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e9d3b0,0x17a,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d072b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e9d530,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e9d738,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00e9d940,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e9db48,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00e9dd50,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e9df58,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e9e160,0x110,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d07ab(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e9e278,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e9e480,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00e9e688,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e9e890,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00e9ea98,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00e9eca0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e9eea8,0x138,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d082b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e9efe8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e9f1f0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e9f3f8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e9f600,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e9f808,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e9fa10,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e9fc18,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00e9fe20,0x122,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d08b8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e9ff48,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00ea0150,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ea0358,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ea0560,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00ea0768,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ea0970,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ea0b78,0x1fd,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0938(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ea0d78,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ea0f80,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ea1188,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea1390,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ea1598,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ea17a0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea19a8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ea1bb0,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ea1db8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ea1fc0,0x87,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d09e3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ea2048,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ea2250,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ea2458,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea2660,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ea2868,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ea2a70,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea2c78,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ea2e80,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ea3088,0xd5,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0a81(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ea3160,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ea3368,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ea3570,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea3778,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ea3980,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ea3b88,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea3d90,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00ea3f98,0x1fa,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0b0e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ea4198,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ea43a0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ea45a8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea47b0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ea49b8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ea4bc0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea4dc8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ea4fd0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ea51d8,0x1bc,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0bac(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00ea5398,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00ea55a0,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ea57a8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ea59b0,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00ea5bb8,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ea5dc0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ea5fc8,0x1ed,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0c2c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ea61b8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ea63c0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ea65c8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea67d0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ea69d8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ea6be0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea6de8,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00ea6ff0,0x157,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0cb9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ea7148,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ea7350,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ea7558,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea7760,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ea7968,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ea7b70,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea7d78,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ea7f80,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ea8188,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ea8390,0x139,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0d64(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ea84d0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ea86d8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ea88e0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea8ae8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ea8cf0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ea8ef8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea9100,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00ea9308,0x19c,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0df1(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ea94a8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ea96b0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ea98b8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ea9ac0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ea9cc8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ea9ed0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eaa0d8,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00eaa2e0,0x1be,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0e7e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eaa4a0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eaa6a8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eaa8b0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eaaab8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eaacc0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eaaec8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eab0d0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00eab2d8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00eab4e0,0x1a2,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0f1c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eab688,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eab890,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eaba98,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eabca0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eabea8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eac0b0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eac2b8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00eac4c0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00eac6c8,0x1ca,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d0fba(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eac898,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eacaa0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eacca8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eaceb0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ead0b8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ead2c0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ead4c8,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00ead6cc,0x27,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1044(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ead718,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ead920,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eadb28,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eadd30,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eadf38,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eae140,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eae348,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00eae550,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00eae758,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00eae960,0x15c,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d10ef(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eaeac0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eaecc8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eaeed0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eaf0d8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eaf2e0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eaf4e8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eaf6f0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00eaf8f8,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00eafb00,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00eafd08,0xad,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d119a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eafdb8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eaffc0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eb01c8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb03d0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eb05d8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eb07e0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb09e8,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00eb0bf0,0x1ca,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1227(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eb0dc0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eb0fc8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eb11d0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb13d8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eb15e0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eb17e8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb19f0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00eb1bf8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00eb1dfc,0x27,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d12c2(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eb1e28,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eb2030,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eb2238,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb2440,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eb2648,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eb2850,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb2a58,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00eb2c5c,0x1e,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d134c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eb2c80,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eb2e88,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eb3090,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb3298,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eb34a0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eb36a8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb38b0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00eb3ab8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00eb3cc0,0xba,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d13ea(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eb3d80,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eb3f88,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eb4190,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb4398,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eb45a0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eb47a8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb49b0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00eb4bb8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00eb4dc0,0xd7,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1488(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eb4e98,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eb50a0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eb52a8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb54b0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eb56b8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eb58c0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb5ac8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00eb5cd0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00eb5ed8,0x4b,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1523(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eb5f28,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eb6130,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eb6338,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb6540,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eb6748,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eb6950,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb6b58,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00eb6d60,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00eb6f68,0x70,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d15be(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eb6fe0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eb71e8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eb73f0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb75f8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eb7800,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eb7a08,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb7c10,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00eb7e18,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00eb8020,0x8b,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d165c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eb80b0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eb82b8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eb84c0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb86c8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eb88d0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eb8ad8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb8ce0,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00eb8ee8,0x81,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d16e9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eb8f70,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eb9178,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eb9380,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb9588,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eb9790,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eb9998,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eb9ba0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00eb9da8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00eb9fb0,0xee,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1787(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00eba0a0,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00eba2a8,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00eba4b0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00eba6b8,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00eba8c0,0xbe,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d17ed(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eba980,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ebab88,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ebad90,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ebaf98,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ebb1a0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ebb3a8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ebb5b0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ebb7b8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e6f34c,0x1b,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1888(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ebb9c0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ebbbc8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ebbdd0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ebbfd8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ebc1e0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ebc3e8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ebc5f0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ebc7f8,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ebca00,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ebcc08,0xfe,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1933(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ebcd08,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ebcf10,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ebd118,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ebd320,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ebd528,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ebd730,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ebd938,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ebdb40,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ebdd48,0x1a5,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d19d1(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00ebdef0,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00ebe0f8,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00ebe300,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ebe508,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ebe710,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ebe918,0x1e9,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1a44(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ebeb08,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ebed10,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ebef18,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ebf120,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ebf328,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ebf530,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ebf738,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ebf940,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e87c1c,0x1a,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1adf(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ebfb48,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ebfd50,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ebff58,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec0160,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ec0368,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ec0570,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec0778,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ec0980,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ec0b88,0x3f,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1b7a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ec0bc8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ec0dd0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ec0fd8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec11e0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ec13e8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ec15f0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec17f8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ec1a00,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ec1c08,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e9093c,0x20,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1c22(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ec1e10,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ec2018,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ec2220,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec2428,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ec2630,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ec2838,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec2a40,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ec2c48,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ec2e50,0x1cb,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1cc0(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00ec3058,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00ec3260,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00ec3468,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ec3670,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ec3878,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ec3a80,0x17d,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1d33(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ec3c00,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ec3e08,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ec4010,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec4218,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ec4420,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ec4628,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec4830,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00ec4a38,0x6c,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1dbd(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ec4aa8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ec4cb0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ec4eb8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec50c0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ec52c8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ec54d0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec56d8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ec58e0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ec5ae8,0x93,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1e5b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ec5bb8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ec5dc0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ec5fc8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec61d0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ec63d8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ec65e0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec67e8,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00ec69f0,0x15d,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1ee8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ec6b50,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ec6d58,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ec6f60,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec7168,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ec7370,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ec7578,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec7780,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ec7988,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ec7b90,0x18e,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d1f86(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ec7d20,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ec7f28,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ec8130,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec8338,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ec8540,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ec8748,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec8950,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ec8b58,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ec8d5c,0x16,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2021(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ec8d78,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ec8f80,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ec9188,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec9390,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ec9598,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ec97a0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ec99a8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ec9bb0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ec9db8,0x148,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d20bf(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ec9f08,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eca110,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eca318,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eca520,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eca728,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eca930,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ecab38,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ecad40,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ecaf48,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ecb14c,0x25,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2167(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ecb178,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ecb380,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ecb588,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ecb790,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ecb998,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ecbba0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ecbda8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ecbfb0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ecc1b8,0x80,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2205(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ecc240,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ecc448,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ecc650,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ecc858,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ecca60,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eccc68,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ecce70,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ecd078,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ecd280,0xe1,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d22a3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00ecd368,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00ecd570,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ecd778,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ecd980,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00ecdb88,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ecdd90,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ecdf98,0x19f,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2323(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00ece138,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00ece340,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00ece548,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ece750,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00ece958,0x1dd,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2389(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00eceb38,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00eced40,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ecef48,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ecf150,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00ecf358,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ecf560,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ecf768,0x14a,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2409(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00ecf8b8,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00ecfac0,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00ecfcc8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ecfed0,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ed00d8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ed02e0,0x1e9,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d247c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00ed04d0,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00ed06d8,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00ed08e0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ed0ae8,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ed0cf0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ed0ef8,0x151,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d24ef(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00ed1050,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00ed1258,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00ed1460,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ed1668,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ed1870,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ed1a78,0x17e,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2562(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ed1bf8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ed1e00,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ed2008,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ed2210,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ed2418,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ed2620,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ed2828,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ed2a30,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ed2c38,0x146,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2600(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ed2d80,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ed2f88,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ed3190,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ed3398,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ed35a0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ed37a8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ed39b0,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00ed3bb8,99,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d268a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00ed3c38,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00ed3e40,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ed4048,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ed4250,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00ed4458,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ed4660,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ed4868,0x1e3,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d270a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00ed4a58,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00ed4c60,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00ed4e68,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ed5070,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ed5278,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ed547c,0x24,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d277a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ed54a8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ed56b0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ed58b8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ed5ac0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ed5cc8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ed5ed0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ed60d8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ed62e0,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ed64e8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e9b804,2,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2822(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ed66f0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ed68f8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ed6b00,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ed6d08,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ed6f10,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ed7118,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ed7320,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ed7528,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ed7730,0xd9,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d28c0(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ed7810,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ed7a18,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ed7c20,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ed7e28,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ed8030,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ed8238,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ed8440,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ed8648,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ed8850,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ed8a58,0x170,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d296b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ed8bd0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ed8dd8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ed8fe0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ed91e8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ed93f0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ed95f8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ed9800,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00ed9a08,0x10a,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d29f8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00ed9b18,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00ed9d20,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ed9f28,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00eda130,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00eda338,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00eda540,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00eda748,0x1d6,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2a78(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00eda920,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00edab28,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00edad30,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00edaf38,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00edb140,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00edb348,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00edb550,0x16e,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2af8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00edb6c0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00edb8c8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00edbad0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00edbcd8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00edbee0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00edc0e8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00edc2f0,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00edc4f8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00edc6fc,0x26,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2b93(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00edc728,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00edc930,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00edcb38,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00edcd40,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00edcf48,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00edd150,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00edd358,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00edd560,0x44,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2c1d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00edd5a8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00edd7b0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00edd9b8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eddbc0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00edddc8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eddfd0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ede1d8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ede3e0,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ede5e8,0x159,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2cbb(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ede748,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ede950,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00edeb58,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eded60,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00edef68,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00edf170,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00edf378,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00edf580,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00edf788,0x75,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2d56(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00edf800,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00edfa08,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00edfc10,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00edfe18,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ee0020,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ee0228,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ee0430,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ee0638,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ee0840,0x185,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2df4(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00ee09c8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00ee0bd0,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ee0dd8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ee0fe0,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00ee11e8,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ee13f0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ee15f8,0x148,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2e74(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00ee1748,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00ee1950,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ee1b58,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ee1d60,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00ee1f68,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ee2170,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ee2378,0x4b,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2ef1(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ee23c8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ee25d0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ee27d8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ee29e0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ee2be8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ee2df0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ee2ff8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ee3200,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ee3408,0x6e,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d2f8c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ee3478,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ee3680,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ee3888,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ee3a90,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ee3c98,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ee3ea0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ee40a8,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00ee42b0,0x8a,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3019(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ee4340,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ee4548,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ee4750,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ee4958,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ee4b60,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ee4d68,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ee4f70,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ee5178,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ee5380,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ee5588,0x16e,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d30c4(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ee56f8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ee5900,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ee5b08,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ee5d10,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ee5f18,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ee6120,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ee6328,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ee6530,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ee6738,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ee6940,0x115,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d316f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ee6a58,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ee6c60,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ee6e68,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ee7070,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ee7278,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ee7480,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ee7688,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ee7890,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ee7a98,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ee7ca0,0x12a,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d321a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ee7dd0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ee7fd8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ee81e0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ee83e8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ee85f0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ee87f8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ee8a00,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ee8c08,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ee8e10,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ee9018,0xbd,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d32c5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00ee90d8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00ee92e0,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ee94e8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ee96f0,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00ee98f8,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ee9b00,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ee9d08,0xd9,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3345(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00ee9de8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00ee9ff0,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00eea1f8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00eea400,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00eea608,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00eea810,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00eeaa18,0x10f,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d33c5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00eeab28,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00eead30,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00eeaf38,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00eeb140,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00eeb348,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00eeb550,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00eeb758,0x7f,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3442(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00eeb7d8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00eeb9e0,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00eebbe8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00eebdf0,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00eebff8,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00eec200,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00eec408,0x6c,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d34bf(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eec478,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eec680,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eec888,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eeca90,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eecc98,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eecea0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eed0a8,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00eed2b0,0x134,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d354c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eed3e8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eed5f0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eed7f8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eeda00,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eedc08,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eede10,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eee018,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00eee220,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00eee428,0x62,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d35e7(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00eee490,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00eee698,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00eee8a0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eeeaa8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00eeecb0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00eeeeb8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00eef0c0,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00eef2c8,0x12a,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3674(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00eef3f8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00eef600,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00eef808,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00eefa10,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00eefc18,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00eefe20,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ef0028,0x1d8,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d36f4(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00ef0208,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00ef0410,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ef0618,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ef0820,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00ef0a28,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ef0c30,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ef0e38,0xc2,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3774(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ef0f00,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ef1108,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ef1310,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ef1518,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ef1720,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ef1928,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ef1b30,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00ef1d38,0x4b,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d37fe(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00ef1d88,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00ef1f90,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00ef2198,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ef23a0,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_00ef25a8,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00ef27b0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ef29b8,0x1c3,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d387e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ef2b80,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ef2d88,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ef2f90,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ef3198,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ef33a0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ef35a8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ef37b0,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00ef39b8,0xd1,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d390b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ef3a90,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ef3c98,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ef3ea0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ef40a8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ef42b0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ef44b8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ef46c0,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00ef48c8,0x87,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3998(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ef4950,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ef4b58,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ef4d60,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ef4f68,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ef5170,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ef5378,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ef5580,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ef5788,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ef5990,0x1cb,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3a36(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ef5b60,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ef5d68,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ef5f70,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ef6178,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ef6380,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ef6588,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ef6790,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00ef6998,0x1a4,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3ac3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ef6b40,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ef6d48,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ef6f50,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ef7158,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ef7360,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ef7568,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ef7770,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ef7978,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00ef7b80,0xfc,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3b61(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00ef7c80,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00ef7e88,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00ef8090,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00ef8298,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00ef84a0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00ef86a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00ef88b0,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00ef8ab8,0x200,param_2), cVar1 != '\0')))) &&
     (((cVar1 = (*param_1)(&DAT_00ef8cc0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ef8ec8,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00ef90cc,0x27,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3c1a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00ef90f8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00ef9300,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ef9508,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ef9710,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00ef9918,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00ef9b20,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00ef9d28,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00ef9f30,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00efa138,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00efa340,0x95,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3cc5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00efa3d8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00efa5e0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00efa7e8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00efa9f0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00efabf8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00efae00,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00efb008,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00efb210,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00efb418,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00efb620,0x91,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3d70(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00efb6b8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00efb8c0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00efbac8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00efbcd0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00efbed8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00efc0e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00efc2e8,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00efc4f0,0x200,param_2), cVar1 != '\0')))) &&
     ((((cVar1 = (*param_1)(&DAT_00efc6f8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00efc900,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00efcb08,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00efcd10,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00efcf18,0x16a,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3e4e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00efd088,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00efd290,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00efd498,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00efd6a0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00efd8a8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00efdab0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00efdcb8,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00efdec0,0x200,param_2), cVar1 != '\0')))) &&
     ((((cVar1 = (*param_1)(&DAT_00efe0c8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00efe2d0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00efe4d8,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00efe6e0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00ead6f4,0x23,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3f29(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00efe8e8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00efeaf0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00efecf8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00efef00,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00eff108,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00eff310,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00eff518,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00eff720,0x200,param_2), cVar1 != '\0')))) &&
     (((cVar1 = (*param_1)(&DAT_00eff928,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00effb30,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00effd38,0xac,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d3fe5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00effde8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00effff0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00f001f8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f00400,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f00608,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f00810,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f00a18,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00f00c20,0x200,param_2), cVar1 != '\0')))) &&
     ((((cVar1 = (*param_1)(&DAT_00f00e28,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f01030,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f01238,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00f01440,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f01644,0x1d,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d40c0(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f01668,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f01870,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00f01a78,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f01c80,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f01e88,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00f02090,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f02298,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00f024a0,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_00f026a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f028b0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f02ab8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f02cc0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f02ec8,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_00f030d0,0x1c0,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d41af(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f03298,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f034a0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00f036a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f038b0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f03ab8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f03cc0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f03ec8,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00f040d0,0x200,param_2), cVar1 != '\0')))) &&
     (((cVar1 = (*param_1)(&DAT_00f042d8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f044e0,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f046e8,0x173,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d426b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f04860,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f04a68,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00f04c70,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f04e78,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f05080,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f05288,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f05490,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00f05698,0x200,param_2), cVar1 != '\0')))) &&
     ((((cVar1 = (*param_1)(&DAT_00f058a0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f05aa8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f05cb0,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00f05eb8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f060c0,0x11e,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d4349(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f061e0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f063e8,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00f065f0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f067f8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f06a00,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00f06c08,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f06e10,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00f07018,0x200,param_2), cVar1 != '\0' &&
      ((((cVar1 = (*param_1)(&DAT_00f07220,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f07428,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f07630,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f07838,0xdb,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d4416(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f07948,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f07b50,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f07d58,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f07f60,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f08168,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f08370,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f08578,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f08780,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00f08988,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f08b90,0x159,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d44c1(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f08cf0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)("rceRef#\" xmlns:xmp=\"http://ns.adobe.com/xap/1.0/\" xmpRights:Marked=\"False\" xmpMM:OriginalDocumentID=\"uuid:AAF3735C2FBCDE1184C9C9CE9ABAB24D\" xmpMM:DocumentID=\"xmp.did:09AF50028B6811E0BB1DB86FAECEEDD0\" xmpMM:InstanceID=\"xmp.iid:09AF50018B6811E0BB1DB86FAECEEDD0\" xmp:CreatorTool=\"Adobe Photoshop CS5 Windows\"> <xmpMM:DerivedFrom stRef:instanceID=\"xmp.iid:770BFEF3668BE01199BDC227CFEF6195\" stRef:documentID=\"uuid:AAF3735C2FBCDE1184C9C9CE9ABAB24D\"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end=\"r\"?>.O_`"
                            ,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f09100,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f09308,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f09510,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f09718,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f09920,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f09b28,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00f09d30,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f09f38,0x1fb,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d456c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f0a140,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f0a348,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00f0a550,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f0a758,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f0a960,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f0ab68,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f0ad70,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00f0af78,0x200,param_2), cVar1 != '\0')))) &&
     ((((cVar1 = (*param_1)(&DAT_00f0b180,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f0b388,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f0b590,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00f0b798,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f0b9a0,0x9b,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d464a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f0ba48,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f0bc50,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f0be58,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f0c060,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f0c268,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f0c470,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f0c678,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f0c880,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00f0ca88,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f0cc90,0x193,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d46f5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f0ce30,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f0d038,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00f0d240,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f0d448,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f0d650,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00f0d858,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f0da60,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00f0dc68,0x200,param_2), cVar1 != '\0' &&
      ((((cVar1 = (*param_1)(&DAT_00f0de70,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f0e078,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f0e280,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f0e488,0xb5,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d47c2(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f0e540,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f0e748,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f0e950,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f0eb58,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f0ed60,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f0ef68,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f0f170,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00f0f378,0xb4,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d484f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f0f430,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f0f638,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f0f840,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f0fa48,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f0fc50,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f0fe58,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f10060,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f10268,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00f10470,0x47,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d48ea(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f104b8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f106c0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f108c8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f10ad0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f10cd8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f10ee0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f110e8,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f112f0,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00f114f8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f11700,0xae,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d4995(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f117b0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f119b8,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00f11bc0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f11dc8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f11fd0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f121d8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f123e0,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00f125e8,0x200,param_2), cVar1 != '\0')))) &&
     (((cVar1 = (*param_1)(&DAT_00f127f0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f129f8,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f12c00,0x174,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d4a51(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f12d78,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f12f80,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f13188,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f13390,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f13598,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f137a0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f139a8,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00f13bb0,0xa8,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d4ade(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f13c60,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f13e68,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f14070,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f14278,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f14480,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f14688,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f14890,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00f14a98,0x124,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d4b6b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f14bc0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f14dc8,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00f14fd0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f151d8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f153e0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f155e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f157f0,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00f159f8,0x200,param_2), cVar1 != '\0')))) &&
     (((cVar1 = (*param_1)(&DAT_00f15c00,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f15e08,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f16010,0x1c3,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d4c27(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f161e0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f163e8,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00f165f0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f167f8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f16a00,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00f16c08,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f16e10,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00f17018,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_00f17220,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f17428,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00f17630,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f17838,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f17a40,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_00f17c48,0x18b,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d4d16(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f17dd8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f17fe0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f181e8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f183f0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f185f8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f18800,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f18a08,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f18c10,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00f18e18,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f19020,0x1ef,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d4dc1(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f19210,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f19418,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00f19620,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f19828,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00f19a30,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00f19c38,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00f19e40,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00f1a048,0x200,param_2), cVar1 != '\0')))) &&
     (((cVar1 = (*param_1)(&DAT_00f1a250,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f1a458,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00f1a660,0x191,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d4e7d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f1a7f8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f1aa00,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00f1ac08,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f1ae10,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f1b018,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00f1b220,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f1b428,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00f1b630,0x200,param_2), cVar1 != '\0' &&
      ((((cVar1 = (*param_1)(&DAT_00f1b838,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f1ba40,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f1bc48,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f1be50,0xfa,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d4f4a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00f1bf50,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f1c158,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00f1c360,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f1c568,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f1c770,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00f1c978,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f1cb80,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00f1cd88,0x200,param_2), cVar1 != '\0' &&
      ((((cVar1 = (*param_1)(&DAT_00f1cf90,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00f1d198,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f1d3a0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00f1d5a8,0x141,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d5017(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00f1d6f0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00f1d8f8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00f1db00,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f1dd08,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00f1df10,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00f1e118,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00f1e320,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00f1e528,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00f1e730,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00f1e938,0xcd,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d50c2(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_00e03768,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e03970,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e03b78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e03d80,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_00e03f88,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_00e04190,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e04398,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_00e045a0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_00e047a8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e049b0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00e04bb8,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_00e04dc0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e04fc8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_00e051d0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_00e053d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e055e0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_00e057e8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_00e059f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e05bf8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00e05e00,0x200,param_2), cVar1 != '\0')))))))))) &&
        (((cVar1 = (*param_1)(&DAT_00e06008,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e06210,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e06418,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_00e06620,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e06828,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e06a30,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_00e06c38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e06e40,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e07048,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e07250,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e07458,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_00e07660,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00e07868,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e07a70,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_00e07c78,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_00e07e80,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e08088,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e08290,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_00e08498,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e086a0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e088a8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_00e08ab0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e08cb8,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_00e08ec0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_00e090c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e092d0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e094d8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_00e096e0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e098e8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_00e09af0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00e09cf8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e09f00,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e0a108,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e0a30c,0x1f,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d5456(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_00e0a358,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e0a560,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e0a768,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e0a970,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_00e0ab78,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00e0ad80,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e0af88,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e0b190,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_00e0b398,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e0b5a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e0b7a8,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_00e0b9b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e0bbb8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e0bdc0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_00e0bfc8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e0c1d0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e0c3d8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00e0c5e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e0c7e8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e0c9f0,0x200,param_2), cVar1 != '\0')))))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_00e0cbf8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e0ce00,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e0d008,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_00e0d210,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e0d418,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e0d620,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_00e0d828,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e0da30,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00e0dc38,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00e0de40,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e0e048,0x200,param_2), cVar1 != '\0')))))))))))) &&
       (((cVar1 = (*param_1)(&DAT_00e0e250,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00e0e458,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e0e660,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_00e0e868,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00e0ea70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e0ec78,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e0ee80,0x200,param_2), cVar1 != '\0')))) &&
          (((((cVar1 = (*param_1)(&DAT_00e0f088,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e0f290,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00e0f498,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00e0f6a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e0f8a8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_00e0fab0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_00e0fcb8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e0fec0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_00e100c8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_00e102d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e104d8,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_00e106e0,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00e108e8,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e10af0,0xa9,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d57cb(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_00e10ba0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e10da8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_00e10fb0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e111b8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00e113c0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_00e115c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e117d0,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_00e119d8,0x200,param_2), cVar1 != '\0' &&
           (((((cVar1 = (*param_1)(&DAT_00e11be0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e11de8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_00e11ff0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_00e121f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e12400,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_00e12608,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_00e12810,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e12a18,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_00e12c20,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_00e12e28,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e13030,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00e13238,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_00e13440,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e13648,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e13850,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_00e13a58,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e13c60,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_00e13e68,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00e14070,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e14278,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e14480,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_00e14688,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e14890,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e14a98,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_00e14ca0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e14ea8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e150b0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_00e152b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e154c0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e156c8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_00e158d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e15ad8,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_00e15ce0,0x200,param_2), cVar1 != '\0')))) &&
      (((cVar1 = (*param_1)(&DAT_00e15ee8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e160f0,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_00e162f8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00e16500,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e16708,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e16910,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_00e16b18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e16d20,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e16f28,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_00e17130,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e17338,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_00e17540,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_00e17748,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e17950,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e17b58,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_00e17d60,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e17f68,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00e18170,0x1e0,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d5bb7(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_00e18358,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e18560,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e18768,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e18970,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_00e18b78,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00e18d80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e18f88,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_00e19190,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_00e19398,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e195a0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e197a8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00e199b0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e19bb8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e19dc0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00e19fc8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e1a1d0,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_00e1a3d8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00e1a5e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e1a7e8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e1a9f0,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_00e1abf8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e1ae00,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00e1b008,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00e1b210,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e1b418,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_00e1b620,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((((cVar1 = (*param_1)(&DAT_00e1b828,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e1ba30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e1bc38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e1be40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e1c048,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_00e1c250,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00e1c458,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e1c660,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e1c868,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_00e1ca70,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e1cc78,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e1ce80,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_00e1d088,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e1d290,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00e1d498,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e1d6a0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e1d8a8,0x1bb,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d5e93(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_00e1da88,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e1dc90,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e1de98,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e1e0a0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_00e1e2a8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00e1e4b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e1e6b8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_00e1e8c0,0x200,param_2), cVar1 != '\0')) &&
       (((((((cVar1 = (*param_1)(&DAT_00e1eac8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e1ecd0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e1eed8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_00e1f0e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e1f2e8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00e1f4f0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_00e1f6f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e1f900,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_00e1fb08,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00e1fd10,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e1ff18,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e20120,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_00e20328,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e20530,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e20738,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_00e20940,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e20b48,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_00e20d50,0x200,param_2), cVar1 != '\0')))) &&
      ((((((cVar1 = (*param_1)(&DAT_00e20f58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e21160,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e21368,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e21570,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e21778,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_00e21980,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00e21b88,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e21d90,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_00e21f98,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_00e221a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e223a8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e225b0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00e227b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e229c0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e22bc8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00e22dd0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e22fd8,0x200,param_2), cVar1 != '\0')))))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_00e231e0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00e233e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e235f0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e237f8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_00e23a00,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e23c08,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_00e23e10,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00e24018,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e24220,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_00e24428,0x200,param_2), cVar1 != '\0' &&
         (((((((cVar1 = (*param_1)(&DAT_00e24630,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e24838,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_00e24a40,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_00e24c48,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e24e50,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_00e25058,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_00e25260,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e25468,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00e25670,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_00e25878,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e25a80,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_00e25c88,0x200,param_2), cVar1 != '\0')))))))) &&
          (((cVar1 = (*param_1)(&DAT_00e25e90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e26098,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_00e262a0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_00e264a8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e266b0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_00e268b8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_00e26ac0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_00e26cc8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_00e26ed0,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_00e270d8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e272e0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e274e8,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_00e276f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e278f8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_00e27b00,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_00e27d08,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e27f10,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_00e28118,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_00e28320,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e28528,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_00e28730,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e28938,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e28b40,0x91,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d646c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e28bd8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e28de0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00e28fe8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e291f0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e293f8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00e29600,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e29808,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_00e29a10,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_00e29c18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e29e20,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e2a028,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e2a230,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e2a438,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_00e2a640,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e2a848,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e2aa50,0x200,param_2), cVar1 != '\0')))) &&
      (((cVar1 = (*param_1)(&DAT_00e2ac58,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_00e2ae60,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e2b068,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e2b270,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_00e2b478,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e2b680,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e2b888,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_00e2ba90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e2bc98,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_00e2bea0,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_00e2c0a8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e2c2b0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_00e2c4b8,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_00e2c6c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e2c8c8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_00e2cad0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_00e2ccd8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_00e2cee0,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_00e2d0e8,0x200,param_2), cVar1 != '\0')) &&
           ((((((cVar1 = (*param_1)(&DAT_00e2d2f0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_00e2d4f8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_00e2d700,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_00e2d908,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e2db10,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_00e2dd18,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00e2df20,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e2e128,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_00e2e330,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00e2e538,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e2e740,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e2e948,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_00e2eb50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e2ed58,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e2ef60,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_00e2f168,0x9e,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d67d0(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_00e2f208,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e2f410,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_00e2f618,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e2f820,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_00e2fa28,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e2fc30,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e2fe38,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_00e30040,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_00e30248,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e30450,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e30658,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_00e30860,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e30a68,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e30c70,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e30e78,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e31080,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_00e31288,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_00e31490,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e31698,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00e318a0,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_00e31aa8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e31cb0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00e31eb8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_00e320c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e322c8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_00e324d0,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_00e326d8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_00e328e0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_00e32ae8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_00e32cf0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_00e32ef8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_00e33100,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e33308,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e33510,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_00e33718,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00e33920,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e33b28,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e33d30,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_00e33f38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e34140,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e34348,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_00e34550,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e34758,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e34960,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00e34b68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e34d70,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e34f78,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_00e35180,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e35388,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00e35590,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_00e35798,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e359a0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_00e35ba8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_00e35db0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e35fb8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_00e361c0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_00e363c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e365d0,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_00e367d8,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_00e369e0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e36be8,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_00e36df0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00e36ff8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e37200,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e37408,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_00e37610,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e37818,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e37a20,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_00e37c28,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e37e30,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_00e38038,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_00e38240,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e38448,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e38650,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_00e38858,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e38a60,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_00e38c68,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00e38e70,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e39078,0x95,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d6d10(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00e39110,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e39318,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e39520,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e39728,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_00e39930,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00e39b38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e39d40,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_00e39f48,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00e3a150,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e3a358,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e3a560,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_00e3a768,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e3a970,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e3ab78,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00e3ad80,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e3af88,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_00e3b190,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_00e3b398,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e3b5a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e3b7a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e3b9b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e3bbb8,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_00e3bdc0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00e3bfc8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e3c1d0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_00e3c3d8,0x200,param_2), cVar1 != '\0')))) &&
       ((((((cVar1 = (*param_1)(&DAT_00e3c5e0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e3c7e8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e3c9f0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e3cbf8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e3ce00,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_00e3d008,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_00e3d210,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e3d418,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e3d620,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00e3d828,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e3da30,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e3dc38,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_00e3de40,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e3e048,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_00e3e250,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_00e3e458,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e3e660,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e3e868,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e3ea70,0x72,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d700b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e3eae8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e3ecf0,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00e3eef8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e3f100,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e3f308,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00e3f510,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e3f718,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_00e3f920,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_00e3fb28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e3fd30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e3ff38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e40140,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e40348,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_00e40550,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00e40758,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e40960,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_00e40b68,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_00e40d70,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e40f78,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e41180,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_00e41388,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e41590,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e41798,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_00e419a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e41ba8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_00e41db0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_00e41fb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e421c0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e423c8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_00e425d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e427d8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00e429e0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_00e42be8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e42df0,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
      ((cVar1 = (*param_1)(&DAT_00e42ff8,0x200,param_2), cVar1 != '\0' &&
       (((((((cVar1 = (*param_1)(&DAT_00e43200,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e43408,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e43610,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_00e43818,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e43a20,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_00e43c28,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e43e30,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e44038,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_00e44240,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_00e44448,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e44650,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e44858,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_00e44a60,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e44c68,0x1ec,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d734d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e44e58,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e45060,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00e45268,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e45470,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e45678,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00e45880,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e45a88,0x200,param_2), cVar1 != '\0')))))))) &&
      (cVar1 = (*param_1)(&DAT_00e45c90,0x200,param_2), cVar1 != '\0')) &&
     (((((((cVar1 = (*param_1)(&DAT_00e45e98,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e460a0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e462a8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e464b0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e466b8,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_00e468c0,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_00e46ac8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e46cd0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_00e46ed8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00e470e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e472e8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e474f0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_00e476f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e47900,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e47b08,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_00e47d10,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e47f18,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_00e48120,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00e48328,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e48530,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e48738,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_00e48940,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e48b48,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e48d50,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e48f58,0x156,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d757f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_00e490b0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e492b8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e494c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e496c8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_00e498d0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00e49ad8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e49ce0,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00e49ee8,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_00e4a0f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e4a2f8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e4a500,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00e4a708,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e4a910,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e4ab18,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00e4ad20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e4af28,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_00e4b130,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_00e4b338,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e4b540,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e4b748,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_00e4b950,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e4bb58,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_00e4bd60,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_00e4bf68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e4c170,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_00e4c378,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_00e4c580,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e4c788,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e4c990,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e4cb98,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e4cda0,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_00e4cfa8,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00e4d1b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e4d3b8,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_00e4d5c0,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00e4d7c8,0x67,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d77e1(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00e4d830,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e4da38,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_00e4dc40,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e4de48,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e4e050,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00e4e258,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e4e460,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_00e4e668,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_00e4e870,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e4ea78,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e4ec80,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e4ee88,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e4f090,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((((cVar1 = (*param_1)(&DAT_00e4f298,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_00e4f4a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e4f6a8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_00e4f8b0,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_00e4fab8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_00e4fcc0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_00e4fec8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_00e500d0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e502d8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_00e504e0,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_00e506e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e508f0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_00e50af8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_00e50d00,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e50f08,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00e51110,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_00e51318,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e51520,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e51728,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_00e51930,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e51b38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e51d40,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00e51f48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e52150,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e52358,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_00e52560,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e52768,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_00e52970,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_00e52b78,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e52d80,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_00e52f88,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_00e53190,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e53398,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_00e535a0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_00e537a8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e539b0,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_00e53bb8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_00e53dc0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e53fc8,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_00e541d0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_00e543d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e545e0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e547e8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_00e549f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e54bf8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e54e00,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_00e55008,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e55210,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e55418,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_00e55620,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e55828,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e55a30,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_00e55c38,0x8d,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d7c44(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00e55cc8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e55ed0,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_00e560d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e562e0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e564e8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_00e566f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e568f8,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_00e56b00,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_00e56d08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e56f10,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e57118,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e57320,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e57528,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_00e57730,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00e57938,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e57b40,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_00e57d48,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_00e57f50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e58158,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e58360,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e58568,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e58770,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_00e58978,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00e58b80,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e58d88,0x200,param_2), cVar1 != '\0')))))))) &&
     (((cVar1 = (*param_1)(&DAT_00e58f90,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_00e59198,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e593a0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e595a8,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_00e597b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e599b8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e59bc0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00e59dc8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e59fd0,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_00e5a1d8,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_00e5a3e0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e5a5e8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e5a7f0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e5a9f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e5ac00,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_00e5ae08,0x98,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d7efe(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00e5aea8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e5b0b0,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_00e5b2b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e5b4c0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_00e5b6c8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_00e5b8d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e5bad8,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_00e5bce0,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_00e5bee8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e5c0f0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e5c2f8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e5c500,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e5c708,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_00e5c910,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_00e5cb18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e5cd20,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_00e5cf28,0x200,param_2), cVar1 != '\0' &&
           (((((cVar1 = (*param_1)(&DAT_00e5d130,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e5d338,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_00e5d540,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_00e5d748,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e5d950,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_00e5db58,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_00e5dd60,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e5df68,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e5e170,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00e5e378,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e5e580,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e5e788,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_00e5e990,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e5eb98,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e5eda0,0x200,param_2), cVar1 != '\0')))))) &&
      (((((cVar1 = (*param_1)(&DAT_00e5efa8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e5f1b0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00e5f3b8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_00e5f5c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e5f7c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e5f9d0,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_00e5fbd8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e5fde0,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_00e5ffe8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_00e601f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e603f8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_00e60600,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_00e60808,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e60a10,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_00e60c18,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_00e60e20,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e61028,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_00e61230,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_00e61438,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e61640,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((cVar1 = (*param_1)(&DAT_00e61848,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00e61a50,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e61c58,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e61e60,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_00e62068,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e62270,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e62478,0x200,param_2), cVar1 != '\0')))) &&
      (((cVar1 = (*param_1)(&DAT_00e62680,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e62888,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00e62a90,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00e62c98,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e62ea0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00e630a8,0xcf,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004d8350(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_00e63178,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e63380,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e63588,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e63790,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_00e63998,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e63ba0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e63da8,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_00e63fb0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_00e641b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e643c0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00e645c8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_00e647d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e649d8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00e64be0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_00e64de8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e64ff0,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_00e651f8,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_00e65400,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e65608,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00e65810,0x200,param_2), cVar1 != '\0')))))) &&
     (((((cVar1 = (*param_1)(&DAT_00e65a18,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e65c20,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e65e28,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_00e66030,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e66238,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00e66440,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_00e66648,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_00e66850,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_00e66a58,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_00e66c60,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e66e68,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_00e67070,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e67278,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e67480,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((((cVar1 = (*param_1)(&DAT_00e67688,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_00e67890,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e67a98,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_00e67ca0,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_00e67ea8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e680b0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00e682b8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_00e684c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00e686c8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_00e688d0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_00e68ad8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e68ce0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00e68ee8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_00e690f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e692f8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00e69500,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_00e69708,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e69910,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00e69b18,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_00e69d20,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_00e69f28,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_00e6a130,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_00e6a338,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e6a540,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_00e6a748,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_00e6a950,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e6ab58,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_00e6ad60,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_00e6af68,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e6b170,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_00e6b378,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_00e6b580,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00e6b788,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00e6b990,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_00e6bb98,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00e6bda0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00e6bfa8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_00e6c1b0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_00e6c3b8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_00e6c5c0,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_00e6c7c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e6c9d0,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_00e6cbd8,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_00e6cde0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00e6cfe8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00e6d1f0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00e6d3f8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00e6d600,0x19d,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 __thiscall FUN_004d8fc4(undefined4 param_1_00,byte param_1)

{
  FUN_004d93ca();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004d8fe0(int param_1)

{
  if (*(int *)(param_1 + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_004d9011(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004d9011(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  undefined4 *puStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puStack_24 = param_1 + 1;
  puVar1 = &uStack_28;
  uStack_28 = 0x4d902d;
  FUN_0044237a();
  *param_1 = W88619A38::WC0042CBE::vftable;
  puVar1[-1] = 0x4d9038;
  return;
}



void __fastcall FUN_004d90f3(int *param_1)

{
  int *extraout_ECX;
  int **ppiVar1;
  int *unaff_EDI;
  int *piStack_34;
  int *piStack_30;
  uint uStack_2c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c2ff37;
  local_14 = ExceptionList;
  uStack_2c = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  if (unaff_EDI != param_1) {
    ppiVar1 = &piStack_34;
    ExceptionList = &local_14;
    piStack_34 = param_1;
    piStack_30 = param_1;
    (**(code **)(*param_1 + 0x14))();
    FUN_007b22a2(unaff_EDI);
    piStack_34 = (int *)0x4d9145;
    FUN_0049a74b();
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b35b4();
    puStack_10 = (undefined *)0x0;
    piStack_34 = (int *)0x4d9160;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x4d9172;
      FUN_0040127a();
    }
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b35b4();
    puStack_10 = (undefined *)0x1;
    piStack_34 = (int *)0x4d9190;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x4d91a2;
      FUN_0040127a();
    }
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b35b4();
    puStack_10 = (undefined *)0x2;
    piStack_34 = (int *)0x4d91c0;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x4d91d2;
      FUN_0040127a();
    }
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b35b4();
    puStack_10 = (undefined *)0x3;
    piStack_34 = (int *)0x4d91f0;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x4d9202;
      FUN_0040127a();
    }
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b35b4();
    puStack_10 = (undefined *)0x4;
    piStack_34 = (int *)0x4d9220;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x4d9232;
      FUN_0040127a();
    }
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b35b4();
    puStack_10 = (undefined *)0x5;
    piStack_34 = (int *)0x4d9250;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x4d9262;
      FUN_0040127a();
    }
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b35b4();
    puStack_10 = (undefined *)0x6;
    piStack_34 = (int *)0x4d9280;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x4d9292;
      FUN_0040127a();
      ppiVar1 = (int **)extraout_ECX;
    }
    piStack_34 = (int *)ppiVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(unaff_EDI + 0xb);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004d93ca(undefined4 *param_1)

{
  *param_1 = WB3204DCB::W30062E43::vftable;
  FUN_00502d9b();
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  if (param_1[0x17] != 0) {
    FUN_0040127a();
  }
  if (param_1[0x15] != 0) {
    FUN_0040127a();
  }
  if (param_1[0x13] != 0) {
    FUN_0040127a();
  }
  if (param_1[0x11] != 0) {
    FUN_0040127a();
  }
  if (param_1[0xf] != 0) {
    FUN_0040127a();
  }
  if (param_1[0xd] != 0) {
    FUN_0040127a();
  }
  if (param_1[0xb] != 0) {
    FUN_0040127a();
  }
  FUN_004d8fe0(param_1);
  return;
}



void Catch_All_004d94c8(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_004d94d2(void)

{
  int unaff_ESI;
  
  FUN_0044197d(unaff_ESI + 0x60);
  FUN_0044197d(unaff_ESI + 0x7c);
  FUN_0044197d(unaff_ESI + 0x98);
  FUN_0044197d(unaff_ESI + 0xb4);
  FUN_0044197d(unaff_ESI + 0xd0);
  FUN_0044197d(unaff_ESI + 0xec);
  FUN_0044197d(unaff_ESI + 0x108);
  return;
}



undefined4 __fastcall FUN_004d9549(undefined4 param_1)

{
  int in_EAX;
  
  FUN_007b3609(*(undefined4 *)(in_EAX + 0x28));
  return param_1;
}



undefined4 __fastcall FUN_004d955e(undefined4 param_1)

{
  int in_EAX;
  
  FUN_007b3609(*(undefined4 *)(in_EAX + 0x30));
  return param_1;
}



undefined4 __fastcall FUN_004d9573(undefined4 param_1)

{
  int in_EAX;
  
  FUN_007b3609(*(undefined4 *)(in_EAX + 0x38));
  return param_1;
}



undefined4 __fastcall FUN_004d9588(undefined4 param_1)

{
  int in_EAX;
  
  FUN_007b3609(*(undefined4 *)(in_EAX + 0x40));
  return param_1;
}



undefined4 __fastcall FUN_004d959d(undefined4 param_1)

{
  int in_EAX;
  
  FUN_007b3609(*(undefined4 *)(in_EAX + 0x48));
  return param_1;
}



undefined4 __fastcall FUN_004d95b2(undefined4 param_1)

{
  int in_EAX;
  
  FUN_007b3609(*(undefined4 *)(in_EAX + 0x50));
  return param_1;
}



undefined4 __fastcall FUN_004d95c7(undefined4 param_1)

{
  int in_EAX;
  
  FUN_007b3609(*(undefined4 *)(in_EAX + 0x58));
  return param_1;
}



undefined4 * __thiscall FUN_004d95dc(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W88619A38::WC0042CBE::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_004d95f9(undefined4 *param_1)

{
  *param_1 = W88619A38::WC0042CBE::vftable;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004d9600(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88619A38::WA7693960>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004d9646(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004d965d(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_004d9600(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004d9751(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4d975d;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00e03670,0xe);
  local_8 = 0;
  local_14 = 0xdc85;
  local_12 = 0x79bf;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 2;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00e03680,10);
  local_8._0_1_ = 3;
  local_14 = 0x9a99;
  local_12 = 0x75cb;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 5;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00e0368c,0x11);
  local_8._0_1_ = 6;
  local_14 = 0xa957;
  local_12 = 0x7af9;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 8;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00e036a0,0x11);
  local_8._0_1_ = 9;
  local_14 = 0x9612;
  local_12 = 0xd612;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0xb;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00e036b4,0x15);
  local_8._0_1_ = 0xc;
  local_14 = 0x9331;
  local_12 = 0x4a15;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0xe;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00e036cc,0xd);
  local_8._0_1_ = 0xf;
  local_14 = 0x5532;
  local_12 = 0xbd64;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x11;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00e036dc,0x11);
  local_8._0_1_ = 0x12;
  local_14 = 0x3695;
  local_12 = 0xe55;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x14;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00e036f0,0x10);
  local_8._0_1_ = 0x15;
  local_14 = 0xa221;
  local_12 = 0x9c35;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x17;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00e03704,0x15);
  local_8._0_1_ = 0x18;
  local_14 = 0x599b;
  local_12 = 0xef16;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x1a;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00e0371c,0x12);
  local_8._0_1_ = 0x1b;
  local_14 = 0x38;
  local_12 = 0x48dd;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x1d;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00e03730,0x15);
  local_8._0_1_ = 0x1e;
  local_14 = 0x2c58;
  local_12 = 0xbcca;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x20;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00e03748,7);
  local_8._0_1_ = 0x21;
  local_14 = 0xa879;
  local_12 = 0x977d;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x23;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00e03750,9);
  local_8._0_1_ = 0x24;
  local_14 = 0x29b6;
  local_12 = 0xe0e2;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x26;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00e0375c,9);
  local_8 = CONCAT31(local_8._1_3_,0x27);
  local_14 = 0x27e6;
  local_12 = 0x75d2;
  FUN_00b94330(&local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



undefined4 __thiscall FUN_004da036(undefined4 param_1,byte param_2)

{
  FUN_004da2d5();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004da052(undefined4 *param_1)

{
  FUN_007b221f();
  *param_1 = WB3204DCB::W0A458440::vftable;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  FUN_004d9751(param_1 + 0x10);
  FUN_004da0a8();
  return param_1;
}



void __fastcall FUN_004da0a8(int *param_1)

{
  int *extraout_ECX;
  int **ppiVar1;
  int *unaff_EDI;
  int *piStack_34;
  int *piStack_30;
  uint uStack_2c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c36de0;
  local_14 = ExceptionList;
  uStack_2c = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  if (unaff_EDI != param_1) {
    ppiVar1 = &piStack_34;
    ExceptionList = &local_14;
    piStack_34 = param_1;
    piStack_30 = param_1;
    (**(code **)(*param_1 + 0x14))();
    FUN_007b22a2(unaff_EDI);
    piStack_34 = (int *)0x4da0fa;
    FUN_0049a74b();
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b2ce5();
    puStack_10 = (undefined *)0x0;
    piStack_34 = (int *)0x4da115;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x4da127;
      FUN_0040127a();
    }
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b25d3();
    puStack_10 = (undefined *)0x1;
    piStack_34 = (int *)0x4da145;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x4da157;
      FUN_0040127a();
    }
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b338d();
    puStack_10 = (undefined *)0x2;
    piStack_34 = (int *)0x4da175;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x4da187;
      FUN_0040127a();
      ppiVar1 = (int **)extraout_ECX;
    }
    piStack_34 = (int *)ppiVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(unaff_EDI + 0xb);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004da1f7(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x1c8);
  if (pvVar1 != (void *)0x0) {
    FUN_004da052(pvVar1,param_1);
  }
  FUN_004cb5c7(param_2);
  return param_2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004da243(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *local_40;
  undefined4 *puStack_3c;
  undefined local_28 [8];
  undefined local_20 [4];
  undefined4 local_1c;
  undefined **local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x4da24f;
  local_1c = 0;
  puStack_3c = (undefined4 *)0x0;
  local_40 = &DAT_00e03610;
  local_18[0] = (undefined **)0x494bb418;
  puVar1 = (undefined4 *)FUN_00b941c0(local_18,local_20);
  local_8 = 1;
  local_40 = (undefined *)*puVar1;
  *puVar1 = 0;
  local_18[0] = &local_40;
  puVar1 = (undefined4 *)FUN_004944e0(local_28);
  puStack_3c = puVar1 + 1;
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  local_40 = &UNK_004da2ae;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_004da2d5(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = WB3204DCB::W0A458440::vftable;
  local_8 = 5;
  local_18 = param_1;
  FUN_0074ca40();
  FUN_0074ca40();
  if (local_20 != param_1 + 0xe) {
    param_1[0xe] = 0;
  }
  iVar1 = param_1[0xf];
  param_1[0xf] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_8 = 4;
  FUN_004da339();
  return;
}



undefined * Catch_All_004da329(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 4;
  return &DAT_004da336;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004da339(void)

{
  int unaff_EBP;
  int unaff_EDI;
  
  FUN_00502d9b();
  *(undefined *)(unaff_EBP + -4) = 2;
  if (*(int *)(unaff_EDI + 0x3c) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 1;
  if (*(int *)(unaff_EDI + 0x34) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 0;
  if (*(int *)(unaff_EDI + 0x2c) != 0) {
    FUN_0040127a();
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_004d8fe0(unaff_EDI);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004da381(void)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [24];
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x4da38d;
  FUN_007b2dba();
  local_14 = 7;
  FUN_0040180b(0);
  local_8 = 0;
  FUN_0040cafb(local_2c);
  FUN_00401829(1,0);
  local_14 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_2c,0);
  local_8 = 1;
  FUN_007b3435(local_2c);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_004da3fc(undefined4 param_1,undefined4 **param_2)

{
  int *piVar1;
  int iVar2;
  int **ppiVar3;
  undefined4 *puVar4;
  undefined4 **local_fc [4];
  undefined4 uStack_ec;
  void *local_78;
  undefined4 local_70;
  undefined4 *local_6c;
  int local_68;
  undefined4 *local_64;
  undefined4 **local_60;
  undefined4 local_5c;
  undefined4 *local_58 [2];
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 *local_48;
  undefined4 ***local_44;
  undefined local_40 [28];
  undefined local_24 [24];
  undefined4 local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&local_6c;
  local_6c = (undefined4 *)0x70;
  local_70 = 0x4da41a;
  local_5c = 0;
  local_fc[0] = (undefined4 **)0x0;
  local_c = 7;
  local_60 = param_2;
  FUN_0040180b();
  local_70 = 1;
  local_fc[0] = (undefined4 **)0x4da445;
  iVar2 = FUN_007b2d68();
  if (iVar2 == 1) {
    local_fc[0] = (undefined4 **)0x16;
    local_fc[0] = (undefined4 **)basic_string<>();
    local_70._0_1_ = 2;
    local_4c = 0x75f71fd3;
    local_48 = (undefined4 *)0xa02ba516;
    FUN_00b94470();
    local_fc[0] = (undefined4 **)0xffffffff;
    local_70 = CONCAT31(local_70._1_3_,3);
    FID_conflict_assign();
    local_fc[0] = (undefined4 **)0x0;
    FUN_00401829();
    local_fc[0] = (undefined4 **)0x0;
    FUN_00401829();
    local_50 = 0x2332;
  }
  else {
    if (iVar2 != 2) {
      local_fc[0] = param_2;
      FUN_004da766();
      local_fc[0] = (undefined4 **)0x0;
      FUN_00401829();
      ExceptionList = local_78;
      uStack_ec = 0x4da641;
      ___security_check_cookie_4();
      return;
    }
    local_fc[0] = (undefined4 **)0xd;
    local_fc[0] = (undefined4 **)basic_string<>();
    local_70._0_1_ = 4;
    local_4c = 0x3fb02b80;
    local_48 = (undefined4 *)&DAT_a388defa;
    FUN_00b94470();
    local_fc[0] = (undefined4 **)0xffffffff;
    local_70 = CONCAT31(local_70._1_3_,5);
    FID_conflict_assign();
    local_fc[0] = (undefined4 **)0x0;
    FUN_00401829();
    local_fc[0] = (undefined4 **)0x0;
    FUN_00401829();
    local_50 = 0x2334;
  }
  local_fc[0] = (undefined4 **)0x4da522;
  std::locale::locale((locale *)&local_44);
  local_70._0_1_ = 6;
  local_fc[0] = (undefined4 **)0x4da533;
  local_fc[0] = (undefined4 **)FUN_007b261f();
  local_70._0_1_ = 7;
  FUN_004266b0();
  local_fc[0] = (undefined4 **)0x0;
  FUN_00401829();
  local_70._0_1_ = 10;
  local_fc[0] = (undefined4 **)0x4da55c;
  std::locale::~locale((locale *)&local_44);
  local_fc[0] = &local_6c;
  ppiVar3 = (int **)FUN_004da243();
  local_70._0_1_ = 0xb;
  piVar1 = *ppiVar3;
  local_fc[0] = &local_48;
  puVar4 = (undefined4 *)FUN_007b33eb();
  local_70._0_1_ = 0xc;
  local_fc[0] = (undefined4 **)*puVar4;
  local_44 = local_fc;
  *puVar4 = 0;
  puVar4 = (undefined4 *)(**(code **)(*piVar1 + 8))();
  local_44 = (undefined4 ***)*puVar4;
  *puVar4 = 0;
  local_70._0_1_ = 0xd;
  if (local_64 != (undefined4 *)0x0) {
    (**(code **)*local_64)();
  }
  local_70._0_1_ = 0xe;
  if (local_48 != (undefined4 *)0x0) {
    (**(code **)*local_48)();
  }
  local_70 = CONCAT31(local_70._1_3_,0xf);
  if (local_68 != 0) {
    FUN_0040127a();
  }
  local_44 = (undefined4 ***)0x0;
  FUN_004da646(local_58,local_24,local_50,local_40);
  *local_60 = local_58[0];
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4
FUN_004da646(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 *param_5)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x48);
  if (pvVar1 != (void *)0x0) {
    param_5 = (undefined4 *)0x0;
    FUN_00479453(pvVar1,param_2,param_3,param_4);
  }
  FUN_004da719();
  if (param_5 != (undefined4 *)0x0) {
    (**(code **)*param_5)();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004da6bc(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W14E3BFCC::W5959A26E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004da702(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004da719(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_004da6bc(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



undefined4 FUN_004da766(undefined4 param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x48);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = W14E3BFCC::W5959A26E::vftable;
    *(undefined *)(puVar1 + 1) = 0;
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)(puVar1 + 2));
    *(undefined2 *)(puVar1 + 9) = 0;
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)(puVar1 + 10));
    puVar1[0x11] = 0;
  }
  FUN_004da719(param_1);
  return param_1;
}



void Catch_All_004da7fd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_004da8ee(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004da9d2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88619A38::WDDC4C4A6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004daa18(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004daa2f(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_004da9d2(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004dab4b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88619A38::W0F3EE231>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004dab91(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004daba8(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_004dab4b(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004dac9c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88619A38::W9718CCBF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004dace2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004dacf9(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_004dac9c(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void __fastcall FUN_004dae15(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_004dae50(*(int *)(param_1 + 0xc));
  }
  return;
}



void FUN_004dae23(void)

{
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0xc) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(int *)(unaff_ESI + 0xc));
  }
  *(undefined4 *)(unaff_ESI + 0xc) = 0;
  *(undefined4 *)(unaff_ESI + 0x10) = 0;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  return;
}



void FUN_004dae3e(void)

{
  undefined4 *in_EAX;
  
  FUN_004dae23();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*in_EAX);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004dae50(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  undefined4 *puStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  if (*(char *)(param_1 + 0xd) != '\0') {
    *(undefined *)(param_1 + 0xd) = 0;
  }
  puStack_24 = param_1 + 6;
  puVar1 = &uStack_28;
  uStack_28 = 0x4dae75;
  FUN_0044237a();
  puVar1[-1] = 0x4dae7a;
  FUN_004dae23();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_004dae81;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004dae93(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88619A38::WE7B3E6B4>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004daed9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_004dae50(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004daef0(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x40);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_007b2de6(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_004dae93(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_004daf61(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c0ce0a;
  *param_1 = WB3204DCB::W3A5478FA::vftable;
  if ((int *)param_1[1] != (int *)0x0) {
    puVar1 = (undefined *)(**(code **)(*(int *)param_1[1] + 4))(1);
  }
  *param_1 = WE711C61D::WD66DC3DE::vftable;
  return puVar1;
}



undefined4 __thiscall FUN_004daf96(undefined4 param_1_00,byte param_1)

{
  FUN_004daf61();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool __thiscall FUN_004dafb5(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  bool bVar5;
  undefined4 uVar6;
  undefined local_60 [36];
  undefined local_3c [28];
  undefined4 local_20;
  void *local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x50;
  local_8 = 0x4dafc1;
  piVar4 = (int *)0x0;
  local_14 = 0;
  iVar3 = FUN_004f637d(param_1);
  bVar5 = iVar3 == 3;
  if (bVar5) {
    local_18 = operator_new(0x24);
    local_8 = 0;
    if (local_18 != (void *)0x0) {
      FUN_0043c211(&DAT_00e035e0);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      basic_string<>(param_1);
      local_20 = 0;
      local_8 = 2;
      local_14 = 3;
      piVar4 = (int *)FUN_00882660(local_3c,local_60);
    }
    local_8 = 4;
    piVar1 = *(int **)(param_1_00 + 4);
    if ((piVar4 != piVar1) && (piVar1 != (int *)0x0)) {
      (**(code **)(*piVar1 + 4))(1);
    }
    *(int **)(param_1_00 + 4) = piVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      FUN_0040159c();
    }
    local_8 = 0xffffffff;
    if ((local_14 & 1) != 0) {
      FUN_0040159c();
    }
    cVar2 = (**(code **)(**(int **)(param_1_00 + 4) + 0x34))();
    if (cVar2 != '\0') {
      return (bool)cVar2;
    }
    uVar6 = 0xc046619f;
    bVar5 = false;
  }
  else {
    uVar6 = 0x734dca3e;
  }
  FUN_00b940e0(uVar6);
  return bVar5;
}



bool __fastcall FUN_004db0a8(int param_1)

{
  return *(int *)(param_1 + 4) != 0;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_004db0b1(int *param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  int *piVar4;
  int param_9;
  char param_11;
  undefined4 uVar5;
  undefined local_1a0 [36];
  int *local_17c;
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 400;
  piVar4 = (int *)0x0;
  local_8 = 1;
  if (param_9 == 0) {
    FUN_004db782(&stack0x00000024);
  }
  local_17c = (int *)0x0;
  local_8._0_1_ = 2;
  cVar2 = (**(code **)(*param_1_00 + 8))();
  if (cVar2 == '\0') {
    uVar5 = 0x4a72bc32;
  }
  else {
    if ((-(uint)(param_1 != 0) & 0x7a491c) != 0) {
      iVar1 = param_1_00[1];
      uVar5 = FUN_004db929();
      FUN_0087f270(iVar1,uVar5);
      local_8 = CONCAT31(local_8._1_3_,3);
      piVar3 = (int *)FUN_00882140();
      while (piVar4 = piVar3, local_17c = piVar4, piVar4 != (int *)0x0) {
        cVar2 = FUN_004db8a7();
        cVar2 = '\x01' - (cVar2 != '\0');
        if (cVar2 == '\0') {
          FUN_00b940e0(0x1f909649);
          break;
        }
        if ((*(byte *)(piVar4 + 0x26) & 0x10) != 0) {
          (**(code **)(*piVar4 + 0x2c))(local_1a0,param_11 != '\0');
          local_8._0_1_ = 4;
          uVar5 = FUN_00432c6c();
          basic_string<>(uVar5);
          local_8 = CONCAT31(local_8._1_3_,6);
          FUN_0040159c();
          cVar2 = FUN_0060d4ba(local_30);
          if (cVar2 == '\0') {
            FUN_00b940e0(0xc034891a);
          }
          local_8 = CONCAT31(local_8._1_3_,3);
          FUN_00401829(1,0);
        }
        if (cVar2 == '\0') break;
        piVar3 = (int *)FUN_00882140();
        if (piVar3 != piVar4) {
          (**(code **)(*piVar4 + 4))(1);
        }
      }
      local_8._0_1_ = 2;
      FUN_0087c570();
      goto LAB_004db227;
    }
    uVar5 = 0x1710d022;
  }
  FUN_00b940e0(uVar5);
LAB_004db227:
  local_8._0_1_ = 1;
  if (piVar4 != (int *)0x0) {
    (**(code **)(*piVar4 + 4))(1);
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00507e58();
  local_8 = 0xffffffff;
  FUN_00507e58();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __thiscall FUN_004db25a(int *param_1_00,int param_1)

{
  char cVar1;
  int *piVar2;
  undefined4 *puVar3;
  int iVar4;
  int param_9;
  char param_11;
  int param_12;
  undefined4 *local_1204;
  int local_11f8;
  int *local_11f4;
  char local_11ed;
  void *local_11ec;
  undefined *puStack_11e8;
  undefined4 local_11e4;
  undefined local_11e0 [388];
  undefined4 local_105c;
  undefined4 local_1058;
  undefined4 local_1038;
  undefined4 local_1034;
  undefined4 local_1014;
  undefined4 local_1010;
  uint local_8;
  
  puStack_11e8 = &LAB_00c3ae36;
  local_11ec = ExceptionList;
  local_8 = DAT_0323f878 ^ (uint)local_11e0;
  ExceptionList = &local_11ec;
  local_11e4 = 2;
  if (param_12 == 0) {
    FUN_004db782();
  }
  local_11f4 = (int *)0x0;
  local_11e4._0_1_ = 3;
  cVar1 = (**(code **)(*param_1_00 + 8))();
  if (((cVar1 == '\0') || ((-(uint)(param_1 != 0) & 0x7a491c) == 0)) ||
     ((-(uint)(param_9 != 0) & 0x7a491c) == 0)) {
    FUN_00b940e0();
  }
  else {
    FUN_004db929();
    FUN_0087f270();
    local_11e4 = CONCAT31(local_11e4._1_3_,4);
    piVar2 = (int *)FUN_00882140();
    while (local_11f4 = piVar2, local_11f4 != (int *)0x0) {
      cVar1 = FUN_004db8a7();
      local_11ed = '\x01' - (cVar1 != '\0');
      if (local_11ed == '\0') {
        FUN_00b940e0();
        break;
      }
      if ((*(byte *)(local_11f4 + 0x26) & 0x10) == 0) {
        (**(code **)(*local_11f4 + 0x2c))();
        local_105c = 7;
        FUN_0040180b();
        local_1058 = 0;
        local_1038 = 7;
        FUN_0040180b();
        local_1034 = 0;
        local_1014 = 7;
        FUN_0040180b();
        local_1010 = 0;
        local_11e4._0_1_ = 8;
        FUN_00858c30();
        FUN_00432c6c();
        basic_string<>();
        local_11e4._0_1_ = 9;
        FUN_00432c6c();
        basic_string<>();
        local_11e4._0_1_ = 10;
        FUN_00432c6c();
        basic_string<>();
        local_11e4._0_1_ = 0xb;
        cVar1 = FUN_004db6af();
        FUN_00401829();
        FUN_00401829();
        local_11e4._0_1_ = 8;
        FUN_00401829();
        if (cVar1 != '\0') {
          FUN_00883c90();
          local_11e4._0_1_ = 0xc;
          if (param_11 != '\0') {
            puVar3 = (undefined4 *)FUN_00b933f0();
            *puVar3 = 0;
            FUN_0040c727();
            if (local_1204 != (undefined4 *)0x0) {
              (**(code **)*local_1204)();
            }
            local_11f8 = 0;
            while( true ) {
              piVar2 = (int *)FUN_00882ff0();
              iVar4 = (**(code **)(*piVar2 + 0x30))();
              if (iVar4 == 0) break;
              local_11ed = FUN_00b93060();
              if (local_11ed == '\0') goto LAB_004db556;
              local_11f8 = local_11f8 + iVar4;
            }
            if ((local_11ed != '\0') && (iRam00000008 != local_11f8)) {
              FUN_00b940e0();
            }
          }
LAB_004db556:
          local_11e4._0_1_ = 0xd;
          FUN_00432c6c();
          basic_string<>();
          local_11e4._0_1_ = 0xf;
          local_11ed = FUN_004db71a();
          local_11e4._0_1_ = 0xc;
          FUN_00401829();
          if (local_11ed == '\0') {
            FUN_00b940e0();
          }
        }
        FUN_0040159c();
        FUN_0040159c();
        FUN_0040159c();
        local_11e4 = CONCAT31(local_11e4._1_3_,4);
        FUN_0040159c();
      }
      if (local_11ed == '\0') break;
      piVar2 = (int *)FUN_00882140();
      if (piVar2 != local_11f4) {
        (**(code **)(*local_11f4 + 4))();
      }
    }
    local_11e4._0_1_ = 3;
    FUN_0087c570();
  }
  local_11e4._0_1_ = 2;
  if (local_11f4 != (int *)0x0) {
    (**(code **)(*local_11f4 + 4))();
  }
  local_11e4._0_1_ = 1;
  FUN_00507e58();
  local_11e4 = (uint)local_11e4._1_3_ << 8;
  FUN_00507e58();
  local_11e4 = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_11ec;
  ___security_check_cookie_4();
  return;
}



void FUN_004db6a1(void)

{
  int **in_EAX;
  
  if (*in_EAX != (int *)0x0) {
    (**(code **)(**in_EAX + 4))(1);
  }
  return;
}



void __thiscall
FUN_004db6af(uint *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  uint uVar2;
  uint *extraout_ECX;
  undefined local_40 [44];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2247f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a(DAT_0323f878 ^ (uint)local_40);
    local_c = 0;
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  (**(code **)((uVar2 & 0xfffffffe) + 4))(param_1_00 + 2,param_1,param_2,param_3);
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x004db772)

undefined4 __thiscall
FUN_004db71a(uint *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  uint *extraout_ECX;
  undefined4 local_50 [15];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0;
  if (*param_1_00 == 0) {
    local_50[0] = 0x4db737;
    local_50[0] = FUN_00412b7a();
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_00412f44();
    param_1_00 = extraout_ECX;
  }
  local_14 = local_50;
  local_50[0] = param_3;
  uVar1 = (**(code **)((*param_1_00 & 0xfffffffe) + 4))(param_1_00 + 2,param_1,param_2);
  return uVar1;
}



// WARNING: Removing unreachable block (ram,0x004db7e5)

undefined4 FUN_004db782(undefined4 param_1)

{
  undefined4 local_38 [2];
  code *local_30 [7];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c221a0;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_38[0] = 0;
  FUN_004db81e(local_30,local_30,2,DAT_0323f878 ^ (uint)&stack0xffffffc0);
  local_30[0] = FUN_007f2630;
  local_38[0] = 0xfc0ead;
  local_c = 0;
  FUN_004fc9c9(local_38);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return param_1;
}



void FUN_004db81e(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_004db85f(0);
    return;
  }
  *param_2 = &PTR_vftable_03269500;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_004db85f(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_03269500;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_03269500);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void __fastcall FUN_004db8a7(uint *param_1)

{
  undefined4 uVar1;
  uint uVar2;
  uint *extraout_ECX;
  undefined local_40 [44];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2247f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar2 = *param_1;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a(DAT_0323f878 ^ (uint)local_40);
    local_c = 0;
    uVar2 = FUN_00412f44(uVar1);
    param_1 = extraout_ECX;
  }
  (**(code **)((uVar2 & 0xfffffffe) + 4))(param_1 + 2);
  ExceptionList = local_14;
  return;
}



undefined4 * __thiscall FUN_004db905(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WE711C61D::WD66DC3DE::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_004db922(undefined4 *param_1)

{
  *param_1 = WE711C61D::WD66DC3DE::vftable;
  return;
}



void FUN_004db929(void)

{
  if (DAT_032bd4e0 == 0) {
    DAT_032bd4e0 = FUN_00862fb0();
  }
  return;
}



undefined4 __thiscall FUN_004db93d(undefined4 param_1_00,byte param_1)

{
  FUN_004db959();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_004db959(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c0cde7;
  *param_1 = WB3204DCB::WC537B064::vftable;
  if ((int *)param_1[2] != (int *)0x0) {
    puVar1 = (undefined *)(**(code **)(*(int *)param_1[2] + 4))(1);
  }
  param_1[2] = 0;
  if ((int *)param_1[1] != (int *)0x0) {
    puVar1 = (undefined *)(**(code **)(*(int *)param_1[1] + 4))(1);
  }
  param_1[1] = 0;
  if ((int *)param_1[2] != (int *)0x0) {
    puVar1 = (undefined *)(**(code **)(*(int *)param_1[2] + 4))(1);
  }
  if ((int *)param_1[1] != (int *)0x0) {
    puVar1 = (undefined *)(**(code **)(*(int *)param_1[1] + 4))(1);
  }
  *param_1 = WE711C61D::W2D76DCE3::vftable;
  return puVar1;
}



void Catch_All_004db9cb(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_004db9d5(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  undefined4 uVar2;
  char cVar3;
  void *pvVar4;
  undefined4 uVar5;
  int *piVar6;
  undefined local_60 [36];
  undefined local_3c [28];
  undefined4 local_20;
  void *local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x50;
  local_8 = 0x4db9e1;
  piVar6 = (int *)0x0;
  local_14 = 0;
  local_18 = operator_new(0x18);
  local_8 = 0;
  if (local_18 != (void *)0x0) {
    FUN_0043c211(&DAT_00e035bc);
    local_8 = CONCAT31(local_8._1_3_,1);
    local_14 = 1;
    basic_string<>(param_1);
    local_20 = 0;
    local_8 = 2;
    local_14 = 3;
    piVar6 = (int *)FUN_008827d0(local_3c,local_60);
  }
  local_8 = 4;
  piVar1 = *(int **)(param_1_00 + 4);
  if ((piVar6 != piVar1) && (piVar1 != (int *)0x0)) {
    (**(code **)(*piVar1 + 4))(1);
  }
  *(int **)(param_1_00 + 4) = piVar6;
  if ((local_14 & 2) != 0) {
    local_14 = local_14 & 0xfffffffd;
    FUN_0040159c();
  }
  local_8 = 0xffffffff;
  if ((local_14 & 1) != 0) {
    FUN_0040159c();
  }
  cVar3 = (**(code **)(**(int **)(param_1_00 + 4) + 0x10))();
  if (cVar3 == '\0') {
    if (*(int **)(param_1_00 + 4) != (int *)0x0) {
      (**(code **)(**(int **)(param_1_00 + 4) + 4))(1);
    }
    *(undefined4 *)(param_1_00 + 4) = 0;
  }
  else {
    pvVar4 = operator_new(0xa8);
    local_8 = 5;
    if (pvVar4 == (void *)0x0) {
      piVar6 = (int *)0x0;
    }
    else {
      uVar2 = *(undefined4 *)(param_1_00 + 4);
      uVar5 = FUN_004db929();
      piVar6 = (int *)FUN_0087cc00(uVar2,0xffffffff,uVar5);
    }
    local_8 = 0xffffffff;
    piVar1 = *(int **)(param_1_00 + 8);
    if ((piVar6 != piVar1) && (piVar1 != (int *)0x0)) {
      (**(code **)(*piVar1 + 4))(1);
    }
    *(int **)(param_1_00 + 8) = piVar6;
  }
  return cVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_004dbaf6(int *param_1_00,undefined4 param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  undefined4 uVar4;
  undefined local_3c [28];
  undefined4 local_20;
  undefined local_18 [16];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x4dbb02;
  cVar3 = (**(code **)(*param_1_00 + 8))();
  if (cVar3 != '\0') {
    piVar1 = (int *)param_1_00[2];
    basic_string<>(param_1);
    local_20 = 0;
    local_8 = 0;
    iVar2 = *piVar1;
    uVar4 = FUN_00455539(local_18);
    cVar3 = (**(code **)(iVar2 + 0x4c))(local_3c,uVar4);
    local_8 = 0xffffffff;
    FUN_0040159c();
    if (cVar3 == '\0') {
      FUN_00b940e0(0x94aeb355);
    }
  }
  return cVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_004dbb67(int *param_1_00,undefined4 param_1,undefined4 *param_2)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  int iVar4;
  undefined4 uVar5;
  undefined local_40 [28];
  undefined4 local_24;
  undefined local_1c [11];
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0;
  cVar2 = (**(code **)(*param_1_00 + 8))();
  if (cVar2 == '\0') {
    local_8 = 0xffffffff;
    if (param_2 != (undefined4 *)0x0) {
      (**(code **)*param_2)(1);
    }
    return '\0';
  }
  local_11 = param_2 != (undefined4 *)0x0;
  if ((bool)local_11) {
    piVar3 = (int *)param_1_00[2];
    basic_string<>(param_1);
    local_24 = 0;
    local_8._0_1_ = 1;
    iVar1 = *piVar3;
    uVar5 = FUN_00455539(local_1c,0xffffffff,0xffffffff);
    local_11 = (**(code **)(iVar1 + 0x44))(local_40,uVar5);
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_0040159c();
    if (local_11 == '\0') {
      uVar5 = 0x267f9ebb;
    }
    else {
      iVar1 = param_2[2];
      if (iVar1 == 0) {
LAB_004dbc60:
        if (local_11 == '\0') goto LAB_004dbc87;
      }
      else {
        local_11 = FUN_00b93390();
        if (local_11 == '\0') {
          uVar5 = 0xe15f3388;
          local_11 = '\0';
          goto LAB_004dbc81;
        }
        piVar3 = (int *)(**(code **)(*(int *)param_1_00[2] + 0x28))(0,iVar1);
        iVar4 = (**(code **)(*piVar3 + 0x34))();
        local_11 = iVar4 == iVar1;
        if (!(bool)local_11) {
          FUN_00b940e0(0x6de145c);
          goto LAB_004dbc60;
        }
      }
      local_11 = (**(code **)(*(int *)param_1_00[2] + 0x58))();
      if (local_11 != '\0') goto LAB_004dbc87;
      uVar5 = 0x5660f37e;
    }
  }
  else {
    uVar5 = 0xe45338d9;
  }
LAB_004dbc81:
  FUN_00b940e0(uVar5);
LAB_004dbc87:
  local_8 = 0xffffffff;
  if (param_2 != (undefined4 *)0x0) {
    (**(code **)*param_2)(1);
  }
  return local_11;
}



char __fastcall FUN_004dbca3(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 8))();
  if (cVar1 == '\0') {
    return '\0';
  }
  cVar1 = (**(code **)(*(int *)param_1[2] + 0x3c))();
  if (cVar1 == '\0') {
    FUN_00b940e0(0xa9f8ecc9);
  }
  return cVar1;
}



undefined4 * __thiscall FUN_004dbcd7(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WE711C61D::W2D76DCE3::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_004dbcf4(undefined4 *param_1)

{
  *param_1 = WE711C61D::W2D76DCE3::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004dbcfb(undefined4 *param_1)

{
  *param_1 = wxXmlDocument::vftable;
  FUN_004dc799(param_1 + 0x14);
  FUN_0040159c();
  FUN_0040159c();
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined4 __thiscall FUN_004dbd4a(undefined4 param_1_00,byte param_1)

{
  FUN_004dbcfb();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004dbd66(undefined4 param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  int iVar2;
  int *piVar3;
  undefined local_104 [28];
  undefined4 local_e8;
  int *local_e0;
  undefined local_dc [28];
  undefined4 local_c0;
  int *local_9c;
  undefined4 local_98;
  void *local_94;
  char local_8e;
  char local_8d;
  void *local_8c;
  undefined4 local_84;
  undefined4 local_80 [21];
  undefined local_2c [24];
  undefined4 local_14;
  undefined4 local_10;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_80;
  local_80[0] = 0x94;
  local_98 = param_1;
  local_84 = 0;
  local_8e = param_2 != (undefined4 *)0x0;
  if (!(bool)local_8e) {
    FUN_00b940e0(0x81bb1861);
  }
  local_9c = (int *)0x0;
  if (local_8e != '\0') {
    uVar1 = param_2[2];
    local_8e = FUN_00b93390();
    if (local_8e == '\0') {
      FUN_00b940e0(0x49ceedee);
    }
    else {
      local_94 = operator_new(0x24);
      local_84._0_1_ = 1;
      if (local_94 == (void *)0x0) {
        local_9c = (int *)0x0;
      }
      else {
        local_9c = (int *)FUN_00874cb0(local_9c,uVar1);
      }
      piVar3 = local_9c;
      local_e0 = local_9c;
      local_84._0_1_ = 2;
      FUN_004325b6(L"UTF-8");
      local_84._0_1_ = 3;
      FUN_008d9fd0(piVar3,local_dc);
      local_84._0_1_ = 5;
      FUN_0040159c();
      uVar1 = FUN_004dc995();
      local_84._0_1_ = 6;
      basic_string<>(uVar1);
      local_e8 = 0;
      local_84._0_1_ = 7;
      FUN_008d7450(local_104);
      iVar2 = FUN_004f4ba0();
      FUN_0040159c();
      FUN_00401829(1,0);
      if (iVar2 != 0) {
        local_14 = 7;
        FUN_0040180b(0);
        local_10 = 0;
        local_84._0_1_ = 8;
        uVar1 = FUN_004dc944();
        local_84._0_1_ = 9;
        basic_string<>(uVar1);
        local_c0 = 0;
        local_84._0_1_ = 10;
        local_8d = FUN_004f4bcc(local_2c,iVar2,local_dc);
        FUN_0040159c();
        local_84._0_1_ = 8;
        FUN_00401829(1,0);
        if (local_8d != '\0') {
          local_94 = (void *)0x0;
          uVar1 = FUN_00432c6c();
          uVar1 = basic_string<>(uVar1);
          local_84._0_1_ = 0xb;
          FUN_004dc283(&local_94);
          FID_conflict_assign(uVar1,0,0xffffffff);
          local_84._0_1_ = 8;
          FUN_00401829(1,0);
        }
        uVar1 = FUN_004dc8f3();
        local_84._0_1_ = 0xc;
        basic_string<>(uVar1);
        local_c0 = 0;
        local_84._0_1_ = 0xd;
        local_8d = FUN_004f4bcc(local_2c,iVar2,local_dc);
        FUN_0040159c();
        local_84._0_1_ = 8;
        FUN_00401829(1,0);
        if (local_8d != '\0') {
          local_94 = (void *)0x1;
          uVar1 = FUN_00432c6c();
          uVar1 = basic_string<>(uVar1);
          local_84._0_1_ = 0xe;
          FUN_004dc283(&local_94);
          FID_conflict_assign(uVar1,0,0xffffffff);
          local_84._0_1_ = 8;
          FUN_00401829(1,0);
        }
        uVar1 = FUN_004dc8a2();
        local_84._0_1_ = 0xf;
        basic_string<>(uVar1);
        local_c0 = 0;
        local_84._0_1_ = 0x10;
        local_8d = FUN_004f4bcc(local_2c,iVar2,local_dc);
        FUN_0040159c();
        local_84._0_1_ = 8;
        FUN_00401829(1,0);
        if (local_8d != '\0') {
          local_94 = (void *)0x2;
          uVar1 = FUN_00432c6c();
          uVar1 = basic_string<>(uVar1);
          local_84._0_1_ = 0x11;
          FUN_004dc283(&local_94);
          FID_conflict_assign(uVar1,0,0xffffffff);
          local_84._0_1_ = 8;
          FUN_00401829(1,0);
        }
        uVar1 = FUN_004dc851();
        local_84._0_1_ = 0x12;
        basic_string<>(uVar1);
        local_c0 = 0;
        local_84._0_1_ = 0x13;
        local_8d = FUN_004f4bcc(local_2c,iVar2,local_dc);
        FUN_0040159c();
        local_84._0_1_ = 8;
        FUN_00401829(1,0);
        if (local_8d != '\0') {
          local_94 = (void *)0x3;
          uVar1 = FUN_00432c6c();
          uVar1 = basic_string<>(uVar1);
          local_84._0_1_ = 0x14;
          FUN_004dc283(&local_94);
          FID_conflict_assign(uVar1,0,0xffffffff);
          local_84._0_1_ = 8;
          FUN_00401829(1,0);
        }
        uVar1 = FUN_004dc800();
        local_84._0_1_ = 0x15;
        basic_string<>(uVar1);
        local_c0 = 0;
        local_84._0_1_ = 0x16;
        local_8d = FUN_004f4bcc(local_2c,iVar2,local_dc);
        FUN_0040159c();
        local_84._0_1_ = 8;
        FUN_00401829(1,0);
        if (local_8d != '\0') {
          local_94 = (void *)0x4;
          uVar1 = FUN_00432c6c();
          uVar1 = basic_string<>(uVar1);
          local_84._0_1_ = 0x17;
          FUN_004dc283(&local_94);
          FID_conflict_assign(uVar1,0,0xffffffff);
          local_84._0_1_ = 8;
          FUN_00401829(1,0);
        }
        uVar1 = FUN_004dc7af();
        local_84._0_1_ = 0x18;
        basic_string<>(uVar1);
        local_c0 = 0;
        local_84._0_1_ = 0x19;
        local_8d = FUN_004f4bcc(local_2c,iVar2,local_dc);
        FUN_0040159c();
        local_84._0_1_ = 8;
        FUN_00401829(1,0);
        if (local_8d != '\0') {
          local_94 = (void *)0x5;
          uVar1 = FUN_00432c6c();
          uVar1 = basic_string<>(uVar1);
          local_84._0_1_ = 0x1a;
          FUN_004dc283(&local_94);
          FID_conflict_assign(uVar1,0,0xffffffff);
          FUN_00401829(1,0);
        }
        FUN_0040159c();
        piVar3 = local_9c;
      }
      local_84._0_1_ = 2;
      FUN_004dbcfb();
      local_84 = (uint)local_84._1_3_ << 8;
      if (piVar3 != (int *)0x0) {
        (**(code **)(*piVar3 + 4))(1);
      }
    }
  }
  local_84 = 0xffffffff;
  if (param_2 != (undefined4 *)0x0) {
    (**(code **)*param_2)(1);
  }
  ExceptionList = local_8c;
  ___security_check_cookie_4();
  return;
}



int FUN_004dc283(int *param_1)

{
  undefined4 uVar1;
  char cVar2;
  int iVar3;
  undefined4 *unaff_EBX;
  undefined4 local_5c;
  undefined4 local_58;
  undefined local_54 [24];
  undefined4 local_3c;
  int local_38 [9];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2772c;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar3 = FUN_004dc703(DAT_0323f878 ^ (uint)&stack0xffffff90);
  if (unaff_EBX == (undefined4 *)0x0) {
    FUN_00a3fb10();
  }
  uVar1 = *unaff_EBX;
  local_58 = unaff_EBX[6];
  local_5c = uVar1;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (*param_1 < *(int *)(iVar3 + 0xc))) {
    local_3c = 7;
    FUN_0040180b(0);
    local_c = 0;
    local_38[0] = *param_1;
    basic_string<>(local_54);
    local_c = CONCAT31(local_c._1_3_,1);
    FUN_004dc394(&local_5c,local_38,uVar1,iVar3);
    FUN_00401829(1,0);
    FUN_00401829(1,0);
  }
  iVar3 = FUN_006badde();
  ExceptionList = local_14;
  return iVar3 + 4;
}



void FUN_004dc387(void)

{
  FUN_00401829(1,0);
  return;
}



undefined4 * FUN_004dc394(undefined4 *param_1,int *param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int in_EAX;
  int iVar4;
  undefined4 *puVar5;
  bool bVar6;
  undefined4 uVar7;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar3 = FUN_006b8eca();
    if (cVar3 == '\0') {
      cVar3 = FUN_006b8eca();
      if (cVar3 == '\0') {
        iVar4 = *param_2;
        iVar1 = *(int *)(param_4 + 0xc);
        bVar6 = SBORROW4(iVar1,iVar4);
        iVar2 = iVar1 - iVar4;
        if (iVar4 < iVar1) {
          iVar4 = FUN_007a6a2f();
          iVar2 = *param_2;
          if (*(int *)(*(int *)(iVar4 + 4) + 0xc) < iVar2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x2d) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_004dc3b6;
          }
          bVar6 = SBORROW4(*(int *)(param_4 + 0xc),iVar2);
          iVar2 = *(int *)(param_4 + 0xc) - iVar2;
        }
        if (bVar6 != iVar2 < 0) {
          FUN_00743d11();
          cVar3 = FUN_006b8eca();
          if ((cVar3 != '\0') || (*param_2 < *(int *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x2d) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_004dc3b6;
          }
        }
LAB_004dc4d1:
        puVar5 = (undefined4 *)FUN_004dc4f3(in_EAX,param_2);
        *param_1 = *puVar5;
        param_1[1] = puVar5[1];
        return param_1;
      }
      if (*param_2 <= *(int *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_004dc4d1;
      uVar7 = 0;
      goto LAB_004dc3b6;
    }
    if (*(int *)(param_4 + 0xc) <= *param_2) goto LAB_004dc4d1;
  }
  uVar7 = 1;
LAB_004dc3b6:
  FUN_004dc5b4(param_1,uVar7,param_2);
  return param_1;
}



void FUN_004dc4f3(undefined4 *param_1,int *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x2d) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (int)local_c[3]);
      if (*param_2 < (int)local_c[3]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x2d) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_004dc566;
    }
    FUN_007a6a2f();
  }
  uVar3 = local_8;
  if (*param_2 <= (int)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_004dc566:
  puVar2 = (undefined4 *)FUN_004dc5b4(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_004dc5b4(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x4dc5c0;
  if (0x7fffffd < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_004dc726(unaff_ESI[6],param_1_00,unaff_ESI[6],0);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_004dc6db;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_004dc6db;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_004dc6db:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xb) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x2c) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xb) == '\0') {
LAB_004dc697:
        *(undefined *)(piVar1 + 0xb) = 1;
        *(undefined *)(piVar7 + 0xb) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x2c) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007fb425(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x2c) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x2c) = 0;
        FUN_004fc926(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xb) == '\0') goto LAB_004dc697;
    if (piVar8 == (int *)*piVar1) {
      FUN_004fc926(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x2c) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x2c) = 0;
    FUN_007fb425(unaff_ESI);
  } while( true );
}



undefined4 * __fastcall FUN_004dc703(undefined4 param_1,int *param_2)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  puVar2 = *(undefined4 **)(in_EAX + 0x18);
  if (*(char *)((int)(undefined4 *)puVar2[1] + 0x2d) == '\0') {
    puVar1 = puVar2;
    puVar3 = (undefined4 *)puVar2[1];
    do {
      puVar2 = puVar3;
      if ((int)puVar2[3] < *param_2) {
        puVar3 = (undefined4 *)puVar2[2];
        puVar2 = puVar1;
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
      }
      puVar1 = puVar2;
    } while (*(char *)((int)puVar3 + 0x2d) == '\0');
  }
  return puVar2;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_004dc726(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined param_4)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x30);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_1_00;
    basic_string<>(param_1_00 + 1);
    *(undefined *)(puVar1 + 0xb) = param_4;
    *(undefined *)((int)puVar1 + 0x2d) = 0;
  }
  return puVar1;
}



void Catch_All_004dc786(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void FUN_004dc799(int *param_1)

{
  if ((undefined4 *)*param_1 != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)*param_1)(1);
    *param_1 = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dc7af(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4dc7bb;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fc0fbc,8);
  local_8 = 0;
  local_18 = 0xdf332fbf;
  local_14 = 0x364dc3a2;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dc800(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4dc80c;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fc0fa8,9);
  local_8 = 0;
  local_18 = 0xe85fb862;
  local_14 = 0x6f96eb81;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dc851(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4dc85d;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fc0f8c,0xd);
  local_8 = 0;
  local_18 = 0x18f281ab;
  local_14 = 0x1bb41895;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dc8a2(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4dc8ae;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fc0f74,0xb);
  local_8 = 0;
  local_18 = 0xe6e64e09;
  local_14 = 0x721a6fb6;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dc8f3(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4dc8ff;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fc0f44,0x16);
  local_8 = 0;
  local_18 = 0x55ef4e59;
  local_14 = 0xb657bb68;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dc944(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4dc950;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fc0f34,6);
  local_8 = 0;
  local_18 = 0xd053686;
  local_14 = 0x5f25d202;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dc995(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4dc9a1;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fc0f28,5);
  local_8 = 0;
  local_18 = 0xb0a9ab1;
  local_14 = 0xc76715cf;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



undefined4 * __thiscall FUN_004dc9e6(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WE711C61D::W00A9C67E::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_004dca03(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WE711C61D::W1928A41B::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __fastcall FUN_004dca20(int param_1)

{
  return *(int *)(*(int *)(param_1 + 0x10) + 8) - *(int *)(*(int *)(param_1 + 0x10) + 4);
}



void FUN_004dca2c(undefined4 param_1,int *param_2,undefined4 *param_3)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  undefined auStack_184 [7];
  char local_17d;
  undefined4 *local_17c;
  undefined4 local_178;
  undefined4 local_174;
  undefined4 local_170;
  int *local_16c;
  undefined4 *local_168;
  undefined4 local_164;
  undefined local_160 [8];
  undefined local_158 [28];
  undefined4 local_13c;
  undefined local_134 [28];
  undefined4 local_118;
  int *local_f4;
  undefined local_f0 [16];
  int local_e0;
  undefined local_dc [28];
  undefined4 local_c0;
  undefined local_b8 [156];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3ac47;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_184;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xfffffe70;
  ExceptionList = &local_14;
  local_164 = param_1;
  local_17d = *param_2 != 0;
  if (!(bool)local_17d) {
    FUN_00b940e0(0x2ce04635,uVar3);
  }
  local_16c = (int *)0x0;
  if (local_17d != '\0') {
    uVar6 = *(undefined4 *)(*param_2 + 8);
    local_17d = FUN_00b93390();
    if (local_17d == '\0') {
      FUN_00b940e0(0xbddc0928,uVar3);
    }
    else {
      local_17c = (undefined4 *)operator_new(0x24);
      local_c = 0;
      if (local_17c == (undefined4 *)0x0) {
        local_16c = (int *)0x0;
      }
      else {
        local_16c = (int *)FUN_00874cb0(local_16c,uVar6);
      }
      local_f4 = local_16c;
      local_c = 1;
      FUN_004325b6(L"UTF-8");
      local_c._0_1_ = 2;
      FUN_008d9fd0(local_16c,local_b8);
      local_c._0_1_ = 4;
      FUN_0040159c();
      iVar4 = FUN_008d7450();
      if (iVar4 == 0) {
        puVar5 = (undefined4 *)FUN_00b93190(*param_2,&local_168);
        uVar6 = *puVar5;
        *puVar5 = 0;
        FUN_0040c727(uVar6);
        if (local_168 != (undefined4 *)0x0) {
          (**(code **)*local_168)(1);
        }
        local_c = CONCAT31(local_c._1_3_,1);
        FUN_004dbcfb();
        local_c = 0xffffffff;
        if (local_16c != (int *)0x0) {
          (**(code **)(*local_16c + 4))(1);
        }
      }
      else {
        uVar6 = FUN_004dc995();
        local_c._0_1_ = 5;
        basic_string<>(uVar6);
        local_c0 = 0;
        local_c._0_1_ = 6;
        FUN_008d7450(local_dc);
        local_168 = (undefined4 *)FUN_004f4ba0();
        FUN_0040159c();
        local_c._0_1_ = 4;
        FUN_00401829(1,0);
        local_17c = (undefined4 *)0x2;
        puVar5 = (undefined4 *)FUN_005d491b(local_160,&local_17c);
        local_174 = *puVar5;
        local_170 = puVar5[1];
        local_178 = param_3[6];
        local_17c = (undefined4 *)*param_3;
        cVar2 = FUN_006b8eca();
        if (cVar2 == '\0') {
          uVar6 = FUN_004dc8a2();
          local_c._0_1_ = 7;
          basic_string<>(uVar6);
          local_13c = 0;
          local_c._0_1_ = 8;
          iVar4 = FUN_004f4ba0(local_158);
          FUN_0040159c();
          local_c._0_1_ = 4;
          FUN_00401829(1,0);
          if (iVar4 != 0) {
            iVar4 = FUN_006badde();
            basic_string<>(iVar4 + 4);
            local_118 = 0;
            local_c._0_1_ = 9;
            FUN_004f4c35(local_134);
            local_c._0_1_ = 4;
            FUN_0040159c();
          }
        }
        local_17c = (undefined4 *)0x3;
        puVar5 = (undefined4 *)FUN_005d491b(local_160,&local_17c);
        local_174 = *puVar5;
        local_170 = puVar5[1];
        local_178 = param_3[6];
        local_17c = (undefined4 *)*param_3;
        cVar2 = FUN_006b8eca();
        if (cVar2 == '\0') {
          uVar6 = FUN_004dc851();
          local_c._0_1_ = 10;
          basic_string<>(uVar6);
          local_118 = 0;
          local_c._0_1_ = 0xb;
          iVar4 = FUN_004f4ba0(local_134);
          FUN_0040159c();
          local_c._0_1_ = 4;
          FUN_00401829(1,0);
          if (iVar4 != 0) {
            iVar4 = FUN_006badde();
            basic_string<>(iVar4 + 4);
            local_13c = 0;
            local_c._0_1_ = 0xc;
            FUN_004f4c35(local_158);
            local_c._0_1_ = 4;
            FUN_0040159c();
          }
        }
        local_17c = (undefined4 *)0x1;
        puVar5 = (undefined4 *)FUN_005d491b(local_160,&local_17c);
        local_174 = *puVar5;
        local_170 = puVar5[1];
        local_178 = param_3[6];
        local_17c = (undefined4 *)*param_3;
        cVar2 = FUN_006b8eca();
        if (cVar2 == '\0') {
          uVar6 = FUN_004dc8f3();
          local_c._0_1_ = 0xd;
          basic_string<>(uVar6);
          local_118 = 0;
          local_c._0_1_ = 0xe;
          iVar4 = FUN_004f4ba0(local_134);
          FUN_0040159c();
          local_c._0_1_ = 4;
          FUN_00401829(1,0);
          if (iVar4 != 0) {
            iVar4 = FUN_006badde();
            basic_string<>(iVar4 + 4);
            local_13c = 0;
            local_c._0_1_ = 0xf;
            FUN_004f4c35(local_158);
            local_c._0_1_ = 4;
            FUN_0040159c();
          }
        }
        local_17c = (undefined4 *)0x4;
        puVar5 = (undefined4 *)FUN_005d491b(local_160,&local_17c);
        local_174 = *puVar5;
        local_170 = puVar5[1];
        local_178 = param_3[6];
        local_17c = (undefined4 *)*param_3;
        cVar2 = FUN_006b8eca();
        if (cVar2 == '\0') {
          uVar6 = FUN_004dc800();
          local_c._0_1_ = 0x10;
          basic_string<>(uVar6);
          local_118 = 0;
          local_c._0_1_ = 0x11;
          iVar4 = FUN_004f4ba0(local_134);
          FUN_0040159c();
          local_c._0_1_ = 4;
          FUN_00401829(1,0);
          if (iVar4 != 0) {
            iVar4 = FUN_006badde();
            basic_string<>(iVar4 + 4);
            local_13c = 0;
            local_c._0_1_ = 0x12;
            FUN_004f4c35(local_158);
            local_c._0_1_ = 4;
            FUN_0040159c();
          }
        }
        local_17c = (undefined4 *)0x5;
        puVar5 = (undefined4 *)FUN_005d491b(local_160,&local_17c);
        local_174 = *puVar5;
        local_170 = puVar5[1];
        local_178 = param_3[6];
        local_17c = (undefined4 *)*param_3;
        cVar2 = FUN_006b8eca();
        if (cVar2 == '\0') {
          uVar6 = FUN_004dc7af();
          local_c._0_1_ = 0x13;
          basic_string<>(uVar6);
          local_118 = 0;
          local_c._0_1_ = 0x14;
          iVar4 = FUN_004f4ba0(local_134);
          FUN_0040159c();
          local_c._0_1_ = 4;
          FUN_00401829(1,0);
          if (iVar4 != 0) {
            iVar4 = FUN_006badde();
            basic_string<>(iVar4 + 4);
            local_13c = 0;
            local_c._0_1_ = 0x15;
            FUN_004f4c35(local_158);
            local_c._0_1_ = 4;
            FUN_0040159c();
          }
        }
        FUN_00874e00(0,0);
        local_c = CONCAT31(local_c._1_3_,0x16);
        FUN_008d9770(local_f0,2);
        iVar4 = *(int *)(local_e0 + 8);
        iVar1 = *(int *)(local_e0 + 4);
        puVar5 = (undefined4 *)FUN_00b933f0(&local_17c,0);
        uVar6 = *puVar5;
        *puVar5 = 0;
        FUN_0040c727(uVar6);
        if (local_17c != (undefined4 *)0x0) {
          (**(code **)*local_17c)(1);
        }
        local_164 = 0;
        FUN_00b93010();
        FUN_00874f00(local_164,iVar4 - iVar1);
        local_c._0_1_ = 4;
        FUN_00874be0();
        local_c = CONCAT31(local_c._1_3_,1);
        FUN_004dbcfb();
        local_c = 0xffffffff;
        if (local_16c != (int *)0x0) {
          (**(code **)(*local_16c + 4))(1);
        }
      }
    }
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_004dd19f(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WE711C61D::W909B1582::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd1bc(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd1c8;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc0ff4,9);
  local_8 = 0;
  local_14[0] = 0x514b9c19;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd211(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd21d;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1000,8);
  local_8 = 0;
  local_14[0] = 0x988a7a93;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004dd266(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x5c;
  local_8 = 0x4dd272;
  local_14[0] = 0;
  uVar1 = FUN_004f2541();
  local_8 = 0;
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc100c,9);
  local_8._0_1_ = 1;
  local_14[0] = 0x5a91686e;
  uVar2 = FUN_00b94330(local_14,uVar2);
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_004f4b55(param_1,uVar2,uVar1);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd2f3(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd2ff;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1018,4);
  local_8 = 0;
  local_14[0] = 0xbde174a7;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd348(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd354;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1020,5);
  local_8 = 0;
  local_14[0] = 0xfbca82c7;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004dd39d(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_54 [56];
  undefined4 local_1c;
  undefined4 local_18;
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x60;
  local_8 = 0x4dd3a9;
  local_1c = 0;
  local_18 = 1;
  local_1c = FUN_004f2541();
  local_8 = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_54,&DAT_00fc1028,6);
  local_8._0_1_ = 1;
  local_14 = 0xb203;
  local_12 = 0xd6bc;
  uVar1 = FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_004f4b55(param_1,uVar1,local_1c);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd42f(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd43b;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1030,9);
  local_8 = 0;
  local_14[0] = 0xfb4d64d7;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004dd484(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x5c;
  local_8 = 0x4dd490;
  local_14[0] = 0;
  uVar1 = FUN_004f2541();
  local_8 = 0;
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc103c,0xb);
  local_8._0_1_ = 1;
  local_14[0] = 0xc0dc9d1d;
  uVar2 = FUN_00b94330(local_14,uVar2);
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_004f4b55(param_1,uVar2,uVar1);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd511(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd51d;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1048,0xc);
  local_8 = 0;
  local_14[0] = 0x8269ed9b;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd566(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd572;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1058,7);
  local_8 = 0;
  local_14[0] = 0x93ebaa0c;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd5bb(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd5c7;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1060,7);
  local_8 = 0;
  local_14[0] = 0xdfe0bfa5;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd610(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd61c;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1068,7);
  local_8 = 0;
  local_14[0] = 0x879845cd;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd665(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd671;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1070,0xc);
  local_8 = 0;
  local_14[0] = 0xb758642f;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd6ba(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd6c6;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,"",0xf);
  local_8 = 0;
  local_14[0] = 0x53faeac5;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd70f(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd71b;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1090,6);
  local_8 = 0;
  local_14[0] = 0xaeea3c68;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd764(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd770;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1098,8);
  local_8 = 0;
  local_14[0] = 0x1658480f;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004dd7b9(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x5c;
  local_8 = 0x4dd7c5;
  local_14[0] = 0;
  uVar1 = FUN_004f2541();
  local_8 = 0;
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc10a4,6);
  local_8._0_1_ = 1;
  local_14[0] = 0xd7d2496a;
  uVar2 = FUN_00b94330(local_14,uVar2);
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_004f4b55(param_1,uVar2,uVar1);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004dd846(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x5c;
  local_8 = 0x4dd852;
  local_14[0] = 0;
  uVar1 = FUN_004f2541();
  local_8 = 0;
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc10ac,4);
  local_8._0_1_ = 1;
  local_14[0] = 0x61ccecad;
  uVar2 = FUN_00b94330(local_14,uVar2);
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_004f4b55(param_1,uVar2,uVar1);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004dd8d3(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x5c;
  local_8 = 0x4dd8df;
  local_14[0] = 0;
  uVar1 = FUN_004f2541();
  local_8 = 0;
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc10b4,8);
  local_8._0_1_ = 1;
  local_14[0] = 0xf177979c;
  uVar2 = FUN_00b94330(local_14,uVar2);
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_004f4b55(param_1,uVar2,uVar1);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd960(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd96c;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc10c0,7);
  local_8 = 0;
  local_14[0] = 0x5ab00d3a;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dd9b5(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dd9c1;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc10c8,10);
  local_8 = 0;
  local_14[0] = 0xb74fac89;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dda0a(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dda16;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc10d4,10);
  local_8 = 0;
  local_14[0] = 0xb3810df8;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dda5f(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dda6b;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc10e0,6);
  local_8 = 0;
  local_14[0] = 0xb47ce15d;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004ddab4(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4ddac0;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc10e8,7);
  local_8 = 0;
  local_14[0] = 0x45912aec;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004ddb09(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4ddb15;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc10f0,8);
  local_8 = 0;
  local_14[0] = 0x6deb81e3;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004ddb5e(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4ddb6a;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc10fc,6);
  local_8 = 0;
  local_14[0] = 0xbccc97ed;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004ddbb3(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4ddbbf;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1104,4);
  local_8 = 0;
  local_14[0] = 0xf26c33c7;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004ddc08(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4ddc14;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc110c,0xd);
  local_8 = 0;
  local_14[0] = 0x6a9ba8a4;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004ddc5d(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4ddc69;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc111c,0xd);
  local_8 = 0;
  local_14[0] = 0x6fa8428;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004ddcb2(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4ddcbe;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc112c,9);
  local_8 = 0;
  local_14[0] = 0x54ba4d2b;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004ddd07(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4ddd13;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1138,7);
  local_8 = 0;
  local_14[0] = 0x2f9cf392;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004ddd5c(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4ddd68;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1140,0xb);
  local_8 = 0;
  local_14[0] = 0x276fc0c0;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dddb1(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dddbd;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc114c,7);
  local_8 = 0;
  local_14[0] = 0xf077604e;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dde06(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dde12;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1154,0xd);
  local_8 = 0;
  local_14[0] = 0x5b595e9f;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004dde5b(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4dde67;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1164,0xd);
  local_8 = 0;
  local_14[0] = 0xf9b88a3c;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004ddeb0(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4ddebc;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1174,0xc);
  local_8 = 0;
  local_14[0] = 0x5b3dbf0;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004ddf05(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4ddf11;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1184,0xb);
  local_8 = 0;
  local_14[0] = 0x18311e86;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004ddf5a(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4ddf66;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1190,0xb);
  local_8 = 0;
  local_14[0] = 0x6136c469;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004ddfaf(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4ddfbb;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc119c,7);
  local_8 = 0;
  local_14[0] = 0xfbf9791a;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004de004(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4de010;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc11a4,5);
  local_8 = 0;
  local_14[0] = 0x4fb78b31;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004de059(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x5c;
  local_8 = 0x4de065;
  local_14[0] = 0;
  uVar1 = FUN_004f2541();
  local_8 = 0;
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc11ac,4);
  local_8._0_1_ = 1;
  local_14[0] = 0xa759475b;
  uVar2 = FUN_00b94330(local_14,uVar2);
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_004f4b55(param_1,uVar2,uVar1);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_004de0e6(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4de0f2;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc11b4,0xf);
  local_8 = 0;
  local_14[0] = 0x7d5ac442;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004de13b(undefined4 param_1,undefined4 **param_2,int param_3)

{
  int *piVar1;
  undefined4 **ppuStack_34;
  undefined4 *puStack_30;
  undefined4 **local_1c;
  undefined4 ***local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  puStack_30 = &param_2;
  ppuStack_34 = &local_1c;
  local_8 = 0;
  piVar1 = (int *)FUN_004f2556();
  local_11 = *piVar1 != 0;
  if (local_18 != (undefined4 ***)0x0) {
    puStack_30 = (undefined4 *)0x4de16d;
    FUN_0040127a();
  }
  if (local_11 != '\0') {
    ppuStack_34 = param_2;
    local_18 = &ppuStack_34;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_3);
  }
  puStack_30 = &param_2;
  ppuStack_34 = &local_1c;
  piVar1 = (int *)FUN_004f260c();
  local_11 = *piVar1 != 0;
  if (local_18 != (undefined4 ***)0x0) {
    puStack_30 = (undefined4 *)0x4de1b8;
    FUN_0040127a();
  }
  if (local_11 != '\0') {
    ppuStack_34 = param_2;
    local_18 = &ppuStack_34;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_3);
  }
  puStack_30 = &param_2;
  ppuStack_34 = &local_1c;
  piVar1 = (int *)FUN_004f26c2();
  local_11 = *piVar1 != 0;
  if (local_18 != (undefined4 ***)0x0) {
    puStack_30 = (undefined4 *)0x4de203;
    FUN_0040127a();
  }
  if (local_11 != '\0') {
    local_1c = param_2;
    puStack_30 = &param_3;
                    // WARNING: Subroutine does not return
    ppuStack_34 = (undefined4 **)&UNK_004de21a;
    FUN_0043c023();
  }
  puStack_30 = &param_2;
  ppuStack_34 = &local_1c;
  piVar1 = (int *)FUN_004f2778();
  local_11 = *piVar1 != 0;
  if (local_18 != (undefined4 ***)0x0) {
    puStack_30 = (undefined4 *)0x4de24c;
    FUN_0040127a();
  }
  if (local_11 != '\0') {
    ppuStack_34 = param_2;
    local_18 = &ppuStack_34;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_3);
  }
  puStack_30 = &param_2;
  ppuStack_34 = &local_1c;
  piVar1 = (int *)FUN_004f282e();
  local_11 = *piVar1 != 0;
  if (local_18 != (undefined4 ***)0x0) {
    puStack_30 = (undefined4 *)0x4de297;
    FUN_0040127a();
  }
  if (local_11 != '\0') {
    ppuStack_34 = param_2;
    local_18 = &ppuStack_34;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_3);
  }
  puStack_30 = &param_2;
  ppuStack_34 = &local_1c;
  piVar1 = (int *)FUN_004f28e4();
  local_11 = *piVar1 != 0;
  if (local_18 != (undefined4 ***)0x0) {
    puStack_30 = (undefined4 *)0x4de2e2;
    FUN_0040127a();
  }
  if (local_11 != '\0') {
    local_1c = param_2;
    puStack_30 = &param_3;
                    // WARNING: Subroutine does not return
    ppuStack_34 = (undefined4 **)&UNK_004de2f9;
    FUN_0043c023();
  }
  puStack_30 = &param_2;
  ppuStack_34 = &local_1c;
  piVar1 = (int *)FUN_004f299a();
  local_11 = *piVar1 != 0;
  if (local_18 != (undefined4 ***)0x0) {
    puStack_30 = (undefined4 *)0x4de32b;
    FUN_0040127a();
  }
  if (local_11 != '\0') {
    local_1c = param_2;
    puStack_30 = &param_3;
                    // WARNING: Subroutine does not return
    ppuStack_34 = (undefined4 **)&UNK_004de342;
    FUN_0043c023();
  }
  puStack_30 = &param_2;
  ppuStack_34 = &local_1c;
  piVar1 = (int *)FUN_004f2a50();
  local_11 = *piVar1 != 0;
  if (local_18 != (undefined4 ***)0x0) {
    puStack_30 = (undefined4 *)0x4de369;
    FUN_0040127a();
  }
  if (local_11 != '\0') {
    local_1c = param_2;
    puStack_30 = &param_3;
                    // WARNING: Subroutine does not return
    ppuStack_34 = (undefined4 **)&UNK_004de380;
    FUN_0043c023();
  }
  local_8 = 0xffffffff;
  if (param_3 != 0) {
    puStack_30 = (undefined4 *)0x4de3ab;
    FUN_0040127a();
  }
  return 1;
}



void FUN_004deb27(void)

{
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



void FUN_004dec10(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int local_25c;
  int local_254;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_250 [24];
  undefined4 local_238;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_234 [28];
  undefined local_218 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_1fc [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_1e0 [28];
  undefined local_1c4 [28];
  undefined local_1a8 [28];
  undefined local_18c [116];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_118 [24];
  undefined4 local_100;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_fc [28];
  undefined local_e0 [28];
  undefined local_c4 [56];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c36c1d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffd98;
  ExceptionList = &local_14;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Baltic");
  local_c = 0;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 1;
  uVar2 = FUN_004f1cba(local_218,0x190a8,1,uVar1);
  local_c._0_1_ = 2;
  uVar3 = FUN_004dd566();
  local_c._0_1_ = 3;
  uVar4 = FUN_004f1e0b(local_1fc,local_234);
  local_c._0_1_ = 4;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,5);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"Central Europe");
  local_c = 6;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 7;
  uVar2 = FUN_004f1cba(local_1e0,0x190a8,2);
  local_c._0_1_ = 8;
  uVar3 = FUN_004dd665();
  local_c._0_1_ = 9;
  uVar4 = FUN_004f1e0b(local_218,local_234);
  local_c._0_1_ = 10;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0xb);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"South East Europe");
  local_c = 0xc;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0xd;
  uVar2 = FUN_004f1cba(local_1e0,0x190a8,3);
  local_c._0_1_ = 0xe;
  uVar3 = FUN_004ddf05();
  local_c._0_1_ = 0xf;
  uVar4 = FUN_004f1e0b(local_218,local_234);
  local_c._0_1_ = 0x10;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x11);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"Mediterranean");
  local_c = 0x12;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1cba(local_1e0,0x190a8,4);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004ddcb2();
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004f1e0b(local_218,local_234);
  local_c._0_1_ = 0x16;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x17);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"South Asia/Levan");
  local_c = 0x18;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1cba(local_1e0,0x190a8,5);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004dde06();
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004f1e0b(local_218,local_234);
  local_c._0_1_ = 0x1c;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x1d);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"Middle East/North Africa");
  local_c = 0x1e;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1cba(local_1e0,0x190a8,6);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004ddc08();
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004f1e0b(local_218,local_234);
  local_c._0_1_ = 0x22;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x23);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"Central Asia");
  local_c = 0x24;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0x25;
  uVar2 = FUN_004f1cba(local_1e0,0x190a8,7);
  local_c._0_1_ = 0x26;
  uVar3 = FUN_004dd5bb();
  local_c._0_1_ = 0x27;
  uVar4 = FUN_004f1e0b(local_218,local_234);
  local_c._0_1_ = 0x28;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x29);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Russia");
  local_c = 0x2a;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0x2b;
  uVar2 = FUN_004f1cba(local_1e0,0x190a8,8);
  local_c._0_1_ = 0x2c;
  uVar3 = FUN_004dddb1();
  local_c._0_1_ = 0x2d;
  uVar4 = FUN_004f1e0b(local_218,local_234);
  local_c._0_1_ = 0x2e;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x2f);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"Australia/New Zealand");
  local_c = 0x30;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0x31;
  uVar2 = FUN_004f1cba(local_1e0,0x190a8,9);
  local_c._0_1_ = 0x32;
  uVar3 = FUN_004dd2f3();
  local_c._0_1_ = 0x33;
  uVar4 = FUN_004f1e0b(local_218,local_234);
  local_c._0_1_ = 0x34;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x35);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  local_254 = 1;
  local_25c = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Europe")
    ;
    local_c = 0x36;
    local_238 = 0xf;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
              (local_250,0);
    local_c._0_1_ = 0x37;
    uVar2 = FUN_004f1cba(local_1e0,0x190a8,local_254 + 9);
    local_c._0_1_ = 0x38;
    uVar3 = FUN_004dd8d3(local_1fc,local_254);
    local_c._0_1_ = 0x39;
    uVar4 = FUN_004f1ec9(local_218,local_234,local_254);
    local_c._0_1_ = 0x3a;
    uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
    local_c = CONCAT31(local_c._1_3_,0x3b);
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = 0xffffffff;
    FUN_004017b2(1,0);
    local_254 = local_254 + 1;
    local_25c = local_25c + -1;
  } while (local_25c != 0);
  local_254 = 1;
  local_25c = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_234,"America");
    local_c = 0x3c;
    local_238 = 0xf;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
              (local_250,0);
    local_c._0_1_ = 0x3d;
    uVar2 = FUN_004f1cba(local_1e0,0x190a8,local_254 + 0xe);
    local_c._0_1_ = 0x3e;
    uVar3 = FUN_004dd266(local_1fc,local_254);
    local_c._0_1_ = 0x3f;
    uVar4 = FUN_004f1ec9(local_218,local_234,local_254);
    local_c._0_1_ = 0x40;
    uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
    local_c = CONCAT31(local_c._1_3_,0x41);
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = 0xffffffff;
    FUN_004017b2(1,0);
    local_254 = local_254 + 1;
    local_25c = local_25c + -1;
  } while (local_25c != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"France");
  local_c = 0x42;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0x43;
  uVar2 = FUN_004f1cba(local_1c4,0x190a8,0x11);
  local_c._0_1_ = 0x44;
  uVar3 = FUN_004dd960();
  local_c._0_1_ = 0x45;
  uVar4 = FUN_004f1e0b(local_218,local_234);
  local_c._0_1_ = 0x46;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x47);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"APAC");
  local_c = 0x48;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0x49;
  uVar2 = FUN_004f1cba(local_218,0x190a8,0x65);
  local_c._0_1_ = 0x4a;
  uVar3 = FUN_004dd348();
  local_c._0_1_ = 0x4b;
  uVar4 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x4c;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x4d);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Thai");
  local_c = 0x4e;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0x4f;
  uVar2 = FUN_004f1cba(local_218,0x190a8,0x66);
  local_c._0_1_ = 0x50;
  uVar3 = FUN_004de004();
  local_c._0_1_ = 0x51;
  uVar4 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x52;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x53);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"India");
  local_c = 0x54;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0x55;
  uVar2 = FUN_004f1cba(local_218,0x190a8,0x67);
  local_c._0_1_ = 0x56;
  uVar3 = FUN_004dda5f();
  local_c._0_1_ = 0x57;
  uVar4 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x58;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x59);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_1e0,"Hong Kong");
  local_c = 0x5a;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0x5b;
  uVar2 = FUN_004f1cba(local_218,0x190a8,0x68);
  local_c._0_1_ = 0x5c;
  uVar3 = FUN_004dd9b5();
  local_c._0_1_ = 0x5d;
  uVar4 = FUN_004f1e0b(local_1c4,local_1e0);
  local_c._0_1_ = 0x5e;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x5f);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_1fc,"Taiwan");
  local_c = 0x60;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0x61;
  uVar2 = FUN_004f1cba(local_218,0x190a8,0x69);
  local_c._0_1_ = 0x62;
  uVar3 = FUN_004ddfaf();
  local_c._0_1_ = 99;
  uVar4 = FUN_004f1e0b(local_1c4,local_1fc);
  local_c._0_1_ = 100;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x65);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  local_254 = 1;
  local_25c = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_1fc,"America");
    local_c = 0x66;
    local_238 = 0xf;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
              (local_250,0);
    local_c._0_1_ = 0x67;
    uVar2 = FUN_004f1cba(local_218,0x190a8,local_254 + 0x69);
    local_c._0_1_ = 0x68;
    uVar3 = FUN_004dd266(local_1a8,local_254);
    local_c._0_1_ = 0x69;
    uVar4 = FUN_004f1ec9(local_1c4,local_1fc,local_254);
    local_c._0_1_ = 0x6a;
    uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
    local_c = CONCAT31(local_c._1_3_,0x6b);
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = 0xffffffff;
    FUN_004017b2(1,0);
    local_254 = local_254 + 1;
    local_25c = local_25c + -1;
  } while (local_25c != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_1fc,"China");
  local_c = 0x6c;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0x6d;
  uVar2 = FUN_004f1cba(local_218,0x190a8,0x6c);
  local_c._0_1_ = 0x6e;
  uVar3 = FUN_004dd70f();
  local_c._0_1_ = 0x6f;
  uVar4 = FUN_004f1e0b(local_1c4,local_1fc);
  local_c._0_1_ = 0x70;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x71);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_1e0,"Middle East/North Africa");
  local_c = 0x72;
  local_238 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_250,0);
  local_c._0_1_ = 0x73;
  uVar2 = FUN_004f1cba(local_218,0x190a8,0x6d);
  local_c._0_1_ = 0x74;
  uVar3 = FUN_004ddc08();
  local_c._0_1_ = 0x75;
  uVar4 = FUN_004f1e0b(local_1c4,local_1e0);
  local_c._0_1_ = 0x76;
  uVar2 = FUN_004f60e4(local_18c,uVar4,uVar3,uVar2,local_250);
  local_c = CONCAT31(local_c._1_3_,0x77);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_fc,"South Asia/Levan");
  local_c = 0x78;
  local_100 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_118,0);
  local_c._0_1_ = 0x79;
  uVar2 = FUN_004f1cba(local_e0,0x190a8,0x6e);
  local_c._0_1_ = 0x7a;
  uVar3 = FUN_004dde06();
  local_c._0_1_ = 0x7b;
  uVar4 = FUN_004f1e0b(local_c4,local_fc);
  local_c._0_1_ = 0x7c;
  uVar2 = FUN_004f60e4(local_8c,uVar4,uVar3,uVar2,local_118);
  local_c = CONCAT31(local_c._1_3_,0x7d);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  ExceptionList = local_14;
  return;
}



void FUN_004e01a3(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int local_1b8;
  int local_1b0;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_1ac [24];
  undefined4 local_194;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_190 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_174 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_158 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [64];
  undefined local_fc [28];
  undefined local_e0 [28];
  undefined local_c4 [28];
  undefined local_a8 [116];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c36692;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffe38;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x190a9);
  local_c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_190,"Baltic");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 2;
  uVar2 = FUN_004f20d4(local_158,1);
  local_c._0_1_ = 3;
  uVar3 = FUN_004dd566(uVar1);
  local_c._0_1_ = 4;
  uVar4 = FUN_004f1e0b(local_174,local_190);
  local_c._0_1_ = 5;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 6;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_190,"Central Europe");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 8;
  uVar2 = FUN_004f20d4(local_158,2);
  local_c._0_1_ = 9;
  uVar3 = FUN_004dd665();
  local_c._0_1_ = 10;
  uVar4 = FUN_004f1e0b(local_174,local_190);
  local_c._0_1_ = 0xb;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0xc;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_190,"South East Europe");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0xe;
  uVar2 = FUN_004f20d4(local_158,3);
  local_c._0_1_ = 0xf;
  uVar3 = FUN_004ddf05();
  local_c._0_1_ = 0x10;
  uVar4 = FUN_004f1e0b(local_174,local_190);
  local_c._0_1_ = 0x11;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x12;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_190,"Mediterranean");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x14;
  uVar2 = FUN_004f20d4(local_158,4);
  local_c._0_1_ = 0x15;
  uVar3 = FUN_004ddcb2();
  local_c._0_1_ = 0x16;
  uVar4 = FUN_004f1e0b(local_174,local_190);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_190,"South Asia/Levan");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x1a;
  uVar2 = FUN_004f20d4(local_158,5);
  local_c._0_1_ = 0x1b;
  uVar3 = FUN_004dde06();
  local_c._0_1_ = 0x1c;
  uVar4 = FUN_004f1e0b(local_174,local_190);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_190,"Middle East/North Africa");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x20;
  uVar2 = FUN_004f20d4(local_158,6);
  local_c._0_1_ = 0x21;
  uVar3 = FUN_004ddc08();
  local_c._0_1_ = 0x22;
  uVar4 = FUN_004f1e0b(local_174,local_190);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_190,"Central Asia");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x26;
  uVar2 = FUN_004f20d4(local_158,7);
  local_c._0_1_ = 0x27;
  uVar3 = FUN_004dd5bb();
  local_c._0_1_ = 0x28;
  uVar4 = FUN_004f1e0b(local_174,local_190);
  local_c._0_1_ = 0x29;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x2a;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_190,"Russia");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x2c;
  uVar2 = FUN_004f20d4(local_158,8);
  local_c._0_1_ = 0x2d;
  uVar3 = FUN_004dddb1();
  local_c._0_1_ = 0x2e;
  uVar4 = FUN_004f1e0b(local_174,local_190);
  local_c._0_1_ = 0x2f;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x30;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_190,"Australia/New Zealand");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x32;
  uVar2 = FUN_004f20d4(local_158,9);
  local_c._0_1_ = 0x33;
  uVar3 = FUN_004dd2f3();
  local_c._0_1_ = 0x34;
  uVar4 = FUN_004f1e0b(local_174,local_190);
  local_c._0_1_ = 0x35;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x36;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  local_1b0 = 1;
  local_1b8 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_190,"Europe")
    ;
    local_194 = 0xf;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
              (local_1ac,0);
    local_c._0_1_ = 0x38;
    uVar2 = FUN_004f20d4(local_158,local_1b0 + 9);
    local_c._0_1_ = 0x39;
    uVar3 = FUN_004dd8d3(local_13c,local_1b0);
    local_c._0_1_ = 0x3a;
    uVar4 = FUN_004f1ec9(local_174,local_190,local_1b0);
    local_c._0_1_ = 0x3b;
    uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
    local_c._0_1_ = 0x3c;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_1b0 = local_1b0 + 1;
    local_1b8 = local_1b8 + -1;
  } while (local_1b8 != 0);
  local_1b0 = 1;
  local_1b8 = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_190,"America");
    local_194 = 0xf;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
              (local_1ac,0);
    local_c._0_1_ = 0x3e;
    uVar2 = FUN_004f20d4(local_158,local_1b0 + 0xe);
    local_c._0_1_ = 0x3f;
    uVar3 = FUN_004dd266(local_13c,local_1b0);
    local_c._0_1_ = 0x40;
    uVar4 = FUN_004f1ec9(local_174,local_190,local_1b0);
    local_c._0_1_ = 0x41;
    uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
    local_c._0_1_ = 0x42;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_1b0 = local_1b0 + 1;
    local_1b8 = local_1b8 + -1;
  } while (local_1b8 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_190,"France");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x44;
  uVar2 = FUN_004f20d4(local_e0,0x11);
  local_c._0_1_ = 0x45;
  uVar3 = FUN_004dd960();
  local_c._0_1_ = 0x46;
  uVar4 = FUN_004f1e0b(local_c4,local_190);
  local_c._0_1_ = 0x47;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x48;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_190,"APAC");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x4a;
  uVar2 = FUN_004f20d4(local_c4,0x65);
  local_c._0_1_ = 0x4b;
  uVar3 = FUN_004dd348();
  local_c._0_1_ = 0x4c;
  uVar4 = FUN_004f1e0b(local_e0,local_190);
  local_c._0_1_ = 0x4d;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x4e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_34,"Thai");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x50;
  uVar2 = FUN_004f20d4(local_c4,0x66);
  local_c._0_1_ = 0x51;
  uVar3 = FUN_004de004();
  local_c._0_1_ = 0x52;
  uVar4 = FUN_004f1e0b(local_e0,local_34);
  local_c._0_1_ = 0x53;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x54;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_158,"India");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x56;
  uVar2 = FUN_004f20d4(local_c4,0x67);
  local_c._0_1_ = 0x57;
  uVar3 = FUN_004dda5f();
  local_c._0_1_ = 0x58;
  uVar4 = FUN_004f1e0b(local_e0,local_158);
  local_c._0_1_ = 0x59;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x5a;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Hong Kong");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x5c;
  uVar2 = FUN_004f20d4(local_c4,0x68);
  local_c._0_1_ = 0x5d;
  uVar3 = FUN_004dd9b5();
  local_c._0_1_ = 0x5e;
  uVar4 = FUN_004f1e0b(local_e0,local_13c);
  local_c._0_1_ = 0x5f;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x60;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_174,"Taiwan");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x62;
  uVar2 = FUN_004f20d4(local_c4,0x69);
  local_c._0_1_ = 99;
  uVar3 = FUN_004ddfaf();
  local_c._0_1_ = 100;
  uVar4 = FUN_004f1e0b(local_e0,local_174);
  local_c._0_1_ = 0x65;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x66;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  local_1b0 = 1;
  local_1b8 = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_174,"America");
    local_194 = 0xf;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
              (local_1ac,0);
    local_c._0_1_ = 0x68;
    uVar2 = FUN_004f20d4(local_c4,local_1b0 + 0x69);
    local_c._0_1_ = 0x69;
    uVar3 = FUN_004dd266(local_fc,local_1b0);
    local_c._0_1_ = 0x6a;
    uVar4 = FUN_004f1ec9(local_e0,local_174,local_1b0);
    local_c._0_1_ = 0x6b;
    uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
    local_c._0_1_ = 0x6c;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_1b0 = local_1b0 + 1;
    local_1b8 = local_1b8 + -1;
  } while (local_1b8 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_174,"China");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x6e;
  uVar2 = FUN_004f20d4(local_c4,0x6c);
  local_c._0_1_ = 0x6f;
  uVar3 = FUN_004dd70f();
  local_c._0_1_ = 0x70;
  uVar4 = FUN_004f1e0b(local_e0,local_174);
  local_c._0_1_ = 0x71;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x72;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Middle East/North Africa");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x74;
  uVar2 = FUN_004f20d4(local_c4,0x6d);
  local_c._0_1_ = 0x75;
  uVar3 = FUN_004ddc08();
  local_c._0_1_ = 0x76;
  uVar4 = FUN_004f1e0b(local_e0,local_13c);
  local_c._0_1_ = 0x77;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c._0_1_ = 0x78;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_158,"South Asia/Levan");
  local_194 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_1ac,0);
  local_c._0_1_ = 0x7a;
  uVar2 = FUN_004f20d4(local_c4,0x6e);
  local_c._0_1_ = 0x7b;
  uVar3 = FUN_004dde06();
  local_c._0_1_ = 0x7c;
  uVar4 = FUN_004f1e0b(local_e0,local_158);
  local_c._0_1_ = 0x7d;
  uVar2 = FUN_004f60e4(local_a8,uVar4,uVar3,uVar2,local_1ac);
  local_c = CONCAT31(local_c._1_3_,0x7e);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004e1685(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_250 [28];
  undefined local_234 [28];
  undefined local_218 [28];
  undefined local_1fc [28];
  undefined local_1e0 [28];
  undefined local_1c4 [116];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_150 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_134 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_118 [28];
  undefined local_fc [28];
  undefined local_e0 [56];
  undefined local_a8 [28];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2fe6d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffd98;
  ExceptionList = &local_14;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_250,"Adriatic")
  ;
  local_c = 0;
  uVar2 = FUN_004f1d8d(local_218,0xc,uVar1);
  local_c._0_1_ = 1;
  uVar3 = FUN_004f1fa3(local_1e0,0xb74263);
  local_c._0_1_ = 2;
  uVar4 = FUN_004dd1bc();
  local_c._0_1_ = 3;
  uVar5 = FUN_004f1e0b(local_1fc,local_250);
  local_c._0_1_ = 4;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,5);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_250,"America");
  local_c = 6;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 7;
  uVar3 = FUN_004f1fa3(local_234,0xb74269);
  local_c._0_1_ = 8;
  uVar4 = FUN_004dd211();
  local_c._0_1_ = 9;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 10;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0xb);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_250,"APAC/Australia/New Zealand");
  local_c = 0xc;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0xd;
  uVar3 = FUN_004f1fa3(local_234,0xb74276);
  local_c._0_1_ = 0xe;
  uVar4 = FUN_004dd42f();
  local_c._0_1_ = 0xf;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 0x10;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x11);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_250,"Baltic");
  local_c = 0x12;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x13;
  uVar3 = FUN_004f1fa3(local_234,0xb741df);
  local_c._0_1_ = 0x14;
  uVar4 = FUN_004dd566();
  local_c._0_1_ = 0x15;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 0x16;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x17);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_250,"Central Asia");
  local_c = 0x18;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x19;
  uVar3 = FUN_004f1fa3(local_234,0xb7427e);
  local_c._0_1_ = 0x1a;
  uVar4 = FUN_004dd610();
  local_c._0_1_ = 0x1b;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 0x1c;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x1d);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_250,"Central Europe");
  local_c = 0x1e;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x1f;
  uVar3 = FUN_004f1fa3(local_234,0xb74284);
  local_c._0_1_ = 0x20;
  uVar4 = FUN_004dd6ba();
  local_c._0_1_ = 0x21;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 0x22;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x23);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_250,"China");
  local_c = 0x24;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x25;
  uVar3 = FUN_004f1fa3(local_234,0xb7424b);
  local_c._0_1_ = 0x26;
  uVar4 = FUN_004dd70f();
  local_c._0_1_ = 0x27;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 0x28;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x29);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_250,"France");
  local_c = 0x2a;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x2b;
  uVar3 = FUN_004f1fa3(local_234,0xb7428a);
  local_c._0_1_ = 0x2c;
  uVar4 = FUN_004dd960();
  local_c._0_1_ = 0x2d;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 0x2e;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x2f);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_250,"Hong Kong");
  local_c = 0x30;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x31;
  uVar3 = FUN_004f1fa3(local_234,0xb74251);
  local_c._0_1_ = 0x32;
  uVar4 = FUN_004dda0a();
  local_c._0_1_ = 0x33;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 0x34;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x35);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_250,"Israel");
  local_c = 0x36;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x37;
  uVar3 = FUN_004f1fa3(local_234,0xb795ac);
  local_c._0_1_ = 0x38;
  uVar4 = FUN_004ddab4();
  local_c._0_1_ = 0x39;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 0x3a;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x3b);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_250,"Jamaica");
  local_c = 0x3c;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x3d;
  uVar3 = FUN_004f1fa3(local_234,0xb79590);
  local_c._0_1_ = 0x3e;
  uVar4 = FUN_004ddb09();
  local_c._0_1_ = 0x3f;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 0x40;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x41);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_250,"Japan");
  local_c = 0x42;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x43;
  uVar3 = FUN_004f1fa3(local_234,0xb74294);
  local_c._0_1_ = 0x44;
  uVar4 = FUN_004ddb5e();
  local_c._0_1_ = 0x45;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 0x46;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x47);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_250,"Nordic");
  local_c = 0x48;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x49;
  uVar3 = FUN_004f1fa3(local_234,0xb74257);
  local_c._0_1_ = 0x4a;
  uVar4 = FUN_004ddd07();
  local_c._0_1_ = 0x4b;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 0x4c;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x4d);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_250,"Russia");
  local_c = 0x4e;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x4f;
  uVar3 = FUN_004f1fa3(local_234,&UNK_00b7aff4);
  local_c._0_1_ = 0x50;
  uVar4 = FUN_004dddb1();
  local_c._0_1_ = 0x51;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 0x52;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x53);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_250,"South East Europe");
  local_c = 0x54;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x55;
  uVar3 = FUN_004f1fa3(local_234,0xb7429a);
  local_c._0_1_ = 0x56;
  uVar4 = FUN_004ddf5a();
  local_c._0_1_ = 0x57;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 0x58;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x59);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_250,"South Asia/Levan");
  local_c = 0x5a;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x5b;
  uVar3 = FUN_004f1fa3(local_234,0xb742a0);
  local_c._0_1_ = 0x5c;
  uVar4 = FUN_004dde5b();
  local_c._0_1_ = 0x5d;
  uVar5 = FUN_004f1e0b(local_218,local_250);
  local_c._0_1_ = 0x5e;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x5f);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_150,"South Central Africa");
  local_c = 0x60;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x61;
  uVar3 = FUN_004f1fa3(local_234,0xb742a6);
  local_c._0_1_ = 0x62;
  uVar4 = FUN_004ddeb0();
  local_c._0_1_ = 99;
  uVar5 = FUN_004f1e0b(local_218,local_150);
  local_c._0_1_ = 100;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x65);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_134,"Taiwan");
  local_c = 0x66;
  uVar2 = FUN_004f1d8d(local_1fc,0xc);
  local_c._0_1_ = 0x67;
  uVar3 = FUN_004f1fa3(local_234,0xb742b4);
  local_c._0_1_ = 0x68;
  uVar4 = FUN_004ddfaf();
  local_c._0_1_ = 0x69;
  uVar5 = FUN_004f1e0b(local_218,local_134);
  local_c._0_1_ = 0x6a;
  uVar2 = FUN_004f60e4(local_1c4,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x6b);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_118,"Western Europe");
  local_c = 0x6c;
  uVar2 = FUN_004f1d8d(local_e0,0xc);
  local_c._0_1_ = 0x6d;
  uVar3 = FUN_004f1fa3(local_a8,0xb7425d);
  local_c._0_1_ = 0x6e;
  uVar4 = FUN_004de0e6();
  local_c._0_1_ = 0x6f;
  uVar5 = FUN_004f1e0b(local_fc,local_118);
  local_c._0_1_ = 0x70;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x71);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  ExceptionList = local_14;
  return;
}



void FUN_004e28eb(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_234 [28];
  undefined local_218 [28];
  undefined local_1fc [28];
  undefined local_1e0 [28];
  undefined local_1c4 [28];
  undefined local_1a8 [116];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_134 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_118 [28];
  undefined local_fc [28];
  undefined local_e0 [56];
  undefined local_a8 [28];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2f966;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdb8;
  ExceptionList = &local_14;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Adriatic")
  ;
  local_c = 0;
  uVar2 = FUN_004f1d8d(local_1c4,6,uVar1);
  local_c._0_1_ = 1;
  uVar3 = FUN_004f1fa3(local_218,&DAT_00b88d38);
  local_c._0_1_ = 2;
  uVar4 = FUN_004dd1bc();
  local_c._0_1_ = 3;
  uVar5 = FUN_004f1e0b(local_1e0,local_234);
  local_c._0_1_ = 4;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,5);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"America");
  local_c = 6;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 7;
  uVar3 = FUN_004f1fa3(local_1fc,&DAT_00b88d3a);
  local_c._0_1_ = 8;
  uVar4 = FUN_004dd211();
  local_c._0_1_ = 9;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 10;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0xb);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"APAC/Australia/New Zealand");
  local_c = 0xc;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0xd;
  uVar3 = FUN_004f1fa3(local_1fc,&DAT_00b88d3c);
  local_c._0_1_ = 0xe;
  uVar4 = FUN_004dd42f();
  local_c._0_1_ = 0xf;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x10;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x11);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Baltic");
  local_c = 0x12;
  uVar2 = FUN_004f1d8d(local_1e0,6);
  local_c._0_1_ = 0x13;
  uVar3 = FUN_004f1fa3(local_1fc,&DAT_00b88d24);
  local_c._0_1_ = 0x14;
  uVar4 = FUN_004dd566();
  local_c._0_1_ = 0x15;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x16;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x17);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"Central Asia");
  local_c = 0x18;
  uVar2 = FUN_004f1d8d(local_1e0,6);
  local_c._0_1_ = 0x19;
  uVar3 = FUN_004f1fa3(local_1fc,&DAT_00b88d3e);
  local_c._0_1_ = 0x1a;
  uVar4 = FUN_004dd610();
  local_c._0_1_ = 0x1b;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x1c;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x1d);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"Central Europe");
  local_c = 0x1e;
  uVar2 = FUN_004f1d8d(local_1e0,6);
  local_c._0_1_ = 0x1f;
  uVar3 = FUN_004f1fa3(local_1fc,&DAT_00b88d40);
  local_c._0_1_ = 0x20;
  uVar4 = FUN_004dd6ba();
  local_c._0_1_ = 0x21;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x22;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x23);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"China");
  local_c = 0x24;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x25;
  uVar3 = FUN_004f1fa3(local_1fc,&LAB_00b88d26);
  local_c._0_1_ = 0x26;
  uVar4 = FUN_004dd70f();
  local_c._0_1_ = 0x27;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x28;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x29);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"France");
  local_c = 0x2a;
  uVar2 = FUN_004f1d8d(local_1e0,6);
  local_c._0_1_ = 0x2b;
  uVar3 = FUN_004f1fa3(local_1fc,&DAT_00b88d42);
  local_c._0_1_ = 0x2c;
  uVar4 = FUN_004dd960();
  local_c._0_1_ = 0x2d;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x2e;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x2f);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"Hong Kong");
  local_c = 0x30;
  uVar2 = FUN_004f1d8d(local_1e0,6);
  local_c._0_1_ = 0x31;
  uVar3 = FUN_004f1fa3(local_1fc,&DAT_00b88d33);
  local_c._0_1_ = 0x32;
  uVar4 = FUN_004dda0a();
  local_c._0_1_ = 0x33;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x34;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x35);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Israel");
  local_c = 0x36;
  uVar2 = FUN_004f1d8d(local_1e0,6);
  local_c._0_1_ = 0x37;
  uVar3 = FUN_004f1fa3(local_1fc,&DAT_00b88d4d);
  local_c._0_1_ = 0x38;
  uVar4 = FUN_004ddab4();
  local_c._0_1_ = 0x39;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x3a;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x3b);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Jamaica");
  local_c = 0x3c;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x3d;
  uVar3 = FUN_004f1fa3(local_1fc,&DAT_00b88d4b);
  local_c._0_1_ = 0x3e;
  uVar4 = FUN_004ddb09();
  local_c._0_1_ = 0x3f;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x40;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x41);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"Middle East/North Africa");
  local_c = 0x42;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x43;
  uVar3 = FUN_004f1fa3(local_1fc,0xb91333);
  local_c._0_1_ = 0x44;
  uVar4 = FUN_004ddc5d();
  local_c._0_1_ = 0x45;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x46;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x47);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Nordic");
  local_c = 0x48;
  uVar2 = FUN_004f1d8d(local_1e0,6);
  local_c._0_1_ = 0x49;
  uVar3 = FUN_004f1fa3(local_1fc,&DAT_00b88d31);
  local_c._0_1_ = 0x4a;
  uVar4 = FUN_004ddd07();
  local_c._0_1_ = 0x4b;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x4c;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x4d);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Russia");
  local_c = 0x4e;
  uVar2 = FUN_004f1d8d(local_1e0,6);
  local_c._0_1_ = 0x4f;
  uVar3 = FUN_004f1fa3(local_1fc,&LAB_00b88d4f);
  local_c._0_1_ = 0x50;
  uVar4 = FUN_004dddb1();
  local_c._0_1_ = 0x51;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x52;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x53);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"South East Europe");
  local_c = 0x54;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x55;
  uVar3 = FUN_004f1fa3(local_1fc,&DAT_00b88d47);
  local_c._0_1_ = 0x56;
  uVar4 = FUN_004ddf5a();
  local_c._0_1_ = 0x57;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x58;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x59);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"South Central Africa");
  local_c = 0x5a;
  uVar2 = FUN_004f1d8d(local_1e0,6);
  local_c._0_1_ = 0x5b;
  uVar3 = FUN_004f1fa3(local_1fc,&DAT_00b88d49);
  local_c._0_1_ = 0x5c;
  uVar4 = FUN_004ddeb0();
  local_c._0_1_ = 0x5d;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x5e;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x5f);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_134,"Taiwan");
  local_c = 0x60;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x61;
  uVar3 = FUN_004f1fa3(local_1fc,&DAT_00b88d23);
  local_c._0_1_ = 0x62;
  uVar4 = FUN_004ddfaf();
  local_c._0_1_ = 99;
  uVar5 = FUN_004f1e0b(local_1c4,local_134);
  local_c._0_1_ = 100;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x65);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_118,"Western Europe");
  local_c = 0x66;
  uVar2 = FUN_004f1d8d(local_e0,6);
  local_c._0_1_ = 0x67;
  uVar3 = FUN_004f1fa3(local_a8,&DAT_00b88d36);
  local_c._0_1_ = 0x68;
  uVar4 = FUN_004de0e6();
  local_c._0_1_ = 0x69;
  uVar5 = FUN_004f1e0b(local_fc,local_118);
  local_c._0_1_ = 0x6a;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x6b);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  ExceptionList = local_14;
  return;
}



void FUN_004e3a58(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_234 [28];
  undefined local_218 [28];
  undefined local_1fc [28];
  undefined local_1e0 [28];
  undefined local_1c4 [28];
  undefined local_1a8 [116];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_134 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_118 [28];
  undefined local_fc [28];
  undefined local_e0 [56];
  undefined local_a8 [28];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2f966;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdb8;
  ExceptionList = &local_14;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Adriatic")
  ;
  local_c = 0;
  uVar2 = FUN_004f1d8d(local_1c4,5,uVar1);
  local_c._0_1_ = 1;
  uVar3 = FUN_004f1fa3(local_218,0xbb240f);
  local_c._0_1_ = 2;
  uVar4 = FUN_004dd1bc();
  local_c._0_1_ = 3;
  uVar5 = FUN_004f1e0b(local_1e0,local_234);
  local_c._0_1_ = 4;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,5);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"America");
  local_c = 6;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 7;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb12a0);
  local_c._0_1_ = 8;
  uVar4 = FUN_004dd211();
  local_c._0_1_ = 9;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 10;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0xb);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"APAC/Australia/New Zealand");
  local_c = 0xc;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0xd;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb23f2);
  local_c._0_1_ = 0xe;
  uVar4 = FUN_004dd42f();
  local_c._0_1_ = 0xf;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x10;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x11);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Baltic");
  local_c = 0x12;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x13;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb12a0);
  local_c._0_1_ = 0x14;
  uVar4 = FUN_004dd566();
  local_c._0_1_ = 0x15;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x16;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x17);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"Central Asia");
  local_c = 0x18;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x19;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb23fc);
  local_c._0_1_ = 0x1a;
  uVar4 = FUN_004dd610();
  local_c._0_1_ = 0x1b;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x1c;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x1d);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"Central Europe");
  local_c = 0x1e;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x1f;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb12a0);
  local_c._0_1_ = 0x20;
  uVar4 = FUN_004dd6ba();
  local_c._0_1_ = 0x21;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x22;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x23);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"China");
  local_c = 0x24;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x25;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb12a0);
  local_c._0_1_ = 0x26;
  uVar4 = FUN_004dd70f();
  local_c._0_1_ = 0x27;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x28;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x29);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"France");
  local_c = 0x2a;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x2b;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb12a0);
  local_c._0_1_ = 0x2c;
  uVar4 = FUN_004dd960();
  local_c._0_1_ = 0x2d;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x2e;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x2f);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"Hong Kong");
  local_c = 0x30;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x31;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb12a0);
  local_c._0_1_ = 0x32;
  uVar4 = FUN_004dda0a();
  local_c._0_1_ = 0x33;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x34;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x35);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Israel");
  local_c = 0x36;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x37;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb12a0);
  local_c._0_1_ = 0x38;
  uVar4 = FUN_004ddab4();
  local_c._0_1_ = 0x39;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x3a;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x3b);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Jamaica");
  local_c = 0x3c;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x3d;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb12a0);
  local_c._0_1_ = 0x3e;
  uVar4 = FUN_004ddb09();
  local_c._0_1_ = 0x3f;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x40;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x41);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"Middle East/North Africa");
  local_c = 0x42;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x43;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb12a0);
  local_c._0_1_ = 0x44;
  uVar4 = FUN_004ddc5d();
  local_c._0_1_ = 0x45;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x46;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x47);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Nordic");
  local_c = 0x48;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x49;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb23f5);
  local_c._0_1_ = 0x4a;
  uVar4 = FUN_004ddd07();
  local_c._0_1_ = 0x4b;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x4c;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x4d);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_234,"Russia");
  local_c = 0x4e;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x4f;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb12a0);
  local_c._0_1_ = 0x50;
  uVar4 = FUN_004dddb1();
  local_c._0_1_ = 0x51;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x52;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x53);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"South East Europe");
  local_c = 0x54;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x55;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb12a0);
  local_c._0_1_ = 0x56;
  uVar4 = FUN_004ddf5a();
  local_c._0_1_ = 0x57;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x58;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x59);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_234,"South Central Africa");
  local_c = 0x5a;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x5b;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb12a0);
  local_c._0_1_ = 0x5c;
  uVar4 = FUN_004ddeb0();
  local_c._0_1_ = 0x5d;
  uVar5 = FUN_004f1e0b(local_1c4,local_234);
  local_c._0_1_ = 0x5e;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x5f);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_134,"Taiwan");
  local_c = 0x60;
  uVar2 = FUN_004f1d8d(local_1e0,5);
  local_c._0_1_ = 0x61;
  uVar3 = FUN_004f1fa3(local_1fc,0xbb12a0);
  local_c._0_1_ = 0x62;
  uVar4 = FUN_004ddfaf();
  local_c._0_1_ = 99;
  uVar5 = FUN_004f1e0b(local_1c4,local_134);
  local_c._0_1_ = 100;
  uVar2 = FUN_004f60e4(local_1a8,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x65);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_118,"Western Europe");
  local_c = 0x66;
  uVar2 = FUN_004f1d8d(local_e0,5);
  local_c._0_1_ = 0x67;
  uVar3 = FUN_004f1fa3(local_a8,0xbb2400);
  local_c._0_1_ = 0x68;
  uVar4 = FUN_004de0e6();
  local_c._0_1_ = 0x69;
  uVar5 = FUN_004f1e0b(local_fc,local_118);
  local_c._0_1_ = 0x6a;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x6b);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  ExceptionList = local_14;
  return;
}



void FUN_004e4bc5(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_140;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c360ff;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x18feb);
  local_c._0_1_ = 0;
  local_c._1_3_ = 0;
  local_14c = 1;
  local_140 = 7;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
    local_c._0_1_ = 1;
    uVar2 = FUN_004f1d8d(local_104,1,uVar1);
    local_c._0_1_ = 2;
    uVar3 = FUN_004f20d4(local_cc,local_14c);
    local_c._0_1_ = 3;
    uVar4 = FUN_004dd7b9(local_e8,local_14c);
    local_c._0_1_ = 4;
    uVar5 = FUN_004f1ec9(local_120,local_13c,local_14c);
    local_c._0_1_ = 5;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 6;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_14c = 1;
  local_140 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 7;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 8;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 8);
    local_c._0_1_ = 9;
    uVar4 = FUN_004dd846(local_cc,local_14c);
    local_c._0_1_ = 10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0xb;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0xc;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_14c = 1;
  local_140 = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_13c,"America");
    local_c._0_1_ = 0xd;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0xe;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 0xe);
    local_c._0_1_ = 0xf;
    uVar4 = FUN_004de059(local_cc,local_14c);
    local_c._0_1_ = 0x10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x11;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x12;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004dd39d(local_cc);
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Thai");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,0x66);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004de004();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Chinese");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,0x67);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004dd764();
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Hong Kong");
  local_c._0_1_ = 0x25;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x26;
  uVar3 = FUN_004f20d4(local_e8,0x68);
  local_c._0_1_ = 0x27;
  uVar4 = FUN_004dd9b5();
  local_c._0_1_ = 0x28;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x29;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x2a);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004e5361(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_224;
  int local_21c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_218 [28];
  undefined local_1fc [28];
  undefined local_1e0 [28];
  undefined local_1c4 [28];
  undefined local_1a8 [28];
  undefined local_18c [116];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_118 [28];
  undefined local_fc [28];
  undefined local_e0 [56];
  undefined local_a8 [28];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c35f05;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdc8;
  ExceptionList = &local_14;
  local_224 = 1;
  local_21c = 8;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_218,"EMEA");
    local_c = 0;
    uVar2 = FUN_004f1d8d(local_1a8,1,uVar1);
    local_c._0_1_ = 1;
    uVar3 = FUN_004f1cba(local_1e0,0x18fad,local_224);
    local_c._0_1_ = 2;
    uVar4 = FUN_004dd7b9(local_1fc,local_224);
    local_c._0_1_ = 3;
    uVar5 = FUN_004f1ec9(local_1c4,local_218,local_224);
    local_c._0_1_ = 4;
    uVar2 = FUN_004f60e4(local_18c,uVar5,uVar4,uVar3,uVar2);
    local_c = CONCAT31(local_c._1_3_,5);
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = 0xffffffff;
    FUN_004017b2(1,0);
    local_224 = local_224 + 1;
    local_21c = local_21c + -1;
  } while (local_21c != 0);
  local_224 = 1;
  local_21c = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_218,"Europe")
    ;
    local_c = 6;
    uVar2 = FUN_004f1d8d(local_1c4,1);
    local_c._0_1_ = 7;
    uVar3 = FUN_004f1cba(local_1fc,0x18fad,local_224 + 8);
    local_c._0_1_ = 8;
    uVar4 = FUN_004dd846(local_1e0,local_224);
    local_c._0_1_ = 9;
    uVar5 = FUN_004f1ec9(local_1a8,local_218,local_224);
    local_c._0_1_ = 10;
    uVar2 = FUN_004f60e4(local_18c,uVar5,uVar4,uVar3,uVar2);
    local_c = CONCAT31(local_c._1_3_,0xb);
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = 0xffffffff;
    FUN_004017b2(1,0);
    local_224 = local_224 + 1;
    local_21c = local_21c + -1;
  } while (local_21c != 0);
  local_224 = 1;
  local_21c = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_218,"America");
    local_c = 0xc;
    uVar2 = FUN_004f1d8d(local_1c4,1);
    local_c._0_1_ = 0xd;
    uVar3 = FUN_004f1cba(local_1fc,0x18fad,local_224 + 0xe);
    local_c._0_1_ = 0xe;
    uVar4 = FUN_004de059(local_1e0,local_224);
    local_c._0_1_ = 0xf;
    uVar5 = FUN_004f1ec9(local_1a8,local_218,local_224);
    local_c._0_1_ = 0x10;
    uVar2 = FUN_004f60e4(local_18c,uVar5,uVar4,uVar3,uVar2);
    local_c = CONCAT31(local_c._1_3_,0x11);
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = 0xffffffff;
    FUN_004017b2(1,0);
    local_224 = local_224 + 1;
    local_21c = local_21c + -1;
  } while (local_21c != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_218,"Asian Latin");
  local_c = 0x12;
  uVar2 = FUN_004f1d8d(local_1c4,1);
  local_c._0_1_ = 0x13;
  uVar3 = FUN_004f1cba(local_1fc,0x18fad,0x65);
  local_c._0_1_ = 0x14;
  uVar4 = FUN_004dd511();
  local_c._0_1_ = 0x15;
  uVar5 = FUN_004f1e0b(local_1a8,local_218);
  local_c._0_1_ = 0x16;
  uVar2 = FUN_004f60e4(local_18c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x17);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_218,"Thai");
  local_c = 0x18;
  uVar2 = FUN_004f1d8d(local_1c4,1);
  local_c._0_1_ = 0x19;
  uVar3 = FUN_004f1cba(local_1fc,0x18fad,0x66);
  local_c._0_1_ = 0x1a;
  uVar4 = FUN_004de004();
  local_c._0_1_ = 0x1b;
  uVar5 = FUN_004f1e0b(local_1a8,local_218);
  local_c._0_1_ = 0x1c;
  uVar2 = FUN_004f60e4(local_18c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x1d);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_218,"Chinese");
  local_c = 0x1e;
  uVar2 = FUN_004f1d8d(local_1c4,1);
  local_c._0_1_ = 0x1f;
  uVar3 = FUN_004f1cba(local_1fc,0x18fad,0x67);
  local_c._0_1_ = 0x20;
  uVar4 = FUN_004dd764();
  local_c._0_1_ = 0x21;
  uVar5 = FUN_004f1e0b(local_1a8,local_218);
  local_c._0_1_ = 0x22;
  uVar2 = FUN_004f60e4(local_18c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x23);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_218,"Hong Kong");
  local_c = 0x24;
  uVar2 = FUN_004f1d8d(local_1c4,1);
  local_c._0_1_ = 0x25;
  uVar3 = FUN_004f1cba(local_1fc,0x18fad,0x68);
  local_c._0_1_ = 0x26;
  uVar4 = FUN_004dd9b5();
  local_c._0_1_ = 0x27;
  uVar5 = FUN_004f1e0b(local_1a8,local_218);
  local_c._0_1_ = 0x28;
  uVar2 = FUN_004f60e4(local_18c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x29);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_218,"Taiwan");
  local_c = 0x2a;
  uVar2 = FUN_004f1d8d(local_1c4,1);
  local_c._0_1_ = 0x2b;
  uVar3 = FUN_004f1cba(local_1fc,0x18fad,0x69);
  local_c._0_1_ = 0x2c;
  uVar4 = FUN_004ddfaf();
  local_c._0_1_ = 0x2d;
  uVar5 = FUN_004f1e0b(local_1a8,local_218);
  local_c._0_1_ = 0x2e;
  uVar2 = FUN_004f60e4(local_18c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x2f);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_118,"India");
  local_c = 0x30;
  uVar2 = FUN_004f1d8d(local_e0,1);
  local_c._0_1_ = 0x31;
  uVar3 = FUN_004f1cba(local_a8,0x18fad,0x6e);
  local_c._0_1_ = 0x32;
  uVar4 = FUN_004dda5f();
  local_c._0_1_ = 0x33;
  uVar5 = FUN_004f1e0b(local_fc,local_118);
  local_c._0_1_ = 0x34;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x35);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  ExceptionList = local_14;
  return;
}



void FUN_004e5cf0(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_148;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c357d8;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x190b0);
  local_c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Baltic");
  local_c._0_1_ = 1;
  uVar2 = FUN_004f1d8d(local_104,1,uVar1);
  local_c._0_1_ = 2;
  uVar3 = FUN_004f20d4(local_cc,1);
  local_c._0_1_ = 3;
  uVar4 = FUN_004dd511();
  local_c._0_1_ = 4;
  uVar5 = FUN_004f1e0b(local_120,local_13c);
  local_c._0_1_ = 5;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 6;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Central Europe");
  local_c._0_1_ = 7;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 8;
  uVar3 = FUN_004f20d4(local_e8,2);
  local_c._0_1_ = 9;
  uVar4 = FUN_004dd665();
  local_c._0_1_ = 10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0xb;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0xc;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"South East Europe");
  local_c._0_1_ = 0xd;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0xe;
  uVar3 = FUN_004f20d4(local_e8,3);
  local_c._0_1_ = 0xf;
  uVar4 = FUN_004ddf05();
  local_c._0_1_ = 0x10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x11;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x12;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Mediterranean");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,4);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004ddcb2();
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Middle East/North Africa");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,6);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004ddc08();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Russia");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,8);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004dddb1();
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  local_14c = 1;
  local_148 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 0x25;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0x26;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 9);
    local_c._0_1_ = 0x27;
    uVar4 = FUN_004dd8d3(local_cc,local_14c);
    local_c._0_1_ = 0x28;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x29;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x2a;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC");
  local_c._0_1_ = 0x2b;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x2c;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0x2d;
  uVar4 = FUN_004dd348();
  local_c._0_1_ = 0x2e;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x2f;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x30;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"LAM");
  local_c._0_1_ = 0x31;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x32;
  uVar3 = FUN_004f20d4(local_e8,0x6b);
  local_c._0_1_ = 0x33;
  uVar4 = FUN_004ddbb3();
  local_c._0_1_ = 0x34;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x35;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x36;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Middle East/North Africa");
  local_c._0_1_ = 0x37;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x38;
  uVar3 = FUN_004f20d4(local_e8,0x6d);
  local_c._0_1_ = 0x39;
  uVar4 = FUN_004ddc08();
  local_c._0_1_ = 0x3a;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x3b;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x3c);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004e6710(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_148;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c35c92;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x19147);
  local_c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Baltic");
  local_c._0_1_ = 1;
  uVar2 = FUN_004f1d8d(local_104,1,uVar1);
  local_c._0_1_ = 2;
  uVar3 = FUN_004f20d4(local_cc,1);
  local_c._0_1_ = 3;
  uVar4 = FUN_004dd566();
  local_c._0_1_ = 4;
  uVar5 = FUN_004f1e0b(local_120,local_13c);
  local_c._0_1_ = 5;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 6;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Central Europe");
  local_c._0_1_ = 7;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 8;
  uVar3 = FUN_004f20d4(local_e8,2);
  local_c._0_1_ = 9;
  uVar4 = FUN_004dd665();
  local_c._0_1_ = 10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0xb;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0xc;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"South East Europe");
  local_c._0_1_ = 0xd;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0xe;
  uVar3 = FUN_004f20d4(local_e8,3);
  local_c._0_1_ = 0xf;
  uVar4 = FUN_004ddf05();
  local_c._0_1_ = 0x10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x11;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x12;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Mediterranean");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,4);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004ddcb2();
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Middle East/North Africa");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,6);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004ddc08();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Central Asia");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,7);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004dd5bb();
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Russia");
  local_c._0_1_ = 0x25;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x26;
  uVar3 = FUN_004f20d4(local_e8,8);
  local_c._0_1_ = 0x27;
  uVar4 = FUN_004dddb1();
  local_c._0_1_ = 0x28;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x29;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x2a;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  local_14c = 1;
  local_148 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 0x2b;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0x2c;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 9);
    local_c._0_1_ = 0x2d;
    uVar4 = FUN_004dd8d3(local_cc,local_14c);
    local_c._0_1_ = 0x2e;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x2f;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x30;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC");
  local_c._0_1_ = 0x31;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x32;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0x33;
  uVar4 = FUN_004dd348();
  local_c._0_1_ = 0x34;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x35;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x36;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Thai");
  local_c._0_1_ = 0x37;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x38;
  uVar3 = FUN_004f20d4(local_e8,0x66);
  local_c._0_1_ = 0x39;
  uVar4 = FUN_004de004();
  local_c._0_1_ = 0x3a;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x3b;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x3c;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"India");
  local_c._0_1_ = 0x3d;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x3e;
  uVar3 = FUN_004f20d4(local_e8,0x67);
  local_c._0_1_ = 0x3f;
  uVar4 = FUN_004dda5f();
  local_c._0_1_ = 0x40;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x41;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x42;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Middle East/North Africa");
  local_c._0_1_ = 0x43;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x44;
  uVar3 = FUN_004f20d4(local_e8,0x6d);
  local_c._0_1_ = 0x45;
  uVar4 = FUN_004ddc08();
  local_c._0_1_ = 0x46;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x47;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x48;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"South Asia/Levan");
  local_c._0_1_ = 0x49;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x4a;
  uVar3 = FUN_004f20d4(local_e8,0x6e);
  local_c._0_1_ = 0x4b;
  uVar4 = FUN_004dde06();
  local_c._0_1_ = 0x4c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x4d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x4e);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004e7409(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_148;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3590c;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x18fa5);
  local_c = 0;
  local_14c = 1;
  local_148 = 4;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_13c,"Asian Latin");
    local_c._0_1_ = 1;
    uVar2 = FUN_004f1d8d(local_104,1,uVar1);
    local_c._0_1_ = 2;
    uVar3 = FUN_004f20d4(local_cc,local_14c);
    local_c._0_1_ = 3;
    uVar4 = FUN_004dd484(local_e8,local_14c);
    local_c._0_1_ = 4;
    uVar5 = FUN_004f1ec9(local_120,local_13c,local_14c);
    local_c._0_1_ = 5;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 6;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  local_14c = 1;
  local_148 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 7;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 8;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 7);
    local_c._0_1_ = 9;
    uVar4 = FUN_004dd846(local_cc,local_14c);
    local_c._0_1_ = 10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0xb;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0xc;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  local_14c = 1;
  local_148 = 8;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
    local_c._0_1_ = 0xd;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0xe;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 0xc);
    local_c._0_1_ = 0xf;
    uVar4 = FUN_004dd7b9(local_cc,local_14c);
    local_c._0_1_ = 0x10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x11;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x12;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  local_14c = 1;
  local_148 = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_13c,"America");
    local_c._0_1_ = 0x13;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0x14;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 0x14);
    local_c._0_1_ = 0x15;
    uVar4 = FUN_004de059(local_cc,local_14c);
    local_c._0_1_ = 0x16;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x17;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x18;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004e78fa(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_148;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c357d8;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x1903b);
  local_c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Baltic");
  local_c._0_1_ = 1;
  uVar2 = FUN_004f1d8d(local_104,1,uVar1);
  local_c._0_1_ = 2;
  uVar3 = FUN_004f20d4(local_cc,1);
  local_c._0_1_ = 3;
  uVar4 = FUN_004dd566();
  local_c._0_1_ = 4;
  uVar5 = FUN_004f1e0b(local_120,local_13c);
  local_c._0_1_ = 5;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 6;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Central Europe");
  local_c._0_1_ = 7;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 8;
  uVar3 = FUN_004f20d4(local_e8,2);
  local_c._0_1_ = 9;
  uVar4 = FUN_004dd665();
  local_c._0_1_ = 10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0xb;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0xc;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"South East Europe");
  local_c._0_1_ = 0xd;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0xe;
  uVar3 = FUN_004f20d4(local_e8,3);
  local_c._0_1_ = 0xf;
  uVar4 = FUN_004ddf05();
  local_c._0_1_ = 0x10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x11;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x12;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Mediterranean");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,4);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004ddcb2();
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Middle East/North Africa");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,6);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004ddc08();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Russia");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,8);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004dddb1();
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  local_14c = 1;
  local_148 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 0x25;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0x26;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 9);
    local_c._0_1_ = 0x27;
    uVar4 = FUN_004dd8d3(local_cc,local_14c);
    local_c._0_1_ = 0x28;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x29;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x2a;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC");
  local_c._0_1_ = 0x2b;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x2c;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0x2d;
  uVar4 = FUN_004dd348();
  local_c._0_1_ = 0x2e;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x2f;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x30;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"LAM");
  local_c._0_1_ = 0x31;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x32;
  uVar3 = FUN_004f20d4(local_e8,0x6b);
  local_c._0_1_ = 0x33;
  uVar4 = FUN_004ddbb3();
  local_c._0_1_ = 0x34;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x35;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x36;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"South Asia/Levan");
  local_c._0_1_ = 0x37;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x38;
  uVar3 = FUN_004f20d4(local_e8,0x6e);
  local_c._0_1_ = 0x39;
  uVar4 = FUN_004dde06();
  local_c._0_1_ = 0x3a;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x3b;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x3c);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004e831a(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_140;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c360ff;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x18fe7);
  local_c._0_1_ = 0;
  local_c._1_3_ = 0;
  local_14c = 1;
  local_140 = 7;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
    local_c._0_1_ = 1;
    uVar2 = FUN_004f1d8d(local_104,1,uVar1);
    local_c._0_1_ = 2;
    uVar3 = FUN_004f20d4(local_cc,local_14c);
    local_c._0_1_ = 3;
    uVar4 = FUN_004dd7b9(local_e8,local_14c);
    local_c._0_1_ = 4;
    uVar5 = FUN_004f1ec9(local_120,local_13c,local_14c);
    local_c._0_1_ = 5;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 6;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_14c = 1;
  local_140 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 7;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 8;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 8);
    local_c._0_1_ = 9;
    uVar4 = FUN_004dd8d3(local_cc,local_14c);
    local_c._0_1_ = 10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0xb;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0xc;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_14c = 1;
  local_140 = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_13c,"America");
    local_c._0_1_ = 0xd;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0xe;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 0xe);
    local_c._0_1_ = 0xf;
    uVar4 = FUN_004dd266(local_cc,local_14c);
    local_c._0_1_ = 0x10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x11;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x12;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004dd39d(local_cc);
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Thai");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,0x66);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004de004();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Hong Kong");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,0x68);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004dd9b5();
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Taiwan");
  local_c._0_1_ = 0x25;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x26;
  uVar3 = FUN_004f20d4(local_e8,0x69);
  local_c._0_1_ = 0x27;
  uVar4 = FUN_004ddfaf();
  local_c._0_1_ = 0x28;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x29;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x2a);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004e8ab6(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_228;
  int local_21c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_218 [28];
  undefined local_1fc [28];
  undefined local_1e0 [28];
  undefined local_1c4 [28];
  undefined local_1a8 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_18c [28];
  undefined local_170 [116];
  undefined local_fc [28];
  undefined local_e0 [56];
  undefined local_a8 [28];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c35518;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdc8;
  ExceptionList = &local_14;
  local_228 = 1;
  local_21c = 4;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_218,"Asian Latin");
    local_c = 0;
    uVar2 = FUN_004f1d8d(local_1c4,1,uVar1);
    local_c._0_1_ = 1;
    uVar3 = FUN_004f1cba(local_1e0,0x18f8e,local_228);
    local_c._0_1_ = 2;
    uVar4 = FUN_004dd484(local_1fc,local_228);
    local_c._0_1_ = 3;
    uVar5 = FUN_004f1ec9(local_1a8,local_218,local_228);
    local_c._0_1_ = 4;
    uVar2 = FUN_004f60e4(local_170,uVar5,uVar4,uVar3,uVar2);
    local_c = CONCAT31(local_c._1_3_,5);
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = 0xffffffff;
    FUN_004017b2(1,0);
    local_228 = local_228 + 1;
    local_21c = local_21c + -1;
  } while (local_21c != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_218,"China");
  local_c = 6;
  uVar2 = FUN_004f1d8d(local_1a8,1);
  local_c._0_1_ = 7;
  uVar3 = FUN_004f1cba(local_1fc,0x18f8e,5);
  local_c._0_1_ = 8;
  uVar4 = FUN_004dd764();
  local_c._0_1_ = 9;
  uVar5 = FUN_004f1e0b(local_1c4,local_218);
  local_c._0_1_ = 10;
  uVar2 = FUN_004f60e4(local_170,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0xb);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_218,"Hong Kong");
  local_c = 0xc;
  uVar2 = FUN_004f1d8d(local_1a8,1);
  local_c._0_1_ = 0xd;
  uVar3 = FUN_004f1cba(local_1fc,0x18f8e,6);
  local_c._0_1_ = 0xe;
  uVar4 = FUN_004dd9b5();
  local_c._0_1_ = 0xf;
  uVar5 = FUN_004f1e0b(local_1c4,local_218);
  local_c._0_1_ = 0x10;
  uVar2 = FUN_004f60e4(local_170,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x11);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_004017b2(1,0);
  local_228 = 1;
  local_21c = 8;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_218,"EMEA");
    local_c = 0x12;
    uVar2 = FUN_004f1d8d(local_1a8,1);
    local_c._0_1_ = 0x13;
    uVar3 = FUN_004f1cba(local_1fc,0x18f8e,local_228 + 7);
    local_c._0_1_ = 0x14;
    uVar4 = FUN_004dd7b9(local_1e0,local_228);
    local_c._0_1_ = 0x15;
    uVar5 = FUN_004f1ec9(local_1c4,local_218,local_228);
    local_c._0_1_ = 0x16;
    uVar2 = FUN_004f60e4(local_170,uVar5,uVar4,uVar3,uVar2);
    local_c = CONCAT31(local_c._1_3_,0x17);
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = 0xffffffff;
    FUN_004017b2(1,0);
    local_228 = local_228 + 1;
    local_21c = local_21c + -1;
  } while (local_21c != 0);
  local_228 = 1;
  local_21c = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_218,"Europe")
    ;
    local_c = 0x18;
    uVar2 = FUN_004f1d8d(local_1a8,1);
    local_c._0_1_ = 0x19;
    uVar3 = FUN_004f1cba(local_1fc,0x18f8e,local_228 + 0xf);
    local_c._0_1_ = 0x1a;
    uVar4 = FUN_004dd846(local_1e0,local_228);
    local_c._0_1_ = 0x1b;
    uVar5 = FUN_004f1ec9(local_1c4,local_218,local_228);
    local_c._0_1_ = 0x1c;
    uVar2 = FUN_004f60e4(local_170,uVar5,uVar4,uVar3,uVar2);
    local_c = CONCAT31(local_c._1_3_,0x1d);
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = 0xffffffff;
    FUN_004017b2(1,0);
    local_228 = local_228 + 1;
    local_21c = local_21c + -1;
  } while (local_21c != 0);
  local_228 = 1;
  local_21c = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_218,"America");
    local_c = 0x1e;
    uVar2 = FUN_004f1d8d(local_1a8,1);
    local_c._0_1_ = 0x1f;
    uVar3 = FUN_004f1cba(local_1fc,0x18f8e,local_228 + 0x14);
    local_c._0_1_ = 0x20;
    uVar4 = FUN_004de059(local_1e0,local_228);
    local_c._0_1_ = 0x21;
    uVar5 = FUN_004f1ec9(local_1c4,local_218,local_228);
    local_c._0_1_ = 0x22;
    uVar2 = FUN_004f60e4(local_170,uVar5,uVar4,uVar3,uVar2);
    local_c = CONCAT31(local_c._1_3_,0x23);
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = 0xffffffff;
    FUN_004017b2(1,0);
    local_228 = local_228 + 1;
    local_21c = local_21c + -1;
  } while (local_21c != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_18c,"Taiwan");
  local_c = 0x24;
  uVar2 = FUN_004f1d8d(local_e0,1);
  local_c._0_1_ = 0x25;
  uVar3 = FUN_004f1cba(local_a8,0x18f8e,0x6b);
  local_c._0_1_ = 0x26;
  uVar4 = FUN_004ddfaf();
  local_c._0_1_ = 0x27;
  uVar5 = FUN_004f1e0b(local_fc,local_18c);
  local_c._0_1_ = 0x28;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x29);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  ExceptionList = local_14;
  return;
}



void FUN_004e9285(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_140;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c34bf1;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x18fc1);
  local_c._0_1_ = 0;
  local_c._1_3_ = 0;
  local_14c = 1;
  local_140 = 8;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
    local_c._0_1_ = 1;
    uVar2 = FUN_004f1d8d(local_104,1,uVar1);
    local_c._0_1_ = 2;
    uVar3 = FUN_004f20d4(local_cc,local_14c);
    local_c._0_1_ = 3;
    uVar4 = FUN_004dd7b9(local_e8,local_14c);
    local_c._0_1_ = 4;
    uVar5 = FUN_004f1ec9(local_120,local_13c,local_14c);
    local_c._0_1_ = 5;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 6;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_14c = 1;
  local_140 = 6;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 7;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 8;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 8);
    local_c._0_1_ = 9;
    uVar4 = FUN_004dd8d3(local_cc,local_14c);
    local_c._0_1_ = 10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0xb;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0xc;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_14c = 1;
  local_140 = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_13c,"America");
    local_c._0_1_ = 0xd;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0xe;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 0xe);
    local_c._0_1_ = 0xf;
    uVar4 = FUN_004dd266(local_cc,local_14c);
    local_c._0_1_ = 0x10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x11;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x12;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004dd39d(local_cc);
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Thai");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,0x66);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004de004();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,0x67);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004dd7b9(local_cc,6);
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1ec9(local_104,local_13c,6);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x25;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x26;
  uVar3 = FUN_004f20d4(local_e8,0x69);
  local_c._0_1_ = 0x27;
  uVar4 = FUN_004dd266(local_cc,2);
  local_c._0_1_ = 0x28;
  uVar5 = FUN_004f1ec9(local_104,local_13c,2);
  local_c._0_1_ = 0x29;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x2a;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x2b;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x2c;
  uVar3 = FUN_004f20d4(local_e8,0x6a);
  local_c._0_1_ = 0x2d;
  uVar4 = FUN_004dd266(local_cc,1);
  local_c._0_1_ = 0x2e;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x2f;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x30);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004e9b24(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_148;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c34bf1;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x18f9c);
  local_c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Asian Latin 1");
  local_c._0_1_ = 1;
  uVar2 = FUN_004f1d8d(local_104,1,uVar1);
  local_c._0_1_ = 2;
  uVar3 = FUN_004f20d4(local_cc,0x33);
  local_c._0_1_ = 3;
  uVar4 = FUN_004dd484(local_e8,1);
  local_c._0_1_ = 4;
  uVar5 = FUN_004f1e0b(local_120,local_13c);
  local_c._0_1_ = 5;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 6;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Asian Latin 2");
  local_c._0_1_ = 7;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 8;
  uVar3 = FUN_004f20d4(local_e8,0x34);
  local_c._0_1_ = 9;
  uVar4 = FUN_004dd484(local_cc,2);
  local_c._0_1_ = 10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0xb;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0xc;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Chinese");
  local_c._0_1_ = 0xd;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0xe;
  uVar3 = FUN_004f20d4(local_e8,0x37);
  local_c._0_1_ = 0xf;
  uVar4 = FUN_004dd764();
  local_c._0_1_ = 0x10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x11;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x12;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Hong Kong");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,0x38);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004dd9b5();
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Taiwan");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,0x39);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004ddfaf();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = (uint)local_c._1_3_ << 8;
  FUN_004017b2(1,0);
  local_14c = 1;
  local_148 = 7;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
    local_c._0_1_ = 0x1f;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0x20;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 7);
    local_c._0_1_ = 0x21;
    uVar4 = FUN_004dd7b9(local_cc,local_14c);
    local_c._0_1_ = 0x22;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x23;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x24;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  local_14c = 1;
  local_148 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 0x25;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0x26;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 0xf);
    local_c._0_1_ = 0x27;
    uVar4 = FUN_004dd846(local_cc,local_14c);
    local_c._0_1_ = 0x28;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x29;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x2a;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  local_14c = 1;
  local_148 = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_13c,"America");
    local_c._0_1_ = 0x2b;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0x2c;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 0x14);
    local_c._0_1_ = 0x2d;
    uVar4 = FUN_004de059(local_cc,local_14c);
    local_c._0_1_ = 0x2e;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x2f;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x30;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004ea3c2(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c35329;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffeb0;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x18fb3);
  local_c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Argentina");
  local_c._0_1_ = 1;
  uVar2 = FUN_004f1d8d(local_104,1,uVar1);
  local_c._0_1_ = 2;
  uVar3 = FUN_004f20d4(local_cc,1);
  local_c._0_1_ = 3;
  uVar4 = FUN_004ddd5c();
  local_c._0_1_ = 4;
  uVar5 = FUN_004f1e0b(local_e8,local_13c);
  local_c._0_1_ = 5;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 6;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Cingular")
  ;
  local_c._0_1_ = 7;
  uVar2 = FUN_004f1d8d(local_e8,1);
  local_c._0_1_ = 8;
  uVar3 = FUN_004f20d4(local_120,0xc);
  local_c._0_1_ = 9;
  uVar4 = FUN_004ddd5c();
  local_c._0_1_ = 10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0xb;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0xc);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004ea620(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_184;
  int local_180;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_174 [28];
  undefined local_158 [28];
  undefined local_13c [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_120 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_104 [64];
  undefined local_c4 [28];
  undefined local_a8 [28];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c35279;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffe70;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x19151);
  local_c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_174,"Baltic");
  local_c._0_1_ = 1;
  uVar2 = FUN_004f1d8d(local_158,1,uVar1);
  local_c._0_1_ = 2;
  uVar3 = FUN_004f20d4(local_13c,1);
  local_c._0_1_ = 3;
  uVar4 = FUN_004dd566();
  local_c._0_1_ = 4;
  uVar5 = FUN_004f1e0b(local_120,local_174);
  local_c._0_1_ = 5;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 6;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_174,"Central Europe");
  local_c._0_1_ = 7;
  uVar2 = FUN_004f1d8d(local_104,1);
  local_c._0_1_ = 8;
  uVar3 = FUN_004f20d4(local_120,2);
  local_c._0_1_ = 9;
  uVar4 = FUN_004dd665();
  local_c._0_1_ = 10;
  uVar5 = FUN_004f1e0b(local_158,local_174);
  local_c._0_1_ = 0xb;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0xc;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_174,"South East Europe");
  local_c._0_1_ = 0xd;
  uVar2 = FUN_004f1d8d(local_104,1);
  local_c._0_1_ = 0xe;
  uVar3 = FUN_004f20d4(local_120,3);
  local_c._0_1_ = 0xf;
  uVar4 = FUN_004ddf05();
  local_c._0_1_ = 0x10;
  uVar5 = FUN_004f1e0b(local_158,local_174);
  local_c._0_1_ = 0x11;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x12;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_174,"Mediterranean");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_104,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_120,4);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004ddcb2();
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1e0b(local_158,local_174);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_174,"South Asia/Levan");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_104,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_120,5);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004dde06();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_158,local_174);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_174,"Mid East/North Africa");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_104,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_120,6);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004ddc08();
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1e0b(local_158,local_174);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_174,"Central Asia");
  local_c._0_1_ = 0x25;
  uVar2 = FUN_004f1d8d(local_104,1);
  local_c._0_1_ = 0x26;
  uVar3 = FUN_004f20d4(local_120,7);
  local_c._0_1_ = 0x27;
  uVar4 = FUN_004dd5bb();
  local_c._0_1_ = 0x28;
  uVar5 = FUN_004f1e0b(local_158,local_174);
  local_c._0_1_ = 0x29;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x2a;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_174,"Russia");
  local_c._0_1_ = 0x2b;
  uVar2 = FUN_004f1d8d(local_104,1);
  local_c._0_1_ = 0x2c;
  uVar3 = FUN_004f20d4(local_120,8);
  local_c._0_1_ = 0x2d;
  uVar4 = FUN_004dddb1();
  local_c._0_1_ = 0x2e;
  uVar5 = FUN_004f1e0b(local_158,local_174);
  local_c._0_1_ = 0x2f;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x30;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_174,"Australia/New Zealand");
  local_c._0_1_ = 0x31;
  uVar2 = FUN_004f1d8d(local_104,1);
  local_c._0_1_ = 0x32;
  uVar3 = FUN_004f20d4(local_120,9);
  local_c._0_1_ = 0x33;
  uVar4 = FUN_004dd2f3();
  local_c._0_1_ = 0x34;
  uVar5 = FUN_004f1e0b(local_158,local_174);
  local_c._0_1_ = 0x35;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x36;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  local_184 = 1;
  local_180 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_174,"Europe")
    ;
    local_c._0_1_ = 0x37;
    uVar2 = FUN_004f1d8d(local_104,1);
    local_c._0_1_ = 0x38;
    uVar3 = FUN_004f20d4(local_120,local_184 + 9);
    local_c._0_1_ = 0x39;
    uVar4 = FUN_004dd8d3(local_13c,local_184);
    local_c._0_1_ = 0x3a;
    uVar5 = FUN_004f1ec9(local_158,local_174,local_184);
    local_c._0_1_ = 0x3b;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x3c;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_184 = local_184 + 1;
    local_180 = local_180 + -1;
  } while (local_180 != 0);
  local_184 = 1;
  local_180 = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_174,"America");
    local_c._0_1_ = 0x3d;
    uVar2 = FUN_004f1d8d(local_104,1);
    local_c._0_1_ = 0x3e;
    uVar3 = FUN_004f20d4(local_120,local_184 + 0xe);
    local_c._0_1_ = 0x3f;
    uVar4 = FUN_004dd266(local_13c,local_184);
    local_c._0_1_ = 0x40;
    uVar5 = FUN_004f1ec9(local_158,local_174,local_184);
    local_c._0_1_ = 0x41;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x42;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_184 = local_184 + 1;
    local_180 = local_180 + -1;
  } while (local_180 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_174,"France");
  local_c._0_1_ = 0x43;
  uVar2 = FUN_004f1d8d(local_c4,1);
  local_c._0_1_ = 0x44;
  uVar3 = FUN_004f20d4(local_a8,0x11);
  local_c._0_1_ = 0x45;
  uVar4 = FUN_004dd960();
  local_c._0_1_ = 0x46;
  uVar5 = FUN_004f1e0b(local_158,local_174);
  local_c._0_1_ = 0x47;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x48;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_174,"APAC");
  local_c._0_1_ = 0x49;
  uVar2 = FUN_004f1d8d(local_13c,1);
  local_c._0_1_ = 0x4a;
  uVar3 = FUN_004f20d4(local_158,0x65);
  local_c._0_1_ = 0x4b;
  uVar4 = FUN_004dd348();
  local_c._0_1_ = 0x4c;
  uVar5 = FUN_004f1e0b(local_c4,local_174);
  local_c._0_1_ = 0x4d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x4e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_174,"Thai");
  local_c._0_1_ = 0x4f;
  uVar2 = FUN_004f1d8d(local_13c,1);
  local_c._0_1_ = 0x50;
  uVar3 = FUN_004f20d4(local_158,0x66);
  local_c._0_1_ = 0x51;
  uVar4 = FUN_004de004();
  local_c._0_1_ = 0x52;
  uVar5 = FUN_004f1e0b(local_c4,local_174);
  local_c._0_1_ = 0x53;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x54;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_174,"India");
  local_c._0_1_ = 0x55;
  uVar2 = FUN_004f1d8d(local_13c,1);
  local_c._0_1_ = 0x56;
  uVar3 = FUN_004f20d4(local_158,0x67);
  local_c._0_1_ = 0x57;
  uVar4 = FUN_004dda5f();
  local_c._0_1_ = 0x58;
  uVar5 = FUN_004f1e0b(local_c4,local_174);
  local_c._0_1_ = 0x59;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x5a;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_104,"Hong Kong");
  local_c._0_1_ = 0x5b;
  uVar2 = FUN_004f1d8d(local_13c,1);
  local_c._0_1_ = 0x5c;
  uVar3 = FUN_004f20d4(local_158,0x68);
  local_c._0_1_ = 0x5d;
  uVar4 = FUN_004dd9b5();
  local_c._0_1_ = 0x5e;
  uVar5 = FUN_004f1e0b(local_c4,local_104);
  local_c._0_1_ = 0x5f;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x60;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_120,"Taiwan");
  local_c._0_1_ = 0x61;
  uVar2 = FUN_004f1d8d(local_13c,1);
  local_c._0_1_ = 0x62;
  uVar3 = FUN_004f20d4(local_158,0x69);
  local_c._0_1_ = 99;
  uVar4 = FUN_004ddfaf();
  local_c._0_1_ = 100;
  uVar5 = FUN_004f1e0b(local_c4,local_120);
  local_c._0_1_ = 0x65;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x66;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  local_184 = 1;
  local_180 = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_120,"America");
    local_c._0_1_ = 0x67;
    uVar2 = FUN_004f1d8d(local_13c,1);
    local_c._0_1_ = 0x68;
    uVar3 = FUN_004f20d4(local_158,local_184 + 0x69);
    local_c._0_1_ = 0x69;
    uVar4 = FUN_004dd266(local_a8,local_184);
    local_c._0_1_ = 0x6a;
    uVar5 = FUN_004f1ec9(local_c4,local_120,local_184);
    local_c._0_1_ = 0x6b;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x6c;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_184 = local_184 + 1;
    local_180 = local_180 + -1;
  } while (local_180 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_120,"China");
  local_c._0_1_ = 0x6d;
  uVar2 = FUN_004f1d8d(local_13c,1);
  local_c._0_1_ = 0x6e;
  uVar3 = FUN_004f20d4(local_158,0x6c);
  local_c._0_1_ = 0x6f;
  uVar4 = FUN_004dd70f();
  local_c._0_1_ = 0x70;
  uVar5 = FUN_004f1e0b(local_c4,local_120);
  local_c._0_1_ = 0x71;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x72;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_104,"Mid East/North Africa");
  local_c._0_1_ = 0x73;
  uVar2 = FUN_004f1d8d(local_13c,1);
  local_c._0_1_ = 0x74;
  uVar3 = FUN_004f20d4(local_158,0x6d);
  local_c._0_1_ = 0x75;
  uVar4 = FUN_004ddc08();
  local_c._0_1_ = 0x76;
  uVar5 = FUN_004f1e0b(local_c4,local_104);
  local_c._0_1_ = 0x77;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x78;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_174,"South Asia/Levan");
  local_c._0_1_ = 0x79;
  uVar2 = FUN_004f1d8d(local_13c,1);
  local_c._0_1_ = 0x7a;
  uVar3 = FUN_004f20d4(local_158,0x6e);
  local_c._0_1_ = 0x7b;
  uVar4 = FUN_004dde06();
  local_c._0_1_ = 0x7c;
  uVar5 = FUN_004f1e0b(local_c4,local_174);
  local_c._0_1_ = 0x7d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x7e);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004ebb56(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_148;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c349b5;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x19109);
  local_c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Baltic");
  local_c._0_1_ = 1;
  uVar2 = FUN_004f1d8d(local_104,1,uVar1);
  local_c._0_1_ = 2;
  uVar3 = FUN_004f20d4(local_cc,1);
  local_c._0_1_ = 3;
  uVar4 = FUN_004dd566();
  local_c._0_1_ = 4;
  uVar5 = FUN_004f1e0b(local_120,local_13c);
  local_c._0_1_ = 5;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 6;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Central Europe");
  local_c._0_1_ = 7;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 8;
  uVar3 = FUN_004f20d4(local_e8,2);
  local_c._0_1_ = 9;
  uVar4 = FUN_004dd665();
  local_c._0_1_ = 10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0xb;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0xc;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"South East Europe");
  local_c._0_1_ = 0xd;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0xe;
  uVar3 = FUN_004f20d4(local_e8,3);
  local_c._0_1_ = 0xf;
  uVar4 = FUN_004ddf05();
  local_c._0_1_ = 0x10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x11;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x12;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Mediterranean");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,4);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004ddcb2();
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Middle East/North Africa");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,6);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004ddc08();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Central Asia");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,7);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004dd5bb();
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Russia");
  local_c._0_1_ = 0x25;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x26;
  uVar3 = FUN_004f20d4(local_e8,8);
  local_c._0_1_ = 0x27;
  uVar4 = FUN_004dddb1();
  local_c._0_1_ = 0x28;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x29;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x2a;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  local_14c = 1;
  local_148 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 0x2b;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0x2c;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 9);
    local_c._0_1_ = 0x2d;
    uVar4 = FUN_004dd8d3(local_cc,local_14c);
    local_c._0_1_ = 0x2e;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x2f;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x30;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC");
  local_c._0_1_ = 0x31;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x32;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0x33;
  uVar4 = FUN_004dd348();
  local_c._0_1_ = 0x34;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x35;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x36;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Middle East/North Africa");
  local_c._0_1_ = 0x37;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x38;
  uVar3 = FUN_004f20d4(local_e8,0x6d);
  local_c._0_1_ = 0x39;
  uVar4 = FUN_004ddc08();
  local_c._0_1_ = 0x3a;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x3b;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x3c;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"South Asia/Levan");
  local_c._0_1_ = 0x3d;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x3e;
  uVar3 = FUN_004f20d4(local_e8,0x6e);
  local_c._0_1_ = 0x3f;
  uVar4 = FUN_004dde06();
  local_c._0_1_ = 0x40;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x41;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x42);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004ec669(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_140;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c360ff;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x1901a);
  local_c._0_1_ = 0;
  local_c._1_3_ = 0;
  local_14c = 1;
  local_140 = 7;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
    local_c._0_1_ = 1;
    uVar2 = FUN_004f1d8d(local_104,1,uVar1);
    local_c._0_1_ = 2;
    uVar3 = FUN_004f20d4(local_cc,local_14c);
    local_c._0_1_ = 3;
    uVar4 = FUN_004dd7b9(local_e8,local_14c);
    local_c._0_1_ = 4;
    uVar5 = FUN_004f1ec9(local_120,local_13c,local_14c);
    local_c._0_1_ = 5;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 6;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_14c = 1;
  local_140 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 7;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 8;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 8);
    local_c._0_1_ = 9;
    uVar4 = FUN_004dd8d3(local_cc,local_14c);
    local_c._0_1_ = 10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0xb;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0xc;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_14c = 1;
  local_140 = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_13c,"America");
    local_c._0_1_ = 0xd;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0xe;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 0xe);
    local_c._0_1_ = 0xf;
    uVar4 = FUN_004dd266(local_cc,local_14c);
    local_c._0_1_ = 0x10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x11;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x12;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004dd39d(local_cc);
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Thai");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,0x66);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004de004();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,0x69);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004dd266(local_cc,2);
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1ec9(local_104,local_13c,2);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x25;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x26;
  uVar3 = FUN_004f20d4(local_e8,0x6a);
  local_c._0_1_ = 0x27;
  uVar4 = FUN_004dd266(local_cc,1);
  local_c._0_1_ = 0x28;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x29;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x2a);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004ece0f(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c34ce3;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffeb0;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x19035);
  local_c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
  local_c._0_1_ = 1;
  uVar2 = FUN_004f1d8d(local_104,1,uVar1);
  local_c._0_1_ = 2;
  uVar3 = FUN_004f20d4(local_cc,0x32);
  local_c._0_1_ = 3;
  uVar4 = FUN_004dd7b9(local_120,4);
  local_c._0_1_ = 4;
  uVar5 = FUN_004f1ec9(local_e8,local_13c,4);
  local_c._0_1_ = 5;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 6;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
  local_c._0_1_ = 7;
  uVar2 = FUN_004f1d8d(local_e8,1);
  local_c._0_1_ = 8;
  uVar3 = FUN_004f20d4(local_120,0x19);
  local_c._0_1_ = 9;
  uVar4 = FUN_004dd7b9(local_cc,5);
  local_c._0_1_ = 10;
  uVar5 = FUN_004f1ec9(local_104,local_13c,5);
  local_c._0_1_ = 0xb;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0xc;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe");
  local_c._0_1_ = 0xd;
  uVar2 = FUN_004f1d8d(local_e8,1);
  local_c._0_1_ = 0xe;
  uVar3 = FUN_004f20d4(local_120,0x33);
  local_c._0_1_ = 0xf;
  uVar4 = FUN_004dd8d3(local_cc,4);
  local_c._0_1_ = 0x10;
  uVar5 = FUN_004f1ec9(local_104,local_13c,4);
  local_c._0_1_ = 0x11;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x12);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004ed173(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_144;
  int local_140;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c34bf1;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x190b4);
  local_c._0_1_ = 0;
  local_c._1_3_ = 0;
  local_144 = 1;
  local_140 = 8;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
    local_c._0_1_ = 1;
    uVar2 = FUN_004f1d8d(local_104,1,uVar1);
    local_c._0_1_ = 2;
    uVar3 = FUN_004f20d4(local_cc,local_144);
    local_c._0_1_ = 3;
    uVar4 = FUN_004dd7b9(local_e8,local_144);
    local_c._0_1_ = 4;
    uVar5 = FUN_004f1ec9(local_120,local_13c,local_144);
    local_c._0_1_ = 5;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 6;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_144 = local_144 + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_144 = 1;
  local_140 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 7;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 8;
    uVar3 = FUN_004f20d4(local_e8,local_144 + 8);
    local_c._0_1_ = 9;
    uVar4 = FUN_004dd8d3(local_cc,local_144);
    local_c._0_1_ = 10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_144);
    local_c._0_1_ = 0xb;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0xc;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_144 = local_144 + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"LAM");
  local_c._0_1_ = 0xd;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0xe;
  uVar3 = FUN_004f20d4(local_e8,0xe);
  local_c._0_1_ = 0xf;
  uVar4 = FUN_004ddbb3();
  local_c._0_1_ = 0x10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x11;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x12;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,0xf);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004dd266(local_cc,1);
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004dd39d(local_cc);
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Thai");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,0x66);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004de004();
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x25;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x26;
  uVar3 = FUN_004f20d4(local_e8,0x69);
  local_c._0_1_ = 0x27;
  uVar4 = FUN_004dd266(local_cc,2);
  local_c._0_1_ = 0x28;
  uVar5 = FUN_004f1ec9(local_104,local_13c,2);
  local_c._0_1_ = 0x29;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x2a;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x2b;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x2c;
  uVar3 = FUN_004f20d4(local_e8,0x6a);
  local_c._0_1_ = 0x2d;
  uVar4 = FUN_004dd266(local_cc,1);
  local_c._0_1_ = 0x2e;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x2f;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x30);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004ed9e6(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_140;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c360ff;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x1901e);
  local_c._0_1_ = 0;
  local_c._1_3_ = 0;
  local_14c = 1;
  local_140 = 8;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
    local_c._0_1_ = 1;
    uVar2 = FUN_004f1d8d(local_104,1,uVar1);
    local_c._0_1_ = 2;
    uVar3 = FUN_004f20d4(local_cc,local_14c);
    local_c._0_1_ = 3;
    uVar4 = FUN_004dd7b9(local_e8,local_14c);
    local_c._0_1_ = 4;
    uVar5 = FUN_004f1ec9(local_120,local_13c,local_14c);
    local_c._0_1_ = 5;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 6;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_14c = 1;
  local_140 = 6;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 7;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 8;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 8);
    local_c._0_1_ = 9;
    uVar4 = FUN_004dd8d3(local_cc,local_14c);
    local_c._0_1_ = 10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0xb;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0xc;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_14c = 1;
  local_140 = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_13c,"America");
    local_c._0_1_ = 0xd;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0xe;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 0xe);
    local_c._0_1_ = 0xf;
    uVar4 = FUN_004dd266(local_cc,local_14c);
    local_c._0_1_ = 0x10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x11;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x12;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004dd39d(local_cc);
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Thai");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,0x66);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004de004();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,0x69);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004dd266(local_cc,2);
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1ec9(local_104,local_13c,2);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x25;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x26;
  uVar3 = FUN_004f20d4(local_e8,0x6a);
  local_c._0_1_ = 0x27;
  uVar4 = FUN_004dd266(local_cc,1);
  local_c._0_1_ = 0x28;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x29;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x2a);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004ee18c(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_148;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c349b5;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x1909b);
  local_c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Baltic");
  local_c._0_1_ = 1;
  uVar2 = FUN_004f1d8d(local_104,1,uVar1);
  local_c._0_1_ = 2;
  uVar3 = FUN_004f20d4(local_cc,1);
  local_c._0_1_ = 3;
  uVar4 = FUN_004dd566();
  local_c._0_1_ = 4;
  uVar5 = FUN_004f1e0b(local_120,local_13c);
  local_c._0_1_ = 5;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 6;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Central Europe");
  local_c._0_1_ = 7;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 8;
  uVar3 = FUN_004f20d4(local_e8,2);
  local_c._0_1_ = 9;
  uVar4 = FUN_004dd665();
  local_c._0_1_ = 10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0xb;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0xc;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"South East Europe");
  local_c._0_1_ = 0xd;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0xe;
  uVar3 = FUN_004f20d4(local_e8,3);
  local_c._0_1_ = 0xf;
  uVar4 = FUN_004ddf05();
  local_c._0_1_ = 0x10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x11;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x12;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Mediterranean");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,4);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004ddcb2();
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Middle East/North Africa");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,6);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004ddc08();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Central Asia");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,7);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004dd5bb();
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  local_14c = 1;
  local_148 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 0x25;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0x26;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 9);
    local_c._0_1_ = 0x27;
    uVar4 = FUN_004dd8d3(local_cc,local_14c);
    local_c._0_1_ = 0x28;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x29;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x2a;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x2b;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x2c;
  uVar3 = FUN_004f20d4(local_e8,0xf);
  local_c._0_1_ = 0x2d;
  uVar4 = FUN_004dd266(local_cc,1);
  local_c._0_1_ = 0x2e;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x2f;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x30;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC");
  local_c._0_1_ = 0x31;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x32;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0x33;
  uVar4 = FUN_004dd348();
  local_c._0_1_ = 0x34;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x35;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x36;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x37;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x38;
  uVar3 = FUN_004f20d4(local_e8,0x6b);
  local_c._0_1_ = 0x39;
  uVar4 = FUN_004dd266(local_cc,2);
  local_c._0_1_ = 0x3a;
  uVar5 = FUN_004f1ec9(local_104,local_13c,2);
  local_c._0_1_ = 0x3b;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x3c;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"South Asia/Levan");
  local_c._0_1_ = 0x3d;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x3e;
  uVar3 = FUN_004f20d4(local_e8,0x6e);
  local_c._0_1_ = 0x3f;
  uVar4 = FUN_004dde06();
  local_c._0_1_ = 0x40;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x41;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x42);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004eeca9(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_140;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c360ff;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x19012);
  local_c._0_1_ = 0;
  local_c._1_3_ = 0;
  local_14c = 1;
  local_140 = 8;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
    local_c._0_1_ = 1;
    uVar2 = FUN_004f1d8d(local_104,1,uVar1);
    local_c._0_1_ = 2;
    uVar3 = FUN_004f20d4(local_cc,local_14c);
    local_c._0_1_ = 3;
    uVar4 = FUN_004dd7b9(local_e8,local_14c);
    local_c._0_1_ = 4;
    uVar5 = FUN_004f1ec9(local_120,local_13c,local_14c);
    local_c._0_1_ = 5;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 6;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_14c = 1;
  local_140 = 6;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 7;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 8;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 8);
    local_c._0_1_ = 9;
    uVar4 = FUN_004dd8d3(local_cc,local_14c);
    local_c._0_1_ = 10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0xb;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0xc;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_14c = 1;
  local_140 = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_13c,"America");
    local_c._0_1_ = 0xd;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0xe;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 0xe);
    local_c._0_1_ = 0xf;
    uVar4 = FUN_004dd266(local_cc,local_14c);
    local_c._0_1_ = 0x10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x11;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x12;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC 1");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004dd39d(local_cc);
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Thai");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,0x66);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004de004();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,0x6a);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004dd266(local_cc,1);
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x25;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x26;
  uVar3 = FUN_004f20d4(local_e8,0x69);
  local_c._0_1_ = 0x27;
  uVar4 = FUN_004dd266(local_cc,2);
  local_c._0_1_ = 0x28;
  uVar5 = FUN_004f1ec9(local_104,local_13c,2);
  local_c._0_1_ = 0x29;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x2a);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004ef44d(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_140;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c360ff;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x1900e);
  local_c._0_1_ = 0;
  local_c._1_3_ = 0;
  local_14c = 1;
  local_140 = 7;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
    local_c._0_1_ = 1;
    uVar2 = FUN_004f1d8d(local_104,1,uVar1);
    local_c._0_1_ = 2;
    uVar3 = FUN_004f20d4(local_cc,local_14c);
    local_c._0_1_ = 3;
    uVar4 = FUN_004dd7b9(local_e8,local_14c);
    local_c._0_1_ = 4;
    uVar5 = FUN_004f1ec9(local_120,local_13c,local_14c);
    local_c._0_1_ = 5;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 6;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_14c = 1;
  local_140 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 7;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 8;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 8);
    local_c._0_1_ = 9;
    uVar4 = FUN_004dd8d3(local_cc,local_14c);
    local_c._0_1_ = 10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0xb;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0xc;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_14c = 1;
  local_140 = 2;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_13c,"America");
    local_c._0_1_ = 0xd;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0xe;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 0xe);
    local_c._0_1_ = 0xf;
    uVar4 = FUN_004dd266(local_cc,local_14c);
    local_c._0_1_ = 0x10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x11;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x12;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004dd39d(local_cc);
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Thai");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,0x66);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004de004();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,0x69);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004dd266(local_cc,2);
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1ec9(local_104,local_13c,2);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"America");
  local_c._0_1_ = 0x25;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x26;
  uVar3 = FUN_004f20d4(local_e8,0x6a);
  local_c._0_1_ = 0x27;
  uVar4 = FUN_004dd266(local_cc,1);
  local_c._0_1_ = 0x28;
  uVar5 = FUN_004f1ec9(local_104,local_13c,1);
  local_c._0_1_ = 0x29;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x2a);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004efbf3(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_148;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c34bf1;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x1903d);
  local_c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Baltic");
  local_c._0_1_ = 1;
  uVar2 = FUN_004f1d8d(local_104,1,uVar1);
  local_c._0_1_ = 2;
  uVar3 = FUN_004f20d4(local_cc,8);
  local_c._0_1_ = 3;
  uVar4 = FUN_004dd566();
  local_c._0_1_ = 4;
  uVar5 = FUN_004f1e0b(local_120,local_13c);
  local_c._0_1_ = 5;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 6;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Central Europe");
  local_c._0_1_ = 7;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 8;
  uVar3 = FUN_004f20d4(local_e8,9);
  local_c._0_1_ = 9;
  uVar4 = FUN_004dd665();
  local_c._0_1_ = 10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0xb;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0xc;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"South East Europe");
  local_c._0_1_ = 0xd;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0xe;
  uVar3 = FUN_004f20d4(local_e8,10);
  local_c._0_1_ = 0xf;
  uVar4 = FUN_004ddf05();
  local_c._0_1_ = 0x10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x11;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x12;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Mediterranean");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,0xb);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004ddcb2();
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Middle East/North Africa");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,0xd);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004ddc08();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Central Asia");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,0xe);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004dd5bb();
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  local_14c = 1;
  local_148 = 7;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 0x25;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0x26;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 0xf);
    local_c._0_1_ = 0x27;
    uVar4 = FUN_004dd8d3(local_cc,local_14c);
    local_c._0_1_ = 0x28;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x29;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x2a;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Middle East/North Africa");
  local_c._0_1_ = 0x2b;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x2c;
  uVar3 = FUN_004f20d4(local_e8,0x6d);
  local_c._0_1_ = 0x2d;
  uVar4 = FUN_004ddc08();
  local_c._0_1_ = 0x2e;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x2f;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x30);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004f042e(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_148;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c357d8;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x190b1);
  local_c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Baltic");
  local_c._0_1_ = 1;
  uVar2 = FUN_004f1d8d(local_104,1,uVar1);
  local_c._0_1_ = 2;
  uVar3 = FUN_004f20d4(local_cc,1);
  local_c._0_1_ = 3;
  uVar4 = FUN_004dd566();
  local_c._0_1_ = 4;
  uVar5 = FUN_004f1e0b(local_120,local_13c);
  local_c._0_1_ = 5;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 6;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Central Europe");
  local_c._0_1_ = 7;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 8;
  uVar3 = FUN_004f20d4(local_e8,2);
  local_c._0_1_ = 9;
  uVar4 = FUN_004dd665();
  local_c._0_1_ = 10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0xb;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0xc;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"South East Europe");
  local_c._0_1_ = 0xd;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0xe;
  uVar3 = FUN_004f20d4(local_e8,3);
  local_c._0_1_ = 0xf;
  uVar4 = FUN_004ddf05();
  local_c._0_1_ = 0x10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x11;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x12;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Mediterranean");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,4);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004ddcb2();
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Middle East/North Africa");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,6);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004ddc08();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Central Asia");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,7);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004dd5bb();
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x24;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Russia");
  local_c._0_1_ = 0x25;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x26;
  uVar3 = FUN_004f20d4(local_e8,8);
  local_c._0_1_ = 0x27;
  uVar4 = FUN_004dddb1();
  local_c._0_1_ = 0x28;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x29;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x2a;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  local_14c = 1;
  local_148 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 0x2b;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 0x2c;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 9);
    local_c._0_1_ = 0x2d;
    uVar4 = FUN_004dd8d3(local_cc,local_14c);
    local_c._0_1_ = 0x2e;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0x2f;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0x30;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC");
  local_c._0_1_ = 0x31;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x32;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0x33;
  uVar4 = FUN_004dd348();
  local_c._0_1_ = 0x34;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x35;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x36;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"South Asia/Levan");
  local_c._0_1_ = 0x37;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x38;
  uVar3 = FUN_004f20d4(local_e8,0x6e);
  local_c._0_1_ = 0x39;
  uVar4 = FUN_004dde06();
  local_c._0_1_ = 0x3a;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x3b;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x3c);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004f0e4e(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c346b3;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffeb0;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x19144);
  local_c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Thai");
  local_c._0_1_ = 1;
  uVar2 = FUN_004f1d8d(local_104,1,uVar1);
  local_c._0_1_ = 2;
  uVar3 = FUN_004f20d4(local_cc,1);
  local_c._0_1_ = 3;
  uVar4 = FUN_004de004();
  local_c._0_1_ = 4;
  uVar5 = FUN_004f1e0b(local_e8,local_13c);
  local_c._0_1_ = 5;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 6;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Taiwan");
  local_c._0_1_ = 7;
  uVar2 = FUN_004f1d8d(local_e8,1);
  local_c._0_1_ = 8;
  uVar3 = FUN_004f20d4(local_120,2);
  local_c._0_1_ = 9;
  uVar4 = FUN_004ddfaf();
  local_c._0_1_ = 10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0xb;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0xc;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Hong Kong");
  local_c._0_1_ = 0xd;
  uVar2 = FUN_004f1d8d(local_e8,1);
  local_c._0_1_ = 0xe;
  uVar3 = FUN_004f20d4(local_120,4);
  local_c._0_1_ = 0xf;
  uVar4 = FUN_004dd9b5();
  local_c._0_1_ = 0x10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x11;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x12;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"APAC");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_e8,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_120,0x65);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004dd348();
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"China");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_e8,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_120,0xc9);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004dd70f();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x1e);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004f1388(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_148;
  int local_140;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3453d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x18fe3);
  local_c._0_1_ = 0;
  local_c._1_3_ = 0;
  local_148 = 1;
  local_140 = 7;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
    local_c._0_1_ = 1;
    uVar2 = FUN_004f1d8d(local_104,1,uVar1);
    local_c._0_1_ = 2;
    uVar3 = FUN_004f20d4(local_cc,local_148);
    local_c._0_1_ = 3;
    uVar4 = FUN_004dd7b9(local_e8,local_148);
    local_c._0_1_ = 4;
    uVar5 = FUN_004f1ec9(local_120,local_13c,local_148);
    local_c._0_1_ = 5;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 6;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_148 = local_148 + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  local_148 = 1;
  local_140 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 7;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 8;
    uVar3 = FUN_004f20d4(local_e8,local_148 + 8);
    local_c._0_1_ = 9;
    uVar4 = FUN_004dd846(local_cc,local_148);
    local_c._0_1_ = 10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_148);
    local_c._0_1_ = 0xb;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0xc;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c._0_1_ = 0;
    FUN_004017b2(1,0);
    local_148 = local_148 + 1;
    local_140 = local_140 + -1;
  } while (local_140 != 0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Asian Latin");
  local_c._0_1_ = 0xd;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0xe;
  uVar3 = FUN_004f20d4(local_e8,0x65);
  local_c._0_1_ = 0xf;
  uVar4 = FUN_004dd511();
  local_c._0_1_ = 0x10;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x11;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x12;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Thai");
  local_c._0_1_ = 0x13;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x14;
  uVar3 = FUN_004f20d4(local_e8,0x66);
  local_c._0_1_ = 0x15;
  uVar4 = FUN_004de004();
  local_c._0_1_ = 0x16;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x17;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x18;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_13c,"Hong Kong");
  local_c._0_1_ = 0x19;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x1a;
  uVar3 = FUN_004f20d4(local_e8,0x68);
  local_c._0_1_ = 0x1b;
  uVar4 = FUN_004dd9b5();
  local_c._0_1_ = 0x1c;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x1d;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c._0_1_ = 0x1e;
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c._0_1_ = 0;
  FUN_004017b2(1,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Taiwan");
  local_c._0_1_ = 0x1f;
  uVar2 = FUN_004f1d8d(local_120,1);
  local_c._0_1_ = 0x20;
  uVar3 = FUN_004f20d4(local_e8,0x69);
  local_c._0_1_ = 0x21;
  uVar4 = FUN_004ddfaf();
  local_c._0_1_ = 0x22;
  uVar5 = FUN_004f1e0b(local_104,local_13c);
  local_c._0_1_ = 0x23;
  uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
  local_c = CONCAT31(local_c._1_3_,0x24);
  FUN_004f206d(uVar2);
  FUN_004deb27();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void FUN_004f1a03(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_14c;
  int local_148;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_13c [28];
  undefined local_120 [28];
  undefined local_104 [28];
  undefined local_e8 [28];
  undefined local_cc [64];
  undefined local_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c34385;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  FUN_004f427c(FUN_004f1cba,0x18f5e);
  local_c = 0;
  local_14c = 1;
  local_148 = 5;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"Europe")
    ;
    local_c._0_1_ = 1;
    uVar2 = FUN_004f1d8d(local_104,1,uVar1);
    local_c._0_1_ = 2;
    uVar3 = FUN_004f20d4(local_cc,local_14c);
    local_c._0_1_ = 3;
    uVar4 = FUN_004dd846(local_e8,local_14c);
    local_c._0_1_ = 4;
    uVar5 = FUN_004f1ec9(local_120,local_13c,local_14c);
    local_c._0_1_ = 5;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 6;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  local_14c = 1;
  local_148 = 3;
  do {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_13c,"EMEA");
    local_c._0_1_ = 7;
    uVar2 = FUN_004f1d8d(local_120,1);
    local_c._0_1_ = 8;
    uVar3 = FUN_004f20d4(local_e8,local_14c + 5);
    local_c._0_1_ = 9;
    uVar4 = FUN_004dd7b9(local_cc,local_14c);
    local_c._0_1_ = 10;
    uVar5 = FUN_004f1ec9(local_104,local_13c,local_14c);
    local_c._0_1_ = 0xb;
    uVar2 = FUN_004f60e4(local_8c,uVar5,uVar4,uVar3,uVar2);
    local_c._0_1_ = 0xc;
    FUN_004f206d(uVar2);
    FUN_004deb27();
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_004017b2(1,0);
    local_14c = local_14c + 1;
    local_148 = local_148 + -1;
  } while (local_148 != 0);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004f1cba(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 extraout_ECX;
  undefined local_d8 [132];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_54 [56];
  undefined4 local_1c;
  undefined2 local_18;
  undefined2 local_16;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xd0;
  local_8 = 0x4f1cc9;
  local_1c = 0;
  FUN_004222a0(3,1);
  local_8 = 1;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_54,&DAT_00e03568,4);
  local_8._0_1_ = 2;
  local_18 = 0x42b3;
  local_16 = 0x32b4;
  uVar1 = FUN_00b94330(&local_18,uVar1);
  local_8._0_1_ = 3;
  FUN_004f49f1(local_d8,uVar1);
  FUN_004017b2(1,0);
  local_8._0_1_ = 1;
  FUN_004017b2(1,0);
  uVar1 = FUN_004255c0(param_2,extraout_ECX,0x2f,extraout_ECX,param_3);
  FUN_00425a10(uVar1);
  FUN_004255c0();
  FUN_004223d0(param_1);
  local_1c = 1;
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00422210();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004f1d8d(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 extraout_ECX;
  undefined local_94 [128];
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x4f1d9c;
  local_14 = 0;
  FUN_004222a0(3,1);
  local_8 = 1;
  FUN_004f48b2(local_94,&DAT_00e03574,extraout_ECX,param_2,extraout_ECX,&DAT_00e03570);
  uVar1 = FUN_004255c0();
  FUN_004f48b2(uVar1);
  FUN_004223d0(param_1);
  local_14 = 1;
  local_8 = local_8 & 0xffffff00;
  FUN_00422210();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004f1e0b(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined local_d4 [132];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [56];
  undefined4 local_18;
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xcc;
  local_8 = 0x4f1e1a;
  local_18 = 0;
  FUN_004222a0(3,1);
  local_8 = 1;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_50,&DAT_00e03578,9);
  local_8._0_1_ = 2;
  local_14 = 0x6507;
  local_12 = 0xc21a;
  uVar1 = FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 3;
  FUN_004f49f1(local_d4,uVar1);
  FUN_004017b2(1,0);
  local_8._0_1_ = 1;
  FUN_004017b2(1,0);
  FUN_004f49f1(local_d4,param_2);
  FUN_004223d0(param_1);
  local_18 = 1;
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00422210();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004f1ec9(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined local_d8 [132];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_54 [56];
  undefined4 local_1c;
  undefined2 local_18;
  undefined2 local_16;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xd0;
  local_8 = 0x4f1ed8;
  local_1c = 0;
  FUN_004222a0(3,1);
  local_8 = 1;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_54,&DAT_00e03584,9);
  local_8._0_1_ = 2;
  local_18 = 0x6507;
  local_16 = 0xc21a;
  uVar1 = FUN_00b94330(&local_18,uVar1);
  local_8._0_1_ = 3;
  FUN_004f49f1(local_d8,uVar1);
  FUN_004017b2(1,0);
  local_8._0_1_ = 1;
  FUN_004017b2(1,0);
  FUN_004f49f1(local_d8,param_2);
  FUN_00425a10(local_d8,0x20,param_2,param_3);
  FUN_004255c0();
  FUN_004223d0(param_1);
  local_1c = 1;
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00422210();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_004f1fa3(undefined4 param_1,int param_2)

{
  undefined4 uVar1;
  int *piVar2;
  undefined local_9c [128];
  undefined local_1c [8];
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0x4f1fb2;
  local_14 = 0;
  FUN_004222a0(3,1);
  local_8 = 1;
  uVar1 = FUN_00823cac(local_1c,4);
  piVar2 = (int *)FUN_004239c0(local_9c,uVar1);
  *(undefined *)((int)piVar2 + *(int *)(*piVar2 + 4) + 0x30) = 0x30;
  FUN_004255c0(param_2 / 10000);
  FUN_004f48b2(local_9c,&DAT_00e03590);
  uVar1 = FUN_00823cac(local_1c,4);
  piVar2 = (int *)FUN_004239c0(local_9c,uVar1);
  *(undefined *)((int)piVar2 + *(int *)(*piVar2 + 4) + 0x30) = 0x30;
  FUN_004255c0(param_2 % 10000);
  FUN_004223d0(param_1);
  local_14 = 1;
  local_8 = local_8 & 0xffffff00;
  FUN_00422210();
  return param_1;
}



void FUN_004f206d(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  undefined4 uVar2;
  uint uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (*(int *)(in_EAX + 0x14) - iVar1) / 0x74;
  }
  if ((uint)((*(int *)(in_EAX + 0x10) - iVar1) / 0x74) < uVar3) {
    uVar2 = FUN_004f21e6(*(int *)(in_EAX + 0x10),1,param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar2;
  }
  else {
    FUN_0046e65a();
    FUN_004f2137(&local_10,param_1,local_10,local_c);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_004f20d4(uint *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            undefined4 param_2)

{
  undefined4 uVar1;
  uint uVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  uint *extraout_ECX;
  undefined local_34 [28];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0x4f20e0;
  uVar2 = *param_1_00;
  local_18 = 0;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a();
    local_8 = 0;
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  pbVar3 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           (**(code **)((uVar2 & 0xfffffffe) + 4))(local_34,param_1_00 + 2,param_2);
  local_8 = 1;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1,pbVar3);
  FUN_004017b2(1,0);
  return param_1;
}



void FUN_004f2137(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int in_EAX;
  int iVar1;
  int *piVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc)) / 0x74 == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = (param_4 - local_8) / 0x74;
  }
  FUN_004f2216(param_2,param_3,param_4);
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar1 = 0;
  }
  else {
    iVar1 = *local_14;
  }
  piVar2 = (int *)(local_10 + local_8 * 0x74);
  if (piVar2 <= *(int **)(iVar1 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *local_14;
    }
    if (*(int **)(iVar1 + 0xc) <= piVar2) goto LAB_004f21d7;
  }
  FUN_00a3fb10();
LAB_004f21d7:
  param_1[1] = piVar2;
  *param_1 = local_14;
  return;
}



int FUN_004f21e6(int param_1,int param_2,undefined4 param_3)

{
  FUN_004f4368(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x74 + param_1;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __thiscall FUN_004f2216(int param_1_00,uint param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined *puVar6;
  undefined *extraout_ECX;
  undefined *puVar7;
  uint local_114;
  undefined auStack_10c [120];
  undefined auStack_94 [140];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x110;
  local_8 = 0x4f2225;
  iVar3 = *(int *)(param_1_00 + 0xc);
  if (iVar3 == 0) {
    puVar7 = (undefined *)0x0;
  }
  else {
    puVar7 = (undefined *)((*(int *)(param_1_00 + 0x14) - iVar3) / 0x74);
  }
  iVar4 = *(int *)(param_1_00 + 0x10);
  puVar2 = (undefined *)((iVar4 - iVar3) / 0x74);
  puVar6 = &DAT_0234f72c;
  if (puVar2 == &DAT_0234f72c) {
    puVar2 = (undefined *)FUN_004423c1();
    puVar6 = extraout_ECX;
  }
  puVar2 = puVar2 + 1;
  if (puVar7 < puVar2) {
    if (puVar6 + -((uint)puVar7 >> 1) < puVar7) {
      puVar7 = (undefined *)0x0;
    }
    else {
      puVar7 = puVar7 + ((uint)puVar7 >> 1);
    }
    if (puVar7 < puVar2) {
      puVar7 = puVar2;
    }
    iVar3 = FUN_004f24f7();
    iVar4 = (param_3 - *(int *)(param_1_00 + 0xc)) / 0x74;
    local_8 = 0;
    FUN_004f21e6(iVar4 * 0x74 + iVar3,1,param_1);
    FUN_004f42c5(param_3,iVar3);
    FUN_004f42c5(*(undefined4 *)(param_1_00 + 0x10),(iVar4 + 1) * 0x74 + iVar3);
    if (*(int *)(param_1_00 + 0xc) != 0) {
      FUN_004f24e0(*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
    }
    *(int *)(param_1_00 + 0x14) = (int)puVar7 * 0x74 + iVar3;
    *(int *)(param_1_00 + 0x10) =
         ((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x74 + 1) * 0x74 + iVar3;
    *(int *)(param_1_00 + 0xc) = iVar3;
  }
  else {
    if ((iVar4 - param_3) / 0x74 == 0) {
      FUN_004f615e(auStack_94);
      local_8 = 2;
      FUN_004f42c5(*(undefined4 *)(param_1_00 + 0x10),param_3 + 0x74);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_004f21e6(*(int *)(param_1_00 + 0x10),1 - (*(int *)(param_1_00 + 0x10) - param_3) / 0x74,
                   auStack_94);
      local_8 = 2;
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 0x74;
      iVar3 = *(int *)(param_1_00 + 0x10);
      for (; param_3 != iVar3 + -0x74; param_3 = param_3 + 0x74) {
        FUN_004f61a4();
      }
    }
    else {
      FUN_004f615e(auStack_10c);
      local_8 = 5;
      uVar1 = *(undefined4 *)(param_1_00 + 0x10);
      uVar5 = FUN_004f42c5(uVar1,uVar1);
      *(undefined4 *)(param_1_00 + 0x10) = uVar5;
      local_114 = param_1 & 0xffffff00;
      FUN_004f43ff(param_3,uVar1,local_114,local_114,local_114);
      iVar3 = param_3 + 0x74;
      if (param_3 != iVar3) {
        do {
          FUN_004f61a4();
          param_3 = param_3 + 0x74;
        } while (param_3 != iVar3);
      }
    }
    FUN_004deb27();
  }
  FUN_00a4220a();
  return;
}



void Catch_All_004f234c(void)

{
  int unaff_EBP;
  
  if (1 < *(int *)(unaff_EBP + -0x118)) {
    FUN_004f24e0(*(int *)(unaff_EBP + -0x10c) * 0x74 + *(int *)(unaff_EBP + -0x114));
  }
  if (0 < *(int *)(unaff_EBP + -0x118)) {
    FUN_004f24e0((*(int *)(unaff_EBP + -0x10c) + 1) * 0x74 + *(int *)(unaff_EBP + -0x114));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x114));
}



void FUN_004f23a5(void)

{
  int iVar1;
  undefined4 uVar2;
  int unaff_EBP;
  int unaff_ESI;
  int iVar3;
  int unaff_EDI;
  
  __CxxThrowException_8();
  if ((unaff_EDI - *(int *)(unaff_EBP + 0x10)) / 0x74 == 0) {
    FUN_004f615e();
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_004f42c5();
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_004f21e6(*(undefined4 *)(unaff_ESI + 0x10));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 0x74;
    iVar1 = *(int *)(unaff_ESI + 0x10);
    for (iVar3 = *(int *)(unaff_EBP + 0x10); iVar3 != iVar1 + -0x74; iVar3 = iVar3 + 0x74) {
      FUN_004f61a4();
    }
  }
  else {
    FUN_004f615e();
    *(undefined4 *)(unaff_EBP + -4) = 5;
    iVar1 = *(int *)(unaff_ESI + 0x10);
    *(int *)(unaff_EBP + -0x10c) = iVar1 + -0x74;
    uVar2 = FUN_004f42c5();
    *(undefined4 *)(unaff_ESI + 0x10) = uVar2;
    *(undefined *)(unaff_EBP + -0x110) = 0;
    FUN_004f43ff(*(undefined4 *)(unaff_EBP + 0x10),iVar1,*(undefined4 *)(unaff_EBP + -0x110));
    iVar3 = *(int *)(unaff_EBP + 0x10);
    iVar1 = iVar3 + 0x74;
    for (; iVar3 != iVar1; iVar3 = iVar3 + 0x74) {
      FUN_004f61a4();
    }
  }
  FUN_004deb27();
  FUN_00a4220a();
  return;
}



void Catch_All_004f2438(void)

{
  int unaff_EBP;
  
  FUN_004f24e0(*(int *)(*(int *)(unaff_EBP + -0x10c) + 0x10) + 0x74);
  FUN_004f23a5(0);
  return;
}



void FUN_004f24e0(int param_1)

{
  int in_EAX;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 0x74) {
    FUN_004deb27();
  }
  return;
}



void __fastcall FUN_004f24f7(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 0x74) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 * 0x74);
  return;
}



void FUN_004f2541(void)

{
  FUN_004f42e9();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f2556(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4f2562;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W35BFDC15::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W35BFDC15::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f260c(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4f2618;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W07F1D277::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W07F1D277::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f26c2(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4f26ce;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WB083C899::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WB083C899::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f2778(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4f2784;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W5605E00D::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W5605E00D::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f282e(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4f283a;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W69D00CFF::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W69D00CFF::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f28e4(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4f28f0;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WD2ACA228::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WD2ACA228::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f299a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4f29a6;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W23F089DE::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W23F089DE::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f2a50(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4f2a5c;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WF1E771D8::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WF1E771D8::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_004f427c(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_00fc11c5;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_004f42c5(undefined4 param_1,undefined4 param_2)

{
  FUN_004f4659(param_1,param_2,param_2,0);
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_004f42e9(int *param_1)

{
  int iVar1;
  code *pcVar2;
  char cVar3;
  int iVar4;
  undefined4 uVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_EBX;
  
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(unaff_EBX);
  iVar1 = *param_1;
  iVar4 = iVar1;
  if (iVar1 < 0) {
    iVar4 = -iVar1;
  }
  iVar4 = FUN_004f4441(iVar4);
  if (iVar1 < 0) {
    *(undefined *)(iVar4 + -1) = 0x2d;
  }
  cVar3 = FUN_004f43b9(unaff_EBX);
  if (cVar3 != '\0') {
    FUN_00a421fb();
    return;
  }
  uVar5 = FUN_0042a230(&PTR_vftable_03256be4,
                       &std::
                        basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        ::RTTI_Type_Descriptor);
  FUN_00427b80(uVar5);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004f4368(int param_1,int param_2)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    FUN_004f43d4(param_1);
    param_1 = param_1 + 0x74;
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_004f4398(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 8); iVar1 = iVar1 + 0x74)
  {
    FUN_004deb27();
  }
  __CxxThrowException_8(0,0);
  return;
}



undefined __thiscall FUN_004f43b9(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_004f45e4(*param_1_00,param_1_00[1],param_1);
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004f43d4(int param_1)

{
  if (param_1 != 0) {
    FUN_004f615e(param_1);
  }
  return;
}



int FUN_004f43ff(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = in_EAX - param_1;
  if (param_1 != in_EAX) {
    do {
      in_EAX = in_EAX + -0x74;
      FUN_004f61a4();
    } while (in_EAX != param_1);
  }
  return param_2 + (iVar1 / 0x74) * -0x74;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_004f4441(char *param_1_00,uint param_1)

{
  char cVar1;
  int *piVar2;
  char *pcVar3;
  uint uVar4;
  char cVar5;
  locale local_40 [4];
  uint local_3c;
  uint local_38;
  char local_31;
  undefined local_30 [20];
  uint local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x4f444d;
  local_38 = param_1;
  std::locale::locale(local_40);
  local_8 = 0;
  FUN_00823b7b();
  cVar1 = FUN_004299c0();
  if (cVar1 == '\0') {
    piVar2 = (int *)FUN_00424e70(local_40);
    FUN_0085c060(local_30);
    local_8 = CONCAT31(local_8._1_3_,1);
    if (local_1c != 0) {
      pcVar3 = (char *)FUN_004221b0(0);
      if ('\0' < *pcVar3) {
        local_31 = (**(code **)(*piVar2 + 8))();
        local_3c = 0;
        pcVar3 = (char *)FUN_004221b0(0);
        cVar1 = *pcVar3;
        cVar5 = cVar1;
        do {
          if (cVar5 == '\0') {
            local_3c = local_3c + 1;
            if (local_3c < local_1c) {
              pcVar3 = (char *)FUN_004221b0(local_3c);
              cVar1 = *pcVar3;
              if (cVar1 < '\x01') {
                cVar1 = '\x7f';
              }
            }
            param_1_00 = param_1_00 + -1;
            *param_1_00 = local_31;
            cVar5 = cVar1;
          }
          uVar4 = local_38 / 10;
          cVar5 = cVar5 + -1;
          param_1_00 = param_1_00 + -1;
          *param_1_00 = (char)(local_38 % 10) + '0';
          local_38 = uVar4;
        } while (uVar4 != 0);
        FUN_004017b2(1,0);
        goto LAB_004f4535;
      }
    }
    FUN_004017b2(1,0);
  }
  do {
    uVar4 = local_38 / 10;
    param_1_00 = param_1_00 + -1;
    *param_1_00 = (char)(local_38 % 10) + '0';
    local_38 = uVar4;
  } while (uVar4 != 0);
LAB_004f4535:
  std::locale::~locale(local_40);
  FUN_00a421fb();
  return;
}



void FUN_004f4545(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_004f459b(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_(__cdecl*)(int,int),class_boost::_bi::list2<class_boost::_bi::value<int>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



undefined4 FUN_004f4580(undefined4 param_1)

{
  FUN_004f462a(param_1);
  return param_1;
}



void FUN_004f459b(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_(__cdecl*)(int,int),class_boost::_bi::list2<class_boost::_bi::value<int>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_(__cdecl*)(int,int),class_boost::_bi::list2<class_boost::_bi::value<int>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_004f45e4(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined local_18 [8];
  undefined local_10 [12];
  
  puVar3 = (undefined4 *)FUN_0042a130(local_18);
  uVar1 = *puVar3;
  uVar2 = puVar3[1];
  puVar3 = (undefined4 *)FUN_0042a0d0(local_10);
  FUN_004f46ab(*puVar3,puVar3[1],uVar1,uVar2,param_1,param_2);
  return;
}



undefined4 __thiscall FUN_004f462a(int param_1_00,undefined4 param_1)

{
  undefined local_8 [4];
  
  FUN_004f46d4(param_1_00 + 4,param_1,0,param_1_00,local_8);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_004f4659(int param_1_00,int param_1,int param_2)

{
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0x74) {
    FUN_004f43d4(param_2);
    param_2 = param_2 + 0x74;
  }
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 Catch_All_004f4687(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0xc); iVar1 = iVar1 + 0x74
      ) {
    FUN_004deb27();
  }
  __CxxThrowException_8(0,0);
  return *(undefined4 *)(unaff_EBP + 0xc);
}



void __thiscall
FUN_004f46ab(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  FUN_004f4720(param_1,param_2,param_3,param_4,param_5,param_6,param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_004f46d4(undefined4 *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            undefined4 param_3,code **param_4,undefined4 *param_5)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  undefined local_30 [28];
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4f46e0;
  local_14 = 0;
  pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           (**param_4)(local_30,*param_1,*(undefined4 *)*param_5);
  local_8 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_2,pbVar1);
  FUN_004017b2(1,0);
  return param_2;
}



void FUN_004f4720(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  undefined auStack_3c [4];
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1a54c;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_3c;
  ExceptionList = &local_14;
  FUN_004f4807(param_5,param_6);
  local_c = 0;
  FUN_004f47b1(param_1,param_2,param_3,param_4,local_38);
  FUN_004017b2(1,0);
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void FUN_004f47b1(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined local_14 [8];
  undefined4 local_c;
  
  puVar2 = (undefined4 *)FUN_0042a0d0(local_14);
  uVar3 = *puVar2;
  uVar1 = puVar2[1];
  local_c = FUN_0042a0a0(param_3,param_4,param_1,param_2);
  uVar3 = FUN_0042a0a0(param_1,param_2,uVar3,uVar1);
  FUN_00429b10(uVar3,local_c,param_5,0,0xffffffff);
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_004f4807(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 0x18) = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (param_1_00,0);
  FUN_004f4832(param_1,param_2,param_2);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_004f4832(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,char *param_1,char *param_2)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
            (param_1_00,(int)param_2 - (int)param_1);
  for (; param_1 != param_2; param_1 = param_1 + 1) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (param_1_00,1,*param_1);
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_004f4869(void)

{
  FUN_004017b2(1,0);
  __CxxThrowException_8(0,0);
  return;
}



// Library Function - Single Match
//  public: void __thiscall std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >::reserve(unsigned int)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release

void __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          uint param_1)

{
  uint uVar1;
  bool bVar2;
  
  uVar1 = *(uint *)(this + 0x14);
  if ((uVar1 <= param_1) && (*(uint *)(this + 0x18) != param_1)) {
    bVar2 = _Grow(this,param_1,true);
    if (bVar2) {
      _Eos(this,uVar1);
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_004f48b2(int *param_1,char *param_2)

{
  char cVar1;
  char *pcVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  char local_20;
  int local_18;
  
  iVar5 = 0;
  local_18 = 0;
  pcVar2 = param_2;
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  iVar3 = (int)pcVar2 - (int)(param_2 + 1);
  iVar4 = *(int *)(*(int *)(*param_1 + 4) + 0x18 + (int)param_1);
  if ((0 < iVar4) && (iVar3 < iVar4)) {
    iVar5 = iVar4 - iVar3;
  }
  FUN_00425790(param_1);
  if (local_20 == '\0') {
    local_18 = 4;
    goto LAB_004f4978;
  }
  if ((*(uint *)(*(int *)(*param_1 + 4) + 0x10 + (int)param_1) & 0x1c0) == 0x40) {
LAB_004f494c:
    iVar4 = (**(code **)(**(int **)(*(int *)(*param_1 + 4) + 0x28 + (int)param_1) + 0x20))
                      (param_2,iVar3);
    if (iVar4 == iVar3) {
      for (; 0 < iVar5; iVar5 = iVar5 + -1) {
        iVar4 = FUN_004259a0(*(undefined *)((int)param_1 + *(int *)(*param_1 + 4) + 0x30));
        if (iVar4 == -1) {
          local_18 = 4;
          break;
        }
      }
    }
    else {
      local_18 = 4;
    }
  }
  else {
    for (; 0 < iVar5; iVar5 = iVar5 + -1) {
      iVar4 = FUN_004259a0(*(undefined *)((int)param_1 + *(int *)(*param_1 + 4) + 0x30));
      if (iVar4 == -1) {
        local_18 = 4;
        break;
      }
    }
    if (local_18 == 0) goto LAB_004f494c;
  }
  *(undefined4 *)((int)param_1 + *(int *)(*param_1 + 4) + 0x18) = 0;
LAB_004f4978:
  FUN_004259e0(local_18,0);
  FUN_00425900();
  return param_1;
}



undefined * Catch_All_004f49cf(void)

{
  int unaff_EBP;
  
  FUN_004259e0(4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_004f49ec;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_004f49f1(int *param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  undefined *puVar3;
  uint uVar4;
  char local_28;
  int local_1c;
  int local_18;
  
  uVar1 = *(uint *)(param_2 + 0x14);
  uVar4 = *(uint *)(*(int *)(*param_1 + 4) + 0x18 + (int)param_1);
  local_18 = 0;
  if (((int)uVar4 < 1) || (uVar4 <= uVar1)) {
    local_1c = 0;
  }
  else {
    local_1c = uVar4 - uVar1;
  }
  FUN_00425790(param_1);
  if (local_28 == '\0') {
    local_18 = 4;
    goto LAB_004f4af8;
  }
  if ((*(uint *)(*(int *)(*param_1 + 4) + 0x10 + (int)param_1) & 0x1c0) == 0x40) {
LAB_004f4a8f:
    for (uVar4 = 0; uVar4 < uVar1; uVar4 = uVar4 + 1) {
      puVar3 = (undefined *)FUN_004221b0(uVar4);
      iVar2 = FUN_004259a0(*puVar3);
      if (iVar2 == -1) {
        local_18 = 4;
        break;
      }
    }
    if (local_18 == 0) {
      for (; local_1c != 0; local_1c = local_1c + -1) {
        iVar2 = FUN_004259a0(*(undefined *)((int)param_1 + *(int *)(*param_1 + 4) + 0x30));
        if (iVar2 == -1) {
          local_18 = 4;
          break;
        }
      }
    }
  }
  else {
    for (; local_1c != 0; local_1c = local_1c + -1) {
      iVar2 = FUN_004259a0(*(undefined *)((int)param_1 + *(int *)(*param_1 + 4) + 0x30));
      if (iVar2 == -1) {
        local_18 = 4;
        break;
      }
    }
    if (local_18 == 0) goto LAB_004f4a8f;
  }
  *(undefined4 *)((int)param_1 + *(int *)(*param_1 + 4) + 0x18) = 0;
LAB_004f4af8:
  FUN_004259e0(local_18,0);
  FUN_00425900();
  return param_1;
}



undefined * Catch_All_004f4b31(void)

{
  int unaff_EBP;
  
  FUN_004259e0(4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_004f4b4e;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_004f4b55(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_3)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x4f4b61;
  local_14 = 0;
  pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
           basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                     (local_30,param_2);
  local_8 = 0;
  pbVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                     (pbVar1,param_3,0,0xffffffff);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1,pbVar1);
  FUN_004017b2(1,0);
  return param_1;
}



int FUN_004f4ba0(undefined4 param_1)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  
  if (in_EAX == 0) {
    return 0;
  }
  iVar2 = *(int *)(in_EAX + 0x58);
  while( true ) {
    if (iVar2 == 0) {
      return 0;
    }
    cVar1 = FUN_00432636(param_1,1);
    if (cVar1 != '\0') break;
    iVar2 = *(int *)(iVar2 + 0x5c);
  }
  return iVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_004f4bcc(undefined4 param_1,int param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 uVar2;
  undefined uVar3;
  int iVar4;
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x4f4bd8;
  iVar4 = *(int *)(param_2 + 0x58);
  uVar3 = 0;
  FUN_00432199(&DAT_00e016f4);
  for (; iVar4 != 0; iVar4 = *(int *)(iVar4 + 0x5c)) {
    cVar1 = FUN_00432636(param_3,1);
    if (cVar1 != '\0') {
      uVar2 = FUN_008d7c60(local_34);
      local_8 = 0;
      FUN_0043261a(uVar2);
      local_8 = 0xffffffff;
      FUN_0040159c();
      uVar3 = 1;
    }
  }
  return uVar3;
}



undefined4 FUN_004f4c35(undefined4 param_1)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = *(int *)(in_EAX + 0x58);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    if ((*(int *)(iVar1 + 4) == 3) || (*(int *)(iVar1 + 4) == 4)) break;
    iVar1 = *(int *)(iVar1 + 0x5c);
  }
  FUN_0043261a(param_1);
  return 1;
}



undefined4 FUN_004f4c60(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00de2258,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00de2460,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00de2668,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00de2870,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00de2a78,0x4a,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f4cc3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00de2ac8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00de2cd0,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00de2ed8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00de30e0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00de32e8,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00de34f0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00de36f8,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00de3900,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_00de3b08,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00de3d10,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00de3f18,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00de4120,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00de4328,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_00de4530,0x69,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f4daf(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00de45a0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00de47a8,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00de49b0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00de4bb8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00de4dc0,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00de4fc8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00de51d0,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00de53d8,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_00de55e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00de57e8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00de59f0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00de5bf8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00de5e00,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_00de6008,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00de620c,0x2e,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f4eac(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00de6240,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00de6448,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00de6650,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00de6858,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00de6a60,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00de6c68,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00de6e70,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00de7078,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_00de7280,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00de7488,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00de7690,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00de7898,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00de7aa0,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_00de7ca8,0x164,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f4f9b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00de7e10,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00de8018,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_00de8220,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00de8428,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_00de8630,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00de8838,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00de8a40,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_00de8c48,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_00de8e50,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00de9058,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00de9260,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_00de9468,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00de9670,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00de9878,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00de9a80,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00de9c88,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_00de9e90,0x200,param_2), cVar1 != '\0')))))) &&
     (((cVar1 = (*param_1)(&DAT_00dea098,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00dea2a0,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00dea4a8,0x18a,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f50f0(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00dea638,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00dea840,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00deaa48,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00deac50,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_00deae58,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00deb060,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00deb268,0x200,param_2), cVar1 != '\0')))))) &&
      (cVar1 = (*param_1)(&DAT_00deb470,0x200,param_2), cVar1 != '\0')) &&
     (((((cVar1 = (*param_1)(&DAT_00deb678,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00deb880,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00deba88,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00debc90,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00debe98,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00dec0a0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00dec2a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00dec4b0,0x200,param_2), cVar1 != '\0')))))))) &&
      (cVar1 = (*param_1)(&DAT_00dec6b8,0x145,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f5212(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00dec800,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00deca08,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00decc10,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00dece18,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00ded020,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00ded228,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00ded430,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00ded638,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_00ded840,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00deda48,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00dedc50,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00dede58,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00dee060,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_00dee268,0x192,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f5301(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00dee400,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00dee608,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00dee810,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00deea18,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00deec20,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00deee28,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00def030,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00def238,0x11c,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f538e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00def358,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00def560,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_00def768,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00def970,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00defb78,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00defd80,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00deff88,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_00df0190,0x200,param_2), cVar1 != '\0')))) &&
     (((cVar1 = (*param_1)(&DAT_00df0398,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00df05a0,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00df07a8,0x1e1,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f544a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00df0990,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00df0b98,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00df0da0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00df0fa8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00df11b0,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00df13b8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00df15c0,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00df17c8,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_00df19d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00df1bd8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00df1de0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00df1fe8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00df21f0,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_00df23f8,0x14a,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f5539(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00df2548,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00df2750,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00df2958,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00df2b60,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00df2d68,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00df2f70,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00df3178,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_00df3380,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00df3588,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00df3790,0x1d8,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f55e4(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00df3970,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00df3b78,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00df3d80,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00df3f88,0x17e,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f563d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00df4108,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00df4310,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00df4518,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00df4720,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_00df4928,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00df4b30,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00df4d38,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_00df4f40,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_00df5148,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00df5350,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00df5558,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00df5760,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00df5968,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00df5b70,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00df5d78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00df5f80,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((cVar1 = (*param_1)(&DAT_00df6188,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_00df6390,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00df6598,0x47,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f577e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00df65e0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00df67e8,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00df69f0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00df6bf8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00df6e00,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00df7008,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00df7210,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00df7418,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_00df7620,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00df7828,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00df7a30,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00df7c38,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00df7e40,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_00df8048,0x121,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f586d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_00df8170,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00df8378,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00df8580,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00df8788,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00df8990,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00df8b98,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00df8da0,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_00df8fa8,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_00df91b0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00df93b8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00df95c0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00df97c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00df99d0,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_00df9bd8,0x105,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f595c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00df9ce0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00df9ee8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00dfa0f0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00dfa2f8,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_00dfa500,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_00dfa708,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00dfa910,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_00dfab18,0xc5,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f59e9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00dfabe0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00dfade8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00dfaff0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00dfb1f8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_00dfb400,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00dfb608,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00dfb810,0x200,param_2), cVar1 != '\0')))))) &&
      (cVar1 = (*param_1)(&DAT_00dfba18,0x200,param_2), cVar1 != '\0')) &&
     ((((cVar1 = (*param_1)(&DAT_00dfbc20,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00dfbe28,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00dfc030,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00dfc238,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00dfc440,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00dfc648,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00dfc850,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00dfca58,0x186,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f5afa(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_00dfcbe0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_00dfcde8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00dfcff0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00dfd1f8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_00dfd400,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00dfd608,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00dfd810,0x200,param_2), cVar1 != '\0')))))) &&
      (cVar1 = (*param_1)(&DAT_00dfda18,0x200,param_2), cVar1 != '\0')) &&
     ((((cVar1 = (*param_1)(&DAT_00dfdc20,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00dfde28,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00dfe030,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_00dfe238,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00dfe440,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00dfe648,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_00dfe850,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00dfea58,0xec,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f5c0b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00dfeb48,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00dfed50,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00dfef58,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00dff160,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00dff368,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_00dff570,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_00dff778,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_00dff980,0x200,param_2), cVar1 != '\0' &&
       ((((((cVar1 = (*param_1)(&DAT_00dffb88,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00dffd90,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00dfff98,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00e001a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e003a8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_00e005b0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00e007b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00e009c0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_00e00bc8,0x200,param_2), cVar1 != '\0')))))) &&
     ((((cVar1 = (*param_1)(&DAT_00e00dd0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00e00fd8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_00e011e0,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_00e013e8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e015f0,0x103,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f5d82(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00e016f8,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00e01900,0x200,param_2), cVar1 != '\0')) &&
     ((cVar1 = (*param_1)(&DAT_00e01b08,0x200,param_2), cVar1 != '\0' &&
      (cVar1 = (*param_1)(&DAT_00e01d10,0x171,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_004f5ddb(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00e01e88,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_00e02090,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_00e02298,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_00e024a0,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_00e026a8,0xbe,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 * __thiscall FUN_004f5ebe(int param_1_00,undefined4 *param_1)

{
  if ((-(uint)(*(int *)(param_1_00 + 8) != 0) & 0x7a491c) == 0) {
    *param_1 = 0;
    param_1[1] = 0;
  }
  else {
    FUN_004f5ef0(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_004f5ef0(uint *param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  uint uVar2;
  undefined4 *puVar3;
  uint *extraout_ECX;
  undefined local_1c [8];
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  local_8 = 0x4f5efc;
  local_14 = 0;
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a();
    local_8 = 1;
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  puVar3 = (undefined4 *)(**(code **)((uVar2 & 0xfffffffe) + 4))(local_1c,param_1_00 + 2);
  *param_1 = *puVar3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar3 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f5f9d(int param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  undefined local_18 [16];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  uStack_8 = 0x4f5fa9;
  if (*(int *)(param_1 + 4) != 0) {
    *param_2 = *(undefined4 *)(param_1 + 4);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 8);
  }
  puVar1 = (undefined4 *)FUN_004f6076(local_18);
  *param_2 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f6007(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8489743A::WF7BC0DCA>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f604d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_004f6064(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 1000))(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004f6076(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W8489743A::WF7BC0DCA::vftable;
    puVar2[1] = W8489743A::W1447B4FF::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_004f6007(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_004f60e4(undefined4 *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_3,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_4,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_5)

{
  *param_1 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 1),param_2);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 8),param_3);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0xf),param_4);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0x16),param_5);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_004f615e(int param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4));
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0x20));
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0x3c));
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0x58));
  FUN_004f61a4();
  return param_1;
}



void FUN_004f61a4(void)

{
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  
  if (unaff_ESI != unaff_EDI) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_ESI + 1),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 1),0,0xffffffff);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_ESI + 8),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 8),0,0xffffffff);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_ESI + 0xf),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0xf),0,0xffffffff);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_ESI + 0x16),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x16),0,0xffffffff);
    *unaff_ESI = *unaff_EDI;
  }
  return;
}



void __fastcall FUN_004f61ef(int param_1)

{
  undefined local_104 [8];
  undefined *local_fc;
  int iStack_f8;
  uint uStack_f4;
  undefined auStack_e4 [4];
  undefined local_e0 [4];
  undefined *local_dc;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3ab28;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_e4;
  uStack_f4 = DAT_0323f878 ^ (uint)&stack0xffffff10;
  ExceptionList = &local_14;
  if (*(int *)(param_1 + 0x50) != 0) {
    iStack_f8 = 0x4f6248;
    FUN_00b72080();
    local_c = 0;
    iStack_f8 = 0x4f6258;
    FUN_00b71f00();
    iStack_f8 = *(undefined4 *)(param_1 + 0x50);
    if (*(uint *)(param_1 + 0x54) < 0x10) {
      local_fc = (undefined *)(param_1 + 0x40);
    }
    else {
      local_fc = *(undefined **)(param_1 + 0x40);
    }
    local_dc = local_104;
    local_104[0] = 0;
    FUN_00b72260();
    iStack_f8 = *(int *)(param_1 + 0x6c);
    if (iStack_f8 != 0) {
      if (*(uint *)(param_1 + 0x70) < 0x10) {
        local_fc = (undefined *)(param_1 + 0x5c);
      }
      else {
        local_fc = *(undefined **)(param_1 + 0x5c);
      }
      local_dc = local_104;
      local_104[0] = 0;
      FUN_00b72260();
    }
    iStack_f8 = 4;
    local_dc = local_104;
    local_fc = local_e0;
    local_104[0] = 0;
    FUN_00b72390();
    local_c = 0xffffffff;
    iStack_f8 = 0x4f6304;
    FUN_00b72070();
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



uint FUN_004f637d(undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  uint uStack_70;
  uint uStack_6c;
  undefined4 **ppuStack_68;
  undefined4 **ppuStack_64;
  undefined *puStack_60;
  uint uStack_5c;
  undefined *puStack_4c;
  undefined4 *puStack_48;
  uint *apuStack_44 [3];
  undefined auStack_38 [16];
  undefined local_28 [8];
  int *local_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3ab02;
  local_14 = ExceptionList;
  uStack_5c = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_14;
  puStack_60 = (undefined *)0x4f63b1;
  puStack_60 = (undefined *)FUN_00b746c0();
  ppuStack_64 = (undefined4 **)param_1;
  puStack_60[6] = 1;
  puStack_60[7] = 0;
  puStack_60[2] = 1;
  *puStack_60 = 1;
  ppuStack_68 = (undefined4 **)local_28;
  uStack_6c = 0x4f63cf;
  FUN_00b748b0();
  local_c = 0;
  puStack_60 = (undefined *)0x4f63dc;
  cVar1 = (**(code **)(*local_20 + 4))();
  if (cVar1 == '\0') {
    local_c = 0xffffffff;
    puStack_60 = (undefined *)0x4f63ee;
    FUN_00b747e0();
    uVar2 = 0;
  }
  else {
    puStack_60 = (undefined *)0x0;
    ppuStack_64 = (undefined4 **)0x4;
    apuStack_44[0] = &uStack_70;
    uStack_70 = uStack_70 & 0xffffff00;
    ppuStack_68 = (undefined4 **)0x0;
    FUN_00b92ef0();
    local_c._0_1_ = 1;
    puStack_4c = (undefined *)0x0;
    puStack_60 = (undefined *)0x4f6430;
    cVar1 = FUN_00b93010();
    if (cVar1 == '\0') {
      uVar2 = 0;
    }
    else {
      puStack_60 = (undefined *)0x4;
      apuStack_44[0] = &uStack_6c;
      ppuStack_64 = (undefined4 **)puStack_4c;
      uStack_6c = uStack_6c & 0xffffff00;
      uStack_70 = 0x4f6472;
      cVar1 = FUN_00b74540();
      if (cVar1 == '\0') {
        uVar2 = 1;
      }
      else {
        puStack_60 = &DAT_00de2090;
        puStack_4c = (undefined *)0x280b5343;
        ppuStack_64 = &puStack_48;
        ppuStack_68 = (undefined4 **)&puStack_4c;
        uStack_6c = 3;
        uVar2 = uStack_6c;
        uStack_6c = 0x4f64a8;
        puVar3 = (undefined4 *)FUN_00b941c0();
        local_c._0_1_ = 2;
        puStack_60 = (undefined *)*puVar3;
        ppuStack_64 = (undefined4 **)auStack_38;
        ppuStack_68 = (undefined4 **)&puStack_4c;
        uStack_6c = 0x4f64be;
        FUN_00bb6760();
        local_c._0_1_ = 1;
        if (puStack_48 != (undefined4 *)0x0) {
          puStack_60 = (undefined *)0x1;
          ppuStack_64 = (undefined4 **)0x4f64d4;
          (**(code **)*puStack_48)();
        }
        if (puStack_4c != (undefined *)0x0) {
          puStack_60 = &DAT_00de2094;
          puStack_48 = (undefined4 *)0xcab7e8e4;
          ppuStack_64 = apuStack_44;
          ppuStack_68 = &puStack_48;
          uStack_6c = 0x4f6509;
          puVar3 = (undefined4 *)FUN_00b941c0();
          local_c._0_1_ = 3;
          puStack_60 = (undefined *)*puVar3;
          ppuStack_64 = (undefined4 **)auStack_38;
          ppuStack_68 = (undefined4 **)&puStack_4c;
          uStack_6c = 0x4f651f;
          FUN_00bb6760();
          local_c._0_1_ = 1;
          if (apuStack_44[0] != (undefined4 *)0x0) {
            puStack_60 = (undefined *)0x1;
            ppuStack_64 = (undefined4 **)0x4f6535;
            (**(code **)*apuStack_44[0])();
          }
          if (puStack_4c == (undefined *)0x0) {
            puStack_60 = (undefined *)0x4;
            uVar2 = (uint)puStack_60;
          }
          else {
            puStack_60 = &DAT_00de209c;
            puStack_48 = (undefined4 *)0x234c8091;
            ppuStack_64 = apuStack_44;
            ppuStack_68 = &puStack_48;
            uStack_6c = 0x4f656e;
            puVar3 = (undefined4 *)FUN_00b941c0();
            local_c._0_1_ = 4;
            puStack_60 = (undefined *)*puVar3;
            ppuStack_64 = (undefined4 **)auStack_38;
            ppuStack_68 = (undefined4 **)&puStack_4c;
            uStack_6c = 0x4f6584;
            FUN_00bb6760();
            local_c._0_1_ = 1;
            if (apuStack_44[0] != (undefined4 *)0x0) {
              puStack_60 = (undefined *)0x1;
              ppuStack_64 = (undefined4 **)0x4f659a;
              (**(code **)*apuStack_44[0])();
            }
            if (puStack_4c == (undefined *)0x0) {
              puStack_60 = (undefined *)0x5;
              uVar2 = (uint)puStack_60;
            }
            else {
              puStack_60 = &DAT_00de20a4;
              puStack_48 = (undefined4 *)0x2909fcd3;
              ppuStack_64 = apuStack_44;
              ppuStack_68 = &puStack_48;
              uStack_6c = 0x4f65cf;
              puVar3 = (undefined4 *)FUN_00b941c0();
              local_c._0_1_ = 5;
              puStack_60 = (undefined *)*puVar3;
              ppuStack_64 = (undefined4 **)auStack_38;
              ppuStack_68 = (undefined4 **)&puStack_4c;
              uStack_6c = 0x4f65e5;
              FUN_00bb6760();
              local_c._0_1_ = 1;
              if (apuStack_44[0] != (undefined4 *)0x0) {
                puStack_60 = (undefined *)0x1;
                ppuStack_64 = (undefined4 **)0x4f65fb;
                (**(code **)*apuStack_44[0])();
              }
              if (puStack_4c == (undefined *)0x0) {
                puStack_60 = (undefined *)0x6;
                uVar2 = (uint)puStack_60;
              }
              else {
                puStack_48 = (undefined4 *)0x52d75099;
                puStack_60 = &DAT_00de20ac;
                ppuStack_64 = apuStack_44;
                ppuStack_68 = &puStack_48;
                uStack_6c = 0x4f6632;
                puVar3 = (undefined4 *)FUN_00b941c0();
                local_c._0_1_ = 6;
                puStack_60 = (undefined *)*puVar3;
                ppuStack_64 = (undefined4 **)auStack_38;
                ppuStack_68 = (undefined4 **)&puStack_4c;
                uStack_6c = 0x4f6648;
                FUN_00bb6760();
                local_c._0_1_ = 1;
                if (apuStack_44[0] != (undefined4 *)0x0) {
                  puStack_60 = (undefined *)0x1;
                  ppuStack_64 = (undefined4 **)0x4f665e;
                  (**(code **)*apuStack_44[0])();
                }
                if (puStack_4c == (undefined *)0x0) {
                  puStack_60 = (undefined *)0x7;
                  uVar2 = (uint)puStack_60;
                }
                else {
                  puStack_60 = (undefined *)0x2;
                  uVar2 = (uint)puStack_60;
                }
              }
            }
          }
        }
      }
    }
    local_c = (uint)local_c._1_3_ << 8;
    puStack_60 = (undefined *)0x4f6443;
    FUN_00b92d80();
    local_c = 0xffffffff;
    puStack_60 = (undefined *)0x4f6451;
    FUN_00b747e0();
  }
  ExceptionList = local_14;
  return uVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x004f674c)

undefined4 * FUN_004f66d9(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_004f6b70();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004f68a9(undefined4 *param_1)

{
  if (param_1[4] != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  *param_1 = WDE765622::WFFD9EF6E::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f6a5d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4f6a69;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W7D2E7284::WEE55BD80::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W7D2E7284::WEE55BD80::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_004f6b59(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f6b70(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D2E7284::WEE55BD80>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f6bb6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f6bcd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D2E7284::W74516A7E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f6c13(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_004f6c2a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WDE765622::WFFD9EF6E::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_004f6c47(undefined4 *param_1)

{
  *param_1 = WDE765622::WFFD9EF6E::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x004f6e21)

undefined4 * FUN_004f6dae(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x3c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_004f707d();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f6f0d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4f6f19;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W7D2E7284::W80CFD7AC::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W7D2E7284::W80CFD7AC::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_004f7009(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f7020(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D2E7284::W0EB6D642>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f7066(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f707d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D2E7284::WE495792B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f70c3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x004f71b4)

undefined4 * FUN_004f7141(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x3c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_004f73f2();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



void Catch_All_004f73db(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f73f2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D2E7284::W2034B5B1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f7438(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x004f752c)

undefined4 * FUN_004f74b6(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_004f7946();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f7833(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4f783f;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W7D2E7284::WB12516CC::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W7D2E7284::WB12516CC::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_004f792f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f7946(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D2E7284::WB12516CC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f798c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f79a3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D2E7284::W32F7855A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f79e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x004f7add)

undefined4 * FUN_004f7a67(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_004f7ef6();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f7de3(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4f7def;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W7D2E7284::WDD8EF473::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W7D2E7284::WDD8EF473::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_004f7edf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f7ef6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D2E7284::WDD8EF473>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f7f3c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f7f53(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D2E7284::WB75DA05F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f7f99(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x004f808d)

undefined4 * FUN_004f8017(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_004f84a7();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f8394(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4f83a0;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W7D2E7284::WB8D9DB0A::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W7D2E7284::WB8D9DB0A::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_004f8490(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f84a7(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D2E7284::WB8D9DB0A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f84ed(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f8504(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D2E7284::WF0A26A1F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f854a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x004f863e)

undefined4 * FUN_004f85c8(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x44);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_004f8a57();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f8944(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4f8950;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W7D2E7284::W77560FB4::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W7D2E7284::W77560FB4::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_004f8a40(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f8a57(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D2E7284::W77560FB4>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f8a9d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f8ab4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D2E7284::W01E15C6C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f8afa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004f8cbb(int param_1)

{
  if (*(int *)(param_1 + 0x178) != 0) {
    FUN_0040127a();
  }
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  if (*(int *)(param_1 + 0xf8) != 0) {
    FUN_0040127a();
  }
  FUN_004f8d32(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004f8d32(int param_1)

{
  if (*(int *)(param_1 + 0xf0) != 0) {
    FUN_0040127a();
  }
  FUN_004f8dfe(param_1 + 0xc4);
  FUN_007d6af1();
  FUN_004f8d85(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004f8d85(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uStack_28;
  undefined4 *puStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  puStack_24 = param_1 + 0x13;
  local_8 = 6;
  puVar1 = &uStack_28;
  uStack_28 = 0x4f8da4;
  FUN_0042b9b9();
  local_8._0_1_ = 5;
  if (param_1[0x12] != 0) {
    puVar1[-1] = 0x4f8db4;
    FUN_0040127a();
  }
  local_8._0_1_ = 4;
  if (param_1[0x10] != 0) {
    puVar1[-1] = 0x4f8dc4;
    FUN_0040127a();
  }
  puVar1[-1] = param_1 + 9;
  local_8._0_1_ = 3;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x4f8dd1;
  FUN_004f9a9c();
  *(undefined4 *)((int)puVar2 + -4) = 0x4f8dd9;
  FUN_00417fe6();
  param_1[5] = WE7A5EFDD::WF1113228::vftable;
  local_8 = (uint)local_8._1_3_ << 8;
  if (param_1[3] != 0) {
    *(undefined4 *)((int)puVar2 + -4) = 0x4f8df0;
    FUN_0040127a();
  }
  *param_1 = WDE765622::W7D1BCF17::vftable;
  *(undefined4 *)((int)puVar2 + -4) = 0x4f8dfb;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004f8dfe(int param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  iStack_24 = param_1 + 8;
  puVar1 = &uStack_28;
  uStack_28 = 0x4f8e1a;
  FUN_0048ae42();
  puVar1[-1] = 0x4f8e21;
  FUN_00417fe6();
  puVar1[-1] = 0x4f8e26;
  return;
}



void FUN_004f8e29(void)

{
  undefined4 *puVar1;
  undefined4 local_44c;
  undefined4 local_448;
  uint uStack_444;
  undefined auStack_434 [24];
  undefined4 *local_41c;
  undefined local_418 [1020];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c51db6;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_434;
  uStack_444 = DAT_0323f878 ^ (uint)&stack0xfffffbc0;
  ExceptionList = &local_14;
  local_41c = &local_44c;
  local_44c = 0xa0c;
  local_448 = 8;
  puVar1 = (undefined4 *)FUN_00465be3(local_418);
  local_c = 0;
  local_44c = *puVar1;
  local_41c = &local_44c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_004f982d(int **param_1)

{
  undefined4 *puVar1;
  char *pcVar2;
  int **local_f8;
  int **local_f4;
  char local_c4 [32];
  char local_a4 [32];
  undefined local_84 [4];
  int local_80;
  int *local_7c [6];
  int local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  int ***local_50;
  undefined **local_4c;
  undefined4 local_48;
  int **local_44;
  int *local_40;
  int ***local_3c;
  char local_35;
  char local_34;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xd0;
  local_8 = 0x4f983c;
  local_f4 = (int **)local_84;
  local_3c = (int ***)0x0;
  local_f8 = param_1;
  local_44 = param_1;
  local_54 = 2;
  local_50 = (int ***)0x6d4;
  local_5c = 2;
  local_58 = 0x79e;
  puVar1 = (undefined4 *)FUN_0050749c();
  local_48 = *puVar1;
  local_4c = W560DA063::WF018C615::vftable;
  local_8 = 0;
  if (local_80 != 0) {
    local_f4 = (int **)0x4f9883;
    FUN_0040127a();
  }
  local_40 = (int *)0x0;
  local_f4 = (int **)&local_54;
  local_f8 = &local_40;
  local_8._0_1_ = 1;
  local_35 = FUN_00b9a69c();
  if (local_35 == '\0') {
    local_f4 = (int **)0xd0a20752;
    local_f8 = (int **)0x4f98b0;
    FUN_00b940e0();
  }
  else {
    local_3c = &local_f8;
    FUN_004f9bd2(&local_f8);
    FUN_00bb7510();
    local_8._0_1_ = 2;
    if ((-(uint)(local_34 != '\0') & 0x6a1cd8) == 0) {
      local_c4[0] = '\0';
      local_8 = 5;
      pcVar2 = local_c4;
      local_3c = (int ***)0x4;
    }
    else {
      local_f4 = (int **)0x4f98f1;
      local_f4 = (int **)FUN_00ba84f0();
      local_8 = CONCAT31(local_8._1_3_,3);
      pcVar2 = local_a4;
      local_3c = (int ***)0x1;
      local_a4[0] = '\0';
      local_f8 = (int **)0x4f990e;
      FUN_00412a6f();
      local_8 = 4;
      local_3c = (int ***)0x3;
    }
    local_50 = &local_f8;
    local_f8 = (int **)0x0;
    local_f4 = (int **)0x0;
    FUN_007b4f8f(local_44 + 0x58,pcVar2);
    if ((((uint)local_3c & 4) != 0) &&
       (local_3c = (int ***)((uint)local_3c & 0xfffffffb), local_c4[0] != '\0')) {
      local_f4 = (int **)0x0;
      local_f8 = (int **)0x1;
      FUN_00401829();
      local_c4[0] = '\0';
    }
    if ((((uint)local_3c & 2) != 0) &&
       (local_3c = (int ***)((uint)local_3c & 0xfffffffd), local_a4[0] != '\0')) {
      local_f4 = (int **)0x0;
      local_f8 = (int **)0x1;
      FUN_00401829();
      local_a4[0] = '\0';
    }
    local_8 = 2;
    if (((uint)local_3c & 1) != 0) {
      local_f4 = (int **)0x0;
      local_f8 = (int **)0x1;
      FUN_00401829();
    }
    local_8._0_1_ = 1;
    if (local_34 != '\0') {
      local_f4 = (int **)0x0;
      local_f8 = (int **)0x1;
      FUN_004017b2();
    }
  }
  local_f4 = (int **)0x0;
  local_f8 = (int **)0x1;
  local_7c[0] = (int *)FUN_00418daa();
  if (local_7c[0] == (int *)0x0) {
    local_7c[0] = (int *)0x0;
  }
  else {
    *local_7c[0] = (int)local_7c;
  }
  local_8._0_1_ = 6;
  local_f4 = (int **)0x4f99ef;
  local_64 = FUN_007fb465();
  *(undefined *)(local_64 + 0x2d) = 1;
  *(int *)(local_64 + 4) = local_64;
  *(int *)local_64 = local_64;
  *(int *)(local_64 + 8) = local_64;
  local_60 = 0;
  local_8._0_1_ = 7;
  if (local_35 != '\0') {
    local_f4 = (int **)&local_5c;
    local_f8 = &local_40;
    local_35 = FUN_00b9a69c();
    if (local_35 == '\0') {
      local_f4 = (int **)0x442c9cfc;
      local_f8 = (int **)0x4f9a39;
      FUN_00b940e0();
    }
    else if (local_40 != (int *)0x0) {
      local_f4 = (int **)&local_35;
      local_f8 = local_7c;
      local_35 = FUN_00bb8f86(local_40);
      local_44 = (int **)local_44[1];
      local_f4 = (int **)0x4f9a6b;
      FUN_005d46ef();
    }
  }
  local_f4 = local_7c;
  local_8._0_1_ = 1;
  local_f8 = (int **)0x4f9a7a;
  FUN_004fc534();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_40 != (int *)0x0) {
    local_f8 = (int **)0x1;
    (**(code **)*local_40)();
  }
  local_f8 = (int **)0x4f9a92;
  FUN_00a421fb();
  return;
}



void FUN_004f9a95(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W71DA37B9::W69A87E0F::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004f9a9c(undefined4 *param_1)

{
  int iVar1;
  int iVar2;
  
  iVar2 = param_1[3];
  if (iVar2 != 0) {
    iVar1 = param_1[4];
    for (; iVar2 != iVar1; iVar2 = iVar2 + 0x20) {
      FUN_00507e58();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_004f9aed(uint *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  uint uVar2;
  uint *extraout_ECX;
  
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a();
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  (**(code **)((uVar2 & 0xfffffffe) + 4))(param_1_00 + 2,param_1,param_2);
  return;
}



void FUN_004f9b2c(void)

{
  int *piVar1;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EDI + 0x18);
  FUN_004f9b50(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(unaff_EDI + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



void FUN_004f9b50(int param_1)

{
  if (*(char *)(param_1 + 0x19) == '\0') {
    FUN_004f9b50(*(undefined4 *)(param_1 + 8));
    if (*(int *)(param_1 + 0x14) != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __fastcall FUN_004f9b8e(int *param_1)

{
  int iVar1;
  int *unaff_ESI;
  
  if (*param_1 == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = *param_1 + 4;
  }
  *unaff_ESI = iVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 1);
}



void __fastcall FUN_004f9bae(undefined4 param_1,int **param_2)

{
  int *piVar1;
  int iVar2;
  int *unaff_ESI;
  
  piVar1 = *param_2;
  if (piVar1 == (int *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = *(int *)(*piVar1 + 4) + (int)piVar1;
  }
  *unaff_ESI = iVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004f9bd2(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *unaff_ESI;
  undefined4 *local_14;
  
  *param_1 = *unaff_ESI;
  param_1[1] = 0;
  uVar1 = *unaff_ESI;
  local_14 = (undefined4 *)operator_new(0x10);
  if (local_14 == (undefined4 *)0x0) {
    local_14 = (undefined4 *)0x0;
  }
  else {
    uVar2 = *unaff_ESI;
    local_14[1] = 1;
    local_14[2] = 1;
    *local_14 = boost::detail::sp_counted_impl_p<class_common::WB943A9F0>::vftable;
    local_14[3] = uVar2;
  }
  *unaff_ESI = 0;
  FUN_004f9c5a();
  if (local_14 != (undefined4 *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar1,uVar1);
  return param_1;
}



void FUN_004f9c5a(void)

{
  int iVar1;
  int *in_EAX;
  int *unaff_EDI;
  
  iVar1 = *in_EAX;
  if (iVar1 != *unaff_EDI) {
    if (iVar1 != 0) {
      LOCK();
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
      UNLOCK();
    }
    if (*unaff_EDI != 0) {
      FUN_0040127a();
    }
    *unaff_EDI = iVar1;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f9c80(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = &boost::detail::sp_counted_impl_p<class_W71DA37B9::W1B4E3C28>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f9cc6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_004f9cdd(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W71DA37B9::WA3742B3D::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_004f9d61(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W32DA97C4::W47F368BA::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_004f9dc4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_004f9e67(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W76AFA8BF::WA2992397::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -5);
  }
  return param_1_00 + -5;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004f9e88(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76AFA8BF::W0776354A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004f9ece(void)

{
  int *piVar1;
  code *pcVar2;
  int unaff_EBP;
  
  piVar1 = *(int **)(unaff_EBP + 8);
  if (piVar1 != (int *)0x0) {
    (***(code ***)(*(int *)(*piVar1 + 4) + (int)piVar1))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



undefined4 * __thiscall FUN_004f9eec(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W76AFA8BF::WA2992397::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_004f9f09(void)

{
  FUN_004f9e67();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall FUN_004f9f11(int param_1_00,undefined4 param_1,int param_2)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c2a12c;
  if (*(char *)(param_1_00 + -8) != '\0') {
    puVar1 = (undefined *)FUN_007d8c32(param_1_00 + -0xc);
  }
  if (param_2 != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  return puVar1;
}



void FUN_004f9f4b(void)

{
  FUN_004f9f11();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall FUN_004f9f53(int param_1_00,undefined4 param_1,int param_2)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c2a12c;
  if (*(char *)(param_1_00 + -8) != '\0') {
    puVar1 = (undefined *)FUN_007d842c(param_1_00 + -0xc);
  }
  if (param_2 != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  return puVar1;
}



void FUN_004f9f8d(void)

{
  FUN_004f9f53();
  return;
}



void __fastcall FUN_004f9f95(int param_1)

{
  if (*(char *)(param_1 + -8) != '\0') {
    FUN_007b4708();
  }
  return;
}



void FUN_004f9fac(void)

{
  FUN_004f9f95();
  return;
}



void __thiscall FUN_004f9fb4(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + -8) != '\0') {
    FUN_007d845c(param_1_00 + -0xc,param_1);
  }
  return;
}



void FUN_004f9fca(void)

{
  FUN_004f9fb4();
  return;
}



void __thiscall FUN_004f9fd2(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  if (*(char *)(param_1_00 + -8) != '\0') {
    FUN_007d8948(param_1_00 + -0xc,param_1);
    FUN_007d8a81(param_1_00 + -0xc,param_1,param_2);
  }
  return;
}



void FUN_004f9fff(void)

{
  FUN_004f9fd2();
  return;
}



void __thiscall FUN_004fa007(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + -8) != '\0') {
    FUN_007d8534(param_1_00 + -0xc,param_1);
  }
  return;
}



void FUN_004fa01d(void)

{
  FUN_004fa007();
  return;
}



void __thiscall FUN_004fa025(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + -8) != '\0') {
    FUN_007d860c(param_1_00 + -0xc,param_1);
  }
  return;
}



void FUN_004fa03b(void)

{
  FUN_004fa025();
  return;
}



void __thiscall FUN_004fa059(int param_1_00,undefined4 param_1)

{
  param_1_00 = param_1_00 - *(int *)(param_1_00 + -4);
  if (*(char *)(param_1_00 + -8) != '\0') {
    FUN_007d94e8(param_1_00 + -0xc,param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int ** __thiscall FUN_004fa061(int param_1_00,int **param_1)

{
  int *piVar1;
  int *piVar2;
  int **ppiVar3;
  int local_14;
  
  piVar2 = (int *)operator_new(0x18);
  if (piVar2 == (int *)0x0) {
    piVar2 = (int *)0x0;
  }
  else {
    *piVar2 = (int)&PTR_00fc1774;
    piVar2[5] = (int)W76AFA8BF::WA2992397::vftable;
    *(undefined ***)((int)piVar2 + *(int *)(*piVar2 + 4)) = W76AFA8BF::W0776354A::vftable;
    *(int *)(*(int *)(*piVar2 + 4) + -4 + (int)piVar2) = *(int *)(*piVar2 + 4) + -0x14;
    piVar2[1] = param_1_00;
    piVar2[2] = param_1_00;
    *(undefined *)(piVar2 + 3) = 1;
  }
  *param_1 = piVar2;
  param_1[1] = (int *)0x0;
  ppiVar3 = (int **)FUN_004f9e88(piVar2);
  piVar1 = param_1[1];
  param_1[1] = *ppiVar3;
  *ppiVar3 = piVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,piVar2,piVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004fa101(int param_1)

{
  if (*(int *)(param_1 + 0x24) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x1c) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x14) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0040127a();
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



void Catch_All_004fa1ba(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_004fa101(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_004fa2a2(void)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *(undefined4 *)(in_EAX + 0xec);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0xf0);
}



undefined4 * __thiscall FUN_004fa2ba(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WDE765622::W7D1BCF17::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_004fa2d7(undefined4 *param_1)

{
  *param_1 = WDE765622::W7D1BCF17::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004fa2e4(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4fa2f0;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WB660AB6A::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WB660AB6A::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_004fa39a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x4fa3a6;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WBADA5A79::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WBADA5A79::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004fa450(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::W58A67039>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004fa496(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004fa4ad(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WE711C61D::W58A67039::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_004fa450(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_004fa64b(void)

{
  undefined4 *puVar1;
  undefined4 local_504;
  undefined4 local_500;
  uint uStack_4fc;
  undefined auStack_4ec [16];
  undefined local_4dc [32];
  undefined4 *local_4bc;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c51c80;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_4ec;
  uStack_4fc = DAT_0323f878 ^ (uint)&stack0xfffffb08;
  ExceptionList = &local_14;
  local_4bc = &local_504;
  local_504 = 0xa0c;
  local_500 = 10;
  puVar1 = (undefined4 *)FUN_00465be3(local_4dc);
  local_c = 0;
  local_504 = *puVar1;
  local_4bc = &local_504;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_004fc534(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x4fc54c;
  FUN_004fc55c();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_004fc553;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_004fb6de(int param_1,undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  undefined4 uVar3;
  undefined4 *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0x4fb6ea;
  piVar1 = *(int **)(*(int *)(param_1 + 0x174) + 0x10);
  cVar2 = (**(code **)(*piVar1 + 0x20))();
  if (cVar2 == '\0') {
    uVar3 = 0x41f16815;
  }
  else {
    cVar2 = (**(code **)(**(int **)(param_1 + 4) + 0x24))(1000);
    if (cVar2 == '\0') {
      uVar3 = 0x38a2df18;
    }
    else {
      local_14[0] = (undefined4 *)0x0;
      local_8 = 0;
      cVar2 = (**(code **)(*piVar1 + 0x24))(local_14);
      if (cVar2 == '\0') {
        FUN_00b940e0(0xdf61e6c0);
      }
      local_8 = 0xffffffff;
      if (local_14[0] != (undefined4 *)0x0) {
        (**(code **)*local_14[0])(1);
      }
      if (cVar2 == '\0') {
        return '\0';
      }
      cVar2 = FUN_00506c33(param_2);
      if (cVar2 != '\0') {
        return cVar2;
      }
      uVar3 = 0xb4aec45d;
    }
  }
  FUN_00b940e0(uVar3);
  return '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x004fb800)

undefined4 * FUN_004fb799(undefined4 *param_1,int param_2,int param_3)

{
  if (param_2 == 2) {
    if (param_3 != 0x31) goto LAB_004fb7f6;
  }
  else if ((param_2 != 3) || ((param_3 != 0x31 && (param_3 != 0x35)))) goto LAB_004fb7f6;
  FUN_004fc968();
LAB_004fb7f6:
  *param_1 = 0;
  param_1[1] = 0;
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_004fb832(void)

{
  bool bVar1;
  undefined auStack_54 [16];
  undefined *puStack_44;
  int *piStack_40;
  int local_3c;
  int local_38;
  undefined local_24 [4];
  int local_20;
  int local_1c;
  int local_18;
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18 = 0;
  local_14 = (int *)auStack_54;
  local_8 = 0;
  FUN_004180b1();
  FUN_00516122(local_24);
  local_8._0_1_ = 1;
  local_38 = 0x4fb873;
  FUN_004fe47e();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    local_38 = 0x4fb883;
    FUN_0040127a();
  }
  bVar1 = local_1c != 0;
  if (!bVar1) {
    local_38 = 0x997fda85;
    local_3c = 0x4fb8d0;
    FUN_00b940e0();
    local_8 = 0xffffffff;
    if (local_18 != 0) {
      local_38 = 0x4fb8e1;
      FUN_0040127a();
    }
    return bVar1;
  }
  local_38 = local_1c;
  local_14 = &local_3c;
  local_3c = local_1c;
  piStack_40 = &local_18;
                    // WARNING: Subroutine does not return
  puStack_44 = &UNK_004fb8b0;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_004fb8eb(void)

{
  bool bVar1;
  undefined auStack_54 [16];
  undefined *puStack_44;
  int *piStack_40;
  int local_3c;
  int local_38;
  undefined local_24 [4];
  int local_20;
  int local_1c;
  int local_18;
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18 = 0;
  local_14 = (int *)auStack_54;
  local_8 = 0;
  FUN_004180b1();
  FUN_00516122(local_24);
  local_8._0_1_ = 1;
  local_38 = 0x4fb92c;
  FUN_004fe47e();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    local_38 = 0x4fb93c;
    FUN_0040127a();
  }
  bVar1 = local_1c != 0;
  if (!bVar1) {
    local_38 = 0xd34c0036;
    local_3c = 0x4fb989;
    FUN_00b940e0();
    local_8 = 0xffffffff;
    if (local_18 != 0) {
      local_38 = 0x4fb99a;
      FUN_0040127a();
    }
    return bVar1;
  }
  local_38 = local_1c;
  local_14 = &local_3c;
  local_3c = local_1c;
  piStack_40 = &local_18;
                    // WARNING: Subroutine does not return
  puStack_44 = &UNK_004fb969;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __fastcall FUN_004fbc1e(undefined4 param_1)

{
  undefined4 uVar1;
  undefined local_24 [4];
  int local_20;
  int local_1c;
  int local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18 = 0;
  local_8 = 0;
  FUN_004fbcd1(local_24);
  local_8._0_1_ = 1;
  FUN_004fe47e();
  local_8._0_1_ = 0;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  local_11 = local_1c != 0;
  if ((bool)local_11) {
    FUN_0050749c(param_1,local_24);
    local_8._0_1_ = 2;
    local_11 = FUN_005d3ad3(local_1c);
    local_8._0_1_ = 0;
    if (local_20 != 0) {
      FUN_0040127a();
    }
    if (local_11 != '\0') goto LAB_004fbcb8;
    uVar1 = 0xf8c83592;
  }
  else {
    uVar1 = 0xe40c1475;
  }
  FUN_00b940e0(uVar1);
LAB_004fbcb8:
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return local_11;
}



undefined4 FUN_004fbcd1(undefined4 param_1)

{
  FUN_004180b1();
  FUN_00515d2b(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

uint FUN_004fbd01(int param_1,undefined4 *param_2)

{
  int iVar1;
  uint uVar2;
  undefined auStack_5c [8];
  undefined *puStack_54;
  int *piStack_50;
  int iStack_4c;
  undefined4 uStack_48;
  undefined *puStack_44;
  undefined **ppuStack_40;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  undefined local_1c [4];
  undefined *local_18;
  int local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_2c = 0;
  local_28 = 0;
  local_24 = 0;
  local_20 = 0;
  ppuStack_40 = (undefined **)(param_1 + 0x160);
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  puStack_44 = (undefined *)0x4fbd30;
  FUN_007b47f9();
  local_18 = auStack_5c;
  FUN_004180b1();
  FUN_00516122(local_1c);
  local_8._0_1_ = 2;
  ppuStack_40 = (undefined **)0x4fbd5a;
  FUN_004fe47e();
  local_8._0_1_ = 1;
  if (local_18 != (undefined *)0x0) {
    ppuStack_40 = (undefined **)0x4fbd6a;
    FUN_0040127a();
  }
  local_18 = auStack_5c;
  FUN_004180b1();
  FUN_00516122(local_1c);
  local_8._0_1_ = 3;
  ppuStack_40 = (undefined **)0x4fbd94;
  FUN_004fe47e();
  local_8._0_1_ = 1;
  if (local_18 != (undefined *)0x0) {
    ppuStack_40 = (undefined **)0x4fbda6;
    FUN_0040127a();
  }
  iVar1 = local_2c;
  if ((local_2c != 0) && (local_24 != 0)) {
    ppuStack_40 = &local_18;
    local_18 = (undefined *)0x0;
    local_14[0] = 0;
    puStack_44 = (undefined *)0x4fbdd6;
    FUN_00ba477f();
    ppuStack_40 = (undefined **)local_14;
    puStack_44 = (undefined *)0x4fbde1;
    FUN_00ba477f();
    ppuStack_40 = (undefined **)0x0;
    puStack_44 = local_18 + local_14[0];
    uStack_48 = 0x4fbdf2;
    (**(code **)*param_2)();
    piStack_50 = &local_28;
    iStack_4c = iVar1;
                    // WARNING: Subroutine does not return
    puStack_54 = &UNK_004fbe07;
    FUN_0043c023();
  }
  ppuStack_40 = (undefined **)0xca84bae6;
  puStack_44 = (undefined *)0x4fbe53;
  uVar2 = FUN_00b940e0();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    ppuStack_40 = (undefined **)0x4fbeba;
    uVar2 = FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_28 != 0) {
    ppuStack_40 = (undefined **)0x4fbeca;
    uVar2 = FUN_0040127a();
  }
  return uVar2 & 0xffffff00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_004fbed4(undefined4 *param_1,undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  int unaff_EBX;
  undefined4 uVar3;
  undefined local_24 [4];
  int local_20;
  int *local_1c;
  int local_18;
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = (int *)0x0;
  local_18 = 0;
  local_8 = 0;
  FUN_004fb799(local_24,2,param_2);
  local_8._0_1_ = 1;
  FUN_004fe47e();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  piVar1 = local_1c;
  param_2._3_1_ = local_1c != (int *)0x0;
  if (!(bool)param_2._3_1_) {
    FUN_00b940e0(0xf3f7f249);
  }
  local_14[0] = 0;
  if ((bool)param_2._3_1_) {
    cVar2 = (**(code **)(*piVar1 + 0x14))(local_14);
    if (cVar2 == '\0') {
      uVar3 = 0xf66abee0;
      param_2._3_1_ = '\0';
    }
    else {
      FUN_007b4c35(unaff_EBX + 0x160);
      (**(code **)*param_1)(local_14[0],0);
      FUN_0050749c(unaff_EBX,local_24);
      local_8._0_1_ = 2;
      param_2._3_1_ = FUN_005d3ad3(piVar1);
      local_8 = (uint)local_8._1_3_ << 8;
      if (local_20 != 0) {
        FUN_0040127a();
      }
      if (param_2._3_1_ != '\0') goto LAB_004fbfb9;
      uVar3 = 0x8cdb857b;
    }
    FUN_00b940e0(uVar3);
  }
LAB_004fbfb9:
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return param_2._3_1_;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_004fbfd4(int param_1)

{
  int **ppiVar1;
  undefined4 *puVar2;
  undefined *puStack_c0;
  int iStack_bc;
  int *piStack_b8;
  undefined4 *puStack_b4;
  undefined *puStack_b0;
  undefined local_9c [24];
  undefined local_84 [4];
  int local_80;
  undefined local_7c [4];
  int local_78;
  undefined4 local_74;
  int local_70;
  undefined8 local_6c;
  int local_60;
  undefined **local_5c;
  undefined local_56;
  char local_55;
  undefined local_54 [76];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x4fbfe3;
  puStack_b0 = local_84;
  piStack_b8 = (int *)0x4fbfef;
  puStack_b4 = (undefined4 *)param_1;
  ppiVar1 = (int **)FUN_0050749c();
  local_5c = (undefined **)*ppiVar1;
  if (local_80 != 0) {
    puStack_b0 = (undefined *)0x4fc002;
    FUN_0040127a();
  }
  puStack_b0 = local_7c;
  local_60 = 3;
  puStack_b4 = (undefined4 *)0x4fc014;
  ppiVar1 = (int **)FUN_005f0832();
  local_8 = 0;
  puStack_b0 = (undefined *)0x1;
  puStack_b4 = &local_74;
  piStack_b8 = (int *)0x4fc024;
  (**(code **)(**ppiVar1 + 0x18))();
  local_8._0_1_ = 2;
  if (local_78 != 0) {
    piStack_b8 = (int *)0x4fc034;
    FUN_0040127a();
  }
  piStack_b8 = (int *)0x0;
  iStack_bc = 0;
  puStack_c0 = (undefined *)0x0;
  local_6c = FUN_0043b546(0,1);
  piStack_b8 = (int *)0x4fc056;
  FUN_00b98ea0();
  piStack_b8 = (int *)local_9c;
  local_8._0_1_ = 3;
  iStack_bc = local_74;
  puStack_c0 = local_54;
  FUN_00b9f55b();
  local_8 = CONCAT31(local_8._1_3_,5);
  piStack_b8 = (int *)0x4fc07c;
  FUN_00b98d40();
  piStack_b8 = &local_60;
  iStack_bc = 0x4fc08b;
  local_55 = (**(code **)((int)*local_5c + 0x124))();
  if (local_55 == '\0') {
    iStack_bc = 0xd52ac00e;
    puStack_c0 = (undefined *)0x4fc0a1;
    FUN_00b940e0();
  }
  local_8 = CONCAT31(local_8._1_3_,2);
  iStack_bc = 0x4fc0ae;
  FUN_00b9f511();
  local_8 = 0xffffffff;
  if (local_70 != 0) {
    iStack_bc = 0x4fc0be;
    FUN_0040127a();
  }
  if (local_55 != '\0') {
    if (local_60 == 0) {
      local_55 = '\x01';
    }
    else {
      if (local_60 == 4) {
        iStack_bc = param_1 + 0x170;
        puStack_c0 = (undefined *)0x4fc10b;
        FUN_007e2b4d();
        local_5c = &puStack_c0;
        puStack_c0 = (undefined *)0xa0c;
        iStack_bc = 0x142;
        puVar2 = (undefined4 *)FUN_00465be3(&local_6c);
        local_5c = &puStack_c0;
        local_8 = 6;
        puStack_c0 = (undefined *)*puVar2;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar2 + 1);
      }
      iStack_bc = 0xe1225353;
      local_55 = '\0';
      local_56 = (undefined)local_60;
      puStack_c0 = (undefined *)0x4fc0ed;
      FUN_00b940e0();
      iStack_bc = 1;
      puStack_c0 = &local_56;
      FUN_00b940c0(0xe1225353);
    }
  }
  iStack_bc = 0x4fc181;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_004fc182(undefined4 **param_1,undefined4 **param_2)

{
  int *piVar1;
  char cVar2;
  int **ppiVar3;
  undefined4 *puVar4;
  undefined4 local_5c [4];
  undefined4 uStack_4c;
  undefined4 uStack_48;
  undefined4 *puStack_44;
  undefined4 *local_40 [5];
  undefined4 local_2c;
  int local_28;
  int *local_24;
  undefined4 *local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x4fc18e;
  local_40[0] = &local_2c;
  puStack_44 = param_1;
  uStack_48 = 0x4fc19a;
  ppiVar3 = (int **)FUN_0050749c();
  local_24 = *ppiVar3;
  if (local_28 != 0) {
    local_40[0] = (undefined4 *)0x4fc1ad;
    FUN_0040127a();
  }
  local_20 = (undefined4 *)0x0;
  local_1c = (undefined4 *)0x0;
  local_18 = (undefined4 *)0x0;
  param_1 = (undefined4 **)local_5c;
  local_8 = 2;
  FUN_004180b1();
  cVar2 = FUN_00bbfff0(&local_20);
  if (cVar2 == '\0') {
LAB_004fc227:
    local_40[0] = (undefined4 *)0xf45b9c34;
    cVar2 = '\0';
    puStack_44 = (undefined4 *)0x4fc238;
    FUN_00b940e0();
  }
  else {
    param_1 = (undefined4 **)local_5c;
    FUN_004180b1();
    cVar2 = FUN_00bbfff0(&local_1c);
    if (cVar2 == '\0') goto LAB_004fc227;
    param_1 = (undefined4 **)local_5c;
    FUN_004180b1();
    cVar2 = FUN_00bbfff0(&local_18);
    if (cVar2 == '\0') goto LAB_004fc227;
    cVar2 = '\x01';
  }
  local_14 = (undefined4 *)0x0;
  local_8._0_1_ = 3;
  if (cVar2 != '\0') {
    puStack_44 = &param_1;
    local_40[0] = (undefined4 *)0x0;
    uStack_48 = 0x4fc259;
    puVar4 = (undefined4 *)FUN_00b933f0();
    local_40[0] = (undefined4 *)*puVar4;
    *puVar4 = 0;
    puStack_44 = (undefined4 *)0x4fc268;
    FUN_0040c727();
    if (param_1 != (undefined4 **)0x0) {
      local_40[0] = (undefined4 *)0x1;
      puStack_44 = (undefined4 *)0x4fc275;
      (*(code *)**param_1)();
    }
    local_40[0] = local_20;
    piVar1 = local_24;
    param_1 = local_40;
    local_20 = (undefined4 *)0x0;
    puStack_44 = (undefined4 *)0x6;
    uStack_48 = 0;
    uStack_4c = 0x4fc295;
    cVar2 = (**(code **)(*local_24 + 0x138))();
    if (cVar2 == '\0') {
      local_40[0] = (undefined4 *)0x878d985c;
      cVar2 = '\0';
    }
    else {
      param_1 = local_40;
      local_40[0] = local_1c;
      puStack_44 = (undefined4 *)0xe;
      uStack_48 = 0;
      local_1c = (undefined4 *)0x0;
      uStack_4c = 0x4fc2c5;
      cVar2 = (**(code **)(*piVar1 + 0x138))();
      if (cVar2 == '\0') {
        local_40[0] = (undefined4 *)0xc2dd163c;
        cVar2 = '\0';
      }
      else {
        param_1 = local_40;
        local_40[0] = local_18;
        puStack_44 = (undefined4 *)0x1c;
        uStack_48 = 0;
        local_18 = (undefined4 *)0x0;
        uStack_4c = 0x4fc2f2;
        cVar2 = (**(code **)(*piVar1 + 0x138))();
        if (cVar2 == '\0') {
          local_40[0] = (undefined4 *)0xf4f4ec3b;
          cVar2 = '\0';
        }
        else {
          param_1 = local_40;
          local_40[0] = local_14;
          puStack_44 = (undefined4 *)0x13;
          uStack_48 = 0;
          local_14 = (undefined4 *)0x0;
          uStack_4c = 0x4fc31f;
          cVar2 = (**(code **)(*piVar1 + 0x138))();
          if (cVar2 != '\0') goto LAB_004fc335;
          local_40[0] = (undefined4 *)0xfe2506cb;
        }
      }
    }
    puStack_44 = (undefined4 *)0x4fc334;
    FUN_00b940e0();
  }
LAB_004fc335:
  param_1 = (undefined4 **)0x0;
  local_8._0_1_ = 4;
  if (cVar2 != '\0') {
    local_40[0] = param_2;
    puStack_44 = (undefined4 *)0x4fc34c;
    cVar2 = FUN_00b9f072();
    piVar1 = local_24;
    local_40[0] = param_1;
    if (cVar2 == '\0') {
      local_40[0] = (undefined4 *)0xb800ca99;
      cVar2 = '\0';
    }
    else {
      param_1 = (undefined4 **)0x0;
      param_2 = local_40;
      puStack_44 = &param_2;
      uStack_48 = 0x4fc37e;
      cVar2 = (**(code **)(*local_24 + 0xf4))();
      if ((cVar2 == '\0') || (param_2 != (undefined4 **)0x0)) {
        cVar2 = '\0';
        local_40[0] = (undefined4 *)0x8452b7dd;
      }
      else {
        local_40[0] = (undefined4 *)0x4fc3a0;
        cVar2 = (**(code **)(*piVar1 + 0xf8))();
        if (cVar2 != '\0') goto LAB_004fc3b6;
        local_40[0] = (undefined4 *)0x879300cb;
      }
    }
    puStack_44 = (undefined4 *)0x4fc3b5;
    FUN_00b940e0();
  }
LAB_004fc3b6:
  local_8._0_1_ = 3;
  if (param_1 != (undefined4 **)0x0) {
    local_40[0] = (undefined4 *)0x1;
    puStack_44 = (undefined4 *)0x4fc3c7;
    (*(code *)**param_1)();
  }
  local_8._0_1_ = 2;
  if (local_14 != (undefined4 *)0x0) {
    local_40[0] = (undefined4 *)0x1;
    puStack_44 = (undefined4 *)0x4fc3d8;
    (**(code **)*local_14)();
  }
  local_8._0_1_ = 1;
  if (local_18 != (undefined4 *)0x0) {
    local_40[0] = (undefined4 *)0x1;
    puStack_44 = (undefined4 *)0x4fc3e9;
    (**(code **)*local_18)();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_1c != (undefined4 *)0x0) {
    local_40[0] = (undefined4 *)0x1;
    puStack_44 = (undefined4 *)0x4fc3fa;
    (**(code **)*local_1c)();
  }
  local_8 = 0xffffffff;
  if (local_20 != (undefined4 *)0x0) {
    local_40[0] = (undefined4 *)0x1;
    puStack_44 = (undefined4 *)0x4fc40b;
    (**(code **)*local_20)();
  }
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall
FUN_004fc415(int param_1_00,undefined4 param_1,undefined4 *param_2,undefined4 param_3,
            undefined4 param_4)

{
  int *piVar1;
  undefined4 uVar2;
  undefined local_2c [4];
  int local_28;
  int *local_24;
  int local_20;
  undefined4 local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_24 = (int *)0x0;
  local_20 = 0;
  local_8 = 0;
  FUN_004fb799(local_2c,param_3,param_4);
  local_8._0_1_ = 1;
  FUN_004fe47e();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_28 != 0) {
    FUN_0040127a();
  }
  piVar1 = local_24;
  local_15 = local_24 != (int *)0x0;
  if (!(bool)local_15) {
    FUN_00b940e0(0x9985852d);
  }
  local_1c = 0;
  if (local_15 != '\0') {
    local_15 = (**(code **)(*piVar1 + 0x14))(&local_1c);
    if (local_15 == '\0') {
      uVar2 = 0xdfcdff01;
      local_15 = '\0';
    }
    else {
      FUN_007b4c35(param_1_00 + 0x160);
      (**(code **)*param_2)(local_1c,0);
      FUN_0050749c(param_1_00,local_2c);
      local_8._0_1_ = 2;
      local_15 = FUN_005d3ad3(piVar1);
      local_8 = (uint)local_8._1_3_ << 8;
      if (local_28 != 0) {
        FUN_0040127a();
      }
      if (local_15 != '\0') {
        FUN_007dd228();
        FUN_007dd1f3();
        goto LAB_004fc519;
      }
      uVar2 = 0xd37a1622;
    }
    FUN_00b940e0(uVar2);
  }
LAB_004fc519:
  local_8 = 0xffffffff;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  return local_15;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_004fc534(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x4fc54c;
  FUN_004fc55c();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_004fc553;
  FUN_00a3f6a1();
}



void FUN_004fc55c(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_004fc590(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_004fc590(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_004fc8c4();
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00743d11();
    FUN_004fc62b();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x004fc716)
// WARNING: Removing unreachable block (ram,0x004fc726)
// WARNING: Removing unreachable block (ram,0x004fc72f)
// WARNING: Removing unreachable block (ram,0x004fc732)
// WARNING: Removing unreachable block (ram,0x004fc722)
// WARNING: Removing unreachable block (ram,0x004fc73f)
// WARNING: Removing unreachable block (ram,0x004fc74f)
// WARNING: Removing unreachable block (ram,0x004fc75a)
// WARNING: Removing unreachable block (ram,0x004fc756)
// WARNING: Removing unreachable block (ram,0x004fc74a)
// WARNING: Removing unreachable block (ram,0x004fc75d)

void FUN_004fc62b(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x4fc637;
  if (*(char *)((int)param_4 + 0x2d) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00743d11();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
    if (*(char *)(param_4[2] + 0x2d) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x2d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x2d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0xb) != '\x01') {
LAB_004fc88e:
    FUN_004017b2(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_004fc842:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xb) != '\x01'))
  goto LAB_004fc88a;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0xb) == '\0') {
      *(undefined *)(ppiVar4 + 0xb) = 1;
      *(undefined *)(ppiVar3 + 0xb) = 0;
      FUN_007fb425(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x2d) == '\0') {
      if ((*(char *)(*ppiVar4 + 0xb) != '\x01') || (*(char *)(ppiVar4[2] + 0xb) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0xb) == '\x01') {
          *(undefined *)(*ppiVar4 + 0xb) = 1;
          *(undefined *)(ppiVar4 + 0xb) = 0;
          FUN_004fc926(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0xb) = *(undefined *)(ppiVar3 + 0xb);
        *(undefined *)(ppiVar3 + 0xb) = 1;
        *(undefined *)(ppiVar4[2] + 0xb) = 1;
        FUN_007fb425(param_1);
        goto LAB_004fc88a;
      }
LAB_004fc839:
      *(undefined *)(ppiVar4 + 0xb) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0xb) == '\0') {
      *(undefined *)(ppiVar4 + 0xb) = 1;
      *(undefined *)(ppiVar3 + 0xb) = 0;
      FUN_004fc926(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x2d) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0xb) == '\x01') && (*(char *)(*ppiVar4 + 0xb) == '\x01'))
      goto LAB_004fc839;
      if (*(char *)(*ppiVar4 + 0xb) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0xb) = 1;
        *(undefined *)(ppiVar4 + 0xb) = 0;
        FUN_007fb425(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0xb) = *(undefined *)(ppiVar3 + 0xb);
      *(undefined *)(ppiVar3 + 0xb) = 1;
      *(undefined *)(*ppiVar4 + 0xb) = 1;
      FUN_004fc926(param_1);
LAB_004fc88a:
      *(undefined *)(ppiVar5 + 0xb) = 1;
      goto LAB_004fc88e;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_004fc842;
}



void FUN_004fc8c4(void)

{
  int *piVar1;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EDI + 0x18);
  FUN_004fc8e8(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(unaff_EDI + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



void FUN_004fc8e8(int param_1)

{
  if (*(char *)(param_1 + 0x2d) == '\0') {
    FUN_004fc8e8(*(undefined4 *)(param_1 + 8));
    FUN_004017b2(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __thiscall FUN_004fc926(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x2d) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



undefined4 FUN_004fc968(undefined4 param_1)

{
  undefined4 uVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c221a0;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar1 = FUN_004180b1(DAT_0323f878 ^ (uint)&stack0xffffffc0);
  local_c = 0;
  FUN_004fc9c9(uVar1);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall FUN_004fc9c9(int param_1_00,int param_1)

{
  undefined *puVar1;
  undefined4 local_38 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  puVar1 = &LAB_00c19d9e;
  if (param_1_00 != param_1) {
    local_38[0] = 0;
    local_8 = 0;
    FUN_00475d30(local_38);
    FUN_00475d30(param_1);
    FUN_00475d30(param_1_00);
    local_8 = 0xffffffff;
    puVar1 = (undefined *)FUN_00507e58();
  }
  return puVar1;
}



void FUN_004fca17(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_004fca52(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W7D2E7284::W0EB6D642>,class_boost::_bi::list1<class_boost::_bi::value<class_W7D2E7284::W0EB6D642*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_004fca52(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W7D2E7284::W0EB6D642>,class_boost::_bi::list1<class_boost::_bi::value<class_W7D2E7284::W0EB6D642*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W7D2E7284::W0EB6D642>,class_boost::_bi::list1<class_boost::_bi::value<class_W7D2E7284::W0EB6D642*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void Catch_All_004fcb2f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004fcbb8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3CA43D38::W8ABBCFAD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004fcbfe(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int **)(unaff_EBP + 8) != (int *)0x0) {
    (**(code **)(**(int **)(unaff_EBP + 8) + 4))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004fcc16(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_007b83e4(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_004fcbb8(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004fcc8a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3CA43D38::WEA3D594B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004fccd0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004fcce7(undefined4 param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W3CA43D38::WEA3D594B::vftable;
    puVar2[2] = param_1_00;
    puVar2[1] = W3CA43D38::W85139C0F::vftable;
    puVar2[3] = param_1_00;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_004fcc8a(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 __thiscall FUN_004fcd5d(undefined4 param_1_00,byte param_1)

{
  FUN_007b408b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_004fcd79(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = WABE12921::WE5976422::vftable;
  FUN_007c1e0d(unaff_ESI + 1);
  unaff_ESI[9] = 0;
  unaff_ESI[10] = 0;
  unaff_ESI[0xb] = 0;
  unaff_ESI[0xc] = 0;
  *(undefined *)(unaff_ESI + 0xd) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fcd9c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fcda8;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc1984,0xb);
  local_8 = 0;
  local_14 = 0xef60;
  local_12 = 0x8fec;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fce0c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fce18;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc1978,0xb);
  local_8 = 0;
  local_14 = 0xd08e;
  local_12 = 0x14ac;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fce7c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fce88;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc196c,0xb);
  local_8 = 0;
  local_14 = 0x2873;
  local_12 = 0x1cf6;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fceec(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fcef8;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc1960,0xb);
  local_8 = 0;
  local_14 = 0xef78;
  local_12 = 0x2532;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fcf5c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fcf68;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc1954,0xb);
  local_8 = 0;
  local_14 = 0x6404;
  local_12 = 0x9dd5;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fcfcc(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fcfd8;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc1948,0xb);
  local_8 = 0;
  local_14 = 0x4dc9;
  local_12 = 0x7e93;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd03c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd048;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc193c,0xb);
  local_8 = 0;
  local_14 = 0xbaac;
  local_12 = 0x655;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd0ac(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd0b8;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc1930,0xb);
  local_8 = 0;
  local_14 = 0xf1b0;
  local_12 = 0x9ed;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd11c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd128;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc1920,0xc);
  local_8 = 0;
  local_14 = 0xfee5;
  local_12 = 0xdba8;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd18c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd198;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc1914,0xb);
  local_8 = 0;
  local_14 = 0xfe59;
  local_12 = 0xd79d;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd1fc(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd208;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc1908,0xb);
  local_8 = 0;
  local_14 = 0xd9f7;
  local_12 = 0x2cce;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd26c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd278;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc18fc,8);
  local_8 = 0;
  local_14 = 0xad0b;
  local_12 = 0x73e8;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd2dc(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd2e8;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc18f0,8);
  local_8 = 0;
  local_14 = 0xeba9;
  local_12 = 0x5f5d;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd34c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd358;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc18e8,7);
  local_8 = 0;
  local_14 = 0x38cb;
  local_12 = 0xb90;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd3bc(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd3c8;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc18e0,7);
  local_8 = 0;
  local_14 = 0x3aa4;
  local_12 = 0x495b;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd42c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd438;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc18d8,6);
  local_8 = 0;
  local_14 = 0x67b2;
  local_12 = 0xfadb;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd49c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd4a8;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc18d0,7);
  local_8 = 0;
  local_14 = 0x2a81;
  local_12 = 0x24f9;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd50c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd518;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc18c8,7);
  local_8 = 0;
  local_14 = 0xad6e;
  local_12 = 0x2ed4;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd57c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd588;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc18c0,7);
  local_8 = 0;
  local_14 = 0xc399;
  local_12 = 0x52a7;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd5ec(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd5f8;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc18b8,7);
  local_8 = 0;
  local_14 = 0x264;
  local_12 = 0xa2eb;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd65c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd668;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc18b0,7);
  local_8 = 0;
  local_14 = 0x345a;
  local_12 = 0xbad1;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd6cc(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd6d8;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc18a4,8);
  local_8 = 0;
  local_14 = 0xce8f;
  local_12 = 0x7187;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd73c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd748;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc189c,7);
  local_8 = 0;
  local_14 = 0xe32;
  local_12 = 0xff98;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd7ac(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd7b8;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc1894,7);
  local_8 = 0;
  local_14 = 0xe2f7;
  local_12 = 0xa682;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd81c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd828;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc188c,7);
  local_8 = 0;
  local_14 = 0x9e01;
  local_12 = 0x83f2;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd88c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd898;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc1884,7);
  local_8 = 0;
  local_14 = 0x4b06;
  local_12 = 0x2298;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd8fc(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd908;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc187c,7);
  local_8 = 0;
  local_14 = 0xdc3f;
  local_12 = 0xce2c;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_004fd96c(int param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x4fd978;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00fc1870,8);
  local_8 = 0;
  local_14 = 0x7613;
  local_12 = 0x7f65;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4),pbVar2,0,0xffffffff);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



void FUN_004fd9dc(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W71DA37B9::W57E5C935::vftable;
  return;
}



void FUN_004fd9e3(void)

{
  undefined4 *unaff_ESI;
  
  FUN_004017b2(1,0);
  *unaff_ESI = W71DA37B9::W57E5C935::vftable;
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_004fd9f6(void)

{
  int *unaff_ESI;
  undefined4 unaff_EDI;
  undefined **local_38;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x4fda02;
  local_38 = W71DA37B9::WCC91D6E1::vftable;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_34);
  local_8 = 0;
  (**(code **)(*unaff_ESI + 4))(&local_38);
  FUN_007bdf16(unaff_EDI);
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_004fdd29(int param_1)

{
  if (*(int *)(param_1 + 0x28) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_004d9011(param_1);
  return;
}



undefined4 __thiscall FUN_004fdd6d(undefined4 param_1_00,byte param_1)

{
  FUN_004fdd29(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_004fdd8a(void)

{
  FUN_007b2498();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004fdd92(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88619A38::W7EEDEEF7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004fddd8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004fddef(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_004fdd92(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004fdf88(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::W1F0B8119>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004fdfce(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004fdfe5(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WE711C61D::W1F0B8119::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_004fdf88(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_004fe10f(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x38) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x30) != 0) {
    FUN_0040127a();
  }
  FUN_004fdd29(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_004fe16a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::WE1E91229>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_004fe1b0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004fe1c7(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WE711C61D::WE1E91229::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_004fe16a(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_004fe47e(void)

{
  int in_EAX;
  
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 4);
}



void Catch_All_004fe4fc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_004fe62f(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x20);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00b662a9(pvVar2,param_3);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00501268(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



void __fastcall FUN_004fe6a6(undefined4 *param_1)

{
  *param_1 = WF3C48A30::WDBA43DD5::vftable;
  return;
}



undefined4 * __thiscall FUN_004fe6ad(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::WDBA43DD5::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_004fea2f(void)

{
  undefined4 *puVar1;
  undefined4 local_4dc;
  undefined4 local_4d8;
  uint uStack_4d4;
  undefined auStack_4c4 [8];
  undefined4 *local_4bc;
  undefined4 *local_4b8;
  undefined local_4a8 [1164];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c51a8b;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_4c4;
  uStack_4d4 = DAT_0323f878 ^ (uint)&stack0xfffffb30;
  ExceptionList = &local_14;
  local_4bc = &local_4dc;
  local_4dc = 0xa0c;
  local_4d8 = 9;
  puVar1 = (undefined4 *)FUN_00465be3(local_4a8);
  local_c = 0;
  local_4dc = *puVar1;
  local_4b8 = &local_4dc;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



char FUN_004ffbff(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 uVar2;
  
  cVar1 = FUN_00506c33(param_2);
  if (cVar1 == '\0') {
    uVar2 = 0x699e112e;
  }
  else {
    cVar1 = FUN_00507080(param_1,param_3);
    if (cVar1 == '\0') {
      uVar2 = 0xdd8e01e9;
    }
    else {
      cVar1 = FUN_00507349(param_1,param_2);
      if (cVar1 != '\0') {
        return cVar1;
      }
      uVar2 = 0xbf36f82e;
    }
  }
  FUN_00b940e0(uVar2);
  return '\0';
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x0050002a)
// WARNING: Removing unreachable block (ram,0x004ffe9d)
// WARNING: Removing unreachable block (ram,0x004ffea6)
// WARNING: Removing unreachable block (ram,0x0050009a)
// WARNING: Removing unreachable block (ram,0x004ffed1)
// WARNING: Removing unreachable block (ram,0x004fff0d)
// WARNING: Removing unreachable block (ram,0x004fff41)
// WARNING: Removing unreachable block (ram,0x004ffefb)
// WARNING: Removing unreachable block (ram,0x004fff68)
// WARNING: Removing unreachable block (ram,0x004fff78)
// WARNING: Removing unreachable block (ram,0x004fff83)
// WARNING: Removing unreachable block (ram,0x004fff8f)
// WARNING: Removing unreachable block (ram,0x004fff92)
// WARNING: Removing unreachable block (ram,0x004fffb4)
// WARNING: Removing unreachable block (ram,0x004fffb9)
// WARNING: Removing unreachable block (ram,0x004fffc9)
// WARNING: Removing unreachable block (ram,0x004ffff3)
// WARNING: Removing unreachable block (ram,0x004ffffd)
// WARNING: Removing unreachable block (ram,0x00500003)
// WARNING: Removing unreachable block (ram,0x0050003f)
// WARNING: Removing unreachable block (ram,0x00500045)
// WARNING: Removing unreachable block (ram,0x00500051)
// WARNING: Removing unreachable block (ram,0x00500066)
// WARNING: Removing unreachable block (ram,0x00500076)
// WARNING: Removing unreachable block (ram,0x0050007c)

void __fastcall FUN_004ffc69(int param_1,int *param_2)

{
  int *piVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *local_9c;
  undefined4 *local_98;
  undefined4 *local_94;
  undefined4 *local_7c;
  char local_69;
  
  local_69 = FUN_005d7757();
  if (local_69 == '\0') {
    FUN_00b940e0();
  }
  puVar3 = (undefined4 *)(**(code **)(*param_2 + 4))();
  local_7c = (undefined4 *)*puVar3;
  *puVar3 = 0;
  if (local_9c != (undefined4 *)0x0) {
    (**(code **)*local_9c)();
  }
  puVar3 = (undefined4 *)FUN_00b941c0();
  local_94 = (undefined4 *)*puVar3;
  *puVar3 = 0;
  if (local_98 != (undefined4 *)0x0) {
    (**(code **)*local_98)();
  }
  if (local_69 != '\0') {
    local_7c = (undefined4 *)0x0;
    local_94 = (undefined4 *)0x0;
    cVar2 = FUN_005d7645();
    if (cVar2 == '\0') {
      local_69 = '\0';
    }
    else {
      *(undefined4 *)(*(int *)(param_1 + 0x174) + 0x28) = 1;
      local_69 = FUN_005006a1();
      if (local_69 != '\0') goto LAB_004ffda2;
    }
    FUN_00b940e0();
  }
LAB_004ffda2:
  piVar1 = *(int **)(*(int *)(param_1 + 0x174) + 0x18);
  if (local_69 != '\0') {
    FUN_0043b546(0,0);
    FUN_00b98ea0();
    FUN_00b9f55b();
    FUN_00b98d40();
    FUN_007b4c35();
    (***(code ***)(*(int *)(param_1 + 4) + 4))();
    cVar2 = (**(code **)(*piVar1 + 0x28))();
    if (cVar2 == '\0') {
      FUN_00b940e0();
    }
    else {
      FUN_00500626();
      FUN_004fe47e();
      FUN_0040127a();
      FUN_00b940e0();
    }
    FUN_00b9f511();
  }
  if (local_94 != (undefined4 *)0x0) {
    (**(code **)*local_94)();
  }
  if (local_7c != (undefined4 *)0x0) {
    (**(code **)*local_7c)();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_005000db(undefined4 *param_1)

{
  int *piVar1;
  char cVar2;
  undefined4 *puVar3;
  int unaff_EBX;
  undefined4 *local_70;
  undefined4 *local_6c;
  undefined4 *local_64;
  undefined4 *local_60;
  
  cVar2 = FUN_005d7757();
  if (cVar2 == '\0') {
    FUN_00b940e0();
  }
  puVar3 = (undefined4 *)(**(code **)*param_1)();
  local_64 = (undefined4 *)*puVar3;
  *puVar3 = 0;
  if (local_70 != (undefined4 *)0x0) {
    (**(code **)*local_70)();
  }
  puVar3 = (undefined4 *)FUN_00b941c0();
  local_60 = (undefined4 *)*puVar3;
  *puVar3 = 0;
  if (local_6c != (undefined4 *)0x0) {
    (**(code **)*local_6c)();
  }
  if (cVar2 != '\0') {
    local_64 = (undefined4 *)0x0;
    local_60 = (undefined4 *)0x0;
    cVar2 = FUN_005d7645();
    if (cVar2 != '\0') {
      *(undefined4 *)(*(int *)(unaff_EBX + 0x174) + 0x28) = 1;
      cVar2 = FUN_005006a1();
      if (cVar2 != '\0') {
        piVar1 = *(int **)(*(int *)(unaff_EBX + 0x174) + 0x18);
        FUN_0043b546(0,0);
        FUN_00b98ea0();
        FUN_00b9f55b();
        FUN_00b98d40();
        cVar2 = FUN_0050038a(0x1300);
        if ((((cVar2 == '\0') || (cVar2 = FUN_0050038a(0x1301), cVar2 == '\0')) ||
            (cVar2 = FUN_0050038a(0x1302), cVar2 == '\0')) ||
           (((cVar2 = FUN_0050038a(0x1303), cVar2 == '\0' ||
             (cVar2 = FUN_0050038a(0x1304), cVar2 == '\0')) ||
            (cVar2 = (**(code **)(*piVar1 + 0x38))(), cVar2 == '\0')))) {
          FUN_00b940e0();
        }
        FUN_00b9f511();
        goto LAB_0050035d;
      }
    }
    FUN_00b940e0();
  }
LAB_0050035d:
  if (local_60 != (undefined4 *)0x0) {
    (**(code **)*local_60)();
  }
  if (local_64 != (undefined4 *)0x0) {
    (**(code **)*local_64)();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x00500417)
// WARNING: Removing unreachable block (ram,0x00500422)
// WARNING: Removing unreachable block (ram,0x005005b4)
// WARNING: Removing unreachable block (ram,0x00500447)
// WARNING: Removing unreachable block (ram,0x0050047f)
// WARNING: Removing unreachable block (ram,0x0050046a)
// WARNING: Removing unreachable block (ram,0x00500485)
// WARNING: Removing unreachable block (ram,0x0050048d)
// WARNING: Removing unreachable block (ram,0x005004b6)
// WARNING: Removing unreachable block (ram,0x00500617)
// WARNING: Removing unreachable block (ram,0x005004de)
// WARNING: Removing unreachable block (ram,0x005004e3)
// WARNING: Removing unreachable block (ram,0x005004f3)
// WARNING: Removing unreachable block (ram,0x005004fe)
// WARNING: Removing unreachable block (ram,0x0050050a)
// WARNING: Removing unreachable block (ram,0x0050050d)
// WARNING: Removing unreachable block (ram,0x0050053d)
// WARNING: Removing unreachable block (ram,0x0050054d)
// WARNING: Removing unreachable block (ram,0x00500559)
// WARNING: Removing unreachable block (ram,0x0050057f)
// WARNING: Removing unreachable block (ram,0x00500589)
// WARNING: Removing unreachable block (ram,0x00500529)
// WARNING: Removing unreachable block (ram,0x0050058e)
// WARNING: Removing unreachable block (ram,0x00500592)
// WARNING: Removing unreachable block (ram,0x005004e0)
// WARNING: Removing unreachable block (ram,0x005005c4)
// WARNING: Removing unreachable block (ram,0x005005c8)
// WARNING: Removing unreachable block (ram,0x005005d4)
// WARNING: Removing unreachable block (ram,0x005005e5)
// WARNING: Removing unreachable block (ram,0x005005f8)
// WARNING: Removing unreachable block (ram,0x005005fc)

void __fastcall FUN_0050038a(int param_1)

{
  int local_20;
  
  FUN_007b4c35();
  (***(code ***)(*(int *)(param_1 + 4) + 4))();
  FUN_00500626();
  FUN_004fe47e();
  if (local_20 != 0) {
    FUN_0040127a();
  }
  FUN_00b940e0();
  FUN_00a421fb();
  return;
}



void FUN_00500626(undefined4 param_1)

{
  char cVar1;
  undefined4 *unaff_EBX;
  int *unaff_ESI;
  
  cVar1 = (**(code **)(*unaff_ESI + 0x10))(param_1,&param_1);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xb4230f82);
    *unaff_EBX = 0;
    unaff_EBX[1] = 0;
  }
  else {
    FUN_004fe62f();
  }
  return;
}



undefined4 __fastcall FUN_0050066f(int param_1)

{
  uint uVar1;
  int unaff_ESI;
  short sVar2;
  
  FUN_00b93390(param_1,param_1);
  uVar1 = 0;
  sVar2 = 0;
  if (*(uint *)(unaff_ESI + 8) != 0) {
    do {
      sVar2 = sVar2 + (ushort)*(byte *)(uVar1 + param_1);
      uVar1 = uVar1 + 1;
    } while (uVar1 < *(uint *)(unaff_ESI + 8));
  }
  return CONCAT22((short)(uVar1 >> 0x10),sVar2);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_005006a1(void)

{
  int iVar1;
  int *unaff_ESI;
  undefined auStack_c4 [8];
  undefined *puStack_bc;
  undefined uStack_b8;
  undefined4 uStack_b4;
  undefined *puStack_b0;
  uint local_ac;
  undefined4 uStack_a8;
  undefined *local_a4;
  undefined *puStack_a0;
  int local_6c;
  undefined local_68 [4];
  undefined8 local_64;
  undefined **local_5c;
  char local_55;
  undefined local_54 [76];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x74;
  local_8 = 0x5006ad;
  puStack_a0 = (undefined *)0xa;
  local_a4 = (undefined *)0x0;
  uStack_a8 = 0;
  local_ac = 0x5006ba;
  local_64 = FUN_0043b546();
  FUN_00b98ea0();
  puStack_a0 = local_54;
  local_8 = 0;
  local_a4 = (undefined *)0x5006df;
  FUN_00b9f55b();
  FUN_00b98d40();
  local_5c = &PTR_DAT_03057af8;
  puStack_a0 = (undefined *)0x3;
  local_64._4_4_ = &local_ac;
  local_8._0_1_ = 3;
  local_a4 = local_68;
  local_ac = local_ac & 0xffffff00;
  puStack_b0 = (undefined *)0x500713;
  local_55 = (**(code **)(*unaff_ESI + 0xc))();
  local_8 = CONCAT31(local_8._1_3_,2);
  local_5c = &PTR_DAT_030577b8;
  if (local_55 == '\0') {
    puStack_b0 = (undefined *)0x25cb17cf;
    local_55 = '\0';
  }
  else {
    if (local_6c == 3) {
      uStack_b8 = 0;
      puStack_b0 = &DAT_00de1b08;
      local_64._4_4_ = (uint *)auStack_c4;
      puStack_bc = local_68;
      auStack_c4[0] = 0;
      iVar1 = FUN_00b923c0();
      if (iVar1 == 0) {
        puStack_b0 = (undefined *)0x50077d;
        local_55 = (**(code **)(*unaff_ESI + 0x44))();
        if (local_55 != '\0') goto LAB_00500794;
        puStack_b0 = (undefined *)0x9edd1a09;
        goto LAB_0050078e;
      }
    }
    local_55 = '\0';
    puStack_b0 = (undefined *)0x128c12a4;
  }
LAB_0050078e:
  uStack_b4 = 0x500793;
  FUN_00b940e0();
LAB_00500794:
  local_8 = 0xffffffff;
  puStack_b0 = (undefined *)0x5007a0;
  FUN_00b9f511();
  puStack_b0 = (undefined *)0x5007a8;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_005007a9(void)

{
  char cVar1;
  undefined local_24 [4];
  int local_20;
  int local_1c;
  int local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x5007b5;
  cVar1 = FUN_005d7757();
  if (cVar1 == '\0') {
    FUN_00b940e0();
    cVar1 = '\0';
  }
  else {
    cVar1 = FUN_00506c33();
    if (cVar1 == '\0') {
      cVar1 = '\0';
    }
    else {
      cVar1 = FUN_00507080();
      if (cVar1 == '\0') {
        cVar1 = '\0';
      }
      else {
        cVar1 = FUN_00507349();
        if (cVar1 != '\0') goto LAB_0050083a;
      }
    }
    FUN_00b940e0();
  }
LAB_0050083a:
  local_1c = 0;
  local_18[0] = 0;
  local_8 = 0;
  if (cVar1 != '\0') {
    FUN_0050093e(local_24);
    local_8._0_1_ = 1;
    FUN_004fe47e();
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_20 != 0) {
      FUN_0040127a();
    }
    cVar1 = local_1c != 0;
    if ((bool)cVar1) {
                    // WARNING: Subroutine does not return
      FUN_0043c023(local_18);
    }
    FUN_00b940e0();
    FUN_007e27f0();
  }
  local_8 = 0xffffffff;
  if (local_18[0] != 0) {
    FUN_0040127a();
  }
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00500995)

undefined4 * FUN_0050093e(undefined4 *param_1,int param_2,int param_3)

{
  if (((param_2 != 2) && (param_2 == 3)) && ((param_3 == 0x31 || (param_3 == 0x35)))) {
    FUN_004fc968();
  }
  *param_1 = 0;
  param_1[1] = 0;
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00500a2a)

undefined4 * FUN_005009d3(undefined4 *param_1,int param_2,int param_3)

{
  if (((param_2 != 2) && (param_2 == 3)) && ((param_3 == 0x31 || (param_3 == 0x35)))) {
    FUN_004fc968();
  }
  *param_1 = 0;
  param_1[1] = 0;
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_00500b8c(uint *param_1_00,int param_2_00,undefined4 param_1,int param_2)

{
  uint *puVar1;
  int iVar2;
  char cVar3;
  undefined4 *puVar4;
  int **ppiVar5;
  uint *local_12c;
  int local_84;
  int local_7c;
  uint local_78 [3];
  uint *local_6c;
  uint *local_68;
  undefined **local_60;
  uint local_5c;
  undefined4 local_58;
  uint *local_54;
  int local_50 [2];
  uint *local_48;
  int *local_44;
  uint **local_40;
  char local_39;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_38 [24];
  undefined4 local_20;
  uint local_1c;
  uint *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x104;
  local_8 = 0x500b9b;
  local_48 = (uint *)param_2;
  local_18 = param_1_00;
  FUN_00507475();
  local_54 = (uint *)0x0;
  local_50[0] = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  local_12c = *(uint **)(param_2_00 + 0x68);
  FUN_005009d3(&local_44);
  local_8._0_1_ = 2;
  FUN_004fe47e();
  local_8._0_1_ = 1;
  if (local_40 != (uint **)0x0) {
    FUN_0040127a();
  }
  local_39 = local_54 != (uint *)0x0;
  if ((bool)local_39) {
    local_40 = &local_12c;
    local_12c = local_54;
                    // WARNING: Subroutine does not return
    FUN_0043c023(local_50);
  }
  local_12c = (uint *)0x500c0f;
  FUN_00b940e0();
  local_12c = (uint *)0x500c1c;
  FUN_007e27f0();
  local_40 = (uint **)0x0;
  local_44 = (int *)0x0;
  local_8._0_1_ = 5;
  if (local_39 != '\0') {
    local_12c = (uint *)0x500cf3;
    FUN_00500626();
    local_8._0_1_ = 6;
    FUN_004fe47e();
    local_8._0_1_ = 5;
    if (local_48 != (uint *)0x0) {
      FUN_0040127a();
    }
    if ((local_44 == (int *)0x0) || (cVar3 = (**(code **)(*local_44 + 4))(), cVar3 == '\0')) {
      local_39 = '\0';
      local_12c = (uint *)0x500d3a;
      FUN_00b940e0();
      param_1_00 = local_18;
    }
    else {
      local_39 = '\x01';
      param_1_00 = local_18;
    }
  }
  local_48 = (uint *)0x0;
  local_8._0_1_ = 7;
  if (local_39 != '\0') {
    local_12c = (uint *)0x500d58;
    local_39 = FUN_00bb1450();
    if (local_39 == '\0') {
      local_12c = (uint *)0x500d6f;
      FUN_00b940e0();
    }
    iVar2 = (int)local_40;
    local_44 = (int *)0x0;
    local_40 = (uint **)0x0;
    param_1_00 = local_18;
    if (iVar2 != 0) {
      FUN_0040127a();
      param_1_00 = local_18;
    }
  }
  local_20 = 0xf;
  local_12c = (uint *)0x500d98;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_38,0);
  local_8._0_1_ = 8;
  if (local_39 != '\0') {
    local_12c = local_48;
    local_39 = FUN_00bb6b50(local_38);
    if (local_39 == '\0') {
      local_12c = (uint *)0x500dc9;
      FUN_00b940e0();
    }
    if (local_48 != (uint *)0x0) {
      local_12c = (uint *)0x500dd7;
      (**(code **)*local_48)();
    }
    local_48 = (uint *)0x0;
  }
  local_12c = (uint *)0x500de4;
  FUN_004382a5();
  local_8._0_1_ = 9;
  if (local_39 != '\0') {
    local_12c = (uint *)0x500e01;
    FUN_00500f69();
    local_1c = local_1c & 0xffffff00;
    local_12c = &local_1c;
    local_8 = CONCAT31(local_8._1_3_,0xb);
    local_39 = FUN_00bbda30(local_78);
    if (local_39 == '\0') {
      local_12c = (uint *)0x500e36;
      FUN_00b940e0();
    }
    local_12c = (uint *)0x500e40;
    FUN_0048867c();
    local_8._0_1_ = 9;
    FUN_00501539();
    if (local_39 != '\0') {
      local_12c = param_1_00;
      puVar4 = (undefined4 *)FUN_005074fc();
      local_58 = *puVar4;
      local_5c = param_1_00[1];
      local_60 = W3CA43D38::WCB6FEC45::vftable;
      local_8._0_1_ = 0xc;
      if (local_7c != 0) {
        FUN_0040127a();
      }
      puVar1 = local_6c;
      if (local_68 < local_6c) {
        FUN_00a3fb10();
      }
      local_1c = local_78[0];
      local_18 = puVar1;
      do {
        puVar1 = local_68;
        if (local_68 < local_6c) {
          FUN_00a3fb10();
        }
        if ((local_1c == 0) || (local_1c != local_78[0])) {
          FUN_00a3fb10();
        }
        if (local_18 == puVar1) break;
        ppiVar5 = (int **)FUN_007c96e9();
        local_12c = (uint *)0x500ed1;
        local_39 = (**(code **)(**ppiVar5 + 4))();
        if (local_39 == '\0') {
          local_12c = (uint *)0x500ee7;
          FUN_00b940e0();
        }
        FUN_0062d58f();
      } while (local_39 != '\0');
      local_60 = WF3C48A30::WDBA43DD5::vftable;
    }
  }
  local_8._0_1_ = 8;
  local_12c = (uint *)0x500f0a;
  FUN_007b3ae8();
  local_12c = (uint *)0x0;
  FUN_004017b2(1);
  local_8._0_1_ = 5;
  if (local_48 != (uint *)0x0) {
    local_12c = (uint *)0x1;
    (**(code **)*local_48)();
  }
  local_8._0_1_ = 1;
  if (local_40 != (uint **)0x0) {
    local_12c = (uint *)0x500f37;
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_50[0] != 0) {
    local_12c = (uint *)0x500f47;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_84 != 0) {
    local_12c = (uint *)0x500f57;
    FUN_0040127a();
  }
  local_12c = (uint *)0x500f5f;
  FUN_00a421fb();
  return;
}



void FUN_00500f62(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = WF3C48A30::WDBA43DD5::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_00500f69(int param_1_00,int *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  *param_1 = (int)&PTR_00fc1cdc;
  param_1[0x14] = (int)std::basic_ios<char,struct_std::char_traits<char>_>::vftable;
  FUN_004225a0(param_1 + 2,0,0);
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 4)) =
       std::basic_istringstream<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
       vftable;
  FUN_00422fd0();
  param_1[2] = (int)std::
                    basic_stringbuf<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    ::vftable;
  uVar1 = *(undefined4 *)(param_1_00 + 0x14);
  if (*(uint *)(param_1_00 + 0x18) < 0x10) {
    param_1_00 = param_1_00 + 4;
  }
  else {
    param_1_00 = *(int *)(param_1_00 + 4);
  }
  uVar2 = FUN_004238e0(1);
  FUN_00423830(param_1_00,uVar1,uVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00500ffd(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x501009;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WABE12921::W5805541D::RTTI_Type_Descriptor,
                   &W3CEF23F4::W24BE3293::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WABE12921::W5805541D::RTTI_Type_Descriptor,
                           &W3CEF23F4::W24BE3293::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_005010b3(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_00fc1be1;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00501268(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WC67C4631::WA55FDB14>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005012ae(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0050130b(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void Catch_All_00501364(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void __fastcall FUN_00501377(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
}



void FUN_00501381(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00501444(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W7D2E7284::W32F7855A>,class_boost::_bi::list1<class_boost::_bi::value<class_W7D2E7284::W32F7855A*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_005013bc(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0050148d(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf2<bool,class_W3CEF23F4::W24BE3293,class_std::auto_ptr<class_common::WB943A9F0>&,class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::list3<class_boost::_bi::value<class_W3CEF23F4::W24BE3293*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00501444(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W7D2E7284::W32F7855A>,class_boost::_bi::list1<class_boost::_bi::value<class_W7D2E7284::W32F7855A*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W7D2E7284::W32F7855A>,class_boost::_bi::list1<class_boost::_bi::value<class_W7D2E7284::W32F7855A*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0050148d(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf2<bool,class_W3CEF23F4::W24BE3293,class_std::auto_ptr<class_common::WB943A9F0>&,class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::list3<class_boost::_bi::value<class_W3CEF23F4::W24BE3293*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf2<bool,class_W3CEF23F4::W24BE3293,class_std::auto_ptr<class_common::WB943A9F0>&,class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::list3<class_boost::_bi::value<class_W3CEF23F4::W24BE3293*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



int __thiscall FUN_005014db(int param_1_00,byte param_1)

{
  FUN_00501539();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -0x50);
  }
  return param_1_00 + -0x50;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_005014fa(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x50) + 4) + -0x50 + param_1) =
       std::basic_istringstream<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
       vftable;
  FUN_00422ee0();
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x50) + 4) + param_1 + -0x50) =
       std::basic_istream<char,struct_std::char_traits<char>_>::vftable;
  return;
}



void FUN_00501539(void)

{
  int in_EAX;
  
  FUN_005014fa();
  *(undefined4 *)(in_EAX + 0x50) = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)(undefined4 *)(in_EAX + 0x50));
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0050155b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::W4E86F8CC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005015a1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005015b8(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WE711C61D::W4E86F8CC::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0050155b(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_00501907(void)

{
  undefined4 *puVar1;
  undefined4 local_714;
  undefined4 local_710;
  uint uStack_70c;
  undefined auStack_6fc [4];
  undefined4 local_6f8;
  undefined4 *local_6ec;
  undefined local_6bc [1696];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c517d6;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_6fc;
  uStack_70c = DAT_0323f878 ^ (uint)&stack0xfffff8f8;
  ExceptionList = &local_14;
  local_6f8 = 0;
  local_6ec = &local_714;
  local_714 = 0x5022;
  local_710 = 0x79;
  puVar1 = (undefined4 *)FUN_00465be3(local_6bc);
  local_c = 0;
  local_714 = *puVar1;
  local_6ec = &local_714;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00502918(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x502924;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fc1d84,5);
  local_8 = 0;
  local_18 = 0xaafc7899;
  local_14 = 0xa6a2f60b;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00502969(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x502975;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fc1d78,4);
  local_8 = 0;
  local_18 = 0xac53a399;
  local_14 = 0xfb33dd99;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_005029ba(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x5029c6;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00fc1d70,5);
  local_8 = 0;
  local_14[0] = 0xbb00badc;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00502a0d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76AFA8BF::W727C087E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00502a53(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00502a6a(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x1b4);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_007e3f7e(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00502a0d(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00502ade(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W64105C87>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00502b24(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00502b3b(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_00502ade(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00502b88(undefined4 param_1)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x8c);
  if (pvVar1 != (void *)0x0) {
    FUN_00b673a4(pvVar1);
  }
  FUN_00502b3b(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00502bcf(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3CA43D38::W25643903>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00502c15(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00502c2c(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x1a8);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_007bdedb(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00502bcf(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



void Catch_All_00502ce9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_00502d77(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_00502d9b();
    FUN_0044237a(iVar1 + 4);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void FUN_00502d9b(void)

{
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00502e4b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3CA43D38::WB1EE6FBF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00502e91(void)

{
  int iVar1;
  code *pcVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  if (iVar1 != 0) {
    FUN_00502d9b();
    FUN_0044237a(iVar1 + 4);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00502eba(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x1a4);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_007b87ed(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00502e4b(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00502fcd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::WFF65322B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00503013(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0050302a(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WE711C61D::WFF65322B::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00502fcd(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_0050353b(int param_1_00,byte param_1)

{
  FUN_00417fe6();
  if (*(int *)(param_1_00 + 0x194) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x18c) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x184) != 0) {
    FUN_0040127a();
  }
  FUN_004f8cbb(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005035b4(void)

{
  undefined4 *puVar1;
  undefined4 local_51c;
  undefined4 local_518;
  uint uStack_514;
  undefined auStack_504 [20];
  undefined local_4f0 [32];
  undefined4 *local_4d0;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c515ad;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_504;
  uStack_514 = DAT_0323f878 ^ (uint)&stack0xfffffaf0;
  ExceptionList = &local_14;
  local_4d0 = &local_51c;
  local_51c = 0x5022;
  local_518 = 0x7b;
  puVar1 = (undefined4 *)FUN_00465be3(local_4f0);
  local_c = 0;
  local_51c = *puVar1;
  local_4d0 = &local_51c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0050496c)
// WARNING: Removing unreachable block (ram,0x0050499f)
// WARNING: Removing unreachable block (ram,0x005049a4)
// WARNING: Removing unreachable block (ram,0x005049bc)
// WARNING: Removing unreachable block (ram,0x005049b0)
// WARNING: Removing unreachable block (ram,0x005049fd)

uint FUN_00504900(undefined4 param_1,int param_2)

{
  uint uVar1;
  
  if ((param_2 == 0x31) || (param_2 == 0x35)) {
    FUN_004fc968();
  }
  FUN_00b940e0();
  uVar1 = FUN_00507e58();
  return uVar1 & 0xffffff00;
}



void FUN_00504b20(undefined4 param_1)

{
  undefined *in_EAX;
  
  *in_EAX = 0;
  FUN_00504b3d(param_1);
  return;
}



void FUN_00504b35(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = 0;
  in_EAX[1] = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined *
FUN_00504b3d(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  undefined *puVar1;
  undefined *unaff_ESI;
  
  puVar1 = &LAB_00c29771;
  if ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
      (unaff_ESI + 4) !=
      (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)0x0) {
    puVar1 = (undefined *)
             std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
             basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                         *)(unaff_ESI + 4),param_1);
  }
  *unaff_ESI = 1;
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00504b6d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x504b79;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W3CA43D38::WF45DE894::RTTI_Type_Descriptor,
                   &W76AFA8BF::W727C087E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W3CA43D38::WF45DE894::RTTI_Type_Descriptor,
                           &W76AFA8BF::W727C087E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



undefined4 __fastcall FUN_00504c23(char *param_1,char *param_2)

{
  int iVar1;
  
  if (((-(uint)(*param_1 != '\0') & 0x6a1cd8) != 0) && ((-(uint)(*param_2 != '\0') & 0x6a1cd8) != 0)
     ) {
    iVar1 = FUN_00429980(param_2 + 4);
    if (iVar1 != 0) {
      return 1;
    }
  }
  return 0;
}



void FUN_00504c58(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00504c93(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W7D2E7284::WF0A26A1F>,class_boost::_bi::list1<class_boost::_bi::value<class_W7D2E7284::WF0A26A1F*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00504c93(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W7D2E7284::WF0A26A1F>,class_boost::_bi::list1<class_boost::_bi::value<class_W7D2E7284::WF0A26A1F*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W7D2E7284::WF0A26A1F>,class_boost::_bi::list1<class_boost::_bi::value<class_W7D2E7284::WF0A26A1F*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00504d30(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::WD2F28783>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00504d76(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00504d8d(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WE711C61D::WD2F28783::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00504d30(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_005052d3(void)

{
  undefined local_14 [8];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  FUN_007b36ec(local_14);
  ___security_check_cookie_4();
  return;
}



void FUN_00505317(void)

{
  undefined local_14 [8];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  FUN_007b36ec(local_14);
  ___security_check_cookie_4();
  return;
}



void Catch_All_005053a1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_0050557b(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x18c) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x184) != 0) {
    FUN_0040127a();
  }
  FUN_004f8cbb(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005055d6(void)

{
  undefined4 *puVar1;
  undefined4 local_55c;
  undefined4 local_558;
  uint uStack_554;
  undefined auStack_544 [28];
  undefined4 *local_528;
  undefined local_520 [1284];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5132d;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_544;
  uStack_554 = DAT_0323f878 ^ (uint)&stack0xfffffab0;
  ExceptionList = &local_14;
  local_528 = &local_55c;
  local_55c = 0xa0c;
  local_558 = 0x104;
  puVar1 = (undefined4 *)FUN_00465be3(local_520);
  local_c = 0;
  local_55c = *puVar1;
  local_528 = &local_55c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_005063bf(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x5063cb;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00fc1f28,4);
  local_8 = 0;
  local_18 = 0xf83c72be;
  local_14 = 0x44e030c3;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005067c5(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WEEC2D83D::W0B68CE76::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00507a19(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 __thiscall FUN_00506923(undefined4 param_1_00,byte param_1)

{
  FUN_004f8cbb(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00506940(void)

{
  FUN_005076d3();
  FUN_005076d3();
  FUN_0050779e();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0050697d(undefined4 param_1)

{
  char cVar1;
  int iVar2;
  undefined *local_64 [2];
  code *local_5c;
  undefined4 local_58;
  undefined4 uStack_4c;
  undefined *puStack_48;
  undefined local_2c [8];
  code *local_24;
  undefined4 local_20;
  undefined **local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x506989;
  puStack_48 = local_2c;
  local_18 = 0;
  uStack_4c = 0x506997;
  FUN_00507ed8();
  local_8 = 1;
  local_24 = FUN_00506940;
  local_1c = local_64;
  local_20 = param_1;
  local_64[0] = (undefined *)0x0;
  cVar1 = FUN_007f2630();
  if (cVar1 == '\0') {
    if (&stack0x00000000 != (undefined *)0x5c) {
      local_5c = local_24;
      local_58 = local_20;
    }
    local_64[0] = &DAT_00fc1f35;
  }
  else {
    local_64[0] = (undefined *)0x0;
  }
  local_8._0_1_ = 2;
  iVar2 = FUN_005067c5();
  local_8 = CONCAT31(local_8._1_3_,3);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar2 + 4);
}



void __fastcall FUN_00506b63(int param_1)

{
  int iVar1;
  int local_8;
  int iStack_4;
  
  if (&local_8 != (undefined4 *)(param_1 + 0x174)) {
    *(undefined4 *)(param_1 + 0x174) = 0;
  }
  iVar1 = *(int *)(param_1 + 0x178);
  *(undefined4 *)(param_1 + 0x178) = 0;
  if (iVar1 != 0) {
    local_8 = param_1;
    iStack_4 = param_1;
    FUN_0040127a();
    return;
  }
  return;
}



char __fastcall FUN_00506b8b(undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0x81648bbd;
  }
  else {
    FUN_0050697d(param_1,local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0xf6a7259c;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x00506e3a)
// WARNING: Removing unreachable block (ram,0x00506e60)
// WARNING: Removing unreachable block (ram,0x00506e65)
// WARNING: Removing unreachable block (ram,0x00506e86)
// WARNING: Removing unreachable block (ram,0x00506e95)
// WARNING: Removing unreachable block (ram,0x00506eca)
// WARNING: Removing unreachable block (ram,0x00506eff)
// WARNING: Removing unreachable block (ram,0x00506efb)
// WARNING: Removing unreachable block (ram,0x00506f01)
// WARNING: Removing unreachable block (ram,0x00506f07)
// WARNING: Removing unreachable block (ram,0x00506f12)
// WARNING: Removing unreachable block (ram,0x00506f17)
// WARNING: Removing unreachable block (ram,0x00506f24)
// WARNING: Removing unreachable block (ram,0x00506f2f)
// WARNING: Removing unreachable block (ram,0x00506f34)
// WARNING: Removing unreachable block (ram,0x00506f41)
// WARNING: Removing unreachable block (ram,0x00506f4c)
// WARNING: Removing unreachable block (ram,0x00506f51)
// WARNING: Removing unreachable block (ram,0x00506f5e)
// WARNING: Removing unreachable block (ram,0x00506f65)
// WARNING: Removing unreachable block (ram,0x00506f6a)
// WARNING: Removing unreachable block (ram,0x00506f6e)
// WARNING: Removing unreachable block (ram,0x00506f99)
// WARNING: Removing unreachable block (ram,0x00506fa5)
// WARNING: Removing unreachable block (ram,0x00506fb6)
// WARNING: Removing unreachable block (ram,0x00506fc9)
// WARNING: Removing unreachable block (ram,0x00506fd1)
// WARNING: Removing unreachable block (ram,0x00506fdf)
// WARNING: Removing unreachable block (ram,0x00506fe9)
// WARNING: Removing unreachable block (ram,0x00506ff1)
// WARNING: Removing unreachable block (ram,0x0050701d)
// WARNING: Removing unreachable block (ram,0x00507033)
// WARNING: Removing unreachable block (ram,0x0050702f)
// WARNING: Removing unreachable block (ram,0x00507045)
// WARNING: Removing unreachable block (ram,0x00507050)
// WARNING: Removing unreachable block (ram,0x00507060)

void __thiscall FUN_00506c33(int param_1_00,undefined4 param_1)

{
  int iVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 local_a8 [2];
  undefined4 uStack_a0;
  undefined4 *puStack_9c;
  undefined4 **ppuStack_98;
  undefined *local_94;
  undefined4 *local_90;
  int iStack_8c;
  undefined4 local_38;
  undefined4 *local_34;
  undefined4 local_30;
  int local_2c;
  undefined4 *local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 **local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_20 = 0;
  local_30 = param_1;
  local_38 = *(undefined4 *)(*(int *)(param_1_00 + 0x174) + 0x10);
  local_34 = (undefined4 *)0x0;
  local_24 = local_a8;
  local_8._0_1_ = 0;
  local_8._1_3_ = 0;
  local_2c = param_1_00;
  FUN_004180b1();
  cVar2 = FUN_00515f51();
  local_90 = local_34;
  if (cVar2 == '\0') {
    iStack_8c = 0xd8a1d09e;
  }
  else {
    iStack_8c = *(undefined4 *)(param_1_00 + 4);
    local_34 = (undefined4 *)0x0;
    local_18 = &local_90;
    local_8._0_1_ = 1;
    local_94 = &DAT_00de18bc;
    local_20 = 0x5d268244;
    ppuStack_98 = &local_24;
    puStack_9c = &local_20;
    uStack_a0 = 0x506ccd;
    puVar3 = (undefined4 *)FUN_00b941c0();
    local_94 = (undefined *)*puVar3;
    *puVar3 = 0;
    local_18 = (undefined4 **)&local_94;
    local_8._0_1_ = 3;
    ppuStack_98 = (undefined4 **)0x506cea;
    cVar2 = FUN_005d7645();
    local_8._0_1_ = 0;
    if (local_24 != (undefined4 *)0x0) {
      iStack_8c = 1;
      local_90 = (undefined4 *)0x506d00;
      (**(code **)*local_24)();
    }
    if (cVar2 != '\0') {
      iVar1 = *(int *)(param_1_00 + 0x174);
      *(undefined4 *)(iVar1 + 0x28) = 2;
      *(undefined4 *)(*(int *)(iVar1 + 0x20) + 0x20) = 1;
      iStack_8c = param_1_00 + 0x168;
      local_90 = (undefined4 *)0x506d3f;
      FUN_005d75d8();
      local_90 = *(undefined4 **)(*(int *)(param_1_00 + 0x174) + 8);
      local_18 = &local_90;
      local_94 = (undefined *)(*(int *)(param_1_00 + 0x174) + 0xc);
                    // WARNING: Subroutine does not return
      ppuStack_98 = (undefined4 **)&UNK_00506d5d;
      FUN_0043c023();
    }
    iStack_8c = 0x41038d06;
  }
  local_90 = (undefined4 *)0x506d13;
  FUN_00b940e0();
  local_18 = (undefined4 **)0x0;
  local_1c = 0;
  local_8 = 0xffffffff;
  if (local_34 != (undefined4 *)0x0) {
    iStack_8c = 1;
    local_90 = (undefined4 *)0x507076;
    (**(code **)*local_34)();
  }
  iStack_8c = 0x50707d;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_00507080(void)

{
  bool bVar1;
  undefined auStack_54 [16];
  undefined *puStack_44;
  int *piStack_40;
  int local_3c;
  int local_38;
  undefined local_24 [4];
  int local_20;
  int local_1c;
  int local_18;
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18 = 0;
  local_14 = (int *)auStack_54;
  local_8 = 0;
  FUN_004180b1();
  FUN_00516122(local_24);
  local_8._0_1_ = 1;
  local_38 = 0x5070c1;
  FUN_004fe47e();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    local_38 = 0x5070d1;
    FUN_0040127a();
  }
  bVar1 = local_1c != 0;
  if (!bVar1) {
    local_38 = 0xeaf66824;
    local_3c = 0x50711e;
    FUN_00b940e0();
    local_8 = 0xffffffff;
    if (local_18 != 0) {
      local_38 = 0x50712f;
      FUN_0040127a();
    }
    return bVar1;
  }
  local_38 = local_1c;
  local_14 = &local_3c;
  local_3c = local_1c;
  piStack_40 = &local_18;
                    // WARNING: Subroutine does not return
  puStack_44 = &UNK_005070fe;
  FUN_0043c023();
}



char FUN_00507349(int param_1,undefined4 param_2)

{
  char cVar1;
  undefined auStack_44 [20];
  undefined4 uStack_30;
  int iStack_2c;
  undefined *puStack_28;
  undefined local_14 [4];
  int local_10;
  undefined *local_c;
  char local_5;
  
  puStack_28 = local_14;
  iStack_2c = param_1;
  uStack_30 = 0x50735f;
  FUN_0050749c();
  if (local_10 != 0) {
    puStack_28 = (undefined *)0x50736d;
    FUN_0040127a();
  }
  local_c = auStack_44;
  FUN_005079d0(FUN_005d1cc5,*(undefined4 *)(param_1 + 4));
  cVar1 = FUN_005d2ca5();
  if (cVar1 == '\0') {
    puStack_28 = (undefined *)0xc37bdef4;
  }
  else {
    puStack_28 = (undefined *)param_2;
    iStack_2c = 0x5073aa;
    cVar1 = FUN_005d2d25();
    if (cVar1 == '\0') {
      puStack_28 = (undefined *)0xf97afe66;
      iStack_2c = 0x5073c0;
      FUN_00b940e0();
      puStack_28 = (undefined *)(param_1 + 0x170);
      iStack_2c = 0x5073cf;
      FUN_007e2a43();
      return '\0';
    }
    puStack_28 = (undefined *)param_2;
    local_5 = '\0';
    iStack_2c = 0x5073e2;
    cVar1 = FUN_005d2e7a();
    if (cVar1 != '\0') {
      if (local_5 != '\0') {
        return cVar1;
      }
      iStack_2c = 0x507410;
      puStack_28 = (undefined *)(param_1 + 0x170);
      FUN_007e2c7c();
      iStack_2c = 0x507416;
      puStack_28 = (undefined *)(param_1 + 0x170);
      FUN_007e29a3();
      return cVar1;
    }
    puStack_28 = (undefined *)0x92e92920;
  }
  iStack_2c = 0x5073f8;
  FUN_00b940e0();
  return '\0';
}



char FUN_0050741f(void)

{
  char cVar1;
  
  FUN_007b48d0();
  FUN_00507475();
  cVar1 = FUN_005d1c2a();
  if (cVar1 == '\0') {
    FUN_00b940e0();
  }
  FUN_007b493d();
  return cVar1;
}



void FUN_00507475(void)

{
  int iVar1;
  int in_EAX;
  undefined4 *unaff_ESI;
  
  iVar1 = *(int *)(in_EAX + 0x174);
  if (iVar1 != 0) {
    *unaff_ESI = *(undefined4 *)(iVar1 + 0x20);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 0x24);
  }
  *unaff_ESI = 0;
  unaff_ESI[1] = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0050749c(undefined4 param_1,undefined4 *param_2)

{
  int local_1c;
  int local_18;
  
  FUN_00507475();
  if (local_1c != 0) {
    *param_2 = *(undefined4 *)(local_1c + 0x10);
                    // WARNING: Subroutine does not return
    FUN_0043c023(local_1c + 0x14);
  }
  *param_2 = 0;
  param_2[1] = 0;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return param_2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005074fc(undefined4 param_1,undefined4 *param_2)

{
  int local_1c;
  int local_18;
  
  FUN_00507475();
  if (local_1c != 0) {
    *param_2 = *(undefined4 *)(local_1c + 0x18);
                    // WARNING: Subroutine does not return
    FUN_0043c023(local_1c + 0x1c);
  }
  *param_2 = 0;
  param_2[1] = 0;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return param_2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_0050755c(uint *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  uint uVar2;
  uint *extraout_ECX;
  
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a();
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  (**(code **)((uVar2 & 0xfffffffe) + 4))(param_1_00 + 2,0xe1000,param_1,param_2,param_3);
  return;
}



void FUN_005075a3(int *param_1)

{
  undefined4 *puVar1;
  undefined local_24 [16];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  puVar1 = (undefined4 *)FUN_0047aeb8(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*param_1 + 4))(&local_14);
  return;
}



undefined4 * __thiscall FUN_005076b6(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W5FC6A77E::W57C5FA09::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_005076d3(int param_1)

{
  undefined4 *unaff_EDI;
  undefined4 local_58 [2];
  int local_50 [6];
  undefined4 local_38 [9];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c12530;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_58[0] = 0;
  FUN_00507ccc(local_50,local_50,2,DAT_0323f878 ^ (uint)&stack0xffffffa0);
  if (param_1 == 0) {
    local_58[0] = 0;
  }
  else {
    local_58[0] = 0xfc1f4d;
    local_50[0] = param_1;
  }
  if (unaff_EDI != local_58) {
    local_38[0] = 0;
    local_c._0_1_ = 1;
    local_c._1_3_ = 0;
    FUN_00475d30(local_38);
    FUN_00475d30(local_58);
    FUN_00475d30(unaff_EDI);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00507e58();
  }
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x005077df)

void FUN_0050779e(void)

{
  undefined4 *unaff_EDI;
  undefined4 local_54 [8];
  undefined4 local_34 [2];
  undefined *local_2c [9];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x5077aa;
  local_34[0] = 0;
  FUN_00507d1a(local_2c,local_2c,2);
  local_2c[0] = &LAB_005d5308;
  local_34[0] = 0xfc1f55;
  if (unaff_EDI != local_34) {
    local_54[0] = 0;
    local_8._0_1_ = 1;
    local_8._1_3_ = 0;
    FUN_00475d30(local_54);
    FUN_00475d30(local_34);
    FUN_00475d30(unaff_EDI);
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_00507e58();
  }
  local_8 = 0xffffffff;
  FUN_00507e58();
  return;
}



void FUN_00507832(void)

{
  int *piVar1;
  int unaff_EBX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  piVar1 = unaff_ESI + 2;
  FUN_00507b6b(piVar1,piVar1,2);
  if (unaff_EBX == 0) {
    *unaff_ESI = 0;
  }
  else {
    *piVar1 = unaff_EBX;
    *unaff_ESI = 0xfc1f3d;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00507864(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x507870;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::W7FDD68E0::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::W7FDD68E0::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0050791a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x507926;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::W23970D18::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::W23970D18::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_005079d0(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_00fc1f45;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00507a19(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEEC2D83D::W0B68CE76>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00507a5f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00507abc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00507b19(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00507b30(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00507bf2(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W7D2E7284::W6D04458A,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W7D2E7284::W6D04458A*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00507b6b(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00507c3b(0);
    return;
  }
  *param_2 = &PTR_vftable_0326b1f8;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00507bb7(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00507c83(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,void_(__cdecl*)(unsigned_char,unsigned_char,class_WDE765622::W673CE3C4&),class_boost::_bi::list3<struct_boost::arg<1>,struct_boost::arg<2>,class_boost::reference_wrapper<class_WDE765622::W673CE3C4>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00507bf2(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W7D2E7284::W6D04458A,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W7D2E7284::W6D04458A*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W7D2E7284::W6D04458A,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W7D2E7284::W6D04458A*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00507c3b(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0326b1f8;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0326b1f8);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_00507c83(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,void_(__cdecl*)(unsigned_char,unsigned_char,class_WDE765622::W673CE3C4&),class_boost::_bi::list3<struct_boost::arg<1>,struct_boost::arg<2>,class_boost::reference_wrapper<class_WDE765622::W673CE3C4>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,void_(__cdecl*)(unsigned_char,unsigned_char,class_WDE765622::W673CE3C4&),class_boost::_bi::list3<struct_boost::arg<1>,struct_boost::arg<2>,class_boost::reference_wrapper<class_WDE765622::W673CE3C4>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00507ccc(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00507d70(0);
    return;
  }
  *param_2 = &PTR_vftable_0326b2d0;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00507d1a(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00507db8(0);
    return;
  }
  *param_2 = &PTR_vftable_0326b318;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00507d55(code **param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  (**param_1)(param_2,param_3,param_4,param_5);
  return;
}



void FUN_00507d70(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0326b2d0;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0326b2d0);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_00507db8(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0326b318;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0326b318);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void __fastcall FUN_00507e00(undefined4 *param_1)

{
  *param_1 = W5FC6A77E::W57C5FA09::vftable;
  return;
}



void FUN_00507e58(void)

{
  uint uVar1;
  uint *unaff_ESI;
  
  uVar1 = *unaff_ESI;
  if (uVar1 != 0) {
    if ((uVar1 & 1) == 0) {
      if (*(code **)(uVar1 & 0xfffffffe) != (code *)0x0) {
        (**(code **)(uVar1 & 0xfffffffe))(unaff_ESI + 2,unaff_ESI + 2,2);
      }
    }
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00507e7b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5FC6A77E::WAC77BC4D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00507ec1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00507ed8(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00ba7b22(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00507e7b(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



void FUN_00508351(void)

{
  FUN_005083d3();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_00508359(int param_1_00,undefined4 *param_1)

{
  undefined2 uVar1;
  undefined2 uVar2;
  char cVar3;
  undefined4 *puVar4;
  
  uVar1 = *(undefined2 *)((int)param_1 + 10);
  uVar2 = *(undefined2 *)(param_1 + 2);
  puVar4 = (undefined4 *)FUN_00b86210(param_1);
  *puVar4 = 0;
  if (param_1 != (undefined4 *)0x0) {
    (**(code **)*param_1)();
  }
  cVar3 = (**(code **)(**(int **)(param_1_00 + 8) + 0xc4))(uVar2,uVar1);
  if (cVar3 == '\0') {
    FUN_00b940e0(0x5b5d21c6);
  }
  return cVar3;
}



undefined FUN_005083d3(void)

{
  FUN_00b940e0(0xf71f133c);
  return 1;
}



undefined4 FUN_005083e8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_00fc20c0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_00fc22c8,0x1c0,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00508424(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00fc2490,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00fc2698,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00fc28a0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00fc2aa8,0x200,param_2), cVar1 != '\0')))) &&
      ((((((((cVar1 = (*param_1)(&DAT_00fc2cb0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_00fc2eb8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00fc30c0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_00fc32c8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_00fc34d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00fc36d8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00fc38e0,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_00fc3ae8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00fc3cf0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00fc3ef8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_00fc4100,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00fc4308,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_00fc4510,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_00fc4718,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00fc4920,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00fc4b28,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00fc4d30,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fc4f38,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_00fc5140,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00fc5348,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fc5550,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_00fc5758,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_00fc5960,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00fc5b68,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00fc5d70,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00fc5f78,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00fc6180,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_00fc6388,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_00fc6590,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00fc6798,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_00fc69a0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_00fc6ba8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00fc6db0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00fc6fb8,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_00fc71c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00fc73c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00fc75d0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_00fc77d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fc79e0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00fc7be8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00fc7df0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00fc7ff8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00fc8200,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_00fc8408,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00fc8610,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((cVar1 = (*param_1)(&DAT_00fc8818,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_00fc8a20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fc8c28,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00fc8e30,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_00fc9038,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00fc9240,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00fc9448,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00fc9650,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00fc9858,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_00fc9a60,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_00fc9c68,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00fc9e70,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00fca078,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_00fca280,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fca488,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00fca690,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_00fca898,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00fcaaa0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00fcaca8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00fcaeb0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00fcb0b8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00fcb2c0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00fcb4c8,0xcb,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005088ed(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_00fcb598,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_00fcb7a0,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_00fcb9a8,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_00fcbbb0,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_00fcbdb8,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_00fcbfc0,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_00fcc1c8,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_00fcc3d0,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_00fcc5d8,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_00fcc7e0,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_00fcc9e8,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_00fccbf0,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_00fccdf8,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_00fcd000,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_00fcd208,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_00fcd410,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_00fcd618,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_00fcd820,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_00fcda28,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_00fcdc30,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_00fcde38,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_00fce040,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_00fce248,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_00fce450,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fce658,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fce860,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fcea68,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fcec70,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fcee78,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fcf080,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fcf288,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fcf490
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fcf698,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fcf8a0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fcfaa8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fcfcb0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fcfeb8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fd00c0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fd02c8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fd04d0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fd06d8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fd08e0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fd0ae8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fd0cf0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fd0ef8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fd1100,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fd1308,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fd1510,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fd1718,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fd1920
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fd1b28,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fd1d30,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fd1f38,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fd2140,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fd2348,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fd2550,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fd2758,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fd2960,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fd2b68
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fd2d70,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fd2f78,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fd3180,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fd3388,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fd3590,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fd3798,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fd39a0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fd3ba8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fd3db0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fd3fb8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fd41c0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fd43c8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fd45d0,0xea);
                                                        if (cVar1 != '\0') {
                                                          return 1;
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_00508da8(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_00fd46c0,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_00fcb7a0,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_00fcb9a8,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_00fcbbb0,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_00fcbdb8,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_00fcbfc0,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_00fcc1c8,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_00fcc3d0,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_00fcc5d8,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_00fcc7e0,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_00fcc9e8,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_00fccbf0,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_00fccdf8,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_00fd48c8,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_00fd4ad0,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_00fd4cd8,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_00fd4ee0,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_00fd50e8,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_00fd52f0,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_00fd54f8,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_00fd5700,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_00fd5908,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_00fd5b10,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_00fc5348,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fc5550,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fd5d18,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fd5f20,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fd6128,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fd6330,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fd6538,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fd6740,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fd6948
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fd6b50,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fd6d58,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fd6f60,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fd7168,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fd7370,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fd7578,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fd7780,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fd7988,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fd7b90
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fd7d98,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fd7fa0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fd81a8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fd83b0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fd85b8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fd87c0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fd89c8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fd8bd0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fd8dd8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fd8fe0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fd91e8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fd93f0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fd95f8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fd9800,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fd9a08,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fd9c10,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fd9e18,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fda020
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fda228,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fda430,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fda638,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fda840,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fdaa48,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fdac50,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fdae58,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fdb060,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fdb268
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fdb470,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fdb678,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fdb880,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fdba88,0xed);
                                                        if (cVar1 != '\0') {
                                                          return 1;
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_00509263(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_00fdbb78,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_00fcb7a0,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_00fcb9a8,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_00fcbbb0,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_00fcbdb8,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_00fcbfc0,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_00fcc1c8,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_00fcc3d0,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_00fcc5d8,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_00fcc7e0,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_00fcc9e8,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_00fccbf0,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_00fccdf8,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_00fd48c8,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_00fd4ad0,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_00fd4cd8,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_00fd4ee0,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_00fd50e8,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_00fd52f0,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_00fd54f8,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_00fd5700,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_00fdbd80,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_00fdbf88,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_00fdc190,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fdc398,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fdc5a0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fdc7a8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fdc9b0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fdcbb8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fdcdc0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fdcfc8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fdd1d0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fdd3d8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fdd5e0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fdd7e8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fdd9f0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fddbf8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fdde00,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fde008,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fde210,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fde418
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fde620,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fde828,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fdea30,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fdec38,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fdee40,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fdf048,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fdf250,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fdf458,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fdf660
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fd1b28,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fd1d30,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fd1f38,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fdf868,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fdfa70,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fdfc78,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fd2758,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fdfe80,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fd2b68
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fd2d70,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe0088,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe0290,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe0498,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fe06a0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fe08a8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fe0ab0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fe0cb8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fd3db0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fd3fb8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fd41c0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe0ec0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe10c8,0xea);
                                                        if (cVar1 != '\0') {
                                                          return 1;
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_0050971e(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_00fe11b8,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_00fe13c0,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_00fe15c8,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_00fe17d0,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_00fe19d8,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_00fe1be0,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_00fe1de8,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_00fe1ff0,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_00fe21f8,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_00fe2400,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_00fe2608,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_00fe2810,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_00fe2a18,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_00fe2c20,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_00fcd208,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_00fcd410,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_00fe2e28,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_00fcd820,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_00fe3030,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_00fe3238,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_00fe3440,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_00fe3648,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_00fe3850,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_00fe3a58,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe3c60,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe3e68,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe4070,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fe4278,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fe4480,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fe4688,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fe4890,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fe4a98
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fe4ca0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe4ea8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe50b0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe52b8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fe54c0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fe56c8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fe58d0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fe5ad8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fe5ce0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fe5ee8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe60f0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe62f8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe6500,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fe6708,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fe6910,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fe6b18,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fe6d20,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fe6f28
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fe7130,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe7338,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe7540,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe7748,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fe7950,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fe7b58,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fe7d60,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fe7f68,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fe8170
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fe8378,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe8580,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe8788,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe8990,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fe8b98,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fe8da0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fe8fa8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fe91b0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fe93b8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fe95c0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe97c8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe99d0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe9bd8,0xf1);
                                                        if (cVar1 != '\0') {
                                                          return 1;
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_00509bd9(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_00fe9cd0,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_00fcb7a0,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_00fcb9a8,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_00fcbbb0,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_00fcbdb8,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_00fcbfc0,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_00fcc1c8,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_00fcc3d0,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_00fcc5d8,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_00fcc7e0,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_00fcc9e8,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_00fccbf0,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_00fccdf8,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_00fd48c8,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_00fd4ad0,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_00fd4cd8,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_00fe9ed8,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_00fea0e0,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_00fea2e8,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_00fe3238,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_00fe3440,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_00fe3648,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_00fe3850,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_00fe3a58,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe3c60,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe3e68,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe4070,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fea4f0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fea6f8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fea900,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00feab08,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fead10
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00feaf18,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe4ea8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe50b0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe52b8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fe54c0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fe56c8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fe58d0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fe5ad8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fe5ce0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fe5ee8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00feb120,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe62f8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe6500,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fe6708,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fe6910,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fe6b18,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fe6d20,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fe6f28
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fe7130,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe7338,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00feb328,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00feb530,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00feb738,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00feb940,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fe7d60,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fe7f68,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fe8170
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fe8378,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe8580,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00febb48,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fda840,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fdaa48,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fdac50,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fdae58,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fdb060,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fdb268
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fdb470,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fdb678,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00febd50,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00febf58,0xe9);
                                                        if (cVar1 != '\0') {
                                                          return 1;
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_0050a094(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_00fec048,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00fc2698,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_00fc28a0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_00fc2aa8,0x200,param_2), cVar1 != '\0')))) &&
      ((((((((cVar1 = (*param_1)(&DAT_00fc2cb0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_00fc2eb8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00fc30c0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_00fc32c8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_00fc34d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00fc36d8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00fc38e0,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_00fec250,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00fc3cf0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00fc3ef8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_00fc4100,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00fc4308,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_00fc4510,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_00fc4718,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00fec458,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00fd54f8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00fd5700,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fdbd80,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_00fdbf88,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_00fdc190,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fdc398,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_00fdc5a0,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_00fc5960,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00fc5b68,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00fea6f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00fec660,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00fe4890,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_00fe4a98,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_00fe4ca0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00fe4ea8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_00fe50b0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_00fe52b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00fe54c0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00fe56c8,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_00fe58d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_00fe5ad8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_00fe5ce0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_00fe5ee8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fe60f0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00fe62f8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_00fe6500,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00fe6708,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_00fe6910,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_00fe6b18,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00fe6d20,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((cVar1 = (*param_1)(&DAT_00fe6f28,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_00fe7130,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fe7338,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_00fe7540,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_00fe7748,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_00fe7950,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_00fec868,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_00feca70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_00fd9e18,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_00fecc78,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_00fe8378,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00fe8580,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00fe8788,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_00fece80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_00fe8b98,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_00fe8da0,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_00fe8fa8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00fed088,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_00fed290,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_00fed498,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00fed6a0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_00fed8a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_00fedab0,0xc6,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050a55d(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_00fedb78,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_00fcb7a0,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_00fcb9a8,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_00fcbbb0,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_00fcbdb8,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_00fcbfc0,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_00fcc1c8,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_00fcc3d0,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_00fcc5d8,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_00fcc7e0,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_00fcc9e8,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_00fccbf0,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_00fccdf8,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_00fd48c8,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_00fd4ad0,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_00fedd80,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_00fedf88,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_00fc4718,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_00fc4920,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_00fc4b28,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_00fee190,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_00fee398,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_00fee5a0,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_00fee7a8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fee9b0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00feebb8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fd5f20,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00feedc0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00feefc8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fef1d0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fef3d8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fef5e0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fef7e8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fef9f0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fefbf8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fefe00,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ff0008,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ff0210,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fd7780,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fd7988,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ff0418
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00ff0620,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ff0828,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ff0a30,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00ff0c38,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fc7ff8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ff0e40,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00ff1048,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00ff1250,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ff1458
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00ff1660,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ff1868,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ff1a70,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00ff1c78,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ff1e80,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ff2088,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00ff2290,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00ff2498,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ff26a0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00ff28a8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ff2ab0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ff2cb8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00ff2ec0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ff30c8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ff32d0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00ff34d8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00ff36e0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ff38e8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00ff3af0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ff3cf8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ff3f00,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00ff4108,0xf0);
                                                        if (cVar1 != '\0') {
                                                          return 1;
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_0050aa18(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_00ff4200,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_00fcb7a0,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_00fcb9a8,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_00fcbbb0,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_00fcbdb8,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_00fcbfc0,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_00fcc1c8,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_00fcc3d0,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_00fcc5d8,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_00fcc7e0,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_00fcc9e8,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_00fccbf0,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_00fccdf8,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_00fcd000,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_00fcd208,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_00fcd410,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_00fcd618,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_00fcd820,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_00fcda28,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_00fcdc30,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_00fcde38,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_00ff4408,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_00ff4610,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_00ff4818,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ff4a20,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ff4c28,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00ff4e30,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ff5038,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ff5240,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00ff5448,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fe4890,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fe4a98
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fe4ca0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe4ea8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe50b0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe52b8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fe54c0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fe56c8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fe58d0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fe5ad8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fe5ce0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fe5ee8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ff5650,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ff5858,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00ff5a60,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ff5c68,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ff5e70,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00ff6078,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00ff6280,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ff6488
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00ff6690,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ff6898,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ff6aa0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00feb530,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ff6ca8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ff6eb0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00ff70b8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00ff72c0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ff74c8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00ff76d0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ff78d8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ff7ae0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00ff7ce8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ff7ef0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ff80f8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00ff8300,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00ff8508,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ff8710
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00ff8918,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe97c8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ff8b20,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00ff8d28,0xf1);
                                                        if (cVar1 != '\0') {
                                                          return 1;
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_0050aed3(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_00ff8e20,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_00fcb7a0,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_00fcb9a8,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_00fcbbb0,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_00fcbdb8,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_00fcbfc0,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_00fcc1c8,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_00fcc3d0,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_00fcc5d8,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_00fcc7e0,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_00fcc9e8,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_00fccbf0,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_00fccdf8,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_00fd48c8,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_00fd4ad0,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_00fd4cd8,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_00fd4ee0,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_00fd50e8,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_00fd52f0,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_00fd54f8,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_00fd5700,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_00fdbd80,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_00fdbf88,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_00ff9028,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fdc398,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fdc5a0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fc5960,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fc5b68,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fea6f8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fea900,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00feab08,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ff9230
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00ff9438,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ff9640,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ff9848,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00ff9a50,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ff9c58,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ff9e60,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00ffa068,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00ffa270,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ffa478
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00ffa680,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ffa888,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fd81a8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fd83b0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ffaa90,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ffac98,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00ff6078,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00ff6280,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ffaea0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00ffb0a8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ff6898,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ff6aa0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00ffb2b0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ff6ca8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00feb940,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fe7d60,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fe7f68,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fe8170
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fe8378,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe8580,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe8788,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe8990,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ffb4b8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fdac50,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fdae58,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fdb060,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fdb268
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00ffb6c0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fdb678,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ffb8c8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00ffbad0,0xeb);
                                                        if (cVar1 != '\0') {
                                                          return 1;
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_0050b38e(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_00ffbbc0,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_00fc2698,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_00fc28a0,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_00fc2aa8,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_00fc2cb0,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_00fc2eb8,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_00fc30c0,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_00fc32c8,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_00fc34d0,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_00fc36d8,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_00fc38e0,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_00fc3ae8,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_00fc3cf0,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_00fc3ef8,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_00fc4100,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_00fc4308,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_00fc4510,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_00fc4718,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_00ffbdc8,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_00fd54f8,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_00ffbfd0,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_00fee398,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_00fee5a0,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_00fee7a8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fee9b0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ffc1d8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00ffc3e0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ffc5e8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ffc7f0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00ffc9f8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00ffcc00,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fd6948
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fef7e8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ffce08,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ffd010,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00ffd218,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ffd420,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ffd628,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00ffd830,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00ffda38,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ffdc40
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00ffde48,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ffe050,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ffe258,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00ffe460,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ffe668,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ffe870,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00ffea78,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00ffec80,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ffee88
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00fff090,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fff298,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fff4a0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fff6a8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00fff8b0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00fffab8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00fffcc0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fffec8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_010000d0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_010002d8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_010004e0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_010006e8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_010008f0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_01000af8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ff80f8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00ff8300,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00ff8508,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ff8710
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00ff8918,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe97c8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe99d0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe9bd8,0xf1);
                                                        if (cVar1 != '\0') {
                                                          return 1;
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_0050b849(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_01000d00,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_00fcb7a0,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_00fcb9a8,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_00fcbbb0,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_00fcbdb8,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_00fcbfc0,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_00fcc1c8,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_00fcc3d0,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_00fcc5d8,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_00fcc7e0,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_00fcc9e8,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_00fccbf0,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_00fccdf8,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_00fd48c8,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_00fd4ad0,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_00fd4cd8,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_00fd4ee0,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_00fd50e8,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_00fd52f0,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_00fd54f8,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_00fd5700,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_00fdbd80,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_00fdbf88,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_00fdc190,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fdc398,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fdc5a0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fc5960,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_01000f08,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ffc7f0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_01001110,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_01001318,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_01001520
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_01001728,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ff9640,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ff9848,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_01001930,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_00ff9c58,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_01001b38,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00ffa068,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00ffa270,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ffa478
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_01001d40,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_01001f48,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ff5858,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_01002150,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_01002358,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_00ff5e70,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_01002560,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00ff6280,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00ffaea0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_00ff6690,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00ff6898,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00ff6aa0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_01002768,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_01002970,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_01002b78,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_00feca70,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_00fd9e18,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_00fda020
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_01002d80,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_00fe8580,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_00fe8788,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_00fe8990,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_01002f88,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_01003190,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_01003398,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_010035a0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_010037a8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_010039b0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_01003bb8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_01003dc0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_01003fc8,0xec);
                                                        if (cVar1 != '\0') {
                                                          return 1;
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_0050bd04(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_010040b8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010042c0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010044c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010046d0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_010048d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01004ae0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01004ce8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01004ef0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_010050f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01005300,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01005508,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_01005710,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01005918,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01005b20,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01005d28,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01005f30,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_01006138,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01006340,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01006548,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01006750,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_01006958,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01006b60,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01006d68,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01006f70,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01007178,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01007380,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_01007588,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_01007790,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_01007998,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_01007ba0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01007da8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_01007fb0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_010081b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010083c0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_010085c8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_010087d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010089d8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01008be0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01008de8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01008ff0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010091f8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_01009400,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01009608,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01009810,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01009a18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01009c20,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01009e28,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_0100a030,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0100a238,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_0100a440,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_0100a648,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0100a850,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0100aa58,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_0100ac60,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0100ae68,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0100b070,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0100b278,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0100b480,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_0100b688,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_0100b890,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0100ba98,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_0100bca0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0100bea8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0100c0b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0100c2b8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_0100c4c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0100c6c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0100c8d0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_0100cad8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0100cce0,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_0100cee8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_0100d0f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0100d2f8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0100d500,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0100d708,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0100d910,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_0100db18,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_0100dd20,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_0100df28,0x78,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050c241(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_0100dfa8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010042c0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010044c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010046d0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_010048d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01004ae0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01004ce8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01004ef0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_010050f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01005300,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01005508,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_01005710,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01005918,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01005b20,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0100e1b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0100e3b8,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_0100e5c0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0100e7c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0100e9d0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0100ebd8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_0100ede0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0100efe8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0100f1f0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0100f3f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0100f600,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0100f808,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_0100fa10,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0100fc18,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_0100fe20,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_01010028,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01010230,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_01010438,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01010640,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01010848,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01010a50,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01010c58,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01010e60,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01011068,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01011270,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01011478,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01011680,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_01011888,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01011a90,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01011c98,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01011ea0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010120a8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010122b0,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_010124b8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010126c0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_010128c8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01012ad0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01012cd8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01012ee0,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_010130e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010132f0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010134f8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01013700,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01013908,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_01013b10,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_01013d18,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01013f20,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01014128,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01014330,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01014538,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01014740,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01014948,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01014b50,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01014d58,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01014f60,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01015168,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_01015370,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01015578,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01015780,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01015988,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01015b90,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01015d98,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_01015fa0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_010161a8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_010163b0,0x7d,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050c77e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_01016430,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010042c0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010044c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010046d0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_010048d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01004ae0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01004ce8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01004ef0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_010050f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01005300,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01005508,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_01005710,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01005918,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01005b20,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01016638,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01016840,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_01016a48,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01016c50,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01016e58,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01017060,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_01017268,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01017470,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01017678,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01017880,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01017a88,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01017c90,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_01017e98,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_010180a0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_010182a8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_010184b0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01007da8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_010186b8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_010188c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01018ac8,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01018cd0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01018ed8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010190e0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010192e8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01011270,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01011478,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01011680,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_01011888,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010194f0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010196f8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01019900,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01019b08,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01019d10,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01019f18,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0101a120,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_0101a328,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_0101a530,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0101a738,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0101a940,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_0101ab48,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0101ad50,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0101af58,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0101b160,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0101b368,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_0101b570,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_0101b778,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0101b980,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_0101bb88,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0101bd90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0101bf98,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0101c1a0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_0101c3a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0101c5b0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0101c7b8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_0101c9c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0101cbc8,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_0101cdd0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_0101cfd8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0101d1e0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0101d3e8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0101d5f0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0101d7f8,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_0101da00,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_0101dc08,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_0101de10,0x77,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050ccbb(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_0101de88,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010042c0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010044c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010046d0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_010048d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01004ae0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01004ce8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01004ef0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_010050f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01005300,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01005508,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_01005710,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01005918,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01005b20,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0100e1b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0100e3b8,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_0100e5c0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0100e7c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0100e9d0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0100ebd8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_0100ede0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0101e090,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01017678,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01017880,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01017a88,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01017c90,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_0101e298,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_010180a0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_0101e4a0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_0101e6a8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0101e8b0,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_0101eab8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0101ecc0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0101eec8,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01018cd0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01018ed8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0101f0d0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0101f2d8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_0101f4e0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0101f6e8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0101f8f0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_0101faf8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0101fd00,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0101ff08,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01020110,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01020318,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01020520,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01020728,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01020930,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01020b38,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01020d40,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01020f48,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01021150,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_01021358,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01021560,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01021768,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01021970,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01021b78,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_01021d80,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_01021f88,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01022190,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01022398,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_010225a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010227a8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010229b0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01022bb8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01022dc0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01022fc8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_010231d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010233d8,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_010235e0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_010237e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010239f0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01023bf8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01023e00,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01024008,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_01024210,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_01024418,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01024620,0x82,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050d1fb(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_010246a8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010042c0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010044c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010046d0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_010048d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01004ae0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01004ce8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01004ef0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_010050f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01005300,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01005508,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_01005710,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01005918,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010248b0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01024ab8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01024cc0,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_01024ec8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_010250d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010252d8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_010254e0,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_010256e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010258f0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01025af8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01025d00,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01025f08,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01026110,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_01026318,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_01026520,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_01026728,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_01026930,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01026b38,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_01026d40,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01026f48,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01027150,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01027358,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01027560,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01027768,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01027970,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01027b78,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01027d80,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01027f88,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_01028190,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01028398,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010285a0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_010287a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010289b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01028bb8,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01028dc0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01028fc8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_010291d0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_010293d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010295e0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010297e8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_010299f0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01029bf8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01029e00,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0102a008,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0102a210,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_0102a418,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_0102a620,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0102a828,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_0102aa30,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0102ac38,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0102ae40,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0102b048,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_0102b250,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0102b458,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0102b660,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_0102b868,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0102ba70,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_01015370,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01015578,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01015780,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01015988,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01015b90,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0102bc78,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_01015fa0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_0102be80,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_0102c088,0x7b,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050d738(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_0102c108,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010042c0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010044c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010046d0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_010048d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01004ae0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01004ce8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01004ef0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_010050f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01005300,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01005508,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_01005710,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01005918,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01005b20,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0100e1b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0100e3b8,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_0100e5c0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0100e7c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0100e9d0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0102c310,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_0100ede0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0100efe8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0100f1f0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0100f3f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0102c518,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0102c720,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_0102c928,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0100fc18,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_0102cb30,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_0102cd38,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0102cf40,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_0102d148,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01026f48,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01027150,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01027358,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01027560,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01027768,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01027970,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_0102d350,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01027d80,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01027f88,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_01028190,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0102d558,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010285a0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_010287a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010289b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0102d760,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_0102d968,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0102db70,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_0102dd78,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_0102df80,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0102e188,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0102e390,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_0102e598,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0102e7a0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0102e9a8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0102ebb0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0102edb8,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_0102efc0,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_0102f1c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0102f3d0,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_0102f5d8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0102f7e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0102f9e8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0102fbf0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_0102fdf8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01030000,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01030208,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01030410,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01030618,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_01030820,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01030a28,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01030c30,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01030e38,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01031040,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01031248,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_01015fa0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_01031450,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01031658,0x78,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050dc75(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_010316d8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010042c0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010044c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010046d0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_010048d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01004ae0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01004ce8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01004ef0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_010050f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01005300,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01005508,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_01005710,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01005918,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01005b20,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0100e1b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010318e0,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_01031ae8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01031cf0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0100e9d0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0100ebd8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_0100ede0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0100efe8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0100f1f0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0100f3f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0102c518,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0102c720,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_01031ef8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_01032100,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_01032308,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_010184b0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01007da8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_010186b8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_010188c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01032510,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01032718,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01032920,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01032b28,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01032d30,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01032f38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01033140,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01033348,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_01033550,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01033758,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01033960,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01033b68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01033d70,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01033f78,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01034180,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01034388,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01034590,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01034798,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010349a0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01034ba8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_01034db0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01034fb8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01029e00,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0102a008,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0102a210,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_0102a418,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_010351c0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010353c8,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_010355d0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_010357d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010359e0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01035be8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01035df0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01035ff8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01036200,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01036408,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01036610,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_01036818,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01036a20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01036c28,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01036e30,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01037038,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01037240,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_01037448,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_01037650,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01037858,0x7c,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050e1b2(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010378d8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_01037ae0,0x1c1,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050e1ee(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_01037ca8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01037eb0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_010380b8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010382c0,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_010384c8,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_010386d0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010388d8,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_01038ae0,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_01038ce8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01038ef0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010390f8,0x200,param_2), cVar1 != '\0')))))) &&
     ((((((cVar1 = (*param_1)(&DAT_01039300,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01039508,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01039710,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01039918,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01039b20,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01039d28,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_01039f30,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0103a138,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0103a340,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0103a548,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0103a750,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_0103a958,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_0103ab60,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0103ad68,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_0103af70,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_0103b178,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0103b380,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0103b588,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0103b790,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0103b998,0x200,param_2), cVar1 != '\0')))))))))))))) &&
       (((((cVar1 = (*param_1)(&DAT_0103bba0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_0103bda8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0103bfb0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_0103c1b8,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_0103c3c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0103c5c8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0103c7d0,0x200,param_2), cVar1 != '\0')))) &&
        (((((cVar1 = (*param_1)(&DAT_0103c9d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0103cbe0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0103cde8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_0103cff0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0103d1f8,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_0103d400,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_0103d608,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0103d810,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0103da18,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_0103dc20,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0103de28,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0103e030,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0103e238,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0103e440,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_0103e648,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_0103e850,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0103ea58,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0103ec60,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0103ee68,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0103f070,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0103f278,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_0103f480,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0103f688,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0103f890,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0103fa98,0x197,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050e61e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_01040040,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0103fc30,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0103fe38,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01040248,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_01040450,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01040658,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01040860,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_01040a68,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_01040c70,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01040e78,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01041080,0x200,param_2), cVar1 != '\0')))))) &&
     ((((((cVar1 = (*param_1)(&DAT_01041288,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01041490,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01041698,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_010418a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01041aa8,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01041cb0,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_01041eb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010420c0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010422c8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010424d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010426d8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_010428e0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01042ae8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01042cf0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01042ef8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_01043100,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01043308,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01043510,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01043718,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01043920,0x200,param_2), cVar1 != '\0')))))))))))))) &&
       (((((cVar1 = (*param_1)(&DAT_01043b28,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01043d30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01043f38,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01044140,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01044348,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01044550,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01044758,0x200,param_2), cVar1 != '\0')))) &&
        (((((cVar1 = (*param_1)(&DAT_01044960,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01044b68,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01044d70,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01044f78,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01045180,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_01045388,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01045590,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01045798,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_010459a0,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_01045ba8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01045db0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01045fb8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_010461c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010463c8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_010465d0,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_010467d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010469e0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01046be8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01046df0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01046ff8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01047200,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01047408,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01047610,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01047818,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01047a20,0x196,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050ea4e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_01047bb8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01047dc0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_01047fc8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010481d0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010483d8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_010485e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010487e8,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_010489f0,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_01048bf8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01048e00,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01049008,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01049210,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01049418,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_01049620,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01049828,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01049a30,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_01049c38,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01049e40,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0104a048,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0104a250,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_0104a458,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0104a660,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_0104a868,0x200,param_2), cVar1 != '\0')) &&
      ((((((cVar1 = (*param_1)(&DAT_0104aa70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0104ac78,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0104ae80,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0104b088,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0104b290,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0104b498,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_0104b6a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0104b8a8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0104bab0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_0104bcb8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0104bec0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0104c0c8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_0104c2d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0104c4d8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0104c6e0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0104c8e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0104caf0,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_0104ccf8,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_0104cf00,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0104d108,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0104d310,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0104d518,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0104d720,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0104d928,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_0104db30,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0104dd38,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0104df40,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_0104e148,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0104e350,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0104e558,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_0104e760,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0104e968,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0104eb70,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_0104ed78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0104ef80,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0104f188,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_0104f390,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0104f598,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0104f7a0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_0104f9a8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0104fbb0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0104fdb8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0104ffc0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010501c8,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_010503d0,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_010505d8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_010507e0,0x200,param_2), cVar1 != '\0')))) &&
      ((((((cVar1 = (*param_1)(&DAT_010509e8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01050bf0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01050df8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01051000,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01051208,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01051410,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01051618,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01051820,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01051a28,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01051c30,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01051e38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01052040,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01052248,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_01052450,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01052658,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01052860,0x19a,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f005(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_01052a00,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_01052c08,0x1c0,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f041(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_01052dd0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_01052fd8,0x1b4,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f07d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_01053190,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_01053398,0x1b5,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f0b9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_01053550,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_01053758,0x1b5,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f0f5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_01053910,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_01053b18,0x19e,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f131(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_01053cb8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_01053ec0,0x19e,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f16d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_01054060,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_01054268,0x19f,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f1a9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_01054408,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_01054610,0x1a6,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f1e5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010547b8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010549c0,0x1aa,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f221(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_01054b70,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_01054d78,0x1aa,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f25d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_01054f28,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_01055130,0x1a7,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f299(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010552d8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010554e0,0x1aa,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f2d5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_01055690,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_01055898,0x1a9,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f311(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_01055a48,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_01055c50,0x1ac,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f34d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_01055e00,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01056008,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01056210,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01056418,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01056620,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01056828,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01056a30,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01056c38,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01056e40,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01057048,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01057250,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01057458,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01057660,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01057868,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01057a70,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01057c78,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01057e80,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_01058088,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01058290,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01058498,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_010586a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010588a8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01058ab0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01058cb8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01058ec0,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_010590c8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_010592d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010594d8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_010596e0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_010598e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01059af0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01059cf8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01059f00,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0105a108,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (cVar1 = (*param_1)(&DAT_0105a310,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_0105a518,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0105a720,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0105a928,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0105ab30,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0105ad38,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0105af40,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0105b148,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0105b350,0x200,param_2), cVar1 != '\0')))) &&
       (((((((cVar1 = (*param_1)(&DAT_0105b558,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0105b760,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0105b968,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0105bb70,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_0105bd78,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0105bf80,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0105c188,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_0105c390,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0105c598,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_0105c7a0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0105c9a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0105cbb0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0105cdb8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_0105cfc0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0105d1c8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0105d3d0,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_0105d5d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0105d7e0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0105d9e8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_0105dbf0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0105ddf8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0105e000,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0105e208,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0105e410,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_0105e618,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_0105e820,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_0105ea28,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_0105ec30,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_0105ee38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0105f040,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0105f248,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_0105f450,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0105f658,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0105f860,0x200,param_2), cVar1 != '\0')))))) &&
      (cVar1 = (*param_1)(&DAT_0105fa64,0x38,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050f879(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_0105faa0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0105fca8,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_0105feb0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010600b8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010602c0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_010604c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010606d0,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_010608d8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01060ae0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01060ce8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01060ef0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010610f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01061300,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01061508,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01061710,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01061918,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01061b20,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_01061d28,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01061f30,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01062138,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01062340,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01062548,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01062750,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01062958,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01062b60,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_01062d68,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_01062f70,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01063178,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01063380,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01063588,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01063790,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01063998,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01063ba0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01063da8,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (cVar1 = (*param_1)(&DAT_01063fb0,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_010641b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010643c0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010645c8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010647d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010649d8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01064be0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01064de8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01064ff0,0x200,param_2), cVar1 != '\0')))) &&
       (((((((cVar1 = (*param_1)(&DAT_010651f8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01065400,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01065608,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01065810,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_01065a18,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01065c20,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01065e28,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01066030,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0105c598,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01066238,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0105c9a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01066440,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01066648,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01066850,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01066a58,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01066c60,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01066e68,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01067070,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01067278,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_01067480,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01067688,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01067890,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01067a98,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01067ca0,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_01067ea8,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_010680b0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_010682b8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_010684c0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_010686c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010688d0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01068ad8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_01068ce0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01068ee8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010690f0,0x200,param_2), cVar1 != '\0')))))) &&
      (cVar1 = (*param_1)(&DAT_010692f4,0x37,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0050fda5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_01069330,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0105fca8,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_0105feb0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010600b8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010602c0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_010604c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010606d0,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_010608d8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01060ae0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01060ce8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01060ef0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010610f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01061300,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01069538,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01061710,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01061918,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01061b20,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_01069740,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01069948,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01069b50,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01069d58,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01069f60,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0106a168,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01062958,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01062b60,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_0106a370,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_0106a578,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0106a780,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01063380,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01063588,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0106a988,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0106ab90,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0106ad98,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01063da8,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (cVar1 = (*param_1)(&DAT_01063fb0,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_010641b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0106afa0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0106b1a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0106b3b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0106b5b8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0106b7c0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0106b9c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0106bbd0,0x200,param_2), cVar1 != '\0')))) &&
       (((((((cVar1 = (*param_1)(&DAT_0106bdd8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0106bfe0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0106c1e8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0106c3f0,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_0106c5f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0106c800,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0106ca08,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_0106cc10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0106ce18,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_0106d020,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0106d228,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0106d430,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0106d638,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_0106d840,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0106da48,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0106dc50,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_0106de58,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0106e060,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0106e268,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_0106e470,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0106e678,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0106e880,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0106ea88,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0106ec90,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_0106ee98,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_0106f0a0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_0106f2a8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_0106f4b0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_0106f6b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0106f8c0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0106fac8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_0106fcd0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0106fed8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010700e0,0x200,param_2), cVar1 != '\0')))))) &&
      (cVar1 = (*param_1)(&DAT_010702e4,0x2d,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005102d1(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_01070318,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01070520,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_01070728,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01070930,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01070b38,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01070d40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01070f48,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01071150,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01071358,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01071560,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01071768,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01071970,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01071b78,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_01041698,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01071d80,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01071f88,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_01072190,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_01072398,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010725a0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010727a8,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_010729b0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01072bb8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01072dc0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_01072fc8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010731d0,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_010733d8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_010735e0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010737e8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010739f0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_01073bf8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01073e00,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01074008,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_01074210,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01074418,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_01074620,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_01074828,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01074a30,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01074c38,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01074e40,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01075048,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_01075250,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01075458,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01075660,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_01075868,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01075a70,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01075c78,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01075e80,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_01076088,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01076290,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01076498,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_010766a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010768a8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_01076ab0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01076cb8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01076ec0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010770c8,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_010772d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010774d8,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_010776e0,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010778e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01077af0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01077cf8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_01077f00,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01078108,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01078310,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01078518,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01078720,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_01078928,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_01078b30,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_01078d38,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_01078f40,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01079148,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01079350,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01079558,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_01079760,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01079968,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01079b6c,0x35,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005107ec(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_01079ba8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01070520,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_01070728,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01070930,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01070b38,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01070d40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01070f48,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01071150,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01071358,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01071560,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01071768,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01071970,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01071b78,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_01041698,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01071d80,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01071f88,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_01072190,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_01072398,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01079db0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01079fb8,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_0107a1c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0107a3c8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0107a5d0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_0107a7d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0107a9e0,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_0107abe8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_0107adf0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0107aff8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0107b200,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_01073bf8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01073e00,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01074008,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_01074210,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0107b408,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_01074620,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_01074828,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0107b610,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0107b818,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0107ba20,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0107bc28,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_0107be30,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0107c038,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0107c240,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_0107c448,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_0107c650,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0107c858,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0107ca60,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_0107cc68,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0107ce70,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0107d078,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_0107d280,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0107d488,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_0107d690,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0107d898,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0107daa0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0107dca8,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_0107deb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0107e0b8,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_0107e2c0,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_0107e4c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0107e6d0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0107e8d8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_0107eae0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0107ece8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0107eef0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0107f0f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0107f300,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_0107f508,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_0107f710,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_0107f918,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_0107fb20,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_0107fd28,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0107ff30,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01080138,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_01080340,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01080548,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0108074c,0x2f,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00510d0a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_01080780,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01070520,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_01070728,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01070930,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01070b38,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01070d40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01080988,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01080b90,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01080d98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01080fa0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010811a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010813b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010815b8,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_010817c0,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_010819c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01081bd0,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_01081dd8,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_01081fe0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010821e8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010823f0,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_010825f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01082800,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01082a08,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_01082c10,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01082e18,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_01083020,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_01083228,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01083430,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01083638,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_01083840,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01083a48,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01083c50,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_01083e58,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01084060,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_01084268,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_01084470,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01084678,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01084880,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01084a88,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01084c90,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_01084e98,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010850a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010852a8,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_010854b0,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_010856b8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010858c0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01085ac8,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_01085cd0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01085ed8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010860e0,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_010862e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010864f0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_010866f8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01086900,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01086b08,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01086d10,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_01086f18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01087120,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_01087328,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01087530,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01087738,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01087940,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_01087b48,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01087d50,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01087f58,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01088160,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01088368,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_01088570,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_01088778,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_01088980,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_01088b88,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01088d90,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01088f98,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010891a0,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_010893a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010895b0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010897b4,0x38,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00511225(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_010897f0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01070520,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_01070728,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01070930,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_010899f8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01089c00,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01089e08,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_0108a010,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_0108a218,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0108a420,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0108a628,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0108a830,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0108aa38,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_0108ac40,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_0108ae48,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0108b050,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_0108b258,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_0108b460,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0108b668,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0108b870,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_0108ba78,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0108bc80,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0108be88,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_0108c090,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0108c298,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_0107abe8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_0107adf0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0107aff8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0108c4a0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_0108c6a8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0108c8b0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0108cab8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_0108ccc0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0108cec8,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_0108d0d0,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_0108d2d8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0108d4e0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0108d6e8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0108d8f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0108daf8,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_0108dd00,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0108df08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0108e110,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_0108e318,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_0108e520,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0108e728,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0108e930,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_0108eb38,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0108ed40,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0108ef48,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_0108f150,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0108f358,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_0108f560,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0108f768,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0108f970,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0108fb78,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_0108fd80,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0108ff88,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_01090190,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01090398,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010905a0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010907a8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_010909b0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01090bb8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01090dc0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01090fc8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010911d0,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_010913d8,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_010915e0,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_010917e8,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_010919f0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01091bf8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01091e00,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01092008,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_01092210,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01092418,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0109261c,0x30,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00511740(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_01092650,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01070520,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_01070728,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01070930,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01070b38,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01070d40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01070f48,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01071150,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01071358,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01071560,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01071768,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01071970,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01092858,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_01092a60,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_010819c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01081bd0,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_01092c68,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_01092e70,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01093078,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010727a8,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_010729b0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01072bb8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01072dc0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_01072fc8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010731d0,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_010733d8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_01093280,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010737e8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010739f0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_01073bf8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01073e00,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01074008,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_01074210,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01093488,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_01093690,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_01093898,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01093aa0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01093ca8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01093eb0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010940b8,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_010942c0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010944c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010946d0,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_010948d8,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01075a70,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01094ae0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01075e80,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_01076088,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01076290,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01076498,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_010766a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01094ce8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_01094ef0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_010950f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01095300,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01095508,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_01095710,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01095918,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_01095b20,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01095d28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01095f30,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01096138,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_01096340,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01096548,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01096750,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01096958,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01096b60,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_01096d68,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_01096f70,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_01097178,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_01097380,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01097588,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01097790,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01097998,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_01097ba0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01097da8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01097fac,0x39,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00511c5b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_01097fe8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010981f0,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_010983f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01098600,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01098808,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01098a10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01098c18,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01098e20,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01099028,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01099230,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01099438,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01099640,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01099848,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01099a50,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01099c58,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01099e60,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_0109a068,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_0109a270,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0109a478,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0109a680,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_0109a888,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0109aa90,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0109ac98,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0109aea0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0109b0a8,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_0109b2b0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_0109b4b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0109b6c0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0109b8c8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_0109bad0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0109bcd8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0109bee0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0109c0e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0109c2f0,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (cVar1 = (*param_1)(&DAT_0109c4f8,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_0109c700,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0109c908,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0109cb10,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0109cd18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0109cf20,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0109d128,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0109d330,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0109d538,0x200,param_2), cVar1 != '\0')))) &&
       (((((((cVar1 = (*param_1)(&DAT_0109d740,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0109d948,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0109db50,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0109dd58,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_0109df60,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0109e168,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0109e370,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_0109e578,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0109e780,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_0109e988,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0109eb90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0109ed98,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0109efa0,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_0109f1a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0109f3b0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0109f5b8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_0109f7c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0109f9c8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0109fbd0,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_0109fdd8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0109ffe0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010a01e8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010a03f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010a05f8,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_010a0800,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_010a0a08,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_010a0c10,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_010a0e18,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_010a1020,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010a1228,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_010a1430,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_010a1638,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010a1840,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010a1a48,0x200,param_2), cVar1 != '\0')))))) &&
      (cVar1 = (*param_1)(&DAT_010a1c4c,0x29,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00512187(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_010a1c78,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010a1e80,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_010a2088,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010a2290,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010a2498,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_010a26a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010a28a8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_010a2ab0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_010a2cb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010a2ec0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010a30c8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010a32d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010a34d8,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_010a36e0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_010a38e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010a3af0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_010a3cf8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_010a3f00,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010a4108,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_010a4310,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_010a4518,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010a4720,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010a4928,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_010a4b30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010a4d38,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_010a4f40,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_010a5148,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010a5350,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_010a5558,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_010a5760,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010a5968,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010a5b70,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_010a5d78,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010a5f80,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (cVar1 = (*param_1)(&DAT_010a6188,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_010a6390,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010a6598,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010a67a0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010a69a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010a6bb0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_010a6db8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_010a6fc0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010a71c8,0x200,param_2), cVar1 != '\0')))) &&
       (((((((cVar1 = (*param_1)(&DAT_010a73d0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_010a75d8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010a77e0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010a79e8,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_010a7bf0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010a7df8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_010a8000,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_010a8208,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010a8410,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_010a8618,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_010a8820,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010a8a28,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010a8c30,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_010a8e38,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010a9040,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_010a9248,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010a9450,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010a9658,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010a9860,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_010a9a68,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010a9c70,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010a9e78,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010aa080,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010aa288,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_010aa490,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_010aa698,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_010aa8a0,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_010aaaa8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_010aacb0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010aaeb8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_010ab0c0,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_010ab2c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010ab4d0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010ab6d8,0x200,param_2), cVar1 != '\0')))))) &&
      (cVar1 = (*param_1)(&DAT_010ab8dc,0x1d,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005126b3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_010ab900,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010a1e80,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_010a2088,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010a2290,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010a2498,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_010a26a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010a28a8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_010a2ab0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_010a2cb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010a2ec0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010a30c8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010a32d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010abb08,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_010abd10,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_010abf18,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010ac120,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_010ac328,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_010ac530,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010ac738,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_010ac940,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_010acb48,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010acd50,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0109ac98,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0109aea0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010acf58,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_010ad160,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_010ad368,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010ad570,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_010ad778,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_010ad980,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010adb88,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010add90,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_010adf98,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010ae1a0,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (cVar1 = (*param_1)(&DAT_010ae3a8,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_010ae5b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010ae7b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010ae9c0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0109cd18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010aebc8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0109d128,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_010aedd0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010aefd8,0x200,param_2), cVar1 != '\0')))) &&
       (((((((cVar1 = (*param_1)(&DAT_010af1e0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_010af3e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010af5f0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010af7f8,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_010afa00,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010afc08,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_010afe10,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_010b0018,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010b0220,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_010b0428,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_010b0630,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010b0838,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010b0a40,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_010b0c48,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010b0e50,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_010b1058,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010b1260,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010b1468,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010b1670,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_010b1878,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010b1a80,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010b1c88,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010b1e90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010b2098,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_010b22a0,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_010b24a8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_010b26b0,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_010b28b8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_010b2ac0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010b2cc8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_010b2ed0,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_010b30d8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010b32e0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010b34e8,0x200,param_2), cVar1 != '\0')))))) &&
      (cVar1 = (*param_1)(&DAT_010b36ec,0x22,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00512bdf(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_010b3710,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010a1e80,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_010a2088,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010a2290,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010a2498,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_010a26a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010a28a8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_010a2ab0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_010a2cb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010a2ec0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010a30c8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010a32d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010abb08,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_010abd10,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_010abf18,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010ac120,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_010ac328,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_010ac530,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010ac738,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_010ac940,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_010b3918,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010b3b20,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010b3d28,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_010b3f30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010b4138,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_010b4340,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_010b4548,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010b4750,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_010b4958,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_010b4b60,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010b4d68,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010b4f70,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_010b5178,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010b5380,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (cVar1 = (*param_1)(&DAT_0109c4f8,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_0109c700,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010b5588,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010b5790,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010b5998,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010b5ba0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_010b5da8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_010b5fb0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010b61b8,0x200,param_2), cVar1 != '\0')))) &&
       (((((((cVar1 = (*param_1)(&DAT_010b63c0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_010b65c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010b67d0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010b69d8,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_010b6be0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010b6de8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_010b6ff0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_010b71f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010b7400,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_010b7608,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_010b7810,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_010b7a18,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_010b7c20,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_010b7e28,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010b8030,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_010b8238,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010b8440,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010b8648,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010b8850,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_010b8a58,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010b8c60,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010b8e68,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010b9070,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010b9278,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_010b9480,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_010b9688,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_010b9890,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_010b9a98,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_010b9ca0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010b9ea8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_010ba0b0,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_010ba2b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010ba4c0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010ba6c8,0x200,param_2), cVar1 != '\0')))))) &&
      (cVar1 = (*param_1)(&DAT_010ba8cc,0x17,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0051310b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_010ba8e8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010baaf0,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_010bacf8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010baf00,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_010bb108,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_010bb310,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010bb518,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_010bb720,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010bb928,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010bbb30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010bbd38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010bbf40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010bc148,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_010bc350,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_010bc558,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010bc760,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_010bc968,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_010bcb70,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010bcd78,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010bcf80,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_010bd188,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010bd390,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_010bd598,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_010bd7a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010bd9a8,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_010bdbb0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_010bddb8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010bdfc0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010be1c8,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_010be3d0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010be5d8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_010be7e0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_010be9e8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010bebf0,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_010bedf8,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_010bf000,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010bf208,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010bf410,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010bf618,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010bf820,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_010bfa28,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010bfc30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010bfe38,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_010c0040,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_010c0248,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010c0450,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_010c0658,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_010c0860,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010c0a68,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010c0c70,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_010c0e78,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010c1080,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_010c1288,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_010c1490,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010c1698,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010c18a0,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_010c1aa8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010c1cb0,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_010c1eb8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010c20c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010c22c8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010c24d0,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_010c26d8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010c28e0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010c2ae8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010c2cf0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010c2ef8,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_010c3100,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_010c3308,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_010c3510,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_010c3718,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_010c3920,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010c3b28,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010c3d30,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_010c3f38,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010c4140,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010c4344,0xc,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00513626(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_010c4358,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010baaf0,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_010bacf8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010baf00,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_010bb108,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_010bb310,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010bb518,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_010bb720,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010bb928,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010bbb30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010bbd38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010c4560,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010c4768,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_010c4970,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_010bc558,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010c4b78,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_010c4d80,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_010c4f88,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010c5190,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010c5398,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_010c55a0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010c57a8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_010c59b0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_010c5bb8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010c5dc0,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_010c5fc8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_010c61d0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010c63d8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010c65e0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_010be3d0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010c67e8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_010c69f0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_010c6bf8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010c6e00,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_010c7008,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_010c7210,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010c7418,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010c7620,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010c7828,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010c7a30,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_010c7c38,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010c7e40,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010c8048,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_010c8250,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_010c8458,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010c8660,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_010c8868,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_010c8a70,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010c8c78,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010c8e80,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_010c9088,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010c9290,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_010c9498,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_010c96a0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010c98a8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010c9ab0,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_010c9cb8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010c9ec0,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_010ca0c8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010ca2d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010ca4d8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010ca6e0,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_010ca8e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010caaf0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010cacf8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010caf00,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010cb108,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_010cb310,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_010cb518,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_010cb720,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_010cb928,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_010cbb30,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010cbd38,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010cbf40,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_010cc148,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010cc350,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010c4344,0xc,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00513b41(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_010cc558,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010cc760,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_010cc968,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010ccb70,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_010ccd78,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_010ccf80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010cd188,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_010cd390,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010cd598,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010cd7a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010cd9a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010cdbb0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010cddb8,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_010cdfc0,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_010ce1c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010ce3d0,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_010ce5d8,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_010ce7e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010ce9e8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010cebf0,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_010cedf8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010cf000,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_010cf208,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_010cf410,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010cf618,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_010cf820,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_010cfa28,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010cfc30,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010cfe38,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_010d0040,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010d0248,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_010d0450,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_010d0658,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010d0860,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_010d0a68,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_010d0c70,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010d0e78,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010d1080,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010d1288,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010d1490,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_010d1698,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010d18a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010d1aa8,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_010d1cb0,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_010d1eb8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010d20c0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_010d22c8,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_010c8a70,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010d24d0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010d26d8,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_010d28e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010d2ae8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_010d2cf0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_010d2ef8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010d3100,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010d3308,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_010d3510,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010d3718,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_010d3920,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010d3b28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010d3d30,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010d3f38,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_010d4140,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010c28e0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010c2ae8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010d4348,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010c2ef8,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_010c3100,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_010c3308,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_010c3510,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_010c3718,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_010c3920,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010d4550,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010d4758,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_010d4960,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010d4b68,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010d4d6c,0x15,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0051405c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_010d4d88,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010baaf0,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_010bacf8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010baf00,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_010bb108,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_010bb310,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010bb518,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_010bb720,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010bb928,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010bbb30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010bbd38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010c4560,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010c4768,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_010d4f90,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_010d5198,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010d53a0,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_010d55a8,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_010d57b0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010d59b8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010d5bc0,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_010d5dc8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010d5fd0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_010d61d8,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_010d63e0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010d65e8,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_010d67f0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_010d69f8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010d6c00,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010d6e08,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_010d7010,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010d7218,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_010d7420,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_010d7628,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010d7830,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_010d7a38,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_010d7c40,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010d7e48,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010d8050,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010d8258,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010d8460,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_010d8668,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010d8870,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010d8a78,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_010d8c80,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_010d8e88,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010d9090,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_010d9298,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_010d94a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010d96a8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010d98b0,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_010d9ab8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010d9cc0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_010c9498,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_010c96a0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010c98a8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010c9ab0,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_010c9cb8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010c9ec0,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_010ca0c8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010ca2d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010ca4d8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010d9ec8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_010da0d0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010da2d8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010da4e0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010da6e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010da8f0,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_010daaf8,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_010dad00,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_010daf08,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_010db110,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_010db318,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010db520,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010db728,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_010db930,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010dbb38,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010dbd3c,0xe,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00514577(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_010dbd50,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010baaf0,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_010bacf8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010baf00,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_010bb108,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_010bb310,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010bb518,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_010bb720,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010bb928,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010bbb30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010bbd38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010dbf58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010dc160,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_010c4970,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_010bc558,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010dc368,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_010dc570,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_010c4f88,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010c5190,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010c5398,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_010c55a0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010dc778,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_010dc980,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_010dcb88,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010dcd90,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_010dcf98,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_010c61d0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010dd1a0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010dd3a8,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_010dd5b0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010dd7b8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_010dd9c0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_010ddbc8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010dddd0,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_010ddfd8,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_010de1e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010de3e8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010de5f0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010de7f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010dea00,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_010dec08,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010dee10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010df018,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_010df220,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_010df428,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010df630,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_010df838,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_010dfa40,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010dfc48,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010dfe50,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_010e0058,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010e0260,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_010e0468,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_010e0670,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010e0878,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010e0a80,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_010e0c88,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010e0e90,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_010e1098,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010e12a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010e14a8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010e16b0,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_010e18b8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010e1ac0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010e1cc8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010e1ed0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010e20d8,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_010e22e0,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_010e24e8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_010e26f0,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_010e28f8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_010e2b00,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010e2d08,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010e2f10,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_010e3118,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010e3320,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010e3524,0x14,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00514a92(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_010e3540,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010baaf0,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_010bacf8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010baf00,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_010bb108,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_010bb310,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010bb518,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_010bb720,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010bb928,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010bbb30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010bbd38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010c4560,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010c4768,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_010c4970,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_010bc558,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010bc760,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_010e3748,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_010e3950,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010e3b58,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010e3d60,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_010e3f68,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010e4170,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_010e4378,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_010e4580,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010e4788,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_010e4990,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_010e4b98,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010e4da0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010e4fa8,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_010e51b0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010e53b8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_010e55c0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_010e57c8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010e59d0,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_010e5bd8,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_010e5de0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010e5fe8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010e61f0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010e63f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010e6600,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_010e6808,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010e6a10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010e6c18,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_010e6e20,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_010e7028,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010e7230,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_010e7438,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_010e7640,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010e7848,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010e7a50,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_010e7c58,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010e7e60,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_010e8068,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_010e8270,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010e8478,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010e8680,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_010e8888,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010c1cb0,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_010e8a90,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010e8c98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010c22c8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010e8ea0,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_010e90a8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010e92b0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010e94b8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010e96c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010e98c8,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_010e9ad0,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_010e9cd8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_010e9ee0,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_010ea0e8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_010ea2f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010ea4f8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010ea700,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_010ea908,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010eab10,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010ead14,0xd,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00514fad(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_010ead28,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010baaf0,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_010bacf8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010baf00,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_010bb108,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_010bb310,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010bb518,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_010bb720,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010bb928,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010bbb30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010bbd38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010c4560,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010c4768,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_010c4970,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_010bc558,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010bc760,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_010e3748,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_010e3950,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010e3b58,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010e3d60,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_010eaf30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010eb138,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_010dc980,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_010dcb88,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010dcd90,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_010eb340,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_010eb548,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010eb750,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010eb958,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_010ebb60,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010ebd68,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_010ebf70,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_010ec178,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010ec380,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_010ec588,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_010ec790,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010ec998,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010ecba0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010ecda8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010ecfb0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_010ed1b8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010ed3c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010ed5c8,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_010ed7d0,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_010ed9d8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010d9090,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_010d9298,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_010d94a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010d96a8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010edbe0,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_010edde8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010edff0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_010ee1f8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_010ee400,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010ee608,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010ee810,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_010eea18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010eec20,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_010eee28,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010ef030,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010ef238,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010ef440,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_010ef648,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010ef850,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010efa58,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010efc60,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010efe68,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_010f0070,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_010f0278,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_010f0480,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_010f0688,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_010f0890,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010f0a98,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010f0ca0,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_010f0ea8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010f10b0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010f12b4,0x11,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005154c8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_010f12c8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010baaf0,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_010bacf8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010baf00,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_010bb108,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_010f14d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010f16d8,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_010cd390,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010cd598,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010cd7a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010cd9a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_010cdbb0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010cddb8,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_010f18e0,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_010f1ae8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010f1cf0,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_010f1ef8,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_010f2100,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010f2308,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010f2510,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_010f2718,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010f2920,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_010f2b28,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_010f2d30,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010f2f38,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_010f3140,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_010bddb8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010bdfc0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010f3348,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_010f3550,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010f3758,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_010f3960,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_010f3b68,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010f3d70,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_010f3f78,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_010f4180,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010f4388,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010f4590,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010bf618,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010f4798,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_010f49a0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010f4ba8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010f4db0,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_010f4fb8,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_010f51c0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_010f53c8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_010f55d0,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_010f57d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_010f59e0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_010f5be8,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_010f5df0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010f5ff8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_010f6200,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_010f6408,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010f6610,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010f6818,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_010f6a20,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010f6c28,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_010f6e30,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_010f7038,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010f7240,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_010f7448,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_010f7650,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_010f7858,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_010f7a60,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_010f7c68,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_010f7e70,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_010f8078,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_010f8280,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_010f8488,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_010f8690,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_010f8898,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010f8aa0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010f8ca8,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_010f8eb0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010f90b8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010f92bc,0x13,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005159e3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010f92d0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010f94d8,0x1a7,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00515a1f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010f9680,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010f9888,0x1b3,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00515a5b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010f9a40,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010f9c48,0x1a8,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00515a97(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010f9df8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010fa000,0x1a3,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00515ad3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010fa1a8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010fa3b0,0x1a3,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00515b0f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010fa558,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010fa760,0x1a2,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00515b4b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010fa908,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010fab10,0x1a7,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00515b87(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010facb8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010faec0,0x1a8,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00515bc3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010fb070,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010fb278,0x1a7,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00515bff(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010fb420,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010fb628,0x1a7,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00515c3b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010fb7d0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010fb9d8,0x1a8,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00515c77(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010fbb88,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010fbd90,0x1a7,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00515cb3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010fbf38,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010fc140,0x1aa,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00515cef(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_010fc2f0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_010fc4f8,0x1a9,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00515d2b(undefined4 *param_1)

{
  char cVar1;
  undefined auStack_48 [28];
  undefined4 uStack_2c;
  undefined *local_18;
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 1;
  *param_1 = 0;
  param_1[1] = 0;
  local_18 = auStack_48;
  local_14 = 1;
  FUN_00672a11();
  cVar1 = FUN_00515d85(param_1);
  if (cVar1 == '\0') {
    uStack_2c = 0x515d71;
    FUN_0074ca40();
  }
  local_8 = local_8 & 0xffffff00;
  uStack_2c = 0x515d7d;
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00515e5a)

uint FUN_00515d85(void)

{
  char cVar1;
  uint uVar2;
  undefined *extraout_ECX;
  undefined auStack_58 [16];
  undefined *puStack_48;
  int *piStack_44;
  undefined4 local_40;
  undefined *local_3c;
  undefined4 local_28;
  int local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined local_18 [4];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0;
  local_3c = (undefined *)0x200;
  local_40 = 0x515da2;
  FUN_00b743c0();
  local_14 = (undefined4 *)auStack_58;
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_00672a11();
  cVar1 = FUN_00bbfd10(local_28);
  if (cVar1 == '\0') {
    local_3c = (undefined *)0xd30fde8e;
    local_40 = 0x515dd6;
    FUN_00b940e0();
  }
  local_20 = 0;
  local_1c = 0;
  local_8._0_1_ = 2;
  if (cVar1 == '\0') {
    local_1c = 0;
    local_20 = 0;
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_24 != 0) {
      local_3c = (undefined *)0x515e6f;
      FUN_0040127a();
    }
    local_8 = 0xffffffff;
    local_3c = (undefined *)0x515e7b;
    uVar2 = FUN_00507e58();
    return uVar2 & 0xffffff00;
  }
  local_3c = local_18;
  local_40 = 0x515df0;
  FUN_00515ee0();
  local_8._0_1_ = 3;
  local_3c = (undefined *)0x515dfd;
  FUN_004fe47e();
  local_8 = CONCAT31(local_8._1_3_,2);
  if (local_14 != (undefined4 *)0x0) {
    local_3c = (undefined *)0x515e0d;
    FUN_0040127a();
    local_14 = (undefined4 *)extraout_ECX;
  }
  local_40 = local_28;
  piStack_44 = &local_24;
                    // WARNING: Subroutine does not return
  puStack_48 = &UNK_00515e25;
  local_3c = (undefined *)local_14;
  local_14 = &local_40;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00515e83(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W560DA063::W08B3C99A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00515ec9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00515ee0(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x40);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00b8eb5e(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00515e83(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_00515f51(int *param_1_00,int param_1)

{
  char cVar1;
  undefined auStack_84 [20];
  undefined4 uStack_70;
  undefined *puStack_6c;
  undefined4 uStack_68;
  undefined local_54 [64];
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  cVar1 = '\0';
  local_8 = 0;
  if (param_1 == 0) {
    if ((undefined4 *)*param_1_00 != (undefined4 *)0x0) {
      uStack_68 = 1;
      puStack_6c = (undefined *)0x515f75;
      (***(code ***)(undefined4 *)*param_1_00)();
    }
    *param_1_00 = 0;
  }
  else {
    uStack_68 = 0x200;
    puStack_6c = local_54;
    uStack_70 = 0x515f99;
    FUN_00b74200();
    local_14 = auStack_84;
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_00672a11();
    cVar1 = FUN_0051618b(local_54);
    if (cVar1 != '\0') {
      uStack_68 = 0xffffffff;
      puStack_6c = (undefined *)0x515fcb;
      cVar1 = FUN_00bb1450();
      if (cVar1 == '\0') {
        uStack_68 = 0x50e9148e;
        puStack_6c = (undefined *)0x515fe1;
        FUN_00b940e0();
      }
    }
    local_8 = local_8 & 0xffffff00;
    uStack_68 = 0x515fee;
    FUN_00b73a90();
  }
  local_8 = 0xffffffff;
  uStack_68 = 0x515f83;
  FUN_00507e58();
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_0051605d(undefined4 *param_1_00,int param_1)

{
  char cVar1;
  undefined auStack_8c [16];
  undefined4 uStack_7c;
  undefined4 uStack_78;
  undefined *puStack_74;
  char *pcStack_70;
  undefined local_5c [64];
  undefined local_1c [4];
  undefined *local_18;
  char local_11 [9];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  cVar1 = '\0';
  local_8 = 0;
  if (param_1 == 0) {
    pcStack_70 = (char *)0x51607c;
    FUN_0074ca40();
  }
  else {
    pcStack_70 = (char *)0x200;
    puStack_74 = local_5c;
    uStack_78 = 0x51609e;
    FUN_00b74200();
    local_18 = auStack_8c;
    local_8._0_1_ = 1;
    FUN_00672a11();
    local_11[0] = FUN_0051618b(local_5c);
    cVar1 = local_11[0];
    if (local_11[0] != '\0') {
      pcStack_70 = local_1c;
      puStack_74 = (undefined *)0x5160d0;
      FUN_0051633e();
      local_8._0_1_ = 2;
      pcStack_70 = (char *)0x5160da;
      FUN_004fe47e();
      local_8._0_1_ = 1;
      if (local_18 != (undefined *)0x0) {
        pcStack_70 = (char *)0x5160ea;
        FUN_0040127a();
      }
      uStack_78 = *param_1_00;
      pcStack_70 = local_11;
      puStack_74 = local_5c;
      uStack_7c = 0x5160fa;
      FUN_00ba4871();
      cVar1 = local_11[0];
      if (local_11[0] == '\0') {
        pcStack_70 = (char *)0xd946d5b6;
        puStack_74 = (undefined *)0x516110;
        FUN_00b940e0();
      }
    }
    local_8 = (uint)local_8._1_3_ << 8;
    pcStack_70 = (char *)0x51611d;
    FUN_00b73a90();
  }
  local_8 = 0xffffffff;
  pcStack_70 = (char *)0x516088;
  FUN_00507e58();
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00516122(undefined4 *param_1,int param_2)

{
  char cVar1;
  undefined auStack_48 [28];
  undefined4 uStack_2c;
  undefined *local_18;
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 1;
  *param_1 = 0;
  param_1[1] = 0;
  local_14 = 1;
  if ((-(uint)(param_2 != 0) & 0x7a491c) != 0) {
    local_18 = auStack_48;
    FUN_00672a11();
    cVar1 = FUN_0051605d();
    if (cVar1 == '\0') {
      uStack_2c = 0x516177;
      FUN_0074ca40();
    }
  }
  local_8 = local_8 & 0xffffff00;
  uStack_2c = 0x516183;
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_0051618b(undefined4 param_1,int param_2)

{
  char cVar1;
  int *piVar2;
  bool bVar3;
  undefined4 local_d8 [4];
  undefined *puStack_c8;
  undefined4 *puStack_c4;
  undefined *puStack_c0;
  undefined *puStack_bc;
  undefined local_a8 [40];
  undefined local_80 [8];
  undefined4 local_78;
  undefined4 local_74;
  undefined **local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x98;
  local_8 = 0;
  puStack_bc = (undefined *)0x200;
  puStack_c0 = local_80;
  puStack_c4 = (undefined4 *)0x5161ac;
  FUN_00b74200();
  local_8._0_1_ = 1;
  bVar3 = (-(uint)(param_2 != 0) & 0x7a491c) != 0;
  if (bVar3) {
    local_18 = (undefined **)local_d8;
    FUN_00672a11();
    piVar2 = (int *)FUN_00ba6d80(local_a8);
    local_8._0_1_ = 2;
    local_d8[0] = 0;
    local_18 = (undefined **)local_d8;
    cVar1 = (**(code **)(*piVar2 + 4))(local_80);
    puStack_bc = local_a8;
    local_8._0_1_ = 1;
    puStack_c0 = (undefined *)0x516213;
    FUN_0046aa8b();
    if (cVar1 != '\0') {
      local_78 = 0;
      local_74 = 0;
      puStack_bc = (undefined *)0x51623d;
      puStack_c4 = (undefined4 *)FUN_00b93e40();
      local_18 = &puStack_c0;
      local_8 = CONCAT31(local_8._1_3_,3);
      puStack_c0 = (undefined *)*puStack_c4;
      puStack_c4 = puStack_c4 + 1;
                    // WARNING: Subroutine does not return
      puStack_c8 = &UNK_00516258;
      FUN_0043c023();
    }
    puStack_bc = (undefined *)0x102a2ffb;
    bVar3 = false;
  }
  else {
    puStack_bc = (undefined *)0xc96b7e51;
  }
  puStack_c0 = (undefined *)0x516226;
  FUN_00b940e0();
  local_8 = (uint)local_8._1_3_ << 8;
  puStack_bc = (undefined *)0x5162cd;
  FUN_00b73a90();
  local_8 = 0xffffffff;
  puStack_bc = (undefined *)0x5162d9;
  FUN_00507e58();
  return bVar3;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005162e1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W560DA063::WE02CA88E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00516327(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0051633e(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x1c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00ba4764();
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_005162e1(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



undefined4 FUN_005163a4(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_010fc6d8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_010fc8e0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_010fcae8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_010fccf0,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_010fcef8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_010fd100,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_010fd308,0x200,param_2), cVar1 != '\0')))))) &&
     (cVar1 = (*param_1)(&DAT_010fd510,0xa4,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00516431(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_010fd5b8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010fd7c0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_010fd9c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010fdbd0,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_010fddd8,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_010fdfe0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_010fe1e8,0x200,param_2), cVar1 != '\0')))))) &&
      (cVar1 = (*param_1)(&DAT_010fe3f0,0x200,param_2), cVar1 != '\0')) &&
     ((((((cVar1 = (*param_1)(&DAT_010fe5f8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010fe800,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_010fea08,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_010fec10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_010fee18,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_010ff020,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_010ff228,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_010ff430,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_010ff638,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_010ff840,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_010ffa48,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_010ffc50,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_010ffe58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01100060,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_01100268,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01100470,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01100678,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01100880,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_01100a88,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01100c90,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01100e98,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_011010a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_011012a8,0x200,param_2), cVar1 != '\0')))))))) &&
      (((cVar1 = (*param_1)(&DAT_011014b0,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_011016b8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_011018c0,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_01101ac8,0x82,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00516685(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_01101b50,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01101d58,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01101f60,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01102168,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_01102370,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01102578,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01102780,0x200,param_2), cVar1 != '\0')))))) &&
      (cVar1 = (*param_1)(&DAT_01102988,0x200,param_2), cVar1 != '\0')) &&
     ((((((cVar1 = (*param_1)(&DAT_01102b90,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01102d98,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01102fa0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_011031a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_011033b0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_011035b8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_011037c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_011039c8,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_01103bd0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01103dd8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01103fe0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_011041e8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_011043f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_011045f8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_01104800,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01104a08,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01104c10,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01104e18,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_01105020,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01105228,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01105430,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01105638,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01105840,0x200,param_2), cVar1 != '\0')))))))) &&
      (((cVar1 = (*param_1)(&DAT_01105a48,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01105c50,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01105e58,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_01106060,0x83,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005168d9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_011060e8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_011062f0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_011064f8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01106700,0x200,param_2), cVar1 != '\0')))) &&
      ((cVar1 = (*param_1)(&DAT_01106908,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_01106b10,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01106d18,0x200,param_2), cVar1 != '\0')))))) &&
     ((cVar1 = (*param_1)(&DAT_01106f20,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_01107128,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_01107330,0x13e,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00516984(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_01107470,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01107678,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_01107880,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_01107a88,0x200,param_2), cVar1 != '\0')))) &&
     ((cVar1 = (*param_1)(&DAT_01107c90,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_01107e98,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_011080a0,0x197,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00516a04(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_01109a98,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01109ca0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01109ea8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0110a0b0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_0110a2b8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0110a4c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0110a6c8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_0110a8d0,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_0110aad8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0110ace0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0110aee8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_0110b0f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0110b2f8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0110b500,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0110b708,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0110b910,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_0110bb18,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_0110bd20,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0110bf28,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0110c130,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_0110c338,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0110c540,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0110c748,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_0110c950,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0110cb58,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_0110cd60,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_0110cf68,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0110d170,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0110d378,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0110d580,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0110d788,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_0110d990,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_0110db98,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0110dda0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_0110dfa8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_0110e1b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0110e3b8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0110e5c0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_0110e7c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0110e9d0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0110ebd8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0110ede0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0110efe8,0x200,param_2), cVar1 != '\0')))))))))) &&
          (cVar1 = (*param_1)(&DAT_0110f1f0,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_0110f3f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0110f600,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0110f808,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0110fa10,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0110fc18,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_0110fe20,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01110028,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01110230,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_01110438,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_01110640,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01110848,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01110a50,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01110c58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01110e60,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01111068,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01111270,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01111478,0x79,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00516e0f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_011114f8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01111700,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_01111908,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01111b10,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01111d18,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01111f20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01112128,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_01112330,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_01112538,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01112740,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01112948,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01112b50,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01112d58,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_01112f60,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01113168,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01113370,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01113578,0x200,param_2), cVar1 != '\0')) &&
        (((((((cVar1 = (*param_1)(&DAT_01113780,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01113988,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01113b90,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01113d98,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01113fa0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_011141a8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_011143b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_011145b8,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_011147c0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_011149c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01114bd0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01114dd8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_01114fe0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_011151e8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_011153f0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_011155f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01115800,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_01115a08,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_01115c10,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01115e18,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01116020,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01116228,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01116430,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01116638,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01116840,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01116a48,0x200,param_2), cVar1 != '\0')))))))) &&
      (((cVar1 = (*param_1)(&DAT_01116c50,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01116e58,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01117060,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01117268,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_01117470,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01117678,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01117880,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01117a88,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01117c90,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01117e98,0x200,param_2), cVar1 != '\0' &&
         ((((((cVar1 = (*param_1)(&DAT_011180a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_011182a8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_011184b0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_011186b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_011188c0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01118ac8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01118cd0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01118ed8,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_011190e0,0x200,param_2), cVar1 != '\0')) &&
          ((((((cVar1 = (*param_1)(&DAT_011192e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_011194f0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_011196f8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01119900,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01119b08,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_01119d10,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01119f18,0x169,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005172a5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_0111a088,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_0111a290,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_01111908,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01111b10,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01111d18,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01111f20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0111a498,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_0111a6a0,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_0111a8a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0111aab0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01112948,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01112b50,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01112d58,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_0111acb8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0111aec0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0111b0c8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0111b2d0,0x200,param_2), cVar1 != '\0')) &&
        (((((((cVar1 = (*param_1)(&DAT_0111b4d8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0111b6e0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0111b8e8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0111baf0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0111bcf8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_0111bf00,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_0111c108,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0111c310,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_0111c518,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0111c720,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0111c928,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0111cb30,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_0111cd38,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0111cf40,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0111d148,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_0111d350,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0111d558,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_0111d760,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_0111d968,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0111db70,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0111dd78,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0111df80,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0111e188,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0111e390,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_0111e598,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0111e7a0,0x200,param_2), cVar1 != '\0')))))))) &&
      (((cVar1 = (*param_1)(&DAT_0111e9a8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_0111ebb0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0111edb8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0111efc0,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_0111f1c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0111f3d0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0111f5d8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0111f7e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0111f9e8,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_0111fbf0,0x200,param_2), cVar1 != '\0' &&
         ((((((cVar1 = (*param_1)(&DAT_0111fdf8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01120000,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01120208,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01120410,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01120618,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01120820,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01120a28,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01120c30,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_01120e38,0x200,param_2), cVar1 != '\0')) &&
          ((((((cVar1 = (*param_1)(&DAT_01121040,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01121248,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01121450,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01121658,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01121860,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_01121a68,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01121c70,0x170,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0051773b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_01124278,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01124480,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_01124688,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01124890,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01124a98,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01124ca0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01124ea8,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_011250b0,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_011252b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_011254c0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_011256c8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_011258d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01125ad8,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_01125ce0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_01125ee8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_011260f0,0x200,param_2), cVar1 != '\0')))) &&
      (((cVar1 = (*param_1)(&DAT_011262f8,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_01126500,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01126708,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01126910,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01126b18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01126d20,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01126f28,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01127130,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01127338,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_01127540,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_01127748,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01127950,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01127b58,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_01127d60,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01127f68,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01128170,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_01128378,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01128580,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_01128788,0x200,param_2), cVar1 != '\0')) &&
           ((((((cVar1 = (*param_1)(&DAT_01128990,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01128b98,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01128da0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01128fa8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_011291b0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_011293b8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_011295c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_011297c8,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_011299d0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01129bd8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01129de0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01129fe8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_0112a1f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0112a3f8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0112a600,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_0112a808,0x10d,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00517a9f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_0112a918,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_0112ab20,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_0112ad28,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0112af30,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0112b138,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_0112b340,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0112b548,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_0112b750,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_0112b958,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0112bb60,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0112bd68,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0112bf70,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0112c178,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_0112c380,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_0112c588,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_0112c790,0x200,param_2), cVar1 != '\0')))) &&
      (((cVar1 = (*param_1)(&DAT_0112c998,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_0112cba0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0112cda8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0112cfb0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_0112d1b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0112d3c0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0112d5c8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_0112d7d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0112d9d8,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_0112dbe0,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_0112dde8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0112dff0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0112e1f8,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_0112e400,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0112e608,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0112e810,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_0112ea18,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0112ec20,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_0112ee28,0x200,param_2), cVar1 != '\0')) &&
           ((((((cVar1 = (*param_1)(&DAT_0112f030,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0112f238,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0112f440,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0112f648,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0112f850,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_0112fa58,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0112fc60,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0112fe68,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_01130070,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01130278,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01130480,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01130688,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01130890,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01130a98,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01130ca0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_01130ea8,0x6c,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00517e00(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_01131b48,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01131d50,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_01131f58,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01132160,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01132368,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01132570,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01132778,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_01132980,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_01132b88,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01132d90,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01132f98,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_011331a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_011333a8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_011335b0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_011337b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_011339c0,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_01133bc8,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_01133dd0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01133fd8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_011341e0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_011343e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_011345f0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_011347f8,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_01134a00,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01134c08,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01134e10,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01135018,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01135220,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01135428,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_01135630,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01135838,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01135a40,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_01135c48,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01135e50,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01136058,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01136260,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01136468,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01136670,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_01136878,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01136a80,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_01136c88,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01136e90,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01137098,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_011372a0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_011374a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_011376b0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_011378b8,0x138,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00518120(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_011379f8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01130f18,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01131120,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01131328,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_01131530,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01131738,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01131940,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01137c00,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01137e08,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01138010,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01138218,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_01138420,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01138628,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_01138830,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01138a38,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01138c40,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_01138e48,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01139050,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01139258,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01139460,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01139668,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01139870,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_01139a78,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01139c80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01139e88,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0113a090,0x200,param_2), cVar1 != '\0')))) &&
       ((((((cVar1 = (*param_1)(&DAT_0113a298,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0113a4a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0113a6a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0113a8b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0113aab8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0113acc0,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_0113aec8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0113b0d0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0113b2d8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0113b4e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0113b6e8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0113b8f0,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_0113baf8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0113bd00,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_0113bf08,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_0113c110,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0113c318,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0113c520,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_0113c728,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0113c930,0x14e,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0051842f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_0113ca80,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01131d50,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01131f58,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01132160,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_01132368,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01132570,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01132778,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01132980,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01132b88,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01132d90,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0113cc88,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_0113ce90,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_0113d098,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_0113d2a0,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_0113d4a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0113d6b0,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_0113d8b8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_0113dac0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0113dcc8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0113ded0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0113e0d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0113e2e0,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_0113e4e8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0113e6f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0113e8f8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0113eb00,0x200,param_2), cVar1 != '\0')))) &&
       ((((((cVar1 = (*param_1)(&DAT_0113ed08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0113ef10,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0113f118,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0113f320,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0113f528,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0113f730,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_0113f938,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0113fb40,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0113fd48,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0113ff50,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01140158,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01140360,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01140568,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01140770,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_01140978,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_01140b80,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01140d88,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01140f90,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01141198,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_011413a0,0xff,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0051873e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_011414a0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01124480,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_01124688,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01124890,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01124a98,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01124ca0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01124ea8,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_011416a8,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_011418b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01141ab8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01141cc0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01141ec8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_011420d0,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_011422d8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_011424e0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_011426e8,0x200,param_2), cVar1 != '\0')))) &&
      (((cVar1 = (*param_1)(&DAT_011428f0,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_01142af8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01142d00,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01142f08,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01143110,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01143318,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01143520,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01143728,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01143930,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01143b38,0x200,param_2), cVar1 != '\0' &&
         ((((((cVar1 = (*param_1)(&DAT_01143d40,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01143f48,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01144150,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01144358,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01144560,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01144768,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01144970,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01144b78,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_01144d80,0x200,param_2), cVar1 != '\0')) &&
          ((((((cVar1 = (*param_1)(&DAT_01144f88,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01145190,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01145398,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_011455a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_011457a8,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_011459b0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01145bb8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01145dc0,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_01145fc8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_011461d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_011463d8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_011465e0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_011467e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_011469f0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01146bf8,0x150,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00518a91(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_01146d50,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01146f58,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01147160,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01147368,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01147570,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01147778,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01147980,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_01147b88,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_01147d90,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01147f98,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_011481a0,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_011483a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_011485b0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_011487b8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_011489c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01148bc8,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_01148dd0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01148fd8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_011491e0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_011493e8,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_011495f0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_011497f8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01149a00,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01149c08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01149e10,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0114a018,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_0114a220,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0114a428,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0114a630,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0114a838,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0114aa40,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0114ac48,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_0114ae50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0114b058,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0114b260,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0114b468,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0114b670,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0114b878,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_0114ba80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0114bc88,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0114be90,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_0114c098,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0114c2a0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0114c4a8,0x166,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00518d7e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_0114c610,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0112ab20,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0112ad28,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0112af30,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0112b138,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_0112b340,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0112b548,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_0112b750,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_0112b958,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0112bb60,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0114c818,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_0114ca20,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0114cc28,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0114ce30,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_0114d038,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0114d240,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_0114d448,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_0114d650,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0114d858,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0114da60,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_0114dc68,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0114de70,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_0114e078,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0114e280,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0114e488,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0114e690,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_0114e898,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0114eaa0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0114eca8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0114eeb0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0114f0b8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0114f2c0,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_0114f4c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0114f6d0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0114f8d8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0114fae0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0114fce8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0114fef0,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_011500f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01150300,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01150508,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_01150710,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01150918,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01150b20,0x1bc,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0051906b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_012c5818,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_012c5a20,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_012c5c28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012c5e30,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_012c6038,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_012c6240,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012c6448,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_012c6650,0x200,param_2), cVar1 != '\0')))) &&
        (((((cVar1 = (*param_1)(&DAT_012c6858,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012c6a60,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_012c6c68,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_012c6e70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012c7078,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_012c7280,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_012c7488,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012c7690,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_012c7898,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_012c7aa0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_012c7ca8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_012c7eb0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_012c80b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012c82c0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_012c84c8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_012c86d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012c88d8,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_012c8ae0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_012c8ce8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012c8ef0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_012c90f8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_012c9300,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012c9508,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_012c9710,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_012c9918,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012c9b20,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_012c9d28,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_012c9f30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012ca138,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_012ca340,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_012ca548,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_012ca750,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_012ca958,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_012cab60,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012cad68,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_012caf70,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_012cb178,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012cb380,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_012cb588,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_012cb790,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012cb998,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_012cbba0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_012cbda8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012cbfb0,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_012cc1b8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_012cc3c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012cc5c8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_012cc7d0,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_012cc9d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012ccbe0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_012ccde8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_012ccff0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012cd1f8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_012cd400,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_012cd608,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012cd810,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_012cda18,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_012cdc20,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_012cde28,0x200,param_2), cVar1 != '\0')))))))) &&
     (((cVar1 = (*param_1)(&DAT_012ce030,0x200,param_2), cVar1 != '\0' &&
       ((((cVar1 = (*param_1)(&DAT_012ce238,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012ce440,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_012ce648,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_012ce850,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012cea58,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_012cec60,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_012cee68,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012cf070,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_012cf278,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_012cf480,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012cf688,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_012cf890,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_012cfa98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012cfca0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_012cfea8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_012d00b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012d02b8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_012d04c0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_012d06c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_012d08d0,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_012d0ad8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_012d0ce0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012d0ee8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_012d10f0,0x77,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00519685(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_012d1168,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0111a290,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_01111908,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01111b10,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01111d18,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01111f20,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012d1370,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_011a6d68,0x200,param_2), cVar1 != '\0')))) &&
        (((((cVar1 = (*param_1)(&DAT_012d1578,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012d1780,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_012d1988,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_012d1b90,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012d1d98,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_012d1fa0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_012d21a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012d23b0,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_012d25b8,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_012d27c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_012d29c8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_012d2bd0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_012d2dd8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012d2fe0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_012d31e8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_012d33f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012d35f8,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_012d3800,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_012d3a08,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012d3c10,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_012d3e18,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_012d4020,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012d4228,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_012d4430,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_012d4638,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012d4840,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_012d4a48,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_012d4c50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012d4e58,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_012d5060,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_012d5268,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_012d5470,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_012d5678,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_012d5880,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012d5a88,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_012d5c90,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_012d5e98,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012d60a0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_012d62a8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_012d64b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012d66b8,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_012d68c0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_012d6ac8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012d6cd0,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_012d6ed8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_012d70e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012d72e8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_012d74f0,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_012d76f8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012d7900,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_012d7b08,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_012d7d10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012d7f18,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_012d8120,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_012d8328,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012d8530,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_012d8738,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_012d8940,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_012d8b48,0x200,param_2), cVar1 != '\0')))))))) &&
     (((cVar1 = (*param_1)(&DAT_012d8d50,0x200,param_2), cVar1 != '\0' &&
       ((((cVar1 = (*param_1)(&DAT_012d8f58,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012d9160,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_012d9368,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_012d9570,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012d9778,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_012d9980,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_012d9b88,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012d9d90,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_012d9f98,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_012da1a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012da3a8,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_012da5b0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_012da7b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012da9c0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_012dabc8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_012dadd0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012dafd8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_012db1e0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_012db3e8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_012db5f0,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_012db7f8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_012dba00,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012dbc08,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_012dbe10,0x72,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00519c9f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_012dbe88,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_012dc090,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_012dc298,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012dc4a0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_012dc6a8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_012dc8b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012dcab8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_012dccc0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_012dcec8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01109890,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_012dd0d0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_012dd2d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012dd4e0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_012dd6e8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_012dd8f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012ddaf8,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (cVar1 = (*param_1)(&DAT_012ddd00,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_012ddf08,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_012de110,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_012de318,0x200,param_2), cVar1 != '\0')))) &&
      (((((cVar1 = (*param_1)(&DAT_012de520,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012de728,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_012de930,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_012deb38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012ded40,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_012def48,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_012df150,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012df358,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_012df560,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_012df768,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012df970,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_012dfb78,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_012dfd80,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012dff88,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_012e0190,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_012e0398,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012e05a0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_012e07a8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_012e09b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012e0bb8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_012e0dc0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_012e0fc8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_012e11d0,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_012e13d8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_012e15e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012e17e8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_012e19f0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_012e1bf8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_012e1e00,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_012e2008,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_012e2210,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012e2418,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_012e2620,0x200,param_2), cVar1 != '\0')) &&
        (((((((cVar1 = (*param_1)(&DAT_012e2828,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012e2a30,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_012e2c38,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_012e2e40,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012e3048,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_012e3250,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_012e3458,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012e3660,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_012e3868,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_012e3a70,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012e3c78,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_012e3e80,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_012e4088,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012e4290,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_012e4498,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_012e46a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012e48a8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_012e4ab0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_012e4cb8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_012e4ec0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_012e50c8,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_012e52d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012e54d8,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_012e56e0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_012e58e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012e5af0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_012e5cf8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_012e5f00,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012e6108,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_012e6310,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_012e6518,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012e6720,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_012e6928,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_012e6b30,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_012e6d38,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_012e6f40,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_012e7148,0x1ec,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0051a29a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_012e7338,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_012e7540,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_012e7748,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012e7950,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_012e7b58,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_012e7d60,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012e7f68,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_012e8170,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_012e8378,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012e8580,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_012e8788,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_012e8990,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012e8b98,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_012e8da0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_012e8fa8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012e91b0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_012e93b8,0x200,param_2), cVar1 != '\0')))) &&
        ((((((cVar1 = (*param_1)(&DAT_012e95c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012e97c8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_012e99d0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_012e9bd8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012e9de0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_012e9fe8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_012ea1f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012ea3f8,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_012ea600,0x200,param_2), cVar1 != '\0')))))) &&
      (((((cVar1 = (*param_1)(&DAT_012ea808,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012eaa10,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_012eac18,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_012eae20,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012eb028,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_012eb230,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_012eb438,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012eb640,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_012eb848,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_012eba50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012ebc58,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_012ebe60,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_012ec068,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012ec270,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_012ec478,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_012ec680,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012ec888,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_012eca90,0x200,param_2), cVar1 != '\0' &&
         (((((((cVar1 = (*param_1)(&DAT_012ecc98,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_012ecea0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_012ed0a8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_012ed2b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012ed4b8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_012ed6c0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_012ed8c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012edad0,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_012edcd8,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_012edee0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_012ee0e8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_012ee2f0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_012ee4f8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_012ee700,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_012ee908,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_012eeb10,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_012eed18,0x200,param_2), cVar1 != '\0')))))))) &&
             (cVar1 = (*param_1)(&DAT_012eef20,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_012ef128,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012ef330,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_012ef538,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_012ef740,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_012ef948,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_012efb50,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_012efd58,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012eff60,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_012f0168,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_012f0370,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012f0578,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_012f0780,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_012f0984,0x23,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0051a793(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_012f09a8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_012f0bb0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_012f0db8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_012f0fc0,0x200,param_2), cVar1 != '\0')))) &&
      ((((((((cVar1 = (*param_1)(&DAT_012f11c8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_012f13d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012f15d8,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_012f17e0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_012f19e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012f1bf0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_012f1df8,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_012f2000,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012f2208,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_012f2410,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_012f2618,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012f2820,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_012f2a28,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_012f2c30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012f2e38,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_012f3040,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_012f3248,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012f3450,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_012f3658,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_012f3860,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012f3a68,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_012f3c70,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_012f3e78,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012f4080,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_012f4288,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_012f4490,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012f4698,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_012f48a0,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_012f4aa8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012f4cb0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_012f4eb8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_012f50c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012f52c8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_012f54d0,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_012f56d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_012f58e0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_012f5ae8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_012f5cf0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012f5ef8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_012f6100,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_012f6308,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012f6510,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_012f6718,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_012f6920,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_012f6b28,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((cVar1 = (*param_1)(&DAT_012f6d30,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_012f6f38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012f7140,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_012f7348,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_012f7550,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_012f7758,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_012f7960,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_012f7b68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_012f7d70,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_012f7f78,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_012f8180,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_012f8388,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_012f8590,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_012f8798,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_012f89a0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_012f8ba8,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_012f8db0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_012f8fb8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_012f91c0,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_012f93c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_012f95d0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_012f97d8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_012f99e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_012f9be8,0x112,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}


/*
Unable to decompile 'FUN_0051ac71'
Cause: Exception while decompiling 0051ac71: process: timeout

*/

/*
Unable to decompile 'FUN_0051d8ce'
Cause: Exception while decompiling 0051d8ce: process: timeout

*/


undefined4 FUN_00520048(void)

{
  char cVar1;
  code *unaff_EDI;
  
  cVar1 = (*unaff_EDI)(&DAT_01399d60);
  if (((((cVar1 != '\0') && (cVar1 = (*unaff_EDI)(&DAT_01399f68), cVar1 != '\0')) &&
       (cVar1 = (*unaff_EDI)(&DAT_0139a170), cVar1 != '\0')) &&
      (((cVar1 = (*unaff_EDI)(&DAT_0139a378), cVar1 != '\0' &&
        (cVar1 = (*unaff_EDI)(&DAT_0139a580), cVar1 != '\0')) &&
       ((cVar1 = (*unaff_EDI)(&DAT_0139a788), cVar1 != '\0' &&
        ((cVar1 = (*unaff_EDI)(&DAT_0139a990), cVar1 != '\0' &&
         (cVar1 = (*unaff_EDI)(&DAT_0139ab98), cVar1 != '\0')))))))) &&
     ((((cVar1 = (*unaff_EDI)(&DAT_0139ada0), cVar1 != '\0' &&
        (((cVar1 = (*unaff_EDI)(&DAT_0139afa8), cVar1 != '\0' &&
          (cVar1 = (*unaff_EDI)(&DAT_0139b1b0), cVar1 != '\0')) &&
         (cVar1 = (*unaff_EDI)(&DAT_0139b3b8), cVar1 != '\0')))) &&
       (((((cVar1 = (*unaff_EDI)(&DAT_0139b5c0), cVar1 != '\0' &&
           (cVar1 = (*unaff_EDI)(&DAT_0139b7c8), cVar1 != '\0')) &&
          (((cVar1 = (*unaff_EDI)(&DAT_0139b9d0), cVar1 != '\0' &&
            ((cVar1 = (*unaff_EDI)(&DAT_0139bbd8), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_0139bde0), cVar1 != '\0')))) &&
           (cVar1 = (*unaff_EDI)(&DAT_0139bfe8), cVar1 != '\0')))) &&
         ((((((cVar1 = (*unaff_EDI)(&DAT_0139c1f0), cVar1 != '\0' &&
              (cVar1 = (*unaff_EDI)(&DAT_0139c3f8), cVar1 != '\0')) &&
             (cVar1 = (*unaff_EDI)(&DAT_0139c600), cVar1 != '\0')) &&
            ((cVar1 = (*unaff_EDI)(&DAT_0139c808), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_0139ca10), cVar1 != '\0')))) &&
           ((cVar1 = (*unaff_EDI)(&DAT_0139cc18), cVar1 != '\0' &&
            ((cVar1 = (*unaff_EDI)(&DAT_0139ce20), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_0139d028), cVar1 != '\0')))))) &&
          (cVar1 = (*unaff_EDI)(&DAT_0139d230), cVar1 != '\0')))) &&
        ((((((cVar1 = (*unaff_EDI)(&DAT_0139d438), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_0139d640), cVar1 != '\0')) &&
            (cVar1 = (*unaff_EDI)(&DAT_0139d848), cVar1 != '\0')) &&
           (((cVar1 = (*unaff_EDI)(&DAT_0139da50), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_0139dc58), cVar1 != '\0')) &&
            ((cVar1 = (*unaff_EDI)(&DAT_0139de60), cVar1 != '\0' &&
             ((cVar1 = (*unaff_EDI)(&DAT_0139e068), cVar1 != '\0' &&
              (cVar1 = (*unaff_EDI)(&DAT_0139e270), cVar1 != '\0')))))))) &&
          (cVar1 = (*unaff_EDI)(&DAT_0139e478), cVar1 != '\0')) &&
         (((cVar1 = (*unaff_EDI)(&DAT_0139e680), cVar1 != '\0' &&
           (cVar1 = (*unaff_EDI)(&DAT_0139e888), cVar1 != '\0')) &&
          (cVar1 = (*unaff_EDI)(&DAT_0139ea90), cVar1 != '\0')))))))) &&
      (((cVar1 = (*unaff_EDI)(&DAT_0139ec98), cVar1 != '\0' &&
        (cVar1 = (*unaff_EDI)(&DAT_0139eea0), cVar1 != '\0')) &&
       (((cVar1 = (*unaff_EDI)(&DAT_0139f0a8), cVar1 != '\0' &&
         ((cVar1 = (*unaff_EDI)(&DAT_0139f2b0), cVar1 != '\0' &&
          (cVar1 = (*unaff_EDI)(&DAT_0139f4b8), cVar1 != '\0')))) &&
        ((cVar1 = (*unaff_EDI)(&DAT_0139f6c0), cVar1 != '\0' &&
         ((((cVar1 = (*unaff_EDI)(&DAT_0139f8c8), cVar1 != '\0' &&
            (cVar1 = (*unaff_EDI)(&DAT_0139fad0), cVar1 != '\0')) &&
           (cVar1 = (*unaff_EDI)(&DAT_0139fcd8), cVar1 != '\0')) &&
          (cVar1 = (*unaff_EDI)(&DAT_0139fee0,0x93), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}


/*
Unable to decompile 'FUN_00520371'
Cause: Exception while decompiling 00520371: process: timeout

*/

/*
Unable to decompile 'FUN_00522e14'
Cause: Exception while decompiling 00522e14: process: timeout

*/

/*
Unable to decompile 'FUN_00525b1d'
Cause: Exception while decompiling 00525b1d: process: timeout

*/

/*
Unable to decompile 'FUN_00528835'
Cause: Exception while decompiling 00528835: process: timeout

*/

/*
Unable to decompile 'FUN_0052b54d'
Cause: Exception while decompiling 0052b54d: process: timeout

*/

/*
Unable to decompile 'FUN_0052e254'
Cause: Exception while decompiling 0052e254: process: timeout

*/

/*
Unable to decompile 'FUN_00530f5d'
Cause: Exception while decompiling 00530f5d: process: timeout

*/

/*
Unable to decompile 'FUN_00533c75'
Cause: Exception while decompiling 00533c75: process: timeout

*/

/*
Unable to decompile 'FUN_00536eee'
Cause: Exception while decompiling 00536eee: process: timeout

*/

/*
Unable to decompile 'FUN_0053a17c'
Cause: Exception while decompiling 0053a17c: process: timeout

*/

/*
Unable to decompile 'FUN_0053d406'
Cause: Exception while decompiling 0053d406: process: timeout

*/


undefined4 FUN_00540048(void)

{
  char cVar1;
  code *unaff_EDI;
  
  cVar1 = (*unaff_EDI)(&DAT_011fa5f8);
  if (((((((((cVar1 != '\0') && (cVar1 = (*unaff_EDI)(&DAT_011fa800), cVar1 != '\0')) &&
           (cVar1 = (*unaff_EDI)(&DAT_011faa08), cVar1 != '\0')) &&
          (((((cVar1 = (*unaff_EDI)(&DAT_011fac10), cVar1 != '\0' &&
              (cVar1 = (*unaff_EDI)(&DAT_011fae18), cVar1 != '\0')) &&
             ((cVar1 = (*unaff_EDI)(&DAT_011fb020), cVar1 != '\0' &&
              ((cVar1 = (*unaff_EDI)(&DAT_011fb228), cVar1 != '\0' &&
               (cVar1 = (*unaff_EDI)(&DAT_011fb430), cVar1 != '\0')))))) &&
            (cVar1 = (*unaff_EDI)(&DAT_011fb638), cVar1 != '\0')) &&
           ((((cVar1 = (*unaff_EDI)(&DAT_011fb840), cVar1 != '\0' &&
              (cVar1 = (*unaff_EDI)(&DAT_011fba48), cVar1 != '\0')) &&
             (cVar1 = (*unaff_EDI)(&DAT_011fbc50), cVar1 != '\0')) &&
            ((cVar1 = (*unaff_EDI)(&DAT_011fbe58), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_011fc060), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*unaff_EDI)(&DAT_011fc268), cVar1 != '\0' &&
            ((cVar1 = (*unaff_EDI)(&DAT_011fc470), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_011fc678), cVar1 != '\0')))) &&
           (cVar1 = (*unaff_EDI)(&DAT_011fc880), cVar1 != '\0')) &&
          (((((cVar1 = (*unaff_EDI)(&DAT_011fca88), cVar1 != '\0' &&
              (cVar1 = (*unaff_EDI)(&DAT_011fcc90), cVar1 != '\0')) &&
             (cVar1 = (*unaff_EDI)(&DAT_011fce98), cVar1 != '\0')) &&
            ((cVar1 = (*unaff_EDI)(&DAT_011fd0a0), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_011fd2a8), cVar1 != '\0')))) &&
           ((cVar1 = (*unaff_EDI)(&DAT_011fd4b0), cVar1 != '\0' &&
            ((cVar1 = (*unaff_EDI)(&DAT_011fd6b8), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_011fd8c0), cVar1 != '\0')))))))))) &&
        ((((cVar1 = (*unaff_EDI)(&DAT_011fdac8), cVar1 != '\0' &&
           (((cVar1 = (*unaff_EDI)(&DAT_011fdcd0), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_011fded8), cVar1 != '\0')) &&
            (cVar1 = (*unaff_EDI)(&DAT_011fe0e0), cVar1 != '\0')))) &&
          (((cVar1 = (*unaff_EDI)(&DAT_011fe2e8), cVar1 != '\0' &&
            (cVar1 = (*unaff_EDI)(&DAT_011fe4f0), cVar1 != '\0')) &&
           ((cVar1 = (*unaff_EDI)(&DAT_011fe6f8), cVar1 != '\0' &&
            ((cVar1 = (*unaff_EDI)(&DAT_011fe900), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_011feb08), cVar1 != '\0')))))))) &&
         (cVar1 = (*unaff_EDI)(&DAT_011fed10), cVar1 != '\0')))) &&
       ((((((cVar1 = (*unaff_EDI)(&DAT_011fef18), cVar1 != '\0' &&
            (cVar1 = (*unaff_EDI)(&DAT_011ff120), cVar1 != '\0')) &&
           (cVar1 = (*unaff_EDI)(&DAT_011ff328), cVar1 != '\0')) &&
          ((cVar1 = (*unaff_EDI)(&DAT_011ff530), cVar1 != '\0' &&
           (cVar1 = (*unaff_EDI)(&DAT_011ff738), cVar1 != '\0')))) &&
         ((cVar1 = (*unaff_EDI)(&DAT_011ff940), cVar1 != '\0' &&
          ((cVar1 = (*unaff_EDI)(&DAT_011ffb48), cVar1 != '\0' &&
           (cVar1 = (*unaff_EDI)(&DAT_011ffd50), cVar1 != '\0')))))) &&
        ((cVar1 = (*unaff_EDI)(&DAT_011fff58), cVar1 != '\0' &&
         (((cVar1 = (*unaff_EDI)(&DAT_01200160), cVar1 != '\0' &&
           (cVar1 = (*unaff_EDI)(&DAT_01200368), cVar1 != '\0')) &&
          (cVar1 = (*unaff_EDI)(&DAT_01200570), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*unaff_EDI)(&DAT_01200778), cVar1 != '\0' &&
         (cVar1 = (*unaff_EDI)(&DAT_01200980), cVar1 != '\0')) &&
        ((cVar1 = (*unaff_EDI)(&DAT_01200b88), cVar1 != '\0' &&
         ((cVar1 = (*unaff_EDI)(&DAT_01200d90), cVar1 != '\0' &&
          (cVar1 = (*unaff_EDI)(&DAT_01200f98), cVar1 != '\0')))))) &&
       ((cVar1 = (*unaff_EDI)(&DAT_012011a0), cVar1 != '\0' &&
        (((((cVar1 = (*unaff_EDI)(&DAT_012013a8), cVar1 != '\0' &&
            (cVar1 = (*unaff_EDI)(&DAT_012015b0), cVar1 != '\0')) &&
           (cVar1 = (*unaff_EDI)(&DAT_012017b8), cVar1 != '\0')) &&
          (((cVar1 = (*unaff_EDI)(&DAT_012019c0), cVar1 != '\0' &&
            (cVar1 = (*unaff_EDI)(&DAT_01201bc8), cVar1 != '\0')) &&
           ((cVar1 = (*unaff_EDI)(&DAT_01201dd0), cVar1 != '\0' &&
            ((cVar1 = (*unaff_EDI)(&DAT_01201fd8), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_012021e0), cVar1 != '\0')))))))) &&
         ((cVar1 = (*unaff_EDI)(&DAT_012023e8), cVar1 != '\0' &&
          (((((cVar1 = (*unaff_EDI)(&DAT_012025f0), cVar1 != '\0' &&
              (cVar1 = (*unaff_EDI)(&DAT_012027f8), cVar1 != '\0')) &&
             (cVar1 = (*unaff_EDI)(&DAT_01202a00), cVar1 != '\0')) &&
            ((cVar1 = (*unaff_EDI)(&DAT_01202c08), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_01202e10), cVar1 != '\0')))) &&
           (cVar1 = (*unaff_EDI)(&DAT_01203018), cVar1 != '\0')))))))))))) &&
     ((((((cVar1 = (*unaff_EDI)(&DAT_01203220), cVar1 != '\0' &&
          (cVar1 = (*unaff_EDI)(&DAT_01203428), cVar1 != '\0')) &&
         ((((cVar1 = (*unaff_EDI)(&DAT_01203630), cVar1 != '\0' &&
            (((cVar1 = (*unaff_EDI)(&DAT_01203838), cVar1 != '\0' &&
              (cVar1 = (*unaff_EDI)(&DAT_01203a40), cVar1 != '\0')) &&
             (cVar1 = (*unaff_EDI)(&DAT_01203c48), cVar1 != '\0')))) &&
           (((cVar1 = (*unaff_EDI)(&DAT_01203e50), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_01204058), cVar1 != '\0')) &&
            (cVar1 = (*unaff_EDI)(&DAT_01204260), cVar1 != '\0')))) &&
          (((cVar1 = (*unaff_EDI)(&DAT_01204468), cVar1 != '\0' &&
            (cVar1 = (*unaff_EDI)(&DAT_01204670), cVar1 != '\0')) &&
           ((cVar1 = (*unaff_EDI)(&DAT_01204878), cVar1 != '\0' &&
            (((cVar1 = (*unaff_EDI)(&DAT_01204a80), cVar1 != '\0' &&
              (cVar1 = (*unaff_EDI)(&DAT_01204c88), cVar1 != '\0')) &&
             (cVar1 = (*unaff_EDI)(&DAT_01204e90), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*unaff_EDI)(&DAT_01205098), cVar1 != '\0' &&
         (cVar1 = (*unaff_EDI)(&DAT_012052a0), cVar1 != '\0')))) &&
       (cVar1 = (*unaff_EDI)(&DAT_012054a8), cVar1 != '\0')) &&
      (((cVar1 = (*unaff_EDI)(&DAT_012056b0), cVar1 != '\0' &&
        (cVar1 = (*unaff_EDI)(&DAT_012058b8), cVar1 != '\0')) &&
       ((cVar1 = (*unaff_EDI)(&DAT_01205ac0), cVar1 != '\0' &&
        ((((cVar1 = (*unaff_EDI)(&DAT_01205cc8), cVar1 != '\0' &&
           (cVar1 = (*unaff_EDI)(&DAT_01205ed0), cVar1 != '\0')) &&
          (cVar1 = (*unaff_EDI)(&DAT_012060d8), cVar1 != '\0')) &&
         ((cVar1 = (*unaff_EDI)(&DAT_012062e0), cVar1 != '\0' &&
          (cVar1 = (*unaff_EDI)(&DAT_012064e8,0x19b), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0054004e(void)

{
  char cVar1;
  code *unaff_EDI;
  
  cVar1 = (*unaff_EDI)();
  if (((((((((cVar1 != '\0') && (cVar1 = (*unaff_EDI)(&DAT_011fa800), cVar1 != '\0')) &&
           (cVar1 = (*unaff_EDI)(&DAT_011faa08), cVar1 != '\0')) &&
          (((((cVar1 = (*unaff_EDI)(&DAT_011fac10), cVar1 != '\0' &&
              (cVar1 = (*unaff_EDI)(&DAT_011fae18), cVar1 != '\0')) &&
             ((cVar1 = (*unaff_EDI)(&DAT_011fb020), cVar1 != '\0' &&
              ((cVar1 = (*unaff_EDI)(&DAT_011fb228), cVar1 != '\0' &&
               (cVar1 = (*unaff_EDI)(&DAT_011fb430), cVar1 != '\0')))))) &&
            (cVar1 = (*unaff_EDI)(&DAT_011fb638), cVar1 != '\0')) &&
           ((((cVar1 = (*unaff_EDI)(&DAT_011fb840), cVar1 != '\0' &&
              (cVar1 = (*unaff_EDI)(&DAT_011fba48), cVar1 != '\0')) &&
             (cVar1 = (*unaff_EDI)(&DAT_011fbc50), cVar1 != '\0')) &&
            ((cVar1 = (*unaff_EDI)(&DAT_011fbe58), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_011fc060), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*unaff_EDI)(&DAT_011fc268), cVar1 != '\0' &&
            ((cVar1 = (*unaff_EDI)(&DAT_011fc470), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_011fc678), cVar1 != '\0')))) &&
           (cVar1 = (*unaff_EDI)(&DAT_011fc880), cVar1 != '\0')) &&
          (((((cVar1 = (*unaff_EDI)(&DAT_011fca88), cVar1 != '\0' &&
              (cVar1 = (*unaff_EDI)(&DAT_011fcc90), cVar1 != '\0')) &&
             (cVar1 = (*unaff_EDI)(&DAT_011fce98), cVar1 != '\0')) &&
            ((cVar1 = (*unaff_EDI)(&DAT_011fd0a0), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_011fd2a8), cVar1 != '\0')))) &&
           ((cVar1 = (*unaff_EDI)(&DAT_011fd4b0), cVar1 != '\0' &&
            ((cVar1 = (*unaff_EDI)(&DAT_011fd6b8), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_011fd8c0), cVar1 != '\0')))))))))) &&
        ((((cVar1 = (*unaff_EDI)(&DAT_011fdac8), cVar1 != '\0' &&
           (((cVar1 = (*unaff_EDI)(&DAT_011fdcd0), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_011fded8), cVar1 != '\0')) &&
            (cVar1 = (*unaff_EDI)(&DAT_011fe0e0), cVar1 != '\0')))) &&
          (((cVar1 = (*unaff_EDI)(&DAT_011fe2e8), cVar1 != '\0' &&
            (cVar1 = (*unaff_EDI)(&DAT_011fe4f0), cVar1 != '\0')) &&
           ((cVar1 = (*unaff_EDI)(&DAT_011fe6f8), cVar1 != '\0' &&
            ((cVar1 = (*unaff_EDI)(&DAT_011fe900), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_011feb08), cVar1 != '\0')))))))) &&
         (cVar1 = (*unaff_EDI)(&DAT_011fed10), cVar1 != '\0')))) &&
       ((((((cVar1 = (*unaff_EDI)(&DAT_011fef18), cVar1 != '\0' &&
            (cVar1 = (*unaff_EDI)(&DAT_011ff120), cVar1 != '\0')) &&
           (cVar1 = (*unaff_EDI)(&DAT_011ff328), cVar1 != '\0')) &&
          ((cVar1 = (*unaff_EDI)(&DAT_011ff530), cVar1 != '\0' &&
           (cVar1 = (*unaff_EDI)(&DAT_011ff738), cVar1 != '\0')))) &&
         ((cVar1 = (*unaff_EDI)(&DAT_011ff940), cVar1 != '\0' &&
          ((cVar1 = (*unaff_EDI)(&DAT_011ffb48), cVar1 != '\0' &&
           (cVar1 = (*unaff_EDI)(&DAT_011ffd50), cVar1 != '\0')))))) &&
        ((cVar1 = (*unaff_EDI)(&DAT_011fff58), cVar1 != '\0' &&
         (((cVar1 = (*unaff_EDI)(&DAT_01200160), cVar1 != '\0' &&
           (cVar1 = (*unaff_EDI)(&DAT_01200368), cVar1 != '\0')) &&
          (cVar1 = (*unaff_EDI)(&DAT_01200570), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*unaff_EDI)(&DAT_01200778), cVar1 != '\0' &&
         (cVar1 = (*unaff_EDI)(&DAT_01200980), cVar1 != '\0')) &&
        ((cVar1 = (*unaff_EDI)(&DAT_01200b88), cVar1 != '\0' &&
         ((cVar1 = (*unaff_EDI)(&DAT_01200d90), cVar1 != '\0' &&
          (cVar1 = (*unaff_EDI)(&DAT_01200f98), cVar1 != '\0')))))) &&
       ((cVar1 = (*unaff_EDI)(&DAT_012011a0), cVar1 != '\0' &&
        (((((cVar1 = (*unaff_EDI)(&DAT_012013a8), cVar1 != '\0' &&
            (cVar1 = (*unaff_EDI)(&DAT_012015b0), cVar1 != '\0')) &&
           (cVar1 = (*unaff_EDI)(&DAT_012017b8), cVar1 != '\0')) &&
          (((cVar1 = (*unaff_EDI)(&DAT_012019c0), cVar1 != '\0' &&
            (cVar1 = (*unaff_EDI)(&DAT_01201bc8), cVar1 != '\0')) &&
           ((cVar1 = (*unaff_EDI)(&DAT_01201dd0), cVar1 != '\0' &&
            ((cVar1 = (*unaff_EDI)(&DAT_01201fd8), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_012021e0), cVar1 != '\0')))))))) &&
         ((cVar1 = (*unaff_EDI)(&DAT_012023e8), cVar1 != '\0' &&
          (((((cVar1 = (*unaff_EDI)(&DAT_012025f0), cVar1 != '\0' &&
              (cVar1 = (*unaff_EDI)(&DAT_012027f8), cVar1 != '\0')) &&
             (cVar1 = (*unaff_EDI)(&DAT_01202a00), cVar1 != '\0')) &&
            ((cVar1 = (*unaff_EDI)(&DAT_01202c08), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_01202e10), cVar1 != '\0')))) &&
           (cVar1 = (*unaff_EDI)(&DAT_01203018), cVar1 != '\0')))))))))))) &&
     ((((((cVar1 = (*unaff_EDI)(&DAT_01203220), cVar1 != '\0' &&
          (cVar1 = (*unaff_EDI)(&DAT_01203428), cVar1 != '\0')) &&
         ((((cVar1 = (*unaff_EDI)(&DAT_01203630), cVar1 != '\0' &&
            (((cVar1 = (*unaff_EDI)(&DAT_01203838), cVar1 != '\0' &&
              (cVar1 = (*unaff_EDI)(&DAT_01203a40), cVar1 != '\0')) &&
             (cVar1 = (*unaff_EDI)(&DAT_01203c48), cVar1 != '\0')))) &&
           (((cVar1 = (*unaff_EDI)(&DAT_01203e50), cVar1 != '\0' &&
             (cVar1 = (*unaff_EDI)(&DAT_01204058), cVar1 != '\0')) &&
            (cVar1 = (*unaff_EDI)(&DAT_01204260), cVar1 != '\0')))) &&
          (((cVar1 = (*unaff_EDI)(&DAT_01204468), cVar1 != '\0' &&
            (cVar1 = (*unaff_EDI)(&DAT_01204670), cVar1 != '\0')) &&
           ((cVar1 = (*unaff_EDI)(&DAT_01204878), cVar1 != '\0' &&
            (((cVar1 = (*unaff_EDI)(&DAT_01204a80), cVar1 != '\0' &&
              (cVar1 = (*unaff_EDI)(&DAT_01204c88), cVar1 != '\0')) &&
             (cVar1 = (*unaff_EDI)(&DAT_01204e90), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*unaff_EDI)(&DAT_01205098), cVar1 != '\0' &&
         (cVar1 = (*unaff_EDI)(&DAT_012052a0), cVar1 != '\0')))) &&
       (cVar1 = (*unaff_EDI)(&DAT_012054a8), cVar1 != '\0')) &&
      (((cVar1 = (*unaff_EDI)(&DAT_012056b0), cVar1 != '\0' &&
        (cVar1 = (*unaff_EDI)(&DAT_012058b8), cVar1 != '\0')) &&
       ((cVar1 = (*unaff_EDI)(&DAT_01205ac0), cVar1 != '\0' &&
        ((((cVar1 = (*unaff_EDI)(&DAT_01205cc8), cVar1 != '\0' &&
           (cVar1 = (*unaff_EDI)(&DAT_01205ed0), cVar1 != '\0')) &&
          (cVar1 = (*unaff_EDI)(&DAT_012060d8), cVar1 != '\0')) &&
         ((cVar1 = (*unaff_EDI)(&DAT_012062e0), cVar1 != '\0' &&
          (cVar1 = (*unaff_EDI)(&DAT_012064e8,0x19b), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}


/*
Unable to decompile 'FUN_0054067f'
Cause: Exception while decompiling 0054067f: process: timeout

*/

/*
Unable to decompile 'FUN_005438fd'
Cause: Exception while decompiling 005438fd: process: timeout

*/

/*
Unable to decompile 'FUN_00546b87'
Cause: Exception while decompiling 00546b87: process: timeout

*/

/*
Unable to decompile 'FUN_0054976d'
Cause: Exception while decompiling 0054976d: process: timeout

*/

/*
Unable to decompile 'FUN_0054c353'
Cause: Exception while decompiling 0054c353: process: timeout

*/

/*
Unable to decompile 'FUN_0054ef4c'
Cause: Exception while decompiling 0054ef4c: process: timeout

*/

/*
Unable to decompile 'FUN_005519de'
Cause: Exception while decompiling 005519de: process: timeout

*/

/*
Unable to decompile 'FUN_0055447e'
Cause: Exception while decompiling 0055447e: process: timeout

*/


undefined4 FUN_005574c3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_018b6138,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01123030,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_01123238,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01123440,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01123648,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01123850,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01123a58,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_01123c60,0x200,param_2), cVar1 != '\0')) &&
        ((((((cVar1 = (*param_1)(&DAT_01123e68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01124070,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_018af798,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_018af9a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018afba8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_018afdb0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_018b6340,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018b6548,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_018affb8,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((((((cVar1 = (*param_1)(&DAT_018b01c0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018b03c8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018b6750,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_018b6958,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018b6b60,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_018b6d68,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_018b6f70,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018b7178,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_018b7380,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_018b7588,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018b7790,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018b7998,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_018b7ba0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018b7da8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018b7fb0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_018b05d0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018b81b8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_018b83c0,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_018b85c8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018b87d0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018b89d8,0x200,param_2), cVar1 != '\0')))))))))))) &&
          (((cVar1 = (*param_1)(&DAT_018b8be0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018b8de8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_018b8ff0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_018b91f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018b9400,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_018b9608,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_018b07d8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018b09e0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018b0be8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_018b9810,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018b0df0,0x200,param_2), cVar1 != '\0')))))))))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_018b0ff8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_018b9a18,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018b9c20,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_018b9e28,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_018ba030,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018ba238,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018ba440,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_018ba648,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018ba850,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018baa58,0x200,param_2), cVar1 != '\0')))))) &&
            ((((cVar1 = (*param_1)(&DAT_018bac60,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018bae68,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_018bb070,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_018bb278,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018bb480,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018bb688,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_018bb890,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018bba98,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_018bbca0,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_018bbea8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018bc0b0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018bc2b8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_018bc4c0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018bc6c8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018bc8d0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_018bcad8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018bcce0,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_018bcee8,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_018bd0f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018bd2f8,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_018bd500,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_018bd708,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018bd910,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_018bdb18,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_018bdd20,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018bdf28,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_018be130,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_018be338,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018be540,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_018be748,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_018be950,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018beb58,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_018bed60,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_018bef68,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018b1200,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_018bf170,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_018bf378,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018bf580,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018bf788,0x200,param_2), cVar1 != '\0' &&
             (((((cVar1 = (*param_1)(&DAT_018bf990,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018bfb98,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018bfda0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_018bffa8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018c01b0,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_018c03b8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_018c05c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_018c07c8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_018c09d0,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_018c0bd8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018c0de0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_018c0fe8,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_018c11f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018c13f8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_018c1600,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_018c1808,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018c1a10,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     ((cVar1 = (*param_1)(&DAT_018c1c18,0x200,param_2), cVar1 != '\0' &&
      (((cVar1 = (*param_1)(&DAT_018c1e20,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_018c2028,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_018c2230,0xf2,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00557cab(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_018c2328,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_018b1408,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_018b1610,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018b1818,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_018b1a20,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_018b1c28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018b1e30,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_018b2038,0x200,param_2), cVar1 != '\0')) &&
        ((((((cVar1 = (*param_1)(&DAT_018b2240,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018b2448,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_018b2650,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_018b2858,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018c2530,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_018c2738,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_018c2940,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018c2b48,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_018c2d50,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((((((cVar1 = (*param_1)(&DAT_018c2f58,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018c3160,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018c3368,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_018c3570,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018c3778,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_018c3980,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_018c3b88,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018c3d90,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_018c3f98,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_018c41a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018c43a8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018c45b0,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_018c47b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018c49c0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018c4bc8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_018c4dd0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018c4fd8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_018c51e0,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_018c53e8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018c55f0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018c57f8,0x200,param_2), cVar1 != '\0')))))))))))) &&
          (((cVar1 = (*param_1)(&DAT_018c5a00,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018c5c08,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_018c5e10,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_018c6018,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018c6220,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_018c6428,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_018c6630,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018c6838,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018c6a40,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_018c6c48,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018c6e50,0x200,param_2), cVar1 != '\0')))))))))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_018c7058,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_018c7260,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018c7468,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_018c7670,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_018c7878,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018c7a80,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018c7c88,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_018c7e90,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018c8098,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018c82a0,0x200,param_2), cVar1 != '\0')))))) &&
            ((((cVar1 = (*param_1)(&DAT_018c84a8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018c86b0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_018c88b8,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_018c8ac0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018c8cc8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018c8ed0,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_018c90d8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018c92e0,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_018c94e8,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_018c96f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018c98f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018c9b00,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_018c9d08,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018c9f10,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018ca118,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_018ca320,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018ca528,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_018ca730,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_018ca938,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018cab40,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_018cad48,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_018caf50,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018cb158,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_018cb360,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_018cb568,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018cb770,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_018cb978,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_018cbb80,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018cbd88,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_018cbf90,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_018cc198,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018cc3a0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_018cc5a8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_018cc7b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018cc9b8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_018ccbc0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_018ccdc8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018ccfd0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018cd1d8,0x200,param_2), cVar1 != '\0' &&
             (((((cVar1 = (*param_1)(&DAT_018cd3e0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018cd5e8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018cd7f0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_018cd9f8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018cdc00,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_018cde08,0x200,param_2), cVar1 != '\0')))))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_018ce010,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_018ce218,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_018ce420,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_018ce628,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018ce830,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_018cea38,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_018cec40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018cee48,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_018cf050,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_018cf258,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018cf460,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     ((cVar1 = (*param_1)(&DAT_018cf668,0x200,param_2), cVar1 != '\0' &&
      (((cVar1 = (*param_1)(&DAT_018cf870,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_018cfa78,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_018cfc7c,0x1c,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00558490(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_018cfca0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01111700,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01111908,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01111b10,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01111d18,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01111f20,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01112128,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_01112330,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_01112538,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018cfea8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_018d00b0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_018d02b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018d04c0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_018d06c8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_018d08d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018d0ad8,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_018d0ce0,0x200,param_2), cVar1 != '\0')))))) &&
      ((((((((cVar1 = (*param_1)(&DAT_018d0ee8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018d10f0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_018d12f8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_018d1500,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018d1708,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018d1910,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_018d1b18,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018d1d20,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_018d1f28,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_018d2130,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018d2338,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_018d2540,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018d2748,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018d2950,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_018d2b58,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_018d2d60,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018d2f68,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_018d3170,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_018d3378,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018d3580,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018d3788,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_018d3990,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018d3b98,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_018d3da0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_018d3fa8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018d41b0,0x200,param_2), cVar1 != '\0')))))))) &&
             ((cVar1 = (*param_1)(&DAT_018d43b8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_018d45c0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018d47c8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018d49d0,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_018d4bd8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018d4de0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_018d4fe8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_018d51f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018d53f8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_018d5600,0x200,param_2), cVar1 != '\0')))))) &&
        ((((((((cVar1 = (*param_1)(&DAT_018d5808,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018d5a10,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_018d5c18,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_018d5e20,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018d6028,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_018b2a60,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_018b2c68,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018b2e70,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_018b3078,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_018b3280,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018b3488,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_018d6230,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_018b3690,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018b3898,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_018d6438,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_018d6640,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018d6848,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_018d6a50,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_018d6c58,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018d6e60,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_018d7068,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_018d7270,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018d7478,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_018b3aa0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_018b3ca8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018d7680,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_018d7888,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_018d7a90,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018d7c98,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018d7ea0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_018d80a8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018d82b0,0x200,param_2), cVar1 != '\0')))))))))))) &&
          (cVar1 = (*param_1)(&DAT_018b3eb0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_018d84b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018d86c0,0x200,param_2), cVar1 != '\0')) &&
          ((((((cVar1 = (*param_1)(&DAT_018b40b8,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_018b42c0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018b44c8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018d88c8,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_018d8ad0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018d8cd8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018d8ee0,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_018d90e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018d92f0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_018d94f8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_018d9700,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018d9908,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_018d9b10,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_018d9d18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018d9f20,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018da128,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_018da330,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018da538,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_018da740,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_018da948,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_018dab50,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_018dad58,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_018daf60,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018db168,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
         (cVar1 = (*param_1)(&DAT_018db370,0x200,param_2), cVar1 != '\0')))))))) &&
     (((cVar1 = (*param_1)(&DAT_018db578,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_018db780,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_018db988,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_018dbb90,0x1a4,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00558c56(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_018dbd38,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01121de8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01121ff0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_011221f8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01122400,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01122608,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01122810,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_01122a18,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_018b46d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018dbf40,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_018dc148,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_018b48d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018b4ae0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_018b4ce8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_018dc350,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018dc558,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_018dc760,0x200,param_2), cVar1 != '\0')))))) &&
      ((((((((cVar1 = (*param_1)(&DAT_018dc968,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018dcb70,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_018dcd78,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_018dcf80,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018dd188,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018dd390,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_018dd598,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018dd7a0,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_018dd9a8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_018ddbb0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018dddb8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_018ddfc0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018de1c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018de3d0,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_018de5d8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_018de7e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018de9e8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_018debf0,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_018dedf8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018df000,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018df208,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_018df410,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018df618,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_018df820,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_018dfa28,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018dfc30,0x200,param_2), cVar1 != '\0')))))))) &&
             ((cVar1 = (*param_1)(&DAT_018dfe38,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_018e0040,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018e0248,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018e0450,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_018e0658,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018e0860,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_018e0a68,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_018e0c70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018e0e78,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_018e1080,0x200,param_2), cVar1 != '\0')))))) &&
        ((((((((cVar1 = (*param_1)(&DAT_018e1288,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018e1490,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_018e1698,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_018e18a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018b4ef0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_018b50f8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_018b5300,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018b5508,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_018b5710,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_018e1aa8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018e1cb0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_018b5918,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_018b5b20,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018b5d28,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_018b5f30,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_018e1eb8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018e20c0,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_018e22c8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_018e24d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018e26d8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_018e28e0,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_018e2ae8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018e2cf0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_018e2ef8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_018e3100,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018e3308,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_018e3510,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_018e3718,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018e3920,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018e3b28,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_018e3d30,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018e3f38,0x200,param_2), cVar1 != '\0')))))))))))) &&
          (cVar1 = (*param_1)(&DAT_018e4140,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_018e4348,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018e4550,0x200,param_2), cVar1 != '\0')) &&
          ((((((cVar1 = (*param_1)(&DAT_018e4758,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_018e4960,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018e4b68,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018e4d70,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_018e4f78,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018e5180,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018e5388,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_018e5590,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018e5798,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_018e59a0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_018e5ba8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018e5db0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_018e5fb8,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_018e61c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018e63c8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018e65d0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_018e67d8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018e69e0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_018e6be8,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_018e6df0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_018e6ff8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_018e7200,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_018e7408,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018e7610,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
         (cVar1 = (*param_1)(&DAT_018e7818,0x200,param_2), cVar1 != '\0')))))))) &&
     (((cVar1 = (*param_1)(&DAT_018e7a20,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_018e7c28,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_018e7e30,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_018e8038,0x84,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0055941c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_018e80c0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01121de8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01121ff0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_011221f8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01122400,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01122608,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01122810,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_01122a18,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_01122c20,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01122e28,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_018e82c8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_018e84d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018e86d8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_018e88e0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_018e8ae8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018e8cf0,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_018e8ef8,0x200,param_2), cVar1 != '\0')))))) &&
      ((((((((cVar1 = (*param_1)(&DAT_018e9100,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018e9308,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_018e9510,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_018e9718,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018e9920,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018e9b28,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_018e9d30,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018e9f38,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_018ea140,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_018ea348,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018ea550,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_018ddfc0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018de1c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018ea758,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_018de5d8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_018de7e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018de9e8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_018debf0,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_018ea960,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018eab68,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018ead70,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_018eaf78,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018df618,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_018eb180,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_018eb388,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018eb590,0x200,param_2), cVar1 != '\0')))))))) &&
             ((cVar1 = (*param_1)(&DAT_018eb798,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_018eb9a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018ebba8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018ebdb0,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_018ebfb8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018ec1c0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_018ec3c8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_018ec5d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018ec7d8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_018ec9e0,0x200,param_2), cVar1 != '\0')))))) &&
        ((((((((cVar1 = (*param_1)(&DAT_018ecbe8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018ecdf0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_018ecff8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_018ed200,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018ed408,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_018ed610,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_018ed818,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018eda20,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_018edc28,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_018ede30,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018ee038,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_018ee240,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_018ee448,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018ee650,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_018ee858,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_018eea60,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018eec68,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_018eee70,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_018ef078,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018ef280,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_018ef488,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_018ef690,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018ef898,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_018efaa0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_018efca8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018efeb0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_018f00b8,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_018f02c0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018f04c8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018f06d0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_018f08d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018f0ae0,0x200,param_2), cVar1 != '\0')))))))))))) &&
          (cVar1 = (*param_1)(&DAT_018f0ce8,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_018f0ef0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018f10f8,0x200,param_2), cVar1 != '\0')) &&
          ((((((cVar1 = (*param_1)(&DAT_018f1300,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_018f1508,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018f1710,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_018f1918,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_018f1b20,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_018f1d28,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_018f1f30,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_018f2138,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018f2340,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_018f2548,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_018f2750,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018f2958,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_018f2b60,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_018f2d68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018f2f70,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018f3178,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_018f3380,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018f3588,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_018f3790,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_018f3998,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_018f3ba0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_018f3da8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_018f3fb0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_018f41b8,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
         (cVar1 = (*param_1)(&DAT_018f43c0,0x200,param_2), cVar1 != '\0')))))))) &&
     (((cVar1 = (*param_1)(&DAT_018f45c8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_018f47d0,0x200,param_2), cVar1 != '\0')) &&
      ((cVar1 = (*param_1)(&DAT_018f49d8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_018f4be0,0x91,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00559be2(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_018f4c78,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_018f4e80,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_018f5088,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018f5290,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_018f5498,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_018f56a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018f58a8,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_018f5ab0,0x200,param_2), cVar1 != '\0' &&
           (((((cVar1 = (*param_1)(&DAT_018f5cb8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_018f5ec0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_018f60c8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_018f62d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018f64d8,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_018f66e0,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_018f68e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018f6af0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_018f6cf8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_018f6f00,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_018f7108,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_018f7310,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_018f7518,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018f7720,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_018f7928,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_018f7b30,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_018f7d38,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_018f7f40,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_018f8148,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018f8350,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_018f8558,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_018f8760,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018f8968,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_018f8b70,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_018f8d78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_018f8f80,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_018f9188,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_018f9390,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018f9598,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_018f97a0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_018f99a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018f9bb0,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_018f9db8,0x200,param_2), cVar1 != '\0')))) &&
      (((cVar1 = (*param_1)(&DAT_018f9fc0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_018fa1c8,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_018fa3d0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_018fa5d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_018fa7e0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_018fa9e8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_018fabf0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_018fadf8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_018fb000,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_018fb208,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_018fb410,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_018fb618,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_018fb820,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_018fba28,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_018fbc30,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_018fbe38,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_018fc040,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_018fc248,0xcb,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}


/*
Unable to decompile 'FUN_00559fd4'
Cause: Exception while decompiling 00559fd4: process: timeout

*/

/*
Unable to decompile 'FUN_0055d6df'
Cause: Exception while decompiling 0055d6df: process: timeout

*/


undefined4 FUN_00560dea(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_019cdd30,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_019cdf38,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_019ce140,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019ce348,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_019ce550,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_019ce758,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019ce960,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_019ceb68,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_019ced70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019cef78,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_019cf180,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_019cf388,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019cf590,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_019cf798,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_019cf9a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019cfba8,0x200,param_2), cVar1 != '\0')))))))) &&
      (((cVar1 = (*param_1)(&DAT_019cfdb0,0x200,param_2), cVar1 != '\0' &&
        ((((((cVar1 = (*param_1)(&DAT_019cffb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019d01c0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_019d03c8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_019d05d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019d07d8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_019d09e0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_019d0be8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019d0df0,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_019d0ff8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_019d1200,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019d1408,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_019d1610,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_019d1818,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019d1a20,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_019d1c28,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_019d1e30,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019d2038,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_019d2240,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_019d2448,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019d2650,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_019d2858,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_019d2a60,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019d2c68,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_019d2e70,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_019d3078,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019d3280,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_019d3488,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_019d3690,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019d3898,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_019d3aa0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_019d3ca8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019d3eb0,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_019d40b8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_019d42c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019d44c8,0x200,param_2), cVar1 != '\0')))) &&
        (((((((cVar1 = (*param_1)(&DAT_019d46d0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_019d48d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_019d4ae0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_019d4ce8,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_019d4ef0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_019d50f8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_019d5300,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_019d5508,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_019d5710,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_019d5918,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_019d5b20,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_019d5d28,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_019d5f30,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_019d6138,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019d6340,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_019d6548,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_019d6750,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019d6958,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_019d6b60,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_019d6d68,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_019d6f70,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_019d7178,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_019d7380,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_019d7588,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_019d7790,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_019d7998,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019d7ba0,0x200,param_2), cVar1 != '\0')))))))))))) &&
      ((((((cVar1 = (*param_1)(&DAT_019d7da8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_019d7fb0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019d81b8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_019d83c0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_019d85c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019d87d0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_019d89d8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_019d8be0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019d8de8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_019d8ff0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_019d91f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019d9400,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_019d9608,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_019d9810,0x4c,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00561415(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_019d9860,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_019cdf38,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_019ce140,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019ce348,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_019ce550,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_019ce758,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019d9a68,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_019d9c70,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_019d9e78,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019da080,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_019da288,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_019da490,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019da698,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_019da8a0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_019daaa8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019dacb0,0x200,param_2), cVar1 != '\0')))))))) &&
      (((cVar1 = (*param_1)(&DAT_019daeb8,0x200,param_2), cVar1 != '\0' &&
        ((((((cVar1 = (*param_1)(&DAT_019db0c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019db2c8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_019db4d0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_019db6d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019db8e0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_019dbae8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_019dbcf0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019dbef8,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_019dc100,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_019dc308,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019dc510,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_019dc718,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_019dc920,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019dcb28,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_019dcd30,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_019dcf38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019dd140,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_019dd348,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_019dd550,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019dd758,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_019dd960,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_019ddb68,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019ddd70,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_019ddf78,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_019de180,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019de388,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_019de590,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_019de798,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019de9a0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_019deba8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_019dedb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019defb8,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_019df1c0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_019df3c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019df5d0,0x200,param_2), cVar1 != '\0')))) &&
        (((((((cVar1 = (*param_1)(&DAT_019df7d8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_019df9e0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_019dfbe8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_019dfdf0,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_019dfff8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_019e0200,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_019e0408,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_019e0610,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_019e0818,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_019e0a20,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_019e0c28,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_019e0e30,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_019e1038,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_019e1240,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019e1448,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_019e1650,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_019e1858,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019e1a60,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_019e1c68,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_019e1e70,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_019e2078,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_019e2280,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_019e2488,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_019e2690,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_019e2898,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_019e2aa0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019e2ca8,0x200,param_2), cVar1 != '\0')))))))))))) &&
      ((((((cVar1 = (*param_1)(&DAT_019e2eb0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_019e30b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019e32c0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_019e34c8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_019e36d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019e38d8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_019e3ae0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_019e3ce8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019e3ef0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_019e40f8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_019e4300,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019e4508,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_019e4710,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_019e4918,0x5f,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00561a40(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_019e4978,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_019e4b80,0x200,param_2), cVar1 != '\0')) &&
          (((((((cVar1 = (*param_1)(&DAT_019e4d88,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_019e4f90,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_019e5198,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_019e53a0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_019e55a8,0x200,param_2), cVar1 != '\0')))))) &&
              (cVar1 = (*param_1)(&DAT_019e57b0,0x200,param_2), cVar1 != '\0')) &&
             ((((((cVar1 = (*param_1)(&DAT_019e59b8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_019e5bc0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_019e5dc8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_019e5fd0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_019e61d8,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_019e63e0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_019e65e8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_019e67f0,0x200,param_2), cVar1 != '\0')))))) &&
              ((cVar1 = (*param_1)(&DAT_019e69f8,0x200,param_2), cVar1 != '\0' &&
               (((((cVar1 = (*param_1)(&DAT_019e6c00,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_019e6e08,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_019e7010,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_019e7218,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_019e7420,0x200,param_2), cVar1 != '\0')))) &&
                (((cVar1 = (*param_1)(&DAT_019e7628,0x200,param_2), cVar1 != '\0' &&
                  ((cVar1 = (*param_1)(&DAT_019e7830,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_019e7a38,0x200,param_2), cVar1 != '\0')))) &&
                 (cVar1 = (*param_1)(&DAT_019e7c40,0x200,param_2), cVar1 != '\0')))))))))) &&
            ((((cVar1 = (*param_1)(&DAT_019e7e48,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_019e8050,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_019e8258,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_019e8460,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_019e8668,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_019e8870,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_019e8a78,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_019e8c80,0x200,param_2), cVar1 != '\0')))))))))) &&
           (cVar1 = (*param_1)(&DAT_019e8e88,0x200,param_2), cVar1 != '\0')))) &&
         (((((cVar1 = (*param_1)(&DAT_019e9090,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019e9298,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_019e94a0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_019e96a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019e98b0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_019e9ab8,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_019e9cc0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019e9ec8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_019ea0d0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_019ea2d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019ea4e0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_019ea6e8,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_019ea8f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019eaaf8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_019ead00,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_019eaf08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019eb110,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_019eb318,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_019eb520,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019eb728,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_019eb930,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_019ebb38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019ebd40,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_019ebf48,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_019ec150,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_019ec358,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_019ec560,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_019ec768,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_019ec970,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_019ecb78,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_019ecd80,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_019ecf88,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_019ed190,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_019ed398,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_019ed5a0,0x200,param_2), cVar1 != '\0')))) &&
            ((((cVar1 = (*param_1)(&DAT_019ed7a8,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_019ed9b0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_019edbb8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_019eddc0,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_019edfc8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_019ee1d0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_019ee3d8,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_019ee5e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_019ee7e8,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (((cVar1 = (*param_1)(&DAT_019ee9f0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_019eebf8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019eee00,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_019ef008,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_019ef210,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019ef418,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_019ef620,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_019ef828,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019efa30,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_019efc38,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_019efe40,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_019f0048,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_019f0250,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_019f0458,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_019f0660,0x200,param_2), cVar1 != '\0')))))))))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_019f0868,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_019f0a70,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_019f0c78,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_019f0e80,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_019f1088,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019f1290,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_019f1498,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_019f16a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019f18a8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_019f1ab0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_019f1cb8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019f1ec0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_019f20c8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_019f22d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019f24d8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_019f26e0,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_019f28e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019f2af0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_019f2cf8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_019f2f00,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019f3108,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_019f3310,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_019f3518,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_019f3720,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_019f3928,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_019f3b30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_019f3d38,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_019f3f40,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_019f4148,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_019f4350,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_019f4558,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_019f4760,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019f4968,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_019f4b70,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_019f4d78,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_019f4f80,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_019f5188,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_019f5390,0x66,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00562302(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_019f53f8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_018f4e80,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_018f5088,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_018f5290,0x200,param_2), cVar1 != '\0')))) &&
      ((((((((cVar1 = (*param_1)(&DAT_018f5498,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_018f56a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_019f5600,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_019f5808,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_019f5a10,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019f5c18,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_019f5e20,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_019f6028,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019f6230,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_019f6438,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_019f6640,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_019f6848,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_019f6a50,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_019f6c58,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019f6e60,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_019f7068,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_019f7270,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019f7478,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_019f7680,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_019f7888,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019f7a90,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_019f7c98,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_019f7ea0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_019f80a8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_019f82b0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_019f84b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019f86c0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_019f88c8,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_019f8ad0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019f8cd8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_019f8ee0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_019f90e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_019f92f0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_019f94f8,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_019f9700,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019f9908,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_019f9b10,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_019f9d18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019f9f20,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_019fa128,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_019fa330,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019fa538,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_019fa740,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_019fa948,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_019fab50,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((cVar1 = (*param_1)(&DAT_019fad58,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_019faf60,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019fb168,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_019fb370,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_019fb578,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_019fb780,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_019fb988,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_019fbb90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019fbd98,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_019fbfa0,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_019fc1a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_019fc3b0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_019fc5b8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_019fc7c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019fc9c8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_019fcbd0,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_019fcdd8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_019fcfe0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_019fd1e8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_019fd3f0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_019fd5f8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_019fd800,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_019fda08,0xcb,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005627cb(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_019fdad8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_018f4e80,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_018f5088,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_018f5290,0x200,param_2), cVar1 != '\0')))) &&
      (((((((cVar1 = (*param_1)(&DAT_018f5498,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_018f56a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019f5600,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_019fdce0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_019fdee8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019fe0f0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_019fe2f8,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_019fe500,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_019fe708,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_019fe910,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_019feb18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_019fed20,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_019fef28,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_019ff130,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_019ff338,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_019ff540,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_019ff748,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019ff950,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_019ffb58,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_019ffd60,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_019fff68,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_01a00170,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_01a00378,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a00580,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a00788,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a00990,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a00b98,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01a00da0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_01a00fa8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a011b0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a013b8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a015c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a017c8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a019d0,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_01a01bd8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01a01de0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01a01fe8,0x200,param_2), cVar1 != '\0')) &&
      ((((((cVar1 = (*param_1)(&DAT_01a021f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a023f8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a02600,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a02808,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a02a10,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a02c18,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01a02e20,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a03028,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01a03230,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01a03438,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a03640,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a03848,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_01a03a50,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a03c58,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01a03e60,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a04068,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a04270,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_01a04478,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_01a04680,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a04888,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01a04a90,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a04c98,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a04ea0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a050a8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01a052b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a054b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a056c0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_01a058c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a05ad0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a05cd8,0x195,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00562c83(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_01a070b8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01a072c0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01a074c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a076d0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a078d8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01a07ae0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a07ce8,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_01a07ef0,0x200,param_2), cVar1 != '\0' &&
        ((((((cVar1 = (*param_1)(&DAT_01a080f8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a08300,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a08508,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a08710,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a08918,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01a08b20,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a08d28,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a08f30,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_01a09138,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01a09340,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a09548,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a09750,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01a09958,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a09b60,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_01a09d68,0x200,param_2), cVar1 != '\0' &&
        ((((((cVar1 = (*param_1)(&DAT_01a09f70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a0a178,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a0a380,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01a0a588,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a0a790,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01a0a998,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_01a0aba0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a0ada8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01a0afb0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a0b1b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a0b3c0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a0b5c8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_01a0b7d0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01a0b9d8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01a0bbe0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01a0bde8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a0bff0,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (cVar1 = (*param_1)(&DAT_01a0c1f8,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_01a0c400,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a0c608,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01a0c810,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01a0ca18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a0cc20,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a0ce28,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_01a0d030,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a0d238,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01a0d440,0x200,param_2), cVar1 != '\0')))) &&
      (((((cVar1 = (*param_1)(&DAT_01a0d648,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a0d850,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01a0da58,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a0dc60,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a0de68,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a0e070,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01a0e278,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a0e480,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a0e688,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_01a0e890,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a0ea98,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01a0eca0,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_01a0eea8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_01a0f0b0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_01a0f2b8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_01a0f4c0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01a0f6c8,0x200,param_2), cVar1 != '\0')))))))) &&
             (cVar1 = (*param_1)(&DAT_01a0f8d0,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_01a0fad8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a0fce0,0x200,param_2), cVar1 != '\0')))) &&
       ((((((cVar1 = (*param_1)(&DAT_01a0fee8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01a100f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a102f8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a10500,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_01a10708,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a10910,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a10b18,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01a10d20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a10f28,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01a11130,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01a11338,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a11540,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a11748,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01a11950,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a11b58,0x161,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00563229(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_01a11cc0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a11ec8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a074c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a076d0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01a078d8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01a07ae0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a120d0,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01a122d8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01a124e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a126e8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a128f0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_01a12af8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a12d00,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a12f08,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_01a13110,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a13318,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (cVar1 = (*param_1)(&DAT_01a13520,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_01a13728,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a13930,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01a13b38,0x200,param_2), cVar1 != '\0')))) &&
      (((((cVar1 = (*param_1)(&DAT_01a13d40,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a13f48,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a14150,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01a14358,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a14560,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01a14768,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01a14970,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a14b78,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a14d80,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a14f88,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a15190,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_01a15398,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a155a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a157a8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01a159b0,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_01a15bb8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a15dc0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a15fc8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01a161d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a163d8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a165e0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01a167e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a169f0,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_01a16bf8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_01a16e00,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a17008,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a17210,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01a17418,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a17620,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_01a17828,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01a17a30,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a17c38,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01a17e40,0x200,param_2), cVar1 != '\0')) &&
        (((((((cVar1 = (*param_1)(&DAT_01a18048,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a18250,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a18458,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a18660,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a18868,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01a18a70,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_01a18c78,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a18e80,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a19088,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01a19290,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a19498,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a196a0,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_01a198a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a19ab0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a19cb8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_01a19ec0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a1a0c8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a1a2d0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_01a1a4d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01a1a6e0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01a1a8e8,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_01a1aaf0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a1acf8,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_01a1af00,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01a1b108,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a1b310,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a1b518,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01a1b720,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a1b928,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a1bb30,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a1bd38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a1bf40,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_01a1c148,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01a1c350,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a1c558,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_01a1c760,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01a1c968,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a1cb70,0x1cb,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00563835(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_01a1cd40,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a1cf48,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_01a1d150,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a1d358,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a1d560,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01a1d768,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a1d970,0x200,param_2), cVar1 != '\0')))))) &&
            (cVar1 = (*param_1)(&DAT_01a1db78,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_01a1dd80,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a1df88,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a1e190,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a1e398,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a1e5a0,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*param_1)(&DAT_01a1e7a8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a1e9b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a1ebb8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01a1edc0,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_01a1efc8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a1f1d0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a1f3d8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a1f5e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a1f7e8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01a1f9f0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a1fbf8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a1fe00,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_01a20008,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a20210,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a20418,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a20620,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01a20828,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a20a30,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a20c38,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a20e40,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a21048,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_01a21250,0x200,param_2), cVar1 != '\0')))) &&
       ((((((cVar1 = (*param_1)(&DAT_01a21458,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a21660,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a21868,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a21a70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a21c78,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01a21e80,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01a22088,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a22290,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01a22498,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01a226a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a228a8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a22ab0,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_01a22cb8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a22ec0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01a230c8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01a232d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a234d8,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_01a236e0,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_01a238e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a23af0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a23cf8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_01a23f00,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a24108,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a24310,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a24518,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a24720,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_01a24928,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_01a24b30,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a24d38,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a24f40,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a25148,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a25350,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01a25558,0x200,param_2), cVar1 != '\0')))))))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_01a25760,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a25968,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_01a25b70,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01a25d78,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a25f80,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a26188,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_01a26390,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a26598,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a267a0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01a269a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a26bb0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a26db8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01a26fc0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a271c8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a273d0,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_01a275d8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a277e0,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_01a279e8,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_01a27bf0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01a27df8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_01a28000,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_01a28208,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a28410,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a28618,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a28820,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a28a28,100,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00563e71(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_01a28a90,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a28c98,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a28ea0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a290a8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01a292b0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a294b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a296c0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01a298c8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01a29ad0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a29cd8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a29ee0,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_01a2a0e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a2a2f0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01a2a4f8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01a2a700,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a2a908,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_01a2ab10,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01a2ad18,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a2af20,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a2b128,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_01a2b330,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a2b538,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a2b740,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01a2b948,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a2bb50,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01a2bd58,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_01a2bf60,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_01a2c168,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_01a2c370,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_01a2c578,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01a2c780,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_01a2c988,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a2cb90,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a2cd98,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01a2cfa0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a2d1a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a2d3b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a2d5b8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01a2d7c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a2d9c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a2dbd0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_01a2ddd8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a2dfe0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a2e1e8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a2e3f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a2e5f8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a2e800,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01a2ea08,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a2ec10,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01a2ee18,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01a2f020,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a2f228,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a2f430,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_01a2f638,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a2f840,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01a2fa48,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a2fc50,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a2fe58,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_01a30060,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_01a30268,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a30470,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01a30678,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a30880,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a30a88,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a30c90,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01a30e98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a310a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a312a8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01a314b0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a316b8,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_01a318c0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01a31ac8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a31cd0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a31ed8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01a320e0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a322e8,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_01a324f0,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_01a326f8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01a32900,0x114,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005643b1(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_01a32a18,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a32c20,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a32e28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a33030,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01a33238,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01a33440,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a33648,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01a33850,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01a33a58,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a33c60,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a33e68,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_01a34070,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a34278,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a34480,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_01a34688,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a34890,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (cVar1 = (*param_1)(&DAT_01a34a98,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_01a34ca0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a34ea8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01a350b0,0x200,param_2), cVar1 != '\0')))) &&
      (((((cVar1 = (*param_1)(&DAT_01a352b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a354c0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a356c8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01a358d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a35ad8,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01a35ce0,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01a35ee8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a360f0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a362f8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a36500,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a36708,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_01a36910,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a36b18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a36d20,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01a36f28,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_01a37130,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a37338,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a37540,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01a37748,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a37950,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a37b58,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01a37d60,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a37f68,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_01a38170,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_01a38378,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a38580,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a38788,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01a38990,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a38b98,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_01a38da0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01a38fa8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a391b0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01a393b8,0x200,param_2), cVar1 != '\0')) &&
        (((((((cVar1 = (*param_1)(&DAT_01a395c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a397c8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a399d0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a39bd8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a39de0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01a39fe8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_01a3a1f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a3a3f8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a3a600,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01a3a808,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a3aa10,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a3ac18,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_01a3ae20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a3b028,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a3b230,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_01a3b438,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a3b640,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a3b848,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_01a3ba50,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01a3bc58,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01a3be60,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_01a3c068,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a3c270,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_01a3c478,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01a3c680,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a3c888,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a3ca90,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01a3cc98,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a3cea0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a3d0a8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a3d2b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a3d4b8,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_01a3d6c0,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01a3d8c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a3dad0,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_01a3dcd8,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01a3dee0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a3e0e8,0xed,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005649bd(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_01a3e1d8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01a3e3e0,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01a3e5e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a3e7f0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a3e9f8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01a3ec00,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a3ee08,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_01a3f010,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_01a3f218,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a3f420,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a3f628,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a3f830,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a3fa38,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01a3fc40,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01a3fe48,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a40050,0x200,param_2), cVar1 != '\0')))))))) &&
      (((cVar1 = (*param_1)(&DAT_01a40258,0x200,param_2), cVar1 != '\0' &&
        ((((((cVar1 = (*param_1)(&DAT_01a40460,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a40668,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a40870,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a40a78,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a40c80,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01a40e88,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a41090,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a41298,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_01a414a0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01a416a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a418b0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a41ab8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_01a41cc0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a41ec8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a420d0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01a422d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a424e0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a426e8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a428f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a42af8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a42d00,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01a42f08,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a43110,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_01a43318,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01a43520,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a43728,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a43930,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01a43b38,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a43d40,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a43f48,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a44150,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a44358,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01a44560,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01a44768,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a44970,0x200,param_2), cVar1 != '\0')))) &&
        (((((((cVar1 = (*param_1)(&DAT_01a44b78,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_01a44d80,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01a44f88,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01a45190,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_01a45398,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a455a0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01a457a8,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_01a459b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a45bb8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a45dc0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_01a45fc8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01a461d0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01a463d8,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_01a465e0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a467e8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01a469f0,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_01a46bf8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a46e00,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a47008,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_01a47210,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a47418,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01a47620,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a47828,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a47a30,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_01a47c38,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01a47e40,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a48048,0x200,param_2), cVar1 != '\0')))))))))))) &&
      ((((((cVar1 = (*param_1)(&DAT_01a48250,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a48458,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a48660,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a48868,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01a48a70,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a48c78,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a48e80,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01a49088,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a49290,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01a49498,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01a496a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a498a8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a49ab0,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_01a49cb8,0x1d4,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00564feb(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_01a49e90,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01a4a098,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01a4a2a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a4a4a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a4a6b0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01a4a8b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a4aac0,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_01a4acc8,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_01a4aed0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a4b0d8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a4b2e0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a4b4e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a4b6f0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01a4b8f8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01a4bb00,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a4bd08,0x200,param_2), cVar1 != '\0')))))))) &&
      (((cVar1 = (*param_1)(&DAT_01a4bf10,0x200,param_2), cVar1 != '\0' &&
        ((((((cVar1 = (*param_1)(&DAT_01a4c118,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a4c320,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a4c528,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a4c730,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a4c938,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01a4cb40,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a4cd48,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a4cf50,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_01a4d158,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01a4d360,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a4d568,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a4d770,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_01a4d978,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a4db80,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a4dd88,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01a4df90,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a4e198,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a4e3a0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a4e5a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a4e7b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a4e9b8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01a4ebc0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a4edc8,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_01a4efd0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01a4f1d8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a4f3e0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a4f5e8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01a4f7f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a4f9f8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a4fc00,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a4fe08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a50010,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01a50218,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01a50420,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a50628,0x200,param_2), cVar1 != '\0')))) &&
        (((((((cVar1 = (*param_1)(&DAT_01a50830,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_01a50a38,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01a50c40,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01a50e48,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_01a51050,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a51258,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01a51460,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_01a51668,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a51870,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a51a78,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_01a51c80,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01a51e88,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01a52090,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_01a52298,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a524a0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01a526a8,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_01a528b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a52ab8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a52cc0,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_01a52ec8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a530d0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01a532d8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a534e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a536e8,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_01a538f0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01a53af8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a53d00,0x200,param_2), cVar1 != '\0')))))))))))) &&
      ((((((cVar1 = (*param_1)(&DAT_01a53f08,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a54110,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a54318,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a54520,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01a54728,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a54930,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a54b38,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01a54d40,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a54f48,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01a55150,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01a55358,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a55560,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a55768,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_01a55970,0x1e9,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00565619(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_01a55b60,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a55d68,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_01a55f70,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a56178,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a56380,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01a56588,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a56790,0x200,param_2), cVar1 != '\0')))))) &&
            (cVar1 = (*param_1)(&DAT_01a56998,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_01a56ba0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a56da8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a56fb0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a571b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a573c0,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*param_1)(&DAT_01a575c8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a577d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a579d8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01a57be0,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_01a57de8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a57ff0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a581f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a58400,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a58608,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01a58810,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a58a18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a58c20,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_01a58e28,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a59030,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a59238,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a59440,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01a59648,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a59850,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a59a58,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a59c60,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a59e68,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_01a5a070,0x200,param_2), cVar1 != '\0')))) &&
       ((((((cVar1 = (*param_1)(&DAT_01a5a278,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a5a480,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a5a688,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a5a890,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a5aa98,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01a5aca0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01a5aea8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a5b0b0,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01a5b2b8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01a5b4c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a5b6c8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a5b8d0,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_01a5bad8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a5bce0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01a5bee8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01a5c0f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a5c2f8,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_01a5c500,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_01a5c708,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a5c910,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a5cb18,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_01a5cd20,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a5cf28,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a5d130,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a5d338,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a5d540,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_01a5d748,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_01a5d950,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a5db58,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a5dd60,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a5df68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a5e170,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01a5e378,0x200,param_2), cVar1 != '\0')))))))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_01a5e580,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a5e788,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_01a5e990,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01a5eb98,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a5eda0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a5efa8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_01a5f1b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a5f3b8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a5f5c0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01a5f7c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a5f9d0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a5fbd8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01a5fde0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a5ffe8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a601f0,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_01a603f8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a60600,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_01a60808,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_01a60a10,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01a60c18,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_01a60e20,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_01a61028,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a61230,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a61438,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a61640,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a61848,0x18b,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00565c58(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((((param_1 != (code *)0x0) &&
              (cVar1 = (*param_1)(&DAT_01a619d8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a55d68,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a55f70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a56178,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01a56380,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a56588,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a56790,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01a56998,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01a56ba0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a56da8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a56fb0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01a61be0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a61de8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a61ff0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01a621f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a62400,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01a62608,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01a62810,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a62a18,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a62c20,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_01a62e28,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a63030,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01a63238,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01a63440,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a63648,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01a63850,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((((cVar1 = (*param_1)(&DAT_01a63a58,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a63c60,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a63e68,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a64070,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a64278,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01a64480,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01a64688,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a64890,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_01a64a98,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_01a64ca0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a64ea8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a650b0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_01a652b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a654c0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a656c8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a658d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a65ad8,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_01a65ce0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01a65ee8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a660f0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01a662f8,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((((cVar1 = (*param_1)(&DAT_01a66500,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a66708,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a66910,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a66b18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a66d20,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_01a66f28,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_01a67130,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a67338,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a67540,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a67748,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a67950,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*param_1)(&DAT_01a67b58,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a67d60,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a67f68,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01a68170,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_01a68378,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a68580,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a68788,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01a68990,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a68b98,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a68da0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01a68fa8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a691b0,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_01a693b8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01a695c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a697c8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a699d0,0x200,param_2), cVar1 != '\0')))))))))) &&
        (((((cVar1 = (*param_1)(&DAT_01a69bd8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a69de0,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_01a69fe8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01a6a1f0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a6a3f8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_01a6a600,0x200,param_2), cVar1 != '\0')) &&
            ((((((cVar1 = (*param_1)(&DAT_01a6a808,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01a6aa10,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01a6ac18,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01a6ae20,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01a6b028,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_01a6b230,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_01a6b438,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a6b640,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01a6b848,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01a6ba50,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01a6bc58,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01a6be60,0x200,param_2), cVar1 != '\0')))))))))))) &&
          ((cVar1 = (*param_1)(&DAT_01a6c068,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a6c270,0x200,param_2), cVar1 != '\0')))) &&
         (((((cVar1 = (*param_1)(&DAT_01a6c478,0x200,param_2), cVar1 != '\0' &&
             ((((((cVar1 = (*param_1)(&DAT_01a6c680,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_01a6c888,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_01a6ca90,0x200,param_2), cVar1 != '\0' &&
                  (((cVar1 = (*param_1)(&DAT_01a6cc98,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_01a6cea0,0x200,param_2), cVar1 != '\0')) &&
                   (cVar1 = (*param_1)(&DAT_01a6d0a8,0x200,param_2), cVar1 != '\0')))))) &&
                ((cVar1 = (*param_1)(&DAT_01a6d2b0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01a6d4b8,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_01a6d6c0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_01a6d8c8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01a6dad0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01a6dcd8,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_01a6dee0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_01a6e0e8,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_01a6e2f0,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_01a6e4f8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_01a6e700,0x200,param_2), cVar1 != '\0')))))))))))) &&
            ((((cVar1 = (*param_1)(&DAT_01a6e908,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_01a6eb10,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01a6ed18,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_01a6ef20,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01a6f128,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01a6f330,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01a6f538,0x200,param_2), cVar1 != '\0')))))) &&
             (((cVar1 = (*param_1)(&DAT_01a6f740,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a6f948,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01a6fb50,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_01a6fd58,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a6ff60,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a70168,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01a70370,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a70578,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01a70780,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_01a70988,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a70b90,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_01a70d98,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_01a70fa0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a711a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a713b0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_01a715b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a717c0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a719c8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a71bd0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a71dd8,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_01a71fe0,0x200,param_2), cVar1 != '\0')))))) &&
      ((((((cVar1 = (*param_1)(&DAT_01a721e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a723f0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_01a725f8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01a72800,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a72a08,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a72c10,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_01a72e18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a73020,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a73228,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_01a73430,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a73638,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a73840,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a73a48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a73c50,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a73e58,0x200,param_2), cVar1 != '\0')))))))) &&
        ((((((cVar1 = (*param_1)(&DAT_01a74060,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a74268,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a74470,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01a74678,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a74880,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01a74a88,0x200,param_2), cVar1 != '\0' &&
               (((((cVar1 = (*param_1)(&DAT_01a74c90,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_01a74e98,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_01a750a0,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_01a752a8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_01a754b0,0x200,param_2), cVar1 != '\0')))) &&
                (cVar1 = (*param_1)(&DAT_01a756b8,0x200,param_2), cVar1 != '\0')))))))))) &&
           ((cVar1 = (*param_1)(&DAT_01a758c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a75ac8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01a75cd0,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_01a75ed8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a760e0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a762e8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_01a764f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a766f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a76900,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_01a76b08,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a76d10,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_01a76f18,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a77120,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a77328,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a77530,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((((cVar1 = (*param_1)(&DAT_01a77738,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a77940,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_01a77b48,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a77d50,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a77f58,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01a78160,0x200,param_2), cVar1 != '\0')))) &&
         (((((((((cVar1 = (*param_1)(&DAT_01a78368,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01a78570,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01a78778,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01a78980,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01a78b88,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_01a78d90,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_01a78f98,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01a791a0,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_01a793a8,0x200,param_2), cVar1 != '\0')) &&
            ((((((cVar1 = (*param_1)(&DAT_01a795b0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01a797b8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01a799c0,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_01a79bc8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01a79dd0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_01a79fd8,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_01a7a1e0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_01a7a3e8,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_01a7a5f0,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_01a7a7f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a7aa00,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01a7ac08,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_01a7ae10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a7b018,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_01a7b220,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_01a7b428,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a7b630,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_01a7b838,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_01a7ba40,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a7bc48,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a7be50,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a7c058,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a7c260,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_01a7c468,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01a7c670,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a7c878,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01a7ca80,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_01a7cc88,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a7ce90,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a7d098,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01a7d2a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a7d4a8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a7d6b0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01a7d8b8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a7dac0,0x200,param_2), cVar1 != '\0')))))))))))) &&
         ((cVar1 = (*param_1)(&DAT_01a7dcc8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01a7ded0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a7e0d8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a7e2e0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_01a7e4e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a7e6f0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a7e8f8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_01a7eb00,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a7ed08,0x91,param_2), cVar1 != '\0')))))))))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00566c5a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_01a801f0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a803f8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a80600,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a80808,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_01a80a10,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_01a80c18,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a80e20,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01a81028,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01a81230,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a81438,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a81640,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_01a81848,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a81a50,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a81c58,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01a81e60,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a82068,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a82270,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01a82478,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a82680,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a82888,0x200,param_2), cVar1 != '\0')))))))))) &&
        (((cVar1 = (*param_1)(&DAT_01a82a90,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a82c98,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a82ea0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01a830a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a832b0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a834b8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_01a836c0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01a838c8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01a83ad0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01a83cd8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a83ee0,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_01a840e8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a842f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a844f8,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_01a84700,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01a84908,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a84b10,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01a84d18,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((((cVar1 = (*param_1)(&DAT_01a84f20,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a85128,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a85330,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a85538,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a85740,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_01a85948,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01a85b50,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a85d58,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a85f60,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01a86168,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a86370,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01a86578,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01a86780,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a86988,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a86b90,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_01a86d98,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a86fa0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a871a8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a873b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a875b8,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_01a877c0,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_01a879c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a87bd0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a87dd8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01a87fe0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a881e8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a883f0,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_01a885f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a88800,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a88a08,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a88c10,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a88e18,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01a89020,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01a89228,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a89430,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a89638,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_01a89840,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a89a48,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01a89c50,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_01a89e58,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a8a060,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a8a268,0x200,param_2), cVar1 != '\0' &&
             (((((cVar1 = (*param_1)(&DAT_01a8a470,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01a8a678,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01a8a880,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01a8aa88,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01a8ac90,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_01a8ae98,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_01a8b0a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a8b2a8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01a8b4b0,0x200,param_2), cVar1 != '\0')))))) &&
       (((((cVar1 = (*param_1)(&DAT_01a8b6b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a8b8c0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a8bac8,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01a8bcd0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a8bed8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a8c0e0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01a8c2e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a8c4f0,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_01a8c6f8,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_01a8c900,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a8cb08,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a8cd10,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a8cf18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a8d120,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01a8d328,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01a8d530,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a8d738,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01a8d940,0x183,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00567376(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_01a8dac8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a8dcd0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a8ded8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a8e0e0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01a8e2e8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01a8e4f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a8e6f8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_01a8e900,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_01a8eb08,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a8ed10,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01a8ef18,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01a8f120,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a8f328,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a8f530,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01a8f738,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a8f940,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_01a8fb48,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01a8fd50,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a8ff58,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01a90160,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_01a90368,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a90570,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01a90778,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01a90980,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a90b88,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_01a90d90,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_01a90f98,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a911a0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a913a8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a915b0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a917b8,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_01a919c0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01a91bc8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a91dd0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01a91fd8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_01a921e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a923e8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a925f0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01a927f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a92a00,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01a92c08,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01a92e10,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01a93018,0x200,param_2), cVar1 != '\0')))))))))) &&
          (cVar1 = (*param_1)(&DAT_01a93220,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_01a93428,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a93630,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a93838,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a93a40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a93c48,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_01a93e50,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01a94058,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a94260,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_01a94468,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_01a94670,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a94878,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a94a80,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a94c88,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a94e90,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01a95098,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01a952a0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a954a8,0x1e5,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00567784(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_01a95690,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a05e70,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a06078,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a06280,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_01a06488,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_01a06690,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a06898,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a06aa0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01a06ca8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a06eb0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a95898,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_01a95aa0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a95ca8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01a95eb0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01a960b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a962c0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a964c8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01a966d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a968d8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01a96ae0,0x200,param_2), cVar1 != '\0')))))))))) &&
        (((cVar1 = (*param_1)(&DAT_01a96ce8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a96ef0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01a970f8,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_01a97300,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01a97508,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_01a97710,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_01a97918,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a97b20,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a97d28,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a97f30,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a98138,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_01a98340,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01a98548,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a98750,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_01a98958,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01a98b60,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a98d68,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a98f70,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_01a99178,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a99380,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a99588,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01a99790,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a99998,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_01a99ba0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01a99da8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a99fb0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01a9a1b8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01a9a3c0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a9a5c8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_01a9a7d0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01a9a9d8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a9abe0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01a9ade8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a9aff0,0xb4,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00567b1b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_01a9b0a8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01a9b2b0,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_01a9b4b8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01a9b6c0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_01a9b8c8,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01a9bad0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a9bcd8,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_01a9bee0,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01a9c0e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a9c2f0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01a9c4f8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a9c700,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a9c908,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_01a9cb10,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01a9cd18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a9cf20,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01a9d128,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_01a9d330,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a9d538,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01a9d740,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01a9d948,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a9db50,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a9dd58,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01a9df60,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a9e168,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01a9e370,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01a9e578,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a9e780,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a9e988,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_01a9eb90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a9ed98,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01a9efa0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_01a9f1a8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01a9f3b0,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
      ((cVar1 = (*param_1)(&DAT_01a9f5b8,0x200,param_2), cVar1 != '\0' &&
       (((((((cVar1 = (*param_1)(&DAT_01a9f7c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a9f9c8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a9fbd0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01a9fdd8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a9ffe0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01aa01e8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01aa03f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01aa05f8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_01aa0800,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01aa0a08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01aa0c10,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01aa0e18,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01aa1020,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01aa1228,0x16e,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00567e5e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_01aa1398,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01aa15a0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01aa17a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01aa19b0,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_01aa1bb8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01aa1dc0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01aa1fc8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01aa21d0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01aa23d8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01aa25e0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01aa27e8,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_01aa29f0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01aa2bf8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_01aa2e00,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01aa3008,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01aa3210,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_01aa3418,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01aa3620,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01aa3828,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01aa3a30,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01aa3c38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01aa3e40,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_01aa4048,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01aa4250,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01aa4458,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01aa4660,0x200,param_2), cVar1 != '\0')))) &&
       ((((((cVar1 = (*param_1)(&DAT_01aa4868,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01aa4a70,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01aa4c78,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01aa4e80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01aa5088,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01aa5290,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01aa5498,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01aa56a0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01aa58a8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01aa5ab0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01aa5cb8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01aa5ec0,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01aa60c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01aa62d0,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_01aa64d8,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_01aa66e0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01aa68e8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01aa6af0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01aa6cf8,0xef,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0056815c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_01aa6de8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01aa6ff0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01aa17a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01aa19b0,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_01aa1bb8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01aa1dc0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01aa1fc8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01aa21d0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01aa23d8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01aa25e0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01aa27e8,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_01aa71f8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01aa7400,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_01aa7608,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01aa7810,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01aa7a18,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_01aa7c20,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01aa7e28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01aa8030,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01aa8238,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01aa8440,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01aa8648,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_01aa8850,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01aa8a58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01aa8c60,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01aa8e68,0x200,param_2), cVar1 != '\0')))) &&
       ((((((cVar1 = (*param_1)(&DAT_01aa9070,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01aa9278,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01aa9480,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01aa9688,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01aa9890,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01aa9a98,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01aa9ca0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01aa9ea8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01aaa0b0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01aaa2b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01aaa4c0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01aaa6c8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01aaa8d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01aaaad8,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_01aaace0,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_01aaaee8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01aab0f0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01aab2f8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01aab500,0xfb,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0056845a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_01aab600,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01a05e70,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_01a06078,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a06280,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01a06488,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01a06690,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a06898,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_01a06aa0,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_01a06ca8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a06eb0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01aab808,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01aaba10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01aabc18,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_01aabe20,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_01aac028,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01aac230,0x200,param_2), cVar1 != '\0')))) &&
      (((cVar1 = (*param_1)(&DAT_01aac438,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_01aac640,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01aac848,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01aaca50,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01aacc58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01aace60,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01aad068,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01aad270,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01aad478,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_01aad680,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_01aad888,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01aada90,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01aadc98,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_01aadea0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01aae0a8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01aae2b0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_01aae4b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01aae6c0,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_01aae8c8,0x200,param_2), cVar1 != '\0')) &&
           ((((((cVar1 = (*param_1)(&DAT_01aaead0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01aaecd8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01aaeee0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01aaf0e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01aaf2f0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_01aaf4f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01aaf700,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01aaf908,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_01aafb10,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01aafd18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01aaff20,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01ab0128,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01ab0330,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ab0538,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01ab0740,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_01ab0948,0x89,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005687be(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_01ab09d8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01ab0be0,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_01ab0de8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01ab0ff0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_01ab11f8,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01ab1400,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01ab1608,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_01ab1810,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01ab1a18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ab1c20,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01ab1e28,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01ab2030,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ab2238,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_01ab2440,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01ab2648,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ab2850,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01ab2a58,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_01ab2c60,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01ab2e68,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01ab3070,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01ab3278,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ab3480,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01ab3688,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01ab3890,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ab3a98,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01ab3ca0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01ab3ea8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ab40b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01ab42b8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_01ab44c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ab46c8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01ab48d0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_01ab4ad8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01ab4ce0,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
      ((cVar1 = (*param_1)(&DAT_01ab4ee8,0x200,param_2), cVar1 != '\0' &&
       (((((((cVar1 = (*param_1)(&DAT_01ab50f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ab52f8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01ab5500,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01ab5708,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ab5910,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01ab5b18,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01ab5d20,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01ab5f28,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_01ab6130,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01ab6338,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ab6540,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01ab6748,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01ab6950,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01ab6b58,0x126,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}


/*
Unable to decompile 'FUN_00568b00'
Cause: Exception while decompiling 00568b00: process: timeout

*/

/*
Unable to decompile 'FUN_0056b99c'
Cause: Exception while decompiling 0056b99c: process: timeout

*/

/*
Unable to decompile 'FUN_0056e838'
Cause: Exception while decompiling 0056e838: process: timeout

*/

/*
Unable to decompile 'FUN_005716c6'
Cause: Exception while decompiling 005716c6: process: timeout

*/

/*
Unable to decompile 'FUN_005741af'
Cause: Exception while decompiling 005741af: process: timeout

*/

/*
Unable to decompile 'FUN_00576ca4'
Cause: Exception while decompiling 00576ca4: process: timeout

*/

/*
Unable to decompile 'FUN_0057978b'
Cause: Exception while decompiling 0057978b: process: timeout

*/

/*
Unable to decompile 'FUN_0057c280'
Cause: Exception while decompiling 0057c280: process: timeout

*/

/*
Unable to decompile 'FUN_0057f097'
Cause: Exception while decompiling 0057f097: process: timeout

*/

/*
Unable to decompile 'FUN_00581ebc'
Cause: Exception while decompiling 00581ebc: process: timeout

*/

/*
Unable to decompile 'FUN_00584e3c'
Cause: Exception while decompiling 00584e3c: process: timeout

*/


undefined4 FUN_00587db8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_01e6d8a8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01e6b8d0,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_01e6bad8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01e6bce0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01e6bee8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01e6c0f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e6c2f8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_01e6c500,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_01e6c708,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e6c910,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01e6cb18,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01e6cd20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e6dab0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01e6dcb8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01e6dec0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e6e0c8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_01e6e2d0,0x200,param_2), cVar1 != '\0')))))) &&
     ((((((((((((cVar1 = (*param_1)(&DAT_01e6e4d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e6e6e0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e6e8e8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01e6eaf0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e6ecf8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_01e6ef00,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01e6f108,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e6f310,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01e6f518,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_01e6f720,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e6f928,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e6fb30,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_01e6fd38,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01e6ff40,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01e70148,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01e70350,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e70558,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01e70760,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01e70968,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e70b70,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e70d78,0x200,param_2), cVar1 != '\0')))))))))))) &&
          (((cVar1 = (*param_1)(&DAT_01e70f80,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e71188,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01e71390,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01e71598,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e717a0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01e719a8,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_01e71bb0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e71db8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e71fc0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01e721c8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e723d0,0x200,param_2), cVar1 != '\0')))))))))))))) &&
         (((((cVar1 = (*param_1)(&DAT_01e725d8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_01e727e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e729e8,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_01e72bf0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_01e72df8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e73000,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e73208,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_01e73410,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e73618,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01e73820,0x200,param_2), cVar1 != '\0')))))) &&
           ((((cVar1 = (*param_1)(&DAT_01e73a28,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e73c30,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01e73e38,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_01e74040,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e74248,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e74450,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_01e74658,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01e74860,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_01e74a68,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01e74c70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e74e78,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01e75080,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_01e75288,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e75490,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01e75698,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01e758a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01e75aa8,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_01e75cb0,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_01e75eb8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01e760c0,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_01e762c8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01e764d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e766d8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01e768e0,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_01e76ae8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01e76cf0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01e76ef8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01e77100,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e77308,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_01e77510,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01e77718,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e77920,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01e77b28,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01e77d30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e77f38,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01e78140,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01e78348,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01e78550,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01e78758,0x200,param_2), cVar1 != '\0' &&
             (((((cVar1 = (*param_1)(&DAT_01e78960,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e78b68,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e78d70,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01e78f78,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e79180,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_01e79388,0x200,param_2), cVar1 != '\0')))))))))) &&
         (((cVar1 = (*param_1)(&DAT_01e79590,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e79798,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01e799a0,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_01e79ba8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01e79db0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01e79fb8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01e7a1c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01e7a3c8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01e7a5d0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01e7a7d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e6cf28,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_01e6d130,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01e6d338,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e6d540,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01e7a9e0,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_01e6d748,0x15b,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005885b1(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_01e7abe8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01abfa00,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_01abfc08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01abfe10,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01ac0018,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01ac0220,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ac0428,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_01ac0630,0x200,param_2), cVar1 != '\0')) &&
        ((((((cVar1 = (*param_1)(&DAT_01ac0838,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ac0a40,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01e7adf0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01e7aff8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e7b200,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01e7b408,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01e7b610,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e7b818,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_01e7ba20,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((((((cVar1 = (*param_1)(&DAT_01e7bc28,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e7be30,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e7c038,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01e7c240,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e7c448,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_01e7c650,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01e7c858,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e7ca60,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01e7cc68,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_01e7ce70,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e7d078,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e7d280,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_01e7d488,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01e7d690,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01e7d898,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01e7daa0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e7dca8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01e7deb0,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01e7e0b8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e7e2c0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e7e4c8,0x200,param_2), cVar1 != '\0')))))))))))) &&
          (((cVar1 = (*param_1)(&DAT_01e7e6d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e7e8d8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01e7eae0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01e7ece8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e7eef0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01e7f0f8,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_01e7f300,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e7f508,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e7f710,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01e7f918,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e7fb20,0x200,param_2), cVar1 != '\0')))))))))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_01e7fd28,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01e7ff30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e80138,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_01e80340,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01e80548,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e80750,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e80958,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_01e80b60,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e80d68,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e80f70,0x200,param_2), cVar1 != '\0')))))) &&
            ((((cVar1 = (*param_1)(&DAT_01e81178,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e81380,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01e81588,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01e81790,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e81998,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e81ba0,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_01e81da8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e81fb0,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_01e821b8,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_01e823c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01e825c8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01e827d0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_01e829d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e82be0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e82de8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01e82ff0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e831f8,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_01e83400,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_01e83608,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e83810,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_01e83a18,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01e83c20,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e83e28,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01e84030,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_01e84238,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e84440,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01e84648,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01e84850,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e84a58,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_01e84c60,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01e84e68,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e85070,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01e85278,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01e85480,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e85688,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01e85890,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01e85a98,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01e85ca0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01e85ea8,0x200,param_2), cVar1 != '\0' &&
             (((((cVar1 = (*param_1)(&DAT_01e860b0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e862b8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e864c0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01e866c8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e868d0,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_01e86ad8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_01e86ce0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01e86ee8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01e870f0,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01e872f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e87500,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01e87708,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01e87910,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e87b18,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01e87d20,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01e87f28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e88130,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     ((cVar1 = (*param_1)(&DAT_01e88338,0x200,param_2), cVar1 != '\0' &&
      (((cVar1 = (*param_1)(&DAT_01e88540,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01e88748,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01e8894c,8,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00588d96(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_01e88958,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01a7eda0,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_01a7efa8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a7f1b0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a7f3b8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01a7f5c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a7f7c8,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_01a7f9d0,0x200,param_2), cVar1 != '\0')) &&
        ((((((cVar1 = (*param_1)(&DAT_01a7fbd8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a7fde0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a7ffe8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01e88b60,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e88d68,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01e88f70,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01e89178,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e89380,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_01e89588,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((((((cVar1 = (*param_1)(&DAT_01e89790,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e89998,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e89ba0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01e89da8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e89fb0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_01e8a1b8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01e8a3c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e8a5c8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01e8a7d0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_01e8a9d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e8abe0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e8ade8,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_01e8aff0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01e8b1f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01e8b400,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01e8b608,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e8b810,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01e8ba18,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01e8bc20,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e8be28,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e8c030,0x200,param_2), cVar1 != '\0')))))))))))) &&
          (((cVar1 = (*param_1)(&DAT_01e8c238,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e8c440,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01e8c648,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01e8c850,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e8ca58,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01e8cc60,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_01e8ce68,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e8d070,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e8d278,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01e8d480,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e8d688,0x200,param_2), cVar1 != '\0')))))))))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_01e8d890,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01e8da98,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e8dca0,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_01e8dea8,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01e8e0b0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e8e2b8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e8e4c0,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_01e8e6c8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e8e8d0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e8ead8,0x200,param_2), cVar1 != '\0')))))) &&
            ((((cVar1 = (*param_1)(&DAT_01e8ece0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e8eee8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01e8f0f0,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01e8f2f8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e8f500,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e8f708,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_01e8f910,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e8fb18,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_01e8fd20,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_01e8ff28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01e90130,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01e90338,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_01e90540,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e90748,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e90950,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01e90b58,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e90d60,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_01e90f68,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_01e91170,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e91378,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_01e91580,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01e91788,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e91990,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01e91b98,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_01e91da0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e91fa8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01e921b0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01e923b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e925c0,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_01e927c8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01e929d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e92bd8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01e92de0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01e92fe8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e931f0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01e933f8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01e93600,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01e93808,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01e93a10,0x200,param_2), cVar1 != '\0' &&
             (((((cVar1 = (*param_1)(&DAT_01e93c18,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e93e20,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e94028,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01e94230,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e94438,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_01e94640,0x200,param_2), cVar1 != '\0')))))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_01e94848,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01e94a50,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01e94c58,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01e94e60,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e95068,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01e95270,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01e95478,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e95680,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01e95888,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01e95a90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e95c98,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     ((cVar1 = (*param_1)(&DAT_01e95ea0,0x200,param_2), cVar1 != '\0' &&
      (((cVar1 = (*param_1)(&DAT_01e960a8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01e962b0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01e964b8,0x13a,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0058957e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_01e965f8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01e96800,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_01e96a08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01e96c10,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01e96e18,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01e97020,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e97228,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_01e97430,0x200,param_2), cVar1 != '\0')) &&
        ((((((cVar1 = (*param_1)(&DAT_01e97638,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01e97840,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01e97a48,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01e97c50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e97e58,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01e98060,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01e98268,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e98470,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_01e98678,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((((((cVar1 = (*param_1)(&DAT_01e98880,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e98a88,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e98c90,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01e98e98,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e990a0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_01e992a8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01e994b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e996b8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01e998c0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_01e99ac8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e99cd0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e99ed8,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_01e9a0e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01e9a2e8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01e9a4f0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01e9a6f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e9a900,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01e9ab08,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01e9ad10,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e9af18,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e9b120,0x200,param_2), cVar1 != '\0')))))))))))) &&
          (((cVar1 = (*param_1)(&DAT_01e9b328,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01e9b530,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01e9b738,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01e9b940,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e9bb48,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01e9bd50,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_01e9bf58,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e9c160,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e9c368,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01e9c570,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e9c778,0x200,param_2), cVar1 != '\0')))))))))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_01e9c980,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01e9cb88,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e9cd90,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_01e9cf98,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01e9d1a0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e9d3a8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e9d5b0,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_01e9d7b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e9d9c0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e9dbc8,0x200,param_2), cVar1 != '\0')))))) &&
            ((((cVar1 = (*param_1)(&DAT_01e9ddd0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e9dfd8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01e9e1e0,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01e9e3e8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01e9e5f0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01e9e7f8,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_01e9ea00,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01e9ec08,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_01e9ee10,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_01e9f018,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01e9f220,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01e9f428,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_01e9f630,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01e9f838,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01e9fa40,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01e9fc48,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01e9fe50,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_01ea0058,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_01ea0260,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ea0468,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_01ea0670,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01ea0878,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01ea0a80,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01ea0c88,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_01ea0e90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01ea1098,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01ea12a0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01ea14a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ea16b0,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_01ea18b8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01ea1ac0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01ea1cc8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01ea1ed0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01ea20d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ea22e0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01ea24e8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01ea26f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ea28f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01ea2b00,0x200,param_2), cVar1 != '\0' &&
             (((((cVar1 = (*param_1)(&DAT_01ea2d08,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01ea2f10,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01ea3118,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01ea3320,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01ea3528,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_01ea3730,0x200,param_2), cVar1 != '\0')))))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_01ea3938,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01ea3b40,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01ea3d48,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01ea3f50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ea4158,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01ea4360,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01ea4568,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ea4770,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01ea4978,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01ea4b80,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ea4d88,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     ((cVar1 = (*param_1)(&DAT_01ea4f90,0x200,param_2), cVar1 != '\0' &&
      (((cVar1 = (*param_1)(&DAT_01ea5198,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01ea53a0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01ea55a4,0x14,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00589d63(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_01ea55c0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01a803f8,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_01a80600,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01a80808,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01a80a10,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01a80c18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01a80e20,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_01b18bf8,0x200,param_2), cVar1 != '\0')) &&
        ((((((cVar1 = (*param_1)(&DAT_01a81230,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a81438,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a81640,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01ea57c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ea59d0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01ea5bd8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01ea5de0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ea5fe8,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_01ea61f0,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((((((cVar1 = (*param_1)(&DAT_01ea63f8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01ea6600,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01ea6808,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01ea6a10,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01ea6c18,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_01ea6e20,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_01ea7028,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01ea7230,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01ea7438,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_01ea7640,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01ea7848,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01ea7a50,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_01ea7c58,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ea7e60,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01ea8068,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01ea8270,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01ea8478,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01ea8680,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01ea8888,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01ea8a90,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01ea8c98,0x200,param_2), cVar1 != '\0')))))))))))) &&
          (((cVar1 = (*param_1)(&DAT_01ea8ea0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ea90a8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01ea92b0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01ea94b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01ea96c0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01ea98c8,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_01ea9ad0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01ea9cd8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01ea9ee0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01eaa0e8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01eaa2f0,0x200,param_2), cVar1 != '\0')))))))))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_01eaa4f8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01eaa700,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01eaa908,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_01eaab10,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01eaad18,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01eaaf20,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01eab128,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_01eab330,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01eab538,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01eab740,0x200,param_2), cVar1 != '\0')))))) &&
            ((((cVar1 = (*param_1)(&DAT_01eab948,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01eabb50,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01eabd58,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_01eabf60,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01eac168,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01eac370,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_01eac578,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01eac780,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_01eac988,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_01eacb90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01eacd98,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01eacfa0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_01ead1a8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01ead3b0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_01ead5b8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01ead7c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01ead9c8,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_01eadbd0,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_01eaddd8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01eadfe0,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_01eae1e8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_01eae3f0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01eae5f8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01eae800,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_01eaea08,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01eaec10,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01eaee18,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01eaf020,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01eaf228,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_01eaf430,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01eaf638,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01eaf840,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01eafa48,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01eafc50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01eafe58,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01eb0060,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01eb0268,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01eb0470,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01eb0678,0x200,param_2), cVar1 != '\0' &&
             (((((cVar1 = (*param_1)(&DAT_01eb0880,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01eb0a88,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_01eb0c90,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_01eb0e98,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01eb10a0,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_01eb12a8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_01eb14b0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01eb16b8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01eb18c0,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01eb1ac8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01eb1cd0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01eb1ed8,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01eb20e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01eb22e8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01eb24f0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01eb26f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01eb2900,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     ((cVar1 = (*param_1)(&DAT_01eb2b08,0x200,param_2), cVar1 != '\0' &&
      (((cVar1 = (*param_1)(&DAT_01eb2d10,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01eb2f18,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01eb3120,0x1ac,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0058a54b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_01eb32d0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01a803f8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_01a80600,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01a80808,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01a80a10,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_01a80c18,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01a80e20,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_01b18bf8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_01a81230,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01a81438,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01a81640,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01eb34d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01eb36e0,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01eb38e8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01eb3af0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01eb3cf8,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01eb3f00,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01eb4108,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01eb4310,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01eb4518,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_01eb4720,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01eb4928,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_01eb4b30,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_01eb4d38,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01eb4f40,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_01eb5148,0x200,param_2), cVar1 != '\0')) &&
            ((((cVar1 = (*param_1)(&DAT_01eb5350,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01eb5558,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01eb5760,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_01eb5968,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01eb5b70,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01eb5d78,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_01eb5f80,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_01eb6188,0x200,param_2), cVar1 != '\0')))))))))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_01eb6390,0x200,param_2), cVar1 != '\0' &&
        (((((((cVar1 = (*param_1)(&DAT_01eb6598,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01eb67a0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01eb69a8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01eb6bb0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01eb6db8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_01eb6fc0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01eb71c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01eb73d0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_01eb75d8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_01eb77e0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01eb79e8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01eb7bf0,0x200,param_2), cVar1 != '\0')))))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_01eb7df8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01eb8000,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_01eb8208,0x200,param_2), cVar1 != '\0')) &&
      ((((((cVar1 = (*param_1)(&DAT_01eb8410,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01eb8618,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01eb8820,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_01eb8a28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01eb8c30,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01eb8e38,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_01eb9040,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01eb9248,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_01eb9450,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01eb9658,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01eb9860,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01eb9a68,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_01eb9c70,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01eb9e78,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01eba080,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01eba288,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01eba490,0x200,param_2), cVar1 != '\0')))))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01eba698,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_01eba8a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ebaaa8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01ebacb0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01ebaeb8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01ebb0c0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01ebb2c8,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_01ebb4d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ebb6d8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01ebb8e0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01ebbae8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ebbcf0,0x200,param_2), cVar1 != '\0')))))))) &&
        (((((cVar1 = (*param_1)(&DAT_01ebbef8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01ebc100,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01ebc308,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01ebc510,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_01ebc718,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ebc920,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_01ebcb28,0x200,param_2), cVar1 != '\0' &&
             (((((cVar1 = (*param_1)(&DAT_01ebcd30,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_01ebcf38,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_01ebd140,0x200,param_2), cVar1 != '\0' &&
                 ((((cVar1 = (*param_1)(&DAT_01ebd348,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_01ebd550,0x200,param_2), cVar1 != '\0')) &&
                   (cVar1 = (*param_1)(&DAT_01ebd758,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_01ebd960,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_01ebdb68,0x200,param_2), cVar1 != '\0')))))))) &&
               (cVar1 = (*param_1)(&DAT_01ebdd70,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_01ebdf78,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01ebe180,0x200,param_2), cVar1 != '\0')))))))))) &&
          (((cVar1 = (*param_1)(&DAT_01ebe388,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01ebe590,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01ebe798,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01ebe9a0,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_01ebeba8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ebedb0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01ebefb8,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_01ebf1c0,0x11d,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0058ac46(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_01ebf2e0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01ab6e88,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_01ab7090,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01ab7298,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_01ab74a0,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_01ab76a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01ab78b0,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_01ab7ab8,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_01ab7cc0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01ab7ec8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01ab80d0,0x200,param_2), cVar1 != '\0')))))) &&
     ((((((cVar1 = (*param_1)(&DAT_01ebf4e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01ebf6f0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01ebf8f8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01ebfb00,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ebfd08,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01ebff10,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_01ec0118,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ec0320,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01ec0528,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01ec0730,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ec0938,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01ec0b40,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01ec0d48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ec0f50,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01ec1158,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_01ec1360,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_01ec1568,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_01ec1770,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_01ec1978,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01ec1b80,0x200,param_2), cVar1 != '\0')))))))))))))) &&
       (((((cVar1 = (*param_1)(&DAT_01ec1d88,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01ec1f90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ec2198,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01ec23a0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01ec25a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ec27b0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01ec29b8,0x200,param_2), cVar1 != '\0')))) &&
        (((((cVar1 = (*param_1)(&DAT_01ec2bc0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ec2dc8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01ec2fd0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01ec31d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ec33e0,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_01ec35e8,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01ec37f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ec39f8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01ec3c00,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_01ec3e08,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01ec4010,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01ec4218,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01ec4420,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ec4628,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_01ec4830,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_01ec4a38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ec4c40,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01ec4e48,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01ec5050,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ec5258,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_01ec5460,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01ec5668,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01ec5870,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01ec5a78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01ec5c7c,0x2c,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}


/*
Unable to decompile 'FUN_0058b073'
Cause: Exception while decompiling 0058b073: process: timeout

*/

/*
Unable to decompile 'FUN_0058e085'
Cause: Exception while decompiling 0058e085: process: timeout

*/

/*
Unable to decompile 'FUN_0059109f'
Cause: Exception while decompiling 0059109f: process: timeout

*/

/*
Unable to decompile 'FUN_005940b4'
Cause: Exception while decompiling 005940b4: process: timeout

*/


undefined4 FUN_005970c9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_0202d328,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01ec5cb0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01ec5eb8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ec60c0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01ec62c8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01ec64d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ec66d8,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_0202d530,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_0202d738,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0202d940,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0202db48,0x200,param_2), cVar1 != '\0')))) &&
      (((((((cVar1 = (*param_1)(&DAT_0202dd50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0202df58,0x200,param_2), cVar1 != '\0')) &&
           (((((cVar1 = (*param_1)(&DAT_0202e160,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_0202e368,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0202e570,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_0202e778,0x200,param_2), cVar1 != '\0')) &&
             (((((cVar1 = (*param_1)(&DAT_0202e980,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0202eb88,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0202ed90,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0202ef98,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0202f1a0,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_0202f3a8,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_0202f5b0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0202f7b8,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_0202f9c0,0x200,param_2), cVar1 != '\0')))) &&
          (((((cVar1 = (*param_1)(&DAT_0202fbc8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0202fdd0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0202ffd8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_020301e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020303e8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_020305f0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_020307f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02030a00,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02030c08,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02030e10,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02031018,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02031220,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02031428,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02031630,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_02031838,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02031a40,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02031c48,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02031e50,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_02032058,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02032260,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02032468,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02032670,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02032878,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02032a80,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02032c88,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02032e90,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02033098,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_020332a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020334a8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_020336b0,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_020338b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02033ac0,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02033cc8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02033ed0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020340d8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_020342e0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_020344e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020346f0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020348f8,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02034b00,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02034d08,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02034f10,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02035118,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02035320,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02035528,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02035730,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02035938,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02035b40,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02035d48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02035f50,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02036158,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02036360,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02036568,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_02036770,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02036978,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02036b80,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02036d88,0x200,param_2), cVar1 != '\0')))) &&
      (cVar1 = (*param_1)(&DAT_02036f90,0x148,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0059765e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_020370e0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01ec5cb0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01ec5eb8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ec60c0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01ec62c8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01ec64d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ec66d8,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_0202d530,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_0202d738,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0202d940,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_020372e8,0x200,param_2), cVar1 != '\0')))) &&
      (((((((cVar1 = (*param_1)(&DAT_020374f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020376f8,0x200,param_2), cVar1 != '\0')) &&
           (((((cVar1 = (*param_1)(&DAT_02037900,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02037b08,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02037d10,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02037f18,0x200,param_2), cVar1 != '\0')) &&
             (((((cVar1 = (*param_1)(&DAT_02038120,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02038328,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02038530,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02038738,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02038940,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_02038b48,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02038d50,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02038f58,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_02039160,0x200,param_2), cVar1 != '\0')))) &&
          (((((cVar1 = (*param_1)(&DAT_02039368,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02039570,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0202ffd8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_020301e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020303e8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_020305f0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02039778,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02030a00,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02030c08,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02030e10,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02031018,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02039980,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02039b88,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02039d90,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_02039f98,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0203a1a0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0203a3a8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_0203a5b0,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_0203a7b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0203a9c0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0203abc8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0203add0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0203afd8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_0203b1e0,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_0203b3e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0203b5f0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0203b7f8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_0203ba00,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0203bc08,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0203be10,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_0203c018,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0203c220,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_0203c428,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_0203c630,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0203c838,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0203ca40,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0203cc48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0203ce50,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0203d058,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_0203d260,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0203d468,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0203d670,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_0203d878,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0203da80,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0203dc88,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_0203de90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0203e098,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0203e2a0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0203e4a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0203e6b0,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_0203e8b8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0203eac0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0203ecc8,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_0203eed0,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_0203f0d8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0203f2e0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0203f4e8,0x200,param_2), cVar1 != '\0')))) &&
      (cVar1 = (*param_1)(&DAT_0203f6f0,0x14d,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00597bf3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_0203f840,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01ec7d30,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01ec7f38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ec8140,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01ec8348,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01ec8550,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ec8758,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_0202d530,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_0202d738,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0202d940,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0203fa48,0x200,param_2), cVar1 != '\0')))) &&
      (((((((cVar1 = (*param_1)(&DAT_0203fc50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0203fe58,0x200,param_2), cVar1 != '\0')) &&
           (((((cVar1 = (*param_1)(&DAT_02040060,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02040268,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02040470,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02040678,0x200,param_2), cVar1 != '\0')) &&
             (((((cVar1 = (*param_1)(&DAT_02040880,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02040a88,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02040c90,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02040e98,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020410a0,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_020412a8,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_020414b0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020416b8,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_020418c0,0x200,param_2), cVar1 != '\0')))) &&
          (((((cVar1 = (*param_1)(&DAT_02041ac8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02041cd0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02041ed8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_020420e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020422e8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_020424f0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_020426f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02042900,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02042b08,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02042d10,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02042f18,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02043120,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02043328,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02043530,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_02043738,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02043940,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02043b48,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02043d50,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_02043f58,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02044160,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02044368,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02044570,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02044778,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02044980,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02044b88,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02044d90,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02044f98,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_020451a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020453a8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_020455b0,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_020457b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020459c0,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02045bc8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02045dd0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02045fd8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_020461e0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_020463e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020465f0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020467f8,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02046a00,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02046c08,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02046e10,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02047018,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02047220,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02047428,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02047630,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02047838,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02047a40,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02047c48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02047e50,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02048058,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02048260,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02048468,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_02048670,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02048878,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02048a80,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02048c88,0x200,param_2), cVar1 != '\0')))) &&
      (cVar1 = (*param_1)(&DAT_02048e90,0x152,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00598188(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_02048fe8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01ec5cb0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_01ec5eb8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ec60c0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01ec62c8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01ec64d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ec66d8,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_0202d530,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_0202d738,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0202d940,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_020491f0,0x200,param_2), cVar1 != '\0')))) &&
      (((((((cVar1 = (*param_1)(&DAT_020493f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02049600,0x200,param_2), cVar1 != '\0')) &&
           (((((cVar1 = (*param_1)(&DAT_02040060,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02049808,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02040470,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02049a10,0x200,param_2), cVar1 != '\0')) &&
             (((((cVar1 = (*param_1)(&DAT_02049c18,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02049e20,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0204a028,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0204a230,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0204a438,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_0204a640,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_0204a848,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0204aa50,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_0204ac58,0x200,param_2), cVar1 != '\0')))) &&
          (((((cVar1 = (*param_1)(&DAT_0204ae60,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0204b068,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0204b270,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_0204b478,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0204b680,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0204b888,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0204ba90,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0204bc98,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_0204bea0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0204c0a8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0204c2b0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0204c4b8,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_0204c6c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0204c8c8,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_0204cad0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0204ccd8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0204cee0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_0204d0e8,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_0204d2f0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0204d4f8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0204d700,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0204d908,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0204db10,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_0204dd18,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_0204df20,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0204e128,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0204e330,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_0204e538,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0204e740,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0204e948,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_0204eb50,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0204ed58,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_0204ef60,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_0204f168,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0204f370,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0204f578,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0204f780,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0204f988,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0204fb90,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_0204fd98,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0204ffa0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_020501a8,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_020503b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020505b8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_020507c0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_020509c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02050bd0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02050dd8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02050fe0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020511e8,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_020513f0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_020515f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02051800,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_02051a08,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02051c10,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02051e18,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02052020,0x200,param_2), cVar1 != '\0')))) &&
      (cVar1 = (*param_1)(&DAT_02052228,0x151,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0059871d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_02052380,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01ec5cb0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01ec5eb8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01ec60c0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01ec62c8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01ec64d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ec66d8,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_01ec68e0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01ec6ae8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01ec6cf0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01ec6ef8,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02052588,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02052790,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02052998,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02052ba0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02052da8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02052fb0,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_020531b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020533c0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_020535c8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_020537d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020539d8,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((((cVar1 = (*param_1)(&DAT_02053be0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02053de8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02053ff0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_020541f8,0x200,param_2), cVar1 != '\0' &&
         ((((((cVar1 = (*param_1)(&DAT_02054400,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02054608,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02054810,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02054a18,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02054c20,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02054e28,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02055030,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02055238,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02055440,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02055648,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02055850,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02055a58,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02055c60,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02055e68,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02056070,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02056278,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02056480,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02056688,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02056890,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02056a98,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02056ca0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02056ea8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_020570b0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_020572b8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_020574c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020576c8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_020578d0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02057ad8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02057ce0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02057ee8,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((((cVar1 = (*param_1)(&DAT_020580f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020582f8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02058500,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02058708,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02058910,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02058b18,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02058d20,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02058f28,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02059130,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02059338,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02059540,0x200,param_2), cVar1 != '\0')))))))))) &&
        (((((cVar1 = (*param_1)(&DAT_02059748,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02059950,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02059b58,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02059d60,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02059f68,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0205a170,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0205a378,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0205a580,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0205a788,0x200,param_2), cVar1 != '\0')))))))))) &&
           (cVar1 = (*param_1)(&DAT_0205a990,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0205ab98,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0205ada0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_0205afa8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0205b1b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0205b3b8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0205b5c0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_0205b7c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0205b9d0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0205bbd8,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((((cVar1 = (*param_1)(&DAT_0205bde0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0205bfe8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0205c1f0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0205c3f8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0205c600,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0205c808,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_0205ca10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0205cc18,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0205ce20,0x200,param_2), cVar1 != '\0' &&
         ((((((cVar1 = (*param_1)(&DAT_0205d028,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0205d230,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0205d438,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_0205d640,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0205d848,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0205da50,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0205dc58,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0205de60,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_0205e068,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0205e270,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0205e478,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_0205e680,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0205e888,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0205ea90,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0205ec98,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_0205eea0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0205f0a8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0205f2b0,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((((((cVar1 = (*param_1)(&DAT_0205f4b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0205f6c0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0205f8c8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0205fad0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0205fcd8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0205fee0,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_020600e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020602f0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020604f8,0x200,param_2), cVar1 != '\0')))) &&
          (((((((cVar1 = (*param_1)(&DAT_02060700,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02060908,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02060b10,0x200,param_2), cVar1 != '\0' &&
                ((((((cVar1 = (*param_1)(&DAT_02060d18,0x200,param_2), cVar1 != '\0' &&
                     (cVar1 = (*param_1)(&DAT_02060f20,0x200,param_2), cVar1 != '\0')) &&
                    (cVar1 = (*param_1)(&DAT_02061128,0x200,param_2), cVar1 != '\0')) &&
                   ((cVar1 = (*param_1)(&DAT_02061330,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02061538,0x200,param_2), cVar1 != '\0')))) &&
                  (cVar1 = (*param_1)(&DAT_02061740,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02061948,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02061b50,0x200,param_2), cVar1 != '\0')))))))) &&
              ((cVar1 = (*param_1)(&DAT_02061d58,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_02061f60,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02062168,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02062370,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02062578,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02062780,0x200,param_2), cVar1 != '\0')))))))) &&
             (((((cVar1 = (*param_1)(&DAT_02062988,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02062b90,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02062d98,0x200,param_2), cVar1 != '\0')))) &&
                (cVar1 = (*param_1)(&DAT_02062fa0,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_020631a8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_020633b0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_020635b8,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_020637c0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020639c8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02063bd0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02063dd8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02063fe0,0x200,param_2), cVar1 != '\0')))))))))) &&
            (((cVar1 = (*param_1)(&DAT_020641e8,0x200,param_2), cVar1 != '\0' &&
              (((((((cVar1 = (*param_1)(&DAT_020643f0,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_020645f8,0x200,param_2), cVar1 != '\0')) &&
                   (cVar1 = (*param_1)(&DAT_02064800,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_02064a08,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02064c10,0x200,param_2), cVar1 != '\0')))) &&
                 ((cVar1 = (*param_1)(&DAT_02064e18,0x200,param_2), cVar1 != '\0' &&
                  ((cVar1 = (*param_1)(&DAT_02065020,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02065228,0x200,param_2), cVar1 != '\0')))))) &&
                ((cVar1 = (*param_1)(&DAT_02065430,0x200,param_2), cVar1 != '\0' &&
                 (((cVar1 = (*param_1)(&DAT_02065638,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02065840,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02065a48,0x200,param_2), cVar1 != '\0')))))) &&
               (((cVar1 = (*param_1)(&DAT_02065c50,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02065e58,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02066060,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02066268,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02066470,0x200,param_2), cVar1 != '\0')))))))))) &&
             (cVar1 = (*param_1)(&DAT_02066678,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02066880,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02066a88,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02066c90,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02066e98,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020670a0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_020672a8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_020674b0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_020676b8,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (((((cVar1 = (*param_1)(&DAT_020678c0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02067ac8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02067cd0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02067ed8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_020680e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_020682e8,0x200,param_2), cVar1 != '\0')))))) &&
            ((((cVar1 = (*param_1)(&DAT_020684f0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_020686f8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02068900,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02068b08,0x200,param_2), cVar1 != '\0')) &&
             ((((cVar1 = (*param_1)(&DAT_02068d10,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02068f18,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02069120,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02069328,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02069530,0x200,param_2), cVar1 != '\0')))))))) &&
           (((((cVar1 = (*param_1)(&DAT_02069738,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02069940,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02069b48,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02069d50,0x200,param_2), cVar1 != '\0')) &&
             ((((((cVar1 = (*param_1)(&DAT_02069f58,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0206a160,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_0206a368,0x200,param_2), cVar1 != '\0')) &&
                (((cVar1 = (*param_1)(&DAT_0206a570,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0206a778,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_0206a980,0x200,param_2), cVar1 != '\0' &&
                  ((cVar1 = (*param_1)(&DAT_0206ab88,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_0206ad90,0x200,param_2), cVar1 != '\0')))))))) &&
               (cVar1 = (*param_1)(&DAT_0206af98,0x200,param_2), cVar1 != '\0')) &&
              (((((cVar1 = (*param_1)(&DAT_0206b1a0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0206b3a8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_0206b5b0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_0206b7b8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0206b9c0,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_0206bbc8,0x200,param_2), cVar1 != '\0')))))) &&
            (((((cVar1 = (*param_1)(&DAT_0206bdd0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0206bfd8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0206c1e0,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_0206c3e8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0206c5f0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_0206c7f8,0x200,param_2), cVar1 != '\0')))))) &&
              ((((cVar1 = (*param_1)(&DAT_0206ca00,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0206cc08,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0206ce10,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0206d018,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0206d220,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_0206d428,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_0206d630,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0206d838,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0206da40,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_0206dc48,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0206de50,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_0206e058,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0206e260,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0206e468,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0206e670,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_0206e878,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0206ea80,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0206ec88,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0206ee90,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0206f098,0x200,param_2), cVar1 != '\0')))))))))) &&
          (cVar1 = (*param_1)(&DAT_0206f2a0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_0206f4a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0206f6b0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_0206f8b8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0206fac0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0206fcc8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0206fed0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_020700d8,0x17a,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00599776(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_02070258,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01ec5cb0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01ec5eb8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01ec60c0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01ec62c8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01ec64d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ec66d8,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_01ec68e0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01ec6ae8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01ec6cf0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01ec7100,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02070460,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02070668,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02070870,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02070a78,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02070c80,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02070e88,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02071090,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02071298,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_020714a0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_020716a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020718b0,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((((cVar1 = (*param_1)(&DAT_02071ab8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02071cc0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02071ec8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_020720d0,0x200,param_2), cVar1 != '\0' &&
         ((((((cVar1 = (*param_1)(&DAT_020722d8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020724e0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_020726e8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_020728f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02072af8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02072d00,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02055030,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02055238,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02072f08,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02073110,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02073318,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02073520,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02073728,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02073930,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02073b38,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02073d40,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02073f48,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02074150,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02074358,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02074560,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02074768,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02074970,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02074b78,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02074d80,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02074f88,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02075190,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02075398,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_020755a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020757a8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_020759b0,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02075bb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02075dc0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02075fc8,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_020761d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020763d8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_020765e0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_020767e8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020769f0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02076bf8,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02076e00,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02077008,0x200,param_2), cVar1 != '\0')))))))))) &&
        (((((cVar1 = (*param_1)(&DAT_02077210,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02077418,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02077620,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02077828,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02077a30,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02077c38,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02077e40,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02078048,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02078250,0x200,param_2), cVar1 != '\0')))))))))) &&
           (cVar1 = (*param_1)(&DAT_02078458,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02078660,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02078868,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02078a70,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02078c78,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02078e80,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02079088,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02079290,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02079498,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020796a0,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((((cVar1 = (*param_1)(&DAT_020798a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02079ab0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02079cb8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02079ec0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0207a0c8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0207a2d0,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_0207a4d8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0207a6e0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0207a8e8,0x200,param_2), cVar1 != '\0' &&
         ((((((cVar1 = (*param_1)(&DAT_0207aaf0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0207acf8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0207af00,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_0207b108,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0207b310,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0207b518,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0207b720,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0207b928,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_0207bb30,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0207bd38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0207bf40,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_0207c148,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0207c350,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0207c558,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0207c760,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_0207c968,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0207cb70,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0207cd78,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((((((cVar1 = (*param_1)(&DAT_0207cf80,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0207d188,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0207d390,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0207d598,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0207d7a0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0207d9a8,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_0207dbb0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0207ddb8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0207dfc0,0x200,param_2), cVar1 != '\0')))) &&
          (((((((cVar1 = (*param_1)(&DAT_0207e1c8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0207e3d0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0207e5d8,0x200,param_2), cVar1 != '\0' &&
                ((((((cVar1 = (*param_1)(&DAT_0207e7e0,0x200,param_2), cVar1 != '\0' &&
                     (cVar1 = (*param_1)(&DAT_0207e9e8,0x200,param_2), cVar1 != '\0')) &&
                    (cVar1 = (*param_1)(&DAT_0207ebf0,0x200,param_2), cVar1 != '\0')) &&
                   ((cVar1 = (*param_1)(&DAT_0207edf8,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_0207f000,0x200,param_2), cVar1 != '\0')))) &&
                  (cVar1 = (*param_1)(&DAT_0207f208,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_0207f410,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0207f618,0x200,param_2), cVar1 != '\0')))))))) &&
              ((cVar1 = (*param_1)(&DAT_0207f820,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_0207fa28,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0207fc30,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_0207fe38,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02080040,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02080248,0x200,param_2), cVar1 != '\0')))))))) &&
             (((((cVar1 = (*param_1)(&DAT_02080450,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02080658,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02080860,0x200,param_2), cVar1 != '\0')))) &&
                (cVar1 = (*param_1)(&DAT_02080a68,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_02080c70,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02080e78,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02081080,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_02081288,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02081490,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02081698,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_020818a0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02081aa8,0x200,param_2), cVar1 != '\0')))))))))) &&
            (((cVar1 = (*param_1)(&DAT_02081cb0,0x200,param_2), cVar1 != '\0' &&
              (((((((cVar1 = (*param_1)(&DAT_02081eb8,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_020820c0,0x200,param_2), cVar1 != '\0')) &&
                   (cVar1 = (*param_1)(&DAT_020822c8,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_020824d0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_020826d8,0x200,param_2), cVar1 != '\0')))) &&
                 ((cVar1 = (*param_1)(&DAT_020828e0,0x200,param_2), cVar1 != '\0' &&
                  ((cVar1 = (*param_1)(&DAT_02082ae8,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02082cf0,0x200,param_2), cVar1 != '\0')))))) &&
                ((cVar1 = (*param_1)(&DAT_02082ef8,0x200,param_2), cVar1 != '\0' &&
                 (((cVar1 = (*param_1)(&DAT_02083100,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02083308,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02083510,0x200,param_2), cVar1 != '\0')))))) &&
               (((cVar1 = (*param_1)(&DAT_02083718,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02083920,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02083b28,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02083d30,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02083f38,0x200,param_2), cVar1 != '\0')))))))))) &&
             (cVar1 = (*param_1)(&DAT_02084140,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02084348,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02084550,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02084758,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02084960,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02084b68,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02084d70,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02084f78,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02085180,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (((((cVar1 = (*param_1)(&DAT_02085388,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02085590,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02085798,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_020859a0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02085ba8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02085db0,0x200,param_2), cVar1 != '\0')))))) &&
            ((((cVar1 = (*param_1)(&DAT_02085fb8,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_020861c0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020863c8,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_020865d0,0x200,param_2), cVar1 != '\0')) &&
             ((((cVar1 = (*param_1)(&DAT_020867d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020869e0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02086be8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02086df0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02086ff8,0x200,param_2), cVar1 != '\0')))))))) &&
           (((((cVar1 = (*param_1)(&DAT_02087200,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02087408,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02087610,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02087818,0x200,param_2), cVar1 != '\0')) &&
             ((((((cVar1 = (*param_1)(&DAT_02087a20,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02087c28,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02087e30,0x200,param_2), cVar1 != '\0')) &&
                (((cVar1 = (*param_1)(&DAT_02088038,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02088240,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02088448,0x200,param_2), cVar1 != '\0' &&
                  ((cVar1 = (*param_1)(&DAT_02088650,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02088858,0x200,param_2), cVar1 != '\0')))))))) &&
               (cVar1 = (*param_1)(&DAT_02088a60,0x200,param_2), cVar1 != '\0')) &&
              (((((cVar1 = (*param_1)(&DAT_02088c68,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02088e70,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02089078,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02089280,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02089488,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02089690,0x200,param_2), cVar1 != '\0')))))) &&
            (((((cVar1 = (*param_1)(&DAT_02089898,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02089aa0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02089ca8,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02089eb0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0208a0b8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_0208a2c0,0x200,param_2), cVar1 != '\0')))))) &&
              ((((cVar1 = (*param_1)(&DAT_0208a4c8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0208a6d0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0208a8d8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0208aae0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0208ace8,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_0208aef0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_0208b0f8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0208b300,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0208b508,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_0208b710,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0208b918,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_0208bb20,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0208bd28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0208bf30,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0208c138,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_0208c340,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0208c548,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0208c750,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0208c958,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0208cb60,0x200,param_2), cVar1 != '\0')))))))))) &&
          (cVar1 = (*param_1)(&DAT_0208cd68,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_0208cf70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0208d178,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_0208d380,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0208d588,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0208d790,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0208d998,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_0208dba0,0x16a,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0059a7cd(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_0208dd10,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01ec7d30,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01ec7f38,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01ec8140,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01ec8348,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01ec8550,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ec8758,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_01ec68e0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_01ec6ae8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01ec6cf0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01ec8960,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_0208df18,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_0208e120,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_0208e328,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0208e530,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0208e738,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0208e940,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_0208eb48,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0208ed50,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0208ef58,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0208f160,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0208f368,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((((cVar1 = (*param_1)(&DAT_0208f570,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_0208f778,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0208f980,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0208fb88,0x200,param_2), cVar1 != '\0' &&
         ((((((cVar1 = (*param_1)(&DAT_0208fd90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0208ff98,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_020901a0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_020903a8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020905b0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_020907b8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_020909c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02090bc8,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02090dd0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02090fd8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020911e0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020913e8,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_020915f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020917f8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02091a00,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02091c08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02091e10,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02092018,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02092220,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02092428,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02092630,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02092838,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_020570b0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02092a40,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_020574c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020576c8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02092c48,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02092e50,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02093058,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02057ee8,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02093260,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02093468,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02075fc8,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_020761d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020763d8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_020765e0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_020767e8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02093670,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02093878,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02093a80,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02093c88,0x200,param_2), cVar1 != '\0')))))))))) &&
        (((((cVar1 = (*param_1)(&DAT_02093e90,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02094098,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020942a0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_020944a8,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_020946b0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_020948b8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02094ac0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02094cc8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02094ed0,0x200,param_2), cVar1 != '\0')))))))))) &&
           (cVar1 = (*param_1)(&DAT_02078458,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_020950d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020952e0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_020954e8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_020956f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020958f8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02095b00,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02095d08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02095f10,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02096118,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((((cVar1 = (*param_1)(&DAT_02096320,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0205bfe8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0205c1f0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02096528,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02096730,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02096938,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02096b40,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02096d48,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02096f50,0x200,param_2), cVar1 != '\0' &&
         ((((((cVar1 = (*param_1)(&DAT_02097158,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02097360,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02097568,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02097770,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02097978,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02097b80,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02097d88,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02097f90,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_02098198,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_020983a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020985a8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_020987b0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_020989b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02098bc0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02098dc8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02098fd0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020991d8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020993e0,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((((((cVar1 = (*param_1)(&DAT_020995e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020997f0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_020999f8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02099c00,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02099e08,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0209a010,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_0209a218,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0209a420,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0209a628,0x200,param_2), cVar1 != '\0')))) &&
          (((((((cVar1 = (*param_1)(&DAT_0209a830,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0209aa38,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0209ac40,0x200,param_2), cVar1 != '\0' &&
                ((((((cVar1 = (*param_1)(&DAT_0209ae48,0x200,param_2), cVar1 != '\0' &&
                     (cVar1 = (*param_1)(&DAT_0209b050,0x200,param_2), cVar1 != '\0')) &&
                    (cVar1 = (*param_1)(&DAT_0209b258,0x200,param_2), cVar1 != '\0')) &&
                   ((cVar1 = (*param_1)(&DAT_0209b460,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_0209b668,0x200,param_2), cVar1 != '\0')))) &&
                  (cVar1 = (*param_1)(&DAT_0209b870,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_0209ba78,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0209bc80,0x200,param_2), cVar1 != '\0')))))))) &&
              ((cVar1 = (*param_1)(&DAT_0209be88,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_0209c090,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0209c298,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_0209c4a0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_0209c6a8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0209c8b0,0x200,param_2), cVar1 != '\0')))))))) &&
             (((((cVar1 = (*param_1)(&DAT_0209cab8,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_0209ccc0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0209cec8,0x200,param_2), cVar1 != '\0')))) &&
                (cVar1 = (*param_1)(&DAT_0209d0d0,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_0209d2d8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0209d4e0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0209d6e8,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_0209d8f0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0209daf8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0209dd00,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_0209df08,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0209e110,0x200,param_2), cVar1 != '\0')))))))))) &&
            (((cVar1 = (*param_1)(&DAT_0209e318,0x200,param_2), cVar1 != '\0' &&
              (((((((cVar1 = (*param_1)(&DAT_0209e520,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_0209e728,0x200,param_2), cVar1 != '\0')) &&
                   (cVar1 = (*param_1)(&DAT_0209e930,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_0209eb38,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_0209ed40,0x200,param_2), cVar1 != '\0')))) &&
                 ((cVar1 = (*param_1)(&DAT_0209ef48,0x200,param_2), cVar1 != '\0' &&
                  ((cVar1 = (*param_1)(&DAT_0209f150,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_0209f358,0x200,param_2), cVar1 != '\0')))))) &&
                ((cVar1 = (*param_1)(&DAT_0209f560,0x200,param_2), cVar1 != '\0' &&
                 (((cVar1 = (*param_1)(&DAT_0209f768,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_0209f970,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_0209fb78,0x200,param_2), cVar1 != '\0')))))) &&
               (((cVar1 = (*param_1)(&DAT_0209fd80,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0209ff88,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_020a0190,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_020a0398,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_020a05a0,0x200,param_2), cVar1 != '\0')))))))))) &&
             (cVar1 = (*param_1)(&DAT_020a07a8,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_020a09b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020a0bb8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_020a0dc0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_020a0fc8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020a11d0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02084d70,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02084f78,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02085180,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (((((cVar1 = (*param_1)(&DAT_02085388,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02085590,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020a13d8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_020a15e0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_020a17e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_020a19f0,0x200,param_2), cVar1 != '\0')))))) &&
            ((((cVar1 = (*param_1)(&DAT_020a1bf8,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_020a1e00,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020a2008,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_020a2210,0x200,param_2), cVar1 != '\0')) &&
             ((((cVar1 = (*param_1)(&DAT_020a2418,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020a2620,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_020a2828,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_020a2a30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_020a2c38,0x200,param_2), cVar1 != '\0')))))))) &&
           (((((cVar1 = (*param_1)(&DAT_020a2e40,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_020a3048,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020a3250,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_020a3458,0x200,param_2), cVar1 != '\0')) &&
             ((((((cVar1 = (*param_1)(&DAT_020a3660,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_020a3868,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_020a3a70,0x200,param_2), cVar1 != '\0')) &&
                (((cVar1 = (*param_1)(&DAT_020a3c78,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_020a3e80,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_020a4088,0x200,param_2), cVar1 != '\0' &&
                  ((cVar1 = (*param_1)(&DAT_020a4290,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_020a4498,0x200,param_2), cVar1 != '\0')))))))) &&
               (cVar1 = (*param_1)(&DAT_020a46a0,0x200,param_2), cVar1 != '\0')) &&
              (((((cVar1 = (*param_1)(&DAT_020a48a8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_020a4ab0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_020a4cb8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_020a4ec0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_020a50c8,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_020a52d0,0x200,param_2), cVar1 != '\0')))))) &&
            (((((cVar1 = (*param_1)(&DAT_020a54d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020a56e0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_020a58e8,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_020a5af0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_020a5cf8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_020a5f00,0x200,param_2), cVar1 != '\0')))))) &&
              ((((cVar1 = (*param_1)(&DAT_020a6108,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_020a6310,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_020a6518,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_020a6720,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020a6928,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_020a6b30,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_020a6d38,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020a6f40,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_020a7148,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_020a7350,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020a7558,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_020a7760,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_020a7968,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020a7b70,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_020a7d78,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_020a7f80,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020a8188,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_020a8390,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_020a8598,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_020a87a0,0x200,param_2), cVar1 != '\0')))))))))) &&
          (cVar1 = (*param_1)(&DAT_020a89a8,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_020a8bb0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020a8db8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_020a8fc0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_020a91c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020a93d0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_020a95d8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_020a97e0,0x165,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0059b824(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_020a9948,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01ab6e88,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_01ab7090,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ab7298,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01ab74a0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01ab76a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ab78b0,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_01ab7ab8,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_020a9b50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ab7ec8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_020a9d58,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_020a9f60,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020aa168,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_020aa370,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_020aa578,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020aa780,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_020aa988,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_020aab90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020aad98,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_020aafa0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_020ab1a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020ab3b0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_020ab5b8,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_020ab7c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020ab9c8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_020abbd0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_020abdd8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020abfe0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_020ac1e8,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_020ac3f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020ac5f8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020ac800,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_020aca08,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020acc10,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_020ace18,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_020ad020,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020ad228,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020ad430,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_020ad638,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_020ad840,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_020ada48,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_020adc50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020ade58,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_020ae060,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_020ae268,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_020ae470,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_020ae678,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_020ae880,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020aea88,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_020aec90,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_020aee98,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_020af0a0,0x200,param_2), cVar1 != '\0')) &&
      ((((((cVar1 = (*param_1)(&DAT_020af2a8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_020af4b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020af6b8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020af8c0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_020afac8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020afcd0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020afed8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_020b00e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020b02e8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_020b04f0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_020b06f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020b0900,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_020b0b08,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_020b0d10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020b0f18,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_020b1120,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_020b1328,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020b1530,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_020b1738,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_020b1940,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020b1b48,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020b1d4c,0x1c,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0059bd0c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_020b37d8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_020b1d70,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_020b1f78,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_020b2180,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_020b2388,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_020b2590,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020b2798,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_020b29a0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_020b2ba8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020b2db0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_020b39e0,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_020b3be8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0202cd10,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_0202cf18,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_020b3df0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020b3ff8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_020b4200,0x200,param_2), cVar1 != '\0')))))) &&
       ((((((cVar1 = (*param_1)(&DAT_020b4408,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020b4610,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020b4818,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_020b4a20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020b4c28,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_020b4e30,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_020b5038,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020b5240,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_020b5448,0x200,param_2), cVar1 != '\0')))))) &&
     (((((((cVar1 = (*param_1)(&DAT_020b5650,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020b5858,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_020b5a60,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_020b5c68,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020b5e70,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_020b6078,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_020b6280,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020b6488,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_020b6690,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_020b6898,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020b6aa0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020b6ca8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_020b6eb0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020b70b8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_020b72c0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_020b74c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020b76d0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_020b78d8,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_020b7ae0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020b7ce8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_020b7ef0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_020b80f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_020b8300,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_020b8508,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_020b8710,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020b8918,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_020b8b20,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_020b8d28,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020b8f30,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_020b9138,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((((cVar1 = (*param_1)(&DAT_020b9340,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020b9548,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020b9750,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_020b9958,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020b9b60,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_020b9d68,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_020b9f70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020ba178,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020ba380,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_020ba588,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020ba790,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_020ba998,0x200,param_2), cVar1 != '\0')) &&
       (((((((cVar1 = (*param_1)(&DAT_020baba0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020bada8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_020bafb0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_020bb1b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020bb3c0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_020bb5c8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_020bb7d0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_020bb9d8,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_020bbbe0,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_020bbde8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020bbff0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_020bc1f8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_020bc400,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_020bc608,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_020bc810,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_020bca18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020bcc20,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020bce28,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_020bd030,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020bd238,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_020bd440,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_020bd648,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020bd850,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_020bda58,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_020bdc60,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020bde68,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_020be070,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_020be278,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020be480,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_020be688,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_020be890,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_020bea98,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_020beca0,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_020beea8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_020bf0b0,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_020bf2b8,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (((cVar1 = (*param_1)(&DAT_020bf4c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020bf6c8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_020bf8d0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_020bfad8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020bfce0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020bfee8,0xe6,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0059c45b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_020bffd0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0202b8c0,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_0202bac8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0202bcd0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0202bed8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_0202c0e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0202c2e8,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_0202c4f0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_0202c6f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0202c900,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0202cb08,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_020b2fb8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020b31c0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_020b33c8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_020c01d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020c03e0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_020c05e8,0x200,param_2), cVar1 != '\0')))))) &&
       ((((((cVar1 = (*param_1)(&DAT_020c07f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020c09f8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020c0c00,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_020c0e08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020c1010,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_020c1218,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_020c1420,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020c1628,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_020c1830,0x200,param_2), cVar1 != '\0')))))) &&
     (((((((cVar1 = (*param_1)(&DAT_020c1a38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020c1c40,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_020c1e48,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_020c2050,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020c2258,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_020c2460,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_020c2668,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020c2870,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_020c2a78,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_020c2c80,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020c2e88,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020c3090,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_020c3298,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020c34a0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_020c36a8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_020c38b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020c3ab8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_020c3cc0,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_020c3ec8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020c40d0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_020c42d8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_020c44e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_020c46e8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_020c48f0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_020c4af8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020c4d00,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_020c4f08,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_020c5110,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020c5318,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_020c5520,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((((cVar1 = (*param_1)(&DAT_020c5728,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020c5930,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020c5b38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_020c5d40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020c5f48,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_020c6150,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_020c6358,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020c6560,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020c6768,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_020c6970,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020c6b78,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_020c6d80,0x200,param_2), cVar1 != '\0')) &&
       (((((((cVar1 = (*param_1)(&DAT_020c6f88,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020c7190,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_020c7398,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_020c75a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020c77a8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_020c79b0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_020c7bb8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_020c7dc0,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_020c7fc8,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_020c81d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020c83d8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_020c85e0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_020c87e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_020c89f0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_020c8bf8,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_020c8e00,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020c9008,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020c9210,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_020c9418,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020c9620,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_020c9828,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_020c9a30,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020c9c38,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_020c9e40,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_020ca048,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020ca250,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_020ca458,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_020ca660,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020ca868,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_020caa70,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_020cac78,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_020cae80,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_020cb088,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_020cb290,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_020cb498,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_020cb6a0,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (((cVar1 = (*param_1)(&DAT_020cb8a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020cbab0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_020cbcb8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_020cbec0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020cc0c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020cc2d0,0xd2,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0059cbaa(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_020cc9c0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0202b8c0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_0202bac8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0202bcd0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0202bed8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_0202c0e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0202c2e8,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_0202c4f0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0202c6f8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0202c900,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0202cb08,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_020b2fb8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020b31c0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_020b33c8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_020b35d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020ccbc8,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_020ccdd0,0x200,param_2), cVar1 != '\0' &&
         ((((((cVar1 = (*param_1)(&DAT_020ccfd8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020cd1e0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_020cd3e8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_020cd5f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020cd7f8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_020cda00,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_020cc3a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020cdc08,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_020cde10,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_020ce018,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020ce220,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_020ce428,0x200,param_2), cVar1 != '\0')))))))))))) &&
       (((cVar1 = (*param_1)(&DAT_020ce630,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_020ce838,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_020cea40,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_020cec48,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020cee50,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_020cf058,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_020cf260,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020cf468,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020cf670,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_020cf878,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020cfa80,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_020cfc88,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_020cfe90,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020d0098,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_020d02a0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_020d04a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020d06b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020d08b8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_020d0ac0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020d0cc8,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_020d0ed0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_020d10d8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020d12e0,0x200,param_2), cVar1 != '\0')))) &&
        (((((cVar1 = (*param_1)(&DAT_020d14e8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_020d16f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020d18f8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_020d1b00,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_020d1d08,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020d1f10,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020d2118,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_020d2320,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020d2528,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_020d2730,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_020d2938,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020d2b40,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020d2d48,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_020d2f50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020d3158,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_020d3360,0x200,param_2), cVar1 != '\0' &&
       ((((cVar1 = (*param_1)(&DAT_020d3568,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020d3770,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_020d3978,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_020d3b80,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020d3d88,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020d3f90,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_020d4198,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020d43a0,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_020d45a8,0x200,param_2), cVar1 != '\0')))) &&
      (((((cVar1 = (*param_1)(&DAT_020d47b0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020d49b8,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_020d4bc0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_020d4dc8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020d4fd0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_020d51d8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_020d53e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020d55e8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020d57f0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_020d59f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_020d5c00,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_020d5e08,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_020d6010,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020d6218,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_020d6420,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_020d6628,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020d6830,0x200,param_2), cVar1 != '\0')))))) &&
       ((((((cVar1 = (*param_1)(&DAT_020d6a38,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_020d6c40,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020d6e48,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_020d7050,0x200,param_2), cVar1 != '\0' &&
              (((((cVar1 = (*param_1)(&DAT_020d7258,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_020d7460,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_020d7668,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_020d7870,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_020d7a78,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_020d7c80,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_020d7e88,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_020d8090,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_020cc5b0,0x200,param_2), cVar1 != '\0')))) &&
          (((((((cVar1 = (*param_1)(&DAT_020d8298,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020d84a0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_020d86a8,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_020cc7b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_020d88b0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_020d8ab8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_020d8cc0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_020d8ec8,0x200,param_2), cVar1 != '\0')))))))) &&
             (cVar1 = (*param_1)(&DAT_020d90d0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_020d92d8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_020d94e0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_020d96e8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_020d98f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020d9af8,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_020d9d00,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_020d9f08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_020da110,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_020da318,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_020da520,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_020da728,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_020da930,0xb7,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0059d42b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_01ab6c80,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01ab6e88,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_01ab7090,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ab7298,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01ab74a0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01ab76a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ab78b0,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_01ab7ab8,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_01ab7cc0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ab7ec8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_01ab80d0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01ab82d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01ab84e0,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_01ab86e8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01ab88f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ab8af8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_01ab8d00,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_01ab8f08,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ab9110,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01ab9318,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01ab9520,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01ab9728,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_01ab9930,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_01ab9b38,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01ab9d40,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_01ab9f48,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_01aba150,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_01aba358,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_01aba560,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_01aba768,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01aba970,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01abab78,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01abad80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01abaf88,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_01abb190,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_01abb398,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_01abb5a0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_01abb7a8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_01abb9b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01abbbb8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_01abbdc0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01abbfc8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01abc1d0,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_01abc3d8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_01abc5e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01abc7e8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_01abc9f0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_01abcbf8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01abce00,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_01abd008,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_01abd210,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_01abd418,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_01abd620,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_01abd828,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01abda30,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_01abdc38,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_01abde40,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_01abe048,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_01abe250,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_01abe458,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_01abe660,0x200,param_2), cVar1 != '\0')))))))) &&
       (cVar1 = (*param_1)(&DAT_01abe868,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_01abea70,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_01abec78,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_01abee80,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_01abf088,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_01abf290,0x154,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}


/*
Unable to decompile 'FUN_0059d89f'
Cause: Exception while decompiling 0059d89f: process: timeout

*/

/*
Unable to decompile 'FUN_005a08fd'
Cause: Exception while decompiling 005a08fd: process: timeout

*/


undefined4 FUN_005a3956(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_0218f8b0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0218fab8,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_0218fcc0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0218fec8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_021900d0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_021902d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_021904e0,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_021906e8,0x200,param_2), cVar1 != '\0')))) &&
        (((((cVar1 = (*param_1)(&DAT_021908f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02190af8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02190d00,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02190f08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02191110,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02191318,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02191520,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02191728,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02191930,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_02191b38,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02191d40,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02191f48,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02192150,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02192358,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02192560,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02192768,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02192970,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02192b78,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02192d80,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02192f88,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02193190,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02193398,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_021935a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_021937a8,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_021939b0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02193bb8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02193dc0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02193fc8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_021941d0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_021943d8,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_021945e0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_021947e8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_021949f0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02194bf8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02194e00,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02195008,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02195210,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02195418,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02195620,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02195828,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02195a30,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02195c38,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02195e40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02196048,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_02196250,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02196458,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02196660,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02196868,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02196a70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02196c78,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02196e80,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02197088,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02197290,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02197498,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_021976a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_021978a8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02197ab0,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02197cb8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02197ec0,0x200,param_2), cVar1 != '\0')))))))) &&
     (((cVar1 = (*param_1)(&DAT_021980c8,0x200,param_2), cVar1 != '\0' &&
       ((((cVar1 = (*param_1)(&DAT_021982d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_021984d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_021986e0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_021988e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02198af0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02198cf8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02198f00,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02199108,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02199310,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02199518,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02199720,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02199928,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02199b30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02199d38,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02199f40,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_0219a148,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0219a350,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0219a558,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0219a760,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0219a968,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_0219ab70,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_0219ad78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0219af80,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0219b188,0xfe,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}


/*
Unable to decompile 'FUN_005a3f73'
Cause: Exception while decompiling 005a3f73: process: timeout

*/

/*
Unable to decompile 'FUN_005a6917'
Cause: Exception while decompiling 005a6917: process: timeout

*/

/*
Unable to decompile 'FUN_005a92d0'
Cause: Exception while decompiling 005a92d0: process: timeout

*/

/*
Unable to decompile 'FUN_005abc85'
Cause: Exception while decompiling 005abc85: process: timeout

*/

/*
Unable to decompile 'FUN_005ae63a'
Cause: Exception while decompiling 005ae63a: process: timeout

*/


undefined4 FUN_005b0fa8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02326098,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023262a0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_023264a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023266b0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_023268b8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02326ac0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02326cc8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02326ed0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_023270d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023272e0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023274e8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_023276f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023278f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02327b00,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02327d08,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02327f10,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (cVar1 = (*param_1)(&DAT_02328118,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02328320,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02328528,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02328730,0x200,param_2), cVar1 != '\0')))) &&
      (((((cVar1 = (*param_1)(&DAT_02328938,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02328b40,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02328d48,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02328f50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02329158,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02329360,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02329568,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02329770,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02329978,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02329b80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02329d88,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_02329f90,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_0232a198,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0232a3a0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_0232a5a8,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_0232a7b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0232a9b8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0232abc0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_0232adc8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0232afd0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0232b1d8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0232b3e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0232b5e8,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_0232b7f0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_0232b9f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0232bc00,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0232be08,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0232c010,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0232c218,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_0232c420,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0232c628,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0232c830,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0232ca38,0x200,param_2), cVar1 != '\0')) &&
        (((((((cVar1 = (*param_1)(&DAT_0232cc40,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0232ce48,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0232d050,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0232d258,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0232d460,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_0232d668,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_0232d870,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0232da78,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0232dc80,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0232de88,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0232e090,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0232e298,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_0232e4a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0232e6a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0232e8b0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_0232eab8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0232ecc0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0232eec8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_0232f0d0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0232f2d8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0232f4e0,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_0232f6e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0232f8f0,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_0232faf8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_0232fd00,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0232ff08,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02330110,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02330318,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02330520,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02330728,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02330930,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02330b38,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_02330d40,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02330f48,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02331150,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02331358,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02331560,0x1dc,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b15a3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02331740,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02331948,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02331b50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02331d58,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02331f60,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02332168,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02332370,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02332578,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02332780,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02332988,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02332b90,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02332d98,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02332fa0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023331a8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_023333b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023335b8,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (cVar1 = (*param_1)(&DAT_023337c0,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_023339c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02333bd0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02333dd8,0x200,param_2), cVar1 != '\0')))) &&
      (((((cVar1 = (*param_1)(&DAT_02333fe0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023341e8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_023343f0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_023345f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02334800,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02334a08,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02334c10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02334e18,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02335020,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02335228,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02335430,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_02335638,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02335840,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02335a48,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02335c50,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_02335e58,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02336060,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02336268,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02336470,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02336678,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02336880,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02336a88,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02336c90,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02336e98,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_023370a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023372a8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_023374b0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_023376b8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_023378c0,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02337ac8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02337cd0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02337ed8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_023380e0,0x200,param_2), cVar1 != '\0')) &&
        (((((((cVar1 = (*param_1)(&DAT_023382e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023384f0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023386f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02338900,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02338b08,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02338d10,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02338f18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02339120,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02339328,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02339530,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02339738,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02339940,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02339b48,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02339d50,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02339f58,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_0233a160,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0233a368,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0233a570,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_0233a778,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0233a980,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0233ab88,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_0233ad90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0233af98,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_0233b1a0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_0233b3a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0233b5b0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0233b7b8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_0233b9c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0233bbc8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0233bdd0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0233bfd8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0233c1e0,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_0233c3e8,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_0233c5f0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0233c7f8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_0233ca00,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_0233cc08,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0233ce10,0x6e,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b1bac(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_0233ce80,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02331948,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02331b50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02331d58,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02331f60,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02332168,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02332370,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02332578,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_0233d088,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02332988,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02332b90,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02332d98,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02332fa0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0233d290,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_023333b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023335b8,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (cVar1 = (*param_1)(&DAT_023337c0,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_023339c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02333bd0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0233d498,0x200,param_2), cVar1 != '\0')))) &&
      (((((cVar1 = (*param_1)(&DAT_0233d6a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0233d8a8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0233dab0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0233dcb8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0233dec0,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_0233e0c8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_0233e2d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0233e4d8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0233e6e0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0233e8e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0233eaf0,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_0233ecf8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_0233ef00,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0233f108,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_0233f310,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_0233f518,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0233f720,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0233f928,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_0233fb30,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0233fd38,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0233ff40,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02340148,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02340350,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02340558,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02340760,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02340968,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02340b70,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02340d78,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02340f80,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02341188,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02341390,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02341598,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_023417a0,0x200,param_2), cVar1 != '\0')) &&
        (((((((cVar1 = (*param_1)(&DAT_023419a8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02341bb0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02341db8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02341fc0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023421c8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_023423d0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_023425d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023427e0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_023429e8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02342bf0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02342df8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02343000,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02343208,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02343410,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02343618,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02343820,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02343a28,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02343c30,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02343e38,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02344040,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02344248,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02344450,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02344658,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_02344860,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02344a68,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02344c70,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02344e78,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02345080,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02345288,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02345490,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02345698,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023458a0,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_02345aa8,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02345cb0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02345eb8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_023460c0,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_023462c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_023464d0,0x58,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b21b5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_023483a8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02346530,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02346738,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02346940,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02346b48,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02346d50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02346f58,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02347160,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02347368,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02347570,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02347778,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02347980,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02347b88,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_023485b0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_023487b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023489c0,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02348bc8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02348dd0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02348fd8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_023491e0,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_023493e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023495f0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_023497f8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02349a00,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02349c08,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02349e10,0x200,param_2), cVar1 != '\0' &&
         (((((((cVar1 = (*param_1)(&DAT_0234a018,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0234a220,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0234a428,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0234a630,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0234a838,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_0234aa40,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0234ac48,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0234ae50,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_0234b058,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_0234b260,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0234b468,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0234b670,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_0234b878,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0234ba80,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0234bc88,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0234be90,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0234c098,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_0234c2a0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0234c4a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0234c6b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0234c8b8,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_0234cac0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0234ccc8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0234ced0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0234d0d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0234d2e0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_0234d4e8,0x200,param_2), cVar1 != '\0')) &&
       ((((((((cVar1 = (*param_1)(&DAT_0234d6f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0234d8f8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0234db00,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0234dd08,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0234df10,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_0234e118,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_0234e320,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0234e528,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0234e730,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0234e938,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0234eb40,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0234ed48,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_0234ef50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0234f158,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0234f360,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0234f568,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0234f770,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0234f978,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0234fb80,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0234fd88,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0234ff90,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02350198,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_023503a0,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_023505a8,0x200,param_2), cVar1 != '\0' &&
      ((((((cVar1 = (*param_1)(&DAT_023507b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023509b8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02350bc0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02350dc8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02350fd0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023511d8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023513e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023515e8,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_023517f0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_023519f8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02351c00,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_02351e08,0x10a,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b279f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02351f18,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02347d90,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02347f98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_021eaed0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_021eb0d8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_021eb2e0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_021eb4e8,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_021eb6f0,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_023481a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_021ebb00,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_021ebd08,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_021ebf10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_021ec118,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02352120,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02352328,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02352530,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02352738,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02352940,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02352b48,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02352d50,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02352f58,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02353160,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02353368,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02353570,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02353778,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02353980,0x200,param_2), cVar1 != '\0' &&
         (((((((cVar1 = (*param_1)(&DAT_02353b88,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02353d90,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02353f98,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023541a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023543a8,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_023545b0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_023547b8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023549c0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02354bc8,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02354dd0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02354fd8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023551e0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_023553e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023555f0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023557f8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02355a00,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02355c08,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_02355e10,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02356018,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02356220,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02356428,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02356630,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02356838,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02356a40,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02356c48,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02356e50,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02357058,0x200,param_2), cVar1 != '\0')) &&
       ((((((((cVar1 = (*param_1)(&DAT_02357260,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02357468,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02357670,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02357878,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02357a80,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02357c88,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02357e90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02358098,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_023582a0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_023584a8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023586b0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023588b8,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02358ac0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02358cc8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02358ed0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_023590d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023592e0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023594e8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_023596f0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023598f8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02359b00,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02359d08,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02359f10,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_0235a118,0x200,param_2), cVar1 != '\0' &&
      ((((((cVar1 = (*param_1)(&DAT_0235a320,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0235a528,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0235a730,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_0235a938,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0235ab40,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0235ad48,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0235af50,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0235b158,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_0235b360,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0235b568,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0235b770,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_0235b978,0x117,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b2d89(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_0235ba90,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02347d90,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02347f98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_021eaed0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_021eb0d8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_021eb2e0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_021eb4e8,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_021eb6f0,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_021eb8f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_021ebb00,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_021ebd08,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_021ebf10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_021ec118,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0235bc98,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_0235bea0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0235c0a8,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_0235c2b0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_0235c4b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0235c6c0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0235c8c8,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_0235cad0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0235ccd8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02353368,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0235cee0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0235d0e8,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02353980,0x200,param_2), cVar1 != '\0' &&
         (((((((cVar1 = (*param_1)(&DAT_0235d2f0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0235d4f8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0235d700,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0235d908,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0235db10,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_0235dd18,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0235df20,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0235e128,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_0235e330,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_0235e538,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0235e740,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0235e948,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_0235eb50,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0235ed58,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0235ef60,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0235f168,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0235f370,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_0235f578,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0235f780,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0235f988,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0235fb90,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_0235fd98,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0235ffa0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_023601a8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_023603b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023605b8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_023607c0,0x200,param_2), cVar1 != '\0')) &&
       ((((((((cVar1 = (*param_1)(&DAT_023609c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02360bd0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02360dd8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02360fe0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023611e8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_023613f0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_023615f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02361800,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02361a08,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02361c10,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02361e18,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02362020,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02362228,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02362430,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02362638,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02362840,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02362a48,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02362c50,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02362e58,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02363060,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02363268,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02363470,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02363678,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02363880,0x200,param_2), cVar1 != '\0' &&
      ((((((cVar1 = (*param_1)(&DAT_02363a88,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02363c90,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02363e98,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_023640a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023642a8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023644b0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0235af50,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0235b158,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_0235b360,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0235b568,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_023646b8,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_0235b978,0x117,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b3373(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_023648c0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02364ac8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_022d72b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_022d74c0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_022d76c8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_022d78d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_022d7ad8,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_022d7ce0,0x200,param_2), cVar1 != '\0' &&
        ((((((cVar1 = (*param_1)(&DAT_02364cd0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02364ed8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023650e0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_023652e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023654f0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_023656f8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02365900,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02365b08,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02365d10,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02365f18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02366120,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02366328,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02366530,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02366738,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02366940,0x200,param_2), cVar1 != '\0' &&
        ((((((cVar1 = (*param_1)(&DAT_02366b48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02366d50,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02366f58,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02367160,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02367368,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02367570,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_02367778,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02367980,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02367b88,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02367d90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02367f98,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023681a0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_023683a8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023685b0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_023687b8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_023689c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02368bc8,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (cVar1 = (*param_1)(&DAT_02368dd0,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_02368fd8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_023691e0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_023693e8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_023695f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023697f8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02369a00,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02369c08,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02369e10,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0236a018,0x200,param_2), cVar1 != '\0')))) &&
      (((((cVar1 = (*param_1)(&DAT_0236a220,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0236a428,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_0236a630,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0236a838,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0236aa40,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0236ac48,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_0236ae50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0236b058,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0236b260,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_0236b468,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0236b670,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0236b878,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_0236ba80,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0236bc88,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_0236be90,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_0236c098,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0236c2a0,0x200,param_2), cVar1 != '\0')))))))) &&
             (cVar1 = (*param_1)(&DAT_0236c4a8,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_0236c6b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0236c8b8,0x200,param_2), cVar1 != '\0')))) &&
       ((((((cVar1 = (*param_1)(&DAT_0236cac0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0236ccc8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0236ced0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0236d0d8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_0236d2e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0236d4e8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0236d6f0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_0236d8f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0236db00,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_0236dd08,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_0236df10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0236e118,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0236e320,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_0236e528,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0236e730,0x19e,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b3919(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_0236ead8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02346530,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02346738,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02346940,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02346b48,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02346d50,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02346f58,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02347160,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02347368,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0236ece0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0236eee8,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_0236f0f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0236f2f8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0236f500,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_0236f708,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0236f910,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_0236fb18,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_0236fd20,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0236ff28,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02370130,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02370338,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02370540,0x200,param_2), cVar1 != '\0')) &&
         ((((((cVar1 = (*param_1)(&DAT_02370748,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02370950,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02370b58,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02370d60,0x200,param_2), cVar1 != '\0')) &&
            ((((((cVar1 = (*param_1)(&DAT_02370f68,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02371170,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02371378,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02371580,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02371788,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_02371990,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02371b98,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02371da0,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_02371fa8,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_023721b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023723b8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023725c0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_023727c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023729d0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02372bd8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02372de0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02372fe8,0x200,param_2), cVar1 != '\0')))))))))) &&
          (cVar1 = (*param_1)(&DAT_023731f0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_023733f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02373600,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02373808,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02373a10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02373c18,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((((((cVar1 = (*param_1)(&DAT_02373e20,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02374028,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02374230,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02374438,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02374640,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02374848,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02374a50,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02374c58,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02374e60,0x200,param_2), cVar1 != '\0')))))))) &&
         (((((((cVar1 = (*param_1)(&DAT_02375068,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02375270,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02375478,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02375680,0x200,param_2), cVar1 != '\0')) &&
             ((((cVar1 = (*param_1)(&DAT_02375888,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02375a90,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02375c98,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02375ea0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023760a8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_023762b0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_023764b8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023766c0,0x200,param_2), cVar1 != '\0')))))))))) &&
            ((((cVar1 = (*param_1)(&DAT_023768c8,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_02376ad0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02376cd8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02376ee0,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_023770e8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023772f0,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_023774f8,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02377700,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02377908,0x200,param_2), cVar1 != '\0')))) &&
                (cVar1 = (*param_1)(&DAT_02377b10,0x200,param_2), cVar1 != '\0')))))) &&
             (((((((cVar1 = (*param_1)(&DAT_02377d18,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02377f20,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02378128,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02378330,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02378538,0x200,param_2), cVar1 != '\0')))) &&
                (cVar1 = (*param_1)(&DAT_02378740,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_02378948,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02378b50,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02378d58,0x200,param_2), cVar1 != '\0' &&
                 (((cVar1 = (*param_1)(&DAT_02378f60,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02379168,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02379370,0x200,param_2), cVar1 != '\0')))))))) &&
              ((cVar1 = (*param_1)(&DAT_02379578,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02379780,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02379988,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_02379b90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02379d98,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02379fa0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_0237a1a8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0237a3b0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0237a5b8,0x200,param_2), cVar1 != '\0')))))) &&
            (((cVar1 = (*param_1)(&DAT_0237a7c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0237a9c8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0237abd0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_0237add8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0237afe0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0237b1e8,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_0237b3f0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_0237b5f8,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_0237b800,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_0237ba08,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0237bc10,0x200,param_2), cVar1 != '\0')))))))))))))) &&
           (((cVar1 = (*param_1)(&DAT_0237be18,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_0237c020,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0237c228,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_0237c430,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0237c638,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0237c840,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0237ca48,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((((((((cVar1 = (*param_1)(&DAT_0237cc50,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0237ce58,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0237d060,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0237d268,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0237d470,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_0237d678,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0237d880,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0237da88,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0237dc90,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_0237de98,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0237e0a0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0237e2a8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0237e4b0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0237e6b8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0237e8c0,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_0237eac8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0237ecd0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_0237eed8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_0237f0e0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0237f2e8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_0237f4f0,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_0237f6f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0237f900,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_0237fb08,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_0237fd10,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0237ff18,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02380120,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02380328,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02380530,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02380738,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02380940,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02380b48,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02380d50,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02380f58,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02381160,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02381368,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02381570,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02381778,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02381980,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02381b88,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02381d90,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02381f98,0x200,param_2), cVar1 != '\0' &&
               (((((cVar1 = (*param_1)(&DAT_023821a0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_023823a8,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_023825b0,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_023827b8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_023829c0,0x200,param_2), cVar1 != '\0')))) &&
                (cVar1 = (*param_1)(&DAT_02382bc8,0x200,param_2), cVar1 != '\0')))))))))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02382dd0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02382fd8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_023831e0,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_023833e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023835f0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023837f8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02383a00,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02383c08,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02383e10,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02384018,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02384220,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02384428,0x200,param_2), cVar1 != '\0')))))) &&
        (((((((cVar1 = (*param_1)(&DAT_02384630,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02384838,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02384a40,0x200,param_2), cVar1 != '\0')) &&
            ((((cVar1 = (*param_1)(&DAT_02384c48,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02384e50,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02385058,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02385260,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02385468,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02385670,0x200,param_2), cVar1 != '\0')))) &&
             (((((cVar1 = (*param_1)(&DAT_02385878,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02385a80,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02385c88,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02385e90,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02386098,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_023862a0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_023864a8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023866b0,0x200,param_2), cVar1 != '\0')))))))))) &&
           (((cVar1 = (*param_1)(&DAT_023868b8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02386ac0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02386cc8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02386ed0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_023870d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023872e0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_023874e8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_023876f0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023878f8,0x200,param_2), cVar1 != '\0')))))))))) &&
            (cVar1 = (*param_1)(&DAT_02387b00,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02387d08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02387f10,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02388118,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02388320,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02388528,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02388730,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02388938,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02388b40,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02388d48,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02388f50,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02389158,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02389360,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02389568,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02389770,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_02389978,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02389b80,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02389d88,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02389f90,0x200,param_2), cVar1 != '\0' &&
        ((((((cVar1 = (*param_1)(&DAT_0238a198,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0238a3a0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0238a5a8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_0238a7b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0238a9b8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0238abc0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_0238adc8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0238afd0,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_0238b1d8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0238b3e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0238b5e8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0238b7f0,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_0238b9f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0238bc00,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_0238be08,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_0238c010,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0238c218,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_0238c420,0x168,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b492c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_0238c590,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02347d90,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02347f98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_021eaed0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_021eb0d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_021eb2e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_021eb4e8,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_021eb6f0,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_023481a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_021ebb00,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_021ebd08,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_021ebf10,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_021ec118,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0238c798,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_0238c9a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0238cba8,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_0236e8d0,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_0238cdb0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0238cfb8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0238d1c0,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_0238d3c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0238d5d0,0x200,param_2), cVar1 != '\0')) &&
         ((((((cVar1 = (*param_1)(&DAT_0238d7d8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0238d9e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0238dbe8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_0238ddf0,0x200,param_2), cVar1 != '\0')) &&
            ((((((cVar1 = (*param_1)(&DAT_0238dff8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0238e200,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0238e408,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0238e610,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0238e818,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_0238ea20,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_0238ec28,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0238ee30,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_0238f038,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_0238f240,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0238f448,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0238f650,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_0238f858,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0238fa60,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0238fc68,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0238fe70,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02390078,0x200,param_2), cVar1 != '\0')))))))))) &&
          (cVar1 = (*param_1)(&DAT_02390280,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02390488,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02390690,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02390898,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02390aa0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02390ca8,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((((((cVar1 = (*param_1)(&DAT_02390eb0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_023910b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023912c0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_023914c8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_023916d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023918d8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02391ae0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02391ce8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02391ef0,0x200,param_2), cVar1 != '\0')))))))) &&
         (((((((cVar1 = (*param_1)(&DAT_023920f8,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02392300,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02392508,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02392710,0x200,param_2), cVar1 != '\0')) &&
             ((((cVar1 = (*param_1)(&DAT_02392918,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02392b20,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02392d28,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02392f30,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02393138,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02393340,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02393548,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02393750,0x200,param_2), cVar1 != '\0')))))))))) &&
            ((((cVar1 = (*param_1)(&DAT_02393958,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_02393b60,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02393d68,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02393f70,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_02394178,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02394380,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_02394588,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02394790,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02394998,0x200,param_2), cVar1 != '\0')))) &&
                (cVar1 = (*param_1)(&DAT_02394ba0,0x200,param_2), cVar1 != '\0')))))) &&
             (((((((cVar1 = (*param_1)(&DAT_02394da8,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02394fb0,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_023951b8,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_023953c0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_023955c8,0x200,param_2), cVar1 != '\0')))) &&
                (cVar1 = (*param_1)(&DAT_023957d0,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_023959d8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02395be0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02395de8,0x200,param_2), cVar1 != '\0' &&
                 (((cVar1 = (*param_1)(&DAT_02395ff0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_023961f8,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02396400,0x200,param_2), cVar1 != '\0')))))))) &&
              ((cVar1 = (*param_1)(&DAT_02396608,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02396810,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02396a18,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_02396c20,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02396e28,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02397030,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02397238,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02397440,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02397648,0x200,param_2), cVar1 != '\0')))))) &&
            (((cVar1 = (*param_1)(&DAT_02397850,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02397a58,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02397c60,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02397e68,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02398070,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02398278,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02398480,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02398688,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02398890,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02398a98,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02398ca0,0x200,param_2), cVar1 != '\0')))))))))))))) &&
           (((cVar1 = (*param_1)(&DAT_02398ea8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_023990b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023992b8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_023994c0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_023996c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023998d0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02399ad8,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((((((((cVar1 = (*param_1)(&DAT_02399ce0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02399ee8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0239a0f0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0239a2f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0239a500,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_0239a708,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0239a910,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0239ab18,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0239ad20,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_0239af28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0239b130,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0239b338,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0239b540,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0239b748,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0239b950,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_0239bb58,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0239bd60,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_0239bf68,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_0239c170,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0239c378,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_0239c580,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_0239c788,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0239c990,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_0239cb98,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_0239cda0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0239cfa8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0239d1b0,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_0239d3b8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0239d5c0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0239d7c8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_0239d9d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0239dbd8,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_0239dde0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0239dfe8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0239e1f0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0239e3f8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_0239e600,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0239e808,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0239ea10,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0239ec18,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0239ee20,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0239f028,0x200,param_2), cVar1 != '\0' &&
               (((((cVar1 = (*param_1)(&DAT_0239f230,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_0239f438,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_0239f640,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_0239f848,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0239fa50,0x200,param_2), cVar1 != '\0')))) &&
                (cVar1 = (*param_1)(&DAT_0239fc58,0x200,param_2), cVar1 != '\0')))))))))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_0239fe60,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023a0068,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_023a0270,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_023a0478,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023a0680,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023837f8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02383a00,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02383c08,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02383e10,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_023a0888,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023a0a90,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_023a0c98,0x200,param_2), cVar1 != '\0')))))) &&
        (((((((cVar1 = (*param_1)(&DAT_023a0ea0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023a10a8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023a12b0,0x200,param_2), cVar1 != '\0')) &&
            ((((cVar1 = (*param_1)(&DAT_023a14b8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023a16c0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_023a18c8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_023a1ad0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023a1cd8,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_023a1ee0,0x200,param_2), cVar1 != '\0')))) &&
             (((((cVar1 = (*param_1)(&DAT_023a20e8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023a22f0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_023a24f8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_023a2700,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023a2908,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_023a2b10,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_023a2d18,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023a2f20,0x200,param_2), cVar1 != '\0')))))))))) &&
           (((cVar1 = (*param_1)(&DAT_023a3128,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_023a3330,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023a3538,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_023a3740,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_023a3948,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023a3b50,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_023a3d58,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_023a3f60,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023a4168,0x200,param_2), cVar1 != '\0')))))))))) &&
            (cVar1 = (*param_1)(&DAT_023a4370,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_023a4578,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023a4780,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_023a4988,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_023a4b90,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023a4d98,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_023a4fa0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_023a51a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023a53b0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_023a55b8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_023a57c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023a59c8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_023a5bd0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023a5dd8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023a5fe0,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_023a61e8,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_023a63f0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_023a65f8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_023a6800,0x200,param_2), cVar1 != '\0' &&
        ((((((cVar1 = (*param_1)(&DAT_023a6a08,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023a6c10,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023a6e18,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_023a7020,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023a7228,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023a7430,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_023a7638,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023a7840,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_023a7a48,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_023a7c50,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023a7e58,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023a8060,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_023a8268,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023a8470,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_023a8678,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_023a8880,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023a8a88,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_023a8c90,0x165,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b5941(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_023a8df8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02347d90,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02347f98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_021eaed0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_021eb0d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_021eb2e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_021eb4e8,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_021eb6f0,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_021eb8f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_021ebb00,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_021ebd08,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_023a9000,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023a9208,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_023a9410,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_023a9618,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023a9820,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_023a9a28,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_023a9c30,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_023a9e38,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_023aa040,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_023aa248,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023aa450,0x200,param_2), cVar1 != '\0')) &&
         ((((((cVar1 = (*param_1)(&DAT_023aa658,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_023aa860,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023aaa68,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_023aac70,0x200,param_2), cVar1 != '\0')) &&
            ((((((cVar1 = (*param_1)(&DAT_023aae78,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023ab080,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0238e408,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_023ab288,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023ab490,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_023ab698,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_023ab8a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023abaa8,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_023abcb0,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_023721b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023723b8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023abeb8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_023ac0c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023ac2c8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023ac4d0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_023ac6d8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023ac8e0,0x200,param_2), cVar1 != '\0')))))))))) &&
          (cVar1 = (*param_1)(&DAT_023acae8,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_023accf0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023acef8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_023ad100,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_023ad308,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023ad510,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((((((cVar1 = (*param_1)(&DAT_023ad718,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_023ad920,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023912c0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_023adb28,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_023add30,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023adf38,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023ae140,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023ae348,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023ae550,0x200,param_2), cVar1 != '\0')))))))) &&
         (((((((cVar1 = (*param_1)(&DAT_023ae758,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_023ae960,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023aeb68,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_023aed70,0x200,param_2), cVar1 != '\0')) &&
             ((((cVar1 = (*param_1)(&DAT_023aef78,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023af180,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_023af388,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_023af590,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023af798,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_023af9a0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_023afba8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023afdb0,0x200,param_2), cVar1 != '\0')))))))))) &&
            ((((cVar1 = (*param_1)(&DAT_023affb8,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_023b01c0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023b03c8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_023b05d0,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_023b07d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023b09e0,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_023b0be8,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_023b0df0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_023b0ff8,0x200,param_2), cVar1 != '\0')))) &&
                (cVar1 = (*param_1)(&DAT_023b1200,0x200,param_2), cVar1 != '\0')))))) &&
             (((((((cVar1 = (*param_1)(&DAT_023b1408,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_023b1610,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_023b1818,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_023b1a20,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_023b1c28,0x200,param_2), cVar1 != '\0')))) &&
                (cVar1 = (*param_1)(&DAT_023b1e30,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_023b2038,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023b2240,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_023b2448,0x200,param_2), cVar1 != '\0' &&
                 (((cVar1 = (*param_1)(&DAT_023b2650,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_023b2858,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02379370,0x200,param_2), cVar1 != '\0')))))))) &&
              ((cVar1 = (*param_1)(&DAT_02379578,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02379780,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_023b2a60,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_023b2c68,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023b2e70,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023b3078,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_023b3280,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023b3488,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_023b3690,0x200,param_2), cVar1 != '\0')))))) &&
            (((cVar1 = (*param_1)(&DAT_023b3898,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023b3aa0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023b3ca8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_023b3eb0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023b40b8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_023b42c0,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_023b44c8,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_023b46d0,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_0237b800,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_0237ba08,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_023b48d8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
           (((cVar1 = (*param_1)(&DAT_023b4ae0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_023b4ce8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023b4ef0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_023b50f8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_023b5300,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023b5508,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_023b5710,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((((((((cVar1 = (*param_1)(&DAT_023b5918,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023b5b20,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_023b5d28,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023b5f30,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023b6138,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_023b6340,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_023b6548,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023b6750,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_023b6958,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_023b6b60,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023b6d68,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023b6f70,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_023b7178,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023b7380,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_023b7588,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_023b7790,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_023b7998,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_023b7ba0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_023b7da8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023b7fb0,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_0237f4f0,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_023b81b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0237f900,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_0237fb08,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_0237fd10,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023b83c0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_023b85c8,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_023b87d0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023b89d8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_023b8be0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_023b8de8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023b8ff0,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_023b91f8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_023b9400,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023b9608,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023b9810,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_023b9a18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023b9c20,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023b9e28,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_023ba030,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023ba238,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_023ba440,0x200,param_2), cVar1 != '\0' &&
               (((((cVar1 = (*param_1)(&DAT_023ba648,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_023ba850,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_023baa58,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_023bac60,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_023bae68,0x200,param_2), cVar1 != '\0')))) &&
                (cVar1 = (*param_1)(&DAT_023bb070,0x200,param_2), cVar1 != '\0')))))))))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_023bb278,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023bb480,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_023bb688,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_023bb890,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023bba98,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023bbca0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_023bbea8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023bc0b0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023bc2b8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_023bc4c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023bc6c8,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_023bc8d0,0x200,param_2), cVar1 != '\0')))))) &&
        (((((((cVar1 = (*param_1)(&DAT_023bcad8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023bcce0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023bcee8,0x200,param_2), cVar1 != '\0')) &&
            ((((cVar1 = (*param_1)(&DAT_023bd0f0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023bd2f8,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_023bd500,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_023bd708,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023bd910,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_023bdb18,0x200,param_2), cVar1 != '\0')))) &&
             (((((cVar1 = (*param_1)(&DAT_023bdd20,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023bdf28,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_023be130,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_023be338,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023be540,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_023be748,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_023be950,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023beb58,0x200,param_2), cVar1 != '\0')))))))))) &&
           (((cVar1 = (*param_1)(&DAT_023bed60,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_023bef68,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023bf170,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_023bf378,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_023bf580,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023bf788,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_023bf990,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_023bfb98,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023bfda0,0x200,param_2), cVar1 != '\0')))))))))) &&
            (cVar1 = (*param_1)(&DAT_023bffa8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_023c01b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023c03b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_023c05c0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_023c07c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023c09d0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_023c0bd8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_023c0de0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023c0fe8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_023c11f0,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_023c13f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023c1600,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_023c1808,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023c1a10,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023c1c18,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_023c1e20,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_023c2028,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_023c2230,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_023c2438,0x200,param_2), cVar1 != '\0' &&
        ((((((cVar1 = (*param_1)(&DAT_023c2640,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023c2848,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023c2a50,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_023c2c58,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023c2e60,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023c3068,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_023c3270,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023c3478,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_023c3680,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_023c3888,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023c3a90,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023c3c98,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_023c3ea0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023c40a8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_023c42b0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_023c44b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023c46c0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_023c48c8,0x162,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b6954(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_023c4a30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02364ac8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_022d72b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_022d74c0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_022d76c8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_022d78d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_022d7ad8,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*param_1)(&DAT_022d7ce0,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02364cd0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023c4c38,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_023c4e40,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023c5048,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023c5250,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_023c5458,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_023c5660,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023c5868,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_023c5a70,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_023c5c78,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023c5e80,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023c6088,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_023c6290,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023c6498,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_023c66a0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_023c68a8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023c6ab0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_023c6cb8,0x200,param_2), cVar1 != '\0')))))))))) &&
        (((((cVar1 = (*param_1)(&DAT_023c6ec0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023c70c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_023c72d0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_023c74d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023c76e0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_023c78e8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_023c7af0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023c7cf8,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_023c7f00,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_023c8108,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023c8310,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_023c8518,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_023c8720,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023c8928,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_023c8b30,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023c8d38,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023c8f40,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_023c9148,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_023c9350,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023c9558,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023c9760,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_023c9968,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023c9b70,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023c9d78,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_023c9f80,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023ca188,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_023ca390,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_023ca598,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023ca7a0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023ca9a8,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_023cabb0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023cadb8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023cafc0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_023cb1c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023cb3d0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023cb5d8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_023cb7e0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023cb9e8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_023cbbf0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_023cbdf8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023cc000,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (((cVar1 = (*param_1)(&DAT_023cc208,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_023cc410,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023cc618,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_023cc820,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_023cca28,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023ccc30,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_023cce38,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_023cd040,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023cd248,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_023cd450,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_023cd658,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023cd860,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_023cda68,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_023cdc70,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023cde78,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_023ce080,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_023ce288,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023ce490,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_023ce698,0x200,param_2), cVar1 != '\0' &&
         ((((((((cVar1 = (*param_1)(&DAT_023ce8a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023ceaa8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_023cecb0,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_023ceeb8,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_023cf0c0,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_023cf2c8,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_023cf4d0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_023cf6d8,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_023cf8e0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023cfae8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023cfcf0,0x200,param_2), cVar1 != '\0')))) &&
            ((((cVar1 = (*param_1)(&DAT_023cfef8,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_023d0100,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023d0308,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_023d0510,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_023d0718,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023d0920,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_023d0b28,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_023d0d30,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023d0f38,0x200,param_2), cVar1 != '\0')))))) &&
           ((((cVar1 = (*param_1)(&DAT_023d1140,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_023d1348,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023d1550,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_023d1758,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_023d1960,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023d1b68,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_023d1d70,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_023d1f78,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023d2180,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_023d2388,0x200,param_2), cVar1 != '\0' &&
                 ((((((cVar1 = (*param_1)(&DAT_023d2590,0x200,param_2), cVar1 != '\0' &&
                      (cVar1 = (*param_1)(&DAT_023d2798,0x200,param_2), cVar1 != '\0')) &&
                     (cVar1 = (*param_1)(&DAT_023d29a0,0x200,param_2), cVar1 != '\0')) &&
                    ((cVar1 = (*param_1)(&DAT_023d2ba8,0x200,param_2), cVar1 != '\0' &&
                     (cVar1 = (*param_1)(&DAT_023d2db0,0x200,param_2), cVar1 != '\0')))) &&
                   (cVar1 = (*param_1)(&DAT_023d2fb8,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_023d31c0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_023d33c8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
            ((cVar1 = (*param_1)(&DAT_023d35d0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_023d37d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023d39e0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_023d3be8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_023d3df0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023d3ff8,0x200,param_2), cVar1 != '\0')))))))))) &&
          (((cVar1 = (*param_1)(&DAT_023d4200,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_023d4408,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023d4610,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_023d4818,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((((((cVar1 = (*param_1)(&DAT_023d4a20,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023d4c28,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023d4e30,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_023d5038,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023d5240,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023d5448,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_023d5650,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023d5858,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_023d5a60,0x200,param_2), cVar1 != '\0')) &&
         ((((((cVar1 = (*param_1)(&DAT_023d5c68,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023d5e70,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023d6078,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023d6280,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023d6488,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_023d6690,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_023d6898,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023d6aa0,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_023d6ca8,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_023d6eb0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023d70b8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_023d72c0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_023d74c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023d76d0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_023d78d8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_023d7ae0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023d7ce8,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_023d7ef0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_023d80f8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023d8300,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023d8508,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_023d8710,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023d8918,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023d8b20,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_023d8d28,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023d8f30,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_023d9138,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_023d9340,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023d9548,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_023d9750,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_023d9958,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023d9b60,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((((cVar1 = (*param_1)(&DAT_023d9d68,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_023d9f70,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023da178,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_023da380,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_023da588,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023da790,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_023da998,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_023daba0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_023dada8,0x200,param_2), cVar1 != '\0')))) &&
      (((((((cVar1 = (*param_1)(&DAT_023dafb0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_023db1b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023db3c0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_023db5c8,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_023db7d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023db9d8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023dbbe0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_023dbde8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023dbff0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023dc1f8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_023dc400,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023dc608,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_023dc810,0x200,param_2), cVar1 != '\0')) &&
        (((((((cVar1 = (*param_1)(&DAT_023dca18,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023dcc20,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023dce28,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023dd030,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023dd238,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_023dd440,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_023dd648,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023dd850,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_023dda58,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_023ddc60,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023dde68,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023de070,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*param_1)(&DAT_023de278,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023de480,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_023de688,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_023de890,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023dea98,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_023deca0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_023deea8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023df0b0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_023df2b8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_023df4c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023df6c8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_023df8d0,0x200,param_2), cVar1 != '\0' &&
           (((((cVar1 = (*param_1)(&DAT_023dfad8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023dfce0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_023dfee8,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_023e00f0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_023e02f8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_023e0500,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_023e0708,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023e0910,0x200,param_2), cVar1 != '\0')))))))) &&
             (cVar1 = (*param_1)(&DAT_023e0b18,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023e0d20,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023e0f28,0x200,param_2), cVar1 != '\0')))))))))) &&
        (((cVar1 = (*param_1)(&DAT_023e1130,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_023e1338,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023e1540,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_023e1748,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_023e1950,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023e1b58,0x1f7,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b7923(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_023e1d50,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023e1f58,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_023e2160,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023e2368,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023e2570,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_023e2778,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023e2980,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_023e2b88,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_023e2d90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023e2f98,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023e31a0,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_023e33a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023e35b0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_023e37b8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_023e39c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023e3bc8,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_023e3dd0,0x200,param_2), cVar1 != '\0' &&
         ((((((cVar1 = (*param_1)(&DAT_023e3fd8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023e41e0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023e43e8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023e45f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023e47f8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_023e4a00,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_023e4c08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023e4e10,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_023e5018,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_023e5220,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023e5428,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023e5630,0x200,param_2), cVar1 != '\0')))))))))))) &&
       (((cVar1 = (*param_1)(&DAT_023e5838,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_023e5a40,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_023e5c48,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_023e5e50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023e6058,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_023e6260,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_023e6468,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023e6670,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023e6878,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_023e6a80,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023e6c88,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_023e6e90,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_023e7098,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023e72a0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_023e74a8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_023e76b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023e78b8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023e7ac0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_023e7cc8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023e7ed0,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_023e80d8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_023e82e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023e84e8,0x200,param_2), cVar1 != '\0')))) &&
        (((((cVar1 = (*param_1)(&DAT_023e86f0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_023e88f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023e8b00,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023e8d08,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_023e8f10,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023e9118,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023e9320,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_023e9528,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023e9730,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_023e9938,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_023e9b40,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023e9d48,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023e9f50,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_023ea158,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023ea360,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_023ea568,0x200,param_2), cVar1 != '\0' &&
       ((((cVar1 = (*param_1)(&DAT_023ea770,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023ea978,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_023eab80,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_023ead88,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023eaf90,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023eb198,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_023eb3a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023eb5a8,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_023eb7b0,0x200,param_2), cVar1 != '\0')))) &&
      (((((cVar1 = (*param_1)(&DAT_023eb9b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023ebbc0,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_023ebdc8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_023ebfd0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023ec1d8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023ec3e0,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_023ec5e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023ec7f0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023ec9f8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_023ecc00,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023ece08,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_023ed010,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_023ed218,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023ed420,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_023ed628,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_023ed830,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023eda38,0x200,param_2), cVar1 != '\0')))))) &&
       ((((((cVar1 = (*param_1)(&DAT_023edc40,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_023ede48,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023ee050,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023ee258,0x200,param_2), cVar1 != '\0' &&
              (((((cVar1 = (*param_1)(&DAT_023ee460,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_023ee668,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_023ee870,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_023eea78,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023eec80,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_023eee88,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_023ef090,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023ef298,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023ef4a0,0x200,param_2), cVar1 != '\0')))) &&
          (((((((cVar1 = (*param_1)(&DAT_023ef6a8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023ef8b0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_023efab8,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_023efcc0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023efec8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_023f00d0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_023f02d8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023f04e0,0x200,param_2), cVar1 != '\0')))))))) &&
             (cVar1 = (*param_1)(&DAT_023f06e8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_023f08f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023f0af8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023f0d00,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_023f0f08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023f1110,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_023f1318,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_023f1520,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023f1728,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_023f1930,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_023f1b38,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023f1d40,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_023f1f48,0x1a2,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b81a4(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_023f20f0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_023f22f8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_023f2500,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_023f2708,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_023f2910,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_023f2b18,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023f2d20,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_023f2f28,0x200,param_2), cVar1 != '\0' &&
       (((((((cVar1 = (*param_1)(&DAT_023f3130,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023f3338,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023f3540,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_023f3748,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023f3950,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_023f3b58,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_023f3d60,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023f3f68,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_023f4170,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_023f4378,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023f4580,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_023f4788,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((((((((cVar1 = (*param_1)(&DAT_023f4990,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023f4b98,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023f4da0,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_023f4fa8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023f51b0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_023f53b8,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_023f55c0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_023f57c8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_023f59d0,0x200,param_2), cVar1 != '\0')))))) &&
              ((cVar1 = (*param_1)(&DAT_023f5bd8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023f5de0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_023f5fe8,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_023f61f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023f63f8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023f6600,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_023f6808,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023f6a10,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_023f6c18,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_023f6e20,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023f7028,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_023f7230,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_023f7438,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023f7640,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_023f7848,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_023f7a50,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023f7c58,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023f7e60,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_023f8068,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023f8270,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_023f8478,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_023f8680,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_023f8888,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_023f8a90,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_023f8c98,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023f8ea0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_023f90a8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_023f92b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023f94b8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_023f96c0,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_023f98c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023f9ad0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023f9cd8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_023f9ee0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_023fa0e8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_023fa2f0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_023fa4f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023fa700,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_023fa908,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_023fab10,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023fad18,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_023faf20,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_023fb128,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023fb330,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_023fb538,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_023fb740,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023fb948,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023fbb50,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_023fbd58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023fbf60,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_023fc168,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_023fc370,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023fc578,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023fc780,0x200,param_2), cVar1 != '\0')))))))) &&
        ((((cVar1 = (*param_1)(&DAT_023fc988,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_023fcb90,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_023fcd98,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_023fcfa0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023fd1a8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023fd3b0,0x200,param_2), cVar1 != '\0' &&
              (((((cVar1 = (*param_1)(&DAT_023fd5b8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_023fd7c0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_023fd9c8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_023fdbd0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023fddd8,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_023fdfe0,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_023fe1e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023fe3f0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023fe5f8,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_023fe800,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023fea08,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023fec10,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_023fee18,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023ff020,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_023ff228,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_023ff430,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_023ff638,0x200,param_2), cVar1 != '\0')))))) &&
            (cVar1 = (*param_1)(&DAT_023ff840,0x200,param_2), cVar1 != '\0')))) &&
          ((((((((cVar1 = (*param_1)(&DAT_023ffa48,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_023ffc50,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_023ffe58,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02400060,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02400268,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_02400470,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02400678,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02400880,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02400a88,0x200,param_2), cVar1 != '\0')))) &&
             ((((((cVar1 = (*param_1)(&DAT_02400c90,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02400e98,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_024010a0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_024012a8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_024014b0,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_024016b8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_024018c0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02401ac8,0x200,param_2), cVar1 != '\0')))))) &&
              (cVar1 = (*param_1)(&DAT_02401cd0,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02401ed8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_024020e0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_024022e8,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_024024f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_024026f8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02402900,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02402b08,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02402d10,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02402f18,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02403120,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02403328,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02403530,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_02403738,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02403940,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02403b48,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02403d50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02403f58,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02404160,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02404368,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02404570,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02404778,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02404980,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02404b88,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02404d90,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02404f98,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_024051a0,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_024053a8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_024055b0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_024057b8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_024059c0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02405bc8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02405dd0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02405fd8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_024061e0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_024063e8,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
         (cVar1 = (*param_1)(&DAT_024065f0,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_024067f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02406a00,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02406c08,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02406e10,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02407018,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02407220,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02407428,0xe0,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b8ccd(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_02407510,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02407718,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02407920,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02407b28,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02407d30,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02407f38,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02408140,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_02408348,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02408550,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02408758,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02408960,0x200,param_2), cVar1 != '\0')))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02408b68,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02408d70,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02408f78,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02409180,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02409388,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02409590,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02409798,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_024099a0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02409ba8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02409db0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02409fb8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_0240a1c0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_0240a3c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0240a5d0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_0240a7d8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_0240a9e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0240abe8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0240adf0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0240aff8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0240b200,0x200,param_2), cVar1 != '\0')))))))))))))) &&
       (((((cVar1 = (*param_1)(&DAT_0240b408,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_0240b610,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0240b818,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_0240ba20,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_0240bc28,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0240be30,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0240c038,0x200,param_2), cVar1 != '\0')))) &&
        (((((cVar1 = (*param_1)(&DAT_0240c240,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0240c448,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0240c650,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_0240c858,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0240ca60,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_0240cc68,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_0240ce70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0240d078,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0240d280,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_0240d488,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0240d690,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0240d898,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0240daa0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0240dca8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_0240deb0,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_0240e0b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0240e2c0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0240e4c8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0240e6d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0240e8d8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0240eae0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_0240ece8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0240eef0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0240f0f8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0240f300,0x10a,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b90fd(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_0240f410,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0240f618,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_0240f820,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0240fa28,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0240fc30,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0240fe38,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02410040,0x200,param_2), cVar1 != '\0')))))) &&
            (cVar1 = (*param_1)(&DAT_02410248,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02410450,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02410658,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02410860,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02410a68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02410c70,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*param_1)(&DAT_02410e78,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02411080,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02411288,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02411490,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_02411698,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_024118a0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02411aa8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02411cb0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02411eb8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_024120c0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_024122c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_024124d0,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_024126d8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_024128e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02412ae8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02412cf0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02412ef8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02413100,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02413308,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02413510,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02413718,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02413920,0x200,param_2), cVar1 != '\0')))) &&
       ((((((cVar1 = (*param_1)(&DAT_02413b28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02413d30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02413f38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02414140,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02414348,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02414550,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02414758,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02414960,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02414b68,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02414d70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02414f78,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02415180,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02415388,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02415590,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02415798,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_024159a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02415ba8,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_02415db0,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_02415fb8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_024161c0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_024163c8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_024165d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_024167d8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_024169e0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02416be8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02416df0,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02416ff8,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_02417200,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02417408,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02417610,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02417818,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02417a20,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02417c28,0x200,param_2), cVar1 != '\0')))))))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02417e30,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02418038,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02418240,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02418448,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02418650,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02418858,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02418a60,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02418c68,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02418e70,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02419078,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02419280,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02419488,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02419690,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02419898,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02419aa0,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02419ca8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02419eb0,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_0241a0b8,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_0241a2c0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_0241a4c8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_0241a6d0,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_0241a8d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0241aae0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0241ace8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0241aef0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0241b0f8,0x1d3,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005b973c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_0241b2d0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023f22f8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_023f2500,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023f2708,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_023f2910,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_023f2b18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_023f2d20,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_023f2f28,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_023f3130,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023f3338,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_023f3540,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_023f3748,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_023f3950,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_023f3b58,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_023f3d60,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_023f3f68,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (cVar1 = (*param_1)(&DAT_0241b4d8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_0241b6e0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0241b8e8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0241baf0,0x200,param_2), cVar1 != '\0')))) &&
      (((((cVar1 = (*param_1)(&DAT_0241bcf8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0241bf00,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0241c108,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0241c310,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0241c518,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_0241c720,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_0241c928,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0241cb30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0241cd38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0241cf40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0241d148,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_0241d350,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_0241d558,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0241d760,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_0241d968,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_0241db70,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0241dd78,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0241df80,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_0241e188,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0241e390,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0241e598,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0241e7a0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0241e9a8,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_0241ebb0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_0241edb8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0241efc0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0241f1c8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0241f3d0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0241f5d8,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_0241f7e0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0241f9e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0241fbf0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_0241fdf8,0x200,param_2), cVar1 != '\0')) &&
        (((((((cVar1 = (*param_1)(&DAT_02420000,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02420208,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02420410,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02420618,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02420820,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02420a28,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02420c30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02420e38,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02421040,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02421248,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02421450,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02421658,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02421860,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02421a68,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02421c70,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02421e78,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02422080,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02422288,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02422490,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02422698,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_024228a0,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02422aa8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02422cb0,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_02422eb8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_024230c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_024232c8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_024234d0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_024236d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_024238e0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02423ae8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02423cf0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02423ef8,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_02424100,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02424308,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02424510,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02424718,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02424920,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02424b28,0xc6,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}


/*
Unable to decompile 'FUN_005b9d48'
Cause: Exception while decompiling 005b9d48: process: timeout

*/

/*
Unable to decompile 'FUN_005bc633'
Cause: Exception while decompiling 005bc633: process: timeout

*/

/*
Unable to decompile 'FUN_005bef1c'
Cause: Exception while decompiling 005bef1c: process: timeout

*/

/*
Unable to decompile 'FUN_005c1805'
Cause: Exception while decompiling 005c1805: process: timeout

*/


undefined4 FUN_005c40ee(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_0255ba80,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0255bc88,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0255be90,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0255c098,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_0255c2a0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_0255c4a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0255c6b0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_0255c8b8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_0255cac0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0255ccc8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0255ced0,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_0255d0d8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0255d2e0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0255d4e8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_0255d6f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0255d8f8,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_0255db00,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_0255dd08,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0255df10,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0255e118,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0255e320,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0255e528,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_0255e730,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0255e938,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0255eb40,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_0255ed48,0x200,param_2), cVar1 != '\0')) &&
       ((((((((cVar1 = (*param_1)(&DAT_0255ef50,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0255f158,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0255f360,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0255f568,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0255f770,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_0255f978,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0255fb80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0255fd88,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_0255ff90,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02560198,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025603a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_025605a8,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_025607b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025609b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02560bc0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02560dc8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02560fd0,0x200,param_2), cVar1 != '\0')))) &&
         (((((cVar1 = (*param_1)(&DAT_025611d8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_025613e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_025615e8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_025617f0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_025619f8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02561c00,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02561e08,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02562010,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02562218,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02562420,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02562628,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02562830,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02562a38,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02562c40,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02562e48,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02563050,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02563258,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02563460,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02563668,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02563870,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02563a78,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02563c80,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02563e88,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02564090,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02564298,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_025644a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_025646a8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_025648b0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02564ab8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02564cc0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02564ec8,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_025650d0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_025652d8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_025654e0,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_025656e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025658f0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02565af8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02565d00,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02565f08,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02566110,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02566318,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02566520,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02566728,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02566930,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02566b38,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02566d40,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02566f48,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02567150,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02567358,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02567560,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02567768,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02567970,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02567b78,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02567d80,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02567f88,0x14a,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005c4771(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_025680d8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_025682e0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_025684e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_025686f0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_025688f8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02568b00,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02568d08,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02568f10,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02569118,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02569320,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02569528,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02569730,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02569938,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02569b40,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02569d48,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02569f50,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_0256a158,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_0256a360,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0256a568,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0256a770,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0256a978,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0256ab80,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_0256ad88,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0256af90,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0256b198,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_0256b3a0,0x200,param_2), cVar1 != '\0')) &&
       ((((((((cVar1 = (*param_1)(&DAT_0256b5a8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0256b7b0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0256b9b8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0256bbc0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0256bdc8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_0256bfd0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0256c1d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0256c3e0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_0256c5e8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_0256c7f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0256c9f8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0256cc00,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_0256ce08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0256d010,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0256d218,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0256d420,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0256d628,0x200,param_2), cVar1 != '\0')))) &&
         (((((cVar1 = (*param_1)(&DAT_0256d830,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0256da38,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0256dc40,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0256de48,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_0256e050,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0256e258,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_0256e460,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_0256e668,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0256e870,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0256ea78,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_0256ec80,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0256ee88,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0256f090,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0256f298,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0256f4a0,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_0256f6a8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_0256f8b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0256fab8,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_0256fcc0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02563870,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02563a78,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02563c80,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_0256fec8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_025700d0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_025702d8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_025704e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_025706e8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_025708f0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02570af8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02570d00,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02570f08,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_02571110,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02571318,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02571520,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02571728,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02571930,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02571b38,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02571d40,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02571f48,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02572150,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02572358,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02572560,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02572768,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02572970,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02572b78,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02572d80,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02572f88,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02573190,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02573398,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_025735a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_025737a8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_025739b0,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02573bb8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02573dc0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02573fc8,0x155,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005c4df4(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02574120,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_025682e0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02574328,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02574530,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02574738,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02574940,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02574b48,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02574d50,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02574f58,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02575160,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02575368,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02575570,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02575778,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02575980,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02575b88,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02575d90,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02575f98,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_025761a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025763a8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_025765b0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_025767b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025769c0,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02576bc8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02576dd0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02576fd8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_025771e0,0x200,param_2), cVar1 != '\0')) &&
       ((((((((cVar1 = (*param_1)(&DAT_025773e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025775f0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_025777f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02577a00,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02577c08,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02577e10,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02578018,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02578220,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02578428,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02578630,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02578838,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02578a40,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_02578c48,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02578e50,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02579058,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02560dc8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02560fd0,0x200,param_2), cVar1 != '\0')))) &&
         (((((cVar1 = (*param_1)(&DAT_02579260,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02579468,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02579670,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02579878,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02579a80,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02579c88,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02579e90,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_0257a098,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0257a2a0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0257a4a8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_0256ec80,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0257a6b0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0257a8b8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0257aac0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0257acc8,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_0257aed0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_0257b0d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0257b2e0,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_0257b4e8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_0257b6f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0257b8f8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0257bb00,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_0257bd08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0257bf10,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0257c118,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_0257c320,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0257c528,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0257c730,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_0257c938,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0257cb40,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0257cd48,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_0257cf50,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0257d158,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0257d360,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_0257d568,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0257d770,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0257d978,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_0257db80,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0257dd88,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0257df90,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0257e198,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0257e3a0,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_0257e5a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0257e7b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0257e9b8,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_0257ebc0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_0257edc8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0257efd0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0257f1d8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_0257f3e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0257f5e8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0257f7f0,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_0257f9f8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0257fc00,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0257fe08,0x15a,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005c5477(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_0257ff68,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_025682e0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02580170,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02580378,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02580580,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02580788,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02580990,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02580b98,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02580da0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02580fa8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_025811b0,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_025813b8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_025815c0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_025817c8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_025819d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02581bd8,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02581de0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02581fe8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025821f0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_025823f8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02582600,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02582808,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02582a10,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02582c18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02582e20,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02583028,0x200,param_2), cVar1 != '\0')) &&
       ((((((((cVar1 = (*param_1)(&DAT_02583230,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02583438,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02583640,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02583848,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02583a50,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02583c58,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02583e60,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02584068,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02584270,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02584478,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02584680,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02584888,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_02584a90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02584c98,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02584ea0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_025850a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_025852b0,0x200,param_2), cVar1 != '\0')))) &&
         (((((cVar1 = (*param_1)(&DAT_025854b8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_025856c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_025858c8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02585ad0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02585cd8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02585ee0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_025860e8,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_025862f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025864f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02586700,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02586908,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02586b10,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02586d18,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02586f20,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02587128,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02587330,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02587538,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02587740,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02587948,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02587b50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02587d58,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02587f60,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02588168,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02588370,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02588578,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02588780,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02588988,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02588b90,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02588d98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02588fa0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_025891a8,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_025893b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_025895b8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_025897c0,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_025899c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02589bd0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02589dd8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02589fe0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0258a1e8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0258a3f0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0258a5f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0258a800,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_0258aa08,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0258ac10,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0258ae18,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_0258b020,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_0258b228,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0258b430,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0258b638,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_0258b840,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0258ba48,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0258bc50,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_0258be58,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0258c060,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0258c268,0x15e,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005c5afb(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_0258c3c8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0258c5d0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_0258c7d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0258c9e0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0258cbe8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_0258cdf0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0258cff8,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_0258d200,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_0258d408,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0258d610,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0258d818,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0258da20,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0258dc28,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_0258de30,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_0258e038,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0258e240,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_0258e448,0x200,param_2), cVar1 != '\0')))) &&
        ((((((cVar1 = (*param_1)(&DAT_0258e650,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0258e858,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0258ea60,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0258ec68,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0258ee70,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_0258f078,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_0258f280,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0258f488,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0258f690,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_0258f898,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0258faa0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0258fca8,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_0258feb0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_025900b8,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_025902c0,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_025904c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025906d0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_025908d8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02590ae0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02590ce8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02590ef0,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_025910f8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02591300,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02591508,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02591710,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02591918,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02591b20,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_02591d28,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02591f30,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02592138,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02592340,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02592548,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_02592750,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02592958,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02592b60,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02592d68,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02592f70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02593178,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02593380,0x200,param_2), cVar1 != '\0')))))) &&
         ((((((cVar1 = (*param_1)(&DAT_02593588,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02593790,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02593998,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02593ba0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02593da8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02593fb0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_025941b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025943c0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_025945c8,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_025947d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025949d8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02594be0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02594de8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02594ff0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_025951f8,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_02595400,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02595608,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02595810,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02595a18,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02595c20,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_02595e28,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02596030,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02596238,0x200,param_2), cVar1 != '\0')) &&
        (((((((((cVar1 = (*param_1)(&DAT_02596440,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02596648,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02596850,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02596a58,0x200,param_2), cVar1 != '\0')))) &&
               (((cVar1 = (*param_1)(&DAT_02596c60,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02596e68,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02597070,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_02597278,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02597480,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02597688,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02597890,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02597a98,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02597ca0,0x200,param_2), cVar1 != '\0')))))) &&
            (((cVar1 = (*param_1)(&DAT_02597ea8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025980b0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_025982b8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_025984c0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_025986c8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_025988d0,0x200,param_2), cVar1 != '\0' &&
                ((((((cVar1 = (*param_1)(&DAT_02598ad8,0x200,param_2), cVar1 != '\0' &&
                     (cVar1 = (*param_1)(&DAT_02598ce0,0x200,param_2), cVar1 != '\0')) &&
                    (cVar1 = (*param_1)(&DAT_02598ee8,0x200,param_2), cVar1 != '\0')) &&
                   ((cVar1 = (*param_1)(&DAT_025990f0,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_025992f8,0x200,param_2), cVar1 != '\0')))) &&
                  (cVar1 = (*param_1)(&DAT_02599500,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02599708,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02599910,0x200,param_2), cVar1 != '\0')))))))))))))) &&
           (cVar1 = (*param_1)(&DAT_02599b18,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02599d20,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02599f28,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0259a130,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_0259a338,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0259a540,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_0259a748,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_0259a950,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0259ab58,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_0259ad60,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_0259af68,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0259b170,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0259b378,0x200,param_2), cVar1 != '\0')) &&
            ((((cVar1 = (*param_1)(&DAT_0259b580,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0259b788,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_0259b990,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_0259bb98,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0259bda0,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_0259bfa8,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_0259c1b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0259c3b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0259c5c0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0259c7c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0259c9d0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_0259cbd8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0259cde0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0259cfe8,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_0259d1f0,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_0259d3f8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0259d600,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0259d808,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0259da10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0259dc18,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_0259de20,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_0259e028,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0259e230,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_0259e438,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_0259e640,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0259e848,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_0259ea50,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_0259ec58,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0259ee60,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0259f068,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_0259f270,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0259f478,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_0259f680,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_0259f888,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0259fa90,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0259fc94,0xf,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005c6544(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_0259fca8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0259feb0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_025a00b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025a02c0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_025a04c8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_025a06d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025a08d8,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_025a0ae0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_025a0ce8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025a0ef0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_025a10f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_025a1300,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025a1508,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_025a1710,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_025a1918,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025a1b20,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_025a1d28,0x200,param_2), cVar1 != '\0')))) &&
        ((((((cVar1 = (*param_1)(&DAT_025a1f30,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025a2138,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_025a2340,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_025a2548,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025a2750,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_025a2958,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_025a2b60,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025a2d68,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_025a2f70,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_025a3178,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025a3380,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_025a3588,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_025a3790,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_025a3998,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_025a3ba0,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_025a3da8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025a3fb0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_025a41b8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_025a43c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_025a45c8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_025a47d0,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_025a49d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025a4be0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_025a4de8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_025a4ff0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_025a51f8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_025a5400,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_025a5608,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_025a5810,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_025a5a18,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_025a5c20,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_025a5e28,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_025a6030,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_025a6238,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_025a6440,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_025a6648,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_025a6850,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025a6a58,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_025a6c60,0x200,param_2), cVar1 != '\0')))))) &&
         ((((((cVar1 = (*param_1)(&DAT_025a6e68,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025a7070,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_025a7278,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_025a7480,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025a7688,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_025a7890,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_025a7a98,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025a7ca0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_025a7ea8,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_025a80b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025a82b8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_025a84c0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_025a86c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_025a88d0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_025a8ad8,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_025a8ce0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_025a8ee8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_025a90f0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_025a92f8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_025a9500,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_025a9708,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_025a9910,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_025a9b18,0x200,param_2), cVar1 != '\0')) &&
        (((((((((cVar1 = (*param_1)(&DAT_025a9d20,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_025a9f28,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_025aa130,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_025aa338,0x200,param_2), cVar1 != '\0')))) &&
               (((cVar1 = (*param_1)(&DAT_02596c60,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_025aa540,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_025aa748,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_025aa950,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_025aab58,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_025aad60,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_025aaf68,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_025ab170,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_025ab378,0x200,param_2), cVar1 != '\0')))))) &&
            (((cVar1 = (*param_1)(&DAT_025ab580,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025ab788,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_025ab990,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_025abb98,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_025abda0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_025abfa8,0x200,param_2), cVar1 != '\0' &&
                ((((((cVar1 = (*param_1)(&DAT_025ac1b0,0x200,param_2), cVar1 != '\0' &&
                     (cVar1 = (*param_1)(&DAT_025ac3b8,0x200,param_2), cVar1 != '\0')) &&
                    (cVar1 = (*param_1)(&DAT_025ac5c0,0x200,param_2), cVar1 != '\0')) &&
                   ((cVar1 = (*param_1)(&DAT_025ac7c8,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_025ac9d0,0x200,param_2), cVar1 != '\0')))) &&
                  (cVar1 = (*param_1)(&DAT_025acbd8,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_025acde0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_025acfe8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
           (cVar1 = (*param_1)(&DAT_025ad1f0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_025ad3f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025ad600,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_025ad808,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_025ada10,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_025adc18,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_025ade20,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_025ae028,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025ae230,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_025ae438,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_025ae640,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025ae848,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_025aea50,0x200,param_2), cVar1 != '\0')) &&
            ((((cVar1 = (*param_1)(&DAT_025aec58,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_025aee60,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_025af068,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_025af270,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_025af478,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_025af680,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_025af888,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025afa90,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_025afc98,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_025afea0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_025b00a8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_025b02b0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_025b04b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_025b06c0,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_025b08c8,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_025b0ad0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025b0cd8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0259d808,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0259da10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025b0ee0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_025b10e8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_025b12f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025b14f8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_025b1700,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_025b1908,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_025b1b10,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_025b1d18,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_025b1f20,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_025b2128,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_025b2330,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_025b2538,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_025b2740,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_025b2948,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_025b2b50,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_025b2d58,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_025b2f5c,0xd,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005c6f90(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_025b2f70,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0259feb0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_025b3178,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025b3380,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02580580,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02580788,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02580990,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_025b3588,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_025b3790,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025b3998,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_025b3ba0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_025b3da8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025b3fb0,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_025b41b8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_025b43c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025b45c8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_025b47d0,0x200,param_2), cVar1 != '\0')))) &&
        ((((((cVar1 = (*param_1)(&DAT_025b49d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025b4be0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_025b4de8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_025b4ff0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025b51f8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_025b5400,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_025b5608,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025b5810,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_025b5a18,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_025b5c20,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025b5e28,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_025b6030,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_025b6238,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_025b6440,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_025b6648,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_025b6850,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025b6a58,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_025b6c60,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_025b6e68,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_025b7070,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_025b7278,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_025b7480,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025b7688,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_025b7890,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_025b7a98,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_025b7ca0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_025b7ea8,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_025b80b0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_025b82b8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_025b84c0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_025b86c8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_025b88d0,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_025b8ad8,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_025b8ce0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_025b8ee8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_025b90f0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_025b92f8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025b9500,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_025b9708,0x200,param_2), cVar1 != '\0')))))) &&
         ((((((cVar1 = (*param_1)(&DAT_025b9910,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025b9b18,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_025b9d20,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_025b9f28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025ba130,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_025ba338,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_025ba540,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025ba748,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_025ba950,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_025bab58,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025bad60,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_025baf68,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_025bb170,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_025bb378,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_025bb580,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_025bb788,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_025bb990,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_025bbb98,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_025bbda0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_025bbfa8,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_025bc1b0,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_025bc3b8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_025bc5c0,0x200,param_2), cVar1 != '\0')) &&
        (((((((((cVar1 = (*param_1)(&DAT_025bc7c8,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_025bc9d0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_025bcbd8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_025bcde0,0x200,param_2), cVar1 != '\0')))) &&
               (((cVar1 = (*param_1)(&DAT_025bcfe8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_025bd1f0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_025bd3f8,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_025bd600,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_025bd808,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_025bda10,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_025bdc18,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_025bde20,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_025be028,0x200,param_2), cVar1 != '\0')))))) &&
            (((cVar1 = (*param_1)(&DAT_025be230,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025be438,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_025be640,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_025be848,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_025bea50,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_025bec58,0x200,param_2), cVar1 != '\0' &&
                ((((((cVar1 = (*param_1)(&DAT_025bee60,0x200,param_2), cVar1 != '\0' &&
                     (cVar1 = (*param_1)(&DAT_025bf068,0x200,param_2), cVar1 != '\0')) &&
                    (cVar1 = (*param_1)(&DAT_025bf270,0x200,param_2), cVar1 != '\0')) &&
                   ((cVar1 = (*param_1)(&DAT_025bf478,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_025bf680,0x200,param_2), cVar1 != '\0')))) &&
                  (cVar1 = (*param_1)(&DAT_025bf888,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_025bfa90,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_025bfc98,0x200,param_2), cVar1 != '\0')))))))))))))) &&
           (cVar1 = (*param_1)(&DAT_025bfea0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_025c00a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025c02b0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_025c04b8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_025c06c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_025c08c8,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_025c0ad0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_025c0cd8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025c0ee0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_025c10e8,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_025c12f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_025c14f8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_025c1700,0x200,param_2), cVar1 != '\0')) &&
            ((((cVar1 = (*param_1)(&DAT_025c1908,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_025c1b10,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_025c1d18,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_025c1f20,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_025c2128,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_025c2330,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_025c2538,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025c2740,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_025c2948,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_025c2b50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_025c2d58,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_025c2f60,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_025c3168,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_025c3370,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_025c3578,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_025c3780,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_025c3988,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_025c3b90,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_025c3d98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025c3fa0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_025c41a8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_025c43b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_025c45b8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_025c47c0,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_025c49c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_025c4bd0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_025c4dd8,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_025c4fe0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_025c51e8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_025c53f0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_025c55f8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_025c5800,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_025c5a08,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_025c5c10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_025c5e18,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_025c601c,0xe,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}


/*
Unable to decompile 'FUN_005c79da'
Cause: Exception while decompiling 005c79da: process: timeout

*/

/*
Unable to decompile 'FUN_005ca216'
Cause: Exception while decompiling 005ca216: process: timeout

*/

/*
Unable to decompile 'FUN_005cca52'
Cause: Exception while decompiling 005cca52: process: timeout

*/


undefined4 FUN_005cfc93(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_026b3850,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_026b3a58,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_026b3c60,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_026b3e68,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_026b4070,0x130,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005cfcf9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_026b41a8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_026b43ac,0x2c,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005cfd32(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_026b43e0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_026b45e4,0x32,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005cfd92(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_026b4708,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_026b4910,0xfa,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005cfdf5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_026b4b90,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_026b4d94,5,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005cfe2e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_026b4da0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_026b4fa4,3,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005cfe67(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_026b4fa8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_026b51ac,2,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005cfea0(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_026b51b0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_026b53b4,7,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005cff4e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_026b58e0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_026b5ae8,0x10c,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005cffd9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_026b60c0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_026b62c4,7,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005d0012(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_026b62d0,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_026b64d8,0x44,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_005d004b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_026b6520,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_026b6728,0x40,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



void FUN_005d00fa(undefined4 *param_1,uint *param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  FUN_00674114(param_2);
  local_10 = unaff_EBX[6];
  local_14 = *unaff_EBX;
  puVar3 = &local_c;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (*param_2 < *(uint *)(local_8 + 0xc))) {
    local_10 = unaff_EBX[6];
    local_14 = *unaff_EBX;
    puVar3 = &local_14;
  }
  uVar1 = puVar3[1];
  *param_1 = *puVar3;
  param_1[1] = uVar1;
  return;
}



void FUN_005d015b(undefined4 *param_1,uint *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  local_c = CONCAT31(local_c._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_8[1] + 0x15) == '\0') {
    puVar2 = (undefined4 *)local_8[1];
    do {
      local_8 = puVar2;
      local_c = CONCAT31(local_c._1_3_,*param_2 < (uint)local_8[3]);
      if (*param_2 < (uint)local_8[3]) {
        puVar2 = (undefined4 *)*local_8;
      }
      else {
        puVar2 = (undefined4 *)local_8[2];
      }
    } while (*(char *)((int)puVar2 + 0x15) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_8;
  if ((char)local_c != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_005d01d1;
    }
    FUN_005d021f();
  }
  uVar3 = local_c;
  if (*param_2 <= (uint)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_005d01d1:
  puVar2 = (undefined4 *)FUN_004650b9(&local_1c,uVar3,local_8,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void FUN_005d021f(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x15) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x15) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x15) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x15) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x15) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x15) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



void __thiscall FUN_005d0280(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x15) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



void FUN_005d02c2(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 *unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *unaff_ESI;
    puVar1[4] = unaff_ESI[1];
    *(undefined *)(puVar1 + 5) = 0;
    *(undefined *)((int)puVar1 + 0x15) = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_005d02f8(undefined4 *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_3)

{
  int iVar1;
  uint uVar2;
  undefined4 *puVar3;
  uint uVar4;
  
  *param_1 = common::
             W68DECA2A<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
             ::vftable;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 1));
  puVar3 = param_1 + 8;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)puVar3)
  ;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 1),param_2,0,0xffffffff);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)puVar3,
             param_3,0,0xffffffff);
  if ((*(int *)(param_2 + 0x14) != 0) && (*(int *)(param_3 + 0x14) != 0)) {
    uVar4 = 0;
    while (iVar1 = FUN_005d04b6(puVar3,uVar4), iVar1 != -1) {
      uVar4 = iVar1 + param_1[0xd];
      while( true ) {
        uVar2 = FUN_005d04b6(puVar3,uVar4);
        if (uVar2 != uVar4) break;
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
                  ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                   (param_1 + 1),uVar4,param_1[0xd]);
      }
    }
    iVar1 = FUN_005d04b6(puVar3,0);
    if (iVar1 == 0) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
                ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 (param_1 + 1),0,param_1[0xd]);
    }
    if ((uint)param_1[0xe] < 0x10) {
      puVar3 = param_1 + 9;
    }
    else {
      puVar3 = (undefined4 *)param_1[9];
    }
    uVar4 = FUN_005d04d9(puVar3,param_1[0xd]);
    if (uVar4 != 0xffffffff) {
      uVar2 = param_1[6] - param_1[0xd];
      if (uVar4 == uVar2) {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
                  ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                   (param_1 + 1),uVar2,param_1[0xd]);
      }
    }
  }
  return param_1;
}



void __fastcall FUN_005d03eb(undefined4 *param_1)

{
  *param_1 = common::
             W68DECA2A<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
             ::vftable;
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



undefined4 FUN_005d040e(undefined4 param_1)

{
  int in_EAX;
  
  FUN_005d0564(in_EAX + 0x20);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __fastcall
FUN_005d042d(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  uint uVar1;
  char *pcVar2;
  char *pcVar3;
  int iVar4;
  uint uVar5;
  int unaff_EDI;
  
  uVar1 = *(uint *)(unaff_EDI + 0x14);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1);
  FUN_00422150(uVar1);
  uVar5 = 0;
  if (uVar1 != 0) {
    do {
      pcVar2 = (char *)FUN_004221b0(uVar5);
      pcVar3 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
               operator[](param_1,uVar5);
      iVar4 = _toupper((int)*pcVar2);
      uVar5 = uVar5 + 1;
      *pcVar3 = (char)iVar4;
    } while (uVar5 < uVar1);
  }
  return param_1;
}



undefined4 __thiscall FUN_005d049a(undefined4 param_1_00,byte param_1)

{
  FUN_005d03eb();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d04b6(int param_1,undefined4 param_2)

{
  int iVar1;
  
  if (*(uint *)(param_1 + 0x18) < 0x10) {
    iVar1 = param_1 + 4;
  }
  else {
    iVar1 = *(int *)(param_1 + 4);
  }
  FUN_004277a0(iVar1,param_2,*(undefined4 *)(param_1 + 0x14));
  return;
}



// WARNING: Removing unreachable block (ram,0x005d04eb)
// WARNING: Removing unreachable block (ram,0x005d0503)

int FUN_005d04d9(char *param_1,uint param_2)

{
  char cVar1;
  uint uVar2;
  int in_EAX;
  int iVar3;
  char **ppcVar4;
  char **ppcVar5;
  char **ppcVar6;
  
  if (param_2 == 0) {
    iVar3 = *(int *)(in_EAX + 0x14);
  }
  else {
    if (param_2 <= *(uint *)(in_EAX + 0x14)) {
      uVar2 = *(uint *)(in_EAX + 0x18);
      ppcVar5 = (char **)(in_EAX + 4);
      ppcVar6 = ppcVar5;
      if (0xf < uVar2) {
        ppcVar6 = (char **)*ppcVar5;
      }
      ppcVar6 = (char **)((int)ppcVar6 + (*(uint *)(in_EAX + 0x14) - param_2));
      cVar1 = *param_1;
      while( true ) {
        if ((*(char *)ppcVar6 == cVar1) &&
           (iVar3 = FUN_0042a160(ppcVar6,param_1,param_2), iVar3 == 0)) {
          if (0xf < uVar2) {
            ppcVar5 = (char **)*ppcVar5;
          }
          return (int)ppcVar6 - (int)ppcVar5;
        }
        ppcVar4 = ppcVar5;
        if (0xf < uVar2) {
          ppcVar4 = (char **)*ppcVar5;
        }
        if (ppcVar6 == ppcVar4) break;
        ppcVar6 = (char **)((int)ppcVar6 + -1);
      }
    }
    iVar3 = -1;
  }
  return iVar3;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_005d0564(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,int param_1)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  int unaff_ESI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_58 [24];
  undefined4 local_40;
  int local_3c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_38;
  int local_34;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x5d0570;
  local_3c = param_1;
  local_34 = 0;
  local_38 = param_1_00;
  if (*(int *)(unaff_ESI + 0x18) == 0) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1_00);
  }
  else {
    local_18 = 0xf;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
              (local_30,0);
    local_8 = 0;
    local_34 = FUN_005d04b6(local_3c,0);
    if (local_34 == -1) {
      pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_005d0682(local_58,0,*(undefined4 *)(unaff_ESI + 0x18));
      local_8._0_1_ = 3;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (local_30,pbVar1,0,0xffffffff);
      FUN_004017b2(1,0);
      local_40 = 0xf;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
                (local_58,0);
      local_8._0_1_ = 4;
      pbVar1 = local_58;
    }
    else {
      pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_005d0682(local_58,0,local_34);
      local_8._0_1_ = 1;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (local_30,pbVar1,0,0xffffffff);
      local_8._0_1_ = 0;
      FUN_004017b2(1,0);
      pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_005d0682(local_58,*(int *)(local_3c + 0x14) + local_34,
                            *(int *)(unaff_ESI + 0x18) - local_34);
      local_8._0_1_ = 2;
    }
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_ESI + 4),pbVar1,0,0xffffffff);
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_004017b2(1,0);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_38,local_30);
    FUN_004017b2(1,0);
  }
  FUN_00a421fb();
  return;
}



undefined4 __thiscall
FUN_005d0682(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_005d06a4(param_1_00,param_2,param_3,(int)&param_1 + 3);
  return param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_005d06a4(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            uint param_2,uint param_3)

{
  *(undefined4 *)(param_1_00 + 0x18) = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (param_1_00,0);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00,param_1,param_2,param_3);
  return param_1_00;
}



void FUN_005d06ce(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int *in_EAX;
  int *unaff_EDI;
  
  puVar1 = (undefined4 *)*in_EAX;
  *in_EAX = 0;
  puVar2 = (undefined4 *)*unaff_EDI;
  if ((puVar1 != puVar2) && (puVar2 != (undefined4 *)0x0)) {
    (**(code **)*puVar2)(1);
  }
  *unaff_EDI = (int)puVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_005d06ea(int *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 *unaff_EBX;
  int local_60;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_5c [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_40 [24];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x50;
  local_8 = 0x5d06f6;
  local_18 = FUN_004dc703();
  if (unaff_EBX == (undefined4 *)0x0) {
    FUN_00a3fb10();
  }
  local_24 = *unaff_EBX;
  local_20 = unaff_EBX[6];
  local_1c = local_24;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*param_1 < *(int *)(local_18 + 0xc))) {
    local_28 = 0xf;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
              (local_40,0);
    local_8 = 0;
    local_60 = *param_1;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_5c,local_40);
    local_8 = CONCAT31(local_8._1_3_,1);
    puVar2 = (undefined4 *)FUN_005d07ac(&local_24,&local_60,local_1c,local_18);
    local_1c = *puVar2;
    local_18 = puVar2[1];
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
  }
  iVar3 = FUN_006badde();
  return iVar3 + 4;
}



undefined4 * FUN_005d07ac(undefined4 *param_1,int *param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int in_EAX;
  int iVar4;
  undefined4 *puVar5;
  bool bVar6;
  undefined4 uVar7;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar3 = FUN_006b8eca();
    if (cVar3 == '\0') {
      cVar3 = FUN_006b8eca();
      if (cVar3 == '\0') {
        iVar4 = *param_2;
        iVar1 = *(int *)(param_4 + 0xc);
        bVar6 = SBORROW4(iVar1,iVar4);
        iVar2 = iVar1 - iVar4;
        if (iVar4 < iVar1) {
          iVar4 = FUN_007a6a2f();
          iVar2 = *param_2;
          if (*(int *)(*(int *)(iVar4 + 4) + 0xc) < iVar2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x2d) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_005d07ce;
          }
          bVar6 = SBORROW4(*(int *)(param_4 + 0xc),iVar2);
          iVar2 = *(int *)(param_4 + 0xc) - iVar2;
        }
        if (bVar6 != iVar2 < 0) {
          FUN_00743d11();
          cVar3 = FUN_006b8eca();
          if ((cVar3 != '\0') || (*param_2 < *(int *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x2d) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_005d07ce;
          }
        }
LAB_005d08e9:
        puVar5 = (undefined4 *)FUN_005d090b(in_EAX,param_2);
        *param_1 = *puVar5;
        param_1[1] = puVar5[1];
        return param_1;
      }
      if (*param_2 <= *(int *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_005d08e9;
      uVar7 = 0;
      goto LAB_005d07ce;
    }
    if (*(int *)(param_4 + 0xc) <= *param_2) goto LAB_005d08e9;
  }
  uVar7 = 1;
LAB_005d07ce:
  FUN_005d09cc(param_1,uVar7,param_2);
  return param_1;
}



void FUN_005d090b(undefined4 *param_1,int *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x2d) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (int)local_c[3]);
      if (*param_2 < (int)local_c[3]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x2d) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_005d097e;
    }
    FUN_007a6a2f();
  }
  uVar3 = local_8;
  if (*param_2 <= (int)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_005d097e:
  puVar2 = (undefined4 *)FUN_005d09cc(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_005d09cc(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x5d09d8;
  if (0x7fffffd < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_005d0b19(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_005d0af1;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_005d0af1;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_005d0af1:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xb) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x2c) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xb) == '\0') {
LAB_005d0aad:
        *(undefined *)(piVar1 + 0xb) = 1;
        *(undefined *)(piVar7 + 0xb) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x2c) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007fb425(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x2c) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x2c) = 0;
        FUN_004fc926(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xb) == '\0') goto LAB_005d0aad;
    if (piVar8 == (int *)*piVar1) {
      FUN_004fc926(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x2c) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x2c) = 0;
    FUN_007fb425(unaff_ESI);
  } while( true );
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_005d0b19(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x30);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_1_00;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (puVar1 + 4),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (param_1_00 + 1));
    *(undefined *)(puVar1 + 0xb) = 0;
    *(undefined *)((int)puVar1 + 0x2d) = 0;
  }
  return puVar1;
}



void Catch_All_005d0b76(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void FUN_005d0bc8(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W6D665DF4::
            WE5E7ED83<class_common::WB943A9F0_const&,class_std::vector<unsigned_char,class_std::allocator<unsigned_char>_>&,class_common::WB943A9F0_const&,bool&>
            ::vftable;
  return;
}



undefined4 * __thiscall FUN_005d0bcf(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W6D665DF4::
                WE5E7ED83<class_common::WB943A9F0_const&,class_std::vector<unsigned_char,class_std::allocator<unsigned_char>_>&,class_common::WB943A9F0_const&,bool&>
                ::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_005d0bec(undefined4 *param_1)

{
  *param_1 = W560DA063::WC8EC8AEB::vftable;
  return;
}



undefined4 * __thiscall FUN_005d0bf3(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W560DA063::WC8EC8AEB::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_005d0c10(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x14);
  if (pvVar1 != (void *)0x0) {
    FUN_00b8a9f1(param_3);
  }
  FUN_005d0c96(param_1);
  return param_1;
}



undefined4 __thiscall FUN_005d0c5b(undefined4 param_1_00,byte param_1)

{
  FUN_00ba471a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d0c77(void)

{
  FUN_0046f668(0,0);
  FUN_005e72d0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005d0c96(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_005d0ce3(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d0ce3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W560DA063::WD9130C01>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005d0d29(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_005d0d40(undefined4 *param_1)

{
  *param_1 = W560DA063::W652C2340::vftable;
  return;
}



undefined4 * __thiscall FUN_005d0d47(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W560DA063::W652C2340::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_005d0dac(undefined4 param_1_00,byte param_1)

{
  FUN_00b8eb19();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d0dc8(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  undefined4 uVar2;
  uint uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (*(int *)(in_EAX + 0x14) - iVar1) / 0x18;
  }
  if ((uint)((*(int *)(in_EAX + 0x10) - iVar1) / 0x18) < uVar3) {
    uVar2 = FUN_005d0ee7(*(int *)(in_EAX + 0x10),1,param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar2;
  }
  else {
    FUN_0046e65a();
    FUN_005d0e38(&local_10,param_1,local_10,local_c);
  }
  return;
}



void FUN_005d0e38(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int in_EAX;
  int iVar1;
  int *piVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc)) / 0x18 == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = (param_4 - local_8) / 0x18;
  }
  FUN_005d0f17(param_2,param_3,param_4);
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar1 = 0;
  }
  else {
    iVar1 = *local_14;
  }
  piVar2 = (int *)(local_10 + local_8 * 0x18);
  if (piVar2 <= *(int **)(iVar1 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *local_14;
    }
    if (*(int **)(iVar1 + 0xc) <= piVar2) goto LAB_005d0ed8;
  }
  FUN_00a3fb10();
LAB_005d0ed8:
  param_1[1] = piVar2;
  *param_1 = local_14;
  return;
}



int FUN_005d0ee7(int param_1,int param_2,undefined4 param_3)

{
  FUN_0076be7d(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x18 + param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_005d0f17(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 *param_3)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  int extraout_ECX;
  int iVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  uint uVar8;
  undefined4 *puVar9;
  undefined8 uVar10;
  undefined4 local_38 [7];
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x5d0f23;
  iVar2 = *(int *)(param_1_00 + 0xc);
  if (iVar2 == 0) {
    uVar8 = 0;
  }
  else {
    uVar8 = (*(int *)(param_1_00 + 0x14) - iVar2) / 0x18;
  }
  iVar4 = *(int *)(param_1_00 + 0x10);
  iVar2 = (iVar4 - iVar2) / 0x18;
  uVar10 = CONCAT44(0xaaaaaaa,iVar2);
  if (iVar2 == 0xaaaaaaa) {
    uVar10 = FUN_004423c1();
    iVar4 = extraout_ECX;
  }
  uVar1 = (int)uVar10 + 1;
  if (uVar8 < uVar1) {
    if ((int)((ulonglong)uVar10 >> 0x20) - (uVar8 >> 1) < uVar8) {
      uVar8 = 0;
    }
    else {
      uVar8 = uVar8 + (uVar8 >> 1);
    }
    if (uVar8 < uVar1) {
      uVar8 = uVar1;
    }
    local_1c = FUN_007f7bbc();
    iVar2 = ((int)param_3 - *(int *)(param_1_00 + 0xc)) / 0x18;
    local_8 = 0;
    FUN_005d0ee7(iVar2 * 0x18 + local_1c,1,param_1);
    FUN_005d10eb(param_3,local_1c);
    FUN_005d10eb(*(undefined4 *)(param_1_00 + 0x10),(iVar2 + 1) * 0x18 + local_1c);
    iVar2 = *(int *)(param_1_00 + 0xc);
    if (iVar2 != 0) {
      for (; iVar2 != *(int *)(param_1_00 + 0x10); iVar2 = iVar2 + 0x18) {
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
    }
    *(uint *)(param_1_00 + 0x14) = uVar8 * 0x18 + local_1c;
    *(int *)(param_1_00 + 0x10) =
         ((*(int *)(param_1_00 + 0x10) - iVar2) / 0x18 + 1) * 0x18 + local_1c;
    *(int *)(param_1_00 + 0xc) = local_1c;
  }
  else {
    puVar5 = local_38;
    for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar5 = *param_1;
      param_1 = param_1 + 1;
      puVar5 = puVar5 + 1;
    }
    if ((iVar4 - (int)param_3) / 0x18 == 0) {
      FUN_005d10eb(*(undefined4 *)(param_1_00 + 0x10),param_3 + 6);
      local_8 = 2;
      FUN_005d0ee7(*(int *)(param_1_00 + 0x10),
                   1 - (*(int *)(param_1_00 + 0x10) - (int)param_3) / 0x18,local_38);
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 0x18;
      iVar2 = *(int *)(param_1_00 + 0x10);
      for (; param_3 != (undefined4 *)(iVar2 + -0x18); param_3 = param_3 + 6) {
        puVar5 = local_38;
        puVar7 = param_3;
        for (iVar4 = 6; iVar4 != 0; iVar4 = iVar4 + -1) {
          *puVar7 = *puVar5;
          puVar5 = puVar5 + 1;
          puVar7 = puVar7 + 1;
        }
      }
    }
    else {
      puVar7 = *(undefined4 **)(param_1_00 + 0x10);
      puVar5 = puVar7 + -6;
      uVar3 = FUN_005d10eb(puVar7,puVar7);
      *(undefined4 *)(param_1_00 + 0x10) = uVar3;
      while (param_3 != puVar5) {
        puVar5 = puVar5 + -6;
        puVar7 = puVar7 + -6;
        puVar6 = puVar5;
        puVar9 = puVar7;
        for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
          *puVar9 = *puVar6;
          puVar6 = puVar6 + 1;
          puVar9 = puVar9 + 1;
        }
      }
      puVar5 = param_3;
      if (param_3 != param_3 + 6) {
        do {
          puVar6 = puVar5 + 6;
          puVar7 = local_38;
          for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
            *puVar5 = *puVar7;
            puVar7 = puVar7 + 1;
            puVar5 = puVar5 + 1;
          }
          puVar5 = puVar6;
        } while (puVar6 != param_3 + 6);
      }
    }
  }
  return;
}



void Catch_All_005d1011(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x18));
}



void FUN_005d10eb(undefined4 param_1)

{
  FUN_0076bea9(param_1,param_1,0);
  return;
}



undefined4 __thiscall FUN_005d110f(undefined4 param_1_00,byte param_1)

{
  FUN_00b996ca();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

undefined * FUN_005d112b(undefined4 *param_1)

{
  undefined *puVar1;
  undefined4 *puVar2;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  puVar1 = &LAB_00c0cab2;
  puVar2 = (undefined4 *)auStack_20;
  local_8 = 0;
  if ((undefined4 *)param_1[1] != (undefined4 *)0x0) {
    uStack_24 = 1;
    puVar2 = &uStack_28;
    uStack_28 = 0x5d114b;
    puVar1 = (undefined *)(***(code ***)(undefined4 *)param_1[1])();
  }
  *param_1 = W5FC6A77E::W89035DA7::vftable;
  *(undefined4 *)((int)puVar2 + -4) = 0x5d1156;
  return puVar1;
}



// WARNING: Removing unreachable block (ram,0x005d1175)

void FUN_005d1159(void)

{
  FUN_0046f668(0);
  return;
}



void FUN_005d11c9(void)

{
  int in_EAX;
  
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005d11fd(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5d1209;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::W2D079A07::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::W2D079A07::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_005d12f9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_005d1310(undefined4 *param_1)

{
  *param_1 = W71DA37B9::WE30CAD64::vftable;
  return;
}



void FUN_005d1317(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W71DA37B9::WE30CAD64::vftable;
  return;
}



void __fastcall FUN_005d131e(int param_1)

{
  **(undefined **)(param_1 + 4) = *(undefined *)(param_1 + 9);
  return;
}



void __fastcall FUN_005d1329(int param_1)

{
  **(undefined **)(param_1 + 4) = *(undefined *)(param_1 + 8);
  return;
}



void __fastcall FUN_005d1334(int param_1)

{
  undefined uVar1;
  
  uVar1 = 0;
  if ((*(char *)(param_1 + 8) != '\0') || (*(char *)(param_1 + 9) != '\0')) {
    uVar1 = 1;
  }
  **(undefined **)(param_1 + 4) = uVar1;
  return;
}



undefined4 * __thiscall FUN_005d134b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W71DA37B9::WE30CAD64::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d1368(undefined4 *param_1_00,byte param_1)

{
  if ((undefined4 *)param_1_00[2] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1_00[2])(1);
  }
  param_1_00[1] = W71DA37B9::W65C793C4::vftable;
  *param_1_00 = W71DA37B9::WE9038436::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d13b1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W2D079A07>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005d13f7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d140e(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W71DA37B9::WE9038436::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_005d142b(undefined4 *param_1)

{
  *param_1 = W71DA37B9::WE9038436::vftable;
  return;
}



void __thiscall FUN_005d1432(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xdc))(param_1_00);
  return;
}



void FUN_005d1444(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W71DA37B9::W65C793C4::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005d144b(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0xc);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W71DA37B9::W2D079A07::vftable;
    puVar2[1] = W71DA37B9::W0DC97400::vftable;
    puVar2[2] = 0;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_005d13b1(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 __fastcall FUN_005d14bd(int *param_1)

{
  char cVar1;
  int unaff_ESI;
  int local_8;
  
  local_8 = 0;
  cVar1 = (**(code **)(*param_1 + 0x3c))(&local_8);
  if ((cVar1 != '\0') && (*(int *)(unaff_ESI + 8) == local_8)) {
    return 1;
  }
  return 0;
}



void __fastcall FUN_005d14e4(undefined4 *param_1)

{
  *param_1 = W5FC6A77E::W89035DA7::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_005d14eb(void)

{
  char cVar1;
  undefined4 uVar2;
  int *unaff_ESI;
  int unaff_EDI;
  
  FUN_00b9aa90();
  cVar1 = (**(code **)(*unaff_ESI + 0x38))();
  if ((cVar1 == '\0') || (unaff_EDI != 0)) {
    uVar2 = 0;
  }
  else {
    uVar2 = 1;
  }
  return uVar2;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d1532(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = &boost::detail::sp_counted_impl_p<class_W71DA37B9::W4B9B8AF7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005d1578(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d15f6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W043232D1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005d163c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005d1653(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W71DA37B9::W043232D1::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_005d15f6(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 __thiscall FUN_005d1726(undefined4 param_1_00,byte param_1)

{
  FUN_00b8ac1f();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_005d1788(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_005d179f(undefined4 param_1,byte param_2)

{
  FUN_00b8a9ca();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 * __thiscall FUN_005d17bb(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W560DA063::WE47FD464::vftable;
  FUN_00ba327a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_005d17dd(undefined4 param_1_00,byte param_1)

{
  FUN_00ba327a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d17f9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W4E30C5A2::WF6FD849B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005d183f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005d1856(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_005d17f9(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_005d18a3(undefined4 param_1)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0xb4);
  if (pvVar1 != (void *)0x0) {
    FUN_00bb0c14(pvVar1);
  }
  FUN_005d1856(param_1);
  return param_1;
}



undefined4 * __thiscall FUN_005d18ea(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W4E30C5A2::W4D63698D::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_005d1907(undefined4 *param_1)

{
  *param_1 = W4E30C5A2::W4D63698D::vftable;
  return;
}



void FUN_005d190e(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W5FC6A77E::W89035DA7::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_005d1c2a(int **param_1,int param_2)

{
  char cVar1;
  int unaff_ESI;
  undefined4 uVar2;
  
  if (param_1[8] == (int *)0x2) {
    cVar1 = (**(code **)(*param_1[4] + 0x34))();
    if (cVar1 == '\0') {
      uVar2 = 0x5d2cbb80;
LAB_005d1c91:
      FUN_00b940e0(uVar2);
    }
  }
  else {
    if (param_1[8] != (int *)0x3) {
      cVar1 = '\0';
      FUN_00b940e0(&DAT_00c8efc3);
      goto LAB_005d1cad;
    }
    cVar1 = (**(code **)(*param_1[6] + 0x14))();
    if (cVar1 == '\0') {
      uVar2 = 0x63d98d65;
      goto LAB_005d1c91;
    }
  }
  param_1[8] = (int *)0x0;
  if (unaff_ESI != 0) {
    (**(code **)(**param_1 + 8))();
  }
LAB_005d1cad:
  if (param_2 != 0) {
    FUN_0040127a();
  }
  return cVar1;
}



void FUN_005d1cc5(byte param_1,byte param_2)

{
  undefined4 *puVar1;
  undefined *local_160;
  undefined *local_15c;
  undefined **ppuStack_158;
  undefined4 local_154;
  undefined **local_150;
  uint uStack_14c;
  undefined **local_138;
  int local_134;
  undefined *local_130;
  undefined4 local_12c;
  undefined *local_128;
  int local_124;
  undefined *local_120;
  int local_11c;
  undefined *local_118;
  int local_114;
  undefined *local_110;
  int local_10c;
  undefined *local_108;
  int local_104;
  undefined *local_100;
  int local_fc;
  undefined *local_f8;
  int local_f4;
  undefined *local_f0;
  int local_ec;
  undefined *local_e8;
  int local_e4;
  undefined *local_e0;
  int local_dc;
  undefined *local_d8;
  int local_d4;
  undefined local_d0 [4];
  int local_cc;
  undefined *local_c8;
  int local_c4;
  undefined *local_c0;
  int local_bc;
  undefined *local_b8;
  int local_b4;
  undefined *local_b0;
  int local_ac;
  undefined *local_a8;
  int local_a4;
  undefined *local_a0;
  int local_9c;
  undefined *local_98;
  int local_94;
  undefined *local_90;
  int local_8c;
  undefined *local_88;
  int local_84;
  undefined *local_80;
  int local_7c;
  undefined *local_78;
  int local_74;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c2b30a;
  local_14 = ExceptionList;
  uStack_14c = DAT_0323f878 ^ (uint)&stack0xfffffeb8;
  ExceptionList = &local_14;
  local_130 = (undefined *)0x0;
  local_12c = 0;
  local_15c = (undefined *)(uint)param_1;
  local_c = 0;
  if (local_15c < 0x80) {
    if (local_15c == (undefined *)0x7f) {
      local_138 = (undefined **)&local_154;
      local_154 = 0xa0d;
      local_150 = (undefined **)0x21;
      ppuStack_158 = &local_110;
      local_15c = (undefined *)0x5d2081;
      FUN_00465be3();
      local_150 = &local_130;
      local_c._0_1_ = 0xc;
      local_154 = 0x5d2096;
      FUN_005d11c9();
      local_c = (uint)local_c._1_3_ << 8;
      local_134 = local_10c;
      goto LAB_005d242e;
    }
    if (local_15c < 0x21) {
      if (local_15c == (undefined *)0x20) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x1b;
        ppuStack_158 = &local_b8;
        local_15c = (undefined *)0x5d1ecd;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 6;
        local_154 = 0x5d1ee2;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_b4;
        goto LAB_005d242e;
      }
      if (local_15c == (undefined *)0x1) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x16;
        ppuStack_158 = &local_80;
        local_15c = (undefined *)0x5d1e87;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 1;
        local_154 = 0x5d1e9c;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_7c;
        goto LAB_005d242e;
      }
      if (local_15c == (undefined *)0x2) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x17;
        ppuStack_158 = &local_90;
        local_15c = (undefined *)0x5d1e41;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 2;
        local_154 = 0x5d1e56;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_8c;
        goto LAB_005d242e;
      }
      if (local_15c == (undefined *)0x4) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x18;
        ppuStack_158 = &local_a0;
        local_15c = (undefined *)0x5d1dfb;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 3;
        local_154 = 0x5d1e10;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_9c;
        goto LAB_005d242e;
      }
      if (local_15c == (undefined *)0x1c) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x19;
        ppuStack_158 = &local_88;
        local_15c = (undefined *)0x5d1db5;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 4;
        local_154 = 0x5d1dca;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_84;
        goto LAB_005d242e;
      }
      if (local_15c == (undefined *)0x1f) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x1a;
        ppuStack_158 = (undefined **)&local_138;
        local_15c = (undefined *)0x5d1d72;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 5;
        local_154 = 0x5d1d87;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        goto LAB_005d242e;
      }
    }
    else {
      if (local_15c == (undefined *)0x2c) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x1c;
        ppuStack_158 = &local_d8;
        local_15c = (undefined *)0x5d2041;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 7;
        local_154 = 0x5d2056;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_d4;
        goto LAB_005d242e;
      }
      if (local_15c == (undefined *)0x31) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x1d;
        ppuStack_158 = &local_a8;
        local_15c = (undefined *)0x5d1ffe;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 8;
        local_154 = 0x5d2013;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_a4;
        goto LAB_005d242e;
      }
      if (local_15c == (undefined *)0x37) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x1e;
        ppuStack_158 = &local_e8;
        local_15c = (undefined *)0x5d1fbb;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 9;
        local_154 = 0x5d1fd0;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_e4;
        goto LAB_005d242e;
      }
      if (local_15c == (undefined *)0x40) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x1f;
        ppuStack_158 = &local_78;
        local_15c = (undefined *)0x5d1f78;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 10;
        local_154 = 0x5d1f8d;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_74;
        goto LAB_005d242e;
      }
      if (local_15c == (undefined *)0x52) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x20;
        ppuStack_158 = &local_f8;
        local_15c = (undefined *)0x5d1f35;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 0xb;
        local_154 = 0x5d1f4a;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_f4;
        goto LAB_005d242e;
      }
    }
  }
  else if (local_15c < 0xb1) {
    if (local_15c == (undefined *)0xb0) {
      local_138 = (undefined **)&local_154;
      local_154 = 0xa0d;
      local_150 = (undefined **)0x27;
      ppuStack_158 = &local_e0;
      local_15c = (undefined *)0x5d225e;
      FUN_00465be3();
      local_150 = &local_130;
      local_c._0_1_ = 0x12;
      local_154 = 0x5d2273;
      FUN_005d11c9();
      local_c = (uint)local_c._1_3_ << 8;
      local_134 = local_dc;
      goto LAB_005d242e;
    }
    if (0x87 < local_15c) {
      if (local_15c < 0x8a) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x22;
        ppuStack_158 = &local_f0;
        local_15c = (undefined *)0x5d221e;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 0xd;
        local_154 = 0x5d2233;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_ec;
        goto LAB_005d242e;
      }
      if (local_15c == (undefined *)0x97) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x23;
        ppuStack_158 = &local_100;
        local_15c = (undefined *)0x5d21de;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 0xe;
        local_154 = 0x5d21f3;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_fc;
        goto LAB_005d242e;
      }
      if (local_15c == (undefined *)0x98) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x24;
        ppuStack_158 = &local_108;
        local_15c = (undefined *)0x5d219e;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 0xf;
        local_154 = 0x5d21b3;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_104;
        goto LAB_005d242e;
      }
      if (local_15c == (undefined *)0x9d) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x25;
        ppuStack_158 = &local_98;
        local_15c = (undefined *)0x5d215b;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 0x10;
        local_154 = 0x5d2170;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_94;
        goto LAB_005d242e;
      }
      if (local_15c == (undefined *)0xad) {
        local_138 = (undefined **)&local_154;
        local_154 = 0xa0d;
        local_150 = (undefined **)0x26;
        ppuStack_158 = &local_c8;
        local_15c = (undefined *)0x5d2115;
        FUN_00465be3();
        local_150 = &local_130;
        local_c._0_1_ = 0x11;
        local_154 = 0x5d212a;
        FUN_005d11c9();
        local_c = (uint)local_c._1_3_ << 8;
        local_134 = local_c4;
        goto LAB_005d242e;
      }
    }
  }
  else {
    if (local_15c == (undefined *)0xbf) {
      local_138 = (undefined **)&local_154;
      local_154 = 0xa0d;
      local_150 = (undefined **)0x28;
      ppuStack_158 = &local_128;
      local_15c = (undefined *)0x5d240e;
      FUN_00465be3();
      local_150 = &local_130;
      local_c._0_1_ = 0x13;
      local_154 = 0x5d2423;
      FUN_005d11c9();
      local_c = (uint)local_c._1_3_ << 8;
      local_134 = local_124;
      goto LAB_005d242e;
    }
    if (local_15c == (undefined *)0xc2) {
      local_138 = (undefined **)&local_154;
      local_154 = 0xa0d;
      local_150 = (undefined **)0x29;
      ppuStack_158 = &local_120;
      local_15c = (undefined *)0x5d23d1;
      FUN_00465be3();
      local_150 = &local_130;
      local_c._0_1_ = 0x14;
      local_154 = 0x5d23e6;
      FUN_005d11c9();
      local_c = (uint)local_c._1_3_ << 8;
      local_134 = local_11c;
      goto LAB_005d242e;
    }
    if (local_15c == (undefined *)0xd5) {
      local_138 = (undefined **)&local_154;
      local_154 = 0xa0d;
      local_150 = (undefined **)0x2a;
      ppuStack_158 = &local_118;
      local_15c = (undefined *)0x5d2394;
      FUN_00465be3();
      local_150 = &local_130;
      local_c._0_1_ = 0x15;
      local_154 = 0x5d23a9;
      FUN_005d11c9();
      local_c = (uint)local_c._1_3_ << 8;
      local_134 = local_114;
      goto LAB_005d242e;
    }
    if (local_15c == (undefined *)0xda) {
      local_138 = (undefined **)&local_154;
      local_154 = 0xa0d;
      local_150 = (undefined **)0x2b;
      ppuStack_158 = &local_b0;
      local_15c = (undefined *)0x5d2351;
      FUN_00465be3();
      local_150 = &local_130;
      local_c._0_1_ = 0x16;
      local_154 = 0x5d2366;
      FUN_005d11c9();
      local_c = (uint)local_c._1_3_ << 8;
      local_134 = local_ac;
      goto LAB_005d242e;
    }
    if (local_15c == (undefined *)0xec) {
      local_138 = (undefined **)&local_154;
      local_154 = 0xa0d;
      local_150 = (undefined **)0x2c;
      ppuStack_158 = &local_c0;
      local_15c = (undefined *)0x5d230b;
      FUN_00465be3();
      local_150 = &local_130;
      local_c._0_1_ = 0x17;
      local_154 = 0x5d2320;
      FUN_005d11c9();
      local_c = (uint)local_c._1_3_ << 8;
      local_134 = local_bc;
      goto LAB_005d242e;
    }
  }
  local_150 = (undefined **)0x1;
  local_154 = 2;
  ppuStack_158 = (undefined **)0x0;
  local_160 = local_d0;
  FUN_0046b0e8();
  local_150 = &local_130;
  local_c._0_1_ = 0x18;
  local_154 = 0x5d22da;
  FUN_005d11c9();
  local_c = (uint)local_c._1_3_ << 8;
  local_134 = local_cc;
LAB_005d242e:
  if (local_134 != 0) {
    local_150 = (undefined **)0x5d2437;
    FUN_0040127a();
  }
  if (local_130 != (undefined *)0x0) {
    local_150 = (undefined **)0x0;
    local_154 = 0;
    ppuStack_158 = (undefined **)0x0;
    local_15c = local_130;
    local_138 = &local_160;
    local_160 = local_130;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&local_12c);
  }
  local_150 = (undefined **)0x0;
  local_154 = 0;
  ppuStack_158 = (undefined **)0x0;
  local_15c = (undefined *)0x1;
  local_160 = (undefined *)0x4;
  puVar1 = (undefined4 *)FUN_0046b0e8(&local_120,(ushort)param_1 * 0x100 + (ushort)param_2,0);
  local_138 = &local_160;
  local_c = CONCAT31(local_c._1_3_,0x1a);
  local_160 = (undefined *)*puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_005d270c(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  iStack_24 = param_1 + 0x20;
  puVar1 = &uStack_28;
  uStack_28 = 0x5d2728;
  FUN_005d3efe();
  local_8 = 0xffffffff;
  puVar1[-1] = param_1;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x5d2732;
  FUN_005d3ed6();
  *(undefined4 *)((int)puVar2 + -4) = 0x5d2737;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_005d3ed6(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x5d3eee;
  FUN_005d3f26();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_005d3ef5;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_005d3efe(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x5d3f16;
  FUN_005d3f5a();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_005d3f1d;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_005d2ca5(int *param_1_00,uint param_1)

{
  uint *puVar1;
  char cVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  uint local_44 [2];
  undefined4 local_3c [10];
  uint *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_14 = local_44;
  local_8 = 0;
  local_44[0] = 0;
  puVar1 = local_44;
  if (param_1 != 0) {
    local_44[0] = param_1;
    if ((param_1 & 1) == 0) {
      (**(code **)(param_1 & 0xfffffffe))(&stack0x0000000c,local_3c,0);
      puVar1 = local_14;
    }
    else {
      puVar4 = (undefined4 *)&stack0x0000000c;
      puVar5 = local_3c;
      local_14 = local_44;
      for (iVar3 = 6; puVar1 = local_14, iVar3 != 0; iVar3 = iVar3 + -1) {
        *puVar5 = *puVar4;
        puVar4 = puVar4 + 1;
        puVar5 = puVar5 + 1;
      }
    }
  }
  local_14 = puVar1;
  cVar2 = (**(code **)(*param_1_00 + 0x118))();
  if (cVar2 == '\0') {
    FUN_00b940e0(0xad4304ad);
  }
  local_8 = 0xffffffff;
  FUN_00507e58();
  return cVar2;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_005d2d25(int *param_1_00,int param_1)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar4;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_a0 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_84 [28];
  int local_68;
  undefined local_64 [4];
  int local_60;
  int local_5c;
  undefined2 local_58;
  undefined2 local_56;
  undefined4 local_54;
  undefined local_4d;
  undefined local_4c [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x90;
  local_8 = 0x5d2d34;
  local_60 = param_1;
  local_18 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_30,0);
  local_8 = 0;
  cVar1 = (**(code **)(*param_1_00 + 0x150))(&local_68,&local_5c,&local_54,local_64,local_30);
  if ((cVar1 == '\0') || (local_68 != 0)) {
    local_4d = 0;
    FUN_00b940e0(0x7ae3fdd0);
  }
  else {
    local_4d = 1;
    if (local_5c == 1) {
      if ((short)local_54 == -0x7ff1) {
        local_54 = 0;
      }
      uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
              basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        (local_84,&DAT_00de17f8,0xf);
      local_8._0_1_ = 1;
      local_58 = 0x852b;
      local_56 = 0x9380;
      FUN_00b94330(&local_58,uVar2);
      local_8._0_1_ = 3;
      FUN_004017b2(1,0);
      iVar3 = FUN_00429980(local_4c);
      if (iVar3 == 0) {
        pbVar4 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                 basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                           (local_a0,0xe,'0');
        local_8._0_1_ = 4;
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                  (local_30,pbVar4,0,0xffffffff);
        FUN_004017b2(1,0);
      }
      local_8 = (uint)local_8._1_3_ << 8;
      FUN_004017b2(1,0);
    }
    iVar3 = local_60;
    FUN_005d73d6(local_30);
    FUN_005d741e();
    FUN_007dd1b1(local_5c);
    *(undefined *)(iVar3 + 0x6c) = 1;
  }
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



undefined4 __fastcall FUN_005d2e7a(int *param_1)

{
  undefined *in_EAX;
  undefined4 uVar1;
  undefined3 extraout_var;
  undefined3 uVar2;
  undefined3 extraout_var_00;
  undefined local_14 [4];
  undefined local_10 [4];
  undefined local_c [6];
  char local_6;
  char local_5;
  
  *in_EAX = 0;
  uVar1 = (**(code **)(*param_1 + 0x14c))(&local_5,local_c,local_14,local_10);
  local_6 = (char)uVar1;
  if (local_6 == '\0') {
    FUN_00b940e0(0x2237e0b9);
    uVar2 = extraout_var;
  }
  else {
    uVar2 = (undefined3)((uint)uVar1 >> 8);
    *in_EAX = local_5 == '\0';
    if (local_5 == '\0') {
      FUN_00b671e3();
      FUN_007dd1f3();
      FUN_007dd228();
      uVar2 = extraout_var_00;
    }
  }
  return CONCAT31(uVar2,local_6);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __fastcall FUN_005d2eed(int *param_1,undefined *param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  undefined local_1c [4];
  undefined4 *local_18;
  char local_12;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_2 = 0;
  local_18 = (undefined4 *)0x0;
  local_8 = 0;
  local_12 = -1;
  local_11 = (**(code **)(*param_1 + 0x114))(&local_12,&local_18);
  if (local_11 == '\0') {
    uVar2 = 0xa6f06b81;
  }
  else {
    *param_2 = local_12 == '\0';
    if (local_12 != '\0') goto LAB_005d2f90;
    cVar1 = FUN_00bb64e0(local_1c,0);
    if (cVar1 != '\0') {
      cVar1 = FUN_00bb64e0(local_20,0);
      if (cVar1 != '\0') {
        local_11 = '\x01';
        FUN_00b671e3();
        FUN_007dd1f3();
        FUN_007dd228();
        goto LAB_005d2f90;
      }
    }
    local_11 = '\0';
    uVar2 = 0xe0593ca5;
  }
  FUN_00b940e0(uVar2);
LAB_005d2f90:
  local_8 = 0xffffffff;
  if (local_18 != (undefined4 *)0x0) {
    (**(code **)*local_18)(1);
  }
  return local_11;
}



undefined4 __fastcall FUN_005d2fbf(int *param_1)

{
  undefined4 uVar1;
  undefined3 extraout_var;
  undefined3 uVar2;
  undefined3 extraout_var_00;
  undefined3 extraout_var_01;
  undefined3 extraout_var_02;
  undefined *unaff_ESI;
  undefined local_c [4];
  int *local_8;
  
  *unaff_ESI = 0;
  local_8 = param_1;
  FUN_007d95f7(local_c);
  local_8 = (int *)0x3;
  uVar1 = (**(code **)(*param_1 + 0x124))(&local_8);
  if ((char)uVar1 == '\0') {
    FUN_00b940e0(0x4072b0d);
    uVar2 = extraout_var;
  }
  else {
    uVar2 = (undefined3)((uint)uVar1 >> 8);
    *unaff_ESI = local_8 == (int *)0x0;
    if (local_8 != (int *)0x0) {
      if (local_8 == (int *)0x4) {
        FUN_007e2b4d(local_c);
        uVar2 = extraout_var_02;
      }
      else if (local_8 == (int *)0xe) {
        FUN_007e2bb2(local_c);
        uVar2 = extraout_var_01;
      }
      else {
        FUN_007e2aa8(local_c,local_8);
        uVar2 = extraout_var_00;
      }
    }
  }
  return CONCAT31(uVar2,(char)uVar1);
}



char __fastcall FUN_005d3241(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x8c))();
  if (cVar1 == '\0') {
    FUN_00b940e0(0x3a41f814);
  }
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_005d3268(int *param_1,undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  int **ppiVar3;
  undefined local_44 [28];
  int local_28;
  undefined local_24 [4];
  int local_20;
  undefined8 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  local_8 = 0x5d3274;
  local_1c = FUN_0043b546(0,0,0xb4,0,0);
  FUN_00b98ea0();
  piVar1 = param_1;
  local_8 = 0;
  ppiVar3 = (int **)FUN_00b66323();
  local_8._0_1_ = 1;
  ppiVar3 = (int **)(**(code **)(**ppiVar3 + 0xc))(local_24);
  local_8._0_1_ = 2;
  (**(code **)(**ppiVar3 + 0x24))(local_44);
  local_8._0_1_ = 1;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_28 != 0) {
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  FUN_00b98d40();
  param_1 = (int *)param_2;
  FUN_007d95f7(&param_1);
  cVar2 = (**(code **)(*piVar1 + 0xb8))();
  param_1._3_1_ = cVar2;
  if (cVar2 == '\0') {
    FUN_00b940e0(0xb1ac8300);
  }
  return param_1._3_1_;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_005d332a(int *param_1,undefined4 param_2)

{
  int *piVar1;
  undefined4 uVar2;
  char cVar3;
  int **ppiVar4;
  undefined4 uVar5;
  undefined local_44 [28];
  int local_28;
  undefined local_24 [4];
  int local_20;
  undefined8 local_1c;
  char local_11 [9];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  local_8 = 0x5d3336;
  local_1c = FUN_0043b546(0,0,0xb4,0,0);
  FUN_00b98ea0();
  piVar1 = param_1;
  local_8 = 0;
  ppiVar4 = (int **)FUN_00b66323();
  local_8._0_1_ = 1;
  ppiVar4 = (int **)(**(code **)(**ppiVar4 + 0xc))(local_24);
  local_8._0_1_ = 2;
  (**(code **)(**ppiVar4 + 0x24))(local_44);
  local_8._0_1_ = 1;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_28 != 0) {
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  FUN_00b98d40();
  uVar2 = param_2;
  param_1 = (int *)param_2;
  FUN_007b4e48(&param_1);
  cVar3 = (**(code **)(*piVar1 + 0xd0))(local_11);
  if (cVar3 == '\0') {
    uVar5 = 0x424ccb74;
  }
  else {
    if (local_11[0] == '\0') {
      return 1;
    }
    uVar5 = 0xd07879e9;
  }
  param_1._3_1_ = 0;
  FUN_00b940e0(uVar5);
  param_2 = uVar2;
  FUN_007b7af2(&param_2);
  return param_1._3_1_;
}



char FUN_005d3416(void)

{
  char cVar1;
  int *unaff_ESI;
  undefined local_8 [4];
  
  FUN_007b5786(local_8);
  cVar1 = (**(code **)(*unaff_ESI + 0x98))();
  if (cVar1 == '\0') {
    FUN_00b940e0(0xaa96bbc);
  }
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

uint __thiscall FUN_005d344f(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  int *unaff_EBX;
  undefined local_28 [12];
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_14 = (undefined4 *)0x0;
  local_1c = param_1;
  local_18 = param_1;
  local_8 = 0;
  iVar2 = *unaff_EBX;
  (**(code **)(*param_1_00 + 4))();
  cVar1 = (**(code **)(iVar2 + 4))();
  if (cVar1 == '\0') {
    uVar3 = FUN_00b940e0();
    local_8 = 0xffffffff;
    if (local_14 != (undefined4 *)0x0) {
      uVar3 = (**(code **)*local_14)();
    }
    return uVar3 & 0xffffff00;
  }
  iVar2 = FUN_00465be3(local_28);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar2 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_005d3924(int *param_1_00,undefined4 param_1)

{
  char *pcVar1;
  undefined4 *puVar2;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_1c = (undefined4 *)0x0;
  local_8 = 0;
  local_28 = 0;
  local_24 = 6;
  local_11 = (**(code **)(*param_1_00 + 4))(&local_1c,&local_28);
  if (local_11 == '\0') {
    FUN_00b940e0(0x86a75c3);
  }
  local_18 = (undefined4 *)0x0;
  local_8._0_1_ = 1;
  puVar2 = (undefined4 *)0x0;
  if (local_11 != '\0') {
    local_11 = FUN_00bb6360(&local_18,local_1c,0x19);
    puVar2 = local_18;
    if (local_11 == '\0') {
      FUN_00b940e0(0x477ffb6c);
      puVar2 = local_18;
    }
    else {
      pcVar1 = (char *)FUN_00b92870();
      local_28 = CONCAT31(local_28._1_3_,*pcVar1 != '\0');
      pcVar1 = (char *)FUN_00b92870();
      local_28._0_2_ = CONCAT11(*pcVar1 != '\0',(undefined)local_28);
      pcVar1 = (char *)FUN_00b92870();
      local_28._0_3_ = CONCAT12(*pcVar1 != '\0',(undefined2)local_28);
      pcVar1 = (char *)FUN_00b92870();
      local_28 = CONCAT13(*pcVar1 != '\0',(undefined3)local_28);
      pcVar1 = (char *)FUN_00b92870();
      local_24 = CONCAT31(local_24._1_3_,*pcVar1 != '\0');
      pcVar1 = (char *)FUN_00b92870();
      local_20 = param_1;
      FUN_007d8d96(&local_20);
    }
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (puVar2 != (undefined4 *)0x0) {
    (**(code **)*puVar2)(1);
  }
  local_8 = 0xffffffff;
  if (local_1c != (undefined4 *)0x0) {
    (**(code **)*local_1c)(1);
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_005d3a45(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = FUN_005d344f(param_2);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xd41d82d9);
  }
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_005d3a8c(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = FUN_005d3924(param_2);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x6999dd4b);
  }
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_005d3ad3(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  char cVar2;
  undefined4 unaff_ESI;
  undefined auStack_58 [48];
  undefined **local_28;
  int *local_1c;
  int local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_1c = (int *)0x0;
  local_18 = 0;
  local_14 = auStack_58;
  local_8 = 0;
  FUN_005d44b1(unaff_ESI);
  cVar1 = (**(code **)(*param_1_00 + 0x11c))(&local_1c,param_1,1);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x4c876f5d);
  }
  if (local_1c != (int *)0x0) {
    local_28 = W48463D55::W7F6116D4::vftable;
    local_8._0_1_ = 1;
    (**(code **)(*local_1c + 8))(&local_28);
    local_8 = (uint)local_8._1_3_ << 8;
    local_28 = W560DA063::W1DB2E895::vftable;
  }
  if ((cVar1 != '\0') && (local_1c != (int *)0x0)) {
    cVar2 = (**(code **)(*local_1c + 4))();
    if (cVar2 == '\0') {
      cVar1 = '\0';
    }
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return cVar1;
}



void FUN_005d3b7d(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W560DA063::W1DB2E895::vftable;
  return;
}



void __fastcall FUN_005d3d89(int *param_1)

{
  char cVar1;
  uint uStackY_68;
  int *piStackY_64;
  undefined auStack_4c [4];
  int *local_48;
  int iStack_44;
  int *local_40;
  uint *puStack_3c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_38 [24];
  undefined4 uStack_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2f33e;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_4c;
  ExceptionList = &local_14;
  piStackY_64 = (int *)0x5d3dd4;
  local_40 = param_1;
  FUN_00ba52e3();
  local_c = 0;
  if ((local_48 == (int *)0x0) || (cVar1 = (**(code **)(*local_48 + 8))(), cVar1 == '\0')) {
LAB_005d3e0e:
    cVar1 = FUN_00bb0e90();
    if (cVar1 != '\0') {
      puStack_3c = &uStackY_68;
      uStackY_68 = uStackY_68 & 0xffffff00;
      cVar1 = FUN_005d14eb();
      if (cVar1 != '\0') {
        uStack_20 = 0xf;
        piStackY_64 = (int *)0x5d3e6b;
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
                  (abStack_38,0);
        local_c = CONCAT31(local_c._1_3_,1);
        piStackY_64 = (int *)0x5d3e81;
        cVar1 = (**(code **)(*local_40 + 0xa0))();
        if (cVar1 == '\0') {
          piStackY_64 = (int *)0x5d3e96;
          FUN_00b940e0();
        }
        piStackY_64 = (int *)0x1;
        uStackY_68 = 0x5d3ea4;
        FUN_004017b2();
        goto LAB_005d3ea4;
      }
    }
  }
  else {
    piStackY_64 = local_48;
    uStackY_68 = 0x5d3dfc;
    cVar1 = (**(code **)(*param_1 + 0xa4))();
    if (cVar1 != '\0') goto LAB_005d3e0e;
  }
  piStackY_64 = (int *)0x5d3e55;
  FUN_00b940e0();
LAB_005d3ea4:
  local_c = 0xffffffff;
  if (iStack_44 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_005d3ed6(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x5d3eee;
  FUN_005d3f26();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_005d3ef5;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_005d3efe(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x5d3f16;
  FUN_005d3f5a();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_005d3f1d;
  FUN_00a3f6a1();
}



void FUN_005d3f26(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_005d3f8e(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_005d3f5a(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_005d4044(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_005d3f8e(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_005d4387(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_006bae09();
    FUN_005d40fa();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_005d4044(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_005d43f9(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00794e17();
    FUN_0049cccf();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x005d41e5)
// WARNING: Removing unreachable block (ram,0x005d41f5)
// WARNING: Removing unreachable block (ram,0x005d41fe)
// WARNING: Removing unreachable block (ram,0x005d4201)
// WARNING: Removing unreachable block (ram,0x005d41f1)
// WARNING: Removing unreachable block (ram,0x005d420e)
// WARNING: Removing unreachable block (ram,0x005d421e)
// WARNING: Removing unreachable block (ram,0x005d4229)
// WARNING: Removing unreachable block (ram,0x005d4225)
// WARNING: Removing unreachable block (ram,0x005d4219)
// WARNING: Removing unreachable block (ram,0x005d422c)

void FUN_005d40fa(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x5d4106;
  if (*(char *)((int)param_4 + 0x25) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_006bae09();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x25) == '\0') {
    if (*(char *)(param_4[2] + 0x25) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x25) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x25) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x25) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x25) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x25) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 9) != '\x01') {
LAB_005d435d:
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_005d4311:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 9) != '\x01'))
  goto LAB_005d4359;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 9) == '\0') {
      *(undefined *)(ppiVar4 + 9) = 1;
      *(undefined *)(ppiVar3 + 9) = 0;
      FUN_005d43b9(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x25) == '\0') {
      if ((*(char *)(*ppiVar4 + 9) != '\x01') || (*(char *)(ppiVar4[2] + 9) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 9) == '\x01') {
          *(undefined *)(*ppiVar4 + 9) = 1;
          *(undefined *)(ppiVar4 + 9) = 0;
          FUN_006bad68(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 9) = *(undefined *)(ppiVar3 + 9);
        *(undefined *)(ppiVar3 + 9) = 1;
        *(undefined *)(ppiVar4[2] + 9) = 1;
        FUN_005d43b9(param_1);
        goto LAB_005d4359;
      }
LAB_005d4308:
      *(undefined *)(ppiVar4 + 9) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 9) == '\0') {
      *(undefined *)(ppiVar4 + 9) = 1;
      *(undefined *)(ppiVar3 + 9) = 0;
      FUN_006bad68(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x25) == '\0') {
      if ((*(char *)(ppiVar4[2] + 9) == '\x01') && (*(char *)(*ppiVar4 + 9) == '\x01'))
      goto LAB_005d4308;
      if (*(char *)(*ppiVar4 + 9) == '\x01') {
        *(undefined *)(ppiVar4[2] + 9) = 1;
        *(undefined *)(ppiVar4 + 9) = 0;
        FUN_005d43b9(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 9) = *(undefined *)(ppiVar3 + 9);
      *(undefined *)(ppiVar3 + 9) = 1;
      *(undefined *)(*ppiVar4 + 9) = 1;
      FUN_006bad68(param_1);
LAB_005d4359:
      *(undefined *)(ppiVar5 + 9) = 1;
      goto LAB_005d435d;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_005d4311;
}



void FUN_005d4387(int param_1)

{
  if (*(char *)(param_1 + 0x25) == '\0') {
    FUN_005d4387(*(undefined4 *)(param_1 + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __thiscall FUN_005d43b9(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x25) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



void FUN_005d43f9(int param_1)

{
  if (*(char *)(param_1 + 0x11) == '\0') {
    FUN_005d43f9(*(undefined4 *)(param_1 + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __fastcall FUN_005d442b(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf0<bool,class_WDE765622::W673CE3C4>,class_boost::_bi::list1<class_boost::_bi::value<class_WDE765622::W673CE3C4*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf0<bool,class_WDE765622::W673CE3C4>,class_boost::_bi::list1<class_boost::_bi::value<class_WDE765622::W673CE3C4*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void FUN_005d4478(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_005d442b(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf0<bool,class_WDE765622::W673CE3C4>,class_boost::_bi::list1<class_boost::_bi::value<class_WDE765622::W673CE3C4*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_005d44b1(undefined4 param_1)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined *local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined *local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 uStack_c;
  
  local_18 = &LAB_0044a475;
  local_10 = param_1;
  local_14 = 0;
  local_28 = &LAB_0044a475;
  uStack_24 = 0;
  uStack_20 = param_1;
  *unaff_EBX = 0;
  uStack_1c = uStack_c;
  cVar1 = FUN_007f2630(&local_28);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_28;
      unaff_EBX[3] = uStack_24;
      unaff_EBX[4] = uStack_20;
      unaff_EBX[5] = uStack_1c;
    }
    *unaff_EBX = &DAT_026b715d;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005d450b(undefined4 param_1,int param_2)

{
  int local_40;
  int local_38;
  int local_30;
  int local_28;
  int local_20;
  undefined4 local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  local_18[0] = 0;
  local_8 = 0;
  if (param_2 == 0) {
    FUN_00465be3();
    local_8._0_1_ = 1;
    FUN_005d11c9();
    local_8 = (uint)local_8._1_3_ << 8;
    local_20 = local_40;
  }
  else if (param_2 == 1) {
    FUN_00465be3();
    local_8._0_1_ = 2;
    FUN_005d11c9();
    local_8 = (uint)local_8._1_3_ << 8;
    local_20 = local_38;
  }
  else if (param_2 == 2) {
    FUN_00465be3();
    local_8._0_1_ = 3;
    FUN_005d11c9();
    local_8 = (uint)local_8._1_3_ << 8;
    local_20 = local_30;
  }
  else if (param_2 == 3) {
    FUN_00465be3();
    local_8._0_1_ = 4;
    FUN_005d11c9();
    local_8 = (uint)local_8._1_3_ << 8;
    local_20 = local_28;
  }
  else {
    FUN_00465be3();
    local_8._0_1_ = 5;
    FUN_005d11c9();
    local_8 = (uint)local_8._1_3_ << 8;
  }
  if (local_20 != 0) {
    FUN_0040127a();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_18);
}



void FUN_005d46ef(void)

{
  undefined4 unaff_EBX;
  
  FUN_005d4774(unaff_EBX,1,2,0x5022,0x19);
  FUN_005d4774(unaff_EBX,3,4,0x5022,0x1a);
  FUN_005d4774(unaff_EBX,7,8,0x5022,0xb1);
  FUN_005d4774(unaff_EBX,9,10,0x5022,0x1b);
  FUN_005d4774(unaff_EBX,0xb,0xc,0x5022,0x1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_005d4774(undefined4 *param_1_00,undefined4 param_1,undefined4 *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  int extraout_ECX;
  undefined4 local_5c;
  int local_58;
  undefined4 uStack_54;
  undefined4 *puStack_50;
  undefined4 *puStack_4c;
  undefined4 local_38;
  int local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  int local_1c;
  undefined4 local_18;
  int local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x5d4780;
  puStack_4c = &param_2;
  puStack_50 = &local_38;
  uStack_54 = 0x5d478f;
  puVar2 = (undefined4 *)FUN_005d491b();
  local_28 = *puVar2;
  local_24 = puVar2[1];
  puStack_4c = (undefined4 *)&stack0x0000000c;
  puStack_50 = &local_38;
  uStack_54 = 0x5d47a7;
  puVar2 = (undefined4 *)FUN_005d491b();
  local_30 = *puVar2;
  local_2c = puVar2[1];
  local_20 = 0;
  local_1c = 0;
  local_18 = 0;
  local_14[0] = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  local_34 = param_1_00[6];
  local_38 = *param_1_00;
  puStack_4c = (undefined4 *)0x5d47dd;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    local_34 = param_1_00[6];
    local_38 = *param_1_00;
    puStack_4c = (undefined4 *)0x5d47fb;
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      puStack_4c = (undefined4 *)0x5d480b;
      iVar3 = FUN_006badde();
      puStack_4c = (undefined4 *)(iVar3 + 4);
      puStack_50 = &local_38;
      uStack_54 = 0x5d4818;
      FUN_00467341();
      puStack_4c = &local_20;
      local_8._0_1_ = 2;
      puStack_50 = (undefined4 *)0x5d4827;
      FUN_005d11c9();
      local_8._0_1_ = 1;
      if (local_34 != 0) {
        puStack_4c = (undefined4 *)0x5d4839;
        FUN_0040127a();
      }
      puStack_4c = (undefined4 *)0x5d4841;
      iVar3 = FUN_006badde();
      puStack_4c = (undefined4 *)(iVar3 + 4);
      puStack_50 = &local_38;
      uStack_54 = 0x5d484e;
      FUN_00467341();
      puStack_4c = &local_18;
      local_8._0_1_ = 3;
      puStack_50 = (undefined4 *)0x5d485d;
      FUN_005d11c9();
      local_8 = CONCAT31(local_8._1_3_,1);
      local_58 = local_34;
      if (local_34 != 0) {
        puStack_4c = (undefined4 *)0x5d486d;
        FUN_0040127a();
        local_58 = extraout_ECX;
      }
      puStack_4c = (undefined4 *)0x0;
      puStack_50 = (undefined4 *)0x0;
      uStack_54 = 0;
      param_2 = &local_5c;
      local_5c = local_18;
                    // WARNING: Subroutine does not return
      FUN_0043c023(local_14);
    }
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_14[0] != 0) {
    puStack_4c = (undefined4 *)0x5d4903;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_1c != 0) {
    puStack_4c = (undefined4 *)0x5d4913;
    FUN_0040127a();
  }
  return;
}



void FUN_005d491b(undefined4 *param_1,int *param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  local_8 = FUN_004dc703();
  if (unaff_EBX == (undefined4 *)0x0) {
    FUN_00a3fb10();
  }
  local_14 = *unaff_EBX;
  local_10 = unaff_EBX[6];
  puVar3 = &local_c;
  local_c = local_14;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (*param_2 < *(int *)(local_8 + 0xc))) {
    local_10 = unaff_EBX[6];
    local_14 = *unaff_EBX;
    puVar3 = &local_14;
  }
  uVar1 = puVar3[1];
  *param_1 = *puVar3;
  param_1[1] = uVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x005d4ab3)

char __thiscall FUN_005d4988(undefined4 *param_1_00,int **param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  undefined4 uStack_80;
  uint *puStack_7c;
  uint *puStack_78;
  undefined *puStack_74;
  undefined4 *puStack_70;
  undefined local_5c [8];
  undefined4 local_54;
  undefined4 local_50;
  undefined local_20;
  undefined2 uStack_1f;
  uint *puStack_1d;
  undefined4 *local_18;
  uint local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0x5d4994;
  puStack_70 = (undefined4 *)local_5c;
  puStack_74 = (undefined *)0x5d499f;
  FUN_00b72ec0();
  local_8 = 0;
  *param_1_00 = 0;
  puStack_74 = local_5c;
  puStack_78 = (uint *)0x5d49b8;
  puStack_70 = param_1_00;
  cVar1 = (**(code **)(**param_1 + 0x144))();
  if (cVar1 == '\0') {
    puStack_78 = (uint *)0xb822d0bc;
    cVar1 = '\0';
  }
  else {
    puStack_78 = (uint *)0x4;
    local_54 = 0;
    local_50 = 0;
    puStack_7c = local_14;
    cVar1 = FUN_00b74540();
    if (cVar1 != '\0') goto LAB_005d4a01;
    puStack_78 = (uint *)0x64b48971;
  }
  puStack_7c = (uint *)0x5d4a00;
  FUN_00b940e0();
LAB_005d4a01:
  for (uVar2 = 0; (cVar1 != '\0' && (uVar2 < local_14[0])); uVar2 = uVar2 + 1) {
    puStack_78 = (uint *)0x7;
    puStack_7c = (uint *)&local_20;
    cVar1 = FUN_00b74540();
    if (cVar1 == '\0') {
      puStack_78 = (uint *)0x6a701167;
      puStack_7c = (uint *)0x5d4a41;
      FUN_00b940e0();
    }
    else if (puStack_1d != (uint *)0x0) {
      local_8 = CONCAT31(local_8._1_3_,1);
      puStack_78 = puStack_1d;
      puStack_7c = (uint *)0x5d4a60;
      cVar1 = FUN_00bb1450();
      if (cVar1 == '\0') {
        puStack_78 = (uint *)0x41629f14;
        puStack_7c = (uint *)0x5d4a76;
        FUN_00b940e0();
      }
      else {
        puStack_7c = puStack_78;
        local_18 = &uStack_80;
        uStack_80 = 0;
        FUN_005d4b82(&puStack_7c,CONCAT13(puStack_1d._0_1_,CONCAT21(uStack_1f,local_20)));
        uStack_80 = param_2;
        FUN_00b67367();
      }
      local_8 = local_8 & 0xffffff00;
    }
  }
  local_8 = 0xffffffff;
  puStack_78 = (uint *)0x5d4ace;
  FUN_00b72d90();
  return cVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d4ad8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W1A7DB823>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005d4b1e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005d4b35(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_005d4ad8(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4
FUN_005d4b82(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x84);
  if (pvVar1 != (void *)0x0) {
    param_4 = (undefined4 *)0x0;
    FUN_00b67043(pvVar1,param_2,param_3);
  }
  FUN_005d4b35();
  if (param_4 != (undefined4 *)0x0) {
    (**(code **)*param_4)();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_005d4bf8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x5c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007eb6ba(puVar2,param_2,param_3,param_4,param_5);
    *puVar2 = W48463D55::W8FFCFCF0::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_005d50d8(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x005d4f36)

void FUN_005d4c7b(undefined4 param_1,undefined4 param_2)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  char cVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  int iVar7;
  undefined4 *puVar8;
  undefined local_31c [28];
  undefined local_300 [140];
  undefined local_274 [28];
  undefined local_258 [28];
  undefined local_23c [28];
  undefined4 local_220;
  undefined4 local_21c;
  undefined4 local_218;
  undefined4 local_214;
  undefined4 local_210;
  undefined local_20c [4];
  undefined4 local_208;
  undefined4 local_204;
  undefined4 local_200;
  char local_1f9;
  undefined local_1f8 [424];
  undefined local_50 [28];
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30c;
  local_8 = 0x5d4c8a;
  local_218 = param_1;
  local_200 = 0;
  local_210 = param_2;
  local_21c = param_2;
  local_220 = param_2;
  uVar5 = FUN_00826e60(local_23c);
  local_8 = 0;
  do_get(uVar5,local_34);
  local_8._0_1_ = 2;
  FUN_00401829(1,0);
  uVar5 = FUN_00826cf0(local_31c);
  local_8._0_1_ = 3;
  do_get(uVar5,local_50);
  local_8._0_1_ = 5;
  FUN_00401829(1,0);
  uVar5 = FUN_00502969();
  local_8._0_1_ = 6;
  uVar6 = basic_string<>(&DAT_00de1740);
  local_8._0_1_ = 7;
  uVar5 = FUN_0041c102(local_274,uVar6,uVar5);
  local_8._0_1_ = 8;
  FUN_004c4f1f();
  local_8._0_1_ = 9;
  iVar7 = FUN_00412a34(uVar5);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  local_8._0_1_ = 5;
  FUN_00401829(1,0);
  if (iVar7 == 0) {
    FUN_007c04ee(local_1f8,local_204);
    local_8 = CONCAT31(local_8._1_3_,10);
    cVar4 = FUN_007c0526(local_218);
    if (cVar4 == '\0') {
      FUN_00b940e0(0x1ea2fc84);
    }
    FUN_005d51b1();
    goto LAB_005d50ba;
  }
  uVar5 = FUN_005d5160();
  local_8 = CONCAT31(local_8._1_3_,0xb);
  local_200 = 1;
  uVar6 = basic_string<>(&DAT_00de1748);
  local_8 = 0xc;
  local_200 = 3;
  local_208 = FUN_0041c102(local_300,uVar6,uVar5);
  local_8 = 0xd;
  local_200 = 7;
  FUN_004c4f1f();
  bVar3 = false;
  bVar2 = false;
  bVar1 = false;
  local_8 = 0xe;
  local_200 = 0xf;
  iVar7 = FUN_00412a34(local_208);
  if (iVar7 == 0) {
LAB_005d4f29:
    local_1f9 = '\x01';
  }
  else {
    uVar5 = FUN_005063bf();
    local_8 = 0xf;
    local_200 = 0x1f;
    uVar6 = basic_string<>(&DAT_00de174c);
    local_8 = 0x10;
    local_200 = 0x3f;
    local_208 = FUN_0041c102(local_258,uVar6,uVar5);
    local_8 = 0x11;
    local_200 = 0x7f;
    FUN_004c4f1f();
    local_8 = 0x12;
    bVar3 = true;
    bVar2 = true;
    bVar1 = true;
    local_200 = 0xff;
    iVar7 = FUN_00412a34(local_208);
    local_1f9 = '\0';
    if (iVar7 == 0) goto LAB_005d4f29;
  }
  if (bVar1) {
    FUN_00401829(1,0);
  }
  if (bVar2) {
    FUN_00401829(1,0);
  }
  if (bVar3) {
    FUN_00401829(1,0);
  }
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  local_8 = 5;
  FUN_00401829(1,0);
  if (local_1f9 == '\0') {
    FUN_00b940e0(0x5c882ef3);
  }
  else {
    cVar4 = FUN_007da003();
    if (cVar4 != '\0') {
      puVar8 = (undefined4 *)FUN_005d4bf8(local_20c,local_204,local_50,local_34,local_210);
      local_214 = *puVar8;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar8 + 1);
    }
    FUN_00b940e0(0xccc2abda);
    FUN_007b45fb(&local_21c);
  }
LAB_005d50ba:
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d50d8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W48463D55::W8FFCFCF0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005d511e(void)

{
  int iVar1;
  code *pcVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  if (iVar1 != 0) {
    FUN_005d513b();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



void FUN_005d513b(void)

{
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_005d5160(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x5d516c;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b71ac,4);
  local_8 = 0;
  local_18 = 0x63fe07d3;
  local_14 = 0x69a52577;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



void FUN_005d51b1(void)

{
  FUN_00502d9b();
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_005d51c7(int **param_1,int param_2,char param_3)

{
  int iVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 **ppuVar4;
  undefined4 **local_44 [5];
  int local_30;
  int local_2c;
  undefined4 ***local_28;
  undefined4 *local_24;
  undefined4 local_20;
  undefined4 **local_1c;
  undefined4 **local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x5d51d3;
  ppuVar4 = (undefined4 **)(*(int *)(param_2 + 0x14) - *(int *)(param_2 + 0x10) >> 3);
  local_1c = ppuVar4;
  if (param_3 != '\0') {
    local_44[0] = ppuVar4;
    (**(code **)(*param_1)[1])(0);
  }
  local_11 = '\x01';
  local_18 = (undefined4 **)0x0;
  do {
    if (ppuVar4 <= local_18) {
      return local_11;
    }
    local_44[0] = (undefined4 **)0x5d5219;
    FUN_00b672c0();
    iVar1 = local_30;
    local_8 = 0;
    if (local_30 == 0) {
LAB_005d52ba:
      if (local_11 != '\0') {
        local_44[0] = (undefined4 **)0x5d52c6;
        cVar2 = (**(code **)(**param_1 + 0xc))();
        local_11 = '\x01' - (cVar2 != '\0');
        if (local_11 == '\0') {
          local_44[0] = (undefined4 **)0x9ca34842;
          goto LAB_005d52db;
        }
      }
    }
    else if (param_1[3] < *(int **)(*(int *)(local_30 + 0xc) + 8)) {
      local_28 = (undefined4 ***)*param_1;
      local_44[0] = *(undefined4 ***)(local_30 + 8);
      FUN_007b57f3(&local_28);
      if (local_11 != '\0') goto LAB_005d52a4;
    }
    else {
      local_44[0] = &local_24;
      puVar3 = (undefined4 *)FUN_00b6709c(local_30);
      local_8._0_1_ = 1;
      local_44[0] = (undefined4 **)*puVar3;
      local_28 = local_44;
      *puVar3 = 0;
      local_20 = CONCAT31(local_20._1_3_,*(undefined *)(iVar1 + 4));
      local_11 = (**(code **)(*param_1[2] + 0xc4))(local_20,*(undefined4 *)(iVar1 + 8));
      local_8 = (uint)local_8._1_3_ << 8;
      if (local_24 != (undefined4 *)0x0) {
        local_44[0] = (undefined4 **)0x1;
        (**(code **)*local_24)();
      }
      if (local_11 != '\0') {
LAB_005d52a4:
        if (param_3 != '\0') {
          local_44[0] = local_1c;
          (**(code **)(*param_1)[1])((int)local_18 + 1);
        }
        goto LAB_005d52ba;
      }
      local_44[0] = (undefined4 **)0xd7692bb8;
LAB_005d52db:
      FUN_00b940e0();
    }
    local_8 = 0xffffffff;
    if (local_2c != 0) {
      local_44[0] = (undefined4 **)0x5d52f1;
      FUN_0040127a();
    }
    local_18 = (undefined4 **)((int)local_18 + 1);
    ppuVar4 = local_1c;
    if (local_11 == '\0') {
      return '\0';
    }
  } while( true );
}



char FUN_005d531e(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  char cVar2;
  int *in_EAX;
  
  cVar2 = '\x01';
  cVar1 = (**(code **)(*in_EAX + 8))();
  if (cVar1 != '\0') {
    cVar2 = FUN_00b99c0f(param_2,param_1);
    if (cVar2 == '\0') {
      FUN_00b940e0(0x4526d9a1);
    }
  }
  return cVar2;
}



char FUN_005d5359(void)

{
  char cVar1;
  undefined4 in_EAX;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  uStack_1c = 0x5d536a;
  cVar1 = FUN_00b9a565();
  if (cVar1 == '\0') {
    uStack_1c = 0x276c874b;
  }
  else {
    FUN_00b9981f(in_EAX,&uStack_20);
    FUN_007dd0e5();
    uStack_1c = 0x5d5397;
    cVar1 = FUN_00b9a48e();
    if (cVar1 != '\0') {
      FUN_00b997b5(in_EAX,&uStack_20);
      FUN_005d734a();
      return cVar1;
    }
    uStack_1c = 0x4d0f3c32;
  }
  uStack_20 = 0x5d53ac;
  FUN_00b940e0();
  return '\0';
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_005d53cc(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uStack_64;
  undefined *puStack_60;
  undefined4 *local_4c;
  undefined local_3c;
  char local_38;
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x5d53d8;
  local_4c = &uStack_64;
  FUN_00b99763();
  FUN_00b66742();
  local_8 = 0;
  uStack_64 = 0x5d53fc;
  puStack_60 = (undefined *)param_2;
  local_3c = FUN_00b99683();
  local_38 = '\0';
  local_8 = CONCAT31(local_8._1_3_,1);
  puStack_60 = (undefined *)0x5d5411;
  cVar1 = FUN_00b66cdc();
  if (cVar1 == '\0') {
    puStack_60 = (undefined *)0x6d32c8dc;
    uStack_64 = 0x5d5426;
    FUN_00b940e0();
  }
  else if ((-(uint)(local_38 != '\0') & 0x6a1cd8) != 0) {
    puStack_60 = local_34;
    uStack_64 = 0x5d5443;
    FUN_007dd25d();
  }
  if (local_38 != '\0') {
    puStack_60 = (undefined *)0x0;
    uStack_64 = 1;
    FUN_004017b2();
    local_38 = '\0';
  }
  local_8 = 0xffffffff;
  puStack_60 = (undefined *)0x5d5465;
  FUN_00b66772();
  puStack_60 = (undefined *)0x5d546c;
  FUN_00a421fb();
  return;
}



void Catch_All_005d55da(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_005d56a9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005d5732(int param_1)

{
  int iVar1;
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c274a0;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0046b0e8(local_28,*(undefined *)(param_1 + 4),0);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_005d586b(int param_1)

{
  int iVar1;
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2746d;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0046b0e8(local_28,*(undefined *)(param_1 + 4),0);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_005d59f4(int param_1)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0046b0e8(local_20,*(undefined *)(param_1 + 4),0);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_005d5ad5(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_005d5b6c(undefined4 *param_1)

{
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x5d5b78;
  FUN_00502b88(local_18);
  local_8 = 0;
  FUN_005d11c9(param_1);
  local_8 = 0xffffffff;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_005d5bb2(*param_1);
  return;
}



char FUN_005d5bb2(undefined4 *param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 unaff_EBX;
  int *unaff_ESI;
  undefined4 unaff_EDI;
  uint uStack_64;
  undefined4 *puStack_60;
  undefined *puStack_5c;
  undefined *puStack_58;
  undefined auStack_54 [8];
  undefined *puStack_4c;
  uint *puStack_48;
  uint uStack_44;
  uint uStack_40;
  undefined4 **ppuStack_3c;
  undefined uStack_38;
  ushort uStack_37;
  undefined4 uStack_35;
  undefined uStack_31;
  undefined auStack_30 [4];
  void *pvStack_2c;
  undefined4 uStack_24;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c3aa59;
  local_14 = ExceptionList;
  uStack_31 = (undefined)((uint)unaff_EBX >> 0x18);
  uStack_38 = (undefined)unaff_EDI;
  uStack_37 = (ushort)((uint)unaff_EDI >> 8);
  uStack_35._0_1_ = (undefined)((uint)unaff_EDI >> 0x18);
  uStack_35 = (undefined *)CONCAT31((int3)unaff_EBX,(undefined)uStack_35);
  ppuStack_3c = (undefined4 **)(DAT_0323f878 ^ (uint)&uStack_38);
  ExceptionList = &local_14;
  uStack_40 = 0;
  uStack_44 = 0;
  puStack_48 = (uint *)0x5d5be8;
  (**(code **)(*unaff_ESI + 0x28))();
  puStack_48 = (uint *)0x4;
  puStack_4c = auStack_30;
  auStack_54[0] = 0;
  uStack_31 = (undefined)((uint)auStack_54 >> 0x18);
  puStack_58 = (undefined *)0x5d5c04;
  cVar2 = (**(code **)(*unaff_ESI + 0xc))();
  if (cVar2 == '\0') {
    puStack_58 = (undefined *)0x75e25fa3;
    puStack_5c = (undefined *)0x5d5c19;
    FUN_00b940e0();
  }
  for (uStack_44 = 0; (cVar2 != '\0' && (uStack_44 < uStack_40)); uStack_44 = uStack_44 + 1) {
    puStack_58 = (undefined *)0x7;
    puStack_48 = &uStack_64;
    puStack_5c = &uStack_38;
    uStack_64 = uStack_64 & 0xffffff00;
    cVar2 = (**(code **)(*unaff_ESI + 0xc))();
    if (cVar2 == '\0') {
      puStack_58 = (undefined *)0x31d05818;
      puStack_5c = (undefined *)0x5d5c63;
      FUN_00b940e0();
    }
    else if (uStack_35 != (undefined *)0x0) {
      puStack_48 = (undefined4 *)0x0;
      uStack_24 = 0;
      puStack_58 = uStack_35;
      puStack_5c = (undefined *)0x5d5c88;
      cVar2 = FUN_00bb1450();
      puVar1 = puStack_48;
      if (cVar2 == '\0') {
        puStack_58 = (undefined *)0x60cae3fc;
        puStack_5c = (undefined *)0x5d5c9e;
        FUN_00b940e0();
      }
      else {
        puStack_48 = (undefined4 *)0x0;
        puStack_5c = puStack_58;
        ppuStack_3c = &puStack_60;
        puStack_60 = puVar1;
        uStack_64 = (uint)uStack_37;
        FUN_005d4b82(&puStack_5c,CONCAT13((undefined)uStack_35,CONCAT21(uStack_37,uStack_38)));
        puStack_60 = param_1;
        uStack_64 = 0x5d5cd6;
        FUN_00b67367();
      }
      uStack_24 = 0xffffffff;
      if (puStack_48 != (undefined4 *)0x0) {
        puStack_58 = (undefined *)0x1;
        puStack_5c = (undefined *)0x5d5ce9;
        (**(code **)*puStack_48)();
      }
    }
  }
  ExceptionList = pvStack_2c;
  return cVar2;
}



void FUN_005d5d09(undefined *param_1)

{
  *param_1 = 0xaf;
  param_1[1] = 0xd8;
  param_1[2] = 0x12;
  param_1[3] = 0x14;
  param_1[4] = 0x44;
  param_1[5] = 0x70;
  param_1[6] = 0x81;
  param_1[7] = 0xa5;
  param_1[8] = 0x3e;
  param_1[9] = 0x84;
  param_1[10] = 0x5b;
  param_1[0xb] = 0xa6;
  param_1[0xc] = 0xc9;
  param_1[0xd] = 0xea;
  param_1[0xe] = 0xed;
  param_1[0xf] = 0xeb;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_005d5d4d(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x5d5d59;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b7208,5);
  local_8 = 0;
  local_18 = 0xe4d6ae8d;
  local_14 = 0x6e3fa265;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_005d5d9e(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x5d5daa;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b7214,7);
  local_8 = 0;
  local_18 = 0xd47d977d;
  local_14 = 0xdd75b54c;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_005d5def(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x5d5dfb;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b7224,8);
  local_8 = 0;
  local_18 = 0x42b34416;
  local_14 = 0x7d64460c;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_005d5e40(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x5d5e4c;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b7238,7);
  local_8 = 0;
  local_18 = 0x88f6c14e;
  local_14 = 0x482422a6;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_005d5e91(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x5d5e9d;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b7248,7);
  local_8 = 0;
  local_18 = 0x4f9cfcb3;
  local_14 = 0xfa1275fd;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_005d5ee2(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x5d5eee;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b7258,5);
  local_8 = 0;
  local_18 = 0x64c06019;
  local_14 = 0x12e69f86;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_005d5f33(undefined4 param_1)

{
  undefined4 uVar1;
  undefined *local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x5d5f3f;
  local_14 = (undefined *)0x0;
  uVar1 = basic_string<>(&DAT_026b7268,0x23);
  local_8 = 0;
  local_18 = &DAT_01c86959;
  local_14 = &DAT_01cb995f;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_005d5f84(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x5d5f90;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b72b0,0xc);
  local_8 = 0;
  local_18 = 0x73f8feb;
  local_14 = 0x6012bca8;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



undefined4 __thiscall FUN_005d5fd5(undefined4 param_1_00,byte param_1)

{
  FUN_00b89abc();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_005d5ff1(undefined4 param_1_00,byte param_1)

{
  FUN_00b89316();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_005d6100(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x5d610c;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b73d4,0xe);
  local_8 = 0;
  local_18 = 0xdcbbb7e5;
  local_14 = 0x267501e3;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



undefined4 __thiscall FUN_005d6151(undefined4 param_1_00,byte param_1)

{
  FUN_00b88ecf();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_005d616d(undefined4 param_1_00,byte param_1)

{
  FUN_00b88cc9();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_005d61e9(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W133E5AC5::WE7CAD561::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_005d624c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_005d631b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_005d63e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005d6400(undefined *param_1)

{
  *param_1 = 0xf3;
  param_1[1] = 0xed;
  param_1[2] = 0x6f;
  param_1[3] = 0x2e;
  param_1[4] = 0x93;
  param_1[5] = 0x8c;
  param_1[6] = 0x43;
  param_1[7] = 0x10;
  param_1[8] = 0x88;
  param_1[9] = 0xc2;
  param_1[10] = 0xbd;
  param_1[0xb] = 3;
  param_1[0xc] = 0x92;
  param_1[0xd] = 0x8c;
  param_1[0xe] = 0x23;
  param_1[0xf] = 0x39;
  return;
}



void FUN_005d6444(undefined *param_1)

{
  *param_1 = 0x8f;
  param_1[1] = 0x8e;
  param_1[2] = 0x8a;
  param_1[3] = 0x51;
  param_1[4] = 0xb1;
  param_1[5] = 0x2e;
  param_1[6] = 0x4f;
  param_1[7] = 0x97;
  param_1[8] = 0x8f;
  param_1[9] = 0x3c;
  param_1[10] = 0xb;
  param_1[0xb] = 0xdf;
  param_1[0xc] = 0xbc;
  param_1[0xd] = 0x97;
  param_1[0xe] = 0x61;
  param_1[0xf] = 0xa8;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_005d64d3(int param_1)

{
  int *piVar1;
  int iVar2;
  undefined4 auStack_28 [5];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0x5d64df;
  local_14 = auStack_28;
  FUN_00439298();
  local_8 = 0;
  auStack_28[0] = 0x5d64f9;
  iVar2 = FUN_0046e3b9();
  piVar1 = (int *)(param_1 + 0x18);
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x29) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



void FUN_005d651e(undefined4 param_1)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  int *unaff_EBX;
  undefined4 *puVar4;
  int *unaff_EDI;
  undefined4 uVar5;
  int local_18;
  undefined4 *local_14;
  undefined4 local_10;
  undefined4 *local_c;
  
  local_c = (undefined4 *)unaff_EBX[6];
  puVar4 = (undefined4 *)local_c[1];
  local_10 = CONCAT31(local_10._1_3_,1);
  while (*(char *)((int)puVar4 + 0x29) == '\0') {
    local_c = puVar4;
    cVar2 = FUN_00412a58(param_1,puVar4 + 3);
    local_10 = CONCAT31(local_10._1_3_,cVar2);
    if (cVar2 == '\0') {
      puVar4 = (undefined4 *)puVar4[2];
    }
    else {
      puVar4 = (undefined4 *)*puVar4;
    }
  }
  local_18 = *unaff_EBX;
  local_14 = local_c;
  if ((char)local_10 != '\0') {
    puVar4 = *(undefined4 **)unaff_EBX[6];
    if (local_18 == 0) {
      FUN_00a3fb10();
    }
    if (local_c == puVar4) {
      uVar5 = 1;
      goto LAB_005d6588;
    }
    FUN_007a4650();
  }
  puVar4 = local_14;
  cVar2 = FUN_00412a58(local_14 + 3,param_1);
  uVar5 = local_10;
  if (cVar2 == '\0') {
    *unaff_EDI = local_18;
    unaff_EDI[1] = (int)puVar4;
    *(undefined *)(unaff_EDI + 2) = 0;
    return;
  }
LAB_005d6588:
  piVar3 = (int *)FUN_005d662e(&local_18,uVar5,param_1);
  iVar1 = piVar3[1];
  *unaff_EDI = *piVar3;
  unaff_EDI[1] = iVar1;
  *(undefined *)(unaff_EDI + 2) = 1;
  return;
}



int FUN_005d65de(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int local_1c;
  int local_18;
  int local_14;
  int local_10;
  
  FUN_007a4b42(param_1,param_2);
  iVar1 = 0;
  while( true ) {
    if ((local_1c == 0) || (local_1c != local_14)) {
      FUN_00a3fb10();
    }
    if (local_18 == local_10) break;
    iVar1 = iVar1 + 1;
    FUN_0046e6b6();
  }
  return iVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_005d662e(int **param_1_00,undefined4 *param_1,char param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x5d663a;
  if (0x9249247 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_005d67bd(unaff_ESI[6],param_1_00,unaff_ESI[6],param_3);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_005d6753;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_005d6753;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_005d6753:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 10) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x28) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 10) == '\0') {
LAB_005d670f:
        *(undefined *)(piVar1 + 10) = 1;
        *(undefined *)(piVar7 + 10) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x28) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007a3050(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x28) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x28) = 0;
        FUN_005d677b(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 10) == '\0') goto LAB_005d670f;
    if (piVar8 == (int *)*piVar1) {
      FUN_005d677b(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x28) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x28) = 0;
    FUN_007a3050(unaff_ESI);
  } while( true );
}



void __thiscall FUN_005d677b(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x29) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_005d67bd(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x2c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    basic_string<>(param_4);
    *(undefined *)(puVar1 + 10) = 0;
    *(undefined *)((int)puVar1 + 0x29) = 0;
  }
  return puVar1;
}



void Catch_All_005d6812(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



char FUN_005d6825(void)

{
  char *in_EAX;
  int iVar1;
  char *unaff_ESI;
  
  if ((*unaff_ESI == '\0') != (*in_EAX == '\0')) {
    return '\0';
  }
  if (*unaff_ESI == '\0') {
    return '\x01';
  }
  iVar1 = FUN_00412a34(in_EAX + 4);
  return '\x01' - (iVar1 != 0);
}



void Catch_All_005d689b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005d68b2(undefined *param_1)

{
  *param_1 = 0xdd;
  param_1[1] = 0x78;
  param_1[2] = 0xa5;
  param_1[3] = 0xcb;
  param_1[4] = 0xfb;
  param_1[5] = 0x35;
  param_1[6] = 0x45;
  param_1[7] = 0xc0;
  param_1[8] = 0xbf;
  param_1[9] = 0x59;
  param_1[10] = 0x9a;
  param_1[0xb] = 0x8b;
  param_1[0xc] = 0x24;
  param_1[0xd] = 0x30;
  param_1[0xe] = 0x89;
  param_1[0xf] = 0x7a;
  return;
}



void FUN_005d68f6(undefined *param_1)

{
  *param_1 = 0x49;
  param_1[1] = 0x29;
  param_1[2] = 0x4b;
  param_1[3] = 0xf;
  param_1[4] = 0xf3;
  param_1[5] = 0x5f;
  param_1[6] = 0x4c;
  param_1[7] = 0x71;
  param_1[8] = 0xae;
  param_1[9] = 0xd;
  param_1[10] = 10;
  param_1[0xb] = 0xa8;
  param_1[0xc] = 0xbf;
  param_1[0xd] = 0x7e;
  param_1[0xe] = 0x69;
  param_1[0xf] = 0xb0;
  return;
}



undefined4 __thiscall FUN_005d693a(undefined4 param_1_00,byte param_1)

{
  FUN_00b87a86();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



bool __fastcall FUN_005d6956(char *param_1)

{
  char *unaff_ESI;
  
  if ((*unaff_ESI == '\0') != (*param_1 == '\0')) {
    return false;
  }
  if (*unaff_ESI == '\0') {
    return true;
  }
  return *(int *)(unaff_ESI + 4) == *(int *)(param_1 + 4);
}



void Catch_All_005d69c6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_005d69dd(undefined4 param_1_00,byte param_1)

{
  FUN_00b86ab0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d69f9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEEC2D83D::W44A508A1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005d6a3f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005d6a56(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_005d6a8f(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WEEC2D83D::W44A508A1>,class_boost::_bi::list1<class_boost::_bi::value<class_WEEC2D83D::W44A508A1*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_005d6a8f(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WEEC2D83D::W44A508A1>,class_boost::_bi::list1<class_boost::_bi::value<class_WEEC2D83D::W44A508A1*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WEEC2D83D::W44A508A1>,class_boost::_bi::list1<class_boost::_bi::value<class_WEEC2D83D::W44A508A1*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



undefined4 __thiscall FUN_005d6adc(undefined4 param_1_00,byte param_1)

{
  FUN_00b86945();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d6af8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEEC2D83D::WE4A0A6AF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005d6b3e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d6b55(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEEC2D83D::W5A1C48D8>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005d6b9b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d6bb2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEEC2D83D::W41296337>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005d6bf8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d6c0f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEEC2D83D::WD713D257>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005d6c55(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d6c6c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEEC2D83D::WE0502EE3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005d6cb2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_005d6e61(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_005d6e6f(*(int *)(param_1 + 0xc));
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005d6e6f(int param_1)

{
  if (*(int *)(param_1 + 0x1c) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x14) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0040127a();
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005d6ed2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W48463D55::W8DE5F71B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005d6f18(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_005d6e6f(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_005d7017(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_005d70e5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_005d723b(undefined4 param_1_00,byte param_1)

{
  FUN_005d7257();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_005d7257(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 *local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  *param_1 = W32DA97C4::WE2DCECCB::vftable;
  local_8._0_1_ = 6;
  local_8._1_3_ = 0;
  local_1c = param_1;
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0049a803(&local_2c,local_2c,local_28,local_24,local_20);
  puVar1 = local_1c;
  FUN_004017b2(1,0);
  local_8._0_1_ = 4;
  if (puVar1[0xe] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 3;
  if (puVar1[0xc] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 2;
  if (puVar1[10] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (puVar1[8] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_007b3ae8(param_1 + 1);
  return;
}



void Catch_All_005d7303(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_005d730d(undefined4 param_1,int param_2,int param_3)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c1ad78;
  if (param_2 != 0) {
    puVar1 = (undefined *)FUN_005d746a(&param_2);
  }
  if (param_3 != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_005d734a(int param_1_00,int param_1,int param_2)

{
  int local_2c;
  undefined4 *local_28;
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  if (param_1 == 0) {
    local_28 = &param_1;
    local_2c = 0x5d736e;
    FUN_005d11c9();
  }
  local_28 = (undefined4 *)(param_1_00 + 0x2c);
  local_2c = 0x5d737a;
  FUN_005d11c9();
  if (*(int *)(param_1_00 + 0x14) - *(int *)(param_1_00 + 0x10) >> 3 != 0) {
    local_28 = (undefined4 *)0x5d738f;
    FUN_00436b17();
    local_14 = &local_2c;
    local_2c = param_1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_2);
  }
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    local_28 = (undefined4 *)0x5d73ce;
    FUN_0040127a();
  }
  return;
}



void FUN_005d73d6(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  int in_EAX;
  int **ppiVar1;
  uint uVar2;
  
  uVar2 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (in_EAX + 0x3c),param_1,0,0xffffffff);
  if (*(int *)(in_EAX + 0x14) - *(int *)(in_EAX + 0x10) >> 3 != 0) {
    do {
      ppiVar1 = (int **)FUN_00436b17();
      (**(code **)(**ppiVar1 + 0xc))(param_1);
      uVar2 = uVar2 + 1;
    } while (uVar2 < (uint)(*(int *)(in_EAX + 0x14) - *(int *)(in_EAX + 0x10) >> 3));
  }
  return;
}



void FUN_005d741e(void)

{
  int in_EAX;
  int **ppiVar1;
  undefined4 unaff_EBX;
  uint uVar2;
  
  *(undefined4 *)(in_EAX + 0x58) = unaff_EBX;
  uVar2 = 0;
  if (*(int *)(in_EAX + 0x14) - *(int *)(in_EAX + 0x10) >> 3 != 0) {
    do {
      ppiVar1 = (int **)FUN_00436b17();
      (**(code **)(**ppiVar1 + 0x10))();
      uVar2 = uVar2 + 1;
    } while (uVar2 < (uint)(*(int *)(in_EAX + 0x14) - *(int *)(in_EAX + 0x10) >> 3));
  }
  return;
}



undefined FUN_005d7453(int param_1)

{
  undefined uVar1;
  
  if ((param_1 < 8) || (param_1 == 0xb)) {
    uVar1 = 1;
  }
  else {
    uVar1 = 0;
  }
  return uVar1;
}



void FUN_005d746a(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  uint uVar2;
  undefined4 uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar2 = 0;
  }
  else {
    uVar2 = *(int *)(in_EAX + 0x14) - iVar1 >> 3;
  }
  if ((uint)(*(int *)(in_EAX + 0x10) - iVar1 >> 3) < uVar2) {
    uVar3 = FUN_00478fca(param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar3;
  }
  else {
    FUN_0046e65a();
    FUN_0047d9ac(&local_10,param_1,local_10,local_c);
  }
  return;
}



void FUN_005d74c9(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c27401;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005d75d8(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x5d75e4;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0x5022;
  local_40 = 0xc;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x005d7738)

char FUN_005d7645(undefined4 param_1,undefined4 *param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  char cVar2;
  int *unaff_ESI;
  undefined4 *puStack_30;
  undefined4 local_2c [6];
  undefined4 **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar1 = param_2;
  uStack_4 = 8;
  local_8 = 1;
  local_14 = (undefined4 **)local_2c;
  local_2c[0] = param_1;
  puStack_30 = (undefined4 *)0x5d7674;
  cVar2 = (**(code **)(*unaff_ESI + 0x14))();
  if (cVar2 == '\0') {
    puStack_30 = (undefined4 *)0x5a7a428b;
    cVar2 = '\0';
  }
  else {
    puStack_30 = (undefined4 *)0x5d7690;
    cVar2 = (**(code **)(*unaff_ESI + 4))();
    if (cVar2 == '\0') {
      puStack_30 = (undefined4 *)0x5f570d64;
      cVar2 = '\0';
    }
    else {
      puStack_30 = &param_3;
      FUN_007b47f9();
      param_2 = (undefined4 *)0x0;
      local_14 = &puStack_30;
      puStack_30 = puVar1;
      cVar2 = (**(code **)(*unaff_ESI + 0x18))();
      if (cVar2 == '\0') {
        puStack_30 = (undefined4 *)0x1bd6b667;
        cVar2 = '\0';
      }
      else {
        puStack_30 = (undefined4 *)0x5d76dd;
        cVar2 = (**(code **)(*unaff_ESI + 4))();
        if (cVar2 == '\0') {
          puStack_30 = (undefined4 *)0x78fc0a64;
          cVar2 = '\0';
        }
        else {
          puStack_30 = (undefined4 *)0x5d76f7;
          FUN_007b4866();
          puStack_30 = (undefined4 *)0x5d76fe;
          cVar2 = (**(code **)(*unaff_ESI + 0x1c))();
          if (cVar2 == '\0') {
            puStack_30 = (undefined4 *)0xf3d1b393;
            cVar2 = '\0';
          }
          else {
            puStack_30 = (undefined4 *)0x5d7717;
            cVar2 = (**(code **)(*unaff_ESI + 4))();
            if (cVar2 != '\0') goto LAB_005d772d;
            puStack_30 = (undefined4 *)0x49d4174d;
          }
        }
      }
    }
  }
  FUN_00b940e0();
LAB_005d772d:
  local_8 = 0xffffffff;
  if (param_2 != (undefined4 *)0x0) {
    puStack_30 = (undefined4 *)0x1;
    (**(code **)*param_2)();
  }
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __fastcall FUN_005d7757(int *param_1)

{
  char cVar1;
  int *unaff_ESI;
  undefined4 uVar2;
  undefined4 *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0x5d7763;
  cVar1 = (**(code **)(*unaff_ESI + 0x20))();
  if (cVar1 == '\0') {
    uVar2 = 0xd50ace48;
  }
  else {
    cVar1 = (**(code **)(*param_1 + 0x24))(1000);
    if (cVar1 != '\0') {
      local_14[0] = (undefined4 *)0x0;
      local_8 = 0;
      cVar1 = (**(code **)(*unaff_ESI + 0x24))(local_14);
      if (cVar1 == '\0') {
        FUN_00b940e0(0x3dec074d);
      }
      local_8 = 0xffffffff;
      if (local_14[0] == (undefined4 *)0x0) {
        return cVar1;
      }
      (**(code **)*local_14[0])(1);
      return cVar1;
    }
    uVar2 = 0xb7f79ca7;
  }
  FUN_00b940e0(uVar2);
  return '\0';
}



void FUN_005d77f0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::WFDF17F95::vftable;
    FUN_005d82a0(unaff_EDI);
    return;
  }
  FUN_005d82a0(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d7840(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::WFDF17F95::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d7870(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::WB18D6744::vftable;
    FUN_005d8300(unaff_EDI);
    return;
  }
  FUN_005d8300(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d78c0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::WB18D6744::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d78f0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::WC4306B6E::vftable;
    FUN_005d8360(unaff_EDI);
    return;
  }
  FUN_005d8360(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d7940(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::WC4306B6E::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d7970(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::WF1025F79::vftable;
    FUN_005d83c0(unaff_EDI);
    return;
  }
  FUN_005d83c0(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d79c0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::WF1025F79::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d79f0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::W034C4831::vftable;
    FUN_005d8420(unaff_EDI);
    return;
  }
  FUN_005d8420(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d7a40(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::W034C4831::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d7a70(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::WAAC58733::vftable;
    FUN_005d8480(unaff_EDI);
    return;
  }
  FUN_005d8480(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d7ac0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::WAAC58733::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d7af0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::W414A55F1::vftable;
    FUN_005d84e0(unaff_EDI);
    return;
  }
  FUN_005d84e0(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d7b40(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::W414A55F1::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d7b70(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::W57F80370::vftable;
    FUN_005d8540(unaff_EDI);
    return;
  }
  FUN_005d8540(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d7bc0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::W57F80370::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d7bf0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::W8EC12FBE::vftable;
    FUN_005d85a0(unaff_EDI);
    return;
  }
  FUN_005d85a0(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d7c40(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::W8EC12FBE::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d7c70(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::WE46F56DB::vftable;
    FUN_005d8600(unaff_EDI);
    return;
  }
  FUN_005d8600(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d7cc0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::WE46F56DB::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d7cf0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::WDF79B845::vftable;
    FUN_005d8660(unaff_EDI);
    return;
  }
  FUN_005d8660(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d7d40(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::WDF79B845::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d7d70(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::WEE6CFF4E::vftable;
    FUN_005d86c0(unaff_EDI);
    return;
  }
  FUN_005d86c0(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d7dc0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::WEE6CFF4E::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d7df0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::W56582302::vftable;
    FUN_005d8720(unaff_EDI);
    return;
  }
  FUN_005d8720(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d7e40(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::W56582302::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d7e70(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::WF7717872::vftable;
    FUN_005d8780(unaff_EDI);
    return;
  }
  FUN_005d8780(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d7ec0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::WF7717872::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d7ef0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = WF3C48A30::W55E485D7::vftable;
    FUN_005d87e0(unaff_EDI);
    return;
  }
  FUN_005d87e0(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_005d7f40(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::W55E485D7::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_005d7f70(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c15d7d;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = W6A4CD2C5::W22A406ED::vftable;
  FUN_005d7ff0(param_1 + 1);
  local_4 = 0;
  FUN_005d7ff0(param_1 + 8);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_005d7fd0(undefined4 param_1_00,byte param_1)

{
  FUN_00b9c970();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void ** FUN_005d7ff0(void **param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c15d48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffff0;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = param_1;
  }
  *param_1 = puVar2;
  local_4 = 0;
  pvVar3 = (void *)FUN_005d81c0(uVar1);
  param_1[5] = pvVar3;
  param_1[6] = (void *)0x0;
  ExceptionList = local_c;
  return param_1;
}



void FUN_005d8060(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15d48;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005d81e0(DAT_0323f878 ^ (uint)&stack0xfffffff0);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x14));
}



void FUN_005d80c0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c12368;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  if (param_1[3] != 0) {
    FUN_005d9000(param_1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1,uVar1);
}



void FUN_005d8140(void)

{
  uint uVar1;
  uint uVar2;
  undefined4 in_EAX;
  uint uVar3;
  undefined4 *unaff_EBX;
  uint local_c [3];
  
  uVar1 = unaff_EBX[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(unaff_EBX[5] - uVar1) >> 3;
  }
  uVar2 = unaff_EBX[4];
  if ((uint)((int)(uVar2 - uVar1) >> 3) < uVar3) {
    local_c[0] = local_c[0] & 0xffffff00;
    FUN_0080e2d0(local_c[0],local_c[0]);
    unaff_EBX[4] = uVar2 + 8;
    return;
  }
  if (uVar2 < uVar1) {
    FUN_00a3fb10();
  }
  FUN_0079c180(local_c,in_EAX,*unaff_EBX,uVar2);
  return;
}



void FUN_005d81c0(void)

{
  int iVar1;
  
  iVar1 = FUN_005d89c0();
  if (iVar1 != 0) {
    *(int *)iVar1 = iVar1;
  }
  if ((int *)(iVar1 + 4) != (int *)0x0) {
    *(int *)(iVar1 + 4) = iVar1;
  }
  return;
}



void FUN_005d81e0(void)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int unaff_EBX;
  
  piVar1 = *(int **)(unaff_EBX + 0x14);
  iVar2 = *piVar1;
  *piVar1 = (int)piVar1;
  *(int *)(*(int *)(unaff_EBX + 0x14) + 4) = *(int *)(unaff_EBX + 0x14);
  *(undefined4 *)(unaff_EBX + 0x18) = 0;
  if (iVar2 != *(int *)(unaff_EBX + 0x14)) {
    piVar1 = *(int **)(iVar2 + 0xc);
    if (piVar1 != (int *)0x0) {
      LOCK();
      iVar3 = piVar1[1] + -1;
      piVar1[1] = iVar3;
      UNLOCK();
      if (iVar3 == 0) {
        (**(code **)(*piVar1 + 4))();
        LOCK();
        iVar3 = piVar1[2] + -1;
        piVar1[2] = iVar3;
        UNLOCK();
        if (iVar3 == 0) {
          (**(code **)(*piVar1 + 8))();
        }
      }
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  return;
}



void FUN_005d8250(int param_1)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 != (int *)0x0) goto LAB_005d8261;
    iVar2 = 0;
  }
  else {
LAB_005d8261:
    iVar2 = *piVar1;
  }
  if (unaff_ESI[1] + param_1 * 2 <= *(int **)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *piVar1;
    }
    if (*(int **)(iVar2 + 0xc) <= unaff_ESI[1] + param_1 * 2) goto LAB_005d8290;
  }
  FUN_00a3fb10();
LAB_005d8290:
  unaff_ESI[1] = unaff_ESI[1] + param_1 * 2;
  return;
}



undefined4 * __thiscall FUN_005d82a0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8a60(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005d8300(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8ac0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005d8360(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8b20(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005d83c0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8b80(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005d8420(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8be0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005d8480(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8c40(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005d84e0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8ca0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005d8540(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8d00(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005d85a0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8d60(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005d8600(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8dc0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005d8660(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8e20(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005d86c0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8e80(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005d8720(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8ee0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005d8780(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8f40(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005d87e0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d8fa0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



uint * __thiscall FUN_005d8840(undefined4 *param_1_00,uint *param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  uint uVar5;
  uint *puVar6;
  uint uVar7;
  uint local_20;
  int *local_1c;
  uint local_18;
  int *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c15d22;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_20 = 0;
  ___RTDynamicCast(0,0,&W6A4CD2C5::W6C89CAE2::RTTI_Type_Descriptor,
                   &WF3C48A30::W7BF9EE02::RTTI_Type_Descriptor,0,
                   DAT_0323f878 ^ (uint)&stack0xffffffd4);
  uVar5 = ___RTDynamicCast(*param_1_00,0,&W6A4CD2C5::W6C89CAE2::RTTI_Type_Descriptor,
                           &WF3C48A30::W7BF9EE02::RTTI_Type_Descriptor,0);
  if (uVar5 == 0) {
    local_20 = 0;
    local_1c = (int *)0x0;
    puVar6 = &local_20;
    uVar5 = 2;
  }
  else {
    local_14 = (int *)param_1_00[1];
    local_18 = uVar5;
    if (local_14 != (int *)0x0) {
      LOCK();
      local_14[1] = local_14[1] + 1;
      UNLOCK();
    }
    uVar5 = 1;
    local_4 = 1;
    puVar6 = &local_18;
  }
  piVar4 = local_14;
  piVar3 = local_1c;
  uVar7 = puVar6[1];
  *param_1 = *puVar6;
  param_1[1] = uVar7;
  if (uVar7 != 0) {
    LOCK();
    *(int *)(uVar7 + 4) = *(int *)(uVar7 + 4) + 1;
    UNLOCK();
  }
  uVar7 = uVar5 | 4;
  if (((uVar5 & 2) != 0) && (uVar7 = uVar5 & 0xfffffffd | 4, local_1c != (int *)0x0)) {
    LOCK();
    iVar2 = local_1c[1] + -1;
    local_1c[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      local_20 = uVar7;
      (**(code **)(*local_1c + 4))();
      piVar1 = piVar3 + 2;
      LOCK();
      iVar2 = *piVar1 + -1;
      *piVar1 = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar3 + 8))();
      }
    }
  }
  local_4 = 0;
  if (((uVar7 & 1) != 0) && (local_20 = uVar7 & 0xfffffffe, piVar4 != (int *)0x0)) {
    LOCK();
    iVar2 = piVar4[1] + -1;
    piVar4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar4 + 4))();
      LOCK();
      iVar2 = piVar4[2] + -1;
      piVar4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar4 + 8))();
      }
      ExceptionList = local_c;
      return param_1;
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005d89c0(uint param_1)

{
  uint extraout_ECX;
  char *local_10;
  undefined **local_c [3];
  
  if ((uint)(0xffffffff / (ulonglong)param_1) < 0x10) {
    local_10 = (char *)0x0;
    std::exception::exception((exception *)local_c,&local_10);
    local_c[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_c,&DAT_031153a4);
    param_1 = extraout_ECX;
  }
  operator_new(param_1 << 4);
  return;
}



void __fastcall FUN_005d8a10(uint param_1)

{
  uint extraout_ECX;
  char *local_10;
  undefined **local_c [3];
  
  if ((uint)(0xffffffff / (ulonglong)param_1) < 8) {
    local_10 = (char *)0x0;
    std::exception::exception((exception *)local_c,&local_10);
    local_c[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_c,&DAT_031153a4);
    param_1 = extraout_ECX;
  }
  operator_new(param_1 * 8);
  return;
}



void __thiscall FUN_005d8a60(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d9050(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_005d8ac0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d90f0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_005d8b20(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d9190(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_005d8b80(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d9230(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_005d8be0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d92d0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_005d8c40(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d9370(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_005d8ca0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d9410(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_005d8d00(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d94b0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_005d8d60(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d9550(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_005d8dc0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d95f0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_005d8e20(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d9690(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_005d8e80(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d9730(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_005d8ee0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d97d0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_005d8f40(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d9870(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_005d8fa0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d9910(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_005d9000(void)

{
  int *piVar1;
  int iVar2;
  int in_EAX;
  int unaff_EBX;
  
  if (in_EAX != unaff_EBX) {
    do {
      piVar1 = *(int **)(in_EAX + 4);
      if (piVar1 != (int *)0x0) {
        LOCK();
        iVar2 = piVar1[1] + -1;
        piVar1[1] = iVar2;
        UNLOCK();
        if (iVar2 == 0) {
          (**(code **)(*piVar1 + 4))();
          LOCK();
          iVar2 = piVar1[2] + -1;
          piVar1[2] = iVar2;
          UNLOCK();
          if (iVar2 == 0) {
            (**(code **)(*piVar1 + 8))();
          }
        }
      }
      in_EAX = in_EAX + 8;
    } while (in_EAX != unaff_EBX);
  }
  return;
}



undefined4 * __thiscall FUN_005d9050(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c930;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WFDF17F95>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d90c9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d90f0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c910;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WB18D6744>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d9169(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d9190(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c8f0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WC4306B6E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d9209(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d9230(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c8d0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WF1025F79>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d92a9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d92d0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c8b0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::W034C4831>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d9349(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d9370(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c890;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WAAC58733>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d93e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d9410(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c870;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::W414A55F1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d9489(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d94b0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c850;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::W57F80370>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d9529(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d9550(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c830;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::W8EC12FBE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d95c9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d95f0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c810;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WE46F56DB>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d9669(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d9690(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c7f0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WDF79B845>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d9709(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d9730(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c7d0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WEE6CFF4E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d97a9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d97d0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c7b0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::W56582302>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d9849(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d9870(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c790;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WF7717872>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d98e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005d9910(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c770;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::W55E485D7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d9989(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_005d99b0(int param_1)

{
  if (*(undefined4 **)(param_1 + 0xc) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xc))(1);
  }
  return;
}



undefined4 * __thiscall FUN_005d99c0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c12340;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W6A4CD2C5::WC78A25D9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005d9a39(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_005d9a60(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005d99c0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005d9ac0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c21f6b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005d9a60(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005d9b20(undefined4 param_1)

{
  void *pvVar1;
  undefined4 unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d2fb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x20);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_00ba1170(pvVar1,param_1);
  }
  local_4 = 0xffffffff;
  FUN_005d9ac0(unaff_EDI);
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_005d9ba0(undefined4 param_1_00,byte param_1)

{
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_005d9bc0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W6A4CD2C5::WECF9F790::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_005d9be0(undefined4 *param_1)

{
  *param_1 = W6A4CD2C5::WECF9F790::vftable;
  return;
}



void __fastcall FUN_005d9bf0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15cc8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = W6A4CD2C5::WA24CA193::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[2];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = W6A4CD2C5::WECF9F790::vftable;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_005d9c70(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c0c748;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = WF3C48A30::W02A3BCA7::vftable;
  local_4 = 0;
  if ((undefined4 *)param_1[3] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[3])(1,uVar1);
  }
  *param_1 = W6A4CD2C5::W6C89CAE2::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_005d9cd0(undefined4 param_1_00,byte param_1)

{
  FUN_005d9c70();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005d9cf0(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x24);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_00b86140(pvVar1,param_2);
  }
  local_4 = 0xffffffff;
  FUN_005d9e80(unaff_EDI);
  ExceptionList = local_c;
  return;
}



void FUN_005d9d70(void)

{
  int *in_EAX;
  
  if (*in_EAX != 0) {
    FUN_005da010();
  }
  return;
}



void FUN_005d9d80(undefined4 *param_1)

{
  uint uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_ESI;
  bool bVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_44 [4];
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  undefined4 local_24;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d2d2;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  bVar3 = *(char *)(param_1 + 4) == '\0';
  if (bVar3) {
    local_2c = 0xf;
    local_30 = 0;
    local_40 = local_40 & 0xffffff00;
    pbVar2 = local_44;
  }
  else {
    pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_00427ea0(*param_1,param_1[1],param_1[2],param_1[3]);
  }
  local_4 = (uint)bVar3;
  *(undefined4 *)(unaff_ESI + 0x18) = 0xf;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  unaff_ESI[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (unaff_ESI,pbVar2,0,0xffffffff);
  if (bVar3) {
    if (0xf < local_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_40,uVar1);
    }
    local_2c = 0xf;
    local_30 = 0;
    local_40 = local_40 & 0xffffff00;
  }
  if ((!bVar3) && (0xf < local_10)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_005d9e80(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005da0c0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_005d9ee0(undefined4 param_1)

{
  FUN_005da050();
  return param_1;
}



undefined4 * FUN_005d9f00(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_005dd020(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005d9f60(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_c [4];
  int *local_8;
  
  puVar3 = (undefined4 *)FUN_005da120(local_c);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_8 != (int *)0x0) {
    LOCK();
    iVar2 = local_8[1] + -1;
    local_8[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_8 + 4))();
      LOCK();
      iVar2 = local_8[2] + -1;
      local_8[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_8 + 8))();
      }
    }
  }
  return;
}



undefined4 * __fastcall FUN_005d9fc0(undefined4 param_1,int param_2)

{
  uint *in_EAX;
  
  if ((DAT_032ef844 & 1) == 0) {
    DAT_032ef844 = DAT_032ef844 | 1;
    DAT_032ef848 = 0;
    DAT_032ef84c = 0;
    DAT_032ef850 = 0;
    DAT_032ef854 = 0;
    DAT_032ef858 = 0;
  }
  if (*(uint *)(param_2 + 4) <= *in_EAX) {
    return &DAT_032ef848;
  }
  return (undefined4 *)(*(int *)(param_2 + 8) + *in_EAX * 0x24);
}



void FUN_005da010(void)

{
  int iVar1;
  int unaff_ESI;
  
  LOCK();
  iVar1 = *(int *)(unaff_ESI + 0x48) + -1;
  *(int *)(unaff_ESI + 0x48) = iVar1;
  UNLOCK();
  if (iVar1 == 0) {
    FUN_0082c0a0(*(undefined4 *)(*(int *)(unaff_ESI + 0x18) + 4));
    *(int *)(*(int *)(unaff_ESI + 0x18) + 4) = *(int *)(unaff_ESI + 0x18);
    *(undefined4 *)(unaff_ESI + 0x1c) = 0;
    *(undefined4 *)*(undefined4 *)(unaff_ESI + 0x18) = *(undefined4 *)(unaff_ESI + 0x18);
    *(int *)(*(int *)(unaff_ESI + 0x18) + 8) = *(int *)(unaff_ESI + 0x18);
    FUN_0079b820();
    return;
  }
  return;
}



void FUN_005da050(void)

{
  FUN_005da180(0);
  return;
}



undefined4 * __fastcall FUN_005da070(uint param_1,uint *param_2)

{
  if ((DAT_032ef844 & 1) == 0) {
    DAT_032ef844 = DAT_032ef844 | 1;
    DAT_032ef848 = 0;
    DAT_032ef84c = 0;
    DAT_032ef850 = 0;
    DAT_032ef854 = 0;
    DAT_032ef858 = 0;
  }
  if (*param_2 <= param_1) {
    return &DAT_032ef848;
  }
  return (undefined4 *)(param_2[1] + param_1 * 0x24);
}



void __thiscall FUN_005da0c0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005dc840(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005da120(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c21f6b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005dc8e0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_005da180(undefined4 param_1)

{
  FUN_005dc940();
  return param_1;
}



int FUN_005da1a0(int *param_1)

{
  int *piVar1;
  undefined auStack_a0 [108];
  undefined4 uStack_34;
  int *piStack_30;
  undefined4 *puStack_2c;
  uint uStack_28;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  piVar1 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2b018;
  local_c = ExceptionList;
  uStack_28 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  puStack_2c = &param_1;
  piStack_30 = param_1;
  uStack_34 = 0x5da1d6;
  FUN_005da250();
  local_4 = 0;
  if ((param_1 != (int *)0x0) && ((int *)*piVar1 != param_1)) {
    FUN_005da440(auStack_a0);
    FUN_005da5d0();
    puStack_2c = (undefined4 *)0x5da20f;
    FUN_005da7e0();
    puStack_2c = (undefined4 *)0x5da214;
    FUN_005da850();
  }
  local_4 = 0xffffffff;
  if (param_1 != (int *)0x0) {
    puStack_2c = (undefined4 *)0x5da229;
    FUN_005da010();
  }
  ExceptionList = local_c;
  return *piVar1 + 0x40;
}



int * FUN_005da250(int *param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  void *pvVar4;
  int *piVar5;
  undefined local_14 [4];
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c2209c;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  *param_2 = 0;
  local_4 = 0;
  if ((*param_1 == 0) || (*(int *)(*param_1 + 0x48) != 1)) {
    iVar1 = *param_1;
    if (iVar1 != 0) {
      LOCK();
      *(int *)(iVar1 + 0x48) = *(int *)(iVar1 + 0x48) + 1;
      UNLOCK();
    }
    iVar2 = *param_2;
    *param_2 = iVar1;
    if (iVar2 != 0) {
      FUN_005da010(uVar3);
    }
    pvVar4 = operator_new(0x78);
    local_4 = 1;
    if (pvVar4 != (void *)0x0) {
      FUN_005da3d0(pvVar4);
    }
    local_4 = local_4 & 0xffffff00;
    FUN_005dc9f0(local_14);
    local_4 = 2;
    piVar5 = (int *)FUN_00808b10();
    iVar1 = *piVar5;
    if (iVar1 != 0) {
      LOCK();
      *(int *)(iVar1 + 0x48) = *(int *)(iVar1 + 0x48) + 1;
      UNLOCK();
    }
    iVar2 = *param_1;
    *param_1 = iVar1;
    if (iVar2 != 0) {
      FUN_005da010();
    }
    local_4 = local_4 & 0xffffff00;
    if (local_10 != (int *)0x0) {
      LOCK();
      iVar1 = local_10[1] + -1;
      local_10[1] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_10 + 4))();
        LOCK();
        iVar1 = local_10[2] + -1;
        local_10[2] = iVar1;
        UNLOCK();
        if (iVar1 == 0) {
          (**(code **)(*local_10 + 8))();
        }
      }
    }
  }
  ExceptionList = local_c;
  return param_2;
}



void FUN_005da390(void)

{
  int in_EAX;
  int unaff_ESI;
  undefined auStack_84 [116];
  undefined4 uStack_10;
  
  if (unaff_ESI != in_EAX) {
    FUN_005da440(auStack_84);
    FUN_005da5d0();
    uStack_10 = 0x5da3ba;
    FUN_005da7e0();
    uStack_10 = 0x5da3bf;
    FUN_005da850();
  }
  return;
}



int FUN_005da3d0(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2204b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da710(param_1);
  *(undefined4 *)(param_1 + 0x4c) = 0;
  *(undefined4 *)(param_1 + 0x50) = 0;
  *(undefined4 *)(param_1 + 0x54) = 0;
  local_4 = 3;
  FUN_005daa60(param_1 + 0x58);
  *(undefined4 *)(param_1 + 0x70) = 0;
  *(undefined4 *)(param_1 + 0x74) = 0;
  ExceptionList = local_c;
  return param_1;
}



int FUN_005da440(int param_1)

{
  int iVar1;
  int unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2204b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da770(param_1,unaff_EDI);
  iVar1 = *(int *)(unaff_EDI + 0x4c);
  *(int *)(param_1 + 0x4c) = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  iVar1 = *(int *)(unaff_EDI + 0x50);
  *(int *)(param_1 + 0x50) = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  iVar1 = *(int *)(unaff_EDI + 0x54);
  *(int *)(param_1 + 0x54) = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  local_4 = 3;
  FUN_005daac0(param_1 + 0x58);
  *(undefined4 *)(param_1 + 0x70) = *(undefined4 *)(unaff_EDI + 0x70);
  *(undefined4 *)(param_1 + 0x74) = *(undefined4 *)(unaff_EDI + 0x74);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005da4f0(int param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1d280;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 2;
  FUN_005daba0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  puVar2 = *(undefined4 **)(param_1 + 0x54);
  if (puVar2 != (undefined4 *)0x0) {
    piVar3 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar3 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      (**(code **)*puVar2)(1);
    }
  }
  local_4._0_1_ = 1;
  puVar2 = *(undefined4 **)(param_1 + 0x50);
  if (puVar2 != (undefined4 *)0x0) {
    piVar3 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar3 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      (**(code **)*puVar2)(1);
    }
  }
  local_4 = (uint)local_4._1_3_ << 8;
  puVar2 = *(undefined4 **)(param_1 + 0x4c);
  if (puVar2 != (undefined4 *)0x0) {
    piVar3 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar3 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      (**(code **)*puVar2)(1);
    }
  }
  local_4 = 0xffffffff;
  FUN_005da660(param_1);
  ExceptionList = local_c;
  return;
}



void FUN_005da5d0(void)

{
  undefined auStack_10 [4];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2afea;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005dd350(DAT_0323f878 ^ (uint)auStack_10);
  local_4 = 0xffffffff;
  FUN_005da4f0(&stack0x00000004);
  ExceptionList = local_c;
  return;
}



void FUN_005da630(void)

{
  int iVar1;
  int iVar2;
  int *in_EAX;
  int *unaff_EDI;
  
  iVar1 = *in_EAX;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 0x48) = *(int *)(iVar1 + 0x48) + 1;
    UNLOCK();
  }
  iVar2 = *unaff_EDI;
  *unaff_EDI = iVar1;
  if (iVar2 != 0) {
    FUN_005da010();
  }
  return;
}



void FUN_005da660(int param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c1d243;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 1;
  piVar1 = *(int **)(param_1 + 0x44);
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  local_4 = local_4 & 0xffffff00;
  FUN_005da9e0(param_1 + 0x20);
  puStack_8 = (undefined *)0xffffffff;
  FUN_005da990(param_1);
  ExceptionList = unaff_EDI;
  return;
}



void FUN_005da6f0(void)

{
  FUN_005da990();
  return;
}



void FUN_005da700(void)

{
  FUN_005da9e0();
  return;
}



int FUN_005da710(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c21ff8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005db330(param_1);
  local_4 = 0;
  FUN_005db330(param_1 + 0x20);
  *(undefined4 *)(param_1 + 0x40) = 0;
  *(undefined4 *)(param_1 + 0x44) = 0;
  *(undefined4 *)(param_1 + 0x48) = 0;
  ExceptionList = local_c;
  return param_1;
}



int FUN_005da770(int param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c273ce;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005db330(param_1);
  local_4 = 0;
  FUN_005db330(param_1 + 0x20);
  *(undefined4 *)(param_1 + 0x40) = 0;
  *(undefined4 *)(param_1 + 0x44) = 0;
  local_4 = CONCAT31(local_4._1_3_,2);
  *(undefined4 *)(param_1 + 0x48) = 0;
  FUN_005dabf0(param_2);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005da7e0(void)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  int **in_EAX;
  int iVar4;
  
  piVar1 = *in_EAX;
  piVar2 = in_EAX[6];
  piVar3 = (int *)*piVar2;
  while( true ) {
    if (piVar1 == (int *)0x0) {
      FUN_00a3fb10();
    }
    if (piVar3 == piVar2) break;
    if (piVar1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar4 = 0;
    }
    else {
      iVar4 = *piVar1;
    }
    if (piVar3 == (int *)*(int *)(iVar4 + 0x18)) {
      FUN_00a3fb10();
    }
    FUN_005dac60(piVar3[3]);
    FUN_005e2d90();
  }
  return;
}



void FUN_005da850(void)

{
  int iVar1;
  uint uVar2;
  undefined4 *unaff_EDI;
  undefined local_40 [12];
  undefined local_34 [4];
  int *local_30;
  int local_2c;
  int local_28;
  undefined local_20 [4];
  int *local_1c;
  int local_18;
  int local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c27390;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  FUN_005db030(local_34,unaff_EDI[8],*(undefined4 *)unaff_EDI[0xe]);
  local_4 = 0;
  FUN_005db030(local_20,unaff_EDI[8],unaff_EDI[0xe]);
  local_4 = CONCAT31(local_4._1_3_,1);
  while( true ) {
    if ((local_2c == 0) || (local_2c != local_18)) {
      FUN_00a3fb10(uVar2);
    }
    if (local_28 == local_14) break;
    FUN_005db210();
    FUN_005db460(local_40,unaff_EDI + 0x10);
    FUN_005dca50(*unaff_EDI,*(undefined4 *)unaff_EDI[6],*unaff_EDI,(undefined4 *)unaff_EDI[6]);
    FUN_005e2d90();
    FUN_005db910(local_34);
  }
  local_4 = local_4 & 0xffffff00;
  if (local_1c != (int *)0x0) {
    LOCK();
    iVar1 = local_1c[1] + -1;
    local_1c[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*local_1c + 4))();
      LOCK();
      iVar1 = local_1c[2] + -1;
      local_1c[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_1c + 8))();
      }
    }
  }
  local_4 = 0xffffffff;
  if (local_30 != (int *)0x0) {
    LOCK();
    iVar1 = local_30[1] + -1;
    local_30[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*local_30 + 4))();
      LOCK();
      iVar1 = local_30[2] + -1;
      local_30[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_30 + 8))();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_005da990(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1cfc8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005daf20(DAT_0323f878 ^ (uint)&stack0xfffffff0);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void FUN_005da9e0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1cfc8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005daf60(DAT_0323f878 ^ (uint)&stack0xfffffff0);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void FUN_005daa30(void)

{
  int iVar1;
  undefined4 *puVar2;
  int *in_EAX;
  int *piVar3;
  
  puVar2 = (undefined4 *)*in_EAX;
  if (puVar2 != (undefined4 *)0x0) {
    piVar3 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar3 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      (**(code **)*puVar2)(1);
    }
  }
  return;
}



void ** FUN_005daa60(void **param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = param_1;
  }
  *param_1 = puVar1;
  param_1[3] = (void *)0x0;
  param_1[4] = (void *)0x0;
  param_1[5] = (void *)0x0;
  ExceptionList = local_c;
  return param_1;
}



void ** __thiscall FUN_005daac0(int param_1_00,void **param_1)

{
  int iVar1;
  int iVar2;
  char cVar3;
  undefined4 *puVar4;
  void *pvVar5;
  uint local_18;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c1d1d8;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  puVar4 = (undefined4 *)operator_new(4);
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    *puVar4 = param_1;
  }
  *param_1 = puVar4;
  local_8 = 0;
  iVar1 = *(int *)(param_1_00 + 0x10);
  iVar2 = *(int *)(param_1_00 + 0xc);
  param_1[3] = (void *)0x0;
  param_1[4] = (void *)0x0;
  param_1[5] = (void *)0x0;
  if (iVar1 - iVar2 >> 5 != 0) {
    cVar3 = FUN_005dafa0();
    if (cVar3 != '\0') {
      local_8 = CONCAT31(local_8._1_3_,1);
      if (*(uint *)(param_1_00 + 0x10) < *(uint *)(param_1_00 + 0xc)) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1_00 + 0x10) < *(uint *)(param_1_00 + 0xc)) {
        FUN_00a3fb10();
      }
      local_18 = local_18 & 0xffffff00;
      pvVar5 = (void *)FUN_005dda60(param_1[3],param_1,local_18);
      param_1[4] = pvVar5;
    }
  }
  ExceptionList = local_10;
  return param_1;
}



void Catch_All_005dab81(void)

{
  code *pcVar1;
  
  FUN_005daff0();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_005daba0(undefined4 param_1)

{
  undefined4 *unaff_ESI;
  
  if (unaff_ESI[3] != 0) {
    FUN_005dd220(param_1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI[3]);
  }
  unaff_ESI[3] = 0;
  unaff_ESI[4] = 0;
  unaff_ESI[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*unaff_ESI);
}



void FUN_005dabf0(undefined4 param_1)

{
  uint uVar1;
  undefined auStack_34 [4];
  undefined local_30 [32];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c27358;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_34;
  ExceptionList = &local_c;
  FUN_005db3b0(local_30,param_1);
  local_4 = 0;
  FUN_005db640(uVar1);
  local_4 = 0xffffffff;
  FUN_005da990(local_30);
  ExceptionList = pvStack_10;
  return;
}



void FUN_005dac60(int param_1)

{
  int *piVar1;
  int iVar2;
  int unaff_EDI;
  undefined4 local_e0;
  int *local_dc;
  undefined4 local_d8;
  undefined4 local_d4;
  undefined4 local_d0;
  undefined4 local_cc;
  int *local_c8;
  undefined4 local_c4;
  undefined4 local_c0;
  undefined *local_bc;
  int iStack_b8;
  undefined4 local_b4;
  int *local_b0;
  undefined4 local_ac;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined4 local_a0;
  int *local_9c;
  undefined4 local_98;
  undefined4 local_94;
  undefined4 local_90;
  undefined auStack_8c [28];
  undefined4 uStack_70;
  undefined4 *puStack_6c;
  undefined *puStack_68;
  undefined **ppuStack_64;
  uint uStack_60;
  undefined4 *local_4c;
  int *local_48;
  undefined local_44 [12];
  undefined4 local_38;
  int *local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  int *local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2afc2;
  local_c = ExceptionList;
  uStack_60 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  if (param_1 != unaff_EDI) {
    piVar1 = *(int **)(unaff_EDI + 0x44);
    local_4c = *(undefined4 **)(unaff_EDI + 0x40);
    if (piVar1 != (int *)0x0) {
      LOCK();
      piVar1[2] = piVar1[2] + 1;
      UNLOCK();
    }
    ppuStack_64 = (undefined **)&local_4c;
    puStack_68 = local_44;
    local_4 = 0;
    puStack_6c = (undefined4 *)0x5dacce;
    local_48 = piVar1;
    FUN_005db690();
    local_4 = 0xffffffff;
    if (piVar1 != (int *)0x0) {
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        ppuStack_64 = (undefined **)0x5dacef;
        (**(code **)(*piVar1 + 8))();
      }
    }
    ppuStack_64 = (undefined **)**(undefined4 **)(unaff_EDI + 0x38);
    puStack_68 = *(undefined **)(unaff_EDI + 0x20);
    puStack_6c = &local_24;
    uStack_70 = 0x5dad08;
    FUN_005db030();
    local_4 = 1;
    ppuStack_64 = *(undefined ***)(unaff_EDI + 0x38);
    puStack_68 = *(undefined **)(unaff_EDI + 0x20);
    puStack_6c = &local_38;
    uStack_70 = 0x5dad24;
    FUN_005db030();
    local_4._0_1_ = 2;
    local_bc = auStack_8c;
    local_a0 = local_38;
    local_9c = local_34;
    if (local_34 != (int *)0x0) {
      LOCK();
      local_34[1] = local_34[1] + 1;
      UNLOCK();
    }
    local_98 = local_30;
    local_94 = local_2c;
    local_90 = local_28;
    local_4c = &local_b4;
    local_b4 = local_38;
    local_b0 = local_34;
    if (local_34 != (int *)0x0) {
      LOCK();
      local_34[1] = local_34[1] + 1;
      UNLOCK();
    }
    local_ac = local_30;
    local_a8 = local_2c;
    iStack_b8 = param_1;
    local_a4 = local_28;
    local_c0 = 0x5dadc0;
    FUN_005dcad0();
    local_4._0_1_ = 3;
    local_cc = local_38;
    local_c8 = local_34;
    if (local_34 != (int *)0x0) {
      LOCK();
      local_34[1] = local_34[1] + 1;
      UNLOCK();
    }
    local_c4 = local_30;
    local_c0 = local_2c;
    local_bc = (undefined *)local_28;
    local_4c = &local_e0;
    local_e0 = local_24;
    local_dc = local_20;
    if (local_20 != (int *)0x0) {
      LOCK();
      local_20[1] = local_20[1] + 1;
      UNLOCK();
    }
    local_d8 = local_1c;
    local_d4 = local_18;
    local_d0 = local_14;
    FUN_005dcad0(&iStack_b8,param_1);
    local_4._0_1_ = 2;
    local_bc = (undefined *)0x5dae91;
    FUN_005dcc60();
    local_4 = CONCAT31(local_4._1_3_,1);
    if (local_34 != (int *)0x0) {
      LOCK();
      iVar2 = local_34[1] + -1;
      local_34[1] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        ppuStack_64 = (undefined **)0x5daeb4;
        (**(code **)(*local_34 + 4))();
        LOCK();
        iVar2 = local_34[2] + -1;
        local_34[2] = iVar2;
        UNLOCK();
        if (iVar2 == 0) {
          ppuStack_64 = (undefined **)0x5daec9;
          (**(code **)(*local_34 + 8))();
        }
      }
    }
    local_4 = 0xffffffff;
    if (local_20 != (int *)0x0) {
      LOCK();
      iVar2 = local_20[1] + -1;
      local_20[1] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        ppuStack_64 = (undefined **)0x5daeee;
        (**(code **)(*local_20 + 4))();
        LOCK();
        iVar2 = local_20[2] + -1;
        local_20[2] = iVar2;
        UNLOCK();
        if (iVar2 == 0) {
          ppuStack_64 = (undefined **)0x5daf03;
          (**(code **)(*local_20 + 8))();
        }
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_005daf20(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_005db560(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_005daf60(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_005db790(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



undefined4 FUN_005dafa0(void)

{
  uint in_EAX;
  void *pvVar1;
  int iVar2;
  int unaff_EDI;
  
  if (0x7ffffff < in_EAX) {
    FUN_005db870();
  }
  if (in_EAX == 0) {
    pvVar1 = operator_new(0);
    *(void **)(unaff_EDI + 0xc) = pvVar1;
    *(void **)(unaff_EDI + 0x10) = pvVar1;
    *(void **)(unaff_EDI + 0x14) = pvVar1;
    return 1;
  }
  iVar2 = FUN_005dcd90();
  *(int *)(unaff_EDI + 0xc) = iVar2;
  *(int *)(unaff_EDI + 0x10) = iVar2;
  *(uint *)(unaff_EDI + 0x14) = in_EAX * 0x20 + iVar2;
  return 1;
}



void __fastcall FUN_005daff0(undefined4 param_1)

{
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0xc) != 0) {
    FUN_005dd220(param_1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0xc));
  }
  *(undefined4 *)(unaff_ESI + 0xc) = 0;
  *(undefined4 *)(unaff_ESI + 0x10) = 0;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  return;
}



undefined4 * __fastcall
FUN_005db030(undefined4 param_1_00,undefined4 param_2_00,undefined4 *param_1,undefined4 param_2,
            undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1a2e8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = 0;
  param_1[1] = 0;
  local_4 = 0;
  param_1[2] = param_2;
  param_1[3] = param_3;
  param_1[4] = param_2_00;
  FUN_005db910(param_1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005db090(void)

{
  code *pcVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined local_58 [68];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c21fc8;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_14;
  uVar3 = FUN_005e33c0(local_58,10);
  local_c = 0;
  FUN_005e3a70(uVar3,
               "void __thiscall boost::xpressive::detail::matchable_ex<class std::_String_const_iterator<char,struct std::char_traits<char>,class std::allocator<char> > >::repeat(const struct boost::xpressive::detail::quant_spec &,struct boost::xpressive::detail::sequence<class std::_String_const_iterator<char,struct std::char_traits<char>,class std::allocator<char> > > &) const"
               ,"D:\\boost_1_53_0\\boost/xpressive/detail/dynamic/matchable.hpp",0x4a,uVar2);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_005db0f0(undefined4 *param_1)

{
  *param_1 = boost::xpressive::detail::
             finder<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
             ::vftable;
  return;
}



void FUN_005db100(void)

{
  int *piVar1;
  int iVar2;
  int in_EAX;
  
  piVar1 = *(int **)(in_EAX + 4);
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[2] + -1;
    piVar1[2] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
                    // WARNING: Could not recover jumptable at 0x005db118. Too many branches
                    // WARNING: Treating indirect jump as call
      (**(code **)(*piVar1 + 8))();
      return;
    }
  }
  return;
}



void FUN_005db120(int param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1a2e8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  piVar1 = *(int **)(param_1 + 0x1c);
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  local_4 = 0xffffffff;
  piVar1 = *(int **)(param_1 + 4);
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_005db1d0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::xpressive::detail::
                matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
                ::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_005db1f0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::xpressive::detail::traits<char>::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_005db210(int param_1)

{
  int iVar1;
  uint uVar2;
  undefined local_34 [4];
  int *local_30;
  int local_2c;
  int local_28;
  undefined local_20 [4];
  int *local_1c;
  int local_18;
  int local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c27330;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  FUN_005db030(local_34,*(undefined4 *)(param_1 + 0x20),**(undefined4 **)(param_1 + 0x38));
  local_4 = 0;
  FUN_005db030(local_20,*(undefined4 *)(param_1 + 0x20),*(undefined4 *)(param_1 + 0x38));
  local_4 = CONCAT31(local_4._1_3_,1);
  while( true ) {
    if ((local_2c == 0) || (local_2c != local_18)) {
      FUN_00a3fb10(uVar2);
    }
    if (local_28 == local_14) break;
    FUN_005e2d90();
    FUN_005db910(local_34);
  }
  local_4 = local_4 & 0xffffff00;
  if (local_1c != (int *)0x0) {
    LOCK();
    iVar1 = local_1c[1] + -1;
    local_1c[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*local_1c + 4))();
      LOCK();
      iVar1 = local_1c[2] + -1;
      local_1c[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_1c + 8))();
      }
    }
  }
  local_4 = 0xffffffff;
  if (local_30 != (int *)0x0) {
    LOCK();
    iVar1 = local_30[1] + -1;
    local_30[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*local_30 + 4))();
      LOCK();
      iVar1 = local_30[2] + -1;
      local_30[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_30 + 8))();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void ** FUN_005db330(void **param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c15d48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffff0;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = param_1;
  }
  *param_1 = puVar2;
  local_4 = 0;
  pvVar3 = (void *)FUN_005dc640(uVar1);
  param_1[6] = pvVar3;
  *(undefined *)((int)pvVar3 + 0x15) = 1;
  *(void **)((int)param_1[6] + 4) = param_1[6];
  *(void **)param_1[6] = param_1[6];
  *(void **)((int)param_1[6] + 8) = param_1[6];
  param_1[7] = (void *)0x0;
  ExceptionList = local_c;
  return param_1;
}



void ** FUN_005db3b0(void **param_1)

{
  undefined4 *puVar1;
  void *pvVar2;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c21f98;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = param_1;
  }
  *param_1 = puVar1;
  local_8 = 0;
  pvVar2 = (void *)FUN_005dc640();
  param_1[6] = pvVar2;
  *(undefined *)((int)pvVar2 + 0x15) = 1;
  *(void **)((int)param_1[6] + 4) = param_1[6];
  *(void **)param_1[6] = param_1[6];
  *(void **)((int)param_1[6] + 8) = param_1[6];
  param_1[7] = (void *)0x0;
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_005dbdc0();
  ExceptionList = local_10;
  return param_1;
}



void Catch_All_005db441(void)

{
  code *pcVar1;
  
  FUN_005daf20();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



int * FUN_005db460(int *param_1,int param_2)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  int *unaff_EBX;
  undefined4 *puVar4;
  bool bVar5;
  int local_c;
  undefined4 *local_8;
  
  puVar4 = (undefined4 *)unaff_EBX[6];
  bVar5 = true;
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x15) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      puVar4 = puVar2;
      bVar5 = *(uint *)(param_2 + 4) < (uint)puVar4[4];
      if (bVar5) {
        puVar2 = (undefined4 *)*puVar4;
      }
      else {
        puVar2 = (undefined4 *)puVar4[2];
      }
    } while (*(char *)((int)puVar2 + 0x15) == '\0');
  }
  local_c = *unaff_EBX;
  local_8 = puVar4;
  if (bVar5) {
    puVar2 = *(undefined4 **)unaff_EBX[6];
    if (local_c == 0) {
      FUN_00a3fb10();
    }
    if (puVar4 == puVar2) {
      piVar3 = (int *)FUN_005dbe30(&local_c,1,puVar4,param_2);
      iVar1 = *piVar3;
      param_1[1] = piVar3[1];
      *param_1 = iVar1;
      *(undefined *)(param_1 + 2) = 1;
      return param_1;
    }
    FUN_005dc7c0();
  }
  if ((uint)local_8[4] < *(uint *)(param_2 + 4)) {
    piVar3 = (int *)FUN_005dbe30(&local_c,bVar5,puVar4,param_2);
    iVar1 = piVar3[1];
    *param_1 = *piVar3;
    *(undefined *)(param_1 + 2) = 1;
    param_1[1] = iVar1;
    return param_1;
  }
  *param_1 = local_c;
  *(undefined *)(param_1 + 2) = 0;
  param_1[1] = (int)local_8;
  return param_1;
}



void FUN_005db560(int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  int *in_EAX;
  
  iVar1 = *(int *)in_EAX[6];
  if ((param_2 == 0) || (param_2 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_3 == iVar1) {
    iVar1 = in_EAX[6];
    if ((param_4 == 0) || (param_4 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_5 == iVar1) {
      FUN_0082c0a0(*(undefined4 *)(in_EAX[6] + 4));
      *(int *)(in_EAX[6] + 4) = in_EAX[6];
      in_EAX[7] = 0;
      *(int *)in_EAX[6] = in_EAX[6];
      *(int *)(in_EAX[6] + 8) = in_EAX[6];
      iVar1 = *in_EAX;
      param_1[1] = *(int *)in_EAX[6];
      *param_1 = iVar1;
      return;
    }
  }
  while( true ) {
    if ((param_2 == 0) || (param_2 != param_4)) {
      FUN_00a3fb10();
    }
    if (param_3 == param_5) break;
    FUN_005e2d90();
    FUN_005dba80();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void __fastcall FUN_005db640(undefined4 param_1,int *param_2)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  int iVar5;
  int *in_EAX;
  int *piVar6;
  
  if (in_EAX != param_2) {
    puVar2 = (undefined4 *)*in_EAX;
    *in_EAX = *param_2;
    *param_2 = (int)puVar2;
    puVar3 = (undefined4 *)*in_EAX;
    if (puVar3 != puVar2) {
      uVar4 = *puVar3;
      *puVar3 = *puVar2;
      *puVar2 = uVar4;
    }
    piVar6 = param_2 + 6;
    piVar1 = in_EAX + 6;
    if (piVar1 != piVar6) {
      iVar5 = *piVar1;
      *piVar1 = *piVar6;
      *piVar6 = iVar5;
    }
    param_2 = param_2 + 7;
    piVar6 = in_EAX + 7;
    if (piVar6 != param_2) {
      iVar5 = *piVar6;
      *piVar6 = *param_2;
      *param_2 = iVar5;
    }
  }
  return;
}



int * FUN_005db690(int *param_1,int param_2)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  int *unaff_EBX;
  undefined4 *puVar4;
  bool bVar5;
  int local_c;
  undefined4 *local_8;
  
  puVar4 = (undefined4 *)unaff_EBX[6];
  bVar5 = true;
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x15) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      puVar4 = puVar2;
      bVar5 = *(uint *)(param_2 + 4) < (uint)puVar4[4];
      if (bVar5) {
        puVar2 = (undefined4 *)*puVar4;
      }
      else {
        puVar2 = (undefined4 *)puVar4[2];
      }
    } while (*(char *)((int)puVar2 + 0x15) == '\0');
  }
  local_c = *unaff_EBX;
  local_8 = puVar4;
  if (bVar5) {
    puVar2 = *(undefined4 **)unaff_EBX[6];
    if (local_c == 0) {
      FUN_00a3fb10();
    }
    if (puVar4 == puVar2) {
      piVar3 = (int *)FUN_005dc340(&local_c,1,param_2);
      iVar1 = *piVar3;
      param_1[1] = piVar3[1];
      *param_1 = iVar1;
      *(undefined *)(param_1 + 2) = 1;
      return param_1;
    }
    FUN_005dc7c0();
  }
  if ((uint)local_8[4] < *(uint *)(param_2 + 4)) {
    piVar3 = (int *)FUN_005dc340(&local_c,bVar5,param_2);
    iVar1 = piVar3[1];
    *param_1 = *piVar3;
    *(undefined *)(param_1 + 2) = 1;
    param_1[1] = iVar1;
    return param_1;
  }
  *param_1 = local_c;
  *(undefined *)(param_1 + 2) = 0;
  param_1[1] = (int)local_8;
  return param_1;
}



void FUN_005db790(int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  int *in_EAX;
  
  iVar1 = *(int *)in_EAX[6];
  if ((param_2 == 0) || (param_2 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_3 == iVar1) {
    iVar1 = in_EAX[6];
    if ((param_4 == 0) || (param_4 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_5 == iVar1) {
      FUN_005dc6d0(*(undefined4 *)(in_EAX[6] + 4));
      *(int *)(in_EAX[6] + 4) = in_EAX[6];
      in_EAX[7] = 0;
      *(int *)in_EAX[6] = in_EAX[6];
      *(int *)(in_EAX[6] + 8) = in_EAX[6];
      iVar1 = *in_EAX;
      param_1[1] = *(int *)in_EAX[6];
      *param_1 = iVar1;
      return;
    }
  }
  while( true ) {
    if ((param_2 == 0) || (param_2 != param_4)) {
      FUN_00a3fb10();
    }
    if (param_3 == param_5) break;
    FUN_005e2d90();
    FUN_005dc000();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_005db870(void)

{
  code *pcVar1;
  uint uVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [3];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  undefined local_24;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d1b0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  local_38 = 0xf;
  local_3c = 0;
  local_4c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_50,"vector<T> too long",0x12);
  local_4 = 0;
  FUN_00a3f1a9(uVar2);
  local_4._0_1_ = 1;
  local_34[0] = std::logic_error::vftable;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,local_50,0,0xffffffff);
  local_4 = (uint)local_4._1_3_ << 8;
  local_34[0] = std::length_error::vftable;
  __CxxThrowException_8(local_34,&DAT_03115554);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005db910(int *param_1)

{
  int **ppiVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  int *local_24;
  int local_20 [2];
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d178;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  ppiVar1 = (int **)(param_1 + 2);
  do {
    piVar5 = ((int **)param_1[4])[6];
    if ((*ppiVar1 == (int *)0x0) || (*ppiVar1 != *(int **)param_1[4])) {
      FUN_00a3fb10(uVar3);
    }
    if ((int *)param_1[3] == piVar5) {
      FUN_0079b820();
      ExceptionList = local_c;
      return;
    }
    piVar5 = *ppiVar1;
    if (piVar5 == (int *)0x0) {
      FUN_00a3fb10(uVar3);
      piVar5 = *ppiVar1;
      if (piVar5 != (int *)0x0) goto LAB_005db971;
      iVar4 = 0;
    }
    else {
LAB_005db971:
      iVar4 = *piVar5;
    }
    if (param_1[3] == *(int *)(iVar4 + 0x18)) {
      FUN_00a3fb10(uVar3);
    }
    piVar5 = (int *)FUN_005dc500();
    local_4 = 0;
    iVar4 = *piVar5;
    iVar2 = piVar5[1];
    if (iVar2 != 0) {
      LOCK();
      *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
      UNLOCK();
    }
    if (local_20 != param_1) {
      *param_1 = iVar4;
    }
    piVar5 = (int *)param_1[1];
    param_1[1] = iVar2;
    if (piVar5 != (int *)0x0) {
      LOCK();
      iVar4 = piVar5[1] + -1;
      piVar5[1] = iVar4;
      UNLOCK();
      if (iVar4 == 0) {
        (**(code **)(*piVar5 + 4))();
        LOCK();
        iVar4 = piVar5[2] + -1;
        piVar5[2] = iVar4;
        UNLOCK();
        if (iVar4 == 0) {
          (**(code **)(*piVar5 + 8))();
        }
      }
    }
    local_4 = 0xffffffff;
    if (local_24 != (int *)0x0) {
      LOCK();
      iVar4 = local_24[1] + -1;
      local_24[1] = iVar4;
      UNLOCK();
      if (iVar4 == 0) {
        (**(code **)(*local_24 + 4))();
        LOCK();
        iVar4 = local_24[2] + -1;
        local_24[2] = iVar4;
        UNLOCK();
        if (iVar4 == 0) {
          (**(code **)(*local_24 + 8))();
        }
      }
    }
    if (*param_1 != 0) {
      ExceptionList = local_c;
      return;
    }
    piVar5 = *ppiVar1;
    iVar4 = param_1[3];
    FUN_005e2d90();
    FUN_005dc000(param_1[4],local_18,piVar5,iVar4);
  } while( true );
}



void FUN_005dba80(int param_1,undefined4 param_2,undefined4 param_3,int **param_4)

{
  undefined uVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  int **ppiVar5;
  int **ppiVar6;
  undefined4 uVar7;
  int **ppiVar8;
  int **ppiVar9;
  int **ppiVar10;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [3];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  undefined local_24;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00c1b9a0;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  ppiVar5 = param_4;
  if (*(char *)((int)param_4 + 0x15) != '\0') {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"invalid map/set<T> iterator",0x1b);
    local_4 = 0;
    FUN_00a3f1a9();
    local_4._0_1_ = 1;
    local_34[0] = std::logic_error::vftable;
    local_10 = 0xf;
    local_14 = 0;
    local_24 = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_28,local_50,0,0xffffffff);
    local_4 = (uint)local_4._1_3_ << 8;
    local_34[0] = std::out_of_range::vftable;
    ppiVar5 = (int **)__CxxThrowException_8(local_34,&DAT_03115668);
  }
  FUN_005e2d90(uVar4);
  ppiVar8 = (int **)*ppiVar5;
  if (*(char *)((int)ppiVar8 + 0x15) == '\0') {
    ppiVar10 = ppiVar8;
    if (*(char *)((int)ppiVar5[2] + 0x15) == '\0') {
      ppiVar10 = (int **)param_4[2];
      if (param_4 != ppiVar5) {
        ppiVar8[1] = (int *)param_4;
        *param_4 = *ppiVar5;
        ppiVar8 = param_4;
        if (param_4 != (int **)ppiVar5[2]) {
          ppiVar8 = (int **)param_4[1];
          if (*(char *)((int)ppiVar10 + 0x15) == '\0') {
            ppiVar10[1] = (int *)ppiVar8;
          }
          *ppiVar8 = (int *)ppiVar10;
          param_4[2] = ppiVar5[2];
          ppiVar5[2][1] = (int)param_4;
        }
        if (*(int ***)(*(int *)(param_1 + 0x18) + 4) == ppiVar5) {
          *(int ***)(*(int *)(param_1 + 0x18) + 4) = param_4;
        }
        else {
          ppiVar9 = (int **)ppiVar5[1];
          if ((int **)*ppiVar9 == ppiVar5) {
            *ppiVar9 = (int *)param_4;
          }
          else {
            ppiVar9[2] = (int *)param_4;
          }
        }
        param_4[1] = ppiVar5[1];
        ppiVar9 = ppiVar5 + 5;
        param_4 = param_4 + 5;
        if (param_4 != ppiVar9) {
          uVar1 = *(undefined *)param_4;
          *(undefined *)param_4 = *(undefined *)ppiVar9;
          *(undefined *)ppiVar9 = uVar1;
        }
        goto LAB_005dbc31;
      }
    }
  }
  else {
    ppiVar10 = (int **)ppiVar5[2];
  }
  ppiVar8 = (int **)ppiVar5[1];
  if (*(char *)((int)ppiVar10 + 0x15) == '\0') {
    ppiVar10[1] = (int *)ppiVar8;
  }
  if (*(int ***)(*(int *)(param_1 + 0x18) + 4) == ppiVar5) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar10;
  }
  else if ((int **)*ppiVar8 == ppiVar5) {
    *ppiVar8 = (int *)ppiVar10;
  }
  else {
    ppiVar8[2] = (int *)ppiVar10;
  }
  ppiVar9 = *(int ***)(param_1 + 0x18);
  if ((int **)*ppiVar9 == ppiVar5) {
    ppiVar6 = ppiVar8;
    if (*(char *)((int)ppiVar10 + 0x15) == '\0') {
      ppiVar6 = (int **)FUN_005dc620();
    }
    *ppiVar9 = (int *)ppiVar6;
  }
  iVar2 = *(int *)(param_1 + 0x18);
  if (*(int ***)(iVar2 + 8) == ppiVar5) {
    if (*(char *)((int)ppiVar10 + 0x15) == '\0') {
      uVar7 = FUN_005dc600();
      *(undefined4 *)(iVar2 + 8) = uVar7;
    }
    else {
      *(int ***)(iVar2 + 8) = ppiVar8;
    }
  }
LAB_005dbc31:
  if (*(char *)(ppiVar5 + 5) == '\x01') {
    if (ppiVar10 != *(int ***)(*(int *)(param_1 + 0x18) + 4)) {
      do {
        ppiVar9 = ppiVar8;
        if (*(char *)(ppiVar10 + 5) != '\x01') break;
        ppiVar8 = (int **)*ppiVar9;
        if (ppiVar10 == ppiVar8) {
          ppiVar8 = (int **)ppiVar9[2];
          if (*(char *)(ppiVar8 + 5) == '\0') {
            *(undefined *)(ppiVar8 + 5) = 1;
            *(undefined *)(ppiVar9 + 5) = 0;
            FUN_005dc720(param_1);
            ppiVar8 = (int **)ppiVar9[2];
          }
          if (*(char *)((int)ppiVar8 + 0x15) == '\0') {
            if ((*(char *)(*ppiVar8 + 5) != '\x01') || (*(char *)(ppiVar8[2] + 5) != '\x01')) {
              if (*(char *)(ppiVar8[2] + 5) == '\x01') {
                *(undefined *)(*ppiVar8 + 5) = 1;
                *(undefined *)(ppiVar8 + 5) = 0;
                FUN_005e2c70(param_1);
                ppiVar8 = (int **)ppiVar9[2];
              }
              *(undefined *)(ppiVar8 + 5) = *(undefined *)(ppiVar9 + 5);
              *(undefined *)(ppiVar9 + 5) = 1;
              *(undefined *)(ppiVar8[2] + 5) = 1;
              FUN_005dc720(param_1);
              break;
            }
LAB_005dbcfa:
            *(undefined *)(ppiVar8 + 5) = 0;
          }
        }
        else {
          if (*(char *)(ppiVar8 + 5) == '\0') {
            *(undefined *)(ppiVar8 + 5) = 1;
            *(undefined *)(ppiVar9 + 5) = 0;
            FUN_005e2c70(param_1);
            ppiVar8 = (int **)*ppiVar9;
          }
          if (*(char *)((int)ppiVar8 + 0x15) == '\0') {
            if ((*(char *)(ppiVar8[2] + 5) == '\x01') && (*(char *)(*ppiVar8 + 5) == '\x01'))
            goto LAB_005dbcfa;
            if (*(char *)(*ppiVar8 + 5) == '\x01') {
              *(undefined *)(ppiVar8[2] + 5) = 1;
              *(undefined *)(ppiVar8 + 5) = 0;
              FUN_005dc720(param_1);
              ppiVar8 = (int **)*ppiVar9;
            }
            *(undefined *)(ppiVar8 + 5) = *(undefined *)(ppiVar9 + 5);
            *(undefined *)(ppiVar9 + 5) = 1;
            *(undefined *)(*ppiVar8 + 5) = 1;
            FUN_005e2c70(param_1);
            break;
          }
        }
        ppiVar8 = (int **)ppiVar9[1];
        ppiVar10 = ppiVar9;
      } while (ppiVar9 != *(int ***)(*(int *)(param_1 + 0x18) + 4));
    }
    *(undefined *)(ppiVar10 + 5) = 1;
  }
  piVar3 = ppiVar5[4];
  if (piVar3 != (int *)0x0) {
    LOCK();
    iVar2 = piVar3[1] + -1;
    piVar3[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar3 + 4))();
      LOCK();
      iVar2 = piVar3[2] + -1;
      piVar3[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar3 + 8))();
      }
    }
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(ppiVar5);
}



void FUN_005dbdc0(void)

{
  char cVar1;
  int iVar2;
  int **ppiVar3;
  int **ppiVar4;
  int iVar5;
  int **ppiVar6;
  int in_EAX;
  undefined4 uVar7;
  int unaff_EBX;
  
  iVar2 = *(int *)(in_EAX + 0x18);
  uVar7 = FUN_005dc550(*(undefined4 *)(*(int *)(unaff_EBX + 0x18) + 4),iVar2);
  *(undefined4 *)(iVar2 + 4) = uVar7;
  ppiVar3 = *(int ***)(in_EAX + 0x18);
  *(undefined4 *)(in_EAX + 0x1c) = *(undefined4 *)(unaff_EBX + 0x1c);
  ppiVar4 = (int **)ppiVar3[1];
  if (*(char *)((int)ppiVar4 + 0x15) != '\0') {
    *ppiVar3 = (int *)ppiVar3;
    *(int *)(*(int *)(in_EAX + 0x18) + 8) = *(int *)(in_EAX + 0x18);
    return;
  }
  cVar1 = *(char *)((int)*ppiVar4 + 0x15);
  ppiVar6 = (int **)*ppiVar4;
  while (cVar1 == '\0') {
    cVar1 = *(char *)((int)*ppiVar6 + 0x15);
    ppiVar4 = ppiVar6;
    ppiVar6 = (int **)*ppiVar6;
  }
  *ppiVar3 = (int *)ppiVar4;
  iVar2 = *(int *)(*(int *)(in_EAX + 0x18) + 4);
  iVar5 = *(int *)(iVar2 + 8);
  cVar1 = *(char *)(iVar5 + 0x15);
  while (cVar1 == '\0') {
    cVar1 = *(char *)(*(int *)(iVar5 + 8) + 0x15);
    iVar2 = iVar5;
    iVar5 = *(int *)(iVar5 + 8);
  }
  *(int *)(*(int *)(in_EAX + 0x18) + 8) = iVar2;
  return;
}



void FUN_005dbe30(undefined4 *param_1,char param_2,int **param_3)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int **ppiVar7;
  int *piVar8;
  int *piVar9;
  undefined4 *unaff_EDI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [3];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  undefined local_24;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00c1b9a0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (0x1ffffffd < (uint)unaff_EDI[7]) {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"map/set<T> too long",0x13);
    local_4 = 0;
    FUN_00a3f1a9();
    local_4._0_1_ = 1;
    local_34[0] = std::logic_error::vftable;
    local_10 = 0xf;
    local_14 = 0;
    local_24 = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_28,local_50,0,0xffffffff);
    local_4 = (uint)local_4._1_3_ << 8;
    local_34[0] = std::length_error::vftable;
    __CxxThrowException_8(local_34,&DAT_03115554);
  }
  piVar5 = (int *)FUN_005dc680(unaff_EDI[6],param_3,unaff_EDI[6],0);
  unaff_EDI[7] = unaff_EDI[7] + 1;
  if (param_3 == (int **)unaff_EDI[6]) {
    ((int **)unaff_EDI[6])[1] = piVar5;
    *(int **)unaff_EDI[6] = piVar5;
    iVar6 = unaff_EDI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_3 = piVar5;
      if (param_3 == *(int ***)(int **)unaff_EDI[6]) {
        *(int **)unaff_EDI[6] = piVar5;
      }
      goto LAB_005dbf27;
    }
    param_3[2] = piVar5;
    iVar6 = unaff_EDI[6];
    if (param_3 != *(int ***)(iVar6 + 8)) goto LAB_005dbf27;
  }
  *(int **)(iVar6 + 8) = piVar5;
LAB_005dbf27:
  cVar1 = *(char *)(piVar5[1] + 0x14);
  piVar9 = piVar5;
  do {
    if (cVar1 != '\0') {
      *(undefined *)(*(int *)(unaff_EDI[6] + 4) + 0x14) = 1;
      uVar4 = *unaff_EDI;
      param_1[1] = piVar5;
      *param_1 = uVar4;
      ExceptionList = local_c;
      return;
    }
    ppiVar7 = (int **)(piVar9 + 1);
    piVar2 = *ppiVar7;
    ppiVar3 = (int **)piVar2[1];
    if (piVar2 == *ppiVar3) {
      piVar8 = ppiVar3[2];
      if (*(char *)(piVar8 + 5) == '\0') {
LAB_005dbf79:
        *(undefined *)(piVar2 + 5) = 1;
        *(undefined *)(piVar8 + 5) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x14) = 0;
        piVar9 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar9 == (int *)piVar2[2]) {
          FUN_005dc720(unaff_EDI);
          piVar9 = piVar2;
        }
        *(undefined *)(piVar9[1] + 0x14) = 1;
        *(undefined *)(*(int *)(piVar9[1] + 4) + 0x14) = 0;
        FUN_005e2c70(unaff_EDI);
      }
    }
    else {
      piVar8 = *ppiVar3;
      if (*(char *)(piVar8 + 5) == '\0') goto LAB_005dbf79;
      if (piVar9 == (int *)*piVar2) {
        FUN_005e2c70(unaff_EDI);
        piVar9 = piVar2;
      }
      *(undefined *)(piVar9[1] + 0x14) = 1;
      *(undefined *)(*(int *)(piVar9[1] + 4) + 0x14) = 0;
      FUN_005dc720(unaff_EDI);
    }
    cVar1 = *(char *)(piVar9[1] + 0x14);
  } while( true );
}



void FUN_005dc000(int param_1,undefined4 param_2,undefined4 param_3,int **param_4)

{
  undefined uVar1;
  char cVar2;
  int **ppiVar3;
  int iVar4;
  int *piVar5;
  int **ppiVar6;
  uint uVar7;
  int **ppiVar8;
  undefined4 uVar9;
  int **ppiVar10;
  int **ppiVar11;
  int **ppiVar12;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [3];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  undefined local_24;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00c1b9a0;
  local_c = ExceptionList;
  uVar7 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  ppiVar8 = param_4;
  if (*(char *)((int)param_4 + 0x15) != '\0') {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"invalid map/set<T> iterator",0x1b);
    local_4 = 0;
    FUN_00a3f1a9();
    local_4._0_1_ = 1;
    local_34[0] = std::logic_error::vftable;
    local_10 = 0xf;
    local_14 = 0;
    local_24 = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_28,local_50,0,0xffffffff);
    local_4 = (uint)local_4._1_3_ << 8;
    local_34[0] = std::out_of_range::vftable;
    ppiVar8 = (int **)__CxxThrowException_8(local_34,&DAT_03115668);
  }
  FUN_005e2d90(uVar7);
  ppiVar11 = (int **)*ppiVar8;
  if (*(char *)((int)ppiVar11 + 0x15) == '\0') {
    ppiVar12 = ppiVar11;
    if (*(char *)((int)ppiVar8[2] + 0x15) == '\0') {
      ppiVar12 = (int **)param_4[2];
      if (param_4 != ppiVar8) {
        ppiVar11[1] = (int *)param_4;
        *param_4 = *ppiVar8;
        ppiVar11 = param_4;
        if (param_4 != (int **)ppiVar8[2]) {
          ppiVar11 = (int **)param_4[1];
          if (*(char *)((int)ppiVar12 + 0x15) == '\0') {
            ppiVar12[1] = (int *)ppiVar11;
          }
          *ppiVar11 = (int *)ppiVar12;
          param_4[2] = ppiVar8[2];
          ppiVar8[2][1] = (int)param_4;
        }
        if (*(int ***)(*(int *)(param_1 + 0x18) + 4) == ppiVar8) {
          *(int ***)(*(int *)(param_1 + 0x18) + 4) = param_4;
        }
        else {
          ppiVar10 = (int **)ppiVar8[1];
          if ((int **)*ppiVar10 == ppiVar8) {
            *ppiVar10 = (int *)param_4;
          }
          else {
            ppiVar10[2] = (int *)param_4;
          }
        }
        param_4[1] = ppiVar8[1];
        ppiVar10 = ppiVar8 + 5;
        param_4 = param_4 + 5;
        if (param_4 != ppiVar10) {
          uVar1 = *(undefined *)param_4;
          *(undefined *)param_4 = *(undefined *)ppiVar10;
          *(undefined *)ppiVar10 = uVar1;
        }
        goto LAB_005dc1b2;
      }
    }
  }
  else {
    ppiVar12 = (int **)ppiVar8[2];
  }
  ppiVar11 = (int **)ppiVar8[1];
  if (*(char *)((int)ppiVar12 + 0x15) == '\0') {
    ppiVar12[1] = (int *)ppiVar11;
  }
  if (*(int ***)(*(int *)(param_1 + 0x18) + 4) == ppiVar8) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar12;
  }
  else if ((int **)*ppiVar11 == ppiVar8) {
    *ppiVar11 = (int *)ppiVar12;
  }
  else {
    ppiVar11[2] = (int *)ppiVar12;
  }
  if ((int **)**(int ***)(param_1 + 0x18) == ppiVar8) {
    ppiVar10 = ppiVar11;
    if (*(char *)((int)ppiVar12 + 0x15) == '\0') {
      cVar2 = *(char *)((int)*ppiVar12 + 0x15);
      ppiVar3 = (int **)*ppiVar12;
      ppiVar10 = ppiVar12;
      while (ppiVar6 = ppiVar3, cVar2 == '\0') {
        ppiVar3 = (int **)*ppiVar6;
        cVar2 = *(char *)((int)ppiVar3 + 0x15);
        ppiVar10 = ppiVar6;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar10;
  }
  iVar4 = *(int *)(param_1 + 0x18);
  if (*(int ***)(iVar4 + 8) == ppiVar8) {
    if (*(char *)((int)ppiVar12 + 0x15) == '\0') {
      uVar9 = FUN_005dc600();
      *(undefined4 *)(iVar4 + 8) = uVar9;
    }
    else {
      *(int ***)(iVar4 + 8) = ppiVar11;
    }
  }
LAB_005dc1b2:
  if (*(char *)(ppiVar8 + 5) == '\x01') {
    if (ppiVar12 != *(int ***)(*(int *)(param_1 + 0x18) + 4)) {
      do {
        ppiVar10 = ppiVar11;
        if (*(char *)(ppiVar12 + 5) != '\x01') break;
        ppiVar11 = (int **)*ppiVar10;
        if (ppiVar12 == ppiVar11) {
          ppiVar11 = (int **)ppiVar10[2];
          if (*(char *)(ppiVar11 + 5) == '\0') {
            *(undefined *)(ppiVar11 + 5) = 1;
            *(undefined *)(ppiVar10 + 5) = 0;
            FUN_005dc720(param_1);
            ppiVar11 = (int **)ppiVar10[2];
          }
          if (*(char *)((int)ppiVar11 + 0x15) == '\0') {
            if ((*(char *)(*ppiVar11 + 5) != '\x01') || (*(char *)(ppiVar11[2] + 5) != '\x01')) {
              if (*(char *)(ppiVar11[2] + 5) == '\x01') {
                *(undefined *)(*ppiVar11 + 5) = 1;
                *(undefined *)(ppiVar11 + 5) = 0;
                FUN_005e2c70(param_1);
                ppiVar11 = (int **)ppiVar10[2];
              }
              *(undefined *)(ppiVar11 + 5) = *(undefined *)(ppiVar10 + 5);
              *(undefined *)(ppiVar10 + 5) = 1;
              *(undefined *)(ppiVar11[2] + 5) = 1;
              FUN_005dc720(param_1);
              break;
            }
LAB_005dc285:
            *(undefined *)(ppiVar11 + 5) = 0;
          }
        }
        else {
          if (*(char *)(ppiVar11 + 5) == '\0') {
            *(undefined *)(ppiVar11 + 5) = 1;
            *(undefined *)(ppiVar10 + 5) = 0;
            FUN_005e2c70(param_1);
            ppiVar11 = (int **)*ppiVar10;
          }
          if (*(char *)((int)ppiVar11 + 0x15) == '\0') {
            if ((*(char *)(ppiVar11[2] + 5) == '\x01') && (*(char *)(*ppiVar11 + 5) == '\x01'))
            goto LAB_005dc285;
            if (*(char *)(*ppiVar11 + 5) == '\x01') {
              *(undefined *)(ppiVar11[2] + 5) = 1;
              *(undefined *)(ppiVar11 + 5) = 0;
              FUN_005dc720(param_1);
              ppiVar11 = (int **)*ppiVar10;
            }
            *(undefined *)(ppiVar11 + 5) = *(undefined *)(ppiVar10 + 5);
            *(undefined *)(ppiVar10 + 5) = 1;
            *(undefined *)(*ppiVar11 + 5) = 1;
            FUN_005e2c70(param_1);
            break;
          }
        }
        ppiVar11 = (int **)ppiVar10[1];
        ppiVar12 = ppiVar10;
      } while (ppiVar10 != *(int ***)(*(int *)(param_1 + 0x18) + 4));
    }
    *(undefined *)(ppiVar12 + 5) = 1;
  }
  piVar5 = ppiVar8[4];
  if (piVar5 != (int *)0x0) {
    LOCK();
    iVar4 = piVar5[2] + -1;
    piVar5[2] = iVar4;
    UNLOCK();
    if (iVar4 == 0) {
      (**(code **)(*piVar5 + 8))();
    }
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(ppiVar8);
}



void __thiscall FUN_005dc340(int **param_1_00,undefined4 *param_1,char param_2)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int **ppiVar7;
  int *piVar8;
  int *piVar9;
  undefined4 *unaff_EDI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_54 [4];
  undefined local_50;
  undefined4 local_40;
  undefined4 local_3c;
  undefined **local_38 [3];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [4];
  undefined local_28;
  undefined4 local_18;
  undefined4 local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00c1d150;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (0x1ffffffd < (uint)unaff_EDI[7]) {
    param_1_00 = (int **)&DAT_0000000f;
    local_3c = 0xf;
    local_40 = 0;
    local_50 = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_54,"map/set<T> too long",0x13);
    local_4 = 0;
    FUN_00a3f1a9();
    local_4._0_1_ = 1;
    local_38[0] = std::logic_error::vftable;
    local_14 = 0xf;
    local_18 = 0;
    local_28 = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_2c,local_54,0,0xffffffff);
    local_4 = (uint)local_4._1_3_ << 8;
    local_38[0] = std::length_error::vftable;
    __CxxThrowException_8(local_38,&DAT_03115554);
  }
  piVar5 = (int *)FUN_005dc770(unaff_EDI[6],param_1_00,unaff_EDI[6]);
  unaff_EDI[7] = unaff_EDI[7] + 1;
  if (param_1_00 == (int **)unaff_EDI[6]) {
    ((int **)unaff_EDI[6])[1] = piVar5;
    *(int **)unaff_EDI[6] = piVar5;
    iVar6 = unaff_EDI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar5;
      if (param_1_00 == *(int ***)(int **)unaff_EDI[6]) {
        *(int **)unaff_EDI[6] = piVar5;
      }
      goto LAB_005dc434;
    }
    param_1_00[2] = piVar5;
    iVar6 = unaff_EDI[6];
    if (param_1_00 != *(int ***)(iVar6 + 8)) goto LAB_005dc434;
  }
  *(int **)(iVar6 + 8) = piVar5;
LAB_005dc434:
  cVar1 = *(char *)(piVar5[1] + 0x14);
  piVar9 = piVar5;
  do {
    if (cVar1 != '\0') {
      *(undefined *)(*(int *)(unaff_EDI[6] + 4) + 0x14) = 1;
      uVar4 = *unaff_EDI;
      param_1[1] = piVar5;
      *param_1 = uVar4;
      ExceptionList = local_c;
      return;
    }
    ppiVar7 = (int **)(piVar9 + 1);
    piVar2 = *ppiVar7;
    ppiVar3 = (int **)piVar2[1];
    if (piVar2 == *ppiVar3) {
      piVar8 = ppiVar3[2];
      if (*(char *)(piVar8 + 5) == '\0') {
LAB_005dc488:
        *(undefined *)(piVar2 + 5) = 1;
        *(undefined *)(piVar8 + 5) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x14) = 0;
        piVar9 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar9 == (int *)piVar2[2]) {
          FUN_005dc720(unaff_EDI);
          piVar9 = piVar2;
        }
        *(undefined *)(piVar9[1] + 0x14) = 1;
        *(undefined *)(*(int *)(piVar9[1] + 4) + 0x14) = 0;
        FUN_005e2c70(unaff_EDI);
      }
    }
    else {
      piVar8 = *ppiVar3;
      if (*(char *)(piVar8 + 5) == '\0') goto LAB_005dc488;
      if (piVar9 == (int *)*piVar2) {
        FUN_005e2c70(unaff_EDI);
        piVar9 = piVar2;
      }
      *(undefined *)(piVar9[1] + 0x14) = 1;
      *(undefined *)(*(int *)(piVar9[1] + 4) + 0x14) = 0;
      FUN_005dc720(unaff_EDI);
    }
    cVar1 = *(char *)(piVar9[1] + 0x14);
  } while( true );
}



void FUN_005dc500(void)

{
  int iVar1;
  char cVar2;
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  
  *unaff_ESI = 0;
  iVar1 = unaff_EDI[1];
  unaff_ESI[1] = iVar1;
  if (iVar1 != 0) {
    cVar2 = FUN_0043d41e();
    if (cVar2 == '\0') {
      unaff_ESI[1] = 0;
    }
  }
  if (unaff_ESI[1] != 0) {
    *unaff_ESI = *unaff_EDI;
  }
  return;
}



void __fastcall FUN_005dc530(undefined *param_1)

{
  int iVar1;
  
  *param_1 = 0;
  iVar1 = 7;
  do {
    iVar1 = iVar1 + -1;
    *(undefined4 *)(param_1 + iVar1 * 4 + 8) = 0xffffffff;
  } while (-1 < iVar1);
  return;
}



undefined4 * __thiscall FUN_005dc550(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *local_18;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c1a2c0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  local_18 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)param_1 + 0x15) == '\0') {
    puVar1 = (undefined4 *)FUN_005dc680(local_18,param_2,local_18,*(undefined *)(param_1 + 5));
    if (*(char *)((int)local_18 + 0x15) != '\0') {
      local_18 = puVar1;
    }
    local_8 = 0;
    uVar2 = FUN_005dc550(*param_1,puVar1);
    *puVar1 = uVar2;
    uVar2 = FUN_005dc550(param_1[2],puVar1);
    puVar1[2] = uVar2;
  }
  ExceptionList = local_10;
  return local_18;
}



void Catch_All_005dc5ea(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_0082c0a0(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005dc600(void)

{
  char cVar1;
  int iVar2;
  int in_EAX;
  
  iVar2 = *(int *)(in_EAX + 8);
  cVar1 = *(char *)(iVar2 + 0x15);
  while (cVar1 == '\0') {
    iVar2 = *(int *)(iVar2 + 8);
    cVar1 = *(char *)(iVar2 + 0x15);
  }
  return;
}



void FUN_005dc620(void)

{
  char cVar1;
  int *piVar2;
  int **in_EAX;
  
  piVar2 = *in_EAX;
  cVar1 = *(char *)((int)piVar2 + 0x15);
  while (cVar1 == '\0') {
    piVar2 = (int *)*piVar2;
    cVar1 = *(char *)((int)piVar2 + 0x15);
  }
  return;
}



void FUN_005dc640(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_005dcde0();
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 5) = 1;
  *(undefined *)((int)puVar1 + 0x15) = 0;
  return;
}



void FUN_005dc680(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined param_4)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *unaff_ESI;
  
  puVar2 = (undefined4 *)FUN_005dcde0();
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = param_1;
    puVar2[1] = param_2;
    puVar2[2] = param_3;
    puVar2[3] = *unaff_ESI;
    iVar1 = unaff_ESI[1];
    puVar2[4] = iVar1;
    if (iVar1 != 0) {
      LOCK();
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
      UNLOCK();
    }
    *(undefined *)(puVar2 + 5) = param_4;
    *(undefined *)((int)puVar2 + 0x15) = 0;
  }
  return;
}



void FUN_005dc6d0(int param_1)

{
  int *piVar1;
  int iVar2;
  
  if (*(char *)(param_1 + 0x15) == '\0') {
    FUN_005dc6d0(*(undefined4 *)(param_1 + 8));
    piVar1 = *(int **)(param_1 + 0x10);
    if (piVar1 != (int *)0x0) {
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __thiscall FUN_005dc720(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x15) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
    *ppiVar1 = param_1_00;
    param_1_00[1] = (int)ppiVar1;
    return;
  }
  ppiVar2 = (int **)param_1_00[1];
  if (param_1_00 == *ppiVar2) {
    *ppiVar2 = (int *)ppiVar1;
    *ppiVar1 = param_1_00;
    param_1_00[1] = (int)ppiVar1;
    return;
  }
  ppiVar2[2] = (int *)ppiVar1;
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



void FUN_005dc770(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)FUN_005dcde0();
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = param_1;
    puVar2[1] = param_2;
    puVar2[2] = param_3;
    puVar2[3] = *in_EAX;
    iVar1 = in_EAX[1];
    puVar2[4] = iVar1;
    if (iVar1 != 0) {
      LOCK();
      *(int *)(iVar1 + 8) = *(int *)(iVar1 + 8) + 1;
      UNLOCK();
    }
    *(undefined *)(puVar2 + 5) = 0;
    *(undefined *)((int)puVar2 + 0x15) = 0;
  }
  return;
}



void FUN_005dc7c0(void)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x15) == '\0') {
    iVar3 = *piVar2;
    if (*(char *)(iVar3 + 0x15) == '\0') {
      cVar1 = *(char *)(*(int *)(iVar3 + 8) + 0x15);
      iVar4 = *(int *)(iVar3 + 8);
      while (cVar1 == '\0') {
        cVar1 = *(char *)(*(int *)(iVar4 + 8) + 0x15);
        iVar3 = iVar4;
        iVar4 = *(int *)(iVar4 + 8);
      }
      unaff_ESI[1] = iVar3;
      return;
    }
    piVar2 = (int *)piVar2[1];
    cVar1 = *(char *)((int)piVar2 + 0x15);
    while ((cVar1 == '\0' && (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
      piVar2 = (int *)piVar2[1];
      cVar1 = *(char *)((int)piVar2 + 0x15);
    }
    if (*(char *)(unaff_ESI[1] + 0x15) != '\0') {
      FUN_00a3fb10();
      return;
    }
    unaff_ESI[1] = (int)piVar2;
  }
  else {
    iVar3 = piVar2[2];
    unaff_ESI[1] = iVar3;
    if (*(char *)(iVar3 + 0x15) != '\0') {
      FUN_00a3fb10();
      return;
    }
  }
  return;
}



undefined4 * __thiscall FUN_005dc840(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c720;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WCADA5F45>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005dc8b9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_005dc8e0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005dd130(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_005dc940(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  uint uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_ESI;
  undefined4 local_30;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [4];
  uint local_28;
  undefined4 local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c15c98;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_30;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_30 = 0;
  local_14 = 0xf;
  local_18 = 0;
  local_28 = local_28 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_2c,param_1,0,0xffffffff);
  local_4 = 0;
  *(undefined4 *)(unaff_ESI + 0x18) = 0xf;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  unaff_ESI[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (unaff_ESI,local_2c,0,0xffffffff);
  if (0xf < local_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_28,uVar1);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_005dc9f0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c21f6b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005dd1c0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005dca50(int *param_1,int param_2,int *param_3,int param_4)

{
  int iVar1;
  undefined local_c [12];
  
  while( true ) {
    if ((param_1 == (int *)0x0) || (param_1 != param_3)) {
      FUN_00a3fb10();
    }
    if (param_2 == param_4) break;
    if (param_1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar1 = 0;
    }
    else {
      iVar1 = *param_1;
    }
    if (param_2 == *(int *)(iVar1 + 0x18)) {
      FUN_00a3fb10();
    }
    FUN_005db460(local_c,param_2 + 0xc);
    FUN_005e2d90();
  }
  return;
}



undefined4 FUN_005dcad0(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int iVar1;
  int *param_9;
  undefined local_38 [44];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c272fa;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 2;
  if (param_9 != (int *)0x0) {
    LOCK();
    param_9[1] = param_9[1] + 1;
    UNLOCK();
  }
  if (param_4 != (int *)0x0) {
    LOCK();
    param_4[1] = param_4[1] + 1;
    UNLOCK();
  }
  FUN_005dceb0(local_38,param_2);
  FUN_005dce40();
  FUN_005db120();
  local_4._0_1_ = 1;
  if (param_4 != (int *)0x0) {
    LOCK();
    iVar1 = param_4[1] + -1;
    param_4[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*param_4 + 4))();
      LOCK();
      iVar1 = param_4[2] + -1;
      param_4[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*param_4 + 8))();
      }
    }
  }
  local_4 = (uint)local_4._1_3_ << 8;
  if (param_9 != (int *)0x0) {
    LOCK();
    iVar1 = param_9[1] + -1;
    param_9[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*param_9 + 4))();
      LOCK();
      iVar1 = param_9[2] + -1;
      param_9[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*param_9 + 8))();
      }
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_005dcc60(int param_1,int *param_2,int param_3,int param_4,undefined4 param_5,int param_6,
                 undefined4 param_7,undefined4 param_8,int param_9,int param_10)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  int param_12;
  int param_13;
  int local_20;
  int *local_1c;
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2af7c;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  local_4 = 0;
  while( true ) {
    if ((param_3 == 0) || (param_3 != param_12)) {
      FUN_00a3fb10(uVar3);
    }
    piVar2 = param_2;
    if (param_4 == param_13) break;
    local_20 = param_1;
    local_1c = param_2;
    if (param_2 != (int *)0x0) {
      LOCK();
      param_2[2] = param_2[2] + 1;
      UNLOCK();
    }
    local_4._0_1_ = 2;
    FUN_005db690(local_18,&local_20);
    local_4 = CONCAT31(local_4._1_3_,1);
    if (piVar2 != (int *)0x0) {
      LOCK();
      iVar1 = piVar2[2] + -1;
      piVar2[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*piVar2 + 8))();
      }
    }
    FUN_005e2d90();
    while( true ) {
      FUN_005db910(&param_1);
      if ((param_3 == 0) || (param_3 != param_9)) {
        FUN_00a3fb10();
      }
      if ((param_4 == param_10) || (param_6 != param_1)) break;
      FUN_005e2d90();
    }
  }
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005db120(&param_1);
  local_4 = 0xffffffff;
  FUN_005db120(&stack0x00000030);
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_005dcd90(uint param_1)

{
  uint extraout_ECX;
  char *local_10;
  undefined **local_c [3];
  
  if ((uint)(0xffffffff / (ulonglong)param_1) < 0x20) {
    local_10 = (char *)0x0;
    std::exception::exception((exception *)local_c,&local_10);
    local_c[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_c,&DAT_031153a4);
    param_1 = extraout_ECX;
  }
  operator_new(param_1 << 5);
  return;
}



void __fastcall FUN_005dcde0(uint param_1)

{
  uint extraout_ECX;
  char *local_10;
  undefined **local_c [3];
  
  if ((uint)(0xffffffff / (ulonglong)param_1) < 0x18) {
    local_10 = (char *)0x0;
    std::exception::exception((exception *)local_c,&local_10);
    local_c[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_c,&DAT_031153a4);
    param_1 = extraout_ECX;
  }
  operator_new(param_1 * 0x18);
  return;
}



void __fastcall FUN_005dce40(undefined4 *param_1)

{
  int iVar1;
  undefined4 *in_EAX;
  
  *in_EAX = *param_1;
  iVar1 = param_1[1];
  in_EAX[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  in_EAX[2] = param_1[2];
  in_EAX[3] = param_1[3];
  in_EAX[4] = param_1[4];
  in_EAX[5] = param_1[5];
  in_EAX[6] = param_1[6];
  iVar1 = param_1[7];
  in_EAX[7] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  in_EAX[8] = param_1[8];
  in_EAX[9] = param_1[9];
  in_EAX[10] = param_1[10];
  return;
}



undefined4 *
FUN_005dceb0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,int *param_9
            ,undefined4 param_10,undefined4 param_11,undefined4 param_12)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c272b3;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = param_3;
  param_1[1] = param_4;
  if (param_4 != (int *)0x0) {
    LOCK();
    param_4[1] = param_4[1] + 1;
    UNLOCK();
  }
  param_1[2] = param_5;
  param_1[3] = param_6;
  param_1[4] = param_7;
  param_1[5] = param_2;
  param_1[6] = param_8;
  param_1[7] = param_9;
  if (param_9 != (int *)0x0) {
    LOCK();
    param_9[1] = param_9[1] + 1;
    UNLOCK();
  }
  param_1[8] = param_10;
  param_1[9] = param_11;
  param_1[10] = param_12;
  local_4._0_1_ = 3;
  local_4._1_3_ = 0;
  FUN_005dcfe0(uVar2);
  local_4 = (uint)local_4._1_3_ << 8;
  if (param_4 != (int *)0x0) {
    LOCK();
    iVar1 = param_4[1] + -1;
    param_4[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*param_4 + 4))();
      LOCK();
      iVar1 = param_4[2] + -1;
      param_4[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*param_4 + 8))();
      }
    }
  }
  local_4 = 0xffffffff;
  if (param_9 != (int *)0x0) {
    LOCK();
    iVar1 = param_9[1] + -1;
    param_9[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*param_9 + 4))();
      LOCK();
      iVar1 = param_9[2] + -1;
      param_9[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*param_9 + 8))();
      }
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_005dcfe0(void)

{
  int *unaff_EDI;
  
  while( true ) {
    if ((unaff_EDI[2] == 0) || (unaff_EDI[2] != unaff_EDI[8])) {
      FUN_00a3fb10();
    }
    if ((unaff_EDI[3] == unaff_EDI[9]) || (unaff_EDI[5] != *unaff_EDI)) break;
    FUN_005e2d90();
    FUN_005db910(unaff_EDI);
  }
  return;
}



void FUN_005dd020(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_005dd7c0();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_005dd130(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c1a2a0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_boost::xpressive::basic_regex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005dd1a9(void)

{
  code *pcVar1;
  
  FUN_005dd9b0();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_005dd1c0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005dd9d0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_005dd220(void)

{
  int in_EAX;
  int unaff_EDI;
  
  if (in_EAX != unaff_EDI) {
    do {
      if (0xf < *(uint *)(in_EAX + 0x18)) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(in_EAX + 4));
      }
      *(undefined4 *)(in_EAX + 0x18) = 0xf;
      *(undefined4 *)(in_EAX + 0x14) = 0;
      *(undefined *)(in_EAX + 4) = 0;
      in_EAX = in_EAX + 0x20;
    } while (in_EAX != unaff_EDI);
  }
  return;
}



void FUN_005dd260(void)

{
  int in_EAX;
  undefined4 *puVar1;
  
  if (*(facet **)(in_EAX + 0x200) != (facet *)0x0) {
    puVar1 = (undefined4 *)std::locale::facet::_Decref(*(facet **)(in_EAX + 0x200));
    if (puVar1 != (undefined4 *)0x0) {
      (**(code **)*puVar1)(1);
    }
  }
  return;
}



int FUN_005dd280(int param_1,int *param_2)

{
  int iVar1;
  _Locimp *p_Var2;
  int iVar3;
  undefined4 *puVar4;
  _Lockit local_14 [4];
  facet *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c21f3e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  p_Var2 = std::locale::_Init();
  *(_Locimp **)(param_1 + 0x200) = p_Var2;
  iVar3 = FUN_008238c4();
  std::_Lockit::_Lockit(local_14,0);
  if (*(int *)(iVar3 + 4) != -1) {
    *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1;
  }
  FUN_00823810();
  local_10 = (facet *)&stack0xffffffdc;
  local_4 = 0;
  iVar3 = *param_2;
  std::_Lockit::_Lockit((_Lockit *)&param_2,0);
  iVar1 = *(int *)(iVar3 + 4);
  if (iVar1 != -1) {
    *(int *)(iVar3 + 4) = iVar1 + 1;
  }
  FUN_00823810();
  FUN_005dd3e0(&local_10);
  if (local_10 != (facet *)0x0) {
    puVar4 = (undefined4 *)std::locale::facet::_Decref(local_10);
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)();
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_005dd350(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  int in_EAX;
  int unaff_EDI;
  
  FUN_005db640();
  uVar3 = *(undefined4 *)(unaff_EDI + 0x4c);
  *(undefined4 *)(unaff_EDI + 0x4c) = *(undefined4 *)(in_EAX + 0x4c);
  *(undefined4 *)(in_EAX + 0x4c) = uVar3;
  uVar3 = *(undefined4 *)(unaff_EDI + 0x50);
  *(undefined4 *)(unaff_EDI + 0x50) = *(undefined4 *)(in_EAX + 0x50);
  *(undefined4 *)(in_EAX + 0x50) = uVar3;
  uVar3 = *(undefined4 *)(unaff_EDI + 0x54);
  *(undefined4 *)(unaff_EDI + 0x54) = *(undefined4 *)(in_EAX + 0x54);
  *(undefined4 *)(in_EAX + 0x54) = uVar3;
  FUN_005dd4b0();
  puVar1 = (undefined4 *)(in_EAX + 0x70);
  puVar2 = (undefined4 *)(unaff_EDI + 0x70);
  if (puVar2 != puVar1) {
    uVar3 = *puVar2;
    *puVar2 = *puVar1;
    *puVar1 = uVar3;
  }
  puVar1 = (undefined4 *)(in_EAX + 0x74);
  puVar2 = (undefined4 *)(unaff_EDI + 0x74);
  if (puVar2 != puVar1) {
    uVar3 = *puVar2;
    *puVar2 = *puVar1;
    *puVar1 = uVar3;
  }
  return;
}



void __fastcall FUN_005dd3c0(int param_1)

{
  int *piVar1;
  
  piVar1 = *(int **)(param_1 + 0xc);
  if (piVar1 != (int *)0x0) {
    if (*piVar1 != 0) {
      FUN_005da010();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(piVar1);
  }
  return;
}



int * __thiscall FUN_005dd3e0(int param_1_00,int *param_1,facet *param_2)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  _Lockit local_14 [4];
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c21f11;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  local_10 = 0;
  local_4 = 1;
  iVar1 = *(int *)(param_1_00 + 0x200);
  *param_1 = iVar1;
  std::_Lockit::_Lockit(local_14,0);
  if (*(int *)(iVar1 + 4) != -1) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  FUN_00823810(uVar2);
  local_10 = 1;
  FUN_005e3340(&param_2);
  uVar3 = FUN_00422a40(param_1_00 + 0x200);
  *(undefined4 *)(param_1_00 + 0x204) = uVar3;
  FUN_005dd510();
  local_4 = local_4 & 0xffffff00;
  if (param_2 != (facet *)0x0) {
    puVar4 = (undefined4 *)std::locale::facet::_Decref(param_2);
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)(1);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005dd4b0(undefined4 param_1,int *param_2)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  int iVar5;
  int *in_EAX;
  int *piVar6;
  
  if (in_EAX != param_2) {
    puVar2 = (undefined4 *)*in_EAX;
    *in_EAX = *param_2;
    *param_2 = (int)puVar2;
    puVar3 = (undefined4 *)*in_EAX;
    if (puVar3 != puVar2) {
      uVar4 = *puVar3;
      *puVar3 = *puVar2;
      *puVar2 = uVar4;
    }
    piVar6 = param_2 + 3;
    piVar1 = in_EAX + 3;
    if (piVar1 != piVar6) {
      iVar5 = *piVar1;
      *piVar1 = *piVar6;
      *piVar6 = iVar5;
    }
    piVar6 = param_2 + 4;
    piVar1 = in_EAX + 4;
    if (piVar1 != piVar6) {
      iVar5 = *piVar1;
      *piVar1 = *piVar6;
      *piVar6 = iVar5;
    }
    param_2 = param_2 + 5;
    piVar6 = in_EAX + 5;
    if (piVar6 != param_2) {
      iVar5 = *piVar6;
      *piVar6 = *param_2;
      *param_2 = iVar5;
    }
  }
  return;
}



void __fastcall FUN_005dd510(undefined4 param_1)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 local_304 [64];
  undefined4 local_204 [128];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_304;
  iVar1 = 0;
  do {
    *(char *)((int)local_304 + iVar1) = (char)iVar1;
    iVar1 = iVar1 + 1;
  } while (iVar1 < 0x100);
  iVar1 = FUN_00422a40(param_1);
  iVar1 = *(int *)(iVar1 + 0x10);
  puVar2 = local_304;
  puVar3 = local_204;
  do {
    *(undefined2 *)puVar3 = *(undefined2 *)(iVar1 + (uint)*(byte *)puVar2 * 2);
    puVar2 = (undefined4 *)((int)puVar2 + 1);
    puVar3 = (undefined4 *)((int)puVar3 + 2);
  } while (puVar2 != local_204);
  puVar3 = local_204;
  puVar2 = unaff_EBX;
  for (iVar1 = 0x80; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar2 = *puVar3;
    puVar3 = puVar3 + 1;
    puVar2 = puVar2 + 1;
  }
  *(ushort *)((int)unaff_EBX + 0xbe) = *(ushort *)((int)unaff_EBX + 0xbe) | 0x4000;
  *(ushort *)(unaff_EBX + 0x10) = *(ushort *)(unaff_EBX + 0x10) | 0x2000;
  *(ushort *)((int)unaff_EBX + 0x12) = *(ushort *)((int)unaff_EBX + 0x12) | 0x2000;
  *(ushort *)(unaff_EBX + 5) = *(ushort *)(unaff_EBX + 5) | 0x1000;
  *(ushort *)((int)unaff_EBX + 0x1a) = *(ushort *)((int)unaff_EBX + 0x1a) | 0x1000;
  *(ushort *)(unaff_EBX + 6) = *(ushort *)(unaff_EBX + 6) | 0x1000;
  ___security_check_cookie_4();
  return;
}



void FUN_005dd5c0(int param_1)

{
  int iVar1;
  char cVar2;
  undefined4 uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int unaff_ESI;
  uint uVar7;
  
  if (unaff_ESI != param_1) {
    uVar6 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc) >> 5;
    if (uVar6 == 0) {
      FUN_005dd6e0();
      return;
    }
    iVar1 = *(int *)(unaff_ESI + 0xc);
    uVar4 = *(int *)(unaff_ESI + 0x10) - iVar1 >> 5;
    if (uVar6 <= uVar4) {
      FUN_005ddaf0(*(int *)(param_1 + 0xc),*(int *)(param_1 + 0x10),iVar1);
      FUN_005dd220(param_1);
      *(int *)(unaff_ESI + 0x10) =
           (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc) >> 5) * 0x20 +
           *(int *)(unaff_ESI + 0xc);
      return;
    }
    if (iVar1 == 0) {
      uVar7 = 0;
    }
    else {
      uVar7 = *(int *)(unaff_ESI + 0x14) - iVar1 >> 5;
    }
    if (uVar6 <= uVar7) {
      iVar5 = uVar4 * 0x20 + *(int *)(param_1 + 0xc);
      FUN_005ddaf0(*(int *)(param_1 + 0xc),iVar5,iVar1);
      uVar3 = FUN_005ddb20(iVar5,*(undefined4 *)(param_1 + 0x10));
      *(undefined4 *)(unaff_ESI + 0x10) = uVar3;
      return;
    }
    if (iVar1 != 0) {
      FUN_005dd220(param_1);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0xc));
    }
    iVar1 = *(int *)(param_1 + 0x10);
    iVar5 = *(int *)(param_1 + 0xc);
    *(undefined4 *)(unaff_ESI + 0xc) = 0;
    *(undefined4 *)(unaff_ESI + 0x10) = 0;
    *(undefined4 *)(unaff_ESI + 0x14) = 0;
    if (iVar1 - iVar5 >> 5 != 0) {
      cVar2 = FUN_005dafa0();
      if (cVar2 != '\0') {
        uVar3 = FUN_005ddb20(*(undefined4 *)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x10));
        *(undefined4 *)(unaff_ESI + 0x10) = uVar3;
      }
    }
  }
  return;
}



void FUN_005dd6e0(void)

{
  uint uVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 *in_EAX;
  
  uVar1 = in_EAX[4];
  if (uVar1 < (uint)in_EAX[3]) {
    FUN_00a3fb10();
  }
  uVar2 = in_EAX[3];
  uVar3 = *in_EAX;
  if ((uint)in_EAX[4] < uVar2) {
    FUN_00a3fb10();
  }
  FUN_005dd720(*in_EAX,uVar2,uVar3,uVar1);
  return;
}



void FUN_005dd720(undefined4 param_1,uint param_2,undefined4 param_3,uint param_4)

{
  int iVar1;
  int *unaff_EBX;
  int *unaff_ESI;
  
  *unaff_EBX = 0;
  if (((unaff_ESI == (int *)0x0) || (param_2 < (uint)unaff_ESI[3])) ||
     ((uint)unaff_ESI[4] < param_2)) {
    FUN_00a3fb10();
  }
  *unaff_EBX = *unaff_ESI;
  unaff_EBX[1] = param_2;
  if ((param_4 < (uint)unaff_ESI[3]) || ((uint)unaff_ESI[4] < param_4)) {
    FUN_00a3fb10();
  }
  if ((*unaff_EBX == 0) || (*unaff_EBX != *unaff_ESI)) {
    FUN_00a3fb10();
  }
  if (unaff_EBX[1] != param_4) {
    iVar1 = FUN_005ded30(unaff_ESI[4],param_1,param_1,0);
    FUN_005dd220(param_1);
    unaff_ESI[4] = iVar1;
  }
  return;
}



void FUN_005dd7c0(undefined4 *param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_414 [104];
  undefined4 uStack_3ac;
  undefined *puStack_3a8;
  undefined4 **ppuStack_3a4;
  undefined auStack_388 [4];
  undefined4 *local_384;
  undefined local_37d;
  undefined *local_37c;
  undefined local_378 [344];
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c341a3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_388;
  ExceptionList = &local_c;
  local_37c = auStack_414;
  local_384 = param_1;
  FUN_005da3d0(auStack_414);
  FUN_005da5d0();
  ppuStack_3a4 = (undefined4 **)0x5dd836;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_3a4 = (undefined4 **)0x5dd855;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_3a4 = (undefined4 **)0x5dd897;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_3a4 = (undefined4 **)0x5dd8c8;
  FUN_005dde60();
  ppuStack_3a4 = (undefined4 **)&local_37d;
  puStack_3a8 = local_378;
  local_4 = 0;
  uStack_3ac = 0x5dd8ec;
  FUN_005ddd40();
  local_4._0_1_ = 1;
  FUN_005deaa0();
  local_4._0_1_ = 3;
  ppuStack_3a4 = (undefined4 **)0x5dd911;
  FUN_005ddbb0();
  puStack_3a8 = (undefined *)0x5dd924;
  ppuStack_3a4 = &local_384;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_384 != (undefined4 *)0x0) {
    piVar4 = local_384 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_384 != (undefined4 *)0x0)) {
      ppuStack_3a4 = (undefined4 **)0x5dd966;
      (**(code **)*local_384)();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005dd9b0(void)

{
  int *unaff_EDI;
  
  if (unaff_EDI != (int *)0x0) {
    if (*unaff_EDI != 0) {
      FUN_005da010();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  return;
}



undefined4 * __thiscall FUN_005dd9d0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c21ed0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_boost::xpressive::detail::regex_impl<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005dda4b(void)

{
  code *pcVar1;
  
  FUN_005ded10();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



int __fastcall FUN_005dda60(int param_1_00,int param_2,int param_1)

{
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c15c70;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  local_8 = 0;
  for (; param_2 != param_1_00; param_2 = param_2 + 0x20) {
    FUN_005ded80();
    param_1 = param_1 + 0x20;
  }
  ExceptionList = local_10;
  return param_1;
}



int Catch_All_005ddab4(void)

{
  int iVar1;
  int unaff_EBP;
  int iVar2;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  for (iVar2 = *(int *)(unaff_EBP + -0x14); iVar2 != iVar1; iVar2 = iVar2 + 0x20) {
    FUN_005ddc20();
  }
  __CxxThrowException_8(0,0);
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return iVar2;
}



void FUN_005ddaf0(undefined4 param_1,undefined4 param_2)

{
  FUN_005ded30(param_2,param_2,param_2,0);
  return;
}



void __fastcall
FUN_005ddb20(undefined4 param_1_00,undefined4 param_2_00,undefined4 param_1,undefined4 param_2)

{
  FUN_005df0d0(param_2_00,param_2,0);
  return;
}



void FUN_005ddb50(void)

{
  int *piVar1;
  int iVar2;
  int in_EAX;
  undefined4 *puVar3;
  
  if (*(facet **)(in_EAX + 0x208) != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(*(facet **)(in_EAX + 0x208));
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  piVar1 = *(int **)(in_EAX + 4);
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
                    // WARNING: Could not recover jumptable at 0x005ddba0. Too many branches
                    // WARNING: Treating indirect jump as call
        (**(code **)(*piVar1 + 8))();
        return;
      }
    }
  }
  return;
}



void FUN_005ddbb0(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c27268;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005ddc80(param_1 + 0x28);
  if (0xf < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4),uVar1);
  }
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return;
}



void FUN_005ddc20(void)

{
  int unaff_ESI;
  
  if (0xf < *(uint *)(unaff_ESI + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 4));
  }
  *(undefined4 *)(unaff_ESI + 0x18) = 0xf;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined *)(unaff_ESI + 4) = 0;
  return;
}



void FUN_005ddc50(void)

{
  int in_EAX;
  
  FUN_005ddc80(in_EAX + 8);
  return;
}



void FUN_005ddc60(void)

{
  int in_EAX;
  
  FUN_005ddc80(in_EAX + 4);
  return;
}



void FUN_005ddc70(void)

{
  undefined4 in_EAX;
  
  FUN_005ddc80(in_EAX);
  return;
}



void FUN_005ddc80(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005da4f0(param_1 + 0x80);
  local_4 = 0xffffffff;
  FUN_005da4f0(param_1);
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_005ddce0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x005ddceb. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0x20c) + 8))();
  return;
}



void __fastcall FUN_005ddcf0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x005ddcfb. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0x20c) + 0x10))();
  return;
}



void __thiscall FUN_005ddd00(int param_1_00,undefined4 param_1)

{
  FUN_005ddfb0(param_1_00 + 8,param_1);
  return;
}



undefined4 FUN_005ddd20(char param_1,char param_2,char param_3)

{
  if ((param_1 <= param_3) && (param_3 <= param_2)) {
    return 1;
  }
  return 0;
}



undefined4 __fastcall
FUN_005ddd40(undefined4 param_1_00,undefined4 *param_2_00,undefined4 param_1,undefined *param_2)

{
  undefined local_151;
  undefined4 local_150;
  undefined4 local_14c;
  undefined local_148 [4];
  undefined local_144 [312];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c3415e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_150 = 0;
  local_151 = *param_2;
  local_14c = param_1;
  FUN_005de110(&local_151);
  local_4 = 1;
  FUN_005de150(*param_2_00,local_148);
  local_150 = 1;
  local_4 = local_4 & 0xffffff00;
  FUN_005ddc80(local_144);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005dde00(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_005da4f0(iVar1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



undefined4 * __thiscall FUN_005dde20(undefined4 *param_1_00,byte param_1)

{
  undefined4 *puVar1;
  
  if ((facet *)param_1_00[0x82] != (facet *)0x0) {
    puVar1 = (undefined4 *)std::locale::facet::_Decref((facet *)param_1_00[0x82]);
    if (puVar1 != (undefined4 *)0x0) {
      (**(code **)*puVar1)(1);
    }
  }
  *param_1_00 = boost::xpressive::detail::traits<char>::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005dde60(undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = param_1;
  puVar3 = param_1;
  puVar4 = unaff_EBX;
  for (iVar2 = 0x80; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar4 = *puVar3;
    puVar3 = puVar3 + 1;
    puVar4 = puVar4 + 1;
  }
  iVar2 = param_1[0x80];
  unaff_EBX[0x80] = iVar2;
  std::_Lockit::_Lockit((_Lockit *)&param_1,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  unaff_EBX[0x81] = puVar1[0x81];
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_005ddec0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  undefined4 *puVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c27268;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar1 = (undefined4 *)(param_1 + 4);
  *(undefined *)puVar1 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,unaff_EDI,0,0xffffffff);
  if (0xf < *(uint *)(param_1 + 0x18)) {
    puVar1 = (undefined4 *)*puVar1;
  }
  *(undefined **)(param_1 + 0x1c) = (undefined *)((int)puVar1 + *(int *)(param_1 + 0x14));
  local_4 = 0;
  param_1[0x20] = unaff_EDI[0x20];
  FUN_005ddf50(param_1 + 0x24);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005ddf50(undefined4 *param_1)

{
  undefined4 *in_EAX;
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  *param_1 = *in_EAX;
  FUN_005de230(param_1 + 1);
  puVar2 = in_EAX + 0x42;
  puVar3 = param_1 + 0x42;
  for (iVar1 = 9; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar3 = *puVar2;
    puVar2 = puVar2 + 1;
    puVar3 = puVar3 + 1;
  }
  param_1[0x4b] = in_EAX[0x4b];
  param_1[0x4c] = in_EAX[0x4c];
  return param_1;
}



undefined4 __thiscall FUN_005ddfb0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  code *pcVar4;
  undefined4 unaff_ESI;
  undefined auStack_b0 [4];
  undefined4 local_ac;
  facet *local_a8;
  facet *local_a4;
  byte local_a0 [8];
  int local_98;
  undefined **appuStack_54 [14];
  void *pvStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2f296;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff48;
  ExceptionList = &local_14;
  local_ac = 0xffffffff;
  FUN_004222a0(3,1);
  local_c = 0;
  uVar2 = FUN_005de350(uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  FUN_005de2b0(&local_a8,uVar2);
  if ((local_a8 != (facet *)0x0) &&
     (puVar3 = (undefined4 *)std::locale::facet::_Decref(local_a8), puVar3 != (undefined4 *)0x0)) {
    (**(code **)*puVar3)(1);
  }
  local_c = local_c & 0xffffff00;
  if ((local_a4 != (facet *)0x0) &&
     (puVar3 = (undefined4 *)std::locale::facet::_Decref(local_a4), puVar3 != (undefined4 *)0x0)) {
    (**(code **)*puVar3)(1);
  }
  if (param_1_00 == 8) {
    pcVar4 = FUN_005e3320;
  }
  else {
    pcVar4 = (code *)&LAB_004150a2;
    if (param_1_00 != 0x10) {
      pcVar4 = (code *)&LAB_00415f49;
    }
  }
  (*pcVar4)((int)&local_98 + *(int *)(local_98 + 4));
  FUN_005e3200(param_2);
  FUN_0043fd3a(auStack_b0);
  if ((local_a0[*(int *)(local_a8 + 4)] & 6) != 0) {
    unaff_ESI = 0xffffffff;
  }
  local_14 = (void *)0xffffffff;
  FUN_00422340();
  appuStack_54[0] = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)appuStack_54);
  ExceptionList = pvStack_1c;
  return unaff_ESI;
}



void __thiscall FUN_005de110(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 unaff_ESI;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_c = *(undefined4 *)param_1_00[1];
  local_10 = *(undefined4 *)*param_1_00;
  local_8 = ((undefined4 *)param_1_00[1])[1];
  local_4 = local_10;
  FUN_005de380(unaff_ESI,&local_10,param_1);
  return;
}



void FUN_005de150(void)

{
  undefined local_280 [4];
  undefined local_27c [308];
  undefined local_148 [8];
  undefined local_140 [308];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c34109;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005ddf50(local_280);
  local_4 = 1;
  FUN_005de440(local_280);
  local_4._0_1_ = 2;
  FUN_005de470(local_148);
  local_4._0_1_ = 1;
  FUN_005ddc80(local_140);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005ddc80(local_27c);
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_005de230(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2f258;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1_00 + 0x78);
  *(undefined4 *)(param_1 + 0x7c) = *(undefined4 *)(param_1_00 + 0x7c);
  local_4 = 0;
  FUN_005da440(param_1 + 0x80);
  *(undefined4 *)(param_1 + 0xf8) = *(undefined4 *)(param_1_00 + 0xf8);
  *(undefined4 *)(param_1 + 0xfc) = *(undefined4 *)(param_1_00 + 0xfc);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_005de2b0(int param_1_00,undefined4 param_1,facet *param_2)

{
  facet *pfVar1;
  uint uVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  pfVar1 = param_2;
  puStack_8 = &LAB_00c12319;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e3140(param_1,param_2);
  local_4 = 0;
  if (*(int *)(param_1_00 + 0x28) != 0) {
    FUN_005de4e0(&param_2,pfVar1);
    if (param_2 != (facet *)0x0) {
      puVar3 = (undefined4 *)std::locale::facet::_Decref(param_2);
      if (puVar3 != (undefined4 *)0x0) {
        (**(code **)*puVar3)(1,uVar2);
      }
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_005de350(void)

{
  int iVar1;
  int in_EAX;
  int *unaff_EDI;
  _Lockit local_4 [4];
  
  iVar1 = *(int *)(in_EAX + 0x200);
  *unaff_EDI = iVar1;
  std::_Lockit::_Lockit(local_4,0);
  if (*(int *)(iVar1 + 4) != -1) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  FUN_00823810();
  return;
}



undefined4 FUN_005de380(undefined4 param_1)

{
  undefined4 unaff_EDI;
  undefined local_144 [312];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c340aa;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005de590(unaff_EDI);
  local_4 = 1;
  FUN_005de5d0(local_144);
  local_4 = local_4 & 0xffffff00;
  FUN_005ddc80(local_144);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005de440(void)

{
  undefined4 *in_EAX;
  undefined *unaff_ESI;
  
  *unaff_ESI = *(undefined *)*in_EAX;
  FUN_005ddf50(unaff_ESI + 4);
  return;
}



void FUN_005de470(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 unaff_ESI;
  undefined4 local_34 [2];
  undefined4 local_2c;
  uint local_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c34058;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_34[0] = 0;
  uVar1 = FUN_005e7cf0(DAT_0323f878 ^ (uint)local_34);
  local_4 = 0;
  FUN_005de620(unaff_ESI,uVar1,param_1);
  if (0xf < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return;
}



int * __thiscall FUN_005de4e0(int *param_1_00,int *param_1,undefined4 param_2)

{
  int iVar1;
  uint uVar2;
  _Lockit local_14 [4];
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c122d9;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  local_4 = 0;
  local_10 = (void *)0x0;
  iVar1 = *(int *)param_1_00[0xe];
  *param_1 = iVar1;
  std::_Lockit::_Lockit(local_14,0);
  if (*(int *)(iVar1 + 4) != -1) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  FUN_00823810(uVar2);
  local_4 = 0;
  local_10 = (void *)0x1;
  (**(code **)(*param_1_00 + 0x34))(param_2);
  FUN_005e3340(param_2);
  ExceptionList = local_10;
  return param_1;
}



void FUN_005de590(void)

{
  undefined4 in_EAX;
  undefined4 unaff_ESI;
  
  FUN_005de6c0(unaff_ESI,in_EAX);
  return;
}



void __fastcall FUN_005de5d0(int *param_1_00,uint *param_2,undefined4 param_1)

{
  uint *puVar1;
  uint *puVar2;
  undefined4 unaff_ESI;
  uint local_4;
  
  local_4 = *param_2;
  if (0 < (int)local_4) {
    puVar2 = (uint *)(*param_1_00 + 0x70);
    puVar1 = &local_4;
    if (local_4 <= *puVar2) {
      puVar1 = puVar2;
    }
    *puVar2 = *puVar1;
  }
  local_4 = *param_2;
  FUN_005de780(unaff_ESI,param_1);
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_005de620(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33cf8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar1 = (undefined4 *)(param_1 + 4);
  *(undefined *)puVar1 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,param_2,0,0xffffffff);
  if (0xf < *(uint *)(param_1 + 0x18)) {
    puVar1 = (undefined4 *)*puVar1;
  }
  *(undefined **)(param_1 + 0x1c) = (undefined *)((int)puVar1 + *(int *)(param_1 + 0x14));
  local_4 = 0;
  param_1[0x20] = *param_3;
  FUN_005ddf50(param_1 + 0x24);
  ExceptionList = local_c;
  return param_1;
}



int FUN_005de6c0(int param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined local_134 [296];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3402a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = FUN_005e98a0(local_134,param_2);
  local_4 = 1;
  FUN_005de230(param_1);
  puVar3 = (undefined4 *)(iVar1 + 0x104);
  puVar4 = (undefined4 *)(param_1 + 0x104);
  for (iVar2 = 9; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar4 = *puVar3;
    puVar3 = puVar3 + 1;
    puVar4 = puVar4 + 1;
  }
  *(undefined4 *)(param_1 + 0x128) = *unaff_EBX;
  *(undefined4 *)(param_1 + 300) = unaff_EBX[1];
  local_4 = local_4 & 0xffffff00;
  FUN_005ddc80(local_134);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005de780(undefined4 *param_1,int param_2)

{
  undefined4 *in_EAX;
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  *param_1 = *in_EAX;
  FUN_005de230(param_1 + 1);
  puVar2 = (undefined4 *)(param_2 + 0x104);
  puVar3 = param_1 + 0x42;
  for (iVar1 = 9; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar3 = *puVar2;
    puVar2 = puVar2 + 1;
    puVar3 = puVar3 + 1;
  }
  param_1[0x4b] = *(undefined4 *)(param_2 + 0x128);
  param_1[0x4c] = *(undefined4 *)(param_2 + 300);
  return param_1;
}



undefined4 FUN_005de7e0(undefined4 param_1)

{
  undefined local_98 [140];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c33fda;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005de890(DAT_0323f878 ^ (uint)&stack0xffffff58);
  local_4 = 1;
  FUN_005de8b0();
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_98);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005de890(undefined4 param_1)

{
  undefined4 in_EAX;
  undefined4 unaff_ESI;
  
  FUN_005ece10(unaff_ESI,param_1,in_EAX);
  return;
}



void __fastcall FUN_005de8b0(undefined4 param_1,undefined4 param_2)

{
  undefined4 in_EAX;
  undefined4 unaff_ESI;
  
  FUN_005de8d0(unaff_ESI,param_2,param_1,in_EAX);
  return;
}



undefined4 FUN_005de8d0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined local_8c [128];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33f8a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005de980(local_8c,param_2);
  local_4 = 1;
  FUN_005dea20(param_1,param_3);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_8c);
  ExceptionList = local_c;
  return param_1;
}



int FUN_005de980(int param_1)

{
  undefined4 *unaff_EBX;
  undefined local_84 [120];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3219a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff68);
  local_4 = 1;
  FUN_005da440(param_1);
  *(undefined4 *)(param_1 + 0x78) = *unaff_EBX;
  *(undefined4 *)(param_1 + 0x7c) = unaff_EBX[1];
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_84);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_005dea20(int param_1_00,int param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33f38;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1_00 + 0x78);
  *(undefined4 *)(param_1 + 0x7c) = *(undefined4 *)(param_1_00 + 0x7c);
  local_4 = 0;
  FUN_005da440(param_1 + 0x80);
  *(undefined4 *)(param_1 + 0xf8) = *(undefined4 *)(param_2 + 0x78);
  *(undefined4 *)(param_1 + 0xfc) = *(undefined4 *)(param_2 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005deaa0(void)

{
  void *pvVar1;
  int iVar2;
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d2fb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x160);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_005deea0(pvVar1);
  }
  *unaff_ESI = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return;
}



void FUN_005deb20(int **param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  int iVar3;
  int *piVar5;
  undefined4 *unaff_EBX;
  int unaff_retaddr;
  undefined *puStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined4 uStack_78;
  undefined uStack_73;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined uStack_64;
  undefined auStack_60 [4];
  undefined4 auStack_5c [9];
  int *local_38 [4];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  TypeDescriptor *local_14;
  undefined local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  int iVar4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c27233;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  local_38[0] = (int *)operator_new(4);
  if (local_38[0] == (int *)0x0) {
    local_38[0] = (int *)0x0;
  }
  else {
    *local_38[0] = (int)local_38;
  }
  local_28 = 0;
  local_24 = 0;
  local_20 = 0;
  local_1c = 0;
  local_14 = &boost::xpressive::cpp_regex_traits<char>::RTTI_Type_Descriptor;
  local_10 = 0;
  local_4 = 0;
  (**(code **)(**param_1 + 8))(local_38,uVar2);
  auStack_60[0] = 0;
  iVar4 = 7;
  do {
    iVar3 = iVar4 + -1;
    auStack_5c[iVar4] = 0;
    iVar4 = iVar3;
  } while (-1 < iVar3);
  puStack_84 = auStack_60;
  uStack_80 = 0;
  uStack_7c = 0;
  uStack_78 = 0;
  uStack_73 = 0;
  uStack_70 = 0;
  uStack_6c = 0;
  uStack_68 = 0;
  uStack_64 = local_14._0_1_;
  FUN_005e00f0();
  (**(code **)(**param_1 + 0xc))(&puStack_84);
  piVar5 = (int *)FUN_005df010(&stack0xffffff74,unaff_EBX);
  local_c._0_1_ = 1;
  iVar4 = *piVar5;
  if (iVar4 != 0) {
    LOCK();
    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
    UNLOCK();
  }
  puVar1 = *(undefined4 **)(unaff_retaddr + 0x54);
  *(int *)(unaff_retaddr + 0x54) = iVar4;
  if (puVar1 != (undefined4 *)0x0) {
    piVar5 = puVar1 + 1;
    LOCK();
    iVar4 = *piVar5;
    *piVar5 = iVar4 + -1;
    UNLOCK();
    if (((iVar4 + -1 == 0) && (piVar5 != (int *)0x0)) && (puVar1 != (undefined4 *)0x0)) {
      (**(code **)*puVar1)(1);
    }
  }
  local_c = (void *)((uint)local_c._1_3_ << 8);
  if (unaff_EBX != (undefined4 *)0x0) {
    piVar5 = unaff_EBX + 1;
    LOCK();
    iVar4 = *piVar5;
    *piVar5 = iVar4 + -1;
    UNLOCK();
    if (((iVar4 + -1 == 0) && (piVar5 != (int *)0x0)) && (unaff_EBX != (undefined4 *)0x0)) {
      (**(code **)*unaff_EBX)(1);
    }
  }
  piVar5 = *param_1;
  if (piVar5 != (int *)0x0) {
    LOCK();
    piVar5[1] = piVar5[1] + 1;
    UNLOCK();
  }
  puVar1 = *(undefined4 **)(unaff_retaddr + 0x4c);
  *(int **)(unaff_retaddr + 0x4c) = piVar5;
  if (puVar1 != (undefined4 *)0x0) {
    piVar5 = puVar1 + 1;
    LOCK();
    iVar4 = *piVar5;
    *piVar5 = iVar4 + -1;
    UNLOCK();
    if (((iVar4 + -1 == 0) && (piVar5 != (int *)0x0)) && (puVar1 != (undefined4 *)0x0)) {
      (**(code **)*puVar1)(1);
    }
  }
  FUN_005defb0();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(auStack_5c[7]);
}



void FUN_005ded10(void)

{
  int unaff_ESI;
  
  if (unaff_ESI != 0) {
    FUN_005da4f0(unaff_ESI);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  return;
}



int __thiscall
FUN_005ded30(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  int in_EAX;
  int iVar1;
  int iVar2;
  
  iVar1 = (int)param_1 - (int)param_1_00;
  if (param_1_00 != param_1) {
    iVar2 = in_EAX - (int)param_1_00;
    do {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (param_1_00 + iVar2,param_1_00,0,0xffffffff);
      *(undefined4 *)(param_1_00 + iVar2 + 0x1c) = *(undefined4 *)(param_1_00 + 0x1c);
      param_1_00 = param_1_00 + 0x20;
    } while (param_1_00 != param_1);
  }
  return (iVar1 >> 5) * 0x20 + in_EAX;
}



void FUN_005ded80(void)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_ESI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15c51;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if (unaff_ESI !=
      (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)0x0) {
    *(undefined4 *)(unaff_ESI + 0x18) = 0xf;
    *(undefined4 *)(unaff_ESI + 0x14) = 0;
    unaff_ESI[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0
    ;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (unaff_ESI,unaff_EDI,0,0xffffffff);
    *(undefined4 *)(unaff_ESI + 0x1c) = *(undefined4 *)(unaff_EDI + 0x1c);
  }
  ExceptionList = local_c;
  return;
}



void FUN_005dedf0(void)

{
  FUN_005df160(0);
  return;
}



void FUN_005dee10(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined local_c [12];
  
  piVar3 = (int *)FUN_005da1a0();
  puVar1 = (undefined4 *)*piVar3;
  FUN_005db210();
  FUN_005db460(local_c);
  uVar2 = *puVar1;
  FUN_005dca50(uVar2,*(undefined4 *)puVar1[6],uVar2);
  FUN_005df190();
  return;
}



void FUN_005dee80(void)

{
  undefined4 *in_EAX;
  
  FUN_005defb0();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*in_EAX);
}



undefined4 * FUN_005deea0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33f08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::string_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::alternate_matcher<struct_boost::xpressive::detail::alternates_list<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::alternate_end_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::xpressive::detail::alternates_list<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::alternate_end_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::fusion::nil>_>,struct_boost::xpressive::cpp_regex_traits<char>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>,struct_boost::xpressive::detail::matchable_ex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  FUN_005ddec0(param_1 + 2);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005def00(int param_1)

{
  FUN_005e02f0(param_1 + 0x28);
  return;
}



void __thiscall FUN_005def20(int param_1_00,undefined4 param_1)

{
  FUN_005e0f40(param_1,param_1_00 + 0x158);
  return;
}



undefined4 __thiscall FUN_005def40(undefined4 param_1_00,byte param_1)

{
  FUN_005def60(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005def60(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28958;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005ddbb0(param_1 + 2);
  *param_1 = boost::xpressive::detail::
             matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
             ::vftable;
  ExceptionList = local_c;
  return;
}



void FUN_005defb0(void)

{
  int iVar1;
  int unaff_ESI;
  
  iVar1 = *(int *)(unaff_ESI + 0x1c);
  while (iVar1 != 0) {
    if ((*(int *)(unaff_ESI + 0x1c) != 0) &&
       (iVar1 = *(int *)(unaff_ESI + 0x1c) + -1, *(int *)(unaff_ESI + 0x1c) = iVar1, iVar1 == 0)) {
      *(undefined4 *)(unaff_ESI + 0x18) = 0;
    }
    iVar1 = *(int *)(unaff_ESI + 0x1c);
  }
  iVar1 = *(int *)(unaff_ESI + 0x14);
  while (iVar1 != 0) {
    iVar1 = iVar1 + -1;
    if (*(int *)(*(int *)(unaff_ESI + 0x10) + iVar1 * 4) != 0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(*(int *)(unaff_ESI + 0x10) + iVar1 * 4));
    }
  }
  if (*(int *)(unaff_ESI + 0x10) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(int *)(unaff_ESI + 0x10));
  }
  *(undefined4 *)(unaff_ESI + 0x10) = 0;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  return;
}



int * FUN_005df010(int *param_1)

{
  void *pvVar1;
  int iVar2;
  int unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2e42b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(unaff_ESI + 4) == *(int *)(unaff_ESI + 8)) {
    FUN_005e0150(param_1);
  }
  else {
    pvVar1 = operator_new(0x130);
    local_4 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = FUN_005df2d0(pvVar1,*(undefined4 *)(unaff_ESI + 8),*(undefined *)(unaff_ESI + 0xc));
    }
    *param_1 = iVar2;
    if (iVar2 != 0) {
      LOCK();
      *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
      UNLOCK();
      ExceptionList = local_c;
      return param_1;
    }
  }
  ExceptionList = local_c;
  return param_1;
}



int __fastcall FUN_005df0d0(int param_1_00,int param_2,int param_1)

{
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c1a280;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  local_8 = 0;
  for (; param_2 != param_1_00; param_2 = param_2 + 0x20) {
    FUN_005ded80();
    param_1 = param_1 + 0x20;
  }
  ExceptionList = local_10;
  return param_1;
}



int Catch_All_005df124(void)

{
  int iVar1;
  int unaff_EBP;
  int iVar2;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  for (iVar2 = *(int *)(unaff_EBP + -0x14); iVar2 != iVar1; iVar2 = iVar2 + 0x20) {
    FUN_005ddc20();
  }
  __CxxThrowException_8(0,0);
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return iVar2;
}



void __fastcall FUN_005df160(undefined4 param_1)

{
  FUN_005e0250(param_1,0);
  return;
}



void FUN_005df190(void)

{
  undefined4 in_EAX;
  undefined4 unaff_ESI;
  
  FUN_005da1a0(in_EAX);
  FUN_005df1b0(unaff_ESI);
  return;
}



int __thiscall FUN_005df1b0(int *param_1_00,int param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  uint uVar3;
  int iVar4;
  undefined local_50 [68];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c27202;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  FUN_005da3d0(param_1);
  local_4 = 0;
  iVar4 = *(int *)(*param_1_00 + 0x4c);
  if (iVar4 != 0) {
    LOCK();
    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(param_1 + 0x4c);
  *(int *)(param_1 + 0x4c) = iVar4;
  if (puVar2 != (undefined4 *)0x0) {
    piVar1 = puVar2 + 1;
    LOCK();
    iVar4 = *piVar1;
    *piVar1 = iVar4 + -1;
    UNLOCK();
    if (((iVar4 + -1 == 0) && (piVar1 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      (**(code **)*puVar2)(1,uVar3);
    }
  }
  iVar4 = *(int *)(*param_1_00 + 0x50);
  if (iVar4 != 0) {
    LOCK();
    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(param_1 + 0x50);
  *(int *)(param_1 + 0x50) = iVar4;
  if (puVar2 != (undefined4 *)0x0) {
    piVar1 = puVar2 + 1;
    LOCK();
    iVar4 = *piVar1;
    *piVar1 = iVar4 + -1;
    UNLOCK();
    if (((iVar4 + -1 == 0) && (piVar1 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      (**(code **)*puVar2)(1);
    }
  }
  *(undefined4 *)(param_1 + 0x70) = *(undefined4 *)(*param_1_00 + 0x70);
  *(undefined4 *)(param_1 + 0x74) = *(undefined4 *)(*param_1_00 + 0x74);
  if (*(int *)(param_1 + 0x4c) == 0) {
    iVar4 = FUN_005e33c0(local_50,0xd);
    local_4 = CONCAT31(local_4._1_3_,1);
    *(char **)(iVar4 + 0x30) =
         "__thiscall boost::xpressive::detail::regex_matcher<class std::_String_const_iterator<char,struct std::char_traits<char>,class std::allocator<char> > >::regex_matcher(const class boost::shared_ptr<struct boost::xpressive::detail::regex_impl<class std::_String_const_iterator<char,struct std::char_traits<char>,class std::allocator<char> > > > &)"
    ;
    *(char **)(iVar4 + 0x34) =
         "D:\\boost_1_53_0\\boost/xpressive/detail/core/matcher/regex_matcher.hpp";
    *(undefined4 *)(iVar4 + 0x38) = 0x2d;
    FUN_005e3880(iVar4);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __fastcall
FUN_005df2d0(undefined4 param_1_00,undefined4 param_2_00,undefined4 *param_1,undefined4 param_2,
            undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c271c8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             boyer_moore_finder<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::xpressive::cpp_regex_traits<char>_>
             ::vftable;
  FUN_005df480(param_1 + 2,param_2_00,param_1_00,param_3);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_005df330(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  undefined local_10 [12];
  
  piVar2 = (int *)(**(code **)(param_1_00 + 0x28))
                            (local_10,*param_1,param_1[1],param_1[6],param_1[7],param_1[0xe] + 8);
  iVar1 = *piVar2;
  *param_1 = iVar1;
  param_1[1] = piVar2[1];
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != param_1[6])))) {
    FUN_00a3fb10();
  }
  return CONCAT31((int3)((uint)param_1[1] >> 8),param_1[1] != param_1[7]);
}



undefined4 * __fastcall FUN_005df3a0(undefined4 *param_1)

{
  byte unaff_retaddr;
  
  FUN_005df3d0(param_1 + 2);
  *param_1 = boost::xpressive::detail::
             finder<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
             ::vftable;
  if ((unaff_retaddr & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_005df3d0(int param_1)

{
  int iVar1;
  int iVar2;
  
  iVar2 = *(int *)(param_1 + 0x14);
  if (iVar2 == 0) {
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined4 *)(param_1 + 0x18) = 0;
    *(undefined4 *)(param_1 + 0x1c) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 8));
  }
  iVar1 = *(int *)(param_1 + 0x18);
  while( true ) {
    if (iVar2 == iVar1) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x14));
    }
    if (0xf < *(uint *)(iVar2 + 0x18)) break;
    *(undefined4 *)(iVar2 + 0x18) = 0xf;
    *(undefined4 *)(iVar2 + 0x14) = 0;
    *(undefined *)(iVar2 + 4) = 0;
    iVar2 = iVar2 + 0x1c;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(iVar2 + 4));
}



void FUN_005df440(void)

{
  int *piVar1;
  int iVar2;
  undefined4 *puVar3;
  int *in_EAX;
  int *unaff_ESI;
  
  iVar2 = *in_EAX;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  puVar3 = (undefined4 *)*unaff_ESI;
  *unaff_ESI = iVar2;
  if (puVar3 != (undefined4 *)0x0) {
    piVar1 = puVar3 + 1;
    LOCK();
    iVar2 = *piVar1;
    *piVar1 = iVar2 + -1;
    UNLOCK();
    if (((iVar2 + -1 == 0) && (piVar1 != (int *)0x0)) && (puVar3 != (undefined4 *)0x0)) {
      (**(code **)*puVar3)(1);
    }
  }
  return;
}



int * __thiscall
FUN_005df480(int param_1_00,int *param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  int *piVar2;
  code *pcVar3;
  int iVar4;
  undefined *puVar5;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  iVar4 = param_2;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c271a3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = param_2;
  param_1[1] = param_2;
  piVar2 = (int *)operator_new(4);
  if (piVar2 == (int *)0x0) {
    piVar2 = (int *)0x0;
  }
  else {
    *piVar2 = (int)(param_1 + 2);
  }
  param_1[2] = (int)piVar2;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  local_4 = 1;
  pcVar3 = FUN_005dfb20;
  if ((char)param_4 == '\0') {
    pcVar3 = FUN_005df980;
  }
  param_1[8] = (int)pcVar3;
  local_10 = param_1_00 - iVar4;
  param_2 = 0xff;
  piVar2 = &param_2;
  if (param_1_00 - iVar4 < 0x100) {
    piVar2 = &local_10;
  }
  *(undefined *)(param_1 + 9) = *(undefined *)piVar2;
  iVar4 = 0x100;
  puVar5 = (undefined *)((int)param_1 + 0x25);
  do {
    *puVar5 = *(undefined *)(param_1 + 9);
    iVar4 = iVar4 + -1;
    puVar5 = puVar5 + 1;
  } while (0 < iVar4);
  *(char *)(param_1 + 9) = *(char *)(param_1 + 9) + -1;
  cVar1 = *(char *)(param_1 + 9);
  if ((char)param_4 == '\0') {
    for (; cVar1 != '\0'; cVar1 = cVar1 + -1) {
      *(char *)(*(byte *)param_1[1] + 0x25 + (int)param_1) = cVar1;
      param_1[1] = param_1[1] + 1;
    }
  }
  else {
    FUN_005df580(param_1,param_3,param_4);
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_005df580(int param_1,uint param_2)

{
  int **ppiVar1;
  uint uVar2;
  uint uVar3;
  int *piVar4;
  uint uVar5;
  char cVar6;
  uint uVar7;
  undefined4 uVar8;
  int iVar9;
  byte **ppbVar10;
  byte **ppbVar11;
  byte **ppbVar12;
  uint uVar13;
  uint local_64;
  byte **local_54;
  undefined local_50 [12];
  undefined4 local_44;
  uint local_30;
  undefined4 local_28;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c27170;
  local_c = ExceptionList;
  uVar7 = DAT_0323f878 ^ (uint)&stack0xffffff84;
  ExceptionList = &local_c;
  ppiVar1 = (int **)(param_1 + 8);
  FUN_005dfef0(*(byte *)(param_1 + 0x24) + 1);
  cVar6 = *(char *)(param_1 + 0x24);
  do {
    if (cVar6 == '\0') {
      uVar8 = FUN_005dfe70(param_2,**(undefined **)(param_1 + 4));
      local_4 = 1;
      uVar2 = *(uint *)(param_1 + 0x14);
      if (uVar2 == 0) {
        uVar13 = 0;
      }
      else {
        uVar13 = (int)(*(int *)(param_1 + 0x1c) - uVar2) / 0x1c;
      }
      uVar3 = *(uint *)(param_1 + 0x18);
      if ((uint)((int)(uVar3 - uVar2) / 0x1c) < uVar13) {
        param_2 = param_2 & 0xffffff00;
        FUN_0043118c(uVar3,1,uVar8,param_1 + 0x10,uVar8,param_2);
        *(uint *)(param_1 + 0x18) = uVar3 + 0x1c;
      }
      else {
        if (uVar3 < uVar2) {
          FUN_00a3fb10(uVar7);
        }
        FUN_00430b22(local_50,*ppiVar1,uVar3,uVar8);
      }
      if (0xf < local_14) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_28);
      }
      ExceptionList = local_c;
      return;
    }
    uVar8 = FUN_005dfe70(param_2,**(undefined **)(param_1 + 4));
    uVar13 = 0;
    local_4 = 0;
    uVar2 = *(uint *)(param_1 + 0x14);
    if (uVar2 != 0) {
      uVar13 = (int)(*(int *)(param_1 + 0x1c) - uVar2) / 0x1c;
    }
    uVar3 = *(uint *)(param_1 + 0x18);
    if ((uint)((int)(uVar3 - uVar2) / 0x1c) < uVar13) {
      local_64 = local_64 & 0xffffff00;
      FUN_0043118c(uVar3,1,uVar8,param_1 + 0x10,param_1,local_64);
      *(uint *)(param_1 + 0x18) = uVar3 + 0x1c;
    }
    else {
      if (uVar3 < uVar2) {
        FUN_00a3fb10(uVar7);
      }
      FUN_00430b22(local_50,*ppiVar1,uVar3,uVar8);
    }
    local_4 = 0xffffffff;
    if (0xf < local_30) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_44);
    }
    uVar2 = *(uint *)(param_1 + 0x18);
    if (uVar2 < *(uint *)(param_1 + 0x14)) {
      FUN_00a3fb10();
    }
    piVar4 = *ppiVar1;
    if (piVar4 == (int *)0x0) {
      FUN_00a3fb10();
      iVar9 = 0;
    }
    else {
      iVar9 = *piVar4;
    }
    if (*(uint *)(iVar9 + 0x10) < uVar2 - 0x1c) {
LAB_005df6e1:
      FUN_00a3fb10();
    }
    else {
      if (piVar4 == (int *)0x0) {
        iVar9 = 0;
      }
      else {
        iVar9 = *piVar4;
      }
      if (uVar2 - 0x1c < *(uint *)(iVar9 + 0xc)) goto LAB_005df6e1;
    }
    uVar13 = uVar2 - 0x1c;
    if (piVar4 == (int *)0x0) {
      FUN_00a3fb10();
      iVar9 = 0;
    }
    else {
      iVar9 = *piVar4;
    }
    if (*(uint *)(iVar9 + 0x10) <= uVar13) {
      FUN_00a3fb10();
    }
    uVar3 = *(uint *)(uVar2 - 4);
    ppbVar10 = (byte **)(uVar2 - 0x18);
    local_54 = ppbVar10;
    if (0xf < uVar3) {
      local_54 = (byte **)*ppbVar10;
    }
    if (local_54 == (byte **)0x0) {
LAB_005df736:
      FUN_00a3fb10();
    }
    else {
      ppbVar11 = ppbVar10;
      if (0xf < uVar3) {
        ppbVar11 = (byte **)*ppbVar10;
      }
      if (local_54 < ppbVar11) goto LAB_005df736;
      if (0xf < uVar3) {
        ppbVar10 = (byte **)*ppbVar10;
      }
      if ((byte **)(*(int *)(uVar2 - 8) + (int)ppbVar10) < local_54) goto LAB_005df736;
    }
    uVar3 = *(uint *)(param_1 + 0x18);
    if (uVar3 < *(uint *)(param_1 + 0x14)) {
      FUN_00a3fb10();
    }
    piVar4 = *ppiVar1;
    if (piVar4 == (int *)0x0) {
      FUN_00a3fb10();
      iVar9 = 0;
    }
    else {
      iVar9 = *piVar4;
    }
    if (*(uint *)(iVar9 + 0x10) < uVar3 - 0x1c) {
LAB_005df77e:
      FUN_00a3fb10();
    }
    else {
      if (piVar4 == (int *)0x0) {
        iVar9 = 0;
      }
      else {
        iVar9 = *piVar4;
      }
      if (uVar3 - 0x1c < *(uint *)(iVar9 + 0xc)) goto LAB_005df77e;
    }
    if (piVar4 == (int *)0x0) {
      FUN_00a3fb10();
      iVar9 = 0;
    }
    else {
      iVar9 = *piVar4;
    }
    if (*(uint *)(iVar9 + 0x10) <= uVar3 - 0x1c) {
      FUN_00a3fb10();
    }
    uVar5 = *(uint *)(uVar3 - 4);
    ppbVar10 = (byte **)(uVar3 - 0x18);
    ppbVar11 = ppbVar10;
    if (0xf < uVar5) {
      ppbVar11 = (byte **)*ppbVar10;
    }
    ppbVar11 = (byte **)((int)ppbVar11 + *(int *)(uVar3 - 8));
    if (ppbVar11 == (byte **)0x0) {
LAB_005df7da:
      FUN_00a3fb10();
    }
    else {
      ppbVar12 = ppbVar10;
      if (0xf < uVar5) {
        ppbVar12 = (byte **)*ppbVar10;
      }
      if (ppbVar11 < ppbVar12) goto LAB_005df7da;
      if (0xf < uVar5) {
        ppbVar10 = (byte **)*ppbVar10;
      }
      if ((byte **)((int)ppbVar10 + *(int *)(uVar3 - 8)) < ppbVar11) goto LAB_005df7da;
    }
    while( true ) {
      if ((uVar13 != 0xfffffffc) && ((uVar2 == 0x1c || (uVar13 != uVar3 - 0x1c)))) {
        FUN_00a3fb10();
      }
      if (local_54 == ppbVar11) break;
      if (uVar13 != 0xfffffffc) {
        if (uVar2 == 0x1c) {
          FUN_00a3fb10();
        }
        if (*(uint *)(uVar2 - 4) < 0x10) {
          iVar9 = uVar2 - 0x18;
        }
        else {
          iVar9 = *(int *)(uVar2 - 0x18);
        }
        if ((byte **)(*(int *)(uVar2 - 8) + iVar9) <= local_54) {
          FUN_00a3fb10();
        }
      }
      *(char *)(*(byte *)local_54 + 0x25 + param_1) = cVar6;
      if (uVar13 != 0xfffffffc) {
        if (uVar2 == 0x1c) {
          FUN_00a3fb10();
        }
        if (*(uint *)(uVar2 - 4) < 0x10) {
          iVar9 = uVar2 - 0x18;
        }
        else {
          iVar9 = *(int *)(uVar2 - 0x18);
        }
        if ((byte **)(*(int *)(uVar2 - 8) + iVar9) <= local_54) {
          FUN_00a3fb10();
        }
      }
      local_54 = (byte **)((int)local_54 + 1);
    }
    *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
    cVar6 = cVar6 + -1;
  } while( true );
}



void __thiscall
FUN_005df980(byte **param_1_00,int *param_1,int param_2,byte *param_3,int param_4,int param_5)

{
  byte **ppbVar1;
  byte *pbVar2;
  int iVar3;
  uint uVar4;
  byte **ppbVar5;
  byte *pbVar6;
  int iVar7;
  uint uVar8;
  byte *pbVar9;
  
  if ((param_4 != -4) && ((param_4 == 0 || (param_4 != param_2)))) {
    FUN_00a3fb10();
  }
  iVar7 = param_5 - (int)param_3;
  uVar8 = (uint)*(byte *)(param_1_00 + 9);
  uVar4 = uVar8;
  do {
    if (iVar7 <= (int)uVar4) {
      *param_1 = param_4;
      param_1[1] = param_5;
      return;
    }
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      ppbVar1 = (byte **)(param_2 + 4);
      ppbVar5 = ppbVar1;
      if (0xf < *(uint *)(param_2 + 0x18)) {
        ppbVar5 = (byte **)*ppbVar1;
      }
      if (param_3 + uVar8 <= (byte **)(*(int *)(param_2 + 0x14) + (int)ppbVar5)) {
        if (0xf < *(uint *)(param_2 + 0x18)) {
          ppbVar1 = (byte **)*ppbVar1;
        }
        if (ppbVar1 <= param_3 + uVar8) goto LAB_005dfa1c;
      }
      FUN_00a3fb10();
    }
LAB_005dfa1c:
    pbVar6 = param_1_00[1];
    param_3 = param_3 + uVar8;
    pbVar9 = param_3;
    while( true ) {
      if (param_2 != -4) {
        if (param_2 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_2 + 0x18) < 0x10) {
          iVar3 = param_2 + 4;
        }
        else {
          iVar3 = *(int *)(param_2 + 4);
        }
        if ((byte *)(*(int *)(param_2 + 0x14) + iVar3) <= pbVar9) {
          FUN_00a3fb10();
        }
      }
      if (*pbVar9 != *pbVar6) break;
      if (pbVar6 == *param_1_00) {
        param_1[1] = (int)pbVar9;
        *param_1 = param_2;
        return;
      }
      pbVar6 = pbVar6 + -1;
      if (param_2 != -4) {
        if (param_2 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_2 + 0x18) < 0x10) {
          pbVar2 = (byte *)(param_2 + 4);
        }
        else {
          pbVar2 = *(byte **)(param_2 + 4);
        }
        if (pbVar9 <= pbVar2) {
          FUN_00a3fb10();
        }
      }
      pbVar9 = pbVar9 + -1;
    }
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 0x10) {
        iVar3 = param_2 + 4;
      }
      else {
        iVar3 = *(int *)(param_2 + 4);
      }
      if ((byte *)(*(int *)(param_2 + 0x14) + iVar3) <= param_3) {
        FUN_00a3fb10();
      }
    }
    uVar8 = (uint)*(byte *)(*param_3 + 0x25 + (int)param_1_00);
    uVar4 = uVar4 + uVar8;
  } while( true );
}



// WARNING: Removing unreachable block (ram,0x005dfd65)

void __thiscall
FUN_005dfb20(int param_1_00,int *param_1,int param_2,byte *param_3,int param_4,int param_5)

{
  uint uVar1;
  int *piVar2;
  char *pcVar3;
  char **ppcVar4;
  char **ppcVar5;
  byte *pbVar6;
  byte **ppbVar7;
  int iVar8;
  byte **ppbVar9;
  char **ppcVar10;
  int iVar11;
  uint uVar12;
  char **ppcVar13;
  uint local_20;
  byte *local_c;
  
  if ((param_4 != -4) && ((param_4 == 0 || (param_4 != param_2)))) {
    FUN_00a3fb10();
  }
  iVar11 = param_5 - (int)param_3;
  uVar12 = (uint)*(byte *)(param_1_00 + 0x24);
  local_20 = uVar12;
  if (iVar11 <= (int)uVar12) {
    *param_1 = param_4;
    param_1[1] = param_5;
    return;
  }
LAB_005dfb8a:
  if (param_2 != -4) {
    if (param_2 == 0) {
      FUN_00a3fb10();
    }
    ppbVar7 = (byte **)(param_2 + 4);
    ppbVar9 = ppbVar7;
    if (0xf < *(uint *)(param_2 + 0x18)) {
      ppbVar9 = (byte **)*ppbVar7;
    }
    if (param_3 + uVar12 <= (byte **)(*(int *)(param_2 + 0x14) + (int)ppbVar9)) {
      if (0xf < *(uint *)(param_2 + 0x18)) {
        ppbVar7 = (byte **)*ppbVar7;
      }
      if (ppbVar7 <= param_3 + uVar12) goto LAB_005dfbd0;
    }
    FUN_00a3fb10();
  }
LAB_005dfbd0:
  uVar1 = *(uint *)(param_1_00 + 0x18);
  param_3 = param_3 + uVar12;
  if (uVar1 < *(uint *)(param_1_00 + 0x14)) {
    FUN_00a3fb10();
  }
  piVar2 = *(int **)(param_1_00 + 8);
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar8 = 0;
  }
  else {
    iVar8 = *piVar2;
  }
  if (uVar1 - 0x1c <= *(uint *)(iVar8 + 0x10)) {
    if (piVar2 == (int *)0x0) {
      iVar8 = 0;
    }
    else {
      iVar8 = *piVar2;
    }
    if (*(uint *)(iVar8 + 0xc) <= uVar1 - 0x1c) goto LAB_005dfc1d;
  }
  FUN_00a3fb10();
LAB_005dfc1d:
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar8 = 0;
  }
  else {
    iVar8 = *piVar2;
  }
  if (*(uint *)(iVar8 + 0x10) <= uVar1 - 0x1c) {
    FUN_00a3fb10();
  }
  ppcVar13 = (char **)(uVar1 - 0x18);
  local_c = param_3;
  do {
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 0x10) {
        iVar8 = param_2 + 4;
      }
      else {
        iVar8 = *(int *)(param_2 + 4);
      }
      if ((byte *)(*(int *)(param_2 + 0x14) + iVar8) <= local_c) {
        FUN_00a3fb10();
      }
    }
    pcVar3 = ppcVar13[5];
    ppcVar4 = ppcVar13;
    if (&DAT_0000000f < pcVar3) {
      ppcVar4 = (char **)*ppcVar13;
    }
    ppcVar4 = (char **)((int)ppcVar4 + (int)ppcVar13[4]);
    if (ppcVar4 == (char **)0x0) {
LAB_005dfcbc:
      FUN_00a3fb10();
    }
    else {
      ppcVar10 = ppcVar13;
      if (&DAT_0000000f < pcVar3) {
        ppcVar10 = (char **)*ppcVar13;
      }
      if (ppcVar4 < ppcVar10) goto LAB_005dfcbc;
      ppcVar10 = ppcVar13;
      if (&DAT_0000000f < pcVar3) {
        ppcVar10 = (char **)*ppcVar13;
      }
      if ((char **)((int)ppcVar10 + (int)ppcVar13[4]) < ppcVar4) goto LAB_005dfcbc;
    }
    pcVar3 = ppcVar13[5];
    ppcVar10 = ppcVar13;
    if (&DAT_0000000f < pcVar3) {
      ppcVar10 = (char **)*ppcVar13;
    }
    if (ppcVar10 == (char **)0x0) {
LAB_005dfcf6:
      FUN_00a3fb10();
    }
    else {
      ppcVar5 = ppcVar13;
      if (&DAT_0000000f < pcVar3) {
        ppcVar5 = (char **)*ppcVar13;
      }
      if (ppcVar10 < ppcVar5) goto LAB_005dfcf6;
      ppcVar5 = ppcVar13;
      if (&DAT_0000000f < pcVar3) {
        ppcVar5 = (char **)*ppcVar13;
      }
      if (ppcVar13[4] + (int)ppcVar5 < ppcVar10) goto LAB_005dfcf6;
    }
    if (ppcVar10 != ppcVar4) {
      do {
        if (*(byte *)ppcVar10 == *local_c) break;
        ppcVar10 = (char **)((int)ppcVar10 + 1);
      } while (ppcVar10 != ppcVar4);
    }
    pcVar3 = ppcVar13[5];
    ppcVar4 = ppcVar13;
    if (&DAT_0000000f < pcVar3) {
      ppcVar4 = (char **)*ppcVar13;
    }
    ppcVar4 = (char **)((int)ppcVar4 + (int)ppcVar13[4]);
    if (ppcVar4 == (char **)0x0) {
LAB_005dfd51:
      FUN_00a3fb10();
    }
    else {
      ppcVar5 = ppcVar13;
      if (&DAT_0000000f < pcVar3) {
        ppcVar5 = (char **)*ppcVar13;
      }
      if (ppcVar4 < ppcVar5) goto LAB_005dfd51;
      ppcVar5 = ppcVar13;
      if (&DAT_0000000f < pcVar3) {
        ppcVar5 = (char **)*ppcVar13;
      }
      if ((char **)((int)ppcVar5 + (int)ppcVar13[4]) < ppcVar4) goto LAB_005dfd51;
    }
    if (ppcVar4 == ppcVar10) break;
    ppcVar4 = *(char ***)(param_1_00 + 0x14);
    if (*(char ***)(param_1_00 + 0x18) < ppcVar4) {
      FUN_00a3fb10();
    }
    if (*(int **)(param_1_00 + 8) == (int *)0x0) {
      FUN_00a3fb10();
      iVar8 = 0;
    }
    else {
      iVar8 = **(int **)(param_1_00 + 8);
    }
    if (*(char ***)(iVar8 + 0x10) <= ppcVar4) {
      FUN_00a3fb10();
    }
    if (ppcVar13 + -1 == ppcVar4) {
      *param_1 = param_2;
      param_1[1] = (int)local_c;
      return;
    }
    ppcVar13 = ppcVar13 + -7;
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 0x10) {
        pbVar6 = (byte *)(param_2 + 4);
      }
      else {
        pbVar6 = *(byte **)(param_2 + 4);
      }
      if (local_c <= pbVar6) {
        FUN_00a3fb10();
      }
    }
    local_c = local_c + -1;
  } while( true );
  if (param_2 != -4) {
    if (param_2 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(param_2 + 0x18) < 0x10) {
      iVar8 = param_2 + 4;
    }
    else {
      iVar8 = *(int *)(param_2 + 4);
    }
    if ((byte *)(*(int *)(param_2 + 0x14) + iVar8) <= param_3) {
      FUN_00a3fb10();
    }
  }
  uVar12 = (uint)*(byte *)(*param_3 + 0x25 + param_1_00);
  local_20 = local_20 + uVar12;
  if (iVar11 <= (int)local_20) {
    *param_1 = param_4;
    param_1[1] = param_5;
    return;
  }
  goto LAB_005dfb8a;
}



void FUN_005dfe70(int param_1,undefined4 param_2)

{
  char cVar1;
  char *pcVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_ESI;
  
  (**(code **)(**(int **)(param_1 + 0x204) + 8))(param_2);
  (**(code **)(**(int **)(param_1 + 0x204) + 0x10))(param_2);
  *(undefined4 *)(unaff_ESI + 0x18) = 0xf;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  unaff_ESI[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  pcVar2 = (char *)register0x00000010;
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (unaff_ESI,&stack0x00000000,(int)pcVar2 - (int)&stack0x00000001);
  return;
}



void __thiscall FUN_005dfef0(int param_1_00,uint param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  uint local_1c;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c21eb0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  if (0x9249249 < param_1) {
    FUN_004423c1();
  }
  uVar3 = *(uint *)(param_1_00 + 0xc);
  if (uVar3 != 0) {
    uVar3 = (int)(*(int *)(param_1_00 + 0x14) - uVar3) / 0x1c;
  }
  if (uVar3 < param_1) {
    iVar4 = FUN_0043043a(param_1,0);
    local_8 = 0;
    uVar3 = *(uint *)(param_1_00 + 0x10);
    if (uVar3 < *(uint *)(param_1_00 + 0xc)) {
      FUN_00a3fb10();
    }
    uVar1 = *(uint *)(param_1_00 + 0xc);
    if (*(uint *)(param_1_00 + 0x10) < uVar1) {
      FUN_00a3fb10();
    }
    local_1c = local_1c & 0xffffff00;
    FUN_0043145f(uVar1,uVar3,iVar4,param_1_00 + 8,param_1,local_1c);
    iVar2 = *(int *)(param_1_00 + 0x10);
    iVar5 = *(int *)(param_1_00 + 0xc);
    if (iVar5 != 0) {
      while( true ) {
        if (iVar5 == iVar2) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
        }
        if (0xf < *(uint *)(iVar5 + 0x18)) break;
        *(undefined4 *)(iVar5 + 0x18) = 0xf;
        *(undefined4 *)(iVar5 + 0x14) = 0;
        *(undefined *)(iVar5 + 4) = 0;
        iVar5 = iVar5 + 0x1c;
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar5 + 4));
    }
    *(uint *)(param_1_00 + 0x14) = iVar4 + param_1 * 0x1c;
    *(int *)(param_1_00 + 0x10) = iVar4 + ((iVar2 - iVar5) / 0x1c) * 0x1c;
    *(int *)(param_1_00 + 0xc) = iVar4;
  }
  ExceptionList = local_10;
  return;
}



void Catch_All_005e003b(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



int * __fastcall FUN_005e0060(int **param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = param_1[3];
  if (param_1[4] < piVar1) {
    FUN_00a3fb10();
  }
  if (*param_1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = **param_1;
  }
  if (*(int **)(iVar2 + 0x10) <= piVar1) {
    FUN_00a3fb10();
  }
  return piVar1;
}



int * __fastcall FUN_005e0090(int **param_1)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  
  piVar1 = param_1[4];
  if (piVar1 < param_1[3]) {
    FUN_00a3fb10();
  }
  piVar2 = *param_1;
  FUN_0041b70c(0xffffffff);
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar2;
  }
  if (*(int **)(iVar3 + 0x10) <= piVar1) {
    FUN_00a3fb10();
  }
  return piVar1;
}



void FUN_005e00f0(void)

{
  undefined *puVar1;
  bool bVar2;
  char cVar3;
  int iVar4;
  undefined4 *unaff_ESI;
  undefined4 unaff_EDI;
  
  if (unaff_ESI[5] == 0) {
    unaff_ESI[5] = unaff_EDI;
    unaff_ESI[6] = &boost::xpressive::cpp_regex_traits<char>::RTTI_Type_Descriptor;
    return;
  }
  bVar2 = type_info::operator!=
                    ((type_info *)unaff_ESI[6],
                     (type_info *)&boost::xpressive::cpp_regex_traits<char>::RTTI_Type_Descriptor);
  if ((!bVar2) && (cVar3 = FUN_004299c0(), cVar3 != '\0')) {
    return;
  }
  puVar1 = (undefined *)*unaff_ESI;
  *puVar1 = 0;
  iVar4 = 7;
  do {
    iVar4 = iVar4 + -1;
    *(undefined4 *)(puVar1 + iVar4 * 4 + 8) = 0xffffffff;
  } while (-1 < iVar4);
  return;
}



undefined4 * __thiscall FUN_005e0150(undefined4 *param_1_00,undefined4 *param_1)

{
  void *pvVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d11b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(char *)((int)param_1_00 + 0x11) == '\0') {
    if (0 < (int)param_1_00[7]) {
      puVar2 = (undefined4 *)operator_new(8);
      if (puVar2 == (undefined4 *)0x0) {
        puVar2 = (undefined4 *)0x0;
      }
      else {
        puVar2[1] = 0;
        *puVar2 = boost::xpressive::detail::
                  leading_simple_repeat_finder<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
                  ::vftable;
      }
      *param_1 = puVar2;
      if (puVar2 == (undefined4 *)0x0) {
        ExceptionList = local_c;
        return param_1;
      }
      LOCK();
      puVar2[1] = puVar2[1] + 1;
      UNLOCK();
      ExceptionList = local_c;
      return param_1;
    }
    iVar3 = FUN_005e0900(DAT_0323f878 ^ (uint)&stack0xffffffdc);
    if (iVar3 == 0x100) {
      *param_1 = 0;
      ExceptionList = local_c;
      return param_1;
    }
    puVar2 = (undefined4 *)operator_new(0x2c);
    if (puVar2 != (undefined4 *)0x0) {
      param_1_00 = (undefined4 *)*param_1_00;
      puVar2[1] = 0;
      *puVar2 = boost::xpressive::detail::
                hash_peek_finder<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::xpressive::cpp_regex_traits<char>_>
                ::vftable;
      puVar4 = puVar2 + 2;
      for (iVar3 = 9; iVar3 != 0; iVar3 = iVar3 + -1) {
        *puVar4 = *param_1_00;
        param_1_00 = param_1_00 + 1;
        puVar4 = puVar4 + 1;
      }
      goto LAB_005e01af;
    }
  }
  else {
    pvVar1 = operator_new(0x108);
    local_4 = 0;
    if (pvVar1 != (void *)0x0) {
      puVar2 = (undefined4 *)FUN_005e0650(pvVar1);
      goto LAB_005e01af;
    }
  }
  puVar2 = (undefined4 *)0x0;
LAB_005e01af:
  *param_1 = puVar2;
  if (puVar2 != (undefined4 *)0x0) {
    LOCK();
    puVar2[1] = puVar2[1] + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_005e0250(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  uint uVar1;
  undefined4 unaff_ESI;
  undefined auStack_34 [4];
  undefined4 local_30;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [4];
  uint local_28;
  undefined4 local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d0e8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_34;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  local_30 = 0;
  local_14 = 0xf;
  local_18 = 0;
  local_28 = local_28 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_2c,param_1,0,0xffffffff);
  local_4 = 0;
  FUN_005e0500(unaff_ESI);
  if (0xf < local_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_28,uVar1);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_005e02f0(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  int *in_EAX;
  int iVar5;
  int unaff_EBX;
  char *pcVar6;
  
  iVar1 = *in_EAX;
  iVar2 = in_EAX[1];
  if (*(uint *)(unaff_EBX + 0x18) < 0x10) {
    pcVar6 = (char *)(unaff_EBX + 4);
  }
  else {
    pcVar6 = *(char **)(unaff_EBX + 4);
  }
  if (pcVar6 != *(char **)(unaff_EBX + 0x1c)) {
    do {
      iVar3 = *in_EAX;
      if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != in_EAX[6])))) {
        FUN_00a3fb10();
      }
      if (in_EAX[1] == in_EAX[7]) {
        *(undefined *)((int)in_EAX + 0x29) = 1;
LAB_005e03d4:
        *in_EAX = iVar1;
        in_EAX[1] = iVar2;
        return 0;
      }
      if (*in_EAX != -4) {
        if (*in_EAX == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *in_EAX;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar5 = iVar3 + 4;
        }
        else {
          iVar5 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)in_EAX[1]) {
          FUN_00a3fb10();
        }
      }
      if (*(char *)in_EAX[1] != *pcVar6) goto LAB_005e03d4;
      pcVar6 = pcVar6 + 1;
      if (*in_EAX != -4) {
        if (*in_EAX == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *in_EAX;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar5 = iVar3 + 4;
        }
        else {
          iVar5 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)in_EAX[1]) {
          FUN_00a3fb10();
        }
      }
      in_EAX[1] = in_EAX[1] + 1;
    } while (pcVar6 != *(char **)(unaff_EBX + 0x1c));
  }
  cVar4 = FUN_005e0cf0(param_1);
  if (cVar4 != '\0') {
    return 1;
  }
  *in_EAX = iVar1;
  in_EAX[1] = iVar2;
  return 0;
}



undefined4 FUN_005e0410(char **param_1,undefined4 param_2,int param_3)

{
  byte bVar1;
  byte *pbVar2;
  int iVar3;
  char *pcVar4;
  uint uVar5;
  uint extraout_ECX;
  
  if (*(uint *)(param_3 + 0x18) < 0x10) {
    pbVar2 = (byte *)(param_3 + 4);
  }
  else {
    pbVar2 = *(byte **)(param_3 + 4);
  }
  pcVar4 = *param_1;
  bVar1 = *pbVar2;
  iVar3 = FUN_005e0900();
  if (iVar3 != 0x100) {
    if ((iVar3 == 0) || (*pcVar4 == '\0')) {
      uVar5 = (uint)bVar1;
      *pcVar4 = '\0';
      if (0xff < uVar5) {
        FUN_005e0c40();
        uVar5 = extraout_ECX;
      }
      *(uint *)(pcVar4 + (uVar5 >> 5) * 4 + 4) =
           *(uint *)(pcVar4 + (uVar5 >> 5) * 4 + 4) | 1 << ((byte)uVar5 & 0x1f);
    }
    else {
      FUN_005dc530();
    }
  }
  if (*(uint *)(param_3 + 0x18) < 0x10) {
    pcVar4 = (char *)(param_3 + 4);
  }
  else {
    pcVar4 = *(char **)(param_3 + 4);
  }
  param_1[1] = pcVar4;
  if (*(uint *)(param_3 + 0x18) < 0x10) {
    iVar3 = param_3 + 4;
  }
  else {
    iVar3 = *(int *)(param_3 + 4);
  }
  param_1[2] = (char *)(*(int *)(param_3 + 0x14) + iVar3);
  *(undefined *)(param_1 + 3) = 0;
  return param_2;
}



int FUN_005e04c0(int param_1,int param_2,int param_3,int param_4)

{
  if ((param_3 != -4) && ((param_3 == 0 || (param_3 != param_1)))) {
    FUN_00a3fb10();
  }
  return param_4 - param_2;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_005e0500(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  undefined uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int iVar4;
  int local_10;
  undefined *local_c;
  int local_8;
  undefined *local_4;
  
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar3 = (undefined4 *)(param_1 + 4);
  *(undefined *)puVar3 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,in_EAX,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  puVar2 = puVar3;
  if (0xf < *(uint *)(param_1 + 0x18)) {
    puVar2 = (undefined4 *)*puVar3;
  }
  FUN_00425c20(puVar2,param_1);
  if (0xf < *(uint *)(param_1 + 0x18)) {
    puVar3 = (undefined4 *)*puVar3;
  }
  FUN_00425c20(*(int *)(param_1 + 0x14) + (int)puVar3,param_1);
  while( true ) {
    if ((local_10 != -4) && ((local_10 == 0 || (local_10 != local_8)))) {
      FUN_00a3fb10();
    }
    if (local_c == local_4) break;
    if (local_10 != -4) {
      if (local_10 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(local_10 + 0x18) < 0x10) {
        iVar4 = local_10 + 4;
      }
      else {
        iVar4 = *(int *)(local_10 + 4);
      }
      if ((undefined *)(*(int *)(local_10 + 0x14) + iVar4) <= local_c) {
        FUN_00a3fb10();
      }
    }
    uVar1 = *local_c;
    if (local_10 != -4) {
      if (local_10 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(local_10 + 0x18) < 0x10) {
        iVar4 = local_10 + 4;
      }
      else {
        iVar4 = *(int *)(local_10 + 4);
      }
      if ((undefined *)(*(int *)(local_10 + 0x14) + iVar4) <= local_c) {
        FUN_00a3fb10();
      }
    }
    *local_c = uVar1;
    if (local_10 != -4) {
      if (local_10 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(local_10 + 0x18) < 0x10) {
        iVar4 = local_10 + 4;
      }
      else {
        iVar4 = *(int *)(local_10 + 4);
      }
      if ((undefined *)(*(int *)(local_10 + 0x14) + iVar4) <= local_c) {
        FUN_00a3fb10();
      }
    }
    local_c = local_c + 1;
  }
  if (*(uint *)(param_1 + 0x18) < 0x10) {
    *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
     (param_1 + 0x1c) = param_1 + *(int *)(param_1 + 0x14) + 4;
    return param_1;
  }
  *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x14) + *(int *)(param_1 + 4);
  return param_1;
}



undefined4 * __thiscall FUN_005e0650(int param_1_00,undefined4 *param_1)

{
  ushort uVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1d0b8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             line_start_finder<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::xpressive::cpp_regex_traits<char>,1>
             ::vftable;
  uVar1 = FUN_005e0970(uVar2);
  uVar2 = 0;
  do {
    *(bool *)((int)param_1 + uVar2 + 8) =
         (*(ushort *)(param_1_00 + (uVar2 & 0xff) * 2) & uVar1) != 0;
    uVar2 = uVar2 + 1;
  } while ((int)uVar2 < 0x100);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_005e06d0(int param_1_00,int *param_1)

{
  int iVar1;
  byte *pbVar2;
  int iVar3;
  int iVar4;
  byte *pbVar5;
  
  iVar1 = *param_1;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != param_1[4])))) {
    FUN_00a3fb10();
  }
  pbVar5 = (byte *)param_1[1];
  if ((pbVar5 != (byte *)param_1[5]) || (*(char *)((int)param_1 + 0x22) == '\0')) {
    iVar1 = *param_1;
    iVar4 = param_1[6];
    iVar3 = *param_1;
    pbVar2 = (byte *)param_1[7];
    if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != param_1[4])))) {
      FUN_00a3fb10();
    }
    FUN_005e0be0(-(uint)(param_1[1] != param_1[5]));
    while( true ) {
      if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != iVar4)))) {
        FUN_00a3fb10();
      }
      if (pbVar5 == pbVar2) {
        return 0;
      }
      if (iVar1 != -4) {
        if (iVar1 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar1 + 0x18) < 0x10) {
          iVar3 = iVar1 + 4;
        }
        else {
          iVar3 = *(int *)(iVar1 + 4);
        }
        if ((byte *)(*(int *)(iVar1 + 0x14) + iVar3) <= pbVar5) {
          FUN_00a3fb10();
        }
      }
      if (*(char *)(*pbVar5 + 8 + param_1_00) != '\0') break;
      if (iVar1 != -4) {
        if (iVar1 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar1 + 0x18) < 0x10) {
          iVar3 = iVar1 + 4;
        }
        else {
          iVar3 = *(int *)(iVar1 + 4);
        }
        if ((byte *)(*(int *)(iVar1 + 0x14) + iVar3) <= pbVar5) {
          FUN_00a3fb10();
        }
      }
      pbVar5 = pbVar5 + 1;
    }
    if (iVar1 != -4) {
      if (iVar1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar1 + 0x18) < 0x10) {
        iVar4 = iVar1 + 4;
      }
      else {
        iVar4 = *(int *)(iVar1 + 4);
      }
      if ((byte *)(*(int *)(iVar1 + 0x14) + iVar4) <= pbVar5) {
        FUN_00a3fb10();
      }
    }
    *param_1 = iVar1;
    param_1[1] = (int)(pbVar5 + 1);
  }
  return 1;
}



undefined4 FUN_005e0830(undefined4 *param_1)

{
  *param_1 = param_1[0x16];
  param_1[1] = param_1[0x17];
  return 1;
}



undefined4 __thiscall FUN_005e0850(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  uint local_18 [2];
  undefined local_10 [12];
  
  local_18[0] = local_18[0] & 0xffffff00;
  if (*(char *)(param_1_00 + 8) == '\0') {
    piVar2 = (int *)FUN_005e0af0(local_10,local_18[0],*param_1,param_1[1],param_1[6],param_1[7]);
  }
  else {
    piVar2 = (int *)FUN_005e09f0(local_18,local_18[0],*param_1,param_1[1],param_1[6],param_1[7]);
  }
  iVar1 = *piVar2;
  *param_1 = iVar1;
  param_1[1] = piVar2[1];
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != param_1[6])))) {
    FUN_00a3fb10();
  }
  return CONCAT31((int3)((uint)param_1[1] >> 8),param_1[1] != param_1[7]);
}



undefined4 * __thiscall FUN_005e08e0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::xpressive::detail::
                finder<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
                ::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int FUN_005e0900(void)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int unaff_ESI;
  
  iVar1 = 0;
  iVar3 = 7;
  do {
    for (uVar2 = *(uint *)(unaff_ESI + iVar3 * 4); uVar2 != 0; uVar2 = uVar2 >> 4) {
      iVar1 = iVar1 + (char)(&DAT_0326da54)[uVar2 & 0xf];
    }
    iVar3 = iVar3 + -1;
  } while (-1 < iVar3);
  return iVar1;
}



// Library Function - Single Match
//  public: class std::_String_const_iterator<char,struct std::char_traits<char>,class
// std::allocator<char> > & __thiscall std::_String_const_iterator<char,struct
// std::char_traits<char>,class std::allocator<char> >::operator++(void)
// 
// Library: Visual Studio 2008 Release

_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
operator++(_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
           *this)

{
  int iVar1;
  int iVar2;
  
  if (*(int *)this != -4) {
    if (*(int *)this == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *(int *)this;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar2 = iVar1 + 4;
    }
    else {
      iVar2 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar2) <= *(uint *)(this + 4)) {
      FUN_00a3fb10();
    }
  }
  *(int *)(this + 4) = *(int *)(this + 4) + 1;
  return this;
}



void FUN_005e0970(void)

{
  undefined uVar1;
  uint uVar2;
  int unaff_EDI;
  undefined auStack_18 [4];
  undefined4 local_14;
  undefined local_10;
  undefined4 local_f;
  undefined2 local_b;
  undefined local_9;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)auStack_18;
  local_10 = 0;
  local_f = 0;
  local_b = 0;
  local_9 = 0;
  uVar2 = 0;
  do {
    local_14 = CONCAT31(local_14._1_3_,"newline"[uVar2]);
    uVar1 = (**(code **)(**(int **)(unaff_EDI + 0x204) + 0x18))(local_14);
    (&local_10)[uVar2] = uVar1;
    uVar2 = uVar2 + 1;
  } while (uVar2 < 7);
  FUN_005e0d90(unaff_EDI);
  ___security_check_cookie_4();
  return;
}



// WARNING: Removing unreachable block (ram,0x005e0ad2)

int * FUN_005e09f0(int *param_1,undefined4 param_2,int param_3,undefined *param_4,int param_5,
                  undefined *param_6)

{
  byte bVar1;
  int iVar2;
  int unaff_ESI;
  int unaff_EDI;
  
  while( true ) {
    if ((param_3 != -4) && ((param_3 == 0 || (param_3 != param_5)))) {
      FUN_00a3fb10();
    }
    if (param_4 == param_6) break;
    if (param_3 != -4) {
      if (param_3 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_3 + 0x18) < 0x10) {
        iVar2 = param_3 + 4;
      }
      else {
        iVar2 = *(int *)(param_3 + 4);
      }
      if ((undefined *)(*(int *)(param_3 + 0x14) + iVar2) <= param_4) {
        FUN_00a3fb10();
      }
    }
    bVar1 = (**(code **)(**(int **)(unaff_ESI + 0x204) + 8))(*param_4);
    if ((*(uint *)(unaff_EDI + 0xc + (uint)(bVar1 >> 5) * 4) & 1 << (bVar1 & 0x1f)) != 0) break;
    if (param_3 != -4) {
      if (param_3 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_3 + 0x18) < 0x10) {
        iVar2 = param_3 + 4;
      }
      else {
        iVar2 = *(int *)(param_3 + 4);
      }
      if ((undefined *)(*(int *)(param_3 + 0x14) + iVar2) <= param_4) {
        FUN_00a3fb10();
      }
    }
    param_4 = param_4 + 1;
  }
  *param_1 = param_3;
  param_1[1] = (int)param_4;
  return param_1;
}



// WARNING: Removing unreachable block (ram,0x005e0bbb)

int * FUN_005e0af0(int *param_1,undefined4 param_2,int param_3,byte *param_4,int param_5,
                  byte *param_6)

{
  int iVar1;
  int unaff_EDI;
  
  while( true ) {
    if ((param_3 != -4) && ((param_3 == 0 || (param_3 != param_5)))) {
      FUN_00a3fb10();
    }
    if (param_4 == param_6) break;
    if (param_3 != -4) {
      if (param_3 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_3 + 0x18) < 0x10) {
        iVar1 = param_3 + 4;
      }
      else {
        iVar1 = *(int *)(param_3 + 4);
      }
      if ((byte *)(*(int *)(param_3 + 0x14) + iVar1) <= param_4) {
        FUN_00a3fb10();
      }
    }
    if ((*(uint *)(unaff_EDI + 0xc + (uint)(*param_4 >> 5) * 4) & 1 << (*param_4 & 0x1f)) != 0)
    break;
    if (param_3 != -4) {
      if (param_3 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_3 + 0x18) < 0x10) {
        iVar1 = param_3 + 4;
      }
      else {
        iVar1 = *(int *)(param_3 + 4);
      }
      if ((byte *)(*(int *)(param_3 + 0x14) + iVar1) <= param_4) {
        FUN_00a3fb10();
      }
    }
    param_4 = param_4 + 1;
  }
  *param_1 = param_3;
  param_1[1] = (int)param_4;
  return param_1;
}



int * __thiscall FUN_005e0be0(int *param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  
  if (*param_1_00 != -4) {
    if (*param_1_00 == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *param_1_00;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((uint)(param_1_00[1] + param_1) <= (uint)(*(int *)(iVar1 + 0x14) + iVar3)) {
      if (*(uint *)(iVar1 + 0x18) < 0x10) {
        uVar2 = iVar1 + 4;
      }
      else {
        uVar2 = *(uint *)(iVar1 + 4);
      }
      if (uVar2 <= (uint)(param_1_00[1] + param_1)) goto LAB_005e0c2f;
    }
    FUN_00a3fb10();
  }
LAB_005e0c2f:
  param_1_00[1] = param_1_00[1] + param_1;
  return param_1_00;
}



void FUN_005e0c40(void)

{
  code *pcVar1;
  uint uVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_5c [4];
  undefined local_58;
  undefined4 local_48;
  undefined4 local_44;
  undefined **local_40 [3];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_34 [4];
  undefined local_30;
  undefined4 local_20;
  undefined4 local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1d090;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_14;
  local_44 = 0xf;
  local_48 = 0;
  local_58 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_5c,"invalid bitset<N> position",0x1a);
  local_c = 0;
  FUN_00a3f1a9(uVar2);
  local_c._0_1_ = 1;
  local_40[0] = std::logic_error::vftable;
  local_1c = 0xf;
  local_20 = 0;
  local_30 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_34,local_5c,0,0xffffffff);
  local_c = (uint)local_c._1_3_ << 8;
  local_40[0] = std::out_of_range::vftable;
  __CxxThrowException_8(local_40,&DAT_03115668);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_005e0cf0(char *param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *unaff_ESI;
  
  iVar1 = *unaff_ESI;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != unaff_ESI[6])))) {
    FUN_00a3fb10();
  }
  if (unaff_ESI[1] == unaff_ESI[7]) {
    *(undefined *)((int)unaff_ESI + 0x29) = 1;
    return 0;
  }
  if (*unaff_ESI != -4) {
    if (*unaff_ESI == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *unaff_ESI;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar3) <= (uint)unaff_ESI[1]) {
      FUN_00a3fb10();
    }
  }
  if (*(char *)unaff_ESI[1] == *param_1) {
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)unaff_ESI);
    cVar2 = FUN_005e1210();
    if (cVar2 != '\0') {
      return 1;
    }
    FUN_00429850();
  }
  return 0;
}



void __fastcall FUN_005e0d90(undefined4 param_1_00,undefined4 param_2,int param_1)

{
  uint uVar1;
  undefined uVar2;
  short sVar3;
  undefined4 ***pppuVar4;
  undefined4 ***pppuVar5;
  undefined4 ***pppuVar6;
  uint uVar7;
  undefined auStack_34 [4];
  undefined4 local_30;
  undefined local_2c [4];
  undefined4 ***local_28 [4];
  uint local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d058;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_34;
  ExceptionList = &local_c;
  sVar3 = FUN_005e0fb0(param_1_00,DAT_0323f878 ^ (uint)&stack0xffffffbc);
  if (sVar3 != 0) goto LAB_005e0f17;
  local_28[0] = (undefined4 ***)((uint)local_28[0] & 0xffffff00);
  local_14 = 0xf;
  local_18 = 0;
  FUN_004f4832(param_2,param_1_00,local_30);
  uVar1 = local_18;
  local_4 = 0;
  uVar7 = 0;
  if (local_18 != 0) {
    do {
      if (local_18 < uVar7) {
        FUN_00a3fb10();
      }
      pppuVar4 = local_28[0];
      if (local_14 < 0x10) {
        pppuVar4 = local_28;
      }
      local_30 = CONCAT31(local_30._1_3_,*(undefined *)((int)pppuVar4 + uVar7));
      uVar2 = (**(code **)(**(int **)(param_1 + 0x204) + 8))(local_30);
      if (local_18 < uVar7) {
        FUN_00a3fb10();
      }
      pppuVar4 = local_28[0];
      if (local_14 < 0x10) {
        pppuVar4 = local_28;
      }
      *(undefined *)((int)pppuVar4 + uVar7) = uVar2;
      uVar7 = uVar7 + 1;
    } while (uVar7 < uVar1);
  }
  pppuVar4 = local_28[0];
  if (local_14 < 0x10) {
    pppuVar4 = local_28;
  }
  pppuVar4 = (undefined4 ***)((int)pppuVar4 + local_18);
  if (pppuVar4 == (undefined4 ***)0x0) {
LAB_005e0ea8:
    FUN_00a3fb10();
  }
  else {
    pppuVar5 = local_28[0];
    if (local_14 < 0x10) {
      pppuVar5 = local_28;
    }
    if (pppuVar4 < pppuVar5) goto LAB_005e0ea8;
    pppuVar5 = local_28[0];
    if (local_14 < 0x10) {
      pppuVar5 = local_28;
    }
    if ((undefined4 ***)((int)pppuVar5 + local_18) < pppuVar4) goto LAB_005e0ea8;
  }
  if (local_14 < 0x10) {
    pppuVar5 = local_28;
LAB_005e0ec8:
    pppuVar6 = local_28[0];
    if (local_14 < 0x10) {
      pppuVar6 = local_28;
    }
    if (pppuVar5 < pppuVar6) goto LAB_005e0ee8;
    pppuVar6 = local_28[0];
    if (local_14 < 0x10) {
      pppuVar6 = local_28;
    }
    if ((undefined4 ***)((int)pppuVar6 + local_18) < pppuVar5) goto LAB_005e0ee8;
  }
  else {
    pppuVar5 = local_28[0];
    if (local_28[0] != (undefined4 ***)0x0) goto LAB_005e0ec8;
LAB_005e0ee8:
    FUN_00a3fb10();
  }
  FUN_005e1020(local_2c,pppuVar5,local_2c,pppuVar4);
  if (0xf < local_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_28[0]);
  }
LAB_005e0f17:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005e0f40(undefined4 param_1,undefined4 param_2)

{
  int in_EAX;
  int local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined local_13;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined local_4;
  
  local_24 = in_EAX + 0x104;
  local_20 = 0;
  local_1c = 0;
  local_18 = 0;
  local_13 = 0;
  local_10 = 0;
  local_c = 0;
  local_8 = 0;
  local_4 = 0;
  FUN_005e00f0();
  FUN_005e1470(in_EAX,param_2,&local_24);
  FUN_005e1470(in_EAX + 0x80,param_2,&local_24);
  return;
}



undefined2 FUN_005e0fb0(char *param_1)

{
  char *pcVar1;
  char cVar2;
  int *piVar3;
  char **ppcVar4;
  int iVar5;
  char *pcVar6;
  char *unaff_EBX;
  char *pcVar7;
  
  piVar3 = (int *)FUN_005e1080();
  iVar5 = *piVar3;
  do {
    if (iVar5 == 0) {
      return 0;
    }
    ppcVar4 = (char **)FUN_005e1080();
    pcVar6 = *ppcVar4;
    cVar2 = *pcVar6;
    pcVar7 = unaff_EBX;
    while (cVar2 != '\0') {
      if (pcVar7 == param_1) {
        if (*pcVar6 != '\0') goto LAB_005e0ff1;
        break;
      }
      if (cVar2 != *pcVar7) goto LAB_005e0ff1;
      pcVar1 = pcVar6 + 1;
      pcVar6 = pcVar6 + 1;
      pcVar7 = pcVar7 + 1;
      cVar2 = *pcVar1;
    }
    if (pcVar7 == param_1) {
      iVar5 = FUN_005e1080();
      return *(undefined2 *)(iVar5 + 4);
    }
LAB_005e0ff1:
    piVar3 = (int *)FUN_005e1080();
    iVar5 = *piVar3;
  } while( true );
}



undefined2 FUN_005e1020(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  
  piVar2 = (int *)FUN_005e1080();
  iVar3 = *piVar2;
  while( true ) {
    if (iVar3 == 0) {
      return 0;
    }
    FUN_005e1080();
    cVar1 = FUN_005e1260(param_1,param_2,param_3,param_4);
    if (cVar1 != '\0') break;
    piVar2 = (int *)FUN_005e1080();
    iVar3 = *piVar2;
  }
  iVar3 = FUN_005e1080();
  return *(undefined2 *)(iVar3 + 4);
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * FUN_005e1080(void)

{
  int in_EAX;
  
  if ((_DAT_032ef85c & 1) == 0) {
    _DAT_032ef85c = _DAT_032ef85c | 1;
    _DAT_032ef864 = 0x107;
    _DAT_032ef86c = 0x103;
    _DAT_032ef874 = 0x2000;
    _DAT_032ef87c = 0x20;
    _DAT_032ef884 = 4;
    _DAT_032ef88c = 4;
    _DAT_032ef894 = 0x117;
    _DAT_032ef89c = 2;
    _DAT_032ef8a4 = 0x1000;
    _DAT_032ef8ac = 0x1d7;
    _DAT_032ef8b4 = 0x10;
    _DAT_032ef8cc = 1;
    _DAT_032ef8bc = 0x48;
    _DAT_032ef8c4 = 0x48;
    _DAT_032ef8d4 = 0x4107;
    _DAT_032ef860 = "alnum";
    _DAT_032ef868 = "alpha";
    _DAT_032ef870 = "blank";
    _DAT_032ef878 = "cntrl";
    _DAT_032ef880 = &DAT_026b7d68;
    _DAT_032ef888 = "digit";
    _DAT_032ef890 = "graph";
    _DAT_032ef898 = "lower";
    _DAT_032ef8a0 = "newline";
    _DAT_032ef8a8 = "print";
    _DAT_032ef8b0 = "punct";
    _DAT_032ef8b8 = &DAT_026b7d3c;
    _DAT_032ef8c0 = "space";
    _DAT_032ef8c8 = "upper";
    _DAT_032ef8d0 = &DAT_026b7d24;
    _DAT_032ef8d8 = "xdigit";
    _DAT_032ef8dc = 0x80;
    _DAT_032ef8e0 = 0;
    _DAT_032ef8e4 = 0;
  }
  return &DAT_032ef860 + in_EAX * 8;
}



undefined4 __fastcall FUN_005e1210(undefined4 *param_1)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  char cVar5;
  int *in_EAX;
  
  iVar1 = *in_EAX;
  iVar2 = param_1[2];
  uVar3 = *(undefined4 *)(iVar2 + 0x18 + iVar1 * 0x24);
  uVar4 = *(undefined4 *)(iVar2 + 0x1c + iVar1 * 0x24);
  iVar2 = iVar2 + iVar1 * 0x24;
  *(undefined4 *)(iVar2 + 0x18) = *param_1;
  *(undefined4 *)(iVar2 + 0x1c) = param_1[1];
  cVar5 = FUN_005e1360();
  if (cVar5 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar2 + 0x18) = uVar3;
  *(undefined4 *)(iVar2 + 0x1c) = uVar4;
  return 0;
}



uint FUN_005e1260(uint param_1,char *param_2,uint param_3,char *param_4)

{
  char cVar1;
  char *in_EAX;
  int iVar2;
  
  cVar1 = *in_EAX;
  do {
    if (cVar1 == '\0') {
LAB_005e1326:
      if ((param_1 != 0xfffffffc) && ((param_1 == 0 || (param_1 != param_3)))) {
        FUN_00a3fb10();
      }
      if (param_2 != param_4) {
        return 0;
      }
      return 1;
    }
    if ((param_1 != 0xfffffffc) && ((param_1 == 0 || (param_1 != param_3)))) {
      FUN_00a3fb10();
    }
    if (param_2 == param_4) {
      if (*in_EAX != '\0') {
        return 0;
      }
      goto LAB_005e1326;
    }
    if (param_1 != 0xfffffffc) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 0x10) {
        iVar2 = param_1 + 4;
      }
      else {
        iVar2 = *(int *)(param_1 + 4);
      }
      if ((char *)(*(int *)(param_1 + 0x14) + iVar2) <= param_2) {
        FUN_00a3fb10();
      }
    }
    if (*in_EAX != *param_2) {
      return param_1 & 0xffffff00;
    }
    in_EAX = in_EAX + 1;
    if (param_1 != 0xfffffffc) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 0x10) {
        iVar2 = param_1 + 4;
      }
      else {
        iVar2 = *(int *)(param_1 + 4);
      }
      if ((char *)(*(int *)(param_1 + 0x14) + iVar2) <= param_2) {
        FUN_00a3fb10();
      }
    }
    param_2 = param_2 + 1;
    cVar1 = *in_EAX;
  } while( true );
}



undefined4 FUN_005e1360(void)

{
  int iVar1;
  int iVar2;
  char cVar3;
  undefined4 uVar4;
  int iVar5;
  int unaff_EBX;
  int *unaff_ESI;
  
  iVar1 = *unaff_ESI;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != unaff_ESI[6])))) {
    FUN_00a3fb10();
  }
  if (unaff_ESI[1] == unaff_ESI[7]) {
    *(undefined *)((int)unaff_ESI + 0x29) = 1;
  }
  else {
    iVar1 = unaff_ESI[0xe];
    if (*unaff_ESI != -4) {
      if (*unaff_ESI == 0) {
        FUN_00a3fb10();
      }
      iVar2 = *unaff_ESI;
      if (*(uint *)(iVar2 + 0x18) < 0x10) {
        iVar5 = iVar2 + 4;
      }
      else {
        iVar5 = *(int *)(iVar2 + 4);
      }
      if ((uint)(*(int *)(iVar2 + 0x14) + iVar5) <= (uint)unaff_ESI[1]) {
        FUN_00a3fb10();
      }
    }
    uVar4 = FUN_005e1420(*(undefined *)unaff_ESI[1],iVar1 + 8);
    if ((char)uVar4 == '\0') {
      return uVar4;
    }
  }
  cVar3 = FUN_005e1820(unaff_ESI,unaff_EBX + 0x78);
  if (cVar3 == '\0') {
    cVar3 = FUN_005e1820(unaff_ESI,unaff_EBX + 0xf8);
    if (cVar3 == '\0') {
      return 0;
    }
  }
  return 1;
}



undefined4 __thiscall FUN_005e1420(char *param_1_00,uint param_1,int param_2)

{
  uint uVar1;
  ulonglong uVar2;
  
  uVar1 = param_1 & 0xff;
  if (*param_1_00 != '\0') {
    uVar1 = (**(code **)(**(int **)(param_2 + 0x204) + 8))(param_1);
  }
  uVar2 = CONCAT44(param_1_00 + 4,uVar1) & 0xffffffff000000ff;
  if (0xff < (uVar1 & 0xff)) {
    uVar2 = FUN_005e0c40();
  }
  return CONCAT31((uint3)(uVar2 >> 8) >> 5,
                  (*(uint *)((int)(uVar2 >> 0x20) + ((uint)uVar2 >> 5) * 4) &
                  1 << ((byte)uVar2 & 0x1f)) != 0);
}



void FUN_005e1470(int param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined *puVar1;
  undefined4 *puVar2;
  int iVar3;
  int unaff_ESI;
  
  FUN_005e14c0(&param_2);
  puVar2 = (undefined4 *)FUN_005e16f0();
  *(undefined4 *)(param_1 + 0x78) = *puVar2;
  if ((*(int *)(unaff_ESI + 0x1c) != 0) &&
     (iVar3 = *(int *)(unaff_ESI + 0x1c) + -1, *(int *)(unaff_ESI + 0x1c) = iVar3, iVar3 == 0)) {
    *(undefined4 *)(unaff_ESI + 0x18) = 0;
  }
  puVar1 = (undefined *)*param_3;
  *puVar1 = 0;
  iVar3 = 7;
  do {
    iVar3 = iVar3 + -1;
    *(undefined4 *)(puVar1 + iVar3 * 4 + 8) = 0xffffffff;
  } while (-1 < iVar3);
  return;
}



void FUN_005e14c0(undefined4 *param_1)

{
  undefined4 *puVar1;
  int in_EAX;
  undefined4 uVar2;
  uint uVar3;
  uint uVar4;
  
  if (((*(int *)(in_EAX + 0x18) + *(int *)(in_EAX + 0x1c) & 3U) == 0) &&
     (*(uint *)(in_EAX + 0x14) <= *(int *)(in_EAX + 0x1c) + 4U >> 2)) {
    FUN_005e1530();
  }
  uVar4 = *(int *)(in_EAX + 0x18) + *(int *)(in_EAX + 0x1c);
  uVar3 = uVar4 >> 2;
  if (*(uint *)(in_EAX + 0x14) <= uVar3) {
    uVar3 = uVar3 - *(uint *)(in_EAX + 0x14);
  }
  if (*(int *)(*(int *)(in_EAX + 0x10) + uVar3 * 4) == 0) {
    uVar2 = FUN_005e16a0();
    *(undefined4 *)(*(int *)(in_EAX + 0x10) + uVar3 * 4) = uVar2;
  }
  puVar1 = (undefined4 *)(*(int *)(*(int *)(in_EAX + 0x10) + uVar3 * 4) + (uVar4 & 3) * 4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = *param_1;
  }
  *(int *)(in_EAX + 0x1c) = *(int *)(in_EAX + 0x1c) + 1;
  return;
}



void FUN_005e1530(void)

{
  void *pvVar1;
  rsize_t _DstSize;
  uint uVar2;
  undefined4 *_Dst;
  int iVar3;
  uint extraout_ECX;
  uint uVar4;
  int unaff_EBX;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  uint local_8;
  
  uVar4 = *(uint *)(unaff_EBX + 0x14);
  local_8 = 1;
  if (uVar4 == 0xfffffff) {
    FUN_0079de80();
    uVar4 = extraout_ECX;
  }
  uVar2 = uVar4 >> 1;
  if (uVar2 < 8) {
    uVar2 = 8;
  }
  else if (uVar2 < 2) goto LAB_005e1573;
  if (uVar4 <= 0xfffffff - uVar2) {
    local_8 = uVar2;
  }
LAB_005e1573:
  uVar2 = *(uint *)(unaff_EBX + 0x18) >> 2;
  if (uVar4 + local_8 == 0) {
    _Dst = (undefined4 *)operator_new(0);
  }
  else {
    _Dst = (undefined4 *)FUN_005e16a0();
  }
  iVar5 = uVar2 * 4;
  pvVar1 = (void *)(iVar5 + *(int *)(unaff_EBX + 0x10));
  iVar3 = (*(int *)(unaff_EBX + 0x14) * 4 - (int)pvVar1) + *(int *)(unaff_EBX + 0x10) >> 2;
  puVar7 = _Dst + uVar2 + iVar3;
  if (iVar3 != 0) {
    _memmove_s(_Dst + uVar2,iVar3 * 4,pvVar1,iVar3 * 4);
  }
  if (local_8 < uVar2) {
    iVar3 = (int)(local_8 * 4) >> 2;
    if (iVar3 != 0) {
      _DstSize = iVar3 * 4;
      _memmove_s(puVar7,_DstSize,*(void **)(unaff_EBX + 0x10),_DstSize);
    }
    pvVar1 = (void *)(*(int *)(unaff_EBX + 0x10) + local_8 * 4);
    iVar5 = (iVar5 - (int)pvVar1) + *(int *)(unaff_EBX + 0x10) >> 2;
    puVar7 = _Dst + iVar5;
    uVar2 = local_8;
    if (iVar5 != 0) {
      _memmove_s(_Dst,iVar5 * 4,pvVar1,iVar5 * 4);
    }
  }
  else {
    iVar5 = iVar5 >> 2;
    puVar6 = puVar7 + iVar5;
    if (iVar5 != 0) {
      _memmove_s(puVar7,iVar5 * 4,*(void **)(unaff_EBX + 0x10),iVar5 * 4);
    }
    iVar5 = local_8 - uVar2;
    puVar7 = _Dst;
    if (iVar5 != 0) {
      for (; iVar5 != 0; iVar5 = iVar5 + -1) {
        *puVar6 = 0;
        puVar6 = puVar6 + 1;
      }
    }
  }
  if (uVar2 != 0) {
    for (; uVar2 != 0; uVar2 = uVar2 - 1) {
      *puVar7 = 0;
      puVar7 = puVar7 + 1;
    }
  }
  if (*(int *)(unaff_EBX + 0x10) == 0) {
    *(int *)(unaff_EBX + 0x14) = *(int *)(unaff_EBX + 0x14) + local_8;
    *(undefined4 **)(unaff_EBX + 0x10) = _Dst;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(int *)(unaff_EBX + 0x10));
}



void __fastcall FUN_005e16a0(uint param_1)

{
  uint extraout_ECX;
  char *local_10;
  undefined **local_c [3];
  
  if ((uint)(0xffffffff / (ulonglong)param_1) < 4) {
    local_10 = (char *)0x0;
    std::exception::exception((exception *)local_c,&local_10);
    local_c[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_c,&DAT_031153a4);
    param_1 = extraout_ECX;
  }
  operator_new(param_1 * 4);
  return;
}



void FUN_005e16f0(void)

{
  int in_EAX;
  
  if (*(int *)(in_EAX + 0x1c) + *(uint *)(in_EAX + 0x18) < *(uint *)(in_EAX + 0x18)) {
    FUN_00a3fb10();
  }
  FUN_005e17d0();
  FUN_005e1740();
  return;
}



int FUN_005e1740(void)

{
  int **in_EAX;
  uint uVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  
  uVar1 = (uint)in_EAX[1] & 3;
  piVar2 = *in_EAX;
  uVar5 = (uint)in_EAX[1] >> 2;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    piVar2 = *in_EAX;
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
      goto LAB_005e1769;
    }
  }
  iVar4 = *piVar2;
LAB_005e1769:
  if (piVar2 == (int *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar2;
  }
  if ((int *)(*(int *)(iVar3 + 0x1c) + *(int *)(iVar4 + 0x18)) <= in_EAX[1]) {
    FUN_00a3fb10();
  }
  piVar2 = *in_EAX;
  if (piVar2 == (int *)0x0) {
    iVar4 = 0;
  }
  else {
    iVar4 = *piVar2;
  }
  if (*(uint *)(iVar4 + 0x14) <= uVar5) {
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *piVar2;
    }
    uVar5 = uVar5 - *(int *)(iVar4 + 0x14);
  }
  if (piVar2 != (int *)0x0) {
    return *(int *)(*(int *)(*piVar2 + 0x10) + uVar5 * 4) + uVar1 * 4;
  }
  return *(int *)(iRam00000010 + uVar5 * 4) + uVar1 * 4;
}



void FUN_005e17d0(void)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 != (int *)0x0) goto LAB_005e17e2;
    iVar2 = 0;
  }
  else {
LAB_005e17e2:
    iVar2 = *piVar1;
  }
  if (piVar1 == (int *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar1;
  }
  if ((int)unaff_ESI[1] - 1U <= (uint)(*(int *)(iVar3 + 0x1c) + *(int *)(iVar2 + 0x18))) {
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *piVar1;
    }
    if (*(uint *)(iVar2 + 0x18) <= (int)unaff_ESI[1] - 1U) goto LAB_005e1815;
  }
  FUN_00a3fb10();
LAB_005e1815:
  unaff_ESI[1] = (int *)((int)unaff_ESI[1] + -1);
  return;
}



void __thiscall FUN_005e1820(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::stacked_xpression<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::alternate_end_matcher,struct_boost::xpressive::detail::no_next>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void FUN_005e1880(void)

{
  FUN_005e2ed0();
  return;
}



void __thiscall FUN_005e18a0(int *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  undefined uVar3;
  int *in_EAX;
  undefined local_10 [16];
  
  if (*(int *)(param_1 + 0x4c) == *(int *)param_1_00[0xb]) {
    iVar1 = param_1_00[2];
    iVar2 = *param_1_00;
    if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != *(int *)(iVar1 + 0x18))))) {
      FUN_00a3fb10();
    }
    if (param_1_00[1] == *(int *)(iVar1 + 0x1c)) {
      (**(code **)(*in_EAX + 4))(param_1_00);
      return;
    }
  }
  FUN_005e1920(param_1,in_EAX,local_10);
  uVar3 = (**(code **)(**(int **)(param_1 + 0x4c) + 4))(param_1_00);
  FUN_005e1980(param_1_00,uVar3);
  return;
}



void FUN_005e1920(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 *unaff_EBX;
  undefined4 *unaff_EDI;
  
  uVar1 = unaff_EDI[0xc];
  uVar2 = unaff_EDI[0xd];
  *unaff_EBX = unaff_EDI[0xb];
  uVar3 = unaff_EDI[0xe];
  unaff_EBX[1] = uVar1;
  iVar4 = unaff_EDI[0xf];
  unaff_EBX[2] = uVar2;
  unaff_EBX[3] = uVar3;
  FUN_005e1ad0(iVar4 + 0x14);
  FUN_005e1a20();
  unaff_EDI[0xd] = param_2;
  iVar4 = unaff_EDI[2];
  unaff_EDI[0xc] = param_3;
  *(undefined4 *)(iVar4 + 0x18) = *unaff_EDI;
  *(undefined4 *)(iVar4 + 0x1c) = unaff_EDI[1];
  return;
}



undefined4 FUN_005e1980(int param_1,char param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int *piVar6;
  
  piVar1 = *(int **)(param_1 + 0x30);
  if (param_2 == '\0') {
    iVar2 = *piVar1;
    FUN_005e1df0();
    iVar3 = *(int *)(iVar2 + 0x48);
    iVar5 = iVar3 + 0x50;
    piVar6 = (int *)(*(int *)(param_1 + 0x3c) + 0x14);
    if (*(int *)(iVar3 + 0x54) != iVar5) {
      FUN_005e1e40(iVar5);
    }
    piVar4 = *(int **)(iVar2 + 0x48);
    *(int *)(*piVar4 + 4) = piVar4[1];
    *(int *)piVar4[1] = *piVar4;
    piVar4[1] = (int)piVar6;
    *piVar4 = *piVar6;
    *(int **)(*piVar6 + 4) = piVar4;
    *piVar6 = (int)piVar4;
  }
  *(int *)(param_1 + 0x2c) = *piVar1;
  *(int *)(param_1 + 0x30) = piVar1[1];
  *(int *)(param_1 + 0x34) = piVar1[2];
  *(int *)(param_1 + 0x38) = piVar1[3];
  iVar2 = *(int *)(param_1 + 0x2c);
  *(undefined4 *)(param_1 + 8) = *(undefined4 *)(iVar2 + 8);
  *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(iVar2 + 4);
  return CONCAT31((int3)((uint)iVar2 >> 8),param_2);
}



void __fastcall FUN_005e1a20(int param_1)

{
  undefined4 uVar1;
  undefined4 in_EAX;
  int iVar2;
  int unaff_ESI;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined local_4;
  
  uVar1 = *(undefined4 *)(param_1 + 0x4c);
  *(undefined4 *)(unaff_ESI + 0x2c) = in_EAX;
  *(undefined4 *)(unaff_ESI + 0x38) = *(undefined4 *)(param_1 + 0x50);
  *(int *)(unaff_ESI + 0xc) = *(int *)(param_1 + 0x70) + 1;
  local_24 = *(undefined4 *)(unaff_ESI + 0x10);
  local_20 = *(undefined4 *)(unaff_ESI + 0x14);
  local_c = *(undefined4 *)(unaff_ESI + 0x10);
  local_14 = 0;
  local_10 = 0;
  local_4 = 0;
  local_8 = *(undefined4 *)(unaff_ESI + 0x14);
  local_1c = local_24;
  local_18 = local_20;
  iVar2 = FUN_005e1da0(&local_24,0);
  *(int *)(unaff_ESI + 8) = iVar2;
  iVar2 = iVar2 + *(int *)(param_1 + 0x74) * 0x24;
  *(int *)(unaff_ESI + 8) = iVar2;
  FUN_005e1f00(uVar1,iVar2,*(undefined4 *)(unaff_ESI + 0xc),param_1 + 0x58);
  return;
}



int FUN_005e1ad0(int param_1)

{
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2713d;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 4) == param_1) {
    FUN_005e1b70();
    local_4 = 0;
    FUN_005e1cd0();
    local_4 = 0xffffffff;
    FUN_005e1bf0();
  }
  else {
    FUN_005e1d50();
  }
  ExceptionList = local_c;
  return *unaff_ESI + 8;
}



undefined4 * FUN_005e1b70(undefined4 *param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c21e8d;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  *(undefined *)(param_1 + 3) = 0;
  *(undefined *)(param_1 + 6) = 0;
  *(undefined *)(param_1 + 0xc) = 0;
  puVar1 = param_1 + 0x12;
  *puVar1 = puVar1;
  param_1[0x13] = puVar1;
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  local_4._0_1_ = 5;
  local_4._1_3_ = 0;
  FUN_005db330(param_1 + 0x16);
  local_4 = CONCAT31(local_4._1_3_,6);
  FUN_005daa60(param_1 + 0x1e);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005e1bf0(int param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  void *unaff_ESI;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  uStack_8 = &LAB_00c1d032;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 5;
  FUN_005daba0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_005e1eb0(param_1 + 0x58);
  uStack_8._0_1_ = 4;
  puVar2 = *(undefined4 **)(param_1 + 0x54);
  if (puVar2 != (undefined4 *)0x0) {
    piVar3 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar3 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      (**(code **)*puVar2)(1);
    }
  }
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,3);
  piVar3 = *(int **)(param_1 + 0x50);
  if (piVar3 != (int *)0x0) {
    LOCK();
    iVar1 = *piVar3;
    *piVar3 = iVar1 + -1;
    UNLOCK();
    if ((iVar1 + -1 == 0) && (piVar3 != (int *)0x0)) {
      FUN_005e2e70(piVar3);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(piVar3);
    }
  }
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,2);
  FUN_005e1f80();
  if (*(char *)(param_1 + 0x30) != '\0') {
    *(undefined *)(param_1 + 0x30) = 0;
  }
  if (*(char *)(param_1 + 0x18) != '\0') {
    *(undefined *)(param_1 + 0x18) = 0;
  }
  if (*(char *)(param_1 + 0xc) != '\0') {
    *(undefined *)(param_1 + 0xc) = 0;
  }
  ExceptionList = unaff_ESI;
  return;
}



void __fastcall FUN_005e1cd0(int **param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2710b;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  ppiVar1 = (int **)operator_new(0x98);
  local_c = 0;
  ppiVar2 = (int **)0x0;
  if (ppiVar1 != (int **)0x0) {
    FUN_005e2050(ppiVar1 + 2);
    ppiVar2 = ppiVar1;
  }
  ppiVar2[1] = (int *)param_1;
  *ppiVar2 = *param_1;
  (*param_1)[1] = (int)ppiVar2;
  *param_1 = (int *)ppiVar2;
  ExceptionList = local_14;
  return;
}



void FUN_005e1d50(int **param_1,int **param_2)

{
  (*param_2)[1] = (int)param_2[1];
  *param_2[1] = (int)*param_2;
  param_2[1] = (int *)param_1;
  *param_2 = *param_1;
  (*param_1)[1] = (int)param_2;
  *param_1 = (int *)param_2;
  return;
}



void __thiscall FUN_005e1da0(int param_1_00,undefined4 *param_1)

{
  int in_EAX;
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = *(undefined4 **)(in_EAX + 8);
  *(undefined4 **)(in_EAX + 8) = puVar1 + param_1_00 * 9;
  if (*(undefined4 **)(in_EAX + 0xc) < puVar1 + param_1_00 * 9) {
    *(undefined4 **)(in_EAX + 8) = puVar1;
    puVar1 = (undefined4 *)FUN_005e21f0(in_EAX,param_1_00,param_1);
  }
  if (param_1_00 != 0) {
    do {
      param_1_00 = param_1_00 + -1;
      puVar3 = param_1;
      puVar4 = puVar1;
      for (iVar2 = 9; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar4 = *puVar3;
        puVar3 = puVar3 + 1;
        puVar4 = puVar4 + 1;
      }
      puVar1 = puVar1 + 9;
    } while (param_1_00 != 0);
  }
  return;
}



void FUN_005e1df0(void)

{
  int **ppiVar1;
  char cVar2;
  int **unaff_ESI;
  int *unaff_EDI;
  
  cVar2 = FUN_005e1ff0();
  while (cVar2 == '\0') {
    (*unaff_ESI)[1] = (int)unaff_ESI[1];
    ppiVar1 = (int **)(*unaff_ESI)[3];
    *unaff_ESI = (int *)ppiVar1;
    unaff_ESI[1] = *ppiVar1;
    unaff_ESI[2] = (int *)(*unaff_ESI)[1];
    unaff_ESI[3] = (int *)(*unaff_ESI)[2];
    cVar2 = FUN_005e1ff0();
  }
  unaff_ESI[2] = unaff_EDI;
  (*unaff_ESI)[1] = (int)unaff_EDI;
  return;
}



void __thiscall FUN_005e1e40(int *param_1_00,int *param_1)

{
  int *piVar1;
  
  for (piVar1 = (int *)param_1[1]; piVar1 != param_1; piVar1 = (int *)piVar1[1]) {
    if ((int *)piVar1[0x15] != piVar1 + 0x14) {
      FUN_005e1e40(piVar1 + 0x14);
    }
  }
  if ((int *)param_1[1] != param_1) {
    *(int **)(*param_1 + 4) = param_1_00;
    *(int *)param_1[1] = *param_1_00;
    *(int *)(*param_1_00 + 4) = param_1[1];
    *param_1_00 = *param_1;
    param_1[1] = (int)param_1;
    *param_1 = (int)param_1;
  }
  return;
}



void __fastcall thunk_FUN_005e1f80(int param_1)

{
  int iVar1;
  int *piVar2;
  
  if (*(int *)(param_1 + 4) != param_1) {
    iVar1 = *(int *)(param_1 + 4);
    piVar2 = *(int **)(iVar1 + 4);
    *(int **)(param_1 + 4) = piVar2;
    *piVar2 = param_1;
    FUN_005e1bf0(iVar1 + 8);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void FUN_005e1ea0(void)

{
  FUN_005e1eb0();
  return;
}



void FUN_005e1eb0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1cfc8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e2010(DAT_0323f878 ^ (uint)&stack0xfffffff0);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void FUN_005e1f00(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int *piVar1;
  int iVar2;
  undefined4 *puVar3;
  int *in_EAX;
  undefined4 *unaff_EDI;
  
  iVar2 = *in_EAX;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  puVar3 = (undefined4 *)unaff_EDI[0x15];
  unaff_EDI[0x15] = iVar2;
  if (puVar3 != (undefined4 *)0x0) {
    piVar1 = puVar3 + 1;
    LOCK();
    iVar2 = *piVar1;
    *piVar1 = iVar2 + -1;
    UNLOCK();
    if (((iVar2 + -1 == 0) && (piVar1 != (int *)0x0)) && (puVar3 != (undefined4 *)0x0)) {
      (**(code **)*puVar3)(1);
    }
  }
  *unaff_EDI = param_1;
  FUN_005dd5c0(param_4);
  unaff_EDI[1] = param_3;
  unaff_EDI[2] = param_2;
  return;
}



void FUN_005e1f70(void)

{
  char *in_EAX;
  
  if (*in_EAX != '\0') {
    *in_EAX = '\0';
  }
  return;
}



void __fastcall FUN_005e1f80(int param_1)

{
  int iVar1;
  int *piVar2;
  
  if (*(int *)(param_1 + 4) != param_1) {
    iVar1 = *(int *)(param_1 + 4);
    piVar2 = *(int **)(iVar1 + 4);
    *(int **)(param_1 + 4) = piVar2;
    *piVar2 = param_1;
    FUN_005e1bf0(iVar1 + 8);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void FUN_005e1fc0(void)

{
  int iVar1;
  int *piVar2;
  int **in_EAX;
  
  piVar2 = *in_EAX;
  if (piVar2 != (int *)0x0) {
    LOCK();
    iVar1 = *piVar2;
    *piVar2 = iVar1 + -1;
    UNLOCK();
    if ((iVar1 + -1 == 0) && (piVar2 != (int *)0x0)) {
      FUN_005e2e70(piVar2);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(piVar2);
    }
  }
  return;
}



undefined4 __fastcall FUN_005e1ff0(int param_1)

{
  uint in_EAX;
  
  if ((*(uint *)(param_1 + 4) <= in_EAX) && (in_EAX < *(uint *)(param_1 + 0xc))) {
    return 1;
  }
  return 0;
}



void FUN_005e2010(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_005e2480(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



undefined4 * __thiscall FUN_005e2050(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  uint local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c270d8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  *param_1 = *param_1_00;
  param_1[1] = 0;
  param_1[2] = 0;
  *(undefined *)(param_1 + 3) = 0;
  *(undefined *)(param_1 + 6) = 0;
  *(undefined *)(param_1 + 0xc) = 0;
  puVar1 = param_1 + 0x12;
  *puVar1 = puVar1;
  param_1[0x13] = puVar1;
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  local_4._0_1_ = 5;
  local_4._1_3_ = 0;
  FUN_005e23d0(param_1 + 0x16,param_1_00 + 0x16);
  local_4._0_1_ = 6;
  FUN_005daac0(param_1 + 0x1e);
  local_4 = CONCAT31(local_4._1_3_,7);
  if (param_1_00[1] != 0) {
    iVar3 = FUN_005da070(uVar2);
    if (*(char *)(iVar3 + 0x10) != '\0') {
      FUN_005e2560();
      local_30 = param_1_00[4];
      local_2c = param_1_00[5];
      iVar3 = param_1_00[1];
      local_20 = 0;
      local_1c = 0;
      local_10 = 0;
      local_28 = local_30;
      local_24 = local_2c;
      local_18 = local_30;
      local_14 = local_2c;
      uVar4 = FUN_005e1da0(&local_30,0);
      local_34 = local_34 & 0xffffff00;
      param_1[2] = uVar4;
      param_1[1] = iVar3;
      FUN_005e2e20(uVar4,param_1,param_1,local_34);
      if (*(char *)(param_1 + 3) == '\0') {
        if (*(char *)(param_1_00 + 3) != '\0') {
          if (param_1 + 4 != (undefined4 *)0x0) {
            param_1[4] = param_1_00[4];
            param_1[5] = param_1_00[5];
          }
          *(undefined *)(param_1 + 3) = 1;
        }
      }
      else if (*(char *)(param_1_00 + 3) == '\0') {
        *(undefined *)(param_1 + 3) = 0;
      }
      else {
        param_1[4] = param_1_00[4];
        param_1[5] = param_1_00[5];
      }
      FUN_005e2a10();
      FUN_005e2a10();
      FUN_005e25d0();
      FUN_005df440();
    }
  }
  ExceptionList = local_c;
  return param_1;
}



int * FUN_005e21f0(int **param_1,int *param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  double dVar4;
  int **ppiVar5;
  uint uVar6;
  uint uVar7;
  int *piVar8;
  int iVar9;
  int local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  uVar6 = (uint)param_2;
  ppiVar5 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c0c6f6;
  local_c = ExceptionList;
  uVar7 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  if (*param_1 == (int *)0x0) {
    param_1 = (int **)0x100;
    piVar8 = (int *)&param_1;
    if (0xff < param_2) {
      piVar8 = (int *)&param_2;
    }
    iVar3 = *piVar8;
    piVar8 = (int *)operator_new(0x14);
    local_4 = 1;
    if (piVar8 == (int *)0x0) {
      piVar8 = (int *)0x0;
    }
    else {
      param_2 = piVar8;
      iVar9 = FUN_005e2b30(param_3);
      piVar8[1] = iVar9 + uVar6 * 0x24;
      *piVar8 = iVar9;
      piVar8[2] = iVar9 + iVar3 * 0x24;
      piVar8[3] = 0;
      piVar8[4] = 0;
    }
    *ppiVar5 = piVar8;
  }
  else {
    (*param_1)[1] = (int)param_1[2];
    piVar8 = *param_1;
    piVar1 = (int *)piVar8[4];
    if ((piVar1 != (int *)0x0) && (param_2 <= (uint)((piVar1[2] - *piVar1) / 0x24))) {
      *param_1 = piVar1;
      piVar1[1] = *piVar1 + (int)param_2 * 0x24;
      ppiVar2 = (int **)*param_1;
      param_1[2] = ppiVar2[1];
      param_1[3] = ppiVar2[2];
      param_1[1] = *ppiVar2;
      FUN_005e2e00(uVar7);
      goto LAB_005e23a9;
    }
    iVar3 = (piVar8[2] - *piVar8) / 0x24;
    dVar4 = (double)iVar3;
    if (iVar3 < 0) {
      dVar4 = dVar4 + 4294967296.0;
    }
    local_14 = (int)(longlong)ROUND(dVar4 * 1.5);
    param_1 = (int **)local_14;
    param_2 = (int *)operator_new(0x14);
    local_4 = 0;
    if (param_2 == (int *)0x0) {
      *ppiVar5 = (int *)0x0;
    }
    else {
      piVar8 = (int *)FUN_005e2660(uVar6,(*ppiVar5)[4]);
      *ppiVar5 = piVar8;
    }
  }
  ppiVar2 = (int **)*ppiVar5;
  ppiVar5[1] = *ppiVar2;
  ppiVar5[2] = ppiVar2[1];
  ppiVar5[3] = ppiVar2[2];
LAB_005e23a9:
  ExceptionList = local_c;
  return ppiVar5[1];
}



void ** FUN_005e23d0(void **param_1)

{
  undefined4 *puVar1;
  void *pvVar2;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c21e18;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = param_1;
  }
  *param_1 = puVar1;
  local_8 = 0;
  pvVar2 = (void *)FUN_005dc640();
  param_1[6] = pvVar2;
  *(undefined *)((int)pvVar2 + 0x15) = 1;
  *(void **)((int)param_1[6] + 4) = param_1[6];
  *(void **)param_1[6] = param_1[6];
  *(void **)((int)param_1[6] + 8) = param_1[6];
  param_1[7] = (void *)0x0;
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_005e29a0();
  ExceptionList = local_10;
  return param_1;
}



void Catch_All_005e2461(void)

{
  code *pcVar1;
  
  FUN_005e2010();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e2480(int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  int *in_EAX;
  
  iVar1 = *(int *)in_EAX[6];
  if ((param_2 == 0) || (param_2 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_3 == iVar1) {
    iVar1 = in_EAX[6];
    if ((param_4 == 0) || (param_4 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_5 == iVar1) {
      FUN_005e2c30(*(undefined4 *)(in_EAX[6] + 4));
      *(int *)(in_EAX[6] + 4) = in_EAX[6];
      in_EAX[7] = 0;
      *(int *)in_EAX[6] = in_EAX[6];
      *(int *)(in_EAX[6] + 8) = in_EAX[6];
      iVar1 = *in_EAX;
      param_1[1] = *(int *)in_EAX[6];
      *param_1 = iVar1;
      return;
    }
  }
  while( true ) {
    if ((param_2 == 0) || (param_2 != param_4)) {
      FUN_00a3fb10();
    }
    if (param_3 == param_5) break;
    FUN_005e2d90();
    FUN_005e26b0();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



int * FUN_005e2560(void)

{
  int iVar1;
  int *piVar2;
  int *piVar3;
  int unaff_EDI;
  
  if (*(int *)(unaff_EDI + 0x50) != 0) {
    return *(int **)(unaff_EDI + 0x50);
  }
  piVar3 = (int *)operator_new(0x1c);
  if (piVar3 == (int *)0x0) {
    piVar3 = (int *)0x0;
  }
  else {
    *piVar3 = 0;
    piVar2 = piVar3 + 5;
    piVar3[1] = 0;
    piVar3[2] = 0;
    piVar3[3] = 0;
    piVar3[4] = 0;
    *piVar2 = (int)piVar2;
    piVar3[6] = (int)piVar2;
  }
  if (piVar3 != (int *)0x0) {
    LOCK();
    *piVar3 = *piVar3 + 1;
    UNLOCK();
  }
  piVar2 = *(int **)(unaff_EDI + 0x50);
  *(int **)(unaff_EDI + 0x50) = piVar3;
  if (piVar2 != (int *)0x0) {
    LOCK();
    iVar1 = *piVar2;
    *piVar2 = iVar1 + -1;
    UNLOCK();
    if (iVar1 + -1 == 0) {
      FUN_005e2e70(piVar2);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(piVar2);
    }
    piVar3 = *(int **)(unaff_EDI + 0x50);
  }
  return piVar3;
}



void FUN_005e25d0(void)

{
  int iVar1;
  void **ppvVar2;
  uint uVar3;
  int unaff_EDI;
  undefined4 ****local_14;
  undefined4 ****local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c27058;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  local_14 = &local_14;
  ppvVar2 = &local_c;
  local_10 = local_14;
  local_c = ExceptionList;
  for (iVar1 = *(int *)(unaff_EDI + 4); ExceptionList = ppvVar2, iVar1 != unaff_EDI;
      iVar1 = *(int *)(iVar1 + 4)) {
    FUN_005e1cd0(iVar1 + 8);
    ppvVar2 = (void **)ExceptionList;
  }
  local_4 = 0;
  FUN_005e2a80(uVar3);
  local_4 = 0xffffffff;
  FUN_005e1f80();
  ExceptionList = local_c;
  return;
}



void FUN_005e2660(int param_1,int param_2)

{
  int iVar1;
  int unaff_EBX;
  int *unaff_ESI;
  int unaff_EDI;
  
  iVar1 = FUN_005e2b30();
  unaff_ESI[1] = iVar1 + param_1 * 0x24;
  *unaff_ESI = iVar1;
  unaff_ESI[2] = iVar1 + unaff_EDI * 0x24;
  unaff_ESI[3] = unaff_EBX;
  unaff_ESI[4] = param_2;
  if (unaff_EBX != 0) {
    *(int **)(unaff_EBX + 0x10) = unaff_ESI;
  }
  if (unaff_ESI[4] != 0) {
    *(int **)(unaff_ESI[4] + 0xc) = unaff_ESI;
  }
  return;
}



void FUN_005e26b0(int param_1,undefined4 param_2,undefined4 param_3,int **param_4)

{
  undefined uVar1;
  int iVar2;
  uint uVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined4 uVar6;
  int **ppiVar7;
  int **ppiVar8;
  int **ppiVar9;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [3];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  undefined local_24;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00c1b9a0;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  ppiVar4 = param_4;
  if (*(char *)((int)param_4 + 0x15) != '\0') {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"invalid map/set<T> iterator",0x1b);
    local_4 = 0;
    FUN_00a3f1a9();
    local_4._0_1_ = 1;
    local_34[0] = std::logic_error::vftable;
    local_10 = 0xf;
    local_14 = 0;
    local_24 = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_28,local_50,0,0xffffffff);
    local_4 = (uint)local_4._1_3_ << 8;
    local_34[0] = std::out_of_range::vftable;
    ppiVar4 = (int **)__CxxThrowException_8(local_34,&DAT_03115668);
  }
  FUN_005e2d90(uVar3);
  ppiVar7 = (int **)*ppiVar4;
  if (*(char *)((int)ppiVar7 + 0x15) == '\0') {
    ppiVar9 = ppiVar7;
    if (*(char *)((int)ppiVar4[2] + 0x15) == '\0') {
      ppiVar9 = (int **)param_4[2];
      if (param_4 != ppiVar4) {
        ppiVar7[1] = (int *)param_4;
        *param_4 = *ppiVar4;
        ppiVar7 = param_4;
        if (param_4 != (int **)ppiVar4[2]) {
          ppiVar7 = (int **)param_4[1];
          if (*(char *)((int)ppiVar9 + 0x15) == '\0') {
            ppiVar9[1] = (int *)ppiVar7;
          }
          *ppiVar7 = (int *)ppiVar9;
          param_4[2] = ppiVar4[2];
          ppiVar4[2][1] = (int)param_4;
        }
        if (*(int ***)(*(int *)(param_1 + 0x18) + 4) == ppiVar4) {
          *(int ***)(*(int *)(param_1 + 0x18) + 4) = param_4;
        }
        else {
          ppiVar8 = (int **)ppiVar4[1];
          if ((int **)*ppiVar8 == ppiVar4) {
            *ppiVar8 = (int *)param_4;
          }
          else {
            ppiVar8[2] = (int *)param_4;
          }
        }
        param_4[1] = ppiVar4[1];
        ppiVar8 = ppiVar4 + 5;
        param_4 = param_4 + 5;
        if (param_4 != ppiVar8) {
          uVar1 = *(undefined *)param_4;
          *(undefined *)param_4 = *(undefined *)ppiVar8;
          *(undefined *)ppiVar8 = uVar1;
        }
        goto LAB_005e2857;
      }
    }
  }
  else {
    ppiVar9 = (int **)ppiVar4[2];
  }
  ppiVar7 = (int **)ppiVar4[1];
  if (*(char *)((int)ppiVar9 + 0x15) == '\0') {
    ppiVar9[1] = (int *)ppiVar7;
  }
  if (*(int ***)(*(int *)(param_1 + 0x18) + 4) == ppiVar4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar9;
  }
  else if ((int **)*ppiVar7 == ppiVar4) {
    *ppiVar7 = (int *)ppiVar9;
  }
  else {
    ppiVar7[2] = (int *)ppiVar9;
  }
  ppiVar8 = *(int ***)(param_1 + 0x18);
  if ((int **)*ppiVar8 == ppiVar4) {
    ppiVar5 = ppiVar7;
    if (*(char *)((int)ppiVar9 + 0x15) == '\0') {
      ppiVar5 = (int **)FUN_005dc620();
    }
    *ppiVar8 = (int *)ppiVar5;
  }
  iVar2 = *(int *)(param_1 + 0x18);
  if (*(int ***)(iVar2 + 8) == ppiVar4) {
    if (*(char *)((int)ppiVar9 + 0x15) == '\0') {
      uVar6 = FUN_005dc600();
      *(undefined4 *)(iVar2 + 8) = uVar6;
    }
    else {
      *(int ***)(iVar2 + 8) = ppiVar7;
    }
  }
LAB_005e2857:
  if (*(char *)(ppiVar4 + 5) == '\x01') {
    if (ppiVar9 != *(int ***)(*(int *)(param_1 + 0x18) + 4)) {
      do {
        ppiVar8 = ppiVar7;
        if (*(char *)(ppiVar9 + 5) != '\x01') break;
        ppiVar7 = (int **)*ppiVar8;
        if (ppiVar9 == ppiVar7) {
          ppiVar7 = (int **)ppiVar8[2];
          if (*(char *)(ppiVar7 + 5) == '\0') {
            *(undefined *)(ppiVar7 + 5) = 1;
            *(undefined *)(ppiVar8 + 5) = 0;
            FUN_005dc720(param_1);
            ppiVar7 = (int **)ppiVar8[2];
          }
          if (*(char *)((int)ppiVar7 + 0x15) == '\0') {
            if ((*(char *)(*ppiVar7 + 5) != '\x01') || (*(char *)(ppiVar7[2] + 5) != '\x01')) {
              if (*(char *)(ppiVar7[2] + 5) == '\x01') {
                *(undefined *)(*ppiVar7 + 5) = 1;
                *(undefined *)(ppiVar7 + 5) = 0;
                FUN_005e2c70(param_1);
                ppiVar7 = (int **)ppiVar8[2];
              }
              *(undefined *)(ppiVar7 + 5) = *(undefined *)(ppiVar8 + 5);
              *(undefined *)(ppiVar8 + 5) = 1;
              *(undefined *)(ppiVar7[2] + 5) = 1;
              FUN_005dc720(param_1);
              break;
            }
LAB_005e2910:
            *(undefined *)(ppiVar7 + 5) = 0;
          }
        }
        else {
          if (*(char *)(ppiVar7 + 5) == '\0') {
            *(undefined *)(ppiVar7 + 5) = 1;
            *(undefined *)(ppiVar8 + 5) = 0;
            FUN_005e2c70(param_1);
            ppiVar7 = (int **)*ppiVar8;
          }
          if (*(char *)((int)ppiVar7 + 0x15) == '\0') {
            if ((*(char *)(ppiVar7[2] + 5) == '\x01') && (*(char *)(*ppiVar7 + 5) == '\x01'))
            goto LAB_005e2910;
            if (*(char *)(*ppiVar7 + 5) == '\x01') {
              *(undefined *)(ppiVar7[2] + 5) = 1;
              *(undefined *)(ppiVar7 + 5) = 0;
              FUN_005dc720(param_1);
              ppiVar7 = (int **)*ppiVar8;
            }
            *(undefined *)(ppiVar7 + 5) = *(undefined *)(ppiVar8 + 5);
            *(undefined *)(ppiVar8 + 5) = 1;
            *(undefined *)(*ppiVar7 + 5) = 1;
            FUN_005e2c70(param_1);
            break;
          }
        }
        ppiVar7 = (int **)ppiVar8[1];
        ppiVar9 = ppiVar8;
      } while (ppiVar8 != *(int ***)(*(int *)(param_1 + 0x18) + 4));
    }
    *(undefined *)(ppiVar9 + 5) = 1;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(ppiVar4);
}



void FUN_005e29a0(void)

{
  char cVar1;
  int iVar2;
  int **ppiVar3;
  int **ppiVar4;
  int iVar5;
  int **ppiVar6;
  int in_EAX;
  undefined4 uVar7;
  int unaff_EBX;
  
  iVar2 = *(int *)(in_EAX + 0x18);
  uVar7 = FUN_005e2b80(*(undefined4 *)(*(int *)(unaff_EBX + 0x18) + 4),iVar2);
  *(undefined4 *)(iVar2 + 4) = uVar7;
  ppiVar3 = *(int ***)(in_EAX + 0x18);
  *(undefined4 *)(in_EAX + 0x1c) = *(undefined4 *)(unaff_EBX + 0x1c);
  ppiVar4 = (int **)ppiVar3[1];
  if (*(char *)((int)ppiVar4 + 0x15) != '\0') {
    *ppiVar3 = (int *)ppiVar3;
    *(int *)(*(int *)(in_EAX + 0x18) + 8) = *(int *)(in_EAX + 0x18);
    return;
  }
  cVar1 = *(char *)((int)*ppiVar4 + 0x15);
  ppiVar6 = (int **)*ppiVar4;
  while (cVar1 == '\0') {
    cVar1 = *(char *)((int)*ppiVar6 + 0x15);
    ppiVar4 = ppiVar6;
    ppiVar6 = (int **)*ppiVar6;
  }
  *ppiVar3 = (int *)ppiVar4;
  iVar2 = *(int *)(*(int *)(in_EAX + 0x18) + 4);
  iVar5 = *(int *)(iVar2 + 8);
  cVar1 = *(char *)(iVar5 + 0x15);
  while (cVar1 == '\0') {
    cVar1 = *(char *)(*(int *)(iVar5 + 8) + 0x15);
    iVar2 = iVar5;
    iVar5 = *(int *)(iVar5 + 8);
  }
  *(int *)(*(int *)(in_EAX + 0x18) + 8) = iVar2;
  return;
}



void __fastcall FUN_005e2a10(undefined4 param_1,char *param_2)

{
  char *in_EAX;
  
  if (*param_2 == '\0') {
    if (*in_EAX != '\0') {
      if ((undefined4 *)(param_2 + 4) != (undefined4 *)0x0) {
        *(undefined4 *)(param_2 + 4) = *(undefined4 *)(in_EAX + 4);
        *(undefined4 *)(param_2 + 8) = *(undefined4 *)(in_EAX + 8);
        *(undefined4 *)(param_2 + 0xc) = *(undefined4 *)(in_EAX + 0xc);
        *(undefined4 *)(param_2 + 0x10) = *(undefined4 *)(in_EAX + 0x10);
        *(undefined4 *)(param_2 + 0x14) = *(undefined4 *)(in_EAX + 0x14);
      }
      *param_2 = '\x01';
    }
    return;
  }
  if (*in_EAX != '\0') {
    *(undefined4 *)(param_2 + 4) = *(undefined4 *)(in_EAX + 4);
    *(undefined4 *)(param_2 + 8) = *(undefined4 *)(in_EAX + 8);
    *(undefined4 *)(param_2 + 0xc) = *(undefined4 *)(in_EAX + 0xc);
    *(undefined4 *)(param_2 + 0x10) = *(undefined4 *)(in_EAX + 0x10);
    *(undefined4 *)(param_2 + 0x14) = *(undefined4 *)(in_EAX + 0x14);
    return;
  }
  *param_2 = '\0';
  return;
}



void __fastcall FUN_005e2a80(int **param_1)

{
  int *piVar1;
  int **ppiVar2;
  int *in_EAX;
  int ***local_c;
  int ***local_8;
  
  local_c = (int ***)&local_c;
  local_8 = local_c;
  if ((int **)param_1[1] != param_1) {
    (*param_1)[1] = (int)&local_c;
    *param_1[1] = (int)local_c;
    local_8 = (int ***)param_1[1];
    local_c = (int ***)*param_1;
    param_1[1] = (int *)param_1;
    *param_1 = (int *)param_1;
  }
  piVar1 = param_1[1];
  if ((int *)in_EAX[1] != in_EAX) {
    *(int **)(*in_EAX + 4) = piVar1;
    *(int *)in_EAX[1] = *piVar1;
    *(int *)(*piVar1 + 4) = in_EAX[1];
    *piVar1 = *in_EAX;
    in_EAX[1] = (int)in_EAX;
    *in_EAX = (int)in_EAX;
  }
  ppiVar2 = (int **)in_EAX[1];
  if ((int ****)local_8 != &local_c) {
    local_c[1] = ppiVar2;
    *local_8 = (int **)*ppiVar2;
    (*ppiVar2)[1] = (int)local_8;
    *ppiVar2 = (int *)local_c;
    local_c = (int ***)&local_c;
    local_8 = local_c;
  }
  FUN_005e1f80();
  return;
}



void FUN_005e2b30(undefined4 *param_1)

{
  int in_EAX;
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = (undefined4 *)operator_new(in_EAX * 0x24);
  if (in_EAX != 0) {
    do {
      if (puVar1 != (undefined4 *)0x0) {
        puVar3 = param_1;
        puVar4 = puVar1;
        for (iVar2 = 9; iVar2 != 0; iVar2 = iVar2 + -1) {
          *puVar4 = *puVar3;
          puVar3 = puVar3 + 1;
          puVar4 = puVar4 + 1;
        }
      }
      puVar1 = puVar1 + 9;
      in_EAX = in_EAX + -1;
    } while (in_EAX != 0);
  }
  return;
}



void thunk_FUN_005e2cc0(void)

{
  undefined4 *puVar1;
  int iVar2;
  int *unaff_EDI;
  
  FUN_005e2d50();
  iVar2 = *unaff_EDI;
  while( true ) {
    if (iVar2 == 0) {
      unaff_EDI[3] = 0;
      unaff_EDI[2] = 0;
      unaff_EDI[1] = 0;
      return;
    }
    puVar1 = (undefined4 *)*unaff_EDI;
    iVar2 = puVar1[4];
    if (puVar1 != (undefined4 *)0x0) break;
    *unaff_EDI = iVar2;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*puVar1);
}



undefined4 * __thiscall FUN_005e2b80(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *local_18;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c122a0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  local_18 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)param_1 + 0x15) == '\0') {
    puVar1 = (undefined4 *)FUN_005e2d10(local_18,param_2,local_18,*(undefined *)(param_1 + 5));
    if (*(char *)((int)local_18 + 0x15) != '\0') {
      local_18 = puVar1;
    }
    local_8 = 0;
    uVar2 = FUN_005e2b80(*param_1,puVar1);
    *puVar1 = uVar2;
    uVar2 = FUN_005e2b80(param_1[2],puVar1);
    puVar1[2] = uVar2;
  }
  ExceptionList = local_10;
  return local_18;
}



void Catch_All_005e2c1a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_005e2c30(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e2c30(int param_1)

{
  if (*(char *)(param_1 + 0x15) == '\0') {
    FUN_005e2c30(*(undefined4 *)(param_1 + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __thiscall FUN_005e2c70(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x15) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
    *(int **)(iVar1 + 8) = param_1_00;
    param_1_00[1] = iVar1;
    return;
  }
  piVar2 = (int *)param_1_00[1];
  if (param_1_00 == (int *)piVar2[2]) {
    piVar2[2] = iVar1;
    *(int **)(iVar1 + 8) = param_1_00;
    param_1_00[1] = iVar1;
    return;
  }
  *piVar2 = iVar1;
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



void FUN_005e2cc0(void)

{
  undefined4 *puVar1;
  int iVar2;
  int *unaff_EDI;
  
  FUN_005e2d50();
  iVar2 = *unaff_EDI;
  while( true ) {
    if (iVar2 == 0) {
      unaff_EDI[3] = 0;
      unaff_EDI[2] = 0;
      unaff_EDI[1] = 0;
      return;
    }
    puVar1 = (undefined4 *)*unaff_EDI;
    iVar2 = puVar1[4];
    if (puVar1 != (undefined4 *)0x0) break;
    *unaff_EDI = iVar2;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*puVar1);
}



void FUN_005e2d10(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined param_4)

{
  undefined4 *puVar1;
  undefined4 *unaff_ESI;
  
  puVar1 = (undefined4 *)FUN_005dcde0();
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *unaff_ESI;
    puVar1[4] = unaff_ESI[1];
    *(undefined *)(puVar1 + 5) = param_4;
    *(undefined *)((int)puVar1 + 0x15) = 0;
  }
  return;
}



void FUN_005e2d50(void)

{
  int iVar1;
  int *in_EAX;
  
  if (*in_EAX != 0) {
    for (iVar1 = *(int *)(*in_EAX + 0xc); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
      ((undefined4 *)*in_EAX)[1] = *(undefined4 *)*in_EAX;
      iVar1 = *(int *)(*in_EAX + 0xc);
      *in_EAX = iVar1;
    }
    ((undefined4 *)*in_EAX)[1] = *(undefined4 *)*in_EAX;
    iVar1 = *(int *)(*in_EAX + 4);
    in_EAX[2] = iVar1;
    in_EAX[1] = iVar1;
    in_EAX[3] = *(int *)(*in_EAX + 8);
  }
  return;
}



void FUN_005e2d90(void)

{
  char cVar1;
  int iVar2;
  int **ppiVar3;
  int **ppiVar4;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x15) == '\0') {
    ppiVar3 = *(int ***)(iVar2 + 8);
    if (*(char *)((int)ppiVar3 + 0x15) != '\0') {
      iVar2 = *(int *)(iVar2 + 4);
      cVar1 = *(char *)(iVar2 + 0x15);
      while ((cVar1 == '\0' && (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
        iVar2 = *(int *)(iVar2 + 4);
        cVar1 = *(char *)(iVar2 + 0x15);
      }
      unaff_ESI[1] = iVar2;
      return;
    }
    cVar1 = *(char *)((int)*ppiVar3 + 0x15);
    ppiVar4 = (int **)*ppiVar3;
    while (cVar1 == '\0') {
      cVar1 = *(char *)((int)*ppiVar4 + 0x15);
      ppiVar3 = ppiVar4;
      ppiVar4 = (int **)*ppiVar4;
    }
    unaff_ESI[1] = (int)ppiVar3;
    return;
  }
  FUN_00a3fb10();
  return;
}



void __fastcall FUN_005e2e00(undefined4 param_1,undefined4 *param_2)

{
  int in_EAX;
  int iVar1;
  undefined4 *unaff_EBX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  if (in_EAX != 0) {
    do {
      in_EAX = in_EAX + -1;
      puVar2 = unaff_EBX;
      puVar3 = param_2;
      for (iVar1 = 9; iVar1 != 0; iVar1 = iVar1 + -1) {
        *puVar3 = *puVar2;
        puVar2 = puVar2 + 1;
        puVar3 = puVar3 + 1;
      }
      param_2 = param_2 + 9;
    } while (in_EAX != 0);
  }
  return;
}



int FUN_005e2e20(int param_1)

{
  undefined4 *in_EAX;
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 *puVar4;
  
  if (in_EAX != unaff_EBX) {
    puVar2 = in_EAX;
    do {
      puVar3 = puVar2 + 9;
      puVar4 = (undefined4 *)((int)puVar2 + (param_1 - (int)in_EAX));
      for (iVar1 = 9; iVar1 != 0; iVar1 = iVar1 + -1) {
        *puVar4 = *puVar2;
        puVar2 = puVar2 + 1;
        puVar4 = puVar4 + 1;
      }
      puVar2 = puVar3;
    } while (puVar3 != unaff_EBX);
  }
  return param_1 + (((int)unaff_EBX - (int)in_EAX) / 0x24) * 0x24;
}



void FUN_005e2e70(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1227b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e1f80(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_005e2cc0();
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_005e2ed0(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  char cVar9;
  int *in_EAX;
  
  iVar3 = *in_EAX;
  iVar4 = param_1[2];
  uVar5 = *(undefined4 *)(iVar4 + 8 + iVar3 * 0x24);
  uVar6 = *(undefined4 *)(iVar4 + iVar3 * 0x24);
  uVar7 = *(undefined4 *)(iVar4 + 4 + iVar3 * 0x24);
  puVar1 = (undefined4 *)(iVar4 + iVar3 * 0x24);
  uVar8 = puVar1[3];
  uVar2 = *(undefined *)(puVar1 + 4);
  *puVar1 = puVar1[6];
  puVar1[1] = puVar1[7];
  puVar1[2] = *param_1;
  puVar1[3] = param_1[1];
  *(undefined *)(puVar1 + 4) = 1;
  cVar9 = FUN_005e2f60();
  if (cVar9 != '\0') {
    return 1;
  }
  *puVar1 = uVar6;
  puVar1[1] = uVar7;
  *(undefined *)(puVar1 + 4) = uVar2;
  puVar1[2] = uVar5;
  puVar1[3] = uVar8;
  return 0;
}



undefined4 FUN_005e2f60(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  int *piVar5;
  char cVar6;
  undefined4 unaff_EBX;
  int *unaff_EDI;
  
  iVar1 = unaff_EDI[1];
  iVar2 = *unaff_EDI;
  iVar3 = unaff_EDI[0xc];
  puVar4 = (undefined4 *)unaff_EDI[2];
  if (iVar3 == 0) {
    if (*(char *)(unaff_EDI + 8) != '\0') {
      if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != unaff_EDI[6])))) {
        FUN_00a3fb10();
      }
      if (unaff_EDI[1] != unaff_EDI[7]) {
        return 0;
      }
      *(undefined *)((int)unaff_EDI + 0x29) = 1;
    }
    if ((*(char *)((int)unaff_EDI + 0x26) == '\0') ||
       (cVar6 = FUN_008477a0(puVar4 + 6), cVar6 == '\0')) {
      *puVar4 = puVar4[6];
      puVar4[1] = puVar4[7];
      puVar4[2] = iVar2;
      puVar4[3] = iVar1;
      *(undefined *)(puVar4 + 4) = 1;
      for (piVar5 = (int *)unaff_EDI[0x11]; piVar5 != (int *)0x0; piVar5 = (int *)piVar5[1]) {
        (**(code **)(*piVar5 + 4))(unaff_EDI[0x13]);
      }
      return 1;
    }
  }
  else {
    FUN_005e3050(unaff_EDI);
    cVar6 = (**(code **)(**(int **)(iVar3 + 8) + 4))();
    FUN_005e3050(unaff_EDI);
    if (cVar6 != '\0') {
      *puVar4 = puVar4[6];
      puVar4[2] = unaff_EBX;
      puVar4[1] = puVar4[7];
      puVar4[3] = iVar2;
      *(undefined *)(puVar4 + 4) = 1;
      return 1;
    }
  }
  return 0;
}



void __thiscall FUN_005e3050(int *param_1_00,int param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  piVar1 = (int *)(param_1 + 0x2c);
  if (piVar1 != param_1_00) {
    iVar2 = *piVar1;
    iVar3 = *(int *)(param_1 + 0x38);
    iVar4 = *(int *)(param_1 + 0x30);
    iVar5 = *(int *)(param_1 + 0x34);
    *piVar1 = *param_1_00;
    *(int *)(param_1 + 0x30) = param_1_00[1];
    *(int *)(param_1 + 0x34) = param_1_00[2];
    *(int *)(param_1 + 0x38) = param_1_00[3];
    *param_1_00 = iVar2;
    param_1_00[1] = iVar4;
    param_1_00[2] = iVar5;
    param_1_00[3] = iVar3;
  }
  *(undefined4 *)(param_1 + 8) = *(undefined4 *)(*piVar1 + 8);
  *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(*piVar1 + 4);
  return;
}



void FUN_005e30b0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  code *pcVar1;
  uint uVar2;
  int iVar3;
  undefined auStack_50 [4];
  undefined local_4c [64];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1cf98;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)auStack_50;
  ExceptionList = &local_c;
  iVar3 = FUN_005e33c0(local_4c,param_1);
  local_4 = 0;
  *(undefined4 *)(iVar3 + 0x30) = param_2;
  *(undefined4 *)(iVar3 + 0x34) = param_3;
  *(undefined4 *)(iVar3 + 0x38) = param_4;
  FUN_005e3880(iVar3,uVar2);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_005e3110(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  for (puVar1 = *(undefined4 **)(param_1_00 + 0x20); puVar1 != (undefined4 *)0x0;
      puVar1 = (undefined4 *)*puVar1) {
    (*(code *)puVar1[2])(param_1,param_1_00,puVar1[1]);
  }
  return;
}



int * __thiscall FUN_005e3140(int param_1_00,int *param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 *puVar2;
  uint uVar3;
  _Lockit local_14 [4];
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c122d9;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  local_4 = 0;
  local_10 = 0;
  iVar1 = **(int **)(param_1_00 + 0x24);
  *param_1 = iVar1;
  std::_Lockit::_Lockit(local_14,0);
  if (*(int *)(iVar1 + 4) != -1) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  FUN_00823810(uVar3);
  local_4 = 0;
  local_10 = 1;
  FUN_005e3340(param_2);
  for (puVar2 = *(undefined4 **)(param_1_00 + 0x20); puVar2 != (undefined4 *)0x0;
      puVar2 = (undefined4 *)*puVar2) {
    (*(code *)puVar2[2])(1,param_1_00,puVar2[1]);
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005e3200(int *param_1_00,undefined param_1)

{
  int *piVar1;
  int *piVar2;
  undefined *puVar3;
  char local_24;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c2f228;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  FUN_00425790(param_1_00);
  local_8 = 0;
  if (local_24 == '\0') {
    FUN_005e32cb();
    return;
  }
  local_8 = 1;
  piVar1 = *(int **)(*(int *)(*param_1_00 + 4) + 0x28 + (int)param_1_00);
  if ((*(int *)piVar1[9] == 0) || (piVar2 = (int *)piVar1[0xd], *piVar2 < 1)) {
    (**(code **)(*piVar1 + 4))(param_1);
  }
  else {
    *piVar2 = *piVar2 + -1;
    puVar3 = *(undefined **)(int *)piVar1[9];
    *(int *)piVar1[9] = (int)(puVar3 + 1);
    *puVar3 = param_1;
  }
  local_8 = 0;
  FUN_005e32cb();
  return;
}



undefined * Catch_All_005e3297(void)

{
  int unaff_EBP;
  
  FUN_00417a55(*(uint *)((int)*(int **)(unaff_EBP + -0x18) +
                        *(int *)(**(int **)(unaff_EBP + -0x18) + 4) + 8) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_005e32c5;
}



void FUN_005e32cb(void)

{
  uint uVar1;
  int unaff_EBP;
  uint unaff_ESI;
  int *unaff_EDI;
  
  if (unaff_ESI != 0) {
    uVar1 = *(uint *)((int)unaff_EDI + *(int *)(*unaff_EDI + 4) + 8) | unaff_ESI;
    if (*(int *)((int)unaff_EDI + *(int *)(*unaff_EDI + 4) + 0x28) == 0) {
      uVar1 = uVar1 | 4;
    }
    FUN_00417a55(uVar1,0);
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00425900();
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



void FUN_005e3320(int param_1)

{
  *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) & 0xfffff5ff | 0x400;
  return;
}



facet ** __thiscall FUN_005e3340(facet **param_1_00,facet **param_1)

{
  facet *pfVar1;
  facet **ppfVar2;
  undefined4 *puVar3;
  
  ppfVar2 = param_1;
  if (*param_1_00 != *param_1) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(*param_1_00);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
    pfVar1 = *ppfVar2;
    *param_1_00 = pfVar1;
    std::_Lockit::_Lockit((_Lockit *)&param_1,0);
    if (*(int *)(pfVar1 + 4) != -1) {
      *(int *)(pfVar1 + 4) = *(int *)(pfVar1 + 4) + 1;
    }
    FUN_00823810();
  }
  return param_1_00;
}



void __thiscall FUN_005e3390(int *param_1_00,int *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  
  if (param_1_00 != param_1) {
    iVar1 = *param_1_00;
    *param_1_00 = *param_1;
    *param_1 = iVar1;
  }
  puVar2 = (undefined4 *)*param_1;
  puVar3 = (undefined4 *)*param_1_00;
  if (puVar3 != puVar2) {
    uVar4 = *puVar3;
    *puVar3 = *puVar2;
    *puVar2 = uVar4;
  }
  return;
}



undefined4 * FUN_005e33c0(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  char *pcVar3;
  char *unaff_EDI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1cf70;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  pcVar3 = unaff_EDI;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,unaff_EDI,(int)pcVar3 - (int)(unaff_EDI + 1));
  local_4 = 0;
  FUN_00a3f1a9(uVar2);
  local_4 = CONCAT31(local_4._1_3_,1);
  *param_1 = std::runtime_error::vftable;
  param_1[9] = 0xf;
  param_1[8] = 0;
  *(undefined *)(param_1 + 4) = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 3),local_28,0,0xffffffff);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24);
  }
  param_1[10] = boost::exception::vftable;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0xffffffff;
  *param_1 = boost::xpressive::regex_error::vftable;
  param_1[10] = boost::xpressive::regex_error::vftable;
  param_1[0xf] = param_2;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005e34a0(undefined4 *param_1)

{
  uint uVar1;
  int iVar2;
  int unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15c24;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1[0x10] = &DAT_026b7ec8;
  param_1[0x12] = boost::exception_detail::clone_base::vftable;
  local_4 = 0;
  FUN_005e38e0(unaff_EDI);
  local_4 = 1;
  *param_1 = boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  param_1[10] = boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  *(undefined ***)(*(int *)(param_1[0x10] + 4) + 0x40 + (int)param_1) =
       boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  *(int *)(*(int *)(param_1[0x10] + 4) + 0x3c + (int)param_1) = *(int *)(param_1[0x10] + 4) + -8;
  if (unaff_EDI == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = unaff_EDI + 0x28;
  }
  FUN_00401200(param_1 + 10,iVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005e3560(void)

{
  undefined4 unaff_ESI;
  
  FUN_005e34a0(unaff_ESI);
  return;
}



void __fastcall FUN_005e3580(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  param_1[10] = boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  *(undefined ***)(*(int *)(param_1[0x10] + 4) + 0x40 + (int)param_1) =
       boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  *(int *)(*(int *)(param_1[0x10] + 4) + 0x3c + (int)param_1) = *(int *)(param_1[0x10] + 4) + -8;
  FUN_005e3a00();
  param_1[0x12] = boost::exception_detail::clone_base::vftable;
  return;
}



void FUN_005e35c0(void)

{
  FUN_005e3770();
  return;
}



undefined4 * FUN_005e35d0(undefined4 *param_1)

{
  uint uVar1;
  int iVar2;
  int unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15c24;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1[0x10] = &DAT_026b7ec8;
  param_1[0x12] = boost::exception_detail::clone_base::vftable;
  local_4 = 0;
  FUN_005e38e0(unaff_EDI);
  local_4 = 1;
  *param_1 = boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  param_1[10] = boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  *(undefined ***)(*(int *)(param_1[0x10] + 4) + 0x40 + (int)param_1) =
       boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  *(int *)(*(int *)(param_1[0x10] + 4) + 0x3c + (int)param_1) = *(int *)(param_1[0x10] + 4) + -8;
  if (unaff_EDI == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = unaff_EDI + 0x28;
  }
  FUN_00401200(param_1 + 10,iVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



int FUN_005e3690(void)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1a25b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x4c);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_005e35d0(pvVar1,local_14);
    if (iVar2 != 0) {
      ExceptionList = local_c;
      return *(int *)(*(int *)(iVar2 + 0x40) + 4) + 0x40 + iVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_005e3720(void)

{
  FUN_005e3690();
  return;
}



void __fastcall FUN_005e3730(int param_1)

{
  code *pcVar1;
  undefined local_4c [76];
  
  FUN_005e37d0(param_1 + -0x48,1);
  __CxxThrowException_8(local_4c,&DAT_03115be8);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e3760(void)

{
  FUN_005e3730();
  return;
}



undefined4 * __thiscall FUN_005e3770(undefined4 *param_1,byte param_2)

{
  *param_1 = boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  param_1[10] = boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  *(undefined ***)(*(int *)(param_1[0x10] + 4) + 0x40 + (int)param_1) =
       boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  *(int *)(*(int *)(param_1[0x10] + 4) + 0x3c + (int)param_1) = *(int *)(param_1[0x10] + 4) + -8;
  FUN_005e3a00();
  param_1[0x12] = boost::exception_detail::clone_base::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_005e37c0(void)

{
  FUN_005e3770();
  return;
}



undefined4 * __thiscall FUN_005e37d0(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c15bdc;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0x10] = &DAT_026b7ec8;
    param_1_00[0x12] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_005e38e0(param_1);
  *param_1_00 = boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  param_1_00[10] =
       boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x10] + 4) + 0x40 + (int)param_1_00) =
       boost::exception_detail::clone_impl<struct_boost::xpressive::regex_error>::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0x10] + 4) + 0x3c + (int)param_1_00) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_005e3880(void)

{
  code *pcVar1;
  undefined local_9c [144];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1cf38;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e39b0(DAT_0323f878 ^ (uint)&stack0xffffff5c);
  local_4 = 0;
  FUN_005e3560();
  __CxxThrowException_8(local_9c,&DAT_03115be8);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005e38e0(undefined4 *param_1_00,exception *param_1)

{
  int *piVar1;
  uint uVar2;
  exception *peVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c15ba0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  std::exception::exception((exception *)param_1_00,param_1);
  local_4 = 0;
  *param_1_00 = std::runtime_error::vftable;
  param_1_00[9] = 0xf;
  param_1_00[8] = 0;
  *(undefined *)(param_1_00 + 4) = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 3),
             (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0xc),0,0xffffffff);
  local_4 = 1;
  if (param_1 == (exception *)0x0) {
    peVar3 = (exception *)0x0;
  }
  else {
    peVar3 = param_1 + 0x28;
  }
  param_1_00[10] = boost::exception::vftable;
  piVar1 = *(int **)(peVar3 + 4);
  param_1_00[0xb] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 0xc))(uVar2);
  }
  param_1_00[0xc] = *(undefined4 *)(peVar3 + 8);
  param_1_00[0xd] = *(undefined4 *)(peVar3 + 0xc);
  param_1_00[0xe] = *(undefined4 *)(peVar3 + 0x10);
  *param_1_00 = boost::xpressive::regex_error::vftable;
  param_1_00[10] = boost::xpressive::regex_error::vftable;
  param_1_00[0xf] = *(undefined4 *)(param_1 + 0x3c);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_005e39b0(void)

{
  undefined4 in_EAX;
  
  FUN_005e38e0(in_EAX);
  return;
}



undefined4 __thiscall FUN_005e39d0(undefined4 param_1,byte param_2)

{
  FUN_005e3a00();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_005e39f0(void)

{
  FUN_005e39d0();
  return;
}



void __fastcall FUN_005e3a00(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::xpressive::regex_error::vftable;
  param_1[10] = boost::xpressive::regex_error::vftable;
  param_1[10] = boost::exception::vftable;
  if ((int *)param_1[0xb] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0xb] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0xb] = 0;
    }
  }
  *param_1 = std::runtime_error::vftable;
  if (0xf < (uint)param_1[9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[4]);
  }
  param_1[9] = 0xf;
  param_1[8] = 0;
  *(undefined *)(param_1 + 4) = 0;
  exception::~exception((exception *)param_1);
  return;
}



void FUN_005e3a70(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  code *pcVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1cf98;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = FUN_005e39b0(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  local_4 = 0;
  *(undefined4 *)(iVar2 + 0x30) = param_2;
  *(undefined4 *)(iVar2 + 0x34) = param_3;
  *(undefined4 *)(iVar2 + 0x38) = param_4;
  FUN_005e3880(iVar2);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e3ad0(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x24);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_00b85a10(pvVar1,param_2);
  }
  local_4 = 0xffffffff;
  FUN_005e3b50(unaff_EDI);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_005e3b50(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005e3bb0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005e3bb0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005e3c10(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005e3c10(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c6c0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::W6184F1A7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005e3c89(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e3cb0(undefined2 param_1,undefined2 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = param_3;
    *(undefined2 *)((int)puVar1 + 10) = param_2;
    *puVar1 = WF3C48A30::WB562ABC5::vftable;
    *(undefined2 *)(puVar1 + 2) = param_1;
    FUN_005e3d00(unaff_ESI);
    return;
  }
  FUN_005e3d00(unaff_ESI);
  return;
}



undefined4 * __thiscall FUN_005e3d00(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005e3dc0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005e3d60(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_005e3ec0(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005e3dc0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005e3e20(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005e3e20(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c6a0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WB562ABC5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005e3e99(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e3ec0(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_005e3fd0();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005e3fd0(undefined4 *param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_45c [104];
  undefined4 uStack_3f4;
  undefined4 *puStack_3f0;
  undefined4 **ppuStack_3ec;
  undefined auStack_3d0 [4];
  undefined4 *local_3cc;
  undefined local_3c5;
  undefined *local_3c4;
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3aa23;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_3d0;
  ExceptionList = &local_c;
  local_3c4 = auStack_45c;
  local_3cc = param_1;
  FUN_005da3d0(auStack_45c);
  FUN_005da5d0();
  ppuStack_3ec = (undefined4 **)0x5e4046;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_3ec = (undefined4 **)0x5e4065;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_3ec = (undefined4 **)0x5e40a7;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_3ec = (undefined4 **)0x5e40d8;
  FUN_005dde60();
  ppuStack_3ec = (undefined4 **)&local_3c5;
  local_4 = 0;
  puStack_3f0 = local_3cc;
  uStack_3f4 = 0x5e40fc;
  FUN_005e4240();
  local_4._0_1_ = 1;
  FUN_005e5000();
  local_4._0_1_ = 3;
  ppuStack_3ec = (undefined4 **)0x5e4121;
  FUN_005e41c0();
  puStack_3f0 = (undefined4 *)0x5e4134;
  ppuStack_3ec = &local_3cc;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_3cc != (undefined4 *)0x0) {
    piVar4 = local_3cc + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_3cc != (undefined4 *)0x0)) {
      ppuStack_3ec = (undefined4 **)0x5e4176;
      (**(code **)*local_3cc)();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005e41c0(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c27268;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00809120(param_1 + 0x28);
  if (0xf < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4),uVar1);
  }
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return;
}



void FUN_005e4230(void)

{
  int in_EAX;
  
  FUN_00809120(in_EAX + 8);
  return;
}



undefined4 __fastcall
FUN_005e4240(undefined4 param_1_00,undefined4 param_2_00,undefined4 *param_1,undefined *param_2)

{
  undefined local_a1;
  undefined4 local_a0;
  undefined4 local_9c;
  undefined local_98 [4];
  undefined local_94 [136];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c3a9de;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_a0 = 0;
  local_a1 = *param_2;
  local_9c = param_2_00;
  FUN_005e4460(local_98,param_1[1],&local_a1);
  local_4 = 1;
  FUN_005e44f0(*param_1,local_98);
  local_a0 = 1;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_94);
  ExceptionList = local_c;
  return param_2_00;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_005e4300(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  undefined4 *puVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c27268;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar1 = (undefined4 *)(param_1 + 4);
  *(undefined *)puVar1 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,unaff_EDI,0,0xffffffff);
  if (0xf < *(uint *)(param_1 + 0x18)) {
    puVar1 = (undefined4 *)*puVar1;
  }
  *(undefined **)(param_1 + 0x1c) = (undefined *)((int)puVar1 + *(int *)(param_1 + 0x14));
  local_4 = 0;
  param_1[0x20] = unaff_EDI[0x20];
  *(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(unaff_EDI + 0x24);
  FUN_005e4390(param_1 + 0x28);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_005e4390(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1_00 + 0x78);
  FUN_005e43f0(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_005e43f0(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2f258;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1_00 + 0x78);
  FUN_005da440(param_1 + 0x7c);
  *(undefined4 *)(param_1 + 0xf4) = *(undefined4 *)(param_1_00 + 0xf4);
  *(undefined4 *)(param_1 + 0xf8) = *(undefined4 *)(param_1_00 + 0xf8);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_005e4460(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_18 [4];
  int local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33ee1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  uVar2 = FUN_0080a2f0(local_18,param_2);
  local_4 = 1;
  FUN_005e4600(param_1,uVar2,param_3);
  local_4 = local_4 & 0xffffff00;
  if (local_14 != 0) {
    FUN_005da010(uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_005e44f0(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 unaff_EBX;
  undefined4 local_198;
  undefined local_194 [120];
  undefined4 local_11c;
  undefined4 local_118;
  undefined local_110 [260];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3a98b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_198 = *param_2;
  FUN_005da440(local_194);
  local_11c = param_2[0x1f];
  local_118 = param_2[0x20];
  local_4 = 1;
  FUN_005e46c0(local_110,param_1[1],&local_198);
  local_4._0_1_ = 2;
  FUN_005e4760(*param_1,unaff_EBX);
  local_4._0_1_ = 1;
  FUN_00807c50(local_110);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005da4f0(local_194);
  ExceptionList = local_c;
  return;
}



void FUN_005e45f0(void)

{
  int in_EAX;
  
  if (*(int *)(in_EAX + 4) != 0) {
    FUN_005da010();
  }
  return;
}



undefined4 FUN_005e4600(undefined4 param_1)

{
  undefined4 unaff_EDI;
  undefined local_94 [136];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c33e9a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e4840(unaff_EDI);
  local_4 = 1;
  FUN_005e4880(local_94);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_94);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_005e46c0(undefined4 param_1)

{
  undefined local_88 [124];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3801b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff6c);
  local_4 = 1;
  FUN_005e4a40(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_88);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall
FUN_005e4760(undefined4 param_1_00,undefined4 param_2_00,undefined4 *param_1,undefined4 param_2)

{
  undefined local_290 [256];
  undefined local_190 [4];
  undefined local_18c [384];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3a92b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e43f0(local_290);
  local_4 = 1;
  FUN_005e48d0(local_190,param_1[1],local_290,param_2);
  local_4._0_1_ = 2;
  FUN_005e4960(*param_1,local_190);
  local_4._0_1_ = 1;
  FUN_00809120(local_18c);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00807c50(local_290);
  ExceptionList = local_c;
  return param_2_00;
}



void FUN_005e4840(void)

{
  undefined4 in_EAX;
  undefined4 unaff_ESI;
  
  FUN_005de980(unaff_ESI,in_EAX);
  return;
}



void __fastcall FUN_005e4880(int *param_1_00,uint *param_2,uint param_1)

{
  uint uVar1;
  uint uVar2;
  uint *puVar3;
  uint *puVar4;
  uint *unaff_EBX;
  
  uVar2 = param_1;
  param_1 = 0;
  uVar1 = *param_2;
  if (0 < (int)uVar1) {
    puVar4 = (uint *)(*param_1_00 + 0x70);
    param_1 = uVar1;
    puVar3 = &param_1;
    if (uVar1 <= *puVar4) {
      puVar3 = puVar4;
    }
    *puVar4 = *puVar3;
  }
  *unaff_EBX = *param_2;
  FUN_005da440(unaff_EBX + 1);
  unaff_EBX[0x1f] = *(uint *)(uVar2 + 0x78);
  unaff_EBX[0x20] = *(uint *)(uVar2 + 0x7c);
  return;
}



undefined4 FUN_005e48d0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined local_18 [4];
  int local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3a8d1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  FUN_0080a2f0(local_18,param_2);
  local_4 = 1;
  FUN_005e4ab0(param_1,param_4);
  local_4 = local_4 & 0xffffff00;
  if (local_14 != 0) {
    FUN_005da010(uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_005e4960(void)

{
  uint uVar1;
  undefined local_30c [380];
  undefined local_190 [8];
  undefined local_188 [380];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33e49;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffce0;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e4390(local_30c);
  local_4 = 1;
  FUN_005e4b90(uVar1);
  local_4._0_1_ = 2;
  FUN_005e4bc0(local_190);
  local_4._0_1_ = 1;
  FUN_00809120(local_188);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00809120(local_30c);
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_005e4a40(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2f258;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *param_1_00;
  FUN_005da440(param_1 + 0x7c);
  *(undefined4 *)(param_1 + 0xf4) = param_1_00[0x1f];
  *(undefined4 *)(param_1 + 0xf8) = param_1_00[0x20];
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_005e4ab0(undefined4 param_1,undefined4 param_2)

{
  undefined local_288 [256];
  undefined local_188 [380];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33de9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e43f0(local_288);
  local_4 = 1;
  FUN_005e4c90(local_188,param_2);
  local_4._0_1_ = 2;
  FUN_005e4d60(local_188);
  local_4._0_1_ = 1;
  FUN_00809120(local_188);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00807c50(local_288);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005e4b90(undefined4 *param_1)

{
  undefined4 *in_EAX;
  undefined *unaff_ESI;
  
  *unaff_ESI = *(undefined *)*param_1;
  *(undefined4 *)(unaff_ESI + 4) = *in_EAX;
  FUN_005e4390(unaff_ESI + 8);
  return;
}



void FUN_005e4bc0(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 unaff_ESI;
  undefined4 local_34 [2];
  undefined4 local_2c;
  uint local_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c34058;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_34[0] = 0;
  uVar1 = FUN_005e7cf0(DAT_0323f878 ^ (uint)local_34);
  local_4 = 0;
  FUN_005e4db0(unaff_ESI,uVar1,param_1);
  if (0xf < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_005e4c30(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33d88;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffff0;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  FUN_005e4e50(uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_005e4c90(undefined4 param_1)

{
  undefined4 unaff_EDI;
  undefined local_210 [260];
  undefined local_10c [256];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33d58;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e43f0(local_210);
  local_4 = 1;
  FUN_005e4ed0(local_210);
  local_4._0_1_ = 2;
  FUN_005e4f00(param_1,unaff_EDI);
  local_4._0_1_ = 1;
  FUN_00807c50(local_10c);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00807c50(local_210);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005e4d60(int *param_1,uint *param_2)

{
  uint uVar1;
  uint *puVar2;
  uint *puVar3;
  uint *unaff_ESI;
  uint local_4;
  
  local_4 = 0;
  uVar1 = *param_2;
  if (0 < (int)uVar1) {
    puVar3 = (uint *)(*param_1 + 0x70);
    local_4 = uVar1;
    puVar2 = &local_4;
    if (uVar1 <= *puVar3) {
      puVar2 = puVar3;
    }
    *puVar3 = *puVar2;
  }
  *unaff_ESI = *param_2;
  FUN_005e4390(unaff_ESI + 1);
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_005e4db0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33cf8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar1 = (undefined4 *)(param_1 + 4);
  *(undefined *)puVar1 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,param_2,0,0xffffffff);
  if (0xf < *(uint *)(param_1 + 0x18)) {
    puVar1 = (undefined4 *)*puVar1;
  }
  *(undefined **)(param_1 + 0x1c) = (undefined *)((int)puVar1 + *(int *)(param_1 + 0x14));
  local_4 = 0;
  param_1[0x20] = *param_3;
  *(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(param_3 + 4);
  FUN_005e4390(param_1 + 0x28);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005e4e50(int param_1)

{
  int *in_EAX;
  int *unaff_EBX;
  undefined auStack_84 [108];
  undefined4 uStack_18;
  
  if (unaff_EBX != in_EAX) {
    if (*in_EAX != 0) {
      if ((*(int *)(*in_EAX + 0x3c) == 0) &&
         ((*unaff_EBX == 0 || (*(int *)(*unaff_EBX + 0x3c) == 0)))) {
        FUN_005da630();
        return;
      }
      uStack_18 = 0x5e4e8b;
      FUN_005da250();
      if (param_1 != 0) {
        FUN_005da010();
      }
      FUN_005da390();
      return;
    }
    if (*unaff_EBX != 0) {
      FUN_005da3d0(auStack_84);
      FUN_005da5d0();
    }
  }
  return;
}



void FUN_005e4ed0(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *in_EAX;
  FUN_005e43f0(unaff_ESI + 1);
  return;
}



undefined4 FUN_005e4f00(undefined4 param_1)

{
  undefined local_84 [120];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c37fcb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff68);
  local_4 = 1;
  FUN_005e4fa0(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_84);
  ExceptionList = local_c;
  return param_1;
}



int FUN_005e4fa0(int param_1)

{
  undefined4 *unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *unaff_EBX;
  FUN_005e43f0(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005e5000(void)

{
  void *pvVar1;
  int iVar2;
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d2fb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x1a8);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_005e5080(pvVar1);
  }
  *unaff_ESI = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_005e5080(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33f08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::string_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>_>_>_>_>,struct_boost::xpressive::detail::matchable_ex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  FUN_005e4300(param_1 + 2);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005e50e0(int param_1)

{
  FUN_005e5170(param_1 + 0x28);
  return;
}



undefined4 __thiscall FUN_005e5100(undefined4 param_1_00,byte param_1)

{
  FUN_005e5120(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005e5120(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28958;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e41c0(param_1 + 2);
  *param_1 = boost::xpressive::detail::
             matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
             ::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 FUN_005e5170(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  int *in_EAX;
  int iVar5;
  int unaff_EBX;
  char *pcVar6;
  
  iVar1 = *in_EAX;
  iVar2 = in_EAX[1];
  if (*(uint *)(unaff_EBX + 0x18) < 0x10) {
    pcVar6 = (char *)(unaff_EBX + 4);
  }
  else {
    pcVar6 = *(char **)(unaff_EBX + 4);
  }
  if (pcVar6 != *(char **)(unaff_EBX + 0x1c)) {
    do {
      iVar3 = *in_EAX;
      if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != in_EAX[6])))) {
        FUN_00a3fb10();
      }
      if (in_EAX[1] == in_EAX[7]) {
        *(undefined *)((int)in_EAX + 0x29) = 1;
LAB_005e5254:
        *in_EAX = iVar1;
        in_EAX[1] = iVar2;
        return 0;
      }
      if (*in_EAX != -4) {
        if (*in_EAX == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *in_EAX;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar5 = iVar3 + 4;
        }
        else {
          iVar5 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)in_EAX[1]) {
          FUN_00a3fb10();
        }
      }
      if (*(char *)in_EAX[1] != *pcVar6) goto LAB_005e5254;
      pcVar6 = pcVar6 + 1;
      if (*in_EAX != -4) {
        if (*in_EAX == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *in_EAX;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar5 = iVar3 + 4;
        }
        else {
          iVar5 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)in_EAX[1]) {
          FUN_00a3fb10();
        }
      }
      in_EAX[1] = in_EAX[1] + 1;
    } while (pcVar6 != *(char **)(unaff_EBX + 0x1c));
  }
  cVar4 = FUN_005e5290(param_1);
  if (cVar4 != '\0') {
    return 1;
  }
  *in_EAX = iVar1;
  in_EAX[1] = iVar2;
  return 0;
}



undefined4 FUN_005e5290(char *param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *unaff_ESI;
  
  iVar1 = *unaff_ESI;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != unaff_ESI[6])))) {
    FUN_00a3fb10();
  }
  if (unaff_ESI[1] == unaff_ESI[7]) {
    *(undefined *)((int)unaff_ESI + 0x29) = 1;
    return 0;
  }
  if (*unaff_ESI != -4) {
    if (*unaff_ESI == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *unaff_ESI;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar3) <= (uint)unaff_ESI[1]) {
      FUN_00a3fb10();
    }
  }
  if (*(char *)unaff_ESI[1] == *param_1) {
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)unaff_ESI);
    cVar2 = FUN_005e5320();
    if (cVar2 != '\0') {
      return 1;
    }
    FUN_00429850();
  }
  return 0;
}



undefined4 __fastcall FUN_005e5320(int param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *in_EAX;
  
  uVar2 = *(undefined4 *)(in_EAX[2] + 0x1c + *param_2 * 0x24);
  iVar1 = in_EAX[2] + *param_2 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x18);
  *(undefined4 *)(iVar1 + 0x18) = *in_EAX;
  *(undefined4 *)(iVar1 + 0x1c) = in_EAX[1];
  cVar4 = FUN_005e5370(in_EAX,param_1 + 0x78);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x18) = uVar3;
  *(undefined4 *)(iVar1 + 0x1c) = uVar2;
  return 0;
}



void __thiscall FUN_005e5370(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void FUN_005e53d0(void)

{
  FUN_005e53f0();
  return;
}



undefined4 __fastcall FUN_005e53f0(int param_1,int *param_2)

{
  undefined4 *puVar1;
  undefined uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  char cVar7;
  undefined4 *in_EAX;
  
  uVar3 = *(undefined4 *)(in_EAX[2] + 4 + *param_2 * 0x24);
  puVar1 = (undefined4 *)(in_EAX[2] + *param_2 * 0x24);
  uVar4 = puVar1[2];
  uVar5 = puVar1[3];
  uVar2 = *(undefined *)(puVar1 + 4);
  uVar6 = *puVar1;
  *puVar1 = puVar1[6];
  puVar1[1] = puVar1[7];
  puVar1[2] = *in_EAX;
  puVar1[3] = in_EAX[1];
  *(undefined *)(puVar1 + 4) = 1;
  cVar7 = FUN_005e5480(in_EAX,param_1 + 0x78);
  if (cVar7 != '\0') {
    return 1;
  }
  *puVar1 = uVar6;
  puVar1[1] = uVar3;
  puVar1[2] = uVar4;
  puVar1[3] = uVar5;
  *(undefined *)(puVar1 + 4) = uVar2;
  return 0;
}



void __thiscall FUN_005e5480(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void FUN_005e54e0(void)

{
  FUN_005e5500();
  return;
}



undefined4 __fastcall FUN_005e5500(int param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *in_EAX;
  
  uVar2 = *(undefined4 *)(in_EAX[2] + 0x1c + *param_2 * 0x24);
  iVar1 = in_EAX[2] + *param_2 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x18);
  *(undefined4 *)(iVar1 + 0x18) = *in_EAX;
  *(undefined4 *)(iVar1 + 0x1c) = in_EAX[1];
  cVar4 = FUN_005e5550(in_EAX,param_1 + 0x78);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x18) = uVar3;
  *(undefined4 *)(iVar1 + 0x1c) = uVar2;
  return 0;
}



void __thiscall FUN_005e5550(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void FUN_005e55b0(void)

{
  FUN_005e2ed0();
  return;
}



void FUN_005e55c0(undefined2 param_1,undefined2 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = param_3;
    *(undefined2 *)((int)puVar1 + 10) = param_2;
    *puVar1 = WF3C48A30::WA3744893::vftable;
    *(undefined2 *)(puVar1 + 2) = param_1;
    FUN_005e5610(unaff_ESI);
    return;
  }
  FUN_005e5610(unaff_ESI);
  return;
}



undefined4 * __thiscall FUN_005e5610(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005e5670(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005e5670(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005e56d0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005e56d0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c680;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WA3744893>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005e5749(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4
FUN_005e5770(undefined4 param_1,undefined2 param_2,undefined2 param_3,undefined4 *param_4,
            undefined4 param_5)

{
  undefined4 *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puVar1 = param_4;
  puStack_8 = &LAB_00c15b6c;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 1;
  puVar3 = (undefined4 *)operator_new(0x10);
  if (puVar3 != (undefined4 *)0x0) {
    param_4 = (undefined4 *)0x0;
    puVar3[1] = param_5;
    *(undefined2 *)(puVar3 + 2) = param_2;
    *puVar3 = WF3C48A30::W02A3BCA7::vftable;
    *(undefined2 *)((int)puVar3 + 10) = param_3;
    puVar3[3] = puVar1;
  }
  local_4._0_1_ = 1;
  FUN_005e5830(param_1);
  local_4 = (uint)local_4._1_3_ << 8;
  if (param_4 != (undefined4 *)0x0) {
    (**(code **)*param_4)(1,uVar2);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005e5830(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005e58f0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005e5890(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_005e59f0(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005e58f0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005e5950(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005e5950(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c660;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::W02A3BCA7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005e59c9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e59f0(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_005e5b00();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005e5b00(undefined4 *param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_5cc [108];
  undefined4 uStack_560;
  undefined4 **ppuStack_55c;
  undefined auStack_540 [4];
  undefined4 *local_53c [2];
  undefined *local_534;
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3f973;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_540;
  ExceptionList = &local_c;
  local_534 = auStack_5cc;
  local_53c[0] = param_1;
  FUN_005da3d0(auStack_5cc);
  FUN_005da5d0();
  ppuStack_55c = (undefined4 **)0x5e5b76;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_55c = (undefined4 **)0x5e5b95;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_55c = (undefined4 **)0x5e5bd7;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_55c = (undefined4 **)0x5e5c08;
  FUN_005dde60();
  local_4 = 0;
  ppuStack_55c = (undefined4 **)local_53c[0];
  uStack_560 = 0x5e5c2b;
  FUN_005e5de0();
  local_4._0_1_ = 1;
  FUN_005e6ce0();
  local_4._0_1_ = 3;
  ppuStack_55c = (undefined4 **)0x5e5c50;
  FUN_005e5cf0();
  uStack_560 = 0x5e5c63;
  ppuStack_55c = local_53c;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_53c[0] != (undefined4 *)0x0) {
    piVar4 = local_53c[0] + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_53c[0] != (undefined4 *)0x0)) {
      ppuStack_55c = (undefined4 **)0x5e5ca5;
      (**(code **)*local_53c[0])();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005e5cf0(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c27268;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e5d70(param_1 + 0x24);
  if (0xf < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4),uVar1);
  }
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return;
}



void FUN_005e5d60(void)

{
  int in_EAX;
  
  FUN_005e5d70(in_EAX + 4);
  return;
}



void FUN_005e5d70(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00809050(param_1 + 0x7c);
  local_4 = 0xffffffff;
  FUN_005da4f0(param_1);
  ExceptionList = local_c;
  return;
}



void FUN_005e5dd0(void)

{
  int in_EAX;
  
  FUN_008090b0(in_EAX + 4);
  return;
}



void FUN_005e5de0(undefined4 *param_1,undefined *param_2)

{
  undefined local_a1;
  undefined4 local_a0;
  undefined local_98 [4];
  undefined local_94 [136];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c3f92e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_a0 = 0;
  local_a1 = *param_2;
  FUN_005e4460(local_98,param_1[1],&local_a1);
  local_4 = 1;
  FUN_005e6050(*param_1,local_98);
  local_a0 = 1;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_94);
  ExceptionList = local_c;
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_005e5ea0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  undefined4 *puVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c27268;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar1 = (undefined4 *)(param_1 + 4);
  *(undefined *)puVar1 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,unaff_EDI,0,0xffffffff);
  if (0xf < *(uint *)(param_1 + 0x18)) {
    puVar1 = (undefined4 *)*puVar1;
  }
  *(undefined **)(param_1 + 0x1c) = (undefined *)((int)puVar1 + *(int *)(param_1 + 0x14));
  local_4 = 0;
  param_1[0x20] = unaff_EDI[0x20];
  FUN_005e5f30(param_1 + 0x24);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_005e5f30(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1_00 + 0x78);
  FUN_005e5f90(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_005e5f90(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1_00 + 0x78);
  FUN_005e5ff0(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_005e5ff0(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1_00 + 0x78);
  FUN_005e4390(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall
FUN_005e6050(undefined4 param_1_00,undefined4 param_2_00,int param_1,undefined4 *param_2)

{
  undefined4 unaff_EBX;
  undefined4 local_198;
  undefined local_194 [120];
  undefined4 local_11c;
  undefined4 local_118;
  undefined local_110 [260];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3f8db;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_198 = *param_2;
  FUN_005da440(local_194);
  local_11c = param_2[0x1f];
  local_118 = param_2[0x20];
  local_4 = 1;
  FUN_005e46c0(local_110,*(undefined4 *)(param_1 + 4),&local_198);
  local_4._0_1_ = 2;
  FUN_005e6150(unaff_EBX);
  local_4._0_1_ = 1;
  FUN_00807c50(local_110);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005da4f0(local_194);
  ExceptionList = local_c;
  return param_2_00;
}



void __fastcall FUN_005e6150(undefined4 param_1_00,int param_2,undefined4 param_1)

{
  undefined local_290 [256];
  undefined local_190 [4];
  undefined local_18c [384];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3f87b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e43f0(local_290);
  local_4 = 1;
  FUN_005e48d0(local_190,*(undefined4 *)(param_2 + 4),local_290,param_1);
  local_4._0_1_ = 2;
  FUN_005e6230(local_190,param_1);
  local_4._0_1_ = 1;
  FUN_00809120(local_18c);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00807c50(local_290);
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall
FUN_005e6230(undefined4 param_1_00,undefined4 param_2_00,undefined4 param_1,undefined4 param_2)

{
  int unaff_EDI;
  undefined local_384 [380];
  undefined local_208 [508];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3a88b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e4390(local_384);
  local_4 = 1;
  FUN_005e6320(local_208,*(undefined4 *)(unaff_EDI + 4));
  local_4._0_1_ = 2;
  FUN_005e63c0(param_2);
  local_4._0_1_ = 1;
  FUN_008090b0(local_208);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00809120(local_384);
  ExceptionList = local_c;
  return param_2_00;
}



undefined4 FUN_005e6320(undefined4 param_1)

{
  undefined local_84 [120];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c70b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff68);
  local_4 = 1;
  FUN_005e6620(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_84);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005e63c0(undefined4 param_1_00,undefined4 *param_2,undefined4 param_1)

{
  undefined local_480 [504];
  undefined local_288 [4];
  undefined local_284 [632];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3a82b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e5ff0(local_480);
  local_4 = 1;
  FUN_005e64a0(local_288,param_2[1],local_480,param_1);
  local_4._0_1_ = 2;
  FUN_005e6530(*param_2,local_288,param_1);
  local_4._0_1_ = 1;
  FUN_00809050(local_284);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_008090b0(local_480);
  ExceptionList = local_c;
  return;
}



undefined4 FUN_005e64a0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined local_18 [4];
  int local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3a7d1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  FUN_0080a2f0(local_18,param_2);
  local_4 = 1;
  FUN_005e6680(param_1,param_4);
  local_4 = local_4 & 0xffffff00;
  if (local_14 != 0) {
    FUN_005da010(uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_005e6530(undefined4 param_1_00,undefined4 param_2,undefined4 *param_1)

{
  undefined local_574 [628];
  undefined local_300 [756];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3a78b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e5f90(local_574);
  local_4 = 1;
  FUN_005e6760(local_300,param_1[1]);
  local_4._0_1_ = 2;
  FUN_005e6800(*param_1);
  local_4._0_1_ = 1;
  FUN_005e5d70(local_300);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00809050(local_574);
  ExceptionList = local_c;
  return param_2;
}



int FUN_005e6620(int param_1)

{
  undefined4 *unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *unaff_EBX;
  FUN_005e4390(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_005e6680(undefined4 param_1,undefined4 param_2)

{
  undefined local_478 [504];
  undefined local_280 [628];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3a729;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e5ff0(local_478);
  local_4 = 1;
  FUN_005e68d0(local_280,param_2);
  local_4._0_1_ = 2;
  FUN_005e69a0(local_280);
  local_4._0_1_ = 1;
  FUN_00809050(local_280);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_008090b0(local_478);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_005e6760(undefined4 param_1)

{
  undefined local_84 [120];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c6bb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff68);
  local_4 = 1;
  FUN_005e6a90(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_84);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005e6800(void)

{
  undefined local_5f4 [752];
  undefined local_304 [4];
  undefined local_300 [756];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3a6cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e5f30(local_5f4);
  local_4 = 1;
  FUN_005e69f0(local_5f4);
  local_4._0_1_ = 2;
  FUN_005e6a20(local_304);
  local_4._0_1_ = 1;
  FUN_005e5d70(local_300);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005e5d70(local_5f4);
  ExceptionList = local_c;
  return;
}



undefined4 FUN_005e68d0(undefined4 param_1)

{
  undefined4 unaff_EDI;
  undefined local_400 [508];
  undefined local_204 [504];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3a668;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e5ff0(local_400);
  local_4 = 1;
  FUN_005e6af0(local_400);
  local_4._0_1_ = 2;
  FUN_005e6b20(param_1,unaff_EDI);
  local_4._0_1_ = 1;
  FUN_008090b0(local_204);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_008090b0(local_400);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005e69a0(int *param_1,uint *param_2)

{
  uint uVar1;
  uint *puVar2;
  uint *puVar3;
  uint *unaff_ESI;
  uint local_4;
  
  local_4 = 0;
  uVar1 = *param_2;
  if (0 < (int)uVar1) {
    puVar3 = (uint *)(*param_1 + 0x70);
    local_4 = uVar1;
    puVar2 = &local_4;
    if (uVar1 <= *puVar3) {
      puVar2 = puVar3;
    }
    *puVar3 = *puVar2;
  }
  *unaff_ESI = *param_2;
  FUN_005e5f90(unaff_ESI + 1);
  return;
}



void FUN_005e69f0(void)

{
  undefined4 *in_EAX;
  undefined *unaff_ESI;
  
  *unaff_ESI = *(undefined *)*in_EAX;
  FUN_005e5f30(unaff_ESI + 4);
  return;
}



void FUN_005e6a20(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 unaff_ESI;
  undefined4 local_34 [2];
  undefined4 local_2c;
  uint local_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c34058;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_34[0] = 0;
  uVar1 = FUN_005e7cf0(DAT_0323f878 ^ (uint)local_34);
  local_4 = 0;
  FUN_005e6bc0(unaff_ESI,uVar1,param_1);
  if (0xf < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return;
}



int FUN_005e6a90(int param_1)

{
  undefined4 *unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *unaff_EBX;
  FUN_005e5f90(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005e6af0(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *in_EAX;
  FUN_005e5ff0(unaff_ESI + 1);
  return;
}



undefined4 FUN_005e6b20(undefined4 param_1)

{
  undefined local_84 [120];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3a60b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff68);
  local_4 = 1;
  FUN_005e6c80(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_84);
  ExceptionList = local_c;
  return param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_005e6bc0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33cf8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar1 = (undefined4 *)(param_1 + 4);
  *(undefined *)puVar1 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,param_2,0,0xffffffff);
  if (0xf < *(uint *)(param_1 + 0x18)) {
    puVar1 = (undefined4 *)*puVar1;
  }
  *(undefined **)(param_1 + 0x1c) = (undefined *)((int)puVar1 + *(int *)(param_1 + 0x14));
  local_4 = 0;
  param_1[0x20] = *param_3;
  FUN_005e5f30(param_1 + 0x24);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005e6c60(undefined4 param_1)

{
  undefined4 in_EAX;
  
  FUN_005dee10(param_1,in_EAX);
  return;
}



int FUN_005e6c80(int param_1)

{
  undefined4 *unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *unaff_EBX;
  FUN_005e5ff0(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005e6ce0(void)

{
  void *pvVar1;
  int iVar2;
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d2fb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x318);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_005e6d60(pvVar1);
  }
  *unaff_ESI = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_005e6d60(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33f08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::string_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struc...lass_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  FUN_005e5ea0(param_1 + 2);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005e6dc0(int param_1)

{
  FUN_005e6e70(param_1 + 0x28);
  return;
}



void __thiscall FUN_005e6de0(int param_1_00,undefined4 param_1)

{
  FUN_005e0410(param_1,&param_1,param_1_00 + 8);
  return;
}



undefined4 __thiscall FUN_005e6e00(undefined4 param_1_00,byte param_1)

{
  FUN_005e6e20(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005e6e20(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28958;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e5cf0(param_1 + 2);
  *param_1 = boost::xpressive::detail::
             matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
             ::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 FUN_005e6e70(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  int *in_EAX;
  int iVar5;
  int unaff_EBX;
  char *pcVar6;
  
  iVar1 = *in_EAX;
  iVar2 = in_EAX[1];
  if (*(uint *)(unaff_EBX + 0x18) < 0x10) {
    pcVar6 = (char *)(unaff_EBX + 4);
  }
  else {
    pcVar6 = *(char **)(unaff_EBX + 4);
  }
  if (pcVar6 != *(char **)(unaff_EBX + 0x1c)) {
    do {
      iVar3 = *in_EAX;
      if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != in_EAX[6])))) {
        FUN_00a3fb10();
      }
      if (in_EAX[1] == in_EAX[7]) {
        *(undefined *)((int)in_EAX + 0x29) = 1;
LAB_005e6f54:
        *in_EAX = iVar1;
        in_EAX[1] = iVar2;
        return 0;
      }
      if (*in_EAX != -4) {
        if (*in_EAX == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *in_EAX;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar5 = iVar3 + 4;
        }
        else {
          iVar5 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)in_EAX[1]) {
          FUN_00a3fb10();
        }
      }
      if (*(char *)in_EAX[1] != *pcVar6) goto LAB_005e6f54;
      pcVar6 = pcVar6 + 1;
      if (*in_EAX != -4) {
        if (*in_EAX == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *in_EAX;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar5 = iVar3 + 4;
        }
        else {
          iVar5 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)in_EAX[1]) {
          FUN_00a3fb10();
        }
      }
      in_EAX[1] = in_EAX[1] + 1;
    } while (pcVar6 != *(char **)(unaff_EBX + 0x1c));
  }
  cVar4 = FUN_005e6f90(param_1);
  if (cVar4 != '\0') {
    return 1;
  }
  *in_EAX = iVar1;
  in_EAX[1] = iVar2;
  return 0;
}



undefined4 FUN_005e6f90(char *param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *unaff_ESI;
  int unaff_EDI;
  
  iVar1 = *unaff_ESI;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != unaff_ESI[6])))) {
    FUN_00a3fb10();
  }
  if (unaff_ESI[1] == unaff_ESI[7]) {
    *(undefined *)((int)unaff_ESI + 0x29) = 1;
    return 0;
  }
  if (*unaff_ESI != -4) {
    if (*unaff_ESI == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *unaff_ESI;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar3) <= (uint)unaff_ESI[1]) {
      FUN_00a3fb10();
    }
  }
  if (*(char *)unaff_ESI[1] == *param_1) {
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)unaff_ESI);
    cVar2 = FUN_005e7020(unaff_ESI,unaff_EDI + 0x78);
    if (cVar2 != '\0') {
      return 1;
    }
    FUN_00429850();
  }
  return 0;
}



void __thiscall FUN_005e7020(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>_>_>_>_>_>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void FUN_005e7080(void)

{
  FUN_005e70a0();
  return;
}



undefined4 __fastcall FUN_005e70a0(int param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *in_EAX;
  
  uVar2 = *(undefined4 *)(in_EAX[2] + 0x1c + *param_2 * 0x24);
  iVar1 = in_EAX[2] + *param_2 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x18);
  *(undefined4 *)(iVar1 + 0x18) = *in_EAX;
  *(undefined4 *)(iVar1 + 0x1c) = in_EAX[1];
  cVar4 = FUN_005e70f0(in_EAX,param_1 + 0x78);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x18) = uVar3;
  *(undefined4 *)(iVar1 + 0x1c) = uVar2;
  return 0;
}



void __thiscall FUN_005e70f0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>_>_>_>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void FUN_005e7150(void)

{
  FUN_005e7170();
  return;
}



undefined4 __fastcall FUN_005e7170(int param_1,int *param_2)

{
  undefined4 *puVar1;
  undefined uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  char cVar7;
  undefined4 *in_EAX;
  
  uVar3 = *(undefined4 *)(in_EAX[2] + 4 + *param_2 * 0x24);
  puVar1 = (undefined4 *)(in_EAX[2] + *param_2 * 0x24);
  uVar4 = puVar1[2];
  uVar5 = puVar1[3];
  uVar2 = *(undefined *)(puVar1 + 4);
  uVar6 = *puVar1;
  *puVar1 = puVar1[6];
  puVar1[1] = puVar1[7];
  puVar1[2] = *in_EAX;
  puVar1[3] = in_EAX[1];
  *(undefined *)(puVar1 + 4) = 1;
  cVar7 = FUN_005e7200(in_EAX,param_1 + 0x78);
  if (cVar7 != '\0') {
    return 1;
  }
  *puVar1 = uVar6;
  puVar1[1] = uVar3;
  puVar1[2] = uVar4;
  puVar1[3] = uVar5;
  *(undefined *)(puVar1 + 4) = uVar2;
  return 0;
}



void __thiscall FUN_005e7200(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>_>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void FUN_005e7260(void)

{
  FUN_005e5320();
  return;
}



void FUN_005e7280(undefined2 param_1,undefined2 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = param_3;
    *(undefined2 *)((int)puVar1 + 10) = param_2;
    *puVar1 = WF3C48A30::W98996D52::vftable;
    *(undefined2 *)(puVar1 + 2) = param_1;
    FUN_005e7310(unaff_ESI);
    return;
  }
  FUN_005e7310(unaff_ESI);
  return;
}



void FUN_005e72d0(void)

{
  int *piVar1;
  int iVar2;
  int in_EAX;
  
  piVar1 = *(int **)(in_EAX + 4);
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
                    // WARNING: Could not recover jumptable at 0x005e7301. Too many branches
                    // WARNING: Treating indirect jump as call
        (**(code **)(*piVar1 + 8))();
        return;
      }
    }
  }
  return;
}



undefined4 * __thiscall FUN_005e7310(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005e7370(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005e7370(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005e73d0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005e73d0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c640;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::W98996D52>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005e7449(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4
FUN_005e7470(undefined4 param_1,undefined2 param_2,undefined2 param_3,undefined4 *param_4,
            undefined4 param_5)

{
  undefined4 *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puVar1 = param_4;
  puStack_8 = &LAB_00c15b6c;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 1;
  puVar3 = (undefined4 *)operator_new(0x10);
  if (puVar3 != (undefined4 *)0x0) {
    param_4 = (undefined4 *)0x0;
    puVar3[1] = param_5;
    *(undefined2 *)(puVar3 + 2) = param_2;
    *puVar3 = WF3C48A30::WE686A6D5::vftable;
    *(undefined2 *)((int)puVar3 + 10) = param_3;
    puVar3[3] = puVar1;
  }
  local_4._0_1_ = 1;
  FUN_005e7530(param_1);
  local_4 = (uint)local_4._1_3_ << 8;
  if (param_4 != (undefined4 *)0x0) {
    (**(code **)*param_4)(1,uVar2);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_005e7530(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005e7590(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005e7590(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005e75f0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005e75f0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c620;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WE686A6D5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005e7669(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e7690(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(8);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = param_1;
    *puVar1 = WF3C48A30::WCE1107F3::vftable;
    FUN_005e76d0(unaff_ESI);
    return;
  }
  FUN_005e76d0(unaff_ESI);
  return;
}



undefined4 * __thiscall FUN_005e76d0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005e77f0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005e7730(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_005e78f0(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005e7790(void)

{
  undefined4 uVar1;
  int iVar2;
  int *piVar3;
  undefined4 *in_EAX;
  undefined4 *unaff_EDI;
  undefined4 local_8 [2];
  
  uVar1 = *in_EAX;
  iVar2 = in_EAX[1];
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  if (local_8 != unaff_EDI) {
    *unaff_EDI = uVar1;
  }
  piVar3 = (int *)unaff_EDI[1];
  unaff_EDI[1] = iVar2;
  if (piVar3 != (int *)0x0) {
    LOCK();
    iVar2 = piVar3[1] + -1;
    piVar3[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar3 + 4))();
      LOCK();
      iVar2 = piVar3[2] + -1;
      piVar3[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar3 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_005e77f0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005e7850(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005e7850(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c600;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WCE1107F3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005e78c9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e78f0(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_005e7a00();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005e7a00(undefined4 param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_2e4 [108];
  undefined4 uStack_278;
  undefined4 **ppuStack_274;
  undefined auStack_258 [4];
  undefined4 *local_254 [2];
  undefined4 local_24c;
  undefined *local_248;
  uint local_240;
  undefined4 local_230;
  uint local_22c;
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33cc1;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_258;
  ExceptionList = &local_c;
  local_248 = auStack_2e4;
  local_24c = param_1;
  FUN_005da3d0(auStack_2e4);
  FUN_005da5d0();
  ppuStack_274 = (undefined4 **)0x5e7a7d;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_274 = (undefined4 **)0x5e7a9c;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_274 = (undefined4 **)0x5e7ae2;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_274 = (undefined4 **)0x5e7b0a;
  FUN_005dde60();
  local_4 = 0;
  ppuStack_274 = (undefined4 **)0x5e7b25;
  FUN_005e7c00();
  local_4._0_1_ = 1;
  ppuStack_274 = (undefined4 **)0x5e7b37;
  FUN_005e7d10();
  local_4._0_1_ = 3;
  if (0xf < local_22c) {
                    // WARNING: Subroutine does not return
    ppuStack_274 = (undefined4 **)&UNK_005e7b53;
    FUN_00a3f6a1();
  }
  ppuStack_274 = local_254;
  local_22c = 0xf;
  local_230 = 0;
  local_240 = local_240 & 0xffffff00;
  uStack_278 = 0x5e7b78;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_254[0] != (undefined4 *)0x0) {
    piVar4 = local_254[0] + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_254[0] != (undefined4 *)0x0)) {
      ppuStack_274 = (undefined4 **)0x5e7bba;
      (**(code **)*local_254[0])();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __fastcall FUN_005e7c00(undefined *param_1_00,undefined4 param_2,int param_1)

{
  uint local_4;
  
  local_4 = (uint)CONCAT11(*param_1_00,**(undefined **)(param_1 + 4));
  FUN_005e7c40(&local_4);
  return param_2;
}



void FUN_005e7c40(undefined2 *param_1)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_ESI;
  undefined4 *puVar2;
  undefined4 local_2c;
  uint local_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c21de8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_005e7cf0(DAT_0323f878 ^ (uint)&stack0xffffffc4);
  local_4 = 0;
  *(undefined4 *)(unaff_ESI + 0x18) = 0xf;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  puVar2 = (undefined4 *)(unaff_ESI + 4);
  *(undefined *)puVar2 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (unaff_ESI,pbVar1,0,0xffffffff);
  if (0xf < *(uint *)(unaff_ESI + 0x18)) {
    puVar2 = (undefined4 *)*puVar2;
  }
  *(undefined **)(unaff_ESI + 0x1c) = (undefined *)(*(int *)(unaff_ESI + 0x14) + (int)puVar2);
  *(undefined2 *)(unaff_ESI + 0x20) = *param_1;
  if (0xf < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return;
}



void FUN_005e7cf0(void)

{
  FUN_005dedf0();
  return;
}



void FUN_005e7d10(undefined4 param_1)

{
  void *pvVar1;
  int iVar2;
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d2fb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x2c);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_005e7d90(pvVar1,param_1);
  }
  *unaff_ESI = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return;
}



undefined4 *
FUN_005e7d90(undefined4 *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1cf08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::string_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>,struct_boost::xpressive::detail::matchable_ex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  param_1[8] = 0xf;
  param_1[7] = 0;
  puVar1 = param_1 + 3;
  *(undefined *)puVar1 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 2),param_2,0,0xffffffff);
  if (0xf < (uint)param_1[8]) {
    puVar1 = (undefined4 *)*puVar1;
  }
  param_1[9] = (undefined *)(param_1[7] + (int)puVar1);
  *(undefined2 *)(param_1 + 10) = *(undefined2 *)(param_2 + 0x20);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005e7e20(int param_1)

{
  FUN_005e7e80(param_1 + 8,param_1 + 0x28);
  return;
}



undefined4 * __thiscall FUN_005e7e40(undefined4 *param_1_00,byte param_1)

{
  if (0xf < (uint)param_1_00[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[3]);
  }
  param_1_00[8] = 0xf;
  param_1_00[7] = 0;
  *(undefined *)(param_1_00 + 3) = 0;
  *param_1_00 = boost::xpressive::detail::
                matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
                ::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_005e7e80(int param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  int iVar5;
  int *unaff_ESI;
  char *pcVar6;
  
  iVar1 = *unaff_ESI;
  iVar2 = unaff_ESI[1];
  if (*(uint *)(param_1 + 0x18) < 0x10) {
    pcVar6 = (char *)(param_1 + 4);
  }
  else {
    pcVar6 = *(char **)(param_1 + 4);
  }
  if (pcVar6 != *(char **)(param_1 + 0x1c)) {
    do {
      iVar3 = *unaff_ESI;
      if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != unaff_ESI[6])))) {
        FUN_00a3fb10();
      }
      if (unaff_ESI[1] == unaff_ESI[7]) {
        *(undefined *)((int)unaff_ESI + 0x29) = 1;
        goto LAB_005e7f63;
      }
      if (*unaff_ESI != -4) {
        if (*unaff_ESI == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *unaff_ESI;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar5 = iVar3 + 4;
        }
        else {
          iVar5 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)unaff_ESI[1]) {
          FUN_00a3fb10();
        }
      }
      if (*(char *)unaff_ESI[1] != *pcVar6) goto LAB_005e7f63;
      pcVar6 = pcVar6 + 1;
      if (*unaff_ESI != -4) {
        if (*unaff_ESI == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *unaff_ESI;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar5 = iVar3 + 4;
        }
        else {
          iVar5 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)unaff_ESI[1]) {
          FUN_00a3fb10();
        }
      }
      unaff_ESI[1] = unaff_ESI[1] + 1;
    } while (pcVar6 != *(char **)(param_1 + 0x1c));
  }
  cVar4 = FUN_005e7f80(param_2);
  if (cVar4 != '\0') {
    return 1;
  }
LAB_005e7f63:
  unaff_ESI[1] = iVar2;
  *unaff_ESI = iVar1;
  return 0;
}



undefined4 FUN_005e7f80(char *param_1)

{
  int iVar1;
  char cVar2;
  int *in_EAX;
  int iVar3;
  
  iVar1 = *in_EAX;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != in_EAX[6])))) {
    FUN_00a3fb10();
  }
  if (in_EAX[1] == in_EAX[7]) {
    *(undefined *)((int)in_EAX + 0x29) = 1;
    return 0;
  }
  if (*in_EAX != -4) {
    if (*in_EAX == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *in_EAX;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar3) <= (uint)in_EAX[1]) {
      FUN_00a3fb10();
    }
  }
  if (*(char *)in_EAX[1] == *param_1) {
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)in_EAX);
    cVar2 = FUN_005e2f60();
    if (cVar2 != '\0') {
      return 1;
    }
    FUN_00429850();
  }
  return 0;
}



void FUN_005e8010(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(8);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = param_1;
    *puVar1 = WF3C48A30::W8FC155F7::vftable;
    FUN_005e8050(unaff_ESI);
    return;
  }
  FUN_005e8050(unaff_ESI);
  return;
}



undefined4 * __thiscall FUN_005e8050(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005e80b0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005e80b0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005e8110(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005e8110(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c5e0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::W8FC155F7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005e8189(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e81b0(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x24);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_00b85710(pvVar1,param_2);
  }
  local_4 = 0xffffffff;
  FUN_005e8230(unaff_EDI);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_005e8230(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005e8290(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005e8290(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005e82f0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005e82f0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c5c0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::W54286D60>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005e8369(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e8390(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x24);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_00b85650(pvVar1,param_2);
  }
  local_4 = 0xffffffff;
  FUN_005e8410(unaff_EDI);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_005e8410(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005e8470(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005e8470(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005e84d0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005e84d0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c5a0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::W7D0C5BC6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005e8549(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e8570(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x24);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_00b85590(pvVar1,param_2);
  }
  local_4 = 0xffffffff;
  FUN_005e85f0(unaff_EDI);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_005e85f0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005e8650(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005e8650(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005e86b0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005e86b0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c580;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WCCCCB5AD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005e8729(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e8750(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x24);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_00b854d0(pvVar1,param_2);
  }
  local_4 = 0xffffffff;
  FUN_005e87d0(unaff_EDI);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_005e87d0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005e8830(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005e8830(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005e8890(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005e8890(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c560;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WDD4DE097>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005e8909(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e8930(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  undefined4 unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x40);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_00b853f0(pvVar1,param_2,param_3);
  }
  local_4 = 0xffffffff;
  FUN_005e89b0(unaff_EDI);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_005e89b0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005e8a70(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005e8a10(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_005e8b70(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005e8a70(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005e8ad0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005e8ad0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c540;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::WA4F624B9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005e8b49(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005e8b70(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_005e8c80();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005e8c80(undefined4 *param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_544 [104];
  undefined4 uStack_4dc;
  undefined *puStack_4d8;
  undefined4 **ppuStack_4d4;
  undefined4 *local_4b8;
  undefined local_4b1;
  undefined *local_4b0;
  undefined local_4ac [652];
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3a5a3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_4b8;
  ExceptionList = &local_c;
  local_4b0 = auStack_544;
  local_4b8 = param_1;
  FUN_005da3d0(auStack_544);
  FUN_005da5d0();
  ppuStack_4d4 = (undefined4 **)0x5e8cf6;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_4d4 = (undefined4 **)0x5e8d15;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_4d4 = (undefined4 **)0x5e8d57;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_4d4 = (undefined4 **)0x5e8d88;
  FUN_005dde60();
  ppuStack_4d4 = (undefined4 **)&local_4b1;
  puStack_4d8 = local_4ac;
  local_4 = 0;
  uStack_4dc = 0x5e8dac;
  FUN_005e8f70();
  local_4._0_1_ = 1;
  ppuStack_4d4 = (undefined4 **)0x5e8dbe;
  FUN_005e99e0();
  local_4._0_1_ = 3;
  ppuStack_4d4 = (undefined4 **)0x5e8dd3;
  FUN_005e8e70();
  puStack_4d8 = (undefined *)0x5e8de6;
  ppuStack_4d4 = &local_4b8;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_4b8 != (undefined4 *)0x0) {
    piVar4 = local_4b8 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_4b8 != (undefined4 *)0x0)) {
      ppuStack_4d4 = (undefined4 **)0x5e8e28;
      (**(code **)*local_4b8)();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005e8e70(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c27268;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e8f00(param_1 + 0x28);
  if (0xf < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4),uVar1);
  }
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return;
}



void FUN_005e8ee0(void)

{
  int in_EAX;
  
  FUN_005e8f00(in_EAX + 8);
  return;
}



void FUN_005e8ef0(void)

{
  int in_EAX;
  
  FUN_005e8f00(in_EAX + 4);
  return;
}



void FUN_005e8f00(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2af38;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005ddc80(param_1 + 0x134);
  local_4 = 0xffffffff;
  FUN_005ddc80(param_1);
  ExceptionList = local_c;
  return;
}



void FUN_005e8f60(void)

{
  int in_EAX;
  
  FUN_005ddc80(in_EAX + 0xc);
  return;
}



undefined4 __fastcall
FUN_005e8f70(undefined4 param_1_00,undefined4 *param_2_00,undefined4 param_1,undefined *param_2)

{
  undefined local_151;
  undefined4 local_150;
  undefined4 local_14c;
  undefined local_148 [4];
  undefined local_144 [312];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c3a55e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_150 = 0;
  local_151 = *param_2;
  local_14c = param_1;
  FUN_005de110(&local_151);
  local_4 = 1;
  FUN_005e9170(*param_2_00,local_148);
  local_150 = 1;
  local_4 = local_4 & 0xffffff00;
  FUN_005ddc80(local_144);
  ExceptionList = local_c;
  return param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_005e9030(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33cf8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar1 = (undefined4 *)(param_1 + 4);
  *(undefined *)puVar1 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,param_1_00,0,0xffffffff);
  if (0xf < *(uint *)(param_1 + 0x18)) {
    puVar1 = (undefined4 *)*puVar1;
  }
  *(undefined **)(param_1 + 0x1c) = (undefined *)((int)puVar1 + *(int *)(param_1 + 0x14));
  local_4 = 0;
  param_1[0x20] = param_1_00[0x20];
  *(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(param_1_00 + 0x24);
  FUN_005e90d0(param_1 + 0x28,param_1_00 + 0x28);
  ExceptionList = local_c;
  return param_1;
}



int FUN_005e90d0(int param_1,int param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33c78;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005de230(param_1);
  puVar2 = (undefined4 *)(param_2 + 0x104);
  puVar3 = (undefined4 *)(param_1 + 0x104);
  for (iVar1 = 9; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar3 = *puVar2;
    puVar2 = puVar2 + 1;
    puVar3 = puVar3 + 1;
  }
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x128) = *(undefined4 *)(param_2 + 0x128);
  *(undefined *)(param_1 + 300) = *(undefined *)(param_2 + 300);
  FUN_005ddf50(param_1 + 0x130);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005e9170(undefined4 *param_1)

{
  undefined4 unaff_EBX;
  undefined local_280 [4];
  undefined local_27c [308];
  undefined local_148 [8];
  undefined local_140 [308];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3a509;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005ddf50(local_280);
  local_4 = 1;
  FUN_005de440(local_280);
  local_4._0_1_ = 2;
  FUN_005e9250(*param_1,local_148,unaff_EBX);
  local_4._0_1_ = 1;
  FUN_005ddc80(local_140);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005ddc80(local_27c);
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall
FUN_005e9250(undefined4 param_1_00,undefined4 param_2_00,undefined4 *param_1,undefined *param_2,
            undefined4 param_3)

{
  undefined local_3b4 [4];
  undefined local_3b0 [4];
  undefined local_3ac [304];
  undefined local_27c [4];
  undefined local_278 [620];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3a4a9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_3b4[0] = *param_2;
  FUN_005ddf50(local_3b0);
  local_4 = 1;
  FUN_005e9340(local_3b4,param_3);
  local_4._0_1_ = 2;
  FUN_005e9390(*param_1,local_27c);
  local_4._0_1_ = 1;
  FUN_005e8f00(local_278);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005ddc80(local_3ac);
  ExceptionList = local_c;
  return param_2_00;
}



void FUN_005e9340(undefined4 param_1,undefined4 param_2)

{
  undefined4 unaff_ESI;
  
  FUN_005e9470(unaff_ESI,param_1,param_2);
  return;
}



void FUN_005e9390(undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined local_4e4 [612];
  undefined local_280 [8];
  undefined local_278 [620];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3a449;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffb08;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e90d0(local_4e4,param_2 + 4);
  local_4 = 1;
  FUN_005e9560(uVar1);
  local_4._0_1_ = 2;
  FUN_005e9590(local_280);
  local_4._0_1_ = 1;
  FUN_005e8f00(local_278);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005e8f00(local_4e4);
  ExceptionList = local_c;
  return;
}



undefined4 FUN_005e9470(undefined4 param_1,undefined *param_2,undefined4 param_3)

{
  undefined local_3b4 [4];
  undefined local_3b0 [4];
  undefined local_3ac [304];
  undefined local_27c [624];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3a3e7;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_3b4[0] = *param_2;
  FUN_005ddf50(local_3b0);
  local_4 = 1;
  FUN_005e9600(local_27c,local_3b4,param_3);
  local_4._0_1_ = 2;
  FUN_005e96e0(local_27c);
  local_4._0_1_ = 1;
  FUN_005e8f00(local_27c);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005ddc80(local_3ac);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005e9560(undefined4 *param_1)

{
  undefined4 *in_EAX;
  undefined *unaff_ESI;
  
  *unaff_ESI = *(undefined *)*param_1;
  *(undefined4 *)(unaff_ESI + 4) = *in_EAX;
  FUN_005e90d0(unaff_ESI + 8,in_EAX + 1);
  return;
}



void FUN_005e9590(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 unaff_ESI;
  undefined4 local_34 [2];
  undefined4 local_2c;
  uint local_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c34058;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_34[0] = 0;
  uVar1 = FUN_005e7cf0(DAT_0323f878 ^ (uint)local_34);
  local_4 = 0;
  FUN_005e9730(unaff_ESI,uVar1,param_1);
  if (0xf < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return;
}



undefined4 FUN_005e9600(undefined4 param_1)

{
  uint uVar1;
  undefined4 unaff_EDI;
  undefined local_288 [4];
  undefined local_284 [304];
  undefined local_154 [12];
  undefined local_148 [316];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3a386;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffd64;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005ddf50(local_288);
  local_4 = 1;
  FUN_005e97d0(uVar1);
  local_4._0_1_ = 2;
  FUN_005e9800(param_1,unaff_EDI,local_154);
  local_4._0_1_ = 1;
  FUN_005ddc80(local_148);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005ddc80(local_284);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005e96e0(int *param_1_00,uint *param_2,undefined4 param_1)

{
  uint uVar1;
  uint *puVar2;
  uint *puVar3;
  uint *unaff_ESI;
  uint local_4;
  
  local_4 = 0;
  uVar1 = *param_2;
  if (0 < (int)uVar1) {
    puVar3 = (uint *)(*param_1_00 + 0x70);
    local_4 = uVar1;
    puVar2 = &local_4;
    if (uVar1 <= *puVar3) {
      puVar2 = puVar3;
    }
    *puVar3 = *puVar2;
  }
  *unaff_ESI = *param_2;
  FUN_005e90d0(unaff_ESI + 1,param_1);
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_005e9730(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33cf8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar1 = (undefined4 *)(param_1 + 4);
  *(undefined *)puVar1 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,param_2,0,0xffffffff);
  if (0xf < *(uint *)(param_1 + 0x18)) {
    puVar1 = (undefined4 *)*puVar1;
  }
  *(undefined **)(param_1 + 0x1c) = (undefined *)((int)puVar1 + *(int *)(param_1 + 0x14));
  local_4 = 0;
  param_1[0x20] = *param_3;
  *(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(param_3 + 4);
  FUN_005e90d0(param_1 + 0x28,param_3 + 8);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005e97d0(undefined4 *param_1)

{
  undefined *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *param_1;
  *(undefined *)(unaff_ESI + 1) = *in_EAX;
  FUN_005ddf50(unaff_ESI + 2);
  return;
}



undefined4 FUN_005e9800(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined local_138 [300];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3a32b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e98a0(local_138,param_2);
  local_4 = 1;
  FUN_005e9950(param_1,param_3);
  local_4 = local_4 & 0xffffff00;
  FUN_005ddc80(local_138);
  ExceptionList = local_c;
  return param_1;
}



int FUN_005e98a0(int param_1,undefined4 param_2)

{
  int iVar1;
  undefined local_110 [260];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3a2da;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005de7e0(local_110,param_2);
  local_4 = 1;
  FUN_005de230(param_1);
  *(undefined *)(param_1 + 0x104) = 0;
  iVar1 = 7;
  do {
    *(undefined4 *)(param_1 + 0x108 + iVar1 * 4) = 0;
    iVar1 = iVar1 + -1;
  } while (-1 < iVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_005ddc80(local_110);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_005e9950(int param_1_00,int param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33c78;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005de230(param_1);
  puVar2 = (undefined4 *)(param_1_00 + 0x104);
  puVar3 = (undefined4 *)(param_1 + 0x104);
  for (iVar1 = 9; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar3 = *puVar2;
    puVar2 = puVar2 + 1;
    puVar3 = puVar3 + 1;
  }
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x128) = *param_2;
  *(undefined *)(param_1 + 300) = *(undefined *)(param_2 + 1);
  FUN_005ddf50(param_1 + 0x130);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005e99e0(void)

{
  void *pvVar1;
  int iVar2;
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x294);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_005e9a60(pvVar1);
  }
  *unaff_ESI = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_005e9a60(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33f08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::string_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::alternate_matcher<struct_boost::xpressive::detail::alternates_list<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::alternate_end_matcher,struct_boost::xpressive::detail::no_next>_>,str...lass_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  FUN_005e9030(param_1 + 2);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005e9ac0(int param_1)

{
  FUN_005e9b80(param_1 + 0x28);
  return;
}



void __thiscall FUN_005e9ae0(int param_1_00,undefined4 param_1)

{
  FUN_005e0f40(param_1,param_1_00 + 0x158);
  FUN_005e0f40(param_1,param_1_00 + 0x28c);
  return;
}



undefined4 __thiscall FUN_005e9b10(undefined4 param_1_00,byte param_1)

{
  FUN_005e9b30(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005e9b30(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28958;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e8e70(param_1 + 2);
  *param_1 = boost::xpressive::detail::
             matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
             ::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 FUN_005e9b80(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  int *in_EAX;
  int iVar5;
  int unaff_EBX;
  char *pcVar6;
  
  iVar1 = *in_EAX;
  iVar2 = in_EAX[1];
  if (*(uint *)(unaff_EBX + 0x18) < 0x10) {
    pcVar6 = (char *)(unaff_EBX + 4);
  }
  else {
    pcVar6 = *(char **)(unaff_EBX + 4);
  }
  if (pcVar6 != *(char **)(unaff_EBX + 0x1c)) {
    do {
      iVar3 = *in_EAX;
      if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != in_EAX[6])))) {
        FUN_00a3fb10();
      }
      if (in_EAX[1] == in_EAX[7]) {
        *(undefined *)((int)in_EAX + 0x29) = 1;
LAB_005e9c64:
        *in_EAX = iVar1;
        in_EAX[1] = iVar2;
        return 0;
      }
      if (*in_EAX != -4) {
        if (*in_EAX == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *in_EAX;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar5 = iVar3 + 4;
        }
        else {
          iVar5 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)in_EAX[1]) {
          FUN_00a3fb10();
        }
      }
      if (*(char *)in_EAX[1] != *pcVar6) goto LAB_005e9c64;
      pcVar6 = pcVar6 + 1;
      if (*in_EAX != -4) {
        if (*in_EAX == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *in_EAX;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar5 = iVar3 + 4;
        }
        else {
          iVar5 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)in_EAX[1]) {
          FUN_00a3fb10();
        }
      }
      in_EAX[1] = in_EAX[1] + 1;
    } while (pcVar6 != *(char **)(unaff_EBX + 0x1c));
  }
  cVar4 = FUN_005e9ca0(param_1);
  if (cVar4 != '\0') {
    return 1;
  }
  *in_EAX = iVar1;
  in_EAX[1] = iVar2;
  return 0;
}



undefined4 FUN_005e9ca0(char *param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *unaff_ESI;
  
  iVar1 = *unaff_ESI;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != unaff_ESI[6])))) {
    FUN_00a3fb10();
  }
  if (unaff_ESI[1] == unaff_ESI[7]) {
    *(undefined *)((int)unaff_ESI + 0x29) = 1;
    return 0;
  }
  if (*unaff_ESI != -4) {
    if (*unaff_ESI == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *unaff_ESI;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar3) <= (uint)unaff_ESI[1]) {
      FUN_00a3fb10();
    }
  }
  if (*(char *)unaff_ESI[1] == *param_1) {
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)unaff_ESI);
    cVar2 = FUN_005e9d40();
    if (cVar2 != '\0') {
      return 1;
    }
    FUN_00429850();
  }
  return 0;
}



undefined4 __fastcall FUN_005e9d40(undefined4 *param_1)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  char cVar5;
  int *in_EAX;
  
  iVar1 = *in_EAX;
  iVar2 = param_1[2];
  uVar3 = *(undefined4 *)(iVar2 + 0x18 + iVar1 * 0x24);
  uVar4 = *(undefined4 *)(iVar2 + 0x1c + iVar1 * 0x24);
  iVar2 = iVar2 + iVar1 * 0x24;
  *(undefined4 *)(iVar2 + 0x18) = *param_1;
  *(undefined4 *)(iVar2 + 0x1c) = param_1[1];
  cVar5 = FUN_005e9d90();
  if (cVar5 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar2 + 0x18) = uVar3;
  *(undefined4 *)(iVar2 + 0x1c) = uVar4;
  return 0;
}



undefined4 FUN_005e9d90(void)

{
  int iVar1;
  int iVar2;
  char cVar3;
  undefined4 uVar4;
  int iVar5;
  int unaff_EBX;
  int *unaff_ESI;
  
  iVar1 = *unaff_ESI;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != unaff_ESI[6])))) {
    FUN_00a3fb10();
  }
  if (unaff_ESI[1] == unaff_ESI[7]) {
    *(undefined *)((int)unaff_ESI + 0x29) = 1;
  }
  else {
    iVar1 = unaff_ESI[0xe];
    if (*unaff_ESI != -4) {
      if (*unaff_ESI == 0) {
        FUN_00a3fb10();
      }
      iVar2 = *unaff_ESI;
      if (*(uint *)(iVar2 + 0x18) < 0x10) {
        iVar5 = iVar2 + 4;
      }
      else {
        iVar5 = *(int *)(iVar2 + 4);
      }
      if ((uint)(*(int *)(iVar2 + 0x14) + iVar5) <= (uint)unaff_ESI[1]) {
        FUN_00a3fb10();
      }
    }
    uVar4 = FUN_005e1420(*(undefined *)unaff_ESI[1],iVar1 + 8);
    if ((char)uVar4 == '\0') {
      return uVar4;
    }
  }
  cVar3 = FUN_005e9e50(unaff_ESI,unaff_EBX + 0x78);
  if (cVar3 == '\0') {
    cVar3 = FUN_005e9e50(unaff_ESI,unaff_EBX + 0xf8);
    if (cVar3 == '\0') {
      return 0;
    }
  }
  return 1;
}



void __thiscall FUN_005e9e50(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::stacked_xpression<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::alternate_matcher<struct_boost::xpressive::detail::alternates_list<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::alternate_end_matcher,struct_boost::xpressive::detail::no_next>...lass_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void FUN_005e9eb0(void)

{
  FUN_005e9ed0();
  return;
}



undefined4 __fastcall FUN_005e9ed0(undefined4 param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  undefined uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  char cVar7;
  int *in_EAX;
  
  puVar1 = (undefined4 *)(param_2[2] + *in_EAX * 0x24);
  uVar3 = *puVar1;
  uVar4 = puVar1[1];
  uVar5 = puVar1[2];
  uVar6 = puVar1[3];
  uVar2 = *(undefined *)(puVar1 + 4);
  *puVar1 = puVar1[6];
  puVar1[1] = puVar1[7];
  puVar1[2] = *param_2;
  puVar1[3] = param_2[1];
  *(undefined *)(puVar1 + 4) = 1;
  cVar7 = FUN_005e0cf0(param_1);
  if (cVar7 != '\0') {
    return 1;
  }
  *puVar1 = uVar3;
  puVar1[1] = uVar4;
  puVar1[3] = uVar6;
  puVar1[2] = uVar5;
  *(undefined *)(puVar1 + 4) = uVar2;
  return 0;
}



void FUN_005e9f70(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x24);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_00b85300(pvVar1,param_2);
  }
  local_4 = 0xffffffff;
  FUN_005e9ff0(unaff_EDI);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_005e9ff0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_005ea050(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005ea050(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_005ea0b0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_005ea0b0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0c520;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF3C48A30::W1641FB3A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_005ea129(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005ea150(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::WCADA5F45::vftable;
  if (0xf < (uint)param_1_00[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[3]);
  }
  param_1_00[8] = 0xf;
  param_1_00[7] = 0;
  *(undefined *)(param_1_00 + 3) = 0;
  *param_1_00 = W6A4CD2C5::W6C89CAE2::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_005ea1a0(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_005ea500(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005ea200(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  FUN_005da1a0(param_1);
  FUN_005ea610(uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005ea260(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_005ea720(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005ea2c0(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_005ea830(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005ea320(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_005ea940(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005ea380(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_005eaa50(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005ea3e0(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_005eab60(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005ea440(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_005eac70(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005ea4a0(undefined4 *param_1,undefined4 param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33d88;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffff0;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  FUN_005da1a0(param_1);
  FUN_005ead80(param_2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005ea500(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_005eae90();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005ea610(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  _Locimp *local_220;
  _Lockit local_21c [4];
  undefined local_218 [512];
  facet *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33c06;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_220;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdd8;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_220 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_21c,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_218,&local_220);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_005eb0a0();
  local_4 = 0xffffffff;
  if (local_18 != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_18);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005ea720(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_005eb260();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005ea830(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_005eb470();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005ea940(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_005eb680();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005eaa50(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_005eb870();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005eab60(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_005eba60();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005eac70(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_005ebc50();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005ead80(undefined4 param_1)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33bb6;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)&local_224;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_005ebe40(param_1,local_21c);
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005eae90(undefined4 param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_2f4 [108];
  undefined4 uStack_288;
  undefined4 **ppuStack_284;
  undefined auStack_268 [4];
  undefined4 *local_264;
  undefined local_25d;
  undefined4 local_25c;
  undefined4 local_258;
  undefined4 local_254;
  undefined4 local_250;
  undefined4 local_24c;
  undefined4 local_248;
  undefined4 local_244;
  undefined4 local_240;
  undefined4 local_23c;
  undefined4 local_238;
  undefined4 local_234;
  undefined4 local_230;
  undefined4 local_22c;
  undefined local_228;
  undefined *local_224;
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33b16;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_268;
  ExceptionList = &local_c;
  local_224 = auStack_2f4;
  local_25c = param_1;
  FUN_005da3d0(auStack_2f4);
  FUN_005da5d0();
  ppuStack_284 = (undefined4 **)0x5eaf0d;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_284 = (undefined4 **)0x5eaf2c;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_284 = (undefined4 **)0x5eaf72;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_284 = (undefined4 **)0x5eaf9a;
  FUN_005dde60();
  local_4 = 0;
  FUN_005ec7f0();
  local_23c = local_254;
  local_240 = local_258;
  local_230 = local_248;
  local_238 = local_250;
  local_234 = local_24c;
  local_22c = local_244;
  local_228 = local_25d;
  ppuStack_284 = (undefined4 **)0x5eaffc;
  FUN_005ed6a0();
  local_4._0_1_ = 1;
  uStack_288 = 0x5eb017;
  ppuStack_284 = &local_264;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_264 != (undefined4 *)0x0) {
    piVar4 = local_264 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_264 != (undefined4 *)0x0)) {
      ppuStack_284 = (undefined4 **)0x5eb05c;
      (**(code **)*local_264)();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005eb0a0(int *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_2c8 [108];
  undefined4 uStack_25c;
  undefined4 **ppuStack_258;
  undefined auStack_23c [4];
  undefined4 *local_238;
  undefined local_231;
  undefined *local_230;
  int local_224;
  int local_220;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33b66;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_23c;
  ExceptionList = &local_c;
  local_230 = auStack_2c8;
  FUN_005da3d0(auStack_2c8);
  FUN_005da5d0();
  ppuStack_258 = (undefined4 **)0x5eb10f;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_258 = (undefined4 **)0x5eb12e;
    FUN_005dde60();
  }
  iVar1 = *param_1;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_258 = (undefined4 **)0x5eb174;
      (**(code **)*puVar2)();
    }
  }
  local_224 = *param_1;
  local_220 = param_1[1];
  if (local_220 != 0) {
    LOCK();
    *(int *)(local_220 + 4) = *(int *)(local_220 + 4) + 1;
    UNLOCK();
  }
  ppuStack_258 = (undefined4 **)0x5eb19c;
  FUN_005dde60();
  ppuStack_258 = (undefined4 **)&local_231;
  local_4 = 0;
  uStack_25c = 0x5eb1b8;
  FUN_005ec0b0();
  FUN_005ed6f0();
  local_4._0_1_ = 1;
  uStack_25c = 0x5eb1db;
  ppuStack_258 = &local_238;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_238 != (undefined4 *)0x0) {
    piVar4 = local_238 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_238 != (undefined4 *)0x0)) {
      ppuStack_258 = (undefined4 **)0x5eb21f;
      (**(code **)*local_238)();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005eb260(undefined4 param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_2f4 [108];
  undefined4 uStack_288;
  undefined4 **ppuStack_284;
  undefined auStack_268 [4];
  undefined4 *local_264;
  undefined local_25d;
  undefined4 local_25c;
  undefined4 local_258;
  undefined4 local_254;
  undefined4 local_250;
  undefined4 local_24c;
  undefined4 local_248;
  undefined4 local_244;
  undefined4 local_240;
  undefined4 local_23c;
  undefined4 local_238;
  undefined4 local_234;
  undefined4 local_230;
  undefined4 local_22c;
  undefined local_228;
  undefined *local_224;
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33b16;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_268;
  ExceptionList = &local_c;
  local_224 = auStack_2f4;
  local_25c = param_1;
  FUN_005da3d0(auStack_2f4);
  FUN_005da5d0();
  ppuStack_284 = (undefined4 **)0x5eb2dd;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_284 = (undefined4 **)0x5eb2fc;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_284 = (undefined4 **)0x5eb342;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_284 = (undefined4 **)0x5eb36a;
  FUN_005dde60();
  local_4 = 0;
  FUN_005ec850();
  local_23c = local_254;
  local_240 = local_258;
  local_230 = local_248;
  local_238 = local_250;
  local_234 = local_24c;
  local_22c = local_244;
  local_228 = local_25d;
  ppuStack_284 = (undefined4 **)0x5eb3cc;
  FUN_005ed6a0();
  local_4._0_1_ = 1;
  uStack_288 = 0x5eb3e7;
  ppuStack_284 = &local_264;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_264 != (undefined4 *)0x0) {
    piVar4 = local_264 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_264 != (undefined4 *)0x0)) {
      ppuStack_284 = (undefined4 **)0x5eb42c;
      (**(code **)*local_264)();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005eb470(undefined4 param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_2f4 [108];
  undefined4 uStack_288;
  undefined4 **ppuStack_284;
  undefined auStack_268 [4];
  undefined4 *local_264;
  undefined local_25d;
  undefined4 local_25c;
  undefined4 local_258;
  undefined4 local_254;
  undefined4 local_250;
  undefined4 local_24c;
  undefined4 local_248;
  undefined4 local_244;
  undefined4 local_240;
  undefined4 local_23c;
  undefined4 local_238;
  undefined4 local_234;
  undefined4 local_230;
  undefined4 local_22c;
  undefined local_228;
  undefined *local_224;
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33b16;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_268;
  ExceptionList = &local_c;
  local_224 = auStack_2f4;
  local_25c = param_1;
  FUN_005da3d0(auStack_2f4);
  FUN_005da5d0();
  ppuStack_284 = (undefined4 **)0x5eb4ed;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_284 = (undefined4 **)0x5eb50c;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_284 = (undefined4 **)0x5eb552;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_284 = (undefined4 **)0x5eb57a;
  FUN_005dde60();
  local_4 = 0;
  FUN_005ec8b0();
  local_23c = local_254;
  local_240 = local_258;
  local_230 = local_248;
  local_238 = local_250;
  local_234 = local_24c;
  local_22c = local_244;
  local_228 = local_25d;
  ppuStack_284 = (undefined4 **)0x5eb5dc;
  FUN_005ed6a0();
  local_4._0_1_ = 1;
  uStack_288 = 0x5eb5f7;
  ppuStack_284 = &local_264;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_264 != (undefined4 *)0x0) {
    piVar4 = local_264 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_264 != (undefined4 *)0x0)) {
      ppuStack_284 = (undefined4 **)0x5eb63c;
      (**(code **)*local_264)();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005eb680(undefined4 *param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_3ec [104];
  undefined4 uStack_384;
  undefined *puStack_380;
  undefined4 **ppuStack_37c;
  undefined auStack_360 [4];
  undefined4 *local_35c [2];
  undefined *local_354;
  undefined local_350 [304];
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33ad1;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_360;
  ExceptionList = &local_c;
  local_354 = auStack_3ec;
  local_35c[0] = param_1;
  FUN_005da3d0(auStack_3ec);
  FUN_005da5d0();
  ppuStack_37c = (undefined4 **)0x5eb6f6;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_37c = (undefined4 **)0x5eb715;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_37c = (undefined4 **)0x5eb757;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_37c = (undefined4 **)0x5eb788;
  FUN_005dde60();
  local_4 = 0;
  ppuStack_37c = (undefined4 **)local_35c[0];
  puStack_380 = local_350;
  uStack_384 = 0x5eb7ac;
  FUN_005ec110();
  local_4._0_1_ = 1;
  ppuStack_37c = (undefined4 **)0x5eb7be;
  FUN_005ed740();
  local_4._0_1_ = 3;
  ppuStack_37c = (undefined4 **)0x5eb7d3;
  FUN_005ec040();
  puStack_380 = (undefined *)0x5eb7e6;
  ppuStack_37c = local_35c;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_35c[0] != (undefined4 *)0x0) {
    piVar4 = local_35c[0] + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_35c[0] != (undefined4 *)0x0)) {
      ppuStack_37c = (undefined4 **)0x5eb828;
      (**(code **)*local_35c[0])();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005eb870(undefined4 *param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_3dc [104];
  undefined4 uStack_374;
  undefined *puStack_370;
  undefined4 **ppuStack_36c;
  undefined4 *local_350 [2];
  undefined *local_348;
  undefined local_344 [292];
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33a73;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_350;
  ExceptionList = &local_c;
  local_348 = auStack_3dc;
  local_350[0] = param_1;
  FUN_005da3d0(auStack_3dc);
  FUN_005da5d0();
  ppuStack_36c = (undefined4 **)0x5eb8e6;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_36c = (undefined4 **)0x5eb905;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_36c = (undefined4 **)0x5eb947;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_36c = (undefined4 **)0x5eb978;
  FUN_005dde60();
  local_4 = 0;
  ppuStack_36c = (undefined4 **)local_350[0];
  puStack_370 = local_344;
  uStack_374 = 0x5eb99c;
  FUN_005ec1d0();
  local_4._0_1_ = 1;
  ppuStack_36c = (undefined4 **)0x5eb9ae;
  FUN_005ed7c0();
  local_4._0_1_ = 3;
  ppuStack_36c = (undefined4 **)0x5eb9c3;
  FUN_005ec040();
  puStack_370 = (undefined *)0x5eb9d6;
  ppuStack_36c = local_350;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_350[0] != (undefined4 *)0x0) {
    piVar4 = local_350[0] + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_350[0] != (undefined4 *)0x0)) {
      ppuStack_36c = (undefined4 **)0x5eba18;
      (**(code **)*local_350[0])();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005eba60(undefined4 *param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_3e4 [108];
  undefined4 uStack_378;
  undefined4 **ppuStack_374;
  undefined auStack_358 [4];
  undefined4 *local_354 [2];
  undefined *local_34c;
  undefined local_348 [296];
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3a281;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_358;
  ExceptionList = &local_c;
  local_34c = auStack_3e4;
  local_354[0] = param_1;
  FUN_005da3d0(auStack_3e4);
  FUN_005da5d0();
  ppuStack_374 = (undefined4 **)0x5ebad6;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_374 = (undefined4 **)0x5ebaf5;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_374 = (undefined4 **)0x5ebb37;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_374 = (undefined4 **)0x5ebb68;
  FUN_005dde60();
  ppuStack_374 = (undefined4 **)local_348;
  local_4 = 0;
  uStack_378 = 0x5ebb8b;
  FUN_005ec290();
  local_4._0_1_ = 1;
  ppuStack_374 = (undefined4 **)0x5ebb9d;
  FUN_005ed840();
  local_4._0_1_ = 3;
  ppuStack_374 = (undefined4 **)0x5ebbb2;
  FUN_005ec040();
  uStack_378 = 0x5ebbc5;
  ppuStack_374 = local_354;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_354[0] != (undefined4 *)0x0) {
    piVar4 = local_354[0] + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_354[0] != (undefined4 *)0x0)) {
      ppuStack_374 = (undefined4 **)0x5ebc07;
      (**(code **)*local_354[0])();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005ebc50(undefined4 param_1,int *param_2)

{
  undefined4 *puVar1;
  int *piVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined auStack_304 [108];
  undefined4 uStack_298;
  undefined4 **ppuStack_294;
  undefined auStack_278 [4];
  undefined4 *local_274;
  undefined local_26d;
  undefined4 local_26c;
  undefined *local_268;
  undefined4 local_264 [8];
  undefined local_244;
  undefined4 local_240 [8];
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c33a16;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_278;
  ExceptionList = &local_c;
  local_268 = auStack_304;
  local_26c = param_1;
  FUN_005da3d0(auStack_304);
  FUN_005da5d0();
  ppuStack_294 = (undefined4 **)0x5ebccd;
  puVar1 = (undefined4 *)operator_new(0x210);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    *puVar1 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_294 = (undefined4 **)0x5ebcec;
    FUN_005dde60();
  }
  iVar3 = *param_2;
  if (puVar1 != (undefined4 *)0x0) {
    LOCK();
    puVar1[1] = puVar1[1] + 1;
    UNLOCK();
  }
  puVar4 = *(undefined4 **)(iVar3 + 0x50);
  *(undefined4 **)(iVar3 + 0x50) = puVar1;
  if (puVar4 != (undefined4 *)0x0) {
    piVar2 = puVar4 + 1;
    LOCK();
    iVar3 = *piVar2;
    *piVar2 = iVar3 + -1;
    UNLOCK();
    if (((iVar3 + -1 == 0) && (piVar2 != (int *)0x0)) && (puVar4 != (undefined4 *)0x0)) {
      ppuStack_294 = (undefined4 **)0x5ebd32;
      (**(code **)*puVar4)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_294 = (undefined4 **)0x5ebd5a;
  FUN_005dde60();
  local_4 = 0;
  FUN_005ecaf0();
  puVar1 = local_240;
  puVar4 = local_264;
  for (iVar3 = 8; iVar3 != 0; iVar3 = iVar3 + -1) {
    *puVar4 = *puVar1;
    puVar1 = puVar1 + 1;
    puVar4 = puVar4 + 1;
  }
  local_244 = local_26d;
  ppuStack_294 = (undefined4 **)0x5ebd95;
  FUN_005ed8c0();
  local_4._0_1_ = 1;
  uStack_298 = 0x5ebdb0;
  ppuStack_294 = &local_274;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_274 != (undefined4 *)0x0) {
    piVar2 = local_274 + 1;
    LOCK();
    iVar3 = *piVar2;
    *piVar2 = iVar3 + -1;
    UNLOCK();
    if (((iVar3 + -1 == 0) && (piVar2 != (int *)0x0)) && (local_274 != (undefined4 *)0x0)) {
      ppuStack_294 = (undefined4 **)0x5ebdf5;
      (**(code **)*local_274)();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005ebe40(undefined4 *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  int *unaff_ESI;
  undefined4 auStack_314 [27];
  undefined4 uStack_2a8;
  undefined4 **ppuStack_2a4;
  undefined auStack_28c [8];
  undefined4 *local_284;
  int local_280;
  int local_27c;
  undefined4 local_278;
  int local_274;
  int local_270;
  undefined4 local_26c;
  undefined4 local_268;
  undefined4 local_264;
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c339c6;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_28c;
  ExceptionList = &local_c;
  local_284 = auStack_314;
  FUN_005da3d0(auStack_314);
  FUN_005da5d0();
  ppuStack_2a4 = (undefined4 **)0x5ebea4;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_2a4 = (undefined4 **)0x5ebec3;
    FUN_005dde60();
  }
  iVar1 = *unaff_ESI;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_2a4 = (undefined4 **)0x5ebf04;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *unaff_ESI;
  local_21c = unaff_ESI[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_2a4 = (undefined4 **)0x5ebf31;
  FUN_005dde60();
  local_4 = 0;
  local_278 = *param_1;
  *(int *)(local_220 + 0x74) = *(int *)(local_220 + 0x74) + 1;
  local_280 = -*(int *)(local_220 + 0x74);
  local_264 = 0;
  local_26c = 1;
  local_268 = 0xfffffffe;
  ppuStack_2a4 = (undefined4 **)0x5ebf8f;
  local_27c = local_280;
  local_274 = local_280;
  local_270 = local_280;
  FUN_005ec790();
  ppuStack_2a4 = (undefined4 **)0x5ebf9b;
  FUN_005ed910();
  local_4._0_1_ = 1;
  uStack_2a8 = 0x5ebfb8;
  ppuStack_2a4 = &local_284;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  puVar3 = local_284;
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_284 != (undefined4 *)0x0) {
    piVar4 = local_284 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar3 != (undefined4 *)0x0)) {
      ppuStack_2a4 = (undefined4 **)0x5ebffa;
      (**(code **)*puVar3)();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_005ec040(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c27028;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005da4f0(param_1 + 0xa8);
  local_4 = 0xffffffff;
  FUN_005da4f0(param_1 + 8);
  ExceptionList = local_c;
  return;
}



void FUN_005ec0a0(void)

{
  int in_EAX;
  
  FUN_005ec040(in_EAX + 4);
  return;
}



void FUN_005ec0b0(undefined *param_1,int param_2)

{
  char cVar1;
  undefined2 uVar2;
  char *pcVar3;
  undefined4 *unaff_ESI;
  undefined4 local_4;
  
  pcVar3 = PTR_DAT_03247d40;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  local_4 = CONCAT31(local_4._1_3_,DAT_03247d44);
  uVar2 = FUN_005ede50(param_2 + 8);
  local_4 = CONCAT22(uVar2,(undefined2)local_4);
  *(undefined *)(unaff_ESI + 1) = *param_1;
  *unaff_ESI = local_4;
  return;
}



undefined4 FUN_005ec110(undefined4 param_1,undefined4 *param_2,undefined *param_3)

{
  undefined4 unaff_EDI;
  undefined local_9d;
  undefined4 local_9c;
  undefined local_98 [140];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c3398a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_9c = 0;
  local_9d = *param_3;
  FUN_005ec4b0(&local_9d);
  local_4 = 1;
  FUN_005ec4e0(param_1,*param_2,unaff_EDI);
  local_9c = 1;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_98);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_005ec1d0(undefined4 param_1,int param_2,undefined *param_3)

{
  undefined local_95;
  undefined4 local_94;
  undefined local_90 [132];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c3393b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_94 = 0;
  local_95 = *param_3;
  FUN_005ec5e0(local_90,*(undefined4 *)(param_2 + 4),&local_95);
  local_4 = 1;
  FUN_005ec680(local_90);
  local_94 = 1;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_90);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_005ec290(undefined4 *param_1_00,undefined4 param_1,undefined *param_2)

{
  undefined4 unaff_ESI;
  undefined local_95;
  undefined4 local_94;
  undefined local_90 [132];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c3a23a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_94 = 0;
  local_95 = *param_2;
  FUN_005ec5e0(local_90,param_1_00[1],&local_95);
  local_4 = 1;
  FUN_005ec6b0(param_1,*param_1_00,unaff_ESI);
  local_94 = 1;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_90);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_005ec350(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2f1f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005ec460(param_1);
  *(undefined4 *)(param_1 + 0xa4) = *(undefined4 *)(param_1_00 + 0xa4);
  local_4 = 0;
  FUN_005da440(param_1 + 0xa8);
  *(undefined *)(param_1 + 0x120) = *(undefined *)(param_1_00 + 0x120);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_005ec3d0(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2f1f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005ec460(param_1);
  *(undefined4 *)(param_1 + 0xa4) = *(undefined4 *)(param_1_00 + 0xa4);
  local_4 = 0;
  FUN_005da440(param_1 + 0xa8);
  *(undefined4 *)(param_1 + 0x120) = *(undefined4 *)(param_1_00 + 0x120);
  *(undefined4 *)(param_1 + 0x124) = *(undefined4 *)(param_1_00 + 0x124);
  *(undefined *)(param_1 + 0x128) = *(undefined *)(param_1_00 + 0x128);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_005ec460(undefined4 *param_1)

{
  undefined4 *in_EAX;
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  *param_1 = *in_EAX;
  param_1[1] = in_EAX[1];
  FUN_005da440(param_1 + 2);
  *(undefined2 *)(param_1 + 0x20) = *(undefined2 *)(in_EAX + 0x20);
  *(undefined *)(param_1 + 0x21) = *(undefined *)(in_EAX + 0x21);
  puVar2 = in_EAX + 0x22;
  puVar3 = param_1 + 0x22;
  for (iVar1 = 7; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar3 = *puVar2;
    puVar2 = puVar2 + 1;
    puVar3 = puVar3 + 1;
  }
  return param_1;
}



void __fastcall FUN_005ec4b0(undefined4 param_1_00,undefined4 param_2,undefined4 param_1)

{
  undefined4 unaff_ESI;
  
  FUN_005ec910(unaff_ESI,param_1,param_2);
  return;
}



undefined4 __thiscall FUN_005ec4e0(int param_1_00,undefined4 param_1)

{
  undefined local_1c8 [120];
  undefined4 local_150;
  undefined4 local_14c;
  undefined local_148;
  undefined local_140 [308];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c338e7;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005da440(local_1c8);
  local_150 = *(undefined4 *)(param_1_00 + 0x78);
  local_14c = *(undefined4 *)(param_1_00 + 0x7c);
  local_148 = *(undefined *)(param_1_00 + 0x80);
  local_4 = 1;
  FUN_005ec9c0(local_1c8);
  local_4._0_1_ = 2;
  FUN_005ec9f0(local_140);
  local_4._0_1_ = 1;
  FUN_005ec040(local_140);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005da4f0(local_1c8);
  ExceptionList = local_c;
  return param_1;
}



int FUN_005ec5e0(int param_1,undefined4 param_2,undefined *param_3)

{
  undefined local_88 [124];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3388a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff64);
  local_4 = 1;
  FUN_005da440(param_1);
  *(undefined *)(param_1 + 0x78) = *param_3;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_88);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005ec680(undefined4 param_1)

{
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  
  FUN_005ecc30(unaff_ESI);
  FUN_005eca20(unaff_EDI,param_1,unaff_ESI);
  return;
}



undefined4 __thiscall FUN_005ec6b0(int param_1_00,undefined4 param_1)

{
  undefined local_1b8 [120];
  undefined local_140;
  undefined local_138 [300];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3a1e7;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005da440(local_1b8);
  local_140 = *(undefined *)(param_1_00 + 0x78);
  local_4 = 1;
  FUN_005ec680(local_1b8);
  local_4._0_1_ = 2;
  FUN_005ecac0(local_138);
  local_4._0_1_ = 1;
  FUN_005ec040(local_138);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005da4f0(local_1b8);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005ec790(undefined4 *param_1)

{
  int iVar1;
  undefined4 *unaff_EBX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 local_3c [15];
  
  FUN_005ecd80(local_3c);
  *unaff_EBX = *param_1;
  puVar2 = local_3c;
  puVar3 = unaff_EBX + 1;
  for (iVar1 = 0xf; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar3 = *puVar2;
    puVar2 = puVar2 + 1;
    puVar3 = puVar3 + 1;
  }
  return;
}



void FUN_005ec7f0(void)

{
  undefined4 in_EAX;
  undefined4 *unaff_EBX;
  undefined local_21;
  undefined4 local_20;
  undefined2 local_1c;
  undefined4 local_14;
  uint local_4;
  
  FUN_005ed570(&local_21,in_EAX);
  *unaff_EBX = local_20;
  local_14 = CONCAT22(local_14._2_2_,local_1c);
  unaff_EBX[1] = local_14;
  unaff_EBX[2] = 0;
  local_4 = local_4 & 0xffffff00;
  unaff_EBX[3] = 0xfffffffe;
  unaff_EBX[4] = 1;
  unaff_EBX[5] = local_4;
  return;
}



void FUN_005ec850(void)

{
  undefined4 in_EAX;
  undefined4 *unaff_EBX;
  undefined local_21;
  undefined4 local_20;
  undefined2 local_1c;
  undefined4 local_14;
  uint local_4;
  
  FUN_005ed570(&local_21,in_EAX);
  *unaff_EBX = local_20;
  local_14 = CONCAT22(local_14._2_2_,local_1c);
  unaff_EBX[1] = local_14;
  unaff_EBX[2] = 2;
  local_4 = local_4 & 0xffffff00;
  unaff_EBX[3] = 2;
  unaff_EBX[4] = 1;
  unaff_EBX[5] = local_4;
  return;
}



void FUN_005ec8b0(void)

{
  undefined4 in_EAX;
  undefined4 *unaff_EBX;
  undefined local_21;
  undefined4 local_20;
  undefined2 local_1c;
  undefined4 local_14;
  uint local_4;
  
  FUN_005ed570(&local_21,in_EAX);
  *unaff_EBX = local_20;
  local_14 = CONCAT22(local_14._2_2_,local_1c);
  unaff_EBX[1] = local_14;
  unaff_EBX[2] = 4;
  local_4 = local_4 & 0xffffff00;
  unaff_EBX[3] = 4;
  unaff_EBX[4] = 1;
  unaff_EBX[5] = local_4;
  return;
}



int FUN_005ec910(int param_1,undefined *param_2)

{
  int iVar1;
  undefined local_90 [132];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3383a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = FUN_005ecb70(DAT_0323f878 ^ (uint)&stack0xffffff5c);
  local_4 = 1;
  FUN_005da440(param_1);
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(iVar1 + 0x78);
  *(undefined4 *)(param_1 + 0x7c) = *(undefined4 *)(iVar1 + 0x7c);
  *(undefined *)(param_1 + 0x80) = *param_2;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_90);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005ec9c0(undefined4 param_1)

{
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  
  FUN_005ecc30(unaff_ESI);
  FUN_005ecb90(unaff_EDI,param_1,unaff_ESI);
  return;
}



void FUN_005ec9f0(void)

{
  undefined4 *in_EAX;
  undefined *unaff_ESI;
  
  *unaff_ESI = *(undefined *)*in_EAX;
  FUN_005ec3d0(unaff_ESI + 4);
  return;
}



undefined4 FUN_005eca20(undefined4 param_1)

{
  undefined local_b0 [164];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c337eb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005ecec0(DAT_0323f878 ^ (uint)&stack0xffffff3c);
  local_4 = 1;
  FUN_005ecc90(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_b0);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005ecac0(void)

{
  undefined4 *in_EAX;
  undefined *unaff_ESI;
  
  *unaff_ESI = *(undefined *)*in_EAX;
  FUN_005ec350(unaff_ESI + 4);
  return;
}



void FUN_005ecaf0(void)

{
  int iVar1;
  undefined4 *unaff_EBX;
  undefined4 *puVar2;
  undefined auStack_3c [3];
  undefined local_39;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined local_2c;
  undefined4 local_28 [3];
  undefined local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)auStack_3c;
  FUN_005ecd10(&local_39);
  local_28[1] = local_34;
  local_28[2] = local_30;
  local_28[0] = local_38;
  local_18 = 1;
  local_10 = 1;
  local_1c = local_2c;
  local_14 = 0xfffffffe;
  local_c = 0;
  puVar2 = local_28;
  for (iVar1 = 8; iVar1 != 0; iVar1 = iVar1 + -1) {
    *unaff_EBX = *puVar2;
    puVar2 = puVar2 + 1;
    unaff_EBX = unaff_EBX + 1;
  }
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_005ecb70(undefined4 *param_1)

{
  undefined4 in_EAX;
  undefined4 unaff_ESI;
  
  FUN_005ece10(unaff_ESI,*param_1,in_EAX);
  return;
}



undefined4 FUN_005ecb90(undefined4 param_1)

{
  undefined local_b0 [164];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c337eb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005ecec0(DAT_0323f878 ^ (uint)&stack0xffffff3c);
  local_4 = 1;
  FUN_005ecee0(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_b0);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005ecc30(undefined4 *param_1_00,int *param_1)

{
  int *in_EAX;
  int iVar1;
  int *piVar2;
  int local_20 [4];
  int local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_20[2] = *param_1_00;
  iVar1 = *param_1;
  piVar2 = (int *)(iVar1 + 0x74);
  *piVar2 = *piVar2 + 1;
  local_20[0] = -*(int *)(iVar1 + 0x74);
  local_c = 0;
  local_8 = 0xfffffffe;
  local_20[1] = local_20[0];
  local_20[3] = local_20[0];
  local_10 = local_20[0];
  local_4 = 0;
  piVar2 = local_20;
  for (iVar1 = 8; iVar1 != 0; iVar1 = iVar1 + -1) {
    *in_EAX = *piVar2;
    piVar2 = piVar2 + 1;
    in_EAX = in_EAX + 1;
  }
  return;
}



int __fastcall FUN_005ecc90(int param_1_00,int param_2,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2f1f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005ec460(param_1);
  *(undefined4 *)(param_1 + 0xa4) = *(undefined4 *)(param_2 + 0xa4);
  local_4 = 0;
  FUN_005da440(param_1 + 0xa8);
  *(undefined *)(param_1 + 0x120) = *(undefined *)(param_1_00 + 0x78);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005ecd10(undefined4 *param_1_00,undefined *param_1)

{
  uint uVar1;
  undefined4 *unaff_EDI;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 *local_4;
  
  local_4 = &local_10;
  local_10 = 0;
  local_c = 0;
  local_8 = 0;
  FUN_005ed960(*param_1_00);
  uVar1 = (uint)local_8 >> 0x10;
  *unaff_EDI = local_10;
  unaff_EDI[1] = local_c;
  unaff_EDI[2] = local_8;
  *(undefined *)(unaff_EDI + 3) = *param_1;
  return;
}



uint * __fastcall FUN_005ecd80(int *param_1_00,uint *param_2,uint *param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  uint *puVar3;
  undefined4 *in_EAX;
  undefined4 *puVar4;
  int iVar5;
  uint *puVar6;
  uint *puVar7;
  uint local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  uint local_38 [14];
  
  puVar3 = param_1;
  local_4c = *in_EAX;
  local_50 = param_2[2];
  local_48 = in_EAX[1];
  local_44 = in_EAX[2];
  local_40 = in_EAX[3];
  local_3c = in_EAX[4];
  FUN_005ed0e0(&local_50,param_1_00);
  param_1 = (uint *)*param_2;
  if (0 < (int)param_1) {
    puVar1 = (undefined4 *)(*param_1_00 + 0x70);
    puVar4 = &param_1;
    if (param_1 <= *(uint *)(*param_1_00 + 0x70)) {
      puVar4 = puVar1;
    }
    *puVar1 = *puVar4;
  }
  uVar2 = *param_2;
  puVar6 = local_38;
  puVar7 = puVar3;
  for (iVar5 = 0xe; puVar7 = puVar7 + 1, iVar5 != 0; iVar5 = iVar5 + -1) {
    *puVar7 = *puVar6;
    puVar6 = puVar6 + 1;
  }
  *puVar3 = uVar2;
  return puVar3;
}



int FUN_005ece10(int param_1,undefined4 param_2)

{
  int iVar1;
  undefined local_90 [132];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3379a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = FUN_005de980(local_90,param_2);
  local_4 = 1;
  FUN_005da440(param_1);
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(iVar1 + 0x78);
  *(undefined4 *)(param_1 + 0x7c) = *(undefined4 *)(iVar1 + 0x7c);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_90);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005ecec0(undefined4 param_1)

{
  undefined4 in_EAX;
  undefined4 unaff_ESI;
  
  FUN_005ecf70(unaff_ESI,param_1,in_EAX);
  return;
}



int __fastcall FUN_005ecee0(int param_1_00,int param_2,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2f1f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005ec460(param_1);
  *(undefined4 *)(param_1 + 0xa4) = *(undefined4 *)(param_2 + 0xa4);
  local_4 = 0;
  FUN_005da440(param_1 + 0xa8);
  *(undefined4 *)(param_1 + 0x120) = *(undefined4 *)(param_1_00 + 0x78);
  *(undefined4 *)(param_1 + 0x124) = *(undefined4 *)(param_1_00 + 0x7c);
  *(undefined *)(param_1 + 0x128) = *(undefined *)(param_1_00 + 0x80);
  ExceptionList = local_c;
  return param_1;
}



int FUN_005ecf70(int param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 local_bc [2];
  undefined local_b4 [8];
  undefined local_ac [160];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3374a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = *param_2;
  local_bc[0] = 0;
  FUN_005ed020(local_b4,param_2,local_bc);
  local_4 = 1;
  FUN_005ec460(param_1);
  *(undefined4 *)(param_1 + 0xa4) = uVar1;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_ac);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_005ed020(undefined4 param_1)

{
  undefined local_b0 [164];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c336fa;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005ed140(DAT_0323f878 ^ (uint)&stack0xffffff34);
  local_4 = 1;
  FUN_005ed190(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_b0);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005ed0e0(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int iVar5;
  undefined4 *unaff_EBX;
  undefined4 *puVar6;
  undefined local_24 [36];
  
  puVar4 = (undefined4 *)FUN_005ed1e0(local_24);
  uVar1 = param_1[1];
  uVar2 = param_1[2];
  puVar6 = unaff_EBX;
  for (iVar5 = 8; iVar5 != 0; iVar5 = iVar5 + -1) {
    *puVar6 = *puVar4;
    puVar4 = puVar4 + 1;
    puVar6 = puVar6 + 1;
  }
  unaff_EBX[8] = *param_1;
  uVar3 = param_1[3];
  unaff_EBX[9] = uVar1;
  uVar1 = param_1[4];
  unaff_EBX[10] = uVar2;
  uVar2 = param_1[5];
  unaff_EBX[0xb] = uVar3;
  unaff_EBX[0xc] = uVar1;
  unaff_EBX[0xd] = uVar2;
  return;
}



void __fastcall FUN_005ed140(undefined4 *param_1)

{
  int in_EAX;
  undefined4 unaff_ESI;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_1c = *(undefined4 *)(in_EAX + 0xc);
  local_18 = *(undefined4 *)(in_EAX + 0x10);
  local_14 = *(undefined4 *)(in_EAX + 0x14);
  local_10 = *(undefined4 *)(in_EAX + 0x18);
  local_c = *param_1;
  local_8 = param_1[1];
  FUN_005ed250(unaff_ESI,in_EAX,&local_1c);
  return;
}



undefined4 * __thiscall FUN_005ed190(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *in_EAX;
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  *param_1 = *param_1_00;
  param_1[1] = *in_EAX;
  FUN_005da440(param_1 + 2);
  *(undefined2 *)(param_1 + 0x20) = *(undefined2 *)(in_EAX + 0x1f);
  *(undefined *)(param_1 + 0x21) = *(undefined *)(in_EAX + 0x20);
  puVar2 = in_EAX + 0x21;
  puVar3 = param_1 + 0x22;
  for (iVar1 = 7; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar3 = *puVar2;
    puVar2 = puVar2 + 1;
    puVar3 = puVar3 + 1;
  }
  return param_1;
}



undefined4 * FUN_005ed1e0(undefined4 *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 local_1c [6];
  undefined local_4;
  
  FUN_005ec850();
  local_4 = param_1._0_1_;
  puVar2 = local_1c;
  puVar3 = param_1;
  for (iVar1 = 7; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar3 = *puVar2;
    puVar2 = puVar2 + 1;
    puVar3 = puVar3 + 1;
  }
  *(undefined *)(param_1 + 7) = 1;
  return param_1;
}



undefined4 FUN_005ed250(undefined4 param_1)

{
  undefined4 unaff_EDI;
  undefined local_b4 [168];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c336aa;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005ed330(unaff_EDI);
  local_4 = 1;
  FUN_005ed390(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_b4);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_005ed330(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *in_EAX;
  undefined4 unaff_ESI;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_1c = param_1_00[1];
  local_18 = *in_EAX;
  local_14 = in_EAX[1];
  local_10 = in_EAX[2];
  local_c = in_EAX[3];
  local_8 = in_EAX[4];
  local_4 = in_EAX[5];
  FUN_005ed400(unaff_ESI,*param_1_00,&local_1c,param_1);
  return;
}



uint * __fastcall FUN_005ed390(int *param_1_00,uint *param_2,uint *param_1)

{
  uint uVar1;
  uint *puVar2;
  int in_EAX;
  uint *puVar3;
  uint *puVar4;
  int iVar5;
  
  puVar2 = param_1;
  param_1 = (uint *)0x0;
  uVar1 = *param_2;
  if (0 < (int)uVar1) {
    puVar4 = (uint *)(*param_1_00 + 0x70);
    param_1 = (uint *)uVar1;
    puVar3 = (uint *)&param_1;
    if (uVar1 <= *puVar4) {
      puVar3 = puVar4;
    }
    *puVar4 = *puVar3;
  }
  *puVar2 = *param_2;
  FUN_005da440(puVar2 + 1);
  *(undefined2 *)(puVar2 + 0x1f) = *(undefined2 *)(in_EAX + 0x78);
  *(undefined *)(puVar2 + 0x20) = *(undefined *)(in_EAX + 0x7c);
  puVar3 = (uint *)(in_EAX + 0x80);
  puVar4 = puVar2 + 0x21;
  for (iVar5 = 7; iVar5 != 0; iVar5 = iVar5 + -1) {
    *puVar4 = *puVar3;
    puVar3 = puVar3 + 1;
    puVar4 = puVar4 + 1;
  }
  return puVar2;
}



int FUN_005ed400(int param_1,undefined4 param_2,undefined4 *param_3)

{
  int iVar1;
  undefined4 *puVar2;
  undefined local_8c [128];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3365a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = FUN_005ed4c0(local_8c,param_2);
  local_4 = 1;
  FUN_005da440(param_1);
  *(undefined2 *)(param_1 + 0x78) = *(undefined2 *)(iVar1 + 0x78);
  *(undefined *)(param_1 + 0x7c) = *(undefined *)(iVar1 + 0x7c);
  puVar2 = (undefined4 *)(param_1 + 0x80);
  for (iVar1 = 7; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar2 = *param_3;
    param_3 = param_3 + 1;
    puVar2 = puVar2 + 1;
  }
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_8c);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_005ed4c0(undefined4 param_1_00,int param_1)

{
  int iVar1;
  undefined local_88 [124];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3360a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = FUN_005ed5c0(param_1_00);
  local_4 = 1;
  FUN_005da440(param_1);
  *(undefined2 *)(param_1 + 0x78) = *(undefined2 *)(iVar1 + 0x78);
  *(undefined *)(param_1 + 0x7c) = 0;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_88);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005ed570(undefined *param_1,int param_2)

{
  char cVar1;
  undefined2 uVar2;
  char *pcVar3;
  undefined4 *unaff_ESI;
  char **unaff_EDI;
  undefined4 local_4;
  
  pcVar3 = *unaff_EDI;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  local_4 = CONCAT31(local_4._1_3_,*(undefined *)(unaff_EDI + 1));
  uVar2 = FUN_005ede50(param_2 + 8);
  local_4 = CONCAT22(uVar2,(undefined2)local_4);
  *(undefined *)(unaff_ESI + 1) = *param_1;
  *unaff_ESI = local_4;
  return;
}



void __fastcall FUN_005ed5c0(undefined *param_1)

{
  undefined4 *in_EAX;
  undefined4 unaff_ESI;
  uint local_4;
  
  local_4 = (uint)CONCAT11(*param_1,*(undefined *)in_EAX[1]);
  FUN_005ed600(unaff_ESI,*in_EAX,&local_4);
  return;
}



int FUN_005ed600(int param_1,undefined4 param_2,undefined2 *param_3)

{
  undefined local_88 [124];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3388a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff64);
  local_4 = 1;
  FUN_005da440(param_1);
  *(undefined2 *)(param_1 + 0x78) = *param_3;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_88);
  ExceptionList = local_c;
  return param_1;
}



void FUN_005ed6a0(undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  
  puVar1 = (undefined4 *)operator_new(0x24);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    *puVar1 = boost::xpressive::detail::
              xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::simple_repeat_matcher<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::posix_charset_matcher<struct_boost::xpressive::cpp_regex_traits<char>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::true_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::mpl::bool_<1>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::xpressive::detail::matchable_ex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
              ::vftable;
    puVar3 = puVar1 + 2;
    for (iVar2 = 7; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar3 = *param_1;
      param_1 = param_1 + 1;
      puVar3 = puVar3 + 1;
    }
  }
  *unaff_EBX = puVar1;
  if (puVar1 != (undefined4 *)0x0) {
    LOCK();
    puVar1[1] = puVar1[1] + 1;
    UNLOCK();
  }
  return;
}



void FUN_005ed6f0(void)

{
  undefined4 *puVar1;
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    *puVar1 = boost::xpressive::detail::
              xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::posix_charset_matcher<struct_boost::xpressive::cpp_regex_traits<char>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::xpressive::detail::matchable_ex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
              ::vftable;
    puVar1[2] = *unaff_ESI;
    *(undefined2 *)(puVar1 + 3) = *(undefined2 *)(unaff_ESI + 1);
  }
  *unaff_EDI = puVar1;
  if (puVar1 != (undefined4 *)0x0) {
    LOCK();
    puVar1[1] = puVar1[1] + 1;
    UNLOCK();
  }
  return;
}



void FUN_005ed740(undefined4 param_1)

{
  void *pvVar1;
  int iVar2;
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x138);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_005eda10(pvVar1,param_1);
  }
  *unaff_ESI = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return;
}



void FUN_005ed7c0(void)

{
  void *pvVar1;
  int iVar2;
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(300);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_005edac0(pvVar1);
  }
  *unaff_ESI = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return;
}



void FUN_005ed840(undefined4 param_1)

{
  void *pvVar1;
  int iVar2;
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x130);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_005edbc0(pvVar1,param_1);
  }
  *unaff_ESI = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return;
}



void FUN_005ed8c0(undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  
  puVar1 = (undefined4 *)operator_new(0x2c);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    *puVar1 = boost::xpressive::detail::
              xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::simple_repeat_matcher<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::set_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::int_<10>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::true_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::mpl::bool_<1>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::xpressive::detail::matchable_ex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
              ::vftable;
    puVar3 = puVar1 + 2;
    for (iVar2 = 9; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar3 = *param_1;
      param_1 = param_1 + 1;
      puVar3 = puVar3 + 1;
    }
  }
  *unaff_EBX = puVar1;
  if (puVar1 != (undefined4 *)0x0) {
    LOCK();
    puVar1[1] = puVar1[1] + 1;
    UNLOCK();
  }
  return;
}



void FUN_005ed910(undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  
  puVar1 = (undefined4 *)operator_new(0x48);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    *puVar1 = boost::xpressive::detail::
              xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::repeat_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::keeper_matcher<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::simple_repeat_matcher<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::posix_charset_matcher<struct_boost::xpressive::cpp_regex_traits<char>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::true_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::mpl::bool_<1>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::true_matcher,struct_boost::xpressive::detail::no_next>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::repeat_end_matcher<struct_boost::mpl::bool_<1>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>,struct_boost::xpressive::detail::matchable_ex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
              ::vftable;
    puVar3 = puVar1 + 2;
    for (iVar2 = 0x10; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar3 = *param_1;
      param_1 = param_1 + 1;
      puVar3 = puVar3 + 1;
    }
  }
  *unaff_EBX = puVar1;
  if (puVar1 != (undefined4 *)0x0) {
    LOCK();
    puVar1[1] = puVar1[1] + 1;
    UNLOCK();
  }
  return;
}



void FUN_005ed960(int **param_1)

{
  int **ppiVar1;
  int *piVar2;
  int iVar3;
  undefined *puVar4;
  undefined4 *unaff_ESI;
  
  ppiVar1 = (int **)*param_1;
  piVar2 = *ppiVar1;
  iVar3 = *piVar2;
  FUN_005ee6c0();
  puVar4 = (undefined *)*unaff_ESI;
  *puVar4 = **(undefined **)(iVar3 + 4);
  puVar4[1] = *(undefined *)piVar2[1];
  puVar4[2] = *(undefined *)ppiVar1[1];
  puVar4[3] = *(undefined *)param_1[1];
  *unaff_ESI = puVar4 + 4;
  return;
}



void __fastcall FUN_005ed9b0(uint param_1)

{
  uint local_4;
  
  local_4 = param_1 & 0xffffff00;
  FUN_005ee3f0(param_1 + 8,local_4);
  return;
}



void FUN_005ed9d0(void)

{
  FUN_005ee010(&stack0x00000004);
  return;
}



void FUN_005ed9f0(void)

{
  FUN_005ee070();
  return;
}



undefined4 * FUN_005eda10(undefined4 *param_1,undefined *param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28958;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::optional_mark_matcher<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::repeat_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::keeper_matcher<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_...lass_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  *(undefined *)(param_1 + 2) = *param_2;
  FUN_005ec3d0(param_1 + 3);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005eda70(int param_1)

{
  FUN_005ee110(param_1 + 8);
  return;
}



void FUN_005eda90(void)

{
  FUN_005ee1b0();
  return;
}



void FUN_005edaa0(void)

{
  FUN_005ee230(&stack0x00000004);
  return;
}



undefined4 * FUN_005edac0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33f08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::optional_mark_matcher<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::repeat_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::keeper_matcher<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::independent_end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::repeat_end_matcher<struct_boost::mpl::bool_<1>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::alternate_end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>,struct_boost::mpl::bool_<1>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>,struct_boost::xpressive::detail::matchable_ex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  FUN_005ec350(param_1 + 2);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005edb20(uint param_1)

{
  uint local_4;
  
  local_4 = param_1 & 0xffffff00;
  FUN_005ee550(param_1 + 0xb0,local_4);
  return;
}



void __thiscall FUN_005edb50(int param_1_00,int param_1)

{
  int local_4;
  
  local_4 = param_1_00 + 0xb0;
  FUN_005e14c0(&local_4);
  param_1 = param_1_00 + 0xc;
  FUN_005e14c0(&param_1);
  FUN_005eeb00();
  return;
}



void FUN_005edba0(undefined4 *param_1)

{
  undefined *puVar1;
  int iVar2;
  
  puVar1 = (undefined *)*param_1;
  *puVar1 = 0;
  iVar2 = 7;
  do {
    iVar2 = iVar2 + -1;
    *(undefined4 *)(puVar1 + iVar2 * 4 + 8) = 0xffffffff;
  } while (-1 < iVar2);
  return;
}



undefined4 * FUN_005edbc0(undefined4 *param_1,undefined *param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28958;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::optional_mark_matcher<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::repeat_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::keeper_matcher<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_...lass_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  *(undefined *)(param_1 + 2) = *param_2;
  FUN_005ec350(param_1 + 3);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_005edc20(int param_1)

{
  FUN_005ee2a0(param_1 + 8);
  return;
}



void __thiscall FUN_005edc40(int param_1_00,int param_1)

{
  int local_4;
  
  local_4 = param_1_00 + 0xb4;
  FUN_005e14c0(&local_4);
  param_1 = param_1_00 + 0x10;
  FUN_005e14c0(&param_1);
  FUN_005eeb00();
  return;
}



void __fastcall FUN_005edc90(uint param_1)

{
  uint local_4;
  
  local_4 = param_1 & 0xffffff00;
  FUN_005ee5b0(param_1 + 8,local_4);
  return;
}



void FUN_005edcb0(void)

{
  FUN_005ee340(&stack0x00000004);
  return;
}



void FUN_005edcd0(void)

{
  FUN_005ee3a0();
  return;
}



void __thiscall FUN_005edcf0(int param_1_00,int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  int local_4;
  
  local_4 = param_1_00 + 0xc;
  FUN_005e14c0(&local_4);
  puVar1 = (undefined4 *)FUN_005e16f0();
  *(undefined4 *)(param_1_00 + 0x40) = *puVar1;
  if ((*(int *)(param_1 + 0x1c) != 0) &&
     (iVar2 = *(int *)(param_1 + 0x1c) + -1, *(int *)(param_1 + 0x1c) = iVar2, iVar2 == 0)) {
    *(undefined4 *)(param_1 + 0x18) = 0;
  }
  return;
}



void FUN_005edd40(int param_1)

{
  *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + -1;
  if (*(char *)(param_1 + 0x20) != '\0') {
    *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + -1;
  }
  FUN_005ee010(&param_1);
  return;
}



undefined4 __thiscall FUN_005edd70(undefined4 param_1_00,byte param_1)

{
  FUN_005eddb0(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_005edd90(undefined4 param_1_00,byte param_1)

{
  FUN_005ede00(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005eddb0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28958;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005ec040(param_1 + 3);
  *param_1 = boost::xpressive::detail::
             matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
             ::vftable;
  ExceptionList = local_c;
  return;
}



void FUN_005ede00(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28958;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005ec040(param_1 + 2);
  *param_1 = boost::xpressive::detail::
             matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
             ::vftable;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_005ede50(char *param_1_00,char *param_2,int param_1)

{
  uint uVar1;
  undefined uVar2;
  short sVar3;
  undefined4 ***pppuVar4;
  undefined4 ***pppuVar5;
  undefined4 ***pppuVar6;
  uint uVar7;
  undefined auStack_34 [4];
  undefined4 local_30;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [4];
  undefined4 ***local_28 [4];
  uint local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d058;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_34;
  ExceptionList = &local_c;
  sVar3 = FUN_005e0fb0(param_1_00,DAT_0323f878 ^ (uint)&stack0xffffffbc);
  if (sVar3 != 0) goto LAB_005edfe4;
  local_14 = 0xf;
  local_18 = 0;
  local_28[0] = (undefined4 ***)((uint)local_28[0] & 0xffffff00);
  if (param_2 != param_1_00) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_2c,param_2,(int)param_1_00 - (int)param_2);
  }
  uVar1 = local_18;
  uVar7 = 0;
  local_4 = 0;
  if (local_18 != 0) {
    do {
      if (local_18 < uVar7) {
        FUN_00a3fb10();
      }
      pppuVar4 = local_28[0];
      if (local_14 < 0x10) {
        pppuVar4 = local_28;
      }
      local_30 = CONCAT31(local_30._1_3_,*(undefined *)((int)pppuVar4 + uVar7));
      uVar2 = (**(code **)(**(int **)(param_1 + 0x204) + 8))(local_30);
      if (local_18 < uVar7) {
        FUN_00a3fb10();
      }
      pppuVar4 = local_28[0];
      if (local_14 < 0x10) {
        pppuVar4 = local_28;
      }
      *(undefined *)((int)pppuVar4 + uVar7) = uVar2;
      uVar7 = uVar7 + 1;
    } while (uVar7 < uVar1);
  }
  pppuVar4 = local_28[0];
  if (local_14 < 0x10) {
    pppuVar4 = local_28;
  }
  pppuVar4 = (undefined4 ***)((int)pppuVar4 + local_18);
  if (pppuVar4 == (undefined4 ***)0x0) {
LAB_005edf75:
    FUN_00a3fb10();
  }
  else {
    pppuVar5 = local_28[0];
    if (local_14 < 0x10) {
      pppuVar5 = local_28;
    }
    if (pppuVar4 < pppuVar5) goto LAB_005edf75;
    pppuVar5 = local_28[0];
    if (local_14 < 0x10) {
      pppuVar5 = local_28;
    }
    if ((undefined4 ***)((int)pppuVar5 + local_18) < pppuVar4) goto LAB_005edf75;
  }
  if (local_14 < 0x10) {
    pppuVar5 = local_28;
LAB_005edf95:
    pppuVar6 = local_28[0];
    if (local_14 < 0x10) {
      pppuVar6 = local_28;
    }
    if (pppuVar5 < pppuVar6) goto LAB_005edfb5;
    pppuVar6 = local_28[0];
    if (local_14 < 0x10) {
      pppuVar6 = local_28;
    }
    if ((undefined4 ***)((int)pppuVar6 + local_18) < pppuVar5) goto LAB_005edfb5;
  }
  else {
    pppuVar5 = local_28[0];
    if (local_28[0] != (undefined4 ***)0x0) goto LAB_005edf95;
LAB_005edfb5:
    FUN_00a3fb10();
  }
  FUN_005e1020(local_2c,pppuVar5,local_2c,pppuVar4);
  if (0xf < local_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_28[0]);
  }
LAB_005edfe4:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_005ee010(int param_1_00,undefined4 param_1)

{
  undefined *puVar1;
  undefined4 *in_EAX;
  int iVar2;
  
  if (*(int *)(param_1_00 + 0x10) == 1) {
    in_EAX[7] = in_EAX[7] + 1;
    *(bool *)(param_1_00 + 0x14) = 0 < (int)in_EAX[7];
  }
  if (*(int *)(param_1_00 + 8) != 0) {
    FUN_005ee500(*in_EAX);
    return param_1;
  }
  puVar1 = (undefined *)*in_EAX;
  *puVar1 = 0;
  iVar2 = 7;
  do {
    *(undefined4 *)(puVar1 + iVar2 * 4 + 4) = 0xffffffff;
    iVar2 = iVar2 + -1;
  } while (-1 < iVar2);
  return param_1;
}



undefined4 FUN_005ee070(void)

{
  int iVar1;
  char cVar2;
  int *in_EAX;
  int iVar3;
  char *unaff_ESI;
  
  iVar1 = *in_EAX;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != in_EAX[6])))) {
    FUN_00a3fb10();
  }
  if (in_EAX[1] == in_EAX[7]) {
    *(undefined *)((int)in_EAX + 0x29) = 1;
    return 0;
  }
  if (*in_EAX != -4) {
    if (*in_EAX == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *in_EAX;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar3) <= (uint)in_EAX[1]) {
      FUN_00a3fb10();
    }
  }
  if ((bool)*unaff_ESI !=
      ((*(ushort *)(in_EAX[0xe] + 8 + (uint)*(byte *)in_EAX[1] * 2) & *(ushort *)(unaff_ESI + 2)) !=
      0)) {
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)in_EAX);
    cVar2 = FUN_005e2f60();
    if (cVar2 != '\0') {
      return 1;
    }
    FUN_00429850();
  }
  return 0;
}



undefined4 FUN_005ee110(char *param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *unaff_ESI;
  int unaff_EDI;
  
  iVar1 = *unaff_ESI;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != unaff_ESI[6])))) {
    FUN_00a3fb10();
  }
  if (unaff_ESI[1] == unaff_ESI[7]) {
    *(undefined *)((int)unaff_ESI + 0x29) = 1;
    return 0;
  }
  if (*unaff_ESI != -4) {
    if (*unaff_ESI == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *unaff_ESI;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar3) <= (uint)unaff_ESI[1]) {
      FUN_00a3fb10();
    }
  }
  if (*(char *)unaff_ESI[1] == *param_1) {
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)unaff_ESI);
    param_1 = (char *)((uint)param_1 & 0xffffff00);
    cVar2 = FUN_005ee850(unaff_EDI + 0xa8,param_1);
    if (cVar2 != '\0') {
      return 1;
    }
    FUN_00429850();
  }
  return 0;
}



void __fastcall FUN_005ee1b0(int param_1)

{
  int in_EAX;
  undefined4 *puVar1;
  int iVar2;
  int local_4;
  
  local_4 = param_1 + 0xa8;
  FUN_005e14c0(&local_4);
  local_4 = param_1 + 4;
  FUN_005e14c0(&local_4);
  FUN_005eeb00();
  local_4 = param_1 + 0x128;
  FUN_005e14c0(&local_4);
  puVar1 = (undefined4 *)FUN_005e16f0();
  *(undefined4 *)(param_1 + 0x120) = *puVar1;
  if ((*(int *)(in_EAX + 0x1c) != 0) &&
     (iVar2 = *(int *)(in_EAX + 0x1c) + -1, *(int *)(in_EAX + 0x1c) = iVar2, iVar2 == 0)) {
    *(undefined4 *)(in_EAX + 0x18) = 0;
  }
  return;
}



undefined4 __thiscall FUN_005ee230(char **param_1_00,undefined4 param_1)

{
  byte bVar1;
  char *pcVar2;
  byte *in_EAX;
  int iVar3;
  uint uVar4;
  uint extraout_ECX;
  
  bVar1 = *in_EAX;
  pcVar2 = *param_1_00;
  iVar3 = FUN_005e0900();
  if (iVar3 != 0x100) {
    if ((iVar3 != 0) && (*pcVar2 != '\0')) {
      FUN_005dc530();
      return param_1;
    }
    uVar4 = (uint)bVar1;
    *pcVar2 = '\0';
    if (0xff < uVar4) {
      FUN_005e0c40();
      uVar4 = extraout_ECX;
    }
    *(uint *)(pcVar2 + (uVar4 >> 5) * 4 + 4) =
         *(uint *)(pcVar2 + (uVar4 >> 5) * 4 + 4) | 1 << ((byte)uVar4 & 0x1f);
  }
  return param_1;
}



undefined4 FUN_005ee2a0(char *param_1)

{
  int iVar1;
  char cVar2;
  int *in_EAX;
  int iVar3;
  int unaff_ESI;
  
  iVar1 = *in_EAX;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != in_EAX[6])))) {
    FUN_00a3fb10();
  }
  if (in_EAX[1] == in_EAX[7]) {
    *(undefined *)((int)in_EAX + 0x29) = 1;
    return 0;
  }
  if (*in_EAX != -4) {
    if (*in_EAX == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *in_EAX;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar3) <= (uint)in_EAX[1]) {
      FUN_00a3fb10();
    }
  }
  if (*(char *)in_EAX[1] == *param_1) {
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)in_EAX);
    param_1 = (char *)((uint)param_1 & 0xffffff00);
    cVar2 = FUN_005ee550(unaff_ESI + 0xa8,param_1);
    if (cVar2 != '\0') {
      return 1;
    }
    FUN_00429850();
  }
  return 0;
}



undefined4 __fastcall FUN_005ee340(undefined4 *param_1_00,int param_2,undefined4 param_1)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  
  if (*(int *)(param_2 + 0x18) == 1) {
    param_1_00[7] = param_1_00[7] + 1;
    *(bool *)(param_2 + 0x1c) = 0 < (int)param_1_00[7];
  }
  puVar1 = (undefined *)*param_1_00;
  iVar2 = *(int *)(param_2 + 0x10);
  iVar3 = 7;
  *puVar1 = 0;
  if (iVar2 == 0) {
    do {
      iVar3 = iVar3 + -1;
      *(undefined4 *)(puVar1 + iVar3 * 4 + 8) = 0xffffffff;
    } while (-1 < iVar3);
    return param_1;
  }
  do {
    iVar3 = iVar3 + -1;
    *(undefined4 *)(puVar1 + iVar3 * 4 + 8) = 0xffffffff;
  } while (-1 < iVar3);
  return param_1;
}



undefined4 __fastcall FUN_005ee3a0(undefined4 param_1,int *param_2)

{
  int iVar1;
  undefined uVar2;
  undefined4 uVar3;
  char cVar4;
  int in_EAX;
  
  uVar2 = *(undefined *)(*(int *)(in_EAX + 8) + 0x20 + *param_2 * 0x24);
  iVar1 = *(int *)(in_EAX + 8) + *param_2 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x14);
  *(undefined4 *)(iVar1 + 0x14) = 1;
  *(undefined *)(iVar1 + 0x20) = 0;
  cVar4 = FUN_005ee770();
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x14) = uVar3;
  *(undefined *)(iVar1 + 0x20) = uVar2;
  return 0;
}



undefined4 FUN_005ee3f0(int param_1)

{
  char cVar1;
  uint *puVar2;
  uint *unaff_EBX;
  uint uVar3;
  uint local_1c;
  uint local_18;
  uint local_14;
  
  local_1c = 0;
  local_18 = *unaff_EBX;
  local_14 = unaff_EBX[1];
  if (*(int *)(param_1 + 0xc) != 0) {
    do {
      cVar1 = FUN_005ee7d0();
      if (cVar1 == '\0') break;
      local_1c = local_1c + 1;
    } while (local_1c < *(uint *)(param_1 + 0xc));
  }
  uVar3 = local_18;
  if (*(char *)(param_1 + 0x14) != '\0') {
    if ((local_1c == 0) || (puVar2 = unaff_EBX, *(uint *)(param_1 + 0xc) <= local_1c)) {
      if ((local_18 != 0xfffffffc) && ((local_18 == 0 || (local_18 != unaff_EBX[6])))) {
        FUN_00a3fb10();
      }
      if (local_14 == unaff_EBX[7]) {
        puVar2 = &local_18;
      }
      else {
        puVar2 = (uint *)FUN_005ee720(uVar3,local_14);
        uVar3 = local_18;
      }
    }
    unaff_EBX[0x16] = *puVar2;
    unaff_EBX[0x17] = puVar2[1];
  }
  if (local_1c < *(uint *)(param_1 + 8)) {
    *unaff_EBX = uVar3;
    unaff_EBX[1] = local_14;
    return 0;
  }
  cVar1 = FUN_005e2f60();
  while( true ) {
    if (cVar1 != '\0') {
      return 1;
    }
    if (*(uint *)(param_1 + 8) == local_1c) break;
    local_1c = local_1c - 1;
    FUN_005e0be0(0xffffffff);
    cVar1 = FUN_005e2f60();
  }
  *unaff_EBX = local_18;
  unaff_EBX[1] = local_14;
  return 0;
}



void FUN_005ee500(int param_1)

{
  uint *puVar1;
  code *pcVar2;
  uint uVar3;
  char unaff_BL;
  int unaff_ESI;
  ushort unaff_DI;
  
  uVar3 = 0;
  do {
    if ((bool)unaff_BL != ((*(ushort *)(unaff_ESI + (uVar3 & 0xff) * 2) & unaff_DI) != 0)) {
      if (0xff < uVar3) {
        FUN_005e0c40();
        pcVar2 = (code *)swi(3);
        (*pcVar2)();
        return;
      }
      puVar1 = (uint *)(param_1 + 4 + (uVar3 >> 5) * 4);
      *puVar1 = *puVar1 | 1 << ((byte)uVar3 & 0x1f);
    }
    uVar3 = uVar3 + 1;
  } while (uVar3 < 0x100);
  return;
}



undefined4 FUN_005ee550(int param_1)

{
  int iVar1;
  undefined uVar2;
  char cVar3;
  int in_EAX;
  int unaff_EDI;
  
  cVar3 = FUN_005ee8b0();
  if (cVar3 == '\0') {
    uVar2 = *(undefined *)(*(int *)(unaff_EDI + 8) + 0x10 + *(int *)(in_EAX + 0xa4) * 0x24);
    iVar1 = *(int *)(unaff_EDI + 8) + *(int *)(in_EAX + 0xa4) * 0x24;
    *(undefined *)(iVar1 + 0x10) = 0;
    cVar3 = FUN_005ee9f0(unaff_EDI,param_1 + 0x78);
    if (cVar3 == '\0') {
      *(undefined *)(iVar1 + 0x10) = uVar2;
      return 0;
    }
  }
  return 1;
}



undefined4 FUN_005ee5b0(int param_1)

{
  char cVar1;
  int *in_EAX;
  int *piVar2;
  uint uVar3;
  int local_18;
  int local_14;
  
  uVar3 = 0;
  local_18 = *in_EAX;
  local_14 = in_EAX[1];
  if (*(int *)(param_1 + 0x14) != 0) {
    do {
      cVar1 = FUN_005ee900();
      if (cVar1 == '\0') break;
      uVar3 = uVar3 + 1;
    } while (uVar3 < *(uint *)(param_1 + 0x14));
  }
  if (*(char *)(param_1 + 0x1c) != '\0') {
    if ((uVar3 == 0) || (piVar2 = in_EAX, *(uint *)(param_1 + 0x14) <= uVar3)) {
      if ((local_18 != -4) && ((local_18 == 0 || (local_18 != in_EAX[6])))) {
        FUN_00a3fb10();
      }
      if (local_14 == in_EAX[7]) {
        piVar2 = &local_18;
      }
      else {
        piVar2 = (int *)FUN_005ee720(local_18,local_14);
      }
    }
    in_EAX[0x16] = *piVar2;
    in_EAX[0x17] = piVar2[1];
  }
  if (uVar3 < *(uint *)(param_1 + 0x10)) {
    *in_EAX = local_18;
    in_EAX[1] = local_14;
    return 0;
  }
  cVar1 = FUN_005e2f60();
  while( true ) {
    if (cVar1 != '\0') {
      return 1;
    }
    if (*(uint *)(param_1 + 0x10) == uVar3) break;
    uVar3 = uVar3 - 1;
    FUN_005e0be0(0xffffffff);
    cVar1 = FUN_005e2f60();
  }
  in_EAX[1] = local_14;
  *in_EAX = local_18;
  return 0;
}



void FUN_005ee6a0(void)

{
  FUN_005ee770();
  return;
}



void __fastcall FUN_005ee6c0(undefined4 param_1_00,int **param_2,undefined4 *param_1)

{
  int **ppiVar1;
  undefined *puVar2;
  int **ppiVar3;
  int **ppiVar4;
  int *piVar5;
  
  ppiVar1 = (int **)*param_2;
  puVar2 = (undefined *)*param_1;
  ppiVar3 = (int **)*ppiVar1;
  ppiVar4 = (int **)*ppiVar3;
  piVar5 = *ppiVar4;
  *puVar2 = **(undefined **)(*piVar5 + 4);
  puVar2[1] = *(undefined *)piVar5[1];
  puVar2[2] = *(undefined *)ppiVar4[1];
  puVar2[3] = *(undefined *)ppiVar3[1];
  puVar2[4] = *(undefined *)ppiVar1[1];
  puVar2[5] = *(undefined *)param_2[1];
  *param_1 = puVar2 + 6;
  return;
}



void FUN_005ee720(int param_1,uint param_2)

{
  int iVar1;
  int *unaff_ESI;
  
  if (param_1 != -4) {
    if (param_1 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(param_1 + 0x18) < 0x10) {
      iVar1 = param_1 + 4;
    }
    else {
      iVar1 = *(int *)(param_1 + 4);
    }
    if ((uint)(*(int *)(param_1 + 0x14) + iVar1) <= param_2) {
      FUN_00a3fb10();
    }
  }
  *unaff_ESI = param_1;
  unaff_ESI[1] = param_2 + 1;
  return;
}



undefined4 __fastcall FUN_005ee770(int *param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *in_EAX;
  uint local_c;
  
  uVar2 = *(undefined4 *)(in_EAX[2] + 0x1c + *param_1 * 0x24);
  iVar1 = in_EAX[2] + *param_1 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x18);
  *(undefined4 *)(iVar1 + 0x18) = *in_EAX;
  *(undefined4 *)(iVar1 + 0x1c) = in_EAX[1];
  local_c = (uint)param_1 & 0xffffff00;
  cVar4 = FUN_005eeb70(param_2,param_2 + 0x20,local_c);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x18) = uVar3;
  *(undefined4 *)(iVar1 + 0x1c) = uVar2;
  return 0;
}



undefined4 FUN_005ee7d0(void)

{
  int iVar1;
  int iVar2;
  int *unaff_ESI;
  char *unaff_EDI;
  
  iVar1 = *unaff_ESI;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != unaff_ESI[6])))) {
    FUN_00a3fb10();
  }
  if (unaff_ESI[1] == unaff_ESI[7]) {
    *(undefined *)((int)unaff_ESI + 0x29) = 1;
  }
  else {
    if (*unaff_ESI != -4) {
      if (*unaff_ESI == 0) {
        FUN_00a3fb10();
      }
      iVar1 = *unaff_ESI;
      if (*(uint *)(iVar1 + 0x18) < 0x10) {
        iVar2 = iVar1 + 4;
      }
      else {
        iVar2 = *(int *)(iVar1 + 4);
      }
      if ((uint)(*(int *)(iVar1 + 0x14) + iVar2) <= (uint)unaff_ESI[1]) {
        FUN_00a3fb10();
      }
    }
    if ((bool)*unaff_EDI !=
        ((*(ushort *)(unaff_ESI[0xe] + 8 + (uint)*(byte *)unaff_ESI[1] * 2) &
         *(ushort *)(unaff_EDI + 2)) != 0)) {
      std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *)unaff_ESI);
      return 1;
    }
  }
  return 0;
}



undefined4 __thiscall FUN_005ee850(int param_1_00,int param_1)

{
  int iVar1;
  undefined uVar2;
  char cVar3;
  int in_EAX;
  
  cVar3 = FUN_005eea60();
  if (cVar3 == '\0') {
    uVar2 = *(undefined *)(*(int *)(in_EAX + 8) + 0x10 + *(int *)(param_1_00 + 0xa4) * 0x24);
    iVar1 = *(int *)(in_EAX + 8) + *(int *)(param_1_00 + 0xa4) * 0x24;
    *(undefined *)(iVar1 + 0x10) = 0;
    cVar3 = FUN_005eee20(in_EAX,param_1 + 0x78);
    if (cVar3 == '\0') {
      cVar3 = FUN_005e2f60();
      if (cVar3 == '\0') {
        *(undefined *)(iVar1 + 0x10) = uVar2;
        return 0;
      }
    }
  }
  return 1;
}



undefined4 __fastcall FUN_005ee8b0(int *param_1)

{
  int iVar1;
  undefined uVar2;
  undefined4 uVar3;
  char cVar4;
  int in_EAX;
  
  uVar2 = *(undefined *)(*(int *)(in_EAX + 8) + 0x20 + *param_1 * 0x24);
  iVar1 = *(int *)(in_EAX + 8) + *param_1 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x14);
  *(undefined4 *)(iVar1 + 0x14) = 1;
  *(undefined *)(iVar1 + 0x20) = 0;
  cVar4 = FUN_005eeab0();
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x14) = uVar3;
  *(undefined *)(iVar1 + 0x20) = uVar2;
  return 0;
}



undefined4 FUN_005ee900(void)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  int iVar3;
  int *unaff_EDI;
  
  iVar1 = *unaff_EDI;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != unaff_EDI[6])))) {
    FUN_00a3fb10();
  }
  if (unaff_EDI[1] == unaff_EDI[7]) {
    *(undefined *)((int)unaff_EDI + 0x29) = 1;
  }
  else {
    if (*unaff_EDI != -4) {
      if (*unaff_EDI == 0) {
        FUN_00a3fb10();
      }
      iVar1 = *unaff_EDI;
      if (*(uint *)(iVar1 + 0x18) < 0x10) {
        iVar3 = iVar1 + 4;
      }
      else {
        iVar3 = *(int *)(iVar1 + 4);
      }
      if ((uint)(*(int *)(iVar1 + 0x14) + iVar3) <= (uint)unaff_EDI[1]) {
        FUN_00a3fb10();
      }
    }
    cVar2 = FUN_005ee980(unaff_EDI[0xe] + 8,*(undefined *)unaff_EDI[1]);
    if (*(char *)(in_EAX + 10) != cVar2) {
      std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *)unaff_EDI);
      return 1;
    }
  }
  return 0;
}



bool FUN_005ee980(int param_1,undefined4 param_2)

{
  char *pcVar1;
  char cVar2;
  char *unaff_ESI;
  
  cVar2 = (char)param_2;
  pcVar1 = unaff_ESI + 10;
  if (unaff_ESI[0xb] != '\0') {
    cVar2 = (**(code **)(**(int **)(param_1 + 0x204) + 8))(param_2);
  }
  if (unaff_ESI != pcVar1) {
    do {
      if (*unaff_ESI == cVar2) break;
      unaff_ESI = unaff_ESI + 1;
    } while (unaff_ESI != pcVar1);
  }
  return pcVar1 != unaff_ESI;
}



void FUN_005ee9d0(void)

{
  FUN_005eeab0();
  return;
}



void __thiscall FUN_005ee9f0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined **local_20;
  undefined4 local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c2af08;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_20 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_1c = param_2;
  local_c = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)&local_20);
  ExceptionList = local_14;
  return;
}



undefined4 __fastcall FUN_005eea60(int *param_1)

{
  int iVar1;
  undefined uVar2;
  undefined4 uVar3;
  char cVar4;
  int in_EAX;
  
  uVar2 = *(undefined *)(*(int *)(in_EAX + 8) + 0x20 + *param_1 * 0x24);
  iVar1 = *(int *)(in_EAX + 8) + *param_1 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x14);
  *(undefined4 *)(iVar1 + 0x14) = 1;
  *(undefined *)(iVar1 + 0x20) = 0;
  cVar4 = FUN_005eebc0();
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x14) = uVar3;
  *(undefined *)(iVar1 + 0x20) = uVar2;
  return 0;
}



undefined4 __fastcall FUN_005eeab0(int param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *in_EAX;
  
  uVar2 = *(undefined4 *)(in_EAX[2] + 0x1c + *param_2 * 0x24);
  iVar1 = in_EAX[2] + *param_2 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x18);
  *(undefined4 *)(iVar1 + 0x18) = *in_EAX;
  *(undefined4 *)(iVar1 + 0x1c) = in_EAX[1];
  cVar4 = FUN_005eedb0(param_1 + 0x80);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x18) = uVar3;
  *(undefined4 *)(iVar1 + 0x1c) = uVar2;
  return 0;
}



void FUN_005eeb00(void)

{
  undefined4 *puVar1;
  int iVar2;
  int unaff_ESI;
  int unaff_EDI;
  
  puVar1 = (undefined4 *)FUN_005e16f0();
  *(undefined4 *)(unaff_EDI + 0xc) = *puVar1;
  if ((*(int *)(unaff_ESI + 0x1c) != 0) &&
     (iVar2 = *(int *)(unaff_ESI + 0x1c) + -1, *(int *)(unaff_ESI + 0x1c) = iVar2, iVar2 == 0)) {
    *(undefined4 *)(unaff_ESI + 0x18) = 0;
  }
  puVar1 = (undefined4 *)FUN_005e16f0();
  *(undefined4 *)(unaff_EDI + 0x10) = *puVar1;
  if ((*(int *)(unaff_ESI + 0x1c) != 0) &&
     (iVar2 = *(int *)(unaff_ESI + 0x1c) + -1, *(int *)(unaff_ESI + 0x1c) = iVar2, iVar2 == 0)) {
    *(undefined4 *)(unaff_ESI + 0x18) = 0;
  }
  return;
}



void FUN_005eeb50(void)

{
  FUN_005eebc0();
  return;
}



undefined4 FUN_005eeb70(undefined4 param_1,uint param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  uint uVar3;
  char cVar4;
  undefined4 *in_EAX;
  
  uVar3 = param_2;
  uVar1 = *in_EAX;
  uVar2 = in_EAX[1];
  param_2 = param_2 & 0xffffff00;
  cVar4 = FUN_005eefb0(param_2);
  if (cVar4 != '\0') {
    cVar4 = FUN_005ef060(uVar3 + 4);
    if (cVar4 != '\0') {
      return 1;
    }
    *in_EAX = uVar1;
    in_EAX[1] = uVar2;
  }
  return 0;
}



undefined4 __fastcall FUN_005eebc0(int param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *in_EAX;
  
  uVar2 = *(undefined4 *)(in_EAX[2] + 0x1c + *param_2 * 0x24);
  iVar1 = in_EAX[2] + *param_2 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x18);
  *(undefined4 *)(iVar1 + 0x18) = *in_EAX;
  *(undefined4 *)(iVar1 + 0x1c) = in_EAX[1];
  cVar4 = FUN_005ef0f0(param_1 + 0x80);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x18) = uVar3;
  *(undefined4 *)(iVar1 + 0x1c) = uVar2;
  return 0;
}



void FUN_005eec10(void)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int in_EAX;
  int iVar5;
  int iVar6;
  int *unaff_EDI;
  uint local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined local_4;
  
  local_24 = *(undefined4 *)(in_EAX + 0x10);
  local_20 = *(undefined4 *)(in_EAX + 0x14);
  iVar3 = *(int *)(in_EAX + 0x3c);
  iVar5 = *(int *)(iVar3 + 0xc);
  iVar4 = *(int *)(in_EAX + 0xc);
  uVar2 = iVar5 + iVar4 * 0x24;
  local_14 = 0;
  local_10 = 0;
  local_4 = 0;
  *(uint *)(iVar3 + 0xc) = uVar2;
  local_1c = local_24;
  local_18 = local_20;
  local_c = local_24;
  local_8 = local_20;
  if (*(uint *)(iVar3 + 0x10) < uVar2) {
    *(int *)(iVar3 + 0xc) = iVar5;
    iVar5 = FUN_005e21f0(iVar3 + 4,iVar4,&local_24);
  }
  iVar3 = *(int *)(in_EAX + 0x2c);
  iVar4 = *(int *)(iVar3 + 0x4c);
  iVar6 = 0;
  *unaff_EDI = iVar5;
  for (; iVar4 != iVar3 + 0x48; iVar4 = *(int *)(iVar4 + 4)) {
    iVar6 = iVar6 + 1;
  }
  iVar3 = *(int *)(in_EAX + 0x48);
  piVar1 = (int *)(in_EAX + 0x44);
  unaff_EDI[1] = iVar6;
  iVar4 = *piVar1;
  unaff_EDI[3] = iVar3;
  iVar3 = *(int *)(in_EAX + 0x54);
  *piVar1 = 0;
  *(int **)(in_EAX + 0x48) = piVar1;
  local_28 = local_28 & 0xffffff00;
  unaff_EDI[2] = iVar4;
  iVar4 = *(int *)(in_EAX + 0x50);
  unaff_EDI[5] = iVar3;
  unaff_EDI[4] = iVar4;
  FUN_005e2e20(iVar5,local_28,local_28,local_28);
  return;
}



void FUN_005eecf0(int param_1,uint param_2)

{
  int iVar1;
  undefined4 uVar2;
  uint uVar3;
  
  uVar3 = param_2;
  for (iVar1 = *(int *)(*(int *)(param_2 + 0x2c) + 0x4c); iVar1 != *(int *)(param_2 + 0x2c) + 0x48;
      iVar1 = *(int *)(iVar1 + 4)) {
  }
  FUN_005eed70();
  param_2 = param_2 & 0xffffff00;
  FUN_005e2e20(*(undefined4 *)(uVar3 + 8),param_1,param_1,param_2);
  FUN_005e1df0();
  uVar2 = *(undefined4 *)(param_1 + 0x14);
  *(undefined4 *)(uVar3 + 0x50) = *(undefined4 *)(param_1 + 0x10);
  *(undefined4 *)(uVar3 + 0x54) = uVar2;
  return;
}



void FUN_005eed70(void)

{
  int in_EAX;
  int *piVar1;
  int *unaff_ESI;
  int **unaff_EDI;
  
  if (in_EAX != 0) {
    do {
      piVar1 = *unaff_EDI + 0x14;
      if ((int *)(*unaff_EDI)[0x15] != piVar1) {
        FUN_005e1e40(piVar1);
      }
      in_EAX = in_EAX + -1;
      piVar1 = *unaff_EDI;
      *(int *)(*piVar1 + 4) = piVar1[1];
      *(int *)piVar1[1] = *piVar1;
      piVar1[1] = (int)unaff_ESI;
      *piVar1 = *unaff_ESI;
      *(int **)(*unaff_ESI + 4) = piVar1;
      *unaff_ESI = (int)piVar1;
    } while (in_EAX != 0);
  }
  return;
}



undefined4 __thiscall FUN_005eedb0(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  uint uVar2;
  char cVar3;
  undefined4 *in_EAX;
  undefined4 uVar4;
  
  uVar2 = param_1;
  if (*(char *)(param_1_00 + 0x7c) == '\0') {
    param_1 = param_1 & 0xffffff00;
    uVar4 = FUN_005eee90(param_1_00,uVar2,param_1);
    return uVar4;
  }
  uVar4 = *in_EAX;
  uVar1 = in_EAX[1];
  cVar3 = FUN_005ef280(in_EAX,param_1_00 + 0x78);
  if (cVar3 != '\0') {
    cVar3 = FUN_005ef2f0();
    if (cVar3 != '\0') {
      return 1;
    }
    *in_EAX = uVar4;
    in_EAX[1] = uVar1;
  }
  return 0;
}



void __thiscall FUN_005eee20(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined **local_20;
  undefined4 local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c2af08;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_20 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::stacked_xpression<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::alternate_end_matcher,struct_boost::xpressive::detail::no_next>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_1c = param_2;
  local_c = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)&local_20);
  ExceptionList = local_14;
  return;
}



undefined4 FUN_005eee90(int param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int iVar5;
  char cVar6;
  undefined4 *puVar7;
  int iVar8;
  undefined4 *unaff_EBX;
  undefined4 local_30;
  int local_2c;
  undefined4 local_28;
  undefined4 *local_24;
  undefined4 local_20;
  undefined4 local_1c;
  
  uVar1 = *unaff_EBX;
  uVar2 = unaff_EBX[1];
  puVar7 = (undefined4 *)FUN_005eec10();
  local_2c = puVar7[1];
  local_30 = *puVar7;
  uVar3 = puVar7[2];
  puVar4 = (undefined4 *)puVar7[3];
  local_20 = puVar7[4];
  local_1c = puVar7[5];
  local_28 = uVar3;
  local_24 = puVar4;
  cVar6 = FUN_005ef280(unaff_EBX,param_1 + 0x78);
  unaff_EBX[0x11] = uVar3;
  unaff_EBX[0x12] = puVar4;
  *puVar4 = 0;
  if (cVar6 == '\0') {
    iVar8 = 0;
    for (iVar5 = *(int *)(unaff_EBX[0xb] + 0x4c); iVar5 != unaff_EBX[0xb] + 0x48;
        iVar5 = *(int *)(iVar5 + 4)) {
      iVar8 = iVar8 + 1;
    }
    if (iVar8 == local_2c) {
      FUN_005e1df0();
    }
    unaff_EBX[0x15] = local_1c;
    unaff_EBX[0x14] = local_20;
    return 0;
  }
  cVar6 = FUN_005ef2f0();
  if (cVar6 == '\0') {
    FUN_005eecf0(&local_30);
    unaff_EBX[1] = uVar2;
    *unaff_EBX = uVar1;
    return 0;
  }
  iVar8 = 0;
  for (iVar5 = *(int *)(unaff_EBX[0xb] + 0x4c); iVar5 != unaff_EBX[0xb] + 0x48;
      iVar5 = *(int *)(iVar5 + 4)) {
    iVar8 = iVar8 + 1;
  }
  if (iVar8 == local_2c) {
    FUN_005e1df0();
  }
  return 1;
}



undefined4 FUN_005eefb0(void)

{
  char cVar1;
  int in_EAX;
  int *piVar2;
  int *unaff_EBX;
  uint uVar3;
  int iVar4;
  int local_10;
  int local_c;
  
  uVar3 = 0;
  local_10 = *unaff_EBX;
  local_c = unaff_EBX[1];
  if (*(int *)(in_EAX + 0xc) != 0) {
    do {
      cVar1 = FUN_005ee7d0();
      if (cVar1 == '\0') break;
      uVar3 = uVar3 + 1;
    } while (uVar3 < *(uint *)(in_EAX + 0xc));
  }
  iVar4 = local_10;
  if (*(char *)(in_EAX + 0x14) != '\0') {
    if ((uVar3 == 0) || (piVar2 = unaff_EBX, *(uint *)(in_EAX + 0xc) <= uVar3)) {
      if ((local_10 != -4) && ((local_10 == 0 || (local_10 != unaff_EBX[6])))) {
        FUN_00a3fb10();
      }
      if (local_c == unaff_EBX[7]) {
        piVar2 = &local_10;
      }
      else {
        piVar2 = (int *)FUN_005ee720(iVar4,local_c);
        iVar4 = local_10;
      }
    }
    unaff_EBX[0x16] = *piVar2;
    unaff_EBX[0x17] = piVar2[1];
  }
  if (*(uint *)(in_EAX + 8) <= uVar3) {
    return 1;
  }
  unaff_EBX[1] = local_c;
  *unaff_EBX = iVar4;
  return 0;
}



undefined4 __fastcall FUN_005ef060(int *param_1)

{
  undefined4 *puVar1;
  undefined uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  char cVar9;
  undefined4 *in_EAX;
  
  iVar3 = *param_1;
  iVar4 = in_EAX[2];
  uVar5 = *(undefined4 *)(iVar4 + 8 + iVar3 * 0x24);
  uVar6 = *(undefined4 *)(iVar4 + 4 + iVar3 * 0x24);
  puVar1 = (undefined4 *)(iVar4 + iVar3 * 0x24);
  uVar7 = puVar1[3];
  uVar2 = *(undefined *)(puVar1 + 4);
  uVar8 = *puVar1;
  puVar1[1] = puVar1[7];
  *puVar1 = puVar1[6];
  puVar1[2] = *in_EAX;
  puVar1[3] = in_EAX[1];
  *(undefined *)(puVar1 + 4) = 1;
  cVar9 = FUN_005ef370();
  if (cVar9 != '\0') {
    return 1;
  }
  *puVar1 = uVar8;
  puVar1[1] = uVar6;
  puVar1[2] = uVar5;
  *(undefined *)(puVar1 + 4) = uVar2;
  puVar1[3] = uVar7;
  return 0;
}



void FUN_005ef0e0(void)

{
  FUN_005e2f60();
  return;
}



undefined4 __thiscall FUN_005ef0f0(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  uint uVar2;
  char cVar3;
  undefined4 *in_EAX;
  undefined4 uVar4;
  
  uVar2 = param_1;
  if (*(char *)(param_1_00 + 0x7c) == '\0') {
    param_1 = param_1 & 0xffffff00;
    uVar4 = FUN_005ef160(param_1_00,uVar2,param_1);
    return uVar4;
  }
  uVar4 = *in_EAX;
  uVar1 = in_EAX[1];
  cVar3 = FUN_005ef280(in_EAX,param_1_00 + 0x78);
  if (cVar3 != '\0') {
    cVar3 = FUN_005ef4f0();
    if (cVar3 != '\0') {
      return 1;
    }
    *in_EAX = uVar4;
    in_EAX[1] = uVar1;
  }
  return 0;
}



undefined4 FUN_005ef160(int param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int iVar5;
  char cVar6;
  undefined4 *puVar7;
  int iVar8;
  undefined4 *unaff_EBX;
  undefined4 local_30;
  int local_2c;
  undefined4 local_28;
  undefined4 *local_24;
  undefined4 local_20;
  undefined4 local_1c;
  
  uVar1 = *unaff_EBX;
  uVar2 = unaff_EBX[1];
  puVar7 = (undefined4 *)FUN_005eec10();
  local_2c = puVar7[1];
  local_30 = *puVar7;
  uVar3 = puVar7[2];
  puVar4 = (undefined4 *)puVar7[3];
  local_20 = puVar7[4];
  local_1c = puVar7[5];
  local_28 = uVar3;
  local_24 = puVar4;
  cVar6 = FUN_005ef280(unaff_EBX,param_1 + 0x78);
  unaff_EBX[0x11] = uVar3;
  unaff_EBX[0x12] = puVar4;
  *puVar4 = 0;
  if (cVar6 == '\0') {
    iVar8 = 0;
    for (iVar5 = *(int *)(unaff_EBX[0xb] + 0x4c); iVar5 != unaff_EBX[0xb] + 0x48;
        iVar5 = *(int *)(iVar5 + 4)) {
      iVar8 = iVar8 + 1;
    }
    if (iVar8 == local_2c) {
      FUN_005e1df0();
    }
    unaff_EBX[0x15] = local_1c;
    unaff_EBX[0x14] = local_20;
    return 0;
  }
  cVar6 = FUN_005ef4f0();
  if (cVar6 == '\0') {
    FUN_005eecf0(&local_30);
    unaff_EBX[1] = uVar2;
    *unaff_EBX = uVar1;
    return 0;
  }
  iVar8 = 0;
  for (iVar5 = *(int *)(unaff_EBX[0xb] + 0x4c); iVar5 != unaff_EBX[0xb] + 0x48;
      iVar5 = *(int *)(iVar5 + 4)) {
    iVar8 = iVar8 + 1;
  }
  if (iVar8 == local_2c) {
    FUN_005e1df0();
  }
  return 1;
}



void __thiscall FUN_005ef280(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::independent_end_matcher,struct_boost::xpressive::detail::no_next>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_005ef2e0(int param_1)

{
  FUN_005ef460(*(undefined4 *)(param_1 + 4));
  return;
}



undefined4 __fastcall FUN_005ef2f0(int param_1,int *param_2)

{
  undefined4 *puVar1;
  undefined uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  char cVar9;
  undefined4 *in_EAX;
  
  iVar3 = *param_2;
  iVar4 = in_EAX[2];
  uVar5 = *(undefined4 *)(iVar4 + 4 + iVar3 * 0x24);
  uVar6 = *(undefined4 *)(iVar4 + 8 + iVar3 * 0x24);
  puVar1 = (undefined4 *)(iVar4 + iVar3 * 0x24);
  uVar7 = puVar1[3];
  uVar2 = *(undefined *)(puVar1 + 4);
  uVar8 = *puVar1;
  *puVar1 = puVar1[6];
  puVar1[1] = puVar1[7];
  puVar1[2] = *in_EAX;
  puVar1[3] = in_EAX[1];
  *(undefined *)(puVar1 + 4) = 1;
  cVar9 = FUN_005ef570(param_1 + 0x10);
  if (cVar9 != '\0') {
    return 1;
  }
  *puVar1 = uVar8;
  puVar1[1] = uVar5;
  puVar1[2] = uVar6;
  puVar1[3] = uVar7;
  *(undefined *)(puVar1 + 4) = uVar2;
  return 0;
}



undefined4 __fastcall FUN_005ef370(int *param_1)

{
  int iVar1;
  undefined uVar2;
  int iVar3;
  char cVar4;
  int *in_EAX;
  undefined4 uVar5;
  uint local_4;
  
  iVar1 = in_EAX[2] + *param_1 * 0x24;
  if (*(char *)(in_EAX[2] + 0x20 + *param_1 * 0x24) != '\0') {
    iVar3 = *(int *)(iVar1 + 0x18);
    if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *in_EAX)))) {
      FUN_00a3fb10();
    }
    if (*(int *)(iVar1 + 0x1c) == in_EAX[1]) {
      uVar5 = FUN_005e2f60();
      return uVar5;
    }
  }
  uVar2 = *(undefined *)(iVar1 + 0x20);
  iVar3 = *(int *)(iVar1 + 0x18);
  if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *in_EAX)))) {
    FUN_00a3fb10();
  }
  local_4 = local_4 & 0xffffff00;
  *(bool *)(iVar1 + 0x20) = *(int *)(iVar1 + 0x1c) == in_EAX[1];
  cVar4 = FUN_005ef410(local_4);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined *)(iVar1 + 0x20) = uVar2;
  return 0;
}



undefined4 FUN_005ef410(void)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  undefined4 uVar3;
  int *unaff_EBX;
  
  iVar1 = *(int *)(in_EAX + 8) + *unaff_EBX * 0x24;
  if (*(uint *)(iVar1 + 0x14) < (uint)unaff_EBX[2]) {
    *(uint *)(iVar1 + 0x14) = *(uint *)(iVar1 + 0x14) + 1;
    cVar2 = FUN_005ee6a0(in_EAX);
    if (cVar2 != '\0') {
      return 1;
    }
    *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + -1;
    if (*(uint *)(iVar1 + 0x14) < (uint)unaff_EBX[1]) {
      return 0;
    }
  }
  uVar3 = FUN_005e2f60();
  return uVar3;
}



undefined4 FUN_005ef460(char *param_1)

{
  int iVar1;
  char cVar2;
  int *in_EAX;
  int iVar3;
  
  iVar1 = *in_EAX;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != in_EAX[6])))) {
    FUN_00a3fb10();
  }
  if (in_EAX[1] == in_EAX[7]) {
    *(undefined *)((int)in_EAX + 0x29) = 1;
    return 0;
  }
  if (*in_EAX != -4) {
    if (*in_EAX == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *in_EAX;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar3) <= (uint)in_EAX[1]) {
      FUN_00a3fb10();
    }
  }
  if (*(char *)in_EAX[1] == *param_1) {
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)in_EAX);
    cVar2 = FUN_0080d490();
    if (cVar2 != '\0') {
      return 1;
    }
    FUN_00429850();
  }
  return 0;
}



undefined4 __fastcall FUN_005ef4f0(int param_1,int *param_2)

{
  undefined4 *puVar1;
  undefined uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  char cVar9;
  undefined4 *in_EAX;
  
  iVar3 = *param_2;
  iVar4 = in_EAX[2];
  uVar5 = *(undefined4 *)(iVar4 + 4 + iVar3 * 0x24);
  uVar6 = *(undefined4 *)(iVar4 + 8 + iVar3 * 0x24);
  puVar1 = (undefined4 *)(iVar4 + iVar3 * 0x24);
  uVar7 = puVar1[3];
  uVar2 = *(undefined *)(puVar1 + 4);
  uVar8 = *puVar1;
  *puVar1 = puVar1[6];
  puVar1[1] = puVar1[7];
  puVar1[2] = *in_EAX;
  puVar1[3] = in_EAX[1];
  *(undefined *)(puVar1 + 4) = 1;
  cVar9 = FUN_005ef670(param_1 + 0x10);
  if (cVar9 != '\0') {
    return 1;
  }
  *puVar1 = uVar8;
  puVar1[1] = uVar5;
  puVar1[2] = uVar6;
  puVar1[3] = uVar7;
  *(undefined *)(puVar1 + 4) = uVar2;
  return 0;
}



undefined4 __thiscall FUN_005ef570(int *param_1_00,int *param_1)

{
  int iVar1;
  undefined uVar2;
  int iVar3;
  char cVar4;
  int *in_EAX;
  undefined4 uVar5;
  uint local_4;
  
  iVar1 = in_EAX[2] + *param_1_00 * 0x24;
  if (*(char *)(in_EAX[2] + 0x20 + *param_1_00 * 0x24) != '\0') {
    iVar3 = *(int *)(iVar1 + 0x18);
    if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *in_EAX)))) {
      FUN_00a3fb10();
    }
    if (*(int *)(iVar1 + 0x1c) == in_EAX[1]) {
      uVar5 = FUN_005ee9f0(in_EAX,*param_1 + 0x78);
      return uVar5;
    }
  }
  iVar3 = *(int *)(iVar1 + 0x18);
  uVar2 = *(undefined *)(iVar1 + 0x20);
  if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *in_EAX)))) {
    FUN_00a3fb10();
  }
  local_4 = local_4 & 0xffffff00;
  *(bool *)(iVar1 + 0x20) = *(int *)(iVar1 + 0x1c) == in_EAX[1];
  cVar4 = FUN_005ef620(param_1,local_4);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined *)(iVar1 + 0x20) = uVar2;
  return 0;
}



undefined4 FUN_005ef620(int *param_1)

{
  int iVar1;
  char cVar2;
  undefined4 uVar3;
  int unaff_EBX;
  int *unaff_EDI;
  
  iVar1 = *(int *)(unaff_EBX + 8) + *unaff_EDI * 0x24;
  if (*(uint *)(iVar1 + 0x14) < (uint)unaff_EDI[2]) {
    *(uint *)(iVar1 + 0x14) = *(uint *)(iVar1 + 0x14) + 1;
    cVar2 = FUN_005ee9d0(unaff_EBX);
    if (cVar2 != '\0') {
      return 1;
    }
    *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + -1;
    if (*(uint *)(iVar1 + 0x14) < (uint)unaff_EDI[1]) {
      return 0;
    }
  }
  uVar3 = FUN_005ee9f0(unaff_EBX,*param_1 + 0x78);
  return uVar3;
}



undefined4 __thiscall FUN_005ef670(int *param_1_00,int *param_1)

{
  int iVar1;
  undefined uVar2;
  int iVar3;
  char cVar4;
  int *in_EAX;
  uint local_4;
  
  iVar1 = in_EAX[2] + *param_1_00 * 0x24;
  if (*(char *)(in_EAX[2] + 0x20 + *param_1_00 * 0x24) != '\0') {
    iVar3 = *(int *)(iVar1 + 0x18);
    if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *in_EAX)))) {
      FUN_00a3fb10();
    }
    if (*(int *)(iVar1 + 0x1c) == in_EAX[1]) {
      cVar4 = FUN_005eee20(in_EAX,*param_1 + 0x78);
      if (cVar4 == '\0') {
        cVar4 = FUN_005e2f60();
        if (cVar4 == '\0') {
          return 0;
        }
      }
      return 1;
    }
  }
  iVar3 = *(int *)(iVar1 + 0x18);
  uVar2 = *(undefined *)(iVar1 + 0x20);
  if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *in_EAX)))) {
    FUN_00a3fb10();
  }
  local_4 = local_4 & 0xffffff00;
  *(bool *)(iVar1 + 0x20) = *(int *)(iVar1 + 0x1c) == in_EAX[1];
  cVar4 = FUN_005ef740(param_1,local_4);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined *)(iVar1 + 0x20) = uVar2;
  return 0;
}



undefined4 FUN_005ef740(int *param_1)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  int *unaff_EBX;
  
  iVar1 = *(int *)(in_EAX + 8) + *unaff_EBX * 0x24;
  if (*(uint *)(iVar1 + 0x14) < (uint)unaff_EBX[2]) {
    *(uint *)(iVar1 + 0x14) = *(uint *)(iVar1 + 0x14) + 1;
    cVar2 = FUN_005eeb50(in_EAX);
    if (cVar2 != '\0') {
      return 1;
    }
    *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + -1;
    if (*(uint *)(iVar1 + 0x14) < (uint)unaff_EBX[1]) {
      return 0;
    }
  }
  cVar2 = FUN_005eee20(in_EAX,*param_1 + 0x78);
  if (cVar2 == '\0') {
    cVar2 = FUN_005e2f60();
    if (cVar2 == '\0') {
      return 0;
    }
  }
  return 1;
}



undefined4 * __thiscall FUN_005ef7c0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::W6184F1A7::vftable;
  if (0xf < (uint)param_1_00[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[3]);
  }
  param_1_00[8] = 0xf;
  param_1_00[7] = 0;
  *(undefined *)(param_1_00 + 3) = 0;
  *param_1_00 = W6A4CD2C5::W6C89CAE2::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_005ef810(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W6A4CD2C5::W6C89CAE2::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_005ef830(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c0c748;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = WF3C48A30::WE686A6D5::vftable;
  local_4 = 0;
  if ((undefined4 *)param_1[3] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[3])(1,uVar1);
  }
  *param_1 = W6A4CD2C5::W6C89CAE2::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_005ef890(undefined4 param_1_00,byte param_1)

{
  FUN_005ef830();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_005ef8b0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::W54286D60::vftable;
  if (0xf < (uint)param_1_00[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[3]);
  }
  param_1_00[8] = 0xf;
  param_1_00[7] = 0;
  *(undefined *)(param_1_00 + 3) = 0;
  *param_1_00 = W6A4CD2C5::W6C89CAE2::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_005ef900(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::W7D0C5BC6::vftable;
  if (0xf < (uint)param_1_00[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[3]);
  }
  param_1_00[8] = 0xf;
  param_1_00[7] = 0;
  *(undefined *)(param_1_00 + 3) = 0;
  *param_1_00 = W6A4CD2C5::W6C89CAE2::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_005ef950(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::WCCCCB5AD::vftable;
  if (0xf < (uint)param_1_00[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[3]);
  }
  param_1_00[8] = 0xf;
  param_1_00[7] = 0;
  *(undefined *)(param_1_00 + 3) = 0;
  *param_1_00 = W6A4CD2C5::W6C89CAE2::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_005ef9a0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::WDD4DE097::vftable;
  if (0xf < (uint)param_1_00[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[3]);
  }
  param_1_00[8] = 0xf;
  param_1_00[7] = 0;
  *(undefined *)(param_1_00 + 3) = 0;
  *param_1_00 = W6A4CD2C5::W6C89CAE2::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_005ef9f0(undefined4 *param_1)

{
  *param_1 = WF3C48A30::WA4F624B9::vftable;
  if (0xf < (uint)param_1[0xf]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[10]);
  }
  param_1[0xf] = 0xf;
  param_1[0xe] = 0;
  *(undefined *)(param_1 + 10) = 0;
  if (0xf < (uint)param_1[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[7] = 0;
  param_1[8] = 0xf;
  *(undefined *)(param_1 + 3) = 0;
  *param_1 = W6A4CD2C5::W6C89CAE2::vftable;
  return;
}



undefined4 __thiscall FUN_005efa50(undefined4 param_1_00,byte param_1)

{
  FUN_005ef9f0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_005efa70(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF3C48A30::W1641FB3A::vftable;
  if (0xf < (uint)param_1_00[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[3]);
  }
  param_1_00[8] = 0xf;
  param_1_00[7] = 0;
  *(undefined *)(param_1_00 + 3) = 0;
  *param_1_00 = W6A4CD2C5::W6C89CAE2::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005efb1d(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_005f0960(param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_005eff2c(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005efe19(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5efe25;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W55AE0820::W61FD6EFA::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W55AE0820::W61FD6EFA::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_005eff15(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005eff2c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W55AE0820::W61FD6EFA>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005eff72(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005eff89(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W55AE0820::WB30CD3B4>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005effcf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x005f00c3)

undefined4 * FUN_005f004d(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x3c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_005f04dc();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f03c9(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5f03d5;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W55AE0820::WAB73E4BD::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W55AE0820::WAB73E4BD::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_005f04c5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f04dc(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W55AE0820::WAB73E4BD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f0522(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f0539(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W55AE0820::W89D26BA8>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f057f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f0596(void)

{
  undefined uVar1;
  undefined *extraout_ECX;
  undefined4 **local_44;
  undefined4 **local_40;
  undefined local_2c [4];
  undefined *local_28;
  int *local_24 [2];
  int *local_1c;
  undefined4 local_18;
  int **local_14;
  undefined local_8;
  undefined3 uStack_7;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_1c = (int *)0x0;
  local_18 = 0;
  local_40 = (undefined4 **)&stack0x00000004;
  local_44 = local_24;
  local_8 = 1;
  uStack_7 = 0;
  FUN_004c7589();
  local_8 = 2;
  uVar1 = local_8;
  local_8 = 2;
  if (local_24[0] != (int *)0x0) {
    local_40 = (undefined4 **)local_2c;
    local_44 = (undefined4 **)local_24[0];
    FUN_004f5f9d();
    local_40 = &local_1c;
    local_8 = 3;
    local_44 = (undefined4 **)0x5f05e6;
    FUN_005d11c9();
    local_8 = 2;
    local_40 = (undefined4 **)local_28;
    uVar1 = local_8;
    if (local_28 != (undefined *)0x0) {
      local_40 = (undefined4 **)0x5f05f6;
      FUN_0040127a();
      local_40 = (undefined4 **)extraout_ECX;
      uVar1 = local_8;
    }
  }
  local_8 = uVar1;
  local_14 = (int **)&local_44;
  local_44 = (undefined4 **)local_1c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



undefined4 __thiscall FUN_005f0770(undefined4 param_1_00,byte param_1)

{
  FUN_004f8d32(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005f07ef(void)

{
  undefined4 unaff_EDI;
  
  FUN_005f088e(&LAB_005f095b,unaff_EDI);
  FUN_007b1d6b(unaff_EDI);
  FUN_005f088e(&LAB_00686466,unaff_EDI);
  FUN_007b1d6b(unaff_EDI);
  return;
}



undefined4 FUN_005f0832(undefined4 param_1)

{
  FUN_00bbf8f4(param_1);
  return param_1;
}



void FUN_005f085d(void)

{
  undefined auStack_18 [4];
  undefined4 uStack_14;
  
  FUN_00bbf8f4(auStack_18);
  FUN_007b7255();
  uStack_14 = 0x5f0889;
  FUN_00bbf7c1();
  return;
}



void FUN_005f088e(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_026b8365;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_005f08d7(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_005f0912(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W55AE0820::WE48EA799>,class_boost::_bi::list1<class_boost::_bi::value<class_W55AE0820::WE48EA799*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_005f0912(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W55AE0820::WE48EA799>,class_boost::_bi::list1<class_boost::_bi::value<class_W55AE0820::WE48EA799*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W55AE0820::WE48EA799>,class_boost::_bi::list1<class_boost::_bi::value<class_W55AE0820::WE48EA799*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f0960(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *unaff_EBX;
  undefined4 uStack_cc;
  undefined4 uStack_c8;
  undefined *puStack_c4;
  undefined *puStack_c0;
  undefined local_ac [96];
  undefined4 local_4c;
  undefined4 local_48 [2];
  undefined local_3c [8];
  undefined local_34 [8];
  undefined **local_2c;
  undefined4 *local_28;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_48;
  local_48[0] = 0x58;
  local_4c = 0x5f097e;
  local_2c = (undefined **)param_1;
  puStack_c0 = (undefined *)0x5f098e;
  FUN_007b3730();
  *unaff_EBX = W55AE0820::W61FD6EFA::vftable;
  unaff_EBX[7] = 0;
  unaff_EBX[8] = 0;
  local_4c._0_1_ = 1;
  local_4c._1_3_ = 0;
  puStack_c0 = (undefined *)local_2c;
  puStack_c4 = local_ac;
  uStack_c8 = 0x5f09b1;
  FUN_007d661f();
  local_4c._0_1_ = 2;
  puStack_c0 = (undefined *)0x5f09c0;
  FUN_007d7797();
  puStack_c0 = local_34;
  local_4c._0_1_ = 3;
  puStack_c4 = (undefined *)0x5f09cd;
  FUN_007b4336();
  local_2c = &puStack_c4;
  puStack_c4 = (undefined *)0x0;
  puStack_c0 = (undefined *)0x0;
  local_28 = &uStack_cc;
  local_4c._0_1_ = 5;
  uStack_cc = 0xa0c;
  uStack_c8 = 0xce;
  puVar1 = (undefined4 *)FUN_00465be3(local_3c);
  local_28 = &uStack_cc;
  local_4c = CONCAT31(local_4c._1_3_,6);
  uStack_cc = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 __fastcall FUN_005f0aea(undefined4 param_1)

{
  int in_EAX;
  
  FUN_007b3609(*(undefined4 *)(in_EAX + 0x1c));
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_005f0bb7(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0xf8) != 0) {
    FUN_0040127a();
  }
  FUN_004f8d32(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005f0c0c(void)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 uStack_358;
  int **ppiStack_354;
  undefined4 *puStack_350;
  int **ppiStack_34c;
  undefined4 *****pppppuStack_348;
  uint uStack_32c;
  undefined2 local_328;
  undefined2 local_326;
  undefined4 uStack_324;
  int iStack_320;
  undefined4 local_31c;
  undefined4 local_318;
  undefined4 uStack_314;
  undefined4 *puStack_310;
  int *piStack_30c;
  int iStack_308;
  int iStack_300;
  int *piStack_2fc;
  int local_2f8;
  undefined auStack_2ec [12];
  int iStack_2e0;
  int *apiStack_2dc [3];
  int iStack_2d0;
  int iStack_298;
  undefined auStack_294 [68];
  int iStack_250;
  int aiStack_248 [41];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_1a4 [68];
  undefined auStack_160 [12];
  int iStack_154;
  int local_150;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_134 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_118 [20];
  undefined auStack_104 [4];
  undefined4 *****apppppuStack_100 [5];
  uint uStack_ec;
  undefined auStack_cc [172];
  undefined uStack_20;
  undefined4 local_1c;
  undefined4 local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c335b1;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&uStack_32c;
  ExceptionList = &local_14;
  FUN_005f0aea();
  local_c = 0;
  pppppuStack_348 = (undefined4 *****)0x5f0c80;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_134,&DAT_00de0930,0x16);
  local_c._0_1_ = 1;
  local_328 = 0xc935;
  local_326 = 0x7a3d;
  pppppuStack_348 = (undefined4 *****)0x5f0cb0;
  FUN_00b94330();
  local_c._0_1_ = 3;
  pppppuStack_348 = (undefined4 *****)0x5f0cc6;
  FUN_004017b2();
  pppppuStack_348 = (undefined4 *****)0x5f0cd9;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_118,&DAT_00de0948,0x16);
  local_c._0_1_ = 4;
  local_328 = 0xd7cc;
  local_326 = 0xa175;
  pppppuStack_348 = (undefined4 *****)0x5f0d07;
  FUN_00b94330();
  local_c._0_1_ = 6;
  pppppuStack_348 = (undefined4 *****)0x5f0d1d;
  FUN_004017b2();
  pppppuStack_348 = (undefined4 *****)0x5f0d30;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_134,&DAT_00de0960,0x16);
  local_c._0_1_ = 7;
  local_328 = 0xb802;
  local_326 = 0xf22a;
  pppppuStack_348 = (undefined4 *****)0x5f0d5e;
  FUN_00b94330();
  local_c._0_1_ = 9;
  pppppuStack_348 = (undefined4 *****)0x5f0d74;
  FUN_004017b2();
  pppppuStack_348 = (undefined4 *****)0x5f0d87;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_118,&DAT_00de0978,0x16);
  local_c._0_1_ = 10;
  local_328 = 0xfd04;
  local_326 = 0x9db7;
  pppppuStack_348 = (undefined4 *****)0x5f0db5;
  FUN_00b94330();
  local_c._0_1_ = 0xc;
  pppppuStack_348 = (undefined4 *****)0x5f0dcb;
  FUN_004017b2();
  pppppuStack_348 = (undefined4 *****)0x5f0dde;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_1a4,&DAT_00de0990,4);
  local_c._0_1_ = 0xd;
  local_328 = 0xcac1;
  local_326 = 0x4530;
  pppppuStack_348 = (undefined4 *****)0x5f0e0c;
  FUN_00b94330();
  local_c._0_1_ = 0xf;
  pppppuStack_348 = (undefined4 *****)0x5f0e22;
  FUN_004017b2();
  FUN_004382a5();
  local_c._0_1_ = 0x10;
  basic_string<>();
  local_c._0_1_ = 0x11;
  pppppuStack_348 = (undefined4 *****)0x5f0e63;
  basic_string<>();
  local_c._0_1_ = 0x12;
  local_31c = 0x7730ea79;
  local_318 = 0x465dcfc4;
  pppppuStack_348 = (undefined4 *****)0x5f0e8d;
  FUN_00b94470();
  local_c._0_1_ = 0x13;
  FUN_0040e5f4();
  pppppuStack_348 = (undefined4 *****)0x5f0eb3;
  FUN_00401829();
  local_c._0_1_ = 0x11;
  pppppuStack_348 = (undefined4 *****)0x5f0eca;
  FUN_00401829();
  FUN_00494d84();
  local_c = CONCAT31(local_c._1_3_,0x14);
  *(undefined4 *)((int)aiStack_248 + *(int *)(aiStack_248[2] + 4) + 0x14) = 0;
  pppppuStack_348 = (undefined4 *****)0x5f0efd;
  FUN_00417a55();
  FUN_00494e0b();
  pppppuStack_348 = (undefined4 *****)0x5f0f3b;
  pppppuStack_348 = (undefined4 *****)(**(code **)(**(int **)(local_2f8 + 4) + 0x44))();
  ppiStack_34c = &piStack_2fc;
  local_14._0_1_ = 0x15;
  puStack_350 = (undefined4 *)0x5f0f4e;
  FUN_005f1c2f();
  local_14 = (void *)CONCAT31(local_14._1_3_,0x17);
  if (iStack_2d0 != 0) {
    pppppuStack_348 = (undefined4 *****)0x5f0f65;
    FUN_0040127a();
  }
  if ((*(int *)((int)aiStack_248 + *(int *)(aiStack_248[0] + 4) + 8) == 0) &&
     (piStack_2fc != (int *)0x0)) {
    pppppuStack_348 = (undefined4 *****)auStack_2ec;
    ppiStack_34c = (int **)0x5f0f97;
    (**(code **)(piStack_2fc[1] + 4))();
    uStack_32c = 0;
    iVar3 = (int)apiStack_2dc[0] - iStack_2e0 >> 3;
    if (iVar3 != 0) {
      if (iVar3 == 0) {
        pppppuStack_348 = (undefined4 *****)0x5f0fb7;
        FUN_00a3fb10();
      }
      do {
        pppppuStack_348 = (undefined4 *****)(iStack_2e0 + uStack_32c * 8);
        ppiStack_34c = &piStack_30c;
        puStack_350 = (undefined4 *)0x5f0fcd;
        FUN_004c7589();
        local_14._0_1_ = 0x18;
        if (piStack_30c != (int *)0x0) {
          pppppuStack_348 = (undefined4 *****)0x5f0fe8;
          cVar2 = (**(code **)(*piStack_30c + 4))();
          if (cVar2 != '\0') {
            uStack_314 = 0;
            puStack_310 = (undefined4 *)0x0;
            pppppuStack_348 = (undefined4 *****)&uStack_324;
            local_14._0_1_ = 0x19;
            ppiStack_34c = (int **)piStack_30c;
            puStack_350 = (undefined4 *)0x5f100e;
            FUN_004f5f9d();
            pppppuStack_348 = (undefined4 *****)&uStack_314;
            local_14._0_1_ = 0x1a;
            ppiStack_34c = (int **)0x5f1020;
            FUN_005d11c9();
            local_14._0_1_ = 0x19;
            if (iStack_320 != 0) {
              pppppuStack_348 = (undefined4 *****)0x5f1035;
              FUN_0040127a();
            }
            pppppuStack_348 = (undefined4 *****)0x5f1045;
            FUN_004c4cf8();
            local_14._0_1_ = 0x1b;
            ppiStack_34c = (int **)0x5f105f;
            pppppuStack_348 = (undefined4 *****)auStack_104;
            FUN_005f1ce5();
            ppiStack_34c = (int **)0x5f106f;
            pppppuStack_348 = (undefined4 *****)auStack_104;
            pppppuStack_348 = (undefined4 *****)FUN_00ba83f0();
            ppiStack_34c = (int **)aiStack_248;
            local_14._0_1_ = 0x1c;
            puStack_350 = (undefined4 *)0x5f1086;
            puStack_350 = (undefined4 *)FUN_004f49f1();
            ppiStack_354 = (int **)0x5f108c;
            FUN_005f20c3();
            pppppuStack_348 = (undefined4 *****)0x0;
            ppiStack_34c = (int **)0x1;
            puStack_350 = (undefined4 *)0x5f1099;
            FUN_004017b2();
            pppppuStack_348 = (undefined4 *****)0x0;
            ppiStack_34c = (int **)0x1;
            puStack_350 = (undefined4 *)0x5f10a8;
            FUN_00401829();
            local_14._0_1_ = 0x18;
            if (puStack_310 != (undefined4 *)0x0) {
              pppppuStack_348 = (undefined4 *****)0x5f10bd;
              FUN_0040127a();
            }
          }
        }
        local_14 = (void *)CONCAT31(local_14._1_3_,0x17);
        if (iStack_308 != 0) {
          pppppuStack_348 = (undefined4 *****)0x5f10d2;
          FUN_0040127a();
        }
        uStack_32c = uStack_32c + 1;
      } while (uStack_32c < (uint)((int)apiStack_2dc[0] - iStack_2e0 >> 3));
    }
  }
  local_14._0_1_ = 0x14;
  if (local_2f8 != 0) {
    pppppuStack_348 = (undefined4 *****)0x5f1100;
    FUN_0040127a();
  }
  local_14._0_1_ = 0x11;
  pppppuStack_348 = (undefined4 *****)0x5f1114;
  FUN_0043e360();
  pppppuStack_348 = (undefined4 *****)0x0;
  ppiStack_34c = (int **)0x1;
  local_14._0_1_ = 0x10;
  puStack_350 = (undefined4 *)0x5f112b;
  FUN_00401829();
  pppppuStack_348 = (undefined4 *****)auStack_cc;
  ppiStack_34c = (int **)0x5f113f;
  basic_string<>();
  pppppuStack_348 = (undefined4 *****)0x1c;
  ppiStack_34c = (int **)&DAT_00de09d4;
  local_14._0_1_ = 0x1d;
  puStack_350 = (undefined4 *)0x5f115a;
  pppppuStack_348 = (undefined4 *****)basic_string<>();
  ppiStack_34c = (int **)&uStack_324;
  local_14._0_1_ = 0x1e;
  uStack_324 = 0x5604e6b1;
  iStack_320 = 0x717e61c7;
  puStack_350 = (undefined4 *)0x5f1184;
  pppppuStack_348 = (undefined4 *****)FUN_00b94470();
  local_14._0_1_ = 0x1f;
  ppiStack_34c = (int **)0x5f1199;
  FUN_0040e5f4();
  pppppuStack_348 = (undefined4 *****)0x0;
  ppiStack_34c = (int **)0x1;
  puStack_350 = (undefined4 *)0x5f11aa;
  FUN_00401829();
  pppppuStack_348 = (undefined4 *****)0x0;
  ppiStack_34c = (int **)0x1;
  local_14._0_1_ = 0x1d;
  puStack_350 = (undefined4 *)0x5f11c1;
  FUN_00401829();
  pppppuStack_348 = (undefined4 *****)aiStack_248;
  ppiStack_34c = (int **)0x5f11ce;
  FUN_00494d84();
  local_14 = (void *)CONCAT31(local_14._1_3_,0x20);
  ppiStack_34c = *(int ***)((int)aiStack_248 + *(int *)(aiStack_248[0] + 4) + 8);
  pppppuStack_348 = (undefined4 *****)0x0;
  *(undefined4 *)((int)aiStack_248 + *(int *)(aiStack_248[0] + 4) + 0xc) = 0;
  puStack_350 = (undefined4 *)0x5f11f4;
  FUN_00417a55();
  if (uStack_ec < 8) {
    apppppuStack_100[0] = apppppuStack_100;
  }
  ppiStack_34c = (int **)0x5f121c;
  pppppuStack_348 = apppppuStack_100[0];
  FUN_00494e0b();
  pppppuStack_348 = (undefined4 *****)0xc488350;
  ppiStack_34c = (int **)auStack_294;
  puStack_350 = (undefined4 *)0x5f1235;
  puStack_350 = (undefined4 *)(**(code **)(**(int **)(iStack_300 + 4) + 0x44))();
  ppiStack_354 = apiStack_2dc;
  local_1c._0_1_ = 0x21;
  uStack_358 = 0x5f1248;
  FUN_005f1d3d();
  local_1c._0_1_ = 0x23;
  if (iStack_298 != 0) {
    puStack_350 = (undefined4 *)0x5f1262;
    FUN_0040127a();
  }
  puStack_350 = (undefined4 *)auStack_160;
  ppiStack_354 = (int **)0x5f126f;
  FUN_004382a5();
  piVar1 = apiStack_2dc[0];
  if ((*(int *)((int)aiStack_248 + *(int *)(iStack_250 + 4)) == 0) &&
     (apiStack_2dc[0] != (int *)0x0)) {
    ppiStack_354 = (int **)0x0;
    puStack_350 = (undefined4 *)0x0;
    local_1c._0_1_ = 0x25;
    FUN_0040e651();
    local_1c._0_1_ = 0x24;
    (**(code **)(*piVar1 + 8))(auStack_160);
    if (local_150 - iStack_154 >> 3 != 0) {
      puStack_350 = (undefined4 *)0x5f1301;
      puStack_350 = (undefined4 *)FUN_00436b17();
      local_31c = *puStack_350;
      puStack_350 = puStack_350 + 1;
                    // WARNING: Subroutine does not return
      ppiStack_354 = (int **)&UNK_005f1314;
      FUN_0043c023();
    }
  }
  puStack_350 = (undefined4 *)auStack_160;
  local_1c = CONCAT31(local_1c._1_3_,0x23);
  ppiStack_354 = (int **)0x5f1ab5;
  FUN_00436aef();
  uStack_20 = 0x20;
  if (apiStack_2dc[0] != (int *)0x0) {
    ppiStack_354 = (int **)0x5f1aca;
    FUN_0040127a();
  }
  uStack_20 = 0x1d;
  ppiStack_354 = (int **)0x5f1ade;
  FUN_0043e360();
  ppiStack_354 = (int **)0x0;
  uStack_358 = 1;
  uStack_20 = 0x10;
  FUN_00401829();
  puStack_310 = &uStack_358;
  uStack_358 = 0xa0c;
  ppiStack_354 = (int **)0x2;
  puVar4 = (undefined4 *)FUN_00465be3();
  puStack_310 = &uStack_358;
  uStack_20 = 0x3e;
  uStack_358 = *puVar4;
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f1c2f(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5f1c3b;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WDE765622::WE13D998E::RTTI_Type_Descriptor,
                   &WDE765622::W5384348F::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WDE765622::WE13D998E::RTTI_Type_Descriptor,
                           &WDE765622::W5384348F::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void __thiscall FUN_005f1ce5(short *param_1_00,undefined4 param_1)

{
  short sVar1;
  short *in_EAX;
  short *psVar2;
  
  do {
    sVar1 = *in_EAX;
    in_EAX = in_EAX + 1;
  } while (sVar1 != 0);
  psVar2 = param_1_00;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  FUN_005f1df3(param_1,param_1_00,param_1_00 + ((int)psVar2 - (int)(param_1_00 + 1) >> 1));
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f1d3d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5f1d49;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WDE765622::WE13D998E::RTTI_Type_Descriptor,
                   &WDE765622::WCF50B1B0::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WDE765622::WE13D998E::RTTI_Type_Descriptor,
                           &WDE765622::WCF50B1B0::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_005f1df3(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  char cVar6;
  undefined4 *puVar7;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_00412721(&local_c);
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            (param_1,&local_18);
  puVar7 = (undefined4 *)FUN_004760e5(&param_2,local_18,local_14,local_c,local_8);
  uVar5 = param_5;
  uVar1 = *puVar7;
  uVar2 = puVar7[1];
  uVar3 = puVar7[2];
  uVar4 = puVar7[3];
  local_10 = param_2;
  local_c = param_3;
  local_14 = param_6;
  local_8 = param_4;
  cVar6 = FUN_004761e2();
  if (cVar6 != '\0') {
    FUN_005f1e82(local_10,local_c,local_8,uVar5,local_14,uVar1,uVar2,uVar3,uVar4,uVar5,local_14);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_005f1e82(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *puVar5;
  undefined4 param_4;
  undefined4 param_5;
  undefined4 param_6;
  undefined4 param_7;
  undefined4 param_8;
  uint param_9;
  undefined4 param_10;
  undefined4 param_11;
  undefined4 local_90 [6];
  uint local_78;
  int local_74;
  undefined4 local_70;
  undefined4 local_6c;
  undefined4 local_68;
  uint local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 *local_58;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  uint local_38;
  undefined local_34 [8];
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  uint local_20;
  undefined4 local_1c;
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x80;
  local_8 = 0x5f1e91;
  local_70 = param_6;
  local_6c = param_7;
  local_68 = param_8;
  local_64 = param_9;
  local_60 = param_10;
  local_5c = param_11;
  local_58 = &stack0x00000010;
  FUN_00467a19();
  local_8 = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            ();
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            ();
  while( true ) {
    cVar4 = FUN_008477d0(&local_68);
    if (cVar4 == '\0') break;
    puVar5 = (undefined4 *)FUN_00476507(local_1c,local_18,local_24,local_20,local_70,local_6c);
    uVar2 = local_68;
    local_1c = *puVar5;
    local_18 = puVar5[1];
    local_20 = local_64;
    uVar1 = local_74 + local_78;
    local_24 = local_68;
    if (uVar1 < local_78) {
      FUN_00a3fb10();
    }
    FUN_00476956(local_90,local_60,local_5c,param_11,local_90[0],uVar1);
    FUN_00412721(&local_2c);
    puVar5 = (undefined4 *)FUN_004760e5(&stack0x00000004,uVar2,local_64,local_2c,local_28);
    local_70 = *puVar5;
    local_6c = puVar5[1];
    local_68 = puVar5[2];
    local_64 = puVar5[3];
    local_44 = local_70;
    local_40 = local_6c;
    local_3c = local_68;
    local_38 = local_64;
    cVar4 = FUN_00412797(&local_68);
    if (cVar4 == '\0') {
      local_60 = param_4;
      local_5c = param_5;
    }
  }
  FUN_00412721(&local_2c);
  puVar5 = (undefined4 *)FUN_00476507(local_1c,local_18,local_24,local_20,local_2c,local_28);
  uVar2 = *puVar5;
  uVar3 = puVar5[1];
  if (local_74 == 0) {
    FUN_00412721(&local_2c);
    FUN_004320f0(local_34,uVar2,uVar3,local_2c,local_28);
  }
  else {
    local_18 = local_74 + local_78;
    if (local_18 < local_78) {
      FUN_00a3fb10();
    }
    local_20 = local_78;
    if (local_74 + local_78 < local_78) {
      FUN_00a3fb10();
    }
    FUN_00412721(&local_2c);
    FUN_0047657f();
  }
  FUN_005f489f();
  return;
}



undefined4 FUN_005f20c3(undefined4 param_1)

{
  FUN_005e3200(10);
  FUN_00425840();
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f21fa(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WDE765622::W0BF0A4A8>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f2240(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005f2257(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WDE765622::W0BF0A4A8::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_005f21fa(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_005f295c(void)

{
  undefined4 *puVar1;
  int *unaff_EBX;
  undefined local_24 [16];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  puVar1 = (undefined4 *)FUN_004197ef(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  return;
}



undefined __fastcall FUN_005f2986(int param_1)

{
  undefined4 uVar1;
  undefined4 extraout_ECX;
  undefined local_b9;
  uint local_b8;
  undefined local_b4 [28];
  undefined local_98 [132];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4b411;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if ((*(int *)(param_1 + 0x18) == 0) || (*(int *)(param_1 + 0x54) == 0)) {
    local_b9 = 0;
    FUN_00b940e0(0x9b22e426,DAT_0323f878 ^ (uint)&stack0xffffff38);
  }
  else {
    local_b9 = 1;
    FUN_00449269(local_98);
    local_c = 0;
    FUN_0040e327(local_98,param_1 + 4);
    uVar1 = FUN_00496342(local_b4);
    local_c._0_1_ = 1;
    uVar1 = FUN_004266f0(local_98,extraout_ECX,uVar1);
    FUN_0040e327(uVar1);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00401829(1,0);
    local_b8 = 0;
    if ((*(int *)(param_1 + 0x6c) - *(int *)(param_1 + 0x68)) / 0x1c != 0) {
      do {
        FUN_0040e4a0(local_98,&DAT_00fb04cc);
        uVar1 = FUN_0042b490(local_b8);
        FUN_0040e327(local_98,uVar1);
        local_b8 = local_b8 + 1;
      } while (local_b8 < (uint)((*(int *)(param_1 + 0x6c) - *(int *)(param_1 + 0x68)) / 0x1c));
    }
    uVar1 = FUN_004266f0(local_98,0x1c,param_1 + 0x40);
    FUN_0040e327(uVar1);
    uVar1 = FUN_004491d9();
    local_c = CONCAT31(local_c._1_3_,2);
    FID_conflict_assign(uVar1,0,0xffffffff);
    FUN_00401829(1,0);
    local_c = 0xffffffff;
    FUN_0044922e();
  }
  ExceptionList = local_14;
  return local_b9;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_005f2bed(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x10c) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0xf8) != 0) {
    FUN_0040127a();
  }
  FUN_004f8d32(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f2c48(void)

{
  code **ppcVar1;
  code *local_a0;
  undefined auStack_98 [24];
  undefined4 uStack_80;
  undefined *puStack_7c;
  undefined local_40 [36];
  code **local_1c;
  undefined *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x58;
  local_8 = 0x5f2c54;
  local_14 = 0;
  puStack_7c = local_40;
  uStack_80 = 0x5f2c61;
  FUN_00507ed8();
  local_18 = auStack_98;
  local_8 = 1;
  local_a0 = FUN_00443ba1;
  FUN_005f3faf();
  local_8 = CONCAT31(local_8._1_3_,2);
  local_a0 = (code *)0x5f2c89;
  ppcVar1 = (code **)FUN_005f51cb();
  local_a0 = *ppcVar1;
  local_1c = &local_a0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(ppcVar1 + 1);
}



char FUN_005f2ea0(void)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0x74b32512;
  }
  else {
    FUN_005f2c48(local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0x8dbec1e0;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



void FUN_005f2f49(void)

{
  undefined4 *puVar1;
  undefined4 local_53c;
  undefined4 local_538;
  uint uStack_534;
  undefined4 *local_524 [3];
  undefined local_518 [1276];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5bbbd;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_524;
  uStack_534 = DAT_0323f878 ^ (uint)&stack0xfffffad0;
  ExceptionList = &local_14;
  local_524[0] = &local_53c;
  local_53c = 0xa0c;
  local_538 = 0x104;
  puVar1 = (undefined4 *)FUN_00465be3(local_518);
  local_c = 0;
  local_53c = *puVar1;
  local_524[0] = &local_53c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void thunk_FUN_004488fd(void)

{
  int unaff_EDI;
  
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EDI + 0x5c));
}



void FUN_005f3f8f(void)

{
  FUN_005f509c();
  FUN_005f5072();
  FUN_005f295c();
  FUN_005f5048();
  FUN_005f4fe2();
  return;
}



void FUN_005f3faf(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_026b8451;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_005f3ff8(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 auStack_4c [4];
  undefined4 uStack_3c;
  uint uStack_38;
  undefined4 local_2c [9];
  uint local_8;
  
  uStack_38 = param_2;
  local_8 = local_8 & 0xffffff00;
  uStack_3c = 0x5f4011;
  puVar1 = (undefined4 *)FUN_005f421b();
  uStack_38 = local_8;
  local_2c[0] = *puVar1;
  local_2c[1] = puVar1[1];
  local_2c[2] = puVar1[2];
  local_2c[3] = puVar1[3];
  puVar1 = local_2c;
  puVar3 = auStack_4c;
  for (iVar2 = 5; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar3 = *puVar1;
    puVar1 = puVar1 + 1;
    puVar3 = puVar3 + 1;
  }
  FUN_005f40a8(param_1);
  return;
}



void FUN_005f4048(undefined4 param_1)

{
  char cVar1;
  char *pcVar2;
  char *pcVar3;
  
  pcVar2 = "\r\n";
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  pcVar2 = "\n";
  do {
    pcVar3 = pcVar2;
    pcVar2 = pcVar3 + 1;
  } while (*pcVar3 != '\0');
  FUN_005f4131(param_1,&DAT_00de0928,pcVar3);
  return;
}



void FUN_005f40a8(undefined4 param_1)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined param_7;
  undefined4 auStack_84 [5];
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 local_50 [9];
  undefined4 local_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 local_c;
  
  uStack_5c = 0x5f40bb;
  puVar2 = (undefined4 *)FUN_00428780();
  uStack_5c = 0x5f40c8;
  puVar3 = (undefined4 *)FUN_00428750();
  uStack_5c = puVar2[1];
  uStack_60 = *puVar2;
  uStack_64 = puVar3[1];
  uStack_68 = *puVar3;
  uStack_6c = 0x5f40dd;
  puVar2 = (undefined4 *)FUN_005f4251();
  local_2c = *puVar2;
  uStack_28 = puVar2[1];
  uStack_24 = puVar2[2];
  uStack_20 = puVar2[3];
  local_c = CONCAT31(local_c._1_3_,param_7);
  puVar2 = (undefined4 *)&stack0x00000008;
  puVar3 = local_50;
  for (iVar4 = 5; iVar4 != 0; iVar4 = iVar4 + -1) {
    *puVar3 = *puVar2;
    puVar2 = puVar2 + 1;
    puVar3 = puVar3 + 1;
  }
  uStack_5c = 0x5f40ff;
  cVar1 = FUN_005f44c0();
  if (cVar1 != '\0') {
    uStack_6c = _param_7;
    uStack_70 = local_c;
    uStack_68 = local_2c;
    uStack_64 = uStack_28;
    uStack_60 = uStack_24;
    uStack_5c = uStack_20;
    puVar2 = local_50;
    puVar3 = auStack_84;
    for (iVar4 = 5; iVar4 != 0; iVar4 = iVar4 + -1) {
      *puVar3 = *puVar2;
      puVar2 = puVar2 + 1;
      puVar3 = puVar3 + 1;
    }
    FUN_005f44f4(param_1);
  }
  return;
}



void FUN_005f4131(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  char cVar10;
  undefined4 *puVar11;
  undefined4 *puVar12;
  
  puVar11 = (undefined4 *)FUN_00428780();
  puVar12 = (undefined4 *)FUN_00428750();
  puVar11 = (undefined4 *)FUN_005f437a(&param_2,*puVar12,puVar12[1],*puVar11,puVar11[1]);
  uVar9 = param_6;
  uVar8 = param_5;
  uVar7 = param_4;
  uVar6 = param_3;
  uVar5 = param_2;
  uVar1 = *puVar11;
  uVar2 = puVar11[1];
  uVar3 = puVar11[2];
  uVar4 = puVar11[3];
  cVar10 = FUN_005f44c0();
  if (cVar10 != '\0') {
    FUN_005f46b7(uVar5,uVar6,uVar7,uVar8,uVar9,uVar1,uVar2,uVar3,uVar4,uVar8,uVar9);
  }
  return;
}



void Catch_All_005f4204(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005f421b(void)

{
  undefined4 *puVar1;
  undefined4 *unaff_EDI;
  
  puVar1 = (undefined4 *)FUN_00428750();
  *unaff_EDI = *puVar1;
  unaff_EDI[1] = puVar1[1];
  puVar1 = (undefined4 *)FUN_00428780();
  unaff_EDI[2] = *puVar1;
  unaff_EDI[3] = puVar1[1];
  return;
}



void FUN_005f4251(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  char *pcVar2;
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  char *local_8;
  
  local_10 = param_1;
  local_c = param_2;
  cVar1 = FUN_008477d0(&param_3);
  while (cVar1 != '\0') {
    local_28 = unaff_EDI[2];
    local_24 = unaff_EDI[3];
    local_30 = *unaff_EDI;
    local_2c = unaff_EDI[1];
    cVar1 = FUN_008477a0(&local_28);
    if (cVar1 != '\0') break;
    local_18 = local_10;
    local_20 = *unaff_EDI;
    local_1c = unaff_EDI[1];
    local_14 = param_2;
    while (cVar1 = FUN_008477d0(&param_3), cVar1 != '\0') {
      local_38 = unaff_EDI[2];
      local_34 = unaff_EDI[3];
      cVar1 = FUN_008477d0(&local_38);
      if (cVar1 == '\0') break;
      local_8 = std::
                _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                             *)&local_18);
      pcVar2 = std::
               _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
               ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                            *)&local_20);
      if (*local_8 != *pcVar2) break;
      std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *)&local_18);
      std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *)&local_20);
    }
    local_40 = unaff_EDI[2];
    local_3c = unaff_EDI[3];
    cVar1 = FUN_008477a0(&local_40);
    if (cVar1 != '\0') {
      *unaff_ESI = local_10;
      unaff_ESI[2] = local_18;
      unaff_ESI[1] = param_2;
      unaff_ESI[3] = local_14;
      return;
    }
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)&local_10);
    cVar1 = FUN_008477d0(&param_3);
    param_2 = local_c;
  }
  *unaff_ESI = param_3;
  unaff_ESI[2] = param_3;
  unaff_ESI[3] = param_4;
  unaff_ESI[1] = param_4;
  return;
}



void FUN_005f437a(char **param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  char cVar1;
  char *pcVar2;
  undefined4 *unaff_ESI;
  char *pcVar3;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  local_10 = param_2;
  local_c = param_3;
  cVar1 = FUN_008477d0(&param_4);
  local_18 = local_10;
  while( true ) {
    if ((cVar1 == '\0') ||
       (pcVar3 = *param_1, local_14 = param_3, local_10 = local_18, pcVar3 == param_1[1])) {
      *unaff_ESI = param_4;
      unaff_ESI[2] = param_4;
      unaff_ESI[3] = param_5;
      unaff_ESI[1] = param_5;
      return;
    }
    for (; ((cVar1 = FUN_008477d0(&param_4), cVar1 != '\0' && (pcVar3 != param_1[1])) &&
           (pcVar2 = std::
                     _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                     ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                                  *)&local_18), *pcVar2 == *pcVar3)); pcVar3 = pcVar3 + 1) {
      std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *)&local_18);
    }
    if (pcVar3 == param_1[1]) break;
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)&local_10);
    cVar1 = FUN_008477d0(&param_4);
    local_18 = local_10;
    param_3 = local_c;
  }
  *unaff_ESI = local_10;
  unaff_ESI[2] = local_18;
  unaff_ESI[1] = param_3;
  unaff_ESI[3] = local_14;
  return;
}



void FUN_005f443c(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_005f4477(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W55AE0820::W89D26BA8,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W55AE0820::W89D26BA8*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_005f4477(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W55AE0820::W89D26BA8,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W55AE0820::W89D26BA8*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W55AE0820::W89D26BA8,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W55AE0820::W89D26BA8*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



bool FUN_005f44c0(void)

{
  char cVar1;
  int in_EAX;
  undefined4 local_c;
  undefined4 local_8;
  
  local_c = *(undefined4 *)(in_EAX + 8);
  local_8 = *(undefined4 *)(in_EAX + 0xc);
  cVar1 = FUN_008477a0(&local_c);
  return cVar1 == '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_005f44f4(undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  char cVar3;
  undefined4 *puVar4;
  undefined4 param_9;
  undefined4 param_10;
  undefined4 in_stack_0000002c;
  uint param_11;
  undefined4 local_8c [6];
  uint local_74;
  int local_70;
  undefined4 local_6c;
  undefined4 local_68;
  undefined4 local_64;
  uint local_60;
  undefined *local_58;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  uint local_38;
  undefined4 local_2c;
  uint local_28;
  undefined4 local_24;
  uint local_20;
  undefined4 local_1c;
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x7c;
  local_8 = 0x5f4500;
  local_6c = param_9;
  local_68 = param_10;
  local_64 = in_stack_0000002c;
  local_60 = param_11;
  local_58 = &stack0x0000001c;
  FUN_00467a19();
  local_8 = 0;
  FUN_00428750();
  FUN_00428750();
  while( true ) {
    cVar3 = FUN_008477d0(&local_64);
    if (cVar3 == '\0') break;
    FUN_005f4962(local_1c,local_18,local_24,local_20,local_6c,local_68);
    uVar2 = local_64;
    local_1c = local_2c;
    local_18 = local_28;
    local_20 = local_60;
    uVar1 = local_74 + local_70;
    local_24 = local_64;
    if (uVar1 < local_74) {
      FUN_00a3fb10();
    }
    FUN_005f4cba(local_8c,0,0,param_11,local_8c[0],uVar1);
    puVar4 = (undefined4 *)FUN_00428780();
    puVar4 = (undefined4 *)FUN_005f4251(uVar2,local_60,*puVar4,puVar4[1]);
    local_6c = *puVar4;
    local_68 = puVar4[1];
    local_64 = puVar4[2];
    local_60 = puVar4[3];
    local_44 = local_6c;
    local_40 = local_68;
    local_3c = local_64;
    local_38 = local_60;
    FUN_008477a0(&local_64);
  }
  puVar4 = (undefined4 *)FUN_00428780();
  FUN_005f4962(local_1c,local_18,local_24,local_20,*puVar4,puVar4[1]);
  if (local_70 == 0) {
    puVar4 = (undefined4 *)FUN_00428780();
    FUN_00488619(&local_2c,local_2c,local_28,*puVar4,puVar4[1]);
  }
  else {
    local_18 = local_74 + local_70;
    if (local_18 < local_74) {
      FUN_00a3fb10();
    }
    uVar2 = local_8c[0];
    local_20 = local_74;
    if (local_70 + local_74 < local_74) {
      FUN_00a3fb10();
    }
    puVar4 = (undefined4 *)FUN_00428780();
    FUN_005f48f4(param_1,*puVar4,puVar4[1],local_8c[0],local_20,uVar2,local_18);
  }
  FUN_005f489f();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_005f46b7(void)

{
  uint uVar1;
  undefined4 uVar2;
  char cVar3;
  undefined4 *puVar4;
  undefined4 param_4;
  undefined4 param_5;
  undefined4 param_6;
  undefined4 param_7;
  undefined4 param_8;
  uint param_9;
  undefined4 param_10;
  undefined4 param_11;
  undefined4 local_90 [6];
  uint local_78;
  int local_74;
  undefined4 local_70;
  undefined4 local_6c;
  undefined4 local_68;
  uint local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 *local_58;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  uint local_38;
  undefined4 local_2c;
  uint local_28;
  undefined4 local_24;
  uint local_20;
  undefined4 local_1c;
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x80;
  local_8 = 0x5f46c6;
  local_70 = param_6;
  local_6c = param_7;
  local_68 = param_8;
  local_64 = param_9;
  local_60 = param_10;
  local_5c = param_11;
  local_58 = &stack0x00000010;
  FUN_00467a19();
  local_8 = 0;
  FUN_00428750();
  FUN_00428750();
  while( true ) {
    cVar3 = FUN_008477d0(&local_68);
    if (cVar3 == '\0') break;
    FUN_005f4962(local_1c,local_18,local_24,local_20,local_70,local_6c);
    uVar2 = local_68;
    local_1c = local_2c;
    local_18 = local_28;
    local_20 = local_64;
    uVar1 = local_74 + local_78;
    local_24 = local_68;
    if (uVar1 < local_78) {
      FUN_00a3fb10();
    }
    FUN_005f4cba(local_90,local_60,local_5c,param_11,local_90[0],uVar1);
    puVar4 = (undefined4 *)FUN_00428780();
    puVar4 = (undefined4 *)FUN_005f437a(&stack0x00000004,uVar2,local_64,*puVar4,puVar4[1]);
    local_70 = *puVar4;
    local_6c = puVar4[1];
    local_68 = puVar4[2];
    local_64 = puVar4[3];
    local_44 = local_70;
    local_40 = local_6c;
    local_3c = local_68;
    local_38 = local_64;
    cVar3 = FUN_008477a0(&local_68);
    if (cVar3 == '\0') {
      local_60 = param_4;
      local_5c = param_5;
    }
  }
  puVar4 = (undefined4 *)FUN_00428780();
  FUN_005f4962(local_1c,local_18,local_24,local_20,*puVar4,puVar4[1]);
  if (local_74 == 0) {
    puVar4 = (undefined4 *)FUN_00428780();
    FUN_00488619(&local_2c,local_2c,local_28,*puVar4,puVar4[1]);
  }
  else {
    local_18 = local_74 + local_78;
    if (local_18 < local_78) {
      FUN_00a3fb10();
    }
    local_2c = local_90[0];
    local_20 = local_78;
    if (local_74 + local_78 < local_78) {
      FUN_00a3fb10();
    }
    FUN_00428780();
    FUN_005f48f4();
  }
  FUN_005f489f();
  return;
}



void FUN_005f489f(void)

{
  int *piVar1;
  int iVar2;
  undefined4 *unaff_ESI;
  int iVar3;
  
  while (unaff_ESI[7] != 0) {
    if ((unaff_ESI[7] != 0) && (iVar3 = unaff_ESI[7] + -1, unaff_ESI[7] = iVar3, iVar3 == 0)) {
      unaff_ESI[6] = 0;
    }
  }
  iVar3 = unaff_ESI[5];
  while (iVar2 = unaff_ESI[4], iVar3 != 0) {
    iVar3 = iVar3 + -1;
    piVar1 = (int *)(iVar2 + iVar3 * 4);
    if (*piVar1 != 0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*piVar1);
    }
  }
  if (iVar2 != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  unaff_ESI[5] = 0;
  unaff_ESI[4] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*unaff_ESI);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_005f48f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x5f4900;
  local_18 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_30,0);
  FUN_005f4f21(local_30,param_1,param_4,param_5,param_6,param_7);
  local_8 = 0;
  FUN_004f47b1(param_2,param_3,param_2,param_3,local_30);
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



void FUN_005f4962(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  char cVar1;
  int in_EAX;
  char *pcVar2;
  char *pcVar3;
  undefined4 *unaff_EDI;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_14 = param_3;
  local_10 = param_4;
  local_c = param_1;
  local_8 = param_2;
  while ((*(int *)(in_EAX + 0x1c) != 0 && (cVar1 = FUN_008477d0(&local_14), cVar1 != '\0'))) {
    pcVar2 = std::
             _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          *)&local_c);
    pcVar3 = (char *)FUN_005f4a50();
    *pcVar2 = *pcVar3;
    FUN_005f4a7a();
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)&local_c);
  }
  if (*(int *)(in_EAX + 0x1c) == 0) {
    cVar1 = FUN_008477a0(&param_3);
    if (cVar1 == '\0') {
      FUN_005f4c73();
      return;
    }
    *unaff_EDI = param_5;
  }
  else {
    while (cVar1 = FUN_008477d0(&param_5), cVar1 != '\0') {
      pcVar2 = std::
               _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
               ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                            *)&local_c);
      FUN_005f4aa2(pcVar2);
      pcVar2 = std::
               _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
               ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                            *)&local_c);
      pcVar3 = (char *)FUN_005f4a50();
      *pcVar2 = *pcVar3;
      FUN_005f4a7a();
      std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *)&local_c);
    }
    *unaff_EDI = local_c;
    param_6 = local_8;
  }
  unaff_EDI[1] = param_6;
  return;
}



void FUN_005f4a50(void)

{
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0x1c) + *(uint *)(unaff_ESI + 0x18) < *(uint *)(unaff_ESI + 0x18)) {
    FUN_00a3fb10();
  }
  FUN_005f4bfc();
  return;
}



void FUN_005f4a7a(void)

{
  int in_EAX;
  int iVar1;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    *(int *)(in_EAX + 0x18) = *(int *)(in_EAX + 0x18) + 1;
    if ((uint)(*(int *)(in_EAX + 0x14) << 4) <= *(uint *)(in_EAX + 0x18)) {
      *(undefined4 *)(in_EAX + 0x18) = 0;
    }
    iVar1 = *(int *)(in_EAX + 0x1c) + -1;
    *(int *)(in_EAX + 0x1c) = iVar1;
    if (iVar1 == 0) {
      *(undefined4 *)(in_EAX + 0x18) = 0;
    }
  }
  return;
}



void FUN_005f4aa2(undefined *param_1)

{
  int in_EAX;
  uint uVar1;
  char *pcVar2;
  int iVar3;
  uint uVar4;
  undefined *puVar5;
  
  if (((*(int *)(in_EAX + 0x18) + *(int *)(in_EAX + 0x1c) & 0xfU) == 0) &&
     (*(uint *)(in_EAX + 0x14) <= *(int *)(in_EAX + 0x1c) + 0x10U >> 4)) {
    FUN_005f4b15();
  }
  uVar4 = *(int *)(in_EAX + 0x18) + *(int *)(in_EAX + 0x1c);
  uVar1 = uVar4 >> 4;
  if (*(uint *)(in_EAX + 0x14) <= uVar1) {
    uVar1 = uVar1 - *(uint *)(in_EAX + 0x14);
  }
  iVar3 = uVar1 * 4;
  if (*(int *)(iVar3 + *(int *)(in_EAX + 0x10)) == 0) {
    pcVar2 = std::_Allocate<char>(0x10,(char *)0x0);
    *(char **)(iVar3 + *(int *)(in_EAX + 0x10)) = pcVar2;
  }
  puVar5 = (undefined *)((uVar4 & 0xf) + *(int *)(*(int *)(in_EAX + 0x10) + iVar3));
  if (puVar5 != (undefined *)0x0) {
    *puVar5 = *param_1;
  }
  *(int *)(in_EAX + 0x1c) = *(int *)(in_EAX + 0x1c) + 1;
  return;
}



void FUN_005f4b15(void)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  uint uVar5;
  int unaff_ESI;
  undefined8 uVar6;
  uint local_8;
  
  uVar6 = CONCAT44(0xfffffff,*(int *)(unaff_ESI + 0x14));
  local_8 = 1;
  if (*(int *)(unaff_ESI + 0x14) == 0xfffffff) {
    uVar6 = FUN_00467f14();
  }
  uVar5 = (uint)uVar6 >> 1;
  if (uVar5 < 8) {
    uVar5 = 8;
  }
  if ((1 < uVar5) && ((uint)uVar6 <= (int)((ulonglong)uVar6 >> 0x20) - uVar5)) {
    local_8 = uVar5;
  }
  uVar5 = *(uint *)(unaff_ESI + 0x18) >> 4;
  puVar1 = (undefined4 *)FUN_00467f53();
  FUN_0061526b(*(int *)(unaff_ESI + 0x10) + uVar5 * 4);
  if (local_8 < uVar5) {
    FUN_0061526b(*(undefined4 *)(unaff_ESI + 0x10));
    puVar4 = (undefined4 *)FUN_0061526b(local_8 * 4 + *(int *)(unaff_ESI + 0x10));
    uVar5 = local_8;
  }
  else {
    iVar2 = local_8 - uVar5;
    puVar3 = (undefined4 *)FUN_0061526b(*(undefined4 *)(unaff_ESI + 0x10));
    puVar4 = puVar1;
    if (iVar2 != 0) {
      for (; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar3 = 0;
        puVar3 = puVar3 + 1;
      }
    }
  }
  if (uVar5 != 0) {
    for (; uVar5 != 0; uVar5 = uVar5 - 1) {
      *puVar4 = 0;
      puVar4 = puVar4 + 1;
    }
  }
  if (*(int *)(unaff_ESI + 0x10) == 0) {
    *(undefined4 **)(unaff_ESI + 0x10) = puVar1;
    *(int *)(unaff_ESI + 0x14) = *(int *)(unaff_ESI + 0x14) + local_8;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(int *)(unaff_ESI + 0x10));
}



int FUN_005f4bfc(void)

{
  int *piVar1;
  int **in_EAX;
  int *piVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  
  piVar1 = in_EAX[1];
  piVar2 = *in_EAX;
  uVar5 = (uint)piVar1 >> 4;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    piVar2 = *in_EAX;
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
      goto LAB_005f4c25;
    }
  }
  iVar4 = *piVar2;
LAB_005f4c25:
  if (piVar2 == (int *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar2;
  }
  if ((int *)(*(int *)(iVar3 + 0x1c) + *(int *)(iVar4 + 0x18)) <= in_EAX[1]) {
    FUN_00a3fb10();
  }
  piVar2 = *in_EAX;
  if (piVar2 == (int *)0x0) {
    iVar4 = 0;
  }
  else {
    iVar4 = *piVar2;
  }
  if (*(uint *)(iVar4 + 0x14) <= uVar5) {
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *piVar2;
    }
    uVar5 = uVar5 - *(int *)(iVar4 + 0x14);
  }
  if (piVar2 == (int *)0x0) {
    iVar4 = 0;
  }
  else {
    iVar4 = *piVar2;
  }
  return *(int *)(*(int *)(iVar4 + 0x10) + uVar5 * 4) + ((uint)piVar1 & 0xf);
}



undefined4
FUN_005f4c73(undefined4 param_1,undefined4 param_2,void *param_3,undefined4 param_4,int param_5,
            undefined4 param_6,undefined4 param_7)

{
  char *_Dst;
  rsize_t _DstSize;
  rsize_t _MaxCount;
  undefined4 local_10;
  undefined4 local_c;
  
  _DstSize = param_5 - (int)param_3;
  local_10 = param_6;
  local_c = param_7;
  std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::operator+
            ((_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             &local_10,param_1,_DstSize);
  if (0 < (int)_DstSize) {
    _MaxCount = _DstSize;
    _Dst = std::
           _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
           operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      *)&local_10);
    _memmove_s(_Dst,_DstSize,param_3,_MaxCount);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_005f4cba(int *param_1,int param_2,int param_3,undefined4 param_4,int param_5,int param_6)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  
  uVar2 = param_1[6];
  if (param_1[7] + uVar2 < uVar2) {
    FUN_00a3fb10();
  }
  if ((param_5 == 0) || (param_5 != *param_1)) {
    FUN_00a3fb10();
  }
  uVar1 = param_1[7];
  uVar2 = param_6 - uVar2;
  if (param_2 != param_3) {
    if (uVar2 < uVar1 - uVar2) {
      for (; param_2 != param_3; param_2 = param_2 + 1) {
        FUN_005f4dcc(param_2);
      }
      iVar3 = param_1[7] - uVar1;
      if (uVar2 != 0) {
        FUN_005f4e3f(uVar2 + iVar3);
        FUN_005f4dbd();
        return;
      }
    }
    else {
      for (; param_2 != param_3; param_2 = param_2 + 1) {
        FUN_005f4aa2(param_2);
      }
      if (uVar1 <= uVar2) {
        return;
      }
      FUN_005f4e3f(uVar1);
      FUN_005f4e3f(param_1[7]);
      iVar3 = param_1[7];
    }
    FUN_005f4e3f(iVar3);
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_005f4d28(void)

{
  uint uVar1;
  int iVar2;
  int unaff_EBX;
  int unaff_EBP;
  
  iVar2 = *(int *)(unaff_EBP + 8);
  uVar1 = *(uint *)(unaff_EBP + -0x14);
  while (uVar1 < *(uint *)(iVar2 + 0x1c)) {
    FUN_005f4a7a();
  }
  __CxxThrowException_8(0,0);
  iVar2 = *(int *)(iVar2 + 0x1c) - unaff_EBX;
  if (uVar1 != 0) {
    FUN_005f4e3f(uVar1 + iVar2);
    FUN_005f4dbd();
    return;
  }
  FUN_005f4e3f(iVar2);
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_005f4d7e(void)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int unaff_EBX;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  
  iVar2 = *(int *)(unaff_EBP + 8);
  uVar1 = *(uint *)(unaff_EBP + -0x14);
  while (uVar1 < *(uint *)(iVar2 + 0x1c)) {
    if ((*(int *)(iVar2 + 0x1c) != 0) &&
       (iVar3 = *(int *)(iVar2 + 0x1c) + -1, *(int *)(iVar2 + 0x1c) = iVar3, iVar3 == 0)) {
      *(undefined4 *)(iVar2 + 0x18) = 0;
    }
  }
  __CxxThrowException_8(0,0);
  iVar2 = *(int *)(unaff_ESI + 0x1c) - unaff_EBX;
  if (unaff_EDI != 0) {
    FUN_005f4e3f(unaff_EDI + iVar2);
    FUN_005f4dbd();
    return;
  }
  FUN_005f4e3f(iVar2);
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_005f4dbd(void)

{
  FUN_005f4e3f();
  return;
}



void FUN_005f4dcc(undefined *param_1)

{
  int in_EAX;
  char *pcVar1;
  undefined *puVar2;
  int iVar3;
  uint uVar4;
  
  if (((*(byte *)(in_EAX + 0x18) & 0xf) == 0) &&
     (*(uint *)(in_EAX + 0x14) <= *(int *)(in_EAX + 0x1c) + 0x10U >> 4)) {
    FUN_005f4b15();
  }
  iVar3 = *(int *)(in_EAX + 0x18);
  if (iVar3 == 0) {
    iVar3 = *(int *)(in_EAX + 0x14) << 4;
  }
  uVar4 = iVar3 - 1;
  iVar3 = (uVar4 >> 4) * 4;
  if (*(int *)(iVar3 + *(int *)(in_EAX + 0x10)) == 0) {
    pcVar1 = std::_Allocate<char>(0x10,(char *)0x0);
    *(char **)(iVar3 + *(int *)(in_EAX + 0x10)) = pcVar1;
  }
  puVar2 = (undefined *)((uVar4 & 0xf) + *(int *)(*(int *)(in_EAX + 0x10) + iVar3));
  if (puVar2 != (undefined *)0x0) {
    *puVar2 = *param_1;
  }
  *(int *)(in_EAX + 0x1c) = *(int *)(in_EAX + 0x1c) + 1;
  *(uint *)(in_EAX + 0x18) = uVar4;
  return;
}



void __thiscall FUN_005f4e3f(int param_1_00,int param_1)

{
  int in_EAX;
  undefined4 uVar1;
  undefined4 uVar2;
  
  if (*(int *)(param_1_00 + 0x1c) + *(uint *)(param_1_00 + 0x18) < *(uint *)(param_1_00 + 0x18)) {
    FUN_00a3fb10();
  }
  for (; (in_EAX != param_1 && (param_1 = param_1 + -1, in_EAX != param_1)); in_EAX = in_EAX + 1) {
    uVar1 = FUN_005f4e98(param_1);
    uVar2 = FUN_005f4e98(in_EAX);
    FUN_00418ae3(uVar2,uVar1);
  }
  return;
}



void FUN_005f4e98(int param_1)

{
  int *piVar1;
  int *piVar2;
  int **in_EAX;
  int iVar3;
  int iVar4;
  
  piVar1 = *in_EAX;
  piVar2 = in_EAX[1];
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar4 = 0;
    iVar3 = 0;
  }
  else {
    iVar4 = *piVar1;
    iVar3 = *piVar1;
  }
  if ((uint)((int)piVar2 + param_1) <= (uint)(*(int *)(iVar3 + 0x1c) + *(int *)(iVar4 + 0x18))) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(uint *)(iVar3 + 0x18) <= (uint)((int)piVar2 + param_1)) goto LAB_005f4ee0;
  }
  FUN_00a3fb10();
LAB_005f4ee0:
  FUN_005f4bfc();
  return;
}



// Library Function - Single Match
//  public: class std::_String_iterator<char,struct std::char_traits<char>,class
// std::allocator<char> > __thiscall std::_String_iterator<char,struct std::char_traits<char>,class
// std::allocator<char> >::operator+(int)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::operator+
          (_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          undefined4 *param_1,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar1 = *(undefined4 *)this;
  uVar2 = *(undefined4 *)(this + 4);
  FUN_005e0be0(param_3);
  *param_1 = uVar1;
  param_1[1] = uVar2;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_005f4f21(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,uint param_6)

{
  char *pcVar1;
  int iVar2;
  int iVar3;
  
  if ((param_5 == (int *)0x0) || (param_5 != param_3)) {
    FUN_00a3fb10();
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
            (param_1,param_6 - param_4);
  while( true ) {
    if ((param_3 == (int *)0x0) || (param_3 != param_5)) {
      FUN_00a3fb10();
    }
    if (param_4 == param_6) break;
    pcVar1 = (char *)FUN_005f4bfc();
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (param_1,1,*pcVar1);
    if (param_3 == (int *)0x0) {
      FUN_00a3fb10();
      iVar3 = 0;
      iVar2 = 0;
    }
    else {
      iVar3 = *param_3;
      iVar2 = *param_3;
    }
    if ((uint)(*(int *)(iVar2 + 0x1c) + *(int *)(iVar3 + 0x18)) <= param_4) {
      FUN_00a3fb10();
    }
    param_4 = param_4 + 1;
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_005f4fc5(void)

{
  FUN_004017b2(1,0);
  __CxxThrowException_8(0,0);
  return;
}



void FUN_005f4fe2(void)

{
  undefined4 *puVar1;
  int *unaff_EBX;
  undefined local_24 [16];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  puVar1 = (undefined4 *)FUN_00418c79(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  puVar1 = (undefined4 *)FUN_00418bf1(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  puVar1 = (undefined4 *)FUN_00418c35(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  return;
}



void FUN_005f5048(void)

{
  undefined4 *puVar1;
  int *unaff_EBX;
  undefined local_24 [16];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  puVar1 = (undefined4 *)FUN_0041933f(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  return;
}



void FUN_005f5072(void)

{
  undefined4 *puVar1;
  int *unaff_EBX;
  undefined local_24 [16];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  puVar1 = (undefined4 *)FUN_0041a1fb(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  return;
}



void FUN_005f509c(void)

{
  undefined4 *puVar1;
  int *unaff_EBX;
  undefined local_24 [16];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  puVar1 = (undefined4 *)FUN_00421e44(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  puVar1 = (undefined4 *)FUN_0042206e(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  puVar1 = (undefined4 *)FUN_004210ca(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  puVar1 = (undefined4 *)FUN_00421152(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f516e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::W12AF09B9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f51b4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005f51cb(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W894DDB77::W12AF09B9::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_005f516e(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void Catch_All_005f5278(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_005f533c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_005f53ba(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W5FC6A77E::W54980B19::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_005f541d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f57c4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::W15426D0D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f580a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005f5821(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WE711C61D::W15426D0D::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_005f57c4(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 FUN_005f5888(undefined4 param_1)

{
  FUN_00bb5b98(0x58b,0x15,0);
  return param_1;
}



undefined4 __thiscall FUN_005f592a(undefined4 param_1_00,byte param_1)

{
  FUN_005f5946();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_005f5946(undefined4 *param_1)

{
  *param_1 = WEE3D36A7::W995B8F91::vftable;
  FUN_004212d2(param_1 + 1);
  *param_1 = W133E5AC5::WE7CAD561::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_005f5976(int param_1_00,int param_1)

{
  char cVar1;
  undefined *puVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined local_3c [24];
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x5f5982;
  cVar1 = FUN_00ba723a();
  if ((cVar1 == '\0') || (cVar1 = FUN_00ba71bb(), cVar1 == '\0')) {
    return '\0';
  }
  local_24 = 7;
  FUN_0040180b(0);
  local_8 = 0;
  puVar2 = (undefined *)(param_1 + 0x5c);
  if (*(char *)(param_1 + 0x58) == '\0') {
    puVar2 = local_3c;
  }
  puVar3 = (undefined4 *)FUN_004212fa((undefined4 *)(param_1_00 + 4),&local_20,puVar2);
  local_18 = *puVar3;
  local_14 = puVar3[1];
  FUN_00401829(1,0);
  local_1c = *(undefined4 *)(param_1_00 + 0x1c);
  local_20 = *(undefined4 *)(param_1_00 + 4);
  cVar1 = FUN_006b8eca();
  cVar1 = '\x01' - (cVar1 != '\0');
  if (cVar1 == '\0') {
    return '\0';
  }
  iVar4 = FUN_006badde();
  *(undefined4 *)(param_1 + 0x16c) = *(undefined4 *)(iVar4 + 0x1c);
  *(undefined4 *)(param_1 + 0x170) = *(undefined4 *)(iVar4 + 0x20);
  *(undefined4 *)(param_1 + 0x174) = *(undefined4 *)(iVar4 + 0x24);
  *(undefined4 *)(param_1 + 0x178) = *(undefined4 *)(iVar4 + 0x28);
  *(undefined4 *)(param_1 + 0x1d4) = 0;
  *(undefined4 *)(param_1 + 0x1cc) = 1;
  return cVar1;
}



undefined FUN_005f5a3c(void)

{
  FUN_00b92076();
  return 1;
}



undefined4 FUN_005f5a4a(undefined4 param_1)

{
  FUN_00b9afb0(param_1,1,0,0,6);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005f5a68(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W1A59884D::W336C492B::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_005f5ed1(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x005f5b42)

undefined4 * FUN_005f5acf(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_005f5f2e();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005f5c65(undefined4 *param_1)

{
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  *param_1 = W1A59884D::WB07AE826::vftable;
  FUN_005f5a68(param_1 + 5);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f5c9f(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined *puStack_90;
  undefined4 uStack_8c;
  undefined local_78 [88];
  undefined local_20 [8];
  undefined **local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_14 = 0;
  local_8 = 1;
  uStack_8c = param_2;
  puStack_90 = local_78;
  uVar1 = FUN_007d661f();
  local_18 = &puStack_90;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_007d70ed(uVar1,&puStack_90);
  puVar2 = (undefined4 *)FUN_005f5acf(local_20);
  *param_1 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_005f5d26(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5)

{
  undefined4 **ppuStack_40;
  int *piStack_3c;
  int *local_20;
  int local_1c;
  int **local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_14 = 0;
  piStack_3c = &param_4;
  ppuStack_40 = &local_20;
  local_8 = 2;
  FUN_005f5e1b();
  local_8 = CONCAT31(local_8._1_3_,3);
  if (local_20 != (int *)0x0) {
    piStack_3c = local_20;
    ppuStack_40 = (undefined4 **)local_20;
    local_18 = (int **)&ppuStack_40;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&local_1c);
  }
  *param_1 = 0;
  param_1[1] = 0;
  local_14 = 1;
  local_8._0_1_ = 2;
  if (local_1c != 0) {
    piStack_3c = (int *)0x5f5df2;
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (param_3 != 0) {
    piStack_3c = (int *)0x5f5e02;
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (param_5 != 0) {
    piStack_3c = (int *)0x5f5e11;
    FUN_0040127a();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f5e1b(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5f5e27;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W1A59884D::WAC73E47E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W1A59884D::WAC73E47E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f5ed1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::W336C492B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f5f17(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f5f2e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::WAC73E47E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f5f74(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f5f8b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::W20DC7DE9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f5fd1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f6463(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5f646f;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W1A59884D::W58BD7571::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W1A59884D::W58BD7571::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f6519(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::W1D51FBB2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f655f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_005f65bc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f65d3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::W58BD7571>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f6619(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x005f6710)

undefined4 * FUN_005f6697(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x18c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_005f6a31();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f691e(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5f692a;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W1A59884D::WB7D82CB6::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W1A59884D::WB7D82CB6::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_005f6a1a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f6a31(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::WB7D82CB6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f6a77(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x005f6b6b)

undefined4 * FUN_005f6af5(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_005f6f85();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f6e72(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5f6e7e;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W1A59884D::WA05A12FC::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W1A59884D::WA05A12FC::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_005f6f6e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f6f85(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::WA05A12FC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f6fcb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f6fe2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::WDCBA2B9F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f7028(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x005f7119)

undefined4 * FUN_005f70a6(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_005f7506();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f73f3(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5f73ff;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W1A59884D::W07A4B18B::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W1A59884D::W07A4B18B::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_005f74ef(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f7506(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::W07A4B18B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f754c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f7563(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::WC28BAB34>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f75a9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x005f7793)

undefined4 * FUN_005f7720(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x44);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_005f79ef();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f787f(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5f788b;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W1A59884D::WBED4AF07::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W1A59884D::WBED4AF07::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_005f797b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f7992(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::WFB49BA8F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f79d8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f79ef(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::W89CE4C35>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f7a35(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x005f7b26)

undefined4 * FUN_005f7ab3(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_005f7d64();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



void Catch_All_005f7d4d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f7d64(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::WEF2F586B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f7daa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x005f7e9e)

undefined4 * FUN_005f7e28(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x3c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_005f82b8();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f81a5(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5f81b1;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W1A59884D::W9C8BD304::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W1A59884D::W9C8BD304::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_005f82a1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f82b8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::W9C8BD304>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f82fe(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f8315(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::W3DD59A9F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f835b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x005f844f)

undefined4 * FUN_005f83d9(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x4c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_005f8868();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f8755(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5f8761;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W1A59884D::W216A19A6::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W1A59884D::W216A19A6::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_005f8851(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f8868(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::W216A19A6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f88ae(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f88c5(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::W2544F4A3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f890b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x005f89fc)

undefined4 * FUN_005f8989(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_005f8de8();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005f8cd5(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5f8ce1;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W1A59884D::W67D3CE12::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W1A59884D::W67D3CE12::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_005f8dd1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f8de8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::W67D3CE12>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f8e2e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005f8e45(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W1A59884D::W520839B0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005f8e8b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005f9101(void)

{
  undefined4 *puVar1;
  undefined4 local_38c;
  undefined4 local_388;
  uint uStack_384;
  undefined auStack_374 [12];
  undefined4 *local_368;
  undefined local_348 [812];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c50edb;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_374;
  uStack_384 = DAT_0323f878 ^ (uint)&stack0xfffffc80;
  ExceptionList = &local_14;
  local_368 = &local_38c;
  local_38c = 0xa0c;
  local_388 = 8;
  puVar1 = (undefined4 *)FUN_00465be3(local_348);
  local_c = 0;
  local_38c = *puVar1;
  local_368 = &local_38c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 FUN_005f9837(void)

{
  return 0x6dc32fd5;
}



void __fastcall FUN_005f995f(int param_1)

{
  undefined4 uStack_438;
  undefined4 uStack_434;
  int **ppiStack_430;
  int *piStack_42c;
  int *piStack_428;
  uint uStack_424;
  undefined4 *apuStack_414 [3];
  int **local_408;
  undefined4 local_3f8;
  int local_3f4 [246];
  uint local_1c;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c5fa08;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)apuStack_414;
  uStack_424 = DAT_0323f878 ^ (uint)&stack0xfffffbe0;
  ExceptionList = &local_14;
  local_3f8 = 0;
  piStack_42c = *(int **)(param_1 + 0x124);
  local_408 = &piStack_42c;
  ppiStack_430 = &piStack_42c;
  uStack_434 = 0x5f99be;
  piStack_428 = piStack_42c;
  local_3f4[0] = param_1;
  (**(code **)(*piStack_42c + 0x14))();
  uStack_434 = 0x5f99c6;
  (**(code **)(**(int **)(param_1 + 4) + 0x10))();
  uStack_434 = 0x5f99d1;
  FUN_004fa2a2();
  uStack_18 = 0;
  apuStack_414[0] = &uStack_438;
  uStack_438 = local_3f8;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_3f4);
}



void FUN_005fab68(void)

{
  int in_EAX;
  
  if (*(int *)(in_EAX + 0xc) != 0) {
    FUN_0040127a();
    return;
  }
  return;
}



void FUN_005fba97(void)

{
  uint uVar1;
  int local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_14;
  FUN_005fbb7c(&local_20);
  local_c = 0;
  if (local_20 != 0) {
    FUN_00b725b0(uVar1);
    FUN_00b72ae0();
  }
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



void FUN_005fbb0f(void)

{
  uint uVar1;
  int local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_14;
  FUN_005fbb7c(&local_20);
  local_c = 0;
  if (local_20 != 0) {
    FUN_00b725b0(uVar1);
  }
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005fbb7c(undefined4 *param_1)

{
  int unaff_EDI;
  
  FUN_0043d406(unaff_EDI + 300);
  *param_1 = *(undefined4 *)(unaff_EDI + 0x134);
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EDI + 0x138);
}



void FUN_005fc2c4(void)

{
  undefined4 *unaff_ESI;
  
  if (unaff_ESI[3] != 0) {
    FUN_004861ed(unaff_ESI[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI[3]);
  }
  unaff_ESI[3] = 0;
  unaff_ESI[4] = 0;
  unaff_ESI[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*unaff_ESI);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_005fc2f1(int *param_1)

{
  int **ppiVar1;
  
  ppiVar1 = (int **)FUN_00418daa(1,0);
  if (ppiVar1 == (int **)0x0) {
    ppiVar1 = (int **)0x0;
  }
  else {
    *ppiVar1 = param_1;
  }
  *param_1 = (int)ppiVar1;
  FUN_005fd249();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005fc32a(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x14);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W560DA063::W6FA8ECB9<3,7,2000,1000>::vftable;
    puVar2[1] = 3;
    puVar2[2] = 7;
    puVar2[3] = 2000;
    puVar2[4] = 1000;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_005fc922(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005fc3ad(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x14);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_005fc446();
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_005fc97f(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



void __thiscall FUN_005fc413(int param_1_00,int *param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  
  uVar2 = param_2 / *(uint *)(param_1_00 + 0x10);
  if (uVar2 < *(uint *)(param_1_00 + 8)) {
    iVar1 = *(int *)(param_1_00 + 0xc);
    *param_1 = *(int *)(param_1_00 + 4) + uVar2;
    param_1[1] = iVar1 + param_2;
  }
  else {
    *param_1 = 0;
    param_1[1] = 0;
  }
  return;
}



void FUN_005fc446(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W560DA063::W6FA8ECB9<2,7,2300,2000>::vftable;
  in_EAX[1] = 2;
  in_EAX[2] = 7;
  in_EAX[3] = 0x8fc;
  in_EAX[4] = 2000;
  return;
}



undefined4 * __thiscall FUN_005fc469(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W71DA37B9::W11069299::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_005fc486(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W71DA37B9::W11069299::vftable;
  return;
}



void FUN_005fc48d(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_026b8b39;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_005fc4d6(undefined4 *param_1_00,int param_1)

{
  undefined4 uVar1;
  
  FUN_004382a5(param_1);
  *(undefined4 *)(param_1 + 0x20) = 0;
  uVar1 = FUN_005fc48d(*param_1_00,param_1_00[1]);
  FUN_004fc9c9(uVar1);
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005fc677(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5fc683;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W13A59D1B::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W13A59D1B::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005fc72d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5fc739;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WDE765622::WE13D998E::RTTI_Type_Descriptor,
                   &WE711C61D::W112CB2DD::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WDE765622::WE13D998E::RTTI_Type_Descriptor,
                           &WE711C61D::W112CB2DD::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_005fc7e3(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x5fc7ef;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WE23F487B::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WE23F487B::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_005fc899(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_EBX;
  
  *unaff_EBX = *in_EAX;
  FUN_005fc8af();
  return;
}



void FUN_005fc8af(void)

{
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  
  *unaff_ESI = *unaff_EDI;
  unaff_ESI[1] = unaff_EDI[1];
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EDI + 2);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall FUN_005fc8d4(int param_1_00,int param_1)

{
  undefined *puVar1;
  undefined4 local_38 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  puVar1 = &LAB_00c12181;
  if (param_1_00 != param_1) {
    local_38[0] = 0;
    local_8 = 0;
    FUN_00475d30(local_38);
    FUN_00475d30(param_1);
    FUN_00475d30(param_1_00);
    local_8 = 0xffffffff;
    puVar1 = (undefined *)FUN_00507e58();
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005fc922(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W560DA063::W6FA8ECB9<3,7,2000,1000>_>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005fc968(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005fc97f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W560DA063::W6FA8ECB9<2,7,2300,2000>_>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005fc9c5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005fc9dc(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_005fca17(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::W1D51FBB2>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::W1D51FBB2*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_005fca17(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::W1D51FBB2>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::W1D51FBB2*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::W1D51FBB2>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::W1D51FBB2*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_005fcaec(undefined4 param_1,TypeDescriptor **param_2,uint param_3)

{
  if (param_3 == 4) {
    *param_2 = &boost::_bi::
                bind_t<class_boost::shared_ptr<class_W560DA063::W652C2340>,class_boost::_mfi::mf4<class_boost::shared_ptr<class_W560DA063::W652C2340>,class_W1A59884D::W1D51FBB2,class_boost::shared_ptr<class_W560DA063::W652C2340>,class_boost::shared_ptr<class_W8489743A::WE77C49A0>,enum_W71DA37B9::W053281DE::Type,enum_W71DA37B9::W83036B07::Type>,class_boost::_bi::list5<class_boost::_bi::value<class_W1A59884D::W1D51FBB2*>,struct_boost::arg<1>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::value<enum_W71DA37B9::W053281DE::Type>,class_boost::_bi::value<enum_W71DA37B9::W83036B07::Type>_>_>
                ::RTTI_Type_Descriptor;
    *(undefined *)(param_2 + 1) = 0;
    *(undefined *)((int)param_2 + 5) = 0;
  }
  else {
    param_3 = param_3 & 0xffffff00;
    FUN_005fcb65(param_3);
  }
  return;
}



void FUN_005fcb65(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  int unaff_ESI;
  uint unaff_EDI;
  
  if ((unaff_ESI == 0) || (unaff_ESI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_005fc899();
    }
    if (unaff_ESI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EDI + 0xc);
  }
  else {
    if (unaff_ESI != 2) {
      if (unaff_ESI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<class_boost::shared_ptr<class_W560DA063::W652C2340>,class_boost::_mfi::mf4<class_boost::shared_ptr<class_W560DA063::W652C2340>,class_W1A59884D::W1D51FBB2,class_boost::shared_ptr<class_W560DA063::W652C2340>,class_boost::shared_ptr<class_W8489743A::WE77C49A0>,enum_W71DA37B9::W053281DE::Type,enum_W71DA37B9::W83036B07::Type>,class_boost::_bi::list5<class_boost::_bi::value<class_W1A59884D::W1D51FBB2*>,struct_boost::arg<1>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::value<enum_W71DA37B9::W053281DE::Type>,class_boost::_bi::value<enum_W71DA37B9::W83036B07::Type>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EDI);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<class_boost::shared_ptr<class_W560DA063::W652C2340>,class_boost::_mfi::mf4<class_boost::shared_ptr<class_W560DA063::W652C2340>,class_W1A59884D::W1D51FBB2,class_boost::shared_ptr<class_W560DA063::W652C2340>,class_boost::shared_ptr<class_W8489743A::WE77C49A0>,enum_W71DA37B9::W053281DE::Type,enum_W71DA37B9::W83036B07::Type>,class_boost::_bi::list5<class_boost::_bi::value<class_W1A59884D::W1D51FBB2*>,struct_boost::arg<1>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::value<enum_W71DA37B9::W053281DE::Type>,class_boost::_bi::value<enum_W71DA37B9::W83036B07::Type>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[3];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



undefined4 __thiscall FUN_005fcbc6(undefined4 param_1_00,undefined4 param_1)

{
  undefined local_8 [4];
  
  FUN_005fcc73(param_1,0,param_1_00,local_8);
  return param_1;
}



void FUN_005fcc73(void)

{
  int unaff_ESI;
  undefined4 local_18 [2];
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 *local_8;
  
  uStack_c = *(undefined4 *)(unaff_ESI + 0x10);
  uStack_10 = *(undefined4 *)(unaff_ESI + 0xc);
  local_8 = local_18;
  local_18[0] = *(undefined4 *)(unaff_ESI + 4);
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_ESI + 8);
}



void Catch_All_005fcdb8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_005fced9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_005fcfd4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_005fd0bf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_005fd179(undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x84);
  if (pvVar1 != (void *)0x0) {
    param_3 = (undefined4 *)0x0;
    FUN_00b66fe8(pvVar1,param_2);
  }
  FUN_005d4b35();
  if (param_3 != (undefined4 *)0x0) {
    (**(code **)*param_3)();
  }
  return param_1;
}



void Catch_All_005fd232(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005fd249(void)

{
  int *piVar1;
  int iVar2;
  int unaff_ESI;
  
  iVar2 = FUN_007fb465();
  piVar1 = (int *)(unaff_ESI + 0x18);
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x2d) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005fd26a(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *local_18;
  
  local_18 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)param_1 + 0x2d) == '\0') {
    puVar1 = (undefined4 *)FUN_004dc726(local_18,param_2,local_18,*(undefined *)(param_1 + 0xb));
    if (*(char *)((int)local_18 + 0x2d) != '\0') {
      local_18 = puVar1;
    }
    uVar2 = FUN_005fd26a(*param_1,puVar1);
    *puVar1 = uVar2;
    uVar2 = FUN_005fd26a(param_1[2],puVar1);
    puVar1[2] = uVar2;
  }
  return local_18;
}



void Catch_All_005fd2d3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_0049cf5c(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_005fd2e8(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  int **ppiVar3;
  undefined4 uVar4;
  int iVar5;
  int *piVar6;
  
  ppiVar3 = (int **)FUN_00418daa(1,0);
  if (ppiVar3 == (int **)0x0) {
    ppiVar3 = (int **)0x0;
  }
  else {
    *ppiVar3 = param_1;
  }
  *param_1 = (int)ppiVar3;
  FUN_005fd249();
  iVar1 = param_1[6];
  uVar4 = FUN_005fd26a(*(undefined4 *)(*(int *)(param_1_00 + 0x18) + 4),iVar1);
  *(undefined4 *)(iVar1 + 4) = uVar4;
  param_1[7] = *(int *)(param_1_00 + 0x1c);
  iVar1 = param_1[6];
  piVar2 = *(int **)(iVar1 + 4);
  if (*(char *)((int)*(int **)(iVar1 + 4) + 0x2d) == '\0') {
    do {
      piVar6 = piVar2;
      piVar2 = (int *)*piVar6;
    } while (*(char *)((int)piVar2 + 0x2d) == '\0');
    *(int **)param_1[6] = piVar6;
    iVar1 = *(int *)(param_1[6] + 4);
    do {
      iVar5 = iVar1;
      iVar1 = *(int *)(iVar5 + 8);
    } while (*(char *)(iVar1 + 0x2d) == '\0');
    *(int *)(param_1[6] + 8) = iVar5;
  }
  else {
    *(int *)iVar1 = iVar1;
    *(int *)(param_1[6] + 8) = param_1[6];
  }
  return param_1;
}



void Catch_All_005fd383(void)

{
  code *pcVar1;
  
  FUN_005fd7d8();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_005fd480(void)

{
  int *piVar1;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EDI + 0x18);
  FUN_0049cf5c(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(unaff_EDI + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x005fd58f)
// WARNING: Removing unreachable block (ram,0x005fd59f)
// WARNING: Removing unreachable block (ram,0x005fd5a8)
// WARNING: Removing unreachable block (ram,0x005fd5ab)
// WARNING: Removing unreachable block (ram,0x005fd59b)
// WARNING: Removing unreachable block (ram,0x005fd5b8)
// WARNING: Removing unreachable block (ram,0x005fd5c8)
// WARNING: Removing unreachable block (ram,0x005fd5d3)
// WARNING: Removing unreachable block (ram,0x005fd5cf)
// WARNING: Removing unreachable block (ram,0x005fd5c3)
// WARNING: Removing unreachable block (ram,0x005fd5d6)

void FUN_005fd4a4(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x5fd4b0;
  if (*(char *)((int)param_4 + 0x2d) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00743d11();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
    if (*(char *)(param_4[2] + 0x2d) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x2d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x2d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0xb) != '\x01') {
LAB_005fd707:
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_005fd6bb:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xb) != '\x01'))
  goto LAB_005fd703;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0xb) == '\0') {
      *(undefined *)(ppiVar4 + 0xb) = 1;
      *(undefined *)(ppiVar3 + 0xb) = 0;
      FUN_007fb425(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x2d) == '\0') {
      if ((*(char *)(*ppiVar4 + 0xb) != '\x01') || (*(char *)(ppiVar4[2] + 0xb) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0xb) == '\x01') {
          *(undefined *)(*ppiVar4 + 0xb) = 1;
          *(undefined *)(ppiVar4 + 0xb) = 0;
          FUN_004fc926(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0xb) = *(undefined *)(ppiVar3 + 0xb);
        *(undefined *)(ppiVar3 + 0xb) = 1;
        *(undefined *)(ppiVar4[2] + 0xb) = 1;
        FUN_007fb425(param_1);
        goto LAB_005fd703;
      }
LAB_005fd6b2:
      *(undefined *)(ppiVar4 + 0xb) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0xb) == '\0') {
      *(undefined *)(ppiVar4 + 0xb) = 1;
      *(undefined *)(ppiVar3 + 0xb) = 0;
      FUN_004fc926(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x2d) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0xb) == '\x01') && (*(char *)(*ppiVar4 + 0xb) == '\x01'))
      goto LAB_005fd6b2;
      if (*(char *)(*ppiVar4 + 0xb) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0xb) = 1;
        *(undefined *)(ppiVar4 + 0xb) = 0;
        FUN_007fb425(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0xb) = *(undefined *)(ppiVar3 + 0xb);
      *(undefined *)(ppiVar3 + 0xb) = 1;
      *(undefined *)(*ppiVar4 + 0xb) = 1;
      FUN_004fc926(param_1);
LAB_005fd703:
      *(undefined *)(ppiVar5 + 0xb) = 1;
      goto LAB_005fd707;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_005fd6bb;
}



void FUN_005fd73d(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_005fd480();
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00743d11();
    FUN_005fd4a4();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_005fd7d8(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_005fd73d(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_005fd80c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x5fd824;
  FUN_005fd7d8();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_005fd82b;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_005fd80c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x5fd824;
  FUN_005fd7d8();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_005fd82b;
  FUN_00a3f6a1();
}



undefined __thiscall FUN_005fd839(int *param_1_00,int param_1)

{
  char cVar1;
  undefined uVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int iVar6;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 *local_14;
  undefined4 local_10;
  undefined4 *local_c;
  
  puVar3 = (undefined4 *)(**(code **)(*param_1_00 + 8))();
  puVar5 = (undefined4 *)((undefined4 *)puVar3[6])[1];
  local_c = (undefined4 *)puVar3[6];
  while (puVar4 = puVar5, *(char *)((int)puVar4 + 0x15) == '\0') {
    if ((int)puVar4[3] < param_1) {
      puVar5 = (undefined4 *)puVar4[2];
    }
    else {
      puVar5 = (undefined4 *)*puVar4;
      local_c = puVar4;
    }
  }
  local_1c = puVar3[6];
  local_14 = local_c;
  local_20 = *puVar3;
  puVar5 = &local_18;
  local_18 = local_20;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (param_1 < (int)local_c[3])) {
    local_1c = puVar3[6];
    local_20 = *puVar3;
    puVar5 = &local_20;
  }
  local_10 = *puVar5;
  local_c = (undefined4 *)puVar5[1];
  local_1c = puVar3[6];
  local_20 = *puVar3;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    iVar6 = FUN_006badde();
    uVar2 = *(undefined *)(iVar6 + 4);
  }
  else {
    uVar2 = 0;
  }
  return uVar2;
}



void thunk_FUN_00507e58(void)

{
  uint uVar1;
  uint *unaff_ESI;
  
  uVar1 = *unaff_ESI;
  if (uVar1 != 0) {
    if ((uVar1 & 1) == 0) {
      if (*(code **)(uVar1 & 0xfffffffe) != (code *)0x0) {
        (**(code **)(uVar1 & 0xfffffffe))(unaff_ESI + 2,unaff_ESI + 2,2);
      }
    }
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005fd8e9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W48463D55::WA13E81C7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005fd92f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005fd946(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0xa4);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_007fe6bc(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_005fd8e9(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



undefined4 __thiscall FUN_005fe708(undefined4 param_1_00,byte param_1)

{
  FUN_005fe725(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_005fe725(int param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 7;
  puVar1 = auStack_24;
  auStack_24[0] = 0x5fe743;
  FUN_005fe886();
  if (*(int *)(param_1 + 0x58) != 0) {
    puVar1[-1] = 0x5fe74f;
    FUN_0040127a();
  }
  local_8._0_1_ = 6;
  if (*(int *)(param_1 + 0x50) != 0) {
    puVar1[-1] = 0x5fe75f;
    FUN_0040127a();
  }
  local_8._0_1_ = 5;
  if (*(int *)(param_1 + 0x48) != 0) {
    puVar1[-1] = 0x5fe76f;
    FUN_0040127a();
  }
  local_8._0_1_ = 4;
  if (*(int *)(param_1 + 0x40) != 0) {
    puVar1[-1] = 0x5fe77f;
    FUN_0040127a();
  }
  local_8._0_1_ = 3;
  if (*(int *)(param_1 + 0x38) != 0) {
    puVar1[-1] = 0x5fe78f;
    FUN_0040127a();
  }
  local_8._0_1_ = 2;
  if (*(int *)(param_1 + 0x30) != 0) {
    puVar1[-1] = 0x5fe79f;
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (*(int *)(param_1 + 0x28) != 0) {
    puVar1[-1] = 0x5fe7af;
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (*(int *)(param_1 + 0x20) != 0) {
    puVar1[-1] = 0x5fe7bf;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  puVar1[-1] = param_1;
  puVar1[-2] = 0x5fe7c9;
  FUN_004d9011();
  puVar1[-1] = 0x5fe7ce;
  return;
}



int __fastcall FUN_005fe7d1(int param_1)

{
  return *(int *)(param_1 + 0x2c) + 0x4c;
}



int __fastcall FUN_005fe7d8(int param_1)

{
  return *(int *)(param_1 + 0x34) + 0x4c;
}



void FUN_005fe7df(void)

{
  FUN_007b2498();
  return;
}



void __thiscall FUN_005fe7e7(int param_1_00,undefined *param_1)

{
  int iVar1;
  
  if ((*(int *)(param_1_00 + 0x54) != 0) && (iVar1 = FUN_007b2d68(), iVar1 == 0x13)) {
    *param_1 = 0;
    if ((undefined4 *)(param_1 + 4) != (undefined4 *)0x0) {
      *(undefined4 *)(param_1 + 4) = 0x13;
    }
    *param_1 = 1;
    return;
  }
  *param_1 = 0;
  return;
}



void FUN_005fe819(int param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 local_c;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  cVar1 = FUN_0041c034();
  if (cVar1 != '\0') {
    uVar2 = FUN_00486589(*(undefined4 *)(param_1 + 0x10),local_c);
    FUN_004861ed(*(undefined4 *)(param_1 + 0x10));
    *(undefined4 *)(param_1 + 0x10) = uVar2;
  }
  return;
}



void FUN_005fe886(void)

{
  undefined4 *unaff_ESI;
  
  if (unaff_ESI[3] != 0) {
    FUN_004f24e0(unaff_ESI[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI[3]);
  }
  unaff_ESI[3] = 0;
  unaff_ESI[4] = 0;
  unaff_ESI[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*unaff_ESI);
}



int FUN_005fe8b3(uint param_1)

{
  int unaff_ESI;
  
  if ((uint)((*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc)) / 0x74) <= param_1) {
    FUN_00a3fb10();
  }
  return param_1 * 0x74 + *(int *)(unaff_ESI + 0xc);
}



void FUN_005fe8d7(void)

{
  int in_EAX;
  undefined4 uVar1;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  if ((local_c == 0) || (local_c != local_14)) {
    FUN_00a3fb10();
  }
  if (local_8 != local_10) {
    uVar1 = FUN_005fe9c9(*(undefined4 *)(in_EAX + 0x10),local_8);
    FUN_004f24e0(*(undefined4 *)(in_EAX + 0x10));
    *(undefined4 *)(in_EAX + 0x10) = uVar1;
  }
  return;
}



void FUN_005fe946(int param_1,int param_2,int param_3,int param_4)

{
  if ((param_3 == 0) || (param_3 != param_1)) {
    FUN_00a3fb10();
  }
  FUN_005fea0d(param_2,param_4,(param_4 - param_2) / 0x74,&LAB_004f632a);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005fe97c(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_005fec78(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



int FUN_005fe9c9(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = param_1 - in_EAX;
  if (in_EAX != param_1) {
    do {
      FUN_004f61a4();
      in_EAX = in_EAX + 0x74;
    } while (in_EAX != param_1);
  }
  return (iVar1 / 0x74) * 0x74 + param_2;
}



void FUN_005fea0d(int param_1,int param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  int local_10;
  int local_c;
  
  iVar1 = (param_2 - param_1) / 0x74;
  if (0x20 < iVar1) {
    do {
      if (param_3 < 1) break;
      FUN_005feb0c(&local_10,param_1,param_2,param_4);
      param_3 = param_3 / 2 + (param_3 / 2) / 2;
      if ((local_10 - param_1) / 0x74 < (param_2 - local_c) / 0x74) {
        FUN_005fea0d(param_1,local_10,param_3,param_4);
        param_1 = local_c;
      }
      else {
        FUN_005fea0d(local_c,param_2,param_3,param_4);
        param_2 = local_10;
      }
      iVar1 = (param_2 - param_1) / 0x74;
    } while (0x20 < iVar1);
    if (0x20 < iVar1) {
      if (1 < (param_2 - param_1) / 0x74) {
        FUN_005fedca(param_1,param_4);
      }
      FUN_005fee1e(param_1,param_4);
      return;
    }
  }
  if ((1 < iVar1) && (param_1 != param_2)) {
    FUN_005feea4(param_2,param_4);
  }
  return;
}



void FUN_005feb0c(uint *param_1,uint param_2,uint param_3,code *param_4)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint local_c;
  uint local_8;
  
  uVar3 = ((int)(param_3 - param_2) / 0xe8) * 0x74 + param_2;
  FUN_005fecf1(uVar3,param_3 - 0x74,param_4);
  uVar4 = uVar3 + 0x74;
  while (local_c = uVar3, param_2 < local_c) {
    uVar3 = local_c - 0x74;
    cVar1 = (*param_4)(uVar3,local_c);
    if ((cVar1 != '\0') || (cVar1 = (*param_4)(local_c,uVar3), cVar1 != '\0')) break;
  }
  while ((local_8 = uVar4, uVar3 = local_c, uVar4 < param_3 &&
         ((cVar1 = (*param_4)(uVar4,local_c), cVar1 == '\0' &&
          (cVar1 = (*param_4)(local_c,uVar4), cVar1 == '\0'))))) {
    uVar4 = uVar4 + 0x74;
  }
LAB_005febbd:
  for (; uVar2 = local_c, local_8 < param_3; local_8 = local_8 + 0x74) {
    cVar1 = (*param_4)(uVar3,local_8);
    if (cVar1 == '\0') {
      cVar1 = (*param_4)(local_8,uVar3);
      if (cVar1 != '\0') break;
      uVar4 = uVar4 + 0x74;
      FUN_005fed85();
    }
  }
  for (; param_2 < local_c; local_c = local_c - 0x74) {
    uVar2 = uVar2 - 0x74;
    cVar1 = (*param_4)(uVar2,uVar3);
    if (cVar1 == '\0') {
      cVar1 = (*param_4)(uVar3,uVar2);
      if (cVar1 != '\0') break;
      uVar3 = uVar3 - 0x74;
      FUN_005fed85();
    }
  }
  if (local_c == param_2) {
    if (local_8 == param_3) {
      param_1[1] = uVar4;
      *param_1 = uVar3;
      return;
    }
    if (uVar4 != local_8) {
      FUN_005fed85();
    }
    uVar4 = uVar4 + 0x74;
    uVar3 = uVar3 + 0x74;
    local_8 = local_8 + 0x74;
  }
  else {
    local_c = local_c - 0x74;
    if (local_8 != param_3) {
      FUN_005fed85();
      local_8 = local_8 + 0x74;
      goto LAB_005febbd;
    }
    uVar3 = uVar3 - 0x74;
    if (local_c != uVar3) {
      FUN_005fed85();
    }
    uVar4 = uVar4 - 0x74;
  }
  FUN_005fed85();
  goto LAB_005febbd;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005fec78(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::W6E7A20C9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005fecbe(void)

{
  int iVar1;
  code *pcVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  if (iVar1 != 0) {
    FUN_004deb27();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



void __fastcall FUN_005fecdb(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_004deb27();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void FUN_005fecf1(int param_1,int param_2,undefined4 param_3)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = (param_2 - in_EAX) / 0x74;
  if (iVar1 < 0x29) {
    FUN_005fef93(param_2,param_3);
  }
  else {
    iVar1 = iVar1 + 1;
    iVar1 = (int)(iVar1 + (iVar1 >> 0x1f & 7U)) >> 3;
    FUN_005fef93(iVar1 * 0xe8 + in_EAX,param_3);
    FUN_005fef93(iVar1 * 0x74 + param_1,param_3);
    FUN_005fef93(param_2,param_3);
    FUN_005fef93(param_2 + iVar1 * -0x74,param_3);
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_005fed85(int param_1)

{
  int unaff_EBX;
  undefined local_88 [128];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x78;
  local_8 = 0x5fed91;
  if (param_1 != unaff_EBX) {
    FUN_004f615e(local_88);
    local_8 = 0;
    FUN_004f61a4();
    FUN_004f61a4();
    FUN_004deb27();
  }
  FUN_00a421fb();
  return;
}



void FUN_005fedca(int param_1,undefined4 param_2)

{
  int in_EAX;
  int iVar1;
  int iVar2;
  undefined auStack_8c [116];
  undefined4 uStack_18;
  
  iVar1 = (in_EAX - param_1) / 0x74;
  for (iVar2 = iVar1 / 2; 0 < iVar2; iVar2 = iVar2 + -1) {
    uStack_18 = param_2;
    FUN_004f615e(auStack_8c);
    FUN_005fefd9(param_1,iVar1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_005fee1e(int param_1_00,int param_1,undefined4 param_2)

{
  undefined auStack_110 [112];
  undefined4 uStack_a0;
  undefined *puStack_9c;
  undefined local_88 [116];
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x78;
  local_8 = 0x5fee2a;
  for (param_1_00 = param_1_00 - param_1; 1 < param_1_00 / 0x74; param_1_00 = param_1_00 + -0x74) {
    puStack_9c = local_88;
    uStack_a0 = 0x5fee46;
    FUN_004f615e();
    local_8 = 0;
    puStack_9c = (undefined *)0x5fee52;
    FUN_004f61a4();
    puStack_9c = (undefined *)param_2;
    local_14 = auStack_110;
    FUN_004f615e(auStack_110);
    FUN_005fefd9(param_1,(param_1_00 + -0x74) / 0x74);
    local_8 = 0xffffffff;
    puStack_9c = (undefined *)0x5fee8e;
    FUN_004deb27();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_005feea4(int param_1_00,int param_1,code *param_2)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  uint local_94;
  void *local_88;
  undefined4 local_7c [29];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_7c;
  local_7c[0] = 0x14;
  iVar1 = param_1_00;
  for (iVar3 = param_1_00 + 0x74; iVar3 != param_1; iVar3 = iVar3 + 0x74) {
    FUN_004f615e(local_7c);
    cVar2 = (*param_2)(local_7c,param_1_00);
    iVar4 = iVar1;
    if (cVar2 == '\0') {
      while (cVar2 = (*param_2)(local_7c,iVar4), cVar2 != '\0') {
        FUN_004f61a4();
        iVar4 = iVar4 + -0x74;
      }
    }
    else {
      local_94 = local_94 & 0xffffff00;
      FUN_004f43ff(param_1_00,iVar1 + 0xe8,local_94,local_94,local_94);
    }
    FUN_004f61a4();
    FUN_004deb27();
    iVar1 = iVar1 + 0x74;
  }
  ExceptionList = local_88;
  ___security_check_cookie_4();
  return;
}



void FUN_005fef93(undefined4 param_1,code *param_2)

{
  char cVar1;
  
  cVar1 = (*param_2)();
  if (cVar1 != '\0') {
    FUN_005fed85();
  }
  cVar1 = (*param_2)(param_1);
  if (cVar1 != '\0') {
    FUN_005fed85();
  }
  cVar1 = (*param_2)();
  if (cVar1 != '\0') {
    FUN_005fed85();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_005fefd9(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  char cVar2;
  int iVar3;
  code *param_11;
  undefined auStack_a4 [108];
  undefined4 uStack_38;
  int iStack_34;
  code *pcStack_30;
  int local_1c;
  code *local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = param_1;
  local_18 = param_11;
  local_8 = 0;
  iVar1 = param_1_00 * 2;
  local_1c = param_1_00;
  while( true ) {
    iVar3 = iVar1 + 2;
    if (param_2 <= iVar3) break;
    iStack_34 = iVar3 * 0x74 + local_14;
    pcStack_30 = (code *)(iStack_34 + -0x74);
    uStack_38 = 0x5ff015;
    cVar2 = (*local_18)();
    if (cVar2 != '\0') {
      iVar3 = iVar1 + 1;
    }
    pcStack_30 = (code *)0x5ff02f;
    FUN_004f61a4();
    iVar1 = iVar3 * 2;
  }
  if (iVar3 == param_2) {
    pcStack_30 = (code *)0x5ff053;
    FUN_004f61a4();
  }
  pcStack_30 = local_18;
  local_18 = (code *)auStack_a4;
  FUN_004f615e(auStack_a4);
  FUN_005ff08d(local_14,local_1c);
  pcStack_30 = (code *)0x5ff087;
  FUN_004deb27();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_005ff08d(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  code *pcVar2;
  char cVar3;
  int iVar4;
  code *param_11;
  
  pcVar2 = param_11;
  iVar1 = param_1_00 + -1;
  while (iVar4 = iVar1 / 2, param_2 < param_1_00) {
    cVar3 = (*pcVar2)(iVar4 * 0x74 + param_1,&stack0x0000000c);
    if (cVar3 == '\0') break;
    FUN_004f61a4();
    iVar1 = iVar4 + -1;
    param_1_00 = iVar4;
  }
  FUN_004f61a4();
  FUN_004deb27();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_005ff418(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x188) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x180) != 0) {
    FUN_0040127a();
  }
  FUN_00485ebe();
  if (*(int *)(param_1_00 + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_004d9011(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __fastcall FUN_005ff48b(int param_1)

{
  return param_1 + 0x24;
}



int __fastcall FUN_005ff48f(int param_1)

{
  return *(int *)(param_1 + 0x17c) + 0x4c;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_005ff49f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::W468964DF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_005ff4e5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_005ff4fc(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WE711C61D::W468964DF::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_005ff49f(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_005ff927(void)

{
  undefined4 *puVar1;
  undefined4 local_6c4;
  undefined4 local_6c0;
  uint uStack_6bc;
  undefined auStack_6ac [12];
  undefined4 *local_6a0;
  undefined local_690 [1652];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c50c37;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_6ac;
  uStack_6bc = DAT_0323f878 ^ (uint)&stack0xfffff948;
  ExceptionList = &local_14;
  local_6a0 = &local_6c4;
  local_6c4 = 0x5022;
  local_6c0 = 0x79;
  puVar1 = (undefined4 *)FUN_00465be3(local_690);
  local_c = 0;
  local_6c4 = *puVar1;
  local_6a0 = &local_6c4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_006009f5(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00600a30(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::WDCBA2B9F>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::WDCBA2B9F*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00600a30(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::WDCBA2B9F>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::WDCBA2B9F*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::WDCBA2B9F>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::WDCBA2B9F*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00600ccc(void)

{
  undefined4 *puVar1;
  undefined4 local_3b4;
  undefined4 local_3b0;
  uint uStack_3ac;
  undefined auStack_39c [8];
  undefined4 *local_394;
  undefined local_384 [872];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c50a30;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_39c;
  uStack_3ac = DAT_0323f878 ^ (uint)&stack0xfffffc58;
  ExceptionList = &local_14;
  local_394 = &local_3b4;
  local_3b4 = 0xa0c;
  local_3b0 = 0xf0;
  puVar1 = (undefined4 *)FUN_00465be3(local_384);
  local_c = 0;
  local_3b4 = *puVar1;
  local_394 = &local_3b4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_006016e7(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00601722(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::WC28BAB34>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::WC28BAB34*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00601722(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::WC28BAB34>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::WC28BAB34*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::WC28BAB34>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::WC28BAB34*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_0060195f(int param_1)

{
  undefined4 uStack_488;
  undefined4 uStack_484;
  int **ppiStack_480;
  int *piStack_47c;
  int *piStack_478;
  uint uStack_474;
  undefined auStack_464 [8];
  int local_45c;
  undefined4 uStack_440;
  undefined auStack_43c [12];
  undefined4 *puStack_430;
  int **local_424;
  uint local_1c;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c5b9d7;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_464;
  uStack_474 = DAT_0323f878 ^ (uint)&stack0xfffffb90;
  ExceptionList = &local_14;
  piStack_47c = *(int **)(param_1 + 0x124);
  local_424 = &piStack_47c;
  ppiStack_480 = &piStack_47c;
  uStack_484 = 0x6019b9;
  piStack_478 = piStack_47c;
  local_45c = param_1;
  (**(code **)(*piStack_47c + 0x20))();
  uStack_484 = 0x6019c1;
  (**(code **)(**(int **)(param_1 + 4) + 0x10))();
  uStack_484 = 0x6019cc;
  FUN_004fa2a2();
  uStack_18 = 0;
  puStack_430 = &uStack_488;
  uStack_488 = uStack_440;
                    // WARNING: Subroutine does not return
  FUN_0043c023(auStack_43c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_006028cb(void)

{
  bool bVar1;
  undefined auStack_54 [16];
  undefined *puStack_44;
  int *piStack_40;
  int local_3c;
  int local_38;
  undefined local_24 [4];
  int local_20;
  int local_1c;
  int local_18;
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18 = 0;
  local_14 = (int *)auStack_54;
  local_8 = 0;
  FUN_004180b1();
  FUN_00516122(local_24);
  local_8._0_1_ = 1;
  local_38 = 0x60290c;
  FUN_004fe47e();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    local_38 = 0x60291c;
    FUN_0040127a();
  }
  bVar1 = local_1c != 0;
  if (!bVar1) {
    local_38 = 0xdb80ec62;
    local_3c = 0x602969;
    FUN_00b940e0();
    local_8 = 0xffffffff;
    if (local_18 != 0) {
      local_38 = 0x60297a;
      FUN_0040127a();
    }
    return bVar1;
  }
  local_38 = local_1c;
  local_14 = &local_3c;
  local_3c = local_1c;
  piStack_40 = &local_18;
                    // WARNING: Subroutine does not return
  puStack_44 = &UNK_00602949;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_00602984(void)

{
  bool bVar1;
  undefined auStack_54 [16];
  undefined *puStack_44;
  int *piStack_40;
  int local_3c;
  int local_38;
  undefined local_24 [4];
  int local_20;
  int local_1c;
  int local_18;
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18 = 0;
  local_14 = (int *)auStack_54;
  local_8 = 0;
  FUN_004180b1();
  FUN_00516122(local_24);
  local_8._0_1_ = 1;
  local_38 = 0x6029c5;
  FUN_004fe47e();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    local_38 = 0x6029d5;
    FUN_0040127a();
  }
  bVar1 = local_1c != 0;
  if (!bVar1) {
    local_38 = 0x8e8ecafa;
    local_3c = 0x602a22;
    FUN_00b940e0();
    local_8 = 0xffffffff;
    if (local_18 != 0) {
      local_38 = 0x602a33;
      FUN_0040127a();
    }
    return bVar1;
  }
  local_38 = local_1c;
  local_14 = &local_3c;
  local_3c = local_1c;
  piStack_40 = &local_18;
                    // WARNING: Subroutine does not return
  puStack_44 = &UNK_00602a02;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00602d3c(void)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_24 [4];
  int local_20;
  int local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18 = 0;
  local_8 = 0;
  FUN_004fbcd1(local_24);
  local_8._0_1_ = 1;
  FUN_004fe47e();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  cVar1 = local_1c != 0;
  if ((bool)cVar1) {
    cVar1 = FUN_005d3ad3(local_1c);
    if (cVar1 != '\0') goto LAB_00602dbc;
    uVar2 = 0xe431675c;
  }
  else {
    uVar2 = 0x99460348;
  }
  FUN_00b940e0(uVar2);
LAB_00602dbc:
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

uint __thiscall FUN_00602dd4(int param_1_00,undefined4 *param_1)

{
  uint uVar1;
  undefined auStack_60 [20];
  undefined4 uStack_4c;
  undefined *puStack_48;
  undefined **ppuStack_44;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  undefined *local_1c;
  int local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_30 = 0;
  local_2c = 0;
  local_28 = 0;
  local_24 = 0;
  ppuStack_44 = (undefined **)(param_1_00 + 0x10c);
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  puStack_48 = (undefined *)0x602e03;
  FUN_007b47f9();
  local_1c = auStack_60;
  FUN_004180b1();
  FUN_00516122();
  local_8._0_1_ = 2;
  ppuStack_44 = (undefined **)0x602e2d;
  FUN_004fe47e();
  local_8._0_1_ = 1;
  if (local_1c != (undefined *)0x0) {
    ppuStack_44 = (undefined **)0x602e3d;
    FUN_0040127a();
  }
  local_1c = auStack_60;
  FUN_004180b1();
  FUN_00516122();
  local_8._0_1_ = 3;
  ppuStack_44 = (undefined **)0x602e67;
  FUN_004fe47e();
  local_8._0_1_ = 1;
  if (local_1c != (undefined *)0x0) {
    ppuStack_44 = (undefined **)0x602e79;
    FUN_0040127a();
  }
  if ((local_30 != 0) && (local_28 != 0)) {
    ppuStack_44 = &local_1c;
    local_1c = (undefined *)0x0;
    local_18[0] = 0;
    puStack_48 = (undefined *)0x602ea8;
    FUN_00ba477f();
    ppuStack_44 = (undefined **)local_18;
    puStack_48 = (undefined *)0x602eb4;
    FUN_00ba477f();
    puStack_48 = local_1c + local_18[0];
    ppuStack_44 = (undefined **)0x0;
    uStack_4c = 0x602ec8;
    (**(code **)*param_1)();
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1_00 + 0x120);
  }
  ppuStack_44 = (undefined **)0x8d822842;
  puStack_48 = (undefined *)0x602fb5;
  uVar1 = FUN_00b940e0();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_24 != 0) {
    ppuStack_44 = (undefined **)0x602fc5;
    uVar1 = FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_2c != 0) {
    ppuStack_44 = (undefined **)0x602fd5;
    uVar1 = FUN_0040127a();
  }
  return uVar1 & 0xffffff00;
}



char __fastcall FUN_00602fe0(int param_1)

{
  char cVar1;
  int *in_EAX;
  undefined4 *unaff_EBX;
  undefined4 uVar2;
  undefined4 local_c;
  undefined4 uStack_8;
  
  local_c = 0;
  uStack_8 = param_1;
  cVar1 = (**(code **)(*in_EAX + 0x14))(&local_c);
  if (cVar1 == '\0') {
    uVar2 = 0xf1c0ff92;
  }
  else {
    uStack_8._3_1_ = cVar1;
    FUN_007b4c35(param_1 + 0x10c);
    (**(code **)*unaff_EBX)(local_c,0);
    cVar1 = FUN_005d3ad3();
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0xea3ca4e4;
  }
  uStack_8._3_1_ = '\0';
  FUN_00b940e0(uVar2);
  return uStack_8._3_1_;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_00603055(int param_1)

{
  int *piVar1;
  char cVar2;
  int **ppiVar3;
  undefined4 *puVar4;
  undefined *puStack_b8;
  int iStack_b4;
  int *piStack_b0;
  undefined4 *puStack_ac;
  undefined *puStack_a8;
  undefined local_94 [24];
  undefined local_7c [8];
  undefined local_74 [4];
  int local_70;
  undefined4 local_6c;
  int local_68;
  undefined8 local_64;
  int local_5c;
  undefined local_55;
  undefined local_54 [76];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x84;
  local_8 = 0x603064;
  piVar1 = *(int **)(*(int *)(param_1 + 0x11c) + 0x10);
  puStack_a8 = local_74;
  local_5c = 3;
  puStack_ac = (undefined4 *)0x60307f;
  ppiVar3 = (int **)FUN_005f0832();
  local_8 = 0;
  puStack_a8 = (undefined *)0x0;
  puStack_ac = &local_6c;
  piStack_b0 = (int *)0x603090;
  (**(code **)(**ppiVar3 + 0x18))();
  local_8._0_1_ = 2;
  if (local_70 != 0) {
    piStack_b0 = (int *)0x6030a0;
    FUN_0040127a();
  }
  piStack_b0 = (int *)0x0;
  iStack_b4 = 0;
  puStack_b8 = (undefined *)0x3c;
  local_64 = FUN_0043b546(0,0);
  piStack_b0 = (int *)0x6030c2;
  FUN_00b98ea0();
  piStack_b0 = (int *)local_94;
  local_8._0_1_ = 3;
  iStack_b4 = local_6c;
  puStack_b8 = local_54;
  FUN_00b9f55b();
  local_8 = CONCAT31(local_8._1_3_,5);
  piStack_b0 = (int *)0x6030e8;
  FUN_00b98d40();
  piStack_b0 = &local_5c;
  iStack_b4 = 0x6030f6;
  cVar2 = (**(code **)(*piVar1 + 0x124))();
  if (cVar2 == '\0') {
    iStack_b4 = 0xbb241dae;
    puStack_b8 = (undefined *)0x60310b;
    FUN_00b940e0();
  }
  local_8 = CONCAT31(local_8._1_3_,2);
  iStack_b4 = 0x603118;
  FUN_00b9f511();
  local_8 = 0xffffffff;
  if (local_68 != 0) {
    iStack_b4 = 0x603128;
    FUN_0040127a();
  }
  if ((cVar2 != '\0') && (local_5c != 0)) {
    if (local_5c == 4) {
      iStack_b4 = param_1 + 0x118;
      puStack_b8 = (undefined *)0x603173;
      FUN_007e2b4d();
      local_64._4_4_ = &puStack_b8;
      puStack_b8 = (undefined *)0xa0c;
      iStack_b4 = 0x142;
      puVar4 = (undefined4 *)FUN_00465be3(local_7c);
      local_64._4_4_ = &puStack_b8;
      local_8 = 6;
      puStack_b8 = (undefined *)*puVar4;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar4 + 1);
    }
    iStack_b4 = 0x80cc7ddf;
    local_55 = (undefined)local_5c;
    puStack_b8 = (undefined *)0x603155;
    FUN_00b940e0();
    iStack_b4 = 1;
    puStack_b8 = &local_55;
    FUN_00b940c0(0x80cc7ddf);
  }
  iStack_b4 = 0x6031e6;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006031e7(undefined4 **param_1,undefined4 **param_2)

{
  int *piVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 local_54 [4];
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 *puStack_3c;
  undefined4 *local_38 [5];
  int *local_24;
  undefined4 *local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_24 = *(int **)(*(int *)((int)param_1 + 0x11c) + 0x10);
  local_20 = (undefined4 *)0x0;
  local_1c = (undefined4 *)0x0;
  local_18 = (undefined4 *)0x0;
  param_1 = (undefined4 **)local_54;
  local_8 = 2;
  FUN_004180b1();
  cVar2 = FUN_00bbfff0(&local_20);
  if (cVar2 == '\0') {
LAB_0060327e:
    local_38[0] = (undefined4 *)0xa9a161b8;
    cVar2 = '\0';
    puStack_3c = (undefined4 *)0x60328f;
    FUN_00b940e0();
  }
  else {
    param_1 = (undefined4 **)local_54;
    FUN_004180b1();
    cVar2 = FUN_00bbfff0(&local_1c);
    if (cVar2 == '\0') goto LAB_0060327e;
    param_1 = (undefined4 **)local_54;
    FUN_004180b1();
    cVar2 = FUN_00bbfff0(&local_18);
    if (cVar2 == '\0') goto LAB_0060327e;
    cVar2 = '\x01';
  }
  local_14 = (undefined4 *)0x0;
  local_8._0_1_ = 3;
  if (cVar2 != '\0') {
    puStack_3c = &param_1;
    local_38[0] = (undefined4 *)0x0;
    uStack_40 = 0x6032b0;
    puVar3 = (undefined4 *)FUN_00b933f0();
    local_38[0] = (undefined4 *)*puVar3;
    *puVar3 = 0;
    puStack_3c = (undefined4 *)0x6032bf;
    FUN_0040c727();
    if (param_1 != (undefined4 **)0x0) {
      local_38[0] = (undefined4 *)0x1;
      puStack_3c = (undefined4 *)0x6032cc;
      (*(code *)**param_1)();
    }
    local_38[0] = local_20;
    piVar1 = local_24;
    param_1 = local_38;
    local_20 = (undefined4 *)0x0;
    puStack_3c = (undefined4 *)0x6;
    uStack_40 = 0;
    uStack_44 = 0x6032ec;
    cVar2 = (**(code **)(*local_24 + 0x138))();
    if (cVar2 == '\0') {
      local_38[0] = (undefined4 *)0xc86ae9b7;
      cVar2 = '\0';
    }
    else {
      param_1 = local_38;
      local_38[0] = local_1c;
      puStack_3c = (undefined4 *)0xe;
      uStack_40 = 0;
      local_1c = (undefined4 *)0x0;
      uStack_44 = 0x60331c;
      cVar2 = (**(code **)(*piVar1 + 0x138))();
      if (cVar2 == '\0') {
        local_38[0] = (undefined4 *)0xebb687fd;
        cVar2 = '\0';
      }
      else {
        param_1 = local_38;
        local_38[0] = local_18;
        puStack_3c = (undefined4 *)0x1c;
        uStack_40 = 0;
        local_18 = (undefined4 *)0x0;
        uStack_44 = 0x603349;
        cVar2 = (**(code **)(*piVar1 + 0x138))();
        if (cVar2 == '\0') {
          local_38[0] = (undefined4 *)0xc9337a41;
          cVar2 = '\0';
        }
        else {
          param_1 = local_38;
          local_38[0] = local_14;
          puStack_3c = (undefined4 *)0x13;
          uStack_40 = 0;
          local_14 = (undefined4 *)0x0;
          uStack_44 = 0x603376;
          cVar2 = (**(code **)(*piVar1 + 0x138))();
          if (cVar2 != '\0') goto LAB_0060338c;
          local_38[0] = (undefined4 *)0xfa61da97;
        }
      }
    }
    puStack_3c = (undefined4 *)0x60338b;
    FUN_00b940e0();
  }
LAB_0060338c:
  param_1 = (undefined4 **)0x0;
  local_8._0_1_ = 4;
  if (cVar2 != '\0') {
    local_38[0] = param_2;
    puStack_3c = (undefined4 *)0x6033a3;
    cVar2 = FUN_00b9f072();
    piVar1 = local_24;
    local_38[0] = param_1;
    if (cVar2 == '\0') {
      local_38[0] = (undefined4 *)0x935dd98d;
      cVar2 = '\0';
    }
    else {
      param_1 = (undefined4 **)0x0;
      param_2 = local_38;
      puStack_3c = &param_2;
      uStack_40 = 0x6033d5;
      cVar2 = (**(code **)(*local_24 + 0xf4))();
      if ((cVar2 == '\0') || (param_2 != (undefined4 **)0x0)) {
        cVar2 = '\0';
        local_38[0] = (undefined4 *)0xd0b80bba;
      }
      else {
        local_38[0] = (undefined4 *)0x6033f7;
        cVar2 = (**(code **)(*piVar1 + 0xf8))();
        if (cVar2 != '\0') goto LAB_0060340d;
        local_38[0] = (undefined4 *)0x867db979;
      }
    }
    puStack_3c = (undefined4 *)0x60340c;
    FUN_00b940e0();
  }
LAB_0060340d:
  local_8._0_1_ = 3;
  if (param_1 != (undefined4 **)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x60341e;
    (*(code *)**param_1)();
  }
  local_8._0_1_ = 2;
  if (local_14 != (undefined4 *)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x60342f;
    (**(code **)*local_14)();
  }
  local_8._0_1_ = 1;
  if (local_18 != (undefined4 *)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x603440;
    (**(code **)*local_18)();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_1c != (undefined4 *)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x603451;
    (**(code **)*local_1c)();
  }
  local_8 = 0xffffffff;
  if (local_20 != (undefined4 *)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x603462;
    (**(code **)*local_20)();
  }
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __fastcall
FUN_0060346c(undefined4 *param_1_00,int param_2_00,undefined4 param_1,undefined4 *param_2,
            undefined4 param_3,undefined4 param_4)

{
  int *piVar1;
  undefined4 uVar2;
  undefined local_2c [4];
  int local_28;
  int *local_24;
  int local_20;
  undefined4 local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_24 = (int *)0x0;
  local_20 = 0;
  local_8 = 0;
  (**(code **)*param_1_00)(local_2c,param_3,param_4);
  local_8._0_1_ = 1;
  FUN_004fe47e();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_28 != 0) {
    FUN_0040127a();
  }
  piVar1 = local_24;
  local_15 = local_24 != (int *)0x0;
  if (!(bool)local_15) {
    FUN_00b940e0(0x8d7779d8);
  }
  local_1c = 0;
  if (local_15 != '\0') {
    local_15 = (**(code **)(*piVar1 + 0x14))(&local_1c);
    if (local_15 == '\0') {
      uVar2 = 0xefc127be;
      local_15 = '\0';
    }
    else {
      FUN_007b4c35(param_2_00 + 0x10c);
      (**(code **)*param_2)(local_1c,0);
      local_15 = FUN_005d3ad3(piVar1);
      if (local_15 != '\0') {
        FUN_007dd228();
        FUN_007dd1f3();
        goto LAB_00603552;
      }
      uVar2 = 0xd194fa6d;
    }
    FUN_00b940e0(uVar2);
  }
LAB_00603552:
  local_8 = 0xffffffff;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  return local_15;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0060356d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x603579;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WA4711E69::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WA4711E69::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00603623(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x60362f;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W976EB533::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W976EB533::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0060371f(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void Catch_All_00603778(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void FUN_0060378b(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006037c6(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::WFB49BA8F>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::WFB49BA8F*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006037c6(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::WFB49BA8F>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::WFB49BA8F*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::WFB49BA8F>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::WFB49BA8F*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00603b1e(int param_1)

{
  if (*(int *)(param_1 + 0x30) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x28) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_004d9011(param_1);
  return;
}



undefined4 __thiscall FUN_00603b72(undefined4 param_1_00,byte param_1)

{
  FUN_00603b1e(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00603b8f(void)

{
  FUN_007b2498();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_006042b2(int param_1_00,byte param_1)

{
  FUN_00417fe6();
  if (*(int *)(param_1_00 + 0x130) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x128) != 0) {
    FUN_0040127a();
  }
  FUN_00700217(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00604318(void)

{
  undefined4 *puVar1;
  undefined4 local_41c;
  undefined4 local_418;
  uint uStack_414;
  undefined auStack_404 [12];
  undefined local_3f8 [120];
  undefined4 *local_380;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b85d;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_404;
  uStack_414 = DAT_0323f878 ^ (uint)&stack0xfffffbf0;
  ExceptionList = &local_14;
  local_380 = &local_41c;
  local_41c = 0x5022;
  local_418 = 0x7b;
  puVar1 = (undefined4 *)FUN_00465be3(local_3f8);
  local_c = 0;
  local_41c = *puVar1;
  local_380 = &local_41c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00605165(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006051a0(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::W3DD59A9F>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::W3DD59A9F*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006051a0(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::W3DD59A9F>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::W3DD59A9F*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W1A59884D::W3DD59A9F>,class_boost::_bi::list1<class_boost::_bi::value<class_W1A59884D::W3DD59A9F*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00605866(void)

{
  undefined local_14 [8];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  FUN_007b36ec(local_14);
  ___security_check_cookie_4();
  return;
}



void FUN_0060598c(void)

{
  undefined4 *puVar1;
  undefined4 local_4ec;
  undefined4 local_4e8;
  uint uStack_4e4;
  undefined auStack_4d4 [28];
  undefined local_4b8 [8];
  undefined4 *local_4b0;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c508e0;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_4d4;
  uStack_4e4 = DAT_0323f878 ^ (uint)&stack0xfffffb20;
  ExceptionList = &local_14;
  local_4b0 = &local_4ec;
  local_4ec = 0xa0c;
  local_4e8 = 0x104;
  puVar1 = (undefined4 *)FUN_00465be3(local_4b8);
  local_c = 0;
  local_4ec = *puVar1;
  local_4b0 = &local_4ec;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_006066f0(undefined4 param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0;
  piVar2 = (int *)FUN_004f2556(local_18,&param_1);
  iVar1 = *piVar2;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    FUN_0040127a();
  }
  return iVar1 != 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00606dad(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x128) != 0) {
    FUN_0040127a();
  }
  FUN_00700217(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00606df2(void)

{
  undefined4 *puVar1;
  undefined4 local_46c;
  undefined4 local_468;
  uint uStack_464;
  undefined auStack_454 [8];
  undefined4 *local_44c;
  undefined local_43c [1056];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5077e;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_454;
  uStack_464 = DAT_0323f878 ^ (uint)&stack0xfffffba0;
  ExceptionList = &local_14;
  local_44c = &local_46c;
  local_46c = 0xa0c;
  local_468 = 0x141;
  puVar1 = (undefined4 *)FUN_00465be3(local_43c);
  local_c = 0;
  local_46c = *puVar1;
  local_44c = &local_46c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 FUN_00607a72(undefined4 param_1)

{
  undefined4 uVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c221a0;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar1 = FUN_00672a11(DAT_0323f878 ^ (uint)&stack0xffffffc0);
  local_c = 0;
  FUN_004fc9c9(uVar1);
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00607d18(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x607d24;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WEFC6564E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WEFC6564E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00607dce(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::WCC88F904>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00607e14(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00607e2b(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WE711C61D::WCC88F904::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00607dce(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00608ac4(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W13A880BC::W6734E74B::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0060a608(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_00608b2b(int *param_1)

{
  undefined4 *puVar1;
  undefined local_24 [16];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  puVar1 = (undefined4 *)FUN_0047ac54(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*param_1 + 4))(&local_14);
  return;
}



void FUN_00608b56(void)

{
  undefined4 *puVar1;
  int *unaff_EBX;
  undefined local_24 [16];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  puVar1 = (undefined4 *)FUN_0047ac98(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00608b80(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W87060954::W2871EC39::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0060a665(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_00608be7(void)

{
  undefined4 *puVar1;
  int *unaff_EBX;
  undefined local_24 [16];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  puVar1 = (undefined4 *)FUN_00419610(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  puVar1 = (undefined4 *)FUN_0041957a(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  puVar1 = (undefined4 *)FUN_004196a6(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  puVar1 = (undefined4 *)FUN_00419759(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  puVar1 = (undefined4 *)FUN_004194e7(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00608f4e(void)

{
  undefined4 *puVar1;
  undefined *local_c0;
  undefined auStack_b8 [24];
  undefined4 uStack_a0;
  undefined *puStack_9c;
  undefined local_50 [52];
  undefined **local_1c;
  undefined *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x78;
  local_8 = 0x608f5a;
  local_14 = 0;
  puStack_9c = local_50;
  uStack_a0 = 0x608f67;
  FUN_00507ed8();
  local_18 = auStack_b8;
  local_8 = 1;
  local_c0 = &LAB_00608e66;
  FUN_0060a52c();
  local_8 = CONCAT31(local_8._1_3_,2);
  local_c0 = (undefined *)0x608f92;
  puVar1 = (undefined4 *)FUN_00608b80();
  local_c0 = (undefined *)*puVar1;
  local_1c = &local_c0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



char FUN_00609677(undefined4 param_1,char param_2)

{
  char cVar1;
  int in_EAX;
  char local_5;
  
  FUN_005079d0(FUN_005d1cc5,*(undefined4 *)(in_EAX + 4));
  cVar1 = FUN_005d2ca5();
  if (cVar1 == '\0') {
    local_5 = '\0';
  }
  else {
    cVar1 = FUN_005d2d25();
    if (cVar1 == '\0') {
      FUN_00b940e0();
      FUN_007e2a43();
      return '\0';
    }
    if (param_2 == '\0') {
      return cVar1;
    }
    local_5 = FUN_005d2e7a();
    if (local_5 != '\0') {
      FUN_007e2c7c();
      FUN_007e29a3();
      return local_5;
    }
  }
  FUN_00b940e0();
  return local_5;
}



char FUN_0060974e(void)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0xaed948d8;
  }
  else {
    FUN_00608f4e(local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0xefc17b17;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006097f7(void)

{
  int unaff_EBX;
  undefined4 local_40;
  int iStack_3c;
  undefined4 *local_18;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  uStack_8 = 0x609803;
  iStack_3c = unaff_EBX + 0x10c;
  local_40 = 0x60980f;
  FUN_007b4f22();
  local_18 = &local_40;
  local_40 = *(undefined4 *)(unaff_EBX + 0x11c);
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EBX + 0x120);
}



void FUN_00609ece(int param_1,int param_2)

{
  FUN_0041be41(param_1,param_2);
  FUN_0041ba77();
  FUN_0041ba77();
  *(undefined4 *)(param_1 + 0x244) = *(undefined4 *)(param_2 + 0x244);
  *(undefined4 *)(param_1 + 0x248) = *(undefined4 *)(param_2 + 0x248);
  *(undefined4 *)(param_1 + 0x24c) = *(undefined4 *)(param_2 + 0x24c);
  *(undefined4 *)(param_1 + 0x250) = *(undefined4 *)(param_2 + 0x250);
  *(undefined *)(param_1 + 0x254) = *(undefined *)(param_2 + 0x254);
  return;
}



void FUN_0060a0c8(void)

{
  int in_EAX;
  
  FUN_007b48d0();
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0x120);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_0060a1bb(undefined *param_1,undefined4 *param_2,int param_3,int param_4)

{
  int unaff_ESI;
  undefined4 auStack_5c [2];
  undefined4 uStack_54;
  undefined4 uStack_38;
  undefined *puStack_34;
  undefined **ppuStack_30;
  undefined4 *local_18;
  undefined local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0;
  local_11 = param_3 != 0;
  *param_1 = 0;
  if (!(bool)local_11) {
    ppuStack_30 = (undefined **)0xfa02976d;
    puStack_34 = (undefined *)0x60a1ec;
    FUN_00b940e0();
    local_8 = 0xffffffff;
    if (param_4 != 0) {
      ppuStack_30 = (undefined **)0x60a299;
      FUN_0040127a();
    }
    return local_11;
  }
  ppuStack_30 = (undefined **)(unaff_ESI + 0x10c);
  puStack_34 = (undefined *)0x60a1fe;
  FUN_007b47f9();
  ppuStack_30 = (undefined **)&local_18;
  local_18 = (undefined4 *)0x0;
  puStack_34 = (undefined *)0x60a20d;
  FUN_00ba477f();
  ppuStack_30 = (undefined **)0x0;
  puStack_34 = (undefined *)local_18;
  uStack_38 = 0x60a21a;
  (**(code **)*param_2)();
  uStack_54 = 0;
  local_18 = auStack_5c;
  auStack_5c[0] = *(undefined4 *)(unaff_ESI + 0x11c);
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_ESI + 0x120);
}



void FUN_0060a4de(undefined4 param_1,undefined4 param_2)

{
  FUN_00608be7();
  FUN_005f509c();
  FUN_005f5072();
  FUN_005f295c();
  FUN_005f5048();
  FUN_005f4fe2();
  FUN_0060a50f(param_1,param_2);
  return;
}



void FUN_0060a50f(undefined4 param_1,undefined4 param_2)

{
  FUN_00608b56();
  FUN_00608b2b(param_1,param_2);
  return;
}



void FUN_0060a52c(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_026b9071;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0060a575(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x60a581;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_0060a6c2(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = W76AFA8BF::W49BE43B4::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0060a608(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W13A880BC::W6734E74B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0060a64e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0060a665(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W87060954::W2871EC39>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0060a6ab(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_0060a6c2(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W76AFA8BF::W49BE43B4*,class_boost::detail::sp_ms_deleter<class_W76AFA8BF::W49BE43B4>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_0060a708(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x18) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0060a719(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0060a775(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W1A59884D::W33E7BA13,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W1A59884D::W33E7BA13*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



uint __thiscall FUN_0060a754(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W76AFA8BF::W49BE43B4>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



void FUN_0060a775(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W1A59884D::W33E7BA13,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W1A59884D::W33E7BA13*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W1A59884D::W33E7BA13,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W1A59884D::W33E7BA13*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060a7be(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x60a7ca;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b9128,10);
  local_8 = 0;
  local_18 = 0x1cf291c4;
  local_14 = 0xa778c50d;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060a80f(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x60a81b;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b9140,0xf);
  local_8 = 0;
  local_18 = 0x70d8e59d;
  local_14 = 0xcb725cad;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060a860(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x60a86c;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b9160,0xb);
  local_8 = 0;
  local_18 = 0xb819bcb4;
  local_14 = 0x99318178;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



void Catch_All_0060abba(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void Catch_All_0060ac13(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void Catch_All_0060ac6c(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void Catch_All_0060acc5(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_0060acd8(int param_1_00,int param_1,int param_2,int *param_3,undefined4 param_4)

{
  int iVar1;
  undefined4 uVar2;
  char *pcVar3;
  undefined local_f4 [40];
  undefined local_cc [44];
  undefined local_a0 [12];
  undefined local_94 [4];
  int local_90;
  int *local_8c;
  int local_88;
  int local_84;
  undefined local_80 [12];
  int local_74;
  int local_70;
  int *local_68;
  uint local_64;
  undefined local_60 [4];
  int local_5c;
  char local_55;
  undefined **local_54;
  undefined local_50 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_34 [24];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xe4;
  local_8 = 0x60ace7;
  local_84 = param_2;
  local_68 = param_3;
  local_5c = param_1_00;
  FUN_004fcc16(local_94,param_3);
  local_8 = 0;
  local_1c = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_34,0);
  local_8._0_1_ = 1;
  FUN_00674aaa(local_80);
  local_8 = CONCAT31(local_8._1_3_,2);
  if (param_1 == 0) {
    pcVar3 = "B";
LAB_0060ad91:
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_34,pcVar3);
  }
  else {
    if (param_1 == 1) {
      pcVar3 = "CR";
      goto LAB_0060ad91;
    }
    if (param_1 == 2) {
      pcVar3 = "R";
      goto LAB_0060ad91;
    }
    if (param_1 != 3) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (local_34,"UNK");
      goto LAB_0060adac;
    }
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_34,"F");
    local_54 = (undefined **)0xd34fff29;
    FUN_0041b043(&local_54);
    local_54 = (undefined **)0xf2815168;
    FUN_0041b043(&local_54);
  }
  local_54 = (undefined **)0x956f9d8b;
  FUN_0041b043(&local_54);
LAB_0060adac:
  local_54 = W71DA37B9::W49A5B207::vftable;
  local_8._0_1_ = 3;
  FUN_004fd9f6();
  local_8._0_1_ = 5;
  local_54 = W71DA37B9::W65C793C4::vftable;
  (**(code **)(*local_68 + 0x40))(&local_8c);
  local_8._0_1_ = 6;
  FUN_004fcd79();
  local_64 = 0;
  local_8._0_1_ = 7;
  if (local_70 - local_74 >> 2 != 0) {
    do {
      uVar2 = FUN_0041b02a();
      FUN_0042c446(uVar2);
      local_64 = local_64 + 1;
      param_1_00 = local_5c;
    } while (local_64 < (uint)(local_70 - local_74 >> 2));
  }
  FUN_004fcce7(local_60);
  local_8._0_1_ = 8;
  FUN_004fe47e();
  local_8._0_1_ = 7;
  if (local_5c != 0) {
    FUN_0040127a();
  }
  FUN_005d11c9(local_a0);
  FUN_0043d406(param_4);
  local_8 = CONCAT31(local_8._1_3_,9);
  local_55 = (**(code **)(*local_8c + 4))(param_1_00,local_cc);
  if (local_55 == '\0') {
    FUN_00b940e0(0xe435242);
  }
  local_8._0_1_ = 7;
  if ((char)local_5c != '\0') {
    FUN_00401477();
  }
  if (local_55 != '\0') {
    FUN_0043d406(param_4);
    iVar1 = local_84;
    local_8._0_1_ = 10;
    uVar2 = FUN_006858d7(local_f4);
    local_8._0_1_ = 0xb;
    FUN_007b84ca(uVar2);
    local_8._0_1_ = 10;
    FUN_004017b2(1,0);
    FUN_007b859e(local_50);
    FUN_007b8622(*(undefined4 *)(iVar1 + 100));
    FUN_007b868c(local_34);
    local_8._0_1_ = 7;
    if ((char)local_5c != '\0') {
      FUN_00401477();
    }
  }
  local_8._0_1_ = 6;
  FUN_007b408b();
  local_8 = CONCAT31(local_8._1_3_,5);
  if (local_88 != 0) {
    FUN_0040127a();
  }
  FUN_004017b2(1,0);
  FUN_007a7d86();
  FUN_004017b2(1,0);
  local_8 = 0xffffffff;
  if (local_90 != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_0060af96(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_24 = 0;
  local_20 = 0;
  local_8 = 0;
  local_48 = 0x60afbe;
  FUN_007dd2a5();
  local_48 = param_2;
  local_8._0_1_ = 1;
  local_4c = 0x60afcd;
  FUN_0043d406();
  local_18 = &local_4c;
  local_8 = CONCAT31(local_8._1_3_,2);
  local_4c = *param_1_00;
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_0060b0dd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x60b0e9;
  local_4c = 0x60b0fa;
  FUN_007dd2a5();
  local_20 = 0;
  local_1c = 0;
  local_4c = param_1;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  local_50 = 0x60b114;
  FUN_0043d406();
  local_18 = &local_50;
  local_8 = CONCAT31(local_8._1_3_,2);
  local_50 = *param_1_00;
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_0060b1df(int **param_1,undefined4 param_2)

{
  char cVar1;
  char local_18;
  
  cVar1 = '\x01';
  FUN_0043d406(param_2);
  if (*param_1 != (int *)0x0) {
    cVar1 = (**(code **)(**param_1 + 0x18))();
    if (cVar1 == '\0') {
      FUN_00b940e0(0x8ba6bd06);
    }
  }
  if (local_18 != '\0') {
    FUN_00401477();
  }
  return cVar1;
}



void Catch_All_0060b280(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * FUN_0060c619(undefined4 *param_1,undefined *param_2,int param_3)

{
  *param_2 = 1;
  if (param_3 == 0x10) {
    *param_2 = 0;
    FUN_004180b1();
  }
  else {
    *param_1 = 0;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0060c690(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W560DA063::W96D93A4D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0060c6d6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0060c6ed(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x68);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00b5e08b(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0060c690(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



undefined4 FUN_0060c75e(undefined4 param_1)

{
  FUN_004180b1();
  return param_1;
}



undefined4 * FUN_0060cbd0(undefined4 *param_1,undefined *param_2,int param_3)

{
  *param_2 = 1;
  if ((((param_3 == 0x10) || (param_3 == 0x1d)) || (param_3 == 0x24)) ||
     ((param_3 == 0x25 || (param_3 == 0x31)))) {
    FUN_004180b1();
  }
  else {
    *param_1 = 0;
  }
  return param_1;
}



undefined4 * FUN_0060d258(undefined4 *param_1,undefined *param_2,int param_3)

{
  *param_2 = 1;
  if (((param_3 == 0x24) || (param_3 == 0x25)) || (param_3 == 0x31)) {
    FUN_004180b1();
  }
  else {
    *param_1 = 0;
  }
  return param_1;
}



void __thiscall FUN_0060d4ba(uint *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  uint uVar2;
  uint *extraout_ECX;
  undefined local_40 [44];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2247f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a(DAT_0323f878 ^ (uint)local_40);
    local_c = 0;
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  (**(code **)((uVar2 & 0xfffffffe) + 4))(param_1_00 + 2,param_1);
  ExceptionList = local_14;
  return;
}



undefined FUN_0060d51e(int param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  char cVar5;
  undefined4 *puVar6;
  undefined local_24 [32];
  
  cVar5 = FUN_00ba723a();
  if ((cVar5 != '\0') && (cVar5 = FUN_00ba7183(), cVar5 != '\0')) {
    puVar6 = (undefined4 *)FUN_0047b00c(local_24);
    uVar1 = *puVar6;
    uVar2 = puVar6[1];
    uVar3 = puVar6[2];
    uVar4 = puVar6[3];
    *(undefined4 *)(param_1 + 0x1d4) = 0;
    *(undefined4 *)(param_1 + 0x16c) = uVar1;
    *(undefined4 *)(param_1 + 0x170) = uVar2;
    *(undefined4 *)(param_1 + 0x174) = uVar3;
    *(undefined4 *)(param_1 + 0x178) = uVar4;
    *(undefined4 *)(param_1 + 0x1cc) = 1;
    return 1;
  }
  return 0;
}



undefined4 FUN_0060d632(undefined4 param_1)

{
  FUN_00b9b180();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060d64a(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x60d656;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b92d4,0xe);
  local_8 = 0;
  local_18 = 0x45cff4a7;
  local_14 = 0xd75dc025;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060d69b(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x60d6a7;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026b92f4,0x12);
  local_8 = 0;
  local_14[0] = 0xe8c6ee6b;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060d6f0(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x60d6fc;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026b9308,0x19);
  local_8 = 0;
  local_14[0] = 0x365c6c6f;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060d745(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x60d751;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026b9324,0x13);
  local_8 = 0;
  local_14[0] = 0x82671eef;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060d79a(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x60d7a6;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026b9338,0x1a);
  local_8 = 0;
  local_14[0] = 0xbb0d7d8a;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060d7ef(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x60d7fb;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026b9354,0x1d);
  local_8 = 0;
  local_14[0] = 0x935a167;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060d844(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x60d850;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026b9374,0x1f);
  local_8 = 0;
  local_14[0] = 0x24941f6a;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060d899(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x60d8a5;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026b9394,0x20);
  local_8 = 0;
  local_14[0] = 0x9105f38a;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060d8ee(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x60d8fa;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026b93b8,0x15);
  local_8 = 0;
  local_14[0] = 0x5559e3a2;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060d943(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x60d94f;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026b93d0,0x16);
  local_8 = 0;
  local_14[0] = 0x2fc16eca;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060d998(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x60d9a4;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026b93e8,0x14);
  local_8 = 0;
  local_14[0] = 0x516f1579;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060d9ed(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x60d9f9;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026b9400,0x15);
  local_8 = 0;
  local_14[0] = 0x60cd8fee;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060da42(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x60da4e;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026b9418,0x18);
  local_8 = 0;
  local_14[0] = 0x5168a618;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060da97(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x60daa3;
  local_14[0] = (undefined *)0x0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026b9434,0x1b);
  local_8 = 0;
  local_14[0] = &UNK_01ff9435;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0060daec(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x60daf8;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026b9450,0xf);
  local_8 = 0;
  local_14[0] = 0xc466b0cc;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0060db41(undefined4 *param_1)

{
  *param_1 = W8D227ECF::W07E2F818::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  FUN_0060dbf9(param_1);
  return param_1;
}



undefined4 __thiscall FUN_0060db9b(undefined4 param_1_00,byte param_1)

{
  FUN_0060dbb7();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0060dbb7(undefined4 *param_1)

{
  *param_1 = W8D227ECF::W07E2F818::vftable;
  FUN_006d0310();
  FUN_005e72d0();
  return;
}



void Catch_All_0060dbef(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_0060dbf9(int param_1)

{
  int iVar1;
  char cVar2;
  undefined4 uVar3;
  undefined4 local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  iVar1 = param_1;
  uStack_4 = 0x48;
  local_8 = 0x60dc05;
  uVar3 = FUN_0060d64a();
  local_8 = 0;
  FUN_00b92720(uVar3);
  local_8._0_1_ = 1;
  FUN_00808b10();
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_005e72d0();
  local_8 = 0xffffffff;
  FUN_00401829(1,0);
  cVar2 = FUN_00b92660();
  param_1._3_1_ = cVar2;
  if (cVar2 == '\0') {
    FUN_00b940e0(0x437ce260);
  }
  else {
    FUN_0060d69b();
    local_1c = 0;
    local_15 = FUN_00b92610(&local_1c);
    *(undefined4 *)(param_1 + 0xc) = local_1c;
    FUN_004017b2(1,0);
    if (local_15 == '\0') {
      param_1._3_1_ = '\0';
    }
    FUN_0060d6f0();
    local_1c = 0;
    local_15 = FUN_00b92610(&local_1c);
    *(undefined4 *)(iVar1 + 0x10) = local_1c;
    FUN_004017b2(1,0);
    if (local_15 == '\0') {
      param_1._3_1_ = '\0';
    }
    FUN_0060d844();
    local_1c = 0;
    local_15 = FUN_00b92610(&local_1c);
    *(undefined4 *)(iVar1 + 0x14) = local_1c;
    FUN_004017b2(1,0);
    if (local_15 == '\0') {
      param_1._3_1_ = '\0';
    }
    FUN_0060d899();
    local_1c = 0;
    local_15 = FUN_00b92610(&local_1c);
    *(undefined4 *)(iVar1 + 0x18) = local_1c;
    FUN_004017b2(1,0);
    if (local_15 == '\0') {
      param_1._3_1_ = '\0';
    }
    FUN_0060d998();
    local_1c = 0;
    local_15 = FUN_00b92610(&local_1c);
    *(undefined4 *)(iVar1 + 0x1c) = local_1c;
    FUN_004017b2(1,0);
    if (local_15 == '\0') {
      param_1._3_1_ = '\0';
    }
    FUN_0060d9ed();
    local_1c = 0;
    local_15 = FUN_00b92610(&local_1c);
    *(undefined4 *)(iVar1 + 0x20) = local_1c;
    FUN_004017b2(1,0);
    if (local_15 == '\0') {
      param_1._3_1_ = '\0';
    }
    FUN_0060d8ee();
    local_1c = 0;
    local_15 = FUN_00b92610(&local_1c);
    *(undefined4 *)(iVar1 + 0x24) = local_1c;
    FUN_004017b2(1,0);
    if (local_15 == '\0') {
      param_1._3_1_ = '\0';
    }
    FUN_0060d943();
    local_1c = 0;
    local_15 = FUN_00b92610(&local_1c);
    *(undefined4 *)(iVar1 + 0x28) = local_1c;
    FUN_004017b2(1,0);
    if (local_15 == '\0') {
      param_1._3_1_ = '\0';
    }
    FUN_0060da42();
    local_1c = 0;
    local_15 = FUN_00b92610(&local_1c);
    *(undefined4 *)(iVar1 + 0x2c) = local_1c;
    FUN_004017b2(1,0);
    if (local_15 == '\0') {
      param_1._3_1_ = '\0';
    }
    FUN_0060da97();
    local_1c = 0;
    local_15 = FUN_00b92610(&local_1c);
    *(undefined4 *)(iVar1 + 0x30) = local_1c;
    FUN_004017b2(1,0);
    if (local_15 == '\0') {
      param_1._3_1_ = '\0';
    }
    FUN_0060daec();
    local_1c = 0;
    local_15 = FUN_00b92610(&local_1c);
    *(undefined4 *)(iVar1 + 0x34) = local_1c;
    FUN_004017b2(1,0);
    if (local_15 == '\0') {
      param_1._3_1_ = '\0';
    }
    FUN_0060d79a();
    local_1c = 0;
    local_15 = FUN_00b92610(&local_1c);
    *(undefined4 *)(iVar1 + 0x38) = local_1c;
    FUN_004017b2(1,0);
    if (local_15 == '\0') {
      param_1._3_1_ = '\0';
    }
    FUN_0060d7ef();
    local_1c = 0;
    local_15 = FUN_00b92610(&local_1c);
    *(undefined4 *)(iVar1 + 0x3c) = local_1c;
    FUN_004017b2(1,0);
    if (local_15 == '\0') {
      param_1._3_1_ = '\0';
    }
    FUN_0060d745();
    local_1c = 0;
    local_15 = FUN_00b92610(&local_1c);
    *(undefined4 *)(iVar1 + 0x40) = local_1c;
    FUN_004017b2(1,0);
    if (local_15 == '\0') {
      param_1._3_1_ = '\0';
    }
  }
  return param_1._3_1_;
}



undefined4 FUN_0060df6c(undefined4 param_1)

{
  int in_EAX;
  undefined4 uVar1;
  
  uVar1 = 0;
  if (*(code **)(in_EAX + 0x10) == (code *)0x0) {
    FUN_00b940e0(0x1aa581fa);
  }
  else {
    uVar1 = (**(code **)(in_EAX + 0x10))(param_1);
  }
  return uVar1;
}



undefined FUN_0060df99(undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  int in_EAX;
  
  uVar1 = 0;
  if (*(code **)(in_EAX + 0x2c) == (code *)0x0) {
    FUN_00b940e0(0x7eace57a);
  }
  else {
    uVar1 = (**(code **)(in_EAX + 0x2c))(param_1,0,param_2,1);
  }
  return uVar1;
}



undefined FUN_0060dfcf(undefined4 param_1)

{
  undefined uVar1;
  int in_EAX;
  
  uVar1 = 0;
  if (*(code **)(in_EAX + 0x34) == (code *)0x0) {
    FUN_00b940e0(0xaeead658);
  }
  else {
    uVar1 = (**(code **)(in_EAX + 0x34))(param_1);
  }
  return uVar1;
}



undefined FUN_0060dffb(undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  int in_EAX;
  
  uVar1 = 0;
  if (*(code **)(in_EAX + 0x3c) == (code *)0x0) {
    FUN_00b940e0(0x433ed293);
  }
  else {
    uVar1 = (**(code **)(in_EAX + 0x3c))(param_1,param_2);
  }
  return uVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * FUN_0060e02d(void)

{
  LONG LVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  if ((_DAT_032f11ac & 1) == 0) {
    _DAT_032f11ac = _DAT_032f11ac | 1;
    DAT_032f02ec = (undefined4 *)0x0;
    _atexit((_func_4879 *)&LAB_00c7442c);
  }
  LVar1 = InterlockedExchangeAdd((LONG *)&DAT_032ef8e8,0);
  if (LVar1 == 0) {
    FUN_00b9acd0();
    LVar1 = InterlockedExchangeAdd((LONG *)&DAT_032ef8e8,0);
    if ((LVar1 == 0) && (DAT_032f02ec == (undefined4 *)0x0)) {
      pvVar2 = operator_new(0x44);
      if (pvVar2 == (void *)0x0) {
        puVar3 = (undefined4 *)0x0;
      }
      else {
        puVar3 = (undefined4 *)FUN_0060db41(pvVar2);
      }
      if ((puVar3 != DAT_032f02ec) && (DAT_032f02ec != (undefined4 *)0x0)) {
        (**(code **)*DAT_032f02ec)(1);
      }
      DAT_032f02ec = puVar3;
      InterlockedExchange((LONG *)&DAT_032ef8e8,1);
    }
    FUN_00b9ac60();
  }
  return DAT_032f02ec;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0060e1c3(undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4,
                 undefined2 param_5)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EDI;
  
  pvVar1 = operator_new(0x34);
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    FUN_0041b126(&param_3);
    uVar2 = FUN_0061278c(param_2);
  }
  *unaff_EDI = uVar2;
  unaff_EDI[1] = 0;
  puVar3 = (undefined4 *)FUN_0060f88d();
  uVar2 = unaff_EDI[1];
  unaff_EDI[1] = *puVar3;
  *puVar3 = uVar2;
  if (param_2 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c();
  return;
}



void FUN_0060e272(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = WD2A2D81B::W313D8289::vftable;
  return;
}



undefined4 __thiscall FUN_0060e371(undefined4 param_1_00,byte param_1)

{
  FUN_0060e3ef();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0060e38d(void)

{
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0060e3ef(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = WD4D119EE::WADC0B2F9::vftable;
  param_1[1] = WD4D119EE::WADC0B2F9::vftable;
  local_8 = 8;
  if (local_20 != param_1 + 7) {
    param_1[7] = 0;
  }
  iVar1 = param_1[8];
  param_1[8] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  if (local_20 != param_1 + 9) {
    param_1[9] = 0;
  }
  iVar1 = param_1[10];
  param_1[10] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  if (local_20 != param_1 + 0xb) {
    param_1[0xb] = 0;
  }
  iVar1 = param_1[0xc];
  param_1[0xc] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_8 = 7;
  FUN_0060e38d();
  local_8._0_1_ = 5;
  if (param_1[0xc] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 4;
  if (param_1[10] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 3;
  if (param_1[8] != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  local_8 = CONCAT31(local_8._1_3_,1);
  if (param_1[3] != 0) {
    FUN_0040127a();
  }
  param_1[1] = WD2A2D81B::W313D8289::vftable;
  *param_1 = WF22948E2::W4FECD79D::vftable;
  return;
}



undefined * Catch_All_0060e4d1(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 7;
  return &DAT_0060e4de;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

undefined4 __thiscall FUN_0060e4e5(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  undefined4 uVar2;
  undefined local_8c [28];
  void *local_70;
  undefined4 local_68;
  undefined4 local_64;
  undefined local_48 [28];
  undefined local_2c [24];
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_64 = 0x38;
  local_68 = 0x60e4f5;
  local_8 = param_1;
  local_c = 0;
  uVar2 = basic_string<>(&DAT_00ddfc30,0x13);
  local_68 = 0;
  local_10 = 0xb3f685c1;
  local_c = 0x7f6311e7;
  uVar2 = FUN_00b94470(&local_10,uVar2);
  local_68._0_1_ = 1;
  basic_string<>(uVar2);
  piVar1 = *(int **)(param_1_00 + 8);
  local_14 = 7;
  FUN_0040180b(0);
  local_68._0_1_ = 3;
  uVar2 = (**(code **)(*piVar1 + 0x10))(local_8c,local_2c);
  local_68 = CONCAT31(local_68._1_3_,4);
  FUN_004155ac(local_8,uVar2,local_48);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  ExceptionList = local_70;
  return local_8;
}



void __fastcall FUN_0060e5c3(int param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined auStack_d4 [8];
  char local_cc;
  int local_c8 [2];
  int aiStack_c0 [34];
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3f485;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_d4;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff20;
  ExceptionList = &local_14;
  FUN_0043d406(param_1 + 0x10);
  local_c = 0;
  FUN_0060e4e5(local_38);
  local_c._0_1_ = 1;
  cVar2 = FUN_0041506b(local_38,uVar3);
  if (cVar2 != '\0') {
    cVar2 = FUN_00441993(local_38);
    if (cVar2 != '\0') {
      FUN_0043e743(local_c8);
      local_c = CONCAT31(local_c._1_3_,2);
      iVar1 = *(int *)(local_c8[0] + 4);
      *(undefined4 *)((int)aiStack_c0 + iVar1 + 4) = 0;
      FUN_00417a55(*(undefined4 *)((int)aiStack_c0 + iVar1),0);
      FUN_0043e7ac();
      if (*(int *)((int)aiStack_c0 + *(int *)(local_c8[0] + 4)) == 0) {
        FUN_0060f1ac(param_1,local_c8);
      }
      FUN_0043e832();
      local_c._0_1_ = 1;
      FUN_0043e1a3();
    }
  }
  FUN_00401829(1,0);
  local_c = 0xffffffff;
  if (local_cc != '\0') {
    FUN_00401477();
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0060e70b(int param_1_00,char param_1)

{
  char cVar1;
  uint uVar2;
  undefined auStack_f0 [7];
  char local_e9;
  char local_e4;
  undefined local_e0 [140];
  undefined local_54 [28];
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c41a6c;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_f0;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff08;
  ExceptionList = &local_14;
  if (param_1 == '\0') {
    FUN_0043d406(param_1_00 + 0x10);
    local_e9 = *(int *)(param_1_00 + 0x18) < 2;
    if (local_e4 != '\0') {
      FUN_00401477();
    }
    if (local_e9 == '\0') goto LAB_0060e885;
  }
  FUN_0060e4e5(local_38);
  local_c = 0;
  basic_string<>(local_38);
  local_c = CONCAT31(local_c._1_3_,1);
  FUN_00825480(uVar2);
  cVar1 = FUN_0041506b(local_54);
  if (cVar1 == '\0') {
    FUN_00828050(local_54,0);
  }
  cVar1 = FUN_0041506b(local_54);
  if (cVar1 != '\0') {
    cVar1 = FUN_00441954(local_54);
    if (cVar1 != '\0') {
      FUN_0043ef04(local_e0,local_38);
      local_c._0_1_ = 2;
      FUN_0043d406(param_1_00 + 0x10);
      local_c._0_1_ = 3;
      FUN_0060f2ee(local_e0);
      local_c._0_1_ = 2;
      if (local_e4 != '\0') {
        FUN_00401477();
      }
      local_c = CONCAT31(local_c._1_3_,1);
      FUN_0043e360();
    }
  }
  FUN_00401829(1,0);
  FUN_00401829(1,0);
LAB_0060e885:
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_0060e8aa(int param_1)

{
  int extraout_ECX;
  int extraout_ECX_00;
  undefined4 param_6;
  undefined4 local_38c;
  undefined *local_388;
  int local_2ec;
  undefined4 local_2e8;
  undefined4 local_2e4;
  undefined4 local_2d8;
  undefined4 local_2d4;
  undefined4 local_2d0;
  undefined4 local_2cc;
  char local_2c4;
  undefined local_2c0 [4];
  undefined4 *local_2bc;
  undefined4 local_2ac;
  undefined4 local_2a8 [168];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_2a8;
  local_2a8[0] = 0xc0;
  local_2bc = (undefined4 *)0x0;
  local_2d8 = 0;
  local_2d4 = 0;
  local_2d0 = 0;
  local_2cc = 0;
  local_2e8 = 0;
  local_2e4 = 0;
  local_388 = (undefined *)(param_1 + 0x10);
  local_2ac._0_1_ = 5;
  local_2ac._1_3_ = 0;
  local_38c = 0x60e900;
  local_2ec = param_1;
  FUN_0043d406();
  local_388 = local_2c0;
  local_2ac._0_1_ = 6;
  local_38c = *(undefined4 *)(param_1 + 0x1c);
  FUN_006115ae();
  local_2ac._0_1_ = 7;
  local_388 = (undefined *)0x60e91d;
  FUN_004fe47e();
  local_2ac._0_1_ = 6;
  if (local_2bc != (undefined4 *)0x0) {
    local_388 = (undefined *)0x60e92d;
    FUN_0040127a();
  }
  local_38c = *(undefined4 *)(param_1 + 0x24);
  local_388 = local_2c0;
  FUN_00611ba7();
  local_2ac._0_1_ = 8;
  local_388 = (undefined *)0x60e946;
  FUN_004fe47e();
  local_2ac._0_1_ = 6;
  if (local_2bc != (undefined4 *)0x0) {
    local_388 = (undefined *)0x60e956;
    FUN_0040127a();
  }
  local_388 = local_2c0;
  local_38c = *(undefined4 *)(param_1 + 0x2c);
  FUN_006123f6();
  local_2ac._0_1_ = 9;
  local_388 = (undefined *)0x60e971;
  FUN_004fe47e();
  local_2ac._0_1_ = 6;
  local_388 = (undefined *)local_2bc;
  if (local_2bc != (undefined4 *)0x0) {
    local_388 = (undefined *)0x60e981;
    FUN_0040127a();
    local_388 = (undefined *)extraout_ECX;
  }
  local_2ac = CONCAT31(local_2ac._1_3_,5);
  if (local_2c4 != '\0') {
    local_388 = (undefined *)0x60e992;
    FUN_00401477();
    local_388 = (undefined *)extraout_ECX_00;
  }
  local_2bc = &local_38c;
  local_38c = param_6;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x0000001c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0060eddf(int param_1)

{
  char cVar1;
  undefined uVar2;
  undefined4 uVar3;
  undefined4 extraout_EDX;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined local_64 [28];
  undefined4 local_48;
  char local_20;
  undefined4 local_1c;
  uint local_18;
  undefined local_12;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x70;
  local_8 = 0x60edeb;
  local_18 = 0;
  FUN_0043d406(param_1 + 0x10);
  local_8 = 0;
  FUN_00611cbf();
  local_8 = CONCAT31(local_8._1_3_,1);
  local_18 = 1;
  uVar3 = FUN_00611cd4(*(undefined4 *)(param_1 + 0x1c));
  cVar1 = FUN_00615735(uVar3);
  if (cVar1 == '\0') {
    local_1c = FUN_00611cbf();
    local_8 = 2;
    local_18 = 3;
    uVar3 = FUN_00611cd4(*(undefined4 *)(param_1 + 0x24));
    cVar1 = FUN_00615869(uVar3);
    if (cVar1 == '\0') {
      FUN_00611cbf();
      local_8 = 3;
      local_18 = 7;
      FUN_007b2d68();
      uVar3 = *(undefined4 *)(param_1 + 0x2c);
      uVar2 = FUN_007b2498();
      local_1c = CONCAT31(local_1c._1_3_,uVar2);
      uVar4 = local_1c;
      uVar5 = extraout_EDX;
      uVar3 = FUN_00611cd4(uVar3);
      cVar1 = FUN_0061599d(uVar3,uVar4,uVar5);
      local_11 = '\0';
      if (cVar1 == '\0') goto LAB_0060eeb7;
    }
  }
  local_11 = '\x01';
LAB_0060eeb7:
  if ((local_18 & 4) != 0) {
    local_18 = local_18 & 0xfffffffb;
    FUN_00401829(1,0);
  }
  if ((local_18 & 2) != 0) {
    local_18 = local_18 & 0xfffffffd;
    FUN_00401829(1,0);
  }
  local_8 = 0;
  if ((local_18 & 1) != 0) {
    FUN_00401829(1,0);
  }
  FUN_00819607(&local_12);
  uVar3 = FUN_0061545c();
  local_8._0_1_ = 4;
  basic_string<>(uVar3);
  local_48 = 0;
  local_8 = CONCAT31(local_8._1_3_,5);
  FUN_0081f4a1(local_64,local_11 != '\0');
  FUN_0040159c();
  FUN_00401829(1,0);
  local_8 = 0xffffffff;
  if (local_20 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_0060ef5b(int param_1_00,undefined4 param_1)

{
  int iVar1;
  uint extraout_ECX;
  uint extraout_ECX_00;
  uint extraout_ECX_01;
  uint extraout_ECX_02;
  uint uVar2;
  uint uStack_94;
  uint uStack_90;
  undefined4 local_8c;
  char local_74;
  uint *local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  char local_44;
  undefined local_43;
  char local_3d;
  char local_3c [32];
  undefined local_1c [4];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_8 = 0x60ef67;
  local_50 = param_1;
  local_8c = param_1_00 + 0xc;
  local_4c = 0;
  uStack_90 = 0x60ef80;
  FUN_0043d406();
  local_48 = 0;
  local_3c[0] = '\0';
  local_1c[0] = 0;
  local_44 = '\0';
  local_8 = 4;
  local_8c = 0x60efa1;
  iVar1 = FUN_00611cbf();
  if (*(int *)(iVar1 + 0x14) == 0) {
LAB_0060efb6:
    local_3d = '\0';
  }
  else {
    local_8c = *(undefined4 *)(param_1_00 + 0x18);
    uStack_90 = 0x60efae;
    iVar1 = FUN_00611cd4();
    local_3d = '\x01';
    if (iVar1 < 1) goto LAB_0060efb6;
  }
  local_8c = 0;
  uStack_90 = 1;
  local_4c = 0;
  uStack_94 = 0x60efc6;
  FUN_00401829();
  if (local_3d == '\0') {
    local_8c = 0x60f006;
    iVar1 = FUN_00611cbf();
    if (*(int *)(iVar1 + 0x14) == 0) {
LAB_0060f01b:
      local_3d = '\0';
    }
    else {
      local_8c = *(undefined4 *)(param_1_00 + 0x20);
      uStack_90 = 0x60f013;
      iVar1 = FUN_00611cd4();
      local_3d = '\x01';
      if (iVar1 < 1) goto LAB_0060f01b;
    }
    local_8c = 0;
    uStack_90 = 1;
    local_4c = 0;
    uStack_94 = 0x60f02b;
    FUN_00401829();
    if (local_3d == '\0') {
      local_8c = 0x60f079;
      iVar1 = FUN_00611cbf();
      if (*(int *)(iVar1 + 0x14) == 0) {
LAB_0060f0b0:
        local_3d = '\0';
      }
      else {
        local_8c = *(undefined4 *)(param_1_00 + 0x28);
        uStack_90 = 0x60f086;
        iVar1 = FUN_00611cd4();
        if (iVar1 < 1) goto LAB_0060f0b0;
        local_8c = 0x60f095;
        iVar1 = FUN_007b2d68();
        if (iVar1 != 4) {
          local_8c = 0x60f0a5;
          iVar1 = FUN_007b2d68();
          if (iVar1 != 5) goto LAB_0060f0b0;
        }
        local_3d = '\x01';
      }
      local_8c = 0;
      uStack_90 = 1;
      local_4c = 0;
      uStack_94 = 0x60f0c0;
      FUN_00401829();
      uVar2 = extraout_ECX_01;
      if (local_3d != '\0') {
        local_8c = 0x60f0d0;
        iVar1 = FUN_007b2d68();
        if (iVar1 == 4) {
          local_48 = 3;
        }
        local_8c = 0x60f0e7;
        iVar1 = FUN_007b2d68();
        if (iVar1 == 5) {
          local_48 = 4;
        }
        local_8c = 0x60f0fe;
        local_8c = FUN_00611cbf();
        local_8._0_1_ = 7;
        uStack_90 = 0x60f10b;
        FUN_0040cafb();
        local_8c = 0;
        uStack_90 = 1;
        local_8 = CONCAT31(local_8._1_3_,4);
        uStack_94 = 0x60f119;
        FUN_00401829();
        local_8c = *(undefined4 *)(param_1_00 + 0x28);
        uStack_90 = 0x60f121;
        local_18 = FUN_00611cd4();
        local_1c[0] = 1;
        local_8c = 0x60f133;
        local_43 = FUN_007b2498();
        local_44 = '\x01';
        uVar2 = extraout_ECX_02;
      }
      goto LAB_0060f13a;
    }
    local_48 = 2;
    local_8c = 0x60f042;
    local_8c = FUN_00611cbf();
    local_8._0_1_ = 6;
    uStack_90 = 0x60f04f;
    FUN_0040cafb();
    local_8c = 0;
    uStack_90 = 1;
    local_8 = CONCAT31(local_8._1_3_,4);
    uStack_94 = 0x60f05d;
    FUN_00401829();
    local_8c = *(undefined4 *)(param_1_00 + 0x20);
    uStack_90 = 0x60f065;
    local_18 = FUN_00611cd4();
    uVar2 = extraout_ECX_00;
  }
  else {
    local_48 = 1;
    local_8c = 0x60efd9;
    local_8c = FUN_00611cbf();
    local_8._0_1_ = 5;
    uStack_90 = 0x60efe6;
    FUN_0040cafb();
    local_8c = 0;
    uStack_90 = 1;
    local_8 = CONCAT31(local_8._1_3_,4);
    uStack_94 = 0x60eff4;
    FUN_00401829();
    local_8c = *(undefined4 *)(param_1_00 + 0x18);
    uStack_90 = 0x60effc;
    local_18 = FUN_00611cd4();
    uVar2 = extraout_ECX;
  }
  local_1c[0] = 1;
LAB_0060f13a:
  local_8c = uVar2 & 0xffffff00;
  uStack_94 = uVar2;
  if (local_44 != '\0') {
    if (&stack0x00000000 != (undefined *)0x8b) {
      uStack_94 = CONCAT31((int3)(uVar2 >> 8),local_43);
      local_8c._2_2_ = (undefined2)(uVar2 >> 0x10);
      local_8c = (uint)CONCAT21(local_8c._2_2_,local_43) << 8;
    }
    local_8c = CONCAT31(local_8c._1_3_,1);
  }
  local_54 = &uStack_94;
  uStack_90 = uStack_94;
  FUN_0041b126(local_1c);
  FUN_0060e1c3(local_48,local_3c);
  local_4c = 8;
  if (local_3c[0] != '\0') {
    local_8c = 0;
    uStack_90 = 1;
    uStack_94 = 0x60f18f;
    FUN_00401829();
    local_3c[0] = '\0';
  }
  local_8 = local_8 & 0xffffff00;
  if (local_74 != '\0') {
    local_8c = 0x60f1a2;
    FUN_00401477();
  }
  local_8c = 0x60f1a9;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void FUN_0060f1ac(int param_1,undefined4 param_2)

{
  undefined local_5c [60];
  int local_20;
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0x60f1b8;
  FUN_0043da9b(local_5c,param_2);
  local_8 = 1;
  if (*(uint *)(param_1 + 0x4c) < 0x10) {
    local_20 = param_1 + 0x38;
  }
  else {
    local_20 = *(int *)(param_1 + 0x38);
  }
  local_1c = param_1 + 0x18;
  FUN_0043f3d7();
  local_8 = 0;
  FUN_0060f20e();
  return;
}



undefined * Catch_All_0060f1f7(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 0;
  *(undefined4 *)(*(int *)(unaff_EBP + 8) + 0x18) = 1;
  return &DAT_0060f20b;
}



void FUN_0060f20e(void)

{
  undefined4 uVar1;
  int iVar2;
  int unaff_EBP;
  int unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 3;
  uVar1 = *(undefined4 *)(unaff_ESI + 0x1c);
  if (*(uint *)(unaff_ESI + 0x68) < 0x10) {
    iVar2 = unaff_ESI + 0x54;
  }
  else {
    iVar2 = *(int *)(unaff_ESI + 0x54);
  }
  *(int *)(unaff_EBP + -0x1c) = iVar2;
  *(undefined4 *)(unaff_EBP + -0x18) = uVar1;
  FUN_0060f4ac(unaff_EBP + -0x4f);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  FUN_0060f253();
  return;
}



undefined * Catch_All_0060f23b(void)

{
  int unaff_EBP;
  
  FUN_00611c73();
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_0060f250;
}



void FUN_0060f253(void)

{
  undefined4 uVar1;
  int iVar2;
  int unaff_EBP;
  int unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 5;
  uVar1 = *(undefined4 *)(unaff_ESI + 0x24);
  if (*(uint *)(unaff_ESI + 0x84) < 0x10) {
    iVar2 = unaff_ESI + 0x70;
  }
  else {
    iVar2 = *(int *)(unaff_ESI + 0x70);
  }
  *(int *)(unaff_EBP + -0x1c) = iVar2;
  *(undefined4 *)(unaff_EBP + -0x18) = uVar1;
  FUN_0060f523(unaff_EBP + -0x4f);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  FUN_0060f29b();
  return;
}



undefined * Catch_All_0060f283(void)

{
  int unaff_EBP;
  
  FUN_00611c73();
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_0060f298;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0060f29b(void)

{
  undefined4 uVar1;
  int iVar2;
  int unaff_EBP;
  int unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 7;
  uVar1 = *(undefined4 *)(unaff_ESI + 0x2c);
  if (*(uint *)(unaff_ESI + 0xa0) < 0x10) {
    iVar2 = unaff_ESI + 0x8c;
  }
  else {
    iVar2 = *(int *)(unaff_ESI + 0x8c);
  }
  *(int *)(unaff_EBP + -0x1c) = iVar2;
  *(undefined4 *)(unaff_EBP + -0x18) = uVar1;
  FUN_0060f59a(unaff_EBP + -0x4f);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_0043dad2(unaff_EBP + -0x58);
  return;
}



undefined4 Catch_All_0060f2dd(void)

{
  FUN_00612506();
  return 0x60f2c8;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0060f2ee(undefined4 param_1)

{
  int unaff_ESI;
  undefined local_47 [43];
  int local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x60f2fa;
  FUN_0082e0c0(param_1,0);
  local_8 = 0;
  local_18 = (undefined4 *)(unaff_ESI + 0x18);
  *local_18 = 1;
  if (*(uint *)(unaff_ESI + 0x4c) < 0x10) {
    local_1c = unaff_ESI + 0x38;
  }
  else {
    local_1c = *(int *)(unaff_ESI + 0x38);
  }
  FUN_0061111a(local_47);
  local_18 = *(undefined4 **)(unaff_ESI + 0x1c);
  if (*(uint *)(unaff_ESI + 0x68) < 0x10) {
    local_1c = unaff_ESI + 0x54;
  }
  else {
    local_1c = *(int *)(unaff_ESI + 0x54);
  }
  FUN_0060f611(local_47);
  local_18 = *(undefined4 **)(unaff_ESI + 0x24);
  if (*(uint *)(unaff_ESI + 0x84) < 0x10) {
    local_1c = unaff_ESI + 0x70;
  }
  else {
    local_1c = *(int *)(unaff_ESI + 0x70);
  }
  FUN_0060f688(local_47);
  local_18 = *(undefined4 **)(unaff_ESI + 0x2c);
  if (*(uint *)(unaff_ESI + 0xa0) < 0x10) {
    local_1c = unaff_ESI + 0x8c;
  }
  else {
    local_1c = *(int *)(unaff_ESI + 0x8c);
  }
  FUN_0060f6ff(local_47);
  local_8 = 0xffffffff;
  FUN_0043e647();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0060f3c5(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_0060f776(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0060f412(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_0060f7d3(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0060f45f(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_0060f830(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



int FUN_0060f4ac(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_0060f523(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_0060f59a(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_0060f611(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_0060f688(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_0060f6ff(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0060f776(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD4D119EE::W59FB47B0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0060f7bc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0060f7d3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD4D119EE::W94A2E6C6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0060f819(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0060f830(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD4D119EE::WDF413249>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0060f876(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0060f88d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD2A2D81B::WE8601086>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0060f8d3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WD4D119EE::W59FB47B0> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WD4D119EE::W59FB47B0> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>
::get_const_instance(void)

{
                    // 0x20f8ea  609
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW59FB47B0@WD4D119EE@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW59FB47B0@WD4D119EE@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>::
    oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>
              ((oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74473);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WD4D119EE::W94A2E6C6> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WD4D119EE::W94A2E6C6> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>
::get_const_instance(void)

{
                    // 0x20f8ef  616
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW94A2E6C6@WD4D119EE@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW94A2E6C6@WD4D119EE@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>::
    oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>
              ((oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74458);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WD4D119EE::WDF413249> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WD4D119EE::WDF413249> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>
::get_const_instance(void)

{
                    // 0x20f8f4  625
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWDF413249@WD4D119EE@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VWDF413249@WD4D119EE@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>::
    oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>
              ((oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7443d);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_0060f8f9(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0060f91b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0060f93d(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WD4D119EE::W59FB47B0> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WD4D119EE::W59FB47B0> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>
::get_instance(void)

{
                    // 0x20f95f  929
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW59FB47B0@WD4D119EE@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW59FB47B0@WD4D119EE@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>::
    oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>
              ((oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74473);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WD4D119EE::W94A2E6C6> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WD4D119EE::W94A2E6C6> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>
::get_instance(void)

{
                    // 0x20f9a9  936
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW94A2E6C6@WD4D119EE@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW94A2E6C6@WD4D119EE@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>::
    oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>
              ((oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74458);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WD4D119EE::WDF413249> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WD4D119EE::WDF413249> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>
::get_instance(void)

{
                    // 0x20f9f3  945
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWDF413249@WD4D119EE@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VWDF413249@WD4D119EE@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>::
    oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>
              ((oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7443d);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_0060fa3d(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef8f0 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0060fa66(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef8f1 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0060fa8f(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef8f2 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WD4D119EE::W59FB47B0>::oserializer<class boost::archive::xml_oarchive,class
// WD4D119EE::W59FB47B0>(void)

oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>::
oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>
          (oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0> *this)

{
  extended_type_info_typeid<class_WD4D119EE::W59FB47B0> *peVar1;
  
                    // 0x20fab8  67
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW59FB47B0@WD4D119EE@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WD4D119EE::W94A2E6C6>::oserializer<class boost::archive::xml_oarchive,class
// WD4D119EE::W94A2E6C6>(void)

oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>::
oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6>
          (oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W94A2E6C6> *this)

{
  extended_type_info_typeid<class_WD4D119EE::W94A2E6C6> *peVar1;
  
                    // 0x20fad2  74
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW94A2E6C6@WD4D119EE@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WD4D119EE::WDF413249>::oserializer<class boost::archive::xml_oarchive,class
// WD4D119EE::WDF413249>(void)

oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>::
oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>
          (oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249> *this)

{
  extended_type_info_typeid<class_WD4D119EE::WDF413249> *peVar1;
  
                    // 0x20faec  83
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VWDF413249@WD4D119EE@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class WD4D119EE::W59FB47B0>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class WD4D119EE::W59FB47B0>
// >::get_const_instance(void)

extended_type_info_typeid<class_WD4D119EE::W59FB47B0> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>::
get_const_instance(void)

{
                    // 0x20fb06  441
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW59FB47B0@WD4D119EE@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW59FB47B0@WD4D119EE@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_0060fbc9();
    _atexit((_func_4879 *)&LAB_00c744ba);
  }
  return (extended_type_info_typeid<class_WD4D119EE::W59FB47B0> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class WD4D119EE::W94A2E6C6>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class WD4D119EE::W94A2E6C6>
// >::get_const_instance(void)

extended_type_info_typeid<class_WD4D119EE::W94A2E6C6> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>::
get_const_instance(void)

{
                    // 0x20fb0b  448
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW94A2E6C6@WD4D119EE@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW94A2E6C6@WD4D119EE@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_0060fc19();
    _atexit((_func_4879 *)&LAB_00c744a4);
  }
  return (extended_type_info_typeid<class_WD4D119EE::W94A2E6C6> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class WD4D119EE::WDF413249>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class WD4D119EE::WDF413249>
// >::get_const_instance(void)

extended_type_info_typeid<class_WD4D119EE::WDF413249> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>::
get_const_instance(void)

{
                    // 0x20fb10  457
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VWDF413249@WD4D119EE@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VWDF413249@WD4D119EE@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_0060fc69();
    _atexit((_func_4879 *)&LAB_00c7448e);
  }
  return (extended_type_info_typeid<class_WD4D119EE::WDF413249> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class WD4D119EE::W59FB47B0>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class WD4D119EE::W59FB47B0> >::get_instance(void)

extended_type_info_typeid<class_WD4D119EE::W59FB47B0> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>::
get_instance(void)

{
                    // 0x20fb15  761
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW59FB47B0@WD4D119EE@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW59FB47B0@WD4D119EE@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_0060fbc9();
    _atexit((_func_4879 *)&LAB_00c744ba);
  }
  return (extended_type_info_typeid<class_WD4D119EE::W59FB47B0> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class WD4D119EE::W94A2E6C6>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class WD4D119EE::W94A2E6C6> >::get_instance(void)

extended_type_info_typeid<class_WD4D119EE::W94A2E6C6> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>::
get_instance(void)

{
                    // 0x20fb51  768
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW94A2E6C6@WD4D119EE@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW94A2E6C6@WD4D119EE@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_0060fc19();
    _atexit((_func_4879 *)&LAB_00c744a4);
  }
  return (extended_type_info_typeid<class_WD4D119EE::W94A2E6C6> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class WD4D119EE::WDF413249>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class WD4D119EE::WDF413249> >::get_instance(void)

extended_type_info_typeid<class_WD4D119EE::WDF413249> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>::
get_instance(void)

{
                    // 0x20fb8d  777
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VWDF413249@WD4D119EE@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VWDF413249@WD4D119EE@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_0060fc69();
    _atexit((_func_4879 *)&LAB_00c7448e);
  }
  return (extended_type_info_typeid<class_WD4D119EE::WDF413249> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>
* FUN_0060fbc9(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>::vftable;
  FUN_00830c60(&WD4D119EE::W59FB47B0::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>
* FUN_0060fc19(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>::vftable;
  FUN_00830c60(&WD4D119EE::W94A2E6C6::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>
* FUN_0060fc69(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>::vftable;
  FUN_00830c60(&WD4D119EE::WDF413249::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_0060fcb9(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_0060fcfa(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_0060fd3b(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WD4D119EE::W59FB47B0>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0> *this,
                basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::W59FB47B0> *local_8;
  
                    // 0x20fd7c  1677
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW59FB47B0@WD4D119EE@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
                    // 0x20fd7c  1684
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW94A2E6C6@WD4D119EE@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_0060ffbc();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WD4D119EE::WDF413249>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249> *this,
                basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_WD4D119EE::WDF413249> *local_8;
  
                    // 0x20fd9a  1693
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VWDF413249@WD4D119EE@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_00610030();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// WD4D119EE::W59FB47B0> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// WD4D119EE::W59FB47B0> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_WD4D119EE::W59FB47B0> *peVar1;
  
                    // 0x20fdb8  529
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW59FB47B0@WD4D119EE@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW59FB47B0@WD4D119EE@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74506);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// WD4D119EE::W94A2E6C6> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// WD4D119EE::W94A2E6C6> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_WD4D119EE::W94A2E6C6> *peVar1;
  
                    // 0x20fdbd  536
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW94A2E6C6@WD4D119EE@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW94A2E6C6@WD4D119EE@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c744eb);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// WD4D119EE::WDF413249> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// WD4D119EE::WDF413249> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_WD4D119EE::WDF413249> *peVar1;
  
                    // 0x20fdc2  545
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWDF413249@WD4D119EE@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VWDF413249@WD4D119EE@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c744d0);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_0060fdc7(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0060fde9(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0060fe0b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WD4D119EE::W59FB47B0> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WD4D119EE::W59FB47B0> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>
::get_instance(void)

{
  extended_type_info_typeid<class_WD4D119EE::W59FB47B0> *peVar1;
  
                    // 0x20fe2d  849
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW59FB47B0@WD4D119EE@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW59FB47B0@WD4D119EE@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W59FB47B0>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74506);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WD4D119EE::W94A2E6C6> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WD4D119EE::W94A2E6C6> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>
::get_instance(void)

{
  extended_type_info_typeid<class_WD4D119EE::W94A2E6C6> *peVar1;
  
                    // 0x20fe7d  856
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW94A2E6C6@WD4D119EE@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW94A2E6C6@WD4D119EE@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::W94A2E6C6>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c744eb);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WD4D119EE::WDF413249> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WD4D119EE::WDF413249> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>
::get_instance(void)

{
  extended_type_info_typeid<class_WD4D119EE::WDF413249> *peVar1;
  
                    // 0x20fecd  865
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWDF413249@WD4D119EE@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VWDF413249@WD4D119EE@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WD4D119EE::WDF413249>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c744d0);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_0060ff1d(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef8f6 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0060ff46(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef8f7 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W94A2E6C6>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0060ff6f(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef8f8 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WD4D119EE::W59FB47B0>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::W59FB47B0> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x20ff98  1561
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW59FB47B0@WD4D119EE@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
                    // 0x20ff98  1568
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW94A2E6C6@WD4D119EE@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_0061010c();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WD4D119EE::WDF413249>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_WD4D119EE::WDF413249> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x20ffaa  1577
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VWDF413249@WD4D119EE@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_00610180();
  return;
}



void __fastcall FUN_0060ffbc(undefined4 param_1,int param_2)

{
  int iVar1;
  
  iVar1 = param_2;
  if (param_2 == -9) {
    iVar1 = 0;
  }
  FUN_004cbb7c(iVar1 + 9);
  if (param_2 == -9) {
    param_2 = 0;
  }
  FUN_0061025c(param_2 + 9);
  return;
}



void __fastcall FUN_00610030(undefined4 param_1,int param_2)

{
  int iVar1;
  
  iVar1 = param_2;
  if (param_2 == -9) {
    iVar1 = 0;
  }
  FUN_004cbb7c(iVar1 + 9);
  iVar1 = param_2;
  if (param_2 == -9) {
    iVar1 = 0;
  }
  FUN_0061025c(iVar1 + 9);
  iVar1 = param_2;
  if (param_2 == -9) {
    iVar1 = 0;
  }
  FUN_006102d3(iVar1 + 9);
  if (param_2 == -9) {
    param_2 = 0;
  }
  FUN_004cbb05(param_2 + 9);
  return;
}



void __fastcall FUN_00610042(undefined4 param_1,int param_2)

{
  undefined4 uVar1;
  int in_EAX;
  int iVar2;
  int unaff_EBP;
  int unaff_ESI;
  bool in_CF;
  
  if (in_CF) {
    iVar2 = in_EAX + 4;
  }
  else {
    iVar2 = *(int *)(in_EAX + 4);
  }
  *(int *)(unaff_EBP + -8) = iVar2;
  *(undefined4 *)(unaff_EBP + -4) = param_1;
  iVar2 = param_2;
  if (param_2 == -9) {
    iVar2 = 0;
  }
  FUN_004cbb7c(iVar2 + 9);
  uVar1 = *(undefined4 *)(unaff_ESI + 0x30);
  if (*(uint *)(unaff_ESI + 0xec) < 0x10) {
    iVar2 = unaff_ESI + 0xd8;
  }
  else {
    iVar2 = *(int *)(unaff_ESI + 0xd8);
  }
  *(int *)(unaff_EBP + -8) = iVar2;
  *(undefined4 *)(unaff_EBP + -4) = uVar1;
  iVar2 = param_2;
  if (param_2 == -9) {
    iVar2 = 0;
  }
  FUN_0061025c(iVar2 + 9);
  uVar1 = *(undefined4 *)(unaff_ESI + 0x38);
  if (*(uint *)(unaff_ESI + 0x108) < 0x10) {
    iVar2 = unaff_ESI + 0xf4;
  }
  else {
    iVar2 = *(int *)(unaff_ESI + 0xf4);
  }
  *(int *)(unaff_EBP + -8) = iVar2;
  *(undefined4 *)(unaff_EBP + -4) = uVar1;
  iVar2 = param_2;
  if (param_2 == -9) {
    iVar2 = 0;
  }
  FUN_006102d3(iVar2 + 9);
  uVar1 = *(undefined4 *)(unaff_ESI + 0x40);
  if (*(uint *)(unaff_ESI + 0x124) < 0x10) {
    iVar2 = unaff_ESI + 0x110;
  }
  else {
    iVar2 = *(int *)(unaff_ESI + 0x110);
  }
  *(int *)(unaff_EBP + -8) = iVar2;
  *(undefined4 *)(unaff_EBP + -4) = uVar1;
  if (param_2 == -9) {
    param_2 = 0;
  }
  FUN_004cbb05(param_2 + 9);
  return;
}



void FUN_00610064(void)

{
  undefined4 uVar1;
  undefined4 in_EAX;
  int iVar2;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  
  FUN_004cbb7c(in_EAX);
  uVar1 = *(undefined4 *)(unaff_ESI + 0x30);
  if (*(uint *)(unaff_ESI + 0xec) < 0x10) {
    iVar2 = unaff_ESI + 0xd8;
  }
  else {
    iVar2 = *(int *)(unaff_ESI + 0xd8);
  }
  *(int *)(unaff_EBP + -8) = iVar2;
  *(undefined4 *)(unaff_EBP + -4) = uVar1;
  if (unaff_EDI == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = unaff_EDI + -9;
  }
  FUN_0061025c(iVar2 + 9);
  uVar1 = *(undefined4 *)(unaff_ESI + 0x38);
  if (*(uint *)(unaff_ESI + 0x108) < 0x10) {
    iVar2 = unaff_ESI + 0xf4;
  }
  else {
    iVar2 = *(int *)(unaff_ESI + 0xf4);
  }
  *(int *)(unaff_EBP + -8) = iVar2;
  *(undefined4 *)(unaff_EBP + -4) = uVar1;
  if (unaff_EDI == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = unaff_EDI + -9;
  }
  FUN_006102d3(iVar2 + 9);
  uVar1 = *(undefined4 *)(unaff_ESI + 0x40);
  if (*(uint *)(unaff_ESI + 0x124) < 0x10) {
    iVar2 = unaff_ESI + 0x110;
  }
  else {
    iVar2 = *(int *)(unaff_ESI + 0x110);
  }
  *(int *)(unaff_EBP + -8) = iVar2;
  *(undefined4 *)(unaff_EBP + -4) = uVar1;
  if (unaff_EDI == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = unaff_EDI + -9;
  }
  FUN_004cbb05(iVar2 + 9);
  return;
}



void __fastcall FUN_0061010c(undefined4 param_1,int param_2)

{
  int iVar1;
  
  iVar1 = param_2;
  if (param_2 == -9) {
    iVar1 = 0;
  }
  FUN_004cbce1(iVar1 + 9);
  if (param_2 == -9) {
    param_2 = 0;
  }
  FUN_0061034a(param_2 + 9);
  return;
}



void __fastcall FUN_00610180(undefined4 param_1,int param_2)

{
  int iVar1;
  
  iVar1 = param_2;
  if (param_2 == -9) {
    iVar1 = 0;
  }
  FUN_004cbce1(iVar1 + 9);
  iVar1 = param_2;
  if (param_2 == -9) {
    iVar1 = 0;
  }
  FUN_0061034a(iVar1 + 9);
  iVar1 = param_2;
  if (param_2 == -9) {
    iVar1 = 0;
  }
  FUN_006103c1(iVar1 + 9);
  if (param_2 == -9) {
    param_2 = 0;
  }
  FUN_004cbc6a(param_2 + 9);
  return;
}



int FUN_0061025c(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_006102d3(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_0061034a(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_006103c1(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W40F1E0EC> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W40F1E0EC> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>
::get_const_instance(void)

{
                    // 0x210438  608
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW40F1E0EC@W88619A38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW40F1E0EC@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>::
    oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>
              ((oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7453c);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W7EEDEEF7> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W7EEDEEF7> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>
::get_const_instance(void)

{
                    // 0x21043d  615
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW7EEDEEF7@W88619A38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW7EEDEEF7@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>::
    oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>
              ((oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74521);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_00610442(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00610464(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::W40F1E0EC> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::W40F1E0EC> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>
::get_instance(void)

{
                    // 0x210486  928
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW40F1E0EC@W88619A38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW40F1E0EC@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>::
    oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>
              ((oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7453c);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::W7EEDEEF7> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::W7EEDEEF7> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>
::get_instance(void)

{
                    // 0x2104d0  935
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW7EEDEEF7@W88619A38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW7EEDEEF7@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>::
    oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>
              ((oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74521);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_0061051a(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef8f9 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00610543(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef8fa = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W40F1E0EC>::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W40F1E0EC>(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>::
oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>
          (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC> *this)

{
  extended_type_info_typeid<class_W88619A38::W40F1E0EC> *peVar1;
  
                    // 0x21056c  66
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW40F1E0EC@W88619A38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W7EEDEEF7>::oserializer<class boost::archive::xml_oarchive,class
// W88619A38::W7EEDEEF7>(void)

oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>::
oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>
          (oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7> *this)

{
  extended_type_info_typeid<class_W88619A38::W7EEDEEF7> *peVar1;
  
                    // 0x210586  73
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW7EEDEEF7@W88619A38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W88619A38::W40F1E0EC>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W88619A38::W40F1E0EC>
// >::get_const_instance(void)

extended_type_info_typeid<class_W88619A38::W40F1E0EC> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>::
get_const_instance(void)

{
                    // 0x2105a0  440
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW40F1E0EC@W88619A38@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW40F1E0EC@W88619A38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_00610622();
    _atexit((_func_4879 *)&LAB_00c7456d);
  }
  return (extended_type_info_typeid<class_W88619A38::W40F1E0EC> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W88619A38::W7EEDEEF7>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W88619A38::W7EEDEEF7>
// >::get_const_instance(void)

extended_type_info_typeid<class_W88619A38::W7EEDEEF7> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>::
get_const_instance(void)

{
                    // 0x2105a5  447
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW7EEDEEF7@W88619A38@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW7EEDEEF7@W88619A38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_00610672();
    _atexit((_func_4879 *)&LAB_00c74557);
  }
  return (extended_type_info_typeid<class_W88619A38::W7EEDEEF7> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W88619A38::W40F1E0EC>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W88619A38::W40F1E0EC> >::get_instance(void)

extended_type_info_typeid<class_W88619A38::W40F1E0EC> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>::
get_instance(void)

{
                    // 0x2105aa  760
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW40F1E0EC@W88619A38@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW40F1E0EC@W88619A38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_00610622();
    _atexit((_func_4879 *)&LAB_00c7456d);
  }
  return (extended_type_info_typeid<class_W88619A38::W40F1E0EC> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W88619A38::W7EEDEEF7>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W88619A38::W7EEDEEF7> >::get_instance(void)

extended_type_info_typeid<class_W88619A38::W7EEDEEF7> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>::
get_instance(void)

{
                    // 0x2105e6  767
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW7EEDEEF7@W88619A38@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW7EEDEEF7@W88619A38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_00610672();
    _atexit((_func_4879 *)&LAB_00c74557);
  }
  return (extended_type_info_typeid<class_W88619A38::W7EEDEEF7> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>
* FUN_00610622(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>::vftable;
  FUN_00830c60(&W88619A38::W40F1E0EC::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>
* FUN_00610672(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>::vftable;
  FUN_00830c60(&W88619A38::W7EEDEEF7::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_006106c2(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_00610703(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::W40F1E0EC>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W40F1E0EC> *this,
                basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0x210744  1676
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW40F1E0EC@W88619A38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  if (param_1 == (basic_oarchive *)0xfffffff7) {
    param_1 = (basic_oarchive *)0x0;
  }
  FUN_00610990(param_1 + 9);
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W88619A38::W7EEDEEF7>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W88619A38::W7EEDEEF7> *this,
                basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0x21078c  1683
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW7EEDEEF7@W88619A38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  if (param_1 == (basic_oarchive *)0xfffffff7) {
    param_1 = (basic_oarchive *)0x0;
  }
  FUN_00610a07(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W88619A38::W40F1E0EC> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W88619A38::W40F1E0EC> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W88619A38::W40F1E0EC> *peVar1;
  
                    // 0x2107d4  528
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW40F1E0EC@W88619A38@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW40F1E0EC@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7459e);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W88619A38::W7EEDEEF7> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W88619A38::W7EEDEEF7> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W88619A38::W7EEDEEF7> *peVar1;
  
                    // 0x2107d9  535
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW7EEDEEF7@W88619A38@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW7EEDEEF7@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74583);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_006107de(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00610800(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::W40F1E0EC> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::W40F1E0EC> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W88619A38::W40F1E0EC> *peVar1;
  
                    // 0x210822  848
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW40F1E0EC@W88619A38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW40F1E0EC@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W40F1E0EC>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7459e);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::W7EEDEEF7> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::W7EEDEEF7> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W88619A38::W7EEDEEF7> *peVar1;
  
                    // 0x210872  855
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW7EEDEEF7@W88619A38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW7EEDEEF7@W88619A38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W88619A38::W7EEDEEF7>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74583);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_006108c2(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef8fd = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_006108eb(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef8fe = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::W40F1E0EC>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W40F1E0EC> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x210914  1560
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW40F1E0EC@W88619A38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  if (param_1 == (basic_iarchive *)0xfffffff7) {
    param_1 = (basic_iarchive *)0x0;
  }
  FUN_00610a7e(param_1 + 9);
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W88619A38::W7EEDEEF7>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W88619A38::W7EEDEEF7> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x210952  1567
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW7EEDEEF7@W88619A38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  if (param_1 == (basic_iarchive *)0xfffffff7) {
    param_1 = (basic_iarchive *)0x0;
  }
  FUN_00610af5(param_1 + 9);
  return;
}



int FUN_00610990(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_00610a07(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_00610a7e(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_00610af5(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::optional<int> > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class boost::optional<int>
// > >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>
::get_const_instance(void)

{
                    // 0x210b6c  583
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@H@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@H@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>::
    oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c745d4);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::optional<bool> > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::optional<bool> > >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>
::get_const_instance(void)

{
                    // 0x210b71  586
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@_N@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@_N@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>::
    oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c745b9);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_00610b76(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>::vftable
  ;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00610b98(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::optional<int> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::optional<int> > >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>
::get_instance(void)

{
                    // 0x210bba  903
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@H@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@H@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>::
    oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c745d4);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::optional<bool> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::optional<bool> > >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>
::get_instance(void)

{
                    // 0x210c04  906
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@_N@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@_N@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>::
    oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c745b9);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_00610c4e(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef8ff = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>::vftable
  ;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00610c77(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef900 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::optional<int> >::oserializer<class boost::archive::xml_oarchive,class boost::optional<int>
// >(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>
::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>
          (oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_> *this)

{
  extended_type_info_typeid<class_boost::optional<int>_> *peVar1;
  
                    // 0x210ca0  41
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@H@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::optional<bool> >::oserializer<class boost::archive::xml_oarchive,class
// boost::optional<bool> >(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>
::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>
          (oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_> *this)

{
  extended_type_info_typeid<class_boost::optional<bool>_> *peVar1;
  
                    // 0x210cba  44
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@_N@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class boost::optional<int> >
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::optional<int> >
// >::get_const_instance(void)

extended_type_info_typeid<class_boost::optional<int>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>::
get_const_instance(void)

{
                    // 0x210cd4  408
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$optional@H@boost@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$optional@H@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_00610d56();
    _atexit((_func_4879 *)&LAB_00c74605);
  }
  return (extended_type_info_typeid<class_boost::optional<int>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class boost::optional<bool>
// > const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::optional<bool> >
// >::get_const_instance(void)

extended_type_info_typeid<class_boost::optional<bool>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>::
get_const_instance(void)

{
                    // 0x210cd9  411
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$optional@_N@boost@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$optional@_N@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_00610da6();
    _atexit((_func_4879 *)&LAB_00c745ef);
  }
  return (extended_type_info_typeid<class_boost::optional<bool>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class boost::optional<int>
// > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::optional<int> >
// >::get_instance(void)

extended_type_info_typeid<class_boost::optional<int>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>::
get_instance(void)

{
                    // 0x210cde  728
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$optional@H@boost@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$optional@H@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_00610d56();
    _atexit((_func_4879 *)&LAB_00c74605);
  }
  return (extended_type_info_typeid<class_boost::optional<int>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class boost::optional<bool>
// > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::optional<bool> >
// >::get_instance(void)

extended_type_info_typeid<class_boost::optional<bool>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>::
get_instance(void)

{
                    // 0x210d1a  731
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$optional@_N@boost@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$optional@_N@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_00610da6();
    _atexit((_func_4879 *)&LAB_00c745ef);
  }
  return (extended_type_info_typeid<class_boost::optional<bool>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>
* FUN_00610d56(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>::vftable;
  FUN_00830c60(&boost::optional<int>::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>
* FUN_00610da6(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>::vftable;
  FUN_00830c60(&boost::optional<bool>::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_00610df6(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_00610e37(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::optional<int> >::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_>
::save_object_data(oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_> *this
                  ,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_boost::optional<int>_> *local_8;
  
                    // 0x210e78  1651
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@H@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_0061102e();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::optional<bool> >::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>
::save_object_data(oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_boost::optional<bool>_> *local_8;
  
                    // 0x210e94  1654
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@V?$optional@_N@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_006110a5();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::optional<int> > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class boost::optional<int>
// > >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::optional<int>_> *peVar1;
  
                    // 0x210eb0  496
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@H@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@H@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74636);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_00610eb5(char *param_1)

{
  if (param_1 != (char *)0x0) {
    if (*param_1 != '\0') {
      *param_1 = '\0';
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::optional<bool> > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::optional<bool> > >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::optional<bool>_> *peVar1;
  
                    // 0x210ecf  499
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@_N@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@_N@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7461b);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_00610ed4(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>::vftable
  ;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00610ef6(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::optional<int> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::optional<int> > >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>
::get_instance(void)

{
  extended_type_info_typeid<class_boost::optional<int>_> *peVar1;
  
                    // 0x210f18  816
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@H@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@H@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<int>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74636);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::optional<bool> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::optional<bool> > >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>
::get_instance(void)

{
  extended_type_info_typeid<class_boost::optional<bool>_> *peVar1;
  
                    // 0x210f68  819
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@_N@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@_N@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::optional<bool>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7461b);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_00610fb8(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef903 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>::vftable
  ;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00610fe1(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef904 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::optional<int> >::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_>
::load_object_data(iserializer<class_boost::archive::xml_iarchive,class_boost::optional<int>_> *this
                  ,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x21100a  1528
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@H@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_00611178();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::optional<bool> >::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>
::load_object_data(iserializer<class_boost::archive::xml_iarchive,class_boost::optional<bool>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x21101c  1531
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$optional@_N@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_00611225();
  return;
}



void __fastcall FUN_0061102e(int param_1)

{
  char *in_EAX;
  char local_19;
  char *local_18;
  char *local_14;
  char *local_10;
  char **local_c;
  
  local_19 = *in_EAX;
  local_14 = &local_19;
  param_1 = param_1 + 9;
  local_18 = "initialized";
  FUN_004956db(param_1);
  if (local_19 != '\0') {
    local_18 = (char *)0x0;
    local_c = &local_18;
    local_10 = "item_version";
    FUN_004cce2d(param_1);
    local_c = (char **)(in_EAX + 4);
    local_10 = "value";
    FUN_0061111a(param_1);
  }
  return;
}



void __fastcall FUN_006110a5(int param_1)

{
  char *in_EAX;
  char local_19;
  char *local_18;
  char *local_14;
  char *local_10;
  char **local_c;
  
  local_19 = *in_EAX;
  local_14 = &local_19;
  param_1 = param_1 + 9;
  local_18 = "initialized";
  FUN_004956db(param_1);
  if (local_19 != '\0') {
    local_18 = (char *)0x0;
    local_c = &local_18;
    local_10 = "item_version";
    FUN_004cce2d(param_1);
    local_c = (char **)(in_EAX + 1);
    local_10 = "value";
    FUN_004956db(param_1);
  }
  return;
}



int FUN_0061111a(int param_1)

{
  undefined4 *in_EAX;
  
  FUN_0082dd50(*in_EAX);
  FUN_0043f89c(in_EAX[1]);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_00611178(void)

{
  char *unaff_EDI;
  char local_21;
  ushort local_20 [2];
  undefined4 local_1c;
  char *local_18;
  char *local_14;
  char *local_10;
  char **local_c;
  
  local_14 = &local_21;
  local_18 = "initialized";
  FUN_00495923();
  if (local_21 == '\0') {
    if (*unaff_EDI != '\0') {
      *unaff_EDI = '\0';
    }
  }
  else {
    local_18 = (char *)0x0;
    FUN_00831450(local_20);
    if (3 < local_20[0]) {
      local_c = &local_18;
      local_10 = "item_version";
      FUN_004cd077();
    }
    local_c = (char **)&local_1c;
    local_10 = "value";
    FUN_0043f3d7();
    if (*unaff_EDI == '\0') {
      if ((undefined4 *)(unaff_EDI + 4) != (undefined4 *)0x0) {
        *(undefined4 *)(unaff_EDI + 4) = local_1c;
      }
      *unaff_EDI = '\x01';
    }
    else {
      *(undefined4 *)(unaff_EDI + 4) = local_1c;
    }
  }
  return;
}



void FUN_00611225(void)

{
  char *unaff_EDI;
  char local_1e;
  char local_1d;
  ushort local_1c [2];
  char *local_18;
  char *local_14;
  char *local_10;
  char **local_c;
  
  local_14 = &local_1d;
  local_18 = "initialized";
  FUN_00495923();
  if (local_1d == '\0') {
    if (*unaff_EDI != '\0') {
      *unaff_EDI = '\0';
    }
  }
  else {
    local_18 = (char *)0x0;
    FUN_00831450(local_1c);
    if (3 < local_1c[0]) {
      local_c = &local_18;
      local_10 = "item_version";
      FUN_004cd077();
    }
    local_c = (char **)&local_1e;
    local_10 = "value";
    FUN_00495923();
    if (*unaff_EDI == '\0') {
      if (unaff_EDI + 1 != (char *)0x0) {
        unaff_EDI[1] = local_1e;
      }
      *unaff_EDI = '\x01';
    }
    else {
      unaff_EDI[1] = local_1e;
    }
  }
  return;
}



undefined4 __thiscall FUN_00611542(undefined4 param_1,byte param_2)

{
  FUN_006115fa();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061155e(undefined4 *param_1)

{
  FUN_007b221f();
  *param_1 = WD4D119EE::W59FB47B0::vftable;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  FUN_00612566(param_1 + 0xe);
  FUN_00611aa7();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_006115ae(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x118);
  if (pvVar1 != (void *)0x0) {
    FUN_0061155e(pvVar1,param_1);
  }
  FUN_0060f3c5(param_2);
  return param_2;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_006115fa(undefined4 *param_1)

{
  *param_1 = WD4D119EE::W59FB47B0::vftable;
  FUN_0074ca40();
  FUN_0074ca40();
  FUN_00611642();
  return;
}



undefined * Catch_All_00611632(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 3;
  return &DAT_0061163f;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00611642(void)

{
  int unaff_EBP;
  int unaff_EDI;
  
  FUN_0060e38d();
  *(undefined *)(unaff_EBP + -4) = 1;
  if (*(int *)(unaff_EDI + 0x34) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 0;
  if (*(int *)(unaff_EDI + 0x2c) != 0) {
    FUN_0040127a();
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_004d8fe0(unaff_EDI);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061167a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88619A38::W40F1E0EC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006116c0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006116d7(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_0061167a(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



undefined4 __thiscall FUN_00611a3b(undefined4 param_1,byte param_2)

{
  FUN_00611bf3();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00611a57(undefined4 *param_1)

{
  FUN_007b221f();
  *param_1 = WD4D119EE::W94A2E6C6::vftable;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  FUN_00612566(param_1 + 0xe);
  FUN_00611aa7();
  return param_1;
}



void __fastcall FUN_00611aa7(int *param_1)

{
  int *extraout_ECX;
  int **ppiVar1;
  int *unaff_EBX;
  int *piStack_34;
  int *piStack_30;
  uint uStack_2c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c332b1;
  local_14 = ExceptionList;
  uStack_2c = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  if (unaff_EBX != param_1) {
    ppiVar1 = &piStack_34;
    ExceptionList = &local_14;
    piStack_34 = param_1;
    piStack_30 = param_1;
    (**(code **)(*param_1 + 0x14))();
    FUN_007b22a2(unaff_EBX);
    piStack_34 = (int *)0x611af9;
    FUN_0049a74b();
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b25d3();
    puStack_10 = (undefined *)0x0;
    piStack_34 = (int *)0x611b14;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x611b26;
      FUN_0040127a();
    }
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b2adb();
    puStack_10 = (undefined *)0x1;
    piStack_34 = (int *)0x611b44;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x611b56;
      FUN_0040127a();
      ppiVar1 = (int **)extraout_ECX;
    }
    piStack_34 = (int *)ppiVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(unaff_EBX + 0xb);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00611ba7(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x118);
  if (pvVar1 != (void *)0x0) {
    FUN_00611a57(pvVar1,param_1);
  }
  FUN_0060f412(param_2);
  return param_2;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_00611bf3(undefined4 *param_1)

{
  *param_1 = WD4D119EE::W94A2E6C6::vftable;
  FUN_0074ca40();
  FUN_0074ca40();
  FUN_00611c3b();
  return;
}



undefined * Catch_All_00611c2b(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 3;
  return &DAT_00611c38;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00611c3b(void)

{
  int unaff_EBP;
  int unaff_EDI;
  
  FUN_0060e38d();
  *(undefined *)(unaff_EBP + -4) = 1;
  if (*(int *)(unaff_EDI + 0x34) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 0;
  if (*(int *)(unaff_EDI + 0x2c) != 0) {
    FUN_0040127a();
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_004d8fe0(unaff_EDI);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00611c73(void)

{
  undefined local_2c [24];
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x611c7f;
  local_14 = 7;
  FUN_0040180b(0);
  local_8 = 0;
  FUN_0040cafb(local_2c);
  FUN_00401829(1,0);
  FUN_007b2dba();
  return;
}



undefined4 __fastcall FUN_00611cbf(undefined4 param_1)

{
  FUN_007b261f();
  return param_1;
}



void FUN_00611cd4(void)

{
  undefined local_10 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  FUN_007b36ec(local_10);
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_006121e0(undefined4 param_1,byte param_2)

{
  FUN_00612442();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006121fc(undefined4 *param_1)

{
  FUN_007b221f();
  *param_1 = WD4D119EE::WDF413249::vftable;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  FUN_00612566(param_1 + 0x12);
  FUN_00612258();
  return param_1;
}



void __fastcall FUN_00612258(int *param_1)

{
  int *extraout_ECX;
  int **ppiVar1;
  int *unaff_EDI;
  int *piStack_34;
  int *piStack_30;
  uint uStack_2c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c3322b;
  local_14 = ExceptionList;
  uStack_2c = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  if (unaff_EDI != param_1) {
    ppiVar1 = &piStack_34;
    ExceptionList = &local_14;
    piStack_34 = param_1;
    piStack_30 = param_1;
    (**(code **)(*param_1 + 0x14))();
    FUN_007b22a2(unaff_EDI);
    piStack_34 = (int *)0x6122aa;
    FUN_0049a74b();
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b25d3();
    puStack_10 = (undefined *)0x0;
    piStack_34 = (int *)0x6122c5;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x6122d7;
      FUN_0040127a();
    }
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b2adb();
    puStack_10 = (undefined *)0x1;
    piStack_34 = (int *)0x6122f5;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x612307;
      FUN_0040127a();
    }
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b2438();
    puStack_10 = (undefined *)0x2;
    piStack_34 = (int *)0x612325;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x612337;
      FUN_0040127a();
    }
    piStack_34 = (int *)&stack0xffffffdc;
    FUN_007b2ce5();
    puStack_10 = (undefined *)0x3;
    piStack_34 = (int *)0x612355;
    FUN_004fe47e();
    puStack_10 = (undefined *)0xffffffff;
    if (&stack0x00000000 != (undefined *)0x34) {
      piStack_34 = (int *)0x612367;
      FUN_0040127a();
      ppiVar1 = (int **)extraout_ECX;
    }
    piStack_34 = (int *)ppiVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(unaff_EDI + 0xb);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_006123f6(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x128);
  if (pvVar1 != (void *)0x0) {
    FUN_006121fc(pvVar1,param_1);
  }
  FUN_0060f45f(param_2);
  return param_2;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_00612442(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = WD4D119EE::WDF413249::vftable;
  local_8 = 6;
  local_18 = param_1;
  FUN_0074ca40();
  FUN_0074ca40();
  if (local_20 != param_1 + 0xe) {
    param_1[0xe] = 0;
  }
  iVar1 = param_1[0xf];
  param_1[0xf] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  FUN_0074ca40();
  local_8 = 5;
  FUN_006124ae();
  return;
}



undefined * Catch_All_0061249e(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 5;
  return &DAT_006124ab;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006124ae(void)

{
  int unaff_EBP;
  int unaff_EDI;
  
  FUN_0060e38d();
  *(undefined *)(unaff_EBP + -4) = 3;
  if (*(int *)(unaff_EDI + 0x44) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 2;
  if (*(int *)(unaff_EDI + 0x3c) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 1;
  if (*(int *)(unaff_EDI + 0x34) != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 0;
  if (*(int *)(unaff_EDI + 0x2c) != 0) {
    FUN_0040127a();
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_004d8fe0(unaff_EDI);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00612506(void)

{
  undefined local_2c [24];
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x612512;
  local_14 = 7;
  FUN_0040180b(0);
  local_8 = 0;
  FUN_0040cafb(local_2c);
  FUN_00401829(1,0);
  FUN_007b2dba();
  FUN_007b24af();
  FUN_007b2dba();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00612566(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x612572;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00ddfa10,0xe);
  local_8 = 0;
  local_14 = 0xdc85;
  local_12 = 0x79bf;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 2;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00ddfa20,0x12);
  local_8._0_1_ = 3;
  local_14 = 0x1fed;
  local_12 = 0xb1ca;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 5;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00ddfa34,0x11);
  local_8._0_1_ = 6;
  local_14 = 0xe4cc;
  local_12 = 0xa61;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 8;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00ddfa48,0x13);
  local_8._0_1_ = 9;
  local_14 = 0x843c;
  local_12 = 0x3df1;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0xb;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00ddfa5c,10);
  local_8._0_1_ = 0xc;
  local_14 = 0xc1fc;
  local_12 = 0x2ce8;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0xe;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00ddfa68,10);
  local_8._0_1_ = 0xf;
  local_14 = 0x266b;
  local_12 = 0x93e1;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x11;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00ddfa74,10);
  local_8._0_1_ = 0x12;
  local_14 = 0x5fd2;
  local_12 = 0xebf6;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x14;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00ddfa80,8);
  local_8 = CONCAT31(local_8._1_3_,0x15);
  local_14 = 0xf9e;
  local_12 = 0x22f0;
  FUN_00b94330(&local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0061278c(undefined4 param_1)

{
  undefined4 *unaff_ESI;
  undefined2 param_4;
  
  unaff_ESI[1] = param_1;
  *unaff_ESI = WD2A2D81B::WE8601086::vftable;
  FUN_00462566();
  FUN_0041b126(&stack0x00000008);
  *(undefined *)(unaff_ESI + 0xc) = 0;
  if ((char)param_4 != '\0') {
    if ((undefined *)((int)unaff_ESI + 0x31) != (undefined *)0x0) {
      *(undefined *)((int)unaff_ESI + 0x31) = (char)((ushort)param_4 >> 8);
    }
    *(undefined *)(unaff_ESI + 0xc) = 1;
  }
  return;
}



undefined4 __thiscall FUN_006127e2(undefined4 param_1_00,byte param_1)

{
  FUN_006127fe();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_006127fe(undefined4 *param_1)

{
  *param_1 = WD2A2D81B::WE8601086::vftable;
  if (*(char *)(param_1 + 0xc) != '\0') {
    *(undefined *)(param_1 + 0xc) = 0;
  }
  if (*(char *)(param_1 + 10) != '\0') {
    *(undefined *)(param_1 + 10) = 0;
  }
  FUN_00417f97();
  return;
}



undefined4 FUN_00612821(undefined4 param_1)

{
  FUN_00462566(0);
  return param_1;
}



undefined4 FUN_0061283b(undefined4 param_1)

{
  int in_EAX;
  
  FUN_0041b126(in_EAX + 0x28);
  return param_1;
}



undefined4 FUN_0061284f(undefined4 param_1)

{
  FUN_0049d69a();
  return param_1;
}



void FUN_00612866(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W98E1E5E7::WAB682C05::vftable;
  return;
}



void __fastcall FUN_0061286d(undefined4 *param_1)

{
  *param_1 = wxWebProgressBase::vftable;
  return;
}



void __fastcall FUN_00612874(int param_1)

{
  *(undefined *)(param_1 + 4) = 1;
  return;
}



undefined __fastcall FUN_00612879(int param_1)

{
  return *(undefined *)(param_1 + 4);
}



void FUN_0061287d(void)

{
  return;
}



undefined4 * __thiscall FUN_00612880(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxWebProgressBase::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_0061289d(undefined4 param_1)

{
  int in_EAX;
  
  FUN_004325a0(in_EAX + 0x78);
  return param_1;
}



undefined4 FUN_006128b8(undefined4 param_1)

{
  int in_EAX;
  
  FUN_004325a0(in_EAX + 0x9c);
  return param_1;
}



undefined ** FUN_00612abb(void)

{
  return &PTR_u_WE0D167D1_032477fc;
}



undefined ** FUN_00612ac1(void)

{
  return &PTR_PTR_00ddf84c;
}



undefined * FUN_00612ac7(void)

{
  return &DAT_032eeff8;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00612acd(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00446386();
  param_1[0x5d] = W98E1E5E7::WAB682C05::vftable;
  param_1[0x5d] = W98E1E5E7::WE0D167D1::vftable;
  *param_1 = W98E1E5E7::WE0D167D1::vftable;
  param_1[0x5e] = param_4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000014);
}



undefined4 __thiscall FUN_00612c62(undefined4 param_1,byte param_2)

{
  FUN_00612c7e();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_00612c7e(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = W98E1E5E7::WE0D167D1::vftable;
  param_1[0x5d] = W98E1E5E7::WE0D167D1::vftable;
  local_8 = 0xd;
  local_18 = param_1;
  FUN_005d1159();
  if (local_20 != param_1 + 0x70) {
    param_1[0x70] = 0;
  }
  iVar1 = param_1[0x71];
  param_1[0x71] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_8 = 0xc;
  FUN_00612cea();
  return;
}



undefined * Catch_All_00612cda(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 0xc;
  return &DAT_00612ce7;
}



void FUN_00612cea(void)

{
  int unaff_EBP;
  int unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 0xb;
  FUN_00614be6(unaff_ESI + 0x220);
  FUN_00467e73();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0x200));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_00612db4(int param_1)

{
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_EBX;
  
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_EBX);
  FUN_00613385();
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x17c);
}



void __thiscall FUN_006131eb(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c46816;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  FUN_0043d406(param_1_00 + 400);
  local_c = 0;
  iVar2 = FUN_00615117(local_20,param_1,param_2,uVar1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar2 + 4);
}



void __thiscall FUN_006132b8(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c46816;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  FUN_0043d406(param_1_00 + 400);
  local_c = 0;
  iVar2 = FUN_006151c1(local_20,param_1,param_2,uVar1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar2 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00613385(undefined4 *param_1)

{
  int unaff_EDI;
  
  FUN_0043d406(unaff_EDI + 0x180);
  *param_1 = *(undefined4 *)(unaff_EDI + 0x188);
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EDI + 0x18c);
}



void FUN_00613544(void)

{
  undefined4 *puVar1;
  undefined *local_204;
  undefined **local_200;
  uint uStack_1fc;
  undefined local_1ec [4];
  undefined **local_1e8;
  undefined local_1e4 [4];
  int local_1e0;
  undefined local_1dc [4];
  int local_1d8;
  undefined local_1d4 [28];
  undefined4 local_1b8;
  undefined local_1b0 [28];
  undefined4 local_194;
  undefined local_18c [36];
  undefined *local_168;
  undefined4 local_164;
  undefined local_160 [28];
  undefined4 local_144;
  undefined local_120 [36];
  undefined local_fc [20];
  int local_e8;
  undefined local_d8 [188];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c467d0;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_1ec;
  uStack_1fc = DAT_0323f878 ^ (uint)&stack0xfffffe08;
  ExceptionList = &local_14;
  local_200 = (undefined **)0x0;
  local_204 = (undefined *)0x61359a;
  FUN_004710ac();
  local_200 = (undefined **)local_fc;
  local_c = 0;
  local_204 = (undefined *)0x6135b0;
  FUN_0061289d();
  local_c._0_1_ = 1;
  local_200 = (undefined **)PTR_DAT_03236318;
  if (local_e8 == 0) {
    local_204 = (undefined *)0x6136cc;
    FUN_004325b6();
    local_1e8 = &local_204;
    local_c._0_1_ = 6;
    local_204 = (undefined *)0x1e62;
    local_200 = (undefined **)0x57;
    puVar1 = (undefined4 *)FUN_00465be3(local_1dc);
    local_c._0_1_ = 7;
    local_200 = (undefined **)*puVar1;
    local_204 = (undefined *)0x613711;
    local_200 = (undefined **)FUN_00612db4();
    local_c._0_1_ = 8;
    local_204 = (undefined *)0x613723;
    basic_string<>();
    local_194 = 0;
    local_200 = (undefined **)0x0;
    local_204 = local_120;
    local_c._0_1_ = 9;
    FUN_00470ed8(0x1773,local_1b0);
    local_200 = (undefined **)0x613757;
    FUN_0040159c();
    local_200 = (undefined **)0x0;
    local_204 = (undefined *)0x1;
    FUN_00401829();
    local_c._0_1_ = 6;
    if (local_1d8 != 0) {
      local_200 = (undefined **)0x613776;
      FUN_0040127a();
    }
    local_c._0_1_ = 1;
    local_200 = (undefined **)0x61378a;
    FUN_0040159c();
    local_200 = (undefined **)PTR_DAT_03236318;
    local_204 = (undefined *)0x613799;
    FUN_004325b6();
    local_1e8 = &local_204;
    local_c._0_1_ = 10;
    local_204 = (undefined *)0x1e62;
    local_200 = (undefined **)0x58;
    puVar1 = (undefined4 *)FUN_00465be3(local_1e4);
    local_c._0_1_ = 0xb;
    local_200 = (undefined **)*puVar1;
    local_204 = (undefined *)0x6137d9;
    local_200 = (undefined **)FUN_00612db4();
    local_c._0_1_ = 0xc;
    local_204 = (undefined *)0x6137eb;
    basic_string<>();
    local_1b8 = 0;
    local_200 = (undefined **)0x0;
    local_204 = local_18c;
    local_c._0_1_ = 0xd;
    FUN_00470ed8(0x1774,local_1d4);
    local_200 = (undefined **)0x61381c;
    FUN_0040159c();
    local_200 = (undefined **)0x0;
    local_204 = (undefined *)0x1;
    FUN_00401829();
    local_c._0_1_ = 10;
    if (local_1e0 != 0) {
      local_200 = (undefined **)0x61383b;
      FUN_0040127a();
    }
    local_c._0_1_ = 1;
    local_200 = (undefined **)0x61384c;
    FUN_0040159c();
    local_200 = (undefined **)PTR_DAT_03236318;
    local_204 = (undefined *)0x61385e;
    FUN_004325b6();
    local_1e8 = &local_204;
    local_c._0_1_ = 0xe;
    local_204 = (undefined *)0x1e62;
    local_200 = (undefined **)0x59;
    puVar1 = (undefined4 *)FUN_00465be3(local_1dc);
    local_c._0_1_ = 0xf;
    local_200 = (undefined **)*puVar1;
    local_204 = (undefined *)0x61389e;
    local_200 = (undefined **)FUN_00612db4();
    local_c._0_1_ = 0x10;
    local_204 = (undefined *)0x6138b0;
    basic_string<>();
    local_194 = 0;
    local_200 = (undefined **)0x0;
    local_204 = local_120;
    local_c._0_1_ = 0x11;
    FUN_00470ed8(0x1775,local_1b0);
    local_200 = (undefined **)0x6138e4;
    FUN_0040159c();
    local_200 = (undefined **)0x0;
    local_204 = (undefined *)0x1;
    FUN_00401829();
    local_c._0_1_ = 0xe;
    if (local_1d8 != 0) {
      local_200 = (undefined **)0x613903;
      FUN_0040127a();
    }
    local_c._0_1_ = 1;
    local_200 = (undefined **)0x613917;
    FUN_0040159c();
    local_200 = (undefined **)PTR_DAT_03236318;
    local_204 = (undefined *)0x613926;
    FUN_004325b6();
    local_1e8 = &local_204;
    local_c._0_1_ = 0x12;
    local_204 = (undefined *)0x1e62;
    local_200 = (undefined **)0x5a;
    puVar1 = (undefined4 *)FUN_00465be3(local_1e4);
    local_c._0_1_ = 0x13;
    local_200 = (undefined **)*puVar1;
    local_204 = (undefined *)0x613966;
    local_200 = (undefined **)FUN_00612db4();
    local_c._0_1_ = 0x14;
    local_204 = (undefined *)0x613978;
    basic_string<>();
    local_1b8 = 0;
    local_200 = (undefined **)0x0;
    local_204 = local_18c;
    local_c._0_1_ = 0x15;
    FUN_00470ed8(0x1776,local_1d4);
    local_200 = (undefined **)0x6139a9;
    FUN_0040159c();
    local_200 = (undefined **)0x0;
    local_204 = (undefined *)0x1;
    FUN_00401829();
    local_c._0_1_ = 0x12;
    if (local_1e0 != 0) {
      local_200 = (undefined **)0x6139c8;
      FUN_0040127a();
    }
    local_c = CONCAT31(local_c._1_3_,1);
    local_200 = (undefined **)0x6139d9;
    FUN_0040159c();
    local_200 = (undefined **)0x6139e5;
    FUN_00470f04();
  }
  else {
    local_204 = (undefined *)0x6135d4;
    FUN_004325b6();
    local_1e8 = &local_204;
    local_c._0_1_ = 2;
    local_204 = (undefined *)0x1e62;
    local_200 = (undefined **)0x56;
    puVar1 = (undefined4 *)FUN_00465be3(local_1dc);
    local_c._0_1_ = 3;
    local_200 = (undefined **)*puVar1;
    local_204 = (undefined *)0x613619;
    local_200 = (undefined **)FUN_00612db4();
    local_c._0_1_ = 4;
    local_204 = (undefined *)0x61362e;
    basic_string<>();
    local_144 = 0;
    local_200 = (undefined **)0x0;
    local_204 = local_1d4;
    local_c._0_1_ = 5;
    FUN_00470ed8(0x1772,local_160);
    local_200 = (undefined **)0x613668;
    FUN_0040159c();
    local_200 = (undefined **)0x0;
    local_204 = (undefined *)0x1;
    FUN_00401829();
    local_c._0_1_ = 2;
    if (local_1d8 != 0) {
      local_200 = (undefined **)0x613687;
      FUN_0040127a();
    }
    local_c = CONCAT31(local_c._1_3_,1);
    local_200 = (undefined **)0x613698;
    FUN_0040159c();
    local_200 = (undefined **)0x6136a4;
    FUN_00470f04();
    local_200 = (undefined **)local_fc;
    local_204 = (undefined *)0x6136bb;
    FUN_0043261a();
  }
  local_200 = (undefined **)PTR_DAT_03236318;
  local_204 = (undefined *)0x6139f4;
  FUN_004325b6();
  local_1e8 = &local_204;
  local_c._0_1_ = 0x16;
  local_204 = (undefined *)0x1e62;
  local_200 = (undefined **)0x5b;
  puVar1 = (undefined4 *)FUN_00465be3(local_1e4);
  local_c._0_1_ = 0x17;
  local_200 = (undefined **)*puVar1;
  local_204 = (undefined *)0x613a34;
  local_200 = (undefined **)FUN_00612db4();
  local_c._0_1_ = 0x18;
  local_204 = (undefined *)0x613a46;
  basic_string<>();
  local_1b8 = 0;
  local_200 = (undefined **)0x0;
  local_204 = local_18c;
  local_c._0_1_ = 0x19;
  FUN_00470ed8(0x177c,local_1d4);
  local_200 = (undefined **)0x613a77;
  FUN_0040159c();
  local_200 = (undefined **)0x0;
  local_204 = (undefined *)0x1;
  FUN_00401829();
  local_c._0_1_ = 0x16;
  if (local_1e0 != 0) {
    local_200 = (undefined **)0x613a96;
    FUN_0040127a();
  }
  local_c._0_1_ = 1;
  local_200 = (undefined **)0x613aa7;
  FUN_0040159c();
  local_200 = (undefined **)PTR_DAT_03236318;
  local_204 = (undefined *)0x613ab9;
  FUN_004325b6();
  local_1e8 = &local_204;
  local_c._0_1_ = 0x1a;
  local_204 = (undefined *)0x1e62;
  local_200 = (undefined **)0x5c;
  puVar1 = (undefined4 *)FUN_00465be3(local_1dc);
  local_c._0_1_ = 0x1b;
  local_200 = (undefined **)*puVar1;
  local_204 = (undefined *)0x613af9;
  local_200 = (undefined **)FUN_00612db4();
  local_c._0_1_ = 0x1c;
  local_204 = (undefined *)0x613b0b;
  basic_string<>();
  local_194 = 0;
  local_200 = (undefined **)0x0;
  local_204 = local_120;
  local_c._0_1_ = 0x1d;
  FUN_00470ed8(0x177d,local_1b0);
  local_200 = (undefined **)0x613b3f;
  FUN_0040159c();
  local_200 = (undefined **)0x0;
  local_204 = (undefined *)0x1;
  FUN_00401829();
  local_c._0_1_ = 0x1a;
  if (local_1d8 != 0) {
    local_200 = (undefined **)0x613b5e;
    FUN_0040127a();
  }
  local_c._0_1_ = 1;
  local_200 = (undefined **)0x613b72;
  FUN_0040159c();
  local_200 = (undefined **)0x613b7e;
  FUN_00470f04();
  local_200 = (undefined **)PTR_DAT_03236318;
  local_204 = (undefined *)0x613b8d;
  FUN_004325b6();
  local_1e8 = &local_204;
  local_c._0_1_ = 0x1e;
  local_204 = (undefined *)0x1e62;
  local_200 = (undefined **)0x5d;
  puVar1 = (undefined4 *)FUN_00465be3(local_1e4);
  local_c._0_1_ = 0x1f;
  local_200 = (undefined **)*puVar1;
  local_204 = (undefined *)0x613bcd;
  local_200 = (undefined **)FUN_00612db4();
  local_c._0_1_ = 0x20;
  local_204 = (undefined *)0x613bdf;
  basic_string<>();
  local_1b8 = 0;
  local_200 = (undefined **)0x0;
  local_204 = local_18c;
  local_c._0_1_ = 0x21;
  FUN_00470ed8(0x1777,local_1d4);
  local_200 = (undefined **)0x613c10;
  FUN_0040159c();
  local_200 = (undefined **)0x0;
  local_204 = (undefined *)0x1;
  FUN_00401829();
  local_c._0_1_ = 0x1e;
  if (local_1e0 != 0) {
    local_200 = (undefined **)0x613c2f;
    FUN_0040127a();
  }
  local_c._0_1_ = 1;
  local_200 = (undefined **)0x613c40;
  FUN_0040159c();
  local_200 = (undefined **)PTR_DAT_03236318;
  local_204 = (undefined *)0x613c52;
  FUN_004325b6();
  local_1e8 = &local_204;
  local_c._0_1_ = 0x22;
  local_204 = (undefined *)0x1e62;
  local_200 = (undefined **)0x5e;
  puVar1 = (undefined4 *)FUN_00465be3(local_1dc);
  local_c._0_1_ = 0x23;
  local_200 = (undefined **)*puVar1;
  local_204 = (undefined *)0x613c92;
  local_200 = (undefined **)FUN_00612db4();
  local_c._0_1_ = 0x24;
  local_204 = (undefined *)0x613ca4;
  basic_string<>();
  local_194 = 0;
  local_200 = (undefined **)0x0;
  local_204 = local_120;
  local_c._0_1_ = 0x25;
  FUN_00470ed8(0x1778,local_1b0);
  local_200 = (undefined **)0x613cd8;
  FUN_0040159c();
  local_200 = (undefined **)0x0;
  local_204 = (undefined *)0x1;
  FUN_00401829();
  local_c._0_1_ = 0x22;
  if (local_1d8 != 0) {
    local_200 = (undefined **)0x613cf7;
    FUN_0040127a();
  }
  local_c._0_1_ = 1;
  local_200 = (undefined **)0x613d0b;
  FUN_0040159c();
  local_200 = (undefined **)PTR_DAT_03236318;
  local_204 = (undefined *)0x613d1a;
  FUN_004325b6();
  local_1e8 = &local_204;
  local_c._0_1_ = 0x26;
  local_204 = (undefined *)0x1e62;
  local_200 = (undefined **)0x5f;
  puVar1 = (undefined4 *)FUN_00465be3(local_1e4);
  local_c._0_1_ = 0x27;
  local_200 = (undefined **)*puVar1;
  local_204 = (undefined *)0x613d5a;
  local_200 = (undefined **)FUN_00612db4();
  local_c._0_1_ = 0x28;
  local_204 = (undefined *)0x613d6c;
  basic_string<>();
  local_1b8 = 0;
  local_200 = (undefined **)0x0;
  local_204 = local_18c;
  local_c._0_1_ = 0x29;
  FUN_00470ed8(0x1779,local_1d4);
  local_200 = (undefined **)0x613d9d;
  FUN_0040159c();
  local_200 = (undefined **)0x0;
  local_204 = (undefined *)0x1;
  FUN_00401829();
  local_c._0_1_ = 0x26;
  if (local_1e0 != 0) {
    local_200 = (undefined **)0x613dbc;
    FUN_0040127a();
  }
  local_c._0_1_ = 1;
  local_200 = (undefined **)0x613dcd;
  FUN_0040159c();
  local_200 = (undefined **)PTR_DAT_03236318;
  local_204 = (undefined *)0x613ddf;
  FUN_004325b6();
  local_1e8 = &local_204;
  local_c._0_1_ = 0x2a;
  local_204 = (undefined *)0x1e62;
  local_200 = (undefined **)0x60;
  puVar1 = (undefined4 *)FUN_00465be3(local_1dc);
  local_c._0_1_ = 0x2b;
  local_200 = (undefined **)*puVar1;
  local_204 = (undefined *)0x613e1f;
  local_200 = (undefined **)FUN_00612db4();
  local_c._0_1_ = 0x2c;
  local_204 = (undefined *)0x613e31;
  basic_string<>();
  local_194 = 0;
  local_200 = (undefined **)0x0;
  local_204 = local_120;
  local_c._0_1_ = 0x2d;
  FUN_00470ed8(0x177a,local_1b0);
  local_200 = (undefined **)0x613e65;
  FUN_0040159c();
  local_200 = (undefined **)0x0;
  local_204 = (undefined *)0x1;
  FUN_00401829();
  local_c._0_1_ = 0x2a;
  if (local_1d8 != 0) {
    local_200 = (undefined **)0x613e84;
    FUN_0040127a();
  }
  local_c._0_1_ = 1;
  local_200 = (undefined **)0x613e98;
  FUN_0040159c();
  local_200 = (undefined **)PTR_DAT_03236318;
  local_204 = (undefined *)0x613ea7;
  FUN_004325b6();
  local_1e8 = &local_204;
  local_c._0_1_ = 0x2e;
  local_204 = (undefined *)0x1e62;
  local_200 = (undefined **)0x61;
  puVar1 = (undefined4 *)FUN_00465be3(local_1e4);
  local_c._0_1_ = 0x2f;
  local_200 = (undefined **)*puVar1;
  local_204 = (undefined *)0x613ee9;
  local_200 = (undefined **)FUN_00612db4();
  local_c._0_1_ = 0x30;
  local_204 = (undefined *)0x613efb;
  basic_string<>();
  local_1b8 = 0;
  local_200 = (undefined **)0x0;
  local_204 = local_18c;
  local_c._0_1_ = 0x31;
  FUN_00470ed8(0x177b,local_1d4);
  local_200 = (undefined **)0x613f2c;
  FUN_0040159c();
  local_200 = (undefined **)0x0;
  local_204 = (undefined *)0x1;
  FUN_00401829();
  local_c._0_1_ = 0x2e;
  if (local_1e0 != 0) {
    local_200 = (undefined **)0x613f4b;
    FUN_0040127a();
  }
  local_c = CONCAT31(local_c._1_3_,1);
  local_200 = (undefined **)0x613f5c;
  FUN_0040159c();
  local_200 = &local_168;
  local_204 = (undefined *)0x613f69;
  FUN_00910c30();
  local_200 = &local_168;
  local_204 = local_1e4;
  puVar1 = (undefined4 *)FUN_00615428();
  local_204 = (undefined *)*puVar1;
  local_200 = (undefined **)puVar1[1];
  local_168 = local_204;
  local_164 = local_200;
  FUN_0091ca70(local_d8);
  local_200 = (undefined **)0x613fb2;
  FUN_0040159c();
  local_c = 0xffffffff;
  local_200 = (undefined **)0x613fc6;
  FUN_0092de10();
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00614072(int param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined auStack_74 [7];
  char local_6d;
  char local_68;
  int local_64;
  undefined local_58 [32];
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c491fe;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_74;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_14;
  local_6d = '\0';
  local_64 = param_1;
  FUN_0043d406(param_1 + 0x1f8);
  local_c = 0;
  if (*(int *)(param_1 + 0x21c) != 0) {
    FUN_00467f9f(uVar3);
    uVar4 = FUN_004684a0();
    basic_string<>(uVar4);
    local_c._0_1_ = 1;
    FUN_00467eb7();
    iVar2 = local_64;
    FUN_00614c68();
    FUN_00614d45(local_58);
    local_c._0_1_ = 2;
    if (*(int *)(iVar2 + 0x23c) != 0) {
      FUN_00449c01(*(undefined4 *)(*(int *)(iVar2 + 0x230) + *(int *)(iVar2 + 0x238) * 4));
      *(int *)(iVar2 + 0x238) = *(int *)(iVar2 + 0x238) + 1;
      if (*(uint *)(iVar2 + 0x234) <= *(uint *)(iVar2 + 0x238)) {
        *(undefined4 *)(iVar2 + 0x238) = 0;
      }
      piVar1 = (int *)(iVar2 + 0x23c);
      *piVar1 = *piVar1 + -1;
      if (*piVar1 == 0) {
        *(undefined4 *)(iVar2 + 0x238) = 0;
      }
    }
    FUN_006131eb(local_38,local_58);
    local_6d = '\x01';
    local_c = CONCAT31(local_c._1_3_,1);
    FUN_00449c01(local_58);
    FUN_00401829(1,0);
    param_1 = local_64;
  }
  local_c = 0xffffffff;
  if (local_68 != '\0') {
    FUN_00401477();
  }
  if (local_6d == '\0') {
    FUN_0043d406(param_1 + 0x1b8);
    local_c = 3;
    if (*(int **)(param_1 + 0x1c0) != (int *)0x0) {
      (**(code **)(**(int **)(param_1 + 0x1c0) + 0x14))();
    }
    local_c = 0xffffffff;
    if (local_68 != '\0') {
      FUN_00401477();
    }
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void FUN_00614295(void)

{
  float local_8;
  
  FUN_0081acda(&local_8);
  FUN_0081ad3a(local_8 * 1.25);
  return;
}



void FUN_006142cf(void)

{
  float local_8;
  
  FUN_0081acda(&local_8);
  FUN_0081ad3a(local_8 / 1.25);
  return;
}



void FUN_00614309(int param_1)

{
  int iVar1;
  undefined uVar2;
  
  iVar1 = *(int *)(param_1 + 0x14);
  if (iVar1 == 0x1777) {
    uVar2 = FUN_0081ad9e();
  }
  else if (iVar1 == 0x1778) {
    uVar2 = FUN_0081adc9();
  }
  else if (iVar1 == 0x1779) {
    uVar2 = FUN_0081adf4();
  }
  else {
    if (iVar1 != 0x177a) {
      return;
    }
    uVar2 = FUN_0081ae1f();
  }
  *(undefined *)(param_1 + 0x5f) = 1;
  *(undefined *)(param_1 + 0x5d) = uVar2;
  return;
}



// WARNING: Removing unreachable block (ram,0x0061448a)
// WARNING: Removing unreachable block (ram,0x006144a7)
// WARNING: Removing unreachable block (ram,0x006144c2)

void __fastcall FUN_0061435e(int param_1)

{
  uint uVar1;
  int iVar2;
  char local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c3f16b;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_14;
  local_c = 0;
  FUN_0043d406(param_1 + 400);
  local_c = CONCAT31(local_c._1_3_,1);
  if (*(int *)(param_1 + 0x1b4) != 0) {
    if (*(int *)(param_1 + 0x1b4) + *(uint *)(param_1 + 0x1b0) < *(uint *)(param_1 + 0x1b0)) {
      FUN_00a3fb10();
    }
    iVar2 = FUN_006913fd();
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar2 + 4);
  }
  local_c = (uint)local_c._1_3_ << 8;
  if (local_1c != '\0') {
    FUN_00401477(uVar1);
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_0061451c(int param_1)

{
  uint uVar1;
  char local_24;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3f140;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_14;
  FUN_0043d406(param_1 + 0xc);
  local_c = 0;
  FUN_00492da1(uVar1);
  local_c._0_1_ = 1;
  FUN_005d11c9(param_1 + 0x14);
  local_c = (uint)local_c._1_3_ << 8;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  local_c = 0xffffffff;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



void FUN_006145b0(int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined auStack_bc [4];
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 local_ac;
  undefined4 local_a8;
  undefined local_a4 [28];
  undefined4 local_88;
  undefined local_80 [28];
  undefined4 local_64;
  undefined local_5c [28];
  undefined4 local_40;
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2ac73;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_bc;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  FUN_0045882f(local_38);
  local_c = 0;
  if (*(int *)(param_1 + 0x3c) == 0) {
    basic_string<>(local_38);
    local_88 = 0;
    local_c = CONCAT31(local_c._1_3_,1);
    FUN_0081f2ac(local_a4,0,0);
    FUN_0040159c();
  }
  else {
    FUN_00853ce0(0);
    local_c._0_1_ = 2;
    FUN_00853ce0(0);
    local_c._0_1_ = 3;
    local_b4 = **(undefined4 **)(param_1 + 0x38);
    local_b8 = *(undefined4 *)(param_1 + 0x20);
    while( true ) {
      local_a8 = *(undefined4 *)(param_1 + 0x38);
      local_ac = *(undefined4 *)(param_1 + 0x20);
      cVar1 = FUN_006b8eca(uVar2);
      if (cVar1 != '\0') break;
      iVar3 = FUN_006badde();
      basic_string<>(iVar3 + 0x1c);
      local_64 = 0;
      local_c._0_1_ = 4;
      uVar4 = FUN_006badde();
      basic_string<>(uVar4);
      local_40 = 0;
      local_c._0_1_ = 5;
      FUN_008195e7(local_5c,local_80);
      FUN_0040159c();
      local_c._0_1_ = 3;
      FUN_0040159c();
      FUN_0040e0e4();
    }
    basic_string<>(local_38);
    local_64 = 0;
    local_c._0_1_ = 6;
    FUN_0081f2ac(local_80,0,local_a4);
    FUN_0040159c();
    local_c._0_1_ = 7;
    FUN_00853f30();
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00853f30();
  }
  FUN_00401829(1,0);
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006147b2(void)

{
  FUN_00853f30();
  FUN_00853f30();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_006147e0(int param_1_00,int param_1)

{
  char local_34;
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x6147ec;
  FUN_0045882f(local_30);
  local_8 = 0;
  FUN_0043d406(param_1_00 + 0x84);
  local_8._0_1_ = 1;
  FUN_00467c1e(local_30);
  FUN_00614cd6(param_1 + 0x20);
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_34 != '\0') {
    FUN_00401477();
  }
  FUN_00401829(1,0);
  FUN_00a421fb();
  return;
}



void FUN_00614857(int param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined **local_4b4;
  undefined4 local_49c;
  undefined ***local_498;
  undefined4 local_494;
  undefined local_490 [4];
  int local_48c;
  undefined4 local_488;
  undefined local_484 [28];
  undefined4 local_468;
  undefined local_428 [28];
  undefined4 local_40c;
  undefined local_3e0 [80];
  undefined local_390 [132];
  undefined local_30c [752];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c46547;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&local_49c;
  ExceptionList = &local_14;
  local_4b4 = (undefined **)0x6148ad;
  FUN_006128b8();
  local_c = 0;
  local_4b4 = (undefined **)0x6148c2;
  FUN_0040c8aa();
  local_4b4 = (undefined **)&DAT_00ddf854;
  local_c._0_1_ = 1;
  basic_string<>();
  local_4b4 = (undefined **)&local_498;
  local_c._0_1_ = 2;
  local_498 = (undefined ***)0x5c532966;
  local_494 = 0x9f986f96;
  local_488 = FUN_00b94470();
  local_498 = &local_4b4;
  local_c._0_1_ = 3;
  local_4b4 = (undefined **)0x1e62;
  FUN_00465be3(local_490);
  local_c._0_1_ = 4;
  local_4b4 = (undefined **)0x614947;
  uVar1 = FUN_00612db4();
  local_c._0_1_ = 5;
  local_4b4 = (undefined **)FUN_0040e327(local_390,uVar1);
  FUN_0040e327();
  local_4b4 = (undefined **)0x1;
  FUN_00401829();
  local_c._0_1_ = 3;
  if (local_48c != 0) {
    FUN_0040127a();
  }
  local_4b4 = (undefined **)0x1;
  FUN_00401829();
  local_4b4 = (undefined **)0x1;
  local_c._0_1_ = 1;
  FUN_00401829();
  local_4b4 = (undefined **)0x6149c1;
  FUN_0043c211();
  local_c._0_1_ = 6;
  local_4b4 = (undefined **)0x6149db;
  FUN_004325b6();
  local_498 = &local_4b4;
  local_c._0_1_ = 7;
  local_4b4 = (undefined **)0x1e62;
  FUN_00465be3(local_490);
  local_c._0_1_ = 8;
  local_4b4 = (undefined **)0x614a18;
  FUN_00612db4();
  local_c._0_1_ = 9;
  local_4b4 = (undefined **)0x614a2d;
  basic_string<>();
  local_40c = 0;
  local_c._0_1_ = 10;
  FUN_0040c93e();
  local_c._0_1_ = 0xb;
  local_4b4 = (undefined **)0x614a60;
  basic_string<>();
  local_468 = 0;
  local_4b4 = (undefined **)&DAT_03238d04;
  local_c._0_1_ = 0xc;
  FUN_00966560(local_49c,local_428,local_3e0,local_30c,local_484,6,&DAT_03238d0c);
  FUN_0040159c();
  local_4b4 = (undefined **)0x1;
  FUN_00401829();
  FUN_0040159c();
  local_4b4 = (undefined **)0x1;
  FUN_00401829();
  local_c._0_1_ = 0x12;
  if (local_48c != 0) {
    FUN_0040127a();
  }
  FUN_0040159c();
  local_c._0_1_ = 0x14;
  FUN_0040159c();
  iVar2 = FUN_00967140();
  if (iVar2 == 0x13ec) {
    local_4b4 = (undefined **)0x614b29;
    puVar3 = (undefined4 *)operator_new(8);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      *puVar3 = wxWebProgressBase::vftable;
      *(undefined *)(puVar3 + 1) = 0;
    }
    *(undefined4 *)(param_1 + 0x114) = 3;
    local_4b4 = (undefined **)0x614b5b;
    FUN_00484f30();
    local_c._0_1_ = 0x15;
    local_4b4 = (undefined **)0x614b6f;
    FUN_0043261a();
    FUN_0040159c();
    *(undefined4 **)(param_1 + 0x13c) = puVar3;
  }
  else {
    *(undefined4 *)(param_1 + 0x114) = 4;
  }
  local_c._0_1_ = 1;
  FUN_00484d9e();
  local_c = (uint)local_c._1_3_ << 8;
  FUN_004085a7();
  FUN_0040159c();
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00614be6(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined *puVar4;
  int iVar6;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  undefined4 *puVar5;
  
  uStack_4 = 0;
  puVar4 = auStack_20;
  local_8 = 0;
  while (param_1[7] != 0) {
    if (param_1[7] != 0) {
      uVar3 = param_1[7] + -1 + param_1[6];
      if ((uint)param_1[5] <= uVar3) {
        uVar3 = uVar3 - param_1[5];
      }
      *(undefined4 *)(puVar4 + -4) = *(undefined4 *)(param_1[4] + uVar3 * 4);
      puVar5 = (undefined4 *)(puVar4 + -8);
      puVar4 = puVar4 + -8;
      *puVar5 = 0x614c1e;
      FUN_00449c01();
      piVar1 = param_1 + 7;
      *piVar1 = *piVar1 + -1;
      if (*piVar1 == 0) {
        param_1[6] = 0;
      }
    }
  }
  iVar6 = param_1[5];
  while (iVar2 = param_1[4], iVar6 != 0) {
    iVar6 = iVar6 + -1;
    piVar1 = (int *)(iVar2 + iVar6 * 4);
    if (*piVar1 != 0) {
      *(int *)(puVar4 + -4) = *piVar1;
                    // WARNING: Subroutine does not return
      *(undefined **)(puVar4 + -8) = &UNK_00614c3f;
      FUN_00a3f6a1();
    }
  }
  if (iVar2 != 0) {
    *(int *)(puVar4 + -4) = iVar2;
                    // WARNING: Subroutine does not return
    *(undefined **)(puVar4 + -8) = &UNK_00614c51;
    FUN_00a3f6a1();
  }
  *(undefined4 *)(puVar4 + -4) = *param_1;
  param_1[5] = 0;
  param_1[4] = 0;
                    // WARNING: Subroutine does not return
  *(undefined **)(puVar4 + -8) = &UNK_00614c5f;
  FUN_00a3f6a1();
}



undefined4 FUN_00614c68(void)

{
  int *piVar1;
  int **in_EAX;
  int iVar2;
  int iVar3;
  int *piVar4;
  
  piVar4 = in_EAX[6];
  if ((int *)((int)in_EAX[7] + (int)piVar4) < piVar4) {
    FUN_00a3fb10();
  }
  piVar1 = *in_EAX;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
    iVar3 = 0;
  }
  else {
    iVar2 = *piVar1;
    iVar3 = *piVar1;
  }
  if ((int *)(*(int *)(iVar3 + 0x1c) + *(int *)(iVar2 + 0x18)) <= piVar4) {
    FUN_00a3fb10();
  }
  if (piVar1 == (int *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar1;
  }
  if (*(int **)(iVar3 + 0x14) <= piVar4) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    piVar4 = (int *)((int)piVar4 - *(int *)(iVar3 + 0x14));
  }
  if (piVar1 == (int *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar1;
  }
  return *(undefined4 *)(*(int *)(iVar3 + 0x10) + (int)piVar4 * 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00614cd6(int param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  
  if (*(uint *)(param_1 + 0x14) <= *(int *)(param_1 + 0x1c) + 1U) {
    FUN_00614eb5();
  }
  uVar1 = *(int *)(param_1 + 0x18) + *(int *)(param_1 + 0x1c);
  if (*(uint *)(param_1 + 0x14) <= uVar1) {
    uVar1 = uVar1 - *(uint *)(param_1 + 0x14);
  }
  iVar3 = uVar1 * 4;
  if (*(int *)(iVar3 + *(int *)(param_1 + 0x10)) == 0) {
    pvVar2 = operator_new(0x20);
    *(void **)(iVar3 + *(int *)(param_1 + 0x10)) = pvVar2;
  }
  iVar3 = *(int *)(iVar3 + *(int *)(param_1 + 0x10));
  if (iVar3 != 0) {
    FUN_00614d45(iVar3);
  }
  *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + 1;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_00614d45(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  int **ppiVar3;
  undefined4 uVar4;
  int iVar5;
  int *piVar6;
  
  ppiVar3 = (int **)FUN_00418daa(1,0);
  if (ppiVar3 == (int **)0x0) {
    ppiVar3 = (int **)0x0;
  }
  else {
    *ppiVar3 = param_1;
  }
  *param_1 = (int)ppiVar3;
  FUN_00448bae();
  iVar1 = param_1[6];
  uVar4 = FUN_00614f8e(*(undefined4 *)(*(int *)(param_1_00 + 0x18) + 4),iVar1);
  *(undefined4 *)(iVar1 + 4) = uVar4;
  param_1[7] = *(int *)(param_1_00 + 0x1c);
  iVar1 = param_1[6];
  piVar2 = *(int **)(iVar1 + 4);
  if (*(char *)((int)*(int **)(iVar1 + 4) + 0x45) == '\0') {
    do {
      piVar6 = piVar2;
      piVar2 = (int *)*piVar6;
    } while (*(char *)((int)piVar2 + 0x45) == '\0');
    *(int **)param_1[6] = piVar6;
    iVar1 = *(int *)(param_1[6] + 4);
    do {
      iVar5 = iVar1;
      iVar1 = *(int *)(iVar5 + 8);
    } while (*(char *)(iVar1 + 0x45) == '\0');
    *(int *)(param_1[6] + 8) = iVar5;
  }
  else {
    *(int *)iVar1 = iVar1;
    *(int *)(param_1[6] + 8) = param_1[6];
  }
  return param_1;
}



void Catch_All_00614de0(void)

{
  code *pcVar1;
  
  FUN_00449bcd();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_00614df2(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxUpdateUIEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void FUN_00614e3d(void)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int unaff_ESI;
  int iVar5;
  
  while (*(int *)(unaff_ESI + 0x1c) != 0) {
    if (*(int *)(unaff_ESI + 0x1c) != 0) {
      uVar2 = *(int *)(unaff_ESI + 0x1c) + -1 + *(int *)(unaff_ESI + 0x18);
      uVar4 = uVar2 >> 1;
      if (*(uint *)(unaff_ESI + 0x14) <= uVar4) {
        uVar4 = uVar4 - *(uint *)(unaff_ESI + 0x14);
      }
      if (*(int *)(*(int *)(*(int *)(unaff_ESI + 0x10) + uVar4 * 4) + 4 + (uVar2 & 1) * 8) != 0) {
        FUN_0040127a();
      }
      piVar1 = (int *)(unaff_ESI + 0x1c);
      *piVar1 = *piVar1 + -1;
      if (*piVar1 == 0) {
        *(undefined4 *)(unaff_ESI + 0x18) = 0;
      }
    }
  }
  iVar5 = *(int *)(unaff_ESI + 0x14);
  while (iVar3 = *(int *)(unaff_ESI + 0x10), iVar5 != 0) {
    iVar5 = iVar5 + -1;
    piVar1 = (int *)(iVar3 + iVar5 * 4);
    if (*piVar1 != 0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*piVar1);
    }
  }
  if (iVar3 != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar3);
  }
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined4 *)(unaff_ESI + 0x10) = 0;
  return;
}



void FUN_00614eb5(void)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  uint uVar5;
  uint uVar6;
  int unaff_ESI;
  undefined8 uVar7;
  
  uVar7 = CONCAT44(0x7ffffff,*(int *)(unaff_ESI + 0x14));
  if (*(int *)(unaff_ESI + 0x14) == 0x7ffffff) {
    uVar7 = FUN_00467f14();
  }
  uVar5 = (uint)uVar7 >> 1;
  if (uVar5 < 8) {
    uVar5 = 8;
  }
  uVar6 = 1;
  if ((1 < uVar5) && ((uint)uVar7 <= (int)((ulonglong)uVar7 >> 0x20) - uVar5)) {
    uVar6 = uVar5;
  }
  uVar5 = *(uint *)(unaff_ESI + 0x18);
  puVar1 = (undefined4 *)FUN_00467f53();
  FUN_0061526b(*(int *)(unaff_ESI + 0x10) + uVar5 * 4);
  if (uVar6 < uVar5) {
    FUN_0061526b(*(undefined4 *)(unaff_ESI + 0x10));
    puVar4 = (undefined4 *)FUN_0061526b(*(int *)(unaff_ESI + 0x10) + uVar6 * 4);
    uVar5 = uVar6;
  }
  else {
    iVar2 = uVar6 - uVar5;
    puVar3 = (undefined4 *)FUN_0061526b(*(undefined4 *)(unaff_ESI + 0x10));
    puVar4 = puVar1;
    if (iVar2 != 0) {
      for (; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar3 = 0;
        puVar3 = puVar3 + 1;
      }
    }
  }
  if (uVar5 != 0) {
    for (; uVar5 != 0; uVar5 = uVar5 - 1) {
      *puVar4 = 0;
      puVar4 = puVar4 + 1;
    }
  }
  if (*(int *)(unaff_ESI + 0x10) == 0) {
    *(int *)(unaff_ESI + 0x14) = *(int *)(unaff_ESI + 0x14) + uVar6;
    *(undefined4 **)(unaff_ESI + 0x10) = puVar1;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(int *)(unaff_ESI + 0x10));
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00614f8e(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *local_18;
  
  local_18 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)param_1 + 0x45) == '\0') {
    puVar1 = (undefined4 *)
             FUN_0040e214(local_18,param_2,local_18,param_1 + 3,*(undefined *)(param_1 + 0x11));
    if (*(char *)((int)local_18 + 0x45) != '\0') {
      local_18 = puVar1;
    }
    uVar2 = FUN_00614f8e(*param_1,puVar1);
    *puVar1 = uVar2;
    uVar2 = FUN_00614f8e(param_1[2],puVar1);
    puVar1[2] = uVar2;
  }
  return local_18;
}



void Catch_All_00614ff8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_00449815(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0061500d(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x10);
  if (pvVar1 != (void *)0x0) {
    FUN_00615292(param_2,param_3,0);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00615117(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined *puVar1;
  undefined *puVar2;
  undefined4 local_28;
  int *local_24;
  undefined *local_20;
  undefined4 local_1c;
  undefined *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x615123;
  local_1c = 0;
  local_18 = (undefined *)((uint)local_18 & 0xffffff00);
  local_28 = 0;
  FUN_00615317(local_18);
  FUN_007a491c(&local_28,0,0);
  local_8 = 1;
  if (local_24 == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_24 + 0x10))();
  }
  puVar1 = puVar2 + 4;
  local_8 = CONCAT31(local_8._1_3_,2);
  local_20 = puVar1;
  local_18 = puVar1;
  if (puVar1 != (undefined *)0x0) {
    FUN_00615be5(puVar1,param_2,param_3);
  }
  *puVar2 = 1;
  FUN_007a491c(&local_28,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_24);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006151c1(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined *puVar1;
  undefined *puVar2;
  undefined4 local_28;
  int *local_24;
  undefined *local_20;
  undefined4 local_1c;
  undefined *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x6151cd;
  local_1c = 0;
  local_18 = (undefined *)((uint)local_18 & 0xffffff00);
  local_28 = 0;
  FUN_0061536e(local_18);
  FUN_007a491c(&local_28,0,0);
  local_8 = 1;
  if (local_24 == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_24 + 0x10))();
  }
  puVar1 = puVar2 + 4;
  local_8 = CONCAT31(local_8._1_3_,2);
  local_20 = puVar1;
  local_18 = puVar1;
  if (puVar1 != (undefined *)0x0) {
    FUN_00615c23(puVar1,param_2,param_3);
  }
  *puVar2 = 1;
  FUN_007a491c(&local_28,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_24);
}



void * __fastcall FUN_0061526b(undefined4 param_1_00,void *param_2,void *param_1)

{
  int in_EAX;
  int iVar1;
  rsize_t _DstSize;
  
  iVar1 = in_EAX - (int)param_1 >> 2;
  _DstSize = iVar1 * 4;
  if (iVar1 != 0) {
    _memmove_s(param_2,_DstSize,param_1,_DstSize);
  }
  return (void *)(_DstSize + (int)param_2);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_00615292(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  param_1_00[1] = param_3;
  param_1_00[2] = param_1;
  *param_1_00 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxUpdateUIEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
                ::vftable;
  param_1_00[3] = param_2;
  return;
}



void Catch_All_00615306(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x20) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_00615317(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x54);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W98E1E5E7::W3C866769*,class_boost::detail::sp_ms_deleter<class_W98E1E5E7::W3C866769>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_0061535d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x54) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_0061536e(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x54);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W98E1E5E7::W889F1A82*,class_boost::detail::sp_ms_deleter<class_W98E1E5E7::W889F1A82>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_006153b4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x54) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



uint __thiscall FUN_006153c5(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W98E1E5E7::W0E452454>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_006153e6(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W98E1E5E7::W3C866769>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_00615407(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W98E1E5E7::W889F1A82>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



void __thiscall FUN_00615428(int *param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  undefined4 local_8;
  
  local_8 = param_2[1];
  param_2 = (undefined4 *)*param_2;
  (**(code **)(*param_1_00 + 0x260))(&param_2,&local_8);
  *param_1 = param_2;
  param_1[1] = local_8;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0061545c(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x615468;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b9fa0,0x13);
  local_8 = 0;
  local_18 = 0x32bffb14;
  local_14 = 0xd4371e5;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_006154ad(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x6154b9;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b9fc8,0x13);
  local_8 = 0;
  local_18 = 0xe9dee355;
  local_14 = 0xeffb398c;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_006154fe(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x61550a;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026b9ff0,0x18);
  local_8 = 0;
  local_18 = 0xd4161300;
  local_14 = 0xfc70c8d7;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0061554f(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x61555b;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026ba024,0x12);
  local_8 = 0;
  local_18 = 0xbab4e2b7;
  local_14 = 0xbc1f9f7;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_006155a0(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x6155ac;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026ba04c,0x17);
  local_8 = 0;
  local_18 = 0xe0ac1f6f;
  local_14 = 0xf4b37e37;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_006155f1(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x6155fd;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026ba07c,0x14);
  local_8 = 0;
  local_18 = 0x75169d37;
  local_14 = 0x8a22d6b8;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00615642(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x61564e;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026ba0a8,0x19);
  local_8 = 0;
  local_18 = 0xc96faa65;
  local_14 = 0x1dad8071;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00615693(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x61569f;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026ba0e0,0x1f);
  local_8 = 0;
  local_18 = 0xc82a1128;
  local_14 = 0xad311ce6;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_006156e4(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x6156f0;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026ba120,0x1c);
  local_8 = 0;
  local_18 = 0x80875e43;
  local_14 = 0xc654567b;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

char __thiscall FUN_00615735(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  undefined *puVar2;
  undefined local_a8 [28];
  undefined4 local_8c;
  void *local_84;
  undefined4 local_7c;
  undefined4 local_78 [7];
  undefined4 local_5c;
  undefined local_54 [28];
  undefined4 local_38;
  undefined local_30 [24];
  undefined4 local_18;
  undefined4 local_14;
  uint local_c;
  undefined local_6;
  char local_5;
  
  local_78[0] = 0x5c;
  local_7c = 0x615745;
  local_c = 0;
  FUN_00819607(&local_6);
  if ((*(int *)(param_1_00 + 0x14) == 0) || ((int)param_1 < 1)) {
    local_5 = '\0';
    local_18 = 7;
    FUN_0040180b(0);
    local_14 = 0;
    local_7c = 1;
    puVar2 = local_30;
    local_c = 2;
  }
  else {
    local_5 = '\x01';
    basic_string<>(param_1_00);
    local_8c = 0;
    local_7c = 0;
    puVar2 = local_a8;
    local_c = 1;
  }
  uVar1 = FUN_006154ad();
  local_7c = 2;
  basic_string<>(uVar1);
  local_5c = 0;
  local_7c = CONCAT31(local_7c._1_3_,3);
  FUN_0081f50c(local_78,puVar2);
  FUN_0040159c();
  FUN_00401829(1,0);
  if ((local_c & 2) != 0) {
    local_c = local_c & 0xfffffffd;
    FUN_0040159c();
  }
  local_7c = 0xffffffff;
  if ((local_c & 1) != 0) {
    FUN_0040159c();
  }
  uVar1 = FUN_006154fe();
  local_7c = 4;
  basic_string<>(uVar1);
  local_38 = 0;
  local_7c = CONCAT31(local_7c._1_3_,5);
  FUN_0081f4a1(local_54,-(uint)(local_5 != '\0') & param_1);
  FUN_0040159c();
  FUN_00401829(1,0);
  ExceptionList = local_84;
  return local_5;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

char __thiscall FUN_00615869(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  undefined *puVar2;
  undefined local_a8 [28];
  undefined4 local_8c;
  void *local_84;
  undefined4 local_7c;
  undefined4 local_78 [7];
  undefined4 local_5c;
  undefined local_54 [28];
  undefined4 local_38;
  undefined local_30 [24];
  undefined4 local_18;
  undefined4 local_14;
  uint local_c;
  undefined local_6;
  char local_5;
  
  local_78[0] = 0x5c;
  local_7c = 0x615879;
  local_c = 0;
  FUN_00819607(&local_6);
  if ((*(int *)(param_1_00 + 0x14) == 0) || ((int)param_1 < 1)) {
    local_5 = '\0';
    local_18 = 7;
    FUN_0040180b(0);
    local_14 = 0;
    local_7c = 1;
    puVar2 = local_30;
    local_c = 2;
  }
  else {
    local_5 = '\x01';
    basic_string<>(param_1_00);
    local_8c = 0;
    local_7c = 0;
    puVar2 = local_a8;
    local_c = 1;
  }
  uVar1 = FUN_0061554f();
  local_7c = 2;
  basic_string<>(uVar1);
  local_5c = 0;
  local_7c = CONCAT31(local_7c._1_3_,3);
  FUN_0081f50c(local_78,puVar2);
  FUN_0040159c();
  FUN_00401829(1,0);
  if ((local_c & 2) != 0) {
    local_c = local_c & 0xfffffffd;
    FUN_0040159c();
  }
  local_7c = 0xffffffff;
  if ((local_c & 1) != 0) {
    FUN_0040159c();
  }
  uVar1 = FUN_006155a0();
  local_7c = 4;
  basic_string<>(uVar1);
  local_38 = 0;
  local_7c = CONCAT31(local_7c._1_3_,5);
  FUN_0081f4a1(local_54,-(uint)(local_5 != '\0') & param_1);
  FUN_0040159c();
  FUN_00401829(1,0);
  ExceptionList = local_84;
  return local_5;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

char __thiscall FUN_0061599d(int param_1_00,uint param_1,undefined param_2,int param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined local_c4 [28];
  undefined4 local_a8;
  undefined local_a0 [28];
  undefined4 local_84;
  void *local_7c;
  undefined4 local_74;
  undefined4 local_70 [6];
  undefined4 local_58;
  undefined4 local_54;
  undefined local_30 [28];
  undefined4 local_14;
  uint local_c;
  undefined local_6;
  char local_5;
  
  puVar2 = local_70;
  local_70[0] = 100;
  local_74 = 0x6159ad;
  local_c = 0;
  FUN_00819607(&local_6);
  if (((*(int *)(param_1_00 + 0x14) == 0) || ((int)param_1 < 1)) ||
     ((param_3 != 4 && (param_3 != 5)))) {
    local_5 = '\0';
    local_58 = 7;
    FUN_0040180b(0);
    local_54 = 0;
    local_74 = 1;
    local_c = 2;
  }
  else {
    local_5 = '\x01';
    basic_string<>(param_1_00);
    local_14 = 0;
    local_74 = 0;
    puVar2 = (undefined4 *)local_30;
    local_c = 1;
  }
  uVar1 = FUN_006155f1();
  local_74 = 2;
  basic_string<>(uVar1);
  local_84 = 0;
  local_74 = CONCAT31(local_74._1_3_,3);
  FUN_0081f50c(local_a0,puVar2);
  FUN_0040159c();
  FUN_00401829(1,0);
  if ((local_c & 2) != 0) {
    local_c = local_c & 0xfffffffd;
    FUN_0040159c();
  }
  local_74 = 0xffffffff;
  if ((local_c & 1) != 0) {
    FUN_0040159c();
  }
  uVar1 = FUN_00615642();
  local_74 = 4;
  basic_string<>(uVar1);
  local_14 = 0;
  local_74 = CONCAT31(local_74._1_3_,5);
  FUN_0081f4a1(local_30,-(uint)(local_5 != '\0') & param_1);
  FUN_0040159c();
  local_74 = 0xffffffff;
  FUN_00401829(1,0);
  if (local_5 == '\0') {
    param_2 = 1;
  }
  uVar1 = FUN_00615693();
  local_74 = 6;
  basic_string<>(uVar1);
  local_14 = 0;
  local_74 = CONCAT31(local_74._1_3_,7);
  FUN_0081f597(local_30,param_2);
  FUN_0040159c();
  local_74 = 0xffffffff;
  FUN_00401829(1,0);
  if (local_5 == '\0') {
    param_3 = 5;
  }
  uVar1 = FUN_006156e4();
  local_74 = 8;
  basic_string<>(uVar1);
  local_a8 = 0;
  local_74 = CONCAT31(local_74._1_3_,9);
  FUN_0081f4a1(local_c4,param_3);
  FUN_0040159c();
  FUN_00401829(1,0);
  ExceptionList = local_7c;
  return local_5;
}



void __fastcall FUN_00615b83(undefined4 *param_1)

{
  *param_1 = W98E1E5E7::W255A3B0A::vftable;
  return;
}



undefined4 * __thiscall FUN_00615b8a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W98E1E5E7::W255A3B0A::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00615be5(undefined4 *param_1,undefined4 param_2)

{
  *param_1 = W98E1E5E7::W3C866769::vftable;
  basic_string<>(param_2);
  FUN_00614d45(param_1 + 8);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00615c23(undefined4 *param_1,undefined4 param_2)

{
  *param_1 = W98E1E5E7::W889F1A82::vftable;
  basic_string<>(param_2);
  FUN_00614d45(param_1 + 8);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00615c61(undefined4 *param_1_00,byte param_1)

{
  FUN_00449c01(param_1_00 + 8);
  FUN_00401829(1,0);
  *param_1_00 = W98E1E5E7::W255A3B0A::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00615d12(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007b3730();
    *puVar2 = WAB87A847::W95F486A6::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0061611e(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061600b(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x616017;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WAB87A847::W95F486A6::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WAB87A847::W95F486A6::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00616107(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061611e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::W95F486A6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00616164(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061617b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::WAAF3218A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006161c1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061623f(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0062159e(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0061668c(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00616579(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x616585;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WAB87A847::WFCF41D76::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WAB87A847::WFCF41D76::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00616675(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061668c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::WFCF41D76>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006166d2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006166e9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::W5D355DD7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061672f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006167ad(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_006232f1(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00616bfb(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00616ae8(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x616af4;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WAB87A847::W94207E14::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WAB87A847::W94207E14::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00616be4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00616bfb(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::W94207E14>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00616c41(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00616c58(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::W36515270>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00616c9e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00616d92)

undefined4 * FUN_00616d1c(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006171ac();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00617099(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6170a5;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WAB87A847::W10B1F060::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WAB87A847::W10B1F060::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00617195(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006171ac(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::W10B1F060>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006171f2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00617209(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::W21C7511B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061724f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006172cd(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007b3730();
    *puVar2 = WAB87A847::W74C48BAD::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_006176da(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006175c7(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6175d3;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WAB87A847::W74C48BAD::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WAB87A847::W74C48BAD::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006176c3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006176da(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::W74C48BAD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00617720(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00617737(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::W17088CA9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061777d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00617871)

undefined4 * FUN_006177fb(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_00617c8b();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00617b78(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x617b84;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WAB87A847::W379EF423::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WAB87A847::W379EF423::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00617c74(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00617c8b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::W379EF423>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00617cd1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00617ce8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::W5D35FDCD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00617d2e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00617ea5(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0062d74c(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00618257(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006180e7(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6180f3;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WAB87A847::W4E34F700::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WAB87A847::W4E34F700::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006181e3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006181fa(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::WE409838A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00618240(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00618257(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::W4E34F700>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061829d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061831b(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0062db70(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00618670(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061855d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x618569;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WAB87A847::WFF39B51D::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WAB87A847::WFF39B51D::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00618659(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00618670(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WAB87A847::WFF39B51D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006186b6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00618734(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007b3730();
    *puVar2 = WFA41FBA9::WEB92D36D::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00618b40(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00618a2d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x618a39;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WFA41FBA9::WEB92D36D::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WFA41FBA9::WEB92D36D::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00618b29(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00618b40(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::WEB92D36D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00618b86(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00618b9d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::W5C248C10>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00618be3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00618c61(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0062f314(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_006190f0(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00618e07(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x18) != 0) {
    FUN_0040127a();
  }
  FUN_004f68a9(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00618fdd(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x618fe9;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WFA41FBA9::W73A92330::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WFA41FBA9::W73A92330::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006190d9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006190f0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::W73A92330>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00619136(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061914d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::W60F4F338>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00619193(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00619211(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00630d2e(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0061965f(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061954c(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x619558;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WFA41FBA9::WBD8BBBFF::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WFA41FBA9::WBD8BBBFF::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00619648(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061965f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::WBD8BBBFF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006196a5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006196bc(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::WBF7E0164>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00619702(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006197f6)

undefined4 * FUN_00619780(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_00619c10();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00619afd(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x619b09;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WFA41FBA9::W3C05604E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WFA41FBA9::W3C05604E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00619bf9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00619c10(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::W3C05604E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00619c56(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00619c6d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::W93CAC74B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00619cb3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00619da7)

undefined4 * FUN_00619d31(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0061a1c1();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061a0ae(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61a0ba;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WFA41FBA9::W9E5B65B6::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WFA41FBA9::W9E5B65B6::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061a1aa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061a1c1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::W9E5B65B6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061a207(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061a21e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::WA8A13C00>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061a264(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061a3db(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0063a47c(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0061a78d(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061a61d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61a629;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WFA41FBA9::W73F3AE36::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WFA41FBA9::W73F3AE36::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061a719(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061a730(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::W68B92D4A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061a776(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061a78d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::W73F3AE36>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061a7d3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061a851(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0063a729(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0061aba6(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061aa93(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61aa9f;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WFA41FBA9::WC2251ECE::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WFA41FBA9::WC2251ECE::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061ab8f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061aba6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::WC2251ECE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061abec(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061ac6a(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007b3730();
    *puVar2 = WFA41FBA9::W7E640252::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0061b077(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061af64(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61af70;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WFA41FBA9::W7E640252::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WFA41FBA9::W7E640252::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061b060(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061b077(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::W7E640252>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061b0bd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061b0d4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::W10824238>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061b11a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061b198(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0063bd9c(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0061b5e6(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061b4d3(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61b4df;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WFA41FBA9::WA9F2F1B0::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WFA41FBA9::WA9F2F1B0::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061b5cf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061b5e6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::WA9F2F1B0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061b62c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061b643(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WFA41FBA9::WD22B2AEB>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061b689(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061b707(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0063df05(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0061bb0e(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061b9fb(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61ba07;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD48B876E::W8B392F01::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD48B876E::W8B392F01::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061baf7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061bb0e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::W8B392F01>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061bb54(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061bb6b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::W51BCDBB8>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061bbb1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061bc2f(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0063f913(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0061c07c(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061bf69(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61bf75;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD48B876E::W014AF31F::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD48B876E::W014AF31F::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061c065(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061c07c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::W014AF31F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061c0c2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061c0d9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::WEB88D887>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061c11f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061c19d(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_006412c9(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0061c5eb(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061c4d8(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61c4e4;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD48B876E::WA77004D2::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD48B876E::WA77004D2::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061c5d4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061c5eb(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::WA77004D2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061c631(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061c648(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::W4D4434F1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061c68e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061c70c(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007b3730();
    *puVar2 = WD48B876E::W280DA16A::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0061cb19(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061ca06(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61ca12;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD48B876E::W280DA16A::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD48B876E::W280DA16A::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061cb02(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061cb19(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::W280DA16A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061cb5f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061cb76(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::W3D70B18E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061cbbc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0061ccb0)

undefined4 * FUN_0061cc3a(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0061d0ca();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061cfb7(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61cfc3;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD48B876E::WE3A28D14::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD48B876E::WE3A28D14::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061d0b3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061d0ca(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::WE3A28D14>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061d110(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061d127(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::WD5C3B6C9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061d16d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061d2e4(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x24);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_006559e4(puVar2,param_2);
    *puVar2 = WD48B876E::W444FABE5::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0061d69c(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061d52c(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61d538;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD48B876E::W444FABE5::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD48B876E::W444FABE5::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061d628(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061d63f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::W6FB68F44>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061d685(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061d69c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::W444FABE5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061d6e2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061d760(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x24);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_006559e4(puVar2,param_2);
    *puVar2 = WD48B876E::WC2697D0B::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0061dabb(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061d9a8(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61d9b4;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD48B876E::WC2697D0B::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD48B876E::WC2697D0B::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061daa4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061dabb(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::WC2697D0B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061db01(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061db7f(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007b3730();
    *puVar2 = WD48B876E::W9DDF65B4::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0061df8c(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061de79(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61de85;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD48B876E::W9DDF65B4::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD48B876E::W9DDF65B4::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061df75(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061df8c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::W9DDF65B4>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061dfd2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061dfe9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::WCEDDC64E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061e02f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061e0ad(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0064a0f1(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0061e53d(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061e42a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61e436;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD48B876E::W6C04A1FC::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD48B876E::W6C04A1FC::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061e526(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061e53d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::W6C04A1FC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061e583(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061e59a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD48B876E::W311E55C3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061e5e0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0061e65e(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0064d536(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0061ea66(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0061e953(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x61e95f;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WF650A3B1::W4BC32BD0::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WF650A3B1::W4BC32BD0::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0061ea4f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061ea66(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF650A3B1::W4BC32BD0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061eaac(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0061eac3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF650A3B1::W1D447F60>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0061eb09(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0061ebd8(int param_1)

{
  FUN_00507e58();
  if (*(int *)(param_1 + 0xf8) != 0) {
    FUN_0040127a();
  }
  FUN_004f8d32(param_1);
  return;
}



void FUN_0061ec1e(void)

{
  undefined4 *puVar1;
  undefined4 local_7f4;
  undefined4 local_7f0;
  uint uStack_7ec;
  undefined auStack_7dc [4];
  undefined4 *local_7d8;
  undefined local_6a4 [1672];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b572;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7dc;
  uStack_7ec = DAT_0323f878 ^ (uint)&stack0xfffff818;
  ExceptionList = &local_14;
  local_7d8 = &local_7f4;
  local_7f4 = 0xa0c;
  local_7f0 = 8;
  puVar1 = (undefined4 *)FUN_00465be3(local_6a4);
  local_c = 0;
  local_7f4 = *puVar1;
  local_7d8 = &local_7f4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_006201cf(undefined4 param_1)

{
  FUN_005fc2f1(param_1);
  FUN_0062027c();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_006201fa(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x620215;
  FUN_0042f0e5();
  local_8 = 0xffffffff;
  puVar1[-1] = param_1;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x62021f;
  FUN_004fc534();
  *(undefined4 *)((int)puVar2 + -4) = 0x620224;
  return;
}



undefined * __fastcall FUN_00620227(undefined *param_1)

{
  char *in_EAX;
  
  *param_1 = 0;
  if (*in_EAX != '\0') {
    FUN_00504b3d(in_EAX + 4);
  }
  return param_1;
}



char * __fastcall FUN_0062023f(char *param_1)

{
  char *in_EAX;
  
  if (*param_1 == '\0') {
    if (*in_EAX != '\0') {
      FUN_00504b3d(in_EAX + 4);
    }
  }
  else if (*in_EAX == '\0') {
    FUN_004017b2(1,0);
    *param_1 = '\0';
  }
  else {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (param_1 + 4),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (in_EAX + 4),0,0xffffffff);
  }
  return param_1;
}



undefined4 __fastcall FUN_0062027c(undefined4 param_1)

{
  undefined4 uStack_8;
  
  uStack_8 = param_1;
  FUN_00620295((int)&uStack_8 + 3,(int)&uStack_8 + 3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_00620295(undefined4 param_1_00,undefined4 param_1)

{
  undefined4 auStack_2c [5];
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x6202a1;
  local_18 = auStack_2c;
  auStack_2c[0] = param_1_00;
  local_14 = param_1_00;
  FUN_006202ef(param_1);
  local_8 = 0;
  auStack_2c[0] = 0x6202c0;
  FUN_006202ca();
  return param_1_00;
}



void __fastcall FUN_006202ca(int param_1)

{
  int *piVar1;
  int iVar2;
  
  iVar2 = FUN_0062030c();
  piVar1 = (int *)(param_1 + 0x18);
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x45) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return;
}



undefined4 __thiscall FUN_006202ef(undefined4 param_1_00,undefined4 param_1)

{
  FUN_0062033a(param_1);
  return param_1_00;
}



void FUN_0062030c(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_0062059d(1,0);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)((int)puVar1 + 0x45) = 0;
  *(undefined *)(puVar1 + 0x11) = 1;
  return;
}



undefined4 __thiscall FUN_0062033a(undefined4 param_1_00,undefined4 param_1)

{
  FUN_00620357(param_1);
  return param_1_00;
}



undefined4 __thiscall FUN_00620357(undefined4 param_1_00,undefined *param_1)

{
  FUN_004392b8(*param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00620378(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x620384;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::W8E794DEF::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::W8E794DEF::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0062042e(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x62043a;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WA3742B3D::RTTI_Type_Descriptor,
                   &W71DA37B9::W1B4E3C28::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WA3742B3D::RTTI_Type_Descriptor,
                           &W71DA37B9::W1B4E3C28::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0062053b)
// WARNING: Removing unreachable block (ram,0x00620521)

bool FUN_006204e4(undefined4 param_1)

{
  char *unaff_EDI;
  
  FUN_00504b3d(param_1);
  return *unaff_EDI != '\0';
}



void FUN_00620554(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_026bb08d;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0062059d(char *param_1)

{
  code *pcVar1;
  char *pcVar2;
  undefined **local_10 [3];
  
  if (param_1 == (char *)0x0) {
    pcVar2 = (char *)0x0;
  }
  else {
    pcVar2 = param_1;
    if ((uint)(0xffffffff / ZEXT48(param_1)) < 0x48) {
      param_1 = (char *)0x0;
      std::exception::exception((exception *)local_10,&param_1);
      local_10[0] = std::bad_alloc::vftable;
      __CxxThrowException_8(local_10,&DAT_031153a4);
      pcVar1 = (code *)swi(3);
      (*pcVar1)();
      return;
    }
  }
  operator_new((int)pcVar2 * 0x48);
  return;
}



void FUN_006205ea(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00620625(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W3CA43D38::WBE53D493>,class_boost::_bi::list1<class_boost::_bi::value<class_W3CA43D38::WBE53D493*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00620625(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W3CA43D38::WBE53D493>,class_boost::_bi::list1<class_boost::_bi::value<class_W3CA43D38::WBE53D493*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W3CA43D38::WBE53D493>,class_boost::_bi::list1<class_boost::_bi::value<class_W3CA43D38::WBE53D493*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0062066e(int param_1)

{
  if (*(char *)(param_1 + 0x21) == '\0') {
    FUN_0062066e(*(undefined4 *)(param_1 + 8));
    FUN_00b92d80();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void thunk_FUN_00b92d80(void)

{
  FUN_00b92d80();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x00620798)
// WARNING: Removing unreachable block (ram,0x006207a8)
// WARNING: Removing unreachable block (ram,0x006207b1)
// WARNING: Removing unreachable block (ram,0x006207b4)
// WARNING: Removing unreachable block (ram,0x006207a4)
// WARNING: Removing unreachable block (ram,0x006207c1)
// WARNING: Removing unreachable block (ram,0x006207d1)
// WARNING: Removing unreachable block (ram,0x006207dc)
// WARNING: Removing unreachable block (ram,0x006207d8)
// WARNING: Removing unreachable block (ram,0x006207cc)
// WARNING: Removing unreachable block (ram,0x006207df)

void FUN_006206ad(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x6206b9;
  if (*(char *)((int)param_4 + 0x21) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00620942();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x21) == '\0') {
    if (*(char *)(param_4[2] + 0x21) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x21) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x21) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x21) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x21) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x21) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 8) != '\x01') {
LAB_00620910:
    FUN_00b92d80();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_006208c4:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 8) != '\x01'))
  goto LAB_0062090c;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 8) == '\0') {
      *(undefined *)(ppiVar4 + 8) = 1;
      *(undefined *)(ppiVar3 + 8) = 0;
      FUN_007a1dd4(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x21) == '\0') {
      if ((*(char *)(*ppiVar4 + 8) != '\x01') || (*(char *)(ppiVar4[2] + 8) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 8) == '\x01') {
          *(undefined *)(*ppiVar4 + 8) = 1;
          *(undefined *)(ppiVar4 + 8) = 0;
          FUN_00437a73(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 8) = *(undefined *)(ppiVar3 + 8);
        *(undefined *)(ppiVar3 + 8) = 1;
        *(undefined *)(ppiVar4[2] + 8) = 1;
        FUN_007a1dd4(param_1);
        goto LAB_0062090c;
      }
LAB_006208bb:
      *(undefined *)(ppiVar4 + 8) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 8) == '\0') {
      *(undefined *)(ppiVar4 + 8) = 1;
      *(undefined *)(ppiVar3 + 8) = 0;
      FUN_00437a73(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x21) == '\0') {
      if ((*(char *)(ppiVar4[2] + 8) == '\x01') && (*(char *)(*ppiVar4 + 8) == '\x01'))
      goto LAB_006208bb;
      if (*(char *)(*ppiVar4 + 8) == '\x01') {
        *(undefined *)(ppiVar4[2] + 8) = 1;
        *(undefined *)(ppiVar4 + 8) = 0;
        FUN_007a1dd4(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 8) = *(undefined *)(ppiVar3 + 8);
      *(undefined *)(ppiVar3 + 8) = 1;
      *(undefined *)(*ppiVar4 + 8) = 1;
      FUN_00437a73(param_1);
LAB_0062090c:
      *(undefined *)(ppiVar5 + 8) = 1;
      goto LAB_00620910;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_006208c4;
}



void FUN_00620942(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x21) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x21) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x21) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x21) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



void FUN_0062098f(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_0062066e(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00620942();
    FUN_006206ad();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_00620a45(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_0062098f(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00620a79(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x620a91;
  FUN_00620a45();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00620a98;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_00620a79(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x620a91;
  FUN_00620a45();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00620a98;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

undefined * FUN_00620aa6(int *param_1)

{
  code **ppcVar1;
  code *pcVar2;
  undefined *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  puVar3 = &LAB_00c0b708;
  puVar4 = (undefined4 *)auStack_20;
  local_8 = 0;
  if ((undefined4 *)param_1[1] != (undefined4 *)0x0) {
    uStack_24 = 1;
    puVar4 = &uStack_28;
    uStack_28 = 0x620ac6;
    puVar3 = (undefined *)(***(code ***)(undefined4 *)param_1[1])();
  }
  local_8 = 0xffffffff;
  if ((undefined4 *)*param_1 != (undefined4 *)0x0) {
    ppcVar1 = *(code ***)(undefined4 *)*param_1;
    *(undefined4 *)((int)puVar4 + -4) = 1;
    pcVar2 = *ppcVar1;
    puVar5 = (undefined4 *)((int)puVar4 + -8);
    puVar4 = (undefined4 *)((int)puVar4 + -8);
    *puVar5 = 0x620ad6;
    puVar3 = (undefined *)(*pcVar2)();
  }
  *(undefined4 *)((int)puVar4 + -4) = 0x620adb;
  return puVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00620ade(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x620aea;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026bb0e0,0xd);
  local_8 = 0;
  local_14[0] = 0xf8ba7aa1;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



void __fastcall FUN_00620b33(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_00620f38(iVar1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void FUN_00620b4a(int param_1)

{
  if (*(char *)(param_1 + 0x2d) == '\0') {
    FUN_00620b4a(*(undefined4 *)(param_1 + 8));
    FUN_004017b2(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x00620c73)
// WARNING: Removing unreachable block (ram,0x00620c83)
// WARNING: Removing unreachable block (ram,0x00620c8c)
// WARNING: Removing unreachable block (ram,0x00620c8f)
// WARNING: Removing unreachable block (ram,0x00620c7f)
// WARNING: Removing unreachable block (ram,0x00620c9c)
// WARNING: Removing unreachable block (ram,0x00620cac)
// WARNING: Removing unreachable block (ram,0x00620cb7)
// WARNING: Removing unreachable block (ram,0x00620cb3)
// WARNING: Removing unreachable block (ram,0x00620ca7)
// WARNING: Removing unreachable block (ram,0x00620cba)

void FUN_00620b88(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x620b94;
  if (*(char *)((int)param_4 + 0x2d) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00743d11();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
    if (*(char *)(param_4[2] + 0x2d) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x2d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x2d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0xb) != '\x01') {
LAB_00620deb:
    FUN_004017b2(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_00620d9f:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xb) != '\x01'))
  goto LAB_00620de7;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0xb) == '\0') {
      *(undefined *)(ppiVar4 + 0xb) = 1;
      *(undefined *)(ppiVar3 + 0xb) = 0;
      FUN_007fb425(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x2d) == '\0') {
      if ((*(char *)(*ppiVar4 + 0xb) != '\x01') || (*(char *)(ppiVar4[2] + 0xb) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0xb) == '\x01') {
          *(undefined *)(*ppiVar4 + 0xb) = 1;
          *(undefined *)(ppiVar4 + 0xb) = 0;
          FUN_004fc926(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0xb) = *(undefined *)(ppiVar3 + 0xb);
        *(undefined *)(ppiVar3 + 0xb) = 1;
        *(undefined *)(ppiVar4[2] + 0xb) = 1;
        FUN_007fb425(param_1);
        goto LAB_00620de7;
      }
LAB_00620d96:
      *(undefined *)(ppiVar4 + 0xb) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0xb) == '\0') {
      *(undefined *)(ppiVar4 + 0xb) = 1;
      *(undefined *)(ppiVar3 + 0xb) = 0;
      FUN_004fc926(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x2d) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0xb) == '\x01') && (*(char *)(*ppiVar4 + 0xb) == '\x01'))
      goto LAB_00620d96;
      if (*(char *)(*ppiVar4 + 0xb) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0xb) = 1;
        *(undefined *)(ppiVar4 + 0xb) = 0;
        FUN_007fb425(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0xb) = *(undefined *)(ppiVar3 + 0xb);
      *(undefined *)(ppiVar3 + 0xb) = 1;
      *(undefined *)(*ppiVar4 + 0xb) = 1;
      FUN_004fc926(param_1);
LAB_00620de7:
      *(undefined *)(ppiVar5 + 0xb) = 1;
      goto LAB_00620deb;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_00620d9f;
}



void FUN_00620e21(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_00620b4a(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00743d11();
    FUN_00620b88();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_00620ed7(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_00620e21(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00620f0b(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x620f23;
  FUN_00620ed7();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00620f2a;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_00620f0b(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x620f23;
  FUN_00620ed7();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00620f2a;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00620f38(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  iStack_24 = param_1 + 0x20;
  puVar1 = &uStack_28;
  uStack_28 = 0x620f54;
  FUN_00620f0b();
  local_8 = 0xffffffff;
  puVar1[-1] = param_1;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x620f5e;
  FUN_004fc534();
  *(undefined4 *)((int)puVar2 + -4) = 0x620f63;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00620f66(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8E975A95::WE661A3FE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00620fac(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_00620f38(*(undefined4 *)(unaff_EBP + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00620fcc(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x40);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00bb3653(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00620f66(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0062103d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8E975A95::WA6D68A00>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00621083(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0062109a(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00b8207d(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0062103d(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0062110b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB0BF732D::WE2104F4E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00621151(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_00621168(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WB0BF732D::W3D5B0EA7::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall FUN_00621185(int param_1_00,undefined4 param_1,int param_2)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c2a12c;
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    puVar1 = (undefined *)FUN_007d8c32(param_1_00 + 8);
  }
  if (param_2 != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall FUN_006211bf(int param_1_00,undefined4 param_1,int param_2)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c12e66;
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    puVar1 = (undefined *)FUN_007d842c(param_1_00 + 8);
  }
  if (param_2 != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  return puVar1;
}



void __fastcall FUN_006211f9(int param_1)

{
  if (*(char *)(param_1 + 0x10) != '\0') {
    FUN_007b4708();
  }
  return;
}



void __thiscall FUN_00621210(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_0068649d(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_00621226(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_007d94e8(param_1_00 + 8,param_1);
  }
  return;
}



void __thiscall FUN_0062123c(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00686570(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_00621252(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00686643(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_00621268(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00686716(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_0062127e(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00686a52(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_00621294(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00686b25(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_006212aa(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00686bf8(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_006212c0(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00686ccb(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_006212d6(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00686d9e(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_006212ec(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00686e71(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_00621302(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00686f44(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_00621318(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00687017(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_0062132e(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_006870ea(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_00621344(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_006871bd(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_0062135a(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00687290(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_00621370(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00687363(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_00621386(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00687436(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_0062139c(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00687509(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_006213b2(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00687782(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_006213c8(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_006876af(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_006213de(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_006875dc(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_006213f4(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00687855(param_1_00 + 0xc,param_1);
  }
  return;
}



void __thiscall FUN_0062140a(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00687928(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00621421(undefined4 param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x14);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WB0BF732D::WE2104F4E::vftable;
    puVar2[1] = param_1_00;
    puVar2[2] = param_1_00;
    puVar2[3] = param_1_00;
    *(undefined *)(puVar2 + 4) = 1;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0062110b(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006214e8(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6214f4;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W1FC36FDC::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W1FC36FDC::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0062159e(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_54;
  undefined *puStack_50;
  undefined local_3c [24];
  undefined local_24 [16];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x6215aa;
  puStack_50 = (undefined *)0x6215b2;
  FUN_007b3730();
  *param_1 = WAB87A847::WFCF41D76::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  puStack_50 = local_24;
  local_8._0_1_ = 3;
  local_8._1_3_ = 0;
  uStack_54 = 0x6215e2;
  FUN_007b4336();
  local_14 = &uStack_54;
  local_8 = CONCAT31(local_8._1_3_,4);
  uStack_54 = 0xa0c;
  puStack_50 = (undefined *)0xcf;
  puVar1 = (undefined4 *)FUN_00465be3(local_3c);
  uStack_54 = *puVar1;
  local_14 = &uStack_54;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00621953(void)

{
  undefined4 *puVar1;
  undefined4 local_994;
  undefined4 local_990;
  uint uStack_98c;
  undefined auStack_97c [20];
  undefined4 *local_968;
  undefined local_7c4 [1960];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b318;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_97c;
  uStack_98c = DAT_0323f878 ^ (uint)&stack0xfffff678;
  ExceptionList = &local_14;
  local_968 = &local_994;
  local_994 = 0xa0c;
  local_990 = 200;
  puVar1 = (undefined4 *)FUN_00465be3(local_7c4);
  local_c = 0;
  local_994 = *puVar1;
  local_968 = &local_994;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00622f09(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x622f15;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026bb2b4,7);
  local_8 = 0;
  local_18 = 0x7c5af053;
  local_14 = 0xab4cdb8c;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00622f5a(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x622f66;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026bb2a0,9);
  local_8 = 0;
  local_18 = 0xcef00ed6;
  local_14 = 0xaf8fc34;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00622fab(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x622fb7;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026bb294,8);
  local_8 = 0;
  local_14[0] = 0x3e14cc05;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00623000(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x62300c;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026bb288,10);
  local_8 = 0;
  local_14[0] = 0x14c612e3;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00623055(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76AFA8BF::WA36B9095>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0062309b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006230b2(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x1b4);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_007ee1f2(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00623055(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00623126(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W6AB18A23>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0062316c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00623183(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_00623126(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_006231d0(undefined4 param_1)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x8c);
  if (pvVar1 != (void *)0x0) {
    FUN_00b66687(pvVar1);
  }
  FUN_00623183(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00623217(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3CA43D38::W24C1131C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0062325d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00623274(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x1a8);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_007c20cf(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00623217(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006232f1(undefined4 *param_1)

{
  undefined auStack_80 [8];
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined *puStack_70;
  undefined4 *puStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined *puStack_5c;
  undefined local_48 [24];
  undefined local_30 [8];
  undefined4 *local_28;
  undefined4 *local_24;
  undefined **local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x6232fd;
  puStack_5c = (undefined *)0x623307;
  FUN_007b3730();
  *param_1 = WAB87A847::W94207E14::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  puStack_5c = local_30;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  uStack_60 = 0x62332f;
  FUN_007b4336();
  local_18 = &uStack_60;
  local_14 = &uStack_60;
  local_1c = &uStack_68;
  uStack_68 = 0;
  uStack_64 = 0;
  local_20 = &puStack_70;
  puStack_70 = (undefined *)0x0;
  puStack_6c = (undefined4 *)0x0;
  local_24 = &uStack_78;
  uStack_78 = 0;
  uStack_74 = 0;
  local_28 = (undefined4 *)auStack_80;
  local_8._0_1_ = 6;
  FUN_007e34ff(auStack_80);
  local_8._0_1_ = 3;
  FUN_007b385d(local_14);
  local_28 = &uStack_68;
  local_8 = CONCAT31(local_8._1_3_,7);
  uStack_68 = 0xa0c;
  uStack_64 = 0xdc;
  puStack_6c = (undefined4 *)local_48;
  puStack_70 = (undefined *)0x62339e;
  puStack_6c = (undefined4 *)FUN_00465be3();
  uStack_68 = *puStack_6c;
  local_28 = &uStack_68;
  puStack_6c = puStack_6c + 1;
                    // WARNING: Subroutine does not return
  puStack_70 = &UNK_006233b6;
  FUN_0043c023();
}



void FUN_006236d8(void)

{
  undefined4 *puVar1;
  undefined4 local_9a4;
  undefined4 local_9a0;
  uint uStack_99c;
  undefined auStack_98c [12];
  undefined4 *local_980;
  undefined4 *local_8fc;
  undefined local_7e8 [1996];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c54e1a;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_98c;
  uStack_99c = DAT_0323f878 ^ (uint)&stack0xfffff668;
  ExceptionList = &local_14;
  local_8fc = &local_9a4;
  local_9a4 = 0x5022;
  local_9a0 = 0x77;
  puVar1 = (undefined4 *)FUN_00465be3(local_7e8);
  local_980 = &local_9a4;
  local_c = 0;
  local_9a4 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00624ea6(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x624eb2;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W3CA43D38::WF45DE894::RTTI_Type_Descriptor,
                   &W76AFA8BF::WA36B9095::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W3CA43D38::WF45DE894::RTTI_Type_Descriptor,
                           &W76AFA8BF::WA36B9095::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_00624f5c(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00624f97(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::W36515270>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::W36515270*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00624f97(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::W36515270>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::W36515270*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::W36515270>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::W36515270*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_006255b8(void)

{
  undefined4 *puVar1;
  undefined4 local_7d4;
  undefined4 local_7d0;
  uint uStack_7cc;
  undefined auStack_7bc [20];
  undefined4 *local_7a8;
  undefined4 *local_74c;
  undefined local_604 [1512];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b075;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7bc;
  uStack_7cc = DAT_0323f878 ^ (uint)&stack0xfffff838;
  ExceptionList = &local_14;
  local_74c = &local_7d4;
  local_7d4 = 0xa0c;
  local_7d0 = 9;
  puVar1 = (undefined4 *)FUN_00465be3(local_604);
  local_c = 0;
  local_7d4 = *puVar1;
  local_7a8 = &local_7d4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_00626a3a(int param_1_00,undefined4 param_1)

{
  FUN_00626b97(param_1);
  FUN_00626c44(param_1_00 + 0x20);
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00626a6b(void)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_78 [28];
  undefined local_5c [28];
  undefined2 local_40;
  undefined2 local_3e;
  uint local_3c;
  undefined local_35;
  char local_34 [24];
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x84;
  local_3c = 0;
  local_8 = 0;
  FUN_00b81ebf(local_34,4);
  local_8._0_1_ = 1;
  uVar3 = local_3c;
  if (((-(uint)(local_34[0] != '\0') & 0x6a1cd8) != 0) && (local_1c == 8)) {
    uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      (local_78,&DAT_00ddf3e8,3);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_40 = 0x5d9a;
    local_3c = 3;
    local_3e = 0xca31;
    uVar1 = FUN_00b94330(&local_40,uVar1);
    local_8 = 3;
    local_3c = 7;
    FUN_005d0682(local_5c,6,2);
    uVar3 = 0xf;
    local_8._0_1_ = 4;
    local_8._1_3_ = 0;
    local_3c = 0xf;
    iVar2 = FUN_00429980(uVar1);
    if (iVar2 == 0) {
      local_35 = 1;
      goto LAB_00626b25;
    }
  }
  local_35 = 0;
LAB_00626b25:
  if ((uVar3 & 8) != 0) {
    uVar3 = uVar3 & 0xfffffff7;
    FUN_004017b2(1,0);
  }
  if ((uVar3 & 4) != 0) {
    uVar3 = uVar3 & 0xfffffffb;
    FUN_004017b2(1,0);
  }
  if ((uVar3 & 2) != 0) {
    uVar3 = uVar3 & 0xfffffffd;
  }
  if ((uVar3 & 1) != 0) {
    FUN_004017b2(1,0);
  }
  if (local_34[0] != '\0') {
    FUN_004017b2(1,0);
    local_34[0] = '\0';
  }
  local_8 = 0xffffffff;
  FUN_006201fa(&stack0x00000004);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_00626b97(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  int **ppiVar3;
  undefined4 uVar4;
  int iVar5;
  int *piVar6;
  
  ppiVar3 = (int **)FUN_00418daa(1,0);
  if (ppiVar3 == (int **)0x0) {
    ppiVar3 = (int **)0x0;
  }
  else {
    *ppiVar3 = param_1;
  }
  *param_1 = (int)ppiVar3;
  FUN_005fd249();
  iVar1 = param_1[6];
  uVar4 = FUN_00626d28(*(undefined4 *)(*(int *)(param_1_00 + 0x18) + 4),iVar1);
  *(undefined4 *)(iVar1 + 4) = uVar4;
  param_1[7] = *(int *)(param_1_00 + 0x1c);
  iVar1 = param_1[6];
  piVar2 = *(int **)(iVar1 + 4);
  if (*(char *)((int)*(int **)(iVar1 + 4) + 0x2d) == '\0') {
    do {
      piVar6 = piVar2;
      piVar2 = (int *)*piVar6;
    } while (*(char *)((int)piVar2 + 0x2d) == '\0');
    *(int **)param_1[6] = piVar6;
    iVar1 = *(int *)(param_1[6] + 4);
    do {
      iVar5 = iVar1;
      iVar1 = *(int *)(iVar5 + 8);
    } while (*(char *)(iVar1 + 0x2d) == '\0');
    *(int *)(param_1[6] + 8) = iVar5;
  }
  else {
    *(int *)iVar1 = iVar1;
    *(int *)(param_1[6] + 8) = param_1[6];
  }
  return param_1;
}



void Catch_All_00626c32(void)

{
  code *pcVar1;
  
  FUN_004fc55c();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_00626c44(undefined4 param_1_00,undefined4 param_1)

{
  undefined4 auStack_30 [5];
  undefined4 *local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x626c50;
  local_1c = auStack_30;
  auStack_30[0] = param_1_00;
  local_18 = param_1_00;
  FUN_006202ef((int)&param_1 + 3);
  local_8 = 0;
  auStack_30[0] = 0x626c70;
  FUN_006202ca();
  local_8 = CONCAT31(local_8._1_3_,1);
  auStack_30[0] = param_1;
  FUN_00626cc8();
  return param_1_00;
}



void Catch_All_00626c88(void)

{
  code *pcVar1;
  
  FUN_0042f26f();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00626c9a(void)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_00626cb1;
    }
  }
  iVar2 = *piVar1;
LAB_00626cb1:
  if (*(int **)(iVar2 + 0x10) <= unaff_ESI[1]) {
    FUN_00a3fb10();
  }
  unaff_ESI[1] = unaff_ESI[1] + 0x56;
  return;
}



void __thiscall FUN_00626cc8(int param_1_00,int param_1)

{
  int iVar1;
  int **ppiVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  
  iVar1 = *(int *)(param_1_00 + 0x18);
  uVar4 = FUN_00626da6(*(undefined4 *)(*(int *)(param_1 + 0x18) + 4),iVar1);
  *(undefined4 *)(iVar1 + 4) = uVar4;
  *(undefined4 *)(param_1_00 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);
  ppiVar2 = *(int ***)(param_1_00 + 0x18);
  piVar3 = ppiVar2[1];
  if (*(char *)((int)ppiVar2[1] + 0x45) == '\0') {
    do {
      piVar5 = piVar3;
      piVar3 = (int *)*piVar5;
    } while (*(char *)((int)piVar3 + 0x45) == '\0');
    *ppiVar2 = piVar5;
    iVar1 = *(int *)(*(int *)(param_1_00 + 0x18) + 4);
    do {
      iVar6 = iVar1;
      iVar1 = *(int *)(iVar6 + 8);
    } while (*(char *)(iVar1 + 0x45) == '\0');
    *(int *)(*(int *)(param_1_00 + 0x18) + 8) = iVar6;
  }
  else {
    *ppiVar2 = (int *)ppiVar2;
    *(int *)(*(int *)(param_1_00 + 0x18) + 8) = *(int *)(param_1_00 + 0x18);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00626d28(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *local_18;
  
  local_18 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)param_1 + 0x2d) == '\0') {
    puVar1 = (undefined4 *)FUN_00626e27(local_18,param_2,local_18,*(undefined *)(param_1 + 0xb));
    if (*(char *)((int)local_18 + 0x2d) != '\0') {
      local_18 = puVar1;
    }
    uVar2 = FUN_00626d28(*param_1,puVar1);
    *puVar1 = uVar2;
    uVar2 = FUN_00626d28(param_1[2],puVar1);
    puVar1[2] = uVar2;
  }
  return local_18;
}



void Catch_All_00626d91(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_004fc8e8(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00626da6(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *local_18;
  
  local_18 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)param_1 + 0x45) == '\0') {
    puVar1 = (undefined4 *)
             FUN_00626e9a(local_18,param_2,local_18,param_1 + 3,*(undefined *)(param_1 + 0x11));
    if (*(char *)((int)local_18 + 0x45) != '\0') {
      local_18 = puVar1;
    }
    uVar2 = FUN_00626da6(*param_1,puVar1);
    *puVar1 = uVar2;
    uVar2 = FUN_00626da6(param_1[2],puVar1);
    puVar1[2] = uVar2;
  }
  return local_18;
}



void Catch_All_00626e12(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_0043006b(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00626e27(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined param_4)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x30);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_1_00;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (puVar1 + 4),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (param_1_00 + 1));
    *(undefined *)(puVar1 + 0xb) = param_4;
    *(undefined *)((int)puVar1 + 0x2d) = 0;
  }
  return puVar1;
}



void Catch_All_00626e87(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_00626e9a(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                undefined4 param_5)

{
  int iVar1;
  
  iVar1 = FUN_0062059d(1,0);
  if (iVar1 != 0) {
    FUN_00626ef8(param_1,param_2,param_3,param_4,param_5);
  }
  return iVar1;
}



void Catch_All_00626ee5(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



undefined4 * __thiscall
FUN_00626ef8(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined param_5)

{
  *param_1_00 = param_1;
  param_1_00[1] = param_2;
  param_1_00[2] = param_3;
  FUN_00626f2b(param_4);
  *(undefined *)(param_1_00 + 0x11) = param_5;
  *(undefined *)((int)param_1_00 + 0x45) = 0;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00626f2b(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1_00,param_1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1_00 + 0x1c,param_1 + 0x1c);
  return param_1_00;
}



void FUN_00626f5f(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00626f9a(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::W21C7511B>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::W21C7511B*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00626f9a(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::W21C7511B>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::W21C7511B*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::W21C7511B>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::W21C7511B*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00627154(void)

{
  undefined4 *puVar1;
  undefined4 local_77c;
  undefined4 local_778;
  uint uStack_774;
  undefined auStack_764 [28];
  undefined4 *local_748;
  undefined4 *local_708;
  undefined local_5c4 [1448];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5adfe;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_764;
  uStack_774 = DAT_0323f878 ^ (uint)&stack0xfffff890;
  ExceptionList = &local_14;
  local_708 = &local_77c;
  local_77c = 0x5022;
  local_778 = 0xa3;
  puVar1 = (undefined4 *)FUN_00465be3(local_5c4);
  local_c = 0;
  local_77c = *puVar1;
  local_748 = &local_77c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00628159(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00628194(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::W17088CA9>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::W17088CA9*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00628194(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::W17088CA9>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::W17088CA9*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::W17088CA9>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::W17088CA9*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_004d9011(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  undefined4 *puStack_24;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puStack_24 = param_1 + 1;
  puVar1 = &uStack_28;
  uStack_28 = 0x4d902d;
  FUN_0044237a();
  *param_1 = W88619A38::WC0042CBE::vftable;
  puVar1[-1] = 0x4d9038;
  return;
}



void FUN_0062889f(void)

{
  undefined4 *puVar1;
  undefined4 local_864;
  undefined4 local_860;
  uint uStack_85c;
  undefined auStack_84c [8];
  undefined4 *local_844;
  undefined local_640 [1572];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5abea;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_84c;
  uStack_85c = DAT_0323f878 ^ (uint)&stack0xfffff7a8;
  ExceptionList = &local_14;
  local_844 = &local_864;
  local_864 = 0xa0c;
  local_860 = 0x104;
  puVar1 = (undefined4 *)FUN_00465be3(local_640);
  local_c = 0;
  local_864 = *puVar1;
  local_844 = &local_864;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



int * __thiscall FUN_00629d45(int *param_1_00,code *param_1)

{
  int iVar1;
  
  if (param_1_00 == (int *)0x0) {
    iVar1 = 0;
  }
  else {
    iVar1 = *(int *)(*param_1_00 + 4) + (int)param_1_00;
  }
  (*param_1)(iVar1);
  return param_1_00;
}



void FUN_00629d63(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_026bb471;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_00629dac(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00629de7(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::W5D35FDCD>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::W5D35FDCD*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00629de7(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::W5D35FDCD>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::W5D35FDCD*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::W5D35FDCD>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::W5D35FDCD*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 __thiscall FUN_0062a047(undefined4 param_1_00,byte param_1)

{
  FUN_0062a064(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0062a064(int param_1)

{
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_00417fe6();
  if (*(int *)(param_1 + 0x144) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x13c) != 0) {
    FUN_0040127a();
  }
  FUN_0061ebd8(param_1);
  return;
}



void FUN_0062a0d7(void)

{
  undefined4 *puVar1;
  undefined4 local_5e4;
  undefined4 local_5e0;
  uint uStack_5dc;
  undefined auStack_5cc [8];
  undefined4 *local_5c4;
  undefined local_5bc [1440];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5a994;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_5cc;
  uStack_5dc = DAT_0323f878 ^ (uint)&stack0xfffffa28;
  ExceptionList = &local_14;
  local_5c4 = &local_5e4;
  local_5e4 = 0xa0c;
  local_5e0 = 10;
  puVar1 = (undefined4 *)FUN_00465be3(local_5bc);
  local_c = 0;
  local_5e4 = *puVar1;
  local_5c4 = &local_5e4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_0062ab40(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c1406b;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = W76AFA8BF::WCE6D7FD7::vftable;
  return puVar1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall
FUN_0062d091(int param_1_00,undefined *param_2_00,undefined4 param_1,undefined4 param_2,
            undefined4 param_3,int param_4)

{
  char cVar1;
  undefined4 uStack_7c;
  undefined4 *puStack_78;
  undefined *puStack_74;
  int **ppiStack_70;
  int *local_38;
  undefined4 local_34;
  undefined4 local_30;
  int local_2c;
  undefined4 *local_28;
  undefined local_20 [4];
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  *param_2_00 = 0;
  local_38 = (int *)0x0;
  local_34 = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  ppiStack_70 = *(int ***)(param_1_00 + 4);
  puStack_74 = (undefined *)param_1;
  puStack_78 = (undefined4 *)(param_1_00 + 0xc4);
  uStack_7c = 0x62d0cb;
  cVar1 = FUN_007b6fb5();
  if (cVar1 != '\0') {
    ppiStack_70 = (int **)&local_30;
    puStack_74 = (undefined *)0x62d0e1;
    FUN_005f0832();
    ppiStack_70 = &local_38;
    local_8._0_1_ = 2;
    puStack_74 = (undefined *)0x62d0ee;
    FUN_005d11c9();
    local_8._0_1_ = 1;
    if (local_2c != 0) {
      ppiStack_70 = (int **)0x62d0fe;
      FUN_0040127a();
    }
    local_30 = 0;
    local_2c = 0;
    local_8._0_1_ = 3;
    ppiStack_70 = (int **)0x0;
    puStack_74 = local_20;
    puStack_78 = (undefined4 *)0x62d115;
    (**(code **)(*local_38 + 0x18))();
    puStack_78 = &local_30;
    local_8._0_1_ = 4;
    uStack_7c = 0x62d122;
    FUN_005d11c9();
    local_8 = CONCAT31(local_8._1_3_,3);
    if (local_1c != 0) {
      puStack_78 = (undefined4 *)0x62d132;
      FUN_0040127a();
    }
    local_28 = &uStack_7c;
    uStack_7c = param_3;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_4);
  }
  ppiStack_70 = (int **)(param_1_00 + 300);
  puStack_74 = (undefined *)0x62d19a;
  FUN_007b798e();
  local_8 = 0xffffffff;
  *param_2_00 = 1;
  if (param_4 != 0) {
    ppiStack_70 = (int **)0x62d1ad;
    FUN_0040127a();
  }
  ppiStack_70 = (int **)0x62d2e9;
  FUN_00a421fb();
  return;
}



void FUN_0062d53d(void)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_0062d554;
    }
  }
  iVar2 = *piVar1;
LAB_0062d554:
  if (*(int **)(iVar2 + 0x10) <= unaff_ESI[1]) {
    FUN_00a3fb10();
  }
  unaff_ESI[1] = unaff_ESI[1] + 1;
  return;
}



void FUN_0062d568(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  char *in_EAX;
  
  if (*in_EAX == '\0') {
    FUN_00504b3d(param_1);
  }
  else {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (in_EAX + 4),param_1,0,0xffffffff);
  }
  return;
}



void FUN_0062d58f(void)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_0062d5a6;
    }
  }
  iVar2 = *piVar1;
LAB_0062d5a6:
  if (*(int **)(iVar2 + 0x10) <= unaff_ESI[1]) {
    FUN_00a3fb10();
  }
  unaff_ESI[1] = unaff_ESI[1] + 2;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0062d5ba(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x62d5c6;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WABE12921::W5805541D::RTTI_Type_Descriptor,
                   &W3CEF23F4::W4A526074::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WABE12921::W5805541D::RTTI_Type_Descriptor,
                           &W3CEF23F4::W4A526074::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_0062d670(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0062d6ab(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::WE409838A>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::WE409838A*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0062d6ab(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::WE409838A>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::WE409838A*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WAB87A847::WE409838A>,class_boost::_bi::list1<class_boost::_bi::value<class_WAB87A847::WE409838A*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0062d6f4(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x62d700;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026bb510,8);
  local_8 = 0;
  local_18 = 0xdbb804a9;
  local_14 = 0x92fc411a;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



void FUN_0062d745(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W76AFA8BF::WCE6D7FD7::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0062d74c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_50;
  undefined *puStack_4c;
  undefined local_38 [24];
  undefined local_20 [12];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x62d758;
  puStack_4c = (undefined *)0x62d762;
  FUN_007b3730();
  *param_1 = WAB87A847::W4E34F700::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  puStack_4c = local_20;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  uStack_50 = 0x62d782;
  FUN_007b4336();
  local_14 = &uStack_50;
  local_8 = CONCAT31(local_8._1_3_,2);
  uStack_50 = 0xa0c;
  puStack_4c = (undefined *)0xcf;
  puVar1 = (undefined4 *)FUN_00465be3(local_38);
  uStack_50 = *puVar1;
  local_14 = &uStack_50;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 __thiscall FUN_0062d8a4(int param_1_00,undefined4 param_1)

{
  FUN_007b3609(*(undefined4 *)(param_1_00 + 0x1c));
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0062daac(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::WB723121E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0062daf2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0062db09(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WE711C61D::WB723121E::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0062daac(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0062db70(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_50;
  undefined *puStack_4c;
  undefined local_38 [24];
  undefined local_20 [12];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x62db7c;
  puStack_4c = (undefined *)0x62db86;
  FUN_007b3730();
  *param_1 = WAB87A847::WFF39B51D::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  puStack_4c = local_20;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  uStack_50 = 0x62dba6;
  FUN_007b4336();
  local_14 = &uStack_50;
  local_8 = CONCAT31(local_8._1_3_,2);
  uStack_50 = 0xa0c;
  puStack_4c = (undefined *)0xcf;
  puVar1 = (undefined4 *)FUN_00465be3(local_38);
  uStack_50 = *puVar1;
  local_14 = &uStack_50;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0062df21(void)

{
  undefined4 *puVar1;
  undefined4 local_794;
  undefined4 local_790;
  uint uStack_78c;
  undefined auStack_77c [8];
  undefined4 *local_774;
  undefined local_740 [1828];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5d8b8;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_77c;
  uStack_78c = DAT_0323f878 ^ (uint)&stack0xfffff878;
  ExceptionList = &local_14;
  local_774 = &local_794;
  local_794 = 0xa0c;
  local_790 = 8;
  puVar1 = (undefined4 *)FUN_00465be3(local_740);
  local_c = 0;
  local_794 = *puVar1;
  local_774 = &local_794;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0062f0f3(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x62f0ff;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::W93966A66::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::W93966A66::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0062f1f4(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x62f200;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W1C56796C::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W1C56796C::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0062f2b0(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *local_34;
  undefined4 *local_30;
  undefined local_1c [4];
  undefined **local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x62f2bc;
  local_14 = 0;
  local_18 = &local_34;
  local_34 = (undefined *)0xa0c;
  local_30 = (undefined4 *)0xc6;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_30 = puVar1 + 1;
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  local_34 = &UNK_0062f2f3;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0062f314(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_54;
  undefined *puStack_50;
  undefined local_3c [24];
  undefined local_24 [16];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x62f320;
  puStack_50 = (undefined *)0x62f328;
  FUN_007b3730();
  *param_1 = WFA41FBA9::W73A92330::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  puStack_50 = local_24;
  local_8._0_1_ = 3;
  local_8._1_3_ = 0;
  uStack_54 = 0x62f358;
  FUN_007b4336();
  local_14 = &uStack_54;
  local_8 = CONCAT31(local_8._1_3_,4);
  uStack_54 = 0xa0c;
  puStack_50 = (undefined *)0xcf;
  puVar1 = (undefined4 *)FUN_00465be3(local_3c);
  uStack_54 = *puVar1;
  local_14 = &uStack_54;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_0062f6c9(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x13c) != 0) {
    FUN_0040127a();
  }
  FUN_0061ebd8(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0062f70e(void)

{
  undefined4 *puVar1;
  undefined4 local_994;
  undefined4 local_990;
  uint uStack_98c;
  undefined auStack_97c [20];
  undefined4 *local_968;
  undefined local_7c4 [1960];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b318;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_97c;
  uStack_98c = DAT_0323f878 ^ (uint)&stack0xfffff678;
  ExceptionList = &local_14;
  local_968 = &local_994;
  local_994 = 0xa0c;
  local_990 = 200;
  puVar1 = (undefined4 *)FUN_00465be3(local_7c4);
  local_c = 0;
  local_994 = *puVar1;
  local_968 = &local_994;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00630041(void)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  uint unaff_ESI;
  bool in_ZF;
  char param_5;
  int **param_6;
  int param_7;
  undefined4 in_stack_00000030;
  int *in_stack_00000038;
  undefined4 *in_stack_00000050;
  undefined4 param_11;
  int *in_stack_00000068;
  undefined4 param_13;
  undefined4 param_14;
  undefined4 *param_15;
  int param_21;
  char param_22;
  int in_stack_00000208;
  char in_stack_0000024c;
  undefined auStack_20 [4];
  char cStack_1c;
  undefined *puStack_10;
  undefined *puStack_c;
  int *piStack_8;
  undefined4 *puStack_4;
  
  if (!in_ZF) {
    puStack_4 = (undefined4 *)0x2;
    piStack_8 = (int *)&stack0x000001d0;
    puStack_c = (undefined *)0x63005d;
    FUN_00b81ebf();
    puStack_4 = (undefined4 *)0x1;
    piStack_8 = (int *)0x3;
    puStack_c = (undefined *)0x630075;
    FUN_004222a0();
    if ((unaff_ESI & -(uint)(in_stack_0000024c != '\0')) != 0) {
      puStack_4 = (undefined4 *)&stack0x00000250;
      piStack_8 = (int *)&stack0x000000f4;
      puStack_c = (undefined *)0x6300a2;
      FUN_004f49f1();
    }
    if (((unaff_ESI & -(uint)(in_stack_0000024c != '\0')) != 0) &&
       ((unaff_ESI & -(uint)(param_22 != '\0')) != 0)) {
      piStack_8 = (int *)&stack0x000000f4;
      puStack_4 = (undefined4 *)0x20;
      puStack_c = (undefined *)0x6300d3;
      FUN_00425a10();
    }
    if ((unaff_ESI & -(uint)(param_22 != '\0')) != 0) {
      puStack_4 = (undefined4 *)&stack0x000001d4;
      piStack_8 = (int *)&stack0x000000f4;
      puStack_c = (undefined *)0x6300fa;
      FUN_004f49f1();
    }
    puStack_4 = (undefined4 *)&stack0x000001f4;
    piStack_8 = (int *)0x630110;
    FUN_004223d0();
    if (in_stack_00000208 != 0) {
      puStack_4 = (undefined4 *)&stack0x00000060;
      piStack_8 = (int *)&stack0x000001c8;
      puStack_c = (undefined *)0x630134;
      piVar3 = (int *)FUN_0062042e();
      iVar1 = *piVar3;
      if (param_21 != 0) {
        puStack_4 = (undefined4 *)0x63014c;
        FUN_0040127a();
      }
      if (iVar1 != 0) {
        puStack_4 = (undefined4 *)&stack0x000001f4;
        piStack_8 = (int *)0x630164;
        FUN_00685977();
      }
    }
    param_6 = (int **)auStack_20;
    FUN_00b81ebf();
    FUN_00685893();
    param_6 = (int **)auStack_20;
    FUN_00b81ebf();
    FUN_006858f2();
    param_6 = (int **)auStack_20;
    FUN_00b81ebf();
    FUN_006859f1();
    param_6 = &piStack_8;
    puStack_c = (undefined *)0x6301cc;
    FUN_00ba941f();
    puStack_10 = (undefined *)0x6301d4;
    puStack_c = &stack0x000002a4;
    FUN_00685a8f();
    puStack_4 = (undefined4 *)0x0;
    piStack_8 = (int *)0x1;
    puStack_c = (undefined *)0x6301e4;
    FUN_004017b2();
    puStack_4 = (undefined4 *)0x6301f8;
    FUN_00422210();
    if (param_22 != '\0') {
      puStack_4 = (undefined4 *)0x0;
      piStack_8 = (int *)0x1;
      puStack_c = (undefined *)0x630212;
      FUN_004017b2();
    }
  }
  iVar1 = param_7;
  param_13 = 0;
  param_14 = 0;
  if (param_5 != '\0') {
    puStack_4 = &stack0x00000070;
    piStack_8 = (int *)0x630239;
    param_5 = FUN_00650d9f();
    if (param_5 == '\0') {
      puStack_4 = (undefined4 *)0x43a49fbb;
      piStack_8 = (int *)0x630250;
      FUN_00b940e0();
    }
  }
  param_11 = 0;
  if (param_5 != '\0') {
    puStack_4 = (undefined4 *)(iVar1 + 0x120);
    piStack_8 = (int *)0x630274;
    FUN_007b47f9();
    param_6 = (int **)0x0;
    puStack_4 = &stack0x00000018;
    piStack_8 = (int *)0x630287;
    FUN_00b81a21();
    puStack_4 = (undefined4 *)0x0;
    piStack_8 = (int *)param_6;
    puStack_c = (undefined *)0x630299;
    (**(code **)*param_15)();
    FUN_00620554();
    cStack_1c = (**(code **)(*in_stack_00000038 + 0xa4))();
    if (cStack_1c == '\0') {
      FUN_00b940e0();
    }
    (**(code **)*in_stack_00000050)();
    if (param_5 != '\0') {
      puStack_4 = (undefined4 *)&stack0x000000ac;
      piStack_8 = in_stack_00000068;
      puStack_c = (undefined *)0x630309;
      cVar2 = FUN_00bb3498();
      if (cVar2 != '\0') {
        param_6 = &piStack_8;
        piStack_8 = in_stack_00000038;
        puStack_c = &stack0x0000003c;
                    // WARNING: Subroutine does not return
        puStack_10 = &UNK_0063033e;
        FUN_0043c023();
      }
      puStack_4 = (undefined4 *)0x62787c9;
      piStack_8 = (int *)0x630320;
      FUN_00b940e0();
    }
  }
  puStack_4 = (undefined4 *)&stack0x000000a4;
  piStack_8 = (int *)0x630366;
  puStack_4 = (undefined4 *)FUN_00502eba();
  in_stack_00000030 = *puStack_4;
  puStack_4 = puStack_4 + 1;
                    // WARNING: Subroutine does not return
  piStack_8 = (int *)&UNK_0063037a;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00630d2e(undefined4 *param_1)

{
  undefined auStack_80 [8];
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined *puStack_70;
  undefined4 *puStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined *puStack_5c;
  undefined local_48 [24];
  undefined local_30 [8];
  undefined4 *local_28;
  undefined4 *local_24;
  undefined **local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x630d3a;
  puStack_5c = (undefined *)0x630d44;
  FUN_007b3730();
  *param_1 = WFA41FBA9::WBD8BBBFF::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  puStack_5c = local_30;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  uStack_60 = 0x630d6c;
  FUN_007b4336();
  local_18 = &uStack_60;
  local_14 = &uStack_60;
  local_1c = &uStack_68;
  uStack_68 = 0;
  uStack_64 = 0;
  local_20 = &puStack_70;
  puStack_70 = (undefined *)0x0;
  puStack_6c = (undefined4 *)0x0;
  local_24 = &uStack_78;
  uStack_78 = 0;
  uStack_74 = 0;
  local_28 = (undefined4 *)auStack_80;
  local_8._0_1_ = 6;
  FUN_007e34ff(auStack_80);
  local_8._0_1_ = 3;
  FUN_007b385d(local_14);
  local_28 = &uStack_68;
  local_8 = CONCAT31(local_8._1_3_,7);
  uStack_68 = 0xa0c;
  uStack_64 = 0xdc;
  puStack_6c = (undefined4 *)local_48;
  puStack_70 = (undefined *)0x630ddb;
  puStack_6c = (undefined4 *)FUN_00465be3();
  uStack_68 = *puStack_6c;
  local_28 = &uStack_68;
  puStack_6c = puStack_6c + 1;
                    // WARNING: Subroutine does not return
  puStack_70 = &UNK_00630df3;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00631115(int param_1_00,byte param_1)

{
  FUN_00417fe6();
  if (*(int *)(param_1_00 + 0x144) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x13c) != 0) {
    FUN_0040127a();
  }
  FUN_0061ebd8(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0063117b(void)

{
  undefined4 *puVar1;
  undefined4 local_9a4;
  undefined4 local_9a0;
  uint uStack_99c;
  undefined auStack_98c [12];
  undefined4 *local_980;
  undefined4 *local_8fc;
  undefined local_7e8 [1996];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c54e1a;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_98c;
  uStack_99c = DAT_0323f878 ^ (uint)&stack0xfffff668;
  ExceptionList = &local_14;
  local_8fc = &local_9a4;
  local_9a4 = 0x5022;
  local_9a0 = 0x77;
  puVar1 = (undefined4 *)FUN_00465be3(local_7e8);
  local_980 = &local_9a4;
  local_c = 0;
  local_9a4 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00632949(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00632984(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::WBF7E0164>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::WBF7E0164*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00632984(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::WBF7E0164>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::WBF7E0164*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::WBF7E0164>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::WBF7E0164*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __thiscall FUN_006329cd(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x18))(param_1_00);
  return;
}



void FUN_00633018(void)

{
  undefined4 *puVar1;
  undefined4 local_7d4;
  undefined4 local_7d0;
  uint uStack_7cc;
  undefined auStack_7bc [28];
  undefined4 *local_7a0;
  undefined4 *local_74c;
  undefined local_604 [1512];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5a84f;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7bc;
  uStack_7cc = DAT_0323f878 ^ (uint)&stack0xfffff838;
  ExceptionList = &local_14;
  local_74c = &local_7d4;
  local_7d4 = 0xa0c;
  local_7d0 = 9;
  puVar1 = (undefined4 *)FUN_00465be3(local_604);
  local_c = 0;
  local_7d4 = *puVar1;
  local_7a0 = &local_7d4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_006343c5(void)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_78 [28];
  undefined local_5c [28];
  undefined2 local_40;
  undefined2 local_3e;
  uint local_3c;
  undefined local_35;
  char local_34 [24];
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x84;
  local_3c = 0;
  local_8 = 0;
  FUN_00b81ebf(local_34,4);
  local_8._0_1_ = 1;
  uVar3 = local_3c;
  if (((-(uint)(local_34[0] != '\0') & 0x6a1cd8) != 0) && (local_1c == 8)) {
    uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      (local_78,&DAT_00ddf0c0,3);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_40 = 0x5d9a;
    local_3c = 3;
    local_3e = 0xca31;
    uVar1 = FUN_00b94330(&local_40,uVar1);
    local_8 = 3;
    local_3c = 7;
    FUN_005d0682(local_5c,6,2);
    uVar3 = 0xf;
    local_8._0_1_ = 4;
    local_8._1_3_ = 0;
    local_3c = 0xf;
    iVar2 = FUN_00429980(uVar1);
    if (iVar2 == 0) {
      local_35 = 1;
      goto LAB_0063447f;
    }
  }
  local_35 = 0;
LAB_0063447f:
  if ((uVar3 & 8) != 0) {
    uVar3 = uVar3 & 0xfffffff7;
    FUN_004017b2(1,0);
  }
  if ((uVar3 & 4) != 0) {
    uVar3 = uVar3 & 0xfffffffb;
    FUN_004017b2(1,0);
  }
  if ((uVar3 & 2) != 0) {
    uVar3 = uVar3 & 0xfffffffd;
  }
  if ((uVar3 & 1) != 0) {
    FUN_004017b2(1,0);
  }
  if (local_34[0] != '\0') {
    FUN_004017b2(1,0);
    local_34[0] = '\0';
  }
  local_8 = 0xffffffff;
  FUN_006201fa(&stack0x00000004);
  FUN_00a421fb();
  return;
}



void FUN_006344f1(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0063452c(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::W93CAC74B>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::W93CAC74B*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0063452c(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::W93CAC74B>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::W93CAC74B*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::W93CAC74B>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::W93CAC74B*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00634c03(void)

{
  undefined4 *puVar1;
  undefined4 local_864;
  undefined4 local_860;
  uint uStack_85c;
  undefined auStack_84c [8];
  undefined4 *local_844;
  undefined local_640 [1572];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5abea;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_84c;
  uStack_85c = DAT_0323f878 ^ (uint)&stack0xfffff7a8;
  ExceptionList = &local_14;
  local_844 = &local_864;
  local_864 = 0xa0c;
  local_860 = 0x104;
  puVar1 = (undefined4 *)FUN_00465be3(local_640);
  local_c = 0;
  local_864 = *puVar1;
  local_844 = &local_864;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0063609b(int param_1)

{
  char local_14;
  
  FUN_0043d406(param_1 + 0x148);
  if (*(int **)(param_1 + 0x140) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x140) + 0x1c))();
  }
  if (local_14 != '\0') {
    FUN_00401477();
  }
  return;
}



void FUN_006360e3(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_026bb771;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0063612c(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00636167(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::WA8A13C00>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::WA8A13C00*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00636167(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::WA8A13C00>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::WA8A13C00*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::WA8A13C00>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::WA8A13C00*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 __thiscall FUN_006365d2(undefined4 param_1_00,byte param_1)

{
  FUN_006365ef(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006365ef(int param_1)

{
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_00417fe6();
  if (*(int *)(param_1 + 0x144) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x13c) != 0) {
    FUN_0040127a();
  }
  FUN_0061ebd8(param_1);
  return;
}



void FUN_00636678(void)

{
  undefined4 *puVar1;
  undefined4 local_5ec;
  undefined4 local_5e8;
  uint uStack_5e4;
  undefined auStack_5d4 [20];
  undefined local_5c0 [8];
  undefined4 *local_5b8;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5a5f9;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_5d4;
  uStack_5e4 = DAT_0323f878 ^ (uint)&stack0xfffffa20;
  ExceptionList = &local_14;
  local_5b8 = &local_5ec;
  local_5ec = 0xa0c;
  local_5e8 = 10;
  puVar1 = (undefined4 *)FUN_00465be3(local_5c0);
  local_c = 0;
  local_5ec = *puVar1;
  local_5b8 = &local_5ec;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall
FUN_00639efb(int param_1_00,undefined *param_2_00,undefined4 param_1,undefined4 param_2,
            undefined4 param_3,int param_4)

{
  char cVar1;
  undefined4 uStack_7c;
  undefined4 *puStack_78;
  undefined *puStack_74;
  int **ppiStack_70;
  int *local_38;
  undefined4 local_34;
  undefined4 local_30;
  int local_2c;
  undefined4 *local_28;
  undefined local_20 [4];
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  *param_2_00 = 0;
  local_38 = (int *)0x0;
  local_34 = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  ppiStack_70 = *(int ***)(param_1_00 + 4);
  puStack_74 = (undefined *)param_1;
  puStack_78 = (undefined4 *)(param_1_00 + 0xc4);
  uStack_7c = 0x639f35;
  cVar1 = FUN_007b6fb5();
  if (cVar1 != '\0') {
    ppiStack_70 = (int **)&local_30;
    puStack_74 = (undefined *)0x639f4b;
    FUN_005f0832();
    ppiStack_70 = &local_38;
    local_8._0_1_ = 2;
    puStack_74 = (undefined *)0x639f58;
    FUN_005d11c9();
    local_8._0_1_ = 1;
    if (local_2c != 0) {
      ppiStack_70 = (int **)0x639f68;
      FUN_0040127a();
    }
    local_30 = 0;
    local_2c = 0;
    local_8._0_1_ = 3;
    ppiStack_70 = (int **)0x0;
    puStack_74 = local_20;
    puStack_78 = (undefined4 *)0x639f7f;
    (**(code **)(*local_38 + 0x18))();
    puStack_78 = &local_30;
    local_8._0_1_ = 4;
    uStack_7c = 0x639f8c;
    FUN_005d11c9();
    local_8 = CONCAT31(local_8._1_3_,3);
    if (local_1c != 0) {
      puStack_78 = (undefined4 *)0x639f9c;
      FUN_0040127a();
    }
    local_28 = &uStack_7c;
    uStack_7c = param_3;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_4);
  }
  ppiStack_70 = (int **)(param_1_00 + 300);
  puStack_74 = (undefined *)0x63a004;
  FUN_007b798e();
  local_8 = 0xffffffff;
  *param_2_00 = 1;
  if (param_4 != 0) {
    ppiStack_70 = (int **)0x63a017;
    FUN_0040127a();
  }
  ppiStack_70 = (int **)0x63a153;
  FUN_00a421fb();
  return;
}



void FUN_0063a3a7(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0063a3e2(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::W68B92D4A>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::W68B92D4A*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0063a3e2(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::W68B92D4A>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::W68B92D4A*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::W68B92D4A>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::W68B92D4A*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0063a42b(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x63a437;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026bb810,0x16);
  local_8 = 0;
  local_18 = 0x2f5f2309;
  local_14 = 0x32d77c01;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0063a47c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_50;
  undefined *puStack_4c;
  undefined local_38 [24];
  undefined local_20 [12];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x63a488;
  puStack_4c = (undefined *)0x63a492;
  FUN_007b3730();
  *param_1 = WFA41FBA9::W73F3AE36::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  puStack_4c = local_20;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  uStack_50 = 0x63a4b2;
  FUN_007b4336();
  local_14 = &uStack_50;
  local_8 = CONCAT31(local_8._1_3_,2);
  uStack_50 = 0xa0c;
  puStack_4c = (undefined *)0xcf;
  puVar1 = (undefined4 *)FUN_00465be3(local_38);
  uStack_50 = *puVar1;
  local_14 = &uStack_50;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0063a66d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x63a679;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W439B868B::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W439B868B::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0063a729(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_50;
  undefined *puStack_4c;
  undefined local_38 [24];
  undefined local_20 [12];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x63a735;
  puStack_4c = (undefined *)0x63a73f;
  FUN_007b3730();
  *param_1 = WFA41FBA9::WC2251ECE::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  puStack_4c = local_20;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  uStack_50 = 0x63a75f;
  FUN_007b4336();
  local_14 = &uStack_50;
  local_8 = CONCAT31(local_8._1_3_,2);
  uStack_50 = 0xa0c;
  puStack_4c = (undefined *)0xcf;
  puVar1 = (undefined4 *)FUN_00465be3(local_38);
  uStack_50 = *puVar1;
  local_14 = &uStack_50;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 __thiscall FUN_0063a887(undefined4 param_1_00,byte param_1)

{
  FUN_004d9011(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0063a9c4(void)

{
  undefined4 *puVar1;
  undefined4 local_7ac;
  undefined4 local_7a8;
  uint uStack_7a4;
  undefined auStack_794 [44];
  undefined local_768 [8];
  undefined4 *local_760;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5a3e4;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_794;
  uStack_7a4 = DAT_0323f878 ^ (uint)&stack0xfffff860;
  ExceptionList = &local_14;
  local_760 = &local_7ac;
  local_7ac = 0xa0c;
  local_7a8 = 0x1d9;
  puVar1 = (undefined4 *)FUN_00465be3(local_768);
  local_c = 0;
  local_7ac = *puVar1;
  local_760 = &local_7ac;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0063ba72(int param_1)

{
  if (*(int *)(param_1 + 0x18) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x10) != 0) {
    FUN_0040127a();
  }
  FUN_00b6639e();
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_0063bb5a(undefined4 param_1,undefined4 param_2)

{
  int unaff_EBP;
  undefined auStack_14 [16];
  undefined4 uStack_4;
  
  *(undefined **)(unaff_EBP + 0x10) = auStack_14;
  FUN_00b81ebf(auStack_14,6);
  FUN_00685893();
  *(undefined **)(unaff_EBP + 0x10) = auStack_14;
  FUN_00b81ebf(auStack_14,8);
  FUN_006858f2();
  *(undefined **)(unaff_EBP + 0x10) = auStack_14;
  FUN_00b81ebf(auStack_14,0x52);
  FUN_006859f1();
  *(undefined4 **)(unaff_EBP + 0x10) = &param_1;
  FUN_00ba941f();
  uStack_4 = 0x63bbb4;
  FUN_00685a8f();
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  if (*(undefined4 **)(unaff_EBP + -0x18) != (undefined4 *)0x0) {
    param_2 = 1;
    param_1 = 0x63bbc5;
    (**(code **)**(undefined4 **)(unaff_EBP + -0x18))();
  }
  return *(undefined *)(unaff_EBP + -0x11);
}



void FUN_0063bcae(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0063bce9(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::W10824238>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::W10824238*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0063bce9(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::W10824238>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::W10824238*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::W10824238>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::W10824238*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0063bd9c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_50;
  undefined *puStack_4c;
  undefined local_38 [24];
  undefined local_20 [12];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x63bda8;
  puStack_4c = (undefined *)0x63bdb2;
  FUN_007b3730();
  *param_1 = WFA41FBA9::WA9F2F1B0::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  puStack_4c = local_20;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  uStack_50 = 0x63bdd2;
  FUN_007b4336();
  local_14 = &uStack_50;
  local_8 = CONCAT31(local_8._1_3_,2);
  uStack_50 = 0xa0c;
  puStack_4c = (undefined *)0xcf;
  puVar1 = (undefined4 *)FUN_00465be3(local_38);
  uStack_50 = *puVar1;
  local_14 = &uStack_50;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0063c014(void)

{
  undefined4 *puVar1;
  undefined4 local_80c;
  undefined4 local_808;
  uint uStack_804;
  undefined auStack_7f4 [8];
  undefined4 *local_7ec;
  undefined local_7e4 [36];
  undefined4 *local_7c0;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5a1b9;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7f4;
  uStack_804 = DAT_0323f878 ^ (uint)&stack0xfffff800;
  ExceptionList = &local_14;
  local_7ec = &local_80c;
  local_80c = 0xa0c;
  local_808 = 10;
  puVar1 = (undefined4 *)FUN_00465be3(local_7e4);
  local_c = 0;
  local_80c = *puVar1;
  local_7c0 = &local_80c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0063dbd1(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0063dc0c(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::WD22B2AEB>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::WD22B2AEB*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0063dc0c(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::WD22B2AEB>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::WD22B2AEB*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WFA41FBA9::WD22B2AEB>,class_boost::_bi::list1<class_boost::_bi::value<class_WFA41FBA9::WD22B2AEB*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0063dc55(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = &boost::detail::sp_counted_impl_p<class_W71DA37B9::W93966A66>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0063dc9b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0063df05(undefined4 *param_1)

{
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined *puStack_34;
  undefined local_20 [8];
  undefined local_18 [4];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x63df11;
  puStack_34 = (undefined *)0x63df1b;
  FUN_007b3730();
  *param_1 = WD48B876E::W8B392F01::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  puStack_34 = local_20;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  uStack_38 = 0x63df3c;
  FUN_007b42c4();
  puStack_34 = local_18;
  local_8._0_1_ = 2;
  uStack_38 = 0x63df4a;
  FUN_006528c8();
  local_8._0_1_ = 3;
  uStack_38 = 0x63df53;
  FUN_004fe47e();
  local_8 = CONCAT31(local_8._1_3_,2);
  if (local_14 != (undefined4 *)0x0) {
    uStack_38 = 0x63df63;
    FUN_0040127a();
  }
  local_14 = &uStack_3c;
  uStack_3c = param_1[7];
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 8);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0063e072(int param_1)

{
  FUN_004f8dfe(param_1 + 0x134);
  FUN_00507e58();
  if (*(int *)(param_1 + 0xf8) != 0) {
    FUN_0040127a();
  }
  FUN_004f8d32(param_1);
  return;
}



void FUN_0063e0c8(void)

{
  undefined4 *puVar1;
  undefined4 local_7f4;
  undefined4 local_7f0;
  uint uStack_7ec;
  undefined local_7dc [28];
  undefined4 *local_7c0;
  undefined local_790 [1908];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5d6b6;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_7dc;
  uStack_7ec = DAT_0323f878 ^ (uint)&stack0xfffff818;
  ExceptionList = &local_14;
  local_7c0 = &local_7f4;
  local_7f4 = 0xa0c;
  local_7f0 = 8;
  local_7dc[0] = 1;
  puVar1 = (undefined4 *)FUN_00465be3(local_790);
  local_c = 0;
  local_7f4 = *puVar1;
  local_7c0 = &local_7f4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0063f756(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x63f762;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::W3E981EE0::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::W3E981EE0::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0063f857(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x63f863;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W5C075AE2::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W5C075AE2::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0063f913(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_54;
  undefined *puStack_50;
  undefined local_3c [24];
  undefined local_24 [16];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x63f91f;
  puStack_50 = (undefined *)0x63f927;
  FUN_007b3730();
  *param_1 = WD48B876E::W014AF31F::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  puStack_50 = local_24;
  local_8._0_1_ = 3;
  local_8._1_3_ = 0;
  uStack_54 = 0x63f957;
  FUN_007b4336();
  local_14 = &uStack_54;
  local_8 = CONCAT31(local_8._1_3_,4);
  uStack_54 = 0xa0c;
  puStack_50 = (undefined *)0xcf;
  puVar1 = (undefined4 *)FUN_00465be3(local_3c);
  uStack_54 = *puVar1;
  local_14 = &uStack_54;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_0063fcc8(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x164) != 0) {
    FUN_0040127a();
  }
  FUN_0063e072(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0063fd0d(void)

{
  undefined4 *puVar1;
  undefined4 local_994;
  undefined4 local_990;
  uint uStack_98c;
  undefined auStack_97c [20];
  undefined4 *local_968;
  undefined local_7c4 [1960];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b318;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_97c;
  uStack_98c = DAT_0323f878 ^ (uint)&stack0xfffff678;
  ExceptionList = &local_14;
  local_968 = &local_994;
  local_994 = 0xa0c;
  local_990 = 200;
  puVar1 = (undefined4 *)FUN_00465be3(local_7c4);
  local_c = 0;
  local_994 = *puVar1;
  local_968 = &local_994;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006412c9(undefined4 *param_1)

{
  undefined auStack_80 [8];
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined *puStack_70;
  undefined4 *puStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined *puStack_5c;
  undefined local_48 [24];
  undefined local_30 [8];
  undefined4 *local_28;
  undefined4 *local_24;
  undefined **local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x6412d5;
  puStack_5c = (undefined *)0x6412df;
  FUN_007b3730();
  *param_1 = WD48B876E::WA77004D2::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  puStack_5c = local_30;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  uStack_60 = 0x641307;
  FUN_007b4336();
  local_18 = &uStack_60;
  local_14 = &uStack_60;
  local_1c = &uStack_68;
  uStack_68 = 0;
  uStack_64 = 0;
  local_20 = &puStack_70;
  puStack_70 = (undefined *)0x0;
  puStack_6c = (undefined4 *)0x0;
  local_24 = &uStack_78;
  uStack_78 = 0;
  uStack_74 = 0;
  local_28 = (undefined4 *)auStack_80;
  local_8._0_1_ = 6;
  FUN_007e34ff(auStack_80);
  local_8._0_1_ = 3;
  FUN_007b385d(local_14);
  local_28 = &uStack_68;
  local_8 = CONCAT31(local_8._1_3_,7);
  uStack_68 = 0xa0c;
  uStack_64 = 0xdc;
  puStack_6c = (undefined4 *)local_48;
  puStack_70 = (undefined *)0x641376;
  puStack_6c = (undefined4 *)FUN_00465be3();
  uStack_68 = *puStack_6c;
  local_28 = &uStack_68;
  puStack_6c = puStack_6c + 1;
                    // WARNING: Subroutine does not return
  puStack_70 = &UNK_0064138e;
  FUN_0043c023();
}



void FUN_006416b0(void)

{
  undefined4 *puVar1;
  undefined4 local_9a4;
  undefined4 local_9a0;
  uint uStack_99c;
  undefined auStack_98c [12];
  undefined4 *local_980;
  undefined4 *local_8fc;
  undefined local_7e8 [1996];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c54e1a;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_98c;
  uStack_99c = DAT_0323f878 ^ (uint)&stack0xfffff668;
  ExceptionList = &local_14;
  local_8fc = &local_9a4;
  local_9a4 = 0x5022;
  local_9a0 = 0x77;
  puVar1 = (undefined4 *)FUN_00465be3(local_7e8);
  local_980 = &local_9a4;
  local_c = 0;
  local_9a4 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00642e7e(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00642eb9(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W4D4434F1>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W4D4434F1*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00642eb9(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W4D4434F1>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W4D4434F1*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W4D4434F1>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W4D4434F1*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00643028(void)

{
  undefined4 *puVar1;
  undefined4 local_79c;
  undefined4 local_798;
  uint uStack_794;
  undefined auStack_784 [52];
  undefined4 *local_750;
  undefined local_690 [1652];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c59f47;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_784;
  uStack_794 = DAT_0323f878 ^ (uint)&stack0xfffff870;
  ExceptionList = &local_14;
  local_750 = &local_79c;
  local_79c = 0xa0c;
  local_798 = 0x1d9;
  puVar1 = (undefined4 *)FUN_00465be3(local_690);
  local_c = 0;
  local_79c = *puVar1;
  local_750 = &local_79c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_006442ae(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006442e9(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W3D70B18E>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W3D70B18E*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006442e9(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W3D70B18E>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W3D70B18E*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W3D70B18E>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W3D70B18E*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_006448b2(undefined4 param_1)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  undefined4 extraout_EDX;
  
  FUN_005fe819(param_1);
  iVar1 = *(int *)(in_EAX + 0x24);
  cVar2 = FUN_007b2909();
  if (cVar2 != '\0') {
    FUN_004860b9(extraout_EDX);
  }
  cVar2 = FUN_007b2909();
  if (cVar2 != '\0') {
    FUN_004860b9(iVar1 + 0x4c);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00644a1a(int param_1_00,byte param_1)

{
  FUN_00417fe6();
  if (*(int *)(param_1_00 + 0x16c) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x164) != 0) {
    FUN_0040127a();
  }
  FUN_0063e072(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00644a80(void)

{
  undefined4 *puVar1;
  undefined4 local_7d4;
  undefined4 local_7d0;
  uint uStack_7cc;
  undefined auStack_7bc [28];
  undefined4 *local_7a0;
  undefined4 *local_74c;
  undefined local_604 [1512];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5a84f;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7bc;
  uStack_7cc = DAT_0323f878 ^ (uint)&stack0xfffff838;
  ExceptionList = &local_14;
  local_74c = &local_7d4;
  local_7d4 = 0xa0c;
  local_7d0 = 9;
  puVar1 = (undefined4 *)FUN_00465be3(local_604);
  local_c = 0;
  local_7d4 = *puVar1;
  local_7a0 = &local_7d4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00645e3e(int param_1)

{
  char local_14;
  
  FUN_0043d406(param_1 + 0x170);
  if (*(int **)(param_1 + 0x168) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x168) + 0x1c))();
  }
  if (local_14 != '\0') {
    FUN_00401477();
  }
  return;
}



void FUN_00645e86(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00645ec1(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::WD5C3B6C9>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::WD5C3B6C9*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00645ec1(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::WD5C3B6C9>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::WD5C3B6C9*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::WD5C3B6C9>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::WD5C3B6C9*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0064607b(void)

{
  undefined4 *puVar1;
  undefined4 local_694;
  undefined4 local_690;
  uint uStack_68c;
  undefined auStack_67c [16];
  undefined4 *local_66c;
  undefined local_658 [36];
  undefined4 *local_634;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c59cf1;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_67c;
  uStack_68c = DAT_0323f878 ^ (uint)&stack0xfffff978;
  ExceptionList = &local_14;
  local_634 = &local_694;
  local_694 = 0xa0c;
  local_690 = 10;
  puVar1 = (undefined4 *)FUN_00465be3(local_658);
  local_c = 0;
  local_694 = *puVar1;
  local_66c = &local_694;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00647f48(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00647f83(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W6FB68F44>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W6FB68F44*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00647f83(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W6FB68F44>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W6FB68F44*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W6FB68F44>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W6FB68F44*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 __thiscall FUN_00647fcc(undefined4 param_1_00,byte param_1)

{
  FUN_00647fe9(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00647fe9(int param_1)

{
  if (*(int *)(param_1 + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_004d9011(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006480b3(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6480bf;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W03766A6F::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W03766A6F::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00648169(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x648175;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W59F38848::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W59F38848::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_006487b3(void)

{
  undefined4 *puVar1;
  undefined4 local_7ec;
  undefined4 local_7e8;
  uint uStack_7e4;
  undefined auStack_7d4 [16];
  undefined4 *local_7c4;
  undefined local_5f0 [1492];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c59b07;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7d4;
  uStack_7e4 = DAT_0323f878 ^ (uint)&stack0xfffff820;
  ExceptionList = &local_14;
  local_7c4 = &local_7ec;
  local_7ec = 0xa0c;
  local_7e8 = 0x1d9;
  puVar1 = (undefined4 *)FUN_00465be3(local_5f0);
  local_c = 0;
  local_7ec = *puVar1;
  local_7c4 = &local_7ec;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00649eb8(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00649ef3(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::WCEDDC64E>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::WCEDDC64E*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00649ef3(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::WCEDDC64E>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::WCEDDC64E*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::WCEDDC64E>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::WCEDDC64E*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0064a0f1(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puStack_a4;
  undefined *puStack_a0;
  undefined local_3c [16];
  undefined local_2c [8];
  undefined4 local_24;
  undefined4 local_20;
  undefined4 **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x7c;
  local_8 = 0x64a0fd;
  puStack_a0 = (undefined *)0x64a105;
  FUN_007b3730();
  *param_1 = WD48B876E::W6C04A1FC::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  puStack_a0 = local_2c;
  local_8._0_1_ = 3;
  local_8._1_3_ = 0;
  puStack_a4 = (undefined4 *)0x64a131;
  FUN_007b4336();
  puStack_a0 = (undefined *)0x6;
  puStack_a4 = (undefined4 *)&DAT_00ddeb38;
  local_8._0_1_ = 4;
  puStack_a0 = (undefined *)basic_string<>();
  puStack_a4 = &local_24;
  local_8._0_1_ = 5;
  local_24 = 0xad2bee1f;
  local_20 = 0x90e3e617;
  FUN_00b94470();
  local_14 = &puStack_a4;
  local_8._0_1_ = 6;
  puStack_a4 = (undefined4 *)0xa0c;
  puStack_a0 = (undefined *)0x219;
  puVar1 = (undefined4 *)FUN_00465be3(local_3c);
  local_14 = &puStack_a4;
  local_8 = CONCAT31(local_8._1_3_,7);
  puStack_a4 = (undefined4 *)*puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void Catch_All_0064a5a4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0064a691(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W8D227ECF::W3728AAF2::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0064cfb7(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0064a6f8(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x64a704;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026bbca0,0x13);
  local_8 = 0;
  local_14[0] = 0xec5421f8;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0064a74d(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x64a759;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026bbcb4,0x11);
  local_8 = 0;
  local_14[0] = 0xdcce13eb;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0064a7a2(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x64a7ae;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026bbcc8,8);
  local_8 = 0;
  local_14[0] = 0xb270a403;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0064a7f7(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x64a803;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_026bbcd4,9);
  local_8 = 0;
  local_14[0] = 0xeb7cd93f;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_0064a992(int param_1_00,byte param_1)

{
  FUN_00417fe6();
  if (*(int *)(param_1_00 + 0x118) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x100) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0xf8) != 0) {
    FUN_0040127a();
  }
  FUN_004f8d32(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0064aa0b(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c26b3a;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0064aae0(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c26b3a;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0064abb5(void)

{
  undefined4 *puVar1;
  undefined4 local_a7c;
  undefined4 local_a78;
  uint uStack_a74;
  undefined auStack_a64 [16];
  undefined4 *local_a54;
  undefined local_a28 [2572];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4ffbe;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_a64;
  uStack_a74 = DAT_0323f878 ^ (uint)&stack0xfffff590;
  ExceptionList = &local_14;
  local_a54 = &local_a7c;
  local_a7c = 0x5022;
  local_a78 = 0x11b;
  puVar1 = (undefined4 *)FUN_00465be3(local_a28);
  local_a54 = &local_a7c;
  local_c = 0;
  local_a7c = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0064cbcb(int param_1)

{
  FUN_00507e58();
  FUN_00507e58();
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0064cc0d(void)

{
  undefined4 *puVar1;
  undefined4 local_70;
  undefined *puStack_6c;
  undefined4 local_68 [6];
  undefined4 uStack_50;
  undefined *puStack_4c;
  undefined local_38 [16];
  undefined local_28 [12];
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x64cc19;
  local_14 = 0;
  puStack_4c = local_28;
  uStack_50 = 0x64cc26;
  FUN_00507ed8();
  local_18 = local_68;
  local_68[0] = 0;
  puStack_6c = local_38;
  local_8 = 2;
  local_70 = 0x64cc44;
  puVar1 = (undefined4 *)FUN_0064a691();
  local_70 = *puVar1;
  local_1c = &local_70;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_0064ccf3(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined auStack_10c [32];
  undefined4 local_ec [8];
  undefined4 local_cc [4];
  undefined4 uStack_bc;
  int iStack_b8;
  undefined *puStack_b4;
  undefined *puStack_b0;
  undefined local_80 [24];
  undefined4 local_68;
  undefined local_64 [24];
  undefined4 local_4c;
  undefined *local_48;
  undefined4 *local_44;
  undefined4 *local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x64cd02;
  local_34 = param_1;
  local_3c = param_2;
  puStack_b0 = (undefined *)0x64cd1e;
  local_38 = param_1_00;
  puStack_b0 = (undefined *)FUN_0064d11c();
  local_8 = 0;
  puStack_b4 = (undefined *)0x64cd2f;
  FUN_007d77b6();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x64cd3d;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  local_4c = 7;
  puStack_b4 = (undefined *)0x64cd4c;
  FUN_0040180b();
  puStack_b0 = (undefined *)0x0;
  local_68 = 7;
  puStack_b4 = (undefined *)0x64cd58;
  FUN_0040180b();
  puStack_b0 = local_64;
  puStack_b4 = local_80;
  iStack_b8 = param_1_00 + 0x104;
  local_8._0_1_ = 4;
  uStack_bc = 0x64cd73;
  FUN_007b6458();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x64cd80;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x64cd8b;
  FUN_00401829();
  local_44 = local_cc;
  local_cc[0] = 0;
  local_40 = local_ec;
  local_ec[0] = 0;
  local_48 = auStack_10c;
  local_8._0_1_ = 6;
  FUN_00507832();
  local_8 = CONCAT31(local_8._1_3_,2);
  cVar1 = FUN_007c021d(local_34,local_3c);
  if (cVar1 == '\0') {
    puStack_b0 = (undefined *)0xf1beef21;
    puStack_b4 = (undefined *)0x64cddf;
    FUN_00b940e0();
    param_1_00 = local_38;
  }
  puStack_b0 = (undefined *)0x64cdeb;
  (**(code **)(**(int **)(param_1_00 + 4) + 0x2c))();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x64cdf7;
  FUN_00401829();
  puStack_b0 = (undefined *)0x64cdfe;
  FUN_00a421fb();
  return;
}



char FUN_0064ce01(void)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0x9017d80a;
  }
  else {
    FUN_0064cc0d(local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0x183a410b;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



int __thiscall FUN_0064cef0(int param_1_00,uint param_1)

{
  if ((uint)((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x1c) <= param_1) {
    FUN_00a3fb10();
  }
  return param_1 * 0x1c + *(int *)(param_1_00 + 0xc);
}



void FUN_0064cf18(int *param_1)

{
  undefined4 *puVar1;
  undefined local_24 [16];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  puVar1 = (undefined4 *)FUN_00413fc2(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*param_1 + 4))(&local_14);
  return;
}



void FUN_0064cf43(int *param_1)

{
  undefined4 *puVar1;
  undefined local_24 [16];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  puVar1 = (undefined4 *)FUN_0047b00c(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*param_1 + 4))(&local_14);
  return;
}



void FUN_0064cf6e(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_026bbce9;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0064cfb7(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8D227ECF::W3728AAF2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0064cffd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0064d014(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0064d08a(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W311E55C3>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W311E55C3*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0064d04f(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0064d0d3(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_WD48B876E::W311E55C3,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WD48B876E::W311E55C3*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0064d08a(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W311E55C3>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W311E55C3*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W311E55C3>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W311E55C3*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0064d0d3(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_WD48B876E::W311E55C3,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WD48B876E::W311E55C3*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_WD48B876E::W311E55C3,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WD48B876E::W311E55C3*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0064d11c(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x64d128;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_026bbd60,0xe);
  local_8 = 0;
  local_18 = 0xb87b9b6f;
  local_14 = 0xbdca9f5;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0064d16d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8D227ECF::W7E6C5B8A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0064d1b3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0064d1ca(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W8D227ECF::W7E6C5B8A::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0064d16d(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0064d472(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::WAA05A795>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0064d4b8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0064d4cf(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WE711C61D::WAA05A795::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0064d472(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0064d536(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_50;
  undefined *puStack_4c;
  undefined local_38 [24];
  undefined local_20 [12];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x64d542;
  puStack_4c = (undefined *)0x64d54a;
  FUN_007b3730();
  *param_1 = WF650A3B1::W4BC32BD0::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  puStack_4c = local_20;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  uStack_50 = 0x64d572;
  FUN_007b4336();
  local_14 = &uStack_50;
  local_8 = CONCAT31(local_8._1_3_,3);
  uStack_50 = 0x5022;
  puStack_4c = (undefined *)0xed;
  puVar1 = (undefined4 *)FUN_00465be3(local_38);
  uStack_50 = *puVar1;
  local_14 = &uStack_50;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 __thiscall FUN_0064d9ab(undefined4 param_1_00,byte param_1)

{
  FUN_0064d9c8(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0064d9c8(int param_1)

{
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_00417fe6();
  if (*(int *)(param_1 + 0x118) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x100) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0xf8) != 0) {
    FUN_0040127a();
  }
  FUN_004f8d32(param_1);
  return;
}



void FUN_0064da4e(void)

{
  undefined4 *puVar1;
  undefined4 local_ab4;
  undefined4 local_ab0;
  uint uStack_aac;
  undefined auStack_a9c [40];
  undefined4 *local_a74;
  undefined local_a60 [2628];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4fadc;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_a9c;
  uStack_aac = DAT_0323f878 ^ (uint)&stack0xfffff558;
  ExceptionList = &local_14;
  local_a74 = &local_ab4;
  local_ab4 = 0xa0c;
  local_ab0 = 0x1b7;
  puVar1 = (undefined4 *)FUN_00465be3(local_a60);
  local_c = 0;
  local_ab4 = *puVar1;
  local_a74 = &local_ab4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0064fcef(void)

{
  undefined4 *puVar1;
  undefined4 local_60;
  undefined *puStack_5c;
  undefined4 local_58 [6];
  undefined4 uStack_40;
  undefined *puStack_3c;
  undefined local_28 [8];
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x64fcfb;
  local_14 = 0;
  puStack_3c = local_20;
  uStack_40 = 0x64fd0b;
  FUN_00507ed8();
  local_18 = local_58;
  local_58[0] = 0;
  puStack_5c = local_28;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  local_60 = 0x64fd29;
  puVar1 = (undefined4 *)FUN_0064d1ca();
  local_18 = &local_60;
  local_8 = CONCAT31(local_8._1_3_,3);
  local_60 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_0064fd8c(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined auStack_10c [32];
  undefined4 local_ec [8];
  undefined4 local_cc [4];
  undefined4 uStack_bc;
  int iStack_b8;
  undefined *puStack_b4;
  undefined *puStack_b0;
  undefined local_80 [24];
  undefined4 local_68;
  undefined local_64 [24];
  undefined4 local_4c;
  undefined *local_48;
  undefined4 *local_44;
  undefined4 *local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x64fd9b;
  local_34 = param_1;
  local_3c = param_2;
  puStack_b0 = (undefined *)0x64fdb7;
  local_38 = param_1_00;
  puStack_b0 = (undefined *)FUN_0063a42b();
  local_8 = 0;
  puStack_b4 = (undefined *)0x64fdc8;
  FUN_007d77b6();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x64fdd6;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  local_4c = 7;
  puStack_b4 = (undefined *)0x64fde5;
  FUN_0040180b();
  puStack_b0 = (undefined *)0x0;
  local_68 = 7;
  puStack_b4 = (undefined *)0x64fdf1;
  FUN_0040180b();
  puStack_b0 = local_64;
  puStack_b4 = local_80;
  iStack_b8 = param_1_00 + 0x104;
  local_8._0_1_ = 4;
  uStack_bc = 0x64fe0c;
  FUN_007b6458();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x64fe19;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x64fe24;
  FUN_00401829();
  local_44 = local_cc;
  local_cc[0] = 0;
  local_40 = local_ec;
  local_ec[0] = 0;
  local_48 = auStack_10c;
  local_8._0_1_ = 6;
  FUN_00507832();
  local_8 = CONCAT31(local_8._1_3_,2);
  cVar1 = FUN_007c021d(local_34,local_3c);
  if (cVar1 == '\0') {
    puStack_b0 = (undefined *)0x620e361f;
    puStack_b4 = (undefined *)0x64fe78;
    FUN_00b940e0();
    param_1_00 = local_38;
  }
  puStack_b0 = (undefined *)0x64fe84;
  (**(code **)(**(int **)(param_1_00 + 4) + 0x2c))();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x64fe90;
  FUN_00401829();
  puStack_b0 = (undefined *)0x64fe97;
  FUN_00a421fb();
  return;
}



char FUN_0064fe9a(void)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0x22359424;
  }
  else {
    FUN_0064fcef(local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0xb08badbd;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



void FUN_0064ff41(int *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined local_24 [16];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  puVar1 = (undefined4 *)FUN_0047afc8(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*param_1 + 4))(&local_14);
  puVar1 = (undefined4 *)FUN_0047af84(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*param_1 + 4))(&local_14);
  puVar1 = (undefined4 *)FUN_0047af40(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*param_1 + 4))(&local_14);
  FUN_0064cf18(param_1,param_2);
  return;
}



void FUN_0064ffb7(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0064fff2(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WF650A3B1::W1D447F60>,class_boost::_bi::list1<class_boost::_bi::value<class_WF650A3B1::W1D447F60*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0064fff2(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WF650A3B1::W1D447F60>,class_boost::_bi::list1<class_boost::_bi::value<class_WF650A3B1::W1D447F60*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WF650A3B1::W1D447F60>,class_boost::_bi::list1<class_boost::_bi::value<class_WF650A3B1::W1D447F60*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00650063(void)

{
  char *in_EAX;
  undefined4 *puVar1;
  int unaff_EBP;
  
  *in_EAX = *in_EAX + (char)in_EAX;
  puVar1 = (undefined4 *)FUN_00465be3(unaff_EBP + -0x18);
  **(undefined4 **)(unaff_EBP + 8) = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



void FUN_00650065(void)

{
  undefined4 *puVar1;
  int unaff_EBP;
  
  puVar1 = (undefined4 *)FUN_00465be3(unaff_EBP + -0x18);
  **(undefined4 **)(unaff_EBP + 8) = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



void __fastcall FUN_0065006d(undefined4 param_1)

{
  int in_EAX;
  int unaff_EBX;
  undefined4 *unaff_ESI;
  undefined *puStack00000004;
  int iStack00000008;
  
  *(int *)(unaff_EBX + 0x8758b08) = *(int *)(unaff_EBX + 0x8758b08) + -1;
  iStack00000008 = in_EAX + 4;
  *unaff_ESI = param_1;
                    // WARNING: Subroutine does not return
  puStack00000004 = &UNK_00650084;
  FUN_0043c023();
}



void __fastcall FUN_00650073(undefined4 param_1)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  undefined *puStack00000004;
  int iStack00000008;
  
  iStack00000008 = in_EAX + 4;
  *unaff_ESI = param_1;
                    // WARNING: Subroutine does not return
  puStack00000004 = &UNK_00650084;
  FUN_0043c023();
}



void __fastcall FUN_00650076(undefined4 param_1)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 4);
}



undefined4 __thiscall FUN_006503b6(undefined4 param_1_00,byte param_1)

{
  FUN_0061ebd8(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006503d3(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined *local_74;
  undefined *puStack_70;
  undefined auStack_6c [24];
  undefined4 uStack_54;
  undefined *puStack_50;
  undefined local_3c [16];
  undefined local_2c [12];
  undefined **local_20;
  undefined *local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x6503df;
  local_18 = 0;
  puStack_50 = local_2c;
  uStack_54 = 0x6503ec;
  FUN_00507ed8();
  local_1c = auStack_6c;
  local_8 = 1;
  puStack_70 = (undefined *)param_1;
  local_74 = &LAB_00652ba4;
  FUN_006506d5();
  puStack_70 = local_3c;
  local_8 = CONCAT31(local_8._1_3_,2);
  local_74 = (undefined *)0x650415;
  puVar1 = (undefined4 *)FUN_0064d1ca();
  local_74 = (undefined *)*puVar1;
  local_20 = &local_74;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_006504cf(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined auStack_10c [32];
  undefined4 local_ec [8];
  undefined4 local_cc [4];
  undefined4 uStack_bc;
  int iStack_b8;
  undefined *puStack_b4;
  undefined *puStack_b0;
  undefined local_80 [24];
  undefined4 local_68;
  undefined local_64 [24];
  undefined4 local_4c;
  undefined *local_48;
  undefined4 *local_44;
  undefined4 *local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x6504de;
  local_34 = param_1;
  local_3c = param_2;
  puStack_b0 = (undefined *)0x6504fa;
  local_38 = param_1_00;
  puStack_b0 = (undefined *)FUN_0060a7be();
  local_8 = 0;
  puStack_b4 = (undefined *)0x65050b;
  FUN_007d77b6();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x650519;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  local_4c = 7;
  puStack_b4 = (undefined *)0x650528;
  FUN_0040180b();
  puStack_b0 = (undefined *)0x0;
  local_68 = 7;
  puStack_b4 = (undefined *)0x650534;
  FUN_0040180b();
  puStack_b0 = local_64;
  puStack_b4 = local_80;
  iStack_b8 = param_1_00 + 0x120;
  local_8._0_1_ = 4;
  uStack_bc = 0x65054f;
  FUN_007b6458();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x65055c;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x650567;
  FUN_00401829();
  local_44 = local_cc;
  local_cc[0] = 0;
  local_40 = local_ec;
  local_ec[0] = 0;
  local_48 = auStack_10c;
  local_8._0_1_ = 6;
  FUN_00507832();
  local_8 = CONCAT31(local_8._1_3_,2);
  cVar1 = FUN_007c021d(local_34,local_3c);
  if (cVar1 == '\0') {
    puStack_b0 = (undefined *)0x7161e758;
    puStack_b4 = (undefined *)0x6505bb;
    FUN_00b940e0();
    param_1_00 = local_38;
  }
  puStack_b0 = (undefined *)0x6505c7;
  (**(code **)(**(int **)(param_1_00 + 4) + 0x2c))();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x6505d3;
  FUN_00401829();
  puStack_b0 = (undefined *)0x6505da;
  FUN_00a421fb();
  return;
}



char FUN_006505dd(void)

{
  char cVar1;
  
  FUN_0065071e();
  cVar1 = FUN_00675755();
  if (cVar1 == '\0') {
    FUN_00b940e0();
  }
  return cVar1;
}



char __fastcall FUN_00650621(undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0xffcb69c1;
  }
  else {
    FUN_006503d3(param_1,local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0xeffee5d1;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



void FUN_006506c9(void)

{
  FUN_00608b56();
  return;
}



void FUN_006506d5(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_026bbe31;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0065071e(void)

{
  int *piVar1;
  int unaff_EBX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  piVar1 = unaff_ESI + 2;
  FUN_0065078b(piVar1,piVar1,2);
  if (unaff_EBX == 0) {
    *unaff_ESI = 0;
  }
  else {
    *piVar1 = unaff_EBX;
    *unaff_ESI = 0x26bbe39;
  }
  return;
}



void FUN_00650750(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006507c6(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_WAB87A847::WF48AE1D9,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WAB87A847::WF48AE1D9*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0065078b(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0065080f(0);
    return;
  }
  *param_2 = &PTR_vftable_0327ab78;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006507c6(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_WAB87A847::WF48AE1D9,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WAB87A847::WF48AE1D9*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_WAB87A847::WF48AE1D9,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WAB87A847::WF48AE1D9*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0065080f(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0327ab78;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0327ab78);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00650947(void)

{
  undefined4 *puVar1;
  undefined *local_b0;
  undefined auStack_a8 [24];
  undefined4 uStack_90;
  undefined *puStack_8c;
  undefined local_48 [44];
  undefined **local_1c;
  undefined *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_8 = 0x650953;
  local_14 = 0;
  puStack_8c = local_48;
  uStack_90 = 0x650960;
  FUN_00507ed8();
  local_18 = auStack_a8;
  local_8 = 1;
  local_b0 = &LAB_00652ba4;
  FUN_00652239();
  local_8 = CONCAT31(local_8._1_3_,2);
  local_b0 = (undefined *)0x650988;
  puVar1 = (undefined4 *)FUN_00608b80();
  local_b0 = (undefined *)*puVar1;
  local_1c = &local_b0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_00650b83(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined auStack_10c [32];
  undefined4 local_ec [8];
  undefined4 local_cc [4];
  undefined4 uStack_bc;
  int iStack_b8;
  undefined *puStack_b4;
  undefined *puStack_b0;
  undefined local_80 [24];
  undefined4 local_68;
  undefined local_64 [24];
  undefined4 local_4c;
  undefined *local_48;
  undefined4 *local_44;
  undefined4 *local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x650b92;
  local_34 = param_1;
  local_3c = param_2;
  puStack_b0 = (undefined *)0x650bae;
  local_38 = param_1_00;
  puStack_b0 = (undefined *)FUN_0060a7be();
  local_8 = 0;
  puStack_b4 = (undefined *)0x650bbf;
  FUN_007d77b6();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x650bcd;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  local_4c = 7;
  puStack_b4 = (undefined *)0x650bdc;
  FUN_0040180b();
  puStack_b0 = (undefined *)0x0;
  local_68 = 7;
  puStack_b4 = (undefined *)0x650be8;
  FUN_0040180b();
  puStack_b0 = local_64;
  puStack_b4 = local_80;
  iStack_b8 = param_1_00 + 0x120;
  local_8._0_1_ = 4;
  uStack_bc = 0x650c03;
  FUN_007b6458();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x650c10;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x650c1b;
  FUN_00401829();
  local_44 = local_cc;
  local_cc[0] = 0;
  local_40 = local_ec;
  local_ec[0] = 0;
  local_48 = auStack_10c;
  local_8._0_1_ = 6;
  FUN_00507832();
  local_8 = CONCAT31(local_8._1_3_,2);
  cVar1 = FUN_007c021d(local_34,local_3c);
  if (cVar1 == '\0') {
    puStack_b0 = (undefined *)0x3419e1f;
    puStack_b4 = (undefined *)0x650c6f;
    FUN_00b940e0();
    param_1_00 = local_38;
  }
  puStack_b0 = (undefined *)0x650c7b;
  (**(code **)(**(int **)(param_1_00 + 4) + 0x2c))();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x650c87;
  FUN_00401829();
  puStack_b0 = (undefined *)0x650c8e;
  FUN_00a421fb();
  return;
}



char FUN_00650d9f(void)

{
  char cVar1;
  
  FUN_0065071e();
  cVar1 = FUN_00675755();
  if (cVar1 == '\0') {
    FUN_00b940e0();
  }
  return cVar1;
}



char FUN_00650de3(void)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0xc7673eac;
  }
  else {
    FUN_00650947(local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0x6632cf56;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



void FUN_00652239(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_026bbe89;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_00652832(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0065286d(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_WFA41FBA9::W4108D93A,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WFA41FBA9::W4108D93A*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0065286d(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_WFA41FBA9::W4108D93A,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WFA41FBA9::W4108D93A*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_WFA41FBA9::W4108D93A,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WFA41FBA9::W4108D93A*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_006528b6(void)

{
  FUN_0067af56();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006528c8(void)

{
  undefined4 *puVar1;
  undefined4 local_54;
  undefined *local_50;
  undefined local_34 [8];
  undefined local_2c [20];
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0;
  local_14 = 0;
  local_50 = local_2c;
  local_54 = 0x6528e5;
  FUN_004daef0();
  local_18 = &local_54;
  local_8 = 1;
  local_54 = 0xa0c;
  local_50 = (undefined *)0x1cd;
  puVar1 = (undefined4 *)FUN_00465be3(local_34);
  local_54 = *puVar1;
  local_18 = &local_54;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 __thiscall FUN_00652b87(undefined4 param_1_00,byte param_1)

{
  FUN_0063e072(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00652bbb(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined *local_74;
  undefined *puStack_70;
  undefined auStack_6c [24];
  undefined4 uStack_54;
  undefined *puStack_50;
  undefined local_3c [16];
  undefined local_2c [12];
  undefined **local_20;
  undefined *local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x652bc7;
  local_18 = 0;
  puStack_50 = local_2c;
  uStack_54 = 0x652bd4;
  FUN_00507ed8();
  local_1c = auStack_6c;
  local_8 = 1;
  puStack_70 = (undefined *)param_1;
  local_74 = &LAB_00652ba4;
  FUN_006543f6();
  puStack_70 = local_3c;
  local_8 = CONCAT31(local_8._1_3_,2);
  local_74 = (undefined *)0x652bfd;
  puVar1 = (undefined4 *)FUN_0065597d();
  local_74 = (undefined *)*puVar1;
  local_20 = &local_74;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_00652cb7(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined auStack_10c [32];
  undefined4 local_ec [8];
  undefined4 local_cc [4];
  undefined4 uStack_bc;
  int iStack_b8;
  undefined *puStack_b4;
  undefined *puStack_b0;
  undefined local_80 [24];
  undefined4 local_68;
  undefined local_64 [24];
  undefined4 local_4c;
  undefined *local_48;
  undefined4 *local_44;
  undefined4 *local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x652cc6;
  local_34 = param_1;
  local_3c = param_2;
  puStack_b0 = (undefined *)0x652ce2;
  local_38 = param_1_00;
  puStack_b0 = (undefined *)FUN_0060a7be();
  local_8 = 0;
  puStack_b4 = (undefined *)0x652cf3;
  FUN_007d77b6();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x652d01;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  local_4c = 7;
  puStack_b4 = (undefined *)0x652d10;
  FUN_0040180b();
  puStack_b0 = (undefined *)0x0;
  local_68 = 7;
  puStack_b4 = (undefined *)0x652d1c;
  FUN_0040180b();
  puStack_b0 = local_64;
  puStack_b4 = local_80;
  iStack_b8 = param_1_00 + 0x120;
  local_8._0_1_ = 4;
  uStack_bc = 0x652d37;
  FUN_007b6458();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x652d44;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x652d4f;
  FUN_00401829();
  local_44 = local_cc;
  local_cc[0] = 0;
  local_40 = local_ec;
  local_ec[0] = 0;
  local_48 = auStack_10c;
  local_8._0_1_ = 6;
  FUN_00507832();
  local_8 = CONCAT31(local_8._1_3_,2);
  cVar1 = FUN_007c021d(local_34,local_3c);
  if (cVar1 == '\0') {
    puStack_b0 = (undefined *)0xc2dffed2;
    puStack_b4 = (undefined *)0x652da3;
    FUN_00b940e0();
    param_1_00 = local_38;
  }
  puStack_b0 = (undefined *)0x652daf;
  (**(code **)(**(int **)(param_1_00 + 4) + 0x2c))();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x652dbb;
  FUN_00401829();
  puStack_b0 = (undefined *)0x652dc2;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_00652ed3(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined auStack_10c [32];
  undefined4 local_ec [8];
  undefined4 local_cc [4];
  undefined4 uStack_bc;
  int iStack_b8;
  undefined *puStack_b4;
  undefined *puStack_b0;
  undefined local_80 [24];
  undefined4 local_68;
  undefined local_64 [24];
  undefined4 local_4c;
  undefined *local_48;
  undefined4 *local_44;
  undefined4 *local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x652ee2;
  local_34 = param_1;
  local_3c = param_2;
  puStack_b0 = (undefined *)0x652efe;
  local_38 = param_1_00;
  puStack_b0 = (undefined *)FUN_0060a7be();
  local_8 = 0;
  puStack_b4 = (undefined *)0x652f0f;
  FUN_007d77b6();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x652f1d;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  local_4c = 7;
  puStack_b4 = (undefined *)0x652f2c;
  FUN_0040180b();
  puStack_b0 = (undefined *)0x0;
  local_68 = 7;
  puStack_b4 = (undefined *)0x652f38;
  FUN_0040180b();
  puStack_b0 = local_64;
  puStack_b4 = local_80;
  iStack_b8 = param_1_00 + 0x120;
  local_8._0_1_ = 4;
  uStack_bc = 0x652f53;
  FUN_007b6458();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x652f60;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x652f6b;
  FUN_00401829();
  local_44 = local_cc;
  local_cc[0] = 0;
  local_40 = local_ec;
  local_ec[0] = 0;
  local_48 = auStack_10c;
  local_8._0_1_ = 6;
  FUN_00507832();
  local_8 = CONCAT31(local_8._1_3_,2);
  cVar1 = FUN_007c021d(local_34,local_3c);
  if (cVar1 == '\0') {
    puStack_b0 = (undefined *)0xd1d7f538;
    puStack_b4 = (undefined *)0x652fbf;
    FUN_00b940e0();
    param_1_00 = local_38;
  }
  puStack_b0 = (undefined *)0x652fcb;
  (**(code **)(**(int **)(param_1_00 + 4) + 0x2c))();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x652fd7;
  FUN_00401829();
  puStack_b0 = (undefined *)0x652fde;
  FUN_00a421fb();
  return;
}



char FUN_00652fe1(void)

{
  char cVar1;
  
  FUN_0065071e();
  cVar1 = FUN_00675755();
  if (cVar1 == '\0') {
    FUN_00b940e0();
  }
  return cVar1;
}



char __fastcall FUN_0065352a(undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0xe8d68f64;
  }
  else {
    FUN_00652bbb(param_1,local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0xc4eb05d7;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_006538f8(void)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_78 [28];
  undefined local_5c [28];
  undefined2 local_40;
  undefined2 local_3e;
  uint local_3c;
  undefined local_35;
  char local_34 [24];
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x84;
  local_8 = 0x653907;
  local_3c = 0;
  FUN_00b81ebf(local_34,4);
  local_8 = 0;
  uVar3 = local_3c;
  if (((-(uint)(local_34[0] != '\0') & 0x6a1cd8) != 0) && (local_1c == 8)) {
    uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      (local_78,&DAT_00dde81c,3);
    local_8 = CONCAT31(local_8._1_3_,1);
    local_40 = 0x5d9a;
    local_3c = 3;
    local_3e = 0xca31;
    uVar1 = FUN_00b94330(&local_40,uVar1);
    local_8 = 2;
    local_3c = 7;
    FUN_005d0682(local_5c,6,2);
    uVar3 = 0xf;
    local_8 = 3;
    local_3c = 0xf;
    iVar2 = FUN_00429980(uVar1);
    if (iVar2 == 0) {
      local_35 = 1;
      goto LAB_006539ab;
    }
  }
  local_35 = 0;
LAB_006539ab:
  if ((uVar3 & 8) != 0) {
    uVar3 = uVar3 & 0xfffffff7;
    FUN_004017b2(1,0);
  }
  if ((uVar3 & 4) != 0) {
    uVar3 = uVar3 & 0xfffffffb;
    FUN_004017b2(1,0);
  }
  if ((uVar3 & 2) != 0) {
    uVar3 = uVar3 & 0xfffffffd;
  }
  if ((uVar3 & 1) != 0) {
    FUN_004017b2(1,0);
  }
  if (local_34[0] != '\0') {
    FUN_004017b2(1,0);
  }
  FUN_00a421fb();
  return;
}



void FUN_0065431d(void)

{
  undefined auStack_18 [4];
  undefined4 uStack_14;
  
  FUN_00bbf8f4(auStack_18);
  FUN_007b7255();
  uStack_14 = 0x654349;
  FUN_00bbf7c1();
  return;
}



void FUN_0065436d(void)

{
  FUN_006558ae();
  FUN_00608b56();
  FUN_00654383();
  return;
}



void FUN_00654383(void)

{
  undefined4 *puVar1;
  int *unaff_EBX;
  undefined local_24 [16];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  puVar1 = (undefined4 *)FUN_0047ada8(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  return;
}



void FUN_006543ad(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_026bbed9;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_006543f6(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_026bbee1;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0065443f(undefined4 param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_0065071e();
  FUN_004fc9c9(uVar1);
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00654db2(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x654dbe;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W7EE26973::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W7EE26973::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00654e68(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x654e74;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WD55C92F4::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WD55C92F4::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0065508a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x655096;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W4C1F5CF1::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W4C1F5CF1::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00655140(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x65514c;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WDE4BD95F::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WDE4BD95F::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006551f6(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x655202;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W09C9760E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W09C9760E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006552ac(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6552b8;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W95ACAF8E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W95ACAF8E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00655362(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x65536e;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W5ED40674::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W5ED40674::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00655418(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x655424;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W5B20282F::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W5B20282F::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006554ce(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6554da;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W5F499243::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W5F499243::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00655584(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x655590;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W6ACDFBB5::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W6ACDFBB5::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0065563a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x655646;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W6949241E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W6949241E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_006557a6(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0065581c(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W017F5AE7>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W017F5AE7*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006557e1(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00655865(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_WD48B876E::W017F5AE7,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WD48B876E::W017F5AE7*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0065581c(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W017F5AE7>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W017F5AE7*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD48B876E::W017F5AE7>,class_boost::_bi::list1<class_boost::_bi::value<class_WD48B876E::W017F5AE7*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00655865(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_WD48B876E::W017F5AE7,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WD48B876E::W017F5AE7*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_WD48B876E::W017F5AE7,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WD48B876E::W017F5AE7*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_006558ae(void)

{
  undefined4 *puVar1;
  int *unaff_EBX;
  undefined local_24 [16];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  puVar1 = (undefined4 *)FUN_0047b1a4(local_24);
  local_14 = *puVar1;
  uStack_10 = puVar1[1];
  uStack_c = puVar1[2];
  uStack_8 = puVar1[3];
  (**(code **)(*unaff_EBX + 4))(&local_14);
  return;
}



void FUN_006558d8(void)

{
  FUN_0067d8ea();
  return;
}



void FUN_006558ea(void)

{
  FUN_0067d60b();
  return;
}



void FUN_006558fc(void)

{
  FUN_0067d30a();
  return;
}



void FUN_0065590e(void)

{
  FUN_0067dbc9();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00655920(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5E3281FA::WB06B249A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00655966(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0065597d(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W5E3281FA::WB06B249A::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00655920(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006559e4(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_50;
  undefined *puStack_4c;
  undefined local_38 [24];
  undefined local_20 [12];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x6559f0;
  puStack_4c = (undefined *)0x6559fa;
  FUN_007b3730();
  *param_1 = WD48B876E::W2D9CC080::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  puStack_4c = local_20;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  uStack_50 = 0x655a1a;
  FUN_007b4336();
  local_14 = &uStack_50;
  local_8 = CONCAT31(local_8._1_3_,2);
  uStack_50 = 0xa0c;
  puStack_4c = (undefined *)0xcf;
  puVar1 = (undefined4 *)FUN_00465be3(local_38);
  uStack_50 = *puVar1;
  local_14 = &uStack_50;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_00655b3c(undefined4 param_1,int param_2)

{
  char cVar1;
  int *piVar2;
  bool bVar3;
  undefined4 local_d8 [4];
  undefined *puStack_c8;
  undefined4 *puStack_c4;
  undefined *puStack_c0;
  undefined *puStack_bc;
  undefined local_a8 [40];
  undefined local_80 [8];
  undefined4 local_78;
  undefined4 local_74;
  undefined **local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x98;
  local_8 = 0;
  puStack_bc = (undefined *)0x200;
  puStack_c0 = local_80;
  puStack_c4 = (undefined4 *)0x655b5d;
  FUN_00b74200();
  local_8._0_1_ = 1;
  bVar3 = (-(uint)(param_2 != 0) & 0x7a491c) != 0;
  if (bVar3) {
    local_18 = (undefined **)local_d8;
    FUN_00672a11();
    piVar2 = (int *)FUN_00ba6d80(local_a8);
    local_8._0_1_ = 2;
    local_d8[0] = 0;
    local_18 = (undefined **)local_d8;
    cVar1 = (**(code **)(*piVar2 + 4))(local_80);
    puStack_bc = local_a8;
    local_8._0_1_ = 1;
    puStack_c0 = (undefined *)0x655bc4;
    FUN_0046aa8b();
    if (cVar1 != '\0') {
      local_78 = 0;
      local_74 = 0;
      puStack_bc = (undefined *)0x655bee;
      puStack_c4 = (undefined4 *)FUN_00b93e40();
      local_18 = &puStack_c0;
      local_8 = CONCAT31(local_8._1_3_,3);
      puStack_c0 = (undefined *)*puStack_c4;
      puStack_c4 = puStack_c4 + 1;
                    // WARNING: Subroutine does not return
      puStack_c8 = &UNK_00655c09;
      FUN_0043c023();
    }
    puStack_bc = (undefined *)0xaf5299c8;
    bVar3 = false;
  }
  else {
    puStack_bc = (undefined *)0x8eb85d32;
  }
  puStack_c0 = (undefined *)0x655bd7;
  FUN_00b940e0();
  local_8 = (uint)local_8._1_3_ << 8;
  puStack_bc = (undefined *)0x655c7e;
  FUN_00b73a90();
  local_8 = 0xffffffff;
  puStack_bc = (undefined *)0x655c8a;
  FUN_00507e58();
  return bVar3;
}


/*
Unable to decompile 'FUN_00655c93'
Cause: Exception while decompiling 00655c93: process: timeout

*/

/*
Unable to decompile 'FUN_00661a1e'
Cause: Exception while decompiling 00661a1e: process: timeout

*/


undefined4 FUN_00664afc(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02883898,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02883aa0,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02883ca8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02883eb0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_028840b8,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_028842c0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_028844c8,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_028846d0,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_028848d8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02884ae0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02884ce8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02884ef0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_028850f8,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_028852fc,0x14,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00664be8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_02885318,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02885520,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02885728,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02885930,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02885b38,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02885d40,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02885f48,0x200,param_2), cVar1 != '\0')))))) &&
      (cVar1 = (*param_1)(&DAT_02886150,0x200,param_2), cVar1 != '\0')) &&
     (((((cVar1 = (*param_1)(&DAT_02886358,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02886560,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02886768,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02886970,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02886b78,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02886d80,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02886f88,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02887190,0x200,param_2), cVar1 != '\0')))))))) &&
      (cVar1 = (*param_1)(&DAT_02887398,0x15b,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00664d0a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_028874f8,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_02887700,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_02887908,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_02887b10,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_02887d18,0x40,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}


/*
Unable to decompile 'FUN_00664d70'
Cause: Exception while decompiling 00664d70: process: timeout

*/

/*
Unable to decompile 'FUN_00668616'
Cause: Exception while decompiling 00668616: process: timeout

*/

/*
Unable to decompile 'FUN_0066b5f8'
Cause: Exception while decompiling 0066b5f8: process: timeout

*/


undefined4 FUN_0066ee6b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_029cc0c0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_029cc2c8,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_029cc4d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_029cc6d8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_029cc8e0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_029ccae8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_029cccf0,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_029ccef8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_029cd100,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_029cd308,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_029cd510,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_029cd718,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_029cd920,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_029cdb28,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_029cdd30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_029cdf38,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_029ce140,0x200,param_2), cVar1 != '\0')))) &&
        ((((((cVar1 = (*param_1)(&DAT_029ce348,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_029ce550,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_029ce758,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_029ce960,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_029ceb68,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_029ced70,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_029cef78,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_029cf180,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_029cf388,0x200,param_2), cVar1 != '\0')))))) &&
      (((((cVar1 = (*param_1)(&DAT_029cf590,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_029cf798,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_029cf9a0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_029cfba8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_029cfdb0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_029cffb8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_029d01c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_029d03c8,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_029d05d0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_029d07d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_029d09e0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_029d0be8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_029d0df0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_029d0ff8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_029d1200,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_029d1408,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_029d1610,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_029d1818,0x200,param_2), cVar1 != '\0' &&
         (((((((cVar1 = (*param_1)(&DAT_029d1a20,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_029d1c28,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_029d1e30,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_029d2038,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_029d2240,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_029d2448,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_029d2650,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_029d2858,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_029d2a60,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_029d2c68,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_029d2e70,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_029d3078,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_029d3280,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_029d3488,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_029d3690,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_029d3898,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_029d3aa0,0x200,param_2), cVar1 != '\0')))))))) &&
             (cVar1 = (*param_1)(&DAT_029d3ca8,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_029d3eb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_029d40b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_029d42c0,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_029d44c8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_029d46d0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_029d48d8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_029d4ae0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_029d4ce8,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_029d4ef0,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_029d50f8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_029d5300,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_029d5508,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_029d5710,0x8d,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}


/*
Unable to decompile 'FUN_0066f369'
Cause: Exception while decompiling 0066f369: process: timeout

*/


undefined4 FUN_00670786(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_029bb568,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_029bb770,0x200,param_2), cVar1 != '\0')) &&
          (((((((cVar1 = (*param_1)(&DAT_029bb978,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_029bbb80,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_029bbd88,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_029bbf90,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_029bc198,0x200,param_2), cVar1 != '\0')))))) &&
              (cVar1 = (*param_1)(&DAT_029bc3a0,0x200,param_2), cVar1 != '\0')) &&
             ((((((cVar1 = (*param_1)(&DAT_029bc5a8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_029bc7b0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_029bc9b8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_029bcbc0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_029bcdc8,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_029bcfd0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_029bd1d8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_029bd3e0,0x200,param_2), cVar1 != '\0')))))) &&
              ((cVar1 = (*param_1)(&DAT_029bd5e8,0x200,param_2), cVar1 != '\0' &&
               (((((cVar1 = (*param_1)(&DAT_029bd7f0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_029bd9f8,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_029bdc00,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_029bde08,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_029be010,0x200,param_2), cVar1 != '\0')))) &&
                (((cVar1 = (*param_1)(&DAT_029be218,0x200,param_2), cVar1 != '\0' &&
                  ((cVar1 = (*param_1)(&DAT_029be420,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_029be628,0x200,param_2), cVar1 != '\0')))) &&
                 (cVar1 = (*param_1)(&DAT_029be830,0x200,param_2), cVar1 != '\0')))))))))) &&
            ((((cVar1 = (*param_1)(&DAT_029bea38,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_029bec40,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_029bee48,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_029bf050,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_029bf258,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_029bf460,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_029bf668,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_029bf870,0x200,param_2), cVar1 != '\0')))))))))) &&
           (cVar1 = (*param_1)(&DAT_029bfa78,0x200,param_2), cVar1 != '\0')))) &&
         (((((cVar1 = (*param_1)(&DAT_029bfc80,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_029bfe88,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_029c0090,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_029c0298,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_029c04a0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_029c06a8,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_029c08b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_029c0ab8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_029c0cc0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_029c0ec8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_029c10d0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_029c12d8,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_029c14e0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_029c16e8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_029c18f0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_029c1af8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_029c1d00,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_029c1f08,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_029c2110,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_029c2318,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_029c2520,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_029c2728,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_029c2930,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_029c2b38,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_029c2d40,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_029c2f48,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_029c3150,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_029c3358,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_029c3560,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_029c3768,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_029c3970,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_029c3b78,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_029c3d80,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_029c3f88,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_029c4190,0x200,param_2), cVar1 != '\0')))) &&
            ((((cVar1 = (*param_1)(&DAT_029c4398,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_029c45a0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_029c47a8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_029c49b0,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_029c4bb8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_029c4dc0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_029c4fc8,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_029c51d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_029c53d8,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (((cVar1 = (*param_1)(&DAT_029c55e0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_029c57e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_029c59f0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_029c5bf8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_029c5e00,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_029c6008,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_029c6210,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_029c6418,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_029c6620,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_029c6828,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_029c6a30,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_029c6c38,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_029c6e40,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_029c7048,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_029c7250,0x200,param_2), cVar1 != '\0')))))))))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_029c7458,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_029c7660,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_029c7868,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_029c7a70,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_029c7c78,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_029c7e80,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_029c8088,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_029c8290,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_029c8498,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_029c86a0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_029c88a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_029c8ab0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_029c8cb8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_029c8ec0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_029c90c8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_029c92d0,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_029c94d8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_029c96e0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_029c98e8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_029c9af0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_029c9cf8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_029c9f00,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_029ca108,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_029ca310,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_029ca518,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_029ca720,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_029ca928,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_029cab30,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_029cad38,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_029caf40,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_029cb148,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_029cb350,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_029cb558,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_029cb760,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_029cb968,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_029cbb70,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_029cbd78,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_029cbf80,0x139,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



void Catch_All_006710cf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006710e6(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x410);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00b80b7b();
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00671255(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_006711ef(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x20) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x18) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x10) != 0) {
    FUN_0040127a();
  }
  FUN_00b6639e();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00671255(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8E975A95::W734273D1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0067129b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006712f8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_0067130f(int *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 *unaff_EBX;
  int local_60;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_5c [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_40 [24];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x50;
  local_8 = 0x67131b;
  local_18 = FUN_004dc703();
  if (unaff_EBX == (undefined4 *)0x0) {
    FUN_00a3fb10();
  }
  local_24 = *unaff_EBX;
  local_20 = unaff_EBX[6];
  local_1c = local_24;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*param_1 < *(int *)(local_18 + 0xc))) {
    local_28 = 0xf;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
              (local_40,0);
    local_8 = 0;
    local_60 = *param_1;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_5c,local_40);
    local_8 = CONCAT31(local_8._1_3_,1);
    puVar2 = (undefined4 *)FUN_006714d7(&local_24,&local_60,local_1c,local_18);
    local_1c = *puVar2;
    local_18 = puVar2[1];
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
  }
  iVar3 = FUN_006badde();
  return iVar3 + 4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_006713d1(undefined4 *param_1,
                basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_44 [28];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  local_8 = 0x6713dd;
  FUN_00743627(param_2);
  local_20 = param_1[6];
  local_24 = *param_1;
  cVar1 = FUN_006b8eca();
  iVar3 = local_18;
  if (cVar1 == '\0') {
    cVar1 = FUN_004316c1(param_2,local_18 + 0xc);
    if (cVar1 == '\0') goto LAB_00671456;
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_44,param_2);
  local_28 = 0;
  local_8 = 0;
  puVar2 = (undefined4 *)FUN_00671636(&local_24,local_44,local_1c,iVar3);
  local_1c = *puVar2;
  local_18 = puVar2[1];
  FUN_004017b2(1,0);
LAB_00671456:
  iVar3 = FUN_006badde();
  return iVar3 + 0x1c;
}



void FUN_00671469(undefined4 *param_1,undefined4 *param_2,undefined4 param_3)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  int local_c;
  
  puVar3 = &local_10;
  FUN_00743627(param_3);
  local_14 = param_1[6];
  local_18 = *param_1;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (cVar2 = FUN_004316c1(param_3,local_c + 0xc), cVar2 != '\0')) {
    local_14 = param_1[6];
    local_18 = *param_1;
    puVar3 = &local_18;
  }
  uVar1 = puVar3[1];
  *param_2 = *puVar3;
  param_2[1] = uVar1;
  return;
}



undefined4 * FUN_006714d7(undefined4 *param_1,int *param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int in_EAX;
  int iVar4;
  undefined4 *puVar5;
  bool bVar6;
  undefined4 uVar7;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar3 = FUN_006b8eca();
    if (cVar3 == '\0') {
      cVar3 = FUN_006b8eca();
      if (cVar3 == '\0') {
        iVar4 = *param_2;
        iVar1 = *(int *)(param_4 + 0xc);
        bVar6 = SBORROW4(iVar1,iVar4);
        iVar2 = iVar1 - iVar4;
        if (iVar4 < iVar1) {
          iVar4 = FUN_007a6a2f();
          iVar2 = *param_2;
          if (*(int *)(*(int *)(iVar4 + 4) + 0xc) < iVar2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x2d) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_006714f9;
          }
          bVar6 = SBORROW4(*(int *)(param_4 + 0xc),iVar2);
          iVar2 = *(int *)(param_4 + 0xc) - iVar2;
        }
        if (bVar6 != iVar2 < 0) {
          FUN_00743d11();
          cVar3 = FUN_006b8eca();
          if ((cVar3 != '\0') || (*param_2 < *(int *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x2d) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_006714f9;
          }
        }
LAB_00671614:
        puVar5 = (undefined4 *)FUN_006717d7(in_EAX,param_2);
        *param_1 = *puVar5;
        param_1[1] = puVar5[1];
        return param_1;
      }
      if (*param_2 <= *(int *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_00671614;
      uVar7 = 0;
      goto LAB_006714f9;
    }
    if (*(int *)(param_4 + 0xc) <= *param_2) goto LAB_00671614;
  }
  uVar7 = 1;
LAB_006714f9:
  FUN_00671898(param_1,uVar7,param_2);
  return param_1;
}



undefined4 * FUN_00671636(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 != '\0') {
        cVar1 = FUN_004316c1(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_006717b5;
        uVar4 = 0;
        goto LAB_00671658;
      }
      cVar1 = FUN_004316c1(param_2,param_4 + 0xc);
      if (cVar1 == '\0') {
LAB_00671745:
        cVar1 = FUN_004316c1(param_4 + 0xc,param_2);
        if (cVar1 == '\0') {
LAB_006717b5:
          puVar3 = (undefined4 *)FUN_006719e7(in_EAX,param_2);
          *param_1 = *puVar3;
          param_1[1] = puVar3[1];
          return param_1;
        }
        FUN_00743d11();
        cVar1 = FUN_006b8eca();
        if ((cVar1 == '\0') && (cVar1 = FUN_004316c1(param_2,param_4 + 0xc), cVar1 == '\0'))
        goto LAB_006717b5;
        if (*(char *)(*(int *)(param_4 + 8) + 0x2d) == '\0') {
          uVar4 = 1;
          goto LAB_00671658;
        }
      }
      else {
        iVar2 = FUN_007a6a2f();
        cVar1 = FUN_004316c1(*(int *)(iVar2 + 4) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_00671745;
        if (*(char *)(*(int *)(param_4 + 8) + 0x2d) == '\0') {
          uVar4 = 1;
          goto LAB_00671658;
        }
      }
      uVar4 = 0;
      goto LAB_00671658;
    }
    cVar1 = FUN_004316c1(param_2,param_4 + 0xc);
    if (cVar1 == '\0') goto LAB_006717b5;
  }
  uVar4 = 1;
LAB_00671658:
  FUN_00671ab1(param_1,uVar4,param_2);
  return param_1;
}



void FUN_006717d7(undefined4 *param_1,int *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x2d) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (int)local_c[3]);
      if (*param_2 < (int)local_c[3]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x2d) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_0067184a;
    }
    FUN_007a6a2f();
  }
  uVar3 = local_8;
  if (*param_2 <= (int)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_0067184a:
  puVar2 = (undefined4 *)FUN_00671898(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_00671898(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x6718a4;
  if (0x7fffffd < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_00626e27(unaff_ESI[6],param_1_00,unaff_ESI[6],0);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_006719bf;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_006719bf;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_006719bf:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xb) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x2c) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xb) == '\0') {
LAB_0067197b:
        *(undefined *)(piVar1 + 0xb) = 1;
        *(undefined *)(piVar7 + 0xb) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x2c) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007fb425(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x2c) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x2c) = 0;
        FUN_004fc926(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xb) == '\0') goto LAB_0067197b;
    if (piVar8 == (int *)*piVar1) {
      FUN_004fc926(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x2c) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x2c) = 0;
    FUN_007fb425(unaff_ESI);
  } while( true );
}



void FUN_006719e7(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  puVar2 = (undefined4 *)local_8[1];
  local_c = CONCAT31(local_c._1_3_,1);
  while (*(char *)((int)puVar2 + 0x2d) == '\0') {
    local_8 = puVar2;
    cVar1 = FUN_004316c1(param_2,puVar2 + 3);
    local_c = CONCAT31(local_c._1_3_,cVar1);
    if (cVar1 == '\0') {
      puVar2 = (undefined4 *)puVar2[2];
    }
    else {
      puVar2 = (undefined4 *)*puVar2;
    }
  }
  local_14 = *param_1;
  local_10 = local_8;
  if ((char)local_c != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_00671a59;
    }
    FUN_007a6a2f();
  }
  puVar2 = local_10;
  cVar1 = FUN_004316c1(local_10 + 3,param_2);
  uVar3 = local_c;
  if (cVar1 == '\0') {
    *unaff_EBX = local_14;
    unaff_EBX[1] = puVar2;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_00671a59:
  puVar2 = (undefined4 *)FUN_00671ab1(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_00671ab1(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x671abd;
  if (0x7fffffd < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_00671bfe(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_00671bd6;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_00671bd6;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_00671bd6:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xb) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x2c) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xb) == '\0') {
LAB_00671b92:
        *(undefined *)(piVar1 + 0xb) = 1;
        *(undefined *)(piVar7 + 0xb) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x2c) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007fb425(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x2c) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x2c) = 0;
        FUN_004fc926(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xb) == '\0') goto LAB_00671b92;
    if (piVar8 == (int *)*piVar1) {
      FUN_004fc926(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x2c) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x2c) = 0;
    FUN_007fb425(unaff_ESI);
  } while( true );
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00671bfe(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x30);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (puVar1 + 3),param_1_00);
    puVar1[10] = *(undefined4 *)(param_1_00 + 0x1c);
    *(undefined *)(puVar1 + 0xb) = 0;
    *(undefined *)((int)puVar1 + 0x2d) = 0;
  }
  return puVar1;
}



void Catch_All_00671c5c(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



int __thiscall FUN_00671c6f(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int iVar5;
  undefined4 local_7c;
  int local_78;
  undefined local_74 [8];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_6c [24];
  undefined4 local_54;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1ccfc;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_14;
  FUN_00671f12(&local_7c,param_1);
  FUN_00430228(*(undefined4 *)(param_1_00 + 0x18),param_1_00);
  cVar1 = FUN_00449367(local_74);
  iVar5 = local_78;
  if (cVar1 == '\0') {
    cVar1 = FUN_004316c1(param_1,local_78 + 0xc,uVar2);
    if (cVar1 == '\0') goto LAB_00671d48;
  }
  local_54 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_6c,0);
  local_c = 0;
  uVar3 = FUN_00671f31(param_1,local_6c);
  local_c = CONCAT31(local_c._1_3_,1);
  puVar4 = (undefined4 *)FUN_00671d68(local_74,local_7c,iVar5,uVar3);
  local_7c = *puVar4;
  local_78 = puVar4[1];
  FUN_0042f1e3();
  FUN_004017b2(1,0);
LAB_00671d48:
  iVar5 = FUN_006721d1();
  ExceptionList = local_14;
  return iVar5 + 0x1c;
}



undefined4 * __thiscall
FUN_00671d68(int param_1,undefined4 *param_2_00,undefined4 param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  int iVar5;
  undefined4 local_1c;
  int local_18;
  undefined local_14 [16];
  
  if (*(int *)(param_1 + 0x1c) == 0) {
    iVar5 = *(int *)(param_1 + 0x18);
  }
  else {
    FUN_00430228(**(undefined4 **)(param_1 + 0x18),param_1);
    cVar2 = FUN_00449367(&local_1c);
    if (cVar2 != '\0') {
      cVar2 = FUN_004316c1(param_4,param_3 + 0xc);
      if (cVar2 == '\0') goto LAB_00671eed;
      uVar4 = 1;
      goto LAB_00671d84;
    }
    FUN_00430228(*(undefined4 *)(param_1 + 0x18),param_1);
    cVar2 = FUN_00449367(&local_1c);
    if (cVar2 != '\0') {
      cVar2 = FUN_004316c1(*(int *)(*(int *)(param_1 + 0x18) + 8) + 0xc,param_4);
      if (cVar2 == '\0') goto LAB_00671eed;
      param_3 = *(int *)(*(int *)(param_1 + 0x18) + 8);
      uVar4 = 0;
      goto LAB_00671d84;
    }
    cVar2 = FUN_004316c1(param_4,param_3 + 0xc);
    if (cVar2 == '\0') {
LAB_00671e78:
      cVar2 = FUN_004316c1(param_3 + 0xc,param_4);
      if (cVar2 == '\0') {
LAB_00671eed:
        puVar3 = (undefined4 *)FUN_00671f63(local_14,param_4);
        *param_2_00 = *puVar3;
        param_2_00[1] = puVar3[1];
        return param_2_00;
      }
      local_1c = param_2;
      local_18 = param_3;
      FUN_00430228(*(undefined4 *)(param_1 + 0x18),param_1);
      FUN_0042fa91();
      cVar2 = FUN_00449367(local_14);
      iVar5 = local_18;
      if ((cVar2 == '\0') && (cVar2 = FUN_004316c1(param_4,local_18 + 0xc), cVar2 == '\0'))
      goto LAB_00671eed;
      cVar2 = *(char *)(*(int *)(param_3 + 8) + 0x45);
    }
    else {
      local_1c = param_2;
      local_18 = param_3;
      FUN_00672200();
      iVar1 = local_18;
      cVar2 = FUN_004316c1(local_18 + 0xc,param_4);
      if (cVar2 == '\0') goto LAB_00671e78;
      cVar2 = *(char *)(*(int *)(iVar1 + 8) + 0x45);
      iVar5 = param_3;
      param_3 = iVar1;
    }
    if (cVar2 != '\0') {
      uVar4 = 0;
      goto LAB_00671d84;
    }
  }
  uVar4 = 1;
  param_3 = iVar5;
LAB_00671d84:
  FUN_00672041(param_2_00,uVar4,param_3,param_4);
  return param_2_00;
}



undefined4 __thiscall FUN_00671f12(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = FUN_0067219c(param_2);
  FUN_00430228(uVar1,param_1_00);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00671f31(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1_00,param_1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1_00 + 0x1c,param_2);
  return param_1_00;
}



void __thiscall FUN_00671f63(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  char cVar2;
  char cVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 local_18;
  int local_14;
  undefined local_10 [12];
  
  cVar2 = '\x01';
  puVar4 = *(undefined4 **)(param_1_00 + 0x18);
  puVar5 = (undefined4 *)(*(undefined4 **)(param_1_00 + 0x18))[1];
  while (*(char *)((int)puVar5 + 0x45) == '\0') {
    cVar2 = FUN_004316c1(param_2,puVar5 + 3);
    puVar4 = puVar5;
    if (cVar2 == '\0') {
      puVar5 = (undefined4 *)puVar5[2];
    }
    else {
      puVar5 = (undefined4 *)*puVar5;
    }
  }
  FUN_00430228(puVar4,param_1_00);
  if (cVar2 != '\0') {
    FUN_00430228(**(undefined4 **)(param_1_00 + 0x18),param_1_00);
    cVar3 = FUN_00449367(local_10);
    if (cVar3 != '\0') {
      cVar2 = '\x01';
      goto LAB_00671fde;
    }
    FUN_00672200();
  }
  cVar3 = FUN_004316c1(local_14 + 0xc,param_2);
  if (cVar3 == '\0') {
    *param_1 = local_18;
    param_1[1] = local_14;
    *(undefined *)(param_1 + 2) = 0;
    return;
  }
LAB_00671fde:
  puVar4 = (undefined4 *)FUN_00672041(local_10,cVar2,puVar4,param_2);
  uVar1 = puVar4[1];
  *param_1 = *puVar4;
  param_1[1] = uVar1;
  *(undefined *)(param_1 + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall
FUN_00672041(int param_1_00,undefined4 param_1,char param_2,int **param_3,undefined4 param_4)

{
  int *piVar1;
  int **ppiVar2;
  int *piVar3;
  int iVar4;
  int **ppiVar5;
  int *piVar6;
  int *piVar7;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x67204d;
  if (0x4924922 < *(uint *)(param_1_00 + 0x1c)) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::length_error::vftable;
    __CxxThrowException_8(local_54,&DAT_03115554);
  }
  piVar3 = (int *)FUN_00626e9a(*(undefined4 *)(param_1_00 + 0x18),param_3,
                               *(undefined4 *)(param_1_00 + 0x18),param_4,0);
  *(int *)(param_1_00 + 0x1c) = *(int *)(param_1_00 + 0x1c) + 1;
  piVar7 = piVar3;
  if (param_3 == *(int ***)(param_1_00 + 0x18)) {
    (*(int ***)(param_1_00 + 0x18))[1] = piVar3;
    **(int ***)(param_1_00 + 0x18) = piVar3;
    iVar4 = *(int *)(param_1_00 + 0x18);
  }
  else {
    if (param_2 != '\0') {
      *param_3 = piVar3;
      if (param_3 == (int **)**(int ***)(param_1_00 + 0x18)) {
        **(int ***)(param_1_00 + 0x18) = piVar3;
      }
      goto LAB_00672171;
    }
    param_3[2] = piVar3;
    iVar4 = *(int *)(param_1_00 + 0x18);
    if (param_3 != *(int ***)(iVar4 + 8)) goto LAB_00672171;
  }
  *(int **)(iVar4 + 8) = piVar3;
LAB_00672171:
  do {
    while( true ) {
      ppiVar5 = (int **)(piVar7 + 1);
      if (*(char *)(*ppiVar5 + 0x11) != '\0') {
        *(undefined *)(*(int *)(*(int *)(param_1_00 + 0x18) + 4) + 0x44) = 1;
        FUN_00430228(piVar3,param_1_00);
        return param_1;
      }
      piVar1 = *ppiVar5;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar6 = ppiVar2[2];
      if (*(char *)(piVar6 + 0x11) == '\0') {
LAB_0067212a:
        *(undefined *)(piVar1 + 0x11) = 1;
        *(undefined *)(piVar6 + 0x11) = 1;
        *(undefined *)((*ppiVar5)[1] + 0x44) = 0;
        piVar7 = (int *)(*ppiVar5)[1];
      }
      else {
        if (piVar7 == (int *)piVar1[2]) {
          FUN_0042fa0b(piVar1);
          piVar7 = piVar1;
        }
        *(undefined *)(piVar7[1] + 0x44) = 1;
        *(undefined *)(*(int *)(piVar7[1] + 4) + 0x44) = 0;
        FUN_0042fa4d(*(undefined4 *)(piVar7[1] + 4));
      }
    }
    piVar6 = *ppiVar2;
    if (*(char *)(piVar6 + 0x11) == '\0') goto LAB_0067212a;
    if (piVar7 == (int *)*piVar1) {
      FUN_0042fa4d(piVar1);
      piVar7 = piVar1;
    }
    *(undefined *)(piVar7[1] + 0x44) = 1;
    *(undefined *)(*(int *)(piVar7[1] + 4) + 0x44) = 0;
    FUN_0042fa0b(*(undefined4 *)(piVar7[1] + 4));
  } while( true );
}



undefined4 * __thiscall FUN_0067219c(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = (undefined4 *)(*(undefined4 **)(param_1_00 + 0x18))[1];
  puVar4 = *(undefined4 **)(param_1_00 + 0x18);
  while (puVar3 = puVar1, *(char *)((int)puVar3 + 0x45) == '\0') {
    cVar2 = FUN_004316c1(puVar3 + 3,param_1);
    if (cVar2 == '\0') {
      puVar1 = (undefined4 *)*puVar3;
      puVar4 = puVar3;
    }
    else {
      puVar1 = (undefined4 *)puVar3[2];
    }
  }
  return puVar4;
}



int * __fastcall FUN_006721d1(int **param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *param_1;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *param_1;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_006721eb;
    }
  }
  iVar2 = *piVar1;
LAB_006721eb:
  if (param_1[1] == *(int **)(iVar2 + 0x18)) {
    FUN_00a3fb10();
  }
  return param_1[1] + 3;
}



void __fastcall FUN_00672200(int *param_1)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)param_1[1];
  if (*(char *)((int)piVar2 + 0x45) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x45) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x45) == '\0');
      param_1[1] = iVar3;
    }
    else {
      while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x45) == '\0' &&
             (param_1[1] == *piVar2))) {
        param_1[1] = (int)piVar2;
      }
      if (*(char *)(param_1[1] + 0x45) != '\0') goto LAB_00672222;
      param_1[1] = (int)piVar2;
    }
  }
  else {
    iVar1 = piVar2[2];
    param_1[1] = iVar1;
    if (*(char *)(iVar1 + 0x45) != '\0') {
LAB_00672222:
      FUN_00a3fb10();
      return;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_006723a8(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x6723c0;
  FUN_006726e8();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_006723c7;
  FUN_00a3f6a1();
}



void thunk_FUN_00672431(void)

{
  uint *unaff_ESI;
  
  if (*unaff_ESI != 0) {
    if ((*unaff_ESI & 1) == 0) {
      FUN_00672b42(unaff_ESI + 2);
    }
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void thunk_FUN_00672270(void)

{
  FUN_00507e58();
  FUN_00672431();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00672270(void)

{
  FUN_00507e58();
  FUN_00672431();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0067229e(int *param_1)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  
  ppiVar2 = (int **)FUN_00418daa(1,0);
  if (ppiVar2 == (int **)0x0) {
    ppiVar2 = (int **)0x0;
  }
  else {
    *ppiVar2 = param_1;
  }
  *param_1 = (int)ppiVar2;
  iVar3 = FUN_00672e72();
  piVar1 = param_1 + 6;
  *piVar1 = iVar3;
  *(undefined *)(iVar3 + 0x59) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[7] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_006722f2(undefined4 *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  uint *unaff_EBX;
  uint local_b0 [2];
  undefined local_a8 [64];
  undefined4 local_68 [8];
  undefined4 local_48;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa0;
  local_8 = 0x672301;
  FUN_006726b6(unaff_EBX);
  local_20 = param_1[6];
  local_24 = *param_1;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*unaff_EBX < *(uint *)(local_18 + 0x10))) {
    local_68[0] = 0;
    local_48 = 0;
    local_8 = 0;
    local_b0[0] = *unaff_EBX;
    FUN_0067271c(local_a8);
    local_8._0_1_ = 1;
    puVar2 = (undefined4 *)FUN_00672557(&local_24,local_b0,local_1c,local_18);
    local_1c = *puVar2;
    local_18 = puVar2[1];
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_00672270(local_a8);
    local_8 = 0xffffffff;
    FUN_00672270(local_68);
  }
  iVar3 = FUN_00470c05();
  return iVar3 + 8;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_006723a8(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x6723c0;
  FUN_006726e8();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_006723c7;
  FUN_00a3f6a1();
}



void FUN_006723d0(undefined4 *param_1,uint *param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  FUN_006726b6(param_2);
  local_10 = unaff_EBX[6];
  local_14 = *unaff_EBX;
  puVar3 = &local_c;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (*param_2 < *(uint *)(local_8 + 0x10))) {
    local_10 = unaff_EBX[6];
    local_14 = *unaff_EBX;
    puVar3 = &local_14;
  }
  uVar1 = puVar3[1];
  *param_1 = *puVar3;
  param_1[1] = uVar1;
  return;
}



void FUN_00672431(void)

{
  uint *unaff_ESI;
  
  if (*unaff_ESI != 0) {
    if ((*unaff_ESI & 1) == 0) {
      FUN_00672b42(unaff_ESI + 2);
    }
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_0067244b(uint *param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  uint uVar2;
  undefined4 *puVar3;
  uint *extraout_ECX;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x672457;
  local_18 = 0;
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a();
    local_8 = 1;
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  puVar3 = (undefined4 *)(**(code **)((uVar2 & 0xfffffffe) + 4))(local_20,param_1_00 + 2);
  *param_1 = *puVar3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar3 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_006724ba(int param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 local_38 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_8 = 0x6724c6;
  uVar1 = FUN_00672a11();
  local_8 = 0;
  FUN_00672a46(uVar1);
  local_8 = 0xffffffff;
  FUN_00672431();
  iVar2 = FUN_00672a11();
  if (param_1 + 0x20 != iVar2) {
    local_38[0] = 0;
    local_8._0_1_ = 2;
    local_8._1_3_ = 0;
    FUN_00475d30(local_38);
    FUN_00475d30(iVar2);
    FUN_00475d30(param_1 + 0x20);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_00507e58();
  }
  local_8 = 0xffffffff;
  FUN_00507e58();
  return param_1;
}



void FUN_0067254d(void)

{
  int in_EAX;
  
  FUN_00672270(in_EAX + 8);
  return;
}



undefined4 * FUN_00672557(undefined4 *param_1,uint *param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  bool bVar4;
  undefined4 uVar5;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 == '\0') {
        bVar4 = *(uint *)(param_4 + 0x10) < *param_2;
        if (*param_2 < *(uint *)(param_4 + 0x10)) {
          iVar2 = FUN_00672ae1();
          if (*(uint *)(*(int *)(iVar2 + 4) + 0x10) < *param_2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x59) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_00672579;
          }
          bVar4 = *(uint *)(param_4 + 0x10) < *param_2;
        }
        if (bVar4) {
          FUN_00672a94();
          cVar1 = FUN_006b8eca();
          if ((cVar1 != '\0') || (*param_2 < *(uint *)(param_4 + 0x10))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x59) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_00672579;
          }
        }
LAB_00672694:
        puVar3 = (undefined4 *)FUN_0067274d(in_EAX,param_2);
        *param_1 = *puVar3;
        param_1[1] = puVar3[1];
        return param_1;
      }
      if (*param_2 <= *(uint *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0x10)) goto LAB_00672694;
      uVar5 = 0;
      goto LAB_00672579;
    }
    if (*(uint *)(param_4 + 0x10) <= *param_2) goto LAB_00672694;
  }
  uVar5 = 1;
LAB_00672579:
  FUN_006728c4(param_1,uVar5,param_2);
  return param_1;
}



void FUN_006726b6(uint *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x59) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((uint)puVar2[4] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x59) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



void FUN_006726e8(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_0067280e(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0067271c(undefined4 param_1)

{
  FUN_00672a11();
  FUN_00672a11();
  return param_1;
}



void FUN_0067274d(undefined4 *param_1,uint *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x59) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (uint)local_c[4]);
      if (*param_2 < (uint)local_c[4]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x59) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_006727c0;
    }
    FUN_00672ae1();
  }
  uVar3 = local_8;
  if (*param_2 <= (uint)local_10[4]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_006727c0:
  puVar2 = (undefined4 *)FUN_006728c4(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void FUN_0067280e(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_00672f0c(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00672a94();
    FUN_00672b5a();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_006728c4(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x6728d0;
  if (0x38e38e1 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_00672e9c(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_006729e9;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_006729e9;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_006729e9:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0x16) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x58) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0x16) == '\0') {
LAB_006729a5:
        *(undefined *)(piVar1 + 0x16) = 1;
        *(undefined *)(piVar7 + 0x16) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x58) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_00672df0(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x58) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x58) = 0;
        FUN_00672e30(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0x16) == '\0') goto LAB_006729a5;
    if (piVar8 == (int *)*piVar1) {
      FUN_00672e30(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x58) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x58) = 0;
    FUN_00672df0(unaff_ESI);
  } while( true );
}



void __fastcall FUN_00672a11(uint *param_1)

{
  uint uVar1;
  int iVar2;
  uint *unaff_EBX;
  uint *puVar3;
  uint *puVar4;
  
  *unaff_EBX = 0;
  uVar1 = *param_1;
  if (uVar1 != 0) {
    *unaff_EBX = uVar1;
    if ((uVar1 & 1) == 0) {
      (**(code **)(uVar1 & 0xfffffffe))(param_1 + 2,unaff_EBX + 2,0);
    }
    else {
      puVar3 = param_1 + 2;
      puVar4 = unaff_EBX + 2;
      for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar4 = *puVar3;
        puVar3 = puVar3 + 1;
        puVar4 = puVar4 + 1;
      }
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall FUN_00672a46(int param_1_00,int param_1)

{
  undefined *puVar1;
  undefined4 local_38 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  puVar1 = &LAB_00c11ee9;
  if (param_1_00 != param_1) {
    local_38[0] = 0;
    local_8 = 0;
    FUN_0047be34(local_38);
    FUN_0047be34(param_1);
    FUN_0047be34(param_1_00);
    local_8 = 0xffffffff;
    puVar1 = (undefined *)FUN_00672431();
  }
  return puVar1;
}



void FUN_00672a94(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x59) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x59) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x59) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x59) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



void FUN_00672ae1(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x59) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x59) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x59) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x59) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x59) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x59) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



void FUN_00672b42(undefined4 param_1)

{
  code **in_EAX;
  
  if (*in_EAX != (code *)0x0) {
    (**in_EAX)(param_1,param_1,2);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x00672c45)
// WARNING: Removing unreachable block (ram,0x00672c55)
// WARNING: Removing unreachable block (ram,0x00672c5e)
// WARNING: Removing unreachable block (ram,0x00672c61)
// WARNING: Removing unreachable block (ram,0x00672c51)
// WARNING: Removing unreachable block (ram,0x00672c6e)
// WARNING: Removing unreachable block (ram,0x00672c7e)
// WARNING: Removing unreachable block (ram,0x00672c89)
// WARNING: Removing unreachable block (ram,0x00672c85)
// WARNING: Removing unreachable block (ram,0x00672c79)
// WARNING: Removing unreachable block (ram,0x00672c8c)

void FUN_00672b5a(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x672b66;
  if (*(char *)((int)param_4 + 0x59) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00672a94();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x59) == '\0') {
    if (*(char *)(param_4[2] + 0x59) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x59) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x59) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x59) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x59) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x59) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0x16) != '\x01') {
LAB_00672dbd:
    FUN_00672270(param_4 + 6);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_00672d71:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0x16) != '\x01')
     ) goto LAB_00672db9;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0x16) == '\0') {
      *(undefined *)(ppiVar4 + 0x16) = 1;
      *(undefined *)(ppiVar3 + 0x16) = 0;
      FUN_00672df0(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x59) == '\0') {
      if ((*(char *)(*ppiVar4 + 0x16) != '\x01') || (*(char *)(ppiVar4[2] + 0x16) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0x16) == '\x01') {
          *(undefined *)(*ppiVar4 + 0x16) = 1;
          *(undefined *)(ppiVar4 + 0x16) = 0;
          FUN_00672e30(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0x16) = *(undefined *)(ppiVar3 + 0x16);
        *(undefined *)(ppiVar3 + 0x16) = 1;
        *(undefined *)(ppiVar4[2] + 0x16) = 1;
        FUN_00672df0(param_1);
        goto LAB_00672db9;
      }
LAB_00672d68:
      *(undefined *)(ppiVar4 + 0x16) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0x16) == '\0') {
      *(undefined *)(ppiVar4 + 0x16) = 1;
      *(undefined *)(ppiVar3 + 0x16) = 0;
      FUN_00672e30(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x59) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0x16) == '\x01') && (*(char *)(*ppiVar4 + 0x16) == '\x01'))
      goto LAB_00672d68;
      if (*(char *)(*ppiVar4 + 0x16) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0x16) = 1;
        *(undefined *)(ppiVar4 + 0x16) = 0;
        FUN_00672df0(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0x16) = *(undefined *)(ppiVar3 + 0x16);
      *(undefined *)(ppiVar3 + 0x16) = 1;
      *(undefined *)(*ppiVar4 + 0x16) = 1;
      FUN_00672e30(param_1);
LAB_00672db9:
      *(undefined *)(ppiVar5 + 0x16) = 1;
      goto LAB_00672dbd;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_00672d71;
}



void __thiscall FUN_00672df0(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x59) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



void __thiscall FUN_00672e30(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x59) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



void FUN_00672e72(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x60);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 0x16) = 1;
  *(undefined *)((int)puVar1 + 0x59) = 0;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00672e9c(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x60);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[4] = *param_1_00;
    FUN_0067271c(puVar1 + 6);
    *(undefined *)(puVar1 + 0x16) = 0;
    *(undefined *)((int)puVar1 + 0x59) = 0;
  }
  return puVar1;
}



void Catch_All_00672ef9(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void FUN_00672f0c(int param_1)

{
  if (*(char *)(param_1 + 0x59) == '\0') {
    FUN_00672f0c(*(undefined4 *)(param_1 + 8));
    FUN_00672270(param_1 + 0x18);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



// WARNING: Removing unreachable block (ram,0x00672f70)

void FUN_00672f47(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  FUN_00672b42(unaff_ESI + 2);
  unaff_ESI[2] = &LAB_00674005;
  *unaff_ESI = &DAT_029fc29d;
  return;
}



// WARNING: Removing unreachable block (ram,0x00672faa)

void FUN_00672f78(void)

{
  undefined4 *puVar1;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  puVar1 = unaff_ESI + 2;
  FUN_00673248(puVar1,puVar1,2);
  *puVar1 = &LAB_004f9cfa;
  *unaff_ESI = 0x29fc2a5;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00672fb1(undefined4 param_1)

{
  FUN_00672a11();
  FUN_00672a11();
  return param_1;
}



// WARNING: Removing unreachable block (ram,0x0067300b)

void FUN_00672fe2(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  FUN_00672b42(unaff_ESI + 2);
  unaff_ESI[2] = &LAB_00673f3a;
  *unaff_ESI = &DAT_029fc2ad;
  return;
}



// WARNING: Removing unreachable block (ram,0x0067303c)

void FUN_00673013(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  FUN_00672b42(unaff_ESI + 2);
  unaff_ESI[2] = &LAB_00673e6f;
  *unaff_ESI = &DAT_029fc2b5;
  return;
}



// WARNING: Removing unreachable block (ram,0x0067306d)

void FUN_00673044(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  FUN_00672b42(unaff_ESI + 2);
  unaff_ESI[2] = &LAB_00673da4;
  *unaff_ESI = &DAT_029fc2bd;
  return;
}



// WARNING: Removing unreachable block (ram,0x0067309e)

void FUN_00673075(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  FUN_00672b42(unaff_ESI + 2);
  unaff_ESI[2] = &LAB_0063dcb2;
  *unaff_ESI = &DAT_029fc2c5;
  return;
}



// WARNING: Removing unreachable block (ram,0x006730cf)

void FUN_006730a6(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  FUN_00672b42(unaff_ESI + 2);
  unaff_ESI[2] = &LAB_00673cd9;
  *unaff_ESI = &DAT_029fc2cd;
  return;
}



// WARNING: Removing unreachable block (ram,0x00673100)

void FUN_006730d7(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  FUN_00672b42(unaff_ESI + 2);
  unaff_ESI[2] = &LAB_00673c0e;
  *unaff_ESI = &DAT_029fc2d5;
  return;
}



// WARNING: Removing unreachable block (ram,0x00673131)

void FUN_00673108(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  FUN_00672b42(unaff_ESI + 2);
  unaff_ESI[2] = &LAB_00673b43;
  *unaff_ESI = &DAT_029fc2dd;
  return;
}



// WARNING: Removing unreachable block (ram,0x00673162)

void FUN_00673139(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  FUN_00672b42(unaff_ESI + 2);
  unaff_ESI[2] = &LAB_00673a78;
  *unaff_ESI = &DAT_029fc2e5;
  return;
}



// WARNING: Removing unreachable block (ram,0x00673193)

void FUN_0067316a(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  FUN_00672b42(unaff_ESI + 2);
  unaff_ESI[2] = &LAB_006739ad;
  *unaff_ESI = &DAT_029fc2ed;
  return;
}



// WARNING: Removing unreachable block (ram,0x006731cd)

void FUN_0067319b(void)

{
  undefined4 *puVar1;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  puVar1 = unaff_ESI + 2;
  FUN_00673532(puVar1,puVar1,2);
  *puVar1 = &LAB_005d158f;
  *unaff_ESI = 0x29fc2f5;
  return;
}



// WARNING: Removing unreachable block (ram,0x00673206)

void FUN_006731d4(void)

{
  code **ppcVar1;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = 0;
  ppcVar1 = (code **)(unaff_ESI + 2);
  FUN_0067356d(ppcVar1,ppcVar1,2);
  *ppcVar1 = FUN_005d1653;
  *unaff_ESI = 0x29fc2fd;
  return;
}



void FUN_0067320d(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006735a8(0);
    return;
  }
  *param_2 = &PTR_vftable_0327b3a0;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00673248(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006735f0(0);
    return;
  }
  *param_2 = &PTR_vftable_0327b3e0;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00673283(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00673638(0);
    return;
  }
  *param_2 = &PTR_vftable_0327b420;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006732be(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00673680(0);
    return;
  }
  *param_2 = &PTR_vftable_0327b460;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006732f9(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006736c8(0);
    return;
  }
  *param_2 = &PTR_vftable_0327b4a0;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00673334(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00673710(0);
    return;
  }
  *param_2 = &PTR_vftable_0327b4e0;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0067336f(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00673758(0);
    return;
  }
  *param_2 = &PTR_vftable_0327b520;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006733aa(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006737a0(0);
    return;
  }
  *param_2 = &PTR_vftable_0327b560;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006733e5(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006737e8(0);
    return;
  }
  *param_2 = &PTR_vftable_0327b5a0;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00673420(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00673830(0);
    return;
  }
  *param_2 = &PTR_vftable_0327b5e0;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006734a9(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00673878(0);
    return;
  }
  *param_2 = &PTR_vftable_0327b620;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00673532(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006738c0(0);
    return;
  }
  *param_2 = &PTR_vftable_0327b660;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0067356d(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00673908(0);
    return;
  }
  *param_2 = &PTR_vftable_0327b6a0;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006735a8(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0327b3a0;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0327b3a0);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_006735f0(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0327b3e0;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0327b3e0);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_00673638(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0327b420;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0327b420);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_00673680(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0327b460;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0327b460);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_006736c8(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0327b4a0;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0327b4a0);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_00673710(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0327b4e0;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0327b4e0);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_00673758(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0327b520;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0327b520);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_006737a0(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0327b560;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0327b560);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_006737e8(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0327b5a0;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0327b5a0);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_00673830(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0327b5e0;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0327b5e0);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_00673878(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0327b620;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0327b620);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_006738c0(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0327b660;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0327b660);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_00673908(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_0327b6a0;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_0327b6a0);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00673950(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WD14EE2BB>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00673996(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00673a1b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W7A978617>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00673a61(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00673ae6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WFF9C8B89>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00673b2c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00673bb1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W3E981EE0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00673bf7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00673c7c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WC109E5BF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00673cc2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00673d47(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W8E794DEF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00673d8d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00673e12(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WC98EE7EB>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00673e58(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00673edd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W14913E98>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00673f23(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00673fa8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W2A1C9B97>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00673fee(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_00674073(char *param_1)

{
  char *in_EAX;
  
  if (*in_EAX == '\0') {
    if (*param_1 != '\0') {
      if ((undefined4 *)(in_EAX + 4) != (undefined4 *)0x0) {
        *(undefined4 *)(in_EAX + 4) = *(undefined4 *)(param_1 + 4);
      }
      *in_EAX = '\x01';
    }
    return;
  }
  if (*param_1 != '\0') {
    *(undefined4 *)(in_EAX + 4) = *(undefined4 *)(param_1 + 4);
    return;
  }
  *in_EAX = '\0';
  return;
}



int FUN_0067409d(uint *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  uint *unaff_EBX;
  undefined local_20 [8];
  uint local_18;
  uint local_14;
  undefined4 local_10;
  int local_c;
  
  FUN_00674114(param_1);
  local_14 = unaff_EBX[6];
  local_18 = *unaff_EBX;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*param_1 < *(uint *)(local_c + 0xc))) {
    local_18 = *param_1;
    local_14 = 0;
    puVar2 = (undefined4 *)FUN_00448a0c(local_20,&local_18,local_10,local_c);
    local_10 = *puVar2;
    local_c = puVar2[1];
  }
  iVar3 = FUN_006badde();
  return iVar3 + 4;
}



void FUN_00674114(uint *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x15) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((uint)puVar2[3] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x15) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00674146(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x20);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00bb329d(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_006742f2(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void ** FUN_006741ba(void **param_1)

{
  void *pvVar1;
  void *pvVar2;
  void **ppvVar3;
  int local_14;
  
  pvVar2 = operator_new(0x30);
  if (pvVar2 == (void *)0x0) {
    pvVar2 = (void *)0x0;
  }
  else {
    FUN_00b92800();
    FUN_00b92800();
    FUN_00b92800();
  }
  *param_1 = pvVar2;
  param_1[1] = (void *)0x0;
  ppvVar3 = (void **)FUN_0067434a(pvVar2);
  pvVar1 = param_1[1];
  param_1[1] = *ppvVar3;
  *ppvVar3 = pvVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,pvVar2,pvVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void ** FUN_00674230(void **param_1)

{
  void *pvVar1;
  void *pvVar2;
  void **ppvVar3;
  int local_14;
  
  pvVar2 = operator_new(100);
  if (pvVar2 == (void *)0x0) {
    pvVar2 = (void *)0x0;
  }
  else {
    _eh_vector_constructor_iterator_
              ((void *)((int)pvVar2 + 4),0x18,4,(_func_void_void_ptr *)&LAB_006742b2,
               (_func_void_void_ptr *)&LAB_006742eb);
  }
  *param_1 = pvVar2;
  param_1[1] = (void *)0x0;
  ppvVar3 = (void **)FUN_006743a7(pvVar2);
  pvVar1 = param_1[1];
  param_1[1] = *ppvVar3;
  *ppvVar3 = pvVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,pvVar2,pvVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006742f2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8E975A95::WCA02B34A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00674338(void)

{
  code *pcVar1;
  
  FUN_00674453();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0067434a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W8E975A95::WEA4A1EB5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00674390(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_00674475(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006743a7(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_W8E975A95::WE61A5692>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006743ed(void)

{
  int iVar1;
  code *pcVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  if (iVar1 != 0) {
    _eh_vector_destructor_iterator_((void *)(iVar1 + 4),0x18,4,(_func_void_void_ptr *)&LAB_006742eb)
    ;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



void FUN_00674417(void)

{
  FUN_00674453();
  return;
}



void __fastcall FUN_00674422(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_00674475(*(int *)(param_1 + 0xc));
  }
  return;
}



void __fastcall FUN_00674430(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    _eh_vector_destructor_iterator_((void *)(iVar1 + 4),0x18,4,(_func_void_void_ptr *)&LAB_006742eb)
    ;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void FUN_00674453(void)

{
  int *unaff_EDI;
  
  if (unaff_EDI != (int *)0x0) {
    FUN_007a7d86();
    if ((undefined4 *)*unaff_EDI != (undefined4 *)0x0) {
      (***(code ***)(undefined4 *)*unaff_EDI)(1);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00674475(undefined4 param_1)

{
  FUN_00b92d80();
  FUN_00b92d80();
  FUN_00b92d80();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_006744bb(undefined4 *param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined local_38 [16];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x6744c7;
  FUN_006746e4(&local_1c,param_1);
  local_20 = param_1_00[6];
  local_24 = *param_1_00;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    cVar1 = FUN_00ba035d(param_1);
    if (cVar1 == '\0') goto LAB_0067453e;
  }
  FUN_00b92d90(param_1);
  local_28 = 0;
  local_8 = 0;
  puVar2 = (undefined4 *)FUN_00674551(&local_24,local_38,local_1c,local_18);
  local_1c = *puVar2;
  local_18 = puVar2[1];
  local_8 = 0xffffffff;
  FUN_00b92d80();
LAB_0067453e:
  iVar3 = FUN_006badde();
  return iVar3 + 0x10;
}



undefined4 * FUN_00674551(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 != '\0') {
        cVar1 = FUN_00ba035d(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc);
        if (cVar1 == '\0') goto LAB_006746c2;
        uVar4 = 0;
        goto LAB_00674573;
      }
      cVar1 = FUN_00ba035d(param_2);
      if (cVar1 == '\0') {
LAB_00674655:
        cVar1 = FUN_00ba035d(param_4 + 0xc);
        if (cVar1 == '\0') {
LAB_006746c2:
          puVar3 = (undefined4 *)FUN_0067472c(in_EAX,param_2);
          *param_1 = *puVar3;
          param_1[1] = puVar3[1];
          return param_1;
        }
        FUN_00620942();
        cVar1 = FUN_006b8eca();
        if ((cVar1 == '\0') && (cVar1 = FUN_00ba035d(param_2), cVar1 == '\0')) goto LAB_006746c2;
        if (*(char *)(*(int *)(param_4 + 8) + 0x21) == '\0') {
          uVar4 = 1;
          goto LAB_00674573;
        }
      }
      else {
        iVar2 = FUN_00437bca();
        cVar1 = FUN_00ba035d(*(int *)(iVar2 + 4) + 0xc);
        if (cVar1 == '\0') goto LAB_00674655;
        if (*(char *)(*(int *)(param_4 + 8) + 0x21) == '\0') {
          uVar4 = 1;
          goto LAB_00674573;
        }
      }
      uVar4 = 0;
      goto LAB_00674573;
    }
    cVar1 = FUN_00ba035d(param_2);
    if (cVar1 == '\0') goto LAB_006746c2;
  }
  uVar4 = 1;
LAB_00674573:
  FUN_006747f2(param_1,uVar4,param_2);
  return param_1;
}



void FUN_006746e4(undefined4 *param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)((undefined4 *)unaff_EBX[6])[1];
  cVar2 = *(char *)((int)local_8 + 0x21);
  puVar1 = (undefined4 *)unaff_EBX[6];
  while (cVar2 == '\0') {
    cVar2 = FUN_00ba035d(local_8 + 3);
    if (cVar2 == '\0') {
      puVar3 = (undefined4 *)*local_8;
    }
    else {
      puVar3 = (undefined4 *)local_8[2];
      local_8 = puVar1;
    }
    puVar1 = local_8;
    local_8 = puVar3;
    cVar2 = *(char *)((int)puVar3 + 0x21);
  }
  param_1[1] = puVar1;
  *param_1 = *unaff_EBX;
  return;
}



void FUN_0067472c(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 uVar4;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_10 = (undefined4 *)param_1[6];
  puVar3 = (undefined4 *)local_10[1];
  cVar2 = *(char *)((int)puVar3 + 0x21);
  cVar1 = '\x01';
  local_c = CONCAT31(local_c._1_3_,1);
  while (cVar2 == '\0') {
    local_8 = puVar3;
    cVar1 = FUN_00ba035d(param_2);
    local_c = CONCAT31(local_c._1_3_,cVar1);
    if (cVar1 == '\0') {
      puVar3 = (undefined4 *)puVar3[2];
    }
    else {
      puVar3 = (undefined4 *)*puVar3;
    }
    local_10 = local_8;
    cVar2 = *(char *)((int)puVar3 + 0x21);
  }
  local_14 = *param_1;
  local_8 = local_10;
  if (cVar1 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar2 = FUN_006b8eca();
    if (cVar2 != '\0') {
      uVar4 = 1;
      goto LAB_0067479e;
    }
    FUN_00437bca();
  }
  puVar3 = local_10;
  cVar2 = FUN_00ba035d(local_10 + 3);
  uVar4 = local_c;
  if (cVar2 == '\0') {
    *unaff_EBX = local_14;
    unaff_EBX[1] = puVar3;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_0067479e:
  puVar3 = (undefined4 *)FUN_006747f2(&local_1c,uVar4,param_2);
  uVar4 = puVar3[1];
  *unaff_EBX = *puVar3;
  unaff_EBX[1] = uVar4;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_006747f2(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x6747fe;
  if (0xcccccca < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_0067493f(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_00674917;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_00674917;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_00674917:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 8) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x20) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 8) == '\0') {
LAB_006748d3:
        *(undefined *)(piVar1 + 8) = 1;
        *(undefined *)(piVar7 + 8) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x20) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007a1dd4(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x20) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x20) = 0;
        FUN_00437a73(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 8) == '\0') goto LAB_006748d3;
    if (piVar8 == (int *)*piVar1) {
      FUN_00437a73(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x20) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x20) = 0;
    FUN_007a1dd4(unaff_ESI);
  } while( true );
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_0067493f(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x24);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    FUN_00b92d90(param_1_00);
    puVar1[7] = *(undefined4 *)(param_1_00 + 0x10);
    *(undefined *)(puVar1 + 8) = 0;
    *(undefined *)((int)puVar1 + 0x21) = 0;
  }
  return puVar1;
}



void Catch_All_0067499b(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void __fastcall FUN_006749ae(undefined4 *param_1)

{
  *param_1 = W8E975A95::WC1B21080::vftable;
  return;
}



undefined4 * __thiscall FUN_006749b5(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8E975A95::WC1B21080::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006749d2(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x20);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00b819f1(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00675003(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00674a43(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x14);
  if (pvVar1 != (void *)0x0) {
    FUN_00b7ff08(param_3);
  }
  FUN_00674f5d(param_1);
  return param_1;
}



undefined4 __thiscall FUN_00674a8e(undefined4 param_1,byte param_2)

{
  FUN_00b81987();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_00674aaa(int param_1)

{
  FUN_0041c235();
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00674ada(undefined4 *param_1)

{
  if (param_1[3] != 0) {
    FUN_00674c9a(param_1[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void FUN_00674b21(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  uint uVar2;
  undefined4 uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar2 = 0;
  }
  else {
    uVar2 = *(int *)(in_EAX + 0x14) - iVar1 >> 3;
  }
  if ((uint)(*(int *)(in_EAX + 0x10) - iVar1 >> 3) < uVar2) {
    uVar3 = FUN_00478fca(param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar3;
  }
  else {
    FUN_0046e65a();
    FUN_00674bc6(&local_10,param_1,local_10,local_c);
  }
  return;
}



void FUN_00674b89(void)

{
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_00674c3d(&local_14,local_14,local_10,local_c,local_8);
  return;
}



undefined4 FUN_00674bc6(undefined4 param_1,undefined4 param_2,int param_3,int param_4)

{
  int in_EAX;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc) & 0xfffffff8U) == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = param_4 - local_8 >> 3;
  }
  FUN_00674cb3();
  FUN_0046e65a();
  FUN_00674f1b(local_8);
  return param_1;
}



int * FUN_00674c3d(int *param_1)

{
  int in_EAX;
  undefined4 uVar1;
  int local_10;
  int local_c;
  
  FUN_0046e65a();
  FUN_0046e65a();
  if ((*param_1 == 0) || (*param_1 != local_10)) {
    FUN_00a3fb10();
  }
  if (param_1[1] != local_c) {
    uVar1 = FUN_00674faa(*(undefined4 *)(in_EAX + 0x10));
    FUN_00674c9a(*(undefined4 *)(in_EAX + 0x10));
    *(undefined4 *)(in_EAX + 0x10) = uVar1;
  }
  return param_1;
}



void FUN_00674c9a(int param_1)

{
  int in_EAX;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 8) {
    FUN_005e72d0();
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall
FUN_00674cb3(int param_1_00,int param_1,uint param_2,undefined4 param_3,int param_4)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  int extraout_ECX;
  undefined *local_18;
  
  puVar1 = &LAB_00c1cc83;
  iVar2 = *(int *)(param_1 + 0xc);
  if (iVar2 == 0) {
    local_18 = (undefined *)0x0;
  }
  else {
    puVar1 = (undefined *)(*(int *)(param_1 + 0x14) - iVar2 >> 3);
    local_18 = puVar1;
  }
  if (param_2 != 0) {
    iVar3 = *(int *)(param_1 + 0x10);
    iVar2 = iVar3 - iVar2 >> 3;
    if (0x1fffffffU - iVar2 < param_2) {
      iVar2 = FUN_004423c1();
      iVar3 = extraout_ECX;
    }
    puVar1 = (undefined *)(iVar2 + param_2);
    if (puVar1 <= local_18) {
      if ((uint)(iVar3 - param_4 >> 3) < param_2) {
                    // WARNING: Subroutine does not return
        FUN_0043c023(param_1_00 + 4);
      }
                    // WARNING: Subroutine does not return
      FUN_0043c023(param_1_00 + 4);
    }
    if ((undefined *)(0x1fffffff - ((uint)local_18 >> 1)) < local_18) {
      local_18 = (undefined *)0x0;
    }
    else {
      local_18 = local_18 + ((uint)local_18 >> 1);
    }
    if (local_18 < puVar1) {
      local_18 = puVar1;
    }
    iVar3 = FUN_0046aed6();
    iVar2 = *(int *)(param_1 + 0xc);
    FUN_00478fca(param_1_00);
    FUN_00674fdf(param_4,iVar3);
    FUN_00674fdf(*(undefined4 *)(param_1 + 0x10),iVar3 + ((param_4 - iVar2 >> 3) + param_2) * 8);
    if (*(int *)(param_1 + 0xc) != 0) {
      FUN_00674c9a(*(undefined4 *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
    }
    *(int *)(param_1 + 0x14) = iVar3 + (int)local_18 * 8;
    puVar1 = (undefined *)
             (iVar3 + (param_2 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc) >> 3)) * 8);
    *(undefined **)(param_1 + 0x10) = puVar1;
    *(int *)(param_1 + 0xc) = iVar3;
  }
  return puVar1;
}



void Catch_All_00674dc3(void)

{
  int iVar1;
  int iVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + -0x18);
  iVar2 = *(int *)(unaff_EBP + -0x20);
  if (1 < *(int *)(unaff_EBP + 8)) {
    FUN_00674c9a(iVar1 + iVar2 * 8);
  }
  if (0 < *(int *)(unaff_EBP + 8)) {
    FUN_00674c9a(iVar1 + (*(int *)(unaff_EBP + 0xc) + iVar2) * 8);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar1);
}



void FUN_00674dfb(void)

{
  int extraout_ECX;
  undefined4 *unaff_EBX;
  int unaff_EBP;
  uint unaff_ESI;
  
  __CxxThrowException_8();
  *(undefined4 *)(unaff_EBP + -0x1c) = *unaff_EBX;
  if ((uint)(extraout_ECX - *(int *)(unaff_EBP + 0x14) >> 3) < unaff_ESI) {
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



void Catch_All_00674e82(void)

{
  int unaff_EBP;
  
  FUN_00674c9a(*(int *)(*(int *)(unaff_EBP + 8) + 0x10) + *(int *)(unaff_EBP + 0xc) * 8);
  FUN_00674dfb(0);
  return;
}



void FUN_00674f1b(int param_1)

{
  int *piVar1;
  int *piVar2;
  int **in_EAX;
  int iVar3;
  int **unaff_EBX;
  
  piVar1 = *in_EAX;
  piVar2 = in_EAX[1];
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar1;
  }
  piVar2 = piVar2 + param_1 * 2;
  if (piVar2 <= *(int **)(iVar3 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(int **)(iVar3 + 0xc) <= piVar2) goto LAB_00674f51;
  }
  FUN_00a3fb10();
LAB_00674f51:
  unaff_EBX[1] = piVar2;
  *unaff_EBX = piVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00674f5d(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_00675060(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



int __thiscall FUN_00674faa(int param_1_00,int param_1)

{
  int in_EAX;
  int iVar1;
  int iVar2;
  
  iVar1 = param_1 - param_1_00;
  if (param_1_00 != param_1) {
    iVar2 = in_EAX - param_1_00;
    do {
      FUN_0046f638(iVar2 + param_1_00);
      param_1_00 = param_1_00 + 8;
    } while (param_1_00 != param_1);
  }
  return in_EAX + (iVar1 >> 3) * 8;
}



void FUN_00674fdf(undefined4 param_1)

{
  FUN_00438958(param_1,param_1,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00675003(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8E975A95::W89038FAB>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00675049(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00675060(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8E975A95::WB2773374>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006750a6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_006750bd(undefined4 *param_1)

{
  *param_1 = W8E975A95::WAE4AB74B::vftable;
  return;
}



undefined4 * __thiscall FUN_006750c4(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8E975A95::WAE4AB74B::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_006750e1(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x14);
  if (pvVar1 != (void *)0x0) {
    FUN_00b7feef(param_2);
  }
  FUN_00674f5d(param_1);
  return param_1;
}



undefined4 __thiscall FUN_00675129(undefined4 param_1_00,byte param_1)

{
  FUN_00b812f0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00675145(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  uint uVar2;
  undefined4 uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar2 = 0;
  }
  else {
    uVar2 = *(int *)(in_EAX + 0x14) - iVar1 >> 4;
  }
  if ((uint)(*(int *)(in_EAX + 0x10) - iVar1 >> 4) < uVar2) {
    uVar3 = FUN_00675307(*(int *)(in_EAX + 0x10),1,param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar3;
  }
  else {
    FUN_0046e65a();
    FUN_006751e0(&local_10,param_1,local_10,local_c);
  }
  return;
}



void FUN_006751a4(void)

{
  undefined4 in_EAX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0067528a(in_EAX,&local_14,local_14,local_10,local_c,local_8);
  return;
}



void FUN_006751e0(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int in_EAX;
  int iVar1;
  int *piVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc) & 0xfffffff0U) == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = param_4 - local_8 >> 4;
  }
  FUN_00675337(param_2,param_3,param_4);
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar1 = 0;
  }
  else {
    iVar1 = *local_14;
  }
  piVar2 = (int *)(local_10 + local_8 * 0x10);
  if (piVar2 <= *(int **)(iVar1 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *local_14;
    }
    if (*(int **)(iVar1 + 0xc) <= piVar2) goto LAB_0067527b;
  }
  FUN_00a3fb10();
LAB_0067527b:
  param_1[1] = piVar2;
  *param_1 = local_14;
  return;
}



int * FUN_0067528a(int param_1,int *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int iVar6;
  int local_c;
  undefined4 *local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  if ((*param_2 == 0) || (*param_2 != local_c)) {
    FUN_00a3fb10();
  }
  puVar4 = (undefined4 *)param_2[1];
  if (puVar4 != local_8) {
    puVar5 = *(undefined4 **)(param_1 + 0x10);
    iVar6 = (int)puVar5 - (int)local_8;
    if (local_8 != puVar5) {
      iVar2 = (int)puVar4 - (int)local_8;
      do {
        puVar1 = (undefined4 *)(iVar2 + (int)local_8);
        *puVar1 = *local_8;
        puVar1[1] = local_8[1];
        puVar3 = local_8 + 3;
        puVar1[2] = local_8[2];
        local_8 = local_8 + 4;
        puVar1[3] = *puVar3;
      } while (local_8 != puVar5);
    }
    *(undefined4 **)(param_1 + 0x10) = puVar4 + (iVar6 >> 4) * 4;
  }
  return param_2;
}



int FUN_00675307(int param_1,int param_2,undefined4 param_3)

{
  FUN_0067557b(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x10 + param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_00675337(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 *param_3)

{
  uint uVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int extraout_ECX;
  undefined4 *puVar6;
  uint uVar7;
  undefined8 uVar8;
  undefined4 local_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x675343;
  iVar3 = *(int *)(param_1_00 + 0xc);
  if (iVar3 == 0) {
    uVar7 = 0;
  }
  else {
    uVar7 = *(int *)(param_1_00 + 0x14) - iVar3 >> 4;
  }
  iVar5 = 0xfffffff;
  iVar3 = *(int *)(param_1_00 + 0x10) - iVar3 >> 4;
  uVar8 = CONCAT44(*(int *)(param_1_00 + 0x10),iVar3);
  if (iVar3 == 0xfffffff) {
    uVar8 = FUN_004423c1();
    iVar5 = extraout_ECX;
  }
  puVar6 = (undefined4 *)((ulonglong)uVar8 >> 0x20);
  uVar1 = (int)uVar8 + 1;
  if (uVar7 < uVar1) {
    if (iVar5 - (uVar7 >> 1) < uVar7) {
      uVar7 = 0;
    }
    else {
      uVar7 = uVar7 + (uVar7 >> 1);
    }
    if (uVar7 < uVar1) {
      uVar7 = uVar1;
    }
    local_1c = FUN_006754e6();
    local_8 = 0;
    iVar3 = (int)param_3 - *(int *)(param_1_00 + 0xc) >> 4;
    FUN_00675307(iVar3 * 0x10 + local_1c,1,param_1);
    FUN_00675557(param_3,local_1c);
    FUN_00675557(*(undefined4 *)(param_1_00 + 0x10),(iVar3 + 1) * 0x10 + local_1c);
    iVar3 = *(int *)(param_1_00 + 0xc);
    if (iVar3 != 0) {
      for (; iVar3 != *(int *)(param_1_00 + 0x10); iVar3 = iVar3 + 0x10) {
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
    }
    *(uint *)(param_1_00 + 0x14) = uVar7 * 0x10 + local_1c;
    *(int *)(param_1_00 + 0x10) = ((*(int *)(param_1_00 + 0x10) - iVar3 >> 4) + 1) * 0x10 + local_1c
    ;
    *(int *)(param_1_00 + 0xc) = local_1c;
  }
  else {
    local_30 = *param_1;
    uStack_2c = param_1[1];
    uStack_28 = param_1[2];
    uStack_24 = param_1[3];
    if ((int)puVar6 - (int)param_3 >> 4 == 0) {
      FUN_00675557(puVar6,param_3 + 4);
      local_8 = 2;
      FUN_00675307(*(int *)(param_1_00 + 0x10),1 - (*(int *)(param_1_00 + 0x10) - (int)param_3 >> 4)
                   ,&local_30);
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 0x10;
      iVar3 = *(int *)(param_1_00 + 0x10);
      for (; param_3 != (undefined4 *)(iVar3 + -0x10); param_3 = param_3 + 4) {
        *param_3 = local_30;
        param_3[1] = uStack_2c;
        param_3[2] = uStack_28;
        param_3[3] = uStack_24;
      }
    }
    else {
      uVar4 = FUN_00675557(puVar6,puVar6);
      *(undefined4 *)(param_1_00 + 0x10) = uVar4;
      puVar2 = puVar6 + -4;
      while (param_3 != puVar2) {
        puVar6[-4] = puVar2[-4];
        puVar6[-3] = puVar2[-3];
        puVar6[-2] = puVar2[-2];
        puVar6[-1] = puVar2[-1];
        puVar2 = puVar2 + -4;
        puVar6 = puVar6 + -4;
      }
      puVar6 = param_3 + 4;
      for (; param_3 != puVar6; param_3 = param_3 + 4) {
        *param_3 = local_30;
        param_3[1] = uStack_2c;
        param_3[2] = uStack_28;
        param_3[3] = uStack_24;
      }
    }
  }
  return;
}



void Catch_All_0067541f(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x18));
}



void __fastcall FUN_006754e6(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 0x10) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 << 4);
  return;
}



void FUN_00675557(undefined4 param_1)

{
  FUN_006755a6(param_1,param_1,0);
  return;
}



void FUN_0067557b(undefined4 *param_1,int param_2,undefined4 *param_3)

{
  if (param_2 != 0) {
    do {
      if (param_1 != (undefined4 *)0x0) {
        *param_1 = *param_3;
        param_1[1] = param_3[1];
        param_1[2] = param_3[2];
        param_1[3] = param_3[3];
      }
      param_2 = param_2 + -1;
      param_1 = param_1 + 4;
    } while (param_2 != 0);
  }
  return;
}



void __thiscall FUN_006755a6(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *in_EAX;
  
  if (param_1_00 != param_1) {
    do {
      if (in_EAX != (undefined4 *)0x0) {
        *in_EAX = *param_1_00;
        in_EAX[1] = param_1_00[1];
        in_EAX[2] = param_1_00[2];
        in_EAX[3] = param_1_00[3];
      }
      param_1_00 = param_1_00 + 4;
      in_EAX = in_EAX + 4;
    } while (param_1_00 != param_1);
  }
  return;
}



undefined4 * __thiscall FUN_006755c9(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8E975A95::W734273D1::vftable;
  FUN_00ba327a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall
FUN_006755eb(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,byte *param_3)

{
  uint uVar1;
  char cVar2;
  uint uVar3;
  int extraout_EDX;
  int unaff_EDI;
  int iVar4;
  
  cVar2 = FUN_00b9a9d0(param_1_00);
  iVar4 = extraout_EDX;
  if (cVar2 != '\0') {
    for (; iVar4 != 0; iVar4 = iVar4 + -1) {
      uVar1 = *(uint *)(unaff_EDI + 0x400);
      uVar3 = FUN_00675636((*param_3 ^ uVar1) & 0xff);
      param_3 = param_3 + 1;
      *(uint *)(unaff_EDI + 0x400) = uVar3 ^ uVar1 >> 8;
    }
  }
  return;
}



undefined4 __thiscall FUN_00675636(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  
  if (param_1 < 0x100) {
    uVar1 = *(undefined4 *)(param_1_00 + (param_1 & 0xff) * 4);
  }
  else {
    uVar1 = 0;
  }
  return uVar1;
}



uint FUN_0067564f(uint param_1,byte param_2)

{
  uint uVar1;
  byte bVar2;
  uint uVar3;
  
  bVar2 = 0;
  uVar3 = param_1;
  if (param_2 != 0) {
    do {
      uVar1 = 1 << ((param_2 - bVar2) - 1 & 0x1f);
      if ((param_1 & 1) == 0) {
        uVar3 = uVar3 & ~uVar1;
      }
      else {
        uVar3 = uVar3 | uVar1;
      }
      param_1 = param_1 >> 1;
      bVar2 = bVar2 + 1;
    } while (bVar2 < param_2);
  }
  return uVar3;
}



undefined4 __thiscall FUN_00675689(undefined4 param_1_00,byte param_1)

{
  FUN_00b8000a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_006756a5(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c15540;
  if (param_1[2] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = W4E30C5A2::W4D63698D::vftable;
  return puVar1;
}



void FUN_006756d2(char param_1,int param_2)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  bool bVar3;
  undefined local_10 [4];
  undefined local_c [8];
  
  bVar3 = param_1 != '\0';
  if ((bVar3 == true) || (param_2 == 2)) {
    *unaff_EBX = 2;
  }
  else {
    puVar1 = (undefined4 *)FUN_00419e85(param_2);
    puVar2 = (undefined4 *)FUN_00419e85(bVar3);
    FUN_00419eb3(local_c,*puVar2,*puVar1);
    FUN_00419eb3(local_10,bVar3,param_2);
    FUN_0041ba00();
  }
  return;
}



undefined4 __thiscall FUN_00675739(undefined4 param_1,byte param_2)

{
  FUN_00b7fee1();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __fastcall FUN_00675755(undefined4 *param_1)

{
  undefined auStack_8c [20];
  undefined4 uStack_78;
  undefined *puStack_74;
  undefined *puStack_70;
  undefined local_5c [64];
  undefined local_1c [4];
  undefined *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0;
  puStack_70 = (undefined *)0x200;
  puStack_74 = local_5c;
  uStack_78 = 0x675775;
  FUN_00b74200();
  local_18 = auStack_8c;
  local_8._0_1_ = 1;
  FUN_00672a11();
  local_11 = FUN_0067580a(local_5c);
  if (local_11 == '\0') {
    puStack_70 = (undefined *)0x1e2cd2bc;
  }
  else {
    puStack_70 = local_1c;
    puStack_74 = (undefined *)0x6757ac;
    FUN_006749d2();
    local_8._0_1_ = 2;
    puStack_70 = (undefined *)0x6757b6;
    FUN_004fe47e();
    local_8._0_1_ = 1;
    if (local_18 != (undefined *)0x0) {
      puStack_70 = (undefined *)0x6757c6;
      FUN_0040127a();
    }
    puStack_70 = (undefined *)*param_1;
    puStack_74 = (undefined *)0x6757d3;
    FUN_00b81d80();
    if (local_11 != '\0') goto LAB_006757e9;
    puStack_70 = (undefined *)0x37aa47a9;
  }
  puStack_74 = (undefined *)0x6757e8;
  FUN_00b940e0();
LAB_006757e9:
  local_8 = (uint)local_8._1_3_ << 8;
  puStack_70 = (undefined *)0x6757f5;
  FUN_00b73a90();
  local_8 = 0xffffffff;
  puStack_70 = (undefined *)0x675801;
  FUN_00507e58();
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_0067580a(undefined4 param_1,int param_2)

{
  char cVar1;
  int *piVar2;
  bool bVar3;
  undefined4 local_d8 [4];
  undefined *puStack_c8;
  undefined4 *puStack_c4;
  undefined *puStack_c0;
  undefined *puStack_bc;
  undefined local_a8 [40];
  undefined local_80 [8];
  undefined4 local_78;
  undefined4 local_74;
  undefined **local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x98;
  local_8 = 0;
  puStack_bc = (undefined *)0x200;
  puStack_c0 = local_80;
  puStack_c4 = (undefined4 *)0x67582b;
  FUN_00b74200();
  local_8._0_1_ = 1;
  bVar3 = (-(uint)(param_2 != 0) & 0x7a491c) != 0;
  if (bVar3) {
    local_18 = (undefined **)local_d8;
    FUN_00672a11();
    piVar2 = (int *)FUN_00ba6d80(local_a8);
    local_8._0_1_ = 2;
    local_d8[0] = 0;
    local_18 = (undefined **)local_d8;
    cVar1 = (**(code **)(*piVar2 + 4))(local_80);
    puStack_bc = local_a8;
    local_8._0_1_ = 1;
    puStack_c0 = (undefined *)0x675892;
    FUN_0046aa8b();
    if (cVar1 != '\0') {
      local_78 = 0;
      local_74 = 0;
      puStack_bc = (undefined *)0x6758bc;
      puStack_c4 = (undefined4 *)FUN_00b93e40();
      local_18 = &puStack_c0;
      local_8 = CONCAT31(local_8._1_3_,3);
      puStack_c0 = (undefined *)*puStack_c4;
      puStack_c4 = puStack_c4 + 1;
                    // WARNING: Subroutine does not return
      puStack_c8 = &UNK_006758d7;
      FUN_0043c023();
    }
    puStack_bc = (undefined *)0xa9f9032a;
    bVar3 = false;
  }
  else {
    puStack_bc = (undefined *)0x290a0bfe;
  }
  puStack_c0 = (undefined *)0x6758a5;
  FUN_00b940e0();
  local_8 = (uint)local_8._1_3_ << 8;
  puStack_bc = (undefined *)0x67594c;
  FUN_00b73a90();
  local_8 = 0xffffffff;
  puStack_bc = (undefined *)0x675958;
  FUN_00507e58();
  return bVar3;
}



undefined4 FUN_00675960(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_029fc640,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_029fc848,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_029fca50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_029fcc58,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_029fce60,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_029fd068,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_029fd270,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_029fd478,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_029fd680,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_029fd888,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_029fda90,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_029fdc98,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_029fdea0,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((((((cVar1 = (*param_1)(&DAT_029fe0a8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_029fe2b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_029fe4b8,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_029fe6c0,0x200,param_2), cVar1 != '\0')) &&
           (((((cVar1 = (*param_1)(&DAT_029fe8c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_029fead0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_029fecd8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_029feee0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_029ff0e8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_029ff2f0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_029ff4f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_029ff700,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_029ff908,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_029ffb10,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_029ffd18,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_029fff20,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_02a00128,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a00330,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a00538,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02a00740,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a00948,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_02a00b50,0x200,param_2), cVar1 != '\0' &&
           ((((((((cVar1 = (*param_1)(&DAT_02a00d58,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02a00f60,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02a01168,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02a01370,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02a01578,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02a01780,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02a01988,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02a01b90,0x200,param_2), cVar1 != '\0')))))) &&
              ((cVar1 = (*param_1)(&DAT_02a01d98,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_02a01fa0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02a021a8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02a023b0,0x200,param_2), cVar1 != '\0')))))) &&
             ((((cVar1 = (*param_1)(&DAT_02a025b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02a027c0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02a029c8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02a02bd0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02a02dd8,0x200,param_2), cVar1 != '\0')))))) &&
              (cVar1 = (*param_1)(&DAT_02a02fe0,0x200,param_2), cVar1 != '\0')))) &&
            ((((cVar1 = (*param_1)(&DAT_02a031e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a033f0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02a035f8,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02a03800,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a03a08,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02a03c10,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02a03e18,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02a04020,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
        (((cVar1 = (*param_1)(&DAT_02a04228,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_02a04430,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a04638,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a04840,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02a04a48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a04c50,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02a04e58,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02a05060,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a05268,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02a05470,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02a05678,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a05880,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a05a88,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02a05c90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a05e98,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a060a0,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02a062a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a064b0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02a066b8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02a068c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a06ac8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a06cd0,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02a06ed8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a070e0,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02a072e8,0x200,param_2), cVar1 != '\0')))))) &&
     ((((cVar1 = (*param_1)(&DAT_02a074f0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02a076f8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02a07900,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_02a07b08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a07d10,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02a07f18,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02a08120,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a08328,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_02a08530,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_02a08734,0xf,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00675fbe(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_02a08748,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_02a08950,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_02a08b58,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_02a08d60,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_02a08f68,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_02a09170,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_02a09378,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_02a09580,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_02a09788,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_02a09990,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_02a09b98,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_02a09da0,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_02a09fa8,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_02a0a1b0,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_02a0a3b8,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_02a0a5c0,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_02a0a7c8,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_02a0a9d0,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_02a0abd8,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_02a0ade0,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_02a0afe8,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_02a0b1f0,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_02a0b3f8,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_02a0b600,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a0b808,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a0ba10,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a0bc18,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a0be20,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a0c028,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a0c230,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a0c438,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a0c640
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a0c848,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a0ca50,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a0cc58,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a0ce60,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a0d068,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a0d270,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a0d478,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a0d680,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a0d888
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a0da90,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a0dc98,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a0dea0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a0e0a8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a0e2b0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a0e4b8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a0e6c0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a0e8c8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a0ead0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a0ecd8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a0eee0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a0f0e8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a0f2f0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a0f4f8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a0f700,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a0f908,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a0fb10,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a0fd18
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a0ff20,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a10128,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a10330,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a10538,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a10740,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a10948,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a10b50,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a10d58,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a10f60
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a11168,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a11370,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a11578,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a11780,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a11988,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a11b90,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a11d98,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a11fa0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a121a8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a123b0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a125b8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a127c0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a129c8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a12bd0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a12dd8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a12fe0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a131e8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a133f0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a135f8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a13800,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a13a08,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a13c10,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a13e18,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a14020,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a14228,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a14430,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a14638
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a14840,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a14a48,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a14c50,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a14e58,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a15060,0xf6);
                                                          if (cVar1 != '\0') {
                                                            return 1;
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_00676655(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02a15158,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a15360,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a15568,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a15770,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02a15978,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02a15b80,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a15d88,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02a15f90,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02a16198,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a163a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a165a8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02a167b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a169b8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a16bc0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02a16dc8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a16fd0,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02a171d8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02a173e0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a175e8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a177f0,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02a179f8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a17c00,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02a17e08,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02a18010,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a18218,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02a18420,0x200,param_2), cVar1 != '\0' &&
         (((((((cVar1 = (*param_1)(&DAT_02a18628,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a18830,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02a18a38,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02a18c40,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a18e48,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02a19050,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02a19258,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a19460,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02a19668,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02a19870,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a19a78,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a19c80,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02a19e88,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a1a090,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02a1a298,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02a1a4a0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a1a6a8,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_02a1a8b0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02a1aab8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a1acc0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a1aec8,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02a1b0d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a1b2d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02a1b4e0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02a1b6e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a1b8f0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02a1baf8,0x200,param_2), cVar1 != '\0')) &&
       ((((((((cVar1 = (*param_1)(&DAT_02a1bd00,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a1bf08,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a1c110,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02a1c318,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a1c520,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02a1c728,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02a1c930,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a1cb38,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a1cd40,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02a1cf48,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a1d150,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a1d358,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02a1d560,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a1d768,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02a1d970,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02a1db78,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a1dd80,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02a1df88,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02a1e190,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a1e398,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02a1e5a0,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02a1e7a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02a1e9b0,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02a1ebb8,0x200,param_2), cVar1 != '\0' &&
      ((((((cVar1 = (*param_1)(&DAT_02a1edc0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a1efc8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02a1f1d0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02a1f3d8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a1f5e0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a1f7e8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02a1f9f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a1fbf8,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02a1fe00,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02a20008,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02a20210,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_02a20414,0x36,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00676c3e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02a20450,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a20658,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a20860,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a20a68,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02a20c70,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02a20e78,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a21080,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02a21288,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02a21490,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a21698,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a218a0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02a21aa8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a21cb0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a21eb8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02a220c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a222c8,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02a224d0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02a226d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a228e0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a22ae8,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02a22cf0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a22ef8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02a23100,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02a23308,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a23510,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02a23718,0x200,param_2), cVar1 != '\0' &&
         (((((((cVar1 = (*param_1)(&DAT_02a23920,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a23b28,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02a23d30,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02a23f38,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a24140,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02a24348,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02a24550,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a24758,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02a24960,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02a24b68,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a24d70,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a24f78,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02a25180,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a25388,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02a25590,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02a25798,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a259a0,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_02a25ba8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02a25db0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a25fb8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a261c0,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02a263c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a265d0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02a267d8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02a269e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a26be8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02a26df0,0x200,param_2), cVar1 != '\0')) &&
       ((((((((cVar1 = (*param_1)(&DAT_02a26ff8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a27200,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a27408,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02a27610,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a27818,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02a27a20,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02a27c28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a27e30,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a28038,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02a28240,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a28448,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a28650,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02a28858,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a28a60,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02a28c68,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02a28e70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a29078,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02a29280,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02a29488,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a29690,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02a29898,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02a29aa0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02a29ca8,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02a29eb0,0x200,param_2), cVar1 != '\0' &&
      ((((((cVar1 = (*param_1)(&DAT_02a2a0b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a2a2c0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02a2a4c8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02a2a6d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a2a8d8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a2aae0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02a2ace8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a2aef0,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02a2b0f8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02a2b300,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02a2b508,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_02a2b70c,0x3b,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00677225(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_02a2b748,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_02a2b950,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_02a2bb58,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_02a2bd60,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_02a2bf68,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_02a2c170,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_02a2c378,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_02a2c580,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_02a2c788,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_02a2c990,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_02a2cb98,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_02a2cda0,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_02a2cfa8,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_02a2d1b0,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_02a2d3b8,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_02a2d5c0,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_02a2d7c8,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_02a2d9d0,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_02a2dbd8,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_02a2dde0,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_02a2dfe8,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_02a2e1f0,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_02a2e3f8,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_02a2e600,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a2e808,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a2ea10,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a2ec18,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a2ee20,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a2f028,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a2f230,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a2f438,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a2f640
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a2f848,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a2fa50,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a2fc58,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a2fe60,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a30068,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a30270,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a30478,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a30680,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a30888
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a30a90,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a30c98,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a30ea0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a310a8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a312b0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a314b8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a316c0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a318c8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a31ad0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a31cd8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a31ee0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a320e8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a322f0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a324f8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a32700,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a32908,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a32b10,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a32d18
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a32f20,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a33128,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a33330,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a33538,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a33740,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a33948,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a33b50,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a33d58,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a33f60
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a34168,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a34370,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a34578,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a34780,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a34988,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a34b90,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a34d98,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a34fa0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a351a8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a353b0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a355b8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a357c0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a359c8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a35bd0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a35dd8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a35fe0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02a361e8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02a363f0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02a365f8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02a36800,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02a36a08,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02a36c10,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02a36e18,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02a37020,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02a37228,
                                                                                   0x3f);
                                                              if (cVar1 != '\0') {
                                                                return 1;
                                                              }
                                                            }
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}


/*
Unable to decompile 'FUN_00677842'
Cause: Exception while decompiling 00677842: process: timeout

*/


undefined4 FUN_00679292(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02a698c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a69ad0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02a69cd8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a69ee0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a6a0e8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02a6a2f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a6a4f8,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02a6a700,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02a6a908,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a6ab10,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a6ad18,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02a6af20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a6b128,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02a6b330,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02a6b538,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02a6b740,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02a6b948,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02a6bb50,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a6bd58,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a6bf60,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02a6c168,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a6c370,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a6c578,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02a6c780,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a6c988,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02a6cb90,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02a6cd98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a6cfa0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a6d1a8,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02a6d3b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02a6d5b8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02a6d7c0,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02a6d9c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a6dbd0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a6ddd8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02a6dfe0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a6e1e8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02a6e3f0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02a6e5f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a6e800,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_02a6ea08,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_02a6ec10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a6ee18,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02a6f020,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02a6f228,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a6f430,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a6f638,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02a6f840,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a6fa48,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a6fc50,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02a6fe58,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02a70060,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02a70268,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02a70470,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a70678,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a70880,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02a70a88,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a70c90,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02a70e98,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02a710a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a712a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02a714b0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02a716b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a718c0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a71ac8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02a71cd0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a71ed8,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02a720e0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02a722e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a724f0,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02a726f8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02a72900,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a72b08,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02a72d10,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02a72f18,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a73120,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a73328,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02a73530,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a73738,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02a73940,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02a73b48,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a73d50,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a73f58,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02a74160,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a74368,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02a74570,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02a74778,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a74980,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02a74b88,0x200,param_2), cVar1 != '\0' &&
             ((((((cVar1 = (*param_1)(&DAT_02a74d90,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02a74f98,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02a751a0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02a753a8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02a755b0,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02a757b8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02a759c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a75bc8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02a75dd0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02a75fd8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a761e0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02a763e8,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((((cVar1 = (*param_1)(&DAT_02a765f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a767f8,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02a76a00,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02a76c08,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a76e10,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02a77018,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02a77220,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a77428,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a77630,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02a77838,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a77a40,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02a77c48,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02a77e50,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a78058,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (cVar1 = (*param_1)(&DAT_02a78260,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02a78468,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a78670,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a78878,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02a78a80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a78c88,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02a78e90,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02a79098,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a792a0,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02a794a8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02a796b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a798b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a79ac0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02a79cc8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a79ed0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02a7a0d8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02a7a2e0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a7a4e8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02a7a6f0,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02a7a8f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a7ab00,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a7ad08,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02a7af10,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a7b118,0xa9,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00679bce(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02a7b1c8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02a7b3d0,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02a7b5d8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02a7b7e0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02a7b9e8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02a7bbf0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a7bdf8,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02a7c000,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02a7c208,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a7c410,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a7c618,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02a7c820,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a7ca28,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02a7cc30,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02a7ce38,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a7d040,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02a7d248,0x200,param_2), cVar1 != '\0')))))) &&
        ((((((((cVar1 = (*param_1)(&DAT_02a7d450,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a7d658,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02a7d860,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02a7da68,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a7dc70,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02a7de78,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02a7e080,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a7e288,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02a7e490,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02a7e698,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a7e8a0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a7eaa8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02a7ecb0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a7eeb8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02a7f0c0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02a7f2c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a7f4d0,0x200,param_2), cVar1 != '\0')))))))))) &&
         ((cVar1 = (*param_1)(&DAT_02a7f6d8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02a7f8e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a7fae8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a7fcf0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a7fef8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a80100,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_02a80308,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02a80510,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a80718,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02a80920,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02a80b28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a80d30,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a80f38,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a81140,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a81348,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02a81550,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((((((cVar1 = (*param_1)(&DAT_02a81758,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a81960,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a81b68,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02a81d70,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a81f78,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a82180,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_02a82388,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a82590,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02a82798,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02a829a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a82ba8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02a82db0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02a82fb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a831c0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a833c8,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02a835d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a837d8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02a839e0,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02a83be8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02a83df0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02a83ff8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02a84200,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a84408,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a84610,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02a84818,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a84a20,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((((cVar1 = (*param_1)(&DAT_02a84c28,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02a84e30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a85038,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02a85240,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02a85448,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a85650,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a85858,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_02a85a60,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a85c68,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a85e70,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a86078,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a86280,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02a86488,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02a86690,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a86898,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02a86aa0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02a86ca8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a86eb0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02a870b8,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_02a872c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a874c8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a876d0,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02a878d8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a87ae0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02a87ce8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02a87ef0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a880f8,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02a88300,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02a88508,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a88710,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_02a88918,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02a88b20,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a88d28,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02a88f30,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02a89138,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a89340,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a89548,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02a89750,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a89958,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02a89b60,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02a89d68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a89f70,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a8a178,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02a8a380,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a8a588,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02a8a790,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02a8a998,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a8aba0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a8ada8,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_02a8afb0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02a8b1b8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02a8b3c0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02a8b5c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a8b7d0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02a8b9d8,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_02a8bbe0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a8bde8,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02a8bff0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02a8c1f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a8c400,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02a8c608,0xa9,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0067a4e8(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02a8c6b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a8c8c0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02a8cac8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a8ccd0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a8ced8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02a8d0e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a8d2e8,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02a8d4f0,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_02a8d6f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a8d900,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a8db08,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02a8dd10,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a8df18,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02a8e120,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02a8e328,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a8e530,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02a8e738,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02a8e940,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a8eb48,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02a8ed50,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02a8ef58,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a8f160,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a8f368,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02a8f570,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a8f778,0x200,param_2), cVar1 != '\0')))))))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02a8f980,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02a8fb88,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a8fd90,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a8ff98,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02a901a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a903a8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02a905b0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02a907b8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a909c0,0x200,param_2), cVar1 != '\0')))))))))) &&
          (cVar1 = (*param_1)(&DAT_02a90bc8,0x200,param_2), cVar1 != '\0')) &&
         (((((((cVar1 = (*param_1)(&DAT_02a90dd0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a90fd8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02a911e0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02a913e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a915f0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02a917f8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a91a00,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a91c08,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02a91e10,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02a92018,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a92220,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a92428,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02a92630,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a92838,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02a92a40,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_02a92c48,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a92e50,0x200,param_2), cVar1 != '\0')) &&
           ((((((cVar1 = (*param_1)(&DAT_02a93058,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02a93260,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02a93468,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02a93670,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02a93878,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02a93a80,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02a93c88,0x200,param_2), cVar1 != '\0')) &&
             (((((cVar1 = (*param_1)(&DAT_02a93e90,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02a94098,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02a942a0,0x200,param_2), cVar1 != '\0' &&
                 ((((cVar1 = (*param_1)(&DAT_02a944a8,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02a946b0,0x200,param_2), cVar1 != '\0')) &&
                   (cVar1 = (*param_1)(&DAT_02a948b8,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_02a94ac0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02a94cc8,0x200,param_2), cVar1 != '\0')))))))) &&
               (cVar1 = (*param_1)(&DAT_02a94ed0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02a950d8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a952e0,0x200,param_2), cVar1 != '\0')))))) &&
            (((cVar1 = (*param_1)(&DAT_02a954e8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02a956f0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02a958f8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02a95b00,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02a95d08,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a95f10,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02a96118,0x200,param_2), cVar1 != '\0')))))))) &&
          (((cVar1 = (*param_1)(&DAT_02a96320,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a96528,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02a96730,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02a96938,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02a96b40,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02a96d48,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02a96f50,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a97158,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02a97360,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02a97568,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a97770,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02a97978,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02a97b80,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02a97d88,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02a97f90,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02a98198,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a983a0,0x200,param_2), cVar1 != '\0')))))))))) &&
          (cVar1 = (*param_1)(&DAT_02a985a8,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02a987b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a989b8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02a98bc0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02a98dc8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02a98fd0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02a991d8,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02a993e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a995e8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02a997f0,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_02a999f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02a99c00,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02a99e08,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02a9a010,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a9a218,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02a9a420,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02a9a628,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a9a830,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02a9aa38,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02a9ac40,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a9ae48,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02a9b050,0x200,param_2), cVar1 != '\0' &&
             ((((((cVar1 = (*param_1)(&DAT_02a9b258,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02a9b460,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02a9b668,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02a9b870,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02a9ba78,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02a9bc80,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02a9be88,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02a9c090,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02a9c298,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_02a9c4a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a9c6a8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02a9c8b0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02a9cab8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a9ccc0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02a9cec8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02a9d0d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02a9d2d8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02a9d4e0,0x200,param_2), cVar1 != '\0')))))))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02a9d6e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a9d8f0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02a9daf8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02a9dd00,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a9df08,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02a9e110,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02a9e318,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a9e520,0x200,param_2), cVar1 != '\0')))))))) &&
       (cVar1 = (*param_1)(&DAT_02a9e728,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02a9e930,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02a9eb38,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02a9ed40,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02a9ef48,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02a9f150,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02a9f358,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02a9f560,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a9f768,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02a9f970,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02a9fb78,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02a9fd80,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02a9ff88,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02aa0190,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02aa0394,0x29,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0067af56(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_02aa03c0,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_02aa05c8,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_02aa07d0,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_02aa09d8,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_02aa0be0,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_02aa0de8,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_02aa0ff0,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_02aa11f8,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_02aa1400,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_02aa1608,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_02aa1810,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_02aa1a18,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_02aa1c20,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_02aa1e28,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_02aa2030,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_02aa2238,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_02aa2440,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_02aa2648,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_02aa2850,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_02aa2a58,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_02aa2c60,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_02aa2e68,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_02aa3070,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_02aa3278,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aa3480,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aa3688,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aa3890,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aa3a98,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aa3ca0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aa3ea8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aa40b0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aa42b8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aa44c0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aa46c8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aa48d0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aa4ad8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aa4ce0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aa4ee8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aa50f0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aa52f8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aa5500
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aa5708,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aa5910,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aa5b18,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aa5d20,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aa5f28,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aa6130,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aa6338,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aa6540,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aa6748
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aa6950,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aa6b58,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aa6d60,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aa6f68,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aa7170,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aa7378,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aa7580,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aa7788,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aa7990
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aa7b98,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aa7da0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aa7fa8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aa81b0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aa83b8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aa85c0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aa87c8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aa89d0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aa8bd8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aa8de0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aa8fe8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aa91f0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aa93f8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aa9600,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aa9808,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aa9a10,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aa9c18,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aa9e20
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aaa028,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aaa230,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aaa438,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aaa640,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aaa848,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aaaa50,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aaac58,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aaae60,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aab068
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aab270,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aab478,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aab680,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aab888,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aaba90,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aabc98,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aabea0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aac0a8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aac2b0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aac4b8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aac6c0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aac8c8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aacad0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aaccd8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aacee0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aad0e8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aad2f0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aad4f8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aad700,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aad908,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aadb10,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aadd18,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aadf20,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aae128,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aae330,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aae538,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aae740
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aae948,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aaeb50,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aaed58,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aaef60,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aaf168,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aaf370,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aaf578,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aaf780,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aaf988
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aafb90,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aafd98,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aaffa0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ab01a8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ab03b0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ab05b8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ab07c0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ab09c8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ab0bd0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ab0dd8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ab0fe0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ab11e8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ab13f0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ab15f8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ab1800,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ab1a08,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ab1c10,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ab1e18
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ab2020,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ab2228,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ab2430,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ab2638,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ab2840,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ab2a48,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ab2c50,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ab2e58,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ab3060
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ab3268,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ab3470,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ab3678,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ab3880,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ab3a88,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ab3c90,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ab3e98,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ab40a0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ab42a8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ab44b0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ab46b8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ab48c0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ab4ac8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ab4cd0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ab4ed8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ab50e0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ab52e8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ab54f0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ab56f8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ab5900,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ab5b08,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ab5d10,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ab5f18,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ab6120,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ab6328,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ab6530,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ab6738
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ab6940,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ab6b48,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ab6d50,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ab6f58,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ab7160,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ab7368,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ab7570,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ab7778,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ab7980
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ab7b88,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ab7d90,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ab7f98,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ab81a0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ab83a8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ab85b0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ab87b8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ab89c0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ab8bc8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ab8dd0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ab8fd8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ab91e0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ab93e8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ab95f0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ab97f8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ab9a00,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ab9c08,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ab9e10
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aba018,0x199);
                                                  if (cVar1 != '\0') {
                                                    return 1;
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_0067bcd7(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_02aba1b8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02aba3c0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02aba5c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02aba7d0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02aba9d8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02ababe0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02abade8,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02abaff0,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02abb1f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02abb400,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02abb608,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02abb810,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02abba18,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02abbc20,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02abbe28,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02abc030,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02abc238,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_02abc440,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02abc648,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02abc850,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02abca58,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02abcc60,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02abce68,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02abd070,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02abd278,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02abd480,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_02abd688,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02abd890,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02abda98,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02abdca0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02abdea8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02abe0b0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02abe2b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02abe4c0,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02abe6c8,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02abe8d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02abead8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02abece0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02abeee8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02abf0f0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02abf2f8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02abf500,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02abf708,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02abf910,0x200,param_2), cVar1 != '\0')))))) &&
       (((((((cVar1 = (*param_1)(&DAT_02abfb18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02abfd20,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02abff28,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ac0130,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ac0338,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02ac0540,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02ac0748,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ac0950,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ac0b58,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02ac0d60,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ac0f68,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ac1170,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02ac1378,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ac1580,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02ac1788,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02ac1990,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ac1b98,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ac1da0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02ac1fa8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ac21b0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02ac23b8,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*param_1)(&DAT_02ac25c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ac27c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ac29d0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02ac2bd8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ac2de0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ac2fe8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02ac31f0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ac33f8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ac3600,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02ac3808,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ac3a10,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02ac3c18,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02ac3e20,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ac4028,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02ac4230,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02ac4438,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ac4640,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02ac4848,0x200,param_2), cVar1 != '\0')))) &&
           (((((cVar1 = (*param_1)(&DAT_02ac4a50,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ac4c58,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ac4e60,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02ac5068,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ac5270,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02ac5478,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02ac5680,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ac5888,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ac5a90,0x200,param_2), cVar1 != '\0')))))))))) &&
         (((cVar1 = (*param_1)(&DAT_02ac5c98,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ac5ea0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ac60a8,0x200,param_2), cVar1 != '\0')))))) &&
       ((((((((((cVar1 = (*param_1)(&DAT_02ac62b0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ac64b8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02ac66c0,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02ac68c8,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02ac6ad0,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02ac6cd8,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02ac6ee0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02ac70e8,0x200,param_2), cVar1 != '\0')))))))) &&
              ((cVar1 = (*param_1)(&DAT_02ac72f0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02ac74f8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ac7700,0x200,param_2), cVar1 != '\0')))))) &&
             ((((((cVar1 = (*param_1)(&DAT_02ac7908,0x200,param_2), cVar1 != '\0' &&
                  (((cVar1 = (*param_1)(&DAT_02ac7b10,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02ac7d18,0x200,param_2), cVar1 != '\0')) &&
                   (cVar1 = (*param_1)(&DAT_02ac7f20,0x200,param_2), cVar1 != '\0')))) &&
                 (((cVar1 = (*param_1)(&DAT_02ac8128,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02ac8330,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02ac8538,0x200,param_2), cVar1 != '\0')))) &&
                ((cVar1 = (*param_1)(&DAT_02ac8740,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02ac8948,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02ac8b50,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02ac8d58,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02ac8f60,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02ac9168,0x200,param_2), cVar1 != '\0')))))) &&
              ((cVar1 = (*param_1)(&DAT_02ac9370,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ac9578,0x200,param_2), cVar1 != '\0')))))) &&
            (cVar1 = (*param_1)(&DAT_02ac9780,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02ac9988,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ac9b90,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02ac9d98,0x200,param_2), cVar1 != '\0' &&
             ((((((cVar1 = (*param_1)(&DAT_02ac9fa0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02aca1a8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02aca3b0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02aca5b8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02aca7c0,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02aca9c8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02acabd0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02acadd8,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_02acafe0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02acb1e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02acb3f0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02acb5f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02acb800,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02acba08,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*param_1)(&DAT_02acbc10,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02acbe18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02acc020,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02acc228,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02acc430,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02acc638,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02acc840,0x200,param_2), cVar1 != '\0')))))) &&
        ((((((cVar1 = (*param_1)(&DAT_02acca48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02accc50,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02acce58,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02acd060,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02acd268,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02acd470,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_02acd678,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02acd880,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02acda88,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02acdc90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02acde98,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02ace0a0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02ace2a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ace4b0,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02ace6b8,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02ace8c0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02aceac8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02aceccc,0x3d,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0067c7b9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02aced10,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02acef18,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02acf120,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02acf328,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02acf530,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02acf738,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02acf940,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_02acfb48,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02acfd50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02acff58,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ad0160,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ad0368,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ad0570,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02ad0778,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02ad0980,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ad0b88,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_02ad0d90,0x200,param_2), cVar1 != '\0')) &&
      (((((((cVar1 = (*param_1)(&DAT_02ad0f98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ad11a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ad13a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ad15b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ad17b8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02ad19c0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02ad1bc8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ad1dd0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02ad1fd8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02ad21e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ad23e8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02ad25f0,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02ad27f8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ad2a00,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ad2c08,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02ad2e10,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ad3018,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02ad3220,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02ad3428,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ad3630,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ad3838,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ad3a40,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ad3c48,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02ad3e50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ad4058,0x95,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0067caa8(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_02ad4170,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_02ad4378,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_02ad4580,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_02ad4788,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_02ad4990,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_02ad4b98,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_02ad4da0,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_02ad4fa8,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_02ad51b0,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_02ad53b8,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_02ad55c0,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_02ad57c8,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_02ad59d0,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_02ad5bd8,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_02ad5de0,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_02ad5fe8,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_02ad61f0,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_02ad63f8,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_02ad6600,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_02ad6808,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_02ad6a10,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_02ad6c18,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_02ad6e20,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_02ad7028,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ad7230,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ad7438,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ad7640,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ad7848,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ad7a50,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ad7c58,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ad7e60,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ad8068
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ad8270,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ad8478,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ad8680,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ad8888,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ad8a90,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ad8c98,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ad8ea0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ad90a8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ad92b0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ad94b8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ad96c0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ad98c8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ad9ad0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ad9cd8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ad9ee0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ada0e8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ada2f0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ada4f8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ada700,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ada908,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02adab10,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02adad18,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02adaf20,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02adb128,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02adb330,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02adb538,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02adb740
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02adb948,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02adbb50,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02adbd58,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02adbf60,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02adc168,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02adc370,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02adc578,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02adc780,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02adc988
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02adcb90,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02adcd98,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02adcfa0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02add1a8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02add3b0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02add5b8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02add7c0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02add9c8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02addbd0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02adddd8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02addfe0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ade1e8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ade3f0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ade5f8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ade800,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02adea08,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02adec10,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02adee18
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02adf020,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02adf228,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02adf430,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02adf638,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02adf840,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02adfa48,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02adfc50,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02adfe58,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ae0060
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ae0268,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ae0470,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ae0678,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ae0880,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ae0a88,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ae0c90,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ae0e98,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ae10a0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ae12a8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ae14b0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ae16b8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ae18c0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ae1ac8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ae1cd0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ae1ed8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ae20e0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ae22e8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ae24f0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ae26f8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ae2900,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ae2b08,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ae2d10,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ae2f18,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ae3120,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ae3328,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ae3530,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ae3738
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ae3940,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ae3b48,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ae3d50,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ae3f58,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ae4160,0x15c);
                                                          if (cVar1 != '\0') {
                                                            return 1;
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_0067d30a(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_02ae42c0,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_02ae44c8,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_02ae46d0,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_02ae48d8,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_02ae4ae0,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_02ae4ce8,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_02ae4ef0,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_02ae50f8,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_02ae5300,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_02ae5508,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_02ae5710,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_02ae5918,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_02ae5b20,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_02ae5d28,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_02ae5f30,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_02ae6138,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_02ae6340,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_02ae6548,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_02ae6750,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_02ae6958,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_02ae6b60,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_02ae6d68,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_02ae6f70,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_02ae7178,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ae7380,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ae7588,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ae7790,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ae7998,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ae7ba0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ae7da8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ae7fb0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ae81b8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ae83c0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ae85c8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ae87d0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ae89d8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ae8be0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02ae8de8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02ae8ff0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02ae91f8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02ae9400
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02ae9608,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02ae9810,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02ae9a18,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02ae9c20,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02ae9e28,0x197);
                                                          if (cVar1 != '\0') {
                                                            return 1;
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_0067d60b(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_02ae9fc0,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_02aea1c8,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_02aea3d0,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_02aea5d8,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_02aea7e0,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_02aea9e8,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_02aeabf0,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_02aeadf8,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_02aeb000,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_02aeb208,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_02aeb410,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_02aeb618,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_02aeb820,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_02aeba28,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_02aebc30,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_02aebe38,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_02aec040,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_02aec248,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_02aec450,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_02aec658,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_02aec860,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_02aeca68,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_02aecc70,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_02aece78,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aed080,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aed288,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aed490,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aed698,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aed8a0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aedaa8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aedcb0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aedeb8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aee0c0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aee2c8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aee4d0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aee6d8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aee8e0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aeeae8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aeecf0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aeeef8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aef100
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aef308,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aef510,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aef718,0x15a);
                                                      if (cVar1 != '\0') {
                                                        return 1;
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_0067d8ea(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_02aef878,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_02aea1c8,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_02aea3d0,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_02aea5d8,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_02aea7e0,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_02aea9e8,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_02aeabf0,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_02aeadf8,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_02aeb000,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_02aeb208,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_02aeb410,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_02aeb618,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_02aeb820,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_02aeba28,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_02aebc30,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_02aebe38,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_02aec040,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_02aec248,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_02aec450,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_02aec658,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_02aec860,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_02aeca68,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_02aecc70,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_02aece78,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aed080,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aed288,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aed490,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aed698,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aed8a0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aedaa8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aedcb0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aedeb8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02aee0c0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02aee2c8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02aee4d0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aee6d8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aee8e0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aeeae8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aefa80,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aefc88,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02aefe90
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02af0098,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02af02a0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02af04a8,0x15c);
                                                      if (cVar1 != '\0') {
                                                        return 1;
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_0067dbc9(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_02af0608,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_02af0810,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_02af0a18,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_02af0c20,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_02af0e28,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_02af1030,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_02af1238,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_02af1440,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_02af1648,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_02af1850,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_02af1a58,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_02af1c60,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_02af1e68,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_02af2070,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_02af2278,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_02af2480,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_02af2688,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_02af2890,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_02af2a98,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_02af2ca0,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_02af2ea8,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_02af30b0,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_02af32b8,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_02af34c0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02af36c8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02af38d0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02af3ad8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02af3ce0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02af3ee8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02af40f0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02af42f8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02af4500
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02af4708,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02af4910,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02af4b18,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02af4d20,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02af4f28,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02af5130,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02af5338,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02af5540,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02af5748
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02af5950,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02af5b58,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02af5d60,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02af5f68,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02af6170,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02af6378,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02af6580,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02af6788,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02af6990
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02af6b98,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02af6da0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02af6fa8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02af71b0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02af73b8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02af75c0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02af77c8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02af79d0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02af7bd8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02af7de0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02af7fe8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02af81f0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02af83f8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02af8600,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02af8808,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02af8a10,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02af8c18,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02af8e20
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02af9028,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02af9230,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02af9438,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02af9640,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02af9848,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02af9a50,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02af9c58,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02af9e60,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02afa068
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02afa270,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02afa478,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02afa680,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02afa888,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02afaa90,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02afac98,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02afaea0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02afb0a8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02afb2b0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02afb4b8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02afb6c0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02afb8c8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02afbad0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02afbcd8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02afbee0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02afc0e8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02afc2f0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02afc4f8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02afc700,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02afc908,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02afcb10,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02afcd18,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02afcf20,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02afd128,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02afd330,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02afd538,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02afd740
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02afd948,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02afdb50,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02afdd58,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02afdf60,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02afe168,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02afe370,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02afe578,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02afe780,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02afe988
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02afeb90,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02afed98,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02afefa0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02aff1a8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02aff3b0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02aff5b8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02aff7c0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02aff9c8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02affbd0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02affdd8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02afffe0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b001e8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b003f0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b005f8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b00800,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b00a08,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b00c10,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b00e18
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b01020,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b01228,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b01430,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b01638,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b01840,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b01a48,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b01c50,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b01e58,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b02060
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b02268,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b02470,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b02678,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b02880,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b02a88,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b02c90,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b02e98,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b030a0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b032a8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b034b0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b036b8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b038c0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b03ac8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b03cd0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b03ed8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b040e0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b042e8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b044f0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b046f8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b04900,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b04b08,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b04d10,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b04f18,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b05120,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b05328,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b05530,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b05738
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b05940,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b05b44,0x17);
                                                    if (cVar1 != '\0') {
                                                      return 1;
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_0067e6f2(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((((param_1 != (code *)0x0) &&
              (cVar1 = (*param_1)(&DAT_02b05b60,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b05d68,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b05f70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b06178,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02b06380,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b06588,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b06790,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02b06998,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02b06ba0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b06da8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b06fb0,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02b071b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b073c0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02b075c8,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02b077d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b079d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02b07be0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02b07de8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b07ff0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b081f8,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02b08400,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b08608,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02b08810,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02b08a18,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b08c20,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02b08e28,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02b09030,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b09238,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b09440,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b09648,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b09850,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((cVar1 = (*param_1)(&DAT_02b09a58,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02b09c60,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b09e68,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02b0a070,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02b0a278,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b0a480,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b0a688,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02b0a890,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b0aa98,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b0aca0,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((((cVar1 = (*param_1)(&DAT_02b0aea8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b0b0b0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02b0b2b8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02b0b4c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b0b6c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b0b8d0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02b0bad8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b0bce0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b0bee8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02b0c0f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b0c2f8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02b0c500,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02b0c708,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b0c910,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02b0cb18,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02b0cd20,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b0cf28,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_02b0d130,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_02b0d338,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b0d540,0x200,param_2), cVar1 != '\0')) &&
        (((((((cVar1 = (*param_1)(&DAT_02b0d748,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02b0d950,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b0db58,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b0dd60,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02b0df68,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b0e170,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02b0e378,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02b0e580,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b0e788,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02b0e990,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02b0eb98,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b0eda0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b0efa8,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02b0f1b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b0f3b8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02b0f5c0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02b0f7c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b0f9d0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b0fbd8,0x200,param_2), cVar1 != '\0' &&
           (((((cVar1 = (*param_1)(&DAT_02b0fde0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b0ffe8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02b101f0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02b103f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b10600,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02b10808,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((((((cVar1 = (*param_1)(&DAT_02b10a10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b10c18,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b10e20,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02b11028,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b11230,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02b11438,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02b11640,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b11848,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02b11a50,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02b11c58,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b11e60,0x200,param_2), cVar1 != '\0')))))))))))) &&
          (cVar1 = (*param_1)(&DAT_02b12068,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02b12270,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b12478,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02b12680,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02b12888,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b12a90,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_02b12c98,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02b12ea0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b130a8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02b132b0,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_02b134b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b136c0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b138c8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02b13ad0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b13cd8,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02b13ee0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02b140e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b142f0,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02b144f8,0x200,param_2), cVar1 != '\0' &&
            (((((((cVar1 = (*param_1)(&DAT_02b14700,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02b14908,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02b14b10,0x200,param_2), cVar1 != '\0')) &&
                (((cVar1 = (*param_1)(&DAT_02b14d18,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02b14f20,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02b15128,0x200,param_2), cVar1 != '\0' &&
                  ((cVar1 = (*param_1)(&DAT_02b15330,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02b15538,0x200,param_2), cVar1 != '\0')))))))) &&
               (cVar1 = (*param_1)(&DAT_02b15740,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02b15948,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b15b50,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b15d58,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02b15f60,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b16168,0x200,param_2), cVar1 != '\0')))))))))) &&
         (((cVar1 = (*param_1)(&DAT_02b16370,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02b16578,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b16780,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02b16988,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02b16b90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b16d98,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b16fa0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b171a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b173b0,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02b175b8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02b177c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b179c8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02b17bd0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02b17dd8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b17fe0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b181e8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02b183f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b185f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b18800,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02b18a08,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b18c10,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02b18e18,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02b19020,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b19228,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b19430,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02b19638,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b19840,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02b19a48,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02b19c50,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b19e58,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02b1a060,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02b1a268,0x121,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0067f1b5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_02b1a390,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02aea1c8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02aea3d0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02aea5d8,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02aea7e0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02aea9e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02aeabf0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02aeadf8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02aeb000,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02aeb208,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02aeb410,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02aeb618,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02aeb820,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02aeba28,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02aebc30,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02aebe38,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_02aec040,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02aec248,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02aec450,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02aec658,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02aec860,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b1a598,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02b1a7a0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02b1a9a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b1abb0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02b1adb8,0x200,param_2), cVar1 != '\0')))) &&
       ((((((cVar1 = (*param_1)(&DAT_02b1afc0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b1b1c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b1b3d0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b1b5d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b1b7e0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02b1b9e8,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02b1bbf0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b1bdf8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b1c000,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02b1c208,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b1c410,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b1c618,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02b1c820,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b1ca28,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_02b1cc30,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02b1ce38,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b1d040,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02b1d248,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b1d450,0xef,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0067f4b3(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_02b1d540,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02aea1c8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02aea3d0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02aea5d8,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02aea7e0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02aea9e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02aeabf0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02aeadf8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02aeb000,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02aeb208,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02aeb410,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02aeb618,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02aeb820,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02aeba28,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02aebc30,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02aebe38,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_02aec040,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02aec248,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02aec450,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02aec658,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02aec860,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b1a598,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02b1a7a0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02b1a9a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b1abb0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02b1adb8,0x200,param_2), cVar1 != '\0')))) &&
       ((((((cVar1 = (*param_1)(&DAT_02b1afc0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b1b1c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b1b3d0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b1b5d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b1b7e0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02b1b9e8,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02b1bbf0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b1bdf8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b1c000,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02b1c208,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b1c410,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b1c618,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02b1d748,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b1d950,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_02b1db58,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02b1dd60,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b1df68,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02b1e170,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b1e378,0xec,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0067f7b3(void)

{
  char cVar1;
  code *unaff_EDI;
  
  if (unaff_EDI != (code *)0x0) {
    cVar1 = (*unaff_EDI)(&DAT_02b1e878,0x200);
    if (cVar1 != '\0') {
      cVar1 = (*unaff_EDI)(&DAT_02b1ea80,0x200);
      if (cVar1 != '\0') {
        cVar1 = (*unaff_EDI)(&DAT_02b1ec88,0x200);
        if (cVar1 != '\0') {
          cVar1 = (*unaff_EDI)(&DAT_02b1ee90,0x200);
          if (cVar1 != '\0') {
            cVar1 = (*unaff_EDI)(&DAT_02b1f098,0x200);
            if (cVar1 != '\0') {
              cVar1 = (*unaff_EDI)(&DAT_02b1f2a0,0x200);
              if (cVar1 != '\0') {
                cVar1 = (*unaff_EDI)(&DAT_02b1f4a8,0x200);
                if (cVar1 != '\0') {
                  cVar1 = (*unaff_EDI)(&DAT_02b1f6b0,0x200);
                  if (cVar1 != '\0') {
                    cVar1 = (*unaff_EDI)(&DAT_02b1f8b8,0x200);
                    if (cVar1 != '\0') {
                      cVar1 = (*unaff_EDI)(&DAT_02b1e468,0x200);
                      if (cVar1 != '\0') {
                        cVar1 = (*unaff_EDI)(&DAT_02b1fac0,0x200);
                        if (cVar1 != '\0') {
                          cVar1 = (*unaff_EDI)(&DAT_02b1e670,0x200);
                          if (cVar1 != '\0') {
                            cVar1 = (*unaff_EDI)(&DAT_02b1fcc8,0x200);
                            if (cVar1 != '\0') {
                              cVar1 = (*unaff_EDI)(&DAT_02b1fed0,0x200);
                              if (cVar1 != '\0') {
                                cVar1 = (*unaff_EDI)(&DAT_02b200d8,0x200);
                                if (cVar1 != '\0') {
                                  cVar1 = (*unaff_EDI)(&DAT_02b202e0,0x200);
                                  if (cVar1 != '\0') {
                                    cVar1 = (*unaff_EDI)(&DAT_02b204e8,0x200);
                                    if (cVar1 != '\0') {
                                      cVar1 = (*unaff_EDI)(&DAT_02b206f0,0x200);
                                      if (cVar1 != '\0') {
                                        cVar1 = (*unaff_EDI)(&DAT_02b208f8,0x200);
                                        if (cVar1 != '\0') {
                                          cVar1 = (*unaff_EDI)(&DAT_02b20b00,0x200);
                                          if (cVar1 != '\0') {
                                            cVar1 = (*unaff_EDI)(&DAT_02b20d08,0x200);
                                            if (cVar1 != '\0') {
                                              cVar1 = (*unaff_EDI)(&DAT_02b20f10,0x200);
                                              if (cVar1 != '\0') {
                                                cVar1 = (*unaff_EDI)(&DAT_02b21118,0x200);
                                                if (cVar1 != '\0') {
                                                  cVar1 = (*unaff_EDI)(&DAT_02b21320,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b21528,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b21730,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b21938,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b21b40,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b21d48,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b21f50,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b22158,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b22360
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b22568,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b22770,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b22978,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b22b80,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b22d88,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b22f90,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b23198,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b233a0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b235a8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b237b0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b239b8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b23bc0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b23dc8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b23fd0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b241d8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b243e0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b245e8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b247f0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b249f8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b24c00,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b24e08,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b25010,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b25218,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b25420,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b25628,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b25830,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b25a38
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b25c40,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b25e48,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b26050,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b26258,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b26460,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b26668,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b26870,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b26a78,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b26c80
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b26e88,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b27090,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b27298,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b274a0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b276a8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b278b0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b27ab8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b27cc0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b27ec8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b280d0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b282d8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b284e0,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b286e8,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b288f0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b28af8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b28d00,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b28f08,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b29110
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b29318,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b29520,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b29728,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b29930,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b29b38,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b29d40,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b29f48,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b2a150,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b2a358
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b2a560,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b2a768,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b2a970,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b2ab78,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b2ad80,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b2af88,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b2b190,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b2b398,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b2b5a0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b2b7a8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b2b9b0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b2bbb8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b2bdc0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b2bfc8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b2c1d0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b2c3d8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b2c5e0,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b2c7e8
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b2c9f0,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b2cbf8,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b2ce00,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b2d008,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b2d210,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b2d418,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b2d620,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b2d828,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b2da30
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b2dc38,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b2de40,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b2e048,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b2e250,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b2e458,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b2e660,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b2e868,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b2ea70,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b2ec78
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b2ee80,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b2f088,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b2f290,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b2f498,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b2f6a0,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b2f8a8,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b2fab0,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b2fcb8,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b2fec0
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b300c8,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b302d0,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b304d8,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b306e0,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b308e8,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b30af0,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b30cf8,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b30f00,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b31108
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b31310,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b31518,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b31720,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b31928,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b31b30,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b31d38,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b31f40,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b32148,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b32350
                                                                                       ,0x200);
                                                                  if (cVar1 != '\0') {
                                                                    cVar1 = (*unaff_EDI)(&
                                                  DAT_02b32558,0x200);
                                                  if (cVar1 != '\0') {
                                                    cVar1 = (*unaff_EDI)(&DAT_02b32760,0x200);
                                                    if (cVar1 != '\0') {
                                                      cVar1 = (*unaff_EDI)(&DAT_02b32968,0x200);
                                                      if (cVar1 != '\0') {
                                                        cVar1 = (*unaff_EDI)(&DAT_02b32b70,0x200);
                                                        if (cVar1 != '\0') {
                                                          cVar1 = (*unaff_EDI)(&DAT_02b32d78,0x200);
                                                          if (cVar1 != '\0') {
                                                            cVar1 = (*unaff_EDI)(&DAT_02b32f80,0x200
                                                                                );
                                                            if (cVar1 != '\0') {
                                                              cVar1 = (*unaff_EDI)(&DAT_02b33188,
                                                                                   0x200);
                                                              if (cVar1 != '\0') {
                                                                cVar1 = (*unaff_EDI)(&DAT_02b33390,
                                                                                     0x200);
                                                                if (cVar1 != '\0') {
                                                                  cVar1 = (*unaff_EDI)(&DAT_02b33598
                                                                                       ,0x13a);
                                                                  if (cVar1 != '\0') {
                                                                    return 1;
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_00680308(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02b33830,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b33a38,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b33c40,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b33e48,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02b34050,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02b34258,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b34460,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02b34668,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02b34870,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b34a78,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02b34c80,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02b34e88,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b35090,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02b35298,0x200,param_2), cVar1 != '\0')))) &&
      (((((((cVar1 = (*param_1)(&DAT_02b354a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b356a8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b358b0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02b35ab8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b35cc0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b35ec8,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_02b360d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b362d8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02b364e0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02b366e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b368f0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b36af8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02b36d00,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b36f08,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02b37110,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02b37318,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b37520,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (cVar1 = (*param_1)(&DAT_02b37728,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02b37930,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b37b38,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02b37d40,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02b37f48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b38150,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b38358,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02b38560,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b38768,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b38970,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02b38b78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b38d80,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02b38f88,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02b39190,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b39398,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b395a0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02b397a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b399b0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b39bb8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02b39dc0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b39fc8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02b3a1d0,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_02b3a3d8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02b3a5e0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02b3a7e8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02b3a9f0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b3abf8,0x200,param_2), cVar1 != '\0')))))))) &&
             (cVar1 = (*param_1)(&DAT_02b3ae00,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02b3b008,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b3b210,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02b3b418,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02b3b620,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b3b828,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b3ba30,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02b3bc38,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b3be40,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b3c048,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02b3c250,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b3c458,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b3c660,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02b3c868,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b3ca70,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b3cc78,0x200,param_2), cVar1 != '\0')))))))))) &&
        (((cVar1 = (*param_1)(&DAT_02b3ce80,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b3d088,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02b3d290,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02b3d498,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b3d6a0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b3d8a8,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_02b3dab0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b3dcb8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b3dec0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02b3e0c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b3e2d0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02b3e4d8,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02b3e6e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b3e8e8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02b3eaf0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02b3ecf8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b3ef00,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b3f108,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02b3f310,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b3f518,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b3f720,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02b3f928,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b3fb30,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02b3fd38,0x200,param_2), cVar1 != '\0' &&
         ((((((cVar1 = (*param_1)(&DAT_02b3ff40,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b40148,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b40350,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b40558,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b40760,0x200,param_2), cVar1 != '\0')))) &&
           (((((cVar1 = (*param_1)(&DAT_02b40968,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02b40b70,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b40d78,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02b40f80,0x200,param_2), cVar1 != '\0')) &&
             (((((cVar1 = (*param_1)(&DAT_02b41188,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b41390,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02b41598,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02b417a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b419a8,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_02b41bb0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02b41db8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b41fc0,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_02b421c8,0x200,param_2), cVar1 != '\0' &&
             (((((((cVar1 = (*param_1)(&DAT_02b423d0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02b425d8,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02b427e0,0x200,param_2), cVar1 != '\0')) &&
                 (((cVar1 = (*param_1)(&DAT_02b429e8,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02b42bf0,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_02b42df8,0x200,param_2), cVar1 != '\0' &&
                   ((cVar1 = (*param_1)(&DAT_02b43000,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02b43208,0x200,param_2), cVar1 != '\0')))))))) &&
                (cVar1 = (*param_1)(&DAT_02b43410,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_02b43618,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b43820,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02b43a28,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_02b43c30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b43e38,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02b44040,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02b44248,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b44450,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02b44658,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02b44860,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b44a68,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b44c70,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02b44e78,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b45080,0x200,param_2), cVar1 != '\0')))))))) &&
           (((((cVar1 = (*param_1)(&DAT_02b45288,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02b45490,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b45698,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_02b458a0,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_02b45aa8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02b45cb0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02b45eb8,0x200,param_2), cVar1 != '\0')) &&
                (((cVar1 = (*param_1)(&DAT_02b460c0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02b462c8,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02b464d0,0x200,param_2), cVar1 != '\0' &&
                  ((cVar1 = (*param_1)(&DAT_02b466d8,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02b468e0,0x200,param_2), cVar1 != '\0')))))))))))) &&
             (cVar1 = (*param_1)(&DAT_02b46ae8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02b46cf0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b46ef8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b47100,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02b47308,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b47510,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02b47718,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02b47920,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b47b28,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02b47d30,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02b47f38,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02b48140,99,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00680dd9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02b481a8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b483b0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02b485b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b487c0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b489c8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02b48bd0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b48dd8,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02b48fe0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02b491e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b493f0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b495f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b49800,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b49a08,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02b49c10,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02b49e18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b4a020,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02b4a228,0x200,param_2), cVar1 != '\0')))) &&
        ((((((cVar1 = (*param_1)(&DAT_02b4a430,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b4a638,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b4a840,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b4aa48,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b4ac50,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02b4ae58,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02b4b060,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b4b268,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b4b470,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02b4b678,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b4b880,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b4ba88,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_02b4bc90,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b4be98,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_02b4c0a0,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02b4c2a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b4c4b0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b4c6b8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02b4c8c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b4cac8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02b4ccd0,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_02b4ced8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b4d0e0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b4d2e8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02b4d4f0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b4d6f8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02b4d900,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_02b4db08,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02b4dd10,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02b4df18,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02b4e120,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b4e328,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_02b4e530,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02b4e738,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b4e940,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b4eb48,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02b4ed50,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b4ef58,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b4f160,0x200,param_2), cVar1 != '\0')))))) &&
         ((((((cVar1 = (*param_1)(&DAT_02b4f368,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b4f570,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b4f778,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b4f980,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b4fb88,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02b4fd90,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02b4ff98,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b501a0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b503a8,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_02b505b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b507b8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b509c0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02b50bc8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b50dd0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02b50fd8,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_02b511e0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02b513e8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02b515f0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02b517f8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b51a00,0x200,param_2), cVar1 != '\0')))))))))))) &&
           (cVar1 = (*param_1)(&DAT_02b51c08,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02b51e10,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b52018,0x200,param_2), cVar1 != '\0')) &&
        (((((((((cVar1 = (*param_1)(&DAT_02b52220,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02b52428,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02b52630,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02b52838,0x200,param_2), cVar1 != '\0')))) &&
               (((cVar1 = (*param_1)(&DAT_02b52a40,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b52c48,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02b52e50,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_02b53058,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b53260,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02b53468,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02b53670,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b53878,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b53a80,0x200,param_2), cVar1 != '\0')))))) &&
            (((cVar1 = (*param_1)(&DAT_02b53c88,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b53e90,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02b54098,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02b542a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b544a8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02b546b0,0x200,param_2), cVar1 != '\0' &&
                ((((((cVar1 = (*param_1)(&DAT_02b548b8,0x200,param_2), cVar1 != '\0' &&
                     (cVar1 = (*param_1)(&DAT_02b54ac0,0x200,param_2), cVar1 != '\0')) &&
                    (cVar1 = (*param_1)(&DAT_02b54cc8,0x200,param_2), cVar1 != '\0')) &&
                   ((cVar1 = (*param_1)(&DAT_02b54ed0,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02b550d8,0x200,param_2), cVar1 != '\0')))) &&
                  (cVar1 = (*param_1)(&DAT_02b552e0,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02b554e8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02b556f0,0x200,param_2), cVar1 != '\0')))))))))))))) &&
           (cVar1 = (*param_1)(&DAT_02b558f8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02b55b00,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b55d08,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b55f10,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02b56118,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b56320,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02b56528,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02b56730,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b56938,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02b56b40,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02b56d48,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b56f50,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b57158,0x200,param_2), cVar1 != '\0')) &&
            ((((cVar1 = (*param_1)(&DAT_02b57360,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b57568,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02b57770,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02b57978,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b57b80,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_02b57d88,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_02b57f90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b58198,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b583a0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b585a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b587b0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02b589b8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02b58bc0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b58dc8,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02b58fd0,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02b591d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b593e0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b595e8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b597f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b599f8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02b59c00,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02b59e08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b5a010,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_02b5a218,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02b5a420,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b5a628,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02b5a830,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_02b5aa38,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b5ac40,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02b5ae48,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02b5b050,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b5b258,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_02b5b460,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02b5b668,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b5b870,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02b5ba74,0x27,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00681822(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02b5baa0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b5bca8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02b5beb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b5c0b8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b5c2c0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02b5c4c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b5c6d0,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02b5c8d8,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02b5cae0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b5cce8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02b5cef0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02b5d0f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b5d300,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b5d508,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02b5d710,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b5d918,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02b5db20,0x200,param_2), cVar1 != '\0' &&
          (((((((cVar1 = (*param_1)(&DAT_02b5dd28,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b5df30,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b5e138,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02b5e340,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b5e548,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02b5e750,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b5e958,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b5eb60,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02b5ed68,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02b5ef70,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b5f178,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b5f380,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02b5f588,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b5f790,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02b5f998,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02b5fba0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b5fda8,0x200,param_2), cVar1 != '\0')) &&
         ((((((cVar1 = (*param_1)(&DAT_02b5ffb0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02b601b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b603c0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b605c8,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02b607d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b609d8,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02b60be0,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02b60de8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b60ff0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02b611f8,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02b61400,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b61608,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02b61810,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02b61a18,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b61c20,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_02b61e28,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02b62030,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b62238,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b62440,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02b62648,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b62850,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b62a58,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02b62c60,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b62e68,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02b63070,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02b63278,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02b63480,0x200,param_2), cVar1 != '\0')))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02b63688,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02b63890,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b63a98,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b63ca0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02b63ea8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b640b0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02b642b8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02b644c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b646c8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b648d0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02b64ad8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b64ce0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b64ee8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b650f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b652f8,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_02b65500,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02b65708,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b65910,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02b65b18,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02b65d20,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b65f28,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b66130,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02b66338,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b66540,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b66748,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02b66950,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b66b58,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02b66d60,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02b66f68,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b67170,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b67378,0x200,param_2), cVar1 != '\0')))))) &&
        (((((((cVar1 = (*param_1)(&DAT_02b67580,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b67788,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02b67990,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02b67b98,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b67da0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02b67fa8,0x200,param_2), cVar1 != '\0' &&
                (((((cVar1 = (*param_1)(&DAT_02b681b0,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02b683b8,0x200,param_2), cVar1 != '\0')) &&
                   (cVar1 = (*param_1)(&DAT_02b685c0,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_02b687c8,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02b689d0,0x200,param_2), cVar1 != '\0')))) &&
                 (cVar1 = (*param_1)(&DAT_02b68bd8,0x200,param_2), cVar1 != '\0')))))))))) &&
            ((cVar1 = (*param_1)(&DAT_02b68de0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b68fe8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02b691f0,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02b693f8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b69600,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b69808,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02b69a10,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b69c18,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b69e20,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02b6a028,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b6a230,0x200,param_2), cVar1 != '\0')))))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_02b6a438,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02b6a640,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b6a848,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b6aa50,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02b6ac58,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b6ae60,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02b6b068,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02b6b270,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b6b478,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02b6b680,0x200,param_2), cVar1 != '\0')))))) &&
            ((((((cVar1 = (*param_1)(&DAT_02b6b888,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b6ba90,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02b6bc98,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02b6bea0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b6c0a8,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_02b6c2b0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02b6c4b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b6c6c0,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_02b6c8c8,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02b6cad0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b6ccd8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b6cee0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02b6d0e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b6d2f0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02b6d4f8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02b6d700,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b6d908,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02b6db10,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02b6dd18,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b6df20,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02b6e128,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02b6e330,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b6e538,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02b6e740,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02b6e948,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b6eb50,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02b6ed58,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_02b6ef60,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b6f168,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b6f370,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b6f578,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b6f780,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02b6f988,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02b6fb90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b6fd98,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02b6ffa0,0x200,param_2), cVar1 != '\0' &&
           (((((((cVar1 = (*param_1)(&DAT_02b701a8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b703b0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02b705b8,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_02b707c0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b709c8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02b70bd0,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02b70dd8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02b70fe0,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02b711e8,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02b713f0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b715f8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02b71800,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02b71a08,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b71c10,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02b71e18,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02b72020,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b72228,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02b72430,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02b72638,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b72840,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02b72a48,0x7e,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00682438(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02b72ac8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b72cd0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02b5beb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b72ed8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b730e0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02b732e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b734f0,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02b736f8,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02b73900,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b73b08,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02b73d10,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02b73f18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b74120,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b74328,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02b74530,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b74738,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02b74940,0x200,param_2), cVar1 != '\0' &&
          (((((((cVar1 = (*param_1)(&DAT_02b74b48,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b74d50,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b74f58,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02b75160,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b75368,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02b75570,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b75778,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b75980,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02b75b88,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02b75d90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b75f98,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b761a0,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02b763a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b765b0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02b767b8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02b769c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b76bc8,0x200,param_2), cVar1 != '\0')) &&
         ((((((cVar1 = (*param_1)(&DAT_02b76dd0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02b76fd8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b771e0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b773e8,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02b775f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b777f8,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02b77a00,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02b77c08,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b77e10,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02b78018,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02b78220,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b78428,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02b78630,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02b78838,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b78a40,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_02b78c48,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02b78e50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b79058,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b79260,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02b79468,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b79670,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b79878,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02b79a80,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b79c88,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02b79e90,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02b7a098,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02b7a2a0,0x200,param_2), cVar1 != '\0')))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02b7a4a8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02b7a6b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b7a8b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b7aac0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02b7acc8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b7aed0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02b7b0d8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02b7b2e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b7b4e8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b7b6f0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02b7b8f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b7bb00,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b7bd08,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b7bf10,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b7c118,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_02b7c320,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02b7c528,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b7c730,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02b7c938,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02b7cb40,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b7cd48,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b7cf50,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02b7d158,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b7d360,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b7d568,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02b7d770,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b7d978,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02b7db80,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02b7dd88,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b7df90,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b7e198,0x200,param_2), cVar1 != '\0')))))) &&
        (((((((cVar1 = (*param_1)(&DAT_02b7e3a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b7e5a8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02b7e7b0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02b7e9b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b7ebc0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02b7edc8,0x200,param_2), cVar1 != '\0' &&
                (((((cVar1 = (*param_1)(&DAT_02b7efd0,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02b7f1d8,0x200,param_2), cVar1 != '\0')) &&
                   (cVar1 = (*param_1)(&DAT_02b7f3e0,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_02b7f5e8,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02b7f7f0,0x200,param_2), cVar1 != '\0')))) &&
                 (cVar1 = (*param_1)(&DAT_02b7f9f8,0x200,param_2), cVar1 != '\0')))))))))) &&
            ((cVar1 = (*param_1)(&DAT_02b7fc00,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b7fe08,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02b80010,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02b80218,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b80420,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b80628,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02b80830,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b80a38,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b80c40,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02b80e48,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b81050,0x200,param_2), cVar1 != '\0')))))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_02b81258,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02b81460,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b81668,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b81870,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02b81a78,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b81c80,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02b81e88,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02b82090,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b82298,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02b824a0,0x200,param_2), cVar1 != '\0')))))) &&
            ((((((cVar1 = (*param_1)(&DAT_02b826a8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b828b0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02b82ab8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02b82cc0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b82ec8,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_02b830d0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02b832d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b834e0,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_02b836e8,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02b838f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b83af8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b83d00,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02b83f08,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b84110,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02b84318,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02b84520,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b84728,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02b84930,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02b84b38,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b84d40,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02b84f48,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02b85150,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b85358,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02b85560,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02b85768,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b85970,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02b85b78,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_02b85d80,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b85f88,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b86190,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b86398,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b865a0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02b867a8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02b869b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b86bb8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02b86dc0,0x200,param_2), cVar1 != '\0' &&
           (((((((cVar1 = (*param_1)(&DAT_02b86fc8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b871d0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02b873d8,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_02b875e0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b877e8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02b879f0,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02b87bf8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02b87e00,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02b88008,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02b88210,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b88418,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02b88620,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02b88828,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b88a30,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02b88c38,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02b88e40,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b89048,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02b89250,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02b89458,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b89660,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02b89868,0xbe,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0068304f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02b89b30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b89d38,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02b5beb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b72ed8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b730e0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02b732e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b89f40,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02b8a148,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02b8a350,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b8a558,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02b8a760,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02b8a968,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b8ab70,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b8ad78,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02b8af80,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b8b188,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02b8b390,0x200,param_2), cVar1 != '\0' &&
          (((((((cVar1 = (*param_1)(&DAT_02b8b598,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b8b7a0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b8b9a8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02b8bbb0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b8bdb8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02b8bfc0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b8c1c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b8c3d0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02b8c5d8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02b8c7e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b8c9e8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b8cbf0,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02b8cdf8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b8d000,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02b8d208,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02b8d410,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b8d618,0x200,param_2), cVar1 != '\0')) &&
         ((((((cVar1 = (*param_1)(&DAT_02b8d820,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02b8da28,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b8dc30,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b8de38,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02b8e040,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b8e248,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02b8e450,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02b8e658,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b8e860,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02b8ea68,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02b8ec70,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b8ee78,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02b8f080,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02b8f288,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b8f490,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_02b8f698,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02b8f8a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b8faa8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b8fcb0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02b8feb8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b900c0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b902c8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02b904d0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02b906d8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02b908e0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02b90ae8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02b90cf0,0x200,param_2), cVar1 != '\0')))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02b90ef8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02b91100,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b91308,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b91510,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02b91718,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b91920,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02b91b28,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02b91d30,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b91f38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b92140,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02b92348,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b92550,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b92758,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b92960,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b92b68,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_02b92d70,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02b92f78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b93180,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02b93388,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02b93590,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b93798,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b939a0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02b93ba8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b93db0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b93fb8,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02b941c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02b943c8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02b945d0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02b947d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b949e0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b94be8,0x200,param_2), cVar1 != '\0')))))) &&
        (((((((cVar1 = (*param_1)(&DAT_02b94df0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b94ff8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02b95200,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02b95408,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b95610,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02b95818,0x200,param_2), cVar1 != '\0' &&
                (((((cVar1 = (*param_1)(&DAT_02b95a20,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02b95c28,0x200,param_2), cVar1 != '\0')) &&
                   (cVar1 = (*param_1)(&DAT_02b95e30,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_02b96038,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02b96240,0x200,param_2), cVar1 != '\0')))) &&
                 (cVar1 = (*param_1)(&DAT_02b96448,0x200,param_2), cVar1 != '\0')))))))))) &&
            ((cVar1 = (*param_1)(&DAT_02b96650,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b96858,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02b96a60,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02b96c68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b96e70,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02b97078,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02b97280,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b97488,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b97690,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02b97898,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b97aa0,0x200,param_2), cVar1 != '\0')))))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_02b97ca8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02b97eb0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b980b8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02b982c0,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02b984c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b986d0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02b988d8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02b98ae0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b98ce8,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02b98ef0,0x200,param_2), cVar1 != '\0')))))) &&
            ((((((cVar1 = (*param_1)(&DAT_02b990f8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b99300,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02b99508,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02b99710,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b99918,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_02b99b20,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02b99d28,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02b99f30,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_02b9a138,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02b9a340,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b9a548,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02b9a750,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02b9a958,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b9ab60,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02b9ad68,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02b9af70,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b9b178,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02b9b380,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02b9b588,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b9b790,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02b9b998,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02b9bba0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b9bda8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02b9bfb0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02b9c1b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02b9c3c0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02b9c5c8,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_02b9c7d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b9c9d8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02b9cbe0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02b9cde8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02b9cff0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02b9d1f8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02b9d400,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b9d608,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02b9d810,0x200,param_2), cVar1 != '\0' &&
           (((((((cVar1 = (*param_1)(&DAT_02b9da18,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b9dc20,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02b9de28,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_02b9e030,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02b9e238,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02b9e440,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02b9e648,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02b9e850,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02b9ea58,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02b9ec60,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02b9ee68,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02b9f070,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02b9f278,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b9f480,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02b9f688,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02b9f890,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b9fa98,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02b9fca0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02b9fea8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ba00b0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ba02b8,0x1e8,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00683c66(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02ba04a8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ba06b0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02b89928,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ba08b8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ba0ac0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02ba0cc8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ba0ed0,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02b8a148,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02b8a350,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ba10d8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ba12e0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02ba14e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ba16f0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ba18f8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02ba1b00,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ba1d08,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02ba1f10,0x200,param_2), cVar1 != '\0' &&
          (((((((cVar1 = (*param_1)(&DAT_02ba2118,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ba2320,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02ba2528,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02ba2730,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ba2938,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02b75570,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02b75778,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02b75980,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02ba2b40,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02ba2d48,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ba2f50,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02ba3158,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02ba3360,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ba3568,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ba3770,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02ba3978,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ba3b80,0x200,param_2), cVar1 != '\0')) &&
         ((((((cVar1 = (*param_1)(&DAT_02ba3d88,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02ba3f90,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ba4198,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02ba43a0,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02ba45a8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ba47b0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02ba49b8,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02ba4bc0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ba4dc8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02ba4fd0,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02ba51d8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02ba53e0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02ba55e8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02ba57f0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ba59f8,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_02ba5c00,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02ba5e08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ba6010,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ba6218,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02ba6420,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ba6628,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02ba6830,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02ba6a38,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ba6c40,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02ba6e48,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02ba7050,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02ba7258,0x200,param_2), cVar1 != '\0')))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02ba7460,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02ba7668,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ba7870,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ba7a78,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02ba7c80,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ba7e88,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02ba8090,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02ba8298,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ba84a0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ba86a8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02ba88b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ba8ab8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02ba8cc0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02ba8ec8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ba90d0,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_02ba92d8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02ba94e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ba96e8,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02ba98f0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02ba9af8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ba9d00,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ba9f08,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02baa110,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02baa318,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02baa520,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02baa728,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02baa930,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02baab38,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02baad40,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02baaf48,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bab150,0x200,param_2), cVar1 != '\0')))))) &&
        (((((((cVar1 = (*param_1)(&DAT_02bab358,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bab560,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02bab768,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02bab970,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02babb78,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02babd80,0x200,param_2), cVar1 != '\0' &&
                (((((cVar1 = (*param_1)(&DAT_02babf88,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02bac190,0x200,param_2), cVar1 != '\0')) &&
                   (cVar1 = (*param_1)(&DAT_02bac398,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_02bac5a0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02bac7a8,0x200,param_2), cVar1 != '\0')))) &&
                 (cVar1 = (*param_1)(&DAT_02bac9b0,0x200,param_2), cVar1 != '\0')))))))))) &&
            ((cVar1 = (*param_1)(&DAT_02bacbb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bacdc0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02bacfc8,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02bad1d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bad3d8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02bad5e0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02bad7e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bad9f0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02badbf8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02bade00,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bae008,0x200,param_2), cVar1 != '\0')))))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_02bae210,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02bae418,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02bae620,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02bae828,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02baea30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02baec38,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02baee40,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02baf048,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02baf250,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02baf458,0x200,param_2), cVar1 != '\0')))))) &&
            ((((((cVar1 = (*param_1)(&DAT_02baf660,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02baf868,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02bafa70,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02bafc78,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02bafe80,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_02bb0088,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02bb0290,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02bb0498,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_02bb06a0,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02bb08a8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bb0ab0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02bb0cb8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02bb0ec0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bb10c8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02bb12d0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02bb14d8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02bb16e0,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02bb18e8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02bb1af0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02bb1cf8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02bb1f00,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02bb2108,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bb2310,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02bb2518,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02bb2720,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bb2928,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02bb2b30,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_02bb2d38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bb2f40,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bb3148,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02bb3350,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bb3558,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02bb3760,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02bb3968,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bb3b70,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02bb3d78,0x200,param_2), cVar1 != '\0' &&
           (((((((cVar1 = (*param_1)(&DAT_02bb3f80,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02bb4188,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02bb4390,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_02bb4598,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02bb47a0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02bb49a8,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02bb4bb0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02bb4db8,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02bb4fc0,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02bb51c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02bb53d0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02bb55d8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02bb57e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bb59e8,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02bb5bf0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02bb5df8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bb6000,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02bb6208,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02bb6410,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bb6618,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02bb6820,0x1da,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0068487d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02bb6a00,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bb6c08,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02b5beb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02b72ed8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02b730e0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02bb6e10,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bb7018,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02bb7220,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02bb7428,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bb7630,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02bb7838,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02bb7a40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bb7c48,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02bb7e50,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02bb8058,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bb8260,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02bb8468,0x200,param_2), cVar1 != '\0' &&
          (((((((cVar1 = (*param_1)(&DAT_02bb8670,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02bb8878,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02bb8a80,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02bb8c88,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02bb8e90,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02bb9098,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02bb92a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bb94a8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02bb96b0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02bb98b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bb9ac0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02bb9cc8,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02bb9ed0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bba0d8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02bba2e0,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02bba4e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bba6f0,0x200,param_2), cVar1 != '\0')) &&
         ((((((cVar1 = (*param_1)(&DAT_02bba8f8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02bbab00,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02bbad08,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02bbaf10,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02bbb118,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bbb320,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02bbb528,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02bbb730,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bbb938,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02bbbb40,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02bbbd48,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02bbbf50,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02bbc158,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02bbc360,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02bbc568,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_02bbc770,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02bbc978,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bbcb80,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02bbcd88,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02bbcf90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bbd198,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02bbd3a0,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02bbd5a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02bbd7b0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02bbd9b8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02bbdbc0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02bbddc8,0x200,param_2), cVar1 != '\0')))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02bbdfd0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02bbe1d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bbe3e0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bbe5e8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02bbe7f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bbe9f8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02bbec00,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02bbee08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bbf010,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02bbf218,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02bbf420,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bbf628,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02bbf830,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02bbfa38,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bbfc40,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_02bbfe48,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02bc0050,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bc0258,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02bc0460,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02bc0668,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bc0870,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02bc0a78,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02bc0c80,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bc0e88,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bc1090,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02bc1298,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bc14a0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02bc16a8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02bc18b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bc1ab8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bc1cc0,0x200,param_2), cVar1 != '\0')))))) &&
        (((((((cVar1 = (*param_1)(&DAT_02bc1ec8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bc20d0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02bc22d8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02bc24e0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02bc26e8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02bc28f0,0x200,param_2), cVar1 != '\0' &&
                (((((cVar1 = (*param_1)(&DAT_02bc2af8,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02bc2d00,0x200,param_2), cVar1 != '\0')) &&
                   (cVar1 = (*param_1)(&DAT_02bc2f08,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_02bc3110,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02bc3318,0x200,param_2), cVar1 != '\0')))) &&
                 (cVar1 = (*param_1)(&DAT_02bc3520,0x200,param_2), cVar1 != '\0')))))))))) &&
            ((cVar1 = (*param_1)(&DAT_02bc3728,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bc3930,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02bc3b38,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02bc3d40,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bc3f48,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02bc4150,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02bc4358,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bc4560,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02bc4768,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02bc4970,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bc4b78,0x200,param_2), cVar1 != '\0')))))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_02bc4d80,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02bc4f88,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02bc5190,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02bc5398,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02bc55a0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02bc57a8,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02bc59b0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02baf048,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02bc5bb8,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02bc5dc0,0x200,param_2), cVar1 != '\0')))))) &&
            ((((((cVar1 = (*param_1)(&DAT_02bc5fc8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02bc61d0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02bc63d8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02bc65e0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02bc67e8,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_02bc69f0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02bc6bf8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02bc6e00,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_02bc7008,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02bc7210,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bc7418,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02bc7620,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02bc7828,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bc7a30,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02bc7c38,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02bc7e40,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02bc8048,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02bc8250,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02bc8458,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02bc8660,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02bc8868,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02bc8a70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bc8c78,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02bc8e80,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02bc9088,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bc9290,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02bc9498,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_02bc96a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bc98a8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bc9ab0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02bc9cb8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bc9ec0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02bca0c8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02bca2d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bca4d8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02bca6e0,0x200,param_2), cVar1 != '\0' &&
           (((((((cVar1 = (*param_1)(&DAT_02bca8e8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02bcaaf0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02bcacf8,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_02bcaf00,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02bcb108,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02bcb310,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02bcb518,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02bcb720,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02bcb928,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02bcbb30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02bcbd38,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02bcbf40,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02bcc148,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bcc350,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02bcc558,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02bcc760,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bcc968,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02bccb70,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02bccd78,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bccf80,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02bcd188,0x1eb,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00685494(undefined4 *param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined local_1c [20];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x6854a0;
  *param_1 = WB0BF732D::WEDCB86CC::vftable;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 1);
  }
  param_1[1] = piVar1;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  local_8 = 2;
  puVar2 = (undefined4 *)FUN_005d144b(local_1c);
  param_1[9] = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



undefined4 __thiscall FUN_00685668(undefined4 param_1_00,byte param_1)

{
  FUN_00685684();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00685684(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  *param_1 = WB0BF732D::WEDCB86CC::vftable;
  local_18 = param_1 + 1;
  local_8._0_1_ = 0x1c;
  local_8._1_3_ = 0;
  local_1c = param_1;
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0049a803(&local_2c,local_2c,local_28,local_24,local_20);
  puVar1 = local_1c;
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_8._0_1_ = 4;
  if (puVar1[0xe] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 3;
  if (puVar1[0xc] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 2;
  if (puVar1[10] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (puVar1[8] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_007b3ae8(local_18);
  return;
}



void Catch_All_0068584f(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00685859(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  int unaff_EDI;
  undefined auStack_30 [16];
  undefined4 uStack_20;
  
  uStack_20 = 0x68586e;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (unaff_EDI + 0x3c),param_1,0,0xffffffff);
  FUN_0068635c(&LAB_0044a475,auStack_30);
  FUN_00685af1(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00685893(char param_1)

{
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    FUN_00685859(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2(1,0);
  }
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_006858d7(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  int in_EAX;
  
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
                     )(in_EAX + 0x3c));
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006858f2(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x685921;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x58),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(&LAB_0068645c,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_0068595c(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  int in_EAX;
  
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
                     )(in_EAX + 0x58));
  return param_1;
}



void FUN_00685977(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  int unaff_EDI;
  undefined auStack_30 [16];
  undefined4 uStack_20;
  
  uStack_20 = 0x68598f;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (unaff_EDI + 0x90),param_1,0,0xffffffff);
  FUN_0068635c(&LAB_00686475,auStack_30);
  FUN_00685af1(param_1);
  return;
}



void FUN_006859b4(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  int unaff_EDI;
  undefined auStack_30 [16];
  undefined4 uStack_20;
  
  uStack_20 = 0x6859cc;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (unaff_EDI + 0xac),param_1,0,0xffffffff);
  FUN_0068635c(&LAB_00686484,auStack_30);
  FUN_00685af1(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006859f1(char param_1)

{
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    FUN_006859b4(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2(1,0);
  }
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00685a35(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  int in_EAX;
  
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
                     )(in_EAX + 0xac));
  return param_1;
}



void FUN_00685a52(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  int unaff_EDI;
  undefined auStack_30 [16];
  undefined4 uStack_20;
  
  uStack_20 = 0x685a6a;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (unaff_EDI + 200),param_1,0,0xffffffff);
  FUN_0068635c(&LAB_00686498,auStack_30);
  FUN_00685af1(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00685a8f(int param_1,char param_2,undefined4 param_3)

{
  int iVar1;
  code *pcVar2;
  int **ppiVar3;
  undefined *puVar4;
  uint uVar6;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  undefined4 *puVar5;
  
  uStack_4 = 0;
  puVar4 = auStack_20;
  uVar6 = 0;
  local_8 = 0;
  if ((-(uint)(param_2 != '\0') & 0x6a1cd8) != 0) {
    *(undefined4 *)(param_1 + 0xe4) = param_3;
    if (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0x10) >> 3 != 0) {
      do {
        *(undefined4 *)(puVar4 + -4) = 0x685ad3;
        ppiVar3 = (int **)FUN_00436b17();
        iVar1 = **ppiVar3;
        *(undefined4 *)(puVar4 + -4) = param_3;
        pcVar2 = *(code **)(iVar1 + 0x20);
        puVar5 = (undefined4 *)(puVar4 + -8);
        puVar4 = puVar4 + -8;
        *puVar5 = 0x685adb;
        (*pcVar2)();
        uVar6 = uVar6 + 1;
      } while (uVar6 < (uint)(*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0x10) >> 3));
    }
  }
  *(undefined4 *)(puVar4 + -4) = 0x685aee;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_00685af1(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            uint param_2)

{
  undefined4 uVar1;
  code *pcVar2;
  undefined4 *puVar3;
  uint uVar4;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_8c [16];
  undefined4 uStack_7c;
  undefined4 uStack_78;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_38 [32];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x50;
  uVar4 = 0;
  local_8 = 0;
  if (*(int *)(param_1_00 + 0x14) - *(int *)(param_1_00 + 0x10) >> 3 != 0) {
    do {
      uStack_78 = 0x685b1f;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_38,param_1)
      ;
      puVar3 = (undefined4 *)FUN_00436b17();
      uVar1 = *puVar3;
      local_8._0_1_ = 1;
      if (param_2 == 0) {
        FUN_00412b7a();
        local_8 = CONCAT31(local_8._1_3_,2);
        uStack_78 = 0x685b98;
        FUN_00412f44();
        pcVar2 = (code *)swi(3);
        (*pcVar2)();
        return;
      }
      local_18 = abStack_8c;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                (abStack_8c,local_38);
      (**(code **)((param_2 & 0xfffffffe) + 4))(&stack0x00000010,uVar1);
      uStack_78 = 1;
      local_8 = (uint)local_8._1_3_ << 8;
      uStack_7c = 0x685b64;
      FUN_004017b2();
      uVar4 = uVar4 + 1;
    } while (uVar4 < (uint)(*(int *)(param_1_00 + 0x14) - *(int *)(param_1_00 + 0x10) >> 3));
  }
  local_8 = 0xffffffff;
  FUN_00507e58();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00685b99(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x685bcb;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0xe8),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(FUN_00414efc,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00685c06(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x685c38;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x200),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(FUN_0044c8d6,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00685c73(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x685ca5;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x21c),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(FUN_00414f1a,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00685ce0(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x685d12;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x238),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(&LAB_00686461,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00685d4d(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x685d7f;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x254),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(FUN_0045853a,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00685dba(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x685dec;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x120),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(FUN_00686489,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00685e27(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x685e59;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x13c),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(&LAB_005f095b,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00685e94(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x685ec6;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x158),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(&LAB_00686466,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00685f01(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x685f33;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x174),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(&LAB_0068647a,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00685f6e(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x685fa0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 400),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(&LAB_0068648e,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00685fdb(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x68600d;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x1ac),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(&LAB_00686457,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00686048(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x68607a;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x1c8),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(&LAB_0068646b,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006860b5(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x6860e7;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x1e4),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(&LAB_0068647f,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



void FUN_00686122(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  int unaff_EDI;
  undefined auStack_30 [16];
  undefined4 uStack_20;
  
  uStack_20 = 0x68613a;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (unaff_EDI + 0x270),param_1,0,0xffffffff);
  FUN_0068635c(FUN_0045854c,auStack_30);
  FUN_00685af1(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0068615f(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x68618e;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x74),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(FUN_00445f18,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



void FUN_006861c9(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  int unaff_EDI;
  undefined auStack_30 [16];
  undefined4 uStack_20;
  
  uStack_20 = 0x6861e1;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (unaff_EDI + 0x28c),param_1,0,0xffffffff);
  FUN_0068635c(&LAB_00686493,auStack_30);
  FUN_00685af1(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00686206(char param_1)

{
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    FUN_006861c9(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2(1,0);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0068624a(char param_1)

{
  int unaff_EDI;
  undefined auStack_4c [16];
  undefined4 uStack_3c;
  
  if ((-(uint)(param_1 != '\0') & 0x6a1cd8) != 0) {
    uStack_3c = 0x68627c;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (unaff_EDI + 0x2a8),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000008,0,0xffffffff);
    FUN_0068635c(FUN_00458547,auStack_4c);
    FUN_00685af1(&stack0x00000008);
  }
  if (param_1 != '\0') {
    FUN_004017b2();
  }
  return;
}



void FUN_00686324(void)

{
  int in_EAX;
  int **ppiVar1;
  undefined4 unaff_EBX;
  uint uVar2;
  
  *(undefined4 *)(in_EAX + 0x2c4) = unaff_EBX;
  uVar2 = 0;
  if (*(int *)(in_EAX + 0x14) - *(int *)(in_EAX + 0x10) >> 3 != 0) {
    do {
      ppiVar1 = (int **)FUN_00436b17();
      (**(code **)(**ppiVar1 + 0x6c))();
      uVar2 = uVar2 + 1;
    } while (uVar2 < (uint)(*(int *)(in_EAX + 0x14) - *(int *)(in_EAX + 0x10) >> 3));
  }
  return;
}



void FUN_0068635c(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bcd375;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_006863a5(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0068640e(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_WB0BF732D::W3D5B0EA7,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<struct_boost::arg<1>,struct_boost::arg<2>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0068640e(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_WB0BF732D::W3D5B0EA7,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<struct_boost::arg<1>,struct_boost::arg<2>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_WB0BF732D::W3D5B0EA7,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<struct_boost::arg<1>,struct_boost::arg<2>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_00686470(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x00686472. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x60))();
  return;
}



void __fastcall FUN_00686489(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x0068648b. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x38))();
  return;
}



void FUN_0068649d(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00686570(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00686643(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00686716(undefined4 param_1,int param_2)

{
  undefined4 local_64 [2];
  int local_5c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c26a30;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_64[0] = 0;
  local_c = 0;
  if (param_2 == 1) {
    FUN_00465be3();
    local_c = CONCAT31(local_c._1_3_,7);
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  if (param_2 == 2) {
    FUN_00465be3();
    local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  if (param_2 == 3) {
    FUN_00465be3();
    local_c = CONCAT31(local_c._1_3_,3);
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  if (param_2 != 4) {
    FUN_00465be3();
    local_c._0_1_ = 9;
    FUN_005d11c9();
    local_c = (uint)local_c._1_3_ << 8;
    if (local_5c != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_0043c023(local_64);
  }
  FUN_00465be3();
  local_c = CONCAT31(local_c._1_3_,5);
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



void FUN_00686a52(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00686b25(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00686bf8(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00686ccb(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00686d9e(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00686e71(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00686f44(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00687017(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_006870ea(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_006871bd(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00687290(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00687363(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00687436(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00687509(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_006875dc(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_006876af(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00687782(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00687855(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00687928(int param_1)

{
  int iVar1;
  undefined local_38 [8];
  undefined local_30 [8];
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c21970;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if (param_1 == 1) {
    iVar1 = FUN_00465be3(local_20);
    local_c = 1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  if (param_1 != 2) {
    if (param_1 != 3) {
      iVar1 = FUN_00465be3(local_38);
      local_c = 3;
                    // WARNING: Subroutine does not return
      FUN_0043c023(iVar1 + 4);
    }
    iVar1 = FUN_00465be3(local_30);
    local_c = 2;
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  iVar1 = FUN_00465be3(local_28);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00687abb(undefined4 param_1,undefined4 param_2,char param_3,int param_4)

{
  undefined3 uVar1;
  undefined4 *puVar2;
  undefined *extraout_ECX;
  undefined *local_5c;
  undefined **local_58;
  undefined local_44 [4];
  undefined *local_40;
  undefined local_3c [4];
  undefined *local_38;
  undefined local_34 [4];
  undefined *local_30;
  undefined local_2c [4];
  undefined *local_28;
  undefined4 local_24;
  undefined *local_20;
  undefined4 local_1c;
  undefined local_18 [4];
  undefined **local_14;
  undefined local_8;
  undefined3 uStack_7;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  local_24 = param_2;
  local_20 = (undefined *)0x0;
  local_1c = 0;
  uStack_7 = 0;
  uVar1 = uStack_7;
  local_8 = 1;
  uStack_7 = 0;
  if ((-(uint)(param_3 != '\0') & 0x6a1cd8) != 0) {
    if (param_4 == 0) {
      local_14 = &local_5c;
      local_5c = (undefined *)0xa0d;
      local_58 = (undefined **)0x53;
      uStack_7 = uVar1;
      FUN_00465be3(local_34);
      local_58 = &local_20;
      local_8 = 4;
      local_5c = (undefined *)0x687c0a;
      FUN_005d11c9();
      local_58 = (undefined **)local_30;
    }
    else if (param_4 == 1) {
      local_14 = &local_5c;
      local_5c = (undefined *)0xa0d;
      local_58 = (undefined **)0x54;
      uStack_7 = uVar1;
      FUN_00465be3(local_2c);
      local_58 = &local_20;
      local_8 = 5;
      local_5c = (undefined *)0x687bd8;
      FUN_005d11c9();
      local_58 = (undefined **)local_28;
    }
    else if (param_4 == 2) {
      local_14 = &local_5c;
      local_5c = (undefined *)0xa0d;
      local_58 = (undefined **)0x56;
      uStack_7 = uVar1;
      FUN_00465be3(local_3c);
      local_58 = &local_20;
      local_8 = 6;
      local_5c = (undefined *)0x687ba6;
      FUN_005d11c9();
      local_58 = (undefined **)local_38;
    }
    else if (param_4 == 3) {
      local_14 = &local_5c;
      local_5c = (undefined *)0xa0d;
      local_58 = (undefined **)0x55;
      uStack_7 = uVar1;
      FUN_00465be3(local_44);
      local_58 = &local_20;
      local_8 = 3;
      local_5c = (undefined *)0x687b71;
      FUN_005d11c9();
      local_58 = (undefined **)local_40;
    }
    else {
      uVar1 = uStack_7;
      if (param_4 != 4) goto LAB_00687c23;
      local_14 = &local_5c;
      local_5c = (undefined *)0xa0d;
      local_58 = (undefined **)0x57;
      FUN_00465be3(local_18);
      local_58 = &local_20;
      local_8 = 2;
      local_5c = (undefined *)0x687b3c;
      FUN_005d11c9();
      local_58 = local_14;
    }
    local_8 = 1;
    if (local_58 != (undefined **)0x0) {
      local_58 = (undefined **)0x687c1a;
      FUN_0040127a();
      local_58 = (undefined **)extraout_ECX;
    }
    uVar1 = uStack_7;
    if (local_20 != (undefined *)0x0) {
      local_14 = &local_5c;
      local_5c = local_20;
                    // WARNING: Subroutine does not return
      FUN_0043c023(&local_1c);
    }
  }
LAB_00687c23:
  uStack_7 = uVar1;
  local_58 = (undefined **)local_24;
  local_5c = local_3c;
  puVar2 = (undefined4 *)FUN_0046f52f();
  local_5c = (undefined *)*puVar2;
  local_14 = &local_5c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



bool FUN_00687f2b(undefined4 param_1,int *param_2)

{
  char cVar1;
  int *in_EAX;
  int *unaff_ESI;
  bool bVar2;
  undefined4 uVar3;
  undefined4 uStack_8;
  
  cVar1 = (**(code **)(*unaff_ESI + 8))();
  if (cVar1 == '\0') {
    return true;
  }
  uStack_8 = uStack_8 & 0xffffff;
  cVar1 = (**(code **)(*in_EAX + 0x9c))(param_1,(int)&uStack_8 + 3);
  if (cVar1 == '\0') {
    uVar3 = 0xf6b5e26d;
    bVar2 = false;
  }
  else {
    bVar2 = uStack_8._3_1_ == '\0';
    if (bVar2) {
      cVar1 = (**(code **)(*unaff_ESI + 0x20))(1,0);
      if ((((cVar1 == '\0') || (cVar1 = (**(code **)(*unaff_ESI + 0x28))(1,0), cVar1 == '\0')) ||
          (cVar1 = (**(code **)(*unaff_ESI + 0x18))(8,0), cVar1 == '\0')) ||
         (cVar1 = (**(code **)(*unaff_ESI + 0xc))(param_1,1), cVar1 == '\0')) {
        bVar2 = false;
        uVar3 = 0xcb895754;
      }
      else {
        cVar1 = (**(code **)(*param_2 + 0x24))(1000);
        if (cVar1 != '\0') {
          return (bool)cVar1;
        }
        uVar3 = 0xbbd9b904;
        bVar2 = false;
      }
    }
    else {
      uVar3 = 0xb1144635;
    }
  }
  FUN_00b940e0(uVar3);
  return bVar2;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_00687ff5(undefined4 param_1_00,int *param_2,undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 *local_38;
  char local_32;
  char local_31;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x688001;
  FUN_00688539();
  local_38 = (undefined4 *)0x0;
  local_8 = 0;
  local_32 = '\x01';
  local_31 = (**(code **)(*param_2 + 0x88))(&local_38,&local_32,param_1);
  if (local_31 == '\0') {
    uVar2 = 0x173c1ea4;
  }
  else {
    if (local_32 != '\0') goto LAB_006880c0;
    local_31 = local_38 != (undefined4 *)0x0;
    if ((bool)local_31) {
      cVar1 = FUN_00b92890();
      if (cVar1 == '\0') {
        local_18 = 0xf;
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
                  (local_30,0);
        local_8 = CONCAT31(local_8._1_3_,1);
        local_31 = FUN_00bb6b50(local_30,local_38,1);
        if (local_31 == '\0') {
          FUN_00b940e0(0x6d5d83e1);
        }
        else {
          FUN_0062d568(local_30);
        }
        FUN_004017b2(1,0);
      }
      goto LAB_006880c0;
    }
    uVar2 = 0xa050bd8e;
  }
  FUN_00b940e0(uVar2);
LAB_006880c0:
  local_8 = 0xffffffff;
  if (local_38 != (undefined4 *)0x0) {
    (**(code **)*local_38)(1);
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_006880da(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  undefined local_38 [4];
  int local_34;
  int *local_30;
  int local_2c;
  int *local_28;
  int local_24;
  undefined4 local_20;
  char local_1c [4];
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x6880e6;
  local_20 = param_1;
  iVar3 = 0x1ef;
  FUN_00b8200d();
  local_8 = 0;
  uVar2 = (**(code **)(*local_30 + 0x54))(local_38,0x9ca2b975);
  local_8._0_1_ = 1;
  FUN_0068854e(&local_28,uVar2);
  local_8 = CONCAT31(local_8._1_3_,3);
  if (local_34 != 0) {
    FUN_0040127a();
  }
  if (local_28 != (int *)0x0) {
    (**(code **)(*local_28 + 8))(local_1c);
    if ((-(uint)(local_1c[0] != '\0') & 0x6a1cd8) != 0) {
      if (local_18 < 0x40) {
        local_18 = 0x40;
      }
      iVar3 = local_18 - 0x11;
    }
    if (local_1c[0] != '\0') {
      local_1c[0] = '\0';
    }
  }
  cVar1 = FUN_006881ba(local_20,param_1_00,param_2,param_3,iVar3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xa378a7f1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_24 != 0) {
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_2c != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006881ba(undefined4 param_1,int *param_2,int param_3,uint param_4,uint param_5)

{
  char cVar1;
  char cVar2;
  uint uVar3;
  undefined4 local_80;
  undefined4 **local_7c;
  undefined local_68 [8];
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 *local_2c;
  undefined4 local_28;
  undefined4 *local_24;
  uint local_20;
  undefined4 *local_1c;
  char local_15 [13];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x58;
  local_8 = 0x6881c6;
  local_7c = (undefined4 **)local_68;
  cVar1 = '\x01';
  local_80 = 0x6881d1;
  FUN_00b72ec0();
  local_8 = 0;
  uVar3 = 0;
  do {
    if (param_4 <= uVar3) break;
    local_24 = (undefined4 *)0x0;
    local_20 = param_4 - uVar3;
    local_8._0_1_ = 1;
    if (param_5 <= local_20) {
      local_20 = param_5;
    }
    local_7c = (undefined4 **)param_5;
    local_2c = &local_80;
    if (&stack0x00000000 != (undefined *)0x7c) {
      local_7c = (undefined4 **)local_20;
    }
    local_80 = CONCAT31((int3)(param_5 >> 8),1);
    cVar1 = (**(code **)(*param_2 + 0xe4))(&local_24,local_15,param_3 + uVar3,local_20);
    if (cVar1 == '\0') {
      local_7c = (undefined4 **)0x9a8b20e7;
LAB_006882c9:
      local_80 = 0x6882ce;
      FUN_00b940e0();
    }
    else if (local_15[0] == '\0') {
LAB_006882a9:
      if (cVar1 != '\0') {
        local_7c = (undefined4 **)local_24;
        local_80 = 0x6882b8;
        cVar1 = FUN_00bb13e0();
        if (cVar1 == '\0') {
          local_7c = (undefined4 **)0xcb689d9c;
          goto LAB_006882c9;
        }
        uVar3 = uVar3 + local_20;
      }
    }
    else {
      local_7c = (undefined4 **)0x896099e9;
      cVar1 = '\0';
      local_80 = 0x68825a;
      FUN_00b940e0();
      local_1c = (undefined4 *)0x0;
      local_7c = &local_1c;
      local_8 = CONCAT31(local_8._1_3_,2);
      local_80 = 0x68826f;
      cVar2 = (**(code **)(*param_2 + 0x6c))();
      if (cVar2 != '\0') {
        local_7c = (undefined4 **)0x68827e;
        cVar2 = FUN_00b93390();
        if (cVar2 != '\0') {
          local_7c = (undefined4 **)local_1c[2];
          local_80 = local_28;
          FUN_00b940c0(0x896099e9);
        }
      }
      local_8._0_1_ = 1;
      if (local_1c != (undefined4 *)0x0) {
        local_7c = (undefined4 **)0x1;
        local_80 = 0x6882a9;
        (**(code **)*local_1c)();
        goto LAB_006882a9;
      }
    }
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_24 != (undefined4 *)0x0) {
      local_7c = (undefined4 **)0x1;
      local_80 = 0x6882e5;
      (**(code **)*local_24)();
    }
  } while (cVar1 != '\0');
  if (cVar1 != '\0') {
    local_60 = 0;
    local_5c = 0;
    local_7c = (undefined4 **)0xffffffff;
    local_80 = 0x688306;
    cVar1 = FUN_00bb1450();
    if (cVar1 == '\0') {
      local_7c = (undefined4 **)0xb5654359;
      cVar1 = '\0';
      local_80 = 0x688320;
      FUN_00b940e0();
    }
    else {
      cVar1 = '\x01';
    }
  }
  local_8 = 0xffffffff;
  local_7c = (undefined4 **)0x68832d;
  FUN_00b72d90();
  return cVar1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00688335(int *param_1,int param_2)

{
  int *piVar1;
  undefined4 **ppuVar2;
  char cVar3;
  undefined4 *puVar4;
  uint local_108;
  int iStack_104;
  undefined4 **local_100;
  char *pcStack_fc;
  int *local_e8;
  int local_e4;
  undefined4 ***local_e0;
  undefined4 **local_dc;
  undefined4 **local_d8;
  char local_d2;
  char local_d1;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xd8;
  local_e8 = param_1;
  local_e4 = param_2;
  local_d8 = (undefined4 **)0x0;
  local_8 = 0;
  local_e0 = *(undefined4 ****)(param_2 + 8);
  pcStack_fc = (char *)0x0;
  local_100 = &local_dc;
  iStack_104 = 0x68837a;
  puVar4 = (undefined4 *)FUN_00b933f0();
  pcStack_fc = (char *)*puVar4;
  *puVar4 = 0;
  local_100 = (undefined4 **)0x68838c;
  FUN_0040c727();
  if (local_dc != (undefined4 **)0x0) {
    pcStack_fc = (char *)0x1;
    local_100 = (undefined4 **)0x68839c;
    (*(code *)**local_dc)();
  }
  pcStack_fc = (char *)0x1;
  local_100 = (undefined4 **)0x6883af;
  cVar3 = FUN_00bb5f30();
  if (cVar3 == '\0') {
LAB_006883e0:
    pcStack_fc = (char *)0xebd75bbb;
  }
  else {
    pcStack_fc = (char *)0x1;
    local_100 = (undefined4 **)0x6883c6;
    cVar3 = FUN_00bb5f30();
    if (cVar3 == '\0') goto LAB_006883e0;
    pcStack_fc = (char *)0x6883dc;
    cVar3 = FUN_00b93010();
    ppuVar2 = local_dc;
    if (cVar3 == '\0') goto LAB_006883e0;
    *(undefined *)local_dc = 1;
    *(undefined *)((int)local_dc + 5) = 0x40;
    *(undefined *)((int)local_dc + 6) = 1;
    *(undefined *)((int)local_dc + 0xe) = 0x1d;
    *(undefined *)((int)local_dc + 0x2f) = 0x10;
    local_dc[0xc] = (undefined4 *)0xaaaaaaaa;
    local_dc[0xd] = (undefined4 *)0xaaaaaaaa;
    local_dc[0xe] = (undefined4 *)0xaaaaaaaa;
    local_dc[0xf] = (undefined4 *)0xaaaaaaaa;
    pcStack_fc = (char *)0x688425;
    local_d1 = FUN_00b93390();
    if (local_d1 == '\0') goto LAB_00688519;
    pcStack_fc = (char *)0x68843e;
    FUN_00b72080();
    local_8._0_1_ = 1;
    pcStack_fc = (char *)0x68844d;
    FUN_00b71f00();
    pcStack_fc = (char *)local_e0;
    local_e0 = (undefined4 ***)&local_108;
    local_100 = local_dc;
    local_108 = local_108 & 0xffffff00;
    FUN_00b72260();
    pcStack_fc = (char *)0x14;
    local_e0 = (undefined4 ***)&local_108;
    local_100 = ppuVar2 + 6;
    local_108 = local_108 & 0xffffff00;
    FUN_00b72390();
    local_8 = (uint)local_8._1_3_ << 8;
    pcStack_fc = (char *)0x688496;
    FUN_00b72070();
    piVar1 = local_e8;
    pcStack_fc = &local_d2;
    local_e0 = &local_100;
    local_100 = local_d8;
    local_d8 = (undefined4 **)0x0;
    iStack_104 = 0x6884c1;
    cVar3 = (**(code **)(*local_e8 + 0x58))();
    if ((cVar3 == '\0') || (local_d2 == '\0')) {
      pcStack_fc = (char *)0xad5f9b17;
    }
    else {
      pcStack_fc = &local_d2;
      local_100 = (undefined4 **)0x0;
      iStack_104 = local_e4;
      local_108 = 0x6884ee;
      cVar3 = (**(code **)(*piVar1 + 0x60))();
      if ((cVar3 != '\0') && (local_d2 != '\0')) {
        local_d1 = '\x01';
        goto LAB_00688519;
      }
      pcStack_fc = (char *)0xe184b685;
    }
  }
  local_d1 = '\0';
  local_100 = (undefined4 **)0x688518;
  FUN_00b940e0();
LAB_00688519:
  local_8 = 0xffffffff;
  if (local_d8 != (undefined4 **)0x0) {
    pcStack_fc = (char *)0x1;
    local_100 = (undefined4 **)0x68852d;
    (*(code *)**local_d8)();
  }
  pcStack_fc = (char *)0x688538;
  FUN_00a421fb();
  return;
}



void FUN_00688539(void)

{
  char *unaff_ESI;
  
  if (*unaff_ESI != '\0') {
    FUN_004017b2(1,0);
    *unaff_ESI = '\0';
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0068854e(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x68855a;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::WBF585E8D::RTTI_Type_Descriptor,
                   &W5FC6A77E::WDED8F3A8::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::WBF585E8D::RTTI_Type_Descriptor,
                           &W5FC6A77E::WDED8F3A8::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00688604(undefined4 ****param_1)

{
  undefined4 ***pppuVar1;
  undefined4 ***pppuVar2;
  char cVar3;
  int **unaff_EBX;
  undefined4 **ppuVar4;
  undefined4 ****ppppuStack_4c;
  int ***pppiStack_48;
  undefined4 ****ppppuStack_44;
  int ***pppiStack_40;
  char *pcStack_3c;
  undefined4 ****local_28;
  undefined4 **local_24;
  undefined4 ***local_20;
  undefined4 ***local_1c;
  undefined4 ***local_18;
  char local_12;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_18 = (undefined4 ***)0x0;
  local_8 = 0;
  pcStack_3c = &local_12;
  pppiStack_40 = (int ***)&local_18;
  local_12 = '\x01';
  ppppuStack_44 = (undefined4 ****)0x68862e;
  local_11 = (**(code **)(**unaff_EBX + 0x98))();
  if (local_11 == '\0') {
    ppppuStack_44 = (undefined4 ****)0x6024ec7f;
    pppiStack_48 = (undefined4 ***)0x688644;
    FUN_00b940e0();
  }
  else {
    local_11 = local_12 == '\0';
    if (!(bool)local_11) {
      ppppuStack_44 = (undefined4 ****)0xe253910b;
      pppiStack_48 = (undefined4 ***)0x688665;
      FUN_00b940e0();
      local_1c = (undefined4 ***)0x0;
      local_8 = CONCAT31(local_8._1_3_,1);
      ppppuStack_44 = &local_1c;
      pppiStack_48 = (undefined4 ***)0x688679;
      cVar3 = (**(code **)(**unaff_EBX + 0x6c))();
      if ((cVar3 != '\0') && (local_1c != (undefined4 ***)0x0)) {
        local_20 = (undefined4 ***)0x0;
        ppppuStack_44 = (undefined4 ****)0x688690;
        FUN_00b93390();
        ppppuStack_44 = (undefined4 ****)local_1c[2];
        pppiStack_48 = local_20;
        ppppuStack_4c = (undefined4 ****)0xe253910b;
        FUN_00b940c0();
      }
      local_8 = local_8 & 0xffffff00;
      if (local_1c != (undefined4 ***)0x0) {
        ppppuStack_44 = (undefined4 ****)0x1;
        pppiStack_48 = (undefined4 ***)0x6886b3;
        (*(code *)**local_1c)();
      }
    }
  }
  ppuVar4 = (undefined4 **)0x0;
  do {
    if ((local_11 == '\0') || (local_18[2] <= ppuVar4)) {
      local_8 = 0xffffffff;
      if (local_18 != (undefined4 ***)0x0) {
        ppppuStack_44 = (undefined4 ****)0x1;
        pppiStack_48 = (undefined4 ***)0x688777;
        (*(code *)**local_18)();
      }
      return local_11;
    }
    local_1c = (undefined4 ***)0x0;
    pppiStack_48 = &local_24;
    ppppuStack_44 = (undefined4 ****)0x1;
    local_8 = CONCAT31(local_8._1_3_,2);
    ppppuStack_4c = (undefined4 ****)0x6886d8;
    cVar3 = FUN_00bb64e0();
    if (cVar3 == '\0') {
LAB_00688782:
      ppppuStack_44 = (undefined4 ****)0xc3dd3b20;
      local_11 = '\0';
      pppiStack_48 = (undefined4 ***)0x688795;
      FUN_00b940e0();
    }
    else {
      pppiStack_48 = (int ***)&local_20;
      ppppuStack_44 = (undefined4 ****)0x1;
      ppppuStack_4c = (undefined4 ****)0x6886f3;
      cVar3 = FUN_00bb64e0();
      pppuVar1 = local_20;
      if (cVar3 == '\0') goto LAB_00688782;
      ppppuStack_44 = (undefined4 ****)(ppuVar4 + 2);
      pppiStack_48 = local_18;
      ppppuStack_4c = &local_1c;
      cVar3 = FUN_00bb6360();
      pppuVar2 = local_1c;
      if (cVar3 == '\0') goto LAB_00688782;
      local_1c = (undefined4 ***)0x0;
      local_28 = &ppppuStack_4c;
      local_11 = '\x01';
      ppppuStack_4c = (undefined4 ****)pppuVar2;
      FUN_00b664bc(&pppiStack_48,local_24);
      ppppuStack_4c = param_1;
      FUN_00b6664a();
      ppuVar4 = (undefined4 **)((int)(ppuVar4 + 2) + (int)pppuVar1);
    }
    local_8 = local_8 & 0xffffff00;
    if (local_1c != (undefined4 ***)0x0) {
      ppppuStack_44 = (undefined4 ****)0x1;
      pppiStack_48 = (undefined4 ***)0x68875c;
      (*(code *)**local_1c)();
    }
  } while( true );
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00688798(int **param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  int iVar2;
  char cVar3;
  undefined4 *puVar4;
  int local_28;
  int local_24;
  undefined4 *local_20;
  uint local_18;
  
  param_2._3_1_ = (**(code **)(**param_1 + 0x7c))();
  if (param_2._3_1_ != '\0') {
    iVar1 = *(int *)(param_3 + 0x14);
    iVar2 = *(int *)(param_3 + 0x10);
    (**(code **)param_1[1][1])(0);
    local_18 = 0;
    do {
      if ((uint)(iVar1 - iVar2 >> 3) <= local_18) break;
      FUN_00b66601();
      if (local_28 == 0) {
LAB_00688883:
        if (param_2._3_1_ != '\0') {
          cVar3 = (**(code **)(*param_1[1] + 0xc))();
          param_2._3_1_ = '\x01' - (cVar3 != '\0');
          if (param_2._3_1_ == '\0') {
            FUN_00b940e0();
          }
        }
      }
      else {
        if (*(int **)(*(int *)(local_28 + 8) + 8) <= param_1[2]) {
          puVar4 = (undefined4 *)FUN_00b6652f(local_28);
          *puVar4 = 0;
          param_2._3_1_ = (**(code **)(**param_1 + 0x94))(*(undefined4 *)(local_28 + 4));
          if (local_20 != (undefined4 *)0x0) {
            (**(code **)*local_20)();
          }
          if (param_2._3_1_ == '\0') {
            FUN_00b940e0();
            goto LAB_0068886c;
          }
LAB_00688871:
          (**(code **)param_1[1][1])(local_18 + 1);
          goto LAB_00688883;
        }
LAB_0068886c:
        if (param_2._3_1_ != '\0') goto LAB_00688871;
      }
      if (local_24 != 0) {
        FUN_0040127a();
      }
      local_18 = local_18 + 1;
    } while (param_2._3_1_ != '\0');
    if (param_2._3_1_ == '\0') {
      return '\0';
    }
    param_2._3_1_ = (**(code **)(**param_1 + 0x84))();
    if (param_2._3_1_ != '\0') {
      return param_2._3_1_;
    }
  }
  FUN_00b940e0();
  return param_2._3_1_;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00688bc1(undefined4 param_1,int *param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  char cVar1;
  undefined auStack_124 [20];
  undefined4 uStack_110;
  undefined *puStack_10c;
  undefined4 uStack_108;
  undefined auStack_104 [28];
  undefined4 uStack_e8;
  undefined4 uStack_e4;
  undefined auStack_e0 [24];
  undefined4 uStack_c8;
  undefined *puStack_c4;
  undefined4 uStack_c0;
  undefined auStack_bc [16];
  undefined4 uStack_ac;
  undefined *puStack_a8;
  undefined4 uStack_a4;
  undefined4 uStack_a0;
  undefined auStack_9c [28];
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined auStack_78 [20];
  undefined *puStack_64;
  undefined4 *puStack_60;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined4 uStack_54;
  undefined *local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x688bcd;
  uStack_54 = 0x688bd8;
  uStack_54 = FUN_007b294a();
  local_8 = 0;
  uStack_58 = 0x688be5;
  cVar1 = (**(code **)(*param_2 + 4))();
  local_8 = 0xffffffff;
  uStack_58 = 0;
  uStack_5c = 1;
  puStack_60 = (undefined4 *)0x688bf9;
  FUN_00401829();
  if (cVar1 == '\0') {
    uStack_58 = 0x6337778f;
    uStack_5c = 0x688c0c;
    FUN_00b940e0();
    local_18 = &uStack_5c;
    uStack_5c = 0xa0c;
    uStack_58 = 0x212;
    puStack_60 = &local_20;
    puStack_64 = (undefined *)0x688c28;
    puStack_60 = (undefined4 *)FUN_00465be3();
    local_18 = &uStack_5c;
    local_8 = 1;
    uStack_5c = *puStack_60;
    puStack_60 = puStack_60 + 1;
                    // WARNING: Subroutine does not return
    puStack_64 = &UNK_00688c43;
    FUN_0043c023();
  }
  uStack_58 = 1;
  local_18 = (undefined4 *)auStack_78;
  uStack_7c = param_1;
  uStack_80 = 0x688c77;
  FUN_005d44b1();
  uStack_7c = 1;
  local_18 = (undefined4 *)auStack_9c;
  local_20 = param_4;
  local_1c = param_5;
  local_24 = &LAB_00688d43;
  puStack_a8 = &LAB_00688d43;
  uStack_a4 = param_4;
  uStack_a0 = param_5;
  uStack_ac = 0x688ca4;
  FUN_0068900f();
  local_18 = (undefined4 *)auStack_bc;
  local_1c = CONCAT31(local_1c._1_3_,1);
  uStack_c0 = local_1c;
  puStack_c4 = &LAB_007ece40;
  uStack_c8 = 0x688cbe;
  FUN_00688fc6();
  uStack_c0 = 0x688cc8;
  cVar1 = (**(code **)(*param_2 + 0x10))();
  if (cVar1 == '\0') {
    uStack_c0 = 0x1d2c1663;
  }
  else {
    uStack_c0 = 1;
    local_18 = (undefined4 *)auStack_e0;
    uStack_e4 = param_1;
    uStack_e8 = 0x688cec;
    FUN_005d44b1();
    uStack_e4 = 1;
    local_18 = (undefined4 *)auStack_104;
    uStack_108 = param_5;
    puStack_10c = &LAB_00688e92;
    uStack_110 = 0x688d04;
    FUN_00689055();
    local_18 = (undefined4 *)auStack_124;
    local_1c = CONCAT31(local_1c._1_3_,1);
    FUN_00688fc6(&LAB_007ecfd9,local_1c);
    cVar1 = (**(code **)(*param_2 + 0x10))();
    if (cVar1 != '\0') {
      return cVar1;
    }
    uStack_c0 = 0xbb2170b5;
  }
  puStack_c4 = (undefined *)0x688d3a;
  FUN_00b940e0();
  return '\0';
}



void FUN_00688fc6(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bcd385;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0068900f(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_10 = param_1;
  uStack_c = param_2;
  uStack_8 = param_3;
  cVar1 = FUN_007f2630(&local_10);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_10;
      unaff_EBX[3] = uStack_c;
      unaff_EBX[4] = uStack_8;
    }
    *unaff_EBX = &DAT_02bcd38d;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



void FUN_00689055(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bcd395;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0068909e(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006891b8(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,bool),class_boost::_bi::list4<struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>,class_boost::_bi::value<bool>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006890f4(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00689201(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(class_W5FC6A77E::W914EB22B&,class_W8E975A95::WA6D68A00&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list5<class_boost::reference_wrapper<class_W5FC6A77E::W914EB22B>,class_boost::reference_wrapper<class_W8E975A95::WA6D68A00>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0068917d(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0068924d(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(class_W8E975A95::WA6D68A00&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list4<class_boost::reference_wrapper<class_W8E975A95::WA6D68A00>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006891b8(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,bool),class_boost::_bi::list4<struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>,class_boost::_bi::value<bool>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,bool_(__cdecl*)(class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,bool),class_boost::_bi::list4<struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>,class_boost::_bi::value<bool>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_00689201(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(class_W5FC6A77E::W914EB22B&,class_W8E975A95::WA6D68A00&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list5<class_boost::reference_wrapper<class_W5FC6A77E::W914EB22B>,class_boost::reference_wrapper<class_W8E975A95::WA6D68A00>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<bool,bool_(__cdecl*)(class_W5FC6A77E::W914EB22B&,class_W8E975A95::WA6D68A00&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list5<class_boost::reference_wrapper<class_W5FC6A77E::W914EB22B>,class_boost::reference_wrapper<class_W8E975A95::WA6D68A00>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void FUN_0068924d(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(class_W8E975A95::WA6D68A00&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list4<class_boost::reference_wrapper<class_W8E975A95::WA6D68A00>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,bool_(__cdecl*)(class_W8E975A95::WA6D68A00&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list4<class_boost::reference_wrapper<class_W8E975A95::WA6D68A00>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 __thiscall FUN_00689311(undefined4 param_1_00,byte param_1)

{
  FUN_0068932d();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0068932d(undefined4 *param_1)

{
  *param_1 = W5E3281FA::W95E62A14::vftable;
  FUN_004212d2(param_1 + 1);
  *param_1 = W133E5AC5::WE7CAD561::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_0068935d(int param_1_00,int param_1)

{
  char cVar1;
  undefined *puVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined local_3c [24];
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x689369;
  cVar1 = FUN_00ba723a();
  if ((cVar1 == '\0') || (cVar1 = FUN_00ba719f(), cVar1 == '\0')) {
    return '\0';
  }
  local_24 = 7;
  FUN_0040180b(0);
  local_8 = 0;
  puVar2 = (undefined *)(param_1 + 0x5c);
  if (*(char *)(param_1 + 0x58) == '\0') {
    puVar2 = local_3c;
  }
  puVar3 = (undefined4 *)FUN_004212fa((undefined4 *)(param_1_00 + 4),&local_20,puVar2);
  local_18 = *puVar3;
  local_14 = puVar3[1];
  FUN_00401829(1,0);
  local_1c = *(undefined4 *)(param_1_00 + 0x1c);
  local_20 = *(undefined4 *)(param_1_00 + 4);
  cVar1 = FUN_006b8eca();
  cVar1 = '\x01' - (cVar1 != '\0');
  if (cVar1 == '\0') {
    return '\0';
  }
  iVar4 = FUN_006badde();
  *(undefined4 *)(param_1 + 0x16c) = *(undefined4 *)(iVar4 + 0x1c);
  *(undefined4 *)(param_1 + 0x170) = *(undefined4 *)(iVar4 + 0x20);
  *(undefined4 *)(param_1 + 0x174) = *(undefined4 *)(iVar4 + 0x24);
  *(undefined4 *)(param_1 + 0x178) = *(undefined4 *)(iVar4 + 0x28);
  *(undefined4 *)(param_1 + 0x1d4) = 0;
  *(undefined4 *)(param_1 + 0x1cc) = 1;
  return cVar1;
}



char FUN_00689423(undefined4 param_1)

{
  char cVar1;
  
  cVar1 = FUN_00b94b5a(param_1);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x738ccaac);
  }
  else {
    FUN_00b92076();
  }
  return cVar1;
}



undefined4 __thiscall FUN_0068956f(undefined4 param_1_00,byte param_1)

{
  FUN_0063ba72(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006895e8(void)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *(undefined4 *)(in_EAX + 0xc);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0x10);
}



// WARNING: Restarted to delay deadcode elimination for space: stack

uint __thiscall FUN_006895fc(int param_1_00,char param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 local_60;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3ed3f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if ((*(int *)(param_1_00 + 4) != 0) && (param_1 == '\0')) {
    FUN_005d18a3();
    local_c = 0;
    local_60 = (code **)((uint)local_60._1_3_ << 8);
    puVar2 = (undefined4 *)FUN_00b932e0();
    local_c._0_1_ = 1;
    *puVar2 = 0;
    FUN_00b9ed2c();
    local_c._0_1_ = 0;
    if (&stack0x00000000 != (undefined *)0x60) {
      (**local_60)();
    }
    FUN_00b9ed9b();
    FUN_00b66323();
    local_c = CONCAT31(local_c._1_3_,2);
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  uVar1 = FUN_00b940e0();
  ExceptionList = local_14;
  return uVar1 & 0xffffff00;
}



// WARNING: Restarted to delay deadcode elimination for space: stack

uint __fastcall FUN_00689788(int param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 local_60;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3ed3f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if (*(int *)(param_1 + 4) == 0) {
    uVar1 = FUN_00b940e0();
    ExceptionList = local_14;
    return uVar1 & 0xffffff00;
  }
  FUN_00b74bf0();
  FUN_005d18a3();
  local_c = 0;
  local_60 = (code **)((uint)local_60._1_3_ << 8);
  puVar2 = (undefined4 *)FUN_00b932e0();
  local_c._0_1_ = 1;
  *puVar2 = 0;
  FUN_00b9ed2c();
  local_c._0_1_ = 0;
  if (&stack0x00000000 != (undefined *)0x60) {
    (**local_60)();
  }
  FUN_00b9ed9b();
  FUN_00b66323();
  local_c = CONCAT31(local_c._1_3_,2);
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



// WARNING: Removing unreachable block (ram,0x00689a61)
// WARNING: Removing unreachable block (ram,0x00689a67)
// WARNING: Removing unreachable block (ram,0x00689a7a)
// WARNING: Removing unreachable block (ram,0x00689a75)
// WARNING: Removing unreachable block (ram,0x00689a7c)
// WARNING: Removing unreachable block (ram,0x00689a8c)

char __thiscall FUN_006898f4(int param_1_00,undefined *param_1)

{
  undefined4 uVar1;
  char cVar2;
  uint uVar3;
  int **ppiVar4;
  undefined4 *puVar5;
  char cStack_c1;
  undefined4 local_bc;
  int local_b8;
  undefined4 *local_b4;
  int iStack_b0;
  undefined auStack_ac [152];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c39e1f;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  *param_1 = 0;
  if (*(int *)(param_1_00 + 4) == 0) {
    FUN_00b940e0(0x9ba07589);
    cStack_c1 = '\0';
  }
  else {
    local_bc = 0;
    local_b8 = 0;
    local_c = 0;
    ppiVar4 = (int **)FUN_00b66323(uVar3);
    local_c._0_1_ = 1;
    cVar2 = (**(code **)(**ppiVar4 + 0x18))(&local_bc);
    local_c._0_1_ = 0;
    if (iStack_b0 != 0) {
      FUN_0040127a();
    }
    if (cVar2 == '\0') {
      FUN_00b940e0(0x6d0c19a1);
      cStack_c1 = '\0';
    }
    else {
      FUN_00ba76be(auStack_ac);
      local_c._0_1_ = 2;
      FUN_00ba72b9();
      cStack_c1 = FUN_00ba7610();
      local_c._0_1_ = 0;
      FUN_00ba7620();
      if (cStack_c1 == '\0') {
        FUN_00b940e0(0xe34cff00);
      }
    }
    local_c._0_1_ = 3;
    if (cStack_c1 != '\0') {
      puVar5 = (undefined4 *)FUN_00b9eddc(&local_b4);
      uVar1 = *puVar5;
      *puVar5 = 0;
      FUN_0040c727(uVar1);
      if (local_b4 != (undefined4 *)0x0) {
        (**(code **)*local_b4)(1);
      }
      cStack_c1 = '\0';
      FUN_00b940e0(0xe6b7cc6e);
    }
    local_c = 0xffffffff;
    if (local_b8 != 0) {
      FUN_0040127a();
    }
  }
  ExceptionList = local_14;
  return cStack_c1;
}



char __thiscall FUN_00689ac5(int param_1_00,undefined *param_1,char *param_2)

{
  byte bVar1;
  undefined4 uVar2;
  bool bVar3;
  bool bVar4;
  char cVar5;
  short sVar6;
  uint uVar7;
  int **ppiVar8;
  char *pcVar9;
  byte *pbVar10;
  undefined4 *puVar11;
  undefined4 *local_c0;
  int iStack_bc;
  undefined4 *puStack_b8;
  undefined4 local_b4;
  int local_b0;
  undefined auStack_ac [152];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c39dd2;
  local_14 = ExceptionList;
  uVar7 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  if (*(int *)(param_1_00 + 4) == 0) {
    FUN_00b940e0(0x90803757);
    ExceptionList = local_14;
    return '\0';
  }
  *param_1 = 0;
  if (*param_2 != '\0') {
    *param_2 = '\0';
  }
  local_b4 = 0;
  local_b0 = 0;
  local_c = 0;
  ppiVar8 = (int **)FUN_00b66323(uVar7);
  local_c._0_1_ = 1;
  cVar5 = (**(code **)(**ppiVar8 + 0x18))(&local_b4);
  local_c._0_1_ = 0;
  if (iStack_bc != 0) {
    FUN_0040127a();
  }
  if (cVar5 == '\0') {
    FUN_00b940e0(0x928d5b22);
    cVar5 = '\0';
  }
  else {
    FUN_00ba76be(auStack_ac);
    local_c._0_1_ = 2;
    FUN_00ba72b9();
    FUN_00ba729d();
    cVar5 = FUN_00ba7610();
    local_c._0_1_ = 0;
    FUN_00ba7620();
    if (cVar5 == '\0') {
      FUN_00b940e0(0x694b303a);
    }
  }
  puVar11 = (undefined4 *)0x0;
  puStack_b8 = (undefined4 *)0x0;
  local_c._0_1_ = 3;
  if (cVar5 == '\0') goto LAB_00689d2e;
  puVar11 = (undefined4 *)FUN_00b9eddc(&local_c0);
  uVar2 = *puVar11;
  *puVar11 = 0;
  FUN_0040c727(uVar2);
  if (local_c0 != (undefined4 *)0x0) {
    (**(code **)*local_c0)(1);
  }
  puVar11 = puStack_b8;
  cVar5 = puStack_b8 != (undefined4 *)0x0;
  if (!(bool)cVar5) {
    FUN_00b940e0(0x3c45a642);
    goto LAB_00689d2e;
  }
  if (puStack_b8[2] == 1) {
    pcVar9 = (char *)FUN_00b92870();
    bVar4 = true;
    if (*pcVar9 != '\x02') goto LAB_00689c63;
  }
  else {
LAB_00689c63:
    bVar4 = false;
  }
  if ((puVar11[2] == 3) && (pcVar9 = (char *)FUN_00b92870(), *pcVar9 == '\x03')) {
    bVar3 = true;
  }
  else {
    bVar3 = false;
  }
  if (bVar4) {
    *param_1 = 1;
    if (*param_2 != '\0') {
      *param_2 = '\0';
    }
  }
  else if (bVar3) {
    *param_1 = 0;
    pbVar10 = (byte *)FUN_00b92870();
    bVar1 = *pbVar10;
    pbVar10 = (byte *)FUN_00b92870();
    sVar6 = (ushort)*pbVar10 + (ushort)bVar1 * 0x100;
    if (*param_2 == '\0') {
      if ((short *)(param_2 + 2) != (short *)0x0) {
        *(short *)(param_2 + 2) = sVar6;
      }
      *param_2 = '\x01';
    }
    else {
      *(short *)(param_2 + 2) = sVar6;
    }
  }
  else {
    cVar5 = '\0';
    FUN_00b940e0(0xfcf98c0d);
    if (puVar11[2] != 0) {
      local_c0 = (undefined4 *)0x0;
      FUN_00b93390();
      FUN_00b940c0(0xfcf98c0d,local_c0,puVar11[2]);
    }
  }
LAB_00689d2e:
  local_c = (uint)local_c._1_3_ << 8;
  if (puVar11 != (undefined4 *)0x0) {
    (**(code **)*puVar11)(1);
  }
  local_c = 0xffffffff;
  if (local_b0 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return cVar5;
}



// WARNING: Restarted to delay deadcode elimination for space: stack

uint __fastcall FUN_00689d72(int param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 local_60;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3ed3f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if (*(int *)(param_1 + 4) == 0) {
    uVar1 = FUN_00b940e0();
    ExceptionList = local_14;
    return uVar1 & 0xffffff00;
  }
  FUN_00b74bf0();
  FUN_005d18a3();
  local_c = 0;
  local_60 = (code **)((uint)local_60._1_3_ << 8);
  puVar2 = (undefined4 *)FUN_00b932e0();
  local_c._0_1_ = 1;
  *puVar2 = 0;
  FUN_00b9ed2c();
  local_c._0_1_ = 0;
  if (&stack0x00000000 != (undefined *)0x60) {
    (**local_60)();
  }
  FUN_00b66323();
  local_c = CONCAT31(local_c._1_3_,2);
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



uint __fastcall FUN_00689ebf(int param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 **local_4c;
  undefined4 **local_48;
  uint uStack_44;
  undefined4 *local_30;
  int local_2c;
  undefined4 ***local_24;
  undefined4 **local_20;
  undefined local_1c [8];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3ed0c;
  local_14 = ExceptionList;
  uStack_44 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_14;
  local_2c = param_1;
  if (*(int *)(param_1 + 4) == 0) {
    local_48 = (undefined4 **)0x34f7f75a;
    local_4c = (undefined4 **)0x689f05;
    uVar1 = FUN_00b940e0();
    ExceptionList = local_14;
    return uVar1 & 0xffffff00;
  }
  local_48 = &local_20;
  local_4c = (undefined4 **)0x689f17;
  FUN_005d18a3();
  local_4c = &local_30;
  local_48 = (undefined4 **)0x6;
  local_c = 0;
  puVar2 = (undefined4 *)FUN_00bb6240();
  local_c._0_1_ = 1;
  local_48 = (undefined4 **)*puVar2;
  *puVar2 = 0;
  local_24 = &local_48;
  local_4c = (undefined4 **)0x689f4b;
  FUN_00b9ed2c();
  local_c._0_1_ = 0;
  if (local_30 != (undefined4 *)0x0) {
    local_48 = (undefined4 **)0x1;
    local_4c = (undefined4 **)0x689f5d;
    (**(code **)*local_30)();
  }
  local_48 = (undefined4 **)0x689f6a;
  FUN_00b66323();
  local_24 = &local_4c;
  local_c = CONCAT31(local_c._1_3_,2);
  local_4c = local_20;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_1c);
}



uint __fastcall FUN_00689fe7(int param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 **local_4c;
  undefined4 **local_48;
  uint uStack_44;
  undefined4 *local_30;
  int local_2c;
  undefined4 ***local_24;
  undefined4 **local_20;
  undefined local_1c [8];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3ed0c;
  local_14 = ExceptionList;
  uStack_44 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_14;
  local_2c = param_1;
  if (*(int *)(param_1 + 4) == 0) {
    local_48 = (undefined4 **)0x8c7a7053;
    local_4c = (undefined4 **)0x68a02d;
    uVar1 = FUN_00b940e0();
    ExceptionList = local_14;
    return uVar1 & 0xffffff00;
  }
  local_48 = &local_20;
  local_4c = (undefined4 **)0x68a03f;
  FUN_005d18a3();
  local_4c = &local_30;
  local_48 = (undefined4 **)0x7;
  local_c = 0;
  puVar2 = (undefined4 *)FUN_00bb6240();
  local_c._0_1_ = 1;
  local_48 = (undefined4 **)*puVar2;
  *puVar2 = 0;
  local_24 = &local_48;
  local_4c = (undefined4 **)0x68a073;
  FUN_00b9ed2c();
  local_c._0_1_ = 0;
  if (local_30 != (undefined4 *)0x0) {
    local_48 = (undefined4 **)0x1;
    local_4c = (undefined4 **)0x68a085;
    (**(code **)*local_30)();
  }
  local_48 = (undefined4 **)0x68a092;
  FUN_00b66323();
  local_24 = &local_4c;
  local_c = CONCAT31(local_c._1_3_,2);
  local_4c = local_20;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_1c);
}



char __thiscall FUN_0068a10f(int param_1_00,int *param_1)

{
  char cVar1;
  int **ppiVar2;
  char *pcVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  undefined4 local_c0;
  int local_bc;
  undefined4 *puStack_b8;
  undefined4 *local_b4;
  int iStack_b0;
  undefined auStack_ac [152];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c39d85;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if ((undefined4 *)*param_1 != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)*param_1)(1,DAT_0323f878 ^ (uint)&stack0xffffff30);
  }
  *param_1 = 0;
  if (*(int *)(param_1_00 + 4) == 0) {
    FUN_00b940e0(0x5de6fefd);
    ExceptionList = local_14;
    return '\0';
  }
  local_c0 = 0;
  local_bc = 0;
  local_c = 0;
  ppiVar2 = (int **)FUN_00b66323();
  local_c._0_1_ = 1;
  cVar1 = (**(code **)(**ppiVar2 + 0x18))(&local_c0);
  local_c._0_1_ = 0;
  if (iStack_b0 != 0) {
    FUN_0040127a();
  }
  if (cVar1 == '\0') {
    uVar5 = 0x488f2097;
    cVar1 = '\0';
LAB_0068a20d:
    FUN_00b940e0(uVar5);
  }
  else {
    FUN_00ba76be(auStack_ac);
    local_c._0_1_ = 2;
    FUN_00ba72b9();
    cVar1 = FUN_00ba7610();
    local_c._0_1_ = 0;
    FUN_00ba7620();
    if (cVar1 == '\0') {
      uVar5 = 0xd2201041;
      goto LAB_0068a20d;
    }
  }
  puVar4 = (undefined4 *)0x0;
  puStack_b8 = (undefined4 *)0x0;
  local_c._0_1_ = 3;
  if (cVar1 != '\0') {
    puVar4 = (undefined4 *)FUN_00b9eddc(&local_b4);
    uVar5 = *puVar4;
    *puVar4 = 0;
    FUN_0040c727(uVar5);
    if (local_b4 != (undefined4 *)0x0) {
      (**(code **)*local_b4)(1);
    }
    puVar4 = puStack_b8;
    cVar1 = puStack_b8 != (undefined4 *)0x0;
    if ((bool)cVar1) {
      if ((puStack_b8[2] == 0) || (pcVar3 = (char *)FUN_00b92870(), *pcVar3 != '\b')) {
        cVar1 = '\0';
        uVar5 = 0xc29fe540;
      }
      else {
        cVar1 = FUN_00bb6360(param_1,puVar4,1);
        if (cVar1 != '\0') goto LAB_0068a2bc;
        uVar5 = 0x299a2acd;
      }
    }
    else {
      uVar5 = 0x1511ef3f;
    }
    FUN_00b940e0(uVar5);
  }
LAB_0068a2bc:
  local_c = (uint)local_c._1_3_ << 8;
  if (puVar4 != (undefined4 *)0x0) {
    (**(code **)*puVar4)(1);
  }
  local_c = 0xffffffff;
  if (local_bc != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return cVar1;
}



uint __fastcall FUN_0068a2ff(int param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined local_58;
  undefined *puStack_54;
  undefined *local_50;
  undefined4 local_4c;
  undefined4 *local_48;
  uint uStack_44;
  undefined local_31;
  undefined4 *local_30;
  int local_2c;
  undefined4 **local_24;
  undefined4 local_20;
  undefined local_1c [8];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3ed0c;
  local_14 = ExceptionList;
  uStack_44 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_14;
  local_2c = param_1;
  if (*(int *)(param_1 + 4) == 0) {
    local_48 = (undefined4 *)0xb18be923;
    local_4c = 0x68a345;
    uVar1 = FUN_00b940e0();
    ExceptionList = local_14;
    return uVar1 & 0xffffff00;
  }
  local_48 = &local_20;
  local_31 = 0xc;
  local_4c = 0x68a35c;
  FUN_005d18a3();
  local_48 = (undefined4 *)0x0;
  local_4c = 1;
  local_30 = (undefined4 *)&local_58;
  local_c = 0;
  local_50 = &local_31;
  local_58 = 0;
  puVar2 = (undefined4 *)FUN_00b932e0();
  local_c._0_1_ = 1;
  local_48 = (undefined4 *)*puVar2;
  *puVar2 = 0;
  local_24 = &local_48;
  local_4c = 0x68a3a2;
  FUN_00b9ed2c();
  local_c._0_1_ = 0;
  if (local_30 != (undefined4 *)0x0) {
    local_48 = (undefined4 *)0x1;
    local_4c = 0x68a3b4;
    (**(code **)*local_30)();
  }
  local_48 = (undefined4 *)0x68a3c1;
  FUN_00b66323();
  local_24 = (undefined4 **)&local_4c;
  local_c = CONCAT31(local_c._1_3_,2);
  local_4c = local_20;
  local_50 = local_1c;
                    // WARNING: Subroutine does not return
  puStack_54 = &UNK_0068a3e3;
  FUN_0043c023();
}



char __thiscall
FUN_0068a50d(int *param_1_00,char *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  char cVar1;
  undefined4 uVar2;
  
  cVar1 = (**(code **)(*param_1_00 + 0x38))(param_1,param_3,param_4);
  if (cVar1 == '\0') {
    uVar2 = 0x2339f114;
  }
  else {
    if (*param_1 == '\0') {
      return cVar1;
    }
    cVar1 = (**(code **)(*param_1_00 + 0x3c))(param_1,param_2,param_3,param_5);
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0x583e3992;
  }
  FUN_00b940e0(uVar2);
  return '\0';
}



void FUN_0068a56b(char *param_1,int param_2,int *param_3)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  int **ppiVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  undefined4 *puStack_64;
  undefined4 uStack_60;
  undefined4 *puStack_5c;
  int iStack_58;
  int iStack_54;
  char *local_50;
  int *local_4c;
  undefined auStack_44 [4];
  char cStack_40;
  uint uStack_38;
  uint uStack_34;
  char acStack_30 [8];
  uint uStack_28;
  uint uStack_24;
  uint local_1c;
  void *local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  uStack_10 = &LAB_00c39d31;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&puStack_64;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_14;
  local_50 = param_1;
  *param_1 = '\0';
  cVar2 = (**(code **)(*param_3 + 4))(uVar3);
  uStack_60 = CONCAT13(cVar2,(undefined3)uStack_60);
  if (cVar2 == '\0') {
    uVar6 = 0x95350a2c;
  }
  else {
    cVar2 = (**(code **)(*param_3 + 0x20))();
    uStack_60 = CONCAT13(cVar2,(undefined3)uStack_60);
    if (cVar2 != '\0') goto LAB_0068a5ed;
    uVar6 = 0x4d294ba9;
  }
  FUN_00b940e0(uVar6);
LAB_0068a5ed:
  iStack_54 = param_2;
  do {
    if (uStack_60._3_1_ == '\0') {
LAB_0068a77a:
      ExceptionList = local_14;
      ___security_check_cookie_4();
      return;
    }
    puStack_5c = (undefined4 *)0x0;
    uStack_c = 0;
    cVar2 = FUN_00bb1450(0x400);
    piVar1 = local_4c;
    uStack_60 = CONCAT13(cVar2,(undefined3)uStack_60);
    if (cVar2 == '\0') {
      uVar6 = 0x5fe971f2;
LAB_0068a6ac:
      FUN_00b940e0(uVar6);
      puVar5 = puStack_5c;
    }
    else {
      iStack_58 = puStack_5c[2];
      ppiVar4 = (int **)FUN_00b66323();
      uStack_c = CONCAT31(uStack_c._1_3_,1);
      (**(code **)(**ppiVar4 + 0x10))(iStack_58,1);
      local_14 = (void *)((uint)local_14 & 0xffffff00);
      if (local_4c != (int *)0x0) {
        FUN_0040127a();
      }
      puVar5 = puStack_64;
      cVar2 = (**(code **)(*piVar1 + 8))(puStack_5c,uStack_60,puStack_64);
      uStack_60 = CONCAT13(cVar2,(undefined3)uStack_60);
      if (cVar2 == '\0') {
        uVar6 = 0x88aae918;
        goto LAB_0068a6ac;
      }
      cVar2 = (**(code **)(*piVar1 + 0xc))(local_50);
      uStack_60 = CONCAT13(cVar2,(undefined3)uStack_60);
      if (cVar2 == '\0') {
        uVar6 = 0x9173026c;
        goto LAB_0068a6ac;
      }
      if (*local_50 == '\0') {
LAB_0068a76d:
        uStack_c = 0xffffffff;
        (**(code **)*puVar5)(1);
        goto LAB_0068a77a;
      }
      iStack_54 = iStack_54 + iStack_58;
      (**(code **)(*param_3 + 0x24))(acStack_30);
      uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,2);
      (**(code **)(*param_3 + 0x2c))(auStack_44);
      if ((((-(uint)(acStack_30[0] != '\0') & 0x6a1cd8) != 0) &&
          ((-(uint)(cStack_40 != '\0') & 0x6a1cd8) != 0)) &&
         ((uStack_34 < uStack_24 || ((uStack_34 <= uStack_24 && (uStack_38 <= uStack_28)))))) {
        if (cStack_40 != '\0') {
          cStack_40 = '\0';
        }
        if (acStack_30[0] != '\0') {
          acStack_30[0] = '\0';
        }
        goto LAB_0068a76d;
      }
      if (cStack_40 != '\0') {
        cStack_40 = '\0';
      }
      if (acStack_30[0] != '\0') {
        acStack_30[0] = '\0';
      }
    }
    uStack_c = 0xffffffff;
    if (puVar5 != (undefined4 *)0x0) {
      (**(code **)*puVar5)(1);
    }
  } while( true );
}



char __thiscall
FUN_0068a79e(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 unaff_retaddr;
  undefined4 uVar2;
  
  cVar1 = (**(code **)(*param_1_00 + 0x14))(param_3);
  if (cVar1 == '\0') {
    uVar2 = 0x4cd4ebe0;
  }
  else {
    if ((char)param_3 == '\0') {
      return cVar1;
    }
    cVar1 = (**(code **)(*param_1_00 + 0x10))(unaff_retaddr,param_1);
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0xe435356;
  }
  FUN_00b940e0(uVar2);
  return '\0';
}



char __thiscall FUN_0068a84b(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  FUN_0048867c(param_1);
  cVar1 = (**(code **)(*param_1_00 + 0x24))();
  if (cVar1 == '\0') {
    uVar2 = 0x55e3f617;
  }
  else {
    cVar1 = (**(code **)(*param_1_00 + 0x28))(param_1);
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0x6dd76493;
  }
  FUN_00b940e0(uVar2);
  return '\0';
}



char __thiscall FUN_0068a89b(int *param_1_00,undefined *param_1)

{
  undefined **ppuVar1;
  char cVar2;
  uint uVar3;
  int **ppiVar4;
  undefined4 uVar5;
  int *piVar6;
  char cStack_51;
  undefined4 *puStack_50;
  int local_4c;
  undefined4 *puStack_48;
  undefined4 uStack_44;
  undefined **ppuStack_40;
  undefined4 uStack_3c;
  int iStack_34;
  undefined auStack_30 [28];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c4a75e;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_14;
  local_4c = 0;
  *param_1 = 0;
  cStack_51 = (**(code **)(*param_1_00 + 0x18))(uVar3);
  if (cStack_51 == '\0') {
    FUN_00b940e0(0xe2f510d);
  }
  puStack_50 = (undefined4 *)0x0;
  uStack_c = 0;
  if (cStack_51 != '\0') {
    ppiVar4 = (int **)FUN_006895e8();
    uStack_c = CONCAT31(uStack_c._1_3_,1);
    piVar6 = *ppiVar4;
    local_4c = 1;
    puStack_48 = (undefined4 *)0x186a0;
    uStack_44 = 0;
    uVar5 = FUN_00b9fb90(auStack_30,&puStack_48);
    ppuStack_40 = W5FC6A77E::WFD19C16F::vftable;
    uStack_3c = 0x1000;
    uStack_c = 3;
    local_4c = 7;
    cVar2 = (**(code **)(*piVar6 + 0x10))(&puStack_50,&ppuStack_40,uVar5);
    if ((cVar2 == '\0') || (cStack_51 = '\x01', puStack_50 == (undefined4 *)0x0)) {
      cStack_51 = '\0';
    }
    ppuStack_40 = W5FC6A77E::W89035DA7::vftable;
    FUN_00b9fb30();
    uStack_c = 0;
    if (iStack_34 != 0) {
      FUN_0040127a();
    }
    if (cStack_51 == '\0') {
      FUN_00b940e0(0x1b6c442f);
    }
    else {
      local_4c = -0x7c2353a4;
      piVar6 = (int *)FUN_00b941c0(&local_4c,&puStack_48,&DAT_00dde534);
      ppuVar1 = (undefined **)*piVar6;
      *piVar6 = 0;
      uStack_c = CONCAT31(uStack_c._1_3_,4);
      ppuStack_40 = ppuVar1;
      if (puStack_48 != (undefined4 *)0x0) {
        (**(code **)*puStack_48)(1);
      }
      if ((undefined *)puStack_50[2] == ppuVar1[2]) {
        local_4c = -1;
        cVar2 = FUN_00bb6760(&local_4c,puStack_50,ppuVar1);
        if ((cVar2 != '\0') && (local_4c == 0)) {
          *param_1 = 1;
        }
      }
      uStack_c = uStack_c & 0xffffff00;
      (**(code **)*ppuVar1)(1);
    }
  }
  uStack_c = 0xffffffff;
  if (puStack_50 != (undefined4 *)0x0) {
    (**(code **)*puStack_50)(1);
  }
  ExceptionList = local_14;
  return cStack_51;
}



char __thiscall FUN_0068aa6b(int *param_1_00,undefined *param_1)

{
  undefined **ppuVar1;
  char cVar2;
  uint uVar3;
  int **ppiVar4;
  undefined4 uVar5;
  int *piVar6;
  char cStack_51;
  undefined4 *puStack_50;
  int local_4c;
  undefined4 *puStack_48;
  undefined4 uStack_44;
  undefined **ppuStack_40;
  undefined4 uStack_3c;
  int iStack_34;
  undefined auStack_30 [28];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c4a75e;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_14;
  local_4c = 0;
  *param_1 = 0;
  cStack_51 = (**(code **)(*param_1_00 + 0x24))(uVar3);
  if (cStack_51 == '\0') {
    FUN_00b940e0(0xde323d80);
  }
  puStack_50 = (undefined4 *)0x0;
  uStack_c = 0;
  if (cStack_51 != '\0') {
    ppiVar4 = (int **)FUN_006895e8();
    uStack_c = CONCAT31(uStack_c._1_3_,1);
    piVar6 = *ppiVar4;
    local_4c = 1;
    puStack_48 = (undefined4 *)0x186a0;
    uStack_44 = 0;
    uVar5 = FUN_00b9fb90(auStack_30,&puStack_48);
    ppuStack_40 = W5FC6A77E::WFD19C16F::vftable;
    uStack_3c = 0x1000;
    uStack_c = 3;
    local_4c = 7;
    cVar2 = (**(code **)(*piVar6 + 0x10))(&puStack_50,&ppuStack_40,uVar5);
    if ((cVar2 == '\0') || (cStack_51 = '\x01', puStack_50 == (undefined4 *)0x0)) {
      cStack_51 = '\0';
    }
    ppuStack_40 = W5FC6A77E::W89035DA7::vftable;
    FUN_00b9fb30();
    uStack_c = 0;
    if (iStack_34 != 0) {
      FUN_0040127a();
    }
    if (cStack_51 == '\0') {
      FUN_00b940e0(0xe5d6e08f);
    }
    else {
      local_4c = -0x63926db;
      piVar6 = (int *)FUN_00b941c0(&local_4c,&puStack_48,&DAT_00dde544);
      ppuVar1 = (undefined **)*piVar6;
      *piVar6 = 0;
      uStack_c = CONCAT31(uStack_c._1_3_,4);
      ppuStack_40 = ppuVar1;
      if (puStack_48 != (undefined4 *)0x0) {
        (**(code **)*puStack_48)(1);
      }
      if ((undefined *)puStack_50[2] == ppuVar1[2]) {
        local_4c = -1;
        cVar2 = FUN_00bb6760(&local_4c,puStack_50,ppuVar1);
        if ((cVar2 != '\0') && (local_4c == 0)) {
          *param_1 = 1;
        }
      }
      uStack_c = uStack_c & 0xffffff00;
      (**(code **)*ppuVar1)(1);
    }
  }
  uStack_c = 0xffffffff;
  if (puStack_50 != (undefined4 *)0x0) {
    (**(code **)*puStack_50)(1);
  }
  ExceptionList = local_14;
  return cStack_51;
}



void Catch_All_0068ac81(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



bool FUN_0068ac98(int param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  bool bVar4;
  undefined local_24 [16];
  int local_14 [4];
  
  piVar1 = (int *)FUN_0047b1a4(local_24);
  local_14[0] = *piVar1;
  local_14[1] = piVar1[1];
  local_14[2] = piVar1[2];
  local_14[3] = piVar1[3];
  iVar2 = 4;
  bVar4 = true;
  piVar1 = (int *)(param_1 + 0x164);
  piVar3 = local_14;
  do {
    if (iVar2 == 0) {
      return bVar4;
    }
    iVar2 = iVar2 + -1;
    bVar4 = *piVar1 == *piVar3;
    piVar1 = piVar1 + 1;
    piVar3 = piVar3 + 1;
  } while (bVar4);
  return bVar4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0068accf(void)

{
  undefined4 *puVar1;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x68acdb;
  puVar1 = (undefined4 *)FUN_0068bcc1(local_20);
  local_8 = 0;
  local_18 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 * __thiscall FUN_0068addb(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W5E3281FA::WC47E14F0::vftable;
  FUN_00ba327a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0068adfd(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int **ppiVar1;
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x68ae09;
  ppiVar1 = (int **)(**(code **)(*param_1_00 + 0xc))(local_18);
  local_8 = 0;
  (**(code **)(**ppiVar1 + 0x40))(param_1,param_2);
  local_8 = 0xffffffff;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_0068ae3b(undefined4 param_1_00,undefined4 param_1,int param_2)

{
  undefined4 uVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined4 *local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0;
  piVar2 = (int *)FUN_00b9eddc(&local_1c);
  puVar3 = (undefined4 *)*piVar2;
  *piVar2 = 0;
  local_8 = CONCAT31(local_8._1_3_,1);
  local_18 = puVar3;
  if (local_1c != (undefined4 *)0x0) {
    (**(code **)*local_1c)(1);
  }
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)FUN_00b933f0(&local_20,0);
    uVar1 = *puVar3;
    *puVar3 = 0;
    FUN_0040c727(uVar1);
    if (local_20 != (undefined4 *)0x0) {
      (**(code **)*local_20)(1);
    }
  }
  puVar3 = local_18;
  local_11 = FUN_0068afc3(param_1_00,local_18);
  if (local_11 == '\0') {
    FUN_00b940e0(0x407cba93);
  }
  local_8 = local_8 & 0xffffff00;
  if (puVar3 != (undefined4 *)0x0) {
    (**(code **)*puVar3)(1);
  }
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    FUN_0040127a();
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0068af77)

char __fastcall FUN_0068aef2(undefined4 param_1)

{
  char cVar1;
  int local_1c;
  
  cVar1 = FUN_0068b1fb(param_1);
  if (cVar1 == '\0') {
    FUN_00b940e0();
  }
  else {
    FUN_005d18a3();
    FUN_005d11c9();
    if (local_1c != 0) {
      FUN_0040127a();
    }
    FUN_00b9ed2c();
  }
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

uint FUN_0068af88(undefined4 *param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  uStack_24 = 0x5eed5f5c;
  uStack_28 = 0x68afa7;
  uVar1 = FUN_00b940e0();
  local_8 = 0xffffffff;
  puVar2 = (undefined4 *)auStack_20;
  if (param_1 != (undefined4 *)0x0) {
    uStack_24 = 1;
    puVar2 = &uStack_28;
    uStack_28 = 0x68afb9;
    uVar1 = (**(code **)*param_1)();
  }
  *(undefined4 *)((int)puVar2 + -4) = 0x68afc0;
  return uVar1 & 0xffffff00;
}



bool FUN_0068afc3(int *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *puVar2;
  int **ppiVar3;
  undefined4 *puVar4;
  undefined local_70;
  undefined4 uStack_6c;
  undefined4 **local_68;
  undefined4 **ppuStack_64;
  undefined **local_60;
  uint uStack_5c;
  bool local_45;
  undefined4 *local_44;
  char local_40;
  ushort local_3e;
  undefined4 *local_3c;
  uint local_38;
  undefined4 *local_34;
  undefined ***local_30;
  int iStack_2c;
  void *local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  uStack_10 = &LAB_00c3ecae;
  local_14 = ExceptionList;
  uStack_5c = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_14;
  local_34 = (undefined4 *)0x0;
  local_60 = (undefined **)0x68b003;
  FUN_0068b4d5();
  local_c = 0;
  local_45 = (-(uint)(local_40 != '\0') & 0x6a1cd8) != 0;
  if (!local_45) {
    local_60 = (undefined **)0x6a18c75d;
    ppuStack_64 = (undefined4 **)0x68b031;
    FUN_00b940e0();
  }
  puVar4 = (undefined4 *)0x0;
  local_3c = (undefined4 *)0x0;
  local_c._0_1_ = 1;
  if (local_45) {
    local_38 = (uint)local_3e;
    local_60 = (undefined **)0x0;
    ppuStack_64 = (undefined4 **)0x2;
    local_34 = (undefined4 *)&local_70;
    local_68 = (undefined4 **)&local_38;
    local_70 = 0;
    local_60 = (undefined **)FUN_00b92ef0();
    ppuStack_64 = (undefined4 **)param_2;
    local_68 = &local_34;
    local_c._0_1_ = 2;
    uStack_6c = 0x68b081;
    puVar4 = (undefined4 *)FUN_00bb6dd0();
    local_c = CONCAT31(local_c._1_3_,3);
    local_60 = (undefined **)*puVar4;
    local_30 = &local_60;
    *puVar4 = 0;
    ppuStack_64 = &local_44;
    local_68 = (undefined4 **)0x68b09f;
    puVar4 = (undefined4 *)FUN_0068b558();
    local_60 = (undefined **)*puVar4;
    *puVar4 = 0;
    ppuStack_64 = (undefined4 **)0x68b0ad;
    FUN_0040c727();
    if (local_44 != (undefined4 *)0x0) {
      local_60 = (undefined **)0x1;
      ppuStack_64 = (undefined4 **)0x68b0bb;
      (**(code **)*local_44)();
    }
    local_c._0_1_ = 2;
    if (local_34 != (undefined4 *)0x0) {
      local_60 = (undefined **)0x1;
      ppuStack_64 = (undefined4 **)0x68b0ce;
      (**(code **)*local_34)();
    }
    local_c._0_1_ = 1;
    local_60 = (undefined **)0x68b0dc;
    FUN_00b92d80();
    puVar4 = local_3c;
    local_45 = local_3c != (undefined4 *)0x0;
    if (!local_45) {
      local_60 = (undefined **)0xa98de3fe;
      ppuStack_64 = (undefined4 **)0x68b0fc;
      FUN_00b940e0();
    }
  }
  local_44 = (undefined4 *)0x0;
  local_c._0_1_ = 4;
  if (local_45 != false) {
    ppuStack_64 = &local_34;
    local_60 = (undefined **)0x7e;
    local_68 = (undefined4 **)0x68b122;
    puVar2 = (undefined4 *)FUN_00b933f0();
    local_60 = (undefined **)*puVar2;
    *puVar2 = 0;
    ppuStack_64 = (undefined4 **)0x68b132;
    FUN_0040c727();
    if (local_34 != (undefined4 *)0x0) {
      local_60 = (undefined **)0x1;
      ppuStack_64 = (undefined4 **)0x68b140;
      (**(code **)*local_34)();
    }
    puVar2 = local_44;
    local_60 = (undefined **)puVar4[2];
    ppuStack_64 = (undefined4 **)0x0;
    uStack_6c = 0x68b153;
    local_68 = (undefined4 **)puVar4;
    FUN_00b93040();
    local_60 = (undefined **)&local_30;
    local_38 = 0;
    ppuStack_64 = (undefined4 **)0x68b164;
    ppiVar3 = (int **)(**(code **)(*param_1 + 0xc))();
    uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,5);
    ppuStack_64 = (undefined4 **)puVar2;
    local_68 = &local_3c;
    local_38 = 1;
    uStack_6c = 0x68b17e;
    cVar1 = (**(code **)(**ppiVar3 + 0x3c))();
    if ((cVar1 == '\0') || (local_45 = true, local_38 != puVar2[2])) {
      local_45 = false;
    }
    local_c._0_1_ = 4;
    local_c._1_3_ = 0;
    if (iStack_2c != 0) {
      local_60 = (undefined **)0x68b1a9;
      FUN_0040127a();
    }
    if (local_45 == false) {
      local_60 = (undefined **)0xbca8450c;
      ppuStack_64 = (undefined4 **)0x68b1be;
      FUN_00b940e0();
    }
  }
  local_c._0_1_ = 1;
  if (local_44 != (undefined4 *)0x0) {
    local_60 = (undefined **)0x1;
    ppuStack_64 = (undefined4 **)0x68b1d2;
    (**(code **)*local_44)();
  }
  local_c = (uint)local_c._1_3_ << 8;
  if (puVar4 != (undefined4 *)0x0) {
    local_60 = (undefined **)0x1;
    ppuStack_64 = (undefined4 **)0x68b1e2;
    (**(code **)*puVar4)();
  }
  ExceptionList = local_14;
  return local_45;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_0068b1fb(void)

{
  char cVar1;
  char *pcVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined4 *local_20;
  char local_1c;
  short local_1a;
  undefined4 *local_18;
  short local_14 [6];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_18 = (undefined4 *)0x0;
  local_8 = 0;
  cVar1 = FUN_0068b363(&local_18);
  puVar3 = local_18;
  if (cVar1 == '\0') {
    FUN_00b940e0(0xef0aae68);
    puVar3 = local_18;
LAB_0068b257:
    cVar1 = '\0';
  }
  else {
    if ((local_18 == (undefined4 *)0x0) || ((uint)local_18[2] < 2)) {
      FUN_00b940e0(0x9f50217a);
      goto LAB_0068b257;
    }
    cVar1 = '\x01';
  }
  local_20 = (undefined4 *)0x0;
  local_8._0_1_ = 1;
  if (cVar1 != '\0') {
    cVar1 = FUN_00bb6360(&local_20,puVar3,0);
    if (cVar1 == '\0') {
      uVar4 = 0x7bceb0ca;
      cVar1 = '\0';
    }
    else {
      cVar1 = FUN_00bb6470(local_14,0);
      if (cVar1 != '\0') goto LAB_0068b2b5;
      uVar4 = 0x5720166d;
    }
    FUN_00b940e0(uVar4);
  }
LAB_0068b2b5:
  local_1c = '\0';
  local_8._0_1_ = 2;
  if (cVar1 != '\0') {
    pcVar2 = (char *)FUN_0068b4d5();
    if (*pcVar2 != '\0') {
      local_1a = *(short *)(pcVar2 + 2);
      local_1c = '\x01';
    }
    cVar1 = (-(uint)(local_1c != '\0') & 0x6a1cd8) != 0;
    if ((bool)cVar1) {
      cVar1 = local_14[0] == local_1a;
      if ((bool)cVar1) {
        FUN_005d06ce();
        puVar3 = local_18;
        goto LAB_0068b338;
      }
      uVar4 = 0xa1998677;
    }
    else {
      uVar4 = 0x153fd0aa;
    }
    FUN_00b940e0(uVar4);
    puVar3 = local_18;
  }
LAB_0068b338:
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != (undefined4 *)0x0) {
    (**(code **)*local_20)(1);
  }
  local_8 = 0xffffffff;
  if (puVar3 != (undefined4 *)0x0) {
    (**(code **)*puVar3)(1);
  }
  return cVar1;
}



// WARNING: Restarted to delay deadcode elimination for space: stack

uint FUN_0068b363(void)

{
  code **ppcVar1;
  char cVar2;
  int **ppiVar3;
  undefined4 *puVar4;
  int *unaff_ESI;
  undefined auStack_60 [8];
  int iStack_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined **ppuStack_4c;
  undefined *puStack_48;
  uint uStack_44;
  undefined4 uStack_38;
  undefined **ppuStack_34;
  void *pvStack_30;
  undefined4 local_2c;
  undefined *puStack_28;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c4a68a;
  local_14 = ExceptionList;
  uStack_44 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_14;
  puStack_48 = local_20;
  local_2c = 0;
  ppuStack_4c = (undefined **)0x68b3a0;
  ppiVar3 = (int **)(**(code **)(*unaff_ESI + 0xc))();
  ppuStack_34 = &PTR_DAT_03057af8;
  ppuStack_4c = (undefined **)&ppuStack_34;
  uStack_50 = &local_2c;
  uStack_54 = 1;
  puStack_10 = (undefined *)0x1;
  puStack_28 = auStack_60;
  iStack_58 = (int)&uStack_38 + 3;
  auStack_60[0] = 0;
  pvStack_30 = (void *)0x3;
  cVar2 = (**(code **)(**ppiVar3 + 0xc))();
  if ((cVar2 == '\0') || (uStack_50._0_3_ = CONCAT12(1,(ushort)uStack_50), uStack_44 != 1)) {
    uStack_50._0_3_ = (uint3)(ushort)uStack_50;
  }
  puStack_28 = (undefined *)0xffffffff;
  ppuStack_4c = &PTR_DAT_030577b8;
  if (uStack_38 != 0) {
    FUN_0040127a();
  }
  if (uStack_50._2_1_ == '\0') {
    FUN_00b940e0();
  }
  else {
    uStack_50._0_3_ = CONCAT12(uStack_50._3_1_ == '~',(ushort)uStack_50);
    if (uStack_50._3_1_ != '~') {
      FUN_0068b9e4();
    }
  }
  ppuStack_4c = (undefined **)0x0;
  puStack_28 = (undefined *)0x2;
  if (uStack_50._2_1_ != '\0') {
    cVar2 = FUN_0068b789();
    uStack_50._0_3_ = CONCAT12(cVar2,(ushort)uStack_50);
    if (cVar2 == '\0') {
      FUN_00b940e0();
    }
    else {
      ppuStack_4c = (undefined **)0x0;
      puVar4 = (undefined4 *)FUN_0068b641(&stack0xffffffc0);
      ppcVar1 = (code **)*puVar4;
      *puVar4 = 0;
      FUN_0040c727();
      if (&stack0x00000000 != (undefined *)0x64) {
        (**ppcVar1)();
      }
    }
  }
  puStack_28 = (undefined *)0xffffffff;
  if (ppuStack_4c != (undefined **)0x0) {
    (**(code **)*ppuStack_4c)();
  }
  ExceptionList = pvStack_30;
  return (uint)uStack_50 >> 0x10 & 0xff;
}



void FUN_0068b4d5(void)

{
  ushort uVar1;
  char cVar2;
  int in_EAX;
  undefined *unaff_EBX;
  int unaff_ESI;
  
  *(undefined2 *)(unaff_ESI + 0x20c) = 0xffff;
  if (*(int *)(in_EAX + 8) != 0) {
    cVar2 = FUN_00b93390();
    if (cVar2 == '\0') {
      FUN_00b940e0();
      *unaff_EBX = 0;
      return;
    }
    FUN_0068bc1a();
  }
  uVar1 = *(ushort *)(unaff_ESI + 0x20c);
  *unaff_EBX = 0;
  if ((ushort *)(unaff_EBX + 2) != (ushort *)0x0) {
    *(ushort *)(unaff_EBX + 2) = ~uVar1;
  }
  *unaff_EBX = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068b558(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_18 = (undefined4 *)0x0;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  local_14 = 0x4249;
  local_12 = 0x5c5c;
  puVar1 = (undefined4 *)FUN_00b941c0(&local_14,&local_1c,&DAT_00dde288);
  local_8._0_1_ = 3;
  FUN_00bb71a0(&local_18,0x7d,*puVar1);
  local_8._0_1_ = 2;
  if (local_1c != (undefined4 *)0x0) {
    (**(code **)*local_1c)(1);
  }
  *param_1 = 0;
  local_14 = 0x60a1;
  local_12 = 0xdc64;
  puVar2 = (undefined4 *)FUN_00b941c0(&local_14,&local_1c,&DAT_00dde28c);
  puVar1 = local_18;
  local_8._0_1_ = 4;
  FUN_00bb71a0(param_1,0x7e,*puVar2);
  local_8._0_1_ = 2;
  if (local_1c != (undefined4 *)0x0) {
    (**(code **)*local_1c)(1);
  }
  local_8._0_1_ = 1;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (param_2 != (undefined4 *)0x0) {
    (**(code **)*param_2)(1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068b641(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined local_58;
  undefined4 uStack_54;
  undefined4 **local_50;
  undefined4 **ppuStack_4c;
  undefined *puStack_48;
  undefined4 local_24;
  undefined4 *local_20;
  undefined4 *local_1c;
  undefined2 local_18;
  undefined2 local_16;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_24 = 0;
  local_1c = (undefined4 *)0x0;
  puStack_48 = (undefined *)0x0;
  ppuStack_4c = (undefined4 **)0x1;
  local_20 = (undefined4 *)&local_58;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  local_58 = 0;
  local_50 = (undefined4 **)&DAT_00dde290;
  uVar1 = FUN_00b92ef0();
  local_8._0_1_ = 3;
  local_18 = 0x60a1;
  puStack_48 = &DAT_00dde294;
  local_16 = 0xdc64;
  ppuStack_4c = &local_20;
  local_50 = (undefined4 **)&local_18;
  uStack_54 = 0x68b6a8;
  puVar2 = (undefined4 *)FUN_00b941c0();
  local_8._0_1_ = 4;
  ppuStack_4c = (undefined4 **)*puVar2;
  local_50 = &local_1c;
  uStack_54 = 0x68b6bc;
  puStack_48 = (undefined *)uVar1;
  FUN_00bb6f90();
  local_8._0_1_ = 3;
  if (local_20 != (undefined4 *)0x0) {
    puStack_48 = (undefined *)0x1;
    ppuStack_4c = (undefined4 **)0x68b6cf;
    (**(code **)*local_20)();
  }
  local_8._0_1_ = 2;
  puStack_48 = (undefined *)0x68b6db;
  FUN_00b92d80();
  *param_1 = 0;
  puStack_48 = (undefined *)0x0;
  ppuStack_4c = (undefined4 **)0x1;
  local_20 = (undefined4 *)&local_58;
  local_24 = 1;
  local_58 = 0;
  local_50 = (undefined4 **)&DAT_00dde298;
  uVar1 = FUN_00b92ef0();
  local_8._0_1_ = 5;
  local_18 = 0x4249;
  puStack_48 = &DAT_00dde29c;
  local_16 = 0x5c5c;
  ppuStack_4c = &local_20;
  local_50 = (undefined4 **)&local_18;
  uStack_54 = 0x68b72c;
  puVar3 = (undefined4 *)FUN_00b941c0();
  puVar2 = local_1c;
  local_8._0_1_ = 6;
  ppuStack_4c = (undefined4 **)*puVar3;
  local_50 = (undefined4 **)param_1;
  uStack_54 = 0x68b741;
  puStack_48 = (undefined *)uVar1;
  FUN_00bb6f90();
  local_8._0_1_ = 5;
  if (local_20 != (undefined4 *)0x0) {
    puStack_48 = (undefined *)0x1;
    ppuStack_4c = (undefined4 **)0x68b754;
    (**(code **)*local_20)();
  }
  local_8._0_1_ = 2;
  puStack_48 = (undefined *)0x68b760;
  FUN_00b92d80();
  local_8._0_1_ = 1;
  if (puVar2 != (undefined4 *)0x0) {
    puStack_48 = (undefined *)0x1;
    ppuStack_4c = (undefined4 **)0x68b76e;
    (**(code **)*puVar2)();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (param_2 != (undefined4 *)0x0) {
    puStack_48 = (undefined *)0x1;
    ppuStack_4c = (undefined4 **)0x68b77e;
    (**(code **)*param_2)();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_0068b789(int *param_1_00,undefined4 param_1)

{
  undefined **ppuVar1;
  char cVar2;
  int **ppiVar3;
  int iVar4;
  uint uStackY_ac;
  undefined4 uStackY_a8;
  undefined ***pppuStackY_a4;
  undefined ***pppuStackY_a0;
  undefined **local_4c;
  undefined4 local_48;
  int local_40;
  undefined4 local_3c;
  uint *local_38;
  undefined **local_34;
  undefined **local_30;
  undefined4 *local_2c;
  uint local_28;
  char local_21;
  char local_20;
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x78;
  local_8 = 0x68b795;
  local_3c = param_1;
  local_28 = 0;
  pppuStackY_a0 = (undefined ***)0x68b7ae;
  FUN_00b72ec0();
  local_2c = (undefined4 *)0x0;
  local_8 = 1;
  local_21 = '\x01';
  iVar4 = 0x14;
  while (iVar4 != 0) {
    pppuStackY_a0 = (undefined ***)0x68b7d2;
    ppiVar3 = (int **)(**(code **)(*param_1_00 + 0xc))();
    local_30 = &PTR_DAT_03057b80;
    local_4c = W5FC6A77E::WFD19C16F::vftable;
    local_48 = 0x1000;
    pppuStackY_a0 = &local_30;
    pppuStackY_a4 = &local_4c;
    local_8 = 4;
    local_28 = local_28 | 7;
    uStackY_a8 = &local_2c;
    uStackY_ac = 0x68b80b;
    cVar2 = (**(code **)(**ppiVar3 + 0x10))();
    if ((cVar2 == '\0') || (local_21 = '\x01', local_2c == (undefined4 *)0x0)) {
      local_21 = '\0';
    }
    if ((local_28 & 4) != 0) {
      local_28 = local_28 & 0xfffffffb;
      local_4c = W5FC6A77E::W89035DA7::vftable;
    }
    if ((local_28 & 2) != 0) {
      local_28 = local_28 & 0xfffffffd;
      local_30 = &PTR_DAT_030577b8;
    }
    local_8 = 1;
    if (((local_28 & 1) != 0) && (local_28 = local_28 & 0xfffffffe, local_40 != 0)) {
      FUN_0040127a();
    }
    if (local_21 == '\0') goto LAB_0068b9b3;
    if (local_2c[2] == 0) {
      pppuStackY_a0 = (undefined ***)0x68b8e5;
      Sleep(0x32);
      iVar4 = iVar4 + -1;
    }
    else {
      local_34 = (undefined **)0x0;
      local_21 = FUN_00b93390();
      if (local_21 == '\0') goto LAB_0068b9b3;
      pppuStackY_a0 = (undefined ***)local_2c;
      pppuStackY_a4 = (undefined ***)&local_20;
      uStackY_a8 = (undefined4 **)0x68b891;
      FUN_00bb66f0();
      ppuVar1 = local_34;
      local_8._0_1_ = 5;
      if ((-(uint)(local_20 != '\0') & 0x6a1cd8) != 0) {
        local_38 = &uStackY_a8;
        uStackY_a8 = (undefined4 **)((uint)uStackY_a8._1_3_ << 8);
        pppuStackY_a0 = (undefined ***)local_34;
        uStackY_ac = 0x68b929;
        FUN_00b74490();
        local_30 = (undefined **)(local_2c[2] - (local_1c + 1));
        if (local_30 != (undefined **)0x0) {
          pppuStackY_a0 = (undefined ***)0x68b942;
          ppiVar3 = (int **)(**(code **)(*param_1_00 + 0xc))();
          local_8._0_1_ = 6;
          pppuStackY_a0 = (undefined ***)local_30;
          local_38 = &uStackY_ac;
          pppuStackY_a4 = (undefined ***)(local_1c + 1 + (int)ppuVar1);
          uStackY_ac = uStackY_ac & 0xffffff00;
          (**(code **)(**ppiVar3 + 0x1c))();
          local_8._0_1_ = 5;
          if (local_40 != 0) {
            FUN_0040127a();
          }
        }
        local_8 = CONCAT31(local_8._1_3_,1);
        break;
      }
      local_38 = &uStackY_a8;
      pppuStackY_a0 = (undefined ***)local_34;
      uStackY_a8 = (undefined4 **)((uint)uStackY_a8._1_3_ << 8);
      uStackY_ac = 0x68b8c8;
      FUN_00b74490();
      local_8 = CONCAT31(local_8._1_3_,1);
      if (local_20 != '\0') {
        local_20 = '\0';
      }
    }
  }
  if (local_21 != '\0') {
    cVar2 = FUN_00b74440();
    if (cVar2 != '\0') {
      pppuStackY_a0 = (undefined ***)0x68b99a;
      cVar2 = FUN_00bb1450();
      if (cVar2 != '\0') {
        local_21 = '\x01';
        goto LAB_0068b9b9;
      }
    }
    local_21 = '\0';
LAB_0068b9b3:
    pppuStackY_a0 = (undefined ***)0x68b9b8;
    FUN_00b940e0();
  }
LAB_0068b9b9:
  local_8 = local_8 & 0xffffff00;
  if (local_2c != (undefined4 *)0x0) {
    pppuStackY_a0 = (undefined ***)0x68b9ca;
    (**(code **)*local_2c)();
  }
  local_8 = 0xffffffff;
  FUN_00b72d90();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_0068b9e4(int *param_1_00,undefined4 param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  int **ppiVar3;
  uint uStack_4b4;
  undefined4 uStack_4b0;
  undefined *puStack_4ac;
  uint local_4a8;
  undefined4 *puStack_4a4;
  undefined8 *local_4a0;
  undefined *puStack_49c;
  undefined local_488 [24];
  undefined local_470 [56];
  undefined local_438 [4];
  int local_434;
  undefined4 local_430;
  undefined4 *local_42c;
  undefined8 local_428;
  char local_419;
  undefined local_418 [1040];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x478;
  local_8 = 0x68b9f3;
  puStack_49c = local_470;
  local_4a0 = (undefined8 *)0x68ba01;
  FUN_00b72ec0();
  puStack_49c = (undefined *)0x1;
  local_428._4_4_ = &local_4a8;
  local_8 = 0;
  local_4a0 = (undefined8 *)param_1;
  local_4a8 = local_4a8 & 0xffffff00;
  puStack_4ac = (undefined *)0x68ba26;
  local_419 = FUN_00b74490();
  if (local_419 == '\0') {
    puStack_49c = (undefined *)0xe869acfe;
    local_419 = '\0';
  }
  else {
    puStack_49c = local_438;
    local_4a0 = (undefined8 *)0x68ba4d;
    ppiVar3 = (int **)(**(code **)(*param_1_00 + 0xc))();
    local_4a0 = (undefined8 *)0x0;
    puStack_4a4 = (undefined4 *)0x0;
    local_4a8 = 1;
    puStack_4ac = (undefined *)0x0;
    local_8._0_1_ = 1;
    piVar1 = *ppiVar3;
    uStack_4b0 = 0;
    uStack_4b4 = 0x68ba5e;
    local_428 = FUN_0043b546();
    local_4a0 = &local_428;
    puStack_4a4 = (undefined4 *)local_488;
    local_4a8 = 0x68ba80;
    local_4a0 = (undefined8 *)FUN_00b9fb90();
    puStack_4a4 = &local_430;
    local_4a8 = 0x400;
    local_428._4_4_ = &uStack_4b4;
    local_8._0_1_ = 2;
    puStack_4ac = local_418;
    uStack_4b4 = uStack_4b4 & 0xffffff00;
    local_419 = (**(code **)(*piVar1 + 0xc))();
    puStack_49c = (undefined *)0x68babf;
    FUN_00b9fb30();
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_434 != 0) {
      puStack_49c = (undefined *)0x68bad1;
      FUN_0040127a();
    }
    if (local_419 == '\0') {
      puStack_49c = (undefined *)0xd3c4d7aa;
    }
    else {
      puStack_49c = (undefined *)local_430;
      local_4a0 = (undefined8 *)local_418;
      local_428._4_4_ = &local_4a8;
      local_4a8 = local_4a8 & 0xffffff00;
      puStack_4ac = (undefined *)0x68bb0c;
      local_419 = FUN_00b74490();
      if (local_419 == '\0') {
        puStack_49c = (undefined *)0xbf2ea88b;
        local_419 = '\0';
      }
      else {
        puStack_49c = (undefined *)0x68bb2d;
        local_419 = FUN_00b74440();
        if (local_419 != '\0') goto LAB_0068bb47;
        puStack_49c = (undefined *)0xe9a1b2ae;
      }
    }
  }
  local_4a0 = (undefined8 *)0x68bb46;
  FUN_00b940e0();
LAB_0068bb47:
  local_42c = (undefined4 *)0x0;
  local_8 = CONCAT31(local_8._1_3_,3);
  if (local_419 != '\0') {
    puStack_49c = (undefined *)0xffffffff;
    local_4a0 = (undefined8 *)0x68bb6e;
    local_419 = FUN_00bb1450();
    if (local_419 == '\0') {
      puStack_49c = (undefined *)0x4ba2b658;
      local_4a0 = (undefined8 *)0x68bb88;
      FUN_00b940e0();
    }
  }
  puVar2 = local_42c;
  local_428._4_4_ = (uint *)0x0;
  if (local_419 != '\0') {
    puStack_49c = (undefined *)0x68bbac;
    local_419 = FUN_00b93390();
    if (local_419 == '\0') {
      puStack_49c = (undefined *)0xd9ff632a;
      local_4a0 = (undefined8 *)0x68bbc5;
      FUN_00b940e0();
    }
    else {
      puStack_49c = (undefined *)0xd6749ac8;
      local_4a0 = (undefined8 *)0x68bbd7;
      FUN_00b940e0();
      puStack_49c = (undefined *)puVar2[2];
      local_4a0 = (undefined8 *)local_428._4_4_;
      puStack_4a4 = (undefined4 *)0xd6749ac8;
      local_4a8 = 0x68bbeb;
      FUN_00b940c0();
    }
  }
  local_8 = local_8 & 0xffffff00;
  if (puVar2 != (undefined4 *)0x0) {
    puStack_49c = (undefined *)0x1;
    local_4a0 = (undefined8 *)0x68bbfd;
    (**(code **)*puVar2)();
  }
  local_8 = 0xffffffff;
  puStack_49c = (undefined *)0x68bc0c;
  FUN_00b72d90();
  puStack_49c = (undefined *)0x68bc17;
  FUN_00a421fb();
  return;
}



void __thiscall
FUN_0068bc1a(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,byte *param_3)

{
  ushort uVar1;
  char cVar2;
  ushort uVar3;
  int extraout_EDX;
  int unaff_EDI;
  int iVar4;
  
  cVar2 = FUN_00b9a9d0(param_1_00);
  iVar4 = extraout_EDX;
  if (cVar2 != '\0') {
    for (; iVar4 != 0; iVar4 = iVar4 + -1) {
      uVar1 = *(ushort *)(unaff_EDI + 0x200);
      uVar3 = FUN_0068bc69((*param_3 ^ uVar1) & 0xff);
      param_3 = param_3 + 1;
      *(ushort *)(unaff_EDI + 0x200) = uVar3 ^ uVar1 >> 8;
    }
  }
  return;
}



undefined2 __thiscall FUN_0068bc69(int param_1_00,uint param_1)

{
  undefined2 uVar1;
  
  if (param_1 < 0x100) {
    uVar1 = *(undefined2 *)(param_1_00 + (param_1 & 0xff) * 2);
  }
  else {
    uVar1 = 0;
  }
  return uVar1;
}



ushort FUN_0068bc83(ushort param_1,byte param_2)

{
  ushort uVar1;
  byte bVar2;
  ushort uVar3;
  
  bVar2 = 0;
  uVar3 = param_1;
  if (param_2 != 0) {
    do {
      uVar1 = (ushort)(1 << ((param_2 - bVar2) - 1 & 0x1f));
      if ((param_1 & 1) == 0) {
        uVar3 = uVar3 & ~uVar1;
      }
      else {
        uVar3 = uVar3 | uVar1;
      }
      param_1 = param_1 >> 1;
      bVar2 = bVar2 + 1;
    } while (bVar2 < param_2);
  }
  return uVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068bcc1(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x94);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0068bd35(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0068bfa3(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0068bd35(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x68bd41;
  FUN_00b9a937(param_1);
  *param_1 = W5E3281FA::W96A3BC42::vftable;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  puVar1 = (undefined4 *)FUN_0068c086(local_20);
  local_8 = CONCAT31(local_8._1_3_,2);
  local_18 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 __thiscall FUN_0068beb4(undefined4 param_1_00,byte param_1)

{
  FUN_0068bed0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0068bed0(undefined4 *param_1)

{
  int iVar1;
  uint3 uVar2;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = W5E3281FA::W96A3BC42::vftable;
  local_8._1_3_ = 0;
  uVar2 = local_8._1_3_;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  if (local_20 != param_1 + 0x23) {
    param_1[0x23] = 0;
  }
  iVar1 = param_1[0x24];
  param_1[0x24] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
    uVar2 = local_8._1_3_;
  }
  local_8._1_3_ = uVar2;
  local_8._0_1_ = 1;
  if (param_1[0x24] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00b9a8dd();
  return;
}



void Catch_All_0068bf2e(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0068bf38(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_0068c175(*(undefined4 *)(param_1_00 + 0x8c),param_1,param_2);
  return param_1;
}



char __fastcall FUN_0068bf58(int param_1)

{
  int iVar1;
  char cVar2;
  
  iVar1 = *(int *)(param_1 + 0x8c);
  cVar2 = (**(code **)(*(int *)(iVar1 + 4) + 0xc))();
  if (cVar2 == '\0') {
    FUN_00b940e0(0x6549db13);
  }
  *(char *)(iVar1 + 0x94) = cVar2;
  return cVar2;
}



void __fastcall FUN_0068bf8b(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x8c);
  (**(code **)(*(int *)(iVar1 + 4) + 0x10))();
  *(undefined *)(iVar1 + 0x94) = 0;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068bfa3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5E3281FA::W96A3BC42>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068bfe9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0068c000(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0068c039(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W5E3281FA::W96A3BC42>,class_boost::_bi::list1<class_boost::_bi::value<class_W5E3281FA::W96A3BC42*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_0068c039(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W5E3281FA::W96A3BC42>,class_boost::_bi::list1<class_boost::_bi::value<class_W5E3281FA::W96A3BC42*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W5E3281FA::W96A3BC42>,class_boost::_bi::list1<class_boost::_bi::value<class_W5E3281FA::W96A3BC42*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068c086(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x98);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W5E3281FA::WB15DA796::vftable;
    FUN_00b78a66(puVar2 + 1);
    *(undefined *)(puVar2 + 0x25) = 0;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0068c1d9(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 __thiscall FUN_0068c10a(undefined4 param_1_00,byte param_1)

{
  FUN_0068c126();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0068c126(undefined4 *param_1)

{
  *param_1 = W5E3281FA::WB15DA796::vftable;
  if (*(char *)(param_1 + 0x25) != '\0') {
    (**(code **)(param_1[1] + 0x10))();
    *(char *)(param_1 + 0x25) = '\0';
  }
  FUN_00b789d6();
  return;
}



void Catch_All_0068c16b(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068c175(int param_1,undefined4 *param_2,int param_3)

{
  undefined4 *puVar1;
  undefined local_1c [8];
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x68c181;
  local_14 = 0;
  if (param_3 != 0) {
    puVar1 = (undefined4 *)FUN_00b92262(local_1c);
    *param_2 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  (**(code **)(*(int *)(param_1 + 4) + 0x18))(param_2,0);
  return param_2;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068c1d9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5E3281FA::WB15DA796>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068c21f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068c29d(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007b3730();
    *puVar2 = W4FA65BD1::WBA5E4993::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0068c6aa(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0068c597(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x68c5a3;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W4FA65BD1::WBA5E4993::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W4FA65BD1::WBA5E4993::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0068c693(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068c6aa(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W4FA65BD1::WBA5E4993>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068c6f0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068c707(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W4FA65BD1::WFDC9AC59>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068c74d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_0068c877(int param_1_00,byte param_1)

{
  FUN_00417fe6();
  if (*(int *)(param_1_00 + 0x78) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x70) != 0) {
    FUN_0040127a();
  }
  FUN_004f8d85(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0068c8d4(void)

{
  int iVar1;
  undefined local_5c [72];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e060;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_5c);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0068cb6a(int param_1)

{
  char local_14;
  
  FUN_0043d406(param_1 + 0x7c);
  FUN_0074ca40();
  if (local_14 != '\0') {
    FUN_00401477();
  }
  return;
}



void FUN_0068cca0(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0068ccdb(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W4FA65BD1::WFDC9AC59>,class_boost::_bi::list1<class_boost::_bi::value<class_W4FA65BD1::WFDC9AC59*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0068ccdb(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W4FA65BD1::WFDC9AC59>,class_boost::_bi::list1<class_boost::_bi::value<class_W4FA65BD1::WFDC9AC59*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W4FA65BD1::WFDC9AC59>,class_boost::_bi::list1<class_boost::_bi::value<class_W4FA65BD1::WFDC9AC59*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 * __thiscall FUN_0068ce52(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WDE765622::WBE3F1864::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068ce6f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WDE765622::W48180F6F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068ceb5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068cecc(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WDE765622::W48180F6F::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0068ce6f(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_0068cf9a(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = WF8266037::WC1AF8CFC::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068cfa1(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x5c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0069013e(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0068dfa1(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068d107(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WF8266037::W712145A9::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0068e05b(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_0068d263(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = WF8266037::WAC647C32::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_0068d26a(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0xc4);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0068ec1a(pvVar2,param_3,param_4,param_5);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0068e11c(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_0068d2ea(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0xc4);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_006921d7(pvVar2,param_3,param_4,param_5);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0068e179(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0068d36a(undefined4 *param_1)

{
  *param_1 = WF8266037::W25F1AD2F::vftable;
  FUN_00688539();
  if (param_1[5] != 0) {
    FUN_0040127a();
  }
  if (param_1[3] != 0) {
    FUN_0040127a();
  }
  *param_1 = WF8266037::W4BB3999E::vftable;
  return;
}



undefined4 __thiscall FUN_0068d3b8(undefined4 param_1_00,byte param_1)

{
  FUN_0068d36a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0068d720(undefined4 param_1_00,byte param_1)

{
  FUN_0068d73c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0068d73c(undefined4 *param_1)

{
  int iVar1;
  
  *param_1 = WF8266037::W24F38DA5::vftable;
  param_1[1] = WF8266037::W24F38DA5::vftable;
  WSACleanup();
  FUN_00a7fa40(0);
  FUN_00a7f960(0);
  if (DAT_032ef300 != 0) {
    FUN_006c1ae1(DAT_032ef300);
  }
  DAT_032ef300 = 0;
  FUN_00a7ff50();
  FUN_00a800f0(1);
  FUN_00a7ec50();
  FUN_00a802d0();
  FUN_00a80640();
  iVar1 = FUN_00afda30();
  if (iVar1 != 0) {
    FUN_00a80ea0(iVar1);
  }
  FUN_00a7ee70(0);
  FUN_006979af(param_1 + 0x3f);
  if (param_1[0x3e] != 0) {
    FUN_0040127a();
  }
  FUN_00694ddb(param_1 + 0x19);
  if (param_1[0x18] != 0) {
    FUN_0040127a();
  }
  if (param_1[0x16] != 0) {
    FUN_0040127a();
  }
  if (param_1[0x14] != 0) {
    FUN_0040127a();
  }
  FUN_0068d36a();
  param_1[1] = WF8266037::WAC647C32::vftable;
  *param_1 = WABE12921::WBEC64636::vftable;
  return;
}



undefined * Catch_All_0068d845(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 8;
  return &DAT_0068d852;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0068d85c(int param_1)

{
  char local_14;
  
  FUN_0043d406(param_1 + 0xe0);
  FUN_00694ec5();
  if (local_14 != '\0') {
    FUN_00401477();
  }
  FUN_00b725b0();
  return;
}



void FUN_0068d8a5(void)

{
  FUN_00694e57();
  FUN_00b72ae0();
  return;
}



undefined FUN_0068d8bf(int param_1)

{
  char cVar1;
  
  if ((param_1 != -0x61a453c9) && (cVar1 = FUN_00697fdd(), cVar1 == '\0')) {
    return 0;
  }
  return 1;
}



void FUN_0068d8db(void)

{
  undefined local_8 [4];
  
  FUN_007b4259(local_8);
  return;
}



void __thiscall FUN_0068d8f7(int *param_1_00,undefined4 *param_1,int param_2)

{
  char cVar1;
  undefined4 *puVar2;
  
  cVar1 = (**(code **)(*param_1_00 + 0x10))(param_2);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xd5032fe1);
    *param_1 = 0;
    param_1[1] = 0;
    return;
  }
  if (*(char *)(param_2 + 0x34) == '\0') {
    puVar2 = (undefined4 *)
             FUN_0068d2ea(&stack0xffffffec,param_2,param_1_00 + 0x19,param_1_00 + 0x3f,
                          param_1_00[0x12]);
  }
  else {
    puVar2 = (undefined4 *)FUN_0068d26a();
  }
  *param_1 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Removing unreachable block (ram,0x0068da68)

char __fastcall FUN_0068d983(int param_1)

{
  char cVar1;
  int iVar2;
  int local_30;
  void *pvStack_18;
  void *local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  uStack_10 = &LAB_00c2a831;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_c = 0;
  (**(code **)**(undefined4 **)(param_1 + 0x44))();
  uStack_10._0_1_ = 1;
  FUN_004fe47e();
  uStack_10._0_1_ = 0;
  if (local_30 != 0) {
    FUN_0040127a();
  }
  cVar1 = FUN_00479536();
  if (cVar1 != '\0') {
    FUN_004fe47e();
    ExceptionList = pvStack_18;
    return cVar1;
  }
  FUN_00b940e0();
  iVar2 = FUN_0068e841();
  uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,2);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar2 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0068dbb5)
// WARNING: Removing unreachable block (ram,0x0068db07)

undefined4 * FUN_0068da86(undefined4 *param_1)

{
  int local_20;
  
  FUN_0068de16();
  FUN_004fe47e();
  if (local_20 != 0) {
    FUN_0040127a();
  }
  FUN_00b940e0();
  *param_1 = 0;
  param_1[1] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0068dd18)
// WARNING: Removing unreachable block (ram,0x0068dc44)

undefined4 * FUN_0068dbc4(undefined4 *param_1)

{
  int local_20;
  
  FUN_0068de16();
  FUN_004fe47e();
  if (local_20 != 0) {
    FUN_0040127a();
  }
  FUN_00b940e0();
  *param_1 = 0;
  param_1[1] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_0068dd27(int param_1)

{
  undefined4 local_78;
  undefined4 local_74;
  wchar_t *pwStack_70;
  undefined4 *local_40;
  undefined4 local_3c;
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0;
  pwStack_70 = L"UNKNOWN";
  local_74 = 0x68dd4c;
  basic_string<>();
  pwStack_70 = (wchar_t *)local_30;
  local_3c = *(undefined4 *)(param_1 + 0x50);
  local_40 = &local_78;
  local_78 = *(undefined4 *)(param_1 + 0x48);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x4c);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_0068de16(int param_1_00,undefined *param_2,undefined4 *param_1)

{
  undefined *puVar1;
  uint uStack_6c;
  uint uStack_68;
  undefined4 local_64;
  undefined *local_60;
  uint *local_4c;
  undefined local_48 [4];
  int local_44;
  undefined4 local_40;
  undefined4 *local_3c;
  undefined4 *local_38;
  char local_31;
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0;
  local_40 = 0;
  local_31 = *(char *)(param_1_00 + 0x44);
  local_38 = param_1;
  local_3c = (undefined4 *)param_2;
  if (local_31 == '\0') {
    local_60 = (undefined *)0x5c2c1ed3;
    local_64 = 0x68de50;
    FUN_00b940e0();
  }
  puVar1 = (undefined *)local_3c;
  *local_38 = 0;
  local_38[1] = 0;
  local_8 = 0;
  local_40 = 1;
  if (local_31 != '\0') {
    local_60 = local_30;
    local_64 = 0x68de76;
    FUN_00479562();
    uStack_6c = (uint)*(ushort *)(puVar1 + 0x24);
    local_3c = &local_64;
    local_64 = 0;
    local_60 = (undefined *)0x0;
    local_4c = &uStack_6c;
    local_8._0_1_ = 2;
    local_8._1_3_ = 0;
    uStack_68 = uStack_6c;
    FUN_0068e766(&uStack_6c,local_30,uStack_6c);
    local_8._0_1_ = 1;
    (**(code **)(*(int *)(param_1_00 + 8) + 4))(local_48);
    local_8._0_1_ = 3;
    local_60 = (undefined *)0x68dec4;
    FUN_004fe47e();
    local_8 = CONCAT31(local_8._1_3_,1);
    if (local_44 != 0) {
      local_60 = (undefined *)0x68ded4;
      FUN_0040127a();
    }
    local_60 = (undefined *)0x0;
    local_64 = 1;
    uStack_68 = 0x68dedf;
    FUN_00401829();
  }
  local_60 = (undefined *)0x68dee7;
  FUN_00a421fb();
  return;
}



void Catch_All_0068df83(void)

{
  undefined4 *puVar1;
  code *pcVar2;
  int unaff_EBP;
  
  puVar1 = *(undefined4 **)(unaff_EBP + 8);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::WFF3BAF3D::vftable;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068dfa1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W414BA8E1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068dfe7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_0068e1f9(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068dffe(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WA20343ED>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068e044(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068e05b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W712145A9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068e0a1(void)

{
  undefined4 *puVar1;
  code *pcVar2;
  int unaff_EBP;
  
  puVar1 = *(undefined4 **)(unaff_EBP + 8);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::WC1AF8CFC::vftable;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068e0bf(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W480079E5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068e105(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068e11c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W314A5844>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068e162(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068e179(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W2FF09544>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068e1bf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_0068e1d6(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_0068e1f9(*(int *)(param_1 + 0xc));
  }
  return;
}



void __fastcall FUN_0068e1e4(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 0xc);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::WC1AF8CFC::vftable;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0068e1f9(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  undefined4 *puStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puStack_24 = (undefined4 *)0x68e214;
  FUN_0042bd98();
  puStack_24 = (undefined4 *)0x68e21c;
  FUN_00417fe6();
  puStack_24 = param_1 + 2;
  puVar1 = &uStack_28;
  uStack_28 = 0x68e225;
  FUN_0068e241();
  puVar1[-1] = param_1;
  *param_1 = WF8266037::WC1AF8CFC::vftable;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0068e231;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_0068e241(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x68e259;
  FUN_0068e269();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0068e260;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0068e241(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x68e259;
  FUN_0068e269();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0068e260;
  FUN_00a3f6a1();
}



void FUN_0068e269(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_0068e29d(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_0068e29d(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_0068e5e9(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_0041917c();
    FUN_0068e353();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x0068e43e)
// WARNING: Removing unreachable block (ram,0x0068e44e)
// WARNING: Removing unreachable block (ram,0x0068e457)
// WARNING: Removing unreachable block (ram,0x0068e45a)
// WARNING: Removing unreachable block (ram,0x0068e44a)
// WARNING: Removing unreachable block (ram,0x0068e467)
// WARNING: Removing unreachable block (ram,0x0068e477)
// WARNING: Removing unreachable block (ram,0x0068e482)
// WARNING: Removing unreachable block (ram,0x0068e47e)
// WARNING: Removing unreachable block (ram,0x0068e472)
// WARNING: Removing unreachable block (ram,0x0068e485)

void FUN_0068e353(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x68e35f;
  if (*(char *)((int)param_4 + 0x3d) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_0041917c();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x3d) == '\0') {
    if (*(char *)(param_4[2] + 0x3d) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x3d) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x3d) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x3d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x3d) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x3d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0xf) != '\x01') {
LAB_0068e5b6:
    FUN_0068e633(param_4 + 7);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_0068e56a:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xf) != '\x01'))
  goto LAB_0068e5b2;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0xf) == '\0') {
      *(undefined *)(ppiVar4 + 0xf) = 1;
      *(undefined *)(ppiVar3 + 0xf) = 0;
      FUN_00418e61(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x3d) == '\0') {
      if ((*(char *)(*ppiVar4 + 0xf) != '\x01') || (*(char *)(ppiVar4[2] + 0xf) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0xf) == '\x01') {
          *(undefined *)(*ppiVar4 + 0xf) = 1;
          *(undefined *)(ppiVar4 + 0xf) = 0;
          FUN_00418ea1(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0xf) = *(undefined *)(ppiVar3 + 0xf);
        *(undefined *)(ppiVar3 + 0xf) = 1;
        *(undefined *)(ppiVar4[2] + 0xf) = 1;
        FUN_00418e61(param_1);
        goto LAB_0068e5b2;
      }
LAB_0068e561:
      *(undefined *)(ppiVar4 + 0xf) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0xf) == '\0') {
      *(undefined *)(ppiVar4 + 0xf) = 1;
      *(undefined *)(ppiVar3 + 0xf) = 0;
      FUN_00418ea1(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x3d) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0xf) == '\x01') && (*(char *)(*ppiVar4 + 0xf) == '\x01'))
      goto LAB_0068e561;
      if (*(char *)(*ppiVar4 + 0xf) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0xf) = 1;
        *(undefined *)(ppiVar4 + 0xf) = 0;
        FUN_00418e61(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0xf) = *(undefined *)(ppiVar3 + 0xf);
      *(undefined *)(ppiVar3 + 0xf) = 1;
      *(undefined *)(*ppiVar4 + 0xf) = 1;
      FUN_00418ea1(param_1);
LAB_0068e5b2:
      *(undefined *)(ppiVar5 + 0xf) = 1;
      goto LAB_0068e5b6;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_0068e56a;
}



void FUN_0068e5e9(int param_1)

{
  if (*(char *)(param_1 + 0x3d) == '\0') {
    FUN_0068e5e9(*(undefined4 *)(param_1 + 8));
    FUN_0068e633(param_1 + 0x1c);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_0068e624(void)

{
  int in_EAX;
  
  FUN_0068e633(in_EAX + 0x10);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void thunk_FUN_0068e633(undefined4 *param_1)

{
  FUN_0068e65d();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0068e633(undefined4 *param_1)

{
  FUN_0068e65d();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void FUN_0068e65d(void)

{
  int *piVar1;
  int iVar2;
  int in_EAX;
  int iVar3;
  
  while (*(int *)(in_EAX + 0x1c) != 0) {
    FUN_0068e6a1();
  }
  iVar3 = *(int *)(in_EAX + 0x14);
  while (iVar2 = *(int *)(in_EAX + 0x10), iVar3 != 0) {
    iVar3 = iVar3 + -1;
    piVar1 = (int *)(iVar2 + iVar3 * 4);
    if (*piVar1 != 0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*piVar1);
    }
  }
  if (iVar2 != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  *(undefined4 *)(in_EAX + 0x14) = 0;
  *(undefined4 *)(in_EAX + 0x10) = 0;
  return;
}



void FUN_0068e6a1(void)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0x1c) != 0) {
    uVar2 = *(int *)(unaff_ESI + 0x1c) + -1 + *(int *)(unaff_ESI + 0x18);
    uVar3 = uVar2 >> 1;
    if (*(uint *)(unaff_ESI + 0x14) <= uVar3) {
      uVar3 = uVar3 - *(uint *)(unaff_ESI + 0x14);
    }
    if (*(int *)(*(int *)(*(int *)(unaff_ESI + 0x10) + uVar3 * 4) + 4 + (uVar2 & 1) * 8) != 0) {
      FUN_0040127a();
    }
    piVar1 = (int *)(unaff_ESI + 0x1c);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      *(undefined4 *)(unaff_ESI + 0x18) = 0;
    }
  }
  return;
}



void FUN_0068e6e0(void)

{
  FUN_0068e6eb();
  return;
}



void FUN_0068e6eb(void)

{
  int unaff_ESI;
  
  if (unaff_ESI != 0) {
    FUN_00401829(1,0);
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068e70e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD747FD9D::W6596B30F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068e754(void)

{
  code *pcVar1;
  
  FUN_0068e6eb();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068e766(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x38);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_006bef79(pvVar2,param_2,param_3);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0068e70e(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068e7dd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W14E3BFCC::WC1C27B29>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068e823(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_0068e83a(undefined4 *param_1)

{
  *param_1 = W14E3BFCC::WD9A2B50E::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068e841(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x60);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W14E3BFCC::WC1C27B29::vftable;
    *(undefined *)(puVar2 + 1) = 0;
    *(undefined *)(puVar2 + 4) = 0;
    *(undefined *)(puVar2 + 8) = 0;
    *(undefined *)(puVar2 + 0x10) = 0;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0068e7dd(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void __fastcall FUN_0068e8b3(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 0xc);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::WFF3BAF3D::vftable;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  return;
}



void Catch_All_0068e90e(void)

{
  undefined4 *puVar1;
  code *pcVar2;
  int unaff_EBP;
  
  puVar1 = *(undefined4 **)(unaff_EBP + 8);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::WFF3BAF3D::vftable;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



void Catch_All_0068e9d9(void)

{
  undefined4 *puVar1;
  code *pcVar2;
  int unaff_EBP;
  
  puVar1 = *(undefined4 **)(unaff_EBP + 8);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::WFF3BAF3D::vftable;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



void Catch_All_0068eaa4(void)

{
  undefined4 *puVar1;
  code *pcVar2;
  int unaff_EBP;
  
  puVar1 = *(undefined4 **)(unaff_EBP + 8);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::WFF3BAF3D::vftable;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



undefined4 * __thiscall FUN_0068eb29(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WABE12921::WBEC64636::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0068eb46(undefined4 *param_1)

{
  *param_1 = WABE12921::WBEC64636::vftable;
  return;
}



undefined4 * __thiscall FUN_0068eb4d(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF8266037::W4BB3999E::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0068eb6a(undefined4 *param_1)

{
  *param_1 = WF8266037::W4BB3999E::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall
FUN_0068ec1a(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  FUN_00699f13(param_1);
  *param_1 = WF8266037::W314A5844::vftable;
  param_1[0x2d] = 0;
  param_1[0x2e] = 0;
  *(undefined *)(param_1 + 0x2f) = 0;
  *(undefined *)((int)param_1 + 0xbd) = 0;
  param_1[0x30] = param_4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0x30);
}



undefined4 __thiscall FUN_0068ed25(undefined4 param_1,byte param_2)

{
  FUN_0068ed41();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_0068ed41(undefined4 *param_1)

{
  undefined4 local_38;
  undefined4 local_34;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = WF8266037::W314A5844::vftable;
  local_8 = 2;
  local_34 = 0x68ed6d;
  local_18 = param_1;
  FUN_00b725b0();
  local_1c = &local_38;
  local_38 = param_1[0x2d];
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x2e);
}



undefined * Catch_All_0068edaf(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 1;
  return &LAB_0068edbc;
}



undefined __fastcall FUN_0068ede3(int param_1)

{
  *(undefined *)(param_1 + 0xbc) = 1;
  return 1;
}



void __fastcall FUN_0068eded(int param_1)

{
  *(undefined *)(param_1 + 0xbd) = 1;
  FUN_00b725b0();
  return;
}



void FUN_0068f3f2(void)

{
  undefined4 *in_EAX;
  
  FUN_0068f45e();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*in_EAX);
}



void FUN_0068f404(void)

{
  undefined4 *unaff_ESI;
  
  if (unaff_ESI[3] != 0) {
    FUN_0068f4ec(unaff_ESI[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI[3]);
  }
  unaff_ESI[3] = 0;
  unaff_ESI[4] = 0;
  unaff_ESI[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*unaff_ESI);
}



void FUN_0068f431(void)

{
  undefined4 *unaff_ESI;
  
  if (unaff_ESI[3] != 0) {
    FUN_0068f54d(unaff_ESI[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI[3]);
  }
  unaff_ESI[3] = 0;
  unaff_ESI[4] = 0;
  unaff_ESI[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*unaff_ESI);
}



void FUN_0068f45e(void)

{
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0xc) != 0) {
    FUN_0068f4d5(*(undefined4 *)(unaff_ESI + 0x10));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0xc));
  }
  *(undefined4 *)(unaff_ESI + 0xc) = 0;
  *(undefined4 *)(unaff_ESI + 0x10) = 0;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  return;
}



undefined4 FUN_0068f483(void)

{
  undefined *in_EAX;
  int iVar1;
  int unaff_EDI;
  
  if (&DAT_02762762 < in_EAX) {
    FUN_004423c1();
  }
  iVar1 = FUN_0068f503();
  *(int *)(unaff_EDI + 0xc) = iVar1;
  *(int *)(unaff_EDI + 0x10) = iVar1;
  *(int *)(unaff_EDI + 0x14) = (int)in_EAX * 0x68 + iVar1;
  return 1;
}



undefined4 FUN_0068f4ac(void)

{
  uint in_EAX;
  int iVar1;
  int unaff_EDI;
  
  if (0x4924924 < in_EAX) {
    FUN_004423c1();
  }
  iVar1 = FUN_0068f56a();
  *(int *)(unaff_EDI + 0xc) = iVar1;
  *(int *)(unaff_EDI + 0x10) = iVar1;
  *(uint *)(unaff_EDI + 0x14) = in_EAX * 0x38 + iVar1;
  return 1;
}



void FUN_0068f4d5(int param_1)

{
  int in_EAX;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 0x58) {
    FUN_0068f611();
  }
  return;
}



void FUN_0068f4ec(int param_1)

{
  int in_EAX;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 0x68) {
    FUN_0068f63b();
  }
  return;
}



void __fastcall FUN_0068f503(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 0x68) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 * 0x68);
  return;
}



void FUN_0068f54d(int param_1)

{
  int in_EAX;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 0x38) {
    FUN_00401829(1,0);
  }
  return;
}



void __fastcall FUN_0068f56a(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 0x38) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 * 0x38);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068f5b4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W1E2CF5C9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068f5fa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0068f611(void)

{
  int unaff_ESI;
  
  FUN_00401829(1,0);
  if (*(char *)(unaff_ESI + 0x28) != '\0') {
    *(undefined *)(unaff_ESI + 0x28) = 0;
  }
  if (*(char *)(unaff_ESI + 0x20) != '\0') {
    *(undefined *)(unaff_ESI + 0x20) = 0;
  }
  FUN_00401829(1,0);
  return;
}



void FUN_0068f63b(void)

{
  int unaff_EDI;
  
  FUN_0068f45e();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EDI + 0x50));
}



void __fastcall FUN_0068f665(undefined4 *param_1)

{
  *param_1 = W14E3BFCC::WB6409AB8::vftable;
  FUN_00401829(1,0);
  *param_1 = W14E3BFCC::WD9A2B50E::vftable;
  return;
}



undefined4 __thiscall FUN_0068f682(undefined4 param_1_00,byte param_1)

{
  FUN_0068f665();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068f69e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W14E3BFCC::WB6409AB8>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068f6e4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_0068f6fb(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  *param_1 = W14E3BFCC::WB6409AB8::vftable;
  basic_string<>(param_2);
  param_1[8] = param_3;
  param_1[9] = param_4;
  param_1[10] = param_5;
  param_1[0xb] = param_6;
  param_1[0xc] = param_7;
  param_1[0xd] = param_8;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_0068f74d(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x38);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0068f6fb(pvVar2,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0068f69e(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



void Catch_All_0068f819(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



int __thiscall FUN_0068f8a2(int param_1_00,int param_1)

{
  int in_EAX;
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  if (param_1 != in_EAX) {
    iVar1 = in_EAX;
    puVar3 = (undefined4 *)(param_1_00 + 0x20);
    do {
      iVar2 = iVar1 + -0x24;
      puVar4 = puVar3 + -9;
      FID_conflict_assign(iVar2,0,0xffffffff);
      puVar3[-10] = *(undefined4 *)(iVar1 + -8);
      *puVar4 = *(undefined4 *)((in_EAX - param_1_00) + (int)puVar4);
      iVar1 = iVar2;
      puVar3 = puVar4;
    } while (iVar2 != param_1);
  }
  return param_1_00 + ((in_EAX - param_1) / 0x24) * -0x24;
}



void FUN_0068f8f6(int param_1)

{
  int in_EAX;
  int unaff_EDI;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 0x24) {
    FID_conflict_assign(unaff_EDI,0,0xffffffff);
    *(undefined4 *)(in_EAX + 0x1c) = *(undefined4 *)(unaff_EDI + 0x1c);
    *(undefined4 *)(in_EAX + 0x20) = *(undefined4 *)(unaff_EDI + 0x20);
  }
  return;
}



void FUN_0068f91e(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int in_EAX;
  int iVar1;
  int *piVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc)) / 0x24 == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = (param_4 - local_8) / 0x24;
  }
  FUN_0076b57d(param_3,param_4);
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar1 = 0;
  }
  else {
    iVar1 = *local_14;
  }
  piVar2 = (int *)(local_10 + local_8 * 0x24);
  if (piVar2 <= *(int **)(iVar1 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *local_14;
    }
    if (*(int **)(iVar1 + 0xc) <= piVar2) goto LAB_0068f9be;
  }
  FUN_00a3fb10();
LAB_0068f9be:
  param_1[1] = piVar2;
  *param_1 = local_14;
  return;
}



void FUN_0068f9cd(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  undefined4 uVar2;
  uint uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0x60);
  if (iVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (*(int *)(in_EAX + 0x68) - iVar1) / 0x24;
  }
  if ((uint)((*(int *)(in_EAX + 100) - iVar1) / 0x24) < uVar3) {
    uVar2 = FUN_0076b43a(*(int *)(in_EAX + 100),1,param_1);
    *(undefined4 *)(in_EAX + 100) = uVar2;
  }
  else {
    FUN_0046e65a();
    FUN_0068f91e(&local_10,param_1,local_10,local_c);
  }
  return;
}



void __fastcall FUN_0068fa37(undefined4 *param_1)

{
  *param_1 = W14E3BFCC::W79FD116C::vftable;
  FUN_0076a32d();
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  *param_1 = W14E3BFCC::WD9A2B50E::vftable;
  return;
}



undefined4 __thiscall FUN_0068fa6a(undefined4 param_1_00,byte param_1)

{
  FUN_0068fa37();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_0068facc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_0068fae3(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x54))(param_1_00);
  return;
}



void __fastcall FUN_0068faf2(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 0x24) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 * 0x24);
  return;
}



void Catch_All_0068fc08(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068fd33(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W14E3BFCC::WCE8FB2D1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068fd79(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068fd90(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x60);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W14E3BFCC::WCE8FB2D1::vftable;
    *(undefined *)(puVar2 + 1) = 0;
    *(undefined *)(puVar2 + 4) = 0;
    *(undefined *)(puVar2 + 8) = 0;
    *(undefined *)(puVar2 + 0x10) = 0;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0068fd33(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068fe02(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W14E3BFCC::W88E3DEBC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068fe48(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068fe5f(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x60);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W14E3BFCC::W88E3DEBC::vftable;
    *(undefined *)(puVar2 + 1) = 0;
    *(undefined *)(puVar2 + 4) = 0;
    *(undefined *)(puVar2 + 8) = 0;
    *(undefined *)(puVar2 + 0x10) = 0;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0068fe02(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068fed1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W14E3BFCC::W7895375D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068ff17(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068ff2e(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x60);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W14E3BFCC::W7895375D::vftable;
    *(undefined *)(puVar2 + 1) = 0;
    *(undefined *)(puVar2 + 4) = 0;
    *(undefined *)(puVar2 + 8) = 0;
    *(undefined *)(puVar2 + 0x10) = 0;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0068fed1(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0068ffa0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W14E3BFCC::WCFFD919E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0068ffe6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0068fffd(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x60);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W14E3BFCC::WCFFD919E::vftable;
    *(undefined *)(puVar2 + 1) = 0;
    *(undefined *)(puVar2 + 4) = 0;
    *(undefined *)(puVar2 + 8) = 0;
    *(undefined *)(puVar2 + 0x10) = 0;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0068ffa0(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00690046(void)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  int unaff_EBX;
  int unaff_EBP;
  int unaff_ESI;
  
  uVar1 = *(undefined4 *)(unaff_ESI + 4);
  *(undefined4 *)(unaff_ESI + 4) = *in_EAX;
  *in_EAX = uVar1;
  if (*(int *)(unaff_EBP + -0x10) != unaff_EBX) {
    FUN_0040127a();
  }
  FUN_007a491c();
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00690053(int param_1)

{
  int unaff_EBX;
  
  if (param_1 != unaff_EBX) {
    FUN_0040127a();
  }
  FUN_007a491c();
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00690057(void)

{
  FUN_0040127a();
  FUN_007a491c();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0069006f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W14E3BFCC::WF76146F2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006900b5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006900cc(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x60);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W14E3BFCC::WF76146F2::vftable;
    *(undefined *)(puVar2 + 1) = 0;
    *(undefined *)(puVar2 + 4) = 0;
    *(undefined *)(puVar2 + 8) = 0;
    *(undefined *)(puVar2 + 0x10) = 0;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0069006f(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0069013e(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  
  *param_1 = WF8266037::W414BA8E1::vftable;
  *(undefined *)(param_1 + 1) = 0;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 2);
  }
  param_1[2] = piVar1;
  iVar2 = FUN_00418df9();
  piVar1 = param_1 + 8;
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x3d) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  FUN_00453ddc(param_1 + 0xc);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006901b7(undefined4 param_1)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006901ff(int param_1)

{
  char local_14;
  
  FUN_0043d406(param_1 + 0x28);
  *(undefined *)(param_1 + 4) = 1;
  FUN_0044953d();
  if (local_14 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall
FUN_00690241(int param_1_00,undefined *param_2_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_4c [4];
  char local_48;
  undefined4 local_44;
  char local_28 [8];
  undefined local_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x69024d;
  local_44 = param_1;
  FUN_0043d406(param_1_00 + 0x28);
  local_8 = 0;
  *param_2_00 = 0;
  FUN_005d1159();
  FUN_00ba6c80();
  FUN_00b9fb00(local_28);
  local_8 = CONCAT31(local_8._1_3_,2);
  do {
    while( true ) {
      if ((*(char *)(param_1_00 + 4) != '\0') ||
         (cVar1 = FUN_0069043c(local_44,param_2), cVar1 != '\0')) goto LAB_006902f6;
      if ((-(uint)(local_28[0] != '\0') & 0x6a1cd8) != 0) break;
      FUN_00453ca3(param_1_00 + 0x30,local_4c);
    }
    FUN_00691474(param_1_00 + 0x30,local_4c);
    uVar2 = FUN_00ba6d30();
    cVar1 = FUN_00480c29(uVar2,local_20);
  } while (cVar1 != '\0');
  *param_2_00 = 1;
LAB_006902f6:
  FUN_00b9fb30();
  local_8 = 0xffffffff;
  if (local_48 != '\0') {
    FUN_00401477();
  }
  FUN_00a421fb();
  return;
}



undefined4 FUN_0069043c(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  undefined local_c [8];
  
  FUN_006905d7(local_c,param_2);
  cVar1 = FUN_006b8eca();
  if ((cVar1 == '\0') && (iVar2 = FUN_006badde(), *(int *)(iVar2 + 0x2c) != 0)) {
    FUN_006badde();
    FUN_00467f9f();
    FUN_006913fd();
    FUN_005d11c9(param_1);
    FUN_006badde();
    FUN_00452a84();
    return 1;
  }
  FUN_005d1159();
  return 0;
}



int __thiscall FUN_006904c8(undefined4 *param_1_00,undefined4 *param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  int iVar6;
  byte *pbVar7;
  bool bVar8;
  bool bVar9;
  undefined4 local_78;
  int local_74;
  undefined4 local_70;
  undefined4 local_6c [9];
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined local_38 [36];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = -1;
  puStack_10 = &LAB_00c2690a;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_14;
  FUN_0069098f(&local_78,param_1);
  local_6c[0] = param_1_00[6];
  local_70 = *param_1_00;
  cVar1 = FUN_006b8eca(uVar2);
  if (cVar1 == '\0') {
    iVar6 = 0x10;
    bVar8 = false;
    iVar3 = 0;
    bVar9 = true;
    puVar5 = param_1;
    pbVar7 = (byte *)(local_74 + 0xc);
    do {
      if (iVar6 == 0) break;
      iVar6 = iVar6 + -1;
      bVar8 = *(byte *)puVar5 < *pbVar7;
      bVar9 = *(byte *)puVar5 == *pbVar7;
      puVar5 = (undefined4 *)((int)puVar5 + 1);
      pbVar7 = pbVar7 + 1;
    } while (bVar9);
    if (!bVar9) {
      iVar3 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
    }
    if (-1 < iVar3) goto LAB_006905b6;
  }
  uVar4 = FUN_00452a31();
  local_c = 0;
  local_48 = *param_1;
  uStack_44 = param_1[1];
  uStack_40 = param_1[2];
  uStack_3c = param_1[3];
  FUN_00690d97(local_38,uVar4);
  local_c._0_1_ = 1;
  puVar5 = (undefined4 *)FUN_006907d0(&local_70,&local_48,local_78,local_74);
  local_78 = *puVar5;
  local_74 = puVar5[1];
  local_c = (uint)local_c._1_3_ << 8;
  FUN_0068e633(local_38);
  puStack_10 = (undefined *)0xffffffff;
  FUN_0068e633(local_6c);
LAB_006905b6:
  iVar6 = FUN_006badde();
  ExceptionList = local_14;
  return iVar6 + 0x10;
}



void FUN_006905d7(undefined4 *param_1,byte *param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *in_EAX;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  byte *pbVar6;
  bool bVar7;
  bool bVar8;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  FUN_0069098f(&local_c,param_2);
  local_10 = in_EAX[6];
  local_14 = *in_EAX;
  cVar2 = FUN_006b8eca();
  if (cVar2 == '\0') {
    iVar4 = 0x10;
    bVar7 = false;
    iVar3 = 0;
    bVar8 = true;
    pbVar6 = (byte *)(local_8 + 0xc);
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar7 = *param_2 < *pbVar6;
      bVar8 = *param_2 == *pbVar6;
      param_2 = param_2 + 1;
      pbVar6 = pbVar6 + 1;
    } while (bVar8);
    if (!bVar8) {
      iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
    }
    if (-1 < iVar3) {
      puVar5 = &local_c;
      goto LAB_00690636;
    }
  }
  local_10 = in_EAX[6];
  local_14 = *in_EAX;
  puVar5 = &local_14;
LAB_00690636:
  uVar1 = puVar5[1];
  *param_1 = *puVar5;
  param_1[1] = uVar1;
  return;
}



int FUN_0069064a(int param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  if (param_1 != param_2) {
    if (*(uint *)(param_2 + 0x1c) == 0) {
      FUN_0068e65d();
    }
    else if (*(uint *)(param_1 + 0x1c) < *(uint *)(param_2 + 0x1c)) {
      FUN_00467f9f();
      local_18 = local_10;
      local_14 = local_c;
      puVar3 = (undefined4 *)FUN_00690e57();
      uVar1 = *puVar3;
      uVar2 = puVar3[1];
      FUN_00467f9f();
      FUN_00467f9f();
      FUN_00690f1c(&local_10,local_18,local_14,uVar1,uVar2,local_10,local_c);
      FUN_00467f9f();
      FUN_00467f9f();
      FUN_00690fa7(param_1,local_18,local_14,uVar1,uVar2,local_10,local_c);
    }
    else {
      FUN_00467f9f();
      FUN_00467f9f();
      FUN_00467f9f();
      FUN_00690f1c(&local_18,local_10,local_c,local_18,local_14,local_20,local_1c);
      FUN_00467f9f();
      FUN_006909e2(&local_10,local_18,local_14,local_10,local_c);
    }
  }
  return param_1;
}



undefined4 * FUN_006907d0(undefined4 *param_1,byte *param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  int iVar5;
  byte *pbVar6;
  byte *pbVar7;
  bool bVar8;
  bool bVar9;
  undefined4 uVar10;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      iVar5 = 0x10;
      if (cVar1 != '\0') {
        bVar8 = false;
        iVar2 = 0;
        bVar9 = true;
        pbVar6 = (byte *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc);
        pbVar7 = param_2;
        do {
          if (iVar5 == 0) break;
          iVar5 = iVar5 + -1;
          bVar8 = *pbVar6 < *pbVar7;
          bVar9 = *pbVar6 == *pbVar7;
          pbVar6 = pbVar6 + 1;
          pbVar7 = pbVar7 + 1;
        } while (bVar9);
        if (!bVar9) {
          iVar2 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
        }
        if (-1 < iVar2) goto LAB_0069096d;
        uVar10 = 0;
        goto LAB_006907f2;
      }
      bVar8 = false;
      iVar2 = 0;
      bVar9 = true;
      pbVar6 = param_2;
      pbVar7 = (byte *)(param_4 + 0xc);
      do {
        if (iVar5 == 0) break;
        iVar5 = iVar5 + -1;
        bVar8 = *pbVar6 < *pbVar7;
        bVar9 = *pbVar6 == *pbVar7;
        pbVar6 = pbVar6 + 1;
        pbVar7 = pbVar7 + 1;
      } while (bVar9);
      if (!bVar9) {
        iVar2 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
      }
      if (iVar2 < 0) {
        iVar2 = FUN_00690d36();
        iVar5 = 0x10;
        bVar8 = false;
        iVar3 = 0;
        bVar9 = true;
        pbVar6 = (byte *)(*(int *)(iVar2 + 4) + 0xc);
        pbVar7 = param_2;
        do {
          if (iVar5 == 0) break;
          iVar5 = iVar5 + -1;
          bVar8 = *pbVar6 < *pbVar7;
          bVar9 = *pbVar6 == *pbVar7;
          pbVar6 = pbVar6 + 1;
          pbVar7 = pbVar7 + 1;
        } while (bVar9);
        if (!bVar9) {
          iVar3 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
        }
        if (-1 < iVar3) goto LAB_006908f2;
        if (*(char *)(*(int *)(param_4 + 8) + 0x3d) == '\0') {
          uVar10 = 1;
          goto LAB_006907f2;
        }
      }
      else {
LAB_006908f2:
        iVar5 = 0x10;
        bVar8 = false;
        iVar2 = 0;
        bVar9 = true;
        pbVar6 = (byte *)(param_4 + 0xc);
        pbVar7 = param_2;
        do {
          if (iVar5 == 0) break;
          iVar5 = iVar5 + -1;
          bVar8 = *pbVar6 < *pbVar7;
          bVar9 = *pbVar6 == *pbVar7;
          pbVar6 = pbVar6 + 1;
          pbVar7 = pbVar7 + 1;
        } while (bVar9);
        if (!bVar9) {
          iVar2 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
        }
        if (-1 < iVar2) {
LAB_0069096d:
          puVar4 = (undefined4 *)FUN_00690b05(in_EAX,param_2);
          *param_1 = *puVar4;
          param_1[1] = puVar4[1];
          return param_1;
        }
        FUN_0041917c();
        cVar1 = FUN_006b8eca();
        if (cVar1 == '\0') {
          iVar5 = 0x10;
          bVar8 = false;
          iVar2 = 0;
          bVar9 = true;
          pbVar6 = param_2;
          pbVar7 = (byte *)(param_4 + 0xc);
          do {
            if (iVar5 == 0) break;
            iVar5 = iVar5 + -1;
            bVar8 = *pbVar6 < *pbVar7;
            bVar9 = *pbVar6 == *pbVar7;
            pbVar6 = pbVar6 + 1;
            pbVar7 = pbVar7 + 1;
          } while (bVar9);
          if (!bVar9) {
            iVar2 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
          }
          if (-1 < iVar2) goto LAB_0069096d;
        }
        if (*(char *)(*(int *)(param_4 + 8) + 0x3d) == '\0') {
          uVar10 = 1;
          goto LAB_006907f2;
        }
      }
      uVar10 = 0;
      goto LAB_006907f2;
    }
    iVar5 = 0x10;
    bVar8 = false;
    iVar2 = 0;
    bVar9 = true;
    pbVar6 = param_2;
    pbVar7 = (byte *)(param_4 + 0xc);
    do {
      if (iVar5 == 0) break;
      iVar5 = iVar5 + -1;
      bVar8 = *pbVar6 < *pbVar7;
      bVar9 = *pbVar6 == *pbVar7;
      pbVar6 = pbVar6 + 1;
      pbVar7 = pbVar7 + 1;
    } while (bVar9);
    if (!bVar9) {
      iVar2 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
    }
    if (-1 < iVar2) goto LAB_0069096d;
  }
  uVar10 = 1;
LAB_006907f2:
  FUN_00690be9(param_1,uVar10,param_2);
  return param_1;
}



void FUN_0069098f(undefined4 *param_1,byte *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 *unaff_EBX;
  byte *pbVar6;
  bool bVar7;
  bool bVar8;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)((undefined4 *)unaff_EBX[6])[1];
  cVar1 = *(char *)((int)local_8 + 0x3d);
  puVar2 = (undefined4 *)unaff_EBX[6];
  do {
    if (cVar1 != '\0') {
      param_1[1] = puVar2;
      *param_1 = *unaff_EBX;
      return;
    }
    iVar4 = 0x10;
    bVar7 = false;
    iVar3 = 0;
    bVar8 = true;
    puVar5 = local_8 + 3;
    pbVar6 = param_2;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar7 = *(byte *)puVar5 < *pbVar6;
      bVar8 = *(byte *)puVar5 == *pbVar6;
      puVar5 = (undefined4 *)((int)puVar5 + 1);
      pbVar6 = pbVar6 + 1;
    } while (bVar8);
    if (!bVar8) {
      iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
    }
    if (iVar3 < 0) {
      puVar5 = (undefined4 *)local_8[2];
      local_8 = puVar2;
    }
    else {
      puVar5 = (undefined4 *)*local_8;
    }
    cVar1 = *(char *)((int)puVar5 + 0x3d);
    puVar2 = local_8;
    local_8 = puVar5;
  } while( true );
}



undefined4 FUN_006909e2(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  int local_1c;
  int local_18;
  int local_14;
  uint local_10;
  int local_c;
  
  FUN_00467f9f();
  FUN_00467f9f();
  FUN_00467f9f();
  iVar1 = local_24;
  if ((local_24 == 0) || (local_24 != local_14)) {
    FUN_00a3fb10();
  }
  iVar2 = local_20;
  local_10 = local_20 - local_10;
  if ((local_1c == 0) || (local_1c != iVar1)) {
    FUN_00a3fb10();
  }
  local_c = local_18 - iVar2;
  FUN_00467f9f();
  if ((local_2c == 0) || (local_2c != local_1c)) {
    FUN_00a3fb10();
  }
  if (local_10 < (uint)(local_28 - local_18)) {
    FUN_00467f9f();
    FUN_00690fcd(&local_2c,local_2c,local_28,local_24,local_20,local_1c,local_18);
    if (local_c != 0) {
      do {
        FUN_00452a84();
        local_c = local_c + -1;
      } while (local_c != 0);
      local_c = 0;
    }
  }
  else {
    FUN_00467f9f();
    FUN_00691022(&local_2c,local_1c,local_18,local_2c,local_28,local_24,local_20);
    for (; local_c != 0; local_c = local_c + -1) {
      FUN_0068e6a1();
    }
  }
  FUN_00467f9f();
  FUN_00690e2e();
  return param_1;
}



void FUN_00690b05(undefined4 *param_1,byte *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int iVar4;
  int iVar5;
  undefined4 *unaff_EBX;
  byte *pbVar6;
  bool bVar7;
  bool bVar8;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  puVar3 = (undefined4 *)((undefined4 *)param_1[6])[1];
  cVar1 = *(char *)((int)puVar3 + 0x3d);
  local_8 = CONCAT31(local_8._1_3_,1);
  local_10 = (undefined4 *)param_1[6];
  while (cVar1 == '\0') {
    iVar4 = 0x10;
    bVar7 = false;
    iVar5 = 0;
    bVar8 = true;
    pbVar6 = param_2;
    puVar2 = puVar3 + 3;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar7 = *pbVar6 < *(byte *)puVar2;
      bVar8 = *pbVar6 == *(byte *)puVar2;
      pbVar6 = pbVar6 + 1;
      puVar2 = (undefined4 *)((int)puVar2 + 1);
    } while (bVar8);
    if (!bVar8) {
      iVar5 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
    }
    local_8._1_3_ = (uint3)((uint)local_8 >> 8);
    if (iVar5 < 0) {
      puVar2 = (undefined4 *)*puVar3;
      local_8 = CONCAT31(local_8._1_3_,1);
    }
    else {
      puVar2 = (undefined4 *)puVar3[2];
      local_8 = (uint)local_8._1_3_ << 8;
    }
    local_10 = puVar3;
    puVar3 = puVar2;
    cVar1 = *(char *)((int)puVar2 + 0x3d);
  }
  local_14 = *param_1;
  local_c = local_10;
  if ((char)local_8 == '\0') {
LAB_00690bad:
    iVar4 = 0x10;
    bVar7 = false;
    iVar5 = 0;
    bVar8 = true;
    puVar3 = local_10 + 3;
    pbVar6 = param_2;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar7 = *(byte *)puVar3 < *pbVar6;
      bVar8 = *(byte *)puVar3 == *pbVar6;
      puVar3 = (undefined4 *)((int)puVar3 + 1);
      pbVar6 = pbVar6 + 1;
    } while (bVar8);
    if (!bVar8) {
      iVar5 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
    }
    iVar4 = local_8;
    if (-1 < iVar5) {
      *unaff_EBX = local_14;
      *(undefined *)(unaff_EBX + 2) = 0;
      goto LAB_00690bde;
    }
  }
  else {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      FUN_00690d36();
      goto LAB_00690bad;
    }
    iVar4 = 1;
  }
  puVar3 = (undefined4 *)FUN_00690be9(&local_1c,iVar4,param_2);
  local_10 = (undefined4 *)puVar3[1];
  *unaff_EBX = *puVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
LAB_00690bde:
  unaff_EBX[1] = local_10;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_00690be9(int **param_1_00,undefined4 *param_1,char param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x690bf5;
  if (0x5555553 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_00690ea3(unaff_ESI[6],param_1_00,unaff_ESI[6],param_3);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_00690d0e;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_00690d0e;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_00690d0e:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xf) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x3c) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xf) == '\0') {
LAB_00690cca:
        *(undefined *)(piVar1 + 0xf) = 1;
        *(undefined *)(piVar7 + 0xf) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x3c) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_00418e61(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x3c) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x3c) = 0;
        FUN_00418ea1(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xf) == '\0') goto LAB_00690cca;
    if (piVar8 == (int *)*piVar1) {
      FUN_00418ea1(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x3c) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x3c) = 0;
    FUN_00418e61(unaff_ESI);
  } while( true );
}



void FUN_00690d36(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x3d) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x3d) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x3d) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x3d) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x3d) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x3d) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_00690d97(int *param_1)

{
  int **ppiVar1;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  
  ppiVar1 = (int **)FUN_00418daa(1,0);
  if (ppiVar1 == (int **)0x0) {
    ppiVar1 = (int **)0x0;
  }
  else {
    *ppiVar1 = param_1;
  }
  *param_1 = (int)ppiVar1;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  FUN_00467f9f();
  FUN_00467f9f();
  FUN_00467f9f();
  FUN_00690fa7(param_1,local_2c,local_28,local_24,local_20,local_1c,local_18);
  return param_1;
}



void Catch_All_00690e1c(void)

{
  code *pcVar1;
  
  FUN_0068e65d();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00690e2e(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *in_EAX;
  undefined4 *unaff_EDI;
  
  uVar1 = *in_EAX;
  uVar2 = in_EAX[1];
  FUN_00690e57();
  *unaff_EDI = uVar1;
  unaff_EDI[1] = uVar2;
  return;
}



void FUN_00690e57(void)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int unaff_EBX;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 != (int *)0x0) goto LAB_00690e69;
    iVar2 = 0;
  }
  else {
LAB_00690e69:
    iVar2 = *piVar1;
  }
  if (piVar1 == (int *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar1;
  }
  if ((uint)((int)unaff_ESI[1] + unaff_EBX) <=
      (uint)(*(int *)(iVar3 + 0x1c) + *(int *)(iVar2 + 0x18))) {
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *piVar1;
    }
    if (*(uint *)(iVar2 + 0x18) <= (uint)((int)unaff_ESI[1] + unaff_EBX)) goto LAB_00690e9d;
  }
  FUN_00a3fb10();
LAB_00690e9d:
  unaff_ESI[1] = (int *)((int)unaff_ESI[1] + unaff_EBX);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_00690ea3(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x40);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_4;
    puVar1[4] = param_4[1];
    puVar1[5] = param_4[2];
    puVar1[6] = param_4[3];
    FUN_00690d97(puVar1 + 7,param_4 + 4);
    *(undefined *)(puVar1 + 0xf) = 0;
    *(undefined *)((int)puVar1 + 0x3d) = 0;
  }
  return puVar1;
}



void Catch_All_00690f09(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



undefined4
FUN_00690f1c(undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5)

{
  undefined4 uVar1;
  
  FUN_00690e2e();
  for (; param_3 != param_5; param_3 = param_3 + 1) {
    uVar1 = FUN_006913fd();
    FUN_006913fd();
    FUN_005d11c9(uVar1);
  }
  return param_1;
}



void FUN_00690fa7(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  FUN_006910af(param_1,param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  return;
}



undefined4
FUN_00690fcd(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 *param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  if (param_4 == (undefined4 *)0x0) {
    param_4 = (undefined4 *)0x0;
  }
  else {
    param_4 = (undefined4 *)*param_4;
  }
  if (param_2 == (undefined4 *)0x0) {
    param_2 = (undefined4 *)0x0;
  }
  else {
    param_2 = (undefined4 *)*param_2;
  }
  FUN_00691257(param_1,param_1,param_1,0,*param_2,param_3,*param_4,param_5,param_6,param_7);
  return param_1;
}



undefined4
FUN_00691022(undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5)

{
  undefined4 uVar1;
  
  FUN_00690e2e();
  for (; param_3 != param_5; param_3 = param_3 + 1) {
    FUN_006913fd();
    uVar1 = FUN_006913fd();
    FUN_005d11c9(uVar1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006910af(int param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,
                 int param_7,int param_8)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  int local_1c;
  int local_18;
  
  FUN_00467f9f();
  if ((param_3 == 0) || (param_3 != local_1c)) {
    FUN_00a3fb10();
  }
  uVar2 = param_4 - local_18;
  uVar1 = *(uint *)(param_1 + 0x1c);
  if ((param_5 == 0) || (param_5 != param_7)) {
    FUN_00a3fb10();
  }
  if (param_6 != param_8) {
    if (uVar2 < uVar1 - uVar2) {
      if ((param_5 == 0) || (param_5 != param_7)) {
        FUN_00a3fb10();
      }
      if (param_6 == param_8) {
        iVar3 = *(int *)(param_1 + 0x1c) - uVar1;
        if (uVar2 != 0) {
          FUN_00691364(iVar3,iVar3 + uVar2);
          iVar3 = iVar3 + uVar2;
        }
        FUN_00691248(iVar3);
        return;
      }
      iVar3 = FUN_006913fd();
                    // WARNING: Subroutine does not return
      FUN_0043c023(iVar3 + 4);
    }
    if ((param_5 == 0) || (param_5 != param_7)) {
      FUN_00a3fb10();
    }
    if (param_6 != param_8) {
      iVar3 = FUN_006913fd();
                    // WARNING: Subroutine does not return
      FUN_0043c023(iVar3 + 4);
    }
    if (uVar2 < uVar1) {
      FUN_00691364(uVar2,uVar1);
      FUN_00691364(uVar1,*(undefined4 *)(param_1 + 0x1c));
      FUN_00691364(uVar2,*(undefined4 *)(param_1 + 0x1c));
    }
  }
  return;
}



void Catch_All_00691172(void)

{
  uint uVar1;
  int iVar2;
  int unaff_EBX;
  int unaff_EBP;
  
  iVar2 = *(int *)(unaff_EBP + 8);
  uVar1 = *(uint *)(unaff_EBP + -0x14);
  while (uVar1 < *(uint *)(iVar2 + 0x1c)) {
    FUN_00452a84();
  }
  __CxxThrowException_8(0,0);
  iVar2 = *(int *)(uVar1 + 0x1c) - *(int *)(unaff_EBP + -0x14);
  if (unaff_EBX != 0) {
    FUN_00691364(iVar2,iVar2 + unaff_EBX);
    iVar2 = iVar2 + unaff_EBX;
  }
  FUN_00691248(iVar2);
  return;
}



void Catch_All_00691210(void)

{
  uint uVar1;
  int iVar2;
  int unaff_EBX;
  int unaff_EBP;
  
  iVar2 = *(int *)(unaff_EBP + 8);
  uVar1 = *(uint *)(unaff_EBP + -0x14);
  while (uVar1 < *(uint *)(iVar2 + 0x1c)) {
    FUN_0068e6a1();
  }
  __CxxThrowException_8(0,0);
  iVar2 = *(int *)(uVar1 + 0x1c) - *(int *)(unaff_EBP + -0x14);
  if (unaff_EBX != 0) {
    FUN_00691364(iVar2,iVar2 + unaff_EBX);
    iVar2 = iVar2 + unaff_EBX;
  }
  FUN_00691248(iVar2);
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00691248(void)

{
  FUN_00691364();
  return;
}



undefined4 * FUN_00691257(undefined4 *param_1)

{
  undefined4 uVar1;
  int param_6;
  int param_8;
  undefined4 param_9;
  undefined4 param_10;
  
  FUN_00690e57();
  *param_1 = param_9;
  param_1[1] = param_10;
  for (; param_6 != param_8; param_8 = param_8 + -1) {
    FUN_006913fd();
    uVar1 = FUN_006913fd();
    FUN_005d11c9(uVar1);
  }
  return param_1;
}



void FUN_00691364(int param_1,int param_2)

{
  FUN_00467f9f();
  for (; (param_1 != param_2 && (param_2 = param_2 + -1, param_1 != param_2)); param_1 = param_1 + 1
      ) {
    FUN_00690e2e();
    FUN_006913fd();
    FUN_00690e2e();
    FUN_006913fd();
    FUN_0046f668();
  }
  return;
}



void FUN_006913c6(void)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
      goto LAB_006913dd;
    }
  }
  iVar3 = *piVar1;
LAB_006913dd:
  if (piVar1 == (int *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1;
  }
  if ((int *)(*(int *)(iVar2 + 0x1c) + *(int *)(iVar3 + 0x18)) <= unaff_ESI[1]) {
    FUN_00a3fb10();
  }
  unaff_ESI[1] = (int *)((int)unaff_ESI[1] + 1);
  return;
}



int FUN_006913fd(void)

{
  int *piVar1;
  int **in_EAX;
  int *piVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  
  piVar1 = in_EAX[1];
  piVar2 = *in_EAX;
  uVar5 = (uint)piVar1 >> 1;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    piVar2 = *in_EAX;
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
      goto LAB_00691425;
    }
  }
  iVar4 = *piVar2;
LAB_00691425:
  if (piVar2 == (int *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar2;
  }
  if ((int *)(*(int *)(iVar3 + 0x1c) + *(int *)(iVar4 + 0x18)) <= in_EAX[1]) {
    FUN_00a3fb10();
  }
  piVar2 = *in_EAX;
  if (piVar2 == (int *)0x0) {
    iVar4 = 0;
  }
  else {
    iVar4 = *piVar2;
  }
  if (*(uint *)(iVar4 + 0x14) <= uVar5) {
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *piVar2;
    }
    uVar5 = uVar5 - *(int *)(iVar4 + 0x14);
  }
  if (piVar2 == (int *)0x0) {
    iVar4 = 0;
  }
  else {
    iVar4 = *piVar2;
  }
  return *(int *)(*(int *)(iVar4 + 0x10) + uVar5 * 4) + ((uint)piVar1 & 1) * 8;
}



void FUN_00691474(undefined4 param_1,undefined4 param_2)

{
  DWORD DVar1;
  
  DVar1 = GetTickCount();
  FUN_004539f5(param_2,DVar1);
  return;
}



undefined4 __thiscall FUN_0069155c(undefined4 param_1_00,byte param_1)

{
  FUN_00691578();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00691578(undefined4 *param_1)

{
  *param_1 = WF8266037::WA20343ED::vftable;
  if (param_1[0x19] != 0) {
    FUN_0040127a();
  }
  FUN_00698168();
  return;
}



char FUN_006915f2(undefined4 param_1)

{
  char cVar1;
  int in_EAX;
  undefined4 uVar2;
  
  if (*(char *)(in_EAX + 0xc) == '\0') {
    uVar2 = 0x51a19de6;
  }
  else {
    cVar1 = FUN_0069ad45(param_1);
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0xc225b301;
  }
  FUN_00b940e0(uVar2);
  return '\0';
}



void FUN_00691632(void)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *(undefined4 *)(in_EAX + 0x60);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 100);
}



undefined4 * __thiscall FUN_006916e7(undefined4 *param_1,byte param_2)

{
  *param_1 = WF8266037::W480079E5::vftable;
  FUN_00698168();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall
FUN_006921d7(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  FUN_00699f13(param_1);
  *param_1 = WF8266037::W2FF09544::vftable;
  *(undefined *)(param_1 + 0x2d) = 0;
  *(undefined *)((int)param_1 + 0xb5) = 0;
  *(undefined *)((int)param_1 + 0xb6) = 0;
  param_1[0x2e] = 0;
  param_1[0x2f] = 0;
  param_1[0x30] = param_4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0x30);
}



undefined4 __thiscall FUN_006922fb(undefined4 param_1_00,byte param_1)

{
  FUN_00692317();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00692317(undefined4 *param_1)

{
  int local_38;
  undefined4 local_34;
  int *local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = WF8266037::W2FF09544::vftable;
  local_8 = 2;
  local_18 = param_1;
  if (param_1[0x2e] != 0) {
    local_34 = 0x692347;
    FUN_00b725b0();
    local_1c = &local_38;
    local_38 = param_1[0x2e];
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 0x2f);
  }
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  if (param_1[0x2f] != 0) {
    local_34 = 0x692392;
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  local_34 = 0x69239d;
  FUN_0069a014();
  return;
}



void Catch_All_006923a3(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



char __fastcall FUN_006923ad(int param_1)

{
  char cVar1;
  
  cVar1 = FUN_006afa29();
  if (cVar1 == '\0') {
    FUN_00b940e0(0x8a8cdd51);
  }
  *(undefined *)(param_1 + 0xb5) = 1;
  *(undefined *)(param_1 + 0xb4) = 0;
  return cVar1;
}



void __fastcall FUN_006923e7(int param_1)

{
  *(undefined *)(param_1 + 0xb6) = 1;
  FUN_00b725b0();
  return;
}



void FUN_006923fc(void)

{
  FUN_00697fdd();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_0069240a(int param_1_00,undefined4 *param_1,undefined *param_2)

{
  char cVar1;
  int iVar2;
  
  cVar1 = FUN_00692d9d();
  if (cVar1 == '\0') {
    FUN_00b940e0();
    *param_1 = 0;
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  if (param_2 < (undefined *)0xb85a39da) {
    if (param_2 == (undefined *)0xb85a39d9) {
                    // WARNING: Subroutine does not return
      FUN_0043c023();
    }
    if (param_2 < (undefined *)0x66b7f910) {
      if (param_2 == (undefined *)0x66b7f90f) {
LAB_00692a66:
                    // WARNING: Subroutine does not return
        FUN_0043c023();
      }
      if (param_2 == (undefined *)0x19fb2302) {
                    // WARNING: Subroutine does not return
        FUN_0043c023();
      }
      if (param_2 == &DAT_238ec14f) {
                    // WARNING: Subroutine does not return
        FUN_0043c023();
      }
      if (param_2 == (undefined *)0x2ac31803) {
                    // WARNING: Subroutine does not return
        FUN_0043c023();
      }
      if (param_2 == (undefined *)0x48aa3315) {
                    // WARNING: Subroutine does not return
        FUN_0043c023();
      }
      if (param_2 == (undefined *)0x669d07aa) {
                    // WARNING: Subroutine does not return
        FUN_0043c023();
      }
    }
    else {
      if (param_2 == (undefined *)0x747837d0) goto LAB_00692a66;
      if (param_2 == (undefined *)0x9d2d915f) {
                    // WARNING: Subroutine does not return
        FUN_0043c023(param_1_00 + 0xbc);
      }
      if (param_2 == (undefined *)0xa28ace2f) {
                    // WARNING: Subroutine does not return
        FUN_0043c023();
      }
      if (param_2 == (undefined *)0xb645257c) {
                    // WARNING: Subroutine does not return
        FUN_0043c023();
      }
    }
  }
  else if (param_2 < (undefined *)0xc532755a) {
    if (param_2 == (undefined *)0xc5327559) goto LAB_00692a66;
    if (param_2 == (undefined *)0xb889bbbe) {
                    // WARNING: Subroutine does not return
      FUN_0043c023();
    }
    if (param_2 == (undefined *)0xbebce203) {
                    // WARNING: Subroutine does not return
      FUN_0043c023();
    }
    if (param_2 == &DAT_bf5cd76b) {
                    // WARNING: Subroutine does not return
      FUN_0043c023();
    }
    if (param_2 == (undefined *)0xc15eaa02) {
                    // WARNING: Subroutine does not return
      FUN_0043c023();
    }
  }
  else {
    if (param_2 == (undefined *)0xcdf8f6ee) {
                    // WARNING: Subroutine does not return
      FUN_0043c023();
    }
    if (param_2 == (undefined *)0xd798d7e5) {
                    // WARNING: Subroutine does not return
      FUN_0043c023();
    }
    if (param_2 == (undefined *)0xdcf39bba) {
                    // WARNING: Subroutine does not return
      FUN_0043c023();
    }
    if (param_2 == (undefined *)0xf2815168) {
                    // WARNING: Subroutine does not return
      FUN_0043c023();
    }
  }
  FUN_006b8ee5();
  iVar2 = FUN_006b8e23();
  if (iVar2 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1_00 + 0xbc);
  }
  if (*(int *)(param_1_00 + 0xc) != 0) {
    FUN_00693676();
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



undefined4 FUN_00692d9d(void)

{
  undefined uVar1;
  char cVar2;
  int iVar3;
  int unaff_EBX;
  bool local_61;
  int local_58;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e462;
  local_14 = ExceptionList;
  if (*(char *)(unaff_EBX + 0xb4) == '\0') {
    if (*(char *)(unaff_EBX + 0xb6) == '\0') {
      local_61 = *(char *)(unaff_EBX + 0xb5) == '\0';
      ExceptionList = &local_14;
      if (!local_61) {
        FUN_00b940e0();
        FUN_004398f2();
        local_c = 3;
        if (local_61) {
          cVar2 = FUN_006afab6();
          if (cVar2 != '\0') {
            FUN_0069a412();
            FUN_0068fe5f();
            local_c = CONCAT31(local_c._1_3_,4);
                    // WARNING: Subroutine does not return
            FUN_0043c023();
          }
          FUN_00b940e0();
          local_61 = false;
        }
        *(bool *)(unaff_EBX + 0xb4) = local_61;
        FUN_0041c3a7();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      (**(code **)**(undefined4 **)(unaff_EBX + 0xc0))();
      cVar2 = FUN_00479536();
      if (local_58 != 0) {
        FUN_0040127a();
      }
      if (cVar2 == '\0') {
        FUN_00b940e0();
        iVar3 = FUN_006900cc();
        puStack_10 = (undefined *)0x0;
                    // WARNING: Subroutine does not return
        FUN_0043c023(iVar3 + 4);
      }
      iVar3 = FUN_0068fffd();
      puStack_10 = (undefined *)0x1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(iVar3 + 4);
    }
    uVar1 = 0;
  }
  else {
    uVar1 = 1;
  }
  return CONCAT31((int3)((uint)&local_14 >> 8),uVar1);
}



void FUN_00693005(void)

{
  int in_EAX;
  
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 4);
}



void Catch_All_0069308f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006930a6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD7AE7171>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006930ec(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00693149(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00693160(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W3F3F7BE2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006931a6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006931bd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W6DC25463>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00693203(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0069321a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W6E927DEC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00693260(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00693277(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WA306B2A4>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006932bd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006932d4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W374B4395>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0069331a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00693331(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WA457D68B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00693377(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0069338e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD6BCA60B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006933d4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006933eb(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WF2E69395>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00693431(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00693448(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WCB5FFCEE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0069348e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006934a5(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W0F4A61DF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006934eb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00693502(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W04E20B94>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00693548(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0069355f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W1DE80C64>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006935a5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00693602(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00693619(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WABE12921::WAA301482>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0069365f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00693676(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WABE12921::WAA301482::vftable;
    puVar2[1] = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00693619(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



bool FUN_006936e3(void)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_006c0096();
  if (iVar1 == 0) {
    iVar1 = FUN_006c0ecd();
    if (iVar1 == 0) goto LAB_0069371d;
    uVar2 = 0xcfcee228;
  }
  else {
    uVar2 = 0x3ce41681;
  }
  FUN_00b940e0(uVar2);
LAB_0069371d:
  return iVar1 == 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x00694040)
// WARNING: Removing unreachable block (ram,0x00694050)

undefined4 * __thiscall
FUN_006939cc(int param_1_00,undefined4 *param_1,undefined *param_2,int param_3,undefined4 param_4,
            int param_5)

{
  undefined4 extraout_ECX;
  undefined *puStack_d0;
  int **ppiStack_cc;
  undefined *puStack_c8;
  void *local_74;
  undefined4 local_6c;
  undefined4 uStack_68;
  int local_48;
  int local_44;
  undefined local_38 [4];
  int local_34;
  int *local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  int local_14;
  undefined **local_10;
  uint local_8;
  
  uStack_68 = 0x40;
  local_8 = 0;
  local_6c = 2;
  puStack_c8 = local_38;
  local_44 = 0;
  ppiStack_cc = (int **)0x6939fb;
  local_48 = param_1_00;
  (**(code **)**(undefined4 **)(param_1_00 + 4))();
  local_6c._0_1_ = 3;
  ppiStack_cc = (int **)extraout_ECX;
  if (*(char *)(param_1_00 + 0x38) == '\0') {
    ppiStack_cc = (int **)0x402d10b8;
    local_44 = 1;
    puStack_d0 = (undefined *)0x693a1d;
    FUN_00b940e0();
  }
  local_28 = 0;
  local_24 = 0;
  local_6c._0_1_ = 4;
  if (local_44 == 0) {
    ppiStack_cc = &local_30;
    puStack_d0 = (undefined *)0x693a3a;
    FUN_00694c72();
    local_6c = CONCAT31(local_6c._1_3_,5);
    if (local_30 == (int *)0x0) {
      local_14 = 0;
    }
    else {
      local_14 = *(int *)(*local_30 + 8) + (int)local_30;
    }
    ppiStack_cc = (int **)&local_2c;
                    // WARNING: Subroutine does not return
    puStack_d0 = &UNK_00693a61;
    FUN_0043c023();
  }
  local_30 = (int *)0x0;
  local_2c = 0;
  local_6c = CONCAT31(local_6c._1_3_,0x22);
  if (local_44 == 0) {
    local_10 = &puStack_d0;
    puStack_d0 = *(undefined **)(local_48 + 8);
                    // WARNING: Subroutine does not return
    FUN_0043c023(local_48 + 0xc);
  }
  *param_1 = 0;
  param_1[1] = 0;
  local_8 = local_8 | 0x40;
  if (local_44 == 0) {
    local_10 = &puStack_d0;
    puStack_d0 = param_2;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_3);
  }
  local_24 = 0;
  local_28 = 0;
  local_2c = 0;
  local_30 = (int *)0x0;
  local_6c._0_1_ = 2;
  if (local_34 != 0) {
    ppiStack_cc = (int **)0x694065;
    FUN_0040127a();
  }
  local_6c._0_1_ = 1;
  if (param_3 != 0) {
    ppiStack_cc = (int **)0x694075;
    FUN_0040127a();
  }
  local_6c = (uint)local_6c._1_3_ << 8;
  if (param_5 != 0) {
    ppiStack_cc = (int **)0x694084;
    FUN_0040127a();
  }
  ExceptionList = local_74;
  return param_1;
}



undefined4 * FUN_0069409b(undefined4 param_1,undefined4 param_2)

{
  undefined4 *in_EAX;
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = param_2;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = *in_EAX;
                    // WARNING: Subroutine does not return
    FUN_0043c023(in_EAX + 1);
  }
  return puVar1;
}



undefined4 FUN_006940de(undefined4 param_1)

{
  undefined local_c [8];
  
  FUN_004f9bd2(local_c);
  FUN_0046f668();
  FUN_005e72d0();
  return param_1;
}



void Catch_All_00694280(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void Catch_All_006942d9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_0069435b(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00694336(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_0069434d(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_0069435b(*(int *)(param_1 + 0xc));
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0069435b(int param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *(int **)(param_1 + 0x14);
  iVar2 = *piVar1;
  *piVar1 = (int)piVar1;
  *(int *)(*(int *)(param_1 + 0x14) + 4) = *(int *)(param_1 + 0x14);
  *(undefined4 *)(param_1 + 0x18) = 0;
  if (iVar2 != *(int *)(param_1 + 0x14)) {
    FUN_005e72d0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x14));
}



void __fastcall FUN_006943c2(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_006943d0(*(int *)(param_1 + 0xc));
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006943d0(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0040127a();
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



void Catch_All_00694456(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_006943d0(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0069453a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W2AC8B1F5::WEB5198A9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00694580(void)

{
  int *piVar1;
  code *pcVar2;
  int unaff_EBP;
  
  piVar1 = *(int **)(unaff_EBP + 8);
  if (piVar1 != (int *)0x0) {
    (***(code ***)(*(int *)(*piVar1 + 4) + (int)piVar1))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



void __fastcall FUN_0069466b(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    (***(code ***)(*(int *)(*(int *)(iVar1 + 8) + 4) + 8 + iVar1))(1);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00694683(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W188DADF7::WCDB98009>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006946c9(void)

{
  int iVar1;
  code *pcVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  if (iVar1 != 0) {
    (***(code ***)(*(int *)(*(int *)(iVar1 + 8) + 4) + 8 + iVar1))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006947ba(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WA898D757::WA7E265F1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00694800(void)

{
  int *piVar1;
  code *pcVar2;
  int unaff_EBP;
  
  piVar1 = *(int **)(unaff_EBP + 8);
  if (piVar1 != (int *)0x0) {
    (***(code ***)(*(int *)(*piVar1 + 4) + (int)piVar1))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0069481e(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006947ba(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void __fastcall FUN_00694982(int param_1)

{
  int *piVar1;
  
  piVar1 = *(int **)(param_1 + 0xc);
  if (piVar1 != (int *)0x0) {
    (***(code ***)(*(int *)(*piVar1 + 4) + (int)piVar1))(1);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00694997(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W1173AF1C::WC99D317C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006949dd(void)

{
  int *piVar1;
  code *pcVar2;
  int unaff_EBP;
  
  piVar1 = *(int **)(unaff_EBP + 8);
  if (piVar1 != (int *)0x0) {
    (***(code ***)(*(int *)(*piVar1 + 4) + (int)piVar1))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00694ad7(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD6768623::W45D05323>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00694b1d(void)

{
  int *piVar1;
  code *pcVar2;
  int unaff_EBP;
  
  piVar1 = *(int **)(unaff_EBP + 8);
  if (piVar1 != (int *)0x0) {
    (***(code ***)(*(int *)(*piVar1 + 4) + (int)piVar1))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00694c0e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WF0E4C8E9::WA941B98E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00694c54(void)

{
  int *piVar1;
  code *pcVar2;
  int unaff_EBP;
  
  piVar1 = *(int **)(unaff_EBP + 8);
  if (piVar1 != (int *)0x0) {
    (***(code ***)(*(int *)(*piVar1 + 4) + (int)piVar1))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00694c72(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x54);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_006bfec0(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00694c0e(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_006964ec(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x696504;
  FUN_0069688c();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0069650b;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00694ddb(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined *puVar3;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 4;
  iStack_24 = 0x694dfc;
  FUN_00417fe6();
  iStack_24 = 0x694e04;
  FUN_00417fe6();
  iStack_24 = param_1 + 0x5c;
  puVar1 = &uStack_28;
  uStack_28 = 0x694e0d;
  FUN_0069680e();
  puVar1[-1] = param_1 + 0x3c;
  local_8._0_1_ = 3;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x694e1a;
  FUN_006964ec();
  *(int *)((int)puVar2 + -4) = param_1 + 0x1c;
  local_8._0_1_ = 2;
  puVar3 = (undefined *)((int)puVar2 + -8);
  *(undefined4 *)((int)puVar2 + -8) = 0x694e27;
  FUN_006964ec();
  *(undefined4 *)(puVar3 + -4) = 0x694e2f;
  FUN_00417fe6();
  local_8 = (uint)local_8._1_3_ << 8;
  if (*(int *)(param_1 + 0x10) != 0) {
    *(undefined4 *)(puVar3 + -4) = 0x694e3f;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (*(int *)(param_1 + 8) != 0) {
    *(undefined4 *)(puVar3 + -4) = 0x694e4f;
    FUN_0040127a();
  }
  *(undefined4 *)(puVar3 + -4) = 0x694e54;
  return;
}



void __fastcall FUN_00694e57(int param_1)

{
  uint uVar1;
  char local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c59589;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_14;
  FUN_0043d406(param_1 + 0x7c);
  local_c = 0;
  FUN_00694ec5(uVar1);
  FUN_00694fb2();
  local_c = 0xffffffff;
  if (local_1c != '\0') {
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



void FUN_00694ec5(void)

{
  char cVar1;
  int unaff_EBX;
  
  if (*(char *)(unaff_EBX + 0x8c) == '\0') {
    *(char *)(unaff_EBX + 0x8c) = '\x01';
    while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
      FUN_006badde();
      FUN_006b944a();
      FUN_00696a87();
    }
    while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
      FUN_006badde();
      FUN_006b944a();
      FUN_00696a87();
    }
    while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
      FUN_006badde();
      FUN_006b944a();
      FUN_00696a87();
    }
  }
  return;
}



void FUN_00694fb2(void)

{
  char cVar1;
  
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_006badde();
    FUN_006b9469();
    FUN_00696a87();
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_006badde();
    FUN_006b9469();
    FUN_00696a87();
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_006badde();
    FUN_006b9469();
    FUN_00696a87();
  }
  return;
}



// WARNING: Removing unreachable block (ram,0x006955d0)
// WARNING: Removing unreachable block (ram,0x006956b2)
// WARNING: Removing unreachable block (ram,0x006956d3)
// WARNING: Removing unreachable block (ram,0x006957ac)
// WARNING: Removing unreachable block (ram,0x006957b8)
// WARNING: Removing unreachable block (ram,0x006956f6)
// WARNING: Removing unreachable block (ram,0x0069571b)
// WARNING: Removing unreachable block (ram,0x006957a2)
// WARNING: Removing unreachable block (ram,0x006955df)
// WARNING: Removing unreachable block (ram,0x00695624)
// WARNING: Removing unreachable block (ram,0x00695690)
// WARNING: Removing unreachable block (ram,0x006956a9)
// WARNING: Removing unreachable block (ram,0x006957bc)

uint FUN_006954ff(void)

{
  char cVar1;
  uint uVar2;
  int **unaff_EBX;
  char local_48;
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3eabf;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_0043d406();
  local_c = 0;
  cVar1 = (**(code **)(**unaff_EBX + 0xc))();
  if (cVar1 == '\0') {
    uVar2 = FUN_00b940e0();
    puStack_10 = (undefined *)0xffffffff;
    if (local_48 != '\0') {
      uVar2 = FUN_00401477();
    }
    ExceptionList = pvStack_18;
    return uVar2 & 0xffffff00;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EBX + 4);
}



int FUN_006963fb(undefined4 param_1,uint *param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int local_40;
  undefined4 local_30;
  undefined4 local_2c;
  uint local_28;
  undefined4 local_24;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1cbe4;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  FUN_0069685a(param_2);
  cVar1 = FUN_006b8eca(uVar2);
  if ((cVar1 == '\0') && (*(uint *)(local_40 + 0xc) <= *param_2)) {
    iVar3 = FUN_006badde();
    ExceptionList = local_14;
    return iVar3 + 4;
  }
  local_30 = 0;
  local_2c = 0;
  local_c = 0;
  local_28 = *param_2;
  local_24 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_30);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_006964ec(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x696504;
  FUN_0069688c();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0069650b;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x006965ff)
// WARNING: Removing unreachable block (ram,0x0069660f)
// WARNING: Removing unreachable block (ram,0x00696618)
// WARNING: Removing unreachable block (ram,0x0069661b)
// WARNING: Removing unreachable block (ram,0x0069660b)
// WARNING: Removing unreachable block (ram,0x00696628)
// WARNING: Removing unreachable block (ram,0x00696638)
// WARNING: Removing unreachable block (ram,0x00696643)
// WARNING: Removing unreachable block (ram,0x0069663f)
// WARNING: Removing unreachable block (ram,0x00696633)
// WARNING: Removing unreachable block (ram,0x00696646)

void FUN_00696514(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x696520;
  if (*(char *)((int)param_4 + 0x1d) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00696a87();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
    if (*(char *)(param_4[2] + 0x1d) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x1d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x1d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 7) != '\x01') {
LAB_00696777:
    if (param_4[5] != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_0069672b:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 7) != '\x01'))
  goto LAB_00696773;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 7) == '\0') {
      *(undefined *)(ppiVar4 + 7) = 1;
      *(undefined *)(ppiVar3 + 7) = 0;
      FUN_00745426(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x1d) == '\0') {
      if ((*(char *)(*ppiVar4 + 7) != '\x01') || (*(char *)(ppiVar4[2] + 7) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 7) == '\x01') {
          *(undefined *)(*ppiVar4 + 7) = 1;
          *(undefined *)(ppiVar4 + 7) = 0;
          FUN_006baade(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 7) = *(undefined *)(ppiVar3 + 7);
        *(undefined *)(ppiVar3 + 7) = 1;
        *(undefined *)(ppiVar4[2] + 7) = 1;
        FUN_00745426(param_1);
        goto LAB_00696773;
      }
LAB_00696722:
      *(undefined *)(ppiVar4 + 7) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 7) == '\0') {
      *(undefined *)(ppiVar4 + 7) = 1;
      *(undefined *)(ppiVar3 + 7) = 0;
      FUN_006baade(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x1d) == '\0') {
      if ((*(char *)(ppiVar4[2] + 7) == '\x01') && (*(char *)(*ppiVar4 + 7) == '\x01'))
      goto LAB_00696722;
      if (*(char *)(*ppiVar4 + 7) == '\x01') {
        *(undefined *)(ppiVar4[2] + 7) = 1;
        *(undefined *)(ppiVar4 + 7) = 0;
        FUN_00745426(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 7) = *(undefined *)(ppiVar3 + 7);
      *(undefined *)(ppiVar3 + 7) = 1;
      *(undefined *)(*ppiVar4 + 7) = 1;
      FUN_006baade(param_1);
LAB_00696773:
      *(undefined *)(ppiVar5 + 7) = 1;
      goto LAB_00696777;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_0069672b;
}



void FUN_006967ad(undefined4 *param_1,uint *param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  FUN_0069685a(param_2);
  local_10 = unaff_EBX[6];
  local_14 = *unaff_EBX;
  puVar3 = &local_c;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (*param_2 < *(uint *)(local_8 + 0xc))) {
    local_10 = unaff_EBX[6];
    local_14 = *unaff_EBX;
    puVar3 = &local_14;
  }
  uVar1 = puVar3[1];
  *param_1 = *puVar3;
  param_1[1] = uVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0069680e(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x696826;
  FUN_00696a53();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0069682d;
  FUN_00a3f6a1();
}



void FUN_00696836(void)

{
  int *piVar1;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EDI + 0x18);
  FUN_00696a15(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(unaff_EDI + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



void FUN_0069685a(uint *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x1d) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((uint)puVar2[3] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x1d) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



void FUN_0069688c(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_00696b98(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



undefined4 * FUN_006968c0(undefined4 *param_1,uint *param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  bool bVar4;
  undefined4 uVar5;
  
  if (*(int *)(in_EAX + 0x1c) == 0) {
    param_4 = *(int *)(in_EAX + 0x18);
  }
  else {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 != '\0') {
        param_4 = *(int *)(*(int *)(in_EAX + 0x18) + 8);
        if (*param_2 <= *(uint *)(param_4 + 0xc)) goto LAB_006969f3;
        uVar5 = 0;
        goto LAB_006968e2;
      }
      bVar4 = *(uint *)(param_4 + 0xc) < *param_2;
      if (*param_2 < *(uint *)(param_4 + 0xc)) {
        iVar2 = FUN_00696e3c();
        if (*param_2 <= *(uint *)(*(int *)(iVar2 + 4) + 0xc)) {
          bVar4 = *(uint *)(param_4 + 0xc) < *param_2;
          goto LAB_006969a6;
        }
        cVar1 = *(char *)(*(int *)(param_4 + 8) + 0x1d);
      }
      else {
LAB_006969a6:
        if (!bVar4) {
LAB_006969f3:
          puVar3 = (undefined4 *)FUN_00696ad4(in_EAX,param_2);
          *param_1 = *puVar3;
          param_1[1] = puVar3[1];
          return param_1;
        }
        FUN_00696a87();
        cVar1 = FUN_006b8eca();
        if ((cVar1 == '\0') && (*(uint *)(param_4 + 0xc) <= *param_2)) goto LAB_006969f3;
        cVar1 = *(char *)(*(int *)(param_4 + 8) + 0x1d);
      }
      if (cVar1 == '\0') {
        uVar5 = 1;
      }
      else {
        uVar5 = 0;
      }
      goto LAB_006968e2;
    }
    if (*(uint *)(param_4 + 0xc) <= *param_2) goto LAB_006969f3;
  }
  uVar5 = 1;
LAB_006968e2:
  FUN_00696c4e(param_1,uVar5,param_4,param_2);
  return param_1;
}



void FUN_00696a15(int param_1)

{
  if (*(char *)(param_1 + 0x1d) == '\0') {
    FUN_00696a15(*(undefined4 *)(param_1 + 8));
    if (*(int *)(param_1 + 0x14) != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_00696a53(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_00696da1(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_00696a87(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x1d) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x1d) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x1d) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x1d) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



void FUN_00696ad4(undefined4 *param_1,uint *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  local_c = CONCAT31(local_c._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_8[1] + 0x1d) == '\0') {
    puVar2 = (undefined4 *)local_8[1];
    do {
      local_8 = puVar2;
      local_c = CONCAT31(local_c._1_3_,*param_2 < (uint)local_8[3]);
      if (*param_2 < (uint)local_8[3]) {
        puVar2 = (undefined4 *)*local_8;
      }
      else {
        puVar2 = (undefined4 *)local_8[2];
      }
    } while (*(char *)((int)puVar2 + 0x1d) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_8;
  if ((char)local_c != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_00696b4a;
    }
    FUN_00696e3c();
  }
  uVar3 = local_c;
  if (*param_2 <= (uint)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_00696b4a:
  puVar2 = (undefined4 *)FUN_00696c4e(&local_1c,uVar3,local_8,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void FUN_00696b98(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_00696a15(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00696a87();
    FUN_00696514();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00696c4e(undefined4 *param_1,char param_2,int **param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int **ppiVar5;
  int *piVar6;
  undefined4 *unaff_ESI;
  int *piVar7;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x696c5a;
  if (0xffffffd < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::length_error::vftable;
    __CxxThrowException_8(local_54,&DAT_03115554);
  }
  piVar4 = (int *)FUN_00696e9d(unaff_ESI[6],param_3,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar7 = piVar4;
  if (param_3 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    *(int **)(unaff_ESI[6] + 8) = piVar4;
  }
  else if (param_2 == '\0') {
    param_3[2] = piVar4;
    if (param_3 == *(int ***)(unaff_ESI[6] + 8)) {
      *(int **)(unaff_ESI[6] + 8) = piVar4;
    }
  }
  else {
    *param_3 = piVar4;
    if (param_3 == *(int ***)(int **)unaff_ESI[6]) {
      *(int **)unaff_ESI[6] = piVar4;
    }
  }
  do {
    while( true ) {
      ppiVar5 = (int **)(piVar7 + 1);
      if (*(char *)(*ppiVar5 + 7) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x1c) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar5;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar6 = ppiVar2[2];
      if (*(char *)(piVar6 + 7) == '\0') {
LAB_00696d35:
        *(undefined *)(piVar1 + 7) = 1;
        *(undefined *)(piVar6 + 7) = 1;
        *(undefined *)((*ppiVar5)[1] + 0x1c) = 0;
        piVar7 = (int *)(*ppiVar5)[1];
      }
      else {
        if (piVar7 == (int *)piVar1[2]) {
          FUN_00745426(unaff_ESI);
          piVar7 = piVar1;
        }
        *(undefined *)(piVar7[1] + 0x1c) = 1;
        *(undefined *)(*(int *)(piVar7[1] + 4) + 0x1c) = 0;
        FUN_006baade(unaff_ESI);
      }
    }
    piVar6 = *ppiVar2;
    if (*(char *)(piVar6 + 7) == '\0') goto LAB_00696d35;
    if (piVar7 == (int *)*piVar1) {
      FUN_006baade(unaff_ESI);
      piVar7 = piVar1;
    }
    *(undefined *)(piVar7[1] + 0x1c) = 1;
    *(undefined *)(*(int *)(piVar7[1] + 4) + 0x1c) = 0;
    FUN_00745426(unaff_ESI);
  } while( true );
}



void FUN_00696da1(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_00696836();
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00696a87();
    FUN_00696514();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_00696e3c(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x1d) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x1d) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x1d) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x1d) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x1d) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x1d) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



undefined4 FUN_00696e9d(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 *unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *unaff_EDI;
    puVar1[4] = unaff_EDI[1];
                    // WARNING: Subroutine does not return
    FUN_0043c023(unaff_EDI + 2);
  }
  return 0;
}



uint FUN_00696eeb(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c217e7;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_14;
  FUN_0069685a(&param_2);
  FUN_006b8eca(uVar1);
  local_c = 0;
  FUN_004fe47e();
  local_c = 0xffffffff;
  uVar1 = FUN_006b8eca(uVar1);
  if ((char)uVar1 == '\0') {
    iVar2 = FUN_006badde();
    piVar3 = (int *)(iVar2 + 0xc);
    *piVar3 = *piVar3 + -1;
    if (*piVar3 == 0) {
      iVar2 = FUN_006badde();
                    // WARNING: Subroutine does not return
      FUN_0043c023(iVar2 + 8);
    }
    uVar1 = CONCAT31((int3)((uint)piVar3 >> 8),1);
  }
  else {
    uVar1 = uVar1 & 0xffffff00;
  }
  ExceptionList = local_14;
  return uVar1;
}



undefined4 __fastcall FUN_0069702d(undefined4 *param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  int *piVar5;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c32db2;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  FUN_006967ad(&local_28,&stack0x00000008);
  local_20 = 0;
  local_1c = 0;
  local_c = 0;
  FUN_004fe47e(uVar2);
  local_c = 0xffffffff;
  local_1c = param_1[6];
  local_20 = *param_1;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    iVar4 = FUN_006badde();
    piVar5 = (int *)(iVar4 + 0xc);
    *piVar5 = *piVar5 + -1;
    if (*piVar5 == 0) {
      FUN_006badde();
      FUN_004fe47e();
      FUN_00696514(param_1,&local_20,local_28,local_24);
    }
    uVar3 = 1;
  }
  else {
    uVar3 = 0;
  }
  ExceptionList = local_14;
  return uVar3;
}



void Catch_All_006971c3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_006971da(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xb4))(param_1_00);
  return;
}



void Catch_All_006972a4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00697373(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00697442(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00697511(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006975e0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006976af(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0069777e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0069784d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_00697864(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x34))(param_1_00);
  return;
}



undefined4 __thiscall FUN_00697992(undefined4 param_1_00,byte param_1)

{
  FUN_006979af(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_006979af(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined *puVar3;
  undefined4 uStack_28;
  undefined4 *puStack_24;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  *param_1 = WF8266037::WFD0355A0::vftable;
  local_8 = 1;
  puStack_24 = (undefined4 *)0x6979d6;
  FUN_0042bd98();
  puStack_24 = (undefined4 *)0x6979e1;
  FUN_00417fe6();
  puStack_24 = param_1 + 0x18;
  puVar1 = &uStack_28;
  uStack_28 = 0x6979ea;
  FUN_0048ae42();
  puVar1[-1] = param_1 + 0x10;
  local_8 = local_8 & 0xffffff00;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x6979f7;
  FUN_00697eb3();
  local_8 = 0xffffffff;
  puVar3 = (undefined *)((int)puVar2 + -4);
  *(undefined4 *)((int)puVar2 + -4) = 0x697a02;
  FUN_00b72bf0();
  *(undefined4 *)(puVar3 + -4) = 0x697a07;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00697a0a(int param_1)

{
  char local_14;
  
  FUN_0043d406(param_1 + 0x80);
  FUN_0044953d();
  if (local_14 != '\0') {
    FUN_00401477();
  }
  return;
}



void __fastcall FUN_00697c3c(int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  char local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c594e3;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_14;
  iVar3 = param_1 + 0x80;
  FUN_0043d406(iVar3);
  while( true ) {
    local_c = 0;
    cVar1 = FUN_00b72540(uVar2);
    if (cVar1 != '\0') break;
    if (*(int *)(param_1 + 0x5c) == 0) {
      FUN_00453ca3(param_1 + 0x88,&local_30);
    }
    local_c = 0xffffffff;
    if ((char)local_2c != '\0') {
      FUN_00401477();
    }
    FUN_00697d7d(param_1);
    FUN_0043d406(iVar3);
  }
  local_c = 0xffffffff;
  if ((char)local_2c != '\0') {
    FUN_00401477();
  }
  FUN_0043d406(iVar3);
  local_c = 1;
  local_2c = **(undefined4 **)(param_1 + 0x78);
  local_30 = *(undefined4 *)(param_1 + 0x60);
  while( true ) {
    local_24 = *(undefined4 *)(param_1 + 0x78);
    local_28 = *(undefined4 *)(param_1 + 0x60);
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') break;
    FUN_006badde();
    FUN_00b725b0();
    iVar3 = FUN_006badde();
    FUN_00498375(iVar3 + 4);
    FUN_00452ecb();
  }
  FUN_004f9b2c();
  local_c = 0xffffffff;
  if (local_1c != '\0') {
    FUN_00401477();
  }
  FUN_00697d7d(param_1);
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00697d7d(void)

{
  int iVar1;
  int local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x697d89;
  FUN_00697def(&local_18);
  while (local_8 = 0, local_18 != 0) {
    FUN_00b72ae0();
    iVar1 = local_14;
    local_18 = 0;
    local_14 = 0;
    if (iVar1 != 0) {
      FUN_0040127a();
    }
    local_8 = 0xffffffff;
    if (local_14 != 0) {
      FUN_0040127a();
    }
    FUN_00697def(&local_18);
  }
  local_8 = 0xffffffff;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00697def(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  char local_24;
  
  FUN_0043d406(param_1_00 + 0x80);
  if (*(int *)(param_1_00 + 0x5c) != 0) {
    if (*(int *)(param_1_00 + 0x5c) + *(uint *)(param_1_00 + 0x58) < *(uint *)(param_1_00 + 0x58)) {
      FUN_00a3fb10();
    }
    iVar1 = FUN_006913fd();
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  *param_1 = 0;
  param_1[1] = 0;
  if (local_24 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00697eb3(undefined4 *param_1)

{
  FUN_00614e3d();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void FUN_00697f81(uint *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x19) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((uint)puVar2[3] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x19) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



void FUN_00697fb3(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x1c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 6) = 1;
  *(undefined *)((int)puVar1 + 0x19) = 0;
  return;
}



undefined4 FUN_00697fdd(void)

{
  char cVar1;
  undefined *unaff_ESI;
  
  if ((unaff_ESI != (undefined *)0xcdf8f6ee) && (unaff_ESI != (undefined *)0xf2815168)) {
    FUN_006b8ee5();
    cVar1 = FUN_006b8de5(unaff_ESI);
    if ((((cVar1 == '\0') &&
         (((unaff_ESI != (undefined *)0x747837d0 && (unaff_ESI != (undefined *)0x66b7f90f)) &&
          (unaff_ESI != (undefined *)0xc5327559)))) &&
        ((((unaff_ESI != &DAT_bf5cd76b && (unaff_ESI != &DAT_238ec14f)) &&
          (unaff_ESI != (undefined *)0x48aa3315)) &&
         (((unaff_ESI != (undefined *)0x19fb2302 && (unaff_ESI != (undefined *)0xa28ace2f)) &&
          (((unaff_ESI != (undefined *)0x2ac31803 &&
            ((((unaff_ESI != (undefined *)0xb645257c && (unaff_ESI != (undefined *)0xbebce203)) &&
              (unaff_ESI != (undefined *)0xdcf39bba)) &&
             ((unaff_ESI != (undefined *)0xd798d7e5 && (unaff_ESI != (undefined *)0xb889bbbe))))))
           && (unaff_ESI != (undefined *)0xc15eaa02)))))))) &&
       (unaff_ESI != (undefined *)0x9d2d915f)) {
      return 0;
    }
  }
  return 1;
}



undefined4 __thiscall FUN_0069814c(undefined4 param_1,byte param_2)

{
  FUN_00698168();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_00698168(undefined4 *param_1)

{
  *param_1 = WF8266037::WAA5D9392::vftable;
  FUN_00417fe6();
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[0xf]);
}



void FUN_00698599(void)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_006985b0;
    }
  }
  iVar2 = *piVar1;
LAB_006985b0:
  if (*(int **)(iVar2 + 0x10) <= unaff_ESI[1]) {
    FUN_00a3fb10();
  }
  unaff_ESI[1] = unaff_ESI[1] + 7;
  return;
}



void __fastcall FUN_006985c4(undefined4 *param_1)

{
  *param_1 = WF8266037::W3032D010::vftable;
  return;
}



undefined4 * __thiscall FUN_006985cb(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF8266037::W3032D010::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_006987b2(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x108);
}



void __fastcall FUN_0069890c(int param_1)

{
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0069893d(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *local_6c;
  undefined4 *local_24;
  undefined4 local_20 [2];
  undefined4 **local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x698949;
  local_6c = (undefined4 *)0x698950;
  puVar2 = (undefined4 *)operator_new(0x34);
  local_14 = puVar2;
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    local_8._0_1_ = 1;
    local_8._1_3_ = 0;
    *puVar2 = `public:_bool___thiscall_WF8266037::W1E2CF5C9::accountInfo(class_std::vector<struct_WF8266037::WD1CFE3B7,class_std::allocator<struct_WF8266037::WD1CFE3B7>_>&,class_std::vector<struct_WF8266037::W3B39B92B,class_std::allocator<struct_WF8266037::W3B39B92B>_>&)'
              ::`2'::SArgsHolder::vftable;
    local_6c = (undefined4 *)0x698971;
    FUN_004382a5();
    local_8 = CONCAT31(local_8._1_3_,2);
    local_6c = (undefined4 *)0x69897e;
    FUN_004382a5();
  }
  local_20[0] = 0;
  local_8 = 3;
  local_6c = (undefined4 *)0x698999;
  local_24 = puVar2;
  puVar3 = (undefined4 *)FUN_00699396();
  uVar1 = *puVar3;
  *puVar3 = local_20[0];
  local_20[0] = uVar1;
  if (local_14 != (undefined4 *)0x0) {
    FUN_0040127a();
  }
  local_6c = puVar2;
  FUN_007a491c(&local_24);
  local_18 = &local_6c;
  local_8 = 4;
  local_6c = local_24;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_20);
}



undefined4 * __thiscall FUN_00698aa9(undefined4 *param_1,byte param_2)

{
  FUN_0068f431();
  FUN_0068f404();
  *param_1 = WF8266037::W3032D010::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_00698ad8(void)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int unaff_ESI;
  undefined4 uVar7;
  
  if (in_EAX != unaff_ESI) {
    uVar3 = (*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc)) / 0x68;
    if (uVar3 == 0) {
      FUN_00698cf1();
    }
    else {
      iVar5 = *(int *)(in_EAX + 0xc);
      uVar4 = (*(int *)(in_EAX + 0x10) - iVar5) / 0x68;
      if (uVar4 < uVar3) {
        if (iVar5 == 0) {
          uVar6 = 0;
        }
        else {
          uVar6 = (*(int *)(in_EAX + 0x14) - iVar5) / 0x68;
        }
        if (uVar6 < uVar3) {
          if (*(int *)(in_EAX + 0xc) != 0) {
            FUN_0068f4ec(*(undefined4 *)(in_EAX + 0x10));
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(*(undefined4 *)(in_EAX + 0xc));
          }
          iVar5 = *(int *)(unaff_ESI + 0x10);
          iVar1 = *(int *)(unaff_ESI + 0xc);
          *(undefined4 *)(in_EAX + 0xc) = 0;
          *(undefined4 *)(in_EAX + 0x10) = 0;
          *(undefined4 *)(in_EAX + 0x14) = 0;
          if ((iVar5 - iVar1) / 0x68 == 0) {
            return;
          }
          cVar2 = FUN_0068f483();
          if (cVar2 == '\0') {
            return;
          }
          uVar7 = *(undefined4 *)(in_EAX + 0xc);
        }
        else {
          FUN_006990a3(uVar4 * 0x68 + *(int *)(unaff_ESI + 0xc),*(undefined4 *)(in_EAX + 0xc));
          uVar7 = *(undefined4 *)(in_EAX + 0x10);
        }
        iVar5 = FUN_006990eb(*(undefined4 *)(unaff_ESI + 0x10),uVar7);
      }
      else {
        FUN_006990a3(*(undefined4 *)(unaff_ESI + 0x10),iVar5);
        FUN_0068f4ec(*(undefined4 *)(in_EAX + 0x10));
        iVar5 = ((*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc)) / 0x68) * 0x68 +
                *(int *)(in_EAX + 0xc);
      }
      *(int *)(in_EAX + 0x10) = iVar5;
    }
  }
  return;
}



void FUN_00698bd0(void)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int unaff_ESI;
  undefined4 uVar7;
  
  if (in_EAX != unaff_ESI) {
    uVar3 = (*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc)) / 0x38;
    if (uVar3 == 0) {
      FUN_00698d60();
    }
    else {
      iVar5 = *(int *)(in_EAX + 0xc);
      uVar4 = (*(int *)(in_EAX + 0x10) - iVar5) / 0x38;
      if (uVar4 < uVar3) {
        if (iVar5 == 0) {
          uVar6 = 0;
        }
        else {
          uVar6 = (*(int *)(in_EAX + 0x14) - iVar5) / 0x38;
        }
        if (uVar6 < uVar3) {
          if (*(int *)(in_EAX + 0xc) != 0) {
            FUN_0068f54d(*(undefined4 *)(in_EAX + 0x10));
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(*(undefined4 *)(in_EAX + 0xc));
          }
          iVar5 = *(int *)(unaff_ESI + 0x10);
          iVar1 = *(int *)(unaff_ESI + 0xc);
          *(undefined4 *)(in_EAX + 0xc) = 0;
          *(undefined4 *)(in_EAX + 0x10) = 0;
          *(undefined4 *)(in_EAX + 0x14) = 0;
          if ((iVar5 - iVar1) / 0x38 == 0) {
            return;
          }
          cVar2 = FUN_0068f4ac();
          if (cVar2 == '\0') {
            return;
          }
          uVar7 = *(undefined4 *)(in_EAX + 0xc);
        }
        else {
          FUN_0069910f(uVar4 * 0x38 + *(int *)(unaff_ESI + 0xc),*(undefined4 *)(in_EAX + 0xc));
          uVar7 = *(undefined4 *)(in_EAX + 0x10);
        }
        iVar5 = FUN_006a39c3(*(undefined4 *)(unaff_ESI + 0x10),uVar7);
      }
      else {
        FUN_0069910f(*(undefined4 *)(unaff_ESI + 0x10),iVar5);
        FUN_0068f54d(*(undefined4 *)(in_EAX + 0x10));
        iVar5 = ((*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc)) / 0x38) * 0x38 +
                *(int *)(in_EAX + 0xc);
      }
      *(int *)(in_EAX + 0x10) = iVar5;
    }
  }
  return;
}



undefined4 FUN_00698cc8(void)

{
  undefined *in_EAX;
  int iVar1;
  int unaff_EDI;
  
  if (&DAT_02e8ba2e < in_EAX) {
    FUN_004423c1();
  }
  iVar1 = FUN_00698dcf();
  *(int *)(unaff_EDI + 0xc) = iVar1;
  *(int *)(unaff_EDI + 0x10) = iVar1;
  *(int *)(unaff_EDI + 0x14) = (int)in_EAX * 0x58 + iVar1;
  return 1;
}



void FUN_00698cf1(void)

{
  int in_EAX;
  undefined4 uVar1;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  if ((local_c == 0) || (local_c != local_14)) {
    FUN_00a3fb10();
  }
  if (local_8 != local_10) {
    uVar1 = FUN_006990a3(*(undefined4 *)(in_EAX + 0x10),local_8);
    FUN_0068f4ec(*(undefined4 *)(in_EAX + 0x10));
    *(undefined4 *)(in_EAX + 0x10) = uVar1;
  }
  return;
}



void FUN_00698d60(void)

{
  int in_EAX;
  undefined4 uVar1;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  if ((local_c == 0) || (local_c != local_14)) {
    FUN_00a3fb10();
  }
  if (local_8 != local_10) {
    uVar1 = FUN_0069910f(*(undefined4 *)(in_EAX + 0x10),local_8);
    FUN_0068f54d(*(undefined4 *)(in_EAX + 0x10));
    *(undefined4 *)(in_EAX + 0x10) = uVar1;
  }
  return;
}



void __fastcall FUN_00698dcf(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 0x58) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 * 0x58);
  return;
}



int FUN_006990a3(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = param_1 - in_EAX;
  if (in_EAX != param_1) {
    do {
      FUN_00699515();
      in_EAX = in_EAX + 0x68;
    } while (in_EAX != param_1);
  }
  return (iVar1 / 0x68) * 0x68 + param_2;
}



void FUN_006990eb(undefined4 param_1,undefined4 param_2)

{
  FUN_0069946b(param_1,param_2,param_2,0);
  return;
}



int FUN_0069910f(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = param_1 - in_EAX;
  if (in_EAX != param_1) {
    do {
      FUN_00699561();
      in_EAX = in_EAX + 0x38;
    } while (in_EAX != param_1);
  }
  return (iVar1 / 0x38) * 0x38 + param_2;
}



void FUN_00699153(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_EBX;
  
  *unaff_EBX = *in_EAX;
  unaff_EBX[1] = in_EAX[1];
  unaff_EBX[2] = in_EAX[2];
  unaff_EBX[3] = in_EAX[3];
  unaff_EBX[4] = in_EAX[4];
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 5);
}



void FUN_0069917d(void)

{
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  
  *unaff_ESI = *unaff_EDI;
  unaff_ESI[1] = unaff_EDI[1];
  unaff_ESI[2] = unaff_EDI[2];
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EDI + 3);
}



void Catch_All_006992f3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00699396(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::W1E2CF5C9::accountInfo(class_std::vector<struct_WF8266037::WD1CFE3B7,class_std::allocator<struct_WF8266037::WD1CFE3B7>_>&,class_std::vector<struct_WF8266037::W3B39B92B,class_std::allocator<struct_WF8266037::W3B39B92B>_>&)'::`2'::SArgsHolder>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006993dc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_0069946b(int param_1_00,int param_1,int param_2)

{
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0x68) {
    FUN_0069968c(param_2);
    param_2 = param_2 + 0x68;
  }
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 Catch_All_0069949b(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0xc); iVar1 = iVar1 + 0x68
      ) {
    FUN_0068f63b();
  }
  __CxxThrowException_8(0,0);
  return *(undefined4 *)(unaff_EBP + 0xc);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_006994bf(int param_1_00,int param_1,int param_2)

{
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0x38) {
    FUN_006996b7();
    param_2 = param_2 + 0x38;
  }
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 Catch_All_006994ed(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0xc); iVar1 = iVar1 + 0x38
      ) {
    FUN_00401829(1,0);
  }
  __CxxThrowException_8(0,0);
  return *(undefined4 *)(unaff_EBP + 0xc);
}



void FUN_00699515(void)

{
  int in_EAX;
  int unaff_EDI;
  
  FID_conflict_assign(in_EAX,0,0xffffffff);
  FID_conflict_assign(in_EAX + 0x1c,0,0xffffffff);
  *(undefined *)(unaff_EDI + 0x38) = *(undefined *)(in_EAX + 0x38);
  *(undefined4 *)(unaff_EDI + 0x40) = *(undefined4 *)(in_EAX + 0x40);
  *(undefined4 *)(unaff_EDI + 0x44) = *(undefined4 *)(in_EAX + 0x44);
  *(undefined4 *)(unaff_EDI + 0x48) = *(undefined4 *)(in_EAX + 0x48);
  *(undefined4 *)(unaff_EDI + 0x4c) = *(undefined4 *)(in_EAX + 0x4c);
  FUN_00699594();
  return;
}



void FUN_00699561(void)

{
  int unaff_ESI;
  int unaff_EDI;
  
  FID_conflict_assign(unaff_EDI,0,0xffffffff);
  *(undefined4 *)(unaff_ESI + 0x20) = *(undefined4 *)(unaff_EDI + 0x20);
  *(undefined4 *)(unaff_ESI + 0x24) = *(undefined4 *)(unaff_EDI + 0x24);
  *(undefined4 *)(unaff_ESI + 0x28) = *(undefined4 *)(unaff_EDI + 0x28);
  *(undefined4 *)(unaff_ESI + 0x2c) = *(undefined4 *)(unaff_EDI + 0x2c);
  *(undefined4 *)(unaff_ESI + 0x30) = *(undefined4 *)(unaff_EDI + 0x30);
  *(undefined4 *)(unaff_ESI + 0x34) = *(undefined4 *)(unaff_EDI + 0x34);
  return;
}



void FUN_00699594(void)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int unaff_ESI;
  undefined4 uVar7;
  
  if (in_EAX != unaff_ESI) {
    uVar3 = (*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc)) / 0x58;
    if (uVar3 == 0) {
      FUN_00699881();
    }
    else {
      iVar5 = *(int *)(in_EAX + 0xc);
      uVar4 = (*(int *)(in_EAX + 0x10) - iVar5) / 0x58;
      if (uVar4 < uVar3) {
        if (iVar5 == 0) {
          uVar6 = 0;
        }
        else {
          uVar6 = (*(int *)(in_EAX + 0x14) - iVar5) / 0x58;
        }
        if (uVar6 < uVar3) {
          if (*(int *)(in_EAX + 0xc) != 0) {
            FUN_0068f4d5(*(undefined4 *)(in_EAX + 0x10));
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(*(undefined4 *)(in_EAX + 0xc));
          }
          iVar5 = *(int *)(unaff_ESI + 0x10);
          iVar1 = *(int *)(unaff_ESI + 0xc);
          *(undefined4 *)(in_EAX + 0xc) = 0;
          *(undefined4 *)(in_EAX + 0x10) = 0;
          *(undefined4 *)(in_EAX + 0x14) = 0;
          if ((iVar5 - iVar1) / 0x58 == 0) {
            return;
          }
          cVar2 = FUN_00698cc8();
          if (cVar2 == '\0') {
            return;
          }
          uVar7 = *(undefined4 *)(in_EAX + 0xc);
        }
        else {
          FUN_00699a7d(uVar4 * 0x58 + *(int *)(unaff_ESI + 0xc),*(undefined4 *)(in_EAX + 0xc));
          uVar7 = *(undefined4 *)(in_EAX + 0x10);
        }
        iVar5 = FUN_00699ac3(*(undefined4 *)(unaff_ESI + 0x10),uVar7);
      }
      else {
        FUN_00699a7d(*(undefined4 *)(unaff_ESI + 0x10),iVar5);
        FUN_0068f4d5(*(undefined4 *)(in_EAX + 0x10));
        iVar5 = ((*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc)) / 0x58) * 0x58 +
                *(int *)(in_EAX + 0xc);
      }
      *(int *)(in_EAX + 0x10) = iVar5;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0069968c(int param_1)

{
  if (param_1 != 0) {
    FUN_00699ae7(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006996b7(int param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c29771;
  if (param_1 != 0) {
    puVar1 = (undefined *)FUN_00699b49();
  }
  return puVar1;
}



void FUN_006996de(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006998f0(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WF8266037::W1E2CF5C9>,class_boost::_bi::list1<class_boost::_bi::value<class_WF8266037::W1E2CF5C9*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00699717(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0069993d(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf2<bool,class_WF8266037::WBF632EEC,class_boost::shared_ptr<class_WF8266037::WAA5D9392>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::list3<class_boost::_bi::value<class_WF8266037::WBF632EEC*>,class_boost::reference_wrapper<class_boost::shared_ptr<class_WF8266037::WAA5D9392>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006997b4(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006999ff(param_3);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf3<bool,class_WF8266037::WAA5D9392,class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,bool>,class_boost::_bi::list4<class_boost::_bi::value<class_WF8266037::WAA5D9392*>,class_boost::reference_wrapper<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::value<bool>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006997de(undefined4 param_1,TypeDescriptor **param_2,uint param_3)

{
  if (param_3 == 4) {
    *param_2 = &boost::_bi::
                bind_t<bool,class_boost::_mfi::mf3<bool,class_WF8266037::WAA5D9392,class_std::vector<struct_WF8266037::WD1CFE3B7,class_std::allocator<struct_WF8266037::WD1CFE3B7>_>&,class_std::vector<struct_WF8266037::W3B39B92B,class_std::allocator<struct_WF8266037::W3B39B92B>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::list4<class_boost::_bi::value<class_WF8266037::WAA5D9392*>,class_boost::reference_wrapper<class_std::vector<struct_WF8266037::WD1CFE3B7,class_std::allocator<struct_WF8266037::WD1CFE3B7>_>_>,class_boost::reference_wrapper<class_std::vector<struct_WF8266037::W3B39B92B,class_std::allocator<struct_WF8266037::W3B39B92B>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>_>_>
                ::RTTI_Type_Descriptor;
    *(undefined *)(param_2 + 1) = 0;
    *(undefined *)((int)param_2 + 5) = 0;
  }
  else {
    param_3 = param_3 & 0xffffff00;
    FUN_0069999e(param_3);
  }
  return;
}



void FUN_00699881(void)

{
  int in_EAX;
  undefined4 uVar1;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  if ((local_c == 0) || (local_c != local_14)) {
    FUN_00a3fb10();
  }
  if (local_8 != local_10) {
    uVar1 = FUN_00699a7d(*(undefined4 *)(in_EAX + 0x10),local_8);
    FUN_0068f4d5(*(undefined4 *)(in_EAX + 0x10));
    *(undefined4 *)(in_EAX + 0x10) = uVar1;
  }
  return;
}



void __fastcall FUN_006998f0(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WF8266037::W1E2CF5C9>,class_boost::_bi::list1<class_boost::_bi::value<class_WF8266037::W1E2CF5C9*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WF8266037::W1E2CF5C9>,class_boost::_bi::list1<class_boost::_bi::value<class_WF8266037::W1E2CF5C9*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void FUN_0069993d(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  uint unaff_EBX;
  int unaff_EDI;
  
  if ((unaff_EDI == 0) || (unaff_EDI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_0048f996();
    }
    if (unaff_EDI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EBX + 0x10);
  }
  else {
    if (unaff_EDI != 2) {
      if (unaff_EDI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<bool,class_boost::_mfi::mf2<bool,class_WF8266037::WBF632EEC,class_boost::shared_ptr<class_WF8266037::WAA5D9392>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::list3<class_boost::_bi::value<class_WF8266037::WBF632EEC*>,class_boost::reference_wrapper<class_boost::shared_ptr<class_WF8266037::WAA5D9392>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EBX);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<bool,class_boost::_mfi::mf2<bool,class_WF8266037::WBF632EEC,class_boost::shared_ptr<class_WF8266037::WAA5D9392>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::list3<class_boost::_bi::value<class_WF8266037::WBF632EEC*>,class_boost::reference_wrapper<class_boost::shared_ptr<class_WF8266037::WAA5D9392>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[4];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



void FUN_0069999e(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  int unaff_ESI;
  uint unaff_EDI;
  
  if ((unaff_ESI == 0) || (unaff_ESI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_00699153();
    }
    if (unaff_ESI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EDI + 0x14);
  }
  else {
    if (unaff_ESI != 2) {
      if (unaff_ESI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<bool,class_boost::_mfi::mf3<bool,class_WF8266037::WAA5D9392,class_std::vector<struct_WF8266037::WD1CFE3B7,class_std::allocator<struct_WF8266037::WD1CFE3B7>_>&,class_std::vector<struct_WF8266037::W3B39B92B,class_std::allocator<struct_WF8266037::W3B39B92B>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::list4<class_boost::_bi::value<class_WF8266037::WAA5D9392*>,class_boost::reference_wrapper<class_std::vector<struct_WF8266037::WD1CFE3B7,class_std::allocator<struct_WF8266037::WD1CFE3B7>_>_>,class_boost::reference_wrapper<class_std::vector<struct_WF8266037::W3B39B92B,class_std::allocator<struct_WF8266037::W3B39B92B>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EDI);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<bool,class_boost::_mfi::mf3<bool,class_WF8266037::WAA5D9392,class_std::vector<struct_WF8266037::WD1CFE3B7,class_std::allocator<struct_WF8266037::WD1CFE3B7>_>&,class_std::vector<struct_WF8266037::W3B39B92B,class_std::allocator<struct_WF8266037::W3B39B92B>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::list4<class_boost::_bi::value<class_WF8266037::WAA5D9392*>,class_boost::reference_wrapper<class_std::vector<struct_WF8266037::WD1CFE3B7,class_std::allocator<struct_WF8266037::WD1CFE3B7>_>_>,class_boost::reference_wrapper<class_std::vector<struct_WF8266037::W3B39B92B,class_std::allocator<struct_WF8266037::W3B39B92B>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[5];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



void __thiscall FUN_006999ff(TypeDescriptor **param_1_00,int param_1)

{
  TypeDescriptor *pTVar1;
  bool bVar2;
  TypeDescriptor **in_EAX;
  
  if ((param_1 == 0) || (param_1 == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      *in_EAX = *param_1_00;
      FUN_0069917d();
    }
    if (param_1 != 1) {
      return;
    }
    pTVar1 = param_1_00[4];
  }
  else {
    if (param_1 != 2) {
      if (param_1 == 3) {
        bVar2 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<bool,class_boost::_mfi::mf3<bool,class_WF8266037::WAA5D9392,class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,bool>,class_boost::_bi::list4<class_boost::_bi::value<class_WF8266037::WAA5D9392*>,class_boost::reference_wrapper<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::value<bool>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar2 & (uint)param_1_00);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<bool,class_boost::_mfi::mf3<bool,class_WF8266037::WAA5D9392,class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,bool>,class_boost::_bi::list4<class_boost::_bi::value<class_WF8266037::WAA5D9392*>,class_boost::reference_wrapper<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::value<bool>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar1 = in_EAX[4];
  }
  if (pTVar1 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



int FUN_00699a7d(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = param_1 - in_EAX;
  if (in_EAX != param_1) {
    do {
      FUN_00699ddc();
      in_EAX = in_EAX + 0x58;
    } while (in_EAX != param_1);
  }
  return (iVar1 / 0x58) * 0x58 + param_2;
}



void FUN_00699ac3(undefined4 param_1,undefined4 param_2)

{
  FUN_00699d88(param_1,param_2,param_2,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00699ae7(int param_1_00,int param_1)

{
  basic_string<>(param_1_00);
  basic_string<>(param_1_00 + 0x1c);
  *(undefined *)(param_1 + 0x38) = *(undefined *)(param_1_00 + 0x38);
  *(undefined4 *)(param_1 + 0x40) = *(undefined4 *)(param_1_00 + 0x40);
  *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_1_00 + 0x44);
  *(undefined4 *)(param_1 + 0x48) = *(undefined4 *)(param_1_00 + 0x48);
  *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(param_1_00 + 0x4c);
  FUN_00699b78(param_1 + 0x50,param_1_00 + 0x50);
  return param_1;
}



void FUN_00699b49(void)

{
  int unaff_ESI;
  int unaff_EDI;
  
  basic_string<>(unaff_EDI);
  *(undefined4 *)(unaff_ESI + 0x20) = *(undefined4 *)(unaff_EDI + 0x20);
  *(undefined4 *)(unaff_ESI + 0x24) = *(undefined4 *)(unaff_EDI + 0x24);
  *(undefined4 *)(unaff_ESI + 0x28) = *(undefined4 *)(unaff_EDI + 0x28);
  *(undefined4 *)(unaff_ESI + 0x2c) = *(undefined4 *)(unaff_EDI + 0x2c);
  *(undefined4 *)(unaff_ESI + 0x30) = *(undefined4 *)(unaff_EDI + 0x30);
  *(undefined4 *)(unaff_ESI + 0x34) = *(undefined4 *)(unaff_EDI + 0x34);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_00699b78(int *param_1,uint param_2)

{
  int iVar1;
  char cVar2;
  int **ppiVar3;
  int iVar4;
  undefined4 local_18;
  
  ppiVar3 = (int **)FUN_00418daa(1,0);
  if (ppiVar3 == (int **)0x0) {
    ppiVar3 = (int **)0x0;
  }
  else {
    *ppiVar3 = param_1;
  }
  *param_1 = (int)ppiVar3;
  iVar4 = *(int *)(param_2 + 0x10);
  iVar1 = *(int *)(param_2 + 0xc);
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  if ((iVar4 - iVar1) / 0x58 != 0) {
    cVar2 = FUN_00698cc8();
    if (cVar2 != '\0') {
      FUN_0046e65a();
      FUN_0046e65a();
      param_2 = param_2 & 0xffffff00;
      iVar4 = FUN_00699d88(local_18,param_1[3],param_1,param_2);
      param_1[4] = iVar4;
    }
  }
  return param_1;
}



void Catch_All_00699c13(void)

{
  code *pcVar1;
  
  FUN_0068f45e();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00699d88(int param_1_00,int param_1,int param_2)

{
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0x58) {
    FUN_00699e55(param_2);
    param_2 = param_2 + 0x58;
  }
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 Catch_All_00699db8(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0xc); iVar1 = iVar1 + 0x58
      ) {
    FUN_0068f611();
  }
  __CxxThrowException_8(0,0);
  return *(undefined4 *)(unaff_EBP + 0xc);
}



void FUN_00699ddc(void)

{
  int in_EAX;
  int unaff_EDI;
  
  FID_conflict_assign(in_EAX,0,0xffffffff);
  *(undefined4 *)(unaff_EDI + 0x1c) = *(undefined4 *)(in_EAX + 0x1c);
  FUN_0041ba77();
  FUN_00699e1d();
  FID_conflict_assign(in_EAX + 0x38,0,0xffffffff);
  return;
}



void __fastcall FUN_00699e1d(char *param_1)

{
  char *in_EAX;
  
  if (*in_EAX == '\0') {
    if (*param_1 != '\0') {
      if ((undefined4 *)(in_EAX + 8) != (undefined4 *)0x0) {
        *(undefined4 *)(in_EAX + 8) = *(undefined4 *)(param_1 + 8);
        *(undefined4 *)(in_EAX + 0xc) = *(undefined4 *)(param_1 + 0xc);
      }
      *in_EAX = '\x01';
    }
    return;
  }
  if (*param_1 != '\0') {
    *(undefined4 *)(in_EAX + 8) = *(undefined4 *)(param_1 + 8);
    *(undefined4 *)(in_EAX + 0xc) = *(undefined4 *)(param_1 + 0xc);
    return;
  }
  *in_EAX = '\0';
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00699e55(int param_1)

{
  if (param_1 != 0) {
    FUN_00699e80(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00699e80(int param_1_00,int param_1)

{
  basic_string<>(param_1_00);
  *(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(param_1_00 + 0x1c);
  FUN_0041b126(param_1_00 + 0x20);
  *(undefined *)(param_1 + 0x28) = 0;
  if (*(char *)(param_1_00 + 0x28) != '\0') {
    if ((undefined4 *)(param_1 + 0x30) != (undefined4 *)0x0) {
      *(undefined4 *)(param_1 + 0x30) = *(undefined4 *)(param_1_00 + 0x30);
      *(undefined4 *)(param_1 + 0x34) = *(undefined4 *)(param_1_00 + 0x34);
    }
    *(undefined *)(param_1 + 0x28) = 1;
  }
  basic_string<>(param_1_00 + 0x38);
  return param_1;
}



void FUN_00699ee9(void)

{
  FUN_00688539();
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_00688539();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall
FUN_00699f13(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  param_1[1] = param_2;
  param_1[2] = param_3;
  *param_1 = WF8266037::WC7376FD7::vftable;
  param_1[3] = *(undefined4 *)(param_1_00 + 0x24);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0x28);
}



undefined4 __thiscall FUN_00699fe2(undefined4 param_1_00,byte param_1)

{
  FUN_0069a014();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00699ffe(void)

{
  FUN_004017b2(1,0);
  FUN_00699ee9();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0069a014(undefined4 *param_1)

{
  *param_1 = WF8266037::WC7376FD7::vftable;
  if (param_1[0x2c] != 0) {
    FUN_0040127a();
  }
  FUN_004017b2(1,0);
  FUN_00699ee9();
  if (param_1[4] != 0) {
    FUN_0040127a();
  }
  *param_1 = WABE12921::W55C14A47::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0069a071(undefined4 param_1,
                 basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                 *param_2)

{
  undefined4 uVar1;
  int iVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_88 [56];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_34 [28];
  undefined2 local_18;
  undefined2 local_16;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x78;
  local_8 = 0x69a07d;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_50,&DAT_00ddd94c,0xb);
  local_8 = 0;
  local_18 = 0x5353;
  local_16 = 0x7987;
  uVar1 = FUN_00b94330(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  iVar2 = FUN_00429980(uVar1);
  FUN_004017b2(1,0);
  local_8 = 0xffffffff;
  FUN_004017b2(1,0);
  if (iVar2 == 0) {
LAB_0069a2c1:
    FUN_0062d568(param_2);
  }
  else {
    uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      (local_34,&DAT_00ddd958,0xe);
    local_8 = 2;
    local_18 = 0x523b;
    local_16 = 0x7652;
    uVar1 = FUN_00b94330(&local_18,uVar1);
    local_8 = CONCAT31(local_8._1_3_,3);
    iVar2 = FUN_00429980(uVar1);
    FUN_004017b2(1,0);
    local_8 = 0xffffffff;
    FUN_004017b2(1,0);
    if (iVar2 == 0) {
      this = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (local_14 + 0x34);
    }
    else {
      uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
              basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        (local_34,&DAT_00ddd968,0xf);
      local_8 = 4;
      local_18 = 0x1c5c;
      local_16 = 0xf127;
      uVar1 = FUN_00b94330(&local_18,uVar1);
      local_8 = CONCAT31(local_8._1_3_,5);
      iVar2 = FUN_00429980(uVar1);
      FUN_004017b2(1,0);
      local_8 = 0xffffffff;
      FUN_004017b2(1,0);
      if (iVar2 == 0) {
        this = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (local_14 + 0x90);
      }
      else {
        uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          (local_34,&DAT_00ddd978,0xc);
        local_8 = 6;
        local_18 = 0x8f7e;
        local_16 = 0xdc37;
        uVar1 = FUN_00b94330(&local_18,uVar1);
        local_8 = CONCAT31(local_8._1_3_,7);
        iVar2 = FUN_00429980(uVar1);
        FUN_004017b2(1,0);
        local_8 = 0xffffffff;
        FUN_004017b2(1,0);
        if (iVar2 != 0) {
          uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  ::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                            (local_88,&DAT_00ddd988,0xf);
          local_8 = 8;
          local_18 = 0xae68;
          local_16 = 0x1d02;
          uVar1 = FUN_00b94330(&local_18,uVar1);
          local_8 = CONCAT31(local_8._1_3_,9);
          iVar2 = FUN_00429980(uVar1);
          FUN_004017b2(1,0);
          local_8 = 0xffffffff;
          FUN_004017b2(1,0);
          if (iVar2 != 0) {
            return;
          }
          goto LAB_0069a2c1;
        }
        this = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (local_14 + 0x54);
      }
    }
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (this,param_2,0,0xffffffff);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0069a2d1(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_88 [56];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [56];
  int local_18;
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x78;
  local_8 = 0x69a2dd;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_50,&DAT_00ddd998,10);
  local_8 = 0;
  local_14 = 0x84d1;
  local_12 = 0xf4dc;
  uVar1 = FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  iVar2 = FUN_00429980(uVar1);
  FUN_004017b2(1,0);
  local_8 = 0xffffffff;
  FUN_004017b2(1,0);
  if (iVar2 != 0) {
    uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      (local_88,&DAT_00ddd9a4,10);
    local_8 = 2;
    local_14 = 0xcc44;
    local_12 = 0x4055;
    uVar1 = FUN_00b94330(&local_14,uVar1);
    local_8 = CONCAT31(local_8._1_3_,3);
    iVar2 = FUN_00429980(uVar1);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    if (iVar2 != 0) {
      return;
    }
  }
  *(undefined4 *)(local_18 + 0x50) = param_2;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0069a486)

void FUN_0069a412(void)

{
  char cVar1;
  int unaff_EDI;
  undefined4 local_68;
  undefined local_1c [4];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x69a41e;
  local_68 = *(undefined4 *)(unaff_EDI + 0xc);
  FUN_004494bc();
  local_68 = *(undefined4 *)(unaff_EDI + 0x10);
  FUN_004494bc();
  local_68 = 0x69a442;
  cVar1 = FUN_00449367();
  if (cVar1 != '\0') {
    return;
  }
  local_68 = 0x69a455;
  FUN_0069a54d();
  local_8 = 0;
  FUN_0044933b();
  local_68 = 0x69a46d;
  FUN_00412a6f();
  local_8._0_1_ = 1;
  FUN_0041c550();
  local_8 = (uint)local_8._1_3_ << 8;
  local_18 = &local_68;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_1c);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0069a4f0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W14E3BFCC::W1801A2C0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0069a536(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0069a54d(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x60);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W14E3BFCC::W1801A2C0::vftable;
    *(undefined *)(puVar2 + 1) = 0;
    *(undefined *)(puVar2 + 4) = 0;
    *(undefined *)(puVar2 + 8) = 0;
    *(undefined *)(puVar2 + 0x10) = 0;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0069a4f0(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 * __thiscall FUN_0069a5bf(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W14E3BFCC::WB77945B3::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_0069a622(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int **)(unaff_EBP + 8) != (int *)0x0) {
    (**(code **)(**(int **)(unaff_EBP + 8) + 4))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0069a6a1(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WABE12921::W55C14A47::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0069a6be(undefined4 *param_1)

{
  *param_1 = WABE12921::W55C14A47::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0069a6c5(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD72F1F4B::WC11AD973::vftable;
  FUN_006ad884(param_1 + 0x1d);
  return param_1;
}



undefined4 __fastcall FUN_0069a6fc(undefined4 param_1)

{
  FUN_006ad7fd();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0069a70b(undefined4 param_1,undefined4 param_2)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x0000000c);
}



undefined4 __thiscall FUN_0069a757(undefined4 param_1_00,byte param_1)

{
  FUN_0069a774(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0069a774(undefined4 param_1)

{
  FUN_006adad0();
  FUN_006ad848(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0069a7a1(undefined4 *param_1)

{
  FUN_0069a6c5(param_1);
  *param_1 = WF8266037::WD72F1F4B::WEE3000FF::vftable;
  FUN_006adfbb(param_1 + 0x21);
  return param_1;
}



undefined4 FUN_0069a7dd(void)

{
  return 0x40003106;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0069a7e3(undefined4 param_1_00,byte param_1)

{
  FUN_006ae1f5();
  FUN_0069a774(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_0069a824(void)

{
  return 0x40003107;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void thunk_FUN_0069a774(undefined4 param_1)

{
  FUN_006adad0();
  FUN_006ad848(param_1);
  return;
}



undefined4 FUN_0069a82f(void)

{
  return 0x40003108;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0069a835(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD72F1F4B::W6E9B899C::vftable;
  FUN_006ad7c0(param_1 + 0x1d);
  FUN_006ad58d(param_1 + 0x21);
  return param_1;
}



undefined4 FUN_0069a885(void)

{
  return 0x4000310a;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0069a88b(undefined4 param_1_00,byte param_1)

{
  FUN_006ad47c();
  FUN_006ad5ca();
  FUN_006ad848(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0069a8db(undefined4 *param_1)

{
  FUN_0069a6c5(param_1);
  *param_1 = WF8266037::WD72F1F4B::W546FF548::vftable;
  FUN_006ad58d(param_1 + 0x21);
  FUN_006adfbb(param_1 + 0x25);
  return param_1;
}



undefined4 FUN_0069a92e(void)

{
  return 0x40003109;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0069a934(undefined4 param_1_00,byte param_1)

{
  FUN_006ae1f5();
  FUN_006ad47c();
  FUN_0069a774(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0069a987(undefined4 *param_1)

{
  FUN_0069a6c5(param_1);
  *param_1 = WF8266037::WD72F1F4B::WCD676C77::vftable;
  FUN_006ad58d(param_1 + 0x21);
  FUN_006ad58d(param_1 + 0x25);
  return param_1;
}



undefined4 FUN_0069a9da(void)

{
  return 0x4000310b;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0069a9e0(undefined4 param_1_00,byte param_1)

{
  FUN_006ad47c();
  FUN_006ad47c();
  FUN_0069a774(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0069aa33(undefined4 param_1)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0069aa8c(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_1c [5];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 2;
  FUN_005d1159();
  if (local_1c != param_1) {
    *param_1 = 0;
  }
  iVar1 = param_1[1];
  param_1[1] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (param_1[3] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (param_1[1] != 0) {
    FUN_0040127a();
  }
  return;
}



void Catch_All_0069aaee(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0069ad45(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 local_58;
  undefined4 local_30;
  undefined local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x69ad51;
  local_58 = 0x69ad5d;
  puVar2 = (undefined4 *)operator_new(0x54);
  local_8 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    local_58 = 0x69ad71;
    FUN_006ad8c1();
    *puVar2 = WF8266037::WBDE613C5::W42E255B9::vftable;
  }
  local_8 = 0xffffffff;
  local_58 = 0x69ad8a;
  FUN_006a1dec();
  local_8 = 1;
  local_58 = 0x69ad98;
  uVar1 = 0x10;
  puVar2 = (undefined4 *)operator_new(0x10);
  local_58 = uVar1;
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = *param_1;
    puVar2[1] = param_1[1];
    puVar2[2] = param_1[2];
    puVar2[3] = param_1[3];
  }
  FUN_006ada41(&local_58);
  FUN_006ad3f7(local_30);
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_2c);
}



void FUN_0069af2c(undefined4 param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 local_6c;
  undefined auStack_54 [4];
  undefined4 local_50;
  undefined local_4c [4];
  undefined4 *local_48;
  undefined4 local_40;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5939c;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_54;
  ExceptionList = &local_14;
  local_40 = param_1;
  local_6c = 0x69af77;
  puVar2 = (undefined4 *)operator_new(0x54);
  local_c = 0;
  local_48 = puVar2;
  if (puVar2 != (undefined4 *)0x0) {
    local_6c = 0x69af8d;
    FUN_006ad8c1();
    *puVar2 = WF8266037::WBDE613C5::WFC4070F1::vftable;
  }
  local_c = 0xffffffff;
  local_6c = 0x69afa8;
  FUN_006a1ec1();
  local_c = 1;
  local_6c = 0x69afb7;
  uVar1 = 0x10;
  puVar2 = (undefined4 *)operator_new(0x10);
  local_6c = uVar1;
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = *param_2;
    puVar2[1] = param_2[1];
    puVar2[2] = param_2[2];
    puVar2[3] = param_2[3];
  }
  local_48 = &local_6c;
  FUN_006ada41(&local_6c);
  FUN_006ad3f7(local_50);
  local_48 = &local_6c;
  local_6c = local_50;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_4c);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_0069ba57(int *param_1_00,int param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  char cVar4;
  int *piVar5;
  undefined4 *puVar6;
  undefined4 uVar7;
  uint uVar8;
  undefined local_c8 [12];
  int local_bc;
  int local_b4;
  int local_ac;
  int local_a4;
  int local_9c;
  undefined4 local_98;
  undefined4 local_94;
  int local_90;
  int local_8c;
  undefined4 local_88;
  undefined4 local_84;
  int local_80;
  int *local_7c;
  int local_78;
  int local_74;
  undefined local_70 [24];
  undefined4 local_58;
  undefined4 local_54;
  char local_50;
  undefined4 local_4c;
  undefined local_48;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
  local_38 [48];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb8;
  local_8 = 0x69ba66;
  local_78 = *param_1_00;
  local_80 = param_1;
  local_74 = *(int *)param_1_00[5];
  local_7c = param_1_00;
  while( true ) {
    iVar1 = param_1_00[5];
    if ((local_78 == 0) || (local_78 != *param_1_00)) {
      FUN_00a3fb10();
    }
    if (local_74 == iVar1) break;
    piVar5 = (int *)FUN_006adbc2();
    if (*piVar5 != 0) {
      FUN_006a1d0b();
      iVar1 = local_90;
      local_8 = 0;
      if (local_90 != 0) {
        local_58 = 7;
        FUN_0040180b(0);
        local_54 = 0;
        local_50 = '\0';
        local_48 = 0;
        std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
        basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  (local_38);
        local_8._0_1_ = 1;
        cVar4 = (**(code **)(*(int *)(iVar1 + 0x24) + 0x14))();
        if (cVar4 != '\0') {
          puVar6 = (undefined4 *)FUN_006af81d();
          local_8._0_1_ = 2;
          FID_conflict_assign(*puVar6,0,0xffffffff);
          local_8._0_1_ = 1;
          if (local_9c != 0) {
            FUN_0040127a();
          }
        }
        cVar4 = (**(code **)(*(int *)(iVar1 + 0x44) + 0x14))();
        if (cVar4 != '\0') {
          puVar6 = (undefined4 *)FUN_006ad7fd();
          uVar7 = *(undefined4 *)*puVar6;
          if (local_b4 != 0) {
            FUN_0040127a();
          }
          local_4c = uVar7;
          if (local_50 == '\0') {
            local_50 = '\x01';
          }
        }
        cVar4 = (**(code **)(*(int *)(iVar1 + 0x34) + 0x14))();
        uVar7 = local_54;
        if (cVar4 != '\0') {
          puVar6 = (undefined4 *)FUN_006ad7fd();
          uVar7 = *(undefined4 *)*puVar6;
          if (local_ac != 0) {
            FUN_0040127a();
          }
        }
        local_54 = uVar7;
        cVar4 = (**(code **)(*(int *)(iVar1 + 0x54) + 0x14))();
        if (cVar4 != '\0') {
          piVar5 = (int *)FUN_006ad7fd();
          uVar7 = *(undefined4 *)*piVar5;
          uVar2 = ((undefined4 *)*piVar5)[1];
          if (local_bc != 0) {
            FUN_0040127a();
          }
          local_88 = uVar7;
          local_84 = uVar2;
          FUN_006a1225();
        }
        cVar4 = (**(code **)(*(int *)(iVar1 + 100) + 0x14))();
        if (cVar4 != '\0') {
          puVar6 = (undefined4 *)FUN_006ac0b0();
          local_8._0_1_ = 3;
          FID_conflict_assign(*puVar6,0,0xffffffff);
          local_8._0_1_ = 1;
          if (local_a4 != 0) {
            FUN_0040127a();
          }
        }
        iVar3 = local_80;
        iVar1 = *(int *)(local_80 + 0xc);
        if (iVar1 == 0) {
          uVar8 = 0;
        }
        else {
          uVar8 = (*(int *)(local_80 + 0x14) - iVar1) / 0x58;
        }
        if ((uint)((*(int *)(local_80 + 0x10) - iVar1) / 0x58) < uVar8) {
          uVar7 = FUN_006a12fc(*(int *)(local_80 + 0x10),1,local_70);
          *(undefined4 *)(iVar3 + 0x10) = uVar7;
        }
        else {
          FUN_0046e65a();
          FUN_006a124d(local_c8,local_70,local_98,local_94);
        }
        FUN_0068f611();
      }
      local_8 = 0xffffffff;
      param_1_00 = local_7c;
      if (local_8c != 0) {
        FUN_0040127a();
        param_1_00 = local_7c;
      }
    }
    FUN_007a741a();
  }
  FUN_00a421fb();
  return;
}



void __thiscall FUN_0069bcbe(int *param_1_00,int param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  char cVar4;
  uint uVar5;
  int *piVar6;
  undefined4 *puVar7;
  undefined4 uVar8;
  uint uVar9;
  undefined auStack_fc [4];
  int local_f8;
  int local_f4;
  int local_f0;
  int *local_ec;
  undefined4 uStack_e8;
  undefined4 uStack_e4;
  int local_e0;
  int local_dc;
  int iStack_d4;
  int iStack_cc;
  int iStack_c4;
  int iStack_bc;
  undefined4 auStack_b8 [10];
  undefined auStack_90 [8];
  undefined local_88 [24];
  undefined4 local_70;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
  local_6c [28];
  undefined local_50;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3e7c6;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_fc;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xfffffef8;
  ExceptionList = &local_14;
  local_f8 = *param_1_00;
  local_f0 = param_1;
  local_f4 = *(int *)param_1_00[5];
  local_ec = param_1_00;
  do {
    iVar1 = param_1_00[5];
    if ((local_f8 == 0) || (local_f8 != *param_1_00)) {
      FUN_00a3fb10(uVar5);
    }
    if (local_f4 == iVar1) {
      ExceptionList = local_14;
      ___security_check_cookie_4();
      return;
    }
    piVar6 = (int *)FUN_006adbc2();
    if (*piVar6 != 0) {
      FUN_006a1d65();
      iVar1 = local_e0;
      local_c = 0;
      if (local_e0 != 0) {
        local_70 = 7;
        FUN_0040180b(0);
        std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
        basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  (local_6c);
        local_c._0_1_ = 2;
        local_50 = 0;
        local_48 = 0;
        local_44 = 0;
        local_40 = 0;
        local_3c = 0;
        FUN_004382a5(local_38);
        local_c._0_1_ = 3;
        cVar4 = (**(code **)(*(int *)(iVar1 + 0x24) + 0x14))();
        if (cVar4 != '\0') {
          puVar7 = (undefined4 *)FUN_006af81d();
          local_c._0_1_ = 4;
          FID_conflict_assign(*puVar7,0,0xffffffff);
          local_c._0_1_ = 3;
          if (iStack_bc != 0) {
            FUN_0040127a();
          }
        }
        cVar4 = (**(code **)(*(int *)(iVar1 + 0x34) + 0x14))();
        if (cVar4 != '\0') {
          puVar7 = (undefined4 *)FUN_006a873c();
          local_c._0_1_ = 5;
          FID_conflict_assign(*puVar7,0,0xffffffff);
          local_c._0_1_ = 3;
          if (iStack_d4 != 0) {
            FUN_0040127a();
          }
        }
        cVar4 = (**(code **)(*(int *)(iVar1 + 100) + 0x14))();
        if (cVar4 == '\0') {
          cVar4 = (**(code **)(*(int *)(iVar1 + 0x44) + 0x14))();
          if (cVar4 != '\0') {
            puVar7 = (undefined4 *)FUN_006ac082();
            uVar8 = *puVar7;
            uVar2 = puVar7[1];
            goto LAB_0069bec5;
          }
        }
        else {
          piVar6 = (int *)FUN_006ad7fd();
          uVar8 = *(undefined4 *)*piVar6;
          uVar2 = ((undefined4 *)*piVar6)[1];
          if (iStack_cc != 0) {
            FUN_0040127a();
          }
LAB_0069bec5:
          local_44 = uVar2;
          local_48 = uVar8;
          local_50 = 1;
        }
        cVar4 = (**(code **)(*(int *)(iVar1 + 0x74) + 0x14))();
        if (cVar4 == '\0') {
          cVar4 = (**(code **)(*(int *)(iVar1 + 0x54) + 0x14))();
          uVar8 = local_40;
          uVar2 = local_3c;
          if (cVar4 != '\0') {
            puVar7 = (undefined4 *)FUN_006ac054();
            uVar8 = *puVar7;
            uVar2 = puVar7[1];
          }
        }
        else {
          piVar6 = (int *)FUN_006ad7fd();
          uVar8 = *(undefined4 *)*piVar6;
          uVar2 = ((undefined4 *)*piVar6)[1];
          if (iStack_c4 != 0) {
            FUN_0040127a();
          }
        }
        local_3c = uVar2;
        local_40 = uVar8;
        cVar4 = (**(code **)(*(int *)(iVar1 + 0x84) + 0x14))();
        iVar1 = local_f0;
        if (cVar4 != '\0') {
          FUN_004382a5(auStack_b8);
          local_c._0_1_ = 6;
          FUN_0069ba57(auStack_b8);
          FUN_00699594();
          local_c = CONCAT31(local_c._1_3_,3);
          FUN_0068f45e();
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(auStack_b8[0]);
        }
        iVar3 = *(int *)(local_f0 + 0xc);
        if (iVar3 == 0) {
          uVar9 = 0;
        }
        else {
          uVar9 = (*(int *)(local_f0 + 0x14) - iVar3) / 0x68;
        }
        if ((uint)((*(int *)(local_f0 + 0x10) - iVar3) / 0x68) < uVar9) {
          uVar8 = FUN_006a13db(*(int *)(local_f0 + 0x10),1,local_88);
          *(undefined4 *)(iVar1 + 0x10) = uVar8;
        }
        else {
          FUN_0046e65a();
          FUN_006a132c(auStack_90,local_88,uStack_e8,uStack_e4);
        }
        FUN_0068f63b();
      }
      local_c = 0xffffffff;
      param_1_00 = local_ec;
      if (local_dc != 0) {
        FUN_0040127a();
        param_1_00 = local_ec;
      }
    }
    FUN_007a741a();
  } while( true );
}



void __thiscall FUN_0069c050(int *param_1_00,int param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  char cVar4;
  uint uVar5;
  int *piVar6;
  undefined4 *puVar7;
  undefined4 uVar8;
  uint uVar9;
  undefined auStack_a4 [4];
  int local_a0;
  int local_9c;
  int local_98;
  int *local_94;
  undefined4 uStack_90;
  undefined4 uStack_8c;
  int local_88;
  int local_84;
  int iStack_7c;
  int iStack_74;
  int iStack_6c;
  int iStack_64;
  undefined auStack_60 [8];
  undefined local_58 [24];
  undefined4 local_40;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2e8c5;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_a4;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffff50;
  ExceptionList = &local_14;
  local_a0 = *param_1_00;
  local_98 = param_1;
  local_9c = *(int *)param_1_00[5];
  local_94 = param_1_00;
  while( true ) {
    iVar1 = param_1_00[5];
    if ((local_a0 == 0) || (local_a0 != *param_1_00)) {
      FUN_00a3fb10(uVar5);
    }
    if (local_9c == iVar1) break;
    piVar6 = (int *)FUN_006adbc2();
    if (*piVar6 != 0) {
      FUN_006a1d38();
      iVar1 = local_88;
      local_c = 0;
      if (local_88 != 0) {
        local_40 = 7;
        FUN_0040180b(0);
        local_38 = 0;
        local_34 = 0;
        local_30 = 0;
        local_2c = 0;
        local_28 = 0;
        local_24 = 0;
        local_c._0_1_ = 1;
        cVar4 = (**(code **)(*(int *)(iVar1 + 0x24) + 0x14))();
        if (cVar4 != '\0') {
          puVar7 = (undefined4 *)FUN_006af81d();
          local_c._0_1_ = 2;
          FID_conflict_assign(*puVar7,0,0xffffffff);
          local_c._0_1_ = 1;
          if (iStack_7c != 0) {
            FUN_0040127a();
          }
        }
        cVar4 = (**(code **)(*(int *)(iVar1 + 0x34) + 0x14))();
        uVar8 = local_38;
        uVar2 = local_34;
        if (cVar4 != '\0') {
          piVar6 = (int *)FUN_006ad7fd();
          uVar8 = *(undefined4 *)*piVar6;
          uVar2 = ((undefined4 *)*piVar6)[1];
          if (iStack_6c != 0) {
            FUN_0040127a();
          }
        }
        local_34 = uVar2;
        local_38 = uVar8;
        cVar4 = (**(code **)(*(int *)(iVar1 + 0x44) + 0x14))();
        uVar8 = local_30;
        uVar2 = local_2c;
        if (cVar4 != '\0') {
          piVar6 = (int *)FUN_006ad7fd();
          uVar8 = *(undefined4 *)*piVar6;
          uVar2 = ((undefined4 *)*piVar6)[1];
          if (iStack_64 != 0) {
            FUN_0040127a();
          }
        }
        local_2c = uVar2;
        local_30 = uVar8;
        cVar4 = (**(code **)(*(int *)(iVar1 + 0x54) + 0x14))();
        uVar8 = local_28;
        uVar2 = local_24;
        if (cVar4 != '\0') {
          piVar6 = (int *)FUN_006ad7fd();
          uVar8 = *(undefined4 *)*piVar6;
          uVar2 = ((undefined4 *)*piVar6)[1];
          if (iStack_74 != 0) {
            FUN_0040127a();
          }
        }
        local_24 = uVar2;
        local_28 = uVar8;
        iVar3 = local_98;
        iVar1 = *(int *)(local_98 + 0xc);
        if (iVar1 == 0) {
          uVar9 = 0;
        }
        else {
          uVar9 = (*(int *)(local_98 + 0x14) - iVar1) / 0x38;
        }
        if ((uint)((*(int *)(local_98 + 0x10) - iVar1) / 0x38) < uVar9) {
          uVar8 = FUN_006a14bb(*(int *)(local_98 + 0x10),1,local_58);
          *(undefined4 *)(iVar3 + 0x10) = uVar8;
        }
        else {
          FUN_0046e65a();
          FUN_006a140c(auStack_60,local_58,uStack_90,uStack_8c);
        }
        FUN_00401829(1,0);
      }
      local_c = 0xffffffff;
      param_1_00 = local_94;
      if (local_84 != 0) {
        FUN_0040127a();
        param_1_00 = local_94;
      }
    }
    FUN_007a741a();
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void FUN_0069f809(undefined4 param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
                 undefined4 param_5,undefined4 param_6)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  undefined4 local_3c;
  undefined4 local_20;
  undefined local_1c [8];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3e70d;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_3c = 0x69f83f;
  pvVar2 = operator_new(0xa4);
  local_c = 0;
  if (pvVar2 != (void *)0x0) {
    local_3c = 0x69f853;
    FUN_0069a8db();
  }
  local_c = 0xffffffff;
  local_3c = 0x69f868;
  FUN_006a3526();
  local_c = 1;
  local_3c = 0x69f877;
  uVar1 = 0x10;
  puVar3 = (undefined4 *)operator_new(0x10);
  local_3c = uVar1;
  if (puVar3 != (undefined4 *)0x0) {
    *puVar3 = *param_2;
    puVar3[1] = param_2[1];
    puVar3[2] = param_2[2];
    puVar3[3] = param_2[3];
  }
  FUN_006ada41(&local_3c);
  FUN_006ad3f7(local_20);
  local_3c = 0x69f8a9;
  uVar1 = 0x10;
  puVar3 = (undefined4 *)operator_new(0x10);
  local_3c = uVar1;
  if (puVar3 != (undefined4 *)0x0) {
    *puVar3 = *param_3;
    puVar3[1] = param_3[1];
    puVar3[2] = param_3[2];
    puVar3[3] = param_3[3];
  }
  FUN_006ada41(&local_3c);
  FUN_0069a70b(local_20);
  local_3c = 0x69f8db;
  uVar1 = 0x10;
  puVar3 = (undefined4 *)operator_new(0x10);
  local_3c = uVar1;
  if (puVar3 != (undefined4 *)0x0) {
    *puVar3 = *param_4;
    puVar3[1] = param_4[1];
    puVar3[2] = param_4[2];
    puVar3[3] = param_4[3];
  }
  FUN_006ada41(&local_3c);
  FUN_006a6c2a(local_20);
  FUN_006a6bf1();
  FUN_00b93100(param_6);
  FUN_006a7672(local_20);
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0069f98f(undefined4 param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 local_38;
  undefined4 local_20;
  undefined local_1c [4];
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x69f99b;
  local_38 = 0x69f9a5;
  local_18 = operator_new(0xa4);
  local_8 = 0;
  if (local_18 != (void *)0x0) {
    local_38 = 0x69f9b7;
    FUN_0069a987();
  }
  local_8 = 0xffffffff;
  local_38 = 0x69f9ca;
  FUN_006a3573();
  local_8 = 1;
  local_38 = 0x69f9d8;
  uVar1 = 0x10;
  puVar2 = (undefined4 *)operator_new(0x10);
  local_38 = uVar1;
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = *param_2;
    puVar2[1] = param_2[1];
    puVar2[2] = param_2[2];
    puVar2[3] = param_2[3];
  }
  FUN_006ada41(&local_38);
  FUN_006ad3f7(local_20);
  local_38 = 0x69fa08;
  uVar1 = 0x10;
  puVar2 = (undefined4 *)operator_new(0x10);
  local_38 = uVar1;
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = *param_3;
    puVar2[1] = param_3[1];
    puVar2[2] = param_3[2];
    puVar2[3] = param_3[3];
  }
  FUN_006ada41(&local_38);
  FUN_0069a70b(local_20);
  local_38 = 0x69fa38;
  uVar1 = 0x10;
  puVar2 = (undefined4 *)operator_new(0x10);
  local_38 = uVar1;
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = *param_4;
    puVar2[1] = param_4[1];
    puVar2[2] = param_4[2];
    puVar2[3] = param_4[3];
  }
  FUN_006ada41(&local_38);
  FUN_006a6c2a(local_20);
  FUN_006a6bf1();
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_1c);
}



void FUN_0069fabe(undefined4 param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 local_3c;
  undefined4 local_20;
  undefined local_1c [8];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3e70d;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_3c = 0x69faf4;
  puVar2 = (undefined4 *)operator_new(0x84);
  local_c = 0;
  if (puVar2 != (undefined4 *)0x0) {
    local_3c = 0x69fb0a;
    FUN_0069a6c5();
    *puVar2 = WF8266037::WD72F1F4B::WEA11876F::vftable;
  }
  local_c = 0xffffffff;
  local_3c = 0x69fb25;
  FUN_006a35c0();
  local_c = 1;
  local_3c = 0x69fb34;
  uVar1 = 0x10;
  puVar2 = (undefined4 *)operator_new(0x10);
  local_3c = uVar1;
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = *param_2;
    puVar2[1] = param_2[1];
    puVar2[2] = param_2[2];
    puVar2[3] = param_2[3];
  }
  FUN_006ada41(&local_3c);
  FUN_006ad3f7(local_20);
  local_3c = 0x69fb66;
  uVar1 = 0x10;
  puVar2 = (undefined4 *)operator_new(0x10);
  local_3c = uVar1;
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = *param_3;
    puVar2[1] = param_3[1];
    puVar2[2] = param_3[2];
    puVar2[3] = param_3[3];
  }
  FUN_006ada41(&local_3c);
  FUN_0069a70b(local_20);
  local_3c = 0x69fb98;
  uVar1 = 0x10;
  puVar2 = (undefined4 *)operator_new(0x10);
  local_3c = uVar1;
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = *param_4;
    puVar2[1] = param_4[1];
    puVar2[2] = param_4[2];
    puVar2[3] = param_4[3];
  }
  FUN_006ada41(&local_3c);
  FUN_006a6c2a(local_20);
  FUN_006a6bf1();
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_1c);
}



// WARNING: Removing unreachable block (ram,0x006a0503)

uint FUN_006a02e0(undefined4 param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,
                 undefined4 param_5)

{
  char cVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  uint uVar5;
  undefined4 *puVar6;
  undefined4 *local_7c;
  undefined4 **ppuStack_78;
  uint uStack_74;
  undefined4 *local_54;
  undefined4 *local_50;
  undefined4 *local_4c;
  undefined4 *local_48;
  undefined4 *local_44;
  undefined4 *local_40;
  undefined4 *local_3c;
  undefined4 *local_38;
  undefined4 *local_34;
  undefined4 *local_30;
  undefined4 **local_28;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c39bd8;
  local_14 = ExceptionList;
  uStack_74 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_14;
  ppuStack_78 = &local_54;
  local_7c = param_2;
  local_c = 0;
  piVar2 = (int *)FUN_00b93190();
  puVar6 = (undefined4 *)*piVar2;
  *piVar2 = 0;
  local_c._0_1_ = 1;
  local_38 = puVar6;
  if (local_54 != (undefined4 *)0x0) {
    ppuStack_78 = (undefined4 **)0x1;
    local_7c = (undefined4 *)0x6a0342;
    (**(code **)*local_54)();
  }
  ppuStack_78 = (undefined4 **)param_4;
  local_7c = param_3;
  puVar3 = (undefined4 *)FUN_00bb6dd0(&local_50);
  local_3c = (undefined4 *)*puVar3;
  *puVar3 = 0;
  local_c._0_1_ = 2;
  local_34 = local_3c;
  if (local_50 != (undefined4 *)0x0) {
    ppuStack_78 = (undefined4 **)0x1;
    local_7c = (undefined4 *)0x6a0374;
    (**(code **)*local_50)();
  }
  ppuStack_78 = &local_4c;
  local_7c = (undefined4 *)0x6a0380;
  puVar4 = (undefined4 *)FUN_006a0520();
  puVar3 = (undefined4 *)*puVar4;
  *puVar4 = 0;
  local_c._0_1_ = 3;
  local_40 = puVar3;
  local_30 = puVar3;
  if (local_4c != (undefined4 *)0x0) {
    ppuStack_78 = (undefined4 **)0x1;
    local_7c = (undefined4 *)0x6a03a0;
    (**(code **)*local_4c)();
  }
  ppuStack_78 = (undefined4 **)param_5;
  local_7c = puVar3;
  piVar2 = (int *)FUN_00bb6dd0(&local_48);
  puVar3 = (undefined4 *)*piVar2;
  *piVar2 = 0;
  local_c = CONCAT31(local_c._1_3_,4);
  local_28 = (undefined4 **)puVar3;
  if (local_48 != (undefined4 *)0x0) {
    ppuStack_78 = (undefined4 **)0x1;
    local_7c = (undefined4 *)0x6a03cc;
    (**(code **)*local_48)();
  }
  ppuStack_78 = &local_44;
  local_7c = (undefined4 *)0x6a03d8;
  puVar4 = (undefined4 *)FUN_006a0520();
  ppuStack_78 = (undefined4 **)*puVar4;
  *puVar4 = 0;
  local_7c = (undefined4 *)0x6a03e7;
  FUN_0040c727();
  if (local_44 != (undefined4 *)0x0) {
    ppuStack_78 = (undefined4 **)0x1;
    local_7c = (undefined4 *)0x6a03f5;
    (**(code **)*local_44)();
  }
  local_c._0_1_ = 3;
  if (puVar3 != (undefined4 *)0x0) {
    ppuStack_78 = (undefined4 **)0x1;
    local_7c = (undefined4 *)0x6a0406;
    (**(code **)*puVar3)();
  }
  local_c._0_1_ = 2;
  if (local_40 != (undefined4 *)0x0) {
    ppuStack_78 = (undefined4 **)0x1;
    local_7c = (undefined4 *)0x6a0419;
    (**(code **)*local_40)();
  }
  local_c._0_1_ = 1;
  if (local_3c != (undefined4 *)0x0) {
    ppuStack_78 = (undefined4 **)0x1;
    local_7c = (undefined4 *)0x6a042c;
    (**(code **)*local_3c)();
  }
  ppuStack_78 = (undefined4 **)0x6a043b;
  cVar1 = FUN_00b93010();
  if (cVar1 != '\0') {
    ppuStack_78 = (undefined4 **)0x0;
    local_7c = (undefined4 *)0x6a0465;
    puVar6 = (undefined4 *)FUN_00b702c0();
    local_28 = &local_7c;
    local_c = CONCAT31(local_c._1_3_,5);
    local_7c = (undefined4 *)*puVar6;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar6 + 1);
  }
  ppuStack_78 = (undefined4 **)0xba00d396;
  local_7c = (undefined4 *)0x6a0452;
  uVar5 = FUN_00b940e0();
  local_c = (uint)local_c._1_3_ << 8;
  if (puVar6 != (undefined4 *)0x0) {
    ppuStack_78 = (undefined4 **)0x1;
    local_7c = (undefined4 *)0x6a04f6;
    uVar5 = (**(code **)*puVar6)();
  }
  ExceptionList = local_14;
  return uVar5 & 0xffffff00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a0520(int param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  char cVar3;
  undefined4 *puVar4;
  undefined4 local_24;
  undefined4 *local_1c;
  undefined4 *local_18;
  char local_11;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x6a052c;
  puVar4 = (undefined4 *)0x0;
  uVar1 = *(undefined4 *)(param_1 + 8);
  local_11 = FUN_00b93390();
  if (local_11 == '\0') {
    FUN_00b940e0(&DAT_0288fe38);
  }
  local_18 = (undefined4 *)0x0;
  local_8 = 1;
  if (local_11 != '\0') {
    puVar4 = (undefined4 *)FUN_00b933f0(&local_1c,0);
    uVar2 = *puVar4;
    *puVar4 = 0;
    FUN_0040c727(uVar2);
    if (local_1c != (undefined4 *)0x0) {
      (**(code **)*local_1c)(1);
    }
    puVar4 = local_18;
    cVar3 = FUN_00b93010();
    if (cVar3 != '\0') {
      FUN_00a7e5b0(local_24,uVar1,local_1c);
      *param_2 = puVar4;
      return param_2;
    }
    FUN_00b940e0(0x1c8d687b);
  }
  *param_2 = 0;
  local_8 = local_8 & 0xffffff00;
  if (puVar4 != (undefined4 *)0x0) {
    (**(code **)*puVar4)(1);
  }
  return param_2;
}



void FUN_006a1154(int param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  cVar1 = FUN_0041c034();
  if (cVar1 != '\0') {
    uVar2 = FUN_006a38ff(*(undefined4 *)(param_1 + 0x10));
    FUN_0043a4e8(*(undefined4 *)(param_1 + 0x10));
    *(undefined4 *)(param_1 + 0x10) = uVar2;
  }
  return;
}



void FUN_006a11c0(void)

{
  char *unaff_ESI;
  
  if (*unaff_ESI != '\0') {
    FUN_0041c3a7();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 4));
  }
  return;
}



void __fastcall FUN_006a1225(undefined4 param_1,undefined4 *param_2)

{
  char *in_EAX;
  
  if (*in_EAX != '\0') {
    *(undefined4 *)(in_EAX + 8) = *param_2;
    *(undefined4 *)(in_EAX + 0xc) = param_2[1];
    return;
  }
  if ((undefined4 *)(in_EAX + 8) != (undefined4 *)0x0) {
    *(undefined4 *)(in_EAX + 8) = *param_2;
    *(undefined4 *)(in_EAX + 0xc) = param_2[1];
  }
  *in_EAX = '\x01';
  return;
}



void FUN_006a124d(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int in_EAX;
  int iVar1;
  int *piVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc)) / 0x58 == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = (param_4 - local_8) / 0x58;
  }
  FUN_006a14eb(param_2,param_3,param_4);
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar1 = 0;
  }
  else {
    iVar1 = *local_14;
  }
  piVar2 = (int *)(local_10 + local_8 * 0x58);
  if (piVar2 <= *(int **)(iVar1 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *local_14;
    }
    if (*(int **)(iVar1 + 0xc) <= piVar2) goto LAB_006a12ed;
  }
  FUN_00a3fb10();
LAB_006a12ed:
  param_1[1] = piVar2;
  *param_1 = local_14;
  return;
}



int FUN_006a12fc(int param_1,int param_2,undefined4 param_3)

{
  FUN_006a4af7(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x58 + param_1;
}



void FUN_006a132c(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int in_EAX;
  int iVar1;
  int *piVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc)) / 0x68 == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = (param_4 - local_8) / 0x68;
  }
  FUN_006a1782(param_2,param_3,param_4);
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar1 = 0;
  }
  else {
    iVar1 = *local_14;
  }
  piVar2 = (int *)(local_10 + local_8 * 0x68);
  if (piVar2 <= *(int **)(iVar1 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *local_14;
    }
    if (*(int **)(iVar1 + 0xc) <= piVar2) goto LAB_006a13cc;
  }
  FUN_00a3fb10();
LAB_006a13cc:
  param_1[1] = piVar2;
  *param_1 = local_14;
  return;
}



int FUN_006a13db(int param_1,int param_2,undefined4 param_3)

{
  FUN_006a4b48(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x68 + param_1;
}



void FUN_006a140c(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int in_EAX;
  int iVar1;
  int *piVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc)) / 0x38 == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = (param_4 - local_8) / 0x38;
  }
  FUN_006a1a25(param_2,param_3,param_4);
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar1 = 0;
  }
  else {
    iVar1 = *local_14;
  }
  piVar2 = (int *)(local_10 + local_8 * 0x38);
  if (piVar2 <= *(int **)(iVar1 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *local_14;
    }
    if (*(int **)(iVar1 + 0xc) <= piVar2) goto LAB_006a14ac;
  }
  FUN_00a3fb10();
LAB_006a14ac:
  param_1[1] = piVar2;
  *param_1 = local_14;
  return;
}



int FUN_006a14bb(int param_1,int param_2,undefined4 param_3)

{
  FUN_006a4b99(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x38 + param_1;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __thiscall FUN_006a14eb(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined *puVar6;
  undefined *extraout_ECX;
  undefined *puVar7;
  undefined auStack_d0 [88];
  undefined auStack_78 [112];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xd0;
  local_8 = 0x6a14fa;
  iVar3 = *(int *)(param_1_00 + 0xc);
  if (iVar3 == 0) {
    puVar7 = (undefined *)0x0;
  }
  else {
    puVar7 = (undefined *)((*(int *)(param_1_00 + 0x14) - iVar3) / 0x58);
  }
  iVar4 = *(int *)(param_1_00 + 0x10);
  puVar2 = (undefined *)((iVar4 - iVar3) / 0x58);
  puVar6 = &DAT_02e8ba2e;
  if (puVar2 == &DAT_02e8ba2e) {
    puVar2 = (undefined *)FUN_004423c1();
    puVar6 = extraout_ECX;
  }
  puVar2 = puVar2 + 1;
  if (puVar7 < puVar2) {
    if (puVar6 + -((uint)puVar7 >> 1) < puVar7) {
      puVar7 = (undefined *)0x0;
    }
    else {
      puVar7 = puVar7 + ((uint)puVar7 >> 1);
    }
    if (puVar7 < puVar2) {
      puVar7 = puVar2;
    }
    iVar3 = FUN_00698dcf();
    iVar4 = (param_3 - *(int *)(param_1_00 + 0xc)) / 0x58;
    local_8 = 0;
    FUN_006a12fc(iVar4 * 0x58 + iVar3,1,param_1);
    FUN_00699ac3(param_3,iVar3);
    FUN_00699ac3(*(undefined4 *)(param_1_00 + 0x10),(iVar4 + 1) * 0x58 + iVar3);
    if (*(int *)(param_1_00 + 0xc) != 0) {
      FUN_0068f4d5(*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
    }
    *(int *)(param_1_00 + 0x14) = (int)puVar7 * 0x58 + iVar3;
    *(int *)(param_1_00 + 0x10) =
         ((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x58 + 1) * 0x58 + iVar3;
    *(int *)(param_1_00 + 0xc) = iVar3;
  }
  else {
    if ((iVar4 - param_3) / 0x58 == 0) {
      FUN_00699e80(auStack_78);
      local_8 = 2;
      FUN_00699ac3(*(undefined4 *)(param_1_00 + 0x10),param_3 + 0x58);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_006a12fc(*(int *)(param_1_00 + 0x10),1 - (*(int *)(param_1_00 + 0x10) - param_3) / 0x58,
                   auStack_78);
      local_8 = 2;
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 0x58;
      iVar3 = *(int *)(param_1_00 + 0x10);
      for (; param_3 != iVar3 + -0x58; param_3 = param_3 + 0x58) {
        FUN_00699ddc();
      }
    }
    else {
      FUN_00699e80(auStack_d0);
      local_8 = 5;
      uVar1 = *(undefined4 *)(param_1_00 + 0x10);
      uVar5 = FUN_00699ac3(uVar1,uVar1);
      *(undefined4 *)(param_1_00 + 0x10) = uVar5;
      FUN_006a3939(param_3,uVar1);
      iVar3 = param_3 + 0x58;
      if (param_3 != iVar3) {
        do {
          FUN_00699ddc();
          param_3 = param_3 + 0x58;
        } while (param_3 != iVar3);
      }
    }
    FUN_0068f611();
  }
  FUN_00a4220a();
  return;
}



void Catch_All_006a1621(void)

{
  int unaff_EBP;
  
  if (1 < *(int *)(unaff_EBP + -0xd8)) {
    FUN_0068f4d5(*(int *)(unaff_EBP + -0xd0) * 0x58 + *(int *)(unaff_EBP + -0xd4));
  }
  if (0 < *(int *)(unaff_EBP + -0xd8)) {
    FUN_0068f4d5((*(int *)(unaff_EBP + -0xd0) + 1) * 0x58 + *(int *)(unaff_EBP + -0xd4));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0xd4));
}



void FUN_006a167a(void)

{
  int iVar1;
  undefined4 uVar2;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  int iVar3;
  
  __CxxThrowException_8();
  if ((unaff_EDI - *(int *)(unaff_EBP + 0x10)) / 0x58 == 0) {
    FUN_00699e80();
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_00699ac3();
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_006a12fc(*(undefined4 *)(unaff_ESI + 0x10));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 0x58;
    iVar1 = *(int *)(unaff_ESI + 0x10);
    for (iVar3 = *(int *)(unaff_EBP + 0x10); iVar3 != iVar1 + -0x58; iVar3 = iVar3 + 0x58) {
      FUN_00699ddc();
    }
  }
  else {
    FUN_00699e80();
    *(undefined4 *)(unaff_EBP + -4) = 5;
    uVar2 = FUN_00699ac3();
    *(undefined4 *)(unaff_ESI + 0x10) = uVar2;
    FUN_006a3939();
    iVar3 = *(int *)(unaff_EBP + 0x10);
    iVar1 = iVar3 + 0x58;
    for (; iVar3 != iVar1; iVar3 = iVar3 + 0x58) {
      FUN_00699ddc();
    }
  }
  FUN_0068f611();
  FUN_00a4220a();
  return;
}



void Catch_All_006a16fe(void)

{
  int unaff_EBP;
  
  FUN_0068f4d5(*(int *)(*(int *)(unaff_EBP + -0xd0) + 0x10) + 0x58);
  FUN_006a167a(0);
  return;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __thiscall FUN_006a1782(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined *puVar6;
  undefined *extraout_ECX;
  undefined *puVar7;
  undefined auStack_f0 [104];
  undefined auStack_88 [128];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xf0;
  local_8 = 0x6a1791;
  iVar3 = *(int *)(param_1_00 + 0xc);
  if (iVar3 == 0) {
    puVar7 = (undefined *)0x0;
  }
  else {
    puVar7 = (undefined *)((*(int *)(param_1_00 + 0x14) - iVar3) / 0x68);
  }
  iVar4 = *(int *)(param_1_00 + 0x10);
  puVar2 = (undefined *)((iVar4 - iVar3) / 0x68);
  puVar6 = &DAT_02762762;
  if (puVar2 == &DAT_02762762) {
    puVar2 = (undefined *)FUN_004423c1();
    puVar6 = extraout_ECX;
  }
  puVar2 = puVar2 + 1;
  if (puVar7 < puVar2) {
    if (puVar6 + -((uint)puVar7 >> 1) < puVar7) {
      puVar7 = (undefined *)0x0;
    }
    else {
      puVar7 = puVar7 + ((uint)puVar7 >> 1);
    }
    if (puVar7 < puVar2) {
      puVar7 = puVar2;
    }
    iVar3 = FUN_0068f503();
    iVar4 = (param_3 - *(int *)(param_1_00 + 0xc)) / 0x68;
    local_8 = 0;
    FUN_006a13db(iVar4 * 0x68 + iVar3,1,param_1);
    FUN_006990eb(param_3,iVar3);
    FUN_006990eb(*(undefined4 *)(param_1_00 + 0x10),(iVar4 + 1) * 0x68 + iVar3);
    if (*(int *)(param_1_00 + 0xc) != 0) {
      FUN_0068f4ec(*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
    }
    *(int *)(param_1_00 + 0x14) = (int)puVar7 * 0x68 + iVar3;
    *(int *)(param_1_00 + 0x10) =
         ((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x68 + 1) * 0x68 + iVar3;
    *(int *)(param_1_00 + 0xc) = iVar3;
  }
  else {
    if ((iVar4 - param_3) / 0x68 == 0) {
      FUN_00699ae7(auStack_88);
      local_8 = 2;
      FUN_006990eb(*(undefined4 *)(param_1_00 + 0x10),param_3 + 0x68);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_006a13db(*(int *)(param_1_00 + 0x10),1 - (*(int *)(param_1_00 + 0x10) - param_3) / 0x68,
                   auStack_88);
      local_8 = 2;
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 0x68;
      iVar3 = *(int *)(param_1_00 + 0x10);
      for (; param_3 != iVar3 + -0x68; param_3 = param_3 + 0x68) {
        FUN_00699515();
      }
    }
    else {
      FUN_00699ae7(auStack_f0);
      local_8 = 5;
      uVar1 = *(undefined4 *)(param_1_00 + 0x10);
      uVar5 = FUN_006990eb(uVar1,uVar1);
      *(undefined4 *)(param_1_00 + 0x10) = uVar5;
      FUN_006a397d(param_3,uVar1);
      iVar3 = param_3 + 0x68;
      if (param_3 != iVar3) {
        do {
          FUN_00699515();
          param_3 = param_3 + 0x68;
        } while (param_3 != iVar3);
      }
    }
    FUN_0068f63b();
  }
  FUN_00a4220a();
  return;
}



void Catch_All_006a18b8(void)

{
  int unaff_EBP;
  
  if (1 < *(int *)(unaff_EBP + -0xf8)) {
    FUN_0068f4ec(*(int *)(unaff_EBP + -0xf0) * 0x68 + *(int *)(unaff_EBP + -0xf4));
  }
  if (0 < *(int *)(unaff_EBP + -0xf8)) {
    FUN_0068f4ec((*(int *)(unaff_EBP + -0xf0) + 1) * 0x68 + *(int *)(unaff_EBP + -0xf4));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0xf4));
}



void FUN_006a1911(void)

{
  int iVar1;
  undefined4 uVar2;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  int iVar3;
  
  __CxxThrowException_8();
  if ((unaff_EDI - *(int *)(unaff_EBP + 0x10)) / 0x68 == 0) {
    FUN_00699ae7();
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_006990eb();
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_006a13db(*(undefined4 *)(unaff_ESI + 0x10));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 0x68;
    iVar1 = *(int *)(unaff_ESI + 0x10);
    for (iVar3 = *(int *)(unaff_EBP + 0x10); iVar3 != iVar1 + -0x68; iVar3 = iVar3 + 0x68) {
      FUN_00699515();
    }
  }
  else {
    FUN_00699ae7();
    *(undefined4 *)(unaff_EBP + -4) = 5;
    uVar2 = FUN_006990eb();
    *(undefined4 *)(unaff_ESI + 0x10) = uVar2;
    FUN_006a397d();
    iVar3 = *(int *)(unaff_EBP + 0x10);
    iVar1 = iVar3 + 0x68;
    for (; iVar3 != iVar1; iVar3 = iVar3 + 0x68) {
      FUN_00699515();
    }
  }
  FUN_0068f63b();
  FUN_00a4220a();
  return;
}



void Catch_All_006a19a1(void)

{
  int unaff_EBP;
  
  FUN_0068f4ec(*(int *)(*(int *)(unaff_EBP + -0xf0) + 0x10) + 0x68);
  FUN_006a1911(0);
  return;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __thiscall FUN_006a1a25(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int extraout_ECX;
  uint uVar6;
  undefined auStack_58 [80];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x90;
  local_8 = 0x6a1a34;
  iVar5 = *(int *)(param_1_00 + 0xc);
  if (iVar5 == 0) {
    uVar6 = 0;
  }
  else {
    uVar6 = (*(int *)(param_1_00 + 0x14) - iVar5) / 0x38;
  }
  iVar3 = *(int *)(param_1_00 + 0x10);
  iVar2 = (iVar3 - iVar5) / 0x38;
  iVar5 = 0x4924924;
  if (iVar2 == 0x4924924) {
    iVar2 = FUN_004423c1();
    iVar5 = extraout_ECX;
  }
  uVar1 = iVar2 + 1;
  if (uVar6 < uVar1) {
    if (iVar5 - (uVar6 >> 1) < uVar6) {
      uVar6 = 0;
    }
    else {
      uVar6 = uVar6 + (uVar6 >> 1);
    }
    if (uVar6 < uVar1) {
      uVar6 = uVar1;
    }
    iVar5 = FUN_0068f56a();
    iVar3 = (param_3 - *(int *)(param_1_00 + 0xc)) / 0x38;
    local_8 = 0;
    FUN_006a14bb(iVar3 * 0x38 + iVar5,1,param_1);
    FUN_006a39c3(param_3,iVar5);
    FUN_006a39c3(*(undefined4 *)(param_1_00 + 0x10),(iVar3 + 1) * 0x38 + iVar5);
    if (*(int *)(param_1_00 + 0xc) != 0) {
      FUN_0068f54d(*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
    }
    *(uint *)(param_1_00 + 0x14) = uVar6 * 0x38 + iVar5;
    *(int *)(param_1_00 + 0x10) =
         ((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x38 + 1) * 0x38 + iVar5;
    *(int *)(param_1_00 + 0xc) = iVar5;
  }
  else {
    if ((iVar3 - param_3) / 0x38 == 0) {
      FUN_00699b49();
      local_8 = 2;
      FUN_006a39c3(*(undefined4 *)(param_1_00 + 0x10),param_3 + 0x38);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_006a14bb(*(int *)(param_1_00 + 0x10),1 - (*(int *)(param_1_00 + 0x10) - param_3) / 0x38,
                   auStack_58);
      local_8 = 2;
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 0x38;
      iVar5 = *(int *)(param_1_00 + 0x10);
      for (; param_3 != iVar5 + -0x38; param_3 = param_3 + 0x38) {
        FUN_00699561();
      }
    }
    else {
      FUN_00699b49();
      local_8 = 5;
      iVar5 = *(int *)(param_1_00 + 0x10);
      uVar4 = FUN_006a39c3(iVar5,iVar5);
      *(undefined4 *)(param_1_00 + 0x10) = uVar4;
      while (iVar5 = iVar5 + -0x38, param_3 != iVar5) {
        FUN_00699561();
      }
      iVar5 = param_3 + 0x38;
      if (param_3 != iVar5) {
        do {
          FUN_00699561();
          param_3 = param_3 + 0x38;
        } while (param_3 != iVar5);
      }
    }
    FUN_00401829(1,0);
  }
  FUN_00a4220a();
  return;
}



void Catch_All_006a1b5b(void)

{
  int unaff_EBP;
  
  if (1 < *(int *)(unaff_EBP + -0x9c)) {
    FUN_0068f54d(*(int *)(unaff_EBP + -0x90) * 0x38 + *(int *)(unaff_EBP + -0x94));
  }
  if (0 < *(int *)(unaff_EBP + -0x9c)) {
    FUN_0068f54d((*(int *)(unaff_EBP + -0x90) + 1) * 0x38 + *(int *)(unaff_EBP + -0x94));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x94));
}



void FUN_006a1bb4(void)

{
  undefined4 uVar1;
  int unaff_EBX;
  int unaff_EBP;
  int unaff_ESI;
  int iVar2;
  int iVar3;
  
  __CxxThrowException_8();
  if ((unaff_ESI - *(int *)(unaff_EBP + 0x10)) / 0x38 == 0) {
    FUN_00699b49();
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_006a39c3();
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_006a14bb(*(undefined4 *)(unaff_EBX + 0x10));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_EBX + 0x10) = *(int *)(unaff_EBX + 0x10) + 0x38;
    iVar3 = *(int *)(unaff_EBX + 0x10);
    for (iVar2 = *(int *)(unaff_EBP + 0x10); iVar2 != iVar3 + -0x38; iVar2 = iVar2 + 0x38) {
      FUN_00699561();
    }
  }
  else {
    FUN_00699b49();
    *(undefined4 *)(unaff_EBP + -4) = 5;
    iVar3 = *(int *)(unaff_EBX + 0x10) + -0x38;
    uVar1 = FUN_006a39c3();
    *(undefined4 *)(unaff_EBX + 0x10) = uVar1;
    iVar2 = *(int *)(unaff_EBP + 0x10);
    *(int *)(unaff_EBP + -0x98) = iVar2;
    if (iVar2 != iVar3) {
      do {
        iVar3 = iVar3 + -0x38;
        FUN_00699561();
      } while (iVar3 != *(int *)(unaff_EBP + -0x98));
      iVar2 = *(int *)(unaff_EBP + 0x10);
    }
    iVar3 = iVar2 + 0x38;
    for (; iVar2 != iVar3; iVar2 = iVar2 + 0x38) {
      FUN_00699561();
    }
  }
  FUN_00401829();
  FUN_00a4220a();
  return;
}



void Catch_All_006a1c3a(void)

{
  int unaff_EBP;
  
  FUN_0068f54d(*(int *)(*(int *)(unaff_EBP + -0x90) + 0x10) + 0x38);
  FUN_006a1bb4(0);
  return;
}



void FUN_006a1d0b(void)

{
  int in_EAX;
  undefined4 *unaff_EDI;
  
  if (*(int *)(in_EAX + 8) == 0) {
    FUN_006ab7d5(in_EAX);
  }
  *unaff_EDI = *(undefined4 *)(in_EAX + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0xc);
}



void FUN_006a1d38(void)

{
  int in_EAX;
  undefined4 *unaff_EDI;
  
  if (*(int *)(in_EAX + 8) == 0) {
    FUN_006aa14e(in_EAX);
  }
  *unaff_EDI = *(undefined4 *)(in_EAX + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0xc);
}



void FUN_006a1d65(void)

{
  int in_EAX;
  undefined4 *unaff_EDI;
  
  if (*(int *)(in_EAX + 8) == 0) {
    FUN_006abc49(in_EAX);
  }
  *unaff_EDI = *(undefined4 *)(in_EAX + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a1dec(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a4c17(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a1ec1(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a4c74(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a1f96(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a4cd1(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a1fe3(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a3b53(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a20a1(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a4d2e(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a20ee(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a3c09(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a21ac(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a4d8b(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a21f9(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a3cbf(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a22b7(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a4de8(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a2304(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a3d75(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a23c2(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a4e45(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006a240f(void)

{
  int iVar1;
  int *piVar2;
  undefined4 unaff_ESI;
  int local_14;
  
  piVar2 = (int *)FUN_006a5647(unaff_ESI);
  iVar1 = *piVar2;
  *piVar2 = 0;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&stack0xffffffe4);
  FUN_0046f668();
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  return;
}



void FUN_006a2476(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a3e2b(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a2534(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a4ea2(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a2581(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a3ee1(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a263f(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a4eff(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a268c(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a3f97(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a274a(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a4f5c(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a2797(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a404d(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a2855(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a4fb9(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a28a2(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a4103(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a2960(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a5016(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a29ad(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a41b9(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a2a6b(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a5073(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a2ab8(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a426f(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a2b76(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a50d0(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a2bc3(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a4325(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a2c81(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a512d(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a2cce(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a43db(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a2d8c(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a518a(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a2dd9(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a4491(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a2e97(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a51e7(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a2ee4(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a4547(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a2fa2(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a5244(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a2fef(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a45fd(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a30ad(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a52a1(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a30fa(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a46b3(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a31b8(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a52fe(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a3205(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a535b(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a3252(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a4769(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a3310(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a53b8(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a335d(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a481f(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a341b(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a5415(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a3468(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a48d5(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a3526(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a5472(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a3573(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a54cf(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a35c0(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a552c(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006a360d(void)

{
  int iVar1;
  int *piVar2;
  undefined4 unaff_ESI;
  int local_14;
  
  piVar2 = (int *)FUN_006a56a4(unaff_ESI);
  iVar1 = *piVar2;
  *piVar2 = 0;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&stack0xffffffe4);
  FUN_0046f668();
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  return;
}



void FUN_006a371c(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a498b(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006a37da(void)

{
  int iVar1;
  int *piVar2;
  undefined4 unaff_ESI;
  int local_14;
  
  piVar2 = (int *)FUN_006a5701(unaff_ESI);
  iVar1 = *piVar2;
  *piVar2 = 0;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&stack0xffffffe4);
  FUN_0046f668();
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  return;
}



void FUN_006a3841(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined auStack_38 [8];
  undefined4 local_30;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_38;
  ExceptionList = &local_14;
  FUN_006ba0f0(local_28,param_1);
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006a4a41(local_20,local_28,uVar1);
  local_c = CONCAT31(local_c._1_3_,1);
  local_30 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



int __thiscall FUN_006a38ff(int param_1_00,int param_1)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = param_1 - param_1_00;
  if (param_1_00 != param_1) {
    do {
      FUN_004fe47e();
      param_1_00 = param_1_00 + 8;
    } while (param_1_00 != param_1);
  }
  return in_EAX + (iVar1 >> 3) * 8;
}



int FUN_006a3939(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = in_EAX - param_1;
  if (param_1 != in_EAX) {
    do {
      in_EAX = in_EAX + -0x58;
      FUN_00699ddc();
    } while (in_EAX != param_1);
  }
  return param_2 + (iVar1 / 0x58) * -0x58;
}



int FUN_006a397d(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = in_EAX - param_1;
  if (param_1 != in_EAX) {
    do {
      in_EAX = in_EAX + -0x68;
      FUN_00699515();
    } while (in_EAX != param_1);
  }
  return param_2 + (iVar1 / 0x68) * -0x68;
}



void FUN_006a39c3(undefined4 param_1,undefined4 param_2)

{
  FUN_006994bf(param_1,param_2,param_2,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a3b53(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a3b5f;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::W15DB837A::W86B9C6F5::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::W15DB837A::W86B9C6F5::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a3c09(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a3c15;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::W15DB837A::W6B070BE6::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::W15DB837A::W6B070BE6::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a3cbf(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a3ccb;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::W15DB837A::WCB6F3D5D::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::W15DB837A::WCB6F3D5D::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a3d75(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a3d81;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::W15DB837A::W6634A465::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::W15DB837A::W6634A465::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a3e2b(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a3e37;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD1C3C411::WF9118BC3::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD1C3C411::WF9118BC3::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a3ee1(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a3eed;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD1C3C411::WCDDBDBF5::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD1C3C411::WCDDBDBF5::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a3f97(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a3fa3;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD1C3C411::W41C9D6EF::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD1C3C411::W41C9D6EF::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a404d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a4059;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD1C3C411::W56C8E7BA::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD1C3C411::W56C8E7BA::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a4103(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a410f;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD1C3C411::W29C49F09::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD1C3C411::W29C49F09::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a41b9(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a41c5;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD1C3C411::WF6346023::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD1C3C411::WF6346023::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a426f(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a427b;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD1C3C411::W36EDE25D::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD1C3C411::W36EDE25D::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a4325(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a4331;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD1C3C411::WC8BA1E38::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD1C3C411::WC8BA1E38::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a43db(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a43e7;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD1C3C411::WA275561E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD1C3C411::WA275561E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a4491(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a449d;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD1C3C411::W62CF6A5E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD1C3C411::W62CF6A5E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a4547(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a4553;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD1C3C411::W8D43B913::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD1C3C411::W8D43B913::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a45fd(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a4609;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD1C3C411::W5B0FD797::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD1C3C411::W5B0FD797::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a46b3(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a46bf;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD1C3C411::W01246002::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD1C3C411::W01246002::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a4769(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a4775;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD72F1F4B::W6E9B899C::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD72F1F4B::W6E9B899C::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a481f(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a482b;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD72F1F4B::WEE3000FF::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD72F1F4B::WEE3000FF::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a48d5(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a48e1;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD72F1F4B::W151127E5::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD72F1F4B::W151127E5::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a498b(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a4997;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WBDE613C5::W6787DB3A::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WBDE613C5::W6787DB3A::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a4a41(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a4a4d;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WBDE613C5::WAA825ABA::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WBDE613C5::WAA825ABA::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006a4af7(int param_1,int param_2)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    FUN_00699e55(param_1);
    param_1 = param_1 + 0x58;
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_006a4b27(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 8); iVar1 = iVar1 + 0x58)
  {
    FUN_0068f611();
  }
  __CxxThrowException_8(0,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006a4b48(int param_1,int param_2)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    FUN_0069968c(param_1);
    param_1 = param_1 + 0x68;
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_006a4b78(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 8); iVar1 = iVar1 + 0x68)
  {
    FUN_0068f63b();
  }
  __CxxThrowException_8(0,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006a4b99(undefined4 param_1,int param_2)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    FUN_006996b7();
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_006a4bc9(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 8); iVar1 = iVar1 + 0x38)
  {
    FUN_00401829(1,0);
  }
  __CxxThrowException_8(0,0);
  return;
}



void __thiscall FUN_006a4bee(int param_1_00,short *param_1)

{
  short sVar1;
  short *psVar2;
  
  psVar2 = param_1;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  FUN_004129cd(0,*(undefined4 *)(param_1_00 + 0x14),param_1,(int)psVar2 - (int)(param_1 + 1) >> 1);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a4c17(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WBDE613C5::W42E255B9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a4c5d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a4c74(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WBDE613C5::WFC4070F1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a4cba(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a4cd1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W15DB837A::W86B9C6F5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a4d17(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a4d2e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W15DB837A::W6B070BE6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a4d74(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a4d8b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W15DB837A::WCB6F3D5D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a4dd1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a4de8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W15DB837A::W6634A465>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a4e2e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a4e45(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::W9FB55879>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a4e8b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a4ea2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::WCDDBDBF5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a4ee8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a4eff(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::W41C9D6EF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a4f45(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a4f5c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::W56C8E7BA>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a4fa2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a4fb9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::W29C49F09>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a4fff(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a5016(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::WF6346023>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a505c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a5073(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::W36EDE25D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a50b9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a50d0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::WC8BA1E38>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a5116(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a512d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::WA275561E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a5173(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a518a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::W62CF6A5E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a51d0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a51e7(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::W8D43B913>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a522d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a5244(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::W5B0FD797>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a528a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a52a1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::W01246002>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a52e7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a52fe(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::WA90ADCC4>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a5344(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a535b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD72F1F4B::W6E9B899C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a53a1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a53b8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD72F1F4B::WEE3000FF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a53fe(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a5415(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD72F1F4B::W151127E5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a545b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a5472(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD72F1F4B::W546FF548>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a54b8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a54cf(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD72F1F4B::WCD676C77>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a5515(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a552c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD72F1F4B::WEA11876F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a5572(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006a55cf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x30) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_006a55dc(int param_1)

{
  if (*(char *)(param_1 + 0x10) != '\0') {
    FUN_0041c33b(0);
    *(undefined *)(param_1 + 0x10) = 0;
  }
  return;
}



uint __thiscall FUN_006a55f5(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::
                              sp_ms_deleter<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>
                              ::RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



undefined4 * __thiscall FUN_006a5616(undefined4 *param_1_00,byte param_1)

{
  if (*(char *)(param_1_00 + 4) != '\0') {
    FUN_0041c33b(0);
    *(undefined *)(param_1_00 + 4) = 0;
  }
  *param_1_00 = boost::detail::sp_counted_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a5647(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::WF9118BC3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a568d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a56a4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WBDE613C5::W6787DB3A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a56ea(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a5701(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WBDE613C5::WAA825ABA>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a5747(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a575e(undefined4 param_1_00,byte param_1)

{
  FUN_006ad47c();
  FUN_006ae57c();
  FUN_006adb03(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006a57ab(undefined4 param_1)

{
  FUN_006ad47c();
  FUN_006ad47c();
  FUN_006ad47c();
  FUN_006ae1f5();
  FUN_006ae57c();
  FUN_006ae57c();
  FUN_006ae1f5();
  FUN_006ae57c();
  FUN_006adb03(param_1);
  return;
}



undefined4 __thiscall FUN_006a583e(undefined4 param_1_00,byte param_1)

{
  FUN_006a57ab(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a585b(undefined4 param_1_00,byte param_1)

{
  FUN_006ad47c();
  FUN_006ae1f5();
  FUN_006ad848(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a58ab(undefined4 param_1_00,byte param_1)

{
  FUN_006a753e();
  FUN_006ad848(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a58e9(undefined4 param_1_00,byte param_1)

{
  FUN_006a753e();
  FUN_006ae1f5();
  FUN_006ad47c();
  FUN_006ad47c();
  FUN_006ad848(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a5957(undefined4 param_1_00,byte param_1)

{
  FUN_006a753e();
  FUN_006ad47c();
  FUN_006ad848(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a59a7(undefined4 param_1_00,byte param_1)

{
  FUN_006a753e();
  FUN_006ad47c();
  FUN_006ad47c();
  FUN_006ad848(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a5a06(undefined4 param_1_00,byte param_1)

{
  FUN_006ad47c();
  FUN_006ad47c();
  FUN_006ad848(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a5a56(undefined4 param_1_00,byte param_1)

{
  FUN_006ae354();
  FUN_006a84a1();
  FUN_006ae57c();
  FUN_006adb03(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006a5ab2(undefined4 param_1)

{
  FUN_006ae57c();
  FUN_006ae57c();
  FUN_006ad47c();
  FUN_006ad47c();
  FUN_006ad47c();
  FUN_006ae1f5();
  FUN_006ad848(param_1);
  return;
}



undefined4 __thiscall FUN_006a5b2d(undefined4 param_1_00,byte param_1)

{
  FUN_006a5ab2(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a5b4a(undefined4 param_1_00,byte param_1)

{
  FUN_006ad47c();
  FUN_006ad47c();
  FUN_006ae1f5();
  FUN_006ad848(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a5ba9(undefined4 param_1_00,byte param_1)

{
  FUN_006a948a();
  FUN_006ae1f5();
  FUN_006ad848(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a5bf9(undefined4 param_1_00,byte param_1)

{
  FUN_006ad47c();
  FUN_006ad47c();
  FUN_006aaf33();
  FUN_006ad848(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a5c58(undefined4 param_1_00,byte param_1)

{
  FUN_006ad47c();
  FUN_006aaf33();
  FUN_006ad848(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a5ca8(undefined4 param_1_00,byte param_1)

{
  FUN_006abfe3();
  FUN_006aa4e5();
  FUN_006adb03(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a5cf5(undefined4 param_1_00,byte param_1)

{
  FUN_006acca0();
  FUN_006adb03(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006a5d33(undefined4 param_1_00,byte param_1)

{
  FUN_006adb03(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006a5d50(undefined4 param_1)

{
  FUN_006ad5ca();
  FUN_006ad12b();
  FUN_006ad5ca();
  FUN_006ad12b();
  FUN_006ae1f5();
  FUN_006ae1f5();
  FUN_006ae57c();
  FUN_006ae1f5();
  FUN_006adb03(param_1);
  return;
}



undefined4 __thiscall FUN_006a5de3(undefined4 param_1_00,byte param_1)

{
  FUN_006a5d50(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_006a5e46(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006a5f15(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006a5f9e(undefined4 *param_1_00,byte param_1)

{
  FUN_00417f97();
  FUN_00688539();
  if (*(char *)(param_1_00 + 4) != '\0') {
    *(undefined *)(param_1_00 + 4) = 0;
  }
  if (*(char *)(param_1_00 + 1) != '\0') {
    *(undefined *)(param_1_00 + 1) = 0;
  }
  *param_1_00 = W14E3BFCC::WD9A2B50E::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_006a6025(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006a60f4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006a61c3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006a6292(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006a631b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W14E3BFCC::WD9A2B50E::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_006a637e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_006a6395(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x60))(param_1_00);
  return;
}



void Catch_All_006a645d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006a652c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006a65fb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006a66ca(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006a6799(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006a6868(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006a6937(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_006a6a08(void)

{
  return 0x40001002;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a6a0e(undefined4 *param_1)

{
  FUN_006ad8c1(param_1);
  *param_1 = WF8266037::WBDE613C5::WAA825ABA::vftable;
  FUN_006ae387(param_1 + 0x15);
  FUN_006ad58d(param_1 + 0x19);
  return param_1;
}



undefined4 __fastcall FUN_006a6a5b(undefined4 param_1)

{
  FUN_006ad7fd();
  return param_1;
}



undefined4 __fastcall FUN_006a6a6c(undefined4 param_1)

{
  FUN_006ad7fd();
  return param_1;
}



undefined4 FUN_006a6b17(void)

{
  return 0x40001001;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a6b1d(undefined4 *param_1)

{
  FUN_006ad8c1(param_1);
  *param_1 = WF8266037::WBDE613C5::W6787DB3A::vftable;
  FUN_006ae387(param_1 + 0x15);
  FUN_006adfbb(param_1 + 0x19);
  FUN_006ae387(param_1 + 0x1d);
  FUN_006ae387(param_1 + 0x21);
  FUN_006adfbb(param_1 + 0x25);
  FUN_006ad58d(param_1 + 0x29);
  FUN_006ad58d(param_1 + 0x2d);
  FUN_006ad58d(param_1 + 0x31);
  return param_1;
}



void FUN_006a6bf1(int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 uStack_10;
  
  uStack_10 = 0x6a6bfc;
  uVar1 = 4;
  puVar2 = (undefined4 *)operator_new(4);
  uStack_10 = uVar1;
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = param_2;
    uStack_10 = param_2;
  }
  FUN_006ae140(&uStack_10);
  FUN_006aceba(param_1 + 0x44);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a6c2a(undefined4 param_1,undefined4 param_2)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x0000000c);
}



undefined4 FUN_006a6c76(void)

{
  return 0x40020006;
}



undefined4 FUN_006a6cb4(void)

{
  return 0x40020001;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a6cba(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD1C3C411::W01246002::vftable;
  FUN_006ad58d(param_1 + 0x1d);
  FUN_006ad58d(param_1 + 0x21);
  FUN_006adfbb(param_1 + 0x25);
  FUN_006a6daa(param_1 + 0x29,param_1,0x20010003);
  return param_1;
}



undefined4 FUN_006a6d37(void)

{
  return 0x40003112;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a6d3d(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD1C3C411::W5B0FD797::vftable;
  FUN_006ad58d(param_1 + 0x1d);
  FUN_006a6daa(param_1 + 0x21,param_1,0x3120004);
  return param_1;
}



undefined4 FUN_006a6d8c(void)

{
  return 0x40003111;
}



void FUN_006a6d92(void)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x10);
  if (pvVar1 != (void *)0x0) {
    *(void **)pvVar1 = pvVar1;
  }
  if ((void **)((int)pvVar1 + 4) != (void **)0x0) {
    *(void **)((int)pvVar1 + 4) = pvVar1;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a6daa(undefined4 *param_1,int param_2,undefined4 param_3)

{
  int *piVar1;
  undefined4 uVar2;
  
  *param_1 = WF8266037::W2AC8B1F5::
             W8EAEAA23<class_WF8266037::W2AC8B1F5::W329C7FF8<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
             ::vftable;
  *(undefined *)(param_1 + 2) = 0;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 3);
  }
  param_1[3] = piVar1;
  uVar2 = FUN_006a6d92();
  param_1[8] = uVar2;
  param_1[9] = 0;
  param_1[1] = param_3;
  if (param_2 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_006a6e15(undefined4 param_1_00,byte param_1)

{
  FUN_006a753e();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



char __fastcall FUN_006a6e31(int param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int **ppiVar6;
  undefined4 *local_74;
  undefined4 *local_70;
  int local_6c;
  undefined4 *local_68;
  int iStack_60;
  int iStack_5c;
  int *local_58;
  int iStack_54;
  undefined local_50 [8];
  undefined4 uStack_48;
  undefined4 uStack_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c39a10;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_14;
  local_6c = param_1;
  FUN_00b72ec0(local_50);
  local_c = 0;
  puVar4 = (undefined4 *)FUN_00bb60c0(&local_74,uVar3);
  puVar5 = (undefined4 *)*puVar4;
  *puVar4 = 0;
  local_c = CONCAT31(local_c._1_3_,1);
  local_70 = puVar5;
  local_68 = puVar5;
  if (local_74 != (undefined4 *)0x0) {
    (**(code **)*local_74)(1);
  }
  cVar2 = FUN_00bb13e0(puVar5);
  if (cVar2 == '\0') {
    FUN_00b940e0(0xe0ee14b8);
    puVar5 = local_70;
  }
  local_c = local_c & 0xffffff00;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  if (cVar2 != '\0') {
    puVar5 = (undefined4 *)operator_new(0x10);
    if (puVar5 != (undefined4 *)0x0) {
      *puVar5 = WF8266037::W2AC8B1F5::
                W329C7FF8<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>
                ::vftable;
      puVar5[1] = 0;
      puVar5[2] = 0;
      puVar5[3] = 0;
    }
    FUN_006a71b8(&local_58);
    local_c._0_1_ = 2;
    (**(code **)(*local_58 + 0x10))();
    local_c._0_1_ = 0;
    if (iStack_54 != 0) {
      FUN_0040127a();
    }
    puVar4 = (undefined4 *)FUN_00bb60c0(&local_70);
    puVar5 = (undefined4 *)*puVar4;
    *puVar4 = 0;
    local_c = CONCAT31(local_c._1_3_,3);
    local_74 = puVar5;
    local_68 = puVar5;
    if (local_70 != (undefined4 *)0x0) {
      (**(code **)*local_70)(1);
    }
    cVar2 = FUN_00bb13e0(puVar5);
    if (cVar2 == '\0') {
      FUN_00b940e0(0xe9afb0db);
      puVar5 = local_74;
    }
    local_c = local_c & 0xffffff00;
    if (puVar5 != (undefined4 *)0x0) {
      (**(code **)*puVar5)(1);
    }
  }
  iStack_5c = **(int **)(param_1 + 0x20);
  iStack_60 = *(int *)(param_1 + 0xc);
  if (cVar2 != '\0') {
    iVar1 = *(int *)(param_1 + 0x20);
    if ((iStack_60 == 0) || (iStack_60 != *(int *)(param_1 + 0xc))) {
      FUN_00a3fb10();
    }
    if (iStack_5c != iVar1) {
      local_74 = (undefined4 *)0x0;
      ppiVar6 = (int **)FUN_006adbc2();
      local_58 = *ppiVar6;
                    // WARNING: Subroutine does not return
      FUN_0043c023(ppiVar6 + 1);
    }
    if (cVar2 != '\0') {
      uStack_48 = 0;
      uStack_44 = 0;
      cVar2 = FUN_00bb1450(0xffffffff);
      if (cVar2 == '\0') {
        FUN_00b940e0(0xf42fddd9);
      }
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return cVar2;
}



undefined4 __thiscall FUN_006a713f(undefined4 param_1_00,byte param_1)

{
  FUN_006ae57c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a715b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W329C7FF8<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a71a1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a71b8(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a715b(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a7205(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a7211;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                   &WF8266037::W2AC8B1F5::
                    W329C7FF8<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>
                    ::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                           &WF8266037::W2AC8B1F5::
                            W329C7FF8<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>
                            ::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



char FUN_006a72bb(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int **ppiVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  int local_4c;
  undefined4 *puStack_48;
  uint local_44;
  undefined4 local_40;
  int local_3c;
  uint local_38;
  int iStack_34;
  int *local_30;
  int iStack_2c;
  undefined auStack_28 [4];
  int iStack_24;
  undefined auStack_20 [4];
  int iStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c32eb0;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_14;
  cVar2 = FUN_00bb64e0(&local_38,0,uVar3);
  if (cVar2 == '\0') {
    FUN_00b940e0(0x2fe87715);
  }
  local_4c = 4;
  if (cVar2 != '\0') {
    cVar2 = FUN_00bb64e0(&local_40,0,uVar3);
    if (cVar2 == '\0') {
      FUN_00b940e0(0x54bc2114);
    }
    local_4c = 8;
    if (cVar2 != '\0') {
      ppiVar4 = (int **)FUN_0042efbd();
      local_c = 0;
      cVar2 = (**(code **)(**ppiVar4 + 4))(&local_40,local_40);
      local_c = 0xffffffff;
      if (iStack_2c != 0) {
        FUN_0040127a();
      }
      if (cVar2 == '\0') {
        FUN_00b940e0(0x968fabb9);
      }
    }
  }
  local_44 = 0;
  if (cVar2 != '\0') {
    do {
      if (local_38 <= local_44) break;
      if (cVar2 != '\0') {
        cVar2 = FUN_00bb64e0(&iStack_34,0,uVar3);
        local_4c = local_4c + 4;
        if (cVar2 == '\0') {
          FUN_00b940e0(0x2e894410);
        }
      }
      iVar1 = iStack_34;
      puStack_48 = (undefined4 *)0x0;
      local_c = 1;
      if (cVar2 != '\0') {
        cVar2 = FUN_00bb6360(&puStack_48,param_2,local_4c);
        local_4c = local_4c + iVar1;
        if (cVar2 == '\0') {
          FUN_00b940e0(0x6aa6f47f);
        }
      }
      local_30 = (int *)0x0;
      iStack_2c = 0;
      local_c._0_1_ = 2;
      if (cVar2 != '\0') {
        puVar5 = (undefined4 *)operator_new(0x10);
        if (puVar5 != (undefined4 *)0x0) {
          *puVar5 = WF8266037::W2AC8B1F5::
                    W329C7FF8<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>
                    ::vftable;
          puVar5[1] = 0;
          puVar5[2] = 0;
          puVar5[3] = 0;
        }
        FUN_006a71b8(auStack_28);
        FUN_0046f668();
        if (iStack_24 != 0) {
          FUN_0040127a();
        }
        cVar2 = (**(code **)(*local_30 + 8))(param_1,puStack_48);
        if (cVar2 == '\0') {
          FUN_00b940e0(0xf6386ffd);
        }
        else {
          uVar6 = FUN_006a7205(auStack_20,&local_30);
          local_c._0_1_ = 3;
          FUN_006a90d6(uVar6,*(undefined4 *)(local_3c + 0xc),*(undefined4 *)(local_3c + 0x20));
          local_c._0_1_ = 2;
          if (iStack_1c != 0) {
            FUN_0040127a();
          }
        }
      }
      local_c = CONCAT31(local_c._1_3_,1);
      if (iStack_2c != 0) {
        FUN_0040127a();
      }
      local_c = 0xffffffff;
      if (puStack_48 != (undefined4 *)0x0) {
        (**(code **)*puStack_48)(1);
      }
      local_44 = local_44 + 1;
    } while (cVar2 != '\0');
    if (cVar2 != '\0') {
      *(undefined *)(local_3c + 8) = 1;
    }
  }
  ExceptionList = local_14;
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006a753e(undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::
             W8EAEAA23<class_WF8266037::W2AC8B1F5::W329C7FF8<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>
             ::vftable;
  FUN_006acc6b(param_1 + 3);
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a756e(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD1C3C411::W8D43B913::vftable;
  FUN_006ad58d(param_1 + 0x1d);
  FUN_006ad58d(param_1 + 0x21);
  FUN_006a6daa(param_1 + 0x25,param_1,0x3110004);
  return param_1;
}



undefined4 FUN_006a761c(void)

{
  return 0x40003110;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a7622(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD1C3C411::W62CF6A5E::vftable;
  FUN_006ad58d(param_1 + 0x1d);
  FUN_006ad58d(param_1 + 0x21);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a7672(undefined4 param_1,undefined4 param_2)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x0000000c);
}



undefined4 FUN_006a76bc(void)

{
  return 0x4000310f;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a76c2(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD1C3C411::WA275561E::vftable;
  FUN_006ad58d(param_1 + 0x1d);
  FUN_006ad58d(param_1 + 0x21);
  return param_1;
}



undefined4 FUN_006a7848(void)

{
  return 0x40004002;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a784e(undefined4 *param_1,int param_2)

{
  int *piVar1;
  undefined4 uVar2;
  
  *param_1 = WF8266037::W2AC8B1F5::
             W8EAEAA23<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W2840E2A0>_>
             ::vftable;
  *(undefined *)(param_1 + 2) = 0;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 3);
  }
  param_1[3] = piVar1;
  uVar2 = FUN_006a6d92();
  param_1[8] = uVar2;
  param_1[9] = 0;
  param_1[1] = 0x4020002;
  if (param_2 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_006a78ba(undefined4 param_1_00,byte param_1)

{
  FUN_006a84a1();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



char FUN_006a78d6(void)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int iVar6;
  char local_75;
  undefined4 *local_74;
  int local_70;
  undefined4 *local_68;
  int *piStack_60;
  int iStack_5c;
  int *local_58;
  int iStack_54;
  undefined local_50 [8];
  undefined4 uStack_48;
  undefined4 uStack_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c39980;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_14;
  FUN_00b72ec0(local_50);
  local_c = 0;
  piVar3 = (int *)FUN_00bb60c0(&local_74,uVar2);
  puVar4 = (undefined4 *)*piVar3;
  *piVar3 = 0;
  local_c = CONCAT31(local_c._1_3_,1);
  local_68 = puVar4;
  if (local_74 != (undefined4 *)0x0) {
    (**(code **)*local_74)(1);
  }
  local_75 = FUN_00bb13e0(puVar4);
  if (local_75 == '\0') {
    FUN_00b940e0(0xe0ee14b8);
  }
  local_c = local_c & 0xffffff00;
  if (puVar4 != (undefined4 *)0x0) {
    (**(code **)*puVar4)(1);
  }
  if (local_75 != '\0') {
    puVar4 = (undefined4 *)operator_new(0x10);
    if (puVar4 != (undefined4 *)0x0) {
      *puVar4 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W2840E2A0>::vftable;
      puVar4[1] = 0;
      puVar4[2] = 0;
      puVar4[3] = 0;
    }
    FUN_006a7d0b(&local_58);
    local_c._0_1_ = 2;
    (**(code **)(*local_58 + 0x10))();
    local_c._0_1_ = 0;
    if (iStack_54 != 0) {
      FUN_0040127a();
    }
    puVar5 = (undefined4 *)FUN_00bb60c0(&local_74);
    puVar4 = (undefined4 *)*puVar5;
    *puVar5 = 0;
    local_c = CONCAT31(local_c._1_3_,3);
    local_68 = puVar4;
    if (local_74 != (undefined4 *)0x0) {
      (**(code **)*local_74)(1);
    }
    local_75 = FUN_00bb13e0(puVar4);
    if (local_75 == '\0') {
      FUN_00b940e0(0xe9afb0db);
    }
    local_c = local_c & 0xffffff00;
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)(1);
    }
  }
  iVar1 = **(int **)(local_70 + 0x20);
  piStack_60 = *(int **)(local_70 + 0xc);
  iStack_5c = iVar1;
  if (local_75 != '\0') {
    iVar6 = *(int *)(local_70 + 0x20);
    if ((piStack_60 == (int *)0x0) || (piStack_60 != *(int **)(local_70 + 0xc))) {
      FUN_00a3fb10();
    }
    if (iVar1 != iVar6) {
      local_74 = (undefined4 *)0x0;
      if (piStack_60 == (int *)0x0) {
        FUN_00a3fb10();
        iVar6 = 0;
      }
      else {
        iVar6 = *piStack_60;
      }
      if (iVar1 == *(int *)(iVar6 + 0x14)) {
        FUN_00a3fb10();
      }
      local_58 = *(int **)(iVar1 + 8);
                    // WARNING: Subroutine does not return
      FUN_0043c023(iVar1 + 0xc);
    }
    if (local_75 != '\0') {
      uStack_48 = 0;
      uStack_44 = 0;
      local_75 = FUN_00bb1450(0xffffffff);
      if (local_75 == '\0') {
        FUN_00b940e0(0xf42fddd9);
      }
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return local_75;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006a7c5f(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c118e1;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W2840E2A0>::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return puVar1;
}



undefined4 __thiscall FUN_006a7c92(undefined4 param_1_00,byte param_1)

{
  FUN_006a7c5f();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a7cae(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W2840E2A0>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a7cf4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a7d0b(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a7cae(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a7d58(void)

{
  undefined local_c [4];
  int local_8;
  
  FUN_006a7d0b(local_c);
  FUN_0046f668();
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return;
}



char __thiscall FUN_006a7d80(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  char local_69;
  undefined4 *local_68;
  int local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined local_50 [8];
  undefined4 local_48;
  undefined4 local_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c398f3;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_14;
  local_69 = '\x01';
  FUN_00b72ec0(local_50);
  local_c = 0;
  iVar3 = *(int *)(param_1_00 + 8);
  local_5c = **(undefined4 **)(iVar3 + 0x1c);
  local_60 = *(undefined4 *)(iVar3 + 8);
  local_64 = iVar3;
  do {
    local_54 = *(undefined4 *)(iVar3 + 0x1c);
    local_58 = *(undefined4 *)(iVar3 + 8);
    cVar1 = FUN_0041c034(uVar2);
    if (cVar1 == '\0') break;
    local_68 = (undefined4 *)0x0;
    local_c._0_1_ = 1;
    puVar4 = (undefined4 *)0x0;
    if (local_69 != '\0') {
      FUN_006adbc2();
      local_69 = FUN_006bc9b5(param_2,&local_68);
      puVar4 = local_68;
      if (local_69 == '\0') {
        FUN_00b940e0(0xf409d81b);
        puVar4 = local_68;
      }
      else if ((local_68[2] != 0) &&
              (local_69 = FUN_00bb13e0(local_68), iVar3 = local_64, local_69 == '\0')) {
        FUN_00b940e0(0xccb86cc2);
        iVar3 = local_64;
      }
    }
    local_c = (uint)local_c._1_3_ << 8;
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)(1);
    }
    FUN_007a741a();
  } while (local_69 != '\0');
  if (local_69 != '\0') {
    local_48 = 0;
    local_44 = 0;
    local_69 = FUN_00bb1450(0xffffffff);
    if (local_69 == '\0') {
      FUN_00b940e0(0xccad8780);
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return local_69;
}



char __thiscall FUN_006a7ef9(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char local_5;
  
  local_5 = '\x01';
  FUN_006a80b1(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return local_5;
    }
    local_5 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (local_5 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006a7f53(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006a80b1(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006a7f68. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a7f6b(undefined4 param_1_00,byte param_1)

{
  FUN_006ad47c();
  FUN_006ae57c();
  FUN_006bebbe();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a7fb5(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::W2840E2A0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a7ffb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a8012(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a7fb5(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



undefined4 FUN_006a805f(void)

{
  return 0x40010007;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a8065(undefined4 *param_1)

{
  FUN_006adf6e();
  *param_1 = WF8266037::WD1C3C411::W2840E2A0::vftable;
  FUN_006ae387(param_1 + 9);
  FUN_006ad58d(param_1 + 0xd);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006a80b1(void)

{
  undefined local_18 [4];
  void *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x6a80bd;
  local_14 = operator_new(0x44);
  local_8 = 0;
  if (local_14 != (void *)0x0) {
    FUN_006a8065(local_14);
  }
  local_8 = 0xffffffff;
  FUN_006a8012(local_18);
  FUN_0046f668();
  if (local_14 != (void *)0x0) {
    FUN_0040127a();
  }
  return;
}



void __thiscall FUN_006a810a(int param_1_00,undefined4 *param_1)

{
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006a80b1(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a813e(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a814a;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                   &WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W2840E2A0>::
                    RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                           &WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W2840E2A0>::
                            RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



char FUN_006a81f4(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int **ppiVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  int local_44;
  undefined4 *puStack_40;
  uint local_3c;
  undefined4 local_38;
  int local_34;
  uint local_30;
  int iStack_2c;
  int *local_28;
  int iStack_24;
  undefined auStack_20 [4];
  int iStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c32e75;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  cVar2 = FUN_00bb64e0(&local_30,0,uVar3);
  if (cVar2 == '\0') {
    FUN_00b940e0(0x2fe87715);
  }
  local_44 = 4;
  if (cVar2 != '\0') {
    cVar2 = FUN_00bb64e0(&local_38,0,uVar3);
    if (cVar2 == '\0') {
      FUN_00b940e0(0x54bc2114);
    }
    local_44 = 8;
    if (cVar2 != '\0') {
      ppiVar4 = (int **)FUN_0042efbd();
      local_c = 0;
      cVar2 = (**(code **)(**ppiVar4 + 4))(&local_38,local_38);
      local_c = 0xffffffff;
      if (iStack_24 != 0) {
        FUN_0040127a();
      }
      if (cVar2 == '\0') {
        FUN_00b940e0(0x968fabb9);
      }
    }
  }
  local_3c = 0;
  if (cVar2 != '\0') {
    do {
      if (local_30 <= local_3c) break;
      if (cVar2 != '\0') {
        cVar2 = FUN_00bb64e0(&iStack_2c,0,uVar3);
        local_44 = local_44 + 4;
        if (cVar2 == '\0') {
          FUN_00b940e0(0x2e894410);
        }
      }
      iVar1 = iStack_2c;
      puStack_40 = (undefined4 *)0x0;
      local_c = 1;
      if (cVar2 != '\0') {
        cVar2 = FUN_00bb6360(&puStack_40,param_2,local_44);
        local_44 = local_44 + iVar1;
        if (cVar2 == '\0') {
          FUN_00b940e0(0x6aa6f47f);
        }
      }
      local_28 = (int *)0x0;
      iStack_24 = 0;
      local_c._0_1_ = 2;
      if (cVar2 != '\0') {
        puVar5 = (undefined4 *)operator_new(0x10);
        if (puVar5 != (undefined4 *)0x0) {
          *puVar5 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W2840E2A0>::vftable;
          puVar5[1] = 0;
          puVar5[2] = 0;
          puVar5[3] = 0;
        }
        FUN_006a7d58(&local_28);
        cVar2 = (**(code **)(*local_28 + 8))(param_1,puStack_40);
        if (cVar2 == '\0') {
          FUN_00b940e0(0xf6386ffd);
        }
        else {
          uVar6 = FUN_006a813e(auStack_20,&local_28);
          local_c._0_1_ = 3;
          FUN_006a90d6(uVar6,*(undefined4 *)(local_34 + 0xc),*(undefined4 *)(local_34 + 0x20));
          local_c._0_1_ = 2;
          if (iStack_1c != 0) {
            FUN_0040127a();
          }
        }
      }
      local_c = CONCAT31(local_c._1_3_,1);
      if (iStack_24 != 0) {
        FUN_0040127a();
      }
      local_c = 0xffffffff;
      if (puStack_40 != (undefined4 *)0x0) {
        (**(code **)*puStack_40)(1);
      }
      local_3c = local_3c + 1;
    } while (cVar2 != '\0');
    if (cVar2 != '\0') {
      *(undefined *)(local_34 + 8) = 1;
    }
  }
  ExceptionList = local_14;
  return cVar2;
}



void FUN_006a845f(void)

{
  FUN_006a846a();
  return;
}



void FUN_006a846a(void)

{
  int *piVar1;
  int iVar2;
  int unaff_ESI;
  
  piVar1 = *(int **)(unaff_ESI + 0x14);
  iVar2 = *piVar1;
  *piVar1 = (int)piVar1;
  *(int *)(*(int *)(unaff_ESI + 0x14) + 4) = *(int *)(unaff_ESI + 0x14);
  *(undefined4 *)(unaff_ESI + 0x18) = 0;
  if (iVar2 != *(int *)(unaff_ESI + 0x14)) {
    if (*(int *)(iVar2 + 0xc) != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006a84a1(undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::
             W8EAEAA23<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W2840E2A0>_>
             ::vftable;
  FUN_006acc6b(param_1 + 3);
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a84d1(undefined4 *param_1)

{
  FUN_006ad8c1(param_1);
  *param_1 = WF8266037::WD1C3C411::WC8BA1E38::vftable;
  FUN_006ae387(param_1 + 0x15);
  FUN_006a784e(param_1 + 0x19,param_1);
  FUN_006adb65(param_1 + 0x23);
  return param_1;
}



undefined4 __fastcall FUN_006a852a(undefined4 param_1)

{
  FUN_006ad7fd();
  return param_1;
}



undefined4 FUN_006a861d(void)

{
  return 0x4000310e;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a8623(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD1C3C411::W36EDE25D::vftable;
  FUN_006adfbb(param_1 + 0x1d);
  FUN_006ad58d(param_1 + 0x21);
  FUN_006ad58d(param_1 + 0x25);
  FUN_006ad58d(param_1 + 0x29);
  FUN_006ae387(param_1 + 0x2d);
  FUN_006ae387(param_1 + 0x31);
  return param_1;
}



undefined4 FUN_006a86cf(void)

{
  return 0x4000310d;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a86d5(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD1C3C411::WF6346023::vftable;
  FUN_006adfbb(param_1 + 0x1d);
  FUN_006ad58d(param_1 + 0x21);
  FUN_006ad58d(param_1 + 0x25);
  return param_1;
}



undefined4 __fastcall FUN_006a873c(undefined4 param_1)

{
  FUN_006ad7fd();
  return param_1;
}



undefined4 FUN_006a8883(void)

{
  return 0x4000310c;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a8889(undefined4 *param_1,int param_2)

{
  int *piVar1;
  undefined4 uVar2;
  
  *param_1 = WF8266037::W2AC8B1F5::
             W8EAEAA23<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W63FB247D>_>
             ::vftable;
  *(undefined *)(param_1 + 2) = 0;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 3);
  }
  param_1[3] = piVar1;
  uVar2 = FUN_006a6d92();
  param_1[8] = uVar2;
  param_1[9] = 0;
  param_1[1] = 0x30c0003;
  if (param_2 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_006a88f5(undefined4 param_1_00,byte param_1)

{
  FUN_006a948a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



char __fastcall FUN_006a8911(int param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int **ppiVar6;
  undefined4 *local_74;
  undefined4 *local_70;
  int local_6c;
  undefined4 *local_68;
  int iStack_60;
  int iStack_5c;
  int *local_58;
  int iStack_54;
  undefined local_50 [8];
  undefined4 uStack_48;
  undefined4 uStack_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c39a10;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_14;
  local_6c = param_1;
  FUN_00b72ec0(local_50);
  local_c = 0;
  puVar4 = (undefined4 *)FUN_00bb60c0(&local_74,uVar3);
  puVar5 = (undefined4 *)*puVar4;
  *puVar4 = 0;
  local_c = CONCAT31(local_c._1_3_,1);
  local_70 = puVar5;
  local_68 = puVar5;
  if (local_74 != (undefined4 *)0x0) {
    (**(code **)*local_74)(1);
  }
  cVar2 = FUN_00bb13e0(puVar5);
  if (cVar2 == '\0') {
    FUN_00b940e0(0xe0ee14b8);
    puVar5 = local_70;
  }
  local_c = local_c & 0xffffff00;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  if (cVar2 != '\0') {
    puVar5 = (undefined4 *)operator_new(0x10);
    if (puVar5 != (undefined4 *)0x0) {
      *puVar5 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W63FB247D>::vftable;
      puVar5[1] = 0;
      puVar5[2] = 0;
      puVar5[3] = 0;
    }
    FUN_006a8ccb(&local_58);
    local_c._0_1_ = 2;
    (**(code **)(*local_58 + 0x10))();
    local_c._0_1_ = 0;
    if (iStack_54 != 0) {
      FUN_0040127a();
    }
    puVar4 = (undefined4 *)FUN_00bb60c0(&local_70);
    puVar5 = (undefined4 *)*puVar4;
    *puVar4 = 0;
    local_c = CONCAT31(local_c._1_3_,3);
    local_74 = puVar5;
    local_68 = puVar5;
    if (local_70 != (undefined4 *)0x0) {
      (**(code **)*local_70)(1);
    }
    cVar2 = FUN_00bb13e0(puVar5);
    if (cVar2 == '\0') {
      FUN_00b940e0(0xe9afb0db);
      puVar5 = local_74;
    }
    local_c = local_c & 0xffffff00;
    if (puVar5 != (undefined4 *)0x0) {
      (**(code **)*puVar5)(1);
    }
  }
  iStack_5c = **(int **)(param_1 + 0x20);
  iStack_60 = *(int *)(param_1 + 0xc);
  if (cVar2 != '\0') {
    iVar1 = *(int *)(param_1 + 0x20);
    if ((iStack_60 == 0) || (iStack_60 != *(int *)(param_1 + 0xc))) {
      FUN_00a3fb10();
    }
    if (iStack_5c != iVar1) {
      local_74 = (undefined4 *)0x0;
      ppiVar6 = (int **)FUN_006adbc2();
      local_58 = *ppiVar6;
                    // WARNING: Subroutine does not return
      FUN_0043c023(ppiVar6 + 1);
    }
    if (cVar2 != '\0') {
      uStack_48 = 0;
      uStack_44 = 0;
      cVar2 = FUN_00bb1450(0xffffffff);
      if (cVar2 == '\0') {
        FUN_00b940e0(0xf42fddd9);
      }
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006a8c1f(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c118e1;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W63FB247D>::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return puVar1;
}



undefined4 __thiscall FUN_006a8c52(undefined4 param_1_00,byte param_1)

{
  FUN_006a8c1f();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a8c6e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W63FB247D>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a8cb4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a8ccb(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a8c6e(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



char __thiscall FUN_006a8d18(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  char local_69;
  undefined4 *local_68;
  int local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined local_50 [8];
  undefined4 local_48;
  undefined4 local_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c398f3;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_14;
  local_69 = '\x01';
  FUN_00b72ec0(local_50);
  local_c = 0;
  iVar3 = *(int *)(param_1_00 + 8);
  local_5c = **(undefined4 **)(iVar3 + 0x1c);
  local_60 = *(undefined4 *)(iVar3 + 8);
  local_64 = iVar3;
  do {
    local_54 = *(undefined4 *)(iVar3 + 0x1c);
    local_58 = *(undefined4 *)(iVar3 + 8);
    cVar1 = FUN_0041c034(uVar2);
    if (cVar1 == '\0') break;
    local_68 = (undefined4 *)0x0;
    local_c._0_1_ = 1;
    puVar4 = (undefined4 *)0x0;
    if (local_69 != '\0') {
      FUN_006adbc2();
      local_69 = FUN_006bc9b5(param_2,&local_68);
      puVar4 = local_68;
      if (local_69 == '\0') {
        FUN_00b940e0(0xf409d81b);
        puVar4 = local_68;
      }
      else if ((local_68[2] != 0) &&
              (local_69 = FUN_00bb13e0(local_68), iVar3 = local_64, local_69 == '\0')) {
        FUN_00b940e0(0xccb86cc2);
        iVar3 = local_64;
      }
    }
    local_c = (uint)local_c._1_3_ << 8;
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)(1);
    }
    FUN_007a741a();
  } while (local_69 != '\0');
  if (local_69 != '\0') {
    local_48 = 0;
    local_44 = 0;
    local_69 = FUN_00bb1450(0xffffffff);
    if (local_69 == '\0') {
      FUN_00b940e0(0xccad8780);
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return local_69;
}



char __thiscall FUN_006a8e91(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char local_5;
  
  local_5 = '\x01';
  FUN_006a9049(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return local_5;
    }
    local_5 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (local_5 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006a8eeb(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006a9049(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006a8f00. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a8f03(undefined4 param_1_00,byte param_1)

{
  FUN_006ad47c();
  FUN_006ae1f5();
  FUN_006bebbe();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a8f4d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::W63FB247D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a8f93(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a8faa(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a8f4d(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



undefined4 FUN_006a8ff7(void)

{
  return 0x40010005;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a8ffd(undefined4 *param_1)

{
  FUN_006adf6e();
  *param_1 = WF8266037::WD1C3C411::W63FB247D::vftable;
  FUN_006adfbb(param_1 + 9);
  FUN_006ad58d(param_1 + 0xd);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006a9049(void)

{
  undefined local_18 [4];
  void *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x6a9055;
  local_14 = operator_new(0x44);
  local_8 = 0;
  if (local_14 != (void *)0x0) {
    FUN_006a8ffd(local_14);
  }
  local_8 = 0xffffffff;
  FUN_006a8faa(local_18);
  FUN_0046f668();
  if (local_14 != (void *)0x0) {
    FUN_0040127a();
  }
  return;
}



void __thiscall FUN_006a90a2(int param_1_00,undefined4 *param_1)

{
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006a9049(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006a90d6(undefined4 param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  int extraout_ECX;
  int iVar2;
  int unaff_EDI;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x6a90e2;
  iVar1 = FUN_0069409b(param_3,*(int *)(param_3 + 4));
  iVar2 = *(int *)(unaff_EDI + 0x18);
  if (iVar2 == 0x1fffffff) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"list<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    iVar1 = __CxxThrowException_8(local_58,&DAT_03115554);
    iVar2 = extraout_ECX;
  }
  *(int *)(unaff_EDI + 0x18) = iVar2 + 1;
  *(int *)(param_3 + 4) = iVar1;
  **(int **)(iVar1 + 4) = iVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006a9147(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6a9153;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                   &WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W63FB247D>::
                    RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                           &WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W63FB247D>::
                            RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



char FUN_006a91fd(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int **ppiVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  int local_4c;
  undefined4 *puStack_48;
  uint local_44;
  undefined4 local_40;
  int local_3c;
  uint local_38;
  int iStack_34;
  int *local_30;
  int iStack_2c;
  undefined auStack_28 [4];
  int iStack_24;
  undefined auStack_20 [4];
  int iStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c32eb0;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_14;
  cVar2 = FUN_00bb64e0(&local_38,0,uVar3);
  if (cVar2 == '\0') {
    FUN_00b940e0(0x2fe87715);
  }
  local_4c = 4;
  if (cVar2 != '\0') {
    cVar2 = FUN_00bb64e0(&local_40,0,uVar3);
    if (cVar2 == '\0') {
      FUN_00b940e0(0x54bc2114);
    }
    local_4c = 8;
    if (cVar2 != '\0') {
      ppiVar4 = (int **)FUN_0042efbd();
      local_c = 0;
      cVar2 = (**(code **)(**ppiVar4 + 4))(&local_40,local_40);
      local_c = 0xffffffff;
      if (iStack_2c != 0) {
        FUN_0040127a();
      }
      if (cVar2 == '\0') {
        FUN_00b940e0(0x968fabb9);
      }
    }
  }
  local_44 = 0;
  if (cVar2 != '\0') {
    do {
      if (local_38 <= local_44) break;
      if (cVar2 != '\0') {
        cVar2 = FUN_00bb64e0(&iStack_34,0,uVar3);
        local_4c = local_4c + 4;
        if (cVar2 == '\0') {
          FUN_00b940e0(0x2e894410);
        }
      }
      iVar1 = iStack_34;
      puStack_48 = (undefined4 *)0x0;
      local_c = 1;
      if (cVar2 != '\0') {
        cVar2 = FUN_00bb6360(&puStack_48,param_2,local_4c);
        local_4c = local_4c + iVar1;
        if (cVar2 == '\0') {
          FUN_00b940e0(0x6aa6f47f);
        }
      }
      local_30 = (int *)0x0;
      iStack_2c = 0;
      local_c._0_1_ = 2;
      if (cVar2 != '\0') {
        puVar5 = (undefined4 *)operator_new(0x10);
        if (puVar5 != (undefined4 *)0x0) {
          *puVar5 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W63FB247D>::vftable;
          puVar5[1] = 0;
          puVar5[2] = 0;
          puVar5[3] = 0;
        }
        FUN_006a8ccb(auStack_28);
        FUN_0046f668();
        if (iStack_24 != 0) {
          FUN_0040127a();
        }
        cVar2 = (**(code **)(*local_30 + 8))(param_1,puStack_48);
        if (cVar2 == '\0') {
          FUN_00b940e0(0xf6386ffd);
        }
        else {
          uVar6 = FUN_006a9147(auStack_20,&local_30);
          local_c._0_1_ = 3;
          FUN_006a90d6(uVar6,*(undefined4 *)(local_3c + 0xc),*(undefined4 *)(local_3c + 0x20));
          local_c._0_1_ = 2;
          if (iStack_1c != 0) {
            FUN_0040127a();
          }
        }
      }
      local_c = CONCAT31(local_c._1_3_,1);
      if (iStack_2c != 0) {
        FUN_0040127a();
      }
      local_c = 0xffffffff;
      if (puStack_48 != (undefined4 *)0x0) {
        (**(code **)*puStack_48)(1);
      }
      local_44 = local_44 + 1;
    } while (cVar2 != '\0');
    if (cVar2 != '\0') {
      *(undefined *)(local_3c + 8) = 1;
    }
  }
  ExceptionList = local_14;
  return cVar2;
}



undefined4 FUN_006a9480(void)

{
  return 0x90000000;
}



undefined __fastcall FUN_006a9486(int param_1)

{
  return *(undefined *)(param_1 + 8);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006a948a(undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::
             W8EAEAA23<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W63FB247D>_>
             ::vftable;
  FUN_006acc6b(param_1 + 3);
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a94ba(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD1C3C411::W29C49F09::vftable;
  FUN_006adfbb(param_1 + 0x1d);
  FUN_006a8889(param_1 + 0x21,param_1);
  return param_1;
}



void __fastcall FUN_006a9504(int param_1)

{
  undefined4 uVar1;
  int *piVar2;
  undefined4 *unaff_EDI;
  int iVar3;
  
  iVar3 = param_1;
  piVar2 = (int *)FUN_006ad7fd();
  uVar1 = ((undefined4 *)*piVar2)[1];
  *unaff_EDI = *(undefined4 *)*piVar2;
  unaff_EDI[1] = uVar1;
  if (param_1 != 0) {
    FUN_0040127a(iVar3);
  }
  return;
}



undefined4 __fastcall FUN_006a9532(undefined4 param_1)

{
  FUN_006ad7fd();
  return param_1;
}



undefined4 FUN_006a9543(void)

{
  return 0x40003105;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a9549(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD1C3C411::W56C8E7BA::vftable;
  FUN_006aad23(param_1 + 0x1d);
  FUN_006ad58d(param_1 + 0x21);
  FUN_006ad58d(param_1 + 0x25);
  return param_1;
}



undefined4 FUN_006a95ae(void)

{
  return 0x40003104;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a95b4(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD1C3C411::W41C9D6EF::vftable;
  FUN_006ad58d(param_1 + 0x1d);
  FUN_006ad58d(param_1 + 0x21);
  return param_1;
}



undefined4 FUN_006a9604(void)

{
  return 0x40003103;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a960a(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD1C3C411::WCDDBDBF5::vftable;
  FUN_006adfbb(param_1 + 0x1d);
  FUN_006ad58d(param_1 + 0x21);
  return param_1;
}



undefined4 FUN_006a965a(void)

{
  return 0x40003102;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a9660(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD1C3C411::WF9118BC3::vftable;
  FUN_006adfbb(param_1 + 0x1d);
  FUN_006ad58d(param_1 + 0x21);
  return param_1;
}



undefined4 FUN_006a9750(void)

{
  return 0x40003101;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a9756(undefined4 *param_1)

{
  FUN_006ae5af(param_1);
  *param_1 = WF8266037::WD1C3C411::W9FB55879::vftable;
  FUN_006aad23(param_1 + 0x1d);
  FUN_006ad58d(param_1 + 0x21);
  return param_1;
}



undefined4 FUN_006a98d4(void)

{
  return 0x40002001;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a98da(undefined4 *param_1,int param_2)

{
  int *piVar1;
  undefined4 uVar2;
  
  *param_1 = WF8266037::W2AC8B1F5::
             W8EAEAA23<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W94F91D6E>_>
             ::vftable;
  *(undefined *)(param_1 + 2) = 0;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 3);
  }
  param_1[3] = piVar1;
  uVar2 = FUN_006a6d92();
  param_1[8] = uVar2;
  param_1[9] = 0;
  param_1[1] = &DAT_02010001;
  if (param_2 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_006a9946(undefined4 param_1_00,byte param_1)

{
  FUN_006aa4e5();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



char __fastcall FUN_006a9962(int param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int **ppiVar6;
  undefined4 *local_74;
  undefined4 *local_70;
  int local_6c;
  undefined4 *local_68;
  int local_60;
  int local_5c;
  int *local_58;
  int local_54;
  undefined local_50 [8];
  undefined4 local_48;
  undefined4 local_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c39a10;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_14;
  local_6c = param_1;
  FUN_00b72ec0(local_50);
  local_c = 0;
  puVar4 = (undefined4 *)FUN_00bb60c0(&local_74,uVar3);
  puVar5 = (undefined4 *)*puVar4;
  *puVar4 = 0;
  local_c = CONCAT31(local_c._1_3_,1);
  local_70 = puVar5;
  local_68 = puVar5;
  if (local_74 != (undefined4 *)0x0) {
    (**(code **)*local_74)(1);
  }
  cVar2 = FUN_00bb13e0(puVar5);
  if (cVar2 == '\0') {
    FUN_00b940e0(0xe0ee14b8);
    puVar5 = local_70;
  }
  local_c = local_c & 0xffffff00;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  if (cVar2 != '\0') {
    puVar5 = (undefined4 *)operator_new(0x10);
    if (puVar5 != (undefined4 *)0x0) {
      *puVar5 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W94F91D6E>::vftable;
      puVar5[1] = 0;
      puVar5[2] = 0;
      puVar5[3] = 0;
    }
    FUN_006a9d1c(&local_58);
    local_c._0_1_ = 2;
    (**(code **)(*local_58 + 0x10))();
    local_c._0_1_ = 0;
    if (local_54 != 0) {
      FUN_0040127a();
    }
    puVar4 = (undefined4 *)FUN_00bb60c0(&local_70);
    puVar5 = (undefined4 *)*puVar4;
    *puVar4 = 0;
    local_c = CONCAT31(local_c._1_3_,3);
    local_74 = puVar5;
    local_68 = puVar5;
    if (local_70 != (undefined4 *)0x0) {
      (**(code **)*local_70)(1);
    }
    cVar2 = FUN_00bb13e0(puVar5);
    if (cVar2 == '\0') {
      FUN_00b940e0(0xe9afb0db);
      puVar5 = local_74;
    }
    local_c = local_c & 0xffffff00;
    if (puVar5 != (undefined4 *)0x0) {
      (**(code **)*puVar5)(1);
    }
  }
  local_5c = **(int **)(param_1 + 0x20);
  local_60 = *(int *)(param_1 + 0xc);
  if (cVar2 != '\0') {
    iVar1 = *(int *)(param_1 + 0x20);
    if ((local_60 == 0) || (local_60 != *(int *)(param_1 + 0xc))) {
      FUN_00a3fb10();
    }
    if (local_5c != iVar1) {
      local_74 = (undefined4 *)0x0;
      ppiVar6 = (int **)FUN_006adbc2();
      local_58 = *ppiVar6;
                    // WARNING: Subroutine does not return
      FUN_0043c023(ppiVar6 + 1);
    }
    if (cVar2 != '\0') {
      local_48 = 0;
      local_44 = 0;
      cVar2 = FUN_00bb1450(0xffffffff);
      if (cVar2 == '\0') {
        FUN_00b940e0(0xf42fddd9);
      }
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006a9c70(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c118e1;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W94F91D6E>::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return puVar1;
}



undefined4 __thiscall FUN_006a9ca3(undefined4 param_1_00,byte param_1)

{
  FUN_006a9c70();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006a9cbf(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W94F91D6E>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006a9d05(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006a9d1c(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006a9cbf(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006a9d69(void)

{
  undefined local_c [4];
  int local_8;
  
  FUN_006a9d1c(local_c);
  FUN_0046f668();
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return;
}



char __thiscall FUN_006a9d91(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  char local_69;
  undefined4 *local_68;
  int local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined local_50 [8];
  undefined4 local_48;
  undefined4 local_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c398f3;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_14;
  local_69 = '\x01';
  FUN_00b72ec0(local_50);
  local_c = 0;
  iVar3 = *(int *)(param_1_00 + 8);
  local_5c = **(undefined4 **)(iVar3 + 0x1c);
  local_60 = *(undefined4 *)(iVar3 + 8);
  local_64 = iVar3;
  do {
    local_54 = *(undefined4 *)(iVar3 + 0x1c);
    local_58 = *(undefined4 *)(iVar3 + 8);
    cVar1 = FUN_0041c034(uVar2);
    if (cVar1 == '\0') break;
    local_68 = (undefined4 *)0x0;
    local_c._0_1_ = 1;
    puVar4 = (undefined4 *)0x0;
    if (local_69 != '\0') {
      FUN_006adbc2();
      local_69 = FUN_006bc9b5(param_2,&local_68);
      puVar4 = local_68;
      if (local_69 == '\0') {
        FUN_00b940e0(0xf409d81b);
        puVar4 = local_68;
      }
      else if ((local_68[2] != 0) &&
              (local_69 = FUN_00bb13e0(local_68), iVar3 = local_64, local_69 == '\0')) {
        FUN_00b940e0(0xccb86cc2);
        iVar3 = local_64;
      }
    }
    local_c = (uint)local_c._1_3_ << 8;
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)(1);
    }
    FUN_007a741a();
  } while (local_69 != '\0');
  if (local_69 != '\0') {
    local_48 = 0;
    local_44 = 0;
    local_69 = FUN_00bb1450(0xffffffff);
    if (local_69 == '\0') {
      FUN_00b940e0(0xccad8780);
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return local_69;
}



char __thiscall FUN_006a9f0a(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char local_5;
  
  local_5 = '\x01';
  FUN_006aa14e(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return local_5;
    }
    local_5 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (local_5 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006a9f64(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006aa14e(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006a9f79. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __fastcall FUN_006a9f7c(int param_1)

{
  int iVar1;
  int local_8;
  int iStack_4;
  
  if (&local_8 != (undefined4 *)(param_1 + 8)) {
    *(undefined4 *)(param_1 + 8) = 0;
  }
  iVar1 = *(int *)(param_1 + 0xc);
  *(undefined4 *)(param_1 + 0xc) = 0;
  if (iVar1 != 0) {
    local_8 = param_1;
    iStack_4 = param_1;
    FUN_0040127a();
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006a9fa1(undefined4 param_1_00,byte param_1)

{
  FUN_006ad5ca();
  FUN_006ad5ca();
  FUN_006ad5ca();
  FUN_006ae57c();
  FUN_006bebbe();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006aa003(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W15DB837A::W94F91D6E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006aa049(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006aa060(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *unaff_ESI;
  undefined4 unaff_EDI;
  int local_14;
  
  puVar3 = (undefined4 *)FUN_006aa003(unaff_EDI);
  uVar1 = *puVar3;
  *puVar3 = 0;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&stack0xffffffe4);
  if ((undefined4 *)&stack0xffffffe4 != unaff_ESI) {
    *unaff_ESI = unaff_EDI;
  }
  iVar2 = unaff_ESI[1];
  unaff_ESI[1] = uVar1;
  if (iVar2 != 0) {
    FUN_0040127a();
  }
  return;
}



undefined4 FUN_006aa0d4(void)

{
  return 0x40010002;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006aa0da(undefined4 *param_1)

{
  FUN_006adf6e();
  *param_1 = WF8266037::W15DB837A::W94F91D6E::vftable;
  FUN_006ae387(param_1 + 9);
  FUN_006ad7c0(param_1 + 0xd);
  FUN_006ad7c0(param_1 + 0x11);
  FUN_006ad7c0(param_1 + 0x15);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006aa14e(void)

{
  void *pvVar1;
  
  pvVar1 = operator_new(100);
  if (pvVar1 != (void *)0x0) {
    FUN_006aa0da(pvVar1);
  }
  FUN_006aa060();
  return;
}



void __thiscall FUN_006aa190(int param_1_00,undefined4 *param_1)

{
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006aa14e(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006aa1c4(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6aa1d0;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                   &WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W94F91D6E>::
                    RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                           &WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W94F91D6E>::
                            RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



char FUN_006aa27a(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int **ppiVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  int local_44;
  undefined4 *puStack_40;
  uint local_3c;
  undefined4 local_38;
  int local_34;
  uint local_30;
  int iStack_2c;
  int *local_28;
  int iStack_24;
  undefined auStack_20 [4];
  int iStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c32e75;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  cVar2 = FUN_00bb64e0(&local_30,0,uVar3);
  if (cVar2 == '\0') {
    FUN_00b940e0(0x2fe87715);
  }
  local_44 = 4;
  if (cVar2 != '\0') {
    cVar2 = FUN_00bb64e0(&local_38,0,uVar3);
    if (cVar2 == '\0') {
      FUN_00b940e0(0x54bc2114);
    }
    local_44 = 8;
    if (cVar2 != '\0') {
      ppiVar4 = (int **)FUN_0042efbd();
      local_c = 0;
      cVar2 = (**(code **)(**ppiVar4 + 4))(&local_38,local_38);
      local_c = 0xffffffff;
      if (iStack_24 != 0) {
        FUN_0040127a();
      }
      if (cVar2 == '\0') {
        FUN_00b940e0(0x968fabb9);
      }
    }
  }
  local_3c = 0;
  if (cVar2 != '\0') {
    do {
      if (local_30 <= local_3c) break;
      if (cVar2 != '\0') {
        cVar2 = FUN_00bb64e0(&iStack_2c,0,uVar3);
        local_44 = local_44 + 4;
        if (cVar2 == '\0') {
          FUN_00b940e0(0x2e894410);
        }
      }
      iVar1 = iStack_2c;
      puStack_40 = (undefined4 *)0x0;
      local_c = 1;
      if (cVar2 != '\0') {
        cVar2 = FUN_00bb6360(&puStack_40,param_2,local_44);
        local_44 = local_44 + iVar1;
        if (cVar2 == '\0') {
          FUN_00b940e0(0x6aa6f47f);
        }
      }
      local_28 = (int *)0x0;
      iStack_24 = 0;
      local_c._0_1_ = 2;
      if (cVar2 != '\0') {
        puVar5 = (undefined4 *)operator_new(0x10);
        if (puVar5 != (undefined4 *)0x0) {
          *puVar5 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W94F91D6E>::vftable;
          puVar5[1] = 0;
          puVar5[2] = 0;
          puVar5[3] = 0;
        }
        FUN_006a9d69(&local_28);
        cVar2 = (**(code **)(*local_28 + 8))(param_1,puStack_40);
        if (cVar2 == '\0') {
          FUN_00b940e0(0xf6386ffd);
        }
        else {
          uVar6 = FUN_006aa1c4(auStack_20,&local_28);
          local_c._0_1_ = 3;
          FUN_006a90d6(uVar6,*(undefined4 *)(local_34 + 0xc),*(undefined4 *)(local_34 + 0x20));
          local_c._0_1_ = 2;
          if (iStack_1c != 0) {
            FUN_0040127a();
          }
        }
      }
      local_c = CONCAT31(local_c._1_3_,1);
      if (iStack_24 != 0) {
        FUN_0040127a();
      }
      local_c = 0xffffffff;
      if (puStack_40 != (undefined4 *)0x0) {
        (**(code **)*puStack_40)(1);
      }
      local_3c = local_3c + 1;
    } while (cVar2 != '\0');
    if (cVar2 != '\0') {
      *(undefined *)(local_34 + 8) = 1;
    }
  }
  ExceptionList = local_14;
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006aa4e5(undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::
             W8EAEAA23<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W94F91D6E>_>
             ::vftable;
  FUN_006acc6b(param_1 + 3);
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006aa515(undefined4 *param_1,int param_2)

{
  int *piVar1;
  undefined4 uVar2;
  
  *param_1 = WF8266037::W2AC8B1F5::
             W8EAEAA23<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WAF9E9834>_>
             ::vftable;
  *(undefined *)(param_1 + 2) = 0;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 3);
  }
  param_1[3] = piVar1;
  uVar2 = FUN_006a6d92();
  param_1[8] = uVar2;
  param_1[9] = 0;
  param_1[1] = &DAT_02010002;
  if (param_2 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_006aa581(undefined4 param_1_00,byte param_1)

{
  FUN_006abfe3();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



char __fastcall FUN_006aa59d(int param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int **ppiVar6;
  undefined4 *local_74;
  undefined4 *local_70;
  int local_6c;
  undefined4 *local_68;
  int iStack_60;
  int iStack_5c;
  int *local_58;
  int iStack_54;
  undefined local_50 [8];
  undefined4 uStack_48;
  undefined4 uStack_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c39a10;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_14;
  local_6c = param_1;
  FUN_00b72ec0(local_50);
  local_c = 0;
  puVar4 = (undefined4 *)FUN_00bb60c0(&local_74,uVar3);
  puVar5 = (undefined4 *)*puVar4;
  *puVar4 = 0;
  local_c = CONCAT31(local_c._1_3_,1);
  local_70 = puVar5;
  local_68 = puVar5;
  if (local_74 != (undefined4 *)0x0) {
    (**(code **)*local_74)(1);
  }
  cVar2 = FUN_00bb13e0(puVar5);
  if (cVar2 == '\0') {
    FUN_00b940e0(0xe0ee14b8);
    puVar5 = local_70;
  }
  local_c = local_c & 0xffffff00;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  if (cVar2 != '\0') {
    puVar5 = (undefined4 *)operator_new(0x10);
    if (puVar5 != (undefined4 *)0x0) {
      *puVar5 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WAF9E9834>::vftable;
      puVar5[1] = 0;
      puVar5[2] = 0;
      puVar5[3] = 0;
    }
    FUN_006aa957(&local_58);
    local_c._0_1_ = 2;
    (**(code **)(*local_58 + 0x10))();
    local_c._0_1_ = 0;
    if (iStack_54 != 0) {
      FUN_0040127a();
    }
    puVar4 = (undefined4 *)FUN_00bb60c0(&local_70);
    puVar5 = (undefined4 *)*puVar4;
    *puVar4 = 0;
    local_c = CONCAT31(local_c._1_3_,3);
    local_74 = puVar5;
    local_68 = puVar5;
    if (local_70 != (undefined4 *)0x0) {
      (**(code **)*local_70)(1);
    }
    cVar2 = FUN_00bb13e0(puVar5);
    if (cVar2 == '\0') {
      FUN_00b940e0(0xe9afb0db);
      puVar5 = local_74;
    }
    local_c = local_c & 0xffffff00;
    if (puVar5 != (undefined4 *)0x0) {
      (**(code **)*puVar5)(1);
    }
  }
  iStack_5c = **(int **)(param_1 + 0x20);
  iStack_60 = *(int *)(param_1 + 0xc);
  if (cVar2 != '\0') {
    iVar1 = *(int *)(param_1 + 0x20);
    if ((iStack_60 == 0) || (iStack_60 != *(int *)(param_1 + 0xc))) {
      FUN_00a3fb10();
    }
    if (iStack_5c != iVar1) {
      local_74 = (undefined4 *)0x0;
      ppiVar6 = (int **)FUN_006adbc2();
      local_58 = *ppiVar6;
                    // WARNING: Subroutine does not return
      FUN_0043c023(ppiVar6 + 1);
    }
    if (cVar2 != '\0') {
      uStack_48 = 0;
      uStack_44 = 0;
      cVar2 = FUN_00bb1450(0xffffffff);
      if (cVar2 == '\0') {
        FUN_00b940e0(0xf42fddd9);
      }
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006aa8ab(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c118e1;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WAF9E9834>::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return puVar1;
}



undefined4 __thiscall FUN_006aa8de(undefined4 param_1_00,byte param_1)

{
  FUN_006aa8ab();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006aa8fa(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WAF9E9834>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006aa940(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006aa957(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006aa8fa(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006aa9a4(void)

{
  undefined local_c [4];
  int local_8;
  
  FUN_006aa957(local_c);
  FUN_0046f668();
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return;
}



char __thiscall FUN_006aa9cc(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  char local_69;
  undefined4 *local_68;
  int local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined local_50 [8];
  undefined4 local_48;
  undefined4 local_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c398f3;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_14;
  local_69 = '\x01';
  FUN_00b72ec0(local_50);
  local_c = 0;
  iVar3 = *(int *)(param_1_00 + 8);
  local_5c = **(undefined4 **)(iVar3 + 0x1c);
  local_60 = *(undefined4 *)(iVar3 + 8);
  local_64 = iVar3;
  do {
    local_54 = *(undefined4 *)(iVar3 + 0x1c);
    local_58 = *(undefined4 *)(iVar3 + 8);
    cVar1 = FUN_0041c034(uVar2);
    if (cVar1 == '\0') break;
    local_68 = (undefined4 *)0x0;
    local_c._0_1_ = 1;
    puVar4 = (undefined4 *)0x0;
    if (local_69 != '\0') {
      FUN_006adbc2();
      local_69 = FUN_006bc9b5(param_2,&local_68);
      puVar4 = local_68;
      if (local_69 == '\0') {
        FUN_00b940e0(0xf409d81b);
        puVar4 = local_68;
      }
      else if ((local_68[2] != 0) &&
              (local_69 = FUN_00bb13e0(local_68), iVar3 = local_64, local_69 == '\0')) {
        FUN_00b940e0(0xccb86cc2);
        iVar3 = local_64;
      }
    }
    local_c = (uint)local_c._1_3_ << 8;
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)(1);
    }
    FUN_007a741a();
  } while (local_69 != '\0');
  if (local_69 != '\0') {
    local_48 = 0;
    local_44 = 0;
    local_69 = FUN_00bb1450(0xffffffff);
    if (local_69 == '\0') {
      FUN_00b940e0(0xccad8780);
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return local_69;
}



char __thiscall FUN_006aab45(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char local_5;
  
  local_5 = '\x01';
  FUN_006abc49(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return local_5;
    }
    local_5 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (local_5 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006aab9f(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006abc49(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006aabb4. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006aabb7(void)

{
  FUN_006abb6c();
  FUN_006ad5ca();
  FUN_006ad5ca();
  FUN_006aaf33();
  FUN_006aaf33();
  FUN_006ae57c();
  FUN_006ae57c();
  FUN_006bebbe();
  return;
}



undefined4 __thiscall FUN_006aac2f(undefined4 param_1_00,byte param_1)

{
  FUN_006aabb7(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006aac4c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W15DB837A::WAF9E9834>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006aac92(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006aaca9(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *unaff_ESI;
  undefined4 unaff_EDI;
  int local_14;
  
  puVar3 = (undefined4 *)FUN_006aac4c(unaff_EDI);
  uVar1 = *puVar3;
  *puVar3 = 0;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&stack0xffffffe4);
  if ((undefined4 *)&stack0xffffffe4 != unaff_ESI) {
    *unaff_ESI = unaff_EDI;
  }
  iVar2 = unaff_ESI[1];
  unaff_ESI[1] = uVar1;
  if (iVar2 != 0) {
    FUN_0040127a();
  }
  return;
}



undefined4 FUN_006aad1d(void)

{
  return 0x40010004;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_006aad23(undefined4 param_1_00,int param_2,undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::W329C7FF8<struct_WF8266037::WCDA438C9>::vftable;
  param_1[1] = param_1_00;
  param_1[2] = 0;
  param_1[3] = 0;
  if (param_2 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_006aad60(undefined4 param_1_00,byte param_1)

{
  FUN_006aaf33();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



uint FUN_006aad7c(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  undefined4 local_28;
  int local_24;
  undefined4 local_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5c3aa;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_28 = 0;
  local_24 = 0;
  local_c = 0;
  cVar1 = FUN_006be5ad(&local_28,param_2,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  if (cVar1 == '\0') {
    uVar2 = FUN_00b940e0(0xdffb370d);
    local_c = 0xffffffff;
    if (local_24 != 0) {
      uVar2 = FUN_0040127a();
    }
    ExceptionList = local_14;
    return uVar2 & 0xffffff00;
  }
  local_20 = local_28;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_24);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006aae3c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_WF8266037::WCDA438C9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006aae82(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006aae95(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006aae3c(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



undefined4 FUN_006aaee2(undefined4 param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(8);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
    puVar1[1] = 0;
  }
  FUN_006aae95(param_1);
  return param_1;
}



undefined4 FUN_006aaf14(void)

{
  undefined local_c [4];
  int local_8;
  
  FUN_006aaee2(local_c);
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return 0x31;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006aaf33(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c118e1;
  *param_1 = WF8266037::W2AC8B1F5::W329C7FF8<struct_WF8266037::WCDA438C9>::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006aaf66(undefined4 *param_1,int param_2)

{
  int *piVar1;
  undefined4 uVar2;
  
  *param_1 = WF8266037::W2AC8B1F5::
             W8EAEAA23<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W33629A5B>_>
             ::vftable;
  *(undefined *)(param_1 + 2) = 0;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 3);
  }
  param_1[3] = piVar1;
  uVar2 = FUN_006a6d92();
  param_1[8] = uVar2;
  param_1[9] = 0;
  param_1[1] = 0x10040006;
  if (param_2 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_006aafd2(undefined4 param_1_00,byte param_1)

{
  FUN_006abb6c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



char __fastcall FUN_006aafee(int param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int **ppiVar6;
  undefined4 *local_74;
  undefined4 *local_70;
  int local_6c;
  undefined4 *local_68;
  int local_60;
  int local_5c;
  int *local_58;
  int local_54;
  undefined local_50 [8];
  undefined4 local_48;
  undefined4 local_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c39a10;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_14;
  local_6c = param_1;
  FUN_00b72ec0(local_50);
  local_c = 0;
  puVar4 = (undefined4 *)FUN_00bb60c0(&local_74,uVar3);
  puVar5 = (undefined4 *)*puVar4;
  *puVar4 = 0;
  local_c = CONCAT31(local_c._1_3_,1);
  local_70 = puVar5;
  local_68 = puVar5;
  if (local_74 != (undefined4 *)0x0) {
    (**(code **)*local_74)(1);
  }
  cVar2 = FUN_00bb13e0(puVar5);
  if (cVar2 == '\0') {
    FUN_00b940e0(0xe0ee14b8);
    puVar5 = local_70;
  }
  local_c = local_c & 0xffffff00;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  if (cVar2 != '\0') {
    puVar5 = (undefined4 *)operator_new(0x10);
    if (puVar5 != (undefined4 *)0x0) {
      *puVar5 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W33629A5B>::vftable;
      puVar5[1] = 0;
      puVar5[2] = 0;
      puVar5[3] = 0;
    }
    FUN_006ab3a8(&local_58);
    local_c._0_1_ = 2;
    (**(code **)(*local_58 + 0x10))();
    local_c._0_1_ = 0;
    if (local_54 != 0) {
      FUN_0040127a();
    }
    puVar4 = (undefined4 *)FUN_00bb60c0(&local_70);
    puVar5 = (undefined4 *)*puVar4;
    *puVar4 = 0;
    local_c = CONCAT31(local_c._1_3_,3);
    local_74 = puVar5;
    local_68 = puVar5;
    if (local_70 != (undefined4 *)0x0) {
      (**(code **)*local_70)(1);
    }
    cVar2 = FUN_00bb13e0(puVar5);
    if (cVar2 == '\0') {
      FUN_00b940e0(0xe9afb0db);
      puVar5 = local_74;
    }
    local_c = local_c & 0xffffff00;
    if (puVar5 != (undefined4 *)0x0) {
      (**(code **)*puVar5)(1);
    }
  }
  local_5c = **(int **)(param_1 + 0x20);
  local_60 = *(int *)(param_1 + 0xc);
  if (cVar2 != '\0') {
    iVar1 = *(int *)(param_1 + 0x20);
    if ((local_60 == 0) || (local_60 != *(int *)(param_1 + 0xc))) {
      FUN_00a3fb10();
    }
    if (local_5c != iVar1) {
      local_74 = (undefined4 *)0x0;
      ppiVar6 = (int **)FUN_006adbc2();
      local_58 = *ppiVar6;
                    // WARNING: Subroutine does not return
      FUN_0043c023(ppiVar6 + 1);
    }
    if (cVar2 != '\0') {
      local_48 = 0;
      local_44 = 0;
      cVar2 = FUN_00bb1450(0xffffffff);
      if (cVar2 == '\0') {
        FUN_00b940e0(0xf42fddd9);
      }
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006ab2fc(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c118e1;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W33629A5B>::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return puVar1;
}



undefined4 __thiscall FUN_006ab32f(undefined4 param_1_00,byte param_1)

{
  FUN_006ab2fc();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ab34b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W33629A5B>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ab391(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ab3a8(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006ab34b(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006ab3f5(void)

{
  undefined local_c [4];
  int local_8;
  
  FUN_006ab3a8(local_c);
  FUN_0046f668();
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return;
}



char __thiscall FUN_006ab41d(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  char local_69;
  undefined4 *local_68;
  int local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined local_50 [8];
  undefined4 local_48;
  undefined4 local_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c398f3;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_14;
  local_69 = '\x01';
  FUN_00b72ec0(local_50);
  local_c = 0;
  iVar3 = *(int *)(param_1_00 + 8);
  local_5c = **(undefined4 **)(iVar3 + 0x1c);
  local_60 = *(undefined4 *)(iVar3 + 8);
  local_64 = iVar3;
  do {
    local_54 = *(undefined4 *)(iVar3 + 0x1c);
    local_58 = *(undefined4 *)(iVar3 + 8);
    cVar1 = FUN_0041c034(uVar2);
    if (cVar1 == '\0') break;
    local_68 = (undefined4 *)0x0;
    local_c._0_1_ = 1;
    puVar4 = (undefined4 *)0x0;
    if (local_69 != '\0') {
      FUN_006adbc2();
      local_69 = FUN_006bc9b5(param_2,&local_68);
      puVar4 = local_68;
      if (local_69 == '\0') {
        FUN_00b940e0(0xf409d81b);
        puVar4 = local_68;
      }
      else if ((local_68[2] != 0) &&
              (local_69 = FUN_00bb13e0(local_68), iVar3 = local_64, local_69 == '\0')) {
        FUN_00b940e0(0xccb86cc2);
        iVar3 = local_64;
      }
    }
    local_c = (uint)local_c._1_3_ << 8;
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)(1);
    }
    FUN_007a741a();
  } while (local_69 != '\0');
  if (local_69 != '\0') {
    local_48 = 0;
    local_44 = 0;
    local_69 = FUN_00bb1450(0xffffffff);
    if (local_69 == '\0') {
      FUN_00b940e0(0xccad8780);
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return local_69;
}



char __thiscall FUN_006ab596(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char local_5;
  
  local_5 = '\x01';
  FUN_006ab7d5(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return local_5;
    }
    local_5 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (local_5 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006ab5f0(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006ab7d5(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006ab605. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006ab608(undefined4 param_1_00,byte param_1)

{
  FUN_006ae57c();
  FUN_006ad5ca();
  FUN_006ae1f5();
  FUN_006ae1f5();
  FUN_006ae57c();
  FUN_006bebbe();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ab676(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W15DB837A::W33629A5B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ab6bc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006ab6d3(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *unaff_ESI;
  undefined4 unaff_EDI;
  int local_14;
  
  puVar3 = (undefined4 *)FUN_006ab676(unaff_EDI);
  uVar1 = *puVar3;
  *puVar3 = 0;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&stack0xffffffe4);
  if ((undefined4 *)&stack0xffffffe4 != unaff_ESI) {
    *unaff_ESI = unaff_EDI;
  }
  iVar2 = unaff_ESI[1];
  unaff_ESI[1] = uVar1;
  if (iVar2 != 0) {
    FUN_0040127a();
  }
  return;
}



undefined4 FUN_006ab747(void)

{
  return 0x40010006;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ab74d(undefined4 *param_1)

{
  FUN_006adf6e();
  *param_1 = WF8266037::W15DB837A::W33629A5B::vftable;
  FUN_006ae387(param_1 + 9);
  FUN_006adfbb(param_1 + 0xd);
  FUN_006adfbb(param_1 + 0x11);
  FUN_006ad7c0(param_1 + 0x15);
  FUN_006ae387(param_1 + 0x19);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006ab7d5(void)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x74);
  if (pvVar1 != (void *)0x0) {
    FUN_006ab74d(pvVar1);
  }
  FUN_006ab6d3();
  return;
}



void __thiscall FUN_006ab817(int param_1_00,undefined4 *param_1)

{
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006ab7d5(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006ab84b(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6ab857;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                   &WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W33629A5B>::
                    RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                           &WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W33629A5B>::
                            RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



char FUN_006ab901(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int **ppiVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  int local_44;
  undefined4 *puStack_40;
  uint local_3c;
  undefined4 local_38;
  int local_34;
  uint local_30;
  int iStack_2c;
  int *local_28;
  int iStack_24;
  undefined auStack_20 [4];
  int iStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c32e75;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  cVar2 = FUN_00bb64e0(&local_30,0,uVar3);
  if (cVar2 == '\0') {
    FUN_00b940e0(0x2fe87715);
  }
  local_44 = 4;
  if (cVar2 != '\0') {
    cVar2 = FUN_00bb64e0(&local_38,0,uVar3);
    if (cVar2 == '\0') {
      FUN_00b940e0(0x54bc2114);
    }
    local_44 = 8;
    if (cVar2 != '\0') {
      ppiVar4 = (int **)FUN_0042efbd();
      local_c = 0;
      cVar2 = (**(code **)(**ppiVar4 + 4))(&local_38,local_38);
      local_c = 0xffffffff;
      if (iStack_24 != 0) {
        FUN_0040127a();
      }
      if (cVar2 == '\0') {
        FUN_00b940e0(0x968fabb9);
      }
    }
  }
  local_3c = 0;
  if (cVar2 != '\0') {
    do {
      if (local_30 <= local_3c) break;
      if (cVar2 != '\0') {
        cVar2 = FUN_00bb64e0(&iStack_2c,0,uVar3);
        local_44 = local_44 + 4;
        if (cVar2 == '\0') {
          FUN_00b940e0(0x2e894410);
        }
      }
      iVar1 = iStack_2c;
      puStack_40 = (undefined4 *)0x0;
      local_c = 1;
      if (cVar2 != '\0') {
        cVar2 = FUN_00bb6360(&puStack_40,param_2,local_44);
        local_44 = local_44 + iVar1;
        if (cVar2 == '\0') {
          FUN_00b940e0(0x6aa6f47f);
        }
      }
      local_28 = (int *)0x0;
      iStack_24 = 0;
      local_c._0_1_ = 2;
      if (cVar2 != '\0') {
        puVar5 = (undefined4 *)operator_new(0x10);
        if (puVar5 != (undefined4 *)0x0) {
          *puVar5 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W33629A5B>::vftable;
          puVar5[1] = 0;
          puVar5[2] = 0;
          puVar5[3] = 0;
        }
        FUN_006ab3f5(&local_28);
        cVar2 = (**(code **)(*local_28 + 8))(param_1,puStack_40);
        if (cVar2 == '\0') {
          FUN_00b940e0(0xf6386ffd);
        }
        else {
          uVar6 = FUN_006ab84b(auStack_20,&local_28);
          local_c._0_1_ = 3;
          FUN_006a90d6(uVar6,*(undefined4 *)(local_34 + 0xc),*(undefined4 *)(local_34 + 0x20));
          local_c._0_1_ = 2;
          if (iStack_1c != 0) {
            FUN_0040127a();
          }
        }
      }
      local_c = CONCAT31(local_c._1_3_,1);
      if (iStack_24 != 0) {
        FUN_0040127a();
      }
      local_c = 0xffffffff;
      if (puStack_40 != (undefined4 *)0x0) {
        (**(code **)*puStack_40)(1);
      }
      local_3c = local_3c + 1;
    } while (cVar2 != '\0');
    if (cVar2 != '\0') {
      *(undefined *)(local_34 + 8) = 1;
    }
  }
  ExceptionList = local_14;
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006abb6c(undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::
             W8EAEAA23<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W33629A5B>_>
             ::vftable;
  FUN_006acc6b(param_1 + 3);
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006abb9c(undefined4 *param_1)

{
  FUN_006adf6e();
  *param_1 = WF8266037::W15DB837A::WAF9E9834::vftable;
  FUN_006ae387(param_1 + 9);
  FUN_006ae387(param_1 + 0xd);
  FUN_006aad23(param_1 + 0x11);
  FUN_006aad23(param_1 + 0x15);
  FUN_006ad7c0(param_1 + 0x19);
  FUN_006ad7c0(param_1 + 0x1d);
  FUN_006aaf66(param_1 + 0x21,param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006abc49(void)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0xac);
  if (pvVar1 != (void *)0x0) {
    FUN_006abb9c(pvVar1);
  }
  FUN_006aaca9();
  return;
}



void __thiscall FUN_006abc8e(int param_1_00,undefined4 *param_1)

{
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006abc49(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006abcc2(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6abcce;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                   &WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WAF9E9834>::
                    RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                           &WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WAF9E9834>::
                            RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



char FUN_006abd78(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int **ppiVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  int local_44;
  undefined4 *puStack_40;
  uint local_3c;
  undefined4 local_38;
  int local_34;
  uint local_30;
  int iStack_2c;
  int *local_28;
  int iStack_24;
  undefined auStack_20 [4];
  int iStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c32e75;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  cVar2 = FUN_00bb64e0(&local_30,0,uVar3);
  if (cVar2 == '\0') {
    FUN_00b940e0(0x2fe87715);
  }
  local_44 = 4;
  if (cVar2 != '\0') {
    cVar2 = FUN_00bb64e0(&local_38,0,uVar3);
    if (cVar2 == '\0') {
      FUN_00b940e0(0x54bc2114);
    }
    local_44 = 8;
    if (cVar2 != '\0') {
      ppiVar4 = (int **)FUN_0042efbd();
      local_c = 0;
      cVar2 = (**(code **)(**ppiVar4 + 4))(&local_38,local_38);
      local_c = 0xffffffff;
      if (iStack_24 != 0) {
        FUN_0040127a();
      }
      if (cVar2 == '\0') {
        FUN_00b940e0(0x968fabb9);
      }
    }
  }
  local_3c = 0;
  if (cVar2 != '\0') {
    do {
      if (local_30 <= local_3c) break;
      if (cVar2 != '\0') {
        cVar2 = FUN_00bb64e0(&iStack_2c,0,uVar3);
        local_44 = local_44 + 4;
        if (cVar2 == '\0') {
          FUN_00b940e0(0x2e894410);
        }
      }
      iVar1 = iStack_2c;
      puStack_40 = (undefined4 *)0x0;
      local_c = 1;
      if (cVar2 != '\0') {
        cVar2 = FUN_00bb6360(&puStack_40,param_2,local_44);
        local_44 = local_44 + iVar1;
        if (cVar2 == '\0') {
          FUN_00b940e0(0x6aa6f47f);
        }
      }
      local_28 = (int *)0x0;
      iStack_24 = 0;
      local_c._0_1_ = 2;
      if (cVar2 != '\0') {
        puVar5 = (undefined4 *)operator_new(0x10);
        if (puVar5 != (undefined4 *)0x0) {
          *puVar5 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WAF9E9834>::vftable;
          puVar5[1] = 0;
          puVar5[2] = 0;
          puVar5[3] = 0;
        }
        FUN_006aa9a4(&local_28);
        cVar2 = (**(code **)(*local_28 + 8))(param_1,puStack_40);
        if (cVar2 == '\0') {
          FUN_00b940e0(0xf6386ffd);
        }
        else {
          uVar6 = FUN_006abcc2(auStack_20,&local_28);
          local_c._0_1_ = 3;
          FUN_006a90d6(uVar6,*(undefined4 *)(local_34 + 0xc),*(undefined4 *)(local_34 + 0x20));
          local_c._0_1_ = 2;
          if (iStack_1c != 0) {
            FUN_0040127a();
          }
        }
      }
      local_c = CONCAT31(local_c._1_3_,1);
      if (iStack_24 != 0) {
        FUN_0040127a();
      }
      local_c = 0xffffffff;
      if (puStack_40 != (undefined4 *)0x0) {
        (**(code **)*puStack_40)(1);
      }
      local_3c = local_3c + 1;
    } while (cVar2 != '\0');
    if (cVar2 != '\0') {
      *(undefined *)(local_34 + 8) = 1;
    }
  }
  ExceptionList = local_14;
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006abfe3(undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::
             W8EAEAA23<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WAF9E9834>_>
             ::vftable;
  FUN_006acc6b(param_1 + 3);
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ac013(undefined4 *param_1)

{
  FUN_006ad8c1(param_1);
  *param_1 = WF8266037::W15DB837A::W6634A465::vftable;
  FUN_006a98da(param_1 + 0x15,param_1);
  FUN_006aa515(param_1 + 0x1f,param_1);
  return param_1;
}



void __fastcall FUN_006ac054(int param_1)

{
  undefined4 uVar1;
  int *piVar2;
  undefined4 *unaff_EDI;
  int iVar3;
  
  iVar3 = param_1;
  piVar2 = (int *)FUN_006ad7fd();
  uVar1 = ((undefined4 *)*piVar2)[1];
  *unaff_EDI = *(undefined4 *)*piVar2;
  unaff_EDI[1] = uVar1;
  if (param_1 != 0) {
    FUN_0040127a(iVar3);
  }
  return;
}



void __fastcall FUN_006ac082(int param_1)

{
  undefined4 uVar1;
  int *piVar2;
  undefined4 *unaff_EDI;
  int iVar3;
  
  iVar3 = param_1;
  piVar2 = (int *)FUN_006ad7fd();
  uVar1 = ((undefined4 *)*piVar2)[1];
  *unaff_EDI = *(undefined4 *)*piVar2;
  unaff_EDI[1] = uVar1;
  if (param_1 != 0) {
    FUN_0040127a(iVar3);
  }
  return;
}



undefined4 __fastcall FUN_006ac0b0(undefined4 param_1)

{
  FUN_006ad7fd();
  return param_1;
}



undefined4 FUN_006ac0bf(void)

{
  return 0x40002003;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ac0c5(undefined4 *param_1,int param_2)

{
  int *piVar1;
  undefined4 uVar2;
  
  *param_1 = WF8266037::W2AC8B1F5::
             W8EAEAA23<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WDC3E8CE3>_>
             ::vftable;
  *(undefined *)(param_1 + 2) = 0;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 3);
  }
  param_1[3] = piVar1;
  uVar2 = FUN_006a6d92();
  param_1[8] = uVar2;
  param_1[9] = 0;
  param_1[1] = &DAT_02030001;
  if (param_2 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_006ac131(undefined4 param_1_00,byte param_1)

{
  FUN_006acca0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



char __fastcall FUN_006ac14d(int param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int **ppiVar6;
  undefined4 *local_74;
  undefined4 *local_70;
  int local_6c;
  undefined4 *local_68;
  int iStack_60;
  int iStack_5c;
  int *local_58;
  int iStack_54;
  undefined local_50 [8];
  undefined4 uStack_48;
  undefined4 uStack_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c39a10;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_14;
  local_6c = param_1;
  FUN_00b72ec0(local_50);
  local_c = 0;
  puVar4 = (undefined4 *)FUN_00bb60c0(&local_74,uVar3);
  puVar5 = (undefined4 *)*puVar4;
  *puVar4 = 0;
  local_c = CONCAT31(local_c._1_3_,1);
  local_70 = puVar5;
  local_68 = puVar5;
  if (local_74 != (undefined4 *)0x0) {
    (**(code **)*local_74)(1);
  }
  cVar2 = FUN_00bb13e0(puVar5);
  if (cVar2 == '\0') {
    FUN_00b940e0(0xe0ee14b8);
    puVar5 = local_70;
  }
  local_c = local_c & 0xffffff00;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  if (cVar2 != '\0') {
    puVar5 = (undefined4 *)operator_new(0x10);
    if (puVar5 != (undefined4 *)0x0) {
      *puVar5 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WDC3E8CE3>::vftable;
      puVar5[1] = 0;
      puVar5[2] = 0;
      puVar5[3] = 0;
    }
    FUN_006ac507(&local_58);
    local_c._0_1_ = 2;
    (**(code **)(*local_58 + 0x10))();
    local_c._0_1_ = 0;
    if (iStack_54 != 0) {
      FUN_0040127a();
    }
    puVar4 = (undefined4 *)FUN_00bb60c0(&local_70);
    puVar5 = (undefined4 *)*puVar4;
    *puVar4 = 0;
    local_c = CONCAT31(local_c._1_3_,3);
    local_74 = puVar5;
    local_68 = puVar5;
    if (local_70 != (undefined4 *)0x0) {
      (**(code **)*local_70)(1);
    }
    cVar2 = FUN_00bb13e0(puVar5);
    if (cVar2 == '\0') {
      FUN_00b940e0(0xe9afb0db);
      puVar5 = local_74;
    }
    local_c = local_c & 0xffffff00;
    if (puVar5 != (undefined4 *)0x0) {
      (**(code **)*puVar5)(1);
    }
  }
  iStack_5c = **(int **)(param_1 + 0x20);
  iStack_60 = *(int *)(param_1 + 0xc);
  if (cVar2 != '\0') {
    iVar1 = *(int *)(param_1 + 0x20);
    if ((iStack_60 == 0) || (iStack_60 != *(int *)(param_1 + 0xc))) {
      FUN_00a3fb10();
    }
    if (iStack_5c != iVar1) {
      local_74 = (undefined4 *)0x0;
      ppiVar6 = (int **)FUN_006adbc2();
      local_58 = *ppiVar6;
                    // WARNING: Subroutine does not return
      FUN_0043c023(ppiVar6 + 1);
    }
    if (cVar2 != '\0') {
      uStack_48 = 0;
      uStack_44 = 0;
      cVar2 = FUN_00bb1450(0xffffffff);
      if (cVar2 == '\0') {
        FUN_00b940e0(0xf42fddd9);
      }
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006ac45b(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c118e1;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WDC3E8CE3>::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return puVar1;
}



undefined4 __thiscall FUN_006ac48e(undefined4 param_1_00,byte param_1)

{
  FUN_006ac45b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ac4aa(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WDC3E8CE3>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ac4f0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ac507(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006ac4aa(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_006ac554(void)

{
  undefined local_c [4];
  int local_8;
  
  FUN_006ac507(local_c);
  FUN_0046f668();
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return;
}



char __thiscall FUN_006ac57c(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  char local_69;
  undefined4 *local_68;
  int local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined local_50 [8];
  undefined4 local_48;
  undefined4 local_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c398f3;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_14;
  local_69 = '\x01';
  FUN_00b72ec0(local_50);
  local_c = 0;
  iVar3 = *(int *)(param_1_00 + 8);
  local_5c = **(undefined4 **)(iVar3 + 0x1c);
  local_60 = *(undefined4 *)(iVar3 + 8);
  local_64 = iVar3;
  do {
    local_54 = *(undefined4 *)(iVar3 + 0x1c);
    local_58 = *(undefined4 *)(iVar3 + 8);
    cVar1 = FUN_0041c034(uVar2);
    if (cVar1 == '\0') break;
    local_68 = (undefined4 *)0x0;
    local_c._0_1_ = 1;
    puVar4 = (undefined4 *)0x0;
    if (local_69 != '\0') {
      FUN_006adbc2();
      local_69 = FUN_006bc9b5(param_2,&local_68);
      puVar4 = local_68;
      if (local_69 == '\0') {
        FUN_00b940e0(0xf409d81b);
        puVar4 = local_68;
      }
      else if ((local_68[2] != 0) &&
              (local_69 = FUN_00bb13e0(local_68), iVar3 = local_64, local_69 == '\0')) {
        FUN_00b940e0(0xccb86cc2);
        iVar3 = local_64;
      }
    }
    local_c = (uint)local_c._1_3_ << 8;
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)(1);
    }
    FUN_007a741a();
  } while (local_69 != '\0');
  if (local_69 != '\0') {
    local_48 = 0;
    local_44 = 0;
    local_69 = FUN_00bb1450(0xffffffff);
    if (local_69 == '\0') {
      FUN_00b940e0(0xccad8780);
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return local_69;
}



char __thiscall FUN_006ac6f5(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char local_5;
  
  local_5 = '\x01';
  FUN_006ac8d4(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return local_5;
    }
    local_5 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (local_5 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006ac74f(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006ac8d4(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006ac764. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006ac767(undefined4 param_1_00,byte param_1)

{
  FUN_006ae57c();
  FUN_006ae1f5();
  FUN_006bebbe();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ac7b1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W15DB837A::WDC3E8CE3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ac7f7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006ac80e(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *unaff_ESI;
  undefined4 unaff_EDI;
  int local_14;
  
  puVar3 = (undefined4 *)FUN_006ac7b1(unaff_EDI);
  uVar1 = *puVar3;
  *puVar3 = 0;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&stack0xffffffe4);
  if ((undefined4 *)&stack0xffffffe4 != unaff_ESI) {
    *unaff_ESI = unaff_EDI;
  }
  iVar2 = unaff_ESI[1];
  unaff_ESI[1] = uVar1;
  if (iVar2 != 0) {
    FUN_0040127a();
  }
  return;
}



undefined4 FUN_006ac882(void)

{
  return 0x40010001;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ac888(undefined4 *param_1)

{
  FUN_006adf6e();
  *param_1 = WF8266037::W15DB837A::WDC3E8CE3::vftable;
  FUN_006adfbb(param_1 + 9);
  FUN_006ae387(param_1 + 0xd);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006ac8d4(void)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x44);
  if (pvVar1 != (void *)0x0) {
    FUN_006ac888(pvVar1);
  }
  FUN_006ac80e();
  return;
}



void __thiscall FUN_006ac916(int param_1_00,undefined4 *param_1)

{
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006ac8d4(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006ac94a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6ac956;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                   &WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WDC3E8CE3>::
                    RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                           &WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WDC3E8CE3>::
                            RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



char FUN_006aca00(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int **ppiVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  int local_44;
  undefined4 *puStack_40;
  uint local_3c;
  undefined4 local_38;
  int local_34;
  uint local_30;
  int iStack_2c;
  int *local_28;
  int iStack_24;
  undefined auStack_20 [4];
  int iStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c32e75;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  cVar2 = FUN_00bb64e0(&local_30,0,uVar3);
  if (cVar2 == '\0') {
    FUN_00b940e0(0x2fe87715);
  }
  local_44 = 4;
  if (cVar2 != '\0') {
    cVar2 = FUN_00bb64e0(&local_38,0,uVar3);
    if (cVar2 == '\0') {
      FUN_00b940e0(0x54bc2114);
    }
    local_44 = 8;
    if (cVar2 != '\0') {
      ppiVar4 = (int **)FUN_0042efbd();
      local_c = 0;
      cVar2 = (**(code **)(**ppiVar4 + 4))(&local_38,local_38);
      local_c = 0xffffffff;
      if (iStack_24 != 0) {
        FUN_0040127a();
      }
      if (cVar2 == '\0') {
        FUN_00b940e0(0x968fabb9);
      }
    }
  }
  local_3c = 0;
  if (cVar2 != '\0') {
    do {
      if (local_30 <= local_3c) break;
      if (cVar2 != '\0') {
        cVar2 = FUN_00bb64e0(&iStack_2c,0,uVar3);
        local_44 = local_44 + 4;
        if (cVar2 == '\0') {
          FUN_00b940e0(0x2e894410);
        }
      }
      iVar1 = iStack_2c;
      puStack_40 = (undefined4 *)0x0;
      local_c = 1;
      if (cVar2 != '\0') {
        cVar2 = FUN_00bb6360(&puStack_40,param_2,local_44);
        local_44 = local_44 + iVar1;
        if (cVar2 == '\0') {
          FUN_00b940e0(0x6aa6f47f);
        }
      }
      local_28 = (int *)0x0;
      iStack_24 = 0;
      local_c._0_1_ = 2;
      if (cVar2 != '\0') {
        puVar5 = (undefined4 *)operator_new(0x10);
        if (puVar5 != (undefined4 *)0x0) {
          *puVar5 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WDC3E8CE3>::vftable;
          puVar5[1] = 0;
          puVar5[2] = 0;
          puVar5[3] = 0;
        }
        FUN_006ac554(&local_28);
        cVar2 = (**(code **)(*local_28 + 8))(param_1,puStack_40);
        if (cVar2 == '\0') {
          FUN_00b940e0(0xf6386ffd);
        }
        else {
          uVar6 = FUN_006ac94a(auStack_20,&local_28);
          local_c._0_1_ = 3;
          FUN_006a90d6(uVar6,*(undefined4 *)(local_34 + 0xc),*(undefined4 *)(local_34 + 0x20));
          local_c._0_1_ = 2;
          if (iStack_1c != 0) {
            FUN_0040127a();
          }
        }
      }
      local_c = CONCAT31(local_c._1_3_,1);
      if (iStack_24 != 0) {
        FUN_0040127a();
      }
      local_c = 0xffffffff;
      if (puStack_40 != (undefined4 *)0x0) {
        (**(code **)*puStack_40)(1);
      }
      local_3c = local_3c + 1;
    } while (cVar2 != '\0');
    if (cVar2 != '\0') {
      *(undefined *)(local_34 + 8) = 1;
    }
  }
  ExceptionList = local_14;
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006acc6b(int param_1)

{
  FUN_006a846a();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x14));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006acca0(undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::
             W8EAEAA23<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WDC3E8CE3>_>
             ::vftable;
  FUN_006acc6b(param_1 + 3);
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return;
}



undefined4 FUN_006acd03(void)

{
  return 0x40002004;
}



void Catch_All_006acd4f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined __fastcall FUN_006acdd8(int param_1)

{
  undefined uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)FUN_006ad7fd();
  uVar1 = *(undefined *)*puVar2;
  if (param_1 != 0) {
    FUN_0040127a();
  }
  return uVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006aceba(int param_1,undefined4 param_2,int param_3)

{
  FUN_005d11c9(param_1 + 8);
  if (param_3 != 0) {
    FUN_0040127a();
  }
  return;
}



undefined4 FUN_006acf3d(void)

{
  return 0x40002002;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_006acf43(undefined4 param_1_00,int param_2,undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::W329C7FF8<bool>::vftable;
  param_1[1] = param_1_00;
  param_1[2] = 0;
  param_1[3] = 0;
  if (param_2 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_006acf80(undefined4 param_1_00,byte param_1)

{
  FUN_006ad12b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_006acf9c(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *local_8;
  
  local_8 = param_1;
  puVar2 = (undefined4 *)FUN_00bb6240(&local_8,*(char *)param_1[2] != '\0');
  uVar1 = *puVar2;
  *puVar2 = 0;
  FUN_0040c727(uVar1);
  if (local_8 != (undefined4 *)0x0) {
    (**(code **)*local_8)(1);
  }
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_006acfdb(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_18 = 0;
  local_14 = 0;
  local_8 = 0;
  cVar1 = FUN_006be405(&local_18,param_2);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xdffb370d);
  }
  else {
    FUN_005d11c9(param_1_00 + 8);
  }
  local_8 = 0xffffffff;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  return cVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ad043(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<bool>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ad089(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ad09c(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006ad043(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



undefined4 FUN_006ad0e9(undefined4 param_1)

{
  operator_new(1);
  FUN_006ad09c(param_1);
  return param_1;
}



undefined4 FUN_006ad10c(void)

{
  undefined local_c [4];
  int local_8;
  
  FUN_006ad0e9(local_c);
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return 0x11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006ad12b(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c118e1;
  *param_1 = WF8266037::W2AC8B1F5::W329C7FF8<bool>::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ad15e(undefined4 *param_1)

{
  FUN_006ad8c1(param_1);
  *param_1 = WF8266037::W15DB837A::W86B9C6F5::vftable;
  FUN_006adfbb(param_1 + 0x15);
  FUN_006ae387(param_1 + 0x19);
  FUN_006adfbb(param_1 + 0x1d);
  FUN_006adfbb(param_1 + 0x21);
  FUN_006acf43(param_1 + 0x25);
  FUN_006ad7c0(param_1 + 0x29);
  FUN_006acf43(param_1 + 0x2d);
  FUN_006ad7c0(param_1 + 0x31);
  return param_1;
}



undefined4 FUN_006ad232(void)

{
  return 0x40001003;
}



void Catch_All_006ad27e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006ad348(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __fastcall FUN_006ad3d1(int param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)FUN_006ad7fd();
  uVar1 = *(undefined4 *)*puVar2;
  if (param_1 != 0) {
    FUN_0040127a();
  }
  return uVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006ad3f7(undefined4 param_1,undefined4 param_2)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x0000000c);
}



undefined4 FUN_006ad443(void)

{
  return 0x40001004;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006ad47c(undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::W329C7FF8<class_common::WB943A9F0>::vftable;
  FUN_005e72d0();
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return;
}



undefined4 __thiscall FUN_006ad4ab(undefined4 param_1_00,byte param_1)

{
  FUN_006ad47c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006ad4c7(undefined4 param_1)

{
  FUN_006be224(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __fastcall FUN_006ad4d7(int param_1)

{
  char cStack0000000b;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_18 = 0;
  local_14 = 0;
  local_8 = 0;
  cStack0000000b = FUN_006be749(&local_18);
  if (cStack0000000b == '\0') {
    FUN_00b940e0(0xdffb370d);
  }
  else {
    FUN_0046f638(param_1 + 8);
  }
  local_8 = 0xffffffff;
  FUN_005e72d0();
  return cStack0000000b;
}



undefined4 FUN_006ad53a(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  
  uVar2 = 0;
  pvVar1 = operator_new(0x10);
  if (pvVar1 != (void *)0x0) {
    FUN_00b92800(uVar2);
  }
  FUN_0042ae30(param_1);
  return param_1;
}



undefined4 FUN_006ad568(void)

{
  undefined local_c [8];
  
  FUN_006ad53a(local_c);
  FUN_005e72d0();
  return 0x110;
}



void FUN_006ad585(void)

{
  FUN_005d0c77();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_006ad58d(undefined4 param_1_00,int param_2,undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::W329C7FF8<class_common::WB943A9F0>::vftable;
  param_1[1] = param_1_00;
  param_1[2] = 0;
  param_1[3] = 0;
  if (param_2 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006ad5ca(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c118e1;
  *param_1 = WF8266037::W2AC8B1F5::W329C7FF8<__int64>::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return puVar1;
}



undefined4 __thiscall FUN_006ad5fd(undefined4 param_1_00,byte param_1)

{
  FUN_006ad5ca();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_006ad619(int param_1_00,undefined4 param_1)

{
  FUN_006be351(param_1,**(undefined4 **)(param_1_00 + 8),(*(undefined4 **)(param_1_00 + 8))[1]);
  return;
}



char __thiscall FUN_006ad63c(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_20 = 0;
  local_1c = 0;
  local_c = 0;
  cVar1 = FUN_006be517(&local_20,param_2,DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xdffb370d);
  }
  else {
    FUN_005d11c9(param_1_00 + 8);
  }
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return cVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ad6d8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<__int64>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ad71e(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ad731(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006ad6d8(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



undefined4 FUN_006ad77e(undefined4 param_1)

{
  operator_new(8);
  FUN_006ad731(param_1);
  return param_1;
}



undefined4 FUN_006ad7a1(void)

{
  undefined local_c [4];
  int local_8;
  
  FUN_006ad77e(local_c);
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return 0x21;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_006ad7c0(undefined4 param_1_00,int param_2,undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::W329C7FF8<__int64>::vftable;
  param_1[1] = param_1_00;
  param_1[2] = 0;
  param_1[3] = 0;
  if (param_2 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



void FUN_006ad7fd(void)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *(undefined4 *)(in_EAX + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006ad848(undefined4 param_1)

{
  FUN_006ae57c();
  FUN_006ae354();
  FUN_006adb03(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_006ad884(undefined4 param_1_00,int param_2,undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::W329C7FF8<struct_boost::uuids::uuid>::vftable;
  param_1[1] = param_1_00;
  param_1[2] = 0;
  param_1[3] = 0;
  if (param_2 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ad8c1(undefined4 *param_1)

{
  FUN_006adf6e();
  *param_1 = WF8266037::WBDE613C5::W88A0D6EA::vftable;
  FUN_006ad884(param_1 + 9);
  FUN_006ad884(param_1 + 0xd);
  FUN_006adfbb(param_1 + 0x11);
  return param_1;
}



undefined4 __thiscall FUN_006ad91d(undefined4 param_1_00,byte param_1)

{
  FUN_006adad0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006ad939(undefined4 param_1)

{
  FUN_006be2b2(param_1);
  return;
}



char __fastcall FUN_006ad94d(int param_1)

{
  char cVar1;
  undefined4 local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_20 = 0;
  local_1c = 0;
  local_c = 0;
  cVar1 = FUN_006be7d7(&local_20,DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xdffb370d);
  }
  else {
    FUN_005d11c9(param_1 + 8);
  }
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return cVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ad9e8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_boost::uuids::uuid>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ada2e(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ada41(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006ad9e8(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



undefined4 FUN_006ada8e(undefined4 param_1)

{
  operator_new(0x10);
  FUN_006ada41(param_1);
  return param_1;
}



undefined4 FUN_006adab1(void)

{
  undefined local_c [4];
  int local_8;
  
  FUN_006ada8e(local_c);
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return 0x33;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006adad0(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c118e1;
  *param_1 = WF8266037::W2AC8B1F5::W329C7FF8<struct_boost::uuids::uuid>::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006adb03(void)

{
  FUN_006ae1f5();
  FUN_006adad0();
  FUN_006adad0();
  FUN_006bebbe();
  return;
}



undefined4 __thiscall FUN_006adb48(undefined4 param_1_00,byte param_1)

{
  FUN_006ad848(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006adb65(int param_1_00,undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W68D33117>::vftable;
  param_1[1] = 3;
  param_1[2] = 0;
  param_1[3] = 0;
  if (param_1_00 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_006adba6(undefined4 param_1_00,byte param_1)

{
  FUN_006ae354();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int * FUN_006adbc2(void)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_006adbd9;
    }
  }
  iVar2 = *piVar1;
LAB_006adbd9:
  if (unaff_ESI[1] == *(int **)(iVar2 + 0x14)) {
    FUN_00a3fb10();
  }
  return unaff_ESI[1] + 2;
}



char __thiscall FUN_006adbed(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  char local_69;
  undefined4 *local_68;
  int local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined local_50 [8];
  undefined4 local_48;
  undefined4 local_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c398f3;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_14;
  local_69 = '\x01';
  FUN_00b72ec0(local_50);
  local_c = 0;
  iVar3 = *(int *)(param_1_00 + 8);
  local_5c = **(undefined4 **)(iVar3 + 0x1c);
  local_60 = *(undefined4 *)(iVar3 + 8);
  local_64 = iVar3;
  do {
    local_54 = *(undefined4 *)(iVar3 + 0x1c);
    local_58 = *(undefined4 *)(iVar3 + 8);
    cVar1 = FUN_0041c034(uVar2);
    if (cVar1 == '\0') break;
    local_68 = (undefined4 *)0x0;
    local_c._0_1_ = 1;
    puVar4 = (undefined4 *)0x0;
    if (local_69 != '\0') {
      FUN_006adbc2();
      local_69 = FUN_006bc9b5(param_2,&local_68);
      puVar4 = local_68;
      if (local_69 == '\0') {
        FUN_00b940e0(0xf409d81b);
        puVar4 = local_68;
      }
      else if ((local_68[2] != 0) &&
              (local_69 = FUN_00bb13e0(local_68), iVar3 = local_64, local_69 == '\0')) {
        FUN_00b940e0(0xccb86cc2);
        iVar3 = local_64;
      }
    }
    local_c = (uint)local_c._1_3_ << 8;
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)(1);
    }
    FUN_007a741a();
  } while (local_69 != '\0');
  if (local_69 != '\0') {
    local_48 = 0;
    local_44 = 0;
    local_69 = FUN_00bb1450(0xffffffff);
    if (local_69 == '\0') {
      FUN_00b940e0(0xccad8780);
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return local_69;
}



char __thiscall FUN_006add66(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char local_5;
  
  local_5 = '\x01';
  FUN_006ae2c4(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return local_5;
    }
    local_5 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (local_5 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006addc0(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006ae2c4(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006addd5. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006addd8(undefined4 param_1_00,byte param_1)

{
  FUN_006ae1f5();
  FUN_006ae57c();
  FUN_006ae57c();
  FUN_006ae57c();
  FUN_006ae57c();
  FUN_006ae57c();
  FUN_006bebbe();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ade52(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WD1C3C411::W68D33117>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ade98(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006adeaf(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006ade52(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



undefined4 __thiscall FUN_006adefc(undefined4 param_1_00,byte param_1)

{
  FUN_006bebbe();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006adf18(void)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0xc);
  if (pvVar1 != (void *)0x0) {
    *(void **)pvVar1 = pvVar1;
  }
  if ((void **)((int)pvVar1 + 4) != (void **)0x0) {
    *(void **)((int)pvVar1 + 4) = pvVar1;
  }
  return;
}



void FUN_006adf30(void)

{
  int *piVar1;
  int iVar2;
  int unaff_ESI;
  
  piVar1 = *(int **)(unaff_ESI + 0x14);
  iVar2 = *piVar1;
  *piVar1 = (int)piVar1;
  *(int *)(*(int *)(unaff_ESI + 0x14) + 4) = *(int *)(unaff_ESI + 0x14);
  *(undefined4 *)(unaff_ESI + 0x18) = 0;
  if (iVar2 != *(int *)(unaff_ESI + 0x14)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0x14));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006adf6e(void)

{
  int *piVar1;
  undefined4 uVar2;
  undefined4 *unaff_EDI;
  
  *unaff_EDI = WF8266037::W2AC8B1F5::WFF2A6977::vftable;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(unaff_EDI + 2);
  }
  unaff_EDI[2] = piVar1;
  uVar2 = FUN_006adf18();
  unaff_EDI[8] = 0;
  unaff_EDI[7] = uVar2;
  return;
}



undefined4 FUN_006adfb5(void)

{
  return 0x40010003;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_006adfbb(undefined4 param_1_00,int param_2,undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::W329C7FF8<int>::vftable;
  param_1[1] = param_1_00;
  param_1[2] = 0;
  param_1[3] = 0;
  if (param_2 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_006adff8(undefined4 param_1_00,byte param_1)

{
  FUN_006ae1f5();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_006ae014(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *local_8;
  
  puVar2 = (undefined4 *)FUN_00bb60c0(&local_8);
  uVar1 = *puVar2;
  *puVar2 = 0;
  FUN_0040c727(uVar1);
  if (local_8 != (undefined4 *)0x0) {
    (**(code **)*local_8)(1);
  }
  return 1;
}



char __fastcall FUN_006ae04c(int param_1)

{
  char cVar1;
  undefined4 local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_20 = 0;
  local_1c = 0;
  local_c = 0;
  cVar1 = FUN_006be48d(&local_20,DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xdffb370d);
  }
  else {
    FUN_005d11c9(param_1 + 8);
  }
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return cVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ae0e7(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<int>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ae12d(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ae140(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006ae0e7(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



undefined4 FUN_006ae18d(undefined4 param_1)

{
  operator_new(4);
  FUN_006ae140(param_1);
  return param_1;
}



undefined4 FUN_006ae1b0(void)

{
  undefined local_c [4];
  int local_8;
  
  FUN_006ae18d(local_c);
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return 0x20;
}



// WARNING: Removing unreachable block (ram,0x006ae1ee)

void FUN_006ae1cf(void)

{
  FUN_0046f668(0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006ae1f5(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c118e1;
  *param_1 = WF8266037::W2AC8B1F5::W329C7FF8<int>::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ae228(undefined4 *param_1)

{
  FUN_006adf6e();
  *param_1 = WF8266037::WD1C3C411::W68D33117::vftable;
  FUN_006ae387(param_1 + 9);
  FUN_006ae387(param_1 + 0xd);
  FUN_006ae387(param_1 + 0x11);
  FUN_006ae387(param_1 + 0x15);
  FUN_006ae387(param_1 + 0x19);
  FUN_006adfbb(param_1 + 0x1d);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006ae2c4(void)

{
  undefined local_18 [4];
  void *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x6ae2d0;
  local_14 = operator_new(0x84);
  local_8 = 0;
  if (local_14 != (void *)0x0) {
    FUN_006ae228(local_14);
  }
  local_8 = 0xffffffff;
  FUN_006adeaf(local_18);
  FUN_0046f668();
  if (local_14 != (void *)0x0) {
    FUN_0040127a();
  }
  return;
}



void __thiscall FUN_006ae320(int param_1_00,undefined4 *param_1)

{
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006ae2c4(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006ae354(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c118e1;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W68D33117>::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_006ae387(undefined4 param_1_00,int param_2,undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::
             W329C7FF8<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>
             ::vftable;
  param_1[1] = param_1_00;
  param_1[2] = 0;
  param_1[3] = 0;
  if (param_2 != 0) {
    FUN_006bebcf(param_1);
  }
  return param_1;
}



void __thiscall FUN_006ae3c4(int param_1_00,undefined4 param_1)

{
  FUN_006be0f2(param_1,*(undefined4 *)(param_1_00 + 8));
  return;
}



char __thiscall FUN_006ae3d5(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_20 = 0;
  local_1c = 0;
  local_c = 0;
  cVar1 = FUN_006be643(&local_20,param_2,DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xdffb370d);
  }
  else {
    FUN_005d11c9(param_1_00 + 8);
  }
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return cVar1;
}



void __fastcall FUN_006ae471(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_0041c33b(1);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ae480(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ae4c6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_0041c33b(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ae4de(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006ae480(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



undefined4 FUN_006ae52b(undefined4 param_1)

{
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *this;
  
  this = (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *)
         operator_new(0x1c);
  if (this != (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
               *)0x0) {
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(this);
  }
  FUN_006ae4de(param_1);
  return param_1;
}



undefined4 FUN_006ae55d(void)

{
  undefined local_c [4];
  int local_8;
  
  FUN_006ae52b(local_c);
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return 0x30;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006ae57c(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c118e1;
  *param_1 = WF8266037::W2AC8B1F5::
             W329C7FF8<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>
             ::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ae5af(undefined4 *param_1)

{
  FUN_006ad8c1(param_1);
  *param_1 = WF8266037::WD1C3C411::WB5402333::vftable;
  FUN_006adb65(param_1 + 0x15);
  FUN_006ae387(param_1 + 0x19);
  return param_1;
}



undefined4 __thiscall FUN_006ae669(undefined4 param_1,byte param_2)

{
  FUN_006ae685();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006ae685(undefined4 *param_1)

{
  undefined *puVar1;
  undefined4 local_34;
  undefined4 *local_30;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  puVar1 = &LAB_00c5de5f;
  *param_1 = WF8266037::W1E8966B9::vftable;
  local_8 = 2;
  local_18 = param_1;
  if (param_1[2] != 0) {
    local_1c = &local_34;
    local_34 = param_1[2];
    local_30 = param_1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 3);
  }
  if (*(char *)(param_1 + 8) != '\0') {
    *(undefined *)(param_1 + 8) = 0;
  }
  local_8 = 0xffffffff;
  if (param_1[3] != 0) {
    local_30 = (undefined4 *)0x6ae6ef;
    puVar1 = (undefined *)FUN_0040127a();
  }
  return puVar1;
}



undefined * Catch_All_006ae6cc(void)

{
  return &DAT_006ae6d2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006ae6d5(void)

{
  int unaff_EBP;
  int unaff_EDI;
  
  if (*(char *)(unaff_EDI + 0x20) != '\0') {
    *(undefined *)(unaff_EDI + 0x20) = 0;
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  if (*(int *)(unaff_EDI + 0xc) != 0) {
    FUN_0040127a();
  }
  return;
}



char __fastcall FUN_006ae7a7(int param_1)

{
  char cVar1;
  
  cVar1 = '\x01';
  if (*(int *)(param_1 + 8) != 0) {
    cVar1 = FUN_006915f2();
    if (cVar1 == '\0') {
      FUN_00b940e0();
    }
  }
  if (*(int *)(param_1 + 8) != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 0xc);
  }
  return cVar1;
}



bool FUN_006ae818(void)

{
  int in_EAX;
  bool bVar1;
  
  bVar1 = *(int *)(in_EAX + 8) != 0;
  if (!bVar1) {
    FUN_00b940e0(0xad58bd7e);
  }
  return bVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006af346)

uint FUN_006af0a0(int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined local_48 [4];
  int local_44;
  undefined4 local_40;
  undefined4 local_3c;
  int local_38;
  int local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  undefined4 local_20;
  undefined **local_1c;
  undefined local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x54;
  local_8 = 0x6af0ac;
  cVar1 = FUN_006ae818();
  if ((cVar1 == '\0') ||
     (uVar2 = -(uint)(*(char *)(param_1 + 0x20) != '\0'), (uVar2 & 0x6a1cd8) == 0)) {
    cVar1 = false;
    uVar2 = FUN_00b940e0(0x3da455fe);
  }
  else {
    cVar1 = true;
  }
  local_38 = 0;
  local_34 = 0;
  local_8 = 0;
  if ((bool)cVar1 != false) {
    FUN_00691632();
    local_8._0_1_ = 1;
    uVar2 = FUN_004fe47e();
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_44 != 0) {
      uVar2 = FUN_0040127a();
    }
    cVar1 = local_38 != 0;
    if (!(bool)cVar1) {
      uVar2 = FUN_00b940e0(0x83de3dcf);
    }
  }
  local_30 = 0;
  local_2c = 0;
  local_8._0_1_ = 2;
  if ((bool)cVar1 != false) {
    FUN_006af654(local_48,&local_38);
    local_8._0_1_ = 3;
    uVar2 = FUN_004fe47e();
    local_8._0_1_ = 2;
    if (local_44 != 0) {
      uVar2 = FUN_0040127a();
    }
    cVar1 = local_30 != 0;
    if (!(bool)cVar1) {
      uVar2 = FUN_00b940e0(0x86827abd);
    }
  }
  local_28 = 0;
  local_24 = 0;
  if ((bool)cVar1 != false) {
    local_15 = 0;
    local_1c = &PTR_DAT_03057af8;
    local_8._0_1_ = 5;
    cVar1 = FUN_00690241(&local_28,param_1 + 0x10,&local_1c);
    local_8._0_1_ = 4;
    if (cVar1 == '\0') {
      uVar4 = 0x67ddb14e;
      cVar1 = '\0';
    }
    else {
      uVar2 = (**(code **)(*(int *)(local_28 + 0x24) + 0x14))();
      cVar1 = (char)uVar2;
      if (cVar1 != '\0') goto LAB_006af1f0;
      uVar4 = 0xbd827fea;
    }
    uVar2 = FUN_00b940e0(uVar4);
  }
LAB_006af1f0:
  local_40 = 0;
  local_3c = 0;
  local_8 = CONCAT31(local_8._1_3_,6);
  if (cVar1 == '\0') {
    local_3c = 0;
    local_40 = 0;
    local_8._0_1_ = 2;
    if (local_24 != 0) {
      uVar2 = FUN_0040127a();
    }
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_2c != 0) {
      uVar2 = FUN_0040127a();
    }
    local_8 = 0xffffffff;
    if (local_34 != 0) {
      uVar2 = FUN_0040127a();
    }
    return uVar2 & 0xffffff00;
  }
  puVar3 = (undefined4 *)FUN_006af70a(local_48,&local_28);
  local_20 = *puVar3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar3 + 1);
}



void __fastcall FUN_006af385(undefined4 param_1_00,int param_2_00,char *param_1,undefined4 param_2)

{
  undefined4 ***pppuVar1;
  char *pcVar2;
  int ***pppiStack_84;
  int *piStack_80;
  uint uStack_7c;
  undefined auStack_6c [7];
  char local_65;
  undefined4 local_64;
  int local_60;
  int local_5c;
  undefined4 ***local_58;
  int local_54;
  undefined4 ****local_50;
  int local_4c;
  int local_48;
  int ***local_44;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5d0a0;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_6c;
  uStack_7c = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_14;
  local_50 = (undefined4 ****)param_1;
  *param_1 = '\0';
  local_64 = param_2;
  piStack_80 = (int *)0x6af3da;
  local_65 = FUN_006ae818();
  if (local_65 == '\0') {
    piStack_80 = (int *)0x7fe5d7fb;
    pppiStack_84 = (int ***)0x6af3f1;
    FUN_00b940e0();
  }
  local_4c = 0;
  local_48 = 0;
  local_c = 0;
  if (local_65 != '\0') {
    piStack_80 = (int *)0x6af413;
    FUN_00691632();
    local_c._0_1_ = 1;
    piStack_80 = (int *)0x6af421;
    FUN_004fe47e();
    local_c = (uint)local_c._1_3_ << 8;
    if (local_5c != 0) {
      piStack_80 = (int *)0x6af433;
      FUN_0040127a();
    }
    local_65 = local_4c != 0;
    if (!(bool)local_65) {
      piStack_80 = (int *)0xeaf687a5;
      pppiStack_84 = (int ***)0x6af452;
      FUN_00b940e0();
    }
  }
  local_60 = 0;
  local_5c = 0;
  local_c._0_1_ = 2;
  if (local_65 != '\0') {
    piStack_80 = &local_4c;
    pppiStack_84 = (int ***)&local_58;
    FUN_006af654();
    local_c._0_1_ = 3;
    piStack_80 = (int *)0x6af488;
    FUN_004fe47e();
    local_c._0_1_ = 2;
    if (local_54 != 0) {
      piStack_80 = (int *)0x6af49a;
      FUN_0040127a();
    }
    local_65 = local_60 != 0;
    if (!(bool)local_65) {
      piStack_80 = (int *)0x96bb7dc8;
      pppiStack_84 = (int ***)0x6af4b9;
      FUN_00b940e0();
    }
  }
  pcVar2 = (char *)local_50;
  local_58 = (undefined4 ***)0x0;
  local_54 = 0;
  local_c._0_1_ = 4;
  if (local_65 != '\0') {
    piStack_80 = (int *)local_64;
    pppiStack_84 = (int ***)(param_2_00 + 0x10);
    local_44 = pppiStack_84;
    local_65 = FUN_00690241(&local_58);
    pppuVar1 = local_58;
    if (local_65 == '\0') {
      local_65 = '\0';
      if (*pcVar2 != '\0') goto LAB_006af5fa;
      piStack_80 = (int *)0xc1c94ccf;
    }
    else {
      piStack_80 = (int *)0x6af51f;
      local_65 = (*(code *)local_58[9][5])();
      if (local_65 != '\0') {
        local_50 = &pppiStack_84;
        pppiStack_84 = pppuVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(&local_54);
      }
      piStack_80 = (int *)0x62dc94f8;
    }
    local_65 = '\0';
    pppiStack_84 = (int ***)0x6af5f9;
    FUN_00b940e0();
  }
LAB_006af5fa:
  local_c._0_1_ = 2;
  if (local_54 != 0) {
    piStack_80 = (int *)0x6af60c;
    FUN_0040127a();
  }
  local_c = (uint)local_c._1_3_ << 8;
  if (local_5c != 0) {
    piStack_80 = (int *)0x6af61e;
    FUN_0040127a();
  }
  local_c = 0xffffffff;
  if (local_48 != 0) {
    piStack_80 = (int *)0x6af630;
    FUN_0040127a();
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006af654(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6af660;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WC1AF8CFC::RTTI_Type_Descriptor,
                   &WF8266037::W414BA8E1::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WC1AF8CFC::RTTI_Type_Descriptor,
                           &WF8266037::W414BA8E1::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006af70a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6af716;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD72F1F4B::WFD540EA1::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD72F1F4B::WFD540EA1::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006af806(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __fastcall FUN_006af81d(undefined4 param_1)

{
  FUN_006ad7fd();
  return param_1;
}



void FUN_006af82c(void)

{
  undefined *unaff_ESI;
  
  *unaff_ESI = 0;
  unaff_ESI[0x20] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(unaff_ESI + 0x40));
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(unaff_ESI + 0x5c));
  *(undefined4 *)(unaff_ESI + 0x78) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(unaff_ESI + 0x7c));
  return;
}



undefined4 __thiscall FUN_006af914(undefined4 param_1_00,byte param_1)

{
  FUN_006af931(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006af931(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_1c [5];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  *param_1 = WF8266037::WD7AE7171::vftable;
  local_8 = 3;
  FUN_005d1159();
  if (local_1c != param_1 + 0x40) {
    param_1[0x40] = 0;
  }
  iVar1 = param_1[0x41];
  param_1[0x41] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 2;
  if (param_1[0x43] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (param_1[0x41] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_006b9623();
  return;
}



void Catch_All_006af9ae(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_006afa29(void)

{
  int unaff_EBX;
  code *local_10;
  undefined4 local_c;
  
  local_c = *(undefined4 *)(unaff_EBX + 0x100);
  local_10 = FUN_006ae7a7;
  FUN_007f2630(&local_10);
  FUN_006b974f(unaff_EBX);
  return;
}



void FUN_006afa9e(void)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *(undefined4 *)(in_EAX + 0x100);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0x104);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006afab6(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *local_70;
  undefined4 *local_28;
  undefined4 local_24 [2];
  undefined4 **local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x6afac2;
  local_70 = (undefined4 *)0x6afacb;
  puVar2 = (undefined4 *)operator_new(0x1c);
  local_18 = puVar2;
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    local_8 = 1;
    *puVar2 = `public:_bool___thiscall_WF8266037::WD7AE7171::readNewsWithCaching(class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,bool)'
              ::`2'::W05B78E23::vftable;
    FUN_004398f2();
  }
  local_24[0] = 0;
  local_8 = 2;
  local_70 = (undefined4 *)0x6afb06;
  local_28 = puVar2;
  puVar3 = (undefined4 *)FUN_006b3cb5();
  uVar1 = *puVar3;
  *puVar3 = local_24[0];
  local_24[0] = uVar1;
  if (local_18 != (undefined4 *)0x0) {
    FUN_0040127a();
  }
  local_70 = puVar2;
  FUN_007a491c(&local_28);
  local_1c = &local_70;
  local_8 = 3;
  local_70 = local_28;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_24);
}



void FUN_006afc06(void)

{
  int in_EAX;
  int unaff_ESI;
  
  FUN_0041c550();
  FUN_0041c550();
  FID_conflict_assign(in_EAX + 0x40,0,0xffffffff);
  FID_conflict_assign(in_EAX + 0x5c,0,0xffffffff);
  *(undefined4 *)(unaff_ESI + 0x78) = *(undefined4 *)(in_EAX + 0x78);
  FID_conflict_assign(in_EAX + 0x7c,0,0xffffffff);
  return;
}



void FUN_006afc55(void)

{
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00417f97();
  FUN_00417f97();
  return;
}



void FUN_006afc8a(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 param_4;
  int local_30;
  undefined4 *local_2c;
  undefined4 *local_20;
  undefined4 local_1c [2];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5de2e;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_20 = (undefined4 *)operator_new(0xc0);
  if (local_20 == (undefined4 *)0x0) {
    local_20 = (undefined4 *)0x0;
  }
  else {
    *local_20 = `public:_bool___thiscall_WF8266037::WD7AE7171::secretHasher(class_std::auto_ptr<class_common::WB943A9F0>&,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0&)'
                ::`2'::W05B78E23::vftable;
    local_20[1] = 0;
    FUN_006af82c();
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)(local_20 + 0x28));
    local_20[0x2f] = 0;
  }
  local_1c[0] = 0;
  local_c = 0;
  puVar2 = (undefined4 *)FUN_006b3d8b();
  uVar1 = *puVar2;
  *puVar2 = local_1c[0];
  local_1c[0] = uVar1;
  if (local_30 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&local_20);
  local_c = 1;
  FUN_006afc06();
  FID_conflict_assign(param_4);
  puVar2 = (undefined4 *)FUN_00b93190();
  *puVar2 = 0;
  FUN_0040c727();
  if (local_2c != (undefined4 *)0x0) {
    (**(code **)*local_2c)();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006afe75(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 param_5;
  undefined4 *local_20;
  undefined4 local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x6afe81;
  puVar2 = (undefined4 *)operator_new(0xd0);
  local_20 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = `public:_bool___thiscall_WF8266037::WD7AE7171::zkpWitness(class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<struct_WF8266037::WCDA438C9>&,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&)'
              ::`2'::W05B78E23::vftable;
    puVar2[1] = 0;
    *(undefined *)(puVar2 + 2) = 0;
    FUN_006af82c();
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)(puVar2 + 0x2c));
    local_20 = puVar2;
  }
  local_1c = 0;
  local_8 = 0;
  puVar2 = (undefined4 *)FUN_006b3e6f();
  uVar1 = *puVar2;
  *puVar2 = local_1c;
  local_1c = uVar1;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&local_20);
  local_8 = 1;
  FUN_006afc06();
  FID_conflict_assign(param_5);
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006afff1(undefined4 *param_1_00,byte param_1)

{
  FUN_00401829(1,0);
  FUN_006afc55();
  if (*(char *)(param_1_00 + 2) != '\0') {
    *(undefined *)(param_1_00 + 2) = 0;
  }
  if ((undefined4 *)param_1_00[1] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1_00[1])(1);
  }
  *param_1_00 = WF8266037::W3032D010::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006b0051(undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *local_1c;
  undefined4 local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x6b005d;
  local_1c = (undefined4 *)operator_new(0xa4);
  if (local_1c == (undefined4 *)0x0) {
    local_1c = (undefined4 *)0x0;
  }
  else {
    *local_1c = `public:_bool___thiscall_WF8266037::WD7AE7171::zkpChallenge(class_std::auto_ptr<class_common::WB943A9F0>&,struct_WF8266037::WC9135E4C_const&,class_common::WB943A9F0_const&)'
                ::`2'::W05B78E23::vftable;
    local_1c[1] = 0;
    FUN_006af82c();
    local_1c[0x28] = 0;
  }
  local_18 = 0;
  local_8 = 0;
  puVar2 = (undefined4 *)FUN_006b3ecc();
  uVar1 = *puVar2;
  *puVar2 = local_18;
  local_18 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&local_1c);
  local_8 = 1;
  FUN_006afc06();
  puVar2 = (undefined4 *)FUN_00b93190();
  *puVar2 = 0;
  FUN_0040c727();
  if (param_3 != (undefined4 *)0x0) {
    (**(code **)*param_3)();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b01c7(undefined4 *param_1_00,byte param_1)

{
  if ((undefined4 *)param_1_00[0x28] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1_00[0x28])(1);
  }
  FUN_006afc55();
  if ((undefined4 *)param_1_00[1] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1_00[1])(1);
  }
  *param_1_00 = WF8266037::W3032D010::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006b0225(undefined4 param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,
                 undefined4 *param_5)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *local_38;
  undefined4 *local_20;
  undefined4 local_1c;
  undefined4 **local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x6b0231;
  local_38 = (undefined4 *)0x6b023d;
  puVar2 = (undefined4 *)operator_new(0xd0);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = `public:_bool___thiscall_WF8266037::WD7AE7171::sakeAuthenticate(class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<struct_WF8266037::WCDA438C9>&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&)'
              ::`2'::W05B78E23::vftable;
    puVar2[1] = 0;
    *(undefined *)(puVar2 + 2) = 0;
    FUN_006af82c();
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)(puVar2 + 0x2c));
    puVar2[0x33] = 0;
  }
  local_1c = 0;
  local_8 = 0;
  local_38 = (undefined4 *)0x6b0284;
  local_20 = puVar2;
  puVar3 = (undefined4 *)FUN_006b3f29();
  uVar1 = *puVar3;
  *puVar3 = local_1c;
  local_1c = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  local_38 = puVar2;
  FUN_007a491c(&local_20);
  local_8 = 1;
  FUN_006afc06();
  local_38 = (undefined4 *)0x0;
  FID_conflict_assign(param_4);
  local_38 = param_5;
  puVar2 = (undefined4 *)FUN_00b93190();
  *puVar2 = 0;
  local_38 = (undefined4 *)0x6b02f2;
  FUN_0040c727();
  if (param_3 != (undefined4 *)0x0) {
    local_38 = (undefined4 *)0x6b02ff;
    (**(code **)*param_3)();
  }
  local_18 = &local_38;
  local_38 = local_20;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b03d2(undefined4 *param_1_00,byte param_1)

{
  if ((undefined4 *)param_1_00[0x33] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1_00[0x33])(1);
  }
  FUN_00401829(1,0);
  FUN_006afc55();
  if (*(char *)(param_1_00 + 2) != '\0') {
    *(undefined *)(param_1_00 + 2) = 0;
  }
  if ((undefined4 *)param_1_00[1] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1_00[1])(1);
  }
  *param_1_00 = WF8266037::W3032D010::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006b0449(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 param_4;
  undefined4 local_20;
  undefined4 local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x6b0455;
  local_18 = operator_new(0xe8);
  local_8 = 0;
  if (local_18 == (void *)0x0) {
    local_20 = 0;
  }
  else {
    local_20 = FUN_006b05ac();
  }
  local_1c = 0;
  local_8 = 1;
  puVar2 = (undefined4 *)FUN_006b3f86();
  uVar1 = *puVar2;
  *puVar2 = local_1c;
  local_1c = uVar1;
  if (local_18 != (void *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c(&local_20);
  local_8 = 2;
  FUN_006afc06();
  FID_conflict_assign(param_4);
  FUN_006b1d4a();
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006b05ac(undefined4 *param_1)

{
  *param_1 = `public:_bool___thiscall_WF8266037::WD7AE7171::fakeSecurityZone(class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>&,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>_const&)'
             ::`2'::W05B78E23::vftable;
  FUN_004382a5(param_1 + 1);
  FUN_006af82c();
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x2d));
  FUN_004382a5(param_1 + 0x34);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b05fb(undefined4 *param_1_00,byte param_1)

{
  FUN_007b3ae8(param_1_00 + 0x34);
  FUN_00401829(1,0);
  FUN_006afc55();
  FUN_007b3ae8(param_1_00 + 1);
  *param_1_00 = WF8266037::W3032D010::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006b0660(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *local_20;
  undefined4 local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x6b066c;
  local_20 = (undefined4 *)operator_new(0xc0);
  if (local_20 == (undefined4 *)0x0) {
    local_20 = (undefined4 *)0x0;
  }
  else {
    *local_20 = `public:_bool___thiscall_WF8266037::WD7AE7171::fakeSakeAuth(class_std::auto_ptr<class_common::WB943A9F0>&,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&)'
                ::`2'::W05B78E23::vftable;
    local_20[1] = 0;
    FUN_006af82c();
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)(local_20 + 0x28));
    local_20[0x2f] = 0;
  }
  local_1c = 0;
  local_8 = 0;
  puVar2 = (undefined4 *)FUN_006b406c();
  uVar1 = *puVar2;
  *puVar2 = local_1c;
  local_1c = uVar1;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&local_20);
  local_8 = 1;
  FUN_006afc06();
  FID_conflict_assign(param_4);
  puVar2 = (undefined4 *)FUN_00b93190();
  *puVar2 = 0;
  FUN_0040c727();
  if (param_2 != (undefined4 *)0x0) {
    (**(code **)*param_2)();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006b07fa(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,
                 undefined4 param_5,undefined4 param_6)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  int local_20;
  undefined4 local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x6b0806;
  pvVar2 = operator_new(0x100);
  if (pvVar2 == (void *)0x0) {
    local_20 = 0;
  }
  else {
    local_20 = FUN_006b0a12();
  }
  local_1c = 0;
  local_8 = 0;
  puVar3 = (undefined4 *)FUN_006b40c9();
  uVar1 = *puVar3;
  *puVar3 = local_1c;
  local_1c = uVar1;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&local_20);
  local_8 = 1;
  FID_conflict_assign(param_3);
  FUN_006afc06();
  FID_conflict_assign(param_5);
  *(undefined4 *)(local_20 + 0xf0) = param_6;
  puVar3 = (undefined4 *)FUN_00b93190();
  *puVar3 = 0;
  FUN_0040c727();
  if (param_4 != (undefined4 *)0x0) {
    (**(code **)*param_4)();
  }
  puVar3 = (undefined4 *)FUN_00b93190();
  *puVar3 = 0;
  FUN_0040c727();
  if (param_4 != (undefined4 *)0x0) {
    (**(code **)*param_4)();
  }
  puVar3 = (undefined4 *)FUN_00b93190();
  *puVar3 = 0;
  FUN_0040c727();
  if (param_4 != (undefined4 *)0x0) {
    (**(code **)*param_4)();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



void FUN_006b0a12(void)

{
  undefined4 *unaff_EDI;
  
  *unaff_EDI = WF8266037::WE3BF860C::vftable;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(unaff_EDI + 1));
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(unaff_EDI + 8));
  FUN_006af82c();
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(unaff_EDI + 0x35));
  unaff_EDI[0x3d] = 0;
  unaff_EDI[0x3e] = 0;
  unaff_EDI[0x3f] = 0;
  return;
}



undefined4 __thiscall FUN_006b0a54(undefined4 param_1_00,byte param_1)

{
  FUN_006b0a71(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_006b0a71(undefined4 *param_1)

{
  code **ppcVar1;
  code *pcVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  puVar3 = (undefined4 *)auStack_20;
  local_8 = 6;
  if ((undefined4 *)param_1[0x3f] != (undefined4 *)0x0) {
    uStack_24 = 1;
    puVar3 = &uStack_28;
    uStack_28 = 0x6b0a99;
    (***(code ***)(undefined4 *)param_1[0x3f])();
  }
  local_8._0_1_ = 5;
  if ((undefined4 *)param_1[0x3e] != (undefined4 *)0x0) {
    ppcVar1 = *(code ***)(undefined4 *)param_1[0x3e];
    *(undefined4 *)((int)puVar3 + -4) = 1;
    pcVar2 = *ppcVar1;
    puVar4 = (undefined4 *)((int)puVar3 + -8);
    puVar3 = (undefined4 *)((int)puVar3 + -8);
    *puVar4 = 0x6b0aac;
    (*pcVar2)();
  }
  local_8 = CONCAT31(local_8._1_3_,4);
  if ((undefined4 *)param_1[0x3d] != (undefined4 *)0x0) {
    ppcVar1 = *(code ***)(undefined4 *)param_1[0x3d];
    *(undefined4 *)((int)puVar3 + -4) = 1;
    pcVar2 = *ppcVar1;
    puVar5 = (undefined4 *)((int)puVar3 + -8);
    puVar3 = (undefined4 *)((int)puVar3 + -8);
    *puVar5 = 0x6b0abf;
    (*pcVar2)();
  }
  *(undefined4 *)((int)puVar3 + -4) = 0;
  *(undefined4 *)((int)puVar3 + -8) = 1;
  *(undefined4 *)((int)puVar3 + -0xc) = 0x6b0acd;
  FUN_00401829();
  *(undefined4 *)((int)puVar3 + -4) = 0x6b0ad5;
  FUN_006afc55();
  *(undefined4 *)((int)puVar3 + -4) = 0;
  *(undefined4 *)((int)puVar3 + -8) = 1;
  *(undefined4 *)((int)puVar3 + -0xc) = 0x6b0ae0;
  FUN_00401829();
  *(undefined4 *)((int)puVar3 + -4) = 0;
  *(undefined4 *)((int)puVar3 + -8) = 1;
  *(undefined4 *)((int)puVar3 + -0xc) = 0x6b0aeb;
  FUN_00401829();
  *param_1 = WF8266037::W3032D010::vftable;
  *(undefined4 *)((int)puVar3 + -4) = 0x6b0af6;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006b0af9(undefined4 param_1,undefined4 *param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *local_1c;
  undefined4 local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x6b0b05;
  local_1c = (undefined4 *)operator_new(0xc0);
  if (local_1c == (undefined4 *)0x0) {
    local_1c = (undefined4 *)0x0;
  }
  else {
    *local_1c = `public:_bool___thiscall_WF8266037::WD7AE7171::exchangeSysinfo(class_std::auto_ptr<class_common::WB943A9F0>&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&)'
                ::`2'::W05B78E23::vftable;
    local_1c[1] = 0;
    FUN_006af82c();
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)(local_1c + 0x28));
    local_1c[0x2f] = 0;
  }
  local_18 = 0;
  local_8 = 0;
  puVar2 = (undefined4 *)FUN_006b419f();
  uVar1 = *puVar2;
  *puVar2 = local_18;
  local_18 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&local_1c);
  local_8 = 1;
  FUN_005d06ce();
  FUN_006afc06();
  FID_conflict_assign(param_3);
  puVar2 = (undefined4 *)FUN_00b93190();
  *puVar2 = 0;
  FUN_0040c727();
  if (param_2 != (undefined4 *)0x0) {
    (**(code **)*param_2)();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_006b0c9e(void)

{
  int in_EAX;
  
  if (*(int *)(in_EAX + 0x10) != 0) {
    FUN_0040127a();
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b0cab(undefined4 *param_1_00,byte param_1)

{
  if ((undefined4 *)param_1_00[0x2f] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1_00[0x2f])(1);
  }
  FUN_00401829(1,0);
  FUN_006afc55();
  if ((undefined4 *)param_1_00[1] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1_00[1])(1);
  }
  *param_1_00 = WF8266037::W3032D010::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006b0d18(undefined4 param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  undefined4 local_40;
  undefined4 local_3c [10];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5dc6c;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  pvVar2 = operator_new(0xd0);
  local_c = 0;
  if (pvVar2 == (void *)0x0) {
    local_40 = 0;
  }
  else {
    local_40 = FUN_006b0eae();
  }
  local_3c[0] = 0;
  local_c = 1;
  puVar3 = (undefined4 *)FUN_006b41fc();
  uVar1 = *puVar3;
  *puVar3 = local_3c[0];
  local_3c[0] = uVar1;
  if (pvVar2 != (void *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c(&local_40);
  local_c = 2;
  FID_conflict_assign(param_1);
  FUN_006b1e1c();
  FUN_006afc06();
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_3c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006b0eae(undefined4 *param_1)

{
  *param_1 = `public:_bool___thiscall_WF8266037::WD7AE7171::debugData(class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::vector<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>,class_std::allocator<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>_>_>_const&,struct_WF8266037::WC9135E4C_const&)'
             ::`2'::W05B78E23::vftable;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 1));
  FUN_004382a5(param_1 + 8);
  FUN_006af82c();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b0eee(undefined4 *param_1_00,byte param_1)

{
  FUN_006afc55();
  FUN_007b3ae8(param_1_00 + 8);
  FUN_00401829(1,0);
  *param_1_00 = WF8266037::W3032D010::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006b0f40(undefined4 param_1,undefined4 *param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *local_1c;
  undefined4 local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x6b0f4c;
  local_1c = (undefined4 *)operator_new(0xc0);
  if (local_1c == (undefined4 *)0x0) {
    local_1c = (undefined4 *)0x0;
  }
  else {
    *local_1c = `public:_bool___thiscall_WF8266037::WD7AE7171::akAuth(class_std::auto_ptr<class_common::WB943A9F0>&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&)'
                ::`2'::W05B78E23::vftable;
    local_1c[1] = 0;
    FUN_006af82c();
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)(local_1c + 0x28));
    local_1c[0x2f] = 0;
  }
  local_18 = 0;
  local_8 = 0;
  puVar2 = (undefined4 *)FUN_006b4259();
  uVar1 = *puVar2;
  *puVar2 = local_18;
  local_18 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&local_1c);
  local_8 = 1;
  FUN_006afc06();
  FID_conflict_assign(param_3);
  puVar2 = (undefined4 *)FUN_00b93190();
  *puVar2 = 0;
  FUN_0040c727();
  if (param_2 != (undefined4 *)0x0) {
    (**(code **)*param_2)();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006b10d7(undefined4 param_1,undefined4 *param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 local_20;
  undefined4 local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x6b10e3;
  local_18 = operator_new(0xd8);
  local_8 = 0;
  if (local_18 == (void *)0x0) {
    local_20 = 0;
  }
  else {
    local_20 = FUN_006b128d();
  }
  local_1c = 0;
  local_8 = 1;
  puVar2 = (undefined4 *)FUN_006b42b6();
  uVar1 = *puVar2;
  *puVar2 = local_1c;
  local_1c = uVar1;
  if (local_18 != (void *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c(&local_20);
  local_8 = 2;
  FUN_006afc06();
  FID_conflict_assign(param_3);
  puVar2 = (undefined4 *)FUN_00b93190();
  *puVar2 = 0;
  FUN_0040c727();
  if (param_2 != (undefined4 *)0x0) {
    (**(code **)*param_2)();
  }
  puVar2 = (undefined4 *)FUN_00b93190();
  *puVar2 = 0;
  FUN_0040c727();
  if (param_2 != (undefined4 *)0x0) {
    (**(code **)*param_2)();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006b128d(undefined4 *param_1)

{
  *param_1 = `public:_bool___thiscall_WF8266037::WD7AE7171::calcControlKeys_FromSysInfo(class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&,class_common::WB943A9F0_const&)'
             ::`2'::W05B78E23::vftable;
  FUN_004398f2();
  FUN_006af82c();
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x2d));
  param_1[0x34] = 0;
  param_1[0x35] = 0;
  return param_1;
}



undefined4 __fastcall FUN_006b12d9(undefined4 param_1)

{
  byte unaff_retaddr;
  
  FUN_006b12f6(param_1);
  if ((unaff_retaddr & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_006b12f6(int param_1)

{
  code **ppcVar1;
  code *pcVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  puVar3 = (undefined4 *)auStack_20;
  local_8 = 4;
  if (*(undefined4 **)(param_1 + 0xd4) != (undefined4 *)0x0) {
    uStack_24 = 1;
    puVar3 = &uStack_28;
    uStack_28 = 0x6b131c;
    (**(code **)**(undefined4 **)(param_1 + 0xd4))();
  }
  local_8 = CONCAT31(local_8._1_3_,3);
  if (*(undefined4 **)(param_1 + 0xd0) != (undefined4 *)0x0) {
    ppcVar1 = (code **)**(undefined4 **)(param_1 + 0xd0);
    *(undefined4 *)((int)puVar3 + -4) = 1;
    pcVar2 = *ppcVar1;
    puVar4 = (undefined4 *)((int)puVar3 + -8);
    puVar3 = (undefined4 *)((int)puVar3 + -8);
    *puVar4 = 0x6b1330;
    (*pcVar2)();
  }
  *(undefined4 *)((int)puVar3 + -4) = 0;
  *(undefined4 *)((int)puVar3 + -8) = 1;
  *(undefined4 *)((int)puVar3 + -0xc) = 0x6b133f;
  FUN_00401829();
  *(undefined4 *)((int)puVar3 + -4) = 0x6b1347;
  FUN_006afc55();
  *(undefined4 *)((int)puVar3 + -4) = 0x6b1351;
  FUN_0041c3a7();
  *(undefined4 *)((int)puVar3 + -4) = *(undefined4 *)(param_1 + 4);
                    // WARNING: Subroutine does not return
  *(undefined **)((int)puVar3 + -8) = &UNK_006b1358;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006b1367(undefined4 param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,
                 int param_5)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  int local_38;
  int local_20;
  undefined4 local_1c;
  int *local_18;
  void *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x6b1373;
  local_38 = 0x6b137f;
  local_14 = operator_new(0xd8);
  local_8 = 0;
  if (local_14 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    local_38 = 0x6b1392;
    iVar2 = FUN_006b14fc();
  }
  local_1c = 0;
  local_8 = 1;
  local_38 = 0x6b13ae;
  local_20 = iVar2;
  puVar3 = (undefined4 *)FUN_006b439a();
  uVar1 = *puVar3;
  *puVar3 = local_1c;
  local_1c = uVar1;
  if (local_14 != (void *)0x0) {
    FUN_0040127a();
  }
  local_38 = iVar2;
  FUN_007a491c(&local_20);
  local_8 = 2;
  *(undefined *)(local_20 + 4) = 0;
  FUN_006afc06();
  local_38 = 0;
  FID_conflict_assign(param_4);
  local_38 = param_5;
  puVar3 = (undefined4 *)FUN_00b93190();
  *puVar3 = 0;
  local_38 = 0x6b1421;
  FUN_0040c727();
  if (param_3 != (undefined4 *)0x0) {
    local_38 = 0x6b142e;
    (**(code **)*param_3)();
  }
  local_18 = &local_38;
  local_38 = local_20;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006b14fc(undefined4 *param_1)

{
  *param_1 = `public:_bool___thiscall_WF8266037::WD7AE7171::calcControlKeys_FromNvData(bool&,class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&)'
             ::`2'::W05B78E23::vftable;
  FUN_004398f2();
  FUN_006af82c();
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x2e));
  param_1[0x35] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_006b1541(int param_1)

{
  if (*(undefined4 **)(param_1 + 0xd4) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xd4))(1);
  }
  FUN_00401829(1,0);
  FUN_006afc55();
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 8));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006b15af(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *param_4;
  undefined4 param_5;
  undefined4 *param_6;
  undefined4 *param_7;
  undefined4 *local_40;
  undefined4 *local_28;
  undefined4 local_24;
  undefined4 **local_20;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x6b15bb;
  local_40 = (undefined4 *)0x6b15c7;
  puVar2 = (undefined4 *)operator_new(0xe8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = `public:_bool___thiscall_WF8266037::WD7AE7171::calcControlKeys_FromNvData2(bool&,class_boost::optional<int>&,class_boost::optional<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&,class_common::WB943A9F0_const&)'
              ::`2'::W05B78E23::vftable;
    *(undefined *)(puVar2 + 2) = 0;
    *(undefined *)(puVar2 + 4) = 0;
    FUN_006af82c();
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)(puVar2 + 0x31));
    puVar2[0x38] = 0;
    puVar2[0x39] = 0;
  }
  local_24 = 0;
  local_8 = 0;
  local_40 = (undefined4 *)0x6b1615;
  local_28 = puVar2;
  puVar3 = (undefined4 *)FUN_006b447f();
  uVar1 = *puVar3;
  *puVar3 = local_24;
  local_24 = uVar1;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  local_40 = puVar2;
  FUN_007a491c(&local_28);
  local_8 = 1;
  *(undefined *)(local_28 + 1) = 0;
  FUN_006afc06();
  local_40 = (undefined4 *)0x0;
  FID_conflict_assign(param_5);
  local_40 = param_7;
  puVar2 = (undefined4 *)FUN_00b93190();
  *puVar2 = 0;
  local_40 = (undefined4 *)0x6b168a;
  FUN_0040c727();
  if (param_4 != (undefined4 *)0x0) {
    local_40 = (undefined4 *)0x6b1697;
    (**(code **)*param_4)();
  }
  local_40 = param_6;
  puVar2 = (undefined4 *)FUN_00b93190();
  *puVar2 = 0;
  local_40 = (undefined4 *)0x6b16b7;
  FUN_0040c727();
  if (param_4 != (undefined4 *)0x0) {
    local_40 = (undefined4 *)0x6b16c4;
    (**(code **)*param_4)();
  }
  local_20 = &local_40;
  local_40 = local_28;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_24);
}



undefined4 __thiscall FUN_006b17b4(undefined4 param_1_00,byte param_1)

{
  FUN_006b17d1(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_006b17d1(undefined4 *param_1)

{
  code **ppcVar1;
  code *pcVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  puVar3 = (undefined4 *)auStack_20;
  local_8 = 5;
  if ((undefined4 *)param_1[0x39] != (undefined4 *)0x0) {
    uStack_24 = 1;
    puVar3 = &uStack_28;
    uStack_28 = 0x6b17f7;
    (***(code ***)(undefined4 *)param_1[0x39])();
  }
  local_8 = CONCAT31(local_8._1_3_,4);
  if ((undefined4 *)param_1[0x38] != (undefined4 *)0x0) {
    ppcVar1 = *(code ***)(undefined4 *)param_1[0x38];
    *(undefined4 *)((int)puVar3 + -4) = 1;
    pcVar2 = *ppcVar1;
    puVar4 = (undefined4 *)((int)puVar3 + -8);
    puVar3 = (undefined4 *)((int)puVar3 + -8);
    *puVar4 = 0x6b180b;
    (*pcVar2)();
  }
  *(undefined4 *)((int)puVar3 + -4) = 0;
  *(undefined4 *)((int)puVar3 + -8) = 1;
  *(undefined4 *)((int)puVar3 + -0xc) = 0x6b181a;
  FUN_00401829();
  *(undefined4 *)((int)puVar3 + -4) = 0x6b1822;
  FUN_006afc55();
  *(undefined4 *)((int)puVar3 + -4) = 0x6b182a;
  FUN_006a11c0();
  if (*(char *)(param_1 + 2) != '\0') {
    *(undefined *)(param_1 + 2) = 0;
  }
  *param_1 = WF8266037::W3032D010::vftable;
  *(undefined4 *)((int)puVar3 + -4) = 0x6b183f;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006b1842(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 param_5;
  undefined4 *local_40;
  undefined4 *local_28;
  undefined4 local_24;
  undefined4 **local_20;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x6b184e;
  local_40 = (undefined4 *)0x6b185a;
  puVar2 = (undefined4 *)operator_new(0xd0);
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = `public:_bool___thiscall_WF8266037::WD7AE7171::usbPrepare(class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<__int64>&,bool&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&)'
              ::`2'::W05B78E23::vftable;
    puVar2[1] = 0;
    *(undefined *)(puVar2 + 2) = 0;
    FUN_006af82c();
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)(puVar2 + 0x2d));
    puVar3 = puVar2;
  }
  local_24 = 0;
  local_8 = 0;
  local_40 = (undefined4 *)0x6b1899;
  local_28 = puVar3;
  puVar2 = (undefined4 *)FUN_006b4564();
  uVar1 = *puVar2;
  *puVar2 = local_24;
  local_24 = uVar1;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  local_40 = puVar3;
  FUN_007a491c(&local_28);
  local_8 = 1;
  FUN_006afc06();
  local_40 = (undefined4 *)0x0;
  FID_conflict_assign(param_5);
  local_20 = &local_40;
  local_40 = local_28;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_24);
}



void FUN_006b19c2(void)

{
  int in_EAX;
  
  if (*(int *)(in_EAX + 0x18) != 0) {
    FUN_0040127a();
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b19cf(undefined4 *param_1_00,byte param_1)

{
  FUN_00401829(1,0);
  FUN_006afc55();
  if (*(char *)(param_1_00 + 2) != '\0') {
    *(undefined *)(param_1_00 + 2) = 0;
  }
  if ((undefined4 *)param_1_00[1] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1_00[1])(1);
  }
  *param_1_00 = WF8266037::W3032D010::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006b1a2f(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *local_20;
  undefined4 local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x6b1a3b;
  local_20 = (undefined4 *)operator_new(0xbc);
  if (local_20 == (undefined4 *)0x0) {
    local_20 = (undefined4 *)0x0;
  }
  else {
    *local_20 = `public:_bool___thiscall_WF8266037::WD7AE7171::usbAttach(bool&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&)'
                ::`2'::W05B78E23::vftable;
    FUN_006af82c();
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)(local_20 + 0x28));
  }
  local_1c = 0;
  local_8 = 0;
  puVar2 = (undefined4 *)FUN_006b4649();
  uVar1 = *puVar2;
  *puVar2 = local_1c;
  local_1c = uVar1;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&local_20);
  local_8 = 1;
  FUN_006afc06();
  FID_conflict_assign(param_3);
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



undefined4 * __thiscall FUN_006b1b76(undefined4 *param_1_00,byte param_1)

{
  FUN_00401829(1,0);
  FUN_006afc55();
  *param_1_00 = WF8266037::W3032D010::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006b1bac(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *local_1c;
  undefined4 local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x6b1bb8;
  local_1c = (undefined4 *)operator_new(0xb8);
  if (local_1c == (undefined4 *)0x0) {
    local_1c = (undefined4 *)0x0;
  }
  else {
    *local_1c = `public:_bool___thiscall_WF8266037::WD7AE7171::usbDetach(struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&)'
                ::`2'::W05B78E23::vftable;
    FUN_006af82c();
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)(local_1c + 0x27));
  }
  local_18 = 0;
  local_8 = 0;
  puVar2 = (undefined4 *)FUN_006b472f();
  uVar1 = *puVar2;
  *puVar2 = local_18;
  local_18 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&local_1c);
  local_8 = 1;
  FUN_006afc06();
  FID_conflict_assign(param_2);
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



undefined4 * __thiscall FUN_006b1d14(undefined4 *param_1_00,byte param_1)

{
  FUN_00401829(1,0);
  FUN_006afc55();
  *param_1_00 = WF8266037::W3032D010::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006b1d4a(void)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  int iVar3;
  uint uVar4;
  uint uVar5;
  int unaff_EBX;
  uint uVar6;
  undefined4 uVar7;
  
  if (in_EAX != unaff_EBX) {
    uVar4 = *(int *)(unaff_EBX + 0x10) - *(int *)(unaff_EBX + 0xc) >> 3;
    if (uVar4 == 0) {
      FUN_006a1154(in_EAX);
    }
    else {
      iVar3 = *(int *)(in_EAX + 0xc);
      uVar5 = *(int *)(in_EAX + 0x10) - iVar3 >> 3;
      if (uVar5 < uVar4) {
        if (iVar3 == 0) {
          uVar6 = 0;
        }
        else {
          uVar6 = *(int *)(in_EAX + 0x14) - iVar3 >> 3;
        }
        if (uVar6 < uVar4) {
          if (iVar3 != 0) {
            FUN_0043a4e8(*(undefined4 *)(in_EAX + 0x10));
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(*(undefined4 *)(in_EAX + 0xc));
          }
          iVar3 = *(int *)(unaff_EBX + 0x10);
          iVar1 = *(int *)(unaff_EBX + 0xc);
          *(undefined4 *)(in_EAX + 0xc) = 0;
          *(undefined4 *)(in_EAX + 0x10) = 0;
          *(undefined4 *)(in_EAX + 0x14) = 0;
          if (iVar3 - iVar1 >> 3 == 0) {
            return;
          }
          cVar2 = FUN_006b1f5c();
          if (cVar2 == '\0') {
            return;
          }
          uVar7 = *(undefined4 *)(in_EAX + 0xc);
        }
        else {
          FUN_006a38ff(*(int *)(unaff_EBX + 0xc) + uVar5 * 8);
          uVar7 = *(undefined4 *)(in_EAX + 0x10);
        }
        iVar3 = FUN_00674fdf(*(undefined4 *)(unaff_EBX + 0x10),uVar7);
      }
      else {
        FUN_006a38ff(*(int *)(unaff_EBX + 0x10));
        FUN_0043a4e8(*(undefined4 *)(in_EAX + 0x10));
        iVar3 = *(int *)(in_EAX + 0xc) +
                (*(int *)(unaff_EBX + 0x10) - *(int *)(unaff_EBX + 0xc) >> 3) * 8;
      }
      *(int *)(in_EAX + 0x10) = iVar3;
    }
  }
  return;
}



void FUN_006b1e1c(void)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  int iVar3;
  uint uVar4;
  uint uVar5;
  int unaff_EBX;
  uint uVar6;
  undefined4 uVar7;
  
  if (in_EAX != unaff_EBX) {
    uVar4 = *(int *)(unaff_EBX + 0x10) - *(int *)(unaff_EBX + 0xc) >> 3;
    if (uVar4 == 0) {
      FUN_006b1eef();
    }
    else {
      iVar3 = *(int *)(in_EAX + 0xc);
      uVar5 = *(int *)(in_EAX + 0x10) - iVar3 >> 3;
      if (uVar5 < uVar4) {
        if (iVar3 == 0) {
          uVar6 = 0;
        }
        else {
          uVar6 = *(int *)(in_EAX + 0x14) - iVar3 >> 3;
        }
        if (uVar6 < uVar4) {
          if (iVar3 != 0) {
            FUN_0043a4e8(*(undefined4 *)(in_EAX + 0x10));
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(*(undefined4 *)(in_EAX + 0xc));
          }
          iVar3 = *(int *)(unaff_EBX + 0x10);
          iVar1 = *(int *)(unaff_EBX + 0xc);
          *(undefined4 *)(in_EAX + 0xc) = 0;
          *(undefined4 *)(in_EAX + 0x10) = 0;
          *(undefined4 *)(in_EAX + 0x14) = 0;
          if (iVar3 - iVar1 >> 3 == 0) {
            return;
          }
          cVar2 = FUN_006b1f5c();
          if (cVar2 == '\0') {
            return;
          }
          uVar7 = *(undefined4 *)(in_EAX + 0xc);
        }
        else {
          FUN_006a38ff(*(int *)(unaff_EBX + 0xc) + uVar5 * 8);
          uVar7 = *(undefined4 *)(in_EAX + 0x10);
        }
        iVar3 = FUN_00674fdf(*(undefined4 *)(unaff_EBX + 0x10),uVar7);
      }
      else {
        FUN_006a38ff(*(int *)(unaff_EBX + 0x10));
        FUN_0043a4e8(*(undefined4 *)(in_EAX + 0x10));
        iVar3 = *(int *)(in_EAX + 0xc) +
                (*(int *)(unaff_EBX + 0x10) - *(int *)(unaff_EBX + 0xc) >> 3) * 8;
      }
      *(int *)(in_EAX + 0x10) = iVar3;
    }
  }
  return;
}



void FUN_006b1eef(void)

{
  int in_EAX;
  undefined4 uVar1;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  if ((local_c == 0) || (local_c != local_14)) {
    FUN_00a3fb10();
  }
  if (local_8 != local_10) {
    uVar1 = FUN_006a38ff(*(undefined4 *)(in_EAX + 0x10));
    FUN_0043a4e8(*(undefined4 *)(in_EAX + 0x10));
    *(undefined4 *)(in_EAX + 0x10) = uVar1;
  }
  return;
}



undefined4 __fastcall FUN_006b1f5c(undefined4 param_1)

{
  int iVar1;
  int unaff_ESI;
  uint unaff_EDI;
  
  if (0x1fffffff < unaff_EDI) {
    FUN_004423c1(param_1);
  }
  iVar1 = FUN_0046aed6();
  *(int *)(unaff_ESI + 0xc) = iVar1;
  *(int *)(unaff_ESI + 0x10) = iVar1;
  iVar1 = iVar1 + unaff_EDI * 8;
  *(int *)(unaff_ESI + 0x14) = iVar1;
  return CONCAT31((int3)((uint)iVar1 >> 8),1);
}



void FUN_006b2da6(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_EDI;
  
  *unaff_EDI = *in_EAX;
  FUN_00754b70();
  *(undefined *)(unaff_EDI + 5) = *(undefined *)(in_EAX + 5);
  return;
}



void FUN_006b2dc4(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_EDI;
  
  *unaff_EDI = *in_EAX;
  FUN_006b3016(in_EAX + 1);
  unaff_EDI[7] = in_EAX[7];
  unaff_EDI[8] = in_EAX[8];
  return;
}



void FUN_006b2de7(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_EBX;
  
  *unaff_EBX = *in_EAX;
  FUN_006b2ff1();
  unaff_EBX[6] = in_EAX[6];
  return;
}



void FUN_006b2e03(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_EDI;
  
  *unaff_EDI = *in_EAX;
  FUN_00438301();
  unaff_EDI[4] = in_EAX[4];
  return;
}



void FUN_006b2e21(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_EBX;
  
  *unaff_EBX = *in_EAX;
  FUN_006b2ff1();
  unaff_EBX[6] = in_EAX[6];
  unaff_EBX[7] = in_EAX[7];
  return;
}



void FUN_006b2e43(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_EBX;
  
  *unaff_EBX = *in_EAX;
  FUN_00438301();
  unaff_EBX[4] = in_EAX[4];
  unaff_EBX[5] = in_EAX[5];
  unaff_EBX[6] = in_EAX[6];
  return;
}



void FUN_006b2e6d(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_EBX;
  
  *unaff_EBX = *in_EAX;
  FUN_00438301();
  unaff_EBX[4] = in_EAX[4];
  unaff_EBX[5] = in_EAX[5];
  return;
}



int __fastcall FUN_006b2e91(int param_1)

{
  int in_EAX;
  
  FUN_006b2ff1();
  *(undefined4 *)(param_1 + 0x14) = *(undefined4 *)(in_EAX + 0x14);
  *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(in_EAX + 0x18);
  *(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(in_EAX + 0x1c);
  return param_1;
}



void FUN_006b2eb3(void)

{
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  
  *unaff_ESI = *unaff_EDI;
  unaff_ESI[1] = unaff_EDI[1];
  unaff_ESI[2] = unaff_EDI[2];
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EDI + 3);
}



void FUN_006b2eea(void)

{
  int in_EAX;
  int unaff_EDI;
  
  FUN_00754b70();
  *(undefined4 *)(in_EAX + 0x10) = *(undefined4 *)(unaff_EDI + 0x10);
  *(undefined4 *)(in_EAX + 0x14) = *(undefined4 *)(unaff_EDI + 0x14);
  *(undefined4 *)(in_EAX + 0x18) = *(undefined4 *)(unaff_EDI + 0x18);
  *(undefined4 *)(in_EAX + 0x1c) = *(undefined4 *)(unaff_EDI + 0x1c);
  return;
}



void FUN_006b2f10(undefined4 *param_1)

{
  undefined4 *unaff_EBX;
  
  *unaff_EBX = *param_1;
  unaff_EBX[1] = param_1[1];
  unaff_EBX[2] = param_1[2];
  unaff_EBX[3] = param_1[3];
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 4);
}



void FUN_006b2f4c(undefined4 *param_1)

{
  undefined4 *unaff_EBX;
  
  *unaff_EBX = *param_1;
  unaff_EBX[1] = param_1[1];
  unaff_EBX[2] = param_1[2];
  unaff_EBX[3] = param_1[3];
  unaff_EBX[4] = param_1[4];
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 5);
}



void FUN_006b2f8f(undefined4 *param_1)

{
  undefined4 *unaff_EBX;
  
  *unaff_EBX = *param_1;
  unaff_EBX[1] = param_1[1];
  unaff_EBX[2] = param_1[2];
  unaff_EBX[3] = param_1[3];
  unaff_EBX[4] = param_1[4];
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 5);
}



void FUN_006b2fc6(void)

{
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  
  *unaff_ESI = *unaff_EDI;
  unaff_ESI[1] = unaff_EDI[1];
  unaff_ESI[2] = unaff_EDI[2];
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EDI + 3);
}



void FUN_006b2ff1(void)

{
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  
  *unaff_ESI = *unaff_EDI;
  unaff_ESI[1] = unaff_EDI[1];
  unaff_ESI[2] = unaff_EDI[2];
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EDI + 3);
}



void FUN_006b3016(undefined4 *param_1)

{
  undefined4 *unaff_EBX;
  
  *unaff_EBX = *param_1;
  unaff_EBX[1] = param_1[1];
  unaff_EBX[2] = param_1[2];
  unaff_EBX[3] = param_1[3];
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 4);
}



void FUN_006b3369(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = param_1;
  unaff_ESI[1] = param_2;
  unaff_ESI[2] = param_3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000010);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b3cb5(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::readNewsWithCaching(class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,bool)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b3cfb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b3d8b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::secretHasher(class_std::auto_ptr<class_common::WB943A9F0>&,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b3dd1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b3e6f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::zkpWitness(class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<struct_WF8266037::WCDA438C9>&,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b3eb5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b3ecc(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::zkpChallenge(class_std::auto_ptr<class_common::WB943A9F0>&,struct_WF8266037::WC9135E4C_const&,class_common::WB943A9F0_const&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b3f12(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b3f29(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::sakeAuthenticate(class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<struct_WF8266037::WCDA438C9>&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b3f6f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b3f86(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::fakeSecurityZone(class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>&,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>_const&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b3fcc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b406c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::fakeSakeAuth(class_std::auto_ptr<class_common::WB943A9F0>&,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b40b2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b40c9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_WF8266037::WE3BF860C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b410f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b419f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::exchangeSysinfo(class_std::auto_ptr<class_common::WB943A9F0>&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b41e5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b41fc(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::debugData(class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::vector<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>,class_std::allocator<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>_>_>_const&,struct_WF8266037::WC9135E4C_const&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b4242(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b4259(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::akAuth(class_std::auto_ptr<class_common::WB943A9F0>&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b429f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b42b6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::calcControlKeys_FromSysInfo(class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&,class_common::WB943A9F0_const&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b42fc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b439a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::calcControlKeys_FromNvData(bool&,class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b43e0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b447f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::calcControlKeys_FromNvData2(bool&,class_boost::optional<int>&,class_boost::optional<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&,class_common::WB943A9F0_const&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b44c5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b4564(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::usbPrepare(class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<__int64>&,bool&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b45aa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b4649(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::usbAttach(bool&,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b468f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b472f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<struct_`public:_bool___thiscall_WF8266037::WD7AE7171::usbDetach(struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&)'::`2'::W05B78E23>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b4775(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_006b4804(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006b4e30(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf0<bool,class_WF8266037::W1E8966B9>,class_boost::_bi::list1<class_boost::_bi::value<class_WF8266037::W1E8966B9*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006b483f(undefined4 param_1,TypeDescriptor **param_2,uint param_3)

{
  if (param_3 == 4) {
    *param_2 = &boost::_bi::
                bind_t<bool,class_boost::_mfi::mf1<bool,class_WF8266037::W1E8966B9,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::list2<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>_>_>
                ::RTTI_Type_Descriptor;
    *(undefined *)(param_2 + 1) = 0;
    *(undefined *)((int)param_2 + 5) = 0;
  }
  else {
    param_3 = param_3 & 0xffffff00;
    FUN_006b4e79(param_3);
  }
  return;
}



void FUN_006b4878(undefined4 param_1,TypeDescriptor **param_2,uint param_3)

{
  if (param_3 == 4) {
    *param_2 = &boost::_bi::
                bind_t<bool,class_boost::_mfi::mf3<bool,class_WF8266037::W1E8966B9,class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,bool>,class_boost::_bi::list4<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::value<bool>_>_>
                ::RTTI_Type_Descriptor;
    *(undefined *)(param_2 + 1) = 0;
    *(undefined *)((int)param_2 + 5) = 0;
  }
  else {
    param_3 = param_3 & 0xffffff00;
    FUN_006b4ee2(param_3);
  }
  return;
}



void FUN_006b491e(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006b5005(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<struct_WF8266037::WCDA438C9>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::reference_wrapper<class_boost::optional<struct_WF8266037::WCDA438C9>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006b4959(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006b5087(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::_bi::value<int>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006b4994(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006b510f(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<struct_WF8266037::WCDA438C9>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::reference_wrapper<class_boost::optional<struct_WF8266037::WCDA438C9>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::_bi::value<int>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006b49cf(undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *param_1;
  param_1 = (undefined4 *)((uint)param_1 & 0xffffff00);
  FUN_006b5899(param_1,uVar1);
  return;
}



void FUN_006b49ed(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006b5191(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf4<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list5<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006b4a28(undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *param_1;
  param_1 = (undefined4 *)((uint)param_1 & 0xffffff00);
  FUN_006b5918(param_1,uVar1);
  return;
}



void FUN_006b4a46(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006b5213(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::_bi::value<int>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>_>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006b4a81(undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *param_1;
  param_1 = (undefined4 *)((uint)param_1 & 0xffffff00);
  FUN_006b598a(param_1,uVar1);
  return;
}



void FUN_006b4a9f(undefined4 param_1,TypeDescriptor **param_2,uint param_3)

{
  if (param_3 == 4) {
    *param_2 = &boost::_bi::
                bind_t<bool,class_boost::_mfi::mf2<bool,class_WF8266037::W1E8966B9,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WE3BF860C&>,class_boost::_bi::list3<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WE3BF860C>_>_>
                ::RTTI_Type_Descriptor;
    *(undefined *)(param_2 + 1) = 0;
    *(undefined *)((int)param_2 + 5) = 0;
  }
  else {
    param_3 = param_3 & 0xffffff00;
    FUN_006b4f43(param_3);
  }
  return;
}



void FUN_006b4b3c(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006b52a6(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf5<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list6<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006b4b77(undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *param_1;
  param_1 = (undefined4 *)((uint)param_1 & 0xffffff00);
  FUN_006b5a09(param_1,uVar1);
  return;
}



void FUN_006b4b95(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006b5328(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf4<bool,class_WF8266037::W1E8966B9,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::vector<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>,class_std::allocator<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>_>_>_const&,struct_WF8266037::WC9135E4C_const&>,class_boost::_bi::list5<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_std::vector<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>,class_std::allocator<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>_>_>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006b4bd0(undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *param_1;
  param_1 = (undefined4 *)((uint)param_1 & 0xffffff00);
  FUN_006b5a84(param_1,uVar1);
  return;
}



void FUN_006b4bee(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006b53aa(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006b4c29(undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *param_1;
  param_1 = (undefined4 *)((uint)param_1 & 0xffffff00);
  FUN_006b5af6(param_1,uVar1);
  return;
}



void FUN_006b4c47(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006b5432(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,bool&,class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<bool>,class_boost::reference_wrapper<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006b4c82(undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *param_1;
  param_1 = (undefined4 *)((uint)param_1 & 0xffffff00);
  FUN_006b5b7a(param_1,uVar1);
  return;
}



void FUN_006b4ca0(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006b54bd(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf8<bool,class_WF8266037::W1E8966B9,bool&,class_boost::optional<int>&,class_boost::optional<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list9<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<bool>,class_boost::reference_wrapper<class_boost::optional<int>_>,class_boost::reference_wrapper<class_boost::optional<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006b4cdb(undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *param_1;
  param_1 = (undefined4 *)((uint)param_1 & 0xffffff00);
  FUN_006b5bfe(param_1,uVar1);
  return;
}



void FUN_006b4cf9(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006b5548(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<__int64>&,bool&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::reference_wrapper<class_boost::optional<__int64>_>,class_boost::reference_wrapper<bool>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006b4d34(undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *param_1;
  param_1 = (undefined4 *)((uint)param_1 & 0xffffff00);
  FUN_006b5c94(param_1,uVar1);
  return;
}



void FUN_006b4d52(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006b55d3(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf4<bool,class_WF8266037::W1E8966B9,bool&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list5<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<bool>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006b4d8d(undefined4 param_1,TypeDescriptor **param_2,uint param_3)

{
  if (param_3 == 4) {
    *param_2 = &boost::_bi::
                bind_t<bool,class_boost::_mfi::mf3<bool,class_WF8266037::W1E8966B9,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list4<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
                ::RTTI_Type_Descriptor;
    *(undefined *)(param_2 + 1) = 0;
    *(undefined *)((int)param_2 + 5) = 0;
  }
  else {
    param_3 = param_3 & 0xffffff00;
    FUN_006b4fa4(param_3);
  }
  return;
}



void FUN_006b4e30(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf0<bool,class_WF8266037::W1E8966B9>,class_boost::_bi::list1<class_boost::_bi::value<class_WF8266037::W1E8966B9*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf0<bool,class_WF8266037::W1E8966B9>,class_boost::_bi::list1<class_boost::_bi::value<class_WF8266037::W1E8966B9*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_006b4e79(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  int unaff_EBX;
  TypeDescriptor **unaff_EDI;
  
  if ((unaff_EBX == 0) || (unaff_EBX == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      *in_EAX = *unaff_EDI;
      FUN_00438301();
    }
    if (unaff_EBX != 1) {
      return;
    }
    pTVar2 = unaff_EDI[3];
  }
  else {
    if (unaff_EBX != 2) {
      if (unaff_EBX == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<bool,class_boost::_mfi::mf1<bool,class_WF8266037::W1E8966B9,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::list2<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<bool,class_boost::_mfi::mf1<bool,class_WF8266037::W1E8966B9,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::list2<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[3];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



void FUN_006b4ee2(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  uint unaff_EBX;
  int unaff_ESI;
  
  if ((unaff_ESI == 0) || (unaff_ESI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_006b2da6();
    }
    if (unaff_ESI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EBX + 0x10);
  }
  else {
    if (unaff_ESI != 2) {
      if (unaff_ESI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<bool,class_boost::_mfi::mf3<bool,class_WF8266037::W1E8966B9,class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,bool>,class_boost::_bi::list4<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::value<bool>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EBX);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<bool,class_boost::_mfi::mf3<bool,class_WF8266037::W1E8966B9,class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,bool>,class_boost::_bi::list4<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::_bi::value<bool>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[4];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



void FUN_006b4f43(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  uint unaff_EBX;
  int unaff_ESI;
  
  if ((unaff_ESI == 0) || (unaff_ESI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_006b2e03();
    }
    if (unaff_ESI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EBX + 0xc);
  }
  else {
    if (unaff_ESI != 2) {
      if (unaff_ESI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<bool,class_boost::_mfi::mf2<bool,class_WF8266037::W1E8966B9,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WE3BF860C&>,class_boost::_bi::list3<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WE3BF860C>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EBX);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<bool,class_boost::_mfi::mf2<bool,class_WF8266037::W1E8966B9,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WE3BF860C&>,class_boost::_bi::list3<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WE3BF860C>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[3];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



void FUN_006b4fa4(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  int unaff_ESI;
  uint unaff_EDI;
  
  if ((unaff_ESI == 0) || (unaff_ESI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_006b2e6d();
    }
    if (unaff_ESI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EDI + 0xc);
  }
  else {
    if (unaff_ESI != 2) {
      if (unaff_ESI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<bool,class_boost::_mfi::mf3<bool,class_WF8266037::W1E8966B9,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list4<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EDI);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<bool,class_boost::_mfi::mf3<bool,class_WF8266037::W1E8966B9,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list4<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[3];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



void __fastcall FUN_006b5005(TypeDescriptor **param_1)

{
  bool bVar1;
  int in_EAX;
  void *pvVar2;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_ESI;
  
  if (in_EAX == 0) {
    pvVar2 = operator_new(0x24);
    if (pvVar2 == (void *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3 = (TypeDescriptor *)FUN_006b2dc4();
    }
LAB_006b502c:
    *unaff_ESI = pTVar3;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *param_1;
      *param_1 = (TypeDescriptor *)0x0;
      return;
    }
    if (in_EAX == 2) {
      pTVar3 = *unaff_ESI;
      if (pTVar3 != (TypeDescriptor *)0x0) {
        if (pTVar3[2].spare != (void *)0x0) {
          FUN_0040127a();
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar3);
      }
    }
    else {
      if (in_EAX != 3) {
        *unaff_ESI = &boost::_bi::
                      bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<struct_WF8266037::WCDA438C9>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::reference_wrapper<class_boost::optional<struct_WF8266037::WCDA438C9>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_ESI + 1) = 0;
        *(undefined *)((int)unaff_ESI + 5) = 0;
        return;
      }
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<struct_WF8266037::WCDA438C9>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::reference_wrapper<class_boost::optional<struct_WF8266037::WCDA438C9>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar1) {
        pTVar3 = *param_1;
        goto LAB_006b502c;
      }
    }
    *unaff_ESI = (TypeDescriptor *)0x0;
  }
  return;
}



void __fastcall FUN_006b5087(TypeDescriptor **param_1)

{
  TypeDescriptor *pTVar1;
  bool bVar2;
  int in_EAX;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_ESI;
  
  pTVar3 = (TypeDescriptor *)0x0;
  if (in_EAX == 0) {
    pTVar1 = *param_1;
    pTVar3 = (TypeDescriptor *)operator_new(0x24);
    if (pTVar3 == (TypeDescriptor *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3->pVFTable = pTVar1->pVFTable;
      FUN_006b2e91();
    }
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *param_1;
      *param_1 = (TypeDescriptor *)0x0;
      return;
    }
    if (in_EAX == 2) {
      pTVar1 = *unaff_ESI;
      if (pTVar1 != (TypeDescriptor *)0x0) {
        if (pTVar1[2].pVFTable != (void *)0x0) {
          FUN_0040127a();
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar1);
      }
    }
    else {
      if (in_EAX != 3) {
        *unaff_ESI = &boost::_bi::
                      bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::_bi::value<int>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_ESI + 1) = 0;
        *(undefined *)((int)unaff_ESI + 5) = 0;
        return;
      }
      bVar2 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::_bi::value<int>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar2) {
        *unaff_ESI = *param_1;
        return;
      }
    }
  }
  *unaff_ESI = pTVar3;
  return;
}



void __fastcall FUN_006b510f(TypeDescriptor **param_1)

{
  bool bVar1;
  int in_EAX;
  void *pvVar2;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_ESI;
  
  if (in_EAX == 0) {
    pvVar2 = operator_new(0x24);
    if (pvVar2 == (void *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3 = (TypeDescriptor *)FUN_006b2dc4();
    }
LAB_006b5136:
    *unaff_ESI = pTVar3;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *param_1;
      *param_1 = (TypeDescriptor *)0x0;
      return;
    }
    if (in_EAX == 2) {
      pTVar3 = *unaff_ESI;
      if (pTVar3 != (TypeDescriptor *)0x0) {
        if (pTVar3[2].spare != (void *)0x0) {
          FUN_0040127a();
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar3);
      }
    }
    else {
      if (in_EAX != 3) {
        *unaff_ESI = &boost::_bi::
                      bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<struct_WF8266037::WCDA438C9>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::reference_wrapper<class_boost::optional<struct_WF8266037::WCDA438C9>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::_bi::value<int>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_ESI + 1) = 0;
        *(undefined *)((int)unaff_ESI + 5) = 0;
        return;
      }
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<struct_WF8266037::WCDA438C9>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::reference_wrapper<class_boost::optional<struct_WF8266037::WCDA438C9>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::_bi::value<int>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar1) {
        pTVar3 = *param_1;
        goto LAB_006b5136;
      }
    }
    *unaff_ESI = (TypeDescriptor *)0x0;
  }
  return;
}



void __fastcall FUN_006b5191(TypeDescriptor **param_1)

{
  bool bVar1;
  int in_EAX;
  void *pvVar2;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_ESI;
  
  if (in_EAX == 0) {
    pvVar2 = operator_new(0x1c);
    if (pvVar2 == (void *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3 = (TypeDescriptor *)FUN_006b2de7();
    }
LAB_006b51b8:
    *unaff_ESI = pTVar3;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *param_1;
      *param_1 = (TypeDescriptor *)0x0;
      return;
    }
    if (in_EAX == 2) {
      pTVar3 = *unaff_ESI;
      if (pTVar3 != (TypeDescriptor *)0x0) {
        if (pTVar3[2].pVFTable != (void *)0x0) {
          FUN_0040127a();
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar3);
      }
    }
    else {
      if (in_EAX != 3) {
        *unaff_ESI = &boost::_bi::
                      bind_t<bool,class_boost::_mfi::mf4<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list5<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_ESI + 1) = 0;
        *(undefined *)((int)unaff_ESI + 5) = 0;
        return;
      }
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf4<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list5<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar1) {
        pTVar3 = *param_1;
        goto LAB_006b51b8;
      }
    }
    *unaff_ESI = (TypeDescriptor *)0x0;
  }
  return;
}



void __fastcall FUN_006b5213(TypeDescriptor **param_1)

{
  TypeDescriptor *pTVar1;
  bool bVar2;
  int in_EAX;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_EBX;
  
  if (in_EAX == 0) {
    pTVar1 = *param_1;
    pTVar3 = (TypeDescriptor *)operator_new(0x24);
    if (pTVar3 == (TypeDescriptor *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3->pVFTable = pTVar1->pVFTable;
      FUN_006b2eb3();
    }
LAB_006b5248:
    *unaff_EBX = pTVar3;
  }
  else {
    if (in_EAX == 1) {
      *unaff_EBX = *param_1;
      *param_1 = (TypeDescriptor *)0x0;
      return;
    }
    if (in_EAX == 2) {
      pTVar3 = *unaff_EBX;
      if (pTVar3 != (TypeDescriptor *)0x0) {
        if (pTVar3[2].pVFTable != (void *)0x0) {
          FUN_0040127a();
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar3);
      }
    }
    else {
      if (in_EAX != 3) {
        *unaff_EBX = &boost::_bi::
                      bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::_bi::value<int>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>_>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_EBX + 1) = 0;
        *(undefined *)((int)unaff_EBX + 5) = 0;
        return;
      }
      bVar2 = type_info::operator==
                        ((type_info *)*unaff_EBX,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,int,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::_bi::value<int>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_std::vector<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>,class_std::allocator<class_boost::shared_ptr<class_WABE12921::W0AC2C3E4>_>_>_>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar2) {
        pTVar3 = *param_1;
        goto LAB_006b5248;
      }
    }
    *unaff_EBX = (TypeDescriptor *)0x0;
  }
  return;
}



void __fastcall FUN_006b52a6(TypeDescriptor **param_1)

{
  bool bVar1;
  int in_EAX;
  void *pvVar2;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_ESI;
  
  if (in_EAX == 0) {
    pvVar2 = operator_new(0x20);
    if (pvVar2 == (void *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3 = (TypeDescriptor *)FUN_006b2e21();
    }
LAB_006b52cd:
    *unaff_ESI = pTVar3;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *param_1;
      *param_1 = (TypeDescriptor *)0x0;
      return;
    }
    if (in_EAX == 2) {
      pTVar3 = *unaff_ESI;
      if (pTVar3 != (TypeDescriptor *)0x0) {
        if (pTVar3[2].pVFTable != (void *)0x0) {
          FUN_0040127a();
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar3);
      }
    }
    else {
      if (in_EAX != 3) {
        *unaff_ESI = &boost::_bi::
                      bind_t<bool,class_boost::_mfi::mf5<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list6<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_ESI + 1) = 0;
        *(undefined *)((int)unaff_ESI + 5) = 0;
        return;
      }
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf5<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list6<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar1) {
        pTVar3 = *param_1;
        goto LAB_006b52cd;
      }
    }
    *unaff_ESI = (TypeDescriptor *)0x0;
  }
  return;
}



void __fastcall FUN_006b5328(TypeDescriptor **param_1)

{
  bool bVar1;
  int in_EAX;
  void *pvVar2;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_ESI;
  
  if (in_EAX == 0) {
    pvVar2 = operator_new(0x1c);
    if (pvVar2 == (void *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3 = (TypeDescriptor *)FUN_006b2e43();
    }
LAB_006b534f:
    *unaff_ESI = pTVar3;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *param_1;
      *param_1 = (TypeDescriptor *)0x0;
      return;
    }
    if (in_EAX == 2) {
      pTVar3 = *unaff_ESI;
      if (pTVar3 != (TypeDescriptor *)0x0) {
        if (pTVar3[1].spare != (void *)0x0) {
          FUN_0040127a();
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar3);
      }
    }
    else {
      if (in_EAX != 3) {
        *unaff_ESI = &boost::_bi::
                      bind_t<bool,class_boost::_mfi::mf4<bool,class_WF8266037::W1E8966B9,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::vector<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>,class_std::allocator<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>_>_>_const&,struct_WF8266037::WC9135E4C_const&>,class_boost::_bi::list5<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_std::vector<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>,class_std::allocator<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>_>_>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_ESI + 1) = 0;
        *(undefined *)((int)unaff_ESI + 5) = 0;
        return;
      }
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf4<bool,class_WF8266037::W1E8966B9,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::vector<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>,class_std::allocator<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>_>_>_const&,struct_WF8266037::WC9135E4C_const&>,class_boost::_bi::list5<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_std::vector<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>,class_std::allocator<class_boost::shared_ptr<struct_WF8266037::WC9FD658A>_>_>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar1) {
        pTVar3 = *param_1;
        goto LAB_006b534f;
      }
    }
    *unaff_ESI = (TypeDescriptor *)0x0;
  }
  return;
}



void __fastcall FUN_006b53aa(TypeDescriptor **param_1)

{
  TypeDescriptor *pTVar1;
  bool bVar2;
  int in_EAX;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_ESI;
  
  pTVar3 = (TypeDescriptor *)0x0;
  if (in_EAX == 0) {
    pTVar1 = *param_1;
    pTVar3 = (TypeDescriptor *)operator_new(0x24);
    if (pTVar3 == (TypeDescriptor *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3->pVFTable = pTVar1->pVFTable;
      FUN_006b2eea();
    }
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *param_1;
      *param_1 = (TypeDescriptor *)0x0;
      return;
    }
    if (in_EAX == 2) {
      pTVar1 = *unaff_ESI;
      if (pTVar1 != (TypeDescriptor *)0x0) {
        if (pTVar1[2].pVFTable != (void *)0x0) {
          FUN_0040127a();
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar1);
      }
    }
    else {
      if (in_EAX != 3) {
        *unaff_ESI = &boost::_bi::
                      bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_ESI + 1) = 0;
        *(undefined *)((int)unaff_ESI + 5) = 0;
        return;
      }
      bVar2 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar2) {
        *unaff_ESI = *param_1;
        return;
      }
    }
  }
  *unaff_ESI = pTVar3;
  return;
}



void __fastcall FUN_006b5432(TypeDescriptor **param_1)

{
  TypeDescriptor *pTVar1;
  bool bVar2;
  int in_EAX;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_ESI;
  
  if (in_EAX == 0) {
    pTVar1 = *param_1;
    pTVar3 = (TypeDescriptor *)operator_new(0x24);
    if (pTVar3 == (TypeDescriptor *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3->pVFTable = pTVar1->pVFTable;
      FUN_006b2f10(&pTVar1->spare);
    }
    *unaff_ESI = pTVar3;
  }
  else if (in_EAX == 1) {
    *unaff_ESI = *param_1;
    *param_1 = (TypeDescriptor *)0x0;
  }
  else {
    if (in_EAX == 2) {
      pTVar1 = *unaff_ESI;
      if (pTVar1 != (TypeDescriptor *)0x0) {
        if (pTVar1[2].spare != (void *)0x0) {
          FUN_0040127a();
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar1);
      }
    }
    else {
      if (in_EAX != 3) {
        *unaff_ESI = &boost::_bi::
                      bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,bool&,class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<bool>,class_boost::reference_wrapper<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_ESI + 1) = 0;
        *(undefined *)((int)unaff_ESI + 5) = 0;
        return;
      }
      bVar2 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,bool&,class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<bool>,class_boost::reference_wrapper<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar2) {
        *unaff_ESI = *param_1;
        return;
      }
    }
    *unaff_ESI = (TypeDescriptor *)0x0;
  }
  return;
}



void __fastcall FUN_006b54bd(TypeDescriptor **param_1)

{
  TypeDescriptor *pTVar1;
  bool bVar2;
  int in_EAX;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_ESI;
  
  if (in_EAX == 0) {
    pTVar1 = *param_1;
    pTVar3 = (TypeDescriptor *)operator_new(0x2c);
    if (pTVar3 == (TypeDescriptor *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3->pVFTable = pTVar1->pVFTable;
      FUN_006b2f4c(&pTVar1->spare);
    }
    *unaff_ESI = pTVar3;
  }
  else if (in_EAX == 1) {
    *unaff_ESI = *param_1;
    *param_1 = (TypeDescriptor *)0x0;
  }
  else {
    if (in_EAX == 2) {
      pTVar1 = *unaff_ESI;
      if (pTVar1 != (TypeDescriptor *)0x0) {
        if (pTVar1[3].pVFTable != (void *)0x0) {
          FUN_0040127a();
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar1);
      }
    }
    else {
      if (in_EAX != 3) {
        *unaff_ESI = &boost::_bi::
                      bind_t<bool,class_boost::_mfi::mf8<bool,class_WF8266037::W1E8966B9,bool&,class_boost::optional<int>&,class_boost::optional<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list9<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<bool>,class_boost::reference_wrapper<class_boost::optional<int>_>,class_boost::reference_wrapper<class_boost::optional<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_ESI + 1) = 0;
        *(undefined *)((int)unaff_ESI + 5) = 0;
        return;
      }
      bVar2 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf8<bool,class_WF8266037::W1E8966B9,bool&,class_boost::optional<int>&,class_boost::optional<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_common::WB943A9F0_const&,class_common::WB943A9F0_const&>,class_boost::_bi::list9<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<bool>,class_boost::reference_wrapper<class_boost::optional<int>_>,class_boost::reference_wrapper<class_boost::optional<class_std::vector<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,class_std::allocator<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>_>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>,class_boost::reference_wrapper<class_common::WB943A9F0>,class_boost::reference_wrapper<class_common::WB943A9F0>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar2) {
        *unaff_ESI = *param_1;
        return;
      }
    }
    *unaff_ESI = (TypeDescriptor *)0x0;
  }
  return;
}



void __fastcall FUN_006b5548(TypeDescriptor **param_1)

{
  TypeDescriptor *pTVar1;
  bool bVar2;
  int in_EAX;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_ESI;
  
  if (in_EAX == 0) {
    pTVar1 = *param_1;
    pTVar3 = (TypeDescriptor *)operator_new(0x24);
    if (pTVar3 == (TypeDescriptor *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3->pVFTable = pTVar1->pVFTable;
      FUN_006b2f8f(&pTVar1->spare);
    }
    *unaff_ESI = pTVar3;
  }
  else if (in_EAX == 1) {
    *unaff_ESI = *param_1;
    *param_1 = (TypeDescriptor *)0x0;
  }
  else {
    if (in_EAX == 2) {
      pTVar1 = *unaff_ESI;
      if (pTVar1 != (TypeDescriptor *)0x0) {
        if (pTVar1[3].pVFTable != (void *)0x0) {
          FUN_0040127a();
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar1);
      }
    }
    else {
      if (in_EAX != 3) {
        *unaff_ESI = &boost::_bi::
                      bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<__int64>&,bool&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::reference_wrapper<class_boost::optional<__int64>_>,class_boost::reference_wrapper<bool>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_ESI + 1) = 0;
        *(undefined *)((int)unaff_ESI + 5) = 0;
        return;
      }
      bVar2 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf6<bool,class_WF8266037::W1E8966B9,class_std::auto_ptr<class_common::WB943A9F0>&,class_boost::optional<__int64>&,bool&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list7<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::reference_wrapper<class_boost::optional<__int64>_>,class_boost::reference_wrapper<bool>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar2) {
        *unaff_ESI = *param_1;
        return;
      }
    }
    *unaff_ESI = (TypeDescriptor *)0x0;
  }
  return;
}



void __fastcall FUN_006b55d3(TypeDescriptor **param_1)

{
  TypeDescriptor *pTVar1;
  bool bVar2;
  int in_EAX;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_EBX;
  
  if (in_EAX == 0) {
    pTVar1 = *param_1;
    pTVar3 = (TypeDescriptor *)operator_new(0x1c);
    if (pTVar3 == (TypeDescriptor *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3->pVFTable = pTVar1->pVFTable;
      FUN_006b2fc6();
    }
LAB_006b5608:
    *unaff_EBX = pTVar3;
  }
  else {
    if (in_EAX == 1) {
      *unaff_EBX = *param_1;
      *param_1 = (TypeDescriptor *)0x0;
      return;
    }
    if (in_EAX == 2) {
      pTVar3 = *unaff_EBX;
      if (pTVar3 != (TypeDescriptor *)0x0) {
        if (pTVar3[2].pVFTable != (void *)0x0) {
          FUN_0040127a();
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar3);
      }
    }
    else {
      if (in_EAX != 3) {
        *unaff_EBX = &boost::_bi::
                      bind_t<bool,class_boost::_mfi::mf4<bool,class_WF8266037::W1E8966B9,bool&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list5<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<bool>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_EBX + 1) = 0;
        *(undefined *)((int)unaff_EBX + 5) = 0;
        return;
      }
      bVar2 = type_info::operator==
                        ((type_info *)*unaff_EBX,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf4<bool,class_WF8266037::W1E8966B9,bool&,class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>,struct_WF8266037::WC9135E4C_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&>,class_boost::_bi::list5<class_boost::_bi::value<class_WF8266037::W1E8966B9*>,class_boost::reference_wrapper<bool>,class_boost::_bi::value<class_boost::shared_ptr<class_W14E3BFCC::WB77945B3>_>,class_boost::reference_wrapper<struct_WF8266037::WC9135E4C>,class_boost::reference_wrapper<class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar2) {
        pTVar3 = *param_1;
        goto LAB_006b5608;
      }
    }
    *unaff_EBX = (TypeDescriptor *)0x0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_006b5899(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x10);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_006b5918(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_006b598a(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_006b5a09(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_006b5a84(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 8);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_006b5af6(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_006b5b7a(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x10);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_006b5bfe(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x14);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_006b5c94(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0x14);
}



undefined4 __thiscall FUN_006b65fd(undefined4 param_1,byte param_2)

{
  FUN_006b6620();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_006b6619(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W6D665DF4::
            W3E9FF98A<class_std::auto_ptr<class_common::WB943A9F0>&,class_std::vector<unsigned_char,class_std::allocator<unsigned_char>_>&,class_std::auto_ptr<class_common::WB943A9F0>&,bool>
            ::vftable;
  return;
}



void __fastcall FUN_006b6620(undefined4 *param_1)

{
  *param_1 = WF8266037::W01B70A2F::vftable;
  param_1[0x31] = WF8266037::W01B70A2F::vftable;
  param_1[0x32] = WF8266037::W01B70A2F::vftable;
  FUN_007a7d86();
  param_1[0x32] = WABE12921::W5805541D::vftable;
  param_1[0x31] =
       W6D665DF4::
       W3E9FF98A<class_std::auto_ptr<class_common::WB943A9F0>&,class_std::vector<unsigned_char,class_std::allocator<unsigned_char>_>&,class_std::auto_ptr<class_common::WB943A9F0>&,bool>
       ::vftable;
  FUN_006bc348();
  return;
}



undefined4 __fastcall FUN_006b6668(int param_1)

{
  return *(undefined4 *)(param_1 + -0xc4);
}



void __thiscall FUN_006b666f(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  undefined auStack_5c [3];
  char local_59;
  int local_58;
  int local_54;
  undefined4 local_50;
  undefined local_4c [28];
  char local_30 [20];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e36f;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_5c;
  ExceptionList = &local_14;
  local_50 = param_1;
  FUN_006ad7fd(DAT_0323f878 ^ (uint)&stack0xffffff98);
  local_c = 0;
  local_59 = local_58 != 0;
  if (!(bool)local_59) {
    FUN_00b940e0(0x8b563cc5);
  }
  local_30[0] = '\0';
  local_c._0_1_ = 1;
  if (local_59 != '\0') {
    uVar1 = FUN_006bc378(local_4c);
    local_c._0_1_ = 2;
    local_59 = FUN_006afe75(local_50,local_30,param_1_00 + -0xb4,*(undefined4 *)(param_1_00 + 8),
                            uVar1);
    local_c = CONCAT31(local_c._1_3_,1);
    FUN_00401829(1,0);
    if (local_59 == '\0') {
      FUN_00b940e0(0xbcf7355);
    }
    else {
      local_59 = '\x01' - ((-(uint)(local_30[0] != '\0') & 0x6a1cd8) != 0);
    }
  }
  local_c = 0xffffffff;
  if (local_54 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_006b67a3(void)

{
  FUN_0046e9ed();
  return 1;
}



char __thiscall FUN_006b67b4(int param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  char local_25;
  undefined4 *local_24;
  int local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e33c;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_006ad7fd(DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_c = 0;
  local_25 = local_20 != 0;
  if (!(bool)local_25) {
    FUN_00b940e0(0xd5f70a4d);
  }
  local_24 = (undefined4 *)0x0;
  local_c._0_1_ = 1;
  if ((bool)local_25) {
    cVar1 = FUN_006bc395(&local_24,param_1_00 + 0xc);
    if (cVar1 == '\0') {
      uVar2 = 0xd3de16d7;
      local_25 = '\0';
    }
    else {
      local_25 = FUN_006b0051(local_20,param_1,param_1_00 + -0xb4,local_24);
      if (local_25 != '\0') goto LAB_006b687a;
      uVar2 = 0x712918fe;
    }
    FUN_00b940e0(uVar2);
  }
LAB_006b687a:
  local_c = (uint)local_c._1_3_ << 8;
  if (local_24 != (undefined4 *)0x0) {
    (**(code **)*local_24)(1);
  }
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return local_25;
}



void FUN_006b68b8(void)

{
  FUN_006b65fd();
  return;
}



void FUN_006b68c3(void)

{
  FUN_006b65fd();
  return;
}



undefined4 * __thiscall FUN_006b68ce(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W6D665DF4::
                W3E9FF98A<class_std::auto_ptr<class_common::WB943A9F0>&,class_std::vector<unsigned_char,class_std::allocator<unsigned_char>_>&,class_std::auto_ptr<class_common::WB943A9F0>&,bool>
                ::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006b6957(undefined4 param_1,byte param_2)

{
  FUN_006b6973();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_006b6973(undefined4 *param_1)

{
  *param_1 = WF8266037::W3F3F7BE2::vftable;
  param_1[0x31] = WF8266037::W3F3F7BE2::vftable;
  param_1[0x31] = WABE12921::W5805541D::vftable;
  FUN_006bc348();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_006b6990(int param_1_00,undefined4 param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined local_38 [28];
  int local_1c;
  int local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0;
  FUN_006ad7fd();
  local_8._0_1_ = 1;
  local_11 = local_1c != 0;
  if ((bool)local_11) {
    uVar1 = FUN_006bc378(local_38);
    local_8._0_1_ = 2;
    local_11 = FUN_006afc8a(param_1,param_1_00 + -0xb4,*(undefined *)(param_1_00 + 4),uVar1,param_2)
    ;
    local_8._0_1_ = 1;
    FUN_00401829(1,0);
    if (local_11 != '\0') goto LAB_006b6a23;
    uVar1 = 0xabc8bd6d;
  }
  else {
    uVar1 = 0x470c8847;
  }
  FUN_00b940e0(uVar1);
LAB_006b6a23:
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (param_2 != (undefined4 *)0x0) {
    (**(code **)*param_2)(1);
  }
  return local_11;
}



void FUN_006b6a4f(void)

{
  FUN_006b6957();
  return;
}



undefined4 __thiscall FUN_006b6abd(undefined4 param_1,byte param_2)

{
  FUN_006b6ad9();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_006b6ad9(undefined4 *param_1)

{
  *param_1 = WF8266037::W6DC25463::vftable;
  param_1[0x31] = WF8266037::W6DC25463::vftable;
  param_1[0x31] = WABE12921::W5805541D::vftable;
  FUN_006bc348();
  return;
}



void __thiscall FUN_006b6af6(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined auStack_64 [4];
  undefined4 local_60;
  int local_5c;
  int local_58;
  undefined4 local_54;
  int local_50;
  undefined local_4c [28];
  undefined local_30 [20];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e2d1;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_64;
  ExceptionList = &local_14;
  local_60 = param_1;
  local_54 = param_2;
  local_50 = param_1_00;
  FUN_006ad7fd(DAT_0323f878 ^ (uint)&stack0xffffff90);
  local_c = 0;
  if (local_5c == 0) {
    FUN_00b940e0(0x5fd6b792);
    param_1_00 = local_50;
  }
  local_30[0] = 0;
  local_c._0_1_ = 1;
  if (local_5c != 0) {
    uVar2 = FUN_006bc378(local_4c);
    local_c._0_1_ = 2;
    cVar1 = FUN_006b0225(local_60,local_30,param_1_00 + -0xb4,uVar2,local_54);
    local_c = CONCAT31(local_c._1_3_,1);
    FUN_00401829(1,0);
    if (cVar1 == '\0') {
      FUN_00b940e0(0xe9bdaefb);
    }
  }
  local_c = 0xffffffff;
  if (local_58 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void FUN_006b6c28(void)

{
  FUN_006b6abd();
  return;
}



undefined4 __thiscall FUN_006b6c96(undefined4 param_1,byte param_2)

{
  FUN_006b6cb2();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_006b6cb2(undefined4 *param_1)

{
  *param_1 = WF8266037::W6E927DEC::vftable;
  param_1[0x31] = WF8266037::W6E927DEC::vftable;
  param_1[0x31] = WABE12921::W5805541D::vftable;
  FUN_006bc348();
  return;
}



undefined FUN_006b6ccf(void)

{
  return 1;
}



void FUN_006b6cd4(void)

{
  FUN_006b6c96();
  return;
}



undefined4 __thiscall FUN_006b6d42(undefined4 param_1,byte param_2)

{
  FUN_006b6d5e();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_006b6d5e(undefined4 *param_1)

{
  *param_1 = WF8266037::WA306B2A4::vftable;
  param_1[0x31] = WF8266037::WA306B2A4::vftable;
  param_1[0x31] = WABE12921::W5805541D::vftable;
  FUN_006bc348();
  return;
}



void __thiscall FUN_006b6d7b(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined auStack_64 [7];
  char local_5d;
  undefined4 local_5c;
  int local_58;
  int local_54;
  undefined4 local_50;
  undefined local_4c [28];
  undefined local_30 [20];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e291;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_64;
  ExceptionList = &local_14;
  local_5c = param_1;
  local_50 = param_2;
  FUN_006ad7fd(DAT_0323f878 ^ (uint)&stack0xffffff90);
  local_c = 0;
  local_5d = local_58 != 0;
  if (!(bool)local_5d) {
    FUN_00b940e0(0x5c04157f);
  }
  local_30[0] = 0;
  local_c._0_1_ = 1;
  if (local_5d != '\0') {
    uVar1 = FUN_006bc378(local_4c);
    local_c._0_1_ = 2;
    local_5d = FUN_006b1842(local_5c,local_30,local_50,param_1_00 + -0xb4,uVar1);
    local_c = CONCAT31(local_c._1_3_,1);
    FUN_00401829(1,0);
    if (local_5d == '\0') {
      FUN_00b940e0(0x7ab4fe08);
    }
  }
  local_c = 0xffffffff;
  if (local_54 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



char __thiscall FUN_006b6e9d(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  char local_3d;
  int local_3c;
  int local_38;
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e25e;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_006ad7fd(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  local_c = 0;
  local_3d = local_3c != 0;
  if ((bool)local_3d) {
    uVar1 = FUN_006bc378(local_34);
    local_c._0_1_ = 1;
    local_3d = FUN_006b1a2f(param_1,param_1_00 + -0xb4,uVar1);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00401829(1,0);
    if (local_3d != '\0') goto LAB_006b6f4f;
    uVar1 = 0xa60a8a88;
  }
  else {
    uVar1 = 0xdd531f75;
  }
  FUN_00b940e0(uVar1);
LAB_006b6f4f:
  local_c = 0xffffffff;
  if (local_38 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return local_3d;
}



char __fastcall FUN_006b6f7a(int param_1)

{
  undefined4 uVar1;
  char local_3d;
  int local_3c;
  int local_38;
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e25e;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_006ad7fd(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  local_c = 0;
  local_3d = local_3c != 0;
  if ((bool)local_3d) {
    uVar1 = FUN_006bc378(local_34);
    local_c._0_1_ = 1;
    local_3d = FUN_006b1bac(param_1 + -0xb4,uVar1);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00401829(1,0);
    if (local_3d != '\0') goto LAB_006b7029;
    uVar1 = 0x10d8f0e2;
  }
  else {
    uVar1 = 0x417d4378;
  }
  FUN_00b940e0(uVar1);
LAB_006b7029:
  local_c = 0xffffffff;
  if (local_38 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return local_3d;
}



undefined FUN_006b7052(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined uVar2;
  int local_28;
  int local_24;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_006ad7fd(DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_c = 0;
  uVar2 = local_28 != 0;
  if ((bool)uVar2) {
    puVar1 = (undefined4 *)FUN_006afa9e();
    local_c._0_1_ = 1;
    uVar2 = FUN_006af0a0(*puVar1,param_1);
    local_c = (uint)local_c._1_3_ << 8;
    if (local_1c != 0) {
      FUN_0040127a();
    }
  }
  else {
    FUN_00b940e0(0x2c16fbc3);
  }
  local_c = 0xffffffff;
  if (local_24 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return uVar2;
}



void FUN_006b7107(void)

{
  FUN_006b6d42();
  return;
}



undefined4 __thiscall FUN_006b717e(undefined4 param_1,byte param_2)

{
  FUN_006b719a();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_006b719a(undefined4 *param_1)

{
  *param_1 = WF8266037::W374B4395::vftable;
  param_1[0x31] = WF8266037::W374B4395::vftable;
  param_1[0x31] = WABE12921::W5805541D::vftable;
  FUN_006bc348();
  return;
}



undefined4 __fastcall FUN_006b71b7(int param_1)

{
  return *(undefined4 *)(param_1 + -0xc0);
}



char __thiscall FUN_006b71be(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  char local_3d;
  int local_3c;
  int local_38;
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e25e;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_006ad7fd(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  local_c = 0;
  local_3d = local_3c != 0;
  if ((bool)local_3d) {
    uVar1 = FUN_006bc378(local_34);
    local_c._0_1_ = 1;
    local_3d = FUN_006b0449(param_1,param_1_00 + -0xb4,*(undefined4 *)(param_1_00 + 4),uVar1,param_2
                           );
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00401829(1,0);
    if (local_3d != '\0') goto LAB_006b7276;
    uVar1 = 0xf0ec1e34;
  }
  else {
    uVar1 = 0xdf7c7317;
  }
  FUN_00b940e0(uVar1);
LAB_006b7276:
  local_c = 0xffffffff;
  if (local_38 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return local_3d;
}



void FUN_006b72a1(void)

{
  FUN_006b717e();
  return;
}



undefined4 __thiscall FUN_006b7318(undefined4 param_1,byte param_2)

{
  FUN_006b7334();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_006b7334(undefined4 *param_1)

{
  *param_1 = WF8266037::WA457D68B::vftable;
  param_1[0x31] = WF8266037::WA457D68B::vftable;
  param_1[0x31] = WABE12921::W5805541D::vftable;
  FUN_006bc348();
  return;
}



char __thiscall FUN_006b7351(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  char local_3d;
  int local_3c;
  int local_38;
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e25e;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_006ad7fd(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  local_c = 0;
  local_3d = local_3c != 0;
  if ((bool)local_3d) {
    uVar1 = FUN_006bc378(local_34);
    local_c._0_1_ = 1;
    local_3d = FUN_006b0660(param_1,param_1_00 + -0xb4,*(undefined4 *)(param_1_00 + 4),uVar1,param_2
                           );
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00401829(1,0);
    if (local_3d != '\0') goto LAB_006b7409;
    uVar1 = 0xeb9155f9;
  }
  else {
    uVar1 = 0x7853db9a;
  }
  FUN_00b940e0(uVar1);
LAB_006b7409:
  local_c = 0xffffffff;
  if (local_38 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return local_3d;
}



void FUN_006b7434(void)

{
  FUN_006b7318();
  return;
}



void __fastcall FUN_006b743f(undefined4 *param_1)

{
  *param_1 = WF8266037::WD6BCA60B::vftable;
  param_1[0x31] = WF8266037::WD6BCA60B::vftable;
  param_1[0x31] = WABE12921::W5805541D::vftable;
  FUN_006bc348();
  return;
}



undefined4 __thiscall FUN_006b745c(undefined4 param_1,byte param_2)

{
  FUN_006b743f();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __thiscall
FUN_006b74e5(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined auStack_94 [7];
  char local_8d;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_8c;
  undefined4 local_88;
  int local_84;
  int local_80;
  undefined4 local_7c;
  undefined4 local_78;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_74;
  undefined local_70 [28];
  undefined local_54 [24];
  undefined4 local_3c;
  undefined local_38 [24];
  undefined4 local_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e220;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_94;
  ExceptionList = &local_14;
  local_74 = param_1;
  local_8c = param_2;
  local_88 = param_3;
  local_7c = param_4;
  local_78 = param_5;
  FUN_006ad7fd(DAT_0323f878 ^ (uint)&stack0xffffff60);
  local_c = 0;
  local_8d = local_84 != 0;
  if (!(bool)local_8d) {
    FUN_00b940e0(0xd9fff1bd);
  }
  local_20 = 7;
  FUN_0040180b(0);
  local_3c = 7;
  FUN_0040180b(0);
  local_c._0_1_ = 2;
  if (local_8d != '\0') {
    uVar1 = FUN_00ba84f0();
    local_c._0_1_ = 3;
    FID_conflict_assign(uVar1,0,0xffffffff);
    local_c._0_1_ = 2;
    FUN_00401829(1,0);
    uVar1 = FUN_006bc378(local_70);
    local_c._0_1_ = 4;
    local_8d = FUN_006b07fa(local_84,local_38,local_54,param_1_00 + -0xb4,uVar1,
                            *(undefined4 *)(param_1_00 + 4),local_88,local_7c,local_78);
    local_c._0_1_ = 2;
    FUN_00401829(1,0);
    if (local_8d == '\0') {
      FUN_00b940e0(0x4540a20d);
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_00ba83f0(local_38);
      local_c._0_1_ = 5;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (local_74,pbVar2,0,0xffffffff);
      local_c._0_1_ = 2;
      FUN_004017b2(1,0);
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_00ba83f0(local_54);
      local_c._0_1_ = 6;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (local_8c,pbVar2,0,0xffffffff);
      FUN_004017b2(1,0);
    }
  }
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  local_c = 0xffffffff;
  if (local_80 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void FUN_006b771f(void)

{
  FUN_006b745c();
  return;
}



void __fastcall FUN_006b772a(undefined4 *param_1)

{
  *param_1 = WF8266037::WF2E69395::vftable;
  param_1[0x31] = WF8266037::WF2E69395::vftable;
  param_1[0x31] = WABE12921::W5805541D::vftable;
  FUN_006bc348();
  return;
}



undefined4 __thiscall FUN_006b7747(undefined4 param_1,byte param_2)

{
  FUN_006b772a();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



char __thiscall FUN_006b77c6(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  char local_3d;
  int local_3c;
  int local_38;
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e25e;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_006ad7fd(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  local_c = 0;
  local_3d = local_3c != 0;
  if ((bool)local_3d) {
    uVar1 = FUN_006bc378(local_34);
    local_c._0_1_ = 1;
    local_3d = FUN_006b0af9(param_1,param_1_00 + -0xb4,uVar1,param_2);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00401829(1,0);
    if (local_3d != '\0') goto LAB_006b787b;
    uVar1 = 0x9b9b245;
  }
  else {
    uVar1 = 0x326cd73b;
  }
  FUN_00b940e0(uVar1);
LAB_006b787b:
  local_c = 0xffffffff;
  if (local_38 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return local_3d;
}



void FUN_006b78a6(void)

{
  FUN_006b7747();
  return;
}



void __fastcall FUN_006b78b1(undefined4 *param_1)

{
  *param_1 = WF8266037::WCB5FFCEE::vftable;
  param_1[0x31] = WF8266037::WCB5FFCEE::vftable;
  param_1[0x31] = WABE12921::W5805541D::vftable;
  FUN_006bc348();
  return;
}



undefined4 __thiscall FUN_006b78ce(undefined4 param_1,byte param_2)

{
  FUN_006b78b1();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



char __thiscall FUN_006b794d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *local_44;
  undefined4 *local_40;
  int local_3c;
  int local_38;
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e1cd;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_44 = param_1_00;
  FUN_006ad7fd(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  local_c = 0;
  cVar2 = local_3c != 0;
  if (!(bool)cVar2) {
    FUN_00b940e0(0x4d8e2ef1);
    param_1_00 = local_44;
  }
  local_40 = (undefined4 *)0x0;
  local_c._0_1_ = 1;
  if ((bool)cVar2) {
    cVar2 = FUN_00bb62e0(&local_40,1);
    if (cVar2 == '\0') {
      FUN_00b940e0(0xdc99cdd2);
      param_1_00 = local_44;
    }
  }
  local_44 = (undefined4 *)0x0;
  local_c._0_1_ = 2;
  if (cVar2 != '\0') {
    uVar1 = FUN_006bc378(local_34);
    local_c._0_1_ = 3;
    cVar2 = FUN_006b0f40(&local_44,param_1_00 + -0x2d,uVar1,local_40);
    local_c._0_1_ = 2;
    FUN_00401829(1,0);
    if (cVar2 == '\0') {
      uVar1 = 0x3d56b613;
      cVar2 = '\0';
    }
    else {
      cVar2 = FUN_00bb6b50(param_1,local_44,1);
      if (cVar2 != '\0') goto LAB_006b7a71;
      uVar1 = 0x6192f81f;
    }
    FUN_00b940e0(uVar1);
  }
LAB_006b7a71:
  local_c._0_1_ = 1;
  if (local_44 != (undefined4 *)0x0) {
    (**(code **)*local_44)(1);
  }
  local_c = (uint)local_c._1_3_ << 8;
  if (local_40 != (undefined4 *)0x0) {
    (**(code **)*local_40)(1);
  }
  local_c = 0xffffffff;
  if (local_38 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return cVar2;
}



void FUN_006b7ac0(void)

{
  FUN_006b78ce();
  return;
}



void __fastcall FUN_006b7acb(undefined4 *param_1)

{
  *param_1 = WF8266037::W0F4A61DF::vftable;
  param_1[0x31] = WF8266037::W0F4A61DF::vftable;
  param_1[0x31] = WABE12921::W5805541D::vftable;
  FUN_006bc348();
  return;
}



undefined4 __thiscall FUN_006b7ae8(undefined4 param_1,byte param_2)

{
  FUN_006b7acb();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



char __thiscall
FUN_006b7b67(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  char local_3d;
  int local_3c;
  int local_38;
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e25e;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_006ad7fd(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  local_c = 0;
  local_3d = local_3c != 0;
  if ((bool)local_3d) {
    uVar1 = FUN_006bc378(local_34);
    local_c._0_1_ = 1;
    local_3d = FUN_006b10d7(param_1,param_1_00 + -0xb4,uVar1,param_2,param_3);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00401829(1,0);
    if (local_3d != '\0') goto LAB_006b7c1f;
    uVar1 = 0x5c4bf6b9;
  }
  else {
    uVar1 = 0x33162956;
  }
  FUN_00b940e0(uVar1);
LAB_006b7c1f:
  local_c = 0xffffffff;
  if (local_38 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return local_3d;
}



void FUN_006b7c4a(void)

{
  FUN_006b7ae8();
  return;
}



void __fastcall FUN_006b7c55(undefined4 *param_1)

{
  *param_1 = WF8266037::W04E20B94::vftable;
  param_1[0x31] = WF8266037::W04E20B94::vftable;
  param_1[0x31] = WABE12921::W5805541D::vftable;
  FUN_006bc348();
  return;
}



undefined4 __thiscall FUN_006b7c72(undefined4 param_1,byte param_2)

{
  FUN_006b7c55();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



char __thiscall
FUN_006b7cf1(int param_1_00,undefined *param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  char local_3d;
  int local_3c;
  int local_38;
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e25e;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  *param_1 = 0;
  FUN_006ad7fd(uVar1);
  local_c = 0;
  local_3d = local_3c != 0;
  if ((bool)local_3d) {
    uVar2 = FUN_006bc378(local_34);
    local_c._0_1_ = 1;
    local_3d = FUN_006b1367(param_1,param_2,param_1_00 + -0xb4,uVar2,param_3);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00401829(1,0);
    if (local_3d != '\0') goto LAB_006b7daf;
    uVar2 = 0x5c4bf6b9;
  }
  else {
    uVar2 = 0x33162956;
  }
  FUN_00b940e0(uVar2);
LAB_006b7daf:
  local_c = 0xffffffff;
  if (local_38 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return local_3d;
}



void FUN_006b7dda(void)

{
  FUN_006b7c72();
  return;
}



void __fastcall FUN_006b7de5(undefined4 *param_1)

{
  *param_1 = WABE12921::W5805541D::vftable;
  return;
}



undefined4 * __thiscall FUN_006b7dec(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WABE12921::W5805541D::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006b7e09(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = WF8266037::W4A62448F::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006b7e10(undefined4 *param_1)

{
  *param_1 = WF8266037::W1DE80C64::vftable;
  param_1[0x31] = WF8266037::W1DE80C64::vftable;
  if (param_1[0x33] != 0) {
    FUN_0040127a();
  }
  param_1[0x31] = WABE12921::W5805541D::vftable;
  FUN_006bc348();
  return;
}



undefined4 __thiscall FUN_006b7e62(undefined4 param_1_00,byte param_1)

{
  FUN_006b7e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



char __thiscall
FUN_006b7f0b(int param_1_00,undefined *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  uint uVar1;
  undefined4 uVar2;
  char local_3d;
  int local_3c;
  int local_38;
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e25e;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  *param_1 = 0;
  FUN_006ad7fd(uVar1);
  local_c = 0;
  local_3d = local_3c != 0;
  if ((bool)local_3d) {
    uVar2 = FUN_006bc378(local_34);
    local_c._0_1_ = 1;
    local_3d = FUN_006b15af(param_1,param_2,param_3,param_1_00 + -0xb4,uVar2,param_5,param_4);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00401829(1,0);
    if (local_3d != '\0') goto LAB_006b7fcf;
    uVar2 = 0x5bf5d613;
  }
  else {
    uVar2 = 0x33162956;
  }
  FUN_00b940e0(uVar2);
LAB_006b7fcf:
  local_c = 0xffffffff;
  if (local_38 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return local_3d;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool __thiscall FUN_006b7ffd(int param_1_00,undefined *param_1)

{
  undefined4 local_6c;
  undefined4 local_68;
  int local_24;
  int local_20;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0;
  *param_1 = 0;
  local_68 = 0x6b8023;
  FUN_006ad7fd();
  local_8._0_1_ = 1;
  if (local_24 == 0) {
    local_68 = 0x58c44a67;
    local_6c = 0x6b8041;
    FUN_00b940e0();
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_20 != 0) {
      local_68 = 0x6b80ff;
      FUN_0040127a();
    }
    local_8 = 0xffffffff;
    local_68 = 0x6b810b;
    FUN_00507e58();
    return local_24 != 0;
  }
  local_14 = &local_6c;
  local_6c = *(undefined4 *)(param_1_00 + 4);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 8);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006b8115(undefined4 *param_1)

{
  if (param_1[0xb] != 0) {
    FUN_0040127a();
  }
  FUN_00507e58();
  *param_1 = WF8266037::W4A62448F::vftable;
  return;
}



void FUN_006b8151(void)

{
  FUN_006b7e62();
  return;
}



undefined4 __thiscall FUN_006b81d2(undefined4 param_1_00,byte param_1)

{
  FUN_006b81ee();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006b81ee(undefined4 *param_1)

{
  *param_1 = WF8266037::W7505E292::vftable;
  param_1[0x31] = WF8266037::W7505E292::vftable;
  FUN_007b3ae8(param_1 + 0x32);
  param_1[0x31] = WABE12921::W5805541D::vftable;
  FUN_006bc348();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_006b823b(int param_1_00,undefined4 param_1)

{
  char cVar1;
  int local_14;
  
  FUN_006ad7fd();
  cVar1 = FUN_006b0d18(param_1,param_1_00 + 4,param_1_00 + -0xb4);
  if (local_14 != 0) {
    FUN_0040127a();
  }
  if (cVar1 == '\0') {
    FUN_00b940e0(0xf446b530);
  }
  return cVar1;
}



char FUN_006b82a2(void)

{
  int *piVar1;
  char cVar2;
  undefined4 *puVar3;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *this;
  int iVar4;
  undefined4 uVar5;
  int *local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  puVar3 = (undefined4 *)operator_new(8);
  if (puVar3 != (undefined4 *)0x0) {
    *puVar3 = 0;
    puVar3[1] = 0;
  }
  FUN_006b873e(&local_20);
  local_c = 0;
  this = (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *)
         operator_new(0x1c);
  if (this == (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
               *)0x0) {
    iVar4 = 0;
  }
  else {
    iVar4 = std::
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                      (this);
  }
  piVar1 = local_20;
  if ((iVar4 != *local_20) && (*local_20 != 0)) {
    FUN_0041c33b(1);
  }
  *piVar1 = iVar4;
  cVar2 = FUN_006b86f5(*local_20);
  if (cVar2 == '\0') {
    uVar5 = 0xc51d40be;
    cVar2 = '\0';
  }
  else {
    cVar2 = FUN_00bb62e0(local_20 + 1,0);
    if (cVar2 != '\0') {
      FUN_005d746a(&local_20);
      goto LAB_006b8388;
    }
    uVar5 = 0x33d58bc4;
  }
  FUN_00b940e0(uVar5);
LAB_006b8388:
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return cVar2;
}



char FUN_006b83b1(undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  undefined4 *puVar3;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *this;
  int iVar4;
  undefined4 uVar5;
  int *local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  puVar3 = (undefined4 *)operator_new(8);
  if (puVar3 != (undefined4 *)0x0) {
    *puVar3 = 0;
    puVar3[1] = 0;
  }
  FUN_006b873e(&local_20);
  local_c = 0;
  this = (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *)
         operator_new(0x1c);
  if (this == (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
               *)0x0) {
    iVar4 = 0;
  }
  else {
    iVar4 = std::
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                      (this);
  }
  piVar1 = local_20;
  if ((iVar4 != *local_20) && (*local_20 != 0)) {
    FUN_0041c33b(1);
  }
  *piVar1 = iVar4;
  cVar2 = FUN_006b86f5(*local_20);
  if (cVar2 == '\0') {
    uVar5 = 0x9cbe1ae7;
    cVar2 = '\0';
  }
  else {
    cVar2 = FUN_00bb6c80(local_20 + 1,param_2,0);
    if (cVar2 != '\0') {
      FUN_005d746a(&local_20);
      goto LAB_006b8498;
    }
    uVar5 = 0x4f0022cc;
  }
  FUN_00b940e0(uVar5);
LAB_006b8498:
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return cVar2;
}



undefined FUN_006b84c1(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int *piVar2;
  char cVar3;
  undefined4 *puVar4;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *this;
  int iVar5;
  undefined uVar6;
  undefined4 *local_28 [2];
  int *local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c32db2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  puVar4 = (undefined4 *)operator_new(8);
  if (puVar4 != (undefined4 *)0x0) {
    *puVar4 = 0;
    puVar4[1] = 0;
  }
  FUN_006b873e(&local_20);
  local_c = 0;
  this = (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *)
         operator_new(0x1c);
  if (this == (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
               *)0x0) {
    iVar5 = 0;
  }
  else {
    iVar5 = std::
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                      (this);
  }
  piVar2 = local_20;
  if ((iVar5 != *local_20) && (*local_20 != 0)) {
    FUN_0041c33b(1);
  }
  *piVar2 = iVar5;
  cVar3 = FUN_006b86f5(*local_20);
  if (cVar3 == '\0') {
    FUN_00b940e0(0x5272ed9f);
    uVar6 = 0;
  }
  else {
    puVar4 = (undefined4 *)FUN_00b93190(param_2,local_28);
    uVar1 = *puVar4;
    *puVar4 = 0;
    FUN_0040c727(uVar1);
    if (local_28[0] != (undefined4 *)0x0) {
      (**(code **)*local_28[0])(1);
    }
    uVar6 = 1;
    FUN_005d746a(&local_20);
  }
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return uVar6;
}



undefined FUN_006b85d9(void)

{
  undefined4 uVar1;
  int *piVar2;
  char cVar3;
  undefined4 *puVar4;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *this;
  int iVar5;
  undefined uVar6;
  undefined4 *local_28 [2];
  int *local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c32db2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  puVar4 = (undefined4 *)operator_new(8);
  if (puVar4 != (undefined4 *)0x0) {
    *puVar4 = 0;
    puVar4[1] = 0;
  }
  FUN_006b873e(&local_20);
  local_c = 0;
  this = (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *)
         operator_new(0x1c);
  if (this == (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
               *)0x0) {
    iVar5 = 0;
  }
  else {
    iVar5 = std::
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                      (this);
  }
  piVar2 = local_20;
  if ((iVar5 != *local_20) && (*local_20 != 0)) {
    FUN_0041c33b(1);
  }
  *piVar2 = iVar5;
  cVar3 = FUN_006b86f5(*local_20);
  if (cVar3 == '\0') {
    FUN_00b940e0(0x74f7aa7b);
    uVar6 = 0;
  }
  else {
    puVar4 = (undefined4 *)FUN_00bb60c0(local_28);
    uVar1 = *puVar4;
    *puVar4 = 0;
    FUN_0040c727(uVar1);
    if (local_28[0] != (undefined4 *)0x0) {
      (**(code **)*local_28[0])(1);
    }
    uVar6 = 1;
    FUN_005d746a(&local_20);
  }
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return uVar6;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_006b86f5(void)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00ba84f0();
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  return 1;
}



void FUN_006b8730(void)

{
  int *in_EAX;
  
  if (*in_EAX != 0) {
    FUN_0041c33b(1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006b873e(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_006b878b(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b878b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_WF8266037::WC9FD658A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b87d1(void)

{
  code *pcVar1;
  
  FUN_006b87ee();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_006b87e3(void)

{
  FUN_006b87ee();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_006b87ee(void)

{
  int *unaff_ESI;
  
  if (unaff_ESI != (int *)0x0) {
    if ((undefined4 *)unaff_ESI[1] != (undefined4 *)0x0) {
      (***(code ***)(undefined4 *)unaff_ESI[1])(1);
    }
    if (*unaff_ESI != 0) {
      FUN_0041c33b(1);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  return &LAB_00c1c955;
}



void FUN_006b882c(void)

{
  FUN_006b81d2();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_006b8837(int *param_1)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x6b8843;
  ppiVar2 = (int **)FUN_00418daa(1,0);
  if (ppiVar2 == (int **)0x0) {
    ppiVar2 = (int **)0x0;
  }
  else {
    *ppiVar2 = param_1;
  }
  *param_1 = (int)ppiVar2;
  local_8 = 0;
  iVar3 = FUN_004654df();
  piVar1 = param_1 + 6;
  *piVar1 = iVar3;
  *(undefined *)(iVar3 + 0x15) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[7] = 0;
  local_8 = 1;
  local_14[0] = (undefined *)0xc251dec6;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0xfff;
  local_14[0] = (undefined *)0x19915aad;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x401;
  local_14[0] = (undefined *)0x7350e11f;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x403;
  local_14[0] = (undefined *)0x1ee73050;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x402;
  local_14[0] = (undefined *)0x59e758ad;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x301;
  local_14[0] = (undefined *)0xc56b78f7;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x303;
  local_14[0] = (undefined *)0xb6ec8899;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x302;
  local_14[0] = (undefined *)0xa3fb6b08;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 1;
  local_14[0] = (undefined *)0x16e6a140;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x201;
  local_14[0] = (undefined *)0xd4362672;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x202;
  local_14[0] = (undefined *)0xab13c702;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x203;
  local_14[0] = (undefined *)0xfceb6d6d;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 3;
  local_14[0] = (undefined *)0xdc4d2e7f;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 6;
  local_14[0] = (undefined *)0xc441fa8c;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0xb;
  local_14[0] = (undefined *)0x9395b534;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 4;
  local_14[0] = (undefined *)0x1f963e5f;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 7;
  local_14[0] = (undefined *)0x723ede1c;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 8;
  local_14[0] = (undefined *)0xea7983e3;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 9;
  local_14[0] = (undefined *)0x77dedba3;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 10;
  local_14[0] = (undefined *)0x4efd680b;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 5;
  local_14[0] = (undefined *)0xa9299be7;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x106;
  local_14[0] = &DAT_0207633c;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x10b;
  local_14[0] = (undefined *)0xf9f18523;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x10c;
  local_14[0] = (undefined *)0x94b3b5ee;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x10d;
  local_14[0] = (undefined *)0xb48f6453;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x10e;
  local_14[0] = (undefined *)0x1ae556b0;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x102;
  local_14[0] = (undefined *)0x9dbdb511;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x103;
  local_14[0] = (undefined *)0x953e9d62;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x104;
  local_14[0] = (undefined *)0xa6fcbc9f;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x105;
  local_14[0] = (undefined *)0x187f24e9;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x107;
  local_14[0] = (undefined *)0x39d53119;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x108;
  local_14[0] = (undefined *)0x7122beb4;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x109;
  local_14[0] = (undefined *)0x1478b250;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x10a;
  local_14[0] = (undefined *)0x5a6364fe;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x101;
  local_14[0] = (undefined *)0x956f9d8b;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 2;
  local_14[0] = (undefined *)0xd34fff29;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x501;
  local_14[0] = (undefined *)0x721461d8;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x502;
  local_14[0] = (undefined *)0xe468a51;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x503;
  local_14[0] = (undefined *)0x565f0a06;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x504;
  local_14[0] = (undefined *)0x4a03e9d0;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x505;
  local_14[0] = (undefined *)0xbb9ef7a;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x506;
  local_14[0] = (undefined *)0xc59b253d;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x507;
  local_14[0] = (undefined *)0x60240c14;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x508;
  local_14[0] = (undefined *)0xc3f06b1a;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x509;
  local_14[0] = (undefined *)0x97cf6c88;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x50a;
  local_14[0] = (undefined *)0xd13558a2;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x50b;
  local_14[0] = (undefined *)0x5bc4bf01;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x50c;
  local_14[0] = (undefined *)0x322e119c;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x50d;
  local_14[0] = (undefined *)0xd689278f;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x50e;
  local_14[0] = (undefined *)0x34fae905;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x50f;
  local_14[0] = (undefined *)0x2c53d708;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x510;
  local_14[0] = (undefined *)0xe10ae1ee;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x511;
  local_14[0] = (undefined *)0x5cffadee;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x512;
  local_14[0] = (undefined *)0x14aae296;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x513;
  local_14[0] = (undefined *)0x7169ab7f;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x514;
  local_14[0] = (undefined *)0x80a2f867;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x515;
  local_14[0] = (undefined *)0xe0394fa8;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x516;
  local_14[0] = (undefined *)0x7a3d9e75;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x601;
  local_14[0] = (undefined *)0x9fa62317;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x602;
  local_14[0] = (undefined *)0x64024186;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x603;
  local_14[0] = (undefined *)0x9d941e2b;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x604;
  local_14[0] = (undefined *)0x2048574e;
  puVar4 = (undefined4 *)FUN_0067409d(local_14);
  *puVar4 = 0x701;
  return param_1;
}



bool FUN_006b8de5(void)

{
  char cVar1;
  undefined4 *in_EAX;
  undefined local_14 [8];
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_006b8e68(local_14,&stack0x00000004);
  local_8 = in_EAX[6];
  local_c = *in_EAX;
  cVar1 = FUN_006b8eca();
  return cVar1 == '\0';
}



undefined4 FUN_006b8e23(void)

{
  char cVar1;
  undefined4 *in_EAX;
  int iVar2;
  undefined4 uVar3;
  undefined local_14 [8];
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_006b8e68(local_14,&stack0x00000004);
  local_8 = in_EAX[6];
  local_c = *in_EAX;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    iVar2 = FUN_006badde();
    uVar3 = *(undefined4 *)(iVar2 + 4);
  }
  else {
    uVar3 = 0;
  }
  return uVar3;
}



void FUN_006b8e68(undefined4 *param_1,uint *param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  FUN_00674114(param_2);
  local_10 = unaff_EBX[6];
  local_14 = *unaff_EBX;
  cVar2 = FUN_006b8eca();
  if ((cVar2 == '\0') && (*(uint *)(local_8 + 0xc) <= *param_2)) {
    puVar3 = &local_c;
  }
  else {
    local_10 = unaff_EBX[6];
    local_14 = *unaff_EBX;
    puVar3 = &local_14;
  }
  uVar1 = puVar3[1];
  *param_1 = *puVar3;
  param_1[1] = uVar1;
  return;
}



bool FUN_006b8eca(void)

{
  int *unaff_ESI;
  int *unaff_EDI;
  
  if ((*unaff_ESI == 0) || (*unaff_ESI != *unaff_EDI)) {
    FUN_00a3fb10();
  }
  return unaff_ESI[1] == unaff_EDI[1];
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

int FUN_006b8ee5(void)

{
  int iVar1;
  uint uVar2;
  LONG LVar3;
  void *pvVar4;
  int iVar5;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c21192;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if ((_DAT_032f1198 & 1) == 0) {
    _DAT_032f1198 = _DAT_032f1198 | 1;
    DAT_032f02e8 = 0;
    _atexit((_func_4879 *)&LAB_00c74679);
  }
  LVar3 = InterlockedExchangeAdd((LONG *)&DAT_032ef908,0);
  if (LVar3 == 0) {
    FUN_00b9acd0(uVar2);
    local_c = 0;
    LVar3 = InterlockedExchangeAdd((LONG *)&DAT_032ef908,0);
    if ((LVar3 == 0) && (DAT_032f02e8 == 0)) {
      pvVar4 = operator_new(0x20);
      local_c._0_1_ = 1;
      if (pvVar4 == (void *)0x0) {
        iVar5 = 0;
      }
      else {
        iVar5 = FUN_006b8837(pvVar4);
      }
      iVar1 = DAT_032f02e8;
      local_c = (uint)local_c._1_3_ << 8;
      if ((iVar5 != DAT_032f02e8) && (DAT_032f02e8 != 0)) {
        FUN_00492aa0(DAT_032f02e8);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      DAT_032f02e8 = iVar5;
      InterlockedExchange((LONG *)&DAT_032ef908,1);
    }
    local_c = 0xffffffff;
    FUN_00b9ac60();
  }
  ExceptionList = local_14;
  return DAT_032f02e8;
}



undefined4 __thiscall FUN_006b9310(undefined4 param_1_00,byte param_1)

{
  FUN_006b932c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006b932c(undefined4 *param_1)

{
  *param_1 = WF8266037::W01BC53D8::vftable;
  FUN_006b9469();
  if (param_1[0xd] != 0) {
    FUN_0040127a();
  }
  if (param_1[0xb] != 0) {
    FUN_0040127a();
  }
  if (param_1[9] != 0) {
    FUN_0040127a();
  }
  if (param_1[2] != 0) {
    FUN_0040127a();
  }
  return;
}



void Catch_All_006b9398(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_006b944a(void)

{
  int iVar1;
  int unaff_EDI;
  
  FUN_00b725b0();
  iVar1 = *(int *)(*(int *)(unaff_EDI + 0x30) + 8);
                    // WARNING: Could not recover jumptable at 0x006b9466. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(*(int *)(*(int *)(iVar1 + 4) + 4) + 4 + iVar1) + 0x14))();
  return;
}



void FUN_006b9469(void)

{
  int iVar1;
  int in_EAX;
  
  FUN_006b944a();
  FUN_00b72ae0();
  iVar1 = *(int *)(*(int *)(in_EAX + 0x30) + 8);
  (**(code **)(*(int *)(*(int *)(*(int *)(iVar1 + 4) + 4) + 4 + iVar1) + 0x18))();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b9494(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::WE66DE028>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b94da(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006b94f1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W854ABF11>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006b9537(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_0069aa8c(*(undefined4 *)(unaff_EBP + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_006b9557(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_0069aa8c(iVar1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



undefined4 __thiscall FUN_006b9607(undefined4 param_1_00,byte param_1)

{
  FUN_006b9623();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006b9623(undefined4 *param_1)

{
  *param_1 = WF8266037::W09D6EA13::vftable;
  FUN_0042bd98();
  FUN_00417fe6();
  FUN_0042bd98();
  FUN_00417fe6();
  if (param_1[0x23] != 0) {
    FUN_0040127a();
  }
  FUN_00507e58();
  FUN_00507e58();
  FUN_00b72bf0();
  return;
}



void __fastcall FUN_006b96a5(int param_1)

{
  uint uVar1;
  char local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c490f1;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_14;
  FUN_0043d406(param_1 + 200);
  local_c = 0;
  FUN_0044953d(uVar1);
  local_c = 0xffffffff;
  if (local_1c != '\0') {
    FUN_00401477();
  }
  FUN_0043d406(param_1 + 0x90);
  local_c = 1;
  FUN_0044953d(uVar1);
  local_c = 0xffffffff;
  if (local_1c != '\0') {
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006b974f(void)

{
  undefined4 param_10;
  undefined4 local_30 [7];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0;
  local_14 = local_30;
  local_30[0] = param_10;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x0000002c);
}



void __fastcall FUN_006b999b(int param_1)

{
  int iVar1;
  char cVar2;
  undefined local_58 [4];
  char local_54;
  char local_4c;
  char local_44;
  undefined4 local_40 [2];
  int local_38 [9];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c589ba;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00b94080(*(undefined4 *)(param_1 + 0x60),DAT_0323f878 ^ (uint)&stack0xffffff98);
  cVar2 = FUN_00b72540();
  while (cVar2 == '\0') {
    local_38[0] = 0;
    local_c = 0;
    FUN_0043d406(param_1 + 0x90);
    local_c = CONCAT31(local_c._1_3_,1);
    if ((*(int *)(param_1 + 0x68) == 0) && (cVar2 = FUN_00b72540(), cVar2 == '\0')) {
      FUN_00453ca3(param_1 + 0x98,local_58);
    }
    else {
      FUN_00607a72(local_38);
    }
    local_c = local_c & 0xffffff00;
    if (local_54 != '\0') {
      FUN_00401477();
    }
    if ((-(uint)(local_38[0] != 0) & 0x7a491c) != 0) {
      cVar2 = FUN_004db8a7();
      FUN_0043d406(param_1 + 0x90);
      local_c._0_1_ = 2;
      FUN_0043d406(param_1 + 200);
      local_c._0_1_ = 3;
      *(uint *)(param_1 + 0xc4) = (uint)(cVar2 != '\0');
      FUN_0044953d();
      local_c = CONCAT31(local_c._1_3_,2);
      if (local_4c != '\0') {
        FUN_00401477();
      }
      FUN_00507e58();
      if (local_40 != (undefined4 *)(param_1 + 0x88)) {
        *(undefined4 *)(param_1 + 0x88) = 0;
      }
      iVar1 = *(int *)(param_1 + 0x8c);
      *(undefined4 *)(param_1 + 0x8c) = 0;
      if (iVar1 != 0) {
        FUN_0040127a();
      }
      local_c = local_c & 0xffffff00;
      if (local_44 != '\0') {
        FUN_00401477();
      }
    }
    local_c = 0xffffffff;
    FUN_00507e58();
    cVar2 = FUN_00b72540();
  }
  if ((-(uint)(*(int *)(param_1 + 0x40) != 0) & 0x7a491c) != 0) {
    FUN_004db8a7();
  }
  ExceptionList = local_14;
  return;
}



undefined4 __thiscall FUN_006b9c50(undefined4 param_1_00,byte param_1)

{
  FUN_006b9c77(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_006ba5b9(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x6ba5d1;
  FUN_006bab20();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_006ba5d8;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_006ba69b(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x6ba6b3;
  FUN_006badaa();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_006ba6ba;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_006b9c77(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined4 uStack_28;
  undefined4 *puStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  *param_1 = WF8266037::WE66DE028::vftable;
  local_8 = 9;
  if (param_1[0x3f] != 0) {
    puStack_24 = (undefined4 *)0x6b9ca2;
    FUN_0040127a();
  }
  puStack_24 = (undefined4 *)0x6b9cad;
  FUN_00417fe6();
  local_8._0_1_ = 7;
  if (param_1[0x3a] != 0) {
    puStack_24 = (undefined4 *)0x6b9cc0;
    FUN_0040127a();
  }
  puStack_24 = (undefined4 *)0x6b9ccb;
  FUN_00417fe6();
  puStack_24 = param_1 + 0x2f;
  local_8._0_1_ = 5;
  puVar1 = &uStack_28;
  uStack_28 = 0x6b9cdb;
  FUN_006ba5b9();
  puVar1[-1] = 0x6b9ce6;
  FUN_0042bd98();
  puVar1[-1] = 0x6b9cf1;
  FUN_00417fe6();
  puVar1[-1] = param_1 + 0x1a;
  local_8._0_1_ = 2;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x6b9cfe;
  FUN_006ba69b();
  *(undefined4 *)((int)puVar2 + -4) = 0x6b9d06;
  FUN_00417fe6();
  *(undefined4 **)((int)puVar2 + -4) = param_1 + 0x10;
  local_8 = (uint)local_8._1_3_ << 8;
  puVar3 = (undefined *)((int)puVar2 + -8);
  *(undefined4 *)((int)puVar2 + -8) = 0x6b9d13;
  FUN_006ba5b9();
  local_8 = 0xffffffff;
  puVar4 = puVar3 + -4;
  *(undefined4 *)(puVar3 + -4) = 0x6b9d1e;
  FUN_00b72bf0();
  *(undefined4 *)(puVar4 + -4) = 0x6b9d23;
  return;
}



void __fastcall FUN_006b9e98(int param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  char cStack_2c;
  int iStack_28;
  int iStack_24;
  undefined4 local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c49093;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  do {
    cVar2 = FUN_00b72540();
    if (cVar2 != '\0') break;
    local_20 = 0;
    local_1c = 0;
    local_c = 0;
    iVar1 = *(int *)(param_1 + 0xe4);
    iVar3 = (**(code **)**(undefined4 **)(iVar1 + 8))();
    if (iVar3 == 0) {
      FUN_006bb395();
      local_c._0_1_ = 1;
      if ((iStack_28 != 0) &&
         (cVar2 = (**(code **)(*(int *)(iStack_28 + 0x24) + 0x14))(), cVar2 != '\0')) {
                    // WARNING: Subroutine does not return
        FUN_0043c023(&iStack_24);
      }
      FUN_00b940e0();
      local_c = (uint)local_c._1_3_ << 8;
      if (iStack_24 != 0) {
        FUN_0040127a();
      }
    }
    else {
      iVar1 = *(int *)(iVar1 + 8);
      cVar2 = (**(code **)(*(int *)(*(int *)(*(int *)(iVar1 + 4) + 4) + 4 + iVar1) + 0x40))();
      if (cVar2 == '\0') {
        FUN_00b940e0();
      }
      cVar2 = FUN_00b72540();
      if (cVar2 == '\0') {
        FUN_00b940e0();
      }
    }
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
  } while (iVar3 == 0);
  FUN_0043d406();
  local_c = 2;
  *(undefined *)(param_1 + 0xf4) = 1;
  FUN_0044953d();
  local_c = 0xffffffff;
  if (cStack_2c != '\0') {
    FUN_00401477();
  }
  if (*(int **)(param_1 + 0xf8) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0xf8) + 4))();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006ba0f0(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  int unaff_ESI;
  undefined local_1c [4];
  char local_18;
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0;
  local_14 = 0;
  FUN_0043d406(unaff_ESI + 0x88);
  local_8 = 1;
  *param_1 = 0;
  param_1[1] = 0;
  local_14 = 1;
  while (*(char *)(unaff_ESI + 0xf4) == '\0') {
    cVar1 = FUN_006ba38e(param_1,param_2);
    if (cVar1 != '\0') break;
    FUN_00453ca3(unaff_ESI + 0x90,local_1c);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_18 != '\0') {
    FUN_00401477();
  }
  return param_1;
}



void __thiscall FUN_006ba200(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  char local_28;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3e65e;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  FUN_0043d406(param_1_00 + 0x60);
  local_c = 0;
  FUN_006baa69(param_1_00 + 0x40,param_1);
  local_c = 0xffffffff;
  if (local_28 != '\0') {
    FUN_00401477(uVar1);
  }
  ExceptionList = local_14;
  return;
}



bool FUN_006ba38e(undefined4 param_1,byte *param_2)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 *puVar5;
  byte *pbVar6;
  bool bVar7;
  bool bVar8;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  puVar5 = (undefined4 *)(in_EAX + 0x68);
  FUN_006bad15(&local_c,param_2);
  local_10 = *(undefined4 *)(in_EAX + 0x80);
  local_14 = *puVar5;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    iVar4 = 0x10;
    bVar7 = false;
    iVar2 = 0;
    bVar8 = true;
    pbVar6 = (byte *)(local_8 + 0xc);
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar7 = *param_2 < *pbVar6;
      bVar8 = *param_2 == *pbVar6;
      param_2 = param_2 + 1;
      pbVar6 = pbVar6 + 1;
    } while (bVar8);
    if (!bVar8) {
      iVar2 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
    }
    if (-1 < iVar2) {
      puVar3 = &local_c;
      goto LAB_006ba3f0;
    }
  }
  local_18 = *(undefined4 *)(in_EAX + 0x80);
  local_1c = *puVar5;
  puVar3 = &local_1c;
LAB_006ba3f0:
  local_14 = *puVar3;
  local_10 = puVar3[1];
  local_20 = *(undefined4 *)(in_EAX + 0x80);
  local_24 = *puVar5;
  cVar1 = FUN_006b8eca();
  if (cVar1 != '\0') {
    FUN_005d1159();
  }
  else {
    FUN_006badde();
    FUN_005d11c9(param_1);
    FUN_006ba6c3(puVar5,&local_24,*puVar3,puVar3[1]);
  }
  return cVar1 == '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_006ba565(int *param_1)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  
  ppiVar2 = (int **)FUN_00418daa(1,0);
  if (ppiVar2 == (int **)0x0) {
    ppiVar2 = (int **)0x0;
  }
  else {
    *ppiVar2 = param_1;
  }
  *param_1 = (int)ppiVar2;
  iVar3 = FUN_007d4925();
  piVar1 = param_1 + 6;
  *piVar1 = iVar3;
  *(undefined *)(iVar3 + 0x1d) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[7] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_006ba5b9(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x6ba5d1;
  FUN_006bab20();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_006ba5d8;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_006ba69b(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x6ba6b3;
  FUN_006badaa();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_006ba6ba;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x006ba7ae)
// WARNING: Removing unreachable block (ram,0x006ba7be)
// WARNING: Removing unreachable block (ram,0x006ba7c7)
// WARNING: Removing unreachable block (ram,0x006ba7ca)
// WARNING: Removing unreachable block (ram,0x006ba7ba)
// WARNING: Removing unreachable block (ram,0x006ba7d7)
// WARNING: Removing unreachable block (ram,0x006ba7e7)
// WARNING: Removing unreachable block (ram,0x006ba7f2)
// WARNING: Removing unreachable block (ram,0x006ba7ee)
// WARNING: Removing unreachable block (ram,0x006ba7e2)
// WARNING: Removing unreachable block (ram,0x006ba7f5)

void FUN_006ba6c3(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x6ba6cf;
  if (*(char *)((int)param_4 + 0x25) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_006bae09();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x25) == '\0') {
    if (*(char *)(param_4[2] + 0x25) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x25) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x25) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x25) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x25) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x25) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 9) != '\x01') {
LAB_006ba926:
    if (param_4[8] != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_006ba8da:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 9) != '\x01'))
  goto LAB_006ba922;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 9) == '\0') {
      *(undefined *)(ppiVar4 + 9) = 1;
      *(undefined *)(ppiVar3 + 9) = 0;
      FUN_005d43b9(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x25) == '\0') {
      if ((*(char *)(*ppiVar4 + 9) != '\x01') || (*(char *)(ppiVar4[2] + 9) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 9) == '\x01') {
          *(undefined *)(*ppiVar4 + 9) = 1;
          *(undefined *)(ppiVar4 + 9) = 0;
          FUN_006bad68(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 9) = *(undefined *)(ppiVar3 + 9);
        *(undefined *)(ppiVar3 + 9) = 1;
        *(undefined *)(ppiVar4[2] + 9) = 1;
        FUN_005d43b9(param_1);
        goto LAB_006ba922;
      }
LAB_006ba8d1:
      *(undefined *)(ppiVar4 + 9) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 9) == '\0') {
      *(undefined *)(ppiVar4 + 9) = 1;
      *(undefined *)(ppiVar3 + 9) = 0;
      FUN_006bad68(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x25) == '\0') {
      if ((*(char *)(ppiVar4[2] + 9) == '\x01') && (*(char *)(*ppiVar4 + 9) == '\x01'))
      goto LAB_006ba8d1;
      if (*(char *)(*ppiVar4 + 9) == '\x01') {
        *(undefined *)(ppiVar4[2] + 9) = 1;
        *(undefined *)(ppiVar4 + 9) = 0;
        FUN_005d43b9(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 9) = *(undefined *)(ppiVar3 + 9);
      *(undefined *)(ppiVar3 + 9) = 1;
      *(undefined *)(*ppiVar4 + 9) = 1;
      FUN_006bad68(param_1);
LAB_006ba922:
      *(undefined *)(ppiVar5 + 9) = 1;
      goto LAB_006ba926;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_006ba8da;
}



void __fastcall FUN_006ba9e1(undefined4 param_1)

{
  undefined *puVar1;
  uint uVar2;
  int iVar3;
  int unaff_ESI;
  undefined *unaff_EDI;
  int local_c;
  undefined *puVar4;
  
  local_c = 0;
  uVar2 = FUN_006bb573(*(undefined4 *)(unaff_ESI + 8),*(undefined4 *)(unaff_ESI + 0xc),
                       *(undefined4 *)(unaff_ESI + 0x10),param_1);
  puVar4 = unaff_EDI;
  if (unaff_EDI != unaff_EDI + 0x10) {
    do {
      if (local_c == 4) {
        uVar2 = FUN_006bb573(*(undefined4 *)(unaff_ESI + 8),*(undefined4 *)(unaff_ESI + 0xc),
                             *(undefined4 *)(unaff_ESI + 0x10),puVar4);
        local_c = 0;
      }
      iVar3 = local_c << 3;
      puVar1 = puVar4 + 1;
      local_c = local_c + 1;
      *puVar4 = (char)(uVar2 >> ((byte)iVar3 & 0x1f));
      puVar4 = puVar1;
    } while (puVar1 != unaff_EDI + 0x10);
  }
  unaff_EDI[8] = unaff_EDI[8] & 0xbf;
  unaff_EDI[8] = unaff_EDI[8] | 0x80;
  unaff_EDI[6] = unaff_EDI[6] & 0x4f;
  unaff_EDI[6] = unaff_EDI[6] | 0x40;
  return;
}



void FUN_006baa5c(void)

{
  int in_EAX;
  
  if (*(int *)(in_EAX + 0x14) != 0) {
    FUN_0040127a();
    return;
  }
  return;
}



void FUN_006baa69(int param_1,byte *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  int iVar3;
  int iVar4;
  undefined4 *unaff_EBX;
  byte *pbVar5;
  undefined4 *puVar6;
  bool bVar7;
  bool bVar8;
  undefined local_10 [4];
  undefined4 *local_c;
  undefined4 local_8;
  
  local_8 = CONCAT31(local_8._1_3_,1);
  puVar2 = (undefined4 *)(*(undefined4 **)(param_1 + 0x18))[1];
  local_c = *(undefined4 **)(param_1 + 0x18);
  do {
    if (*(char *)((int)puVar2 + 0x1d) != '\0') {
      puVar2 = (undefined4 *)FUN_007d47d8(local_10,local_8,param_2);
      uVar1 = *puVar2;
      unaff_EBX[1] = puVar2[1];
      *unaff_EBX = uVar1;
      *(undefined *)(unaff_EBX + 2) = 1;
      return;
    }
    iVar3 = 0x10;
    bVar7 = false;
    iVar4 = 0;
    bVar8 = true;
    pbVar5 = param_2;
    puVar6 = puVar2 + 3;
    do {
      if (iVar3 == 0) break;
      iVar3 = iVar3 + -1;
      bVar7 = *pbVar5 < *(byte *)puVar6;
      bVar8 = *pbVar5 == *(byte *)puVar6;
      pbVar5 = pbVar5 + 1;
      puVar6 = (undefined4 *)((int)puVar6 + 1);
    } while (bVar8);
    if (!bVar8) {
      iVar4 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
    }
    local_c = puVar2;
    if (iVar4 < 0) {
      local_8 = CONCAT31(local_8._1_3_,1);
      puVar2 = (undefined4 *)*puVar2;
    }
    else {
      local_8 = (uint)local_8._1_3_ << 8;
      puVar2 = (undefined4 *)puVar2[2];
    }
  } while( true );
}



void __thiscall FUN_006baade(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x1d) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



void FUN_006bab20(void)

{
  undefined4 *unaff_ESI;
  
  FUN_006bae9a(*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



undefined4 * FUN_006bab56(undefined4 *param_1,byte *param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  int iVar5;
  byte *pbVar6;
  byte *pbVar7;
  bool bVar8;
  bool bVar9;
  undefined4 uVar10;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      iVar5 = 0x10;
      if (cVar1 != '\0') {
        bVar8 = false;
        iVar2 = 0;
        bVar9 = true;
        pbVar6 = (byte *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc);
        pbVar7 = param_2;
        do {
          if (iVar5 == 0) break;
          iVar5 = iVar5 + -1;
          bVar8 = *pbVar6 < *pbVar7;
          bVar9 = *pbVar6 == *pbVar7;
          pbVar6 = pbVar6 + 1;
          pbVar7 = pbVar7 + 1;
        } while (bVar9);
        if (!bVar9) {
          iVar2 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
        }
        if (-1 < iVar2) goto LAB_006bacf3;
        uVar10 = 0;
        goto LAB_006bab78;
      }
      bVar8 = false;
      iVar2 = 0;
      bVar9 = true;
      pbVar6 = param_2;
      pbVar7 = (byte *)(param_4 + 0xc);
      do {
        if (iVar5 == 0) break;
        iVar5 = iVar5 + -1;
        bVar8 = *pbVar6 < *pbVar7;
        bVar9 = *pbVar6 == *pbVar7;
        pbVar6 = pbVar6 + 1;
        pbVar7 = pbVar7 + 1;
      } while (bVar9);
      if (!bVar9) {
        iVar2 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
      }
      if (iVar2 < 0) {
        iVar2 = FUN_006bb23c();
        iVar5 = 0x10;
        bVar8 = false;
        iVar3 = 0;
        bVar9 = true;
        pbVar6 = (byte *)(*(int *)(iVar2 + 4) + 0xc);
        pbVar7 = param_2;
        do {
          if (iVar5 == 0) break;
          iVar5 = iVar5 + -1;
          bVar8 = *pbVar6 < *pbVar7;
          bVar9 = *pbVar6 == *pbVar7;
          pbVar6 = pbVar6 + 1;
          pbVar7 = pbVar7 + 1;
        } while (bVar9);
        if (!bVar9) {
          iVar3 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
        }
        if (-1 < iVar3) goto LAB_006bac78;
        if (*(char *)(*(int *)(param_4 + 8) + 0x25) == '\0') {
          uVar10 = 1;
          goto LAB_006bab78;
        }
      }
      else {
LAB_006bac78:
        iVar5 = 0x10;
        bVar8 = false;
        iVar2 = 0;
        bVar9 = true;
        pbVar6 = (byte *)(param_4 + 0xc);
        pbVar7 = param_2;
        do {
          if (iVar5 == 0) break;
          iVar5 = iVar5 + -1;
          bVar8 = *pbVar6 < *pbVar7;
          bVar9 = *pbVar6 == *pbVar7;
          pbVar6 = pbVar6 + 1;
          pbVar7 = pbVar7 + 1;
        } while (bVar9);
        if (!bVar9) {
          iVar2 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
        }
        if (-1 < iVar2) {
LAB_006bacf3:
          puVar4 = (undefined4 *)FUN_006baf55(in_EAX,param_2);
          *param_1 = *puVar4;
          param_1[1] = puVar4[1];
          return param_1;
        }
        FUN_006bae09();
        cVar1 = FUN_006b8eca();
        if (cVar1 == '\0') {
          iVar5 = 0x10;
          bVar8 = false;
          iVar2 = 0;
          bVar9 = true;
          pbVar6 = param_2;
          pbVar7 = (byte *)(param_4 + 0xc);
          do {
            if (iVar5 == 0) break;
            iVar5 = iVar5 + -1;
            bVar8 = *pbVar6 < *pbVar7;
            bVar9 = *pbVar6 == *pbVar7;
            pbVar6 = pbVar6 + 1;
            pbVar7 = pbVar7 + 1;
          } while (bVar9);
          if (!bVar9) {
            iVar2 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
          }
          if (-1 < iVar2) goto LAB_006bacf3;
        }
        if (*(char *)(*(int *)(param_4 + 8) + 0x25) == '\0') {
          uVar10 = 1;
          goto LAB_006bab78;
        }
      }
      uVar10 = 0;
      goto LAB_006bab78;
    }
    iVar5 = 0x10;
    bVar8 = false;
    iVar2 = 0;
    bVar9 = true;
    pbVar6 = param_2;
    pbVar7 = (byte *)(param_4 + 0xc);
    do {
      if (iVar5 == 0) break;
      iVar5 = iVar5 + -1;
      bVar8 = *pbVar6 < *pbVar7;
      bVar9 = *pbVar6 == *pbVar7;
      pbVar6 = pbVar6 + 1;
      pbVar7 = pbVar7 + 1;
    } while (bVar9);
    if (!bVar9) {
      iVar2 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
    }
    if (-1 < iVar2) goto LAB_006bacf3;
  }
  uVar10 = 1;
LAB_006bab78:
  FUN_006bb0ef(param_1,uVar10,param_2);
  return param_1;
}



void FUN_006bad15(undefined4 *param_1,byte *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 *unaff_EBX;
  byte *pbVar6;
  bool bVar7;
  bool bVar8;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)((undefined4 *)unaff_EBX[6])[1];
  cVar1 = *(char *)((int)local_8 + 0x25);
  puVar2 = (undefined4 *)unaff_EBX[6];
  do {
    if (cVar1 != '\0') {
      param_1[1] = puVar2;
      *param_1 = *unaff_EBX;
      return;
    }
    iVar4 = 0x10;
    bVar7 = false;
    iVar3 = 0;
    bVar8 = true;
    puVar5 = local_8 + 3;
    pbVar6 = param_2;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar7 = *(byte *)puVar5 < *pbVar6;
      bVar8 = *(byte *)puVar5 == *pbVar6;
      puVar5 = (undefined4 *)((int)puVar5 + 1);
      pbVar6 = pbVar6 + 1;
    } while (bVar8);
    if (!bVar8) {
      iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
    }
    if (iVar3 < 0) {
      puVar5 = (undefined4 *)local_8[2];
      local_8 = puVar2;
    }
    else {
      puVar5 = (undefined4 *)*local_8;
    }
    cVar1 = *(char *)((int)puVar5 + 0x25);
    puVar2 = local_8;
    local_8 = puVar5;
  } while( true );
}



void __thiscall FUN_006bad68(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x25) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



void FUN_006badaa(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_006bb039(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



int * FUN_006badde(void)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_006badf5;
    }
  }
  iVar2 = *piVar1;
LAB_006badf5:
  if (unaff_ESI[1] == *(int **)(iVar2 + 0x18)) {
    FUN_00a3fb10();
  }
  return unaff_ESI[1] + 3;
}



void FUN_006bae09(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x25) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x25) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x25) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x25) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



void FUN_006bae9a(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int *in_EAX;
  int *unaff_EBX;
  
  iVar1 = *(int *)in_EAX[6];
  if ((param_1 == 0) || (param_1 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_2 == iVar1) {
    iVar1 = in_EAX[6];
    if ((param_3 == 0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_4 == iVar1) {
      FUN_007a3090(*(undefined4 *)(in_EAX[6] + 4));
      *(int *)(in_EAX[6] + 4) = in_EAX[6];
      in_EAX[7] = 0;
      *(int *)in_EAX[6] = in_EAX[6];
      *(int *)(in_EAX[6] + 8) = in_EAX[6];
      unaff_EBX[1] = *(int *)in_EAX[6];
      *unaff_EBX = *in_EAX;
      return;
    }
  }
  while( true ) {
    if ((param_1 == 0) || (param_1 != param_3)) {
      FUN_00a3fb10();
    }
    if (param_2 == param_4) break;
    FUN_00696a87();
    FUN_007a2d61();
  }
  *unaff_EBX = *in_EAX;
  unaff_EBX[1] = param_2;
  return;
}



void FUN_006baf55(undefined4 *param_1,byte *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int iVar4;
  int iVar5;
  undefined4 *unaff_EBX;
  byte *pbVar6;
  bool bVar7;
  bool bVar8;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  puVar3 = (undefined4 *)((undefined4 *)param_1[6])[1];
  cVar1 = *(char *)((int)puVar3 + 0x25);
  local_8 = CONCAT31(local_8._1_3_,1);
  local_10 = (undefined4 *)param_1[6];
  while (cVar1 == '\0') {
    iVar4 = 0x10;
    bVar7 = false;
    iVar5 = 0;
    bVar8 = true;
    pbVar6 = param_2;
    puVar2 = puVar3 + 3;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar7 = *pbVar6 < *(byte *)puVar2;
      bVar8 = *pbVar6 == *(byte *)puVar2;
      pbVar6 = pbVar6 + 1;
      puVar2 = (undefined4 *)((int)puVar2 + 1);
    } while (bVar8);
    if (!bVar8) {
      iVar5 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
    }
    local_8._1_3_ = (uint3)((uint)local_8 >> 8);
    if (iVar5 < 0) {
      puVar2 = (undefined4 *)*puVar3;
      local_8 = CONCAT31(local_8._1_3_,1);
    }
    else {
      puVar2 = (undefined4 *)puVar3[2];
      local_8 = (uint)local_8._1_3_ << 8;
    }
    local_10 = puVar3;
    puVar3 = puVar2;
    cVar1 = *(char *)((int)puVar2 + 0x25);
  }
  local_14 = *param_1;
  local_c = local_10;
  if ((char)local_8 == '\0') {
LAB_006baffd:
    iVar4 = 0x10;
    bVar7 = false;
    iVar5 = 0;
    bVar8 = true;
    puVar3 = local_10 + 3;
    pbVar6 = param_2;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar7 = *(byte *)puVar3 < *pbVar6;
      bVar8 = *(byte *)puVar3 == *pbVar6;
      puVar3 = (undefined4 *)((int)puVar3 + 1);
      pbVar6 = pbVar6 + 1;
    } while (bVar8);
    if (!bVar8) {
      iVar5 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
    }
    iVar4 = local_8;
    if (-1 < iVar5) {
      *unaff_EBX = local_14;
      *(undefined *)(unaff_EBX + 2) = 0;
      goto LAB_006bb02e;
    }
  }
  else {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      FUN_006bb23c();
      goto LAB_006baffd;
    }
    iVar4 = 1;
  }
  puVar3 = (undefined4 *)FUN_006bb0ef(&local_1c,iVar4,param_2);
  local_10 = (undefined4 *)puVar3[1];
  *unaff_EBX = *puVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
LAB_006bb02e:
  unaff_EBX[1] = local_10;
  return;
}



void FUN_006bb039(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_006bb357(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_006bae09();
    FUN_006ba6c3();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_006bb0ef(int **param_1_00,undefined4 *param_1,char param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x6bb0fb;
  if (0xaaaaaa8 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_006bb301(unaff_ESI[6],param_1_00,unaff_ESI[6],param_3);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_006bb214;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_006bb214;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_006bb214:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 9) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x24) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 9) == '\0') {
LAB_006bb1d0:
        *(undefined *)(piVar1 + 9) = 1;
        *(undefined *)(piVar7 + 9) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x24) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_005d43b9(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x24) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x24) = 0;
        FUN_006bad68(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 9) == '\0') goto LAB_006bb1d0;
    if (piVar8 == (int *)*piVar1) {
      FUN_006bad68(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x24) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x24) = 0;
    FUN_005d43b9(unaff_ESI);
  } while( true );
}



void FUN_006bb23c(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x25) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x25) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x25) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x25) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x25) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x25) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



void FUN_006bb29d(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_4;
    puVar1[4] = param_4[1];
    puVar1[5] = param_4[2];
    puVar1[6] = param_4[3];
    *(undefined *)(puVar1 + 7) = 0;
    *(undefined *)((int)puVar1 + 0x1d) = 0;
  }
  return;
}



void FUN_006bb2d7(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x28);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 9) = 1;
  *(undefined *)((int)puVar1 + 0x25) = 0;
  return;
}



undefined4
FUN_006bb301(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x28);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_4;
    puVar1[4] = param_4[1];
    puVar1[5] = param_4[2];
    puVar1[6] = param_4[3];
    puVar1[7] = param_4[4];
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_4 + 5);
  }
  return 0;
}



void FUN_006bb357(int param_1)

{
  if (*(char *)(param_1 + 0x25) == '\0') {
    FUN_006bb357(*(undefined4 *)(param_1 + 8));
    if (*(int *)(param_1 + 0x20) != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006bb395(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6bb3a1;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::W2AC8B1F5::WFF2A6977::RTTI_Type_Descriptor,
                   &WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::W2AC8B1F5::WFF2A6977::RTTI_Type_Descriptor,
                           &WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_006bb44b(void)

{
  uint uVar1;
  uint *unaff_ESI;
  undefined auStack_40 [4];
  undefined4 *local_3c;
  undefined4 local_38;
  undefined4 local_34 [5];
  int local_20;
  FILE *local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c39766;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_40;
  ExceptionList = &local_14;
  local_20 = 5;
  local_1c = _fopen("/dev/urandom","rb");
  local_c = 0;
  local_3c = local_34;
  if (4 < local_20) {
    FUN_006bbb25(uVar1);
    local_20 = 0;
  }
  local_38 = local_34[local_20];
  local_20 = local_20 + 1;
  FUN_006bb626(&local_3c);
  unaff_ESI[0x270] = 0x270;
  if ((*unaff_ESI & 0x80000000) == 0) {
    uVar1 = 1;
    do {
      if (unaff_ESI[uVar1] != 0) goto LAB_006bb4f9;
      uVar1 = uVar1 + 1;
    } while (uVar1 < 0x270);
    *unaff_ESI = 0x80000000;
  }
LAB_006bb4f9:
  if (local_1c != (FILE *)0x0) {
    _fclose(local_1c);
  }
  ExceptionList = local_14;
  return;
}



void Catch_All_006bb560(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



// WARNING: Removing unreachable block (ram,0x006bb5a8)
// WARNING: Removing unreachable block (ram,0x006bb5b8)
// WARNING: Removing unreachable block (ram,0x006bb5de)
// WARNING: Removing unreachable block (ram,0x006bb5fb)
// WARNING: Removing unreachable block (ram,0x006bb5f7)
// WARNING: Removing unreachable block (ram,0x006bb5bd)
// WARNING: Removing unreachable block (ram,0x006bb5d8)
// WARNING: Removing unreachable block (ram,0x006bb5dc)

int FUN_006bb573(undefined4 param_1,int param_2,int param_3)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  uVar3 = param_3 - param_2;
  if (uVar3 != 0) {
    if (uVar3 == 0xffffffff) {
      uVar1 = FUN_006bb6d6();
    }
    else {
      uVar2 = (uint)(0xffffffff / (ulonglong)(uVar3 + 1));
      if ((uint)(0xffffffff % (ulonglong)(uVar3 + 1)) == uVar3) {
        uVar2 = uVar2 + 1;
      }
      do {
        uVar1 = FUN_006bb6d6();
        uVar1 = uVar1 / uVar2;
      } while (uVar3 < uVar1);
    }
    param_2 = uVar1 + param_2;
  }
  return param_2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006bb626(int *param_1,int param_2,int param_3,int param_4)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  code *pcVar5;
  undefined **local_64 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_3c [28];
  int local_20;
  uint local_1c;
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x54;
  local_8 = 0x6bb632;
  local_1c = 0;
  do {
    local_20 = 0;
    local_18 = 0;
    do {
      iVar3 = *param_1;
      if ((iVar3 == param_3) && (param_1[1] == param_4)) {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
        basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  (local_3c,"Not enough elements in call to seed.");
        local_8 = 0;
        FUN_00417ca0(local_3c);
        local_64[0] = std::invalid_argument::vftable;
        __CxxThrowException_8(local_64,&DAT_03115c24);
        pcVar5 = (code *)swi(3);
        (*pcVar5)();
        return;
      }
      iVar4 = param_1[1];
      piVar1 = (int *)(iVar3 + 0x14);
      if (4 < *piVar1) {
        FUN_006bbb25();
        *piVar1 = 0;
      }
      iVar3 = *(int *)(iVar3 + *piVar1 * 4);
      *piVar1 = *piVar1 + 1;
      param_1[1] = iVar3;
      uVar2 = local_18 + 0x20;
      local_20 = local_20 + (iVar4 << ((byte)local_18 & 0x1f));
      local_18 = uVar2;
    } while (uVar2 < 0x20);
    uVar2 = local_1c + 1;
    *(int *)(param_2 + local_1c * 4) = local_20;
    local_1c = uVar2;
    if (0x26f < uVar2) {
      return;
    }
  } while( true );
}



uint FUN_006bb6d6(void)

{
  int *piVar1;
  uint uVar2;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EDI + 0x9c0);
  if (*piVar1 == 0x270) {
    FUN_006bb71c();
  }
  uVar2 = *(uint *)(unaff_EDI + *piVar1 * 4);
  *piVar1 = *piVar1 + 1;
  uVar2 = uVar2 ^ uVar2 >> 0xb;
  uVar2 = uVar2 ^ (uVar2 & 0xff3a58ad) << 7;
  uVar2 = uVar2 ^ (uVar2 & 0xffffdf8c) << 0xf;
  return uVar2 >> 0x12 ^ uVar2;
}



void __fastcall FUN_006bb71c(undefined4 param_1,uint *param_2)

{
  uint *puVar1;
  int iVar2;
  
  iVar2 = 0xde;
  puVar1 = param_2 + 1;
  do {
    iVar2 = iVar2 + -1;
    puVar1[-1] = ((puVar1[-1] ^ *puVar1) & 0x7ffffffe ^ puVar1[-1]) >> 1 ^
                 (*puVar1 & 1) * -0x66f74f21 ^ puVar1[0x18c];
    puVar1 = puVar1 + 1;
  } while (iVar2 != 0);
  iVar2 = 5;
  puVar1 = param_2 + 0xdf;
  do {
    iVar2 = iVar2 + -1;
    puVar1[-1] = ((puVar1[-1] ^ *puVar1) & 0x7ffffffe ^ puVar1[-1]) >> 1 ^
                 (*puVar1 & 1) * -0x66f74f21 ^ puVar1[0x18c];
    puVar1 = puVar1 + 1;
  } while (iVar2 != 0);
  iVar2 = 0x18c;
  puVar1 = param_2 + 0xe4;
  do {
    iVar2 = iVar2 + -1;
    puVar1[-1] = ((puVar1[-1] ^ *puVar1) & 0x7ffffffe ^ puVar1[-1]) >> 1 ^
                 (*puVar1 & 1) * -0x66f74f21 ^ puVar1[-0xe4];
    puVar1 = puVar1 + 1;
  } while (iVar2 != 0);
  param_2[0x270] = 0;
  param_2[0x26f] =
       ((param_2[0x26f] ^ *param_2) & 0x7ffffffe ^ param_2[0x26f]) >> 1 ^
       (*param_2 & 1) * -0x66f74f21 ^ param_2[0x18c];
  return;
}



undefined4 * __thiscall FUN_006bb810(undefined4 *param_1,byte param_2)

{
  *param_1 = std::invalid_argument::vftable;
  FUN_00417cf8();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 FUN_006bb832(undefined4 param_1,undefined4 param_2)

{
  FUN_0043bc1e(param_2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall FUN_006bb84a(int param_1_00,int param_1)

{
  code *pcVar1;
  undefined *puVar2;
  undefined4 uVar3;
  int iVar4;
  int unaff_ESI;
  undefined local_118 [60];
  undefined local_dc [100];
  undefined local_78 [72];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x108;
  puVar2 = &LAB_00c2a235;
  local_8 = 0x6bb859;
  do {
    if (param_1_00 == param_1) {
      return puVar2;
    }
    FUN_006bba55();
    if (*(uint *)(unaff_ESI + 0x58) < 0xfffffff8) {
      puVar2 = (undefined *)(*(uint *)(unaff_ESI + 0x58) + 8);
      *(undefined **)(unaff_ESI + 0x58) = puVar2;
    }
    else {
      *(undefined4 *)(unaff_ESI + 0x58) = 0;
      if (*(int *)(unaff_ESI + 0x5c) == -1) {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
        basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  (local_30,"sha1 too many bytes");
        local_8 = 0;
        uVar3 = FUN_00401118(local_30);
        local_8._0_1_ = 1;
        iVar4 = FUN_0043b9d3(local_dc,uVar3);
        local_8._0_1_ = 2;
        *(char **)(iVar4 + 0x30) =
             "void __thiscall boost::uuids::detail::sha1::process_byte(unsigned char)";
        *(char **)(iVar4 + 0x34) = "D:\\boost_1_53_0\\boost/uuid/sha1.hpp";
        *(undefined4 *)(iVar4 + 0x38) = 0x68;
        uVar3 = FUN_006bb832(local_118,iVar4);
        local_8 = CONCAT31(local_8._1_3_,3);
        FUN_0043b984(local_78,uVar3);
        __CxxThrowException_8(local_78,&DAT_031157a4);
        pcVar1 = (code *)swi(3);
        puVar2 = (undefined *)(*pcVar1)();
        return puVar2;
      }
      puVar2 = (undefined *)(*(int *)(unaff_ESI + 0x5c) + 1);
      *(undefined **)(unaff_ESI + 0x5c) = puVar2;
    }
    param_1_00 = param_1_00 + 1;
  } while( true );
}



void FUN_006bb90b(void)

{
  uint uVar1;
  uint *in_EAX;
  undefined *puVar2;
  uint uVar3;
  uint *puVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  uint local_158 [80];
  uint local_18;
  uint local_14;
  int local_10;
  uint local_c;
  uint local_8;
  
  uVar3 = 0;
  puVar2 = (undefined *)((int)in_EAX + 0x15);
  do {
    local_158[uVar3] = CONCAT31(CONCAT21(CONCAT11(puVar2[-1],*puVar2),puVar2[1]),puVar2[2]);
    uVar3 = uVar3 + 1;
    puVar2 = puVar2 + 4;
  } while (uVar3 < 0x10);
  iVar7 = 0x40;
  puVar4 = local_158 + 2;
  do {
    uVar3 = puVar4[0xb] ^ puVar4[6] ^ puVar4[-2] ^ *puVar4;
    iVar7 = iVar7 + -1;
    puVar4[0xe] = uVar3 >> 0x1f ^ uVar3 * 2;
    puVar4 = puVar4 + 1;
  } while (iVar7 != 0);
  local_8 = 0;
  local_c = *in_EAX;
  local_18 = in_EAX[3];
  local_14 = in_EAX[4];
  uVar3 = in_EAX[3];
  uVar8 = in_EAX[1];
  uVar5 = in_EAX[2];
  do {
    local_18 = uVar5;
    uVar6 = uVar3;
    uVar1 = local_c;
    if (local_8 < 0x14) {
      uVar3 = ~uVar8 & uVar6 | local_18 & uVar8;
      local_10 = 0x5a827999;
    }
    else {
      if (local_8 < 0x28) {
        local_10 = 0x6ed9eba1;
      }
      else {
        if (local_8 < 0x3c) {
          uVar3 = (local_18 | uVar8) & uVar6 | local_18 & uVar8;
          local_10 = -0x70e44324;
          goto LAB_006bb9dd;
        }
        local_10 = -0x359d3e2a;
      }
      uVar3 = uVar6 ^ local_18 ^ uVar8;
    }
LAB_006bb9dd:
    local_c = (local_c >> 0x1b ^ local_c << 5) + local_158[local_8] + local_10 + uVar3 + local_14;
    local_14 = uVar6;
    uVar5 = uVar8 << 0x1e ^ uVar8 >> 2;
    local_8 = local_8 + 1;
    uVar3 = local_18;
    uVar8 = uVar1;
    if (0x4f < local_8) {
      in_EAX[1] = in_EAX[1] + uVar1;
      in_EAX[2] = in_EAX[2] + uVar5;
      in_EAX[3] = in_EAX[3] + local_18;
      *in_EAX = *in_EAX + local_c;
      in_EAX[4] = in_EAX[4] + uVar6;
      return;
    }
  } while( true );
}



void FUN_006bba55(void)

{
  int *piVar1;
  int in_EAX;
  undefined unaff_BL;
  
  piVar1 = (int *)(in_EAX + 0x54);
  *(undefined *)(in_EAX + 0x14 + *piVar1) = unaff_BL;
  *piVar1 = *piVar1 + 1;
  if (*piVar1 == 0x40) {
    *piVar1 = 0;
    FUN_006bb90b();
    return;
  }
  return;
}



void __fastcall FUN_006bbb25(int param_1)

{
  int iVar1;
  int *piVar2;
  int *piVar3;
  undefined4 local_84;
  undefined4 local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined4 local_74;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  int local_24 [2];
  undefined8 local_1c;
  void *local_14;
  undefined local_10 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_30 = 0;
  local_2c = 0;
  local_28 = 0;
  piVar2 = &DAT_032f02d4;
  piVar3 = local_24;
  for (iVar1 = 5; iVar1 != 0; iVar1 = iVar1 + -1) {
    *piVar3 = *piVar2;
    piVar2 = piVar2 + 1;
    piVar3 = piVar3 + 1;
  }
  local_84 = 0x67452301;
  local_80 = 0xefcdab89;
  local_7c = 0x98badcfe;
  local_78 = 0x10325476;
  local_74 = 0xc3d2e1f0;
  FUN_006bb84a(local_10);
  FUN_006bb84a(&local_84);
  local_1c = __time64((__time64_t *)0x0);
  FUN_006bb84a(&local_14);
  local_14 = (void *)_clock();
  FUN_006bb84a(local_10);
  iVar1 = _rand();
  local_1c._0_4_ = iVar1;
  local_1c._4_4_ = _rand();
  local_14 = (void *)_rand();
  FUN_006bb84a(local_10);
  if (*(FILE **)(param_1 + 0x18) != (FILE *)0x0) {
    _fread(local_24,1,0x14,*(FILE **)(param_1 + 0x18));
  }
  FUN_006bb84a(local_10);
  local_14 = operator_new(4);
  FUN_006bb84a((int)local_14 + 4);
  FUN_006bb84a(local_10);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_14);
}



void FUN_006bbc8c(void)

{
  int in_EAX;
  
  if (*(FILE **)(in_EAX + 0x18) != (FILE *)0x0) {
    _fclose(*(FILE **)(in_EAX + 0x18));
  }
  return;
}



void FUN_006bbc9b(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  int *unaff_EDI;
  int local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_14;
  iVar1 = *(int *)unaff_EDI[5];
  iVar2 = *unaff_EDI;
  while( true ) {
    iVar3 = unaff_EDI[5];
    if ((iVar2 == 0) || (iVar2 != *unaff_EDI)) {
      FUN_00a3fb10(uVar4);
    }
    if (iVar1 == iVar3) break;
    piVar5 = (int *)FUN_006adbc2();
    if (*piVar5 != 0) {
      FUN_006ad7fd();
      local_c = 0;
      if (local_20 != 0) {
        FUN_0041b0a1(local_20);
      }
      local_c = 0xffffffff;
      if (local_1c != 0) {
        FUN_0040127a();
      }
    }
    FUN_007a741a();
  }
  ExceptionList = local_14;
  return;
}



undefined4 * __thiscall FUN_006bbd4f(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF8266037::W003E58E8::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_006bbd6c(undefined4 *param_1)

{
  *param_1 = WF8266037::W003E58E8::vftable;
  return;
}



undefined4 __thiscall FUN_006bbd73(int param_1_00,undefined4 param_1)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  undefined4 uVar3;
  
  uVar3 = 0;
  if (in_EAX != 0) {
    if (in_EAX == 1) {
      uVar3 = 0x100;
    }
    else {
      uVar3 = 0xffffffff;
    }
  }
  iVar1 = *(int *)(param_1_00 + 4);
  cVar2 = FUN_006ae818();
  if (((cVar2 != '\0') && ((-(uint)(*(char *)(iVar1 + 0x20) != '\0') & 0x6a1cd8) != 0)) &&
     (cVar2 = FUN_0069f809(*(undefined4 *)(*(int *)(iVar1 + 8) + 0x20),iVar1 + 0x10,iVar1 + 0x21,
                           param_1_00 + 8,uVar3,param_1), cVar2 != '\0')) {
    return 1;
  }
  return 0;
}



void FUN_006bbdd6(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = WF8266037::WD72F1F4B::W963AD953::vftable;
  return;
}



undefined4 __fastcall FUN_006bbddd(undefined4 param_1)

{
  FUN_006ad7fd();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_006bbdee(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c152c5;
  *param_1 = WF8266037::W8149C410::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::WD72F1F4B::W963AD953::vftable;
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_006bbe21(int param_1_00,int param_1)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined4 *local_18;
  undefined4 *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x6bbe2d;
  param_1._3_1_ = (**(code **)(*(int *)(param_1 + 0x84) + 0x14))();
  if (param_1._3_1_ == '\0') {
    FUN_00b940e0(0x41b62563);
  }
  local_14[0] = (undefined4 *)0x0;
  local_8 = 0;
  if (param_1._3_1_ != '\0') {
    puVar2 = (undefined4 *)FUN_006bbddd();
    local_8 = CONCAT31(local_8._1_3_,1);
    puVar3 = (undefined4 *)FUN_006ad7fd();
    uVar4 = *(undefined4 *)*puVar3;
    if (local_18 != (undefined4 *)0x0) {
      FUN_0040127a();
    }
    cVar1 = (**(code **)**(undefined4 **)(param_1_00 + 4))(local_14,*puVar2,uVar4);
    local_8 = local_8 & 0xffffff00;
    FUN_005e72d0();
    if (cVar1 == '\0') {
      uVar4 = 0x6b051611;
      param_1._3_1_ = false;
    }
    else {
      param_1._3_1_ = local_14[0] != (undefined4 *)0x0;
      if ((bool)param_1._3_1_) {
        param_1._3_1_ = FUN_006bbd73(local_14[0]);
        goto LAB_006bbf10;
      }
      uVar4 = 0x28298d07;
    }
    FUN_00b940e0(uVar4);
  }
  puVar2 = (undefined4 *)FUN_00b933f0(&local_18,0);
  local_8._0_1_ = 2;
  FUN_006bbd73(*puVar2);
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_18 != (undefined4 *)0x0) {
    (**(code **)*local_18)(1);
  }
LAB_006bbf10:
  local_8 = 0xffffffff;
  *(char *)(param_1_00 + 0x10) = param_1._3_1_;
  if (local_14[0] != (undefined4 *)0x0) {
    (**(code **)*local_14[0])(1);
  }
  return;
}



void __thiscall FUN_006bbf41(int param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  undefined uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int iVar6;
  char cStack_32;
  char cStack_31;
  undefined4 uStack_30;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c4a512;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cStack_31 = (**(code **)(*(int *)(param_1 + 0x94) + 0x14))(DAT_0323f878 ^ (uint)&stack0xffffffc0);
  cStack_32 = (**(code **)(*(int *)(param_1 + 0x84) + 0x14))();
  if (cStack_32 == '\0') {
    FUN_00b940e0(0xb94cf950);
  }
  if (cStack_31 == '\0') {
    if (cStack_32 == '\0') {
LAB_006bbfff:
      if (cStack_31 == '\0') goto LAB_006bc081;
      iVar6 = 2;
      cStack_32 = '\x01';
    }
    else {
      puVar4 = (undefined4 *)FUN_006bbddd();
      uStack_c = 0;
      cStack_32 = (**(code **)(**(int **)(param_1_00 + 4) + 4))(&cStack_31,*puVar4);
      uStack_c = 0xffffffff;
      FUN_005e72d0();
      if (cStack_32 == '\0') {
        FUN_00b940e0(0x7ec010f0);
        goto LAB_006bbfff;
      }
LAB_006bc099:
      iVar6 = 0;
    }
  }
  else {
    if (cStack_32 != '\0') {
      puVar4 = (undefined4 *)FUN_006a9532();
      uStack_c = 1;
      puVar5 = (undefined4 *)FUN_006bbddd();
      uStack_c._0_1_ = 2;
      cStack_32 = (**(code **)(**(int **)(param_1_00 + 4) + 8))(*puVar5,*puVar4);
      uStack_c = CONCAT31(uStack_c._1_3_,1);
      FUN_005e72d0();
      uStack_c = 0xffffffff;
      FUN_005e72d0();
      if (cStack_32 != '\0') goto LAB_006bc099;
      FUN_00b940e0(0x4681847d);
    }
LAB_006bc081:
    iVar6 = 1;
  }
  iVar1 = *(int *)(param_1_00 + 8);
  if (iVar6 == 0) {
    uStack_30 = 0;
  }
  else if (iVar6 == 1) {
    uStack_30 = 0x100;
  }
  else if (iVar6 == 2) {
    uStack_30 = 0x300;
  }
  else {
    uStack_30 = 0xffffffff;
  }
  iVar6 = *(int *)(iVar1 + 4);
  cVar2 = FUN_006ae818();
  if ((cVar2 != '\0') && ((-(uint)(*(char *)(iVar6 + 0x20) != '\0') & 0x6a1cd8) != 0)) {
    cVar2 = FUN_0069f98f(*(undefined4 *)(*(int *)(iVar6 + 8) + 0x20),iVar6 + 0x10,iVar6 + 0x21,
                         iVar1 + 8,uStack_30);
    if (cVar2 != '\0') {
      cStack_31 = '\x01';
      goto LAB_006bc10f;
    }
  }
  cStack_31 = '\0';
  FUN_00b940e0(0x5a0cc5be);
LAB_006bc10f:
  if ((cStack_32 == '\0') || (cStack_31 == '\0')) {
    uVar3 = 0;
  }
  else {
    uVar3 = 1;
  }
  *(undefined *)(param_1_00 + 0x10) = uVar3;
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_006bc13c(int param_1)

{
  int iVar1;
  int iVar2;
  char cVar3;
  undefined uVar4;
  undefined4 uVar5;
  
  iVar1 = **(int **)(param_1 + 4);
  uVar5 = FUN_006ad3d1();
  (**(code **)(iVar1 + 0xc))(uVar5);
  iVar1 = *(int *)(param_1 + 8);
  iVar2 = *(int *)(iVar1 + 4);
  cVar3 = FUN_006ae818();
  if ((cVar3 != '\0') && ((-(uint)(*(char *)(iVar2 + 0x20) != '\0') & 0x6a1cd8) != 0)) {
    cVar3 = FUN_0069fabe(*(undefined4 *)(*(int *)(iVar2 + 8) + 0x20),iVar2 + 0x10,iVar2 + 0x21,
                         iVar1 + 8);
    if (cVar3 != '\0') {
      uVar4 = 1;
      goto LAB_006bc1a4;
    }
  }
  FUN_00b940e0(0x833939da);
  uVar4 = 0;
LAB_006bc1a4:
  *(undefined *)(param_1 + 0x10) = uVar4;
  return;
}



undefined4 __thiscall FUN_006bc32c(undefined4 param_1_00,byte param_1)

{
  FUN_006bc348();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_006bc348(undefined4 *param_1)

{
  *param_1 = WF8266037::W1B1AA289::vftable;
  FUN_00401829(1,0);
  FUN_006afc55();
  if (param_1[3] != 0) {
    FUN_0040127a();
    return;
  }
  return;
}



undefined4 FUN_006bc378(undefined4 param_1)

{
  int in_EAX;
  
  basic_string<>(in_EAX + 0xa8);
  return param_1;
}



undefined FUN_006bc395(undefined4 param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  byte *pbVar3;
  uint uVar4;
  undefined4 *local_14;
  int local_10;
  uint local_c;
  undefined local_5;
  
  uVar4 = *(int *)(param_2 + 0x10) - *(int *)(param_2 + 0xc);
  if ((((uVar4 == 0x14) || (uVar4 == 0x18)) || (uVar4 == 0x20)) || (uVar4 == 0x60)) {
    local_5 = 1;
    puVar2 = (undefined4 *)FUN_00b933f0(&local_14,0);
    uVar1 = *puVar2;
    *puVar2 = 0;
    FUN_0040c727(uVar1);
    if (local_14 != (undefined4 *)0x0) {
      (**(code **)*local_14)(1);
    }
    local_c = 0;
    local_14 = (undefined4 *)(uVar4 + 7 >> 3);
joined_r0x006bc400:
    local_14 = (undefined4 *)((int)local_14 - 1);
    if (-1 < (int)local_14) {
      pbVar3 = (byte *)FUN_00b92870();
      local_10 = 0;
      do {
        if (uVar4 <= local_c) break;
        if ((uint)(*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0xc)) <= local_c) {
          FUN_00a3fb10();
        }
        if (*(char *)(local_c + *(int *)(param_2 + 0xc)) != '\0') {
          *pbVar3 = *pbVar3 | '\x01' << ((byte)local_10 & 0x1f);
        }
        local_c = local_c + 1;
        local_10 = local_10 + 1;
      } while (local_10 < 8);
      goto joined_r0x006bc400;
    }
  }
  else {
    local_5 = 0;
  }
  return local_5;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006bc4ba(void)

{
  int iVar1;
  undefined local_28 [32];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 1;
  iVar1 = FUN_006bc673(local_28,&stack0x00000004);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006bc673(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6bc67f;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                   &WF8266037::WD1C3C411::WA90ADCC4::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WBDE613C5::W88A0D6EA::RTTI_Type_Descriptor,
                           &WF8266037::WD1C3C411::WA90ADCC4::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006bc729(undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::WE2A105C0::vftable;
  if (param_1[10] != 0) {
    FUN_0040127a();
  }
  FUN_006bcfc9(param_1 + 1);
  return;
}



undefined4 __thiscall FUN_006bc763(undefined4 param_1_00,byte param_1)

{
  FUN_006bc729();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_006bcfc9(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x6bcfe1;
  FUN_004186fe();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_006bcfe8;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_006bc807(int param_1,int *param_2,int param_3)

{
  undefined4 uVar1;
  int *local_34 [3];
  undefined4 local_28;
  undefined4 local_24;
  int *local_20;
  int local_1c;
  undefined4 local_18;
  char local_11;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_20 = (int *)0x0;
  local_1c = 0;
  local_8 = 1;
  local_11 = (**(code **)(*param_2 + 4))(&local_20,0);
  if (local_11 == '\0') {
    uVar1 = 0x4115251c;
  }
  else {
    local_18 = (**(code **)(*local_20 + 0x10))();
    local_24 = *(undefined4 *)(param_1 + 0x1c);
    local_28 = *(undefined4 *)(param_1 + 4);
    FUN_006bd0a8(local_34,&local_18);
    local_11 = FUN_006b8eca();
    if (local_11 != '\0') {
      local_34[0] = param_2;
                    // WARNING: Subroutine does not return
      FUN_0043c023(&param_3);
    }
    uVar1 = 0x4138ea54;
  }
  local_11 = 0;
  FUN_00b940e0(uVar1);
  local_8 = local_8 & 0xffffff00;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (param_3 != 0) {
    FUN_0040127a();
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_006bc9b5(int *param_1_00,undefined4 *param_1)

{
  int iVar1;
  code **ppcVar2;
  undefined4 uVar3;
  char cVar4;
  char cVar5;
  undefined4 uVar6;
  undefined4 *puVar7;
  undefined local_1c [4];
  undefined local_18 [4];
  undefined4 *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x6bc9c1;
  cVar5 = '\x01';
  cVar4 = (**(code **)(*param_1_00 + 0x14))();
  if (cVar4 == '\0') {
    puVar7 = (undefined4 *)FUN_00b933f0(&param_1,0);
    uVar6 = *puVar7;
    *puVar7 = 0;
    FUN_0040c727(uVar6);
    puVar7 = param_1;
    goto LAB_006bcb42;
  }
  iVar1 = *(int *)param_1[9];
  uVar6 = (**(code **)(*param_1_00 + 0xc))();
  cVar5 = (**(code **)(iVar1 + 8))(local_18,uVar6);
  if (cVar5 == '\0') {
    uVar6 = 0x1f64997b;
    cVar5 = '\0';
LAB_006bca27:
    FUN_00b940e0(uVar6);
  }
  else {
    ppcVar2 = *(code ***)param_1[9];
    uVar6 = (**(code **)(*param_1_00 + 0x10))();
    cVar5 = (**ppcVar2)(local_1c,uVar6);
    if (cVar5 == '\0') {
      uVar6 = 0x56351d31;
      goto LAB_006bca27;
    }
  }
  local_14[0] = (undefined4 *)0x0;
  local_8 = 0;
  if (cVar5 != '\0') {
    cVar5 = (**(code **)(*param_1_00 + 4))(local_14,param_1);
    if (cVar5 == '\0') {
      uVar6 = 0xf9c89688;
      cVar5 = '\0';
    }
    else {
      uVar6 = local_14[0][2];
      puVar7 = (undefined4 *)FUN_00b933f0(&param_1,0);
      uVar3 = *puVar7;
      *puVar7 = 0;
      FUN_0040c727(uVar3);
      if (param_1 != (undefined4 *)0x0) {
        (**(code **)*param_1)(1);
      }
      cVar5 = FUN_00bb5f30(0);
      if (cVar5 == '\0') {
        uVar6 = 0xe3b6f884;
        cVar5 = '\0';
      }
      else {
        cVar5 = FUN_00bb5f30(0);
        if (cVar5 == '\0') {
          uVar6 = 0x9cb8b1e6;
          cVar5 = '\0';
        }
        else {
          cVar5 = FUN_00bb5f30(0);
          if (cVar5 == '\0') {
            uVar6 = 0xc204ca80;
            cVar5 = '\0';
          }
          else {
            cVar5 = FUN_00b93040(local_14[0],0,uVar6);
            if (cVar5 != '\0') goto LAB_006bcb19;
            uVar6 = 0xd0715974;
          }
        }
      }
    }
    FUN_00b940e0(uVar6);
  }
LAB_006bcb19:
  local_8 = 0xffffffff;
  puVar7 = local_14[0];
LAB_006bcb42:
  if (puVar7 != (undefined4 *)0x0) {
    (**(code **)*puVar7)(1);
  }
  return cVar5;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006bcc31)

uint FUN_006bcb56(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined local_30 [8];
  undefined4 local_28;
  undefined4 local_20;
  int local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_20 = 0;
  local_1c = 0;
  local_8 = 0;
  local_14 = 0;
  uVar2 = FUN_006bcc50(param_1,&local_20,param_3);
  cVar1 = (char)uVar2;
  if (cVar1 == '\0') {
    uVar2 = FUN_00b940e0(0x922fd673);
  }
  local_18 = 0;
  local_14 = 0;
  local_8 = CONCAT31(local_8._1_3_,1);
  if (cVar1 == '\0') {
    local_14 = 0;
    local_18 = 0;
    local_8 = 0xffffffff;
    if (local_1c != 0) {
      uVar2 = FUN_0040127a();
    }
    return uVar2 & 0xffffff00;
  }
  puVar3 = (undefined4 *)FUN_006bd51a(local_30,&local_20);
  local_28 = *puVar3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar3 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006bcc50(int param_1,int **param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  int *unaff_EBX;
  undefined4 uVar4;
  undefined local_38 [12];
  int *local_2c;
  int local_28;
  int *local_24;
  undefined4 *local_20;
  undefined4 local_1c;
  undefined4 local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x6bcc5c;
  local_11 = FUN_00bb64e0(&local_1c,0);
  if (local_11 == '\0') {
    FUN_00b940e0(0x36d5e618);
  }
  *unaff_EBX = *unaff_EBX + 4;
  if (local_11 != '\0') {
    local_11 = FUN_00bb64e0(&local_18,0);
    if (local_11 == '\0') {
      FUN_00b940e0(0x583d2cd);
    }
    *unaff_EBX = *unaff_EBX + 4;
    if (local_11 != '\0') {
      local_11 = FUN_00bb64e0(&local_28,0);
      if (local_11 == '\0') {
        FUN_00b940e0(0x3612ae15);
      }
      *unaff_EBX = *unaff_EBX + 4;
      if (local_11 != '\0') {
        local_11 = (**(code **)(**(int **)(param_1 + 0x24) + 0xc))(&local_1c,local_1c);
        if (local_11 == '\0') {
          uVar4 = 0xc8f74aad;
          local_11 = '\0';
        }
        else {
          local_11 = (**(code **)(**(int **)(param_1 + 0x24) + 4))(&local_18,local_18);
          if (local_11 != '\0') {
            ppiVar2 = (int **)FUN_006bd0a8(local_38,&local_18);
            local_24 = *ppiVar2;
            piVar1 = ppiVar2[1];
            local_2c = *(int **)(param_1 + 0x1c);
            if ((local_24 == (int *)0x0) || (local_24 != *(int **)(param_1 + 4))) {
              FUN_00a3fb10();
            }
            local_11 = piVar1 != local_2c;
            if ((bool)local_11) {
              if (local_24 == (int *)0x0) {
                FUN_00a3fb10();
                iVar3 = 0;
              }
              else {
                iVar3 = *local_24;
              }
              if (piVar1 == *(int **)(iVar3 + 0x18)) {
                FUN_00a3fb10();
              }
              local_11 = (**(code **)(*(int *)piVar1[4] + 4))(param_2,local_1c);
              if (local_11 == '\0') {
                uVar4 = 0xb334c98d;
                goto LAB_006bcddd;
              }
            }
            else {
              FUN_00b940e0(0x5c7c8bdb);
              FUN_00b940c0(0x5c7c8bdb,&local_18,4);
            }
            goto LAB_006bcde3;
          }
          uVar4 = 0xd0481a33;
          local_11 = '\0';
        }
LAB_006bcddd:
        FUN_00b940e0(uVar4);
      }
    }
  }
LAB_006bcde3:
  local_20 = (undefined4 *)0x0;
  local_8 = 0;
  if (local_11 != '\0') {
    local_11 = FUN_00bb6360(&local_20,param_3,*unaff_EBX);
    if (local_11 == '\0') {
      uVar4 = 0x9dd20b00;
      local_11 = '\0';
    }
    else {
      iVar3 = **param_2;
      *unaff_EBX = *unaff_EBX + local_28;
      local_11 = (**(code **)(iVar3 + 8))(param_1,local_20);
      if (local_11 != '\0') goto LAB_006bce47;
      uVar4 = 0xc30abf4f;
    }
    FUN_00b940e0(uVar4);
  }
LAB_006bce47:
  local_8 = 0xffffffff;
  if (local_20 != (undefined4 *)0x0) {
    (**(code **)*local_20)(1);
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006bce63(undefined4 *param_1,int *param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 *puVar2;
  char cVar3;
  int *unaff_ESI;
  undefined4 uVar4;
  int local_20;
  undefined4 local_1c;
  undefined4 local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x6bce6f;
  local_11 = FUN_00bb64e0(&local_1c,0);
  if (local_11 == '\0') {
    FUN_00b940e0(0x2b107376);
  }
  *unaff_ESI = *unaff_ESI + 4;
  if (local_11 == '\0') {
    return '\0';
  }
  local_11 = FUN_00bb64e0(&local_18,0);
  if (local_11 == '\0') {
    FUN_00b940e0(0x8101e593);
  }
  *unaff_ESI = *unaff_ESI + 4;
  if (local_11 == '\0') {
    return '\0';
  }
  local_11 = FUN_00bb64e0(&local_20,0);
  if (local_11 == '\0') {
    FUN_00b940e0(0x236bd04d);
  }
  iVar1 = (int)param_1;
  *unaff_ESI = *unaff_ESI + 4;
  if (local_11 == '\0') {
    return '\0';
  }
  cVar3 = (**(code **)(**(int **)((int)param_1 + 0x24) + 0xc))(&local_1c,local_1c);
  if (((cVar3 == '\0') ||
      (cVar3 = (**(code **)(**(int **)(iVar1 + 0x24) + 4))(&local_18,local_18), cVar3 == '\0')) ||
     (cVar3 = FUN_006bec46(&param_2,local_1c,local_18), cVar3 == '\0')) goto LAB_006bcfb3;
  param_1 = (undefined4 *)0x0;
  local_8 = 0;
  local_11 = FUN_00bb6360(&param_1,param_3,*unaff_ESI);
  puVar2 = param_1;
  if (local_11 == '\0') {
    uVar4 = 0x8d83ab4f;
    local_11 = '\0';
LAB_006bcf9d:
    FUN_00b940e0(uVar4);
  }
  else {
    local_11 = (**(code **)(*param_2 + 8))(iVar1,param_1);
    if (local_11 == '\0') {
      uVar4 = 0xaafbace1;
      goto LAB_006bcf9d;
    }
  }
  local_8 = 0xffffffff;
  if (puVar2 != (undefined4 *)0x0) {
    (**(code **)*puVar2)(1);
  }
LAB_006bcfb3:
  if (local_11 != '\0') {
    *unaff_ESI = *unaff_ESI + local_20;
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_006bcfc9(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x6bcfe1;
  FUN_004186fe();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_006bcfe8;
  FUN_00a3f6a1();
}



void FUN_006bcff1(uint *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  int *unaff_EBX;
  int *unaff_EDI;
  undefined4 uVar4;
  int local_18;
  undefined4 *local_14;
  undefined4 *local_10;
  undefined4 local_c;
  
  local_10 = (undefined4 *)unaff_EBX[6];
  local_c = CONCAT31(local_c._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_10[1] + 0x19) == '\0') {
    puVar2 = (undefined4 *)local_10[1];
    do {
      local_10 = puVar2;
      local_c = CONCAT31(local_c._1_3_,*param_1 < (uint)local_10[3]);
      if (*param_1 < (uint)local_10[3]) {
        puVar2 = (undefined4 *)*local_10;
      }
      else {
        puVar2 = (undefined4 *)local_10[2];
      }
    } while (*(char *)((int)puVar2 + 0x19) == '\0');
  }
  local_18 = *unaff_EBX;
  local_14 = local_10;
  if ((char)local_c != '\0') {
    puVar2 = *(undefined4 **)unaff_EBX[6];
    if (local_18 == 0) {
      FUN_00a3fb10();
    }
    if (local_10 == puVar2) {
      uVar4 = 1;
      goto LAB_006bd05c;
    }
    FUN_007fd84d();
  }
  uVar4 = local_c;
  if (*param_1 <= (uint)local_14[3]) {
    *unaff_EDI = local_18;
    unaff_EDI[1] = (int)local_14;
    *(undefined *)(unaff_EDI + 2) = 0;
    return;
  }
LAB_006bd05c:
  piVar3 = (int *)FUN_006bd125(&local_18,uVar4,param_1);
  iVar1 = piVar3[1];
  *unaff_EDI = *piVar3;
  unaff_EDI[1] = iVar1;
  *(undefined *)(unaff_EDI + 2) = 1;
  return;
}



int * FUN_006bd0a8(int *param_1,uint *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  int *unaff_ESI;
  undefined4 *puVar5;
  int local_14;
  int local_10;
  int local_c;
  undefined4 *local_8;
  
  puVar5 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar5[1] + 0x19) == '\0') {
    puVar2 = (undefined4 *)puVar5[1];
    do {
      if ((uint)puVar2[3] < *param_2) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar5 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x19) == '\0');
  }
  puVar2 = (undefined4 *)unaff_ESI[6];
  local_8 = puVar5;
  local_c = *unaff_ESI;
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  if ((puVar5 == puVar2) || (*param_2 < (uint)puVar5[3])) {
    local_10 = unaff_ESI[6];
    local_14 = *unaff_ESI;
    piVar4 = &local_14;
  }
  else {
    piVar4 = &local_c;
  }
  iVar1 = *piVar4;
  param_1[1] = piVar4[1];
  *param_1 = iVar1;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_006bd125(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x6bd131;
  if (0x15555553 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_00452f3b(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_006bd24a;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_006bd24a;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_006bd24a:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 6) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x18) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 6) == '\0') {
LAB_006bd206:
        *(undefined *)(piVar1 + 6) = 1;
        *(undefined *)(piVar7 + 6) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x18) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_0042bfd4(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x18) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x18) = 0;
        FUN_0042c014(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 6) == '\0') goto LAB_006bd206;
    if (piVar8 == (int *)*piVar1) {
      FUN_0042c014(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x18) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x18) = 0;
    FUN_0042bfd4(unaff_ESI);
  } while( true );
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_006bd272(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c118e1;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W2AC8B1F5::WFF2A6977>::vftable;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return puVar1;
}



char __thiscall FUN_006bd2a5(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  char local_69;
  undefined4 *local_68;
  int local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined local_50 [8];
  undefined4 local_48;
  undefined4 local_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c398f3;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_14;
  local_69 = '\x01';
  FUN_00b72ec0(local_50);
  local_c = 0;
  iVar3 = *(int *)(param_1_00 + 8);
  local_5c = **(undefined4 **)(iVar3 + 0x1c);
  local_60 = *(undefined4 *)(iVar3 + 8);
  local_64 = iVar3;
  do {
    local_54 = *(undefined4 *)(iVar3 + 0x1c);
    local_58 = *(undefined4 *)(iVar3 + 8);
    cVar1 = FUN_0041c034(uVar2);
    if (cVar1 == '\0') break;
    local_68 = (undefined4 *)0x0;
    local_c._0_1_ = 1;
    puVar4 = (undefined4 *)0x0;
    if (local_69 != '\0') {
      FUN_006adbc2();
      local_69 = FUN_006bc9b5(param_2,&local_68);
      puVar4 = local_68;
      if (local_69 == '\0') {
        FUN_00b940e0(0xf409d81b);
        puVar4 = local_68;
      }
      else if ((local_68[2] != 0) &&
              (local_69 = FUN_00bb13e0(local_68), iVar3 = local_64, local_69 == '\0')) {
        FUN_00b940e0(0xccb86cc2);
        iVar3 = local_64;
      }
    }
    local_c = (uint)local_c._1_3_ << 8;
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)(1);
    }
    FUN_007a741a();
  } while (local_69 != '\0');
  if (local_69 != '\0') {
    local_48 = 0;
    local_44 = 0;
    local_69 = FUN_00bb1450(0xffffffff);
    if (local_69 == '\0') {
      FUN_00b940e0(0xccad8780);
    }
  }
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return local_69;
}



char __thiscall FUN_006bd41e(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char local_5;
  
  local_5 = '\x01';
  FUN_006bd5ec(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return local_5;
    }
    local_5 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (local_5 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006bd478(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006bd5ec(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006bd48d. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



bool __fastcall FUN_006bd490(int param_1)

{
  return *(int *)(param_1 + 8) != 0;
}



void __thiscall FUN_006bd499(int param_1_00,undefined4 *param_1)

{
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006bd5ec(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006bd51a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6bd526;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                   &WF8266037::W2AC8B1F5::W009CDA1B::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::W2AC8B1F5::W041FECE6::RTTI_Type_Descriptor,
                           &WF8266037::W2AC8B1F5::W009CDA1B::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



undefined4 __thiscall FUN_006bd5d0(undefined4 param_1_00,byte param_1)

{
  FUN_006bd272();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006bd5ec(void)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined4 local_1c;
  int local_18;
  void *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x6bd5f8;
  local_14 = operator_new(0x24);
  local_8 = 0;
  if (local_14 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_006adf6e();
  }
  local_18 = 0;
  local_8 = 1;
  local_1c = uVar2;
  piVar3 = (int *)FUN_006bd6d6(uVar2);
  iVar1 = *piVar3;
  *piVar3 = local_18;
  local_18 = iVar1;
  if (local_14 != (void *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c(&local_1c,uVar2,uVar2);
  local_8 = 0xffffffff;
  FUN_0046f668();
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return;
}



void Catch_All_006bd6bf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006bd6d6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W2AC8B1F5::WFF2A6977>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006bd71c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006bd8df(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



int __thiscall FUN_006bd8e9(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *puVar3;
  int *piVar4;
  char cStack_39;
  int local_38;
  undefined4 uStack_34;
  int iStack_30;
  undefined4 *local_2c;
  undefined4 *local_28;
  undefined4 *puStack_24;
  undefined4 *local_20;
  undefined4 *puStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3e5f5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  puVar3 = (undefined4 *)FUN_00b933f0(&local_28,0,DAT_0323f878 ^ (uint)&stack0xffffffb8);
  puVar1 = (undefined4 *)*puVar3;
  *puVar3 = 0;
  local_c = 0;
  local_2c = puVar1;
  local_20 = puVar1;
  if (local_28 != (undefined4 *)0x0) {
    (**(code **)*local_28)(1);
  }
  local_38 = FUN_006bfce9(puVar1,8);
  if (local_38 != 0) {
    cVar2 = (**(code **)(*(int *)(*(int *)(*(int *)(param_1_00 + -0x50) + 4) + -0x50 + param_1_00) +
                        0x40))();
    if (cVar2 == '\0') {
      FUN_00b940e0(0xd64e1b33);
    }
  }
  uStack_34 = 0;
  if (local_38 == 0) {
    cVar2 = FUN_006bee26(&cStack_39,&uStack_34,local_2c);
    if ((cVar2 == '\0') || (cStack_39 == '\0')) {
      local_38 = 0x403;
    }
    if (local_38 != 0) {
      FUN_00b940e0(0xd1b7269f);
    }
  }
  piVar4 = (int *)FUN_00b933f0(&puStack_24,0);
  puVar1 = (undefined4 *)*piVar4;
  *piVar4 = 0;
  local_c = CONCAT31(local_c._1_3_,1);
  puStack_1c = puVar1;
  if (puStack_24 != (undefined4 *)0x0) {
    (**(code **)*puStack_24)(1);
  }
  if (local_38 == 0) {
    local_38 = FUN_006bfce9(puVar1,uStack_34);
    if (local_38 != 0) {
      cVar2 = (**(code **)(*(int *)(*(int *)(*(int *)(param_1_00 + -0x50) + 4) + -0x50 + param_1_00)
                          + 0x40))();
      if (cVar2 == '\0') {
        FUN_00b940e0(0x9e5e10c3);
      }
    }
  }
  uStack_34 = 0;
  iStack_30 = 0;
  local_c._0_1_ = 2;
  if (local_38 == 0) {
    cVar2 = FUN_006bcb56(*(undefined4 *)(param_1_00 + -0x14),&uStack_34,puVar1);
    if (cVar2 == '\0') {
      local_38 = 0x402;
      FUN_00b940e0(0xc0bb609d);
    }
    else {
      FUN_005d11c9(param_1);
    }
  }
  local_c._0_1_ = 1;
  if (iStack_30 != 0) {
    FUN_0040127a();
  }
  local_c = (uint)local_c._1_3_ << 8;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  local_c = 0xffffffff;
  if (local_2c != (undefined4 *)0x0) {
    (**(code **)*local_2c)(1);
  }
  ExceptionList = local_14;
  return local_38;
}



// WARNING: Removing unreachable block (ram,0x006bdd4f)
// WARNING: Removing unreachable block (ram,0x006bdd61)

int __fastcall FUN_006bdbdf(int param_1)

{
  int **ppiVar1;
  int iVar2;
  int local_28;
  void *pvStack_18;
  void *local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  uStack_10 = &LAB_00c5daec;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_c = 0;
  ppiVar1 = (int **)FUN_00492da1();
  local_c = CONCAT31(local_c._1_3_,1);
  iVar2 = (**(code **)(**ppiVar1 + 4))();
  uStack_10 = (undefined *)((uint)uStack_10 & 0xffffff00);
  if (local_28 != 0) {
    FUN_0040127a();
  }
  if (iVar2 != 0) {
    FUN_00b940e0();
  }
  uStack_10._0_1_ = 2;
  if (iVar2 == 0) {
    FUN_006bdda2();
    uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,3);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + -8);
  }
  ExceptionList = pvStack_18;
  return iVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006bdda2(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6bddae;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::WD747FD9D::W1F596828::RTTI_Type_Descriptor,
                   &WF8266037::WD747FD9D::W7A788709::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::WD747FD9D::W1F596828::RTTI_Type_Descriptor,
                           &WF8266037::WD747FD9D::W7A788709::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



undefined4 * __thiscall FUN_006bdf12(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF8266037::WD747FD9D::WED1671B2::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_006bdf2f(undefined4 *param_1)

{
  *param_1 = WF8266037::WD747FD9D::WED1671B2::vftable;
  return;
}



undefined4 * __thiscall FUN_006bdf36(undefined4 *param_1_00,byte param_1)

{
  undefined4 *puVar1;
  
  puVar1 = param_1_00 + -0xd;
  FUN_006be017();
  param_1_00[1] = WF8266037::WD747FD9D::W59A80F69::vftable;
  *(undefined ***)(*(int *)(param_1_00[2] + 4) + 0x3c + (int)puVar1) =
       WF8266037::WD747FD9D::W59A80F69::vftable;
  *param_1_00 = WF8266037::WD747FD9D::W1F596828::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  return puVar1;
}



void FUN_006bdf75(void)

{
  FUN_006bdf36();
  return;
}



void FUN_006bdf7d(void)

{
  FUN_008178b9();
  return;
}



void FUN_006bdf85(void)

{
  FUN_006bfb6d();
  return;
}



void FUN_006bdf8d(void)

{
  FUN_006bfb78();
  return;
}



void FUN_006bdf95(void)

{
  FUN_0081795d();
  return;
}



void FUN_006bdf9d(void)

{
  FUN_006bfb8b();
  return;
}



void FUN_006bdfa5(void)

{
  FUN_0081797f();
  return;
}



undefined4 __thiscall FUN_006bdfad(undefined4 param_1_00,byte param_1)

{
  FUN_006bdfc9();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_006bdfc9(undefined4 *param_1)

{
  *param_1 = WF8266037::WD747FD9D::W38E79FB1::vftable;
  if (param_1[2] != 0) {
    FUN_0040127a();
    return;
  }
  return;
}



undefined4 __thiscall FUN_006bdfdc(undefined4 param_1_00,byte param_1)

{
  FUN_006bdff8();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_006bdff8(undefined4 *param_1)

{
  *param_1 = WF8266037::WD747FD9D::W51B2273E::vftable;
  FUN_00417fe6();
  if (param_1[3] != 0) {
    FUN_0040127a();
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006be017(int param_1)

{
  int iVar1;
  
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x34) + 4) + -0x34 + param_1) =
       WF8266037::WD747FD9D::WA106A549::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x34) + 8) + -0x34 + param_1) =
       WF8266037::WD747FD9D::WA106A549::vftable;
  iVar1 = *(int *)(*(int *)(param_1 + -0x34) + 4);
  *(int *)(iVar1 + -0x38 + param_1) = iVar1 + -0x34;
  FUN_006bdff8();
  FUN_006bdfc9();
  return;
}



undefined4 * __thiscall FUN_006be06f(undefined4 *param_1_00,byte param_1)

{
  undefined4 *puVar1;
  
  puVar1 = param_1_00 + -2;
  *puVar1 = WF8266037::WD747FD9D::W59A80F69::vftable;
  *(undefined ***)(*(int *)(param_1_00[-1] + 4) + 4 + (int)puVar1) =
       WF8266037::WD747FD9D::W59A80F69::vftable;
  *param_1_00 = WF8266037::WD747FD9D::W1F596828::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  return puVar1;
}



void __fastcall FUN_006be0a2(int param_1)

{
  *(undefined ***)(param_1 + -8) = WF8266037::WD747FD9D::W59A80F69::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -4) + 4) + -4 + param_1) =
       WF8266037::WD747FD9D::W59A80F69::vftable;
  return;
}



undefined4 * __thiscall FUN_006be0b8(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF8266037::WD747FD9D::W1F596828::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_006be0d5(undefined4 *param_1)

{
  *param_1 = WF8266037::WD747FD9D::W1F596828::vftable;
  return;
}



undefined4 FUN_006be0dc(undefined4 *param_1,undefined4 param_2)

{
  *param_1 = param_2;
  return 1;
}



void __fastcall FUN_006be0eb(undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006be0f2(undefined4 param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *local_28;
  LPSTR local_24;
  int local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x6be0fe;
  if (param_2[5] == 0) {
    puVar2 = (undefined4 *)FUN_00b933f0(&param_2,0);
    uVar1 = *puVar2;
    *puVar2 = 0;
    FUN_0040c727(uVar1);
    if (param_2 != (undefined4 *)0x0) {
      (**(code **)*param_2)(1);
    }
    local_11 = '\x01';
  }
  else {
    if ((uint)param_2[6] < 8) {
      puVar2 = param_2 + 1;
    }
    else {
      puVar2 = (undefined4 *)param_2[1];
    }
    local_1c = param_2 + 1;
    local_20 = WideCharToMultiByte(0xfde9,0,(LPCWSTR)puVar2,-1,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0)
    ;
    local_11 = 0 < local_20;
    if (!(bool)local_11) {
      FUN_00b940e0(0xf54699c4);
    }
    local_18 = (undefined4 *)0x0;
    local_8 = 0;
    local_24 = (LPSTR)0x0;
    if (local_11 != '\0') {
      puVar2 = (undefined4 *)FUN_00b933f0(&local_28,0);
      uVar1 = *puVar2;
      *puVar2 = 0;
      FUN_0040c727(uVar1);
      if (local_28 != (undefined4 *)0x0) {
        (**(code **)*local_28)(1);
      }
      local_11 = FUN_00b93010();
      if (local_11 == '\0') {
        FUN_00b940e0(0x27b351e7);
      }
      else {
        puVar2 = local_1c;
        if (7 < (uint)param_2[6]) {
          puVar2 = (undefined4 *)*local_1c;
        }
        WideCharToMultiByte(0xfde9,0,(LPCWSTR)puVar2,-1,local_24,local_20 + -1,(LPCSTR)0x0,
                            (LPBOOL)0x0);
        FUN_005d06ce();
      }
    }
    local_8 = 0xffffffff;
    if (local_18 != (undefined4 *)0x0) {
      (**(code **)*local_18)(1);
    }
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined __fastcall FUN_006be224(int param_1)

{
  int iVar1;
  undefined4 *puVar2;
  char cVar3;
  undefined4 *puVar4;
  undefined uVar5;
  int local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x6be230;
  iVar1 = *(int *)(param_1 + 8);
  puVar4 = (undefined4 *)FUN_00b933f0(&local_18,0);
  puVar2 = (undefined4 *)*puVar4;
  *puVar4 = 0;
  local_8 = 0;
  local_14 = puVar2;
  if (local_18 != (undefined4 *)0x0) {
    (**(code **)*local_18)(1);
  }
  cVar3 = FUN_00b92a20(puVar2,&local_1c,0);
  if ((cVar3 == '\0') || (local_1c != iVar1)) {
    uVar5 = 0;
    FUN_00b940e0(0xacf8eae6);
  }
  else {
    uVar5 = 1;
    FUN_005d06ce();
  }
  local_8 = 0xffffffff;
  if (local_14 != (undefined4 *)0x0) {
    (**(code **)*local_14)(1);
  }
  return uVar5;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006be2b2(void)

{
  undefined *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined *unaff_ESI;
  int iVar4;
  int local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_18 = (undefined4 *)0x0;
  local_8 = 0;
  puVar3 = (undefined4 *)FUN_00b933f0(&local_1c,0);
  uVar2 = *puVar3;
  *puVar3 = 0;
  FUN_0040c727(uVar2);
  if (local_1c != (undefined4 *)0x0) {
    (**(code **)*local_1c)(1);
  }
  local_11 = FUN_00b93010();
  if (local_11 == '\0') {
    FUN_00b940e0(0xc08d504d);
  }
  if (local_11 != '\0') {
    puVar1 = unaff_ESI + 0x10;
    iVar4 = local_20 - (int)unaff_ESI;
    for (; unaff_ESI != puVar1; unaff_ESI = unaff_ESI + 1) {
      unaff_ESI[iVar4] = *unaff_ESI;
    }
    FUN_005d06ce();
  }
  local_8 = 0xffffffff;
  if (local_18 != (undefined4 *)0x0) {
    (**(code **)*local_18)(1);
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006be351(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *local_1c;
  undefined4 *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x6be35d;
  __aullshr();
  puVar1 = (undefined4 *)FUN_00b933f0(&local_1c,0);
  local_18 = (undefined4 *)*puVar1;
  *puVar1 = 0;
  local_8 = 0;
  if (local_1c != (undefined4 *)0x0) {
    (**(code **)*local_1c)(1);
  }
  local_11 = FUN_00bb5f30(0);
  if (local_11 == '\0') {
    uVar2 = 0x4e59d414;
    local_11 = '\0';
  }
  else {
    local_11 = FUN_00bb5f30(0);
    if (local_11 != '\0') {
      FUN_005d06ce();
      goto LAB_006be3eb;
    }
    uVar2 = 0xed504b4b;
  }
  FUN_00b940e0(uVar2);
LAB_006be3eb:
  local_8 = 0xffffffff;
  if (local_18 != (undefined4 *)0x0) {
    (**(code **)*local_18)(1);
  }
  return local_11;
}



undefined FUN_006be405(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  void *pvVar2;
  undefined uVar3;
  undefined local_28 [4];
  undefined4 uStack_24;
  undefined *local_c;
  char local_5;
  
  local_c = local_28;
  local_28[0] = 0;
  uVar3 = 1;
  cVar1 = FUN_00b92bb0(param_2,&local_c);
  if ((cVar1 == '\0') || (local_c != (undefined *)0x1)) {
    uVar3 = 0;
    uStack_24 = 0x6be44b;
    FUN_00b940e0();
  }
  else {
    uStack_24 = 0x6be454;
    pvVar2 = operator_new(1);
    if (pvVar2 != (void *)0x0) {
      *(bool *)pvVar2 = local_5 == '\x01';
    }
    uStack_24 = 0x6be470;
    FUN_006ad09c();
    FUN_0046f668();
    if (local_c != (undefined *)0x0) {
      FUN_0040127a();
    }
  }
  return uVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006be48d(void)

{
  undefined4 *puVar1;
  undefined local_28 [4];
  int local_24;
  undefined4 *local_20;
  int local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_20 = (undefined4 *)0x0;
  local_1c = 0;
  local_8 = 0;
  local_15 = FUN_006be88c();
  if (local_15 == '\0') {
    FUN_00b940e0(0xfc615993);
  }
  else {
    puVar1 = (undefined4 *)operator_new(4);
    if (puVar1 != (undefined4 *)0x0) {
      *puVar1 = *local_20;
    }
    FUN_006ae140(local_28);
    FUN_0046f668();
    if (local_24 != 0) {
      FUN_0040127a();
    }
  }
  local_8 = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  return local_15;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006be517(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined local_24 [4];
  int local_20;
  undefined4 *local_1c;
  int local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = (undefined4 *)0x0;
  local_18 = 0;
  local_8 = 0;
  local_11 = FUN_006be8dc(&local_1c,param_2);
  if (local_11 == '\0') {
    FUN_00b940e0(&DAT_00e5ad22);
  }
  else {
    puVar1 = (undefined4 *)operator_new(8);
    if (puVar1 != (undefined4 *)0x0) {
      *puVar1 = *local_1c;
      puVar1[1] = local_1c[1];
    }
    FUN_006ad731(local_24);
    FUN_0046f668();
    if (local_20 != 0) {
      FUN_0040127a();
    }
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006be5ad(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined local_24 [4];
  int local_20;
  undefined4 *local_1c;
  int local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = (undefined4 *)0x0;
  local_18 = 0;
  local_8 = 0;
  local_11 = FUN_006be8dc(&local_1c,param_2);
  if (local_11 == '\0') {
    FUN_00b940e0(0xa71a2152);
  }
  else {
    puVar1 = (undefined4 *)operator_new(8);
    if (puVar1 != (undefined4 *)0x0) {
      *puVar1 = *local_1c;
      puVar1[1] = local_1c[1];
    }
    FUN_006aae95(local_24);
    FUN_0046f668();
    if (local_20 != 0) {
      FUN_0040127a();
    }
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_006be643(undefined4 param_1,int param_2)

{
  longlong lVar1;
  char cVar2;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *this;
  int cchWideChar;
  LPWSTR lpWideCharStr;
  void *pvVar3;
  undefined4 uVar4;
  LPCSTR local_18;
  bool local_11;
  
  if (*(int *)(param_2 + 8) == 0) {
    this = (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *)
           operator_new(0x1c);
    if (this != (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                 *)0x0) {
      std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
      basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(this);
    }
    FUN_006be974(param_1);
    local_11 = true;
  }
  else {
    cVar2 = FUN_00b93390();
    if (cVar2 == '\0') {
      uVar4 = 0x586aa736;
      local_11 = false;
    }
    else {
      cchWideChar = MultiByteToWideChar(0xfde9,0,local_18,*(int *)(param_2 + 8),(LPWSTR)0x0,0);
      local_11 = -1 < cchWideChar;
      if (local_11) {
        lVar1 = (ulonglong)(cchWideChar + 1) * 2;
        lpWideCharStr =
             (LPWSTR)FUN_00823c23(-(uint)((int)((ulonglong)lVar1 >> 0x20) != 0) | (uint)lVar1);
        lpWideCharStr[cchWideChar] = L'\0';
        MultiByteToWideChar(0xfde9,0,local_18,*(int *)(param_2 + 8),lpWideCharStr,cchWideChar);
        pvVar3 = operator_new(0x1c);
        if (pvVar3 != (void *)0x0) {
          basic_string<>(lpWideCharStr);
        }
        FUN_006be974(param_1);
        FUN_00a3f66c(lpWideCharStr);
        return local_11;
      }
      uVar4 = 0x6d45e5f0;
    }
    FUN_00b940e0(uVar4);
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined __thiscall FUN_006be749(int param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 *puVar2;
  char cVar3;
  undefined4 *puVar4;
  undefined uVar5;
  int local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x6be755;
  iVar1 = *(int *)(param_1_00 + 8);
  puVar4 = (undefined4 *)FUN_00b933f0(&local_18,0);
  puVar2 = (undefined4 *)*puVar4;
  *puVar4 = 0;
  local_8 = 0;
  local_14 = puVar2;
  if (local_18 != (undefined4 *)0x0) {
    (**(code **)*local_18)(1);
  }
  cVar3 = FUN_00b92a20(puVar2,&local_1c,0);
  if ((cVar3 == '\0') || (local_1c != iVar1)) {
    uVar5 = 0;
    FUN_00b940e0(0xf7a1c4ff);
  }
  else {
    uVar5 = 1;
    FUN_006940de(param_1);
  }
  local_8 = 0xffffffff;
  if (local_14 != (undefined4 *)0x0) {
    (**(code **)*local_14)(1);
  }
  return uVar5;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_006be7d7(int param_1)

{
  void *pvVar1;
  undefined *puVar2;
  char cVar3;
  undefined4 uVar4;
  undefined local_20 [4];
  int local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x6be7e3;
  cVar3 = *(int *)(param_1 + 8) == 0x10;
  if ((bool)cVar3) {
    cVar3 = FUN_00b93390();
    if (cVar3 != '\0') goto LAB_006be81a;
    uVar4 = 0x4f1a41a3;
  }
  else {
    uVar4 = 0xf36dc771;
  }
  FUN_00b940e0(uVar4);
LAB_006be81a:
  local_18 = (void *)0x0;
  local_8 = 0;
  if (cVar3 != '\0') {
    pvVar1 = operator_new(0x10);
    if (pvVar1 != (void *)0x0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(0);
    }
    local_18 = pvVar1;
    if (cVar3 != '\0') {
      for (puVar2 = (undefined *)0x0; puVar2 != (undefined *)0x10; puVar2 = puVar2 + 1) {
        *puVar2 = puVar2[local_1c];
      }
      FUN_006bea84(local_20);
      FUN_0046f668();
      if (local_1c != 0) {
        FUN_0040127a();
      }
    }
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_18);
}



char FUN_006be88c(void)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 local_8;
  
  cVar1 = FUN_00bb64e0(&local_8,0);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x6c056973);
  }
  else {
    puVar2 = (undefined4 *)operator_new(4);
    if (puVar2 != (undefined4 *)0x0) {
      *puVar2 = local_8;
    }
    FUN_006be99c();
  }
  return cVar1;
}



char FUN_006be8dc(void)

{
  longlong *plVar1;
  longlong lVar2;
  undefined4 uVar3;
  uint local_10;
  undefined4 local_c;
  char local_5;
  
  local_5 = FUN_00bb64e0(&local_10,0);
  if (local_5 == '\0') {
    uVar3 = 0x2b8994f2;
  }
  else {
    local_5 = FUN_00bb64e0(&local_c,0);
    if (local_5 != '\0') {
      plVar1 = (longlong *)operator_new(8);
      if (plVar1 != (longlong *)0x0) {
        lVar2 = __allmul(local_c,0,0,1);
        *plVar1 = lVar2 + (ulonglong)local_10;
      }
      FUN_006bea10();
      return local_5;
    }
    uVar3 = 0xf66aafd3;
  }
  local_5 = '\0';
  FUN_00b940e0(uVar3);
  return local_5;
}



void FUN_006be974(void)

{
  undefined local_c [4];
  int local_8;
  
  FUN_006ae4de(local_c);
  FUN_0046f668();
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006be99c(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *unaff_ESI;
  undefined4 unaff_EDI;
  int local_14;
  
  puVar3 = (undefined4 *)FUN_006beb0c(unaff_EDI);
  uVar1 = *puVar3;
  *puVar3 = 0;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&stack0xffffffe4);
  if ((undefined4 *)&stack0xffffffe4 != unaff_ESI) {
    *unaff_ESI = unaff_EDI;
  }
  iVar2 = unaff_ESI[1];
  unaff_ESI[1] = uVar1;
  if (iVar2 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006bea10(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *unaff_ESI;
  undefined4 unaff_EDI;
  int local_14;
  
  puVar3 = (undefined4 *)FUN_006beb65(unaff_EDI);
  uVar1 = *puVar3;
  *puVar3 = 0;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&stack0xffffffe4);
  if ((undefined4 *)&stack0xffffffe4 != unaff_ESI) {
    *unaff_ESI = unaff_EDI;
  }
  iVar2 = unaff_ESI[1];
  unaff_ESI[1] = uVar1;
  if (iVar2 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006bea84(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *unaff_ESI;
  undefined4 *local_14;
  
  *param_1 = *unaff_ESI;
  param_1[1] = 0;
  uVar1 = *unaff_ESI;
  local_14 = (undefined4 *)operator_new(0x10);
  if (local_14 == (undefined4 *)0x0) {
    local_14 = (undefined4 *)0x0;
  }
  else {
    uVar2 = *unaff_ESI;
    local_14[1] = 1;
    local_14[2] = 1;
    *local_14 = boost::detail::sp_counted_impl_p<struct_boost::uuids::uuid>::vftable;
    local_14[3] = uVar2;
  }
  *unaff_ESI = 0;
  FUN_004f9c5a();
  if (local_14 != (undefined4 *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar1,uVar1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006beb0c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<unsigned_int>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006beb52(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006beb65(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<unsigned___int64>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006bebab(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void __fastcall FUN_006bebbe(undefined4 *param_1)

{
  *param_1 = WF8266037::W2AC8B1F5::WFF2A6977::vftable;
  FUN_006adf30();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006bebcf(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  int extraout_ECX;
  int iVar3;
  int unaff_EDI;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x6bebdb;
  iVar1 = *(int *)(unaff_EDI + 0x1c);
  iVar2 = FUN_007fa7f7(iVar1,*(undefined4 *)(iVar1 + 4),&param_1);
  iVar3 = *(int *)(unaff_EDI + 0x20);
  if (iVar3 == 0x3fffffff) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"list<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    iVar2 = __CxxThrowException_8(local_58,&DAT_03115554);
    iVar3 = extraout_ECX;
  }
  *(int *)(unaff_EDI + 0x20) = iVar3 + 1;
  *(int *)(iVar1 + 4) = iVar2;
  **(int **)(iVar2 + 4) = iVar2;
  return;
}



uint FUN_006bec46(undefined4 *param_1,int param_2,int param_3)

{
  undefined4 uVar1;
  uint uVar2;
  int **ppiVar3;
  int iVar4;
  undefined4 *puVar5;
  
  do {
    uVar2 = FUN_0041c034();
    if ((char)uVar2 == '\0') {
      return uVar2 & 0xffffff00;
    }
    ppiVar3 = (int **)FUN_006adbc2();
    iVar4 = (**(code **)(**ppiVar3 + 0xc))();
    if (iVar4 == param_2) {
      ppiVar3 = (int **)FUN_006adbc2();
      iVar4 = (**(code **)(**ppiVar3 + 0x10))();
      if (iVar4 == param_3) {
        puVar5 = (undefined4 *)FUN_006adbc2();
        uVar1 = *puVar5;
        *param_1 = uVar1;
        return CONCAT31((int3)((uint)uVar1 >> 8),1);
      }
    }
    FUN_007a741a();
  } while( true );
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006bee26(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 uVar3;
  int local_1c;
  undefined4 *local_18;
  undefined4 *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_18 = (undefined4 *)0x0;
  local_8 = 0;
  cVar2 = FUN_006bef0e();
  if (cVar2 == '\0') {
    FUN_00b940e0(0xa890ead2);
  }
  puVar1 = local_18;
  local_14[0] = (undefined4 *)0x0;
  local_8._0_1_ = 1;
  if (cVar2 == '\0') goto LAB_006beee5;
  cVar2 = FUN_00bb6360(local_14,param_3,0);
  if (cVar2 == '\0') {
    uVar3 = 0x908e8a40;
    cVar2 = '\0';
  }
  else {
    cVar2 = FUN_00bb6760(&local_1c,local_14[0],puVar1);
    if (cVar2 == '\0') {
      uVar3 = 0x5327631f;
    }
    else {
      *(bool *)param_1 = local_1c == 0;
      if (local_1c != 0) goto LAB_006beee5;
      cVar2 = FUN_00bb64e0(param_2,0);
      if (cVar2 != '\0') goto LAB_006beee5;
      uVar3 = 0x833a94e3;
    }
  }
  FUN_00b940e0(uVar3);
LAB_006beee5:
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_14[0] != (undefined4 *)0x0) {
    (**(code **)*local_14[0])(1);
  }
  local_8 = 0xffffffff;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  return cVar2;
}



char FUN_006bef0e(void)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *local_8;
  
  puVar3 = (undefined4 *)FUN_00b933f0(&local_8,0);
  uVar1 = *puVar3;
  *puVar3 = 0;
  FUN_0040c727(uVar1);
  if (local_8 != (undefined4 *)0x0) {
    (**(code **)*local_8)(1);
  }
  cVar2 = FUN_00b93010();
  if (cVar2 == '\0') {
    FUN_00b940e0(0x36644fb4);
  }
  else {
    *(undefined *)local_8 = 0x53;
    *(undefined *)((int)local_8 + 1) = 0x45;
    *(undefined *)((int)local_8 + 2) = 0x44;
    *(undefined *)((int)local_8 + 3) = 0x45;
  }
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_006bef79(int param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined local_b4 [8];
  undefined local_ac [164];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa4;
  local_8 = 0x6bef88;
  basic_string<>(param_2);
  local_8 = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 0x1c));
  local_8._0_1_ = 1;
  FUN_0040c8aa(local_b4);
  local_8._0_1_ = 2;
  FUN_00479b4a(local_ac,param_3);
  uVar1 = FUN_0040c93e();
  local_8._0_1_ = 3;
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_004085a7();
  return param_1;
}



void FUN_006bf009(undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 uVar5;
  undefined *puVar6;
  char *unaff_EBX;
  undefined4 *local_64 [2];
  undefined4 *local_5c [2];
  undefined local_54 [8];
  undefined4 local_4c [3];
  int local_40;
  int local_3c;
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c39512;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_14;
  *unaff_EBX = '\x01';
  puVar3 = (undefined4 *)FUN_00b933f0(local_5c,0,uVar2);
  uVar5 = *puVar3;
  *puVar3 = 0;
  FUN_0040c727(uVar5);
  if (local_5c[0] != (undefined4 *)0x0) {
    (**(code **)*local_5c[0])(1);
  }
  FUN_004398f2();
  local_c = 0;
  if (*unaff_EBX != '\0') {
    basic_string<>(&DAT_00ddccdc);
    local_c._0_1_ = 1;
    cVar1 = FUN_006bf8d2(local_4c,param_1,local_34,4);
    *unaff_EBX = cVar1;
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00401829(1,0);
    if (*unaff_EBX != '\0') {
      *unaff_EBX = (local_3c - local_40) / 0x1c == 4;
    }
  }
  FUN_004494bc(local_40,local_4c);
  cVar1 = *unaff_EBX;
  while (cVar1 != '\0') {
    FUN_004494bc(local_3c,local_4c);
    cVar1 = FUN_00449367(local_54);
    if (cVar1 != '\0') break;
    if (*unaff_EBX != '\0') {
      iVar4 = FUN_0044933b();
      if ((*(int *)(iVar4 + 0x14) == 0) || (iVar4 = FUN_0044933b(), 3 < *(uint *)(iVar4 + 0x14))) {
        cVar1 = '\0';
      }
      else {
        cVar1 = '\x01';
      }
      *unaff_EBX = cVar1;
      if (cVar1 != '\0') {
        uVar5 = FUN_0044933b(0);
        cVar1 = FUN_006bf7c4(local_64,uVar5);
        *unaff_EBX = cVar1;
        if ((cVar1 != '\0') &&
           (cVar1 = '\x01' - ((undefined4 *)0xff < local_64[0]), *unaff_EBX = cVar1, cVar1 != '\0'))
        {
          puVar6 = (undefined *)FUN_00b92870();
          *puVar6 = local_64[0]._0_1_;
        }
      }
    }
    FUN_00698599();
    cVar1 = *unaff_EBX;
  }
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_4c[0]);
}



void FUN_006bf1d3(undefined4 param_1)

{
  undefined uVar1;
  char cVar2;
  uint uVar3;
  undefined4 *puVar4;
  int iVar5;
  undefined4 uVar6;
  undefined *puVar7;
  char *unaff_EBX;
  uint uVar8;
  undefined auStack_e0 [7];
  byte local_d9;
  undefined4 local_d8;
  uint local_d0;
  undefined4 *local_cc [2];
  undefined local_c4 [12];
  int local_b8;
  int local_b4;
  undefined local_ac [12];
  int local_a0;
  int local_9c;
  undefined local_90 [28];
  undefined4 local_74 [3];
  undefined4 local_68;
  undefined4 local_64;
  undefined local_5c [8];
  undefined local_54 [24];
  undefined4 local_3c;
  undefined local_38 [24];
  undefined4 local_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c394d4;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_e0;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff18;
  ExceptionList = &local_14;
  local_d8 = param_1;
  uVar8 = 0;
  *unaff_EBX = '\x01';
  puVar4 = (undefined4 *)FUN_00b933f0(local_cc,0,uVar3);
  uVar6 = *puVar4;
  *puVar4 = 0;
  FUN_0040c727(uVar6);
  if (local_cc[0] != (undefined4 *)0x0) {
    (**(code **)*local_cc[0])(1);
  }
  local_3c = 7;
  FUN_0040180b(0);
  local_c = 0;
  local_20 = 7;
  FUN_0040180b(0);
  local_c._0_1_ = 1;
  if (*unaff_EBX != '\0') {
    iVar5 = FUN_0046bfb4(&DAT_00ddcce0,0);
    if (iVar5 == -1) {
      FID_conflict_assign(local_d8,0,0xffffffff);
      FUN_0042a2f0(&DAT_00ddcce8);
    }
    else {
      uVar6 = FUN_0041b008(local_90,0,iVar5);
      local_c._0_1_ = 2;
      FID_conflict_assign(uVar6,0,0xffffffff);
      local_c._0_1_ = 1;
      FUN_00401829(1,0);
      uVar6 = FUN_0041b008(local_90,iVar5 + 2,0xffffffff);
      local_c._0_1_ = 3;
      FID_conflict_assign(uVar6,0,0xffffffff);
      local_c._0_1_ = 1;
      FUN_00401829(1,0);
    }
    local_d9 = iVar5 != -1;
    if (*unaff_EBX != '\0') {
      iVar5 = FUN_00420f3f(&DAT_00ddccec,0,2);
      if ((iVar5 == -1) && (iVar5 = FUN_00420f3f(&DAT_00ddccf4,0,2), iVar5 == -1)) {
        cVar2 = '\x01';
      }
      else {
        cVar2 = '\0';
      }
      *unaff_EBX = cVar2;
    }
  }
  FUN_004398f2();
  local_c._0_1_ = 4;
  uVar1 = (undefined)local_c;
  local_c._0_1_ = 4;
  if ((*unaff_EBX != '\0') &&
     (iVar5 = FUN_006a4bee(&DAT_00ddccfc), uVar1 = (undefined)local_c, iVar5 != 0)) {
    basic_string<>(&DAT_00ddcd00);
    local_c._0_1_ = 5;
    cVar2 = FUN_006bf8d2(local_c4,local_54,local_90,8);
    *unaff_EBX = cVar2;
    local_c._0_1_ = 4;
    FUN_00401829(1,0);
    uVar1 = (undefined)local_c;
  }
  local_c._0_1_ = uVar1;
  FUN_004398f2();
  local_c._0_1_ = 6;
  uVar1 = (undefined)local_c;
  local_c._0_1_ = 6;
  if (*unaff_EBX != '\0') {
    iVar5 = FUN_006a4bee(&DAT_00ddcd04);
    if (iVar5 != 0) {
      basic_string<>(&DAT_00ddcd08);
      local_c._0_1_ = 7;
      cVar2 = FUN_006bf8d2(local_ac,local_38,local_90,8);
      *unaff_EBX = cVar2;
      local_c._0_1_ = 6;
      FUN_00401829(1,0);
    }
    uVar1 = (undefined)local_c;
    if (*unaff_EBX != '\0') {
      if (local_d9 == 0) {
        cVar2 = (local_b4 - local_b8) / 0x1c == 8;
      }
      else {
        cVar2 = '\x01' - (7U < (uint)((local_9c - local_a0) / 0x1c + (local_b4 - local_b8) / 0x1c));
      }
      *unaff_EBX = cVar2;
    }
  }
  local_c._0_1_ = uVar1;
  FUN_004398f2();
  local_c = CONCAT31(local_c._1_3_,8);
  if (*unaff_EBX != '\0') {
    local_d9 = 0;
    if ((local_b4 - local_b8) / 0x1c != 0) {
      do {
        uVar6 = FUN_0042b490(uVar8);
        FUN_0041b0a1(uVar6);
        local_d9 = local_d9 + 1;
        uVar8 = (uint)local_d9;
      } while (uVar8 < (uint)((local_b4 - local_b8) / 0x1c));
    }
    uVar3 = 0;
    local_d9 = 0;
    if ((local_b4 - local_b8) / -0x1c - (local_9c - local_a0) / 0x1c != -8) {
      do {
        uVar6 = basic_string<>(&DAT_00ddcd0c);
        local_c._0_1_ = 9;
        FUN_0041b0a1(uVar6);
        local_c = CONCAT31(local_c._1_3_,8);
        FUN_00401829(1,0);
        local_d9 = local_d9 + 1;
      } while ((uint)local_d9 < ((local_b4 - local_b8) / -0x1c - (local_9c - local_a0) / 0x1c) + 8U)
      ;
    }
    local_d9 = 0;
    if ((local_9c - local_a0) / 0x1c != 0) {
      do {
        uVar6 = FUN_0042b490(uVar3);
        FUN_0041b0a1(uVar6);
        local_d9 = local_d9 + 1;
        uVar3 = (uint)local_d9;
      } while (uVar3 < (uint)((local_9c - local_a0) / 0x1c));
    }
  }
  FUN_004494bc(local_68,local_74);
  cVar2 = *unaff_EBX;
  while (cVar2 != '\0') {
    FUN_004494bc(local_64,local_74);
    cVar2 = FUN_00449367(local_5c);
    if (cVar2 != '\0') break;
    if (*unaff_EBX != '\0') {
      iVar5 = FUN_0044933b();
      if ((*(int *)(iVar5 + 0x14) == 0) || (iVar5 = FUN_0044933b(), 4 < *(uint *)(iVar5 + 0x14))) {
        cVar2 = '\0';
      }
      else {
        cVar2 = '\x01';
      }
      *unaff_EBX = cVar2;
      if (cVar2 != '\0') {
        uVar6 = FUN_0044933b(1);
        cVar2 = FUN_006bf7c4(&local_d0,uVar6);
        *unaff_EBX = cVar2;
        if ((cVar2 != '\0') &&
           (cVar2 = '\x01' - (0xffff < local_d0), *unaff_EBX = cVar2, cVar2 != '\0')) {
          local_cc[0] = (undefined4 *)(local_d0 >> 8);
          puVar7 = (undefined *)FUN_00b92870();
          *puVar7 = local_cc[0]._0_1_;
          puVar7 = (undefined *)FUN_00b92870();
          *puVar7 = (undefined)local_d0;
        }
      }
    }
    FUN_00698599();
    cVar2 = *unaff_EBX;
  }
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_74[0]);
}



undefined4 FUN_006bf787(undefined2 *param_1)

{
  char cVar1;
  int in_EAX;
  char *unaff_ESI;
  uint local_8;
  
  *unaff_ESI = '\x01';
  cVar1 = FUN_006bf7c4(&local_8,in_EAX + 0x1c,0);
  *unaff_ESI = cVar1;
  if (cVar1 != '\0') {
    cVar1 = '\x01' - (0xffff < local_8);
    *unaff_ESI = cVar1;
    if (cVar1 != '\0') {
      *param_1 = (short)local_8;
    }
  }
  return 1;
}



undefined FUN_006bf7c4(undefined4 param_1,undefined4 param_2,char param_3)

{
  uint uVar1;
  undefined uVar2;
  int unaff_EBX;
  undefined **local_a0 [3];
  undefined local_94 [4];
  uint auStack_90 [17];
  undefined **local_4c;
  void *pvStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c2e4ef;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff58;
  ExceptionList = &local_14;
  local_a0[0] = &PTR_00fad658;
  local_a0[2] = (undefined **)&DAT_00fad660;
  local_4c = std::basic_ios<wchar_t,struct_std::char_traits<wchar_t>_>::vftable;
  local_c = 0;
  uVar2 = 1;
  FUN_0040cd1a(local_a0,local_94);
  local_c = 1;
  *(undefined ***)((int)local_a0 + (int)local_a0[0][1]) =
       std::
       basic_stringstream<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
       vftable;
  FUN_0040cb22(local_94);
  local_c = 2;
  if (param_3 != '\0') {
    *(uint *)((int)auStack_90 + (int)local_a0[0][1]) =
         *(uint *)((int)auStack_90 + (int)local_a0[0][1]) & 0xfffff9ff | 0x800;
  }
  FUN_0040c64f(local_a0,param_1,uVar1);
  uVar1 = *(uint *)((int)local_a0 + *(int *)(unaff_EBX + 4));
  if ((((uVar1 >> 2 & 1) != 0) || ((uVar1 & 6) != 0)) || ((uVar1 & 1) == 0)) {
    uVar2 = 0;
  }
  local_14 = (void *)0xffffffff;
  FUN_004085a7();
  ExceptionList = pvStack_1c;
  return uVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_006bf8d2(int param_1,undefined4 param_2,undefined4 param_3,uint param_4)

{
  int iVar1;
  undefined4 uVar2;
  uint uVar3;
  uint3 uVar4;
  int iVar5;
  undefined local_48 [28];
  undefined local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x6bf8de;
  iVar5 = 0;
  while( true ) {
    iVar1 = FUN_00420df9(param_3,iVar5);
    if (iVar1 == -1) {
      uVar2 = FUN_0041b008(local_48,iVar5,0xffffffff);
      local_8 = 1;
      FUN_0041b0a1(uVar2);
      local_8 = 0xffffffff;
      FUN_00401829(1,0);
    }
    else {
      uVar2 = FUN_0041b008(local_2c,iVar5,iVar1 - iVar5);
      local_8 = 0;
      FUN_0041b0a1(uVar2);
      local_8 = 0xffffffff;
      FUN_00401829(1,0);
      iVar5 = iVar1 + 1;
    }
    uVar3 = (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x1c;
    uVar4 = (uint3)(uVar3 >> 8);
    if (param_4 < uVar3) break;
    if (iVar1 == -1) {
      return CONCAT31(uVar4,1);
    }
  }
  return (uint)uVar4 << 8;
}



void __fastcall FUN_006bfb65(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006bfb6a. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + -0x30) + 0x10))();
  return;
}



void FUN_006bfb6d(void)

{
  FUN_006bfdfd();
  return;
}



void FUN_006bfb78(void)

{
  FUN_006bfe4f();
  return;
}



void __fastcall FUN_006bfb83(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006bfb88. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + -0x30) + 0x14))();
  return;
}



undefined4 __thiscall FUN_006bfb8b(int param_1_00,undefined4 param_1)

{
  (**(code **)(*(int *)(param_1_00 + -0x30) + 0x1c))(param_1,0);
  return param_1;
}



void __fastcall FUN_006bfba5(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006bfbaa. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + -0x30) + 0x20))();
  return;
}



void __fastcall FUN_006bfbad(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006bfbb2. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + -0x30) + 0x28))();
  return;
}



void __fastcall FUN_006bfbe1(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006bfbe6. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 4))();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006bfbe9(undefined4 param_1)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006bfc37(undefined4 param_1)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



void __fastcall FUN_006bfc85(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006bfc8a. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x10))();
  return;
}



void __fastcall FUN_006bfc8d(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006bfc92. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x2c))();
  return;
}



undefined4 __thiscall FUN_006bfc95(int param_1_00,undefined4 param_1)

{
  (**(code **)(**(int **)(param_1_00 + 4) + 0x24))(param_1,0);
  return param_1;
}



undefined4 __thiscall FUN_006bfcaf(int param_1_00,undefined4 param_1)

{
  (**(code **)(**(int **)(param_1_00 + 4) + 0x28))(param_1,0);
  return param_1;
}



void __fastcall FUN_006bfcc9(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006bfcce. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x30))();
  return;
}



void __fastcall FUN_006bfcd1(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006bfcd6. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x34))();
  return;
}



void __fastcall FUN_006bfcd9(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006bfcde. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x38))();
  return;
}



void __fastcall FUN_006bfce1(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006bfce6. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x3c))();
  return;
}



int FUN_006bfce9(undefined4 param_1,uint param_2)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  int iVar3;
  uint uVar4;
  int local_8;
  
  iVar3 = 0;
  uVar4 = 0;
  while( true ) {
    if (param_2 <= uVar4) {
      return 0;
    }
    iVar2 = (**(code **)**(undefined4 **)(in_EAX + 4))(&local_8,param_1,iVar3,param_2 - uVar4);
    if (iVar2 != 0) break;
    iVar3 = iVar3 + local_8;
    uVar4 = uVar4 + local_8;
  }
  cVar1 = (**(code **)(*(int *)(*(int *)(*(int *)(*(int *)(in_EAX + 4) + 4) + 4) + 4 +
                               *(int *)(in_EAX + 4)) + 0x40))();
  if (cVar1 != '\0') {
    return iVar2;
  }
  FUN_00b940e0(0x6acfda25);
  return iVar2;
}



int FUN_006bfd54(undefined4 param_1,uint param_2)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  int iVar3;
  uint uVar4;
  int local_8;
  
  iVar3 = 0;
  uVar4 = 0;
  while( true ) {
    if (param_2 <= uVar4) {
      return 0;
    }
    iVar2 = (**(code **)(**(int **)(in_EAX + 4) + 4))(&local_8,param_1,iVar3,param_2 - uVar4);
    if (iVar2 != 0) break;
    iVar3 = iVar3 + local_8;
    uVar4 = uVar4 + local_8;
  }
  cVar1 = (**(code **)(*(int *)(*(int *)(*(int *)(*(int *)(in_EAX + 4) + 4) + 4) + 4 +
                               *(int *)(in_EAX + 4)) + 0x40))();
  if (cVar1 != '\0') {
    return iVar2;
  }
  FUN_00b940e0(0xa11e2ee3);
  return iVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006bfdfd(void)

{
  int unaff_ESI;
  char local_14;
  
  FUN_0043d406(unaff_ESI + 0x14);
  if (*(char *)(unaff_ESI + 0x10) == '\0') {
    *(undefined *)(unaff_ESI + 0x10) = 1;
    (**(code **)(**(int **)(unaff_ESI + 4) + 0x1c))();
    if (*(int **)(unaff_ESI + 8) != (int *)0x0) {
      (**(code **)(**(int **)(unaff_ESI + 8) + 0x14))();
    }
  }
  if (local_14 != '\0') {
    FUN_00401477();
  }
  return;
}



void FUN_006bfe4f(void)

{
  int unaff_ESI;
  
  if (*(char *)(unaff_ESI + 0x1c) == '\0') {
    *(undefined *)(unaff_ESI + 0x1c) = 1;
    (**(code **)(**(int **)(unaff_ESI + 4) + 0x14))();
    (**(code **)(**(int **)(unaff_ESI + 4) + 0x20))();
    if (*(int **)(unaff_ESI + 8) != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x006bfe73. Too many branches
                    // WARNING: Treating indirect jump as call
      (**(code **)(**(int **)(unaff_ESI + 8) + 0x18))();
      return;
    }
  }
  return;
}



undefined __fastcall FUN_006bfe77(char param_1)

{
  undefined uVar1;
  int unaff_ESI;
  
  FUN_0043d406(unaff_ESI + 0x14);
  uVar1 = *(undefined *)(unaff_ESI + 0x10);
  if (param_1 != '\0') {
    FUN_00401477();
  }
  return uVar1;
}



undefined4 FUN_006bfe9f(void)

{
  char cVar1;
  int in_EAX;
  undefined4 uVar2;
  
  cVar1 = FUN_006bfe77();
  if (cVar1 != '\0') {
    return 1;
  }
  if (*(int **)(in_EAX + 8) != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x006bfeb9. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (**(code **)(**(int **)(in_EAX + 8) + 0x40))();
    return uVar2;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_006bfec0(int *param_1)

{
  int iVar1;
  SOCKET SVar2;
  
  *param_1 = (int)&PTR_02bcf3ec;
  param_1[0x14] = (int)&DAT_02bcf5d8;
  param_1[0x11] = (int)WF8266037::WD747FD9D::W1F596828::vftable;
  param_1[0x13] = (int)WF8266037::WD747FD9D::W7A788709::vftable;
  *(undefined ***)(*(int *)(param_1[0x14] + 4) + 0x50 + (int)param_1) =
       WF8266037::WD747FD9D::W7A788709::vftable;
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 4)) = WF8266037::WD747FD9D::W9F9C1BFE::vftable
  ;
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 8)) = WF8266037::WD747FD9D::W9F9C1BFE::vftable
  ;
  *(int *)(*(int *)(*param_1 + 4) + -4 + (int)param_1) = *(int *)(*param_1 + 4) + -0x28;
  iVar1 = *(int *)(*param_1 + 4);
  param_1[1] = (int)WF8266037::WD747FD9D::W51B2273E::vftable;
  param_1[2] = iVar1 + (int)param_1;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  *(undefined *)(param_1 + 5) = 0;
  *(undefined *)(param_1 + 8) = 0;
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 4)) = WF8266037::WF0E4C8E9::WA941B98E::vftable
  ;
  *(undefined ***)((int)param_1 + *(int *)(*param_1 + 8)) = WF8266037::WF0E4C8E9::WA941B98E::vftable
  ;
  *(int *)(*(int *)(*param_1 + 4) + -4 + (int)param_1) = *(int *)(*param_1 + 4) + -0x44;
  *(int *)(*(int *)(*param_1 + 8) + -4 + (int)param_1) = *(int *)(*param_1 + 8) + -0x4c;
  *(undefined *)(param_1 + 10) = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  iVar1 = FUN_006c07d0();
  param_1[0xf] = iVar1;
  SVar2 = socket(2,1,0);
  param_1[9] = SVar2;
  return param_1;
}



undefined4 * __thiscall FUN_006bffb5(undefined4 *param_1,byte param_2)

{
  undefined4 *puVar1;
  
  puVar1 = param_1 + -0x11;
  FUN_006bfff4();
  param_1[2] = WF8266037::WD747FD9D::W7A788709::vftable;
  *(undefined ***)(*(int *)(param_1[3] + 4) + 0x50 + (int)puVar1) =
       WF8266037::WD747FD9D::W7A788709::vftable;
  *param_1 = WF8266037::WD747FD9D::W1F596828::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006bfff4(int param_1)

{
  int iVar1;
  
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x44) + 4) + -0x44 + param_1) =
       WF8266037::WF0E4C8E9::WA941B98E::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x44) + 8) + -0x44 + param_1) =
       WF8266037::WF0E4C8E9::WA941B98E::vftable;
  iVar1 = *(int *)(*(int *)(param_1 + -0x44) + 4);
  *(int *)(iVar1 + -0x48 + param_1) = iVar1 + -0x44;
  iVar1 = *(int *)(*(int *)(param_1 + -0x44) + 8);
  *(int *)(iVar1 + -0x48 + param_1) = iVar1 + -0x4c;
  FUN_006bfe4f();
  if (*(int *)(param_1 + -0xc) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + -0x14) != 0) {
    FUN_0040127a();
  }
  FUN_006c09b5();
  return;
}



undefined * Catch_All_006c0054(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 2;
  return &DAT_006c0061;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006c0065(int param_1)

{
  int *piVar1;
  int unaff_EBX;
  int unaff_EBP;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EBX + -0x367a0bb1);
  *piVar1 = *piVar1 + param_1;
  if (*piVar1 != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -3) = 0;
  if (*(int *)(unaff_EDI + -0x14) != 0) {
    FUN_0040127a();
  }
  *(undefined4 *)(unaff_EBP + -3) = 0xffffffff;
  FUN_006c09b5();
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006c006c(void)

{
  int *unaff_EBP;
  int iVar1;
  int unaff_EDI;
  bool in_ZF;
  
  iVar1 = *unaff_EBP;
  if (!in_ZF) {
    *unaff_EBP = 0x6c0074;
    FUN_0040127a();
  }
  *(undefined *)(iVar1 + -4) = 0;
  if (*(int *)(unaff_EDI + -0x14) != 0) {
    *unaff_EBP = 0x6c0084;
    FUN_0040127a();
  }
  *(undefined4 *)(iVar1 + -4) = 0xffffffff;
  *unaff_EBP = 0x6c0090;
  FUN_006c09b5();
  *unaff_EBP = 0x6c0095;
  return;
}



void FUN_006c0096(void)

{
  int iVar1;
  undefined4 uVar2;
  WSADATA local_19c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  iVar1 = WSAStartup(2,&local_19c);
  if (iVar1 == 0) {
    if (((char)local_19c.wVersion == '\x02') && ((char)(local_19c.wVersion >> 8) == '\0'))
    goto LAB_006c00f9;
    WSACleanup();
    uVar2 = 0x7d88d57b;
  }
  else {
    uVar2 = 0x24c23150;
  }
  FUN_00b940e0(uVar2);
LAB_006c00f9:
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_006c0106(int param_1)

{
  int *piVar1;
  SOCKET SVar2;
  undefined auStack_44 [4];
  int *local_40;
  undefined auStack_3c [4];
  int iStack_38;
  int local_30;
  sockaddr local_2c;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c32ccb;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_44;
  ExceptionList = &local_14;
  FUN_00694c72(&local_40,DAT_0323f878 ^ (uint)&stack0xffffffb0);
  piVar1 = local_40;
  local_c = 0;
  local_30 = 0x10;
  SVar2 = accept(*(SOCKET *)(param_1 + -0x20),&local_2c,&local_30);
  piVar1[9] = SVar2;
  *(undefined *)(local_40 + 10) = 1;
  iStack_38 = *(int *)(*local_40 + 4) + (int)local_40;
                    // WARNING: Subroutine does not return
  FUN_0043c023(auStack_3c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006c01e5(undefined4 param_1)

{
  char cVar1;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_28 = 0x6c01ff;
  cVar1 = FUN_00b6fbf0();
  local_14 = &local_2c;
  local_2c = param_1;
  if (cVar1 != '\0') {
    local_14 = &local_2c;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&stack0x00000008);
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006c038a(undefined4 param_1)

{
  char cVar1;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_28 = 0x6c03a4;
  cVar1 = FUN_00b6fbf0();
  local_14 = &local_2c;
  local_2c = param_1;
  if (cVar1 != '\0') {
    local_14 = &local_2c;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&stack0x00000008);
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



undefined4 __thiscall FUN_006c0533(int param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  
  iVar2 = listen(*(SOCKET *)(param_1_00 + -0x20),param_1);
  if (iVar2 == 0) {
    uVar3 = 0;
  }
  else {
    cVar1 = (**(code **)(*(int *)(*(int *)(*(int *)(param_1_00 + -0x44) + 4) + -0x44 + param_1_00) +
                        0x40))();
    if (cVar1 == '\0') {
      FUN_00b940e0(0x816e620d);
    }
    uVar3 = 0x102;
  }
  return uVar3;
}



void __fastcall FUN_006c0579(int param_1)

{
  *(undefined *)(param_1 + -0x1c) = 0;
  shutdown(*(SOCKET *)(param_1 + -0x20),2);
  return;
}



void __fastcall FUN_006c0589(int param_1)

{
  closesocket(*(SOCKET *)(param_1 + -0x20));
  return;
}



undefined4 __thiscall FUN_006c0593(int param_1_00,int *param_1,int param_2,int param_3,int param_4)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  
  cVar1 = FUN_00b93390();
  if (cVar1 == '\0') {
    FUN_00b940e0(0x2545c666);
    uVar2 = 1;
  }
  else {
    iVar3 = recv(*(SOCKET *)(param_1_00 + -0x28),(char *)(param_2 + param_3),param_4,0);
    if (iVar3 < 1) {
      if (iVar3 == 0) {
        uVar2 = 0x101;
      }
      else {
        iVar3 = WSAGetLastError();
        cVar1 = (**(code **)(*(int *)(*(int *)(*(int *)(param_1_00 + -0x4c) + 4) + -0x4c +
                                     param_1_00) + 0x40))();
        if (cVar1 == '\0') {
          if (iVar3 == 0x2746) {
            FUN_00b940e0(0xe36e8248);
          }
          else {
            param_2 = FUN_00b74bf0();
            FUN_00b940e0(0x4c102c65);
            FUN_00b940c0(0x4c102c65,&param_2,4);
          }
        }
        uVar2 = 0x102;
      }
    }
    else {
      *param_1 = iVar3;
      uVar2 = 0;
    }
  }
  return uVar2;
}



undefined4 __thiscall FUN_006c0657(int param_1_00,int *param_1,int param_2,int param_3,int param_4)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  
  cVar1 = FUN_00b93390();
  if (cVar1 == '\0') {
    uVar2 = 1;
  }
  else {
    iVar3 = send(*(SOCKET *)(param_1_00 + -0x28),(char *)(param_2 + param_3),param_4,0);
    if (iVar3 < 0) {
      iVar3 = WSAGetLastError();
      cVar1 = (**(code **)(*(int *)(*(int *)(*(int *)(param_1_00 + -0x4c) + 4) + -0x4c + param_1_00)
                          + 0x40))();
      if (cVar1 == '\0') {
        if (iVar3 == 0x2746) {
          FUN_00b940e0(0xd36e8248);
        }
        else {
          param_2 = FUN_00b74bf0();
          FUN_00b940e0(0xd1cd2fad);
          FUN_00b940c0(0xd1cd2fad,&param_2,4);
        }
      }
      uVar2 = 0x102;
    }
    else {
      *param_1 = iVar3;
      uVar2 = 0;
    }
  }
  return uVar2;
}



undefined __fastcall FUN_006c0702(int param_1)

{
  return *(undefined *)(param_1 + -0x1c);
}



void __thiscall FUN_006c0706(int param_1_00,undefined4 *param_1)

{
  *param_1 = *(undefined4 *)(param_1_00 + -0x18);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + -0x14);
}



void __thiscall FUN_006c0722(int param_1_00,undefined4 *param_1)

{
  *param_1 = *(undefined4 *)(param_1_00 + -0x10);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + -0xc);
}



void __fastcall FUN_006c073e(int param_1)

{
  setsockopt(*(SOCKET *)(param_1 + -0x20),0xffff,0x1001,&stack0x00000004,4);
  return;
}



int __fastcall FUN_006c075b(int param_1)

{
  int local_c;
  int local_8;
  
  local_8 = 4;
  local_c = param_1;
  getsockopt(*(SOCKET *)(param_1 + -0x20),0xffff,0x1001,(char *)&local_c,&local_8);
  return local_c;
}



void __fastcall FUN_006c0787(int param_1)

{
  setsockopt(*(SOCKET *)(param_1 + -0x20),0xffff,0x1002,&stack0x00000004,4);
  return;
}



int __fastcall FUN_006c07a4(int param_1)

{
  int local_c;
  int local_8;
  
  local_8 = 4;
  local_c = param_1;
  getsockopt(*(SOCKET *)(param_1 + -0x20),0xffff,0x1002,(char *)&local_c,&local_8);
  return local_c;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * FUN_006c07d0(void)

{
  uint uVar1;
  LONG LVar2;
  void *pvVar3;
  undefined4 *puVar4;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c21192;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if ((_DAT_032f11a8 & 1) == 0) {
    _DAT_032f11a8 = _DAT_032f11a8 | 1;
    DAT_032f02d0 = (undefined4 *)0x0;
    _atexit((_func_4879 *)&LAB_00c74694);
  }
  LVar2 = InterlockedExchangeAdd((LONG *)&DAT_032ef910,0);
  if (LVar2 == 0) {
    FUN_00b9acd0(uVar1);
    local_c = 0;
    LVar2 = InterlockedExchangeAdd((LONG *)&DAT_032ef910,0);
    if ((LVar2 == 0) && (DAT_032f02d0 == (undefined4 *)0x0)) {
      pvVar3 = operator_new(0x14);
      local_c._0_1_ = 1;
      if (pvVar3 == (void *)0x0) {
        puVar4 = (undefined4 *)0x0;
      }
      else {
        puVar4 = (undefined4 *)FUN_00b6fe90(pvVar3);
      }
      local_c = (uint)local_c._1_3_ << 8;
      if ((puVar4 != DAT_032f02d0) && (DAT_032f02d0 != (undefined4 *)0x0)) {
        (**(code **)*DAT_032f02d0)(1);
      }
      DAT_032f02d0 = puVar4;
      InterlockedExchange((LONG *)&DAT_032ef910,1);
    }
    local_c = 0xffffffff;
    FUN_00b9ac60();
  }
  ExceptionList = local_14;
  return DAT_032f02d0;
}



void FUN_006c08c5(void)

{
  FUN_006c073e();
  return;
}



void FUN_006c08cd(void)

{
  FUN_006bfb6d();
  return;
}



void FUN_006c08d8(void)

{
  FUN_006c075b();
  return;
}



void FUN_006c08e0(void)

{
  FUN_006c038a();
  return;
}



void FUN_006c08e8(void)

{
  FUN_006c0533();
  return;
}



void FUN_006c08f0(void)

{
  FUN_006c0702();
  return;
}



void FUN_006c08f8(void)

{
  FUN_006c0106();
  return;
}



void FUN_006c0900(void)

{
  FUN_006c0722();
  return;
}



void FUN_006c0908(void)

{
  FUN_006c01e5();
  return;
}



void FUN_006c0910(void)

{
  FUN_006c0657();
  return;
}



void FUN_006c0918(void)

{
  FUN_008177d2();
  return;
}



void FUN_006c0923(void)

{
  FUN_006c0579();
  return;
}



void FUN_006c092b(void)

{
  FUN_006bfb78();
  return;
}



void FUN_006c0936(void)

{
  FUN_006c0593();
  return;
}



void FUN_006c093e(void)

{
  FUN_006bffb5();
  return;
}



void FUN_006c0946(void)

{
  FUN_006c07a4();
  return;
}



void FUN_006c094e(void)

{
  FUN_006c0787();
  return;
}



void FUN_006c0956(void)

{
  FUN_006c0706();
  return;
}



void FUN_006c095e(void)

{
  FUN_006c0589();
  return;
}



undefined4 * __thiscall FUN_006c0966(undefined4 *param_1_00,byte param_1)

{
  undefined4 *puVar1;
  
  puVar1 = param_1_00 + -10;
  FUN_006c09b5();
  param_1_00[1] = WF8266037::WD747FD9D::W7A788709::vftable;
  *(undefined ***)(*(int *)(param_1_00[2] + 4) + 0x30 + (int)puVar1) =
       WF8266037::WD747FD9D::W7A788709::vftable;
  *param_1_00 = WF8266037::WD747FD9D::W1F596828::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  return puVar1;
}



void FUN_006c09a5(void)

{
  FUN_006c0966();
  return;
}



void FUN_006c09ad(void)

{
  FUN_008177d2();
  return;
}



void __fastcall FUN_006c09b5(int param_1)

{
  int iVar1;
  
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x28) + 4) + -0x28 + param_1) =
       WF8266037::WD747FD9D::W9F9C1BFE::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x28) + 8) + -0x28 + param_1) =
       WF8266037::WD747FD9D::W9F9C1BFE::vftable;
  iVar1 = *(int *)(*(int *)(param_1 + -0x28) + 4);
  *(int *)(iVar1 + -0x2c + param_1) = iVar1 + -0x28;
  FUN_006bdff8();
  return;
}



undefined4 * __thiscall FUN_006c09e6(undefined4 *param_1_00,byte param_1)

{
  undefined4 *puVar1;
  
  puVar1 = param_1_00 + -2;
  *puVar1 = WF8266037::WD747FD9D::W7A788709::vftable;
  *(undefined ***)(*(int *)(param_1_00[-1] + 4) + 4 + (int)puVar1) =
       WF8266037::WD747FD9D::W7A788709::vftable;
  *param_1_00 = WF8266037::WD747FD9D::W1F596828::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  return puVar1;
}



void __fastcall FUN_006c0a19(int param_1)

{
  *(undefined ***)(param_1 + -8) = WF8266037::WD747FD9D::W7A788709::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -4) + 4) + -4 + param_1) =
       WF8266037::WD747FD9D::W7A788709::vftable;
  return;
}



undefined4 * __thiscall FUN_006c0bba(undefined4 *param_1,byte param_2)

{
  FUN_006c0d9d();
  param_1[2] = WF8266037::WD747FD9D::W7A788709::vftable;
  *(undefined ***)((int)param_1 + *(int *)(param_1[3] + 4) + 0xc) =
       WF8266037::WD747FD9D::W7A788709::vftable;
  *param_1 = WF8266037::WD747FD9D::W1F596828::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1 + -0x28);
  }
  return param_1 + -0x28;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_006c0d9d(int param_1)

{
  int iVar1;
  
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0xa0) + 4) + -0xa0 + param_1) =
       WF8266037::WA898D757::WA7E265F1::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0xa0) + 8) + -0xa0 + param_1) =
       WF8266037::WA898D757::WA7E265F1::vftable;
  iVar1 = *(int *)(*(int *)(param_1 + -0xa0) + 4);
  *(int *)(iVar1 + -0xa4 + param_1) = iVar1 + -0xa0;
  iVar1 = *(int *)(*(int *)(param_1 + -0xa0) + 8);
  *(int *)(iVar1 + -0xa4 + param_1) = iVar1 + -0xa8;
  FUN_006bfe4f();
  if (*(int *)(param_1 + -0x10) != 0) {
    FUN_00afb2c0(*(int *)(param_1 + -0x10));
    *(undefined4 *)(param_1 + -0x10) = 0;
  }
  if (*(int *)(param_1 + -8) != 0) {
    FUN_00afa2a0(*(int *)(param_1 + -8));
    *(undefined4 *)(param_1 + -8) = 0;
  }
  FUN_00a7ee70(0);
  FUN_006c0e5a();
  return;
}



undefined * Catch_All_006c0e48(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 7;
  return &DAT_006c0e55;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006c0e5a(void)

{
  undefined4 *unaff_EBX;
  int unaff_EBP;
  int unaff_EDI;
  
  *(undefined *)(unaff_EBP + -4) = 6;
  if (*(undefined4 **)(unaff_EDI + -0x14) != unaff_EBX) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 5;
  if (*(undefined4 **)(unaff_EDI + -0x1c) != unaff_EBX) {
    FUN_0040127a();
  }
  FUN_00688539();
  FUN_00688539();
  *(undefined *)(unaff_EBP + -4) = 2;
  if (*(undefined4 **)(unaff_EDI + -100) != unaff_EBX) {
    (**(code **)**(undefined4 **)(unaff_EDI + -100))(1);
  }
  *(undefined *)(unaff_EBP + -4) = 1;
  if (*(undefined4 **)(unaff_EDI + -0x68) != unaff_EBX) {
    (**(code **)**(undefined4 **)(unaff_EDI + -0x68))(1);
  }
  *(char *)(unaff_EBP + -4) = (char)unaff_EBX;
  if (*(undefined4 **)(unaff_EDI + -0x6c) != unaff_EBX) {
    FUN_0040127a();
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_006c1cf5();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_006c0ecd(void)

{
  uint *puVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int *piVar6;
  uint uVar7;
  uint uVar8;
  undefined local_2c [8];
  undefined4 *local_24;
  int local_20;
  undefined4 *local_1c;
  undefined4 local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x6c0ed9;
  local_18 = 0;
  iVar3 = FUN_00afbd30();
  if (iVar3 == 1) {
    FUN_00a7f7f0();
  }
  else {
    local_18 = 1;
    FUN_00b940e0(0xe6bdf257);
  }
  puVar4 = (undefined4 *)operator_new(0x18);
  local_8 = 0;
  local_1c = puVar4;
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    puVar5 = (undefined4 *)FUN_00418daa(1,0);
    if (puVar5 == (undefined4 *)0x0) {
      puVar5 = (undefined4 *)0x0;
    }
    else {
      *puVar5 = puVar4;
    }
    *puVar4 = puVar5;
    puVar4[3] = 0;
    puVar4[4] = 0;
    puVar4[5] = 0;
  }
  local_8 = 0xffffffff;
  if ((puVar4 != DAT_032ef300) && (DAT_032ef300 != (undefined4 *)0x0)) {
    FUN_006c1ae1(DAT_032ef300);
  }
  DAT_032ef300 = puVar4;
  iVar3 = FUN_00a7f800();
  if (0 < iVar3) {
    do {
      local_14 = iVar3;
      puVar4 = (undefined4 *)operator_new(8);
      if (puVar4 == (undefined4 *)0x0) {
        puVar4 = (undefined4 *)0x0;
      }
      else {
        *puVar4 = 0;
        puVar4[1] = 0;
      }
      local_20 = 0;
      local_8 = 2;
      local_24 = puVar4;
      piVar6 = (int *)FUN_006c1b31(puVar4);
      iVar3 = *piVar6;
      *piVar6 = local_20;
      local_20 = iVar3;
      if (local_1c != (undefined4 *)0x0) {
        FUN_0040127a();
      }
      FUN_007a491c(&local_24,puVar4,puVar4);
      puVar4 = DAT_032ef300;
      local_8 = 3;
      uVar7 = DAT_032ef300[3];
      if (uVar7 == 0) {
        uVar8 = 0;
      }
      else {
        uVar8 = (int)(DAT_032ef300[5] - uVar7) >> 3;
      }
      puVar1 = DAT_032ef300 + 4;
      uVar2 = *puVar1;
      if ((uint)((int)(uVar2 - uVar7) >> 3) < uVar8) {
        uVar7 = FUN_00478fca(&local_24);
        *puVar1 = uVar7;
      }
      else {
        if (uVar2 < uVar7) {
          FUN_00a3fb10();
        }
        FUN_00793c1b(local_2c,&local_24,*puVar4,uVar2);
      }
      local_8 = 0xffffffff;
      if (local_20 != 0) {
        FUN_0040127a();
      }
      local_14 = local_14 + -1;
      iVar3 = local_14;
    } while (local_14 != 0);
  }
  FUN_00a7f960(&LAB_006c1057);
  FUN_00a7fa40(&DAT_006c10a1);
  FUN_00a7ee70(0);
  return local_18;
}



void FUN_006c10a7(void)

{
  char cVar1;
  int **ppiVar2;
  int iVar3;
  int local_28 [5];
  void *local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  uStack_10 = &LAB_00c39454;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_c = 0;
  ppiVar2 = (int **)FUN_00492da1();
  local_c = CONCAT31(local_c._1_3_,1);
  iVar3 = (**(code **)(**ppiVar2 + 4))();
  uStack_10 = (undefined *)((uint)uStack_10 & 0xffffff00);
  if (local_28[0] != 0) {
    FUN_0040127a();
  }
  if (iVar3 != 0) {
    FUN_00b940e0();
  }
  uStack_10._0_1_ = 2;
  if (iVar3 == 0) {
    FUN_006bdda2();
    uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,3);
                    // WARNING: Subroutine does not return
    FUN_0043c023(local_28);
  }
  uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,5);
  if (iVar3 == 0) {
    cVar1 = FUN_006c46f3();
    if (cVar1 == '\0') {
      FUN_00b940e0();
    }
    else {
      uRam00000094 = 0;
      uRam00000090 = FUN_00afb000();
      FUN_00af9a00(uRam00000090);
      iVar3 = FUN_00afbcd0();
      if (iVar3 == 1) {
                    // WARNING: Subroutine does not return
        FUN_0043c023();
      }
      FUN_00afbab0();
      FUN_00b74bf0();
      FUN_00b940e0(0x95a875f2);
      FUN_00b940c0(0x95a875f2);
    }
  }
  FUN_00a7ee70();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006c1475(undefined4 param_1)

{
  undefined4 local_44;
  undefined4 local_40;
  undefined4 *local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0;
  local_40 = 0x6c1496;
  FUN_00492da1();
  local_1c = &local_44;
  local_8 = CONCAT31(local_8._1_3_,1);
  local_44 = param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



undefined4 __thiscall
FUN_006c16dc(int param_1_00,int *param_1,int param_2,int param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  
  cVar1 = FUN_00b93390();
  if (cVar1 == '\0') {
    FUN_00b940e0(0x17731b10);
    uVar2 = 1;
  }
  else {
    iVar3 = FUN_00af9b40(*(undefined4 *)(param_1_00 + -0x18),param_2 + param_3,param_4);
    if (iVar3 < 1) {
      if (iVar3 == 0) {
        uVar2 = 0x101;
      }
      else {
        cVar1 = (**(code **)(*(int *)(*(int *)(*(int *)(param_1_00 + -0xa8) + 4) + -0xa8 +
                                     param_1_00) + 0x40))();
        if (cVar1 == '\0') {
          FUN_00afbab0(*(undefined4 *)(param_1_00 + -0x18),iVar3);
          param_2 = FUN_00b74bf0();
          FUN_00b940e0(0xa824d8cf);
          FUN_00b940c0(0xa824d8cf,&param_2,4);
        }
        uVar2 = 0x201;
      }
    }
    else {
      *param_1 = iVar3;
      uVar2 = 0;
    }
    FUN_00a7ee70(0);
  }
  return uVar2;
}



undefined4 __thiscall
FUN_006c1796(int param_1_00,int *param_1,int param_2,int param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  
  cVar1 = FUN_00b93390();
  if (cVar1 == '\0') {
    FUN_00b940e0(0x96fc3fb3);
    uVar2 = 1;
  }
  else {
    iVar3 = FUN_00af9be0(*(undefined4 *)(param_1_00 + -0x18),param_2 + param_3,param_4);
    if (iVar3 < 0) {
      cVar1 = (**(code **)(*(int *)(*(int *)(*(int *)(param_1_00 + -0xa8) + 4) + -0xa8 + param_1_00)
                          + 0x40))();
      if (cVar1 == '\0') {
        FUN_00afbab0(*(undefined4 *)(param_1_00 + -0x18),iVar3);
        param_2 = FUN_00b74bf0();
        FUN_00b940e0(0xfcb2a462);
        FUN_00b940c0(0xfcb2a462,&param_2,4);
      }
      uVar2 = 0x201;
    }
    else {
      *param_1 = iVar3;
      uVar2 = 0;
    }
    FUN_00a7ee70(0);
  }
  return uVar2;
}



bool __thiscall FUN_006c19a5(undefined4 param_1_00,int *param_1)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  int iVar3;
  bool bVar4;
  undefined4 uVar5;
  
  cVar1 = FUN_00b93390();
  if (cVar1 == '\0') {
    FUN_00b940e0(0x8fe12159);
    bVar4 = false;
    goto LAB_006c1a2b;
  }
  iVar2 = FUN_00a82d50(param_1_00,*(undefined4 *)(in_EAX + 8));
  bVar4 = iVar2 != 0;
  if (bVar4) {
    iVar3 = FUN_00a831c0(iVar2,0,0,0);
    bVar4 = iVar3 != 0;
    *param_1 = iVar3;
    if (!bVar4) {
      uVar5 = 0xb753b2b9;
      goto LAB_006c1a1a;
    }
  }
  else {
    uVar5 = 0x2febffa2;
LAB_006c1a1a:
    FUN_00b940e0(uVar5);
  }
  if (iVar2 != 0) {
    FUN_00a83270(iVar2);
  }
LAB_006c1a2b:
  FUN_00a7ee70(0);
  return bVar4;
}



bool __thiscall FUN_006c1a3c(int param_1_00,int *param_1)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  int iVar3;
  bool bVar4;
  undefined4 uVar5;
  
  cVar1 = FUN_00b93390();
  if (cVar1 == '\0') {
    FUN_00b940e0(0xb371478e);
    bVar4 = false;
    goto LAB_006c1ad0;
  }
  iVar2 = FUN_00a82d50(param_1_00,*(undefined4 *)(param_1_00 + 8));
  bVar4 = iVar2 != 0;
  if (bVar4) {
    if (*(uint *)(in_EAX + 0x18) < 0x10) {
      iVar3 = in_EAX + 4;
    }
    else {
      iVar3 = *(int *)(in_EAX + 4);
    }
    iVar3 = FUN_00a83950(iVar2,0,0,iVar3);
    bVar4 = iVar3 != 0;
    *param_1 = iVar3;
    if (!bVar4) {
      uVar5 = 0x30407b9d;
      goto LAB_006c1abf;
    }
  }
  else {
    uVar5 = 0xf5e029fe;
LAB_006c1abf:
    FUN_00b940e0(uVar5);
  }
  if (iVar2 != 0) {
    FUN_00a83270(iVar2);
  }
LAB_006c1ad0:
  FUN_00a7ee70(0);
  return bVar4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006c1ae1(undefined4 *param_1)

{
  if (param_1[3] != 0) {
    FUN_0043a4e8(param_1[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006c1b31(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_boost::mutex>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006c1b77(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_00417fe6();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_006c1b97(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_00417fe6();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void FUN_006c1baf(void)

{
  FUN_00817977();
  return;
}



void FUN_006c1bba(void)

{
  FUN_006bfba5();
  return;
}



void FUN_006c1bc5(void)

{
  FUN_006bfbad();
  return;
}



void FUN_006c1bd0(void)

{
  FUN_0081795d();
  return;
}



void FUN_006c1bdb(void)

{
  FUN_0081797f();
  return;
}



void FUN_006c1be6(void)

{
  FUN_006bfb6d();
  return;
}



void FUN_006c1bf1(void)

{
  FUN_006c16dc();
  return;
}



void FUN_006c1bf9(void)

{
  FUN_006bfb65();
  return;
}



void FUN_006c1c04(void)

{
  FUN_006c0bba();
  return;
}



void FUN_006c1c0c(void)

{
  FUN_006bfb83();
  return;
}



void FUN_006c1c17(void)

{
  FUN_006bfb8b();
  return;
}



void FUN_006c1c22(void)

{
  FUN_008178c1();
  return;
}



void FUN_006c1c2d(void)

{
  FUN_006c1475();
  return;
}



void FUN_006c1c35(void)

{
  FUN_007a491c();
  return;
}



void FUN_006c1c40(void)

{
  FUN_00817987();
  return;
}



void FUN_006c1c4b(void)

{
  FUN_006c10a7();
  return;
}



void FUN_006c1c53(void)

{
  FUN_006bfb78();
  return;
}



void FUN_006c1c5e(void)

{
  FUN_006c1796();
  return;
}



undefined4 * __thiscall FUN_006c1c66(undefined4 *param_1_00,byte param_1)

{
  undefined4 *puVar1;
  
  puVar1 = param_1_00 + -0xd;
  FUN_006c1cf5();
  param_1_00[1] = WF8266037::WD747FD9D::W7A788709::vftable;
  *(undefined ***)(*(int *)(param_1_00[2] + 4) + 0x3c + (int)puVar1) =
       WF8266037::WD747FD9D::W7A788709::vftable;
  *param_1_00 = WF8266037::WD747FD9D::W1F596828::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  return puVar1;
}



void FUN_006c1ca5(void)

{
  FUN_006c1c66();
  return;
}



void FUN_006c1cad(void)

{
  FUN_008178c1();
  return;
}



void FUN_006c1cb5(void)

{
  FUN_0081790f();
  return;
}



void FUN_006c1cbd(void)

{
  FUN_006bfb65();
  return;
}



void FUN_006c1cc5(void)

{
  FUN_007a491c();
  return;
}



void FUN_006c1ccd(void)

{
  FUN_006bfb83();
  return;
}



void FUN_006c1cd5(void)

{
  FUN_006bfba5();
  return;
}



void FUN_006c1cdd(void)

{
  FUN_00817977();
  return;
}



void FUN_006c1ce5(void)

{
  FUN_006bfbad();
  return;
}



void FUN_006c1ced(void)

{
  FUN_00817987();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006c1cf5(int param_1)

{
  int iVar1;
  
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x34) + 4) + -0x34 + param_1) =
       WF8266037::WD747FD9D::W190D634B::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x34) + 8) + -0x34 + param_1) =
       WF8266037::WD747FD9D::W190D634B::vftable;
  iVar1 = *(int *)(*(int *)(param_1 + -0x34) + 4);
  *(int *)(iVar1 + -0x38 + param_1) = iVar1 + -0x34;
  FUN_006bdff8();
  FUN_006bdfc9();
  return;
}



undefined4 * __thiscall FUN_006c1e5a(undefined4 *param_1_00,byte param_1)

{
  undefined4 *puVar1;
  
  puVar1 = param_1_00 + -0x1a;
  FUN_006c1e99();
  param_1_00[2] = WF8266037::WD747FD9D::W7A788709::vftable;
  *(undefined ***)(*(int *)(param_1_00[3] + 4) + 0x74 + (int)puVar1) =
       WF8266037::WD747FD9D::W7A788709::vftable;
  *param_1_00 = WF8266037::WD747FD9D::W1F596828::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006c1e99(int param_1)

{
  int iVar1;
  
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x68) + 4) + -0x68 + param_1) =
       WF8266037::WD6768623::W45D05323::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x68) + 8) + -0x68 + param_1) =
       WF8266037::WD6768623::W45D05323::vftable;
  iVar1 = *(int *)(*(int *)(param_1 + -0x68) + 4);
  *(int *)(iVar1 + -0x6c + param_1) = iVar1 + -0x68;
  iVar1 = *(int *)(*(int *)(param_1 + -0x68) + 8);
  *(int *)(iVar1 + -0x6c + param_1) = iVar1 + -0x70;
  FUN_006bfe4f();
  *(undefined ***)(param_1 + -0xc) = WF8266037::WD747FD9D::WED1671B2::vftable;
  FUN_004017b2(1,0);
  if (*(int *)(param_1 + -0x30) != 0) {
    FUN_0040127a();
  }
  FUN_006c1cf5();
  return;
}



void Catch_All_006c1f26(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_006c1f30(void)

{
  FUN_00b940e0(0x3e590354);
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_006c1f48(undefined4 param_1,int param_2)

{
  FUN_00b940e0(0xf90efa73);
  if (param_2 != 0) {
    FUN_0040127a();
  }
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_006c1f83(int param_1)

{
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 *local_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0;
  local_38 = 0x6c1fa0;
  FUN_00492da1();
  local_24 = &local_3c;
  local_8 = CONCAT31(local_8._1_3_,1);
  local_3c = *(undefined4 *)(param_1 + -0x34);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + -0x30);
}



undefined4 FUN_006c211f(void)

{
  FUN_00b940e0(0x19a02aa8);
  return 1;
}



void __fastcall FUN_006c2137(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006c213c. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)**(undefined4 **)(param_1 + -0x40))();
  return;
}



void __fastcall FUN_006c213e(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006c2143. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + -0x40) + 4))();
  return;
}



bool FUN_006c24f3(void)

{
  char cVar1;
  bool bVar2;
  undefined4 uVar3;
  
  cVar1 = FUN_00b92850();
  if (cVar1 == '\0') {
    cVar1 = FUN_00b92850();
    bVar2 = cVar1 == 'Z';
    if (bVar2) {
      return bVar2;
    }
    uVar3 = 0x3dd74180;
  }
  else {
    uVar3 = 0x143f7899;
    bVar2 = false;
  }
  FUN_00b940e0(uVar3);
  return bVar2;
}



void FUN_006c2538(void)

{
  FUN_006bfb78();
  return;
}



void FUN_006c2543(void)

{
  FUN_006c211f();
  return;
}



void FUN_006c254b(void)

{
  FUN_006c1f30();
  return;
}



void FUN_006c2553(void)

{
  FUN_00817977();
  return;
}



void FUN_006c255e(void)

{
  FUN_006bfba5();
  return;
}



void FUN_006c2569(void)

{
  FUN_006bfbad();
  return;
}



void FUN_006c2574(void)

{
  FUN_0081795d();
  return;
}



void FUN_006c257f(void)

{
  FUN_006c1f48();
  return;
}



void FUN_006c2587(void)

{
  FUN_006c213e();
  return;
}



void FUN_006c258f(void)

{
  FUN_007a491c();
  return;
}



void FUN_006c259a(void)

{
  FUN_0081797f();
  return;
}



void FUN_006c25a5(void)

{
  FUN_006bfb6d();
  return;
}



void FUN_006c25b0(void)

{
  FUN_006bfb83();
  return;
}



void FUN_006c25bb(void)

{
  FUN_006c2137();
  return;
}



void FUN_006c25c3(void)

{
  FUN_006c1e5a();
  return;
}



void FUN_006c25cb(void)

{
  FUN_006bfb8b();
  return;
}



void FUN_006c25d6(void)

{
  FUN_00817987();
  return;
}



void FUN_006c25e1(void)

{
  FUN_006c1f83();
  return;
}



undefined4 * __thiscall FUN_006c2724(undefined4 *param_1_00,byte param_1)

{
  FUN_006c276f();
  param_1_00[2] = WF8266037::WD747FD9D::W7A788709::vftable;
  *(undefined ***)((int)param_1_00 + *(int *)(param_1_00[3] + 4) + 0xc) =
       WF8266037::WD747FD9D::W7A788709::vftable;
  *param_1_00 = WF8266037::WD747FD9D::W1F596828::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -0x24);
  }
  return param_1_00 + -0x24;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_006c276f(int param_1)

{
  int iVar1;
  
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x90) + 4) + -0x90 + param_1) =
       WF8266037::W1173AF1C::WC99D317C::vftable;
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x90) + 8) + -0x90 + param_1) =
       WF8266037::W1173AF1C::WC99D317C::vftable;
  iVar1 = *(int *)(*(int *)(param_1 + -0x90) + 4);
  *(int *)(iVar1 + -0x94 + param_1) = iVar1 + -0x90;
  iVar1 = *(int *)(*(int *)(param_1 + -0x90) + 8);
  *(int *)(iVar1 + -0x94 + param_1) = iVar1 + -0x98;
  FUN_006bfe4f();
  *(undefined ***)(param_1 + -0xc) = WF8266037::WD747FD9D::WED1671B2::vftable;
  FUN_00688539();
  FUN_00688539();
  if (*(int *)(param_1 + -0x58) != 0) {
    FUN_0040127a();
  }
  FUN_006c1cf5();
  return;
}



void Catch_All_006c281f(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_006c2829(void)

{
  FUN_00b940e0(0x608ccf35);
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_006c2841(undefined4 param_1,int param_2)

{
  FUN_00b940e0(0x7dbf5be);
  if (param_2 != 0) {
    FUN_0040127a();
  }
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_006c287c(int param_1)

{
  undefined4 local_34;
  undefined4 local_30;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0;
  local_30 = 0x6c289c;
  FUN_00492da1();
  local_14 = &local_34;
  local_8 = CONCAT31(local_8._1_3_,1);
  local_34 = *(undefined4 *)(param_1 + -0x5c);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + -0x58);
}



undefined4 FUN_006c29a6(void)

{
  FUN_00b940e0(0x8780f20f);
  return 1;
}



void __fastcall FUN_006c29be(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006c29c3. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)**(undefined4 **)(param_1 + -0x68))();
  return;
}



void __fastcall FUN_006c29c5(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x006c29ca. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + -0x68) + 4))();
  return;
}



char __fastcall FUN_006c3096(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  char cVar3;
  undefined local_84 [4];
  undefined4 uStack_80;
  undefined4 **local_7c;
  undefined4 *puStack_78;
  uint uStack_74;
  undefined local_5e;
  undefined local_5d;
  undefined4 *local_5c;
  undefined4 *local_58;
  undefined4 *local_54;
  undefined local_50 [60];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c393a3;
  local_14 = ExceptionList;
  uStack_74 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_14;
  cVar3 = (-(uint)(*(char *)(param_1 + 0x40) != '\0') & 0x6a1cd8) != 0;
  if ((bool)cVar3) {
    cVar3 = '\x01' - (0xff < *(uint *)(param_1 + 0x58));
    if (cVar3 == '\0') {
      puStack_78 = (undefined4 *)0x27193542;
      goto LAB_006c30fe;
    }
  }
  else {
    puStack_78 = (undefined4 *)0xc70d656e;
LAB_006c30fe:
    local_7c = (undefined4 **)0x6c3103;
    FUN_00b940e0();
  }
  local_54 = (undefined4 *)0x0;
  local_c = 0;
  if (cVar3 != '\0') {
    puStack_78 = (undefined4 *)0x0;
    local_7c = &local_54;
    uStack_80 = 0x6c3120;
    cVar3 = FUN_00bb62e0();
    if (cVar3 == '\0') {
      puStack_78 = (undefined4 *)0x8c0fd44e;
      cVar3 = '\0';
    }
    else {
      cVar3 = (-(uint)(*(char *)(param_1 + 0x60) != '\0') & 0x6a1cd8) != 0;
      if ((bool)cVar3) {
        cVar3 = '\x01' - (0xff < *(uint *)(param_1 + 0x78));
        if (cVar3 != '\0') goto LAB_006c3174;
        puStack_78 = (undefined4 *)0xe4c913c;
      }
      else {
        puStack_78 = (undefined4 *)0x14eeb371;
      }
    }
    local_7c = (undefined4 **)0x6c3173;
    FUN_00b940e0();
  }
LAB_006c3174:
  local_58 = (undefined4 *)0x0;
  local_c._0_1_ = 1;
  if (cVar3 != '\0') {
    local_7c = &local_58;
    puStack_78 = (undefined4 *)0x0;
    uStack_80 = 0x6c3191;
    cVar3 = FUN_00bb62e0();
  }
  puStack_78 = (undefined4 *)local_50;
  local_7c = (undefined4 **)0x6c319f;
  FUN_00b72ec0();
  puVar2 = local_54;
  puVar1 = local_58;
  local_c._0_1_ = 2;
  if (cVar3 == '\0') goto LAB_006c326d;
  local_5e = (undefined)local_54[2];
  puStack_78 = (undefined4 *)0x1;
  local_5d = (undefined)local_58[2];
  local_5c = (undefined4 *)local_84;
  local_84[0] = 0;
  local_7c = (undefined4 **)&DAT_00fac8e5;
  cVar3 = FUN_00b74490();
  if (cVar3 == '\0') {
LAB_006c3240:
    cVar3 = '\0';
    puStack_78 = (undefined4 *)0xd57c1c3a;
  }
  else {
    puStack_78 = (undefined4 *)0x1;
    local_5c = (undefined4 *)local_84;
    local_7c = (undefined4 **)&local_5e;
    local_84[0] = 0;
    cVar3 = FUN_00b74490();
    if (cVar3 == '\0') goto LAB_006c3240;
    puStack_78 = puVar2;
    local_7c = (undefined4 **)0x6c3210;
    cVar3 = FUN_00bb13e0();
    if (cVar3 == '\0') goto LAB_006c3240;
    puStack_78 = (undefined4 *)0x1;
    local_5c = (undefined4 *)local_84;
    local_7c = (undefined4 **)&local_5d;
    local_84[0] = 0;
    cVar3 = FUN_00b74490();
    if (cVar3 == '\0') goto LAB_006c3240;
    puStack_78 = puVar1;
    local_7c = (undefined4 **)0x6c323b;
    cVar3 = FUN_00bb13e0();
    if (cVar3 == '\0') goto LAB_006c3240;
    puStack_78 = (undefined4 *)0x6c3257;
    cVar3 = FUN_00b74440();
    if (cVar3 != '\0') goto LAB_006c326d;
    puStack_78 = (undefined4 *)0x7dbc8fc0;
  }
  local_7c = (undefined4 **)0x6c326c;
  FUN_00b940e0();
LAB_006c326d:
  local_5c = (undefined4 *)0x0;
  local_c._0_1_ = 3;
  if (cVar3 != '\0') {
    puStack_78 = (undefined4 *)0xffffffff;
    local_7c = (undefined4 **)0x6c328a;
    cVar3 = FUN_00bb1450();
    if (cVar3 == '\0') {
      puStack_78 = (undefined4 *)0x67a5d42e;
      local_7c = (undefined4 **)0x6c32a0;
      FUN_00b940e0();
    }
    else {
      puStack_78 = (undefined4 *)0x6c32af;
      FUN_005d06ce();
    }
  }
  local_c._0_1_ = 2;
  if (local_5c != (undefined4 *)0x0) {
    puStack_78 = (undefined4 *)0x1;
    local_7c = (undefined4 **)0x6c32c2;
    (**(code **)*local_5c)();
  }
  local_c._0_1_ = 1;
  puStack_78 = (undefined4 *)0x6c32d0;
  FUN_00b72d90();
  local_c = (uint)local_c._1_3_ << 8;
  if (local_58 != (undefined4 *)0x0) {
    puStack_78 = (undefined4 *)0x1;
    local_7c = (undefined4 **)0x6c32e3;
    (**(code **)*local_58)();
  }
  local_c = 0xffffffff;
  if (local_54 != (undefined4 *)0x0) {
    puStack_78 = (undefined4 *)0x1;
    local_7c = (undefined4 **)0x6c32f6;
    (**(code **)*local_54)();
  }
  ExceptionList = local_14;
  return cVar3;
}



void FUN_006c37bc(void)

{
  FUN_006bfb8b();
  return;
}



void FUN_006c37c7(void)

{
  FUN_007a491c();
  return;
}



void FUN_006c37d2(void)

{
  FUN_006c29be();
  return;
}



void FUN_006c37da(void)

{
  FUN_00817987();
  return;
}



void FUN_006c37e5(void)

{
  FUN_006c2724();
  return;
}



void FUN_006c37ed(void)

{
  FUN_006bfb78();
  return;
}



void FUN_006c37f8(void)

{
  FUN_006c287c();
  return;
}



void FUN_006c3800(void)

{
  FUN_006c29a6();
  return;
}



void FUN_006c3808(void)

{
  FUN_00817977();
  return;
}



void FUN_006c3813(void)

{
  FUN_006bfba5();
  return;
}



void FUN_006c381e(void)

{
  FUN_006bfbad();
  return;
}



void FUN_006c3829(void)

{
  FUN_0081795d();
  return;
}



void FUN_006c3834(void)

{
  FUN_006c2829();
  return;
}



void FUN_006c383c(void)

{
  FUN_0081797f();
  return;
}



void FUN_006c3847(void)

{
  FUN_006bfb6d();
  return;
}



void FUN_006c3852(void)

{
  FUN_006c2841();
  return;
}



void FUN_006c385a(void)

{
  FUN_006c29c5();
  return;
}



void FUN_006c3862(void)

{
  FUN_006bfb83();
  return;
}



void __fastcall FUN_006c3a74(undefined4 param_1)

{
  FUN_00b72bf0(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_006c3a81(int param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 3;
  if (*(int *)(param_1 + 0xb0) != 0) {
    auStack_24[0] = 0x6c3aa6;
    FUN_0040127a();
  }
  auStack_24[0] = 0x6c3aae;
  FUN_0042bdb1();
  auStack_24[0] = 0x6c3ab6;
  FUN_00417fe6();
  auStack_24[0] = 0x6c3abe;
  FUN_00417fe6();
  uStack_8 = 0xffffffff;
  puVar1 = auStack_24;
  auStack_24[0] = 0x6c3ac9;
  FUN_00b72bf0();
  puVar1[-1] = 0x6c3ace;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_006c3a81(int param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 3;
  if (*(int *)(param_1 + 0xb0) != 0) {
    auStack_24[0] = 0x6c3aa6;
    FUN_0040127a();
  }
  auStack_24[0] = 0x6c3aae;
  FUN_0042bdb1();
  auStack_24[0] = 0x6c3ab6;
  FUN_00417fe6();
  auStack_24[0] = 0x6c3abe;
  FUN_00417fe6();
  local_8 = 0xffffffff;
  puVar1 = auStack_24;
  auStack_24[0] = 0x6c3ac9;
  FUN_00b72bf0();
  puVar1[-1] = 0x6c3ace;
  return;
}



undefined * Catch_All_006c3b5c(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 8;
  return &LAB_006c3b69;
}



// WARNING: Removing unreachable block (ram,0x006c3d9b)
// WARNING: Removing unreachable block (ram,0x006c3dad)

int __fastcall FUN_006c3c3a(int param_1)

{
  int **ppiVar1;
  int iVar2;
  int local_28;
  void *pvStack_18;
  void *local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  uStack_10 = &LAB_00c5daec;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_c = 0;
  ppiVar1 = (int **)FUN_00492da1();
  local_c = CONCAT31(local_c._1_3_,1);
  iVar2 = (**(code **)(**ppiVar1 + 4))();
  uStack_10 = (undefined *)((uint)uStack_10 & 0xffffff00);
  if (local_28 != 0) {
    FUN_0040127a();
  }
  if (iVar2 != 0) {
    FUN_00b940e0();
  }
  uStack_10._0_1_ = 2;
  if (iVar2 == 0) {
    FUN_006bdda2();
    uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,3);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + -0x10);
  }
  ExceptionList = pvStack_18;
  return iVar2;
}



void FUN_006c3eb6(void)

{
  FUN_00b72ae0();
  FUN_00b72ae0();
  return;
}



uint __thiscall FUN_006c3ed3(int param_1_00,int *param_1)

{
  char cVar1;
  int iVar2;
  uint local_2c;
  char local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58823;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_0043d406();
  local_c = 0;
  cVar1 = FUN_00b93010();
  if (cVar1 == '\0') {
    FUN_00b940e0();
  }
  local_2c = (uint)(cVar1 == '\0');
  iVar2 = 0;
  if (local_2c == 0) {
    while (iVar2 == 0) {
      local_2c = *(uint *)(param_1_00 + -0x11c);
      if (local_2c != 0) goto LAB_006c3fa0;
      iVar2 = FUN_00b6f3f0();
      if (iVar2 != 0) break;
      FUN_00453ca3();
    }
    *param_1 = iVar2;
  }
LAB_006c3fa0:
  local_c = 0xffffffff;
  if (local_1c != '\0') {
    FUN_00401477();
  }
  ExceptionList = local_14;
  return local_2c;
}



int __thiscall
FUN_006c3fcd(int param_1_00,uint *param_1,undefined4 param_2,int param_3,uint param_4)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  uint uVar4;
  int local_44;
  undefined4 *local_40;
  int local_3c;
  int local_38;
  undefined4 *local_34 [2];
  char local_2c;
  undefined **local_28;
  undefined4 local_24;
  undefined local_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c3e439;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  local_44 = 0;
  *param_1 = 0;
  local_38 = param_3;
  local_3c = param_1_00;
  do {
    if (param_4 <= *param_1) {
      ExceptionList = local_14;
      return local_44;
    }
    uVar4 = param_4 - *param_1;
    if (0x10000 < uVar4) {
      uVar4 = 0x10000;
    }
    local_34[0] = (undefined4 *)0x0;
    local_c = 0;
    if ((local_44 == 0) && (cVar1 = FUN_00bb6360(local_34,param_2,local_38,uVar2), cVar1 == '\0')) {
      local_44 = 1;
      FUN_00b940e0(0xcb86a1ee);
      param_1_00 = local_3c;
    }
    local_40 = (undefined4 *)0x0;
    local_24 = 2;
    local_20 = 0;
    local_28 = WF8266037::W188DADF7::WCAF4A44D::vftable;
    local_c._0_1_ = 2;
    puVar3 = (undefined4 *)0x0;
    local_1c = uVar4;
    if (local_44 == 0) {
      cVar1 = FUN_006c4e50(&local_40,local_34[0],uVar4,&local_28);
      if (cVar1 == '\0') {
        local_44 = 1;
        FUN_00b940e0(0x2edc2c96);
        puVar3 = local_40;
        param_1_00 = local_3c;
      }
      else {
        FUN_0043d406(param_1_00 + -0xe4);
        puVar3 = local_40;
        local_c = CONCAT31(local_c._1_3_,3);
        local_44 = FUN_006bfd54(local_40,local_40[2]);
        if ((local_44 != 0) &&
           (cVar1 = (**(code **)(*(int *)(*(int *)(*(int *)(param_1_00 + -0x204) + 4) + -0x204 +
                                         param_1_00) + 0x40))(), cVar1 == '\0')) {
          FUN_00b940e0(0x6361ab9a);
          param_1_00 = local_3c;
        }
        local_c._0_1_ = 2;
        if (local_2c != '\0') {
          FUN_00401477();
        }
        if (local_44 == 0) {
          local_38 = local_38 + uVar4;
          *param_1 = *param_1 + uVar4;
        }
      }
    }
    local_28 = WF8266037::W188DADF7::W8C51B270::vftable;
    local_c = (uint)local_c._1_3_ << 8;
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
    local_c = 0xffffffff;
    if (local_34[0] != (undefined4 *)0x0) {
      (**(code **)*local_34[0])(1);
    }
  } while (local_44 == 0);
  ExceptionList = local_14;
  return local_44;
}



void FUN_006c41ad(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = WF8266037::W188DADF7::W8C51B270::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_006c41b4(int param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  char cVar2;
  int *piVar3;
  undefined **local_34;
  undefined4 local_30;
  undefined local_2c;
  undefined4 local_28;
  undefined4 *local_20;
  undefined4 *local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_18 = 0;
  local_1c = (undefined4 *)0x0;
  local_30 = 1;
  local_2c = param_2._0_1_;
  local_28 = 0;
  local_34 = WF8266037::W188DADF7::W55DB9325::vftable;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  piVar3 = (int *)FUN_00b933f0(&param_2,0);
  puVar1 = (undefined4 *)*piVar3;
  *piVar3 = 0;
  local_8 = CONCAT31(local_8._1_3_,2);
  local_20 = puVar1;
  if (param_2 != (undefined4 *)0x0) {
    (**(code **)*param_2)(1);
  }
  cVar2 = FUN_006c4e50(&local_1c,puVar1,0,&local_34);
  if (cVar2 == '\0') {
    local_18 = 1;
    FUN_00b940e0(0x2475380b);
  }
  local_8._0_1_ = 1;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  puVar1 = local_1c;
  if (local_18 == 0) {
    FUN_0043d406(param_1 + 0x128);
    local_8 = CONCAT31(local_8._1_3_,3);
    local_18 = FUN_006bfd54(puVar1,puVar1[2]);
    if (local_18 != 0) {
      cVar2 = (**(code **)(*(int *)(*(int *)(*(int *)(param_1 + 8) + 4) + 8 + param_1) + 0x40))();
      if (cVar2 == '\0') {
        FUN_00b940e0(0xafae0120);
      }
    }
    local_8 = CONCAT31(local_8._1_3_,1);
    if ((char)local_20 != '\0') {
      FUN_00401477();
    }
  }
  local_8 = 0xffffffff;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  return local_18;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006c42c6(undefined4 param_1,undefined4 *param_2)

{
  int unaff_ESI;
  char local_20;
  char local_15;
  
  local_15 = '\x01';
  FUN_0043d406();
  if (*(int *)(unaff_ESI + 0xf0) != 0) goto LAB_006c433e;
  if ((param_2 == (undefined4 *)0x0) || (param_2[2] == 0)) {
LAB_006c438d:
    *(undefined4 *)(unaff_ESI + 0xf0) = param_1;
  }
  else {
    local_15 = FUN_00b93390();
    if (local_15 != '\0') {
      FUN_00b6fa00();
      goto LAB_006c438d;
    }
    FUN_00b940e0();
    *(undefined4 *)(unaff_ESI + 0xf0) = 1;
  }
  FUN_006c45c6();
LAB_006c433e:
  if (local_20 != '\0') {
    FUN_00401477();
  }
  if (param_2 != (undefined4 *)0x0) {
    (**(code **)*param_2)();
  }
  return local_15;
}



void FUN_006c4398(void)

{
  int in_EAX;
  
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 4);
}



void FUN_006c44bf(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5,
                 undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  int iVar2;
  
  if (param_3 != param_5) {
    do {
      cVar1 = FUN_006c45b1(param_3);
      if (cVar1 == '\0') {
        FUN_004492f7();
        iVar2 = param_3;
        FUN_0044933b(param_3);
        FUN_004493a9(iVar2);
      }
      param_3 = param_3 + 4;
    } while (param_3 != param_5);
  }
  *param_1 = param_6;
  param_1[1] = param_7;
  return;
}



undefined4 *
FUN_006c4525(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  char cVar2;
  
  iVar1 = param_5;
  if (param_3 != param_5) {
    do {
      cVar2 = FUN_006c45b1(param_3);
      if (cVar2 != '\0') break;
      param_3 = param_3 + 4;
    } while (param_3 != iVar1);
  }
  cVar2 = FUN_00449367(&param_4);
  if (cVar2 == '\0') {
    FUN_004492f7();
    FUN_006c44bf(param_1,param_2,param_3,param_4,param_5,param_2,param_3);
  }
  else {
    *param_1 = param_2;
    param_1[1] = param_3;
  }
  return param_1;
}



undefined4 FUN_006c45b1(int *param_1)

{
  return CONCAT31((int3)((uint)*(int *)(*param_1 + 8) >> 8),*(int *)(*param_1 + 8) == 0);
}



void FUN_006c45c6(void)

{
  int iVar1;
  HANDLE *ppvVar2;
  char cVar3;
  int *piVar4;
  undefined4 *puVar5;
  int unaff_EDI;
  undefined local_48 [8];
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3e398;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if (*(int *)(unaff_EDI + 8) != 0) {
    FUN_0043d307(DAT_0323f878 ^ (uint)&stack0xffffffa8);
    local_c = 0;
    if (*(int *)(unaff_EDI + 8) != 0) {
      FUN_004492db(1);
      iVar1 = unaff_EDI + 0x10;
      FUN_004494bc(*(undefined4 *)(unaff_EDI + 0x1c),iVar1);
      FUN_004494bc(*(undefined4 *)(unaff_EDI + 0x20),iVar1);
      while( true ) {
        cVar3 = FUN_00449367(local_48);
        if (cVar3 != '\0') break;
        piVar4 = (int *)FUN_0044933b();
        ppvVar2 = (HANDLE *)*piVar4;
        *(undefined *)(ppvVar2 + 3) = 1;
        ReleaseSemaphore(*ppvVar2,1,(LPLONG)0x0);
        FUN_004492f7();
      }
      FUN_004494bc(*(undefined4 *)(unaff_EDI + 0x20),iVar1);
      FUN_004494bc(*(undefined4 *)(unaff_EDI + 0x20),iVar1);
      FUN_004494bc(*(undefined4 *)(unaff_EDI + 0x1c),iVar1);
      puVar5 = (undefined4 *)FUN_006c4525(local_28,local_38,local_34,local_40,local_3c);
      FUN_0044945e(local_20,*puVar5,puVar5[1],local_30,local_2c);
    }
    local_c = 0xffffffff;
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



bool FUN_006c46f3(undefined4 param_1)

{
  int *in_EAX;
  int iVar1;
  
  iVar1 = FUN_00a838c0(&DAT_0328629c);
  if (iVar1 != 0) {
    *(undefined4 *)(iVar1 + 0x1c) = 0;
    *(undefined4 *)(iVar1 + 0x20) = param_1;
    if (iVar1 != *in_EAX) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*in_EAX);
    }
    *in_EAX = iVar1;
  }
  else {
    FUN_00b940e0(0x9caa524c);
  }
  return iVar1 != 0;
}



undefined4 FUN_006c494c(void)

{
  return 0xffffffff;
}



undefined4 * __thiscall FUN_006c496b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF8266037::W188DADF7::W8C51B270::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006c4988(undefined4 param_1,byte param_2)

{
  FUN_00b72bf0();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Removing unreachable block (ram,0x006c4c34)

void __fastcall FUN_006c49a4(undefined4 **param_1)

{
  undefined4 **ppuVar1;
  char cVar2;
  int *piVar3;
  undefined4 *puVar4;
  undefined4 **ppuStack_5c;
  undefined4 **ppuStack_58;
  uint uStack_54;
  char cStack_41;
  int local_40;
  undefined4 *local_34;
  undefined4 *puStack_30;
  undefined4 **local_2c;
  undefined4 *puStack_28;
  int iStack_24;
  undefined **local_20;
  undefined4 *local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c45bfd;
  local_14 = ExceptionList;
  uStack_54 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  local_1c = param_1[0x11];
  local_40 = 0;
  local_20 = WF8266037::WD747FD9D::WED1671B2::vftable;
  ppuStack_58 = (undefined4 **)0x0;
  ppuStack_5c = &local_34;
  local_c = 0;
  piVar3 = (int *)FUN_00b933f0();
  ppuVar1 = (undefined4 **)*piVar3;
  *piVar3 = 0;
  local_c._0_1_ = 1;
  local_2c = ppuVar1;
  if (local_34 != (undefined4 *)0x0) {
    ppuStack_58 = (undefined4 **)0x1;
    ppuStack_5c = (undefined4 **)0x6c4a1e;
    (**(code **)*local_34)();
  }
  do {
    ppuStack_58 = (undefined4 **)0x6c4b0a;
    cVar2 = FUN_00b72540();
    if ((cVar2 != '\0') || (local_40 != 0)) {
      local_c = (uint)local_c._1_3_ << 8;
      if (ppuVar1 != (undefined4 **)0x0) {
        ppuStack_58 = (undefined4 **)0x1;
        ppuStack_5c = (undefined4 **)0x6c4b23;
        (*(code *)**ppuVar1)();
      }
      ExceptionList = local_14;
      return;
    }
    ppuStack_58 = (undefined4 **)0xa;
    ppuStack_5c = ppuVar1;
    local_40 = FUN_006bfce9();
    if (local_40 != 0) {
      ppuStack_58 = (undefined4 **)0x6c4a53;
      cVar2 = (**(code **)(*(int *)(*(int *)(param_1[0x10][2] + 4) + 8 + (int)param_1[0x10]) + 0x40)
              )();
      if (cVar2 == '\0') {
        ppuStack_58 = (undefined4 **)0x35451295;
        ppuStack_5c = (undefined4 **)0x6c4a66;
        FUN_00b940e0();
      }
      ppuStack_5c = param_1;
      ppuStack_58 = (undefined4 **)local_40;
      FUN_006c4c93();
    }
    puStack_28 = (undefined4 *)0x0;
    iStack_24 = 0;
    local_c._0_1_ = 2;
    if (local_40 == 0) {
      ppuStack_5c = &puStack_28;
      ppuStack_58 = ppuVar1;
      cVar2 = FUN_006c4fa0();
      if (cVar2 == '\0') {
        local_40 = 1;
      }
      if (local_40 != 0) {
        ppuStack_58 = (undefined4 **)0xa76d708f;
LAB_006c4ab5:
        ppuStack_5c = (undefined4 **)0x6c4aba;
        FUN_00b940e0();
        goto LAB_006c4b61;
      }
      if (cStack_41 == '\0') {
        ppuStack_58 = (undefined4 **)0xbc34f08f;
        local_40 = 0x301;
        ppuStack_5c = (undefined4 **)0x6c4ae3;
        FUN_00b940e0();
        ppuStack_58 = (undefined4 **)0x301;
        ppuStack_5c = param_1;
        FUN_006c4c93();
      }
      else {
        ppuStack_5c = (undefined4 **)(puStack_28[1] + -1);
        if (ppuStack_5c == (undefined4 **)0x0) {
          ppuStack_58 = ppuStack_5c;
          FUN_006c4d16(&ppuStack_5c);
          local_40 = FUN_006c4dcc();
          if (local_40 != 0) {
            ppuStack_58 = (undefined4 **)0x6c4c7c;
            cVar2 = (**(code **)(*(int *)(*(int *)(param_1[0x10][2] + 4) + 8 + (int)param_1[0x10]) +
                                0x40))();
            if (cVar2 == '\0') {
              ppuStack_58 = (undefined4 **)0xd4312d0;
              goto LAB_006c4ab5;
            }
            goto LAB_006c4b61;
          }
        }
        else if (ppuStack_5c == (undefined4 **)0x1) {
          local_c = CONCAT31(local_c._1_3_,3);
          ppuStack_5c = &puStack_30;
          ppuStack_58 = (undefined4 **)0x0;
          puVar4 = (undefined4 *)FUN_00b933f0();
          ppuStack_58 = (undefined4 **)*puVar4;
          *puVar4 = 0;
          ppuStack_5c = (undefined4 **)0x6c4b90;
          FUN_0040c727();
          if (puStack_30 != (undefined4 *)0x0) {
            ppuStack_58 = (undefined4 **)0x1;
            ppuStack_5c = (undefined4 **)0x6c4b9e;
            (**(code **)*puStack_30)();
          }
          ppuStack_58 = (undefined4 **)uRam00000008;
          ppuStack_5c = (undefined4 **)0x0;
          local_40 = FUN_006bfce9();
          if (local_40 == 0) {
            ppuStack_58 = (undefined4 **)uRam00000008;
            ppuStack_5c = (undefined4 **)0x0;
            cVar2 = FUN_006c4cc7(param_1);
            if (cVar2 == '\0') {
              local_40 = 1;
            }
            if (local_40 != 0) {
              ppuStack_58 = (undefined4 **)0x87809d3c;
              ppuStack_5c = (undefined4 **)0x6c4c26;
              FUN_00b940e0();
            }
          }
          else {
            ppuStack_58 = (undefined4 **)0x6c4bc9;
            cVar2 = (**(code **)(*(int *)(*(int *)(param_1[0x10][2] + 4) + 8 + (int)param_1[0x10]) +
                                0x40))();
            if (cVar2 == '\0') {
              ppuStack_58 = (undefined4 **)0x91801f89;
              ppuStack_5c = (undefined4 **)0x6c4bdc;
              FUN_00b940e0();
            }
            ppuStack_5c = param_1;
            ppuStack_58 = (undefined4 **)local_40;
            FUN_006c4c93();
          }
        }
        else {
          ppuStack_58 = (undefined4 **)0x312c3d81;
          local_40 = 1;
          ppuStack_5c = (undefined4 **)0x6c4b5e;
          FUN_00b940e0();
LAB_006c4b61:
          ppuStack_5c = param_1;
          ppuStack_58 = (undefined4 **)local_40;
          FUN_006c4c93();
        }
      }
    }
    local_c._0_1_ = 1;
    if (iStack_24 != 0) {
      ppuStack_58 = (undefined4 **)0x6c4b03;
      FUN_0040127a();
    }
  } while( true );
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006c4c93(undefined4 param_1,undefined4 param_2)

{
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_30 = 0;
  uStack_34 = 0;
  local_18 = &local_38;
  local_8 = 0;
  local_38 = 0;
  local_14 = 0;
  FUN_006c42c6(param_2);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006c4d06)

undefined4 FUN_006c4cc7(void)

{
  undefined4 uVar1;
  
  uVar1 = FUN_006c42c6(0);
  return uVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006c4d16(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6c4d22;
  local_14 = 0;
  ___RTDynamicCast(0,0,&WF8266037::W188DADF7::W8C51B270::RTTI_Type_Descriptor,
                   &WF8266037::W188DADF7::W55DB9325::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&WF8266037::W188DADF7::W8C51B270::RTTI_Type_Descriptor,
                           &WF8266037::W188DADF7::W55DB9325::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_006c4dcc(int param_1_00,int param_1,int param_2)

{
  undefined4 uVar1;
  __time64_t _Var2;
  char local_18;
  
  _Var2 = __time64((__time64_t *)0x0);
  FUN_0043d406(param_1_00 + 0x40);
  *(__time64_t *)(param_1_00 + 0x48) = _Var2;
  if (local_18 != '\0') {
    FUN_00401477();
  }
  if (*(char *)(param_1 + 8) == '\x01') {
    uVar1 = FUN_006c41b4(*(undefined4 *)(param_1_00 + 0xb8),2);
    if (param_2 != 0) {
      FUN_0040127a();
    }
  }
  else {
    if (param_2 != 0) {
      FUN_0040127a();
    }
    uVar1 = 0;
  }
  return uVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006c4e50(undefined4 param_1,undefined4 param_2,int param_3)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined4 *local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = (undefined4 *)0x0;
  local_8 = 0;
  local_11 = FUN_006c5088();
  if (local_11 == '\0') {
    FUN_00b940e0(0xe8cf4f60);
  }
  puVar1 = local_1c;
  local_18 = (undefined4 *)0x0;
  local_8._0_1_ = 1;
  puVar3 = (undefined4 *)0x0;
  if (local_11 != '\0') {
    local_11 = FUN_006c522a();
    puVar3 = local_18;
    if (local_11 == '\0') {
      FUN_00b940e0(0x9d4d3493);
      puVar3 = local_18;
    }
    else {
      puVar2 = (undefined4 *)FUN_00b933f0(&local_20,0);
      uVar4 = *puVar2;
      *puVar2 = 0;
      FUN_0040c727(uVar4);
      if (local_20 != (undefined4 *)0x0) {
        (**(code **)*local_20)(1);
      }
      local_11 = FUN_00b93040(puVar1,0,puVar1[2]);
      if (local_11 == '\0') {
        uVar4 = 0xacdaf8eb;
        local_11 = '\0';
      }
      else {
        local_11 = FUN_00b93040(puVar3,0,puVar3[2]);
        if (local_11 == '\0') {
          uVar4 = 0x3dd7d264;
        }
        else {
          if (param_3 == 0) goto LAB_006c4f76;
          local_11 = FUN_00b93040(param_2,0,param_3);
          if (local_11 != '\0') goto LAB_006c4f76;
          uVar4 = 0x47b9e169;
        }
      }
      FUN_00b940e0(uVar4);
    }
  }
LAB_006c4f76:
  local_8 = (uint)local_8._1_3_ << 8;
  if (puVar3 != (undefined4 *)0x0) {
    (**(code **)*puVar3)(1);
  }
  local_8 = 0xffffffff;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006c4fa0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 uVar3;
  int local_1c;
  undefined4 *local_18;
  undefined4 *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_18 = (undefined4 *)0x0;
  local_8 = 0;
  cVar2 = FUN_006c5088();
  if (cVar2 == '\0') {
    FUN_00b940e0(0xbfb48e);
  }
  puVar1 = local_18;
  local_14[0] = (undefined4 *)0x0;
  local_8._0_1_ = 1;
  if (cVar2 == '\0') goto LAB_006c505f;
  cVar2 = FUN_00bb6360(local_14,param_3,0);
  if (cVar2 == '\0') {
    uVar3 = 0xa069cb30;
    cVar2 = '\0';
  }
  else {
    uVar3 = puVar1[2];
    cVar2 = FUN_00bb6760(&local_1c,local_14[0],puVar1);
    if (cVar2 == '\0') {
      uVar3 = 0x7bed5c00;
    }
    else {
      *(bool *)param_1 = local_1c == 0;
      if (local_1c != 0) goto LAB_006c505f;
      cVar2 = FUN_006c52b1(param_3,uVar3);
      if (cVar2 != '\0') goto LAB_006c505f;
      uVar3 = 0x93e4ca36;
    }
  }
  FUN_00b940e0(uVar3);
LAB_006c505f:
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_14[0] != (undefined4 *)0x0) {
    (**(code **)*local_14[0])(1);
  }
  local_8 = 0xffffffff;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  return cVar2;
}



char FUN_006c5088(void)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *local_8;
  
  puVar3 = (undefined4 *)FUN_00b933f0(&local_8,0);
  uVar1 = *puVar3;
  *puVar3 = 0;
  FUN_0040c727(uVar1);
  if (local_8 != (undefined4 *)0x0) {
    (**(code **)*local_8)(1);
  }
  cVar2 = FUN_00b93010();
  if (cVar2 == '\0') {
    FUN_00b940e0(0x3cef9a81);
  }
  else {
    *(undefined *)local_8 = 0x4b;
    *(undefined *)((int)local_8 + 1) = 0x45;
    *(undefined *)((int)local_8 + 2) = 0x45;
    *(undefined *)((int)local_8 + 3) = 0x50;
  }
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006c50f3(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[3] = 0;
    puVar2[1] = 1;
    *(undefined *)(puVar2 + 2) = 1;
    *puVar2 = WF8266037::W188DADF7::W55DB9325::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_006c53dd(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006c5169(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[1] = 2;
    *(undefined *)(puVar2 + 2) = 0;
    puVar2[3] = 0;
    *puVar2 = WF8266037::W188DADF7::WCAF4A44D::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_006c543a(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_006c51dc(void)

{
  undefined4 *unaff_ESI;
  undefined4 uStack_8;
  
  *unaff_ESI = WF8266037::W188DADF7::W8C51B270::vftable;
  FUN_00bb6410((int)&uStack_8 + 3);
  unaff_ESI[1] = uStack_8 >> 0x18;
  FUN_00bb6410(unaff_ESI + 2);
  FUN_00bb64e0(unaff_ESI + 3,0);
  return;
}



char FUN_006c522a(void)

{
  char cVar1;
  undefined4 *puVar2;
  int unaff_ESI;
  undefined4 uVar3;
  undefined4 *local_8;
  
  puVar2 = (undefined4 *)FUN_00b933f0(&local_8,0);
  uVar3 = *puVar2;
  *puVar2 = 0;
  FUN_0040c727(uVar3);
  if (local_8 != (undefined4 *)0x0) {
    (**(code **)*local_8)(1);
  }
  cVar1 = FUN_00b93010();
  if (cVar1 == '\0') {
    uVar3 = 0x4d89d0ec;
  }
  else {
    *(undefined *)local_8 = *(undefined *)(unaff_ESI + 4);
    *(undefined *)((int)local_8 + 1) = *(undefined *)(unaff_ESI + 8);
    cVar1 = FUN_00bb5f30(0);
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar3 = 0x33a456a8;
  }
  FUN_00b940e0(uVar3);
  return '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_006c52b1(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined4 *puVar4;
  undefined4 *unaff_EDI;
  undefined4 local_34 [2];
  undefined local_2c [8];
  undefined4 local_24;
  int local_1c;
  int local_18;
  void *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x6c52bd;
  local_14 = operator_new(0x10);
  local_8 = 0;
  if (local_14 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_006c51dc(param_1);
  }
  local_18 = 0;
  local_8 = 1;
  local_1c = iVar2;
  piVar3 = (int *)FUN_006c5497(iVar2);
  iVar1 = *piVar3;
  *piVar3 = local_18;
  local_18 = iVar1;
  if (local_14 != (void *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c(&local_1c,iVar2,iVar2);
  local_8 = 2;
  if (*(int *)(local_1c + 4) != 1) {
    if (*(int *)(local_1c + 4) != 2) {
      if (local_34 != unaff_EDI) {
        *unaff_EDI = 0;
      }
      iVar2 = unaff_EDI[1];
      unaff_EDI[1] = 0;
      if (iVar2 != 0) {
        FUN_0040127a();
      }
      local_8 = 0xffffffff;
      if (local_18 != 0) {
        FUN_0040127a();
      }
      return 1;
    }
    puVar4 = (undefined4 *)FUN_006c5169(local_2c);
    local_24 = *puVar4;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar4 + 1);
  }
  puVar4 = (undefined4 *)FUN_006c50f3(local_34);
  local_24 = *puVar4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar4 + 1);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006c53dd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W188DADF7::W55DB9325>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006c5423(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006c543a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W188DADF7::WCAF4A44D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006c5480(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006c5497(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WF8266037::W188DADF7::W8C51B270>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006c54dd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_006c5596(undefined4 param_1_00,byte param_1)

{
  FUN_006c3a81(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_006c55b3(int param_1)

{
  longlong lVar1;
  char cVar2;
  __time64_t _Var3;
  undefined8 uStack_28;
  char cStack_1c;
  char cStack_14;
  char cStack_c;
  
  while( true ) {
    cVar2 = FUN_00b72540();
    if (cVar2 != '\0') {
      return;
    }
    cVar2 = (**(code **)(*(int *)(*(int *)(*(int *)(*(int *)(param_1 + 0xa8) + 8) + 4) + 8 +
                                 *(int *)(param_1 + 0xa8)) + 0x40))();
    if (cVar2 != '\0') break;
    (**(code **)(*(int *)(param_1 + 0x6c) + 0xc))();
    uStack_28 = (ulonglong)*(uint *)(param_1 + 100) * 1000;
    (**(code **)(*(int *)(param_1 + 0x6c) + 8))(&uStack_28);
    _Var3 = __time64((__time64_t *)0x0);
    FUN_0043d406(param_1 + 0x50);
    lVar1 = *(longlong *)(param_1 + 0x58);
    if (cStack_1c != '\0') {
      FUN_00401477();
    }
    lVar1 = _Var3 - lVar1;
    if ((-1 < lVar1) && ((0xffffffff < lVar1 || (*(uint *)(param_1 + 0x60) / 1000 < (uint)lVar1))))
    {
      FUN_006c41b4(*(undefined4 *)(param_1 + 0xa8),1);
      _Var3 = __time64((__time64_t *)0x0);
      FUN_0043d406(param_1 + 0x50);
      *(__time64_t *)(param_1 + 0x58) = _Var3;
      if (cStack_14 != '\0') {
        FUN_00401477();
      }
    }
    _Var3 = __time64((__time64_t *)0x0);
    FUN_0043d406(param_1 + 0x40);
    lVar1 = *(longlong *)(param_1 + 0x48);
    if (cStack_c != '\0') {
      FUN_00401477();
    }
    lVar1 = _Var3 - lVar1;
    if ((-1 < lVar1) && ((0xffffffff < lVar1 || (*(uint *)(param_1 + 0x68) / 1000 < (uint)lVar1))))
    {
      FUN_00b940e0(0x9a7f953b);
      (**(code **)(*(int *)(*(int *)(*(int *)(*(int *)(param_1 + 0xa8) + 8) + 4) + 8 +
                           *(int *)(param_1 + 0xa8)) + 0x14))();
      if (*(int **)(param_1 + 0xac) != (int *)0x0) {
        (**(code **)(**(int **)(param_1 + 0xac) + 4))();
      }
    }
  }
  return;
}



void FUN_006c5750(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::W6787DB3A>_>
              ::vftable;
    FUN_006c59b0(unaff_ESI);
    return;
  }
  FUN_006c59b0(unaff_ESI);
  return;
}



void FUN_006c5790(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::W42E255B9>_>
              ::vftable;
    FUN_006c5a10(unaff_ESI);
    return;
  }
  FUN_006c5a10(unaff_ESI);
  return;
}



void FUN_006c57d0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::WFC4070F1>_>
              ::vftable;
    FUN_006c5a70(unaff_ESI);
    return;
  }
  FUN_006c5a70(unaff_ESI);
  return;
}



void FUN_006c5810(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::WAA825ABA>_>
              ::vftable;
    FUN_006c5ad0(unaff_ESI);
    return;
  }
  FUN_006c5ad0(unaff_ESI);
  return;
}



undefined4 * __thiscall FUN_006c5850(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WF8266037::W2AC8B1F5::W1E942392::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_006c5870(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::W6787DB3A>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006c5c80();
    return 1;
  }
  FUN_006c5c80();
  return 1;
}



undefined4 FUN_006c58c0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::W42E255B9>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006c5e30();
    return 1;
  }
  FUN_006c5e30();
  return 1;
}



undefined4 FUN_006c5910(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::WFC4070F1>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006c5fe0();
    return 1;
  }
  FUN_006c5fe0();
  return 1;
}



undefined4 FUN_006c5960(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::WAA825ABA>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006c61a0();
    return 1;
  }
  FUN_006c61a0();
  return 1;
}



undefined4 * __thiscall FUN_006c59b0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c6200(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c5a10(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c6260(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c5a70(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c62c0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c5ad0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c6320(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_006c5b30(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::W6787DB3A>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006c5bb0(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006c6400(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006c5c20(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006c6400(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006c5c38. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006c5c40(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006c6400(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006c5c80(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006c6480(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006c5ce0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::W42E255B9>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006c5d60(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006c64e0(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006c5dd0(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006c64e0(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006c5de8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006c5df0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006c64e0(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006c5e30(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006c6560(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006c5e90(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::WFC4070F1>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006c5f10(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006c65c0(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006c5f80(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006c65c0(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006c5f98. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006c5fa0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006c65c0(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006c5fe0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006c6640(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006c6040(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::WAA825ABA>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006c60c0(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006c66a0(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006c6130(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006c66a0(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006c6148. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006c6150(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006c66a0(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006c6190(void)

{
  FUN_006d0310();
  return;
}



void FUN_006c61a0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006c6710(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006c6200(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c6770(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006c6260(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c6810(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006c62c0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c68b0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006c6320(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c6950(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 __thiscall FUN_006c6380(undefined4 param_1_00,byte param_1)

{
  FUN_006c5b30();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006c63a0(undefined4 param_1_00,byte param_1)

{
  FUN_006c5ce0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006c63c0(undefined4 param_1_00,byte param_1)

{
  FUN_006c5e90();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006c63e0(undefined4 param_1_00,byte param_1)

{
  FUN_006c6040();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006c6400(int param_1)

{
  void *pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xd4);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_006a6b1d(pvVar1);
  }
  local_4 = 0xffffffff;
  FUN_006a360d(param_1 + 8);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006c6480(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c69f0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006c64e0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2e42b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x54);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_006ad8c1(puVar2);
    *puVar2 = WF8266037::WBDE613C5::W42E255B9::vftable;
  }
  local_4 = 0xffffffff;
  FUN_006c6a50(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006c6560(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c6ab0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006c65c0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2e42b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x54);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_006ad8c1(puVar2);
    *puVar2 = WF8266037::WBDE613C5::WFC4070F1::vftable;
  }
  local_4 = 0xffffffff;
  FUN_006c6b10(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006c6640(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c6b70(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006c66a0(int param_1)

{
  void *pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x74);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_006a6a0e(pvVar1);
  }
  local_4 = 0xffffffff;
  FUN_006a37da(param_1 + 8);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006c6710(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c6bd0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c6770(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0ace0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::W6787DB3A>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c67e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c6810(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0acc0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::W42E255B9>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c6889(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c68b0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0aca0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::WFC4070F1>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c6929(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c6950(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0ac80;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::WAA825ABA>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c69c9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_006c69f0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c6c30(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006c6a50(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a1dec(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006c6ab0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c6cd0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006c6b10(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a1ec1(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006c6b70(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c6d70(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006c6bd0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c6e10(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_006c6c30(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0ac60;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::W6787DB3A>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c6ca9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c6cd0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0ac40;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::W42E255B9>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c6d49(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c6d70(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0ac20;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::WFC4070F1>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c6de9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c6e10(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0ac00;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WBDE613C5::WAA825ABA>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c6e89(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_006c6eb0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W6634A465>_>
              ::vftable;
    FUN_006c7470(unaff_ESI);
    return;
  }
  FUN_006c7470(unaff_ESI);
  return;
}



void FUN_006c6ef0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W6B070BE6>_>
              ::vftable;
    FUN_006c74d0(unaff_ESI);
    return;
  }
  FUN_006c74d0(unaff_ESI);
  return;
}



void FUN_006c6f30(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W94F91D6E>_>
              ::vftable;
    FUN_006c7530(unaff_ESI);
    return;
  }
  FUN_006c7530(unaff_ESI);
  return;
}



void FUN_006c6f70(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WDC3E8CE3>_>
              ::vftable;
    FUN_006c7590(unaff_ESI);
    return;
  }
  FUN_006c7590(unaff_ESI);
  return;
}



void FUN_006c6fb0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WCB6F3D5D>_>
              ::vftable;
    FUN_006c75f0(unaff_ESI);
    return;
  }
  FUN_006c75f0(unaff_ESI);
  return;
}



void FUN_006c6ff0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W86B9C6F5>_>
              ::vftable;
    FUN_006c7650(unaff_ESI);
    return;
  }
  FUN_006c7650(unaff_ESI);
  return;
}



void FUN_006c7030(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WAF9E9834>_>
              ::vftable;
    FUN_006c76b0(unaff_ESI);
    return;
  }
  FUN_006c76b0(unaff_ESI);
  return;
}



void FUN_006c7070(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W33629A5B>_>
              ::vftable;
    FUN_006c7710(unaff_ESI);
    return;
  }
  FUN_006c7710(unaff_ESI);
  return;
}



undefined4 FUN_006c70b0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W6634A465>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006c78c0();
    return 1;
  }
  FUN_006c78c0();
  return 1;
}



undefined4 FUN_006c7100(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W6B070BE6>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006c7a80();
    return 1;
  }
  FUN_006c7a80();
  return 1;
}



undefined4 FUN_006c7150(undefined4 *param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)operator_new(0x10);
  if (puVar3 != (undefined4 *)0x0) {
    *puVar3 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W94F91D6E>::vftable;
    puVar3[1] = 0;
    puVar3[2] = 0;
    puVar3[3] = 0;
  }
  puVar3 = (undefined4 *)FUN_006a9d1c(local_8);
  if (puVar3 != param_1) {
    uVar1 = *puVar3;
    *puVar3 = *param_1;
    *param_1 = uVar1;
  }
  uVar1 = param_1[1];
  param_1[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return 1;
}



undefined4 FUN_006c71f0(undefined4 *param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)operator_new(0x10);
  if (puVar3 != (undefined4 *)0x0) {
    *puVar3 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WDC3E8CE3>::vftable;
    puVar3[1] = 0;
    puVar3[2] = 0;
    puVar3[3] = 0;
  }
  puVar3 = (undefined4 *)FUN_006ac507(local_8);
  if (puVar3 != param_1) {
    uVar1 = *puVar3;
    *puVar3 = *param_1;
    *param_1 = uVar1;
  }
  uVar1 = param_1[1];
  param_1[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return 1;
}



undefined4 FUN_006c7290(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WCB6F3D5D>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006c7c30();
    return 1;
  }
  FUN_006c7c30();
  return 1;
}



undefined4 FUN_006c72e0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W86B9C6F5>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006c7de0();
    return 1;
  }
  FUN_006c7de0();
  return 1;
}



undefined4 FUN_006c7330(undefined4 *param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)operator_new(0x10);
  if (puVar3 != (undefined4 *)0x0) {
    *puVar3 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WAF9E9834>::vftable;
    puVar3[1] = 0;
    puVar3[2] = 0;
    puVar3[3] = 0;
  }
  puVar3 = (undefined4 *)FUN_006aa957(local_8);
  if (puVar3 != param_1) {
    uVar1 = *puVar3;
    *puVar3 = *param_1;
    *param_1 = uVar1;
  }
  uVar1 = param_1[1];
  param_1[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return 1;
}



undefined4 FUN_006c73d0(undefined4 *param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)operator_new(0x10);
  if (puVar3 != (undefined4 *)0x0) {
    *puVar3 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W33629A5B>::vftable;
    puVar3[1] = 0;
    puVar3[2] = 0;
    puVar3[3] = 0;
  }
  puVar3 = (undefined4 *)FUN_006ab3a8(local_8);
  if (puVar3 != param_1) {
    uVar1 = *puVar3;
    *puVar3 = *param_1;
    *param_1 = uVar1;
  }
  uVar1 = param_1[1];
  param_1[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return 1;
}



undefined4 * __thiscall FUN_006c7470(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c7e40(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c74d0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c7ea0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c7530(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c7f00(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c7590(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c7f60(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c75f0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c7fc0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c7650(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c8020(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c76b0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c8080(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c7710(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c80e0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_006c7770(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W6634A465>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006c77f0(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006c81c0(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006c7860(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006c81c0(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006c7878. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006c7880(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006c81c0(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006c78c0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006c8230(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006c7920(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W6B070BE6>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006c79a0(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006c8290(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006c7a10(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006c8290(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006c7a28. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



bool __fastcall FUN_006c7a30(int param_1)

{
  return *(int *)(param_1 + 8) != 0;
}



void __thiscall FUN_006c7a40(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006c8290(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006c7a80(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006c8310(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006c7ae0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WCB6F3D5D>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006c7b60(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006c8370(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006c7bd0(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006c8370(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006c7be8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006c7bf0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006c8370(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006c7c30(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006c8400(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006c7c90(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W86B9C6F5>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006c7d10(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006c8460(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006c7d80(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006c8460(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006c7d98. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006c7da0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006c8460(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006c7de0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006c84d0(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006c7e40(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c8530(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006c7ea0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c85d0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006c7f00(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c8670(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006c7f60(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c8710(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006c7fc0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c87b0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006c8020(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c8850(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006c8080(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c88f0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006c80e0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c8990(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 __thiscall FUN_006c8140(undefined4 param_1_00,byte param_1)

{
  FUN_006c7770();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006c8160(undefined4 param_1_00,byte param_1)

{
  FUN_006c7920();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006c8180(undefined4 param_1_00,byte param_1)

{
  FUN_006c7ae0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006c81a0(undefined4 param_1_00,byte param_1)

{
  FUN_006c7c90();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006c81c0(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xa4);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006ac013(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006c8a30(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006c8230(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c8a90(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006c8290(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2e42b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x54);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_006ad8c1(puVar2);
    *puVar2 = WF8266037::W15DB837A::W6B070BE6::vftable;
  }
  local_4 = 0xffffffff;
  FUN_006c8af0(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006c8310(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c8b50(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006c8370(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3e375;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x7c);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_006ad8c1(puVar2);
    local_4 = CONCAT31(local_4._1_3_,1);
    *puVar2 = WF8266037::W15DB837A::WCB6F3D5D::vftable;
    FUN_006ac0c5(puVar2 + 0x15,puVar2);
  }
  local_4 = 0xffffffff;
  FUN_006c8bb0(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006c8400(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c8c10(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006c8460(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xd4);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006ad15e(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006c8c70(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006c84d0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006c8cd0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c8530(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0abe0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W6634A465>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c85a9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c85d0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0abc0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W6B070BE6>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c8649(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c8670(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0aba0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W94F91D6E>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c86e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c8710(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0ab80;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WDC3E8CE3>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c8789(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c87b0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0ab60;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WCB6F3D5D>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c8829(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c8850(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0ab40;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W86B9C6F5>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c88c9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c88f0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0ab20;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WAF9E9834>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c8969(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c8990(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0ab00;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W33629A5B>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c8a09(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_006c8a30(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a22b7(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006c8a90(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c8d30(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006c8af0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a20a1(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006c8b50(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c8dd0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006c8bb0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a21ac(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006c8c10(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c8e70(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006c8c70(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a1f96(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006c8cd0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006c8f10(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_006c8d30(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0aae0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W6634A465>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c8da9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c8dd0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0aac0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W6B070BE6>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c8e49(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c8e70(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0aaa0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::WCB6F3D5D>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c8ee9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c8f10(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0aa80;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::W15DB837A::W86B9C6F5>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006c8f89(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006c8fb0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::detail::sp_counted_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006c8fd0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W68D33117>_>
              ::vftable;
    FUN_006c99b0(unaff_ESI);
    return;
  }
  FUN_006c99b0(unaff_ESI);
  return;
}



void FUN_006c9010(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W56C8E7BA>_>
              ::vftable;
    FUN_006c9a10(unaff_ESI);
    return;
  }
  FUN_006c9a10(unaff_ESI);
  return;
}



void FUN_006c9050(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WF9118BC3>_>
              ::vftable;
    FUN_006c9a70(unaff_ESI);
    return;
  }
  FUN_006c9a70(unaff_ESI);
  return;
}



void FUN_006c9090(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W9FB55879>_>
              ::vftable;
    FUN_006c9ad0(unaff_ESI);
    return;
  }
  FUN_006c9ad0(unaff_ESI);
  return;
}



void FUN_006c90d0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W41C9D6EF>_>
              ::vftable;
    FUN_006c9b30(unaff_ESI);
    return;
  }
  FUN_006c9b30(unaff_ESI);
  return;
}



void FUN_006c9110(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WCDDBDBF5>_>
              ::vftable;
    FUN_006c9b90(unaff_ESI);
    return;
  }
  FUN_006c9b90(unaff_ESI);
  return;
}



void FUN_006c9150(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W29C49F09>_>
              ::vftable;
    FUN_006c9bf0(unaff_ESI);
    return;
  }
  FUN_006c9bf0(unaff_ESI);
  return;
}



void FUN_006c9190(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WF6346023>_>
              ::vftable;
    FUN_006c9c50(unaff_ESI);
    return;
  }
  FUN_006c9c50(unaff_ESI);
  return;
}



void FUN_006c91d0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W36EDE25D>_>
              ::vftable;
    FUN_006c9cb0(unaff_ESI);
    return;
  }
  FUN_006c9cb0(unaff_ESI);
  return;
}



void FUN_006c9210(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WA275561E>_>
              ::vftable;
    FUN_006c9d10(unaff_ESI);
    return;
  }
  FUN_006c9d10(unaff_ESI);
  return;
}



void FUN_006c9250(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W62CF6A5E>_>
              ::vftable;
    FUN_006c9d70(unaff_ESI);
    return;
  }
  FUN_006c9d70(unaff_ESI);
  return;
}



void FUN_006c9290(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W8D43B913>_>
              ::vftable;
    FUN_006c9dd0(unaff_ESI);
    return;
  }
  FUN_006c9dd0(unaff_ESI);
  return;
}



void FUN_006c92d0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W5B0FD797>_>
              ::vftable;
    FUN_006c9e30(unaff_ESI);
    return;
  }
  FUN_006c9e30(unaff_ESI);
  return;
}



void FUN_006c9310(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WC8BA1E38>_>
              ::vftable;
    FUN_006c9e90(unaff_ESI);
    return;
  }
  FUN_006c9e90(unaff_ESI);
  return;
}



void FUN_006c9350(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W2840E2A0>_>
              ::vftable;
    FUN_006c9ef0(unaff_ESI);
    return;
  }
  FUN_006c9ef0(unaff_ESI);
  return;
}



void FUN_006c9390(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W01246002>_>
              ::vftable;
    FUN_006c9f50(unaff_ESI);
    return;
  }
  FUN_006c9f50(unaff_ESI);
  return;
}



void FUN_006c93d0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WA90ADCC4>_>
              ::vftable;
    FUN_006c9fb0(unaff_ESI);
    return;
  }
  FUN_006c9fb0(unaff_ESI);
  return;
}



undefined4 FUN_006c9410(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W68D33117>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006ca010();
    return 1;
  }
  FUN_006ca010();
  return 1;
}



undefined4 FUN_006c9460(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W56C8E7BA>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006ca1c0();
    return 1;
  }
  FUN_006ca1c0();
  return 1;
}



undefined4 FUN_006c94b0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WF9118BC3>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006ca370();
    return 1;
  }
  FUN_006ca370();
  return 1;
}



undefined4 FUN_006c9500(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W9FB55879>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006ca520();
    return 1;
  }
  FUN_006ca520();
  return 1;
}



undefined4 FUN_006c9550(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W41C9D6EF>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006ca6d0();
    return 1;
  }
  FUN_006ca6d0();
  return 1;
}



undefined4 FUN_006c95a0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WCDDBDBF5>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006ca880();
    return 1;
  }
  FUN_006ca880();
  return 1;
}



undefined4 FUN_006c95f0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W29C49F09>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006caa30();
    return 1;
  }
  FUN_006caa30();
  return 1;
}



undefined4 FUN_006c9640(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WF6346023>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006cabe0();
    return 1;
  }
  FUN_006cabe0();
  return 1;
}



undefined4 FUN_006c9690(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W36EDE25D>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006cad90();
    return 1;
  }
  FUN_006cad90();
  return 1;
}



undefined4 FUN_006c96e0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WA275561E>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006caf40();
    return 1;
  }
  FUN_006caf40();
  return 1;
}



undefined4 FUN_006c9730(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W62CF6A5E>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006cb0f0();
    return 1;
  }
  FUN_006cb0f0();
  return 1;
}



undefined4 FUN_006c9780(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W8D43B913>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006cb2a0();
    return 1;
  }
  FUN_006cb2a0();
  return 1;
}



undefined4 FUN_006c97d0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W5B0FD797>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006cb450();
    return 1;
  }
  FUN_006cb450();
  return 1;
}



undefined4 FUN_006c9820(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WC8BA1E38>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006cb600();
    return 1;
  }
  FUN_006cb600();
  return 1;
}



undefined4 FUN_006c9870(undefined4 *param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)operator_new(0x10);
  if (puVar3 != (undefined4 *)0x0) {
    *puVar3 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W2840E2A0>::vftable;
    puVar3[1] = 0;
    puVar3[2] = 0;
    puVar3[3] = 0;
  }
  puVar3 = (undefined4 *)FUN_006a7d0b(local_8);
  if (puVar3 != param_1) {
    uVar1 = *puVar3;
    *puVar3 = *param_1;
    *param_1 = uVar1;
  }
  uVar1 = param_1[1];
  param_1[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return 1;
}



undefined4 FUN_006c9910(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W01246002>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006cb960();
    return 1;
  }
  FUN_006cb960();
  return 1;
}



undefined4 FUN_006c9960(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WA90ADCC4>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006cbb10();
    return 1;
  }
  FUN_006cbb10();
  return 1;
}



undefined4 * __thiscall FUN_006c99b0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cbb70(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9a10(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cbbd0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9a70(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cbc30(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9ad0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cbc90(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9b30(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cbcf0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9b90(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cbd50(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9bf0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cbdb0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9c50(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cbe10(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9cb0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cbe70(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9d10(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cbed0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9d70(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cbf30(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9dd0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cbf90(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9e30(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cbff0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9e90(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cc050(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9ef0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cc0b0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9f50(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cc110(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006c9fb0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cc170(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006ca010(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006cc3b0(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006ca070(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W56C8E7BA>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006ca0f0(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006cc410(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006ca160(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006cc410(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006ca178. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006ca180(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006cc410(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006ca1c0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006cc480(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006ca220(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WF9118BC3>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006ca2a0(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006cc4e0(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006ca310(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006cc4e0(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006ca328. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006ca330(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006cc4e0(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006ca370(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006cc560(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006ca3d0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W9FB55879>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006ca450(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006cc5c0(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006ca4c0(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006cc5c0(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006ca4d8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006ca4e0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006cc5c0(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006ca520(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006cc630(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006ca580(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W41C9D6EF>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006ca600(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006cc690(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006ca670(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006cc690(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006ca688. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006ca690(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006cc690(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006ca6d0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006cc700(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006ca730(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WCDDBDBF5>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006ca7b0(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006cc760(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006ca820(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006cc760(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006ca838. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006ca840(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006cc760(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006ca880(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006cc7d0(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006ca8e0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W29C49F09>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006ca960(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006cc830(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006ca9d0(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006cc830(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006ca9e8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006ca9f0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006cc830(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006caa30(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006cc8a0(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006caa90(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WF6346023>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cab10(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006cc900(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006cab80(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006cc900(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006cab98. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006caba0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006cc900(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006cabe0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006cc970(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006cac40(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W36EDE25D>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cacc0(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006cc9d0(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006cad30(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006cc9d0(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006cad48. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006cad50(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006cc9d0(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006cad90(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006cca40(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006cadf0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WA275561E>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cae70(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006ccaa0(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006caee0(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006ccaa0(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006caef8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006caf00(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006ccaa0(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006caf40(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006ccb10(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006cafa0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W62CF6A5E>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cb020(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006ccb70(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006cb090(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006ccb70(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006cb0a8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006cb0b0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006ccb70(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006cb0f0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006ccbe0(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006cb150(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W8D43B913>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cb1d0(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006ccc40(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006cb240(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006ccc40(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006cb258. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006cb260(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006ccc40(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006cb2a0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006cccb0(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006cb300(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W5B0FD797>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cb380(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006ccd10(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006cb3f0(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006ccd10(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006cb408. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006cb410(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006ccd10(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006cb450(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006ccd80(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006cb4b0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WC8BA1E38>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cb530(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006ccde0(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006cb5a0(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006ccde0(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006cb5b8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006cb5c0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006ccde0(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006cb600(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006cce50(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006cb660(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W01246002>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cb6e0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  int *piVar5;
  undefined4 *local_60;
  int local_5c;
  int *local_58;
  undefined4 *local_54;
  undefined local_50 [8];
  undefined4 local_48;
  undefined4 local_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3e340;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_14;
  cVar1 = '\x01';
  FUN_00b72ec0(local_50);
  local_c = 0;
  local_5c = *(int *)(param_1_00 + 8);
  local_54 = (undefined4 *)**(undefined4 **)(local_5c + 0x1c);
  piVar5 = *(int **)(local_5c + 8);
  local_58 = piVar5;
  do {
    puVar4 = *(undefined4 **)(local_5c + 0x1c);
    if ((piVar5 == (int *)0x0) || (piVar5 != *(int **)(local_5c + 8))) {
      FUN_00a3fb10(uVar2);
    }
    if (local_54 == puVar4) {
      if (cVar1 != '\0') {
        local_48 = 0;
        local_44 = 0;
        cVar1 = FUN_00bb1450(0xffffffff);
        if (cVar1 == '\0') {
          FUN_00b940e0(0xccad8780);
        }
      }
      break;
    }
    local_60 = (undefined4 *)0x0;
    local_c._0_1_ = 1;
    puVar4 = (undefined4 *)0x0;
    if (cVar1 != '\0') {
      if (piVar5 == (int *)0x0) {
        FUN_00a3fb10(uVar2);
        iVar3 = 0;
      }
      else {
        iVar3 = *piVar5;
      }
      if (local_54 == *(undefined4 **)(iVar3 + 0x14)) {
        FUN_00a3fb10(uVar2);
      }
      cVar1 = FUN_006bc9b5(param_2,&local_60);
      puVar4 = local_60;
      if (cVar1 == '\0') {
        FUN_00b940e0(0xf409d81b);
        puVar4 = local_60;
        piVar5 = local_58;
      }
      else if ((local_60[2] != 0) &&
              (cVar1 = FUN_00bb13e0(local_60), piVar5 = local_58, cVar1 == '\0')) {
        FUN_00b940e0(0xccb86cc2);
        piVar5 = local_58;
      }
    }
    local_c = (uint)local_c._1_3_ << 8;
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)(1);
    }
    if (piVar5 == (int *)0x0) {
      FUN_00a3fb10();
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar5;
    }
    puVar4 = local_54;
    if (local_54 == *(undefined4 **)(iVar3 + 0x14)) {
      FUN_00a3fb10();
    }
    local_54 = (undefined4 *)*puVar4;
  } while (cVar1 != '\0');
  local_c = 0xffffffff;
  FUN_00b72d90();
  ExceptionList = local_14;
  return cVar1;
}



char __thiscall FUN_006cb890(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006cceb0(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006cb900(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006cceb0(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006cb918. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006cb920(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006cceb0(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006cb960(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006ccf20(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006cb9c0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WA90ADCC4>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cba40(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006ccf80(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006cbab0(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006ccf80(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006cbac8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006cbad0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006ccf80(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006cbb10(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006cd010(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006cbb70(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd070(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cbbd0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd110(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cbc30(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd1b0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cbc90(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd250(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cbcf0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd2f0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cbd50(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd390(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cbdb0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd430(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cbe10(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd4d0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cbe70(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd570(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cbed0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd610(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cbf30(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd6b0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cbf90(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd750(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cbff0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd7f0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cc050(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd890(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cc0b0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd930(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cc110(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cd9d0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cc170(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cda70(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 __thiscall FUN_006cc1d0(undefined4 param_1_00,byte param_1)

{
  FUN_006ca070();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006cc1f0(undefined4 param_1_00,byte param_1)

{
  FUN_006ca220();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006cc210(undefined4 param_1_00,byte param_1)

{
  FUN_006ca3d0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006cc230(undefined4 param_1_00,byte param_1)

{
  FUN_006ca580();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006cc250(undefined4 param_1_00,byte param_1)

{
  FUN_006ca730();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006cc270(undefined4 param_1_00,byte param_1)

{
  FUN_006ca8e0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006cc290(undefined4 param_1_00,byte param_1)

{
  FUN_006caa90();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006cc2b0(undefined4 param_1_00,byte param_1)

{
  FUN_006cac40();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006cc2d0(undefined4 param_1_00,byte param_1)

{
  FUN_006cadf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006cc2f0(undefined4 param_1_00,byte param_1)

{
  FUN_006cafa0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006cc310(undefined4 param_1_00,byte param_1)

{
  FUN_006cb150();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006cc330(undefined4 param_1_00,byte param_1)

{
  FUN_006cb300();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006cc350(undefined4 param_1_00,byte param_1)

{
  FUN_006cb4b0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006cc370(undefined4 param_1_00,byte param_1)

{
  FUN_006cb660();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006cc390(undefined4 param_1_00,byte param_1)

{
  FUN_006cb9c0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_006cc3b0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cdb10(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006cc410(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xa4);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006a9549(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006cdb70(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006cc480(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cdbd0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006cc4e0(int param_1)

{
  void *pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x94);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    FUN_006a9660(pvVar1);
  }
  local_4 = 0xffffffff;
  FUN_006a240f(param_1 + 8);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006cc560(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cdc30(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006cc5c0(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x94);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006a9756(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006cdc90(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006cc630(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cdcf0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006cc690(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x94);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006a95b4(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006cdd50(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006cc700(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cddb0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006cc760(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x94);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006a960a(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006cde10(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006cc7d0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cde70(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006cc830(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xac);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006a94ba(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006cded0(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006cc8a0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cdf30(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006cc900(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xa4);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006a86d5(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006cdf90(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006cc970(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006cdff0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006cc9d0(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xd4);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006a8623(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006ce050(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006cca40(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006ce0b0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006ccaa0(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x94);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006a76c2(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006ce110(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006ccb10(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006ce170(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006ccb70(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x94);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006a7622(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006ce1d0(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006ccbe0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006ce230(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006ccc40(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xbc);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006a756e(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006ce290(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006cccb0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006ce2f0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006ccd10(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xac);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006a6d3d(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006ce350(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006ccd80(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006ce3b0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006ccde0(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x9c);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006a84d1(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006ce410(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006cce50(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006ce470(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006cceb0(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xcc);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_006a6cba(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006ce4d0(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006ccf20(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006ce530(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006ccf80(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c392d5;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x9c);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_006ae5af(puVar2);
    local_4 = CONCAT31(local_4._1_3_,1);
    *puVar2 = WF8266037::WD1C3C411::WA90ADCC4::vftable;
    FUN_006a6daa(puVar2 + 0x1d,puVar2,0x20060001);
  }
  local_4 = 0xffffffff;
  FUN_006ce590(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006cd010(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006ce5f0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006cd070(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0aa60;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W68D33117>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd0e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd110(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0aa40;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W56C8E7BA>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd189(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd1b0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0aa20;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WF9118BC3>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd229(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd250(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0aa00;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W9FB55879>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd2c9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd2f0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a9e0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W41C9D6EF>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd369(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd390(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a9c0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WCDDBDBF5>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd409(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd430(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a9a0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W29C49F09>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd4a9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd4d0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a980;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WF6346023>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd549(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd570(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a960;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W36EDE25D>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd5e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd610(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a940;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WA275561E>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd689(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd6b0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a920;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W62CF6A5E>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd729(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd750(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a900;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W8D43B913>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd7c9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd7f0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a8e0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W5B0FD797>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd869(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd890(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a8c0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WC8BA1E38>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd909(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd930(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a8a0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W2840E2A0>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cd9a9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cd9d0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a880;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W01246002>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cda49(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cda70(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a860;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WA90ADCC4>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cdae9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_006cdb10(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006ce650(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006cdb70(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a274a(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006cdbd0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006ce6f0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006cdc30(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006ce790(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006cdc90(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a23c2(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006cdcf0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006ce830(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006cdd50(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a263f(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006cddb0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006ce8d0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006cde10(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a2534(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006cde70(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006ce970(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006cded0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a2855(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006cdf30(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cea10(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006cdf90(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a2960(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006cdff0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006ceab0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006ce050(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a2a6b(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006ce0b0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006ceb50(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006ce110(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a2c81(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006ce170(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cebf0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006ce1d0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a2d8c(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006ce230(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cec90(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006ce290(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a2e97(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006ce2f0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006ced30(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006ce350(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a2fa2(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006ce3b0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cedd0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006ce410(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a2b76(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006ce470(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cee70(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006ce4d0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a30ad(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006ce530(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cef10(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006ce590(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a31b8(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006ce5f0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006cefb0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_006ce650(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a840;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W68D33117>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006ce6c9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006ce6f0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a820;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W56C8E7BA>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006ce769(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006ce790(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a800;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WF9118BC3>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006ce809(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006ce830(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a7e0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W9FB55879>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006ce8a9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006ce8d0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a7c0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W41C9D6EF>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006ce949(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006ce970(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a7a0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WCDDBDBF5>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006ce9e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cea10(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a780;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W29C49F09>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cea89(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006ceab0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a760;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WF6346023>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006ceb29(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006ceb50(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a740;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W36EDE25D>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cebc9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cebf0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a720;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WA275561E>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cec69(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cec90(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a700;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W62CF6A5E>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006ced09(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006ced30(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a6e0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W8D43B913>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006ceda9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cedd0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a6c0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W5B0FD797>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cee49(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cee70(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a6a0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WC8BA1E38>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006ceee9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cef10(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a680;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::W01246002>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cef89(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006cefb0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a660;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD1C3C411::WA90ADCC4>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006cf029(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_006cf050(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WEE3000FF>_>
              ::vftable;
    FUN_006cf3b0(unaff_ESI);
    return;
  }
  FUN_006cf3b0(unaff_ESI);
  return;
}



void FUN_006cf090(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W151127E5>_>
              ::vftable;
    FUN_006cf410(unaff_ESI);
    return;
  }
  FUN_006cf410(unaff_ESI);
  return;
}



void FUN_006cf0d0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WEA11876F>_>
              ::vftable;
    FUN_006cf470(unaff_ESI);
    return;
  }
  FUN_006cf470(unaff_ESI);
  return;
}



void FUN_006cf110(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W6E9B899C>_>
              ::vftable;
    FUN_006cf4d0(unaff_ESI);
    return;
  }
  FUN_006cf4d0(unaff_ESI);
  return;
}



void FUN_006cf150(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W546FF548>_>
              ::vftable;
    FUN_006cf530(unaff_ESI);
    return;
  }
  FUN_006cf530(unaff_ESI);
  return;
}



void FUN_006cf190(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = WF8266037::W2AC8B1F5::
              W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WCD676C77>_>
              ::vftable;
    FUN_006cf590(unaff_ESI);
    return;
  }
  FUN_006cf590(unaff_ESI);
  return;
}



undefined4 FUN_006cf1d0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WEE3000FF>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006cf740();
    return 1;
  }
  FUN_006cf740();
  return 1;
}



undefined4 FUN_006cf220(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W151127E5>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006cf8f0();
    return 1;
  }
  FUN_006cf8f0();
  return 1;
}



undefined4 FUN_006cf270(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WEA11876F>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006cfaa0();
    return 1;
  }
  FUN_006cfaa0();
  return 1;
}



undefined4 FUN_006cf2c0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W6E9B899C>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006cfc50();
    return 1;
  }
  FUN_006cfc50();
  return 1;
}



undefined4 FUN_006cf310(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W546FF548>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006cfe00();
    return 1;
  }
  FUN_006cfe00();
  return 1;
}



undefined4 FUN_006cf360(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WCD676C77>::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    FUN_006cffb0();
    return 1;
  }
  FUN_006cffb0();
  return 1;
}



undefined4 * __thiscall FUN_006cf3b0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006d0010(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006cf410(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006d0070(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006cf470(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006d00d0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006cf4d0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006d0130(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006cf530(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006d0190(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006cf590(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006d01f0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_006cf5f0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WEE3000FF>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cf670(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006d0370(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006cf6e0(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006d0370(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006cf6f8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006cf700(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006d0370(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006cf740(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006d03e0(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006cf7a0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W151127E5>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cf820(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006d0440(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006cf890(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006d0440(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006cf8a8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006cf8b0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006d0440(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006cf8f0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006d04f0(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006cf950(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WEA11876F>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cf9d0(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006d0550(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006cfa40(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006d0550(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006cfa58. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006cfa60(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006d0550(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006cfaa0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006d0600(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006cfb00(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W6E9B899C>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cfb80(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006d0660(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006cfbf0(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006d0660(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006cfc08. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006cfc10(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006d0660(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006cfc50(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006d06d0(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006cfcb0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W546FF548>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cfd30(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006d0730(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006cfda0(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006d0730(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006cfdb8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006cfdc0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006d0730(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006cfe00(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006d07a0(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_006cfe60(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c15108;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WCD676C77>::vftable;
  local_4 = 0;
  piVar1 = (int *)param_1[3];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = WF8266037::W2AC8B1F5::W041FECE6::vftable;
  ExceptionList = local_c;
  return;
}



char __thiscall FUN_006cfee0(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = '\x01';
  FUN_006d0800(param_1_00);
  iVar1 = *(int *)(param_2 + 8);
  do {
    if (iVar1 == 0) {
      return cVar2;
    }
    cVar2 = FUN_006bce63(param_1,*(undefined4 *)(param_1_00 + 8),param_2);
  } while (cVar2 != '\0');
  FUN_00b940e0(0x37d7527e);
  return '\0';
}



void __fastcall FUN_006cff50(int param_1)

{
  if (*(int *)(param_1 + 8) == 0) {
    FUN_006d0800(param_1);
  }
                    // WARNING: Could not recover jumptable at 0x006cff68. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 4))();
  return;
}



void __thiscall FUN_006cff70(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    FUN_006d0800(param_1_00);
  }
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_006cffb0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006d0870(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006d0010(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006d08d0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __break(void)

{
  code *pcVar1;
  
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_006d0070(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006d0970(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006d00d0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006d0a10(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006d0130(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006d0ab0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006d0190(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006d0b50(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_006d01f0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006d0bf0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 __thiscall FUN_006d0250(undefined4 param_1_00,byte param_1)

{
  FUN_006cf5f0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006d0270(undefined4 param_1_00,byte param_1)

{
  FUN_006cf7a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006d0290(undefined4 param_1_00,byte param_1)

{
  FUN_006cf950();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006d02b0(undefined4 param_1_00,byte param_1)

{
  FUN_006cfb00();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006d02d0(undefined4 param_1_00,byte param_1)

{
  FUN_006cfcb0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_006d02f0(undefined4 param_1_00,byte param_1)

{
  FUN_006cfe60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006d0310(void)

{
  int *piVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 local_8 [2];
  
  if (local_8 != in_EAX) {
    *in_EAX = 0;
  }
  piVar1 = (int *)in_EAX[1];
  in_EAX[1] = 0;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
                    // WARNING: Could not recover jumptable at 0x006d035c. Too many branches
                    // WARNING: Treating indirect jump as call
        (**(code **)(*piVar1 + 8))();
        return;
      }
    }
  }
  return;
}



void FUN_006d0370(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x94);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_0069a7a1(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006d0ca0(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006d03e0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006d0d00(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006d0440(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3e308;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x84);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_006ae5af(puVar2);
    *puVar2 = WF8266037::WD72F1F4B::WC11AD973::vftable;
    puVar2[0x1d] = WF8266037::W2AC8B1F5::W329C7FF8<struct_boost::uuids::uuid>::vftable;
    puVar2[0x1e] = 6;
    puVar2[0x1f] = 0;
    puVar2[0x20] = 0;
    local_4 = CONCAT31(local_4._1_3_,3);
    FUN_006bebcf(puVar2 + 0x1d);
    *puVar2 = WF8266037::WD72F1F4B::W151127E5::vftable;
  }
  local_4 = 0xffffffff;
  FUN_006d0d60(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006d04f0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006d0dc0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006d0550(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3e308;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x84);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_006ae5af(puVar2);
    *puVar2 = WF8266037::WD72F1F4B::WC11AD973::vftable;
    puVar2[0x1d] = WF8266037::W2AC8B1F5::W329C7FF8<struct_boost::uuids::uuid>::vftable;
    puVar2[0x1e] = 6;
    puVar2[0x1f] = 0;
    puVar2[0x20] = 0;
    local_4 = CONCAT31(local_4._1_3_,3);
    FUN_006bebcf(puVar2 + 0x1d);
    *puVar2 = WF8266037::WD72F1F4B::WEA11876F::vftable;
  }
  local_4 = 0xffffffff;
  FUN_006d0e20(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006d0600(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006d0e80(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006d0660(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x94);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_0069a835(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006d0ee0(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006d06d0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006d0f40(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006d0730(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xa4);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_0069a8db(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006d0fa0(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006d07a0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006d1000(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_006d0800(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xa4);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_0069a987(pvVar2);
  }
  local_4 = 0xffffffff;
  FUN_006d1060(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_006d0870(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_006d10c0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_006d08d0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a640;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WEE3000FF>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006d0949(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006d0970(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a620;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W151127E5>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006d09e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006d0a10(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a600;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WEA11876F>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006d0a89(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006d0ab0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a5e0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W6E9B899C>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006d0b29(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006d0b50(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a5c0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W546FF548>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006d0bc9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006d0bf0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a5a0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W56256EB3<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WCD676C77>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006d0c69(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_006d0c90(void)

{
  return 0;
}



void FUN_006d0ca0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a3310(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006d0d00(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006d1120(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006d0d60(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a341b(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006d0dc0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006d11c0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006d0e20(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a35c0(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006d0e80(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006d1260(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006d0ee0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a3205(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006d0f40(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006d1300(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006d0fa0(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a3526(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006d1000(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006d13a0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_006d1060(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined local_8 [4];
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_006a3573(local_8);
  if (puVar3 != in_EAX) {
    uVar1 = *puVar3;
    *puVar3 = *in_EAX;
    *in_EAX = uVar1;
  }
  uVar1 = in_EAX[1];
  in_EAX[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_006d10c0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_006d1440(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_006d1120(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a580;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WEE3000FF>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006d1199(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006d11c0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a560;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W151127E5>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006d1239(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006d1260(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a540;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WEA11876F>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006d12d9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006d1300(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a520;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W6E9B899C>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006d1379(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006d13a0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a500;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::W546FF548>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006d1419(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006d1440(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c0a4e0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_WF8266037::W2AC8B1F5::W16DC0F99<class_WF8266037::WD72F1F4B::WCD676C77>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_006d14b9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_006d14e0(void)

{
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006d15bd)

undefined4 * FUN_006d154a(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006d19a9();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006d1896(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6d18a2;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WB4D94959::W31C669F9::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WB4D94959::W31C669F9::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006d1992(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d19a9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::W31C669F9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d19ef(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d1a06(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::WA952243F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d1a4c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006d1b3d)

undefined4 * FUN_006d1aca(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006d1f29();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006d1e16(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6d1e22;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WB4D94959::W86D26F18::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WB4D94959::W86D26F18::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006d1f12(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d1f29(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::W86D26F18>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d1f6f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d1f86(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::WC11AEEC6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d1fcc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006d243d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6d2449;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WB4D94959::W07CE1603::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WB4D94959::W07CE1603::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006d2539(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d2550(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::WE407F231>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d2596(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d25ad(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::W07CE1603>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d25f3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006d26ea)

undefined4 * FUN_006d2671(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x18c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006d2a0b();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006d28f8(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6d2904;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WB4D94959::W2163800B::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WB4D94959::W2163800B::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006d29f4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d2a0b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::W2163800B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d2a51(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006d2c3b)

undefined4 * FUN_006d2bc8(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x44);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006d2e97();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006d2d27(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6d2d33;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WB4D94959::WDE8DCAB0::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WB4D94959::WDE8DCAB0::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006d2e23(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d2e3a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::WF03FFA43>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d2e80(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d2e97(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::W0F8894C6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d2edd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_006d2f5b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WDE765622::W7EAF48B4::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006d2feb)

undefined4 * FUN_006d2f78(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006d3229();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



void Catch_All_006d3212(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d3229(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::WD1F6E59B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d326f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006d3360)

undefined4 * FUN_006d32ed(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006d374d();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006d363a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6d3646;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WB4D94959::W03DC951A::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WB4D94959::W03DC951A::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006d3736(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d374d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::W03DC951A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d3793(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d37aa(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::W324D03D3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d37f0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006d386e(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_006e0074(param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_006d3c7d(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006d3b6a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6d3b76;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WB4D94959::W1B0A637A::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WB4D94959::W1B0A637A::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006d3c66(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d3c7d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::W1B0A637A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d3cc3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d3cda(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::W2ABF808B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d3d20(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006d3e14)

undefined4 * FUN_006d3d9e(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x3c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006d422e();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006d411b(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6d4127;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WB4D94959::W99A02EBD::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WB4D94959::W99A02EBD::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006d4217(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d422e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::W99A02EBD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d4274(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d428b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::WBBC443C2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d42d1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006d43c5)

undefined4 * FUN_006d434f(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x44);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006d47de();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006d46cb(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6d46d7;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WB4D94959::WB9E940C7::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WB4D94959::WB9E940C7::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006d47c7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d47de(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::WB9E940C7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d4824(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d483b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::W1265DF5E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d4881(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006d4975)

undefined4 * FUN_006d48ff(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x3c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006d4d8e();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006d4c7b(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6d4c87;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WB4D94959::W18D1F3E7::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WB4D94959::W18D1F3E7::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006d4d77(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d4d8e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::W18D1F3E7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d4dd4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d4deb(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB4D94959::W301B100B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d4e31(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006d507d(int param_1)

{
  if (*(int *)(param_1 + 0x120) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x118) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x100) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0xf8) != 0) {
    FUN_0040127a();
  }
  FUN_004f8d32(param_1);
  return;
}



void FUN_006d50ed(void)

{
  undefined4 *puVar1;
  undefined4 local_39c;
  undefined4 local_398;
  uint uStack_394;
  undefined auStack_384 [12];
  undefined4 *local_378;
  undefined local_364 [840];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4f733;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_384;
  uStack_394 = DAT_0323f878 ^ (uint)&stack0xfffffc70;
  ExceptionList = &local_14;
  local_378 = &local_39c;
  local_39c = 0xa0c;
  local_398 = 8;
  puVar1 = (undefined4 *)FUN_00465be3(local_364);
  local_c = 0;
  local_39c = *puVar1;
  local_378 = &local_39c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_006d5a77(int param_1_00,byte param_1)

{
  FUN_004017b2(1,0);
  if (*(int *)(param_1_00 + 300) != 0) {
    FUN_0040127a();
  }
  FUN_006d507d(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006d5ae1(void)

{
  undefined4 *puVar1;
  undefined4 local_40c;
  undefined4 local_408;
  uint uStack_404;
  undefined auStack_3f4 [8];
  undefined4 *local_3ec;
  undefined4 local_3e4;
  undefined local_3e0 [964];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4f66b;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_3f4;
  uStack_404 = DAT_0323f878 ^ (uint)&stack0xfffffc00;
  ExceptionList = &local_14;
  local_3e4 = 0;
  local_3ec = &local_40c;
  local_40c = 0x5022;
  local_408 = 0x46;
  puVar1 = (undefined4 *)FUN_00465be3(local_3e0);
  local_c = 0;
  local_40c = *puVar1;
  local_3ec = &local_40c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_006d67d5(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd09a9;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_006d681e(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006d6859(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_WB4D94959::WC11AEEC6,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WB4D94959::WC11AEEC6*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006d6859(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_WB4D94959::WC11AEEC6,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WB4D94959::WC11AEEC6*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_WB4D94959::WC11AEEC6,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WB4D94959::WC11AEEC6*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006d6a37(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::W48C30BBA>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006d6a7d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006d6a94(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WE711C61D::W48C30BBA::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_006d6a37(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 __thiscall FUN_006d6c1d(undefined4 param_1_00,byte param_1)

{
  FUN_006d6c3a(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006d6c3a(int param_1)

{
  FUN_00417fe6();
  if (*(int *)(param_1 + 0x144) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x13c) != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  if (*(int *)(param_1 + 300) != 0) {
    FUN_0040127a();
  }
  FUN_006d507d(param_1);
  return;
}



void FUN_006d6cad(void)

{
  int iVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [28];
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c25b87;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_50,&DAT_00ddc360,8);
  local_c = 0;
  FUN_00b94330();
  iVar1 = FUN_005d04b6();
  FUN_004017b2();
  local_c = 0xffffffff;
  FUN_004017b2();
  if (iVar1 != -1) {
    FUN_005d0682(local_34);
    local_c = 1;
    iVar1 = FUN_00467341();
    local_c = CONCAT31(local_c._1_3_,2);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_006d6e30(int param_1)

{
  undefined4 uStack_500;
  undefined4 uStack_4fc;
  int **ppiStack_4f8;
  int *piStack_4f4;
  int *piStack_4f0;
  uint uStack_4ec;
  undefined auStack_4dc [4];
  undefined4 *puStack_4d8;
  int local_4d0;
  int **local_4cc;
  undefined4 uStack_464;
  undefined auStack_460 [1092];
  uint local_1c;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c5f835;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_4dc;
  uStack_4ec = DAT_0323f878 ^ (uint)&stack0xfffffb18;
  ExceptionList = &local_14;
  piStack_4f4 = *(int **)(param_1 + 0x128);
  local_4cc = &piStack_4f4;
  ppiStack_4f8 = &piStack_4f4;
  uStack_4fc = 0x6d6e8a;
  piStack_4f0 = piStack_4f4;
  local_4d0 = param_1;
  (**(code **)(*piStack_4f4 + 0x14))();
  uStack_4fc = 0x6d6e92;
  (**(code **)(**(int **)(param_1 + 4) + 0x10))();
  uStack_4fc = 0x6d6ea0;
  FUN_004fa2a2();
  uStack_18 = 0;
  puStack_4d8 = &uStack_500;
  uStack_500 = uStack_464;
                    // WARNING: Subroutine does not return
  FUN_0043c023(auStack_460);
}



void FUN_006d9324(void)

{
  uint uVar1;
  int local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_14;
  FUN_006d9391(&local_20);
  local_c = 0;
  if (local_20 != 0) {
    FUN_00b725b0(uVar1);
  }
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006d9391(undefined4 *param_1)

{
  int unaff_EDI;
  
  FUN_0043d406(unaff_EDI + 0x130);
  *param_1 = *(undefined4 *)(unaff_EDI + 0x138);
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EDI + 0x13c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006d9434(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined local_38 [32];
  undefined4 local_18;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  *param_1 = 0;
  local_8 = 0;
  local_18 = 1;
  if (param_3 == 3) {
    FUN_007fc045(local_38,param_2);
    local_8 = 1;
    FUN_00607a72(param_1);
    local_8 = local_8 & 0xffffff00;
    FUN_00507e58();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_006d9489(undefined4 *param_1,undefined *param_2,int param_3,int param_4,char param_5)

{
  undefined local_38 [32];
  undefined4 local_18;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  *param_1 = 0;
  local_8 = 0;
  local_18 = 1;
  *param_2 = 0;
  if (param_4 == 3) {
    FUN_007fbfeb(local_38,param_3);
    local_8 = 1;
    FUN_00607a72(param_1);
    local_8 = local_8 & 0xffffff00;
    FUN_00507e58();
  }
  else if (param_4 == 2) {
    if (param_3 != 0x24) {
      if (param_3 != 0x31) {
        return param_1;
      }
      if (param_5 == '\0') {
        FUN_004fc968(param_1);
        *param_2 = 1;
        return param_1;
      }
    }
    FUN_004fc968(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006d951f(undefined4 *param_1,int param_2,int param_3)

{
  undefined local_38 [32];
  undefined4 local_18;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  *param_1 = 0;
  local_8 = 0;
  local_18 = 1;
  if (param_3 == 3) {
    FUN_007fc09f(local_38,param_2);
    local_8 = 1;
    FUN_00607a72(param_1);
    local_8 = local_8 & 0xffffff00;
    FUN_00507e58();
  }
  else if ((param_3 == 2) && (param_2 == 0x31)) {
    FUN_004fc968(param_1);
  }
  return param_1;
}



void FUN_006d958b(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd0a19;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_006d95d4(undefined4 *param_1_00,int param_1)

{
  undefined4 uVar1;
  
  FUN_004382a5(param_1);
  *(undefined4 *)(param_1 + 0x20) = 0;
  uVar1 = FUN_006d958b(*param_1_00,param_1_00[1]);
  FUN_004fc9c9(uVar1);
  FUN_00507e58();
  return param_1;
}



void FUN_006d9621(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd0a21;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_006d966a(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006d96e0(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WB4D94959::WE407F231>,class_boost::_bi::list1<class_boost::_bi::value<class_WB4D94959::WE407F231*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006d96a5(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006d9729(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_WB4D94959::WE407F231,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WB4D94959::WE407F231*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006d96e0(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WB4D94959::WE407F231>,class_boost::_bi::list1<class_boost::_bi::value<class_WB4D94959::WE407F231*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WB4D94959::WE407F231>,class_boost::_bi::list1<class_boost::_bi::value<class_WB4D94959::WE407F231*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_006d9729(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_WB4D94959::WE407F231,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WB4D94959::WE407F231*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_WB4D94959::WE407F231,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WB4D94959::WE407F231*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 __thiscall FUN_006da9e2(undefined4 param_1_00,byte param_1)

{
  FUN_006da9ff(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_006da9ff(int param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 8;
  puVar1 = auStack_24;
  auStack_24[0] = 0x6daa1d;
  FUN_005fe886();
  if (*(int *)(param_1 + 0x60) != 0) {
    puVar1[-1] = 0x6daa29;
    FUN_0040127a();
  }
  local_8._0_1_ = 7;
  if (*(int *)(param_1 + 0x58) != 0) {
    puVar1[-1] = 0x6daa39;
    FUN_0040127a();
  }
  local_8._0_1_ = 6;
  if (*(int *)(param_1 + 0x50) != 0) {
    puVar1[-1] = 0x6daa49;
    FUN_0040127a();
  }
  local_8._0_1_ = 5;
  if (*(int *)(param_1 + 0x48) != 0) {
    puVar1[-1] = 0x6daa59;
    FUN_0040127a();
  }
  local_8._0_1_ = 4;
  if (*(int *)(param_1 + 0x40) != 0) {
    puVar1[-1] = 0x6daa69;
    FUN_0040127a();
  }
  local_8._0_1_ = 3;
  if (*(int *)(param_1 + 0x38) != 0) {
    puVar1[-1] = 0x6daa79;
    FUN_0040127a();
  }
  local_8._0_1_ = 2;
  if (*(int *)(param_1 + 0x30) != 0) {
    puVar1[-1] = 0x6daa89;
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (*(int *)(param_1 + 0x28) != 0) {
    puVar1[-1] = 0x6daa99;
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (*(int *)(param_1 + 0x20) != 0) {
    puVar1[-1] = 0x6daaa9;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  puVar1[-1] = param_1;
  puVar1[-2] = 0x6daab3;
  FUN_004d9011();
  puVar1[-1] = 0x6daab8;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006daabb(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  undefined local_24 [4];
  int local_20;
  void *local_1c;
  undefined4 local_18;
  uint local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  *param_1 = 0;
  param_1[1] = 0;
  local_8 = 0;
  local_18 = 1;
  local_1c = (void *)FUN_007b2d68();
  local_14 = 0;
  if ((*(int *)(param_1_00 + 0x74) - *(int *)(param_1_00 + 0x70)) / 0x74 != 0) {
    do {
      FUN_005fe8b3(local_14);
      iVar1 = FUN_004f61ef();
      if ((void *)iVar1 == local_1c) {
        local_1c = operator_new(0x74);
        local_8 = 1;
        if (local_1c != (void *)0x0) {
          FUN_005fe8b3(local_14);
          FUN_004f615e(local_1c);
        }
        local_8 = local_8 & 0xffffff00;
        FUN_005fe97c(local_24);
        local_8 = 2;
        FUN_004fe47e();
        local_8 = local_8 & 0xffffff00;
        if (local_20 == 0) {
          return param_1;
        }
        FUN_0040127a();
        return param_1;
      }
      local_14 = local_14 + 1;
    } while (local_14 < (uint)((*(int *)(param_1_00 + 0x74) - *(int *)(param_1_00 + 0x70)) / 0x74));
  }
  return param_1;
}



void FUN_006dab88(void)

{
  FUN_007b2498();
  return;
}



void FUN_006dab90(void)

{
  FUN_007b2498();
  return;
}



void FUN_006dc001(void)

{
  FUN_007b2d68();
  return;
}



void __fastcall FUN_006dc196(int param_1)

{
  undefined *puStack_448;
  undefined4 uStack_444;
  int **ppiStack_440;
  int *piStack_43c;
  int *piStack_438;
  uint uStack_434;
  undefined auStack_424 [4];
  int local_420;
  undefined **ppuStack_410;
  undefined4 uStack_40c;
  undefined uStack_407;
  undefined uStack_406;
  undefined uStack_405;
  int **ppiStack_404;
  undefined auStack_400 [996];
  uint local_1c;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c587ac;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_424;
  uStack_434 = DAT_0323f878 ^ (uint)&stack0xfffffbd0;
  ExceptionList = &local_14;
  piStack_438 = (int *)0x6dc1e7;
  local_420 = param_1;
  uStack_405 = (**(code **)(**(int **)(param_1 + 0x128) + 0x20))();
  piStack_438 = (int *)0x6dc1f6;
  uStack_406 = (**(code **)(**(int **)(param_1 + 0x128) + 0x24))();
  piStack_438 = (int *)0x6dc205;
  uStack_40c = (**(code **)(**(int **)(param_1 + 0x128) + 0x28))();
  piStack_438 = (int *)0x6dc214;
  uStack_407 = (**(code **)(**(int **)(param_1 + 0x128) + 0x2c))();
  piStack_43c = *(int **)(param_1 + 0x128);
  ppiStack_404 = &piStack_43c;
  ppiStack_440 = &piStack_43c;
  uStack_444 = 0x6dc22c;
  piStack_438 = piStack_43c;
  (**(code **)(*piStack_43c + 0x18))();
  uStack_444 = 0x6dc234;
  (**(code **)(**(int **)(param_1 + 4) + 0x10))();
  uStack_444 = 0x6dc23f;
  FUN_004fa2a2();
  uStack_18 = 0;
  ppuStack_410 = &puStack_448;
  puStack_448 = (undefined *)ppiStack_404;
                    // WARNING: Subroutine does not return
  FUN_0043c023(auStack_400);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_006dcfb7(int param_1_00,undefined4 *param_1)

{
  undefined auStack_50 [20];
  undefined4 uStack_3c;
  undefined *puStack_38;
  undefined **ppuStack_34;
  undefined4 local_20;
  int local_1c;
  undefined *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_20 = 0;
  local_1c = 0;
  ppuStack_34 = (undefined **)(param_1_00 + 0x104);
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  puStack_38 = (undefined *)0x6dcfe0;
  FUN_007b47f9();
  local_18 = auStack_50;
  FUN_00672a11();
  local_11 = FUN_0051605d();
  if (local_11 == '\0') {
    ppuStack_34 = (undefined **)0xa245b5cb;
    puStack_38 = (undefined *)0x6dd089;
    FUN_00b940e0();
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_1c != 0) {
      ppuStack_34 = (undefined **)0x6dd099;
      FUN_0040127a();
    }
    local_8 = 0xffffffff;
    ppuStack_34 = (undefined **)0x6dd0a5;
    FUN_00507e58();
    return local_11;
  }
  ppuStack_34 = &local_18;
  local_18 = (undefined *)0x0;
  puStack_38 = (undefined *)0x6dd021;
  FUN_00ba477f();
  ppuStack_34 = (undefined **)0x0;
  puStack_38 = local_18;
  uStack_3c = 0x6dd02c;
  (**(code **)*param_1)();
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0x118);
}



char FUN_006dd0b0(void)

{
  char cVar1;
  int in_EAX;
  
  FUN_005079d0(FUN_005d1cc5,*(undefined4 *)(in_EAX + 4));
  cVar1 = FUN_005d2ca5();
  if (cVar1 == '\0') {
    cVar1 = '\0';
  }
  else {
    cVar1 = FUN_005d2d25();
    if (cVar1 == '\0') {
      cVar1 = '\0';
    }
    else {
      cVar1 = FUN_005d2eed();
      if (cVar1 != '\0') {
        FUN_007e2c7c();
        return cVar1;
      }
    }
  }
  FUN_00b940e0();
  return cVar1;
}



undefined4 FUN_006dd164(undefined4 param_1)

{
  FUN_004180b1();
  FUN_00515d2b(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006dd194(void)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_24 [4];
  int local_20;
  int local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18 = 0;
  local_8 = 0;
  FUN_006dd164(local_24);
  local_8._0_1_ = 1;
  FUN_004fe47e();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  cVar1 = local_1c != 0;
  if ((bool)cVar1) {
    cVar1 = FUN_005d3ad3(local_1c);
    if (cVar1 != '\0') goto LAB_006dd214;
    uVar2 = 0x1f1fd11b;
  }
  else {
    uVar2 = 0xcec2b3b9;
  }
  FUN_00b940e0(uVar2);
LAB_006dd214:
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_006dd22c(int param_1_00,undefined4 param_1,int *param_2)

{
  int extraout_ECX;
  undefined4 **local_50;
  undefined4 *puStack_4c;
  int local_34;
  int *local_30;
  int local_2c;
  undefined4 local_28;
  int local_24;
  undefined4 ***local_1c;
  undefined4 *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x6dd238;
  puStack_4c = (undefined4 *)0x6dd245;
  FUN_007dd2a5();
  local_30 = (int *)0x0;
  local_2c = 0;
  puStack_4c = &local_28;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  local_50 = (undefined4 **)0x6dd25d;
  FUN_006dd164();
  local_8._0_1_ = 2;
  puStack_4c = (undefined4 *)0x6dd269;
  FUN_004fe47e();
  local_8 = CONCAT31(local_8._1_3_,1);
  puStack_4c = (undefined4 *)local_24;
  if (local_24 != 0) {
    puStack_4c = (undefined4 *)0x6dd279;
    FUN_0040127a();
    puStack_4c = (undefined4 *)extraout_ECX;
  }
  local_11 = local_30 != (int *)0x0;
  if (!(bool)local_11) {
    puStack_4c = (undefined4 *)0xdab437da;
    local_50 = (undefined4 **)0x6dd295;
    FUN_00b940e0();
  }
  local_28 = 0;
  local_24 = 0;
  local_8 = CONCAT31(local_8._1_3_,3);
  if (local_11 != '\0') {
    local_1c = &local_50;
    local_50 = *(undefined4 ***)(param_1_00 + 0x130);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1_00 + 0x134);
  }
  puStack_4c = (undefined4 *)0x6dd390;
  FUN_0074ca40();
  if (local_11 != '\0') {
    puStack_4c = (undefined4 *)0x6dd39e;
    local_11 = (**(code **)(*param_2 + 0x18))();
    if (local_11 == '\0') {
      puStack_4c = (undefined4 *)0x6bad30ec;
      local_50 = (undefined4 **)0x6dd3b4;
      FUN_00b940e0();
    }
  }
  local_18 = (undefined4 *)0x0;
  local_8._0_1_ = 6;
  if (local_11 != '\0') {
    puStack_4c = (undefined4 *)0x0;
    local_50 = &local_18;
    local_11 = (**(code **)(*local_30 + 0x10))();
    puStack_4c = local_18;
    if (local_11 == '\0') {
      puStack_4c = (undefined4 *)0x762c6a2d;
      local_11 = '\0';
    }
    else {
      local_18 = (undefined4 *)0x0;
      local_50 = (undefined4 **)0x6dd403;
      local_11 = (**(code **)(**(int **)(*(int *)(param_1_00 + 0x114) + 0x10) + 0x108))();
      if (local_11 != '\0') {
        puStack_4c = (undefined4 *)0x6dd427;
        FUN_007dd228();
        puStack_4c = (undefined4 *)0x6dd432;
        FUN_007dd1f3();
        goto LAB_006dd432;
      }
      puStack_4c = (undefined4 *)0xeac3a149;
    }
    local_50 = (undefined4 **)0x6dd419;
    FUN_00b940e0();
  }
LAB_006dd432:
  local_8._0_1_ = 3;
  if (local_18 != (undefined4 *)0x0) {
    puStack_4c = (undefined4 *)0x1;
    local_50 = (undefined4 **)0x6dd443;
    (**(code **)*local_18)();
  }
  local_8._0_1_ = 1;
  if (local_24 != 0) {
    puStack_4c = (undefined4 *)0x6dd453;
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_2c != 0) {
    puStack_4c = (undefined4 *)0x6dd463;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_34 != 0) {
    puStack_4c = (undefined4 *)0x6dd473;
    FUN_0040127a();
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

uint __thiscall FUN_006dd47e(int param_1_00,undefined4 *param_1)

{
  char cVar1;
  uint uVar2;
  undefined auStack_58 [20];
  undefined4 uStack_44;
  undefined *puStack_40;
  undefined **ppuStack_3c;
  undefined4 local_28;
  int local_24;
  undefined4 local_20;
  int local_1c;
  undefined *local_18;
  int local_14 [3];
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_28 = 0;
  local_24 = 0;
  local_20 = 0;
  local_1c = 0;
  ppuStack_3c = (undefined **)(param_1_00 + 0x104);
  local_8 = 1;
  puStack_40 = (undefined *)0x6dd4ad;
  FUN_007b47f9();
  local_18 = auStack_58;
  FUN_004180b1();
  cVar1 = FUN_0051605d();
  if (cVar1 != '\0') {
    local_18 = auStack_58;
    FUN_004180b1();
    cVar1 = FUN_0051605d();
    if (cVar1 != '\0') {
      ppuStack_3c = &local_18;
      local_18 = (undefined *)0x0;
      local_14[0] = 0;
      puStack_40 = (undefined *)0x6dd518;
      FUN_00ba477f();
      ppuStack_3c = (undefined **)local_14;
      puStack_40 = (undefined *)0x6dd524;
      FUN_00ba477f();
      puStack_40 = local_18 + local_14[0];
      ppuStack_3c = (undefined **)0x0;
      uStack_44 = 0x6dd538;
      (**(code **)*param_1)();
                    // WARNING: Subroutine does not return
      FUN_0043c023(param_1_00 + 0x118);
    }
  }
  ppuStack_3c = (undefined **)0xf7a62fc4;
  puStack_40 = (undefined *)0x6dd625;
  uVar2 = FUN_00b940e0();
  local_8 = local_8 & 0xffffff00;
  if (local_1c != 0) {
    ppuStack_3c = (undefined **)0x6dd636;
    uVar2 = FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_24 != 0) {
    ppuStack_3c = (undefined **)0x6dd646;
    uVar2 = FUN_0040127a();
  }
  return uVar2 & 0xffffff00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006dd651(undefined4 param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  undefined auStack_54 [20];
  undefined4 uStack_40;
  undefined *puStack_3c;
  undefined *puStack_38;
  int local_24;
  int local_20;
  undefined local_1c [4];
  undefined *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_24 = 0;
  local_20 = 0;
  puStack_38 = (undefined *)&param_1;
  puStack_3c = local_1c;
  local_8 = 1;
  uStack_40 = 0x6dd67b;
  piVar2 = (int *)FUN_006dddfc();
  iVar1 = *piVar2;
  if (local_18 != (undefined *)0x0) {
    puStack_38 = (undefined *)0x6dd68e;
    FUN_0040127a();
  }
  if (iVar1 == 0) {
    puStack_38 = (undefined *)&param_1;
    puStack_3c = local_1c;
    uStack_40 = 0x6dd6c3;
    piVar2 = (int *)FUN_006ddeb2();
    iVar1 = *piVar2;
    if (local_18 != (undefined *)0x0) {
      puStack_38 = (undefined *)0x6dd6d6;
      FUN_0040127a();
    }
    if (iVar1 != 0) {
      local_18 = auStack_54;
      FUN_004180b1();
      FUN_00515d2b(local_1c);
      local_8._0_1_ = 3;
      goto LAB_006dd6fc;
    }
  }
  else {
    local_18 = auStack_54;
    FUN_004180b1();
    FUN_00515d2b(local_1c);
    local_8._0_1_ = 2;
LAB_006dd6fc:
    puStack_38 = (undefined *)0x6dd704;
    FUN_004fe47e();
    local_8 = CONCAT31(local_8._1_3_,1);
    if (local_18 != (undefined *)0x0) {
      puStack_38 = (undefined *)0x6dd714;
      FUN_0040127a();
    }
  }
  cVar3 = local_24 != 0;
  if ((bool)cVar3) {
    puStack_38 = (undefined *)local_24;
    puStack_3c = (undefined *)0x6dd741;
    cVar3 = FUN_005d3ad3();
    if (cVar3 != '\0') goto LAB_006dd758;
    puStack_38 = (undefined *)0x81ca2c05;
  }
  else {
    puStack_38 = (undefined *)0x5cf9369a;
  }
  puStack_3c = (undefined *)0x6dd757;
  FUN_00b940e0();
LAB_006dd758:
  local_8 = local_8 & 0xffffff00;
  if (local_20 != 0) {
    puStack_38 = (undefined *)0x6dd768;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    puStack_38 = (undefined *)0x6dd778;
    FUN_0040127a();
  }
  return cVar3;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_006dd782(int param_1)

{
  int *piVar1;
  char cVar2;
  int **ppiVar3;
  undefined4 *puVar4;
  undefined *puStack_b8;
  int iStack_b4;
  int *piStack_b0;
  undefined4 *puStack_ac;
  undefined *puStack_a8;
  undefined local_94 [24];
  undefined local_7c [8];
  undefined local_74 [4];
  int local_70;
  undefined4 local_6c;
  int local_68;
  undefined8 local_64;
  int local_5c;
  undefined local_55;
  undefined local_54 [76];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x84;
  local_8 = 0x6dd791;
  piVar1 = *(int **)(*(int *)(param_1 + 0x114) + 0x10);
  puStack_a8 = local_74;
  local_5c = 3;
  puStack_ac = (undefined4 *)0x6dd7ac;
  ppiVar3 = (int **)FUN_005f0832();
  local_8 = 0;
  puStack_a8 = (undefined *)0x0;
  puStack_ac = &local_6c;
  piStack_b0 = (int *)0x6dd7bd;
  (**(code **)(**ppiVar3 + 0x18))();
  local_8._0_1_ = 2;
  if (local_70 != 0) {
    piStack_b0 = (int *)0x6dd7cd;
    FUN_0040127a();
  }
  piStack_b0 = (int *)0x0;
  iStack_b4 = 0;
  puStack_b8 = (undefined *)0x3c;
  local_64 = FUN_0043b546(0,0);
  piStack_b0 = (int *)0x6dd7ef;
  FUN_00b98ea0();
  piStack_b0 = (int *)local_94;
  local_8._0_1_ = 3;
  iStack_b4 = local_6c;
  puStack_b8 = local_54;
  FUN_00b9f55b();
  local_8 = CONCAT31(local_8._1_3_,5);
  piStack_b0 = (int *)0x6dd815;
  FUN_00b98d40();
  piStack_b0 = &local_5c;
  iStack_b4 = 0x6dd823;
  cVar2 = (**(code **)(*piVar1 + 0x124))();
  if (cVar2 == '\0') {
    iStack_b4 = 0x40c8e560;
    puStack_b8 = (undefined *)0x6dd838;
    FUN_00b940e0();
  }
  local_8 = CONCAT31(local_8._1_3_,2);
  iStack_b4 = 0x6dd845;
  FUN_00b9f511();
  local_8 = 0xffffffff;
  if (local_68 != 0) {
    iStack_b4 = 0x6dd855;
    FUN_0040127a();
  }
  if ((cVar2 != '\0') && (local_5c != 0)) {
    if (local_5c == 4) {
      iStack_b4 = param_1 + 0x110;
      puStack_b8 = (undefined *)0x6dd8a0;
      FUN_007e2b4d();
      local_64._4_4_ = &puStack_b8;
      puStack_b8 = (undefined *)0xa0c;
      iStack_b4 = 0x142;
      puVar4 = (undefined4 *)FUN_00465be3(local_7c);
      local_64._4_4_ = &puStack_b8;
      local_8 = 6;
      puStack_b8 = (undefined *)*puVar4;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar4 + 1);
    }
    iStack_b4 = 0x2baa8e0e;
    local_55 = (undefined)local_5c;
    puStack_b8 = (undefined *)0x6dd882;
    FUN_00b940e0();
    iStack_b4 = 1;
    puStack_b8 = &local_55;
    FUN_00b940c0(0x2baa8e0e);
  }
  iStack_b4 = 0x6dd913;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006dd914(undefined4 **param_1,undefined4 **param_2)

{
  int *piVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 local_54 [4];
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 *puStack_3c;
  undefined4 *local_38 [5];
  int *local_24;
  undefined4 *local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_24 = *(int **)(*(int *)((int)param_1 + 0x114) + 0x10);
  local_20 = (undefined4 *)0x0;
  local_1c = (undefined4 *)0x0;
  local_18 = (undefined4 *)0x0;
  param_1 = (undefined4 **)local_54;
  local_8 = 2;
  FUN_004180b1();
  cVar2 = FUN_00bbfff0(&local_20);
  if (cVar2 == '\0') {
LAB_006dd9ab:
    local_38[0] = (undefined4 *)0x95f71207;
    cVar2 = '\0';
    puStack_3c = (undefined4 *)0x6dd9bc;
    FUN_00b940e0();
  }
  else {
    param_1 = (undefined4 **)local_54;
    FUN_004180b1();
    cVar2 = FUN_00bbfff0(&local_1c);
    if (cVar2 == '\0') goto LAB_006dd9ab;
    param_1 = (undefined4 **)local_54;
    FUN_004180b1();
    cVar2 = FUN_00bbfff0(&local_18);
    if (cVar2 == '\0') goto LAB_006dd9ab;
    cVar2 = '\x01';
  }
  local_14 = (undefined4 *)0x0;
  local_8._0_1_ = 3;
  if (cVar2 != '\0') {
    puStack_3c = &param_1;
    local_38[0] = (undefined4 *)0x0;
    uStack_40 = 0x6dd9dd;
    puVar3 = (undefined4 *)FUN_00b933f0();
    local_38[0] = (undefined4 *)*puVar3;
    *puVar3 = 0;
    puStack_3c = (undefined4 *)0x6dd9ec;
    FUN_0040c727();
    if (param_1 != (undefined4 **)0x0) {
      local_38[0] = (undefined4 *)0x1;
      puStack_3c = (undefined4 *)0x6dd9f9;
      (*(code *)**param_1)();
    }
    local_38[0] = local_20;
    piVar1 = local_24;
    param_1 = local_38;
    local_20 = (undefined4 *)0x0;
    puStack_3c = (undefined4 *)0x6;
    uStack_40 = 0;
    uStack_44 = 0x6dda19;
    cVar2 = (**(code **)(*local_24 + 0x138))();
    if (cVar2 == '\0') {
      local_38[0] = (undefined4 *)0x16ecaf2c;
      cVar2 = '\0';
    }
    else {
      param_1 = local_38;
      local_38[0] = local_1c;
      puStack_3c = (undefined4 *)0xe;
      uStack_40 = 0;
      local_1c = (undefined4 *)0x0;
      uStack_44 = 0x6dda49;
      cVar2 = (**(code **)(*piVar1 + 0x138))();
      if (cVar2 == '\0') {
        local_38[0] = (undefined4 *)0x3cc1db7;
        cVar2 = '\0';
      }
      else {
        param_1 = local_38;
        local_38[0] = local_18;
        puStack_3c = (undefined4 *)0x1c;
        uStack_40 = 0;
        local_18 = (undefined4 *)0x0;
        uStack_44 = 0x6dda76;
        cVar2 = (**(code **)(*piVar1 + 0x138))();
        if (cVar2 == '\0') {
          local_38[0] = (undefined4 *)0x2ae46ead;
          cVar2 = '\0';
        }
        else {
          param_1 = local_38;
          local_38[0] = local_14;
          puStack_3c = (undefined4 *)0x13;
          uStack_40 = 0;
          local_14 = (undefined4 *)0x0;
          uStack_44 = 0x6ddaa3;
          cVar2 = (**(code **)(*piVar1 + 0x138))();
          if (cVar2 != '\0') goto LAB_006ddab9;
          local_38[0] = (undefined4 *)0xb5942a7d;
        }
      }
    }
    puStack_3c = (undefined4 *)0x6ddab8;
    FUN_00b940e0();
  }
LAB_006ddab9:
  param_1 = (undefined4 **)0x0;
  local_8._0_1_ = 4;
  if (cVar2 != '\0') {
    local_38[0] = param_2;
    puStack_3c = (undefined4 *)0x6ddad0;
    cVar2 = FUN_00b9f072();
    piVar1 = local_24;
    local_38[0] = param_1;
    if (cVar2 == '\0') {
      local_38[0] = (undefined4 *)0xdc842fc5;
      cVar2 = '\0';
    }
    else {
      param_1 = (undefined4 **)0x0;
      param_2 = local_38;
      puStack_3c = &param_2;
      uStack_40 = 0x6ddb02;
      cVar2 = (**(code **)(*local_24 + 0xf4))();
      if ((cVar2 == '\0') || (param_2 != (undefined4 **)0x0)) {
        cVar2 = '\0';
        local_38[0] = (undefined4 *)0x10714069;
      }
      else {
        local_38[0] = (undefined4 *)0x6ddb24;
        cVar2 = (**(code **)(*piVar1 + 0xf8))();
        if (cVar2 != '\0') goto LAB_006ddb3a;
        local_38[0] = (undefined4 *)0x30f86fe8;
      }
    }
    puStack_3c = (undefined4 *)0x6ddb39;
    FUN_00b940e0();
  }
LAB_006ddb3a:
  local_8._0_1_ = 3;
  if (param_1 != (undefined4 **)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x6ddb4b;
    (*(code *)**param_1)();
  }
  local_8._0_1_ = 2;
  if (local_14 != (undefined4 *)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x6ddb5c;
    (**(code **)*local_14)();
  }
  local_8._0_1_ = 1;
  if (local_18 != (undefined4 *)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x6ddb6d;
    (**(code **)*local_18)();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_1c != (undefined4 *)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x6ddb7e;
    (**(code **)*local_1c)();
  }
  local_8 = 0xffffffff;
  if (local_20 != (undefined4 *)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x6ddb8f;
    (**(code **)*local_20)();
  }
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006ddb99(int param_1,undefined4 param_2,undefined4 *param_3,int param_4,int param_5,
                 undefined4 param_6,int param_7)

{
  int iVar1;
  int *piVar2;
  undefined auStack_78 [20];
  undefined4 uStack_64;
  undefined *puStack_60;
  int *piStack_5c;
  undefined local_48 [4];
  int local_44;
  undefined local_40 [4];
  int local_3c;
  undefined local_38 [4];
  int local_34;
  undefined local_30 [4];
  int local_2c;
  int *local_28;
  int local_24;
  undefined *local_20;
  undefined4 local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_28 = (int *)0x0;
  local_24 = 0;
  local_8 = 1;
  if (param_4 == 2) {
    if (param_5 == 0x31) {
      piStack_5c = &param_6;
      puStack_60 = local_30;
      uStack_64 = 0x6ddbd5;
      piVar2 = (int *)FUN_006dddfc();
      iVar1 = *piVar2;
      if (local_2c != 0) {
        piStack_5c = (int *)0x6ddbe8;
        FUN_0040127a();
      }
      if (iVar1 != 0) {
        local_20 = auStack_78;
        FUN_004180b1();
        FUN_00515d2b(local_38);
        local_8._0_1_ = 2;
        piStack_5c = (int *)0x6ddc16;
        FUN_004fe47e();
        goto LAB_006ddd20;
      }
      piStack_5c = &param_6;
      puStack_60 = local_40;
      uStack_64 = 0x6ddc2f;
      piVar2 = (int *)FUN_006ddeb2();
      iVar1 = *piVar2;
      if (local_3c != 0) {
        piStack_5c = (int *)0x6ddc42;
        FUN_0040127a();
      }
      if (iVar1 != 0) {
        local_20 = auStack_78;
        FUN_004180b1();
        FUN_00515d2b(local_48);
        local_8._0_1_ = 3;
        goto LAB_006ddd11;
      }
    }
  }
  else if (param_4 == 3) {
    piStack_5c = &param_6;
    puStack_60 = local_48;
    uStack_64 = 0x6ddc88;
    piVar2 = (int *)FUN_006dddfc();
    iVar1 = *piVar2;
    if (local_44 != 0) {
      piStack_5c = (int *)0x6ddc9b;
      FUN_0040127a();
    }
    if (iVar1 == 0) {
      piStack_5c = &param_6;
      puStack_60 = local_48;
      uStack_64 = 0x6ddcd4;
      piVar2 = (int *)FUN_006ddeb2();
      iVar1 = *piVar2;
      if (local_44 != 0) {
        piStack_5c = (int *)0x6ddce7;
        FUN_0040127a();
      }
      if (iVar1 == 0) goto LAB_006ddd29;
      local_20 = auStack_78;
      FUN_006ddf68(FUN_007fc1f7,param_5);
      FUN_00515d2b(local_48);
      local_8._0_1_ = 5;
    }
    else {
      local_20 = auStack_78;
      FUN_006ddf68(FUN_007fc149,param_5);
      FUN_00515d2b(local_48);
      local_8._0_1_ = 4;
    }
LAB_006ddd11:
    piStack_5c = (int *)0x6ddd19;
    FUN_004fe47e();
    local_34 = local_44;
LAB_006ddd20:
    local_8 = CONCAT31(local_8._1_3_,1);
    if (local_34 != 0) {
      piStack_5c = (int *)0x6ddd29;
      FUN_0040127a();
    }
  }
LAB_006ddd29:
  piVar2 = local_28;
  local_15 = local_28 != (int *)0x0;
  if (!(bool)local_15) {
    piStack_5c = (int *)0xf17f543e;
    puStack_60 = (undefined *)0x6ddd47;
    FUN_00b940e0();
  }
  local_1c = 0;
  if (local_15 != '\0') {
    piStack_5c = &local_1c;
    puStack_60 = (undefined *)0x6ddd5d;
    local_15 = (**(code **)(*piVar2 + 0x14))();
    if (local_15 == '\0') {
      piStack_5c = (int *)0xf41d8711;
      local_15 = '\0';
    }
    else {
      piStack_5c = (int *)(param_1 + 0x104);
      puStack_60 = (undefined *)0x6ddd7f;
      FUN_007b4c35();
      piStack_5c = (int *)0x0;
      puStack_60 = (undefined *)local_1c;
      uStack_64 = 0x6ddd8b;
      (**(code **)*param_3)();
      piStack_5c = local_28;
      puStack_60 = (undefined *)0x6ddda1;
      local_15 = FUN_005d3ad3();
      if (local_15 != '\0') {
        piStack_5c = (int *)0x6dddc6;
        FUN_007dd228();
        piStack_5c = (int *)0x6dddd1;
        FUN_007dd1f3();
        goto LAB_006dddd1;
      }
      piStack_5c = (int *)0x5bedbcdb;
    }
    puStack_60 = (undefined *)0x6dddb8;
    FUN_00b940e0();
  }
LAB_006dddd1:
  local_8 = local_8 & 0xffffff00;
  if (local_24 != 0) {
    piStack_5c = (int *)0x6ddde1;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (param_7 != 0) {
    piStack_5c = (int *)0x6dddf1;
    FUN_0040127a();
  }
  return local_15;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006dddfc(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6dde08;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W540CB179::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W540CB179::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006ddeb2(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6ddebe;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WF92BC306::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WF92BC306::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_006ddf68(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd0b19;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_006ddfb1(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006de03c(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WB4D94959::WF03FFA43>,class_boost::_bi::list1<class_boost::_bi::value<class_WB4D94959::WF03FFA43*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006ddfec(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006de085(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(bool_(__stdcall*)(void_const*,unsigned_int,void*),void*,enum_W71DA37B9::W053281DE::Type),class_boost::_bi::list3<struct_boost::arg<1>,struct_boost::arg<2>,class_boost::_bi::value<enum_W71DA37B9::W053281DE::Type>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006de03c(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WB4D94959::WF03FFA43>,class_boost::_bi::list1<class_boost::_bi::value<class_WB4D94959::WF03FFA43*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WB4D94959::WF03FFA43>,class_boost::_bi::list1<class_boost::_bi::value<class_WB4D94959::WF03FFA43*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_006de085(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(bool_(__stdcall*)(void_const*,unsigned_int,void*),void*,enum_W71DA37B9::W053281DE::Type),class_boost::_bi::list3<struct_boost::arg<1>,struct_boost::arg<2>,class_boost::_bi::value<enum_W71DA37B9::W053281DE::Type>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,bool_(__cdecl*)(bool_(__stdcall*)(void_const*,unsigned_int,void*),void*,enum_W71DA37B9::W053281DE::Type),class_boost::_bi::list3<struct_boost::arg<1>,struct_boost::arg<2>,class_boost::_bi::value<enum_W71DA37B9::W053281DE::Type>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 __thiscall FUN_006de911(undefined4 param_1_00,byte param_1)

{
  FUN_006de92e(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006de92e(int param_1)

{
  if (*(int *)(param_1 + 0x40) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x38) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x30) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x28) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_004d9011(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006de9a2(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *local_34;
  undefined4 *local_30;
  undefined local_1c [4];
  undefined **local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6de9ae;
  local_14 = 0;
  local_18 = &local_34;
  local_34 = (undefined *)0xa0c;
  local_30 = (undefined4 *)0xa;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_30 = puVar1 + 1;
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  local_34 = &UNK_006de9e5;
  FUN_0043c023();
}



void FUN_006dea06(void)

{
  FUN_007b2d68();
  return;
}



void FUN_006dea0e(void)

{
  FUN_007b2d68();
  return;
}



void FUN_006df07c(void)

{
  FUN_007b2d68();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_006df327(int param_1_00,byte param_1)

{
  FUN_00417fe6();
  if (*(int *)(param_1_00 + 0x134) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 300) != 0) {
    FUN_0040127a();
  }
  FUN_006d507d(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006df38d(void)

{
  undefined4 *puVar1;
  undefined4 local_454;
  undefined4 local_450;
  uint uStack_44c;
  undefined auStack_43c [4];
  undefined4 *local_438;
  undefined local_434 [1048];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4f4e8;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_43c;
  uStack_44c = DAT_0323f878 ^ (uint)&stack0xfffffbb8;
  ExceptionList = &local_14;
  local_438 = &local_454;
  local_454 = 0xa0c;
  local_450 = 0xee;
  puVar1 = (undefined4 *)FUN_00465be3(local_434);
  local_c = 0;
  local_454 = *puVar1;
  local_438 = &local_454;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_006dffea(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006e0025(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WB4D94959::W324D03D3>,class_boost::_bi::list1<class_boost::_bi::value<class_WB4D94959::W324D03D3*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006e0025(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WB4D94959::W324D03D3>,class_boost::_bi::list1<class_boost::_bi::value<class_WB4D94959::W324D03D3*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WB4D94959::W324D03D3>,class_boost::_bi::list1<class_boost::_bi::value<class_WB4D94959::W324D03D3*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_006e0061(void)

{
  undefined4 *unaff_ESI;
  undefined4 *unaff_EDI;
  bool in_ZF;
  
  if (!in_ZF) {
    *unaff_ESI = *unaff_EDI;
    unaff_ESI[1] = unaff_EDI[1];
  }
  return;
}



void FUN_006e0065(void)

{
  undefined4 in_EAX;
  undefined4 *unaff_ESI;
  int unaff_EDI;
  
  *unaff_ESI = in_EAX;
  unaff_ESI[1] = *(undefined4 *)(unaff_EDI + 4);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006e0074(undefined4 param_1)

{
  undefined4 *unaff_EBX;
  undefined4 uStack_e4;
  undefined *puStack_e0;
  undefined *puStack_dc;
  undefined *puStack_d8;
  undefined4 *puStack_d4;
  undefined local_c0 [96];
  undefined4 local_60;
  undefined4 local_5c [2];
  undefined4 local_40;
  undefined local_3c [4];
  undefined local_38 [16];
  undefined4 *local_28;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_5c;
  local_5c[0] = 0x58;
  local_60 = 0x6e0092;
  local_28 = (undefined4 *)param_1;
  puStack_d4 = (undefined4 *)0x6e00a2;
  FUN_007b3730();
  *unaff_EBX = WB4D94959::W1B0A637A::vftable;
  unaff_EBX[7] = 0;
  unaff_EBX[8] = 0;
  unaff_EBX[9] = 0;
  unaff_EBX[10] = 0;
  unaff_EBX[0xb] = 0;
  unaff_EBX[0xc] = 0;
  local_60._0_1_ = 3;
  local_60._1_3_ = 0;
  puStack_d4 = local_28;
  puStack_d8 = local_c0;
  puStack_dc = (undefined *)0x6e00d3;
  FUN_007d661f();
  puStack_d4 = &local_40;
  puStack_d8 = local_c0;
  local_60._0_1_ = 4;
  puStack_dc = (undefined *)0x6e00e4;
  FUN_007d70ed();
  local_60._0_1_ = 5;
  puStack_dc = (undefined *)0x6e00f3;
  FUN_007d71d8();
  puStack_dc = local_38;
  local_60._0_1_ = 6;
  puStack_e0 = (undefined *)0x6e0100;
  FUN_007b42c4();
  puStack_e0 = puStack_dc;
  puStack_dc = (undefined *)0x0;
  local_28 = &uStack_e4;
  local_60 = CONCAT31(local_60._1_3_,7);
  uStack_e4 = local_40;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_3c);
}



undefined4 __fastcall FUN_006e0392(int param_1)

{
  undefined4 uVar1;
  
  uVar1 = 0;
  if (((*(int *)(param_1 + 0x1c) != 0) && (*(int *)(param_1 + 0x24) != 0)) &&
     (*(int *)(param_1 + 0x2c) != 0)) {
    uVar1 = 1;
  }
  return uVar1;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static struct boost::archive::detail::extra_detail::guid_initializer<class
// WB4D94959::W1B0A637A> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class WB4D94959::W1B0A637A>
// >::get_mutable_instance(void)

guid_initializer<class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W1B0A637A>_>
::get_mutable_instance(void)

{
                    // 0x2e03a5  1037
                    // ?get_mutable_instance@?$singleton@U?$guid_initializer@VW1B0A637A@WB4D94959@@@extra_detail@detail@archive@boost@@@serialization@boost@@SAAAU?$guid_initializer@VW1B0A637A@WB4D94959@@@extra_detail@detail@archive@3@XZ
  if ((__local_static_guard__2__ & 1) == 0) {
    __local_static_guard__2__ = __local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c746b5);
  }
  return (guid_initializer<class_WB4D94959::W1B0A637A> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static struct boost::archive::detail::extra_detail::guid_initializer<class
// WB4D94959::W1B0A637A> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class WB4D94959::W1B0A637A>
// >::get_instance(void)

guid_initializer<class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W1B0A637A>_>
::get_instance(void)

{
                    // 0x2e03aa  717
                    // ?get_instance@?$singleton@U?$guid_initializer@VW1B0A637A@WB4D94959@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAU?$guid_initializer@VW1B0A637A@WB4D94959@@@extra_detail@detail@archive@3@XZ
  if ((__local_static_guard__2__ & 1) == 0) {
    __local_static_guard__2__ = __local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c746b5);
  }
  return (guid_initializer<class_WB4D94959::W1B0A637A> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W1B0A637A> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W1B0A637A> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>
::get_const_instance(void)

{
                    // 0x2e03cb  673
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e03cb  1458
                    // ?instantiate@?$ptr_serialization_support@Vbinary_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e04de();
    _atexit((_func_4879 *)&LAB_00c746ff);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W1B0A637A> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W1B0A637A> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>
::get_const_instance(void)

{
                    // 0x2e03d0  688
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e03d0  1476
                    // ?instantiate@?$ptr_serialization_support@Vxml_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e0586();
    _atexit((_func_4879 *)&LAB_00c746d3);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W1B0A637A> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W1B0A637A> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>
::get_const_instance(void)

{
                    // 0x2e03d5  636
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e03d5  1449
                    // ?instantiate@?$ptr_serialization_support@Vbinary_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e0532();
    _atexit((_func_4879 *)&LAB_00c746e9);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W1B0A637A> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W1B0A637A> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>
::get_const_instance(void)

{
                    // 0x2e03da  658
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e03da  1467
                    // ?instantiate@?$ptr_serialization_support@Vxml_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e05da();
    _atexit((_func_4879 *)&LAB_00c746bd);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W1B0A637A> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W1B0A637A> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>
::get_instance(void)

{
                    // 0x2e03df  993
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e04de();
    _atexit((_func_4879 *)&LAB_00c746ff);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W1B0A637A> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W1B0A637A> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>
::get_instance(void)

{
                    // 0x2e041b  956
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e0532();
    _atexit((_func_4879 *)&LAB_00c746e9);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W1B0A637A> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W1B0A637A> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>
::get_instance(void)

{
                    // 0x2e0457  1008
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e0586();
    _atexit((_func_4879 *)&LAB_00c746d3);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W1B0A637A> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W1B0A637A> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>
::get_instance(void)

{
                    // 0x2e0493  978
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e05da();
    _atexit((_func_4879 *)&LAB_00c746bd);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W1B0A637A> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W1B0A637A> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>
::get_const_instance(void)

{
                    // 0x2e04cf  568
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e04cf  1099
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>::
    oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>
              ((oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74766);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W1B0A637A> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W1B0A637A> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_WB4D94959::W1B0A637A> *peVar1;
  
                    // 0x2e04d4  480
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e04d4  1054
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7474b);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WB4D94959::W1B0A637A> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WB4D94959::W1B0A637A> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>
::get_const_instance(void)

{
                    // 0x2e04d9  601
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e04d9  1114
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>::
    oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>
              ((oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74730);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>
* FUN_006e04de(void)

{
  extended_type_info_typeid<class_WB4D94959::W1B0A637A> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>::
       vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032f02c4);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>
* FUN_006e0532(void)

{
  extended_type_info_typeid<class_WB4D94959::W1B0A637A> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>::
       vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f02bc);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>
* FUN_006e0586(void)

{
  extended_type_info_typeid<class_WB4D94959::W1B0A637A> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032f02b4);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>
* FUN_006e05da(void)

{
  extended_type_info_typeid<class_WB4D94959::W1B0A637A> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f02ac);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_006e062e(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_006e0650(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_006e0672(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_006e0694(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W1B0A637A> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W1B0A637A> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>
::get_instance(void)

{
                    // 0x2e06b6  888
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>::
    oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>
              ((oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74766);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W1B0A637A> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W1B0A637A> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>
::get_instance(void)

{
  extended_type_info_typeid<class_WB4D94959::W1B0A637A> *peVar1;
  
                    // 0x2e0700  800
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7474b);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W1B0A637A> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W1B0A637A> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>
::get_instance(void)

{
                    // 0x2e0750  921
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>::
    oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>
              ((oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74730);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W1B0A637A> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W1B0A637A> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>
::get_instance(void)

{
  extended_type_info_typeid<class_WB4D94959::W1B0A637A> *peVar1;
  
                    // 0x2e079a  841
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74715);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_006e07ea(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef91d = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_006e0813(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef91e = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_006e083c(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef91f = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_006e0865(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef920 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W1B0A637A>::oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W1B0A637A>(void)

oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>::
oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>
          (oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> *this)

{
  extended_type_info_typeid<class_WB4D94959::W1B0A637A> *peVar1;
  
                    // 0x2e088e  26
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WB4D94959::W1B0A637A>::oserializer<class boost::archive::xml_oarchive,class
// WB4D94959::W1B0A637A>(void)

oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>::
oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>
          (oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> *this)

{
  extended_type_info_typeid<class_WB4D94959::W1B0A637A> *peVar1;
  
                    // 0x2e08a8  59
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class WB4D94959::W1B0A637A>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class WB4D94959::W1B0A637A>
// >::get_const_instance(void)

extended_type_info_typeid<class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>::
get_const_instance(void)

{
                    // 0x2e08c2  433
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW1B0A637A@WB4D94959@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW1B0A637A@WB4D94959@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e0903();
    _atexit((_func_4879 *)&LAB_00c74781);
  }
  return (extended_type_info_typeid<class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class WB4D94959::W1B0A637A>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class WB4D94959::W1B0A637A> >::get_instance(void)

extended_type_info_typeid<class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>::
get_instance(void)

{
                    // 0x2e08c7  753
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW1B0A637A@WB4D94959@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW1B0A637A@WB4D94959@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e0903();
    _atexit((_func_4879 *)&LAB_00c74781);
  }
  return (extended_type_info_typeid<class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>
* FUN_006e0903(void)

{
  FUN_008308e0("7411DE91-CA8C-1FA1-511B-2CDE21CD964A");
  _t = boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>::vftable;
  FUN_00830c60(&WB4D94959::W1B0A637A::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_006e0956(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W1B0A637A>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>::
save_object_ptr(pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>
                *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> *poVar1;
  
                    // 0x2e0997  1697
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  FUN_00830550(param_2,poVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_006e09e1(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>::
       vftable;
  FUN_00833f40(&DAT_032f02c4);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W1B0A637A>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>::
load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>
                *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x2e0a1f  1589
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x6e0a2b;
  pvVar1 = operator_new(0x34);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_006e0e10(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_006e0cd3();
  return;
}



void Catch_All_006e0a8a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_006e0a97(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>::
       vftable;
  FUN_008347f0(&DAT_032f02bc);
  FUN_00833fa0();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W1B0A637A>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x2e0ad5  1712
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_006e0d22(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_006e0af7(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>::vftable;
  FUN_0082df80(&DAT_032f02b4);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W1B0A637A>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x2e0b35  1611
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x6e0b41;
  pvVar1 = operator_new(0x34);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_006e0e10(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_006e0d99(param_1 + 9);
  return;
}



void Catch_All_006e0ba1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_006e0bae(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>::vftable;
  FUN_0082bbc0(&DAT_032f02ac);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W1B0A637A>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>::save_object_data
          (oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> *this,
          basic_oarchive *param_1,void *param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A> *local_8;
  
                    // 0x2e0bec  1636
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  puVar1 = (undefined4 *)
           serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W1B0A637A>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>::load_object_data
          (iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
                    // 0x2e0c23  1512
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  puVar1 = (undefined4 *)
           serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W1B0A637A>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> *this,
                basic_oarchive *param_1,void *param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> *local_8;
  
                    // 0x2e0c4d  1669
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  puVar1 = (undefined4 *)
           serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W1B0A637A>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
                    // 0x2e0c84  1553
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW1B0A637A@WB4D94959@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  puVar1 = (undefined4 *)
           serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// WB4D94959::W1B0A637A> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// WB4D94959::W1B0A637A> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_WB4D94959::W1B0A637A> *peVar1;
  
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W1B0A637A>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74715);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_006e0cb3(undefined4 param_1)

{
  code *pcVar1;
  undefined local_10 [12];
  
  FUN_00401da3(param_1);
  __CxxThrowException_8(local_10,&DAT_031153a4);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



int __fastcall FUN_006e0cd3(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



int FUN_006e0d22(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_006e0d99(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W1B0A637A>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_006e0e10(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c3081f;
  if (param_1 != (undefined4 *)0x0) {
    puVar1 = (undefined *)FUN_007b3730();
    *param_1 = WB4D94959::W1B0A637A::vftable;
    param_1[7] = 0;
    param_1[8] = 0;
    param_1[9] = 0;
    param_1[10] = 0;
    param_1[0xb] = 0;
    param_1[0xc] = 0;
  }
  return puVar1;
}



void FUN_006e0f06(void)

{
  undefined4 *puVar1;
  undefined4 local_6a4;
  undefined4 local_6a0;
  uint uStack_69c;
  undefined auStack_68c [12];
  undefined4 *local_680;
  undefined local_660 [1604];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4f37b;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_68c;
  uStack_69c = DAT_0323f878 ^ (uint)&stack0xfffff968;
  ExceptionList = &local_14;
  local_680 = &local_6a4;
  local_6a4 = 0x5022;
  local_6a0 = 0x79;
  puVar1 = (undefined4 *)FUN_00465be3(local_660);
  local_c = 0;
  local_6a4 = *puVar1;
  local_680 = &local_6a4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_006e2056(void)

{
  undefined4 *puVar1;
  undefined4 local_4bc;
  undefined4 local_4b8;
  uint uStack_4b4;
  undefined auStack_4a4 [12];
  undefined4 *local_498;
  undefined local_3b8 [924];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5867f;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_4a4;
  uStack_4b4 = DAT_0323f878 ^ (uint)&stack0xfffffb50;
  ExceptionList = &local_14;
  local_498 = &local_4bc;
  local_4bc = 0x5022;
  local_4b8 = 0x7b;
  puVar1 = (undefined4 *)FUN_00465be3(local_3b8);
  local_c = 0;
  local_4bc = *puVar1;
  local_498 = &local_4bc;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_006e31e6(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006e3221(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WB4D94959::WBBC443C2>,class_boost::_bi::list1<class_boost::_bi::value<class_WB4D94959::WBBC443C2*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006e3221(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WB4D94959::WBBC443C2>,class_boost::_bi::list1<class_boost::_bi::value<class_WB4D94959::WBBC443C2*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WB4D94959::WBBC443C2>,class_boost::_bi::list1<class_boost::_bi::value<class_WB4D94959::WBBC443C2*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_006e38a1(void)

{
  undefined4 *puVar1;
  undefined4 local_4dc;
  undefined4 local_4d8;
  uint uStack_4d4;
  undefined auStack_4c4 [20];
  undefined4 *local_4b0;
  undefined local_4a8 [1164];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4f1e2;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_4c4;
  uStack_4d4 = DAT_0323f878 ^ (uint)&stack0xfffffb30;
  ExceptionList = &local_14;
  local_4b0 = &local_4dc;
  local_4dc = 0xa0c;
  local_4d8 = 0x104;
  puVar1 = (undefined4 *)FUN_00465be3(local_4a8);
  local_c = 0;
  local_4dc = *puVar1;
  local_4b0 = &local_4dc;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_006e4888(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 300) != 0) {
    FUN_0040127a();
  }
  FUN_006d507d(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006e48e3(void)

{
  undefined4 *puVar1;
  undefined4 local_5ac;
  undefined4 local_5a8;
  uint uStack_5a4;
  undefined auStack_594 [12];
  undefined4 *local_588;
  undefined local_488 [1132];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4f0ac;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_594;
  uStack_5a4 = DAT_0323f878 ^ (uint)&stack0xfffffa60;
  ExceptionList = &local_14;
  local_588 = &local_5ac;
  local_5ac = 0xa0c;
  local_5a8 = 0x112;
  puVar1 = (undefined4 *)FUN_00465be3(local_488);
  local_c = 0;
  local_5ac = *puVar1;
  local_588 = &local_5ac;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_006e55c9(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd0f21;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_006e5612(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006e564d(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf1<bool,class_WB4D94959::W301B100B,unsigned_int>,class_boost::_bi::list2<class_boost::_bi::value<class_WB4D94959::W301B100B*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006e564d(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf1<bool,class_WB4D94959::W301B100B,unsigned_int>,class_boost::_bi::list2<class_boost::_bi::value<class_WB4D94959::W301B100B*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf1<bool,class_WB4D94959::W301B100B,unsigned_int>,class_boost::_bi::list2<class_boost::_bi::value<class_WB4D94959::W301B100B*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006e5841(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::W951A0B09>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006e5887(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_006e589e(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WE711C61D::W951A0B09::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_006e5841(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// public: static struct boost::archive::detail::extra_detail::guid_initializer<class
// WB4D94959::W2B0723D7> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class WB4D94959::W2B0723D7>
// >::get_mutable_instance(void)

guid_initializer<class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>_>
::get_mutable_instance(void)

{
                    // 0x2e61bd  1041
                    // ?get_mutable_instance@?$singleton@U?$guid_initializer@VW2B0723D7@WB4D94959@@@extra_detail@detail@archive@boost@@@serialization@boost@@SAAAU?$guid_initializer@VW2B0723D7@WB4D94959@@@extra_detail@detail@archive@3@XZ
  if ((`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c74797);
  }
  return (guid_initializer<class_WB4D94959::W2B0723D7> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// private: static struct boost::archive::detail::extra_detail::guid_initializer<class
// WB4D94959::W2B0723D7> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class WB4D94959::W2B0723D7>
// >::get_instance(void)

guid_initializer<class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>_>
::get_instance(void)

{
                    // 0x2e61c2  721
                    // ?get_instance@?$singleton@U?$guid_initializer@VW2B0723D7@WB4D94959@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAU?$guid_initializer@VW2B0723D7@WB4D94959@@@extra_detail@detail@archive@3@XZ
  if ((`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c74797);
  }
  return (guid_initializer<class_WB4D94959::W2B0723D7> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W2B0723D7> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W2B0723D7> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>
::get_const_instance(void)

{
                    // 0x2e61e3  640
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e61e3  1453
                    // ?instantiate@?$ptr_serialization_support@Vbinary_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e634f();
    _atexit((_func_4879 *)&LAB_00c747cb);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W2B0723D7> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W2B0723D7> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>
::get_const_instance(void)

{
                    // 0x2e61e8  692
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e61e8  1480
                    // ?instantiate@?$ptr_serialization_support@Vxml_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e63a3();
    _atexit((_func_4879 *)&LAB_00c747b5);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W2B0723D7> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W2B0723D7> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>
::get_const_instance(void)

{
                    // 0x2e61ed  677
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e61ed  1462
                    // ?instantiate@?$ptr_serialization_support@Vbinary_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e62fb();
    _atexit((_func_4879 *)&LAB_00c747e1);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W2B0723D7> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W2B0723D7> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>
::get_const_instance(void)

{
                    // 0x2e61f2  572
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e61f2  1103
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>::
    oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>
              ((oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74848);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W2B0723D7> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W2B0723D7> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_WB4D94959::W2B0723D7> *peVar1;
  
                    // 0x2e61f7  484
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e61f7  1058
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7482d);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W2B0723D7> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W2B0723D7> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>
::get_const_instance(void)

{
                    // 0x2e61fc  662
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e61fc  1471
                    // ?instantiate@?$ptr_serialization_support@Vxml_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e63f7();
    _atexit((_func_4879 *)&LAB_00c7479f);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W2B0723D7> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W2B0723D7> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>
::get_instance(void)

{
                    // 0x2e6201  997
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e62fb();
    _atexit((_func_4879 *)&LAB_00c747e1);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W2B0723D7> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W2B0723D7> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>
::get_instance(void)

{
                    // 0x2e623d  960
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e634f();
    _atexit((_func_4879 *)&LAB_00c747cb);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W2B0723D7> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W2B0723D7> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>
::get_instance(void)

{
                    // 0x2e6279  1012
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e63a3();
    _atexit((_func_4879 *)&LAB_00c747b5);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W2B0723D7> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W2B0723D7> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>
::get_instance(void)

{
                    // 0x2e62b5  982
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e63f7();
    _atexit((_func_4879 *)&LAB_00c7479f);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WB4D94959::W2B0723D7> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WB4D94959::W2B0723D7> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>
::get_const_instance(void)

{
                    // 0x2e62f1  606
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e62f1  1118
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>::
    oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>
              ((oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74812);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// WB4D94959::W2B0723D7> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// WB4D94959::W2B0723D7> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_WB4D94959::W2B0723D7> *peVar1;
  
                    // 0x2e62f6  526
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
                    // 0x2e62f6  1080
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c747f7);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>
* FUN_006e62fb(void)

{
  extended_type_info_typeid<class_WB4D94959::W2B0723D7> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>::
       vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032f029c);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>
* FUN_006e634f(void)

{
  extended_type_info_typeid<class_WB4D94959::W2B0723D7> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>::
       vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f0294);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>
* FUN_006e63a3(void)

{
  extended_type_info_typeid<class_WB4D94959::W2B0723D7> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032f028c);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>
* FUN_006e63f7(void)

{
  extended_type_info_typeid<class_WB4D94959::W2B0723D7> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f0284);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_006e644b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_006e646d(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_006e648f(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_006e64b1(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W2B0723D7> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W2B0723D7> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>
::get_instance(void)

{
                    // 0x2e64d3  892
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>::
    oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>
              ((oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74848);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W2B0723D7> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W2B0723D7> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>
::get_instance(void)

{
  extended_type_info_typeid<class_WB4D94959::W2B0723D7> *peVar1;
  
                    // 0x2e651d  804
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7482d);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W2B0723D7> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W2B0723D7> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>
::get_instance(void)

{
                    // 0x2e656d  926
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>::
    oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>
              ((oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74812);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W2B0723D7> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W2B0723D7> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>
::get_instance(void)

{
  extended_type_info_typeid<class_WB4D94959::W2B0723D7> *peVar1;
  
                    // 0x2e65b7  846
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c747f7);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_006e6607(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef927 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_006e6630(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef928 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_006e6659(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef929 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_006e6682(undefined4 *param_1_00,byte param_1)

{
  DAT_032ef92a = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W2B0723D7>::oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W2B0723D7>(void)

oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>::
oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>
          (oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> *this)

{
  extended_type_info_typeid<class_WB4D94959::W2B0723D7> *peVar1;
  
                    // 0x2e66ab  30
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// WB4D94959::W2B0723D7>::oserializer<class boost::archive::xml_oarchive,class
// WB4D94959::W2B0723D7>(void)

oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>::
oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>
          (oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> *this)

{
  extended_type_info_typeid<class_WB4D94959::W2B0723D7> *peVar1;
  
                    // 0x2e66c5  64
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class WB4D94959::W2B0723D7>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class WB4D94959::W2B0723D7>
// >::get_const_instance(void)

extended_type_info_typeid<class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>::
get_const_instance(void)

{
                    // 0x2e66df  438
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW2B0723D7@WB4D94959@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW2B0723D7@WB4D94959@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e6720();
    _atexit((_func_4879 *)&LAB_00c74863);
  }
  return (extended_type_info_typeid<class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class WB4D94959::W2B0723D7>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class WB4D94959::W2B0723D7> >::get_instance(void)

extended_type_info_typeid<class_WB4D94959::W2B0723D7> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>::
get_instance(void)

{
                    // 0x2e66e4  758
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW2B0723D7@WB4D94959@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW2B0723D7@WB4D94959@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_006e6720();
    _atexit((_func_4879 *)&LAB_00c74863);
  }
  return (extended_type_info_typeid<class_WB4D94959::W2B0723D7> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>
* FUN_006e6720(void)

{
  FUN_008308e0("31D09302-68DE-02E5-2F9C-C94C23D7E43A");
  _t = boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>::vftable;
  FUN_00830c60(&WB4D94959::W2B0723D7::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_006e6773(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_WB4D94959::W2B0723D7>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W2B0723D7>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>::
save_object_ptr(pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>
                *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> *poVar1;
  
                    // 0x2e67b4  1701
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  FUN_00830550(param_2,poVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_006e67fe(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>::
       vftable;
  FUN_00833f40(&DAT_032f029c);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W2B0723D7>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>::
load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>
                *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x2e683c  1593
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x6e6848;
  pvVar1 = operator_new(0x1c);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_006e6c08(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_006e6acb();
  return;
}



void Catch_All_006e68a7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_006e68b4(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>::
       vftable;
  FUN_008347f0(&DAT_032f0294);
  FUN_00833fa0();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W2B0723D7>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x2e68f2  1716
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_006e6b1a(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_006e6914(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>::vftable;
  FUN_0082df80(&DAT_032f028c);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W2B0723D7>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x2e6952  1615
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x6e695e;
  pvVar1 = operator_new(0x1c);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_006e6c08(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_006e6b91(param_1 + 9);
  return;
}



void Catch_All_006e69be(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_006e69cb(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>::vftable;
  FUN_0082bbc0(&DAT_032f0284);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class WB4D94959::W2B0723D7>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>::save_object_data
          (oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> *this,
          basic_oarchive *param_1,void *param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7> *local_8;
  
                    // 0x2e6a09  1640
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  puVar1 = (undefined4 *)
           serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class WB4D94959::W2B0723D7>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>::load_object_data
          (iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
                    // 0x2e6a40  1516
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  puVar1 = (undefined4 *)
           serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class WB4D94959::W2B0723D7>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> *this,
                basic_oarchive *param_1,void *param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> *local_8;
  
                    // 0x2e6a6a  1674
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  puVar1 = (undefined4 *)
           serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class WB4D94959::W2B0723D7>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
                    // 0x2e6aa1  1558
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW2B0723D7@WB4D94959@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  puVar1 = (undefined4 *)
           serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  return;
}



int __fastcall FUN_006e6acb(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



int FUN_006e6b1a(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_006e6b91(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_WB4D94959::W2B0723D7>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_006e6c08(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c3081f;
  if (param_1 != (undefined4 *)0x0) {
    puVar1 = (undefined *)FUN_007b3730();
    *param_1 = WB4D94959::W2B0723D7::vftable;
  }
  return puVar1;
}



undefined4 __thiscall FUN_006e6d2e(undefined4 param_1_00,byte param_1)

{
  FUN_006d507d(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006e6ea7(void)

{
  undefined4 *puVar1;
  undefined *local_b0;
  undefined auStack_a8 [24];
  undefined4 uStack_90;
  undefined *puStack_8c;
  undefined local_48 [44];
  undefined **local_1c;
  undefined *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_8 = 0x6e6eb3;
  local_14 = 0;
  puStack_8c = local_48;
  uStack_90 = 0x6e6ec0;
  FUN_00507ed8();
  local_18 = auStack_a8;
  local_8 = 1;
  local_b0 = &LAB_006e6e33;
  FUN_006e802f();
  local_8 = CONCAT31(local_8._1_3_,2);
  local_b0 = (undefined *)0x6e6ee8;
  puVar1 = (undefined4 *)FUN_00608b80();
  local_b0 = (undefined *)*puVar1;
  local_1c = &local_b0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



char FUN_006e7769(void)

{
  char cVar1;
  code *local_14 [2];
  char local_9;
  
  local_14[0] = FUN_006e7fa8;
  FUN_007f2630(local_14);
  cVar1 = FUN_005d2ca5();
  if (cVar1 == '\0') {
    cVar1 = '\0';
  }
  else {
    cVar1 = FUN_005d2d25();
    if (cVar1 == '\0') {
      FUN_00b940e0();
      FUN_007e2a43();
      return '\0';
    }
    local_9 = '\0';
    cVar1 = FUN_005d2e7a();
    if (cVar1 != '\0') {
      if (local_9 != '\0') {
        return cVar1;
      }
      FUN_007e2c7c();
      FUN_007e29a3();
      return cVar1;
    }
  }
  FUN_00b940e0();
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006e7864(void)

{
  int unaff_EBX;
  undefined4 local_40;
  int iStack_3c;
  undefined4 *local_18;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  uStack_8 = 0x6e7870;
  iStack_3c = unaff_EBX + 0x104;
  local_40 = 0x6e787c;
  FUN_007b4f22();
  local_18 = &local_40;
  local_40 = *(undefined4 *)(unaff_EBX + 0x114);
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EBX + 0x118);
}



void FUN_006e7ef4(void)

{
  FUN_0074ca40();
  return;
}



char FUN_006e7eff(void)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0xd7577715;
  }
  else {
    FUN_006e6ea7(local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0xdcfe577a;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



void __thiscall FUN_006e7fa8(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_005d1cc5(param_1,param_2,*(undefined4 *)(param_1_00 + 4));
  *(undefined *)(param_1_00 + 0x124) = 0;
  if ((0x87 < (byte)param_1) && ((byte)param_1 < 0x8a)) {
    *(undefined *)(param_1_00 + 0x124) = 1;
  }
  return;
}



void FUN_006e7fdc(undefined4 param_1,undefined4 param_2)

{
  FUN_00608be7();
  FUN_005f509c();
  FUN_005f5072();
  FUN_005f5048();
  FUN_005f4fe2();
  FUN_0060a50f(param_1,param_2);
  return;
}



void FUN_006e8008(undefined4 param_1,undefined4 param_2)

{
  FUN_005f509c();
  FUN_005f5072();
  FUN_005f5048();
  FUN_005f4fe2();
  FUN_00608b2b(param_1,param_2);
  return;
}



void FUN_006e802f(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd1139;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006e812e(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x6e813a;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_006e81c1(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = W76AFA8BF::WD3A27223::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_006e81c1(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W76AFA8BF::WD3A27223*,class_boost::detail::sp_ms_deleter<class_W76AFA8BF::WD3A27223>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_006e8207(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x18) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_006e8218(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006e82af(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_WB4D94959::WAB89EC31,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WB4D94959::WAB89EC31*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006e8253(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006e82f8(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf2<void,class_WB4D94959::WAB89EC31,unsigned_char,unsigned_char>,class_boost::_bi::list3<class_boost::_bi::value<class_WB4D94959::WAB89EC31*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



uint __thiscall FUN_006e828e(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W76AFA8BF::WD3A27223>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



void FUN_006e82af(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_WB4D94959::WAB89EC31,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WB4D94959::WAB89EC31*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_WB4D94959::WAB89EC31,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WB4D94959::WAB89EC31*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_006e82f8(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf2<void,class_WB4D94959::WAB89EC31,unsigned_char,unsigned_char>,class_boost::_bi::list3<class_boost::_bi::value<class_WB4D94959::WAB89EC31*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf2<void,class_WB4D94959::WAB89EC31,unsigned_char,unsigned_char>,class_boost::_bi::list3<class_boost::_bi::value<class_WB4D94959::WAB89EC31*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 * __thiscall FUN_006e8341(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W76AFA8BF::WA021F45F::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006e8438)

undefined4 * FUN_006e83c5(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006e8824();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006e8711(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6e871d;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W36DEDEBC::WB985C9EE::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W36DEDEBC::WB985C9EE::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006e880d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006e8824(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::WB985C9EE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006e886a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006e8881(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::W1C37A366>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006e88c7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006e8d38(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6e8d44;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W36DEDEBC::WF9733484::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W36DEDEBC::WF9733484::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006e8e34(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006e8e4b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::W19E039BD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006e8e91(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006e8ea8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::WF9733484>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006e8eee(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006e8fe5)

undefined4 * FUN_006e8f6c(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x194);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006e9306();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006e91f3(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6e91ff;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W36DEDEBC::W29C15AF0::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W36DEDEBC::W29C15AF0::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006e92ef(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006e9306(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::W29C15AF0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006e934c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006e9440)

undefined4 * FUN_006e93ca(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x3c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006e9859();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006e9746(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6e9752;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W36DEDEBC::W23CF9CCF::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W36DEDEBC::W23CF9CCF::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006e9842(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006e9859(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::W23CF9CCF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006e989f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006e98b6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::WD19A284B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006e98fc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006e99f0)

undefined4 * FUN_006e997a(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x44);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006e9e0a();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006e9cf7(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6e9d03;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W36DEDEBC::WAC2D2DF5::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W36DEDEBC::WAC2D2DF5::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006e9df3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006e9e0a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::WAC2D2DF5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006e9e50(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006e9e67(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::WDE48D0D1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006e9ead(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006ea097)

undefined4 * FUN_006ea024(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x44);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006ea3e8();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006ea278(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6ea284;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W36DEDEBC::W052CC425::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W36DEDEBC::W052CC425::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006ea374(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ea38b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::W0EE1AD45>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ea3d1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ea3e8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::WD16ACCD7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ea42e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006ea51f)

undefined4 * FUN_006ea4ac(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006ea668();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



void Catch_All_006ea651(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ea668(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::WD0650892>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ea6ae(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006ea79f)

undefined4 * FUN_006ea72c(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006eab8c();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006eaa79(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6eaa85;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W36DEDEBC::W5E2A2124::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W36DEDEBC::W5E2A2124::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006eab75(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006eab8c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::W5E2A2124>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006eabd2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006eabe9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::W1DB9EDBB>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006eac2f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006ead23)

undefined4 * FUN_006eacad(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x4c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006eb13c();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006eb029(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6eb035;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W36DEDEBC::W195DA990::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W36DEDEBC::W195DA990::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006eb125(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006eb13c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::W195DA990>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006eb182(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006eb199(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::W4285588F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006eb1df(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006eb2d0)

undefined4 * FUN_006eb25d(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006eb6bc();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006eb5a9(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6eb5b5;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W36DEDEBC::W3C4E697D::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W36DEDEBC::W3C4E697D::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006eb6a5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006eb6bc(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::W3C4E697D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006eb702(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006eb719(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::W27E14197>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006eb75f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_006eba1b(void)

{
  undefined4 *puVar1;
  undefined4 local_39c;
  undefined4 local_398;
  uint uStack_394;
  undefined auStack_384 [12];
  undefined4 *local_378;
  undefined local_364 [840];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4eec7;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_384;
  uStack_394 = DAT_0323f878 ^ (uint)&stack0xfffffc70;
  ExceptionList = &local_14;
  local_378 = &local_39c;
  local_39c = 0xa0c;
  local_398 = 8;
  puVar1 = (undefined4 *)FUN_00465be3(local_364);
  local_c = 0;
  local_39c = *puVar1;
  local_378 = &local_39c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 __thiscall FUN_006ec26c(undefined4 param_1_00,byte param_1)

{
  FUN_006ec289(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006ec289(int param_1)

{
  FUN_00417fe6();
  if (*(int *)(param_1 + 0x140) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x138) != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  if (*(int *)(param_1 + 0x128) != 0) {
    FUN_0040127a();
  }
  FUN_00700217(param_1);
  return;
}



void FUN_006ec2fc(void)

{
  int iVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [28];
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c25b87;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_50,&DAT_00ddbaa8,0xf);
  local_c = 0;
  FUN_00b94330();
  iVar1 = FUN_005d04b6();
  FUN_004017b2();
  local_c = 0xffffffff;
  FUN_004017b2();
  if (iVar1 != -1) {
    FUN_005d0682(local_34);
    local_c = 1;
    iVar1 = FUN_00467341();
    local_c = CONCAT31(local_c._1_3_,2);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_006ec480(int param_1)

{
  undefined4 uStack_430;
  undefined4 uStack_42c;
  int **ppiStack_428;
  int *piStack_424;
  int *piStack_420;
  uint uStack_41c;
  undefined auStack_40c [32];
  int local_3ec;
  undefined4 uStack_3e0;
  undefined auStack_3dc [12];
  undefined4 *puStack_3d0;
  int **local_3c4;
  uint local_1c;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c5f5c9;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_40c;
  uStack_41c = DAT_0323f878 ^ (uint)&stack0xfffffbe8;
  ExceptionList = &local_14;
  piStack_424 = *(int **)(param_1 + 0x124);
  local_3c4 = &piStack_424;
  ppiStack_428 = &piStack_424;
  uStack_42c = 0x6ec4da;
  piStack_420 = piStack_424;
  local_3ec = param_1;
  (**(code **)(*piStack_424 + 0x14))();
  uStack_42c = 0x6ec4e2;
  (**(code **)(**(int **)(param_1 + 4) + 0x10))();
  uStack_42c = 0x6ec4ed;
  FUN_004fa2a2();
  uStack_18 = 0;
  puStack_3d0 = &uStack_430;
  uStack_430 = uStack_3e0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(auStack_3dc);
}



void FUN_006eec16(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd1791;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_006eec5f(undefined4 *param_1_00,int param_1)

{
  undefined4 uVar1;
  
  FUN_004382a5(param_1);
  *(undefined4 *)(param_1 + 0x20) = 0;
  uVar1 = FUN_006eec16(*param_1_00,param_1_00[1]);
  FUN_004fc9c9(uVar1);
  FUN_00507e58();
  return param_1;
}



void FUN_006eecac(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd1799;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_006eeeda(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006eef50(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W36DEDEBC::W19E039BD>,class_boost::_bi::list1<class_boost::_bi::value<class_W36DEDEBC::W19E039BD*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006eef15(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006eef99(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W36DEDEBC::W19E039BD,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W36DEDEBC::W19E039BD*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006eef50(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W36DEDEBC::W19E039BD>,class_boost::_bi::list1<class_boost::_bi::value<class_W36DEDEBC::W19E039BD*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W36DEDEBC::W19E039BD>,class_boost::_bi::list1<class_boost::_bi::value<class_W36DEDEBC::W19E039BD*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_006eef99(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W36DEDEBC::W19E039BD,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W36DEDEBC::W19E039BD*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W36DEDEBC::W19E039BD,class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W36DEDEBC::W19E039BD*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_006ef06e(undefined4 param_1,TypeDescriptor **param_2,uint param_3)

{
  if (param_3 == 4) {
    *param_2 = &boost::_bi::
                bind_t<class_boost::shared_ptr<class_W560DA063::W652C2340>,class_boost::_mfi::mf4<class_boost::shared_ptr<class_W560DA063::W652C2340>,class_W36DEDEBC::W19E039BD,class_boost::shared_ptr<class_W560DA063::W652C2340>,class_boost::shared_ptr<class_W8489743A::WE77C49A0>,enum_W71DA37B9::W053281DE::Type,enum_W71DA37B9::W83036B07::Type>,class_boost::_bi::list5<class_boost::_bi::value<class_W36DEDEBC::W19E039BD*>,struct_boost::arg<1>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::value<enum_W71DA37B9::W053281DE::Type>,class_boost::_bi::value<enum_W71DA37B9::W83036B07::Type>_>_>
                ::RTTI_Type_Descriptor;
    *(undefined *)(param_2 + 1) = 0;
    *(undefined *)((int)param_2 + 5) = 0;
  }
  else {
    param_3 = param_3 & 0xffffff00;
    FUN_006ef0a7(param_3);
  }
  return;
}



void FUN_006ef0a7(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  int unaff_ESI;
  uint unaff_EDI;
  
  if ((unaff_ESI == 0) || (unaff_ESI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_005fc899();
    }
    if (unaff_ESI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EDI + 0xc);
  }
  else {
    if (unaff_ESI != 2) {
      if (unaff_ESI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<class_boost::shared_ptr<class_W560DA063::W652C2340>,class_boost::_mfi::mf4<class_boost::shared_ptr<class_W560DA063::W652C2340>,class_W36DEDEBC::W19E039BD,class_boost::shared_ptr<class_W560DA063::W652C2340>,class_boost::shared_ptr<class_W8489743A::WE77C49A0>,enum_W71DA37B9::W053281DE::Type,enum_W71DA37B9::W83036B07::Type>,class_boost::_bi::list5<class_boost::_bi::value<class_W36DEDEBC::W19E039BD*>,struct_boost::arg<1>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::value<enum_W71DA37B9::W053281DE::Type>,class_boost::_bi::value<enum_W71DA37B9::W83036B07::Type>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EDI);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<class_boost::shared_ptr<class_W560DA063::W652C2340>,class_boost::_mfi::mf4<class_boost::shared_ptr<class_W560DA063::W652C2340>,class_W36DEDEBC::W19E039BD,class_boost::shared_ptr<class_W560DA063::W652C2340>,class_boost::shared_ptr<class_W8489743A::WE77C49A0>,enum_W71DA37B9::W053281DE::Type,enum_W71DA37B9::W83036B07::Type>,class_boost::_bi::list5<class_boost::_bi::value<class_W36DEDEBC::W19E039BD*>,struct_boost::arg<1>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::value<enum_W71DA37B9::W053281DE::Type>,class_boost::_bi::value<enum_W71DA37B9::W83036B07::Type>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[3];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



void FUN_006f0053(void)

{
  undefined4 *puVar1;
  char *in_EAX;
  int extraout_ECX;
  int unaff_EBX;
  int unaff_EBP;
  undefined4 uStack_8;
  int iStack_4;
  
  *in_EAX = *in_EAX + (char)in_EAX;
  puVar1 = *(undefined4 **)(unaff_EBP + -0x68);
  *(undefined *)(unaff_EBP + -4) = 0x3b;
  iStack_4 = 0x6f0061;
  FUN_004fe47e();
  *(undefined *)(unaff_EBP + -4) = 0x3a;
  iStack_4 = *(int *)(unaff_EBP + -0x48);
  if (iStack_4 != unaff_EBX) {
    iStack_4 = 0x6f0071;
    FUN_0040127a();
    iStack_4 = extraout_ECX;
  }
  uStack_8 = *puVar1;
  *(undefined4 **)(unaff_EBP + 0x14) = &uStack_8;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_006f0072(void)

{
  int unaff_EBP;
  undefined4 *unaff_ESI;
  undefined4 local_4;
  
  local_4 = *unaff_ESI;
  *(undefined4 **)(unaff_EBP + 0x14) = &local_4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_ESI + 1);
}



void FUN_006f035a(void)

{
  FUN_007b2d68();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006f0362(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  undefined local_24 [4];
  int local_20;
  void *local_1c;
  undefined4 local_18;
  uint local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  *param_1 = 0;
  param_1[1] = 0;
  local_8 = 0;
  local_18 = 1;
  local_1c = (void *)FUN_007b2d68();
  local_14 = 0;
  if ((*(int *)(param_1_00 + 0x6c) - *(int *)(param_1_00 + 0x68)) / 0x74 != 0) {
    do {
      FUN_005fe8b3(local_14);
      iVar1 = FUN_004f61ef();
      if ((void *)iVar1 == local_1c) {
        local_1c = operator_new(0x74);
        local_8 = 1;
        if (local_1c != (void *)0x0) {
          FUN_005fe8b3(local_14);
          FUN_004f615e(local_1c);
        }
        local_8 = local_8 & 0xffffff00;
        FUN_005fe97c(local_24);
        local_8 = 2;
        FUN_004fe47e();
        local_8 = local_8 & 0xffffff00;
        if (local_20 == 0) {
          return param_1;
        }
        FUN_0040127a();
        return param_1;
      }
      local_14 = local_14 + 1;
    } while (local_14 < (uint)((*(int *)(param_1_00 + 0x6c) - *(int *)(param_1_00 + 0x68)) / 0x74));
  }
  return param_1;
}



undefined4 __fastcall FUN_006f042f(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0x4c) != 0) {
    uVar1 = FUN_007b2498();
    return uVar1;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006f05aa(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6f05b6;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W5BD1C6D4::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W5BD1C6D4::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006f0660(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6f066c;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W85293CA4::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W85293CA4::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006f0716(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6f0722;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W0A6E6CD9::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W0A6E6CD9::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



undefined4 __thiscall FUN_006f0c84(undefined4 param_1_00,byte param_1)

{
  FUN_006f0ca1(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_006f0ca1(int param_1)

{
  if (*(int *)(param_1 + 400) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x188) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x180) != 0) {
    FUN_0040127a();
  }
  FUN_00485ebe();
  if (*(int *)(param_1 + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_004d9011(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006f0d16(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *local_34;
  undefined4 *local_30;
  undefined local_1c [4];
  undefined **local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6f0d22;
  local_14 = 0;
  local_18 = &local_34;
  local_34 = (undefined *)0xa0c;
  local_30 = (undefined4 *)0xfd;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_30 = puVar1 + 1;
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  local_34 = &UNK_006f0d59;
  FUN_0043c023();
}



void thunk_FUN_005fe819(int param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 uStack_c;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  cVar1 = FUN_0041c034();
  if (cVar1 != '\0') {
    uVar2 = FUN_00486589(*(undefined4 *)(param_1 + 0x10),uStack_c);
    FUN_004861ed(*(undefined4 *)(param_1 + 0x10));
    *(undefined4 *)(param_1 + 0x10) = uVar2;
  }
  return;
}



undefined4 __fastcall FUN_006f0d7f(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0x18c) != 0) {
    uVar1 = FUN_007b2498();
    return uVar1;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_006f11e9(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x38) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x30) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x28) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_004d9011(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006f1316(void)

{
  undefined4 *puVar1;
  undefined4 local_6a4;
  undefined4 local_6a0;
  uint uStack_69c;
  undefined auStack_68c [12];
  undefined4 *local_680;
  undefined local_658 [1596];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4ec78;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_68c;
  uStack_69c = DAT_0323f878 ^ (uint)&stack0xfffff968;
  ExceptionList = &local_14;
  local_680 = &local_6a4;
  local_6a4 = 0x5022;
  local_6a0 = 0x79;
  puVar1 = (undefined4 *)FUN_00465be3(local_658);
  local_c = 0;
  local_6a4 = *puVar1;
  local_680 = &local_6a4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_006f25c8(void)

{
  undefined4 *puVar1;
  undefined4 local_424;
  undefined4 local_420;
  uint uStack_41c;
  undefined auStack_40c [20];
  undefined local_3f8 [120];
  undefined4 *local_380;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5ce80;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_40c;
  uStack_41c = DAT_0323f878 ^ (uint)&stack0xfffffbe8;
  ExceptionList = &local_14;
  local_380 = &local_424;
  local_424 = 0x5022;
  local_420 = 0x7b;
  puVar1 = (undefined4 *)FUN_00465be3(local_3f8);
  local_c = 0;
  local_424 = *puVar1;
  local_380 = &local_424;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_006f3434(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006f346f(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W36DEDEBC::WDE48D0D1>,class_boost::_bi::list1<class_boost::_bi::value<class_W36DEDEBC::WDE48D0D1*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006f346f(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W36DEDEBC::WDE48D0D1>,class_boost::_bi::list1<class_boost::_bi::value<class_W36DEDEBC::WDE48D0D1*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W36DEDEBC::WDE48D0D1>,class_boost::_bi::list1<class_boost::_bi::value<class_W36DEDEBC::WDE48D0D1*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_006f34be(undefined4 *param_1)

{
  *param_1 = W36DEDEBC::W3E700B65::vftable;
  return;
}



undefined4 __thiscall FUN_006f34c5(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *param_1_00;
  uVar2 = (**(code **)(iVar1 + 0x18))();
  (**(code **)(iVar1 + 0x20))(param_1,2,uVar2);
  return param_1;
}



undefined4 * __thiscall FUN_006f34ea(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W36DEDEBC::W3E700B65::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_006f35be(undefined4 param_1)

{
  FUN_004180b1();
  FUN_00516122(param_1);
  return param_1;
}



undefined4 FUN_006f35ee(undefined4 param_1)

{
  FUN_004180b1();
  FUN_00516122(param_1);
  return param_1;
}



undefined4 FUN_006f361e(undefined4 param_1)

{
  FUN_004180b1();
  FUN_00516122(param_1);
  return param_1;
}



undefined4 FUN_006f364e(undefined4 param_1)

{
  FUN_004180b1();
  FUN_00516122(param_1);
  return param_1;
}



undefined4 FUN_006f3688(undefined4 param_1)

{
  FUN_004180b1();
  FUN_00515d2b(param_1);
  return param_1;
}



undefined4 __thiscall
FUN_006f36b8(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  (**(code **)**(undefined4 **)(param_1_00 + 4))(param_1,param_2,param_3,0);
  return param_1;
}



void __fastcall FUN_006f396a(int param_1)

{
  undefined4 uStack_480;
  undefined4 uStack_47c;
  int **ppiStack_478;
  int *piStack_474;
  int *piStack_470;
  uint uStack_46c;
  undefined auStack_45c [16];
  int local_44c;
  undefined4 uStack_420;
  undefined auStack_41c [20];
  undefined4 *puStack_408;
  int **local_3fc;
  uint local_1c;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c5846d;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_45c;
  uStack_46c = DAT_0323f878 ^ (uint)&stack0xfffffb98;
  ExceptionList = &local_14;
  piStack_474 = *(int **)(param_1 + 0x124);
  local_3fc = &piStack_474;
  ppiStack_478 = &piStack_474;
  uStack_47c = 0x6f39c4;
  piStack_470 = piStack_474;
  local_44c = param_1;
  (**(code **)(*piStack_474 + 0x20))();
  uStack_47c = 0x6f39cc;
  (**(code **)(**(int **)(param_1 + 4) + 0x10))();
  uStack_47c = 0x6f39d7;
  FUN_004fa2a2();
  uStack_18 = 0;
  puStack_408 = &uStack_480;
  uStack_480 = uStack_420;
                    // WARNING: Subroutine does not return
  FUN_0043c023(auStack_41c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined __fastcall FUN_006f4a63(int *param_1)

{
  int iStack_48;
  int iStack_44;
  undefined *puStack_40;
  undefined local_2c [4];
  int local_28;
  int local_24;
  int local_20;
  int *local_1c;
  undefined local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_24 = 0;
  local_20 = 0;
  puStack_40 = local_2c;
  local_8 = 0;
  iStack_44 = 0x6f4a83;
  (**(code **)(*param_1 + 8))();
  local_8._0_1_ = 1;
  iStack_44 = 0x6f4a8f;
  FUN_004fe47e();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_28 != 0) {
    iStack_44 = 0x6f4a9e;
    FUN_0040127a();
  }
  local_15 = local_24 != 0;
  if (!(bool)local_15) {
    iStack_44 = 0xdd9828b5;
    iStack_48 = 0x6f4aee;
    FUN_00b940e0();
    local_8 = 0xffffffff;
    if (local_20 != 0) {
      iStack_44 = 0x6f4aff;
      FUN_0040127a();
    }
    return local_15;
  }
  iStack_44 = local_24;
  local_1c = &iStack_48;
  iStack_48 = local_24;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_20);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined __fastcall FUN_006f4b0a(int *param_1)

{
  int iStack_48;
  int iStack_44;
  undefined *puStack_40;
  undefined local_2c [4];
  int local_28;
  int local_24;
  int local_20;
  int *local_1c;
  undefined local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_24 = 0;
  local_20 = 0;
  puStack_40 = local_2c;
  local_8 = 0;
  iStack_44 = 0x6f4b2a;
  (**(code **)(*param_1 + 4))();
  local_8._0_1_ = 1;
  iStack_44 = 0x6f4b36;
  FUN_004fe47e();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_28 != 0) {
    iStack_44 = 0x6f4b45;
    FUN_0040127a();
  }
  local_15 = local_24 != 0;
  if (!(bool)local_15) {
    iStack_44 = 0xaac24ecf;
    iStack_48 = 0x6f4b95;
    FUN_00b940e0();
    local_8 = 0xffffffff;
    if (local_20 != 0) {
      iStack_44 = 0x6f4ba6;
      FUN_0040127a();
    }
    return local_15;
  }
  iStack_44 = local_24;
  local_1c = &iStack_48;
  iStack_48 = local_24;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_20);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006f4c67(int param_1,undefined4 param_2,int *param_3,int *param_4)

{
  int extraout_ECX;
  undefined4 **ppuStack_60;
  undefined4 *puStack_5c;
  undefined4 *puStack_58;
  int *local_44;
  int local_40;
  undefined4 local_3c;
  int local_38;
  int local_34;
  int local_30;
  undefined4 ***local_28;
  undefined4 local_20;
  undefined4 *local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  local_34 = 0;
  local_30 = 0;
  local_44 = (int *)0x0;
  local_40 = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  puStack_58 = (undefined4 *)0x6f4c92;
  local_20 = (**(code **)(*param_4 + 0x14))();
  puStack_58 = (undefined4 *)0x6f4c9d;
  FUN_007dd2a5();
  local_8._0_1_ = 2;
  puStack_58 = (undefined4 *)0x6f4ca9;
  FUN_004fe47e();
  local_8._0_1_ = 1;
  if (local_38 != 0) {
    puStack_58 = (undefined4 *)0x6f4cb9;
    FUN_0040127a();
  }
  puStack_58 = &local_3c;
  puStack_5c = (undefined4 *)0x6f4cc4;
  (**(code **)(*param_4 + 0x1c))();
  local_8._0_1_ = 3;
  puStack_5c = (undefined4 *)0x6f4cd0;
  FUN_004fe47e();
  local_8 = CONCAT31(local_8._1_3_,1);
  puStack_5c = (undefined4 *)local_38;
  if (local_38 != 0) {
    puStack_5c = (undefined4 *)0x6f4ce0;
    FUN_0040127a();
    puStack_5c = (undefined4 *)extraout_ECX;
  }
  if ((local_34 == 0) || (local_44 == (int *)0x0)) {
    puStack_5c = (undefined4 *)0xd40a1d9c;
    local_15 = '\0';
    ppuStack_60 = (undefined4 **)0x6f4d02;
    FUN_00b940e0();
  }
  else {
    local_15 = '\x01';
  }
  local_3c = 0;
  local_38 = 0;
  local_8 = CONCAT31(local_8._1_3_,4);
  if (local_15 != '\0') {
    local_28 = &ppuStack_60;
    ppuStack_60 = *(undefined4 ***)(param_1 + 300);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 0x130);
  }
  puStack_5c = (undefined4 *)0x6f4dfc;
  FUN_0074ca40();
  if (local_15 != '\0') {
    puStack_5c = (undefined4 *)0x6f4e09;
    local_15 = (**(code **)(*param_3 + 0x18))();
    if (local_15 == '\0') {
      puStack_5c = (undefined4 *)0xeaea3e5c;
      ppuStack_60 = (undefined4 **)0x6f4e1f;
      FUN_00b940e0();
    }
  }
  local_1c = (undefined4 *)0x0;
  local_8._0_1_ = 7;
  if (local_15 != '\0') {
    puStack_5c = (undefined4 *)0x0;
    ppuStack_60 = &local_1c;
    local_15 = (**(code **)(*local_44 + 0x10))();
    puStack_5c = local_1c;
    if (local_15 == '\0') {
      puStack_5c = (undefined4 *)0x8103eef9;
      local_15 = '\0';
    }
    else {
      local_1c = (undefined4 *)0x0;
      ppuStack_60 = (undefined4 **)0x6f4e6e;
      local_15 = (**(code **)(**(int **)(*(int *)(param_1 + 0x11c) + 0x10) + 0x108))();
      if (local_15 != '\0') {
        puStack_5c = (undefined4 *)0x6f4e92;
        FUN_007dd228();
        puStack_5c = (undefined4 *)0x6f4e9a;
        (**(code **)(*param_4 + 0x18))();
        puStack_5c = (undefined4 *)0x6f4ea4;
        FUN_007dd1f3();
        goto LAB_006f4ea6;
      }
      puStack_5c = (undefined4 *)0x86854c70;
    }
    ppuStack_60 = (undefined4 **)0x6f4e84;
    FUN_00b940e0();
  }
LAB_006f4ea6:
  local_8._0_1_ = 4;
  if (local_1c != (undefined4 *)0x0) {
    puStack_5c = (undefined4 *)0x1;
    ppuStack_60 = (undefined4 **)0x6f4eb7;
    (**(code **)*local_1c)();
  }
  local_8._0_1_ = 1;
  if (local_38 != 0) {
    puStack_5c = (undefined4 *)0x6f4ec7;
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_40 != 0) {
    puStack_5c = (undefined4 *)0x6f4ed6;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_30 != 0) {
    puStack_5c = (undefined4 *)0x6f4ee6;
    FUN_0040127a();
  }
  return local_15;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __fastcall FUN_006f4ef1(int *param_1)

{
  undefined4 uVar1;
  undefined local_24 [4];
  int local_20;
  int local_1c;
  int local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18 = 0;
  local_8 = 0;
  (**(code **)(*param_1 + 0x1c))(local_24);
  local_8._0_1_ = 1;
  FUN_004fe47e();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  local_11 = local_1c != 0;
  if ((bool)local_11) {
    local_11 = FUN_005d3ad3(local_1c);
    if (local_11 != '\0') goto LAB_006f4f74;
    uVar1 = 0xdaaeee8e;
  }
  else {
    uVar1 = 0xd5ccfb47;
  }
  FUN_00b940e0(uVar1);
LAB_006f4f74:
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

uint __thiscall FUN_006f4f8d(int param_1_00,undefined4 *param_1,int *param_2)

{
  undefined4 auStack_74 [2];
  undefined4 uStack_6c;
  undefined4 uStack_50;
  int iStack_4c;
  int *piStack_48;
  undefined *puStack_44;
  undefined *puStack_40;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  undefined local_1c [4];
  int local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_2c = 0;
  local_28 = 0;
  local_24 = 0;
  local_20 = 0;
  puStack_40 = (undefined *)(param_1_00 + 0x10c);
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  puStack_44 = (undefined *)0x6f4fbc;
  FUN_007b47f9();
  puStack_40 = local_1c;
  puStack_44 = (undefined *)0x6f4fc8;
  (**(code **)(*param_2 + 0xc))();
  local_8._0_1_ = 2;
  puStack_44 = (undefined *)0x6f4fd4;
  FUN_004fe47e();
  local_8._0_1_ = 1;
  if (local_18[0] != 0) {
    puStack_44 = (undefined *)0x6f4fe4;
    FUN_0040127a();
  }
  puStack_44 = local_1c;
  piStack_48 = (int *)0x6f4ff0;
  (**(code **)(*param_2 + 0x10))();
  local_8._0_1_ = 3;
  piStack_48 = (int *)0x6f4ffc;
  FUN_004fe47e();
  local_8._0_1_ = 1;
  if (local_18[0] != 0) {
    piStack_48 = (int *)0x6f500c;
    FUN_0040127a();
  }
  if ((local_2c != 0) && (local_24 != 0)) {
    piStack_48 = local_18;
    local_18[0] = 0;
    param_2 = (int *)0x0;
    iStack_4c = 0x6f503b;
    FUN_00ba477f();
    piStack_48 = (int *)&param_2;
    iStack_4c = 0x6f5047;
    FUN_00ba477f();
    iStack_4c = (int)param_2 + local_18[0];
    piStack_48 = (int *)0x0;
    uStack_50 = 0x6f505b;
    (**(code **)*param_1)();
    param_2 = auStack_74;
    uStack_6c = 0;
    auStack_74[0] = *(undefined4 *)(param_1_00 + 0x11c);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1_00 + 0x120);
  }
  param_2 = (int *)((uint)param_2 & 0xffffff);
  piStack_48 = (int *)0xe10d1d05;
  iStack_4c = 0x6f5148;
  FUN_00b940e0();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    piStack_48 = (int *)0x6f5158;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  if (local_28 != 0) {
    piStack_48 = (int *)0x6f5168;
    FUN_0040127a();
  }
  return (uint)param_2 >> 0x18;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __fastcall FUN_006f5173(int *param_1_00,int param_2,undefined4 *param_1)

{
  char cVar1;
  undefined4 uVar2;
  int *local_20;
  int local_1c;
  undefined4 local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x6f517f;
  (**(code **)(*param_1_00 + 0x24))(&local_20);
  local_8 = 0;
  cVar1 = local_20 != (int *)0x0;
  if (!(bool)cVar1) {
    FUN_00b940e0(0x8ab2cb0c);
  }
  local_18[0] = 0;
  if ((bool)cVar1) {
    cVar1 = (**(code **)(*local_20 + 0x14))(local_18);
    if (cVar1 == '\0') {
      uVar2 = 0xc9dea36d;
      cVar1 = '\0';
    }
    else {
      FUN_007b4c35(param_2 + 0x10c);
      (**(code **)*param_1)(local_18[0],0);
      cVar1 = FUN_005d3ad3(local_20);
      if (cVar1 != '\0') goto LAB_006f5214;
      uVar2 = 0xa38b768b;
    }
    FUN_00b940e0(uVar2);
  }
LAB_006f5214:
  local_8 = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  return cVar1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_006f522e(int param_1)

{
  int *piVar1;
  char cVar2;
  int **ppiVar3;
  undefined4 *puVar4;
  undefined *puStack_b8;
  int iStack_b4;
  int *piStack_b0;
  undefined4 *puStack_ac;
  undefined *puStack_a8;
  undefined local_94 [24];
  undefined local_7c [8];
  undefined local_74 [4];
  int local_70;
  undefined4 local_6c;
  int local_68;
  undefined8 local_64;
  int local_5c;
  undefined local_55;
  undefined local_54 [76];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x84;
  local_8 = 0x6f523d;
  piVar1 = *(int **)(*(int *)(param_1 + 0x11c) + 0x10);
  puStack_a8 = local_74;
  local_5c = 3;
  puStack_ac = (undefined4 *)0x6f5258;
  ppiVar3 = (int **)FUN_005f0832();
  local_8 = 0;
  puStack_a8 = (undefined *)0x0;
  puStack_ac = &local_6c;
  piStack_b0 = (int *)0x6f5269;
  (**(code **)(**ppiVar3 + 0x18))();
  local_8._0_1_ = 2;
  if (local_70 != 0) {
    piStack_b0 = (int *)0x6f5279;
    FUN_0040127a();
  }
  piStack_b0 = (int *)0x0;
  iStack_b4 = 0;
  puStack_b8 = (undefined *)0x3c;
  local_64 = FUN_0043b546(0,0);
  piStack_b0 = (int *)0x6f529b;
  FUN_00b98ea0();
  piStack_b0 = (int *)local_94;
  local_8._0_1_ = 3;
  iStack_b4 = local_6c;
  puStack_b8 = local_54;
  FUN_00b9f55b();
  local_8 = CONCAT31(local_8._1_3_,5);
  piStack_b0 = (int *)0x6f52c1;
  FUN_00b98d40();
  piStack_b0 = &local_5c;
  iStack_b4 = 0x6f52cf;
  cVar2 = (**(code **)(*piVar1 + 0x124))();
  if (cVar2 == '\0') {
    iStack_b4 = 0xdbe410f3;
    puStack_b8 = (undefined *)0x6f52e4;
    FUN_00b940e0();
  }
  local_8 = CONCAT31(local_8._1_3_,2);
  iStack_b4 = 0x6f52f1;
  FUN_00b9f511();
  local_8 = 0xffffffff;
  if (local_68 != 0) {
    iStack_b4 = 0x6f5301;
    FUN_0040127a();
  }
  if ((cVar2 != '\0') && (local_5c != 0)) {
    if (local_5c == 4) {
      iStack_b4 = param_1 + 0x118;
      puStack_b8 = (undefined *)0x6f534c;
      FUN_007e2b4d();
      local_64._4_4_ = &puStack_b8;
      puStack_b8 = (undefined *)0xa0c;
      iStack_b4 = 0x142;
      puVar4 = (undefined4 *)FUN_00465be3(local_7c);
      local_64._4_4_ = &puStack_b8;
      local_8 = 6;
      puStack_b8 = (undefined *)*puVar4;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar4 + 1);
    }
    iStack_b4 = 0xfb3006e1;
    local_55 = (undefined)local_5c;
    puStack_b8 = (undefined *)0x6f532e;
    FUN_00b940e0();
    iStack_b4 = 1;
    puStack_b8 = &local_55;
    FUN_00b940c0(0xfb3006e1);
  }
  iStack_b4 = 0x6f53bf;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006f53c0(undefined4 **param_1,undefined4 **param_2)

{
  int *piVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 local_54 [4];
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 *puStack_3c;
  undefined4 *local_38 [5];
  int *local_24;
  undefined4 *local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_24 = *(int **)(*(int *)((int)param_1 + 0x11c) + 0x10);
  local_20 = (undefined4 *)0x0;
  local_1c = (undefined4 *)0x0;
  local_18 = (undefined4 *)0x0;
  param_1 = (undefined4 **)local_54;
  local_8 = 2;
  FUN_004180b1();
  cVar2 = FUN_00bbfff0(&local_20);
  if (cVar2 == '\0') {
LAB_006f5457:
    local_38[0] = (undefined4 *)0xdcd83ae0;
    cVar2 = '\0';
    puStack_3c = (undefined4 *)0x6f5468;
    FUN_00b940e0();
  }
  else {
    param_1 = (undefined4 **)local_54;
    FUN_004180b1();
    cVar2 = FUN_00bbfff0(&local_1c);
    if (cVar2 == '\0') goto LAB_006f5457;
    param_1 = (undefined4 **)local_54;
    FUN_004180b1();
    cVar2 = FUN_00bbfff0(&local_18);
    if (cVar2 == '\0') goto LAB_006f5457;
    cVar2 = '\x01';
  }
  local_14 = (undefined4 *)0x0;
  local_8._0_1_ = 3;
  if (cVar2 != '\0') {
    puStack_3c = &param_1;
    local_38[0] = (undefined4 *)0x0;
    uStack_40 = 0x6f5489;
    puVar3 = (undefined4 *)FUN_00b933f0();
    local_38[0] = (undefined4 *)*puVar3;
    *puVar3 = 0;
    puStack_3c = (undefined4 *)0x6f5498;
    FUN_0040c727();
    if (param_1 != (undefined4 **)0x0) {
      local_38[0] = (undefined4 *)0x1;
      puStack_3c = (undefined4 *)0x6f54a5;
      (*(code *)**param_1)();
    }
    local_38[0] = local_20;
    piVar1 = local_24;
    param_1 = local_38;
    local_20 = (undefined4 *)0x0;
    puStack_3c = (undefined4 *)0x6;
    uStack_40 = 0;
    uStack_44 = 0x6f54c5;
    cVar2 = (**(code **)(*local_24 + 0x138))();
    if (cVar2 == '\0') {
      local_38[0] = (undefined4 *)0xef088c20;
      cVar2 = '\0';
    }
    else {
      param_1 = local_38;
      local_38[0] = local_1c;
      puStack_3c = (undefined4 *)0xe;
      uStack_40 = 0;
      local_1c = (undefined4 *)0x0;
      uStack_44 = 0x6f54f5;
      cVar2 = (**(code **)(*piVar1 + 0x138))();
      if (cVar2 == '\0') {
        local_38[0] = (undefined4 *)0xd90c7ecd;
        cVar2 = '\0';
      }
      else {
        param_1 = local_38;
        local_38[0] = local_18;
        puStack_3c = (undefined4 *)0x1c;
        uStack_40 = 0;
        local_18 = (undefined4 *)0x0;
        uStack_44 = 0x6f5522;
        cVar2 = (**(code **)(*piVar1 + 0x138))();
        if (cVar2 == '\0') {
          local_38[0] = (undefined4 *)0x944a0e10;
          cVar2 = '\0';
        }
        else {
          param_1 = local_38;
          local_38[0] = local_14;
          puStack_3c = (undefined4 *)0x13;
          uStack_40 = 0;
          local_14 = (undefined4 *)0x0;
          uStack_44 = 0x6f554f;
          cVar2 = (**(code **)(*piVar1 + 0x138))();
          if (cVar2 != '\0') goto LAB_006f5565;
          local_38[0] = (undefined4 *)0xb1d95031;
        }
      }
    }
    puStack_3c = (undefined4 *)0x6f5564;
    FUN_00b940e0();
  }
LAB_006f5565:
  param_1 = (undefined4 **)0x0;
  local_8._0_1_ = 4;
  if (cVar2 != '\0') {
    local_38[0] = param_2;
    puStack_3c = (undefined4 *)0x6f557c;
    cVar2 = FUN_00b9f072();
    piVar1 = local_24;
    local_38[0] = param_1;
    if (cVar2 == '\0') {
      local_38[0] = (undefined4 *)0xfb27a82d;
      cVar2 = '\0';
    }
    else {
      param_1 = (undefined4 **)0x0;
      param_2 = local_38;
      puStack_3c = &param_2;
      uStack_40 = 0x6f55ae;
      cVar2 = (**(code **)(*local_24 + 0xf4))();
      if ((cVar2 == '\0') || (param_2 != (undefined4 **)0x0)) {
        cVar2 = '\0';
        local_38[0] = (undefined4 *)0xe87fd9cc;
      }
      else {
        local_38[0] = (undefined4 *)0x6f55d0;
        cVar2 = (**(code **)(*piVar1 + 0xf8))();
        if (cVar2 != '\0') goto LAB_006f55e6;
        local_38[0] = (undefined4 *)0xe950d84d;
      }
    }
    puStack_3c = (undefined4 *)0x6f55e5;
    FUN_00b940e0();
  }
LAB_006f55e6:
  local_8._0_1_ = 3;
  if (param_1 != (undefined4 **)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x6f55f7;
    (*(code *)**param_1)();
  }
  local_8._0_1_ = 2;
  if (local_14 != (undefined4 *)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x6f5608;
    (**(code **)*local_14)();
  }
  local_8._0_1_ = 1;
  if (local_18 != (undefined4 *)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x6f5619;
    (**(code **)*local_18)();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_1c != (undefined4 *)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x6f562a;
    (**(code **)*local_1c)();
  }
  local_8 = 0xffffffff;
  if (local_20 != (undefined4 *)0x0) {
    local_38[0] = (undefined4 *)0x1;
    puStack_3c = (undefined4 *)0x6f563b;
    (**(code **)*local_20)();
  }
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __fastcall
FUN_006f5645(int *param_1_00,int param_2_00,undefined4 param_1,undefined4 *param_2,
            undefined4 param_3,undefined4 param_4)

{
  int *piVar1;
  undefined4 uVar2;
  undefined local_2c [4];
  int local_28;
  int *local_24;
  int local_20;
  undefined4 local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_24 = (int *)0x0;
  local_20 = 0;
  local_8 = 0;
  (**(code **)(*param_1_00 + 0x20))(local_2c,param_3,param_4);
  local_8._0_1_ = 1;
  FUN_004fe47e();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_28 != 0) {
    FUN_0040127a();
  }
  piVar1 = local_24;
  local_15 = local_24 != (int *)0x0;
  if (!(bool)local_15) {
    FUN_00b940e0(0x9dc9514e);
  }
  local_1c = 0;
  if (local_15 != '\0') {
    local_15 = (**(code **)(*piVar1 + 0x14))(&local_1c);
    if (local_15 == '\0') {
      uVar2 = 0x941cb12b;
      local_15 = '\0';
    }
    else {
      FUN_007b4c35(param_2_00 + 0x10c);
      (**(code **)*param_2)(local_1c,0);
      local_15 = FUN_005d3ad3(piVar1);
      if (local_15 != '\0') {
        FUN_007dd228();
        FUN_007dd1f3();
        goto LAB_006f572c;
      }
      uVar2 = 0xd40704c6;
    }
    FUN_00b940e0(uVar2);
  }
LAB_006f572c:
  local_8 = 0xffffffff;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  return local_15;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006f5747(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W36DEDEBC::W0184F9FF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006f578d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006f57ea(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void Catch_All_006f5843(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void Catch_All_006f589c(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void FUN_006f58af(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006f58ea(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W36DEDEBC::W0EE1AD45>,class_boost::_bi::list1<class_boost::_bi::value<class_W36DEDEBC::W0EE1AD45*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006f58ea(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W36DEDEBC::W0EE1AD45>,class_boost::_bi::list1<class_boost::_bi::value<class_W36DEDEBC::W0EE1AD45*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W36DEDEBC::W0EE1AD45>,class_boost::_bi::list1<class_boost::_bi::value<class_W36DEDEBC::W0EE1AD45*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_006f5c1c(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x40) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x38) != 0) {
    FUN_0040127a();
  }
  FUN_00603b1e(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_006f5c97(void)

{
  FUN_007b2498();
  return;
}



void FUN_006f6277(void)

{
  undefined4 *puVar1;
  undefined4 local_3ac;
  undefined4 local_3a8;
  uint uStack_3a4;
  undefined auStack_394 [12];
  undefined4 *local_388;
  undefined local_37c [864];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4eaa4;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_394;
  uStack_3a4 = DAT_0323f878 ^ (uint)&stack0xfffffc60;
  ExceptionList = &local_14;
  local_388 = &local_3ac;
  local_3ac = 0xa0c;
  local_3a8 = 0xf0;
  puVar1 = (undefined4 *)FUN_00465be3(local_37c);
  local_c = 0;
  local_3ac = *puVar1;
  local_388 = &local_3ac;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_006f6aa1(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006f6adc(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W36DEDEBC::W1DB9EDBB>,class_boost::_bi::list1<class_boost::_bi::value<class_W36DEDEBC::W1DB9EDBB*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006f6adc(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W36DEDEBC::W1DB9EDBB>,class_boost::_bi::list1<class_boost::_bi::value<class_W36DEDEBC::W1DB9EDBB*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W36DEDEBC::W1DB9EDBB>,class_boost::_bi::list1<class_boost::_bi::value<class_W36DEDEBC::W1DB9EDBB*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_006f7214(void)

{
  undefined local_14 [8];
  uint local_c;
  
  local_c = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  FUN_007b36ec(local_14);
  ___security_check_cookie_4();
  return;
}



void FUN_006f7310(void)

{
  undefined4 *puVar1;
  undefined4 local_514;
  undefined4 local_510;
  uint uStack_50c;
  undefined auStack_4fc [24];
  undefined4 *local_4e4;
  undefined4 local_4dc;
  undefined local_4cc [1200];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5ccf2;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_4fc;
  uStack_50c = DAT_0323f878 ^ (uint)&stack0xfffffaf8;
  ExceptionList = &local_14;
  local_4dc = 0;
  local_4e4 = &local_514;
  local_514 = 0xa0c;
  local_510 = 0x104;
  puVar1 = (undefined4 *)FUN_00465be3(local_4cc);
  local_c = 0;
  local_514 = *puVar1;
  local_4e4 = &local_514;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006f8084(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6f8090;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::WE674EA6E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::WE674EA6E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006f813a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6f8146;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::W61C8BF25::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::W61C8BF25::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006f898c(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6f8998;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WE29B0CA5::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WE29B0CA5::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_006f8afa(void)

{
  undefined4 *puVar1;
  undefined4 local_464;
  undefined4 local_460;
  uint uStack_45c;
  undefined auStack_44c [8];
  undefined4 *local_444;
  undefined local_438 [1052];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4e9c6;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_44c;
  uStack_45c = DAT_0323f878 ^ (uint)&stack0xfffffba8;
  ExceptionList = &local_14;
  local_444 = &local_464;
  local_464 = 0xa0c;
  local_460 = 0x141;
  puVar1 = (undefined4 *)FUN_00465be3(local_438);
  local_c = 0;
  local_464 = *puVar1;
  local_444 = &local_464;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006f9817(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6f9823;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WD0C65AAA::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WD0C65AAA::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006fa888(void)

{
  undefined4 *puVar1;
  undefined *local_c0;
  undefined auStack_b8 [24];
  undefined4 uStack_a0;
  undefined *puStack_9c;
  undefined local_50 [52];
  undefined **local_1c;
  undefined *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x78;
  local_8 = 0x6fa894;
  local_14 = 0;
  puStack_9c = local_50;
  uStack_a0 = 0x6fa8a1;
  FUN_00507ed8();
  local_18 = auStack_b8;
  local_8 = 1;
  local_c0 = &LAB_006fa7a0;
  FUN_006fbe98();
  local_8 = CONCAT31(local_8._1_3_,2);
  local_c0 = (undefined *)0x6fa8cc;
  puVar1 = (undefined4 *)FUN_00608b80();
  local_c0 = (undefined *)*puVar1;
  local_1c = &local_c0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



char FUN_006fb274(undefined4 param_1,char param_2)

{
  char cVar1;
  int in_EAX;
  char local_5;
  
  FUN_005079d0(FUN_005d1cc5,*(undefined4 *)(in_EAX + 4));
  cVar1 = FUN_005d2ca5();
  if (cVar1 == '\0') {
    local_5 = '\0';
  }
  else {
    cVar1 = FUN_005d2d25();
    if (cVar1 == '\0') {
      FUN_00b940e0();
      FUN_007e2a43();
      return '\0';
    }
    if (param_2 == '\0') {
      return cVar1;
    }
    local_5 = FUN_005d2e7a();
    if (local_5 != '\0') {
      FUN_007e2c7c();
      FUN_007e29a3();
      return local_5;
    }
  }
  FUN_00b940e0();
  return local_5;
}



void FUN_006fb34b(void)

{
  FUN_0074ca40();
  return;
}



char FUN_006fb356(void)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0x944ae599;
  }
  else {
    FUN_006fa888(local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0x9afbc116;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006fb3ff(void)

{
  int unaff_EBX;
  undefined4 local_40;
  int iStack_3c;
  undefined4 *local_18;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  uStack_8 = 0x6fb40b;
  iStack_3c = unaff_EBX + 0x10c;
  local_40 = 0x6fb417;
  FUN_007b4f22();
  local_18 = &local_40;
  local_40 = *(undefined4 *)(unaff_EBX + 0x11c);
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EBX + 0x120);
}



void FUN_006fbb52(void)

{
  int in_EAX;
  
  FUN_007b48d0();
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0x120);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_006fbc96(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(*(int *)(param_1 + 0x11c) + 0x14);
}



void FUN_006fbe80(undefined4 param_1,undefined4 param_2)

{
  FUN_00608be7();
  FUN_005f3f8f(param_1,param_2);
  return;
}



void FUN_006fbe98(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd1c19;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_006fbf97(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_006fbfd3(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W36DEDEBC::W54B75EF1,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W36DEDEBC::W54B75EF1*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_006fbfd3(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W36DEDEBC::W54B75EF1,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W36DEDEBC::W54B75EF1*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W36DEDEBC::W54B75EF1,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W36DEDEBC::W54B75EF1*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 * __thiscall FUN_006fc1b8(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W36DEDEBC::W814C3CF0::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_006fc4b6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006fc513(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006fc570(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006fc5cd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_006fc62a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall
FUN_006fc641(undefined4 param_1_00,int param_2_00,int param_1,int *param_2,undefined4 param_3)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  undefined4 uVar2;
  undefined local_e4 [44];
  undefined local_b8 [12];
  undefined local_ac [28];
  int *local_90;
  int local_8c;
  undefined local_88 [4];
  int local_84;
  int local_80;
  undefined local_7c [12];
  int local_70;
  int local_6c;
  int *local_64;
  undefined local_60 [4];
  int local_5c;
  int *local_58;
  uint local_54;
  char local_4d;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [24];
  undefined4 local_34;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xe0;
  local_8 = 0x6fc650;
  local_64 = param_2;
  local_5c = param_2_00;
  FUN_004fcc16(local_88,param_2);
  local_8 = 0;
  local_18 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_30,0);
  local_8._0_1_ = 1;
  FUN_00674aaa(local_7c);
  local_8 = CONCAT31(local_8._1_3_,2);
  if (param_1 == 0) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_30,"B");
    FUN_0041c0c6();
  }
  else {
    if (param_1 == 1) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (local_30,"CR");
      local_54 = 0xe468a51;
    }
    else {
      if (param_1 == 2) {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                  (local_30,"R");
      }
      else {
        if (param_1 != 3) {
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                    (local_30,"UNK");
          goto LAB_006fc72a;
        }
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                  (local_30,"F");
        local_54 = 0xe468a51;
        FUN_0041b043(&local_54);
        local_54 = 0xf2815168;
        FUN_0041b043(&local_54);
      }
      local_54 = 0x956f9d8b;
    }
    FUN_0041b043(&local_54);
  }
LAB_006fc72a:
  local_34 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_4c,0);
  FUN_007b2dd2();
  local_8._0_1_ = 4;
  if (local_58 != (int *)0x0) {
    (**(code **)(*local_58 + 8))();
    pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_004fd9f6();
    local_8._0_1_ = 5;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_4c,pbVar1,0,0xffffffff);
    FUN_004017b2(1,0);
  }
  local_8._0_1_ = 3;
  if (local_54 != 0) {
    FUN_0040127a();
  }
  (**(code **)(*local_64 + 0x40))(&local_90);
  local_8._0_1_ = 6;
  FUN_004fcd79();
  local_8._0_1_ = 7;
  local_54 = 0;
  if (local_6c - local_70 >> 2 != 0) {
    do {
      uVar2 = FUN_0041b02a();
      FUN_0042c446(uVar2);
      local_54 = local_54 + 1;
      param_2_00 = local_5c;
    } while (local_54 < (uint)(local_6c - local_70 >> 2));
  }
  FUN_004fcce7(local_60);
  local_8._0_1_ = 8;
  FUN_004fe47e();
  local_8._0_1_ = 7;
  if (local_5c != 0) {
    FUN_0040127a();
  }
  FUN_005d11c9(local_b8);
  FUN_0043d406(param_3);
  local_8 = CONCAT31(local_8._1_3_,9);
  local_4d = (**(code **)(*local_90 + 4))(param_2_00,local_e4);
  if (local_4d == '\0') {
    FUN_00b940e0(0x3dd92a0c);
  }
  local_8._0_1_ = 7;
  if ((char)local_5c != '\0') {
    FUN_00401477();
  }
  if (local_4d != '\0') {
    FUN_0043d406(param_3);
    local_8._0_1_ = 10;
    uVar2 = FUN_006858d7(local_ac);
    local_8._0_1_ = 0xb;
    FUN_007b84ca(uVar2);
    local_8._0_1_ = 10;
    FUN_004017b2(1,0);
    FUN_007b859e(local_4c);
    FUN_007b8622(*(undefined4 *)(local_80 + 100));
    FUN_007b868c(local_30);
    local_8._0_1_ = 7;
    if ((char)local_5c != '\0') {
      FUN_00401477();
    }
  }
  local_8._0_1_ = 6;
  FUN_007b408b();
  local_8 = CONCAT31(local_8._1_3_,3);
  if (local_8c != 0) {
    FUN_0040127a();
  }
  FUN_004017b2(1,0);
  FUN_007a7d86();
  FUN_004017b2(1,0);
  local_8 = 0xffffffff;
  if (local_84 != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_006fca97(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x6fcaa3;
  local_4c = 0x6fcab4;
  FUN_007dd2a5();
  local_20 = 0;
  local_1c = 0;
  local_4c = param_1;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  local_50 = 0x6fcace;
  FUN_0043d406();
  local_18 = &local_50;
  local_8 = CONCAT31(local_8._1_3_,2);
  local_50 = *param_1_00;
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_006fcb99(int **param_1,undefined4 param_2)

{
  char cVar1;
  char local_18;
  
  cVar1 = '\x01';
  FUN_0043d406(param_2);
  if (*param_1 != (int *)0x0) {
    cVar1 = (**(code **)(**param_1 + 0x18))();
    if (cVar1 == '\0') {
      FUN_00b940e0(0x5be242e);
    }
  }
  if (local_18 != '\0') {
    FUN_00401477();
  }
  return cVar1;
}



undefined4 FUN_006fd92e(undefined4 param_1)

{
  FUN_004180b1();
  return param_1;
}



undefined4 FUN_006fdf75(undefined4 param_1)

{
  FUN_004180b1();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006fe070)

undefined4 * FUN_006fdffd(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006fe45f();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006fe34c(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6fe358;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W8BF77E42::W33F9A2AC::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W8BF77E42::W33F9A2AC::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006fe448(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006fe45f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8BF77E42::W33F9A2AC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006fe4a5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006fe4bc(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8BF77E42::WD3BAFC98>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006fe502(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006fe5f3)

undefined4 * FUN_006fe580(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006fe9e3();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006fe8d0(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6fe8dc;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W8BF77E42::W4C90FD0F::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W8BF77E42::W4C90FD0F::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006fe9cc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006fe9e3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8BF77E42::W4C90FD0F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006fea29(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006fea40(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8BF77E42::W4AD07763>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006fea86(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006feb7a)

undefined4 * FUN_006feb04(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006fef94();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006fee81(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6fee8d;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W8BF77E42::W7FAD041D::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W8BF77E42::W7FAD041D::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006fef7d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006fef94(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8BF77E42::W7FAD041D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006fefda(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006feff1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8BF77E42::WCF361ED1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ff037(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006ff4a8(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6ff4b4;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W8BF77E42::W8C39C086::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W8BF77E42::W8C39C086::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006ff5a4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ff5bb(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8BF77E42::WC097F89D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ff601(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ff618(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8BF77E42::W8C39C086>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ff65e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006ff755)

undefined4 * FUN_006ff6dc(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x18c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006ffa76();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006ff963(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6ff96f;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W8BF77E42::WA810FB34::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W8BF77E42::WA810FB34::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006ffa5f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006ffa76(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8BF77E42::WA810FB34>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_006ffabc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x006ffbb0)

undefined4 * FUN_006ffb3a(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x3c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_006fffca();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_006ffeb7(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x6ffec3;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W8BF77E42::WAF8BA6AC::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W8BF77E42::WAF8BA6AC::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_006fffb3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_006fffca(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8BF77E42::WAF8BA6AC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00700010(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00700027(undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8BF77E42::W8358E137>::vftable;
    puVar1[3] = param_2;
  }
  *param_1 = puVar1;
  return param_1;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00700053(undefined4 param_1,undefined4 param_2)

{
  char *in_EAX;
  int unaff_EBP;
  char **unaff_ESI;
  uint unaff_EDI;
  
  *in_EAX = *in_EAX + (char)((uint)param_2 >> 8);
  *(uint *)(unaff_EBP + 0xc488902) = *(uint *)(unaff_EBP + 0xc488902) & unaff_EDI;
  *unaff_ESI = in_EAX;
  return;
}



void FUN_00700069(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0070006d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00700217(int param_1)

{
  if (*(int *)(param_1 + 0x120) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x108) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x100) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0xf8) != 0) {
    FUN_0040127a();
  }
  FUN_004f8d32(param_1);
  return;
}



void FUN_00700287(void)

{
  undefined4 *puVar1;
  undefined4 local_3ac;
  undefined4 local_3a8;
  uint uStack_3a4;
  undefined auStack_394 [8];
  undefined4 *local_38c;
  undefined local_380 [868];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4e6e2;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_394;
  uStack_3a4 = DAT_0323f878 ^ (uint)&stack0xfffffc60;
  ExceptionList = &local_14;
  local_38c = &local_3ac;
  local_3ac = 0xa0c;
  local_3a8 = 8;
  puVar1 = (undefined4 *)FUN_00465be3(local_380);
  local_c = 0;
  local_3ac = *puVar1;
  local_38c = &local_3ac;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00700b90(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_004d9011(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00700cf2(void)

{
  undefined4 *puVar1;
  undefined4 local_42c;
  undefined4 local_428;
  uint uStack_424;
  undefined auStack_414 [16];
  undefined4 *local_404;
  undefined local_3fc [992];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4e604;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_414;
  uStack_424 = DAT_0323f878 ^ (uint)&stack0xfffffbe0;
  ExceptionList = &local_14;
  local_404 = &local_42c;
  local_42c = 0xa0c;
  local_428 = 0xee;
  puVar1 = (undefined4 *)FUN_00465be3(local_3fc);
  local_c = 0;
  local_42c = *puVar1;
  local_404 = &local_42c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_007017d5(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00701810(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W8BF77E42::W4AD07763>,class_boost::_bi::list1<class_boost::_bi::value<class_W8BF77E42::W4AD07763*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00701810(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W8BF77E42::W4AD07763>,class_boost::_bi::list1<class_boost::_bi::value<class_W8BF77E42::W4AD07763*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W8BF77E42::W4AD07763>,class_boost::_bi::list1<class_boost::_bi::value<class_W8BF77E42::W4AD07763*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00701c1f(void)

{
  undefined4 *puVar1;
  undefined4 local_69c;
  undefined4 local_698;
  uint uStack_694;
  undefined auStack_684 [12];
  undefined4 *local_678;
  undefined local_660 [1604];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4e4ad;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_684;
  uStack_694 = DAT_0323f878 ^ (uint)&stack0xfffff970;
  ExceptionList = &local_14;
  local_678 = &local_69c;
  local_69c = 0x5022;
  local_698 = 0x79;
  puVar1 = (undefined4 *)FUN_00465be3(local_660);
  local_c = 0;
  local_69c = *puVar1;
  local_678 = &local_69c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00702a00(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00702a3b(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W8BF77E42::WCF361ED1>,class_boost::_bi::list1<class_boost::_bi::value<class_W8BF77E42::WCF361ED1*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00702a3b(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W8BF77E42::WCF361ED1>,class_boost::_bi::list1<class_boost::_bi::value<class_W8BF77E42::WCF361ED1*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W8BF77E42::WCF361ED1>,class_boost::_bi::list1<class_boost::_bi::value<class_W8BF77E42::WCF361ED1*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_00702c74(int param_1)

{
  int *piStack_49c;
  int *piStack_498;
  uint uStack_494;
  undefined auStack_484 [8];
  int **local_47c;
  int local_460;
  undefined auStack_430 [1044];
  uint local_1c;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c5f42e;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_484;
  uStack_494 = DAT_0323f878 ^ (uint)&stack0xfffffb70;
  ExceptionList = &local_14;
  piStack_49c = *(int **)(param_1 + 0x124);
  local_47c = &piStack_49c;
  piStack_498 = piStack_49c;
  local_460 = param_1;
  (**(code **)(*piStack_49c + 0x14))();
  (**(code **)(**(int **)(param_1 + 4) + 0x10))();
  FUN_004fa2a2();
  uStack_18 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(auStack_430);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00704ab4(undefined4 *param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  undefined local_38 [32];
  undefined4 local_18;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  *param_1 = 0;
  uVar1 = 1;
  local_8 = 0;
  local_18 = 1;
  if (param_3 == 3) {
    FUN_007fc4a8(local_38,param_2);
  }
  else {
    uVar1 = 2;
    if (param_3 != 2) {
      return param_1;
    }
    FUN_007fc502(local_38,param_2);
  }
  local_8 = uVar1;
  FUN_00607a72(param_1);
  local_8 = local_8 & 0xffffff00;
  FUN_00507e58();
  return param_1;
}



void FUN_00704b1f(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd2279;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00704b68(undefined4 *param_1_00,int param_1)

{
  undefined4 uVar1;
  
  FUN_004382a5(param_1);
  *(undefined4 *)(param_1 + 0x20) = 0;
  uVar1 = FUN_00704b1f(*param_1_00,param_1_00[1]);
  FUN_004fc9c9(uVar1);
  FUN_00507e58();
  return param_1;
}



void FUN_00704bb5(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00704bf0(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W8BF77E42::WC097F89D>,class_boost::_bi::list1<class_boost::_bi::value<class_W8BF77E42::WC097F89D*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00704bf0(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W8BF77E42::WC097F89D>,class_boost::_bi::list1<class_boost::_bi::value<class_W8BF77E42::WC097F89D*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W8BF77E42::WC097F89D>,class_boost::_bi::list1<class_boost::_bi::value<class_W8BF77E42::WC097F89D*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 __thiscall FUN_00705723(undefined4 param_1_00,byte param_1)

{
  FUN_00705740(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00705740(int param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 5;
  puVar1 = auStack_24;
  auStack_24[0] = 0x70575e;
  FUN_005fe886();
  if (*(int *)(param_1 + 0x48) != 0) {
    puVar1[-1] = 0x70576a;
    FUN_0040127a();
  }
  local_8._0_1_ = 4;
  if (*(int *)(param_1 + 0x40) != 0) {
    puVar1[-1] = 0x70577a;
    FUN_0040127a();
  }
  local_8._0_1_ = 3;
  if (*(int *)(param_1 + 0x38) != 0) {
    puVar1[-1] = 0x70578a;
    FUN_0040127a();
  }
  local_8._0_1_ = 2;
  if (*(int *)(param_1 + 0x30) != 0) {
    puVar1[-1] = 0x70579a;
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (*(int *)(param_1 + 0x28) != 0) {
    puVar1[-1] = 0x7057aa;
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (*(int *)(param_1 + 0x20) != 0) {
    puVar1[-1] = 0x7057ba;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  puVar1[-1] = param_1;
  puVar1[-2] = 0x7057c4;
  FUN_004d9011();
  puVar1[-1] = 0x7057c9;
  return;
}



undefined4 __fastcall FUN_007057cc(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0x1c) != 0) {
    uVar1 = FUN_007b2d68();
    return uVar1;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007057db(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7057e7;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W873EFD0F::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W873EFD0F::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00705d08(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x188) != 0) {
    FUN_0040127a();
  }
  FUN_00485ebe();
  if (*(int *)(param_1_00 + 0x28) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_004d9011(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __fastcall FUN_00705d78(int param_1)

{
  return param_1 + 0x2c;
}



void FUN_00706331(void)

{
  undefined4 *puVar1;
  undefined4 local_484;
  undefined4 local_480;
  uint uStack_47c;
  undefined auStack_46c [8];
  undefined4 *local_464;
  undefined local_45c [1088];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c581d7;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_46c;
  uStack_47c = DAT_0323f878 ^ (uint)&stack0xfffffb88;
  ExceptionList = &local_14;
  local_464 = &local_484;
  local_484 = 0x5022;
  local_480 = 0x7b;
  puVar1 = (undefined4 *)FUN_00465be3(local_45c);
  local_c = 0;
  local_484 = *puVar1;
  local_464 = &local_484;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_007073f4(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0070742f(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W8BF77E42::W8358E137>,class_boost::_bi::list1<class_boost::_bi::value<class_W8BF77E42::W8358E137*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0070742f(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W8BF77E42::W8358E137>,class_boost::_bi::list1<class_boost::_bi::value<class_W8BF77E42::W8358E137*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W8BF77E42::W8358E137>,class_boost::_bi::list1<class_boost::_bi::value<class_W8BF77E42::W8358E137*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 __thiscall FUN_00707b40(undefined4 param_1_00,byte param_1)

{
  FUN_00700217(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00707bd1(void)

{
  undefined4 *puVar1;
  undefined *local_b0;
  undefined auStack_a8 [24];
  undefined4 uStack_90;
  undefined *puStack_8c;
  undefined local_48 [44];
  undefined **local_1c;
  undefined *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_8 = 0x707bdd;
  local_14 = 0;
  puStack_8c = local_48;
  uStack_90 = 0x707bea;
  FUN_00507ed8();
  local_18 = auStack_a8;
  local_8 = 1;
  local_b0 = &LAB_006fa7a0;
  FUN_007088d3();
  local_8 = CONCAT31(local_8._1_3_,2);
  local_b0 = (undefined *)0x707c12;
  puVar1 = (undefined4 *)FUN_00608b80();
  local_b0 = (undefined *)*puVar1;
  local_1c = &local_b0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool __fastcall
FUN_0070838e(undefined *param_1_00,int param_2_00,undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  int iVar2;
  char cVar3;
  bool bVar4;
  undefined4 auStack_7c [2];
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined auStack_6c [20];
  undefined4 uStack_58;
  undefined4 uStack_54;
  int *piStack_50;
  int local_3c [9];
  undefined4 local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  iVar1 = *(int *)((int)param_1 + 100);
  iVar2 = *(int *)((int)param_1 + 0x68);
  local_3c[0] = 0;
  *param_1_00 = 0;
  local_8 = 0;
  if (iVar2 == 3) {
    if (((iVar1 == 0x31) || (iVar1 == 0x33)) || ((iVar1 == 0x34 || (iVar1 == 0x35)))) {
      piStack_50 = local_3c;
      uStack_54 = 0x7083e9;
      FUN_004fc968();
    }
  }
  else if ((iVar2 == 2) && (((iVar1 == 0x31 || (iVar1 == 0x33)) || (iVar1 == 0x34)))) {
    piStack_50 = local_3c;
    uStack_54 = 0x708418;
    FUN_004fc968();
    *param_1_00 = 1;
  }
  bVar4 = (-(uint)(local_3c[0] != 0) & 0x7a491c) != 0;
  if (!bVar4) {
    piStack_50 = (int *)0x6f0c2471;
    uStack_54 = 0x70843d;
    FUN_00b940e0();
    piStack_50 = (int *)(param_2_00 + 0x118);
    uStack_54 = 0x70844a;
    FUN_007e27f0();
  }
  local_18 = 0;
  local_14 = 0;
  local_8._0_1_ = 1;
  if (bVar4) {
    piStack_50 = (int *)(param_2_00 + 0x10c);
    uStack_54 = 0x70846a;
    FUN_007b47f9();
    param_1 = (undefined4 *)auStack_6c;
    uStack_70 = 0x70847a;
    FUN_00672a11();
    uStack_70 = 0x708482;
    cVar3 = FUN_0051605d();
    if (cVar3 != '\0') {
      piStack_50 = (int *)&param_1;
      param_1 = (undefined4 *)0x0;
      uStack_54 = 0x7084aa;
      FUN_00ba477f();
      piStack_50 = (int *)0x0;
      uStack_54 = param_1;
      uStack_58 = 0x7084b5;
      (**(code **)*param_2)();
      uStack_74 = 0;
      param_1 = auStack_7c;
      auStack_7c[0] = *(undefined4 *)(param_2_00 + 0x11c);
                    // WARNING: Subroutine does not return
      FUN_0043c023(param_2_00 + 0x120);
    }
    piStack_50 = (int *)0x5250802;
    uStack_54 = 0x708511;
    FUN_00b940e0();
    bVar4 = false;
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_14 != 0) {
    piStack_50 = (int *)0x708522;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  piStack_50 = (int *)0x70852e;
  FUN_00507e58();
  return bVar4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool __thiscall FUN_00708538(int param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  char cVar2;
  bool bVar3;
  undefined4 auStack_7c [2];
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined auStack_6c [20];
  undefined4 uStack_58;
  undefined4 uStack_54;
  int *piStack_50;
  int local_3c [9];
  undefined4 local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  iVar1 = *(int *)((int)param_1 + 100);
  local_3c[0] = 0;
  local_8 = 0;
  if ((*(int *)((int)param_1 + 0x68) == 3) &&
     ((((iVar1 == 0x31 || (iVar1 == 0x33)) || (iVar1 == 0x34)) || (iVar1 == 0x35)))) {
    piStack_50 = local_3c;
    uStack_54 = 0x70858e;
    FUN_004fc968();
  }
  bVar3 = (-(uint)(local_3c[0] != 0) & 0x7a491c) != 0;
  if (!bVar3) {
    piStack_50 = (int *)0xbfec7a07;
    uStack_54 = 0x7085b0;
    FUN_00b940e0();
    piStack_50 = (int *)(param_1_00 + 0x118);
    uStack_54 = 0x7085bd;
    FUN_007e27f0();
  }
  local_18 = 0;
  local_14 = 0;
  local_8._0_1_ = 1;
  if (bVar3) {
    piStack_50 = (int *)(param_1_00 + 0x10c);
    uStack_54 = 0x7085dd;
    FUN_007b47f9();
    param_1 = (undefined4 *)auStack_6c;
    uStack_70 = 0x7085ed;
    FUN_00672a11();
    uStack_70 = 0x7085f5;
    cVar2 = FUN_0051605d();
    if (cVar2 != '\0') {
      piStack_50 = (int *)&param_1;
      param_1 = (undefined4 *)0x0;
      uStack_54 = 0x70861d;
      FUN_00ba477f();
      piStack_50 = (int *)0x0;
      uStack_54 = param_1;
      uStack_58 = 0x708628;
      (**(code **)*param_2)();
      uStack_74 = 0;
      param_1 = auStack_7c;
      auStack_7c[0] = *(undefined4 *)(param_1_00 + 0x11c);
                    // WARNING: Subroutine does not return
      FUN_0043c023(param_1_00 + 0x120);
    }
    piStack_50 = (int *)0x444cb03a;
    uStack_54 = 0x708684;
    FUN_00b940e0();
    bVar3 = false;
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_14 != 0) {
    piStack_50 = (int *)0x708695;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  piStack_50 = (int *)0x7086a1;
  FUN_00507e58();
  return bVar3;
}



char FUN_007086ab(void)

{
  char cVar1;
  int in_EAX;
  char local_5;
  
  FUN_005079d0(FUN_005d1cc5,*(undefined4 *)(in_EAX + 4));
  cVar1 = FUN_005d2ca5();
  if (cVar1 == '\0') {
    FUN_00b940e0();
    local_5 = '\0';
  }
  else {
    local_5 = FUN_005d2d25();
    if (local_5 == '\0') {
      FUN_00b940e0();
      FUN_007e2a43();
    }
  }
  return local_5;
}



char FUN_00708735(void)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0x4a15734e;
  }
  else {
    FUN_00707bd1(local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0x487b49ed;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



void FUN_007088d3(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd23b9;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_007089d2(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00708a0d(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W8BF77E42::WD34E5331,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W8BF77E42::WD34E5331*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00708a0d(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W8BF77E42::WD34E5331,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W8BF77E42::WD34E5331*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W8BF77E42::WD34E5331,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W8BF77E42::WD34E5331*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_00708a56(int *param_1_00,int param_1,undefined4 param_2,int **param_3,undefined4 param_4)

{
  int iVar1;
  int **ppiVar2;
  undefined uVar3;
  int *piStack_108;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbStack_104;
  int **ppiStack_100;
  undefined4 *puStack_fc;
  undefined local_e4 [40];
  undefined local_bc [44];
  undefined local_90 [12];
  undefined local_84 [4];
  int local_80;
  int *local_7c;
  int local_78;
  undefined **local_74;
  int **local_6c;
  undefined4 local_68;
  int **local_64;
  undefined4 local_5c;
  undefined local_58 [4];
  int *local_54;
  char local_4d;
  undefined local_4c [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xd4;
  local_8 = 0x708a65;
  local_6c = (int **)param_1;
  local_64 = param_3;
  puStack_fc = (undefined4 *)local_84;
  ppiStack_100 = (int **)0x708a80;
  local_54 = param_1_00;
  FUN_004fcc16();
  local_8 = 0;
  local_18 = 0xf;
  puStack_fc = (undefined4 *)0x708a97;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_30,0);
  local_8._0_1_ = 1;
  puStack_fc = (undefined4 *)0x708aa8;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_30,"B");
  local_5c = 0x956f9d8b;
  local_74 = W71DA37B9::W4BD0B2A2::vftable;
  local_8._0_1_ = 2;
  FUN_004fd9f6();
  local_8._0_1_ = 4;
  local_74 = W71DA37B9::W65C793C4::vftable;
  puStack_fc = (undefined4 *)0x708adb;
  (**(code **)(*param_1_00 + 0x40))();
  local_8._0_1_ = 5;
  puStack_fc = (undefined4 *)0x708aea;
  FUN_004fcd79();
  puStack_fc = &local_5c;
  local_8._0_1_ = 6;
  ppiStack_100 = (int **)0x708b03;
  FUN_0042c446();
  puStack_fc = (undefined4 *)local_58;
  ppiStack_100 = (int **)0x708b0f;
  FUN_004fcce7();
  local_8._0_1_ = 7;
  puStack_fc = (undefined4 *)0x708b1f;
  FUN_004fe47e();
  local_8._0_1_ = 6;
  if (local_54 != (int *)0x0) {
    puStack_fc = (undefined4 *)0x708b2f;
    FUN_0040127a();
  }
  puStack_fc = (undefined4 *)local_90;
  ppiStack_100 = (int **)0x708b3e;
  FUN_005d11c9();
  puStack_fc = (undefined4 *)param_4;
  ppiStack_100 = (int **)0x708b49;
  FUN_0043d406();
  ppiVar2 = local_64;
  local_8 = CONCAT31(local_8._1_3_,8);
  puStack_fc = (undefined4 *)local_bc;
  ppiStack_100 = local_64;
  pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                0x708b60;
  local_4d = (**(code **)(*local_7c + 4))();
  if (local_4d == '\0') {
    pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  0xce95ee65;
    piStack_108 = (int *)0x708b76;
    FUN_00b940e0();
  }
  local_8._0_1_ = 6;
  if ((char)local_54 != '\0') {
    pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  0x708b89;
    FUN_00401477();
  }
  iVar1 = (int)local_6c;
  if (local_4d != '\0') {
    pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  local_e4;
    piStack_108 = (int *)0x708ba0;
    pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  FUN_006858d7();
    local_8._0_1_ = 9;
    piStack_108 = (int *)0x708bac;
    FUN_007b84ca();
    pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  0x0;
    piStack_108 = (int *)0x1;
    local_8._0_1_ = 6;
    FUN_004017b2();
    pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  local_4c;
    piStack_108 = (int *)0x708bcb;
    FUN_007b859e();
    pbStack_104 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                   (iVar1 + 100);
    piStack_108 = (int *)0x708bd7;
    FUN_007b8622();
    pbStack_104 = local_30;
    piStack_108 = (int *)0x708be3;
    FUN_007b868c();
  }
  pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                0x708bf3;
  FUN_007dd2a5();
  local_68 = 0;
  local_64 = (int **)0x0;
  local_8._0_1_ = 0xb;
  uVar3 = (undefined)local_8;
  local_8._0_1_ = 0xb;
  if (local_4d != '\0') {
    pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  param_4;
    piStack_108 = (int *)0x708c14;
    FUN_0043d406();
    local_6c = &piStack_108;
    local_8 = CONCAT31(local_8._1_3_,0xc);
    piStack_108 = *ppiVar2;
                    // WARNING: Subroutine does not return
    FUN_0043c023(ppiVar2 + 1);
  }
  pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                0x708d00;
  local_8._0_1_ = uVar3;
  FUN_0074ca40();
  if (local_4d != '\0') {
    pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  0x708d0f;
    local_4d = (**(code **)(**ppiVar2 + 0x18))();
    if (local_4d == '\0') {
      pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                    0x929ff792;
      piStack_108 = (int *)0x708d25;
      FUN_00b940e0();
    }
  }
  local_8._0_1_ = 10;
  if (local_64 != (int **)0x0) {
    pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  0x708d36;
    FUN_0040127a();
  }
  local_8._0_1_ = 6;
  if (local_54 != (int *)0x0) {
    pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  0x708d46;
    FUN_0040127a();
  }
  local_8._0_1_ = 5;
  pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                0x708d55;
  FUN_007b408b();
  local_8 = CONCAT31(local_8._1_3_,4);
  if (local_78 != 0) {
    pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  0x708d65;
    FUN_0040127a();
  }
  pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)0x0;
  piStack_108 = (int *)0x1;
  FUN_004017b2();
  pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)0x0;
  piStack_108 = (int *)0x1;
  FUN_004017b2();
  local_8 = 0xffffffff;
  if (local_80 != 0) {
    pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  0x708d8d;
    FUN_0040127a();
  }
  pbStack_104 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                0x708d95;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00708e73)

undefined4 * FUN_00708dfd(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x4c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0070928d();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070917a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x709186;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WEA36EC18::W2E83B763::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WEA36EC18::W2E83B763::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00709276(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070928d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEA36EC18::W2E83B763>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007092d3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007092ea(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEA36EC18::W2528EEAC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00709330(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00709421)

undefined4 * FUN_007093ae(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0070980d();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007096fa(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x709706;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WEA36EC18::W15C1ED02::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WEA36EC18::W15C1ED02::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_007097f6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070980d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEA36EC18::W15C1ED02>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00709853(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070986a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEA36EC18::W39CA592B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007098b0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007099a1)

undefined4 * FUN_0070992e(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_00709d8e();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00709c7b(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x709c87;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WEA36EC18::W71289A8A::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WEA36EC18::W71289A8A::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00709d77(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00709d8e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEA36EC18::W71289A8A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00709dd4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00709deb(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEA36EC18::W604B72F0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00709e31(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00709f25)

undefined4 * FUN_00709eaf(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0070a33e();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070a22b(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70a237;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WEA36EC18::W36148B54::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WEA36EC18::W36148B54::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070a327(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070a33e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEA36EC18::W36148B54>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070a384(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070a39b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEA36EC18::W2799BD00>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070a3e1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0070a4d5)

undefined4 * FUN_0070a45f(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x3c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0070a8ef();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070a7dc(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70a7e8;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WEA36EC18::W7A77C0BE::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WEA36EC18::W7A77C0BE::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070a8d8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070a8ef(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEA36EC18::W7A77C0BE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070a935(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070a94c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEA36EC18::W3EBAF8BC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070a992(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0070aa83)

undefined4 * FUN_0070aa10(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0070ae70();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070ad5d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70ad69;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WEA36EC18::WF05C0D22::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WEA36EC18::WF05C0D22::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070ae59(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070ae70(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEA36EC18::WF05C0D22>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070aeb6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070aecd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEA36EC18::WDC82DE52>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070af13(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0070b007)

undefined4 * FUN_0070af91(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x44);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0070b421();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070b30e(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70b31a;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WEA36EC18::W4BF2AEC5::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WEA36EC18::W4BF2AEC5::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070b40a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070b421(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEA36EC18::W4BF2AEC5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070b467(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070b47e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WEA36EC18::WF0084E3E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070b4c4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0070b5b8)

undefined4 * FUN_0070b542(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x44);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0070b9d7();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void thunk_FUN_004f68a9(undefined4 *param_1)

{
  if (param_1[4] != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  *param_1 = WDE765622::WFFD9EF6E::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070b8c4(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70b8d0;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD29E5397::W2D8D56F3::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD29E5397::W2D8D56F3::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070b9c0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070b9d7(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD29E5397::W2D8D56F3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070ba1d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070ba34(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD29E5397::W93C952F1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070ba7a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0070bb6b)

undefined4 * FUN_0070baf8(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0070bf57();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070be44(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70be50;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD29E5397::WC4B65275::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD29E5397::WC4B65275::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070bf40(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070bf57(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD29E5397::WC4B65275>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070bf9d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070bfb4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD29E5397::W80C2E1DB>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070bffa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0070c0eb)

undefined4 * FUN_0070c078(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0070c4f4();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



void __thiscall FUN_0070c249(int param_1_00,undefined4 *param_1)

{
  *param_1 = *(undefined4 *)(param_1_00 + 0x14);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0x18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070c3e1(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70c3ed;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD29E5397::W3ACA814B::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD29E5397::W3ACA814B::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070c4dd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070c4f4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD29E5397::W3ACA814B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070c53a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070c551(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD29E5397::W989D4413>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070c597(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0070c68b)

undefined4 * FUN_0070c615(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0070caa4();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070c991(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70c99d;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD29E5397::W81E823DE::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD29E5397::W81E823DE::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070ca8d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070caa4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD29E5397::W81E823DE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070caea(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070cb01(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD29E5397::W1DBA85AE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070cb47(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0070cc3b)

undefined4 * FUN_0070cbc5(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x3c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0070d055();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070cf42(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70cf4e;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD29E5397::WDE8E7D2E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD29E5397::WDE8E7D2E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070d03e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070d055(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD29E5397::WDE8E7D2E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070d09b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070d0b2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD29E5397::W59FB9255>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070d0f8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0070d1e9)

undefined4 * FUN_0070d176(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0070d5d6();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070d4c3(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70d4cf;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD29E5397::W1286E12C::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD29E5397::W1286E12C::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070d5bf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070d5d6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD29E5397::W1286E12C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070d61c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070d633(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD29E5397::WD5D7F7E9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070d679(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0070d76d)

undefined4 * FUN_0070d6f7(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x44);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0070db87();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070da74(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70da80;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD29E5397::W0140511D::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD29E5397::W0140511D::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070db70(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070db87(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD29E5397::W0140511D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070dbcd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070dbe4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD29E5397::W13BAFF46>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070dc2a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0070dd1e)

undefined4 * FUN_0070dca8(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0070e138();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070e025(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70e031;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W93189DDC::WC8ED972C::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W93189DDC::WC8ED972C::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070e121(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070e138(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W93189DDC::WC8ED972C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070e17e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070e195(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W93189DDC::W4F93010F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070e1db(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0070e259(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007b3730();
    *puVar2 = W93189DDC::W4D39630B::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0070e665(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070e552(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70e55e;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W93189DDC::W4D39630B::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W93189DDC::W4D39630B::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070e64e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070e665(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W93189DDC::W4D39630B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070e6ab(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070e6c2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W93189DDC::WB1276AAE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070e708(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0070e786(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0072fde8(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0070ebd3(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070eac0(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70eacc;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W93189DDC::WABC9FDEE::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W93189DDC::WABC9FDEE::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070ebbc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070ebd3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W93189DDC::WABC9FDEE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070ec19(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070ec30(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W93189DDC::WB534E020>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070ec76(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0070ecf4(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0073164d(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0070f142(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070f02f(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70f03b;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W93189DDC::WA91A0188::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W93189DDC::WA91A0188::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070f12b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070f142(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W93189DDC::WA91A0188>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070f188(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070f19f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W93189DDC::WBA375140>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070f1e5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0070f263(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007b3730();
    *puVar2 = W93189DDC::W5B175111::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0070f670(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070f55d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70f569;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W93189DDC::W5B175111::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W93189DDC::W5B175111::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070f659(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070f670(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W93189DDC::W5B175111>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070f6b6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070f6cd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W93189DDC::W3762E604>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070f713(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0070f791(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007b3730();
    *puVar2 = WD04B2055::W4A539119::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0070fb9d(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070fa8a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x70fa96;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD04B2055::W4A539119::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD04B2055::W4A539119::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0070fb86(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070fb9d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD04B2055::W4A539119>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070fbe3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0070fbfa(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD04B2055::WE87989DD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0070fc40(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0070fcbe(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00735221(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0071010b(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0070fff8(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x710004;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD04B2055::WB91CED21::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD04B2055::WB91CED21::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_007100f4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0071010b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD04B2055::WB91CED21>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00710151(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00710168(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD04B2055::WBE98F74F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007101ae(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0071022c(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00736bd7(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0071067a(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00710567(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x710573;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD04B2055::W28D37800::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD04B2055::W28D37800::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00710663(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0071067a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD04B2055::W28D37800>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007106c0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007106d7(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD04B2055::W73BFCA44>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0071071d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00710811)

undefined4 * FUN_0071079b(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_00710c2b();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00710b18(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x710b24;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &WD04B2055::WA082B61B::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &WD04B2055::WA082B61B::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00710c14(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00710c2b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD04B2055::WA082B61B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00710c71(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00710c88(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WD04B2055::WC9432E04>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00710cce(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00710d4c(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007b3730();
    *puVar2 = W5EDB6F21::WAA94AA5B::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00711158(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00711045(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x711051;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W5EDB6F21::WAA94AA5B::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W5EDB6F21::WAA94AA5B::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00711141(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00711158(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5EDB6F21::WAA94AA5B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0071119e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007111b5(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5EDB6F21::W3608DFCA>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007111fb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00711279(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0073b0c2(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_007116c6(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007115b3(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7115bf;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W5EDB6F21::W4755E4DF::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W5EDB6F21::W4755E4DF::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_007116af(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007116c6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5EDB6F21::W4755E4DF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0071170c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00711723(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5EDB6F21::W99857B6E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00711769(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007117e7(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0073ca9d(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00711c35(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00711b22(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x711b2e;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W5EDB6F21::W20A781FC::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W5EDB6F21::W20A781FC::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00711c1e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00711c35(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5EDB6F21::W20A781FC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00711c7b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00711c92(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5EDB6F21::WF16CA6B5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00711cd8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00711dcc)

undefined4 * FUN_00711d56(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x2c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_007121e6();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007120d3(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7120df;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W5EDB6F21::W5D43C214::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W5EDB6F21::W5D43C214::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_007121cf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007121e6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5EDB6F21::W5D43C214>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0071222c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00712243(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5EDB6F21::WB4A9EF77>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00712289(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0071298e(undefined4 param_1_00,byte param_1)

{
  FUN_007129ab(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007129ab(int param_1)

{
  if (*(int *)(param_1 + 0x48) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x40) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x38) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x30) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x28) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_004d9011(param_1);
  return;
}



void FUN_00712a2f(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  int in_EAX;
  undefined4 extraout_EDX;
  
  FUN_005fe819(param_1);
  iVar1 = *(int *)(in_EAX + 0x2c);
  iVar2 = *(int *)(in_EAX + 0x34);
  iVar3 = *(int *)(in_EAX + 0x3c);
  cVar4 = FUN_007b2909();
  if (cVar4 != '\0') {
    FUN_004860b9(extraout_EDX);
  }
  cVar4 = FUN_007b2909();
  if (cVar4 != '\0') {
    FUN_004860b9(iVar1 + 0x4c);
  }
  cVar4 = FUN_007b2909();
  if (cVar4 != '\0') {
    FUN_004860b9(iVar2 + 0x4c);
  }
  cVar4 = FUN_007b2909();
  if (cVar4 != '\0') {
    FUN_004860b9(iVar3 + 0x4c);
  }
  return;
}



void FUN_00712c83(void)

{
  undefined4 *puVar1;
  undefined4 local_7cc;
  undefined4 local_7c8;
  uint uStack_7c4;
  undefined auStack_7b4 [4];
  undefined4 *local_7b0;
  undefined local_64c [1584];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c57fdb;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7b4;
  uStack_7c4 = DAT_0323f878 ^ (uint)&stack0xfffff840;
  ExceptionList = &local_14;
  local_7b0 = &local_7cc;
  local_7cc = 0xa0c;
  local_7c8 = 9;
  puVar1 = (undefined4 *)FUN_00465be3(local_64c);
  local_c = 0;
  local_7cc = *puVar1;
  local_7b0 = &local_7cc;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00714160(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x71416c;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::W2A1C9B97::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::W2A1C9B97::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_00714216(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd3359;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0071425f(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007142d5(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W2528EEAC>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W2528EEAC*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0071429a(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0071431e(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W2528EEAC*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007142d5(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W2528EEAC>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W2528EEAC*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W2528EEAC>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W2528EEAC*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0071431e(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W2528EEAC*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W2528EEAC*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00714367(void)

{
  FUN_00675fbe();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007143ca(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7143d6;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WC72DAEAC::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WC72DAEAC::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_007146b1(void)

{
  undefined4 *puVar1;
  undefined4 local_90c;
  undefined4 local_908;
  uint uStack_904;
  undefined4 *local_8f4 [116];
  undefined local_724 [1800];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c57d4b;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_8f4;
  uStack_904 = DAT_0323f878 ^ (uint)&stack0xfffff700;
  ExceptionList = &local_14;
  local_8f4[0] = &local_90c;
  local_90c = 0xa0c;
  local_908 = 8;
  puVar1 = (undefined4 *)FUN_00465be3(local_724);
  local_c = 0;
  local_90c = *puVar1;
  local_8f4[0] = &local_90c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00715b52(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd33c1;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_00715b9b(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00715bd6(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W39CA592B*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00715bd6(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W39CA592B*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W39CA592B*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00715d9e(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x28) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_004d9011(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00715f13(void)

{
  undefined4 *puVar1;
  undefined4 local_7d4;
  undefined4 local_7d0;
  uint uStack_7cc;
  undefined auStack_7bc [8];
  undefined4 *local_7b4;
  undefined4 local_76c;
  undefined local_5e8 [1484];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c57b21;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7bc;
  uStack_7cc = DAT_0323f878 ^ (uint)&stack0xfffff838;
  ExceptionList = &local_14;
  local_76c = 0x94b3b5ee;
  local_7d0 = 0x715f6e;
  FUN_007dd2a5();
  local_c = 0;
  local_7b4 = &local_7d4;
  local_7d4 = 0xa0c;
  local_7d0 = 10;
  puVar1 = (undefined4 *)FUN_00465be3(local_5e8);
  local_7b4 = &local_7d4;
  local_c = CONCAT31(local_c._1_3_,1);
  local_7d4 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00717632(int param_1)

{
  code **ppcVar1;
  code *pcVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  puVar3 = (undefined4 *)auStack_20;
  local_8 = 3;
  if (*(undefined4 **)(param_1 + 0x18) != (undefined4 *)0x0) {
    uStack_24 = 1;
    puVar3 = &uStack_28;
    uStack_28 = 0x717655;
    (**(code **)**(undefined4 **)(param_1 + 0x18))();
  }
  local_8._0_1_ = 2;
  if (*(undefined4 **)(param_1 + 0x14) != (undefined4 *)0x0) {
    ppcVar1 = (code **)**(undefined4 **)(param_1 + 0x14);
    *(undefined4 *)((int)puVar3 + -4) = 1;
    pcVar2 = *ppcVar1;
    puVar4 = (undefined4 *)((int)puVar3 + -8);
    puVar3 = (undefined4 *)((int)puVar3 + -8);
    *puVar4 = 0x717666;
    (*pcVar2)();
  }
  local_8._0_1_ = 1;
  if (*(undefined4 **)(param_1 + 0x10) != (undefined4 *)0x0) {
    ppcVar1 = (code **)**(undefined4 **)(param_1 + 0x10);
    *(undefined4 *)((int)puVar3 + -4) = 1;
    pcVar2 = *ppcVar1;
    puVar5 = (undefined4 *)((int)puVar3 + -8);
    puVar3 = (undefined4 *)((int)puVar3 + -8);
    *puVar5 = 0x717677;
    (*pcVar2)();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (*(undefined4 **)(param_1 + 0xc) != (undefined4 *)0x0) {
    ppcVar1 = (code **)**(undefined4 **)(param_1 + 0xc);
    *(undefined4 *)((int)puVar3 + -4) = 1;
    pcVar2 = *ppcVar1;
    puVar6 = (undefined4 *)((int)puVar3 + -8);
    puVar3 = (undefined4 *)((int)puVar3 + -8);
    *puVar6 = 0x717688;
    (*pcVar2)();
  }
  local_8 = 0xffffffff;
  if (*(undefined4 **)(param_1 + 8) != (undefined4 *)0x0) {
    ppcVar1 = (code **)**(undefined4 **)(param_1 + 8);
    *(undefined4 *)((int)puVar3 + -4) = 1;
    pcVar2 = *ppcVar1;
    puVar7 = (undefined4 *)((int)puVar3 + -8);
    puVar3 = (undefined4 *)((int)puVar3 + -8);
    *puVar7 = 0x717699;
    (*pcVar2)();
  }
  *(undefined4 *)((int)puVar3 + -4) = 0x71769e;
  return;
}



void FUN_007176a1(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd3431;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_007176ea(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00717760(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W604B72F0>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W604B72F0*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00717725(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007177a9(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W604B72F0*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00717760(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W604B72F0>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W604B72F0*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W604B72F0>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W604B72F0*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_007177a9(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W604B72F0*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W604B72F0*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void Catch_All_00717838(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __fastcall FUN_00717cb7(undefined4 param_1)

{
  int in_EAX;
  
  FUN_007b3609(*(undefined4 *)(in_EAX + 0x2c));
  return param_1;
}



void FUN_00717d84(void)

{
  undefined4 *puVar1;
  undefined4 local_a4c;
  undefined4 local_a48;
  uint uStack_a44;
  undefined auStack_a34 [20];
  undefined4 *local_a20;
  undefined local_844 [2088];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c57892;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_a34;
  uStack_a44 = DAT_0323f878 ^ (uint)&stack0xfffff5c0;
  ExceptionList = &local_14;
  local_a20 = &local_a4c;
  local_a4c = 0xa0c;
  local_a48 = 200;
  puVar1 = (undefined4 *)FUN_00465be3(local_844);
  local_c = 0;
  local_a4c = *puVar1;
  local_a20 = &local_a4c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00719623(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd34b1;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0071966c(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007196a7(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W2799BD00*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007196a7(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W2799BD00*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W2799BD00*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_007196f0(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7196fc;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_02bd3500,3);
  local_8 = 0;
  local_18 = 0x7f9770f5;
  local_14 = 0xe876ca45;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00719c40(int param_1_00,byte param_1)

{
  FUN_00417fe6();
  if (*(int *)(param_1_00 + 0x128) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x120) != 0) {
    FUN_0040127a();
  }
  FUN_0071f6a9(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00719ca9(void)

{
  undefined4 *puVar1;
  undefined4 local_ad4;
  undefined4 local_ad0;
  uint uStack_acc;
  undefined auStack_abc [8];
  undefined4 *local_ab4;
  undefined4 *local_a30;
  undefined local_880 [2148];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c575ad;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_abc;
  uStack_acc = DAT_0323f878 ^ (uint)&stack0xfffff538;
  ExceptionList = &local_14;
  local_a30 = &local_ad4;
  local_ad4 = 0x5022;
  local_ad0 = 0x77;
  puVar1 = (undefined4 *)FUN_00465be3(local_880);
  local_ab4 = &local_ad4;
  local_c = 0;
  local_ad4 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0071b87b(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd3529;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0071b8c4(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0071b93a(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W3EBAF8BC>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W3EBAF8BC*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0071b8ff(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0071b983(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W3EBAF8BC*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0071b93a(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W3EBAF8BC>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W3EBAF8BC*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W3EBAF8BC>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W3EBAF8BC*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0071b983(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W3EBAF8BC*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::W3EBAF8BC*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0071bc6b(void)

{
  undefined4 *puVar1;
  undefined4 local_78c;
  undefined4 local_788;
  uint uStack_784;
  undefined auStack_774 [8];
  undefined4 *local_76c;
  undefined local_750 [56];
  undefined4 *local_718;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5724f;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_774;
  uStack_784 = DAT_0323f878 ^ (uint)&stack0xfffff880;
  ExceptionList = &local_14;
  local_718 = &local_78c;
  local_78c = 0xa0c;
  local_788 = 0xee;
  puVar1 = (undefined4 *)FUN_00465be3(local_750);
  local_c = 0;
  local_78c = *puVar1;
  local_76c = &local_78c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0071cdbc(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W8489743A::WFDA92177::vftable;
  return;
}



void FUN_0071cdc3(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd3599;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0071ce0c(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0071ce82(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::WDC82DE52>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::WDC82DE52*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0071ce47(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0071cecb(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::WDC82DE52*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0071ce82(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::WDC82DE52>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::WDC82DE52*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::WDC82DE52>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::WDC82DE52*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0071cecb(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::WDC82DE52*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::WDC82DE52*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0071cfb3(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x71cfbf;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WC90D7E5F::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WC90D7E5F::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_0071d7d1(void)

{
  undefined4 *puVar1;
  undefined4 local_83c;
  undefined4 local_838;
  uint uStack_834;
  undefined auStack_824 [8];
  undefined4 *local_81c;
  undefined local_640 [1572];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5701a;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_824;
  uStack_834 = DAT_0323f878 ^ (uint)&stack0xfffff7d0;
  ExceptionList = &local_14;
  local_81c = &local_83c;
  local_83c = 0xa0c;
  local_838 = 0x104;
  puVar1 = (undefined4 *)FUN_00465be3(local_640);
  local_c = 0;
  local_83c = *puVar1;
  local_81c = &local_83c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0071ee5e(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd3659;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0071eea7(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0071ef1d(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::WF0084E3E>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::WF0084E3E*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0071eee2(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0071ef66(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::WF0084E3E*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0071ef1d(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::WF0084E3E>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::WF0084E3E*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::WF0084E3E>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::WF0084E3E*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0071ef66(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::WF0084E3E*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WEA36EC18::W6F709030>,class_boost::_bi::list1<class_boost::_bi::value<class_WEA36EC18::WF0084E3E*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0071f52f(void)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int in_EAX;
  undefined4 extraout_EDX;
  undefined4 unaff_EBX;
  
  FUN_005fe819(unaff_EBX);
  iVar1 = *(int *)(in_EAX + 0x2c);
  iVar2 = *(int *)(in_EAX + 0x34);
  cVar3 = FUN_007b2909();
  if (cVar3 != '\0') {
    FUN_004860b9(extraout_EDX);
  }
  cVar3 = FUN_007b2909();
  if (cVar3 != '\0') {
    FUN_004860b9(iVar1 + 0x4c);
  }
  cVar3 = FUN_007b2909();
  if (cVar3 != '\0') {
    FUN_004860b9(iVar2 + 0x4c);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0071f6a9(int param_1)

{
  if (*(int *)(param_1 + 0x108) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x100) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0xf8) != 0) {
    FUN_0040127a();
  }
  FUN_004f8d32(param_1);
  return;
}



void FUN_0071f706(void)

{
  undefined4 *puVar1;
  undefined4 local_7c4;
  undefined4 local_7c0;
  uint uStack_7bc;
  undefined auStack_7ac [4];
  undefined4 *local_7a8;
  undefined4 *local_720;
  undefined local_67c [1632];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c56dae;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7ac;
  uStack_7bc = DAT_0323f878 ^ (uint)&stack0xfffff848;
  ExceptionList = &local_14;
  local_720 = &local_7c4;
  local_7c4 = 0xa0c;
  local_7c0 = 9;
  puVar1 = (undefined4 *)FUN_00465be3(local_67c);
  local_c = 0;
  local_7c4 = *puVar1;
  local_7a8 = &local_7c4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00720d3f(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x720d4b;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::W14913E98::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::W14913E98::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_00720df5(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd36c9;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_00720e3e(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00720eb4(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W93C952F1>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W93C952F1*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00720e79(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00720efd(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::WB8DAFA59>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W93C952F1*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00720eb4(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W93C952F1>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W93C952F1*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W93C952F1>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W93C952F1*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00720efd(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::WB8DAFA59>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W93C952F1*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::WB8DAFA59>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W93C952F1*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00720f46(void)

{
  FUN_00677225();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0072100d(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x721019;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W5EFFAB4D::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W5EFFAB4D::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_007212f4(void)

{
  undefined4 *puVar1;
  undefined4 local_92c;
  undefined4 local_928;
  uint uStack_924;
  undefined4 *local_914 [124];
  undefined local_724 [1800];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c56b00;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_914;
  uStack_924 = DAT_0323f878 ^ (uint)&stack0xfffff6e0;
  ExceptionList = &local_14;
  local_914[0] = &local_92c;
  local_92c = 0xa0c;
  local_928 = 8;
  puVar1 = (undefined4 *)FUN_00465be3(local_724);
  local_c = 0;
  local_92c = *puVar1;
  local_914[0] = &local_92c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0072288c(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd3731;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_007228d5(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00722910(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W80C2E1DB>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W80C2E1DB*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00722910(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W80C2E1DB>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W80C2E1DB*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W80C2E1DB>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W80C2E1DB*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00722bf8(void)

{
  undefined4 *puVar1;
  undefined4 local_7cc;
  undefined4 local_7c8;
  uint uStack_7c4;
  undefined auStack_7b4 [4];
  undefined4 *local_7b0;
  undefined4 local_79c;
  undefined local_5e8 [1484];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c568c0;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7b4;
  uStack_7c4 = DAT_0323f878 ^ (uint)&stack0xfffff840;
  ExceptionList = &local_14;
  local_79c = 0xb48f6453;
  local_7c8 = 0x722c53;
  FUN_007dd2a5();
  local_c = 0;
  local_7b0 = &local_7cc;
  local_7cc = 0xa0c;
  local_7c8 = 10;
  puVar1 = (undefined4 *)FUN_00465be3(local_5e8);
  local_7b0 = &local_7cc;
  local_c = CONCAT31(local_c._1_3_,1);
  local_7cc = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_007242ef(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd37a1;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_00724338(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007243ae(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W989D4413>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W989D4413*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00724373(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007243f7(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::WB8DAFA59>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W989D4413*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007243ae(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W989D4413>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W989D4413*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W989D4413>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W989D4413*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_007243f7(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::WB8DAFA59>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W989D4413*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::WB8DAFA59>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W989D4413*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_007247e9(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x120) != 0) {
    FUN_0040127a();
  }
  FUN_0071f6a9(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0072482e(void)

{
  undefined4 *puVar1;
  undefined4 local_9a4;
  undefined4 local_9a0;
  uint uStack_99c;
  undefined auStack_98c [32];
  undefined4 *local_96c;
  undefined local_7c4 [1960];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c56631;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_98c;
  uStack_99c = DAT_0323f878 ^ (uint)&stack0xfffff668;
  ExceptionList = &local_14;
  local_96c = &local_9a4;
  local_9a4 = 0x5022;
  local_9a0 = 0x73;
  puVar1 = (undefined4 *)FUN_00465be3(local_7c4);
  local_c = 0;
  local_9a4 = *puVar1;
  local_96c = &local_9a4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00725eaf(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd3809;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_00725ef8(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00725f33(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W1DBA85AE>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W1DBA85AE*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00725f33(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W1DBA85AE>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W1DBA85AE*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W1DBA85AE>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W1DBA85AE*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0072644c(void)

{
  undefined4 *puVar1;
  undefined4 local_9b4;
  undefined4 local_9b0;
  uint uStack_9ac;
  undefined auStack_99c [8];
  undefined4 *local_994;
  undefined4 *local_914;
  undefined local_7e8 [1996];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5638e;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_99c;
  uStack_9ac = DAT_0323f878 ^ (uint)&stack0xfffff658;
  ExceptionList = &local_14;
  local_914 = &local_9b4;
  local_9b4 = 0xa0c;
  local_9b0 = 0xc9;
  puVar1 = (undefined4 *)FUN_00465be3(local_7e8);
  local_994 = &local_9b4;
  local_c = 0;
  local_9b4 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00727df3(int param_1)

{
  char local_14;
  
  FUN_0043d406(param_1 + 300);
  if (*(int **)(param_1 + 0x124) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x124) + 0x1c))();
  }
  if (local_14 != '\0') {
    FUN_00401477();
  }
  return;
}



void FUN_00727e3b(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd3871;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_00727e84(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00727ebf(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W59FB9255>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W59FB9255*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00727ebf(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W59FB9255>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W59FB9255*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W59FB9255>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W59FB9255*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_007281dc(void)

{
  undefined4 *puVar1;
  undefined4 local_7a4;
  undefined4 local_7a0;
  uint uStack_79c;
  undefined auStack_78c [8];
  undefined4 *local_784;
  undefined local_5c0 [1444];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c56072;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_78c;
  uStack_79c = DAT_0323f878 ^ (uint)&stack0xfffff868;
  ExceptionList = &local_14;
  local_784 = &local_7a4;
  local_7a4 = 0xa0c;
  local_7a0 = 0xee;
  puVar1 = (undefined4 *)FUN_00465be3(local_5c0);
  local_c = 0;
  local_7a4 = *puVar1;
  local_784 = &local_7a4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_007293a2(void)

{
  char cVar1;
  uint uVar2;
  int *unaff_ESI;
  int iStack_34;
  int iStack_2c;
  int *local_28;
  int iStack_24;
  undefined local_20 [4];
  void *pvStack_1c;
  undefined4 local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c43cf6;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  FUN_005f0832(&local_28);
  local_c = 0;
  (**(code **)(*local_28 + 0x18))(local_20,0,uVar2);
  local_14._0_1_ = 1;
  FUN_00ba52e3(&stack0xffffffc8);
  local_14 = (void *)CONCAT31(local_14._1_3_,3);
  if (iStack_24 != 0) {
    FUN_0040127a();
  }
  cVar1 = (**(code **)(*unaff_ESI + 8))();
  if (cVar1 != '\0') {
    (**(code **)(*unaff_ESI + 0xc))(0x1c200,1);
  }
  FUN_007b4866();
  local_14 = (void *)((uint)local_14 & 0xffffff00);
  if (iStack_34 != 0) {
    FUN_0040127a();
  }
  local_14 = (void *)0xffffffff;
  if (iStack_2c != 0) {
    FUN_0040127a();
  }
  ExceptionList = pvStack_1c;
  return;
}



void FUN_00729470(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd38d9;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_007294b9(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007294f4(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::WD5D7F7E9>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::WD5D7F7E9*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007294f4(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::WD5D7F7E9>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::WD5D7F7E9*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::WD5D7F7E9>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::WD5D7F7E9*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00729cdf(void)

{
  undefined4 *puVar1;
  undefined4 local_85c;
  undefined4 local_858;
  uint uStack_854;
  undefined auStack_844 [8];
  undefined4 *local_83c;
  undefined local_640 [1572];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c55e3d;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_844;
  uStack_854 = DAT_0323f878 ^ (uint)&stack0xfffff7b0;
  ExceptionList = &local_14;
  local_83c = &local_85c;
  local_85c = 0xa0c;
  local_858 = 0x104;
  puVar1 = (undefined4 *)FUN_00465be3(local_640);
  local_c = 0;
  local_85c = *puVar1;
  local_83c = &local_85c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0072b3eb(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd3941;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0072b434(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0072b46f(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W13BAFF46>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W13BAFF46*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0072b46f(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W13BAFF46>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W13BAFF46*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD29E5397::W13BAFF46>,class_boost::_bi::list1<class_boost::_bi::value<class_WD29E5397::W13BAFF46*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_0072bc6d(int param_1_00,byte param_1)

{
  FUN_00417fe6();
  if (*(int *)(param_1_00 + 0x13c) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x134) != 0) {
    FUN_0040127a();
  }
  FUN_0061ebd8(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0072bcd3(void)

{
  undefined4 *puVar1;
  undefined4 local_76c;
  undefined4 local_768;
  uint uStack_764;
  undefined auStack_754 [4];
  undefined4 *local_750;
  undefined4 *local_6fc;
  undefined local_5e4 [1480];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c55bc6;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_754;
  uStack_764 = DAT_0323f878 ^ (uint)&stack0xfffff8a0;
  ExceptionList = &local_14;
  local_6fc = &local_76c;
  local_76c = 0xa0c;
  local_768 = 9;
  puVar1 = (undefined4 *)FUN_00465be3(local_5e4);
  local_c = 0;
  local_76c = *puVar1;
  local_750 = &local_76c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x0072cfcd)
// WARNING: Removing unreachable block (ram,0x0072cfe7)
// WARNING: Removing unreachable block (ram,0x0072d019)
// WARNING: Removing unreachable block (ram,0x0072d043)
// WARNING: Removing unreachable block (ram,0x0072d05c)
// WARNING: Removing unreachable block (ram,0x0072d054)
// WARNING: Removing unreachable block (ram,0x0072d03c)
// WARNING: Removing unreachable block (ram,0x0072d06f)
// WARNING: Removing unreachable block (ram,0x0072d007)
// WARNING: Removing unreachable block (ram,0x0072d085)

void FUN_0072cf6c(void)

{
  undefined *puVar1;
  int local_4c;
  
  puVar1 = (undefined *)FUN_00b746c0();
  puVar1[6] = 1;
  puVar1[7] = 0;
  puVar1[2] = 1;
  *puVar1 = 1;
  FUN_00b74a00();
  FUN_004fe47e();
  if (local_4c != 0) {
    FUN_0040127a();
  }
  FUN_00b940e0();
  FUN_00a421fb();
  return;
}



undefined4 FUN_0072d5c8(void)

{
  int in_EAX;
  code *pcVar1;
  undefined4 local_8;
  
  if (in_EAX == 0) {
    pcVar1 = FUN_007eb072;
  }
  else if (in_EAX == 1) {
    pcVar1 = (code *)&LAB_0072dbef;
  }
  else {
    if (in_EAX != 2) {
      return 0;
    }
    pcVar1 = FUN_0072dc03;
  }
  FUN_0072e078(pcVar1,local_8);
  return 1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0072d601(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int iVar1;
  char cVar2;
  undefined auStack_154 [12];
  undefined4 uStack_148;
  undefined *puStack_144;
  int iStack_140;
  undefined auStack_13c [16];
  undefined4 uStack_12c;
  undefined *puStack_128;
  undefined4 uStack_124;
  undefined4 uStack_120;
  undefined auStack_11c [28];
  undefined4 uStack_100;
  undefined4 uStack_fc;
  undefined auStack_f8 [12];
  undefined4 uStack_ec;
  undefined4 uStack_e8;
  undefined4 uStack_e4;
  undefined *puStack_e0;
  undefined4 uStack_dc;
  undefined4 *puStack_d8;
  undefined4 uStack_d4;
  undefined4 local_c0;
  undefined local_a0 [24];
  undefined *local_88;
  undefined4 local_84;
  undefined4 local_80;
  undefined4 local_7c;
  int *local_78;
  undefined4 local_74;
  int local_70;
  int local_6c;
  undefined4 local_68;
  undefined *local_64;
  undefined8 local_60;
  undefined local_58 [80];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb0;
  local_8 = 0x72d610;
  local_6c = param_1;
  local_7c = param_3;
  uStack_d4 = param_2;
  local_78 = param_4;
  puStack_d8 = (undefined4 *)0x72d62e;
  cVar2 = (**(code **)(*param_4 + 4))();
  if (cVar2 == '\0') {
    puStack_d8 = (undefined4 *)0xad73f319;
    uStack_dc = 0x72d643;
    FUN_00b940e0();
  }
  local_74 = 0;
  local_70 = 0;
  local_8 = 0;
  if (cVar2 != '\0') {
    puStack_d8 = (undefined4 *)0x72d662;
    FUN_00b8200d();
    puStack_d8 = &local_74;
    local_8._0_1_ = 1;
    uStack_dc = 0x72d66f;
    FUN_005d11c9();
    local_8._0_1_ = 0;
    if (local_60._4_4_ != (undefined *)0x0) {
      puStack_d8 = (undefined4 *)0x72d67f;
      FUN_0040127a();
    }
    puStack_d8 = (undefined4 *)0x0;
    uStack_dc = 0;
    puStack_e0 = (undefined *)0x3c;
    uStack_e4 = 0;
    uStack_e8 = 0;
    uStack_ec = 0x72d68a;
    local_60 = FUN_0043b546();
    puStack_d8 = (undefined4 *)0x72d6a1;
    FUN_00b98ea0();
    puStack_d8 = (undefined4 *)local_a0;
    local_8._0_1_ = 2;
    uStack_dc = local_74;
    puStack_e0 = local_58;
    uStack_e4 = 0x72d6b8;
    FUN_00b9f55b();
    puStack_d8 = (undefined4 *)0x72d6c3;
    FUN_00b98d40();
    local_c0 = 0;
    local_8._0_1_ = 5;
    puStack_d8 = (undefined4 *)0x72d6dc;
    cVar2 = FUN_0072d5c8();
    iVar1 = local_6c;
    if (cVar2 == '\0') {
      puStack_d8 = (undefined4 *)0x9d61041f;
      uStack_dc = 0x72d6f1;
      FUN_00b940e0();
      cVar2 = '\0';
    }
    else {
      puStack_d8 = (undefined4 *)0x1;
      local_60._4_4_ = auStack_f8;
      uStack_fc = *(undefined4 *)(local_6c + 4);
      uStack_100 = 0x72d70c;
      FUN_005d44b1();
      uStack_fc = 1;
      local_64 = auStack_154;
      local_8._0_1_ = 6;
      FUN_00672a11();
      FUN_0072e110(local_64,*(undefined4 *)(iVar1 + 4),local_7c,local_68,DAT_032ef467,DAT_032ef466,
                   DAT_032ef468);
      FUN_0072e206();
      local_60._4_4_ = auStack_13c;
      iStack_140 = local_70;
      puStack_144 = &LAB_007ed170;
      uStack_148 = 0x72d783;
      FUN_0072e1bd();
      local_8._0_1_ = 5;
      iStack_140 = 0x72d791;
      cVar2 = (**(code **)(*local_78 + 0x10))();
      if (cVar2 == '\0') {
        puStack_d8 = (undefined4 *)0xc574ce12;
        uStack_dc = 0x72d7a6;
        FUN_00b940e0();
        puStack_d8 = (undefined4 *)0x72d7af;
        FUN_0072dc80();
      }
    }
    local_8._0_1_ = 4;
    puStack_d8 = (undefined4 *)0x72d7be;
    FUN_00507e58();
    local_8 = (uint)local_8._1_3_ << 8;
    puStack_d8 = (undefined4 *)0x72d7ca;
    FUN_00b9f511();
    iVar1 = local_6c;
    if (cVar2 != '\0') {
      puStack_d8 = (undefined4 *)0x1;
      local_60._4_4_ = auStack_f8;
      uStack_fc = *(undefined4 *)(local_6c + 4);
      uStack_100 = 0x72d7e3;
      FUN_005d44b1();
      uStack_124 = *(undefined4 *)(iVar1 + 4);
      uStack_fc = 1;
      local_60._4_4_ = auStack_11c;
      local_80 = local_68;
      local_88 = &LAB_0072da0d;
      puStack_128 = &LAB_0072da0d;
      uStack_120 = local_68;
      uStack_12c = 0x72d816;
      local_84 = uStack_124;
      FUN_0072e24c();
      local_60._4_4_ = auStack_13c;
      iStack_140 = local_70;
      puStack_144 = &LAB_007ed20e;
      uStack_148 = 0x72d82c;
      FUN_0072e1bd();
      iStack_140 = 0x72d834;
      cVar2 = (**(code **)(*local_78 + 0x10))();
      if (cVar2 == '\0') {
        puStack_d8 = (undefined4 *)0x7b6a8ee5;
        uStack_dc = 0x72d849;
        FUN_00b940e0();
      }
    }
  }
  local_8 = 0xffffffff;
  if (local_70 != 0) {
    puStack_d8 = (undefined4 *)0x72d85c;
    FUN_0040127a();
  }
  puStack_d8 = (undefined4 *)0x72d863;
  FUN_00a421fb();
  return;
}



void FUN_0072d866(void)

{
  FUN_00507e58();
  return;
}



void FUN_0072d873(void)

{
  FUN_00507e58();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_0072dc03(int *param_1)

{
  char cVar1;
  int iVar2;
  char *pcVar3;
  bool bVar4;
  undefined4 *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0x72dc0f;
  iVar2 = (**(code **)(*param_1 + 0xc))();
  bVar4 = iVar2 != 0;
  local_14[0] = (undefined4 *)0x0;
  local_8 = 0;
  if (bVar4) {
    cVar1 = (**(code **)(*param_1 + 0x10))(local_14,0);
    if (((cVar1 != '\0') && (local_14[0] != (undefined4 *)0x0)) && (1 < (uint)local_14[0][2])) {
      pcVar3 = (char *)FUN_00b92870();
      if (*pcVar3 == -0x46) {
        pcVar3 = (char *)FUN_00b92870();
        if (*pcVar3 == -0x42) {
          bVar4 = true;
          goto LAB_0072dc67;
        }
      }
    }
    bVar4 = false;
  }
LAB_0072dc67:
  local_8 = 0xffffffff;
  if (local_14[0] != (undefined4 *)0x0) {
    (**(code **)*local_14[0])(1);
  }
  return bVar4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0072dc80(void)

{
  undefined4 *puVar1;
  undefined4 local_4c;
  undefined4 local_48;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x72dc8c;
  local_14 = &local_4c;
  local_4c = 0xa0c;
  local_48 = 0x159;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_14 = &local_4c;
  local_8 = 0;
  local_4c = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0072de00(int *param_1,uint param_2)

{
  int iVar1;
  char cVar2;
  int **ppiVar3;
  int iVar4;
  undefined4 local_18;
  
  ppiVar3 = (int **)FUN_00418daa(1,0);
  if (ppiVar3 == (int **)0x0) {
    ppiVar3 = (int **)0x0;
  }
  else {
    *ppiVar3 = param_1;
  }
  *param_1 = (int)ppiVar3;
  iVar4 = *(int *)(param_2 + 0x10);
  iVar1 = *(int *)(param_2 + 0xc);
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  if ((iVar4 - iVar1) / 0x84 != 0) {
    cVar2 = FUN_0072df05();
    if (cVar2 != '\0') {
      FUN_0046e65a();
      FUN_0046e65a();
      param_2 = param_2 & 0xffffff00;
      iVar4 = FUN_0072e330(local_18,param_1[3],param_1,param_2);
      param_1[4] = iVar4;
    }
  }
  return param_1;
}



void Catch_All_0072de9d(void)

{
  code *pcVar1;
  
  FUN_0072df31();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0072deaf(undefined4 *param_1)

{
  FUN_0072df31();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



undefined4 FUN_0072df05(void)

{
  undefined *in_EAX;
  int iVar1;
  int unaff_EDI;
  
  if (&DAT_01f07c1f < in_EAX) {
    FUN_004423c1();
  }
  iVar1 = FUN_0072df73();
  *(int *)(unaff_EDI + 0xc) = iVar1;
  *(int *)(unaff_EDI + 0x10) = iVar1;
  *(int *)(unaff_EDI + 0x14) = (int)in_EAX * 0x84 + iVar1;
  return 1;
}



void FUN_0072df31(void)

{
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0xc) != 0) {
    FUN_0072df56(*(undefined4 *)(unaff_ESI + 0x10));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0xc));
  }
  *(undefined4 *)(unaff_ESI + 0xc) = 0;
  *(undefined4 *)(unaff_ESI + 0x10) = 0;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  return;
}



void FUN_0072df56(undefined4 *param_1)

{
  undefined4 *in_EAX;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 0x21) {
    (**(code **)*in_EAX)(0);
  }
  return;
}



void __fastcall FUN_0072df73(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 0x84) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 * 0x84);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0072dfc2(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x72dfce;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::WC98EE7EB::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::WC98EE7EB::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0072e078(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined **unaff_EDI;
  undefined4 local_5c [8];
  undefined *local_3c [2];
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0x72e084;
  local_18 = param_1;
  local_14 = param_2;
  cVar1 = FUN_007f2630(&local_18);
  if (cVar1 == '\0') {
    local_34 = local_18;
    local_30 = local_14;
    local_3c[0] = &DAT_02bd39cd;
  }
  else {
    local_3c[0] = (undefined *)0x0;
  }
  if (unaff_EDI != local_3c) {
    local_5c[0] = 0;
    local_8._0_1_ = 1;
    local_8._1_3_ = 0;
    FUN_00475d30(local_5c);
    FUN_00475d30(local_3c);
    FUN_00475d30(unaff_EDI);
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_00507e58();
  }
  local_8 = 0xffffffff;
  FUN_00507e58();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0072e110(undefined4 *param_1)

{
  FUN_00672a11();
  FUN_00672a11();
  FUN_00672a11();
  FUN_00507e58();
  FUN_00507e58();
  *param_1 = &LAB_0072d880;
  FUN_0072e292(param_1 + 2);
  FUN_00507e58();
  FUN_00507e58();
  return param_1;
}



void FUN_0072e1bd(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd39b5;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0072e206(undefined4 param_1_00,undefined4 param_1)

{
  undefined4 local_5c [2];
  undefined auStack_54 [44];
  undefined4 uStack_28;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_5c;
  local_5c[0] = param_1;
  FUN_0072e292(auStack_54);
  FUN_0072e2b5();
  local_8 = 0xffffffff;
  uStack_28 = 0x72e242;
  FUN_00507e58();
  return param_1_00;
}



void FUN_0072e24c(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_10 = param_1;
  uStack_c = param_2;
  uStack_8 = param_3;
  cVar1 = FUN_007f2630(&local_10);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_10;
      unaff_EBX[3] = uStack_c;
      unaff_EBX[4] = uStack_8;
    }
    *unaff_EBX = &DAT_02bd39c5;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



undefined4 * FUN_0072e292(undefined4 *param_1)

{
  undefined4 *in_EAX;
  
  *param_1 = *in_EAX;
  param_1[1] = in_EAX[1];
  param_1[2] = in_EAX[2];
  FUN_00672a11();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0072e2b5(undefined4 param_1)

{
  char cVar1;
  uint *unaff_EDI;
  undefined4 local_98 [2];
  undefined auStack_90 [44];
  undefined4 uStack_64;
  uint *puStack_60;
  undefined4 local_4c;
  undefined local_44 [48];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0;
  *unaff_EDI = 0;
  local_4c = param_1;
  puStack_60 = (uint *)local_44;
  uStack_64 = 0x72e2da;
  FUN_0072e292();
  puStack_60 = unaff_EDI + 2;
  local_14 = local_98;
  local_8._0_1_ = 1;
  local_98[0] = local_4c;
  FUN_0072e292(auStack_90);
  cVar1 = FUN_0072e6a1();
  *unaff_EDI = -(uint)(cVar1 != '\0') & 0x2bd39bc;
  local_8 = (uint)local_8._1_3_ << 8;
  puStack_60 = (uint *)0x72e31a;
  FUN_00507e58();
  local_8 = 0xffffffff;
  puStack_60 = (uint *)0x72e326;
  FUN_00507e58();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_0072e330(int param_1_00,int param_1,int param_2)

{
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0x84) {
    FUN_0072e390(param_2,param_1_00);
    param_2 = param_2 + 0x84;
  }
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 Catch_All_0072e362(void)

{
  int unaff_EBP;
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(unaff_EBP + -0x14);
  if (puVar1 != *(undefined4 **)(unaff_EBP + 0xc)) {
    do {
      (**(code **)*puVar1)(0);
      puVar1 = puVar1 + 0x21;
    } while (puVar1 != *(undefined4 **)(unaff_EBP + 0xc));
  }
  __CxxThrowException_8(0,0);
  return *(undefined4 *)(unaff_EBP + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0072e390(int param_1,undefined4 param_2)

{
  if (param_1 != 0) {
    FUN_00b67132(param_1,param_2);
  }
  return;
}



void FUN_0072e3be(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0072e523(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W93189DDC::W4F93010F>,class_boost::_bi::list1<class_boost::_bi::value<class_W93189DDC::W4F93010F*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0072e3f9(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0072e56c(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&),class_boost::_bi::list3<struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0072e44a(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0072e601(param_3,0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W5FC6A77E::W914EB22B&,class_W8E975A95::WA6D68A00&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>,class_boost::function<bool___cdecl(class_W8E975A95::WAE4AB74B&)>),class_boost::_bi::list7<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W5FC6A77E::W914EB22B>,class_boost::reference_wrapper<class_W8E975A95::WA6D68A00>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>,class_boost::_bi::value<class_boost::function<bool___cdecl(class_W8E975A95::WAE4AB74B&)>_>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0072e4ea(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0072e5b5(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W8E975A95::WA6D68A00&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list5<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W8E975A95::WA6D68A00>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0072e523(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W93189DDC::W4F93010F>,class_boost::_bi::list1<class_boost::_bi::value<class_W93189DDC::W4F93010F*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W93189DDC::W4F93010F>,class_boost::_bi::list1<class_boost::_bi::value<class_W93189DDC::W4F93010F*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0072e56c(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&),class_boost::_bi::list3<struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,bool_(__cdecl*)(class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&),class_boost::_bi::list3<struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_0072e5b5(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W8E975A95::WA6D68A00&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list5<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W8E975A95::WA6D68A00>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W8E975A95::WA6D68A00&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list5<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W8E975A95::WA6D68A00>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0072e601(TypeDescriptor **param_1_00,int param_1)

{
  TypeDescriptor *pTVar1;
  bool bVar2;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_EDI;
  
  if (param_1 == 0) {
    pTVar1 = *param_1_00;
    pTVar3 = (TypeDescriptor *)operator_new(0x38);
    if (pTVar3 == (TypeDescriptor *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3->pVFTable = pTVar1->pVFTable;
      FUN_0072e292(pTVar3 + 1);
    }
    *unaff_EDI = pTVar3;
  }
  else if (param_1 == 1) {
    *unaff_EDI = *param_1_00;
    *param_1_00 = (TypeDescriptor *)0x0;
  }
  else {
    if (param_1 == 2) {
      pTVar1 = *unaff_EDI;
      if (pTVar1 != (TypeDescriptor *)0x0) {
        FUN_00507e58();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar1);
      }
    }
    else {
      if (param_1 != 3) {
        *unaff_EDI = &boost::_bi::
                      bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W5FC6A77E::W914EB22B&,class_W8E975A95::WA6D68A00&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>,class_boost::function<bool___cdecl(class_W8E975A95::WAE4AB74B&)>),class_boost::_bi::list7<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W5FC6A77E::W914EB22B>,class_boost::reference_wrapper<class_W8E975A95::WA6D68A00>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>,class_boost::_bi::value<class_boost::function<bool___cdecl(class_W8E975A95::WAE4AB74B&)>_>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_EDI + 1) = 0;
        *(undefined *)((int)unaff_EDI + 5) = 0;
        return;
      }
      bVar2 = type_info::operator==
                        ((type_info *)*unaff_EDI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W5FC6A77E::W914EB22B&,class_W8E975A95::WA6D68A00&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>,class_boost::function<bool___cdecl(class_W8E975A95::WAE4AB74B&)>),class_boost::_bi::list7<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W5FC6A77E::W914EB22B>,class_boost::reference_wrapper<class_W8E975A95::WA6D68A00>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>,class_boost::_bi::value<class_boost::function<bool___cdecl(class_W8E975A95::WAE4AB74B&)>_>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar2) {
        *unaff_EDI = *param_1_00;
        return;
      }
    }
    *unaff_EDI = (TypeDescriptor *)0x0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_0072e6a1(undefined4 param_1)

{
  char cVar1;
  undefined4 param_11;
  undefined auStack_94 [48];
  undefined4 uStack_64;
  undefined4 *puStack_60;
  undefined4 local_4c [2];
  undefined local_44 [48];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0;
  local_4c[0] = param_1;
  puStack_60 = (undefined4 *)local_44;
  uStack_64 = 0x72e6c4;
  FUN_0072e292();
  puStack_60 = local_4c;
  local_8._0_1_ = 1;
  uStack_64 = 0x72e6d1;
  cVar1 = FUN_007f2630();
  if (cVar1 != '\0') {
    local_8 = (uint)local_8._1_3_ << 8;
    puStack_60 = (undefined4 *)0x72e71a;
    FUN_00507e58();
  }
  else {
    local_14 = local_14 & 0xffffff00;
    puStack_60 = (undefined4 *)local_14;
    uStack_64 = param_11;
    FUN_0072e292(auStack_94);
    FUN_0072e7c0();
    local_8 = (uint)local_8._1_3_ << 8;
    puStack_60 = (undefined4 *)0x72e70b;
    FUN_00507e58();
  }
  local_8 = 0xffffffff;
  puStack_60 = (undefined4 *)0x72e726;
  FUN_00507e58();
  return cVar1 == '\0';
}



void FUN_0072e730(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0072e777(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(class_W8E975A95::WAE4AB74B&),class_boost::_bi::list1<struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0072e777(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(class_W8E975A95::WAE4AB74B&),class_boost::_bi::list1<struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,bool_(__cdecl*)(class_W8E975A95::WAE4AB74B&),class_boost::_bi::list1<struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0072e7c0(undefined4 param_1)

{
  undefined4 *puVar1;
  void **param_11;
  
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = param_1;
    FUN_0072e292(puVar1 + 2);
  }
  *param_11 = puVar1;
  FUN_00507e58();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0072e864(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x72e870;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W9AC5FB62::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W9AC5FB62::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_0072e9d2(void)

{
  undefined4 *puVar1;
  undefined4 local_81c;
  undefined4 local_818;
  uint uStack_814;
  undefined auStack_804 [4];
  undefined4 *local_800;
  undefined local_7d8 [1980];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5595a;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_804;
  uStack_814 = DAT_0323f878 ^ (uint)&stack0xfffff7f0;
  ExceptionList = &local_14;
  local_800 = &local_81c;
  local_81c = 0xa0c;
  local_818 = 8;
  puVar1 = (undefined4 *)FUN_00465be3(local_7d8);
  local_c = 0;
  local_81c = *puVar1;
  local_800 = &local_81c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0072fde8(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_54;
  undefined *puStack_50;
  undefined local_3c [24];
  undefined local_24 [16];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x72fdf4;
  puStack_50 = (undefined *)0x72fdfc;
  FUN_007b3730();
  *param_1 = W93189DDC::WABC9FDEE::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  puStack_50 = local_24;
  local_8._0_1_ = 3;
  local_8._1_3_ = 0;
  uStack_54 = 0x72fe2c;
  FUN_007b4336();
  local_14 = &uStack_54;
  local_8 = CONCAT31(local_8._1_3_,4);
  uStack_54 = 0xa0c;
  puStack_50 = (undefined *)0xcf;
  puVar1 = (undefined4 *)FUN_00465be3(local_3c);
  uStack_54 = *puVar1;
  local_14 = &uStack_54;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0073019d(void)

{
  undefined4 *puVar1;
  undefined4 local_984;
  undefined4 local_980;
  uint uStack_97c;
  undefined4 *local_96c [106];
  undefined local_7c4 [1960];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c55725;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_96c;
  uStack_97c = DAT_0323f878 ^ (uint)&stack0xfffff688;
  ExceptionList = &local_14;
  local_96c[0] = &local_984;
  local_984 = 0x5022;
  local_980 = 0x73;
  puVar1 = (undefined4 *)FUN_00465be3(local_7c4);
  local_c = 0;
  local_984 = *puVar1;
  local_96c[0] = &local_984;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0073164d(undefined4 *param_1)

{
  undefined auStack_80 [8];
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined *puStack_70;
  undefined4 *puStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined *puStack_5c;
  undefined local_48 [24];
  undefined local_30 [8];
  undefined4 *local_28;
  undefined4 *local_24;
  undefined **local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x731659;
  puStack_5c = (undefined *)0x731663;
  FUN_007b3730();
  *param_1 = W93189DDC::WA91A0188::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  puStack_5c = local_30;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  uStack_60 = 0x73168b;
  FUN_007b4336();
  local_18 = &uStack_60;
  local_14 = &uStack_60;
  local_1c = &uStack_68;
  uStack_68 = 0;
  uStack_64 = 0;
  local_20 = &puStack_70;
  puStack_70 = (undefined *)0x0;
  puStack_6c = (undefined4 *)0x0;
  local_24 = &uStack_78;
  uStack_78 = 0;
  uStack_74 = 0;
  local_28 = (undefined4 *)auStack_80;
  local_8._0_1_ = 6;
  FUN_007e34ff(auStack_80);
  local_8._0_1_ = 3;
  FUN_007b385d(local_14);
  local_28 = &uStack_68;
  local_8 = CONCAT31(local_8._1_3_,7);
  uStack_68 = 0xa0c;
  uStack_64 = 0xdc;
  puStack_6c = (undefined4 *)local_48;
  puStack_70 = (undefined *)0x7316fa;
  puStack_6c = (undefined4 *)FUN_00465be3();
  uStack_68 = *puStack_6c;
  local_28 = &uStack_68;
  puStack_6c = puStack_6c + 1;
                    // WARNING: Subroutine does not return
  puStack_70 = &UNK_00731712;
  FUN_0043c023();
}



void FUN_00731a34(void)

{
  undefined4 *puVar1;
  undefined4 local_98c;
  undefined4 local_988;
  uint uStack_984;
  undefined auStack_974 [8];
  undefined4 *local_96c;
  undefined4 *local_8fc;
  undefined local_7e8 [1996];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c55498;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_974;
  uStack_984 = DAT_0323f878 ^ (uint)&stack0xfffff680;
  ExceptionList = &local_14;
  local_8fc = &local_98c;
  local_98c = 0x5022;
  local_988 = 0x77;
  puVar1 = (undefined4 *)FUN_00465be3(local_7e8);
  local_96c = &local_98c;
  local_c = 0;
  local_98c = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_007330a6(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007330e1(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W93189DDC::WBA375140>,class_boost::_bi::list1<class_boost::_bi::value<class_W93189DDC::WBA375140*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007330e1(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W93189DDC::WBA375140>,class_boost::_bi::list1<class_boost::_bi::value<class_W93189DDC::WBA375140*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W93189DDC::WBA375140>,class_boost::_bi::list1<class_boost::_bi::value<class_W93189DDC::WBA375140*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0073329b(void)

{
  undefined4 *puVar1;
  undefined4 local_76c;
  undefined4 local_768;
  uint uStack_764;
  undefined auStack_754 [8];
  undefined4 *local_74c;
  undefined4 *local_700;
  undefined local_5c0 [1444];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c551a8;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_754;
  uStack_764 = DAT_0323f878 ^ (uint)&stack0xfffff8a0;
  ExceptionList = &local_14;
  local_700 = &local_76c;
  local_76c = 0xa0c;
  local_768 = 0xee;
  puVar1 = (undefined4 *)FUN_00465be3(local_5c0);
  local_c = 0;
  local_76c = *puVar1;
  local_74c = &local_76c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_007341e6(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00734221(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W93189DDC::W3762E604>,class_boost::_bi::list1<class_boost::_bi::value<class_W93189DDC::W3762E604*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00734221(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W93189DDC::W3762E604>,class_boost::_bi::list1<class_boost::_bi::value<class_W93189DDC::W3762E604*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W93189DDC::W3762E604>,class_boost::_bi::list1<class_boost::_bi::value<class_W93189DDC::W3762E604*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0073438c(void)

{
  undefined4 *puVar1;
  undefined4 local_704;
  undefined4 local_700;
  uint uStack_6fc;
  undefined auStack_6ec [8];
  undefined4 *local_6e4;
  undefined local_6b0 [1684];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c54f9f;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_6ec;
  uStack_6fc = DAT_0323f878 ^ (uint)&stack0xfffff908;
  ExceptionList = &local_14;
  local_6e4 = &local_704;
  local_704 = 0xa0c;
  local_700 = 8;
  puVar1 = (undefined4 *)FUN_00465be3(local_6b0);
  local_c = 0;
  local_704 = *puVar1;
  local_6e4 = &local_704;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00735064(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x735070;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::WC109E5BF::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::WC109E5BF::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00735165(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x735171;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WD3E54B8E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WD3E54B8E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00735221(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_54;
  undefined *puStack_50;
  undefined local_3c [24];
  undefined local_24 [16];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x73522d;
  puStack_50 = (undefined *)0x735235;
  FUN_007b3730();
  *param_1 = WD04B2055::WB91CED21::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  puStack_50 = local_24;
  local_8._0_1_ = 3;
  local_8._1_3_ = 0;
  uStack_54 = 0x735265;
  FUN_007b4336();
  local_14 = &uStack_54;
  local_8 = CONCAT31(local_8._1_3_,4);
  uStack_54 = 0xa0c;
  puStack_50 = (undefined *)0xcf;
  puVar1 = (undefined4 *)FUN_00465be3(local_3c);
  uStack_54 = *puVar1;
  local_14 = &uStack_54;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_007355d6(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x134) != 0) {
    FUN_0040127a();
  }
  FUN_0061ebd8(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0073561b(void)

{
  undefined4 *puVar1;
  undefined4 local_994;
  undefined4 local_990;
  uint uStack_98c;
  undefined auStack_97c [20];
  undefined4 *local_968;
  undefined local_7c4 [1960];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b318;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_97c;
  uStack_98c = DAT_0323f878 ^ (uint)&stack0xfffff678;
  ExceptionList = &local_14;
  local_968 = &local_994;
  local_994 = 0xa0c;
  local_990 = 200;
  puVar1 = (undefined4 *)FUN_00465be3(local_7c4);
  local_c = 0;
  local_994 = *puVar1;
  local_968 = &local_994;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00736bd7(undefined4 *param_1)

{
  undefined auStack_80 [8];
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined *puStack_70;
  undefined4 *puStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined *puStack_5c;
  undefined local_48 [24];
  undefined local_30 [8];
  undefined4 *local_28;
  undefined4 *local_24;
  undefined **local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x736be3;
  puStack_5c = (undefined *)0x736bed;
  FUN_007b3730();
  *param_1 = WD04B2055::W28D37800::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  puStack_5c = local_30;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  uStack_60 = 0x736c15;
  FUN_007b4336();
  local_18 = &uStack_60;
  local_14 = &uStack_60;
  local_1c = &uStack_68;
  uStack_68 = 0;
  uStack_64 = 0;
  local_20 = &puStack_70;
  puStack_70 = (undefined *)0x0;
  puStack_6c = (undefined4 *)0x0;
  local_24 = &uStack_78;
  uStack_78 = 0;
  uStack_74 = 0;
  local_28 = (undefined4 *)auStack_80;
  local_8._0_1_ = 6;
  FUN_007e34ff(auStack_80);
  local_8._0_1_ = 3;
  FUN_007b385d(local_14);
  local_28 = &uStack_68;
  local_8 = CONCAT31(local_8._1_3_,7);
  uStack_68 = 0xa0c;
  uStack_64 = 0xdc;
  puStack_6c = (undefined4 *)local_48;
  puStack_70 = (undefined *)0x736c84;
  puStack_6c = (undefined4 *)FUN_00465be3();
  uStack_68 = *puStack_6c;
  local_28 = &uStack_68;
  puStack_6c = puStack_6c + 1;
                    // WARNING: Subroutine does not return
  puStack_70 = &UNK_00736c9c;
  FUN_0043c023();
}



void FUN_00736fbe(void)

{
  undefined4 *puVar1;
  undefined4 local_9a4;
  undefined4 local_9a0;
  uint uStack_99c;
  undefined auStack_98c [12];
  undefined4 *local_980;
  undefined4 *local_8fc;
  undefined local_7e8 [1996];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c54e1a;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_98c;
  uStack_99c = DAT_0323f878 ^ (uint)&stack0xfffff668;
  ExceptionList = &local_14;
  local_8fc = &local_9a4;
  local_9a4 = 0x5022;
  local_9a0 = 0x77;
  puVar1 = (undefined4 *)FUN_00465be3(local_7e8);
  local_980 = &local_9a4;
  local_c = 0;
  local_9a4 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0073878c(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007387c7(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD04B2055::W73BFCA44>,class_boost::_bi::list1<class_boost::_bi::value<class_WD04B2055::W73BFCA44*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007387c7(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD04B2055::W73BFCA44>,class_boost::_bi::list1<class_boost::_bi::value<class_WD04B2055::W73BFCA44*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD04B2055::W73BFCA44>,class_boost::_bi::list1<class_boost::_bi::value<class_WD04B2055::W73BFCA44*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00738c2c(void)

{
  undefined4 *puVar1;
  undefined4 local_7e4;
  undefined4 local_7e0;
  uint uStack_7dc;
  undefined auStack_7cc [8];
  undefined4 *local_7c4;
  undefined local_64c [1584];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c54b14;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7cc;
  uStack_7dc = DAT_0323f878 ^ (uint)&stack0xfffff828;
  ExceptionList = &local_14;
  local_7c4 = &local_7e4;
  local_7e4 = 0xa0c;
  local_7e0 = 9;
  puVar1 = (undefined4 *)FUN_00465be3(local_64c);
  local_c = 0;
  local_7e4 = *puVar1;
  local_7c4 = &local_7e4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0073a078(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0073a0b3(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_WD04B2055::WC9432E04>,class_boost::_bi::list1<class_boost::_bi::value<class_WD04B2055::WC9432E04*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0073a0b3(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_WD04B2055::WC9432E04>,class_boost::_bi::list1<class_boost::_bi::value<class_WD04B2055::WC9432E04*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_WD04B2055::WC9432E04>,class_boost::_bi::list1<class_boost::_bi::value<class_WD04B2055::WC9432E04*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0073a0fc(void)

{
  FUN_0067caa8();
  return;
}



void FUN_0073a217(void)

{
  undefined4 *puVar1;
  undefined4 local_704;
  undefined4 local_700;
  uint uStack_6fc;
  undefined auStack_6ec [8];
  undefined4 *local_6e4;
  undefined local_6b0 [1684];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c54f9f;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_6ec;
  uStack_6fc = DAT_0323f878 ^ (uint)&stack0xfffff908;
  ExceptionList = &local_14;
  local_6e4 = &local_704;
  local_704 = 0xa0c;
  local_700 = 8;
  puVar1 = (undefined4 *)FUN_00465be3(local_6b0);
  local_c = 0;
  local_704 = *puVar1;
  local_6e4 = &local_704;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0073af05(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x73af11;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::WFF9C8B89::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::WFF9C8B89::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0073b006(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x73b012;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W0AF0DAC3::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W0AF0DAC3::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0073b0c2(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_54;
  undefined *puStack_50;
  undefined local_3c [24];
  undefined local_24 [16];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x73b0ce;
  puStack_50 = (undefined *)0x73b0d6;
  FUN_007b3730();
  *param_1 = W5EDB6F21::W4755E4DF::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  puStack_50 = local_24;
  local_8._0_1_ = 3;
  local_8._1_3_ = 0;
  uStack_54 = 0x73b106;
  FUN_007b4336();
  local_14 = &uStack_54;
  local_8 = CONCAT31(local_8._1_3_,4);
  uStack_54 = 0xa0c;
  puStack_50 = (undefined *)0xcf;
  puVar1 = (undefined4 *)FUN_00465be3(local_3c);
  uStack_54 = *puVar1;
  local_14 = &uStack_54;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0073b477(void)

{
  undefined4 *puVar1;
  undefined4 local_994;
  undefined4 local_990;
  uint uStack_98c;
  undefined auStack_97c [20];
  undefined4 *local_968;
  undefined local_7c4 [1960];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b318;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_97c;
  uStack_98c = DAT_0323f878 ^ (uint)&stack0xfffff678;
  ExceptionList = &local_14;
  local_968 = &local_994;
  local_994 = 0xa0c;
  local_990 = 200;
  puVar1 = (undefined4 *)FUN_00465be3(local_7c4);
  local_c = 0;
  local_994 = *puVar1;
  local_968 = &local_994;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0073ca9d(undefined4 *param_1)

{
  undefined auStack_80 [8];
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined *puStack_70;
  undefined4 *puStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined *puStack_5c;
  undefined local_48 [24];
  undefined local_30 [8];
  undefined4 *local_28;
  undefined4 *local_24;
  undefined **local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x73caa9;
  puStack_5c = (undefined *)0x73cab3;
  FUN_007b3730();
  *param_1 = W5EDB6F21::W20A781FC::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  puStack_5c = local_30;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  uStack_60 = 0x73cadb;
  FUN_007b4336();
  local_18 = &uStack_60;
  local_14 = &uStack_60;
  local_1c = &uStack_68;
  uStack_68 = 0;
  uStack_64 = 0;
  local_20 = &puStack_70;
  puStack_70 = (undefined *)0x0;
  puStack_6c = (undefined4 *)0x0;
  local_24 = &uStack_78;
  uStack_78 = 0;
  uStack_74 = 0;
  local_28 = (undefined4 *)auStack_80;
  local_8._0_1_ = 6;
  FUN_007e34ff(auStack_80);
  local_8._0_1_ = 3;
  FUN_007b385d(local_14);
  local_28 = &uStack_68;
  local_8 = CONCAT31(local_8._1_3_,7);
  uStack_68 = 0xa0c;
  uStack_64 = 0xdc;
  puStack_6c = (undefined4 *)local_48;
  puStack_70 = (undefined *)0x73cb4a;
  puStack_6c = (undefined4 *)FUN_00465be3();
  uStack_68 = *puStack_6c;
  local_28 = &uStack_68;
  puStack_6c = puStack_6c + 1;
                    // WARNING: Subroutine does not return
  puStack_70 = &UNK_0073cb62;
  FUN_0043c023();
}



void FUN_0073ce84(void)

{
  undefined4 *puVar1;
  undefined4 local_9a4;
  undefined4 local_9a0;
  uint uStack_99c;
  undefined auStack_98c [12];
  undefined4 *local_980;
  undefined4 *local_8fc;
  undefined local_7e8 [1996];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c54e1a;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_98c;
  uStack_99c = DAT_0323f878 ^ (uint)&stack0xfffff668;
  ExceptionList = &local_14;
  local_8fc = &local_9a4;
  local_9a4 = 0x5022;
  local_9a0 = 0x77;
  puVar1 = (undefined4 *)FUN_00465be3(local_7e8);
  local_980 = &local_9a4;
  local_c = 0;
  local_9a4 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0073e658(int param_1)

{
  char local_14;
  
  FUN_0043d406(param_1 + 0x140);
  if (*(int **)(param_1 + 0x138) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x138) + 0x1c))();
  }
  if (local_14 != '\0') {
    FUN_00401477();
  }
  return;
}



void FUN_0073e6a0(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0073e6db(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W5EDB6F21::WF16CA6B5>,class_boost::_bi::list1<class_boost::_bi::value<class_W5EDB6F21::WF16CA6B5*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0073e6db(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W5EDB6F21::WF16CA6B5>,class_boost::_bi::list1<class_boost::_bi::value<class_W5EDB6F21::WF16CA6B5*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W5EDB6F21::WF16CA6B5>,class_boost::_bi::list1<class_boost::_bi::value<class_W5EDB6F21::WF16CA6B5*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0073eb40(void)

{
  undefined4 *puVar1;
  undefined4 local_7e4;
  undefined4 local_7e0;
  uint uStack_7dc;
  undefined auStack_7cc [8];
  undefined4 *local_7c4;
  undefined local_64c [1584];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c54892;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7cc;
  uStack_7dc = DAT_0323f878 ^ (uint)&stack0xfffff828;
  ExceptionList = &local_14;
  local_7c4 = &local_7e4;
  local_7e4 = 0xa0c;
  local_7e0 = 9;
  puVar1 = (undefined4 *)FUN_00465be3(local_64c);
  local_c = 0;
  local_7e4 = *puVar1;
  local_7c4 = &local_7e4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0073ffb9(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0073fff4(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W5EDB6F21::WB4A9EF77>,class_boost::_bi::list1<class_boost::_bi::value<class_W5EDB6F21::WB4A9EF77*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0073fff4(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W5EDB6F21::WB4A9EF77>,class_boost::_bi::list1<class_boost::_bi::value<class_W5EDB6F21::WB4A9EF77*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W5EDB6F21::WB4A9EF77>,class_boost::_bi::list1<class_boost::_bi::value<class_W5EDB6F21::WB4A9EF77*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0074003d(void)

{
  FUN_0067f7b3();
  return;
}



void FUN_00740043(void)

{
  FUN_0067f7b3();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007408e1(void)

{
  undefined4 *puVar1;
  undefined *local_b0;
  undefined auStack_a8 [24];
  undefined4 uStack_90;
  undefined *puStack_8c;
  undefined local_48 [44];
  undefined **local_1c;
  undefined *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_8 = 0x7408ed;
  local_14 = 0;
  puStack_8c = local_48;
  uStack_90 = 0x7408fa;
  FUN_00507ed8();
  local_18 = auStack_a8;
  local_8 = 1;
  local_b0 = &LAB_0074086d;
  FUN_00740e07();
  local_8 = CONCAT31(local_8._1_3_,2);
  local_b0 = (undefined *)0x740922;
  puVar1 = (undefined4 *)FUN_00608b80();
  local_b0 = (undefined *)*puVar1;
  local_1c = &local_b0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00740b18(int param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined auStack_138 [32];
  undefined4 local_118 [8];
  undefined4 local_f8 [4];
  undefined4 uStack_e8;
  int iStack_e4;
  undefined4 uStack_e0;
  undefined4 uStack_dc;
  undefined *local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb8;
  local_8 = 0x740b27;
  uStack_dc = 0x740b32;
  uStack_dc = FUN_0060a860();
  local_8 = 0;
  uStack_e0 = 0x740b4a;
  local_18 = (undefined4 *)FUN_007d77b6();
  local_8._0_1_ = 1;
  uStack_dc = 0x740b59;
  uStack_dc = FUN_0060a80f();
  local_8._0_1_ = 2;
  uStack_e0 = 0x740b6b;
  local_14 = (undefined4 *)FUN_007d77b6();
  local_8._0_1_ = 3;
  uStack_dc = 0x740b7a;
  uStack_dc = FUN_0060a7be();
  local_8._0_1_ = 4;
  uStack_e0 = 0x740b89;
  FUN_007d77b6();
  local_8 = CONCAT31(local_8._1_3_,5);
  uStack_dc = local_18;
  iStack_e4 = param_1 + 0x10c;
  uStack_e0 = local_14;
  uStack_e8 = 0x740ba1;
  FUN_007b6458();
  uStack_dc = 0;
  uStack_e0 = 1;
  iStack_e4 = 0x740bb0;
  FUN_00401829();
  uStack_dc = 0;
  uStack_e0 = 1;
  iStack_e4 = 0x740bba;
  FUN_00401829();
  uStack_dc = 0;
  uStack_e0 = 1;
  iStack_e4 = 0x740bc7;
  FUN_00401829();
  uStack_dc = 0;
  uStack_e0 = 1;
  iStack_e4 = 0x740bd1;
  FUN_00401829();
  uStack_dc = 0;
  uStack_e0 = 1;
  iStack_e4 = 0x740bde;
  FUN_00401829();
  uStack_dc = 0;
  uStack_e0 = 1;
  iStack_e4 = 0x740beb;
  FUN_00401829();
  local_14 = local_f8;
  local_f8[0] = 0;
  local_18 = local_118;
  local_118[0] = 0;
  local_1c = auStack_138;
  local_8 = 7;
  FUN_00507832();
  local_8 = 0xffffffff;
  cVar1 = FUN_007c021d(param_2,param_3);
  if (cVar1 == '\0') {
    uStack_dc = 0xa94647e2;
    uStack_e0 = 0x740c46;
    FUN_00b940e0();
  }
  uStack_dc = 0x740c52;
  (**(code **)(**(int **)(param_1 + 4) + 0x2c))();
  return cVar1;
}



char FUN_00740c5c(void)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0x3929b981;
  }
  else {
    FUN_007408e1(local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0x9d25068a;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



void FUN_00740dde(void)

{
  FUN_00608be7();
  FUN_005f509c();
  FUN_005f5072();
  FUN_005f5048();
  FUN_005f4fe2();
  FUN_00608b56();
  return;
}



void FUN_00740e07(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd3ed1;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_00740e50(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00740e99(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_WEA36EC18::W6F709030,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WEA36EC18::W6F709030*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00740e99(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_WEA36EC18::W6F709030,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WEA36EC18::W6F709030*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_WEA36EC18::W6F709030,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WEA36EC18::W6F709030*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00740ee2(void)

{
  FUN_00740f1b();
  return;
}



void FUN_00740eea(void)

{
  FUN_00740f8b();
  return;
}



void FUN_00740ef2(void)

{
  FUN_00741012();
  return;
}



void FUN_00740efa(void)

{
  FUN_00740f04();
  return;
}



void FUN_00740f04(void)

{
  int in_EAX;
  
  *(undefined *)(in_EAX + 8) = 0;
  FUN_00b940e0(0xf53cf216);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00740f1b(int param_1)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x740f27;
  puVar2 = (undefined4 *)FUN_00b933f0(local_14);
  *puVar2 = 0;
  local_8 = 0;
  if (local_14[0] != (undefined4 *)0x0) {
    (**(code **)*local_14[0])();
  }
  cVar1 = (**(code **)(**(int **)(param_1 + 4) + 0x94))(0x899);
  *(char *)(param_1 + 8) = cVar1;
  if (cVar1 == '\0') {
    FUN_00b940e0(0x9bb681ea);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00740f8b(int param_1)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *local_18;
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x740f97;
  local_14[0] = 0xe7353cb1;
  puVar2 = (undefined4 *)FUN_00b941c0(local_14,&local_18);
  local_14[0] = *puVar2;
  *puVar2 = 0;
  local_8 = 0;
  if (local_18 != (undefined4 *)0x0) {
    (**(code **)*local_18)();
  }
  local_14[0] = 0;
  cVar1 = (**(code **)(**(int **)(param_1 + 4) + 0x94))(0x899);
  *(char *)(param_1 + 8) = cVar1;
  if (cVar1 == '\0') {
    FUN_00b940e0(0x82b5fbd2);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00741012(int param_1)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *local_18;
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x74101e;
  local_14[0] = 0xf6433b7c;
  puVar2 = (undefined4 *)FUN_00b941c0(local_14,&local_18);
  local_14[0] = *puVar2;
  *puVar2 = 0;
  local_8 = 0;
  if (local_18 != (undefined4 *)0x0) {
    (**(code **)*local_18)();
  }
  local_14[0] = 0;
  cVar1 = (**(code **)(**(int **)(param_1 + 4) + 0x94))(0x899);
  *(char *)(param_1 + 8) = cVar1;
  if (cVar1 == '\0') {
    FUN_00b940e0(0x6dccf31e);
  }
  return;
}



undefined4 __thiscall FUN_00741183(undefined4 param_1_00,byte param_1)

{
  FUN_0071f6a9(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00741288(void)

{
  undefined4 *puVar1;
  undefined *local_b0;
  undefined auStack_a8 [24];
  undefined4 uStack_90;
  undefined *puStack_8c;
  undefined local_48 [44];
  undefined **local_1c;
  undefined *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_8 = 0x741294;
  local_14 = 0;
  puStack_8c = local_48;
  uStack_90 = 0x7412a1;
  FUN_00507ed8();
  local_18 = auStack_a8;
  local_8 = 1;
  local_b0 = &LAB_0074086d;
  FUN_00741785();
  local_8 = CONCAT31(local_8._1_3_,2);
  local_b0 = (undefined *)0x7412c9;
  puVar1 = (undefined4 *)FUN_00608b80();
  local_b0 = (undefined *)*puVar1;
  local_1c = &local_b0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_007414bf(int param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined auStack_138 [32];
  undefined4 local_118 [8];
  undefined4 local_f8 [4];
  undefined4 uStack_e8;
  int iStack_e4;
  undefined4 uStack_e0;
  undefined4 uStack_dc;
  undefined *local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb8;
  local_8 = 0x7414ce;
  uStack_dc = 0x7414d9;
  uStack_dc = FUN_0060a860();
  local_8 = 0;
  uStack_e0 = 0x7414f1;
  local_18 = (undefined4 *)FUN_007d77b6();
  local_8._0_1_ = 1;
  uStack_dc = 0x741500;
  uStack_dc = FUN_0060a80f();
  local_8._0_1_ = 2;
  uStack_e0 = 0x741512;
  local_14 = (undefined4 *)FUN_007d77b6();
  local_8._0_1_ = 3;
  uStack_dc = 0x741521;
  uStack_dc = FUN_0060a7be();
  local_8._0_1_ = 4;
  uStack_e0 = 0x741530;
  FUN_007d77b6();
  local_8 = CONCAT31(local_8._1_3_,5);
  uStack_dc = local_18;
  iStack_e4 = param_1 + 0x10c;
  uStack_e0 = local_14;
  uStack_e8 = 0x741548;
  FUN_007b6458();
  uStack_dc = 0;
  uStack_e0 = 1;
  iStack_e4 = 0x741557;
  FUN_00401829();
  uStack_dc = 0;
  uStack_e0 = 1;
  iStack_e4 = 0x741561;
  FUN_00401829();
  uStack_dc = 0;
  uStack_e0 = 1;
  iStack_e4 = 0x74156e;
  FUN_00401829();
  uStack_dc = 0;
  uStack_e0 = 1;
  iStack_e4 = 0x741578;
  FUN_00401829();
  uStack_dc = 0;
  uStack_e0 = 1;
  iStack_e4 = 0x741585;
  FUN_00401829();
  uStack_dc = 0;
  uStack_e0 = 1;
  iStack_e4 = 0x741592;
  FUN_00401829();
  local_14 = local_f8;
  local_f8[0] = 0;
  local_18 = local_118;
  local_118[0] = 0;
  local_1c = auStack_138;
  local_8 = 7;
  FUN_00507832();
  local_8 = 0xffffffff;
  cVar1 = FUN_007c021d(param_2,param_3);
  if (cVar1 == '\0') {
    uStack_dc = 0x368a0cd4;
    uStack_e0 = 0x7415ed;
    FUN_00b940e0();
  }
  uStack_dc = 0x7415f9;
  (**(code **)(**(int **)(param_1 + 4) + 0x2c))();
  return cVar1;
}



char FUN_00741603(void)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0x45a10bc6;
  }
  else {
    FUN_00741288(local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0x147913e1;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



void FUN_00741785(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd3f71;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_007417ce(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00741809(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_WD29E5397::WB8DAFA59,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WD29E5397::WB8DAFA59*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00741809(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_WD29E5397::WB8DAFA59,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WD29E5397::WB8DAFA59*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_WD29E5397::WB8DAFA59,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WD29E5397::WB8DAFA59*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_0074322d(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x743245;
  FUN_007435f3();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0074324c;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007419a5(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined *puVar3;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  iStack_24 = param_1 + 0xb0;
  local_8 = 5;
  puVar1 = &uStack_28;
  uStack_28 = 0x7419c7;
  FUN_0072deaf();
  puVar1[-1] = param_1 + 0x90;
  local_8._0_1_ = 4;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x7419d7;
  FUN_00620f0b();
  *(int *)((int)puVar2 + -4) = param_1 + 0x70;
  local_8 = CONCAT31(local_8._1_3_,3);
  puVar3 = (undefined *)((int)puVar2 + -8);
  *(undefined4 *)((int)puVar2 + -8) = 0x7419e4;
  FUN_0074322d();
  *(undefined4 *)(puVar3 + -4) = 0;
  *(undefined4 *)(puVar3 + -8) = 1;
  *(undefined4 *)(puVar3 + -0xc) = 0x7419f0;
  FUN_004017b2();
  *(undefined4 *)(puVar3 + -4) = 0;
  *(undefined4 *)(puVar3 + -8) = 1;
  *(undefined4 *)(puVar3 + -0xc) = 0x7419fc;
  FUN_004017b2();
  *(undefined4 *)(puVar3 + -4) = 0;
  *(undefined4 *)(puVar3 + -8) = 1;
  *(undefined4 *)(puVar3 + -0xc) = 0x741a08;
  FUN_004017b2();
  *(undefined4 *)(puVar3 + -4) = 0;
  *(undefined4 *)(puVar3 + -8) = 1;
  *(undefined4 *)(puVar3 + -0xc) = 0x741a13;
  FUN_004017b2();
  *(undefined4 *)(puVar3 + -4) = 0x741a18;
  return;
}



int FUN_00742046(int param_1,int param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  puVar3 = (undefined4 *)(param_1 + 0x70);
  FUN_007435c1(&param_2);
  local_10 = *(undefined4 *)(param_1 + 0x88);
  local_14 = *puVar3;
  puVar2 = &local_c;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (param_2 < *(int *)(local_8 + 0xc))) {
    local_18 = *(undefined4 *)(param_1 + 0x88);
    local_1c = *puVar3;
    puVar2 = &local_1c;
  }
  local_14 = *puVar2;
  local_10 = puVar2[1];
  local_18 = *(undefined4 *)(param_1 + 0x88);
  local_1c = *puVar3;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    param_1 = FUN_006badde();
    param_1 = param_1 + 4;
  }
  else {
    param_1 = param_1 + 0xb0;
  }
  return param_1;
}



void __fastcall FUN_00743106(rsize_t param_1_00,int param_2,undefined4 param_1)

{
  int iVar1;
  size_t sVar2;
  int *unaff_ESI;
  char local_14 [12];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  sVar2 = _strcspn((char *)(*unaff_ESI + param_2)," \t\r\n");
  if (param_1_00 <= sVar2) {
    if (8 < param_1_00) {
      param_1_00 = 8;
    }
    iVar1 = *unaff_ESI;
    local_14[param_1_00] = '\0';
    _strncpy_s(local_14,9,(char *)(iVar1 + param_2),param_1_00);
    FID_conflict__sscanf(local_14,"%x",param_1,4);
    *unaff_ESI = *unaff_ESI + param_2 + param_1_00;
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0074322d(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x743245;
  FUN_007435f3();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0074324c;
  FUN_00a3f6a1();
}



void FUN_007432fd(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  undefined4 uVar2;
  undefined4 local_10;
  uint local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    local_c = 0;
  }
  else {
    local_c = (*(int *)(in_EAX + 0x14) - iVar1) / 0x84;
  }
  if ((uint)((*(int *)(in_EAX + 0x10) - iVar1) / 0x84) < local_c) {
    uVar2 = FUN_00743720(*(int *)(in_EAX + 0x10),1,param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar2;
  }
  else {
    FUN_0046e65a();
    FUN_0074366a(&local_10,param_1,local_10,local_c);
  }
  return;
}



void __fastcall FUN_007433a8(int param_1)

{
  FUN_007fa7ce();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x14));
}



void FUN_007433c7(void)

{
  int in_EAX;
  
  FUN_0072deaf(in_EAX + 4);
  return;
}



uint __thiscall FUN_007433d1(int param_1_00,short *param_1,uint param_2,uint param_3)

{
  short sVar1;
  uint uVar2;
  int iVar3;
  short **ppsVar4;
  short **ppsVar5;
  short **ppsVar6;
  
  if (param_3 == 0) {
    if (*(uint *)(param_1_00 + 0x14) <= param_2) {
      param_2 = *(uint *)(param_1_00 + 0x14);
    }
  }
  else {
    if (param_3 <= *(uint *)(param_1_00 + 0x14)) {
      uVar2 = *(uint *)(param_1_00 + 0x14) - param_3;
      if (uVar2 <= param_2) {
        param_2 = uVar2;
      }
      uVar2 = *(uint *)(param_1_00 + 0x18);
      ppsVar5 = (short **)(param_1_00 + 4);
      ppsVar6 = ppsVar5;
      if (7 < uVar2) {
        ppsVar6 = (short **)*ppsVar5;
      }
      ppsVar6 = (short **)((int)ppsVar6 + param_2 * 2);
      sVar1 = *param_1;
      while( true ) {
        if ((*(short *)ppsVar6 == sVar1) &&
           (iVar3 = FUN_0041299c(ppsVar6,param_1,param_3), iVar3 == 0)) {
          if (7 < uVar2) {
            ppsVar5 = (short **)*ppsVar5;
          }
          return (int)ppsVar6 - (int)ppsVar5 >> 1;
        }
        ppsVar4 = ppsVar5;
        if (7 < uVar2) {
          ppsVar4 = (short **)*ppsVar5;
        }
        if (ppsVar6 == ppsVar4) break;
        ppsVar6 = (short **)((int)ppsVar6 + -2);
      }
    }
    param_2 = 0xffffffff;
  }
  return param_2;
}



undefined4 * FUN_00743462(undefined4 *param_1,int *param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int in_EAX;
  int iVar4;
  undefined4 *puVar5;
  bool bVar6;
  undefined4 uVar7;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar3 = FUN_006b8eca();
    if (cVar3 == '\0') {
      cVar3 = FUN_006b8eca();
      if (cVar3 == '\0') {
        iVar4 = *param_2;
        iVar1 = *(int *)(param_4 + 0xc);
        bVar6 = SBORROW4(iVar1,iVar4);
        iVar2 = iVar1 - iVar4;
        if (iVar4 < iVar1) {
          iVar4 = FUN_007a4650();
          iVar2 = *param_2;
          if (*(int *)(*(int *)(iVar4 + 4) + 0xc) < iVar2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x29) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_00743484;
          }
          bVar6 = SBORROW4(*(int *)(param_4 + 0xc),iVar2);
          iVar2 = *(int *)(param_4 + 0xc) - iVar2;
        }
        if (bVar6 != iVar2 < 0) {
          FUN_0046e6b6();
          cVar3 = FUN_006b8eca();
          if ((cVar3 != '\0') || (*param_2 < *(int *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x29) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_00743484;
          }
        }
LAB_0074359f:
        puVar5 = (undefined4 *)FUN_0074376b(in_EAX,param_2);
        *param_1 = *puVar5;
        param_1[1] = puVar5[1];
        return param_1;
      }
      if (*param_2 <= *(int *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_0074359f;
      uVar7 = 0;
      goto LAB_00743484;
    }
    if (*(int *)(param_4 + 0xc) <= *param_2) goto LAB_0074359f;
  }
  uVar7 = 1;
LAB_00743484:
  FUN_007438e2(param_1,uVar7,param_2);
  return param_1;
}



void FUN_007435c1(int *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x29) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((int)puVar2[3] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x29) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



void FUN_007435f3(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_0074382c(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_00743627(undefined4 param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  undefined4 *unaff_EDI;
  undefined4 *local_8;
  
  puVar1 = (undefined4 *)((undefined4 *)unaff_EDI[6])[1];
  local_8 = (undefined4 *)unaff_EDI[6];
  while (puVar3 = puVar1, *(char *)((int)puVar3 + 0x2d) == '\0') {
    cVar2 = FUN_004316c1(puVar3 + 3,param_1);
    if (cVar2 == '\0') {
      puVar1 = (undefined4 *)*puVar3;
      local_8 = puVar3;
    }
    else {
      puVar1 = (undefined4 *)puVar3[2];
    }
  }
  unaff_EBX[1] = local_8;
  *unaff_EBX = *unaff_EDI;
  return;
}



void FUN_0074366a(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int in_EAX;
  int iVar1;
  int *piVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc)) / 0x84 == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = (param_4 - local_8) / 0x84;
  }
  FUN_00743a2f(param_2,param_3,param_4);
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar1 = 0;
  }
  else {
    iVar1 = *local_14;
  }
  piVar2 = (int *)(local_10 + local_8 * 0x84);
  if (piVar2 <= *(int **)(iVar1 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *local_14;
    }
    if (*(int **)(iVar1 + 0xc) <= piVar2) goto LAB_00743711;
  }
  FUN_00a3fb10();
LAB_00743711:
  param_1[1] = piVar2;
  *param_1 = local_14;
  return;
}



int FUN_00743720(int param_1,int param_2,undefined4 param_3)

{
  FUN_0074582f(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x84 + param_1;
}



void FUN_0074376b(undefined4 *param_1,int *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x29) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (int)local_c[3]);
      if (*param_2 < (int)local_c[3]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x29) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007437de;
    }
    FUN_007a4650();
  }
  uVar3 = local_8;
  if (*param_2 <= (int)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007437de:
  puVar2 = (undefined4 *)FUN_007438e2(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void FUN_0074382c(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_00744065(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_0046e6b6();
    FUN_00743d5e();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007438e2(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7438ee;
  if (0x9249247 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_00743ff4(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_00743a07;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_00743a07;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_00743a07:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 10) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x28) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 10) == '\0') {
LAB_007439c3:
        *(undefined *)(piVar1 + 10) = 1;
        *(undefined *)(piVar7 + 10) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x28) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007a3050(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x28) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x28) = 0;
        FUN_005d677b(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 10) == '\0') goto LAB_007439c3;
    if (piVar8 == (int *)*piVar1) {
      FUN_005d677b(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x28) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x28) = 0;
    FUN_007a3050(unaff_ESI);
  } while( true );
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __thiscall FUN_00743a2f(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined *puVar6;
  undefined *extraout_ECX;
  undefined *puVar7;
  undefined auStack_12c [136];
  undefined auStack_a4 [156];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x130;
  local_8 = 0x743a3e;
  iVar3 = *(int *)(param_1_00 + 0xc);
  if (iVar3 == 0) {
    puVar7 = (undefined *)0x0;
  }
  else {
    puVar7 = (undefined *)((*(int *)(param_1_00 + 0x14) - iVar3) / 0x84);
  }
  puVar2 = (undefined *)((*(int *)(param_1_00 + 0x10) - iVar3) / 0x84);
  puVar6 = &DAT_01f07c1f;
  if (puVar2 == &DAT_01f07c1f) {
    puVar2 = (undefined *)FUN_004423c1();
    puVar6 = extraout_ECX;
  }
  puVar2 = puVar2 + 1;
  if (puVar7 < puVar2) {
    if (puVar6 + -((uint)puVar7 >> 1) < puVar7) {
      puVar7 = (undefined *)0x0;
    }
    else {
      puVar7 = puVar7 + ((uint)puVar7 >> 1);
    }
    if (puVar7 < puVar2) {
      puVar7 = puVar2;
    }
    iVar3 = FUN_0072df73();
    iVar4 = (param_3 - *(int *)(param_1_00 + 0xc)) / 0x84;
    local_8 = 0;
    FUN_00743720(iVar4 * 0x84 + iVar3,1,param_1);
    FUN_007447cd(param_3,iVar3);
    FUN_007447cd(*(undefined4 *)(param_1_00 + 0x10),(iVar4 + 1) * 0x84 + iVar3);
    local_8 = 0xffffffff;
    if (*(int *)(param_1_00 + 0xc) != 0) {
      FUN_0072df56(*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
    }
    *(int *)(param_1_00 + 0x14) = (int)puVar7 * 0x84 + iVar3;
    *(int *)(param_1_00 + 0x10) =
         ((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x84 + 1) * 0x84 + iVar3;
    *(int *)(param_1_00 + 0xc) = iVar3;
  }
  else {
    if ((*(int *)(param_1_00 + 0x10) - param_3) / 0x84 == 0) {
      FUN_00b67132(auStack_a4,param_1);
      local_8 = 2;
      FUN_007447cd(*(undefined4 *)(param_1_00 + 0x10),param_3 + 0x84);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_00743720(*(undefined4 *)(param_1_00 + 0x10),
                   1 - (*(int *)(param_1_00 + 0x10) - param_3) / 0x84,auStack_a4);
      local_8 = 2;
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 0x84;
      iVar3 = *(int *)(param_1_00 + 0x10);
      for (; param_3 != iVar3 + -0x84; param_3 = param_3 + 0x84) {
        FUN_00b670e6(auStack_a4);
      }
    }
    else {
      FUN_00b67132(auStack_12c,param_1);
      local_8 = 5;
      uVar1 = *(undefined4 *)(param_1_00 + 0x10);
      uVar5 = FUN_007447cd(uVar1,uVar1);
      *(undefined4 *)(param_1_00 + 0x10) = uVar5;
      FUN_007447f1(param_3,uVar1);
      iVar3 = param_3 + 0x84;
      if (param_3 != iVar3) {
        do {
          FUN_00b670e6(auStack_12c);
          param_3 = param_3 + 0x84;
        } while (param_3 != iVar3);
      }
    }
    local_8 = 0xffffffff;
    FUN_00b66f9c();
  }
  FUN_00a4220a();
  return;
}



void Catch_All_00743b7d(void)

{
  int unaff_EBP;
  
  if (1 < *(int *)(unaff_EBP + -0x138)) {
    FUN_0072df56(*(int *)(unaff_EBP + -0x130) * 0x84 + *(int *)(unaff_EBP + -300));
  }
  if (0 < *(int *)(unaff_EBP + -0x138)) {
    FUN_0072df56((*(int *)(unaff_EBP + -0x130) + 1) * 0x84 + *(int *)(unaff_EBP + -300));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -300));
}



void FUN_00743bdf(void)

{
  int iVar1;
  undefined4 uVar2;
  int unaff_EBP;
  int unaff_ESI;
  int iVar3;
  int unaff_EDI;
  
  __CxxThrowException_8();
  if ((*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_EBP + 0x10)) / unaff_EDI == 0) {
    FUN_00b67132();
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_007447cd();
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_00743720(*(undefined4 *)(unaff_ESI + 0x10));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + unaff_EDI;
    iVar1 = *(int *)(unaff_ESI + 0x10);
    for (iVar3 = *(int *)(unaff_EBP + 0x10); iVar3 != iVar1 + -0x84; iVar3 = iVar3 + unaff_EDI) {
      FUN_00b670e6();
    }
  }
  else {
    FUN_00b67132();
    *(undefined4 *)(unaff_EBP + -4) = 5;
    *(int *)(unaff_EBP + -0x134) = *(int *)(unaff_ESI + 0x10) + -0x84;
    uVar2 = FUN_007447cd();
    *(undefined4 *)(unaff_ESI + 0x10) = uVar2;
    FUN_007447f1();
    iVar3 = *(int *)(unaff_EBP + 0x10);
    iVar1 = iVar3 + 0x84;
    for (; iVar3 != iVar1; iVar3 = iVar3 + unaff_EDI) {
      FUN_00b670e6();
    }
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00b66f9c();
  FUN_00a4220a();
  return;
}



void Catch_All_00743c77(void)

{
  int unaff_EBP;
  
  FUN_0072df56(*(int *)(*(int *)(unaff_EBP + -0x130) + 0x10) + 0x84);
  FUN_00743bdf(0);
  return;
}



void FUN_00743d11(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x2d) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x2d) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x2d) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x2d) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x00743e49)
// WARNING: Removing unreachable block (ram,0x00743e59)
// WARNING: Removing unreachable block (ram,0x00743e62)
// WARNING: Removing unreachable block (ram,0x00743e65)
// WARNING: Removing unreachable block (ram,0x00743e55)
// WARNING: Removing unreachable block (ram,0x00743e72)
// WARNING: Removing unreachable block (ram,0x00743e82)
// WARNING: Removing unreachable block (ram,0x00743e8d)
// WARNING: Removing unreachable block (ram,0x00743e89)
// WARNING: Removing unreachable block (ram,0x00743e7d)
// WARNING: Removing unreachable block (ram,0x00743e90)

void FUN_00743d5e(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x743d6a;
  if (*(char *)((int)param_4 + 0x29) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_0046e6b6();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
    if (*(char *)(param_4[2] + 0x29) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x29) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x29) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 10) != '\x01') {
LAB_00743fc1:
    FUN_0072deaf(param_4 + 4);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_00743f75:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 10) != '\x01'))
  goto LAB_00743fbd;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 10) == '\0') {
      *(undefined *)(ppiVar4 + 10) = 1;
      *(undefined *)(ppiVar3 + 10) = 0;
      FUN_007a3050(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x29) == '\0') {
      if ((*(char *)(*ppiVar4 + 10) != '\x01') || (*(char *)(ppiVar4[2] + 10) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 10) == '\x01') {
          *(undefined *)(*ppiVar4 + 10) = 1;
          *(undefined *)(ppiVar4 + 10) = 0;
          FUN_005d677b(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 10) = *(undefined *)(ppiVar3 + 10);
        *(undefined *)(ppiVar3 + 10) = 1;
        *(undefined *)(ppiVar4[2] + 10) = 1;
        FUN_007a3050(param_1);
        goto LAB_00743fbd;
      }
LAB_00743f6c:
      *(undefined *)(ppiVar4 + 10) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 10) == '\0') {
      *(undefined *)(ppiVar4 + 10) = 1;
      *(undefined *)(ppiVar3 + 10) = 0;
      FUN_005d677b(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x29) == '\0') {
      if ((*(char *)(ppiVar4[2] + 10) == '\x01') && (*(char *)(*ppiVar4 + 10) == '\x01'))
      goto LAB_00743f6c;
      if (*(char *)(*ppiVar4 + 10) == '\x01') {
        *(undefined *)(ppiVar4[2] + 10) = 1;
        *(undefined *)(ppiVar4 + 10) = 0;
        FUN_007a3050(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 10) = *(undefined *)(ppiVar3 + 10);
      *(undefined *)(ppiVar3 + 10) = 1;
      *(undefined *)(*ppiVar4 + 10) = 1;
      FUN_005d677b(param_1);
LAB_00743fbd:
      *(undefined *)(ppiVar5 + 10) = 1;
      goto LAB_00743fc1;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_00743f75;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00743ff4(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x2c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_1_00;
    FUN_0072de00(puVar1 + 4,param_1_00 + 1);
    *(undefined *)(puVar1 + 10) = 0;
    *(undefined *)((int)puVar1 + 0x29) = 0;
  }
  return puVar1;
}



void Catch_All_00744052(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void FUN_00744065(int param_1)

{
  if (*(char *)(param_1 + 0x29) == '\0') {
    FUN_00744065(*(undefined4 *)(param_1 + 8));
    FUN_0072deaf(param_1 + 0x10);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00744120(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 1;
  auStack_24[0] = 0x74413d;
  FUN_007454e8();
  puVar1 = auStack_24;
  auStack_24[0] = 0x744145;
  FUN_007433a8();
  local_8 = 0xffffffff;
  puVar1[-1] = param_1 + 0xc;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x744152;
  FUN_0074487f();
  *(undefined4 *)((int)puVar2 + -4) = 0x744157;
  return;
}



int FUN_0074415a(char *param_1,uint param_2)

{
  char cVar1;
  void *_Dst;
  int iVar2;
  void **unaff_EBX;
  char *pcVar3;
  char *pcVar4;
  void *_Size;
  bool bVar5;
  undefined **local_8;
  
  if (param_2 == 0) {
LAB_0074426c:
    iVar2 = 0;
  }
  else {
    if ((*(char *)(unaff_EBX + 0x12) != '\0') && (iVar2 = 3, 2 < param_2)) {
      bVar5 = true;
      pcVar3 = param_1;
      pcVar4 = &DAT_00dda6f8;
      do {
        if (iVar2 == 0) break;
        iVar2 = iVar2 + -1;
        bVar5 = *pcVar3 == *pcVar4;
        pcVar3 = pcVar3 + 1;
        pcVar4 = pcVar4 + 1;
      } while (bVar5);
      if (bVar5) {
        param_1 = param_1 + 3;
        param_2 = param_2 - 3;
      }
    }
    iVar2 = -1;
    if (param_2 != 0xffffffff) {
      _Size = (void *)(param_2 + 1);
      _Dst = (void *)FUN_00823c23(_Size);
      if (_Dst == (void *)0x0) {
        iVar2 = -2;
      }
      else {
        _memset(_Dst,0,(size_t)_Size);
        _memcpy(_Dst,param_1,param_2);
        bVar5 = *unaff_EBX != (void *)0x0;
        local_8 = &PTR_02bd3fc0;
        param_1 = (char *)0x0;
        param_2 = 0;
        if (unaff_EBX[2] != (void *)0x0) goto LAB_0074423a;
        cVar1 = FUN_00745914(unaff_EBX + 2,0,0);
        if (cVar1 == '\0') goto LAB_0074423a;
        if (!bVar5) goto LAB_0074423a;
        iVar2 = FUN_007457cd(unaff_EBX);
        while (-1 < iVar2) {
LAB_0074423a:
          cVar1 = FUN_0074558a(unaff_EBX,&local_8,&param_1,&param_2);
          if (cVar1 == '\0') {
            if (bVar5) {
              FUN_00a3f66c(_Dst);
            }
            else {
              *unaff_EBX = _Dst;
              unaff_EBX[1] = _Size;
            }
            goto LAB_0074426c;
          }
          iVar2 = FUN_00744568(unaff_EBX,local_8,param_1,param_2,0,bVar5);
        }
      }
    }
  }
  return iVar2;
}



void FUN_00744274(void)

{
  char cVar1;
  undefined4 *unaff_EBX;
  
  FUN_007fa7ce();
  while( true ) {
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') break;
    FUN_006badde();
    FUN_00744c9f(unaff_EBX,*unaff_EBX,unaff_EBX[5]);
    FUN_007449dd();
  }
  return;
}



undefined4 FUN_007442d6(int param_1,int param_2,undefined4 *param_3)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  int *piVar6;
  int local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined local_18 [8];
  undefined4 local_10;
  undefined4 local_c;
  
  FUN_007fa7ce();
  if ((in_EAX != 0) && (param_2 != 0)) {
    local_20 = 0;
    local_1c = 0;
    FUN_0074496b(local_18,&local_24);
    local_c = *(undefined4 *)(param_1 + 0x24);
    local_10 = *(undefined4 *)(param_1 + 0xc);
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      local_20 = 0;
      local_1c = 0;
      local_24 = param_2;
      piVar6 = &local_24;
      puVar5 = &local_10;
      FUN_006badde(puVar5,piVar6);
      FUN_00744a89(puVar5,piVar6);
      iVar2 = FUN_006badde();
      local_1c = *(undefined4 *)(iVar2 + 0x24);
      local_20 = *(undefined4 *)(iVar2 + 0xc);
      cVar1 = FUN_006b8eca();
      if (cVar1 == '\0') {
        iVar2 = FUN_006badde();
        iVar3 = FUN_006badde();
        iVar4 = FUN_006badde();
        local_24 = *(int *)(iVar4 + 0xc);
        local_20 = *(undefined4 *)(iVar3 + 4);
        local_1c = *(undefined4 *)(iVar2 + 8);
        FUN_00744c9f(param_3,*param_3,param_3[5]);
        if (*(char *)(param_1 + 0x49) != '\0') {
          while( true ) {
            FUN_00696a87();
            iVar2 = FUN_006badde();
            local_1c = *(undefined4 *)(iVar2 + 0x24);
            local_20 = *(undefined4 *)(iVar2 + 0xc);
            cVar1 = FUN_006b8eca();
            if (cVar1 != '\0') break;
            puVar5 = (undefined4 *)FUN_006badde();
            cVar1 = FUN_00744858(param_2,*puVar5);
            if (cVar1 != '\0') {
              return 1;
            }
            FUN_006badde();
            FUN_006badde();
            FUN_006badde();
            FUN_00744c9f(param_3,*param_3,param_3[5]);
          }
        }
        return 1;
      }
    }
  }
  return 0;
}



undefined4 FUN_0074444a(int param_1,int param_2,undefined4 param_3,undefined *param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  int *piVar4;
  int local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  if (param_4 != (undefined *)0x0) {
    *param_4 = 0;
  }
  if ((in_EAX != 0) && (param_2 != 0)) {
    local_1c = 0;
    local_18 = 0;
    FUN_0074496b(&local_c,&local_20);
    local_18 = *(undefined4 *)(param_1 + 0x24);
    local_1c = *(undefined4 *)(param_1 + 0xc);
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      local_1c = 0;
      local_18 = 0;
      local_20 = param_2;
      piVar4 = &local_20;
      puVar3 = &local_14;
      FUN_006badde(puVar3,piVar4);
      FUN_00744a89(puVar3,piVar4);
      iVar2 = FUN_006badde();
      local_18 = *(undefined4 *)(iVar2 + 0x24);
      local_1c = *(undefined4 *)(iVar2 + 0xc);
      cVar1 = FUN_006b8eca();
      if (cVar1 == '\0') {
        if ((*(char *)(param_1 + 0x49) != '\0') && (param_4 != (undefined *)0x0)) {
          local_1c = local_14;
          local_18 = local_10;
          iVar2 = FUN_006badde();
          local_8 = *(undefined4 *)(iVar2 + 0x24);
          local_c = *(undefined4 *)(iVar2 + 0xc);
          FUN_00696a87();
          cVar1 = FUN_006b8eca();
          if (cVar1 == '\0') {
            puVar3 = (undefined4 *)FUN_006badde();
            cVar1 = FUN_00744858(param_2,*puVar3);
            if (cVar1 == '\0') {
              *param_4 = 1;
            }
          }
        }
        iVar2 = FUN_006badde();
        param_3 = *(undefined4 *)(iVar2 + 0xc);
      }
    }
  }
  return param_3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_00744568(int param_1,int param_2,int param_3,int param_4,int param_5,char param_6)

{
  undefined4 uVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  bool bVar6;
  int local_84;
  int local_80;
  undefined4 local_7c;
  undefined local_78 [32];
  int *local_58 [4];
  int local_48;
  int local_44;
  int local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  int local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x74;
  local_8 = 0x744574;
  local_15 = '\0';
  if (((param_6 != '\0') && (param_5 != 0)) && (iVar3 = FUN_007457cd(param_1), iVar3 < 0)) {
    return iVar3;
  }
  local_38 = param_2;
  local_34 = 0;
  local_30 = 0;
  FUN_0074496b(&local_2c,&local_38);
  local_1c = *(undefined4 *)(param_1 + 0x24);
  local_20 = *(undefined4 *)(param_1 + 0xc);
  cVar2 = FUN_006b8eca();
  if (cVar2 != '\0') {
    if ((param_6 != '\0') && (iVar3 = FUN_007457cd(param_1), iVar3 < 0)) {
      return iVar3;
    }
    *(int *)(param_1 + 0x4c) = *(int *)(param_1 + 0x4c) + 1;
    uVar1 = *(undefined4 *)(param_1 + 0x4c);
    iVar3 = 0;
    if ((param_5 != 0) && ((param_3 == 0 || (param_4 == 0)))) {
      iVar3 = param_5;
    }
    local_58[0] = (int *)FUN_00418daa(1,0);
    if (local_58[0] == (int *)0x0) {
      local_58[0] = (int *)0x0;
    }
    else {
      *local_58[0] = (int)local_58;
    }
    local_8 = 0;
    local_40 = FUN_007d4925();
    *(undefined *)(local_40 + 0x1d) = 1;
    *(int *)(local_40 + 4) = local_40;
    *(int *)local_40 = local_40;
    *(int *)(local_40 + 8) = local_40;
    local_3c = 0;
    local_8 = 1;
    local_84 = param_2;
    local_80 = iVar3;
    local_7c = uVar1;
    FUN_00744cc9(local_78);
    local_8 = CONCAT31(local_8._1_3_,3);
    FUN_0075239b(local_58);
    FUN_007448a7((undefined4 *)(param_1 + 0xc),&local_84);
    local_2c = local_24;
    local_8 = 0xffffffff;
    local_28 = local_20;
    local_15 = '\x01';
    FUN_0075239b(local_78);
  }
  if ((param_3 == 0) || (param_4 == 0)) goto LAB_007447c1;
  iVar3 = FUN_006badde();
  puVar5 = (undefined4 *)(iVar3 + 0xc);
  local_34 = 0;
  local_30 = 0;
  local_38 = param_3;
  FUN_00744a89(&local_2c,&local_38);
  *(int *)(param_1 + 0x4c) = *(int *)(param_1 + 0x4c) + 1;
  local_1c = *(int *)(param_1 + 0x4c);
  local_30 = *(undefined4 *)(iVar3 + 0x24);
  local_34 = *puVar5;
  FUN_006b8eca();
  bVar6 = *(char *)(param_1 + 0x49) != '\0';
  if (param_6 != '\0') {
    if (bVar6) {
LAB_0074472c:
      iVar4 = FUN_007457cd(param_1);
      if (iVar4 < 0) {
        return iVar4;
      }
    }
    else {
      local_30 = *(undefined4 *)(iVar3 + 0x24);
      local_34 = *puVar5;
      cVar2 = FUN_006b8eca();
      if (cVar2 != '\0') goto LAB_0074472c;
    }
    iVar4 = FUN_007457cd(param_1);
    if (iVar4 < 0) {
      return iVar4;
    }
  }
  local_30 = *(undefined4 *)(iVar3 + 0x24);
  local_34 = *puVar5;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (bVar6)) {
    local_44 = 0;
    if (param_5 != 0) {
      local_44 = param_5;
    }
    local_3c = 0;
    local_40 = local_1c;
    local_48 = param_3;
    puVar5 = (undefined4 *)FUN_00744a2a(&local_48);
    local_2c = *puVar5;
    local_28 = puVar5[1];
    local_15 = '\x01';
  }
  iVar3 = FUN_006badde();
  *(int *)(iVar3 + 0xc) = param_4;
LAB_007447c1:
  return (local_15 != '\0') + 1;
}



void FUN_007447cd(undefined4 param_1,undefined4 param_2)

{
  FUN_0072e330(param_1,param_2,param_2,0);
  return;
}



int __thiscall FUN_007447f1(int param_1_00,int param_1,int param_2)

{
  int local_8;
  
  local_8 = param_1_00;
  if (param_1 != param_1_00) {
    do {
      local_8 = local_8 + -0x84;
      FUN_00b670e6(local_8);
    } while (local_8 != param_1);
  }
  return param_2 + ((param_1_00 - param_1) / 0x84) * -0x84;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_0074487f(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x744897;
  FUN_00744c48();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0074489e;
  FUN_00a3f6a1();
}



void __fastcall FUN_0074484c(undefined4 param_1)

{
  int in_EAX;
  
  FUN_0075239b(in_EAX + 0xc,param_1);
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

bool FUN_00744858(uchar *param_1,uchar *param_2)

{
  int iVar1;
  
  if ((_DAT_032f027c & 1) == 0) {
    _DAT_032f027c = _DAT_032f027c | 1;
  }
  iVar1 = __mbsicmp(param_1,param_2);
  return iVar1 < 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0074487f(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x744897;
  FUN_00744c48();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_0074489e;
  FUN_00a3f6a1();
}



void FUN_007448a7(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  puVar2 = (undefined4 *)local_8[1];
  local_c = CONCAT31(local_c._1_3_,1);
  while (*(char *)((int)puVar2 + 0x39) == '\0') {
    local_8 = puVar2;
    cVar1 = FUN_00744c7c();
    local_c = CONCAT31(local_c._1_3_,cVar1);
    if (cVar1 == '\0') {
      puVar2 = (undefined4 *)puVar2[2];
    }
    else {
      puVar2 = (undefined4 *)*puVar2;
    }
  }
  local_14 = *param_1;
  local_10 = local_8;
  if ((char)local_c != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_00744916;
    }
    FUN_00421832();
  }
  puVar2 = local_10;
  cVar1 = FUN_00744c7c();
  uVar3 = local_c;
  if (cVar1 == '\0') {
    *unaff_EBX = local_14;
    unaff_EBX[1] = puVar2;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_00744916:
  puVar2 = (undefined4 *)FUN_00744afb(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void FUN_0074496b(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_8 = FUN_00744e2c(param_2);
  if (unaff_EBX == (undefined4 *)0x0) {
    FUN_00a3fb10();
  }
  local_14 = *unaff_EBX;
  local_10 = unaff_EBX[6];
  puVar3 = &local_c;
  local_c = local_14;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (cVar2 = FUN_00744c7c(), cVar2 != '\0')) {
    local_10 = unaff_EBX[6];
    local_14 = *unaff_EBX;
    puVar3 = &local_14;
  }
  uVar1 = puVar3[1];
  *param_1 = *puVar3;
  param_1[1] = uVar1;
  return;
}



void FUN_007449dd(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x39) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x39) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x39) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x39) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



void FUN_00744a2a(undefined4 param_1)

{
  undefined4 uVar1;
  char cVar2;
  int in_EAX;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined local_14 [4];
  undefined4 local_10;
  undefined4 *local_c;
  
  local_c = *(undefined4 **)(in_EAX + 0x18);
  puVar3 = (undefined4 *)local_c[1];
  local_10 = CONCAT31(local_10._1_3_,1);
  while (*(char *)((int)puVar3 + 0x1d) == '\0') {
    local_c = puVar3;
    cVar2 = FUN_00744c7c();
    local_10 = CONCAT31(local_10._1_3_,cVar2);
    if (cVar2 == '\0') {
      puVar3 = (undefined4 *)puVar3[2];
    }
    else {
      puVar3 = (undefined4 *)*puVar3;
    }
  }
  puVar3 = (undefined4 *)FUN_00744f8b(local_14,local_10,local_c,param_1);
  uVar1 = *puVar3;
  unaff_EBX[1] = puVar3[1];
  *unaff_EBX = uVar1;
  return;
}



void FUN_00744a89(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_8 = FUN_007450e0(param_2);
  if (unaff_EBX == (undefined4 *)0x0) {
    FUN_00a3fb10();
  }
  local_14 = *unaff_EBX;
  local_10 = unaff_EBX[6];
  puVar3 = &local_c;
  local_c = local_14;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (cVar2 = FUN_00744c7c(), cVar2 != '\0')) {
    local_10 = unaff_EBX[6];
    local_14 = *unaff_EBX;
    puVar3 = &local_14;
  }
  uVar1 = puVar3[1];
  *param_1 = *puVar3;
  param_1[1] = uVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_00744afb(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x744b07;
  if (0x5d1745b < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_00744e5e(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_00744c20;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_00744c20;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_00744c20:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xe) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x38) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xe) == '\0') {
LAB_00744bdc:
        *(undefined *)(piVar1 + 0xe) = 1;
        *(undefined *)(piVar7 + 0xe) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x38) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007d0aa6(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x38) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x38) = 0;
        FUN_00437338(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xe) == '\0') goto LAB_00744bdc;
    if (piVar8 == (int *)*piVar1) {
      FUN_00437338(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x38) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x38) = 0;
    FUN_007d0aa6(unaff_ESI);
  } while( true );
}



void FUN_00744c48(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_00744d76(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

bool __fastcall FUN_00744c7c(uchar **param_1)

{
  uchar **in_EAX;
  int iVar1;
  
  if ((_DAT_032f0278 & 1) == 0) {
    _DAT_032f0278 = _DAT_032f0278 | 1;
  }
  iVar1 = __mbsicmp(*param_1,*in_EAX);
  return iVar1 < 0;
}



void FUN_00744c9f(undefined4 param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  
  iVar1 = FUN_00744eda(param_3,*(int *)(param_3 + 4));
  FUN_00744f13();
  *(int *)(param_3 + 4) = iVar1;
  **(int **)(iVar1 + 4) = iVar1;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_00744cc9(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  int **ppiVar3;
  undefined4 uVar4;
  int iVar5;
  int *piVar6;
  
  ppiVar3 = (int **)FUN_00418daa(1,0);
  if (ppiVar3 == (int **)0x0) {
    ppiVar3 = (int **)0x0;
  }
  else {
    *ppiVar3 = param_1;
  }
  *param_1 = (int)ppiVar3;
  FUN_00744f6a();
  iVar1 = param_1[6];
  uVar4 = FUN_007453a8(*(undefined4 *)(*(int *)(param_1_00 + 0x18) + 4),iVar1);
  *(undefined4 *)(iVar1 + 4) = uVar4;
  param_1[7] = *(int *)(param_1_00 + 0x1c);
  iVar1 = param_1[6];
  piVar2 = *(int **)(iVar1 + 4);
  if (*(char *)((int)*(int **)(iVar1 + 4) + 0x1d) == '\0') {
    do {
      piVar6 = piVar2;
      piVar2 = (int *)*piVar6;
    } while (*(char *)((int)piVar2 + 0x1d) == '\0');
    *(int **)param_1[6] = piVar6;
    iVar1 = *(int *)(param_1[6] + 4);
    do {
      iVar5 = iVar1;
      iVar1 = *(int *)(iVar5 + 8);
    } while (*(char *)(iVar1 + 0x1d) == '\0');
    *(int *)(param_1[6] + 8) = iVar5;
  }
  else {
    *(int *)iVar1 = iVar1;
    *(int *)(param_1[6] + 8) = param_1[6];
  }
  return param_1;
}



void Catch_All_00744d64(void)

{
  code *pcVar1;
  
  FUN_007523c3();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00744d76(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_007454ab(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_007449dd();
    FUN_00745112();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



undefined4 * FUN_00744e2c(void)

{
  undefined4 *puVar1;
  char cVar2;
  int in_EAX;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = (undefined4 *)(*(undefined4 **)(in_EAX + 0x18))[1];
  puVar4 = *(undefined4 **)(in_EAX + 0x18);
  while (puVar3 = puVar1, *(char *)((int)puVar3 + 0x39) == '\0') {
    cVar2 = FUN_00744c7c();
    if (cVar2 == '\0') {
      puVar1 = (undefined4 *)*puVar3;
      puVar4 = puVar3;
    }
    else {
      puVar1 = (undefined4 *)puVar3[2];
    }
  }
  return puVar4;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00744e5e(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x3c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_1_00;
    puVar1[4] = param_1_00[1];
    puVar1[5] = param_1_00[2];
    FUN_00744cc9(puVar1 + 6);
    *(undefined *)(puVar1 + 0xe) = 0;
    *(undefined *)((int)puVar1 + 0x39) = 0;
  }
  return puVar1;
}



void Catch_All_00744ec7(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void FUN_00744eda(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 *unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(0x14);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = param_2;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = *unaff_ESI;
    puVar1[3] = unaff_ESI[1];
    puVar1[4] = unaff_ESI[2];
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00744f13(int param_1)

{
  int iVar1;
  int extraout_ECX;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x744f1f;
  iVar1 = *(int *)(param_1 + 0x18);
  if (iVar1 == 0x15555555) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"list<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::length_error::vftable;
    iVar1 = __CxxThrowException_8(local_54,&DAT_03115554);
    param_1 = extraout_ECX;
  }
  *(int *)(param_1 + 0x18) = iVar1 + 1;
  return;
}



void FUN_00744f6a(void)

{
  int *piVar1;
  int iVar2;
  int unaff_ESI;
  
  iVar2 = FUN_007d4925();
  piVar1 = (int *)(unaff_ESI + 0x18);
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x1d) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00744f8b(undefined4 *param_1,char param_2,int **param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int **ppiVar5;
  int *piVar6;
  int *piVar7;
  undefined4 *unaff_EDI;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x744f97;
  if (0xffffffd < (uint)unaff_EDI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::length_error::vftable;
    __CxxThrowException_8(local_54,&DAT_03115554);
  }
  piVar4 = (int *)FUN_00745466(unaff_EDI[6],param_3,unaff_EDI[6],0);
  unaff_EDI[7] = unaff_EDI[7] + 1;
  piVar7 = piVar4;
  if (param_3 == (int **)unaff_EDI[6]) {
    ((int **)unaff_EDI[6])[1] = piVar4;
    *(int **)unaff_EDI[6] = piVar4;
    *(int **)(unaff_EDI[6] + 8) = piVar4;
  }
  else if (param_2 == '\0') {
    param_3[2] = piVar4;
    if (param_3 == *(int ***)(unaff_EDI[6] + 8)) {
      *(int **)(unaff_EDI[6] + 8) = piVar4;
    }
  }
  else {
    *param_3 = piVar4;
    if (param_3 == *(int ***)(int **)unaff_EDI[6]) {
      *(int **)unaff_EDI[6] = piVar4;
    }
  }
  do {
    while( true ) {
      ppiVar5 = (int **)(piVar7 + 1);
      if (*(char *)(*ppiVar5 + 7) != '\0') {
        *(undefined *)(*(int *)(unaff_EDI[6] + 4) + 0x1c) = 1;
        uVar3 = *unaff_EDI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar5;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar6 = ppiVar2[2];
      if (*(char *)(piVar6 + 7) == '\0') {
LAB_00745074:
        *(undefined *)(piVar1 + 7) = 1;
        *(undefined *)(piVar6 + 7) = 1;
        *(undefined *)((*ppiVar5)[1] + 0x1c) = 0;
        piVar7 = (int *)(*ppiVar5)[1];
      }
      else {
        if (piVar7 == (int *)piVar1[2]) {
          FUN_00745426(unaff_EDI);
          piVar7 = piVar1;
        }
        *(undefined *)(piVar7[1] + 0x1c) = 1;
        *(undefined *)(*(int *)(piVar7[1] + 4) + 0x1c) = 0;
        FUN_006baade(unaff_EDI);
      }
    }
    piVar6 = *ppiVar2;
    if (*(char *)(piVar6 + 7) == '\0') goto LAB_00745074;
    if (piVar7 == (int *)*piVar1) {
      FUN_006baade(unaff_EDI);
      piVar7 = piVar1;
    }
    *(undefined *)(piVar7[1] + 0x1c) = 1;
    *(undefined *)(*(int *)(piVar7[1] + 4) + 0x1c) = 0;
    FUN_00745426(unaff_EDI);
  } while( true );
}



undefined4 * FUN_007450e0(void)

{
  undefined4 *puVar1;
  char cVar2;
  int in_EAX;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = (undefined4 *)(*(undefined4 **)(in_EAX + 0x18))[1];
  puVar4 = *(undefined4 **)(in_EAX + 0x18);
  while (puVar3 = puVar1, *(char *)((int)puVar3 + 0x1d) == '\0') {
    cVar2 = FUN_00744c7c();
    if (cVar2 == '\0') {
      puVar1 = (undefined4 *)*puVar3;
      puVar4 = puVar3;
    }
    else {
      puVar1 = (undefined4 *)puVar3[2];
    }
  }
  return puVar4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007451fd)
// WARNING: Removing unreachable block (ram,0x0074520d)
// WARNING: Removing unreachable block (ram,0x00745216)
// WARNING: Removing unreachable block (ram,0x00745219)
// WARNING: Removing unreachable block (ram,0x00745209)
// WARNING: Removing unreachable block (ram,0x00745226)
// WARNING: Removing unreachable block (ram,0x00745236)
// WARNING: Removing unreachable block (ram,0x00745241)
// WARNING: Removing unreachable block (ram,0x0074523d)
// WARNING: Removing unreachable block (ram,0x00745231)
// WARNING: Removing unreachable block (ram,0x00745244)

void FUN_00745112(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x74511e;
  if (*(char *)((int)param_4 + 0x39) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_007449dd();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
    if (*(char *)(param_4[2] + 0x39) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x39) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x39) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0xe) != '\x01') {
LAB_00745375:
    FUN_0075239b(param_4 + 6);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_00745329:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xe) != '\x01'))
  goto LAB_00745371;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0xe) == '\0') {
      *(undefined *)(ppiVar4 + 0xe) = 1;
      *(undefined *)(ppiVar3 + 0xe) = 0;
      FUN_007d0aa6(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x39) == '\0') {
      if ((*(char *)(*ppiVar4 + 0xe) != '\x01') || (*(char *)(ppiVar4[2] + 0xe) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0xe) == '\x01') {
          *(undefined *)(*ppiVar4 + 0xe) = 1;
          *(undefined *)(ppiVar4 + 0xe) = 0;
          FUN_00437338(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0xe) = *(undefined *)(ppiVar3 + 0xe);
        *(undefined *)(ppiVar3 + 0xe) = 1;
        *(undefined *)(ppiVar4[2] + 0xe) = 1;
        FUN_007d0aa6(param_1);
        goto LAB_00745371;
      }
LAB_00745320:
      *(undefined *)(ppiVar4 + 0xe) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0xe) == '\0') {
      *(undefined *)(ppiVar4 + 0xe) = 1;
      *(undefined *)(ppiVar3 + 0xe) = 0;
      FUN_00437338(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x39) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0xe) == '\x01') && (*(char *)(*ppiVar4 + 0xe) == '\x01'))
      goto LAB_00745320;
      if (*(char *)(*ppiVar4 + 0xe) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0xe) = 1;
        *(undefined *)(ppiVar4 + 0xe) = 0;
        FUN_007d0aa6(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0xe) = *(undefined *)(ppiVar3 + 0xe);
      *(undefined *)(ppiVar3 + 0xe) = 1;
      *(undefined *)(*ppiVar4 + 0xe) = 1;
      FUN_00437338(param_1);
LAB_00745371:
      *(undefined *)(ppiVar5 + 0xe) = 1;
      goto LAB_00745375;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_00745329;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007453a8(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *local_18;
  
  local_18 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)param_1 + 0x1d) == '\0') {
    puVar1 = (undefined4 *)FUN_00745466(local_18,param_2,local_18,*(undefined *)(param_1 + 7));
    if (*(char *)((int)local_18 + 0x1d) != '\0') {
      local_18 = puVar1;
    }
    uVar2 = FUN_007453a8(*param_1,puVar1);
    *puVar1 = uVar2;
    uVar2 = FUN_007453a8(param_1[2],puVar1);
    puVar1[2] = uVar2;
  }
  return local_18;
}



void Catch_All_00745411(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_007a3090(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_00745426(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x1d) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



void FUN_00745466(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined param_4)

{
  undefined4 *puVar1;
  undefined4 *unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *unaff_ESI;
    puVar1[4] = unaff_ESI[1];
    puVar1[5] = unaff_ESI[2];
    puVar1[6] = unaff_ESI[3];
    *(undefined *)(puVar1 + 7) = param_4;
    *(undefined *)((int)puVar1 + 0x1d) = 0;
  }
  return;
}



void FUN_007454ab(int param_1)

{
  if (*(char *)(param_1 + 0x39) == '\0') {
    FUN_007454ab(*(undefined4 *)(param_1 + 8));
    FUN_0075239b(param_1 + 0x18);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_007454e8(void)

{
  int *piVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  int local_c;
  int local_8;
  
  FUN_00a3f66c(*in_EAX);
  *in_EAX = 0;
  in_EAX[1] = 0;
  in_EAX[2] = 0;
  if (in_EAX[10] != 0) {
    FUN_00744d76(&local_c,in_EAX[3],*(undefined4 *)in_EAX[9],in_EAX[3],(undefined4 *)in_EAX[9]);
  }
  if (in_EAX[0x11] != 0) {
    piVar1 = in_EAX + 0xb;
    local_8 = *(int *)in_EAX[0x10];
    local_c = *piVar1;
    while( true ) {
      iVar2 = in_EAX[0x10];
      if ((local_c == 0) || (local_c != *piVar1)) {
        FUN_00a3fb10();
      }
      if (local_8 == iVar2) break;
      puVar3 = (undefined4 *)FUN_006adbc2();
      FUN_00a3f66c(*puVar3);
      FUN_007a741a();
    }
    FUN_00745887(*piVar1,*(undefined4 *)in_EAX[0x10],*piVar1,(undefined4 *)in_EAX[0x10]);
  }
  return;
}



undefined4 __thiscall
FUN_0074558a(char **param_1_00,int param_1,char **param_2,char **param_3,char **param_4)

{
  char cVar1;
  char *pcVar2;
  undefined4 *in_EAX;
  char *pcVar3;
  char *pcVar4;
  undefined4 uVar5;
  int iVar6;
  
  *in_EAX = 0;
LAB_0074567e:
  do {
    if (**param_1_00 == '\0') {
      return 0;
    }
    while (**param_1_00 != '\0') {
      cVar1 = **param_1_00;
      if ((((cVar1 != ' ') && (cVar1 != '\t')) && (cVar1 != '\r')) && (cVar1 != '\n')) break;
      *param_1_00 = *param_1_00 + 1;
    }
    pcVar3 = *param_1_00;
    cVar1 = *pcVar3;
    if (cVar1 == '\0') {
      return 0;
    }
    if ((cVar1 == ';') || (cVar1 == '#')) {
      FUN_00745914(in_EAX,0,1);
      goto LAB_0074567e;
    }
    if (cVar1 != '[') {
      *param_3 = pcVar3;
      while( true ) {
        cVar1 = **param_1_00;
        if ((cVar1 == '=') || (cVar1 == '\n')) break;
        if ((cVar1 == '\r') || (pcVar3 = *param_1_00 + 1, *param_1_00 = pcVar3, *pcVar3 == '\0'))
        break;
      }
      pcVar3 = *param_1_00;
      if (*pcVar3 == '=') {
        pcVar4 = pcVar3;
        if (*param_3 != pcVar3) goto LAB_007456fd;
        do {
          cVar1 = **param_1_00;
          if ((cVar1 == '\n') || (cVar1 == '\r')) break;
          pcVar3 = *param_1_00 + 1;
          *param_1_00 = pcVar3;
        } while (*pcVar3 != '\0');
      }
      goto LAB_0074567e;
    }
    pcVar3 = pcVar3 + 1;
    cVar1 = *pcVar3;
    while ((*param_1_00 = pcVar3, cVar1 != '\0' &&
           (((cVar1 = *pcVar3, cVar1 == ' ' || (cVar1 == '\t')) ||
            ((cVar1 == '\r' || (cVar1 == '\n'))))))) {
      pcVar3 = pcVar3 + 1;
      cVar1 = *pcVar3;
    }
    pcVar3 = *param_1_00;
    *param_2 = pcVar3;
    while (*pcVar3 != '\0') {
      cVar1 = **param_1_00;
      if (((cVar1 == ']') || (cVar1 == '\n')) || (cVar1 == '\r')) break;
      pcVar3 = *param_1_00 + 1;
      *param_1_00 = pcVar3;
    }
    pcVar3 = *param_1_00;
    pcVar4 = pcVar3;
  } while (*pcVar3 != ']');
  do {
    pcVar2 = pcVar4;
    pcVar4 = pcVar2 + -1;
    if (pcVar4 < *param_2) break;
    cVar1 = *pcVar4;
  } while (((cVar1 == ' ') || (cVar1 == '\t')) || ((cVar1 == '\r' || (cVar1 == '\n'))));
  *pcVar2 = '\0';
  pcVar3 = pcVar3 + 1;
  cVar1 = *pcVar3;
  while (((*param_1_00 = pcVar3, cVar1 != '\0' && (*pcVar3 != '\n')) && (*pcVar3 != '\r'))) {
    pcVar3 = pcVar3 + 1;
    cVar1 = *pcVar3;
  }
  *param_3 = (char *)0x0;
  *param_4 = (char *)0x0;
  return 1;
  while ((((cVar1 = *pcVar4, cVar1 == ' ' || (cVar1 == '\t')) || (cVar1 == '\r')) || (cVar1 == '\n')
         )) {
LAB_007456fd:
    pcVar2 = pcVar4;
    pcVar4 = pcVar2 + -1;
    if (pcVar4 < *param_3) break;
  }
  *pcVar2 = '\0';
  pcVar3 = pcVar3 + 1;
  cVar1 = *pcVar3;
  while ((((*param_1_00 = pcVar3, cVar1 != '\0' && (cVar1 = *pcVar3, cVar1 != '\n')) &&
          (cVar1 != '\r')) &&
         (((cVar1 == ' ' || (cVar1 == '\t')) || ((cVar1 == '\r' || (cVar1 == '\n'))))))) {
    pcVar3 = pcVar3 + 1;
    cVar1 = *pcVar3;
  }
  pcVar3 = *param_1_00;
  *param_4 = pcVar3;
  while (*pcVar3 != '\0') {
    cVar1 = **param_1_00;
    if ((cVar1 == '\n') || (cVar1 == '\r')) break;
    pcVar3 = *param_1_00 + 1;
    *param_1_00 = pcVar3;
  }
  pcVar3 = *param_1_00;
  if (*pcVar3 != '\0') {
    if ((*pcVar3 == '\r') && (pcVar3[1] == '\n')) {
      iVar6 = 2;
    }
    else {
      iVar6 = 1;
    }
    *param_1_00 = pcVar3 + iVar6;
  }
  pcVar4 = *param_4;
  do {
    pcVar2 = pcVar3;
    pcVar3 = pcVar2 + -1;
    if (pcVar3 < pcVar4) break;
    cVar1 = *pcVar3;
  } while ((((cVar1 == ' ') || (cVar1 == '\t')) || (cVar1 == '\r')) || (cVar1 == '\n'));
  *pcVar2 = '\0';
  if (*(char *)(param_1 + 0x4a) == '\0') {
    return 1;
  }
  if (*pcVar4 != '<') {
    return 1;
  }
  if (pcVar4[1] != '<') {
    return 1;
  }
  if (pcVar4[2] != '<') {
    return 1;
  }
  uVar5 = FUN_00745914(param_4,pcVar4 + 3,0);
  return uVar5;
}



undefined4 FUN_007457cd(int param_1)

{
  char *pcVar1;
  char cVar2;
  char *pcVar3;
  char *_Dst;
  undefined4 uVar4;
  char **unaff_EDI;
  
  pcVar3 = *unaff_EDI;
  pcVar1 = pcVar3 + 1;
  do {
    cVar2 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar2 != '\0');
  _Dst = (char *)FUN_00823c23(pcVar3 + (1 - (int)pcVar1));
  if (_Dst == (char *)0x0) {
    uVar4 = 0xfffffffe;
  }
  else {
    _memcpy(_Dst,*unaff_EDI,(size_t)(pcVar3 + (1 - (int)pcVar1)));
    FUN_00744c9f((undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x2c),
                 *(undefined4 *)(param_1 + 0x40));
    *unaff_EDI = _Dst;
    uVar4 = 0;
  }
  return uVar4;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0074582f(int param_1,int param_2,undefined4 param_3)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    FUN_0072e390(param_1,param_3);
    param_1 = param_1 + 0x84;
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_00745862(void)

{
  int unaff_EBP;
  undefined4 *puVar1;
  
  for (puVar1 = *(undefined4 **)(unaff_EBP + -0x14); puVar1 != *(undefined4 **)(unaff_EBP + 8);
      puVar1 = puVar1 + 0x21) {
    (**(code **)*puVar1)(0);
  }
  __CxxThrowException_8(0,0);
  return;
}



void __thiscall FUN_00745887(undefined4 param_1_00,int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int *in_EAX;
  int *piVar2;
  int *unaff_EDI;
  undefined4 local_c;
  undefined4 uStack_8;
  
  iVar1 = *(int *)in_EAX[5];
  local_c = param_1_00;
  uStack_8 = param_1_00;
  if ((param_1 == 0) || (param_1 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_2 == iVar1) {
    iVar1 = in_EAX[5];
    if ((param_3 == 0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_4 == iVar1) {
      FUN_007fa7ce();
      param_4 = in_EAX[5];
      goto LAB_007458ce;
    }
  }
  while( true ) {
    if ((param_1 == 0) || (param_1 != param_3)) {
      FUN_00a3fb10();
    }
    if (param_2 == param_4) break;
    piVar2 = (int *)FUN_007fb9b0(&local_c,param_1,param_2);
    param_1 = *piVar2;
    param_2 = piVar2[1];
  }
LAB_007458ce:
  unaff_EDI[1] = param_4;
  *unaff_EDI = *in_EAX;
  return;
}



undefined4 FUN_00745914(char **param_1,int param_2,char param_3)

{
  char cVar1;
  int iVar2;
  char *pcVar3;
  undefined4 uVar4;
  char *_Dst;
  char **unaff_ESI;
  char *pcVar5;
  size_t local_c;
  char local_5;
  
  _Dst = *unaff_ESI;
  *param_1 = _Dst;
  local_5 = *_Dst;
  do {
    while (param_2 != 0) {
LAB_007459b1:
      pcVar5 = *unaff_ESI;
      pcVar3 = pcVar5;
      while (*pcVar3 != '\0') {
        cVar1 = **unaff_ESI;
        if ((cVar1 == '\n') || (cVar1 == '\r')) break;
        pcVar3 = *unaff_ESI + 1;
        *unaff_ESI = pcVar3;
      }
      if (_Dst < pcVar5) {
        pcVar3 = *unaff_ESI;
        _memmove(_Dst,pcVar5,(int)pcVar3 - (int)pcVar5);
        _Dst[(int)pcVar3 - (int)pcVar5] = '\0';
      }
      local_5 = **unaff_ESI;
      **unaff_ESI = '\0';
      if (((param_2 != 0) && (cVar1 = FUN_00744858(_Dst,param_2), cVar1 == '\0')) &&
         (cVar1 = FUN_00744858(param_2,_Dst), cVar1 == '\0')) goto LAB_00745a43;
      if (local_5 == '\0') goto LAB_00745a7d;
      pcVar3 = *unaff_ESI;
      *pcVar3 = local_5;
      if ((local_5 == '\r') && (pcVar3[1] == '\n')) {
        iVar2 = 2;
      }
      else {
        iVar2 = 1;
      }
      _Dst[(int)pcVar3 - (int)pcVar5] = '\n';
      *unaff_ESI = pcVar3 + iVar2;
      _Dst = _Dst + ((int)pcVar3 - (int)pcVar5) + 1;
    }
    pcVar5 = *unaff_ESI;
    if ((*pcVar5 == ';') || (*pcVar5 == '#')) goto LAB_007459b1;
    if (param_3 == '\0') {
LAB_00745a43:
      pcVar5 = *unaff_ESI;
      if (*param_1 == pcVar5) {
        *param_1 = (char *)0x0;
        uVar4 = 0;
      }
      else {
        _Dst[-1] = '\0';
        if ((param_2 != 0) && (local_5 != '\0')) {
          *pcVar5 = local_5;
          if ((local_5 == '\r') && (pcVar5[1] == '\n')) {
            iVar2 = 2;
          }
          else {
            iVar2 = 1;
          }
          *unaff_ESI = pcVar5 + iVar2;
        }
LAB_00745a7d:
        uVar4 = 1;
      }
      return uVar4;
    }
    local_c = 0;
    while ((((cVar1 = *pcVar5, cVar1 == ' ' || (cVar1 == '\t')) || (cVar1 == '\r')) ||
           (cVar1 == '\n'))) {
      if ((cVar1 == '\n') || (cVar1 == '\r')) {
        local_c = local_c + 1;
        if ((cVar1 == '\r') && (pcVar5[1] == '\n')) {
          iVar2 = 2;
        }
        else {
          iVar2 = 1;
        }
        pcVar5 = pcVar5 + iVar2;
      }
      else {
        pcVar5 = pcVar5 + 1;
      }
    }
    if ((*pcVar5 != ';') && (*pcVar5 != '#')) goto LAB_00745a43;
    if (0 < (int)local_c) {
      _memset(_Dst,10,local_c);
      _Dst = _Dst + local_c;
    }
    *unaff_ESI = pcVar5;
  } while( true );
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_00745a85(int *param_1)

{
  int iVar1;
  short sVar2;
  undefined2 uVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  char local_24;
  locale local_1c [4];
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x745a91;
  iVar6 = 0;
  local_18 = 0;
  FUN_00415f7a(param_1);
  local_8 = 0;
  if (local_24 != '\0') {
    uVar4 = FUN_00417498(local_1c);
    local_8._0_1_ = 1;
    piVar5 = (int *)FUN_00413d06(uVar4);
    std::locale::~locale(local_1c);
    iVar1 = *(int *)((int)param_1 + *(int *)(*param_1 + 4) + 0x18);
    if (1 < iVar1) {
      iVar6 = iVar1 + -1;
    }
    local_8 = CONCAT31(local_8._1_3_,2);
    if ((*(uint *)((int)param_1 + *(int *)(*param_1 + 4) + 0x10) & 0x1c0) == 0x40) {
LAB_00745b35:
      uVar3 = (**(code **)(*piVar5 + 0x28))(0x20);
      sVar2 = sputc(uVar3);
      if (sVar2 == -1) {
        local_18 = 4;
      }
      for (; (local_18 == 0 && (0 < iVar6)); iVar6 = iVar6 + -1) {
        sVar2 = sputc(*(undefined2 *)((int)param_1 + *(int *)(*param_1 + 4) + 0x30));
        if (sVar2 == -1) {
          local_18 = 4;
        }
      }
    }
    else {
      while (local_18 == 0) {
        if (iVar6 < 1) goto LAB_00745b35;
        sVar2 = sputc(*(undefined2 *)((int)param_1 + *(int *)(*param_1 + 4) + 0x30));
        if (sVar2 == -1) {
          local_18 = 4;
        }
        iVar6 = iVar6 + -1;
      }
    }
  }
  local_8 = 0;
  *(undefined4 *)((int)param_1 + *(int *)(*param_1 + 4) + 0x18) = 0;
  FUN_00417b8a(local_18,0);
  local_8 = 0xffffffff;
  FUN_00416035();
  return param_1;
}



undefined * Catch_All_00745b9b(void)

{
  int unaff_EBP;
  
  FUN_00417b70(*(uint *)((int)*(int **)(unaff_EBP + 8) + *(int *)(**(int **)(unaff_EBP + 8) + 4) + 8
                        ) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_00745bbd;
}



undefined4 FUN_00745bf6(undefined4 param_1)

{
  FUN_00422d30(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_00745c10(int *param_1_00,undefined2 param_1)

{
  int iVar1;
  undefined4 uVar2;
  char *pcVar3;
  int *piVar4;
  uint local_38 [3];
  char local_2c;
  undefined4 local_28;
  locale local_24 [4];
  undefined4 local_20;
  int *local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x745c1c;
  local_20 = 0;
  local_1c = param_1_00;
  FUN_00425790(param_1_00);
  local_8 = 0;
  if (local_2c != '\0') {
    uVar2 = FUN_00417498(local_24);
    local_8._0_1_ = 1;
    uVar2 = FUN_00424900(uVar2);
    std::locale::~locale(local_24);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar1 = *(int *)(*param_1_00 + 4);
    local_28 = CONCAT31(local_28._1_3_,*(undefined *)((int)param_1_00 + iVar1 + 0x30));
    local_38[0] = local_38[0] & 0xffffff00;
    pcVar3 = (char *)std::
                     num_put<unsigned_short,class_std::ostreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>
                     ::put(uVar2,local_38,local_38[0],
                           *(undefined4 *)((int)param_1_00 + iVar1 + 0x28),
                           *(int *)(*param_1_00 + 4) + (int)param_1_00,local_28,param_1);
    if (*pcVar3 != '\0') {
      local_20 = 4;
    }
    local_8 = 0;
    piVar4 = (int *)FUN_00745cc6();
    return piVar4;
  }
  FUN_004259e0(local_20,0);
  local_8 = 0xffffffff;
  FUN_00425900();
  return param_1_00;
}



undefined * Catch_All_00745ca4(void)

{
  int unaff_EBP;
  
  FUN_004259e0(4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_00745cc1;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00745cc6(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  
  FUN_004259e0(*(undefined4 *)(unaff_EBP + -0x1c),unaff_EBX);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00425900();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: virtual __thiscall std::basic_ostringstream<char,struct std::char_traits<char>,class
// std::allocator<char> >::~basic_ostringstream<char,struct std::char_traits<char>,class
// std::allocator<char> >(void)
//  public: virtual __thiscall std::basic_ostringstream<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short>
// >::~basic_ostringstream<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> >(void)
//  public: virtual __thiscall std::basic_ostringstream<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::~basic_ostringstream<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >(void)
// 
// Libraries: Visual Studio 2012 Release, Visual Studio 2015 Release

void __fastcall ~basic_ostringstream<>(int param_1)

{
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x4c) + 4) + -0x4c + param_1) =
       std::basic_ostringstream<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
       vftable;
  FUN_00422ee0();
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x4c) + 4) + param_1 + -0x4c) =
       std::basic_ostream<char,struct_std::char_traits<char>_>::vftable;
  return;
}



void __fastcall FUN_00745d2b(int param_1)

{
  ~basic_ostringstream<>();
  *(undefined4 *)(param_1 + 0x4c) = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)(undefined4 *)(param_1 + 0x4c));
  return;
}



int __thiscall FUN_00745d45(int param_1_00,byte param_1)

{
  FUN_00745d2b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -0x4c);
  }
  return param_1_00 + -0x4c;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_00745d64(int *param_1_00,uint param_1,int param_2)

{
  if (param_2 != 0) {
    *param_1_00 = (int)&DAT_00fad660;
    param_1_00[0x13] = (int)std::basic_ios<char,struct_std::char_traits<char>_>::vftable;
  }
  basic_ostream<>(param_1_00 + 1,0,0);
  *(undefined ***)((int)param_1_00 + *(int *)(*param_1_00 + 4)) =
       std::basic_ostringstream<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
       vftable;
  FUN_00423910(param_1 | 2);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00745ea5(undefined4 param_1)

{
  char cVar1;
  int iVar2;
  undefined *local_64 [2];
  undefined *local_5c;
  undefined4 local_58;
  undefined4 uStack_4c;
  undefined *puStack_48;
  undefined local_2c [8];
  undefined *local_24;
  undefined4 local_20;
  undefined **local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x745eb1;
  puStack_48 = local_2c;
  local_18 = 0;
  uStack_4c = 0x745ebf;
  FUN_00507ed8();
  local_8 = 1;
  local_24 = &LAB_00652ba4;
  local_1c = local_64;
  local_20 = param_1;
  local_64[0] = (undefined *)0x0;
  cVar1 = FUN_007f2630();
  if (cVar1 == '\0') {
    if (&stack0x00000000 != (undefined *)0x5c) {
      local_5c = local_24;
      local_58 = local_20;
    }
    local_64[0] = &DAT_02bd3fc5;
  }
  else {
    local_64[0] = (undefined *)0x0;
  }
  local_8._0_1_ = 2;
  iVar2 = FUN_00608ac4();
  local_8 = CONCAT31(local_8._1_3_,3);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar2 + 4);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_00745f7d(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined auStack_10c [32];
  undefined4 local_ec [8];
  undefined4 local_cc [4];
  undefined4 uStack_bc;
  int iStack_b8;
  undefined *puStack_b4;
  undefined *puStack_b0;
  undefined local_80 [24];
  undefined4 local_68;
  undefined local_64 [24];
  undefined4 local_4c;
  undefined *local_48;
  undefined4 *local_44;
  undefined4 *local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x745f8c;
  local_34 = param_1;
  local_3c = param_2;
  puStack_b0 = (undefined *)0x745fa8;
  local_38 = param_1_00;
  puStack_b0 = (undefined *)FUN_0060a7be();
  local_8 = 0;
  puStack_b4 = (undefined *)0x745fb9;
  FUN_007d77b6();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x745fc7;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  local_4c = 7;
  puStack_b4 = (undefined *)0x745fd6;
  FUN_0040180b();
  puStack_b0 = (undefined *)0x0;
  local_68 = 7;
  puStack_b4 = (undefined *)0x745fe2;
  FUN_0040180b();
  puStack_b0 = local_64;
  puStack_b4 = local_80;
  iStack_b8 = param_1_00 + 0x120;
  local_8._0_1_ = 4;
  uStack_bc = 0x745ffd;
  FUN_007b6458();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x74600a;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x746015;
  FUN_00401829();
  local_44 = local_cc;
  local_cc[0] = 0;
  local_40 = local_ec;
  local_ec[0] = 0;
  local_48 = auStack_10c;
  local_8._0_1_ = 6;
  FUN_00507832();
  local_8 = CONCAT31(local_8._1_3_,2);
  cVar1 = FUN_007c021d(local_34,local_3c);
  if (cVar1 == '\0') {
    puStack_b0 = (undefined *)0x42f83f7;
    puStack_b4 = (undefined *)0x746069;
    FUN_00b940e0();
    param_1_00 = local_38;
  }
  puStack_b0 = (undefined *)0x746075;
  (**(code **)(**(int **)(param_1_00 + 4) + 0x2c))();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x746081;
  FUN_00401829();
  puStack_b0 = (undefined *)0x746088;
  FUN_00a421fb();
  return;
}



char __fastcall FUN_0074608b(undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0x285d1943;
  }
  else {
    FUN_00745ea5(param_1,local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0x7106229f;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00746133(undefined *param_1,undefined4 param_2,int *param_3,undefined4 *param_4,
                 undefined4 param_5)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined auStack_58 [4];
  undefined4 uStack_54;
  undefined4 auStack_50 [5];
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 *puStack_34;
  undefined4 local_20;
  int local_1c;
  undefined4 *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_20 = 0;
  local_1c = 0;
  local_18 = auStack_50;
  local_8 = 0;
  uStack_54 = 0x74615c;
  FUN_0065071e();
  uStack_54 = 0x746164;
  local_11 = FUN_00675755();
  if (local_11 == '\0') {
    puStack_34 = (undefined4 *)0x5cc2b29b;
    uStack_38 = 0x74617f;
    FUN_00b940e0();
  }
  local_18 = (undefined4 *)0x0;
  local_8._0_1_ = 1;
  if (local_11 != '\0') {
    puVar2 = param_1 + 0x120;
    uStack_38 = 0x74619f;
    puStack_34 = (undefined4 *)puVar2;
    FUN_007b47f9();
    puStack_34 = &param_1;
    param_1 = (undefined *)0x0;
    uStack_38 = 0x7461ae;
    FUN_00b81a21();
    puVar1 = param_4;
    puStack_34 = (undefined4 *)0x0;
    uStack_38 = param_1;
    uStack_3c = 0x7461bc;
    (**(code **)*param_4)();
    param_1 = auStack_58;
    FUN_00620554(FUN_007b4866,puVar2);
    local_11 = (**(code **)(*param_3 + 0xa4))(&local_18,local_20);
    if (local_11 == '\0') {
      FUN_00b940e0(0x24b35f7a);
    }
    (**(code **)*puVar1)(0,0);
    if (local_11 != '\0') {
      puStack_34 = (undefined4 *)param_2;
      uStack_38 = param_5;
      uStack_3c = 0x746217;
      local_11 = FUN_00bb3498();
      if (local_11 == '\0') {
        puStack_34 = (undefined4 *)0x1c1b515c;
        uStack_38 = 0x74622d;
        FUN_00b940e0();
      }
    }
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_18 != (undefined4 *)0x0) {
    puStack_34 = (undefined4 *)0x1;
    uStack_38 = 0x74623f;
    (**(code **)*local_18)();
  }
  local_8 = 0xffffffff;
  if (local_1c != 0) {
    puStack_34 = (undefined4 *)0x74624f;
    FUN_0040127a();
  }
  return local_11;
}



void FUN_0074625a(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00746295(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W93189DDC::W28C35061,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W93189DDC::W28C35061*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00746295(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W93189DDC::W28C35061,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W93189DDC::W28C35061*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W93189DDC::W28C35061,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W93189DDC::W28C35061*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_007462de(void)

{
  FUN_00677842();
  return;
}



void FUN_007462f0(void)

{
  FUN_0074639c();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_007462f8(int param_1_00,undefined4 *param_1)

{
  undefined2 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *local_14;
  
  uVar1 = *(undefined2 *)((int)param_1 + 10);
  puVar3 = (undefined4 *)FUN_00b85840(param_1);
  param_1 = (undefined4 *)*puVar3;
  *puVar3 = 0;
  if (local_14 != (undefined4 *)0x0) {
    (**(code **)*local_14)();
  }
  cVar2 = FUN_007463b1();
  if (cVar2 == '\0') {
    cVar2 = '\0';
  }
  else {
    param_1 = (undefined4 *)0x0;
    cVar2 = (**(code **)(**(int **)(param_1_00 + 8) + 0x94))(uVar1);
    if (cVar2 != '\0') goto LAB_00746381;
  }
  FUN_00b940e0();
LAB_00746381:
  if (param_1 != (undefined4 *)0x0) {
    (**(code **)*param_1)();
  }
  return cVar2;
}



undefined FUN_0074639c(void)

{
  FUN_00b940e0(0x3b652be);
  return 1;
}



undefined4 FUN_007463b1(undefined4 param_1)

{
  char extraout_AL;
  char extraout_AL_00;
  undefined4 in_EAX;
  undefined3 uVar1;
  undefined3 extraout_var;
  undefined3 extraout_var_00;
  undefined3 extraout_var_01;
  undefined3 extraout_var_02;
  char cVar2;
  int unaff_ESI;
  undefined unaff_retaddr;
  
  uVar1 = (undefined3)((uint)in_EAX >> 8);
  cVar2 = '\x01';
  if (*(char *)(unaff_ESI + 0xc) != (char)param_1) {
    if (*(char *)(unaff_ESI + 0xc) != '\0') {
      (**(code **)(**(int **)(unaff_ESI + 8) + 0x84))();
      uVar1 = extraout_var;
      if (extraout_AL == '\0') {
        FUN_00b940e0(0x820965ff);
        uVar1 = extraout_var_00;
      }
      *(undefined *)(unaff_ESI + 0xc) = 0;
      cVar2 = extraout_AL;
      if (extraout_AL == '\0') goto LAB_00746417;
    }
    (**(code **)(**(int **)(unaff_ESI + 8) + 0x7c))(param_1);
    cVar2 = extraout_AL_00;
    if (extraout_AL_00 == '\0') {
      FUN_00b940e0(0xb95523a);
      uVar1 = extraout_var_02;
    }
    else {
      *(undefined *)(unaff_ESI + 0xc) = unaff_retaddr;
      uVar1 = extraout_var_01;
    }
  }
LAB_00746417:
  return CONCAT31(uVar1,cVar2);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007464f9(undefined4 param_1)

{
  char cVar1;
  int iVar2;
  undefined *local_64 [2];
  undefined *local_5c;
  undefined4 local_58;
  undefined4 uStack_4c;
  undefined *puStack_48;
  undefined local_2c [8];
  undefined *local_24;
  undefined4 local_20;
  undefined **local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x746505;
  puStack_48 = local_2c;
  local_18 = 0;
  uStack_4c = 0x746513;
  FUN_00507ed8();
  local_8 = 1;
  local_24 = &LAB_00652ba4;
  local_1c = local_64;
  local_20 = param_1;
  local_64[0] = (undefined *)0x0;
  cVar1 = FUN_007f2630();
  if (cVar1 == '\0') {
    if (&stack0x00000000 != (undefined *)0x5c) {
      local_5c = local_24;
      local_58 = local_20;
    }
    local_64[0] = &DAT_02bd405d;
  }
  else {
    local_64[0] = (undefined *)0x0;
  }
  local_8._0_1_ = 2;
  iVar2 = FUN_00608ac4();
  local_8 = CONCAT31(local_8._1_3_,3);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar2 + 4);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_007465d1(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined auStack_10c [32];
  undefined4 local_ec [8];
  undefined4 local_cc [4];
  undefined4 uStack_bc;
  int iStack_b8;
  undefined *puStack_b4;
  undefined *puStack_b0;
  undefined local_80 [24];
  undefined4 local_68;
  undefined local_64 [24];
  undefined4 local_4c;
  undefined *local_48;
  undefined4 *local_44;
  undefined4 *local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x7465e0;
  local_34 = param_1;
  local_3c = param_2;
  puStack_b0 = (undefined *)0x7465fc;
  local_38 = param_1_00;
  puStack_b0 = (undefined *)FUN_0060a7be();
  local_8 = 0;
  puStack_b4 = (undefined *)0x74660d;
  FUN_007d77b6();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x74661b;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  local_4c = 7;
  puStack_b4 = (undefined *)0x74662a;
  FUN_0040180b();
  puStack_b0 = (undefined *)0x0;
  local_68 = 7;
  puStack_b4 = (undefined *)0x746636;
  FUN_0040180b();
  puStack_b0 = local_64;
  puStack_b4 = local_80;
  iStack_b8 = param_1_00 + 0x120;
  local_8._0_1_ = 4;
  uStack_bc = 0x746651;
  FUN_007b6458();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x74665e;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x746669;
  FUN_00401829();
  local_44 = local_cc;
  local_cc[0] = 0;
  local_40 = local_ec;
  local_ec[0] = 0;
  local_48 = auStack_10c;
  local_8._0_1_ = 6;
  FUN_00507832();
  local_8 = CONCAT31(local_8._1_3_,2);
  cVar1 = FUN_007c021d(local_34,local_3c);
  if (cVar1 == '\0') {
    puStack_b0 = (undefined *)0x18747984;
    puStack_b4 = (undefined *)0x7466bd;
    FUN_00b940e0();
    param_1_00 = local_38;
  }
  puStack_b0 = (undefined *)0x7466c9;
  (**(code **)(**(int **)(param_1_00 + 4) + 0x2c))();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x7466d5;
  FUN_00401829();
  puStack_b0 = (undefined *)0x7466dc;
  FUN_00a421fb();
  return;
}



char FUN_007466df(void)

{
  char cVar1;
  
  FUN_0065071e();
  cVar1 = FUN_00675755();
  if (cVar1 == '\0') {
    FUN_00b940e0();
  }
  return cVar1;
}



char __fastcall FUN_00746723(undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0x3c2709cb;
  }
  else {
    FUN_007464f9(param_1,local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0x3e65228;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



void FUN_007467cb(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00746806(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_WD04B2055::W4B1B6ABC,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WD04B2055::W4B1B6ABC*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00746806(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_WD04B2055::W4B1B6ABC,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WD04B2055::W4B1B6ABC*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_WD04B2055::W4B1B6ABC,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_WD04B2055::W4B1B6ABC*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0074692b(undefined4 param_1)

{
  char cVar1;
  int iVar2;
  undefined *local_64 [2];
  undefined *local_5c;
  undefined4 local_58;
  undefined4 uStack_4c;
  undefined *puStack_48;
  undefined local_2c [8];
  undefined *local_24;
  undefined4 local_20;
  undefined **local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x746937;
  puStack_48 = local_2c;
  local_18 = 0;
  uStack_4c = 0x746945;
  FUN_00507ed8();
  local_8 = 1;
  local_24 = &LAB_00652ba4;
  local_1c = local_64;
  local_20 = param_1;
  local_64[0] = (undefined *)0x0;
  cVar1 = FUN_007f2630();
  if (cVar1 == '\0') {
    if (&stack0x00000000 != (undefined *)0x5c) {
      local_5c = local_24;
      local_58 = local_20;
    }
    local_64[0] = &DAT_02bd40b1;
  }
  else {
    local_64[0] = (undefined *)0x0;
  }
  local_8._0_1_ = 2;
  iVar2 = FUN_00608ac4();
  local_8 = CONCAT31(local_8._1_3_,3);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar2 + 4);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_00746a03(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined auStack_10c [32];
  undefined4 local_ec [8];
  undefined4 local_cc [4];
  undefined4 uStack_bc;
  int iStack_b8;
  undefined *puStack_b4;
  undefined *puStack_b0;
  undefined local_80 [24];
  undefined4 local_68;
  undefined local_64 [24];
  undefined4 local_4c;
  undefined *local_48;
  undefined4 *local_44;
  undefined4 *local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x746a12;
  local_34 = param_1;
  local_3c = param_2;
  puStack_b0 = (undefined *)0x746a2e;
  local_38 = param_1_00;
  puStack_b0 = (undefined *)FUN_0060a7be();
  local_8 = 0;
  puStack_b4 = (undefined *)0x746a3f;
  FUN_007d77b6();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x746a4d;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  local_4c = 7;
  puStack_b4 = (undefined *)0x746a5c;
  FUN_0040180b();
  puStack_b0 = (undefined *)0x0;
  local_68 = 7;
  puStack_b4 = (undefined *)0x746a68;
  FUN_0040180b();
  puStack_b0 = local_64;
  puStack_b4 = local_80;
  iStack_b8 = param_1_00 + 0x120;
  local_8._0_1_ = 4;
  uStack_bc = 0x746a83;
  FUN_007b6458();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x746a90;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x746a9b;
  FUN_00401829();
  local_44 = local_cc;
  local_cc[0] = 0;
  local_40 = local_ec;
  local_ec[0] = 0;
  local_48 = auStack_10c;
  local_8._0_1_ = 6;
  FUN_00507832();
  local_8 = CONCAT31(local_8._1_3_,2);
  cVar1 = FUN_007c021d(local_34,local_3c);
  if (cVar1 == '\0') {
    puStack_b0 = (undefined *)0x34c85dc0;
    puStack_b4 = (undefined *)0x746aef;
    FUN_00b940e0();
    param_1_00 = local_38;
  }
  puStack_b0 = (undefined *)0x746afb;
  (**(code **)(**(int **)(param_1_00 + 4) + 0x2c))();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x746b07;
  FUN_00401829();
  puStack_b0 = (undefined *)0x746b0e;
  FUN_00a421fb();
  return;
}



char FUN_00746b11(void)

{
  char cVar1;
  
  FUN_0065071e();
  cVar1 = FUN_00675755();
  if (cVar1 == '\0') {
    FUN_00b940e0();
  }
  return cVar1;
}



char __fastcall FUN_00746b55(undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0x97f7cc14;
  }
  else {
    FUN_0074692b(param_1,local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0xf904e631;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



void FUN_00746bfd(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00746c38(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W5EDB6F21::W42C36166,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W5EDB6F21::W42C36166*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00746c38(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W5EDB6F21::W42C36166,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W5EDB6F21::W42C36166*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W5EDB6F21::W42C36166,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W5EDB6F21::W42C36166*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00746ce8(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007b3730();
    *puVar2 = W01568D36::W4468CDA0::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007470f4(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00746fe1(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x746fed;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W01568D36::W4468CDA0::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W01568D36::W4468CDA0::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_007470dd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007470f4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::W4468CDA0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0074713a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00747151(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::W5B5D0942>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00747197(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00747608(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x747614;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W01568D36::WF47C9346::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W01568D36::WF47C9346::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00747704(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074771b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::W76FE6876>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00747761(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00747778(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::WF47C9346>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007477be(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007478b5)

undefined4 * FUN_0074783c(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x184);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_00747bd6();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00747ac3(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x747acf;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W01568D36::W308754C4::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W01568D36::W308754C4::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00747bbf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00747bd6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::W308754C4>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00747c1c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00747eff)

undefined4 * FUN_00747e8c(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_00748334();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00748167(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x748173;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W01568D36::WC1BE2A7B::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W01568D36::WC1BE2A7B::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00748263(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074827a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::W65453AC4>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007482c0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007482d7(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::WC31CCF5F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0074831d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00748334(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::WC1BE2A7B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0074837a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0074846b)

undefined4 * FUN_007483f8(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0074875f();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0074864c(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x748658;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W01568D36::WA4991E03::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W01568D36::WA4991E03::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00748748(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074875f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::WA4991E03>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007487a5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00748896)

undefined4 * FUN_00748823(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_00748b8a();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00748a77(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x748a83;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W01568D36::W3C2B1A7D::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W01568D36::W3C2B1A7D::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00748b73(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00748b8a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::W3C2B1A7D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00748bd0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00748cc4)

undefined4 * FUN_00748c4e(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x44);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_007490dd();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00748fca(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x748fd6;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W01568D36::W60E5DC29::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W01568D36::W60E5DC29::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_007490c6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007490dd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::W60E5DC29>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00749123(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074913a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::WF76DD67F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00749180(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00749274)

undefined4 * FUN_007491fe(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x34);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0074968e();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0074957b(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x749587;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W01568D36::W055F2101::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W01568D36::W055F2101::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00749677(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074968e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::W055F2101>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007496d4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007496eb(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::W78962C4C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00749731(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007497af(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007b3730();
    *puVar2 = W01568D36::W882E7A31::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00749bbc(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00749aa9(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x749ab5;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W01568D36::W882E7A31::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W01568D36::W882E7A31::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_00749ba5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00749bbc(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::W882E7A31>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00749c02(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00749c19(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::W42BA1F4C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00749c5f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00749e48)

undefined4 * FUN_00749dd5(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x4c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0074a19c();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0074a02c(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x74a038;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W01568D36::WF9B8CE17::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W01568D36::WF9B8CE17::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0074a128(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074a13f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::WDEC9ECFC>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0074a185(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074a19c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::WF9B8CE17>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0074a1e2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0074a2d3)

undefined4 * FUN_0074a260(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0074a5ca();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1);
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0074a4b7(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x74a4c3;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W01568D36::W1DF2CC8E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W01568D36::W1DF2CC8E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0074a5b3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074a5ca(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::W1DF2CC8E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0074a610(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0074a68e(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007b3730();
    *puVar2 = W01568D36::WED4836F1::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0074aa9a(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0074a987(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x74a993;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W01568D36::WED4836F1::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W01568D36::WED4836F1::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0074aa83(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074aa9a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::WED4836F1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0074aae0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074aaf7(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::W0C6C560F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0074ab3d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0074abbb(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x24);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0075f7cc(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0074b008(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0074aef5(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x74af01;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W01568D36::WD9178DFE::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W01568D36::WD9178DFE::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0074aff1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074b008(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::WD9178DFE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0074b04e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074b065(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::WD50E33A8>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0074b0ab(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x0074b19f)

undefined4 * FUN_0074b129(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0x3c);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_0074b5b9();
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c();
    if (param_3 != 0) {
      FUN_0040127a();
    }
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&param_3);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0074b4a6(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x74b4b2;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                   &W01568D36::W0B7C184E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W88619A38::WC0042CBE::RTTI_Type_Descriptor,
                           &W01568D36::W0B7C184E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void Catch_All_0074b5a2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074b5b9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::W0B7C184E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0074b5ff(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074b616(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W01568D36::WFA9BF9A5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0074b65c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0074b738(int param_1)

{
  if (*(int *)(param_1 + 0x11c) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x114) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0xf8) != 0) {
    FUN_0040127a();
  }
  FUN_004f8d32(param_1);
  return;
}



void FUN_0074b795(void)

{
  undefined4 *puVar1;
  undefined4 local_8bc;
  undefined4 local_8b8;
  uint uStack_8b4;
  undefined auStack_8a4 [8];
  undefined4 *local_89c;
  undefined local_88c [16];
  undefined4 *local_87c;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4e04a;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_8a4;
  uStack_8b4 = DAT_0323f878 ^ (uint)&stack0xfffff750;
  ExceptionList = &local_14;
  local_87c = &local_8bc;
  local_8bc = 0xa0c;
  local_8b8 = 8;
  puVar1 = (undefined4 *)FUN_00465be3(local_88c);
  local_c = 0;
  local_8bc = *puVar1;
  local_89c = &local_8bc;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0074c790(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W71DA37B9::WD02563D9::vftable;
  in_EAX[2] = 0;
  in_EAX[10] = 0;
  in_EAX[0x12] = 0;
  in_EAX[0x1a] = 0;
  in_EAX[0x22] = 0;
  in_EAX[0x2a] = 0;
  in_EAX[0x32] = 0;
  in_EAX[0x3a] = 0;
  in_EAX[0x42] = 0;
  in_EAX[0x4a] = 0;
  in_EAX[0x52] = 0;
  in_EAX[0x5a] = 0;
  in_EAX[0x62] = 0;
  in_EAX[0x6a] = 0;
  in_EAX[0x72] = 0;
  in_EAX[0x7a] = 0;
  in_EAX[0x82] = 0;
  in_EAX[0x8a] = 0;
  in_EAX[0x92] = 0;
  in_EAX[0x9a] = 0;
  in_EAX[0xa2] = 0;
  in_EAX[0xaa] = 0;
  in_EAX[0xb2] = 0;
  in_EAX[0xba] = 0;
  in_EAX[0xc2] = 0;
  in_EAX[0xca] = 0;
  in_EAX[0xd2] = 0;
  in_EAX[0xda] = 0;
  in_EAX[0xe2] = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0074c83b(undefined4 *param_1)

{
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  FUN_00507e58();
  *param_1 = W71DA37B9::W57E5C935::vftable;
  return;
}



void FUN_0074ca40(void)

{
  int iVar1;
  undefined4 *in_EAX;
  undefined4 local_8 [2];
  
  if (local_8 != in_EAX) {
    *in_EAX = 0;
  }
  iVar1 = in_EAX[1];
  in_EAX[1] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
    return;
  }
  return;
}



void FUN_0074ca62(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd48b1;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0074caab(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0074cae6(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::W5B5D0942>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W5B5D0942*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0074cae6(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::W5B5D0942>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W5B5D0942*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::W5B5D0942>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W5B5D0942*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_0074cb2f(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cb40(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cb51(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cb62(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cb76(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cb8a(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cb9e(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cbb2(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cbc6(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cbda(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cbee(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cc02(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cc16(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cc2a(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cc3e(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cc52(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cc66(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cc7a(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cc8e(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cca2(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074ccb6(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074ccca(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074ccde(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074ccf2(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cd06(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cd1a(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cd2e(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void __fastcall FUN_0074cd42(int param_1)

{
  FUN_00607a72(param_1 + 8);
  return;
}



void FUN_0074cd56(undefined4 *param_1,int param_2)

{
  *param_1 = 0;
  param_1[1] = param_2 + 5000;
  return;
}



int FUN_0074cd6d(void)

{
  int *unaff_ESI;
  int local_c;
  int local_8;
  
  local_c = 0;
  local_8 = 0;
  if (*unaff_ESI != 0) {
    FUN_00ba3ea1(&local_c);
  }
  if (unaff_ESI[2] != 0) {
    FUN_00ba3ea1(&local_8);
  }
  return local_8 + local_c;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0074cda3(int *param_1_00,undefined4 param_1)

{
  undefined4 uStack_4c;
  undefined4 uStack_48;
  int **ppiStack_44;
  int *piStack_40;
  int *piStack_3c;
  int local_28 [4];
  int **local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x74cdaf;
  local_14 = 0;
  local_18 = &piStack_40;
  ppiStack_44 = &piStack_40;
  uStack_48 = 0x74cdc0;
  piStack_40 = param_1_00;
  piStack_3c = param_1_00;
  (**(code **)(*param_1_00 + 0x10))();
  local_18 = (int **)&uStack_4c;
  uStack_4c = 0;
  uStack_48 = 0;
  FUN_0069aa33();
  piStack_40 = (int *)0x74cdde;
  FUN_0074cdfc();
  local_8 = 0;
  piStack_40 = local_28;
  local_14 = 1;
  ppiStack_44 = (int **)0x74cdf2;
  FUN_0074cea2();
  return param_1;
}



void FUN_0074cdfc(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *in_EAX;
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0074ce25(int *param_1_00,undefined4 param_1)

{
  undefined *puVar1;
  undefined auStack_54 [4];
  undefined4 uStack_50;
  int **ppiStack_4c;
  int *piStack_48;
  int *piStack_44;
  undefined local_30 [16];
  undefined *local_20;
  int **local_1c;
  undefined4 local_18;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x74ce31;
  local_18 = 0;
  local_1c = &piStack_48;
  ppiStack_4c = &piStack_48;
  uStack_50 = 0x74ce46;
  piStack_48 = param_1_00;
  piStack_44 = param_1_00;
  (**(code **)(*param_1_00 + 0x18))();
  local_20 = auStack_54;
  puVar1 = auStack_54;
  local_8 = 1;
  (**(code **)(*param_1_00 + 0x14))(auStack_54);
  local_8 = local_8 & 0xffffff00;
  FUN_0069aa33(puVar1);
  ppiStack_4c = (int **)0x74ce6f;
  FUN_0074cdfc();
  local_8 = 0;
  ppiStack_4c = (int **)local_30;
  local_18 = 1;
  uStack_50 = 0x74ce7f;
  FUN_0074cea2();
  return param_1;
}



void FUN_0074ce89(void)

{
  FUN_004fe47e();
  FUN_004fe47e();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_0074cea2(int param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c1154b;
  if (*(int *)(param_1 + 0xc) != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  if (*(int *)(param_1 + 4) != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074cfd8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88DE69F8::WBD627685>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0074d01e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0074d035(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W88DE69F8::W50E7336B::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_0074d052(int param_1_00,undefined2 *param_1)

{
  if (*(char *)(param_1_00 + 8) != '\0') {
    FUN_00793fd1(param_1_00 + 4,*param_1,param_1[1]);
  }
  return;
}



void __thiscall FUN_0074d071(int param_1_00,undefined2 *param_1)

{
  if (*(char *)(param_1_00 + 8) != '\0') {
    FUN_00793e55(param_1_00 + 4,*param_1,param_1[1]);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0074d090(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0xc);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W88DE69F8::WBD627685::vftable;
    puVar2[1] = param_2;
    *(undefined *)(puVar2 + 2) = 1;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0074cfd8(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0074d107(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined local_1c [8];
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x74d113;
  local_14 = 0;
  puVar1 = (undefined4 *)FUN_004fa4ad(local_1c);
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0074d155(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *local_34;
  undefined4 *local_30;
  undefined local_1c [4];
  undefined **local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x74d161;
  local_14 = 0;
  local_18 = &local_34;
  local_34 = (undefined *)0xa0c;
  local_30 = (undefined4 *)0xc7;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_30 = puVar1 + 1;
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  local_34 = &UNK_0074d198;
  FUN_0043c023();
}



undefined4 __thiscall FUN_0074d2e6(undefined4 param_1_00,byte param_1)

{
  FUN_0074d303(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0074d303(int param_1)

{
  FUN_00417fe6();
  if (*(int *)(param_1 + 0x144) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x13c) != 0) {
    FUN_0040127a();
  }
  FUN_00417fe6();
  if (*(int *)(param_1 + 300) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0x124) != 0) {
    FUN_0040127a();
  }
  FUN_0074b738(param_1);
  return;
}



void __fastcall FUN_0074d389(int param_1)

{
  int *piStack_a84;
  int *piStack_a80;
  uint uStack_a7c;
  undefined auStack_a6c [4];
  int **local_a68;
  int local_a60;
  undefined auStack_a3c [2592];
  uint local_1c;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c5f267;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_a6c;
  uStack_a7c = DAT_0323f878 ^ (uint)&stack0xfffff588;
  ExceptionList = &local_14;
  piStack_a84 = *(int **)(param_1 + 0x120);
  local_a68 = &piStack_a84;
  piStack_a80 = piStack_a84;
  local_a60 = param_1;
  (**(code **)(*piStack_a84 + 0x14))();
  (**(code **)(**(int **)(param_1 + 4) + 0x10))();
  FUN_004fa2a2();
  uStack_18 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(auStack_a3c);
}



void FUN_0074f157(void)

{
  uint uVar1;
  int local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_14;
  FUN_006d9391(&local_20);
  local_c = 0;
  if (local_20 != 0) {
    FUN_00b725b0(uVar1);
    FUN_00b72ae0();
  }
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



void FUN_0074f22c(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd49bd;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_0074f275(undefined4 *param_1_00,int param_1)

{
  undefined4 uVar1;
  
  FUN_004382a5(param_1);
  *(undefined4 *)(param_1 + 0x20) = 0;
  uVar1 = FUN_0074f22c(*param_1_00,param_1_00[1]);
  FUN_004fc9c9(uVar1);
  FUN_00507e58();
  return param_1;
}



void FUN_0074f39e(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0074f414(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::W76FE6876>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W76FE6876*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0074f3d9(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0074f45d(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::W76FE6876,class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::W76FE6876*>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0074f414(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::W76FE6876>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W76FE6876*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::W76FE6876>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W76FE6876*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0074f45d(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  uint unaff_EBX;
  int unaff_EDI;
  
  if ((unaff_EDI == 0) || (unaff_EDI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_00754b70();
    }
    if (unaff_EDI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EBX + 0xc);
  }
  else {
    if (unaff_EDI != 2) {
      if (unaff_EDI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::W76FE6876,class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::W76FE6876*>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EBX);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::W76FE6876,class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::W76FE6876*>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[3];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



void Catch_All_0074f504(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0074f606(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88DE69F8::W739360CD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0074f64c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0074f663(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0xa4);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00794e64(pvVar2,param_2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0074f606(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



void __fastcall FUN_0074f6da(undefined4 *param_1)

{
  *param_1 = W01568D36::W1A4677F1::vftable;
  FUN_004d9011(param_1);
  return;
}



undefined4 * __thiscall FUN_0074f6e7(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W01568D36::W1A4677F1::vftable;
  FUN_004d9011(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0075004d(void)

{
  undefined4 in_EAX;
  int unaff_EBP;
  
  *(BADSPACEBASE **)(unaff_EBP + 0x15) = register0x00000010;
                    // WARNING: Subroutine does not return
  FUN_0043c023(CONCAT31((int3)((uint)in_EAX >> 8),(char)in_EAX + -0x3a) + 4);
}



void FUN_00750051(void)

{
  int in_EAX;
  int unaff_EBP;
  
  *(BADSPACEBASE **)(unaff_EBP + 0x14) = register0x00000010;
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 4);
}



undefined4 __thiscall FUN_007501e0(undefined4 param_1_00,byte param_1)

{
  FUN_007501fd(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007501fd(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 5;
  puVar1 = auStack_24;
  auStack_24[0] = 0x75021b;
  FUN_005fe886();
  if (param_1[0x12] != 0) {
    puVar1[-1] = 0x750227;
    FUN_0040127a();
  }
  local_8._0_1_ = 4;
  if (param_1[0x10] != 0) {
    puVar1[-1] = 0x750237;
    FUN_0040127a();
  }
  local_8._0_1_ = 3;
  if (param_1[0xe] != 0) {
    puVar1[-1] = 0x750247;
    FUN_0040127a();
  }
  local_8._0_1_ = 2;
  if (param_1[0xc] != 0) {
    puVar1[-1] = 0x750257;
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (param_1[10] != 0) {
    puVar1[-1] = 0x750267;
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (param_1[8] != 0) {
    puVar1[-1] = 0x750277;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  puVar1[-1] = param_1;
  *param_1 = W01568D36::W1A4677F1::vftable;
  puVar1[-2] = 0x750287;
  FUN_004d9011();
  puVar1[-1] = 0x75028c;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0075028f(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *local_34;
  undefined4 *local_30;
  undefined local_1c [4];
  undefined **local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x75029b;
  local_14 = 0;
  local_18 = &local_34;
  local_34 = (undefined *)0xa0c;
  local_30 = (undefined4 *)0x9;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_30 = puVar1 + 1;
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  local_34 = &UNK_007502d2;
  FUN_0043c023();
}



int __fastcall FUN_007502f3(int param_1)

{
  return *(int *)(param_1 + 0x24) + 0x4c;
}



void __thiscall FUN_007502fa(int param_1_00,undefined4 param_1)

{
  int iVar1;
  char cVar2;
  undefined4 extraout_EDX;
  
  FUN_005fe819(param_1);
  iVar1 = *(int *)(param_1_00 + 0x2c);
  cVar2 = FUN_007b292e();
  if (cVar2 != '\0') {
    FUN_004860b9(extraout_EDX);
  }
  cVar2 = FUN_007b292e();
  if (cVar2 != '\0') {
    FUN_004860b9(iVar1 + 0x4c);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00750347(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  undefined local_24 [4];
  int local_20;
  void *local_1c;
  undefined4 local_18;
  uint local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  *param_1 = 0;
  param_1[1] = 0;
  local_8 = 0;
  local_18 = 1;
  local_1c = (void *)FUN_007b2d68();
  local_14 = 0;
  if ((*(int *)(param_1_00 + 0x5c) - *(int *)(param_1_00 + 0x58)) / 0x74 != 0) {
    do {
      FUN_005fe8b3(local_14);
      iVar1 = FUN_004f61ef();
      if ((void *)iVar1 == local_1c) {
        local_1c = operator_new(0x74);
        local_8 = 1;
        if (local_1c != (void *)0x0) {
          FUN_005fe8b3(local_14);
          FUN_004f615e(local_1c);
        }
        local_8 = local_8 & 0xffffff00;
        FUN_005fe97c(local_24);
        local_8 = 2;
        FUN_004fe47e();
        local_8 = local_8 & 0xffffff00;
        if (local_20 == 0) {
          return param_1;
        }
        FUN_0040127a();
        return param_1;
      }
      local_14 = local_14 + 1;
    } while (local_14 < (uint)((*(int *)(param_1_00 + 0x5c) - *(int *)(param_1_00 + 0x58)) / 0x74));
  }
  return param_1;
}



void FUN_00750414(void)

{
  FUN_007b2d68();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00750684(undefined4 *param_1_00,byte param_1)

{
  if (param_1_00[0x60] != 0) {
    FUN_0040127a();
  }
  FUN_00485ebe();
  if (param_1_00[8] != 0) {
    FUN_0040127a();
  }
  *param_1_00 = W01568D36::W1A4677F1::vftable;
  FUN_004d9011(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_007506f0(int *param_1_00,undefined4 param_1)

{
  undefined *puVar1;
  undefined auStack_54 [4];
  undefined4 uStack_50;
  int **ppiStack_4c;
  int *piStack_48;
  int *piStack_44;
  undefined local_30 [16];
  undefined *local_20;
  int **local_1c;
  undefined4 local_18;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x7506fc;
  local_18 = 0;
  local_1c = &piStack_48;
  ppiStack_4c = &piStack_48;
  uStack_50 = 0x750711;
  piStack_48 = param_1_00;
  piStack_44 = param_1_00;
  (**(code **)(*param_1_00 + 8))();
  local_20 = auStack_54;
  puVar1 = auStack_54;
  local_8 = 1;
  (**(code **)(*param_1_00 + 4))(auStack_54);
  local_8 = local_8 & 0xffffff00;
  FUN_0069aa33(puVar1);
  ppiStack_4c = (int **)0x75073a;
  FUN_0074cdfc();
  local_8 = 0;
  ppiStack_4c = (int **)local_30;
  local_18 = 1;
  uStack_50 = 0x75074a;
  FUN_0074cea2();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_00750754(int *param_1_00,undefined4 param_1)

{
  undefined4 uStack_4c;
  undefined4 uStack_48;
  int **ppiStack_44;
  int *piStack_40;
  int *piStack_3c;
  int local_28 [4];
  int **local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x750760;
  local_14 = 0;
  local_18 = &piStack_40;
  ppiStack_44 = &piStack_40;
  uStack_48 = 0x750771;
  piStack_40 = param_1_00;
  piStack_3c = param_1_00;
  (**(code **)(*param_1_00 + 0xc))();
  local_18 = (int **)&uStack_4c;
  uStack_4c = 0;
  uStack_48 = 0;
  FUN_0069aa33();
  piStack_40 = (int *)0x75078f;
  FUN_0074cdfc();
  local_8 = 0;
  piStack_40 = local_28;
  local_14 = 1;
  ppiStack_44 = (int **)0x7507a3;
  FUN_0074cea2();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_007507ad(int *param_1_00,undefined4 param_1)

{
  undefined *puVar1;
  undefined auStack_54 [4];
  undefined4 uStack_50;
  int **ppiStack_4c;
  int *piStack_48;
  int *piStack_44;
  undefined local_30 [16];
  undefined *local_20;
  int **local_1c;
  undefined4 local_18;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x7507b9;
  local_18 = 0;
  local_1c = &piStack_48;
  ppiStack_4c = &piStack_48;
  uStack_50 = 0x7507ce;
  piStack_48 = param_1_00;
  piStack_44 = param_1_00;
  (**(code **)(*param_1_00 + 0x14))();
  local_20 = auStack_54;
  puVar1 = auStack_54;
  local_8 = 1;
  (**(code **)(*param_1_00 + 0x10))(auStack_54);
  local_8 = local_8 & 0xffffff00;
  FUN_0069aa33(puVar1);
  ppiStack_4c = (int **)0x7507f7;
  FUN_0074cdfc();
  local_8 = 0;
  ppiStack_4c = (int **)local_30;
  local_18 = 1;
  uStack_50 = 0x750807;
  FUN_0074cea2();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_00750811(int *param_1_00,undefined4 param_1)

{
  undefined *puVar1;
  undefined auStack_54 [4];
  undefined4 uStack_50;
  int **ppiStack_4c;
  int *piStack_48;
  int *piStack_44;
  undefined local_30 [16];
  undefined *local_20;
  int **local_1c;
  undefined4 local_18;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x75081d;
  local_18 = 0;
  local_1c = &piStack_48;
  ppiStack_4c = &piStack_48;
  uStack_50 = 0x750832;
  piStack_48 = param_1_00;
  piStack_44 = param_1_00;
  (**(code **)(*param_1_00 + 0x1c))();
  local_20 = auStack_54;
  puVar1 = auStack_54;
  local_8 = 1;
  (**(code **)(*param_1_00 + 0x18))(auStack_54);
  local_8 = local_8 & 0xffffff00;
  FUN_0069aa33(puVar1);
  ppiStack_4c = (int **)0x75085b;
  FUN_0074cdfc();
  local_8 = 0;
  ppiStack_4c = (int **)local_30;
  local_18 = 1;
  uStack_50 = 0x75086b;
  FUN_0074cea2();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_00750875(int *param_1_00,undefined4 param_1)

{
  undefined4 uStack_4c;
  undefined4 uStack_48;
  int **ppiStack_44;
  int *piStack_40;
  int *piStack_3c;
  int local_28 [4];
  int **local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x750881;
  local_14 = 0;
  local_18 = &piStack_40;
  ppiStack_44 = &piStack_40;
  uStack_48 = 0x750892;
  piStack_40 = param_1_00;
  piStack_3c = param_1_00;
  (**(code **)(*param_1_00 + 0x20))();
  local_18 = (int **)&uStack_4c;
  uStack_4c = 0;
  uStack_48 = 0;
  FUN_0069aa33();
  piStack_40 = (int *)0x7508b0;
  FUN_0074cdfc();
  local_8 = 0;
  piStack_40 = local_28;
  local_14 = 1;
  ppiStack_44 = (int **)0x7508c4;
  FUN_0074cea2();
  return param_1;
}



undefined4 FUN_00750935(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00750965(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00750995(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007509c5(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007509f5(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00750a25(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00750a55(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00750a85(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00750ab5(void)

{
  return 0x59e758ad;
}



undefined4 FUN_00750b22(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00750b52(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00750b82(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00750bb2(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00750be2(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00750c12(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00750c42(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00750c72(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00750ca2(void)

{
  return 0xb6ec8899;
}



undefined4 * __thiscall FUN_00750ca8(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W01568D36::W31AECA30::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00750df0(int param_1)

{
  undefined4 uStack_618;
  undefined4 uStack_614;
  int **ppiStack_610;
  int *piStack_60c;
  int *piStack_608;
  uint uStack_604;
  undefined auStack_5f4 [26];
  undefined uStack_5da;
  undefined uStack_5d9;
  undefined4 uStack_5cc;
  undefined auStack_5c8 [16];
  int local_5b8;
  undefined4 uStack_5ac;
  undefined4 *puStack_59c;
  int **ppiStack_590;
  uint local_1c;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c54610;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_5f4;
  uStack_604 = DAT_0323f878 ^ (uint)&stack0xfffffa00;
  ExceptionList = &local_14;
  piStack_608 = (int *)0x750e41;
  local_5b8 = param_1;
  uStack_5da = (**(code **)(**(int **)(param_1 + 0x120) + 0x1c))();
  piStack_608 = (int *)0x750e50;
  uStack_5d9 = (**(code **)(**(int **)(param_1 + 0x120) + 0x20))();
  piStack_608 = (int *)0x750e5f;
  uStack_5ac = (**(code **)(**(int **)(param_1 + 0x120) + 0x24))();
  piStack_60c = *(int **)(param_1 + 0x120);
  ppiStack_590 = &piStack_60c;
  ppiStack_610 = &piStack_60c;
  uStack_614 = 0x750e77;
  piStack_608 = piStack_60c;
  (**(code **)(*piStack_60c + 0x14))();
  uStack_614 = 0x750e7f;
  (**(code **)(**(int **)(param_1 + 4) + 0x10))();
  uStack_614 = 0x750e8a;
  FUN_004fa2a2();
  uStack_18 = 0;
  puStack_59c = &uStack_618;
  uStack_618 = uStack_5cc;
                    // WARNING: Subroutine does not return
  FUN_0043c023(auStack_5c8);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_0075239b(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7523b3;
  FUN_007523c3();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007523ba;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_0075239b(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7523b3;
  FUN_007523c3();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007523ba;
  FUN_00a3f6a1();
}



void FUN_007523c3(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_007523f7(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_007523f7(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_007a3090(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00696a87();
    FUN_007a2d61();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void Catch_All_00752555(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_007525b2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00752643(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007526b9(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::W65453AC4>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W65453AC4*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0075267e(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00752702(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::W65453AC4,class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::W65453AC4*>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007526b9(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::W65453AC4>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W65453AC4*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::W65453AC4>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W65453AC4*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00752702(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  uint unaff_EBX;
  int unaff_EDI;
  
  if ((unaff_EDI == 0) || (unaff_EDI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_00754b70();
    }
    if (unaff_EDI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EBX + 0xc);
  }
  else {
    if (unaff_EDI != 2) {
      if (unaff_EDI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::W65453AC4,class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::W65453AC4*>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EBX);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::W65453AC4,class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::W65453AC4*>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[3];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



undefined4 * __thiscall FUN_007527d6(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W01568D36::W5D9FE4D3::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00752861(int *param_1_00,undefined4 *param_1,undefined4 param_2,int param_3)

{
  int *piVar1;
  undefined4 extraout_ECX;
  undefined auStack_74 [28];
  undefined4 uStack_58;
  undefined4 uStack_54;
  undefined **ppuStack_50;
  undefined *puStack_4c;
  undefined *puStack_48;
  undefined local_34 [16];
  undefined local_24 [4];
  undefined *local_20;
  undefined **local_1c;
  undefined4 local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_18 = 0;
  puStack_48 = (undefined *)&param_2;
  puStack_4c = local_24;
  local_8 = 1;
  ppuStack_50 = (undefined **)0x752887;
  piVar1 = (int *)FUN_007546c8();
  local_11 = *piVar1 != 0;
  if (local_20 != (undefined *)0x0) {
    puStack_48 = (undefined *)0x75289b;
    FUN_0040127a();
  }
  if (local_11 == '\0') {
    *param_1 = 0;
    param_1[1] = 0;
    local_8 = local_8 >> 8;
    param_1[2] = 0;
    param_1[3] = 0;
    local_18 = 1;
  }
  else {
    puStack_48 = (undefined *)0x7528a7;
    piVar1 = (int *)(**(code **)(*param_1_00 + 4))();
    local_1c = &puStack_4c;
    ppuStack_50 = &puStack_4c;
    uStack_54 = 0x7528b6;
    (**(code **)(*piVar1 + 0x20))();
    local_8._0_1_ = 2;
    local_20 = auStack_74;
    ppuStack_50 = (undefined **)extraout_ECX;
    FUN_004180b1();
    FUN_0076c095(&uStack_54);
    local_8._0_1_ = 1;
    uStack_58 = 0x7528e8;
    FUN_0069aa33();
    puStack_48 = (undefined *)0x7528f0;
    FUN_0074cdfc();
    puStack_48 = local_34;
    local_18 = 1;
    puStack_4c = (undefined *)0x752900;
    FUN_0074cea2();
    local_8 = (uint)local_8._1_3_;
  }
  local_8 = local_8 << 8;
  if (param_3 != 0) {
    puStack_48 = (undefined *)0x75292b;
    FUN_0040127a();
  }
  return param_1;
}



undefined4 FUN_00752935(void)

{
  return 0x39d53119;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_007529a9(int *param_1_00,undefined4 *param_1,undefined4 param_2,int param_3)

{
  int *piVar1;
  undefined4 extraout_ECX;
  undefined4 uStack_74;
  undefined **ppuStack_70;
  undefined auStack_6c [20];
  undefined4 uStack_58;
  undefined4 uStack_54;
  undefined **ppuStack_50;
  undefined *puStack_4c;
  undefined *puStack_48;
  undefined local_34 [16];
  undefined local_24 [4];
  undefined **local_20;
  undefined **local_1c;
  undefined4 local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_18 = 0;
  puStack_48 = (undefined *)&param_2;
  puStack_4c = local_24;
  local_8 = 1;
  ppuStack_50 = (undefined **)0x7529cf;
  piVar1 = (int *)FUN_0075477e();
  local_11 = *piVar1 != 0;
  if (local_20 != (undefined **)0x0) {
    puStack_48 = (undefined *)0x7529e3;
    FUN_0040127a();
  }
  if (local_11 == '\0') {
    puStack_48 = (undefined *)&param_2;
    puStack_4c = local_24;
    ppuStack_50 = (undefined **)0x752a6d;
    piVar1 = (int *)FUN_00754834();
    local_11 = *piVar1 != 0;
    if (local_20 != (undefined **)0x0) {
      puStack_48 = (undefined *)0x752a81;
      FUN_0040127a();
    }
    if (local_11 == '\0') {
      *param_1 = 0;
      param_1[1] = 0;
      param_1[2] = 0;
      param_1[3] = 0;
      local_18 = 1;
      goto LAB_00752af4;
    }
    puStack_48 = (undefined *)0x752a8d;
    piVar1 = (int *)(**(code **)(*param_1_00 + 4))();
    local_20 = &puStack_4c;
    ppuStack_50 = &puStack_4c;
    uStack_54 = 0x752a9c;
    (**(code **)(*piVar1 + 0x20))();
    local_8._0_1_ = 3;
    local_1c = (undefined **)&uStack_74;
    ppuStack_50 = (undefined **)extraout_ECX;
    FUN_004180b1();
    FUN_0076c095(&uStack_54);
    local_8 = CONCAT31(local_8._1_3_,1);
    uStack_58 = 0x752ace;
    FUN_0069aa33();
    puStack_48 = (undefined *)0x752ad6;
    FUN_0074cdfc();
  }
  else {
    local_20 = (undefined **)auStack_6c;
    ppuStack_70 = (undefined **)0x752a01;
    local_1c = &puStack_4c;
    FUN_004180b1();
    uStack_74 = 0x752a07;
    ppuStack_70 = &puStack_4c;
    FUN_0076c095();
    local_8._0_1_ = 2;
    local_20 = (undefined **)&uStack_74;
    FUN_004180b1();
    FUN_0076c095(&uStack_54);
    local_8 = CONCAT31(local_8._1_3_,1);
    uStack_58 = 0x752a3a;
    FUN_0069aa33();
    puStack_48 = (undefined *)0x752a42;
    FUN_0074cdfc();
  }
  puStack_48 = local_34;
  local_18 = 1;
  puStack_4c = (undefined *)0x752a52;
  FUN_0074cea2();
LAB_00752af4:
  local_8 = local_8 & 0xffffff00;
  if (param_3 != 0) {
    puStack_48 = (undefined *)0x752afb;
    FUN_0040127a();
  }
  return param_1;
}



undefined4 FUN_00752b05(void)

{
  return 0x7122beb4;
}



undefined4 * __thiscall FUN_00752b0b(undefined4 *param_1_00,byte param_1)

{
  param_1_00[1] = WC650A767::WA858CFC8::vftable;
  *param_1_00 = W01568D36::W5D9FE4D3::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00752b9d(int *param_1_00,undefined4 *param_1,undefined4 param_2,int param_3)

{
  int *piVar1;
  undefined *extraout_ECX;
  undefined auStack_78 [28];
  undefined4 uStack_5c;
  undefined auStack_58 [4];
  undefined4 uStack_54;
  undefined **ppuStack_50;
  undefined *puStack_4c;
  undefined *puStack_48;
  undefined local_34 [16];
  undefined local_24 [4];
  undefined *local_20;
  undefined **local_1c;
  undefined4 local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_18 = 0;
  puStack_48 = (undefined *)&param_2;
  puStack_4c = local_24;
  local_8 = 1;
  ppuStack_50 = (undefined **)0x752bc3;
  piVar1 = (int *)FUN_007548ea();
  local_11 = *piVar1 != 0;
  if (local_20 != (undefined *)0x0) {
    puStack_48 = (undefined *)0x752bd7;
    FUN_0040127a();
  }
  if (local_11 == '\0') {
    puStack_48 = (undefined *)&param_2;
    puStack_4c = local_24;
    ppuStack_50 = (undefined **)0x752c54;
    piVar1 = (int *)FUN_007549a0();
    local_11 = *piVar1 != 0;
    if (local_20 != (undefined *)0x0) {
      puStack_4c = (undefined *)0x752c68;
      FUN_0040127a();
    }
    local_8 = local_8 >> 8;
    *param_1 = 0;
    param_1[1] = 0;
    param_1[2] = 0;
    local_18 = 1;
    param_1[3] = 0;
  }
  else {
    puStack_48 = (undefined *)0x752be3;
    piVar1 = (int *)(**(code **)(*param_1_00 + 4))();
    local_1c = &puStack_4c;
    ppuStack_50 = &puStack_4c;
    uStack_54 = 0x752bf2;
    puStack_48 = extraout_ECX;
    (**(code **)(*piVar1 + 0x20))();
    local_8._0_1_ = 2;
    local_20 = auStack_78;
    FUN_004180b1();
    FUN_0076c095(auStack_58);
    local_8._0_1_ = 1;
    uStack_5c = 0x752c24;
    FUN_0069aa33();
    puStack_4c = (undefined *)0x752c2c;
    FUN_0074cdfc();
    puStack_4c = local_34;
    local_18 = 1;
    ppuStack_50 = (undefined **)0x752c3c;
    FUN_0074cea2();
    local_8 = (uint)local_8._1_3_;
  }
  local_8 = local_8 << 8;
  if (param_3 != 0) {
    puStack_4c = (undefined *)0x752c88;
    FUN_0040127a();
  }
  return param_1;
}



undefined4 FUN_00752c92(void)

{
  return 0x1478b250;
}



void __fastcall FUN_00752dc3(int param_1)

{
  undefined4 uStack_628;
  undefined4 uStack_624;
  int **ppiStack_620;
  int *piStack_61c;
  int *piStack_618;
  uint uStack_614;
  undefined auStack_604 [16];
  undefined4 uStack_5f4;
  undefined auStack_5f0 [4];
  undefined4 uStack_5ec;
  undefined uStack_5da;
  undefined uStack_5d9;
  int local_5d8;
  undefined4 *puStack_5b4;
  int **ppiStack_5a8;
  uint local_1c;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c54434;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_604;
  uStack_614 = DAT_0323f878 ^ (uint)&stack0xfffff9f0;
  ExceptionList = &local_14;
  piStack_618 = (int *)0x752e14;
  local_5d8 = param_1;
  uStack_5d9 = (**(code **)(**(int **)(param_1 + 0x120) + 0x1c))();
  piStack_618 = (int *)0x752e23;
  uStack_5da = (**(code **)(**(int **)(param_1 + 0x120) + 0x20))();
  piStack_618 = (int *)0x752e32;
  uStack_5ec = (**(code **)(**(int **)(param_1 + 0x120) + 0x24))();
  piStack_61c = *(int **)(param_1 + 0x120);
  ppiStack_5a8 = &piStack_61c;
  ppiStack_620 = &piStack_61c;
  uStack_624 = 0x752e4a;
  piStack_618 = piStack_61c;
  (**(code **)(*piStack_61c + 0x14))();
  uStack_624 = 0x752e52;
  (**(code **)(**(int **)(param_1 + 4) + 0x10))();
  uStack_624 = 0x752e5d;
  FUN_004fa2a2();
  uStack_18 = 0;
  puStack_5b4 = &uStack_628;
  uStack_628 = uStack_5f4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(auStack_5f0);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007546c8(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7546d4;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::W47730792::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::W47730792::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0075477e(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x75478a;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::WE15D6DE9::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::WE15D6DE9::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00754834(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x754840;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::W03B5DE0E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::W03B5DE0E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007548ea(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7548f6;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::WC3002645::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::WC3002645::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007549a0(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7549ac;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::W46759775::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::W46759775::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_00754b70(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *in_EAX;
  unaff_ESI[1] = in_EAX[1];
  unaff_ESI[2] = in_EAX[2];
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 3);
}



void Catch_All_00754bd5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00754c32(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00754c8f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00754d20(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00754d96(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::WC31CCF5F>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WC31CCF5F*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00754d5b(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00754ddf(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::WC31CCF5F,class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::WC31CCF5F*>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00754d96(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::WC31CCF5F>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WC31CCF5F*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::WC31CCF5F>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WC31CCF5F*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_00754ddf(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  uint unaff_EBX;
  int unaff_EDI;
  
  if ((unaff_EDI == 0) || (unaff_EDI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_00754b70();
    }
    if (unaff_EDI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EBX + 0xc);
  }
  else {
    if (unaff_EDI != 2) {
      if (unaff_EDI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::WC31CCF5F,class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::WC31CCF5F*>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EBX);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::WC31CCF5F,class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::WC31CCF5F*>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[3];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_00754e40(int *param_1_00,undefined4 param_1)

{
  undefined *puVar1;
  undefined auStack_54 [4];
  undefined4 uStack_50;
  int **ppiStack_4c;
  int *piStack_48;
  int *piStack_44;
  undefined local_30 [16];
  undefined *local_20;
  int **local_1c;
  undefined4 local_18;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x754e4c;
  local_18 = 0;
  local_1c = &piStack_48;
  ppiStack_4c = &piStack_48;
  uStack_50 = 0x754e61;
  piStack_48 = param_1_00;
  piStack_44 = param_1_00;
  (**(code **)(*param_1_00 + 0x28))();
  local_20 = auStack_54;
  puVar1 = auStack_54;
  local_8 = 1;
  (**(code **)(*param_1_00 + 0x24))(auStack_54);
  local_8 = local_8 & 0xffffff00;
  FUN_0069aa33(puVar1);
  ppiStack_4c = (int **)0x754e8a;
  FUN_0074cdfc();
  local_8 = 0;
  ppiStack_4c = (int **)local_30;
  local_18 = 1;
  uStack_50 = 0x754e9a;
  FUN_0074cea2();
  return param_1;
}



undefined4 FUN_00754ea4(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00754ed4(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00754f04(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00754f34(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00754f64(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00754f94(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00754fc4(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00754ff4(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00755024(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00755054(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00755084(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007550b4(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007550e4(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00755114(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00755144(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00755174(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007551a4(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007551d4(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00755204(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00755234(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00755264(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00755294(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007552c4(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007552f4(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00755324(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00755354(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00755384(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007553b4(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007553e4(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00755414(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00755778(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *local_34;
  undefined4 *local_30;
  undefined local_1c [4];
  undefined **local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x755784;
  local_14 = 0;
  local_18 = &local_34;
  local_34 = (undefined *)0xa0c;
  local_30 = (undefined4 *)0xf9;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_30 = puVar1 + 1;
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  local_34 = &UNK_007557bb;
  FUN_0043c023();
}



undefined4 FUN_007557dc(void)

{
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00755bb4(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x755bc0;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WE505E8AC::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WE505E8AC::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00755c6a(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x755c76;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WBA98F8A6::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WBA98F8A6::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00755d20(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x755d2c;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WA29E4920::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WA29E4920::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00755dd6(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x755de2;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W582B0C7D::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W582B0C7D::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00755e8c(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x755e98;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W0323DFAE::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W0323DFAE::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00755f42(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x755f4e;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WC5243683::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WC5243683::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00755ff8(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x756004;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WD8066114::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WD8066114::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_007565b6(void)

{
  FUN_007b2498();
  return;
}



void FUN_00756bb6(void)

{
  FUN_007b2498();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_007573c4(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 300) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x124) != 0) {
    FUN_0040127a();
  }
  FUN_0074b738(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0075741f(void)

{
  undefined4 *puVar1;
  undefined4 local_ae4;
  undefined4 local_ae0;
  uint uStack_adc;
  undefined auStack_acc [16];
  undefined local_abc [20];
  undefined4 *local_aa8;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4de8d;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_acc;
  uStack_adc = DAT_0323f878 ^ (uint)&stack0xfffff528;
  ExceptionList = &local_14;
  local_aa8 = &local_ae4;
  local_ae4 = 0xa0c;
  local_ae0 = 200;
  puVar1 = (undefined4 *)FUN_00465be3(local_abc);
  local_c = 0;
  local_ae4 = *puVar1;
  local_aa8 = &local_ae4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00758828(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd4e59;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_00758871(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007588ac(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::WF76DD67F>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WF76DD67F*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007588ac(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::WF76DD67F>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WF76DD67F*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::WF76DD67F>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WF76DD67F*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00758e47(int param_1_00,byte param_1)

{
  if (*(int *)(param_1_00 + 0x30) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x28) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_004d9011(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_00758fd7(int param_1_00,byte param_1)

{
  FUN_00417fe6();
  if (*(int *)(param_1_00 + 0x134) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 300) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1_00 + 0x124) != 0) {
    FUN_0040127a();
  }
  FUN_0074b738(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00759050(void)

{
  undefined4 *puVar1;
  undefined4 local_afc;
  undefined4 local_af8;
  uint uStack_af4;
  undefined auStack_ae4 [12];
  undefined4 *local_ad8;
  undefined local_ab4 [2712];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4dc15;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_ae4;
  uStack_af4 = DAT_0323f878 ^ (uint)&stack0xfffff510;
  ExceptionList = &local_14;
  local_ad8 = &local_afc;
  local_afc = 0xa0c;
  local_af8 = 0xc9;
  puVar1 = (undefined4 *)FUN_00465be3(local_ab4);
  local_ad8 = &local_afc;
  local_c = 0;
  local_afc = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0075aa1a(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd4ec9;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0075aa63(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0075aad9(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::W78962C4C>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W78962C4C*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0075aa9e(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0075ab22(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::W78962C4C>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W78962C4C*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0075aad9(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::W78962C4C>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W78962C4C*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::W78962C4C>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W78962C4C*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0075ab22(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::W78962C4C>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W78962C4C*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::W78962C4C>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W78962C4C*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_0075ab6b(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_005d513b();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0075ab81(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88DE69F8::W6C1D8E87>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0075abc7(void)

{
  int iVar1;
  code *pcVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  if (iVar1 != 0) {
    FUN_005d513b();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_0075abe4(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x5c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007eb6ba(puVar2,param_2,param_3,param_4,param_5);
    *puVar2 = W88DE69F8::W6C1D8E87::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0075ab81(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_0075ae60(void)

{
  undefined4 *puVar1;
  undefined4 local_81c;
  undefined4 local_818;
  uint uStack_814;
  undefined auStack_804 [16];
  undefined4 *local_7f4;
  undefined local_7ec [2000];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4d8b6;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_804;
  uStack_814 = DAT_0323f878 ^ (uint)&stack0xfffff7f0;
  ExceptionList = &local_14;
  local_7f4 = &local_81c;
  local_81c = 0xa0c;
  local_818 = 0xee;
  puVar1 = (undefined4 *)FUN_00465be3(local_7ec);
  local_c = 0;
  local_81c = *puVar1;
  local_7f4 = &local_81c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0075bc01(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd4f51;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0075bc4a(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0075bcc0(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::W42BA1F4C>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W42BA1F4C*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0075bc85(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0075bd09(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::W42BA1F4C>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W42BA1F4C*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0075bcc0(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::W42BA1F4C>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W42BA1F4C*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::W42BA1F4C>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W42BA1F4C*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_0075bd09(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::W42BA1F4C>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W42BA1F4C*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::W42BA1F4C>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W42BA1F4C*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_0075be1d(int param_1)

{
  int *piStack_99c;
  int *piStack_998;
  uint uStack_994;
  int **local_984 [5];
  int local_970 [597];
  uint local_1c;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c4d6d8;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_984;
  uStack_994 = DAT_0323f878 ^ (uint)&stack0xfffff670;
  ExceptionList = &local_14;
  piStack_99c = *(int **)(param_1 + 0x120);
  local_984[0] = &piStack_99c;
  piStack_998 = piStack_99c;
  local_970[0] = param_1;
  (**(code **)(*piStack_99c + 0x14))();
  (**(code **)(**(int **)(param_1 + 4) + 0x10))();
  FUN_004fa2a2();
  uStack_18 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_970);
}



void FUN_0075d7c0(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0075d859(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::WDEC9ECFC,class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::WDEC9ECFC*>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0075d859(void)

{
  bool bVar1;
  TypeDescriptor **in_EAX;
  TypeDescriptor *pTVar2;
  uint unaff_EBX;
  int unaff_EDI;
  
  if ((unaff_EDI == 0) || (unaff_EDI == 1)) {
    if (in_EAX != (TypeDescriptor **)0x0) {
      FUN_00754b70();
    }
    if (unaff_EDI != 1) {
      return;
    }
    pTVar2 = *(TypeDescriptor **)(unaff_EBX + 0xc);
  }
  else {
    if (unaff_EDI != 2) {
      if (unaff_EDI == 3) {
        bVar1 = type_info::operator==
                          ((type_info *)*in_EAX,
                           (type_info *)
                           &boost::_bi::
                            bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::WDEC9ECFC,class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::WDEC9ECFC*>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>_>_>
                            ::RTTI_Type_Descriptor);
        *in_EAX = (TypeDescriptor *)(-(uint)bVar1 & unaff_EBX);
        return;
      }
      *in_EAX = &boost::_bi::
                 bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::WDEC9ECFC,class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::WDEC9ECFC*>,class_boost::_bi::value<class_boost::shared_ptr<class_W8489743A::WE77C49A0>_>_>_>
                 ::RTTI_Type_Descriptor;
      *(undefined *)(in_EAX + 1) = 0;
      *(undefined *)((int)in_EAX + 5) = 0;
      return;
    }
    pTVar2 = in_EAX[3];
  }
  if (pTVar2 == (TypeDescriptor *)0x0) {
    return;
  }
  FUN_0040127a();
  return;
}



void __fastcall FUN_0075d8ba(undefined4 *param_1)

{
  *param_1 = W01568D36::W4C0DD718::vftable;
  FUN_004d9011(param_1);
  return;
}



undefined4 * __thiscall FUN_0075d8c7(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W01568D36::W4C0DD718::vftable;
  FUN_004d9011(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0075df5c(undefined4 param_1_00,byte param_1)

{
  FUN_0075df79(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0075df79(undefined4 *param_1)

{
  if (param_1[0x12] != 0) {
    FUN_0040127a();
  }
  if (param_1[0x10] != 0) {
    FUN_0040127a();
  }
  if (param_1[0xe] != 0) {
    FUN_0040127a();
  }
  if (param_1[0xc] != 0) {
    FUN_0040127a();
  }
  if (param_1[10] != 0) {
    FUN_0040127a();
  }
  if (param_1[8] != 0) {
    FUN_0040127a();
  }
  *param_1 = W01568D36::W4C0DD718::vftable;
  FUN_004d9011(param_1);
  return;
}



undefined4 FUN_0075e003(undefined4 param_1)

{
  FUN_007b261f();
  return param_1;
}



undefined4 FUN_0075e01e(undefined4 param_1)

{
  FUN_007b261f();
  return param_1;
}



undefined4 FUN_0075e039(undefined4 param_1)

{
  FUN_007b261f();
  return param_1;
}



undefined4 FUN_0075e054(undefined4 param_1)

{
  FUN_007b261f();
  return param_1;
}



undefined4 FUN_0075e06f(undefined4 param_1)

{
  FUN_007b261f();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0075e090(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *local_34;
  undefined4 *local_30;
  undefined local_1c [4];
  undefined **local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x75e09c;
  local_14 = 0;
  local_18 = &local_34;
  local_34 = (undefined *)0x5022;
  local_30 = (undefined4 *)0xbe;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_30 = puVar1 + 1;
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  local_34 = &UNK_0075e0d3;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0075e158(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE711C61D::WA78E8734>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0075e19e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0075e1b5(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WE711C61D::WA78E8734::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0075e158(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0075e2fb(undefined4 *param_1_00,byte param_1)

{
  if (param_1_00[8] != 0) {
    FUN_0040127a();
  }
  *param_1_00 = W01568D36::W4C0DD718::vftable;
  FUN_004d9011(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0075e343(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *local_34;
  undefined4 *local_30;
  undefined local_1c [4];
  undefined **local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x75e34f;
  local_14 = 0;
  local_18 = &local_34;
  local_34 = (undefined *)0x5022;
  local_30 = (undefined4 *)0xc6;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_30 = puVar1 + 1;
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  local_34 = &UNK_0075e386;
  FUN_0043c023();
}



basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *
FUN_0075e3a7(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1)

{
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  return param_1;
}



void FUN_0075e534(void)

{
  undefined4 *puVar1;
  undefined4 local_7bc;
  undefined4 local_7b8;
  uint uStack_7b4;
  undefined auStack_7a4 [4];
  undefined4 *local_7a0;
  undefined local_784 [1896];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4d41e;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7a4;
  uStack_7b4 = DAT_0323f878 ^ (uint)&stack0xfffff850;
  ExceptionList = &local_14;
  local_7a0 = &local_7bc;
  local_7bc = 0xa0c;
  local_7b8 = 0x126;
  puVar1 = (undefined4 *)FUN_00465be3(local_784);
  local_c = 0;
  local_7bc = *puVar1;
  local_7a0 = &local_7bc;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0075f470(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd50d1;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0075f4b9(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0075f4f4(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::W0C6C560F>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W0C6C560F*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0075f4f4(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::W0C6C560F>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W0C6C560F*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::W0C6C560F>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::W0C6C560F*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0075f716(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x75f722;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WC6B60125::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WC6B60125::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0075f7cc(undefined4 *param_1)

{
  undefined auStack_7c [8];
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined *puStack_6c;
  undefined4 *puStack_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined *puStack_58;
  undefined local_44 [24];
  undefined local_2c [8];
  undefined4 *local_24;
  undefined4 *local_20;
  undefined **local_1c;
  undefined4 *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  local_8 = 0x75f7d8;
  puStack_58 = (undefined *)0x75f7e0;
  FUN_007b3730();
  *param_1 = W01568D36::WD9178DFE::vftable;
  param_1[7] = 0;
  param_1[8] = 0;
  puStack_58 = local_2c;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  uStack_5c = 0x75f800;
  FUN_007b4336();
  local_14 = &uStack_5c;
  local_18 = &uStack_64;
  uStack_64 = 0;
  uStack_60 = 0;
  local_1c = &puStack_6c;
  puStack_6c = (undefined *)0x0;
  puStack_68 = (undefined4 *)0x0;
  local_20 = &uStack_74;
  uStack_74 = 0;
  uStack_70 = 0;
  local_24 = (undefined4 *)auStack_7c;
  local_8._0_1_ = 5;
  FUN_007e3853(auStack_7c);
  local_8._0_1_ = 2;
  FUN_007b385d(&uStack_5c);
  local_24 = &uStack_64;
  local_8 = CONCAT31(local_8._1_3_,6);
  uStack_64 = 0xa0c;
  uStack_60 = 0x13a;
  puStack_68 = (undefined4 *)local_44;
  puStack_6c = (undefined *)0x75f869;
  puStack_68 = (undefined4 *)FUN_00465be3();
  uStack_64 = *puStack_68;
  local_24 = &uStack_64;
  puStack_68 = puStack_68 + 1;
                    // WARNING: Subroutine does not return
  puStack_6c = &UNK_0075f881;
  FUN_0043c023();
}



int __fastcall FUN_0075f96a(int param_1)

{
  return *(int *)(param_1 + 0x1c) + 0x4c;
}



void FUN_0075fa36(void)

{
  undefined4 *puVar1;
  undefined4 local_b1c;
  undefined4 local_b18;
  uint uStack_b14;
  undefined auStack_b04 [20];
  undefined4 *local_af0;
  undefined local_620 [1540];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4d25a;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_b04;
  uStack_b14 = DAT_0323f878 ^ (uint)&stack0xfffff4f0;
  ExceptionList = &local_14;
  local_af0 = &local_b1c;
  local_b1c = 0xa0c;
  local_b18 = 0x13b;
  puVar1 = (undefined4 *)FUN_00465be3(local_620);
  local_c = 0;
  local_b1c = *puVar1;
  local_af0 = &local_b1c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0076105a(undefined4 *param_1)

{
  if (param_1[0x1c] != 0) {
    FUN_0040127a();
  }
  if (param_1[0x1a] != 0) {
    FUN_0040127a();
  }
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  if (param_1[9] != 0) {
    FUN_0040127a();
  }
  if (param_1[7] != 0) {
    FUN_0040127a();
  }
  if (param_1[5] != 0) {
    FUN_0040127a();
  }
  *param_1 = WF3C48A30::WDBA43DD5::vftable;
  return;
}



void FUN_0076165b(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd513d;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_007616a4(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007616df(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::WD50E33A8>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WD50E33A8*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007616df(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::WD50E33A8>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WD50E33A8*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::WD50E33A8>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WD50E33A8*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 * __thiscall FUN_00761e1f(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W01568D36::W15153288::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0076209c(void)

{
  undefined4 *puVar1;
  undefined4 local_8d4;
  undefined4 local_8d0;
  uint uStack_8cc;
  undefined auStack_8bc [8];
  undefined4 *local_8b4;
  undefined local_3ac [912];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4cf51;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_8bc;
  uStack_8cc = DAT_0323f878 ^ (uint)&stack0xfffff738;
  ExceptionList = &local_14;
  local_8b4 = &local_8d4;
  local_8d4 = 0xa0c;
  local_8d0 = 0x104;
  puVar1 = (undefined4 *)FUN_00465be3(local_3ac);
  local_c = 0;
  local_8d4 = *puVar1;
  local_8b4 = &local_8d4;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0076353c(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd51b9;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void Catch_All_007635cb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00763628(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00763685(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_007636e2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007636f9(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0076376f(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::WFA9BF9A5>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WFA9BF9A5*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00763734(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007637b8(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::WFA9BF9A5>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WFA9BF9A5*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0076376f(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::WFA9BF9A5>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WFA9BF9A5*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W01568D36::WFA9BF9A5>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WFA9BF9A5*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void FUN_007637b8(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::WFA9BF9A5>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WFA9BF9A5*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::WFA9BF9A5>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WFA9BF9A5*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void Catch_All_00763847(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_00763b27(undefined4 param_1_00,byte param_1)

{
  FUN_0074b738(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00763b88(undefined4 param_1)

{
  char cVar1;
  int iVar2;
  undefined *local_64 [2];
  undefined *local_5c;
  undefined4 local_58;
  undefined4 uStack_4c;
  undefined *puStack_48;
  undefined local_2c [8];
  undefined *local_24;
  undefined4 local_20;
  undefined **local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x763b94;
  puStack_48 = local_2c;
  local_18 = 0;
  uStack_4c = 0x763ba2;
  FUN_00507ed8();
  local_8 = 1;
  local_24 = &LAB_00763b44;
  local_1c = local_64;
  local_20 = param_1;
  local_64[0] = (undefined *)0x0;
  cVar1 = FUN_007f2630();
  if (cVar1 == '\0') {
    if (&stack0x00000000 != (undefined *)0x5c) {
      local_5c = local_24;
      local_58 = local_20;
    }
    local_64[0] = &DAT_02bd5311;
  }
  else {
    local_64[0] = (undefined *)0x0;
  }
  local_8._0_1_ = 2;
  iVar2 = FUN_00608ac4();
  local_8 = CONCAT31(local_8._1_3_,3);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar2 + 4);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_00763c60(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined auStack_10c [32];
  undefined4 local_ec [8];
  undefined4 local_cc [4];
  undefined4 uStack_bc;
  int iStack_b8;
  undefined *puStack_b4;
  undefined *puStack_b0;
  undefined local_80 [24];
  undefined4 local_68;
  undefined local_64 [24];
  undefined4 local_4c;
  undefined *local_48;
  undefined4 *local_44;
  undefined4 *local_40;
  undefined4 local_3c;
  int local_38;
  undefined4 local_34;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x763c6f;
  local_34 = param_1;
  local_3c = param_2;
  puStack_b0 = (undefined *)0x763c8b;
  local_38 = param_1_00;
  puStack_b0 = (undefined *)FUN_0060a7be();
  local_8 = 0;
  puStack_b4 = (undefined *)0x763c9c;
  FUN_007d77b6();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x763caa;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  local_4c = 7;
  puStack_b4 = (undefined *)0x763cb9;
  FUN_0040180b();
  puStack_b0 = (undefined *)0x0;
  local_68 = 7;
  puStack_b4 = (undefined *)0x763cc5;
  FUN_0040180b();
  puStack_b0 = local_64;
  puStack_b4 = local_80;
  iStack_b8 = param_1_00 + 0xfc;
  local_8._0_1_ = 4;
  uStack_bc = 0x763ce0;
  FUN_007b6458();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x763ced;
  FUN_00401829();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x763cf8;
  FUN_00401829();
  local_44 = local_cc;
  local_cc[0] = 0;
  local_40 = local_ec;
  local_ec[0] = 0;
  local_48 = auStack_10c;
  local_8._0_1_ = 6;
  FUN_00507832();
  local_8 = CONCAT31(local_8._1_3_,2);
  cVar1 = FUN_007c021d(local_34,local_3c);
  if (cVar1 == '\0') {
    puStack_b0 = (undefined *)0xad473bb5;
    puStack_b4 = (undefined *)0x763d4c;
    FUN_00b940e0();
    param_1_00 = local_38;
  }
  puStack_b0 = (undefined *)0x763d58;
  (**(code **)(**(int **)(param_1_00 + 4) + 0x2c))();
  puStack_b0 = (undefined *)0x0;
  puStack_b4 = (undefined *)0x1;
  iStack_b8 = 0x763d64;
  FUN_00401829();
  puStack_b0 = (undefined *)0x763d6b;
  FUN_00a421fb();
  return;
}



void __fastcall FUN_00764126(int param_1)

{
  int iVar1;
  int local_8;
  int iStack_4;
  
  if (&local_8 != (undefined4 *)(param_1 + 0x110)) {
    *(undefined4 *)(param_1 + 0x110) = 0;
  }
  iVar1 = *(int *)(param_1 + 0x114);
  *(undefined4 *)(param_1 + 0x114) = 0;
  if (iVar1 != 0) {
    local_8 = param_1;
    iStack_4 = param_1;
    FUN_0040127a();
    return;
  }
  return;
}



char __fastcall FUN_0076414e(int param_1)

{
  char cVar1;
  undefined4 *in_EAX;
  undefined4 uVar2;
  
  uVar2 = FUN_0074cd6d();
  (**(code **)*in_EAX)(uVar2,0);
  FUN_007b47f9(param_1 + 0xfc);
  cVar1 = FUN_00794560(*(undefined4 *)(param_1 + 4));
  if (cVar1 == '\0') {
    FUN_00b940e0(0xc300acf8);
  }
  return cVar1;
}



char __fastcall FUN_007646aa(undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5b6e2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_007d6cfe(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    uVar2 = 0x71277ed4;
  }
  else {
    FUN_00763b88(param_1,local_20);
    local_c = 0;
    FUN_004fe47e();
    local_c = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    cVar1 = FUN_007c0048();
    if (cVar1 != '\0') {
      ExceptionList = local_14;
      return cVar1;
    }
    uVar2 = 0xc91eecc9;
  }
  FUN_00b940e0(uVar2);
  ExceptionList = local_14;
  return '\0';
}



undefined4 FUN_00764752(undefined4 param_1)

{
  FUN_00765332(param_1,0);
  return param_1;
}



undefined4 FUN_0076476a(undefined4 param_1)

{
  FUN_0076508e(param_1,0);
  return param_1;
}



undefined4 FUN_00764782(undefined4 param_1)

{
  FUN_00764dea(param_1,0);
  return param_1;
}



undefined4 FUN_0076479a(undefined4 param_1)

{
  FUN_00764b46(param_1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007647b2(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7647be;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                   &W71DA37B9::WD5F8BE6D::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W71DA37B9::WE9038436::RTTI_Type_Descriptor,
                           &W71DA37B9::WD5F8BE6D::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void FUN_00764868(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007648a3(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W01568D36::W1D1224C8,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::W1D1224C8*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007648a3(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W01568D36::W1D1224C8,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::W1D1224C8*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W01568D36::W1D1224C8,class_W133E5AC5::W646D533D_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::W1D1224C8*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 * __thiscall FUN_007648ec(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WC650A767::WA858CFC8::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00764909(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WC650A767::W0AB042AF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0076494f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00764966(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764996(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007649c6(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007649f6(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764a26(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764a56(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764a86(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764ab6(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764ae6(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764b16(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00764b46(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WC650A767::W0AB042AF::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00764909(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00764bad(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WC650A767::W6B45A84C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00764bf3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00764c0a(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764c3a(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764c6a(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764c9a(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764cca(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764cfa(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764d2a(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764d5a(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764d8a(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764dba(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00764dea(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WC650A767::W6B45A84C::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00764bad(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00764e51(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WC650A767::WF6A4FB48>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00764e97(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00764eae(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764ede(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764f0e(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764f3e(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764f6e(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764f9e(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764fce(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00764ffe(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_0076502e(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_0076505e(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0076508e(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WC650A767::WF6A4FB48::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00764e51(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007650f5(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WC650A767::WD52530D3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0076513b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00765152(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00765182(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007651b2(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007651e2(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00765212(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00765242(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00765272(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007652a2(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_007652d2(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



undefined4 FUN_00765302(undefined4 param_1)

{
  FUN_004180b1();
  FUN_0076c095(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00765332(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WC650A767::WD52530D3::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007650f5(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void __fastcall FUN_00765399(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_007653a7(*(int *)(param_1 + 0xc));
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007653a7(int param_1)

{
  if (*(int *)(param_1 + 0x14) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0040127a();
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007653fa(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88DE69F8::WD5314728>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00765440(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_007653a7(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_007656a3(int param_1)

{
  undefined4 *puVar1;
  int *unaff_ESI;
  undefined4 **local_3c [6];
  undefined4 ***local_24;
  undefined4 *local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7656af;
  *(undefined *)(unaff_ESI + 8) = 1;
  if (param_1 == 1) {
    local_3c[0] = &local_20;
    puVar1 = (undefined4 *)FUN_00bb60c0();
    local_8 = 0;
    local_3c[0] = (undefined4 **)*puVar1;
    *puVar1 = 0;
    local_24 = local_3c;
    local_11 = (**(code **)(*unaff_ESI + 0x28c))(6);
    local_8 = 0xffffffff;
    if (local_20 != (undefined4 *)0x0) {
      local_3c[0] = (undefined4 **)0x1;
      (**(code **)*local_20)();
    }
    if (local_11 != '\0') {
      return local_11;
    }
    local_3c[0] = (undefined4 **)0x8754924a;
  }
  else if (param_1 == 2) {
    local_3c[0] = &local_1c;
    puVar1 = (undefined4 *)FUN_00bb60c0();
    local_8 = 1;
    local_3c[0] = (undefined4 **)*puVar1;
    *puVar1 = 0;
    local_24 = local_3c;
    local_11 = (**(code **)(*unaff_ESI + 0x28c))(6);
    local_8 = 0xffffffff;
    if (local_1c != (undefined4 *)0x0) {
      local_3c[0] = (undefined4 **)0x1;
      (**(code **)*local_1c)();
    }
    if (local_11 != '\0') {
      return local_11;
    }
    local_3c[0] = (undefined4 **)0x865c4da1;
  }
  else if (param_1 == 3) {
    local_3c[0] = &local_18;
    puVar1 = (undefined4 *)FUN_00bb60c0();
    local_8 = 2;
    local_3c[0] = (undefined4 **)*puVar1;
    *puVar1 = 0;
    local_24 = local_3c;
    local_11 = (**(code **)(*unaff_ESI + 0x28c))(6);
    local_8 = 0xffffffff;
    if (local_18 != (undefined4 *)0x0) {
      local_3c[0] = (undefined4 **)0x1;
      (**(code **)*local_18)();
    }
    if (local_11 != '\0') {
      return local_11;
    }
    local_3c[0] = (undefined4 **)0xbebe72e2;
  }
  else {
    local_11 = '\0';
    local_3c[0] = (undefined4 **)0xd8f4092f;
  }
  FUN_00b940e0();
  return local_11;
}



char FUN_007657da(void)

{
  int iVar1;
  undefined uVar2;
  char cVar3;
  int *in_EAX;
  undefined4 uVar4;
  int *unaff_ESI;
  
  iVar1 = *in_EAX;
  *(undefined *)(in_EAX + 8) = 2;
  uVar2 = (**(code **)(*unaff_ESI + 0xc))();
  uVar4 = (**(code **)(*unaff_ESI + 8))(uVar2);
  uVar4 = (**(code **)(*unaff_ESI + 4))(uVar4);
  cVar3 = (**(code **)(iVar1 + 0x2f8))(uVar4);
  if (cVar3 == '\0') {
    uVar4 = 0x9230f139;
  }
  else {
    cVar3 = (**(code **)(*in_EAX + 0x308))();
    if (cVar3 != '\0') {
      return cVar3;
    }
    uVar4 = 0xffd7c64b;
  }
  FUN_00b940e0(uVar4);
  return '\0';
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00765840(int *param_1,int param_2,undefined4 *param_3,undefined4 param_4)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined4 uStack_ec;
  undefined *puStack_e8;
  undefined auStack_e4 [8];
  undefined4 uStack_dc;
  undefined4 uStack_d8;
  undefined4 uStack_d4;
  undefined *puStack_d0;
  int **ppiStack_cc;
  undefined4 *puStack_c8;
  undefined local_b4 [24];
  undefined4 local_9c [8];
  undefined8 local_7c;
  int local_70;
  int local_6c;
  undefined local_68 [4];
  undefined *local_64;
  int *local_60;
  short local_5c [3];
  char local_55;
  undefined local_54 [76];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa4;
  local_9c[0] = 0;
  local_60 = param_1;
  local_7c._4_4_ = param_3;
  local_8 = 0;
  local_55 = '\x01';
  if ((((param_2 == 0xc) || (param_2 == 0xd)) || (param_2 == 0xe)) ||
     ((param_2 == 0xf || (param_2 == 0x10)))) {
    puStack_c8 = local_9c;
    ppiStack_cc = (int **)0x7658c1;
    FUN_004fc968();
  }
  else {
    puStack_c8 = (undefined4 *)0xc3d7b6c6;
    local_55 = '\0';
    ppiStack_cc = (int **)0x765891;
    FUN_00b940e0();
  }
  local_70 = 0;
  local_6c = 0;
  local_8._0_1_ = 1;
  if (local_55 != '\0') {
    local_64 = auStack_e4;
    puStack_e8 = (undefined *)0x7658e6;
    FUN_00672a11();
    puStack_e8 = local_68;
    uStack_ec = 0x7658ef;
    FUN_007930ab();
    local_8._0_1_ = 2;
    puStack_c8 = (undefined4 *)0x7658fe;
    FUN_004fe47e();
    local_8._0_1_ = 1;
    if (local_64 != (undefined *)0x0) {
      puStack_c8 = (undefined4 *)0x76590e;
      FUN_0040127a();
    }
    local_55 = local_70 != 0;
    if (!(bool)local_55) {
      puStack_c8 = (undefined4 *)0x2b664ee4;
      ppiStack_cc = (int **)0x76592b;
      FUN_00b940e0();
    }
  }
  local_64 = (undefined *)0x0;
  if (local_55 == '\0') goto LAB_00765aa5;
  puStack_c8 = (undefined4 *)0x765946;
  local_55 = FUN_00b7a940();
  piVar1 = local_60;
  if (local_55 == '\0') {
    puStack_c8 = (undefined4 *)0x184c3d86;
  }
  else {
    *(undefined *)(local_60 + 8) = 2;
    if ((char)param_4 == '\0') {
LAB_0076598d:
      if (local_55 == '\0') goto LAB_00765aa5;
    }
    else {
      puStack_c8 = (undefined4 *)0x1;
      ppiStack_cc = &local_60;
      puStack_d0 = (undefined *)0x765976;
      local_55 = (**(code **)(*local_60 + 0x1f0))();
      if (local_55 == '\0') {
        puStack_c8 = (undefined4 *)0x221e2974;
        ppiStack_cc = (int **)0x76598c;
        FUN_00b940e0();
        goto LAB_0076598d;
      }
    }
    puStack_c8 = (undefined4 *)0x0;
    ppiStack_cc = (int **)local_64;
    puStack_d0 = (undefined *)0x7659a2;
    (**(code **)*local_7c._4_4_)();
    local_7c._4_4_ = &uStack_ec;
    uStack_ec = 0;
    local_55 = (**(code **)(*piVar1 + 0x1d0))(&local_60,local_70,0,param_4);
    if (local_55 != '\0') {
      puStack_c8 = (undefined4 *)0x0;
      ppiStack_cc = (int **)0x0;
      puStack_d0 = (undefined *)0x1e;
      uStack_d4 = 0;
      uStack_d8 = 0;
      uStack_dc = 0x7659e8;
      local_7c = FUN_0043b546();
      puStack_c8 = (undefined4 *)0x7659ff;
      FUN_00b98ea0();
      puStack_c8 = (undefined4 *)0x765a09;
      puVar2 = (undefined4 *)FUN_00b7b544();
      puStack_c8 = (undefined4 *)local_b4;
      local_8._0_1_ = 4;
      ppiStack_cc = (int **)*puVar2;
      puStack_d0 = local_54;
      uStack_d4 = 0x765a20;
      FUN_00b9f55b();
      local_8._0_1_ = 6;
      if (local_64 != (undefined *)0x0) {
        puStack_c8 = (undefined4 *)0x765a30;
        FUN_0040127a();
      }
      local_8 = CONCAT31(local_8._1_3_,7);
      puStack_c8 = (undefined4 *)0x765a3f;
      FUN_00b98d40();
      puStack_c8 = (undefined4 *)local_5c;
      ppiStack_cc = (int **)0x765a4d;
      local_55 = (**(code **)(*piVar1 + 0x1d8))();
      if (local_55 == '\0') {
        puStack_c8 = (undefined4 *)0x916a18d6;
        ppiStack_cc = (int **)0x765a63;
        FUN_00b940e0();
      }
      local_8._0_1_ = 1;
      puStack_c8 = (undefined4 *)0x765a70;
      FUN_00b9f511();
      if ((local_55 != '\0') && (local_55 = local_5c[0] == 0, !(bool)local_55)) {
        puStack_c8 = (undefined4 *)0x8309be1d;
        ppiStack_cc = (int **)0x765a95;
        FUN_00b940e0();
        puStack_c8 = (undefined4 *)0x2;
        ppiStack_cc = (int **)local_5c;
        puStack_d0 = (undefined *)0x8309be1d;
        uStack_d4 = 0x765aa2;
        FUN_00b940c0();
      }
      goto LAB_00765aa5;
    }
    puStack_c8 = (undefined4 *)0x6cfba916;
    local_55 = '\0';
  }
  ppiStack_cc = (int **)0x7659d7;
  FUN_00b940e0();
LAB_00765aa5:
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_6c != 0) {
    puStack_c8 = (undefined4 *)0x765ab5;
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  puStack_c8 = (undefined4 *)0x765ac4;
  FUN_00507e58();
  puStack_c8 = (undefined4 *)0x765acc;
  FUN_00a421fb();
  return;
}



bool __fastcall FUN_00765acd(int *param_1)

{
  char cVar1;
  bool bVar2;
  undefined4 local_8;
  
  local_8 = 0xffff;
  *(undefined *)(param_1 + 8) = 1;
  cVar1 = (**(code **)(*param_1 + 0x2b0))(&local_8);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xcb5215e4);
    bVar2 = false;
  }
  else {
    bVar2 = (short)local_8 == 0;
    if (!bVar2) {
      FUN_00b940e0(0xfac0b5b5);
      FUN_00b940c0(0xfac0b5b5,&local_8,2);
    }
  }
  return bVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00765d4b(int *param_1,undefined4 **param_2,undefined4 **param_3,int param_4)

{
  char cVar1;
  undefined auStack_58 [20];
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 **ppuStack_3c;
  undefined4 uStack_38;
  undefined4 ***local_20;
  undefined4 *local_1c;
  undefined4 **local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x765d57;
  uStack_38 = 2;
  ppuStack_3c = (undefined4 **)0x765d64;
  local_11 = (**(code **)(*param_1 + 0x2d0))();
  if (local_11 == '\0') {
    ppuStack_3c = (undefined4 **)0xea18a189;
    uStack_40 = 0x765d7a;
    FUN_00b940e0();
  }
  local_18 = (undefined4 **)0x0;
  local_8 = 0;
  if (local_11 != '\0') {
    local_20 = (undefined4 ***)auStack_58;
    FUN_004180b1();
    cVar1 = FUN_00bbfff0(&local_18);
    ppuStack_3c = local_18;
    if (cVar1 == '\0') {
LAB_00765dd2:
      local_11 = '\0';
      ppuStack_3c = (undefined4 **)0xf878a731;
    }
    else {
      local_18 = (undefined4 **)0x0;
      local_20 = &ppuStack_3c;
      uStack_40 = 0x1062;
      uStack_44 = 0x765dce;
      cVar1 = (**(code **)(*param_1 + 0x2e8))();
      if (cVar1 == '\0') goto LAB_00765dd2;
      local_20 = (undefined4 ***)auStack_58;
      FUN_004180b1();
      cVar1 = FUN_00bbfff0(&local_18);
      ppuStack_3c = local_18;
      if (cVar1 == '\0') {
LAB_00765e2a:
        local_11 = '\0';
        ppuStack_3c = (undefined4 **)0x3fc35097;
      }
      else {
        local_18 = (undefined4 **)0x0;
        local_20 = &ppuStack_3c;
        uStack_40 = 0x1063;
        uStack_44 = 0x765e26;
        cVar1 = (**(code **)(*param_1 + 0x2e8))();
        if (cVar1 == '\0') goto LAB_00765e2a;
        local_20 = (undefined4 ***)auStack_58;
        FUN_004180b1();
        cVar1 = FUN_00bbfff0(&local_18);
        ppuStack_3c = local_18;
        if (cVar1 == '\0') {
LAB_00765e81:
          local_11 = '\0';
          ppuStack_3c = (undefined4 **)0xde34bc62;
        }
        else {
          local_18 = (undefined4 **)0x0;
          local_20 = &ppuStack_3c;
          uStack_40 = 0x1064;
          uStack_44 = 0x765e7d;
          cVar1 = (**(code **)(*param_1 + 0x2e8))();
          if (cVar1 == '\0') goto LAB_00765e81;
          ppuStack_3c = (undefined4 **)0x765e9b;
          local_11 = (**(code **)(*param_1 + 0x2d8))();
          if (local_11 != '\0') goto LAB_00765eb2;
          ppuStack_3c = (undefined4 **)0xbd6a05dd;
        }
      }
    }
    uStack_40 = 0x765eb1;
    FUN_00b940e0();
  }
LAB_00765eb2:
  local_1c = (undefined4 *)0x0;
  local_8._0_1_ = 1;
  if (local_11 == '\0') goto LAB_00765f65;
  ppuStack_3c = param_3;
  uStack_40 = 0x765ecf;
  local_11 = FUN_00b9f072();
  if (local_11 == '\0') {
    ppuStack_3c = (undefined4 **)0x48d7acbc;
    local_11 = '\0';
  }
  else {
    ppuStack_3c = &local_1c;
    *(undefined *)(param_1 + 8) = 1;
    uStack_40 = 0x765ef7;
    local_11 = (**(code **)(*param_1 + 0x284))();
    if (local_11 == '\0') {
      ppuStack_3c = (undefined4 **)0x650c083b;
    }
    else {
      if (param_2 == *(undefined4 ***)(param_4 + 0x68)) {
LAB_00765f33:
        if (local_11 == '\0') goto LAB_00765f65;
      }
      else {
        ppuStack_3c = param_2;
        uStack_40 = 0x765f1b;
        local_11 = FUN_007656a3();
        if (local_11 == '\0') {
          ppuStack_3c = (undefined4 **)0x8b3c109;
          uStack_40 = 0x765f32;
          FUN_00b940e0();
          goto LAB_00765f33;
        }
      }
      ppuStack_3c = (undefined4 **)0x765f41;
      FUN_007dd228();
      if (local_11 == '\0') goto LAB_00765f65;
      ppuStack_3c = (undefined4 **)0x765f4e;
      local_11 = FUN_00765acd();
      if (local_11 != '\0') goto LAB_00765f65;
      ppuStack_3c = (undefined4 **)0x4278b228;
    }
  }
  uStack_40 = 0x765f64;
  FUN_00b940e0();
LAB_00765f65:
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_1c != (undefined4 *)0x0) {
    ppuStack_3c = (undefined4 **)0x1;
    uStack_40 = 0x765f76;
    (**(code **)*local_1c)();
  }
  local_8 = 0xffffffff;
  if (local_18 != (undefined4 **)0x0) {
    ppuStack_3c = (undefined4 **)0x1;
    uStack_40 = 0x765f87;
    (*(code *)**local_18)();
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00765fe7)
// WARNING: Removing unreachable block (ram,0x00765fec)
// WARNING: Removing unreachable block (ram,0x00765ff3)
// WARNING: Removing unreachable block (ram,0x00765ff6)
// WARNING: Removing unreachable block (ram,0x00765ffa)
// WARNING: Removing unreachable block (ram,0x0076601b)
// WARNING: Removing unreachable block (ram,0x0076604c)
// WARNING: Removing unreachable block (ram,0x00766052)
// WARNING: Removing unreachable block (ram,0x00766064)
// WARNING: Removing unreachable block (ram,0x00766003)
// WARNING: Removing unreachable block (ram,0x0076607b)

undefined __fastcall FUN_00765f90(int *param_1)

{
  char cVar1;
  short local_18;
  undefined local_11;
  
  *(undefined *)(param_1 + 8) = 2;
  cVar1 = (**(code **)(*param_1 + 0x1dc))();
  if ((cVar1 == '\0') || (local_18 != 0)) {
    local_11 = 0;
    FUN_00b940e0();
  }
  else {
    local_11 = 1;
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007660d6)
// WARNING: Removing unreachable block (ram,0x007660fa)
// WARNING: Removing unreachable block (ram,0x00766117)
// WARNING: Removing unreachable block (ram,0x007660ee)
// WARNING: Removing unreachable block (ram,0x00766132)

uint __fastcall FUN_0076608a(int *param_1)

{
  uint uVar1;
  
  (**(code **)(*param_1 + 0xc))();
  uVar1 = FUN_00b940e0();
  return uVar1 & 0xffffff00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00766140(undefined4 *param_1)

{
  undefined4 *puVar1;
  int *unaff_EBX;
  uint local_4c;
  undefined4 **ppuStack_48;
  undefined4 *local_44;
  char local_2c;
  uint *local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_18 = (undefined4 *)0x0;
  local_8 = 0;
  ppuStack_48 = &local_1c;
  local_44 = (undefined4 *)0x0;
  local_4c = 0x766167;
  puVar1 = (undefined4 *)FUN_00b933f0();
  local_44 = (undefined4 *)*puVar1;
  *puVar1 = 0;
  ppuStack_48 = (undefined4 **)0x766176;
  FUN_0040c727();
  if (local_1c != (undefined4 *)0x0) {
    local_44 = (undefined4 *)0x1;
    ppuStack_48 = (undefined4 **)0x766183;
    (**(code **)*local_1c)();
  }
  local_44 = (undefined4 *)0x76618e;
  local_11 = FUN_00b93010();
  if (local_11 == '\0') {
    local_44 = (undefined4 *)0x466b3e18;
    local_11 = '\0';
  }
  else {
    local_20 = &local_4c;
    local_4c = local_4c & 0xffffff00;
    local_44 = local_1c;
    FUN_00b6ee30();
    local_44 = local_18;
    if (local_2c != '\0') {
      local_2c = '\0';
    }
    local_18 = (undefined4 *)0x0;
    *(undefined *)(unaff_EBX + 8) = 2;
    ppuStack_48 = (undefined4 **)*param_1;
    local_4c = 0x7661ec;
    local_11 = (**(code **)(*unaff_EBX + 0x1e0))();
    if (local_11 != '\0') goto LAB_00766203;
    local_44 = (undefined4 *)0xa13057f5;
  }
  ppuStack_48 = (undefined4 **)0x766202;
  FUN_00b940e0();
LAB_00766203:
  local_8 = 0xffffffff;
  if (local_18 != (undefined4 *)0x0) {
    local_44 = (undefined4 *)0x1;
    ppuStack_48 = (undefined4 **)0x766214;
    (**(code **)*local_18)();
  }
  return local_11;
}



undefined4 __thiscall FUN_0076634c(undefined4 param_1_00,byte param_1)

{
  FUN_0076105a(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00766391(int param_1)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c299a1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0046b0e8(local_20,*(undefined2 *)(param_1 + 10),0);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00766627(int param_1)

{
  int iVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined4 *extraout_ECX;
  undefined4 local_a0;
  uint local_9c;
  undefined4 uStack_98;
  int iStack_94;
  undefined4 **ppuStack_90;
  uint uStack_8c;
  undefined4 *local_74;
  uint local_70;
  uint local_6c;
  int local_64;
  uint *local_60;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c390ac;
  local_14 = ExceptionList;
  uStack_8c = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_14;
  local_6c = (uint)*(ushort *)(param_1 + 8);
  local_70 = (uint)*(ushort *)(param_1 + 10);
  ppuStack_90 = &local_74;
  iStack_94 = param_1;
  uStack_98 = 0x766675;
  piVar2 = (int *)FUN_00b86210();
  iVar1 = *piVar2;
  *piVar2 = 0;
  local_c = 0;
  local_64 = iVar1;
  if (local_74 != (undefined4 *)0x0) {
    ppuStack_90 = (undefined4 **)0x1;
    iStack_94 = 0x76669a;
    (**(code **)*local_74)();
    local_74 = extraout_ECX;
  }
  ppuStack_90 = (undefined4 **)0x0;
  iStack_94 = 0;
  uStack_98 = 0;
  local_60 = &local_9c;
  local_a0 = 0;
  local_9c = (uint)local_74 & 0xffffff00;
  puVar3 = (undefined4 *)FUN_00443a80(local_20,*(undefined4 *)(iVar1 + 8),0);
  local_60 = &local_a0;
  local_c = CONCAT31(local_c._1_3_,1);
  local_a0 = *puVar3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar3 + 1);
}



void FUN_007669ac(int param_1)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c29946;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0046b0e8(local_20,*(undefined2 *)(param_1 + 10),0);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00766c9f(void)

{
  int *piVar1;
  int iVar2;
  undefined4 *local_6c;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c39031;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  piVar1 = (int *)FUN_00b85840();
  iVar2 = *piVar1;
  *piVar1 = 0;
  local_c = 0;
  if (local_6c != (undefined4 *)0x0) {
    (**(code **)*local_6c)();
  }
  iVar2 = FUN_00443a80(local_20,*(undefined4 *)(iVar2 + 8),0);
  local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar2 + 4);
}



void FUN_007670b9(void)

{
  undefined4 *puVar1;
  undefined *local_1a8;
  undefined *puStack_1a4;
  undefined4 uStack_1a0;
  undefined4 uStack_19c;
  undefined4 uStack_198;
  uint uStack_194;
  undefined auStack_184 [20];
  undefined local_170 [28];
  undefined **local_154;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c38f9b;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_184;
  uStack_194 = DAT_0323f878 ^ (uint)&stack0xfffffe70;
  ExceptionList = &local_14;
  uStack_198 = 0;
  uStack_19c = 0;
  uStack_1a0 = 0;
  local_1a8 = local_170;
  puStack_1a4 = &DAT_00dd9b28;
  puVar1 = (undefined4 *)FUN_00467583();
  local_c = 0;
  local_1a8 = (undefined *)*puVar1;
  local_154 = &local_1a8;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0076754a(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2e38c;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467583();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_0076769f(void)

{
  undefined4 *puVar1;
  undefined *local_a0;
  undefined *puStack_9c;
  undefined4 uStack_98;
  undefined4 uStack_94;
  undefined4 uStack_90;
  uint uStack_8c;
  undefined auStack_7c [20];
  undefined local_68 [8];
  undefined **local_60;
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c298d6;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7c;
  uStack_8c = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_14;
  uStack_90 = 0x7676e4;
  FUN_00b86110();
  local_c = 0;
  uStack_90 = 0x7676f8;
  FUN_00ba84f0();
  uStack_90 = 0;
  uStack_94 = 1;
  local_c = CONCAT31(local_c._1_3_,2);
  uStack_98 = 0x76770a;
  FUN_004017b2();
  uStack_90 = 0;
  uStack_94 = 0;
  uStack_98 = 0;
  puStack_9c = local_38;
  local_a0 = local_68;
  puVar1 = (undefined4 *)FUN_0046752c();
  local_a0 = (undefined *)*puVar1;
  local_60 = &local_a0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00767870(void)

{
  undefined4 *puVar1;
  undefined *local_a0;
  undefined *puStack_9c;
  undefined4 uStack_98;
  undefined4 uStack_94;
  undefined4 uStack_90;
  uint uStack_8c;
  undefined auStack_7c [12];
  undefined **local_70;
  undefined local_64 [44];
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2987e;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7c;
  uStack_8c = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_14;
  uStack_90 = 0x7678b5;
  FUN_00b856e0();
  local_c = 0;
  uStack_90 = 0x7678c9;
  FUN_00ba84f0();
  uStack_90 = 0;
  uStack_94 = 1;
  local_c = CONCAT31(local_c._1_3_,2);
  uStack_98 = 0x7678db;
  FUN_004017b2();
  uStack_90 = 0;
  uStack_94 = 0;
  uStack_98 = 0;
  puStack_9c = local_38;
  local_a0 = local_64;
  puVar1 = (undefined4 *)FUN_0046752c();
  local_a0 = (undefined *)*puVar1;
  local_70 = &local_a0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00767a42(void)

{
  undefined4 *puVar1;
  undefined *local_b8;
  undefined *puStack_b4;
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined4 uStack_a8;
  uint uStack_a4;
  undefined auStack_94 [8];
  undefined **local_8c;
  undefined local_80 [72];
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c29820;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_94;
  uStack_a4 = DAT_0323f878 ^ (uint)&stack0xffffff60;
  ExceptionList = &local_14;
  uStack_a8 = 0x767a8d;
  FUN_00b854a0();
  local_c = 0;
  uStack_a8 = 0x767aa1;
  FUN_00ba84f0();
  uStack_a8 = 0;
  uStack_ac = 1;
  local_c = CONCAT31(local_c._1_3_,2);
  uStack_b0 = 0x767ab3;
  FUN_004017b2();
  uStack_a8 = 0;
  uStack_ac = 0;
  uStack_b0 = 0;
  puStack_b4 = local_38;
  local_b8 = local_80;
  puVar1 = (undefined4 *)FUN_0046752c();
  local_b8 = (undefined *)*puVar1;
  local_8c = &local_b8;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00767c72(void)

{
  undefined4 *puVar1;
  undefined *local_e0;
  undefined *puStack_dc;
  undefined4 uStack_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  uint uStack_cc;
  undefined auStack_bc [20];
  undefined local_a8 [24];
  undefined **local_90;
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c38ece;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_bc;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  uStack_d0 = 0x767cc0;
  FUN_00b85620();
  local_c = 0;
  uStack_d0 = 0x767cd7;
  FUN_00ba84f0();
  uStack_d0 = 0;
  uStack_d4 = 1;
  local_c = CONCAT31(local_c._1_3_,2);
  uStack_d8 = 0x767ce9;
  FUN_004017b2();
  uStack_d0 = 0;
  uStack_d4 = 0;
  uStack_d8 = 0;
  puStack_dc = local_38;
  local_e0 = local_a8;
  puVar1 = (undefined4 *)FUN_0046752c();
  local_e0 = (undefined *)*puVar1;
  local_90 = &local_e0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0076800d(void)

{
  undefined4 *puVar1;
  undefined *local_108;
  undefined *puStack_104;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  undefined4 uStack_f8;
  uint uStack_f4;
  undefined auStack_e4 [8];
  undefined **local_dc;
  undefined local_c8 [144];
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c38e30;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_e4;
  uStack_f4 = DAT_0323f878 ^ (uint)&stack0xffffff10;
  ExceptionList = &local_14;
  uStack_f8 = 0x76805f;
  FUN_00b853c0();
  local_c = 0;
  uStack_f8 = 0x768076;
  uStack_f8 = FUN_00ba84f0();
  local_c._0_1_ = 1;
  uStack_fc = 0x76808b;
  basic_string<>();
  uStack_f8 = 0;
  uStack_fc = 1;
  uStack_100 = 0x76809a;
  FUN_00401829();
  uStack_f8 = 0;
  uStack_fc = 1;
  local_c._0_1_ = 4;
  uStack_100 = 0x7680ac;
  FUN_004017b2();
  uStack_f8 = 0x7680b7;
  FUN_00b85390();
  local_c._0_1_ = 5;
  uStack_f8 = 0x7680cd;
  FUN_00ba84f0();
  uStack_f8 = 0;
  uStack_fc = 1;
  local_c = CONCAT31(local_c._1_3_,7);
  uStack_100 = 0x7680df;
  FUN_004017b2();
  uStack_f8 = 0;
  uStack_fc = 0;
  uStack_100 = 0;
  puStack_104 = local_38;
  local_108 = local_c8;
  puVar1 = (undefined4 *)FUN_0046752c();
  local_108 = (undefined *)*puVar1;
  local_dc = &local_108;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_0076845a(void)

{
  undefined4 *puVar1;
  undefined *local_a0;
  undefined *puStack_9c;
  undefined4 uStack_98;
  undefined4 uStack_94;
  undefined4 uStack_90;
  uint uStack_8c;
  undefined auStack_7c [12];
  undefined **local_70;
  undefined local_64 [44];
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2987e;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_7c;
  uStack_8c = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_14;
  uStack_90 = 0x76849f;
  FUN_00b859e0();
  local_c = 0;
  uStack_90 = 0x7684b3;
  FUN_00ba84f0();
  uStack_90 = 0;
  uStack_94 = 1;
  local_c = CONCAT31(local_c._1_3_,2);
  uStack_98 = 0x7684c5;
  FUN_004017b2();
  uStack_90 = 0;
  uStack_94 = 0;
  uStack_98 = 0;
  puStack_9c = local_38;
  local_a0 = local_64;
  puVar1 = (undefined4 *)FUN_0046752c();
  local_a0 = (undefined *)*puVar1;
  local_70 = &local_a0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00768630(void)

{
  undefined4 *puVar1;
  undefined *local_1b0;
  undefined *puStack_1ac;
  undefined4 uStack_1a8;
  undefined4 uStack_1a4;
  undefined4 uStack_1a0;
  uint uStack_19c;
  undefined auStack_18c [16];
  undefined local_17c [24];
  undefined **local_164;
  undefined local_38 [28];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c32b8f;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_18c;
  uStack_19c = DAT_0323f878 ^ (uint)&stack0xfffffe68;
  ExceptionList = &local_14;
  uStack_1a0 = 0x768685;
  FUN_00b85560();
  local_c = 0;
  uStack_1a0 = 0x76869c;
  FUN_00ba84f0();
  uStack_1a0 = 0;
  uStack_1a4 = 1;
  local_c = CONCAT31(local_c._1_3_,2);
  uStack_1a8 = 0x7686b3;
  FUN_004017b2();
  uStack_1a0 = 0;
  uStack_1a4 = 0;
  uStack_1a8 = 0;
  puStack_1ac = local_38;
  local_1b0 = local_17c;
  puVar1 = (undefined4 *)FUN_0046752c();
  local_1b0 = (undefined *)*puVar1;
  local_164 = &local_1b0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_00768b8b(void)

{
  undefined4 *puVar1;
  undefined *local_e0;
  undefined *puStack_dc;
  undefined4 uStack_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  uint uStack_cc;
  undefined auStack_bc [12];
  undefined **local_b0;
  undefined local_ac [88];
  undefined local_54 [56];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2e33e;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_bc;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  uStack_d0 = 0x768bdd;
  FUN_00b852d0();
  local_c = 0;
  uStack_d0 = 0x768bf1;
  FUN_00ba84f0();
  uStack_d0 = 0;
  uStack_d4 = 1;
  local_c = CONCAT31(local_c._1_3_,2);
  uStack_d8 = 0x768c05;
  FUN_004017b2();
  uStack_d0 = 0;
  uStack_d4 = 0;
  uStack_d8 = 0;
  puStack_dc = local_54;
  local_e0 = local_ac;
  puVar1 = (undefined4 *)FUN_0046752c();
  local_e0 = (undefined *)*puVar1;
  local_b0 = &local_e0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined FUN_00768ef3(undefined4 param_1)

{
  char cVar1;
  int in_EAX;
  undefined uVar2;
  
  cVar1 = (**(code **)(**(int **)(in_EAX + 8) + 0x254))(&param_1,param_1);
  uVar2 = 0;
  if ((cVar1 == '\0') || ((short)param_1 != 0)) {
    FUN_00b940e0(0x11d17eac);
  }
  else {
    uVar2 = 1;
  }
  return uVar2;
}



undefined4 FUN_00768f34(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uVar2;
  
  cVar1 = FUN_00768f5b((int)&param_2 + 3,param_2);
  if ((cVar1 == '\0') || (param_2._3_1_ == '\0')) {
    uVar2 = 0;
  }
  else {
    uVar2 = 1;
  }
  return uVar2;
}



undefined4 FUN_00768f5b(undefined4 param_1,undefined4 param_2)

{
  int in_EAX;
  undefined4 uVar1;
  undefined3 extraout_var;
  undefined3 uVar2;
  
  uVar1 = (**(code **)(**(int **)(in_EAX + 8) + 0x250))(&param_2,param_2);
  if ((char)uVar1 == '\0') {
    FUN_00b940e0(0xb0dc9428);
    uVar2 = extraout_var;
  }
  else {
    uVar2 = (undefined3)((uint)uVar1 >> 8);
    *(bool *)param_1 = (short)param_2 == 0;
  }
  return CONCAT31(uVar2,(char)uVar1);
}



undefined4 FUN_00769037(undefined4 param_1,uint param_2)

{
  ushort uVar1;
  uint uVar2;
  undefined4 uVar3;
  char *unaff_EBX;
  int unaff_ESI;
  bool bVar4;
  undefined4 local_c;
  char local_5;
  
  local_5 = '\x01';
  *unaff_EBX = '\x01';
  if ((param_2 & 0xffff) == 1) {
    local_c = 1;
LAB_0076908b:
    FUN_005d11c9(param_1);
  }
  else {
    if ((param_2 & 0xffff) == 2) {
      local_c = 2;
      goto LAB_0076908b;
    }
    FUN_005d1159();
    *unaff_EBX = '\0';
    FUN_00b940e0(0x5430ad1e);
    FUN_00769fbf(unaff_ESI,param_2);
  }
  uVar1 = *(ushort *)(unaff_ESI + 0xc);
  uVar2 = (uint)uVar1;
  if ((uVar1 != (ushort)param_2) && (*unaff_EBX != '\0')) {
    if (uVar1 != 0) {
      local_5 = (**(code **)(**(int **)(unaff_ESI + 8) + 0x2d8))();
      if (local_5 == '\0') {
        FUN_00b940e0(0x5d98d20b);
      }
      uVar2 = 0;
      *(undefined2 *)(unaff_ESI + 0xc) = 0;
      if (local_5 == '\0') goto LAB_00769122;
    }
    if (*unaff_EBX != '\0') {
      uVar3 = (**(code **)(**(int **)(unaff_ESI + 8) + 0x2d4))(&param_1,local_c);
      local_5 = (char)uVar3;
      if (local_5 == '\0') {
        uVar3 = FUN_00b940e0(0x217f7b78);
      }
      bVar4 = (short)param_1 == 0;
      uVar2 = CONCAT31((int3)((uint)uVar3 >> 8),bVar4);
      *unaff_EBX = bVar4;
      if ((local_5 != '\0') && (bVar4)) {
        uVar2 = CONCAT22((short)((uint)uVar3 >> 0x10),(ushort)param_2);
        *(ushort *)(unaff_ESI + 0xc) = (ushort)param_2;
      }
    }
  }
LAB_00769122:
  return CONCAT31((int3)(uVar2 >> 8),local_5);
}



undefined FUN_0076912a(undefined4 param_1)

{
  char cVar1;
  int in_EAX;
  undefined uVar2;
  
  cVar1 = (**(code **)(**(int **)(in_EAX + 8) + 0x260))(&param_1,param_1);
  uVar2 = 0;
  if ((cVar1 == '\0') || ((short)param_1 != 0)) {
    FUN_00b940e0(0x71c601d8);
  }
  else {
    uVar2 = 1;
  }
  return uVar2;
}



undefined FUN_0076916b(undefined4 param_1)

{
  char cVar1;
  int in_EAX;
  undefined uVar2;
  
  cVar1 = (**(code **)(**(int **)(in_EAX + 8) + 0x25c))(&param_1,param_1);
  uVar2 = 0;
  if ((cVar1 == '\0') || ((short)param_1 != 0)) {
    FUN_00b940e0(0x7397a3e6);
  }
  else {
    uVar2 = 1;
  }
  return uVar2;
}



char FUN_007691ac(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  int unaff_ESI;
  
  cVar1 = (**(code **)(**(int **)(unaff_ESI + 8) + 0x274))(&param_1,param_1,param_2);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x21214f3c);
  }
  else {
    param_2 = CONCAT13((short)param_1 == 0,(undefined3)param_2);
    if ((short)param_1 == 0x15) {
      FUN_0076a0d7(unaff_ESI);
    }
  }
  if ((cVar1 != '\0') && (cVar1 = param_2._3_1_, param_2._3_1_ == '\0')) {
    FUN_00b940e0(0xc436d984);
  }
  return cVar1;
}



void __fastcall FUN_00769217(int param_1)

{
  int *piVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 ***local_e8;
  undefined *puStack_e4;
  int **ppiStack_e0;
  undefined4 ***pppuStack_dc;
  int **ppiStack_d8;
  uint uStack_d4;
  undefined auStack_c4 [3];
  char local_c1;
  int **local_c0;
  int ***local_bc;
  undefined4 *local_b8;
  int **local_b4;
  int local_b0;
  int **local_ac [2];
  int *local_a4 [3];
  int **local_98;
  int **local_94;
  undefined auStack_8c [28];
  undefined auStack_70 [28];
  int *local_54 [6];
  undefined4 local_3c;
  int *local_38 [7];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2e2c1;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_c4;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  local_c1 = *(int *)(param_1 + 0x6c) != 0;
  if (!(bool)local_c1) {
    ppiStack_d8 = (int **)0xa9915c63;
    pppuStack_dc = (undefined4 ***)0x769279;
    FUN_00b940e0();
  }
  ppiStack_d8 = (int **)0x0;
  local_3c = 7;
  pppuStack_dc = (undefined4 ***)0x769292;
  FUN_0040180b();
  local_c = 0;
  if (local_c1 != '\0') {
    ppiStack_d8 = local_54;
    pppuStack_dc = (undefined4 ***)0x7692b3;
    local_c1 = FUN_00768ef3();
    if (local_c1 != '\0') {
      ppiStack_d8 = (int **)0x0;
      pppuStack_dc = (undefined4 ***)0x0;
      ppiStack_e0 = (int **)0x0;
      puStack_e4 = (undefined *)0x20;
      local_e8 = (undefined4 ***)local_54;
      puStack_e4 = (undefined *)FUN_0076a7d0(local_38);
      local_e8 = local_ac;
      local_c._0_1_ = 1;
      puVar3 = (undefined4 *)FUN_0046752c();
      local_c = CONCAT31(local_c._1_3_,2);
      local_e8 = (undefined4 ***)*puVar3;
      local_bc = (int ***)&local_e8;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar3 + 1);
    }
    ppiStack_d8 = (int **)0x75bd0410;
    pppuStack_dc = (undefined4 ***)0x7693d5;
    FUN_00b940e0();
  }
  ppiStack_d8 = local_a4;
  pppuStack_dc = (undefined4 ***)0x7693e0;
  FUN_004382a5();
  local_c = CONCAT31(local_c._1_3_,4);
  if (local_c1 != '\0') {
    ppiStack_d8 = local_a4;
    pppuStack_dc = (undefined4 ***)0x7693fb;
    local_c1 = FUN_0076912a();
    if (local_c1 == '\0') {
      ppiStack_d8 = (int **)0xb50eed6d;
      pppuStack_dc = (undefined4 ***)0x769412;
      FUN_00b940e0();
    }
  }
  ppiStack_d8 = (int **)(((int)local_94 - (int)local_98) / 0x28);
  local_b0 = 0;
  local_ac[0] = ppiStack_d8;
  if (local_c1 != '\0') {
    pppuStack_dc = (undefined4 ***)0x0;
    ppiStack_e0 = (int **)0x76943f;
    (***(code ***)(*(int *)(param_1 + 4) + 4))();
  }
  local_c0 = local_98;
  puVar3 = local_a4[0];
  local_b4 = local_98;
  if (local_94 < local_98) {
    ppiStack_d8 = (int **)0x769452;
    FUN_00a3fb10();
    puVar3 = local_a4[0];
    local_b4 = local_c0;
  }
  while (local_c1 != '\0') {
    ppiStack_d8 = (int **)0x76947d;
    local_b8 = puVar3;
    cVar2 = (**(code **)(**(int **)(param_1 + 4) + 0xc))();
    if (cVar2 != '\0') break;
    local_bc = (int ***)local_94;
    if (local_94 < local_98) {
      ppiStack_d8 = (int **)0x769498;
      FUN_00a3fb10();
    }
    if ((puVar3 == (undefined4 *)0x0) || (puVar3 != local_a4[0])) {
      ppiStack_d8 = (int **)0x7694a7;
      FUN_00a3fb10();
    }
    if ((int ***)local_b4 == local_bc) break;
    ppiStack_d8 = (int **)0x7694be;
    ppiStack_d8 = (int **)FUN_007c96e9();
    pppuStack_dc = (undefined4 ***)0x7694cb;
    basic_string<>();
    local_c0 = (int **)0x0;
    local_c._0_1_ = 6;
    if (local_c1 != '\0') {
      ppiStack_d8 = local_38;
      pppuStack_dc = &local_c0;
      ppiStack_e0 = (int **)0x7694f8;
      local_c1 = FUN_007691ac();
      ppiStack_d8 = local_c0;
      if (local_c1 == '\0') {
        ppiStack_d8 = (int **)0xa6962bc6;
        local_c1 = '\0';
      }
      else {
        piVar1 = *(int **)(param_1 + 0x6c);
        local_bc = &ppiStack_d8;
        local_c0 = (int **)0x0;
        pppuStack_dc = (undefined4 ***)&DAT_00dd9c28;
        ppiStack_e0 = local_54;
        puStack_e4 = auStack_8c;
        local_c._0_1_ = 7;
        local_e8 = (undefined4 ***)0x769542;
        ppiStack_e0 = (int **)FUN_0076a51a();
        pppuStack_dc = (undefined4 ***)local_38;
        puStack_e4 = auStack_70;
        local_c._0_1_ = 8;
        local_e8 = (undefined4 ***)0x769560;
        pppuStack_dc = (undefined4 ***)FUN_0041c102();
        local_c._0_1_ = 0xb;
        ppiStack_e0 = (int **)0x76957d;
        local_c1 = (**(code **)(*piVar1 + 0x10))();
        ppiStack_d8 = (int **)0x0;
        pppuStack_dc = (undefined4 ***)0x1;
        ppiStack_e0 = (int **)0x76958d;
        FUN_00401829();
        ppiStack_d8 = (int **)0x0;
        pppuStack_dc = (undefined4 ***)0x1;
        local_c._0_1_ = 6;
        ppiStack_e0 = (int **)0x7695a1;
        FUN_00401829();
        if (local_c1 != '\0') {
          ppiStack_d8 = local_ac[0];
          pppuStack_dc = (undefined4 ***)(local_b0 + 1);
          ppiStack_e0 = (int **)0x7695d0;
          local_b0 = (int)pppuStack_dc;
          (***(code ***)(*(int *)(param_1 + 4) + 4))();
          goto LAB_007695d0;
        }
        ppiStack_d8 = (int **)0x96cf940b;
      }
      pppuStack_dc = (undefined4 ***)0x7695b7;
      FUN_00b940e0();
    }
LAB_007695d0:
    local_c._0_1_ = 5;
    if (local_c0 != (int **)0x0) {
      ppiStack_d8 = (int **)0x1;
      pppuStack_dc = (undefined4 ***)0x7695e6;
      (*(code *)**local_c0)();
    }
    ppiStack_d8 = (int **)0x0;
    pppuStack_dc = (undefined4 ***)0x1;
    local_c = CONCAT31(local_c._1_3_,4);
    ppiStack_e0 = (int **)0x7695fe;
    FUN_00401829();
    ppiStack_d8 = (int **)0x769607;
    FUN_0076a302();
    puVar3 = local_b8;
  }
  ppiStack_d8 = (int **)0x76961b;
  FUN_0076a2d5();
  ppiStack_d8 = (int **)0x0;
  pppuStack_dc = (undefined4 ***)0x1;
  ppiStack_e0 = (int **)0x76962b;
  FUN_00401829();
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00769938(int param_1_00,undefined4 param_1)

{
  int iVar1;
  uint uVar2;
  char cVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  undefined *local_b4;
  int *piStack_b0;
  uint uStack_ac;
  undefined auStack_9c [3];
  char local_99;
  undefined **local_98;
  uint local_94;
  undefined4 local_90;
  int local_8c [3];
  uint local_80;
  uint local_7c;
  undefined local_5c [36];
  undefined local_38 [24];
  undefined4 local_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c38d5e;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_9c;
  uStack_ac = DAT_0323f878 ^ (uint)&stack0xffffff58;
  ExceptionList = &local_14;
  piStack_b0 = (int *)0x0;
  local_90 = param_1;
  local_20 = 7;
  local_b4 = (undefined *)0x769997;
  FUN_0040180b();
  local_c = 0;
  piStack_b0 = (int *)local_38;
  local_b4 = (undefined *)0x7699ab;
  local_99 = FUN_00768ef3();
  if (local_99 != '\0') {
    piStack_b0 = (int *)local_38;
    local_b4 = local_5c;
    puVar4 = (undefined4 *)FUN_0046752c();
    local_c = CONCAT31(local_c._1_3_,1);
    local_b4 = (undefined *)*puVar4;
    local_98 = &local_b4;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar4 + 1);
  }
  piStack_b0 = (int *)0x83485e7a;
  local_b4 = (undefined *)0x7699c2;
  FUN_00b940e0();
  piStack_b0 = local_8c;
  local_b4 = (undefined *)0x769b37;
  FUN_004382a5();
  local_c = CONCAT31(local_c._1_3_,6);
  if (local_99 != '\0') {
    piStack_b0 = local_8c;
    local_b4 = (undefined *)0x769b52;
    local_99 = FUN_0076912a();
    if (local_99 == '\0') {
      piStack_b0 = (int *)0xcc0529e8;
      local_b4 = (undefined *)0x769b69;
      FUN_00b940e0();
    }
  }
  uVar2 = local_80;
  if (local_7c < local_80) {
    piStack_b0 = (int *)0x769b7b;
    FUN_00a3fb10();
  }
  local_98 = (undefined **)local_8c[0];
  local_94 = uVar2;
  if (local_99 != '\0') {
    while( true ) {
      iVar1 = (int)local_98;
      piStack_b0 = (int *)0x769b9a;
      cVar3 = (**(code **)(**(int **)(param_1_00 + 4) + 0xc))();
      uVar2 = local_7c;
      if (cVar3 != '\0') break;
      if (local_7c < local_80) {
        piStack_b0 = (int *)0x769bb3;
        FUN_00a3fb10();
      }
      if ((iVar1 == 0) || (iVar1 != local_8c[0])) {
        piStack_b0 = (int *)0x769bc2;
        FUN_00a3fb10();
      }
      if (local_94 == uVar2) break;
      piStack_b0 = (int *)0x769bd1;
      piStack_b0 = (int *)FUN_007c96e9();
      local_b4 = (undefined *)0x769bdb;
      uVar5 = FUN_00ba83f0();
      local_b4 = (undefined *)piStack_b0;
      local_c._0_1_ = 7;
      piStack_b0 = (int *)uVar5;
      local_b4 = (undefined *)FUN_0076a1fb(&DAT_00dd9c40);
      uVar5 = FUN_004f49f1();
      FUN_005f20c3(uVar5);
      piStack_b0 = (int *)0x0;
      local_b4 = (undefined *)0x1;
      local_c = CONCAT31(local_c._1_3_,6);
      FUN_004017b2();
      piStack_b0 = (int *)0x769c20;
      FUN_0076a302();
    }
    piStack_b0 = (int *)local_90;
    local_b4 = (undefined *)0x769c32;
    FUN_005f20c3();
  }
  piStack_b0 = (int *)0x769c3c;
  FUN_0076a2d5();
  piStack_b0 = (int *)0x0;
  local_b4 = (undefined *)0x1;
  FUN_00401829();
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00769fbf(undefined4 param_1,undefined2 param_2)

{
  int iVar1;
  uint local_38 [5];
  undefined local_24 [12];
  uint *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x769fcb;
  local_18 = local_38;
  local_38[0] = 0;
  iVar1 = FUN_00443a80(local_24,param_2,0);
  local_8 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0076a0d7(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x76a0e3;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0x137;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_0076a1fb(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  char *pcVar3;
  int *piVar4;
  uint local_38 [3];
  char local_2c;
  undefined4 local_28;
  locale local_24 [4];
  undefined4 local_20;
  int *local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x76a207;
  local_20 = 0;
  local_1c = param_1_00;
  FUN_00425790(param_1_00);
  local_8 = 0;
  if (local_2c != '\0') {
    uVar2 = FUN_00417498(local_24);
    local_8._0_1_ = 1;
    FUN_00424900(uVar2);
    std::locale::~locale(local_24);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar1 = *(int *)(*param_1_00 + 4);
    local_28 = CONCAT31(local_28._1_3_,*(undefined *)((int)param_1_00 + iVar1 + 0x30));
    local_38[0] = local_38[0] & 0xffffff00;
    pcVar3 = (char *)FUN_0076a35a(local_38,local_38[0],
                                  *(undefined4 *)((int)param_1_00 + iVar1 + 0x28),
                                  *(int *)(*param_1_00 + 4) + (int)param_1_00,local_28,param_1);
    if (*pcVar3 != '\0') {
      local_20 = 4;
    }
    local_8 = 0;
    piVar4 = (int *)FUN_0076a2af();
    return piVar4;
  }
  FUN_004259e0(local_20,0);
  local_8 = 0xffffffff;
  FUN_00425900();
  return param_1_00;
}



undefined * Catch_All_0076a28d(void)

{
  int unaff_EBP;
  
  FUN_004259e0(4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_0076a2aa;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0076a2af(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  
  FUN_004259e0(*(undefined4 *)(unaff_EBP + -0x1c),unaff_EBX);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00425900();
  return;
}



void FUN_0076a2d5(void)

{
  undefined4 *unaff_ESI;
  
  if (unaff_ESI[3] != 0) {
    FUN_0076a37b(unaff_ESI[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI[3]);
  }
  unaff_ESI[3] = 0;
  unaff_ESI[4] = 0;
  unaff_ESI[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*unaff_ESI);
}



void FUN_0076a302(void)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_0076a319;
    }
  }
  iVar2 = *piVar1;
LAB_0076a319:
  if (*(int **)(iVar2 + 0x10) <= unaff_ESI[1]) {
    FUN_00a3fb10();
  }
  unaff_ESI[1] = unaff_ESI[1] + 10;
  return;
}



void FUN_0076a32d(void)

{
  undefined4 *unaff_ESI;
  
  if (unaff_ESI[3] != 0) {
    FUN_0076a3e2(unaff_ESI[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI[3]);
  }
  unaff_ESI[3] = 0;
  unaff_ESI[4] = 0;
  unaff_ESI[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*unaff_ESI);
}



undefined4 __thiscall
FUN_0076a35a(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  (**(code **)(*param_1_00 + 4))(param_1,param_2,param_3,param_4,param_5,param_6);
  return param_1;
}



void FUN_0076a37b(int param_1)

{
  int in_EAX;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 0x28) {
    FUN_00401829(1,0);
  }
  return;
}



void __fastcall FUN_0076a398(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 0x28) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 * 0x28);
  return;
}



void FUN_0076a3e2(int param_1)

{
  int in_EAX;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 0x24) {
    FUN_00401829(1,0);
  }
  return;
}



void FUN_0076a3ff(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_10 = param_1;
  uStack_c = param_2;
  uStack_8 = param_3;
  cVar1 = FUN_007f2630(&local_10);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_10;
      unaff_EBX[3] = uStack_c;
      unaff_EBX[4] = uStack_8;
    }
    *unaff_EBX = &DAT_02bd5499;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



void FUN_0076a445(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_02bd54a1;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_0076a48e(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_10 = param_1;
  uStack_c = param_2;
  uStack_8 = param_3;
  cVar1 = FUN_007f2630(&local_10);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_10;
      unaff_EBX[3] = uStack_c;
      unaff_EBX[4] = uStack_8;
    }
    *unaff_EBX = &DAT_02bd54a9;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



void FUN_0076a4d4(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_10 = param_1;
  uStack_c = param_2;
  uStack_8 = param_3;
  cVar1 = FUN_007f2630(&local_10);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_10;
      unaff_EBX[3] = uStack_c;
      unaff_EBX[4] = uStack_8;
    }
    *unaff_EBX = &DAT_02bd54b1;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0076a51a(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  basic_string<>(param_2);
  uVar1 = FUN_00473d6b(param_3);
  basic_string<>(uVar1);
  FUN_00401829(1,0);
  return param_1;
}



void FUN_0076a561(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0076a655(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::WE6165B8A,class_boost::filesystem::basic_ofstream<char,struct_std::char_traits<char>_>&>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::WE6165B8A*>,class_boost::reference_wrapper<class_boost::filesystem::basic_ofstream<char,struct_std::char_traits<char>_>_>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0076a5a8(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0076a6a1(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::WE6165B8A>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WE6165B8A*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0076a5e3(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0076a6ea(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W8E975A95::W1BB824FB&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&),class_boost::_bi::list3<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W8E975A95::W1BB824FB>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0076a61c(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0076a736(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W8E975A95::W1BB824FB&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list5<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W8E975A95::W1BB824FB>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_0076a655(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::WE6165B8A,class_boost::filesystem::basic_ofstream<char,struct_std::char_traits<char>_>&>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::WE6165B8A*>,class_boost::reference_wrapper<class_boost::filesystem::basic_ofstream<char,struct_std::char_traits<char>_>_>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf1<bool,class_W01568D36::WE6165B8A,class_boost::filesystem::basic_ofstream<char,struct_std::char_traits<char>_>&>,class_boost::_bi::list2<class_boost::_bi::value<class_W01568D36::WE6165B8A*>,class_boost::reference_wrapper<class_boost::filesystem::basic_ofstream<char,struct_std::char_traits<char>_>_>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void FUN_0076a6a1(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::WE6165B8A>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WE6165B8A*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf0<bool,class_W01568D36::WE6165B8A>,class_boost::_bi::list1<class_boost::_bi::value<class_W01568D36::WE6165B8A*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_0076a6ea(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W8E975A95::W1BB824FB&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&),class_boost::_bi::list3<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W8E975A95::W1BB824FB>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W8E975A95::W1BB824FB&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&),class_boost::_bi::list3<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W8E975A95::W1BB824FB>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void __fastcall FUN_0076a736(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W8E975A95::W1BB824FB&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list5<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W8E975A95::W1BB824FB>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W8E975A95::W1BB824FB&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list5<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W8E975A95::W1BB824FB>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0076a7d0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  basic_string<>(param_2);
  uVar1 = FID_conflict_append(1,param_3);
  basic_string<>(uVar1);
  FUN_00401829(1,0);
  return param_1;
}



char __thiscall FUN_0076a819(int *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  char cVar1;
  undefined auStack_a0 [8];
  undefined4 uStack_98;
  undefined *puStack_94;
  undefined4 *puStack_90;
  undefined4 *puStack_8c;
  undefined4 uStack_88;
  uint uStack_84;
  undefined auStack_74 [28];
  undefined4 local_58 [8];
  undefined4 local_38 [6];
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c4887f;
  local_14 = ExceptionList;
  uStack_84 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_14;
  local_38[0] = 0;
  local_58[0] = 0;
  uStack_88 = param_3;
  puStack_8c = local_58;
  puStack_90 = local_38;
  local_c = 1;
  if (param_2 == 3) {
    puStack_94 = (undefined *)0x76a873;
    cVar1 = (**(code **)(*param_1_00 + 0xc))();
  }
  else {
    puStack_94 = (undefined *)0x76a878;
    cVar1 = (**(code **)(*param_1_00 + 0x10))();
  }
  if (cVar1 == '\0') {
    puStack_94 = (undefined *)0x4015b764;
    uStack_98 = 0x76a88f;
    FUN_00b940e0();
  }
  else {
    FUN_00672a11();
    FUN_0076c095();
    uStack_18._0_1_ = 2;
    FUN_00672a11();
    FUN_0076c095(auStack_a0);
    uStack_18._0_1_ = 1;
    FUN_0069aa33();
    uStack_18._0_1_ = 3;
    puStack_94 = (undefined *)0x76a8fe;
    FUN_0074ce89();
    uStack_18 = CONCAT31(uStack_18._1_3_,1);
    uStack_98 = 0x76a90b;
    puStack_94 = auStack_74;
    FUN_0074cea2();
  }
  uStack_18 = uStack_18 & 0xffffff00;
  puStack_94 = (undefined *)0x76a91a;
  FUN_00507e58();
  uStack_18 = 0xffffffff;
  puStack_94 = (undefined *)0x76a928;
  FUN_00507e58();
  ExceptionList = pvStack_20;
  return cVar1;
}



char __thiscall FUN_0076a941(int *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  char cVar1;
  undefined auStack_a0 [8];
  undefined4 uStack_98;
  undefined *puStack_94;
  undefined4 *puStack_90;
  undefined4 *puStack_8c;
  undefined4 uStack_88;
  uint uStack_84;
  undefined auStack_74 [28];
  undefined4 local_58 [8];
  undefined4 local_38 [6];
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c4887f;
  local_14 = ExceptionList;
  uStack_84 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_14;
  local_38[0] = 0;
  local_58[0] = 0;
  uStack_88 = param_3;
  puStack_8c = local_58;
  puStack_90 = local_38;
  local_c = 1;
  if (param_2 == 3) {
    puStack_94 = (undefined *)0x76a99b;
    cVar1 = (**(code **)(*param_1_00 + 0x14))();
  }
  else {
    puStack_94 = (undefined *)0x76a9a0;
    cVar1 = (**(code **)(*param_1_00 + 0x18))();
  }
  if (cVar1 == '\0') {
    puStack_94 = (undefined *)0x10350344;
    uStack_98 = 0x76a9b7;
    FUN_00b940e0();
  }
  else {
    FUN_00672a11();
    FUN_0076c095();
    uStack_18._0_1_ = 2;
    FUN_00672a11();
    FUN_0076c095(auStack_a0);
    uStack_18._0_1_ = 1;
    FUN_0069aa33();
    uStack_18._0_1_ = 3;
    puStack_94 = (undefined *)0x76aa26;
    FUN_0074ce89();
    uStack_18 = CONCAT31(uStack_18._1_3_,1);
    uStack_98 = 0x76aa33;
    puStack_94 = auStack_74;
    FUN_0074cea2();
  }
  uStack_18 = uStack_18 & 0xffffff00;
  puStack_94 = (undefined *)0x76aa42;
  FUN_00507e58();
  uStack_18 = 0xffffffff;
  puStack_94 = (undefined *)0x76aa50;
  FUN_00507e58();
  ExceptionList = pvStack_20;
  return cVar1;
}



char FUN_0076aa69(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x34 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x7c679e61);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076aabd(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x34 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x99af9bf0);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076ab11(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x34 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xccf297a5);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076ab65(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x34 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x7868349e);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076abb9(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x50 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x84cbac9f);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076ac0d(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x51 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xd8008467);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076ac61(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x50 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x186085f2);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076acb5(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x51 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xc5a4c09c);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076ad09(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x35 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xa632a476);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076ad5d(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x51 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xa8cf56f);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076adb1(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x35 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x37ad39cf);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076ae05(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x51 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x6aefb093);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076ae59(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x35 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xb1c4ae54);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076aead(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x51 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x7a76ce26);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076af01(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x35 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xaca08c18);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



char FUN_0076af55(undefined4 param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  
  cVar1 = '\x01' - (0x51 < param_3);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x6f9c0277);
  }
  else {
    FUN_004fc968(param_1);
    FUN_004fc968(param_2);
  }
  return cVar1;
}



void __fastcall FUN_0076afa9(undefined4 *param_1)

{
  *param_1 = W8E975A95::W84EEC6CF::vftable;
  return;
}



undefined4 * __thiscall FUN_0076afb0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8E975A95::W84EEC6CF::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0076afcd(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x14);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W8E975A95::WA62849A0::vftable;
    puVar2[1] = 0;
    puVar2[2] = 0;
    puVar2[3] = 0;
    puVar2[4] = 0;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0076b0f3(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0076b03f(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x14);
  if (pvVar1 != (void *)0x0) {
    FUN_00b7a7ed(param_3);
  }
  FUN_0076b0a6(param_1);
  return param_1;
}



undefined4 __thiscall FUN_0076b08a(undefined4 param_1_00,byte param_1)

{
  FUN_00ba3e42();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0076b0a6(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_0076b150(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0076b0f3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8E975A95::WA62849A0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0076b139(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0076b150(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8E975A95::WC2D410C7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0076b196(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0076b218(undefined4 param_1_00,byte param_1)

{
  FUN_00b7b558();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0076b234(char *param_1)

{
  char *in_EAX;
  
  if (*in_EAX == '\0') {
    if (*param_1 != '\0') {
      if (in_EAX + 1 != (char *)0x0) {
        in_EAX[1] = param_1[1];
      }
      *in_EAX = '\x01';
    }
    return;
  }
  if (*param_1 != '\0') {
    in_EAX[1] = param_1[1];
    return;
  }
  *in_EAX = '\0';
  return;
}



void Catch_All_0076b2a4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0076b2bb(void)

{
  int in_EAX;
  undefined4 uVar1;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  if ((local_c == 0) || (local_c != local_14)) {
    FUN_00a3fb10();
  }
  if (local_8 != local_10) {
    uVar1 = FUN_0076ba6d(*(undefined4 *)(in_EAX + 0x10),local_8);
    FUN_0076a37b(*(undefined4 *)(in_EAX + 0x10));
    *(undefined4 *)(in_EAX + 0x10) = uVar1;
  }
  return;
}



void FUN_0076b32a(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x11) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x11) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x11) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x11) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x11) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x11) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



void FUN_0076b38b(int **param_1,undefined4 param_2,int *param_3,int param_4)

{
  int *piVar1;
  int **in_EAX;
  int iVar2;
  int iVar3;
  int *piVar4;
  
  piVar4 = in_EAX[3];
  if (((int)in_EAX[4] - (int)piVar4) / 0x24 == 0) {
    iVar3 = 0;
  }
  else {
    if (in_EAX[4] < piVar4) {
      FUN_00a3fb10();
    }
    if ((param_3 == (int *)0x0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    iVar3 = (param_4 - (int)piVar4) / 0x24;
  }
  FUN_0076b57d(param_3,param_4);
  piVar4 = in_EAX[3];
  if (in_EAX[4] < piVar4) {
    FUN_00a3fb10();
  }
  piVar1 = *in_EAX;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1;
  }
  piVar4 = piVar4 + iVar3 * 9;
  if (piVar4 <= *(int **)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(int **)(iVar3 + 0xc) <= piVar4) goto LAB_0076b428;
  }
  FUN_00a3fb10();
LAB_0076b428:
  param_1[1] = piVar4;
  *param_1 = piVar1;
  return;
}



int FUN_0076b43a(int param_1,int param_2,undefined4 param_3)

{
  FUN_0076baf9(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x24 + param_1;
}



void FUN_0076b46a(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int in_EAX;
  int iVar1;
  int *piVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc)) / 0x28 == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = (param_4 - local_8) / 0x28;
  }
  FUN_0076b7c9(param_3,param_4);
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar1 = 0;
  }
  else {
    iVar1 = *local_14;
  }
  piVar2 = (int *)(local_10 + local_8 * 0x28);
  if (piVar2 <= *(int **)(iVar1 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *local_14;
    }
    if (*(int **)(iVar1 + 0xc) <= piVar2) goto LAB_0076b50a;
  }
  FUN_00a3fb10();
LAB_0076b50a:
  param_1[1] = piVar2;
  *param_1 = local_14;
  return;
}



int FUN_0076b519(int param_1,int param_2,undefined4 param_3)

{
  FUN_0076bb4d(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x28 + param_1;
}



void FUN_0076b549(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x14);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_4;
    *(undefined *)(puVar1 + 4) = 0;
    *(undefined *)((int)puVar1 + 0x11) = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __fastcall FUN_0076b57d(int param_1_00,int param_2_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int extraout_ECX;
  uint uVar5;
  undefined auStack_3c [28];
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x5c;
  local_8 = 0x76b589;
  iVar4 = *(int *)(param_1_00 + 0xc);
  if (iVar4 == 0) {
    uVar5 = 0;
  }
  else {
    uVar5 = (*(int *)(param_1_00 + 0x14) - iVar4) / 0x24;
  }
  iVar2 = (*(int *)(param_1_00 + 0x10) - iVar4) / 0x24;
  iVar4 = 0x71c71c7;
  if (iVar2 == 0x71c71c7) {
    iVar2 = FUN_004423c1();
    iVar4 = extraout_ECX;
  }
  uVar1 = iVar2 + 1;
  if (uVar5 < uVar1) {
    if (iVar4 - (uVar5 >> 1) < uVar5) {
      uVar5 = 0;
    }
    else {
      uVar5 = uVar5 + (uVar5 >> 1);
    }
    if (uVar5 < uVar1) {
      uVar5 = uVar1;
    }
    iVar4 = FUN_0068faf2();
    iVar2 = (param_2 - *(int *)(param_1_00 + 0xc)) / 0x24;
    local_8 = 0;
    FUN_0076b43a(iVar2 * 0x24 + iVar4,1,param_2_00);
    FUN_0076bab1(param_2,iVar4);
    FUN_0076bab1(*(undefined4 *)(param_1_00 + 0x10),(iVar2 + 1) * 0x24 + iVar4);
    if (*(int *)(param_1_00 + 0xc) != 0) {
      FUN_0076a3e2(*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
    }
    *(uint *)(param_1_00 + 0x14) = uVar5 * 0x24 + iVar4;
    *(int *)(param_1_00 + 0x10) =
         ((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x24 + 1) * 0x24 + iVar4;
    *(int *)(param_1_00 + 0xc) = iVar4;
  }
  else {
    if ((*(int *)(param_1_00 + 0x10) - param_2) / 0x24 == 0) {
      basic_string<>(param_2_00);
      uStack_20 = *(undefined4 *)(param_2_00 + 0x1c);
      uStack_1c = *(undefined4 *)(param_2_00 + 0x20);
      local_8 = 2;
      FUN_0076bab1(*(undefined4 *)(param_1_00 + 0x10),param_2 + 0x24);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_0076b43a(*(int *)(param_1_00 + 0x10),1 - (*(int *)(param_1_00 + 0x10) - param_2) / 0x24,
                   auStack_3c);
      local_8 = 2;
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 0x24;
      FUN_0068f8f6(*(int *)(param_1_00 + 0x10) + -0x24);
    }
    else {
      basic_string<>(param_2_00);
      local_8 = 5;
      uVar3 = FUN_0076bab1(*(undefined4 *)(param_1_00 + 0x10),*(undefined4 *)(param_1_00 + 0x10));
      *(undefined4 *)(param_1_00 + 0x10) = uVar3;
      FUN_0068f8a2(param_2);
      FUN_0068f8f6(param_2 + 0x24);
    }
    FUN_00401829(1,0);
  }
  FUN_00a4220a();
  return;
}



void Catch_All_0076b68a(void)

{
  int unaff_EBP;
  
  if (1 < *(int *)(unaff_EBP + -0x68)) {
    FUN_0076a3e2(*(int *)(unaff_EBP + -100) * 0x24 + *(int *)(unaff_EBP + -0x60));
  }
  if (0 < *(int *)(unaff_EBP + -0x68)) {
    FUN_0076a3e2((*(int *)(unaff_EBP + -100) + 1) * 0x24 + *(int *)(unaff_EBP + -0x60));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x60));
}



void FUN_0076b6cb(void)

{
  undefined4 uVar1;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  
  __CxxThrowException_8();
  if ((*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_EBP + 0xc)) / 0x24 == 0) {
    basic_string<>();
    *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EDI + 0x1c);
    *(undefined4 *)(unaff_EBP + -0x18) = *(undefined4 *)(unaff_EDI + 0x20);
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_0076bab1();
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_0076b43a(*(undefined4 *)(unaff_ESI + 0x10));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 0x24;
    FUN_0068f8f6();
  }
  else {
    basic_string<>();
    *(undefined4 *)(unaff_EBP + -0x40) = *(undefined4 *)(unaff_EDI + 0x1c);
    *(undefined4 *)(unaff_EBP + -0x3c) = *(undefined4 *)(unaff_EDI + 0x20);
    *(undefined4 *)(unaff_EBP + -4) = 5;
    uVar1 = FUN_0076bab1();
    *(undefined4 *)(unaff_ESI + 0x10) = uVar1;
    FUN_0068f8a2();
    FUN_0068f8f6();
  }
  FUN_00401829();
  FUN_00a4220a();
  return;
}



void Catch_All_0076b74e(void)

{
  int unaff_EBP;
  
  FUN_0076a3e2(*(int *)(*(int *)(unaff_EBP + -100) + 0x10) + 0x24);
  FUN_0076b6cb(0);
  return;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __fastcall FUN_0076b7c9(int param_1_00,int param_2_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int extraout_ECX;
  uint uVar5;
  undefined auStack_40 [28];
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8 = 0x76b7d5;
  iVar4 = *(int *)(param_1_00 + 0xc);
  if (iVar4 == 0) {
    uVar5 = 0;
  }
  else {
    uVar5 = (*(int *)(param_1_00 + 0x14) - iVar4) / 0x28;
  }
  iVar2 = (*(int *)(param_1_00 + 0x10) - iVar4) / 0x28;
  iVar4 = 0x6666666;
  if (iVar2 == 0x6666666) {
    iVar2 = FUN_004423c1();
    iVar4 = extraout_ECX;
  }
  uVar1 = iVar2 + 1;
  if (uVar5 < uVar1) {
    if (iVar4 - (uVar5 >> 1) < uVar5) {
      uVar5 = 0;
    }
    else {
      uVar5 = uVar5 + (uVar5 >> 1);
    }
    if (uVar5 < uVar1) {
      uVar5 = uVar1;
    }
    iVar4 = FUN_0076a398();
    iVar2 = (param_2 - *(int *)(param_1_00 + 0xc)) / 0x28;
    local_8 = 0;
    FUN_0076b519(iVar2 * 0x28 + iVar4,1,param_2_00);
    FUN_0076bad5(param_2,iVar4);
    FUN_0076bad5(*(undefined4 *)(param_1_00 + 0x10),(iVar2 + 1) * 0x28 + iVar4);
    if (*(int *)(param_1_00 + 0xc) != 0) {
      FUN_0076a37b(*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
    }
    *(uint *)(param_1_00 + 0x14) = uVar5 * 0x28 + iVar4;
    *(int *)(param_1_00 + 0x10) =
         ((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x28 + 1) * 0x28 + iVar4;
    *(int *)(param_1_00 + 0xc) = iVar4;
  }
  else {
    if ((*(int *)(param_1_00 + 0x10) - param_2) / 0x28 == 0) {
      basic_string<>(param_2_00);
      uStack_24 = *(undefined4 *)(param_2_00 + 0x1c);
      uStack_20 = *(undefined4 *)(param_2_00 + 0x20);
      uStack_1c = *(undefined4 *)(param_2_00 + 0x24);
      local_8 = 2;
      FUN_0076bad5(*(undefined4 *)(param_1_00 + 0x10),param_2 + 0x28);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_0076b519(*(int *)(param_1_00 + 0x10),1 - (*(int *)(param_1_00 + 0x10) - param_2) / 0x28,
                   auStack_40);
      local_8 = 2;
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 0x28;
      iVar4 = *(int *)(param_1_00 + 0x10);
      for (; param_2 != iVar4 + -0x28; param_2 = param_2 + 0x28) {
        FUN_0076bba2();
      }
    }
    else {
      basic_string<>(param_2_00);
      local_8 = 5;
      iVar4 = *(int *)(param_1_00 + 0x10);
      uVar3 = FUN_0076bad5(iVar4,iVar4);
      *(undefined4 *)(param_1_00 + 0x10) = uVar3;
      while (iVar4 = iVar4 + -0x28, param_2 != iVar4) {
        FUN_0076bba2();
      }
      iVar4 = param_2 + 0x28;
      if (param_2 != iVar4) {
        do {
          FUN_0076bba2();
          param_2 = param_2 + 0x28;
        } while (param_2 != iVar4);
      }
    }
    FUN_00401829(1,0);
  }
  FUN_00a4220a();
  return;
}



void Catch_All_0076b8d6(void)

{
  int unaff_EBP;
  
  if (1 < *(int *)(unaff_EBP + -0x70)) {
    FUN_0076a37b(*(int *)(unaff_EBP + -0x68) * 0x28 + *(int *)(unaff_EBP + -0x6c));
  }
  if (0 < *(int *)(unaff_EBP + -0x70)) {
    FUN_0076a37b((*(int *)(unaff_EBP + -0x68) + 1) * 0x28 + *(int *)(unaff_EBP + -0x6c));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x6c));
}



void FUN_0076b917(void)

{
  undefined4 uVar1;
  int iVar2;
  int unaff_EBP;
  int unaff_ESI;
  int iVar3;
  int iVar4;
  int unaff_EDI;
  
  __CxxThrowException_8();
  if ((*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_EBP + 0xc)) / 0x28 == 0) {
    basic_string<>();
    *(undefined4 *)(unaff_EBP + -0x20) = *(undefined4 *)(unaff_EDI + 0x1c);
    *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EDI + 0x20);
    *(undefined4 *)(unaff_EBP + -0x18) = *(undefined4 *)(unaff_EDI + 0x24);
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_0076bad5();
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_0076b519(*(undefined4 *)(unaff_ESI + 0x10));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 0x28;
    iVar2 = *(int *)(unaff_ESI + 0x10);
    for (iVar3 = *(int *)(unaff_EBP + 0xc); iVar3 != iVar2 + -0x28; iVar3 = iVar3 + 0x28) {
      FUN_0076bba2();
    }
  }
  else {
    basic_string<>();
    *(undefined4 *)(unaff_EBP + -0x48) = *(undefined4 *)(unaff_EDI + 0x1c);
    *(undefined4 *)(unaff_EBP + -0x44) = *(undefined4 *)(unaff_EDI + 0x20);
    *(undefined4 *)(unaff_EBP + -0x40) = *(undefined4 *)(unaff_EDI + 0x24);
    *(undefined4 *)(unaff_EBP + -4) = 5;
    iVar3 = *(int *)(unaff_ESI + 0x10);
    iVar2 = iVar3 + -0x28;
    uVar1 = FUN_0076bad5();
    *(undefined4 *)(unaff_ESI + 0x10) = uVar1;
    iVar4 = *(int *)(unaff_EBP + 0xc);
    *(int *)(unaff_EBP + -0x70) = iVar4;
    if (iVar4 != iVar2) {
      *(int *)(unaff_EBP + -0x68) = iVar3;
      *(int *)(unaff_EBP + -0x68) = *(int *)(unaff_EBP + -0x68) - iVar2;
      do {
        iVar2 = iVar2 + -0x28;
        FUN_0076bba2();
      } while (iVar2 != *(int *)(unaff_EBP + -0x70));
      iVar4 = *(int *)(unaff_EBP + 0xc);
    }
    iVar2 = iVar4 + 0x28;
    for (; iVar4 != iVar2; iVar4 = iVar4 + 0x28) {
      FUN_0076bba2();
    }
  }
  FUN_00401829();
  FUN_00a4220a();
  return;
}



void Catch_All_0076b9ab(void)

{
  int unaff_EBP;
  
  FUN_0076a37b(*(int *)(*(int *)(unaff_EBP + -0x68) + 0x10) + 0x28);
  FUN_0076b917(0);
  return;
}



void FUN_0076ba50(void)

{
  int unaff_ESI;
  int unaff_EDI;
  
  basic_string<>(unaff_EDI);
  *(undefined4 *)(unaff_ESI + 0x1c) = *(undefined4 *)(unaff_EDI + 0x1c);
  *(undefined4 *)(unaff_ESI + 0x20) = *(undefined4 *)(unaff_EDI + 0x20);
  *(undefined4 *)(unaff_ESI + 0x24) = *(undefined4 *)(unaff_EDI + 0x24);
  return;
}



int FUN_0076ba6d(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = param_1 - in_EAX;
  if (in_EAX != param_1) {
    do {
      FUN_0076bba2();
      in_EAX = in_EAX + 0x28;
    } while (in_EAX != param_1);
  }
  return (iVar1 / 0x28) * 0x28 + param_2;
}



void FUN_0076bab1(undefined4 param_1,undefined4 param_2)

{
  FUN_0076bc1e(param_1,param_2,param_2,0);
  return;
}



void FUN_0076bad5(undefined4 param_1,undefined4 param_2)

{
  FUN_0076bc72(param_1,param_2,param_2,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_0076baf9(undefined4 param_1,int param_2)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c297a7;
  for (; param_2 != 0; param_2 = param_2 + -1) {
    puVar1 = (undefined *)FUN_0076bbc3();
  }
  return puVar1;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_0076bb28(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 8); iVar1 = iVar1 + 0x24)
  {
    FUN_00401829(1,0);
  }
  __CxxThrowException_8(0,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0076bb4d(undefined4 param_1,int param_2)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    FUN_0076bbf7();
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_0076bb7d(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 8); iVar1 = iVar1 + 0x28)
  {
    FUN_00401829(1,0);
  }
  __CxxThrowException_8(0,0);
  return;
}



void FUN_0076bba2(void)

{
  int unaff_ESI;
  int unaff_EDI;
  
  FID_conflict_assign(unaff_EDI,0,0xffffffff);
  *(undefined4 *)(unaff_ESI + 0x1c) = *(undefined4 *)(unaff_EDI + 0x1c);
  *(undefined4 *)(unaff_ESI + 0x20) = *(undefined4 *)(unaff_EDI + 0x20);
  *(undefined4 *)(unaff_ESI + 0x24) = *(undefined4 *)(unaff_EDI + 0x24);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_0076bbc3(void)

{
  undefined *puVar1;
  int unaff_ESI;
  int unaff_EDI;
  
  puVar1 = &LAB_00c29771;
  if (unaff_ESI != 0) {
    basic_string<>(unaff_EDI);
    *(undefined4 *)(unaff_ESI + 0x1c) = *(undefined4 *)(unaff_EDI + 0x1c);
    puVar1 = *(undefined **)(unaff_EDI + 0x20);
    *(undefined **)(unaff_ESI + 0x20) = puVar1;
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_0076bbf7(int param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c29771;
  if (param_1 != 0) {
    puVar1 = (undefined *)FUN_0076ba50();
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_0076bc1e(int param_1_00,int param_1,int param_2)

{
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0x24) {
    FUN_0076bbc3();
    param_2 = param_2 + 0x24;
  }
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int Catch_All_0076bc4b(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0xc); iVar1 = iVar1 + 0x24
      ) {
    FUN_00401829(1,0);
  }
  __CxxThrowException_8(0,0);
  return iVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_0076bc72(int param_1_00,int param_1,int param_2)

{
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0x28) {
    FUN_0076bbf7();
    param_2 = param_2 + 0x28;
  }
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 Catch_All_0076bca0(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0xc); iVar1 = iVar1 + 0x28
      ) {
    FUN_00401829(1,0);
  }
  __CxxThrowException_8(0,0);
  return *(undefined4 *)(unaff_EBP + 0xc);
}



undefined4 __thiscall FUN_0076bcc8(undefined4 param_1_00,byte param_1)

{
  FUN_00b7b045();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0076bce4(undefined4 *param_1)

{
  *param_1 = W8E975A95::W68E563A2::vftable;
  return;
}



undefined4 * __thiscall FUN_0076bceb(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8E975A95::W68E563A2::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0076bd50(undefined4 param_1_00,byte param_1)

{
  FUN_00b7a97a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int FUN_0076bd6c(uint param_1)

{
  int unaff_ESI;
  
  if ((uint)((*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc)) / 0x18) <= param_1) {
    FUN_00a3fb10();
  }
  return param_1 * 0x18 + *(int *)(unaff_ESI + 0xc);
}



void FUN_0076bd90(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  undefined4 uVar2;
  uint uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (*(int *)(in_EAX + 0x14) - iVar1) / 0x18;
  }
  if ((uint)((*(int *)(in_EAX + 0x10) - iVar1) / 0x18) < uVar3) {
    uVar2 = FUN_005d0ee7(*(int *)(in_EAX + 0x10),1,param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar2;
  }
  else {
    FUN_0046e65a();
    FUN_005d0e38(&local_10,param_1,local_10,local_c);
  }
  return;
}



int * FUN_0076bdf7(int param_1,int *param_2)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  int local_c;
  undefined4 *local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  if ((*param_2 == 0) || (*param_2 != local_c)) {
    FUN_00a3fb10();
  }
  puVar1 = (undefined4 *)param_2[1];
  if (puVar1 != local_8) {
    puVar2 = *(undefined4 **)(param_1 + 0x10);
    if (local_8 != puVar2) {
      puVar4 = local_8;
      do {
        puVar5 = puVar4 + 6;
        puVar6 = (undefined4 *)(((int)puVar1 - (int)local_8) + (int)puVar4);
        for (iVar3 = 6; iVar3 != 0; iVar3 = iVar3 + -1) {
          *puVar6 = *puVar4;
          puVar4 = puVar4 + 1;
          puVar6 = puVar6 + 1;
        }
        puVar4 = puVar5;
      } while (puVar5 != puVar2);
    }
    *(undefined4 **)(param_1 + 0x10) = puVar1 + (((int)puVar2 - (int)local_8) / 0x18) * 6;
  }
  return param_2;
}



void FUN_0076be7d(undefined4 *param_1,int param_2,undefined4 *param_3)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  if (param_2 != 0) {
    do {
      if (param_1 != (undefined4 *)0x0) {
        puVar2 = param_3;
        puVar3 = param_1;
        for (iVar1 = 6; iVar1 != 0; iVar1 = iVar1 + -1) {
          *puVar3 = *puVar2;
          puVar2 = puVar2 + 1;
          puVar3 = puVar3 + 1;
        }
      }
      param_2 = param_2 + -1;
      param_1 = param_1 + 6;
    } while (param_2 != 0);
  }
  return;
}



void __fastcall FUN_0076bea9(undefined4 param_1_00,undefined4 *param_2,undefined4 *param_1)

{
  undefined4 *in_EAX;
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  if (param_2 != param_1) {
    do {
      if (in_EAX != (undefined4 *)0x0) {
        puVar2 = param_2;
        puVar3 = in_EAX;
        for (iVar1 = 6; iVar1 != 0; iVar1 = iVar1 + -1) {
          *puVar3 = *puVar2;
          puVar2 = puVar2 + 1;
          puVar3 = puVar3 + 1;
        }
      }
      param_2 = param_2 + 6;
      in_EAX = in_EAX + 6;
    } while (param_2 != param_1);
  }
  return;
}



undefined4 __thiscall FUN_0076becd(undefined4 param_1,byte param_2)

{
  FUN_00b7a7c6();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 * __thiscall FUN_0076bee9(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8E975A95::W858C0638::vftable;
  FUN_00ba327a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall
FUN_0076bf4e(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,byte *param_3)

{
  ushort uVar1;
  char cVar2;
  ushort uVar3;
  int extraout_EDX;
  int unaff_EDI;
  int iVar4;
  
  cVar2 = FUN_00b9a9d0(param_1_00);
  iVar4 = extraout_EDX;
  if (cVar2 != '\0') {
    for (; iVar4 != 0; iVar4 = iVar4 + -1) {
      uVar1 = *(ushort *)(unaff_EDI + 0x200);
      uVar3 = FUN_0068bc69(uVar1 >> 8 ^ (ushort)*param_3);
      param_3 = param_3 + 1;
      *(ushort *)(unaff_EDI + 0x200) = uVar3 ^ uVar1 << 8;
    }
  }
  return;
}



undefined4 __thiscall FUN_0076bfa1(undefined4 param_1_00,byte param_1)

{
  FUN_00b78f84();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __fastcall FUN_0076bfbd(undefined4 *param_1)

{
  undefined auStack_8c [20];
  undefined4 uStack_78;
  undefined *puStack_74;
  undefined *puStack_70;
  undefined local_5c [64];
  undefined local_1c [4];
  undefined *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0;
  puStack_70 = local_1c;
  puStack_74 = (undefined *)0x76bfd8;
  FUN_0076afcd();
  local_8._0_1_ = 1;
  puStack_70 = (undefined *)0x76bfe2;
  FUN_004fe47e();
  local_8._0_1_ = 0;
  if (local_18 != (undefined *)0x0) {
    puStack_70 = (undefined *)0x76bff2;
    FUN_0040127a();
  }
  puStack_70 = (undefined *)0x200;
  puStack_74 = local_5c;
  uStack_78 = 0x76c000;
  FUN_00b74200();
  local_18 = auStack_8c;
  local_8._0_1_ = 2;
  FUN_00672a11();
  local_11 = FUN_0076c102(local_5c);
  if (local_11 == '\0') {
    puStack_70 = (undefined *)0x4b4ba40e;
  }
  else {
    puStack_70 = local_1c;
    puStack_74 = (undefined *)0x76c037;
    FUN_0076afcd();
    local_8._0_1_ = 3;
    puStack_70 = (undefined *)0x76c041;
    FUN_004fe47e();
    local_8._0_1_ = 2;
    if (local_18 != (undefined *)0x0) {
      puStack_70 = (undefined *)0x76c051;
      FUN_0040127a();
    }
    puStack_70 = (undefined *)*param_1;
    puStack_74 = (undefined *)0x76c05e;
    FUN_00ba3f4c();
    if (local_11 != '\0') goto LAB_0076c074;
    puStack_70 = (undefined *)0x85352317;
  }
  puStack_74 = (undefined *)0x76c073;
  FUN_00b940e0();
LAB_0076c074:
  local_8 = (uint)local_8._1_3_ << 8;
  puStack_70 = (undefined *)0x76c080;
  FUN_00b73a90();
  local_8 = 0xffffffff;
  puStack_70 = (undefined *)0x76c08c;
  FUN_00507e58();
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0076c095(undefined4 *param_1)

{
  int iVar1;
  char cVar2;
  undefined auStack_50 [28];
  undefined4 uStack_34;
  undefined4 local_20;
  undefined *local_1c;
  undefined4 local_18;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 1;
  *param_1 = 0;
  param_1[1] = 0;
  local_1c = auStack_50;
  local_18 = 1;
  FUN_00672a11();
  cVar2 = FUN_0076bfbd();
  if (cVar2 == '\0') {
    if (&local_20 != param_1) {
      *param_1 = 0;
    }
    iVar1 = param_1[1];
    param_1[1] = 0;
    if (iVar1 != 0) {
      uStack_34 = 0x76c0ef;
      FUN_0040127a();
    }
  }
  local_8 = local_8 & 0xffffff00;
  uStack_34 = 0x76c0fa;
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_0076c102(undefined4 param_1,int param_2)

{
  char cVar1;
  int *piVar2;
  bool bVar3;
  undefined4 local_d8 [4];
  undefined *puStack_c8;
  undefined4 *puStack_c4;
  undefined *puStack_c0;
  undefined *puStack_bc;
  undefined local_a8 [40];
  undefined local_80 [8];
  undefined4 local_78;
  undefined4 local_74;
  undefined **local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x98;
  local_8 = 0;
  puStack_bc = (undefined *)0x200;
  puStack_c0 = local_80;
  puStack_c4 = (undefined4 *)0x76c123;
  FUN_00b74200();
  local_8._0_1_ = 1;
  bVar3 = (-(uint)(param_2 != 0) & 0x7a491c) != 0;
  if (bVar3) {
    local_18 = (undefined **)local_d8;
    FUN_00672a11();
    piVar2 = (int *)FUN_00ba6d80(local_a8);
    local_8._0_1_ = 2;
    local_d8[0] = 0;
    local_18 = (undefined **)local_d8;
    cVar1 = (**(code **)(*piVar2 + 4))(local_80);
    puStack_bc = local_a8;
    local_8._0_1_ = 1;
    puStack_c0 = (undefined *)0x76c18a;
    FUN_0046aa8b();
    if (cVar1 != '\0') {
      local_78 = 0;
      local_74 = 0;
      puStack_bc = (undefined *)0x76c1b4;
      puStack_c4 = (undefined4 *)FUN_00b93e40();
      local_18 = &puStack_c0;
      local_8 = CONCAT31(local_8._1_3_,3);
      puStack_c0 = (undefined *)*puStack_c4;
      puStack_c4 = puStack_c4 + 1;
                    // WARNING: Subroutine does not return
      puStack_c8 = &UNK_0076c1cf;
      FUN_0043c023();
    }
    puStack_bc = (undefined *)0x102e1f26;
    bVar3 = false;
  }
  else {
    puStack_bc = (undefined *)0x89ec8123;
  }
  puStack_c0 = (undefined *)0x76c19d;
  FUN_00b940e0();
  local_8 = (uint)local_8._1_3_ << 8;
  puStack_bc = (undefined *)0x76c244;
  FUN_00b73a90();
  local_8 = 0xffffffff;
  puStack_bc = (undefined *)0x76c250;
  FUN_00507e58();
  return bVar3;
}



undefined4 FUN_0076c258(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02bd5a88,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bd5c90,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02bd5e98,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bd60a0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02bd62a8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02bd64b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bd66b8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02bd68c0,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02bd6ac8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bd6cd0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02bd6ed8,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02bd70e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bd72e8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02bd74f0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02bd76f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bd7900,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02bd7b08,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02bd7d10,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bd7f18,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02bd8120,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02bd8328,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02bd8530,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02bd8738,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02bd8940,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bd8b48,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02bd8d50,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02bd8f58,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bd9160,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02bd9368,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02bd9570,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02bd9778,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02bd9980,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_02bd9b88,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_02bd9d90,0x1da,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0076c49b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02bd9f70,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02bda178,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02bda380,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02bda588,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02bda790,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02bda998,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02bdaba0,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02bdada8,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_02bdafb0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bdb1b8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02bdb3c0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02bdb5c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02bdb7d0,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02bdb9d8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02bdbbe0,0xca,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0076c59b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02bdbcb0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bdbeb8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02bdc0c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bdc2c8,0x200,param_2), cVar1 != '\0')))) &&
         (((((cVar1 = (*param_1)(&DAT_02bdc4d0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02bdc6d8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bdc8e0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02bdcae8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02bdccf0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bdcef8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02bdd100,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02bdd308,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bdd510,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02bdd718,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02bdd920,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bddb28,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02bddd30,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_02bddf38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bde140,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bde348,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02bde550,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bde758,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02bde960,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02bdeb68,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bded70,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02bdef78,0x200,param_2), cVar1 != '\0' &&
           (((((cVar1 = (*param_1)(&DAT_02bdf180,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02bdf388,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02bdf590,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02bdf798,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bdf9a0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02bdfba8,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02bdfdb0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bdffb8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02be01c0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02be03c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02be05d0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02be07d8,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02be09e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02be0be8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02be0df0,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02be0ff8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02be1200,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02be1408,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02be1610,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02be1818,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02be1a20,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_02be1c28,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02be1e30,0x200,param_2), cVar1 != '\0')))))) &&
     ((((cVar1 = (*param_1)(&DAT_02be2038,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_02be2240,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02be2448,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02be2650,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02be2858,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02be2a60,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02be2c68,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02be2e70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02be3078,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02be3280,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02be3488,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02be3690,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_02be3898,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02be3aa0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02be3ca8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02be3eb0,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02be40b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02be42c0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02be44c8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02be46d0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02be48d8,0x1de,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0076ca42(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_02be6d40,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02be6f48,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02be7150,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02be7358,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02be7560,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02be7768,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02be7970,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02be7b78,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02be7d80,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02be7f88,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02be8190,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02be8398,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02be85a0,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02be87a8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02be89b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02be8bb8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02be8dc0,0x200,param_2), cVar1 != '\0' &&
           (((((cVar1 = (*param_1)(&DAT_02be8fc8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02be91d0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02be93d8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02be95e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02be97e8,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02be99f0,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02be9bf8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02be9e00,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02bea008,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02bea210,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bea418,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02bea620,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02bea828,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02beaa30,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02beac38,0x200,param_2), cVar1 != '\0')))))) &&
      (((((cVar1 = (*param_1)(&DAT_02beae40,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02beb048,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02beb250,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02beb458,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02beb660,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02beb868,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02beba70,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02bebc78,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02bebe80,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02bec088,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bec290,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02bec498,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02bec6a0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02bec8a8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02becab0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02beccb8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02becec0,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_02bed0c8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02bed2d0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02bed4d8,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02bed6e0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02bed8e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bedaf0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02bedcf8,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02bedf00,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02bee108,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02bee310,0x200,param_2), cVar1 != '\0')))) &&
      (((cVar1 = (*param_1)(&DAT_02bee518,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02bee720,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02bee928,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02beeb30,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02beed38,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02beef3c,3,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0076ce91(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02befd78,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02beff80,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02bf0188,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bf0390,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02bf0598,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02bf07a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bf09a8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02bf0bb0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02bf0db8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bf0fc0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bf11c8,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02bf13d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bf15d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02bf17e0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02bf19e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bf1bf0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02bf1df8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02bf2000,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bf2208,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02bf2410,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02bf2618,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02bf2820,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02bf2a28,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_02bf2c30,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bf2e38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02bf3040,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02bf3248,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bf3450,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02bf3658,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02bf3860,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bf3a68,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02bf3c70,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02bf3e78,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bf4080,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02bf4288,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02bf4490,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bf4698,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02bf48a0,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02bf4aa8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bf4cb0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02bf4eb8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02bf50c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bf52c8,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_02bf54d0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02bf56d8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02bf58e0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02bf5ae8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02bf5cf0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bf5ef8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02bf6100,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02bf6308,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bf6510,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02bf6718,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02bf6920,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02bf6b28,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02bf6d30,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02bf6f38,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bf7140,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (cVar1 = (*param_1)(&DAT_02bf7348,0x200,param_2), cVar1 != '\0')))))) &&
     ((((cVar1 = (*param_1)(&DAT_02bf7550,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02bf7758,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02bf7960,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02bf7b68,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bf7d70,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02bf7f78,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_02bf8180,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bf8388,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bf8590,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02bf8798,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bf89a0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02bf8ba8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02bf8db0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bf8fb8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bf91c0,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02bf93c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bf95d0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02bf97d8,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_02bf99e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bf9be8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02bf9df0,0x200,param_2), cVar1 != '\0' &&
              (((((cVar1 = (*param_1)(&DAT_02bf9ff8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02bfa200,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02bfa408,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02bfa610,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02bfa818,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02bfaa20,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02bfac28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bfae30,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02bfb038,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02bfb240,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bfb448,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02bfb650,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02bfb858,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bfba60,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02bfbc68,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02bfbe70,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bfc078,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02bfc280,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02bfc488,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bfc690,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02bfc898,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02bfcaa0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bfcca8,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02bfceb0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02bfd0b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bfd2c0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02bfd4c8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02bfd6d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bfd8d8,0x1de,param_2), cVar1 != '\0')))))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0076d5cf(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02bfdab8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bfdcc0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02bfdec8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02bfe0d0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02bfe2d8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02bfe4e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bfe6e8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02bfe8f0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02bfeaf8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bfed00,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02bfef08,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02bff110,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bff318,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02bff520,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02bff728,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bff930,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02bffb38,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02bffd40,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02bfff48,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c00150,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02c00358,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c00560,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02c00768,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_02c00970,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c00b78,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c00d80,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02c00f88,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c01190,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c01398,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c015a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c017a8,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02c019b0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c01bb8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c01dc0,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02c01fc8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c021d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c023d8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c025e0,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02c027e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c029f0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c02bf8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c02e00,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c03008,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_02c03210,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02c03418,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c03620,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c03828,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02c03a30,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c03c38,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02c03e40,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02c04048,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c04250,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c04458,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02c04660,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c04868,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c04a70,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c04c78,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c04e80,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (cVar1 = (*param_1)(&DAT_02c05088,0x200,param_2), cVar1 != '\0')))))) &&
     ((((cVar1 = (*param_1)(&DAT_02c05290,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02c05498,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02c056a0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02c058a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c05ab0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c05cb8,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_02c05ec0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c060c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c062d0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c064d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c066e0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02c068e8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02c06af0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c06cf8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c06f00,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02c07108,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c07310,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c07518,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_02c07720,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c07928,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c07b30,0x200,param_2), cVar1 != '\0' &&
              (((((cVar1 = (*param_1)(&DAT_02c07d38,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02c07f40,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02c08148,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02c08350,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02c08558,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02c08760,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02c08968,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c08b70,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02c08d78,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02c08f80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c09188,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c09390,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02c09598,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c097a0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c099a8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02c09bb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c09db8,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02c09fc0,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02c0a1c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c0a3d0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c0a5d8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c0a7e0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c0a9e8,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02c0abf0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02c0adf8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c0b000,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02c0b208,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c0b410,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c0b618,0x1e0,param_2), cVar1 != '\0')))))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0076dd0d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02c0b800,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02c0ba08,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02be4cc0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02be4ec8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02be50d0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02be52d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02be54e0,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02be56e8,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02be58f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02be5af8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02be5d00,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02be5f08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02be6110,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_02be6318,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02be6520,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02beef40,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02bef148,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02bef350,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02bef558,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c0bc10,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c0be18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c0c020,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02c0c228,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02c0c430,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c0c638,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02c0c840,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c0ca48,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c0cc50,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c0ce58,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02c0d060,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c0d268,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c0d470,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c0d678,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c0d880,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02c0da88,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02c0dc90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c0de98,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c0e0a0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c0e2a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c0e4b0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02c0e6b8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02c0e8c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02bef760,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_02bef968,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02befb70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c0eac8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02be6728,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02c0ecd0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c0eed8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02be6930,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02be6b38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c0f0e0,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02c0f2e8,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02c0f4f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c0f6f8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c0f900,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02c0fb08,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c0fd10,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c0ff18,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c10120,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c10328,0x200,param_2), cVar1 != '\0')))))))) &&
       (cVar1 = (*param_1)(&DAT_02c10530,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02c10738,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c10940,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c10b48,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02c10d50,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c10f58,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_02c1115c,0x2a,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0076e18f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02c11390,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02c11598,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02c117a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c119a8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c11bb0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c11db8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c11fc0,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02c121c8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02c123d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c125d8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c127e0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c129e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c12bf0,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02c12df8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02c13000,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c13208,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02c13410,0x200,param_2), cVar1 != '\0')) &&
       (((((((cVar1 = (*param_1)(&DAT_02c13618,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c13820,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c13a28,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c13c30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c13e38,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02c14040,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02c14248,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c14450,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02c14658,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02c14860,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c14a68,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c14c70,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02c14e78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c15080,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c15288,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c15490,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c15698,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02c158a0,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02c15aa8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c15cb0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c15eb8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02c160c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c162c8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c164d0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02c166d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c168e0,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02c16ae8,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02c16cf0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c16ef8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c17100,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c17308,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c17510,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02c17718,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02c17920,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02c17b28,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02c17d30,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02c17f38,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c18140,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c18348,0xb0,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0076e548(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02c18400,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02c18608,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02c18810,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c18a18,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c18c20,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c18e28,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c19030,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02c19238,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02c19440,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c19648,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c19850,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c19a58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c19c60,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02c19e68,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02c1a070,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c1a278,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02c1a480,0x200,param_2), cVar1 != '\0')) &&
       (((((((cVar1 = (*param_1)(&DAT_02c1a688,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c1a890,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c1aa98,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c1aca0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c1aea8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02c1b0b0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02c1b2b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c1b4c0,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02c1b6c8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02c1b8d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c1bad8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c1bce0,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02c1bee8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c1c0f0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c1c2f8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c1c500,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c1c708,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02c1c910,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02c1cb18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c1cd20,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c1cf28,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02c1d130,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c1d338,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c1d540,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02c1d748,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c1d950,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02c1db58,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02c1dd60,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c1df68,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c1e170,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c1e378,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c1e580,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02c1e788,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02c1e990,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02c1eb98,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02c1eda0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02c1efa8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c1f1b0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c1f3b8,0x112,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0076e901(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_02c1f4d0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c1f6d8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02c1f8e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c1fae8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c1fcf0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c1fef8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c20100,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_02c20308,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_02c20510,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c20718,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c20920,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c20b28,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c20d30,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02c20f38,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c21140,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c21348,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_02c21550,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02c21758,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c21960,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c21b68,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02c21d70,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c21f78,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02c22180,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02c22388,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c22590,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((((((cVar1 = (*param_1)(&DAT_02c22798,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02c229a0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c22ba8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c22db0,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02c22fb8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c231c0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02c233c8,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02c235d0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c237d8,0x200,param_2), cVar1 != '\0')))))))))) &&
           (cVar1 = (*param_1)(&DAT_02c239e0,0x200,param_2), cVar1 != '\0')) &&
          (((((((cVar1 = (*param_1)(&DAT_02c23be8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c23df0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02c23ff8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02c24200,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c24408,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02c24610,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c24818,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c24a20,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02c24c28,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02c24e30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c25038,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c25240,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02c25448,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c25650,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c25858,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02c25a60,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c25c68,0x200,param_2), cVar1 != '\0')))) &&
        (((((cVar1 = (*param_1)(&DAT_02c25e70,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c26078,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c26280,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c26488,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02c26690,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c26898,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02c26aa0,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02c26ca8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c26eb0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c270b8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02c272c0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c274c8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02c276d0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02c278d8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c27ae0,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02c27ce8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c27ef0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c280f8,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02c28300,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c28508,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c28710,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c28918,0x200,param_2), cVar1 != '\0')))) &&
          (((((cVar1 = (*param_1)(&DAT_02c28b20,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c28d28,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c28f30,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02c29138,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c29340,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c29548,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02c29750,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c29958,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02c29b60,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02c29d68,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c29f70,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02c2a178,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c2a380,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c2a588,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c2a790,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02c2a998,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c2aba0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02c2ada8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02c2afb0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c2b1b8,0x200,param_2), cVar1 != '\0')))))))))) &&
          (cVar1 = (*param_1)(&DAT_02c2b3c0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02c2b5c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c2b7d0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02c2b9d8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c2bbe0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c2bde8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c2bff0,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02c2c1f8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c2c400,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c2c608,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02c2c810,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c2ca18,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02c2cc20,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02c2ce28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c2d030,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c2d238,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02c2d440,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c2d648,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c2d850,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02c2da58,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c2dc60,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c2de68,0x200,param_2), cVar1 != '\0' &&
              ((((((cVar1 = (*param_1)(&DAT_02c2e070,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02c2e278,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02c2e480,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02c2e688,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02c2e890,0x200,param_2), cVar1 != '\0')))) &&
                (cVar1 = (*param_1)(&DAT_02c2ea98,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02c2eca0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c2eea8,0x200,param_2), cVar1 != '\0')))))))) &&
            (cVar1 = (*param_1)(&DAT_02c2f0b0,0x200,param_2), cVar1 != '\0')))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02c2f2b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c2f4c0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c2f6c8,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02c2f8d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c2fad8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02c2fce0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02c2fee8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c300f0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02c302f8,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((((((cVar1 = (*param_1)(&DAT_02c30500,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c30708,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c30910,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02c30b18,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c30d20,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c30f28,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02c31130,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c31338,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02c31540,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02c31748,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c31950,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c31b58,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c31d60,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c31f68,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02c32170,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c32378,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c32580,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02c32788,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02c32990,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c32b98,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c32da0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02c32fa8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c331b0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c333b8,0x98,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0076f380(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02c33868,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02c33a70,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02c33c78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c33e80,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c34088,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c34290,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c34498,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02c346a0,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02c348a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c34ab0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c34cb8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c34ec0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c350c8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02c352d0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02c354d8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c356e0,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02c358e8,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_02c35af0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c35cf8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c35f00,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c36108,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c36310,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02c36518,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02c36720,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c36928,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02c36b30,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c36d38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c36f40,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c37148,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02c37350,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c37558,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02c37760,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02c37968,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c37b70,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02c37d78,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c37f80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c38188,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c38390,0x48,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0076f604(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02c383e0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02c385e8,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02c387f0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02c389f8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02c38c00,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02c38e08,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c39010,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02c39218,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_02c39420,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c39628,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c39830,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02c39a38,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c39c40,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02c39e48,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02c3a050,200,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0076f704(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02c3bb88,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c3bd90,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c3bf98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c3c1a0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02c3c3a8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c3c5b0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c3c7b8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02c3c9c0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c3cbc8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c3cdd0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c3cfd8,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_02c3d1e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c3d3e8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c3d5f0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02c3d7f8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c3da00,0x200,param_2), cVar1 != '\0')))))) &&
      (((((((cVar1 = (*param_1)(&DAT_02c3dc08,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c3de10,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c3e018,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c3e220,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02c3e428,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c3e630,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c3e838,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02c3ea40,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c3ec48,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02c3ee50,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_02c3f058,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02c3f260,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02c3f468,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02c3f670,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02c3f878,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_02c3fa80,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c3fc88,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c3fe90,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02c40098,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c402a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c404a8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c406b0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02c408b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c40ac0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c40cc8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02c40ed0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c410d8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c412e0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c414e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c416f0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c418f8,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_02c41b00,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c41d08,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02c41f10,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02c42118,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c42320,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c42528,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02c42730,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c42938,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c42b40,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c42d48,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c42f50,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_02c43158,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_02c43360,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c43568,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02c43770,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c43978,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c43b80,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c43d88,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02c43f90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c44198,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c443a0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02c445a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c447b0,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02c449b8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c44bc0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c44dc8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c44fd0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02c451d8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c453e0,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_02c455e8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_02c457f0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02c459f8,0x1e6,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0076fc44(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((((param_1 != (code *)0x0) &&
              (cVar1 = (*param_1)(&DAT_02c45be0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c45de8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c45ff0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c461f8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02c46400,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c46608,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c46810,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02c46a18,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02c46c20,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c46e28,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c47030,0x200,param_2), cVar1 != '\0')))))) &&
        (((((((cVar1 = (*param_1)(&DAT_02c47238,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c47440,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c47648,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c47850,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c47a58,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02c47c60,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c47e68,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c48070,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c48278,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02c48480,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c48688,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c48890,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c48a98,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c48ca0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c48ea8,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02c490b0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02c492b8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02c494c0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02c496c8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c498d0,0x200,param_2), cVar1 != '\0')))))))))))))) &&
         (cVar1 = (*param_1)(&DAT_02c49ad8,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02c49ce0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c49ee8,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02c4a0f0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02c4a2f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c4a500,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c4a708,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02c4a910,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c4ab18,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c4ad20,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02c4af28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c4b130,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02c4b338,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c4b540,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c4b748,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c4b950,0x200,param_2), cVar1 != '\0')))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02c4bb58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c4bd60,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c4bf68,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c4c170,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c4c378,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c4c580,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02c4c788,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c4c990,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02c4cb98,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02c4cda0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c4cfa8,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (cVar1 = (*param_1)(&DAT_02c4d1b0,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02c4d3b8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02c4d5c0,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02c4d7c8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c4d9d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c4dbd8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c4dde0,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02c4dfe8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c4e1f0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c4e3f8,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((cVar1 = (*param_1)(&DAT_02c4e600,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c4e808,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02c4ea10,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c4ec18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c4ee20,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c4f028,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02c4f230,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c4f438,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02c4f640,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02c4f848,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c4fa50,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c4fc58,0x200,param_2), cVar1 != '\0' &&
             (((((cVar1 = (*param_1)(&DAT_02c4fe60,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02c50068,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02c50270,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02c50478,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c50680,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02c50888,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_02c50a90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c50c98,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02c50ea0,0x200,param_2), cVar1 != '\0')))))) &&
      ((((((((((cVar1 = (*param_1)(&DAT_02c510a8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c512b0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c514b8,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02c516c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c518c8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02c51ad0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02c51cd8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c51ee0,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_02c520e8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02c522f0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c524f8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c52700,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_02c52908,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c52b10,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02c52d18,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02c52f20,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c53128,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02c53330,0x200,param_2), cVar1 != '\0')))))) &&
          ((((((cVar1 = (*param_1)(&DAT_02c53538,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c53740,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c53948,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c53b50,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c53d58,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02c53f60,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02c54168,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c54370,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02c54578,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_02c54780,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c54988,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c54b90,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02c54d98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c54fa0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c551a8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02c553b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c555b8,0x200,param_2), cVar1 != '\0')))))))))) &&
        (((cVar1 = (*param_1)(&DAT_02c557c0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02c559c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c55bd0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c55dd8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02c55fe0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c561e8,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_02c563f0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c565f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c56800,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02c56a08,0x200,param_2), cVar1 != '\0' &&
          (((((((cVar1 = (*param_1)(&DAT_02c56c10,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c56e18,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02c57020,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02c57228,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c57430,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02c57638,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02c57840,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c57a48,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02c57c50,0x200,param_2), cVar1 != '\0' &&
             (((((cVar1 = (*param_1)(&DAT_02c57e58,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02c58060,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02c58268,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_02c58470,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02c58678,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02c58880,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02c58a88,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02c58c90,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02c58e98,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_02c590a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c592a8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c594b0,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02c596b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c598c0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c59ac8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c59cd0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c59ed4,0x36,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007706e2(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02c59f10,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c5a118,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c5a320,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c5a528,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02c5a730,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c5a938,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c5ab40,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02c5ad48,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c5af50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c5b158,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c5b360,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02c5b568,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c5b770,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02c5b978,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_02c5bb80,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c5bd88,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02c5bf90,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c5c198,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c5c3a0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c5c5a8,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_02c5c7b0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02c5c9b8,0x200,param_2), cVar1 != '\0')))))) &&
     (((((cVar1 = (*param_1)(&DAT_02c5cbc0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c5cdc8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c5cfd0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c5d1d8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02c5d3e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c5d5e8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c5d7f0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c5d9f8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c5dc00,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02c5de08,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c5e010,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c5e218,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02c5e420,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c5e628,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c5e830,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c5ea38,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02c5ec40,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c5ee48,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c5f050,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02c5f258,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c5f460,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02c5f668,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c5f870,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c5fa78,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c5fc80,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02c5fe88,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c60090,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c60298,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02c604a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c606a8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02c608b0,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02c60ab8,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02c60cc0,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02c60ec8,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02c610d0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02c612d8,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02c614e0,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02c616e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c618f0,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_02c61af8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c61d00,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c61f08,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c62110,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02c62318,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c62520,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c62728,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02c62930,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c62b38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c62d40,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c62f48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c63150,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c63358,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02c63560,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c63768,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c63970,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_02c63b78,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c63d80,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c63f88,0x200,param_2), cVar1 != '\0' &&
              (((((cVar1 = (*param_1)(&DAT_02c64190,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02c64398,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02c645a0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02c647a8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02c649b0,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02c64bb8,0x200,param_2), cVar1 != '\0')))))) &&
            (((cVar1 = (*param_1)(&DAT_02c64dc0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c64fc8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c651d0,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02c653d8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02c655e0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02c657e8,0x200,param_2), cVar1 != '\0')) &&
               (((cVar1 = (*param_1)(&DAT_02c659f0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02c65bf8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02c65e00,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02c66008,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02c66210,0x200,param_2), cVar1 != '\0')))))))))))))) &&
           (((cVar1 = (*param_1)(&DAT_02c66418,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02c66620,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c66828,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c66a30,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02c66c38,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c66e40,0x200,param_2), cVar1 != '\0')) &&
             (((((((cVar1 = (*param_1)(&DAT_02c67048,0x200,param_2), cVar1 != '\0' &&
                   ((cVar1 = (*param_1)(&DAT_02c67250,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02c67458,0x200,param_2), cVar1 != '\0')))) &&
                  (cVar1 = (*param_1)(&DAT_02c67660,0x200,param_2), cVar1 != '\0')) &&
                 (((((cVar1 = (*param_1)(&DAT_02c67868,0x200,param_2), cVar1 != '\0' &&
                     (cVar1 = (*param_1)(&DAT_02c67a70,0x200,param_2), cVar1 != '\0')) &&
                    (cVar1 = (*param_1)(&DAT_02c67c78,0x200,param_2), cVar1 != '\0')) &&
                   ((cVar1 = (*param_1)(&DAT_02c67e80,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02c68088,0x200,param_2), cVar1 != '\0')))) &&
                  ((cVar1 = (*param_1)(&DAT_02c68290,0x200,param_2), cVar1 != '\0' &&
                   ((cVar1 = (*param_1)(&DAT_02c68498,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02c686a0,0x200,param_2), cVar1 != '\0')))))))) &&
                ((cVar1 = (*param_1)(&DAT_02c688a8,0x200,param_2), cVar1 != '\0' &&
                 (((((((cVar1 = (*param_1)(&DAT_02c68ab0,0x200,param_2), cVar1 != '\0' &&
                       (cVar1 = (*param_1)(&DAT_02c68cb8,0x200,param_2), cVar1 != '\0')) &&
                      (cVar1 = (*param_1)(&DAT_02c68ec0,0x200,param_2), cVar1 != '\0')) &&
                     (((cVar1 = (*param_1)(&DAT_02c690c8,0x200,param_2), cVar1 != '\0' &&
                       (cVar1 = (*param_1)(&DAT_02c692d0,0x200,param_2), cVar1 != '\0')) &&
                      ((cVar1 = (*param_1)(&DAT_02c694d8,0x200,param_2), cVar1 != '\0' &&
                       ((cVar1 = (*param_1)(&DAT_02c696e0,0x200,param_2), cVar1 != '\0' &&
                        (cVar1 = (*param_1)(&DAT_02c698e8,0x200,param_2), cVar1 != '\0')))))))) &&
                    (cVar1 = (*param_1)(&DAT_02c69af0,0x200,param_2), cVar1 != '\0')) &&
                   (((cVar1 = (*param_1)(&DAT_02c69cf8,0x200,param_2), cVar1 != '\0' &&
                     (cVar1 = (*param_1)(&DAT_02c69f00,0x200,param_2), cVar1 != '\0')) &&
                    (cVar1 = (*param_1)(&DAT_02c6a108,0x200,param_2), cVar1 != '\0')))) &&
                  ((cVar1 = (*param_1)(&DAT_02c6a310,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02c6a518,0x200,param_2), cVar1 != '\0')))))))) &&
               ((cVar1 = (*param_1)(&DAT_02c6a720,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02c6a928,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02c6ab30,0x200,param_2), cVar1 != '\0')))))) &&
              (cVar1 = (*param_1)(&DAT_02c6ad38,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02c6af40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c6b148,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c6b350,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c6b558,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c6b760,0x200,param_2), cVar1 != '\0')))))) &&
       (((((cVar1 = (*param_1)(&DAT_02c6b968,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02c6bb70,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c6bd78,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02c6bf80,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02c6c188,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c6c390,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c6c598,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02c6c7a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c6c9a8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c6cbb0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02c6cdb8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c6cfc0,0x200,param_2), cVar1 != '\0')))))))))))) &&
         (cVar1 = (*param_1)(&DAT_02c6d1c8,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02c6d3d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c6d5d8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c6d7e0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02c6d9e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c6dbf0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02c6ddf8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02c6e000,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c6e208,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02c6e410,0xf9,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00771194(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_02c6e510,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c6e718,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c6e920,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c6eb28,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02c6ed30,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02c6ef38,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02c6f140,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_02c6f348,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c33660,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c6f550,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c6f758,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02c3ab48,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c6f960,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c3ad50,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c6fb68,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c6fd70,0x200,param_2), cVar1 != '\0')))))) &&
       (((((cVar1 = (*param_1)(&DAT_02c6ff78,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c70180,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c70388,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c70590,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02c70798,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c709a0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02c70ba8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02c70db0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c70fb8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c711c0,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02c713c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c715d0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c717d8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c719e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c71be8,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02c71df0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c71ff8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c72200,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c72408,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c72610,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c72818,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c72a20,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02c72c28,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02c72e30,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02c73038,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_02c73240,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c73448,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02c73650,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c73858,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c73a60,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c73c68,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02c73e70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c74078,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c74280,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02c74488,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c74690,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02c74898,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02c74aa0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02c74ca8,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02c74eb0,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02c750b8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02c752c0,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02c754c8,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02c756d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c758d8,0x200,param_2), cVar1 != '\0')))) &&
         ((((((cVar1 = (*param_1)(&DAT_02c75ae0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02c75ce8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c75ef0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02c760f8,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02c76300,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c76508,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c76710,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02c76918,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c76b20,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02c76d28,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c76f30,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c77138,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c77340,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02c77548,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c77750,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c77958,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_02c77b60,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c77d68,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02c77f70,0xa2,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007716e5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02c78018,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02c78220,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02c3af58,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c3b160,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c3b368,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c3b570,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c3b778,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02c78428,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02c78630,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c78838,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c78a40,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c78c48,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c78e50,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02c79058,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02c79260,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c79468,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02c79670,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_02c79878,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c79a80,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c79c88,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c79e90,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c7a098,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02c7a2a0,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02c7a4a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c7a6b0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02c7a8b8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c7aac0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c7acc8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c7aed0,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02c7b0d8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c7b2e0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02c7b4e8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02c7b6f0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c7b8f8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02c7bb00,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c7bd08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c7bf10,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c7c118,0x4e,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00771969(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02c7c168,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02c7c370,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02c3b980,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02bda588,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02bda790,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02bda998,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02bdaba0,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02bdada8,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_02bdafb0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02bdb1b8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02bdb3c0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02bdb5c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02be4ab8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02bdb9d8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02c7c578,0xca,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00771a69(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02c7c648,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02c7c850,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02c3a120,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02be4ec8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02be50d0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02be52d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02be54e0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02be56e8,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02c3a328,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c3a530,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c3a738,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02c3a940,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c7ca58,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((((cVar1 = (*param_1)(&DAT_02c7cc60,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02c7ce68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c7d070,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02c7d278,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_02c7d480,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c7d688,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02c7d890,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02c7da98,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c7dca0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02c7dea8,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02c7e0b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c7e2b8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c7e4c0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c7e6c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c7e8d0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c7ead8,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02c7ece0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c7eee8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c7f0f0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02c7f2f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c7f500,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c7f708,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c7f910,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c7fb18,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c7fd20,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02c7ff28,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c80130,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02c80338,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02c80540,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c80748,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c11188,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02c80950,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c80b58,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c80d60,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c80f68,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c81170,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_02c81378,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02c81580,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c81788,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02c81990,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c81b98,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c81da0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c81fa8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02c821b0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c823b8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c825c0,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02c827c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c829d0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c82bd8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02c82de0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c82fe8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c831f0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02c833f8,0xfc,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00771ecc(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02c834f8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c83700,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02c83908,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c83b10,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c83d18,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02c83f20,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c84128,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_02c84330,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02c84538,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c84740,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c84948,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c84b50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c84d58,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02c84f60,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02c85168,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c85370,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c85578,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02c85780,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c85988,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c85b90,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((((cVar1 = (*param_1)(&DAT_02c85d98,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c85fa0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c861a8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c863b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c865b8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02c867c0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c869c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c86bd0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c86dd8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02c86fe0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c871e8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02c873f0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02c875f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c87800,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c87a08,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02c87c10,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c87e18,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c88020,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c88228,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c88430,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02c88638,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02c88840,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c88a48,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02c88c50,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c88e58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c89060,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c89268,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02c89470,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c89678,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c89880,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_02c89a88,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c89c90,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c89e98,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c8a0a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c8a2a8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c8a4b0,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02c8a6b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c8a8c0,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02c8aac8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02c8acd0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c8aed8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c8b0e0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02c8b2e8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c8b4f0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02c8b6f8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02c8b900,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c8bb08,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02c8bd10,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02c8bf18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c8c120,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02c8c328,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02c8c530,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c8c738,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c8c940,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02c8cb48,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c8cd50,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c8cf58,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02c8d160,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c8d368,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     (((((cVar1 = (*param_1)(&DAT_02c8d570,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c8d778,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c8d980,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c8db88,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02c8dd90,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c8df98,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02c8e1a0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02c8e3a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c8e5b0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c8e7b8,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_02c8e9c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c8ebc8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c8edd0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c8efd8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c8f1e0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02c8f3e8,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02c8f5f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c8f7f8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c8fa00,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02c8fc08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c8fe10,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c90018,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_02c90220,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c90428,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c90630,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02c90838,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c90a40,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02c90c48,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02c90e50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c91058,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c91260,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c91468,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c91670,0x200,param_2), cVar1 != '\0')))))))) &&
       (cVar1 = (*param_1)(&DAT_02c91874,0x27,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077264b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_02c918a0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c91aa8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c91cb0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c91eb8,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02c920c0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02c922c8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02c924d0,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_02c926d8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c928e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c92ae8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c92cf0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02c92ef8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c93100,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c93308,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c93510,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c93718,0x200,param_2), cVar1 != '\0')))))) &&
       (((((cVar1 = (*param_1)(&DAT_02c93920,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c93b28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c93d30,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c93f38,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02c94140,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c94348,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02c94550,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02c94758,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c94960,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c94b68,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02c94d70,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c94f78,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c95180,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02c95388,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c95590,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02c95798,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02c959a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c95ba8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c95db0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02c95fb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c961c0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02c963c8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02c965d0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02c967d8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02c969e0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_02c96be8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c96df0,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02c96ff8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c97200,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c97408,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c97610,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02c97818,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c97a20,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02c97c28,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02c97e30,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c98038,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02c98240,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02c98448,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02c98650,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02c98858,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02c98a60,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02c98c68,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02c98e70,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02c99078,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c99280,0x200,param_2), cVar1 != '\0')))) &&
         ((((((cVar1 = (*param_1)(&DAT_02c99488,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02c99690,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c99898,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02c99aa0,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02c99ca8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c99eb0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02c9a0b8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02c9a2c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c9a4c8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02c9a6d0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c9a8d8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c9aae0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c9ace8,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02c9aef0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c9b0f8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02c9b300,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_02c9b508,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c9b710,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02c9b918,0x11b,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00772b9c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02c9ba38,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02c9bc40,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02c9be48,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c9c050,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02c9c258,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02c9c460,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c9c668,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02c9c870,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02c9ca78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02c9cc80,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02c9ce88,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02c9d090,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02c9d298,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((((cVar1 = (*param_1)(&DAT_02c9d4a0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02c9d6a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02c9d8b0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02c9dab8,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_02c9dcc0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02c9dec8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02c9e0d0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02c9e2d8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02c9e4e0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02c9e6e8,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02c9e8f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02c9eaf8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02c9ed00,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02c9ef08,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02c9f110,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02c9f318,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02c9f520,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c9f728,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02c9f930,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02c9fb38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02c9fd40,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02c9ff48,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02ca0150,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ca0358,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ca0560,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02ca0768,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ca0970,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02ca0b78,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02ca0d80,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ca0f88,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ca1190,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02ca1398,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ca15a0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ca17a8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02ca19b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ca1bb8,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_02ca1dc0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02ca1fc8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ca21d0,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02ca23d8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02ca25e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ca27e8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ca29f0,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02ca2bf8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ca2e00,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02ca3008,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02ca3210,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ca3418,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ca3620,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02ca3828,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ca3a30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ca3c38,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02ca3e40,0xf0,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00772fff(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02ca3f38,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ca4140,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ca4348,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ca4550,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02ca4758,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02ca4960,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ca4b68,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02ca4d70,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02ca4f78,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ca5180,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ca5388,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02ca5590,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ca5798,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ca59a0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02ca5ba8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ca5db0,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02ca5fb8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02ca61c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ca63c8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ca65d0,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02ca67d8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ca69e0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02ca6be8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02ca6df0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ca6ff8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02ca7200,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02ca7408,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ca7610,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02ca7818,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02ca7a20,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ca7c28,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02ca7e30,0x200,param_2), cVar1 != '\0' &&
      ((cVar1 = (*param_1)(&DAT_02ca8038,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_02ca823c,2,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077323f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02ca8240,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02ca8448,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02ca8650,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02ca8858,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02ca8a60,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02ca8c68,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ca8e70,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02ca9078,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_02ca9280,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ca9488,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02ca9690,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02ca9898,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ca9aa0,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02ca9ca8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02ca9eb0,0xda,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077333f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02ca9f90,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02caa198,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02caa3a0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02caa5a8,0x200,param_2), cVar1 != '\0')))) &&
      (((((((cVar1 = (*param_1)(&DAT_02caa7b0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02caa9b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02caabc0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02caadc8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02caafd0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cab1d8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cab3e0,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_02cab5e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cab7f0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02cab9f8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02cabc00,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cabe08,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02cac010,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02cac218,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cac420,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02cac628,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02cac830,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02caca38,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02cacc40,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02cace48,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cad050,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02cad258,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_02cad460,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02cad668,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02cad870,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02cada78,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cadc80,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02cade88,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02cae090,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cae298,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cae4a0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02cae6a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cae8b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02caeab8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02caecc0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02caeec8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02caf0d0,0x200,param_2), cVar1 != '\0')) &&
      ((((((cVar1 = (*param_1)(&DAT_02caf2d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02caf4e0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02caf6e8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02caf8f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cafaf8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cafd00,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02caff08,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cb0110,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02cb0318,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02cb0520,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cb0728,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02cb0930,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02cb0b38,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02cb0d40,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02cb0f48,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02cb1150,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02cb1358,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_02cb1560,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02cb1768,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02cb1970,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02cb1b78,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02cb1d80,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cb1f88,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cb2190,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02cb2398,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cb25a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cb27a8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02cb29b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cb2bb8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02cb2dc0,0x72,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007737f4(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_02cb3040,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02cb3248,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02cb3450,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cb3658,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02cb3860,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02cb3a68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cb3c70,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02cb3e78,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02cb4080,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cb4288,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cb4490,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cb4698,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cb48a0,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02cb4aa8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02cb4cb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cb4eb8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02cb50c0,0x200,param_2), cVar1 != '\0' &&
           (((((cVar1 = (*param_1)(&DAT_02cb52c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02cb54d0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02cb56d8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02cb58e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02cb5ae8,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02cb5cf0,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02cb5ef8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cb6100,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cb6308,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02cb6510,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cb6718,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cb6920,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02cb6b28,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cb6d30,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02cb6f38,0x200,param_2), cVar1 != '\0')))))) &&
      (((((cVar1 = (*param_1)(&DAT_02cb7140,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cb7348,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02cb7550,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02cb7758,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cb7960,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cb7b68,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02cb7d70,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02cb7f78,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02cb8180,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02cb8388,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cb8590,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02cb8798,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02cb89a0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02cb8ba8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02cb8db0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02cb8fb8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02cb91c0,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_02cb93c8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02cb95d0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02cb97d8,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02cb99e0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02cb9be8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cb9df0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02cb9ff8,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02cba200,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02cba408,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02cba610,0x200,param_2), cVar1 != '\0')))) &&
      (((cVar1 = (*param_1)(&DAT_02cba818,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02cbaa20,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02cbac28,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02cbae30,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cbb038,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02cbb240,0xac,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00773c46(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02cbb2f0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02cbb4f8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02cbb700,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02cbb908,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02cbbb10,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02cbbd18,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cbbf20,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02cbc128,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02cbc330,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cbc538,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02cbc740,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02cbc948,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cbcb50,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02cbcd58,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02cbcf60,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cbd168,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02cbd370,0x200,param_2), cVar1 != '\0')))))) &&
       ((((((cVar1 = (*param_1)(&DAT_02cbd578,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cbd780,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cbd988,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cbdb90,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cbdd98,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02cbdfa0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02cbe1a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cbe3b0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02cbe5b8,0x200,param_2), cVar1 != '\0')))))) &&
     (((((((cVar1 = (*param_1)(&DAT_02cbe7c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cbe9c8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02cbebd0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02cbedd8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cbefe0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cbf1e8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02cbf3f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cbf5f8,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_02cbf800,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02cbfa08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cbfc10,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cbfe18,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cc0020,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cc0228,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02cc0430,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02cc0638,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cc0840,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02cc0a48,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02cc0c50,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02cc0e58,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02cc1060,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02cc1268,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02cc1470,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02cc1678,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02cc1880,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cc1a88,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02cc1c90,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02cc1e98,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cc20a0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02cc22a8,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((((cVar1 = (*param_1)(&DAT_02cc24b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cc26b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cc28c0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cc2ac8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cc2cd0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02cc2ed8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02cc30e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cc32e8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cc34f0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02cc36f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cc3900,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02cc3b08,0x200,param_2), cVar1 != '\0')) &&
       (((((((cVar1 = (*param_1)(&DAT_02cc3d10,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cc3f18,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02cc4120,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02cc4328,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02cc4530,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02cc4738,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02cc4940,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02cc4b48,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02cc4d50,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02cc4f58,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cc5160,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02cc5368,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02cc5570,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02cc5778,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02cc5980,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_02cc5b88,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cc5d90,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cc5f98,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02cc61a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cc63a8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02cc65b0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02cc67b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02cc69c0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02cc6bc8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02cc6dd0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cc6fd8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02cc71e0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02cc73e8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02cc75f0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02cc77f8,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02cc7a00,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02cc7c08,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02cc7e10,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02cc8018,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02cc8220,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02cc8428,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (((cVar1 = (*param_1)(&DAT_02cc8630,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cc8838,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02cc8a40,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02cc8c48,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cc8e50,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cc9058,0xf2,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00774395(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02cc9150,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02cc9358,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02cc9560,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02cc9768,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02cc9970,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02cc9b78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cc9d80,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02cc9f88,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02cca190,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cca398,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02cca5a0,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02cca7a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cca9b0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02ccabb8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02ccadc0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ccafc8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02ccb1d0,0x200,param_2), cVar1 != '\0')))))) &&
       ((((((cVar1 = (*param_1)(&DAT_02ccb3d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ccb5e0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ccb7e8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ccb9f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ccbbf8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02ccbe00,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02ccc008,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ccc210,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02ccc418,0x200,param_2), cVar1 != '\0')))))) &&
     (((((((cVar1 = (*param_1)(&DAT_02ccc620,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ccc828,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ccca30,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02cccc38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ccce40,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ccd048,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02ccd250,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ccd458,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_02ccd660,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02ccd868,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ccda70,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ccdc78,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ccde80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cce088,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02cce290,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02cce498,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cce6a0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02cce8a8,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02cceab0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ccecb8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02cceec0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02ccf0c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ccf2d0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02ccf4d8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02ccf6e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ccf8e8,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02ccfaf0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02ccfcf8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ccff00,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02cd0108,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((((cVar1 = (*param_1)(&DAT_02cd0310,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cd0518,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cd0720,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cd0928,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cd0b30,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02cd0d38,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02cd0f40,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cd1148,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cd1350,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02cd1558,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cd1760,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02cd1968,0x200,param_2), cVar1 != '\0')) &&
       (((((((cVar1 = (*param_1)(&DAT_02cd1b70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cd1d78,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02cd1f80,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02cd2188,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02cd2390,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02cd2598,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02cd27a0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02cd29a8,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02cd2bb0,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02cd2db8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cd2fc0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02cd31c8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02cd33d0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02cd35d8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02cd37e0,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_02cd39e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cd3bf0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cd3df8,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02cd4000,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cd4208,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02cd4410,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02cd4618,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02cd4820,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02cd4a28,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02cd4c30,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cd4e38,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02cd5040,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02cd5248,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02cd5450,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02cd5658,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02cd5860,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02cd5a68,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02cd5c70,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02cd5e78,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02cd6080,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02cd6288,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (((cVar1 = (*param_1)(&DAT_02cd6490,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cd6698,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02cd68a0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02cd6aa8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cd6cb0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cd6eb8,0xa0,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00774ae4(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02cd6f60,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02cd7168,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02cd7370,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cd7578,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02cd7780,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02cd7988,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cd7b90,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02cd7d98,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02cd7fa0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cd81a8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cd83b0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cd85b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cd87c0,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_02cd89c8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02cd8bd0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cd8dd8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02cd8fe0,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02cd91e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cd93f0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cd95f8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02cd9800,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cd9a08,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02cd9c10,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02cd9e18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cda020,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02cda228,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02cda430,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02cda638,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02cda840,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02cdaa48,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cdac50,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02cdae58,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02cdb060,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cdb268,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02cdb470,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02cdb678,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cdb880,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cdba88,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02cdbc90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cdbe98,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02cdc0a0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02cdc2a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cdc4b0,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_02cdc6b8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02cdc8c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cdcac8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02cdccd0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02cdced8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cdd0e0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cdd2e8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02cdd4f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cdd6f8,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02cdd900,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02cddb08,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cddd10,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02cddf18,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02cde120,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cde328,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02cde530,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02cde738,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cde940,0x200,param_2), cVar1 != '\0')))))))) &&
       (cVar1 = (*param_1)(&DAT_02cdeb48,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_02cded50,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02cdef58,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02cdf160,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02cdf368,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02cdf570,0x106,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00774f58(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_02cdf678,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02cdf880,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02cdfa88,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cdfc90,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02cdfe98,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02ce00a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ce02a8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ce04b0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02ce06b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ce08c0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02ce0ac8,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_02ce0cd0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ce0ed8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02ce10e0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02cb2e38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ce12e8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ce14f0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02ce16f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ce1900,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02ce1b08,0x200,param_2), cVar1 != '\0')))))))))) &&
        (((cVar1 = (*param_1)(&DAT_02ce1d10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ce1f18,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02ce2120,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02ce2328,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02ce2530,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02ce2738,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_02ce2940,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ce2b48,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ce2d50,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ce2f58,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ce3160,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02ce3368,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02ce3570,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ce3778,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02ce3980,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02ce3b88,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ce3d90,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ce3f98,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02ce41a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ce43a8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ce45b0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02ce47b8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ce49c0,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02ce4bc8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02ce4dd0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ce4fd8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ce51e0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02ce53e8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ce55f0,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02ce57f8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02ce5a00,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ce5c08,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ce5e10,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02ce6018,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ce6220,0x16c,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00775300(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02cea288,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02cea490,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02ce69a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ce6bb0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ce6db8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02ce6fc0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ce71c8,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02ce73d0,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02ce75d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ce77e0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ce79e8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ce7bf0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ce7df8,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_02ce8000,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02ce8208,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ce8410,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02ce8618,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02ce8820,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cea698,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cea8a0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ceaaa8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ceacb0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02ceaeb8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02ceb0c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ceb2c8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02ceb4d0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02ceb6d8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ceb8e0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02cebae8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02cebcf0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cebef8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02cec100,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02cec308,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cec510,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02cec718,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02cec920,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cecb28,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cecd30,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02cecf38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ced140,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02ced348,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02ced550,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ced758,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_02ced960,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02cedb68,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cedd70,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02cedf78,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02cee180,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cee388,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cee590,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02cee798,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cee9a0,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02ceeba8,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02ceedb0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ceefb8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02cef1c0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02cef3c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cef5d0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02cef7d8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02cef9e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cefbe8,0x200,param_2), cVar1 != '\0')))))))) &&
       (cVar1 = (*param_1)(&DAT_02cefdf0,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02cefff8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cf0200,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02cf0408,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02cf0610,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02cf0818,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_02cf0a20,0x14b,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00775785(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02cf0b70,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02cf0d78,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02cf0f80,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cf1188,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02cf1390,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02cf1598,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cf17a0,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02cf19a8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02cf1bb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cf1db8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cf1fc0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cf21c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cf23d0,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02cf25d8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02cf27e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cf29e8,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02cf2bf0,0x200,param_2), cVar1 != '\0')) &&
       (((((((cVar1 = (*param_1)(&DAT_02cf2df8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cf3000,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cf3208,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02cf3410,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cf3618,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02cf3820,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02cf3a28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cf3c30,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02cf3e38,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02cf4040,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cf4248,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02cf4450,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02cf4658,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cf4860,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02cf4a68,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02cf4c70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cf4e78,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02cf5080,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02cf5288,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cf5490,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cf5698,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02cf58a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cf5aa8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02cf5cb0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02cf5eb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cf60c0,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02cf62c8,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02cf64d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cf66d8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cf68e0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cf6ae8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cf6cf0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02cf6ef8,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02cf7100,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02cf7308,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02cf7510,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02cf7718,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cf7920,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02cf7b28,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_02cf7d30,0x4c,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00775b4c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_02cf7d80,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02cf7f88,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02cf8190,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cf8398,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cf85a0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02cf87a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cf89b0,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02cf8bb8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02cf8dc0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cf8fc8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cf91d0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cf93d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cf95e0,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02cf97e8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02cf99f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cf9bf8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02cf9e00,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_02cfa008,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02cfa210,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02cfa418,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02cfa620,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02cfa828,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02cfaa30,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02cfac38,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02cfae40,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02cfb048,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_02cfb250,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cfb458,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02cfb660,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02cfb868,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cfba70,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02cfbc78,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02cfbe80,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cfc088,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02cfc290,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02cfc498,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cfc6a0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02cfc8a8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02cfcab0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cfccb8,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02cfcec0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02cfd0c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cfd2d0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02cfd4d8,0x200,param_2), cVar1 != '\0')))))) &&
       (((((((cVar1 = (*param_1)(&DAT_02cfd6e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cfd8e8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cfdaf0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02cfdcf8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cfdf00,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02cfe108,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02cfe310,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cfe518,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cfe720,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02cfe928,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02cfeb30,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cfed38,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02cfef40,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02cff148,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02cff350,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02cff558,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cff760,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02cff968,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02cffb70,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02cffd78,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02cfff80,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*param_1)(&DAT_02d00188,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d00390,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d00598,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02d007a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d009a8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d00bb0,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02d00db8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d00fc0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d011c8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02d013d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d015d8,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02d017e0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02d019e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d01bf0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02d01df8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02d02000,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d02208,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d02410,0x200,param_2), cVar1 != '\0')))) &&
           (((((cVar1 = (*param_1)(&DAT_02d02618,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d02820,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d02a28,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02d02c30,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d02e38,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02d03040,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02d03248,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d03450,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d03658,0x200,param_2), cVar1 != '\0')))))))))) &&
         (((cVar1 = (*param_1)(&DAT_02d03860,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d03a68,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d03c70,0x200,param_2), cVar1 != '\0')))))) &&
       ((((((((((cVar1 = (*param_1)(&DAT_02d03e78,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d04080,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02d04288,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02d04490,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02d04698,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02d048a0,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02d04aa8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d04cb0,0x200,param_2), cVar1 != '\0')))))))) &&
              ((cVar1 = (*param_1)(&DAT_02d04eb8,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02d050c0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d052c8,0x200,param_2), cVar1 != '\0')))))) &&
             ((((((cVar1 = (*param_1)(&DAT_02d054d0,0x200,param_2), cVar1 != '\0' &&
                  (((cVar1 = (*param_1)(&DAT_02d056d8,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02d058e0,0x200,param_2), cVar1 != '\0')) &&
                   (cVar1 = (*param_1)(&DAT_02d05ae8,0x200,param_2), cVar1 != '\0')))) &&
                 (((cVar1 = (*param_1)(&DAT_02d05cf0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02d05ef8,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02d06100,0x200,param_2), cVar1 != '\0')))) &&
                ((cVar1 = (*param_1)(&DAT_02d06308,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d06510,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02d06718,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02d06920,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d06b28,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02d06d30,0x200,param_2), cVar1 != '\0')))))) &&
              ((cVar1 = (*param_1)(&DAT_02d06f38,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d07140,0x200,param_2), cVar1 != '\0')))))) &&
            (cVar1 = (*param_1)(&DAT_02d07348,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02d07550,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d07758,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d07960,0x200,param_2), cVar1 != '\0' &&
             ((((((cVar1 = (*param_1)(&DAT_02d07b68,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d07d70,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02d07f78,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02d08180,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d08388,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02d08590,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02d08798,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d089a0,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_02d08ba8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02d08db0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d08fb8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d091c0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d093c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d095d0,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*param_1)(&DAT_02d097d8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02d099e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d09be8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02d09df0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02d09ff8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d0a200,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d0a408,0x200,param_2), cVar1 != '\0')))))) &&
        ((((((cVar1 = (*param_1)(&DAT_02d0a610,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d0a818,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d0aa20,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02d0ac28,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d0ae30,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02d0b038,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_02d0b240,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d0b448,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d0b650,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d0b858,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d0ba60,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02d0bc68,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02d0be70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d0c078,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02d0c280,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02d0c488,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02d0c690,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02d0c898,0x182,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00776633(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_02d0ca20,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d0cc28,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02d0ce30,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d0d038,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d0d240,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02d0d448,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d0d650,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02d0d858,0x200,param_2), cVar1 != '\0' &&
           (((((((cVar1 = (*param_1)(&DAT_02d0da60,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d0dc68,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02d0de70,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02d0e078,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d0e280,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02d0e488,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02d0e690,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d0e898,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02d0eaa0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02d0eca8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d0eeb0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d0f0b8,0x200,param_2), cVar1 != '\0')))))))) &&
          ((((((cVar1 = (*param_1)(&DAT_02d0f2c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d0f4c8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d0f6d0,0x200,param_2), cVar1 != '\0')) &&
             (((((cVar1 = (*param_1)(&DAT_02d0f8d8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d0fae0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02d0fce8,0x200,param_2), cVar1 != '\0' &&
                 (((cVar1 = (*param_1)(&DAT_02d0fef0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02d100f8,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02d10300,0x200,param_2), cVar1 != '\0')))))) &&
               ((cVar1 = (*param_1)(&DAT_02d10508,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d10710,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02d10918,0x200,param_2), cVar1 != '\0')))) &&
            ((((cVar1 = (*param_1)(&DAT_02d10b20,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d10d28,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02d10f30,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_02d11138,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d11340,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02d11548,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02d11750,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d11958,0x200,param_2), cVar1 != '\0')))))))) &&
             ((cVar1 = (*param_1)(&DAT_02d11b60,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02d11d68,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d11f70,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02d12178,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02d12380,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d12588,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d12790,0x200,param_2), cVar1 != '\0')))))))) &&
         (((((cVar1 = (*param_1)(&DAT_02d12998,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d12ba0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d12da8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02d12fb0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d131b8,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_02d133c0,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02d135c8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d137d0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02d139d8,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02d13be0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d13de8,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02d13ff0,0x200,param_2), cVar1 != '\0')) &&
             ((((cVar1 = (*param_1)(&DAT_02d141f8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d14400,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02d14608,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02d14810,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02d14a18,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02d14c20,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02d14e28,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d15030,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02d15238,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02d15440,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d15648,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02d15850,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02d15a58,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d15c60,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d15e68,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02d16070,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d16278,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d16480,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02d16688,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d16890,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02d16a98,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02d16ca0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d16ea8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d170b0,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02d172b8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d174c0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02d176c8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02d178d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d17ad8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d17ce0,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_02d17ee8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d180f0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02d182f8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02d18500,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d18708,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02d18910,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02d18b18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d18d20,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d18f28,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02d19130,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d19338,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d19540,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02d19748,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d19950,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d19b58,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02d19d60,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d19f68,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02d1a170,0x200,param_2), cVar1 != '\0')))) &&
       ((((((((cVar1 = (*param_1)(&DAT_02d1a378,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d1a580,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d1a788,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d1a990,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d1ab98,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02d1ada0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02d1afa8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d1b1b0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02d1b3b8,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_02d1b5c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d1b7c8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d1b9d0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02d1bbd8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d1bde0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02d1bfe8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02d1c1f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d1c3f8,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02d1c600,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02d1c808,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d1ca10,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d1cc18,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02d1ce20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d1d028,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d1d230,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02d1d438,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d1d640,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02d1d848,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02d1da50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d1dc58,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d1de60,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02d1e068,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d1e270,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02d1e478,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02d1e680,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d1e888,0x200,param_2), cVar1 != '\0')))))) &&
       (((((cVar1 = (*param_1)(&DAT_02d1ea90,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02d1ec98,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d1eea0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02d1f0a8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02d1f2b0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d1f4b8,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02d1f6c0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02d1f8c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d1fad0,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02d1fcd8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02d1fee0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d200e8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02d202f0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02d204f8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d20700,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02d20908,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02d20b10,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d20d18,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_02d20f20,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02d21128,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d21330,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d21538,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02d21740,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d21948,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d21b50,0x101,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077714b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02d21c58,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d21e60,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d22068,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d22270,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_02d22478,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02d22680,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d22888,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02d22a90,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02d22c98,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d22ea0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d230a8,0x200,param_2), cVar1 != '\0')))) &&
            ((((((cVar1 = (*param_1)(&DAT_02d232b0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d234b8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02d236c0,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02d238c8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d23ad0,0x200,param_2), cVar1 != '\0')))))) &&
               (cVar1 = (*param_1)(&DAT_02d23cd8,0x200,param_2), cVar1 != '\0')) &&
              ((((cVar1 = (*param_1)(&DAT_02d23ee0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d240e8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02d242f0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02d244f8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d24700,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_02d24908,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02d24b10,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d24d18,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02d24f20,0x200,param_2), cVar1 != '\0' &&
            ((((((cVar1 = (*param_1)(&DAT_02d25128,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d25330,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02d25538,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02d25740,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d25948,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02d25b50,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02d25d58,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d25f60,0x200,param_2), cVar1 != '\0')))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02d26168,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02d26370,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d26578,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d26780,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02d26988,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d26b90,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d26d98,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02d26fa0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d271a8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02d273b0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02d275b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d277c0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02d279c8,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02d27bd0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d27dd8,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02d27fe0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02d281e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d283f0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d285f8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02d28800,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d28a08,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d28c10,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d28e18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d29020,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02d29228,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02d29430,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d29638,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02d29840,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02d29a48,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d29c50,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d29e58,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_02d2a060,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d2a268,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d2a470,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d2a678,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d2a880,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02d2aa88,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02d2ac90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d2ae98,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d2b0a0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02d2b2a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d2b4b0,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((cVar1 = (*param_1)(&DAT_02d2b6b8,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02d2b8c0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d2bac8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02d2bcd0,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02d2bed8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d2c0e0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d2c2e8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d2c4f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d2c6f8,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_02d2c900,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_02d2cb08,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02d2cd10,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_02d2cf18,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02d2d120,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d2d328,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d2d530,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02d2d738,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d2d940,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d2db48,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02d2dd50,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d2df58,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02d2e160,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02d2e368,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d2e570,0x70,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007777ed(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02d2e5e8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02d2e7f0,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02d2e9f8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d2ec00,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d2ee08,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02d2f010,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d2f218,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02d2f420,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02d2f628,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d2f830,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d2fa38,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d2fc40,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d2fe48,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02d30050,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02d30258,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d30460,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02d30668,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_02d30870,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d30a78,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d30c80,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d30e88,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d31090,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02d31298,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02d314a0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d316a8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02d318b0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02d31ab8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d31cc0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d31ec8,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02d320d0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d322d8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02d324e0,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02d326e8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d328f0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02d32af8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02d32d00,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d32f08,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d33110,0xf6,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00777a74(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02d33208,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02d33410,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02d33618,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02d33820,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02d33a28,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02d33c30,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d33e38,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02d34040,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_02d34248,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d34450,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d34658,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02d34860,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ce6598,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02ce67a0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02d34a68,0x11b,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00777b74(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02d34b88,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02d34d90,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02ce69a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ce6bb0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ce6db8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02ce6fc0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ce71c8,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02ce73d0,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02ce75d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ce77e0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ce79e8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ce7bf0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ce7df8,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_02ce8000,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02ce8208,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ce8410,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02ce8618,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02ce8820,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d34f98,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d351a0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d353a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d355b0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02ce8c30,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02ce8e38,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ce9040,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02d357b8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02d359c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d35bc8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d35dd0,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02d35fd8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d361e0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d363e8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02d365f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d367f8,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02d36a00,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02d36c08,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ce9450,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d36e10,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d37018,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d37220,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02d37428,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02d37630,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d37838,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_02d37a40,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02d37c48,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d37e50,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d38058,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02d38260,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d38468,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d38670,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02d38878,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d38a80,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02d38c88,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02d38e90,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d39098,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d392a0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02d394a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d396b0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d398b8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02d39ac0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d39cc8,0x200,param_2), cVar1 != '\0')))))))) &&
       (cVar1 = (*param_1)(&DAT_02d39ed0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_02d3a0d8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d3a2e0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02d3a4e8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02d3a6f0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02d3a8f4,0x11,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00777fe5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02d3a908,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d3ab10,0x200,param_2), cVar1 != '\0')) &&
          (((((((cVar1 = (*param_1)(&DAT_02d3ad18,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d3af20,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02d3b128,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02d3b330,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d3b538,0x200,param_2), cVar1 != '\0')))))) &&
              (cVar1 = (*param_1)(&DAT_02d3b740,0x200,param_2), cVar1 != '\0')) &&
             ((((((cVar1 = (*param_1)(&DAT_02d3b948,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d3bb50,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02d3bd58,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02d3bf60,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d3c168,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02d3c370,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02d3c578,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d3c780,0x200,param_2), cVar1 != '\0')))))) &&
              ((cVar1 = (*param_1)(&DAT_02d3c988,0x200,param_2), cVar1 != '\0' &&
               (((((cVar1 = (*param_1)(&DAT_02d3cb90,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02d3cd98,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02d3cfa0,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02d3d1a8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d3d3b0,0x200,param_2), cVar1 != '\0')))) &&
                (((cVar1 = (*param_1)(&DAT_02d3d5b8,0x200,param_2), cVar1 != '\0' &&
                  ((cVar1 = (*param_1)(&DAT_02d3d7c0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02d3d9c8,0x200,param_2), cVar1 != '\0')))) &&
                 (cVar1 = (*param_1)(&DAT_02d3dbd0,0x200,param_2), cVar1 != '\0')))))))))) &&
            ((((cVar1 = (*param_1)(&DAT_02d3ddd8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d3dfe0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d3e1e8,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02d3e3f0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d3e5f8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02d3e800,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02d3ea08,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d3ec10,0x200,param_2), cVar1 != '\0')))))))))) &&
           (cVar1 = (*param_1)(&DAT_02d3ee18,0x200,param_2), cVar1 != '\0')))) &&
         (((((cVar1 = (*param_1)(&DAT_02d3f020,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d3f228,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d3f430,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d3f638,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d3f840,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02d3fa48,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02d3fc50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d3fe58,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d40060,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02d40268,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d40470,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d40678,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_02d40880,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d40a88,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d40c90,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d40e98,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d410a0,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02d412a8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02d414b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d416b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d418c0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02d41ac8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d41cd0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d41ed8,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02d420e0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d422e8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02d424f0,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02d426f8,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02d42900,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02d42b08,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02d42d10,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d42f18,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02d43120,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02d43328,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d43530,0x200,param_2), cVar1 != '\0')))) &&
            ((((cVar1 = (*param_1)(&DAT_02d43738,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_02d43940,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d43b48,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02d43d50,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_02d43f58,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d44160,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02d44368,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02d44570,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d44778,0x200,param_2), cVar1 != '\0')))))))))))) &&
        (((cVar1 = (*param_1)(&DAT_02d44980,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02d44b88,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d44d90,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d44f98,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02d451a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d453a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d455b0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02d457b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d459c0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d45bc8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02d45dd0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d45fd8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02d461e0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02d463e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d465f0,0x200,param_2), cVar1 != '\0')))))))))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_02d467f8,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02d46a00,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d46c08,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_02d46e10,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02d47018,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d47220,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d47428,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02d47630,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d47838,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d47a40,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02d47c48,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d47e50,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d48058,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02d48260,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d48468,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d48670,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02d48878,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d48a80,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d48c88,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02d48e90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d49098,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d492a0,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_02d494a8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d496b0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02d498b8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02d49ac0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d49cc8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02d49ed0,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02d4a0d8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02d4a2e0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02d4a4e8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02d4a6f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d4a8f8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d4ab00,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02d4ad08,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02d4af10,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02d4b118,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02d4b320,0x1f6,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007788aa(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02d4b518,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02d4b720,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02d4b928,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d4bb30,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d4bd38,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02d4bf40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d4c148,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02d4c350,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02d4c558,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d4c760,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d4c968,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d4cb70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d4cd78,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02d4cf80,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02d4d188,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d4d390,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02d4d598,0x200,param_2), cVar1 != '\0')) &&
       (((((((cVar1 = (*param_1)(&DAT_02d4d7a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d4d9a8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d4dbb0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d4ddb8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d4dfc0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02d4e1c8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02d4e3d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d4e5d8,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02d4e7e0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02d4e9e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d4ebf0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d4edf8,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02d4f000,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d4f208,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d4f410,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02d4f618,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d4f820,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02d4fa28,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02d4fc30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d4fe38,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d50040,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02d50248,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d50450,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d50658,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02d50860,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d50a68,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02d50c70,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02d50e78,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d51080,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d51288,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d51490,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d51698,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02d518a0,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02d51aa8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02d51cb0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02d51eb8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02d520c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d522c8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d524d0,0x1ee,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00778c63(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02d526c0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02d528c8,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02d52ad0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d52cd8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d52ee0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02d530e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d532f0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02d534f8,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02d53700,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d53908,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d53b10,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02d53d18,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d53f20,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((((cVar1 = (*param_1)(&DAT_02d54128,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02d54330,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d54538,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02d54740,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_02d54948,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d54b50,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02d54d58,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02d54f60,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d55168,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02d55370,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02d55578,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d55780,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d55988,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02d55b90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d55d98,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d55fa0,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02d561a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d563b0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d565b8,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02d567c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d569c8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d56bd0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02d56dd8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d56fe0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d571e8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02d573f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d575f8,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02d57800,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02d57a08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d57c10,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d57e18,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02d58020,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d58228,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d58430,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02d58638,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d58840,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_02d58a48,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02d58c50,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d58e58,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02d59060,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02d59268,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d59470,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d59678,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02d59880,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d59a88,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d59c90,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02d59e98,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d5a0a0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d5a2a8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02d5a4b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d5a6b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d5a8c0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02d5aac8,0x8f,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007790c6(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02d5ab58,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02d5ad60,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02cf0f80,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02cf1188,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02cf1390,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02cf1598,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cf17a0,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02cf19a8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02cf1bb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cf1db8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d5af68,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d5b170,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d5b378,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02d5b580,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02d5b788,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d5b990,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02d5bb98,0x200,param_2), cVar1 != '\0')) &&
       (((((((cVar1 = (*param_1)(&DAT_02d5bda0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d5bfa8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d5c1b0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d5c3b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d5c5c0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02d5c7c8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02d5c9d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d5cbd8,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02d5cde0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02d5cfe8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d5d1f0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d5d3f8,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02d5d600,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d5d808,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d5da10,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02d5dc18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d5de20,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02d5e028,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02d5e230,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cf5490,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02cf5698,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02cf58a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d5e438,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d5e640,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02d5e848,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d5ea50,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02d5ec58,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02d5ee60,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d5f068,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d5f270,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d5f478,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d5f680,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02d5f888,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02d5fa90,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d5fc98,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02d5fea0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02d600a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d602b0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d604b8,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_02d606c0,0x4f,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077948d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02d60710,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d60918,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02d60b20,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d60d28,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d60f30,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02d61138,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d61340,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02d61548,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02d61750,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d61958,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d61b60,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d61d68,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d61f70,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02c47648,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02d62178,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d62380,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_02d62588,0x200,param_2), cVar1 != '\0')) &&
      ((((((((cVar1 = (*param_1)(&DAT_02d62790,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d62998,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d62ba0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d62da8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d62fb0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02d631b8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02d633c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d635c8,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02d637d0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02d639d8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d63be0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d63de8,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_02d63ff0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d641f8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d64400,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02d64608,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d64810,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02d64a18,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02d64c20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d64e28,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d65030,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02d65238,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d65440,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02d65648,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02d65850,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d65a58,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02d65c60,0x200,param_2), cVar1 != '\0')))))))))))) &&
     ((((((((((cVar1 = (*param_1)(&DAT_02d65e68,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d66070,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d66278,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d66480,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d66688,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02d66890,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02d66a98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d66ca0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d66ea8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02d670b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d672b8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d674c0,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*param_1)(&DAT_02d676c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d678d0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02d67ad8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02d67ce0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d67ee8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02d680f0,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_02d682f8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d68500,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02d68708,0x200,param_2), cVar1 != '\0')))))))) &&
            (((cVar1 = (*param_1)(&DAT_02d68910,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d68b18,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d68d20,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_02d68f28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d69130,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d69338,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02d69540,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d69748,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02d69950,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02d69b58,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d69d60,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02d69f68,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02d6a170,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d6a378,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02d6a580,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02d6a788,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d6a990,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d6ab98,0x200,param_2), cVar1 != '\0')))) &&
          (((((cVar1 = (*param_1)(&DAT_02d6ada0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d6afa8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d6b1b0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d6b3b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d6b5c0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02d6b7c8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02d6b9d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d6bbd8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d6bde0,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02d6bfe8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d6c1f0,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_02d6c3f8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02d6c600,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d6c808,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d6ca10,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02d6cc18,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d6ce20,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d6d028,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02d6d230,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d6d438,0x200,param_2), cVar1 != '\0')))))))))) &&
         (((cVar1 = (*param_1)(&DAT_02d6d640,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02d6d848,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d6da50,0x200,param_2), cVar1 != '\0')))) &&
          (((((cVar1 = (*param_1)(&DAT_02d6dc58,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02d6de60,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d6e068,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02d6e270,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02d6e478,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d6e680,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d6e888,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02d6ea90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d6ec98,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02d6eea0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02d6f0a8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d6f2b0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d6f4b8,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02d6f6c0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d6f8c8,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02d6fad0,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_02d6fcd8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d6fee0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d700e8,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02d702f0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d704f8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02d70700,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02d70908,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d70b10,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02d70d18,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d70f20,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d71128,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02d71330,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02d71538,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d71740,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d71948,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d71b50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d71d58,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((((((cVar1 = (*param_1)(&DAT_02d71f60,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02d72168,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d72370,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02d72578,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02d72780,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d72988,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d72b90,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02d72d98,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d72fa0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d731a8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02d733b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d735b8,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02d737c0,0x200,param_2), cVar1 != '\0')))) &&
         (((((cVar1 = (*param_1)(&DAT_02d739c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d73bd0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d73dd8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d73fe0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d741e8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02d743f0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02d745f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d74800,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02d74a08,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02d74c10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d74e18,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d75020,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d75228,0x86,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00779f83(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02d754b8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02d756c0,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02d758c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d75ad0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d75cd8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02d75ee0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d760e8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02d762f0,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02d764f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d76700,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d76908,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d76b10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d76d18,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02d76f20,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02d77128,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d77330,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02d77538,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_02d77740,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d77948,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d77b50,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d77d58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d77f60,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02d78168,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02d78370,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d78578,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02d78780,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02d78988,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d78b90,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d78d98,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02d78fa0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d791a8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02d793b0,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02d795b8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d797c0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02d799c8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02d79bd0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d79dd8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d79fe0,0x114,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077a20a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02d7a0f8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02d7a300,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02d7a508,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02d7a710,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02d7a918,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02d7ab20,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d7ad28,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02d7af30,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_02d7b138,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d7b340,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d7b548,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02d7b750,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d7b958,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02d7bb60,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02d7bd68,0x137,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077a30a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_02d7e330,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d7e538,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d7e740,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d7e948,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02d7eb50,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02d7ed58,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02d7ef60,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_02d7f168,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02d7f370,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d7f578,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d7f780,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02d7f988,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d7fb90,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d7fd98,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d7ffa0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d801a8,0x200,param_2), cVar1 != '\0')))))) &&
       (((((cVar1 = (*param_1)(&DAT_02d803b0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02d805b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d807c0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d809c8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02d80bd0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d80dd8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02d80fe0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02d811e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d813f0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d815f8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02d81800,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d81a08,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d81c10,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02d81e18,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d82020,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02d82228,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02d82430,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d82638,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d82840,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02d82a48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d82c50,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d82e58,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02d83060,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02d83268,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02d83470,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_02d83678,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d83880,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02d83a88,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02d83c90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d83e98,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d840a0,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02d842a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d844b0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d846b8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02d848c0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d84ac8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02d84cd0,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02d84ed8,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02d850e0,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02d852e8,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02d854f0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d856f8,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02d85900,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02d85b08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d85d10,0x200,param_2), cVar1 != '\0')))) &&
         ((((((cVar1 = (*param_1)(&DAT_02d85f18,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02d86120,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d86328,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02d86530,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02d86738,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d86940,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d86b48,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02d86d50,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d86f58,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02d87160,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02d87368,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d87570,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d87778,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02d87980,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d87b88,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d87d90,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_02d87f98,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d881a0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02d883a8,0x135,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077a85b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02d884e0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d886e8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02d888f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d88af8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d88d00,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02d88f08,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d89110,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02d89318,0x200,param_2), cVar1 != '\0' &&
          (((((((cVar1 = (*param_1)(&DAT_02d89520,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d89728,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02d89930,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02d89b38,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d89d40,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02d89f48,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d8a150,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d8a358,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02d8a560,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02d8a768,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d8a970,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d8ab78,0x200,param_2), cVar1 != '\0')))))))))) &&
        (((((((cVar1 = (*param_1)(&DAT_02d8ad80,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d8af88,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d8b190,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_02d8b398,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d8b5a0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02d8b7a8,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02d8b9b0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d8bbb8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02d8bdc0,0x200,param_2), cVar1 != '\0')))))) &&
              ((cVar1 = (*param_1)(&DAT_02d8bfc8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d8c1d0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02d8c3d8,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02d8c5e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d8c7e8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02d8c9f0,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02d8cbf8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d8ce00,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02d8d008,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02d8d210,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d8d418,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_02d8d620,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02d8d828,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d8da30,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02d8dc38,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02d8de40,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d8e048,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d8e250,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02d8e458,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d8e660,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d8e868,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02d8ea70,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d8ec78,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02d8ee80,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02d8f088,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d8f290,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d8f498,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02d8f6a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d8f8a8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02d8fab0,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02d8fcb8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d8fec0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d900c8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02d902d0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d904d8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d906e0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02d908e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d90af0,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_02d90cf8,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02d90f00,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d91108,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02d91310,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02d91518,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d91720,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d91928,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02d91b30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d91d38,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d91f40,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02d92148,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d92350,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d92558,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02d92760,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d92968,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d92b70,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02d92d78,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d92f80,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02d93188,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02d93390,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d93598,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02d937a0,0x200,param_2), cVar1 != '\0' &&
              (((((cVar1 = (*param_1)(&DAT_02d939a8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d93bb0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02d93db8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02d93fc0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d941c8,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02d943d0,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_02d945d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d947e0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d949e8,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_02d94bf0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d94df8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d95000,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02d95208,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d95410,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02d95618,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02d95820,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d95a28,0x200,param_2), cVar1 != '\0')))))) &&
            (cVar1 = (*param_1)(&DAT_02d95c30,0x200,param_2), cVar1 != '\0')))) &&
          ((((((((cVar1 = (*param_1)(&DAT_02d95e38,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d96040,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02d96248,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02d96450,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d96658,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_02d96860,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02d96a68,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d96c70,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02d96e78,0x200,param_2), cVar1 != '\0')))) &&
             ((((((cVar1 = (*param_1)(&DAT_02d97080,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d97288,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02d97490,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02d97698,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d978a0,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02d97aa8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02d97cb0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d97eb8,0x200,param_2), cVar1 != '\0')))))) &&
              (cVar1 = (*param_1)(&DAT_02d980c0,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02d982c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d984d0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02d986d8,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02d988e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d98ae8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02d98cf0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02d98ef8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d99100,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02d99308,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02d99510,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d99718,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d99920,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02d99b28,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d99d30,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02d99f38,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02d9a140,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d9a348,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02d9a550,0x200,param_2), cVar1 != '\0' &&
        ((((((cVar1 = (*param_1)(&DAT_02d9a758,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d9a960,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d9ab68,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d9ad70,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d9af78,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02d9b180,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02d9b388,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02d9b590,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02d9b798,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02d9b9a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d9bba8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d9bdb0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02d9bfb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d9c1c0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02d9c3c8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02d9c5d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02d9c7d8,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
      ((cVar1 = (*param_1)(&DAT_02d9c9e0,0x200,param_2), cVar1 != '\0' &&
       ((((cVar1 = (*param_1)(&DAT_02d9cbe8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d9cdf0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02d9cff8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02d9d200,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d9d408,0x17e,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077b362(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02d9d588,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d9d790,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d9d998,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d9dba0,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_02d9dda8,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02d9dfb0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d9e1b8,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02d9e3c0,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02d9e5c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02d9e7d0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02d9e9d8,0x200,param_2), cVar1 != '\0')))) &&
            ((((((cVar1 = (*param_1)(&DAT_02d9ebe0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d9ede8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02d9eff0,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02d9f1f8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02d9f400,0x200,param_2), cVar1 != '\0')))))) &&
               (cVar1 = (*param_1)(&DAT_02d9f608,0x200,param_2), cVar1 != '\0')) &&
              ((((cVar1 = (*param_1)(&DAT_02d9f810,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02d9fa18,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02d9fc20,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02d9fe28,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02da0030,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_02da0238,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02da0440,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02da0648,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02da0850,0x200,param_2), cVar1 != '\0' &&
            ((((((cVar1 = (*param_1)(&DAT_02da0a58,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02da0c60,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02da0e68,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02da1070,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02da1278,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02da1480,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02da1688,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02da1890,0x200,param_2), cVar1 != '\0')))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02da1a98,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02da1ca0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02da1ea8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02da20b0,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02da22b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02da24c0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02da26c8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02da28d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02da2ad8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02da2ce0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02da2ee8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02da30f0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02da32f8,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02da3500,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02da3708,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02da3910,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02da3b18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02da3d20,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02da3f28,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02da4130,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02da4338,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02da4540,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02da4748,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02da4950,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02da4b58,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02da4d60,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02da4f68,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02da5170,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02da5378,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02da5580,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02da5788,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_02da5990,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02da5b98,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02da5da0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02da5fa8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02da61b0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02da63b8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02da65c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02da67c8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02da69d0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02da6bd8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02da6de0,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((cVar1 = (*param_1)(&DAT_02da6fe8,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02da71f0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02da73f8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02da7600,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02da7808,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02da7a10,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02da7c18,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02da7e20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02da8028,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_02da8230,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_02da8438,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02da8640,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_02da8848,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02da8a50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02da8c58,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02da8e60,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02da9068,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02da9270,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02da9478,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02da9680,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02da9888,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02da9a90,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02da9c98,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02da9ea0,0x19d,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077ba07(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02daa040,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02daa248,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02daa450,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02daa658,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02daa860,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02daaa68,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02daac70,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02daae78,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02dab080,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dab288,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02dab490,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d76b10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d76d18,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02dab698,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02dab8a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02dabaa8,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02dabcb0,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_02dabeb8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dac0c0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02d77b50,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d77d58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d77f60,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02dac2c8,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02dac4d0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02dac6d8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02dac8e0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02dacae8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02daccf0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02dacef8,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02dad100,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02dad308,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02dad510,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02dad718,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02dad920,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02dadb28,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02dadd30,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dadf38,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02dae140,0x111,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077bc8e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02dae258,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02dae460,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02dae668,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02dae870,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02daea78,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02daec80,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02daee88,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02daf090,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_02daf298,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02daf4a0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02daf6a8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02daf8b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02dafab8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02dafcc0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02dafec8,0x135,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077bd8e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02db0000,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02db0208,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02db0410,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02db0618,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02db0820,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02db0a28,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02db0c30,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_02db0e38,0x200,param_2), cVar1 != '\0' &&
       (((((((cVar1 = (*param_1)(&DAT_02db1040,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02db1248,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02db1450,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02db1658,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02db1860,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02db1a68,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02db1c70,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02db1e78,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02db2080,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02db2288,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d752b0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02db2490,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((((((((cVar1 = (*param_1)(&DAT_02db2698,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02db28a0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02db2aa8,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_02db2cb0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02db2eb8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02db30c0,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02db32c8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02db34d0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02db36d8,0x200,param_2), cVar1 != '\0')))))) &&
              ((cVar1 = (*param_1)(&DAT_02db38e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02db3ae8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02db3cf0,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02db3ef8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02db4100,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02db4308,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02db4510,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02db4718,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02db4920,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02db4b28,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02db4d30,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_02db4f38,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02db5140,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02db5348,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02db5550,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02db5758,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02db5960,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02db5b68,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02db5d70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02db5f78,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02db6180,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02db6388,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02db6590,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02db6798,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02db69a0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02db6ba8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02db6db0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02db6fb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02db71c0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02db73c8,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02db75d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02db77d8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02db79e0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02db7be8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02db7df0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02db7ff8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02db8200,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02db8408,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02db8610,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02db8818,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02db8a20,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02db8c28,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02db8e30,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02db9038,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02db9240,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02db9448,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02db9650,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02db9858,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02db9a60,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02db9c68,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02db9e70,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02dba078,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02dba280,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02dba488,0x200,param_2), cVar1 != '\0')))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02dba690,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dba898,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02dbaaa0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02dbaca8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02dbaeb0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02dbb0b8,0x200,param_2), cVar1 != '\0' &&
              (((((cVar1 = (*param_1)(&DAT_02dbb2c0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02dbb4c8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02dbb6d0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02dbb8d8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02dbbae0,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02dbbce8,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_02dbbef0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02dbc0f8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02dbc300,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_02dbc508,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02dbc710,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02dbc918,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02dbcb20,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02dbcd28,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02dbcf30,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02dbd138,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02dbd340,0x200,param_2), cVar1 != '\0')))))) &&
            (cVar1 = (*param_1)(&DAT_02dbd548,0x200,param_2), cVar1 != '\0')))) &&
          ((((((((cVar1 = (*param_1)(&DAT_02dbd750,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02dbd958,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02dbdb60,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02dbdd68,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02dbdf70,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_02dbe178,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02dbe380,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02dbe588,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02dbe790,0x200,param_2), cVar1 != '\0')))) &&
             ((((((cVar1 = (*param_1)(&DAT_02dbe998,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02dbeba0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02dbeda8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02dbefb0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02dbf1b8,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02dbf3c0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02dbf5c8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02dbf7d0,0x200,param_2), cVar1 != '\0')))))) &&
              (cVar1 = (*param_1)(&DAT_02dbf9d8,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02dbfbe0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02dbfde8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02dbfff0,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02dc01f8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02dc0400,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02dc0608,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02dc0810,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02dc0a18,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02dc0c20,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02dc0e28,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02dc1030,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02dc1238,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_02dc1440,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02dc1648,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02dc1850,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02dc1a58,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dc1c60,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02dc1e68,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02dc2070,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02dc2278,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02dc2480,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02dc2688,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02dc2890,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02dc2a98,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02dc2ca0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02dc2ea8,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02dc30b0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02dc32b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02dc34c0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02dc36c8,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02dc38d0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02dc3ad8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02dc3ce0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02dc3ee8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02dc40f0,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
         (cVar1 = (*param_1)(&DAT_02dc42f8,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02dc4500,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dc4708,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02dc4910,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02dc4b18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dc4d20,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02dc4f28,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dc512c,8,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077c8b4(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02dc5138,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02dc5340,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02ce69a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ce6bb0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ce6db8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02ce6fc0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ce71c8,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02ce73d0,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02ce75d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ce77e0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ce79e8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ce7bf0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ce7df8,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_02ce8000,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02ce8208,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ce8410,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02ce8618,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02ce8820,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d34f98,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02dc5548,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ce8a28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dc5750,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02d7db10,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02d7dd18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d7df20,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02dc5958,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02d359c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02dc5b60,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02dc5d68,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02ce9248,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02dc5f70,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d7bea0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02d7c0a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02d7c2b0,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02d7c4b8,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02d7c6c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02dc6178,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cecd30,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02cecf38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dc6380,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02dc6588,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02dc6790,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ced758,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_02ced960,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02cedb68,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cedd70,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02cedf78,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02cee180,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02cee388,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cee590,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02cee798,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cee9a0,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02dc6998,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02dc6ba0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02dc6da8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02dc6fb0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02dc71b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02dc73c0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02dc75c8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02dc77d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dc79d8,0x200,param_2), cVar1 != '\0')))))))) &&
       (cVar1 = (*param_1)(&DAT_02dc7be0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_02dc7de8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02dc7ff0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02dc81f8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02dc8400,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02dc8604,0x1d,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077cd25(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02dc8628,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02dc8830,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02dc8a38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dc8c40,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02dc8e48,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02dc9050,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dc9258,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02d7c8c8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02d7cad0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d7ccd8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02d7cee0,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02dc9460,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02dc9668,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d7d0e8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02d7d2f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d7d4f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02dc9870,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02dc9a78,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02dc9c80,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02dc9e88,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_02dca090,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dca298,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((cVar1 = (*param_1)(&DAT_02dca4a0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02dca6a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02dca8b0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02dcaab8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02dcacc0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02dcaec8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02dcb0d0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02dcb2d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dcb4e0,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((((((cVar1 = (*param_1)(&DAT_02dcb6e8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02dcb8f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02dcbaf8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02dcbd00,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02dcbf08,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02dcc110,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02dcc318,0x200,param_2), cVar1 != '\0')))) &&
            (((((cVar1 = (*param_1)(&DAT_02dcc520,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02dcc728,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02dcc930,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02dccb38,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02dccd40,0x200,param_2), cVar1 != '\0')))) &&
             (((((cVar1 = (*param_1)(&DAT_02dccf48,0x200,param_2), cVar1 != '\0' &&
                 (((cVar1 = (*param_1)(&DAT_02dcd150,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02dcd358,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02dcd560,0x200,param_2), cVar1 != '\0')))) &&
                ((cVar1 = (*param_1)(&DAT_02dcd768,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02dcd970,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02dcdb78,0x200,param_2), cVar1 != '\0')) &&
              ((((((cVar1 = (*param_1)(&DAT_02dcdd80,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02dcdf88,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_02dce190,0x200,param_2), cVar1 != '\0' &&
                   ((((cVar1 = (*param_1)(&DAT_02dce398,0x200,param_2), cVar1 != '\0' &&
                      (cVar1 = (*param_1)(&DAT_02dce5a0,0x200,param_2), cVar1 != '\0')) &&
                     (cVar1 = (*param_1)(&DAT_02dce7a8,0x200,param_2), cVar1 != '\0')) &&
                    ((cVar1 = (*param_1)(&DAT_02dce9b0,0x200,param_2), cVar1 != '\0' &&
                     (cVar1 = (*param_1)(&DAT_02dcebb8,0x200,param_2), cVar1 != '\0')))))))) &&
                 (cVar1 = (*param_1)(&DAT_02dcedc0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02dcefc8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02dcf1d0,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02dcf3d8,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02dcf5e0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02dcf7e8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02dcf9f0,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02dcfbf8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02dcfe00,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02dd0008,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02dd0210,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02dd0418,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02dd0620,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02dd0828,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02dd0a30,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02dd0c38,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02dd0e40,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02dd1048,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02dd1250,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02dd1458,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dd1660,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02dd1868,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02dd1a70,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02dd1c78,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02dd1e80,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02dd2088,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02dd2290,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02dd2498,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02dd26a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02dd28a8,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_02dd2ab0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02dd2cb8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02dd2ec0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02dd30c8,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02dd32d0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02dd34d8,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02dd36e0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02dd38e8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02dd3af0,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02dd3cf8,0x200,param_2), cVar1 != '\0')))))) &&
            (((((cVar1 = (*param_1)(&DAT_02dd3f00,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02dd4108,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02dd4310,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02dd4518,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02dd4720,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02dd4928,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02dd4b30,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02dd4d38,0x200,param_2), cVar1 != '\0')))))))) &&
             (cVar1 = (*param_1)(&DAT_02dd4f40,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02dd5148,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02dd5350,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02dd5558,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02dd5760,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02dd5968,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02dd5b70,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02dd5d78,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02dd5f80,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02dd6188,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02dd6390,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dd6598,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02dd67a0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02dd69a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02dd6bb0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02dd6db8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02dd6fc0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02dd71c8,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((cVar1 = (*param_1)(&DAT_02dd73d0,0x200,param_2), cVar1 != '\0' &&
      ((((cVar1 = (*param_1)(&DAT_02dd75d8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02dd77e0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02dd79e8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02dd7bf0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02dd7df8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02dd8000,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02dd8208,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02dd8410,0xe2,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077d5fb(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02dd84f8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02dd8700,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02dd8908,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dd8b10,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02dd8d18,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02dd8f20,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02dd9128,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02dd9330,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02dd9538,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dd9740,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02dd9948,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02dd9b50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dd9d58,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02dd9f60,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02dda168,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02dda370,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_02dda578,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02dda780,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02dda988,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02ddab90,0x200,param_2), cVar1 != '\0')))))) &&
     (((((cVar1 = (*param_1)(&DAT_02ddad98,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ddafa0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02ddb1a8,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02ddb3b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ddb5b8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02ddb7c0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02ddb9c8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ddbbd0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02ddbdd8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02ddbfe0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ddc1e8,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02ddc3f0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ddc5f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ddc800,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((((cVar1 = (*param_1)(&DAT_02ddca08,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02ddcc10,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ddce18,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ddd020,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02ddd228,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ddd430,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02ddd638,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02ddd840,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ddda48,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02dddc50,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02ddde58,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02dde060,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02dde268,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02dde470,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02dde678,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02dde880,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_02ddea88,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ddec90,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02ddee98,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02ddf0a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ddf2a8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02ddf4b0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02ddf6b8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ddf8c0,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02ddfac8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02ddfcd0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ddfed8,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_02de00e0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02de02e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02de04f0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02de06f8,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02de0900,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02de0b08,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02de0d10,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02de0f18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02de1120,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02de1328,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02de1530,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02de1738,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02de1940,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02de1b48,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02de1d50,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_02de1f58,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02de2160,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02de2368,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02de2570,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02de2778,0x48,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077db5a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02de27c8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02de29d0,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02de2bd8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02de2de0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d7e128,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02de2fe8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02de31f0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02de33f8,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02de3600,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02de3808,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02de3a10,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02de3c18,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02de3e20,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((((cVar1 = (*param_1)(&DAT_02de4028,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02de4230,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02de4438,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02de4640,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_02de4848,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02de4a50,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02de4c58,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02de4e60,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02de5068,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02de5270,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02de5478,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02de5680,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02de5888,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02de5a90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02de5c98,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02de5ea0,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02de60a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02de62b0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02de64b8,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02de66c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02de68c8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02de6ad0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02de6cd8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02de6ee0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02de70e8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02de72f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02de74f8,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02de7700,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02de7908,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02de7b10,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02de7d18,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02de7f20,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02de8128,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02de8330,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02de8538,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02de8740,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_02de8948,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02de8b50,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02de8d58,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02de8f60,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02de9168,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02de9370,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02de9578,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02de9780,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02de9988,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02de9b90,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02de9d98,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02de9fa0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02dea1a8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02dea3b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dea5b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02dea7c0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02dea9c8,0x19c,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077dfbd(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02dee858,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02deea60,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02deab68,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dead70,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02deaf78,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02deb180,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02deb388,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02deb590,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02deb798,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02deb9a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02debba8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02debdb0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02debfb8,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_02dec1c0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02dec3c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dec5d0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02dec7d8,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02dec9e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02deec68,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02deee70,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02def078,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02def280,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02def488,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02def690,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02def898,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02defaa0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02defca8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02defeb0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02df00b8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02df02c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02df04c8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02df06d0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02df08d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02df0ae0,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02df0ce8,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02dedc28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02dede30,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02df0ef0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02df10f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02df1300,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02df1508,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02df1710,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02df1918,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_02df1b20,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02df1d28,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02df1f30,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02df2138,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02df2340,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02df2548,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02df2750,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02df2958,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02df2b60,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02df2d68,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02df2f70,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02df3178,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02df3380,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02df3588,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02df3790,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02df3998,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02df3ba0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02df3da8,0x200,param_2), cVar1 != '\0')))))))) &&
       (cVar1 = (*param_1)(&DAT_02df3fb0,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02df41b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02dee448,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02dee650,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02df43c0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02df45c8,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_02df47d0,0x14f,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077e442(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02df4920,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02df4b28,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02df4d30,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02df4f38,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02df5140,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02df5348,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02df5550,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02df5758,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02df5960,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02df5b68,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02df5d70,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02df5f78,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02df6180,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02df6388,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02df6590,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02df6798,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02cf2bf0,0x200,param_2), cVar1 != '\0')) &&
       (((((((cVar1 = (*param_1)(&DAT_02df69a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02df6ba8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02df6db0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02df6fb8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02df71c0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02df73c8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02df75d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02df77d8,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02df79e0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02df7be8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02df7df0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02df7ff8,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02df8200,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d5d808,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02df8408,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02df8610,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02df8818,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02df8a20,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02df8c28,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02df8e30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02df9038,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02df9240,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02df9448,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02df9650,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02df9858,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02df9a60,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02df9c68,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02df9e70,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dfa078,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02dfa280,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02dfa488,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dfa690,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02dfa898,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02dfaaa0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02dfaca8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02dfaeb0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02dfb0b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dfb2c0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02dfb4c8,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_02dfb6cc,0x3e,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077e809(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_02dfb710,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02dfb918,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02dfbb20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dfbd28,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02cf85a0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02dfbf30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02cf89b0,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02dfc138,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02dfc340,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dfc548,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02dfc750,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02dfc958,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dfcb60,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02dfcd68,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02dfcf70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dfd178,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02dfd380,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_02dfd588,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02dfd790,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02dfd998,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02dfdba0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02dfdda8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02dfdfb0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02dfe1b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02dfe3c0,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02dfe5c8,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_02dfe7d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dfe9d8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02dfebe0,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02dfede8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dfeff0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02dff1f8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02dff400,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02dff608,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02dff810,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02dffa18,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02dffc20,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02dffe28,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02e00030,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e00238,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02e00440,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02e00648,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e00850,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02e00a58,0x200,param_2), cVar1 != '\0')))))) &&
       (((((((cVar1 = (*param_1)(&DAT_02e00c60,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e00e68,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e01070,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e01278,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e01480,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02e01688,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02e01890,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e01a98,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e01ca0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02e01ea8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e020b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e022b8,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02e024c0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e026c8,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02e028d0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02e02ad8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e02ce0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e02ee8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02e030f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e032f8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e03500,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*param_1)(&DAT_02e03708,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e03910,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e03b18,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02e03d20,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e03f28,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e04130,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02e04338,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e04540,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e04748,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e04950,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e04b58,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02e04d60,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02e04f68,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e05170,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02e05378,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02e05580,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e05788,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e05990,0x200,param_2), cVar1 != '\0')))) &&
           (((((cVar1 = (*param_1)(&DAT_02e05b98,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e05da0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e05fa8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e061b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e063b8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02e065c0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02e067c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e069d0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e06bd8,0x200,param_2), cVar1 != '\0')))))))))) &&
         (((cVar1 = (*param_1)(&DAT_02e06de0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e06fe8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e071f0,0x200,param_2), cVar1 != '\0')))))) &&
       ((((((((((cVar1 = (*param_1)(&DAT_02e073f8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e07600,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02e07808,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02e07a10,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02e07c18,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02e07e20,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02e08028,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02e08230,0x200,param_2), cVar1 != '\0')))))))) &&
              ((cVar1 = (*param_1)(&DAT_02e08438,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02e08640,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e08848,0x200,param_2), cVar1 != '\0')))))) &&
             ((((((cVar1 = (*param_1)(&DAT_02e08a50,0x200,param_2), cVar1 != '\0' &&
                  (((cVar1 = (*param_1)(&DAT_02e08c58,0x200,param_2), cVar1 != '\0' &&
                    (cVar1 = (*param_1)(&DAT_02e08e60,0x200,param_2), cVar1 != '\0')) &&
                   (cVar1 = (*param_1)(&DAT_02e09068,0x200,param_2), cVar1 != '\0')))) &&
                 (((cVar1 = (*param_1)(&DAT_02e09270,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02e09478,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02e09680,0x200,param_2), cVar1 != '\0')))) &&
                ((cVar1 = (*param_1)(&DAT_02e09888,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e09a90,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02e09c98,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02e09ea0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02e0a0a8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02e0a2b0,0x200,param_2), cVar1 != '\0')))))) &&
              ((cVar1 = (*param_1)(&DAT_02e0a4b8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e0a6c0,0x200,param_2), cVar1 != '\0')))))) &&
            (cVar1 = (*param_1)(&DAT_02e0a8c8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02e0aad0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e0acd8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e0aee0,0x200,param_2), cVar1 != '\0' &&
             ((((((cVar1 = (*param_1)(&DAT_02e0b0e8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02e0b2f0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02e0b4f8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02e0b700,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e0b908,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02e0bb10,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02e0bd18,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e0bf20,0x200,param_2), cVar1 != '\0')))))))))) &&
          ((cVar1 = (*param_1)(&DAT_02e0c128,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02e0c330,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e0c538,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e0c740,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e0c948,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e0cb50,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*param_1)(&DAT_02e0cd58,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02e0cf60,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e0d168,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02e0d370,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02e0d578,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e0d780,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e0d988,0x200,param_2), cVar1 != '\0')))))) &&
        ((((((cVar1 = (*param_1)(&DAT_02e0db90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e0dd98,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e0dfa0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02e0e1a8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e0e3b0,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02e0e5b8,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_02e0e7c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e0e9c8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e0ebd0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e0edd8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e0efe0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02e0f1e8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02e0f3f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e0f5f8,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02e0f800,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02e0fa08,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02e0fc10,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02e0fe18,0x1c9,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077f2ee(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_02e0ffe8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02e101f0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02e103f8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e10600,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e10808,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02e10a10,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e10c18,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02e10e20,0x200,param_2), cVar1 != '\0' &&
           (((((((cVar1 = (*param_1)(&DAT_02e11028,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e11230,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02e11438,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02e11640,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d0e280,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02e11848,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e11a50,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e11c58,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02e11e60,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02e12068,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e12270,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e12478,0x200,param_2), cVar1 != '\0')))))))) &&
          ((((((cVar1 = (*param_1)(&DAT_02e12680,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e12888,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e12a90,0x200,param_2), cVar1 != '\0')) &&
             (((((cVar1 = (*param_1)(&DAT_02e12c98,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e12ea0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02e130a8,0x200,param_2), cVar1 != '\0' &&
                 (((cVar1 = (*param_1)(&DAT_02e132b0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02e134b8,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02e136c0,0x200,param_2), cVar1 != '\0')))))) &&
               ((cVar1 = (*param_1)(&DAT_02e138c8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e13ad0,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02e13cd8,0x200,param_2), cVar1 != '\0')))) &&
            ((((cVar1 = (*param_1)(&DAT_02e13ee0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e140e8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02e142f0,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_02e144f8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02e14700,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02e14908,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02e14b10,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e14d18,0x200,param_2), cVar1 != '\0')))))))) &&
             ((cVar1 = (*param_1)(&DAT_02e14f20,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02e15128,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e15330,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02e15538,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02e15740,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e15948,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e15b50,0x200,param_2), cVar1 != '\0')))))))) &&
         (((((cVar1 = (*param_1)(&DAT_02e15d58,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e15f60,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e16168,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02e16370,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e16578,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_02e16780,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02e16988,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02e16b90,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02e16d98,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02e16fa0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e171a8,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02e173b0,0x200,param_2), cVar1 != '\0')) &&
             ((((cVar1 = (*param_1)(&DAT_02e175b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e177c0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02e179c8,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02e17bd0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02e17dd8,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02e17fe0,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02e181e8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02e183f0,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02e185f8,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02e18800,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e18a08,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02e18c10,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02e18e18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e19020,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e19228,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02e19430,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e19638,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e19840,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02e19a48,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e19c50,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02e19e58,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02e1a060,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e1a268,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e1a470,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02e1a678,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e1a880,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02e1aa88,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02e1ac90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e1ae98,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e1b0a0,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_02e1b2a8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e1b4b0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e1b6b8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02e1b8c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e1bac8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02e1bcd0,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02e1bed8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e1c0e0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e1c2e8,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02e1c4f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e1c6f8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02e1c900,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02e1cb08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e1cd10,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e1cf18,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02e1d120,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e1d328,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02e1d530,0x200,param_2), cVar1 != '\0')))) &&
       ((((((((cVar1 = (*param_1)(&DAT_02e1d738,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e1d940,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e1db48,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e1dd50,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e1df58,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02e1e160,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02e1e368,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e1e570,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02e1e778,0x200,param_2), cVar1 != '\0')))) &&
          ((((((cVar1 = (*param_1)(&DAT_02e1e980,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e1eb88,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e1ed90,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e1ef98,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e1f1a0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02e1f3a8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02e1f5b0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e1f7b8,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02e1f9c0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02e1fbc8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e1fdd0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e1ffd8,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02e201e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e203e8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e205f0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02e207f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e20a00,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02e20c08,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02e20e10,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e21018,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e21220,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02e21428,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e21630,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02e21838,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02e21a40,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e21c48,0x200,param_2), cVar1 != '\0')))))) &&
       (((((cVar1 = (*param_1)(&DAT_02e21e50,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02e22058,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e22260,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e22468,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02e22670,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e22878,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02e22a80,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02e22c88,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e22e90,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02e23098,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02e232a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e234a8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e236b0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02e238b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e23ac0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02e23cc8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02e23ed0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e240d8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          (cVar1 = (*param_1)(&DAT_02e242e0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02e244e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e246f0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e248f8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02e24b00,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e24d08,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02e24f10,0xe7,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0077fe09(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02e24ff8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e25200,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e25408,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e25610,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_02e25818,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02e25a20,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02d22888,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02e25c28,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02e25e30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e26038,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e26240,0x200,param_2), cVar1 != '\0')))) &&
            ((((((cVar1 = (*param_1)(&DAT_02e26448,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e26650,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02e26858,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02e26a60,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02e26c68,0x200,param_2), cVar1 != '\0')))))) &&
               (cVar1 = (*param_1)(&DAT_02e26e70,0x200,param_2), cVar1 != '\0')) &&
              ((((cVar1 = (*param_1)(&DAT_02e27078,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e27280,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02e27488,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02e27690,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e27898,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_02e27aa0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02e27ca8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e27eb0,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02e280b8,0x200,param_2), cVar1 != '\0' &&
            ((((((cVar1 = (*param_1)(&DAT_02e282c0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e284c8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02e286d0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02e288d8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e28ae0,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02e28ce8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e28ef0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e290f8,0x200,param_2), cVar1 != '\0')))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02e29300,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02e29508,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e29710,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e29918,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02e29b20,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e29d28,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e29f30,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02e2a138,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e2a340,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02e2a548,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02e2a750,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e2a958,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e2ab60,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02e2ad68,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e2af70,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02e2b178,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02e2b380,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e2b588,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e2b790,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02e2b998,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e2bba0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e2bda8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e2bfb0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e2c1b8,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02e2c3c0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02e2c5c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e2c7d0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02e2c9d8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02e2cbe0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e2cde8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e2cff0,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_02e2d1f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e2d400,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e2d608,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e2d810,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e2da18,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02e2dc20,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02e2de28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e2e030,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e2e238,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02e2e440,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e2e648,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((cVar1 = (*param_1)(&DAT_02e2e850,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02e2ea58,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e2ec60,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02e2ee68,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02e2f070,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e2f278,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e2f480,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e2f688,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e2f890,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_02e2fa98,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_02e2fca0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02e2fea8,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_02e300b0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02e302b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e304c0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e306c8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02e308d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e30ad8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02e30ce0,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02e30ee8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e310f0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02e312f8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02e31500,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e31708,0xbb,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007804ae(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02e317c8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02e319d0,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02e31bd8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e31de0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e31fe8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02e321f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e323f8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02e32600,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02e32808,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e32a10,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e32c18,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e32e20,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e33028,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02e33230,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02e33438,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e33640,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02e33848,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_02e33a50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e33c58,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e33e60,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e34068,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e34270,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02e34478,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02e34680,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02d316a8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02d318b0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02d31ab8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e34888,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e34a90,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02e34c98,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e34ea0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02e350a8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02e352b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e354b8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02e356c0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02e358c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e35ad0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e35cd8,0xfb,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00780735(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02e35dd8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02e35fe0,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02e361e8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02e363f0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02ce6390,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02e365f8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e36800,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02e36a08,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_02e36c10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e36e18,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02e37020,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02e37228,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e37430,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02e37638,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02e37840,0x11d,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00780835(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02e37960,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02e37b68,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02deab68,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dead70,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02deaf78,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02deb180,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02deb388,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02deb590,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02deb798,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02deb9a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02debba8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e37d70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e37f78,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_02dec1c0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02dec3c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dec5d0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02dec7d8,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02dec9e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e38180,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02deee70,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02def078,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02def280,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02def488,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02e38388,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e38590,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02e38798,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02defca8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e389a0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e38ba8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02e38db0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e38fb8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e391c0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02e393c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e395d0,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02e397d8,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02e399e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e39be8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e39df0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e39ff8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e3a200,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02e3a408,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02e3a610,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e3a818,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_02e3aa20,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02e3ac28,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e3ae30,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e3b038,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02e3b240,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e3b448,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e3b650,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02e3b858,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e3ba60,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02e3bc68,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02e3be70,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e3c078,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02e3c280,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02e3c488,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e3c690,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e3c898,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02dee038,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02dee240,0x200,param_2), cVar1 != '\0')))))))) &&
       (cVar1 = (*param_1)(&DAT_02e3caa0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_02e3cca8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e3ceb0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02e3d0b8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02e3d2c0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02e3d4c4,0x2a,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00780ca6(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02e3d4f0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e3d6f8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e3d900,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e3db08,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02ce9658,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02e3dd10,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ce9860,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ce9a68,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02ce9c70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ce9e78,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02cea080,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02e3df18,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e3e120,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e3e328,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02e3e530,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e3e738,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e3e940,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02e3eb48,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e3ed50,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e3ef58,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_02e3f160,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e3f368,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((cVar1 = (*param_1)(&DAT_02e3f570,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02e3f778,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e3f980,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e3fb88,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02e3fd90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e3ff98,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e401a0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e403a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e405b0,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((((((cVar1 = (*param_1)(&DAT_02e407b8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02e409c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e40bc8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02e40dd0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02e40fd8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e411e0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e413e8,0x200,param_2), cVar1 != '\0')))) &&
            (((((cVar1 = (*param_1)(&DAT_02e415f0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e417f8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e41a00,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02e41c08,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e41e10,0x200,param_2), cVar1 != '\0')))) &&
             (((((cVar1 = (*param_1)(&DAT_02e42018,0x200,param_2), cVar1 != '\0' &&
                 (((cVar1 = (*param_1)(&DAT_02e42220,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02e42428,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02e42630,0x200,param_2), cVar1 != '\0')))) &&
                ((cVar1 = (*param_1)(&DAT_02e42838,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e42a40,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02e42c48,0x200,param_2), cVar1 != '\0')) &&
              ((((((cVar1 = (*param_1)(&DAT_02e42e50,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02e43058,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_02e43260,0x200,param_2), cVar1 != '\0' &&
                   ((((cVar1 = (*param_1)(&DAT_02e43468,0x200,param_2), cVar1 != '\0' &&
                      (cVar1 = (*param_1)(&DAT_02e43670,0x200,param_2), cVar1 != '\0')) &&
                     (cVar1 = (*param_1)(&DAT_02e43878,0x200,param_2), cVar1 != '\0')) &&
                    ((cVar1 = (*param_1)(&DAT_02e43a80,0x200,param_2), cVar1 != '\0' &&
                     (cVar1 = (*param_1)(&DAT_02e43c88,0x200,param_2), cVar1 != '\0')))))))) &&
                 (cVar1 = (*param_1)(&DAT_02e43e90,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02e44098,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e442a0,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02e444a8,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02e446b0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02e448b8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02e44ac0,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02e44cc8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e44ed0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e450d8,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02e452e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e454e8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e456f0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02e458f8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e45b00,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e45d08,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02e45f10,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e46118,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02e46320,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02e46528,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e46730,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e46938,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02e46b40,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e46d48,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e46f50,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02e47158,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e47360,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02e47568,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e47770,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e47978,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_02e47b80,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02e47d88,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e47f90,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e48198,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02e483a0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e485a8,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02e487b0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02e489b8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e48bc0,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02e48dc8,0x200,param_2), cVar1 != '\0')))))) &&
            (((((cVar1 = (*param_1)(&DAT_02e48fd0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e491d8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e493e0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02e495e8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e497f0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02e499f8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02e49c00,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e49e08,0x200,param_2), cVar1 != '\0')))))))) &&
             (cVar1 = (*param_1)(&DAT_02e4a010,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02e4a218,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e4a420,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e4a628,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e4a830,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e4aa38,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02e4ac40,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02e4ae48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e4b050,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02e4b258,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02e4b460,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e4b668,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e4b870,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e4ba78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e4bc80,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02e4be88,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02e4c090,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e4c298,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((cVar1 = (*param_1)(&DAT_02e4c4a0,0x200,param_2), cVar1 != '\0' &&
      ((((cVar1 = (*param_1)(&DAT_02e4c6a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e4c8b0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02e4cab8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02e4ccc0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e4cec8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02e4d0d0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02e4d2d8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e4d4dc,0x21,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00781579(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02e4d500,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02e4d708,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02e4d910,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e4db18,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e4dd20,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02e4df28,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e4e130,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02e4e338,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02e4e540,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e4e748,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e4e950,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e4eb58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e4ed60,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02e4ef68,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02e4f170,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e4f378,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02e4f580,0x200,param_2), cVar1 != '\0')) &&
       (((((((cVar1 = (*param_1)(&DAT_02e4f788,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e4f990,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e4fb98,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e4fda0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e4ffa8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02e501b0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02e503b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e505c0,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02e507c8,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02e509d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e50bd8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02e50de0,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02e50fe8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e511f0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e513f8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02e51600,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e51808,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02e51a10,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02e51c18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e51e20,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e52028,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02e52230,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e52438,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e52640,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02e52848,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e52a50,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02e52c58,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02e52e60,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e53068,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e53270,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e53478,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e53680,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02e53888,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02e53a90,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02e53c98,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02e53ea0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02e540a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e542b0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02e544b8,0x1ed,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00781932(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02e546a8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02e548b0,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02e54ab8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e54cc0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e54ec8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02e550d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e552d8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02e554e0,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02e556e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e558f0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02e55af8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02e55d00,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e55f08,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((((cVar1 = (*param_1)(&DAT_02e56110,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02e56318,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e56520,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02e56728,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_02e56930,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e56b38,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e56d40,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02e56f48,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e57150,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02e57358,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02e57560,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e57768,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e57970,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02e57b78,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e57d80,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e57f88,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02e58190,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e58398,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e585a0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02d567c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e587a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e589b0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02e58bb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e58dc0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e58fc8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02e591d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e593d8,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02e595e0,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02e597e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e599f0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e59bf8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02e59e00,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e5a008,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e5a210,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e5a418,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e5a620,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_02e5a828,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02e5aa30,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e5ac38,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02e5ae40,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02e5b048,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e5b250,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e5b458,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02e5b660,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e5b868,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02e5ba70,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02e5bc78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e5be80,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e5c088,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02e5c290,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e5c498,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e5c6a0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02e5c8a8,0x8e,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00781d95(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02e5c938,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02e5cb40,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02df4d30,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02df4f38,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02df5140,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02df5348,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02df5550,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02df5758,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02df5960,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02df5b68,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02df5d70,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02df5f78,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02df6180,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02df6388,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02df6590,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02df6798,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02cf2bf0,0x200,param_2), cVar1 != '\0')) &&
       (((((((cVar1 = (*param_1)(&DAT_02df69a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e5cd48,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02df6db0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02df6fb8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02df71c0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02df73c8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02df75d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02df77d8,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02df79e0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02e5cf50,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e5d158,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02e5d360,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02e5d568,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e5d770,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e5d978,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02e5db80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e5dd88,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02e5df90,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02e5e198,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e5e3a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e5e5a8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02e5e7b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e5e9b8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e5ebc0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02df9858,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02df9a60,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02df9c68,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02df9e70,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e5edc8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e5efd0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e5f1d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e5f3e0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02e5f5e8,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02e5f7f0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e5f9f8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02e5fc00,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02e5fe08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e60010,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e60218,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_02e60420,0x44,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078215c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02e60468,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e60670,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02e60878,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e60a80,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e60c88,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02e60e90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e61098,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02e612a0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02e614a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e616b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e618b8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e61ac0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e61cc8,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02dfcd68,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02e61ed0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e620d8,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_02e622e0,0x200,param_2), cVar1 != '\0')) &&
      ((((((((cVar1 = (*param_1)(&DAT_02e624e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e626f0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e628f8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e62b00,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e62d08,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02e62f10,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02e63118,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e63320,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02e63528,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02e63730,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e63938,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02e63b40,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_02e63d48,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e63f50,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e64158,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02e64360,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e64568,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02e64770,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02e64978,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e64b80,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e64d88,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02e64f90,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e65198,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02e653a0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02e655a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e657b0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02e659b8,0x200,param_2), cVar1 != '\0')))))))))))) &&
     ((((((((((cVar1 = (*param_1)(&DAT_02e65bc0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e65dc8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e65fd0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e661d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e663e0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02e665e8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02e667f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e669f8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e66c00,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02e66e08,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e67010,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e67218,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((cVar1 = (*param_1)(&DAT_02e67420,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e67628,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02e67830,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02e67a38,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e67c40,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02e67e48,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_02e68050,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e68258,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02e68460,0x200,param_2), cVar1 != '\0')))))))) &&
            (((cVar1 = (*param_1)(&DAT_02e68668,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e68870,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e68a78,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_02e68c80,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e68e88,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e69090,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02e69298,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e694a0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e696a8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02e698b0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e69ab8,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02e69cc0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02e69ec8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e6a0d0,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02e6a2d8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02e6a4e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e6a6e8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e6a8f0,0x200,param_2), cVar1 != '\0')))) &&
          (((((cVar1 = (*param_1)(&DAT_02e6aaf8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e6ad00,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e6af08,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e6b110,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e6b318,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02e6b520,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02e6b728,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e6b930,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e6bb38,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02e6bd40,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e6bf48,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_02e6c150,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02e6c358,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e6c560,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e6c768,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02e6c970,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e6cb78,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e6cd80,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e6cf88,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e6d190,0x200,param_2), cVar1 != '\0')))))))))) &&
         (((cVar1 = (*param_1)(&DAT_02e6d398,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02e6d5a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e6d7a8,0x200,param_2), cVar1 != '\0')))) &&
          (((((cVar1 = (*param_1)(&DAT_02e6d9b0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02e6dbb8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e6ddc0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e6dfc8,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02e6e1d0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e6e3d8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e6e5e0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02e6e7e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e6e9f0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02e6ebf8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02e6ee00,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e6f008,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e6f210,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02e6f418,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e6f620,0x200,param_2), cVar1 != '\0')))))) &&
      (((cVar1 = (*param_1)(&DAT_02e6f828,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_02e6fa30,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e6fc38,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e6fe40,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02e70048,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e70250,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e70458,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02e70660,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e70868,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02e70a70,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e70c78,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e70e80,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02e71088,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02e71290,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e71498,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e716a0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e718a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e71ab0,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((((((cVar1 = (*param_1)(&DAT_02e71cb8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02e71ec0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e720c8,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02e722d0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02e724d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e726e0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e728e8,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02e72af0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e72cf8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e72f00,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02e73108,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e73310,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02e73518,0x200,param_2), cVar1 != '\0')))) &&
         (((((cVar1 = (*param_1)(&DAT_02e73720,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e73928,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e73b30,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e73d38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e73f40,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02e74148,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02e74350,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e74558,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02e74760,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02e74968,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e74b70,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e74d78,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e74f80,0xc0,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00782c52(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02e75660,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02e75868,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02e75a70,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e75c78,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02daa860,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02daaa68,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02daac70,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02daae78,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02e75e80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e76088,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02d7d700,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02d7d908,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e76290,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02e76498,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02e766a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e768a8,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02e76ab0,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_02e76cb8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e76ec0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e770c8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e772d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e774d8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02e776e0,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02e778e8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e77af0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02e77cf8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02e77f00,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e78108,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02dacef8,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02e78310,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e78518,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02e78720,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02e78928,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e78b30,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02e78d38,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02e78f40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e79148,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e79350,0x117,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00782ed9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02e79468,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02e79670,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02e79878,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02e79a80,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02e79c88,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02e79e90,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e7a098,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02e7a2a0,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_02e7a4a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e7a6b0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02e7a8b8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02e7aac0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e7acc8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02e7aed0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02e7b0d8,0x133,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00782fd9(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((param_1 != (code *)0x0) &&
           (cVar1 = (*param_1)(&DAT_02e7c660,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e7c868,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e7ca70,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e7cc78,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02e7ce80,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02e7d088,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02e7d290,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_02e7d498,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02e7d6a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e7d8a8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e7dab0,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02e7dcb8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e7dec0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e7e0c8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e7e2d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e7e4d8,0x200,param_2), cVar1 != '\0')))))) &&
       (((((cVar1 = (*param_1)(&DAT_02e7e6e0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02e7e8e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e7eaf0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e7ecf8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02e7ef00,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e7f108,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02e7f310,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02e7f518,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e7f720,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e7f928,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02e7fb30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e7fd38,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e7ff40,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e80148,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e80350,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02e80558,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02e80760,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e80968,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e80b70,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02e80d78,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e80f80,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e81188,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02e81390,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02e81598,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02e817a0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_02e819a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e81bb0,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02e81db8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02e81fc0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e821c8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e823d0,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02e825d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e827e0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e829e8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02e82bf0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e82df8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02e83000,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02e83208,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02e83410,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02e83618,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02e83820,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02e83a28,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02e83c30,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02e83e38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e84040,0x200,param_2), cVar1 != '\0')))) &&
         ((((((cVar1 = (*param_1)(&DAT_02e84248,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02e84450,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e84658,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e84860,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02e84a68,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e84c70,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e84e78,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02e85080,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e85288,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02e85490,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02e85698,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e858a0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e85aa8,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02e85cb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e85eb8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e860c0,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_02e862c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e864d0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02e866d8,0x147,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078352a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02e86820,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e86a28,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02e86c30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e86e38,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02d88d00,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02d88f08,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02d89110,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02d89318,0x200,param_2), cVar1 != '\0' &&
          (((((((cVar1 = (*param_1)(&DAT_02d89520,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e87040,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02e87248,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02e87450,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e87658,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02e87860,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e87a68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e87c70,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02e87e78,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02e88080,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e88288,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e88490,0x200,param_2), cVar1 != '\0')))))))))) &&
        (((((((cVar1 = (*param_1)(&DAT_02e88698,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e888a0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e88aa8,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_02e88cb0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e88eb8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02e890c0,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02e892c8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02e894d0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02e896d8,0x200,param_2), cVar1 != '\0')))))) &&
              ((cVar1 = (*param_1)(&DAT_02e898e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e89ae8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02e89cf0,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02e89ef8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e8a100,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e8a308,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02e8a510,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e8a718,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02e8a920,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02e8ab28,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e8ad30,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_02e8af38,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02e7ba30,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e8b140,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02e8b348,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02e8b550,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e8b758,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e8b960,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02e8bb68,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e8bd70,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02e8bf78,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02e8c180,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e8c388,0x200,param_2), cVar1 != '\0')) &&
        (((((cVar1 = (*param_1)(&DAT_02e8c590,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02e8c798,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e8c9a0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e8cba8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02e8cdb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e8cfb8,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02e8d1c0,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02e8d3c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e8d5d0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e8d7d8,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02e8d9e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e8dbe8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e8ddf0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e8dff8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e8e200,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_02e8e408,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02e8e610,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e8e818,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02e8ea20,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02e8ec28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e8ee30,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e8f038,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02e8f240,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e8f448,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e8f650,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02e8f858,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e8fa60,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e8fc68,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02e8fe70,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e90078,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e90280,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02e90488,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e90690,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02e90898,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02e90aa0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e90ca8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e90eb0,0x200,param_2), cVar1 != '\0' &&
              (((((cVar1 = (*param_1)(&DAT_02e910b8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02e912c0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02e914c8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02e916d0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e918d8,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02e91ae0,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_02e91ce8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e91ef0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e920f8,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_02e92300,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e92508,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e92710,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02e92918,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e92b20,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e92d28,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02e92f30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e93138,0x200,param_2), cVar1 != '\0')))))) &&
            (cVar1 = (*param_1)(&DAT_02e93340,0x200,param_2), cVar1 != '\0')))) &&
          ((((((((cVar1 = (*param_1)(&DAT_02e93548,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e93750,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02e93958,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02e93b60,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e93d68,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_02e93f70,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02e94178,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e94380,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02e94588,0x200,param_2), cVar1 != '\0')))) &&
             ((((((cVar1 = (*param_1)(&DAT_02e94790,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02e94998,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02e94ba0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02e94da8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e94fb0,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02e951b8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02e953c0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e955c8,0x200,param_2), cVar1 != '\0')))))) &&
              (cVar1 = (*param_1)(&DAT_02e957d0,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02e959d8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e95be0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e95de8,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02e95ff0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e961f8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e96400,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02e96608,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e96810,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02e96a18,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02e96c20,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e96e28,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e97030,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02e97238,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e97440,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02e97648,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02e97850,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e97a58,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02e97c60,0x200,param_2), cVar1 != '\0' &&
        ((((((cVar1 = (*param_1)(&DAT_02e97e68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e98070,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e98278,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02e98480,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e98688,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02e98890,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02e98a98,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e98ca0,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02d9b798,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02e98ea8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e990b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02e992b8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02e994c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e996c8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02e998d0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02e99ad8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e99ce0,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
      ((cVar1 = (*param_1)(&DAT_02e99ee8,0x200,param_2), cVar1 != '\0' &&
       ((((cVar1 = (*param_1)(&DAT_02e9a0f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02e9a2f8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02e9a500,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02e9a708,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e9a910,0x187,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00784031(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02e9aa98,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02e9aca0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e9aea8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e9b0b0,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_02e75458,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02e9b2b8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e9b4c0,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02e9b6c8,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02e9b8d0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e9bad8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e9bce0,0x200,param_2), cVar1 != '\0')))) &&
            ((((((cVar1 = (*param_1)(&DAT_02e9bee8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e9c0f0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02e9c2f8,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02e9c500,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02e9c708,0x200,param_2), cVar1 != '\0')))))) &&
               (cVar1 = (*param_1)(&DAT_02e9c910,0x200,param_2), cVar1 != '\0')) &&
              ((((cVar1 = (*param_1)(&DAT_02e9cb18,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e9cd20,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02e9cf28,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02e9d130,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e9d338,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_02e9d540,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02e9d748,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e9d950,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02e9db58,0x200,param_2), cVar1 != '\0' &&
            ((((((cVar1 = (*param_1)(&DAT_02e9dd60,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02e9df68,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02e9e170,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02e9e378,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02e9e580,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02e9e788,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02e9e990,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e9eb98,0x200,param_2), cVar1 != '\0')))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02e9eda0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02e9efa8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02e9f1b0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02e9f3b8,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02e9f5c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e9f7c8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02e9f9d0,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02e9fbd8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e9fde0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02e9ffe8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02ea01f0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ea03f8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02ea0600,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02ea0808,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ea0a10,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02ea0c18,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02da3b18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ea0e20,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ea1028,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02ea1230,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ea1438,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02ea1640,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02ea1848,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ea1a50,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02ea1c58,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02ea1e60,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ea2068,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02ea2270,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02ea2478,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ea2680,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ea2888,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_02ea2a90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ea2c98,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ea2ea0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ea30a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ea32b0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02ea34b8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02ea36c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ea38c8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ea3ad0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02ea3cd8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ea3ee0,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((cVar1 = (*param_1)(&DAT_02ea40e8,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02ea42f0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ea44f8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02ea4700,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02ea4908,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ea4b10,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ea4d18,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ea4f20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ea5128,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_02ea5330,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_02ea5538,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02ea5740,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_02ea5948,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02ea5b50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ea5d58,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ea5f60,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02ea6168,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ea6370,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02ea6578,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02ea6780,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ea6988,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02ea6b90,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02ea6d98,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ea6fa0,0x19c,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007846d6(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02ea7140,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02ea7348,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02ea7550,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ea7758,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02daa860,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02daaa68,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02daac70,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02daae78,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02ea7960,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ea7b68,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ea7d70,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ea7f78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02d76d18,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02d76f20,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02ea8180,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ea8388,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02ea8590,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_02ea8798,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ea89a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ea8ba8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ea8db0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ea8fb8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02ea91c0,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02e778e8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02e77af0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02ea93c8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02ea95d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ea97d8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ea99e0,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02ea9be8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ea9df0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02ea9ff8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02eaa200,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02eaa408,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02eaa610,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02eaa818,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02eaaa20,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02eaac28,0x118,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078495d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02eaad48,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02eaaf50,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02eab158,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02eab360,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02eab568,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02eab770,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02eab978,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02eabb80,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_02eabd88,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02eabf90,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02eac198,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02eac3a0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02eac5a8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02eac7b0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02eac9b8,0x134,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00784a5d(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02eacaf0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02eaccf8,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02eacf00,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ead108,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02ead310,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02ead518,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ead720,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_02ead928,0x200,param_2), cVar1 != '\0' &&
       (((((((cVar1 = (*param_1)(&DAT_02eadb30,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eadd38,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02eadf40,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02eae148,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02eae350,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02c33458,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02eae558,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02eae760,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02eae968,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02eaeb70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e7bc38,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02eaed78,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((((((((cVar1 = (*param_1)(&DAT_02eaef80,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02eaf188,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02eaf390,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_02eaf598,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02eaf7a0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02eaf9a8,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02eafbb0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02eafdb8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02eaffc0,0x200,param_2), cVar1 != '\0')))))) &&
              ((cVar1 = (*param_1)(&DAT_02eb01c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02eb03d0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02eb05d8,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02eb07e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02eb09e8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02eb0bf0,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02eb0df8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02eb1000,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02eb1208,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02eb1410,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02eb1618,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_02eb1820,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02eb1a28,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02eb1c30,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02eb1e38,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02eb2040,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eb2248,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02eb2450,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02eb2658,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02eb2860,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02eb2a68,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02eb2c70,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02eb2e78,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02eb3080,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02eb3288,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02eb3490,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02eb3698,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02eb38a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eb3aa8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02eb3cb0,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02eb3eb8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eb40c0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02eb42c8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02eb44d0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02eb46d8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02eb48e0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02eb4ae8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02eb4cf0,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02eb4ef8,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02eb5100,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02eb5308,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02eb5510,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02eb5718,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02eb5920,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02eb5b28,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02eb5d30,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eb5f38,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02eb6140,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02eb6348,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02eb6550,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02eb6758,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02eb6960,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eb6b68,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02eb6d70,0x200,param_2), cVar1 != '\0')))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02eb6f78,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02eb7180,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02eb7388,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02eb7590,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02eb7798,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02eb79a0,0x200,param_2), cVar1 != '\0' &&
              (((((cVar1 = (*param_1)(&DAT_02eb7ba8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02eb7db0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02eb7fb8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02eb81c0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02eb83c8,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02eb85d0,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_02eb87d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eb89e0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02eb8be8,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_02eb8df0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eb8ff8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02eb9200,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02eb9408,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02eb9610,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02eb9818,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02eb9a20,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02eb9c28,0x200,param_2), cVar1 != '\0')))))) &&
            (cVar1 = (*param_1)(&DAT_02eb9e30,0x200,param_2), cVar1 != '\0')))) &&
          ((((((((cVar1 = (*param_1)(&DAT_02eba038,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02eba240,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02eba448,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02eba650,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02eba858,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_02ebaa60,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02ebac68,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02ebae70,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02ebb078,0x200,param_2), cVar1 != '\0')))) &&
             ((((((cVar1 = (*param_1)(&DAT_02ebb280,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02ebb488,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02ebb690,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02ebb898,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02ebbaa0,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02ebbca8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02ebbeb0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02ebc0b8,0x200,param_2), cVar1 != '\0')))))) &&
              (cVar1 = (*param_1)(&DAT_02ebc2c0,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02ebc4c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ebc6d0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02ebc8d8,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02ebcae0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ebcce8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02ebcef0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02ebd0f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ebd300,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02ebd508,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02ebd710,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ebd918,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ebdb20,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_02ebdd28,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02ebdf30,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02ebe138,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02ebe340,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ebe548,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02ebe750,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02ebe958,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ebeb60,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02ebed68,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02ebef70,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ebf178,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02ebf380,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02e75250,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ebf588,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02ebf790,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02ebf998,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ebfba0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02ebfda8,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02ebffb0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ec01b8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02ec03c0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02ec05c8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02ec07d0,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
         (cVar1 = (*param_1)(&DAT_02ec09d8,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02ec0be0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ec0de8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ec0ff0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02ec11f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ec1400,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ec1608,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ec180c,0x19,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00785583(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02ec1828,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02ec1a30,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02deab68,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dead70,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02deaf78,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02deb180,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02deb388,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02deb590,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02deb798,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02deb9a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02debba8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02debdb0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02debfb8,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_02dec1c0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02dec3c8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02dec5d0,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02dec7d8,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02dec9e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e38180,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02deee70,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02def078,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02def280,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02def488,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02def690,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02def898,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02ec1c38,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02decbe8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02decdf0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02decff8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02ded200,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ded408,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ded610,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02ded818,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02deda20,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02ec1e40,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02ec2048,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ec2250,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ec2458,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ec2660,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02df1300,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02df1508,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02df1710,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02df1918,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_02df1b20,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02df1d28,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02df1f30,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ec2868,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02ec2a70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ec2c78,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ec2e80,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02ec3088,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ec3290,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02ec3498,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02ec36a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ec38a8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02ec3ab0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02ec3cb8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ec3ec0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ec40c8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02ec42d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ec44d8,0x200,param_2), cVar1 != '\0')))))))) &&
       (cVar1 = (*param_1)(&DAT_02ec46e0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_02ec48e8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ec4af0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02ec4cf8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02ec4f00,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02ec5104,0x2b,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007859f4(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02ec5130,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ec5338,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ec5540,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ec5748,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02ec5950,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02ec5b58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ec5d60,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02e7b210,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02e7b418,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02e7b620,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ec5f68,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02ec6170,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ec6378,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ec6580,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02d7d2f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ec6788,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02ec6990,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02ec6b98,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ec6da0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ec6fa8,0x200,param_2), cVar1 != '\0')))))) &&
           ((cVar1 = (*param_1)(&DAT_02ec71b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ec73b8,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((cVar1 = (*param_1)(&DAT_02ec75c0,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_02ec77c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ec79d0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ec7bd8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02ec7de0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ec7fe8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ec81f0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ec83f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ec8600,0x200,param_2), cVar1 != '\0')))))))))))) &&
      (((((((cVar1 = (*param_1)(&DAT_02ec8808,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02ec8a10,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ec8c18,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02ec8e20,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02ec9028,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ec9230,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ec9438,0x200,param_2), cVar1 != '\0')))) &&
            (((((cVar1 = (*param_1)(&DAT_02ec9640,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ec9848,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02ec9a50,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02ec9c58,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ec9e60,0x200,param_2), cVar1 != '\0')))) &&
             (((((cVar1 = (*param_1)(&DAT_02eca068,0x200,param_2), cVar1 != '\0' &&
                 (((cVar1 = (*param_1)(&DAT_02eca270,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02eca478,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02eca680,0x200,param_2), cVar1 != '\0')))) &&
                ((cVar1 = (*param_1)(&DAT_02eca888,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02ecaa90,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02ecac98,0x200,param_2), cVar1 != '\0')) &&
              ((((((cVar1 = (*param_1)(&DAT_02ecaea0,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02ecb0a8,0x200,param_2), cVar1 != '\0')) &&
                  ((cVar1 = (*param_1)(&DAT_02ecb2b0,0x200,param_2), cVar1 != '\0' &&
                   ((((cVar1 = (*param_1)(&DAT_02ecb4b8,0x200,param_2), cVar1 != '\0' &&
                      (cVar1 = (*param_1)(&DAT_02ecb6c0,0x200,param_2), cVar1 != '\0')) &&
                     (cVar1 = (*param_1)(&DAT_02ecb8c8,0x200,param_2), cVar1 != '\0')) &&
                    ((cVar1 = (*param_1)(&DAT_02dce9b0,0x200,param_2), cVar1 != '\0' &&
                     (cVar1 = (*param_1)(&DAT_02ecbad0,0x200,param_2), cVar1 != '\0')))))))) &&
                 (cVar1 = (*param_1)(&DAT_02ecbcd8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02ecbee0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02ecc0e8,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02ecc2f0,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02ecc4f8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02ecc700,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02ecc908,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          ((((cVar1 = (*param_1)(&DAT_02eccb10,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eccd18,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02eccf20,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02ecd128,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ecd330,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02ecd538,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02ecd740,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ecd948,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02ecdb50,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02ecdd58,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ecdf60,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02ece168,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02ece370,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ece578,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ece780,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02ece988,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02eceb90,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02eced98,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02ecefa0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ecf1a8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02ecf3b0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02ecf5b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ecf7c0,0x200,param_2), cVar1 != '\0')))))))) &&
         ((((((cVar1 = (*param_1)(&DAT_02ecf9c8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02ecfbd0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ecfdd8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02ecffe0,0x200,param_2), cVar1 != '\0')))) &&
             (((cVar1 = (*param_1)(&DAT_02ed01e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ed03f0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02ed05f8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02ed0800,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02ed0a08,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02ed0c10,0x200,param_2), cVar1 != '\0')))))) &&
            (((((cVar1 = (*param_1)(&DAT_02ed0e18,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ed1020,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02ed1228,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02ed1430,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ed1638,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02ed1840,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02ed1a48,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02ed1c50,0x200,param_2), cVar1 != '\0')))))))) &&
             (cVar1 = (*param_1)(&DAT_02ed1e58,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02ed2060,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ed2268,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02ed2470,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02ed2678,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ed2880,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02ed2a88,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02ed2c90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ed2e98,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02ed30a0,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02ed32a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ed34b0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ed36b8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ed38c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ed3ac8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02ed3cd0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02ed3ed8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ed40e0,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((cVar1 = (*param_1)(&DAT_02ed42e8,0x200,param_2), cVar1 != '\0' &&
      ((((cVar1 = (*param_1)(&DAT_02ed44f0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ed46f8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02ed4900,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02ed4b08,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ed4d10,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02ed4f18,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02ed5120,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ed5328,0x10d,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007862ca(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02ed5438,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ed5640,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ed5848,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ed5a50,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02ed5c58,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02ed5e60,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ed6068,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02ed6270,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02ed6478,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ed6680,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ed6888,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02ed6a90,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ed6c98,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ed6ea0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02ed70a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ed72b0,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_02ed74b8,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02ed76c0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ed78c8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02ed7ad0,0x200,param_2), cVar1 != '\0')))))) &&
     (((((cVar1 = (*param_1)(&DAT_02ed7cd8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ed7ee0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02ed80e8,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02ed82f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ed84f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02ed8700,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02ed8908,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ed8b10,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02ed8d18,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02ed8f20,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ed9128,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02ed9330,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ed9538,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ed9740,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((((cVar1 = (*param_1)(&DAT_02ed9948,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02ed9b50,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ed9d58,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ed9f60,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02eda168,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02eda370,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02eda578,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02eda780,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02eda988,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02edab90,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02edad98,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02edafa0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02edb1a8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02edb3b0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02edb5b8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02edb7c0,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_02edb9c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02edbbd0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02edbdd8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02edbfe0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02edc1e8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02edc3f0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02edc5f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ddf8c0,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02edc800,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02edca08,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ddfed8,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_02de00e0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02edcc10,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02edce18,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02edd020,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02edd228,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02edd430,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02edd638,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02edd840,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02edda48,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02eddc50,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02edde58,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ede060,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ede268,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02ede470,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ede678,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_02ede880,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02edea88,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02edec90,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02edee98,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02edf0a0,0x49,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00786829(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02edf0f0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02edf2f8,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02edf500,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02edf708,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02e7be40,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02edf910,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02e7c048,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02e7c250,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_02edfb18,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02edfd20,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02edff28,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02e7c458,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ee0130,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((((cVar1 = (*param_1)(&DAT_02ee0338,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02ee0540,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ee0748,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02ee0950,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_02ee0b58,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ee0d60,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02ee0f68,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02ee1170,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ee1378,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02ee1580,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02ee1788,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ee1990,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ee1b98,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02ee1da0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ee1fa8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02ee21b0,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02ee23b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ee25c0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ee27c8,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02ee29d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ee2bd8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ee2de0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02ee2fe8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ee31f0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ee33f8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02ee3600,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ee3808,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02ee3a10,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02ee3c18,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ee3e20,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ee4028,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02ee4230,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ee4438,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ee4640,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02ee4848,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ee4a50,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_02ee4c58,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02ee4e60,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ee5068,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02ee5270,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02ee5478,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ee5680,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ee5888,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02ee5a90,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ee5c98,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02ee5ea0,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02ee60a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ee62b0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ee64b8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02ee66c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ee68c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ee6ad0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02ee6cd8,0x1a8,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00786c8c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02ef2968,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ef2b70,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02ee6e88,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ee7090,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02df5140,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02ee7298,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ee74a0,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02ee76a8,0x200,param_2), cVar1 != '\0' &&
           (((((cVar1 = (*param_1)(&DAT_02ee78b0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ee7ab8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ee7cc0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02ee7ec8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ee80d0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02ee82d8,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02ee84e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ee86e8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02ee88f0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02ee8af8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ee8d00,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02ee8f08,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02ee9110,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ee9318,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ef2d78,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02ef2f80,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ef3188,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02ef3390,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02ef3598,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ef37a0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ef39a8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02ef3bb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ef3db8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ef3fc0,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02ef41c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ef43d0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ef45d8,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02ef47e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ef49e8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ef4bf0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ef4df8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ef5000,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_02ef5208,0x200,param_2), cVar1 != '\0')))) &&
      (((cVar1 = (*param_1)(&DAT_02ef5410,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02ef5618,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02ef5820,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02ef5a28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ef5c30,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ef5e38,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02ef6040,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ef6248,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ef6450,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02ef6658,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ef6860,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02ef6a68,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02ef6c70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ef6e78,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ef7080,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_02ef7288,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_02ef7490,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_02ef7698,0x13c,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00787078(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02ef77d8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02ef79e0,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02ef7be8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ef7df0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02ef7ff8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02ef8200,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ef8408,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_02ef8610,0x200,param_2), cVar1 != '\0' &&
       (((((((cVar1 = (*param_1)(&DAT_02ef8818,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ef8a20,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ef8c28,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ef8e30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ef9038,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02ef9240,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ef9448,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ef9650,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02ef9858,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02ef9a60,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ef9c68,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ef9e70,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((((((((cVar1 = (*param_1)(&DAT_02efa078,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02efa280,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02efa488,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_02efa690,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02efa898,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02efaaa0,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02efaca8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02efaeb0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02efb0b8,0x200,param_2), cVar1 != '\0')))))) &&
              ((cVar1 = (*param_1)(&DAT_02efb2c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02efb4c8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02efb6d0,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02efb8d8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02efbae0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02efbce8,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02efbef0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02efc0f8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02efc300,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02efc508,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02efc710,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_02efc918,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02efcb20,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02efcd28,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02efcf30,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02efd138,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02efd340,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02efd548,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02efd750,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02efd958,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02efdb60,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02efdd68,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02efdf70,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02efe178,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02efe380,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02efe588,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02efe790,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02efe998,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02efeba0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02efeda8,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02efefb0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eff1b8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02eff3c0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02eff5c8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02eff7d0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02eff9d8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02effbe0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02effde8,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02effff0,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02f001f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f00400,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02f00608,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02f00810,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f00a18,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f00c20,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02f00e28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f01030,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f01238,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02f01440,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f01648,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f01850,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02f01a58,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f01c60,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f01e68,0x200,param_2), cVar1 != '\0')))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02f02070,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f02278,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02f02480,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02f02688,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f02890,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f02a98,0x200,param_2), cVar1 != '\0' &&
              (((((cVar1 = (*param_1)(&DAT_02f02ca0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02f02ea8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02f030b0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02f032b8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f034c0,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02f036c8,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_02f038d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f03ad8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f03ce0,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_02f03ee8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f040f0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f042f8,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02f04500,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f04708,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f04910,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02f04b18,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f04d20,0x200,param_2), cVar1 != '\0')))))) &&
            (cVar1 = (*param_1)(&DAT_02f04f28,0x200,param_2), cVar1 != '\0')))) &&
          ((((((((cVar1 = (*param_1)(&DAT_02f05130,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f05338,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02f05540,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02f05748,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f05950,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_02f05b58,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02f05d60,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f05f68,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02f06170,0x200,param_2), cVar1 != '\0')))) &&
             ((((((cVar1 = (*param_1)(&DAT_02f06378,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02f06580,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02f06788,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02f06990,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f06b98,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02f06da0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02f06fa8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f071b0,0x200,param_2), cVar1 != '\0')))))) &&
              (cVar1 = (*param_1)(&DAT_02f073b8,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02f075c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f077c8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f079d0,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02f07bd8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f07de0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f07fe8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02f081f0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f083f8,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02f08600,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02f08808,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f08a10,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02f08c18,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_02f08e20,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f09028,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02f09230,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02f09438,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f09640,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02f09848,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02f09a50,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f09c58,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02f09e60,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02f0a068,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f0a270,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02f0a478,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02f0a680,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f0a888,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02f0aa90,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02f0ac98,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f0aea0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02f0b0a8,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02f0b2b0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f0b4b8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02f0b6c0,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02f0b8c8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f0bad0,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
         (cVar1 = (*param_1)(&DAT_02f0bcd8,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02f0bee0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f0c0e8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f0c2f0,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02f0c4f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f0c700,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f0c908,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f0cb10,0xac,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00787ba1(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02f0cbc0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f0cdc8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f0cfd0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f0d1d8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02f0d3e0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02f0d5e8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02e75048,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02e10e20,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02f0d7f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f0d9f8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f0dc00,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02f0de08,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f0e010,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f0e218,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02f0e420,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f0e628,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02f0e830,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_02f0ea38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f0ec40,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f0ee48,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f0f050,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f0f258,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02f0f460,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02f0f668,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f0f870,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02f0fa78,0x200,param_2), cVar1 != '\0')))))) &&
       (((((((cVar1 = (*param_1)(&DAT_02f0fc80,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f0fe88,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f10090,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f10298,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f104a0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02f106a8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02f108b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f10ab8,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_02f10cc0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02f10ec8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f110d0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f112d8,0x200,param_2), cVar1 != '\0')))) &&
           (((((cVar1 = (*param_1)(&DAT_02f114e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f116e8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02f118f0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02f11af8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f11d00,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_02f11f08,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02f12110,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f12318,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f12520,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_02f12728,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f12930,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f12b38,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02f12d40,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f12f48,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02f13150,0x200,param_2), cVar1 != '\0')))))) &&
        (((((((((((cVar1 = (*param_1)(&DAT_02f13358,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02f13560,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02f13768,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02f13970,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f13b78,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02f13d80,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02f13f88,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f14190,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02f14398,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02f145a0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02f147a8,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02f149b0,0x200,param_2), cVar1 != '\0')))))))) &&
             ((cVar1 = (*param_1)(&DAT_02f14bb8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f14dc0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02f14fc8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02f151d0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f153d8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02f155e0,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_02f157e8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f159f0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02f15bf8,0x200,param_2), cVar1 != '\0')))))))))) &&
           (((cVar1 = (*param_1)(&DAT_02f15e00,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f16008,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f16210,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02f16418,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f16620,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02f16828,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_02f16a30,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02f16c38,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02f16e40,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02f17048,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f17250,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          ((cVar1 = (*param_1)(&DAT_02f17458,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02f17660,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f17868,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_02f17a70,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02f17c78,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f17e80,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f18088,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02f18290,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f18498,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f186a0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f188a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f18ab0,0x200,param_2), cVar1 != '\0')))))) &&
          ((((((cVar1 = (*param_1)(&DAT_02f18cb8,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_02f18ec0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f190c8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02f192d0,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_02f194d8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f196e0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02f198e8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02f19af0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f19cf8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f19f00,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02f1a108,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f1a310,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02f1a518,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02f1a720,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f1a928,0x200,param_2), cVar1 != '\0')))))))))) &&
           ((cVar1 = (*param_1)(&DAT_02f1ab30,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02f1ad38,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f1af40,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02f1b148,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f1b350,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f1b558,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f1b760,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02f1b968,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f1bb70,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f1bd78,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02f1bf80,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f1c188,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f1c390,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f1c598,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f1c7a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f1c9a8,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_02f1cbb0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f1cdb8,0x200,param_2), cVar1 != '\0')))))) &&
     (((cVar1 = (*param_1)(&DAT_02f1cfc0,0x200,param_2), cVar1 != '\0' &&
       ((((cVar1 = (*param_1)(&DAT_02f1d1c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f1d3d0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f1d5d8,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_02f1d7e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f1d9e8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02f1dbf0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f1ddf8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f1e000,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02f1e208,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f1e410,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f1e618,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_02f1e820,0x200,param_2), cVar1 != '\0')))) &&
      (((((((((cVar1 = (*param_1)(&DAT_02f1ea28,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f1ec30,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f1ee38,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f1f040,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f1f248,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02f1f450,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02f1f658,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f1f860,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02f1fa68,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02f1fc70,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f1fe78,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f20080,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02f20288,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f20490,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f20698,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02f208a0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f20aa8,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02f20cb0,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02f20eb8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f210c0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f212c8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f214d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f216d8,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_02f218e0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02f21ae8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f21cf0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02f21ef8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f220fc,0xe,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007886fa(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((param_1 != (code *)0x0) &&
          (cVar1 = (*param_1)(&DAT_02f22110,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f22318,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02f22520,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f22728,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f22930,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02f22b38,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f22d40,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_02f22f48,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_02ee9d40,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f23150,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f23358,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f23560,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f23768,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02f23970,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02f23b78,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f23d80,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02f23f88,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02f24190,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f24398,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f245a0,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02f247a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f249b0,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02f24bb8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02f24dc0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f24fc8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02f251d0,0x200,param_2), cVar1 != '\0')))))))) &&
     (((((((((cVar1 = (*param_1)(&DAT_02f253d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f255e0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f257e8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02f259f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f25bf8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f25e00,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02f26008,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f26210,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_02f26418,0x200,param_2), cVar1 != '\0')) &&
         ((((((((cVar1 = (*param_1)(&DAT_02f26620,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f26828,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02f26a30,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02f26c38,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f26e40,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02f27048,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f27250,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f27458,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02f27660,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02f27868,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f27a70,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f27c78,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_02f27e80,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f28088,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02f28290,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f28498,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f286a0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f288a8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02f28ab0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f28cb8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f28ec0,0x200,param_2), cVar1 != '\0')))))))) &&
         (((cVar1 = (*param_1)(&DAT_02f290c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f292d0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f294d8,0x200,param_2), cVar1 != '\0')))))) &&
       ((((cVar1 = (*param_1)(&DAT_02f296e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f298e8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f29af0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02f29cf8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f29f00,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f2a108,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f2a310,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f2a518,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02f2a720,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02f2a928,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f2ab30,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02f2ad38,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f2af40,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f2b148,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f2b350,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((((((((cVar1 = (*param_1)(&DAT_02f2b558,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f2b760,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f2b968,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f2bb70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f2bd78,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02f2bf80,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02f2c188,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f2c390,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f2c598,0x200,param_2), cVar1 != '\0')))))) &&
          ((cVar1 = (*param_1)(&DAT_02f2c7a0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f2c9a8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02f2cbb0,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02f2cdb8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f2cfc0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f2d1c8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02f2d3d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f2d5d8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f2d7e0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f2d9e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f2dbf0,0x200,param_2), cVar1 != '\0')))))))) &&
         ((cVar1 = (*param_1)(&DAT_02f2ddf8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02f2e000,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f2e208,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_02f2e410,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02f2e618,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f2e820,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f2ea28,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02f2ec30,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f2ee38,0x1a9,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00788dd2(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02f2efe8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02f2f1f0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_02ee9f48,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02eea150,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02eea358,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02eea560,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02eea768,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_02eea970,0x200,param_2), cVar1 != '\0')))) &&
     ((((((cVar1 = (*param_1)(&DAT_02eeab78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02eead80,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02eeaf88,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f2f3f8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f2f600,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02f2f808,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02f2fa10,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f2fc18,0x200,param_2), cVar1 != '\0')))))) &&
      (((((cVar1 = (*param_1)(&DAT_02f2fe20,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_02f30028,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f30230,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f30438,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f30640,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f30848,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02f30a50,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02f30c58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f30e60,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f31068,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02f31270,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f31478,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f31680,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02f31888,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f31a90,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f31c98,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02f31ea0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f320a8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f322b0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f324b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f326c0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f328c8,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02f32ad0,0x10b,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078906a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02f32be0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02f32de8,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02eeb190,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02eeb398,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02eeb5a0,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02eeb7a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02eeb9b0,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02eebbb8,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_02eebdc0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02eebfc8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02eec1d0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f32ff0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f331f8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02f33400,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f33608,0xb6,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078916a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02f336c0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f338c8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02eec3d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02eec5e0,0x200,param_2), cVar1 != '\0')))) &&
         (((((cVar1 = (*param_1)(&DAT_02eec7e8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02eec9f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02eecbf8,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02eece00,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02eed008,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eed210,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02eed418,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02eed620,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eed828,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02eeda30,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02eedc38,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02eede40,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02eee048,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_02eee250,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02eee458,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02eee660,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02eee868,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02eeea70,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02eeec78,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02f33ad0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f33cd8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02f33ee0,0x200,param_2), cVar1 != '\0' &&
           (((((cVar1 = (*param_1)(&DAT_02f340e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f342f0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02f344f8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f34700,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02eeee80,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02f34908,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02f34b10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f34d18,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f34f20,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f35128,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f35330,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f35538,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02f35740,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f35948,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f35b50,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02f35d58,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f35f60,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f36168,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02f36370,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f36578,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f36780,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_02f36988,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f36b90,0x200,param_2), cVar1 != '\0')))))) &&
     ((((cVar1 = (*param_1)(&DAT_02f36d98,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_02f36fa0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f371a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f373b0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02f375b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f377c0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f379c8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f37bd0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f37dd8,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02f37fe0,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02f381e8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f383f0,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_02f385f8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02f38800,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f38a08,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f38c10,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02f38e18,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f39020,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f39228,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02f39430,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f39638,0x1c4,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00789611(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((((((param_1 != (code *)0x0) &&
                 (cVar1 = (*param_1)(&DAT_02f39800,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02f39a08,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02f39c10,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f39e18,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02f3a020,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02f3a228,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f3a430,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02f3a638,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_02f3a840,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02eefcb8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02eefec0,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_02f3aa48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f3ac50,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02f3ae58,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_02f3b060,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f3b268,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f3b470,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02f3b678,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f3b880,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02f3ba88,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02f3bc90,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f3be98,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02f3c0a0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02f3c2a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f3c4b0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f3c6b8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02f3c8c0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f3cac8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f3ccd0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f3ced8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f3d0e0,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02f3d2e8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02f3d4f0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f3d6f8,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02f3d900,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02f3db08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f3dd10,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f3df18,0x200,param_2), cVar1 != '\0')))) &&
        (((((cVar1 = (*param_1)(&DAT_02f3e120,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f3e328,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f3e530,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02f3e738,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f3e940,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02f3eb48,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02f3ed50,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f3ef58,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02f3f160,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02f3f368,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f3f570,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02f3f778,0x200,param_2), cVar1 != '\0')))))) &&
      (((((cVar1 = (*param_1)(&DAT_02f3f980,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f3fb88,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f3fd90,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02f3ff98,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f401a0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f403a8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f405b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f407b8,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_02f409c0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02f40bc8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f40dd0,0x200,param_2), cVar1 != '\0')))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02f40fd8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f411e0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f413e8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f415f0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02f417f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f41a00,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f41c08,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02f41e10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f42018,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f42220,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f42428,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f42630,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f42838,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02f42a40,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f42c48,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f42e50,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f43058,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f43260,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f43468,0x200,param_2), cVar1 != '\0' &&
            ((((((cVar1 = (*param_1)(&DAT_02f43670,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f43878,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02f43a80,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02f43c88,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f43e90,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02f44098,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f442a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f444a8,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02f446b0,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02f448b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f44ac0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f44cc8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f44ed0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f450d8,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02f452e0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02f454e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f456f0,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02f458f8,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02f45b00,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f45d08,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f45f10,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02f46118,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f46320,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f46528,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02f46730,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f46938,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02f46b40,0x200,param_2), cVar1 != '\0')) &&
          ((((((cVar1 = (*param_1)(&DAT_02f46d48,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f46f50,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02f47158,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f47360,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f47568,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02f47770,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02f47978,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f47b80,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_02f47d88,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02f47f90,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f48198,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02f483a0,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02f485a8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f487b0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f489b8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02f48bc0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f48dc8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02f48fd0,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02f491d8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f493e0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f495e8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02f497f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f499f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f49c00,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02f49e08,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f4a010,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02f4a218,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02f4a420,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f4a628,0xa4,param_2), cVar1 != '\0')))))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00789f1a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02f4a6d0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f4a8d8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02ef00c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ef02d0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02ef04d8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02ef06e0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02e4e130,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02ef08e8,0x200,param_2), cVar1 != '\0' &&
           (((((cVar1 = (*param_1)(&DAT_02ef0af0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ef0cf8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ef0f00,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02ef1108,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ef1310,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02ef1518,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02f4aae0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ef1720,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02ef1928,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02ef1b30,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f4ace8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f4aef0,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02f4b0f8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f4b300,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f4b508,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02f4b710,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f4b918,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02f4bb20,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02f4bd28,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ef1d38,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ef1f40,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02ef2148,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ef2350,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ef2558,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02ef2760,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f4bf30,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f4c138,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02f4c340,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f4c548,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f4c750,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f4c958,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f4cb60,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_02f4cd68,0x200,param_2), cVar1 != '\0')))) &&
      (((cVar1 = (*param_1)(&DAT_02f4cf70,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f4d178,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02f4d380,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02f4d588,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f4d790,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f4d998,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02f4dba0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f4dda8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f4dfb0,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02f4e1b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f4e3c0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02f4e5c8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02f4e7d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f4e9d8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f4ebe0,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_02f4ede8,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_02f4eff0,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_02f4f1f8,200,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078a306(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02f4f2c8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02f4f4d0,0x200,param_2), cVar1 != '\0')) &&
       ((((((cVar1 = (*param_1)(&DAT_02f4f6d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f4f8e0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f4fae8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02f4fcf0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f4fef8,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_02f50100,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_02f50308,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f50510,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f50718,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f50920,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f50b28,0x200,param_2), cVar1 != '\0')))))) &&
        ((((cVar1 = (*param_1)(&DAT_02f50d30,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02f50f38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f51140,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02f51348,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02f51550,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f51758,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f51960,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f51b68,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f51d70,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02f51f78,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02f52180,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f52388,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02f52590,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02f52798,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f529a0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f52ba8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02f52db0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f52fb8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f531c0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02f533c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f535d0,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02f537d8,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02f539e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f53be8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f53df0,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f53ff8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f54200,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02f54408,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02f54610,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f54818,0x200,param_2), cVar1 != '\0')))))))))) &&
       (((cVar1 = (*param_1)(&DAT_02f54a20,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02f54c28,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f54e30,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f55038,0x200,param_2), cVar1 != '\0')))) &&
        ((((cVar1 = (*param_1)(&DAT_02f55240,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f55448,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f55650,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02f55858,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f55a60,0x200,param_2), cVar1 != '\0')))))) &&
         (cVar1 = (*param_1)(&DAT_02f55c68,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02f55e70,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f56078,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f56280,0x200,param_2), cVar1 != '\0')) &&
        (((cVar1 = (*param_1)(&DAT_02f56488,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f56690,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f56898,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02f56aa0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f56ca8,0x200,param_2), cVar1 != '\0')))))))) &&
       (cVar1 = (*param_1)(&DAT_02f56eb0,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02f570b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f572c0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f574c8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f576d0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f578d8,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_02f57ae0,0x1d9,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078a78b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02f57cc0,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02f57ec8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02eec3d8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02eec5e0,0x200,param_2), cVar1 != '\0')))) &&
      ((((((((cVar1 = (*param_1)(&DAT_02eec7e8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02eec9f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02eecbf8,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02eece00,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02eed008,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eed210,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02eed418,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02eed620,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eed828,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02eeda30,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02eedc38,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02eede40,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02eee048,0x200,param_2), cVar1 != '\0')))) &&
         ((((cVar1 = (*param_1)(&DAT_02f580d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f582d8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f584e0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f586e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f588f0,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02f58af8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02f58d00,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f58f08,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02f59110,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_02f59318,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f59520,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f59728,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f59930,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f59b38,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02f59d40,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((((cVar1 = (*param_1)(&DAT_02f59f48,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f5a150,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f5a358,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02f5a560,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f5a768,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f5a970,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_02f5ab78,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f5ad80,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f5af88,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02f5b190,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f5b398,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f5b5a0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02f5b7a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f5b9b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f5bbb8,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02f5bdc0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02eefab0,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02f5bfc8,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_02f5c1d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f5c3d8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f5c5e0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02f5c7e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f5c9f0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f5cbf8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f5ce00,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f5d008,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02f5d210,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_02f5d418,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f5d620,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f5d828,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02f5da30,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f5dc38,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f5de40,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02f5e048,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f5e250,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02f5e458,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02f5e660,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f5e868,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f5ea70,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f5ec78,0x100,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078ac56(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02f5ed80,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f5ef88,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02ee6e88,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ee7090,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f5f190,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02f5f398,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f5f5a0,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02f5f7a8,0x200,param_2), cVar1 != '\0' &&
           (((((cVar1 = (*param_1)(&DAT_02f5f9b0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f5fbb8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02f5fdc0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f5ffc8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f601d0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02f603d8,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02f605e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f607e8,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02f609f0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02f60bf8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f60e00,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02ee8f08,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02f61008,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ee9318,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f61210,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02ee9520,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ee9728,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02ee9930,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02ee9b38,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f61418,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f61620,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02f61828,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f61a30,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f61c38,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02f61e40,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f62048,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f62250,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02f62458,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f62660,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f62868,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f62a70,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f62c78,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_02f62e80,0x200,param_2), cVar1 != '\0')))) &&
      (((cVar1 = (*param_1)(&DAT_02f63088,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f63290,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02f63498,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02f636a0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f638a8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f63ab0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02f63cb8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f63ec0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f640c8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02f642d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f644d8,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02f646e0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02f648e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f64af0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f64cf8,0x200,param_2), cVar1 != '\0')))))))))) &&
     (((cVar1 = (*param_1)(&DAT_02f64f00,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_02f65108,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_02f65310,0x13e,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078b042(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02f65450,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02f65658,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02f65860,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f65a68,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02ef7ff8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02f65c70,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ef8408,0x200,param_2), cVar1 != '\0')))))))) &&
      ((cVar1 = (*param_1)(&DAT_02ef8610,0x200,param_2), cVar1 != '\0' &&
       (((((((cVar1 = (*param_1)(&DAT_02ef8818,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ef8a20,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ef8c28,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ef8e30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ef9038,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02ef9240,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ef9448,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f65e78,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02f66080,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02f66288,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ef9c68,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f66490,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((((((((cVar1 = (*param_1)(&DAT_02f66698,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f668a0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f66aa8,0x200,param_2), cVar1 != '\0')) &&
            (((((cVar1 = (*param_1)(&DAT_02f66cb0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f66eb8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02f670c0,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02f672c8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02f674d0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02f676d8,0x200,param_2), cVar1 != '\0')))))) &&
              ((cVar1 = (*param_1)(&DAT_02f678e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f67ae8,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02f67cf0,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02f67ef8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f68100,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f68308,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02f68510,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f68718,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02e7b828,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02f68920,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f68b28,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_02f68d30,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02f68f38,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f69140,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02f69348,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02f69550,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f69758,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f69960,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02f69b68,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f69d70,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f69f78,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02f6a180,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f6a388,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02f6a590,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02f6a798,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f6a9a0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02f6aba8,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02f6adb0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f6afb8,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02f6b1c0,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_02f6b3c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f6b5d0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f6b7d8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02f6b9e0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f6bbe8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02f6bdf0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02f6bff8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f6c200,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02f6c408,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((cVar1 = (*param_1)(&DAT_02f6c610,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f6c818,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02f6ca20,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02f6cc28,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f6ce30,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f6d038,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02f6d240,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f6d448,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f6d650,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02f6d858,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f6da60,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f6dc68,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02f6de70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f6e078,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f6e280,0x200,param_2), cVar1 != '\0')))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02f6e488,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f6e690,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02f6e898,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02f6eaa0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f6eca8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f6eeb0,0x200,param_2), cVar1 != '\0' &&
              (((((cVar1 = (*param_1)(&DAT_02f6f0b8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02f6f2c0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02f6f4c8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02f6f6d0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f6f8d8,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02f6fae0,0x200,param_2), cVar1 != '\0')))))))) &&
           (((cVar1 = (*param_1)(&DAT_02f6fce8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f6fef0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f700f8,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_02f70300,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f70508,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f70710,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02f70918,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f70b20,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f70d28,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02f70f30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f71138,0x200,param_2), cVar1 != '\0')))))) &&
            (cVar1 = (*param_1)(&DAT_02f71340,0x200,param_2), cVar1 != '\0')))) &&
          ((((((((cVar1 = (*param_1)(&DAT_02f71548,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f71750,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02f71958,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02f71b60,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f71d68,0x200,param_2), cVar1 != '\0')))) &&
              (((cVar1 = (*param_1)(&DAT_02f71f70,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02f72178,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f72380,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02f72588,0x200,param_2), cVar1 != '\0')))) &&
             ((((((cVar1 = (*param_1)(&DAT_02f72790,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02f72998,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02f72ba0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02f72da8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f72fb0,0x200,param_2), cVar1 != '\0')))) &&
               ((cVar1 = (*param_1)(&DAT_02f731b8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02f733c0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f735c8,0x200,param_2), cVar1 != '\0')))))) &&
              (cVar1 = (*param_1)(&DAT_02f737d0,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02f739d8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f73be0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f73de8,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02f73ff0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f741f8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f74400,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02f74608,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f74810,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02f74a18,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02f74c20,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f74e28,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02f75030,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
      (((cVar1 = (*param_1)(&DAT_02f75238,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f75440,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02f75648,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02f75850,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f75a58,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02f75c60,0x200,param_2), cVar1 != '\0' &&
           ((((((cVar1 = (*param_1)(&DAT_02f75e68,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f76070,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02f76278,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02f76480,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f76688,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_02f76890,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02f76a98,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f76ca0,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02f76ea8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02f770b0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f772b8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02f774c0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02f776c8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f778d0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02f77ad8,0x200,param_2), cVar1 != '\0' &&
                ((cVar1 = (*param_1)(&DAT_02f77ce0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f77ee8,0x200,param_2), cVar1 != '\0')))))))))))))))) &&
         (cVar1 = (*param_1)(&DAT_02f780f0,0x200,param_2), cVar1 != '\0')) &&
        ((((cVar1 = (*param_1)(&DAT_02f782f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f78500,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f78708,0x200,param_2), cVar1 != '\0')) &&
         (((cVar1 = (*param_1)(&DAT_02f78910,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f78b18,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f78d20,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f78f28,0xb8,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078bb6b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02f78fe8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02f791f0,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_02f793f8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f79600,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f79808,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02f79a10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f79c18,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_02f79e20,0x200,param_2), cVar1 != '\0')))) &&
     ((((((cVar1 = (*param_1)(&DAT_02f7a028,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f7a230,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f7a438,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f7a640,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f7a848,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02f7aa50,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02f7ac58,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f7ae60,0x200,param_2), cVar1 != '\0')))))) &&
      (((((cVar1 = (*param_1)(&DAT_02f7b068,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_02f7b270,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f7b478,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f7b680,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f7b888,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f7ba90,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02f7bc98,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02f7bea0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f7c0a8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f7c2b0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02f7c4b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f7c6c0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f7c8c8,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02f7cad0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f7ccd8,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f7cee0,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02f7d0e8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f7d2f0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f7d4f8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f7d700,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f7d908,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f7db10,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02f7dd18,0x123,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078be03(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02f7de40,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02f7e048,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02f7e250,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f7e458,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02f7e660,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02f7e868,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f7ea70,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02f7ec78,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_02f7ee80,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f7f088,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f7f290,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f7f498,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f7f6a0,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02f7f8a8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f7fab0,0xd2,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078bf03(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02f83a80,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02f83c88,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_02f83e90,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f84098,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f842a0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02f844a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f846b0,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_02f805b0,0x200,param_2), cVar1 != '\0')))) &&
     ((((((cVar1 = (*param_1)(&DAT_02f848b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f84ac0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f84cc8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f84ed0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f850d8,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02f852e0,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02f854e8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f856f0,0x200,param_2), cVar1 != '\0')))))) &&
      (((((cVar1 = (*param_1)(&DAT_02f858f8,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_02f85b00,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f85d08,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f85f10,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f86118,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f86320,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02f86528,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02f86730,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f86938,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f86b40,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02f86d48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f86f50,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f87158,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02f87360,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f87568,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f87770,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02f87978,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f87b80,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f87d88,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f87f90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f88198,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f883a0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02f885a8,0x127,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078c19b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02f886d0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02f888d8,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02f88ae0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f88ce8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02f88ef0,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02f890f8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f89300,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02f89508,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_02f89710,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f89918,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f89b20,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f89d28,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f89f30,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02f8a138,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f8a340,0xd4,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078c29b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02f8a620,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f8a828,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02eec3d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02eec5e0,0x200,param_2), cVar1 != '\0')))) &&
         (((((cVar1 = (*param_1)(&DAT_02eec7e8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02eec9f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02eecbf8,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02eece00,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02eed008,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eed210,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02eed418,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02eed620,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02eed828,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02eeda30,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02eedc38,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02eede40,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02eee048,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_02eee250,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02eee458,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02eee660,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f8aa30,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f588f0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02f58af8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02f58d00,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f8ac38,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02f8ae40,0x200,param_2), cVar1 != '\0' &&
           (((((cVar1 = (*param_1)(&DAT_02f8b048,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f8b250,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02f8b458,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f8b660,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f8b868,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02f8ba70,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02f8bc78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f8be80,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f8c088,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02eef088,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f8c290,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f8c498,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02eef290,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02eef498,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02eef6a0,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02eef8a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f8c6a0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f8c8a8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02f8cab0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f8ccb8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f809c0,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_02f8cec0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f8d0c8,0x200,param_2), cVar1 != '\0')))))) &&
     ((((cVar1 = (*param_1)(&DAT_02f8d2d0,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_02f8d4d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f8d6e0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f8d8e8,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02f80bc8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f8daf0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f80dd0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f80fd8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f8dcf8,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02f811e0,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02f813e8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f815f0,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_02f817f8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02f81a00,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f81c08,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f81e10,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02f8df00,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f8e108,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f8e310,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02f8e518,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f8e720,0x1c7,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078c742(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((((((param_1 != (code *)0x0) &&
                 (cVar1 = (*param_1)(&DAT_02f8e8e8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02f8eaf0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02f8ecf8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f8ef00,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02f8f108,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02f8f310,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f8f518,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02ce9a68,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_02f8f720,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f8f928,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02f8fb30,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_02f8fd38,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f8ff40,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02f90148,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_02f90350,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f801a0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f90558,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02f90760,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f90968,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02f90b70,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02f90d78,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f90f80,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02f803a8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02f91188,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f91390,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f91598,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02f917a0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f919a8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f91bb0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f91db8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f91fc0,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02f921c8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02f923d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f925d8,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02f927e0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02f929e8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f92bf0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f92df8,0x200,param_2), cVar1 != '\0')))) &&
        (((((cVar1 = (*param_1)(&DAT_02f93000,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f93208,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f93410,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02f93618,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f93820,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02f93a28,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02f93c30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f93e38,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02f94040,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02f94248,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f94450,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02f94658,0x200,param_2), cVar1 != '\0')))))) &&
      (((((cVar1 = (*param_1)(&DAT_02f94860,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f94a68,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f94c70,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02f94e78,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f95080,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f95288,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f95490,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f95698,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_02f958a0,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02f95aa8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f95cb0,0x200,param_2), cVar1 != '\0')))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02f95eb8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f960c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f962c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f964d0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02f966d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f968e0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f96ae8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02f96cf0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f96ef8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f97100,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f97308,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f97510,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f97718,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02f97920,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f97b28,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f97d30,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f97f38,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f98140,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02f98348,0x200,param_2), cVar1 != '\0' &&
            ((((((cVar1 = (*param_1)(&DAT_02f98550,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02f98758,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02f98960,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02f98b68,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02f98d70,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02f98f78,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f99180,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f99388,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02f99590,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02f99798,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f999a0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f99ba8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f99db0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f99fb8,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02f9a1c0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02f9a3c8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f9a5d0,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02f9a7d8,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02f9a9e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f9abe8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f9adf0,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02f9aff8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f9b200,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f9b408,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02f9b610,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f9b818,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02f9ba20,0x200,param_2), cVar1 != '\0')) &&
          ((((((cVar1 = (*param_1)(&DAT_02f9bc28,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f9be30,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02f9c038,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f9c240,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f9c448,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02f9c650,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02f9c858,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f9ca60,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_02f9cc68,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02f9ce70,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f9d078,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02f9d280,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02f9d488,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f9d690,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02f9d898,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02f9daa0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f9dca8,0x200,param_2), cVar1 != '\0')))))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02f9deb0,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02f9e0b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f9e2c0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02f9e4c8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02f9e6d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f9e8d8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f9eae0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02f9ece8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f9eef0,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02f9f0f8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02f9f300,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f9f508,0xb7,param_2), cVar1 != '\0')))))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078d04b(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02fa2888,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02fa2a90,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f82018,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f82220,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02f82428,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f82630,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f82838,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02f82a40,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02f82c48,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f82e50,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f83058,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02f83260,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f83468,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02f83670,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02fa2c98,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02fa2ea0,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_02fa30a8,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02fa32b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02fa34b8,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02fa36c0,0x200,param_2), cVar1 != '\0')))))) &&
     (((((cVar1 = (*param_1)(&DAT_02fa38c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02fa3ad0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02fa3cd8,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02fa3ee0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fa40e8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fa42f0,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02fa44f8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02fa4700,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02fa4908,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02fa4b10,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fa4d18,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_02fa4f20,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02fa5128,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fa5330,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((((cVar1 = (*param_1)(&DAT_02fa5538,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02fa5740,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fa5948,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02fa5b50,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02fa5d58,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fa5f60,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02fa6168,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_02fa6370,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fa6578,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02fa6780,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02fa6988,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fa6b90,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02fa6d98,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02fa6fa0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fa71a8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fa73b0,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_02fa75b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fa77c0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fa79c8,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02fa7bd0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02fa7dd8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02fa7fe0,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02fa81e8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fa83f0,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_02fa85f8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02fa8800,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fa8a08,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_02fa8c10,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02fa8e18,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fa9020,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02fa9228,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02fa9430,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fa9638,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02fa9840,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02fa9a48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fa9c50,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fa9e58,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02faa060,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02faa268,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02faa470,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02faa678,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02faa880,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_02faaa88,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02faac90,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02faae98,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02fab0a0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02fab2a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fab4b0,100,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078d5bc(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02fab518,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fab720,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02fab928,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fabb30,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02fabd38,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02fabf40,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fac148,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02fac350,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02fac558,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f83878,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fac760,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02fac968,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02facb70,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02facd78,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02facf80,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fad188,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02fad390,0x200,param_2), cVar1 != '\0')))))) &&
        ((((((cVar1 = (*param_1)(&DAT_02fad598,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fad7a0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fad9a8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02fadbb0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02faddb8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02fadfc0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02fae1c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fae3d0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02fae5d8,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_02fae7e0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fae9e8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02faebf0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02faedf8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02faf000,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02faf208,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02faf410,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02faf618,0x200,param_2), cVar1 != '\0')))))) &&
           ((((cVar1 = (*param_1)(&DAT_02faf820,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02fafa28,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02fafc30,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02fafe38,0x200,param_2), cVar1 != '\0')))) &&
             (((((cVar1 = (*param_1)(&DAT_02fb0040,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02fb0248,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02fb0450,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_02fb0658,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02fb0860,0x200,param_2), cVar1 != '\0')))))) &&
               (cVar1 = (*param_1)(&DAT_02fb0a68,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02fb0c70,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02fb0e78,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02fb1080,0x200,param_2), cVar1 != '\0')))))) &&
            ((((cVar1 = (*param_1)(&DAT_02fb1288,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fb1490,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02fb1698,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02fb18a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02fb1aa8,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_02fb1cb0,0x200,param_2), cVar1 != '\0')))))) &&
          (((((((((cVar1 = (*param_1)(&DAT_02fb1eb8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02fb20c0,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02fb22c8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02fb24d0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02fb26d8,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02fb28e0,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02fb2ae8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02fb2cf0,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02fb2ef8,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02fb3100,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02fb3308,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02fb3510,0x200,param_2), cVar1 != '\0')))))))) &&
             ((cVar1 = (*param_1)(&DAT_02fb3718,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fb3920,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02fb3b28,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02fb3d30,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fb3f38,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02fb4140,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_02fb4348,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02fb4550,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02fb4758,0x200,param_2), cVar1 != '\0')))))))))) &&
           (((cVar1 = (*param_1)(&DAT_02fb4960,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fb4b68,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fb4d70,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02fb4f78,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fb5180,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02fb5388,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_02fb5590,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02fb5798,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02fb59a0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02fb5ba8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02fb5db0,0x200,param_2), cVar1 != '\0'))))))))))))))))))))
       && (((cVar1 = (*param_1)(&DAT_02fb5fb8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02fb61c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fb63c8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02fb65d0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02fb67d8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fb69e0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02fb6be8,0x200,param_2), cVar1 != '\0')))) &&
            ((((cVar1 = (*param_1)(&DAT_02fb6df0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fb6ff8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02fb7200,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02fb7408,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fb7610,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((((((cVar1 = (*param_1)(&DAT_02fb7818,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02fb7a20,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fb7c28,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02fb7e30,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02fb8038,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fb8240,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02fb8448,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02fb8650,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fb8858,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02fb8a60,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_02fb8c68,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fb8e70,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02fb9078,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02fb9280,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fb9488,0x200,param_2), cVar1 != '\0')))))))))) &&
         ((cVar1 = (*param_1)(&DAT_02fb9690,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02fb9898,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fb9aa0,0x200,param_2), cVar1 != '\0')))))) &&
        ((((((cVar1 = (*param_1)(&DAT_02fb9ca8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02fb9eb0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fba0b8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02fba2c0,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02fba4c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fba6d0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02fba8d8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02fbaae0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fbace8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fbaef0,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02fbb0f8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fbb300,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02fbb508,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02fbb710,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fbb918,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02fbbb20,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02fbbd28,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fbbf30,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02fbc138,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_02fbc340,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fbc548,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02fbc750,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02fbc958,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fbcb60,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02fbcd68,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02fbcf70,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fbd178,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_02fbd380,0x200,param_2), cVar1 != '\0')))))) &&
     (((((((((cVar1 = (*param_1)(&DAT_02fbd588,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fbd790,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fbd998,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02fbdba0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fbdda8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02fbdfb0,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02fbe1b8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fbe3c0,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02fbe5c8,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02fbe7d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fbe9d8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02fbebe0,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02fbede8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fbeff0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02fbf1f8,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02fbf400,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fbf608,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_02fbf810,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_02fbfa18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fbfc20,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02fbfe28,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02fc0030,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fc0238,0x200,param_2), cVar1 != '\0')))))))) &&
      (((cVar1 = (*param_1)(&DAT_02fc0440,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02fc0648,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02fc0850,0x200,param_2), cVar1 != '\0')))) &&
       (cVar1 = (*param_1)(&DAT_026b51ac,2,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078e104(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((param_1 != (code *)0x0) &&
         (cVar1 = (*param_1)(&DAT_02fc0a58,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02fc0c60,0x200,param_2), cVar1 != '\0')) &&
       (((cVar1 = (*param_1)(&DAT_02fc0e68,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02fc1070,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02fc1278,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02fc1480,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fc1688,0x200,param_2), cVar1 != '\0')))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02fc1890,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02fc1a98,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fc1ca0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fc1ea8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02fc20b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fc22b8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02fc24c0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02fc26c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fc28d0,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_02fc2ad8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02fc2ce0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fc2ee8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02fc30f0,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02fc32f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fc3500,0x200,param_2), cVar1 != '\0')) &&
           ((((cVar1 = (*param_1)(&DAT_02fc3708,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02fc3910,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fc3b18,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02fc3d20,0x200,param_2), cVar1 != '\0')) &&
            ((((cVar1 = (*param_1)(&DAT_02fc3f28,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fc4130,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02fc4338,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02fc4540,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fc4748,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02fc4950,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02fc4b58,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02fc4d60,0x200,param_2), cVar1 != '\0')))))))))))))))))) &&
       ((cVar1 = (*param_1)(&DAT_02fc4f68,0x200,param_2), cVar1 != '\0' &&
        (((((((cVar1 = (*param_1)(&DAT_02fc5170,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fc5378,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02fc5580,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fc5788,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fc5990,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02fc5b98,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02fc5da0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fc5fa8,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_02fc61b0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02fc63b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fc65c0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02fc67c8,0x200,param_2), cVar1 != '\0')))))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_02fc69d0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02fc6bd8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02fc6de0,0x200,param_2), cVar1 != '\0')) &&
      ((((((cVar1 = (*param_1)(&DAT_02fc6fe8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fc71f0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02fc73f8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02fc7600,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fc7808,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fc7a10,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_02fc7c18,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fc7e20,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02fc8028,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02fc8230,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fc8438,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02fc8640,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02fc8848,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fc8a50,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02fc8c58,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fc8e60,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fc9068,0x200,param_2), cVar1 != '\0')))))))))))) &&
       (((cVar1 = (*param_1)(&DAT_02fc9270,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02fc9478,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fc9680,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02fc9888,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02fc9a90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fc9c98,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02fc9ea0,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_02fca0a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fca2b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fca4b8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02fca6c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fca8c8,0x200,param_2), cVar1 != '\0')))))))) &&
        ((((cVar1 = (*param_1)(&DAT_02fcaad0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02fcacd8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fcaee0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fcb0e8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02fcb2f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fcb4f8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02fcb700,0x200,param_2), cVar1 != '\0' &&
            (((((cVar1 = (*param_1)(&DAT_02fcb908,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02fcbb10,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02fcbd18,0x200,param_2), cVar1 != '\0' &&
                ((((cVar1 = (*param_1)(&DAT_02fcbf20,0x200,param_2), cVar1 != '\0' &&
                   (cVar1 = (*param_1)(&DAT_02fcc128,0x200,param_2), cVar1 != '\0')) &&
                  (cVar1 = (*param_1)(&DAT_02fcc330,0x200,param_2), cVar1 != '\0')) &&
                 ((cVar1 = (*param_1)(&DAT_02fcc538,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02fcc740,0x200,param_2), cVar1 != '\0')))))))) &&
              (cVar1 = (*param_1)(&DAT_02fcc948,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02fccb50,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fccd58,0x200,param_2), cVar1 != '\0')))))))))) &&
         (((cVar1 = (*param_1)(&DAT_02fccf60,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02fcd168,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fcd370,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fcd578,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02fcd780,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fcd988,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02fcdb90,100,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078e7ea(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02fcdbf8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02fcde00,0x200,param_2), cVar1 != '\0')) &&
      ((((cVar1 = (*param_1)(&DAT_02f83e90,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f84098,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f842a0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02f844a8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f846b0,0x200,param_2), cVar1 != '\0')))))) &&
       (cVar1 = (*param_1)(&DAT_02f805b0,0x200,param_2), cVar1 != '\0')))) &&
     ((((((cVar1 = (*param_1)(&DAT_02fce008,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fce210,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02fce418,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02fce620,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02fce828,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02fcea30,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02f854e8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f856f0,0x200,param_2), cVar1 != '\0')))))) &&
      (((((cVar1 = (*param_1)(&DAT_02f858f8,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_02f85b00,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f85d08,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f85f10,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02f86118,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fcec38,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02f86528,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02f86730,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fcee40,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f807b8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02fcf048,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fcf250,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fcf458,0x200,param_2), cVar1 != '\0')))))))) &&
        (((cVar1 = (*param_1)(&DAT_02fcf660,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fcf868,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02fcfa70,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02fcfc78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fcfe80,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02fd0088,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02fd0290,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fd0498,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02fd06a0,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02fd08a8,0x11b,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078ea82(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_02fd09c8,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_02fd0bd0,0x200,param_2), cVar1 != '\0')) &&
      (((cVar1 = (*param_1)(&DAT_02f88ae0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02f88ce8,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02f88ef0,0x200,param_2), cVar1 != '\0' &&
        ((cVar1 = (*param_1)(&DAT_02f890f8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f89300,0x200,param_2), cVar1 != '\0')))))))) &&
     ((cVar1 = (*param_1)(&DAT_02f89508,0x200,param_2), cVar1 != '\0' &&
      (((((cVar1 = (*param_1)(&DAT_02f89710,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02f89918,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02f89b20,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f89d28,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f89f30,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02f8a138,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02fd0dd8,0xd4,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078eb83(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_02fd0eb0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fd10b8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02fd12c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fd14c8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02fd16d0,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02fd18d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fd1ae0,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_02fd1ce8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_02fd1ef0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fd20f8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fd2300,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02fd2508,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02f8a418,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fd2710,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02fd2918,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fd2b20,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02fd2d28,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_02fd2f30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f7fb88,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02fd3138,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02fd3340,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fd3548,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02fd3750,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02fd3958,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fd3b60,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_02fd3d68,0x200,param_2), cVar1 != '\0')))))) &&
       (((((((cVar1 = (*param_1)(&DAT_02fd3f70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fd4178,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fd4380,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02fd4588,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fd4790,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02fd4998,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02fd4ba0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fd4da8,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_02fd4fb0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02fd51b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fd53c0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02fd55c8,0x200,param_2), cVar1 != '\0')))) &&
           (((((cVar1 = (*param_1)(&DAT_02fd57d0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fd59d8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02fd5be0,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_02fd5de8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02fd5ff0,0x200,param_2), cVar1 != '\0')))))) &&
             (cVar1 = (*param_1)(&DAT_02fd61f8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02fd6400,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fd6608,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02fd6810,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_02fd6a18,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fd6c20,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fd6e28,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02fd7030,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fd7238,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02fd7440,0x200,param_2), cVar1 != '\0')))))) &&
        (((((((((((cVar1 = (*param_1)(&DAT_02fd7648,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02fd7850,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02fd7a58,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02fd7c60,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02fd7e68,0x200,param_2), cVar1 != '\0')))) &&
               (cVar1 = (*param_1)(&DAT_02fd8070,0x200,param_2), cVar1 != '\0')) &&
              (((cVar1 = (*param_1)(&DAT_02fd8278,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02fd8480,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02fd8688,0x200,param_2), cVar1 != '\0' &&
                (((cVar1 = (*param_1)(&DAT_02fd8890,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02fd8a98,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02fd8ca0,0x200,param_2), cVar1 != '\0')))))))) &&
             ((cVar1 = (*param_1)(&DAT_02fd8ea8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fd90b0,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02fd92b8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02fd94c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fd96c8,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02fd98d0,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_02fd9ad8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02fd9ce0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02fd9ee8,0x200,param_2), cVar1 != '\0')))))))))) &&
           (((cVar1 = (*param_1)(&DAT_02fda0f0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fda2f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fda500,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02fda708,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fda910,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02fdab18,0x200,param_2), cVar1 != '\0' &&
               ((((cVar1 = (*param_1)(&DAT_02fdad20,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_02fdaf28,0x200,param_2), cVar1 != '\0')) &&
                 (cVar1 = (*param_1)(&DAT_02fdb130,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_02fdb338,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02fdb540,0x200,param_2), cVar1 != '\0')))))))))))))) &&
          ((cVar1 = (*param_1)(&DAT_02fdb748,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02fdb950,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fdbb58,0x200,param_2), cVar1 != '\0')))))) &&
         ((((cVar1 = (*param_1)(&DAT_02fdbd60,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_02fdbf68,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fdc170,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02fdc378,0x200,param_2), cVar1 != '\0')))) &&
           ((((cVar1 = (*param_1)(&DAT_02fdc580,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fdc788,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02fdc990,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fdcb98,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fdcda0,0x200,param_2), cVar1 != '\0')))))) &&
          ((((((cVar1 = (*param_1)(&DAT_02fdcfa8,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_02fdd1b0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02fdd3b8,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02fdd5c0,0x200,param_2), cVar1 != '\0')))) &&
              ((cVar1 = (*param_1)(&DAT_02fdd7c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fdd9d0,0x200,param_2), cVar1 != '\0')))) &&
             (cVar1 = (*param_1)(&DAT_02fddbd8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_02fddde0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fddfe8,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02fde1f0,0x200,param_2), cVar1 != '\0' &&
              ((((cVar1 = (*param_1)(&DAT_02fde3f8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02fde600,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02fde808,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02fdea10,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02fdec18,0x200,param_2), cVar1 != '\0')))))))))) &&
           ((cVar1 = (*param_1)(&DAT_02fdee20,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_02fdf028,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fdf230,0x200,param_2), cVar1 != '\0')))))))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_02fdf438,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02fdf640,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fdf848,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02fdfa50,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02fdfc58,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fdfe60,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02fe0068,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02fe0270,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fe0478,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02fe0680,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02fe0888,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fe0a90,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02fe0c98,0x200,param_2), cVar1 != '\0')))))))) &&
       ((cVar1 = (*param_1)(&DAT_02fe0ea0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02fe10a8,0x200,param_2), cVar1 != '\0')))))) &&
     (((cVar1 = (*param_1)(&DAT_02fe12b0,0x200,param_2), cVar1 != '\0' &&
       ((((cVar1 = (*param_1)(&DAT_02fe14b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fe16c0,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02fe18c8,0x200,param_2), cVar1 != '\0' &&
          ((((((cVar1 = (*param_1)(&DAT_02fe1ad0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fe1cd8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02fe1ee0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02fe20e8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fe22f0,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02fe24f8,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02fe2700,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fe2908,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_02fe2b10,0x200,param_2), cVar1 != '\0')))) &&
      (((((((((cVar1 = (*param_1)(&DAT_02fe2d18,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fe2f20,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02fe3128,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fe3330,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fe3538,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02fe3740,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02fe3948,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fe3b50,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02fe3d58,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_02fe3f60,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fe4168,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02fe4370,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02fe4578,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fe4780,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02fe4988,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02fe4b90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fe4d98,0x200,param_2), cVar1 != '\0')))))))) &&
        ((cVar1 = (*param_1)(&DAT_02fe4fa0,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02fe51a8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fe53b0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02fe55b8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02fe57c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fe59c8,0x200,param_2), cVar1 != '\0')))))))) &&
       (((cVar1 = (*param_1)(&DAT_02fe5bd0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02fe5dd8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fe5fe0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02fe61e8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02fe63f0,0x90,param_2), cVar1 != '\0')))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078f6df(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02fe6488,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02fe6690,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02eec3d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02eec5e0,0x200,param_2), cVar1 != '\0')))) &&
         (((((cVar1 = (*param_1)(&DAT_02eec7e8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02eec9f0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fe6898,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02fe6aa0,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02fe6ca8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fe6eb0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02fe70b8,0x200,param_2), cVar1 != '\0')))) &&
          ((((cVar1 = (*param_1)(&DAT_02fe72c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fe74c8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fe76d0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02fe78d8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fe7ae0,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02fe7ce8,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_02fe7ef0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fe80f8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02fe8300,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02fe8508,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fe8710,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02fe8918,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02fe8b20,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fe8d28,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_02fe8f30,0x200,param_2), cVar1 != '\0' &&
           (((((cVar1 = (*param_1)(&DAT_02f8b048,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02f8b250,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02f8b458,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02fe9138,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02f8b868,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_02f8ba70,0x200,param_2), cVar1 != '\0')))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02f8bc78,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fe9340,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02f8c088,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02eef088,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02f8c290,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02f8c498,0x200,param_2), cVar1 != '\0')))))) &&
        (((cVar1 = (*param_1)(&DAT_02eef290,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02eef498,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02eef6a0,0x200,param_2), cVar1 != '\0')))))) &&
      ((((cVar1 = (*param_1)(&DAT_02eef8a8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f8c6a0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02fe9548,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02fe9750,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fe9958,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02fe9b60,0x200,param_2), cVar1 != '\0')))))) &&
       ((cVar1 = (*param_1)(&DAT_02fe9d68,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02fe9f70,0x200,param_2), cVar1 != '\0')))))) &&
     ((((cVar1 = (*param_1)(&DAT_02fea178,0x200,param_2), cVar1 != '\0' &&
        ((((cVar1 = (*param_1)(&DAT_02fea380,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fea588,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02fea790,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02fea998,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02feaba0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02feada8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02feafb0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02feb1b8,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02feb3c0,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02feb5c8,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02feb7d0,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_02feb9d8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02febbe0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02febde8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02febff0,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02fec1f8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fec400,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_02fec608,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_02fec810,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02feca18,0x1c4,param_2), cVar1 != '\0')))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0078fb86(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((((((param_1 != (code *)0x0) &&
                 (cVar1 = (*param_1)(&DAT_02fecbe0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02fecde8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02fecff0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02fed1f8,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02fed400,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_02fed608,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fed810,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02f7fd90,0x200,param_2), cVar1 != '\0' &&
               (((cVar1 = (*param_1)(&DAT_02f7ff98,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02feda18,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02eefec0,0x200,param_2), cVar1 != '\0')))))))) &&
            ((cVar1 = (*param_1)(&DAT_02fedc20,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fede28,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02fee030,0x200,param_2), cVar1 != '\0')) &&
          (((((cVar1 = (*param_1)(&DAT_02fee238,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fee440,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02fee648,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_02fee850,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02feea58,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02feec60,0x200,param_2), cVar1 != '\0')))))) &&
            ((cVar1 = (*param_1)(&DAT_02feee68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fef070,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_02fef278,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02fef480,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fef688,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02fef890,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_02fefa98,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fefca0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02f3ccd0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fefea8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ff00b0,0x200,param_2), cVar1 != '\0')))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02ff02b8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02ff04c0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ff06c8,0x200,param_2), cVar1 != '\0')))))) &&
       (((cVar1 = (*param_1)(&DAT_02ff08d0,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_02ff0ad8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ff0ce0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ff0ee8,0x200,param_2), cVar1 != '\0')))) &&
        (((((cVar1 = (*param_1)(&DAT_02ff10f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ff12f8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ff1500,0x200,param_2), cVar1 != '\0')) &&
          (((cVar1 = (*param_1)(&DAT_02ff1708,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ff1910,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02ff1b18,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02ff1d20,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ff1f28,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ff2130,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02ff2338,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ff2540,0x200,param_2), cVar1 != '\0')))))))) &&
         (cVar1 = (*param_1)(&DAT_02ff2748,0x200,param_2), cVar1 != '\0')))))) &&
      (((((cVar1 = (*param_1)(&DAT_02ff2950,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ff2b58,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ff2d60,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_02ff2f68,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ff3170,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ff3378,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ff3580,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ff3788,0x200,param_2), cVar1 != '\0')))))))) &&
        (cVar1 = (*param_1)(&DAT_02ff3990,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_02ff3b98,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_02ff3da0,0x200,param_2), cVar1 != '\0')))))) &&
     ((((((cVar1 = (*param_1)(&DAT_02ff3fa8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02ff41b0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ff43b8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ff45c0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02ff47c8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ff49d0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ff4bd8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_02ff4de0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ff4fe8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ff51f0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02ff53f8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ff5600,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ff5808,0x200,param_2), cVar1 != '\0')))))))) &&
       ((((cVar1 = (*param_1)(&DAT_02ff5a10,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ff5c18,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02ff5e20,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02ff6028,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ff6230,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_02ff6438,0x200,param_2), cVar1 != '\0' &&
            ((((((cVar1 = (*param_1)(&DAT_02ff6640,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_02ff6848,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_02ff6a50,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_02ff6c58,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02ff6e60,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_02ff7068,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02ff7270,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ff7478,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02ff7680,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_02ff7888,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ff7a90,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ff7c98,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02ff7ea0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ff80a8,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((((cVar1 = (*param_1)(&DAT_02ff82b0,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_02ff84b8,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02ff86c0,0x200,param_2), cVar1 != '\0')))) &&
        (cVar1 = (*param_1)(&DAT_02ff88c8,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_02ff8ad0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ff8cd8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ff8ee0,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_02ff90e8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ff92f0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02ff94f8,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02ff9700,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ff9908,0x200,param_2), cVar1 != '\0')))))) &&
           (cVar1 = (*param_1)(&DAT_02ff9b10,0x200,param_2), cVar1 != '\0')) &&
          ((((((cVar1 = (*param_1)(&DAT_02ff9d18,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ff9f20,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ffa128,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02ffa330,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ffa538,0x200,param_2), cVar1 != '\0')))) &&
            ((cVar1 = (*param_1)(&DAT_02ffa740,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02ffa948,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ffab50,0x200,param_2), cVar1 != '\0')))))) &&
           (((cVar1 = (*param_1)(&DAT_02ffad58,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02ffaf60,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ffb168,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02ffb370,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_02ffb578,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ffb780,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_02ffb988,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_02ffbb90,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ffbd98,0x200,param_2), cVar1 != '\0')))))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_02ffbfa0,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02ffc1a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ffc3b0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_02ffc5b8,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_02ffc7c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02ffc9c8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02ffcbd0,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_02ffcdd8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02ffcfe0,0x200,param_2), cVar1 != '\0')))))))) &&
          ((cVar1 = (*param_1)(&DAT_02ffd1e8,0x200,param_2), cVar1 != '\0' &&
           ((cVar1 = (*param_1)(&DAT_02ffd3f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02ffd5f8,0xfd,param_2), cVar1 != '\0')))))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0079048f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_02ffd6f8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02ffd900,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_02f9f5c0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02f9f7c8,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_02f9f9d0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02f9fbd8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02f9fde0,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_02f9ffe8,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_02fa01f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_02fa03f8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_02fa0600,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_02ffdb08,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02ffdd10,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_02ffdf18,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_02ffe120,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ffe328,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_02fa0808,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_02ffe530,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ffe738,0x200,param_2), cVar1 != '\0')) &&
        (cVar1 = (*param_1)(&DAT_02ffe940,0x200,param_2), cVar1 != '\0')))))) &&
     (((((cVar1 = (*param_1)(&DAT_02ffeb48,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_02ffed50,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_02ffef58,0x200,param_2), cVar1 != '\0' &&
         (((((cVar1 = (*param_1)(&DAT_02fff160,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fff368,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fff570,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_02fff778,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_02fff980,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_02fffb88,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_02fffd90,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02ffff98,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_030001a0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_030003a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_030005b0,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((((cVar1 = (*param_1)(&DAT_030007b8,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_030009c0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_03000bc8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_03000dd0,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_03000fd8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_030011e0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_030013e8,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_030015f0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_030017f8,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_03001a00,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_03001c08,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_03001e10,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_03002018,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_03002220,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03002428,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_03002630,0x200,param_2), cVar1 != '\0')))))) &&
         (((((cVar1 = (*param_1)(&DAT_03002838,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03002a40,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_03002c48,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_03002e50,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_03003058,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_03003260,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_03003468,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_03003670,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_03003878,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_03003a80,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03003c88,0x200,param_2), cVar1 != '\0')))))) &&
          ((((cVar1 = (*param_1)(&DAT_02fa0a10,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_02fa0c18,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_02fa0e20,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_02fa1028,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_03003e90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_02fa1230,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_02fa1438,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_02fa1640,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_02fa1848,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_02fa1a50,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_03004098,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_030042a0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_030044a8,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_030046b0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_030048b8,0x200,param_2), cVar1 != '\0')))))) &&
      ((cVar1 = (*param_1)(&DAT_03004ac0,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_03004cc8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_03004ed0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_030050d8,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_030052e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_030054e8,0x169,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00790a02(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_03005658,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_03005860,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_02fa1c58,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_02fa1e60,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_02fa2068,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_02fa2270,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_02fa2478,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_02fa2680,0x200,param_2), cVar1 != '\0')) &&
       ((((cVar1 = (*param_1)(&DAT_03005a68,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03005c70,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_03005e78,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_03006080,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_03006288,0x200,param_2), cVar1 != '\0')))))))) &&
     ((((((cVar1 = (*param_1)(&DAT_03006490,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_03006698,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_030068a0,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_03006aa8,0x200,param_2), cVar1 != '\0')) &&
        (((((((cVar1 = (*param_1)(&DAT_03006cb0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_03006eb8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_030070c0,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_030072c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_030074d0,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_030076d8,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_030078e0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03007ae8,0x200,param_2), cVar1 != '\0')))))) &&
          (((cVar1 = (*param_1)(&DAT_03007cf0,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_03007ef8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_03008100,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_03008308,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_03008510,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03008718,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_03008920,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_03008b28,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_03008d30,0x200,param_2), cVar1 != '\0')))))))))) &&
         (cVar1 = (*param_1)(&DAT_03008f38,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_03009140,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03009348,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_03009550,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_03009758,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03009960,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_03009b68,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_03009d70,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03009f78,0x200,param_2), cVar1 != '\0')))))))) &&
      (((cVar1 = (*param_1)(&DAT_0300a180,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_0300a388,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0300a590,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0300a798,0x200,param_2), cVar1 != '\0')))) &&
       ((((cVar1 = (*param_1)(&DAT_0300a9a0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0300aba8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0300adb0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0300afb8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0300b1c0,0x200,param_2), cVar1 != '\0')))))) &&
        ((cVar1 = (*param_1)(&DAT_0300b3c8,0x200,param_2), cVar1 != '\0' &&
         ((((((cVar1 = (*param_1)(&DAT_0300b5d0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0300b7d8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0300b9e0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_0300bbe8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0300bdf0,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0300bff8,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0300c200,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0300c408,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_0300c610,0x200,param_2), cVar1 != '\0')) &&
          ((((((cVar1 = (*param_1)(&DAT_0300c818,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0300ca20,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0300cc28,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0300ce30,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0300d038,0x200,param_2), cVar1 != '\0')))) &&
            (cVar1 = (*param_1)(&DAT_0300d240,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0300d444,0x2e,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00790e95(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_0300da90,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0300dc98,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0300d478,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0300dea0,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_0300e0a8,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_0300e2b0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0300e4b8,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_0300e6c0,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_0300e8c8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0300ead0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0300ecd8,0x200,param_2), cVar1 != '\0')))) &&
            ((((((cVar1 = (*param_1)(&DAT_0300eee0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0300f0e8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_0300f2f0,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_0300f4f8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0300f700,0x200,param_2), cVar1 != '\0')))))) &&
               (cVar1 = (*param_1)(&DAT_0300f908,0x200,param_2), cVar1 != '\0')) &&
              ((((cVar1 = (*param_1)(&DAT_0300fb10,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0300fd18,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0300ff20,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_03010128,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_03010330,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_03010538,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_03010740,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_03010948,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_03010b50,0x200,param_2), cVar1 != '\0' &&
            ((((((cVar1 = (*param_1)(&DAT_03010d58,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_03010f60,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_03011168,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_03011370,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_03011578,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_03011780,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_03011988,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_03011b90,0x200,param_2), cVar1 != '\0')))))))) &&
          ((((cVar1 = (*param_1)(&DAT_03011d98,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_03011fa0,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_030121a8,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_030123b0,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_030125b8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_030127c0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_030129c8,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_03012bd0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03012dd8,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_03012fe0,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_030131e8,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_030133f0,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_030135f8,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_03013800,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_03013a08,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_03013c10,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_03013e18,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03014020,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_03014228,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_03014430,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_03014638,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_03014840,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_03014a48,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03014c50,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_03014e58,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_03015060,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03015268,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_03015470,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_03015678,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_03015880,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_03015a88,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_03015c90,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_03015e98,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_030160a0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_030162a8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_030164b0,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_030166b8,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_030168c0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03016ac8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_03016cd0,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_03016ed8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_030170e0,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((cVar1 = (*param_1)(&DAT_030172e8,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_030174f0,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_030176f8,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_03017900,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_03017b08,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_03017d10,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_03017f18,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_03018120,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03018328,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_03018530,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_03018738,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_03018940,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_03018b48,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_03018d50,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03018f58,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_03019160,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_03019368,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03019570,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_03019778,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_03019980,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_03019b88,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_03019d90,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_03019f98,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0301a1a0,0x1d5,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0079153a(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_0301a378,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0301a580,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0301a788,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0301a990,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_0301ab98,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_0301ada0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0300d680,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_0300d888,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_0301afa8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0301b1b0,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0301b3b8,0x200,param_2), cVar1 != '\0')))) &&
            ((((((cVar1 = (*param_1)(&DAT_0301b5c0,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0301b7c8,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_0301b9d0,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_0300f4f8,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_0301bbd8,0x200,param_2), cVar1 != '\0')))))) &&
               (cVar1 = (*param_1)(&DAT_0301bde0,0x200,param_2), cVar1 != '\0')) &&
              ((((cVar1 = (*param_1)(&DAT_0301bfe8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0301c1f0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0301c3f8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0301c600,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0301c808,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_0301ca10,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_0301cc18,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0301ce20,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_0301d028,0x200,param_2), cVar1 != '\0' &&
            ((((((cVar1 = (*param_1)(&DAT_0301d230,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_0301d438,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_0301d640,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_0301d848,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0301da50,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_0301dc58,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0301de60,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0301e068,0x200,param_2), cVar1 != '\0')))))))) &&
          ((((cVar1 = (*param_1)(&DAT_0301e270,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0301e478,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0301e680,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0301e888,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_0301ea90,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0301ec98,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0301eea0,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_0301f0a8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0301f2b0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_0301f4b8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_0301f6c0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0301f8c8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0301fad0,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_0301fcd8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0301fee0,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_030200e8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_030202f0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_030204f8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_03020700,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_03020908,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_03020b10,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_03020d18,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_03020f20,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03021128,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_03021330,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_03021538,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03021740,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_03021948,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_03021b50,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_03021d58,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_03021f60,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_03022168,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_03022370,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_03022578,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_03022780,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03022988,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_03022b90,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_03022d98,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03022fa0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_030231a8,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_030233b0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_030235b8,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((cVar1 = (*param_1)(&DAT_030237c0,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_030239c8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_03023bd0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_03023dd8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_03023fe0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_030241e8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_030243f0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_030245f8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03024800,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_03024a08,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_03024c10,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_03024e18,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_03025020,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_03025228,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03025430,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_03025638,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_03025840,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03025a48,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_03025c50,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_03025e58,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_03026060,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_03026268,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_03026470,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03026678,0x1e0,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00791bdf(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_03026c70,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_03026e78,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_03026860,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03026a68,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_0301ab98,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_03027080,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0300e4b8,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_03027288,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_03027490,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_03027698,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_030278a0,0x200,param_2), cVar1 != '\0')))) &&
            ((((((cVar1 = (*param_1)(&DAT_03027aa8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_03027cb0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_03027eb8,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_030280c0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_030282c8,0x200,param_2), cVar1 != '\0')))))) &&
               (cVar1 = (*param_1)(&DAT_030284d0,0x200,param_2), cVar1 != '\0')) &&
              ((((cVar1 = (*param_1)(&DAT_030286d8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_030288e0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_03028ae8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_03028cf0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_03028ef8,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_03029100,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_03029308,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_03029510,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_03029718,0x200,param_2), cVar1 != '\0' &&
            ((((((cVar1 = (*param_1)(&DAT_03029920,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_03029b28,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_03029d30,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_03029f38,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0302a140,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_0302a348,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_0302a550,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0302a758,0x200,param_2), cVar1 != '\0')))))))) &&
          ((((cVar1 = (*param_1)(&DAT_0302a960,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_0302ab68,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_0302ad70,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_0302af78,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_0302b180,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0302b388,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0302b590,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_0302b798,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0302b9a0,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_0302bba8,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_0302bdb0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_0302bfb8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_0302c1c0,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_0302c3c8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0302c5d0,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_0302c7d8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_0302c9e0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0302cbe8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0302cdf0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_0302cff8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0302d200,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0302d408,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0302d610,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0302d818,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_0302da20,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0302dc28,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0302de30,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_0302e038,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_0302e240,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0302e448,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0302e650,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_0302e858,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0302ea60,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0302ec68,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0302ee70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0302f078,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_0302f280,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0302f488,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0302f690,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0302f898,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_0302faa0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0302fca8,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((cVar1 = (*param_1)(&DAT_0302feb0,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_030300b8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_030302c0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_030304c8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_030306d0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_030308d8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_03030ae0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_03030ce8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03030ef0,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_030310f8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_03031300,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_03031508,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_03031710,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_03031918,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03031b20,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_03031d28,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_03031f30,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03032138,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_03032340,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_03032548,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_03032750,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_03032958,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_03032b60,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03032d68,0x1d0,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00792284(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((((((param_1 != (code *)0x0) &&
            (cVar1 = (*param_1)(&DAT_03032f40,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_03033148,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_03033350,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03033558,0x200,param_2), cVar1 != '\0')))) &&
         (((((((cVar1 = (*param_1)(&DAT_03033760,0x200,param_2), cVar1 != '\0' &&
               ((cVar1 = (*param_1)(&DAT_03033968,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_03033b70,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_03033d78,0x200,param_2), cVar1 != '\0')) &&
             (((cVar1 = (*param_1)(&DAT_03033f80,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_03034188,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_03034390,0x200,param_2), cVar1 != '\0')))) &&
            ((((((cVar1 = (*param_1)(&DAT_03034598,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_030347a0,0x200,param_2), cVar1 != '\0')) &&
                ((cVar1 = (*param_1)(&DAT_030349a8,0x200,param_2), cVar1 != '\0' &&
                 ((cVar1 = (*param_1)(&DAT_03034bb0,0x200,param_2), cVar1 != '\0' &&
                  (cVar1 = (*param_1)(&DAT_03034db8,0x200,param_2), cVar1 != '\0')))))) &&
               (cVar1 = (*param_1)(&DAT_03034fc0,0x200,param_2), cVar1 != '\0')) &&
              ((((cVar1 = (*param_1)(&DAT_030351c8,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_030353d0,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_030355d8,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_030357e0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_030359e8,0x200,param_2), cVar1 != '\0')))))) &&
             ((cVar1 = (*param_1)(&DAT_03035bf0,0x200,param_2), cVar1 != '\0' &&
              ((cVar1 = (*param_1)(&DAT_03035df8,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_03036000,0x200,param_2), cVar1 != '\0')))))))) &&
           ((cVar1 = (*param_1)(&DAT_03036208,0x200,param_2), cVar1 != '\0' &&
            ((((((cVar1 = (*param_1)(&DAT_03036410,0x200,param_2), cVar1 != '\0' &&
                 (cVar1 = (*param_1)(&DAT_03036618,0x200,param_2), cVar1 != '\0')) &&
                (cVar1 = (*param_1)(&DAT_03036820,0x200,param_2), cVar1 != '\0')) &&
               ((cVar1 = (*param_1)(&DAT_03036a28,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_03036c30,0x200,param_2), cVar1 != '\0')))) &&
              (cVar1 = (*param_1)(&DAT_03036e38,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_03037040,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_03037248,0x200,param_2), cVar1 != '\0')))))))) &&
          ((((cVar1 = (*param_1)(&DAT_03037450,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_03037658,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_03037860,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_03037a68,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_03037c70,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_03037e78,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_03038080,0x200,param_2), cVar1 != '\0')))) &&
           (((cVar1 = (*param_1)(&DAT_03038288,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03038490,0x200,param_2), cVar1 != '\0')) &&
            (((cVar1 = (*param_1)(&DAT_03038698,0x200,param_2), cVar1 != '\0' &&
              (((cVar1 = (*param_1)(&DAT_030388a0,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_03038aa8,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_03038cb0,0x200,param_2), cVar1 != '\0')))) &&
             ((cVar1 = (*param_1)(&DAT_03038eb8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_030390c0,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_030392c8,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_030394d0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_030396d8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_030398e0,0x200,param_2), cVar1 != '\0' &&
           ((((cVar1 = (*param_1)(&DAT_03039ae8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_03039cf0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_03039ef8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0303a100,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0303a308,0x200,param_2), cVar1 != '\0')))))))))))) &&
       ((((cVar1 = (*param_1)(&DAT_0303a510,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_0303a718,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0303a920,0x200,param_2), cVar1 != '\0')))) &&
         ((cVar1 = (*param_1)(&DAT_0303ab28,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_0303ad30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0303af38,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0303b140,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_0303b348,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0303b550,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0303b758,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0303b960,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0303bb68,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_0303bd70,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_0303bf78,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0303c180,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0303c388,0x200,param_2), cVar1 != '\0')))) &&
          ((cVar1 = (*param_1)(&DAT_0303c590,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0303c798,0x200,param_2), cVar1 != '\0')))))))))) &&
      ((cVar1 = (*param_1)(&DAT_0303c9a0,0x200,param_2), cVar1 != '\0' &&
       (((cVar1 = (*param_1)(&DAT_0303cba8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0303cdb0,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0303cfb8,0x200,param_2), cVar1 != '\0' &&
         ((((cVar1 = (*param_1)(&DAT_0303d1c0,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0303d3c8,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0303d5d0,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0303d7d8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0303d9e0,0x200,param_2), cVar1 != '\0')))))))))))) &&
     (((cVar1 = (*param_1)(&DAT_0303dbe8,0x200,param_2), cVar1 != '\0' &&
       ((cVar1 = (*param_1)(&DAT_0303ddf0,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_0303dff8,0x200,param_2), cVar1 != '\0')))) &&
      ((((cVar1 = (*param_1)(&DAT_0303e200,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_0303e408,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0303e610,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0303e818,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_0303ea20,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0303ec28,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_0303ee30,0x200,param_2), cVar1 != '\0')))) &&
       (((cVar1 = (*param_1)(&DAT_0303f038,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0303f240,0x200,param_2), cVar1 != '\0')) &&
        ((cVar1 = (*param_1)(&DAT_0303f448,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_0303f650,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0303f858,0x1c7,param_2), cVar1 != '\0')))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00792929(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((((((((param_1 != (code *)0x0) &&
             (cVar1 = (*param_1)(&DAT_0303fe30,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_03040038,0x200,param_2), cVar1 != '\0')) &&
           (((cVar1 = (*param_1)(&DAT_03040240,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03040448,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_03040650,0x200,param_2), cVar1 != '\0' &&
             ((cVar1 = (*param_1)(&DAT_03040858,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_03040a60,0x200,param_2), cVar1 != '\0')))))))) &&
          (cVar1 = (*param_1)(&DAT_03040c68,0x200,param_2), cVar1 != '\0')) &&
         (((((cVar1 = (*param_1)(&DAT_03040e70,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03041078,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_03041280,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_03041488,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_03041690,0x200,param_2), cVar1 != '\0')))) &&
          (cVar1 = (*param_1)(&DAT_03041898,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_03041aa0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03041ca8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_03041eb0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_030420b8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_030422c0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_030424c8,0x200,param_2), cVar1 != '\0')))))))) &&
       (((((((cVar1 = (*param_1)(&DAT_030426d0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0303fa20,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_0303fc28,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_030428d8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_03042ae0,0x200,param_2), cVar1 != '\0')))) &&
          (((cVar1 = (*param_1)(&DAT_03042ce8,0x200,param_2), cVar1 != '\0' &&
            (((cVar1 = (*param_1)(&DAT_03042ef0,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_030430f8,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_03043300,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_03043508,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_03043710,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_03043918,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_03043b20,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_03043d28,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_03043f30,0x200,param_2), cVar1 != '\0' &&
            ((((cVar1 = (*param_1)(&DAT_03044138,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_03044340,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_03044548,0x200,param_2), cVar1 != '\0')) &&
             ((cVar1 = (*param_1)(&DAT_03044750,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_03044958,0x200,param_2), cVar1 != '\0')))))))))))) &&
        ((cVar1 = (*param_1)(&DAT_03044b60,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_03044d68,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03044f70,0x200,param_2), cVar1 != '\0')))))))) &&
      ((((cVar1 = (*param_1)(&DAT_03045178,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_03045380,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03045588,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_03045790,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_03045998,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03045ba0,0x200,param_2), cVar1 != '\0')) &&
         (cVar1 = (*param_1)(&DAT_03045da8,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_03045fb0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_030461b8,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_030463c0,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_030465c8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_030467d0,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_030469d8,0x200,param_2), cVar1 != '\0')))))) &&
         ((cVar1 = (*param_1)(&DAT_03046be0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03046de8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_03046ff0,0x200,param_2), cVar1 != '\0' &&
          ((((cVar1 = (*param_1)(&DAT_030471f8,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03047400,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_03047608,0x200,param_2), cVar1 != '\0' &&
             ((((cVar1 = (*param_1)(&DAT_03047810,0x200,param_2), cVar1 != '\0' &&
                (cVar1 = (*param_1)(&DAT_03047a18,0x200,param_2), cVar1 != '\0')) &&
               (cVar1 = (*param_1)(&DAT_03047c20,0x200,param_2), cVar1 != '\0')) &&
              ((cVar1 = (*param_1)(&DAT_03047e28,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_03048030,0x200,param_2), cVar1 != '\0')))))))) &&
           (cVar1 = (*param_1)(&DAT_03048238,0x200,param_2), cVar1 != '\0')))) &&
         (((cVar1 = (*param_1)(&DAT_03048440,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03048648,0x200,param_2), cVar1 != '\0')) &&
          ((((cVar1 = (*param_1)(&DAT_03048850,0x200,param_2), cVar1 != '\0' &&
             (((cVar1 = (*param_1)(&DAT_03048a58,0x200,param_2), cVar1 != '\0' &&
               (cVar1 = (*param_1)(&DAT_03048c60,0x200,param_2), cVar1 != '\0')) &&
              (cVar1 = (*param_1)(&DAT_03048e68,0x200,param_2), cVar1 != '\0')))) &&
            (((cVar1 = (*param_1)(&DAT_03049070,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_03049278,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_03049480,0x200,param_2), cVar1 != '\0')))) &&
           ((cVar1 = (*param_1)(&DAT_03049688,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_03049890,0x200,param_2), cVar1 != '\0')))))))))))))) &&
     (((((cVar1 = (*param_1)(&DAT_03049a98,0x200,param_2), cVar1 != '\0' &&
         (((cVar1 = (*param_1)(&DAT_03049ca0,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03049ea8,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_0304a0b0,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_0304a2b8,0x200,param_2), cVar1 != '\0' &&
         (cVar1 = (*param_1)(&DAT_0304a4c0,0x200,param_2), cVar1 != '\0')))) &&
       ((cVar1 = (*param_1)(&DAT_0304a6c8,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_0304a8d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0304aad8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0304ace0,0x200,param_2), cVar1 != '\0' &&
          (((((cVar1 = (*param_1)(&DAT_0304aee8,0x200,param_2), cVar1 != '\0' &&
              (cVar1 = (*param_1)(&DAT_0304b0f0,0x200,param_2), cVar1 != '\0')) &&
             (cVar1 = (*param_1)(&DAT_0304b2f8,0x200,param_2), cVar1 != '\0')) &&
            ((cVar1 = (*param_1)(&DAT_0304b500,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0304b708,0x200,param_2), cVar1 != '\0')))) &&
           (cVar1 = (*param_1)(&DAT_0304b910,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((((cVar1 = (*param_1)(&DAT_0304bb18,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_0304bd20,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_0304bf28,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_0304c130,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0304c338,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0304c540,0x200,param_2), cVar1 != '\0')))))) &&
        (((((cVar1 = (*param_1)(&DAT_0304c748,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0304c950,0x200,param_2), cVar1 != '\0')) &&
           ((cVar1 = (*param_1)(&DAT_0304cb58,0x200,param_2), cVar1 != '\0' &&
            ((cVar1 = (*param_1)(&DAT_0304cd60,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_0304cf68,0x200,param_2), cVar1 != '\0')))))) &&
          (cVar1 = (*param_1)(&DAT_0304d170,0x200,param_2), cVar1 != '\0')) &&
         ((((cVar1 = (*param_1)(&DAT_0304d378,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_0304d580,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_0304d788,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_0304d990,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_0304db98,0x200,param_2), cVar1 != '\0')))))))) &&
       (cVar1 = (*param_1)(&DAT_0304dda0,0x130,param_2), cVar1 != '\0')))))) {
    return 1;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007930ab(undefined4 *param_1)

{
  char cVar1;
  undefined auStack_48 [28];
  undefined4 uStack_2c;
  undefined *local_18;
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 1;
  *param_1 = 0;
  param_1[1] = 0;
  local_18 = auStack_48;
  local_14 = 1;
  FUN_00672a11();
  cVar1 = FUN_00793105(param_1);
  if (cVar1 == '\0') {
    uStack_2c = 0x7930f1;
    FUN_0074ca40();
  }
  local_8 = local_8 & 0xffffff00;
  uStack_2c = 0x7930fd;
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007931da)

uint FUN_00793105(void)

{
  char cVar1;
  uint uVar2;
  undefined *extraout_ECX;
  undefined auStack_58 [16];
  undefined *puStack_48;
  int *piStack_44;
  undefined4 local_40;
  undefined *local_3c;
  undefined4 local_28;
  int local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined local_18 [4];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0;
  local_3c = (undefined *)0x200;
  local_40 = 0x793122;
  FUN_00b743c0();
  local_14 = (undefined4 *)auStack_58;
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_00672a11();
  cVar1 = FUN_00bbfd10(local_28);
  if (cVar1 == '\0') {
    local_3c = (undefined *)0xf911ddc7;
    local_40 = 0x793156;
    FUN_00b940e0();
  }
  local_20 = 0;
  local_1c = 0;
  local_8._0_1_ = 2;
  if (cVar1 == '\0') {
    local_1c = 0;
    local_20 = 0;
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_24 != 0) {
      local_3c = (undefined *)0x7931ef;
      FUN_0040127a();
    }
    local_8 = 0xffffffff;
    local_3c = (undefined *)0x7931fb;
    uVar2 = FUN_00507e58();
    return uVar2 & 0xffffff00;
  }
  local_3c = local_18;
  local_40 = 0x793170;
  FUN_00793260();
  local_8._0_1_ = 3;
  local_3c = (undefined *)0x79317d;
  FUN_004fe47e();
  local_8 = CONCAT31(local_8._1_3_,2);
  if (local_14 != (undefined4 *)0x0) {
    local_3c = (undefined *)0x79318d;
    FUN_0040127a();
    local_14 = (undefined4 *)extraout_ECX;
  }
  local_40 = local_28;
  piStack_44 = &local_24;
                    // WARNING: Subroutine does not return
  puStack_48 = &UNK_007931a5;
  local_3c = (undefined *)local_14;
  local_14 = &local_40;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00793203(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8E975A95::W5B29B86B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00793249(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00793260(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x40);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00b7a9bf(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00793203(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



undefined4 FUN_00793319(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_0304df38,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_0304e140,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_0304e348,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_0304e550,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_0304e758,0xdf,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0079337f(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if ((((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_0304e838,0x200,param_2), cVar1 != '\0')
       ) && (cVar1 = (*param_1)(&DAT_0304ea40,0x200,param_2), cVar1 != '\0')) &&
     (((cVar1 = (*param_1)(&DAT_0304ec48,0x200,param_2), cVar1 != '\0' &&
       (cVar1 = (*param_1)(&DAT_0304ee50,0x200,param_2), cVar1 != '\0')) &&
      (cVar1 = (*param_1)(&DAT_0304f058,500,param_2), cVar1 != '\0')))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0079340c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_0304f418,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_0304f61c,0x1d,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00793445(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_0304f640,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_0304f844,0x16,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0079347e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_0304f860,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_0304f844,0x16,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007934de(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_0304fc38,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_0304fe3c,0x13,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0079358c(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_030503a8,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_030505ac,0x1c,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007935c5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((((param_1 != (code *)0x0) &&
        (cVar1 = (*param_1)(&DAT_030505d0,0x200,param_2), cVar1 != '\0')) &&
       (cVar1 = (*param_1)(&DAT_030507d8,0x200,param_2), cVar1 != '\0')) &&
      (((((cVar1 = (*param_1)(&DAT_030509e0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03050be8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_03050df0,0x200,param_2), cVar1 != '\0' &&
          ((cVar1 = (*param_1)(&DAT_03050ff8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03051200,0x200,param_2), cVar1 != '\0')))))) &&
        (cVar1 = (*param_1)(&DAT_03051408,0x200,param_2), cVar1 != '\0')) &&
       (((((cVar1 = (*param_1)(&DAT_03051610,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03051818,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_03051a20,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_03051c28,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03051e30,0x200,param_2), cVar1 != '\0')))) &&
        ((cVar1 = (*param_1)(&DAT_03052038,0x200,param_2), cVar1 != '\0' &&
         ((cVar1 = (*param_1)(&DAT_03052240,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03052448,0x200,param_2), cVar1 != '\0')))))))))) &&
     ((((cVar1 = (*param_1)(&DAT_03052650,0x200,param_2), cVar1 != '\0' &&
        (((((cVar1 = (*param_1)(&DAT_03052858,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_03052a60,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_03052c68,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_03052e70,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03053078,0x200,param_2), cVar1 != '\0')))) &&
         (cVar1 = (*param_1)(&DAT_03053280,0x200,param_2), cVar1 != '\0')))) &&
       (((((cVar1 = (*param_1)(&DAT_03053488,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_03053690,0x200,param_2), cVar1 != '\0')) &&
          ((cVar1 = (*param_1)(&DAT_03053898,0x200,param_2), cVar1 != '\0' &&
           (((cVar1 = (*param_1)(&DAT_03053aa0,0x200,param_2), cVar1 != '\0' &&
             (cVar1 = (*param_1)(&DAT_03053ca8,0x200,param_2), cVar1 != '\0')) &&
            (cVar1 = (*param_1)(&DAT_03053eb0,0x200,param_2), cVar1 != '\0')))))) &&
         (((cVar1 = (*param_1)(&DAT_030540b8,0x200,param_2), cVar1 != '\0' &&
           (cVar1 = (*param_1)(&DAT_030542c0,0x200,param_2), cVar1 != '\0')) &&
          (cVar1 = (*param_1)(&DAT_030544c8,0x200,param_2), cVar1 != '\0')))) &&
        (((cVar1 = (*param_1)(&DAT_030546d0,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_030548d8,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_03054ae0,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_03054ce8,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_03054ef0,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_030550f8,0x200,param_2), cVar1 != '\0')))))))))) &&
      (((cVar1 = (*param_1)(&DAT_03055300,0x200,param_2), cVar1 != '\0' &&
        (cVar1 = (*param_1)(&DAT_03055508,0x200,param_2), cVar1 != '\0')) &&
       ((cVar1 = (*param_1)(&DAT_03055710,0x200,param_2), cVar1 != '\0' &&
        (((cVar1 = (*param_1)(&DAT_03055918,0x200,param_2), cVar1 != '\0' &&
          (cVar1 = (*param_1)(&DAT_03055b20,0x200,param_2), cVar1 != '\0')) &&
         ((cVar1 = (*param_1)(&DAT_03055d28,0x200,param_2), cVar1 != '\0' &&
          (((cVar1 = (*param_1)(&DAT_03055f30,0x200,param_2), cVar1 != '\0' &&
            (cVar1 = (*param_1)(&DAT_03056138,0x200,param_2), cVar1 != '\0')) &&
           (cVar1 = (*param_1)(&DAT_03056340,0xc5,param_2), cVar1 != '\0')))))))))))))) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007938e5(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_03056408,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_030505ac,0x1c,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0079391e(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_03056610,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_03056814,0x1f,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00793957(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_03056838,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_03056a3c,0x1b,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00793990(code *param_1,undefined4 param_2)

{
  char cVar1;
  
  if (((param_1 != (code *)0x0) && (cVar1 = (*param_1)(&DAT_03056a58,0x200,param_2), cVar1 != '\0'))
     && (cVar1 = (*param_1)(&DAT_03056c5c,0x1c,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007939c9(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = W88DE69F8::WC636A2BB::vftable;
  *(undefined *)(param_1 + 1) = 0;
  *(undefined *)((int)param_1 + 10) = 0;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 4);
  }
  param_1[4] = piVar1;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  return param_1;
}



undefined4 __thiscall FUN_00793a19(undefined4 param_1_00,byte param_1)

{
  FUN_00793a35();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00793a35(undefined4 *param_1)

{
  *param_1 = W88DE69F8::WC636A2BB::vftable;
  FUN_007b3ae8(param_1 + 4);
  if (*(char *)((int)param_1 + 10) != '\0') {
    *(undefined *)((int)param_1 + 10) = 0;
  }
  if (*(char *)(param_1 + 1) != '\0') {
    *(undefined *)(param_1 + 1) = 0;
  }
  return;
}



void FUN_00793b8e(void)

{
  char *in_EAX;
  
  if (*in_EAX != '\0') {
    *in_EAX = '\0';
  }
  return;
}



void FUN_00793bc1(undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 *unaff_EDI;
  undefined local_10 [12];
  
  uVar1 = unaff_EDI[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(unaff_EDI[5] - uVar1) >> 3;
  }
  uVar2 = unaff_EDI[4];
  if ((uint)((int)(uVar2 - uVar1) >> 3) < uVar3) {
    uVar4 = FUN_00478fca(param_1);
    unaff_EDI[4] = uVar4;
  }
  else {
    if (uVar2 < uVar1) {
      FUN_00a3fb10();
    }
    FUN_00793c1b(local_10,param_1,*unaff_EDI,uVar2);
  }
  return;
}



void FUN_00793c1b(int **param_1,undefined4 param_2,int *param_3,int param_4)

{
  int *piVar1;
  int *piVar2;
  int **in_EAX;
  int iVar3;
  int iVar4;
  
  piVar1 = in_EAX[3];
  if (((int)in_EAX[4] - (int)piVar1 & 0xfffffff8U) == 0) {
    iVar4 = 0;
  }
  else {
    if (in_EAX[4] < piVar1) {
      FUN_00a3fb10();
    }
    if ((param_3 == (int *)0x0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    iVar4 = param_4 - (int)piVar1 >> 3;
  }
  FUN_0046e3e3();
  piVar1 = in_EAX[3];
  if (in_EAX[4] < piVar1) {
    FUN_00a3fb10();
  }
  piVar2 = *in_EAX;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar2;
  }
  piVar1 = piVar1 + iVar4 * 2;
  if (piVar1 <= *(int **)(iVar3 + 0x10)) {
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *piVar2;
    }
    if (*(int **)(iVar4 + 0xc) <= piVar1) goto LAB_00793cae;
  }
  FUN_00a3fb10();
LAB_00793cae:
  param_1[1] = piVar1;
  *param_1 = piVar2;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00793da7(undefined4 param_1,int param_2)

{
  int iVar1;
  uint local_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined local_24 [12];
  uint *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x793db3;
  uStack_38 = 0;
  uStack_3c = 0;
  uStack_40 = 0;
  local_18 = &local_44;
  local_44 = 0;
  iVar1 = FUN_00443a80(local_24,param_2,param_2 >> 0x1f);
  local_8 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00793e55(undefined4 param_1,undefined4 param_2,undefined2 param_3)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c25614;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0046b0e8(local_20,param_3,0);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_00793fd1(undefined4 param_1,undefined4 param_2,undefined2 param_3)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c25614;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0046b0e8(local_20,param_3,0);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0079414d(void)

{
  int **ppiVar1;
  int **unaff_ESI;
  undefined4 auStack_90 [2];
  undefined4 uStack_88;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_68 [60];
  int local_2c;
  undefined4 local_28;
  undefined4 local_24 [2];
  undefined4 *local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x58;
  local_28 = 0;
  local_24[0] = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  ppiVar1 = (int **)(**(code **)(**unaff_ESI + 0x48))();
  local_8._0_1_ = 2;
  local_15 = (**(code **)(**ppiVar1 + 4))();
  local_8._0_1_ = 1;
  if (local_1c != (undefined4 *)0x0) {
    FUN_0040127a();
  }
  if (local_15 == '\0') {
    uStack_88 = 0x79421d;
    FUN_0046f52f();
    local_8._0_1_ = 6;
    FUN_005d11c9();
    local_8 = CONCAT31(local_8._1_3_,1);
    if (local_2c != 0) {
      FUN_0040127a();
    }
  }
  else {
    uStack_88 = 0x7941a5;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_68,&DAT_00dd9a44,4);
    local_8._0_1_ = 3;
    local_1c = (undefined4 *)0x69518b10;
    uStack_88 = 0x7941c8;
    FUN_00b94330();
    local_8._0_1_ = 4;
    uStack_88 = 0x7941d6;
    FUN_00467341();
    local_8._0_1_ = 5;
    FUN_005d11c9();
    local_8._0_1_ = 4;
    if (local_2c != 0) {
      FUN_0040127a();
    }
    uStack_88 = 0x794200;
    FUN_004017b2();
    local_8 = CONCAT31(local_8._1_3_,1);
    uStack_88 = 0x79420f;
    FUN_004017b2();
  }
  uStack_88 = 0;
  local_1c = auStack_90;
  auStack_90[0] = local_28;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_24);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007942cf(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7942db;
  local_18 = &local_38;
  local_38 = 0x5022;
  local_34 = 0x9f;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



bool FUN_00794560(void)

{
  char cVar1;
  int *in_EAX;
  int *unaff_ESI;
  undefined4 uVar2;
  char local_5;
  
  local_5 = in_EAX[2] != 0;
  if (!(bool)local_5) {
    uVar2 = 0x36783e53;
    goto LAB_0079461b;
  }
  if (*in_EAX == 0) {
LAB_007945cf:
    if (local_5 == '\0') {
      return false;
    }
  }
  else {
    *(undefined *)(unaff_ESI + 8) = 1;
    cVar1 = (**(code **)(*unaff_ESI + 0x194))(*in_EAX);
    if (cVar1 == '\0') {
      uVar2 = 0xa757963b;
      local_5 = false;
      goto LAB_0079461b;
    }
    local_5 = FUN_00794628();
    if (local_5 == '\0') {
      FUN_00b940e0(0x964c53cc);
      goto LAB_007945cf;
    }
  }
  if (in_EAX[2] == 0) {
    return (bool)local_5;
  }
  *(undefined *)(unaff_ESI + 8) = 2;
  cVar1 = (**(code **)(*unaff_ESI + 0x194))(in_EAX[2]);
  if (cVar1 == '\0') {
    uVar2 = 0xe1e426da;
    local_5 = false;
  }
  else {
    cVar1 = FUN_00794628();
    if (cVar1 != '\0') {
      return (bool)cVar1;
    }
    uVar2 = 0x3d93d579;
    local_5 = false;
  }
LAB_0079461b:
  FUN_00b940e0(uVar2);
  return (bool)local_5;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00794628(void)

{
  char cVar1;
  undefined local_54 [32];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_34 [24];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x794634;
  cVar1 = FUN_0079477f();
  if (cVar1 == '\0') {
    FUN_00b940e0(0xf551070e);
  }
  else {
    local_1c = 0xf;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
              (local_34,0);
    local_8 = 0;
    FUN_007fdde2(local_54);
    local_8 = CONCAT31(local_8._1_3_,1);
    cVar1 = FUN_007947e8(local_34,local_54);
    if (cVar1 == '\0') {
      FUN_00b940e0(0xf969cb71);
    }
    local_8 = local_8 & 0xffffff00;
    FUN_0049c7cb(local_54);
    FUN_004017b2(1,0);
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined __fastcall FUN_0079477f(int *param_1)

{
  char cVar1;
  undefined uVar2;
  int *unaff_ESI;
  undefined local_1c [4];
  undefined4 *local_18;
  undefined local_13;
  undefined local_12;
  undefined local_11 [9];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_18 = (undefined4 *)0x0;
  local_8 = 0;
  cVar1 = (**(code **)(*param_1 + 8))(&local_13,local_1c,&local_12,local_11,&local_18);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xd639d323);
    uVar2 = 0;
  }
  else {
    uVar2 = (**(code **)(*unaff_ESI + 0x24))(100);
  }
  local_8 = 0xffffffff;
  if (local_18 != (undefined4 *)0x0) {
    (**(code **)*local_18)(1);
  }
  return uVar2;
}



char FUN_007947e8(undefined4 param_1)

{
  char cVar1;
  int *unaff_ESI;
  undefined4 uVar2;
  
  cVar1 = (**(code **)(*unaff_ESI + 0x144))(param_1);
  if (cVar1 == '\0') {
    uVar2 = 0x786f682d;
  }
  else {
    cVar1 = (**(code **)(*unaff_ESI + 0x154))(param_1);
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0xf9a1ac1d;
  }
  FUN_00b940e0(uVar2);
  return '\0';
}



bool __thiscall FUN_00794a05(undefined4 param_1_00,int param_1,undefined4 param_2)

{
  char cVar1;
  int *unaff_ESI;
  bool bVar2;
  undefined4 uVar3;
  undefined4 local_8;
  
  bVar2 = -1 < param_1;
  if (bVar2) {
    local_8 = param_2;
    FUN_00793da7(&local_8,param_1);
    cVar1 = (**(code **)(*unaff_ESI + 0x204))(param_1);
    if (cVar1 != '\0') {
      return (bool)cVar1;
    }
    uVar3 = 0xeb28e1b5;
    bVar2 = false;
  }
  else {
    uVar3 = 0xa87ad7e0;
    local_8 = param_1_00;
  }
  FUN_00b940e0(uVar3);
  return bVar2;
}



char FUN_00794a5e(void)

{
  char cVar1;
  int *unaff_ESI;
  
  FUN_007b4e48(&stack0xfffffff4);
  *(undefined *)(unaff_ESI + 8) = 2;
  cVar1 = (**(code **)(*unaff_ESI + 0x22c))();
  if (cVar1 == '\0') {
    FUN_00b940e0(0xf0c1291f);
    FUN_007b7af2(&stack0xfffffff4);
  }
  return cVar1;
}



char FUN_00794aa8(void)

{
  char cVar1;
  int *unaff_ESI;
  undefined local_8 [4];
  
  FUN_007d95f7(local_8);
  *(undefined *)(unaff_ESI + 8) = 2;
  cVar1 = (**(code **)(*unaff_ESI + 0x20c))();
  if (cVar1 == '\0') {
    FUN_00b940e0(0xd1963444);
  }
  return cVar1;
}



char FUN_00794c3d(undefined4 param_1)

{
  char cVar1;
  int *in_EAX;
  int *unaff_ESI;
  
  FUN_007b48d0(&stack0xfffffff8);
  cVar1 = (**(code **)(*in_EAX + 0x13c))(0);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x8dd8bb1f);
  }
  else {
    (**(code **)(*unaff_ESI + 0x24))(param_1);
  }
  return cVar1;
}



char FUN_00794c85(void)

{
  char cVar1;
  int *unaff_ESI;
  undefined local_8 [4];
  
  FUN_007b4f22(local_8);
  cVar1 = (**(code **)(*unaff_ESI + 0x1a0))(0);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x9c24bd04);
  }
  return cVar1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_00794cc0(undefined4 param_1_00,int *param_2,undefined4 param_1)

{
  undefined4 *local_3c;
  short local_38 [3];
  char local_31;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x794ccc;
  FUN_00688539();
  local_3c = (undefined4 *)0x0;
  local_8 = 0;
  local_31 = (**(code **)(*param_2 + 0x2e4))(local_38,&local_3c,param_1);
  if (local_31 == '\0') {
    FUN_00b940e0(0x944aedcf);
  }
  else {
    local_18 = 0xf;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
              (local_30,0);
    local_8 = CONCAT31(local_8._1_3_,1);
    if (local_38[0] == 0) {
      local_31 = FUN_00bb6b50(local_30,local_3c,1);
      if (local_31 != '\0') {
        FUN_0062d568(local_30);
      }
    }
    FUN_004017b2(1,0);
  }
  local_8 = 0xffffffff;
  if (local_3c != (undefined4 *)0x0) {
    (**(code **)*local_3c)(1);
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_00794d6d(undefined4 param_1_00,int *param_2,undefined4 param_1)

{
  undefined4 *local_3c;
  short local_38 [3];
  char local_31;
  undefined local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x794d79;
  FUN_00417f97();
  local_3c = (undefined4 *)0x0;
  local_8 = 0;
  local_31 = (**(code **)(*param_2 + 0x2e4))(local_38,&local_3c,param_1);
  if (local_31 == '\0') {
    FUN_00b940e0(0xf6395c6f);
  }
  else {
    local_18 = 7;
    FUN_0040180b(0);
    local_8 = CONCAT31(local_8._1_3_,1);
    if (local_38[0] == 0) {
      local_31 = FUN_00bb6a10(local_30,local_3c);
      if (local_31 != '\0') {
        FUN_0040cafb(local_30);
      }
    }
    FUN_00401829(1,0);
  }
  local_8 = 0xffffffff;
  if (local_3c != (undefined4 *)0x0) {
    (**(code **)*local_3c)(1);
  }
  FUN_00a421fb();
  return;
}



void FUN_00794e17(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x11) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x11) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x11) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x11) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00794e64(undefined4 *param_1,undefined4 param_2)

{
  int *piVar1;
  
  FUN_00b72980(param_1);
  *param_1 = W88DE69F8::W739360CD::vftable;
  FUN_00444db7(param_1 + 0x10);
  param_1[0x10] =
       boost::signals2::
       signal<void___cdecl(void),class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(void)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&)>,class_boost::signals2::mutex>
       ::vftable;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 0x14);
  }
  param_1[0x14] = piVar1;
  param_1[0x17] = 0;
  param_1[0x18] = 0;
  param_1[0x19] = 0;
  *(undefined *)(param_1 + 0x1a) = 0;
  *(undefined *)((int)param_1 + 0x69) = 0;
  *(undefined *)((int)param_1 + 0x6a) = 0;
  param_1[0x1b] = param_2;
  param_1[0x1c] = 0;
  param_1[0x1d] = 0;
  FUN_00453ddc(param_1 + 0x1e);
  return param_1;
}



undefined4 __thiscall FUN_00794eeb(undefined4 param_1,byte param_2)

{
  FUN_00794f07();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_00794f07(undefined4 *param_1)

{
  char local_1c;
  
  *param_1 = W88DE69F8::W739360CD::vftable;
  FUN_00b72ae0();
  FUN_0043d406(param_1 + 0x1c);
  FUN_007ff052();
  if (local_1c != '\0') {
    FUN_00401477();
  }
  FUN_00794f6e();
  return;
}



undefined * Catch_All_00794f5e(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 4;
  return &DAT_00794f6b;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00794f6e(void)

{
  int unaff_EBX;
  int unaff_EBP;
  
  FUN_0042bd98();
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 1;
  FUN_00795834(unaff_EBX + 0x50);
  *(undefined *)(unaff_EBP + -4) = 0;
  FUN_0044613e();
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00b72bf0();
  return;
}



void FUN_00795058(uint param_1)

{
  int in_EAX;
  int iVar1;
  undefined4 *unaff_EDI;
  
  if (param_1 < (uint)((*(int *)(in_EAX + 0x60) - *(int *)(in_EAX + 0x5c)) / 0x2c)) {
    iVar1 = FUN_007fefc7(param_1);
    *unaff_EDI = *(undefined4 *)(iVar1 + 0x24);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 0x28);
  }
  *unaff_EDI = 0;
  unaff_EDI[1] = 0;
  return;
}



void FUN_0079509b(void)

{
  uint in_EAX;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_EBX;
  int unaff_ESI;
  
  if (in_EAX < (uint)((*(int *)(unaff_ESI + 0x60) - *(int *)(unaff_ESI + 0x5c)) / 0x2c)) {
    if ((uint)((*(int *)(unaff_ESI + 0x60) - *(int *)(unaff_ESI + 0x5c)) / 0x2c) <= in_EAX) {
      FUN_00a3fb10();
    }
    basic_string<>(in_EAX * 0x2c + 8 + *(int *)(unaff_ESI + 0x5c));
  }
  else {
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_EBX)
    ;
  }
  return;
}



void __fastcall FUN_007950e6(int *param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  char cVar4;
  int iVar5;
  undefined4 local_e4 [4];
  undefined *puStack_d4;
  int *piStack_d0;
  int *piStack_cc;
  int *piStack_c8;
  uint uStack_c4;
  undefined auStack_b4 [3];
  char local_b1;
  uint local_b0;
  int **local_ac;
  undefined uStack_a7;
  undefined local_a6;
  undefined local_a5;
  int *local_a4;
  int iStack_a0;
  int *local_9c;
  int local_98;
  int iStack_94;
  undefined auStack_90 [8];
  uint local_88;
  char local_80;
  char local_78;
  char cStack_70;
  int *local_64;
  code *local_60;
  undefined4 local_5c;
  int *local_58;
  undefined4 uStack_54;
  int *local_4c;
  code *local_48;
  undefined4 uStack_44;
  int *piStack_40;
  undefined4 uStack_3c;
  undefined local_38 [20];
  int local_24;
  undefined4 local_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5fbba;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_b4;
  uStack_c4 = DAT_0323f878 ^ (uint)&stack0xffffff40;
  ExceptionList = &local_14;
  piStack_c8 = param_1 + 0x1c;
  piStack_cc = (int *)0x795135;
  FUN_0043d406();
  *(undefined *)(param_1 + 0x1a) = 1;
  if (local_80 != '\0') {
    piStack_c8 = (int *)0x795149;
    FUN_00401477();
  }
  local_88 = (param_1[0x18] - param_1[0x17]) / 0x2c;
  local_b0 = 0;
  local_b1 = '\x01';
  while (uVar2 = local_b0, local_b0 < local_88) {
    piStack_c8 = (int *)0x10000;
    piStack_cc = (int *)0x79517f;
    FUN_00b743c0();
    local_c = 0;
    local_9c = (int *)0x0;
    local_98 = 0;
    piStack_c8 = (int *)0x0;
    local_20 = 7;
    piStack_cc = (int *)0x7951a9;
    FUN_0040180b();
    piStack_c8 = param_1 + 0x1c;
    local_c._0_1_ = 2;
    piStack_cc = (int *)0x7951be;
    FUN_0043d406();
    piStack_c8 = (int *)uVar2;
    local_c._0_1_ = 3;
    piStack_cc = (int *)0x7951cf;
    FUN_007fefc7();
    piStack_c8 = (int *)0x7951d8;
    FUN_004fe47e();
    piStack_c8 = (int *)local_b0;
    piStack_cc = (int *)0x7951e4;
    iVar5 = FUN_007fefc7();
    piStack_c8 = (int *)0xffffffff;
    piStack_d0 = (int *)(iVar5 + 8);
    piStack_cc = (int *)0x0;
    puStack_d4 = (undefined *)0x7951f9;
    FID_conflict_assign();
    local_c = CONCAT31(local_c._1_3_,2);
    if (local_78 != '\0') {
      piStack_c8 = (int *)0x795211;
      FUN_00401477();
    }
    if (local_24 != 0) {
      piStack_c8 = (int *)local_38;
      piStack_d0 = (int *)0x795228;
      piStack_cc = param_1;
      FUN_007fe8f6();
    }
    piStack_c8 = (int *)0x79522f;
    cVar4 = FUN_00b72540();
    if (cVar4 == '\0') {
      local_60 = FUN_00b72540;
      local_ac = (int **)local_e4;
      local_e4[0] = 0;
      local_a5 = 0;
      local_5c = 0;
      local_48 = FUN_00b72540;
      uStack_44 = 0;
      uStack_3c = uStack_54;
      local_64 = param_1;
      local_58 = param_1;
      local_4c = param_1;
      piStack_40 = param_1;
      cVar4 = FUN_007f2630(&local_48);
      puVar3 = local_ac;
      if (cVar4 == '\0') {
        local_a6 = 0;
        if (local_ac + 2 != (int **)0x0) {
          puVar1 = local_ac + 3;
          local_ac[2] = (int *)local_48;
          *puVar1 = uStack_44;
          puVar3[4] = piStack_40;
          puVar3[5] = uStack_3c;
        }
        *puVar3 = &DAT_03056c85;
      }
      else {
        *local_ac = (int *)0x0;
      }
      cVar4 = (**(code **)(*local_9c + 4))(local_a4);
      local_b1 = '\x01';
      if (cVar4 == '\0') goto LAB_007952de;
    }
    else {
LAB_007952de:
      local_b1 = '\0';
    }
    piStack_c8 = (int *)0x7952ea;
    cVar4 = FUN_00b72540();
    if (cVar4 != '\0') {
      piStack_c8 = (int *)0x0;
      piStack_cc = (int *)0x1;
      piStack_d0 = (int *)0x79542d;
      FUN_00401829();
      local_c = local_c & 0xffffff00;
      if (local_98 != 0) {
        piStack_c8 = (int *)0x795442;
        FUN_0040127a();
      }
      local_c = 0xffffffff;
      if (iStack_a0 != 0) {
        piStack_c8 = (int *)0x795457;
        FUN_0040127a();
      }
      break;
    }
    if (local_b1 != '\0') {
      piStack_c8 = (int *)0x0;
      piStack_cc = (int *)0x0;
      piStack_d0 = (int *)0x795309;
      local_b1 = (**(code **)(*local_a4 + 0x28))();
      if (local_b1 != '\0') {
        piStack_c8 = (int *)auStack_90;
        piStack_cc = (int *)0x79531f;
        FUN_00793260();
        local_ac = &piStack_cc;
        local_c = CONCAT31(local_c._1_3_,4);
        uStack_a7 = 0;
        piStack_cc = local_a4;
        piStack_d0 = &iStack_a0;
                    // WARNING: Subroutine does not return
        puStack_d4 = &UNK_00795348;
        FUN_0043c023();
      }
    }
    iStack_94 = param_1[0x1b];
    piStack_c8 = (int *)local_38;
    piStack_cc = &iStack_94;
    piStack_d0 = (int *)0x7953d2;
    FUN_007b7f92();
    piStack_c8 = (int *)0x0;
    piStack_cc = (int *)0x1;
    piStack_d0 = (int *)0x7953e2;
    FUN_00401829();
    local_c = local_c & 0xffffff00;
    if (local_98 != 0) {
      piStack_c8 = (int *)0x7953f7;
      FUN_0040127a();
    }
    local_c = 0xffffffff;
    if (iStack_a0 != 0) {
      piStack_c8 = (int *)0x79540c;
      FUN_0040127a();
    }
    local_b0 = local_b0 + 1;
    if (local_b1 == '\0') break;
  }
  piStack_c8 = param_1 + 0x1c;
  piStack_cc = (int *)0x795464;
  FUN_0043d406();
  local_c = 6;
  *(bool *)((int)param_1 + 0x69) = local_b1 == '\0';
  piStack_c8 = (int *)0x795482;
  FUN_0044953d();
  local_c = 0xffffffff;
  if (cStack_70 != '\0') {
    piStack_c8 = (int *)0x79549a;
    FUN_00401477();
  }
  piStack_c8 = (int *)0x7954a2;
  FUN_00444e30();
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007954c6(int param_1)

{
  char local_14;
  
  FUN_0043d406(param_1 + 0x70);
  *(undefined *)(param_1 + 0x6a) = 1;
  FUN_0044953d();
  if (local_14 != '\0') {
    FUN_00401477();
  }
  (**(code **)(**(int **)(param_1 + 0x6c) + 0x2c))();
  return;
}



void __fastcall FUN_00795510(int param_1)

{
  int iVar1;
  char local_34;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3d89f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_0043d406();
  local_c = 0;
  if (*(char *)(param_1 + 0x6a) == '\0') {
    iVar1 = FUN_00465be3(local_20);
    local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  local_c = 0xffffffff;
  if (local_34 != '\0') {
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_00795653(int param_1,int *param_2,undefined4 param_3,undefined4 param_4)

{
  bool bVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 local_98;
  undefined4 local_94;
  undefined4 uStack_90;
  int iStack_8c;
  undefined *puStack_88;
  int local_38;
  undefined local_34 [8];
  undefined local_2c [4];
  char local_28;
  undefined4 *local_20;
  int local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8 = 0x79565f;
  puStack_88 = (undefined *)(param_1 + 0x70);
  iStack_8c = 0x79566e;
  FUN_0043d406();
  puStack_88 = (undefined *)param_4;
  local_8 = 0;
  iStack_8c = 0x79567f;
  FUN_00795058();
  local_8._0_1_ = 1;
  puStack_88 = (undefined *)0x79568d;
  FUN_004fe47e();
  local_8._0_1_ = 0;
  if (local_20 != (undefined4 *)0x0) {
    puStack_88 = (undefined *)0x79569d;
    FUN_0040127a();
  }
  puStack_88 = (undefined *)0x7956ab;
  uStack_90 = FUN_0079509b();
  puStack_88 = (undefined *)0xffffffff;
  iStack_8c = 0;
  local_8._0_1_ = 2;
  local_94 = 0x7956bd;
  FID_conflict_assign();
  puStack_88 = (undefined *)0x0;
  iStack_8c = 1;
  local_8 = (uint)local_8._1_3_ << 8;
  uStack_90 = 0x7956cb;
  FUN_00401829();
  local_15 = *(char *)(param_1 + 0x69);
  if ((*param_2 == 0) && (local_15 == '\0')) {
    puStack_88 = (undefined *)0x7956e0;
    cVar2 = FUN_00b72540();
    if ((cVar2 == '\0') && (cVar2 = *(char *)(param_1 + 0x6a), cVar2 == '\0')) goto LAB_007956ed;
  }
  cVar2 = '\x01';
LAB_007956ed:
  bVar1 = true;
  if (cVar2 == '\0') {
    local_1c = param_1 + 0x78;
    do {
      if (bVar1) {
        puStack_88 = (undefined *)0x0;
        iStack_8c = 0;
        uStack_90 = 0;
        local_20 = &local_98;
        local_98 = 0xa0c;
        local_94 = 0x7f;
        puVar3 = (undefined4 *)FUN_00465be3(local_34);
        local_20 = &local_98;
        local_8 = CONCAT31(local_8._1_3_,3);
        local_98 = *puVar3;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar3 + 1);
      }
      puStack_88 = local_2c;
      iStack_8c = local_1c;
      uStack_90 = 0x795764;
      FUN_00453ca3();
      puStack_88 = (undefined *)param_4;
      iStack_8c = 0x795772;
      FUN_00795058();
      local_8._0_1_ = 4;
      puStack_88 = (undefined *)0x795780;
      FUN_004fe47e();
      local_8._0_1_ = 0;
      if (local_38 != 0) {
        puStack_88 = (undefined *)0x79578f;
        FUN_0040127a();
      }
      puStack_88 = (undefined *)0x79579d;
      uStack_90 = FUN_0079509b();
      puStack_88 = (undefined *)0xffffffff;
      iStack_8c = 0;
      local_8._0_1_ = 5;
      local_94 = 0x7957af;
      FID_conflict_assign();
      puStack_88 = (undefined *)0x0;
      iStack_8c = 1;
      local_8 = (uint)local_8._1_3_ << 8;
      uStack_90 = 0x7957bd;
      FUN_00401829();
      local_15 = *(char *)(param_1 + 0x69);
      if ((*param_2 == 0) && (local_15 == '\0')) {
        puStack_88 = (undefined *)0x7957d2;
        cVar2 = FUN_00b72540();
        if ((cVar2 != '\0') || (cVar2 = *(char *)(param_1 + 0x6a), cVar2 != '\0'))
        goto LAB_007957dd;
      }
      else {
LAB_007957dd:
        cVar2 = '\x01';
      }
      bVar1 = false;
    } while (cVar2 == '\0');
  }
  local_8 = 0xffffffff;
  if (local_28 != '\0') {
    puStack_88 = (undefined *)0x795802;
    FUN_00401477();
  }
  if ((*param_2 != 0) && (local_15 == '\0')) {
    puStack_88 = (undefined *)0x795812;
    cVar2 = FUN_00b72540();
    if (cVar2 == '\0') {
      return 1;
    }
  }
  puStack_88 = (undefined *)0xec2063e;
  iStack_8c = 0x795829;
  FUN_00b940e0();
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00795834(undefined4 *param_1)

{
  if (param_1[3] != 0) {
    FUN_007ff170(param_1[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



int FUN_0079587b(int param_1,int param_2,undefined4 param_3)

{
  FUN_007958ef(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x2c + param_1;
}



int FUN_007958ab(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = param_1 - in_EAX;
  if (in_EAX != param_1) {
    do {
      FUN_00795941();
      in_EAX = in_EAX + 0x2c;
    } while (in_EAX != param_1);
  }
  return (iVar1 / 0x2c) * 0x2c + param_2;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007958ef(int param_1,int param_2)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    FUN_007ff46c(param_1);
    param_1 = param_1 + 0x2c;
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_0079591f(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 8); iVar1 = iVar1 + 0x2c)
  {
    FUN_007fe8b0(iVar1);
  }
  __CxxThrowException_8(0,0);
  return;
}



void FUN_00795941(void)

{
  int unaff_EBX;
  
  FUN_004fe47e();
  FID_conflict_assign(unaff_EBX + 8,0,0xffffffff);
  FUN_004fe47e();
  return;
}



void FUN_0079596a(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007959b1(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::cmf0<bool,class_WE7A5EFDD::W72CC8097>,class_boost::_bi::list1<class_boost::_bi::value<class_W88DE69F8::W739360CD*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_007959b1(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::cmf0<bool,class_WE7A5EFDD::W72CC8097>,class_boost::_bi::list1<class_boost::_bi::value<class_W88DE69F8::W739360CD*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::cmf0<bool,class_WE7A5EFDD::W72CC8097>,class_boost::_bi::list1<class_boost::_bi::value<class_W88DE69F8::W739360CD*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_00795ba5(undefined4 param_1_00,int param_2_00,int *param_1,undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  undefined8 uVar4;
  undefined4 auStack_10c [4];
  undefined4 uStack_fc;
  undefined4 uStack_f8;
  int iStack_f4;
  undefined4 *puStack_f0;
  undefined4 *puStack_ec;
  undefined4 *puStack_e8;
  undefined local_d4 [28];
  int local_b8;
  undefined8 local_b4;
  char local_a4;
  undefined4 *local_a0;
  uint local_9c;
  int *local_98;
  undefined4 local_94;
  int local_90;
  undefined4 *local_8c;
  undefined4 local_88;
  int local_84;
  uint local_80;
  short local_7c [3];
  char local_75;
  undefined local_74 [68];
  undefined local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc4;
  local_8 = 0x795bb4;
  local_98 = param_1;
  local_94 = param_2;
  puStack_e8 = (undefined4 *)(param_2_00 + 0x70);
  puStack_ec = (undefined4 *)0x795be3;
  local_90 = param_2_00;
  FUN_0043d406();
  local_9c = (*(int *)(param_2_00 + 0x60) - *(int *)(param_2_00 + 0x5c)) / 0x2c;
  if ((char)local_84 != '\0') {
    puStack_e8 = (undefined4 *)0x795c09;
    FUN_00401477();
  }
  local_75 = '\x01';
  local_80 = 0;
  iVar3 = param_2_00;
  do {
    if (local_9c <= local_80) break;
    local_88 = 0;
    local_84 = 0;
    local_8 = 0;
    puStack_e8 = (undefined4 *)0x0;
    local_18 = 7;
    puStack_ec = (undefined4 *)0x795c3d;
    FUN_0040180b();
    puStack_e8 = (undefined4 *)local_80;
    puStack_ec = (undefined4 *)local_30;
    puStack_f0 = &local_88;
    local_8._0_1_ = 1;
    uStack_f8 = 0x795c55;
    iStack_f4 = iVar3;
    local_75 = FUN_00795653();
    if (local_75 == '\0') {
      puStack_e8 = (undefined4 *)0x49620878;
      puStack_ec = (undefined4 *)0x795c6b;
      FUN_00b940e0();
    }
    local_8c = (undefined4 *)0x0;
    if (local_75 != '\0') {
      puStack_e8 = (undefined4 *)(iVar3 + 0x70);
      puStack_ec = (undefined4 *)0x795c8c;
      FUN_0043d406();
      local_8._0_1_ = 2;
      if (local_80 < (uint)((*(int *)(param_2_00 + 0x60) - *(int *)(param_2_00 + 0x5c)) / 0x2c)) {
        puStack_e8 = (undefined4 *)local_80;
        puStack_ec = (undefined4 *)0x795cab;
        FUN_007fefc7();
        puStack_e8 = (undefined4 *)0x795cb3;
        FUN_0074ca40();
        iVar3 = local_90;
      }
      local_8._0_1_ = 1;
      if (local_a4 != '\0') {
        puStack_e8 = (undefined4 *)0x795cd1;
        FUN_00401477();
      }
      puStack_e8 = (undefined4 *)0x795ce2;
      local_75 = FUN_00b7a940();
      if (local_75 == '\0') {
        puStack_e8 = (undefined4 *)0xda09bc8;
        local_75 = false;
      }
      else {
        puStack_e8 = (undefined4 *)local_30;
        puStack_ec = &local_94;
        puStack_f0 = (undefined4 *)0x795d05;
        FUN_007b4b62();
        puStack_e8 = (undefined4 *)0x0;
        puStack_ec = local_8c;
        puStack_f0 = (undefined4 *)0x795d18;
        (**(code **)*local_a0)();
        local_8c = auStack_10c;
        *(undefined *)(local_98 + 8) = 1;
        auStack_10c[0] = 0;
        cVar2 = (**(code **)(*local_98 + 0x1d0))(local_7c,local_88,0,0);
        if (cVar2 == '\0') {
          puStack_e8 = (undefined4 *)0x217c74c8;
          local_75 = false;
        }
        else {
          local_75 = local_7c[0] == 0;
          if ((bool)local_75) {
            puStack_e8 = &local_94;
            puStack_ec = (undefined4 *)0x795d85;
            FUN_007b4eb5();
            puStack_e8 = (undefined4 *)0x0;
            puStack_ec = (undefined4 *)0x0;
            puStack_f0 = (undefined4 *)0x78;
            iStack_f4 = 0;
            uStack_f8 = 0;
            uStack_fc = 0x795d90;
            uVar4 = FUN_0043b546();
            puStack_e8 = (undefined4 *)0x795db0;
            local_b4 = uVar4;
            FUN_00b98ea0();
            piVar1 = local_98;
            puStack_e8 = (undefined4 *)0x795dc3;
            puStack_ec = (undefined4 *)FUN_00b7b544();
            puStack_e8 = (undefined4 *)local_d4;
            local_8._0_1_ = 4;
            puStack_ec = (undefined4 *)*puStack_ec;
            puStack_f0 = (undefined4 *)local_74;
            iStack_f4 = 0x795dda;
            FUN_00b9f55b();
            local_8._0_1_ = 6;
            if (local_b8 != 0) {
              puStack_e8 = (undefined4 *)0x795ded;
              FUN_0040127a();
            }
            local_8 = CONCAT31(local_8._1_3_,7);
            puStack_e8 = (undefined4 *)0x795dfc;
            FUN_00b98d40();
            puStack_e8 = (undefined4 *)local_7c;
            puStack_ec = (undefined4 *)0x795e0a;
            local_75 = (**(code **)(*piVar1 + 0x1d8))();
            if (local_75 == '\0') {
              puStack_e8 = (undefined4 *)0x9f4bb011;
              puStack_ec = (undefined4 *)0x795e20;
              FUN_00b940e0();
            }
            local_8._0_1_ = 1;
            puStack_e8 = (undefined4 *)0x795e2d;
            FUN_00b9f511();
            iVar3 = local_90;
            if ((local_75 != '\0') && (local_75 = local_7c[0] == 0, !(bool)local_75)) {
              puStack_e8 = (undefined4 *)0x48a7e723;
              puStack_ec = (undefined4 *)0x795e52;
              FUN_00b940e0();
              puStack_e8 = (undefined4 *)0x2;
              puStack_ec = (undefined4 *)local_7c;
              puStack_f0 = (undefined4 *)0x48a7e723;
              iStack_f4 = 0x795e5f;
              FUN_00b940c0();
              iVar3 = local_90;
            }
            goto LAB_00795e68;
          }
          puStack_e8 = (undefined4 *)0x86d30396;
        }
      }
      puStack_ec = (undefined4 *)0x795d73;
      FUN_00b940e0();
    }
LAB_00795e68:
    puStack_e8 = (undefined4 *)0x0;
    puStack_ec = (undefined4 *)0x1;
    puStack_f0 = (undefined4 *)0x795e75;
    FUN_00401829();
    local_8 = 0xffffffff;
    if (local_84 != 0) {
      puStack_e8 = (undefined4 *)0x795e85;
      FUN_0040127a();
    }
    local_80 = local_80 + 1;
  } while (local_75 != '\0');
  puStack_e8 = (undefined4 *)0x795e9a;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00795e9b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76AFA8BF::WC099CD65>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00795ee1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __fastcall
FUN_007963eb(short *param_1_00,short *param_2_00,undefined4 param_1,undefined4 param_2)

{
  short sVar1;
  short *psVar2;
  
  do {
    sVar1 = *param_2_00;
    param_2_00 = param_2_00 + 1;
  } while (sVar1 != 0);
  psVar2 = param_1_00;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  FUN_00796456(param_1,param_2,param_1_00,param_1_00 + ((int)psVar2 - (int)(param_1_00 + 1) >> 1));
  return param_1;
}



undefined4
FUN_00796456(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  
  puVar1 = (undefined4 *)FUN_00428a20();
  puVar2 = (undefined4 *)FUN_004289f0();
  uVar4 = param_6;
  uVar5 = param_7;
  uVar3 = FUN_004760e5(&param_3,*puVar2,puVar2[1],*puVar1,puVar1[1]);
  FUN_007964b7(param_2,param_3,param_4,param_5,uVar3,uVar4,uVar5);
  return param_1;
}



void FUN_007964b7(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 int param_5,undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  local_c = 0;
  local_14 = *(undefined4 *)(param_5 + 8);
  uStack_10 = *(undefined4 *)(param_5 + 0xc);
  cVar1 = FUN_00412797(&local_14);
  if (cVar1 == '\0') {
    FUN_00796515(param_1,param_2,param_3,param_4,param_6,param_7);
  }
  else {
    basic_string<>(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00796515(undefined4 *param_1_00,undefined4 *param_2,undefined4 param_1)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_EBX;
  undefined4 param_5;
  undefined4 param_6;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 *local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x6c;
  local_8 = 0x796521;
  local_34 = *param_1_00;
  local_30 = param_1_00[1];
  local_44 = *param_2;
  local_40 = param_2[1];
  local_3c = param_2[2];
  local_38 = param_2[3];
  local_2c = &stack0x00000014;
  local_28 = param_1;
  FUN_004289f0();
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_EBX);
  local_8 = 0;
  while( true ) {
    cVar2 = FUN_008477d0(&local_3c);
    if (cVar2 == '\0') break;
    FUN_00412721(&local_4c);
    FUN_00428440(local_4c,local_48,local_4c,local_48,local_24,local_20,local_44,local_40);
    FUN_00412721(&local_1c);
    FUN_00412639(local_1c,local_18,local_1c,local_18,local_34,local_30);
    uVar1 = local_3c;
    local_20 = local_38;
    local_24 = local_3c;
    puVar3 = (undefined4 *)FUN_00428a20();
    puVar3 = (undefined4 *)FUN_004760e5(&stack0x00000008,uVar1,local_38,*puVar3,puVar3[1]);
    local_44 = *puVar3;
    local_40 = puVar3[1];
    local_3c = puVar3[2];
    local_38 = puVar3[3];
    cVar2 = FUN_00412797(&local_3c);
    if (cVar2 == '\0') {
      local_34 = param_5;
      local_30 = param_6;
    }
  }
  FUN_00412721(&local_1c);
  puVar3 = (undefined4 *)FUN_00428a20();
  FUN_00428440(local_1c,local_18,local_1c,local_18,local_24,local_20,*puVar3,puVar3[1]);
  return;
}



undefined4 __fastcall FUN_007971fe(undefined4 param_1)

{
  byte unaff_retaddr;
  
  FUN_00797964(param_1);
  if ((unaff_retaddr & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void Catch_All_00797720(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007977d3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3CA43D38::W5F3775EE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00797819(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00797830(undefined4 *param_1)

{
  void *pvVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  
  uVar3 = 0;
  pvVar1 = operator_new(0x28);
  if (pvVar1 != (void *)0x0) {
    FUN_00672a11();
    uVar3 = FUN_007c324a(pvVar1);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_007977d3();
  uVar3 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar3;
  if (pvVar1 != (void *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c();
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_00797964(int param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  iStack_24 = param_1 + 0x1c;
  local_8 = 1;
  puVar1 = &uStack_28;
  uStack_28 = 0x797983;
  FUN_0044237a();
  puVar1[-1] = 0x79798d;
  FUN_0041c3a7();
  puVar1[-1] = *(undefined4 *)(param_1 + 4);
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_00797994;
  FUN_00a3f6a1();
}



undefined4 * __thiscall FUN_007979a3(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W3CA43D38::W2D1C072E::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007979c0(undefined4 *param_1)

{
  *param_1 = W3CA43D38::W2D1C072E::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00797a19(int **param_1,undefined4 param_2,int param_3,char param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  undefined4 *puVar4;
  int local_24;
  int local_20;
  undefined4 *local_1c;
  uint local_14;
  
  *(undefined *)(param_1[2] + 8) = 2;
  param_2._3_1_ = (**(code **)(*param_1[2] + 0x2d0))();
  if (param_2._3_1_ != '\0') {
    iVar1 = *(int *)(param_3 + 0x14);
    iVar2 = *(int *)(param_3 + 0x10);
    if (param_4 != '\0') {
      (**(code **)(*param_1)[1])(0);
    }
    local_14 = 0;
    do {
      if ((uint)(iVar1 - iVar2 >> 3) <= local_14) break;
      FUN_00b66601();
      if (local_24 == 0) {
LAB_00797b19:
        if (param_2._3_1_ != '\0') {
          cVar3 = (**(code **)(**param_1 + 0xc))();
          param_2._3_1_ = '\x01' - (cVar3 != '\0');
          if (param_2._3_1_ == '\0') {
            FUN_00b940e0();
          }
        }
      }
      else {
        if (*(int **)(*(int *)(local_24 + 8) + 8) <= param_1[3]) {
          puVar4 = (undefined4 *)FUN_00b6652f(local_24);
          *puVar4 = 0;
          param_2._3_1_ = (**(code **)(*param_1[2] + 0x2e8))(*(undefined4 *)(local_24 + 4));
          if (local_1c != (undefined4 *)0x0) {
            (**(code **)*local_1c)();
          }
          if (param_2._3_1_ == '\0') {
            FUN_00b940e0();
            goto LAB_00797afe;
          }
LAB_00797b03:
          if (param_4 != '\0') {
            (**(code **)(*param_1)[1])(local_14 + 1);
          }
          goto LAB_00797b19;
        }
LAB_00797afe:
        if (param_2._3_1_ != '\0') goto LAB_00797b03;
      }
      if (local_20 != 0) {
        FUN_0040127a();
      }
      local_14 = local_14 + 1;
    } while (param_2._3_1_ != '\0');
    if (param_2._3_1_ == '\0') {
      return '\0';
    }
    param_2._3_1_ = (**(code **)(*param_1[2] + 0x2d8))();
    if (param_2._3_1_ != '\0') {
      return param_2._3_1_;
    }
  }
  FUN_00b940e0();
  return param_2._3_1_;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00797b92(int **param_1,int param_2,char param_3)

{
  int iVar1;
  char cVar2;
  undefined4 *puVar3;
  int **ppiVar4;
  int **appiStack_44 [5];
  int local_30;
  int local_2c;
  int ***local_28;
  int *local_24;
  int **local_20;
  int **local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x797b9e;
  cVar2 = '\x01';
  if (*(char *)(param_1 + 4) == '\0') {
    appiStack_44[0] = param_1 + 2;
    FUN_007d95f7();
    *(undefined *)(param_1[3] + 8) = 2;
    appiStack_44[0] = (int **)0x797bc4;
    cVar2 = (**(code **)(*param_1[3] + 0x20c))();
    if (cVar2 == '\0') {
      appiStack_44[0] = (int **)0x5ead1bd1;
      FUN_00b940e0();
    }
    else {
      *(undefined *)(param_1 + 4) = 1;
    }
  }
  local_15 = cVar2;
  if (cVar2 == '\0') {
    appiStack_44[0] = (int **)0xd25f1de9;
    FUN_00b940e0();
  }
  *(undefined *)(param_1[3] + 8) = 2;
  if (cVar2 != '\0') {
    ppiVar4 = (int **)(*(int *)(param_2 + 0x14) - *(int *)(param_2 + 0x10) >> 3);
    local_20 = ppiVar4;
    if (param_3 != '\0') {
      appiStack_44[0] = ppiVar4;
      (**(code **)(*param_1)[1])(0);
    }
    local_1c = (int **)0x0;
    do {
      if (ppiVar4 <= local_1c) {
        return local_15;
      }
      appiStack_44[0] = (int **)0x797c46;
      FUN_00b672c0();
      iVar1 = local_30;
      local_8 = 0;
      if (local_30 == 0) {
LAB_00797ce5:
        if (local_15 != '\0') {
          appiStack_44[0] = (int **)0x797cf1;
          cVar2 = (**(code **)(**param_1 + 0xc))();
          local_15 = '\x01' - (cVar2 != '\0');
          if (local_15 == '\0') {
            appiStack_44[0] = (int **)0x1ce0e51c;
            goto LAB_00797d06;
          }
        }
      }
      else if (param_1[5] < *(int **)(*(int *)(local_30 + 0xc) + 8)) {
        local_28 = (int ***)*param_1;
        appiStack_44[0] = *(int ***)(local_30 + 8);
        FUN_007b57f3(&local_28);
        if (local_15 != '\0') goto LAB_00797ccf;
      }
      else {
        appiStack_44[0] = &local_24;
        puVar3 = (undefined4 *)FUN_00b6709c(local_30);
        local_8._0_1_ = 1;
        appiStack_44[0] = (int **)*puVar3;
        *puVar3 = 0;
        local_28 = appiStack_44;
        local_15 = (**(code **)(*param_1[3] + 0x224))
                             (*(undefined *)(iVar1 + 4),*(undefined4 *)(iVar1 + 8));
        local_8 = (uint)local_8._1_3_ << 8;
        if (local_24 != (int *)0x0) {
          appiStack_44[0] = (int **)0x1;
          (**(code **)*local_24)();
        }
        if (local_15 != '\0') {
LAB_00797ccf:
          if (param_3 != '\0') {
            appiStack_44[0] = local_20;
            (**(code **)(*param_1)[1])((int)local_1c + 1);
          }
          goto LAB_00797ce5;
        }
        appiStack_44[0] = (int **)0x8cfeaa5d;
LAB_00797d06:
        FUN_00b940e0();
      }
      local_8 = 0xffffffff;
      if (local_2c != 0) {
        appiStack_44[0] = (int **)0x797d1c;
        FUN_0040127a();
      }
      local_1c = (int **)((int)local_1c + 1);
      ppiVar4 = local_20;
    } while (local_15 != '\0');
  }
  return local_15;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00797d33(int **param_1,undefined4 ***param_2)

{
  int iVar1;
  undefined4 **ppuVar2;
  char cVar3;
  uint uVar4;
  undefined4 ***pppuStack_44;
  int *piStack_40;
  int iStack_3c;
  int **ppiStack_38;
  undefined4 ***local_24;
  int local_20;
  int local_1c;
  undefined4 **local_18;
  int *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_14[0] = (int *)0x0;
  local_8._0_1_ = 0;
  local_8._1_3_ = 0;
  ppiStack_38 = local_14;
  iStack_3c = 0x797d58;
  param_1._3_1_ = (**(code **)(**param_1 + 0x2f0))();
  if (param_1._3_1_ == '\0') {
    iStack_3c = 0x765228f3;
    piStack_40 = (int *)0x797d6e;
    FUN_00b940e0();
  }
  uVar4 = 0;
  do {
    if ((param_1._3_1_ == '\0') || ((uint)local_14[0][2] <= uVar4)) {
      local_8 = 0xffffffff;
      if (local_14[0] != (int *)0x0) {
        iStack_3c = 1;
        piStack_40 = (int *)0x797e30;
        (**(code **)*local_14[0])();
      }
      return param_1._3_1_;
    }
    local_18 = (undefined4 **)0x0;
    piStack_40 = &local_20;
    iStack_3c = 0;
    local_8 = CONCAT31(local_8._1_3_,1);
    pppuStack_44 = (undefined4 ***)0x797d92;
    cVar3 = FUN_00bb64e0();
    if (cVar3 == '\0') {
LAB_00797e3b:
      iStack_3c = 0xa661af59;
      param_1._3_1_ = '\0';
      piStack_40 = (int *)0x797e4d;
      FUN_00b940e0();
    }
    else {
      piStack_40 = &local_1c;
      iStack_3c = 0;
      pppuStack_44 = (undefined4 ***)0x797dac;
      cVar3 = FUN_00bb64e0();
      iVar1 = local_1c;
      if (cVar3 == '\0') goto LAB_00797e3b;
      iStack_3c = uVar4 + 8;
      piStack_40 = local_14[0];
      pppuStack_44 = &local_18;
      cVar3 = FUN_00bb6360();
      ppuVar2 = local_18;
      if (cVar3 == '\0') goto LAB_00797e3b;
      local_18 = (undefined4 **)0x0;
      local_24 = &pppuStack_44;
      param_1._3_1_ = '\x01';
      pppuStack_44 = (undefined4 ***)ppuVar2;
      FUN_00b664bc(&piStack_40,local_20);
      pppuStack_44 = param_2;
      FUN_00b6664a();
      uVar4 = uVar4 + 8 + iVar1;
    }
    local_8._0_1_ = 0;
    if (local_18 != (undefined4 **)0x0) {
      iStack_3c = 1;
      piStack_40 = (int *)0x797e16;
      (*(code *)**local_18)();
    }
  } while( true );
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00797e50(int **param_1,undefined4 ***param_2)

{
  int iVar1;
  undefined4 **ppuVar2;
  char cVar3;
  uint uVar4;
  undefined4 ***pppuStack_4c;
  int *piStack_48;
  int iStack_44;
  int **ppiStack_40;
  undefined4 ***local_28;
  int local_24;
  int local_20;
  int local_1c;
  undefined4 **local_18;
  int *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_14[0] = (int *)0x0;
  local_8._0_1_ = 0;
  local_8._1_3_ = 0;
  ppiStack_40 = local_14;
  iStack_44 = 0x797e75;
  param_1._3_1_ = (**(code **)(**param_1 + 0x21c))();
  if (param_1._3_1_ == '\0') {
    iStack_44 = 0x7ee1ec0c;
    piStack_48 = (int *)0x797e8b;
    FUN_00b940e0();
  }
  uVar4 = 0;
  do {
    if ((param_1._3_1_ == '\0') || ((uint)local_14[0][2] <= uVar4)) {
      local_8 = 0xffffffff;
      if (local_14[0] != (int *)0x0) {
        iStack_44 = 1;
        piStack_48 = (int *)0x797f6a;
        (**(code **)*local_14[0])();
      }
      return param_1._3_1_;
    }
    local_18 = (undefined4 **)0x0;
    piStack_48 = &local_24;
    iStack_44 = 0;
    local_8 = CONCAT31(local_8._1_3_,1);
    pppuStack_4c = (undefined4 ***)0x797eaf;
    cVar3 = FUN_00bb64e0();
    if (cVar3 == '\0') {
LAB_00797f75:
      iStack_44 = 0xc856dceb;
      param_1._3_1_ = '\0';
      piStack_48 = (int *)0x797f87;
      FUN_00b940e0();
    }
    else {
      piStack_48 = &local_20;
      iStack_44 = 0;
      pppuStack_4c = (undefined4 ***)0x797ec9;
      cVar3 = FUN_00bb64e0();
      if (cVar3 == '\0') goto LAB_00797f75;
      piStack_48 = &local_1c;
      iStack_44 = 0;
      pppuStack_4c = (undefined4 ***)0x797ee3;
      cVar3 = FUN_00bb64e0();
      iVar1 = local_1c;
      if (cVar3 == '\0') goto LAB_00797f75;
      iStack_44 = uVar4 + 0xc;
      piStack_48 = local_14[0];
      pppuStack_4c = &local_18;
      cVar3 = FUN_00bb6360();
      ppuVar2 = local_18;
      if (cVar3 == '\0') goto LAB_00797f75;
      local_18 = (undefined4 **)0x0;
      local_28 = &pppuStack_4c;
      param_1._3_1_ = '\x01';
      pppuStack_4c = (undefined4 ***)ppuVar2;
      FUN_005d4b82(&piStack_48,local_24,local_20);
      pppuStack_4c = param_2;
      FUN_00b67367();
      uVar4 = uVar4 + 0xc + iVar1;
    }
    local_8._0_1_ = 0;
    if (local_18 != (undefined4 **)0x0) {
      iStack_44 = 1;
      piStack_48 = (int *)0x797f50;
      (*(code *)**local_18)();
    }
  } while( true );
}



char FUN_00797f8a(undefined4 *param_1,int *param_2)

{
  undefined4 *puVar1;
  char cVar2;
  uint unaff_EDI;
  uint uStack_74;
  undefined4 *puStack_70;
  undefined **ppuStack_6c;
  undefined **ppuStack_68;
  undefined auStack_64 [8];
  uint *puStack_5c;
  undefined4 uStack_58;
  undefined4 uStack_54;
  void **ppvStack_50;
  uint uStack_4c;
  undefined *puStack_3c;
  uint uStack_38;
  undefined **ppuStack_34;
  void *local_2c;
  int local_28;
  undefined4 uStack_24;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c38b26;
  local_14 = ExceptionList;
  uStack_4c = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_14;
  ppvStack_50 = &local_2c;
  uStack_54 = 0x797fc0;
  FUN_00502b88();
  ppvStack_50 = (void **)param_1;
  local_c = 0;
  uStack_54 = 0x797fcf;
  FUN_005d11c9();
  local_c = 0xffffffff;
  if (local_28 != 0) {
    ppvStack_50 = (void **)0x797fe1;
    FUN_0040127a();
  }
  ppvStack_50 = (void **)0x0;
  uStack_54 = 0;
  uStack_58 = 0x797fed;
  (**(code **)(*param_2 + 0x28))();
  uStack_58 = 4;
  puStack_3c = auStack_64;
  puStack_5c = &uStack_38;
  auStack_64[0] = 0;
  ppuStack_68 = (undefined **)0x798009;
  cVar2 = (**(code **)(*param_2 + 0xc))();
  if (cVar2 == '\0') {
    ppuStack_68 = (undefined **)0x5cb5dfa6;
    ppuStack_6c = (undefined **)0x79801e;
    FUN_00b940e0();
  }
  for (uStack_4c = 0; (cVar2 != '\0' && (uStack_4c < unaff_EDI)); uStack_4c = uStack_4c + 1) {
    ppuStack_68 = (undefined **)0xc;
    ppvStack_50 = (void **)&uStack_74;
    ppuStack_6c = &puStack_3c;
    uStack_74 = uStack_74 & 0xffffff00;
    cVar2 = (**(code **)(*param_2 + 0xc))();
    if (cVar2 == '\0') {
      ppuStack_68 = (undefined **)0x5b8f587d;
      ppuStack_6c = (undefined **)0x798068;
      FUN_00b940e0();
    }
    else if (ppuStack_34 != (undefined **)0x0) {
      ppvStack_50 = (void **)0x0;
      uStack_24 = 1;
      ppuStack_68 = ppuStack_34;
      ppuStack_6c = (undefined **)0x798091;
      cVar2 = FUN_00bb1450();
      puVar1 = ppvStack_50;
      if (cVar2 == '\0') {
        ppuStack_68 = (undefined **)0x42700112;
        ppuStack_6c = (undefined **)0x7980a7;
        FUN_00b940e0();
      }
      else {
        ppvStack_50 = (void **)0x0;
        ppuStack_6c = ppuStack_68;
        puStack_70 = puVar1;
        uStack_74 = uStack_38;
        FUN_005d4b82(&ppuStack_6c,puStack_3c);
        puStack_70 = (undefined4 *)*param_1;
        uStack_74 = 0x7980df;
        FUN_00b67367();
      }
      uStack_24 = 0xffffffff;
      if (ppvStack_50 != (void **)0x0) {
        ppuStack_68 = (undefined **)0x1;
                    // WARNING: Load size is inaccurate
        ppuStack_6c = (undefined **)0x7980f2;
        (***ppvStack_50)();
      }
    }
  }
  ExceptionList = local_2c;
  return cVar2;
}



void Catch_All_007982bc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0079838b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



char FUN_00798414(void)

{
  char cVar1;
  undefined4 in_EAX;
  undefined4 uStack_20;
  undefined *puStack_1c;
  
  puStack_1c = (undefined *)0x798425;
  cVar1 = FUN_00b9c788();
  if (cVar1 == '\0') {
    puStack_1c = (undefined *)0x8720b769;
  }
  else {
    FUN_00b9c1dc(in_EAX,&uStack_20);
    FUN_007dd0e5();
    puStack_1c = (undefined *)0x798452;
    cVar1 = FUN_00b9c683();
    if (cVar1 != '\0') {
      FUN_00b9c172(in_EAX,&uStack_20);
      FUN_005d734a();
      return cVar1;
    }
    puStack_1c = &DAT_01a6d6c3;
  }
  uStack_20 = 0x798467;
  FUN_00b940e0();
  return '\0';
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00798487(int param_1)

{
  int iVar1;
  undefined **ppuStack_70;
  undefined local_48 [4];
  undefined local_44 [4];
  int local_40;
  char local_3a;
  char local_39;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_38 [24];
  undefined4 local_20;
  char local_1c;
  undefined ***local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x798493;
  local_40 = param_1;
  local_20 = 0xf;
  ppuStack_70 = (undefined **)0x7984ad;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_38,0);
  local_18[0] = &ppuStack_70;
  local_8 = 0;
  FUN_00b9c087();
  FUN_00b66742();
  local_8 = CONCAT31(local_8._1_3_,1);
  ppuStack_70 = (undefined **)0x7984d0;
  FUN_00b9c044();
  ppuStack_70 = (undefined **)local_18;
  local_3a = '\0';
  local_39 = FUN_00b66ac8(&local_3a,local_48,local_44);
  if (local_39 == '\0') {
    ppuStack_70 = (undefined **)0x798507;
    FUN_00b940e0();
  }
  else if (local_3a != '\0') {
    ppuStack_70 = (undefined **)0x79851b;
    FUN_005d73d6();
    FUN_005d741e();
    ppuStack_70 = (undefined **)0x798535;
    FUN_007dd1b1();
  }
  local_1c = '\0';
  local_8._0_1_ = 2;
  if (local_39 != '\0') {
    local_39 = FUN_00b66eff();
    if (local_39 == '\0') {
      ppuStack_70 = (undefined **)0x798564;
      FUN_00b940e0();
    }
    else if ((-(uint)(local_1c != '\0') & 0x6a1cd8) != 0) {
      FUN_00b671e3();
      iVar1 = local_40;
      FUN_007dd228();
      *(undefined *)(iVar1 + 0x6c) = 1;
    }
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00b66772();
  ppuStack_70 = (undefined **)0x1;
  FUN_004017b2();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_007985af(void)

{
  char cVar1;
  undefined4 uStack_60;
  undefined *puStack_5c;
  undefined4 *local_38;
  char local_34;
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_34 = '\0';
  local_8 = 0;
  local_38 = &uStack_60;
  FUN_00b9c087();
  FUN_00b66742();
  local_8 = CONCAT31(local_8._1_3_,1);
  puStack_5c = (undefined *)0x7985ea;
  cVar1 = FUN_00b66cdc();
  if (cVar1 == '\0') {
    puStack_5c = (undefined *)0xeb58247a;
    uStack_60 = 0x7985ff;
    FUN_00b940e0();
  }
  else if ((-(uint)(local_34 != '\0') & 0x6a1cd8) != 0) {
    puStack_5c = local_30;
    uStack_60 = 0x79861c;
    FUN_007dd25d();
  }
  local_8 = local_8 & 0xffffff00;
  puStack_5c = (undefined *)0x798628;
  FUN_00b66772();
  if (local_34 != '\0') {
    puStack_5c = (undefined *)0x0;
    uStack_60 = 1;
    FUN_004017b2();
  }
  puStack_5c = (undefined *)0x798641;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_00798749(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c14d65;
  if (param_1[3] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = W71DA37B9::WE30CAD64::vftable;
  return puVar1;
}



void __fastcall FUN_0079878f(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 0xc);
}



void __fastcall FUN_00798805(int param_1)

{
  char cVar1;
  
  cVar1 = FUN_00798487();
  *(char *)(param_1 + 0x14) = cVar1;
  if (cVar1 == '\0') {
    FUN_00b940e0();
  }
  if (*(char *)(param_1 + 0x14) != '\0') {
    cVar1 = FUN_007985af();
    *(char *)(param_1 + 0x14) = cVar1;
    if (cVar1 == '\0') {
      FUN_00b940e0();
    }
    if (*(char *)(param_1 + 0x14) != '\0') {
                    // WARNING: Subroutine does not return
      FUN_0043c023(param_1 + 0xc);
    }
  }
  return;
}



undefined4 FUN_007988a6(int param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  bool bVar5;
  undefined local_44 [16];
  undefined local_34 [16];
  undefined local_24 [16];
  int local_14 [4];
  
  piVar3 = (int *)(param_1 + 0x164);
  piVar1 = (int *)FUN_00418c35(local_24);
  local_14[0] = *piVar1;
  local_14[1] = piVar1[1];
  local_14[2] = piVar1[2];
  local_14[3] = piVar1[3];
  iVar2 = 4;
  bVar5 = true;
  piVar1 = piVar3;
  piVar4 = local_14;
  do {
    if (iVar2 == 0) break;
    iVar2 = iVar2 + -1;
    bVar5 = *piVar1 == *piVar4;
    piVar1 = piVar1 + 1;
    piVar4 = piVar4 + 1;
  } while (bVar5);
  if (!bVar5) {
    piVar1 = (int *)FUN_00418c79(local_34);
    local_14[0] = *piVar1;
    local_14[1] = piVar1[1];
    local_14[2] = piVar1[2];
    local_14[3] = piVar1[3];
    iVar2 = 4;
    bVar5 = true;
    piVar1 = piVar3;
    piVar4 = local_14;
    do {
      if (iVar2 == 0) break;
      iVar2 = iVar2 + -1;
      bVar5 = *piVar1 == *piVar4;
      piVar1 = piVar1 + 1;
      piVar4 = piVar4 + 1;
    } while (bVar5);
    if (!bVar5) {
      piVar1 = (int *)FUN_00418bf1(local_44);
      local_14[0] = *piVar1;
      local_14[1] = piVar1[1];
      local_14[2] = piVar1[2];
      local_14[3] = piVar1[3];
      iVar2 = 4;
      bVar5 = true;
      piVar1 = local_14;
      do {
        if (iVar2 == 0) break;
        iVar2 = iVar2 + -1;
        bVar5 = *piVar3 == *piVar1;
        piVar3 = piVar3 + 1;
        piVar1 = piVar1 + 1;
      } while (bVar5);
      if (!bVar5) {
        return 0;
      }
    }
  }
  return 1;
}



void FUN_00798925(void)

{
  undefined4 *puVar1;
  undefined local_30 [16];
  undefined4 local_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5cafa;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  puVar1 = (undefined4 *)FUN_00798d11(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc0);
  local_c = 0;
  local_20 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 FUN_00798a8d(int param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  bool bVar5;
  undefined local_64 [16];
  undefined local_54 [16];
  undefined local_44 [16];
  undefined local_34 [16];
  undefined local_24 [16];
  int local_14 [4];
  
  piVar3 = (int *)(param_1 + 0x164);
  piVar1 = (int *)FUN_00419610(local_24);
  local_14[0] = *piVar1;
  local_14[1] = piVar1[1];
  local_14[2] = piVar1[2];
  local_14[3] = piVar1[3];
  iVar2 = 4;
  bVar5 = true;
  piVar1 = piVar3;
  piVar4 = local_14;
  do {
    if (iVar2 == 0) break;
    iVar2 = iVar2 + -1;
    bVar5 = *piVar1 == *piVar4;
    piVar1 = piVar1 + 1;
    piVar4 = piVar4 + 1;
  } while (bVar5);
  if (!bVar5) {
    piVar1 = (int *)FUN_0041957a(local_34);
    local_14[0] = *piVar1;
    local_14[1] = piVar1[1];
    local_14[2] = piVar1[2];
    local_14[3] = piVar1[3];
    iVar2 = 4;
    bVar5 = true;
    piVar1 = piVar3;
    piVar4 = local_14;
    do {
      if (iVar2 == 0) break;
      iVar2 = iVar2 + -1;
      bVar5 = *piVar1 == *piVar4;
      piVar1 = piVar1 + 1;
      piVar4 = piVar4 + 1;
    } while (bVar5);
    if (!bVar5) {
      piVar1 = (int *)FUN_004196a6(local_44);
      local_14[0] = *piVar1;
      local_14[1] = piVar1[1];
      local_14[2] = piVar1[2];
      local_14[3] = piVar1[3];
      iVar2 = 4;
      bVar5 = true;
      piVar1 = piVar3;
      piVar4 = local_14;
      do {
        if (iVar2 == 0) break;
        iVar2 = iVar2 + -1;
        bVar5 = *piVar1 == *piVar4;
        piVar1 = piVar1 + 1;
        piVar4 = piVar4 + 1;
      } while (bVar5);
      if (!bVar5) {
        piVar1 = (int *)FUN_00419759(local_54);
        local_14[0] = *piVar1;
        local_14[1] = piVar1[1];
        local_14[2] = piVar1[2];
        local_14[3] = piVar1[3];
        iVar2 = 4;
        bVar5 = true;
        piVar1 = piVar3;
        piVar4 = local_14;
        do {
          if (iVar2 == 0) break;
          iVar2 = iVar2 + -1;
          bVar5 = *piVar1 == *piVar4;
          piVar1 = piVar1 + 1;
          piVar4 = piVar4 + 1;
        } while (bVar5);
        if (!bVar5) {
          piVar1 = (int *)FUN_004194e7(local_64);
          local_14[0] = *piVar1;
          local_14[1] = piVar1[1];
          local_14[2] = piVar1[2];
          local_14[3] = piVar1[3];
          iVar2 = 4;
          bVar5 = true;
          piVar1 = local_14;
          do {
            if (iVar2 == 0) break;
            iVar2 = iVar2 + -1;
            bVar5 = *piVar3 == *piVar1;
            piVar3 = piVar3 + 1;
            piVar1 = piVar1 + 1;
          } while (bVar5);
          if (!bVar5) {
            return 0;
          }
        }
      }
    }
  }
  return 1;
}



void FUN_00798b52(void)

{
  undefined4 *puVar1;
  undefined local_2c [12];
  undefined4 local_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5cad7;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  puVar1 = (undefined4 *)FUN_007991e0(local_2c,DAT_0323f878 ^ (uint)&stack0xffffffb8);
  local_c = 0;
  local_20 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00798d11(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x94);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00798d85(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_007990fd(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00798d85(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined local_28 [12];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x798d91;
  FUN_00b9a937(param_1);
  *param_1 = W27CAE91F::W6DE7D066::vftable;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  puVar1 = (undefined4 *)FUN_0079960f(local_28);
  local_8 = CONCAT31(local_8._1_3_,2);
  local_1c = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 __thiscall FUN_0079902f(undefined4 param_1_00,byte param_1)

{
  FUN_0079904b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0079904b(undefined4 *param_1)

{
  int iVar1;
  uint3 uVar2;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = W27CAE91F::W6DE7D066::vftable;
  local_8._1_3_ = 0;
  uVar2 = local_8._1_3_;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  if (local_20 != param_1 + 0x23) {
    param_1[0x23] = 0;
  }
  iVar1 = param_1[0x24];
  param_1[0x24] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
    uVar2 = local_8._1_3_;
  }
  local_8._1_3_ = uVar2;
  local_8._0_1_ = 1;
  if (param_1[0x24] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00b9a8dd();
  return;
}



void Catch_All_007990a9(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_007990b3(undefined4 param_1,undefined4 param_2)

{
  FUN_0041d449(param_1,param_2);
  return param_1;
}



void FUN_007990d3(void)

{
  FUN_007997cd();
  return;
}



void __fastcall FUN_007990e1(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x007990ec. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(*(int *)(param_1 + 0x8c) + 4) + 0x10))();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007990fd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W27CAE91F::W6DE7D066>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00799143(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0079915a(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00799193(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W27CAE91F::W6DE7D066>,class_boost::_bi::list1<class_boost::_bi::value<class_W27CAE91F::W6DE7D066*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_00799193(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W27CAE91F::W6DE7D066>,class_boost::_bi::list1<class_boost::_bi::value<class_W27CAE91F::W6DE7D066*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W27CAE91F::W6DE7D066>,class_boost::_bi::list1<class_boost::_bi::value<class_W27CAE91F::W6DE7D066*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007991e0(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x94);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00799254(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00799520(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00799254(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined local_28 [12];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x799260;
  FUN_00b9a937(param_1);
  *param_1 = W87060954::W5CF2541F::vftable;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  puVar1 = (undefined4 *)FUN_00799e30(local_28);
  local_8 = CONCAT31(local_8._1_3_,2);
  local_1c = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 __thiscall FUN_0079948e(undefined4 param_1_00,byte param_1)

{
  FUN_007994aa();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007994aa(undefined4 *param_1)

{
  int iVar1;
  uint3 uVar2;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = W87060954::W5CF2541F::vftable;
  local_8._1_3_ = 0;
  uVar2 = local_8._1_3_;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  if (local_20 != param_1 + 0x23) {
    param_1[0x23] = 0;
  }
  iVar1 = param_1[0x24];
  param_1[0x24] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
    uVar2 = local_8._1_3_;
  }
  local_8._1_3_ = uVar2;
  local_8._0_1_ = 1;
  if (param_1[0x24] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00b9a8dd();
  return;
}



void Catch_All_00799508(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00799512(void)

{
  FUN_00799f8e();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00799520(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W87060954::W5CF2541F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00799566(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0079957d(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007995c2(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W87060954::W5CF2541F>,class_boost::_bi::list1<class_boost::_bi::value<class_W87060954::W5CF2541F*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007995b6(code **param_1)

{
                    // WARNING: Could not recover jumptable at 0x007995c0. Too many branches
                    // WARNING: Treating indirect jump as call
  (**param_1)();
  return;
}



void __fastcall FUN_007995c2(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W87060954::W5CF2541F>,class_boost::_bi::list1<class_boost::_bi::value<class_W87060954::W5CF2541F*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W87060954::W5CF2541F>,class_boost::_bi::list1<class_boost::_bi::value<class_W87060954::W5CF2541F*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0079960f(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0xa0);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00799683(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00799a1b(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00799683(undefined4 *param_1)

{
  undefined4 *puVar1;
  int *piVar2;
  undefined local_28 [4];
  int local_24;
  char local_16;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x79968f;
  *param_1 = W27CAE91F::W374E5006::vftable;
  FUN_00ba0e6c(param_1 + 1);
  local_8 = 0;
  local_15 = '\x01';
  (**(code **)(param_1[1] + 0x18))(local_28,0);
  local_8._0_1_ = 1;
  puVar1 = (undefined4 *)FUN_00ba54e8();
  piVar2 = (int *)FUN_00419e85(*puVar1);
  local_16 = (~-(uint)(*piVar2 != 1) & 0x7a491c) != 0;
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_24 != 0) {
    FUN_0040127a();
  }
  if (local_16 != '\0') {
    FUN_00b940e0(0xa4c984cc);
    local_15 = '\0';
  }
  *(undefined *)(param_1 + 0x27) = 1;
  if (local_15 != '\0') {
    piVar2 = (int *)FUN_00ba518e();
    if ((~-(uint)(*piVar2 != 1) & 0x7a491c) == 0) {
      FUN_00b940e0(0x6b6bf1c0);
      local_15 = '\0';
    }
    if ((local_15 != '\0') &&
       (piVar2 = (int *)FUN_00ba511d(), (~-(uint)(*piVar2 != 1) & 0x7a491c) == 0)) {
      FUN_00b940e0(0xa64f5c1e);
    }
  }
  return param_1;
}



undefined4 __thiscall FUN_00799783(undefined4 param_1_00,byte param_1)

{
  FUN_0079979f();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0079979f(undefined4 *param_1)

{
  *param_1 = W27CAE91F::W374E5006::vftable;
  FUN_00ba0de9();
  return;
}



void Catch_All_007997c3(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_007997cd(void)

{
  char cVar1;
  undefined uVar2;
  int unaff_ESI;
  int *local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x7997d9;
  cVar1 = (**(code **)(*(int *)(unaff_ESI + 4) + 0xc))();
  if (cVar1 != '\0') {
    FUN_0079a0e3(&local_18);
    local_8 = 0;
    if ((local_18 == (int *)0x0) || (cVar1 = (**(code **)(*local_18 + 0x18))(), cVar1 == '\0')) {
      uVar2 = 0;
      FUN_00b940e0(0x38d07a9e);
    }
    else {
      uVar2 = 1;
    }
    local_8 = 0xffffffff;
    if (local_14 != 0) {
      FUN_0040127a();
    }
    return uVar2;
  }
  FUN_00b940e0(0x6d6c7c14);
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00799846(void)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  undefined local_20 [4];
  int local_1c;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x799852;
  local_11 = FUN_007999e4(1);
  if (local_11 == '\0') {
    FUN_00b940e0(0xb591e6bf);
  }
  else {
    FUN_0041d449(local_20,0);
    local_8 = 0;
    puVar2 = (undefined4 *)FUN_00ba5381(1);
    piVar3 = (int *)FUN_00419e85(*puVar2);
    iVar1 = *piVar3;
    local_8 = 0xffffffff;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    if ((~-(uint)(iVar1 != 1) & 0x7a491c) != 0) {
      FUN_00b940e0(0x4fb34db9);
      local_11 = '\0';
    }
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_007998e4(void)

{
  undefined4 *puVar1;
  int *piVar2;
  undefined local_24 [4];
  int local_20;
  char local_12;
  undefined local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7998f0;
  local_11 = 1;
  FUN_0041d449(local_24,0);
  local_8 = 0;
  puVar1 = (undefined4 *)FUN_00ba5381(0);
  piVar2 = (int *)FUN_00419e85(*puVar1);
  local_12 = (~-(uint)(*piVar2 != 1) & 0x7a491c) != 0;
  local_8 = 0xffffffff;
  if (local_20 != 0) {
    FUN_0040127a();
  }
  if (local_12 != '\0') {
    FUN_00b940e0(0xb072d54c);
    local_11 = 0;
  }
  return local_11;
}



bool __fastcall FUN_0079995f(int param_1)

{
  int *piVar1;
  bool bVar2;
  undefined4 uVar3;
  
  if (param_1 == 0) {
    piVar1 = (int *)FUN_00ba50ab(1);
    bVar2 = (~-(uint)(*piVar1 != 1) & 0x7a491c) != 0;
    if (bVar2) {
      return bVar2;
    }
    uVar3 = 0x2ec902d5;
  }
  else {
    if (param_1 != 1) {
      return true;
    }
    piVar1 = (int *)FUN_00ba50ab(0);
    bVar2 = (~-(uint)(*piVar1 != 1) & 0x7a491c) != 0;
    if (bVar2) {
      return bVar2;
    }
    uVar3 = 0x67074a19;
  }
  FUN_00b940e0(uVar3);
  return bVar2;
}



bool FUN_007999e4(int param_1)

{
  int in_EAX;
  int *piVar1;
  
  *(bool *)(in_EAX + 0x9c) = param_1 == 0;
  piVar1 = (int *)FUN_00ba5039(param_1 == 0);
  return (~-(uint)(*piVar1 != 1) & 0x7a491c) != 0;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00799a1b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W27CAE91F::W374E5006>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00799a61(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00799bc7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00799cea(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00799e19(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00799e30(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x9c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00799ea4(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0079a133(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00799ea4(undefined4 *param_1)

{
  undefined4 *puVar1;
  int *piVar2;
  undefined local_28 [4];
  int local_24;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x799eb0;
  *param_1 = W87060954::W51B8F2BF::vftable;
  FUN_00ba0e6c(param_1 + 1);
  local_8 = 0;
  (**(code **)(param_1[1] + 0x18))(local_28,0);
  local_8._0_1_ = 1;
  puVar1 = (undefined4 *)FUN_00ba54e8();
  piVar2 = (int *)FUN_00419e85(*puVar1);
  local_15 = (~-(uint)(*piVar2 != 1) & 0x7a491c) != 0;
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_24 != 0) {
    FUN_0040127a();
  }
  if (local_15 == '\0') {
    FUN_00ba518e();
    FUN_00ba511d();
  }
  else {
    FUN_00b940e0(0x1d1eaba0);
  }
  return param_1;
}



undefined4 __thiscall FUN_00799f44(undefined4 param_1_00,byte param_1)

{
  FUN_00799f60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00799f60(undefined4 *param_1)

{
  *param_1 = W87060954::W51B8F2BF::vftable;
  FUN_00ba0de9();
  return;
}



void Catch_All_00799f84(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_00799f8e(void)

{
  char cVar1;
  undefined uVar2;
  int unaff_ESI;
  int *local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x799f9a;
  cVar1 = (**(code **)(*(int *)(unaff_ESI + 4) + 0xc))();
  if (cVar1 != '\0') {
    FUN_0079a0e3(&local_18);
    local_8 = 0;
    if ((local_18 == (int *)0x0) || (cVar1 = (**(code **)(*local_18 + 0x18))(), cVar1 == '\0')) {
      uVar2 = 0;
      FUN_00b940e0(0x52de2a38);
    }
    else {
      uVar2 = 1;
    }
    local_8 = 0xffffffff;
    if (local_14 != 0) {
      FUN_0040127a();
    }
    return uVar2;
  }
  FUN_00b940e0(0xc0320f1e);
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_0079a007(undefined4 param_1)

{
  int *piVar1;
  bool bVar2;
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x79a013;
  FUN_0068c175(param_1,local_18,0);
  local_8 = 0;
  piVar1 = (int *)FUN_00ba5381(1);
  bVar2 = (~-(uint)(*piVar1 != 1) & 0x7a491c) != 0;
  local_8 = 0xffffffff;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  if (!bVar2) {
    FUN_00b940e0(0xcabed4f7);
  }
  return bVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_0079a073(undefined4 param_1)

{
  int *piVar1;
  bool bVar2;
  undefined local_1c [4];
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x79a07f;
  FUN_0068c175(param_1,local_1c,0);
  local_8 = 0;
  piVar1 = (int *)FUN_00ba5381(0);
  bVar2 = (~-(uint)(*piVar1 != 1) & 0x7a491c) != 0;
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  if (!bVar2) {
    FUN_00b940e0(0xd95eb377);
  }
  return bVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0079a0e3(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  undefined local_1c [4];
  int local_18;
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x79a0ef;
  local_14 = 0;
  uVar1 = (**(code **)(*(int *)(param_1_00 + 4) + 0x2c))(local_1c,0xa20cec6d);
  local_8 = 1;
  FUN_0041dd0a(param_1,uVar1);
  local_8 = local_8 & 0xffffff00;
  local_14 = 1;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079a133(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W87060954::W51B8F2BF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079a179(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0079a2ca(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0079a2e1(undefined4 param_1_00,byte param_1)

{
  FUN_00b789d6();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0079a2fd(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0079a341(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W894DDB77::WA955C8D5>,class_boost::_bi::list1<class_boost::_bi::value<class_W894DDB77::WA955C8D5*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0079a338(code **param_1)

{
                    // WARNING: Could not recover jumptable at 0x0079a33f. Too many branches
                    // WARNING: Treating indirect jump as call
  (**param_1)();
  return;
}



void FUN_0079a341(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W894DDB77::WA955C8D5>,class_boost::_bi::list1<class_boost::_bi::value<class_W894DDB77::WA955C8D5*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W894DDB77::WA955C8D5>,class_boost::_bi::list1<class_boost::_bi::value<class_W894DDB77::WA955C8D5*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 * __thiscall FUN_0079a38a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W894DDB77::W7999E281::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0079a3a7(undefined4 param_1_00,byte param_1)

{
  FUN_00b7809c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0079a3c3(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W894DDB77::W7999E281::vftable;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079a3ca(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::WDA101F4F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079a410(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0079a427(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x90);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00bc09fd();
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_0079a49c(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079a49c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::WC3257B31>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079a4e2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0079a7a2(undefined4 param_1_00,byte param_1)

{
  FUN_00b777b7();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0079a7be(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_03057371;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void Catch_All_0079a84d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0079a8aa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_0079a907(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079a91e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::WF9966DBE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079a964(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0079a97b(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0079a9b6(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W894DDB77::WF9966DBE>,class_boost::_bi::list1<class_boost::_bi::value<class_W894DDB77::WF9966DBE*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_0079a9b6(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W894DDB77::WF9966DBE>,class_boost::_bi::list1<class_boost::_bi::value<class_W894DDB77::WF9966DBE*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W894DDB77::WF9966DBE>,class_boost::_bi::list1<class_boost::_bi::value<class_W894DDB77::WF9966DBE*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079a9ff(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::WAA706BF0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079aa45(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079aa5c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::W73AAC50F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079aaa2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079aab9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::W9A0C1EA0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079aaff(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079ab16(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::W0C9CF9C2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079ab5c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079ab73(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::WEE8EB636>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079abb9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079abd0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::WDCE89C46>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079ac16(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079ac33(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::WFC45C99D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079ac79(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079ac96(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::W317464F2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079acdc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079acf9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::WCCE03E30>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079ad3f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079ad5c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::WFBDA9216>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079ada2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079adbf(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::W86441A16>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079ae05(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079ae22(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::W41CB9CB0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079ae68(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079ae8b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::W15133C76>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079aed1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0079aee8(undefined4 param_1_00,byte param_1)

{
  FUN_00b98fca();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0079af04(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W894DDB77::WE1D51EB0::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0079af21(undefined4 *param_1_00,byte param_1)

{
  if (*(char *)(param_1_00 + 9) != '\0') {
    *(undefined *)(param_1_00 + 9) = 0;
  }
  if (*(char *)(param_1_00 + 7) != '\0') {
    *(undefined *)(param_1_00 + 7) = 0;
  }
  if (*(char *)(param_1_00 + 5) != '\0') {
    *(undefined *)(param_1_00 + 5) = 0;
  }
  if (*(char *)(param_1_00 + 3) != '\0') {
    *(undefined *)(param_1_00 + 3) = 0;
  }
  if (*(char *)(param_1_00 + 1) != '\0') {
    *(undefined *)(param_1_00 + 1) = 0;
  }
  *param_1_00 = W894DDB77::W7999E281::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0079af68(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W894DDB77::W89C2E320::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0079af85(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W894DDB77::W16E70884::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * FUN_0079afa2(void)

{
  uint uVar1;
  LONG LVar2;
  void *pvVar3;
  undefined4 *puVar4;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c21192;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if ((_DAT_032ef92c & 1) == 0) {
    _DAT_032ef92c = _DAT_032ef92c | 1;
    DAT_032ef930 = (undefined4 *)0x0;
    _atexit((_func_4879 *)&LAB_00c74879);
  }
  LVar2 = InterlockedExchangeAdd((LONG *)&DAT_032ef934,0);
  if (LVar2 == 0) {
    FUN_00b9acd0(uVar1);
    local_c = 0;
    LVar2 = InterlockedExchangeAdd((LONG *)&DAT_032ef934,0);
    if ((LVar2 == 0) && (DAT_032ef930 == (undefined4 *)0x0)) {
      pvVar3 = operator_new(0x2c);
      local_c._0_1_ = 1;
      if (pvVar3 == (void *)0x0) {
        puVar4 = (undefined4 *)0x0;
      }
      else {
        puVar4 = (undefined4 *)FUN_00b6e6c0(pvVar3);
      }
      local_c = (uint)local_c._1_3_ << 8;
      if ((puVar4 != DAT_032ef930) && (DAT_032ef930 != (undefined4 *)0x0)) {
        (**(code **)*DAT_032ef930)(1);
      }
      DAT_032ef930 = puVar4;
      InterlockedExchange((LONG *)&DAT_032ef934,1);
    }
    local_c = 0xffffffff;
    FUN_00b9ac60();
  }
  ExceptionList = local_14;
  return DAT_032ef930;
}



undefined4 __thiscall FUN_0079b097(undefined4 param_1_00,byte param_1)

{
  FUN_00b7531f();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0079b0b3(undefined4 param_1_00,byte param_1)

{
  FUN_00b750e5();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_0079b0cf(void)

{
  return 0x4537b998;
}



undefined4 __thiscall FUN_0079b0d5(undefined4 param_1_00,byte param_1)

{
  FUN_00ba6f23();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_0079b0f1(void)

{
  return 0x1d79476c;
}



void __fastcall FUN_0079b0f7(undefined4 *param_1)

{
  *param_1 = W5FC6A77E::WBF585E8D::vftable;
  return;
}



undefined4 __thiscall FUN_0079b0fe(undefined4 param_1_00,byte param_1)

{
  FUN_00b74db0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0079b11a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W894DDB77::W16CCF8FB>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0079b160(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0079b177(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W5FC6A77E::WC01ABAA6::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0079b194(undefined4 *param_1)

{
  *param_1 = W5FC6A77E::WC01ABAA6::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_0079b19b(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x79b1a7;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_03057780,8);
  local_8 = 0;
  local_18 = 0x4566167c;
  local_14 = 0xdd2e4a7e;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



undefined4 * __thiscall FUN_0079b1f0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0079b250(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0079b250(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0079b2b0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0079b2b0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c08a40;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE7A5EFDD::W6A7F14E5>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0079b329(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0079b350(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WE7A5EFDD::WF1113228::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0079b370(undefined4 *param_1)

{
  *param_1 = &PTR_DAT_030577b8;
  return;
}



undefined4 * __thiscall FUN_0079b3a0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = common::WA4CB001E::vftable;
  if (*(char *)(param_1_00 + 2) != '\0') {
    *(undefined *)(param_1_00 + 2) = 0;
  }
  *param_1_00 = &PTR_DAT_030577b8;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0079b3d0(undefined4 param_1,undefined4 *param_2)

{
  undefined *in_EAX;
  
  *in_EAX = 0;
  if ((undefined4 *)(in_EAX + 8) != (undefined4 *)0x0) {
    *(undefined4 *)(in_EAX + 8) = *param_2;
    *(undefined4 *)(in_EAX + 0xc) = param_2[1];
  }
  *in_EAX = 1;
  return;
}



undefined4 __fastcall FUN_0079b3f0(uint *param_1)

{
  uint uVar1;
  uint uVar2;
  char cVar3;
  uint *in_EAX;
  uint uVar4;
  uint uVar5;
  
  uVar1 = *in_EAX;
  uVar2 = in_EAX[1];
  if (((uVar1 != 0) || (uVar2 != 0x80000000)) && ((uVar1 != 0xffffffff || (uVar2 != 0x7fffffff)))) {
    if ((uVar1 == 0xfffffffe) && (uVar2 == 0x7fffffff)) goto LAB_0079b501;
    uVar4 = *param_1;
    uVar5 = param_1[1];
    if (((uVar4 != 0) || (uVar5 != 0x80000000)) &&
       (((uVar4 != 0xffffffff || (uVar5 != 0x7fffffff)) &&
        ((uVar4 != 0xfffffffe || (uVar5 != 0x7fffffff)))))) goto LAB_0079b4e3;
  }
  if ((uVar1 == 0xfffffffe) && (uVar2 == 0x7fffffff)) {
LAB_0079b501:
    if ((*param_1 == 0xfffffffe) && (param_1[1] == 0x7fffffff)) {
      return 0;
    }
    return 2;
  }
  uVar4 = *param_1;
  uVar5 = param_1[1];
  if ((uVar4 == 0xfffffffe) && (uVar5 == 0x7fffffff)) {
    return 2;
  }
  if ((uVar1 == 0) && (uVar2 == 0x80000000)) {
    if (uVar4 != 0) {
      return 0xffffffff;
    }
    if (uVar5 != 0x80000000) {
      return 0xffffffff;
    }
  }
  if ((uVar4 == 0xffffffff) && (uVar5 == 0x7fffffff)) {
    if (uVar1 != 0xffffffff) {
      return 0xffffffff;
    }
    if (uVar2 != 0x7fffffff) {
      return 0xffffffff;
    }
LAB_0079b4bb:
    cVar3 = FUN_0043bd84(uVar4,uVar5);
    if (cVar3 == '\0') {
      return 1;
    }
  }
  else if ((uVar1 == 0xffffffff) && (uVar2 == 0x7fffffff)) goto LAB_0079b4bb;
  if (((uVar4 == 0) && (uVar5 == 0x80000000)) && (cVar3 = FUN_0043bd9c(uVar1,uVar2), cVar3 == '\0'))
  {
    return 1;
  }
LAB_0079b4e3:
  if ((int)uVar2 <= (int)uVar5) {
    if (((int)uVar2 < (int)uVar5) || (uVar1 < uVar4)) {
      return 0xffffffff;
    }
    if (((int)uVar2 < (int)uVar5) || (((int)uVar2 <= (int)uVar5 && (uVar1 <= uVar4)))) {
      return 0;
    }
  }
  return 1;
}



undefined8 FUN_0079b530(uint param_1,uint param_2)

{
  uint uVar1;
  uint uVar2;
  
  uVar2 = (param_2 >> 8 ^ (param_2 << 8 | param_1 >> 0x18)) & 0xff00ff ^
          (param_2 << 8 | param_1 >> 0x18);
  uVar1 = (param_1 >> 8 ^ param_1 << 8) & 0xff00ff ^ param_1 << 8;
  return CONCAT44(uVar1 >> 0x10 ^ uVar1 << 0x10,
                  (uVar2 ^ uVar1) >> 0x10 ^ (uVar2 << 0x10 | uVar1 >> 0x10));
}



undefined4 __thiscall FUN_0079b5b0(undefined4 param_1_00,byte param_1)

{
  FUN_00ba3be0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0079b5d0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0079b6c0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_0079b630(void)

{
  short sVar1;
  short *psVar2;
  
  psVar2 = &DAT_03057848;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  psVar2 = &DAT_0305784c;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  FUN_00796456();
  return;
}



void __thiscall FUN_0079b6c0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0079b720(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0079b720(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c08a20;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8D447680::W60B107CD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0079b799(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0079b7c0(void)

{
  undefined4 *in_EAX;
  
  FUN_00a3f66c(*in_EAX);
  return;
}



undefined4 * __thiscall FUN_0079b7d0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W76FAFBE0::WE4A1E41E::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0079b7f0(undefined4 param_1_00,byte param_1)

{
  FUN_00b747e0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0079b810(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W76FAFBE0::WE4A1E41E::vftable;
  return;
}



void FUN_0079b820(void)

{
  int *piVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 local_c [3];
  
  if (local_c != in_EAX) {
    *in_EAX = 0;
  }
  piVar1 = (int *)in_EAX[1];
  in_EAX[1] = 0;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
                    // WARNING: Could not recover jumptable at 0x0079b86c. Too many branches
                    // WARNING: Treating indirect jump as call
        (**(code **)(*piVar1 + 8))();
        return;
      }
    }
  }
  return;
}



undefined4 * __thiscall FUN_0079b880(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0079b8e0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0079b8e0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0079b940(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0079b940(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c08a00;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76FAFBE0::W4BF8BBA0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0079b9b9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0079b9e0(undefined4 param_1_00,byte param_1)

{
  FUN_00b73a90();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



uint __fastcall FUN_0079ba00(uint param_1_00,undefined4 *param_2_00,undefined4 param_1,int *param_2)

{
  uint *puVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  undefined4 *puVar7;
  undefined4 local_1c [4];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c20d38;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  local_4 = 0;
  uVar2 = param_2_00[4];
  uVar3 = param_2_00[3];
  uVar6 = (int)(uVar2 - uVar3) >> 3;
  if (uVar6 < param_1_00) {
    if (uVar2 < uVar3) {
      FUN_00a3fb10(uVar5);
    }
    uVar6 = FUN_00674cb3(param_2_00,param_1_00 - ((int)(param_2_00[4] - param_2_00[3]) >> 3),
                         *param_2_00,uVar2);
  }
  else if (param_1_00 < uVar6) {
    if (uVar2 < uVar3) {
      FUN_00a3fb10(uVar5);
    }
    local_1c[0] = *param_2_00;
    if ((uint)param_2_00[4] < (uint)param_2_00[3]) {
      FUN_00a3fb10(uVar5);
    }
    puVar7 = (undefined4 *)FUN_00674f1b(param_1_00);
    uVar6 = FUN_00674c3d(local_1c,*puVar7,puVar7[1],local_1c[0],uVar2);
  }
  local_4 = 0xffffffff;
  if (param_2 != (int *)0x0) {
    puVar1 = (uint *)(param_2 + 1);
    LOCK();
    uVar2 = *puVar1;
    uVar6 = *puVar1;
    *puVar1 = uVar2 - 1;
    UNLOCK();
    if (uVar2 - 1 == 0) {
      uVar6 = (**(code **)(*param_2 + 4))();
      LOCK();
      iVar4 = param_2[2] + -1;
      param_2[2] = iVar4;
      UNLOCK();
      if (iVar4 == 0) {
        uVar6 = (**(code **)(*param_2 + 8))();
      }
    }
  }
  ExceptionList = local_c;
  return uVar6;
}



undefined4 * __thiscall FUN_0079bb10(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0079bb70(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0079bb70(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0079bbd0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0079bbd0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c089e0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76FAFBE0::W6B7644E0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0079bc49(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0079bc70(undefined4 *param_1_00,byte param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c190d8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  uVar1 = param_1_00[2];
  if (uVar1 != 0) {
    if ((uVar1 & 1) == 0) {
      if (*(code **)(uVar1 & 0xfffffffe) != (code *)0x0) {
        (**(code **)(uVar1 & 0xfffffffe))
                  (param_1_00 + 4,param_1_00 + 4,2,DAT_0323f878 ^ (uint)&stack0xffffffec);
      }
    }
    param_1_00[2] = 0;
  }
  *param_1_00 = W76FAFBE0::WAD5067CC::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_0079bd00(undefined4 param_1_00,byte param_1)

{
  FUN_00b72d90();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0079bd20(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0079bd80(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0079bd80(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0079bde0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0079bde0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c089c0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76FAFBE0::W902A24C6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0079be59(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_0079be80(undefined4 *param_1)

{
  *param_1 = WE7A5EFDD::W93FBB048::vftable;
  return;
}



undefined4 * __thiscall FUN_0079be90(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WE7A5EFDD::W93FBB048::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0079beb0(undefined4 param_1,byte param_2)

{
  FUN_00b72bf0();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 FUN_0079bed0(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined **local_58 [19];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c4a440;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0079bf60(param_2,DAT_0323f878 ^ (uint)&stack0xffffffa0);
  local_4 = 0;
  cVar1 = FUN_00829e80();
  if (cVar1 == '\0') {
    uVar2 = FUN_008288a0();
    FUN_004012d0(0xb,uVar2,"boost::thread_resource_error");
    local_58[0] = boost::thread_resource_error::vftable;
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00401bd4(local_58);
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_0079bf60(void)

{
  int iVar1;
  int *unaff_ESI;
  
  iVar1 = FUN_0079bfa0(&stack0x00000004,0);
  *unaff_ESI = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void __fastcall FUN_0079bf90(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x0079bf98. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0x6c) + 4))();
  return;
}



undefined4 * FUN_0079bfa0(undefined4 *param_1)

{
  undefined4 uVar1;
  HANDLE hHeap;
  undefined4 *puVar2;
  DWORD dwFlags;
  SIZE_T dwBytes;
  uint uStack_3c;
  undefined **local_2c [3];
  undefined4 *local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)0xffffffff;
  puStack_c = &LAB_00c4a409;
  local_10 = ExceptionList;
  uStack_3c = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_3c;
  ExceptionList = &local_10;
  dwBytes = 0x70;
  dwFlags = 0;
  hHeap = GetProcessHeap();
  puVar2 = (undefined4 *)HeapAlloc(hHeap,dwFlags,dwBytes);
  local_18 = puVar2;
  if (puVar2 == (undefined4 *)0x0) {
    std::exception::exception((exception *)local_2c,&PTR_s_bad_allocation_0324717c,1);
    local_2c[0] = std::bad_alloc::vftable;
    local_8 = puVar2;
    FUN_00439da6(local_2c);
  }
  local_8 = (undefined4 *)0x2;
  uVar1 = *param_1;
  local_20 = puVar2;
  local_1c = puVar2;
  FUN_00439966();
  *puVar2 = boost::detail::thread_data<class_boost::reference_wrapper<class_WE7A5EFDD::W72CC8097>_>
            ::vftable;
  puVar2[0x1b] = uVar1;
  ExceptionList = local_10;
  return puVar2;
}



void Catch_All_0079c041(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_0043d5e9(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0079c060(undefined4 param_1,byte param_2)

{
  FUN_0082a030();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_0079c080(undefined4 param_1_00,byte param_1)

{
  FUN_00b72070();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0079c0a0(void)

{
  uint uVar1;
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  uVar1 = in_EAX[4];
  if (uVar1 < (uint)in_EAX[3]) {
    FUN_00a3fb10();
  }
  *unaff_ESI = *in_EAX;
  unaff_ESI[1] = uVar1;
  return;
}



void FUN_0079c0d0(void)

{
  uint uVar1;
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  uVar1 = in_EAX[3];
  if ((uint)in_EAX[4] < uVar1) {
    FUN_00a3fb10();
  }
  *unaff_ESI = *in_EAX;
  unaff_ESI[1] = uVar1;
  return;
}



void FUN_0079c100(void)

{
  uint uVar1;
  uint uVar2;
  undefined4 in_EAX;
  uint uVar3;
  undefined4 *unaff_EBX;
  uint local_10 [3];
  
  uVar1 = unaff_EBX[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(unaff_EBX[5] - uVar1) >> 3;
  }
  uVar2 = unaff_EBX[4];
  if ((uint)((int)(uVar2 - uVar1) >> 3) < uVar3) {
    local_10[0] = local_10[0] & 0xffffff00;
    FUN_0080e2d0(local_10[0],local_10[0]);
    unaff_EBX[4] = uVar2 + 8;
    return;
  }
  if (uVar2 < uVar1) {
    FUN_00a3fb10();
  }
  FUN_0079c180(local_10,in_EAX,*unaff_EBX,uVar2);
  return;
}



int * FUN_0079c180(int *param_1,undefined4 param_2,int param_3,int param_4)

{
  uint uVar1;
  int iVar2;
  int *in_EAX;
  int iVar3;
  
  uVar1 = in_EAX[3];
  if ((in_EAX[4] - uVar1 & 0xfffffff8) == 0) {
    iVar3 = 0;
  }
  else {
    if ((uint)in_EAX[4] < uVar1) {
      FUN_00a3fb10();
    }
    if ((param_3 == 0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    iVar3 = (int)(param_4 - uVar1) >> 3;
  }
  FUN_0079c220(in_EAX,param_3,param_4);
  uVar1 = in_EAX[3];
  if ((uint)in_EAX[4] < uVar1) {
    FUN_00a3fb10();
  }
  iVar2 = *in_EAX;
  FUN_005d8250(iVar3);
  *param_1 = iVar2;
  param_1[1] = uVar1;
  return param_1;
}



int * __thiscall FUN_0079c220(int *param_1_00,int param_1,undefined4 param_2,int *param_3)

{
  int **ppiVar1;
  int *piVar2;
  int *piVar3;
  uint *puVar4;
  int iVar5;
  uint uVar6;
  int *piVar7;
  int *piVar8;
  undefined4 uVar9;
  uint extraout_ECX;
  int *piVar10;
  undefined8 uVar11;
  uint uStack_40;
  int local_30;
  int *local_2c;
  int local_28;
  int *local_24;
  undefined4 local_20;
  uint local_1c;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c20d10;
  local_10 = ExceptionList;
  uStack_40 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_40;
  ExceptionList = &local_10;
  iVar5 = *(int *)(param_1 + 0xc);
  if (iVar5 == 0) {
    local_1c = 0;
  }
  else {
    local_1c = *(int *)(param_1 + 0x14) - iVar5 >> 3;
  }
  iVar5 = *(int *)(param_1 + 0x10) - iVar5 >> 3;
  uVar11 = CONCAT44(*(int *)(param_1 + 0x10),iVar5);
  puVar4 = &uStack_40;
  if (iVar5 == 0x1fffffff) {
    uVar11 = FUN_004423c1();
    local_1c = extraout_ECX;
    puVar4 = local_14;
  }
  local_14 = puVar4;
  uVar6 = (int)uVar11 + 1;
  if (uVar6 <= local_1c) {
    if ((int)((ulonglong)uVar11 >> 0x20) - (int)param_3 >> 3 == 0) {
      piVar10 = (int *)param_1_00[1];
      local_28 = *param_1_00;
      if (piVar10 != (int *)0x0) {
        LOCK();
        piVar10[1] = piVar10[1] + 1;
        UNLOCK();
      }
      local_8 = 2;
      local_24 = piVar10;
      FUN_0080e220(param_3,param_3 + 2);
      local_8 = CONCAT31(local_8._1_3_,3);
      local_2c = (int *)((uint)local_2c & 0xffffff00);
      FUN_0080e2d0(param_1,local_2c);
      local_8 = 2;
      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 8;
      piVar7 = (int *)(*(int *)(param_1 + 0x10) + -8);
      piVar8 = piVar7;
      if (param_3 != piVar7) {
        do {
          if (piVar10 != (int *)0x0) {
            LOCK();
            piVar10[1] = piVar10[1] + 1;
            UNLOCK();
          }
          piVar8 = &local_30;
          if (piVar8 != param_3) {
            *param_3 = local_28;
          }
          piVar3 = (int *)param_3[1];
          param_3[1] = (int)piVar10;
          if (piVar3 != (int *)0x0) {
            ppiVar1 = (int **)(piVar3 + 1);
            LOCK();
            piVar2 = *ppiVar1;
            piVar8 = *ppiVar1;
            *ppiVar1 = (int *)((int)piVar2 + -1);
            UNLOCK();
            if ((int *)((int)piVar2 + -1) == (int *)0x0) {
              piVar8 = (int *)(**(code **)(*piVar3 + 4))();
              LOCK();
              iVar5 = piVar3[2] + -1;
              piVar3[2] = iVar5;
              UNLOCK();
              if (iVar5 == 0) {
                piVar8 = (int *)(**(code **)(*piVar3 + 8))();
              }
            }
          }
          param_3 = param_3 + 2;
        } while (param_3 != piVar7);
      }
    }
    else {
      local_2c = (int *)param_1_00[1];
      local_30 = *param_1_00;
      if (local_2c != (int *)0x0) {
        LOCK();
        local_2c[1] = local_2c[1] + 1;
        UNLOCK();
      }
      local_8 = 5;
      uVar9 = FUN_0080e220(*(int *)(param_1 + 0x10) + -8,*(int *)(param_1 + 0x10));
      *(undefined4 *)(param_1 + 0x10) = uVar9;
      FUN_0080e250();
      piVar7 = param_3 + 2;
      piVar8 = piVar7;
      piVar10 = local_2c;
      if (param_3 != piVar7) {
        do {
          piVar10 = local_2c;
          if (local_2c != (int *)0x0) {
            ppiVar1 = (int **)(local_2c + 1);
            LOCK();
            piVar8 = *ppiVar1;
            *ppiVar1 = (int *)((int)*ppiVar1 + 1);
            UNLOCK();
          }
          if (&local_28 != param_3) {
            *param_3 = local_30;
          }
          piVar3 = (int *)param_3[1];
          param_3[1] = (int)local_2c;
          if (piVar3 != (int *)0x0) {
            piVar8 = piVar3 + 1;
            LOCK();
            iVar5 = *piVar8;
            *piVar8 = iVar5 + -1;
            UNLOCK();
            if (iVar5 + -1 == 0) {
              piVar8 = (int *)(**(code **)(*piVar3 + 4))();
              LOCK();
              iVar5 = piVar3[2] + -1;
              piVar3[2] = iVar5;
              UNLOCK();
              if (iVar5 == 0) {
                piVar8 = (int *)(**(code **)(*piVar3 + 8))();
              }
            }
          }
          param_3 = param_3 + 2;
        } while (param_3 != piVar7);
      }
    }
    local_8 = 0xffffffff;
    if (piVar10 != (int *)0x0) {
      piVar8 = piVar10 + 1;
      LOCK();
      iVar5 = *piVar8;
      *piVar8 = iVar5 + -1;
      UNLOCK();
      if (iVar5 + -1 == 0) {
        piVar8 = (int *)(**(code **)(*piVar10 + 4))();
        LOCK();
        iVar5 = piVar10[2] + -1;
        piVar10[2] = iVar5;
        UNLOCK();
        if (iVar5 == 0) {
          piVar8 = (int *)(**(code **)(*piVar10 + 8))();
        }
      }
    }
    ExceptionList = local_10;
    return piVar8;
  }
  if (0x1fffffff - (local_1c >> 1) < local_1c) {
    local_1c = 0;
  }
  else {
    local_1c = local_1c + (local_1c >> 1);
  }
  if (local_1c < uVar6) {
    local_1c = uVar6;
  }
  piVar7 = (int *)FUN_0046aed6();
  local_8 = 0;
  local_24 = (int *)((int)param_3 - *(int *)(param_1 + 0xc) >> 3);
  local_20 = 0;
  local_2c = (int *)((uint)local_2c & 0xffffff00);
  FUN_0080e2d0(piVar7,local_2c);
  local_2c = (int *)((uint)local_2c & 0xffffff00);
  local_20 = 1;
  FUN_0079c5d0(piVar7,local_2c);
  local_2c = (int *)((uint)local_2c & 0xffffff00);
  local_20 = 2;
  FUN_0079c5d0(piVar7,local_2c);
  local_8 = 0xffffffff;
  if (*(int *)(param_1 + 0xc) == 0) {
    *(int **)(param_1 + 0x14) = piVar7 + local_1c * 2;
    *(int **)(param_1 + 0x10) =
         piVar7 + ((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc) >> 3) + 1) * 2;
    *(int **)(param_1 + 0xc) = piVar7;
    ExceptionList = local_10;
    return piVar7;
  }
  FUN_0043a4e8(*(int *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
}



void Catch_All_0079c38a(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + -0x1c);
  iVar2 = *(int *)(unaff_EBP + 8);
  iVar3 = *(int *)(unaff_EBP + -0x20);
  if (1 < iVar1) {
    FUN_0043a4e8(iVar2 + iVar3 * 8);
  }
  if (0 < iVar1) {
    FUN_0043a4e8(iVar2 + 8 + iVar3 * 8);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar2);
}



int * Catch_All_0079c4b2(void)

{
  int **ppiVar1;
  int iVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int *piVar6;
  int unaff_EBP;
  undefined4 *unaff_ESI;
  int unaff_EDI;
  int *piVar7;
  
  FUN_0043a4e8(*(int *)(*(int *)(unaff_EBP + 8) + 0x10) + 8);
  __CxxThrowException_8(0,0);
  iVar2 = unaff_ESI[1];
  *(undefined4 *)(unaff_EBP + -0x2c) = *unaff_ESI;
  *(int *)(unaff_EBP + -0x28) = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  *(undefined4 *)(unaff_EBP + -4) = 5;
  uVar4 = FUN_0080e220(*(int *)(unaff_EDI + 0x10) + -8,*(int *)(unaff_EDI + 0x10));
  *(undefined4 *)(unaff_EDI + 0x10) = uVar4;
  FUN_0080e250();
  piVar7 = *(int **)(unaff_EBP + 0x10);
  piVar5 = piVar7 + 2;
  *(int **)(unaff_EBP + 8) = piVar5;
  if (piVar7 == piVar5) {
    piVar6 = *(int **)(unaff_EBP + -0x28);
  }
  else {
    do {
      piVar6 = *(int **)(unaff_EBP + -0x28);
      if (piVar6 != (int *)0x0) {
        ppiVar1 = (int **)(piVar6 + 1);
        LOCK();
        piVar5 = *ppiVar1;
        *ppiVar1 = (int *)((int)*ppiVar1 + 1);
        UNLOCK();
      }
      if ((int *)(unaff_EBP + -0x24) != piVar7) {
        *piVar7 = *(int *)(unaff_EBP + -0x2c);
      }
      piVar3 = (int *)piVar7[1];
      piVar7[1] = (int)piVar6;
      if (piVar3 != (int *)0x0) {
        piVar5 = piVar3 + 1;
        LOCK();
        iVar2 = *piVar5;
        *piVar5 = iVar2 + -1;
        UNLOCK();
        if (iVar2 + -1 == 0) {
          piVar5 = (int *)(**(code **)(*piVar3 + 4))();
          LOCK();
          iVar2 = piVar3[2] + -1;
          piVar3[2] = iVar2;
          UNLOCK();
          if (iVar2 == 0) {
            piVar5 = (int *)(**(code **)(*piVar3 + 8))();
          }
        }
      }
      piVar7 = piVar7 + 2;
    } while (piVar7 != *(int **)(unaff_EBP + 8));
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  if (piVar6 != (int *)0x0) {
    piVar5 = piVar6 + 1;
    LOCK();
    iVar2 = *piVar5;
    *piVar5 = iVar2 + -1;
    UNLOCK();
    if (iVar2 + -1 == 0) {
      piVar5 = (int *)(**(code **)(*piVar6 + 4))();
      LOCK();
      iVar2 = piVar6[2] + -1;
      piVar6[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        piVar5 = (int *)(**(code **)(*piVar6 + 8))();
      }
    }
  }
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return piVar5;
}



void __fastcall FUN_0079c5d0(undefined4 *param_1)

{
  int iVar1;
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  if (param_1 != unaff_ESI) {
    do {
      if (in_EAX != (undefined4 *)0x0) {
        *in_EAX = *param_1;
        iVar1 = param_1[1];
        in_EAX[1] = iVar1;
        if (iVar1 != 0) {
          LOCK();
          *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
          UNLOCK();
        }
      }
      param_1 = param_1 + 2;
      in_EAX = in_EAX + 2;
    } while (param_1 != unaff_ESI);
  }
  return;
}



undefined4 * __thiscall FUN_0079c600(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WB009B997::WA665DD66::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0079c620(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0079c6b0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_0079c680(int param_1,byte *param_2)

{
  byte *pbVar1;
  byte bVar2;
  byte bVar3;
  uint *in_EAX;
  
  pbVar1 = param_2 + param_1;
  if (param_2 < pbVar1) {
    do {
      bVar2 = *(byte *)in_EAX;
      bVar3 = *param_2;
      *in_EAX = *in_EAX >> 8;
      param_2 = param_2 + 1;
      *in_EAX = *(uint *)(&DAT_032ef940 + (uint)(bVar2 ^ bVar3) * 4) ^ *in_EAX;
    } while (param_2 < pbVar1);
  }
  return;
}



void __thiscall FUN_0079c6b0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0079c7d0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void FUN_0079c710(void)

{
  uint uVar1;
  uint uVar2;
  byte bVar3;
  byte bVar4;
  uint uVar5;
  
  if (DAT_032ef93c == '\0') {
    bVar4 = 0;
    do {
      uVar1 = 0;
      bVar3 = 0x80;
      do {
        if ((bVar4 & bVar3) != 0) {
          uVar1 = uVar1 ^ 0x80000000;
        }
        if ((int)uVar1 < 0) {
          uVar1 = uVar1 * 2 ^ 0x4c11db7;
        }
        else {
          uVar1 = uVar1 * 2;
        }
        bVar3 = bVar3 >> 1;
      } while (bVar3 != 0);
      uVar5 = 0;
      uVar2 = 0;
      do {
        if ((uVar1 & 1) != 0) {
          uVar5 = uVar5 | 1 << (0x1fU - (char)uVar2 & 0x1f);
        }
        uVar2 = uVar2 + 1;
        uVar1 = uVar1 >> 1;
      } while (uVar2 < 0x20);
      bVar3 = 0;
      if ((bVar4 & 1) != 0) {
        bVar3 = 0x80;
      }
      if ((bVar4 >> 1 & 1) != 0) {
        bVar3 = bVar3 | 0x40;
      }
      if ((bVar4 >> 2 & 1) != 0) {
        bVar3 = bVar3 | 0x20;
      }
      if ((bVar4 >> 3 & 1) != 0) {
        bVar3 = bVar3 | 0x10;
      }
      if ((bVar4 >> 4 & 1) != 0) {
        bVar3 = bVar3 | 8;
      }
      if ((bVar4 >> 5 & 1) != 0) {
        bVar3 = bVar3 | 4;
      }
      if ((bVar4 >> 6 & 1) != 0) {
        bVar3 = bVar3 | 2;
      }
      if ((bVar4 >> 6 & 2) != 0) {
        bVar3 = bVar3 | 1;
      }
      bVar4 = bVar4 + 1;
      *(uint *)(&DAT_032ef940 + (uint)bVar3 * 4) = uVar5;
    } while (bVar4 != 0);
    DAT_032ef93c = '\x01';
  }
  return;
}



undefined4 * __thiscall FUN_0079c7d0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c089a0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB009B997::W1076BE28>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0079c849(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0079c870(undefined4 param_1_00,byte param_1)

{
  FUN_0079c890(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0079c890(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c08978;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if ((undefined4 *)param_1[1] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[1])(1,DAT_0323f878 ^ (uint)&stack0xfffffff0);
  }
  *param_1 = WB009B997::WA665DD66::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_0079c8f0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0079c950(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0079c950(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0079c9b0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0079c9b0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c08950;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB009B997::W7CD083E2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0079ca29(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * FUN_0079ca50(void)

{
  uint uVar1;
  LONG LVar2;
  void *pvVar3;
  undefined4 *puVar4;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2dfd3;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if ((_DAT_032f11a4 & 1) == 0) {
    _DAT_032f11a4 = _DAT_032f11a4 | 1;
    DAT_032f0274 = (undefined4 *)0x0;
    _atexit((_func_4879 *)&LAB_00c74890);
  }
  LVar2 = InterlockedExchangeAdd((LONG *)&DAT_032efd40,0);
  if (LVar2 == 0) {
    FUN_00b9acd0(uVar1);
    local_c = 0;
    LVar2 = InterlockedExchangeAdd((LONG *)&DAT_032efd40,0);
    if ((LVar2 == 0) && (DAT_032f0274 == (undefined4 *)0x0)) {
      pvVar3 = operator_new(0x14);
      local_c._0_1_ = 1;
      if (pvVar3 == (void *)0x0) {
        puVar4 = (undefined4 *)0x0;
      }
      else {
        puVar4 = (undefined4 *)FUN_00b6dcc0(pvVar3);
      }
      local_c = (uint)local_c._1_3_ << 8;
      if ((puVar4 != DAT_032f0274) && (DAT_032f0274 != (undefined4 *)0x0)) {
        (**(code **)*DAT_032f0274)(1);
      }
      DAT_032f0274 = puVar4;
      InterlockedExchange((LONG *)&DAT_032efd40,1);
    }
    local_c = 0xffffffff;
    FUN_00b9ac60();
  }
  ExceptionList = local_14;
  return DAT_032f0274;
}



void __fastcall FUN_0079cb60(undefined4 *param_1)

{
  *param_1 = WB009B997::W6461508D::vftable;
  return;
}



undefined4 * __thiscall FUN_0079cb70(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WB009B997::W6461508D::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0079cb90(undefined4 param_1_00,byte param_1)

{
  FUN_00b70460();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0079cbb0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0079cc10(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0079cc10(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0079cc70(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0079cc70(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c08930;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB009B997::WE0C5453E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0079cce9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0079cd10(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0079cd70(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0079cd70(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0079cdd0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0079cdd0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c08910;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WE9980253::WCE49FA25>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0079ce49(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0079ce70(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WE9980253::WC6F414AD::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0079ce90(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = common::WF3FA1D5D::vftable;
  if (*(char *)(param_1_00 + 2) != '\0') {
    *(undefined *)(param_1_00 + 2) = 0;
  }
  *param_1_00 = &PTR_DAT_030577b8;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0079cec0(char *param_1)

{
  char *in_EAX;
  
  if (*in_EAX == '\0') {
    if (*param_1 != '\0') {
      if ((undefined4 *)(in_EAX + 8) != (undefined4 *)0x0) {
        *(undefined4 *)(in_EAX + 8) = *(undefined4 *)(param_1 + 8);
        *(undefined4 *)(in_EAX + 0xc) = *(undefined4 *)(param_1 + 0xc);
      }
      *in_EAX = '\x01';
    }
    return;
  }
  if (*param_1 != '\0') {
    *(undefined4 *)(in_EAX + 8) = *(undefined4 *)(param_1 + 8);
    *(undefined4 *)(in_EAX + 0xc) = *(undefined4 *)(param_1 + 0xc);
    return;
  }
  *in_EAX = '\0';
  return;
}



void __fastcall FUN_0079cf00(char *param_1,undefined4 *param_2)

{
  if (*param_1 != '\0') {
    *(undefined4 *)(param_1 + 8) = *param_2;
    *(undefined4 *)(param_1 + 0xc) = param_2[1];
    return;
  }
  if ((undefined4 *)(param_1 + 8) != (undefined4 *)0x0) {
    *(undefined4 *)(param_1 + 8) = *param_2;
    *(undefined4 *)(param_1 + 0xc) = param_2[1];
  }
  *param_1 = '\x01';
  return;
}



undefined4 __thiscall FUN_0079cf30(undefined4 param_1_00,byte param_1)

{
  FUN_00b70030();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0079cf50(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0079cfb0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0079cfb0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0079d010(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0079d010(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c088f0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB009B997::W60A4A3DD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0079d089(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __fastcall FUN_0079d0b0(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_30;
  undefined4 local_2c;
  undefined local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d278;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  local_30 = 0;
  local_10 = 7;
  local_14 = 0;
  local_24 = local_24 & 0xffff0000;
  FID_conflict_assign(&DAT_03057b88,0xb);
  local_4 = 0;
  local_30 = 0x92ccec15;
  local_2c = 0x2e96f8ef;
  FUN_00b94470(&local_30,local_28);
  if (7 < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079d160(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057ba0,0xd);
  local_4 = 0;
  local_2c = 0x65df0bea;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079d200(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057bb0,0xe);
  local_4 = 0;
  local_2c = 0xe680dbe0;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0079d2a0(undefined4 param_1_00,byte param_1)

{
  FUN_00b6fc20();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0079d2c0(undefined4 param_1_00,byte param_1)

{
  FUN_00b6f120();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void ** FUN_0079d2e0(void **param_1)

{
  undefined4 *puVar1;
  undefined4 local_18;
  undefined4 local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c20ce0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = param_1;
  }
  *param_1 = puVar1;
  param_1[4] = (void *)0x0;
  param_1[5] = (void *)0x0;
  param_1[6] = (void *)0x0;
  param_1[7] = (void *)0x0;
  local_18 = 0;
  local_14 = 0;
  local_4 = 1;
  FUN_0079d5a0(param_1,&local_18);
  ExceptionList = local_c;
  return param_1;
}



void FUN_0079d360(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1cfc8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0079d790(DAT_0323f878 ^ (uint)&stack0xfffffff0);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void FUN_0079d3c0(void)

{
  int in_EAX;
  
  if (*(int *)(in_EAX + 0x1c) + *(uint *)(in_EAX + 0x18) < *(uint *)(in_EAX + 0x18)) {
    FUN_00a3fb10();
  }
  FUN_0079df30();
  FUN_0079d7f0();
  return;
}



void FUN_0079d410(undefined4 *param_1)

{
  undefined4 *puVar1;
  int in_EAX;
  void *pvVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  
  if (((*(byte *)(in_EAX + 0x18) & 1) == 0) &&
     (*(uint *)(in_EAX + 0x14) <= *(int *)(in_EAX + 0x1c) + 2U >> 1)) {
    FUN_0079d620();
  }
  iVar4 = *(int *)(in_EAX + 0x18);
  if (iVar4 == 0) {
    iVar4 = *(int *)(in_EAX + 0x14) * 2;
  }
  uVar5 = iVar4 - 1;
  uVar3 = uVar5 >> 1;
  if (*(int *)(*(int *)(in_EAX + 0x10) + uVar3 * 4) == 0) {
    pvVar2 = operator_new(0x10);
    *(void **)(*(int *)(in_EAX + 0x10) + uVar3 * 4) = pvVar2;
  }
  puVar1 = (undefined4 *)(*(int *)(*(int *)(in_EAX + 0x10) + uVar3 * 4) + (uVar5 & 1) * 8);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = *param_1;
    iVar4 = param_1[1];
    puVar1[1] = iVar4;
    if (iVar4 != 0) {
      LOCK();
      *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
      UNLOCK();
    }
  }
  *(int *)(in_EAX + 0x1c) = *(int *)(in_EAX + 0x1c) + 1;
  *(uint *)(in_EAX + 0x18) = uVar5;
  return;
}



void FUN_0079d4a0(void)

{
  int *piVar1;
  int iVar2;
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0x1c) != 0) {
    piVar1 = *(int **)(*(int *)(*(int *)(unaff_ESI + 0x10) + (*(uint *)(unaff_ESI + 0x18) >> 1) * 4)
                       + 4 + (*(uint *)(unaff_ESI + 0x18) & 1) * 8);
    if (piVar1 != (int *)0x0) {
      LOCK();
      iVar2 = piVar1[1] + -1;
      piVar1[1] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 4))();
        LOCK();
        iVar2 = piVar1[2] + -1;
        piVar1[2] = iVar2;
        UNLOCK();
        if (iVar2 == 0) {
          (**(code **)(*piVar1 + 8))();
        }
      }
    }
    *(int *)(unaff_ESI + 0x18) = *(int *)(unaff_ESI + 0x18) + 1;
    if ((uint)(*(int *)(unaff_ESI + 0x14) * 2) <= *(uint *)(unaff_ESI + 0x18)) {
      *(undefined4 *)(unaff_ESI + 0x18) = 0;
    }
    piVar1 = (int *)(unaff_ESI + 0x1c);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      *(undefined4 *)(unaff_ESI + 0x18) = 0;
    }
  }
  return;
}



void FUN_0079d510(undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  void *pvVar3;
  uint uVar4;
  int unaff_ESI;
  uint uVar5;
  
  if (((*(int *)(unaff_ESI + 0x18) + *(int *)(unaff_ESI + 0x1c) & 1U) == 0) &&
     (*(uint *)(unaff_ESI + 0x14) <= *(int *)(unaff_ESI + 0x1c) + 2U >> 1)) {
    FUN_0079d620();
  }
  uVar4 = *(int *)(unaff_ESI + 0x18) + *(int *)(unaff_ESI + 0x1c);
  uVar5 = uVar4 >> 1;
  if (*(uint *)(unaff_ESI + 0x14) <= uVar5) {
    uVar5 = uVar5 - *(uint *)(unaff_ESI + 0x14);
  }
  if (*(int *)(*(int *)(unaff_ESI + 0x10) + uVar5 * 4) == 0) {
    pvVar3 = operator_new(0x10);
    *(void **)(*(int *)(unaff_ESI + 0x10) + uVar5 * 4) = pvVar3;
  }
  puVar1 = (undefined4 *)(*(int *)(*(int *)(unaff_ESI + 0x10) + uVar5 * 4) + (uVar4 & 1) * 8);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = *param_1;
    iVar2 = param_1[1];
    puVar1[1] = iVar2;
    if (iVar2 != 0) {
      LOCK();
      *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
      UNLOCK();
    }
  }
  *(int *)(unaff_ESI + 0x1c) = *(int *)(unaff_ESI + 0x1c) + 1;
  return;
}



void FUN_0079d5a0(undefined4 *param_1,undefined4 param_2)

{
  uint uVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c20cb0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  local_8 = 0;
  uVar1 = param_1[6];
  if (param_1[7] + uVar1 < uVar1) {
    FUN_00a3fb10();
  }
  FUN_0079d8f0(param_1,param_2,*param_1,uVar1);
  ExceptionList = local_10;
  return;
}



void Catch_All_0079d606(void)

{
  code *pcVar1;
  
  FUN_0079d790();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0079d620(void)

{
  void *pvVar1;
  rsize_t _DstSize;
  uint uVar2;
  undefined4 *_Dst;
  int iVar3;
  uint extraout_ECX;
  uint uVar4;
  int unaff_EBX;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  uint local_8;
  
  uVar4 = *(uint *)(unaff_EBX + 0x14);
  local_8 = 1;
  if (uVar4 == 0xfffffff) {
    FUN_0079de80();
    uVar4 = extraout_ECX;
  }
  uVar2 = uVar4 >> 1;
  if (uVar2 < 8) {
    uVar2 = 8;
  }
  else if (uVar2 < 2) goto LAB_0079d666;
  if (uVar4 <= 0xfffffff - uVar2) {
    local_8 = uVar2;
  }
LAB_0079d666:
  uVar2 = *(uint *)(unaff_EBX + 0x18) >> 1;
  if (uVar4 + local_8 == 0) {
    _Dst = (undefined4 *)operator_new(0);
  }
  else {
    _Dst = (undefined4 *)FUN_005e16a0();
  }
  iVar5 = uVar2 * 4;
  pvVar1 = (void *)(iVar5 + *(int *)(unaff_EBX + 0x10));
  iVar3 = (*(int *)(unaff_EBX + 0x14) * 4 - (int)pvVar1) + *(int *)(unaff_EBX + 0x10) >> 2;
  puVar7 = _Dst + uVar2 + iVar3;
  if (iVar3 != 0) {
    _memmove_s(_Dst + uVar2,iVar3 * 4,pvVar1,iVar3 * 4);
  }
  if (local_8 < uVar2) {
    iVar3 = (int)(local_8 * 4) >> 2;
    if (iVar3 != 0) {
      _DstSize = iVar3 * 4;
      _memmove_s(puVar7,_DstSize,*(void **)(unaff_EBX + 0x10),_DstSize);
    }
    pvVar1 = (void *)(*(int *)(unaff_EBX + 0x10) + local_8 * 4);
    iVar5 = (iVar5 - (int)pvVar1) + *(int *)(unaff_EBX + 0x10) >> 2;
    puVar7 = _Dst + iVar5;
    uVar2 = local_8;
    if (iVar5 != 0) {
      _memmove_s(_Dst,iVar5 * 4,pvVar1,iVar5 * 4);
    }
  }
  else {
    iVar5 = iVar5 >> 2;
    puVar6 = puVar7 + iVar5;
    if (iVar5 != 0) {
      _memmove_s(puVar7,iVar5 * 4,*(void **)(unaff_EBX + 0x10),iVar5 * 4);
    }
    iVar5 = local_8 - uVar2;
    puVar7 = _Dst;
    if (iVar5 != 0) {
      for (; iVar5 != 0; iVar5 = iVar5 + -1) {
        *puVar6 = 0;
        puVar6 = puVar6 + 1;
      }
    }
  }
  if (uVar2 != 0) {
    for (; uVar2 != 0; uVar2 = uVar2 - 1) {
      *puVar7 = 0;
      puVar7 = puVar7 + 1;
    }
  }
  if (*(int *)(unaff_EBX + 0x10) == 0) {
    *(int *)(unaff_EBX + 0x14) = *(int *)(unaff_EBX + 0x14) + local_8;
    *(undefined4 **)(unaff_EBX + 0x10) = _Dst;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(int *)(unaff_EBX + 0x10));
}



void FUN_0079d790(void)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = *(int *)(in_EAX + 0x1c);
  while (iVar1 != 0) {
    FUN_0079d880();
    iVar1 = *(int *)(in_EAX + 0x1c);
  }
  iVar1 = *(int *)(in_EAX + 0x14);
  while (iVar1 != 0) {
    iVar1 = iVar1 + -1;
    if (*(int *)(*(int *)(in_EAX + 0x10) + iVar1 * 4) != 0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(*(int *)(in_EAX + 0x10) + iVar1 * 4));
    }
  }
  if (*(int *)(in_EAX + 0x10) == 0) {
    *(undefined4 *)(in_EAX + 0x10) = 0;
    *(undefined4 *)(in_EAX + 0x14) = 0;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(int *)(in_EAX + 0x10));
}



int FUN_0079d7f0(void)

{
  int **in_EAX;
  uint uVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  
  uVar1 = (uint)in_EAX[1] & 1;
  piVar2 = *in_EAX;
  uVar5 = (uint)in_EAX[1] >> 1;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    piVar2 = *in_EAX;
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
      goto LAB_0079d818;
    }
  }
  iVar4 = *piVar2;
LAB_0079d818:
  if (piVar2 == (int *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar2;
  }
  if ((int *)(*(int *)(iVar3 + 0x1c) + *(int *)(iVar4 + 0x18)) <= in_EAX[1]) {
    FUN_00a3fb10();
  }
  piVar2 = *in_EAX;
  if (piVar2 == (int *)0x0) {
    iVar4 = 0;
  }
  else {
    iVar4 = *piVar2;
  }
  if (*(uint *)(iVar4 + 0x14) <= uVar5) {
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *piVar2;
    }
    uVar5 = uVar5 - *(int *)(iVar4 + 0x14);
  }
  if (piVar2 != (int *)0x0) {
    return *(int *)(*(int *)(*piVar2 + 0x10) + uVar5 * 4) + uVar1 * 8;
  }
  return *(int *)(iRam00000010 + uVar5 * 4) + uVar1 * 8;
}



int ** FUN_0079d880(void)

{
  int **ppiVar1;
  uint uVar2;
  int *piVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  uint uVar7;
  int unaff_EDI;
  
  ppiVar6 = *(int ***)(unaff_EDI + 0x1c);
  if (ppiVar6 != (int **)0x0) {
    uVar2 = (int)ppiVar6 + *(int *)(unaff_EDI + 0x18) + -1;
    uVar7 = uVar2 >> 1;
    if (*(uint *)(unaff_EDI + 0x14) <= uVar7) {
      uVar7 = uVar7 - *(uint *)(unaff_EDI + 0x14);
    }
    ppiVar6 = (int **)(*(int *)(*(int *)(unaff_EDI + 0x10) + uVar7 * 4) + 4 + (uVar2 & 1) * 8);
    piVar4 = *ppiVar6;
    if (piVar4 != (int *)0x0) {
      ppiVar1 = (int **)(piVar4 + 1);
      LOCK();
      piVar3 = *ppiVar1;
      ppiVar6 = (int **)*ppiVar1;
      *ppiVar1 = (int *)((int)piVar3 + -1);
      UNLOCK();
      if ((int *)((int)piVar3 + -1) == (int *)0x0) {
        ppiVar6 = (int **)(**(code **)(*piVar4 + 4))();
        LOCK();
        iVar5 = piVar4[2] + -1;
        piVar4[2] = iVar5;
        UNLOCK();
        if (iVar5 == 0) {
          ppiVar6 = (int **)(**(code **)(*piVar4 + 8))();
        }
      }
    }
    piVar4 = (int *)(unaff_EDI + 0x1c);
    *piVar4 = *piVar4 + -1;
    if (*piVar4 == 0) {
      *(undefined4 *)(unaff_EDI + 0x18) = 0;
    }
  }
  return ppiVar6;
}



// WARNING: Removing unreachable block (ram,0x0079dbf7)
// WARNING: Removing unreachable block (ram,0x0079dc03)
// WARNING: Removing unreachable block (ram,0x0079dc08)
// WARNING: Removing unreachable block (ram,0x0079dc41)
// WARNING: Removing unreachable block (ram,0x0079dc24)
// WARNING: Removing unreachable block (ram,0x0079dc2d)
// WARNING: Removing unreachable block (ram,0x0079dc39)
// WARNING: Removing unreachable block (ram,0x0079dc47)
// WARNING: Removing unreachable block (ram,0x0079dc3d)
// WARNING: Removing unreachable block (ram,0x0079dc49)
// WARNING: Removing unreachable block (ram,0x0079dc4e)
// WARNING: Removing unreachable block (ram,0x0079dc53)

void FUN_0079d8f0(int **param_1,int param_2,int *param_3,int param_4)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  undefined4 uVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  int local_18;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c20c90;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  piVar1 = param_1[6];
  if ((int *)((int)param_1[7] + (int)piVar1) < piVar1) {
    FUN_00a3fb10();
  }
  if ((param_3 == (int *)0x0) || (param_3 != *param_1)) {
    FUN_00a3fb10();
  }
  uVar6 = param_4 - (int)piVar1;
  piVar1 = param_1[7];
  local_18 = 0;
  if ((int)piVar1 - uVar6 <= uVar6) {
    local_8 = 3;
    piVar2 = param_1[6];
    if ((int *)((int)param_1[7] + (int)piVar2) < piVar2) {
      FUN_00a3fb10();
    }
    piVar3 = *param_1;
    if (piVar3 == (int *)0x0) {
      FUN_00a3fb10();
      iVar7 = 0;
    }
    else {
      iVar7 = *piVar3;
    }
    uVar8 = uVar6 + (int)piVar2;
    if ((uint)(*(int *)(iVar7 + 0x1c) + *(int *)(iVar7 + 0x18)) < uVar8) {
LAB_0079dcc1:
      FUN_00a3fb10();
    }
    else {
      if (piVar3 == (int *)0x0) {
        iVar7 = 0;
      }
      else {
        iVar7 = *piVar3;
      }
      if (uVar8 < *(uint *)(iVar7 + 0x18)) goto LAB_0079dcc1;
    }
    piVar2 = *(int **)(param_2 + 4);
    if (piVar2 != (int *)0x0) {
      LOCK();
      piVar2[1] = piVar2[1] + 1;
      UNLOCK();
    }
    local_8 = CONCAT31(local_8._1_3_,4);
    if (piVar3 == (int *)0x0) {
      FUN_00a3fb10();
      iVar7 = 0;
    }
    else {
      iVar7 = *piVar3;
    }
    uVar6 = uVar8 + ((int)piVar1 - uVar6);
    if ((uint)(*(int *)(iVar7 + 0x1c) + *(int *)(iVar7 + 0x18)) < uVar6) {
LAB_0079dd23:
      FUN_00a3fb10();
    }
    else {
      if (piVar3 == (int *)0x0) {
        iVar7 = 0;
      }
      else {
        iVar7 = *piVar3;
      }
      if (uVar6 < *(uint *)(iVar7 + 0x18)) goto LAB_0079dd23;
    }
    if (piVar3 == (int *)0x0) {
      FUN_00a3fb10();
      iVar7 = 0;
    }
    else {
      iVar7 = *piVar3;
    }
    if ((uint)(*(int *)(iVar7 + 0x1c) + *(int *)(iVar7 + 0x18)) < uVar6) {
LAB_0079dd5c:
      FUN_00a3fb10();
    }
    else {
      if (piVar3 == (int *)0x0) {
        iVar7 = 0;
      }
      else {
        iVar7 = *piVar3;
      }
      if (uVar6 < *(uint *)(iVar7 + 0x18)) goto LAB_0079dd5c;
    }
    if (piVar3 == (int *)0x0) {
      FUN_00a3fb10();
      iVar7 = 0;
    }
    else {
      iVar7 = *piVar3;
    }
    if ((uint)(*(int *)(iVar7 + 0x1c) + *(int *)(iVar7 + 0x18)) < uVar6) {
LAB_0079dd9d:
      FUN_00a3fb10();
    }
    else {
      if (piVar3 == (int *)0x0) {
        iVar7 = 0;
      }
      else {
        iVar7 = *piVar3;
      }
      if (uVar6 < *(uint *)(iVar7 + 0x18)) goto LAB_0079dd9d;
    }
    FUN_0079e020(piVar3,uVar8,piVar3,uVar6,piVar3,uVar6);
    if (piVar3 == (int *)0x0) {
      FUN_00a3fb10();
      iVar7 = 0;
    }
    else {
      iVar7 = *piVar3;
    }
    if (uVar8 <= (uint)(*(int *)(iVar7 + 0x1c) + *(int *)(iVar7 + 0x18))) {
      if (piVar3 == (int *)0x0) {
        iVar7 = 0;
      }
      else {
        iVar7 = *piVar3;
      }
      if (*(uint *)(iVar7 + 0x18) <= uVar8) goto LAB_0079ddf6;
    }
    FUN_00a3fb10();
LAB_0079ddf6:
    FUN_0079df80(piVar3,uVar8,piVar3,uVar8);
    local_8 = CONCAT31(local_8._1_3_,3);
    if (piVar2 == (int *)0x0) {
      ExceptionList = local_10;
      return;
    }
    LOCK();
    iVar7 = piVar2[1] + -1;
    piVar2[1] = iVar7;
    UNLOCK();
    if (iVar7 != 0) {
      ExceptionList = local_10;
      return;
    }
    (**(code **)(*piVar2 + 4))();
    LOCK();
    iVar7 = piVar2[2] + -1;
    piVar2[2] = iVar7;
    UNLOCK();
    if (iVar7 != 0) {
      ExceptionList = local_10;
      return;
    }
    (**(code **)(*piVar2 + 8))();
    ExceptionList = local_10;
    return;
  }
  local_8 = 0;
  for (; local_18 != 0; local_18 = local_18 + -1) {
    piVar1 = param_1[6];
    if ((int *)((int)param_1[7] + (int)piVar1) < piVar1) {
      FUN_00a3fb10();
    }
    piVar2 = *param_1;
    if (piVar2 == (int *)0x0) {
      FUN_00a3fb10();
      iVar7 = 0;
    }
    else {
      iVar7 = *piVar2;
    }
    if ((uint)(*(int *)(iVar7 + 0x1c) + *(int *)(iVar7 + 0x18)) < (int)piVar1 - 1U) {
LAB_0079d9c6:
      FUN_00a3fb10();
    }
    else {
      if (piVar2 == (int *)0x0) {
        iVar7 = 0;
      }
      else {
        iVar7 = *piVar2;
      }
      if ((int)piVar1 - 1U < *(uint *)(iVar7 + 0x18)) goto LAB_0079d9c6;
    }
    uVar5 = FUN_0079d7f0();
    FUN_0079d410(uVar5);
  }
  piVar1 = param_1[6];
  if ((int *)((int)param_1[7] + (int)piVar1) < piVar1) {
    FUN_00a3fb10();
  }
  piVar2 = *param_1;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar7 = 0;
  }
  else {
    iVar7 = *piVar2;
  }
  if ((int *)(*(int *)(iVar7 + 0x1c) + *(int *)(iVar7 + 0x18)) < piVar1) {
LAB_0079da2d:
    FUN_00a3fb10();
  }
  else {
    if (piVar2 == (int *)0x0) {
      iVar7 = 0;
    }
    else {
      iVar7 = *piVar2;
    }
    if (piVar1 < *(int **)(iVar7 + 0x18)) goto LAB_0079da2d;
  }
  piVar3 = *(int **)(param_2 + 4);
  if (piVar3 != (int *)0x0) {
    LOCK();
    piVar3[1] = piVar3[1] + 1;
    UNLOCK();
  }
  local_8 = CONCAT31(local_8._1_3_,1);
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar7 = 0;
  }
  else {
    iVar7 = *piVar2;
  }
  uVar8 = uVar6 + (int)piVar1;
  if ((uint)(*(int *)(iVar7 + 0x1c) + *(int *)(iVar7 + 0x18)) < uVar8) {
LAB_0079da8b:
    FUN_00a3fb10();
  }
  else {
    if (piVar2 == (int *)0x0) {
      iVar7 = 0;
    }
    else {
      iVar7 = *piVar2;
    }
    if (uVar8 < *(uint *)(iVar7 + 0x18)) goto LAB_0079da8b;
  }
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar7 = 0;
  }
  else {
    iVar7 = *piVar2;
  }
  if ((int *)(*(int *)(iVar7 + 0x1c) + *(int *)(iVar7 + 0x18)) < piVar1) {
LAB_0079dac4:
    FUN_00a3fb10();
  }
  else {
    if (piVar2 == (int *)0x0) {
      iVar7 = 0;
    }
    else {
      iVar7 = *piVar2;
    }
    if (piVar1 < *(int **)(iVar7 + 0x18)) goto LAB_0079dac4;
  }
  FUN_0079dfc0(piVar2,piVar1,piVar2,uVar8,piVar2,piVar1);
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar7 = 0;
  }
  else {
    iVar7 = *piVar2;
  }
  if ((uint)(*(int *)(iVar7 + 0x1c) + *(int *)(iVar7 + 0x18)) < uVar8) {
LAB_0079db14:
    FUN_00a3fb10();
  }
  else {
    if (piVar2 == (int *)0x0) {
      iVar7 = 0;
    }
    else {
      iVar7 = *piVar2;
    }
    if (uVar8 < *(uint *)(iVar7 + 0x18)) goto LAB_0079db14;
  }
  piVar1 = param_1[6];
  if ((int *)((int)param_1[7] + (int)piVar1) < piVar1) {
    FUN_00a3fb10();
  }
  piVar4 = *param_1;
  if (piVar4 == (int *)0x0) {
    FUN_00a3fb10();
    iVar7 = 0;
  }
  else {
    iVar7 = *piVar4;
  }
  uVar6 = (int)piVar1 + uVar6;
  if (uVar6 <= (uint)(*(int *)(iVar7 + 0x1c) + *(int *)(iVar7 + 0x18))) {
    if (piVar4 == (int *)0x0) {
      iVar7 = 0;
    }
    else {
      iVar7 = *piVar4;
    }
    if (*(uint *)(iVar7 + 0x18) <= uVar6) goto LAB_0079db68;
  }
  FUN_00a3fb10();
LAB_0079db68:
  FUN_0079df80(piVar4,uVar6,piVar2,uVar8);
  local_8 = local_8 & 0xffffff00;
  if (piVar3 != (int *)0x0) {
    LOCK();
    iVar7 = piVar3[1] + -1;
    piVar3[1] = iVar7;
    UNLOCK();
    if (iVar7 == 0) {
      (**(code **)(*piVar3 + 4))();
      LOCK();
      iVar7 = piVar3[2] + -1;
      piVar3[2] = iVar7;
      UNLOCK();
      if (iVar7 == 0) {
        (**(code **)(*piVar3 + 8))();
      }
    }
  }
  ExceptionList = local_10;
  return;
}



// WARNING: Removing unreachable block (ram,0x0079dbf7)
// WARNING: Removing unreachable block (ram,0x0079dc03)
// WARNING: Removing unreachable block (ram,0x0079dc08)
// WARNING: Removing unreachable block (ram,0x0079dc41)
// WARNING: Removing unreachable block (ram,0x0079dc24)
// WARNING: Removing unreachable block (ram,0x0079dc2d)
// WARNING: Removing unreachable block (ram,0x0079dc39)
// WARNING: Removing unreachable block (ram,0x0079dc47)
// WARNING: Removing unreachable block (ram,0x0079dc3d)
// WARNING: Removing unreachable block (ram,0x0079dc49)
// WARNING: Removing unreachable block (ram,0x0079dc4e)
// WARNING: Removing unreachable block (ram,0x0079dc53)

void Catch_All_0079dbc6(void)

{
  uint uVar1;
  int *piVar2;
  int **ppiVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int unaff_EBP;
  
  ppiVar3 = *(int ***)(unaff_EBP + 8);
  piVar4 = *(int **)(unaff_EBP + -0x28);
  piVar2 = ppiVar3[7];
  while (piVar4 < piVar2) {
    FUN_0079d4a0();
    piVar2 = ppiVar3[7];
  }
  __CxxThrowException_8(0,0);
  *(undefined4 *)(unaff_EBP + -4) = 3;
  piVar2 = ppiVar3[6];
  if ((int *)((int)ppiVar3[7] + (int)piVar2) < piVar2) {
    FUN_00a3fb10();
  }
  piVar4 = *ppiVar3;
  *(int **)(unaff_EBP + -0x34) = piVar2;
  if (piVar4 == (int *)0x0) {
    FUN_00a3fb10();
    iVar6 = 0;
  }
  else {
    iVar6 = *piVar4;
  }
  iVar5 = *(int *)(iVar6 + 0x1c);
  iVar6 = *(int *)(iVar6 + 0x18);
  uVar7 = *(int *)(unaff_EBP + -0x18) + (int)piVar2;
  *(uint *)(unaff_EBP + -0x14) = uVar7;
  if ((uint)(iVar5 + iVar6) < uVar7) {
LAB_0079dcc1:
    FUN_00a3fb10();
    uVar7 = *(uint *)(unaff_EBP + -0x14);
  }
  else {
    if (piVar4 == (int *)0x0) {
      iVar6 = 0;
    }
    else {
      iVar6 = *piVar4;
    }
    if (uVar7 < *(uint *)(iVar6 + 0x18)) goto LAB_0079dcc1;
  }
  iVar6 = (*(undefined4 **)(unaff_EBP + 0xc))[1];
  *(undefined4 *)(unaff_EBP + -0x1c) = **(undefined4 **)(unaff_EBP + 0xc);
  *(int *)(unaff_EBP + -0x18) = iVar6;
  if (iVar6 != 0) {
    LOCK();
    *(int *)(iVar6 + 4) = *(int *)(iVar6 + 4) + 1;
    UNLOCK();
  }
  *(undefined *)(unaff_EBP + -4) = 4;
  *(uint *)(unaff_EBP + -0x34) = uVar7;
  if (piVar4 == (int *)0x0) {
    FUN_00a3fb10();
    uVar7 = *(uint *)(unaff_EBP + -0x14);
    iVar6 = 0;
  }
  else {
    iVar6 = *piVar4;
  }
  uVar1 = uVar7 + *(int *)(unaff_EBP + -0x20);
  if ((uint)(*(int *)(iVar6 + 0x1c) + *(int *)(iVar6 + 0x18)) < uVar1) {
LAB_0079dd23:
    FUN_00a3fb10();
    uVar7 = *(uint *)(unaff_EBP + -0x14);
  }
  else {
    if (piVar4 == (int *)0x0) {
      iVar6 = 0;
    }
    else {
      iVar6 = *piVar4;
    }
    if (uVar1 < *(uint *)(iVar6 + 0x18)) goto LAB_0079dd23;
  }
  *(uint *)(unaff_EBP + -0x34) = uVar7;
  if (piVar4 == (int *)0x0) {
    FUN_00a3fb10();
    iVar6 = 0;
  }
  else {
    iVar6 = *piVar4;
  }
  if ((uint)(*(int *)(iVar6 + 0x1c) + *(int *)(iVar6 + 0x18)) < uVar1) {
LAB_0079dd5c:
    FUN_00a3fb10();
  }
  else {
    if (piVar4 == (int *)0x0) {
      iVar6 = 0;
    }
    else {
      iVar6 = *piVar4;
    }
    if (uVar1 < *(uint *)(iVar6 + 0x18)) goto LAB_0079dd5c;
  }
  *(int **)(unaff_EBP + -0x38) = piVar4;
  *(uint *)(unaff_EBP + -0x34) = uVar1;
  if (piVar4 == (int *)0x0) {
    FUN_00a3fb10();
    iVar6 = 0;
  }
  else {
    iVar6 = *piVar4;
  }
  if ((uint)(*(int *)(iVar6 + 0x1c) + *(int *)(iVar6 + 0x18)) < uVar1) {
LAB_0079dd9d:
    FUN_00a3fb10();
  }
  else {
    if (piVar4 == (int *)0x0) {
      iVar6 = 0;
    }
    else {
      iVar6 = *piVar4;
    }
    if (uVar1 < *(uint *)(iVar6 + 0x18)) goto LAB_0079dd9d;
  }
  FUN_0079e020(piVar4,*(undefined4 *)(unaff_EBP + -0x14),*(undefined4 *)(unaff_EBP + -0x38),uVar1,
               piVar4,uVar1);
  uVar7 = *(uint *)(unaff_EBP + -0x14);
  *(uint *)(unaff_EBP + -0x34) = uVar7;
  if (piVar4 == (int *)0x0) {
    FUN_00a3fb10();
    iVar6 = 0;
  }
  else {
    iVar6 = *piVar4;
  }
  if (uVar7 <= (uint)(*(int *)(iVar6 + 0x1c) + *(int *)(iVar6 + 0x18))) {
    if (piVar4 == (int *)0x0) {
      iVar6 = 0;
    }
    else {
      iVar6 = *piVar4;
    }
    if (*(uint *)(iVar6 + 0x18) <= uVar7) goto LAB_0079ddf6;
  }
  FUN_00a3fb10();
LAB_0079ddf6:
  FUN_0079df80(piVar4,*(undefined4 *)(unaff_EBP + -0x14),piVar4,uVar7);
  *(undefined *)(unaff_EBP + -4) = 3;
  piVar2 = *(int **)(unaff_EBP + -0x18);
  if (piVar2 != (int *)0x0) {
    LOCK();
    iVar6 = piVar2[1] + -1;
    piVar2[1] = iVar6;
    UNLOCK();
    if (iVar6 == 0) {
      (**(code **)(*piVar2 + 4))();
      LOCK();
      iVar6 = piVar2[2] + -1;
      piVar2[2] = iVar6;
      UNLOCK();
      if (iVar6 == 0) {
        (**(code **)(*piVar2 + 8))();
        ExceptionList = *(void **)(unaff_EBP + -0xc);
        return;
      }
    }
  }
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



void Catch_All_0079de5d(void)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  code *pcVar4;
  int unaff_EBP;
  
  iVar2 = *(int *)(unaff_EBP + 8);
  uVar3 = *(uint *)(unaff_EBP + -0x28);
  uVar1 = *(uint *)(iVar2 + 0x1c);
  while (uVar3 < uVar1) {
    FUN_0079d880();
    uVar1 = *(uint *)(iVar2 + 0x1c);
  }
  __CxxThrowException_8(0,0);
  pcVar4 = (code *)swi(3);
  (*pcVar4)();
  return;
}



void FUN_0079de80(void)

{
  code *pcVar1;
  uint uVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_5c [4];
  undefined local_58;
  undefined4 local_48;
  undefined4 local_44;
  undefined **local_40 [3];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_34 [4];
  undefined local_30;
  undefined4 local_20;
  undefined4 local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1d090;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_14;
  local_44 = 0xf;
  local_48 = 0;
  local_58 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_5c,"deque<T> too long",0x11);
  local_c = 0;
  FUN_00a3f1a9(uVar2);
  local_c._0_1_ = 1;
  local_40[0] = std::logic_error::vftable;
  local_1c = 0xf;
  local_20 = 0;
  local_30 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_34,local_5c,0,0xffffffff);
  local_c = (uint)local_c._1_3_ << 8;
  local_40[0] = std::length_error::vftable;
  __CxxThrowException_8(local_40,&DAT_03115554);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0079df30(void)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int unaff_EBX;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 != (int *)0x0) goto LAB_0079df42;
    iVar2 = 0;
  }
  else {
LAB_0079df42:
    iVar2 = *piVar1;
  }
  if (piVar1 == (int *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar1;
  }
  if ((uint)((int)unaff_ESI[1] + unaff_EBX) <=
      (uint)(*(int *)(iVar3 + 0x1c) + *(int *)(iVar2 + 0x18))) {
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *piVar1;
    }
    if (*(uint *)(iVar2 + 0x18) <= (uint)((int)unaff_ESI[1] + unaff_EBX)) goto LAB_0079df76;
  }
  FUN_00a3fb10();
LAB_0079df76:
  unaff_ESI[1] = (int *)((int)unaff_ESI[1] + unaff_EBX);
  return;
}



void FUN_0079df80(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4)

{
  if (param_3 == (undefined4 *)0x0) {
    param_3 = (undefined4 *)0x0;
  }
  else {
    param_3 = (undefined4 *)*param_3;
  }
  if (param_1 == (undefined4 *)0x0) {
    param_1 = (undefined4 *)0x0;
  }
  else {
    param_1 = (undefined4 *)*param_1;
  }
  FUN_0079e090(*param_1,param_2,*param_3,param_4);
  return;
}



void FUN_0079dfc0(void)

{
  FUN_0079e110();
  return;
}



void FUN_0079e020(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  if (param_3 == (undefined4 *)0x0) {
    param_3 = (undefined4 *)0x0;
  }
  else {
    param_3 = (undefined4 *)*param_3;
  }
  if (param_1 == (undefined4 *)0x0) {
    param_1 = (undefined4 *)0x0;
  }
  else {
    param_1 = (undefined4 *)*param_1;
  }
  FUN_0079e1b0(0,0,0,*param_1,param_2,*param_3,param_4,param_5,param_6);
  return;
}



void FUN_0079e090(undefined4 param_1,int param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined4 *puVar4;
  undefined4 *unaff_EDI;
  undefined4 local_8 [2];
  
  for (; param_2 != param_4; param_2 = param_2 + 1) {
    puVar4 = (undefined4 *)FUN_0079d7f0();
    iVar1 = unaff_EDI[1];
    uVar2 = *unaff_EDI;
    if (iVar1 != 0) {
      LOCK();
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
      UNLOCK();
    }
    if (local_8 != puVar4) {
      *puVar4 = uVar2;
    }
    piVar3 = (int *)puVar4[1];
    puVar4[1] = iVar1;
    if (piVar3 != (int *)0x0) {
      LOCK();
      iVar1 = piVar3[1] + -1;
      piVar3[1] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*piVar3 + 4))();
        LOCK();
        iVar1 = piVar3[2] + -1;
        piVar3[2] = iVar1;
        UNLOCK();
        if (iVar1 == 0) {
          (**(code **)(*piVar3 + 8))();
        }
      }
    }
  }
  return;
}



undefined4 * FUN_0079e110(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 param_5;
  undefined4 param_6;
  undefined4 param_7;
  undefined4 param_8;
  undefined4 *param_9;
  undefined4 param_10;
  uint local_c;
  
  puVar1 = param_1;
  FUN_0079df30();
  *param_1 = param_9;
  puVar2 = (undefined4 *)0x0;
  param_1[1] = param_10;
  param_1 = (undefined4 *)((uint)param_1 & 0xffffff00);
  local_c = (uint)param_9 & 0xffffff00;
  if (param_9 != (undefined4 *)0x0) {
    puVar2 = (undefined4 *)*param_9;
  }
  FUN_0079e240(param_5,param_6,param_7,param_8,*puVar2,param_10,param_1,local_c,param_1);
  return puVar1;
}



void FUN_0079e1b0(void)

{
  undefined4 *puVar1;
  undefined4 *unaff_EDI;
  undefined4 param_4;
  undefined4 param_5;
  undefined4 param_6;
  undefined4 param_7;
  undefined4 *param_8;
  undefined4 param_9;
  uint local_c;
  uint local_8;
  
  FUN_0079df30();
  *unaff_EDI = param_8;
  puVar1 = (undefined4 *)0x0;
  unaff_EDI[1] = param_9;
  local_c = local_c & 0xffffff00;
  local_8 = (uint)param_8 & 0xffffff00;
  if (param_8 != (undefined4 *)0x0) {
    puVar1 = (undefined4 *)*param_8;
  }
  FUN_0079e2e0(param_4,param_5,param_6,param_7,*puVar1,param_9,param_8,local_8,local_c);
  return;
}



void FUN_0079e240(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,
                 int param_6)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 *unaff_EDI;
  undefined4 local_8 [2];
  
  for (; param_2 != param_4; param_2 = param_2 + 1) {
    puVar4 = (undefined4 *)FUN_0079d7f0();
    puVar5 = (undefined4 *)FUN_0079d7f0();
    iVar1 = puVar4[1];
    uVar2 = *puVar4;
    if (iVar1 != 0) {
      LOCK();
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
      UNLOCK();
    }
    if (local_8 != puVar5) {
      *puVar5 = uVar2;
    }
    piVar3 = (int *)puVar5[1];
    puVar5[1] = iVar1;
    if (piVar3 != (int *)0x0) {
      LOCK();
      iVar1 = piVar3[1] + -1;
      piVar3[1] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*piVar3 + 4))();
        LOCK();
        iVar1 = piVar3[2] + -1;
        piVar3[2] = iVar1;
        UNLOCK();
        if (iVar1 == 0) {
          (**(code **)(*piVar3 + 8))();
        }
      }
    }
    param_6 = param_6 + 1;
  }
  *unaff_EDI = param_5;
  unaff_EDI[1] = param_6;
  return;
}



void FUN_0079e2e0(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,
                 int param_6)

{
  undefined4 uVar1;
  int iVar2;
  int *piVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 *unaff_EBX;
  undefined4 local_8 [2];
  
  while (param_2 != param_4) {
    param_4 = param_4 + -1;
    puVar4 = (undefined4 *)FUN_0079d7f0();
    param_6 = param_6 + -1;
    puVar5 = (undefined4 *)FUN_0079d7f0();
    uVar1 = *puVar4;
    iVar2 = puVar4[1];
    if (iVar2 != 0) {
      LOCK();
      *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
      UNLOCK();
    }
    if (local_8 != puVar5) {
      *puVar5 = uVar1;
    }
    piVar3 = (int *)puVar5[1];
    puVar5[1] = iVar2;
    if (piVar3 != (int *)0x0) {
      LOCK();
      iVar2 = piVar3[1] + -1;
      piVar3[1] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar3 + 4))();
        LOCK();
        iVar2 = piVar3[2] + -1;
        piVar3[2] = iVar2;
        UNLOCK();
        if (iVar2 == 0) {
          (**(code **)(*piVar3 + 8))();
        }
      }
    }
  }
  *unaff_EBX = param_5;
  unaff_EBX[1] = param_6;
  return;
}



undefined4 __thiscall FUN_0079e380(undefined4 param_1_00,byte param_1)

{
  FUN_00b6eb90();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * FUN_0079e3a0(void)

{
  uint uVar1;
  LONG LVar2;
  void *pvVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c42943;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  if ((_DAT_032f11a0 & 1) == 0) {
    _DAT_032f11a0 = _DAT_032f11a0 | 1;
    DAT_032f0270 = (undefined4 *)0x0;
    _atexit((_func_4879 *)&LAB_00c748b0);
  }
  LVar2 = InterlockedExchangeAdd((LONG *)&DAT_032efd48,0);
  if (LVar2 == 0) {
    FUN_00b9acd0(uVar1);
    local_4 = 0;
    LVar2 = InterlockedExchangeAdd((LONG *)&DAT_032efd48,0);
    if ((LVar2 == 0) && (DAT_032f0270 == (undefined4 *)0x0)) {
      pvVar3 = operator_new(0x1c);
      local_4._0_1_ = 1;
      if (pvVar3 == (void *)0x0) {
        puVar4 = (undefined4 *)0x0;
      }
      else {
        puVar4 = (undefined4 *)FUN_00b6d960(pvVar3);
      }
      local_4 = (uint)local_4._1_3_ << 8;
      if ((puVar4 != DAT_032f0270) && (DAT_032f0270 != (undefined4 *)0x0)) {
        (**(code **)*DAT_032f0270)(1);
      }
      DAT_032f0270 = puVar4;
      InterlockedExchange((LONG *)&DAT_032efd48,1);
    }
    local_4 = 0xffffffff;
    FUN_00b9ac60();
  }
  ExceptionList = local_c;
  return DAT_032f0270;
}



undefined4 * __thiscall FUN_0079e4b0(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0079e510(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0079e510(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0079e570(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0079e570(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c088d0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8D447680::WB3A3899E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0079e5e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_0079e610(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WE9980253::W366C86D3::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0079e630(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W76FAFBE0::W74122BFD::vftable;
  if (7 < (uint)param_1_00[7]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[2]);
  }
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  *param_1_00 = W76FAFBE0::WAD5067CC::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0079e680(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0079e6e0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0079e6e0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0079e740(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0079e740(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c088b0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76FAFBE0::W74122BFD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0079e7b9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_0079e7e0(undefined4 param_1_00,byte param_1)

{
  FUN_00b6e800();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_0079e800(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_30;
  undefined4 local_2c;
  undefined local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d278;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  local_30 = 0;
  local_10 = 7;
  local_14 = 0;
  local_24 = local_24 & 0xffff0000;
  FID_conflict_assign(&DAT_03057c3c,0xd);
  local_4 = 0;
  local_30 = 0x46a253e5;
  local_2c = 0x6d8eafab;
  FUN_00b94470(&local_30,local_28);
  if (7 < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079e8b0(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057c58,9);
  local_4 = 0;
  local_2c = 0xdefd50e4;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079e950(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057c64,0x10);
  local_4 = 0;
  local_2c = 0x6255bb96;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079e9f0(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057c78,9);
  local_4 = 0;
  local_2c = 0xf97cee26;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079ea90(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057c84,10);
  local_4 = 0;
  local_2c = 0xfa5d8a6e;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079eb30(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057c90,0x10);
  local_4 = 0;
  local_2c = 0x3b7fe3ec;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079ebd0(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057ca4,0x21);
  local_4 = 0;
  local_2c = 0xcbcc5cba;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079ec70(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057cc8,0x14);
  local_4 = 0;
  local_2c = 0xd352ec19;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079ed10(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057ce0,0xf);
  local_4 = 0;
  local_2c = 0xa1680b56;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0079edb0(undefined4 param_1_00,byte param_1)

{
  FUN_00b6e220();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0079edd0(undefined4 *param_1_00,byte param_1)

{
  param_1_00[1] = 0xffffffff;
  *param_1_00 = W76FAFBE0::WE4A1E41E::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0079ee00(undefined4 param_1_00,undefined4 *param_2,char param_1)

{
  undefined *in_EAX;
  
  *in_EAX = 0;
  if (param_1 != '\0') {
    if ((undefined4 *)(in_EAX + 8) != (undefined4 *)0x0) {
      *(undefined4 *)(in_EAX + 8) = *param_2;
      *(undefined4 *)(in_EAX + 0xc) = param_2[1];
    }
    *in_EAX = 1;
  }
  return;
}



undefined4 * __thiscall FUN_0079ee30(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_0079ee90(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0079ee90(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_0079eef0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_0079eef0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c08890;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76FAFBE0::W6E17C27C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0079ef69(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __fastcall FUN_0079ef90(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_30;
  undefined4 local_2c;
  undefined local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d278;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  local_30 = 0;
  local_10 = 7;
  local_14 = 0;
  local_24 = local_24 & 0xffff0000;
  FID_conflict_assign(&DAT_03057d48,0xc);
  local_4 = 0;
  local_30 = 0x6a6fae38;
  local_2c = 0x3619cdc9;
  FUN_00b94470(&local_30,local_28);
  if (7 < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079f040(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057d64,0x11);
  local_4 = 0;
  local_2c = 0xcdb211f3;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079f0e0(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057d78,0x13);
  local_4 = 0;
  local_2c = 0xfe11c83b;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0079f180(undefined4 param_1_00,byte param_1)

{
  FUN_00b6da50();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0079f1a0(undefined4 *param_1_00,byte param_1)

{
  HANDLE hObject;
  
  *param_1_00 = WE9980253::W5AD5FA60::vftable;
  LOCK();
  hObject = (HANDLE)param_1_00[2];
  param_1_00[2] = (HANDLE)0x0;
  UNLOCK();
  if (hObject != (HANDLE)0x0) {
    CloseHandle(hObject);
  }
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * FUN_0079f1e0(void)

{
  uint uVar1;
  LONG LVar2;
  void *pvVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c42943;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  if ((_DAT_032f11b0 & 1) == 0) {
    _DAT_032f11b0 = _DAT_032f11b0 | 1;
    DAT_032f026c = (undefined4 *)0x0;
    _atexit((_func_4879 *)&LAB_00c748d0);
  }
  LVar2 = InterlockedExchangeAdd((LONG *)&DAT_032efd50,0);
  if (LVar2 == 0) {
    FUN_00b9acd0(uVar1);
    local_4 = 0;
    LVar2 = InterlockedExchangeAdd((LONG *)&DAT_032efd50,0);
    if ((LVar2 == 0) && (DAT_032f026c == (undefined4 *)0x0)) {
      pvVar3 = operator_new(0x10);
      local_4._0_1_ = 1;
      if (pvVar3 == (void *)0x0) {
        puVar4 = (undefined4 *)0x0;
      }
      else {
        puVar4 = (undefined4 *)FUN_00b9fa20(pvVar3);
      }
      local_4 = (uint)local_4._1_3_ << 8;
      if ((puVar4 != DAT_032f026c) && (DAT_032f026c != (undefined4 *)0x0)) {
        (**(code **)*DAT_032f026c)(1);
      }
      DAT_032f026c = puVar4;
      InterlockedExchange((LONG *)&DAT_032efd50,1);
    }
    local_4 = 0xffffffff;
    FUN_00b9ac60();
  }
  ExceptionList = local_c;
  return DAT_032f026c;
}



undefined4 __fastcall FUN_0079f2f0(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_30;
  undefined4 local_2c;
  undefined local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d278;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  local_30 = 0;
  local_10 = 7;
  local_14 = 0;
  local_24 = local_24 & 0xffff0000;
  FID_conflict_assign(&DAT_03057d9c,0xd);
  local_4 = 0;
  local_30 = 0xee4bd4ca;
  local_2c = 0xe687f914;
  FUN_00b94470(&local_30,local_28);
  if (7 < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079f3a0(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057db8,0x15);
  local_4 = 0;
  local_2c = 0xe6bc2a26;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079f440(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057dd0,0x15);
  local_4 = 0;
  local_2c = 0xbceed6a;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079f4e0(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057de8,0x14);
  local_4 = 0;
  local_2c = 0xd81ef76d;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0079f580(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1c808;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_2c = 0;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,&DAT_03057e00,0xf);
  local_4 = 0;
  local_2c = 0x7afaa58b;
  FUN_00b94330(&local_2c,local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0079f620(undefined4 param_1_00,byte param_1)

{
  FUN_00b6d630();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



uint __fastcall FUN_0079f640(byte *param_1,uint param_2)

{
  uint in_EAX;
  uint uVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  int iVar17;
  
  uVar2 = param_2 & 0xffff;
  param_2 = param_2 >> 0x10;
  if (param_1 != (byte *)0x0) {
    if (in_EAX != 0) {
      do {
        uVar1 = in_EAX;
        if (0x15af < in_EAX) {
          uVar1 = 0x15b0;
        }
        in_EAX = in_EAX - uVar1;
        for (; 0xf < uVar1; uVar1 = uVar1 - 0x10) {
          iVar3 = uVar2 + *param_1;
          iVar4 = iVar3 + (uint)param_1[1];
          iVar5 = iVar4 + (uint)param_1[2];
          iVar6 = iVar5 + (uint)param_1[3];
          iVar7 = iVar6 + (uint)param_1[4];
          iVar8 = iVar7 + (uint)param_1[5];
          iVar9 = iVar8 + (uint)param_1[6];
          iVar10 = iVar9 + (uint)param_1[7];
          iVar11 = iVar10 + (uint)param_1[8];
          iVar12 = iVar11 + (uint)param_1[9];
          iVar13 = iVar12 + (uint)param_1[10];
          iVar14 = iVar13 + (uint)param_1[0xb];
          iVar15 = iVar14 + (uint)param_1[0xc];
          iVar16 = iVar15 + (uint)param_1[0xd];
          iVar17 = iVar16 + (uint)param_1[0xe];
          uVar2 = iVar17 + (uint)param_1[0xf];
          param_2 = param_2 + iVar3 + iVar4 + iVar5 + iVar6 + iVar7 + iVar8 + iVar9 + iVar10 +
                    iVar11 + iVar12 + iVar13 + iVar14 + iVar15 + iVar16 + iVar17 + uVar2;
          param_1 = param_1 + 0x10;
        }
        for (; uVar1 != 0; uVar1 = uVar1 - 1) {
          uVar2 = uVar2 + *param_1;
          param_1 = param_1 + 1;
          param_2 = param_2 + uVar2;
        }
        uVar2 = uVar2 % 0xfff1;
        param_2 = param_2 % 0xfff1;
      } while (in_EAX != 0);
    }
    return param_2 << 0x10 | uVar2;
  }
  return 1;
}



int __fastcall FUN_0079f760(int param_1)

{
  int in_EAX;
  
  return in_EAX + param_1;
}



void FUN_0079f770(void)

{
  uint uVar1;
  uint uVar2;
  int local_1c;
  undefined *local_18;
  undefined4 local_14;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&local_1c;
  local_14 = 0;
  local_18 = (undefined *)0x0;
  FUN_0079f760();
  local_14 = 0;
  local_18 = &DAT_02000001;
  FUN_0079f760();
  local_18 = (undefined *)0x3;
  local_14 = 0x400;
  uVar2 = 1;
  uVar1 = 0;
  do {
    local_1c = 0;
    if (uVar2 != 0) {
      for (; (uVar2 >> local_1c & 1) == 0; local_1c = local_1c + 1) {
      }
    }
    uVar1 = uVar1 + 1;
    uVar2 = uVar2 * 2;
  } while (uVar1 < 0x20);
  ___security_check_cookie_4();
  return;
}



int FUN_0079f840(int *param_1,undefined4 *param_2,int *param_3,uint param_4,int param_5)

{
  uint *puVar1;
  uint *puVar2;
  int in_EAX;
  int iVar3;
  uint uVar4;
  undefined4 *puVar5;
  byte bVar6;
  char cVar7;
  uint uVar8;
  uint uVar9;
  int *piVar10;
  undefined4 *puVar11;
  int *piVar12;
  int *local_10;
  uint local_c;
  
  if (param_4 < 4) {
    iVar3 = 4 - param_4;
  }
  else {
    iVar3 = 0;
  }
  local_10 = (int *)(iVar3 + (int)param_1);
  puVar5 = param_2;
  piVar10 = param_1;
LAB_0079f870:
  local_10 = (int *)((int)local_10 + ((int)local_10 - (int)piVar10 >> 5) + 1);
LAB_0079f880:
  do {
    if ((int *)((int)param_1 + in_EAX + -0x14) <= local_10) {
      *param_3 = (int)puVar5 - (int)param_2;
      return (int)param_1 + param_4 + (in_EAX - (int)piVar10);
    }
    iVar3 = *local_10;
    uVar4 = (uint)(iVar3 * 0x1824429d) >> 0x12;
    piVar12 = (int *)((uint)*(ushort *)(param_5 + uVar4 * 2) + (int)param_1);
    *(short *)(param_5 + uVar4 * 2) = (short)local_10 - (short)param_1;
    if (iVar3 != *piVar12) goto LAB_0079f870;
    puVar11 = (undefined4 *)((int)piVar10 - param_4);
    uVar4 = (int)local_10 - (int)puVar11;
    param_4 = 0;
    if (uVar4 != 0) {
      bVar6 = (byte)uVar4;
      if (uVar4 < 4) {
        *(byte *)((int)puVar5 + -2) = *(byte *)((int)puVar5 + -2) | bVar6;
        *puVar5 = *puVar11;
        puVar5 = (undefined4 *)((int)puVar5 + uVar4);
      }
      else if (uVar4 < 0x11) {
        *(byte *)puVar5 = bVar6 - 3;
        *(undefined4 *)((int)puVar5 + 1) = *puVar11;
        *(undefined4 *)((int)puVar5 + 5) = puVar11[1];
        *(undefined4 *)((int)puVar5 + 9) = puVar11[2];
        *(undefined4 *)((int)puVar5 + 0xd) = puVar11[3];
        puVar5 = (undefined4 *)((int)(undefined4 *)((int)puVar5 + 1) + uVar4);
      }
      else {
        if (uVar4 < 0x13) {
          *(byte *)puVar5 = bVar6 - 3;
        }
        else {
          local_c = uVar4 - 0x12;
          *(undefined *)puVar5 = 0;
          puVar5 = (undefined4 *)((int)puVar5 + 1);
          if (0xff < local_c) {
            iVar3 = (uVar4 - 0x112) / 0xff + 1;
            do {
              local_c = local_c - 0xff;
              *(undefined *)puVar5 = 0;
              puVar5 = (undefined4 *)((int)puVar5 + 1);
              iVar3 = iVar3 + -1;
            } while (iVar3 != 0);
          }
          *(char *)puVar5 = (char)local_c;
        }
        puVar5 = (undefined4 *)((int)puVar5 + 1);
        do {
          *puVar5 = *puVar11;
          puVar5[1] = puVar11[1];
          puVar5[2] = puVar11[2];
          puVar5[3] = puVar11[3];
          uVar4 = uVar4 - 0x10;
          puVar5 = puVar5 + 4;
          puVar11 = puVar11 + 4;
        } while (0xf < uVar4);
        for (; uVar4 != 0; uVar4 = uVar4 - 1) {
          *(undefined *)puVar5 = *(undefined *)puVar11;
          puVar5 = (undefined4 *)((int)puVar5 + 1);
          puVar11 = (undefined4 *)((int)puVar11 + 1);
        }
      }
    }
    uVar4 = piVar12[1] ^ local_10[1];
    piVar10 = local_10 + 1;
    uVar8 = 4;
    if (uVar4 == 0) {
      do {
        puVar2 = (uint *)((int)piVar12 + (4 - (int)local_10) + (int)piVar10);
        puVar1 = (uint *)(piVar10 + 1);
        piVar10 = piVar10 + 1;
        uVar4 = *puVar2 ^ *puVar1;
        uVar8 = uVar8 + 4;
        if ((int *)((int)param_1 + in_EAX + -0x14) <= piVar10) goto LAB_0079f9e7;
      } while (uVar4 == 0);
    }
    uVar9 = 0;
    if (uVar4 != 0) {
      for (; (uVar4 >> uVar9 & 1) == 0; uVar9 = uVar9 + 1) {
      }
    }
    uVar8 = uVar8 + (uVar9 >> 3);
LAB_0079f9e7:
    piVar10 = (int *)((int)local_10 + uVar8);
    uVar4 = (int)local_10 - (int)piVar12;
    cVar7 = (char)uVar8;
    local_10 = piVar10;
    if ((8 < uVar8) || (0x800 < uVar4)) {
      if (uVar4 < 0x4001) {
        uVar4 = uVar4 - 1;
        if (uVar8 < 0x22) {
          uVar9 = (uint)(byte)(cVar7 - 2U | 0x20);
        }
        else {
          uVar9 = uVar8 - 0x21;
          *(undefined *)puVar5 = 0x20;
          puVar5 = (undefined4 *)((int)puVar5 + 1);
          if (0xff < uVar9) {
            iVar3 = (uVar8 - 0x121) / 0xff + 1;
            do {
              puVar11 = puVar5;
              *(undefined *)puVar11 = 0;
              uVar9 = uVar9 - 0xff;
              iVar3 = iVar3 + -1;
              puVar5 = (undefined4 *)((int)puVar11 + 1);
            } while (iVar3 != 0);
            *(char *)(undefined4 *)((int)puVar11 + 1) = (char)uVar9;
            *(char *)((int)puVar11 + 2) = (char)uVar4 * '\x04';
            *(char *)((int)puVar11 + 3) = (char)(uVar4 >> 6);
            puVar5 = puVar11 + 1;
            goto LAB_0079f880;
          }
        }
LAB_0079fae3:
        *(char *)puVar5 = (char)uVar9;
      }
      else {
        uVar4 = uVar4 - 0x4000;
        bVar6 = (byte)(uVar4 >> 0xb) & 8;
        if (9 < uVar8) {
          uVar9 = uVar8 - 9;
          *(byte *)puVar5 = bVar6 | 0x10;
          puVar5 = (undefined4 *)((int)puVar5 + 1);
          if (0xff < uVar9) {
            iVar3 = (uVar8 - 0x109) / 0xff + 1;
            do {
              *(undefined *)puVar5 = 0;
              uVar9 = uVar9 - 0xff;
              puVar5 = (undefined4 *)((int)puVar5 + 1);
              iVar3 = iVar3 + -1;
            } while (iVar3 != 0);
          }
          goto LAB_0079fae3;
        }
        *(byte *)puVar5 = bVar6 | cVar7 - 2U | 0x10;
      }
      *(char *)((int)puVar5 + 1) = (char)uVar4 * '\x04';
      *(char *)((int)puVar5 + 2) = (char)(uVar4 >> 6);
      puVar5 = (undefined4 *)((int)puVar5 + 3);
      goto LAB_0079f880;
    }
    *(byte *)puVar5 = ((cVar7 + -1) * '\b' | (byte)(uVar4 - 1) & 7) * '\x04';
    *(char *)((int)puVar5 + 1) = (char)(uVar4 - 1 >> 3);
    puVar5 = (undefined4 *)((int)puVar5 + 2);
  } while( true );
}



undefined4 FUN_0079fb20(uint param_1,uint param_2,char *param_3,char **param_4,void *param_5)

{
  uint uVar1;
  char *pcVar2;
  byte bVar3;
  int iVar4;
  uint uVar5;
  char *pcVar6;
  uint uVar7;
  uint local_8;
  
  iVar4 = 0;
  local_8 = param_1;
  uVar5 = param_2;
  pcVar6 = param_3;
  if (0x14 < param_2) {
    do {
      uVar7 = uVar5;
      if (0xc000 < uVar5) {
        uVar7 = 0xc000;
      }
      uVar1 = local_8 + uVar7;
      if ((uVar7 + iVar4 >> 5) + uVar1 <= uVar1) break;
      _memset(param_5,0,0x8000);
      iVar4 = FUN_0079f840(local_8,pcVar6,param_4,iVar4,param_5);
      pcVar6 = pcVar6 + (int)*param_4;
      uVar5 = uVar5 - uVar7;
      local_8 = uVar1;
    } while (0x14 < uVar5);
  }
  uVar5 = iVar4 + uVar5;
  if (uVar5 == 0) goto LAB_0079fc23;
  pcVar2 = (char *)((param_1 - uVar5) + param_2);
  bVar3 = (byte)uVar5;
  if ((pcVar6 == param_3) && (uVar5 < 0xef)) {
    *pcVar6 = bVar3 + 0x11;
LAB_0079fc17:
    pcVar6 = pcVar6 + 1;
  }
  else {
    if (3 < uVar5) {
      if (uVar5 < 0x13) {
        *pcVar6 = bVar3 - 3;
      }
      else {
        uVar7 = uVar5 - 0x12;
        *pcVar6 = '\0';
        pcVar6 = pcVar6 + 1;
        if (0xff < uVar7) {
          iVar4 = (uVar5 - 0x112) / 0xff + 1;
          do {
            *pcVar6 = '\0';
            uVar7 = uVar7 - 0xff;
            pcVar6 = pcVar6 + 1;
            iVar4 = iVar4 + -1;
          } while (iVar4 != 0);
        }
        *pcVar6 = (char)uVar7;
      }
      goto LAB_0079fc17;
    }
    pcVar6[-2] = pcVar6[-2] | bVar3;
  }
  do {
    *pcVar6 = *pcVar2;
    pcVar6 = pcVar6 + 1;
    pcVar2 = pcVar2 + 1;
    uVar5 = uVar5 - 1;
  } while (uVar5 != 0);
LAB_0079fc23:
  *pcVar6 = '\x11';
  pcVar6[1] = '\0';
  pcVar6[2] = '\0';
  *param_4 = pcVar6 + 2 + (1 - (int)param_3);
  return 0;
}



int __fastcall
FUN_0079fc50(undefined4 param_1_00,undefined4 *param_2_00,undefined4 *param_1,byte **param_2)

{
  undefined4 *puVar1;
  byte bVar2;
  byte *pbVar3;
  int in_EAX;
  undefined4 *puVar4;
  ushort *puVar5;
  undefined4 *puVar6;
  byte *pbVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  undefined4 *puVar11;
  
  puVar1 = (undefined4 *)((int)param_2_00 + in_EAX);
  pbVar3 = *param_2;
  *param_2 = (byte *)0x0;
  bVar2 = *(byte *)param_2_00;
  puVar6 = param_1;
  if (bVar2 < 0x12) goto LAB_0079fcc0;
  pbVar7 = (byte *)(bVar2 - 0x11);
  param_2_00 = (undefined4 *)((int)param_2_00 + 1);
  puVar4 = param_1;
  if (pbVar7 < (byte *)0x4) goto LAB_0079fde6;
  if (pbVar3 < pbVar7) {
FUN_007a002e:
    *param_2 = (byte *)((int)puVar6 - (int)param_1);
    return -5;
  }
  if ((uint)((int)puVar1 - (int)param_2_00) < bVar2 - 0x10) {
LAB_0079fff5:
    *param_2 = (byte *)((int)puVar6 - (int)param_1);
    return -4;
  }
  do {
    *(byte *)puVar6 = *(byte *)param_2_00;
    puVar6 = (undefined4 *)((int)puVar6 + 1);
    param_2_00 = (undefined4 *)((int)param_2_00 + 1);
    pbVar7 = pbVar7 + -1;
  } while (pbVar7 != (byte *)0x0);
LAB_0079fd7b:
  uVar8 = (uint)*(byte *)param_2_00;
  puVar4 = (undefined4 *)((int)param_2_00 + 1);
  if (0xf < uVar8) goto LAB_0079fe2b;
  iVar10 = (uint)*(byte *)puVar4 * -4 - (uint)(*(byte *)param_2_00 >> 2);
  puVar4 = (undefined4 *)((int)puVar6 + iVar10 + -0x801);
  param_2_00 = (undefined4 *)((int)param_2_00 + 2);
  if ((puVar4 < param_1) || (puVar6 <= puVar4)) {
LAB_007a0041:
    *param_2 = (byte *)((int)puVar6 - (int)param_1);
    return -6;
  }
  if ((byte *)0x2 < (byte *)((int)param_1 + ((int)pbVar3 - (int)puVar6))) {
    *(byte *)puVar6 = *(byte *)puVar4;
    *(byte *)((int)puVar6 + 1) = *(byte *)((int)puVar6 + iVar10 + -0x800);
    *(byte *)((int)puVar6 + 2) = *(byte *)((int)puVar6 + iVar10 + -0x7ff);
    puVar6 = (undefined4 *)((int)puVar6 + 3);
LAB_0079fdd9:
    do {
      pbVar7 = (byte *)(*(byte *)((int)param_2_00 + -2) & 3);
      puVar4 = puVar6;
      if ((*(byte *)((int)param_2_00 + -2) & 3) == 0) {
LAB_0079fcc0:
        if (puVar1 <= param_2_00) goto LAB_007a0054;
        uVar8 = (uint)*(byte *)param_2_00;
        puVar4 = (undefined4 *)((int)param_2_00 + 1);
        if (uVar8 < 0x10) goto code_r0x0079fcd5;
      }
      else {
LAB_0079fde6:
        puVar6 = puVar4;
        if ((byte *)((int)param_1 + ((int)pbVar3 - (int)puVar4)) < pbVar7) break;
        if ((byte *)((int)puVar1 - (int)param_2_00) < pbVar7 + 1) goto LAB_0079fff5;
        *(byte *)puVar4 = *(byte *)param_2_00;
        puVar6 = (undefined4 *)((int)puVar4 + 1);
        puVar5 = (ushort *)((int)param_2_00 + 1);
        if ((byte *)0x1 < pbVar7) {
          *(byte *)puVar6 = *(byte *)puVar5;
          puVar6 = (undefined4 *)((int)puVar4 + 2);
          puVar5 = (ushort *)((int)param_2_00 + 2);
          if ((byte *)0x2 < pbVar7) {
            *(byte *)puVar6 = *(byte *)puVar5;
            puVar6 = (undefined4 *)((int)puVar4 + 3);
            puVar5 = (ushort *)((int)param_2_00 + 3);
          }
        }
        uVar8 = (uint)*(byte *)puVar5;
        puVar4 = (undefined4 *)((int)puVar5 + 1);
        if (puVar1 <= puVar4) {
LAB_007a0054:
          *param_2 = (byte *)((int)puVar6 - (int)param_1);
          return -7;
        }
      }
LAB_0079fe2b:
      if (uVar8 < 0x40) {
        if (uVar8 < 0x20) {
          if (uVar8 < 0x10) {
            pbVar7 = (byte *)((int)puVar6 + ((uint)*(byte *)puVar4 * -4 - (uVar8 >> 2)));
            puVar11 = (undefined4 *)(pbVar7 + -1);
            param_2_00 = (undefined4 *)((int)puVar4 + 1);
            if ((puVar11 < param_1) || (puVar6 <= puVar11)) goto LAB_007a0041;
            if ((byte *)((int)param_1 + ((int)pbVar3 - (int)puVar6)) < (byte *)0x2) break;
            *(byte *)puVar6 = *(byte *)puVar11;
            *(byte *)((int)puVar6 + 1) = *pbVar7;
            puVar6 = (undefined4 *)((int)puVar6 + 2);
            goto LAB_0079fdd9;
          }
          uVar9 = uVar8 & 7;
          if (uVar9 == 0) {
            if (puVar1 == puVar4) goto LAB_0079fff5;
            iVar10 = 0;
            bVar2 = *(byte *)puVar4;
            while (bVar2 == 0) {
              puVar4 = (undefined4 *)((int)puVar4 + 1);
              iVar10 = iVar10 + 0xff;
              if (puVar1 == puVar4) goto LAB_0079fff5;
              bVar2 = *(byte *)puVar4;
            }
            uVar9 = iVar10 + 7 + (uint)*(byte *)puVar4;
            puVar4 = (undefined4 *)((int)puVar4 + 1);
          }
          puVar11 = (undefined4 *)
                    ((int)puVar6 + ((uVar8 & 8) * -0x800 - (uint)(*(ushort *)puVar4 >> 2)));
          param_2_00 = (undefined4 *)((int)puVar4 + 2);
          if (puVar11 == puVar6) {
            *param_2 = (byte *)((int)puVar6 - (int)param_1);
            if (param_2_00 == puVar1) {
              return 0;
            }
            return (-(uint)(param_2_00 < puVar1) & 0xfffffffc) - 4;
          }
          puVar11 = puVar11 + -0x1000;
        }
        else {
          uVar9 = uVar8 & 0x1f;
          if (uVar9 == 0) {
            if (puVar1 == puVar4) goto LAB_0079fff5;
            iVar10 = 0;
            if (*(byte *)puVar4 == 0) {
              iVar10 = 0;
              do {
                puVar4 = (undefined4 *)((int)puVar4 + 1);
                iVar10 = iVar10 + 0xff;
                if (puVar1 == puVar4) goto LAB_0079fff5;
              } while (*(byte *)puVar4 == 0);
            }
            uVar9 = iVar10 + 0x1f + (uint)*(byte *)puVar4;
            puVar4 = (undefined4 *)((int)puVar4 + 1);
          }
          puVar11 = (undefined4 *)((int)puVar6 + (-1 - (uint)(*(ushort *)puVar4 >> 2)));
          param_2_00 = (undefined4 *)((int)puVar4 + 2);
        }
        if ((puVar11 < param_1) || (puVar6 <= puVar11)) goto LAB_007a0041;
        if ((byte *)((int)param_1 + ((int)pbVar3 - (int)puVar6)) < (byte *)(uVar9 + 2)) break;
        if ((5 < uVar9) && (3 < (int)puVar6 - (int)puVar11)) {
          *puVar6 = *puVar11;
          puVar6 = puVar6 + 1;
          puVar11 = puVar11 + 1;
          uVar9 = uVar9 - 2;
          do {
            *puVar6 = *puVar11;
            uVar9 = uVar9 - 4;
            puVar6 = puVar6 + 1;
            puVar11 = puVar11 + 1;
          } while (3 < uVar9);
          for (; uVar9 != 0; uVar9 = uVar9 - 1) {
            *(byte *)puVar6 = *(byte *)puVar11;
            puVar6 = (undefined4 *)((int)puVar6 + 1);
            puVar11 = (undefined4 *)((int)puVar11 + 1);
          }
          goto LAB_0079fdd9;
        }
      }
      else {
        puVar11 = (undefined4 *)((int)puVar6 + ((uint)*(byte *)puVar4 * -8 - (uVar8 >> 2 & 7)) + -1)
        ;
        param_2_00 = (undefined4 *)((int)puVar4 + 1);
        uVar9 = (uVar8 >> 5) - 1;
        if ((puVar11 < param_1) || (puVar6 <= puVar11)) goto LAB_007a0041;
        if ((byte *)((int)param_1 + ((int)pbVar3 - (int)puVar6)) < (byte *)((uVar8 >> 5) + 1))
        break;
      }
      *(byte *)puVar6 = *(byte *)puVar11;
      *(byte *)((int)puVar6 + 1) = *(byte *)((int)puVar11 + 1);
      puVar6 = (undefined4 *)((int)puVar6 + 2);
      pbVar7 = (byte *)((int)puVar11 + 2);
      do {
        *(byte *)puVar6 = *pbVar7;
        puVar6 = (undefined4 *)((int)puVar6 + 1);
        pbVar7 = pbVar7 + 1;
        uVar9 = uVar9 - 1;
      } while (uVar9 != 0);
    } while( true );
  }
  goto FUN_007a002e;
code_r0x0079fcd5:
  if (uVar8 == 0) {
    if (puVar1 == puVar4) goto LAB_0079fff5;
    iVar10 = 0;
    if (*(byte *)puVar4 == 0) {
      iVar10 = 0;
      do {
        puVar4 = (undefined4 *)((int)puVar4 + 1);
        iVar10 = iVar10 + 0xff;
        if (puVar1 == puVar4) goto LAB_0079fff5;
      } while (*(byte *)puVar4 == 0);
    }
    uVar8 = iVar10 + 0xf + (uint)*(byte *)puVar4;
    puVar4 = (undefined4 *)((int)puVar4 + 1);
  }
  if ((byte *)((int)param_1 + ((int)pbVar3 - (int)puVar6)) < (byte *)(uVar8 + 3)) goto FUN_007a002e;
  if ((uint)((int)puVar1 - (int)puVar4) < uVar8 + 4) goto LAB_0079fff5;
  *puVar6 = *puVar4;
  puVar6 = puVar6 + 1;
  param_2_00 = puVar4 + 1;
  uVar8 = uVar8 - 1;
  if (uVar8 != 0) {
    if (uVar8 < 4) {
      do {
        *(byte *)puVar6 = *(byte *)param_2_00;
        puVar6 = (undefined4 *)((int)puVar6 + 1);
        param_2_00 = (undefined4 *)((int)param_2_00 + 1);
        uVar8 = uVar8 - 1;
      } while (uVar8 != 0);
    }
    else {
      do {
        *puVar6 = *param_2_00;
        uVar8 = uVar8 - 4;
        puVar6 = puVar6 + 1;
        param_2_00 = param_2_00 + 1;
      } while (3 < uVar8);
      for (; uVar8 != 0; uVar8 = uVar8 - 1) {
        *(byte *)puVar6 = *(byte *)param_2_00;
        puVar6 = (undefined4 *)((int)puVar6 + 1);
        param_2_00 = (undefined4 *)((int)param_2_00 + 1);
      }
    }
  }
  goto LAB_0079fd7b;
}



undefined4 __thiscall FUN_007a002e(int param_1)

{
  int unaff_EBX;
  int *param_7;
  
  *param_7 = param_1 - unaff_EBX;
  return 0xfffffffb;
}



undefined4 __thiscall FUN_007a0067(undefined4 param_1_00,byte param_1)

{
  FUN_00b9f511();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007a0083(undefined4 *param_1)

{
  *param_1 = W5FC6A77E::WE30A081D::vftable;
  return;
}



undefined4 * __thiscall FUN_007a008a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W5FC6A77E::WE30A081D::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007a00a7(undefined4 param_1_00,byte param_1)

{
  FUN_00ba7e70();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void thunk_FUN_007a00c8(int param_1)

{
  FUN_00507e58();
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a00c8(int param_1)

{
  FUN_00507e58();
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007a00fb(undefined4 *param_1)

{
  if (param_1[3] != 0) {
    FUN_007a0306(param_1[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void FUN_007a0142(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  undefined4 uVar2;
  uint uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (*(int *)(in_EAX + 0x14) - iVar1) / 0x28;
  }
  if ((uint)((*(int *)(in_EAX + 0x10) - iVar1) / 0x28) < uVar3) {
    uVar2 = FUN_007a02d6(*(int *)(in_EAX + 0x10),1,param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar2;
  }
  else {
    FUN_0046e65a();
    FUN_007a0228(&local_10,param_1,local_10,local_c);
  }
  return;
}



void FUN_007a01a9(void)

{
  int in_EAX;
  undefined4 uVar1;
  int local_20;
  int local_1c;
  int local_18;
  int local_14;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  if ((local_20 == 0) || (local_20 != local_18)) {
    FUN_00a3fb10();
  }
  if (local_1c != local_14) {
    uVar1 = FUN_007a05e3(*(undefined4 *)(in_EAX + 0x10),local_1c);
    FUN_007a0306(*(undefined4 *)(in_EAX + 0x10));
    *(undefined4 *)(in_EAX + 0x10) = uVar1;
  }
  return;
}



void FUN_007a0228(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int in_EAX;
  int iVar1;
  int *piVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc)) / 0x28 == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = (param_4 - local_8) / 0x28;
  }
  FUN_007a031e();
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar1 = 0;
  }
  else {
    iVar1 = *local_14;
  }
  piVar2 = (int *)(local_10 + local_8 * 0x28);
  if (piVar2 <= *(int **)(iVar1 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *local_14;
    }
    if (*(int **)(iVar1 + 0xc) <= piVar2) goto LAB_007a02c7;
  }
  FUN_00a3fb10();
LAB_007a02c7:
  param_1[1] = piVar2;
  *param_1 = local_14;
  return;
}



int FUN_007a02d6(int param_1,int param_2,undefined4 param_3)

{
  FUN_007a0695(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x28 + param_1;
}



void FUN_007a0306(int param_1)

{
  int in_EAX;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 0x28) {
    FUN_007a00c8(in_EAX);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a031e(int param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined *puVar5;
  int extraout_ECX;
  int iVar6;
  uint uVar7;
  undefined8 uVar8;
  undefined auStack_6c [40];
  undefined auStack_44 [40];
  int local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x5c;
  local_8 = 0x7a032a;
  iVar3 = *(int *)(param_1 + 0xc);
  if (iVar3 == 0) {
    uVar7 = 0;
  }
  else {
    uVar7 = (*(int *)(param_1 + 0x14) - iVar3) / 0x28;
  }
  iVar6 = *(int *)(param_1 + 0x10);
  iVar3 = (iVar6 - iVar3) / 0x28;
  uVar8 = CONCAT44(0x6666666,iVar3);
  if (iVar3 == 0x6666666) {
    uVar8 = FUN_004423c1();
    iVar6 = extraout_ECX;
  }
  uVar1 = (int)uVar8 + 1;
  if (uVar7 < uVar1) {
    if ((int)((ulonglong)uVar8 >> 0x20) - (uVar7 >> 1) < uVar7) {
      uVar7 = 0;
    }
    else {
      uVar7 = uVar7 + (uVar7 >> 1);
    }
    if (uVar7 < uVar1) {
      uVar7 = uVar1;
    }
    iVar3 = FUN_0076a398();
    local_1c = (param_4 - *(int *)(param_1 + 0xc)) / 0x28;
    local_18 = 0;
    local_8 = 0;
    FUN_007a02d6(local_1c * 0x28 + iVar3,1,param_2);
    local_18 = 1;
    FUN_007a062b(param_4,iVar3);
    local_18 = 2;
    FUN_007a062b(*(undefined4 *)(param_1 + 0x10),(local_1c + 1) * 0x28 + iVar3);
    local_8 = 0xffffffff;
    if (*(int *)(param_1 + 0xc) != 0) {
      FUN_007a0306(*(undefined4 *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
    }
    *(uint *)(param_1 + 0x14) = uVar7 * 0x28 + iVar3;
    *(int *)(param_1 + 0x10) =
         ((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x28 + 1) * 0x28 + iVar3;
    *(int *)(param_1 + 0xc) = iVar3;
  }
  else {
    if ((iVar6 - param_4) / 0x28 == 0) {
      FUN_007a056e(auStack_44);
      local_8 = 2;
      FUN_007a062b(*(undefined4 *)(param_1 + 0x10),param_4 + 0x28);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_007a02d6(*(int *)(param_1 + 0x10),1 - (*(int *)(param_1 + 0x10) - param_4) / 0x28,
                   auStack_44);
      local_8 = 2;
      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 0x28;
      iVar3 = *(int *)(param_1 + 0x10);
      for (; param_4 != iVar3 + -0x28; param_4 = param_4 + 0x28) {
        FUN_007a0712();
      }
      puVar5 = auStack_44;
    }
    else {
      FUN_007a056e(auStack_6c);
      local_8 = 5;
      uVar2 = *(undefined4 *)(param_1 + 0x10);
      uVar4 = FUN_007a062b(uVar2,uVar2);
      *(undefined4 *)(param_1 + 0x10) = uVar4;
      FUN_007a064f(param_4,uVar2);
      iVar3 = param_4 + 0x28;
      if (param_4 != iVar3) {
        do {
          FUN_007a0712();
          param_4 = param_4 + 0x28;
        } while (param_4 != iVar3);
      }
      puVar5 = auStack_6c;
    }
    local_8 = 0xffffffff;
    FUN_007a00c8(puVar5);
  }
  return;
}



void Catch_All_007a042f(void)

{
  int unaff_EBP;
  
  if (1 < *(int *)(unaff_EBP + -0x14)) {
    FUN_007a0306(*(int *)(unaff_EBP + -0x18) * 0x28 + *(int *)(unaff_EBP + 8));
  }
  if (0 < *(int *)(unaff_EBP + -0x14)) {
    FUN_007a0306((*(int *)(unaff_EBP + -0x18) + 1) * 0x28 + *(int *)(unaff_EBP + 8));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a0470(void)

{
  int iVar1;
  undefined4 uVar2;
  int extraout_ECX;
  int unaff_EBP;
  int unaff_ESI;
  int iVar3;
  
  __CxxThrowException_8();
  if ((extraout_ECX - *(int *)(unaff_EBP + 0x14)) / 0x28 == 0) {
    FUN_007a056e();
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_007a062b();
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_007a02d6(*(undefined4 *)(unaff_ESI + 0x10));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 0x28;
    iVar1 = *(int *)(unaff_ESI + 0x10);
    for (iVar3 = *(int *)(unaff_EBP + 0x14); iVar3 != iVar1 + -0x28; iVar3 = iVar3 + 0x28) {
      FUN_007a0712();
    }
  }
  else {
    FUN_007a056e();
    *(undefined4 *)(unaff_EBP + -4) = 5;
    uVar2 = FUN_007a062b();
    *(undefined4 *)(unaff_ESI + 0x10) = uVar2;
    FUN_007a064f();
    iVar3 = *(int *)(unaff_EBP + 0x14);
    iVar1 = iVar3 + 0x28;
    for (; iVar3 != iVar1; iVar3 = iVar3 + 0x28) {
      FUN_007a0712();
    }
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_007a00c8();
  return;
}



void Catch_All_007a04f1(void)

{
  int unaff_EBP;
  
  FUN_007a0306(*(int *)(*(int *)(unaff_EBP + 8) + 0x10) + 0x28);
  FUN_007a0470(0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007a056e(undefined4 *param_1)

{
  undefined4 *unaff_EDI;
  
  *param_1 = *unaff_EDI;
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EDI + 1);
}



int FUN_007a05e3(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = param_1 - in_EAX;
  if (in_EAX != param_1) {
    do {
      FUN_007a0712();
      in_EAX = in_EAX + 0x28;
    } while (in_EAX != param_1);
  }
  return (iVar1 / 0x28) * 0x28 + param_2;
}



void FUN_007a062b(undefined4 param_1,undefined4 param_2)

{
  FUN_007a07ab(param_1,param_2,param_2,0);
  return;
}



int FUN_007a064f(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = in_EAX - param_1;
  if (param_1 != in_EAX) {
    do {
      in_EAX = in_EAX + -0x28;
      FUN_007a0712();
    } while (in_EAX != param_1);
  }
  return param_2 + (iVar1 / 0x28) * -0x28;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a0695(int param_1,int param_2)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    FUN_007a06e7(param_1);
    param_1 = param_1 + 0x28;
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_007a06c5(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 8); iVar1 = iVar1 + 0x28)
  {
    FUN_007a00c8(iVar1);
  }
  __CxxThrowException_8(0,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a06e7(int param_1)

{
  if (param_1 != 0) {
    FUN_007a056e(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_007a0712(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 4);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_007a07ab(int param_1_00,int param_1,int param_2)

{
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0x28) {
    FUN_007a06e7(param_2);
    param_2 = param_2 + 0x28;
  }
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 Catch_All_007a07d9(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0xc); iVar1 = iVar1 + 0x28
      ) {
    FUN_007a00c8(iVar1);
  }
  __CxxThrowException_8(0,0);
  return *(undefined4 *)(unaff_EBP + 0xc);
}



undefined4 __thiscall FUN_007a07fe(undefined4 param_1_00,byte param_1)

{
  FUN_00b97ab0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007a081a(undefined4 param_1_00,byte param_1)

{
  FUN_00b9f45a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007a0836(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W5FC6A77E::W89035DA7::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007a0853(undefined4 param_1_00,byte param_1)

{
  FUN_005d112b(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_007a0870(undefined4 *param_1,uint *param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  bool bVar4;
  undefined4 uVar5;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 == '\0') {
        bVar4 = *(uint *)(param_4 + 0xc) < *param_2;
        if (*param_2 < *(uint *)(param_4 + 0xc)) {
          iVar2 = FUN_007fd84d();
          if (*(uint *)(*(int *)(iVar2 + 4) + 0xc) < *param_2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x19) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_007a0892;
          }
          bVar4 = *(uint *)(param_4 + 0xc) < *param_2;
        }
        if (bVar4) {
          FUN_00452ecb();
          cVar1 = FUN_006b8eca();
          if ((cVar1 != '\0') || (*param_2 < *(uint *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x19) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_007a0892;
          }
        }
LAB_007a09ad:
        puVar3 = (undefined4 *)FUN_007a09cf(in_EAX,param_2);
        *param_1 = *puVar3;
        param_1[1] = puVar3[1];
        return param_1;
      }
      if (*param_2 <= *(uint *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_007a09ad;
      uVar5 = 0;
      goto LAB_007a0892;
    }
    if (*(uint *)(param_4 + 0xc) <= *param_2) goto LAB_007a09ad;
  }
  uVar5 = 1;
LAB_007a0892:
  FUN_006bd125(param_1,uVar5,param_2);
  return param_1;
}



void FUN_007a09cf(undefined4 *param_1,uint *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x19) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (uint)local_c[3]);
      if (*param_2 < (uint)local_c[3]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x19) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007a0a42;
    }
    FUN_007fd84d();
  }
  uVar3 = local_8;
  if (*param_2 <= (uint)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007a0a42:
  puVar2 = (undefined4 *)FUN_006bd125(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



undefined __fastcall FUN_007a0a90(char *param_1,int param_2)

{
  int iVar1;
  undefined uVar2;
  
  iVar1 = *(int *)(param_2 + 0x4c);
  uVar2 = 0;
  if (((-(uint)(*param_1 != '\0') & 0x6a1cd8) != 0) && (*(int *)(param_1 + 4) != iVar1)) {
    uVar2 = 1;
  }
  if (*param_1 == '\0') {
    if ((int *)(param_1 + 4) != (int *)0x0) {
      *(int *)(param_1 + 4) = iVar1;
    }
    *param_1 = '\x01';
  }
  else {
    *(int *)(param_1 + 4) = iVar1;
  }
  return uVar2;
}



void __thiscall FUN_007a0b48(uint *param_1_00,uint param_1)

{
  uint uVar1;
  
  uVar1 = *param_1_00;
  if (param_1 < *param_1_00) {
    uVar1 = param_1;
  }
  if (*(char *)(param_1_00 + 7) != '\0') {
    param_1_00[5] = uVar1;
    uVar1 = __aulldiv((ulonglong)param_1_00[6] * (ulonglong)uVar1,param_1_00[4],0);
    if (param_1_00[3] < uVar1) {
      (**(code **)(*(int *)param_1_00[1] + 4))(uVar1 - param_1_00[3]);
      param_1_00[3] = uVar1;
    }
  }
  return;
}



undefined4 __thiscall FUN_007a0b92(undefined4 param_1_00,byte param_1)

{
  FUN_00b6d025();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007a0bae(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_14 = param_1;
  uStack_10 = param_2;
  uStack_c = param_3;
  uStack_8 = param_4;
  cVar1 = FUN_007f2630(&local_14);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_14;
      unaff_EBX[3] = uStack_10;
      unaff_EBX[4] = uStack_c;
      unaff_EBX[5] = uStack_8;
    }
    *unaff_EBX = &DAT_03057e99;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



void FUN_007a0bf6(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_14 = param_1;
  uStack_10 = param_2;
  uStack_c = param_3;
  uStack_8 = param_4;
  cVar1 = FUN_007f2630(&local_14);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_14;
      unaff_EBX[3] = uStack_10;
      unaff_EBX[4] = uStack_c;
      unaff_EBX[5] = uStack_8;
    }
    *unaff_EBX = &DAT_03057ea1;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



void FUN_007a0c89(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_03057ea9;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a0cd2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5FC6A77E::W759A158B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a0d18(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007a0d2f(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007a0dee(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W5FC6A77E::W759A158B>,class_boost::_bi::list1<class_boost::_bi::value<class_W5FC6A77E::W759A158B*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007a0d68(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007a0e3b(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W5FC6A77E::W759A158B,bool>,class_boost::_bi::list2<class_boost::_bi::value<class_W5FC6A77E::W759A158B*>,class_boost::_bi::value<bool>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007a0db3(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007a0e88(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W5FC6A77E::`anonymous_namespace'::W1EA67F9F,unsigned_int>,class_boost::_bi::list2<class_boost::_bi::value<class_W5FC6A77E::`anonymous_namespace'::W1EA67F9F*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_007a0dee(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W5FC6A77E::W759A158B>,class_boost::_bi::list1<class_boost::_bi::value<class_W5FC6A77E::W759A158B*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W5FC6A77E::W759A158B>,class_boost::_bi::list1<class_boost::_bi::value<class_W5FC6A77E::W759A158B*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void __fastcall FUN_007a0e3b(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W5FC6A77E::W759A158B,bool>,class_boost::_bi::list2<class_boost::_bi::value<class_W5FC6A77E::W759A158B*>,class_boost::_bi::value<bool>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W5FC6A77E::W759A158B,bool>,class_boost::_bi::list2<class_boost::_bi::value<class_W5FC6A77E::W759A158B*>,class_boost::_bi::value<bool>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void FUN_007a0e88(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W5FC6A77E::`anonymous_namespace'::W1EA67F9F,unsigned_int>,class_boost::_bi::list2<class_boost::_bi::value<class_W5FC6A77E::`anonymous_namespace'::W1EA67F9F*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W5FC6A77E::`anonymous_namespace'::W1EA67F9F,unsigned_int>,class_boost::_bi::list2<class_boost::_bi::value<class_W5FC6A77E::`anonymous_namespace'::W1EA67F9F*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



undefined4 __thiscall FUN_007a0ed1(undefined4 param_1_00,byte param_1)

{
  FUN_00b6b826();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a0eed(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5FC6A77E::W88700989>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a0f33(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_007a0f4a(undefined4 param_1_00,byte param_1)

{
  FUN_00b6b647();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a0f66(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5FC6A77E::W8A116947>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a0fac(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_007a0fc3(undefined4 *param_1)

{
  *param_1 = W133E5AC5::W76425245::vftable;
  return;
}



undefined4 * __thiscall FUN_007a0fca(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W133E5AC5::W76425245::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007a1058(undefined4 param_1_00,byte param_1)

{
  FUN_00b6b1a6();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007a1074(undefined4 param_1)

{
  FUN_007a107c(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007a107c(undefined4 *param_1)

{
  *param_1 = boost::signals2::
             signal2<void,class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&,class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&,class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&)>,class_boost::signals2::mutex>
             ::vftable;
  FUN_007a6fad(param_1[2]);
  if (param_1[3] != 0) {
    FUN_0040127a();
  }
  *param_1 = boost::signals2::signal_base::vftable;
  return;
}



undefined4 FUN_007a10be(undefined4 param_1,undefined4 param_2)

{
  FUN_007a1239(param_1,param_2);
  return param_1;
}



void __thiscall FUN_007a10dd(int param_1_00,undefined4 *param_1)

{
  *param_1 = *(undefined4 *)(param_1_00 + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xc);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_007a10f9(int *param_1,uint param_2)

{
  int iVar1;
  char cVar2;
  int **ppiVar3;
  int iVar4;
  undefined4 local_18;
  
  ppiVar3 = (int **)FUN_00418daa(1,0);
  if (ppiVar3 == (int **)0x0) {
    ppiVar3 = (int **)0x0;
  }
  else {
    *ppiVar3 = param_1;
  }
  *param_1 = (int)ppiVar3;
  iVar4 = *(int *)(param_2 + 0x10);
  iVar1 = *(int *)(param_2 + 0xc);
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  if (iVar4 - iVar1 >> 3 != 0) {
    cVar2 = FUN_006b1f5c();
    if (cVar2 != '\0') {
      FUN_0046e65a();
      FUN_0046e65a();
      param_2 = param_2 & 0xffffff00;
      iVar4 = FUN_00438958(local_18,param_1,param_2);
      param_1[4] = iVar4;
    }
  }
  return param_1;
}



void Catch_All_007a1192(void)

{
  code *pcVar1;
  
  FUN_00436bee();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_007a11a4(undefined4 param_1_00,byte param_1)

{
  FUN_007a107c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007a1239(undefined4 param_1,undefined4 param_2)

{
  int unaff_EDI;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(unaff_EDI + 0x10));
  FUN_007a1533(param_1,param_2);
  LeaveCriticalSection((LPCRITICAL_SECTION)(unaff_EDI + 0x10));
  return param_1;
}



void FUN_007a1279(void)

{
  char cVar1;
  uint uVar2;
  undefined4 *unaff_EBX;
  undefined auStack_148 [4];
  LPCRITICAL_SECTION local_144;
  undefined4 uStack_140;
  undefined4 local_138;
  undefined4 local_134;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c5ef5c;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_148;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffeb0;
  ExceptionList = &local_14;
  local_138 = 0;
  local_134 = 0;
  local_c = 0;
  local_144 = (LPCRITICAL_SECTION)(unaff_EBX + 4);
  EnterCriticalSection(local_144);
  local_c = CONCAT31(local_c._1_3_,1);
  cVar1 = FUN_00439f23(uVar2);
  if (cVar1 != '\0') {
    FUN_00437588(0,1);
  }
  uStack_140 = *unaff_EBX;
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EBX + 1);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_007a1533(int *param_1,undefined4 param_2)

{
  int local_28;
  int local_24;
  undefined4 local_20;
  undefined local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7a153f;
  FUN_007a173a(&local_28,param_2);
  local_1c = 0;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  local_20 = 2;
  FUN_00436e6f(&local_28);
  *(undefined4 *)(local_28 + 0x68) = 2;
  FUN_0041ba77();
  if (local_24 != 0) {
    LOCK();
    *(int *)(local_24 + 8) = *(int *)(local_24 + 8) + 1;
    UNLOCK();
  }
  *param_1 = local_28;
  param_1[1] = local_24;
  if (local_24 != 0) {
    LOCK();
    *(int *)(local_24 + 8) = *(int *)(local_24 + 8) + 1;
    UNLOCK();
  }
  FUN_00417fc9();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_24 != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007a15ea(undefined4 *param_1)

{
  *param_1 = boost::signals2::detail::
             connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot2<void,class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&,class_boost::function<void___cdecl(class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&)>_>,class_boost::signals2::mutex>
             ::vftable;
  if (*(char *)(param_1 + 0x1b) != '\0') {
    *(undefined *)(param_1 + 0x1b) = 0;
  }
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x14));
  FUN_007a7d59(param_1 + 4);
  *param_1 = boost::signals2::detail::connection_body_base::vftable;
  FUN_00417fc9();
  return;
}



void __fastcall FUN_007a1639(int *param_1)

{
  if (*(uint *)(*param_1 + 0x90) < *(uint *)(*param_1 + 0x94)) {
    FUN_007a16a5(param_1[2]);
  }
  return;
}



void __fastcall
FUN_007a1657(undefined4 param_1_00,undefined4 param_2_00,undefined4 param_1,undefined4 param_2,
            undefined4 param_3,undefined4 param_4)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = param_1;
  unaff_ESI[1] = param_2;
  unaff_ESI[3] = param_4;
  unaff_ESI[6] = param_4;
  unaff_ESI[2] = param_3;
  unaff_ESI[4] = param_2_00;
  unaff_ESI[5] = param_3;
  FUN_007a188c(param_1_00);
  return;
}



undefined4 __thiscall FUN_007a1689(undefined4 param_1_00,byte param_1)

{
  FUN_007a15ea();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007a16a5(int **param_1_00,int param_1)

{
  char cVar1;
  void *pvVar2;
  LPCRITICAL_SECTION lpCriticalSection;
  undefined4 local_20;
  undefined4 local_1c;
  LPCRITICAL_SECTION local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7a16b1;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1_00 + 4);
  local_18 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  local_8 = 0;
  if (**param_1_00 == param_1) {
    cVar1 = FUN_00439f23();
    if (cVar1 == '\0') {
      pvVar2 = operator_new(0x10);
      local_8._0_1_ = 1;
      if (pvVar2 != (void *)0x0) {
        FUN_007a1b34(**param_1_00);
      }
      local_8 = (uint)local_8._1_3_ << 8;
      FUN_007a1f55();
    }
    local_20 = *(undefined4 *)**param_1_00;
    local_1c = *(undefined4 *)((undefined4 *)**param_1_00)[5];
    FUN_00437498(0,&local_20,0);
    lpCriticalSection = local_18;
  }
  LeaveCriticalSection(lpCriticalSection);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a173a(undefined4 *param_1,int param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  
  FUN_007a1977();
  pvVar2 = operator_new(0x78);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_007a1b8a(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_007a220e(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (param_2 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_007a17b5(int *param_1,undefined *param_2)

{
  int **ppiVar1;
  int iVar2;
  int *piVar3;
  
  ppiVar1 = (int **)FUN_00418daa(1,0);
  if (ppiVar1 == (int **)0x0) {
    ppiVar1 = (int **)0x0;
  }
  else {
    *ppiVar1 = param_1;
  }
  *param_1 = (int)ppiVar1;
  iVar2 = FUN_006a6d92();
  param_1[5] = iVar2;
  param_1[6] = 0;
  piVar3 = (int *)FUN_00418daa(1,0);
  if (piVar3 == (int *)0x0) {
    piVar3 = (int *)0x0;
  }
  else {
    *piVar3 = (int)(param_1 + 7);
  }
  param_1[7] = (int)piVar3;
  *(undefined *)(param_1 + 9) = param_1._3_1_;
  FUN_007a8e91();
  *(undefined *)(param_1 + 0xf) = *param_2;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007a188c(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  int **ppiVar4;
  int *piVar5;
  
  cVar3 = FUN_006b8eca();
  if (cVar3 == '\0') {
    cVar3 = FUN_006b8eca();
    while (cVar3 == '\0') {
      ppiVar4 = (int **)FUN_006adbc2();
      piVar1 = *ppiVar4;
      (**(code **)(*piVar1 + 8))();
      FUN_004452ee();
      iVar2 = param_1[4];
      FUN_006adbc2();
      FUN_007a9156(iVar2 + 4);
      piVar5 = (int *)FUN_006adbc2();
      if (*(char *)(*piVar5 + 4) == '\0') {
        piVar5 = (int *)(param_1[4] + 0x94);
        *piVar5 = *piVar5 + 1;
      }
      else {
        piVar5 = (int *)(param_1[4] + 0x90);
        *piVar5 = *piVar5 + 1;
      }
      FUN_006adbc2();
      cVar3 = FUN_0044586e();
      if (cVar3 == '\0') {
        param_1[5] = *param_1;
        param_1[6] = param_1[1];
        (**(code **)(*piVar1 + 0xc))();
        break;
      }
      (**(code **)(*piVar1 + 0xc))();
      FUN_007a741a();
      cVar3 = FUN_006b8eca();
    }
    cVar3 = FUN_006b8eca();
    if (cVar3 != '\0') {
      param_1[5] = param_1[2];
      param_1[6] = param_1[3];
    }
  }
  return;
}



void __fastcall FUN_007a1977(int **param_1)

{
  char cVar1;
  void *local_20;
  undefined4 local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c485ed;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  cVar1 = FUN_00439f23(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    local_20 = operator_new(0x10);
    local_c = 0;
    if (local_20 != (void *)0x0) {
      FUN_007a1b34(**param_1);
    }
    local_c = 0xffffffff;
    FUN_007a1f55();
    local_20 = *(void **)**param_1;
                    // WARNING: Load size is inaccurate
    local_1c = *((void **)**param_1)[5];
    FUN_00437498(1,&local_20,0);
  }
  else {
    FUN_00437588(1,2);
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a1a24(undefined4 *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  char cVar3;
  int iVar4;
  int local_4c;
  int local_48;
  int local_34;
  int local_30;
  
  FUN_007a1c5e(param_1);
  FUN_007a1d21(param_1 + 7);
  *(undefined *)(param_1 + 0xf) = *(undefined *)(param_2 + 0x3c);
  uVar1 = *(undefined4 *)param_1[5];
  uVar2 = *param_1;
  while( true ) {
    cVar3 = FUN_006b8eca();
    if (cVar3 != '\0') break;
    iVar4 = FUN_006badde();
    *(undefined4 *)(iVar4 + 0xc) = uVar2;
    *(undefined4 *)(iVar4 + 0x10) = uVar1;
    FUN_007a1c11(param_2);
    FUN_00620942();
    FUN_007a1c11(param_2);
    while( true ) {
      if ((local_34 == 0) || (local_34 != local_4c)) {
        FUN_00a3fb10();
      }
      if (local_30 == local_48) break;
      FUN_007a741a();
      FUN_007a741a();
    }
    FUN_00620942();
    FUN_00620942();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_007a1b34(int param_1_00,undefined4 param_1)

{
  void *pvVar1;
  int unaff_ESI;
  
  pvVar1 = operator_new(0x40);
  if (pvVar1 != (void *)0x0) {
    FUN_007a1a24(pvVar1,param_1);
  }
  FUN_007a1f89(unaff_ESI);
  *(undefined4 *)(unaff_ESI + 8) = *(undefined4 *)(param_1_00 + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a1b8a(undefined4 param_1_00,undefined4 *param_1)

{
  *(undefined *)(param_1 + 1) = 1;
  param_1[2] = 0;
  param_1[3] = 0;
  *param_1 = boost::signals2::detail::
             connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot2<void,class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&,class_boost::function<void___cdecl(class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&)>_>,class_boost::signals2::mutex>
             ::vftable;
  FUN_004373e3(param_1 + 4,param_1_00);
  FUN_00672a11();
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x14));
  param_1[0x1a] = 0;
  *(undefined *)(param_1 + 0x1b) = 0;
  return param_1;
}



char FUN_007a1be8(void)

{
  char cVar1;
  
  cVar1 = FUN_0043772e();
  if (cVar1 == '\0') {
    cVar1 = FUN_0043772e();
    cVar1 = '\x01' - (cVar1 != '\0');
  }
  else {
    cVar1 = '\0';
  }
  return cVar1;
}



void FUN_007a1c11(undefined4 *param_1)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 *unaff_EBX;
  
  *unaff_EBX = 0;
  unaff_EBX[1] = 0;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    iVar2 = FUN_006badde();
    uVar4 = *(undefined4 *)(iVar2 + 0xc);
    uVar3 = *(undefined4 *)(iVar2 + 0x10);
  }
  else {
    uVar3 = param_1[5];
    uVar4 = *param_1;
  }
  unaff_EBX[1] = uVar3;
  *unaff_EBX = uVar4;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a1c5e(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00418daa(1,0);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = param_1;
  }
  *param_1 = puVar1;
  puVar1 = (undefined4 *)FUN_006a6d92();
  param_1[6] = 0;
  param_1[5] = puVar1;
  FUN_007a1fd6(param_1,*param_1,*puVar1,*param_1_00,*(undefined4 *)param_1_00[5],*param_1_00,
               (undefined4 *)param_1_00[5]);
  return param_1;
}



void Catch_All_007a1cba(void)

{
  code *pcVar1;
  
  FUN_00437c2b();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007a1ccc(undefined4 *param_1,undefined4 param_2,int *param_3)

{
  undefined4 *unaff_EBX;
  
  FUN_007a741a();
  if (param_3 != (int *)unaff_EBX[5]) {
    *(int *)param_3[1] = *param_3;
    *(int *)(*param_3 + 4) = param_3[1];
    if (param_3[3] != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  param_1[1] = param_3;
  *param_1 = *unaff_EBX;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_007a1d21(int param_1_00,int *param_1)

{
  undefined uVar1;
  int iVar2;
  int *piVar3;
  int **ppiVar4;
  undefined4 uVar5;
  int iVar6;
  int *piVar7;
  
  uVar1 = *(undefined *)(param_1_00 + 8);
  ppiVar4 = (int **)FUN_00418daa(1,0);
  if (ppiVar4 == (int **)0x0) {
    ppiVar4 = (int **)0x0;
  }
  else {
    *ppiVar4 = param_1;
  }
  *param_1 = (int)ppiVar4;
  *(undefined *)(param_1 + 2) = uVar1;
  FUN_007a8e91();
  iVar2 = param_1[6];
  uVar5 = FUN_007a1e14(*(undefined4 *)(*(int *)(param_1_00 + 0x18) + 4),iVar2);
  *(undefined4 *)(iVar2 + 4) = uVar5;
  param_1[7] = *(int *)(param_1_00 + 0x1c);
  iVar2 = param_1[6];
  piVar3 = *(int **)(iVar2 + 4);
  if (*(char *)((int)*(int **)(iVar2 + 4) + 0x21) == '\0') {
    do {
      piVar7 = piVar3;
      piVar3 = (int *)*piVar7;
    } while (*(char *)((int)piVar3 + 0x21) == '\0');
    *(int **)param_1[6] = piVar7;
    iVar2 = *(int *)(param_1[6] + 4);
    do {
      iVar6 = iVar2;
      iVar2 = *(int *)(iVar6 + 8);
    } while (*(char *)(iVar2 + 0x21) == '\0');
    *(int *)(param_1[6] + 8) = iVar6;
  }
  else {
    *(int *)iVar2 = iVar2;
    *(int *)(param_1[6] + 8) = param_1[6];
  }
  return param_1;
}



void Catch_All_007a1dc2(void)

{
  code *pcVar1;
  
  FUN_007a89eb();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_007a1dd4(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x21) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a1e14(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *local_18;
  
  local_18 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)param_1 + 0x21) == '\0') {
    puVar1 = (undefined4 *)FUN_007a8eee(local_18,param_2,local_18,*(undefined *)(param_1 + 8));
    if (*(char *)((int)local_18 + 0x21) != '\0') {
      local_18 = puVar1;
    }
    uVar2 = FUN_007a1e14(*param_1,puVar1);
    *puVar1 = uVar2;
    uVar2 = FUN_007a1e14(param_1[2],puVar1);
    puVar1[2] = uVar2;
  }
  return local_18;
}



void Catch_All_007a1e7d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_007a8eb2(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007a1e92(void)

{
  undefined4 *in_EAX;
  longlong lVar1;
  
  lVar1 = __alldiv(*in_EAX,in_EAX[1],1000,0);
  if (((int)((ulonglong)lVar1 >> 0x20) < 1) && (lVar1 < 0)) {
    lVar1 = 0;
  }
  FUN_007a2470(lVar1);
  FUN_0082a570(0xffffffff);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007a1ed3(int param_1)

{
  FUN_004382a5(param_1);
  *(undefined4 *)(param_1 + 0x20) = 0;
  FUN_007a2066();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a1f08(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_007a21b1(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_007a1f55(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *unaff_ESI;
  undefined local_c [4];
  int local_8;
  
  puVar2 = (undefined4 *)FUN_007a1f08(local_c);
  if (puVar2 != unaff_ESI) {
    uVar1 = *puVar2;
    *puVar2 = *unaff_ESI;
    *unaff_ESI = uVar1;
  }
  uVar1 = unaff_ESI[1];
  unaff_ESI[1] = puVar2[1];
  puVar2[1] = uVar1;
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a1f89(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_007a226b(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void __thiscall
FUN_007a1fd6(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  FUN_007a952b(param_1,param_1_00,param_2,param_3,param_4,param_5,param_6,param_7);
  return;
}



undefined * Catch_007a2054(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  return &UNK_007a2038;
}



void FUN_007a2066(void)

{
  int iVar1;
  int unaff_EDI;
  undefined4 local_58 [17];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c19085;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00672a11(DAT_0323f878 ^ (uint)&stack0xffffffa0);
  if (unaff_EDI != iVar1) {
    local_58[0] = 0;
    local_c._0_1_ = 1;
    local_c._1_3_ = 0;
    FUN_00475d30(local_58);
    FUN_00475d30(iVar1);
    FUN_00475d30(unaff_EDI);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00507e58();
  }
  local_c = 0xffffffff;
  FUN_00507e58();
  ExceptionList = local_14;
  return;
}



void Catch_All_007a2142(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_007a219f(void)

{
  code *pcVar1;
  
  FUN_007a79c0();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a21b1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::signal2_impl<void,class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&,class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&,class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&)>,class_boost::signals2::mutex>::invocation_state>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a21f7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_007a2430(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a220e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot2<void,class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&,class_boost::function<void___cdecl(class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&)>_>,class_boost::signals2::mutex>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a2254(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a226b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::grouped_list<int,struct_std::less<int>,class_boost::shared_ptr<class_boost::signals2::detail::connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot2<void,class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&,class_boost::function<void___cdecl(class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&)>_>,class_boost::signals2::mutex>_>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a22b1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_007a7148(*(undefined4 *)(unaff_EBP + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_007a231e(void)

{
  int *piVar1;
  code *pcVar2;
  int **ppiVar3;
  
  ppiVar3 = (int **)FUN_006adbc2();
  piVar1 = *ppiVar3;
  (**(code **)(*piVar1 + 8))();
  *(undefined *)(piVar1 + 1) = 0;
  (**(code **)(*piVar1 + 0xc))();
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



void FUN_007a2343(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007a23e7(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf2<void,class_W133E5AC5::W6C03B106,class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&>,class_boost::_bi::list3<class_boost::_bi::value<class_W133E5AC5::W6C03B106*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007a237e(code **param_1,undefined4 param_2,undefined4 param_3)

{
  (**param_1)(param_2,param_3);
  return;
}



void __fastcall FUN_007a2390(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_007a2430(*(int *)(param_1 + 0xc));
  }
  return;
}



void FUN_007a23e7(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf2<void,class_W133E5AC5::W6C03B106,class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&>,class_boost::_bi::list3<class_boost::_bi::value<class_W133E5AC5::W6C03B106*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf2<void,class_W133E5AC5::W6C03B106,class_W133E5AC5::WD2318ED3&,struct_W133E5AC5::W94719940_const&>,class_boost::_bi::list3<class_boost::_bi::value<class_W133E5AC5::W6C03B106*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007a2430(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_0040127a();
  }
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0040127a();
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



DWORD * __thiscall FUN_007a2470(DWORD *param_1,DWORD param_2,DWORD param_3)

{
  DWORD DVar1;
  
  DVar1 = GetTickCount();
  *param_1 = DVar1;
  param_1[2] = param_2;
  param_1[3] = param_3;
  *(undefined *)(param_1 + 4) = 1;
  FUN_0043bd15(param_1 + 6);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a2511(undefined4 param_1,int param_2)

{
  FUN_004fe47e();
  if (param_2 != 0) {
    FUN_0040127a();
  }
  return;
}



undefined4 __thiscall FUN_007a25d2(undefined4 param_1_00,byte param_1)

{
  FUN_007a2645(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a25ef(int param_1)

{
  FUN_00507e58();
  if (*(char *)(param_1 + 0x78) != '\0') {
    *(undefined *)(param_1 + 0x78) = 0;
  }
  FUN_007a2742();
  FUN_007a2730();
  FUN_007a271e();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a2645(int param_1)

{
  FUN_007a25ef(param_1 + 0x60);
  FUN_00b6a68c();
  return;
}



undefined4 __thiscall FUN_007a2702(undefined4 param_1_00,byte param_1)

{
  FUN_00b6aee8();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007a271e(undefined4 *param_1)

{
  *param_1 = WB009B997::WDD43FDDC<struct_W133E5AC5::W94719940>::vftable;
  FUN_007a27b7(param_1 + 2,param_1);
  return;
}



void __fastcall FUN_007a2730(undefined4 *param_1)

{
  *param_1 = WB009B997::WDD43FDDC<struct_boost::uuids::uuid>::vftable;
  FUN_007a27df(param_1 + 2,param_1);
  return;
}



void __fastcall FUN_007a2742(undefined4 *param_1)

{
  *param_1 = WB009B997::WDD43FDDC<struct_W133E5AC5::LocationId>::vftable;
  FUN_007a2807(param_1 + 2,param_1);
  return;
}



undefined4 __thiscall FUN_007a2754(undefined4 param_1_00,byte param_1)

{
  FUN_007a271e();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_007a27b7(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7a27cf;
  FUN_007a282f();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007a27d6;
  FUN_00a3f6a1();
}



undefined4 __thiscall FUN_007a2775(undefined4 param_1_00,byte param_1)

{
  FUN_007a2730();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_007a27df(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7a27f7;
  FUN_007a2863();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007a27fe;
  FUN_00a3f6a1();
}



undefined4 __thiscall FUN_007a2796(undefined4 param_1_00,byte param_1)

{
  FUN_007a2742();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_007a2807(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7a281f;
  FUN_007a2897();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007a2826;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007a27b7(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7a27cf;
  FUN_007a282f();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007a27d6;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007a27df(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7a27f7;
  FUN_007a2863();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007a27fe;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007a2807(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7a281f;
  FUN_007a2897();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007a2826;
  FUN_00a3f6a1();
}



void FUN_007a282f(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_007a28cb(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_007a2863(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_007a2966(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_007a2897(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_007a2a05(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_007a28cb(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_007a2d3d();
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_0046e6b6();
    FUN_007a2aa4();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_007a2966(int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  int *in_EAX;
  
  iVar1 = *(int *)in_EAX[6];
  if ((param_2 == 0) || (param_2 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_3 == iVar1) {
    iVar1 = in_EAX[6];
    if ((param_4 == 0) || (param_4 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_5 == iVar1) {
      FUN_007a2fee();
      param_1[1] = *(int *)in_EAX[6];
      *param_1 = *in_EAX;
      return;
    }
  }
  while( true ) {
    if ((param_2 == 0) || (param_2 != param_4)) {
      FUN_00a3fb10();
    }
    if (param_3 == param_5) break;
    FUN_00696a87();
    FUN_007a2d61();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_007a2a05(int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  int *in_EAX;
  
  iVar1 = *(int *)in_EAX[6];
  if ((param_2 == 0) || (param_2 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_3 == iVar1) {
    iVar1 = in_EAX[6];
    if ((param_4 == 0) || (param_4 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_5 == iVar1) {
      FUN_007a2d3d();
      param_1[1] = *(int *)in_EAX[6];
      *param_1 = *in_EAX;
      return;
    }
  }
  while( true ) {
    if ((param_2 == 0) || (param_2 != param_4)) {
      FUN_00a3fb10();
    }
    if (param_3 == param_5) break;
    FUN_0046e6b6();
    FUN_007a2aa4();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007a2b8f)
// WARNING: Removing unreachable block (ram,0x007a2b9f)
// WARNING: Removing unreachable block (ram,0x007a2ba8)
// WARNING: Removing unreachable block (ram,0x007a2bab)
// WARNING: Removing unreachable block (ram,0x007a2b9b)
// WARNING: Removing unreachable block (ram,0x007a2bb8)
// WARNING: Removing unreachable block (ram,0x007a2bc8)
// WARNING: Removing unreachable block (ram,0x007a2bd3)
// WARNING: Removing unreachable block (ram,0x007a2bcf)
// WARNING: Removing unreachable block (ram,0x007a2bc3)
// WARNING: Removing unreachable block (ram,0x007a2bd6)

void FUN_007a2aa4(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7a2ab0;
  if (*(char *)((int)param_4 + 0x29) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_0046e6b6();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
    if (*(char *)(param_4[2] + 0x29) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x29) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x29) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x29) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 10) != '\x01') {
LAB_007a2d07:
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_007a2cbb:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 10) != '\x01'))
  goto LAB_007a2d03;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 10) == '\0') {
      *(undefined *)(ppiVar4 + 10) = 1;
      *(undefined *)(ppiVar3 + 10) = 0;
      FUN_007a3050(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x29) == '\0') {
      if ((*(char *)(*ppiVar4 + 10) != '\x01') || (*(char *)(ppiVar4[2] + 10) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 10) == '\x01') {
          *(undefined *)(*ppiVar4 + 10) = 1;
          *(undefined *)(ppiVar4 + 10) = 0;
          FUN_005d677b(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 10) = *(undefined *)(ppiVar3 + 10);
        *(undefined *)(ppiVar3 + 10) = 1;
        *(undefined *)(ppiVar4[2] + 10) = 1;
        FUN_007a3050(param_1);
        goto LAB_007a2d03;
      }
LAB_007a2cb2:
      *(undefined *)(ppiVar4 + 10) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 10) == '\0') {
      *(undefined *)(ppiVar4 + 10) = 1;
      *(undefined *)(ppiVar3 + 10) = 0;
      FUN_005d677b(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x29) == '\0') {
      if ((*(char *)(ppiVar4[2] + 10) == '\x01') && (*(char *)(*ppiVar4 + 10) == '\x01'))
      goto LAB_007a2cb2;
      if (*(char *)(*ppiVar4 + 10) == '\x01') {
        *(undefined *)(ppiVar4[2] + 10) = 1;
        *(undefined *)(ppiVar4 + 10) = 0;
        FUN_007a3050(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 10) = *(undefined *)(ppiVar3 + 10);
      *(undefined *)(ppiVar3 + 10) = 1;
      *(undefined *)(*ppiVar4 + 10) = 1;
      FUN_005d677b(param_1);
LAB_007a2d03:
      *(undefined *)(ppiVar5 + 10) = 1;
      goto LAB_007a2d07;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_007a2cbb;
}



void FUN_007a2d3d(void)

{
  int *piVar1;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EDI + 0x18);
  FUN_007a3012(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(unaff_EDI + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007a2e4c)
// WARNING: Removing unreachable block (ram,0x007a2e5c)
// WARNING: Removing unreachable block (ram,0x007a2e65)
// WARNING: Removing unreachable block (ram,0x007a2e68)
// WARNING: Removing unreachable block (ram,0x007a2e58)
// WARNING: Removing unreachable block (ram,0x007a2e75)
// WARNING: Removing unreachable block (ram,0x007a2e85)
// WARNING: Removing unreachable block (ram,0x007a2e90)
// WARNING: Removing unreachable block (ram,0x007a2e8c)
// WARNING: Removing unreachable block (ram,0x007a2e80)
// WARNING: Removing unreachable block (ram,0x007a2e93)

void FUN_007a2d61(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7a2d6d;
  if (*(char *)((int)param_4 + 0x1d) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00696a87();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
    if (*(char *)(param_4[2] + 0x1d) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x1d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x1d) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x1d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 7) != '\x01') {
LAB_007a2fc4:
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_007a2f78:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 7) != '\x01'))
  goto LAB_007a2fc0;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 7) == '\0') {
      *(undefined *)(ppiVar4 + 7) = 1;
      *(undefined *)(ppiVar3 + 7) = 0;
      FUN_00745426(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x1d) == '\0') {
      if ((*(char *)(*ppiVar4 + 7) != '\x01') || (*(char *)(ppiVar4[2] + 7) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 7) == '\x01') {
          *(undefined *)(*ppiVar4 + 7) = 1;
          *(undefined *)(ppiVar4 + 7) = 0;
          FUN_006baade(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 7) = *(undefined *)(ppiVar3 + 7);
        *(undefined *)(ppiVar3 + 7) = 1;
        *(undefined *)(ppiVar4[2] + 7) = 1;
        FUN_00745426(param_1);
        goto LAB_007a2fc0;
      }
LAB_007a2f6f:
      *(undefined *)(ppiVar4 + 7) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 7) == '\0') {
      *(undefined *)(ppiVar4 + 7) = 1;
      *(undefined *)(ppiVar3 + 7) = 0;
      FUN_006baade(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x1d) == '\0') {
      if ((*(char *)(ppiVar4[2] + 7) == '\x01') && (*(char *)(*ppiVar4 + 7) == '\x01'))
      goto LAB_007a2f6f;
      if (*(char *)(*ppiVar4 + 7) == '\x01') {
        *(undefined *)(ppiVar4[2] + 7) = 1;
        *(undefined *)(ppiVar4 + 7) = 0;
        FUN_00745426(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 7) = *(undefined *)(ppiVar3 + 7);
      *(undefined *)(ppiVar3 + 7) = 1;
      *(undefined *)(*ppiVar4 + 7) = 1;
      FUN_006baade(param_1);
LAB_007a2fc0:
      *(undefined *)(ppiVar5 + 7) = 1;
      goto LAB_007a2fc4;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_007a2f78;
}



void FUN_007a2fee(void)

{
  int *piVar1;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EDI + 0x18);
  FUN_007a3090(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(unaff_EDI + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



void FUN_007a3012(int param_1)

{
  if (*(char *)(param_1 + 0x29) == '\0') {
    FUN_007a3012(*(undefined4 *)(param_1 + 8));
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __thiscall FUN_007a3050(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x29) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



void FUN_007a3090(int param_1)

{
  if (*(char *)(param_1 + 0x1d) == '\0') {
    FUN_007a3090(*(undefined4 *)(param_1 + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void Catch_All_007a3108(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_007a3165(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_007a31c2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007a31d9(void)

{
  FUN_007a25d2();
  return;
}



void __fastcall FUN_007a31e1(undefined4 *param_1)

{
  *param_1 = W133E5AC5::W8AA9C8BE::vftable;
  return;
}



undefined4 * __thiscall FUN_007a31e8(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W133E5AC5::W8AA9C8BE::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007a3205(undefined4 *param_1)

{
  *param_1 = W133E5AC5::W96B66D8D::vftable;
  return;
}



undefined4 * __thiscall FUN_007a320c(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W133E5AC5::W96B66D8D::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_007a3229(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xc))(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a3238(undefined4 *param_1)

{
  *param_1 = W133E5AC5::W183EFFA9::vftable;
  FUN_0041c276(param_1 + 1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007a3264(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  undefined4 *puStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puStack_24 = param_1 + 1;
  puVar1 = &uStack_28;
  uStack_28 = 0x7a3280;
  FUN_0041c3e3();
  *param_1 = W133E5AC5::W96B66D8D::vftable;
  puVar1[-1] = 0x7a328b;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_007a3264(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  undefined4 *puStack_24;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puStack_24 = param_1 + 1;
  puVar1 = &uStack_28;
  uStack_28 = 0x7a3280;
  FUN_0041c3e3();
  *param_1 = W133E5AC5::W96B66D8D::vftable;
  puVar1[-1] = 0x7a328b;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a3293(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x68);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00bbf47d(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_007a358b(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



undefined4 __thiscall FUN_007a3304(undefined4 param_1_00,byte param_1)

{
  FUN_00b6a80f();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007a3320(int *param_1,byte *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  int *unaff_EBX;
  byte *pbVar6;
  undefined4 *puVar7;
  bool bVar8;
  bool bVar9;
  undefined local_1c [4];
  undefined4 *local_18;
  int local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  puVar7 = (undefined4 *)((undefined4 *)param_1[6])[1];
  cVar1 = *(char *)((int)puVar7 + 0x1d);
  local_8 = CONCAT31(local_8._1_3_,1);
  local_10 = (undefined4 *)param_1[6];
  while (cVar1 == '\0') {
    iVar4 = 0x10;
    bVar8 = false;
    iVar5 = 0;
    bVar9 = true;
    pbVar6 = param_2;
    puVar2 = puVar7 + 3;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar8 = *pbVar6 < *(byte *)puVar2;
      bVar9 = *pbVar6 == *(byte *)puVar2;
      pbVar6 = pbVar6 + 1;
      puVar2 = (undefined4 *)((int)puVar2 + 1);
    } while (bVar9);
    if (!bVar9) {
      iVar5 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
    }
    local_8._1_3_ = (uint3)((uint)local_8 >> 8);
    if (iVar5 < 0) {
      puVar2 = (undefined4 *)*puVar7;
      local_8 = CONCAT31(local_8._1_3_,1);
    }
    else {
      puVar2 = (undefined4 *)puVar7[2];
      local_8 = (uint)local_8._1_3_ << 8;
    }
    local_10 = puVar7;
    puVar7 = puVar2;
    cVar1 = *(char *)((int)puVar2 + 0x1d);
  }
  local_14 = *param_1;
  local_c = local_10;
  if ((char)local_8 == '\0') {
LAB_007a33c6:
    iVar4 = 0x10;
    bVar8 = false;
    iVar5 = 0;
    bVar9 = true;
    puVar7 = local_10 + 3;
    pbVar6 = param_2;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar8 = *(byte *)puVar7 < *pbVar6;
      bVar9 = *(byte *)puVar7 == *pbVar6;
      puVar7 = (undefined4 *)((int)puVar7 + 1);
      pbVar6 = pbVar6 + 1;
    } while (bVar9);
    if (!bVar9) {
      iVar5 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
    }
    iVar4 = local_8;
    if (-1 < iVar5) {
      *(undefined *)(unaff_EBX + 2) = 0;
      goto LAB_007a33f3;
    }
  }
  else {
    local_18 = *(undefined4 **)param_1[6];
    if (local_14 == 0) {
      FUN_00a3fb10();
    }
    if (local_c != local_18) {
      FUN_00696e3c();
      goto LAB_007a33c6;
    }
    iVar4 = 1;
  }
  piVar3 = (int *)FUN_007a3400(local_1c,iVar4,param_2);
  local_14 = *piVar3;
  local_10 = (undefined4 *)piVar3[1];
  *(undefined *)(unaff_EBX + 2) = 1;
LAB_007a33f3:
  unaff_EBX[1] = (int)local_10;
  *unaff_EBX = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007a3400(int **param_1_00,undefined4 *param_1,char param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7a340c;
  if (0xffffffd < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_007a354f(unaff_ESI[6],param_1_00,unaff_ESI[6],param_3,0);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_007a3527;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_007a3527;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_007a3527:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 7) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x1c) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 7) == '\0') {
LAB_007a34e3:
        *(undefined *)(piVar1 + 7) = 1;
        *(undefined *)(piVar7 + 7) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x1c) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_00745426(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x1c) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x1c) = 0;
        FUN_006baade(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 7) == '\0') goto LAB_007a34e3;
    if (piVar8 == (int *)*piVar1) {
      FUN_006baade(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x1c) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x1c) = 0;
    FUN_00745426(unaff_ESI);
  } while( true );
}



void FUN_007a354f(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,
                 undefined param_5)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_4;
    puVar1[4] = param_4[1];
    puVar1[5] = param_4[2];
    puVar1[6] = param_4[3];
    *(undefined *)(puVar1 + 7) = param_5;
    *(undefined *)((int)puVar1 + 0x1d) = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a358b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W133E5AC5::WE8F48EFA>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a35d1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007a35e8(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007a3623(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W133E5AC5::W4CC6056E>,class_boost::_bi::list1<class_boost::_bi::value<class_W133E5AC5::W4CC6056E*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007a3623(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W133E5AC5::W4CC6056E>,class_boost::_bi::list1<class_boost::_bi::value<class_W133E5AC5::W4CC6056E*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W133E5AC5::W4CC6056E>,class_boost::_bi::list1<class_boost::_bi::value<class_W133E5AC5::W4CC6056E*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_007a366c(undefined4 *param_1)

{
  *param_1 = W133E5AC5::WD83A4B8B::vftable;
  return;
}



undefined4 * __thiscall FUN_007a3673(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W133E5AC5::WD83A4B8B::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007a36e4(undefined *param_1,char *param_2)

{
  *param_1 = 0;
  if (*param_2 != '\0') {
    if ((undefined4 *)(param_1 + 4) != (undefined4 *)0x0) {
      *(undefined4 *)(param_1 + 4) = *(undefined4 *)(param_2 + 4);
    }
    *param_1 = 1;
  }
  FUN_0041b126(param_2 + 8);
  FUN_00462566();
  FUN_00462566();
  FUN_00462566();
  FUN_00462566();
  *(undefined4 *)(param_1 + 0x90) = *(undefined4 *)(param_2 + 0x90);
  *(undefined4 *)(param_1 + 0x94) = *(undefined4 *)(param_2 + 0x94);
  *(undefined4 *)(param_1 + 0x98) = *(undefined4 *)(param_2 + 0x98);
  *(undefined4 *)(param_1 + 0x9c) = *(undefined4 *)(param_2 + 0x9c);
  FUN_00462566();
  FUN_00462566();
  FUN_00462566();
  FUN_00462566();
  FUN_00462566();
  FUN_00462566();
  *(undefined4 *)(param_1 + 0x160) = *(undefined4 *)(param_2 + 0x160);
  *(undefined4 *)(param_1 + 0x164) = *(undefined4 *)(param_2 + 0x164);
  *(undefined4 *)(param_1 + 0x168) = *(undefined4 *)(param_2 + 0x168);
  *(undefined4 *)(param_1 + 0x16c) = *(undefined4 *)(param_2 + 0x16c);
  *(undefined4 *)(param_1 + 0x170) = *(undefined4 *)(param_2 + 0x170);
  FUN_007a38e2(param_1 + 0x174,param_2 + 0x174);
  FUN_00430a16(param_2 + 0x18c);
  FUN_00462566();
  *(undefined4 *)(param_1 + 0x1c4) = *(undefined4 *)(param_2 + 0x1c4);
  *(undefined4 *)(param_1 + 0x1c8) = *(undefined4 *)(param_2 + 0x1c8);
  *(undefined4 *)(param_1 + 0x1cc) = *(undefined4 *)(param_2 + 0x1cc);
  *(undefined4 *)(param_1 + 0x1d0) = *(undefined4 *)(param_2 + 0x1d0);
  FUN_00462566();
  FUN_00430a16(param_2 + 500);
  FUN_00462566();
  *(undefined4 *)(param_1 + 0x22c) = *(undefined4 *)(param_2 + 0x22c);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_2 + 0x230);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007a38e2(int param_1,int param_2)

{
  int iVar1;
  void *_Dst;
  char cVar2;
  int iVar3;
  rsize_t _DstSize;
  int local_20;
  
  FUN_0041c235();
  iVar3 = *(int *)(param_2 + 0x10);
  iVar1 = *(int *)(param_2 + 0xc);
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  if (iVar3 - iVar1 >> 2 != 0) {
    cVar2 = FUN_0041c251();
    if (cVar2 != '\0') {
      FUN_0046e65a();
      FUN_0046e65a();
      _Dst = *(void **)(param_1 + 0xc);
      iVar3 = local_20 - (int)&stack0xffffffc8 >> 2;
      _DstSize = iVar3 * 4;
      if (iVar3 != 0) {
        _memmove_s(_Dst,_DstSize,&stack0xffffffc8,_DstSize);
      }
      *(void **)(param_1 + 0x10) = (void *)(_DstSize + (int)_Dst);
    }
  }
  return param_1;
}



void FUN_007a3975(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = WB009B997::WDD43FDDC<struct_W133E5AC5::W94719940>::vftable;
  *(undefined *)(unaff_ESI + 1) = 0;
  FUN_007a444d(unaff_ESI + 2);
  return;
}



bool FUN_007a3b34(void)

{
  int in_EAX;
  
  if (*(char *)(in_EAX + 4) != '\0') {
    return false;
  }
  return *(int *)(in_EAX + 0x24) == 0;
}



void FUN_007a3b48(undefined4 *param_1)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  if (unaff_ESI != param_1) {
    FUN_007a28cb(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,
                 (undefined4 *)unaff_ESI[6]);
    FUN_007a4839();
  }
  return;
}



undefined4 *
FUN_007a3b7e(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  
  while ((cVar1 = FUN_006b8eca(), cVar1 == '\0' && (cVar1 = FUN_006b8eca(), cVar1 == '\0'))) {
    uVar2 = FUN_006badde();
    uVar3 = FUN_006badde();
    cVar1 = FUN_00412a58(uVar2,uVar3);
    if (cVar1 == '\0') {
      uVar2 = FUN_006badde();
      uVar3 = FUN_006badde();
      cVar1 = FUN_00412a58(uVar3,uVar2);
      if (cVar1 == '\0') {
        FUN_0046e6b6();
        uVar2 = FUN_006badde();
        FUN_007a3e7d(uVar2);
      }
    }
    FUN_0046e6b6();
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  param_1[2] = param_4;
  return param_1;
}



undefined4
FUN_007a3c25(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
            undefined4 param_9)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  
  while ((cVar1 = FUN_006b8eca(), cVar1 == '\0' && (cVar1 = FUN_006b8eca(), cVar1 == '\0'))) {
    uVar2 = FUN_006badde();
    uVar3 = FUN_006badde();
    cVar1 = FUN_00412a58(uVar2,uVar3);
    if (cVar1 == '\0') {
      uVar2 = FUN_006badde();
      uVar3 = FUN_006badde();
      cVar1 = FUN_00412a58(uVar3,uVar2);
      if (cVar1 == '\0') {
        FUN_0046e6b6();
      }
    }
    else {
      uVar2 = FUN_006badde();
      FUN_007a3e7d(uVar2);
    }
    FUN_0046e6b6();
  }
  FUN_007a426a(param_1,param_2,param_3,param_4,param_6,param_7,param_8,param_9);
  return param_1;
}



undefined4
FUN_007a3cd3(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
            undefined4 param_9)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  
  while ((cVar1 = FUN_006b8eca(), cVar1 == '\0' && (cVar1 = FUN_006b8eca(), cVar1 == '\0'))) {
    uVar2 = FUN_006badde();
    uVar3 = FUN_006badde();
    cVar1 = FUN_00412a58(uVar3,uVar2);
    if (cVar1 == '\0') {
      uVar2 = FUN_006badde();
      uVar3 = FUN_006badde();
      cVar1 = FUN_00412a58(uVar2,uVar3);
      if (cVar1 == '\0') {
        FUN_0046e6b6();
      }
    }
    else {
      uVar2 = FUN_006badde();
      FUN_007a3e7d(uVar2);
    }
    FUN_0046e6b6();
  }
  FUN_007a426a(param_1,param_2,param_3,param_4,param_6,param_7,param_8,param_9);
  return param_1;
}



undefined4
FUN_007a3d7b(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
            undefined4 param_9,undefined4 param_10,undefined4 param_11,undefined4 param_12,
            undefined4 param_13)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined local_10 [12];
  
  while ((cVar1 = FUN_006b8eca(), cVar1 == '\0' && (cVar1 = FUN_006b8eca(), cVar1 == '\0'))) {
    uVar2 = FUN_006badde();
    uVar3 = FUN_006badde();
    cVar1 = FUN_00412a58(uVar2,uVar3);
    if (cVar1 == '\0') {
      uVar2 = FUN_006badde();
      uVar3 = FUN_006badde();
      cVar1 = FUN_00412a58(uVar3,uVar2);
      if (cVar1 == '\0') {
        uVar2 = FUN_006badde();
        FUN_007a3e7d(uVar2);
        FUN_0046e6b6();
      }
      else {
        uVar2 = FUN_006badde();
        FUN_007a3e7d(uVar2);
      }
    }
    else {
      uVar2 = FUN_006badde();
      FUN_007a3e7d(uVar2);
    }
    FUN_0046e6b6();
  }
  puVar4 = (undefined4 *)
           FUN_007a426a(local_10,param_2,param_3,param_4,param_6,param_7,param_8,param_9);
  FUN_007a426a(param_1,*puVar4,puVar4[1],puVar4[2],param_10,param_11,param_12,param_13);
  return param_1;
}



void FUN_007a3e7d(undefined4 param_1)

{
  undefined4 *puVar1;
  int unaff_EDI;
  undefined local_10 [12];
  
  puVar1 = (undefined4 *)
           FUN_007a3eb0(local_10,param_1,*(undefined4 *)(unaff_EDI + 4),
                        *(undefined4 *)(unaff_EDI + 8));
  *(undefined4 *)(unaff_EDI + 4) = *puVar1;
  *(undefined4 *)(unaff_EDI + 8) = puVar1[1];
  FUN_0046e6b6();
  return;
}



undefined4 * FUN_007a3eb0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 != '\0') {
        cVar1 = FUN_00412a58(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_007a402f;
        uVar4 = 0;
        goto LAB_007a3ed2;
      }
      cVar1 = FUN_00412a58(param_2,param_4 + 0xc);
      if (cVar1 == '\0') {
LAB_007a3fbf:
        cVar1 = FUN_00412a58(param_4 + 0xc,param_2);
        if (cVar1 == '\0') {
LAB_007a402f:
          puVar3 = (undefined4 *)FUN_007a4051(in_EAX,param_2);
          *param_1 = *puVar3;
          param_1[1] = puVar3[1];
          return param_1;
        }
        FUN_0046e6b6();
        cVar1 = FUN_006b8eca();
        if ((cVar1 == '\0') && (cVar1 = FUN_00412a58(param_2,param_4 + 0xc), cVar1 == '\0'))
        goto LAB_007a402f;
        if (*(char *)(*(int *)(param_4 + 8) + 0x29) == '\0') {
          uVar4 = 1;
          goto LAB_007a3ed2;
        }
      }
      else {
        iVar2 = FUN_007a4650();
        cVar1 = FUN_00412a58(*(int *)(iVar2 + 4) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_007a3fbf;
        if (*(char *)(*(int *)(param_4 + 8) + 0x29) == '\0') {
          uVar4 = 1;
          goto LAB_007a3ed2;
        }
      }
      uVar4 = 0;
      goto LAB_007a3ed2;
    }
    cVar1 = FUN_00412a58(param_2,param_4 + 0xc);
    if (cVar1 == '\0') goto LAB_007a402f;
  }
  uVar4 = 1;
LAB_007a3ed2:
  FUN_007a411b(param_1,uVar4,param_2);
  return param_1;
}



void FUN_007a4051(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  puVar2 = (undefined4 *)local_8[1];
  local_c = CONCAT31(local_c._1_3_,1);
  while (*(char *)((int)puVar2 + 0x29) == '\0') {
    local_8 = puVar2;
    cVar1 = FUN_00412a58(param_2,puVar2 + 3);
    local_c = CONCAT31(local_c._1_3_,cVar1);
    if (cVar1 == '\0') {
      puVar2 = (undefined4 *)puVar2[2];
    }
    else {
      puVar2 = (undefined4 *)*puVar2;
    }
  }
  local_14 = *param_1;
  local_10 = local_8;
  if ((char)local_c != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007a40c3;
    }
    FUN_007a4650();
  }
  puVar2 = local_10;
  cVar1 = FUN_00412a58(local_10 + 3,param_2);
  uVar3 = local_c;
  if (cVar1 == '\0') {
    *unaff_EBX = local_14;
    unaff_EBX[1] = puVar2;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007a40c3:
  puVar2 = (undefined4 *)FUN_007a411b(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007a411b(int **param_1_00,undefined4 *param_1,char param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7a4127;
  if (0x9249247 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_007a4781(unaff_ESI[6],param_1_00,unaff_ESI[6],param_3,0);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_007a4242;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_007a4242;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_007a4242:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 10) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x28) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 10) == '\0') {
LAB_007a41fe:
        *(undefined *)(piVar1 + 10) = 1;
        *(undefined *)(piVar7 + 10) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x28) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007a3050(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x28) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x28) = 0;
        FUN_005d677b(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 10) == '\0') goto LAB_007a41fe;
    if (piVar8 == (int *)*piVar1) {
      FUN_005d677b(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x28) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x28) = 0;
    FUN_007a3050(unaff_ESI);
  } while( true );
}



undefined4 *
FUN_007a426a(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 uVar2;
  
  while( true ) {
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') break;
    uVar2 = FUN_006badde();
    FUN_007a3e7d(uVar2);
    FUN_0046e6b6();
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  param_1[2] = param_4;
  return param_1;
}



void __fastcall FUN_007a42ca(undefined4 *param_1)

{
  *param_1 = W133E5AC5::WC040D38D::vftable;
  return;
}



undefined4 * __thiscall FUN_007a42d1(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W133E5AC5::WC040D38D::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007a42ee(undefined4 *param_1)

{
  *param_1 = W133E5AC5::W53828619::vftable;
  return;
}



undefined4 * __thiscall FUN_007a42f5(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W133E5AC5::W53828619::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007a4312(undefined4 param_1_00,byte param_1)

{
  FUN_00b6a68c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a432e(undefined4 *param_1)

{
  *param_1 = WB009B997::WDD43FDDC<struct_W133E5AC5::LocationId>::vftable;
  FUN_007a444d(param_1 + 2);
  FUN_007a47ec();
  return param_1;
}



void FUN_007a435f(undefined4 param_1)

{
  int in_EAX;
  
  if (*(char *)(in_EAX + 4) == '\0') {
    FUN_007a44a1(param_1);
  }
  else {
    FUN_007a4561(in_EAX + 8,param_1);
  }
  return;
}



undefined FUN_007a4392(undefined4 param_1)

{
  undefined uVar1;
  char cVar2;
  int in_EAX;
  undefined local_18 [8];
  undefined4 local_10;
  undefined4 local_c;
  
  local_c = *(undefined4 *)(in_EAX + 0x20);
  local_10 = *(undefined4 *)(in_EAX + 8);
  if (*(char *)(in_EAX + 4) == '\0') {
    FUN_007a45c9(local_18,param_1);
    cVar2 = FUN_006b8eca();
    uVar1 = cVar2 == '\0';
  }
  else {
    FUN_007a45c9(local_18,param_1);
    uVar1 = FUN_006b8eca();
  }
  return uVar1;
}



int FUN_007a43e4(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int local_1c;
  int local_18;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  FUN_007a46b1(param_1,&local_1c,param_2);
  local_c = local_1c;
  iVar1 = 0;
  local_8 = local_18;
  while( true ) {
    if ((local_c == 0) || (local_c != local_14)) {
      FUN_00a3fb10();
    }
    if (local_8 == local_10) break;
    iVar1 = iVar1 + 1;
    FUN_00696a87();
  }
  FUN_007a2966(&local_c,local_1c,local_18,local_14,local_10);
  return iVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_007a444d(int *param_1)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  
  ppiVar2 = (int **)FUN_00418daa(1,0);
  if (ppiVar2 == (int **)0x0) {
    ppiVar2 = (int **)0x0;
  }
  else {
    *ppiVar2 = param_1;
  }
  *param_1 = (int)ppiVar2;
  iVar3 = FUN_0046e3b9();
  piVar1 = param_1 + 6;
  *piVar1 = iVar3;
  *(undefined *)(iVar3 + 0x29) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[7] = 0;
  return param_1;
}



void FUN_007a44a1(undefined4 param_1)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  int *unaff_EBX;
  undefined4 *puVar4;
  int *unaff_EDI;
  undefined4 uVar5;
  int local_18;
  undefined4 *local_14;
  undefined4 local_10;
  undefined4 *local_c;
  
  local_c = (undefined4 *)unaff_EBX[6];
  puVar4 = (undefined4 *)local_c[1];
  local_10 = CONCAT31(local_10._1_3_,1);
  while (*(char *)((int)puVar4 + 0x29) == '\0') {
    local_c = puVar4;
    cVar2 = FUN_00412a58(param_1,puVar4 + 3);
    local_10 = CONCAT31(local_10._1_3_,cVar2);
    if (cVar2 == '\0') {
      puVar4 = (undefined4 *)puVar4[2];
    }
    else {
      puVar4 = (undefined4 *)*puVar4;
    }
  }
  local_18 = *unaff_EBX;
  local_14 = local_c;
  if ((char)local_10 != '\0') {
    puVar4 = *(undefined4 **)unaff_EBX[6];
    if (local_18 == 0) {
      FUN_00a3fb10();
    }
    if (local_c == puVar4) {
      uVar5 = 1;
      goto LAB_007a450b;
    }
    FUN_007a4650();
  }
  puVar4 = local_14;
  cVar2 = FUN_00412a58(local_14 + 3,param_1);
  uVar5 = local_10;
  if (cVar2 == '\0') {
    *unaff_EDI = local_18;
    unaff_EDI[1] = (int)puVar4;
    *(undefined *)(unaff_EDI + 2) = 0;
    return;
  }
LAB_007a450b:
  piVar3 = (int *)FUN_007a411b(&local_18,uVar5,param_1);
  iVar1 = piVar3[1];
  *unaff_EDI = *piVar3;
  unaff_EDI[1] = iVar1;
  *(undefined *)(unaff_EDI + 2) = 1;
  return;
}



int FUN_007a4561(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int local_1c;
  int local_18;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  FUN_007a4b42(param_1,param_2);
  local_c = local_1c;
  iVar1 = 0;
  local_8 = local_18;
  while( true ) {
    if ((local_c == 0) || (local_c != local_14)) {
      FUN_00a3fb10();
    }
    if (local_8 == local_10) break;
    iVar1 = iVar1 + 1;
    FUN_0046e6b6();
  }
  FUN_007a2a05(&local_c,local_1c,local_18,local_14,local_10);
  return iVar1;
}



void FUN_007a45c9(int *param_1,undefined4 param_2)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int *unaff_EDI;
  int local_14;
  int local_10;
  int local_c;
  undefined4 *local_8;
  
  puVar4 = (undefined4 *)unaff_EDI[6];
  puVar5 = (undefined4 *)((undefined4 *)unaff_EDI[6])[1];
  while (*(char *)((int)puVar5 + 0x29) == '\0') {
    cVar2 = FUN_00412a58(puVar5 + 3,param_2);
    if (cVar2 == '\0') {
      puVar4 = puVar5;
      puVar5 = (undefined4 *)*puVar5;
    }
    else {
      puVar5 = (undefined4 *)puVar5[2];
    }
  }
  puVar5 = (undefined4 *)unaff_EDI[6];
  local_8 = puVar4;
  local_c = *unaff_EDI;
  if (*unaff_EDI == 0) {
    FUN_00a3fb10();
  }
  if ((puVar4 == puVar5) || (cVar2 = FUN_00412a58(param_2,puVar4 + 3), cVar2 != '\0')) {
    local_10 = unaff_EDI[6];
    local_14 = *unaff_EDI;
    piVar3 = &local_14;
  }
  else {
    piVar3 = &local_c;
  }
  iVar1 = piVar3[1];
  *param_1 = *piVar3;
  param_1[1] = iVar1;
  return;
}



void FUN_007a4650(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x29) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x29) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x29) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x29) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x29) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x29) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



void FUN_007a46b1(undefined4 *param_1,undefined4 *param_2,byte *param_3)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int iVar6;
  byte *pbVar7;
  undefined4 *puVar8;
  bool bVar9;
  bool bVar10;
  undefined4 *local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  cVar1 = *(char *)((int)(undefined4 *)local_8[1] + 0x1d);
  puVar8 = local_8;
  local_c = (undefined4 *)local_8[1];
  while (cVar1 == '\0') {
    iVar3 = 0x10;
    bVar9 = false;
    iVar6 = 0;
    bVar10 = true;
    puVar4 = local_c + 3;
    pbVar7 = param_3;
    do {
      if (iVar3 == 0) break;
      iVar3 = iVar3 + -1;
      bVar9 = *(byte *)puVar4 < *pbVar7;
      bVar10 = *(byte *)puVar4 == *pbVar7;
      puVar4 = (undefined4 *)((int)puVar4 + 1);
      pbVar7 = pbVar7 + 1;
    } while (bVar10);
    if (!bVar10) {
      iVar6 = (1 - (uint)bVar9) - (uint)(bVar9 != 0);
    }
    if (iVar6 < 0) {
      puVar4 = (undefined4 *)local_c[2];
      local_c = puVar8;
    }
    else {
      if (*(char *)((int)local_8 + 0x1d) != '\0') {
        iVar3 = 0x10;
        bVar9 = false;
        iVar6 = 0;
        bVar10 = true;
        pbVar7 = param_3;
        puVar8 = local_c + 3;
        do {
          if (iVar3 == 0) break;
          iVar3 = iVar3 + -1;
          bVar9 = *pbVar7 < *(byte *)puVar8;
          bVar10 = *pbVar7 == *(byte *)puVar8;
          pbVar7 = pbVar7 + 1;
          puVar8 = (undefined4 *)((int)puVar8 + 1);
        } while (bVar10);
        if (!bVar10) {
          iVar6 = (1 - (uint)bVar9) - (uint)(bVar9 != 0);
        }
        if (iVar6 < 0) {
          local_8 = local_c;
        }
      }
      puVar4 = (undefined4 *)*local_c;
    }
    puVar8 = local_c;
    local_c = puVar4;
    cVar1 = *(char *)((int)puVar4 + 0x1d);
  }
  if (*(char *)((int)local_8 + 0x1d) == '\0') {
    puVar4 = (undefined4 *)*local_8;
  }
  else {
    puVar4 = *(undefined4 **)(param_1[6] + 4);
  }
  cVar1 = *(char *)((int)puVar4 + 0x1d);
  do {
    if (cVar1 != '\0') {
      uVar2 = *param_1;
      param_2[3] = local_8;
      *param_2 = uVar2;
      param_2[1] = puVar8;
      param_2[2] = uVar2;
      return;
    }
    iVar3 = 0x10;
    bVar9 = false;
    iVar6 = 0;
    bVar10 = true;
    pbVar7 = param_3;
    puVar5 = puVar4 + 3;
    do {
      if (iVar3 == 0) break;
      iVar3 = iVar3 + -1;
      bVar9 = *pbVar7 < *(byte *)puVar5;
      bVar10 = *pbVar7 == *(byte *)puVar5;
      pbVar7 = pbVar7 + 1;
      puVar5 = (undefined4 *)((int)puVar5 + 1);
    } while (bVar10);
    if (!bVar10) {
      iVar6 = (1 - (uint)bVar9) - (uint)(bVar9 != 0);
    }
    if (iVar6 < 0) {
      puVar5 = (undefined4 *)*puVar4;
      local_8 = puVar4;
    }
    else {
      puVar5 = (undefined4 *)puVar4[2];
    }
    cVar1 = *(char *)((int)puVar5 + 0x1d);
    puVar4 = puVar5;
  } while( true );
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_007a4781(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined param_5)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x2c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    basic_string<>(param_4);
    *(undefined *)(puVar1 + 10) = param_5;
    *(undefined *)((int)puVar1 + 0x29) = 0;
  }
  return puVar1;
}



void Catch_All_007a47d9(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void FUN_007a47ec(void)

{
  int unaff_EBX;
  int unaff_EDI;
  
  FUN_007a4803(unaff_EBX + 8);
  *(undefined *)(unaff_EDI + 4) = *(undefined *)(unaff_EBX + 4);
  return;
}



void FUN_007a4803(undefined4 *param_1)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  if (unaff_ESI != param_1) {
    FUN_007a2a05(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,
                 (undefined4 *)unaff_ESI[6]);
    FUN_007a4839();
  }
  return;
}



void __fastcall FUN_007a4839(int param_1)

{
  int iVar1;
  int **ppiVar2;
  int *piVar3;
  int in_EAX;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  
  iVar1 = *(int *)(param_1 + 0x18);
  uVar4 = FUN_007a4895(*(undefined4 *)(*(int *)(in_EAX + 0x18) + 4),iVar1);
  *(undefined4 *)(iVar1 + 4) = uVar4;
  *(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(in_EAX + 0x1c);
  ppiVar2 = *(int ***)(param_1 + 0x18);
  piVar3 = ppiVar2[1];
  if (*(char *)((int)ppiVar2[1] + 0x29) == '\0') {
    do {
      piVar5 = piVar3;
      piVar3 = (int *)*piVar5;
    } while (*(char *)((int)piVar3 + 0x29) == '\0');
    *ppiVar2 = piVar5;
    iVar1 = *(int *)(*(int *)(param_1 + 0x18) + 4);
    do {
      iVar6 = iVar1;
      iVar1 = *(int *)(iVar6 + 8);
    } while (*(char *)(iVar1 + 0x29) == '\0');
    *(int *)(*(int *)(param_1 + 0x18) + 8) = iVar6;
  }
  else {
    *ppiVar2 = (int *)ppiVar2;
    *(int *)(*(int *)(param_1 + 0x18) + 8) = *(int *)(param_1 + 0x18);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a4895(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *local_18;
  
  local_18 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)param_1 + 0x29) == '\0') {
    puVar1 = (undefined4 *)
             FUN_007a4781(local_18,param_2,local_18,param_1 + 3,*(undefined *)(param_1 + 10));
    if (*(char *)((int)local_18 + 0x29) != '\0') {
      local_18 = puVar1;
    }
    uVar2 = FUN_007a4895(*param_1,puVar1);
    *puVar1 = uVar2;
    uVar2 = FUN_007a4895(param_1[2],puVar1);
    puVar1[2] = uVar2;
  }
  return local_18;
}



void Catch_All_007a48ff(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_007a3012(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007a4914(void)

{
  FUN_007a4312();
  return;
}



void FUN_007a491c(void)

{
  return;
}



void FUN_007a491d(undefined4 param_1)

{
  int in_EAX;
  
  if (*(char *)(in_EAX + 4) == '\0') {
    FUN_007a4051(in_EAX + 8,param_1);
  }
  else {
    FUN_007a49a3(in_EAX + 8,param_1);
  }
  return;
}



undefined FUN_007a494f(undefined4 param_1)

{
  undefined uVar1;
  char cVar2;
  int in_EAX;
  undefined local_18 [8];
  undefined4 local_10;
  undefined4 local_c;
  
  local_c = *(undefined4 *)(in_EAX + 0x20);
  local_10 = *(undefined4 *)(in_EAX + 8);
  if (*(char *)(in_EAX + 4) == '\0') {
    FUN_007a4a12(local_18,param_1);
    cVar2 = FUN_006b8eca();
    uVar1 = cVar2 == '\0';
  }
  else {
    FUN_007a4a12(local_18,param_1);
    uVar1 = FUN_006b8eca();
  }
  return uVar1;
}



int FUN_007a49a3(undefined4 param_1,int param_2)

{
  char cVar1;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined local_14 [16];
  
  FUN_007a4b42(param_1,param_2);
  param_2 = 0;
  while( true ) {
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') break;
    param_2 = param_2 + 1;
    FUN_0046e6b6();
  }
  FUN_007a28cb(local_14,local_24,local_20,local_1c,local_18);
  return param_2;
}



void FUN_007a4a12(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 *puVar4;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 *local_c;
  undefined4 *local_8;
  
  puVar3 = (undefined4 *)((undefined4 *)unaff_EBX[6])[1];
  local_8 = (undefined4 *)unaff_EBX[6];
  while (puVar4 = puVar3, *(char *)((int)puVar4 + 0x29) == '\0') {
    cVar2 = FUN_00412a58(puVar4 + 3,param_2);
    if (cVar2 == '\0') {
      puVar3 = (undefined4 *)*puVar4;
      local_8 = puVar4;
    }
    else {
      puVar3 = (undefined4 *)puVar4[2];
    }
  }
  local_14 = unaff_EBX[6];
  local_c = local_8;
  local_18 = *unaff_EBX;
  puVar3 = &local_10;
  local_10 = local_18;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (cVar2 = FUN_00412a58(param_2,local_8 + 3), cVar2 != '\0')) {
    local_14 = unaff_EBX[6];
    local_18 = *unaff_EBX;
    puVar3 = &local_18;
  }
  uVar1 = puVar3[1];
  *param_1 = *puVar3;
  param_1[1] = uVar1;
  return;
}



void FUN_007a4aa4(int *param_1,byte *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int *unaff_EBX;
  byte *pbVar6;
  undefined4 *puVar7;
  bool bVar8;
  bool bVar9;
  int local_14;
  int local_10;
  int local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)((undefined4 *)unaff_EBX[6])[1];
  cVar1 = *(char *)((int)local_8 + 0x1d);
  puVar7 = (undefined4 *)unaff_EBX[6];
  while (cVar1 == '\0') {
    iVar3 = 0x10;
    bVar8 = false;
    iVar5 = 0;
    bVar9 = true;
    puVar2 = local_8 + 3;
    pbVar6 = param_2;
    do {
      if (iVar3 == 0) break;
      iVar3 = iVar3 + -1;
      bVar8 = *(byte *)puVar2 < *pbVar6;
      bVar9 = *(byte *)puVar2 == *pbVar6;
      puVar2 = (undefined4 *)((int)puVar2 + 1);
      pbVar6 = pbVar6 + 1;
    } while (bVar9);
    if (!bVar9) {
      iVar5 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
    }
    if (iVar5 < 0) {
      puVar2 = (undefined4 *)local_8[2];
      local_8 = puVar7;
    }
    else {
      puVar2 = (undefined4 *)*local_8;
    }
    puVar7 = local_8;
    local_8 = puVar2;
    cVar1 = *(char *)((int)puVar2 + 0x1d);
  }
  puVar2 = (undefined4 *)unaff_EBX[6];
  local_8 = puVar7;
  local_c = *unaff_EBX;
  if (*unaff_EBX == 0) {
    FUN_00a3fb10();
  }
  if (puVar7 != puVar2) {
    iVar3 = 0x10;
    bVar8 = false;
    iVar5 = 0;
    bVar9 = true;
    puVar7 = puVar7 + 3;
    do {
      if (iVar3 == 0) break;
      iVar3 = iVar3 + -1;
      bVar8 = *param_2 < *(byte *)puVar7;
      bVar9 = *param_2 == *(byte *)puVar7;
      param_2 = param_2 + 1;
      puVar7 = (undefined4 *)((int)puVar7 + 1);
    } while (bVar9);
    if (!bVar9) {
      iVar5 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
    }
    if (-1 < iVar5) {
      piVar4 = &local_c;
      goto LAB_007a4b2f;
    }
  }
  local_10 = unaff_EBX[6];
  local_14 = *unaff_EBX;
  piVar4 = &local_14;
LAB_007a4b2f:
  iVar3 = piVar4[1];
  *param_1 = *piVar4;
  param_1[1] = iVar3;
  return;
}



void FUN_007a4b42(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 *unaff_EDI;
  undefined4 *local_8;
  
  puVar3 = (undefined4 *)param_1[6];
  puVar5 = (undefined4 *)puVar3[1];
  local_8 = puVar3;
  while (puVar4 = puVar5, *(char *)((int)puVar4 + 0x29) == '\0') {
    cVar2 = FUN_00412a58(puVar4 + 3,param_2);
    if (cVar2 == '\0') {
      if (*(char *)((int)puVar3 + 0x29) != '\0') {
        cVar2 = FUN_00412a58(param_2,puVar4 + 3);
        if (cVar2 != '\0') {
          puVar3 = puVar4;
        }
      }
      puVar5 = (undefined4 *)*puVar4;
      local_8 = puVar4;
    }
    else {
      puVar5 = (undefined4 *)puVar4[2];
    }
  }
  if (*(char *)((int)puVar3 + 0x29) == '\0') {
    puVar5 = (undefined4 *)*puVar3;
  }
  else {
    puVar5 = *(undefined4 **)(param_1[6] + 4);
  }
  while (*(char *)((int)puVar5 + 0x29) == '\0') {
    cVar2 = FUN_00412a58(param_2,puVar5 + 3);
    if (cVar2 == '\0') {
      puVar5 = (undefined4 *)puVar5[2];
    }
    else {
      puVar3 = puVar5;
      puVar5 = (undefined4 *)*puVar5;
    }
  }
  uVar1 = *param_1;
  *unaff_EDI = uVar1;
  unaff_EDI[2] = uVar1;
  unaff_EDI[3] = puVar3;
  unaff_EDI[1] = local_8;
  return;
}



void __fastcall FUN_007a4c86(undefined4 *param_1)

{
  *param_1 = W133E5AC5::WAD250D48::vftable;
  return;
}



undefined4 * __thiscall FUN_007a4c8d(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W133E5AC5::WAD250D48::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007a4caa(undefined4 param_1_00,byte param_1)

{
  FUN_00ba3775();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_007a4d0c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a4d23(int param_1_00,undefined4 *param_1)

{
  FUN_007a4d62(param_1);
  *param_1 = W133E5AC5::W1582FF22::vftable;
  param_1[1] = W133E5AC5::W1582FF22::vftable;
  FUN_007a4dca(param_1 + 0x18,param_1_00 + 0x60);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007a4d62(undefined4 *param_1)

{
  int unaff_EDI;
  
  param_1[1] = W133E5AC5::W53828619::vftable;
  *param_1 = W133E5AC5::WF3CA7D53::vftable;
  param_1[1] = W133E5AC5::WF3CA7D53::vftable;
  FUN_00462566();
  FUN_007a4e86(param_1 + 10);
  param_1[0x14] = *(undefined4 *)(unaff_EDI + 0x50);
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EDI + 0x54);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a4dca(undefined4 *param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  *param_1 = WB009B997::WDD43FDDC<struct_W133E5AC5::W94719940>::vftable;
  FUN_007a444d(param_1 + 2);
  FUN_007a3b48(param_2 + 8);
  *(undefined *)(param_1 + 1) = *(undefined *)(param_2 + 4);
  FUN_007a4e86(param_1 + 10);
  FUN_007a432e(param_1 + 0x14);
  FUN_0041b126(param_2 + 0x78);
  param_1[0x20] = 0;
  uVar1 = *(uint *)(param_2 + 0x80);
  if (uVar1 != 0) {
    param_1[0x20] = uVar1;
    if ((uVar1 & 1) == 0) {
      (**(code **)(uVar1 & 0xfffffffe))((undefined4 *)(param_2 + 0x88),param_1 + 0x22,0);
    }
    else {
      puVar3 = (undefined4 *)(param_2 + 0x88);
      puVar4 = param_1 + 0x22;
      for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar4 = *puVar3;
        puVar3 = puVar3 + 1;
        puVar4 = puVar4 + 1;
      }
    }
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void thunk_FUN_007a2645(int param_1)

{
  FUN_007a25ef(param_1 + 0x60);
  FUN_00b6a68c();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a4e86(undefined4 *param_1)

{
  *param_1 = WB009B997::WDD43FDDC<struct_boost::uuids::uuid>::vftable;
  FUN_006ba565(param_1 + 2);
  FUN_007a4eb7();
  return param_1;
}



void FUN_007a4eb7(void)

{
  int unaff_EBX;
  int unaff_EDI;
  
  FUN_007a5096(unaff_EBX + 8);
  *(undefined *)(unaff_EDI + 4) = *(undefined *)(unaff_EBX + 4);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a4ece(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *unaff_EDI;
  undefined auStack_358 [248];
  undefined4 uStack_260;
  undefined *puStack_25c;
  undefined4 uStack_258;
  undefined4 *puStack_254;
  undefined local_240 [256];
  undefined local_140 [256];
  char local_40 [8];
  undefined4 *local_38;
  undefined local_28 [12];
  undefined *local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x230;
  local_18 = 0;
  local_8 = 1;
  puStack_254 = (undefined4 *)&stack0x00000110;
  uStack_258 = 0x7a4f03;
  FUN_0041b126();
  puStack_254 = (undefined4 *)local_240;
  local_8._0_1_ = 3;
  uStack_258 = 0x7a4f16;
  FUN_007a4d23();
  local_38 = &uStack_258;
  puStack_25c = local_28;
  uStack_260 = 0x7a4f26;
  FUN_0041b126();
  local_1c = auStack_358;
  local_8._0_1_ = 6;
  FUN_007a4d23(auStack_358);
  local_8._0_1_ = 5;
  FUN_007a5128(param_1);
  puStack_254 = (undefined4 *)local_240;
  local_8._0_1_ = 4;
  uStack_258 = 0x7a4f63;
  FUN_007a2645();
  local_8._0_1_ = 7;
  puStack_254 = unaff_EDI + 2;
  *unaff_EDI = param_2;
  unaff_EDI[1] = param_3;
  uStack_258 = 0x7a4f7e;
  FUN_007a4d23();
  puStack_254 = (undefined4 *)local_40;
  uStack_258 = 0x7a4f8d;
  FUN_0041b126();
  local_8._0_1_ = 2;
  local_18 = 1;
  if (local_40[0] != '\0') {
    local_40[0] = '\0';
  }
  puStack_254 = (undefined4 *)local_140;
  uStack_258 = 0x7a4fae;
  FUN_007a2645();
  puStack_254 = (undefined4 *)&stack0x00000010;
  local_8 = CONCAT31(local_8._1_3_,1);
  uStack_258 = 0x7a4fbb;
  FUN_007a2645();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a4fc3(void)

{
  undefined auStack_264 [264];
  undefined4 uStack_15c;
  undefined *puStack_158;
  undefined local_34 [32];
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x134;
  local_8 = 0;
  puStack_158 = (undefined *)0x7a4fe4;
  FUN_007a5063();
  local_14 = auStack_264;
  local_8._0_1_ = 1;
  FUN_007a5063();
  FUN_007a523b();
  local_8._0_1_ = 0;
  puStack_158 = (undefined *)0x7a5011;
  FUN_007a54e9();
  local_8._0_1_ = 2;
  uStack_15c = 0x7a501f;
  puStack_158 = local_34;
  FUN_005fc8d4();
  local_8 = (uint)local_8._1_3_ << 8;
  puStack_158 = (undefined *)0x7a502a;
  FUN_00507e58();
  local_8 = 0xffffffff;
  puStack_158 = (undefined *)0x7a5036;
  FUN_007a54e9();
  return;
}



undefined4 __fastcall FUN_007a5040(char *param_1)

{
  char *in_EAX;
  
  if ((*in_EAX != '\0') &&
     (((-(uint)(*param_1 != '\0') & 0x6a1cd8) == 0 ||
      (*(int *)(in_EAX + 4) != *(int *)(param_1 + 4))))) {
    return 0;
  }
  return 1;
}



void FUN_007a5063(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *in_EAX;
  unaff_ESI[1] = in_EAX[1];
  FUN_007a4d23(unaff_ESI + 2);
  FUN_0041b126(in_EAX + 0x42);
  return;
}



void FUN_007a5096(undefined4 *param_1)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  if (unaff_ESI != param_1) {
    FUN_007a2966(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,
                 (undefined4 *)unaff_ESI[6]);
    FUN_007a50cc();
  }
  return;
}



void __fastcall FUN_007a50cc(int param_1)

{
  int iVar1;
  int **ppiVar2;
  int *piVar3;
  int in_EAX;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  
  iVar1 = *(int *)(param_1 + 0x18);
  uVar4 = FUN_007a51bc(*(undefined4 *)(*(int *)(in_EAX + 0x18) + 4),iVar1);
  *(undefined4 *)(iVar1 + 4) = uVar4;
  *(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(in_EAX + 0x1c);
  ppiVar2 = *(int ***)(param_1 + 0x18);
  piVar3 = ppiVar2[1];
  if (*(char *)((int)ppiVar2[1] + 0x1d) == '\0') {
    do {
      piVar5 = piVar3;
      piVar3 = (int *)*piVar5;
    } while (*(char *)((int)piVar3 + 0x1d) == '\0');
    *ppiVar2 = piVar5;
    iVar1 = *(int *)(*(int *)(param_1 + 0x18) + 4);
    do {
      iVar6 = iVar1;
      iVar1 = *(int *)(iVar6 + 8);
    } while (*(char *)(iVar1 + 0x1d) == '\0');
    *(int *)(*(int *)(param_1 + 0x18) + 8) = iVar6;
  }
  else {
    *ppiVar2 = (int *)ppiVar2;
    *(int *)(*(int *)(param_1 + 0x18) + 8) = *(int *)(param_1 + 0x18);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a5128(void)

{
  undefined4 unaff_ESI;
  undefined local_218 [256];
  undefined local_118 [272];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x208;
  local_8 = 1;
  FUN_007a4d23(local_218);
  local_8._0_1_ = 2;
  FUN_007a4d23(local_118);
  local_8._0_1_ = 3;
  FUN_007a4d23(unaff_ESI);
  local_8._0_1_ = 2;
  FUN_007a2645(local_118);
  local_8._0_1_ = 1;
  FUN_007a2645(local_218);
  FUN_0041b126(&stack0x00000108);
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_007a2645(&stack0x00000008);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a51bc(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *local_18;
  
  local_18 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)param_1 + 0x1d) == '\0') {
    puVar1 = (undefined4 *)
             FUN_007a354f(local_18,param_2,local_18,param_1 + 3,*(undefined *)(param_1 + 7));
    if (*(char *)((int)local_18 + 0x1d) != '\0') {
      local_18 = puVar1;
    }
    uVar2 = FUN_007a51bc(*param_1,puVar1);
    *puVar1 = uVar2;
    uVar2 = FUN_007a51bc(param_1[2],puVar1);
    puVar1[2] = uVar2;
  }
  return local_18;
}



void Catch_All_007a5226(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_007a3090(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a523b(void)

{
  char cVar1;
  uint *unaff_EDI;
  undefined auStack_244 [268];
  undefined4 uStack_138;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x114;
  local_8 = 0;
  *unaff_EDI = 0;
  uStack_138 = 0x7a525f;
  FUN_007a5063();
  local_14 = auStack_244;
  local_8._0_1_ = 1;
  FUN_007a5063();
  cVar1 = FUN_007a53c9(unaff_EDI + 2);
  *unaff_EDI = -(uint)(cVar1 != '\0') & 0x30582ac;
  local_8 = (uint)local_8._1_3_ << 8;
  uStack_138 = 0x7a529b;
  FUN_007a54e9();
  local_8 = 0xffffffff;
  uStack_138 = 0x7a52a7;
  FUN_007a54e9();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007a5333(TypeDescriptor **param_1_00,int param_1)

{
  bool bVar1;
  void *pvVar2;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_EDI;
  
  if (param_1 == 0) {
    pvVar2 = operator_new(0x110);
    if (pvVar2 == (void *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3 = (TypeDescriptor *)FUN_007a5063();
    }
LAB_007a536f:
    *unaff_EDI = pTVar3;
  }
  else {
    if (param_1 == 1) {
      *unaff_EDI = *param_1_00;
      *param_1_00 = (TypeDescriptor *)0x0;
      return;
    }
    if (param_1 == 2) {
      pTVar3 = *unaff_EDI;
      if (pTVar3 != (TypeDescriptor *)0x0) {
        FUN_007a54e9();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar3);
      }
    }
    else {
      if (param_1 != 3) {
        *unaff_EDI = &boost::_bi::
                      bind_t<bool,class_boost::_mfi::mf2<bool,class_W133E5AC5::W1582FF22,class_W133E5AC5::W7AC0216B_const&,class_boost::optional<unsigned_int>_>,class_boost::_bi::list3<class_boost::_bi::value<class_W133E5AC5::W1582FF22>,struct_boost::arg<1>,class_boost::_bi::value<class_boost::optional<unsigned_int>_>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_EDI + 1) = 0;
        *(undefined *)((int)unaff_EDI + 5) = 0;
        return;
      }
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_EDI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf2<bool,class_W133E5AC5::W1582FF22,class_W133E5AC5::W7AC0216B_const&,class_boost::optional<unsigned_int>_>,class_boost::_bi::list3<class_boost::_bi::value<class_W133E5AC5::W1582FF22>,struct_boost::arg<1>,class_boost::_bi::value<class_boost::optional<unsigned_int>_>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar1) {
        pTVar3 = *param_1_00;
        goto LAB_007a536f;
      }
    }
    *unaff_EDI = (TypeDescriptor *)0x0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_007a53c9(void)

{
  char cVar1;
  undefined auStack_250 [264];
  undefined4 uStack_148;
  undefined *puStack_144;
  undefined local_130 [276];
  undefined *local_1c;
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x120;
  local_8 = 0;
  puStack_144 = (undefined *)0x7a53eb;
  FUN_007a5063();
  local_8._0_1_ = 1;
  uStack_148 = 0x7a53f7;
  puStack_144 = local_130;
  cVar1 = FUN_007f2630();
  if (cVar1 != '\0') {
    local_8 = (uint)local_8._1_3_ << 8;
    puStack_144 = (undefined *)0x7a543f;
    FUN_007a54e9();
  }
  else {
    local_1c = auStack_250;
    local_18 = local_18 & 0xffffff00;
    FUN_007a5063();
    FUN_007a5455(local_18);
    local_8 = (uint)local_8._1_3_ << 8;
    puStack_144 = (undefined *)0x7a542d;
    FUN_007a54e9();
  }
  local_8 = 0xffffffff;
  puStack_144 = (undefined *)0x7a544b;
  FUN_007a54e9();
  return cVar1 == '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a5455(void)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined4 *unaff_EDI;
  
  pvVar1 = operator_new(0x110);
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_007a5063();
  }
  *unaff_EDI = uVar2;
  FUN_007a54e9();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a549f(int param_1_00,undefined4 *param_1)

{
  FUN_007a4d62(param_1);
  *param_1 = W133E5AC5::WB80AF87F::vftable;
  param_1[1] = W133E5AC5::WB80AF87F::vftable;
  FUN_007a4dca(param_1 + 0x18,param_1_00 + 0x60);
  return param_1;
}



void __fastcall FUN_007a54de(undefined4 param_1)

{
  FUN_007a54e9(param_1);
  return;
}



void __fastcall FUN_007a54e9(int param_1)

{
  if (*(char *)(param_1 + 0x100) != '\0') {
    *(char *)(param_1 + 0x100) = '\0';
  }
  FUN_007a2645(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a5500(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *unaff_EDI;
  undefined auStack_358 [248];
  undefined4 uStack_260;
  undefined *puStack_25c;
  undefined4 uStack_258;
  undefined4 *puStack_254;
  undefined local_240 [256];
  undefined local_140 [256];
  char local_40 [8];
  undefined4 *local_38;
  undefined local_28 [12];
  undefined *local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x230;
  local_18 = 0;
  local_8 = 1;
  puStack_254 = (undefined4 *)&stack0x00000110;
  uStack_258 = 0x7a5535;
  FUN_0041b126();
  puStack_254 = (undefined4 *)local_240;
  local_8._0_1_ = 3;
  uStack_258 = 0x7a5548;
  FUN_007a549f();
  local_38 = &uStack_258;
  puStack_25c = local_28;
  uStack_260 = 0x7a5558;
  FUN_0041b126();
  local_1c = auStack_358;
  local_8._0_1_ = 6;
  FUN_007a549f(auStack_358);
  local_8._0_1_ = 5;
  FUN_007a56a5(param_1);
  puStack_254 = (undefined4 *)local_240;
  local_8._0_1_ = 4;
  uStack_258 = 0x7a5595;
  FUN_007a2645();
  local_8._0_1_ = 7;
  puStack_254 = unaff_EDI + 2;
  *unaff_EDI = param_2;
  unaff_EDI[1] = param_3;
  uStack_258 = 0x7a55b0;
  FUN_007a549f();
  puStack_254 = (undefined4 *)local_40;
  uStack_258 = 0x7a55bf;
  FUN_0041b126();
  local_8._0_1_ = 2;
  local_18 = 1;
  if (local_40[0] != '\0') {
    local_40[0] = '\0';
  }
  puStack_254 = (undefined4 *)local_140;
  uStack_258 = 0x7a55e0;
  FUN_007a2645();
  puStack_254 = (undefined4 *)&stack0x00000010;
  local_8 = CONCAT31(local_8._1_3_,1);
  uStack_258 = 0x7a55ed;
  FUN_007a2645();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a55f5(void)

{
  undefined auStack_264 [264];
  undefined4 uStack_15c;
  undefined *puStack_158;
  undefined local_34 [32];
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x134;
  local_8 = 0;
  puStack_158 = (undefined *)0x7a5616;
  FUN_007a5672();
  local_14 = auStack_264;
  local_8._0_1_ = 1;
  FUN_007a5672();
  FUN_007a5739();
  local_8._0_1_ = 0;
  puStack_158 = (undefined *)0x7a5643;
  FUN_007a54e9();
  local_8._0_1_ = 2;
  uStack_15c = 0x7a5651;
  puStack_158 = local_34;
  FUN_005fc8d4();
  local_8 = (uint)local_8._1_3_ << 8;
  puStack_158 = (undefined *)0x7a565c;
  FUN_00507e58();
  local_8 = 0xffffffff;
  puStack_158 = (undefined *)0x7a5668;
  FUN_007a54e9();
  return;
}



void FUN_007a5672(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *in_EAX;
  unaff_ESI[1] = in_EAX[1];
  FUN_007a549f(unaff_ESI + 2);
  FUN_0041b126(in_EAX + 0x42);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a56a5(void)

{
  undefined4 unaff_ESI;
  undefined local_218 [256];
  undefined local_118 [272];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x208;
  local_8 = 1;
  FUN_007a549f(local_218);
  local_8._0_1_ = 2;
  FUN_007a549f(local_118);
  local_8._0_1_ = 3;
  FUN_007a549f(unaff_ESI);
  local_8._0_1_ = 2;
  FUN_007a2645(local_118);
  local_8._0_1_ = 1;
  FUN_007a2645(local_218);
  FUN_0041b126(&stack0x00000108);
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_007a2645(&stack0x00000008);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a5739(void)

{
  char cVar1;
  uint *unaff_EDI;
  undefined auStack_244 [268];
  undefined4 uStack_138;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x114;
  local_8 = 0;
  *unaff_EDI = 0;
  uStack_138 = 0x7a575d;
  FUN_007a5672();
  local_14 = auStack_244;
  local_8._0_1_ = 1;
  FUN_007a5672();
  cVar1 = FUN_007a5880(unaff_EDI + 2);
  *unaff_EDI = -(uint)(cVar1 != '\0') & 0x30582b4;
  local_8 = (uint)local_8._1_3_ << 8;
  uStack_138 = 0x7a5799;
  FUN_007a54e9();
  local_8 = 0xffffffff;
  uStack_138 = 0x7a57a5;
  FUN_007a54e9();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007a57ea(TypeDescriptor **param_1_00,int param_1)

{
  bool bVar1;
  void *pvVar2;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_EDI;
  
  if (param_1 == 0) {
    pvVar2 = operator_new(0x110);
    if (pvVar2 == (void *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3 = (TypeDescriptor *)FUN_007a5672();
    }
LAB_007a5826:
    *unaff_EDI = pTVar3;
  }
  else {
    if (param_1 == 1) {
      *unaff_EDI = *param_1_00;
      *param_1_00 = (TypeDescriptor *)0x0;
      return;
    }
    if (param_1 == 2) {
      pTVar3 = *unaff_EDI;
      if (pTVar3 != (TypeDescriptor *)0x0) {
        FUN_007a54e9();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pTVar3);
      }
    }
    else {
      if (param_1 != 3) {
        *unaff_EDI = &boost::_bi::
                      bind_t<bool,class_boost::_mfi::mf2<bool,class_W133E5AC5::WB80AF87F,class_W133E5AC5::W7AC0216B_const&,class_boost::optional<unsigned_int>_>,class_boost::_bi::list3<class_boost::_bi::value<class_W133E5AC5::WB80AF87F>,struct_boost::arg<1>,class_boost::_bi::value<class_boost::optional<unsigned_int>_>_>_>
                      ::RTTI_Type_Descriptor;
        *(undefined *)(unaff_EDI + 1) = 0;
        *(undefined *)((int)unaff_EDI + 5) = 0;
        return;
      }
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_EDI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf2<bool,class_W133E5AC5::WB80AF87F,class_W133E5AC5::W7AC0216B_const&,class_boost::optional<unsigned_int>_>,class_boost::_bi::list3<class_boost::_bi::value<class_W133E5AC5::WB80AF87F>,struct_boost::arg<1>,class_boost::_bi::value<class_boost::optional<unsigned_int>_>_>_>
                          ::RTTI_Type_Descriptor);
      if (bVar1) {
        pTVar3 = *param_1_00;
        goto LAB_007a5826;
      }
    }
    *unaff_EDI = (TypeDescriptor *)0x0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_007a5880(void)

{
  char cVar1;
  undefined auStack_250 [264];
  undefined4 uStack_148;
  undefined *puStack_144;
  undefined local_130 [276];
  undefined *local_1c;
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x120;
  local_8 = 0;
  puStack_144 = (undefined *)0x7a58a2;
  FUN_007a5672();
  local_8._0_1_ = 1;
  uStack_148 = 0x7a58ae;
  puStack_144 = local_130;
  cVar1 = FUN_007f2630();
  if (cVar1 != '\0') {
    local_8 = (uint)local_8._1_3_ << 8;
    puStack_144 = (undefined *)0x7a58f6;
    FUN_007a54e9();
  }
  else {
    local_1c = auStack_250;
    local_18 = local_18 & 0xffffff00;
    FUN_007a5672();
    FUN_007a590c(local_18);
    local_8 = (uint)local_8._1_3_ << 8;
    puStack_144 = (undefined *)0x7a58e4;
    FUN_007a54e9();
  }
  local_8 = 0xffffffff;
  puStack_144 = (undefined *)0x7a5902;
  FUN_007a54e9();
  return cVar1 == '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a590c(void)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined4 *unaff_EDI;
  
  pvVar1 = operator_new(0x110);
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_007a5672();
  }
  *unaff_EDI = uVar2;
  FUN_007a54e9();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a5956(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x54);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00b690c6(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_007a5c74(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a59c7(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x238);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007a3238(puVar2);
    *puVar2 = W133E5AC5::WBAB77828::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007a5cd1(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void __thiscall FUN_007a5a41(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x10))(param_1_00);
  return;
}



undefined4 __thiscall FUN_007a5a50(undefined4 param_1_00,byte param_1)

{
  FUN_007a3264(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a5a6d(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W133E5AC5::W099812E9::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007a5d2e(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a5ad4(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x238);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007a3238(puVar2);
    *puVar2 = W133E5AC5::W47E1476F::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007a5d8b(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a5b4e(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x238);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_007a3238(puVar2);
    *puVar2 = W133E5AC5::WC85014A2::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007a5de8(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 __thiscall FUN_007a5bc8(undefined4 param_1_00,byte param_1)

{
  FUN_00bbf686();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007a5be4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_14 = param_1;
  uStack_10 = param_2;
  uStack_c = param_3;
  uStack_8 = param_4;
  cVar1 = FUN_007f2630(&local_14);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_14;
      unaff_EBX[3] = uStack_10;
      unaff_EBX[4] = uStack_c;
      unaff_EBX[5] = uStack_8;
    }
    *unaff_EBX = &DAT_030582bd;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



void FUN_007a5c2c(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_14 = param_1;
  uStack_10 = param_2;
  uStack_c = param_3;
  uStack_8 = param_4;
  cVar1 = FUN_007f2630(&local_14);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_14;
      unaff_EBX[3] = uStack_10;
      unaff_EBX[4] = uStack_c;
      unaff_EBX[5] = uStack_8;
    }
    *unaff_EBX = &DAT_030582c5;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a5c74(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W133E5AC5::W483C1BDF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a5cba(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a5cd1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W133E5AC5::WBAB77828>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a5d17(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a5d2e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W133E5AC5::W099812E9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a5d74(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a5d8b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W133E5AC5::W47E1476F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a5dd1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a5de8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W133E5AC5::WC85014A2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a5e2e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007a5e45(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007a5eb7(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W133E5AC5::WE8F48EFA,class_W133E5AC5::W76B051B4&>,class_boost::_bi::list2<class_boost::_bi::value<class_W133E5AC5::WE8F48EFA*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007a5e7e(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007a5f04(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W133E5AC5::WE8F48EFA>,class_boost::_bi::list1<class_boost::_bi::value<class_W133E5AC5::WE8F48EFA*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_007a5eb7(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W133E5AC5::WE8F48EFA,class_W133E5AC5::W76B051B4&>,class_boost::_bi::list2<class_boost::_bi::value<class_W133E5AC5::WE8F48EFA*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W133E5AC5::WE8F48EFA,class_W133E5AC5::W76B051B4&>,class_boost::_bi::list2<class_boost::_bi::value<class_W133E5AC5::WE8F48EFA*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void __fastcall FUN_007a5f04(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W133E5AC5::WE8F48EFA>,class_boost::_bi::list1<class_boost::_bi::value<class_W133E5AC5::WE8F48EFA*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W133E5AC5::WE8F48EFA>,class_boost::_bi::list1<class_boost::_bi::value<class_W133E5AC5::WE8F48EFA*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void __fastcall FUN_007a5fc2(undefined4 *param_1)

{
  *param_1 = W133E5AC5::WC5F310A0::vftable;
  return;
}



undefined4 * __thiscall FUN_007a5fc9(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W133E5AC5::WC5F310A0::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007a5fe6(undefined4 param_1_00,byte param_1)

{
  FUN_00b69d0a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007a6002(void)

{
  FUN_0042bd98();
  FUN_00417fe6();
  return;
}



void FUN_007a6013(void)

{
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_00478f3c(&local_14,local_14,local_10,local_c,local_8);
  return;
}



void Catch_All_007a6096(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_007a60f3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_007a610a(undefined4 *param_1)

{
  *param_1 = W133E5AC5::W4ED17640::vftable;
  return;
}



undefined4 * __thiscall FUN_007a6111(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W133E5AC5::W4ED17640::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_007a6242(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7a625a;
  FUN_007a6749();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007a6261;
  FUN_00a3f6a1();
}



int FUN_007a616e(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 local_48;
  int local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined local_38 [28];
  undefined4 local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2952c;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_14;
  FUN_007a66c8(param_2);
  local_3c = param_1[6];
  local_40 = *param_1;
  cVar1 = FUN_006b8eca(uVar2);
  if (cVar1 == '\0') {
    cVar1 = FUN_00412a58(param_2,local_44 + 0xc);
    if (cVar1 == '\0') goto LAB_007a6221;
  }
  basic_string<>(param_2);
  local_1c = 0;
  local_c = 0;
  FUN_007a6527(&local_40,local_38,local_48,local_44);
  FUN_00401829(1,0);
LAB_007a6221:
  iVar3 = FUN_006badde();
  ExceptionList = local_14;
  return iVar3 + 0x1c;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007a6242(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7a625a;
  FUN_007a6749();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007a6261;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007a6355)
// WARNING: Removing unreachable block (ram,0x007a6365)
// WARNING: Removing unreachable block (ram,0x007a636e)
// WARNING: Removing unreachable block (ram,0x007a6371)
// WARNING: Removing unreachable block (ram,0x007a6361)
// WARNING: Removing unreachable block (ram,0x007a637e)
// WARNING: Removing unreachable block (ram,0x007a638e)
// WARNING: Removing unreachable block (ram,0x007a6399)
// WARNING: Removing unreachable block (ram,0x007a6395)
// WARNING: Removing unreachable block (ram,0x007a6389)
// WARNING: Removing unreachable block (ram,0x007a639c)

void FUN_007a626a(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7a6276;
  if (*(char *)((int)param_4 + 0x2d) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00743d11();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
    if (*(char *)(param_4[2] + 0x2d) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x2d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x2d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0xb) != '\x01') {
LAB_007a64cd:
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_007a6481:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xb) != '\x01'))
  goto LAB_007a64c9;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0xb) == '\0') {
      *(undefined *)(ppiVar4 + 0xb) = 1;
      *(undefined *)(ppiVar3 + 0xb) = 0;
      FUN_007fb425(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x2d) == '\0') {
      if ((*(char *)(*ppiVar4 + 0xb) != '\x01') || (*(char *)(ppiVar4[2] + 0xb) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0xb) == '\x01') {
          *(undefined *)(*ppiVar4 + 0xb) = 1;
          *(undefined *)(ppiVar4 + 0xb) = 0;
          FUN_004fc926(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0xb) = *(undefined *)(ppiVar3 + 0xb);
        *(undefined *)(ppiVar3 + 0xb) = 1;
        *(undefined *)(ppiVar4[2] + 0xb) = 1;
        FUN_007fb425(param_1);
        goto LAB_007a64c9;
      }
LAB_007a6478:
      *(undefined *)(ppiVar4 + 0xb) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0xb) == '\0') {
      *(undefined *)(ppiVar4 + 0xb) = 1;
      *(undefined *)(ppiVar3 + 0xb) = 0;
      FUN_004fc926(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x2d) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0xb) == '\x01') && (*(char *)(*ppiVar4 + 0xb) == '\x01'))
      goto LAB_007a6478;
      if (*(char *)(*ppiVar4 + 0xb) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0xb) = 1;
        *(undefined *)(ppiVar4 + 0xb) = 0;
        FUN_007fb425(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0xb) = *(undefined *)(ppiVar3 + 0xb);
      *(undefined *)(ppiVar3 + 0xb) = 1;
      *(undefined *)(*ppiVar4 + 0xb) = 1;
      FUN_004fc926(param_1);
LAB_007a64c9:
      *(undefined *)(ppiVar5 + 0xb) = 1;
      goto LAB_007a64cd;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_007a6481;
}



void FUN_007a6503(void)

{
  int *piVar1;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EDI + 0x18);
  FUN_007a670b(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(unaff_EDI + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



undefined4 * FUN_007a6527(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 != '\0') {
        cVar1 = FUN_00412a58(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_007a66a6;
        uVar4 = 0;
        goto LAB_007a6549;
      }
      cVar1 = FUN_00412a58(param_2,param_4 + 0xc);
      if (cVar1 == '\0') {
LAB_007a6636:
        cVar1 = FUN_00412a58(param_4 + 0xc,param_2);
        if (cVar1 == '\0') {
LAB_007a66a6:
          puVar3 = (undefined4 *)FUN_007a677d(in_EAX,param_2);
          *param_1 = *puVar3;
          param_1[1] = puVar3[1];
          return param_1;
        }
        FUN_00743d11();
        cVar1 = FUN_006b8eca();
        if ((cVar1 == '\0') && (cVar1 = FUN_00412a58(param_2,param_4 + 0xc), cVar1 == '\0'))
        goto LAB_007a66a6;
        if (*(char *)(*(int *)(param_4 + 8) + 0x2d) == '\0') {
          uVar4 = 1;
          goto LAB_007a6549;
        }
      }
      else {
        iVar2 = FUN_007a6a2f();
        cVar1 = FUN_00412a58(*(int *)(iVar2 + 4) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_007a6636;
        if (*(char *)(*(int *)(param_4 + 8) + 0x2d) == '\0') {
          uVar4 = 1;
          goto LAB_007a6549;
        }
      }
      uVar4 = 0;
      goto LAB_007a6549;
    }
    cVar1 = FUN_00412a58(param_2,param_4 + 0xc);
    if (cVar1 == '\0') goto LAB_007a66a6;
  }
  uVar4 = 1;
LAB_007a6549:
  FUN_007a68e2(param_1,uVar4,param_2);
  return param_1;
}



void FUN_007a66c8(undefined4 param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  undefined4 *unaff_EDI;
  undefined4 *local_8;
  
  puVar1 = (undefined4 *)((undefined4 *)unaff_EDI[6])[1];
  local_8 = (undefined4 *)unaff_EDI[6];
  while (puVar3 = puVar1, *(char *)((int)puVar3 + 0x2d) == '\0') {
    cVar2 = FUN_00412a58(puVar3 + 3,param_1);
    if (cVar2 == '\0') {
      puVar1 = (undefined4 *)*puVar3;
      local_8 = puVar3;
    }
    else {
      puVar1 = (undefined4 *)puVar3[2];
    }
  }
  unaff_EBX[1] = local_8;
  *unaff_EBX = *unaff_EDI;
  return;
}



void FUN_007a670b(int param_1)

{
  if (*(char *)(param_1 + 0x2d) == '\0') {
    FUN_007a670b(*(undefined4 *)(param_1 + 8));
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_007a6749(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_007a6847(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_007a677d(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  puVar2 = (undefined4 *)local_8[1];
  local_c = CONCAT31(local_c._1_3_,1);
  while (*(char *)((int)puVar2 + 0x2d) == '\0') {
    local_8 = puVar2;
    cVar1 = FUN_00412a58(param_2,puVar2 + 3);
    local_c = CONCAT31(local_c._1_3_,cVar1);
    if (cVar1 == '\0') {
      puVar2 = (undefined4 *)puVar2[2];
    }
    else {
      puVar2 = (undefined4 *)*puVar2;
    }
  }
  local_14 = *param_1;
  local_10 = local_8;
  if ((char)local_c != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007a67ef;
    }
    FUN_007a6a2f();
  }
  puVar2 = local_10;
  cVar1 = FUN_00412a58(local_10 + 3,param_2);
  uVar3 = local_c;
  if (cVar1 == '\0') {
    *unaff_EBX = local_14;
    unaff_EBX[1] = puVar2;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007a67ef:
  puVar2 = (undefined4 *)FUN_007a68e2(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void FUN_007a6847(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_007a6503();
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00743d11();
    FUN_007a626a();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007a68e2(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7a68ee;
  if (0x7fffffd < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_007a6a90(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_007a6a07;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_007a6a07;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_007a6a07:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xb) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x2c) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xb) == '\0') {
LAB_007a69c3:
        *(undefined *)(piVar1 + 0xb) = 1;
        *(undefined *)(piVar7 + 0xb) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x2c) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007fb425(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x2c) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x2c) = 0;
        FUN_004fc926(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xb) == '\0') goto LAB_007a69c3;
    if (piVar8 == (int *)*piVar1) {
      FUN_004fc926(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x2c) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x2c) = 0;
    FUN_007fb425(unaff_ESI);
  } while( true );
}



void FUN_007a6a2f(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x2d) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x2d) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x2d) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x2d) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x2d) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x2d) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_007a6a90(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x30);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    basic_string<>(param_1_00);
    puVar1[10] = *(undefined4 *)(param_1_00 + 0x1c);
    *(undefined *)(puVar1 + 0xb) = 0;
    *(undefined *)((int)puVar1 + 0x2d) = 0;
  }
  return puVar1;
}



void Catch_All_007a6aee(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void Catch_All_007a6b47(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_007a6b5e(undefined4 param_1_00,byte param_1)

{
  FUN_00b697c2();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a6b7a(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0xcc);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00b67b02(pvVar2,param_2,param_3);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_007a7665(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



undefined4 __thiscall FUN_007a6bf4(undefined4 param_1_00,byte param_1)

{
  FUN_00b6904d();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007a6c10(undefined4 param_1)

{
  FUN_007a6c22(param_1);
  return;
}



void FUN_007a6c18(void)

{
  int in_EAX;
  
  FUN_0041c3e3(in_EAX + 8);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007a6c22(undefined4 *param_1)

{
  *param_1 = boost::signals2::
             signal1<void,class_W133E5AC5::W76B051B4&,class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4&)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&,class_W133E5AC5::W76B051B4&)>,class_boost::signals2::mutex>
             ::vftable;
  FUN_007a6fad(param_1[2]);
  if (param_1[3] != 0) {
    FUN_0040127a();
  }
  *param_1 = boost::signals2::signal_base::vftable;
  return;
}



undefined4 FUN_007a6c64(undefined4 param_1,undefined4 param_2)

{
  FUN_007a6d18(param_1,param_2);
  return param_1;
}



undefined4 __thiscall FUN_007a6c83(undefined4 param_1_00,byte param_1)

{
  FUN_007a6c22();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a6c9f(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  
  uVar4 = 0;
  *param_1 = boost::signals2::
             signal1<void,class_W133E5AC5::W76B051B4&,class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4&)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&,class_W133E5AC5::W76B051B4&)>,class_boost::signals2::mutex>
             ::vftable;
  pvVar2 = operator_new(0x28);
  if (pvVar2 != (void *)0x0) {
    uVar4 = FUN_007a6f16(pvVar2);
  }
  param_1[2] = uVar4;
  param_1[3] = 0;
  puVar3 = (undefined4 *)FUN_007a76c2(uVar4);
  uVar1 = param_1[3];
  param_1[3] = *puVar3;
  *puVar3 = uVar1;
  if (pvVar2 != (void *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1 + 2,uVar4,uVar4);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007a6d18(undefined4 param_1,undefined4 param_2)

{
  int unaff_EDI;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(unaff_EDI + 0x10));
  FUN_007a706b(param_1,param_2);
  LeaveCriticalSection((LPCRITICAL_SECTION)(unaff_EDI + 0x10));
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int ** FUN_007a6f16(int **param_1)

{
  int **ppiVar1;
  int *piVar2;
  int **ppiVar3;
  undefined4 uVar4;
  undefined local_58 [64];
  void *local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  ppiVar3 = param_1;
  uStack_4 = 0x48;
  local_8 = 0x7a6f22;
  local_14 = 0;
  local_18 = operator_new(0x10);
  local_8 = 0;
  if (local_18 != (void *)0x0) {
    uVar4 = FUN_007a17b5(local_58,(int)&param_1 + 3);
    local_8 = CONCAT31(local_8._1_3_,1);
    local_14 = 1;
    FUN_007a7286(local_18,uVar4);
  }
  local_8 = 2;
  FUN_007a7533(ppiVar3);
  local_8 = 4;
  if ((local_14 & 1) != 0) {
    FUN_007a7148(local_58);
  }
  ppiVar1 = (int **)**ppiVar3;
  piVar2 = ppiVar1[5];
  ppiVar3[2] = (int *)0x0;
  ppiVar3[3] = piVar2;
  ppiVar3[2] = *ppiVar1;
  InitializeCriticalSection((LPCRITICAL_SECTION)(ppiVar3 + 4));
  return ppiVar3;
}



void FUN_007a6fad(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int **ppiVar5;
  int **local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c14c8d;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00446056(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  local_c = 0;
  iVar1 = *(int *)(*local_20)[5];
  iVar2 = **local_20;
  while( true ) {
    iVar3 = (*local_20)[5];
    if ((iVar2 == 0) || (iVar2 != **local_20)) {
      FUN_00a3fb10();
    }
    if (iVar1 == iVar3) break;
    ppiVar5 = (int **)FUN_006adbc2();
    piVar4 = *ppiVar5;
    (**(code **)(*piVar4 + 8))();
    *(undefined *)(piVar4 + 1) = 0;
    (**(code **)(*piVar4 + 0xc))();
    FUN_007a741a();
  }
  local_c = 0xffffffff;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_007a706b(int **param_1_00,int *param_1,undefined4 param_2)

{
  int local_34;
  int local_30;
  int local_2c;
  int local_28;
  undefined4 local_24;
  undefined local_20;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x7a7077;
  FUN_007a720b(&local_2c,param_2);
  local_20 = 0;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  local_30 = *(undefined4 *)(**param_1_00 + 0x34);
  local_34 = *(int *)(**param_1_00 + 0x1c);
  local_24 = 2;
  FUN_004371fa(&local_34,&local_24,&local_2c);
  *(undefined4 *)(local_2c + 0x68) = 2;
  FUN_0041ba77();
  local_34 = local_2c;
  local_30 = local_28;
  if (local_28 != 0) {
    LOCK();
    *(int *)(local_28 + 8) = *(int *)(local_28 + 8) + 1;
    UNLOCK();
  }
  *param_1 = local_2c;
  param_1[1] = local_28;
  if (local_28 != 0) {
    LOCK();
    *(int *)(local_28 + 8) = *(int *)(local_28 + 8) + 1;
    UNLOCK();
  }
  FUN_00417fc9();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_28 != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



void __fastcall FUN_007a712a(int *param_1)

{
  if (*(uint *)(*param_1 + 0x8c) < *(uint *)(*param_1 + 0x90)) {
    FUN_007a7176(param_1[2]);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007a7148(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  iStack_24 = param_1 + 0x1c;
  puVar1 = &uStack_28;
  uStack_28 = 0x7a7164;
  FUN_00437ba2();
  local_8 = 0xffffffff;
  puVar1[-1] = param_1;
  puVar2 = puVar1 + -2;
  puVar1[-2] = 0x7a716e;
  FUN_007a863f();
  *(undefined4 *)((int)puVar2 + -4) = 0x7a7173;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007a7176(int **param_1_00,int param_1)

{
  char cVar1;
  void *pvVar2;
  LPCRITICAL_SECTION lpCriticalSection;
  undefined4 local_20;
  undefined4 local_1c;
  LPCRITICAL_SECTION local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7a7182;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1_00 + 4);
  local_18 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  local_8 = 0;
  if (**param_1_00 == param_1) {
    cVar1 = FUN_00439f23();
    if (cVar1 == '\0') {
      pvVar2 = operator_new(0x10);
      local_8._0_1_ = 1;
      if (pvVar2 != (void *)0x0) {
        FUN_007a7449(**param_1_00);
      }
      local_8 = (uint)local_8._1_3_ << 8;
      FUN_007a7580();
    }
    local_20 = *(undefined4 *)**param_1_00;
    local_1c = *(undefined4 *)((undefined4 *)**param_1_00)[5];
    FUN_00437498(0,&local_20,0);
    lpCriticalSection = local_18;
  }
  LeaveCriticalSection(lpCriticalSection);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a720b(undefined4 *param_1,int param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  
  FUN_007a7359();
  pvVar2 = operator_new(0x78);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_007a749f(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_007a7777(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (param_2 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007a7286(int param_1,undefined4 param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x40);
  if (pvVar1 != (void *)0x0) {
    FUN_007a8894(pvVar1,param_2);
  }
  FUN_007a75b4(param_1);
  operator_new(1);
  FUN_00445308(param_1 + 8);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007a72e3(undefined4 *param_1)

{
  *param_1 = boost::signals2::detail::
             connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot1<void,class_W133E5AC5::W76B051B4&,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4&)>_>,class_boost::signals2::mutex>
             ::vftable;
  if (*(char *)(param_1 + 0x1b) != '\0') {
    *(undefined *)(param_1 + 0x1b) = 0;
  }
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x14));
  FUN_007a7d59(param_1 + 4);
  *param_1 = boost::signals2::detail::connection_body_base::vftable;
  FUN_00417fc9();
  return;
}



void __fastcall FUN_007a7332(int param_1)

{
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x50));
  return;
}



undefined4 __thiscall FUN_007a733d(undefined4 param_1_00,byte param_1)

{
  FUN_007a72e3();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007a7359(int **param_1)

{
  char cVar1;
  undefined4 local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x7a7365;
  cVar1 = FUN_00439f23();
  if (cVar1 == '\0') {
    local_18 = operator_new(0x10);
    local_8 = 0;
    if (local_18 != (void *)0x0) {
      FUN_007a7449(**param_1);
    }
    local_8 = 0xffffffff;
    FUN_007a7580();
    local_1c = *(undefined4 *)**param_1;
    local_18 = *(void **)((undefined4 *)**param_1)[5];
    FUN_00437498(1,&local_1c,0);
  }
  else {
    FUN_00437588(1,2);
  }
  return;
}



void FUN_007a73d3(undefined4 *param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)((undefined4 *)unaff_EBX[6])[1];
  cVar2 = *(char *)((int)local_8 + 0x21);
  puVar1 = (undefined4 *)unaff_EBX[6];
  while (cVar2 == '\0') {
    cVar2 = FUN_0043772e();
    if (cVar2 == '\0') {
      puVar3 = (undefined4 *)*local_8;
    }
    else {
      puVar3 = (undefined4 *)local_8[2];
      local_8 = puVar1;
    }
    puVar1 = local_8;
    local_8 = puVar3;
    cVar2 = *(char *)((int)puVar3 + 0x21);
  }
  param_1[1] = puVar1;
  *param_1 = *unaff_EBX;
  return;
}



void FUN_007a741a(void)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_007a7431;
    }
  }
  iVar2 = *piVar1;
LAB_007a7431:
  if (unaff_ESI[1] == *(int **)(iVar2 + 0x14)) {
    FUN_00a3fb10();
  }
  unaff_ESI[1] = (int *)*unaff_ESI[1];
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_007a7449(int param_1_00,undefined4 param_1)

{
  void *pvVar1;
  int unaff_ESI;
  
  pvVar1 = operator_new(0x40);
  if (pvVar1 != (void *)0x0) {
    FUN_007a8894(pvVar1,param_1);
  }
  FUN_007a75b4(unaff_ESI);
  *(undefined4 *)(unaff_ESI + 8) = *(undefined4 *)(param_1_00 + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a749f(undefined4 param_1_00,undefined4 *param_1)

{
  *(undefined *)(param_1 + 1) = 1;
  param_1[2] = 0;
  param_1[3] = 0;
  *param_1 = boost::signals2::detail::
             connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot1<void,class_W133E5AC5::W76B051B4&,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4&)>_>,class_boost::signals2::mutex>
             ::vftable;
  FUN_004373e3(param_1 + 4,param_1_00);
  FUN_00672a11();
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x14));
  param_1[0x1a] = 0;
  *(undefined *)(param_1 + 0x1b) = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007a74fd(int param_1)

{
  FUN_004382a5(param_1);
  *(undefined4 *)(param_1 + 0x20) = 0;
  FUN_00607a72((undefined4 *)(param_1 + 0x20));
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a7533(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_007a771a(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_007a7580(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *unaff_ESI;
  undefined local_c [4];
  int local_8;
  
  puVar2 = (undefined4 *)FUN_007a7533(local_c);
  if (puVar2 != unaff_ESI) {
    uVar1 = *puVar2;
    *puVar2 = *unaff_ESI;
    *unaff_ESI = uVar1;
  }
  uVar1 = unaff_ESI[1];
  unaff_ESI[1] = puVar2[1];
  puVar2[1] = uVar1;
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a75b4(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_007a77d4(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



undefined * Catch_007a7653(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  return &UNK_007a7637;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a7665(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W133E5AC5::W8FBB9647>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a76ab(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a76c2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::signal1_impl<void,class_W133E5AC5::W76B051B4&,class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4&)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&,class_W133E5AC5::W76B051B4&)>,class_boost::signals2::mutex>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a7708(void)

{
  code *pcVar1;
  
  FUN_007a79c0();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a771a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::signal1_impl<void,class_W133E5AC5::W76B051B4&,class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4&)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&,class_W133E5AC5::W76B051B4&)>,class_boost::signals2::mutex>::invocation_state>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a7760(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_007a2430(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a7777(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot1<void,class_W133E5AC5::W76B051B4&,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4&)>_>,class_boost::signals2::mutex>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a77bd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a77d4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::grouped_list<int,struct_std::less<int>,class_boost::shared_ptr<class_boost::signals2::detail::connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot1<void,class_W133E5AC5::W76B051B4&,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4&)>_>,class_boost::signals2::mutex>_>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a781a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_007a7148(*(undefined4 *)(unaff_EBP + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007a783a(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007a7926(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf1<void,class_W133E5AC5::W483C1BDF,class_W133E5AC5::W76B051B4_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W133E5AC5::W483C1BDF*>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007a7884(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007a7973(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W133E5AC5::W483C1BDF>,class_boost::_bi::list1<class_boost::_bi::value<class_W133E5AC5::W483C1BDF*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007a78bd(void)

{
  FUN_007a79c0();
  return;
}



void __fastcall FUN_007a78c8(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_007a7148(iVar1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __fastcall FUN_007a7926(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf1<void,class_W133E5AC5::W483C1BDF,class_W133E5AC5::W76B051B4_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W133E5AC5::W483C1BDF*>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf1<void,class_W133E5AC5::W483C1BDF,class_W133E5AC5::W76B051B4_const&>,class_boost::_bi::list2<class_boost::_bi::value<class_W133E5AC5::W483C1BDF*>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void __fastcall FUN_007a7973(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W133E5AC5::W483C1BDF>,class_boost::_bi::list1<class_boost::_bi::value<class_W133E5AC5::W483C1BDF*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W133E5AC5::W483C1BDF>,class_boost::_bi::list1<class_boost::_bi::value<class_W133E5AC5::W483C1BDF*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void FUN_007a79c0(void)

{
  int unaff_ESI;
  
  if (unaff_ESI != 0) {
    DeleteCriticalSection((LPCRITICAL_SECTION)(unaff_ESI + 0x10));
    if (*(int *)(unaff_ESI + 4) != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  return;
}



void __fastcall FUN_007a79e2(undefined4 *param_1)

{
  *param_1 = W133E5AC5::WD2318ED3::vftable;
  return;
}



undefined4 * __thiscall FUN_007a79e9(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W133E5AC5::WD2318ED3::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007a7b17(undefined4 param_1_00,byte param_1)

{
  FUN_00b688d2();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_007a7b79(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_007a7bd6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007a7bed(void)

{
  FUN_007a7b17();
  return;
}



undefined4 __thiscall FUN_007a7bf5(undefined4 param_1_00,byte param_1)

{
  FUN_00b68794();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a7c11(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W133E5AC5::W8AE664EA>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a7c57(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a7c6e(void)

{
  undefined4 uVar1;
  int unaff_EBX;
  undefined local_254 [588];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x244;
  local_8 = 0x7a7c7d;
  uVar1 = FUN_0041c276(local_254);
  local_8 = 0;
  FUN_0041be41(unaff_EBX,uVar1);
  local_8 = 0xffffffff;
  FUN_0041c3e3(local_254);
  *(undefined4 *)(unaff_EBX + 0x160) = 2;
  *(undefined4 *)(unaff_EBX + 0x1c4) = 2;
  *(undefined4 *)(unaff_EBX + 0x1c8) = 2;
  *(undefined4 *)(unaff_EBX + 0x1cc) = 2;
  *(undefined4 *)(unaff_EBX + 0x1d0) = 2;
  *(undefined4 *)(unaff_EBX + 0x90) = 0;
  *(undefined4 *)(unaff_EBX + 0x94) = 0;
  *(undefined4 *)(unaff_EBX + 0x98) = 0;
  *(undefined4 *)(unaff_EBX + 0x9c) = 0;
  *(undefined4 *)(unaff_EBX + 0x164) = 0;
  *(undefined4 *)(unaff_EBX + 0x168) = 0;
  *(undefined4 *)(unaff_EBX + 0x16c) = 0;
  *(undefined4 *)(unaff_EBX + 0x170) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a7d03(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  FUN_0041c276(param_1 + 2);
  FUN_007a7c6e();
  return param_1;
}



undefined4 __thiscall FUN_007a7d35(undefined4 param_1_00,byte param_1)

{
  FUN_00b67a86();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007a7d51(undefined4 param_1)

{
  FUN_007a7e82(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007a7d59(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  uStack_24 = 0x7a7d74;
  FUN_00507e58();
  local_8 = 0xffffffff;
  uStack_24 = param_1;
  puVar1 = &uStack_28;
  uStack_28 = 0x7a7d7e;
  FUN_0043c4a4();
  puVar1[-1] = 0x7a7d83;
  return;
}



void FUN_007a7d86(void)

{
  undefined4 *unaff_ESI;
  
  if (unaff_ESI[3] != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI[3]);
  }
  unaff_ESI[3] = 0;
  unaff_ESI[4] = 0;
  unaff_ESI[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*unaff_ESI);
}



void FUN_007a7da9(undefined4 *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int in_EAX;
  uint uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = *(int *)(in_EAX + 0x14) - iVar1 >> 2;
  }
  puVar2 = *(undefined4 **)(in_EAX + 0x10);
  if ((uint)((int)puVar2 - iVar1 >> 2) < uVar3) {
    *puVar2 = *param_1;
    *(undefined4 **)(in_EAX + 0x10) = puVar2 + 1;
  }
  else {
    FUN_0046e65a();
    FUN_007a7eff(&local_10,param_1,local_10,local_c);
  }
  return;
}



void FUN_007a7e07(void)

{
  int in_EAX;
  int iVar1;
  rsize_t _DstSize;
  int local_14;
  void *local_10;
  int local_c;
  void *local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  if ((local_14 == 0) || (local_14 != local_c)) {
    FUN_00a3fb10();
  }
  if (local_10 != local_8) {
    iVar1 = *(int *)(in_EAX + 0x10) - (int)local_8 >> 2;
    _DstSize = iVar1 * 4;
    if (0 < iVar1) {
      _memmove_s(local_10,_DstSize,local_8,_DstSize);
    }
    *(void **)(in_EAX + 0x10) = (void *)(_DstSize + (int)local_10);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007a7e82(undefined4 *param_1)

{
  *param_1 = boost::signals2::
             signal1<void,class_W133E5AC5::W76B051B4_const&,class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4_const&)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&,class_W133E5AC5::W76B051B4_const&)>,class_boost::signals2::mutex>
             ::vftable;
  FUN_007a6fad(param_1[2]);
  if (param_1[3] != 0) {
    FUN_0040127a();
  }
  *param_1 = boost::signals2::signal_base::vftable;
  return;
}



undefined4 FUN_007a7ec4(undefined4 param_1,undefined4 param_2)

{
  FUN_007a8020(param_1,param_2);
  return param_1;
}



undefined4 __thiscall FUN_007a7ee3(undefined4 param_1_00,byte param_1)

{
  FUN_007a7e82();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007a7eff(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int *piVar1;
  int in_EAX;
  int iVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc) & 0xfffffffcU) == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = param_4 - local_8 >> 2;
  }
  FUN_007a821e(param_2,param_3,param_4);
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *local_14;
  }
  piVar1 = (int *)(local_10 + local_8 * 4);
  if (piVar1 <= *(int **)(iVar2 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *local_14;
    }
    if (*(int **)(iVar2 + 0xc) <= piVar1) goto LAB_007a7f98;
  }
  FUN_00a3fb10();
LAB_007a7f98:
  param_1[1] = piVar1;
  *param_1 = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a7fa7(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  
  uVar4 = 0;
  *param_1 = boost::signals2::
             signal1<void,class_W133E5AC5::W76B051B4_const&,class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4_const&)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&,class_W133E5AC5::W76B051B4_const&)>,class_boost::signals2::mutex>
             ::vftable;
  pvVar2 = operator_new(0x28);
  if (pvVar2 != (void *)0x0) {
    uVar4 = FUN_007a8389(pvVar2);
  }
  param_1[2] = uVar4;
  param_1[3] = 0;
  puVar3 = (undefined4 *)FUN_007a985c(uVar4);
  uVar1 = param_1[3];
  param_1[3] = *puVar3;
  *puVar3 = uVar1;
  if (pvVar2 != (void *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1 + 2,uVar4,uVar4);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007a8020(undefined4 param_1,undefined4 param_2)

{
  int unaff_EDI;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(unaff_EDI + 0x10));
  FUN_007a8420(param_1,param_2);
  LeaveCriticalSection((LPCRITICAL_SECTION)(unaff_EDI + 0x10));
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_007a8060(void)

{
  char cVar1;
  int unaff_EBX;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(unaff_EBX + 0x10));
  cVar1 = FUN_00439f23();
  if (cVar1 != '\0') {
    FUN_00437588(0,1);
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(unaff_EBX + 4);
}



void FUN_007a821e(undefined4 *param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  int in_EAX;
  int iVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  int extraout_ECX;
  undefined4 *puVar7;
  uint local_8;
  
  iVar2 = *(int *)(in_EAX + 0xc);
  if (iVar2 == 0) {
    local_8 = 0;
  }
  else {
    local_8 = *(int *)(in_EAX + 0x14) - iVar2 >> 2;
  }
  iVar4 = *(int *)(in_EAX + 0x10);
  iVar6 = 0x3fffffff;
  iVar2 = iVar4 - iVar2 >> 2;
  if (iVar2 == 0x3fffffff) {
    iVar2 = FUN_004423c1();
    iVar6 = extraout_ECX;
  }
  uVar3 = iVar2 + 1;
  if (local_8 < uVar3) {
    if (iVar6 - (local_8 >> 1) < local_8) {
      local_8 = 0;
    }
    else {
      local_8 = local_8 + (local_8 >> 1);
    }
    if (local_8 < uVar3) {
      local_8 = uVar3;
    }
    iVar4 = FUN_00467f53();
    *(undefined4 *)(iVar4 + ((int)param_3 - *(int *)(in_EAX + 0xc) >> 2) * 4) = *param_1;
    FUN_007a905f(*(undefined4 *)(in_EAX + 0xc));
    FUN_007a905f(param_3);
    iVar2 = *(int *)(in_EAX + 0xc);
    if (iVar2 != 0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar2);
    }
    *(uint *)(in_EAX + 0x14) = iVar4 + local_8 * 4;
    *(int *)(in_EAX + 0x10) = iVar4 + ((*(int *)(in_EAX + 0x10) - iVar2 >> 2) + 1) * 4;
    *(int *)(in_EAX + 0xc) = iVar4;
  }
  else if (iVar4 - (int)param_3 >> 2 == 0) {
    uVar1 = *param_1;
    FUN_007a905f(param_3);
    puVar7 = *(undefined4 **)(in_EAX + 0x10);
    iVar2 = 1 - ((int)puVar7 - (int)param_3 >> 2);
    if (iVar2 != 0) {
      for (; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar7 = uVar1;
        puVar7 = puVar7 + 1;
      }
    }
    *(int *)(in_EAX + 0x10) = *(int *)(in_EAX + 0x10) + 4;
    iVar2 = *(int *)(in_EAX + 0x10);
    for (; param_3 != (undefined4 *)(iVar2 + -4); param_3 = param_3 + 1) {
      *param_3 = uVar1;
    }
  }
  else {
    uVar1 = *param_1;
    uVar5 = FUN_007a905f(iVar4 + -4);
    *(undefined4 *)(in_EAX + 0x10) = uVar5;
    iVar2 = (iVar4 + -4) - (int)param_3 >> 2;
    if (0 < iVar2) {
      _memmove_s((void *)(iVar4 + iVar2 * -4),iVar2 * 4,param_3,iVar2 * 4);
    }
    puVar7 = param_3 + 1;
    for (; param_3 != puVar7; param_3 = param_3 + 1) {
      *param_3 = uVar1;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int ** FUN_007a8389(int **param_1)

{
  int **ppiVar1;
  int *piVar2;
  int **ppiVar3;
  undefined4 uVar4;
  undefined local_58 [64];
  void *local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  ppiVar3 = param_1;
  uStack_4 = 0x48;
  local_8 = 0x7a8395;
  local_14 = 0;
  local_18 = operator_new(0x10);
  local_8 = 0;
  if (local_18 != (void *)0x0) {
    uVar4 = FUN_007a17b5(local_58,(int)&param_1 + 3);
    local_8 = CONCAT31(local_8._1_3_,1);
    local_14 = 1;
    FUN_007a8667(local_18,uVar4);
  }
  local_8 = 2;
  FUN_007a9088(ppiVar3);
  local_8 = 4;
  if ((local_14 & 1) != 0) {
    FUN_007a7148(local_58);
  }
  ppiVar1 = (int **)**ppiVar3;
  piVar2 = ppiVar1[5];
  ppiVar3[2] = (int *)0x0;
  ppiVar3[3] = piVar2;
  ppiVar3[2] = *ppiVar1;
  InitializeCriticalSection((LPCRITICAL_SECTION)(ppiVar3 + 4));
  return ppiVar3;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_007a8420(int **param_1_00,int *param_1,undefined4 param_2)

{
  int local_34;
  int local_30;
  int local_2c;
  int local_28;
  undefined4 local_24;
  undefined local_20;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x7a842c;
  FUN_007a85c4(&local_2c,param_2);
  local_20 = 0;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  local_30 = *(undefined4 *)(**param_1_00 + 0x34);
  local_34 = *(int *)(**param_1_00 + 0x1c);
  local_24 = 2;
  FUN_004371fa(&local_34,&local_24,&local_2c);
  *(undefined4 *)(local_2c + 0x68) = 2;
  FUN_0041ba77();
  local_34 = local_2c;
  local_30 = local_28;
  if (local_28 != 0) {
    LOCK();
    *(int *)(local_28 + 8) = *(int *)(local_28 + 8) + 1;
    UNLOCK();
  }
  *param_1 = local_2c;
  param_1[1] = local_28;
  if (local_28 != 0) {
    LOCK();
    *(int *)(local_28 + 8) = *(int *)(local_28 + 8) + 1;
    UNLOCK();
  }
  FUN_00417fc9();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_28 != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



void __fastcall FUN_007a84df(int *param_1)

{
  if (*(uint *)(*param_1 + 0x8c) < *(uint *)(*param_1 + 0x90)) {
    FUN_007a852f(param_1[2]);
  }
  return;
}



void __fastcall
FUN_007a84fd(undefined4 param_1_00,undefined4 param_2_00,undefined4 param_1,undefined4 param_2,
            undefined4 param_3,undefined4 param_4)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = param_1;
  unaff_ESI[1] = param_2;
  unaff_ESI[3] = param_4;
  unaff_ESI[6] = param_4;
  unaff_ESI[2] = param_3;
  unaff_ESI[4] = param_2_00;
  unaff_ESI[5] = param_3;
  FUN_007a86c4(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007a852f(int **param_1_00,int param_1)

{
  char cVar1;
  void *pvVar2;
  LPCRITICAL_SECTION lpCriticalSection;
  undefined4 local_20;
  undefined4 local_1c;
  LPCRITICAL_SECTION local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7a853b;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1_00 + 4);
  local_18 = lpCriticalSection;
  EnterCriticalSection(lpCriticalSection);
  local_8 = 0;
  if (**param_1_00 == param_1) {
    cVar1 = FUN_00439f23();
    if (cVar1 == '\0') {
      pvVar2 = operator_new(0x10);
      local_8._0_1_ = 1;
      if (pvVar2 != (void *)0x0) {
        FUN_007a8a1f(**param_1_00);
      }
      local_8 = (uint)local_8._1_3_ << 8;
      FUN_007a90d5();
    }
    local_20 = *(undefined4 *)**param_1_00;
    local_1c = *(undefined4 *)((undefined4 *)**param_1_00)[5];
    FUN_00437498(0,&local_20,0);
    lpCriticalSection = local_18;
  }
  LeaveCriticalSection(lpCriticalSection);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a85c4(undefined4 *param_1,int param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  
  FUN_007a881a();
  pvVar2 = operator_new(0x78);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_007a8a75(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_007a9911(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (param_2 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007a863f(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7a8657;
  FUN_00437c2b();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007a865e;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007a8667(int param_1,undefined4 param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x40);
  if (pvVar1 != (void *)0x0) {
    FUN_007a8894(pvVar1,param_2);
  }
  FUN_007a9109(param_1);
  operator_new(1);
  FUN_00445308(param_1 + 8);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007a86c4(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  int **ppiVar4;
  int *piVar5;
  
  cVar3 = FUN_006b8eca();
  if (cVar3 == '\0') {
    cVar3 = FUN_006b8eca();
    while (cVar3 == '\0') {
      ppiVar4 = (int **)FUN_006adbc2();
      piVar1 = *ppiVar4;
      (**(code **)(*piVar1 + 8))();
      FUN_004452ee();
      iVar2 = param_1[4];
      FUN_006adbc2();
      FUN_007a9156(iVar2 + 4);
      piVar5 = (int *)FUN_006adbc2();
      if (*(char *)(*piVar5 + 4) == '\0') {
        piVar5 = (int *)(param_1[4] + 0x90);
        *piVar5 = *piVar5 + 1;
      }
      else {
        piVar5 = (int *)(param_1[4] + 0x8c);
        *piVar5 = *piVar5 + 1;
      }
      FUN_006adbc2();
      cVar3 = FUN_0044586e();
      if (cVar3 == '\0') {
        param_1[5] = *param_1;
        param_1[6] = param_1[1];
        (**(code **)(*piVar1 + 0xc))();
        break;
      }
      (**(code **)(*piVar1 + 0xc))();
      FUN_007a741a();
      cVar3 = FUN_006b8eca();
    }
    cVar3 = FUN_006b8eca();
    if (cVar3 != '\0') {
      param_1[5] = param_1[2];
      param_1[6] = param_1[3];
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007a87af(undefined4 *param_1)

{
  *param_1 = boost::signals2::detail::
             connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot1<void,class_W133E5AC5::W76B051B4_const&,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4_const&)>_>,class_boost::signals2::mutex>
             ::vftable;
  if (*(char *)(param_1 + 0x1b) != '\0') {
    *(undefined *)(param_1 + 0x1b) = 0;
  }
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x14));
  FUN_007a7d59(param_1 + 4);
  *param_1 = boost::signals2::detail::connection_body_base::vftable;
  FUN_00417fc9();
  return;
}



undefined4 __thiscall FUN_007a87fe(undefined4 param_1_00,byte param_1)

{
  FUN_007a87af();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007a881a(int **param_1)

{
  char cVar1;
  undefined4 local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x7a8826;
  cVar1 = FUN_00439f23();
  if (cVar1 == '\0') {
    local_18 = operator_new(0x10);
    local_8 = 0;
    if (local_18 != (void *)0x0) {
      FUN_007a8a1f(**param_1);
    }
    local_8 = 0xffffffff;
    FUN_007a90d5();
    local_1c = *(undefined4 *)**param_1;
    local_18 = *(void **)((undefined4 *)**param_1)[5];
    FUN_00437498(1,&local_1c,0);
  }
  else {
    FUN_00437588(1,2);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a8894(undefined4 *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  char cVar3;
  int iVar4;
  int local_4c;
  int local_48;
  int local_34;
  int local_30;
  
  FUN_007a8ad3(param_1);
  FUN_007a1d21(param_1 + 7);
  *(undefined *)(param_1 + 0xf) = *(undefined *)(param_2 + 0x3c);
  uVar1 = *(undefined4 *)param_1[5];
  uVar2 = *param_1;
  while( true ) {
    cVar3 = FUN_006b8eca();
    if (cVar3 != '\0') break;
    iVar4 = FUN_006badde();
    *(undefined4 *)(iVar4 + 0xc) = uVar2;
    *(undefined4 *)(iVar4 + 0x10) = uVar1;
    FUN_007a1c11(param_2);
    FUN_00620942();
    FUN_007a1c11(param_2);
    while( true ) {
      if ((local_34 == 0) || (local_34 != local_4c)) {
        FUN_00a3fb10();
      }
      if (local_30 == local_48) break;
      FUN_007a741a();
      FUN_007a741a();
    }
    FUN_00620942();
    FUN_00620942();
  }
  return param_1;
}



void FUN_007a89a4(undefined4 *param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)unaff_EBX[6];
  cVar2 = *(char *)((int)(undefined4 *)local_8[1] + 0x21);
  puVar1 = (undefined4 *)local_8[1];
  while (cVar2 == '\0') {
    cVar2 = FUN_0043772e();
    if (cVar2 == '\0') {
      puVar3 = (undefined4 *)puVar1[2];
    }
    else {
      puVar3 = (undefined4 *)*puVar1;
      local_8 = puVar1;
    }
    puVar1 = puVar3;
    cVar2 = *(char *)((int)puVar3 + 0x21);
  }
  param_1[1] = local_8;
  *param_1 = *unaff_EBX;
  return;
}



void FUN_007a89eb(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_007a8ddb(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_007a8a1f(int param_1_00,undefined4 param_1)

{
  void *pvVar1;
  int unaff_ESI;
  
  pvVar1 = operator_new(0x40);
  if (pvVar1 != (void *)0x0) {
    FUN_007a8894(pvVar1,param_1);
  }
  FUN_007a9109(unaff_ESI);
  *(undefined4 *)(unaff_ESI + 8) = *(undefined4 *)(param_1_00 + 8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0xc);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a8a75(undefined4 param_1_00,undefined4 *param_1)

{
  *(undefined *)(param_1 + 1) = 1;
  param_1[2] = 0;
  param_1[3] = 0;
  *param_1 = boost::signals2::detail::
             connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot1<void,class_W133E5AC5::W76B051B4_const&,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4_const&)>_>,class_boost::signals2::mutex>
             ::vftable;
  FUN_004373e3(param_1 + 4,param_1_00);
  FUN_00672a11();
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x14));
  param_1[0x1a] = 0;
  *(undefined *)(param_1 + 0x1b) = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a8ad3(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00418daa(1,0);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = param_1;
  }
  *param_1 = puVar1;
  puVar1 = (undefined4 *)FUN_006a6d92();
  param_1[6] = 0;
  param_1[5] = puVar1;
  FUN_007a952b(param_1,param_1,*param_1,*puVar1,*param_1_00,*(undefined4 *)param_1_00[5],*param_1_00
               ,(undefined4 *)param_1_00[5]);
  return param_1;
}



void Catch_All_007a8b32(void)

{
  code *pcVar1;
  
  FUN_00437c2b();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007a8c2f)
// WARNING: Removing unreachable block (ram,0x007a8c3f)
// WARNING: Removing unreachable block (ram,0x007a8c48)
// WARNING: Removing unreachable block (ram,0x007a8c4b)
// WARNING: Removing unreachable block (ram,0x007a8c3b)
// WARNING: Removing unreachable block (ram,0x007a8c58)
// WARNING: Removing unreachable block (ram,0x007a8c68)
// WARNING: Removing unreachable block (ram,0x007a8c73)
// WARNING: Removing unreachable block (ram,0x007a8c6f)
// WARNING: Removing unreachable block (ram,0x007a8c63)
// WARNING: Removing unreachable block (ram,0x007a8c76)

void FUN_007a8b44(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7a8b50;
  if (*(char *)((int)param_4 + 0x21) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00620942();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x21) == '\0') {
    if (*(char *)(param_4[2] + 0x21) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x21) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x21) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x21) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x21) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x21) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 8) != '\x01') {
LAB_007a8da7:
    if (*(char *)(param_4 + 4) != '\0') {
      *(undefined *)(param_4 + 4) = 0;
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_007a8d5b:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 8) != '\x01'))
  goto LAB_007a8da3;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 8) == '\0') {
      *(undefined *)(ppiVar4 + 8) = 1;
      *(undefined *)(ppiVar3 + 8) = 0;
      FUN_007a1dd4(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x21) == '\0') {
      if ((*(char *)(*ppiVar4 + 8) != '\x01') || (*(char *)(ppiVar4[2] + 8) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 8) == '\x01') {
          *(undefined *)(*ppiVar4 + 8) = 1;
          *(undefined *)(ppiVar4 + 8) = 0;
          FUN_00437a73(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 8) = *(undefined *)(ppiVar3 + 8);
        *(undefined *)(ppiVar3 + 8) = 1;
        *(undefined *)(ppiVar4[2] + 8) = 1;
        FUN_007a1dd4(param_1);
        goto LAB_007a8da3;
      }
LAB_007a8d52:
      *(undefined *)(ppiVar4 + 8) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 8) == '\0') {
      *(undefined *)(ppiVar4 + 8) = 1;
      *(undefined *)(ppiVar3 + 8) = 0;
      FUN_00437a73(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x21) == '\0') {
      if ((*(char *)(ppiVar4[2] + 8) == '\x01') && (*(char *)(*ppiVar4 + 8) == '\x01'))
      goto LAB_007a8d52;
      if (*(char *)(*ppiVar4 + 8) == '\x01') {
        *(undefined *)(ppiVar4[2] + 8) = 1;
        *(undefined *)(ppiVar4 + 8) = 0;
        FUN_007a1dd4(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 8) = *(undefined *)(ppiVar3 + 8);
      *(undefined *)(ppiVar3 + 8) = 1;
      *(undefined *)(*ppiVar4 + 8) = 1;
      FUN_00437a73(param_1);
LAB_007a8da3:
      *(undefined *)(ppiVar5 + 8) = 1;
      goto LAB_007a8da7;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_007a8d5b;
}



void FUN_007a8ddb(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_007a8eb2(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00620942();
    FUN_007a8b44();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_007a8e91(void)

{
  int *piVar1;
  int iVar2;
  int unaff_ESI;
  
  iVar2 = FUN_007fe5be();
  piVar1 = (int *)(unaff_ESI + 0x18);
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x21) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  return;
}



void FUN_007a8eb2(int param_1)

{
  if (*(char *)(param_1 + 0x21) == '\0') {
    FUN_007a8eb2(*(undefined4 *)(param_1 + 8));
    if (*(char *)(param_1 + 0x10) != '\0') {
      *(undefined *)(param_1 + 0x10) = 0;
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



undefined4 *
FUN_007a8eee(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined param_4)

{
  undefined4 *puVar1;
  undefined4 *unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0x24);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *unaff_EDI;
    FUN_0041b126(unaff_EDI + 1);
    puVar1[6] = unaff_EDI[3];
    puVar1[7] = unaff_EDI[4];
    *(undefined *)(puVar1 + 8) = param_4;
    *(undefined *)((int)puVar1 + 0x21) = 0;
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __fastcall
FUN_007a8f3f(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1)

{
  uint uVar1;
  ushort *puVar2;
  undefined2 *puVar3;
  int iVar4;
  uint uVar5;
  int unaff_EDI;
  
  uVar1 = *(uint *)(unaff_EDI + 0x14);
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  FUN_004220f0(uVar1);
  uVar5 = 0;
  if (uVar1 != 0) {
    do {
      puVar2 = (ushort *)FUN_004127c3(uVar5);
      puVar3 = (undefined2 *)FUN_004220c0(uVar5);
      iVar4 = _toupper((uint)*puVar2);
      uVar5 = uVar5 + 1;
      *puVar3 = (short)iVar4;
    } while (uVar5 < uVar1);
  }
  return param_1;
}



undefined4 __thiscall FUN_007a8fad(short *param_1_00,undefined4 param_1)

{
  short sVar1;
  
  do {
    sVar1 = *param_1_00;
    param_1_00 = param_1_00 + 1;
  } while (sVar1 != 0);
  FUN_004966dd();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007a8fe5(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 local_34 [11];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7a8ff1;
  FUN_004382a5(param_1);
  puVar1 = (undefined4 *)(param_1 + 0x20);
  *puVar1 = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  puVar2 = (undefined4 *)FUN_00672a11();
  if (puVar1 != puVar2) {
    local_34[0] = 0;
    local_8._0_1_ = 3;
    FUN_00475d30(local_34);
    FUN_00475d30(puVar2);
    FUN_00475d30(puVar1);
    local_8._0_1_ = 2;
    FUN_00507e58();
  }
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_00507e58();
  return param_1;
}



void * __fastcall FUN_007a905f(undefined4 param_1_00,void *param_2,void *param_1)

{
  int in_EAX;
  int iVar1;
  rsize_t _DstSize;
  
  iVar1 = in_EAX - (int)param_1 >> 2;
  _DstSize = iVar1 * 4;
  if (iVar1 != 0) {
    _memmove_s(param_2,_DstSize,param_1,_DstSize);
  }
  return (void *)(_DstSize + (int)param_2);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a9088(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_007a98b4(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_007a90d5(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *unaff_ESI;
  undefined local_c [4];
  int local_8;
  
  puVar2 = (undefined4 *)FUN_007a9088(local_c);
  if (puVar2 != unaff_ESI) {
    uVar1 = *puVar2;
    *puVar2 = *unaff_ESI;
    *unaff_ESI = uVar1;
  }
  uVar1 = unaff_ESI[1];
  unaff_ESI[1] = puVar2[1];
  puVar2[1] = uVar1;
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007a9109(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_007a996e(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_007a9156(undefined4 param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int unaff_EBX;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined local_22;
  undefined local_21;
  undefined local_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7a9162;
  puVar2 = (undefined4 *)FUN_0046de1a();
  local_2c = *puVar2;
  local_28 = puVar2[1];
  do {
    FUN_00439f82();
    cVar1 = FUN_0041c034();
    if (cVar1 == '\0') {
LAB_007a91fe:
      FUN_00a421fb();
      return;
    }
    local_21 = 0;
    FUN_007c96e9();
    FUN_0043a291(local_20);
    local_8 = 0;
    local_22 = 0;
    FUN_007c96e9();
    cVar1 = FUN_0043a323();
    if (cVar1 != '\0') {
      local_8 = 0xffffffff;
      *(undefined *)(unaff_EBX + 4) = 0;
      FUN_0043a2a6();
      goto LAB_007a91fe;
    }
    local_30 = param_1;
    FUN_00445355(&local_30,local_20);
    local_8 = 0xffffffff;
    FUN_0043a2a6();
    FUN_00439f57();
  } while( true );
}



void thunk_FUN_004964eb(void)

{
  FUN_004964eb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a920b(int param_1)

{
  int unaff_EDI;
  uint param_5;
  undefined4 param_6;
  int local_48;
  uint local_38;
  int local_2c;
  uint local_1c;
  
  FUN_0049669b();
  FUN_0049669b();
  if ((8 < local_38) && (local_48 != 0)) {
    FUN_00a3f66c(local_48);
  }
  FUN_0049669b();
  *(undefined4 *)(unaff_EDI + 0x14) = param_6;
  if ((8 < local_1c) && (local_2c != 0)) {
    FUN_00a3f66c(local_2c);
  }
  if ((8 < param_5) && (param_1 != 0)) {
    FUN_00a3f66c(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007a9296(undefined4 param_1)

{
  undefined4 param_7;
  undefined auStack_1e0 [72];
  undefined4 uStack_198;
  undefined *puStack_194;
  undefined *puStack_190;
  undefined4 local_18c [7];
  undefined4 uStack_170;
  undefined4 local_16c;
  undefined4 local_168;
  undefined4 local_164;
  undefined4 local_160;
  undefined4 local_15c;
  undefined4 local_158;
  undefined4 local_154;
  undefined4 local_150;
  undefined *local_148;
  undefined *puStack_144;
  undefined local_e8 [80];
  undefined local_98 [84];
  undefined4 local_44 [6];
  undefined *local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined **local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x120;
  local_8 = 0;
  puStack_144 = (undefined *)param_1;
  local_148 = (undefined *)0x7a92b7;
  FUN_004761aa();
  puStack_144 = (undefined *)local_18;
  local_18 = (undefined **)&local_15c;
  local_160 = 0x7a92cb;
  FUN_0049669b();
  local_160 = local_1c;
  local_164 = local_20;
  local_168 = local_24;
  local_148 = (undefined *)param_7;
  local_16c = local_28;
  uStack_170 = 0x7a92e8;
  puStack_190 = (undefined *)FUN_007a9695();
  local_18 = (undefined **)local_18c;
  local_8._0_1_ = 1;
  puStack_194 = (undefined *)0x7a92fa;
  FUN_007a962d();
  puStack_190 = local_e8;
  puStack_194 = (undefined *)0x7a9306;
  FUN_007a97a5();
  local_8._0_1_ = 3;
  puStack_144 = (undefined *)0x7a9318;
  FUN_00507e58();
  puStack_144 = (undefined *)local_18;
  local_18 = (undefined **)local_18c;
  local_18c[0] = 0;
  local_16c = 0;
  local_168 = 0;
  local_164 = 0;
  local_160 = 0;
  local_15c = 0;
  local_158 = 0;
  local_154 = 0;
  local_150 = 0;
  puStack_190 = local_98;
  puStack_194 = (undefined *)0x7a934b;
  FUN_007a97a5();
  local_8._0_1_ = 4;
  puStack_194 = local_98;
  uStack_198 = 0x7a9360;
  local_18 = &puStack_190;
  FUN_007a962d();
  local_2c = auStack_1e0;
  local_8._0_1_ = 5;
  FUN_007a962d(local_e8);
  local_8._0_1_ = 4;
  FUN_007a9727(local_44);
  local_8 = CONCAT31(local_8._1_3_,6);
  puStack_144 = (undefined *)0x7a9391;
  FUN_007a95d7();
  puStack_144 = (undefined *)0x7a9399;
  FUN_0041c3a7();
  puStack_144 = (undefined *)local_44[0];
                    // WARNING: Subroutine does not return
  local_148 = &UNK_007a93a1;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007a93dd(undefined4 param_1,undefined4 param_2)

{
  undefined4 param_8;
  undefined auStack_1dc [72];
  undefined4 uStack_194;
  undefined *puStack_190;
  undefined *puStack_18c;
  undefined4 local_188 [7];
  undefined4 uStack_16c;
  undefined4 local_168;
  undefined4 local_164;
  undefined4 local_160;
  undefined4 local_15c;
  undefined4 local_158;
  undefined4 local_154;
  undefined4 local_150;
  undefined4 local_14c;
  undefined *local_144;
  undefined *puStack_140;
  undefined local_e4 [80];
  undefined local_94 [80];
  undefined4 local_44 [6];
  undefined *local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x11c;
  local_18 = param_1;
  local_8 = 0;
  puStack_140 = (undefined *)param_2;
  local_144 = (undefined *)0x7a9402;
  FUN_00475f84();
  puStack_140 = (undefined *)local_18;
  local_14 = (undefined **)&local_158;
  local_15c = 0x7a9416;
  FUN_0049669b();
  local_15c = local_1c;
  local_160 = local_20;
  local_164 = local_24;
  local_144 = (undefined *)param_8;
  local_168 = local_28;
  uStack_16c = 0x7a9433;
  puStack_18c = (undefined *)FUN_007a9695();
  local_14 = (undefined **)local_188;
  local_8._0_1_ = 1;
  puStack_190 = (undefined *)0x7a9445;
  FUN_007a962d();
  puStack_18c = local_94;
  puStack_190 = (undefined *)0x7a9451;
  FUN_007a97a5();
  local_8._0_1_ = 3;
  puStack_140 = (undefined *)0x7a9463;
  FUN_00507e58();
  puStack_140 = (undefined *)local_14;
  local_14 = (undefined **)local_188;
  local_188[0] = 0;
  local_168 = 0;
  local_164 = 0;
  local_160 = 0;
  local_15c = 0;
  local_158 = 0;
  local_154 = 0;
  local_150 = 0;
  local_14c = 0;
  puStack_18c = local_e4;
  puStack_190 = (undefined *)0x7a9496;
  FUN_007a97a5();
  local_8._0_1_ = 4;
  puStack_190 = local_e4;
  uStack_194 = 0x7a94ab;
  local_14 = &puStack_18c;
  FUN_007a962d();
  local_2c = auStack_1dc;
  local_8._0_1_ = 5;
  FUN_007a962d(local_94);
  local_8._0_1_ = 4;
  FUN_007a97de(local_44);
  local_8 = CONCAT31(local_8._1_3_,6);
  puStack_140 = (undefined *)0x7a94df;
  FUN_007a95d7();
  puStack_140 = (undefined *)0x7a94e7;
  FUN_0041c3a7();
  puStack_140 = (undefined *)local_44[0];
                    // WARNING: Subroutine does not return
  local_144 = &UNK_007a94ef;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a952b(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 int param_5,int param_6,int param_7,int param_8)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  
  while( true ) {
    if ((param_5 == 0) || (param_5 != param_7)) {
      FUN_00a3fb10();
    }
    if (param_6 == param_8) break;
    uVar2 = param_3;
    uVar3 = param_4;
    uVar1 = FUN_006adbc2(param_3,param_4);
    FUN_006a90d6(uVar1,uVar2,uVar3);
    FUN_007a741a();
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_007a957e(void)

{
  undefined4 *puVar1;
  int unaff_EBP;
  
  while( true ) {
    if ((*(int *)(unaff_EBP + -0x18) == 0) ||
       (*(int *)(unaff_EBP + -0x18) != *(int *)(unaff_EBP + 0x18))) {
      FUN_00a3fb10();
    }
    if (*(int *)(unaff_EBP + -0x14) == *(int *)(unaff_EBP + 0x1c)) break;
    *(undefined4 *)(unaff_EBP + -0x20) = *(undefined4 *)(unaff_EBP + 0x10);
    *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + 0x14);
    puVar1 = (undefined4 *)FUN_00437ab5();
    FUN_007a1ccc(unaff_EBP + -0x28,*puVar1,puVar1[1]);
    FUN_007a741a();
  }
  __CxxThrowException_8(0,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007a95d7(int param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int unaff_EDI;
  
  puVar3 = (undefined4 *)&LAB_00c427d3;
  if (unaff_EDI != param_1) {
    FUN_005e3390(param_1);
    puVar3 = (undefined4 *)(param_1 + 0xc);
    puVar1 = (undefined4 *)(unaff_EDI + 0xc);
    if (puVar1 != puVar3) {
      uVar2 = *puVar1;
      *puVar1 = *puVar3;
      *puVar3 = uVar2;
    }
    puVar3 = (undefined4 *)(param_1 + 0x10);
    puVar1 = (undefined4 *)(unaff_EDI + 0x10);
    if (puVar1 != puVar3) {
      uVar2 = *puVar1;
      *puVar1 = *puVar3;
      *puVar3 = uVar2;
    }
    puVar3 = (undefined4 *)(param_1 + 0x14);
    puVar1 = (undefined4 *)(unaff_EDI + 0x14);
    if (puVar1 != puVar3) {
      uVar2 = *puVar1;
      *puVar1 = *puVar3;
      *puVar3 = uVar2;
    }
  }
  return puVar3;
}



void FUN_007a962d(uint *param_1)

{
  uint uVar1;
  int iVar2;
  uint *unaff_EBX;
  uint *puVar3;
  uint *puVar4;
  
  *unaff_EBX = 0;
  uVar1 = *param_1;
  if (uVar1 != 0) {
    *unaff_EBX = uVar1;
    if ((uVar1 & 1) == 0) {
      (**(code **)(uVar1 & 0xfffffffe))(param_1 + 2,unaff_EBX + 2,0);
    }
    else {
      puVar3 = param_1 + 2;
      puVar4 = unaff_EBX + 2;
      for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar4 = *puVar3;
        puVar3 = puVar3 + 1;
        puVar4 = puVar4 + 1;
      }
    }
  }
  unaff_EBX[8] = param_1[8];
  unaff_EBX[9] = param_1[9];
  unaff_EBX[10] = param_1[10];
  unaff_EBX[0xb] = param_1[0xb];
  unaff_EBX[0xc] = param_1[0xc];
  unaff_EBX[0xd] = param_1[0xd];
  unaff_EBX[0xe] = param_1[0xe];
  unaff_EBX[0xf] = param_1[0xf];
  *(undefined *)(unaff_EBX + 0x10) = *(undefined *)(param_1 + 0x10);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall
FUN_007a9695(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,int param_5)

{
  char cVar1;
  uint param_9;
  undefined4 param_10;
  undefined auStack_44 [16];
  undefined4 uStack_34;
  undefined4 *local_30;
  undefined *local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0;
  local_18 = auStack_44;
  local_14 = param_1_00;
  FUN_0049669b();
  local_30 = (undefined4 *)param_10;
  FUN_007a9cde();
  local_8 = CONCAT31(local_8._1_3_,1);
  *(undefined4 *)(param_1_00 + 0x20) = param_1;
  *(undefined4 *)(param_1_00 + 0x28) = param_1;
  *(undefined4 *)(param_1_00 + 0x24) = param_2;
  *(undefined4 *)(param_1_00 + 0x2c) = param_2;
  *(undefined4 *)(param_1_00 + 0x30) = param_1;
  *(undefined4 *)(param_1_00 + 0x38) = param_3;
  *(undefined4 *)(param_1_00 + 0x3c) = param_4;
  local_30 = &param_3;
  *(undefined4 *)(param_1_00 + 0x34) = param_2;
  *(undefined *)(param_1_00 + 0x40) = 0;
  uStack_34 = 0x7a96fd;
  cVar1 = FUN_008477d0();
  if (cVar1 != '\0') {
    local_30 = (undefined4 *)0x7a9708;
    FUN_007a9b01();
  }
  if ((8 < param_9) && (param_5 != 0)) {
    local_30 = (undefined4 *)param_5;
    uStack_34 = 0x7a971c;
    FUN_00a3f66c();
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007a9727(undefined4 param_1)

{
  undefined auStack_c8 [72];
  undefined4 uStack_80;
  undefined *puStack_7c;
  undefined auStack_78 [72];
  undefined4 uStack_30;
  undefined4 auStack_2c [5];
  undefined *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = auStack_2c;
  local_8 = 1;
  uStack_30 = 0x7a9749;
  FUN_004398d8();
  local_14 = (undefined4 *)auStack_78;
  local_8._0_1_ = 2;
  puStack_7c = &stack0x00000058;
  uStack_80 = 0x7a975e;
  FUN_007a962d();
  local_18 = auStack_c8;
  local_8._0_1_ = 3;
  FUN_007a962d(&stack0x00000008);
  local_8._0_1_ = 2;
  FUN_007a9c05(param_1,param_1);
  local_8 = (uint)local_8._1_3_ << 8;
  auStack_2c[0] = 0x7a978e;
  FUN_00507e58();
  local_8 = 0xffffffff;
  auStack_2c[0] = 0x7a979a;
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007a97a5(undefined4 param_1)

{
  FUN_007a962d(&stack0x00000008);
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007a97de(undefined4 param_1)

{
  undefined auStack_c8 [72];
  undefined4 uStack_80;
  undefined *puStack_7c;
  undefined auStack_78 [72];
  undefined4 uStack_30;
  undefined4 auStack_2c [5];
  undefined *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = auStack_2c;
  local_8 = 1;
  uStack_30 = 0x7a9800;
  FUN_004398d8();
  local_14 = (undefined4 *)auStack_78;
  local_8._0_1_ = 2;
  puStack_7c = &stack0x00000058;
  uStack_80 = 0x7a9815;
  FUN_007a962d();
  local_18 = auStack_c8;
  local_8._0_1_ = 3;
  FUN_007a962d(&stack0x00000008);
  local_8._0_1_ = 2;
  FUN_007a9d56(param_1,param_1);
  local_8 = (uint)local_8._1_3_ << 8;
  auStack_2c[0] = 0x7a9845;
  FUN_00507e58();
  local_8 = 0xffffffff;
  auStack_2c[0] = 0x7a9851;
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a985c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::signal1_impl<void,class_W133E5AC5::W76B051B4_const&,class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4_const&)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&,class_W133E5AC5::W76B051B4_const&)>,class_boost::signals2::mutex>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a98a2(void)

{
  code *pcVar1;
  
  FUN_007a79c0();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a98b4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::signal1_impl<void,class_W133E5AC5::W76B051B4_const&,class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4_const&)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&,class_W133E5AC5::W76B051B4_const&)>,class_boost::signals2::mutex>::invocation_state>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a98fa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_007a2430(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a9911(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot1<void,class_W133E5AC5::W76B051B4_const&,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4_const&)>_>,class_boost::signals2::mutex>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a9957(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007a996e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_boost::signals2::detail::grouped_list<int,struct_std::less<int>,class_boost::shared_ptr<class_boost::signals2::detail::connection_body<struct_std::pair<enum_boost::signals2::detail::slot_meta_group,class_boost::optional<int>_>,class_boost::signals2::slot1<void,class_W133E5AC5::W76B051B4_const&,class_boost::function<void___cdecl(class_W133E5AC5::W76B051B4_const&)>_>,class_boost::signals2::mutex>_>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007a99b4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_007a7148(*(undefined4 *)(unaff_EBP + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007a99d4(int param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  char cVar1;
  undefined auStack_38 [12];
  undefined4 uStack_2c;
  undefined4 *puStack_28;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined *local_8;
  
  local_8 = auStack_38;
  FUN_0049669b();
  FUN_007a9e2f(param_3,param_4,param_5,param_6);
  puStack_28 = &param_5;
  uStack_2c = 0x7a9a11;
  cVar1 = FUN_00412797();
  if (cVar1 == '\0') {
    local_c = local_14;
    local_8 = (undefined *)local_10;
    if (*(int *)(param_1 + 0x14) == 0) {
      while( true ) {
        puStack_28 = &param_5;
        uStack_2c = 0x7a9a8b;
        cVar1 = FUN_008477d0();
        if (cVar1 == '\0') break;
        puStack_28 = (undefined4 *)0x7a9a68;
        std::
        _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
        ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                     *)&local_c);
        puStack_28 = (undefined4 *)0x7a9a73;
        cVar1 = FUN_00496908();
        if (cVar1 == '\0') break;
        puStack_28 = (undefined4 *)0x7a9a7f;
        FUN_00847800();
      }
    }
    else {
      puStack_28 = (undefined4 *)0x7a9a45;
      FUN_00847800();
    }
    param_2[2] = local_c;
    *param_2 = local_14;
    param_2[1] = local_10;
    param_2[3] = local_8;
  }
  else {
    *param_2 = param_5;
    param_2[1] = param_6;
    param_2[2] = param_5;
    param_2[3] = param_6;
  }
  return;
}



void Catch_007a9adc(void)

{
  int *piVar1;
  code *pcVar2;
  int **ppiVar3;
  
  ppiVar3 = (int **)FUN_006adbc2();
  piVar1 = *ppiVar3;
  (**(code **)(*piVar1 + 8))();
  *(undefined *)(piVar1 + 1) = 0;
  (**(code **)(*piVar1 + 0xc))();
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



void FUN_007a9b01(void)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  int *unaff_ESI;
  int local_1c;
  int local_18;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  piVar1 = unaff_ESI + 0xe;
  if (*unaff_ESI == 0) {
    local_18 = unaff_ESI[0xf];
    iVar3 = *piVar1;
    local_10 = unaff_ESI[0xf];
    local_14 = iVar3;
  }
  else {
    FUN_007a9bb0(&local_1c,unaff_ESI[0xc],unaff_ESI[0xd],*piVar1,unaff_ESI[0xf]);
    iVar3 = local_1c;
  }
  local_8 = local_18;
  local_c = iVar3;
  cVar2 = FUN_00412797(piVar1);
  if (cVar2 != '\0') {
    local_c = local_14;
    local_8 = local_10;
    cVar2 = FUN_00412797(piVar1);
    if (cVar2 != '\0') {
      local_c = unaff_ESI[10];
      local_8 = unaff_ESI[0xb];
      cVar2 = FUN_00412797(piVar1);
      if (cVar2 != '\0') {
        *(undefined *)(unaff_ESI + 0x10) = 1;
      }
    }
  }
  unaff_ESI[8] = unaff_ESI[0xc];
  unaff_ESI[9] = unaff_ESI[0xd];
  unaff_ESI[0xb] = local_18;
  unaff_ESI[10] = iVar3;
  unaff_ESI[0xc] = local_14;
  unaff_ESI[0xd] = local_10;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_007a9bb0(uint *param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  undefined4 uVar1;
  uint uVar2;
  undefined4 *puVar3;
  uint *extraout_ECX;
  undefined local_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x7a9bbc;
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a();
    local_8 = 0;
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  puVar3 = (undefined4 *)
           (**(code **)((uVar2 & 0xfffffffe) + 4))
                     (local_20,param_1_00 + 2,param_2,param_3,param_4,param_5);
  *param_1 = *puVar3;
  param_1[1] = puVar3[1];
  param_1[2] = puVar3[2];
  param_1[3] = puVar3[3];
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a9c05(int param_1)

{
  undefined auStack_174 [72];
  undefined4 uStack_12c;
  undefined *puStack_128;
  undefined auStack_124 [68];
  undefined4 uStack_e0;
  undefined4 uStack_dc;
  undefined *puStack_d8;
  undefined local_c4 [80];
  undefined local_74 [80];
  undefined *local_24;
  undefined *local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb4;
  puStack_d8 = (undefined *)param_1;
  uStack_dc = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  uStack_e0 = 0x7a9c33;
  FUN_004494bc();
  puStack_d8 = &stack0x0000005c;
  uStack_dc = 0x7a9c42;
  FUN_007a962d();
  puStack_d8 = &stack0x0000000c;
  local_8._0_1_ = 3;
  uStack_dc = 0x7a9c52;
  FUN_007a962d();
  local_20 = auStack_124;
  local_8._0_1_ = 5;
  puStack_128 = local_c4;
  uStack_12c = 0x7a9c6a;
  FUN_007a962d();
  local_24 = auStack_174;
  local_8._0_1_ = 6;
  FUN_007a962d(local_74);
  local_8._0_1_ = 5;
  FUN_007a9ea4(param_1,local_1c,local_18);
  local_8._0_1_ = 4;
  puStack_d8 = (undefined *)0x7a9c9d;
  FUN_00507e58();
  local_8 = CONCAT31(local_8._1_3_,2);
  puStack_d8 = (undefined *)0x7a9cac;
  FUN_00507e58();
  local_8 = 0;
  puStack_d8 = (undefined *)0x7a9cb8;
  FUN_00507e58();
  local_8 = 0xffffffff;
  puStack_d8 = (undefined *)0x7a9cc4;
  FUN_00507e58();
  return;
}



void Catch_All_007a9ccc(void)

{
  code *pcVar1;
  
  FUN_0041c3a7();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a9cde(int param_1)

{
  undefined4 *unaff_EDI;
  uint param_5;
  undefined4 param_6;
  undefined auStack_54 [16];
  undefined4 uStack_44;
  int local_40;
  undefined *local_2c;
  int local_28;
  uint local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0;
  local_40 = 0x7a9cf9;
  FUN_0049669b();
  local_14 = param_6;
  local_2c = auStack_54;
  local_8 = CONCAT31(local_8._1_3_,1);
  *unaff_EDI = 0;
  FUN_0049669b();
  local_40 = local_14;
  FUN_007a9f8d(unaff_EDI);
  if ((8 < local_18) && (local_28 != 0)) {
    local_40 = local_28;
    uStack_44 = 0x7a9d36;
    FUN_00a3f66c();
  }
  if ((8 < param_5) && (param_1 != 0)) {
    local_40 = param_1;
    uStack_44 = 0x7a9d4b;
    FUN_00a3f66c();
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a9d56(int param_1)

{
  undefined auStack_174 [72];
  undefined4 uStack_12c;
  undefined *puStack_128;
  undefined auStack_124 [68];
  undefined4 uStack_e0;
  undefined4 uStack_dc;
  undefined *puStack_d8;
  undefined local_c4 [80];
  undefined local_74 [80];
  undefined *local_24;
  undefined *local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb4;
  puStack_d8 = (undefined *)param_1;
  uStack_dc = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  uStack_e0 = 0x7a9d84;
  FUN_004494bc();
  puStack_d8 = &stack0x0000005c;
  uStack_dc = 0x7a9d93;
  FUN_007a962d();
  puStack_d8 = &stack0x0000000c;
  local_8._0_1_ = 3;
  uStack_dc = 0x7a9da3;
  FUN_007a962d();
  local_20 = auStack_124;
  local_8._0_1_ = 5;
  puStack_128 = local_c4;
  uStack_12c = 0x7a9dbb;
  FUN_007a962d();
  local_24 = auStack_174;
  local_8._0_1_ = 6;
  FUN_007a962d(local_74);
  local_8._0_1_ = 5;
  FUN_007aa024(param_1,local_1c,local_18);
  local_8._0_1_ = 4;
  puStack_d8 = (undefined *)0x7a9dee;
  FUN_00507e58();
  local_8 = CONCAT31(local_8._1_3_,2);
  puStack_d8 = (undefined *)0x7a9dfd;
  FUN_00507e58();
  local_8 = 0;
  puStack_d8 = (undefined *)0x7a9e09;
  FUN_00507e58();
  local_8 = 0xffffffff;
  puStack_d8 = (undefined *)0x7a9e15;
  FUN_00507e58();
  return;
}



void Catch_All_007a9e1d(void)

{
  code *pcVar1;
  
  FUN_0041c3a7();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a9e2f(undefined4 param_1,int param_2,undefined4 param_3,int param_4,int param_5)

{
  char cVar1;
  undefined4 *unaff_EDI;
  uint param_9;
  int local_24;
  uint local_14;
  
  FUN_0049669b();
  for (; param_2 != param_4; param_2 = param_2 + 2) {
    cVar1 = FUN_00496908();
    if (cVar1 != '\0') break;
  }
  if ((8 < local_14) && (local_24 != 0)) {
    FUN_00a3f66c(local_24);
  }
  *unaff_EDI = param_1;
  unaff_EDI[1] = param_2;
  if ((8 < param_9) && (param_5 != 0)) {
    FUN_00a3f66c(param_5);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a9ea4(undefined4 param_1,undefined4 param_2,int param_3)

{
  char cVar1;
  undefined4 uVar2;
  int unaff_EDI;
  undefined local_40 [28];
  undefined4 local_24;
  undefined4 local_20;
  int local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 1;
  cVar1 = FUN_007aa468();
  if (cVar1 == '\0') {
    local_18 = (*(int *)(unaff_EDI + 0x10) - *(int *)(unaff_EDI + 0xc)) / 0x1c;
    local_1c = (param_3 - *(int *)(unaff_EDI + 0xc)) / 0x1c;
    while( true ) {
      cVar1 = FUN_007aa468();
      if (cVar1 != '\0') break;
      FUN_004494bc(*(undefined4 *)(unaff_EDI + 0x10),unaff_EDI);
      uVar2 = FUN_007aa12e(local_40);
      local_8._0_1_ = 2;
      FUN_0041b40a(local_24,local_20,1,uVar2);
      local_8 = CONCAT31(local_8._1_3_,1);
      FUN_00401829(1,0);
      FUN_007a9b01();
    }
    FUN_007aa10d();
    FUN_007aa10d();
    FUN_007aa10d();
  }
  local_8 = local_8 & 0xffffff00;
  FUN_00507e58();
  local_8 = 0xffffffff;
  FUN_00507e58();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007a9f8d(uint *param_1,int param_2)

{
  char cVar1;
  uint param_6;
  undefined4 param_7;
  undefined auStack_5c [20];
  undefined4 local_48;
  uint uStack_44;
  int local_30;
  uint local_20;
  undefined4 local_1c;
  uint *local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_18 = param_1;
  local_8 = 0;
  uStack_44 = 0x7a9fb1;
  FUN_0049669b();
  local_1c = param_7;
  local_8 = CONCAT31(local_8._1_3_,1);
  local_14 = (undefined *)((uint)local_14 & 0xffffff00);
  uStack_44 = (uint)local_14;
  local_14 = auStack_5c;
  FUN_0049669b();
  local_48 = local_1c;
  cVar1 = FUN_007aa2b5();
  if ((8 < local_20) && (local_30 != 0)) {
    uStack_44 = local_30;
    local_48 = 0x7a9ff5;
    FUN_00a3f66c();
  }
  *local_18 = -(uint)(cVar1 != '\0') & 0x3058618;
  if ((8 < param_6) && (param_2 != 0)) {
    uStack_44 = param_2;
    local_48 = 0x7aa01b;
    FUN_00a3f66c();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007aa024(undefined4 param_1,undefined4 param_2,int param_3)

{
  char cVar1;
  undefined4 uVar2;
  int unaff_EDI;
  undefined local_40 [28];
  undefined4 local_24;
  undefined4 local_20;
  int local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 1;
  cVar1 = FUN_007aa4eb();
  if (cVar1 == '\0') {
    local_18 = (*(int *)(unaff_EDI + 0x10) - *(int *)(unaff_EDI + 0xc)) / 0x1c;
    local_1c = (param_3 - *(int *)(unaff_EDI + 0xc)) / 0x1c;
    while( true ) {
      cVar1 = FUN_007aa4eb();
      if (cVar1 != '\0') break;
      FUN_004494bc(*(undefined4 *)(unaff_EDI + 0x10),unaff_EDI);
      uVar2 = FUN_007aa146(local_40);
      local_8._0_1_ = 2;
      FUN_0041b40a(local_24,local_20,1,uVar2);
      local_8 = CONCAT31(local_8._1_3_,1);
      FUN_00401829(1,0);
      FUN_007a9b01();
    }
    FUN_007aa10d();
    FUN_007aa10d();
    FUN_007aa10d();
  }
  local_8 = local_8 & 0xffffff00;
  FUN_00507e58();
  local_8 = 0xffffffff;
  FUN_00507e58();
  return;
}



void __fastcall FUN_007aa10d(int param_1)

{
  int in_EAX;
  
  for (; (param_1 != in_EAX && (in_EAX = in_EAX + -0x1c, param_1 != in_EAX));
      param_1 = param_1 + 0x1c) {
    FUN_0043165e(in_EAX);
  }
  return;
}



undefined4 FUN_007aa12e(undefined4 param_1)

{
  FUN_007aa22a(param_1,0);
  return param_1;
}



undefined4 FUN_007aa146(undefined4 param_1)

{
  FUN_007aa23f(param_1,0);
  return param_1;
}



void FUN_007aa15e(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007aa1b2(param_2);
    return;
  }
  *param_2 = &boost::algorithm::detail::
              token_finderF<struct_boost::algorithm::detail::is_any_ofF<wchar_t>_>::
              RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



undefined4
FUN_007aa18e(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  FUN_007a99d4(param_2,param_1,param_3,param_4,param_5,param_6);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007aa1b2(TypeDescriptor **param_1)

{
  bool bVar1;
  uint unaff_EBX;
  int unaff_EDI;
  
  if ((unaff_EDI == 0) || (unaff_EDI == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      FUN_0049669b();
      param_1[5] = *(TypeDescriptor **)(unaff_EBX + 0x14);
    }
    if (unaff_EDI != 1) {
      return;
    }
  }
  else if (unaff_EDI != 2) {
    if (unaff_EDI == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::algorithm::detail::
                          token_finderF<struct_boost::algorithm::detail::is_any_ofF<wchar_t>_>::
                          RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & unaff_EBX);
      return;
    }
    *param_1 = &boost::algorithm::detail::
                token_finderF<struct_boost::algorithm::detail::is_any_ofF<wchar_t>_>::
                RTTI_Type_Descriptor;
    *(undefined *)(param_1 + 1) = 0;
    *(undefined *)((int)param_1 + 5) = 0;
    return;
  }
  FUN_004964eb();
  return;
}



undefined4 FUN_007aa22a(undefined4 param_1)

{
  FUN_007aa254(param_1);
  return param_1;
}



undefined4 FUN_007aa23f(undefined4 param_1)

{
  FUN_007aa26e(param_1);
  return param_1;
}



undefined4 FUN_007aa254(undefined4 param_1)

{
  FUN_007aa288(0);
  return param_1;
}



undefined4 FUN_007aa26e(undefined4 param_1)

{
  FUN_007aa29d(param_1);
  return param_1;
}



undefined4 __fastcall FUN_007aa288(undefined4 param_1)

{
  FUN_007aa331();
  return param_1;
}



undefined4 FUN_007aa29d(undefined4 param_1)

{
  FUN_007aa374(param_1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007aa2b5(int param_1)

{
  char cVar1;
  undefined4 uVar2;
  uint param_5;
  undefined4 param_6;
  undefined auStack_40 [20];
  undefined4 local_2c;
  undefined4 *puStack_28;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  puStack_28 = &param_1;
  local_2c = 0x7aa2ce;
  cVar1 = FUN_007f2630();
  if (cVar1 == '\0') {
    local_14 = (undefined *)((uint)local_14 & 0xffffff00);
    puStack_28 = (undefined4 *)local_14;
    local_14 = auStack_40;
    FUN_0049669b();
    local_2c = param_6;
    FUN_007aa394();
    if ((8 < param_5) && (param_1 != 0)) {
      puStack_28 = (undefined4 *)param_1;
      local_2c = 0x7aa30d;
      FUN_00a3f66c();
    }
    uVar2 = 1;
  }
  else {
    if ((8 < param_5) && (param_1 != 0)) {
      puStack_28 = (undefined4 *)param_1;
      local_2c = 0x7aa326;
      FUN_00a3f66c();
    }
    uVar2 = 0;
  }
  return uVar2;
}



void FUN_007aa331(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 *in_EAX;
  int unaff_ESI;
  
  uVar1 = *in_EAX;
  uVar2 = in_EAX[3];
  uVar3 = in_EAX[2];
  uVar4 = in_EAX[1];
  *(undefined4 *)(unaff_ESI + 0x18) = 7;
  FUN_0040180b(0);
  FUN_007aa3df(unaff_ESI,uVar4,uVar1,uVar4,uVar3,uVar2);
  return;
}



undefined4 FUN_007aa374(undefined4 param_1)

{
  undefined4 *in_EAX;
  
  FUN_00427fd0(*in_EAX,in_EAX[1],in_EAX[2],in_EAX[3]);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall FUN_007aa394(int param_1_00,int param_1)

{
  undefined *puVar1;
  uint param_5;
  undefined *param_6;
  
  puVar1 = &LAB_00c14b76;
  if (param_1_00 != 0) {
    FUN_0049669b();
    *(undefined **)(param_1_00 + 0x14) = param_6;
    puVar1 = param_6;
  }
  if ((8 < param_5) && (param_1 != 0)) {
    puVar1 = (undefined *)FUN_00a3f66c(param_1);
  }
  return puVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007aa3df(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  char cVar1;
  uint uVar2;
  wchar_t *pwVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7aa3eb;
  local_1c = param_3;
  local_18 = param_4;
  uVar2 = FUN_004125d9(&local_1c);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
            (param_1,uVar2);
  local_8 = 0;
  while( true ) {
    cVar1 = FUN_008477d0(&param_5);
    if (cVar1 == '\0') break;
    pwVar3 = std::
             _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                          *)&param_3);
    FID_conflict_append(1,*pwVar3);
    FUN_00847800();
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_007aa44c(void)

{
  FUN_00401829(1,0);
  __CxxThrowException_8(0,0);
  return;
}



bool FUN_007aa468(void)

{
  int *in_EAX;
  char cVar1;
  char cVar2;
  int *unaff_ESI;
  
  if ((*unaff_ESI == 0) || (*(char *)(unaff_ESI + 0x10) != '\0')) {
    cVar2 = '\x01';
  }
  else {
    cVar2 = '\0';
  }
  if ((*in_EAX == 0) || (*(char *)(in_EAX + 0x10) != '\0')) {
    cVar1 = '\x01';
  }
  else {
    cVar1 = '\0';
  }
  if ((cVar2 == '\0') && (cVar1 == '\0')) {
    cVar2 = FUN_007aa56e(unaff_ESI[8],unaff_ESI[9],unaff_ESI[10],unaff_ESI[0xb],in_EAX[8],in_EAX[9],
                         in_EAX[10],in_EAX[0xb]);
    if (cVar2 != '\0') {
      cVar2 = FUN_00412797(in_EAX + 0xc);
      if (cVar2 != '\0') {
        cVar2 = FUN_00412797(in_EAX + 0xe);
        if (cVar2 != '\0') {
          return true;
        }
      }
    }
    return false;
  }
  return cVar2 == cVar1;
}



bool FUN_007aa4eb(void)

{
  int *in_EAX;
  char cVar1;
  char cVar2;
  int *unaff_ESI;
  
  if ((*unaff_ESI == 0) || (*(char *)(unaff_ESI + 0x10) != '\0')) {
    cVar2 = '\x01';
  }
  else {
    cVar2 = '\0';
  }
  if ((*in_EAX == 0) || (*(char *)(in_EAX + 0x10) != '\0')) {
    cVar1 = '\x01';
  }
  else {
    cVar1 = '\0';
  }
  if ((cVar2 == '\0') && (cVar1 == '\0')) {
    cVar2 = FUN_007aa5f5(unaff_ESI[8],unaff_ESI[9],unaff_ESI[10],unaff_ESI[0xb],in_EAX[8],in_EAX[9],
                         in_EAX[10],in_EAX[0xb]);
    if (cVar2 != '\0') {
      cVar2 = FUN_00412797(in_EAX + 0xc);
      if (cVar2 != '\0') {
        cVar2 = FUN_00412797(in_EAX + 0xe);
        if (cVar2 != '\0') {
          return true;
        }
      }
    }
    return false;
  }
  return cVar2 == cVar1;
}



undefined4
FUN_007aa56e(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  char cVar1;
  int iVar2;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  local_18 = param_6;
  local_c = param_3;
  local_14 = param_1;
  local_8 = param_4;
  local_1c = param_5;
  local_10 = param_2;
  local_8 = FUN_004125d9(&local_14);
  iVar2 = FUN_004125d9(&local_1c);
  if ((local_8 == iVar2) &&
     (cVar1 = FUN_007aa672(local_14,local_10,param_3,param_4,param_5,local_18), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4
FUN_007aa5f5(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  char cVar1;
  int iVar2;
  int iVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  local_c = param_3;
  local_8 = param_4;
  local_14 = param_1;
  local_10 = param_2;
  local_1c = param_5;
  local_18 = param_6;
  iVar2 = FUN_004125d9(&local_14);
  iVar3 = FUN_004125d9(&local_1c);
  if ((iVar2 == iVar3) &&
     (cVar1 = FUN_007aa6c2(local_14,local_10,local_c,local_8,param_5,param_6), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



undefined4
FUN_007aa672(undefined4 param_1,short *param_2,undefined4 param_3,short *param_4,undefined4 param_5,
            int param_6)

{
  undefined local_14 [8];
  undefined4 local_c;
  int local_8;
  
  local_c = param_5;
  local_8 = param_6;
  FUN_00422680(local_14,(int)param_4 - (int)param_2 >> 1);
  if (param_2 != param_4) {
    param_6 = param_6 - (int)param_2;
    do {
      if (*param_2 != *(short *)(param_6 + (int)param_2)) {
        return 0;
      }
      param_2 = param_2 + 1;
    } while (param_2 != param_4);
  }
  return 1;
}



undefined4
FUN_007aa6c2(undefined4 param_1,short *param_2,undefined4 param_3,short *param_4,undefined4 param_5,
            int param_6)

{
  undefined local_14 [8];
  undefined4 local_c;
  int local_8;
  
  local_c = param_5;
  local_8 = param_6;
  FUN_007aa712(local_14,(int)param_4 - (int)param_2 >> 1);
  if (param_2 != param_4) {
    param_6 = param_6 - (int)param_2;
    do {
      if (*param_2 != *(short *)(param_6 + (int)param_2)) {
        return 0;
      }
      param_2 = param_2 + 1;
    } while (param_2 != param_4);
  }
  return 1;
}



undefined4 * FUN_007aa712(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)FUN_004226c0(param_2);
  uVar1 = *puVar2;
  param_1[1] = puVar2[1];
  *param_1 = uVar1;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007aa740(void)

{
  char cVar1;
  byte bVar2;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_EBX;
  int unaff_ESI;
  int iVar3;
  
  iVar3 = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_EBX);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             unaff_EBX,0x24);
  if (unaff_ESI != unaff_ESI + 0x10) {
    do {
      bVar2 = *(byte *)(iVar3 + unaff_ESI) >> 4;
      if (bVar2 < 10) {
        cVar1 = bVar2 + 0x30;
      }
      else {
        cVar1 = bVar2 + 0x57;
      }
      FID_conflict_append(1,cVar1);
      bVar2 = *(byte *)(iVar3 + unaff_ESI) & 0xf;
      if (bVar2 < 10) {
        cVar1 = bVar2 + 0x30;
      }
      else {
        cVar1 = bVar2 + 0x57;
      }
      FID_conflict_append(1,cVar1);
      if ((((iVar3 == 3) || (iVar3 == 5)) || (iVar3 == 7)) || (iVar3 == 9)) {
        FID_conflict_append(1,0x2d);
      }
      iVar3 = iVar3 + 1;
    } while (iVar3 + unaff_ESI != unaff_ESI + 0x10);
  }
  return;
}



void FUN_007aa7e9(undefined4 *param_1)

{
  int iVar1;
  
  iVar1 = FUN_006badde();
  *param_1 = *(undefined4 *)(iVar1 + 0x1c);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 0x20);
}



undefined4 FUN_007aa80f(undefined4 param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_006badde();
  basic_string<>(uVar1);
  return param_1;
}



void FUN_007aa831(void)

{
  FUN_004ce757();
  return;
}



void __fastcall FUN_007aa83c(int param_1)

{
  undefined4 uVar1;
  
  uVar1 = *(undefined4 *)(*(undefined4 **)(param_1 + 4))[6];
  *(undefined4 *)(param_1 + 8) = **(undefined4 **)(param_1 + 4);
  *(undefined4 *)(param_1 + 0xc) = uVar1;
  return;
}



bool FUN_007aa84d(void)

{
  char cVar1;
  
  cVar1 = FUN_006b8eca();
  return cVar1 == '\0';
}



undefined4 __thiscall FUN_007aa87a(undefined4 param_1_00,byte param_1)

{
  FUN_00b6747c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_007aa98c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7aa9a4;
  FUN_007aadaf();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007aa9ab;
  FUN_00a3f6a1();
}



int FUN_007aa89b(int param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int local_50;
  undefined4 local_48 [10];
  undefined4 local_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c294e0;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_14;
  FUN_007aad31(param_2);
  local_48[0] = *(undefined4 *)(param_1 + 0x18);
  cVar1 = FUN_006b8eca(uVar2);
  if (cVar1 == '\0') {
    cVar1 = FUN_00412a58(param_2,local_50 + 0xc);
    if (cVar1 == '\0') {
      iVar3 = FUN_006badde();
      ExceptionList = local_14;
      return iVar3 + 0x1c;
    }
  }
  local_48[0] = 0;
  local_c = 0;
  basic_string<>(param_2);
  local_20 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_48);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007aa98c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7aa9a4;
  FUN_007aadaf();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007aa9ab;
  FUN_00a3f6a1();
}



int FUN_007aa9b4(undefined4 param_1,int param_2)

{
  char cVar1;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined local_14 [16];
  
  FUN_007ab143(param_1,param_2);
  param_2 = 0;
  while( true ) {
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') break;
    param_2 = param_2 + 1;
    FUN_004ce757();
  }
  FUN_007aac96(local_14,local_24,local_20,local_1c,local_18);
  return param_2;
}



void FUN_007aaa23(void)

{
  int *piVar1;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EDI + 0x18);
  FUN_007aad74(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(unaff_EDI + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



void FUN_007aaa47(undefined4 *param_1,undefined4 *param_2,undefined4 param_3)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  int local_c;
  
  puVar3 = &local_10;
  FUN_007aad31(param_3);
  local_14 = param_1[6];
  local_18 = *param_1;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (cVar2 = FUN_00412a58(param_3,local_c + 0xc), cVar2 != '\0')) {
    local_14 = param_1[6];
    local_18 = *param_1;
    puVar3 = &local_18;
  }
  uVar1 = puVar3[1];
  *param_2 = *puVar3;
  param_2[1] = uVar1;
  return;
}



void FUN_007aaab5(void)

{
  int *in_EAX;
  
  if (*in_EAX != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*in_EAX);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007aaac3(int param_1)

{
  if (*(int *)(param_1 + 0x20) != 0) {
    FUN_0040127a();
  }
  FUN_00401829(1,0);
  return;
}



undefined4 * FUN_007aaaf5(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 != '\0') {
        cVar1 = FUN_00412a58(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_007aac74;
        uVar4 = 0;
        goto LAB_007aab17;
      }
      cVar1 = FUN_00412a58(param_2,param_4 + 0xc);
      if (cVar1 == '\0') {
LAB_007aac04:
        cVar1 = FUN_00412a58(param_4 + 0xc,param_2);
        if (cVar1 == '\0') {
LAB_007aac74:
          puVar3 = (undefined4 *)FUN_007aade3(in_EAX,param_2);
          *param_1 = *puVar3;
          param_1[1] = puVar3[1];
          return param_1;
        }
        FUN_004ce757();
        cVar1 = FUN_006b8eca();
        if ((cVar1 == '\0') && (cVar1 = FUN_00412a58(param_2,param_4 + 0xc), cVar1 == '\0'))
        goto LAB_007aac74;
        if (*(char *)(*(int *)(param_4 + 8) + 0x31) == '\0') {
          uVar4 = 1;
          goto LAB_007aab17;
        }
      }
      else {
        iVar2 = FUN_007ab333();
        cVar1 = FUN_00412a58(*(int *)(iVar2 + 4) + 0xc,param_2);
        if (cVar1 == '\0') goto LAB_007aac04;
        if (*(char *)(*(int *)(param_4 + 8) + 0x31) == '\0') {
          uVar4 = 1;
          goto LAB_007aab17;
        }
      }
      uVar4 = 0;
      goto LAB_007aab17;
    }
    cVar1 = FUN_00412a58(param_2,param_4 + 0xc);
    if (cVar1 == '\0') goto LAB_007aac74;
  }
  uVar4 = 1;
LAB_007aab17:
  FUN_007ab1e6(param_1,uVar4,param_2);
  return param_1;
}



void FUN_007aac96(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_007aaa23();
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_004ce757();
    FUN_007aaead();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_007aad31(undefined4 param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  undefined4 *unaff_EDI;
  undefined4 *local_8;
  
  puVar1 = (undefined4 *)((undefined4 *)unaff_EDI[6])[1];
  local_8 = (undefined4 *)unaff_EDI[6];
  while (puVar3 = puVar1, *(char *)((int)puVar3 + 0x31) == '\0') {
    cVar2 = FUN_00412a58(puVar3 + 3,param_1);
    if (cVar2 == '\0') {
      puVar1 = (undefined4 *)*puVar3;
      local_8 = puVar3;
    }
    else {
      puVar1 = (undefined4 *)puVar3[2];
    }
  }
  unaff_EBX[1] = local_8;
  *unaff_EBX = *unaff_EDI;
  return;
}



void FUN_007aad74(int param_1)

{
  if (*(char *)(param_1 + 0x31) == '\0') {
    FUN_007aad74(*(undefined4 *)(param_1 + 8));
    FUN_007aaac3(param_1 + 0xc);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_007aadaf(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_007aac96(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_007aade3(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  puVar2 = (undefined4 *)local_8[1];
  local_c = CONCAT31(local_c._1_3_,1);
  while (*(char *)((int)puVar2 + 0x31) == '\0') {
    local_8 = puVar2;
    cVar1 = FUN_00412a58(param_2,puVar2 + 3);
    local_c = CONCAT31(local_c._1_3_,cVar1);
    if (cVar1 == '\0') {
      puVar2 = (undefined4 *)puVar2[2];
    }
    else {
      puVar2 = (undefined4 *)*puVar2;
    }
  }
  local_14 = *param_1;
  local_10 = local_8;
  if ((char)local_c != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007aae55;
    }
    FUN_007ab333();
  }
  puVar2 = local_10;
  cVar1 = FUN_00412a58(local_10 + 3,param_2);
  uVar3 = local_c;
  if (cVar1 == '\0') {
    *unaff_EBX = local_14;
    unaff_EBX[1] = puVar2;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007aae55:
  puVar2 = (undefined4 *)FUN_007ab1e6(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007aaf98)
// WARNING: Removing unreachable block (ram,0x007aafa8)
// WARNING: Removing unreachable block (ram,0x007aafb1)
// WARNING: Removing unreachable block (ram,0x007aafb4)
// WARNING: Removing unreachable block (ram,0x007aafa4)
// WARNING: Removing unreachable block (ram,0x007aafc1)
// WARNING: Removing unreachable block (ram,0x007aafd1)
// WARNING: Removing unreachable block (ram,0x007aafdc)
// WARNING: Removing unreachable block (ram,0x007aafd8)
// WARNING: Removing unreachable block (ram,0x007aafcc)
// WARNING: Removing unreachable block (ram,0x007aafdf)

void FUN_007aaead(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7aaeb9;
  if (*(char *)((int)param_4 + 0x31) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_004ce757();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x31) == '\0') {
    if (*(char *)(param_4[2] + 0x31) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x31) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x31) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x31) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x31) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x31) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0xc) != '\x01') {
LAB_007ab110:
    FUN_007aaac3(param_4 + 3);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_007ab0c4:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xc) != '\x01'))
  goto LAB_007ab10c;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0xc) == '\0') {
      *(undefined *)(ppiVar4 + 0xc) = 1;
      *(undefined *)(ppiVar3 + 0xc) = 0;
      FUN_004cea3a(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x31) == '\0') {
      if ((*(char *)(*ppiVar4 + 0xc) != '\x01') || (*(char *)(ppiVar4[2] + 0xc) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0xc) == '\x01') {
          *(undefined *)(*ppiVar4 + 0xc) = 1;
          *(undefined *)(ppiVar4 + 0xc) = 0;
          FUN_007ab394(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0xc) = *(undefined *)(ppiVar3 + 0xc);
        *(undefined *)(ppiVar3 + 0xc) = 1;
        *(undefined *)(ppiVar4[2] + 0xc) = 1;
        FUN_004cea3a(param_1);
        goto LAB_007ab10c;
      }
LAB_007ab0bb:
      *(undefined *)(ppiVar4 + 0xc) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0xc) == '\0') {
      *(undefined *)(ppiVar4 + 0xc) = 1;
      *(undefined *)(ppiVar3 + 0xc) = 0;
      FUN_007ab394(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x31) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0xc) == '\x01') && (*(char *)(*ppiVar4 + 0xc) == '\x01'))
      goto LAB_007ab0bb;
      if (*(char *)(*ppiVar4 + 0xc) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0xc) = 1;
        *(undefined *)(ppiVar4 + 0xc) = 0;
        FUN_004cea3a(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0xc) = *(undefined *)(ppiVar3 + 0xc);
      *(undefined *)(ppiVar3 + 0xc) = 1;
      *(undefined *)(*ppiVar4 + 0xc) = 1;
      FUN_007ab394(param_1);
LAB_007ab10c:
      *(undefined *)(ppiVar5 + 0xc) = 1;
      goto LAB_007ab110;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_007ab0c4;
}



void FUN_007ab143(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 *unaff_EDI;
  undefined4 *local_8;
  
  puVar3 = (undefined4 *)param_1[6];
  puVar5 = (undefined4 *)puVar3[1];
  local_8 = puVar3;
  while (puVar4 = puVar5, *(char *)((int)puVar4 + 0x31) == '\0') {
    cVar2 = FUN_00412a58(puVar4 + 3,param_2);
    if (cVar2 == '\0') {
      if (*(char *)((int)puVar3 + 0x31) != '\0') {
        cVar2 = FUN_00412a58(param_2,puVar4 + 3);
        if (cVar2 != '\0') {
          puVar3 = puVar4;
        }
      }
      puVar5 = (undefined4 *)*puVar4;
      local_8 = puVar4;
    }
    else {
      puVar5 = (undefined4 *)puVar4[2];
    }
  }
  if (*(char *)((int)puVar3 + 0x31) == '\0') {
    puVar5 = (undefined4 *)*puVar3;
  }
  else {
    puVar5 = *(undefined4 **)(param_1[6] + 4);
  }
  while (*(char *)((int)puVar5 + 0x31) == '\0') {
    cVar2 = FUN_00412a58(param_2,puVar5 + 3);
    if (cVar2 == '\0') {
      puVar5 = (undefined4 *)puVar5[2];
    }
    else {
      puVar3 = puVar5;
      puVar5 = (undefined4 *)*puVar5;
    }
  }
  uVar1 = *param_1;
  *unaff_EDI = uVar1;
  unaff_EDI[2] = uVar1;
  unaff_EDI[3] = puVar3;
  unaff_EDI[1] = local_8;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007ab1e6(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7ab1f2;
  if (0x71c71c5 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_007ab3d6(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_007ab30b;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_007ab30b;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_007ab30b:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xc) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x30) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xc) == '\0') {
LAB_007ab2c7:
        *(undefined *)(piVar1 + 0xc) = 1;
        *(undefined *)(piVar7 + 0xc) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x30) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_004cea3a(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x30) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x30) = 0;
        FUN_007ab394(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xc) == '\0') goto LAB_007ab2c7;
    if (piVar8 == (int *)*piVar1) {
      FUN_007ab394(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x30) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x30) = 0;
    FUN_004cea3a(unaff_ESI);
  } while( true );
}



void FUN_007ab333(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x31) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x31) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x31) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x31) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x31) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x31) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



void __thiscall FUN_007ab394(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x31) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall
FUN_007ab3d6(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x34);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    basic_string<>(param_1_00);
    puVar1[10] = *(undefined4 *)(param_1_00 + 0x1c);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1_00 + 0x20);
  }
  return 0;
}



void Catch_All_007ab440(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void FUN_007ab453(void)

{
  FUN_007aa87a();
  return;
}



undefined4 __thiscall FUN_007ab45b(undefined4 param_1_00,byte param_1)

{
  FUN_00b9f36b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007ab9f4(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W7D821358::WCFFFAB28::vftable;
    FUN_004382a5(puVar2 + 1);
    *puVar2 = W7D821358::W81258EE3::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007ae9ba(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007aba74(undefined4 param_1,undefined4 param_2)

{
  undefined local_34 [24];
  undefined4 local_1c;
  void *local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7aba80;
  local_14 = 0;
  local_18 = operator_new(0x3c);
  local_8 = 0;
  if (local_18 != (void *)0x0) {
    local_1c = 7;
    FUN_0040180b(0);
    local_8 = CONCAT31(local_8._1_3_,1);
    local_14 = 1;
    FUN_007aeb6c(local_18,param_2,local_34);
  }
  local_8 = 2;
  FUN_007ae96d(param_1);
  if ((local_14 & 1) != 0) {
    local_14 = local_14 | 2;
    FUN_00401829(1,0);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007abaf6(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x3c);
  if (pvVar1 != (void *)0x0) {
    FUN_007aeb6c(pvVar1,param_2,param_3);
  }
  FUN_007ae96d(param_1);
  return param_1;
}



void FUN_007abb40(void)

{
  int in_EAX;
  
  if (*(int *)(in_EAX + 4) != 0) {
    FUN_0040127a();
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007abb4d(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W7D821358::WBCAE5B7D::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007aea79(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_007abbb4(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7abbc0;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_03058780,3);
  local_8 = 0;
  local_18 = 0xfe017dec;
  local_14 = 0xa84ffa84;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_007abc05(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7abc11;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_03058788,5);
  local_8 = 0;
  local_18 = 0xaedde96d;
  local_14 = 0x96ef9bde;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_007abc56(undefined4 param_1)

{
  undefined4 uVar1;
  undefined *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7abc62;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_03058794,3);
  local_8 = 0;
  local_18 = &DAT_00f28be3;
  local_14 = 0x208fffe1;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_007abca7(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7abcb3;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_0305879c,3);
  local_8 = 0;
  local_18 = 0x80e980bc;
  local_14 = 0xb1c4e6dd;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_007abd49(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7abd55;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_030587ac,7);
  local_8 = 0;
  local_18 = 0xfb7b3219;
  local_14 = 0x2ad7a185;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



undefined4 __thiscall FUN_007abea2(undefined4 param_1_00,byte param_1)

{
  FUN_004929bd(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007abebf(void)

{
  undefined4 *puVar1;
  int in_EAX;
  undefined4 *unaff_ESI;
  
  puVar1 = *(undefined4 **)(in_EAX + 0x34);
  *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007abed5(int param_1,undefined4 param_2,int param_3)

{
  FUN_005d11c9(*(undefined4 *)(param_1 + 0x34));
  if (param_3 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007abf0b(undefined4 param_1,undefined4 *param_2,int param_3)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined *local_cc;
  undefined4 *puStack_c8;
  undefined local_b4 [28];
  undefined local_98 [16];
  undefined local_88 [8];
  undefined local_80 [24];
  undefined4 local_68;
  undefined local_64 [24];
  undefined4 local_4c;
  undefined local_48 [24];
  undefined4 local_30;
  undefined local_2c [4];
  undefined4 local_28;
  undefined local_24 [4];
  undefined4 local_20;
  undefined **local_1c;
  undefined4 local_18;
  undefined local_14 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa4;
  local_8 = 0x7abf1a;
  puStack_c8 = &local_18;
  local_28 = 0;
  local_cc = (undefined *)0x7abf28;
  FUN_007ab9f4();
  local_8 = 1;
  if (*(int *)(param_3 + 0x14) == 0) {
    *param_2 = local_18;
    puStack_c8 = (undefined4 *)local_14;
                    // WARNING: Subroutine does not return
    local_cc = &UNK_007ac15d;
    FUN_0043c023();
  }
  puStack_c8 = (undefined4 *)local_24;
  local_cc = local_2c;
  cVar1 = FUN_0046be9b(0);
  puStack_c8 = (undefined4 *)0x0;
  if (cVar1 != '\0') {
    local_30 = 7;
    local_cc = (undefined *)0x7abf6c;
    FUN_0040180b();
    puStack_c8 = (undefined4 *)0x0;
    local_68 = 7;
    local_cc = (undefined *)0x7abf78;
    FUN_0040180b();
    puStack_c8 = (undefined4 *)0x0;
    local_4c = 7;
    local_cc = (undefined *)0x7abf84;
    FUN_0040180b();
    local_8._0_1_ = 4;
    puStack_c8 = (undefined4 *)local_20;
    local_cc = (undefined *)0x0;
    uVar2 = FUN_0041b008(local_b4);
    puStack_c8 = (undefined4 *)local_48;
    local_cc = local_80;
    local_8._0_1_ = 5;
    puVar3 = (undefined4 *)FUN_0044c183(local_88,uVar2,local_64);
    local_1c = &local_cc;
    local_8 = CONCAT31(local_8._1_3_,6);
    local_cc = (undefined *)*puVar3;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar3 + 1);
  }
  local_4c = 7;
  local_cc = (undefined *)0x7ac083;
  FUN_0040180b();
  puStack_c8 = (undefined4 *)0x0;
  local_68 = 7;
  local_cc = (undefined *)0x7ac08f;
  FUN_0040180b();
  puStack_c8 = (undefined4 *)0x0;
  local_30 = 7;
  local_cc = (undefined *)0x7ac09b;
  FUN_0040180b();
  puStack_c8 = (undefined4 *)0xffffffff;
  local_cc = (undefined *)0x0;
  local_8._0_1_ = 10;
  uVar2 = FUN_0041b008(local_b4);
  puStack_c8 = (undefined4 *)local_64;
  local_cc = local_80;
  local_8._0_1_ = 0xb;
  puVar3 = (undefined4 *)FUN_0044c183(local_98,uVar2,local_48);
  local_1c = &local_cc;
  local_8 = CONCAT31(local_8._1_3_,0xc);
  local_cc = (undefined *)*puVar3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar3 + 1);
}



undefined4 FUN_007ac198(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_007ae8a5(&stack0x00000004);
  return *puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007ac1ae(int param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 local_98 [2];
  undefined4 local_90;
  undefined4 local_8c;
  undefined4 local_88;
  undefined4 local_84;
  undefined *local_80;
  undefined *local_7c;
  undefined4 *local_28;
  undefined4 *local_24;
  undefined4 *local_20;
  undefined **local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x58;
  local_18 = 0;
  local_8 = 1;
  if (*(char *)(param_1 + 0x30) != '\0') {
    local_1c = &local_80;
    local_80 = (undefined *)0x0;
    local_7c = (undefined *)0x0;
    local_20 = &local_88;
    local_88 = 0;
    local_84 = 0;
    local_24 = &local_90;
    local_90 = 0;
    local_8c = 0;
    local_28 = local_98;
    local_98[0] = param_4;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&stack0x00000014);
  }
  *param_2 = param_4;
  local_7c = &stack0x00000014;
                    // WARNING: Subroutine does not return
  local_80 = &UNK_007ac28e;
  FUN_0043c023();
}



void __thiscall FUN_007ac2aa(int param_1_00,int param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 unaff_ESI;
  undefined4 uStack_90;
  undefined *puStack_8c;
  undefined *puStack_88;
  undefined4 local_84;
  undefined4 local_80;
  uint uStack_7c;
  undefined4 *local_6c;
  int local_68;
  char cStack_48;
  undefined auStack_44 [8];
  undefined local_3c [28];
  void *pvStack_20;
  uint local_1c;
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c427ab;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&local_6c;
  uStack_7c = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_14;
  *(undefined *)(param_1_00 + 0xc) = 0;
  local_80 = 0x7ac2f9;
  local_68 = param_1_00;
  puVar1 = (undefined4 *)FUN_00492da1();
  local_c = 0;
  local_6c = &local_84;
  local_80 = *(undefined4 *)(param_1 + 0x28);
  local_84 = *(undefined4 *)(param_1 + 0x24);
  puStack_88 = local_3c;
  puStack_8c = (undefined *)0x7ac31f;
  (***(code ***)*puVar1)();
  uStack_18 = 2;
  if (local_68 != 0) {
    puStack_8c = (undefined *)0x7ac331;
    FUN_0040127a();
  }
  if ((-(uint)(cStack_48 != '\0') & 0x6a1cd8) != 0) {
    puStack_8c = auStack_44;
    uStack_90 = 0x7ac34f;
    uVar2 = FUN_007ae781();
    uStack_18 = 3;
    FUN_007abf0b(unaff_ESI,&uStack_90,uVar2,param_1);
    FUN_007abed5(unaff_ESI);
    puStack_8c = (undefined *)0x0;
    uStack_90 = 1;
    FUN_00401829();
    if (cStack_48 != '\0') {
      puStack_8c = (undefined *)0x0;
      uStack_90 = 1;
      FUN_00401829();
    }
    ExceptionList = pvStack_20;
    uStack_7c = 0x7ac3ea;
    ___security_check_cookie_4();
    return;
  }
  puStack_8c = &stack0xffffff8c;
  uStack_90 = 0x7ac389;
  puVar1 = (undefined4 *)FUN_007abb4d();
  uStack_18 = 4;
  uStack_90 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void __thiscall FUN_007ac3f0(int param_1_00,int param_1)

{
  int iVar1;
  undefined4 local_120;
  int local_98;
  undefined2 auStack_68 [40];
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c540ad;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  *(undefined *)(param_1_00 + 0xc) = 0;
  FUN_0040c8aa();
  local_c = 0;
  FUN_0040c559();
  FUN_00468655();
  local_c = CONCAT31(local_c._1_3_,1);
  if ((-(uint)((char)local_120 != '\0') & 0x6a1cd8) != 0) {
    *(undefined2 *)((int)auStack_68 + *(int *)(local_98 + 4)) = local_120._2_2_;
  }
  if (*(int *)(param_1 + 0x18) != 0) {
    FUN_00823cac();
    FUN_00415f60();
  }
  FUN_00469622();
  FUN_0040180b();
  FUN_0040180b();
  FUN_0040180b();
  uStack_18 = 4;
  FUN_0040c93e();
  uStack_18 = 5;
  iVar1 = FUN_0044c183(&stack0xfffffed8);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void __thiscall FUN_007ac5ee(int param_1_00,int param_1)

{
  int *piVar1;
  int iVar2;
  undefined auStack_124 [4];
  int local_120;
  undefined4 uStack_104;
  undefined4 uStack_e8;
  undefined4 uStack_cc;
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c54034;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  *(undefined *)(param_1_00 + 0xc) = 0;
  local_120 = param_1_00;
  FUN_0040c8aa();
  local_c = 0;
  FUN_0040c559();
  if (*(int *)(param_1 + 0x18) != 0) {
    FUN_00823cac();
    piVar1 = (int *)FUN_00415f60();
    *(undefined2 *)((int)piVar1 + *(int *)(*piVar1 + 4) + 0x30) = 0x30;
  }
  FUN_00469701();
  uStack_e8 = 7;
  FUN_0040180b();
  uStack_cc = 7;
  FUN_0040180b();
  uStack_104 = 7;
  FUN_0040180b();
  uStack_18 = 3;
  FUN_0040c93e();
  uStack_18 = 4;
  iVar2 = FUN_0044c183(auStack_124);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar2 + 4);
}



void __thiscall FUN_007ac7b7(int param_1_00,int param_1)

{
  int *piVar1;
  int iVar2;
  undefined auStack_124 [4];
  int local_120;
  undefined4 uStack_104;
  undefined4 uStack_e8;
  undefined4 uStack_cc;
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c54034;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  *(undefined *)(param_1_00 + 0xc) = 0;
  local_120 = param_1_00;
  FUN_0040c8aa();
  local_c = 0;
  FUN_0040c559();
  if (*(int *)(param_1 + 0x18) != 0) {
    FUN_00823cac();
    piVar1 = (int *)FUN_00415f60();
    *(undefined2 *)((int)piVar1 + *(int *)(*piVar1 + 4) + 0x30) = 0x30;
  }
  if (*(char *)(param_1 + 0x1c) != '\0') {
    FUN_0040c559();
  }
  FUN_00469701();
  uStack_e8 = 7;
  FUN_0040180b();
  uStack_cc = 7;
  FUN_0040180b();
  uStack_104 = 7;
  FUN_0040180b();
  uStack_18 = 3;
  FUN_0040c93e();
  uStack_18 = 4;
  iVar2 = FUN_0044c183(auStack_124);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar2 + 4);
}



void __thiscall FUN_007ac996(int param_1_00,int param_1)

{
  int iVar1;
  undefined auStack_124 [3];
  char local_121;
  int local_120;
  int local_11c;
  undefined4 uStack_104;
  undefined4 uStack_e8;
  undefined4 uStack_cc;
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c53fc6;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  *(undefined *)(param_1_00 + 0xc) = 0;
  local_11c = param_1_00;
  FUN_0040c8aa();
  local_c = 0;
  local_120 = *(int *)(param_1 + 0x1c);
  local_121 = *(char *)(param_1 + 0x20);
  if (*(int *)(param_1 + 0x18) != 0) {
    FUN_00823cac();
    FUN_00415f60();
  }
  if (local_121 != '\0') {
    FUN_0040c559();
  }
  if (local_120 != 0) {
    FUN_00823c96();
    FUN_00415f60();
  }
  FUN_004697e0();
  uStack_e8 = 7;
  FUN_0040180b();
  uStack_cc = 7;
  FUN_0040180b();
  uStack_104 = 7;
  FUN_0040180b();
  uStack_18 = 3;
  FUN_0040c93e();
  uStack_18 = 4;
  iVar1 = FUN_0044c183(auStack_124);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void __fastcall FUN_007acb91(int param_1)

{
  int iVar1;
  undefined local_c8 [32];
  undefined4 local_a8;
  undefined4 local_8c;
  undefined4 local_70;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c53f58;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  *(undefined *)(param_1 + 0xc) = 0;
  FUN_007ac198();
  local_70 = 7;
  FUN_0040180b();
  local_c = 0;
  local_a8 = 7;
  FUN_0040180b();
  local_8c = 7;
  FUN_0040180b();
  local_c._0_1_ = 2;
  FUN_00468670();
  local_c._0_1_ = 3;
  FUN_00ba84f0();
  local_c._0_1_ = 4;
  FUN_007ae781();
  local_c._0_1_ = 5;
  iVar1 = FUN_0044c183(local_c8);
  local_c = CONCAT31(local_c._1_3_,6);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void __fastcall FUN_007acd2f(int param_1)

{
  int iVar1;
  undefined local_ac [32];
  undefined4 local_8c;
  undefined4 local_70;
  undefined4 local_54;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c53ef6;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  *(undefined *)(param_1 + 0xc) = 0;
  FUN_007ac198();
  local_70 = 7;
  FUN_0040180b();
  local_c = 0;
  local_54 = 7;
  FUN_0040180b();
  local_8c = 7;
  FUN_0040180b();
  local_c._0_1_ = 2;
  FUN_00468740();
  local_c._0_1_ = 3;
  FUN_007ae781();
  local_c._0_1_ = 4;
  iVar1 = FUN_0044c183(local_ac);
  local_c = CONCAT31(local_c._1_3_,5);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void __thiscall FUN_007acea6(int param_1_00,int param_1)

{
  uint uVar1;
  int *piVar2;
  undefined4 uVar3;
  int iVar4;
  uint local_148;
  undefined local_13c [40];
  undefined4 local_114;
  undefined4 uStack_f8;
  undefined auStack_f4 [24];
  undefined4 uStack_dc;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c53e9f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  *(undefined *)(param_1_00 + 0xc) = 0;
  FUN_0040c8aa();
  local_c = 0;
  uVar1 = *(uint *)(*(int *)(param_1 + 0xc) + 8);
  local_148 = 0;
  if (uVar1 != 0) {
    do {
      FUN_00823cac();
      FUN_0040c559();
      piVar2 = (int *)FUN_00415f60();
      *(undefined2 *)((int)piVar2 + *(int *)(*piVar2 + 4) + 0x30) = 0x30;
      FUN_0040c559();
      FUN_00b92870();
      FUN_00417ba7();
      local_148 = local_148 + 1;
    } while (local_148 < uVar1);
  }
  local_114 = 7;
  FUN_0040180b();
  uStack_f8 = 7;
  FUN_0040180b();
  uStack_dc = 7;
  FUN_0040180b();
  local_c._0_1_ = 6;
  uVar3 = FUN_0040c93e();
  local_c = CONCAT31(local_c._1_3_,7);
  iVar4 = FUN_0044c183(local_13c,uVar3,auStack_f4);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar4 + 4);
}



void __fastcall FUN_007ad142(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  int unaff_EBX;
  undefined4 local_bc;
  undefined4 local_b8;
  uint uStack_b4;
  undefined4 *local_a4 [8];
  undefined4 uStack_84;
  undefined4 uStack_68;
  undefined4 uStack_4c;
  char cStack_48;
  uint local_1c;
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c53de2;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_a4;
  uStack_b4 = DAT_0323f878 ^ (uint)&stack0xffffff50;
  ExceptionList = &local_14;
  *(undefined *)(param_1 + 0xc) = 0;
  local_b8 = 0x7ad193;
  puVar1 = (undefined4 *)FUN_00492da1();
  local_c = 0;
  local_a4[0] = &local_bc;
  local_bc = 0;
  local_b8 = 0;
  (***(code ***)*puVar1)();
  uStack_18 = 2;
  if (unaff_EBX != 0) {
    FUN_0040127a();
  }
  if ((-(uint)(cStack_48 != '\0') & 0x6a1cd8) != 0) {
    uStack_68 = 7;
    FUN_0040180b();
    uStack_4c = 7;
    FUN_0040180b();
    uStack_84 = 7;
    FUN_0040180b();
    uStack_18 = 5;
    iVar2 = FUN_0044c183(&stack0xffffff54);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar2 + 4);
  }
  FUN_007abb4d();
  uStack_18 = 8;
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



void __thiscall FUN_007ad33a(int param_1_00,int *param_1)

{
  undefined4 *puVar1;
  int *piVar2;
  int **ppiVar3;
  int iVar4;
  int local_f4;
  int local_f0;
  uint uStack_ec;
  int *local_dc;
  int iStack_d8;
  char cStack_5c;
  char cStack_48;
  void *pvStack_34;
  undefined uStack_2c;
  undefined uStack_28;
  uint local_1c;
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2df46;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&local_dc;
  uStack_ec = DAT_0323f878 ^ (uint)&stack0xffffff18;
  ExceptionList = &local_14;
  *(undefined *)(param_1_00 + 0xc) = 0;
  local_f0 = 0x7ad38e;
  puVar1 = (undefined4 *)FUN_00492da1();
  local_c = 0;
  local_dc = &local_f4;
  local_f0 = param_1[10];
  local_f4 = param_1[9];
  (***(code ***)*puVar1)();
  uStack_18 = 2;
  if (iStack_d8 != 0) {
    FUN_0040127a();
  }
  if ((-(uint)(cStack_48 != '\0') & 0x6a1cd8) != 0) {
    FUN_0040c97f();
    uStack_18 = 3;
    piVar2 = (int *)FUN_0040c64f();
    if ((*(byte *)(*(int *)(*piVar2 + 4) + 8 + (int)piVar2) & 6) != 0) {
      local_f0 = 0;
    }
    ppiVar3 = (int **)(**(code **)(*param_1 + 0xc))(&uStack_ec,local_f0);
    uStack_28 = 4;
    (**(code **)(**ppiVar3 + 0x10))(param_1_00);
    uStack_2c = 3;
    if (local_f4 != 0) {
      FUN_0040127a();
    }
    uStack_2c = 2;
    FUN_0040785a();
    if (cStack_5c != '\0') {
      FUN_00401829(1,0);
    }
    ExceptionList = pvStack_34;
    ___security_check_cookie_4();
    return;
  }
  iVar4 = FUN_007abb4d();
  uStack_18 = 5;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar4 + 4);
}



void __thiscall FUN_007ad4ee(int param_1_00,int *param_1)

{
  int iVar1;
  int **ppiVar2;
  undefined4 uVar3;
  undefined4 unaff_ESI;
  int iStack_b4;
  undefined auStack_b0 [12];
  int iStack_a4;
  int local_9c;
  undefined auStack_98 [12];
  int iStack_8c;
  undefined auStack_88 [12];
  int iStack_7c;
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c4bc08;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  *(undefined *)(param_1_00 + 0xc) = 0;
  iVar1 = param_1[9];
  if (iVar1 == 0) {
    ppiVar2 = (int **)(**(code **)(*param_1 + 0xc))();
    local_14 = (void *)0x8;
    (**(code **)(**ppiVar2 + 0x10))();
    uStack_18 = 0xffffffff;
    if (iStack_a4 != 0) {
      FUN_0040127a();
    }
    uStack_18 = 9;
    FUN_007abebf();
    uStack_18._0_1_ = 0xc;
    uVar3 = FUN_007abd49();
    uStack_18._0_1_ = 0xe;
    FUN_0044c2a3(auStack_98,uVar3);
    uStack_18 = CONCAT31(uStack_18._1_3_,0xf);
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  if (iVar1 != 1) {
    if (iVar1 != 2) {
      if (iVar1 == 3) {
        *(undefined *)(param_1_00 + 0x30) = 0;
        ppiVar2 = (int **)(**(code **)(*param_1 + 0xc))();
        local_14 = (void *)0x18;
        (**(code **)(**ppiVar2 + 0x10))();
        uStack_18 = 0xffffffff;
        if (iStack_7c != 0) {
          FUN_0040127a();
        }
        *(char *)(param_1_00 + 0x30) = (char)((uint)unaff_ESI >> 0x18);
      }
      else {
        ppiVar2 = (int **)(**(code **)(*param_1 + 0xc))();
        local_14 = (void *)0x19;
        (**(code **)(**ppiVar2 + 0x10))();
        uStack_18 = 0xffffffff;
        if (local_9c != 0) {
          FUN_0040127a();
        }
      }
      ExceptionList = pvStack_20;
      return;
    }
    ppiVar2 = (int **)(**(code **)(*param_1 + 0xc))();
    local_14 = (void *)0x10;
    (**(code **)(**ppiVar2 + 0x10))();
    uStack_18 = 0xffffffff;
    if (iStack_b4 != 0) {
      FUN_0040127a();
    }
    uStack_18 = 0x11;
    FUN_007abebf();
    uStack_18._0_1_ = 0x14;
    uVar3 = FUN_007abc05();
    uStack_18._0_1_ = 0x16;
    FUN_0044c2a3(auStack_88,uVar3);
    uStack_18 = CONCAT31(uStack_18._1_3_,0x17);
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  ppiVar2 = (int **)(**(code **)(*param_1 + 0xc))();
  local_14 = (void *)0x0;
  (**(code **)(**ppiVar2 + 0x10))();
  uStack_18 = 0xffffffff;
  if (iStack_8c != 0) {
    FUN_0040127a();
  }
  uStack_18 = 1;
  FUN_007abebf();
  uStack_18._0_1_ = 4;
  uVar3 = FUN_007abc56();
  uStack_18._0_1_ = 6;
  FUN_0044c2a3(auStack_b0,uVar3);
  uStack_18 = CONCAT31(uStack_18._1_3_,7);
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



void __thiscall FUN_007ad89f(undefined *param_1_00,int *param_1)

{
  int **ppiVar1;
  undefined4 *puVar2;
  int unaff_ESI;
  undefined *puStack_194;
  undefined *puStack_190;
  undefined4 uStack_18c;
  undefined4 uStack_188;
  undefined4 uStack_184;
  undefined4 uStack_180;
  undefined4 uStack_17c;
  undefined *puStack_178;
  undefined *puStack_174;
  undefined *puStack_170;
  undefined *puStack_16c;
  undefined *puStack_168;
  undefined **ppuStack_164;
  undefined *puStack_160;
  undefined4 *puStack_15c;
  undefined local_14c [4];
  undefined4 *puStack_148;
  undefined **local_144;
  undefined *local_140;
  undefined auStack_13c [24];
  undefined4 uStack_124;
  undefined auStack_120 [24];
  undefined4 uStack_108;
  undefined auStack_104 [24];
  undefined4 uStack_ec;
  undefined auStack_90 [12];
  undefined auStack_84 [36];
  undefined auStack_60 [16];
  undefined auStack_50 [44];
  undefined uStack_24;
  undefined uStack_20;
  uint local_1c;
  undefined uStack_18;
  undefined4 local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4ccd9;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)local_14c;
  puStack_15c = (undefined4 *)(DAT_0323f878 ^ (uint)&stack0xfffffea8);
  ExceptionList = &local_14;
  local_144 = (undefined **)&ppuStack_164;
  param_1_00[0xc] = 0;
  puStack_168 = (undefined *)0x7ad8fa;
  ppuStack_164 = (undefined **)param_1_00;
  puStack_160 = param_1_00;
  local_140 = param_1_00;
  FUN_00492da1();
  puStack_168 = (undefined *)0x7ad906;
  FUN_004686c0();
  puStack_160 = (undefined *)0x1;
  ppuStack_164 = (undefined **)local_14c;
  local_c = 0;
  puStack_168 = (undefined *)0x7ad91d;
  ppiVar1 = (int **)(**(code **)(*param_1 + 0xc))();
  local_14 = (void *)CONCAT31(local_14._1_3_,1);
  puStack_168 = auStack_84;
  puStack_16c = (undefined *)0x7ad934;
  (**(code **)(**ppiVar1 + 0x10))();
  uStack_18 = 0;
  if (unaff_ESI != 0) {
    puStack_16c = (undefined *)0x7ad948;
    FUN_0040127a();
  }
  puStack_16c = auStack_60;
  puStack_170 = (undefined *)0x7ad95c;
  FUN_00468740();
  puStack_16c = (undefined *)0x2;
  puStack_170 = &stack0xfffffea8;
  uStack_18 = 2;
  puStack_174 = (undefined *)0x7ad972;
  ppiVar1 = (int **)(**(code **)(*param_1 + 0xc))();
  uStack_20 = 3;
  puStack_174 = auStack_90;
  puStack_178 = (undefined *)0x7ad989;
  (**(code **)(**ppiVar1 + 0x10))();
  uStack_24 = 2;
  if (puStack_160 != (undefined *)0x0) {
    puStack_178 = (undefined *)0x7ad99e;
    FUN_0040127a();
  }
  puStack_178 = auStack_50;
  uStack_17c = 0x7ad9b2;
  FUN_00468740();
  puStack_15c = &uStack_17c;
  uStack_17c = 0;
  puStack_178 = (undefined *)0x0;
  puStack_148 = &uStack_184;
  uStack_184 = 0;
  uStack_180 = 0;
  uStack_18c = 0;
  uStack_188 = 0;
  puStack_190 = (undefined *)0x0;
  uStack_ec = 7;
  puStack_194 = (undefined *)0x7ad9f0;
  FUN_0040180b();
  puStack_190 = (undefined *)0x0;
  uStack_108 = 7;
  puStack_194 = (undefined *)0x7ada01;
  FUN_0040180b();
  puStack_190 = (undefined *)0x0;
  uStack_124 = 7;
  puStack_194 = (undefined *)0x7ada0f;
  FUN_0040180b();
  puStack_190 = auStack_104;
  puStack_194 = auStack_120;
  uStack_24 = 10;
  puVar2 = (undefined4 *)FUN_0044c183(&local_144,auStack_50,auStack_13c);
  puStack_194 = (undefined *)*puVar2;
  ppuStack_164 = &puStack_194;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Removing unreachable block (ram,0x007adc21)

void __thiscall FUN_007adbbf(int param_1_00,int *param_1)

{
  int iVar1;
  int **ppiVar2;
  int iStack_44;
  undefined4 local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3d5e8;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  *(undefined *)(param_1_00 + 0xc) = 0;
  FUN_007ab9f4();
  local_c = 0;
  iVar1 = (**(code **)(*param_1 + 8))();
  while (iVar1 != 0) {
    ppiVar2 = (int **)(**(code **)(*param_1 + 0xc))();
    local_14 = (void *)CONCAT31(local_14._1_3_,3);
    (**(code **)(**ppiVar2 + 0x10))();
    if (iStack_44 != 0) {
      FUN_0040127a();
    }
    FUN_007abebf();
    FUN_0046fe57();
    iVar1 = (**(code **)(*param_1 + 8))();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



void __thiscall FUN_007add26(int param_1_00,int *param_1)

{
  int iVar1;
  int **ppiVar2;
  undefined4 uStack_94;
  undefined *puStack_90;
  undefined4 *puStack_8c;
  undefined **ppuStack_88;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined **ppuStack_7c;
  undefined4 *puStack_78;
  uint uStack_74;
  undefined4 *local_60;
  int local_5c;
  undefined ***pppuStack_58;
  undefined4 **ppuStack_54;
  undefined4 *apuStack_4c [2];
  undefined4 local_44;
  undefined auStack_40 [40];
  undefined uStack_18;
  undefined4 local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4bb02;
  local_14 = ExceptionList;
  uStack_74 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_14;
  puStack_78 = &local_44;
  *(undefined *)(param_1_00 + 0xc) = 0;
  ppuStack_7c = (undefined **)0x7add65;
  local_5c = param_1_00;
  FUN_007ab9f4();
  local_c = 0;
  local_60 = (undefined4 *)0x1;
  puStack_78 = (undefined4 *)0x7add7b;
  iVar1 = (**(code **)(*param_1 + 8))();
  if (iVar1 != 0) {
    puStack_78 = local_60;
    ppuStack_7c = (undefined **)apuStack_4c;
    uStack_80 = 0x7add93;
    ppiVar2 = (int **)(**(code **)(*param_1 + 0xc))();
    local_14 = (void *)CONCAT31(local_14._1_3_,1);
    uStack_84 = 0x7adda3;
    (**(code **)(**ppiVar2 + 0x10))();
    uStack_18 = 0;
    if (ppuStack_54 != (undefined4 **)0x0) {
      uStack_84 = 0x7addb4;
      FUN_0040127a();
    }
    uStack_84 = 0x7addbd;
    uStack_84 = FUN_007abca7();
    ppuStack_88 = (undefined **)&local_60;
    uStack_18 = 2;
    puStack_8c = (undefined4 *)0x7addcd;
    puStack_8c = (undefined4 *)FUN_007aba74();
    uStack_18 = 3;
    ppuStack_88 = (undefined **)*puStack_8c;
    puStack_8c = puStack_8c + 1;
                    // WARNING: Subroutine does not return
    puStack_90 = &UNK_007adde8;
    FUN_0043c023();
  }
  pppuStack_58 = &ppuStack_7c;
  ppuStack_7c = (undefined **)0x0;
  puStack_78 = (undefined4 *)0x0;
  local_60 = &uStack_84;
  uStack_84 = 0;
  uStack_80 = 0;
  ppuStack_54 = &puStack_8c;
  puStack_8c = (undefined4 *)0x0;
  ppuStack_88 = (undefined **)0x0;
  apuStack_4c[0] = &uStack_94;
  uStack_94 = local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(auStack_40);
}



void __thiscall FUN_007adf1c(int param_1_00,int *param_1)

{
  int **ppiVar1;
  int extraout_ECX;
  undefined4 unaff_ESI;
  int iStack_50;
  int iStack_4c;
  int iStack_48;
  void **ppvStack_44;
  undefined4 uStack_40;
  uint uStack_3c;
  char cVar2;
  int iStack_28;
  void *local_20 [2];
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c32db2;
  local_14 = ExceptionList;
  cVar2 = (char)((uint)unaff_ESI >> 0x18);
  uStack_3c = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  uStack_40 = 1;
  ppvStack_44 = local_20;
  *(undefined *)(param_1_00 + 0xc) = 0;
  iStack_28 = CONCAT13(*(undefined *)(param_1_00 + 0x30),(undefined3)iStack_28);
  *(undefined *)(param_1_00 + 0x30) = 0;
  iStack_48 = 0x7adf6a;
  ppiVar1 = (int **)(**(code **)(*param_1 + 0xc))();
  local_14 = (void *)0x0;
  iStack_4c = 0x7adf77;
  iStack_48 = param_1_00;
  (**(code **)(**ppiVar1 + 0x10))();
  uStack_18 = 0xffffffff;
  if (iStack_28 != 0) {
    iStack_4c = 0x7adf89;
    FUN_0040127a();
    iStack_28 = extraout_ECX;
  }
  *(char *)(param_1_00 + 0x30) = cVar2;
  if (cVar2 != '\0') {
    iStack_50 = iStack_28;
    iStack_4c = iStack_28;
    FUN_007abebf();
    FUN_007ac1ae(param_1_00,&iStack_50,param_1[9] & 0xffffff);
    FUN_007abed5();
  }
  ExceptionList = local_20[0];
  return;
}



void __thiscall FUN_007adfdf(int param_1_00,int *param_1)

{
  int iVar1;
  int **ppiVar2;
  undefined4 *puVar3;
  undefined *puStack_1e0;
  undefined *puStack_1dc;
  undefined4 uStack_1d8;
  undefined4 uStack_1d4;
  undefined4 uStack_1d0;
  undefined *puStack_1cc;
  undefined4 *puStack_1c8;
  undefined *puStack_1c4;
  undefined **ppuStack_1c0;
  undefined **ppuStack_1bc;
  undefined *puStack_1b8;
  uint uStack_1b4;
  undefined4 uStack_1a4;
  int local_1a0;
  undefined ***local_19c;
  undefined **ppuStack_198;
  undefined auStack_194 [4];
  undefined auStack_190 [8];
  undefined *apuStack_188 [3];
  undefined4 uStack_17c;
  undefined auStack_178 [8];
  undefined4 uStack_170;
  undefined auStack_16c [12];
  undefined4 uStack_160;
  undefined auStack_15c [8];
  undefined4 uStack_154;
  undefined auStack_150 [12];
  undefined4 uStack_144;
  undefined4 *puStack_138;
  undefined4 *puStack_134;
  undefined local_108 [128];
  undefined auStack_88 [12];
  undefined auStack_7c [28];
  undefined local_60 [20];
  undefined auStack_4c [48];
  uint local_1c;
  undefined uStack_18;
  undefined4 local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c53d65;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&uStack_1a4;
  uStack_1b4 = DAT_0323f878 ^ (uint)&stack0xfffffe50;
  ExceptionList = &local_14;
  local_19c = (undefined ***)0x0;
  *(undefined *)(param_1_00 + 0xc) = 0;
  puStack_1b8 = local_108;
  ppuStack_1bc = (undefined **)0x7ae040;
  local_1a0 = param_1_00;
  ppuStack_1bc = (undefined **)FUN_0046868b();
  puStack_1b8 = local_60;
  local_c = 0;
  ppuStack_1c0 = (undefined **)0x7ae055;
  do_get();
  puStack_1b8 = (undefined *)0x0;
  ppuStack_1bc = (undefined **)0x1;
  local_c._0_1_ = 2;
  ppuStack_1c0 = (undefined **)0x7ae06e;
  FUN_00401829();
  if (*(char *)(param_1 + 0x10) != '\0') {
    puStack_1b8 = (undefined *)0x7ae07a;
    iVar1 = (**(code **)(*param_1 + 8))();
    if (iVar1 != 0) {
      puStack_1b8 = auStack_7c;
      ppuStack_1bc = (undefined **)0x7ae08d;
      ppuStack_1bc = (undefined **)FUN_0046868b();
      puStack_1b8 = (undefined *)0x0;
      ppuStack_1c0 = (undefined **)&ppuStack_198;
      local_c = CONCAT31(local_c._1_3_,3);
      local_19c = (undefined ***)0x1;
      puStack_1c4 = (undefined *)0x7ae0a5;
      FUN_00827d70();
      uStack_1a4 = (undefined **)CONCAT13(1,(undefined3)uStack_1a4);
      if (ppuStack_198 == (undefined **)0x3) goto LAB_007ae0b8;
    }
  }
  uStack_1a4 = (undefined **)((uint)uStack_1a4 & 0xffffff);
LAB_007ae0b8:
  local_c = 2;
  if (((uint)local_19c & 1) != 0) {
    puStack_1b8 = (undefined *)0x0;
    ppuStack_1bc = (undefined **)0x1;
    ppuStack_1c0 = (undefined **)0x7ae0d8;
    FUN_00401829();
  }
  if (uStack_1a4._3_1_ != '\0') {
    local_19c = &ppuStack_1bc;
    ppuStack_1c0 = (undefined **)0x7ae0f3;
    FUN_00492da1();
    ppuStack_1c0 = (undefined **)0x7ae0ff;
    FUN_004686c0();
    puStack_1b8 = (undefined *)0x1;
    ppuStack_1bc = (undefined **)&ppuStack_198;
    local_c = CONCAT31(local_c._1_3_,4);
    ppuStack_1c0 = (undefined **)0x7ae115;
    ppiVar2 = (int **)(**(code **)(*param_1 + 0xc))();
    local_14 = (void *)CONCAT31(local_14._1_3_,5);
    ppuStack_1c0 = (undefined **)auStack_4c;
    puStack_1c4 = (undefined *)0x7ae12c;
    (**(code **)(**ppiVar2 + 0x10))();
    uStack_18 = 4;
    if (local_1a0 != 0) {
      puStack_1c4 = (undefined *)0x7ae141;
      FUN_0040127a();
    }
    puStack_1c4 = auStack_88;
    puStack_1c8 = (undefined4 *)0x7ae155;
    FUN_00468740();
    puStack_1c8 = (undefined4 *)0x0;
    puStack_1c4 = (undefined *)0x0;
    puStack_134 = &uStack_1d0;
    uStack_1d0 = 0;
    puStack_1cc = (undefined *)0x0;
    puStack_138 = &uStack_1d8;
    uStack_1d8 = 0;
    uStack_1d4 = 0;
    puStack_1dc = (undefined *)0x0;
    uStack_160 = 7;
    puStack_1e0 = (undefined *)0x7ae193;
    FUN_0040180b();
    puStack_1dc = (undefined *)0x0;
    uStack_17c = 7;
    puStack_1e0 = (undefined *)0x7ae1a1;
    FUN_0040180b();
    puStack_1dc = (undefined *)0x0;
    uStack_144 = 7;
    puStack_1e0 = (undefined *)0x7ae1b5;
    FUN_0040180b();
    puStack_1dc = auStack_178;
    puStack_1e0 = auStack_194;
    uStack_18 = 0xc;
    puVar3 = (undefined4 *)FUN_0044c183(&local_19c,auStack_88,auStack_15c);
    puStack_1e0 = (undefined *)*puVar3;
    uStack_1a4 = &puStack_1e0;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar3 + 1);
  }
  puStack_1b8 = (undefined *)0x0;
  puStack_138 = (undefined4 *)0x7;
  ppuStack_1bc = (undefined **)0x7ae39f;
  FUN_0040180b();
  puStack_1b8 = (undefined *)0x0;
  uStack_170 = 7;
  ppuStack_1bc = (undefined **)0x7ae3ad;
  FUN_0040180b();
  puStack_1b8 = (undefined *)0x0;
  uStack_154 = 7;
  ppuStack_1bc = (undefined **)0x7ae3bb;
  FUN_0040180b();
  puStack_1b8 = local_60;
  local_c._0_1_ = 0x20;
  ppuStack_1bc = (undefined **)0x7ae3d7;
  puStack_1c4 = (undefined *)FUN_007ae781();
  puStack_1b8 = auStack_150;
  ppuStack_1bc = apuStack_188;
  ppuStack_1c0 = (undefined **)auStack_16c;
  puStack_1c8 = (undefined4 *)auStack_190;
  local_c = CONCAT31(local_c._1_3_,0x21);
  puStack_1cc = (undefined *)0x7ae3fa;
  puStack_1c8 = (undefined4 *)FUN_0044c183();
  puStack_1c4 = (undefined *)*puStack_1c8;
  ppuStack_198 = &puStack_1c4;
  puStack_1c8 = puStack_1c8 + 1;
                    // WARNING: Subroutine does not return
  puStack_1cc = &UNK_007ae41b;
  FUN_0043c023();
}



void __fastcall FUN_007ae4c5(int param_1)

{
  int iVar1;
  undefined local_ac [32];
  undefined4 local_8c;
  undefined4 local_70;
  undefined4 local_54;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c53c1b;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  *(undefined *)(param_1 + 0xc) = 0;
  local_70 = 7;
  FUN_0040180b();
  local_c = 0;
  local_8c = 7;
  FUN_0040180b();
  local_54 = 7;
  FUN_0040180b();
  local_c._0_1_ = 2;
  FUN_004686a6();
  local_c._0_1_ = 3;
  FUN_00b9bdf0();
  local_c = CONCAT31(local_c._1_3_,4);
  iVar1 = FUN_0044c183(local_ac);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void __fastcall FUN_007ae644(int param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined local_ac [36];
  undefined local_88 [116];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c38889;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  *(undefined *)(param_1 + 0xc) = 0;
  FUN_00468740();
  local_c = 0;
  FUN_0044c252();
  local_c._0_1_ = 1;
  FUN_0041c102(local_88);
  local_c._0_1_ = 2;
  uVar1 = FUN_00470382();
  local_c._0_1_ = 3;
  uVar2 = FUN_0044c201();
  local_c._0_1_ = 4;
  iVar3 = FUN_007abaf6(local_ac,uVar2,uVar1);
  local_c = CONCAT31(local_c._1_3_,5);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar3 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007ae781(int param_1)

{
  ushort uVar1;
  ushort *puVar2;
  undefined4 uVar3;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_EDI;
  uint local_14;
  
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_EDI);
  local_14 = 0;
  if (*(int *)(param_1 + 0x14) != 0) {
    do {
      puVar2 = (ushort *)FUN_004127c3(local_14);
      uVar1 = *puVar2;
      if (uVar1 == 0x26) {
        uVar3 = basic_string<>(L"&amp;");
        FID_conflict_append(uVar3,0,0xffffffff);
LAB_007ae881:
        FUN_00401829(1,0);
      }
      else {
        if (uVar1 == 0x3c) {
          uVar3 = basic_string<>(L"&lt;");
          FID_conflict_append(uVar3,0,0xffffffff);
          goto LAB_007ae881;
        }
        if (uVar1 == 0x3e) {
          uVar3 = basic_string<>(L"&gt;");
          FID_conflict_append(uVar3,0,0xffffffff);
          goto LAB_007ae881;
        }
        if (uVar1 < 0x20) {
          uVar3 = basic_string<>(L"&#32;");
          FID_conflict_append(uVar3,0,0xffffffff);
          goto LAB_007ae881;
        }
        FID_conflict_append(1,uVar1);
      }
      local_14 = local_14 + 1;
    } while (local_14 < *(uint *)(param_1 + 0x14));
  }
  return;
}



int * FUN_007ae8a5(int **param_1)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  int iVar4;
  int **unaff_EBX;
  int *piVar5;
  int **local_1c;
  int *local_18;
  int *local_14;
  int *local_10;
  int *local_c;
  
  local_1c = (int **)unaff_EBX[6];
  if (*(char *)((int)(int *)((int *)local_1c)[1] + 0x15) == '\0') {
    ppiVar3 = (int **)(int *)((int *)local_1c)[1];
    do {
      if ((int)ppiVar3[3] < (int)*param_1) {
        piVar2 = ppiVar3[2];
      }
      else {
        piVar2 = *ppiVar3;
        local_1c = ppiVar3;
      }
      ppiVar3 = (int **)piVar2;
    } while (*(char *)((int)piVar2 + 0x15) == '\0');
  }
  local_c = unaff_EBX[6];
  local_14 = (int *)local_1c;
  local_18 = *unaff_EBX;
  local_10 = local_18;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (piVar2 = local_18, piVar5 = local_14, (int)*param_1 < (int)local_1c[3])) {
    local_10 = *param_1;
    local_c = (int *)0x0;
    ppiVar3 = (int **)FUN_007fdf2a(&local_18,&local_10,local_18,local_14);
    piVar2 = *ppiVar3;
    piVar5 = ppiVar3[1];
  }
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar4 = 0;
  }
  else {
    iVar4 = *piVar2;
  }
  if (piVar5 == *(int **)(iVar4 + 0x18)) {
    FUN_00a3fb10();
  }
  return piVar5 + 4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007ae96d(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_007aea21(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007ae9ba(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D821358::W81258EE3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007aea00(void)

{
  int iVar1;
  code *pcVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  if (iVar1 != 0) {
    FUN_0044237a(iVar1 + 4);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007aea21(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D821358::WE3A55E3A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007aea67(void)

{
  code *pcVar1;
  
  FUN_007aeaf7();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007aea79(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W7D821358::WBCAE5B7D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007aeabf(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void __fastcall FUN_007aead2(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_0044237a(iVar1 + 4);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void FUN_007aeaec(void)

{
  FUN_007aeaf7();
  return;
}



void FUN_007aeaf7(void)

{
  int unaff_ESI;
  
  if (unaff_ESI != 0) {
    FUN_00401829(1,0);
    FUN_00401829(1,0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007aeb1b(int *param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  uint uVar3;
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x7aeb27;
  uVar1 = (**(code **)(*param_1_00 + 4))();
  uVar3 = 0;
  if (uVar1 != 0) {
    do {
      puVar2 = (undefined4 *)(**(code **)(*param_1_00 + 8))(local_18,uVar3);
      local_8 = 0;
      (***(code ***)*puVar2)(param_1);
      local_8 = 0xffffffff;
      if (local_14 != 0) {
        FUN_0040127a();
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007aeb6c(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  *param_1 = W7D821358::WE3A55E3A::vftable;
  basic_string<>(param_2);
  basic_string<>(param_3);
  return param_1;
}



void __thiscall FUN_007aeba5(int param_1_00,int param_1)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  
  if (param_1 == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = param_1 + 8;
  }
  iVar3 = param_1_00 + 4;
  uVar1 = FUN_004266f0(iVar2,iVar3,iVar3);
  FUN_0040e327(uVar1);
  if (*(int *)(param_1_00 + 0x34) != 0) {
    if (param_1 == 0) {
      iVar2 = 0;
    }
    else {
      iVar2 = param_1 + 8;
    }
    uVar1 = FUN_004266f0(iVar2,iVar3,param_1_00 + 0x20);
    FUN_0040e327(uVar1);
  }
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 8;
  }
  FUN_004266f0(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007aec1b(undefined4 param_1,uint *param_2,int param_3)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int **ppiVar4;
  undefined4 extraout_ECX;
  uint uVar5;
  int iVar6;
  int *local_15c;
  int *local_158;
  undefined *local_154;
  undefined local_118 [8];
  undefined local_110 [160];
  undefined local_70 [28];
  undefined local_54 [32];
  uint local_34;
  uint local_30;
  undefined local_2c [4];
  int local_28;
  int local_24;
  int local_20;
  int **local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x130;
  local_8 = 0x7aec2a;
  local_154 = local_54;
  uVar5 = *(int *)(param_3 + 0x14) - *(int *)(param_3 + 0x10) >> 3;
  local_158 = (int *)0x7aec42;
  local_34 = uVar5;
  FUN_005d64d3();
  local_8 = 0;
  local_154 = local_118;
  local_158 = (int *)0x7aec52;
  FUN_0040c8aa();
  local_30 = 0;
  local_8._0_1_ = 1;
  if (uVar5 != 0) {
    do {
      local_154 = (undefined *)0x7aec72;
      FUN_007b3abd();
      iVar1 = local_24;
      local_8._0_1_ = 2;
      local_15 = *(char *)(local_24 + 0x24);
      local_15c = (int *)CONCAT31((int3)((uint)extraout_ECX >> 8),local_15);
      local_154 = &DAT_00dd9520;
      iVar6 = local_24 + 0xc;
      local_1c = &local_15c;
      local_158 = local_15c;
      local_28 = iVar6;
      FUN_00492da1();
      local_15c = (int *)FUN_00463802(local_70);
      local_8._0_1_ = 3;
      local_158 = (int *)FUN_0040e327(local_110);
      local_15c = (int *)0x7aecbd;
      FUN_0040e4a0();
      local_154 = (undefined *)0x0;
      local_158 = (int *)0x1;
      local_8 = CONCAT31(local_8._1_3_,2);
      local_15c = (int *)0x7aeccf;
      FUN_00401829();
      local_1c = (int **)0x0;
      if ((*(int *)(iVar1 + 0x1c) - *(int *)(iVar1 + 0x18)) / 0x1c != 0) {
        do {
          if (local_1c != (int **)0x0) {
            local_154 = local_110;
            local_158 = (int *)0x7aecf8;
            FUN_004266f0();
          }
          local_154 = (undefined *)local_1c;
          local_158 = (int *)0x7aed03;
          uVar2 = FUN_0042b490();
          local_158 = (int *)local_110;
          local_15c = (int *)0x7aed12;
          local_154 = (undefined *)uVar2;
          FUN_0040e327();
          if (local_15 == '\0') {
            local_158 = (int *)0x7aed29;
            local_154 = (undefined *)uVar2;
            FUN_005d651e();
            iVar6 = local_28;
          }
          local_1c = (int **)((int)local_1c + 1);
        } while (local_1c < (uint)((*(int *)(iVar6 + 0x10) - *(int *)(iVar6 + 0xc)) / 0x1c));
      }
      local_158 = (int *)local_110;
      local_154 = &DAT_00dd9528;
      local_15c = (int *)0x7aed51;
      FUN_0040e4a0();
      uVar5 = 0;
      if ((*(int *)(iVar6 + 0x10) - *(int *)(iVar6 + 0xc)) / 0x1c != 0) {
        do {
          if (uVar5 != 0) {
            local_154 = local_110;
            local_158 = (int *)0x7aed78;
            FUN_004266f0();
          }
          local_158 = (int *)0x7aed81;
          local_154 = (undefined *)uVar5;
          local_154 = (undefined *)FUN_0042b490();
          local_158 = (int *)local_110;
          local_15c = (int *)0x7aed8e;
          FUN_0040e327();
          uVar5 = uVar5 + 1;
        } while (uVar5 < (uint)((*(int *)(iVar6 + 0x10) - *(int *)(iVar6 + 0xc)) / 0x1c));
      }
      local_154 = local_110;
      local_158 = (int *)0x7aedb0;
      FUN_004266f0();
      local_8._0_1_ = 1;
      if (local_20 != 0) {
        local_154 = (undefined *)0x7aedc1;
        FUN_0040127a();
      }
      local_30 = local_30 + 1;
      uVar5 = local_34;
    } while (local_30 < local_34);
  }
  if (uVar5 < 2) {
    *param_2 = 0;
    local_154 = (undefined *)0xb;
    local_158 = (int *)&DAT_00dd9530;
    local_15c = (int *)0x7aeefc;
    local_154 = (undefined *)basic_string<>();
    local_158 = &local_24;
    local_8._0_1_ = 6;
    local_24 = 0x5c532966;
    local_20 = 0x9f986f96;
    local_15c = (int *)0x7aef1e;
    local_154 = (undefined *)FUN_00b94470();
    local_8._0_1_ = 7;
    local_15c = (int *)0x1e62;
    local_158 = (int *)0x6b;
    ppiVar4 = (int **)FUN_00465be3(local_2c);
    local_8 = CONCAT31(local_8._1_3_,8);
    local_15c = *ppiVar4;
                    // WARNING: Subroutine does not return
    FUN_0043c023(ppiVar4 + 1);
  }
  *param_2 = uVar5;
  local_158 = (int *)0x1e62;
  local_154 = (undefined *)0x6a;
  local_15c = &local_24;
  puVar3 = (undefined4 *)FUN_00465be3();
  local_8 = CONCAT31(local_8._1_3_,4);
  local_158 = (int *)*puVar3;
  local_15c = puVar3 + 1;
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



void __fastcall FUN_007af00d(undefined4 *param_1)

{
  *param_1 = wxAuiToolBarArt::vftable;
  return;
}



undefined4 * __thiscall FUN_007af014(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxAuiToolBarArt::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



uint __thiscall FUN_007af031(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0xc) == DAT_032bfdd0) {
    uVar1 = *(undefined4 *)(param_1 + 0x14);
    *(undefined4 *)(param_1_00 + 0x40) = uVar1;
    param_1 = CONCAT31((int3)((uint)uVar1 >> 8),1);
  }
  else if (*(int **)(param_1_00 + 0xc) == (int *)0x0) {
    param_1 = param_1 & 0xffffff00;
  }
  else {
    param_1 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x18))(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_007af05e(undefined4 param_1_00,byte param_1)

{
  FUN_00846530();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007af07a(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined **local_54 [5];
  undefined **local_40 [5];
  undefined **local_2c [5];
  undefined **local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x80;
  *param_1 = W09E346CD::WA225654D::vftable;
  param_1[2] = 0;
  param_1[1] = wxBitmap::vftable;
  param_1[4] = 0;
  param_1[3] = wxBitmap::vftable;
  param_1[6] = 0;
  param_1[5] = wxBitmap::vftable;
  param_1[8] = 0;
  param_1[7] = wxBitmap::vftable;
  local_8._0_1_ = 4;
  local_8._1_3_ = 0;
  FUN_00453f4b();
  local_8._0_1_ = 5;
  FUN_00453f4b();
  param_1[0x14] = 0;
  param_1[0x13] = wxFont::vftable;
  param_1[0x18] = 0;
  param_1[0x17] = wxPen::vftable;
  param_1[0x1a] = 0;
  param_1[0x19] = wxPen::vftable;
  param_1[0x1c] = 0;
  param_1[0x1b] = wxPen::vftable;
  local_8._0_1_ = 10;
  uVar1 = FUN_00472251(local_54);
  local_8._0_1_ = 0xb;
  FUN_004722cb(uVar1);
  local_8._0_1_ = 10;
  local_54[0] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x15] = 0;
  param_1[0x16] = 3;
  uVar1 = FUN_008ff080(local_54,0xd);
  local_8._0_1_ = 0xc;
  FUN_004722cb(uVar1);
  local_8._0_1_ = 10;
  local_54[0] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x1d] = 7;
  param_1[0x1e] = 7;
  param_1[0x1f] = 0x10;
  FUN_00472130(0x55);
  local_8._0_1_ = 0xd;
  FUN_00472130(0x4b);
  local_8._0_1_ = 0xe;
  FUN_00472130(0x3c);
  local_8._0_1_ = 0xf;
  FUN_00472130(0x32);
  local_8._0_1_ = 0x10;
  FUN_00472130(0x28);
  local_8._0_1_ = 0x11;
  uVar1 = FUN_009566f0(local_2c,1,100);
  local_8._0_1_ = 0x12;
  FUN_0043d987(uVar1);
  local_8._0_1_ = 0x11;
  local_18[0] = wxObject::vftable;
  FUN_0083e850();
  uVar1 = FUN_009566f0(local_40,1,100);
  local_8._0_1_ = 0x13;
  FUN_0043d987(uVar1);
  local_8._0_1_ = 0x11;
  local_18[0] = wxObject::vftable;
  FUN_0083e850();
  uVar1 = FUN_008f8330(0x25);
  FUN_0043d987(uVar1);
  FUN_008f7e50(0xb);
  uVar1 = FUN_00472328(local_18,&DAT_0329b144,5,3);
  local_8._0_1_ = 0x14;
  FUN_0043d987(uVar1);
  local_8._0_1_ = 0x11;
  FUN_008f7630();
  FUN_004561e7(0x80,0x80,0x80,0xff);
  local_8._0_1_ = 0x15;
  uVar1 = FUN_00472328(local_18,&DAT_0329b144,5,3);
  local_8._0_1_ = 0x16;
  FUN_0043d987(uVar1);
  local_8._0_1_ = 0x15;
  FUN_008f7630();
  local_8._0_1_ = 0x11;
  local_54[0] = wxObject::vftable;
  FUN_0083e850();
  FUN_008f7e50(0xb);
  uVar1 = FUN_00472328(local_18,&DAT_0329b148,7,6);
  local_8._0_1_ = 0x17;
  FUN_0043d987(uVar1);
  local_8._0_1_ = 0x11;
  FUN_008f7630();
  FUN_004561e7(0x80,0x80,0x80,0xff);
  local_8._0_1_ = 0x18;
  uVar1 = FUN_00472328(local_18,&DAT_0329b148,7,6);
  local_8._0_1_ = 0x19;
  FUN_0043d987(uVar1);
  local_8._0_1_ = 0x18;
  FUN_008f7630();
  local_8._0_1_ = 0x11;
  local_54[0] = wxObject::vftable;
  FUN_0083e850();
  uVar1 = (**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
  FUN_0043d987(uVar1);
  local_8._0_1_ = 0x10;
  local_2c[0] = wxObject::vftable;
  FUN_0083e850();
  local_8._0_1_ = 0xf;
  FUN_0083e850();
  local_8._0_1_ = 0xe;
  local_40[0] = wxObject::vftable;
  FUN_0083e850();
  local_8._0_1_ = 0xd;
  FUN_0083e850();
  local_8 = CONCAT31(local_8._1_3_,10);
  FUN_0083e850();
  return param_1;
}



undefined4 __thiscall FUN_007af3af(undefined4 param_1_00,byte param_1)

{
  FUN_007af3cb();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007af3cb(undefined4 *param_1)

{
  undefined4 uVar1;
  
  *param_1 = W09E346CD::WA225654D::vftable;
  uVar1 = (**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
  FUN_0043d987(uVar1);
  param_1[0x1b] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x19] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x17] = wxObject::vftable;
  FUN_0083e850();
  FUN_00921450();
  param_1[0xe] = wxObject::vftable;
  FUN_0083e850();
  param_1[9] = wxObject::vftable;
  FUN_0083e850();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  FUN_008f7630();
  *param_1 = wxAuiToolBarArt::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007af493(void)

{
  void *pvVar1;
  undefined4 uVar2;
  
  pvVar1 = operator_new(0x80);
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_007af07a(pvVar1);
  }
  return uVar2;
}



void __thiscall FUN_007af4c5(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x54) = param_1;
  return;
}



undefined4 __fastcall FUN_007af4cf(int param_1)

{
  return *(undefined4 *)(param_1 + 0x54);
}



void FUN_007af4d3(void)

{
  FUN_0043d987();
  return;
}



undefined4 __thiscall FUN_007af4db(int param_1_00,undefined4 param_1)

{
  FUN_00473c49(param_1_00 + 0x4c);
  return param_1;
}



void __thiscall FUN_007af4ef(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x58) = param_1;
  return;
}



undefined4 __fastcall FUN_007af4f9(int param_1)

{
  return *(undefined4 *)(param_1 + 0x58);
}



void FUN_007af4fd(int param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined **local_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  int local_6c;
  undefined local_68 [4];
  undefined **ppuStack_64;
  undefined **ppuStack_60;
  undefined local_54 [4];
  undefined auStack_50 [4];
  undefined **ppuStack_4c;
  undefined auStack_3c [8];
  void *pvStack_34;
  undefined4 uStack_2c;
  undefined4 uStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1c7d8;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_78 = (undefined **)*param_3;
  uStack_74 = param_3[1];
  uStack_70 = param_3[2];
  local_6c = (param_3[3] - (param_3[3] * 2) / 3) + 1;
  FUN_00472130(0xb4,DAT_0323f878 ^ (uint)&stack0xffffff60);
  local_c = 0;
  FUN_00472130(0x96);
  local_c = CONCAT31(local_c._1_3_,1);
  (**(code **)(**(int **)(param_1 + 8) + 0x130))(&local_78,local_54,local_68,0x80);
  uStack_1c = uStack_1c & 0xffffff00;
  local_78 = wxObject::vftable;
  FUN_0083e850();
  uStack_1c = 0xffffffff;
  ppuStack_64 = wxObject::vftable;
  FUN_0083e850();
  FUN_00472130(0x78);
  uStack_1c = 2;
  FUN_00472130(0x50);
  uStack_1c = CONCAT31(uStack_1c._1_3_,3);
  (**(code **)(**(int **)(param_1 + 8) + 0x130))(&stack0xffffff68,auStack_3c,auStack_50,0x80);
  uStack_2c = CONCAT31(uStack_2c._1_3_,2);
  ppuStack_60 = wxObject::vftable;
  FUN_0083e850();
  uStack_2c = 0xffffffff;
  ppuStack_4c = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_34;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007af689(int param_1_00,int param_1,undefined4 param_2,int param_3,int *param_4)

{
  int iVar1;
  undefined4 uVar2;
  undefined local_48 [36];
  int local_24;
  int iStack_20;
  int local_1c;
  int iStack_18;
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  iVar1 = param_1;
  uStack_4 = 0x38;
  local_8 = 0x7af695;
  (**(code **)(**(int **)(param_1 + 8) + 0x50))(param_1_00 + 0x4c);
  uVar2 = FUN_008f7e50(0xb);
  (**(code **)(**(int **)(iVar1 + 8) + 0x78))(uVar2);
  local_14[0] = 0;
  param_1 = 0;
  FUN_004325b6(L"ABCDHgj");
  local_8 = 0;
  (**(code **)(**(int **)(iVar1 + 8) + 0xa4))(local_48,local_14,&param_1,0,0,0);
  local_8 = 0xffffffff;
  FUN_0040159c();
  local_24 = *param_4;
  iStack_20 = param_4[1];
  iStack_18 = param_4[3];
  local_1c = param_4[2] + -1;
  FUN_00473c14(&local_24);
  (**(code **)(**(int **)(iVar1 + 8) + 0x168))
            (param_3 + 4,*param_4 + 1,(param_4[3] - param_1) / 2 + param_4[1]);
  (**(code **)(**(int **)(iVar1 + 8) + 0xc0))();
  return;
}



void __thiscall FUN_007af74a(int param_1_00,int param_1,undefined4 param_2,int param_3,int *param_4)

{
  uint uVar1;
  char cVar2;
  int iVar3;
  undefined4 uVar4;
  int local_84;
  int local_80;
  int local_7c;
  int local_78;
  int local_74;
  int local_70;
  undefined **local_6c;
  int iStack_68;
  undefined **ppuStack_60;
  undefined4 uStack_5c;
  undefined auStack_54 [4];
  undefined **ppuStack_50;
  undefined **ppuStack_2c;
  undefined4 uStack_28;
  void *local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  uStack_10 = &LAB_00c29467;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_74 = 0;
  local_80 = 0;
  local_7c = param_1_00;
  if ((*(byte *)(param_1_00 + 0x54) & 1) != 0) {
    (**(code **)(**(int **)(param_1 + 8) + 0x50))
              (param_1_00 + 0x4c,DAT_0323f878 ^ (uint)&stack0xffffff70);
    FUN_004325b6(L"ABCDHgj");
    uStack_10 = (undefined *)0x0;
    (**(code **)(**(int **)(param_1 + 8) + 0xa4))(auStack_54,&local_6c,&local_84,0,0,0);
    uStack_28 = 0xffffffff;
    FUN_0040159c();
    (**(code **)(**(int **)(param_1 + 8) + 0xa4))
              (param_3 + 4,&stack0xffffff70,&stack0xffffff78,0,0,0);
  }
  local_78 = 0;
  local_70 = 0;
  local_6c = (undefined **)0x0;
  local_84 = 0;
  if (*(int *)(param_1_00 + 0x58) == 3) {
    if (*(int *)(param_3 + 0x2c) == 0) {
      local_6c = (undefined **)0x0;
    }
    else {
      local_6c = *(undefined ***)(*(int *)(param_3 + 0x2c) + 8);
    }
    local_78 = (*param_4 - (int)local_6c / 2) + param_4[2] / 2;
    if (*(int *)(param_3 + 0x2c) == 0) {
      local_6c = (undefined **)0x0;
    }
    else {
      local_6c = *(undefined ***)(*(int *)(param_3 + 0x2c) + 0xc);
    }
    iStack_68 = param_4[3];
    iVar3 = (int)local_6c / 2;
    local_6c = (undefined **)((*param_4 - local_74 / 2) + 1 + param_4[2] / 2);
    local_70 = ((iStack_68 - local_80) / 2 - iVar3) + param_4[1];
    local_84 = (param_4[1] - local_80) + -1 + iStack_68;
    param_1_00 = local_7c;
  }
  else if (*(int *)(param_1_00 + 0x58) == 1) {
    local_78 = *param_4 + 3;
    if (*(int *)(param_3 + 0x2c) == 0) {
      local_6c = (undefined **)0x0;
    }
    else {
      local_6c = *(undefined ***)(*(int *)(param_3 + 0x2c) + 0xc);
    }
    local_70 = (param_4[1] - (int)local_6c / 2) + param_4[3] / 2;
    iVar3 = *(int *)(param_3 + 0x2c);
    if (iVar3 != 0) {
      iVar3 = *(int *)(iVar3 + 8);
    }
    local_6c = (undefined **)(iVar3 + 3 + local_78);
    local_84 = (param_4[1] - local_80 / 2) + param_4[3] / 2;
  }
  uVar1 = *(uint *)(param_3 + 0xa0);
  if ((uVar1 & 8) != 0) goto LAB_007afbb2;
  if ((uVar1 & 4) == 0) {
    if (((uVar1 & 2) == 0) && (*(char *)(param_3 + 0xaa) == '\0')) {
      if ((uVar1 & 0x20) == 0) goto LAB_007afbb2;
      uVar4 = FUN_009566f0(param_1_00 + 0x38,1,100);
      uStack_c = 9;
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar4);
      uStack_10 = (undefined *)0xffffffff;
      local_6c = wxObject::vftable;
      FUN_0083e850();
      uVar4 = FUN_00472130(0xaa);
      uStack_10 = (undefined *)0xa;
      uVar4 = FUN_0095d7e0(uVar4,100);
      uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,0xb);
      (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar4);
      uStack_c = CONCAT31(uStack_c._1_3_,10);
      FUN_008f7630();
      ppuStack_2c = wxObject::vftable;
      goto LAB_007afb9c;
    }
    uVar4 = FUN_009566f0(param_1_00 + 0x38,1,100);
    uStack_c = 4;
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar4);
    uStack_10 = (undefined *)0xffffffff;
    local_6c = wxObject::vftable;
    FUN_0083e850();
    uVar4 = FUN_00472130(0xaa);
    uStack_10 = (undefined *)0x5;
    uVar4 = FUN_0095d7e0(uVar4,100);
    uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,6);
    (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar4);
    uStack_c = CONCAT31(uStack_c._1_3_,5);
    FUN_008f7630();
    uStack_c = 0xffffffff;
    ppuStack_50 = wxObject::vftable;
    FUN_0083e850();
    if ((*(byte *)(param_3 + 0xa0) & 0x20) != 0) {
      uVar4 = FUN_00472130(0xb4);
      uStack_c = 7;
      uVar4 = FUN_0095d7e0(uVar4,100);
      uStack_c._0_1_ = 8;
      (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar4);
      uStack_c = CONCAT31(uStack_c._1_3_,7);
      goto LAB_007afb7f;
    }
  }
  else {
    uVar4 = FUN_009566f0(param_1_00 + 0x38,1,100);
    uStack_c = 1;
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar4);
    uStack_10 = (undefined *)0xffffffff;
    local_6c = wxObject::vftable;
    FUN_0083e850();
    uVar4 = FUN_00472130(0x96);
    uStack_10 = (undefined *)0x2;
    uVar4 = FUN_0095d7e0(uVar4,100);
    uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,3);
    (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar4);
    uStack_c = CONCAT31(uStack_c._1_3_,2);
LAB_007afb7f:
    FUN_008f7630();
    ppuStack_50 = wxObject::vftable;
LAB_007afb9c:
    uStack_c = 0xffffffff;
    FUN_0083e850();
  }
  FUN_007b0d9e(param_4);
  param_1_00 = local_7c;
LAB_007afbb2:
  uStack_5c = 0;
  ppuStack_60 = wxBitmap::vftable;
  uStack_c = 0xc;
  iVar3 = param_3 + 0x30;
  if ((*(byte *)(param_3 + 0xa0) & 8) == 0) {
    iVar3 = param_3 + 0x28;
  }
  FUN_0043d987(iVar3);
  cVar2 = FUN_00414f01();
  if (cVar2 != '\0') {
    (**(code **)(**(int **)(param_1 + 8) + 0x164))(&ppuStack_60,local_78,local_70,1);
    uVar4 = FUN_008f7e50(0xb);
    (**(code **)(**(int **)(param_1 + 8) + 0x78))(uVar4);
    if ((*(byte *)(param_3 + 0xa0) & 8) != 0) {
      (**(code **)(**(int **)(param_1 + 8) + 0x78))(&DAT_032ef550);
    }
    if (((*(byte *)(param_1_00 + 0x54) & 1) != 0) && (*(int *)(param_3 + 0x18) != 0)) {
      (**(code **)(**(int **)(param_1 + 8) + 0x168))(param_3 + 4,local_6c,local_84);
    }
  }
  uStack_c = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_007afc7f(int param_1_00,int param_1,undefined4 param_2,int param_3,int *param_4)

{
  char cVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int unaff_EBX;
  undefined4 unaff_ESI;
  int local_b0;
  undefined **local_ac;
  int local_a8;
  undefined auStack_a4 [4];
  int local_a0;
  int local_9c;
  undefined4 uStack_98;
  int local_94;
  int local_90;
  int local_8c;
  undefined **ppuStack_88;
  undefined4 uStack_84;
  int local_80;
  undefined **ppuStack_7c;
  undefined4 uStack_78;
  int iStack_74;
  int local_70;
  int local_6c;
  undefined4 local_68;
  int local_64;
  int local_60;
  int local_5c;
  int local_58;
  int local_54;
  undefined **ppuStack_50;
  undefined **ppuStack_2c;
  void *local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  uStack_10 = &LAB_00c293de;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_60 = *param_4;
  local_9c = param_4[1];
  iVar5 = param_4[3];
  local_94 = 0;
  local_a0 = 0;
  local_b0 = 0;
  local_8c = 0;
  local_80 = 0;
  local_90 = 0;
  local_a8 = param_4[2] + -10;
  local_70 = local_60 + -0xb + param_4[2];
  local_68 = 0xb;
  local_6c = local_9c;
  local_64 = iVar5;
  local_5c = local_9c;
  local_58 = local_a8;
  local_54 = iVar5;
  if ((*(byte *)(param_1_00 + 0x54) & 1) != 0) {
    (**(code **)(**(int **)(param_1 + 8) + 0x50))
              (param_1_00 + 0x4c,DAT_0323f878 ^ (uint)&stack0xffffff40);
    if ((*(byte *)(unaff_EBX + 0x54) & 1) != 0) {
      FUN_004325b6(L"ABCDHgj");
      uStack_10 = (undefined *)0x0;
      (**(code **)(**(int **)(param_1 + 8) + 0xa4))(&local_54,&uStack_78,auStack_a4,0,0,0);
      uStack_10 = (undefined *)0xffffffff;
      FUN_0040159c();
      uStack_98 = 0;
    }
    (**(code **)(**(int **)(param_1 + 8) + 0xa4))(param_3 + 4,&uStack_98,&local_b0,0,0,0);
  }
  iVar3 = *(int *)(param_1_00 + 8);
  if (iVar3 != 0) {
    iVar3 = *(int *)(iVar3 + 8);
  }
  iVar2 = *(int *)(param_1_00 + 8);
  iStack_74 = (local_70 - iVar3 / 2) + 5;
  if (iVar2 != 0) {
    iVar2 = *(int *)(iVar2 + 0xc);
  }
  local_ac = (undefined **)((iVar5 / 2 - iVar2 / 2) + local_9c);
  if (*(int *)(param_1_00 + 0x58) == 3) {
    iVar3 = *(int *)(param_3 + 0x2c);
    if (iVar3 != 0) {
      iVar3 = *(int *)(iVar3 + 8);
    }
    local_80 = (local_a8 / 2 - iVar3 / 2) + local_60;
    if (*(int *)(param_3 + 0x2c) == 0) {
      local_b0 = 0;
    }
    else {
      local_b0 = *(int *)(*(int *)(param_3 + 0x2c) + 0xc);
    }
    local_90 = ((iVar5 - local_a0) / 2 - local_b0 / 2) + local_9c;
    local_b0 = (param_4[2] / 2 - local_94 / 2) + 1 + *param_4;
    local_8c = (param_4[1] - local_a0) + -1 + param_4[3];
  }
  else if (*(int *)(param_1_00 + 0x58) == 1) {
    local_80 = *param_4 + 3;
    if (*(int *)(param_3 + 0x2c) == 0) {
      local_9c = 0;
    }
    else {
      local_9c = *(int *)(*(int *)(param_3 + 0x2c) + 0xc);
    }
    local_90 = (param_4[3] / 2 - local_9c / 2) + param_4[1];
    iVar5 = *(int *)(param_3 + 0x2c);
    if (iVar5 != 0) {
      iVar5 = *(int *)(iVar5 + 8);
    }
    local_b0 = iVar5 + 3 + local_80;
    local_8c = (param_4[3] / 2 - local_a0 / 2) + param_4[1];
  }
  if ((*(uint *)(param_3 + 0xa0) & 4) == 0) {
    if (((*(uint *)(param_3 + 0xa0) & 2) == 0) && (*(char *)(param_3 + 0xaa) == '\0'))
    goto LAB_007b0085;
    uVar4 = FUN_009566f0(param_1_00 + 0x38,1,100);
    uStack_c = 4;
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar4);
    uStack_10 = (undefined *)0xffffffff;
    local_ac = wxObject::vftable;
    FUN_0083e850();
    uVar4 = FUN_00472130(0xaa);
    uStack_10 = (undefined *)0x5;
    uVar4 = FUN_0095d7e0(uVar4,100);
    uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,6);
    (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar4);
    uStack_c = CONCAT31(uStack_c._1_3_,5);
    FUN_008f7630();
    ppuStack_2c = wxObject::vftable;
  }
  else {
    uVar4 = FUN_009566f0(param_1_00 + 0x38,1,100);
    uStack_c = 1;
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar4);
    uStack_10 = (undefined *)0xffffffff;
    local_ac = wxObject::vftable;
    FUN_0083e850();
    uVar4 = FUN_00472130(0x8c);
    uStack_10 = (undefined *)0x2;
    uVar4 = FUN_0095d7e0(uVar4,100);
    uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,3);
    (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar4);
    uStack_c = CONCAT31(uStack_c._1_3_,2);
    FUN_008f7630();
    ppuStack_50 = wxObject::vftable;
  }
  uStack_c = 0xffffffff;
  FUN_0083e850();
  FUN_007b0d9e(&local_60);
  FUN_007b0d9e(&local_70);
LAB_007b0085:
  uStack_84 = 0;
  ppuStack_88 = wxBitmap::vftable;
  uStack_78 = 0;
  ppuStack_7c = wxBitmap::vftable;
  uStack_c = 8;
  if ((*(byte *)(param_3 + 0xa0) & 8) == 0) {
    FUN_0043d987(param_3 + 0x28);
    iVar5 = param_1_00 + 4;
  }
  else {
    FUN_0043d987(param_3 + 0x30);
    iVar5 = param_1_00 + 0xc;
  }
  FUN_0043d987(iVar5);
  cVar1 = FUN_00414f01();
  if (cVar1 != '\0') {
    (**(code **)(**(int **)(param_1 + 8) + 0x164))(&ppuStack_88,local_80,local_90,1);
    (**(code **)(**(int **)(param_1 + 8) + 0x164))(&local_8c,uStack_84,unaff_ESI,1);
    uVar4 = FUN_008f7e50(0xb);
    (**(code **)(**(int **)(param_1 + 8) + 0x78))(uVar4);
    if ((*(byte *)(param_3 + 0xa0) & 8) != 0) {
      (**(code **)(**(int **)(param_1 + 8) + 0x78))(&DAT_032ef550);
    }
    if (((*(byte *)(param_1_00 + 0x54) & 1) != 0) && (*(int *)(param_3 + 0x18) != 0)) {
      (**(code **)(**(int **)(param_1 + 8) + 0x168))(param_3 + 4,local_b0,local_8c);
    }
  }
  uStack_c = CONCAT31(uStack_c._1_3_,7);
  FUN_008f7630();
  uStack_c = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __thiscall
FUN_007b01be(int param_1_00,int param_1,undefined4 param_2,undefined *param_3,int *param_4)

{
  undefined4 uVar1;
  undefined *puVar2;
  undefined local_44 [36];
  undefined local_20 [4];
  undefined local_1c [4];
  int local_18;
  undefined *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  local_8 = 0x7b01ca;
  puVar2 = &LAB_00c2936f;
  if (((*(byte *)(param_1_00 + 0x54) & 1) != 0) && (*(int *)(param_1_00 + 0x58) == 3)) {
    local_14[0] = (undefined *)0x0;
    local_18 = 0;
    (**(code **)(**(int **)(param_1 + 8) + 0x50))(param_1_00 + 0x4c);
    if ((*(byte *)(param_1_00 + 0x54) & 1) != 0) {
      FUN_004325b6(L"ABCDHgj");
      local_8 = 0;
      (**(code **)(**(int **)(param_1 + 8) + 0xa4))(local_44,local_1c,&local_18,0,0,0);
      local_8 = 0xffffffff;
      FUN_0040159c();
      local_14[0] = (undefined *)0x0;
    }
    (**(code **)(**(int **)(param_1 + 8) + 0xa4))(param_3 + 4,local_14,local_20,0,0,0);
    puVar2 = local_14[0];
    if ((int)local_14[0] <= param_4[2]) {
      uVar1 = FUN_008f7e50(0xb);
      puVar2 = (undefined *)(**(code **)(**(int **)(param_1 + 8) + 0x78))(uVar1);
      if (((*(byte *)(param_1_00 + 0x54) & 1) != 0) &&
         (puVar2 = param_3, *(int *)(param_3 + 0x18) != 0)) {
        puVar2 = (undefined *)
                 (**(code **)(**(int **)(param_1 + 8) + 0x168))
                           (param_3 + 4,(param_4[2] / 2 - (int)local_14[0] / 2) + 1 + *param_4,
                            ((param_4[3] + param_4[1]) - local_18) + -1);
      }
    }
  }
  return puVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007b02bd(int param_1_00,int *param_1,int param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int *piVar2;
  undefined local_40 [36];
  undefined local_1c [8];
  int local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  iVar1 = param_2;
  uStack_4 = 0x30;
  local_8 = 0x7b02c9;
  (**(code **)(**(int **)(param_2 + 8) + 0x50))(param_1_00 + 0x4c);
  param_2 = 0;
  local_14[0] = 0;
  FUN_004325b6(L"ABCDHgj");
  local_8 = 0;
  (**(code **)(**(int **)(iVar1 + 8) + 0xa4))(local_40,&param_2,local_14,0,0,0);
  local_8 = 0xffffffff;
  FUN_0040159c();
  param_2 = *(int *)(param_4 + 0x8c);
  if (param_2 == -1) {
    piVar2 = (int *)FUN_007b0d6d(local_1c,param_4 + 4);
    param_2 = *piVar2;
  }
  *param_1 = param_2;
  param_1[1] = local_14[0];
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007b034d(int param_1_00,int *param_1,int param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  undefined local_40 [36];
  int local_1c;
  int local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  iVar2 = param_4;
  uStack_4 = 0x30;
  local_8 = 0x7b0359;
  local_1c = param_1_00;
  cVar3 = (**(code **)(*(int *)(param_4 + 0x28) + 0x10))();
  iVar1 = param_2;
  if ((cVar3 == '\0') && ((*(byte *)(param_1_00 + 0x54) & 1) == 0)) {
    local_14 = 0x10;
    *param_1 = 0x10;
  }
  else {
    if (*(int *)(iVar2 + 0x2c) == 0) {
      param_4 = 0;
    }
    else {
      param_4 = *(int *)(*(int *)(iVar2 + 0x2c) + 8);
    }
    if (*(int *)(iVar2 + 0x2c) == 0) {
      local_14 = 0;
    }
    else {
      local_14 = *(int *)(*(int *)(iVar2 + 0x2c) + 0xc);
    }
    if ((*(byte *)(local_1c + 0x54) & 1) != 0) {
      (**(code **)(**(int **)(param_2 + 8) + 0x50))(local_1c + 0x4c);
      if (*(int *)(local_1c + 0x58) == 3) {
        FUN_004325b6(L"ABCDHgj");
        local_8 = 0;
        (**(code **)(**(int **)(iVar1 + 8) + 0xa4))(local_40,&param_2,&local_18,0,0,0);
        local_8 = 0xffffffff;
        FUN_0040159c();
        local_14 = local_14 + local_18;
        if (*(int *)(iVar2 + 0x18) != 0) {
          (**(code **)(**(int **)(iVar1 + 8) + 0xa4))(iVar2 + 4,&param_2,&local_18,0,0,0);
          if (param_4 <= param_2 + 6) {
            param_4 = param_2 + 6;
          }
        }
      }
      else if ((*(int *)(local_1c + 0x58) == 1) && (*(int *)(iVar2 + 0x18) != 0)) {
        param_4 = param_4 + 6;
        (**(code **)(**(int **)(iVar1 + 8) + 0xa4))(iVar2 + 4,&param_2,&local_18,0,0,0);
        param_4 = param_4 + param_2;
        if (local_14 <= local_18) {
          local_14 = local_18;
        }
      }
    }
    if (*(char *)(iVar2 + 0xa9) != '\0') {
      param_4 = param_4 + 0xe;
    }
    *param_1 = param_4;
  }
  param_1[1] = local_14;
  return;
}



void __thiscall FUN_007b049a(int param_1_00,int param_1,undefined4 param_2,int *param_3)

{
  int iVar1;
  bool bVar2;
  undefined **local_50;
  int local_4c;
  int local_48;
  int local_44;
  undefined local_40 [4];
  undefined **ppuStack_3c;
  undefined local_2c [8];
  void *pvStack_24;
  uint uStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1c79d;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  bVar2 = (*(byte *)(param_1_00 + 0x54) & 0x20) != 0;
  iVar1 = param_3[2];
  local_4c = param_3[3];
  if (bVar2) {
    local_4c = local_4c / 2;
    local_48 = (int)(iVar1 * 3 + (iVar1 * 3 >> 0x1f & 3U)) >> 2;
    iVar1 = iVar1 / 2 - local_48 / 2;
    local_44 = 1;
  }
  else {
    iVar1 = iVar1 / 2;
    local_44 = (int)(local_4c * 3 + (local_4c * 3 >> 0x1f & 3U)) >> 2;
    local_4c = local_4c / 2 - local_44 / 2;
    local_48 = 1;
  }
  local_4c = param_3[1] + local_4c;
  local_50 = (undefined **)(*param_3 + iVar1);
  FUN_00472130(0x50,DAT_0323f878 ^ (uint)&stack0xffffffa0);
  local_c = 0;
  FUN_00472130(0x50);
  local_c = CONCAT31(local_c._1_3_,1);
  (**(code **)(**(int **)(param_1 + 8) + 0x130))
            (&local_50,local_2c,local_40,(bVar2 - 1U & 0x60) + 0x20);
  uStack_1c = uStack_1c & 0xffffff00;
  local_50 = wxObject::vftable;
  FUN_0083e850();
  uStack_1c = 0xffffffff;
  ppuStack_3c = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_24;
  return;
}



void __thiscall FUN_007b05f6(int param_1_00,int param_1,undefined4 param_2,int *param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  bool bVar5;
  bool bVar6;
  int local_8;
  
  local_8 = 0;
  while( true ) {
    if ((*(byte *)(param_1_00 + 0x54) & 0x20) == 0) {
      iVar3 = param_3[1] + 5 + local_8;
      iVar2 = param_3[3] + -5;
      iVar4 = *param_3 + 3;
      bVar6 = SBORROW4(iVar3,iVar2);
      iVar1 = iVar3 - iVar2;
      bVar5 = iVar3 == iVar2;
    }
    else {
      iVar4 = local_8 + 5 + *param_3;
      iVar2 = param_3[2] + -5;
      iVar3 = param_3[1] + 3;
      bVar6 = SBORROW4(iVar4,iVar2);
      iVar1 = iVar4 - iVar2;
      bVar5 = iVar4 == iVar2;
    }
    if (!bVar5 && bVar6 == iVar1 < 0) break;
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x5c);
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(iVar4,iVar3);
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 100);
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(iVar4,iVar3 + 1);
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(iVar4 + 1,iVar3);
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x6c);
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(iVar4 + 2,iVar3 + 1);
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(iVar4 + 2,iVar3 + 2);
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(iVar4 + 1,iVar3 + 2);
    local_8 = local_8 + 4;
  }
  return;
}



void __thiscall
FUN_007b06e1(undefined **param_1_00,int param_1,undefined4 param_2,int *param_3,byte param_4)

{
  undefined **ppuVar1;
  undefined4 uVar2;
  int iVar3;
  int local_44;
  undefined auStack_40 [20];
  undefined **local_2c;
  undefined uStack_28;
  undefined4 uStack_24;
  undefined uStack_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c1c772;
  local_14 = ExceptionList;
  ppuVar1 = (undefined **)(DAT_0323f878 ^ (uint)&stack0xffffffa8);
  ExceptionList = &local_14;
  if ((param_4 & 6) != 0) {
    FUN_007b0d3e(&local_44);
    FUN_00472130(0xaa);
    local_c = 0;
    if ((*(byte *)(param_1_00 + 0x15) & 0x20) == 0) {
      uVar2 = FUN_009566f0(param_1_00 + 0xe,1,100);
      local_c = CONCAT31(local_c._1_3_,4);
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar2);
      puStack_10 = (undefined *)((uint)puStack_10 & 0xffffff00);
      FUN_0083e850();
      (**(code **)(**(int **)(param_1 + 8) + 0x140))
                (*param_3,param_3[1],*param_3,param_3[3] + param_3[1]);
      uVar2 = FUN_009566f0(auStack_40,1,100);
      uStack_20 = 5;
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar2);
      uStack_24 = (void *)((uint)uStack_24 & 0xffffff00);
      ppuVar1 = wxObject::vftable;
      FUN_0083e850();
      uVar2 = FUN_0095d7e0(&local_44,100);
      uStack_24 = (void *)CONCAT31(uStack_24._1_3_,6);
      (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar2);
      uStack_28 = 0;
      FUN_008f7630();
      (**(code **)(**(int **)(param_1 + 8) + 0x150))(*param_3 + 1,param_3[1],param_3[2],param_3[3]);
    }
    else {
      uVar2 = FUN_009566f0(param_1_00 + 0xe,1,100);
      local_c = CONCAT31(local_c._1_3_,1);
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar2);
      puStack_10 = (undefined *)((uint)puStack_10 & 0xffffff00);
      FUN_0083e850();
      (**(code **)(**(int **)(param_1 + 8) + 0x140))
                (*param_3,param_3[1],param_3[2] + *param_3,param_3[1]);
      uVar2 = FUN_009566f0(auStack_40,1,100);
      uStack_20 = 2;
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar2);
      uStack_24 = (void *)((uint)uStack_24 & 0xffffff00);
      ppuVar1 = wxObject::vftable;
      FUN_0083e850();
      uVar2 = FUN_0095d7e0(&local_44,100);
      uStack_24 = (void *)CONCAT31(uStack_24._1_3_,3);
      (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar2);
      uStack_28 = 0;
      FUN_008f7630();
      (**(code **)(**(int **)(param_1 + 8) + 0x150))(*param_3,param_3[1] + 1,param_3[2],param_3[3]);
    }
    local_c = 0xffffffff;
    local_2c = wxObject::vftable;
    FUN_0083e850();
    param_1_00 = wxObject::vftable;
  }
  if (param_1_00[6] == (undefined *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *(int *)(param_1_00[6] + 8);
  }
  local_44 = (param_3[2] - iVar3) / 2 + 1 + *param_3;
  if (param_1_00[6] == (undefined *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = *(int *)(param_1_00[6] + 0xc);
  }
  (**(code **)(**(int **)(param_1 + 8) + 0x164))
            (param_1_00 + 5,local_44,(param_3[3] - iVar3) / 2 + 1 + param_3[1],1,ppuVar1);
  ExceptionList = uStack_24;
  return;
}



undefined4 __thiscall FUN_007b0973(int param_1_00,int param_1)

{
  undefined4 uVar1;
  
  if (param_1 == 0) {
    uVar1 = *(undefined4 *)(param_1_00 + 0x74);
  }
  else if (param_1 == 1) {
    uVar1 = *(undefined4 *)(param_1_00 + 0x78);
  }
  else if (param_1 == 2) {
    uVar1 = *(undefined4 *)(param_1_00 + 0x7c);
  }
  else {
    uVar1 = 0;
  }
  return uVar1;
}



void __thiscall FUN_007b0996(int param_1_00,int param_1,undefined4 param_2)

{
  if (param_1 == 0) {
    *(undefined4 *)(param_1_00 + 0x74) = param_2;
  }
  else if (param_1 != 1) {
    if (param_1 != 2) {
      return;
    }
    goto LAB_007b09b1;
  }
  *(undefined4 *)(param_1_00 + 0x78) = param_2;
LAB_007b09b1:
  *(undefined4 *)(param_1_00 + 0x7c) = param_2;
  return;
}



void FUN_007b09b7(undefined4 param_1,int param_2)

{
  int iVar1;
  undefined uVar2;
  uint uVar3;
  int *piVar4;
  undefined4 uVar5;
  int iVar6;
  undefined4 *puVar7;
  uint local_1e4;
  int local_1e0;
  undefined4 local_1dc;
  int iStack_1d8;
  void *local_1d4;
  undefined4 *local_1d0;
  int local_1cc;
  uint local_1c8 [2];
  undefined auStack_1c0 [4];
  int iStack_1bc;
  int iStack_1b4;
  undefined local_1b0 [36];
  undefined local_18c [108];
  undefined local_120 [20];
  int local_10c;
  undefined4 local_104;
  undefined local_fc [20];
  int local_e8;
  undefined4 local_e0;
  int local_d8 [47];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2dee4;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&local_1e4;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xfffffe10;
  ExceptionList = &local_14;
  local_1d0 = (undefined4 *)param_1;
  local_1cc = param_2;
  FUN_004710ac(0);
  local_c = 0;
  local_1c8[0] = *(uint *)(param_2 + 4);
  local_1e0 = 0;
  local_1e4 = 0;
  if (local_1c8[0] != 0) {
    do {
      piVar4 = (int *)FUN_004562d1(local_1e4);
      iVar1 = *piVar4;
      if (*(int *)(iVar1 + 0x9c) == 0) {
        basic_string<>(iVar1 + 4);
        local_104 = 0;
        local_c._0_1_ = 1;
        basic_string<>(iVar1 + 0x40);
        local_e0 = 0;
        local_c._0_1_ = 2;
        uVar2 = (undefined)local_c;
        local_c._0_1_ = 2;
        if (local_e8 != 0) {
          local_1d4 = (void *)FUN_004325b6(&DAT_00dd9510);
          local_c._0_1_ = 3;
          uVar5 = FUN_004325b6(&DAT_00dd9514);
          local_c._0_1_ = 4;
          uVar5 = FUN_008531f0(local_1b0,uVar5,local_fc);
          local_c._0_1_ = 5;
          uVar5 = FUN_008531f0(local_18c,uVar5,local_1d4);
          local_c._0_1_ = 6;
          FID_conflict_append(uVar5,0,0xffffffff);
          FUN_0040159c();
          FUN_0040159c();
          FUN_0040159c();
          local_c._0_1_ = 2;
          FUN_0040159c();
          uVar2 = (undefined)local_c;
        }
        local_c._0_1_ = uVar2;
        if (local_10c == 0) {
          FUN_00432199(&DAT_00dd951c);
        }
        local_1d4 = operator_new(0xb8);
        local_c._0_1_ = 7;
        if (local_1d4 == (void *)0x0) {
          iVar6 = 0;
        }
        else {
          iVar6 = FUN_0095b150(local_d8,*(undefined4 *)(iVar1 + 0x98),local_120,iVar1 + 0x40,0,0);
        }
        local_c._0_1_ = 2;
        FUN_0043d987(iVar1 + 0x28);
        *(undefined *)(iVar6 + 0x68) = 1;
        (**(code **)(local_d8[0] + 0x6c))(iVar6);
        local_1e0 = local_1e0 + 1;
        FUN_0040159c();
        local_c = (uint)local_c._1_3_ << 8;
        FUN_0040159c();
      }
      else if ((*(int *)(iVar1 + 0x9c) == -1) && (local_1e0 != 0)) {
        FUN_00470f04(uVar3);
      }
      local_1e4 = local_1e4 + 1;
    } while (local_1e4 < local_1c8[0]);
  }
  FUN_00910c30(&local_1dc);
  puVar7 = (undefined4 *)FUN_00615428(local_1c8,&local_1dc);
  local_1dc = *puVar7;
  iStack_1d8 = puVar7[1];
  FUN_007b0d3e(auStack_1c0);
  iStack_1d8 = iStack_1b4 + iStack_1bc;
  puVar7 = (undefined4 *)operator_new(0x44);
  local_c._0_1_ = 8;
  local_1d0 = puVar7;
  if (puVar7 == (undefined4 *)0x0) {
    puVar7 = (undefined4 *)0x0;
  }
  else {
    FUN_00845b70();
    *puVar7 = W09E346CD::ToolbarCommandCapture::vftable;
    puVar7[0x10] = 0;
  }
  local_c = (uint)local_c._1_3_ << 8;
  FUN_0091bd90(puVar7);
  FUN_0091ca70(local_d8,local_1dc,iStack_1d8);
  FUN_0091bf10(1);
  local_c = 0xffffffff;
  FUN_0092de10();
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_007b0d06(undefined4 param_1_00,undefined4 param_1)

{
  FID_conflict_append(param_1,0,0xffffffff);
  return param_1_00;
}



void __thiscall FUN_007b0d1c(undefined4 *param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  *param_1_00 = *param_1;
  param_1_00[1] = param_1[1];
  param_1_00[2] = *param_2;
  param_1_00[3] = param_2[1];
  return;
}



undefined4 __thiscall FUN_007b0d3e(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  undefined *puVar2;
  undefined local_14 [8];
  undefined local_c [8];
  
  uVar1 = FUN_0043d8d2(local_c);
  puVar2 = local_14;
  uVar1 = (**(code **)(*param_1_00 + 0x78))(puVar2,uVar1);
  FUN_007b0d1c(uVar1,puVar2);
  return param_1;
}



void __thiscall FUN_007b0d6d(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  int local_8;
  
  local_8 = param_1_00;
  (**(code **)(**(int **)(param_1_00 + 8) + 0xa4))(param_2,&param_2,&local_8,0,0,0);
  *param_1 = param_2;
  param_1[1] = local_8;
  return;
}



void __thiscall FUN_007b0d9e(int param_1_00,undefined4 *param_1)

{
  (**(code **)(**(int **)(param_1_00 + 8) + 0x150))(*param_1,param_1[1],param_1[2],param_1[3]);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007b0dbb(undefined4 *param_1,char param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 local_8c [5];
  undefined4 uStack_78;
  undefined4 uStack_74;
  undefined4 uStack_70;
  undefined local_30 [20];
  undefined **local_1c;
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_14 = 0;
  uStack_70 = 0;
  uStack_74 = 0;
  local_8 = 1;
  uStack_78 = 0x7b0ddd;
  FUN_00874e00();
  local_18 = local_8c;
  local_8._0_1_ = 2;
  FUN_00672a11();
  puVar2 = (undefined4 *)FUN_004748d4();
  local_8._0_1_ = 3;
  local_8c[0] = 0;
  local_18 = local_8c;
  cVar1 = (**(code **)*puVar2)(local_30);
  local_8._0_1_ = 2;
  FUN_00507e58();
  if (cVar1 == '\0') {
    param_1[1] = 0;
    *param_1 = wxImage::vftable;
    local_14 = 1;
    local_8._0_1_ = 1;
    FUN_00874be0();
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_00507e58();
  }
  else {
    uVar3 = FUN_00874f80(local_30);
    if (param_2 == '\0') {
      local_8._0_1_ = 6;
      FUN_004706ad(uVar3,0x11,0xffffffff);
      local_14 = 1;
      local_8._0_1_ = 2;
      FUN_00874b30();
    }
    else {
      local_8._0_1_ = 4;
      FUN_004706ad(uVar3,0x11,0xffffffff);
      local_8._0_1_ = 5;
      FUN_00901700(param_1,1);
      local_8._0_1_ = 4;
      local_14 = 1;
      local_1c = wxObject::vftable;
      FUN_0083e850();
      local_8._0_1_ = 2;
      FUN_00874b30();
    }
    local_8._0_1_ = 1;
    FUN_00874be0();
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_00507e58();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007b0ef9(int param_1_00,undefined4 param_1,int param_2)

{
  char local_14;
  
  FUN_0043d406(param_1_00 + 4);
  FUN_005d11c9(param_1_00 + 0xc);
  if (local_14 != '\0') {
    FUN_00401477();
  }
  if (param_2 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_007b0f51(int param_1_00,undefined4 *param_1)

{
  FUN_0043d406(param_1_00 + 4);
  *param_1 = *(undefined4 *)(param_1_00 + 0xc);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0x10);
}



undefined4 __thiscall FUN_007b1073(undefined4 param_1_00,byte param_1)

{
  FUN_004f8d85(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007b1090(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x007b1095. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 0x34))();
  return;
}



void __thiscall FUN_007b1098(int param_1_00,undefined4 *param_1)

{
  *param_1 = *(undefined4 *)(param_1_00 + 0x3c);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0x40);
}



void __thiscall FUN_007b10b4(int param_1_00,undefined4 *param_1)

{
  *param_1 = *(undefined4 *)(param_1_00 + 0x44);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0x48);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b10d0(void)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



void __fastcall FUN_007b1135(int param_1)

{
  int iVar1;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  iVar1 = *(int *)(param_1 + 8);
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_00478186(iVar1 + 0x20,&local_14,local_14,local_10,local_c,local_8);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b1175(void)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_007b123e(int *param_1)

{
  int iVar1;
  int **ppiVar2;
  undefined4 *puVar3;
  undefined *puStack_2a0;
  undefined *puStack_29c;
  undefined4 uStack_298;
  int local_138;
  undefined local_10c [140];
  undefined4 local_80;
  undefined4 local_7c [4];
  undefined *local_6c;
  int local_68;
  int *local_64;
  int local_60;
  int local_5c;
  int local_58;
  undefined local_46;
  undefined local_45;
  undefined local_3f;
  undefined local_3e;
  undefined local_3c;
  undefined local_3a;
  int *local_34;
  undefined **local_2c;
  undefined local_24 [28];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_7c;
  local_7c[0] = 0x1e4;
  local_80 = 0x7b125f;
  *(undefined *)(param_1 + 4) = 0;
  local_34 = param_1;
  iVar1 = (**(code **)(*(int *)param_1[2] + 0x34))();
  if (iVar1 != 0) {
    (**(code **)(*(int *)param_1[2] + 0x34))();
    FUN_00b94080();
  }
  FUN_004779ee();
  ppiVar2 = (int **)(**(code **)(*param_1 + 4))();
  local_80 = 0;
  (**(code **)(**ppiVar2 + 4))();
  FUN_0047761f();
  local_80 = 0xffffffff;
  if (local_138 != 0) {
    FUN_0040127a();
  }
  (**(code **)(*param_1 + 4))();
  local_80 = 1;
  (**(code **)(*local_64 + 0xc))();
  local_80._0_1_ = 2;
  (**(code **)(*local_64 + 0x10))();
  local_80 = CONCAT31(local_80._1_3_,3);
  if (local_5c != 0) {
    local_3f = 0;
    local_3e = 0;
    uStack_298 = 0;
    local_2c = &puStack_2a0;
    local_46 = 0;
    local_3a = 0;
    puStack_2a0 = local_6c;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&local_68);
  }
  local_80._0_1_ = 2;
  if (local_68 != 0) {
    FUN_0040127a();
  }
  local_80 = CONCAT31(local_80._1_3_,1);
  if (local_58 != 0) {
    FUN_0040127a();
  }
  local_80 = 0xffffffff;
  if (local_60 != 0) {
    FUN_0040127a();
  }
  iVar1 = param_1[2];
  uStack_298 = 0x7b146d;
  InterlockedExchange((LONG *)(iVar1 + 0x3c),0);
  (**(code **)(*(int *)(iVar1 + 0x40) + 0xc))();
  (**(code **)(**(int **)(iVar1 + 0x7c) + 0xc))();
  FUN_00b57540();
  local_80 = 0xb;
  FUN_00b58430();
  local_80._0_1_ = 0xd;
  local_3c = 0;
  local_45 = 0;
  uStack_298 = 0;
  puStack_29c = local_24;
  puStack_2a0 = local_10c;
  puVar3 = (undefined4 *)FUN_00467341();
  local_80 = CONCAT31(local_80._1_3_,0xe);
  puStack_2a0 = (undefined *)*puVar3;
  local_2c = &puStack_2a0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar3 + 1);
}



void Catch_007b1837(void)

{
  int *piVar1;
  int unaff_EBP;
  int iStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x7b183f;
  uStack_4 = (**(code **)(**(int **)(unaff_EBP + -0x14) + 4))();
  iStack_8 = unaff_EBP + -0x6c;
  piVar1 = (int *)FUN_00467398();
  *(undefined *)(unaff_EBP + -4) = 0x21;
  iStack_8 = *piVar1;
  *(int **)(unaff_EBP + 0x54) = &iStack_8;
                    // WARNING: Subroutine does not return
  FUN_0043c023(piVar1 + 1);
}



void Catch_007b193c(void)

{
  undefined4 *puVar1;
  int unaff_EBP;
  undefined4 local_8;
  undefined4 local_4;
  
  local_8 = 0xa0d;
  local_4 = 0x41;
  *(undefined4 **)(unaff_EBP + 0x54) = &local_8;
  puVar1 = (undefined4 *)FUN_00465be3(unaff_EBP + -0x98);
  *(undefined *)(unaff_EBP + -4) = 0x25;
  local_8 = *puVar1;
  *(undefined4 **)(unaff_EBP + 0x54) = &local_8;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void Catch_All_007b1a24(void)

{
  undefined4 *puVar1;
  int unaff_EBP;
  undefined4 local_8;
  undefined4 local_4;
  
  local_8 = 0xa0c;
  local_4 = 0x130;
  *(undefined4 **)(unaff_EBP + 0x54) = &local_8;
  puVar1 = (undefined4 *)FUN_00465be3(unaff_EBP + -0xb8);
  *(undefined *)(unaff_EBP + -4) = 0x28;
  local_8 = *puVar1;
  *(undefined4 **)(unaff_EBP + 0x54) = &local_8;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void __fastcall FUN_007b1aed(int *param_1)

{
  undefined uVar1;
  int iVar2;
  char cVar3;
  int **ppiVar4;
  
  FUN_0046e65a();
  while( true ) {
    FUN_0046e65a();
    cVar3 = FUN_0041c034();
    if (cVar3 == '\0') break;
    ppiVar4 = (int **)FUN_007c96e9();
    (**(code **)(**ppiVar4 + 0x2c))();
    FUN_0062d58f();
  }
  (**(code **)(*param_1 + 0x34))();
  iVar2 = param_1[0x1a];
  while (iVar2 != 0) {
    FUN_0042ba4a();
    FUN_004db8a7();
    FUN_0042bafc();
    iVar2 = param_1[0x1a];
  }
  uVar1 = *(undefined *)(param_1 + 4);
  FUN_0046e65a();
  while( true ) {
    FUN_0046e65a();
    cVar3 = FUN_0041c034();
    if (cVar3 == '\0') break;
    ppiVar4 = (int **)FUN_007c96e9();
    (**(code **)(**ppiVar4 + 0x30))(uVar1);
    FUN_0062d58f();
  }
  FUN_00477b8c();
  if (*(char *)(param_1 + 4) == '\0') {
    FUN_00b940a0();
  }
  FUN_00444e30();
  return;
}



void __fastcall FUN_007b1bf7(int *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  char cStack_28;
  int *piStack_24;
  int aiStack_20 [2];
  void *pvStack_18;
  void *local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  uStack_10 = &LAB_00c487b6;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_14;
  FUN_00477979(param_1[2]);
  FUN_007b1cbc(uVar1);
  (**(code **)(*param_1 + 0x38))();
  (**(code **)(*(int *)param_1[2] + 0x3c))(aiStack_20);
  uStack_10 = (undefined *)0x0;
  if (piStack_24 != (int *)0x0) {
    uVar2 = (**(code **)(*piStack_24 + 4))();
    FUN_0043d406(uVar2);
    uStack_10._0_1_ = 1;
    FUN_0044953d();
    uStack_10 = (undefined *)((uint)uStack_10._1_3_ << 8);
    if (cStack_28 != '\0') {
      FUN_00401477();
    }
  }
  uStack_10 = (undefined *)0xffffffff;
  if (aiStack_20[0] != 0) {
    FUN_0040127a();
  }
  ExceptionList = pvStack_18;
  return;
}



void FUN_007b1ca7(void)

{
  FUN_00b74d70();
  return;
}



void FUN_007b1caf(void)

{
  int in_EAX;
  
  InterlockedExchange((LONG *)(in_EAX + 0x18),1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b1cbc(void)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  int unaff_ESI;
  char local_20;
  uint local_18;
  
  FUN_0043d406(unaff_ESI + 0x1c);
  local_18 = *(uint *)(unaff_ESI + 0x30);
  if (*(uint *)(unaff_ESI + 0x34) < local_18) {
    FUN_00a3fb10();
  }
  piVar1 = *(int **)(unaff_ESI + 0x24);
  while( true ) {
    uVar2 = *(uint *)(unaff_ESI + 0x34);
    if (uVar2 < *(uint *)(unaff_ESI + 0x30)) {
      FUN_00a3fb10();
    }
    if ((piVar1 == (int *)0x0) || (piVar1 != *(int **)(unaff_ESI + 0x24))) {
      FUN_00a3fb10();
    }
    if (local_18 == uVar2) break;
    if (piVar1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(uint *)(iVar3 + 0x10) <= local_18) {
      FUN_00a3fb10();
    }
    FUN_004db8a7();
    if (piVar1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(uint *)(iVar3 + 0x10) <= local_18) {
      FUN_00a3fb10();
    }
    local_18 = local_18 + 0x20;
  }
  if (local_20 != '\0') {
    FUN_00401477();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b1d6b(undefined4 param_1,int param_2)

{
  if ((-(uint)(param_2 != 0) & 0x7a491c) != 0) {
    FUN_0042b965(&param_2);
  }
  FUN_00507e58();
  return;
}



void FUN_007b1dac(undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  uVar1 = unaff_ESI[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(unaff_ESI[5] - uVar1) >> 5;
  }
  uVar2 = unaff_ESI[4];
  if ((uint)((int)(uVar2 - uVar1) >> 5) < uVar3) {
    uVar4 = FUN_007b1eb1(uVar2,1,param_1);
    unaff_ESI[4] = uVar4;
  }
  else {
    if (uVar2 < uVar1) {
      FUN_00a3fb10();
    }
    FUN_007b1e0a(local_10,param_1,*unaff_ESI,uVar2);
  }
  return;
}



void FUN_007b1e0a(int **param_1,undefined4 param_2,int *param_3,int param_4)

{
  int *piVar1;
  int **in_EAX;
  int iVar2;
  int iVar3;
  int *piVar4;
  
  piVar4 = in_EAX[3];
  if (((int)in_EAX[4] - (int)piVar4 & 0xffffffe0U) == 0) {
    iVar3 = 0;
  }
  else {
    if (in_EAX[4] < piVar4) {
      FUN_00a3fb10();
    }
    if ((param_3 == (int *)0x0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    iVar3 = param_4 - (int)piVar4 >> 5;
  }
  FUN_007b1ee1();
  piVar4 = in_EAX[3];
  if (in_EAX[4] < piVar4) {
    FUN_00a3fb10();
  }
  piVar1 = *in_EAX;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1;
  }
  piVar4 = piVar4 + iVar3 * 8;
  if (piVar4 <= *(int **)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(int **)(iVar3 + 0xc) <= piVar4) goto LAB_007b1e9f;
  }
  FUN_00a3fb10();
LAB_007b1e9f:
  param_1[1] = piVar4;
  *param_1 = piVar1;
  return;
}



int FUN_007b1eb1(int param_1,int param_2,undefined4 param_3)

{
  FUN_007b217a(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x20 + param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b1ee1(int param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  int extraout_ECX;
  int iVar5;
  undefined8 uVar6;
  undefined local_44 [36];
  int local_20;
  undefined4 local_1c;
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x54;
  local_8 = 0x7b1eed;
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 == 0) {
    local_18 = 0;
  }
  else {
    local_18 = *(int *)(param_1 + 0x14) - iVar1 >> 5;
  }
  iVar5 = *(int *)(param_1 + 0x10);
  iVar1 = iVar5 - iVar1 >> 5;
  uVar6 = CONCAT44(0x7ffffff,iVar1);
  if (iVar1 == 0x7ffffff) {
    uVar6 = FUN_004423c1();
    iVar5 = extraout_ECX;
  }
  uVar2 = (int)uVar6 + 1;
  if (local_18 < uVar2) {
    if ((int)((ulonglong)uVar6 >> 0x20) - (local_18 >> 1) < local_18) {
      local_18 = 0;
    }
    else {
      local_18 = local_18 + (local_18 >> 1);
    }
    if (local_18 < uVar2) {
      local_18 = uVar2;
    }
    iVar3 = FUN_0042bbe0();
    local_1c = 0;
    local_8 = 0;
    iVar1 = param_4 - *(int *)(param_1 + 0xc) >> 5;
    local_20 = iVar1;
    FUN_007b1eb1(iVar1 * 0x20 + iVar3,1,param_2);
    local_1c = 1;
    FUN_007b2156(param_4,iVar3);
    local_1c = 2;
    FUN_007b2156(*(undefined4 *)(param_1 + 0x10),(iVar1 + 1) * 0x20 + iVar3);
    local_8 = 0xffffffff;
    iVar1 = *(int *)(param_1 + 0x10);
    iVar5 = *(int *)(param_1 + 0xc);
    if (iVar5 != 0) {
      for (; iVar5 != iVar1; iVar5 = iVar5 + 0x20) {
        FUN_00507e58();
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
    }
    *(uint *)(param_1 + 0x14) = local_18 * 0x20 + iVar3;
    *(int *)(param_1 + 0x10) = ((iVar1 - iVar5 >> 5) + 1) * 0x20 + iVar3;
    *(int *)(param_1 + 0xc) = iVar3;
  }
  else {
    if (iVar5 - param_4 >> 5 == 0) {
      FUN_00672a11();
      local_8 = 2;
      FUN_007b2156(*(undefined4 *)(param_1 + 0x10),param_4 + 0x20);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_007b1eb1(*(int *)(param_1 + 0x10),1 - (*(int *)(param_1 + 0x10) - param_4 >> 5),local_44);
      local_8 = 2;
      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 0x20;
      iVar1 = *(int *)(param_1 + 0x10);
      for (; param_4 != iVar1 + -0x20; param_4 = param_4 + 0x20) {
        FUN_00607a72(param_4);
      }
    }
    else {
      FUN_00672a11();
      local_8 = 5;
      iVar5 = *(int *)(param_1 + 0x10);
      iVar1 = iVar5 + -0x20;
      uVar4 = FUN_007b2156(iVar5,iVar5);
      *(undefined4 *)(param_1 + 0x10) = uVar4;
      if (param_4 != iVar1) {
        iVar5 = iVar5 - iVar1;
        do {
          iVar1 = iVar1 + -0x20;
          FUN_00607a72(iVar5 + iVar1);
        } while (iVar1 != param_4);
      }
      iVar1 = param_4 + 0x20;
      if (param_4 != iVar1) {
        do {
          FUN_00607a72(param_4);
          param_4 = param_4 + 0x20;
        } while (param_4 != iVar1);
      }
    }
    local_8 = 0xffffffff;
    FUN_00507e58();
  }
  return;
}



void Catch_All_007b1ffd(void)

{
  int iVar1;
  int unaff_EBP;
  int iVar2;
  int iVar3;
  
  iVar1 = *(int *)(unaff_EBP + -0x1c);
  if (1 < *(int *)(unaff_EBP + -0x18)) {
    iVar2 = *(int *)(unaff_EBP + 8);
    iVar3 = iVar1 * 0x20 + iVar2;
    for (; iVar2 != iVar3; iVar2 = iVar2 + 0x20) {
      FUN_00507e58();
    }
  }
  if (0 < *(int *)(unaff_EBP + -0x18)) {
    iVar2 = *(int *)(unaff_EBP + 8);
    for (iVar3 = iVar1 * 0x20 + *(int *)(unaff_EBP + 8); iVar3 != (iVar1 + 1) * 0x20 + iVar2;
        iVar3 = iVar3 + 0x20) {
      FUN_00507e58();
    }
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_007b20c9(void)

{
  undefined4 uVar1;
  int extraout_ECX;
  int unaff_EBP;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar4 = *(int *)(*(int *)(unaff_EBP + 8) + 0x10);
  iVar2 = *(int *)(unaff_EBP + 0x14);
  while (iVar2 = iVar2 + 0x20, iVar2 != iVar4 + 0x20) {
    FUN_00507e58();
  }
  __CxxThrowException_8(0,0);
  if (extraout_ECX - *(int *)(unaff_EBP + 0x14) >> 5 == 0) {
    FUN_00672a11();
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_007b2156(*(undefined4 *)(iVar4 + 0x30),*(int *)(unaff_EBP + 0x14) + 0x20);
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_007b1eb1(*(int *)(iVar4 + 0x30),
                 1 - (*(int *)(iVar4 + 0x30) - *(int *)(unaff_EBP + 0x14) >> 5),unaff_EBP + -0x40);
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(iVar4 + 0x30) = *(int *)(iVar4 + 0x30) + 0x20;
    iVar4 = *(int *)(iVar4 + 0x30);
    for (iVar2 = *(int *)(unaff_EBP + 0x14); iVar2 != iVar4 + -0x20; iVar2 = iVar2 + 0x20) {
      FUN_00607a72(iVar2);
    }
  }
  else {
    FUN_00672a11();
    *(undefined4 *)(unaff_EBP + -4) = 5;
    iVar3 = *(int *)(iVar4 + 0x30);
    iVar2 = iVar3 + -0x20;
    uVar1 = FUN_007b2156(iVar3,iVar3);
    *(undefined4 *)(iVar4 + 0x30) = uVar1;
    iVar4 = *(int *)(unaff_EBP + 0x14);
    if (iVar4 != iVar2) {
      iVar3 = iVar3 - iVar2;
      do {
        iVar2 = iVar2 + -0x20;
        FUN_00607a72(iVar3 + iVar2);
      } while (iVar2 != iVar4);
      iVar4 = *(int *)(unaff_EBP + 0x14);
    }
    iVar2 = iVar4 + 0x20;
    for (; iVar4 != iVar2; iVar4 = iVar4 + 0x20) {
      FUN_00607a72(iVar4);
    }
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00507e58();
  return;
}



void FUN_007b2156(undefined4 param_1,undefined4 param_2)

{
  FUN_007b21cb(param_1,param_2,param_2,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b217a(undefined4 param_1,int param_2)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    FUN_0042bc2a();
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_007b21aa(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 8); iVar1 = iVar1 + 0x20)
  {
    FUN_00507e58();
  }
  __CxxThrowException_8(0,0);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_007b21cb(int param_1_00,int param_1,int param_2)

{
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0x20) {
    FUN_0042bc2a();
    param_2 = param_2 + 0x20;
  }
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 Catch_All_007b21fb(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0xc); iVar1 = iVar1 + 0x20
      ) {
    FUN_00507e58();
  }
  __CxxThrowException_8(0,0);
  return *(undefined4 *)(unaff_EBP + 0xc);
}



void FUN_007b221f(void)

{
  undefined4 *unaff_ESI;
  
  FUN_007b373f(unaff_ESI);
  *unaff_ESI = W88619A38::WCB5D8147::vftable;
  unaff_ESI[7] = 0;
  unaff_ESI[8] = 0;
  *(undefined *)(unaff_ESI + 9) = 0;
  return;
}



undefined4 __thiscall FUN_007b2239(undefined4 param_1_00,byte param_1)

{
  FUN_004d8fe0(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b22a2(int param_1,undefined4 param_2,int param_3)

{
  FUN_005d11c9(param_1 + 0x1c);
  if (param_3 != 0) {
    FUN_0040127a();
  }
  return;
}



void __thiscall FUN_007b22d9(int param_1_00,undefined4 *param_1)

{
  *param_1 = *(undefined4 *)(param_1_00 + 0x1c);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0x20);
}



undefined4 __thiscall FUN_007b238b(undefined4 param_1,byte param_2)

{
  FUN_007b2413();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007b23a7(undefined4 *param_1)

{
  undefined4 *unaff_EDI;
  
  FUN_007b3cd3(param_1);
  *param_1 = W88619A38::W7EEDEEF7::vftable;
  *(undefined *)(param_1 + 5) = 0;
  FUN_007b3ddd(param_1 + 6);
  if (param_1 != unaff_EDI) {
    if (*(char *)(param_1 + 5) == '\0') {
      if (*(char *)(unaff_EDI + 5) != '\0') {
        if ((undefined *)((int)param_1 + 0x15) != (undefined *)0x0) {
          *(undefined *)((int)param_1 + 0x15) = *(undefined *)((int)unaff_EDI + 0x15);
        }
        *(undefined *)(param_1 + 5) = 1;
      }
    }
    else if (*(char *)(unaff_EDI + 5) == '\0') {
      *(undefined *)(param_1 + 5) = 0;
    }
    else {
      *(undefined *)((int)param_1 + 0x15) = *(undefined *)((int)unaff_EDI + 0x15);
    }
  }
  return param_1;
}



void __fastcall FUN_007b2413(undefined4 *param_1)

{
  *param_1 = W88619A38::W7EEDEEF7::vftable;
  FUN_00485ee5();
  if (*(char *)(param_1 + 5) != '\0') {
    *(undefined *)(param_1 + 5) = 0;
  }
  FUN_007b3d21();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007b2438(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x130);
  if (pvVar1 != (void *)0x0) {
    FUN_007b23a7(pvVar1);
  }
  FUN_004fddef(param_2);
  return param_2;
}



bool __fastcall FUN_007b2484(int param_1)

{
  return (-(uint)(*(char *)(param_1 + 0x14) != '\0') & 0x6a1cd8) != 0;
}



undefined FUN_007b2498(void)

{
  int in_EAX;
  
  if ((-(uint)(*(char *)(in_EAX + 0x14) != '\0') & 0x6a1cd8) != 0) {
    return *(undefined *)(in_EAX + 0x15);
  }
  return 0;
}



void __fastcall FUN_007b24af(undefined4 param_1,undefined param_2)

{
  int in_EAX;
  
  if (*(char *)(in_EAX + 0x14) != '\0') {
    *(undefined *)(in_EAX + 0x15) = param_2;
    return;
  }
  if ((undefined *)(in_EAX + 0x15) != (undefined *)0x0) {
    *(undefined *)(in_EAX + 0x15) = param_2;
  }
  *(undefined *)(in_EAX + 0x14) = 1;
  return;
}



undefined4 __thiscall FUN_007b2553(undefined4 param_1,byte param_2)

{
  FUN_00485ee5();
  FUN_00417f97();
  FUN_007b3d21();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007b2583(undefined4 *param_1_00,undefined4 *param_1)

{
  FUN_007b3cd3(param_1);
  *param_1 = W88619A38::W0F3EE231::vftable;
  *(undefined *)(param_1 + 5) = 0;
  FUN_007b3ddd(param_1 + 0xd);
  if (param_1 != param_1_00) {
    FUN_0041c550();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007b25d3(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x14c);
  if (pvVar1 != (void *)0x0) {
    FUN_007b2583(pvVar1);
  }
  FUN_004daba8(param_2);
  return param_2;
}



void FUN_007b261f(void)

{
  int in_EAX;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_ESI;
  
  if ((-(uint)(*(char *)(in_EAX + 0x14) != '\0') & 0x6a1cd8) == 0) {
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_ESI)
    ;
  }
  else {
    basic_string<>(in_EAX + 0x18);
  }
  return;
}



undefined4 __thiscall FUN_007b2719(undefined4 param_1,byte param_2)

{
  FUN_007b2735();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_007b2735(undefined4 *param_1)

{
  *param_1 = W88619A38::W56AE65B4::vftable;
  FUN_0074ca40();
  FUN_007b2778();
  return;
}



undefined * Catch_All_007b2768(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 5;
  return &DAT_007b2775;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b2778(void)

{
  int unaff_EBX;
  int unaff_EBP;
  
  FUN_00485ee5();
  *(undefined *)(unaff_EBP + -4) = 3;
  if (*(int *)(unaff_EBX + 0x1a8) != 0) {
    FUN_0040127a();
  }
  FUN_00485ebe();
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_007b3d21();
  return;
}



void FUN_007b27c7(void)

{
  FUN_007b2909();
  return;
}



undefined4 FUN_007b27cf(undefined4 param_1)

{
  int in_EAX;
  
  basic_string<>(in_EAX + 0x30);
  return param_1;
}



undefined4 __fastcall FUN_007b27ea(undefined4 param_1)

{
  FUN_007b2974();
  return param_1;
}



void FUN_007b27ff(void)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *(undefined4 *)(in_EAX + 0x1a4);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0x1a8);
}



void __thiscall FUN_007b2817(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x20))(param_1_00);
  return;
}



undefined4 FUN_007b2826(undefined4 param_1)

{
  int in_EAX;
  
  basic_string<>(in_EAX + 0x14);
  return param_1;
}



void FUN_007b2841(void)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *(undefined4 *)(in_EAX + 0x48);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0x4c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_007b2885(undefined *param_1)

{
  *param_1 = 0;
  param_1[0x20] = 0;
  FUN_007b3ddd(param_1 + 0x40);
  FUN_007b28c0();
  return param_1;
}



void FUN_007b28c0(void)

{
  char *in_EAX;
  char *unaff_EDI;
  
  if (in_EAX != unaff_EDI) {
    if (*in_EAX == '\0') {
      if (*unaff_EDI != '\0') {
        FUN_00412a6f(unaff_EDI + 4);
      }
    }
    else if (*unaff_EDI == '\0') {
      FUN_00401829(1,0);
      *in_EAX = '\0';
    }
    else {
      FUN_0044197d(unaff_EDI + 4);
    }
    FUN_0041c550();
  }
  return;
}



undefined4 FUN_007b2909(void)

{
  char *in_EAX;
  
  if (((-(uint)(*in_EAX != '\0') & 0x6a1cd8) != 0) &&
     ((-(uint)(in_EAX[0x20] != '\0') & 0x6a1cd8) != 0)) {
    return 1;
  }
  return 0;
}



undefined4 FUN_007b292e(void)

{
  char *in_EAX;
  
  if (((-(uint)(*in_EAX != '\0') & 0x6a1cd8) != 0) && (*(int *)(in_EAX + 0x18) != 0)) {
    return 1;
  }
  return 0;
}



void FUN_007b294a(void)

{
  char *in_EAX;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_ESI;
  
  if ((-(uint)(*in_EAX != '\0') & 0x6a1cd8) == 0) {
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_ESI)
    ;
  }
  else {
    basic_string<>(in_EAX + 4);
  }
  return;
}



void FUN_007b2974(void)

{
  int in_EAX;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_ESI;
  
  if ((-(uint)(*(char *)(in_EAX + 0x20) != '\0') & 0x6a1cd8) == 0) {
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_ESI)
    ;
  }
  else {
    basic_string<>(in_EAX + 0x24);
  }
  return;
}



int __thiscall FUN_007b2a33(int param_1,byte param_2)

{
  FUN_00485ee5();
  if (*(char *)(param_1 + 0x24) != '\0') {
    *(undefined *)(param_1 + 0x24) = 0;
  }
  if (*(char *)(param_1 + 0x1c) != '\0') {
    *(undefined *)(param_1 + 0x1c) = 0;
  }
  if (*(char *)(param_1 + 0x14) != '\0') {
    *(undefined *)(param_1 + 0x14) = 0;
  }
  FUN_007b3d21();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007b2a75(undefined4 *param_1_00,undefined4 *param_1)

{
  FUN_007b3cd3(param_1);
  *param_1 = W88619A38::W40F1E0EC::vftable;
  *(undefined *)(param_1 + 5) = 0;
  *(undefined *)(param_1 + 7) = 0;
  *(undefined *)(param_1 + 9) = 0;
  FUN_007b3ddd(param_1 + 0xb);
  if (param_1 != param_1_00) {
    FUN_0041ba77();
    FUN_0041ba77();
    FUN_0041ba77();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007b2adb(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x144);
  if (pvVar1 != (void *)0x0) {
    FUN_007b2a75(pvVar1);
  }
  FUN_006116d7(param_2);
  return param_2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_007b2c00(int param_1_00,byte param_1)

{
  FUN_00485ee5();
  if (*(int *)(param_1_00 + 0x20) != 0) {
    FUN_0040127a();
  }
  if (*(char *)(param_1_00 + 0x14) != '\0') {
    *(undefined *)(param_1_00 + 0x14) = 0;
  }
  FUN_007b3d21();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007b2c58(undefined4 *param_1,undefined4 *param_2)

{
  FUN_007b3cd3(param_1);
  *param_1 = W88619A38::W9718CCBF::vftable;
  *(undefined *)(param_1 + 5) = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  FUN_007b3ddd(param_1 + 10);
  if (param_1 != param_2) {
    FUN_0041ba77();
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 8);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007b2ce5(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x140);
  if (pvVar1 != (void *)0x0) {
    FUN_007b2c58(pvVar1,param_1);
  }
  FUN_004dacf9(param_2);
  return param_2;
}



uint __fastcall FUN_007b2d31(uint param_1)

{
  uint uVar1;
  char local_c;
  
  FUN_0041b126(param_1 + 0x14);
  local_c = (char)param_1;
  uVar1 = -(uint)(local_c != '\0');
  if (((uVar1 & 0x6a1cd8) == 0) ||
     (uVar1 = *(uint *)(param_1 + 0x1c), *(uint *)(uVar1 + 0x30) <= param_1)) {
    uVar1 = uVar1 & 0xffffff00;
  }
  else {
    uVar1 = CONCAT31((int3)(uVar1 >> 8),1);
  }
  return uVar1;
}



undefined4 __fastcall FUN_007b2d68(uint param_1)

{
  int iVar1;
  undefined4 uVar2;
  char local_c;
  
  FUN_0041b126(param_1 + 0x14);
  local_c = (char)param_1;
  iVar1 = *(int *)(param_1 + 0x1c);
  if (((-(uint)(local_c != '\0') & 0x6a1cd8) == 0) || (*(uint *)(iVar1 + 0x30) <= param_1)) {
    uVar2 = *(undefined4 *)(iVar1 + 0x3c);
  }
  else {
    if ((uint)(*(int *)(iVar1 + 0x10) - *(int *)(iVar1 + 0xc) >> 2) <= param_1) {
      FUN_00a3fb10();
    }
    uVar2 = *(undefined4 *)(*(int *)(iVar1 + 0xc) + param_1 * 4);
  }
  return uVar2;
}



void __fastcall FUN_007b2dba(undefined4 param_1,undefined4 param_2)

{
  int in_EAX;
  
  if (*(char *)(in_EAX + 0x14) != '\0') {
    *(undefined4 *)(in_EAX + 0x18) = param_2;
    return;
  }
  if ((undefined4 *)(in_EAX + 0x18) != (undefined4 *)0x0) {
    *(undefined4 *)(in_EAX + 0x18) = param_2;
  }
  *(undefined *)(in_EAX + 0x14) = 1;
  return;
}



void FUN_007b2dd2(void)

{
  int in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *(undefined4 *)(in_EAX + 0x1c);
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 0x20);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007b2de6(int param_1)

{
  int aiStack_28 [5];
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0x7b2df2;
  local_14 = aiStack_28;
  FUN_0041c235();
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  aiStack_28[0] = param_1 + 0x18;
  local_8 = 1;
  FUN_004382a5();
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined *)(param_1 + 0x34) = 0;
  *(undefined4 *)(param_1 + 0x3c) = 0;
  return param_1;
}



void FUN_007b2e93(int param_1)

{
  undefined *unaff_EBX;
  int unaff_ESI;
  uint uVar1;
  
  uVar1 = 0;
  if (*(int *)(unaff_ESI + 0x30) != 0) {
    do {
      if ((uint)(*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc) >> 2) <= uVar1) {
        FUN_00a3fb10();
      }
      if (*(int *)(*(int *)(unaff_ESI + 0xc) + uVar1 * 4) == param_1) {
        *unaff_EBX = 0;
        if ((uint *)(unaff_EBX + 4) != (uint *)0x0) {
          *(uint *)(unaff_EBX + 4) = uVar1;
        }
        *unaff_EBX = 1;
        return;
      }
      uVar1 = uVar1 + 1;
    } while (uVar1 < *(uint *)(unaff_ESI + 0x30));
  }
  *unaff_EBX = 0;
  return;
}



void FUN_007b2ed9(void)

{
  undefined4 *puVar1;
  uint unaff_EBX;
  undefined4 *unaff_ESI;
  int unaff_EDI;
  
  if (unaff_EBX < *(uint *)(unaff_EDI + 0x30)) {
    if ((uint)(*(int *)(unaff_EDI + 0x28) - *(int *)(unaff_EDI + 0x24) >> 3) <= unaff_EBX) {
      FUN_00a3fb10();
    }
    puVar1 = (undefined4 *)(*(int *)(unaff_EDI + 0x24) + unaff_EBX * 8);
    *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  *unaff_ESI = 0;
  unaff_ESI[1] = 0;
  return;
}



void FUN_007b2f12(undefined4 *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int in_EAX;
  uint uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = *(int *)(in_EAX + 0x14) - iVar1 >> 2;
  }
  puVar2 = *(undefined4 **)(in_EAX + 0x10);
  if ((uint)((int)puVar2 - iVar1 >> 2) < uVar3) {
    *puVar2 = *param_1;
    *(undefined4 **)(in_EAX + 0x10) = puVar2 + 1;
  }
  else {
    FUN_0046e65a();
    FUN_007b2f70(&local_10,param_1,local_10,local_c);
  }
  return;
}



void FUN_007b2f70(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int *piVar1;
  int in_EAX;
  int iVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc) & 0xfffffffcU) == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = param_4 - local_8 >> 2;
  }
  FUN_007b3018(param_3,param_4);
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *local_14;
  }
  piVar1 = (int *)(local_10 + local_8 * 4);
  if (piVar1 <= *(int **)(iVar2 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *local_14;
    }
    if (*(int **)(iVar2 + 0xc) <= piVar1) goto LAB_007b3009;
  }
  FUN_00a3fb10();
LAB_007b3009:
  param_1[1] = piVar1;
  *param_1 = local_14;
  return;
}



void __thiscall FUN_007b3018(int param_1_00,undefined4 param_1,uint *param_2)

{
  uint *puVar1;
  uint *in_EAX;
  int iVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  int extraout_ECX;
  uint local_8;
  
  iVar2 = *(int *)(param_1_00 + 0xc);
  if (iVar2 == 0) {
    local_8 = 0;
  }
  else {
    local_8 = *(int *)(param_1_00 + 0x14) - iVar2 >> 2;
  }
  iVar4 = *(int *)(param_1_00 + 0x10);
  iVar6 = 0x3fffffff;
  iVar2 = iVar4 - iVar2 >> 2;
  if (iVar2 == 0x3fffffff) {
    iVar2 = FUN_004423c1();
    iVar6 = extraout_ECX;
  }
  uVar3 = iVar2 + 1;
  if (local_8 < uVar3) {
    if (iVar6 - (local_8 >> 1) < local_8) {
      local_8 = 0;
    }
    else {
      local_8 = local_8 + (local_8 >> 1);
    }
    if (local_8 < uVar3) {
      local_8 = uVar3;
    }
    iVar4 = FUN_00467f53();
    FUN_0041b1bc(in_EAX);
    FUN_0061526b(*(undefined4 *)(param_1_00 + 0xc));
    FUN_0061526b(param_2);
    iVar2 = *(int *)(param_1_00 + 0xc);
    if (iVar2 != 0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar2);
    }
    *(uint *)(param_1_00 + 0x14) = iVar4 + local_8 * 4;
    *(int *)(param_1_00 + 0x10) = iVar4 + ((*(int *)(param_1_00 + 0x10) - iVar2 >> 2) + 1) * 4;
    *(int *)(param_1_00 + 0xc) = iVar4;
  }
  else if (iVar4 - (int)param_2 >> 2 == 0) {
    local_8 = *in_EAX;
    FUN_0061526b(param_2);
    FUN_0041b1bc(&local_8);
    *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 4;
    iVar2 = *(int *)(param_1_00 + 0x10);
    for (; param_2 != (uint *)(iVar2 + -4); param_2 = param_2 + 1) {
      *param_2 = local_8;
    }
  }
  else {
    uVar3 = *in_EAX;
    uVar5 = FUN_0061526b(iVar4 + -4);
    *(undefined4 *)(param_1_00 + 0x10) = uVar5;
    iVar2 = (iVar4 + -4) - (int)param_2 >> 2;
    if (0 < iVar2) {
      _memmove_s((void *)(iVar4 + iVar2 * -4),iVar2 * 4,param_2,iVar2 * 4);
    }
    puVar1 = param_2 + 1;
    for (; param_2 != puVar1; param_2 = param_2 + 1) {
      *param_2 = uVar3;
    }
  }
  return;
}



undefined4 __thiscall FUN_007b325c(undefined4 param_1_00,byte param_1)

{
  FUN_007b3304();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007b3278(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 extraout_EDX;
  
  FUN_007b3cd3(param_1);
  *param_1 = W88619A38::WDDC4C4A6::vftable;
  FUN_00b92800();
  param_1[9] = extraout_EDX;
  param_1[10] = extraout_EDX;
  FUN_007b3ddd(param_1 + 0xb);
  if (param_1 != param_1_00) {
    FUN_00b92cd0();
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1_00 + 10);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007b3304(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = W88619A38::WDDC4C4A6::vftable;
  local_8 = 4;
  if (local_20 != param_1 + 9) {
    param_1[9] = 0;
  }
  iVar1 = param_1[10];
  param_1[10] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_8 = 3;
  FUN_00485ee5();
  local_8._0_1_ = 1;
  if (param_1[10] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00b92d80();
  local_8 = 0xffffffff;
  FUN_007b3d21();
  return;
}



undefined * Catch_All_007b337b(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 3;
  return &DAT_007b3388;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007b338d(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x144);
  if (pvVar1 != (void *)0x0) {
    FUN_007b3278(pvVar1);
  }
  FUN_004daa2f(param_2);
  return param_2;
}



bool FUN_007b33d9(void)

{
  char cVar1;
  
  cVar1 = FUN_00b92890();
  return cVar1 == '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007b33eb(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  puVar2 = param_2;
  puVar3 = (undefined4 *)FUN_00b93190(param_1 + 5,&param_1);
  uVar1 = *puVar3;
  *puVar3 = 0;
  *puVar2 = uVar1;
  if (param_1 != (undefined4 *)0x0) {
    (**(code **)*param_1)(1);
  }
  return puVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007b3435(undefined4 *param_1)

{
  code **ppcVar1;
  code *pcVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  int unaff_ESI;
  undefined4 uStack_2c;
  undefined4 *puStack_28;
  undefined4 *puStack_24;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0x7b3441;
  puVar3 = (undefined4 *)auStack_20;
  if ((*(int **)(unaff_ESI + 0x24) == (int *)0x0) || (param_1[5] == 0)) {
    puStack_24 = (undefined4 *)0x7b3484;
    FUN_00b92c80();
  }
  else {
    puStack_24 = param_1;
    puStack_28 = &param_1;
    puVar3 = &uStack_2c;
    uStack_2c = 0x7b345b;
    (**(code **)(**(int **)(unaff_ESI + 0x24) + 4))();
    local_8 = 0;
    puVar3[-1] = 0x7b3469;
    FUN_00b92cd0();
    local_8 = 0xffffffff;
    if (param_1 != (undefined4 *)0x0) {
      ppcVar1 = (code **)*param_1;
      puVar3[-1] = 1;
      pcVar2 = *ppcVar1;
      puVar4 = puVar3 + -2;
      puVar3 = puVar3 + -2;
      *puVar4 = 0x7b347a;
      (*pcVar2)();
    }
  }
  *(undefined4 *)((int)puVar3 + -4) = 0x7b3489;
  return;
}



undefined4 __thiscall FUN_007b351c(undefined4 param_1,byte param_2)

{
  FUN_007b358d();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007b3538(undefined4 *param_1_00,undefined4 *param_1)

{
  FUN_007b3cd3(param_1);
  *param_1 = W88619A38::WA7693960::vftable;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1 + 5));
  FUN_007b3ddd(param_1 + 0xc);
  if (param_1 != param_1_00) {
    FUN_0044197d(param_1_00 + 5);
  }
  return param_1;
}



void __fastcall FUN_007b358d(undefined4 *param_1)

{
  *param_1 = W88619A38::WA7693960::vftable;
  FUN_00485ee5();
  FUN_00401829(1,0);
  FUN_007b3d21();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007b35b4(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x148);
  if (pvVar1 != (void *)0x0) {
    FUN_007b3538(pvVar1);
  }
  FUN_004d965d(param_2);
  return param_2;
}



bool __fastcall FUN_007b3600(int param_1)

{
  return *(int *)(param_1 + 0x28) != 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b3609(int param_1)

{
  char cVar1;
  
  basic_string<>(param_1 + 0x14);
  cVar1 = FUN_0041506b();
  if (cVar1 == '\0') {
    FUN_00828050();
  }
  return;
}



undefined4 FUN_007b36ec(undefined4 param_1)

{
  int in_EAX;
  
  FUN_0041b126(in_EAX + 0x14);
  return param_1;
}



void FUN_007b3730(void)

{
  undefined4 *unaff_ESI;
  
  FUN_007b373f(unaff_ESI);
  *unaff_ESI = W88619A38::W0B05B034::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007b373f(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = W88619A38::WA5EF58D4::vftable;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 1);
  }
  param_1[1] = piVar1;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  return param_1;
}



undefined __fastcall FUN_007b3785(int *param_1)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = (**(code **)(*param_1 + 0xc))();
  uVar3 = 0;
  if (uVar2 != 0) {
    do {
      if ((uint)(param_1[5] - param_1[4] >> 3) <= uVar3) {
        FUN_00a3fb10();
      }
      cVar1 = (**(code **)(**(int **)(param_1[4] + uVar3 * 8) + 8))();
      if (cVar1 == '\0') {
        return 0;
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  return 1;
}



void __thiscall FUN_007b37cb(int param_1_00,undefined4 *param_1,uint param_2)

{
  undefined4 *puVar1;
  
  if (param_2 < (uint)(*(int *)(param_1_00 + 0x14) - *(int *)(param_1_00 + 0x10) >> 3)) {
    if ((uint)(*(int *)(param_1_00 + 0x14) - *(int *)(param_1_00 + 0x10) >> 3) <= param_2) {
      FUN_00a3fb10();
    }
    puVar1 = (undefined4 *)(*(int *)(param_1_00 + 0x10) + param_2 * 8);
    *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  *param_1 = 0;
  param_1[1] = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_007b385d(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
            int param_7,int param_8,int param_9)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  
  pvVar1 = operator_new(0x1c);
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_007b39aa();
  }
  *param_1 = uVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007b3b2f();
  uVar2 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar2;
  if (pvVar1 != (void *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  if (param_2 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_3);
  }
  if (param_4 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_5);
  }
  if (param_6 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_7);
  }
  if (param_8 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_9);
  }
  if (param_3 != 0) {
    FUN_0040127a();
  }
  if (param_5 != 0) {
    FUN_0040127a();
  }
  if (param_7 != 0) {
    FUN_0040127a();
  }
  if (param_9 != 0) {
    FUN_0040127a();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b39aa(void)

{
  int *piVar1;
  undefined4 *unaff_EDI;
  
  *unaff_EDI = W88619A38::WBAEE01C7::vftable;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(unaff_EDI + 1);
  }
  unaff_EDI[1] = piVar1;
  unaff_EDI[4] = 0;
  unaff_EDI[5] = 0;
  unaff_EDI[6] = 0;
  return;
}



undefined4 __thiscall FUN_007b39ea(undefined4 param_1_00,byte param_1)

{
  FUN_007b3a06();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007b3a06(undefined4 *param_1)

{
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  *param_1 = W88619A38::WBAEE01C7::vftable;
  local_8 = 1;
  local_18 = param_1;
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_00478f3c(&local_28,local_28,local_24,local_20,local_1c);
  local_8 = 0xffffffff;
  FUN_007b3ae8(local_18 + 1);
  return;
}



undefined4 Catch_All_007b3a69(void)

{
  return 0x7b3a53;
}



void FUN_007b3abd(void)

{
  undefined4 *puVar1;
  uint unaff_EBX;
  int unaff_ESI;
  undefined4 *unaff_EDI;
  
  if ((uint)(*(int *)(unaff_ESI + 0x14) - *(int *)(unaff_ESI + 0x10) >> 3) <= unaff_EBX) {
    FUN_00a3fb10();
  }
  puVar1 = (undefined4 *)(*(int *)(unaff_ESI + 0x10) + unaff_EBX * 8);
  *unaff_EDI = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b3ae8(undefined4 *param_1)

{
  if (param_1[3] != 0) {
    FUN_0043a4e8(param_1[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007b3b2f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W88619A38::WBAEE01C7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007b3b75(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_007b3be1(undefined4 param_1,byte param_2)

{
  FUN_007b3bfd();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_007b3bfd(undefined4 *param_1)

{
  *param_1 = W88619A38::W757C3475::vftable;
  FUN_005d1159();
  FUN_007b3c2f();
  return;
}



undefined * Catch_All_007b3c26(void)

{
  return &DAT_007b3c2c;
}



void FUN_007b3c2f(void)

{
  int unaff_ESI;
  
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0xc));
}



undefined4 __thiscall FUN_007b3cb7(undefined4 param_1,byte param_2)

{
  FUN_007b3d21();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007b3cd3(undefined4 *param_1)

{
  undefined4 *unaff_EBX;
  
  *param_1 = W88619A38::W07933CF1::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  if (param_1 != unaff_EBX) {
    FUN_005d11c9(param_1 + 1);
    FUN_005d11c9(param_1 + 3);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_007b3d21(undefined4 *param_1)

{
  *param_1 = W88619A38::W07933CF1::vftable;
  FUN_005d1159();
  FUN_005d1159();
  FUN_007b3d69();
  return;
}



undefined * Catch_All_007b3d59(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 2;
  return &DAT_007b3d66;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b3d69(void)

{
  int unaff_EBP;
  undefined4 *unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 1;
  if (unaff_ESI[4] != 0) {
    FUN_0040127a();
  }
  *(undefined *)(unaff_EBP + -4) = 0;
  if (unaff_ESI[2] != 0) {
    FUN_0040127a();
  }
  *unaff_ESI = W88619A38::WC0042CBE::vftable;
  return;
}



void FUN_007b3d95(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  return;
}



void __thiscall FUN_007b3da3(int param_1_00,undefined4 *param_1)

{
  *param_1 = *(undefined4 *)(param_1_00 + 4);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 8);
}



void __thiscall FUN_007b3dbf(int param_1_00,undefined4 *param_1)

{
  *param_1 = *(undefined4 *)(param_1_00 + 0xc);
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 0x10);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007b3ddd(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x7b3de9;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,"h,,[\a",5);
  local_8 = 0;
  local_14 = 0xe385;
  local_12 = 0xe078;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 2;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd92ac,8);
  local_8._0_1_ = 3;
  local_14 = 0xcd6f;
  local_12 = 0x74d4;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 5;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00dd92b8,7);
  local_8._0_1_ = 6;
  local_14 = 0x816f;
  local_12 = 0xf272;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 8;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd92c0,9);
  local_8._0_1_ = 9;
  local_14 = 0x88d;
  local_12 = 0x8202;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0xb;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00dd92cc,0xc);
  local_8._0_1_ = 0xc;
  local_14 = 0xdd8;
  local_12 = 0x45c5;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0xe;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd92dc,9);
  local_8._0_1_ = 0xf;
  local_14 = 0x221f;
  local_12 = 0x6ab6;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x11;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00dd92e8,7);
  local_8._0_1_ = 0x12;
  local_14 = 0x14dc;
  local_12 = 0x9b8c;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x14;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd92f0,6);
  local_8._0_1_ = 0x15;
  local_14 = 0x8076;
  local_12 = 0x7060;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x17;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00dd92f8,10);
  local_8._0_1_ = 0x18;
  local_14 = 0x462;
  local_12 = 0x14cc;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x1a;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd9304,6);
  local_8 = CONCAT31(local_8._1_3_,0x1b);
  local_14 = 0x8e40;
  local_12 = 0x9645;
  FUN_00b94330(&local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007b408b(undefined4 *param_1)

{
  *param_1 = WABE12921::WE5976422::vftable;
  if (param_1[0xc] != 0) {
    FUN_0040127a();
  }
  if (param_1[10] != 0) {
    FUN_0040127a();
  }
  FUN_0049c7cb(param_1 + 1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007b411e)

undefined4 FUN_007b40d8(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = 0;
  local_8 = 1;
  uStack_2c = param_3;
  local_18 = &uStack_30;
  uStack_30 = param_3;
  FUN_0042ae30(&uStack_30);
  FUN_007b412c(param_1,param_2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007b41b3)

undefined4 * FUN_007b412c(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  
  pvVar2 = operator_new(0xc);
  if (pvVar2 == (void *)0x0) {
    *param_1 = 0;
    param_1[1] = 0;
    puVar3 = (undefined4 *)FUN_007b41da(0);
    uVar1 = param_1[1];
    param_1[1] = *puVar3;
    *puVar3 = uVar1;
    FUN_007a491c(param_1,0,0);
    FUN_005e72d0();
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000010);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007b41da(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WABE12921::W0AC2C3E4>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007b4220(void)

{
  int iVar1;
  code *pcVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  if (iVar1 != 0) {
    FUN_005e72d0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



void __fastcall FUN_007b4240(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_005e72d0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



undefined4 FUN_007b4259(int **param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  undefined4 *puVar5;
  int *unaff_EDI;
  
  iVar1 = *(int *)unaff_EDI[6];
  iVar2 = *unaff_EDI;
  while( true ) {
    iVar3 = unaff_EDI[6];
    if ((iVar2 == 0) || (iVar2 != *unaff_EDI)) {
      FUN_00a3fb10();
    }
    if (iVar1 == iVar3) break;
    iVar3 = **param_1;
    puVar5 = (undefined4 *)FUN_006badde();
    cVar4 = (**(code **)(iVar3 + 0xc))(*puVar5);
    if (cVar4 == '\0') {
      return 0;
    }
    FUN_00794e17();
  }
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b42c4(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b42d0;
  local_14 = 0;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0x6e;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_18 = &local_38;
  local_8 = 1;
  local_38 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b4336(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b4342;
  local_14 = 0;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0xc4;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_18 = &local_38;
  local_8 = 1;
  local_38 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void Catch_All_007b4544(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b45fb(void)

{
  undefined4 *puVar1;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7b4607;
  uStack_3c = 0;
  uStack_40 = 0;
  uStack_44 = 0;
  local_18 = &local_4c;
  local_4c = 0xa0c;
  local_48 = 0xed;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_18 = &local_4c;
  local_8 = 0;
  local_4c = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b469b(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b46a7;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0xf;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_007b4708(void)

{
  undefined4 *puVar1;
  undefined4 *unaff_ESI;
  undefined *local_68;
  undefined **ppuStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  uint uStack_54;
  undefined **local_48 [3];
  undefined local_3c [40];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e192;
  local_14 = ExceptionList;
  uStack_54 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  local_48[0] = (undefined **)*unaff_ESI;
  uStack_58 = 0;
  uStack_5c = 0;
  uStack_60 = 0;
  ppuStack_64 = (undefined **)local_48;
  local_68 = (undefined *)0x7b474b;
  ppuStack_64 = (undefined **)FUN_007bec8b();
  local_68 = local_3c;
  local_c = 0;
  puVar1 = (undefined4 *)FUN_00467341();
  local_c = CONCAT31(local_c._1_3_,1);
  local_68 = (undefined *)*puVar1;
  local_48[0] = &local_68;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b47f9(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b4805;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x12;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b4866(void)

{
  undefined4 *puVar1;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x7b4872;
  uStack_30 = 0;
  uStack_34 = 0;
  uStack_38 = 0;
  local_14 = &local_40;
  local_40 = 0xa0c;
  local_3c = 0x13;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_8 = 0;
  local_40 = *puVar1;
  local_14 = &local_40;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b48d0(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b48dc;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x19;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b493d(void)

{
  undefined4 *puVar1;
  undefined4 local_40;
  undefined4 local_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7b4949;
  local_18 = &local_40;
  local_40 = 0xa0c;
  local_3c = 0x1a;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_8 = 0;
  local_40 = *puVar1;
  local_18 = &local_40;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b49dd(char param_1)

{
  int iVar1;
  undefined local_30 [16];
  undefined local_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x7b49e9;
  if (param_1 != '\0') {
    iVar1 = FUN_00465be3(local_20);
    local_8 = 0;
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  iVar1 = FUN_00465be3(local_30);
  local_8 = 2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b4af5(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b4b01;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x3c;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_007b4b62(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0046752c();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b4c35(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b4c41;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x3e;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_007b4ca2(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0046752c();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_007b4d75(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0046752c();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b4e48(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b4e54;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x4b;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b4eb5(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b4ec1;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x2a;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b4f22(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b4f2e;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x26;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b4f8f(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000010);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b4fee(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000010);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b504d(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000010);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b536f(void)

{
  undefined4 *puVar1;
  undefined4 local_40;
  undefined4 local_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7b537b;
  local_18 = &local_40;
  local_40 = 0xa0c;
  local_3c = 0x9d;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_8 = 0;
  local_40 = *puVar1;
  local_18 = &local_40;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b540f(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b541b;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x41;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b547c(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b5488;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x42;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b54e9(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b54f5;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0xd3;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b5552(void)

{
  int iVar1;
  
  iVar1 = FUN_0046752c();
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b55f1(void)

{
  int iVar1;
  
  iVar1 = FUN_0046752c();
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b5786(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b5792;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x44;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b57f3(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined local_24 [28];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7b57ff;
  iVar1 = FUN_0046b0e8(local_24,param_2,0);
  local_8 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b5930(void)

{
  undefined4 *puVar1;
  undefined4 local_40;
  undefined4 local_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7b593c;
  local_18 = &local_40;
  local_40 = 0xa0c;
  local_3c = 0x151;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_8 = 0;
  local_40 = *puVar1;
  local_18 = &local_40;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007b59d0(int param_1)

{
  char cVar1;
  undefined4 *puVar2;
  undefined *local_54;
  undefined local_3c [16];
  undefined local_2c [4];
  int local_28;
  undefined *local_1c;
  undefined4 local_18;
  undefined **local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x7b59dc;
  local_54 = *(undefined **)(param_1 + 0xc);
  if ((*(int *)(param_1 + 0x10) - (int)local_54) / 0x1c == 0) {
    local_54 = (undefined *)0x7b59f6;
    FUN_007b536f();
    return;
  }
  local_1c = (undefined *)0x0;
  local_18 = 0;
  local_8 = 0;
  FUN_004494bc();
  FUN_00835630();
  local_54 = local_2c;
  FUN_00467341();
  local_8._0_1_ = 1;
  local_54 = (undefined *)0x7b5a31;
  FUN_005d11c9();
  local_8._0_1_ = 0;
  if (local_28 != 0) {
    FUN_0040127a();
  }
  FUN_007b6d0a();
  local_54 = *(undefined **)(param_1 + 0x10);
  FUN_004494bc();
  local_54 = (undefined *)0x7b5aec;
  cVar1 = FUN_00449367();
  if (cVar1 != '\0') {
    local_14 = &local_54;
    local_54 = local_1c;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&local_18);
  }
  FUN_00835630();
  local_54 = local_3c;
  puVar2 = (undefined4 *)FUN_00467341();
  local_8 = CONCAT31(local_8._1_3_,2);
  local_54 = (undefined *)*puVar2;
  local_14 = &local_54;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b5b7e(void)

{
  int iVar1;
  
  iVar1 = FUN_0046752c();
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b5c54(void)

{
  int iVar1;
  
  iVar1 = FUN_00467341();
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b5d2a(void)

{
  int iVar1;
  
  iVar1 = FUN_00467341();
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b6051(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b605d;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x17e;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b60be(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b60ca;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x17f;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b612b(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b6137;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x1bd;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b6198(void)

{
  int iVar1;
  
  iVar1 = FUN_00467341();
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b6237(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b6243;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x1b2;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b62a4(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b62b0;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x1b0;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b6311(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b631d;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x1b3;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b637e(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b638a;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x19e;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b63eb(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b63f7;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x34;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007b6851)

undefined * FUN_007b6458(undefined4 param_1,int param_2,int param_3)

{
  undefined4 *puVar1;
  int unaff_EBX;
  undefined4 local_70;
  undefined4 local_6c;
  undefined local_58 [8];
  undefined local_50 [24];
  undefined local_38 [24];
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_20 = 0;
  local_1c = 0;
  local_8 = 0;
  if (*(int *)(unaff_EBX + 0x14) == 0) {
    return &LAB_00c29272;
  }
  local_18 = &local_70;
  if (*(int *)(param_2 + 0x14) == 0) {
    local_70 = 0xa0c;
    local_6c = 0x207;
    puVar1 = (undefined4 *)FUN_00465be3(local_50);
    local_8 = CONCAT31(local_8._1_3_,0x16);
    local_70 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_70 = 0xa0c;
  local_6c = 0x207;
  if (*(int *)(param_3 + 0x14) == 0) {
    puVar1 = (undefined4 *)FUN_00465be3(local_38);
    local_8 = CONCAT31(local_8._1_3_,0xe);
    local_70 = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  puVar1 = (undefined4 *)FUN_00465be3(local_58);
  local_18 = &local_70;
  local_8 = CONCAT31(local_8._1_3_,1);
  local_70 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b685e(char param_1)

{
  int iVar1;
  undefined local_30 [16];
  undefined local_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x7b686a;
  if (param_1 != '\0') {
    iVar1 = FUN_00465be3(local_20);
    local_8 = 0;
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  iVar1 = FUN_00465be3(local_30);
  local_8 = 2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b6976(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b6982;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x1ae;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b69e3(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b69ef;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x214;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b6a50(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b6a5c;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0xa0c;
  local_40 = 0x215;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b6abd(void)

{
  undefined4 *puVar1;
  undefined4 local_40;
  undefined4 local_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7b6ac9;
  local_18 = &local_40;
  local_40 = 0xa0c;
  local_3c = 0x1b4;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_8 = 0;
  local_40 = *puVar1;
  local_18 = &local_40;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



int ** __fastcall FUN_007b6d0a(int **param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *param_1;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *param_1;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_007b6d24;
    }
  }
  iVar2 = *piVar1;
LAB_007b6d24:
  if (*(int **)(iVar2 + 0x10) <= param_1[1]) {
    FUN_00a3fb10();
  }
  param_1[1] = param_1[1] + 7;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b6d39(void)

{
  undefined4 *local_7c;
  undefined4 *local_78;
  undefined4 local_74;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined local_20 [8];
  undefined **local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7b6d45;
  uStack_64 = 0;
  uStack_68 = 0;
  uStack_6c = 0;
  uStack_70 = 0x7b6d51;
  FUN_007c50db();
  local_18 = (undefined **)&local_74;
  local_7c = &local_74;
  FUN_007c44af();
  local_18 = (undefined **)&local_7c;
  local_7c = (undefined4 *)0xa0c;
  local_78 = (undefined4 *)0xb;
  local_78 = (undefined4 *)FUN_00465c6c(local_20);
  local_18 = (undefined **)&local_74;
  local_8 = 0;
  local_74 = *local_78;
  local_78 = local_78 + 1;
                    // WARNING: Subroutine does not return
  local_7c = (undefined4 *)&UNK_007b6d9a;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

uint __thiscall
FUN_007b6fb5(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  uint uVar2;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 *puStack_38;
  undefined4 uStack_34;
  undefined4 local_20;
  int local_1c [2];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_20 = 0;
  local_1c[0] = 0;
  uStack_34 = param_3;
  local_8 = 0;
  puStack_38 = (undefined4 *)0x7b6fd9;
  FUN_007b6d39();
  uStack_34 = param_2;
  puStack_38 = &local_20;
  uStack_3c = 0x7b6fe8;
  cVar1 = (**(code **)(*param_1_00 + 4))();
  if (cVar1 == '\0') {
    uStack_3c = 0xec20fd65;
    uStack_40 = 0x7b70a5;
    FUN_00b940e0();
    uStack_3c = 0x7b70ae;
    uVar2 = FUN_00bbf7c1();
    local_8 = 0xffffffff;
    if (local_1c[0] != 0) {
      uStack_3c = 0x7b70be;
      uVar2 = FUN_0040127a();
    }
    return uVar2 & 0xffffff00;
  }
  local_14 = &uStack_40;
  uStack_40 = local_20;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_1c);
}



bool FUN_007b70c6(int *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int *piVar3;
  bool bVar4;
  
  puVar2 = (undefined4 *)FUN_00ba5b8c(1);
  piVar3 = (int *)FUN_00419e85(*puVar2);
  if ((~-(uint)(*piVar3 != 1) & 0x7a491c) == 0) {
    cVar1 = (**(code **)(*param_1 + 0x20))();
    bVar4 = cVar1 == '\0';
  }
  else {
    FUN_00b940e0(0xca2fa2c8);
    bVar4 = false;
  }
  return bVar4;
}



bool FUN_007b7120(int *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int *piVar3;
  bool bVar4;
  
  puVar2 = (undefined4 *)FUN_00ba5b8c(0);
  piVar3 = (int *)FUN_00419e85(*puVar2);
  if ((~-(uint)(*piVar3 != 1) & 0x7a491c) == 0) {
    cVar1 = (**(code **)(*param_1 + 0x20))();
    bVar4 = cVar1 == '\0';
  }
  else {
    FUN_00b940e0(0x5889650e);
    bVar4 = false;
  }
  return bVar4;
}



undefined FUN_007b717a(void)

{
  FUN_00ba55d8(1);
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_007b718f(int param_1,int param_2)

{
  undefined uVar1;
  
  if (param_1 == 0) {
    if (param_2 != 0) {
      FUN_0040127a();
    }
    uVar1 = 0;
  }
  else {
    uVar1 = FUN_007b717a();
    if (param_2 != 0) {
      FUN_0040127a();
    }
  }
  return uVar1;
}



uint FUN_007b71d9(void)

{
  undefined4 *puVar1;
  int *piVar2;
  uint uVar3;
  undefined *puVar4;
  
  puVar1 = (undefined4 *)FUN_00ba5b8c(0);
  piVar2 = (int *)FUN_00419e85(*puVar1);
  if ((~-(uint)(*piVar2 != 1) & 0x7a491c) == 0) {
    puVar1 = (undefined4 *)FUN_00ba5abe();
    piVar2 = (int *)FUN_00419e85(*puVar1);
    if ((~-(uint)(*piVar2 != 1) & 0x7a491c) == 0) {
      return CONCAT31((int3)(~-(uint)(*piVar2 != 1) >> 8),1);
    }
    puVar4 = (undefined *)0xaf93a77e;
  }
  else {
    puVar4 = &DAT_011d9bd2;
  }
  uVar3 = FUN_00b940e0(puVar4);
  return uVar3 & 0xffffff00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_007b7255(int param_1,int param_2)

{
  undefined uVar1;
  
  if (param_1 == 0) {
    if (param_2 != 0) {
      FUN_0040127a();
    }
    uVar1 = 0;
  }
  else {
    uVar1 = FUN_007b71d9(param_1);
    if (param_2 != 0) {
      FUN_0040127a();
    }
  }
  return uVar1;
}



undefined4 FUN_007b73e8(undefined4 param_1,undefined4 param_2)

{
  undefined *local_c;
  undefined4 local_8;
  
  local_c = &LAB_004120d8;
  local_8 = param_2;
  FUN_007f2630(&local_c);
  FUN_007b78f9(param_1);
  return param_1;
}



char FUN_007b7451(int *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int *piVar3;
  char cStack_11;
  int iStack_10;
  
  cVar1 = (**(code **)(*param_1 + 0x20))();
  cStack_11 = '\x01' - (cVar1 != '\0');
  if (cStack_11 == '\0') {
    FUN_00b940e0(0xb1b2d608);
  }
  else {
    puVar2 = (undefined4 *)FUN_00ba58f7();
    piVar3 = (int *)FUN_00419e85(*puVar2);
    if ((~-(uint)(*piVar3 != 1) & 0x7a491c) != 0) {
      FUN_00b940e0(0xfad7892e);
      cStack_11 = '\0';
    }
    if (cStack_11 != '\0') {
      FUN_00ba59dc();
      if ((~-(uint)(iStack_10 != 1) & 0x7a491c) == 0) {
        piVar3 = (int *)FUN_00419e85(iStack_10);
        if ((~-(uint)(*piVar3 != 1) & 0x7a491c) != 0) {
          FUN_00b940e0(0xa285af19);
          cStack_11 = '\0';
        }
      }
      else {
        cStack_11 = (**(code **)(*param_1 + 0x24))(100);
        if (cStack_11 == '\0') {
          FUN_00b940e0(0x262ba9f2);
        }
      }
    }
  }
  return cStack_11;
}



char FUN_007b754b(int *param_1,undefined4 param_2)

{
  char cVar1;
  int *piVar2;
  undefined4 uVar3;
  int local_8;
  
  cVar1 = (**(code **)(*param_1 + 0x20))();
  cVar1 = '\x01' - (cVar1 != '\0');
  if (cVar1 == '\0') {
    uVar3 = 0xe8accab0;
LAB_007b7572:
    FUN_00b940e0(uVar3);
  }
  else {
    FUN_00ba5abe();
    if ((~-(uint)(local_8 != 1) & 0x7a491c) == 0) {
      piVar2 = (int *)FUN_00419e85(local_8);
      if ((~-(uint)(*piVar2 != 1) & 0x7a491c) != 0) {
        FUN_00b940e0(0x14254dc8);
        cVar1 = '\0';
      }
      if (cVar1 == '\0') {
        return '\0';
      }
    }
    else {
      cVar1 = (**(code **)(*param_1 + 0x24))(param_2);
      if (cVar1 == '\0') {
        uVar3 = 0x432477cc;
        goto LAB_007b7572;
      }
    }
    FUN_00ba5b25();
    if (((~-(uint)(param_1 != (int *)0x1) & 0x7a491c) == 0) &&
       (piVar2 = (int *)FUN_00419e85(param_1), (~-(uint)(*piVar2 != 1) & 0x7a491c) != 0)) {
      FUN_00b940e0(0x4b07740a);
      cVar1 = '\0';
    }
  }
  return cVar1;
}



char __thiscall FUN_007b7636(int param_1_00,int param_1)

{
  char cVar1;
  int *in_EAX;
  int *piVar2;
  undefined4 uVar3;
  
  cVar1 = (**(code **)(*in_EAX + 0x20))();
  cVar1 = '\x01' - (cVar1 != '\0');
  if (cVar1 == '\0') {
    uVar3 = 0x259de83d;
  }
  else {
    FUN_00ba5a4d();
    if ((~-(uint)(param_1_00 != 1) & 0x7a491c) == 0) {
      piVar2 = (int *)FUN_00419e85(param_1_00);
      if ((~-(uint)(*piVar2 != 1) & 0x7a491c) == 0) {
        return cVar1;
      }
      FUN_00b940e0(0xbfebb274);
      return '\0';
    }
    if (param_1 == 0) {
      return cVar1;
    }
    cVar1 = (**(code **)(*in_EAX + 0x24))(param_1);
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar3 = 0xecc828d3;
  }
  FUN_00b940e0(uVar3);
  return '\0';
}



char __fastcall FUN_007b76d3(int param_1)

{
  char cVar1;
  int *in_EAX;
  int *piVar2;
  undefined4 uVar3;
  
  cVar1 = (**(code **)(*in_EAX + 0x20))();
  cVar1 = '\x01' - (cVar1 != '\0');
  if (cVar1 == '\0') {
    uVar3 = 0x3f772341;
  }
  else {
    FUN_00ba596b();
    if ((~-(uint)(param_1 != 1) & 0x7a491c) == 0) {
      piVar2 = (int *)FUN_00419e85(param_1);
      if ((~-(uint)(*piVar2 != 1) & 0x7a491c) == 0) {
        return cVar1;
      }
      FUN_00b940e0(0x5c11d6f);
      return '\0';
    }
    cVar1 = (**(code **)(*in_EAX + 0x24))(100);
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar3 = 0xbb36f970;
  }
  FUN_00b940e0(uVar3);
  return '\0';
}



char __thiscall FUN_007b7768(int param_1_00,undefined4 param_1)

{
  char cVar1;
  int *in_EAX;
  int *piVar2;
  
  cVar1 = (**(code **)(*in_EAX + 0x20))();
  cVar1 = '\x01' - (cVar1 != '\0');
  if (cVar1 == '\0') {
    FUN_00b940e0(0x535efd72);
  }
  else {
    FUN_00ba5b8c(param_1);
    if ((~-(uint)(param_1_00 != 1) & 0x7a491c) == 0) {
      piVar2 = (int *)FUN_00419e85(param_1_00);
      if ((~-(uint)(*piVar2 != 1) & 0x7a491c) != 0) {
        FUN_00b940e0(0x72d84293);
        cVar1 = '\0';
      }
    }
  }
  return cVar1;
}



void FUN_007b77e7(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007b783f(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf2<void,class_WDE765622::W83E8FC9E,unsigned_int,unsigned_int>,class_boost::_bi::list3<class_boost::_bi::value<class_WDE765622::W673CE3C4*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007b783f(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf2<void,class_WDE765622::W83E8FC9E,unsigned_int,unsigned_int>,class_boost::_bi::list3<class_boost::_bi::value<class_WDE765622::W673CE3C4*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf2<void,class_WDE765622::W83E8FC9E,unsigned_int,unsigned_int>,class_boost::_bi::list3<class_boost::_bi::value<class_WDE765622::W673CE3C4*>,struct_boost::arg<1>,struct_boost::arg<2>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_007b7888(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    (***(code ***)(*(int *)(param_1 + 0xc) + 4))(1);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007b7899(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W5FC6A77E::W914EB22B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007b78df(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    (***(code ***)(*(int *)(unaff_EBP + 8) + 4))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007b78f9(undefined4 *param_1)

{
  void *pvVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  
  uVar3 = 0;
  pvVar1 = operator_new(0x48);
  if (pvVar1 != (void *)0x0) {
    FUN_00672a11();
    uVar3 = FUN_00ba8dca(pvVar1);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_007b7899();
  uVar3 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar3;
  if (pvVar1 != (void *)0x0) {
    FUN_0040127a();
  }
  FUN_007a491c();
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b798e(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b799a;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0x24;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b79f3(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b79ff;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0x2d;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b7a58(void)

{
  int iVar1;
  
  iVar1 = FUN_0046752c();
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b7af2(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b7afe;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0x4c;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b7bbc(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b7bc8;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0xdf;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b7c21(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b7c2d;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0xe2;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b7ceb(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b7cf7;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0xe9;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b7db5(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b7dc1;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0xec;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b7e1e(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  uint local_38 [5];
  undefined local_24 [12];
  uint *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7b7e2a;
  local_18 = local_38;
  local_38[0] = 0;
  iVar1 = FUN_00443a80(local_24,param_2,0);
  local_8 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b7f2d(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b7f39;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0x2b;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b7f92(void)

{
  int iVar1;
  
  iVar1 = FUN_0046752c();
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b819a(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b81a6;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0x1be;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b81ff(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7b820b;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0x1c3;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b8264(void)

{
  undefined4 *puVar1;
  undefined4 local_40;
  undefined4 local_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7b8270;
  local_18 = &local_40;
  local_40 = 0xa0c;
  local_3c = 0x16f;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_8 = 0;
  local_40 = *puVar1;
  local_18 = &local_40;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 * __thiscall FUN_007b8369(undefined4 *param_1_00,byte param_1)

{
  param_1_00[1] = WABE12921::WF97E76C8::vftable;
  *param_1_00 = WABE12921::W9307C1CB::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

void __thiscall FUN_007b838d(int param_1_00,int *param_1,int param_2)

{
  undefined4 *puVar1;
  undefined4 uStack_28;
  int iStack_24;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  puVar1 = (undefined4 *)auStack_20;
  local_8 = 0;
  if (param_1 != (int *)0x0) {
    iStack_24 = param_1_00 + 4;
    puVar1 = &uStack_28;
    uStack_28 = 0x7b83af;
    (**(code **)(*param_1 + 4))();
  }
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    *(undefined4 *)((int)puVar1 + -4) = 0x7b83bf;
    FUN_0040127a();
  }
  *(undefined4 *)((int)puVar1 + -4) = 0x7b83c4;
  return;
}



undefined4 * __thiscall FUN_007b83c7(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WABE12921::W9307C1CB::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007b83e4(int *param_1_00,undefined4 *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  undefined local_1c [4];
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = param_1 + 1;
  *param_1 = W3CA43D38::W8ABBCFAD::vftable;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  *local_14 = W3CA43D38::WAA73C19B::vftable;
  param_1[2] = param_1_00;
  puVar2 = (undefined4 *)(**(code **)(*param_1_00 + 0x4c))(local_1c);
  param_1[3] = *puVar2;
  iVar1 = puVar2[1];
  param_1[4] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 8) = *(int *)(iVar1 + 8) + 1;
    UNLOCK();
  }
  local_8 = CONCAT31(local_8._1_3_,2);
  if (local_18 != 0) {
    FUN_0040127a();
  }
  FUN_004398f2();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007b8454(undefined4 *param_1_00,byte param_1)

{
  FUN_007b848f(param_1_00 + 1);
  *param_1_00 = W14E3BFCC::WB77945B3::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007b848f(int param_1)

{
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x10));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b84ca(undefined4 param_1)

{
  undefined4 uVar1;
  int *unaff_ESI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x7b84d6;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd9198,0xb);
  local_8 = 0;
  local_14 = 0xa129;
  local_12 = 0x73e3;
  uVar1 = FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  (**(code **)(*unaff_ESI + 0x14))(uVar1,param_1);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b8534(undefined4 param_1)

{
  undefined4 uVar1;
  int *unaff_ESI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x7b8540;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd91a4,0xf);
  local_8 = 0;
  local_14 = 0xbb50;
  local_12 = 0xa461;
  uVar1 = FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  (**(code **)(*unaff_ESI + 0x14))(uVar1,param_1);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b859e(undefined4 param_1)

{
  undefined4 uVar1;
  int *unaff_ESI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x7b85aa;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd91b4,0xe);
  local_8 = 0;
  local_14 = 0x6f47;
  local_12 = 0xb6b8;
  uVar1 = FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  (**(code **)(*unaff_ESI + 0x14))(uVar1,param_1);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



void FUN_007b8608(void)

{
  char *in_EAX;
  
  if ((-(uint)(*in_EAX != '\0') & 0x6a1cd8) != 0) {
    FUN_007b859e(in_EAX + 4);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b8622(undefined4 param_1)

{
  undefined4 uVar1;
  int *unaff_ESI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x7b862e;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd91d4,10);
  local_8 = 0;
  local_14 = 0x9ff9;
  local_12 = 0x6e78;
  uVar1 = FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  (**(code **)(*unaff_ESI + 0x10))(uVar1,param_1);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b868c(undefined4 param_1)

{
  undefined4 uVar1;
  int *unaff_ESI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x7b8698;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd91e0,0xf);
  local_8 = 0;
  local_14 = 0x5a1;
  local_12 = 0xae99;
  uVar1 = FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  (**(code **)(*unaff_ESI + 0x14))(uVar1,param_1);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b86f6(undefined4 param_1)

{
  undefined4 uVar1;
  int *unaff_ESI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [56];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x7b8702;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd91f0,10);
  local_8 = 0;
  local_14 = 0x3fa0;
  local_12 = 0xdb03;
  uVar1 = FUN_00b94330(&local_14,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  (**(code **)(*unaff_ESI + 0x10))(uVar1,param_1);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



void __fastcall FUN_007b87c9(undefined4 *param_1)

{
  *param_1 = W3CA43D38::WF45DE894::vftable;
  return;
}



undefined4 * __thiscall FUN_007b87d0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W3CA43D38::WF45DE894::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007b87ed(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = W3CA43D38::WB1EE6FBF::vftable;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 1);
  }
  param_1[1] = piVar1;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  FUN_007cc480(param_1 + 7);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_007b8842(int param_1,int param_2)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c2a12c;
  if (param_1 != 0) {
    puVar1 = (undefined *)FUN_007b88b7(&param_1);
  }
  if (param_2 != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  return puVar1;
}



void __thiscall FUN_007b887c(int param_1_00,undefined4 *param_1,uint param_2)

{
  undefined4 *puVar1;
  
  if ((uint)(*(int *)(param_1_00 + 0x14) - *(int *)(param_1_00 + 0x10) >> 3) <= param_2) {
    FUN_00a3fb10();
  }
  puVar1 = (undefined4 *)(*(int *)(param_1_00 + 0x10) + param_2 * 8);
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



void FUN_007b88b7(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  uint uVar2;
  undefined4 uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar2 = 0;
  }
  else {
    uVar2 = *(int *)(in_EAX + 0x14) - iVar1 >> 3;
  }
  if ((uint)(*(int *)(in_EAX + 0x10) - iVar1 >> 3) < uVar2) {
    uVar3 = FUN_00478fca(param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar3;
  }
  else {
    FUN_0046e65a();
    FUN_007b8924(&local_10,param_1,local_10,local_c);
  }
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static struct boost::archive::detail::extra_detail::guid_initializer<class
// W3CA43D38::WB1EE6FBF> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class W3CA43D38::WB1EE6FBF>
// >::get_mutable_instance(void)

guid_initializer<class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::WB1EE6FBF>_>
::get_mutable_instance(void)

{
                    // 0x3b891f  1045
                    // ?get_mutable_instance@?$singleton@U?$guid_initializer@VWB1EE6FBF@W3CA43D38@@@extra_detail@detail@archive@boost@@@serialization@boost@@SAAAU?$guid_initializer@VWB1EE6FBF@W3CA43D38@@@extra_detail@detail@archive@3@XZ
  if ((__local_static_guard__2__ & 1) == 0) {
    __local_static_guard__2__ = __local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c748f7);
  }
  return (guid_initializer<class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * FUN_007b8924(undefined4 *param_1,undefined4 param_2,int param_3,int param_4)

{
  undefined4 uVar1;
  int in_EAX;
  undefined4 *puVar2;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc) & 0xfffffff8U) == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = param_4 - local_8 >> 3;
  }
  FUN_0044d15c();
  FUN_0046e65a();
  puVar2 = (undefined4 *)FUN_007d43be(local_8);
  uVar1 = *puVar2;
  param_1[1] = puVar2[1];
  *param_1 = uVar1;
  return param_1;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static struct boost::archive::detail::extra_detail::guid_initializer<class
// W3CA43D38::WB1EE6FBF> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class W3CA43D38::WB1EE6FBF>
// >::get_instance(void)

guid_initializer<class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::WB1EE6FBF>_>
::get_instance(void)

{
                    // 0x3b89b0  725
                    // ?get_instance@?$singleton@U?$guid_initializer@VWB1EE6FBF@W3CA43D38@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAU?$guid_initializer@VWB1EE6FBF@W3CA43D38@@@extra_detail@detail@archive@3@XZ
  if ((__local_static_guard__2__ & 1) == 0) {
    __local_static_guard__2__ = __local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c748f7);
  }
  return (guid_initializer<class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WB1EE6FBF> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WB1EE6FBF> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_const_instance(void)

{
                    // 0x3b89d1  684
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3b89d1  1466
                    // ?instantiate@?$ptr_serialization_support@Vbinary_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b8b7d();
    _atexit((_func_4879 *)&LAB_00c74915);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WB1EE6FBF> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WB1EE6FBF> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_const_instance(void)

{
                    // 0x3b89d6  699
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3b89d6  1484
                    // ?instantiate@?$ptr_serialization_support@Vxml_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b8ad5();
    _atexit((_func_4879 *)&LAB_00c74941);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WB1EE6FBF> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WB1EE6FBF> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_const_instance(void)

{
                    // 0x3b89db  669
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3b89db  1475
                    // ?instantiate@?$ptr_serialization_support@Vxml_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b8b29();
    _atexit((_func_4879 *)&LAB_00c7492b);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WB1EE6FBF> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WB1EE6FBF> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_const_instance(void)

{
                    // 0x3b89e0  647
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3b89e0  1457
                    // ?instantiate@?$ptr_serialization_support@Vbinary_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b8bd1();
    _atexit((_func_4879 *)&LAB_00c748ff);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WB1EE6FBF> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WB1EE6FBF> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_instance(void)

{
                    // 0x3b89e5  1019
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b8ad5();
    _atexit((_func_4879 *)&LAB_00c74941);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WB1EE6FBF> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WB1EE6FBF> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_instance(void)

{
                    // 0x3b8a21  989
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b8b29();
    _atexit((_func_4879 *)&LAB_00c7492b);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WB1EE6FBF> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WB1EE6FBF> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_instance(void)

{
                    // 0x3b8a5d  1004
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b8b7d();
    _atexit((_func_4879 *)&LAB_00c74915);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WB1EE6FBF> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WB1EE6FBF> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_instance(void)

{
                    // 0x3b8a99  967
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b8bd1();
    _atexit((_func_4879 *)&LAB_00c748ff);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>
* FUN_007b8ad5(void)

{
  extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032f0260);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>
* FUN_007b8b29(void)

{
  extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f0258);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>
* FUN_007b8b7d(void)

{
  extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>::
       vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032f0250);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>
* FUN_007b8bd1(void)

{
  extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>::
       vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f0248);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007b8c25(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007b8c47(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007b8c69(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007b8c8b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WB1EE6FBF> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WB1EE6FBF> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_instance(void)

{
                    // 0x3b8cad  941
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c749a8);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WB1EE6FBF> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WB1EE6FBF> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> *peVar1;
  
                    // 0x3b8cf7  861
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7498d);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WB1EE6FBF> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WB1EE6FBF> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_instance(void)

{
                    // 0x3b8d47  900
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>::
    oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>
              ((oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74972);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WB1EE6FBF> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WB1EE6FBF> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> *peVar1;
  
                    // 0x3b8d91  812
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74957);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007b8de1(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe2d = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007b8e0a(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe2e = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007b8e33(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe2f = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007b8e5c(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe30 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::WB1EE6FBF>::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::WB1EE6FBF>(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>::
oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>
          (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> *this)

{
  extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> *peVar1;
  
                    // 0x3b8e85  79
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WB1EE6FBF>::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WB1EE6FBF>(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>
          (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> *this)

{
  extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> *peVar1;
  
                    // 0x3b8e9f  38
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::WB1EE6FBF>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::WB1EE6FBF>
// >::get_const_instance(void)

extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>::
get_const_instance(void)

{
                    // 0x3b8eb9  453
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VWB1EE6FBF@W3CA43D38@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VWB1EE6FBF@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b8f08();
    _atexit((_func_4879 *)&LAB_00c749c3);
  }
  return (extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007b8ebe(void)

{
  FUN_007b9254();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::WB1EE6FBF>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::WB1EE6FBF> >::get_instance(void)

extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>::
get_instance(void)

{
                    // 0x3b8ecc  773
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VWB1EE6FBF@W3CA43D38@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VWB1EE6FBF@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b8f08();
    _atexit((_func_4879 *)&LAB_00c749c3);
  }
  return (extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>
* FUN_007b8f08(void)

{
  FUN_008308e0("1D7765E0-868E-8DAC-32D4-D9DF9CC280D3");
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>::vftable;
  FUN_00830c60(&W3CA43D38::WB1EE6FBF::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007b8f5b(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WB1EE6FBF>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x3b8f9c  1723
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_007b9295(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007b8fbe(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>::vftable;
  FUN_0082df80(&DAT_032f0260);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WB1EE6FBF>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3b8ffd  1622
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7b9009;
  pvVar1 = operator_new(0x1a4);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007b93d2(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007b930c(param_1 + 9);
  return;
}



void Catch_All_007b906c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007b9079(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>::vftable;
  FUN_0082bbc0(&DAT_032f0258);
  FUN_00833fa0();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WB1EE6FBF>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>::
save_object_ptr(pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>
                *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> *poVar1;
  
                    // 0x3b90b7  1708
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  FUN_00830550(param_2,poVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007b9101(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>::
       vftable;
  FUN_00833f40(&DAT_032f0250);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WB1EE6FBF>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>::
load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>
                *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3b913f  1600
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7b914b;
  pvVar1 = operator_new(0x1a4);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007b93d2(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007b9383();
  return;
}



void Catch_All_007b91ad(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007b91ba(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>::
       vftable;
  FUN_008347f0(&DAT_032f0248);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WB1EE6FBF>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> *this,
                basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> *local_8;
  
                    // 0x3b91f8  1689
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007b93f8();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WB1EE6FBF>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3b9214  1573
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007b948e();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WB1EE6FBF>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>::save_object_data
          (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> *this,
          basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> *local_8;
  
                    // 0x3b9224  1648
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007b9524();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WB1EE6FBF>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>::load_object_data
          (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3b9242  1524
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VWB1EE6FBF@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007b95e6();
  return;
}



void FUN_007b9254(void)

{
  int unaff_EDI;
  
  if (unaff_EDI != 0) {
    FUN_00502d9b();
    FUN_0044237a(unaff_EDI + 4);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::WB1EE6FBF> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::WB1EE6FBF> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_const_instance(void)

{
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c749a8);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::WB1EE6FBF> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::WB1EE6FBF> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> *peVar1;
  
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7498d);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WB1EE6FBF> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WB1EE6FBF> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_const_instance(void)

{
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>::
    oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>
              ((oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74972);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WB1EE6FBF> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WB1EE6FBF> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF> *peVar1;
  
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74957);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007b9287(void)

{
  int *in_EAX;
  
  if (*in_EAX != 0) {
    FUN_007b9254();
  }
  return;
}



int FUN_007b9295(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_007b930c(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int __fastcall FUN_007b9383(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007b93d2(int param_1)

{
  if (param_1 != 0) {
    FUN_007b87ed(param_1);
  }
  return;
}



void __fastcall FUN_007b93f8(int param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>
  ::get_instance();
  iVar3 = param_1;
  if (param_1 == -9) {
    iVar3 = 0;
  }
  FUN_007b96a8(iVar3 + 9);
  if (param_1 == -9) {
    param_1 = 0;
  }
  FUN_007b971f(param_1 + 9);
  return;
}



void __fastcall FUN_007b948e(int param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>
  ::get_instance();
  iVar3 = param_1;
  if (param_1 == -9) {
    iVar3 = 0;
  }
  FUN_007b9796(iVar3 + 9);
  if (param_1 == -9) {
    param_1 = 0;
  }
  FUN_007b980d(param_1 + 9);
  return;
}



void FUN_007b9524(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2> *poVar3;
  oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
  *poVar4;
  int unaff_EBX;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>
  ::get_instance();
  poVar3 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>
           ::get_instance();
  FUN_00830550(unaff_EBX,poVar3);
  poVar4 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
           ::get_instance();
  FUN_00830550(unaff_EBX + 4,poVar4);
  return;
}



void FUN_007b95e6(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2> *piVar3;
  iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
  *piVar4;
  int unaff_EBX;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WB1EE6FBF>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>
  ::get_instance();
  piVar3 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>
           ::get_instance();
  FUN_00832bd0(unaff_EBX,piVar3);
  piVar4 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
           ::get_instance();
  FUN_00832bd0(unaff_EBX + 4,piVar4);
  return;
}



int FUN_007b96a8(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_007b971f(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
  *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_007b9796(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_007b980d(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// class boost::serialization::void_cast_detail::void_caster const & __cdecl
// boost::serialization::void_cast_register<class W3CA43D38::WB1EE6FBF,class
// W3CA43D38::W7D89EDB2>(class W3CA43D38::WB1EE6FBF const *,class W3CA43D38::W7D89EDB2 const *)

void_caster * __cdecl
boost::serialization::void_cast_register<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>
          (WB1EE6FBF *param_1,W7D89EDB2 *param_2)

{
                    // 0x3b9884  14
                    // ??$void_cast_register@VWB1EE6FBF@W3CA43D38@@VW7D89EDB2@2@@serialization@boost@@YAABVvoid_caster@void_cast_detail@01@PBVWB1EE6FBF@W3CA43D38@@PBVW7D89EDB2@5@@Z
                    // 0x3b9884  716
                    // ?get_const_instance@?$singleton@V?$void_caster_primitive@VWB1EE6FBF@W3CA43D38@@VW7D89EDB2@2@@void_cast_detail@serialization@boost@@@serialization@boost@@SAABV?$void_caster_primitive@VWB1EE6FBF@W3CA43D38@@VW7D89EDB2@2@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b98e2();
    _atexit((_func_4879 *)&LAB_00c749d9);
  }
  return (void_caster *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007b9889(undefined4 param_1)

{
  ___RTDynamicCast(param_1,0,&W3CA43D38::W7D89EDB2::RTTI_Type_Descriptor,
                   &W3CA43D38::WB1EE6FBF::RTTI_Type_Descriptor,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::void_cast_detail::void_caster_primitive<class
// W3CA43D38::WB1EE6FBF,class W3CA43D38::W7D89EDB2> & __cdecl boost::serialization::singleton<class
// boost::serialization::void_cast_detail::void_caster_primitive<class W3CA43D38::WB1EE6FBF,class
// W3CA43D38::W7D89EDB2> >::get_instance(void)

void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2> * __cdecl
boost::serialization::
singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>
::get_instance(void)

{
                    // 0x3b98a6  1036
                    // ?get_instance@?$singleton@V?$void_caster_primitive@VWB1EE6FBF@W3CA43D38@@VW7D89EDB2@2@@void_cast_detail@serialization@boost@@@serialization@boost@@CAAAV?$void_caster_primitive@VWB1EE6FBF@W3CA43D38@@VW7D89EDB2@2@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b98e2();
    _atexit((_func_4879 *)&LAB_00c749d9);
  }
  return (void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2> *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>
* FUN_007b98e2(void)

{
  extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>
           ::get_instance();
  _DAT_032f100c =
       boost::serialization::
       singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WB1EE6FBF>_>
       ::get_instance();
  _DAT_032f1014 = 0;
  _DAT_032f1018 = 0;
  _t = boost::serialization::void_cast_detail::
       void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>::vftable;
  _DAT_032f1010 = peVar1;
  FUN_0083ddb0(0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007b9940(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::detail::
                singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>_>
                ::vftable;
  DAT_032efe32 = 1;
  FUN_007b9969();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007b9969(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::
             void_caster_primitive<class_W3CA43D38::WB1EE6FBF,class_W3CA43D38::W7D89EDB2>::vftable;
  FUN_0083e150();
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 __thiscall FUN_007b9995(undefined4 param_1_00,byte param_1)

{
  FUN_007b9969();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007b99b1(undefined4 param_1)

{
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::W7D89EDB2>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::W7D89EDB2>
// >::get_const_instance(void)

extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>::
get_const_instance(void)

{
                    // 0x3b99be  445
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW7D89EDB2@W3CA43D38@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW7D89EDB2@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b99ff();
    _atexit((_func_4879 *)&LAB_00c749f4);
  }
  return (extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::W7D89EDB2>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::W7D89EDB2> >::get_instance(void)

extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>::
get_instance(void)

{
                    // 0x3b99c3  765
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW7D89EDB2@W3CA43D38@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW7D89EDB2@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b99ff();
    _atexit((_func_4879 *)&LAB_00c749f4);
  }
  return (extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>
* FUN_007b99ff(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>::vftable;
  FUN_00830c60(&W3CA43D38::W7D89EDB2::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007b9a4f(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W7D89EDB2> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W7D89EDB2> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>
::get_const_instance(void)

{
                    // 0x3b9a90  613
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74a25);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// std::vector<class boost::shared_ptr<class W3CA43D38::WF45DE894>,class std::allocator<class
// boost::shared_ptr<class W3CA43D38::WF45DE894> > > > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > > >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
          ::get_const_instance(void)

{
                    // 0x3b9a95  596
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74a0a);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007b9a9a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007b9abc(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W7D89EDB2> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W7D89EDB2> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>
::get_instance(void)

{
                    // 0x3b9ade  933
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74a25);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > > & __cdecl boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > > >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
          ::get_instance(void)

{
                    // 0x3b9b28  916
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74a0a);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007b9b72(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe34 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007b9b9b(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe35 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W7D89EDB2>::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W7D89EDB2>(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>::
oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2>
          (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W7D89EDB2> *this)

{
  extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> *peVar1;
  
                    // 0x3b9bc4  71
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// std::vector<class boost::shared_ptr<class W3CA43D38::WF45DE894>,class std::allocator<class
// boost::shared_ptr<class W3CA43D38::WF45DE894> > > >::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > >(void)

oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
::
oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
          (oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
           *this)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
  *peVar1;
  
                    // 0x3b9bde  54
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class std::vector<class
// boost::shared_ptr<class W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class
// W3CA43D38::WF45DE894> > > > const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > > >::get_const_instance(void)

extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
          ::get_const_instance(void)

{
                    // 0x3b9bf8  428
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b9c39();
    _atexit((_func_4879 *)&LAB_00c74a40);
  }
  return (extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class std::vector<class
// boost::shared_ptr<class W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class
// W3CA43D38::WF45DE894> > > > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > > >::get_instance(void)

extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
          ::get_instance(void)

{
                    // 0x3b9bfd  748
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007b9c39();
    _atexit((_func_4879 *)&LAB_00c74a40);
  }
  return (extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
* FUN_007b9c39(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
       ::vftable;
  FUN_00830c60(&std::
                vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
                ::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007b9c89(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
       ::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W7D89EDB2>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>::save_object_data
          (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2> *this,
          basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2> *local_4;
  
                    // 0x3b9cca  1644
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
                    // 0x3b9cca  1650
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
                    // 0x3b9cca  1681
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
                    // 0x3b9cca  1694
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_4 = this;
  (**(code **)(*(int *)this + 0xc))(&local_4);
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
::save_object_data(oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
  *local_8;
  
                    // 0x3b9cd8  1664
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007b9e46();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::W7D89EDB2> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::W7D89EDB2> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> *peVar1;
  
                    // 0x3b9cf4  533
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74a71);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// std::vector<class boost::shared_ptr<class W3CA43D38::WF45DE894>,class std::allocator<class
// boost::shared_ptr<class W3CA43D38::WF45DE894> > > > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > > >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
  *peVar1;
  
                    // 0x3b9cf9  516
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74a56);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007b9cfe(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007b9d20(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W7D89EDB2> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W7D89EDB2> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> *peVar1;
  
                    // 0x3b9d42  853
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74a71);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > > & __cdecl boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > > >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
  *peVar1;
  
                    // 0x3b9d92  836
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74a56);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007b9de2(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe37 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W7D89EDB2>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007b9e0b(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe38 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
::load_object_data(iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3b9e34  1548
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007b9f99(param_1,param_2);
  return;
}



void __fastcall FUN_007b9e46(int param_1)

{
  uint uVar1;
  undefined4 *in_EAX;
  int local_28;
  undefined4 local_24;
  char *local_20;
  int *local_1c;
  undefined *local_18;
  undefined4 local_14;
  
  local_28 = (int)(in_EAX[4] - in_EAX[3]) >> 3;
  local_1c = &local_28;
  local_24 = 1;
  local_20 = "count";
  FUN_007b9f02();
  local_1c = &local_24;
  local_20 = "item_version";
  FUN_004cce2d(param_1 + 9);
  uVar1 = in_EAX[3];
  if ((uint)in_EAX[4] < uVar1) {
    FUN_00a3fb10();
  }
  local_20 = (char *)*in_EAX;
  if (local_28 != 0) {
    local_18 = &DAT_03058bd8;
    local_1c = (int *)uVar1;
    do {
      local_28 = local_28 + -1;
      FUN_007c96e9();
      FUN_007f0e50();
      local_14 = FUN_007c96e9();
      FUN_007b9f20(param_1 + 9);
    } while (local_28 != 0);
  }
  return;
}



int __fastcall FUN_007b9f02(undefined4 param_1)

{
  int unaff_ESI;
  
  FUN_007ba10a(param_1);
  if (unaff_ESI != 0) {
    return unaff_ESI + -9;
  }
  return 0;
}



int FUN_007b9f20(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
  *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007b9f99(undefined4 param_1,undefined4 param_2)

{
  char **ppcVar1;
  int *piVar2;
  char *pcVar3;
  ushort local_1c [2];
  int local_18;
  int local_14;
  char *local_10;
  int *local_c;
  
  FUN_007ce2c9();
  local_18 = 0;
  FUN_00831450(local_1c);
  local_14 = 0;
  local_c = &local_18;
  local_10 = "count";
  FUN_007ba19a();
  if (3 < local_1c[0]) {
    local_c = &local_14;
    local_10 = "item_version";
    FUN_004cd077();
  }
  FUN_007f10ac(param_2,local_18);
  FUN_0046e65a();
  piVar2 = local_c;
  pcVar3 = local_10;
  while (local_18 != 0) {
    local_18 = local_18 + -1;
    ppcVar1 = (char **)FUN_007ba053(pcVar3,piVar2);
    pcVar3 = *ppcVar1;
    piVar2 = (int *)ppcVar1[1];
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_007ba053(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *unaff_ESI;
  int unaff_EDI;
  undefined4 *puVar2;
  undefined4 local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18 = 0;
  local_8 = 0;
  FUN_007ba1b8(unaff_EDI + 9);
  FUN_007b88b7(&local_1c);
  puVar2 = &local_1c;
  uVar1 = FUN_007ba0c6(puVar2);
  FUN_00831750(uVar1,puVar2);
  *unaff_ESI = param_1;
  local_8 = 0xffffffff;
  unaff_ESI[1] = param_2;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



void FUN_007ba0c6(void)

{
  FUN_0046e65a();
  FUN_007d43be(0xffffffff);
  FUN_007c96e9();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007ba10a(undefined4 *param_1,int param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int local_14;
  
  FUN_0082dd50(*param_1);
  puVar1 = (undefined4 *)param_1[1];
  local_14 = param_2;
  if (param_2 == -9) {
    local_14 = 0;
  }
  FUN_0082d4f0();
  if ((*(byte *)(*(int *)(**(int **)(local_14 + 0x14) + 4) + 8 + (int)*(int **)(local_14 + 0x14)) &
      6) != 0) {
    uVar2 = FUN_00832e60(0xd,0,0,1);
    FUN_0043fc7f(uVar2);
  }
  FUN_00495e36(*puVar1);
  FUN_0082de20(*param_1);
  return;
}



int __fastcall FUN_007ba19a(undefined4 param_1)

{
  int unaff_ESI;
  
  FUN_007ba22f(param_1);
  if (unaff_ESI != 0) {
    return unaff_ESI + -9;
  }
  return 0;
}



int FUN_007ba1b8(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007ba22f(undefined4 *param_1,int param_2)

{
  code *pcVar1;
  undefined4 uVar2;
  
  FUN_0082ace0(*param_1);
  if (param_2 == -9) {
    param_2 = 0;
  }
  if ((*(byte *)(*(int *)(**(int **)(param_2 + 0x10) + 4) + 8 + (int)*(int **)(param_2 + 0x10)) & 6)
      == 0) {
    FUN_00495cff(param_1[1]);
    FUN_0082af90(*param_1);
    return;
  }
  uVar2 = FUN_00832e60(8,0,0,1);
  FUN_0043fc7f(uVar2);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::shared_ptr<class W3CA43D38::WF45DE894> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
          ::get_const_instance(void)

{
                    // 0x3ba2b0  593
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74a8c);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007ba2b5(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
          ::get_instance(void)

{
                    // 0x3ba2d7  913
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74a8c);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007ba321(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe39 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::shared_ptr<class W3CA43D38::WF45DE894> >::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> >(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
          (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
           *this)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> *peVar1;
  
                    // 0x3ba34a  51
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W3CA43D38::WF45DE894> > const & __cdecl
// boost::serialization::singleton<class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W3CA43D38::WF45DE894> > >::get_const_instance(void)

extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
::get_const_instance(void)

{
                    // 0x3ba364  418
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ba3a5();
    _atexit((_func_4879 *)&LAB_00c74aa7);
  }
  return (extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W3CA43D38::WF45DE894> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::shared_ptr<class
// W3CA43D38::WF45DE894> > >::get_instance(void)

extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
::get_instance(void)

{
                    // 0x3ba369  738
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ba3a5();
    _atexit((_func_4879 *)&LAB_00c74aa7);
  }
  return (extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
* FUN_007ba3a5(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>::vftable;
  FUN_00830c60(&boost::shared_ptr<class_W3CA43D38::WF45DE894>::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007ba3f5(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894>
// >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
::save_object_data(oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  undefined *puVar1;
  undefined local_8 [4];
  
                    // 0x3ba436  1661
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  puVar1 = local_8;
  (**(code **)(*(int *)this + 0xc))(puVar1);
                    // WARNING: Load size is inaccurate
  param_2 = *param_2;
  FUN_007ba81d(puVar1,&DAT_03058be0,&param_2);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W7D89EDB2> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W7D89EDB2> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>
::get_const_instance(void)

{
                    // 0x3ba475  576
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>::
    oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>
              ((oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74b29);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::binary_oarchive,class std::vector<class
// boost::shared_ptr<class W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class
// W3CA43D38::WF45DE894> > > > >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
          ::get_const_instance(void)

{
                    // 0x3ba47a  566
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74b0e);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W7D89EDB2> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W7D89EDB2> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> *peVar1;
  
                    // 0x3ba47f  488
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74af3);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::binary_iarchive,class std::vector<class
// boost::shared_ptr<class W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class
// W3CA43D38::WF45DE894> > > > >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
  *peVar1;
  
                    // 0x3ba484  478
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74ad8);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



void FUN_007ba489(int param_1)

{
  if (param_1 != 0) {
    FUN_0044237a(param_1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::shared_ptr<class W3CA43D38::WF45DE894> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> *peVar1;
  
                    // 0x3ba4a3  506
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74abd);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007ba4a8(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ba4ca(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ba4ec(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ba50e(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ba530(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W7D89EDB2> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W7D89EDB2> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>
::get_instance(void)

{
                    // 0x3ba552  896
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>::
    oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>
              ((oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74b29);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > > & __cdecl boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > > >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
          ::get_instance(void)

{
                    // 0x3ba59c  886
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74b0e);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W7D89EDB2> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W7D89EDB2> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> *peVar1;
  
                    // 0x3ba5e6  808
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74af3);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > > & __cdecl boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > > >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
  *peVar1;
  
                    // 0x3ba636  798
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74ad8);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> *peVar1;
  
                    // 0x3ba686  826
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74abd);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007ba6d6(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe3b = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ba6ff(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe3c = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ba728(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe3d = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ba751(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe3e = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ba77a(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe3f = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W7D89EDB2>::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W7D89EDB2>(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2>
          (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W7D89EDB2> *this)

{
  extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> *peVar1;
  
                    // 0x3ba7a3  34
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > >::oserializer<class boost::archive::binary_oarchive,class std::vector<class
// boost::shared_ptr<class W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class
// W3CA43D38::WF45DE894> > > >(void)

oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
::
oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
          (oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
           *this)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
  *peVar1;
  
                    // 0x3ba7bd  24
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
::save_object_data(oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
  *local_8;
  
                    // 0x3ba7d7  1634
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007bae59();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W7D89EDB2>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2>::load_object_data
          (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W7D89EDB2> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3ba7f3  1520
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
                    // 0x3ba7f3  1526
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
                    // 0x3ba7f3  1565
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW7D89EDB2@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
                    // 0x3ba7f3  1578
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class std::vector<class boost::shared_ptr<class
// W3CA43D38::WF45DE894>,class std::allocator<class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// > >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>,class_std::allocator<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3ba7f6  1510
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@V?$allocator@V?$shared_ptr@VWF45DE894@W3CA43D38@@@boost@@@std@@@std@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007baf36(param_1);
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894>
// >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
::load_object_data(iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3ba807  1538
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007ba899(param_2,param_3);
  return;
}



void __fastcall FUN_007ba81d(int *param_1)

{
  int iVar1;
  undefined4 *in_EAX;
  undefined2 extraout_var;
  
  FUN_0082dd50(*in_EAX);
  if (param_1 == (int *)0xfffffff7) {
    param_1 = (int *)0x0;
  }
  iVar1 = *(int *)in_EAX[1];
  FUN_007bb692();
  if (iVar1 == 0) {
    (**(code **)(*param_1 + 0x10))(CONCAT22(extraout_var,0xffff));
    FUN_0082d4f0();
  }
  else {
    FUN_007bb403(param_1,iVar1);
  }
  FUN_0082de20(*in_EAX);
  return;
}



void __thiscall FUN_007ba899(undefined *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined *local_2c;
  undefined ***pppuStack_28;
  undefined *local_24;
  undefined *local_20;
  undefined **local_1c [2];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c1c00a;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if (param_2 == 0) {
    puVar2 = (undefined4 *)
             boost::serialization::
             singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    local_2c = param_1_00;
    if (param_1_00 + 9 == (undefined *)0x0) {
      local_2c = (undefined *)0x0;
    }
    uVar3 = (**(code **)*puVar2)(uVar1);
    FUN_00832c10(uVar3);
    local_20 = (undefined *)0x0;
    local_1c[0] = (undefined **)0x0;
    uStack_c = 0;
    pppuStack_28 = (undefined ***)&local_20;
    local_2c = &DAT_03058be0;
    FUN_007ba9db(&local_2c);
    pppuStack_28 = local_1c;
    local_2c = &DAT_03058be4;
    FUN_007ba9fd(param_1_00 + 9);
    local_2c = local_20;
    FUN_007bceec(local_1c);
    uStack_c._0_1_ = 1;
    FUN_0082c9b0(&local_2c);
    uStack_c = (uint)uStack_c._1_3_ << 8;
    if (pppuStack_28 != (undefined ***)0x0) {
      FUN_007bcf4f();
    }
    uStack_c = 0xffffffff;
    local_24 = local_20;
    if (local_1c[0] != (undefined **)0x0) {
      FUN_007bcf4f();
    }
  }
  else {
    local_1c[0] = &local_24;
    local_20 = &DAT_03058be0;
    FUN_007ba9db(&local_20);
  }
  FUN_007baa74(param_1_00 + 0x34);
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_007ba9ce(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    FUN_007bcf4f();
    return;
  }
  return;
}



int FUN_007ba9db(undefined4 param_1)

{
  int iVar1;
  int unaff_ESI;
  
  FUN_007bb332(param_1);
  if (unaff_ESI == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_ESI + -9;
  }
  return iVar1;
}



int FUN_007ba9fd(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007baa74(int param_1,int param_2)

{
  int *piVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  int local_28;
  undefined local_24 [4];
  undefined4 local_20;
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb0;
  local_8 = 0x7baa83;
  if (param_1 == 0) {
    local_20 = 0;
    local_1c = (extended_type_info_typeid<class_W3CA43D38::WF45DE894> *)0x0;
    FUN_0046f668();
    if (local_1c != (extended_type_info_typeid<class_W3CA43D38::WF45DE894> *)0x0) {
      FUN_0040127a();
    }
    return;
  }
  piVar1 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
                  ::get_instance();
  local_1c = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
             ::get_instance();
  uVar2 = ___RTtypeid(param_1);
  iVar3 = FUN_00830d80(uVar2);
  local_1c = (extended_type_info_typeid<class_W3CA43D38::WF45DE894> *)iVar3;
  if (iVar3 == 0) {
    uVar4 = 1;
    uVar2 = (**(code **)(*piVar1 + 8))(0,1);
    uVar2 = FUN_00832e60(2,uVar2,iVar3,uVar4);
    local_8 = 0;
    iVar3 = FUN_0043fc7f(uVar2);
  }
  FUN_0082cad0(&local_28,param_1,iVar3,piVar1);
  local_8 = 1;
  if (local_28 == 0) {
    FUN_007bb09f(param_2);
    local_18 = FUN_0083e330(local_1c,piVar1,param_1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 4);
  }
  local_18 = local_28;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_24);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3bab80  656
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bac07();
    _atexit((_func_4879 *)&LAB_00c74b5a);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::WF45DE894>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::WF45DE894>
// >::get_const_instance(void)

extended_type_info_typeid<class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>::
get_const_instance(void)

{
                    // 0x3bab85  458
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VWF45DE894@W3CA43D38@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VWF45DE894@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bac5b();
    _atexit((_func_4879 *)&LAB_00c74b44);
  }
  return (extended_type_info_typeid<class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> > >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3bab8a  976
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bac07();
    _atexit((_func_4879 *)&LAB_00c74b5a);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::WF45DE894>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::WF45DE894> >::get_instance(void)

extended_type_info_typeid<class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>::
get_instance(void)

{
                    // 0x3babc6  778
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VWF45DE894@W3CA43D38@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VWF45DE894@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bac5b();
    _atexit((_func_4879 *)&LAB_00c74b44);
  }
  return (extended_type_info_typeid<class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::WF45DE894 *,struct
// boost::serialization::null_deleter> > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::WF45DE894 *,struct
// boost::serialization::null_deleter> > >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3bac02  513
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
                    // 0x3bac02  1074
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74b70);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
* FUN_007bac07(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f0240);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
* FUN_007bac5b(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>::vftable;
  FUN_00830c60(&W3CA43D38::WF45DE894::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bacab(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007baccd(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> > >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3bad0e  833
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74b70);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007bad5e(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe42 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::WF45DE894 *,struct
// boost::serialization::null_deleter> > const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::WF45DE894 *,struct
// boost::serialization::null_deleter> > >::get_const_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3bad87  425
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007badc8();
    _atexit((_func_4879 *)&LAB_00c74b8b);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::WF45DE894 *,struct
// boost::serialization::null_deleter> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::WF45DE894 *,struct
// boost::serialization::null_deleter> > >::get_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3bad8c  745
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007badc8();
    _atexit((_func_4879 *)&LAB_00c74b8b);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
* FUN_007badc8(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_00830c60(&boost_132::detail::
                sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>
                ::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bae18(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



void FUN_007bae59(void)

{
  uint uVar1;
  undefined4 *in_EAX;
  undefined4 uVar2;
  oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
  *poVar3;
  int local_20;
  undefined4 local_1c;
  char *local_18;
  int *local_14;
  
  local_20 = (int)(in_EAX[4] - in_EAX[3]) >> 3;
  local_14 = &local_20;
  local_1c = 1;
  local_18 = "count";
  FUN_007bb1ae();
  local_14 = &local_1c;
  local_18 = "item_version";
  FUN_007bb1ae();
  uVar1 = in_EAX[3];
  if ((uint)in_EAX[4] < uVar1) {
    FUN_00a3fb10();
  }
  local_18 = (char *)*in_EAX;
  local_14 = (int *)uVar1;
  while (local_20 != 0) {
    local_20 = local_20 + -1;
    FUN_007c96e9();
    FUN_007f0e50();
    uVar2 = FUN_007c96e9();
    poVar3 = boost::serialization::
             singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
             ::get_instance();
    FUN_00830550(uVar2,poVar3);
  }
  return;
}



void FUN_007baf36(undefined4 param_1)

{
  undefined4 in_EAX;
  char **ppcVar1;
  int *piVar2;
  char *pcVar3;
  ushort local_1c [2];
  int local_18;
  int local_14;
  char *local_10;
  int *local_c;
  
  FUN_007ce2c9();
  local_18 = 0;
  FUN_00831450(local_1c);
  local_14 = 0;
  local_c = &local_18;
  local_10 = "count";
  FUN_007bb201();
  if (3 < local_1c[0]) {
    local_c = &local_14;
    local_10 = "item_version";
    FUN_007bb23d();
  }
  FUN_007f10ac(in_EAX,local_18);
  FUN_0046e65a();
  piVar2 = local_c;
  pcVar3 = local_10;
  while (local_18 != 0) {
    local_18 = local_18 + -1;
    ppcVar1 = (char **)FUN_007bb106(param_1,pcVar3,piVar2);
    pcVar3 = *ppcVar1;
    piVar2 = (int *)ppcVar1[1];
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> >::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
::load_object_ptr(pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
                  *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3bafe8  1609
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7baff4;
  pvVar1 = operator_new(0x2c);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007bb279();
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007bb2bb(param_1 + 9);
  return;
}



void Catch_All_007bb054(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bb061(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_0082bbc0(&DAT_032f0240);
  FUN_00833fa0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007bb09f(void)

{
  int iVar1;
  int *piVar2;
  undefined4 unaff_ESI;
  int local_14;
  
  piVar2 = (int *)FUN_007bb52a(unaff_ESI);
  iVar1 = *piVar2;
  *piVar2 = 0;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&stack0xffffffe4);
  FUN_0046f668();
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_007bb106(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
  *piVar1;
  undefined4 uVar2;
  undefined4 *unaff_ESI;
  undefined4 *puVar3;
  undefined4 local_20;
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_20 = 0;
  local_1c = 0;
  local_8 = 0;
  piVar1 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
           ::get_instance();
  FUN_00832bd0(&local_20,piVar1);
  FUN_007b88b7(&local_20);
  puVar3 = &local_20;
  uVar2 = FUN_007ba0c6(puVar3);
  FUN_00831750(uVar2,puVar3);
  *unaff_ESI = param_2;
  local_8 = 0xffffffff;
  unaff_ESI[1] = param_3;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



int __fastcall FUN_007bb1ae(int param_1)

{
  undefined4 uVar1;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  FUN_009b4100();
  FUN_007bcd43(uVar1,4);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



int __fastcall FUN_007bb201(int param_1)

{
  int unaff_ESI;
  
  FUN_007bbee3(*(undefined4 *)(param_1 + 4),0);
  if (unaff_ESI != 0) {
    return unaff_ESI + -9;
  }
  return 0;
}



int __fastcall FUN_007bb23d(int param_1)

{
  int unaff_ESI;
  
  FUN_007bbe90(*(undefined4 *)(param_1 + 4),0);
  if (unaff_ESI != 0) {
    return unaff_ESI + -9;
  }
  return 0;
}



void FUN_007bb279(void)

{
  undefined4 *unaff_EDI;
  undefined *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = &local_8;
  local_10 = &DAT_03058be8;
  FUN_007ba9db(&local_10);
  if (unaff_EDI != (undefined4 *)0x0) {
    FUN_007bceb5();
    unaff_EDI[9] = local_8;
    *unaff_EDI = boost_132::detail::
                 sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost_132::serialization::detail::null_deleter>
                 ::vftable;
  }
  unaff_EDI[1] = 0;
  return;
}



int FUN_007bb2bb(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007bb332(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar6;
  
  FUN_0082ace0(*param_1);
  puVar1 = (undefined4 *)param_1[1];
  puVar3 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  uVar4 = (**(code **)*puVar3)();
  FUN_00832c10(uVar4);
  puVar5 = (undefined4 *)FUN_00832bf0(puVar1,puVar3,&LAB_007bb703);
  if (puVar5 != puVar3) {
    uVar4 = puVar5[1];
    uVar2 = *puVar1;
    peVar6 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
             ::get_instance();
    uVar4 = FUN_0083e220(uVar4,peVar6,uVar2);
    *puVar1 = uVar4;
  }
  FUN_0082af90(*param_1);
  return;
}



undefined4 * __thiscall FUN_007bb3dc(undefined4 *param_1,byte param_2)

{
  *param_1 = boost_132::detail::sp_counted_base::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 3));
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_007bb403(undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2016e;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  piVar3 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
                  ::get_instance();
  uVar4 = ___RTtypeid(param_2,uVar2);
  piVar5 = (int *)FUN_00830d80(uVar4);
  if (piVar5 != (int *)0x0) goto LAB_007bb473;
  uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
  local_c = 0;
  while( true ) {
    FUN_0043fc7f(uVar4);
LAB_007bb473:
    cVar1 = FUN_00830f50(piVar5);
    if (cVar1 != '\0') break;
    iVar7 = FUN_0083e330(piVar5,piVar3,param_2);
    if (iVar7 == 0) {
      uVar9 = 1;
      uVar4 = (**(code **)(*piVar3 + 8))(1);
      uVar8 = (**(code **)(*piVar5 + 8))(uVar4);
      uVar4 = FUN_00832e60(10,uVar8,uVar4,uVar9);
      local_c = 1;
    }
    else {
      boost::serialization::
      singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>
      ::get_instance();
      iVar6 = FUN_0082dfa0(piVar5);
      if (iVar6 == 0) {
        iVar6 = 0;
      }
      else {
        iVar6 = iVar6 + -4;
      }
      if (iVar6 != 0) goto LAB_007bb50f;
      piVar5 = (int *)0x2;
      uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
      local_c = 2;
    }
  }
  iVar6 = FUN_007bb692();
  iVar7 = param_2;
LAB_007bb50f:
  FUN_00830570(iVar7,iVar6);
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007bb52a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3CA43D38::WF45DE894>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007bb570(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// public: static class boost::archive::detail::archive_serializer_map<class
// boost::archive::xml_oarchive> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::archive_serializer_map<class boost::archive::xml_oarchive>
// >::get_const_instance(void)

archive_serializer_map<class_boost::archive::xml_oarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>
::get_const_instance(void)

{
                    // 0x3bb587  407
                    // ?get_const_instance@?$singleton@V?$archive_serializer_map@Vxml_oarchive@archive@boost@@@detail@archive@boost@@@serialization@boost@@SAABV?$archive_serializer_map@Vxml_oarchive@archive@boost@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c74bbc);
  }
  return (archive_serializer_map<class_boost::archive::xml_oarchive> *)
         &`private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// class boost::serialization::void_cast_detail::void_caster const & __cdecl
// boost::serialization::void_cast_register<class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter>,class
// boost_132::detail::sp_counted_base>(class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> const *,class
// boost_132::detail::sp_counted_base const *)

void_caster * __cdecl
boost::serialization::
void_cast_register<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
          (sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>
           *param_1,sp_counted_base *param_2)

{
                    // 0x3bb58c  7
                    // ??$void_cast_register@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@serialization@boost@@YAABVvoid_caster@void_cast_detail@01@PBV?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@PBVsp_counted_base@56@@Z
                    // 0x3bb58c  709
                    // ?get_const_instance@?$singleton@V?$void_caster_primitive@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@serialization@boost@@@serialization@boost@@SAABV?$void_caster_primitive@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bb60b();
    _atexit((_func_4879 *)&LAB_00c74ba1);
  }
  return (void_caster *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007bb591(undefined4 param_1)

{
  ___RTDynamicCast(param_1,0,&boost_132::detail::sp_counted_base::RTTI_Type_Descriptor,
                   &boost_132::detail::
                    sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>
                    ::RTTI_Type_Descriptor,0);
  return;
}



// private: static class boost::archive::detail::archive_serializer_map<class
// boost::archive::xml_oarchive> & __cdecl boost::serialization::singleton<class
// boost::archive::detail::archive_serializer_map<class boost::archive::xml_oarchive>
// >::get_instance(void)

archive_serializer_map<class_boost::archive::xml_oarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>
::get_instance(void)

{
                    // 0x3bb5ae  727
                    // ?get_instance@?$singleton@V?$archive_serializer_map@Vxml_oarchive@archive@boost@@@detail@archive@boost@@@serialization@boost@@CAAAV?$archive_serializer_map@Vxml_oarchive@archive@boost@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c74bbc);
  }
  return (archive_serializer_map<class_boost::archive::xml_oarchive> *)
         &`private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::void_cast_detail::void_caster_primitive<class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::WF45DE894 *,struct
// boost::serialization::null_deleter>,class boost_132::detail::sp_counted_base> & __cdecl
// boost::serialization::singleton<class
// boost::serialization::void_cast_detail::void_caster_primitive<class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::WF45DE894 *,struct
// boost::serialization::null_deleter>,class boost_132::detail::sp_counted_base>
// >::get_instance(void)

void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
          ::get_instance(void)

{
                    // 0x3bb5cf  1029
                    // ?get_instance@?$singleton@V?$void_caster_primitive@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@serialization@boost@@@serialization@boost@@CAAAV?$void_caster_primitive@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bb60b();
    _atexit((_func_4879 *)&LAB_00c74ba1);
  }
  return (void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
          *)&`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
* FUN_007bb60b(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>
           ::get_instance();
  _DAT_032f0f70 =
       boost::serialization::
       singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
       ::get_instance();
  _DAT_032f0f78 = 0;
  _DAT_032f0f7c = 0;
  _t = boost::serialization::void_cast_detail::
       void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
       ::vftable;
  _DAT_032f0f74 = peVar1;
  FUN_0083ddb0(0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bb669(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::detail::
                singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
                ::vftable;
  DAT_032efe45 = 1;
  FUN_007bb6bb();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_007bb692(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007bb6bb(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::
             void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
             ::vftable;
  FUN_0083e150();
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 __thiscall FUN_007bb6e7(undefined4 param_1_00,byte param_1)

{
  FUN_007bb6bb();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WF45DE894> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WF45DE894> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>
::get_const_instance(void)

{
                    // 0x3bb718  701
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bb79f();
    _atexit((_func_4879 *)&LAB_00c74bda);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base> const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost_132::detail::sp_counted_base>
// >::get_const_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>
::get_const_instance(void)

{
                    // 0x3bb71d  461
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@Vsp_counted_base@detail@boost_132@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@Vsp_counted_base@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bb7f3();
    _atexit((_func_4879 *)&LAB_00c74bc4);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WF45DE894> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WF45DE894> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>
::get_instance(void)

{
                    // 0x3bb722  1021
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bb79f();
    _atexit((_func_4879 *)&LAB_00c74bda);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base> & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost_132::detail::sp_counted_base>
// >::get_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>
::get_instance(void)

{
                    // 0x3bb75e  781
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@Vsp_counted_base@detail@boost_132@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@Vsp_counted_base@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bb7f3();
    _atexit((_func_4879 *)&LAB_00c74bc4);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::WF45DE894> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::WF45DE894> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>
::get_const_instance(void)

{
                    // 0x3bb79a  626
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bb79a  1127
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vxml_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74bf0);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>
* FUN_007bb79f(void)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032f0238);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>
* FUN_007bb7f3(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>::
       vftable;
  FUN_00830c60(&boost_132::detail::sp_counted_base::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bb843(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bb865(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>::
       vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WF45DE894> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WF45DE894> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>
::get_instance(void)

{
                    // 0x3bb8a6  946
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74bf0);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bb8f0(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe48 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::WF45DE894>::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::WF45DE894>(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>::
oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>
          (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> *this)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  
                    // 0x3bb919  84
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::WF45DE894>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x3bb933  1725
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_007bbb05(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bb955(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>::vftable;
  FUN_0082df80(&DAT_032f0238);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::shared_count> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::shared_count> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::shared_count> *peVar1;
  
                    // 0x3bb993  548
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@Vshared_count@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@Vshared_count@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74c0b);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bb998(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::shared_count> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::shared_count> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>
::get_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::shared_count> *peVar1;
  
                    // 0x3bb9ba  868
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@Vshared_count@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@Vshared_count@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74c0b);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bba0a(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe49 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::shared_count> const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost_132::detail::shared_count>
// >::get_const_instance(void)

extended_type_info_typeid<class_boost_132::detail::shared_count> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>
::get_const_instance(void)

{
                    // 0x3bba33  460
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@Vshared_count@detail@boost_132@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@Vshared_count@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bba74();
    _atexit((_func_4879 *)&LAB_00c74c26);
  }
  return (extended_type_info_typeid<class_boost_132::detail::shared_count> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::shared_count> & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost_132::detail::shared_count>
// >::get_instance(void)

extended_type_info_typeid<class_boost_132::detail::shared_count> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>
::get_instance(void)

{
                    // 0x3bba38  780
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@Vshared_count@detail@boost_132@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@Vshared_count@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bba74();
    _atexit((_func_4879 *)&LAB_00c74c26);
  }
  return (extended_type_info_typeid<class_boost_132::detail::shared_count> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>
* FUN_007bba74(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>::
       vftable;
  FUN_00830c60(&boost_132::detail::shared_count::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bbac4(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>::
       vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



int FUN_007bbb05(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::shared_count>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::shared_count>
                 *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
  undefined *puVar1;
  void *pvVar2;
  
                    // 0x3bbb7c  1580
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@Vshared_count@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  puVar1 = &DAT_03058c18;
  pvVar2 = param_2;
  FUN_007bbe18();
                    // WARNING: Load size is inaccurate
  if (*param_2 != 0) {
    FUN_007bced1(puVar1,pvVar2);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WF45DE894> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WF45DE894> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>
::get_const_instance(void)

{
                    // 0x3bbbb6  671
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bbbfc();
    _atexit((_func_4879 *)&LAB_00c74c3c);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WF45DE894> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WF45DE894> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>
::get_instance(void)

{
                    // 0x3bbbbb  991
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bbbfc();
    _atexit((_func_4879 *)&LAB_00c74c3c);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::WF45DE894> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::WF45DE894> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  
                    // 0x3bbbf7  546
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bbbf7  1089
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74c52);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>
* FUN_007bbbfc(void)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f0230);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bbc50(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WF45DE894> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WF45DE894> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  
                    // 0x3bbc72  866
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74c52);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bbcc2(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe4c = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::WF45DE894>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3bbceb  1624
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7bbcf7;
  puVar1 = (undefined4 *)operator_new(4);
  local_8 = 0;
  local_18 = puVar1;
  if (puVar1 == (undefined4 *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = puVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(puVar1);
  local_8 = 0;
  *puVar1 = W3CA43D38::WF45DE894::vftable;
  local_20 = 0;
  local_1c = puVar1;
  FUN_007bbda1(param_1 + 9);
  return;
}



void Catch_All_007bbd56(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bbd63(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>::vftable;
  FUN_0082bbc0(&DAT_032f0230);
  FUN_00833fa0();
  return;
}



int FUN_007bbda1(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007bbe18(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *in_EAX;
  int iVar3;
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base> *peVar4;
  undefined4 uVar5;
  
  FUN_0082ace0(*in_EAX);
  puVar1 = (undefined4 *)in_EAX[1];
  iVar3 = FUN_00832bf0(puVar1,0,&LAB_007bb703);
  if (iVar3 != 0) {
    uVar5 = *(undefined4 *)(iVar3 + 4);
    uVar2 = *puVar1;
    peVar4 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>
             ::get_instance();
    uVar5 = FUN_0083e220(uVar5,peVar4,uVar2);
    *puVar1 = uVar5;
  }
  FUN_0082af90(*in_EAX);
  return;
}



void FUN_007bbe90(undefined4 *param_1,undefined4 param_2)

{
  ushort local_8 [2];
  
  FUN_00831450(local_8);
  if (local_8[0] < 7) {
    param_2 = 0;
    FUN_007bcdb8(&param_2);
    *param_1 = param_2;
  }
  else {
    FUN_007bbf35(param_1,param_2);
  }
  return;
}



void FUN_007bbee3(undefined4 *param_1,undefined4 param_2)

{
  ushort *puVar1;
  undefined local_6 [2];
  
  puVar1 = (ushort *)FUN_00831450(&stack0xfffffff8 + 2);
  if (*puVar1 < 6) {
    param_2 = 0;
    FUN_007bcdb8(&param_2);
    *param_1 = param_2;
  }
  else {
    FUN_007bbf35(param_1,param_2);
  }
  return;
}



void __thiscall FUN_007bbf35(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  iVar1 = param_1_00;
  if (param_1_00 == -9) {
    iVar1 = 0;
  }
  FUN_007bbf54(iVar1,param_1,param_1_00);
  return;
}



void FUN_007bbf54(undefined4 param_1,undefined4 param_2)

{
  FUN_007bcde2(param_2,4);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> > const &
// __cdecl boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
          ::get_const_instance(void)

{
                    // 0x3bbf69  563
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74c88);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> > const &
// __cdecl boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> *peVar1;
  
                    // 0x3bbf6e  468
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74c6d);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007bbf73(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007bbf95(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
          ::get_instance(void)

{
                    // 0x3bbfb7  883
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74c88);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894> >
// >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> *peVar1;
  
                    // 0x3bc001  788
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74c6d);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007bc051(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe4d = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007bc07a(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe4e = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894>
// >::oserializer<class boost::archive::binary_oarchive,class boost::shared_ptr<class
// W3CA43D38::WF45DE894> >(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
          (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
           *this)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_> *peVar1;
  
                    // 0x3bc0a3  21
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894>
// >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
::save_object_data(oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0x3bc0bd  1631
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  FUN_007bc240();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W3CA43D38::WF45DE894>
// >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::WF45DE894>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3bc0f5  1500
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VWF45DE894@W3CA43D38@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007bc10b(param_2,param_3);
  return;
}



void __thiscall FUN_007bc10b(undefined *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined *local_2c;
  undefined ***pppuStack_28;
  undefined *local_24;
  undefined *local_20;
  undefined **local_1c [2];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c1c00a;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if (param_2 == 0) {
    puVar2 = (undefined4 *)
             boost::serialization::
             singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    local_2c = param_1_00;
    if (param_1_00 == (undefined *)0xfffffff7) {
      local_2c = (undefined *)0x0;
    }
    uVar3 = (**(code **)*puVar2)();
    FUN_00832c10(uVar3);
    local_20 = (undefined *)0x0;
    local_1c[0] = (undefined **)0x0;
    uStack_c = 0;
    pppuStack_28 = (undefined ***)&local_20;
    local_2c = &DAT_03058be0;
    FUN_007bc2b2(uVar1);
    pppuStack_28 = local_1c;
    local_2c = &DAT_03058be4;
    FUN_007bc2e0();
    local_2c = local_20;
    FUN_007bceec(local_1c);
    uStack_c._0_1_ = 1;
    FUN_0082c9b0(&local_2c);
    uStack_c = (uint)uStack_c._1_3_ << 8;
    if (pppuStack_28 != (undefined ***)0x0) {
      FUN_007bcf4f();
    }
    uStack_c = 0xffffffff;
    local_24 = local_20;
    if (local_1c[0] != (undefined **)0x0) {
      FUN_007bcf4f();
    }
  }
  else {
    local_1c[0] = &local_24;
    local_20 = &DAT_03058be0;
    FUN_007bc2b2(uVar1);
  }
  FUN_007baa74(param_1_00 + 0x1c);
  ExceptionList = local_14;
  return;
}



int __fastcall FUN_007bc240(int param_1)

{
  int iVar1;
  undefined2 extraout_var;
  int unaff_EBX;
  int *piVar2;
  
  if (unaff_EBX == 0) {
    piVar2 = (int *)0x0;
  }
  else {
    piVar2 = (int *)(unaff_EBX + -9);
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  iVar1 = **(int **)(param_1 + 4);
  FUN_007bc872();
  if (iVar1 == 0) {
    (**(code **)(*piVar2 + 0x10))(CONCAT22(extraout_var,0xffff));
    FUN_009b4100();
  }
  else {
    FUN_007bc6f3(piVar2,iVar1);
  }
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + -9;
  }
  return iVar1;
}



int __fastcall FUN_007bc2b2(int param_1)

{
  int iVar1;
  int unaff_ESI;
  
  if (unaff_ESI == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_ESI + -9;
  }
  if (iVar1 == -9) {
    iVar1 = 0;
  }
  FUN_007bc59c(iVar1 + 9,*(undefined4 *)(param_1 + 4));
  if (unaff_ESI == 0) {
    return 0;
  }
  return unaff_ESI + -9;
}



int __fastcall FUN_007bc2e0(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3bc32f  634
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bc375();
    _atexit((_func_4879 *)&LAB_00c74ca3);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> > >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3bc334  954
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bc375();
    _atexit((_func_4879 *)&LAB_00c74ca3);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3bc370  475
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
                    // 0x3bc370  1052
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74cb9);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
* FUN_007bc375(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f0228);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bc3c9(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> > >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3bc3eb  795
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74cb9);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007bc43b(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe50 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> >::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
::load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
                  *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void **ppvVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  bad_alloc local_24 [4];
  undefined *local_20;
  void ***local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3bc464  1587
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7bc470;
  puVar2 = (undefined4 *)operator_new(0x2c);
  local_8 = 0;
  local_18 = puVar2;
  if (puVar2 == (undefined4 *)0x0) {
    uVar3 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar3);
  }
  *param_2 = puVar2;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(puVar2);
  local_1c = &param_2;
  local_20 = &DAT_03058be8;
  FUN_007bc2b2();
  ppvVar1 = param_2;
  FUN_007bceb5();
  puVar2[9] = ppvVar1;
  local_8 = 0;
  *puVar2 = boost_132::detail::
            sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost_132::serialization::detail::null_deleter>
            ::vftable;
  puVar2[1] = 0;
  local_20 = (undefined *)0x0;
  local_1c = (void ***)puVar2;
  FUN_007bc54d();
  return;
}



void Catch_All_007bc4fa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bc507(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_008347f0(&DAT_032f0228);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::WF45DE894 *,struct boost::serialization::null_deleter> >::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3bc545  1507
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
                    // 0x3bc545  1545
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWF45DE894@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
  ::get_instance();
  return;
}



int __fastcall FUN_007bc54d(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::WF45DE894*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



int FUN_007bc59c(int param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar5;
  
  puVar2 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  uVar3 = (**(code **)*puVar2)();
  FUN_00832c10(uVar3);
  puVar4 = (undefined4 *)FUN_00832bf0(param_2,puVar2,&LAB_007bc61f);
  if (puVar4 != puVar2) {
    uVar3 = puVar4[1];
    uVar1 = *param_2;
    peVar5 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
             ::get_instance();
    uVar3 = FUN_0083e220(uVar3,peVar5,uVar1);
    *param_2 = uVar3;
  }
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::shared_count> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::shared_count>
// >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::shared_count> *peVar1;
  
                    // 0x3bc634  495
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@Vshared_count@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@Vshared_count@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74cd4);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count> *
         )&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
           ::`2'::t;
}



void FUN_007bc639(int *param_1)

{
  if (param_1 != (int *)0x0) {
    if (*param_1 != 0) {
      FUN_007bcf4f();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



undefined4 * __thiscall FUN_007bc658(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::shared_count> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::shared_count> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>
::get_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::shared_count> *peVar1;
  
                    // 0x3bc67a  815
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@Vshared_count@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@Vshared_count@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::shared_count>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74cd4);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count> *
         )&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>_>::get_instance(void)'
           ::`2'::t;
}



undefined4 * __thiscall FUN_007bc6ca(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe51 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007bc6f3(undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2016e;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  piVar3 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
                  ::get_instance();
  uVar4 = ___RTtypeid(param_2,uVar2);
  piVar5 = (int *)FUN_00830d80(uVar4);
  if (piVar5 != (int *)0x0) goto LAB_007bc763;
  uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
  local_c = 0;
  while( true ) {
    FUN_0043fc7f(uVar4);
LAB_007bc763:
    cVar1 = FUN_00830f50(piVar5);
    if (cVar1 != '\0') break;
    iVar7 = FUN_0083e330(piVar5,piVar3,param_2);
    if (iVar7 == 0) {
      uVar9 = 1;
      uVar4 = (**(code **)(*piVar3 + 8))(1);
      uVar8 = (**(code **)(*piVar5 + 8))(uVar4);
      uVar4 = FUN_00832e60(10,uVar8,uVar4,uVar9);
      local_c = 1;
    }
    else {
      boost::serialization::
      singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>
      ::get_instance();
      iVar6 = FUN_00833f60(piVar5);
      if (iVar6 == 0) {
        iVar6 = 0;
      }
      else {
        iVar6 = iVar6 + -4;
      }
      if (iVar6 != 0) goto LAB_007bc7ff;
      piVar5 = (int *)0x2;
      uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
      local_c = 2;
    }
  }
  iVar6 = FUN_007bc872();
  iVar7 = param_2;
LAB_007bc7ff:
  FUN_00830570(iVar7,iVar6);
  ExceptionList = local_14;
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::shared_count>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>::
load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::shared_count>
                 *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
  undefined *puVar1;
  void *pvVar2;
  
                    // 0x3bc81a  1527
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@Vshared_count@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  puVar1 = &DAT_03058c18;
  pvVar2 = param_2;
  FUN_007bcccd(param_1 + 9);
                    // WARNING: Load size is inaccurate
  if (*param_2 != 0) {
    FUN_007bced1(puVar1,pvVar2);
  }
  return;
}



// public: static class boost::archive::detail::archive_serializer_map<class
// boost::archive::binary_oarchive> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::archive_serializer_map<class boost::archive::binary_oarchive>
// >::get_const_instance(void)

archive_serializer_map<class_boost::archive::binary_oarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>
::get_const_instance(void)

{
                    // 0x3bc84c  406
                    // ?get_const_instance@?$singleton@V?$archive_serializer_map@Vbinary_oarchive@archive@boost@@@detail@archive@boost@@@serialization@boost@@SAABV?$archive_serializer_map@Vbinary_oarchive@archive@boost@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c74cef);
  }
  return (archive_serializer_map<class_boost::archive::binary_oarchive> *)
         &`private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
          ::`2'::t;
}



// private: static class boost::archive::detail::archive_serializer_map<class
// boost::archive::binary_oarchive> & __cdecl boost::serialization::singleton<class
// boost::archive::detail::archive_serializer_map<class boost::archive::binary_oarchive>
// >::get_instance(void)

archive_serializer_map<class_boost::archive::binary_oarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>
::get_instance(void)

{
                    // 0x3bc851  726
                    // ?get_instance@?$singleton@V?$archive_serializer_map@Vbinary_oarchive@archive@boost@@@detail@archive@boost@@@serialization@boost@@CAAAV?$archive_serializer_map@Vbinary_oarchive@archive@boost@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c74cef);
  }
  return (archive_serializer_map<class_boost::archive::binary_oarchive> *)
         &`private:_static_class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * FUN_007bc872(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WF45DE894> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WF45DE894> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>
::get_const_instance(void)

{
                    // 0x3bc89b  686
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bc927();
    _atexit((_func_4879 *)&LAB_00c74d0d);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WF45DE894> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WF45DE894> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>
::get_const_instance(void)

{
                    // 0x3bc8a0  649
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bc97b();
    _atexit((_func_4879 *)&LAB_00c74cf7);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WF45DE894> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WF45DE894> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  
                    // 0x3bc8a5  494
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bc8a5  1067
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74d23);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WF45DE894> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WF45DE894> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>
::get_instance(void)

{
                    // 0x3bc8aa  1006
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bc927();
    _atexit((_func_4879 *)&LAB_00c74d0d);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WF45DE894> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WF45DE894> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>
::get_instance(void)

{
                    // 0x3bc8e6  969
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bc97b();
    _atexit((_func_4879 *)&LAB_00c74cf7);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WF45DE894> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WF45DE894> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>
::get_const_instance(void)

{
                    // 0x3bc922  582
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bc922  1112
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>::
    oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>
              ((oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74d3e);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>
* FUN_007bc927(void)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>::
       vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032f0220);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>
* FUN_007bc97b(void)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>::
       vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f0218);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bc9cf(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007bc9f1(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WF45DE894> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WF45DE894> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>
::get_instance(void)

{
                    // 0x3bca13  902
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>::
    oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>
              ((oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74d3e);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WF45DE894> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WF45DE894> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  
                    // 0x3bca5d  814
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74d23);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bcaad(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe55 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007bcad6(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe56 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WF45DE894>::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WF45DE894>(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>
          (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> *this)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  
                    // 0x3bcaff  40
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::WF45DE894>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>::
save_object_ptr(pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>
                *this,basic_oarchive *param_1,void *param_2)

{
                    // 0x3bcb19  1710
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_007bcc2f();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bcb3c(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>::
       vftable;
  FUN_00833f40(&DAT_032f0220);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::WF45DE894>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>::
load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>
                *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3bcb7a  1602
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWF45DE894@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7bcb86;
  puVar1 = (undefined4 *)operator_new(4);
  local_8 = 0;
  local_18 = puVar1;
  if (puVar1 == (undefined4 *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = puVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(puVar1);
  local_8 = 0;
  local_20 = 0;
  *puVar1 = W3CA43D38::WF45DE894::vftable;
  local_1c = puVar1;
  FUN_007bcc7e();
  return;
}



void Catch_All_007bcbe4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bcbf1(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>::
       vftable;
  FUN_008347f0(&DAT_032f0218);
  FUN_00833fa0();
  return;
}



int __fastcall FUN_007bcc2f(int param_1)

{
  undefined4 uVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894> *poVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



int __fastcall FUN_007bcc7e(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



int __thiscall FUN_007bcccd(int param_1_00,int param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base> *peVar4;
  undefined4 uVar5;
  
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  iVar3 = FUN_00832bf0(puVar1,0,&LAB_007bc61f);
  if (iVar3 != 0) {
    uVar5 = *(undefined4 *)(iVar3 + 4);
    uVar2 = *puVar1;
    peVar4 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>
             ::get_instance();
    uVar5 = FUN_0083e220(uVar5,peVar4,uVar2);
    *puVar1 = uVar5;
  }
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void __thiscall FUN_007bcd43(int **param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined auStack_b0 [148];
  void *pvStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c0858d;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = (**(code **)(**param_1_00 + 0x20))(param_1,param_2,DAT_0323f878 ^ (uint)auStack_b0);
  if (param_2 != iVar1) {
    uVar2 = FUN_00832e60(0xd,0,0,1);
    local_14 = (void *)0x0;
    FUN_0043fc7f(uVar2);
  }
  ExceptionList = pvStack_1c;
  return;
}



int __thiscall FUN_007bcdb8(int param_1_00,undefined4 param_1)

{
  FUN_007bbf35(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



void __thiscall FUN_007bcde2(int **param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined auStack_b0 [148];
  void *pvStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c08561;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = (**(code **)(**param_1_00 + 0x18))(param_1,param_2,DAT_0323f878 ^ (uint)auStack_b0);
  if (iVar1 != param_2) {
    uVar2 = FUN_00832e60(8,0,0,1);
    local_14 = (void *)0x0;
    FUN_0043fc7f(uVar2);
  }
  ExceptionList = pvStack_1c;
  return;
}



void FUN_007bce57(undefined4 param_1,undefined4 param_2)

{
  FUN_007bcde2(param_2,2);
  return;
}



void __thiscall FUN_007bce6c(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  iVar1 = param_1_00;
  if (param_1_00 == -9) {
    iVar1 = 0;
  }
  FUN_007bce57(iVar1,param_1,param_1_00);
  return;
}



int __thiscall FUN_007bce8b(int param_1_00,undefined4 param_1)

{
  FUN_007bce6c(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



void FUN_007bceb5(void)

{
  undefined4 *unaff_ESI;
  
  unaff_ESI[1] = 1;
  unaff_ESI[2] = 1;
  *unaff_ESI = boost_132::detail::sp_counted_base::vftable;
  InitializeCriticalSection((LPCRITICAL_SECTION)(unaff_ESI + 3));
  return;
}



void __fastcall FUN_007bced1(int param_1)

{
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xc));
  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0xc));
  return;
}



int * __thiscall FUN_007bceec(int *param_1_00,int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  *param_1_00 = iVar1;
  if (iVar1 != 0) {
    FUN_007bced1();
  }
  return param_1_00;
}



void __fastcall FUN_007bcf06(undefined4 *param_1)

{
  *param_1 = boost_132::detail::sp_counted_base::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 3));
  return;
}



void __fastcall FUN_007bcf17(undefined4 *param_1)

{
  if (param_1 != (undefined4 *)0x0) {
    (**(code **)*param_1)(1);
  }
  return;
}



void __fastcall FUN_007bcf22(int *param_1)

{
  int iVar1;
  
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 3));
  param_1[2] = param_1[2] + -1;
  iVar1 = param_1[2];
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 3));
  if (iVar1 == 0) {
                    // WARNING: Could not recover jumptable at 0x007bcf49. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*param_1 + 8))();
    return;
  }
  return;
}



void __fastcall FUN_007bcf4f(int *param_1)

{
  LPCRITICAL_SECTION lpCriticalSection;
  int *piVar1;
  
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 3);
  EnterCriticalSection(lpCriticalSection);
  piVar1 = param_1 + 1;
  *piVar1 = *piVar1 + -1;
  if (*piVar1 != 0) {
    LeaveCriticalSection(lpCriticalSection);
    return;
  }
  LeaveCriticalSection(lpCriticalSection);
  (**(code **)(*param_1 + 4))();
  FUN_007bcf22();
  return;
}



void __fastcall FUN_007bcf82(int *param_1)

{
  if (*param_1 != 0) {
    FUN_007bcf4f();
    return;
  }
  return;
}



void __fastcall FUN_007bcf8e(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 * __thiscall FUN_007bcf95(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::void_cast_detail::void_caster::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall
FUN_007bcfb2(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  param_1_00[1] = param_1;
  param_1_00[2] = param_2;
  param_1_00[3] = param_3;
  *param_1_00 = boost::serialization::void_cast_detail::void_caster::vftable;
  param_1_00[4] = param_4;
  return;
}



undefined4 * __thiscall FUN_007bcfd9(undefined4 *param_1_00,byte param_1)

{
  FUN_00502d9b();
  FUN_004017b2(1,0);
  *param_1_00 = W3CA43D38::WF45DE894::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: static struct boost::archive::detail::extra_detail::guid_initializer<class
// W3CA43D38::W9A6A458E> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class W3CA43D38::W9A6A458E>
// >::get_mutable_instance(void)

guid_initializer<class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>_>
::get_mutable_instance(void)

{
                    // 0x3bd047  1043
                    // ?get_mutable_instance@?$singleton@U?$guid_initializer@VW9A6A458E@W3CA43D38@@@extra_detail@detail@archive@boost@@@serialization@boost@@SAAAU?$guid_initializer@VW9A6A458E@W3CA43D38@@@extra_detail@detail@archive@3@XZ
  if ((`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c74d59);
  }
  return (guid_initializer<class_W3CA43D38::W9A6A458E> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// private: static struct boost::archive::detail::extra_detail::guid_initializer<class
// W3CA43D38::W9A6A458E> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class W3CA43D38::W9A6A458E>
// >::get_instance(void)

guid_initializer<class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>_>
::get_instance(void)

{
                    // 0x3bd04c  723
                    // ?get_instance@?$singleton@U?$guid_initializer@VW9A6A458E@W3CA43D38@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAU?$guid_initializer@VW9A6A458E@W3CA43D38@@@extra_detail@detail@archive@3@XZ
  if ((`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c74d59);
  }
  return (guid_initializer<class_W3CA43D38::W9A6A458E> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W9A6A458E> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W9A6A458E> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>
::get_const_instance(void)

{
                    // 0x3bd06d  667
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bd06d  1473
                    // ?instantiate@?$ptr_serialization_support@Vxml_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bd1d9();
    _atexit((_func_4879 *)&LAB_00c74d8d);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W9A6A458E> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W9A6A458E> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>
::get_const_instance(void)

{
                    // 0x3bd072  697
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bd072  1482
                    // ?instantiate@?$ptr_serialization_support@Vxml_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bd185();
    _atexit((_func_4879 *)&LAB_00c74da3);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::W9A6A458E> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::W9A6A458E> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W9A6A458E> *peVar1;
  
                    // 0x3bd077  538
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bd077  1085
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74def);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W9A6A458E> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W9A6A458E> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>
::get_const_instance(void)

{
                    // 0x3bd07c  682
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bd07c  1464
                    // ?instantiate@?$ptr_serialization_support@Vbinary_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bd22d();
    _atexit((_func_4879 *)&LAB_00c74d77);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W9A6A458E> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W9A6A458E> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>
::get_const_instance(void)

{
                    // 0x3bd081  645
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bd081  1455
                    // ?instantiate@?$ptr_serialization_support@Vbinary_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bd281();
    _atexit((_func_4879 *)&LAB_00c74d61);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W9A6A458E> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W9A6A458E> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W9A6A458E> *peVar1;
  
                    // 0x3bd086  490
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bd086  1063
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74db9);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W9A6A458E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W9A6A458E> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>
::get_instance(void)

{
                    // 0x3bd08b  1017
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bd185();
    _atexit((_func_4879 *)&LAB_00c74da3);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W9A6A458E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W9A6A458E> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>
::get_instance(void)

{
                    // 0x3bd0c7  987
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bd1d9();
    _atexit((_func_4879 *)&LAB_00c74d8d);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W9A6A458E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W9A6A458E> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>
::get_instance(void)

{
                    // 0x3bd103  1002
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bd22d();
    _atexit((_func_4879 *)&LAB_00c74d77);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W9A6A458E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W9A6A458E> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>
::get_instance(void)

{
                    // 0x3bd13f  965
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bd281();
    _atexit((_func_4879 *)&LAB_00c74d61);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W9A6A458E> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W9A6A458E> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>
::get_const_instance(void)

{
                    // 0x3bd17b  618
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bd17b  1123
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74e0a);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W9A6A458E> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W9A6A458E> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>
::get_const_instance(void)

{
                    // 0x3bd180  578
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bd180  1108
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>::
    oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>
              ((oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74dd4);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>
* FUN_007bd185(void)

{
  extended_type_info_typeid<class_W3CA43D38::W9A6A458E> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032f0208);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>
* FUN_007bd1d9(void)

{
  extended_type_info_typeid<class_W3CA43D38::W9A6A458E> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f0200);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>
* FUN_007bd22d(void)

{
  extended_type_info_typeid<class_W3CA43D38::W9A6A458E> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>::
       vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032f01f8);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>
* FUN_007bd281(void)

{
  extended_type_info_typeid<class_W3CA43D38::W9A6A458E> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>::
       vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f01f0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bd2d5(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007bd2f7(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007bd319(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007bd33b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W9A6A458E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W9A6A458E> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>
::get_instance(void)

{
                    // 0x3bd35d  938
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74e0a);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W9A6A458E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W9A6A458E> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W9A6A458E> *peVar1;
  
                    // 0x3bd3a7  858
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74def);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W9A6A458E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W9A6A458E> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>
::get_instance(void)

{
                    // 0x3bd3f7  898
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>::
    oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>
              ((oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74dd4);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W9A6A458E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W9A6A458E> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W9A6A458E> *peVar1;
  
                    // 0x3bd441  810
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74db9);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bd491(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe5c = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007bd4ba(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe5d = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007bd4e3(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe5e = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007bd50c(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe5f = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W9A6A458E>::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W9A6A458E>(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>::
oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>
          (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> *this)

{
  extended_type_info_typeid<class_W3CA43D38::W9A6A458E> *peVar1;
  
                    // 0x3bd535  76
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W9A6A458E>::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W9A6A458E>(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>
          (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> *this)

{
  extended_type_info_typeid<class_W3CA43D38::W9A6A458E> *peVar1;
  
                    // 0x3bd54f  36
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::W9A6A458E>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::W9A6A458E>
// >::get_const_instance(void)

extended_type_info_typeid<class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>::
get_const_instance(void)

{
                    // 0x3bd569  450
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW9A6A458E@W3CA43D38@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW9A6A458E@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bd5aa();
    _atexit((_func_4879 *)&LAB_00c74e25);
  }
  return (extended_type_info_typeid<class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::W9A6A458E>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::W9A6A458E> >::get_instance(void)

extended_type_info_typeid<class_W3CA43D38::W9A6A458E> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>::
get_instance(void)

{
                    // 0x3bd56e  770
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW9A6A458E@W3CA43D38@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW9A6A458E@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bd5aa();
    _atexit((_func_4879 *)&LAB_00c74e25);
  }
  return (extended_type_info_typeid<class_W3CA43D38::W9A6A458E> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>
* FUN_007bd5aa(void)

{
  FUN_008308e0("3B3FD270-062C-F1F5-5251-71B9D169940C");
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>::vftable;
  FUN_00830c60(&W3CA43D38::W9A6A458E::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bd5fd(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W9A6A458E>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x3bd63e  1721
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_007bd8f1(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bd660(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>::vftable;
  FUN_0082df80(&DAT_032f0208);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W9A6A458E>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3bd69e  1620
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7bd6aa;
  pvVar1 = operator_new(0x1a8);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007bda2e(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007bd968(param_1 + 9);
  return;
}



void Catch_All_007bd70d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bd71a(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>::vftable;
  FUN_0082bbc0(&DAT_032f0200);
  FUN_00833fa0();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W9A6A458E>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>::
save_object_ptr(pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>
                *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> *poVar1;
  
                    // 0x3bd758  1706
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  FUN_00830550(param_2,poVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bd7a2(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>::
       vftable;
  FUN_00833f40(&DAT_032f01f8);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W9A6A458E>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>::
load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>
                *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3bd7e0  1598
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7bd7ec;
  pvVar1 = operator_new(0x1a8);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007bda2e(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007bd9df();
  return;
}



void Catch_All_007bd84e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bd85b(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>::
       vftable;
  FUN_008347f0(&DAT_032f01f0);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W9A6A458E>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> *this,
                basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> *local_8;
  
                    // 0x3bd899  1686
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007bda69();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W9A6A458E>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3bd8b5  1570
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007bdae7();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W9A6A458E>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>::save_object_data
          (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> *this,
          basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E> *local_8;
  
                    // 0x3bd8c5  1646
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007bdb64();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W9A6A458E>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>::load_object_data
          (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3bd8e1  1522
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VW9A6A458E@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007bdbec();
  return;
}



int FUN_007bd8f1(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_007bd968(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int __fastcall FUN_007bd9df(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_007bda2e(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c20734;
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = W3CA43D38::W9A6A458E::vftable;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (param_1 + 1));
    puVar1 = (undefined *)FUN_007cc480(param_1 + 8);
  }
  return puVar1;
}



void FUN_007bda69(void)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  int local_c;
  int local_8;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  if (*(uint *)(in_EAX + 0x38) < 0x10) {
    local_c = in_EAX + 0x24;
  }
  else {
    local_c = *(int *)(in_EAX + 0x24);
  }
  FUN_007bdc74(&local_c);
  if (*(uint *)(in_EAX + 0xfc) < 0x10) {
    local_c = in_EAX + 0xe8;
  }
  else {
    local_c = *(int *)(in_EAX + 0xe8);
  }
  local_8 = in_EAX + 4;
  FUN_004414fa(&local_c);
  return;
}



void FUN_007bdae7(void)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  int local_c;
  int local_8;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  if (*(uint *)(in_EAX + 0x38) < 0x10) {
    local_c = in_EAX + 0x24;
  }
  else {
    local_c = *(int *)(in_EAX + 0x24);
  }
  FUN_007bdc8f(&local_c);
  if (*(uint *)(in_EAX + 0xfc) < 0x10) {
    local_c = in_EAX + 0xe8;
  }
  else {
    local_c = *(int *)(in_EAX + 0xe8);
  }
  local_8 = in_EAX + 4;
  FUN_00441643();
  return;
}



void FUN_007bdb64(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  FUN_007bcc2f();
  FUN_007bdcaa();
  return;
}



void FUN_007bdbec(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W9A6A458E>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  FUN_007bcc7e();
  FUN_007bdce8();
  return;
}



void FUN_007bdc74(void)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_007bbb05(iVar1 + 9);
  return;
}



void FUN_007bdc8f(void)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_007bbda1(iVar1 + 9);
  return;
}



int __fastcall FUN_007bdcaa(int param_1)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_007bdeb3(*(undefined4 *)(param_1 + 4));
  if (iVar1 != -9) {
    return iVar1;
  }
  return 0;
}



int __fastcall FUN_007bdce8(int param_1)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_007bde5f(*(undefined4 *)(param_1 + 4),0);
  if (iVar1 != -9) {
    return iVar1;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// class boost::serialization::void_cast_detail::void_caster const & __cdecl
// boost::serialization::void_cast_register<class W3CA43D38::W9A6A458E,class
// W3CA43D38::WF45DE894>(class W3CA43D38::W9A6A458E const *,class W3CA43D38::WF45DE894 const *)

void_caster * __cdecl
boost::serialization::void_cast_register<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>
          (W9A6A458E *param_1,WF45DE894 *param_2)

{
                    // 0x3bdd32  12
                    // ??$void_cast_register@VW9A6A458E@W3CA43D38@@VWF45DE894@2@@serialization@boost@@YAABVvoid_caster@void_cast_detail@01@PBVW9A6A458E@W3CA43D38@@PBVWF45DE894@5@@Z
                    // 0x3bdd32  714
                    // ?get_const_instance@?$singleton@V?$void_caster_primitive@VW9A6A458E@W3CA43D38@@VWF45DE894@2@@void_cast_detail@serialization@boost@@@serialization@boost@@SAABV?$void_caster_primitive@VW9A6A458E@W3CA43D38@@VWF45DE894@2@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bdd90();
    _atexit((_func_4879 *)&LAB_00c74e3b);
  }
  return (void_caster *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007bdd37(undefined4 param_1)

{
  ___RTDynamicCast(param_1,0,&W3CA43D38::WF45DE894::RTTI_Type_Descriptor,
                   &W3CA43D38::W9A6A458E::RTTI_Type_Descriptor,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::void_cast_detail::void_caster_primitive<class
// W3CA43D38::W9A6A458E,class W3CA43D38::WF45DE894> & __cdecl boost::serialization::singleton<class
// boost::serialization::void_cast_detail::void_caster_primitive<class W3CA43D38::W9A6A458E,class
// W3CA43D38::WF45DE894> >::get_instance(void)

void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>
::get_instance(void)

{
                    // 0x3bdd54  1034
                    // ?get_instance@?$singleton@V?$void_caster_primitive@VW9A6A458E@W3CA43D38@@VWF45DE894@2@@void_cast_detail@serialization@boost@@@serialization@boost@@CAAAV?$void_caster_primitive@VW9A6A458E@W3CA43D38@@VWF45DE894@2@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bdd90();
    _atexit((_func_4879 *)&LAB_00c74e3b);
  }
  return (void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>
* FUN_007bdd90(void)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  _DAT_032f0f18 =
       boost::serialization::
       singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W9A6A458E>_>
       ::get_instance();
  _DAT_032f0f20 = 0;
  _DAT_032f0f24 = 0;
  _t = boost::serialization::void_cast_detail::
       void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>::vftable;
  _DAT_032f0f1c = peVar1;
  FUN_0083ddb0(0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bddee(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::detail::
                singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>_>
                ::vftable;
  DAT_032efe61 = 1;
  FUN_007bde17();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007bde17(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::
             void_caster_primitive<class_W3CA43D38::W9A6A458E,class_W3CA43D38::WF45DE894>::vftable;
  FUN_0083e150();
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 __thiscall FUN_007bde43(undefined4 param_1_00,byte param_1)

{
  FUN_007bde17();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007bde5f(undefined4 param_1)

{
  FUN_00834210(param_1);
  return;
}



void FUN_007bde7c(undefined4 param_1,undefined4 param_2)

{
  FUN_009b4100();
  FUN_00833b70(param_2);
  return;
}



void __thiscall FUN_007bde96(int param_1_00,undefined4 param_1)

{
  if (param_1_00 == -9) {
    param_1_00 = 0;
  }
  FUN_007bde7c(param_1_00,param_1);
  return;
}



int __thiscall FUN_007bdeb3(int param_1_00,undefined4 param_1)

{
  FUN_007bde96(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_007bdedb(undefined4 *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2)

{
  *param_1 = W3CA43D38::W25643903::vftable;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 1),param_2);
  FUN_007cc480(param_1 + 8);
  return param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_007bdf16(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  int in_EAX;
  
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
                     )(in_EAX + 4));
  return param_1;
}



// public: static struct boost::archive::detail::extra_detail::guid_initializer<class
// W3CA43D38::W25643903> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class W3CA43D38::W25643903>
// >::get_mutable_instance(void)

guid_initializer<class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>_>
::get_mutable_instance(void)

{
                    // 0x3bdf31  1040
                    // ?get_mutable_instance@?$singleton@U?$guid_initializer@VW25643903@W3CA43D38@@@extra_detail@detail@archive@boost@@@serialization@boost@@SAAAU?$guid_initializer@VW25643903@W3CA43D38@@@extra_detail@detail@archive@3@XZ
  if ((`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c74e56);
  }
  return (guid_initializer<class_W3CA43D38::W25643903> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// private: static struct boost::archive::detail::extra_detail::guid_initializer<class
// W3CA43D38::W25643903> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class W3CA43D38::W25643903>
// >::get_instance(void)

guid_initializer<class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>_>
::get_instance(void)

{
                    // 0x3bdf36  720
                    // ?get_instance@?$singleton@U?$guid_initializer@VW25643903@W3CA43D38@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAU?$guid_initializer@VW25643903@W3CA43D38@@@extra_detail@detail@archive@3@XZ
  if ((`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c74e56);
  }
  return (guid_initializer<class_W3CA43D38::W25643903> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W25643903> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W25643903> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>
::get_const_instance(void)

{
                    // 0x3bdf57  661
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bdf57  1470
                    // ?instantiate@?$ptr_serialization_support@Vxml_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007be0b4();
    _atexit((_func_4879 *)&LAB_00c74e8a);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W25643903> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W25643903> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>
::get_const_instance(void)

{
                    // 0x3bdf5c  639
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bdf5c  1452
                    // ?instantiate@?$ptr_serialization_support@Vbinary_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007be15c();
    _atexit((_func_4879 *)&LAB_00c74e5e);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W25643903> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W25643903> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>
::get_const_instance(void)

{
                    // 0x3bdf61  691
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bdf61  1479
                    // ?instantiate@?$ptr_serialization_support@Vxml_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007be060();
    _atexit((_func_4879 *)&LAB_00c74ea0);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W25643903> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W25643903> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>
::get_const_instance(void)

{
                    // 0x3bdf66  676
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3bdf66  1461
                    // ?instantiate@?$ptr_serialization_support@Vbinary_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007be108();
    _atexit((_func_4879 *)&LAB_00c74e74);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W25643903> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W25643903> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>
::get_instance(void)

{
                    // 0x3bdf6b  1011
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007be060();
    _atexit((_func_4879 *)&LAB_00c74ea0);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W25643903> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W25643903> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>
::get_instance(void)

{
                    // 0x3bdfa7  981
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007be0b4();
    _atexit((_func_4879 *)&LAB_00c74e8a);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W25643903> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W25643903> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>
::get_instance(void)

{
                    // 0x3bdfe3  996
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007be108();
    _atexit((_func_4879 *)&LAB_00c74e74);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W25643903> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W25643903> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>
::get_instance(void)

{
                    // 0x3be01f  959
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007be15c();
    _atexit((_func_4879 *)&LAB_00c74e5e);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W25643903> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W25643903> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>
::get_const_instance(void)

{
                    // 0x3be05b  604
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3be05b  1117
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74f07);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>
* FUN_007be060(void)

{
  extended_type_info_typeid<class_W3CA43D38::W25643903> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032f01e0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>
* FUN_007be0b4(void)

{
  extended_type_info_typeid<class_W3CA43D38::W25643903> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f01d8);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>
* FUN_007be108(void)

{
  extended_type_info_typeid<class_W3CA43D38::W25643903> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>::
       vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032f01d0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>
* FUN_007be15c(void)

{
  extended_type_info_typeid<class_W3CA43D38::W25643903> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>::
       vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f01c8);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007be1b0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007be1d2(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007be1f4(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007be216(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W25643903> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W25643903> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>
::get_instance(void)

{
                    // 0x3be238  924
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74f07);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W25643903> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W25643903> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W25643903> *peVar1;
  
                    // 0x3be282  844
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74eec);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W25643903> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W25643903> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>
::get_instance(void)

{
                    // 0x3be2d2  891
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>::
    oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>
              ((oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74ed1);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W25643903> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W25643903> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W25643903> *peVar1;
  
                    // 0x3be31c  803
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74eb6);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007be36c(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe67 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007be395(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe68 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007be3be(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe69 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007be3e7(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe6a = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W25643903>::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W25643903>(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>::
oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>
          (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> *this)

{
  extended_type_info_typeid<class_W3CA43D38::W25643903> *peVar1;
  
                    // 0x3be410  62
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W25643903>::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W25643903>(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>
          (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> *this)

{
  extended_type_info_typeid<class_W3CA43D38::W25643903> *peVar1;
  
                    // 0x3be42a  29
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::W25643903>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::W25643903>
// >::get_const_instance(void)

extended_type_info_typeid<class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>::
get_const_instance(void)

{
                    // 0x3be444  436
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW25643903@W3CA43D38@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW25643903@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007be485();
    _atexit((_func_4879 *)&LAB_00c74f22);
  }
  return (extended_type_info_typeid<class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::W25643903>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::W25643903> >::get_instance(void)

extended_type_info_typeid<class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>::
get_instance(void)

{
                    // 0x3be449  756
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW25643903@W3CA43D38@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW25643903@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007be485();
    _atexit((_func_4879 *)&LAB_00c74f22);
  }
  return (extended_type_info_typeid<class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>
* FUN_007be485(void)

{
  FUN_008308e0("9DDB2D1B-FD34-0C57-2B41-8C94BE553DC0");
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>::vftable;
  FUN_00830c60(&W3CA43D38::W25643903::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007be4d8(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W25643903>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x3be519  1715
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_007be7db(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007be53b(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>::vftable;
  FUN_0082df80(&DAT_032f01e0);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W25643903>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3be579  1614
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7be585;
  pvVar1 = operator_new(0x1a8);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007be918(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007be852(param_1 + 9);
  return;
}



void Catch_All_007be5e8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007be5f5(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>::vftable;
  FUN_0082bbc0(&DAT_032f01d8);
  FUN_00833fa0();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W25643903>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>::
save_object_ptr(pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>
                *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> *poVar1;
  
                    // 0x3be633  1700
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>
           ::get_instance();
  FUN_00830550(param_2,poVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007be67d(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>::
       vftable;
  FUN_00833f40(&DAT_032f01d0);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W25643903>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>::
load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>
                *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3be6bb  1592
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7be6c7;
  pvVar1 = operator_new(0x1a8);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007be918(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007be8c9();
  return;
}



void Catch_All_007be729(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007be736(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>::
       vftable;
  FUN_008347f0(&DAT_032f01c8);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W25643903>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> *this,
                basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> *local_8;
  
                    // 0x3be774  1672
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007be953();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W25643903>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3be790  1556
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007be9d1();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W25643903>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>::save_object_data
          (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> *this,
          basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> *local_8;
  
                    // 0x3be7a0  1639
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007bea4e();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W25643903>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>::load_object_data
          (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3be7bc  1515
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VW25643903@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007bead6();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::W25643903> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::W25643903> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W25643903> *peVar1;
  
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74eec);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W25643903> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W25643903> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>
::get_const_instance(void)

{
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>::
    oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>
              ((oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74ed1);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W25643903> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W25643903> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W25643903> *peVar1;
  
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74eb6);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>::get_instance(void)'
          ::`2'::t;
}



int FUN_007be7db(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_007be852(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int __fastcall FUN_007be8c9(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_007be918(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c20734;
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = W3CA43D38::W25643903::vftable;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (param_1 + 1));
    puVar1 = (undefined *)FUN_007cc480(param_1 + 8);
  }
  return puVar1;
}



void FUN_007be953(void)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  int local_c;
  int local_8;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W25643903>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  if (*(uint *)(in_EAX + 0x38) < 0x10) {
    local_c = in_EAX + 0x24;
  }
  else {
    local_c = *(int *)(in_EAX + 0x24);
  }
  FUN_007bdc74(&local_c);
  if (*(uint *)(in_EAX + 0xa8) < 0x10) {
    local_c = in_EAX + 0x94;
  }
  else {
    local_c = *(int *)(in_EAX + 0x94);
  }
  local_8 = in_EAX + 4;
  FUN_004414fa(&local_c);
  return;
}



void FUN_007be9d1(void)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  int local_c;
  int local_8;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W25643903>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  if (*(uint *)(in_EAX + 0x38) < 0x10) {
    local_c = in_EAX + 0x24;
  }
  else {
    local_c = *(int *)(in_EAX + 0x24);
  }
  FUN_007bdc8f(&local_c);
  if (*(uint *)(in_EAX + 0xa8) < 0x10) {
    local_c = in_EAX + 0x94;
  }
  else {
    local_c = *(int *)(in_EAX + 0x94);
  }
  local_8 = in_EAX + 4;
  FUN_00441643();
  return;
}



void FUN_007bea4e(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W25643903>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  FUN_007bcc2f();
  FUN_007bdcaa();
  return;
}



void FUN_007bead6(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W25643903>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  FUN_007bcc7e();
  FUN_007bdce8();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// class boost::serialization::void_cast_detail::void_caster const & __cdecl
// boost::serialization::void_cast_register<class W3CA43D38::W25643903,class
// W3CA43D38::WF45DE894>(class W3CA43D38::W25643903 const *,class W3CA43D38::WF45DE894 const *)

void_caster * __cdecl
boost::serialization::void_cast_register<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>
          (W25643903 *param_1,WF45DE894 *param_2)

{
                    // 0x3beb5e  10
                    // ??$void_cast_register@VW25643903@W3CA43D38@@VWF45DE894@2@@serialization@boost@@YAABVvoid_caster@void_cast_detail@01@PBVW25643903@W3CA43D38@@PBVWF45DE894@5@@Z
                    // 0x3beb5e  712
                    // ?get_const_instance@?$singleton@V?$void_caster_primitive@VW25643903@W3CA43D38@@VWF45DE894@2@@void_cast_detail@serialization@boost@@@serialization@boost@@SAABV?$void_caster_primitive@VW25643903@W3CA43D38@@VWF45DE894@2@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bebbc();
    _atexit((_func_4879 *)&LAB_00c74f38);
  }
  return (void_caster *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007beb63(undefined4 param_1)

{
  ___RTDynamicCast(param_1,0,&W3CA43D38::WF45DE894::RTTI_Type_Descriptor,
                   &W3CA43D38::W25643903::RTTI_Type_Descriptor,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::void_cast_detail::void_caster_primitive<class
// W3CA43D38::W25643903,class W3CA43D38::WF45DE894> & __cdecl boost::serialization::singleton<class
// boost::serialization::void_cast_detail::void_caster_primitive<class W3CA43D38::W25643903,class
// W3CA43D38::WF45DE894> >::get_instance(void)

void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>
::get_instance(void)

{
                    // 0x3beb80  1032
                    // ?get_instance@?$singleton@V?$void_caster_primitive@VW25643903@W3CA43D38@@VWF45DE894@2@@void_cast_detail@serialization@boost@@@serialization@boost@@CAAAV?$void_caster_primitive@VW25643903@W3CA43D38@@VWF45DE894@2@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bebbc();
    _atexit((_func_4879 *)&LAB_00c74f38);
  }
  return (void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>
* FUN_007bebbc(void)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  _DAT_032f0ef0 =
       boost::serialization::
       singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W25643903>_>
       ::get_instance();
  _DAT_032f0ef8 = 0;
  _DAT_032f0efc = 0;
  _t = boost::serialization::void_cast_detail::
       void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>::vftable;
  _DAT_032f0ef4 = peVar1;
  FUN_0083ddb0(0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007bec1a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::detail::
                singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>_>
                ::vftable;
  DAT_032efe6c = 1;
  FUN_007bec43();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007bec43(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::
             void_caster_primitive<class_W3CA43D38::W25643903,class_W3CA43D38::WF45DE894>::vftable;
  FUN_0083e150();
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 __thiscall FUN_007bec6f(undefined4 param_1_00,byte param_1)

{
  FUN_007bec43();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall
FUN_007bec8b(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            int **param_1)

{
  int **ppiVar1;
  undefined4 uVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_78 [56];
  undefined local_40 [4];
  int local_3c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_38;
  char local_31;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_8 = 0x7bec97;
  local_3c = 0;
  local_38 = param_1_00;
  ppiVar1 = (int **)(**(code **)(**param_1 + 0x48))(local_40);
  local_8 = 0;
  local_31 = (**(code **)(**ppiVar1 + 4))();
  local_8 = 0xffffffff;
  if (local_3c != 0) {
    FUN_0040127a();
  }
  if (local_31 == '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1_00,param_2)
    ;
  }
  else {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_30,param_2);
    local_8 = 1;
    uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      (local_78,&DAT_00dd9160,7);
    local_8._0_1_ = 2;
    local_3c = -0x3e665741;
    uVar2 = FUN_00b94330(&local_3c,uVar2);
    local_8 = CONCAT31(local_8._1_3_,3);
    pbVar3 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_00429b10(8,6,uVar2,0,0xffffffff);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_38,pbVar3);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007bed64(int param_1,undefined4 param_2)

{
  basic_string<>(param_2);
  *(undefined *)(param_1 + 0x1c) = 1;
  FUN_007cc480(param_1 + 0x20);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void thunk_FUN_007bf623(void)

{
  FUN_00830840();
  FUN_00833fd0();
  return;
}



int FUN_007bef43(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
  *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::shared_ptr<class W3CA43D38::W7D89EDB2> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> >
// >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
          ::get_const_instance(void)

{
                    // 0x3befba  590
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74f53);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007befbf(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> >
// >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
          ::get_instance(void)

{
                    // 0x3befe4  910
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74f53);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007bf02e(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe88 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::shared_ptr<class W3CA43D38::W7D89EDB2> >::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> >(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
          (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
           *this)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> *peVar1;
  
                    // 0x3bf057  48
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W3CA43D38::W7D89EDB2> > const & __cdecl
// boost::serialization::singleton<class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W3CA43D38::W7D89EDB2> > >::get_const_instance(void)

extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
::get_const_instance(void)

{
                    // 0x3bf071  415
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@boost@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bf0b2();
    _atexit((_func_4879 *)&LAB_00c74f6e);
  }
  return (extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W3CA43D38::W7D89EDB2> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::shared_ptr<class
// W3CA43D38::W7D89EDB2> > >::get_instance(void)

extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
::get_instance(void)

{
                    // 0x3bf076  735
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@boost@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007bf0b2();
    _atexit((_func_4879 *)&LAB_00c74f6e);
  }
  return (extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
* FUN_007bf0b2(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>::vftable;
  FUN_00830c60(&boost::shared_ptr<class_W3CA43D38::W7D89EDB2>::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007bf102(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2>
// >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
::save_object_data(oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0x3bf143  1658
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  FUN_007bf17a(param_1 + 9);
  return;
}



int FUN_007bf17a(int param_1)

{
  undefined4 *in_EAX;
  int *piVar1;
  undefined2 extraout_var;
  
  if (param_1 == 0) {
    piVar1 = (int *)0x0;
  }
  else {
    piVar1 = (int *)(param_1 + -9);
  }
  FUN_0082dd50(*in_EAX);
  if (piVar1 == (int *)0xfffffff7) {
    piVar1 = (int *)0x0;
  }
  if (*(int *)in_EAX[1] == 0) {
    (**(code **)(*piVar1 + 0x10))(CONCAT22(extraout_var,0xffff));
    FUN_0082d4f0();
  }
  else {
    FUN_007bf202(piVar1,*(int *)in_EAX[1]);
  }
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007bf202(undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  undefined4 uVar7;
  int iVar8;
  int iVar9;
  undefined4 uVar10;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2016e;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  piVar3 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>
                  ::get_instance();
  uVar4 = ___RTtypeid(param_2,uVar2);
  piVar5 = (int *)FUN_00830d80(uVar4);
  iVar9 = 0;
  if (piVar5 != (int *)0x0) goto LAB_007bf274;
  uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
  local_c = 0;
  while( true ) {
    FUN_0043fc7f(uVar4);
LAB_007bf274:
    cVar1 = FUN_00830f50(piVar5);
    iVar6 = param_2;
    iVar8 = iVar9;
    if (cVar1 != '\0') break;
    iVar6 = FUN_0083e330(piVar5,piVar3,param_2);
    if (iVar6 == iVar9) {
      iVar9 = 1;
      uVar10 = 1;
      uVar4 = (**(code **)(*piVar3 + 8))(1);
      uVar7 = (**(code **)(*piVar5 + 8))(uVar4);
      uVar4 = FUN_00832e60(10,uVar7,uVar4,uVar10);
      local_c = 1;
    }
    else {
      boost::serialization::
      singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>
      ::get_instance();
      iVar8 = FUN_0082dfa0(piVar5);
      if (iVar8 == iVar9) {
        iVar8 = 0;
      }
      else {
        iVar8 = iVar8 + -4;
      }
      if (iVar8 != iVar9) break;
      piVar5 = (int *)0x2;
      uVar4 = FUN_00832e60(2,"derived class not registered or exported",iVar9,1);
      local_c = 2;
    }
  }
  FUN_00830570(iVar6,iVar8);
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> > const &
// __cdecl boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> >
// >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
          ::get_const_instance(void)

{
                    // 0x3bf328  560
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74f84);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007bf32d(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> >
// >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
          ::get_instance(void)

{
                    // 0x3bf34f  880
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c74f84);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007bf399(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe8a = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2>
// >::oserializer<class boost::archive::binary_oarchive,class boost::shared_ptr<class
// W3CA43D38::W7D89EDB2> >(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
          (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
           *this)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> *peVar1;
  
                    // 0x3bf3c2  18
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2>
// >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
::save_object_data(oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
  *local_8;
  
                    // 0x3bf3dc  1628
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
                    // WARNING: Load size is inaccurate
  if (param_1 == (basic_oarchive *)0xfffffff7) {
    param_1 = (basic_oarchive *)0x0;
  }
  if ((int *)param_1 == (int *)0xfffffff7) {
    param_1 = (basic_oarchive *)0x0;
  }
  if ((int *)param_1 == (int *)0xfffffff7) {
    param_1 = (basic_oarchive *)0x0;
  }
  if ((int *)param_1 == (int *)0xfffffff7) {
    param_1 = (basic_oarchive *)0x0;
  }
  if (*param_2 == 0) {
    (**(code **)(*(int *)param_1 + 0x10))(0xffff);
    FUN_009b4100();
  }
  else {
    FUN_007bf44c(param_1,*param_2);
  }
  return;
}



void FUN_007bf44c(undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  undefined4 uVar7;
  int iVar8;
  int iVar9;
  undefined4 uVar10;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2016e;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  piVar3 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>
                  ::get_instance();
  uVar4 = ___RTtypeid(param_2,uVar2);
  piVar5 = (int *)FUN_00830d80(uVar4);
  iVar9 = 0;
  if (piVar5 != (int *)0x0) goto LAB_007bf4be;
  uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
  local_c = 0;
  while( true ) {
    FUN_0043fc7f(uVar4);
LAB_007bf4be:
    cVar1 = FUN_00830f50(piVar5);
    iVar6 = param_2;
    iVar8 = iVar9;
    if (cVar1 != '\0') break;
    iVar6 = FUN_0083e330(piVar5,piVar3,param_2);
    if (iVar6 == iVar9) {
      iVar9 = 1;
      uVar10 = 1;
      uVar4 = (**(code **)(*piVar3 + 8))(1);
      uVar7 = (**(code **)(*piVar5 + 8))(uVar4);
      uVar4 = FUN_00832e60(10,uVar7,uVar4,uVar10);
      local_c = 1;
    }
    else {
      boost::serialization::
      singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>
      ::get_instance();
      iVar8 = FUN_00833f60(piVar5);
      if (iVar8 == iVar9) {
        iVar8 = 0;
      }
      else {
        iVar8 = iVar8 + -4;
      }
      if (iVar8 != iVar9) break;
      piVar5 = (int *)0x2;
      uVar4 = FUN_00832e60(2,"derived class not registered or exported",iVar9,1);
      local_c = 2;
    }
  }
  FUN_00830570(iVar6,iVar8);
  ExceptionList = local_14;
  return;
}



void __fastcall thunk_FUN_00830840(undefined4 *param_1)

{
  int iVar1;
  
  iVar1 = param_1[1];
  *param_1 = boost::archive::detail::basic_oarchive::vftable;
  if (iVar1 != 0) {
    FUN_008306c0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007bf623(void)

{
  FUN_00830840();
  FUN_00833fd0();
  return;
}



void FUN_007bf64f(undefined4 param_1,undefined4 param_2)

{
  FUN_009b4100();
  FUN_007bcd43(param_2,1);
  return;
}



void __thiscall FUN_007bf66b(int param_1_00,undefined4 param_1)

{
  if (param_1_00 == -9) {
    param_1_00 = 0;
  }
  FUN_007bf64f(param_1_00,param_1);
  return;
}



int __thiscall FUN_007bf688(int param_1_00,undefined4 param_1)

{
  FUN_007bf66b(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_007bf6ce(char **param_1)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x7bf6da;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_30,*param_1);
  local_8 = 0;
  FUN_007bdeb3(local_30);
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



int __thiscall FUN_007bf71b(int param_1_00,undefined4 param_1)

{
  FUN_007bf6ce(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



void FUN_007bf759(undefined4 param_1,undefined4 param_2)

{
  FUN_009b4100();
  FUN_007bcd43(param_2,2);
  return;
}



void __thiscall FUN_007bf775(int param_1_00,undefined4 param_1)

{
  if (param_1_00 == -9) {
    param_1_00 = 0;
  }
  FUN_007bf759(param_1_00,param_1);
  return;
}



int __thiscall FUN_007bf792(int param_1_00,undefined4 param_1)

{
  FUN_007bf775(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



void FUN_007bf7d8(undefined4 param_1,undefined4 param_2)

{
  FUN_009b4100();
  FUN_007bcd43(param_2,4);
  return;
}



void __thiscall FUN_007bf7f4(int param_1_00,undefined4 param_1)

{
  if (param_1_00 == -9) {
    param_1_00 = 0;
  }
  FUN_007bf7d8(param_1_00,param_1);
  return;
}



int __thiscall FUN_007bf811(int param_1_00,undefined4 param_1)

{
  FUN_007bf7f4(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



undefined __fastcall FUN_007bf857(int param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined *puVar3;
  undefined local_b9;
  uint local_b8;
  undefined local_b4 [28];
  undefined local_98 [132];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4b411;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if ((*(int *)(param_1 + 0x18) == 0) || (*(int *)(param_1 + 0x54) == 0)) {
    local_b9 = 0;
    FUN_00b940e0(0x2c1fa9bb,DAT_0323f878 ^ (uint)&stack0xffffff38);
  }
  else {
    local_b9 = 1;
    FUN_00449269(local_98);
    iVar2 = param_1 + 4;
    local_c = 0;
    FUN_0040e327(local_98,iVar2);
    if ((-(uint)(*(char *)(param_1 + 0x20) != '\0') & 0x6a1cd8) != 0) {
      uVar1 = FUN_004266f0(local_98,iVar2,param_1 + 0x24);
      FUN_0040e327(uVar1);
    }
    puVar3 = local_b4;
    uVar1 = FUN_00496342(puVar3);
    local_c._0_1_ = 1;
    uVar1 = FUN_004266f0(local_98,puVar3,uVar1);
    FUN_0040e327(uVar1);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00401829(1,0);
    local_b8 = 0;
    if ((*(int *)(param_1 + 0x6c) - *(int *)(param_1 + 0x68)) / 0x1c != 0) {
      do {
        FUN_0040e4a0(local_98,&DAT_00dd9158);
        uVar1 = FUN_0042b490(local_b8);
        FUN_0040e327(local_98,uVar1);
        local_b8 = local_b8 + 1;
      } while (local_b8 < (uint)((*(int *)(param_1 + 0x6c) - *(int *)(param_1 + 0x68)) / 0x1c));
    }
    uVar1 = FUN_004266f0(local_98,0x1c,param_1 + 0x40);
    FUN_0040e327(uVar1);
    uVar1 = FUN_004491d9();
    local_c = CONCAT31(local_c._1_3_,2);
    FID_conflict_assign(uVar1,0,0xffffffff);
    FUN_00401829(1,0);
    local_c = 0xffffffff;
    FUN_0044922e();
  }
  ExceptionList = local_14;
  return local_b9;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_007bfa0f(undefined *param_1)

{
  undefined4 uVar1;
  undefined local_38 [28];
  int local_1c;
  int local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7bfa1b;
  local_14 = 0;
  FUN_007bfb0f(&local_1c);
  local_8 = 1;
  if (local_1c == 0) {
    local_8 = 0;
    *param_1 = 0;
    local_14 = 1;
    if (local_18 != 0) {
      FUN_0040127a();
    }
  }
  else {
    uVar1 = FUN_007bdf16(local_38);
    local_8._0_1_ = 2;
    FUN_00504b20(uVar1);
    local_14 = 1;
    FUN_004017b2(1,0);
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_18 != 0) {
      FUN_0040127a();
    }
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_007bfa8f(undefined *param_1)

{
  undefined4 uVar1;
  undefined local_38 [28];
  int local_1c;
  int local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7bfa9b;
  local_14 = 0;
  FUN_007bfbda(&local_1c);
  local_8 = 1;
  if (local_1c == 0) {
    local_8 = 0;
    *param_1 = 0;
    local_14 = 1;
    if (local_18 != 0) {
      FUN_0040127a();
    }
  }
  else {
    uVar1 = FUN_007bdf16(local_38);
    local_8._0_1_ = 2;
    FUN_00504b20(uVar1);
    local_14 = 1;
    FUN_004017b2(1,0);
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_18 != 0) {
      FUN_0040127a();
    }
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007bfb0f(undefined4 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int *unaff_EDI;
  undefined local_30 [8];
  undefined local_28 [8];
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  *param_1 = 0;
  param_1[1] = 0;
  local_8 = 0;
  local_14 = 0;
  local_18 = 1;
  iVar1 = (**(code **)(*unaff_EDI + 4))();
  if (iVar1 != 0) {
    uVar2 = (**(code **)(*unaff_EDI + 8))(local_30,local_14);
    local_8 = 1;
    puVar3 = (undefined4 *)FUN_007bfca5(local_28,uVar2);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar3;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar3 + 1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007bfbda(undefined4 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int *unaff_EDI;
  undefined local_30 [8];
  undefined local_28 [8];
  undefined4 local_20;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  *param_1 = 0;
  param_1[1] = 0;
  local_8 = 0;
  local_14 = 0;
  local_18 = 1;
  iVar1 = (**(code **)(*unaff_EDI + 4))();
  if (iVar1 != 0) {
    uVar2 = (**(code **)(*unaff_EDI + 8))(local_30,local_14);
    local_8 = 1;
    puVar3 = (undefined4 *)FUN_007bfd5b(local_28,uVar2);
    local_8 = CONCAT31(local_8._1_3_,2);
    local_20 = *puVar3;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar3 + 1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007bfca5(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7bfcb1;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W3CA43D38::WF45DE894::RTTI_Type_Descriptor,
                   &W3CA43D38::W25643903::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W3CA43D38::WF45DE894::RTTI_Type_Descriptor,
                           &W3CA43D38::W25643903::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007bfd5b(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7bfd67;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W3CA43D38::WF45DE894::RTTI_Type_Descriptor,
                   &W3CA43D38::W9A6A458E::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W3CA43D38::WF45DE894::RTTI_Type_Descriptor,
                           &W3CA43D38::W9A6A458E::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



undefined __fastcall FUN_007bfe28(int param_1)

{
  undefined4 uVar1;
  int *piVar2;
  undefined4 uVar3;
  uint uVar4;
  int iVar5;
  undefined *puVar6;
  undefined4 uVar7;
  undefined local_c9;
  undefined local_c4 [8];
  undefined local_bc [36];
  undefined local_98 [132];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c38552;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if ((*(int *)(param_1 + 0x18) == 0) || (*(int *)(param_1 + 0x54) == 0)) {
    local_c9 = 0;
    FUN_00b940e0(0x8aee16ab,DAT_0323f878 ^ (uint)&stack0xffffff28);
  }
  else {
    local_c9 = 1;
    FUN_00449269(local_98);
    iVar5 = param_1 + 4;
    local_c = 0;
    FUN_0040e327(local_98,iVar5);
    if ((-(uint)(*(char *)(param_1 + 0x20) != '\0') & 0x6a1cd8) != 0) {
      uVar1 = FUN_004266f0(local_98,iVar5,param_1 + 0x24);
      FUN_0040e327(uVar1);
    }
    uVar1 = 8;
    FUN_00823cac(local_c4,8);
    puVar6 = &LAB_004150a2;
    FUN_004266f0(local_98,uVar1,&LAB_004150a2);
    FUN_0040c559(puVar6);
    piVar2 = (int *)FUN_00415f60();
    *(undefined2 *)((int)piVar2 + *(int *)(*piVar2 + 4) + 0x30) = 0x30;
    uVar7 = 8;
    FUN_00823cac(local_bc,8);
    puVar6 = &LAB_004150a2;
    uVar1 = *(undefined4 *)(param_1 + 0x74);
    uVar3 = FUN_0040c559(&LAB_00415099);
    uVar3 = FUN_0040c573(uVar3,uVar1,uVar7,puVar6);
    FUN_004266f0(uVar3);
    FUN_0040c559(uVar1);
    piVar2 = (int *)FUN_00415f60();
    *(undefined2 *)((int)piVar2 + *(int *)(*piVar2 + 4) + 0x30) = 0x30;
    uVar1 = *(undefined4 *)(param_1 + 0x78);
    uVar3 = FUN_0040c559(&LAB_00415099);
    FUN_0040c573(uVar3,uVar1);
    uVar4 = 0;
    if ((*(int *)(param_1 + 0x6c) - *(int *)(param_1 + 0x68)) / 0x1c != 0) {
      do {
        FUN_0040e4a0(local_98,&DAT_00dd9150);
        uVar1 = FUN_0042b490(uVar4);
        FUN_0040e327(local_98,uVar1);
        uVar4 = uVar4 + 1;
      } while (uVar4 < (uint)((*(int *)(param_1 + 0x6c) - *(int *)(param_1 + 0x68)) / 0x1c));
    }
    uVar1 = FUN_004266f0(local_98,0x1c,param_1 + 0x40);
    FUN_0040e327(uVar1);
    uVar1 = FUN_004491d9();
    local_c = CONCAT31(local_c._1_3_,1);
    FID_conflict_assign(uVar1,0,0xffffffff);
    FUN_00401829(1,0);
    local_c = 0xffffffff;
    FUN_0044922e();
  }
  ExceptionList = local_14;
  return local_c9;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_007c0048(void)

{
  char cVar1;
  char cVar2;
  int iVar3;
  int *unaff_ESI;
  int *local_2c;
  int local_28;
  undefined local_24 [4];
  char local_20;
  int *local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x7c0054;
  (**(code **)(*unaff_ESI + 0x3c))(&local_2c);
  local_8 = 0;
  iVar3 = (**(code **)(*local_2c + 4))();
  FUN_0043d406(iVar3);
  local_8._0_1_ = 1;
  (**(code **)(*local_2c + 8))(&local_1c);
  local_8 = CONCAT31(local_8._1_3_,2);
  while( true ) {
    cVar2 = (**(code **)(*local_1c + 0x18))();
    if (cVar2 != '\0') break;
    cVar1 = (**(code **)(*unaff_ESI + 0xc))();
    if (cVar1 != '\0') break;
    FUN_00453ca3(iVar3 + 8,local_24);
  }
  local_8._0_1_ = 1;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != '\0') {
    FUN_00401477();
  }
  local_8 = 0xffffffff;
  if (local_28 != 0) {
    FUN_0040127a();
  }
  return cVar2;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_007c00ec(int *param_1_00,char *param_2_00,int *param_1,int *param_2)

{
  char *pcVar1;
  char cVar2;
  undefined auStack_c8 [24];
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined4 *puStack_a8;
  undefined4 uStack_a4;
  char *pcStack_a0;
  char local_64;
  char local_54;
  undefined *local_40;
  undefined4 local_3c;
  undefined4 local_38;
  char *local_30;
  int *local_2c;
  int *local_28;
  char local_24 [8];
  undefined local_1c [20];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x7c;
  local_8 = 0x7c00f8;
  pcStack_a0 = local_24;
  local_2c = param_1;
  local_28 = param_2;
  uStack_a4 = 0x7c0112;
  local_30 = param_2_00;
  (**(code **)(*param_1_00 + 4))();
  local_8 = 0;
  uStack_a4 = 1;
  puStack_a8 = (undefined4 *)0x7c011f;
  (**(code **)(*param_2 + 0x20))();
  *param_2_00 = '\0';
  do {
    puStack_a8 = (undefined4 *)0x7c012b;
    cVar2 = (**(code **)(*param_2 + 0xc))();
    if (cVar2 != '\0') {
LAB_007c0202:
      puStack_a8 = (undefined4 *)0x1;
      uStack_ac = 0x7c020c;
      (**(code **)(param_2[1] + 4))();
      uStack_ac = 0;
      uStack_b0 = 0x7c0215;
      (**(code **)(*param_2 + 0x20))();
      uStack_b0 = 0x7c021c;
      FUN_00a421fb();
      return;
    }
    local_38 = 0;
    puStack_a8 = &local_3c;
    local_3c = 100000;
    uStack_ac = 0x7c014a;
    FUN_00ba6d50();
    puStack_a8 = (undefined4 *)0x7c0155;
    FUN_0079b3d0();
    puStack_a8 = (undefined4 *)0x7c0163;
    FUN_00ba6cc0();
    puStack_a8 = (undefined4 *)0x7c0170;
    puStack_a8 = (undefined4 *)FUN_00ba6c40();
    local_40 = auStack_c8;
    local_8._0_1_ = 3;
    FUN_005d44b1(param_2);
    pcVar1 = local_30;
    cVar2 = (**(code **)(*local_2c + 0xc))(local_30);
    puStack_a8 = (undefined4 *)0x7c019c;
    FUN_00b9fb30();
    if (local_64 != '\0') {
      local_64 = '\0';
    }
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_54 != '\0') {
      local_54 = '\0';
    }
    if (cVar2 == '\0') {
      puStack_a8 = (undefined4 *)0x79a5f4dd;
      uStack_ac = 0x7c01fe;
      FUN_00b940e0();
      param_2 = local_28;
      goto LAB_007c0202;
    }
    if (*pcVar1 != '\0') goto LAB_007c0202;
    if ((-(uint)(local_24[0] != '\0') & 0x6a1cd8) != 0) {
      puStack_a8 = (undefined4 *)0x7c01d0;
      uStack_ac = FUN_00ba6d30();
      puStack_a8 = (undefined4 *)local_1c;
      uStack_b0 = 0x7c01da;
      cVar2 = FUN_00480c29();
      if (cVar2 == '\0') goto LAB_007c0202;
    }
    puStack_a8 = (undefined4 *)0x0;
    uStack_ac = 0x7c01ea;
    (**(code **)(param_2[1] + 4))();
  } while( true );
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007c03cb)
// WARNING: Removing unreachable block (ram,0x007c041a)

void FUN_007c021d(undefined4 param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  uint uVar2;
  int iVar3;
  int *unaff_EBX;
  int param_11;
  int param_12;
  undefined *puVar4;
  char local_6d;
  int local_6c [16];
  int local_2c;
  int local_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2e4;
  puVar4 = &stack0xfffffcf4;
  local_8 = 2;
  (**(code **)(*unaff_EBX + 0x3c))(&stack0xfffffcf4);
  local_8._0_1_ = 3;
  uVar1 = (**(code **)(*unaff_EBX + 0x34))();
  local_8._0_1_ = 2;
  FUN_00b6b004(local_6c,uVar1,puVar4);
  local_8._0_1_ = 4;
  uVar2 = -(uint)(param_3 != 0) & 0x7a491c;
  if (((uVar2 == 0) && ((-(uint)(param_11 != 0) & 0x7a491c) == 0)) &&
     ((-(uint)(param_12 != 0) & 0x7a491c) == 0)) {
    local_6d = '\0';
  }
  else {
    if (uVar2 != 0) {
      if (local_2c == 0) {
        iVar3 = 0;
      }
      else {
        iVar3 = local_2c + 4;
      }
      FUN_004f9aed(iVar3);
    }
    if ((-(uint)(param_11 != 0) & 0x7a491c) != 0) {
      if (local_2c == 0) {
        iVar3 = 0;
      }
      else {
        iVar3 = local_2c + 4;
      }
      FUN_004f9aed(iVar3);
    }
    if ((-(uint)(param_12 != 0) & 0x7a491c) != 0) {
      if (local_2c == 0) {
        iVar3 = 0;
      }
      else {
        iVar3 = local_2c + 4;
      }
      FUN_004f9aed(iVar3);
    }
    local_6d = FUN_00b6aea7();
    if (local_6d != '\0') goto LAB_007c0356;
  }
  FUN_00b940e0();
LAB_007c0356:
  if (local_6d != '\0') {
    *(undefined *)(local_2c + 0x58) = 1;
    *(undefined *)(local_24 + 0x58) = 1;
    (**(code **)(local_6c[0] + 8))();
    local_8._0_1_ = 5;
    FUN_007c00ec(local_6c);
    local_8._0_1_ = 4;
    FUN_00b940e0();
  }
  local_8._0_1_ = 2;
  FUN_00b6aee8();
  local_8._0_1_ = 1;
  FUN_00507e58();
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00507e58();
  local_8 = 0xffffffff;
  FUN_00507e58();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c0469(void)

{
  FUN_007c0495();
  FUN_00833fd0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c0495(void)

{
  FUN_007c04b3();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c04b3(void)

{
  FUN_00832dd0();
  return;
}



void FUN_007c04d1(void)

{
  code *pcVar1;
  undefined local_10 [12];
  
  FUN_00a3f1a9();
  __CxxThrowException_8(local_10,&DAT_03115c3c);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007c04ee(int param_1,undefined4 param_2)

{
  FUN_00415590(param_2);
  *(undefined *)(param_1 + 0x1c) = 1;
  FUN_007cc480(param_1 + 0x20);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined __thiscall FUN_007c0526(int param_1_00,undefined4 param_1)

{
  int iVar1;
  int local_100 [2];
  int aiStack_f8 [35];
  undefined local_6c [9];
  undefined local_63 [15];
  undefined **local_54;
  int local_30;
  undefined4 local_2c;
  int local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined local_19;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xf0;
  local_8 = 0x7c0535;
  FUN_0043e743(local_100);
  local_8 = 0;
  iVar1 = *(int *)(local_100[0] + 4);
  *(undefined4 *)((int)aiStack_f8 + iVar1 + 4) = 0;
  FUN_00417a55(*(undefined4 *)((int)aiStack_f8 + iVar1),0);
  FUN_0043e7ac();
  local_19 = *(int *)((int)aiStack_f8 + *(int *)(local_100[0] + 4)) == 0;
  if ((bool)local_19) {
    local_20 = FUN_00a492bd(FUN_007c04d1);
    local_8._0_1_ = 1;
    if (*(char *)(param_1_00 + 0x1c) == '\0') {
      FUN_0043da9b(local_6c,local_100);
      local_8._0_1_ = 7;
      if (*(uint *)(param_1_00 + 0x70) < 0x10) {
        local_30 = param_1_00 + 0x5c;
      }
      else {
        local_30 = *(int *)(param_1_00 + 0x5c);
      }
      local_2c = param_1;
      FUN_007c088b(local_63);
      local_8 = CONCAT31(local_8._1_3_,1);
      FUN_0043dad2(local_6c);
    }
    else {
      FUN_007c06ec(local_100,0);
      local_8._0_1_ = 2;
      FUN_009d2b80();
      local_54 = boost::archive::binary_iarchive::vftable;
      local_8._0_1_ = 4;
      if (*(uint *)(param_1_00 + 0x70) < 0x10) {
        local_28 = param_1_00 + 0x5c;
      }
      else {
        local_28 = *(int *)(param_1_00 + 0x5c);
      }
      local_24 = param_1;
      FUN_007c083c();
      local_8._0_1_ = 5;
      FUN_0082ce10();
      local_8 = CONCAT31(local_8._1_3_,1);
      FUN_007c0469();
    }
    local_8 = 0;
    FUN_00a492bd(local_20);
    FUN_0043e832();
  }
  else {
    FUN_00b940e0(0xa757c2b8);
  }
  local_8 = 0xffffffff;
  FUN_0043e1a3();
  return local_19;
}



undefined4 Catch_007c06a0(void)

{
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x15) = 0;
  FUN_00b940e0(0xfe087e9a);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return 0x7c0672;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c06be(void)

{
  FUN_0082ce10();
  FUN_007c0469();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007c06ec(undefined4 *param_1_00,int *param_1,uint param_2)

{
  FUN_00833c90(*(undefined4 *)(*(int *)(*param_1 + 4) + 0x28 + (int)param_1),
               (byte)(param_2 >> 1) & 1);
  FUN_007c07da(param_2);
  *param_1_00 = boost::archive::
                binary_iarchive_impl<class_boost::archive::binary_iarchive,char,struct_std::char_traits<char>_>
                ::vftable;
  FUN_007c07bc(param_2);
  return param_1_00;
}



void FUN_007c074e(void)

{
  FUN_007c0902();
  return;
}



void FUN_007c0764(void)

{
  FUN_007c092a();
  return;
}



void FUN_007c077a(void)

{
  FUN_007c0952();
  return;
}



void FUN_007c0790(void)

{
  FUN_007c097a();
  return;
}



void FUN_007c07a6(void)

{
  FUN_007c09a2();
  return;
}



void FUN_007c07bc(uint param_1)

{
  if ((param_1 & 1) == 0) {
    FUN_008342d0();
    FUN_00834060();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007c07da(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_007c080b(param_1);
  *param_1_00 = boost::archive::basic_binary_iarchive<class_boost::archive::binary_iarchive>::
                vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007c080b(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00832d60(param_1);
  *param_1_00 = boost::archive::detail::common_iarchive<class_boost::archive::binary_iarchive>::
                vftable;
  return param_1_00;
}



int __fastcall FUN_007c083c(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
  *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



int FUN_007c088b(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int __thiscall FUN_007c0902(int param_1_00,undefined4 param_1)

{
  FUN_007c0aab(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_007c092a(int param_1_00,undefined4 param_1)

{
  FUN_007c0bda(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_007c0952(int param_1_00,undefined4 param_1)

{
  FUN_007c0a34(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_007c097a(int param_1_00,undefined4 param_1)

{
  FUN_007c09ca(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



int __thiscall FUN_007c09a2(int param_1_00,undefined4 param_1)

{
  FUN_00834550(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



void FUN_007c09ca(undefined *param_1)

{
  ushort local_c [2];
  undefined4 uStack_8;
  
  FUN_00831450(local_c);
  uStack_8 = uStack_8 & 0xffffff;
  if (local_c[0] < 7) {
    FUN_007c0bf9((int)&uStack_8 + 3);
    *param_1 = uStack_8._3_1_;
  }
  else {
    FUN_007c0b6b((int)&uStack_8 + 3);
    *param_1 = uStack_8._3_1_ != '\0';
  }
  return;
}



void FUN_007c0a34(undefined2 *param_1,undefined4 param_2)

{
  ushort local_8 [2];
  
  FUN_00831450(local_8);
  if (local_8[0] < 8) {
    param_2 = 0;
    if (local_8[0] < 7) {
      FUN_007c092a(&param_2);
    }
    else {
      FUN_007c0bb2(&param_2);
    }
    *param_1 = (undefined2)param_2;
  }
  else {
    FUN_007c0b93(param_1,param_2);
  }
  return;
}



void FUN_007c0aab(uint *param_1,uint param_2)

{
  ushort local_8 [2];
  
  FUN_00831450(local_8);
  if (7 < local_8[0]) {
    FUN_007c0bda(param_1,param_2);
    return;
  }
  if (local_8[0] < 7) {
    if (5 < local_8[0]) {
      param_2 = 0;
      FUN_007bce8b(&param_2);
      param_2 = param_2 & 0xffff;
      goto LAB_007c0b3c;
    }
    if (local_8[0] < 3) {
      param_2 = 0;
      FUN_007bcdb8(&param_2);
      *param_1 = param_2;
      return;
    }
  }
  param_2 = param_2 & 0xffffff;
  FUN_007c0bf9((int)&param_2 + 3);
  param_2 = param_2 >> 0x18;
LAB_007c0b3c:
  *param_1 = param_2;
  return;
}



int __thiscall FUN_007c0b6b(int param_1_00,undefined4 param_1)

{
  FUN_007c0c23(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



void FUN_007c0b93(undefined4 param_1)

{
  FUN_007bcde2(param_1,2);
  return;
}



int __thiscall FUN_007c0bb2(int param_1_00,undefined4 param_1)

{
  FUN_007c0b93(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



void FUN_007c0bda(undefined4 param_1)

{
  FUN_007bcde2(param_1,4);
  return;
}



int __thiscall FUN_007c0bf9(int param_1_00,undefined4 param_1)

{
  FUN_007c0c42(param_1,0);
  if (param_1_00 == 0) {
    param_1_00 = 0;
  }
  else {
    param_1_00 = param_1_00 + -9;
  }
  return param_1_00;
}



void FUN_007c0c23(undefined4 param_1)

{
  FUN_007bcde2(param_1,1);
  return;
}



void __thiscall FUN_007c0c42(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  iVar1 = param_1_00;
  if (param_1_00 == -9) {
    iVar1 = 0;
  }
  FUN_007c0d95(iVar1,param_1,param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::shared_ptr<class W3CA43D38::W7D89EDB2> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> >
// >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
          ::get_const_instance(void)

{
                    // 0x3c0c61  503
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c0ce5();
    _atexit((_func_4879 *)&LAB_00c74f9f);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007c0c66(undefined4 *param_1)

{
  *param_1 = boost::archive::detail::
             iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
             ::vftable;
  FUN_00832e10();
  return;
}



undefined4 __thiscall FUN_007c0c8a(undefined4 param_1_00,byte param_1)

{
  FUN_007c0c66();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> >
// >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
          ::get_instance(void)

{
                    // 0x3c0ca6  823
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c0ce5();
    _atexit((_func_4879 *)&LAB_00c74f9f);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
* FUN_007c0ce5(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
           ::get_instance();
  FUN_00832df0(peVar1);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 __thiscall FUN_007c0d31(undefined4 param_1_00,byte param_1)

{
  FUN_007c0d4e(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c0d4e(undefined4 *param_1)

{
  *param_1 = boost::serialization::detail::
             singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
             ::vftable;
  DAT_032efe8b = 1;
  FUN_007c0c66();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2>
// >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
::load_object_data(iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3c0d7f  1535
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007c0daa(param_2,param_3);
  return;
}



void FUN_007c0d95(undefined4 param_1,undefined4 param_2)

{
  FUN_007bcde2(param_2,1);
  return;
}



void __thiscall FUN_007c0daa(int param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 local_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined *local_20;
  undefined4 *local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c188a7;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if (param_2 == 0) {
    puVar2 = (undefined4 *)
             boost::serialization::
             singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    uVar3 = (**(code **)*puVar2)();
    FUN_00832c10(uVar3);
    uStack_28 = 0;
    uStack_24 = 0;
    uStack_c = 1;
    local_1c = &uStack_28;
    local_20 = &DAT_03058be0;
    FUN_007c1520(uVar1);
    local_1c = &uStack_24;
    local_20 = &DAT_03058be4;
    FUN_007ba9fd(param_1_00 + 9);
    FUN_007c0f08(&local_20,&uStack_28);
    uStack_c._0_1_ = 2;
    FUN_0082c9b0(&local_20);
    uStack_c = CONCAT31(uStack_c._1_3_,1);
    FUN_007ba9ce();
    local_2c = uStack_28;
    uStack_c = 0xffffffff;
    FUN_007c0ee1(&uStack_28);
  }
  else {
    local_1c = &local_2c;
    local_20 = &DAT_03058be0;
    FUN_007c1520(uVar1);
  }
  FUN_007c0f38(param_1_00 + 0x34,param_1);
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c0ee1(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    FUN_007bcf4f();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007c0f08(undefined4 *param_1,undefined4 *param_2)

{
  *param_1 = *param_2;
  FUN_007bceec(param_2 + 1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007c0f38(int param_1_00,undefined4 param_1,int param_2)

{
  int *piVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  int local_24;
  undefined local_20 [4];
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb4;
  local_8 = 0x7c0f47;
  if (param_1_00 == 0) {
    FUN_00504b35();
    local_8 = 0;
    FUN_0046f668();
    local_8 = 0xffffffff;
    FUN_007abb40();
    return;
  }
  piVar1 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>
                  ::get_instance();
  boost::serialization::
  singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>::
  get_instance();
  uVar2 = ___RTtypeid(param_1_00);
  iVar3 = FUN_00830d80(uVar2);
  if (iVar3 == 0) {
    param_1_00 = 1;
    uVar5 = 1;
    iVar4 = iVar3;
    uVar2 = (**(code **)(*piVar1 + 8))(0,1);
    uVar2 = FUN_00832e60(2,uVar2,iVar4,uVar5);
    local_8 = 1;
    FUN_0043fc7f(uVar2);
  }
  FUN_0082cad0(&local_24,param_1_00,iVar3,piVar1);
  local_8 = 2;
  if (local_24 == 0) {
    FUN_007c13d1(param_2);
    local_1c = FUN_0083e330(iVar3,piVar1,param_1_00);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 4);
  }
  local_1c = local_24;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_20);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3c1070  653
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c10dd();
    _atexit((_func_4879 *)&LAB_00c74faa);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::W7D89EDB2 *,struct
// boost::serialization::null_deleter> > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::W7D89EDB2 *,struct
// boost::serialization::null_deleter> > >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3c1075  510
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
                    // 0x3c1075  1071
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c1197();
    _atexit((_func_4879 *)&LAB_00c74fda);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> > >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3c107a  973
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c10dd();
    _atexit((_func_4879 *)&LAB_00c74faa);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007c10b9(undefined4 *param_1)

{
  *param_1 = boost::archive::detail::
             iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
             ::vftable;
  FUN_00832e10();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
* FUN_007c10dd(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f01c0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 __thiscall FUN_007c113c(undefined4 param_1_00,byte param_1)

{
  FUN_007c10b9();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> > >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3c1158  830
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c1197();
    _atexit((_func_4879 *)&LAB_00c74fda);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
* FUN_007c1197(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832df0(peVar1);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 __thiscall FUN_007c11e3(undefined4 param_1_00,byte param_1)

{
  FUN_007c1200(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c1200(undefined4 *param_1)

{
  *param_1 = boost::serialization::detail::
             singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
             ::vftable;
  DAT_032efe8d = 1;
  FUN_007c10b9();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::W7D89EDB2 *,struct
// boost::serialization::null_deleter> > const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::W7D89EDB2 *,struct
// boost::serialization::null_deleter> > >::get_const_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3c1231  422
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c1275();
    _atexit((_func_4879 *)&LAB_00c74fe5);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::W7D89EDB2 *,struct
// boost::serialization::null_deleter> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::W7D89EDB2 *,struct
// boost::serialization::null_deleter> > >::get_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3c1236  742
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c1275();
    _atexit((_func_4879 *)&LAB_00c74fe5);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
* FUN_007c1275(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_00830c60(&boost_132::detail::
                sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>
                ::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007c12d0(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> >::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
::load_object_ptr(pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
                  *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3c1311  1606
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7c131d;
  pvVar1 = operator_new(0x2c);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007c144b(param_1,pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007c14a9(param_1 + 9);
  return;
}



void Catch_007c1386(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007c1393(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_0082bbc0(&DAT_032f01c0);
  FUN_00833fa0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c13d1(void)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  int local_14;
  
  puVar1 = (undefined4 *)FUN_007c15fb(unaff_ESI);
  *puVar1 = 0;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(&stack0xffffffe4);
  FUN_0046f668();
  FUN_007abb40();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> >::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3c1443  1504
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
                    // 0x3c1443  1542
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
  ::get_instance();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c144b(uint param_1,int param_2)

{
  undefined4 local_14;
  
  FUN_007c1520();
  if (param_2 != 0) {
    param_1 = param_1 & 0xffffff00;
    FUN_007c1598(param_2,local_14,param_1);
  }
  *(undefined4 *)(param_2 + 4) = 0;
  return;
}



int FUN_007c14a9(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007c1520(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *in_EAX;
  int iVar3;
  extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> *peVar4;
  undefined4 uVar5;
  
  FUN_0082ace0(*in_EAX);
  puVar1 = (undefined4 *)in_EAX[1];
  iVar3 = FUN_00832bf0(puVar1,0,&LAB_007bb703);
  if (iVar3 != 0) {
    uVar5 = *(undefined4 *)(iVar3 + 4);
    uVar2 = *puVar1;
    peVar4 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>
             ::get_instance();
    uVar5 = FUN_0083e220(uVar5,peVar4,uVar2);
    *puVar1 = uVar5;
  }
  FUN_0082af90(*in_EAX);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007c1598(undefined4 *param_1,undefined4 param_2)

{
  FUN_007bceb5();
  *param_1 = boost_132::detail::
             sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost_132::serialization::detail::null_deleter>
             ::vftable;
  param_1[9] = param_2;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_007c15ca(undefined4 param_1_00,byte param_1)

{
  FUN_007bcf06();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007c15fb(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = boost::detail::sp_counted_base::vftable;
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3CA43D38::W7D89EDB2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_007c165b(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// class boost::serialization::void_cast_detail::void_caster const & __cdecl
// boost::serialization::void_cast_register<class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter>,class
// boost_132::detail::sp_counted_base>(class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> const *,class
// boost_132::detail::sp_counted_base const *)

void_caster * __cdecl
boost::serialization::
void_cast_register<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
          (sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>
           *param_1,sp_counted_base *param_2)

{
                    // 0x3c166e  4
                    // ??$void_cast_register@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@serialization@boost@@YAABVvoid_caster@void_cast_detail@01@PBV?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@PBVsp_counted_base@56@@Z
                    // 0x3c166e  706
                    // ?get_const_instance@?$singleton@V?$void_caster_primitive@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@serialization@boost@@@serialization@boost@@SAABV?$void_caster_primitive@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c1701();
    _atexit((_func_4879 *)&LAB_00c75015);
  }
  return (void_caster *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007c1673(undefined4 param_1)

{
  ___RTDynamicCast(param_1,0,&boost_132::detail::sp_counted_base::RTTI_Type_Descriptor,
                   &boost_132::detail::
                    sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>
                    ::RTTI_Type_Descriptor,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007c1690(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::detail::sp_counted_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::void_cast_detail::void_caster_primitive<class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::W7D89EDB2 *,struct
// boost::serialization::null_deleter>,class boost_132::detail::sp_counted_base> & __cdecl
// boost::serialization::singleton<class
// boost::serialization::void_cast_detail::void_caster_primitive<class
// boost_132::detail::sp_counted_base_impl<class W3CA43D38::W7D89EDB2 *,struct
// boost::serialization::null_deleter>,class boost_132::detail::sp_counted_base>
// >::get_instance(void)

void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
          ::get_instance(void)

{
                    // 0x3c16c2  1026
                    // ?get_instance@?$singleton@V?$void_caster_primitive@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@serialization@boost@@@serialization@boost@@CAAAV?$void_caster_primitive@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c1701();
    _atexit((_func_4879 *)&LAB_00c75015);
  }
  return (void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
          *)&`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
* FUN_007c1701(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base> *peVar1;
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
  *peVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>
           ::get_instance();
  peVar2 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_007bcfb2(peVar2,peVar1,0,0);
  _t = boost::serialization::void_cast_detail::
       void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
       ::vftable;
  FUN_0083ddb0(0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 __thiscall FUN_007c1762(undefined4 param_1_00,byte param_1)

{
  FUN_007c177f(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c177f(undefined4 *param_1)

{
  *param_1 = boost::serialization::detail::
             singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
             ::vftable;
  DAT_032efe8f = 1;
  FUN_007c17b0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007c17b0(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::
             void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
             ::vftable;
  FUN_0083e150();
  FUN_007bcf8e();
  return;
}



undefined4 __thiscall FUN_007c17e1(undefined4 param_1_00,byte param_1)

{
  FUN_007c17b0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> > const &
// __cdecl boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> >
// >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
          ::get_const_instance(void)

{
                    // 0x3c17fd  465
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c189c();
    _atexit((_func_4879 *)&LAB_00c75020);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
             ::`2'::t;
}



void FUN_007c1802(int param_1)

{
  if (param_1 != 0) {
    FUN_007abb40();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007c181d(undefined4 *param_1)

{
  *param_1 = boost::archive::detail::
             iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
             ::vftable;
  FUN_00832e10();
  return;
}



undefined4 __thiscall FUN_007c1841(undefined4 param_1_00,byte param_1)

{
  FUN_007c181d();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2> >
// >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
          ::get_instance(void)

{
                    // 0x3c185d  785
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c189c();
    _atexit((_func_4879 *)&LAB_00c75020);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
* FUN_007c189c(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
           ::get_instance();
  FUN_00832df0(peVar1);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 __thiscall FUN_007c18e8(undefined4 param_1_00,byte param_1)

{
  FUN_007c1905(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c1905(undefined4 *param_1)

{
  *param_1 = boost::serialization::detail::
             singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>_>
             ::vftable;
  DAT_032efe90 = 1;
  FUN_007c181d();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W3CA43D38::W7D89EDB2>
// >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W3CA43D38::W7D89EDB2>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3c1936  1497
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW7D89EDB2@W3CA43D38@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007c194c(param_2,param_3);
  return;
}



void __thiscall FUN_007c194c(int param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 local_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined *local_20;
  undefined4 *local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c188a7;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if (param_2 == 0) {
    puVar2 = (undefined4 *)
             boost::serialization::
             singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    uVar3 = (**(code **)*puVar2)(uVar1);
    FUN_00832c10(uVar3);
    uStack_28 = 0;
    uStack_24 = 0;
    uStack_c = 1;
    local_1c = &uStack_28;
    local_20 = &DAT_03058be0;
    FUN_007c1a72(param_1_00 + 9);
    local_1c = &uStack_24;
    local_20 = &DAT_03058be4;
    FUN_007bc2e0();
    FUN_007c0f08(&local_20,&uStack_28);
    uStack_c._0_1_ = 2;
    FUN_0082c9b0(&local_20);
    uStack_c = CONCAT31(uStack_c._1_3_,1);
    FUN_007ba9ce();
    local_2c = uStack_28;
    uStack_c = 0xffffffff;
    FUN_007c0ee1(&uStack_28);
  }
  else {
    local_1c = &local_2c;
    local_20 = &DAT_03058be0;
    FUN_007c1a72(param_1_00 + 9);
  }
  FUN_007c0f38(param_1_00 + 0x1c,param_1);
  ExceptionList = local_14;
  return;
}



int __thiscall FUN_007c1a72(int param_1_00,int param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  extended_type_info_typeid<class_W3CA43D38::W7D89EDB2> *peVar4;
  undefined4 uVar5;
  
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  iVar3 = FUN_00832bf0(puVar1,0,&LAB_007bc61f);
  if (iVar3 != 0) {
    uVar5 = *(undefined4 *)(iVar3 + 4);
    uVar2 = *puVar1;
    peVar4 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W7D89EDB2>_>
             ::get_instance();
    uVar5 = FUN_0083e220(uVar5,peVar4,uVar2);
    *puVar1 = uVar5;
  }
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3c1ae8  631
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c1b55();
    _atexit((_func_4879 *)&LAB_00c7502b);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3c1aed  472
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
                    // 0x3c1aed  1049
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c1c0f();
    _atexit((_func_4879 *)&LAB_00c7505b);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> > >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3c1af2  951
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c1b55();
    _atexit((_func_4879 *)&LAB_00c7502b);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007c1b31(undefined4 *param_1)

{
  *param_1 = boost::archive::detail::
             iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
             ::vftable;
  FUN_00832e10();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
* FUN_007c1b55(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f01b8);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 __thiscall FUN_007c1bb4(undefined4 param_1_00,byte param_1)

{
  FUN_007c1b31();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> > >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3c1bd0  792
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c1c0f();
    _atexit((_func_4879 *)&LAB_00c7505b);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
* FUN_007c1c0f(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832df0(peVar1);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 __thiscall FUN_007c1c5b(undefined4 param_1_00,byte param_1)

{
  FUN_007c1c78(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c1c78(undefined4 *param_1)

{
  *param_1 = boost::serialization::detail::
             singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
             ::vftable;
  DAT_032efe92 = 1;
  FUN_007c1b31();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W3CA43D38::W7D89EDB2 *,struct boost::serialization::null_deleter> >::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
::load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
                  *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3c1ca9  1584
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7D89EDB2@W3CA43D38@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7c1cb5;
  pvVar1 = operator_new(0x2c);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007c1d68(param_1,pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007c1dbe();
  return;
}



void Catch_007c1d1d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007c1d2a(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_008347f0(&DAT_032f01b8);
  FUN_00833fa0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c1d68(uint param_1,int param_2)

{
  undefined4 local_14;
  
  FUN_007c1a72(param_1 + 9);
  if (param_2 != 0) {
    param_1 = param_1 & 0xffffff00;
    FUN_007c1598(param_2,local_14,param_1);
  }
  *(undefined4 *)(param_2 + 4) = 0;
  return;
}



int __fastcall FUN_007c1dbe(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W3CA43D38::W7D89EDB2*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007c1e0d(int param_1)

{
  int *piVar1;
  int iVar2;
  undefined4 auStack_28 [5];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0x7c1e19;
  local_14 = auStack_28;
  FUN_0041c235();
  local_8 = 0;
  auStack_28[0] = 0x7c1e31;
  iVar2 = FUN_007c20a5();
  piVar1 = (int *)(param_1 + 0x18);
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x11) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



void FUN_007c1e56(void)

{
  undefined4 local_8;
  
  FUN_0049c7f3();
  local_8 = 0x2580;
  FUN_007c1fee(&local_8);
  local_8 = 0x4b00;
  FUN_007c1fee(&local_8);
  local_8 = 0x9600;
  FUN_007c1fee(&local_8);
  local_8 = 0xe100;
  FUN_007c1fee(&local_8);
  local_8 = 0x1c200;
  FUN_007c1fee(&local_8);
  local_8 = 0x38400;
  FUN_007c1fee(&local_8);
  local_8 = 0x70800;
  FUN_007c1fee(&local_8);
  local_8 = 0xe1000;
  FUN_007c1fee(&local_8);
  return;
}



void FUN_007c1fee(uint *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  int *unaff_EBX;
  int *unaff_EDI;
  undefined4 uVar4;
  int local_18;
  undefined4 *local_14;
  undefined4 *local_10;
  undefined4 local_c;
  
  local_10 = (undefined4 *)unaff_EBX[6];
  local_c = CONCAT31(local_c._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_10[1] + 0x11) == '\0') {
    puVar2 = (undefined4 *)local_10[1];
    do {
      local_10 = puVar2;
      local_c = CONCAT31(local_c._1_3_,(uint)local_10[3] < *param_1);
      if ((uint)local_10[3] < *param_1) {
        puVar2 = (undefined4 *)*local_10;
      }
      else {
        puVar2 = (undefined4 *)local_10[2];
      }
    } while (*(char *)((int)puVar2 + 0x11) == '\0');
  }
  local_18 = *unaff_EBX;
  local_14 = local_10;
  if ((char)local_c != '\0') {
    puVar2 = *(undefined4 **)unaff_EBX[6];
    if (local_18 == 0) {
      FUN_00a3fb10();
    }
    if (local_10 == puVar2) {
      uVar4 = 1;
      goto LAB_007c2059;
    }
    FUN_0076b32a();
  }
  uVar4 = local_c;
  if ((uint)local_14[3] <= *param_1) {
    *unaff_EDI = local_18;
    unaff_EDI[1] = (int)local_14;
    *(undefined *)(unaff_EDI + 2) = 0;
    return;
  }
LAB_007c2059:
  piVar3 = (int *)FUN_00464c60(&local_18,uVar4,param_1);
  iVar1 = piVar3[1];
  *unaff_EDI = *piVar3;
  unaff_EDI[1] = iVar1;
  *(undefined *)(unaff_EDI + 2) = 1;
  return;
}



void FUN_007c20a5(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x14);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 4) = 1;
  *(undefined *)((int)puVar1 + 0x11) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_007c20cf(undefined4 *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2)

{
  *param_1 = W3CA43D38::W24C1131C::vftable;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 1),param_2);
  FUN_007cc480(param_1 + 8);
  return param_1;
}



// public: static struct boost::archive::detail::extra_detail::guid_initializer<class
// W3CA43D38::W24C1131C> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class W3CA43D38::W24C1131C>
// >::get_mutable_instance(void)

guid_initializer<class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>_>
::get_mutable_instance(void)

{
                    // 0x3c210a  1039
                    // ?get_mutable_instance@?$singleton@U?$guid_initializer@VW24C1131C@W3CA43D38@@@extra_detail@detail@archive@boost@@@serialization@boost@@SAAAU?$guid_initializer@VW24C1131C@W3CA43D38@@@extra_detail@detail@archive@3@XZ
  if ((`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c75066);
  }
  return (guid_initializer<class_W3CA43D38::W24C1131C> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// private: static struct boost::archive::detail::extra_detail::guid_initializer<class
// W3CA43D38::W24C1131C> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class W3CA43D38::W24C1131C>
// >::get_instance(void)

guid_initializer<class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>_>
::get_instance(void)

{
                    // 0x3c210f  719
                    // ?get_instance@?$singleton@U?$guid_initializer@VW24C1131C@W3CA43D38@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAU?$guid_initializer@VW24C1131C@W3CA43D38@@@extra_detail@detail@archive@3@XZ
  if ((`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c75066);
  }
  return (guid_initializer<class_W3CA43D38::W24C1131C> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W24C1131C> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W24C1131C> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>
::get_const_instance(void)

{
                    // 0x3c2130  675
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3c2130  1460
                    // ?instantiate@?$ptr_serialization_support@Vbinary_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c22e6();
    _atexit((_func_4879 *)&LAB_00c75084);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W24C1131C> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W24C1131C> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>
::get_const_instance(void)

{
                    // 0x3c2135  638
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3c2135  1451
                    // ?instantiate@?$ptr_serialization_support@Vbinary_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c233a();
    _atexit((_func_4879 *)&LAB_00c7506e);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W24C1131C> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W24C1131C> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>
::get_const_instance(void)

{
                    // 0x3c213a  690
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3c213a  1478
                    // ?instantiate@?$ptr_serialization_support@Vxml_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c223e();
    _atexit((_func_4879 *)&LAB_00c750b0);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W24C1131C> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W24C1131C> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>
::get_const_instance(void)

{
                    // 0x3c213f  660
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3c213f  1469
                    // ?instantiate@?$ptr_serialization_support@Vxml_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c2292();
    _atexit((_func_4879 *)&LAB_00c7509a);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W24C1131C> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W24C1131C> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>
::get_instance(void)

{
                    // 0x3c2144  1010
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c223e();
    _atexit((_func_4879 *)&LAB_00c750b0);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W24C1131C> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W24C1131C> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>
::get_instance(void)

{
                    // 0x3c2180  980
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c2292();
    _atexit((_func_4879 *)&LAB_00c7509a);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W24C1131C> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W24C1131C> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>
::get_instance(void)

{
                    // 0x3c21bc  995
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c22e6();
    _atexit((_func_4879 *)&LAB_00c75084);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W24C1131C> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W24C1131C> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>
::get_instance(void)

{
                    // 0x3c21f8  958
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c233a();
    _atexit((_func_4879 *)&LAB_00c7506e);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W24C1131C> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W24C1131C> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>
::get_const_instance(void)

{
                    // 0x3c2234  603
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3c2234  1116
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75117);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W24C1131C> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W24C1131C> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>
::get_const_instance(void)

{
                    // 0x3c2239  570
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3c2239  1101
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>::
    oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>
              ((oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c750e1);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>
* FUN_007c223e(void)

{
  extended_type_info_typeid<class_W3CA43D38::W24C1131C> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032f01a8);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>
* FUN_007c2292(void)

{
  extended_type_info_typeid<class_W3CA43D38::W24C1131C> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f01a0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>
* FUN_007c22e6(void)

{
  extended_type_info_typeid<class_W3CA43D38::W24C1131C> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>::
       vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032f0198);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>
* FUN_007c233a(void)

{
  extended_type_info_typeid<class_W3CA43D38::W24C1131C> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>::
       vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f0190);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007c238e(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007c23b0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007c23d2(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007c23f4(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W24C1131C> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W24C1131C> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>
::get_instance(void)

{
                    // 0x3c2416  923
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75117);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W24C1131C> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W24C1131C> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W24C1131C> *peVar1;
  
                    // 0x3c2460  843
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c750fc);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W24C1131C> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W24C1131C> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>
::get_instance(void)

{
                    // 0x3c24b0  890
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>::
    oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>
              ((oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c750e1);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W24C1131C> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W24C1131C> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W24C1131C> *peVar1;
  
                    // 0x3c24fa  802
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c750c6);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007c254a(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe98 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007c2573(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe99 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007c259c(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe9a = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007c25c5(undefined4 *param_1_00,byte param_1)

{
  DAT_032efe9b = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W24C1131C>::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W24C1131C>(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>::
oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>
          (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> *this)

{
  extended_type_info_typeid<class_W3CA43D38::W24C1131C> *peVar1;
  
                    // 0x3c25ee  61
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W24C1131C>::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W24C1131C>(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>
          (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> *this)

{
  extended_type_info_typeid<class_W3CA43D38::W24C1131C> *peVar1;
  
                    // 0x3c2608  28
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::W24C1131C>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::W24C1131C>
// >::get_const_instance(void)

extended_type_info_typeid<class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>::
get_const_instance(void)

{
                    // 0x3c2622  435
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW24C1131C@W3CA43D38@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW24C1131C@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c2679();
    _atexit((_func_4879 *)&LAB_00c75132);
  }
  return (extended_type_info_typeid<class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 FUN_007c2627(void)

{
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::W24C1131C>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::W24C1131C> >::get_instance(void)

extended_type_info_typeid<class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>::
get_instance(void)

{
                    // 0x3c263d  755
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW24C1131C@W3CA43D38@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW24C1131C@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c2679();
    _atexit((_func_4879 *)&LAB_00c75132);
  }
  return (extended_type_info_typeid<class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>
* FUN_007c2679(void)

{
  FUN_008308e0("C563FEFE-782B-D004-E48A-E9F70334ECDD");
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>::vftable;
  FUN_00830c60(&W3CA43D38::W24C1131C::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007c26cc(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W24C1131C>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x3c270d  1714
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_007c29ca(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007c272f(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>::vftable;
  FUN_0082df80(&DAT_032f01a8);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W24C1131C>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3c276d  1613
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7c2779;
  pvVar1 = operator_new(0x1a8);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007c2b07(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007c2a41(param_1 + 9);
  return;
}



void Catch_All_007c27dc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007c27e9(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>::vftable;
  FUN_0082bbc0(&DAT_032f01a0);
  FUN_00833fa0();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W24C1131C>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>::
save_object_ptr(pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>
                *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> *poVar1;
  
                    // 0x3c2827  1699
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  FUN_00830550(param_2,poVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007c2871(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>::
       vftable;
  FUN_00833f40(&DAT_032f0198);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W24C1131C>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>::
load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>
                *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3c28af  1591
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7c28bb;
  pvVar1 = operator_new(0x1a8);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007c2b07(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007c2ab8();
  return;
}



void Catch_All_007c291d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007c292a(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>::
       vftable;
  FUN_008347f0(&DAT_032f0190);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W24C1131C>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> *this,
                basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> *local_8;
  
                    // 0x3c2968  1671
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007c2b42();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W24C1131C>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3c2984  1555
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007c2bbd();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W24C1131C>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>::save_object_data
          (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> *this,
          basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C> *local_8;
  
                    // 0x3c2994  1638
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007c2c37();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W24C1131C>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>::load_object_data
          (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3c29b0  1514
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VW24C1131C@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007c2cbc();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::W24C1131C> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::W24C1131C> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W24C1131C> *peVar1;
  
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c750fc);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W24C1131C> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W24C1131C> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W24C1131C> *peVar1;
  
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c750c6);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>::get_instance(void)'
          ::`2'::t;
}



int FUN_007c29ca(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_007c2a41(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int __fastcall FUN_007c2ab8(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_007c2b07(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c20734;
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = W3CA43D38::W24C1131C::vftable;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (param_1 + 1));
    puVar1 = (undefined *)FUN_007cc480(param_1 + 8);
  }
  return puVar1;
}



void FUN_007c2b42(void)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  int local_c;
  int local_8;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  if (*(uint *)(in_EAX + 0x38) < 0x10) {
    local_c = in_EAX + 0x24;
  }
  else {
    local_c = *(int *)(in_EAX + 0x24);
  }
  FUN_007bdc74(&local_c);
  if (*(uint *)(in_EAX + 0x8c) < 0x10) {
    local_c = in_EAX + 0x78;
  }
  else {
    local_c = *(int *)(in_EAX + 0x78);
  }
  local_8 = in_EAX + 4;
  FUN_004414fa(&local_c);
  return;
}



void FUN_007c2bbd(void)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  int local_c;
  int local_8;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  if (*(uint *)(in_EAX + 0x38) < 0x10) {
    local_c = in_EAX + 0x24;
  }
  else {
    local_c = *(int *)(in_EAX + 0x24);
  }
  FUN_007bdc8f(&local_c);
  if (*(uint *)(in_EAX + 0x8c) < 0x10) {
    local_c = in_EAX + 0x78;
  }
  else {
    local_c = *(int *)(in_EAX + 0x78);
  }
  local_8 = in_EAX + 4;
  FUN_00441643();
  return;
}



void FUN_007c2c37(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  FUN_007bcc2f();
  FUN_007bdcaa();
  return;
}



void FUN_007c2cbc(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W24C1131C>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  FUN_007bcc7e();
  FUN_007bdce8();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// class boost::serialization::void_cast_detail::void_caster const & __cdecl
// boost::serialization::void_cast_register<class W3CA43D38::W24C1131C,class
// W3CA43D38::WF45DE894>(class W3CA43D38::W24C1131C const *,class W3CA43D38::WF45DE894 const *)

void_caster * __cdecl
boost::serialization::void_cast_register<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>
          (W24C1131C *param_1,WF45DE894 *param_2)

{
                    // 0x3c2d41  9
                    // ??$void_cast_register@VW24C1131C@W3CA43D38@@VWF45DE894@2@@serialization@boost@@YAABVvoid_caster@void_cast_detail@01@PBVW24C1131C@W3CA43D38@@PBVWF45DE894@5@@Z
                    // 0x3c2d41  711
                    // ?get_const_instance@?$singleton@V?$void_caster_primitive@VW24C1131C@W3CA43D38@@VWF45DE894@2@@void_cast_detail@serialization@boost@@@serialization@boost@@SAABV?$void_caster_primitive@VW24C1131C@W3CA43D38@@VWF45DE894@2@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c2d9f();
    _atexit((_func_4879 *)&LAB_00c75148);
  }
  return (void_caster *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007c2d46(undefined4 param_1)

{
  ___RTDynamicCast(param_1,0,&W3CA43D38::WF45DE894::RTTI_Type_Descriptor,
                   &W3CA43D38::W24C1131C::RTTI_Type_Descriptor,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::void_cast_detail::void_caster_primitive<class
// W3CA43D38::W24C1131C,class W3CA43D38::WF45DE894> & __cdecl boost::serialization::singleton<class
// boost::serialization::void_cast_detail::void_caster_primitive<class W3CA43D38::W24C1131C,class
// W3CA43D38::WF45DE894> >::get_instance(void)

void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>
::get_instance(void)

{
                    // 0x3c2d63  1031
                    // ?get_instance@?$singleton@V?$void_caster_primitive@VW24C1131C@W3CA43D38@@VWF45DE894@2@@void_cast_detail@serialization@boost@@@serialization@boost@@CAAAV?$void_caster_primitive@VW24C1131C@W3CA43D38@@VWF45DE894@2@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007c2d9f();
    _atexit((_func_4879 *)&LAB_00c75148);
  }
  return (void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>
* FUN_007c2d9f(void)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  _DAT_032f0e6c =
       boost::serialization::
       singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W24C1131C>_>
       ::get_instance();
  _DAT_032f0e74 = 0;
  _DAT_032f0e78 = 0;
  _t = boost::serialization::void_cast_detail::
       void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>::vftable;
  _DAT_032f0e70 = peVar1;
  FUN_0083ddb0(0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007c2dfd(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::detail::
                singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>_>
                ::vftable;
  DAT_032efe9d = 1;
  FUN_007c2e26();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007c2e26(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::
             void_caster_primitive<class_W3CA43D38::W24C1131C,class_W3CA43D38::WF45DE894>::vftable;
  FUN_0083e150();
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 __thiscall FUN_007c2e52(undefined4 param_1_00,byte param_1)

{
  FUN_007c2e26();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_007c2e6e(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_44 [20];
  undefined4 *local_30;
  undefined4 local_2c;
  undefined4 local_28;
  char local_24;
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  local_2c = param_1;
  local_28 = param_2;
  local_30 = param_3;
  local_24 = '\0';
  local_8 = 0;
  (**(code **)(*param_1_00 + 0x2c))(local_44);
  FUN_0046c6de();
  if ((-(uint)(local_24 != '\0') & 0x6a1cd8) == 0) {
    uVar2 = 0x3c2bd2d6;
  }
  else {
    cVar1 = (**(code **)(*param_1_00 + 0x20))();
    if (cVar1 == '\0') {
      uVar2 = 0x5f24abc8;
    }
    else {
      (**(code **)*local_30)(local_1c,0);
      cVar1 = FUN_0081109e(local_2c,param_1_00);
      if (cVar1 != '\0') goto LAB_007c2f13;
      uVar2 = 0x1213d8b2;
    }
  }
  FUN_00b940e0(uVar2);
LAB_007c2f13:
  FUN_00a421fb();
  return;
}



bool __fastcall FUN_007c2f1b(int param_1)

{
  undefined4 uVar1;
  uint uVar2;
  bool bVar3;
  int iVar4;
  undefined *puVar5;
  undefined local_b4 [28];
  undefined local_98 [132];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4b411;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  bVar3 = *(int *)(param_1 + 0x18) != 0;
  if (bVar3) {
    FUN_00449269(local_98);
    iVar4 = param_1 + 4;
    local_c = 0;
    FUN_0040e327(local_98,iVar4);
    if ((-(uint)(*(char *)(param_1 + 0x20) != '\0') & 0x6a1cd8) != 0) {
      uVar1 = FUN_004266f0(local_98,iVar4,param_1 + 0x24);
      FUN_0040e327(uVar1);
    }
    puVar5 = local_b4;
    uVar1 = FUN_00496342(puVar5);
    local_c._0_1_ = 1;
    uVar1 = FUN_004266f0(local_98,puVar5,uVar1);
    FUN_0040e327(uVar1);
    local_c = (uint)local_c._1_3_ << 8;
    FUN_00401829(1,0);
    uVar2 = 0;
    if ((*(int *)(param_1 + 0x6c) - *(int *)(param_1 + 0x68)) / 0x1c != 0) {
      do {
        FUN_0040e4a0(local_98,&DAT_00dd8f60);
        uVar1 = FUN_0042b490(uVar2);
        FUN_0040e327(local_98,uVar1);
        uVar2 = uVar2 + 1;
      } while (uVar2 < (uint)((*(int *)(param_1 + 0x6c) - *(int *)(param_1 + 0x68)) / 0x1c));
    }
    uVar1 = FUN_004491d9();
    local_c = CONCAT31(local_c._1_3_,2);
    FID_conflict_assign(uVar1,0,0xffffffff);
    FUN_00401829(1,0);
    local_c = 0xffffffff;
    FUN_0044922e();
  }
  else {
    FUN_00b940e0(0xf6b1ebff,DAT_0323f878 ^ (uint)&stack0xffffff38);
  }
  ExceptionList = local_14;
  return bVar3;
}



basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __thiscall
FUN_007c30f5(int param_1_00,
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            *param_1,uint param_2)

{
  undefined4 uVar1;
  
  if (param_2 < (uint)((*(int *)(param_1_00 + 0x14) - *(int *)(param_1_00 + 0x10)) / 0x1c)) {
    uVar1 = FUN_0042b490(param_2);
    basic_string<>(uVar1);
  }
  else {
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_007c31c0(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  
  if (param_1 < (uint)(*(int *)(param_1_00 + 0x2c) - *(int *)(param_1_00 + 0x28) >> 3)) {
    if ((uint)(*(int *)(param_1_00 + 0x2c) - *(int *)(param_1_00 + 0x28) >> 3) <= param_1) {
      FUN_00a3fb10();
    }
    uVar1 = (**(code **)(**(int **)(*(int *)(param_1_00 + 0x28) + param_1 * 8) + 4))();
  }
  else {
    uVar1 = 0;
  }
  return uVar1;
}



int __fastcall FUN_007c31fb(int *param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  
  iVar3 = 0;
  uVar1 = (**(code **)(*param_1 + 4))();
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      iVar2 = (**(code **)(*param_1 + 0x10))(uVar4);
      iVar3 = iVar3 + iVar2;
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  return iVar3;
}



void __fastcall FUN_007c3226(undefined4 *param_1)

{
  *param_1 = W3CA43D38::WD0961731::vftable;
  return;
}



undefined4 * __thiscall FUN_007c322d(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W3CA43D38::WD0961731::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007c324a(undefined4 *param_1)

{
  *param_1 = W3CA43D38::W5F3775EE::vftable;
  FUN_00672a11();
  FUN_00507e58();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007c3287(undefined4 *param_1_00,byte param_1)

{
  FUN_00507e58();
  *param_1_00 = W3CA43D38::WD0961731::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_007c32c1(int param_1)

{
  char cVar1;
  undefined4 local_8;
  
  local_8 = 0;
  if ((-(uint)(*(int *)(param_1 + 8) != 0) & 0x7a491c) != 0) {
    FUN_00672a11();
    cVar1 = FUN_00bbfa30(&local_8);
    if (cVar1 != '\0') {
      return local_8;
    }
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007c3307(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 local_4c [5];
  undefined4 uStack_38;
  undefined4 **ppuStack_34;
  undefined4 uStack_30;
  undefined4 *local_1c;
  undefined4 local_18;
  undefined4 *local_14 [3];
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_18 = 0;
  local_14[0] = (undefined4 *)0x0;
  local_8 = 1;
  if ((-(uint)(*(int *)(param_1_00 + 8) != 0) & 0x7a491c) != 0) {
    local_1c = local_4c;
    FUN_00672a11();
    cVar2 = FUN_00bbfff0(local_14);
    if (cVar2 != '\0') {
      *param_1 = local_14[0];
      return param_1;
    }
  }
  ppuStack_34 = &local_1c;
  uStack_30 = 0;
  uStack_38 = 0x7c336b;
  puVar3 = (undefined4 *)FUN_00b933f0();
  uVar1 = *puVar3;
  *puVar3 = 0;
  *param_1 = uVar1;
  local_18 = 1;
  if (local_1c != (undefined4 *)0x0) {
    uStack_30 = 1;
    ppuStack_34 = (undefined4 **)0x7c3385;
    (**(code **)*local_1c)();
  }
  local_8 = local_8 & 0xffffff00;
  if (local_14[0] != (undefined4 *)0x0) {
    uStack_30 = 1;
    ppuStack_34 = (undefined4 **)0x7c3394;
    (**(code **)*local_14[0])();
  }
  return param_1;
}



undefined4 __thiscall FUN_007c3410(undefined4 param_1_00,byte param_1)

{
  FUN_007c342c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * __fastcall FUN_007c342c(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c083e0;
  *param_1 = W3CA43D38::WD9C153D4::vftable;
  if ((undefined4 *)param_1[1] != (undefined4 *)0x0) {
    puVar1 = (undefined *)(***(code ***)(undefined4 *)param_1[1])(1);
  }
  param_1[1] = 0;
  if ((undefined4 *)param_1[1] != (undefined4 *)0x0) {
    puVar1 = (undefined *)(***(code ***)(undefined4 *)param_1[1])(1);
  }
  *param_1 = W3CA43D38::WD0961731::vftable;
  return puVar1;
}



undefined * Catch_All_007c3480(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 1;
  return &DAT_007c348d;
}



undefined4 __fastcall FUN_007c3492(int param_1)

{
  return *(undefined4 *)(*(int *)(param_1 + 4) + 8);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007c3499(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x7c34a5;
  local_14 = 0;
  puVar2 = (undefined4 *)FUN_00b93190(*(undefined4 *)(param_1_00 + 4),&local_18);
  uVar1 = *puVar2;
  *puVar2 = 0;
  *param_1 = uVar1;
  local_8 = 0;
  local_14 = 1;
  if (local_18 != (undefined4 *)0x0) {
    (**(code **)*local_18)(1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __fastcall FUN_007c34e0(int *param_1)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 local_a0c;
  undefined4 local_a08;
  undefined4 local_a04;
  uint local_a00;
  undefined4 local_9fc;
  undefined4 local_9f8;
  undefined4 local_9f4;
  uint local_9f0;
  undefined4 local_9ec;
  undefined4 local_9e8;
  undefined4 local_9e4;
  uint local_9e0;
  undefined4 local_9dc;
  undefined4 local_9d8;
  undefined4 local_9d4;
  uint local_9d0;
  undefined4 local_9cc;
  undefined4 local_9c8;
  undefined4 local_9c4;
  uint local_9c0;
  undefined4 local_9bc;
  undefined4 local_9b8;
  undefined4 local_9b4;
  uint local_9b0;
  undefined4 local_9ac;
  undefined4 local_9a8;
  undefined4 local_9a4;
  uint local_9a0;
  undefined4 local_99c;
  undefined4 local_998;
  undefined4 local_994;
  uint local_990;
  undefined4 local_98c;
  undefined4 local_988;
  undefined4 local_984;
  uint local_980;
  undefined4 local_97c;
  undefined4 local_978;
  undefined4 local_974;
  uint local_970;
  undefined4 local_96c;
  uint local_968;
  undefined4 local_964;
  undefined4 local_960;
  undefined4 local_95c;
  uint local_958;
  undefined4 local_954;
  undefined4 local_950;
  undefined4 local_94c;
  undefined4 local_948;
  undefined4 local_944;
  uint local_940;
  undefined4 local_93c;
  undefined4 local_938;
  undefined4 local_934;
  undefined4 local_930;
  undefined4 uStack_92c;
  undefined4 uStack_928;
  undefined4 uStack_924;
  undefined4 uStack_920;
  undefined4 uStack_91c;
  undefined4 uStack_918;
  undefined4 uStack_914;
  undefined4 uStack_910;
  undefined4 uStack_90c;
  undefined4 uStack_908;
  undefined4 uStack_904;
  undefined4 uStack_900;
  undefined4 uStack_8fc;
  undefined4 uStack_8f8;
  undefined4 uStack_8f4;
  uint uStack_8f0;
  undefined4 local_8ec;
  undefined4 local_8e8;
  undefined4 local_8e4;
  uint local_8e0;
  undefined4 local_8dc;
  undefined *local_8d8;
  undefined4 local_8d4;
  uint local_8d0;
  undefined4 local_8cc;
  undefined4 local_8c8;
  undefined4 local_8c4;
  uint local_8c0;
  undefined4 local_8bc;
  undefined4 local_8b8;
  undefined4 local_8b4;
  uint local_8b0;
  undefined4 local_8ac;
  undefined4 local_8a8;
  undefined4 local_8a4;
  uint local_8a0;
  undefined4 local_89c;
  undefined4 local_898;
  undefined4 local_894;
  uint local_890;
  undefined4 local_88c;
  undefined4 local_888;
  undefined4 local_884;
  uint local_880;
  undefined4 local_87c;
  undefined4 local_878;
  undefined4 local_874;
  uint local_870;
  undefined4 local_86c;
  undefined4 local_868;
  undefined4 local_864;
  uint local_860;
  undefined4 local_85c;
  undefined4 local_858;
  undefined4 local_854;
  uint local_850;
  undefined4 local_84c;
  undefined4 local_848;
  undefined4 local_844;
  uint local_840;
  undefined4 local_83c;
  undefined4 local_838;
  undefined4 local_834;
  uint local_830;
  undefined4 local_82c;
  undefined4 local_828;
  undefined4 local_824;
  uint local_820;
  undefined4 local_81c;
  undefined4 local_818;
  undefined4 local_814;
  uint local_810;
  undefined4 local_80c;
  undefined4 local_808;
  undefined4 local_804;
  uint local_800;
  undefined4 local_7fc;
  undefined4 local_7f8;
  undefined4 local_7f4;
  uint local_7f0;
  undefined4 local_7ec;
  undefined *local_7e8;
  undefined4 local_7e4;
  undefined4 local_7e0;
  undefined4 uStack_7dc;
  undefined *puStack_7d8;
  undefined4 uStack_7d4;
  undefined4 uStack_7d0;
  undefined4 uStack_7cc;
  undefined *puStack_7c8;
  undefined4 uStack_7c4;
  undefined *puStack_7c0;
  undefined local_530 [16];
  undefined local_520 [16];
  undefined local_510 [16];
  undefined local_500 [16];
  undefined local_4f0 [16];
  undefined local_4e0 [16];
  undefined local_4d0 [16];
  undefined local_4c0 [16];
  undefined local_4b0 [16];
  undefined local_4a0 [16];
  undefined local_490 [16];
  undefined local_480 [16];
  undefined local_470 [16];
  undefined local_460 [16];
  undefined local_450 [16];
  undefined local_440 [16];
  undefined local_430 [16];
  undefined local_420 [16];
  undefined local_410 [16];
  undefined local_400 [16];
  undefined local_3f0 [16];
  undefined local_3e0 [16];
  undefined local_3d0 [16];
  undefined local_3c0 [16];
  undefined local_3b0 [16];
  undefined local_3a0 [16];
  undefined local_390 [16];
  undefined local_380 [16];
  undefined local_370 [16];
  undefined local_360 [16];
  undefined local_350 [16];
  undefined local_340 [16];
  undefined local_330 [16];
  undefined local_320 [16];
  undefined local_310 [20];
  undefined4 local_2fc;
  undefined4 uStack_2f8;
  undefined4 uStack_2f4;
  undefined4 uStack_2f0;
  undefined4 local_2ec;
  undefined4 uStack_2e8;
  undefined4 uStack_2e4;
  undefined4 uStack_2e0;
  undefined4 local_2dc;
  undefined4 uStack_2d8;
  undefined4 uStack_2d4;
  undefined4 uStack_2d0;
  undefined4 local_2cc;
  undefined4 uStack_2c8;
  undefined4 uStack_2c4;
  undefined4 uStack_2c0;
  undefined4 local_2bc;
  undefined4 uStack_2b8;
  undefined4 uStack_2b4;
  undefined4 uStack_2b0;
  undefined4 local_2ac;
  undefined4 uStack_2a8;
  undefined4 uStack_2a4;
  undefined4 uStack_2a0;
  undefined4 local_29c;
  undefined4 uStack_298;
  undefined4 uStack_294;
  undefined4 uStack_290;
  undefined4 local_28c;
  undefined4 uStack_288;
  undefined4 uStack_284;
  undefined4 uStack_280;
  undefined4 local_27c;
  undefined4 uStack_278;
  undefined4 uStack_274;
  undefined4 uStack_270;
  undefined4 local_26c;
  undefined4 uStack_268;
  undefined4 uStack_264;
  undefined4 uStack_260;
  undefined4 local_25c;
  undefined4 uStack_258;
  undefined4 uStack_254;
  undefined4 uStack_250;
  undefined4 local_24c;
  undefined4 uStack_248;
  undefined4 uStack_244;
  undefined4 uStack_240;
  undefined4 local_23c;
  undefined4 uStack_238;
  undefined4 uStack_234;
  undefined4 uStack_230;
  undefined4 local_22c;
  undefined4 uStack_228;
  undefined4 uStack_224;
  undefined4 uStack_220;
  undefined4 local_21c;
  undefined4 uStack_218;
  undefined4 uStack_214;
  undefined4 uStack_210;
  undefined4 local_20c;
  undefined4 uStack_208;
  undefined4 uStack_204;
  undefined4 uStack_200;
  undefined4 local_1fc;
  undefined4 uStack_1f8;
  undefined4 uStack_1f4;
  undefined4 uStack_1f0;
  undefined4 local_1ec;
  undefined4 uStack_1e8;
  undefined4 uStack_1e4;
  undefined4 uStack_1e0;
  undefined4 local_1dc;
  undefined4 uStack_1d8;
  undefined4 uStack_1d4;
  undefined4 uStack_1d0;
  undefined4 local_1cc;
  undefined4 uStack_1c8;
  undefined4 uStack_1c4;
  undefined4 uStack_1c0;
  undefined4 local_1bc;
  undefined4 uStack_1b8;
  undefined4 uStack_1b4;
  undefined4 uStack_1b0;
  undefined4 local_1ac;
  undefined4 uStack_1a8;
  undefined4 uStack_1a4;
  undefined4 uStack_1a0;
  undefined4 local_19c;
  undefined4 uStack_198;
  undefined4 uStack_194;
  undefined4 uStack_190;
  undefined4 local_18c;
  undefined4 uStack_188;
  undefined4 uStack_184;
  undefined4 uStack_180;
  undefined4 local_17c;
  undefined4 uStack_178;
  undefined4 uStack_174;
  undefined4 uStack_170;
  undefined4 local_16c;
  undefined4 uStack_168;
  undefined4 uStack_164;
  undefined4 uStack_160;
  undefined4 local_15c;
  undefined4 uStack_158;
  undefined4 uStack_154;
  undefined4 uStack_150;
  undefined4 local_14c;
  undefined4 uStack_148;
  undefined4 uStack_144;
  undefined4 uStack_140;
  undefined4 local_13c;
  undefined4 uStack_138;
  undefined4 uStack_134;
  undefined4 uStack_130;
  undefined4 local_12c;
  undefined4 uStack_128;
  undefined4 uStack_124;
  undefined4 uStack_120;
  undefined4 local_11c;
  undefined4 uStack_118;
  undefined4 uStack_114;
  undefined4 uStack_110;
  undefined4 local_10c;
  undefined4 uStack_108;
  undefined4 uStack_104;
  undefined4 uStack_100;
  undefined *local_fc;
  undefined4 local_f8;
  undefined4 local_f4;
  undefined4 local_f0;
  undefined *local_ec;
  undefined4 local_e8;
  undefined4 local_e4;
  undefined4 local_e0;
  undefined *local_dc;
  undefined4 local_d8;
  undefined4 local_d4;
  undefined4 local_d0;
  undefined *local_cc;
  undefined4 local_c8;
  undefined4 local_c4;
  undefined **local_c0;
  undefined **local_bc;
  undefined **local_b8;
  undefined **local_b4;
  undefined **local_b0;
  undefined4 *local_ac;
  int *local_a8;
  int *local_a4;
  undefined4 *local_a0;
  undefined4 *local_9c;
  undefined4 *local_98;
  undefined4 *local_94;
  undefined4 *local_90;
  undefined4 *local_8c;
  undefined4 *local_88;
  undefined4 *local_84;
  undefined4 *local_80;
  undefined4 *local_7c;
  undefined4 *local_78;
  undefined4 *local_74;
  undefined4 *local_70;
  undefined4 *local_6c;
  undefined4 *local_68;
  undefined4 *local_64;
  undefined4 *local_60;
  undefined4 *local_5c;
  undefined4 *local_58;
  undefined4 *local_54;
  undefined4 *local_50;
  undefined4 *local_4c;
  undefined4 *local_48;
  undefined4 *local_44;
  undefined4 *local_40;
  undefined4 *local_3c;
  undefined4 *local_38;
  undefined4 *local_34;
  undefined4 *local_30;
  undefined4 *local_2c;
  undefined4 local_28;
  undefined *local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x79c;
  local_8 = 0x7c34ef;
  puStack_7c0 = (undefined *)0x0;
  uStack_7c4 = 1;
  puStack_7c8 = (undefined *)0x7c3503;
  local_a4 = param_1;
  ppiVar2 = (int **)FUN_00418daa();
  if (ppiVar2 == (int **)0x0) {
    ppiVar2 = (int **)0x0;
  }
  else {
    *ppiVar2 = param_1;
  }
  *param_1 = (int)ppiVar2;
  local_8 = 0;
  puStack_7c0 = (undefined *)0x7c3519;
  iVar3 = FUN_0047beaa();
  piVar1 = param_1 + 6;
  *piVar1 = iVar3;
  *(undefined *)(iVar3 + 0x41) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[7] = 0;
  puStack_7c0 = local_520;
  local_8 = 1;
  uStack_7c4 = 0x7c3541;
  puVar4 = (undefined4 *)FUN_0047b1e8();
  local_f0 = *puVar4;
  local_ec = (undefined *)puVar4[1];
  local_e8 = puVar4[2];
  puStack_7c0 = local_330;
  local_e4 = puVar4[3];
  uStack_7c4 = 0x7c355a;
  puVar4 = (undefined4 *)FUN_0047b1a4();
  local_e0 = *puVar4;
  local_dc = (undefined *)puVar4[1];
  local_d8 = puVar4[2];
  puStack_7c0 = local_510;
  local_d4 = puVar4[3];
  uStack_7c4 = 0x7c3573;
  puVar4 = (undefined4 *)FUN_0042206e();
  local_d0 = *puVar4;
  local_cc = (undefined *)puVar4[1];
  local_c8 = puVar4[2];
  puStack_7c0 = local_350;
  local_c4 = puVar4[3];
  uStack_7c4 = 0x7c358c;
  puVar4 = (undefined4 *)FUN_00421152();
  local_27c = *puVar4;
  uStack_278 = puVar4[1];
  uStack_274 = puVar4[2];
  puStack_7c0 = local_530;
  uStack_270 = puVar4[3];
  uStack_7c4 = 0x7c35a5;
  puVar4 = (undefined4 *)FUN_0042110e();
  local_12c = *puVar4;
  uStack_128 = puVar4[1];
  uStack_124 = puVar4[2];
  puStack_7c0 = local_4c0;
  uStack_120 = puVar4[3];
  uStack_7c4 = 0x7c35be;
  puVar4 = (undefined4 *)FUN_004210ca();
  local_28c = *puVar4;
  uStack_288 = puVar4[1];
  uStack_284 = puVar4[2];
  puStack_7c0 = local_380;
  uStack_280 = puVar4[3];
  uStack_7c4 = 0x7c35d7;
  puVar4 = (undefined4 *)FUN_00421e44();
  local_14c = *puVar4;
  uStack_148 = puVar4[1];
  uStack_144 = puVar4[2];
  puStack_7c0 = local_460;
  uStack_140 = puVar4[3];
  uStack_7c4 = 0x7c35f0;
  puVar4 = (undefined4 *)FUN_004196a6();
  local_22c = *puVar4;
  uStack_228 = puVar4[1];
  uStack_224 = puVar4[2];
  puStack_7c0 = local_3a0;
  uStack_220 = puVar4[3];
  uStack_7c4 = 0x7c3609;
  puVar4 = (undefined4 *)FUN_00419610();
  local_16c = *puVar4;
  uStack_168 = puVar4[1];
  uStack_164 = puVar4[2];
  puStack_7c0 = local_500;
  uStack_160 = puVar4[3];
  uStack_7c4 = 0x7c3622;
  puVar4 = (undefined4 *)FUN_0041957a();
  local_2cc = *puVar4;
  uStack_2c8 = puVar4[1];
  uStack_2c4 = puVar4[2];
  puStack_7c0 = local_3c0;
  uStack_2c0 = puVar4[3];
  uStack_7c4 = 0x7c363b;
  puVar4 = (undefined4 *)FUN_004194e7();
  local_18c = *puVar4;
  uStack_188 = puVar4[1];
  uStack_184 = puVar4[2];
  puStack_7c0 = local_480;
  uStack_180 = puVar4[3];
  uStack_7c4 = 0x7c3654;
  puVar4 = (undefined4 *)FUN_00419759();
  local_24c = *puVar4;
  uStack_248 = puVar4[1];
  uStack_244 = puVar4[2];
  puStack_7c0 = local_3e0;
  uStack_240 = puVar4[3];
  uStack_7c4 = 0x7c366d;
  puVar4 = (undefined4 *)FUN_0047b160();
  local_1ac = *puVar4;
  uStack_1a8 = puVar4[1];
  uStack_1a4 = puVar4[2];
  puStack_7c0 = local_4e0;
  uStack_1a0 = puVar4[3];
  uStack_7c4 = 0x7c3686;
  puVar4 = (undefined4 *)FUN_0047b11c();
  local_2ac = *puVar4;
  uStack_2a8 = puVar4[1];
  uStack_2a4 = puVar4[2];
  puStack_7c0 = local_400;
  uStack_2a0 = puVar4[3];
  uStack_7c4 = 0x7c369f;
  puVar4 = (undefined4 *)FUN_0047b0d8();
  local_1cc = *puVar4;
  uStack_1c8 = puVar4[1];
  uStack_1c4 = puVar4[2];
  puStack_7c0 = local_4a0;
  uStack_1c0 = puVar4[3];
  uStack_7c4 = 0x7c36b8;
  puVar4 = (undefined4 *)FUN_0047b094();
  local_26c = *puVar4;
  uStack_268 = puVar4[1];
  uStack_264 = puVar4[2];
  puStack_7c0 = local_420;
  uStack_260 = puVar4[3];
  uStack_7c4 = 0x7c36d1;
  puVar4 = (undefined4 *)FUN_0047b050();
  local_1ec = *puVar4;
  uStack_1e8 = puVar4[1];
  uStack_1e4 = puVar4[2];
  puStack_7c0 = local_310;
  uStack_1e0 = puVar4[3];
  local_28 = 0xb5e50da2;
  local_24 = (undefined *)0x2a443d2a;
  local_20 = 0x334c91fe;
  local_1c = 0xb3ba9ca0;
  uStack_7c4 = 0x7c372a;
  puVar4 = (undefined4 *)FUN_0047b00c();
  local_2ec = *puVar4;
  uStack_2e8 = puVar4[1];
  uStack_2e4 = puVar4[2];
  puStack_7c0 = local_440;
  uStack_2e0 = puVar4[3];
  uStack_7c4 = 0x7c3743;
  puVar4 = (undefined4 *)FUN_0047af84();
  local_20c = *puVar4;
  uStack_208 = puVar4[1];
  uStack_204 = puVar4[2];
  puStack_7c0 = local_360;
  uStack_200 = puVar4[3];
  uStack_7c4 = 0x7c375c;
  puVar4 = (undefined4 *)FUN_0047af40();
  local_11c = *puVar4;
  uStack_118 = puVar4[1];
  uStack_114 = puVar4[2];
  puStack_7c0 = local_370;
  uStack_110 = puVar4[3];
  uStack_7c4 = 0x7c3775;
  puVar4 = (undefined4 *)FUN_00413fc2();
  local_13c = *puVar4;
  uStack_138 = puVar4[1];
  uStack_134 = puVar4[2];
  uStack_130 = puVar4[3];
  puStack_7c0 = local_390;
  uStack_7c4 = 0x7c378e;
  puVar4 = (undefined4 *)FUN_0047ae74();
  local_15c = *puVar4;
  uStack_158 = puVar4[1];
  uStack_154 = puVar4[2];
  puStack_7c0 = local_3b0;
  uStack_150 = puVar4[3];
  uStack_7c4 = 0x7c37a7;
  puVar4 = (undefined4 *)FUN_0047aeb8();
  local_17c = *puVar4;
  uStack_178 = puVar4[1];
  uStack_174 = puVar4[2];
  puStack_7c0 = local_3d0;
  uStack_170 = puVar4[3];
  uStack_7c4 = 0x7c37c0;
  puVar4 = (undefined4 *)FUN_0041a1fb();
  local_19c = *puVar4;
  uStack_198 = puVar4[1];
  uStack_194 = puVar4[2];
  puStack_7c0 = local_3f0;
  uStack_190 = puVar4[3];
  uStack_7c4 = 0x7c37d9;
  puVar4 = (undefined4 *)FUN_004197ef();
  local_1bc = *puVar4;
  uStack_1b8 = puVar4[1];
  uStack_1b4 = puVar4[2];
  puStack_7c0 = local_410;
  uStack_1b0 = puVar4[3];
  uStack_7c4 = 0x7c37f2;
  puVar4 = (undefined4 *)FUN_0041933f();
  local_1dc = *puVar4;
  uStack_1d8 = puVar4[1];
  uStack_1d4 = puVar4[2];
  puStack_7c0 = local_430;
  uStack_1d0 = puVar4[3];
  uStack_7c4 = 0x7c380b;
  puVar4 = (undefined4 *)FUN_00418bf1();
  local_1fc = *puVar4;
  uStack_1f8 = puVar4[1];
  uStack_1f4 = puVar4[2];
  puStack_7c0 = local_450;
  uStack_1f0 = puVar4[3];
  uStack_7c4 = 0x7c3824;
  puVar4 = (undefined4 *)FUN_00418c79();
  local_21c = *puVar4;
  uStack_218 = puVar4[1];
  uStack_214 = puVar4[2];
  puStack_7c0 = local_470;
  uStack_210 = puVar4[3];
  uStack_7c4 = 0x7c383d;
  puVar4 = (undefined4 *)FUN_00418c35();
  local_23c = *puVar4;
  uStack_238 = puVar4[1];
  uStack_234 = puVar4[2];
  puStack_7c0 = local_490;
  uStack_230 = puVar4[3];
  uStack_7c4 = 0x7c3856;
  puVar4 = (undefined4 *)FUN_0047ad64();
  local_25c = *puVar4;
  uStack_258 = puVar4[1];
  uStack_254 = puVar4[2];
  puStack_7c0 = local_4b0;
  uStack_250 = puVar4[3];
  uStack_7c4 = 0x7c386f;
  puVar4 = (undefined4 *)FUN_0047ad20();
  local_10c = *puVar4;
  uStack_108 = puVar4[1];
  uStack_104 = puVar4[2];
  puStack_7c0 = local_4d0;
  uStack_100 = puVar4[3];
  uStack_7c4 = 0x7c3888;
  puVar4 = (undefined4 *)FUN_0047ada8();
  local_29c = *puVar4;
  uStack_298 = puVar4[1];
  uStack_294 = puVar4[2];
  puStack_7c0 = local_4f0;
  uStack_290 = puVar4[3];
  uStack_7c4 = 0x7c38a1;
  puVar4 = (undefined4 *)FUN_0047acdc();
  local_2bc = *puVar4;
  uStack_2b8 = puVar4[1];
  uStack_2b4 = puVar4[2];
  puStack_7c0 = local_320;
  uStack_2b0 = puVar4[3];
  uStack_7c4 = 0x7c38ba;
  puVar4 = (undefined4 *)FUN_0047ac98();
  local_2dc = *puVar4;
  uStack_2d8 = puVar4[1];
  uStack_2d4 = puVar4[2];
  puStack_7c0 = local_340;
  uStack_2d0 = puVar4[3];
  uStack_7c4 = 0x7c38d3;
  puVar4 = (undefined4 *)FUN_0047ac54();
  local_2fc = *puVar4;
  uStack_2f8 = puVar4[1];
  uStack_2f4 = puVar4[2];
  uStack_2f0 = puVar4[3];
  uStack_7cc = local_f0;
  puStack_7c8 = local_ec;
  uStack_7c4 = local_e8;
  puStack_7c0 = (undefined *)local_e4;
  uStack_7dc = local_e0;
  puStack_7d8 = local_dc;
  uStack_7d4 = local_d8;
  local_c0 = &local_fc;
  local_fc = &LAB_007c456d;
  local_f4 = 0x20b;
  local_f8 = 0xa0c;
  uStack_7d0 = local_d4;
  local_7e4 = 0xa0d;
  local_7e0 = 0x2e;
  local_74 = &local_7ec;
  local_7ec = 0xa0c;
  local_7e8 = (undefined *)0x1cc;
  local_7f0 = (uint)DAT_032ef5a8;
  local_7f4 = 0x7c395f;
  local_74 = (undefined4 *)FUN_007c51a5();
  local_7ec = local_d0;
  local_7f4 = 0xa0d;
  local_7f0 = 0x2e;
  local_a0 = &local_7fc;
  local_7e8 = local_cc;
  local_7fc = 0xa0c;
  local_7f8 = 0x14f;
  local_800 = (uint)DAT_032ef5a8;
  local_7e4 = local_c8;
  local_7e0 = local_c4;
  local_804 = 0x7c39ae;
  local_a0 = (undefined4 *)FUN_007c51a5();
  local_7fc = local_27c;
  local_804 = 0xa0d;
  local_800 = 0x2e;
  local_98 = &local_80c;
  local_7f8 = uStack_278;
  local_80c = 0xa0c;
  local_808 = 0x14e;
  local_810 = (uint)DAT_032ef5a8;
  local_7f4 = uStack_274;
  local_7f0 = uStack_270;
  local_814 = 0x7c3a00;
  local_98 = (undefined4 *)FUN_007c51a5();
  local_80c = local_12c;
  local_808 = uStack_128;
  local_814 = 0xa0d;
  local_810 = 0x2e;
  local_90 = &local_81c;
  local_804 = uStack_124;
  local_81c = 0xa0c;
  local_818 = 99;
  local_820 = (uint)DAT_032ef5a8;
  local_800 = uStack_120;
  local_824 = 0x7c3a52;
  local_90 = (undefined4 *)FUN_007c51a5();
  local_81c = local_28c;
  local_824 = 0xa0d;
  local_820 = 0x2e;
  local_88 = &local_82c;
  local_818 = uStack_288;
  local_82c = 0xa0c;
  local_828 = 0x62;
  local_830 = (uint)DAT_032ef5a8;
  local_814 = uStack_284;
  local_810 = uStack_280;
  local_834 = 0x7c3aa4;
  local_88 = (undefined4 *)FUN_007c51a5();
  local_82c = local_14c;
  local_834 = 0xa0d;
  local_830 = 0x2e;
  local_80 = &local_83c;
  local_828 = uStack_148;
  local_83c = 0xa0c;
  local_838 = 0x61;
  local_840 = (uint)DAT_032ef5a8;
  local_824 = uStack_144;
  local_820 = uStack_140;
  local_844 = 0x7c3af0;
  local_80 = (undefined4 *)FUN_007c51a5();
  local_83c = local_22c;
  local_844 = 0xa0d;
  local_840 = 0x2e;
  local_78 = &local_84c;
  local_838 = uStack_228;
  local_84c = 0xa0c;
  local_848 = 0x186;
  local_850 = (uint)DAT_032ef5a8;
  local_834 = uStack_224;
  local_830 = uStack_220;
  local_854 = 0x7c3b39;
  local_78 = (undefined4 *)FUN_007c51a5();
  local_84c = local_16c;
  local_848 = uStack_168;
  local_854 = 0xa0d;
  local_850 = 0x2e;
  local_6c = &local_85c;
  local_85c = 0xa0c;
  local_858 = 0x185;
  local_860 = (uint)DAT_032ef5a8;
  local_844 = uStack_164;
  local_840 = uStack_160;
  local_864 = 0x7c3b82;
  local_6c = (undefined4 *)FUN_007c51a5();
  local_85c = local_2cc;
  local_864 = 0xa0d;
  local_860 = 0x2e;
  local_58 = &local_86c;
  local_858 = uStack_2c8;
  local_86c = 0xa0c;
  local_868 = 0x184;
  local_870 = (uint)DAT_032ef5a8;
  local_854 = uStack_2c4;
  local_850 = uStack_2c0;
  local_874 = 0x7c3bcb;
  local_58 = (undefined4 *)FUN_007c51a5();
  local_86c = local_18c;
  local_874 = 0xa0d;
  local_870 = 0x2e;
  local_50 = &local_87c;
  local_868 = uStack_188;
  local_87c = 0xa0c;
  local_878 = 0x183;
  local_880 = (uint)DAT_032ef5a8;
  local_864 = uStack_184;
  local_860 = uStack_180;
  local_884 = 0x7c3c14;
  local_50 = (undefined4 *)FUN_007c51a5();
  local_87c = local_24c;
  local_878 = uStack_248;
  local_874 = uStack_244;
  local_870 = uStack_240;
  local_884 = 0xa0d;
  local_880 = 0x2e;
  local_48 = &local_88c;
  local_88c = 0xa0c;
  local_888 = 0x5a;
  local_890 = (uint)DAT_032ef5a8;
  local_894 = 0x7c3c5d;
  local_48 = (undefined4 *)FUN_007c51a5();
  local_88c = local_1ac;
  local_894 = 0xa0d;
  local_890 = 0x2e;
  local_40 = &local_89c;
  local_888 = uStack_1a8;
  local_89c = 0xa0c;
  local_898 = 0x170;
  local_8a0 = (uint)DAT_032ef5a8;
  local_884 = uStack_1a4;
  local_880 = uStack_1a0;
  local_8a4 = 0x7c3ca6;
  local_40 = (undefined4 *)FUN_007c51a5();
  local_89c = local_2ac;
  local_8a4 = 0xa0d;
  local_8a0 = 0x2e;
  local_38 = &local_8ac;
  local_898 = uStack_2a8;
  local_8ac = 0xa0c;
  local_8a8 = 0x170;
  local_8b0 = (uint)DAT_032ef5a8;
  local_894 = uStack_2a4;
  local_890 = uStack_2a0;
  local_8b4 = 0x7c3cef;
  local_38 = (undefined4 *)FUN_007c51a5();
  local_8ac = local_1cc;
  local_8b4 = 0xa0d;
  local_8b0 = 0x2e;
  local_70 = &local_8bc;
  local_8a8 = uStack_1c8;
  local_8bc = 0xa0c;
  local_8b8 = 0x170;
  local_8c0 = (uint)DAT_032ef5a8;
  local_8a4 = uStack_1c4;
  local_8a0 = uStack_1c0;
  local_8c4 = 0x7c3d38;
  local_70 = (undefined4 *)FUN_007c51a5();
  local_8bc = local_26c;
  local_8c4 = 0xa0d;
  local_8c0 = 0x2e;
  local_34 = &local_8cc;
  local_8b8 = uStack_268;
  local_8cc = 0xa0c;
  local_8c8 = 0x196;
  local_8d0 = (uint)DAT_032ef5a8;
  local_8b4 = uStack_264;
  local_8b0 = uStack_260;
  local_8d4 = 0x7c3d81;
  local_34 = (undefined4 *)FUN_007c51a5();
  local_8cc = local_1ec;
  local_8d4 = 0xa0d;
  local_8d0 = 0x2e;
  local_94 = &local_8dc;
  local_8c8 = uStack_1e8;
  local_8dc = 0xa0c;
  local_8d8 = (undefined *)0x170;
  local_8e0 = (uint)DAT_032ef5a8;
  local_8c4 = uStack_1e4;
  local_8c0 = uStack_1e0;
  local_8e4 = 0x7c3dd0;
  local_94 = (undefined4 *)FUN_007c51a5();
  local_8dc = local_28;
  local_8e4 = 0xa0d;
  local_8e0 = 0x2e;
  local_68 = &local_8ec;
  local_8d8 = local_24;
  local_8ec = 0xa0c;
  local_8e8 = 0x170;
  uStack_8f0 = (uint)DAT_032ef5a8;
  local_8d4 = local_20;
  local_8d0 = local_1c;
  uStack_8f4 = 0x7c3e19;
  local_68 = (undefined4 *)FUN_007c51a5();
  local_8ec = local_2ec;
  local_8e8 = uStack_2e8;
  local_8e4 = uStack_2e4;
  local_8e0 = uStack_2e0;
  uStack_8fc = local_20c;
  uStack_8f8 = uStack_208;
  uStack_8f4 = uStack_204;
  uStack_8f0 = uStack_200;
  uStack_90c = local_11c;
  uStack_908 = uStack_118;
  uStack_904 = uStack_114;
  uStack_900 = uStack_110;
  uStack_91c = local_13c;
  uStack_918 = uStack_138;
  uStack_914 = uStack_134;
  local_b4 = &local_cc;
  uStack_910 = uStack_130;
  local_b0 = &local_dc;
  local_cc = &LAB_007c456d;
  local_dc = &LAB_007c456d;
  local_ec = &LAB_007c456d;
  local_24 = &LAB_007c456d;
  local_bc = &local_ec;
  local_b8 = &local_24;
  uStack_92c = local_15c;
  local_934 = 0xa0d;
  local_930 = 0x2e;
  local_84 = &local_93c;
  uStack_928 = uStack_158;
  local_93c = 0xa0c;
  local_938 = 0x187;
  local_940 = (uint)DAT_032ef5a8;
  uStack_924 = uStack_154;
  local_c4 = 0x211;
  local_c8 = 0xa0c;
  local_d4 = 0x17b;
  local_d8 = 0xa0c;
  local_e4 = 0x17a;
  local_e8 = 0xa0c;
  local_1c = 0x14b;
  local_20 = 0xa0c;
  uStack_920 = uStack_150;
  local_944 = 0x7c3f1f;
  local_84 = (undefined4 *)FUN_007c51a5();
  local_93c = local_17c;
  local_938 = uStack_178;
  local_934 = uStack_174;
  local_930 = uStack_170;
  local_944 = 0xa0d;
  local_940 = 0x2e;
  local_94c = 0xa0d;
  local_948 = 0x2e;
  local_30 = &local_954;
  local_954 = 0xa0c;
  local_950 = 0x5f;
  local_958 = (uint)DAT_032ef5a8;
  local_95c = 0x7c3f72;
  local_30 = (undefined4 *)FUN_007c5209();
  local_954 = 0xa0d;
  local_950 = 0x2e;
  local_94c = local_19c;
  local_948 = uStack_198;
  local_95c = 0xa0d;
  local_958 = 0x2e;
  local_2c = &local_964;
  local_944 = uStack_194;
  local_964 = 0xa0c;
  local_960 = 0x5e;
  local_968 = (uint)DAT_032ef5a8;
  local_940 = uStack_190;
  local_96c = 0x7c3fc5;
  local_2c = (undefined4 *)FUN_007c5209();
  local_95c = local_1bc;
  local_964 = 0xa0d;
  local_960 = 0x2e;
  local_5c = &local_96c;
  local_958 = uStack_1b8;
  local_96c = 0xa0c;
  local_968 = 0x5c;
  local_970 = (uint)DAT_032ef5a8;
  local_954 = uStack_1b4;
  local_950 = uStack_1b0;
  local_974 = 0x7c400e;
  local_5c = (undefined4 *)FUN_007c51a5();
  local_96c = local_1dc;
  local_968 = uStack_1d8;
  local_964 = uStack_1d4;
  local_960 = uStack_1d0;
  local_974 = 0xa0d;
  local_970 = 0x2e;
  local_54 = &local_97c;
  local_97c = 0xa0c;
  local_978 = 0x5b;
  local_980 = (uint)DAT_032ef5a8;
  local_984 = 0x7c4057;
  local_54 = (undefined4 *)FUN_007c51a5();
  local_97c = local_1fc;
  local_984 = 0xa0d;
  local_980 = 0x2e;
  local_9c = &local_98c;
  local_978 = uStack_1f8;
  local_98c = 0xa0c;
  local_988 = 0x59;
  local_990 = (uint)DAT_032ef5a8;
  local_974 = uStack_1f4;
  local_970 = uStack_1f0;
  local_994 = 0x7c40a6;
  local_9c = (undefined4 *)FUN_007c51a5();
  local_98c = local_21c;
  local_994 = 0xa0d;
  local_990 = 0x2e;
  local_4c = &local_99c;
  local_988 = uStack_218;
  local_99c = 0xa0c;
  local_998 = 0x57;
  local_9a0 = (uint)DAT_032ef5a8;
  local_984 = uStack_214;
  local_980 = uStack_210;
  local_9a4 = 0x7c40f2;
  local_4c = (undefined4 *)FUN_007c51a5();
  local_99c = local_23c;
  local_998 = uStack_238;
  local_994 = uStack_234;
  local_7c = &local_9ac;
  local_990 = uStack_230;
  local_9a4 = 0xa0d;
  local_9a0 = 0x2e;
  local_9ac = 0xa0c;
  local_9a8 = 0x58;
  local_9b0 = (uint)DAT_032ef5a8;
  local_9b4 = 0x7c413b;
  local_7c = (undefined4 *)FUN_007c51a5();
  local_9ac = local_25c;
  local_9b4 = 0xa0d;
  local_9b0 = 0x2d;
  local_44 = &local_9bc;
  local_9a8 = uStack_258;
  local_9bc = 0xa0c;
  local_9b8 = 0x1d2;
  local_9c0 = (uint)DAT_032ef5a8;
  local_9a4 = uStack_254;
  local_9a0 = uStack_250;
  local_9c4 = 0x7c4184;
  local_44 = (undefined4 *)FUN_007c51a5();
  local_9bc = local_10c;
  local_9c4 = 0xa0d;
  local_9c0 = 0x2d;
  local_8c = &local_9cc;
  local_9b8 = uStack_108;
  local_9cc = 0xa0c;
  local_9c8 = 0x1d3;
  local_9d0 = (uint)DAT_032ef5a8;
  local_9b4 = uStack_104;
  local_9b0 = uStack_100;
  local_9d4 = 0x7c41d3;
  local_8c = (undefined4 *)FUN_007c51a5();
  local_9cc = local_29c;
  local_9d4 = 0xa0d;
  local_9d0 = 0x2d;
  local_3c = &local_9dc;
  local_9c8 = uStack_298;
  local_9dc = 0xa0c;
  local_9d8 = 0x1ca;
  local_9e0 = (uint)DAT_032ef5a8;
  local_9c4 = uStack_294;
  local_9c0 = uStack_290;
  local_9e4 = 0x7c421f;
  local_3c = (undefined4 *)FUN_007c51a5();
  local_9dc = local_2bc;
  local_9e4 = 0xa0d;
  local_9e0 = 0x2d;
  local_60 = &local_9ec;
  local_9d8 = uStack_2b8;
  local_9ec = 0xa0c;
  local_9e8 = 0x56;
  local_9f0 = (uint)DAT_032ef5a8;
  local_9d4 = uStack_2b4;
  local_9d0 = uStack_2b0;
  local_9f4 = 0x7c4268;
  local_60 = (undefined4 *)FUN_007c51a5();
  local_9ec = local_2dc;
  local_9f4 = 0xa0d;
  local_9f0 = 0x2d;
  local_64 = &local_9fc;
  local_9e8 = uStack_2d8;
  local_9fc = 0xa0c;
  local_9f8 = 0x55;
  local_a00 = (uint)DAT_032ef5a8;
  local_9e4 = uStack_2d4;
  local_9e0 = uStack_2d0;
  local_a04 = 0x7c42b1;
  local_64 = (undefined4 *)FUN_007c51a5();
  local_9fc = local_2fc;
  local_a04 = 0xa0d;
  local_a00 = 0x2d;
  local_ac = &local_a0c;
  local_9f8 = uStack_2f8;
  local_a0c = 0xa0c;
  local_a08 = 0x54;
  local_9f4 = uStack_2f4;
  local_9f0 = uStack_2f0;
  FUN_007c51a5(DAT_032ef5a8);
  local_a8 = local_a4;
  local_a00 = 0x7c431c;
  FUN_007c51c8();
  local_9f0 = 0x7c4326;
  FUN_007c51c8();
  local_9e0 = 0x7c4330;
  FUN_007c51c8();
  local_9d0 = 0x7c433a;
  FUN_007c51c8();
  local_9c0 = 0x7c4347;
  FUN_007c51c8();
  local_9b0 = 0x7c4351;
  FUN_007c51c8();
  local_9a0 = 0x7c435b;
  FUN_007c51c8();
  local_990 = 0x7c4365;
  FUN_007c51c8();
  local_980 = 0x7c4372;
  FUN_007c51c8();
  local_970 = 0x7c437c;
  FUN_007c51c8();
  local_960 = 0x7c4386;
  FUN_007c51c8();
  local_950 = 0x7c4390;
  FUN_007c5248();
  local_940 = 0x7c439a;
  FUN_007c5248();
  local_930 = 0x7c43a4;
  FUN_007c51c8();
  uStack_920 = 0x7c43b1;
  FUN_007c528a();
  uStack_910 = 0x7c43be;
  FUN_007c528a();
  uStack_900 = 0x7c43cb;
  FUN_007c528a();
  uStack_8f0 = 0x7c43d8;
  FUN_007c528a();
  local_8e0 = 0x7c43e2;
  FUN_007c51c8();
  local_8d0 = 0x7c43ef;
  FUN_007c51c8();
  local_8c0 = 0x7c43f9;
  FUN_007c51c8();
  local_8b0 = 0x7c4403;
  FUN_007c51c8();
  local_8a0 = 0x7c440d;
  FUN_007c51c8();
  local_890 = 0x7c4417;
  FUN_007c51c8();
  local_880 = 0x7c4421;
  FUN_007c51c8();
  local_870 = 0x7c442b;
  FUN_007c51c8();
  local_860 = 0x7c4435;
  FUN_007c51c8();
  local_850 = 0x7c443f;
  FUN_007c51c8();
  local_840 = 0x7c4449;
  FUN_007c51c8();
  local_830 = 0x7c4453;
  FUN_007c51c8();
  local_820 = 0x7c4460;
  FUN_007c51c8();
  local_810 = 0x7c446d;
  FUN_007c51c8();
  local_800 = 0x7c447a;
  FUN_007c51c8();
  local_7f0 = 0x7c4487;
  FUN_007c51c8();
  local_7e0 = 0x7c4491;
  FUN_007c51c8();
  uStack_7d0 = 0x7c449e;
  FUN_007c528a();
  return local_a4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_007c4c3c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7c4c54;
  FUN_007c4cd7();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007c4c5b;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007c44af(int **param_1_00,undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  undefined4 *puVar3;
  int *local_1c;
  int *local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7c44bb;
  local_14 = 0;
  FUN_0047bd20();
  piVar1 = param_1_00[6];
  if ((local_1c == (int *)0x0) || (local_1c != *param_1_00)) {
    FUN_00a3fb10();
  }
  if (local_18 != piVar1) {
    if (local_1c == (int *)0x0) {
      FUN_00a3fb10();
      iVar2 = 0;
    }
    else {
      iVar2 = *local_1c;
    }
    if (local_18 == *(int **)(iVar2 + 0x18)) {
      FUN_00a3fb10();
    }
    FUN_007c4c64();
    return param_1;
  }
  puVar3 = (undefined4 *)FUN_00465be3(&local_1c);
  *param_1 = *puVar3;
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007c4c3c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7c4c54;
  FUN_007c4cd7();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007c4c5b;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_007c4c64(uint *param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  uint uVar2;
  undefined4 *puVar3;
  uint *extraout_ECX;
  undefined local_1c [8];
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  local_8 = 0x7c4c70;
  local_14 = 0;
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a();
    local_8 = 1;
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  puVar3 = (undefined4 *)(**(code **)((uVar2 & 0xfffffffe) + 4))(local_1c,param_1_00 + 2,param_2);
  *param_1 = *puVar3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar3 + 1);
}



void FUN_007c4cd7(void)

{
  undefined4 *unaff_ESI;
  
  FUN_007c4d0d(*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_007c4d0d(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int *in_EAX;
  int *unaff_EBX;
  
  iVar1 = *(int *)in_EAX[6];
  if ((param_1 == 0) || (param_1 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_2 == iVar1) {
    iVar1 = in_EAX[6];
    if ((param_3 == 0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_4 == iVar1) {
      FUN_007c505d(*(undefined4 *)(in_EAX[6] + 4));
      *(int *)(in_EAX[6] + 4) = in_EAX[6];
      in_EAX[7] = 0;
      *(int *)in_EAX[6] = in_EAX[6];
      *(int *)(in_EAX[6] + 8) = in_EAX[6];
      unaff_EBX[1] = *(int *)in_EAX[6];
      *unaff_EBX = *in_EAX;
      return;
    }
  }
  while( true ) {
    if ((param_1 == 0) || (param_1 != param_3)) {
      FUN_00a3fb10();
    }
    if (param_2 == param_4) break;
    FUN_00449f5a();
    FUN_007c4dc8();
  }
  *unaff_EBX = *in_EAX;
  unaff_EBX[1] = param_2;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007c4eb3)
// WARNING: Removing unreachable block (ram,0x007c4ec3)
// WARNING: Removing unreachable block (ram,0x007c4ecc)
// WARNING: Removing unreachable block (ram,0x007c4ecf)
// WARNING: Removing unreachable block (ram,0x007c4ebf)
// WARNING: Removing unreachable block (ram,0x007c4edc)
// WARNING: Removing unreachable block (ram,0x007c4eec)
// WARNING: Removing unreachable block (ram,0x007c4ef7)
// WARNING: Removing unreachable block (ram,0x007c4ef3)
// WARNING: Removing unreachable block (ram,0x007c4ee7)
// WARNING: Removing unreachable block (ram,0x007c4efa)

void FUN_007c4dc8(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7c4dd4;
  if (*(char *)((int)param_4 + 0x41) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00449f5a();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x41) == '\0') {
    if (*(char *)(param_4[2] + 0x41) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x41) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x41) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x41) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x41) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x41) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0x10) != '\x01') {
LAB_007c502b:
    FUN_00507e58();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_007c4fdf:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0x10) != '\x01')
     ) goto LAB_007c5027;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0x10) == '\0') {
      *(undefined *)(ppiVar4 + 0x10) = 1;
      *(undefined *)(ppiVar3 + 0x10) = 0;
      FUN_00449c78(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x41) == '\0') {
      if ((*(char *)(*ppiVar4 + 0x10) != '\x01') || (*(char *)(ppiVar4[2] + 0x10) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0x10) == '\x01') {
          *(undefined *)(*ppiVar4 + 0x10) = 1;
          *(undefined *)(ppiVar4 + 0x10) = 0;
          FUN_007c5099(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0x10) = *(undefined *)(ppiVar3 + 0x10);
        *(undefined *)(ppiVar3 + 0x10) = 1;
        *(undefined *)(ppiVar4[2] + 0x10) = 1;
        FUN_00449c78(param_1);
        goto LAB_007c5027;
      }
LAB_007c4fd6:
      *(undefined *)(ppiVar4 + 0x10) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0x10) == '\0') {
      *(undefined *)(ppiVar4 + 0x10) = 1;
      *(undefined *)(ppiVar3 + 0x10) = 0;
      FUN_007c5099(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x41) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0x10) == '\x01') && (*(char *)(*ppiVar4 + 0x10) == '\x01'))
      goto LAB_007c4fd6;
      if (*(char *)(*ppiVar4 + 0x10) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0x10) = 1;
        *(undefined *)(ppiVar4 + 0x10) = 0;
        FUN_00449c78(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0x10) = *(undefined *)(ppiVar3 + 0x10);
      *(undefined *)(ppiVar3 + 0x10) = 1;
      *(undefined *)(*ppiVar4 + 0x10) = 1;
      FUN_007c5099(param_1);
LAB_007c5027:
      *(undefined *)(ppiVar5 + 0x10) = 1;
      goto LAB_007c502b;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_007c4fdf;
}



void FUN_007c505d(int param_1)

{
  if (*(char *)(param_1 + 0x41) == '\0') {
    FUN_007c505d(*(undefined4 *)(param_1 + 8));
    FUN_00507e58();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __thiscall FUN_007c5099(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x41) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

int FUN_007c50db(void)

{
  int iVar1;
  LONG LVar2;
  void *pvVar3;
  int iVar4;
  
  if ((_DAT_032f119c & 1) == 0) {
    _DAT_032f119c = _DAT_032f119c | 1;
    DAT_032f0188 = 0;
    _atexit((_func_4879 *)&LAB_00c75163);
  }
  LVar2 = InterlockedExchangeAdd((LONG *)&DAT_032efea0,0);
  if (LVar2 == 0) {
    FUN_00b9acd0();
    LVar2 = InterlockedExchangeAdd((LONG *)&DAT_032efea0,0);
    if ((LVar2 == 0) && (DAT_032f0188 == 0)) {
      pvVar3 = operator_new(0x20);
      if (pvVar3 == (void *)0x0) {
        iVar4 = 0;
      }
      else {
        iVar4 = FUN_007c34e0();
      }
      iVar1 = DAT_032f0188;
      if ((iVar4 != DAT_032f0188) && (DAT_032f0188 != 0)) {
        FUN_007c4c3c(DAT_032f0188);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      DAT_032f0188 = iVar4;
      InterlockedExchange((LONG *)&DAT_032efea0,1);
    }
    FUN_00b9ac60();
  }
  return DAT_032f0188;
}



void FUN_007c51a5(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  undefined4 *in_EAX;
  
  *in_EAX = &LAB_007c45d0;
  in_EAX[2] = param_3;
  in_EAX[1] = param_2;
  in_EAX[4] = param_5;
  in_EAX[3] = param_4;
  return;
}



void FUN_007c51c8(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 unaff_EBX;
  uint local_20;
  undefined4 local_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_1c = param_1;
  uStack_18 = param_2;
  uStack_14 = param_3;
  uStack_10 = param_4;
  local_20 = local_20 & 0xffffff00;
  FUN_007c52fb(unaff_EBX,&local_1c,local_20);
  ___security_check_cookie_4();
  return;
}



void FUN_007c5209(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = &LAB_007c483a;
  FUN_007c52cc(param_2,param_3,param_4,param_5,param_6,param_7);
  return;
}



void __thiscall
FUN_007c5248(undefined4 param_1_00,undefined4 param_1,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined4 unaff_EBX;
  uint local_20;
  undefined4 local_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_1c = param_1;
  uStack_18 = param_3;
  uStack_14 = param_4;
  uStack_10 = param_5;
  local_20 = local_20 & 0xffffff00;
  FUN_007c53b8(unaff_EBX,&local_1c,param_1_00,local_20);
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_007c528a(undefined4 param_1_00,undefined4 param_1,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined4 unaff_EBX;
  uint local_20;
  undefined4 local_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_1c = param_1;
  uStack_18 = param_3;
  uStack_14 = param_4;
  uStack_10 = param_5;
  local_20 = local_20 & 0xffffff00;
  FUN_007c543b(unaff_EBX,&local_1c,param_1_00,local_20);
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_007c52cc(undefined4 *param_1)

{
  undefined4 *in_EAX;
  
  *in_EAX = 0;
  in_EAX[1] = param_1[1];
  *in_EAX = *param_1;
  in_EAX[2] = 0;
  in_EAX[3] = param_1[3];
  in_EAX[2] = param_1[2];
  in_EAX[4] = 0;
  in_EAX[5] = param_1[5];
  in_EAX[4] = param_1[4];
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c52fb(undefined4 param_1)

{
  char cVar1;
  undefined auStack_108 [40];
  undefined4 uStack_e0;
  undefined *puStack_dc;
  undefined local_50 [24];
  undefined **local_38;
  undefined *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb8;
  local_8 = 0x7c530a;
  puStack_dc = (undefined *)0x7c5315;
  FUN_007c54bc();
  puStack_dc = (undefined *)0x7c5323;
  FUN_007c54bc();
  local_38 = (undefined **)0x0;
  puStack_dc = (undefined *)0x7c5336;
  FUN_007c54bc();
  puStack_dc = (undefined *)0x7c5344;
  FUN_007c54bc();
  puStack_dc = (undefined *)0x7c534f;
  FUN_007c54bc();
  puStack_dc = local_50;
  uStack_e0 = 0x7c5358;
  cVar1 = FUN_007f2630();
  if (cVar1 == '\0') {
    puStack_dc = (undefined *)0x7c536b;
    FUN_007c54bc();
    puStack_dc = (undefined *)0x7c5379;
    FUN_007c54bc();
    local_38 = &PTR_FUN_03059d38;
  }
  else {
    local_38 = (undefined **)0x0;
  }
  local_18 = auStack_108;
  local_8 = 0;
  FUN_007c54e1(auStack_108);
  FUN_007c5502(param_1);
  local_8 = 0xffffffff;
  puStack_dc = (undefined *)0x7c53b0;
  FUN_00507e58();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c53b8(undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined auStack_b4 [16];
  undefined4 uStack_a4;
  undefined4 local_a0;
  undefined4 uStack_88;
  undefined4 local_74;
  undefined4 local_54;
  undefined4 local_34;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8 = 0x7c53c4;
  local_34 = *param_3;
  uStack_88 = 0x7c53d7;
  FUN_007c52cc();
  local_54 = local_34;
  uStack_88 = 0x7c53e8;
  FUN_007c52cc();
  local_74 = 0;
  local_a0 = local_54;
  uStack_a4 = 0x7c5401;
  FUN_007c52cc();
  uStack_a4 = 0x7c5409;
  FUN_007c583a();
  local_8 = 0;
  FUN_007c54e1(auStack_b4);
  FUN_007c5502(param_1);
  local_8 = 0xffffffff;
  uStack_88 = 0x7c5433;
  FUN_00507e58();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c543b(undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  char cVar1;
  undefined auStack_84 [40];
  undefined4 uStack_5c;
  undefined4 *puStack_58;
  undefined **local_44;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  local_8 = 0x7c5447;
  local_24 = *param_3;
  local_1c = param_3[2];
  local_20 = param_3[1];
  puStack_58 = &local_24;
  uStack_5c = 0x7c5464;
  cVar1 = FUN_007f2630();
  if (cVar1 == '\0') {
    local_3c = local_24;
    local_34 = local_1c;
    local_38 = local_20;
    local_44 = &PTR_FUN_03059d48;
  }
  else {
    local_44 = (undefined **)0x0;
  }
  local_8 = 0;
  FUN_007c54e1(auStack_84);
  FUN_007c5502(param_1);
  local_8 = 0xffffffff;
  puStack_58 = (undefined4 *)0x7c54b4;
  FUN_00507e58();
  return;
}



void __fastcall FUN_007c54bc(undefined4 *param_1)

{
  undefined4 *in_EAX;
  
  *in_EAX = *param_1;
  in_EAX[1] = 0;
  in_EAX[2] = param_1[2];
  in_EAX[1] = param_1[1];
  in_EAX[3] = 0;
  in_EAX[4] = param_1[4];
  in_EAX[3] = param_1[3];
  return;
}



undefined4 * FUN_007c54e1(undefined4 *param_1)

{
  undefined4 *in_EAX;
  
  *param_1 = *in_EAX;
  param_1[1] = in_EAX[1];
  param_1[2] = in_EAX[2];
  param_1[3] = in_EAX[3];
  FUN_00672a11();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c5502(undefined4 *param_1)

{
  FUN_007c5537(*param_1,&stack0x00000008);
  FUN_00507e58();
  return;
}



void FUN_007c5537(int *param_1,byte *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  int *unaff_EBX;
  byte *pbVar6;
  undefined4 *puVar7;
  bool bVar8;
  bool bVar9;
  undefined local_1c [4];
  undefined4 *local_18;
  int local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  puVar7 = (undefined4 *)((undefined4 *)param_1[6])[1];
  cVar1 = *(char *)((int)puVar7 + 0x41);
  local_8 = CONCAT31(local_8._1_3_,1);
  local_10 = (undefined4 *)param_1[6];
  while (cVar1 == '\0') {
    iVar4 = 0x10;
    bVar8 = false;
    iVar5 = 0;
    bVar9 = true;
    pbVar6 = param_2;
    puVar2 = puVar7 + 4;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar8 = *pbVar6 < *(byte *)puVar2;
      bVar9 = *pbVar6 == *(byte *)puVar2;
      pbVar6 = pbVar6 + 1;
      puVar2 = (undefined4 *)((int)puVar2 + 1);
    } while (bVar9);
    if (!bVar9) {
      iVar5 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
    }
    local_8._1_3_ = (uint3)((uint)local_8 >> 8);
    if (iVar5 < 0) {
      puVar2 = (undefined4 *)*puVar7;
      local_8 = CONCAT31(local_8._1_3_,1);
    }
    else {
      puVar2 = (undefined4 *)puVar7[2];
      local_8 = (uint)local_8._1_3_ << 8;
    }
    local_10 = puVar7;
    puVar7 = puVar2;
    cVar1 = *(char *)((int)puVar2 + 0x41);
  }
  local_14 = *param_1;
  local_c = local_10;
  if ((char)local_8 == '\0') {
LAB_007c55dd:
    iVar4 = 0x10;
    bVar8 = false;
    iVar5 = 0;
    bVar9 = true;
    puVar7 = local_10 + 4;
    pbVar6 = param_2;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar8 = *(byte *)puVar7 < *pbVar6;
      bVar9 = *(byte *)puVar7 == *pbVar6;
      puVar7 = (undefined4 *)((int)puVar7 + 1);
      pbVar6 = pbVar6 + 1;
    } while (bVar9);
    if (!bVar9) {
      iVar5 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
    }
    iVar4 = local_8;
    if (-1 < iVar5) {
      *(undefined *)(unaff_EBX + 2) = 0;
      goto LAB_007c560a;
    }
  }
  else {
    local_18 = *(undefined4 **)param_1[6];
    if (local_14 == 0) {
      FUN_00a3fb10();
    }
    if (local_c != local_18) {
      FUN_007c5764();
      goto LAB_007c55dd;
    }
    iVar4 = 1;
  }
  piVar3 = (int *)FUN_007c5617(local_1c,iVar4,param_2);
  local_14 = *piVar3;
  local_10 = (undefined4 *)piVar3[1];
  *(undefined *)(unaff_EBX + 2) = 1;
LAB_007c560a:
  unaff_EBX[1] = (int)local_10;
  *unaff_EBX = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007c5617(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7c5623;
  if (0x5555553 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_007c57c5(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_007c573c;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_007c573c;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_007c573c:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0x10) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x40) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0x10) == '\0') {
LAB_007c56f8:
        *(undefined *)(piVar1 + 0x10) = 1;
        *(undefined *)(piVar7 + 0x10) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x40) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_00449c78(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x40) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x40) = 0;
        FUN_007c5099(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0x10) == '\0') goto LAB_007c56f8;
    if (piVar8 == (int *)*piVar1) {
      FUN_007c5099(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x40) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x40) = 0;
    FUN_00449c78(unaff_ESI);
  } while( true );
}



void FUN_007c5764(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x41) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x41) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x41) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x41) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x41) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x41) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_007c57c5(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x48);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[4] = *param_1_00;
    puVar1[5] = param_1_00[1];
    puVar1[6] = param_1_00[2];
    puVar1[7] = param_1_00[3];
    FUN_00672a11();
    *(undefined *)(puVar1 + 0x10) = 0;
    *(undefined *)((int)puVar1 + 0x41) = 0;
  }
  return;
}



void Catch_All_007c5827(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void FUN_007c583a(undefined4 param_1)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EDI;
  undefined4 local_20 [7];
  
  FUN_007c52cc();
  local_20[0] = param_1;
  FUN_007c52cc();
  cVar2 = FUN_007f2630(local_20);
  uVar1 = local_20[0];
  if (cVar2 == '\0') {
    FUN_007c52cc();
    puVar3 = (undefined4 *)operator_new(0x1c);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      *puVar3 = uVar1;
      FUN_007c52cc();
    }
    unaff_EDI[2] = puVar3;
    *unaff_EDI = &PTR_FUN_03059d40;
  }
  else {
    *unaff_EDI = 0;
  }
  return;
}



void FUN_007c58b7(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007c59bc(param_1,0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<class_boost::shared_ptr<class_W47457227::W1E04FC9F>,class_boost::shared_ptr<class_W47457227::W1E04FC9F>_(__cdecl*)(class_W133E5AC5::W646D533D_const&,class_W47457227::W783E54BC,class_W47457227::W783E54BC),class_boost::_bi::list3<struct_boost::arg<1>,class_boost::_bi::value<class_W47457227::W783E54BC>,class_boost::_bi::value<class_W47457227::W783E54BC>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



undefined4 FUN_007c58f3(undefined4 param_1)

{
  FUN_007c5ad0(param_1);
  return param_1;
}



void FUN_007c590e(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007c5a59(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<class_boost::shared_ptr<class_W47457227::W1E04FC9F>,class_boost::shared_ptr<class_W47457227::W1E04FC9F>_(__cdecl*)(class_W133E5AC5::W646D533D_const&,class_W47457227::W783E54BC,class_W47457227::W783E54BC,class_W47457227::W783E54BC),class_boost::_bi::list4<struct_boost::arg<1>,class_boost::_bi::value<class_W47457227::W783E54BC>,class_boost::_bi::value<class_W47457227::W783E54BC>,class_boost::_bi::value<class_W47457227::W783E54BC>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



undefined4 FUN_007c5949(undefined4 param_1)

{
  FUN_007c5aff(param_1);
  return param_1;
}



void FUN_007c5966(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007c5a07(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<class_boost::shared_ptr<class_W47457227::W1E04FC9F>,class_boost::shared_ptr<class_W47457227::W1E04FC9F>_(__cdecl*)(class_W133E5AC5::W646D533D_const&,class_W47457227::W783E54BC),class_boost::_bi::list2<struct_boost::arg<1>,class_boost::_bi::value<class_W47457227::W783E54BC>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



undefined4 FUN_007c59a1(undefined4 param_1)

{
  FUN_007c5b2e(param_1);
  return param_1;
}



void FUN_007c59bc(uint param_1)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      FUN_007c54bc();
      return;
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX != 3) {
      *unaff_ESI = &boost::_bi::
                    bind_t<class_boost::shared_ptr<class_W47457227::W1E04FC9F>,class_boost::shared_ptr<class_W47457227::W1E04FC9F>_(__cdecl*)(class_W133E5AC5::W646D533D_const&,class_W47457227::W783E54BC,class_W47457227::W783E54BC),class_boost::_bi::list3<struct_boost::arg<1>,class_boost::_bi::value<class_W47457227::W783E54BC>,class_boost::_bi::value<class_W47457227::W783E54BC>_>_>
                    ::RTTI_Type_Descriptor;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==
                      ((type_info *)*unaff_ESI,
                       (type_info *)
                       &boost::_bi::
                        bind_t<class_boost::shared_ptr<class_W47457227::W1E04FC9F>,class_boost::shared_ptr<class_W47457227::W1E04FC9F>_(__cdecl*)(class_W133E5AC5::W646D533D_const&,class_W47457227::W783E54BC,class_W47457227::W783E54BC),class_boost::_bi::list3<struct_boost::arg<1>,class_boost::_bi::value<class_W47457227::W783E54BC>,class_boost::_bi::value<class_W47457227::W783E54BC>_>_>
                        ::RTTI_Type_Descriptor);
    *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & param_1);
  }
  return;
}



void FUN_007c5a07(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = (TypeDescriptor *)0x0;
      unaff_ESI[2] = unaff_EDI[2];
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<class_boost::shared_ptr<class_W47457227::W1E04FC9F>,class_boost::shared_ptr<class_W47457227::W1E04FC9F>_(__cdecl*)(class_W133E5AC5::W646D533D_const&,class_W47457227::W783E54BC),class_boost::_bi::list2<struct_boost::arg<1>,class_boost::_bi::value<class_W47457227::W783E54BC>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<class_boost::shared_ptr<class_W47457227::W1E04FC9F>,class_boost::shared_ptr<class_W47457227::W1E04FC9F>_(__cdecl*)(class_W133E5AC5::W646D533D_const&,class_W47457227::W783E54BC),class_boost::_bi::list2<struct_boost::arg<1>,class_boost::_bi::value<class_W47457227::W783E54BC>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_007c5a59(TypeDescriptor **param_1)

{
  TypeDescriptor *pTVar1;
  bool bVar2;
  int in_EAX;
  TypeDescriptor *pTVar3;
  TypeDescriptor **unaff_ESI;
  
  pTVar3 = (TypeDescriptor *)0x0;
  if (in_EAX == 0) {
    pTVar1 = *param_1;
    pTVar3 = (TypeDescriptor *)operator_new(0x1c);
    if (pTVar3 == (TypeDescriptor *)0x0) {
      pTVar3 = (TypeDescriptor *)0x0;
    }
    else {
      pTVar3->pVFTable = pTVar1->pVFTable;
      FUN_007c52cc();
    }
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *param_1;
      *param_1 = (TypeDescriptor *)0x0;
      return;
    }
    if (in_EAX == 2) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*unaff_ESI);
    }
    if (in_EAX != 3) {
      *unaff_ESI = &boost::_bi::
                    bind_t<class_boost::shared_ptr<class_W47457227::W1E04FC9F>,class_boost::shared_ptr<class_W47457227::W1E04FC9F>_(__cdecl*)(class_W133E5AC5::W646D533D_const&,class_W47457227::W783E54BC,class_W47457227::W783E54BC,class_W47457227::W783E54BC),class_boost::_bi::list4<struct_boost::arg<1>,class_boost::_bi::value<class_W47457227::W783E54BC>,class_boost::_bi::value<class_W47457227::W783E54BC>,class_boost::_bi::value<class_W47457227::W783E54BC>_>_>
                    ::RTTI_Type_Descriptor;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar2 = type_info::operator==
                      ((type_info *)*unaff_ESI,
                       (type_info *)
                       &boost::_bi::
                        bind_t<class_boost::shared_ptr<class_W47457227::W1E04FC9F>,class_boost::shared_ptr<class_W47457227::W1E04FC9F>_(__cdecl*)(class_W133E5AC5::W646D533D_const&,class_W47457227::W783E54BC,class_W47457227::W783E54BC,class_W47457227::W783E54BC),class_boost::_bi::list4<struct_boost::arg<1>,class_boost::_bi::value<class_W47457227::W783E54BC>,class_boost::_bi::value<class_W47457227::W783E54BC>,class_boost::_bi::value<class_W47457227::W783E54BC>_>_>
                        ::RTTI_Type_Descriptor);
    if (bVar2) {
      *unaff_ESI = *param_1;
      return;
    }
  }
  *unaff_ESI = pTVar3;
  return;
}



undefined4 __thiscall FUN_007c5ad0(int param_1_00,undefined4 param_1)

{
  undefined local_8 [4];
  
  FUN_007c5b5c(param_1_00 + 4,param_1,0,param_1_00,local_8);
  return param_1;
}



undefined4 __thiscall FUN_007c5aff(int param_1_00,undefined4 param_1)

{
  undefined local_8 [4];
  
  FUN_007c5bdd(param_1_00 + 4,param_1,0,param_1_00,local_8);
  return param_1;
}



undefined4 __thiscall FUN_007c5b2e(undefined4 param_1_00,undefined4 param_1)

{
  undefined local_8 [4];
  
  FUN_007c5c70(param_1,0,param_1_00,local_8);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007c5b5c(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,code **param_4,
                 undefined4 *param_5)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined *local_34;
  undefined4 *local_30;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7c5b68;
  local_30 = (undefined4 *)param_1[3];
  local_34 = (undefined *)param_1[2];
  local_14 = &local_3c;
  local_38 = param_1[1];
  local_3c = *param_1;
  puVar1 = (undefined4 *)(**param_4)(local_1c,*param_5);
  local_30 = puVar1 + 1;
  *param_2 = *puVar1;
                    // WARNING: Subroutine does not return
  local_34 = &UNK_007c5bbc;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007c5bdd(undefined4 *param_1,undefined4 *param_2,undefined4 param_3,code **param_4,
                 undefined4 *param_5)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined *local_34;
  undefined4 *local_30;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7c5be9;
  local_30 = (undefined4 *)param_1[5];
  local_34 = (undefined *)param_1[4];
  local_38 = param_1[3];
  local_3c = param_1[2];
  local_14 = &local_44;
  local_40 = param_1[1];
  local_44 = *param_1;
  puVar1 = (undefined4 *)(**param_4)(local_1c,*param_5);
  local_30 = puVar1 + 1;
  *param_2 = *puVar1;
                    // WARNING: Subroutine does not return
  local_34 = &UNK_007c5c50;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall
FUN_007c5c70(undefined4 *param_1_00,undefined4 *param_1,undefined4 param_2,code **param_3,
            undefined4 *param_4)

{
  undefined4 *puVar1;
  undefined *local_34;
  undefined4 *local_30;
  undefined local_1c [4];
  undefined **local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7c5c7c;
  local_14 = 0;
  local_18 = &local_34;
  local_30 = (undefined4 *)param_1_00[1];
  local_34 = (undefined *)*param_1_00;
  puVar1 = (undefined4 *)(**param_3)(local_1c,*param_4);
  local_30 = puVar1 + 1;
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  local_34 = &UNK_007c5cb8;
  FUN_0043c023();
}



undefined4 * __thiscall FUN_007c5cd9(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WABE12921::WF97E76C8::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007c5cf6(void)

{
  int iVar1;
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c28ff2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_28);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_007c5de5(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_007c5e7c(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_007c5f13(void)

{
  int iVar1;
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c28ff2;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_28);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



undefined4 __fastcall FUN_007c6002(undefined4 param_1)

{
  byte unaff_retaddr;
  
  FUN_007b848f(param_1);
  if ((unaff_retaddr & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c601f(void)

{
  undefined4 *puVar1;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined local_28 [8];
  int local_20;
  int local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7c602b;
  uStack_3c = 0x7c6039;
  FUN_00465bbc();
  local_8 = 0;
  if (local_20 != 0) {
    uStack_3c = 0;
    uStack_40 = 0;
    uStack_44 = 0;
    local_18 = &local_4c;
    local_4c = 0xa0c;
    local_48 = 0xaf;
    puVar1 = (undefined4 *)FUN_00465be3(local_28);
    local_18 = &local_4c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_4c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_1c != 0) {
    uStack_3c = 0x7c60a9;
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c60b1(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c60bd;
  local_38 = 0x7c60ca;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0xb0;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c6136;
    FUN_0040127a();
  }
  return;
}



void FUN_007c613e(void)

{
  int iVar1;
  int local_28;
  int local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c20629;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc();
  local_c = 0;
  if (local_28 != 0) {
    iVar1 = FUN_00465be3(local_20);
    local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  local_c = 0xffffffff;
  if (local_24 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c625d(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c6269;
  local_38 = 0x7c6276;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0xb4;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c62e2;
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c62ea(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c62f6;
  local_38 = 0x7c6303;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0xb5;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c636f;
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c6377(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c6383;
  local_38 = 0x7c6390;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0xb6;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c63fc;
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c6404(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c6410;
  local_38 = 0x7c641d;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0xb7;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c6489;
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c6491(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c649d;
  local_38 = 0x7c64aa;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0xb8;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c6516;
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c651e(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c652a;
  local_38 = 0x7c6537;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0xb9;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c65a3;
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c65ab(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c65b7;
  local_38 = 0x7c65c4;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0xba;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c6630;
    FUN_0040127a();
  }
  return;
}



void FUN_007c6638(void)

{
  int iVar1;
  int local_4c;
  int local_48;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c24edd;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc();
  local_c = 0;
  if (local_4c != 0) {
    FUN_007bdf16();
    local_c._0_1_ = 1;
    iVar1 = FUN_00467341();
    local_c = CONCAT31(local_c._1_3_,2);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  local_c = 0xffffffff;
  if (local_48 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c6759(void)

{
  undefined4 *puVar1;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined local_28 [8];
  int local_20;
  int local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7c6765;
  uStack_3c = 0x7c6773;
  FUN_00465bbc();
  local_8 = 0;
  if (local_20 != 0) {
    uStack_3c = 0;
    uStack_40 = 0;
    uStack_44 = 0;
    local_18 = &local_4c;
    local_4c = 0xa0c;
    local_48 = 0xbb;
    puVar1 = (undefined4 *)FUN_00465be3(local_28);
    local_18 = &local_4c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_4c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_1c != 0) {
    uStack_3c = 0x7c67e3;
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c67eb(void)

{
  undefined4 *puVar1;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined local_28 [8];
  int local_20;
  int local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7c67f7;
  uStack_3c = 0x7c6805;
  FUN_00465bbc();
  local_8 = 0;
  if (local_20 != 0) {
    uStack_3c = 0;
    uStack_40 = 0;
    uStack_44 = 0;
    local_18 = &local_4c;
    local_4c = 0xa0c;
    local_48 = 0xbd;
    puVar1 = (undefined4 *)FUN_00465be3(local_28);
    local_18 = &local_4c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_4c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_1c != 0) {
    uStack_3c = 0x7c6875;
    FUN_0040127a();
  }
  return;
}



void FUN_007c687d(int param_1)

{
  byte bVar1;
  undefined3 uVar2;
  uint uVar3;
  uint uVar4;
  undefined4 local_80;
  undefined **local_7c;
  undefined4 *puStack_78;
  undefined4 local_74;
  undefined4 *puStack_70;
  uint uStack_6c;
  undefined4 *local_50;
  int local_4c;
  undefined4 local_48;
  undefined4 local_44;
  int local_40;
  int local_3c;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c24ea2;
  local_14 = ExceptionList;
  uStack_6c = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_14;
  puStack_70 = (undefined4 *)0x7c68b9;
  FUN_00465bbc();
  if (local_40 == 0) {
    local_c = 0xffffffff;
    if (local_3c != 0) {
      puStack_70 = (undefined4 *)0x7c6afe;
      FUN_0040127a();
    }
    ExceptionList = local_14;
    return;
  }
  puStack_78 = *(undefined4 **)(param_1 + 4);
  bVar1 = *(byte *)(param_1 + 8);
  local_48 = 0;
  local_44 = 0;
  local_c._1_3_ = 0;
  uVar2 = local_c._1_3_;
  local_c._0_1_ = 1;
  local_c._1_3_ = 0;
  if (bVar1 == 0) {
    puStack_70 = (undefined4 *)0x0;
    local_74 = 0;
    local_7c = (undefined **)&local_50;
    local_80 = 0x7c68f0;
    FUN_0043bfa5();
    puStack_70 = &local_48;
    local_c._0_1_ = 2;
    local_74 = 0x7c6902;
    FUN_005d11c9();
    local_c = CONCAT31(local_c._1_3_,1);
    if (local_4c != 0) {
      puStack_70 = (undefined4 *)0x7c6a26;
      FUN_0040127a();
    }
    puStack_70 = (undefined4 *)0x0;
    local_74 = 0;
    puStack_78 = (undefined4 *)0x0;
    local_50 = &local_80;
    local_80 = local_48;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&local_44);
  }
  uVar4 = 1;
  if (bVar1 != 0) {
    uVar3 = (uint)bVar1;
    do {
      uVar4 = uVar4 * 10;
      uVar3 = uVar3 - 1;
    } while (uVar3 != 0);
  }
  puStack_78 = (undefined4 *)((uint)puStack_78 % uVar4);
  puStack_70 = (undefined4 *)(uint)bVar1;
  local_74 = 0;
  local_7c = (undefined **)local_20;
  local_80 = 0x7c6936;
  local_c._1_3_ = uVar2;
  puStack_78 = (undefined4 *)FUN_0043bfa5();
  local_74 = *puStack_78;
  puStack_78 = puStack_78 + 1;
                    // WARNING: Subroutine does not return
  local_7c = (undefined **)&UNK_007c694f;
  FUN_0043c023();
}



void FUN_007c6b13(void)

{
  int iVar1;
  int local_28;
  int local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c58b4d;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc();
  local_c = 0;
  if (local_28 != 0) {
    iVar1 = FUN_00465be3(local_20);
    local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  local_c = 0xffffffff;
  if (local_24 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c6be2(int param_1)

{
  int local_18;
  int local_14;
  
  FUN_00465bbc();
  if ((local_18 != 0) && ((-(uint)(*(char *)(param_1 + 0x40) != '\0') & 0x6a1cd8) != 0)) {
    FUN_0041b0a1(param_1 + 0x44);
  }
  if (local_14 != 0) {
    FUN_0040127a();
  }
  return;
}



void __fastcall FUN_007c6c3c(int param_1)

{
  int iVar1;
  uint local_3c;
  undefined local_30 [8];
  int local_28;
  int local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c384eb;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc();
  local_c = 0;
  if (local_28 == 0) {
    local_c = 0xffffffff;
    if (local_24 != 0) {
      FUN_0040127a();
    }
    ExceptionList = local_14;
    return;
  }
  if ((*(int *)(param_1 + 0x20) - *(int *)(param_1 + 0x1c)) / 0x1c != 0) {
    local_3c = 0;
    if ((*(int *)(param_1 + 0x20) - *(int *)(param_1 + 0x1c)) / 0x1c != 0) {
      do {
        iVar1 = FUN_0042b490();
        if (*(int *)(iVar1 + 0x14) != 0) {
          FUN_0046f90c();
          local_c._0_1_ = 1;
          iVar1 = FUN_00465be3(local_20);
          local_c = CONCAT31(local_c._1_3_,2);
                    // WARNING: Subroutine does not return
          FUN_0043c023(iVar1 + 4);
        }
        local_3c = local_3c + 1;
      } while (local_3c < (uint)((*(int *)(param_1 + 0x20) - *(int *)(param_1 + 0x1c)) / 0x1c));
    }
  }
  iVar1 = FUN_00465be3(local_30);
  local_c = CONCAT31(local_c._1_3_,4);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_007c6eb6(int *param_1,int param_2)

{
  undefined4 *puVar1;
  int iVar2;
  short *psVar3;
  int *piVar4;
  undefined4 *local_ec;
  int *piStack_e8;
  undefined local_b8 [28];
  undefined local_9c [28];
  undefined4 local_80 [2];
  int local_78 [3];
  uint local_6c;
  uint local_68;
  undefined4 local_60;
  int local_5c;
  int *local_58;
  int local_54;
  undefined4 *local_50;
  uint local_4c;
  undefined4 local_48;
  undefined4 **local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 *local_38;
  uint local_34;
  undefined4 local_30 [5];
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc4;
  local_8 = 0;
  local_34 = 0;
  local_58 = param_1;
  local_50 = *(undefined4 **)(param_2 + 0x14);
  piStack_e8 = (int *)0x8;
  local_ec = (undefined4 *)&DAT_00dd8f28;
  piStack_e8 = (int *)basic_string<>();
  local_ec = &local_40;
  local_8 = 1;
  local_40 = 0x61c9d848;
  local_3c = 0xccb3da45;
  FUN_00b94470();
  piStack_e8 = (int *)0x0;
  local_ec = (undefined4 *)0x1;
  local_8 = CONCAT31(local_8._1_3_,3);
  FUN_00401829();
  piStack_e8 = (int *)0x0;
  local_ec = local_30;
  puVar1 = (undefined4 *)FUN_00420df9();
  if (puVar1 == (undefined4 *)0xffffffff) {
    local_38 = local_50;
    puVar1 = local_50;
  }
  else {
    piStack_e8 = (int *)0x1;
    local_ec = (undefined4 *)(local_1c + (int)puVar1);
    local_38 = (undefined4 *)0x20;
    iVar2 = FUN_00420f3f(&local_38);
    local_38 = local_50;
    if (iVar2 != -1) {
      local_38 = (undefined4 *)(iVar2 + 1);
    }
  }
  piStack_e8 = local_78;
  local_ec = (undefined4 *)0x7c6f70;
  FUN_004382a5();
  local_8._0_1_ = 4;
  if (puVar1 == (undefined4 *)0x0) {
    if (local_38 != (undefined4 *)0x0) {
      piStack_e8 = (int *)((int)local_38 + -1);
      local_ec = (undefined4 *)0x7c6fff;
      psVar3 = (short *)FUN_004127c3();
      local_ec = puVar1;
      if (*psVar3 == 0x20) {
        piStack_e8 = (int *)((int)local_38 + -1);
        piStack_e8 = (int *)FUN_0041b008(local_9c);
        local_8 = CONCAT31(local_8._1_3_,8);
        local_34 = 1;
      }
      else {
        piStack_e8 = local_38;
        piStack_e8 = (int *)FUN_0041b008(local_b8);
        local_8 = 9;
        local_34 = 2;
      }
      local_ec = local_80;
      puVar1 = (undefined4 *)FUN_0046752c();
      local_40 = *puVar1;
      piStack_e8 = puVar1 + 1;
                    // WARNING: Subroutine does not return
      local_ec = (undefined4 *)&UNK_007c7063;
      FUN_0043c023();
    }
    if (local_50 != (undefined4 *)0x0) {
      piStack_e8 = (int *)0xffffffff;
      local_ec = local_38;
      piStack_e8 = (int *)FUN_0041b008(local_9c);
      local_ec = &local_60;
      local_8._0_1_ = 0xf;
      piStack_e8 = (int *)FUN_007c6eb6();
      local_8._0_1_ = 0x10;
      local_ec = (undefined4 *)0x7c7177;
      FUN_0046adaf();
      local_8._0_1_ = 0xf;
      if (local_5c != 0) {
        piStack_e8 = (int *)0x7c7187;
        FUN_0040127a();
      }
      piStack_e8 = (int *)0x0;
      local_ec = (undefined4 *)0x1;
      local_8._0_1_ = 4;
      FUN_00401829();
    }
    piVar4 = local_58;
    *local_58 = 0;
    local_58[1] = 0;
    local_34 = local_34 | 4;
    local_4c = local_6c;
    if (local_68 < local_6c) {
      piStack_e8 = (int *)0x7c71b7;
      FUN_00a3fb10();
    }
    local_54 = local_78[0];
    local_50 = (undefined4 *)local_4c;
    while( true ) {
      local_4c = local_68;
      if (local_68 < local_6c) {
        piStack_e8 = (int *)0x7c71d3;
        FUN_00a3fb10();
      }
      if ((local_54 == 0) || (local_54 != local_78[0])) {
        piStack_e8 = (int *)0x7c71e4;
        FUN_00a3fb10();
      }
      if (local_50 == (undefined4 *)local_4c) break;
      if (*piVar4 != 0) {
        piStack_e8 = (int *)0x7c71fc;
        puVar1 = (undefined4 *)FUN_007c96e9();
        local_ec = (undefined4 *)*puVar1;
        local_44 = &local_ec;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      piStack_e8 = (int *)0x7c726b;
      FUN_007c96e9();
      piStack_e8 = local_58;
      local_ec = (undefined4 *)0x7c7273;
      FUN_005d11c9();
      piStack_e8 = (int *)0x7c727b;
      FUN_0062d58f();
      piVar4 = local_58;
    }
    piStack_e8 = local_78;
    local_8 = CONCAT31(local_8._1_3_,3);
    local_ec = (undefined4 *)0x7c7290;
    FUN_0044237a();
    local_ec = (undefined4 *)0x0;
    FUN_00401829(1);
    local_ec = (undefined4 *)0x7c72a2;
    FUN_00a421fb();
    return;
  }
  local_ec = (undefined4 *)0x0;
  piStack_e8 = puVar1;
  piStack_e8 = (int *)FUN_0041b008(local_b8);
  local_ec = &local_48;
  local_8 = CONCAT31(local_8._1_3_,5);
  puVar1 = (undefined4 *)FUN_0046752c();
  local_40 = *puVar1;
  piStack_e8 = puVar1 + 1;
                    // WARNING: Subroutine does not return
  local_ec = (undefined4 *)&UNK_007c6fa9;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c72a5(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c72b1;
  local_38 = 0x7c72be;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0xbc;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c732a;
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c7332(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c733e;
  local_38 = 0x7c734b;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0xe4;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c73b7;
    FUN_0040127a();
  }
  return;
}



void FUN_007c73bf(int param_1)

{
  int iVar1;
  int local_30;
  int local_2c;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c205f6;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc();
  local_c = 0;
  if (local_30 != 0) {
    iVar1 = FUN_00443a80(local_20,*(undefined4 *)(param_1 + 4),0);
    local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  local_c = 0xffffffff;
  if (local_2c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c74d9(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c74e5;
  local_38 = 0x7c74f2;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0x103;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c755e;
    FUN_0040127a();
  }
  return;
}



void FUN_007c7566(void)

{
  int iVar1;
  int local_4c;
  int local_48;
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3d53c;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc();
  local_c = 0;
  if (local_4c != 0) {
    FUN_0047996d(local_34);
    local_c._0_1_ = 1;
    iVar1 = FUN_0046752c();
    local_c = CONCAT31(local_c._1_3_,2);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  local_c = 0xffffffff;
  if (local_48 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



void FUN_007c768f(void)

{
  int iVar1;
  int local_48;
  int local_44;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c24e37;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc();
  local_c = 0;
  if (local_48 != 0) {
    iVar1 = FUN_00465be3(local_20);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  local_c = 0xffffffff;
  if (local_44 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c7872(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c787e;
  local_38 = 0x7c788b;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0x158;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c78f7;
    FUN_0040127a();
  }
  return;
}



void FUN_007c78ff(void)

{
  int iVar1;
  int local_28;
  int local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c20629;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc();
  local_c = 0;
  if (local_28 != 0) {
    iVar1 = FUN_00465be3(local_20);
    local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  local_c = 0xffffffff;
  if (local_24 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



void FUN_007c7a1e(void)

{
  int iVar1;
  int local_30;
  int local_2c;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c205f6;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc();
  local_c = 0;
  if (local_30 != 0) {
    iVar1 = FUN_00465be3(local_20);
    local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  local_c = 0xffffffff;
  if (local_2c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



void FUN_007c7b29(void)

{
  undefined4 *puVar1;
  undefined local_88 [12];
  undefined4 local_7c;
  int local_60;
  int local_5c;
  undefined local_48 [52];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4b3cf;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc(DAT_0323f878 ^ (uint)&stack0xffffff28);
  local_c = 0;
  if (local_60 != 0) {
    FUN_004964ff(local_88);
    puVar1 = (undefined4 *)FUN_0046f90c(local_48);
    local_7c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_c = 0xffffffff;
  if (local_5c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



void FUN_007c8524(int param_1)

{
  int iVar1;
  undefined local_70 [16];
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  int local_48;
  int local_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c28ee3;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc();
  local_c = 0;
  if (local_48 != 0) {
    local_60 = *(undefined4 *)(param_1 + 0x20);
    local_5c = *(undefined4 *)(param_1 + 0x24);
    local_58 = *(undefined4 *)(param_1 + 0x28);
    local_54 = *(undefined4 *)(param_1 + 0x2c);
    local_50 = *(undefined4 *)(param_1 + 0x30);
    local_4c = *(undefined4 *)(param_1 + 0x34);
    iVar1 = FUN_00465be3(local_70);
    local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  local_c = 0xffffffff;
  if (local_44 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007c8bc7(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined auStack_180 [108];
  undefined4 uStack_114;
  undefined *puStack_110;
  undefined *puStack_10c;
  undefined auStack_108 [12];
  undefined4 uStack_fc;
  void **ppvStack_f8;
  undefined local_40 [24];
  undefined local_28 [4];
  undefined *local_24;
  undefined *local_20;
  void *local_1c;
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xd0;
  local_8 = 0x7c8bd6;
  local_18 = 0;
  ppvStack_f8 = (void **)0x7c8be7;
  local_1c = operator_new(0x17c);
  local_8 = 1;
  if (local_1c != (void *)0x0) {
    local_24 = auStack_108;
    puStack_10c = auStack_108;
    puStack_110 = (undefined *)0x7c8c03;
    FUN_007c9982();
    puStack_10c = (undefined *)0x0;
    puStack_110 = local_40;
    local_8._0_1_ = 2;
    uStack_114 = 0x7c8c12;
    FUN_007c9b63();
    local_20 = auStack_180;
    local_8 = CONCAT31(local_8._1_3_,3);
    local_18 = 1;
    FUN_007c9b04(auStack_180);
    local_8 = 4;
    FUN_007c9711();
  }
  local_8 = 0;
  if ((local_18 & 1) == 0) {
    ppvStack_f8 = (void **)0x7c8c6b;
    FUN_00449269();
    local_8 = 6;
    ppvStack_f8 = (void **)0x7c8c8b;
    ppvStack_f8 = (void **)FUN_00417498();
    local_8._0_1_ = 7;
    uStack_fc = 0x7c8c99;
    FUN_007ca23f();
    ppvStack_f8 = &local_1c;
    local_8._0_1_ = 8;
    uStack_fc = 0x7c8cb7;
    FUN_007cc42e();
    std::locale::~locale((locale *)&local_1c);
    std::locale::~locale((locale *)&local_20);
    local_8._0_1_ = 6;
    std::locale::~locale((locale *)&local_24);
    ppvStack_f8 = (void **)0x7c8ce1;
    FUN_007ca29c();
    FUN_004491d9();
    ppvStack_f8 = (void **)local_28;
    local_8 = CONCAT31(local_8._1_3_,9);
    uStack_fc = 0x7c8cfa;
    puVar1 = (undefined4 *)FUN_0046752c();
    *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
    ppvStack_f8 = (void **)&UNK_007c8d0c;
    FUN_0043c023();
  }
  local_18 = local_18 & 0xfffffffe;
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  ppvStack_f8 = (void **)&UNK_007c8c5e;
  FUN_00a3f6a1();
}



void FUN_007c8d41(void)

{
  undefined4 *unaff_ESI;
  
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*unaff_ESI);
}



void FUN_007c8d51(void)

{
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



void FUN_007c8d82(void)

{
  int iVar1;
  int local_28;
  int local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c20629;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc();
  local_c = 0;
  if (local_28 != 0) {
    iVar1 = FUN_00465be3(local_20);
    local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  local_c = 0xffffffff;
  if (local_24 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c8ea1(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c8ead;
  local_38 = 0x7c8eba;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0x18d;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c8f26;
    FUN_0040127a();
  }
  return;
}



void FUN_007c8f2e(void)

{
  int iVar1;
  int local_30;
  int local_2c;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c205c3;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc();
  local_c = 0;
  if (local_30 != 0) {
    iVar1 = FUN_00465be3(local_20);
    local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  local_c = 0xffffffff;
  if (local_2c != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



void FUN_007c9088(void)

{
  int iVar1;
  int local_38;
  int local_34;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c24de4;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc();
  local_c = 0;
  if (local_38 != 0) {
    iVar1 = FUN_00465be3(local_20);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  local_c = 0xffffffff;
  if (local_34 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



void FUN_007c91f1(int param_1)

{
  undefined4 *puVar1;
  undefined *local_6c;
  undefined **local_68;
  undefined4 local_64;
  undefined **local_60;
  uint uStack_5c;
  undefined **local_48 [2];
  undefined8 local_40;
  undefined *local_38;
  undefined4 local_34;
  int local_30;
  int local_2c;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4ba4c;
  local_14 = ExceptionList;
  uStack_5c = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_14;
  local_60 = (undefined **)local_48;
  local_64 = 0x7c9229;
  FUN_004964ff();
  local_60 = (undefined **)0x7c9236;
  FUN_00465bbc();
  local_c = 0;
  if (local_30 == 0) {
    local_c = 0xffffffff;
    if (local_2c != 0) {
      local_60 = (undefined **)0x7c949b;
      FUN_0040127a();
    }
    ExceptionList = local_14;
    return;
  }
  if ((-(uint)(*(char *)(param_1 + 0x10) != '\0') & 0x6a1cd8) != 0) {
    local_68 = *(undefined ***)(param_1 + 0x18);
    local_60 = (undefined **)0x0;
    local_64 = 0;
    local_6c = (undefined *)0x0;
    local_40 = FUN_0043b546(0);
    local_60 = &local_38;
    local_64 = 0x7c9287;
    FUN_0043be95();
    local_48[0] = (undefined **)&local_64;
    local_68 = (undefined **)local_34;
    local_6c = local_38;
    FUN_007c8bc7(&local_64);
    local_48[0] = &local_6c;
    local_6c = (undefined *)0xa0c;
    local_68 = (undefined **)0x198;
    puVar1 = (undefined4 *)FUN_00465c6c(local_20);
    local_64 = *puVar1;
    local_48[0] = (undefined **)&local_64;
    local_68 = (undefined **)(puVar1 + 1);
                    // WARNING: Subroutine does not return
    local_6c = &UNK_007c92d6;
    FUN_0043c023();
  }
  local_40._0_4_ = &local_64;
  local_64 = 0xa0c;
  local_60 = (undefined **)0x199;
  local_68 = &local_38;
  local_6c = (undefined *)0x7c93b1;
  puVar1 = (undefined4 *)FUN_00465be3();
  local_64 = *puVar1;
  local_40._0_4_ = &local_64;
  local_68 = (undefined **)(puVar1 + 1);
                    // WARNING: Subroutine does not return
  local_6c = &UNK_007c93ca;
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c94b0(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c94bc;
  local_38 = 0x7c94c9;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0x7c;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c9535;
    FUN_0040127a();
  }
  return;
}



void FUN_007c953d(void)

{
  int iVar1;
  int local_28;
  int local_24;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c20629;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465bbc();
  local_c = 0;
  if (local_28 != 0) {
    iVar1 = FUN_00465be3(local_20);
    local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar1 + 4);
  }
  local_c = 0xffffffff;
  if (local_24 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007c965c(void)

{
  undefined4 *puVar1;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_24 [8];
  int local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7c9668;
  local_38 = 0x7c9675;
  FUN_00465bbc();
  local_8 = 0;
  if (local_1c != 0) {
    local_14 = &local_3c;
    local_3c = 0xa0c;
    local_38 = 0x22d;
    puVar1 = (undefined4 *)FUN_00465be3(local_24);
    local_14 = &local_3c;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_3c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    local_38 = 0x7c96e1;
    FUN_0040127a();
  }
  return;
}



int * FUN_007c96e9(void)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_007c9700;
    }
  }
  iVar2 = *piVar1;
LAB_007c9700:
  if (*(int **)(iVar2 + 0x10) <= unaff_ESI[1]) {
    FUN_00a3fb10();
  }
  return unaff_ESI[1];
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_007c9711(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 param_12;
  undefined auStack_f0 [108];
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined auStack_7c [16];
  undefined4 uStack_6c;
  undefined4 *puStack_68;
  undefined auStack_64 [68];
  undefined *local_20;
  undefined *local_1c;
  undefined4 *local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_20 = auStack_64;
  local_8 = 1;
  puStack_68 = &stack0x0000007c;
  uStack_6c = 0x7c973f;
  local_18 = param_1;
  FUN_00430a16();
  local_14 = auStack_7c;
  local_8._0_1_ = 2;
  uStack_84 = 0x7c9751;
  uStack_80 = param_2;
  FUN_00430a16();
  local_1c = auStack_f0;
  local_8._0_1_ = 3;
  FUN_007c9bd8(auStack_f0);
  local_8._0_1_ = 1;
  FUN_007c9da6(L"%Y-%b-%d %H:%M");
  local_8._0_1_ = 4;
  *param_1 = boost::date_time::
             time_facet<class_boost::posix_time::ptime,wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
             ::vftable;
  uVar1 = basic_string<>(&DAT_03059e38);
  local_8 = CONCAT31(local_8._1_3_,5);
  FUN_0076a51a(param_1 + 0x58,uVar1,L"%O:%M:%S%F");
  FUN_00401829(1,0);
  FUN_007c8d51();
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_12);
}



void FUN_007c97dc(void)

{
  FUN_0042a2f0(L"%Y%m%dT%H%M%S%F%q");
  return;
}



void FUN_007c97ea(void)

{
  FUN_0042a2f0(L"%Y-%m-%d %H:%M:%S%F%Q");
  return;
}



void FUN_007c97f8(void)

{
  FUN_0042a2f0(L"%Y%m%d");
  return;
}



void FUN_007c9806(void)

{
  FUN_0042a2f0(L"%Y-%m-%d");
  return;
}



void FUN_007c9814(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined local_c [8];
  
  FUN_007c9eac(local_c,param_2,param_3);
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall
FUN_007c9843(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,int param_6,undefined4 param_7,undefined4 *param_8
            )

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int param_11;
  uint param_12;
  undefined4 uVar4;
  int iVar5;
  locale local_1c [4];
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = param_1;
  local_18 = param_4;
  local_8 = 0;
  if ((*(int *)(param_1_00 + 0x158) - *(int *)(param_1_00 + 0x154)) / 0x1c != 0) {
    uVar1 = FUN_0042b490(*(undefined4 *)(param_6 + 0x18));
    FUN_007ca415(&param_7,uVar1);
  }
  if ((*(int *)(param_1_00 + 0x140) - *(int *)(param_1_00 + 0x13c)) / 0x1c != 0) {
    uVar1 = FUN_0042b490(*(undefined4 *)(param_6 + 0x18));
    FUN_007ca415(&param_7,uVar1);
  }
  if ((*(int *)(param_1_00 + 0x128) - *(int *)(param_1_00 + 0x124)) / 0x1c != 0) {
    uVar1 = FUN_0042b490(*(undefined4 *)(param_6 + 0x10));
    FUN_007ca415(&param_7,uVar1);
  }
  if ((*(int *)(param_1_00 + 0x110) - *(int *)(param_1_00 + 0x10c)) / 0x1c != 0) {
    uVar1 = FUN_0042b490(*(undefined4 *)(param_6 + 0x10));
    FUN_007ca415(&param_7,uVar1);
  }
  puVar3 = param_8;
  if (param_12 < 8) {
    puVar3 = &param_8;
  }
  uVar2 = FUN_00417498(local_1c);
  local_8 = CONCAT31(local_8._1_3_,1);
  iVar5 = (int)puVar3 + param_11 * 2;
  uVar1 = local_14;
  uVar4 = local_18;
  FUN_007ca469(uVar2,local_14,param_2,param_3,local_18,param_5,param_6,iVar5);
  FUN_007c9f3e(uVar1,param_2,param_3,uVar4,param_5,param_6,iVar5);
  std::locale::~locale(local_1c);
  FUN_00401829(1,0);
  return local_14;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007c9982(undefined4 param_1)

{
  undefined4 uVar1;
  
  FUN_004398f2();
  FUN_007c9ce5();
  uVar1 = basic_string<>(L"first");
  FUN_0041b0a1(uVar1);
  FUN_00401829(1,0);
  uVar1 = basic_string<>(L"second");
  FUN_0041b0a1(uVar1);
  FUN_00401829(1,0);
  uVar1 = basic_string<>(L"third");
  FUN_0041b0a1(uVar1);
  FUN_00401829(1,0);
  uVar1 = basic_string<>(L"fourth");
  FUN_0041b0a1(uVar1);
  FUN_00401829(1,0);
  uVar1 = basic_string<>(L"fifth");
  FUN_0041b0a1(uVar1);
  FUN_00401829(1,0);
  uVar1 = basic_string<>(L"last");
  FUN_0041b0a1(uVar1);
  FUN_00401829(1,0);
  uVar1 = basic_string<>(L"before");
  FUN_0041b0a1(uVar1);
  FUN_00401829(1,0);
  uVar1 = basic_string<>(L"after");
  FUN_0041b0a1(uVar1);
  FUN_00401829(1,0);
  uVar1 = basic_string<>(&DAT_03059eb4);
  FUN_0041b0a1(uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007c9b04(undefined4 *param_1)

{
  *param_1 = 1;
  basic_string<>(&DAT_03057848);
  basic_string<>(&DAT_00d395cc);
  basic_string<>(&DAT_03059ebc);
  basic_string<>(&DAT_00d395c8);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007c9b63(undefined4 param_1)

{
  uint local_14;
  
  FUN_004398f2();
  local_14 = local_14 & 0xffffff00;
  FUN_007caf99(&DAT_03059f26,param_1,param_1,param_1,local_14);
  return param_1;
}



undefined4 __thiscall FUN_007c9bad(undefined4 param_1,byte param_2)

{
  FUN_00401829(1,0);
  FUN_007c9c33();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007c9bd8(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1 = *param_1_00;
  basic_string<>(param_1_00 + 1);
  basic_string<>(param_1_00 + 8);
  basic_string<>(param_1_00 + 0xf);
  basic_string<>(param_1_00 + 0x16);
  return param_1;
}



void FUN_007c9c33(void)

{
  int unaff_EDI;
  
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EDI + 0x148));
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007c9ce5(int param_1)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  undefined4 local_28;
  undefined4 local_20;
  uint local_1c;
  
  uVar2 = FUN_00430b0c();
  if (uVar2 < 9) {
    iVar3 = FUN_0043043a(9,0);
    FUN_004494bc(*(undefined4 *)(param_1 + 0x10),param_1);
    FUN_004494bc(*(undefined4 *)(param_1 + 0xc),param_1);
    local_1c = local_1c & 0xffffff00;
    FUN_0041b94a(local_28,local_20,iVar3,param_1 + 8,local_1c,local_1c);
    iVar1 = *(int *)(param_1 + 0xc);
    if (iVar1 != 0) {
      FUN_0041c390(iVar1,*(int *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
    }
    *(int *)(param_1 + 0x14) = iVar3 + 0xfc;
    *(int *)(param_1 + 0x10) = ((*(int *)(param_1 + 0x10) - iVar1) / 0x1c) * 0x1c + iVar3;
    *(int *)(param_1 + 0xc) = iVar3;
  }
  return;
}



void Catch_All_007c9d93(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_007c9da6(undefined4 param_1_00,undefined4 param_1)

{
  undefined4 *unaff_EDI;
  undefined4 param_11;
  
  unaff_EDI[1] = param_1_00;
  *unaff_EDI = boost::date_time::
               date_facet<class_boost::gregorian::date,wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
               ::vftable;
  basic_string<>(param_1);
  basic_string<>(&DAT_00d2ae6c);
  basic_string<>(&DAT_03059f30);
  FUN_007c9bd8(unaff_EDI + 0x17);
  FUN_00430a16(&stack0x00000094);
  FUN_00430a16(&stack0x0000007c);
  FUN_004398f2();
  FUN_004398f2();
  FUN_004398f2();
  FUN_004398f2();
  FUN_007c8d51();
  FUN_0041c3a7();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_11);
}



void __thiscall
FUN_007c9eac(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint *in_EAX;
  undefined4 *puVar1;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *pbVar2;
  int iVar3;
  undefined2 *puVar4;
  undefined *puVar5;
  undefined local_24 [8];
  undefined local_1c [8];
  undefined4 local_14;
  undefined2 *local_10;
  undefined4 local_c;
  uint local_8;
  
  local_8 = *in_EAX;
  if (local_8 < (uint)((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x1c)) {
    puVar5 = local_1c;
    FUN_0042b490(local_8);
    puVar1 = (undefined4 *)FUN_00412721(puVar5);
    local_14 = *puVar1;
    local_10 = (undefined2 *)puVar1[1];
    puVar5 = local_24;
    pbVar2 = (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)FUN_0042b490(local_8);
    iVar3 = std::
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
            begin(pbVar2,puVar5);
    puVar4 = *(undefined2 **)(iVar3 + 4);
    local_8 = param_3;
    local_c = param_2;
    if (puVar4 != local_10) {
      do {
        FUN_0041767b(*puVar4);
        puVar4 = puVar4 + 1;
      } while (puVar4 != local_10);
    }
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



void FUN_007c9f3e(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,short *param_7)

{
  char cVar1;
  undefined uVar2;
  short *in_EAX;
  undefined4 *puVar3;
  short *psVar4;
  int *unaff_EDI;
  uint uVar5;
  undefined local_18 [8];
  undefined4 local_10;
  undefined4 local_c;
  uint local_8;
  
  local_8 = _Maklocchr<>(0x25,0,unaff_EDI + 3);
  local_8 = local_8 & 0xffff;
  if (in_EAX != param_7) {
    do {
      if (*in_EAX == (short)local_8) {
        psVar4 = in_EAX + 1;
        uVar5 = local_8;
        if (psVar4 == param_7) {
LAB_007ca01e:
          FUN_0041767b(uVar5);
          break;
        }
        cVar1 = _Maklocbyte<>(*psVar4,unaff_EDI + 3);
        uVar5 = local_c;
        local_10 = CONCAT31(local_10._1_3_,cVar1);
        local_c = local_c & 0xffffff00;
        if ((((cVar1 == 'E') || (cVar1 == 'O')) || (cVar1 == 'Q')) || (cVar1 == '#')) {
          psVar4 = in_EAX + 2;
          if (psVar4 == param_7) {
            FUN_0041767b(local_8);
            uVar5 = (uint)(ushort)(short)cVar1;
            goto LAB_007ca01e;
          }
          local_c = CONCAT31(SUB43(uVar5,1),cVar1);
          uVar2 = _Maklocbyte<>(*psVar4,unaff_EDI + 3);
          local_10 = CONCAT31(local_10._1_3_,uVar2);
        }
        puVar3 = (undefined4 *)
                 (**(code **)(*unaff_EDI + 4))
                           (local_18,param_2,param_3,param_4,param_5,param_6,local_10,local_c);
        param_2 = *puVar3;
        param_3 = puVar3[1];
      }
      else {
        FUN_0041767b(*in_EAX);
        psVar4 = in_EAX;
      }
      in_EAX = psVar4 + 1;
    } while (in_EAX != param_7);
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



void __fastcall FUN_007ca03a(undefined4 *param_1)

{
  *param_1 = std::
             time_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
             ::vftable;
  _free((void *)param_1[2]);
  *param_1 = std::locale::facet::vftable;
  return;
}



void __thiscall
FUN_007ca054(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,tm *param_6,undefined param_7,char param_8)

{
  char *pcVar1;
  char cVar2;
  void *pvVar3;
  _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this;
  char *pcVar4;
  size_t sVar5;
  _String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *p_Var6;
  tm **pptVar7;
  uint uVar8;
  size_t sVar9;
  undefined *puVar10;
  mbstate_t *pmVar11;
  undefined4 uVar12;
  _Cvtvec *p_Var13;
  tm *local_64;
  tm *local_60;
  undefined4 *local_5c;
  undefined4 local_58;
  size_t local_54 [2];
  mbstate_t local_4c;
  undefined local_48 [8];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_40 [20];
  size_t local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined uStack_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c18576;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&local_64;
  ExceptionList = &local_14;
  local_24 = 0x782521;
  uStack_20 = 0;
  local_5c = param_1;
  local_64 = param_6;
  local_28 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_40,0);
  local_c = 0;
  if (param_8 == '\0') {
    local_24._0_3_ = CONCAT12(param_7,(undefined2)local_24);
  }
  else {
    local_24._0_3_ = CONCAT12(param_8,(undefined2)local_24);
    local_24 = CONCAT13(param_7,(undefined3)local_24);
  }
  uVar8 = 0x10;
  while( true ) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (local_40,uVar8,'\0');
    pvVar3 = *(void **)(param_1_00 + 8);
    local_54[0] = local_2c;
    this = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
           )FUN_0042a0d0(local_48);
    pcVar4 = std::
             _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             ::operator*(this);
    sVar5 = __Strftime(pcVar4,local_54[0],(char *)&local_24,local_64,pvVar3);
    if (sVar5 != 0) break;
    uVar8 = uVar8 * 2;
  }
  local_4c = 0;
  uVar12 = 1;
  puVar10 = local_48;
  sVar5 = sVar5 - 1;
  p_Var6 = (_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_0042a0d0(local_54);
  pptVar7 = (tm **)std::
                   _String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                   ::operator+(p_Var6,puVar10,uVar12);
  local_64 = *pptVar7;
  local_60 = pptVar7[1];
  if (sVar5 != 0) {
    do {
      pmVar11 = &local_4c;
      sVar9 = sVar5;
      p_Var13 = (_Cvtvec *)(param_1_00 + 0xc);
      pcVar4 = std::
               _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
               ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                            *)&local_64);
      pcVar4 = (char *)__Mbrtowc((wchar_t *)&local_58,pcVar4,sVar9,pmVar11,p_Var13);
      if (pcVar4 == (char *)0xfffffffd) {
        pcVar4 = (char *)0x0;
      }
      else if (-3 < (int)pcVar4) {
        if ((int)pcVar4 < 0) break;
        if ((pcVar4 == (char *)0x0) && ((short)local_58 == 0)) {
          pcVar4 = std::
                   _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                   ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                                *)&local_64);
          pcVar1 = pcVar4 + 1;
          do {
            cVar2 = *pcVar4;
            pcVar4 = pcVar4 + 1;
          } while (cVar2 != '\0');
          pcVar4 = pcVar4 + (1 - (int)pcVar1);
        }
      }
      sVar5 = sVar5 - (int)pcVar4;
      FUN_005e0be0(pcVar4);
      FUN_0041767b(local_58);
    } while (sVar5 != 0);
  }
  *local_5c = param_2;
  local_5c[1] = param_3;
  FUN_004017b2(1,0);
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_007ca207(undefined4 param_1,byte param_2)

{
  FUN_007c9c33();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_007ca223(undefined4 param_1_00,byte param_1)

{
  FUN_007ca03a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007ca23f(undefined4 *param_1,facet *param_2)

{
  void *pvVar1;
  _Locimp *p_Var2;
  uint uVar3;
  _Locimp **unaff_ESI;
  
  pvVar1 = operator_new(0x34);
  if (pvVar1 == (void *)0x0) {
    p_Var2 = (_Locimp *)0x0;
  }
  else {
    p_Var2 = (_Locimp *)FUN_007cc38a(*param_1);
  }
  *unaff_ESI = p_Var2;
  if (param_2 != (facet *)0x0) {
    uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032f1490);
    std::locale::_Locimp::_Locimp_Addfac(*unaff_ESI,param_2,uVar3);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007ca29c(undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  facet *pfVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  int *unaff_EDI;
  undefined *puVar9;
  uint local_30;
  undefined4 local_2c;
  undefined local_28 [4];
  void *local_24;
  int local_20;
  locale *local_1c;
  undefined4 local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  if (unaff_EDI == (int *)0x0) {
    iVar8 = 0;
  }
  else {
    iVar8 = *(int *)(*unaff_EDI + 4) + (int)unaff_EDI;
  }
  uVar1 = *(uint *)(iVar8 + 0x10);
  local_8 = 0;
  local_2c = *(undefined4 *)(*(int *)(*unaff_EDI + 4) + 0x28 + (int)unaff_EDI);
  local_30 = local_30 & 0xffffff00;
  local_1c = (locale *)FUN_00417498(&local_20);
  std::_Lockit::_Lockit((_Lockit *)&local_18,0);
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032f1490);
  pfVar3 = std::locale::_Getfacet(local_1c,uVar2);
  local_11 = pfVar3 != (facet *)0x0;
  FUN_00823810();
  std::locale::~locale((locale *)&local_20);
  if (local_11 == '\0') {
    local_24 = operator_new(0x17c);
    local_8._0_1_ = 2;
    if (local_24 == (void *)0x0) {
      local_18 = 0;
    }
    else {
      local_18 = FUN_007ca506(local_24);
    }
    uVar5 = FUN_00417498(&local_20);
    local_8._0_1_ = 3;
    FUN_007ca23f(uVar5,local_18);
    local_8 = CONCAT31(local_8._1_3_,5);
    std::locale::~locale((locale *)&local_20);
    FUN_007cc42e(&local_24,&local_1c);
    std::locale::~locale((locale *)&local_24);
    iVar6 = *(int *)(*unaff_EDI + 4) + (int)unaff_EDI;
    FUN_007ca5a0(&local_30,iVar6,*(undefined2 *)(iVar6 + 0x30),param_1,local_30,local_2c);
    std::locale::~locale((locale *)&local_1c);
  }
  else {
    local_20 = *(int *)(*unaff_EDI + 4) + (int)unaff_EDI;
    uVar4 = FUN_00417498(&local_1c);
    local_8 = CONCAT31(local_8._1_3_,1);
    uVar7 = (uint)*(ushort *)(*(int *)(*unaff_EDI + 4) + 0x30 + (int)unaff_EDI);
    puVar9 = local_28;
    iVar6 = local_20;
    uVar2 = local_30;
    uVar5 = local_2c;
    FUN_007cae78(uVar4,puVar9,local_20,uVar7,param_1,local_30,local_2c);
    FUN_007ca5a0(puVar9,iVar6,uVar7,param_1,uVar2,uVar5);
    std::locale::~locale((locale *)&local_1c);
  }
  *(uint *)(iVar8 + 0x10) = uVar1 & 0xffff;
  return;
}



void __thiscall FUN_007ca415(short *param_1_00,undefined4 param_1,undefined4 param_2)

{
  short sVar1;
  short *psVar2;
  undefined4 *puVar3;
  undefined4 uStack_8;
  
  psVar2 = param_1_00;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  puVar3 = (undefined4 *)FUN_00475e31(param_2);
  FUN_007caee7(param_1,param_1_00,param_1_00 + ((int)psVar2 - (int)(param_1_00 + 1) >> 1),uStack_8,
               *puVar3,puVar3[1],puVar3[2],puVar3[3]);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

facet * FUN_007ca469(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7ca475;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032efea8;
  local_8 = 0;
  local_14[0] = DAT_032efea8;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032f148c);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = FUN_007cacf7(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032efea8 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007ca506(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined auStack_ec [108];
  undefined4 uStack_80;
  undefined *puStack_7c;
  undefined auStack_78 [16];
  undefined4 uStack_68;
  undefined *puStack_64;
  undefined auStack_60 [68];
  undefined *local_1c;
  undefined *local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7ca512;
  local_14 = auStack_60;
  puStack_64 = auStack_60;
  uStack_68 = 0x7ca523;
  FUN_007c9982();
  local_18 = auStack_78;
  puStack_7c = auStack_78;
  local_8 = 0;
  uStack_80 = 0x7ca536;
  FUN_007c9b63();
  local_1c = auStack_ec;
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_007c9b04(auStack_ec);
  local_8 = 0xffffffff;
  FUN_007c9da6(L"%Y-%b-%d %H:%M:%S%F %z");
  local_8 = 2;
  *param_1 = boost::date_time::
             time_facet<class_boost::posix_time::ptime,wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
             ::vftable;
  uVar1 = basic_string<>(&DAT_03059e38);
  local_8 = CONCAT31(local_8._1_3_,3);
  FUN_0076a51a(param_1 + 0x58,uVar1,L"%O:%M:%S%F");
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_007ca5a0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined *param_3,
            undefined4 *param_4,undefined4 param_5,undefined4 param_6)

{
  undefined4 uVar1;
  undefined4 uVar2;
  short *psVar3;
  char cVar4;
  short *psVar5;
  int iVar6;
  int *piVar7;
  uint uVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  undefined4 uStack_168;
  undefined4 uStack_164;
  undefined4 uStack_160;
  undefined4 uStack_15c;
  undefined *puStack_158;
  undefined **ppuStack_154;
  undefined **ppuStack_150;
  undefined local_13c [128];
  int *local_bc;
  undefined4 local_b8 [2];
  undefined local_b0 [28];
  undefined4 local_94;
  undefined4 local_90;
  undefined2 *local_8c;
  undefined4 *local_88;
  undefined2 *local_84;
  undefined2 *local_80;
  undefined4 *local_7c;
  char local_75;
  undefined local_74 [8];
  undefined local_6c [24];
  undefined4 local_54;
  undefined local_4c [20];
  int local_38;
  undefined4 local_34;
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 300;
  local_8._0_1_ = 0xaf;
  local_8._1_3_ = 0x7ca5;
  local_94 = param_1;
  local_90 = param_2;
  uVar1 = param_4[1];
  uVar2 = *param_4;
  local_7c = param_4;
  puStack_158 = (undefined *)0x7ca5db;
  ppuStack_154 = (undefined **)uVar2;
  ppuStack_150 = (undefined **)uVar1;
  local_bc = param_1_00;
  cVar4 = FUN_00496d51();
  if (cVar4 == '\0') {
    puStack_158 = (undefined *)0x7ca5ea;
    ppuStack_154 = (undefined **)uVar2;
    ppuStack_150 = (undefined **)uVar1;
    cVar4 = FUN_0043bd84();
    if (cVar4 == '\0') {
      puStack_158 = (undefined *)0x7ca5f7;
      ppuStack_154 = (undefined **)uVar2;
      ppuStack_150 = (undefined **)uVar1;
      cVar4 = FUN_0043bd9c();
      if (cVar4 == '\0') {
        ppuStack_150 = (undefined **)(param_1_00 + 2);
        ppuStack_154 = (undefined **)0x7ca63f;
        basic_string<>();
        local_8 = 0;
        psVar3 = &DAT_03059f6c;
        do {
          psVar5 = psVar3;
          psVar3 = psVar5 + 1;
        } while (*psVar5 != 0);
        local_88 = (undefined4 *)(&DAT_03059f6c + ((int)(psVar5 + -0x182cfb6) >> 1));
        local_8c = &DAT_03059f6c;
        psVar3 = &DAT_03059f64;
        do {
          psVar5 = psVar3;
          psVar3 = psVar5 + 1;
        } while (*psVar5 != 0);
        local_80 = &DAT_03059f64 + ((int)(psVar5 + -0x182cfb2) >> 1);
        ppuStack_150 = (undefined **)local_30;
        local_84 = &DAT_03059f64;
        ppuStack_154 = (undefined **)0x7ca6a6;
        FUN_007cafe7();
        psVar3 = &DAT_00d2b2fc;
        do {
          psVar5 = psVar3;
          psVar3 = psVar5 + 1;
        } while (*psVar5 != 0);
        local_80 = &DAT_00d2b2fc + ((int)(psVar5 + -0x69597e) >> 1);
        local_84 = &DAT_00d2b2fc;
        psVar3 = &DAT_03059f80;
        do {
          psVar5 = psVar3;
          psVar3 = psVar5 + 1;
        } while (*psVar5 != 0);
        local_88 = (undefined4 *)(&DAT_03059f80 + ((int)(psVar5 + -0x182cfc0) >> 1));
        ppuStack_150 = (undefined **)local_30;
        local_8c = &DAT_03059f80;
        ppuStack_154 = (undefined **)0x7ca709;
        FUN_007cafe7();
        ppuStack_150 = (undefined **)0x0;
        local_34 = 7;
        ppuStack_154 = (undefined **)0x7ca71a;
        FUN_0040180b();
        ppuStack_150 = (undefined **)0x0;
        local_8._0_1_ = 1;
        ppuStack_154 = (undefined **)PTR_DAT_032a2dbc;
        puStack_158 = (undefined *)0x7ca72d;
        iVar6 = FUN_0046bfb4();
        if (iVar6 != -1) {
          ppuStack_150 = (undefined **)local_7c;
          ppuStack_154 = (undefined **)&local_84;
          puStack_158 = (undefined *)0x7ca742;
          FUN_00496cf1();
          puStack_158 = (undefined *)0x0;
          uStack_15c = 0x7ca751;
          puStack_158 = (undefined *)FUN_007cadbe();
          ppuStack_150 = (undefined **)0xffffffff;
          ppuStack_154 = (undefined **)0x0;
          local_8._0_1_ = 2;
          uStack_15c = 0x7ca764;
          FID_conflict_assign();
          ppuStack_150 = (undefined **)0x0;
          ppuStack_154 = (undefined **)0x1;
          puStack_158 = (undefined *)0x7ca770;
          FUN_00401829();
          ppuStack_150 = (undefined **)&local_88;
          ppuStack_154 = (undefined **)0x7ca782;
          ppuStack_150 = (undefined **)FUN_00417498();
          local_8._0_1_ = 3;
          ppuStack_154 = (undefined **)0x7ca78c;
          piVar7 = (int *)FUN_004173bd();
          ppuStack_150 = (undefined **)0x7ca794;
          uVar8 = (**(code **)(*piVar7 + 4))();
          local_8._0_1_ = 1;
          ppuStack_150 = (undefined **)0x7ca7a6;
          std::locale::~locale((locale *)&local_88);
          ppuStack_150 = (undefined **)&DAT_03059dc0;
          ppuStack_154 = (undefined **)0x7ca7b3;
          basic_string<>();
          ppuStack_154 = (undefined **)0x1;
          local_8._0_1_ = 4;
          puStack_158 = (undefined *)0x7ca7c1;
          ppuStack_150 = (undefined **)(uVar8 & 0xffff);
          FID_conflict_append();
          ppuStack_150 = (undefined **)0xffffffff;
          ppuStack_154 = (undefined **)0x0;
          puStack_158 = local_4c;
          uStack_15c = 0x7ca7d0;
          FID_conflict_append();
          ppuStack_150 = (undefined **)local_6c;
          ppuStack_154 = (undefined **)local_30;
          puStack_158 = (undefined *)0x7ca7e2;
          FUN_007cb01b();
          ppuStack_150 = (undefined **)0x0;
          ppuStack_154 = (undefined **)0x1;
          local_8._0_1_ = 1;
          puStack_158 = (undefined *)0x7ca7f2;
          FUN_00401829();
        }
        ppuStack_150 = (undefined **)0x0;
        ppuStack_154 = (undefined **)PTR_DAT_032a2dd0;
        puStack_158 = (undefined *)0x7ca806;
        iVar6 = FUN_0046bfb4();
        if (iVar6 != -1) {
          ppuStack_150 = (undefined **)local_b0;
          ppuStack_154 = (undefined **)0x7ca819;
          iVar6 = FUN_007cad96();
          local_75 = *(int *)(iVar6 + 0x14) == 0;
          ppuStack_150 = (undefined **)0x0;
          ppuStack_154 = (undefined **)0x1;
          puStack_158 = (undefined *)0x7ca82d;
          FUN_004017b2();
          if (local_75 == '\0') {
            ppuStack_150 = (undefined **)local_b0;
            ppuStack_154 = (undefined **)0x7ca850;
            ppuStack_150 = (undefined **)FUN_007cadae();
            puStack_158 = local_30;
            ppuStack_154 = &PTR_DAT_032a2dd0;
            local_8._0_1_ = 5;
            uStack_15c = 0x7ca863;
            FUN_007cb0bd();
            ppuStack_150 = (undefined **)0x0;
            ppuStack_154 = (undefined **)0x1;
            local_8._0_1_ = 1;
            puStack_158 = (undefined *)0x7ca877;
            FUN_004017b2();
          }
          else {
            ppuStack_154 = (undefined **)local_30;
            ppuStack_150 = &PTR_DAT_032a2dd0;
            puStack_158 = (undefined *)0x7ca840;
            FUN_007cb071();
          }
        }
        ppuStack_150 = (undefined **)0x0;
        ppuStack_154 = (undefined **)PTR_DAT_032a2dc4;
        puStack_158 = (undefined *)0x7ca886;
        iVar6 = FUN_0046bfb4();
        if (iVar6 != -1) {
          ppuStack_150 = (undefined **)local_b0;
          ppuStack_154 = (undefined **)0x7ca89a;
          iVar6 = FUN_007cad96();
          local_75 = *(int *)(iVar6 + 0x14) == 0;
          ppuStack_150 = (undefined **)0x0;
          ppuStack_154 = (undefined **)0x1;
          puStack_158 = (undefined *)0x7ca8ae;
          FUN_004017b2();
          if (local_75 == '\0') {
            ppuStack_150 = (undefined **)local_b0;
            ppuStack_154 = (undefined **)0x7ca92b;
            ppuStack_150 = (undefined **)FUN_007cad96();
            puStack_158 = local_30;
            ppuStack_154 = &PTR_DAT_032a2dc4;
            local_8._0_1_ = 8;
            uStack_15c = 0x7ca93e;
            FUN_007cb0bd();
            ppuStack_150 = (undefined **)0x0;
            ppuStack_154 = (undefined **)0x1;
            local_8._0_1_ = 1;
            puStack_158 = (undefined *)0x7ca952;
            FUN_004017b2();
          }
          else {
            ppuStack_150 = (undefined **)local_13c;
            ppuStack_154 = (undefined **)0x7ca8bf;
            FUN_00449269();
            local_8._0_1_ = 6;
            ppuStack_150 = (undefined **)PTR_DAT_032a2dc4;
            puStack_158 = local_13c;
            uStack_15c = 0x7ca8d6;
            ppuStack_154 = (undefined **)FUN_00745a85();
            puStack_158 = (undefined *)0x7ca8de;
            FUN_0040e4a0();
            ppuStack_150 = (undefined **)0x7ca8f1;
            ppuStack_150 = (undefined **)FUN_004491d9();
            ppuStack_154 = (undefined **)local_30;
            local_8._0_1_ = 7;
            puStack_158 = (undefined *)0x7ca8ff;
            FUN_00475dcb();
            ppuStack_150 = (undefined **)0x0;
            ppuStack_154 = (undefined **)0x1;
            puStack_158 = (undefined *)0x7ca90e;
            FUN_00401829();
            local_8._0_1_ = 1;
            ppuStack_150 = (undefined **)0x7ca91d;
            FUN_0044922e();
          }
        }
        ppuStack_150 = (undefined **)0x0;
        ppuStack_154 = (undefined **)PTR_DAT_032a2dc0;
        puStack_158 = (undefined *)0x7ca961;
        iVar6 = FUN_0046bfb4();
        if (iVar6 != -1) {
          ppuStack_150 = (undefined **)local_b0;
          ppuStack_154 = (undefined **)0x7ca975;
          iVar6 = FUN_007cad96();
          local_75 = *(int *)(iVar6 + 0x14) == 0;
          ppuStack_150 = (undefined **)0x0;
          ppuStack_154 = (undefined **)0x1;
          puStack_158 = (undefined *)0x7ca989;
          FUN_004017b2();
          if (local_75 == '\0') {
            ppuStack_150 = (undefined **)local_b0;
            ppuStack_154 = (undefined **)0x7caa06;
            ppuStack_150 = (undefined **)FUN_007cad96();
            puStack_158 = local_30;
            ppuStack_154 = &PTR_DAT_032a2dc0;
            local_8._0_1_ = 0xb;
            uStack_15c = 0x7caa19;
            FUN_007cb0bd();
            ppuStack_150 = (undefined **)0x0;
            ppuStack_154 = (undefined **)0x1;
            local_8._0_1_ = 1;
            puStack_158 = (undefined *)0x7caa2d;
            FUN_004017b2();
          }
          else {
            ppuStack_150 = (undefined **)local_13c;
            ppuStack_154 = (undefined **)0x7ca99a;
            FUN_00449269();
            local_8._0_1_ = 9;
            ppuStack_150 = (undefined **)PTR_DAT_032a2dc0;
            puStack_158 = local_13c;
            uStack_15c = 0x7ca9b1;
            ppuStack_154 = (undefined **)FUN_00745a85();
            puStack_158 = (undefined *)0x7ca9b9;
            FUN_0040e4a0();
            ppuStack_150 = (undefined **)0x7ca9cc;
            ppuStack_150 = (undefined **)FUN_004491d9();
            ppuStack_154 = (undefined **)local_30;
            local_8._0_1_ = 10;
            puStack_158 = (undefined *)0x7ca9da;
            FUN_00475dcb();
            ppuStack_150 = (undefined **)0x0;
            ppuStack_154 = (undefined **)0x1;
            puStack_158 = (undefined *)0x7ca9e9;
            FUN_00401829();
            local_8._0_1_ = 1;
            ppuStack_150 = (undefined **)0x7ca9f8;
            FUN_0044922e();
          }
        }
        ppuStack_150 = (undefined **)0x0;
        ppuStack_154 = (undefined **)PTR_DAT_032a2dcc;
        puStack_158 = (undefined *)0x7caa3c;
        iVar6 = FUN_0046bfb4();
        if (iVar6 != -1) {
          ppuStack_150 = (undefined **)local_b0;
          ppuStack_154 = (undefined **)0x7caa4c;
          iVar6 = FUN_007cad96();
          local_75 = *(int *)(iVar6 + 0x14) == 0;
          ppuStack_150 = (undefined **)0x0;
          ppuStack_154 = (undefined **)0x1;
          puStack_158 = (undefined *)0x7caa60;
          FUN_004017b2();
          if (local_75 == '\0') {
            ppuStack_150 = (undefined **)local_b0;
            ppuStack_154 = (undefined **)0x7caa83;
            ppuStack_150 = (undefined **)FUN_007cad96();
            puStack_158 = local_30;
            ppuStack_154 = &PTR_DAT_032a2dcc;
            local_8._0_1_ = 0xc;
            uStack_15c = 0x7caa96;
            FUN_007cb0bd();
            ppuStack_150 = (undefined **)0x0;
            ppuStack_154 = (undefined **)0x1;
            local_8._0_1_ = 1;
            puStack_158 = (undefined *)0x7caaaa;
            FUN_004017b2();
          }
          else {
            ppuStack_154 = (undefined **)local_30;
            ppuStack_150 = &PTR_DAT_032a2dcc;
            puStack_158 = (undefined *)0x7caa73;
            FUN_007cb071();
          }
        }
        ppuStack_150 = (undefined **)0x0;
        ppuStack_154 = (undefined **)PTR_DAT_032a2dc8;
        puStack_158 = (undefined *)0x7caab9;
        iVar6 = FUN_0046bfb4();
        if (iVar6 != -1) {
          ppuStack_150 = (undefined **)local_b0;
          ppuStack_154 = (undefined **)0x7caac9;
          iVar6 = FUN_007cad96();
          local_75 = *(int *)(iVar6 + 0x14) == 0;
          ppuStack_150 = (undefined **)0x0;
          ppuStack_154 = (undefined **)0x1;
          puStack_158 = (undefined *)0x7caadd;
          FUN_004017b2();
          if (local_75 == '\0') {
            ppuStack_150 = (undefined **)local_b0;
            ppuStack_154 = (undefined **)0x7cab00;
            ppuStack_150 = (undefined **)FUN_007cad96();
            puStack_158 = local_30;
            ppuStack_154 = &PTR_DAT_032a2dc8;
            local_8._0_1_ = 0xd;
            uStack_15c = 0x7cab13;
            FUN_007cb0bd();
            ppuStack_150 = (undefined **)0x0;
            ppuStack_154 = (undefined **)0x1;
            local_8._0_1_ = 1;
            puStack_158 = (undefined *)0x7cab27;
            FUN_004017b2();
          }
          else {
            ppuStack_154 = (undefined **)local_30;
            ppuStack_150 = &PTR_DAT_032a2dc8;
            puStack_158 = (undefined *)0x7caaf0;
            FUN_007cb071();
          }
        }
        ppuStack_150 = (undefined **)0x0;
        ppuStack_154 = (undefined **)PTR_DAT_032a2db4;
        puStack_158 = (undefined *)0x7cab36;
        iVar6 = FUN_0046bfb4();
        if (iVar6 != -1) {
          if (local_38 == 0) {
            ppuStack_150 = (undefined **)local_7c;
            ppuStack_154 = (undefined **)&local_84;
            puStack_158 = (undefined *)0x7cab4b;
            FUN_00496cf1();
            puStack_158 = (undefined *)0x0;
            uStack_15c = 0x7cab5a;
            puStack_158 = (undefined *)FUN_007cadbe();
            ppuStack_150 = (undefined **)0xffffffff;
            ppuStack_154 = (undefined **)0x0;
            local_8._0_1_ = 0xe;
            uStack_15c = 0x7cab6d;
            FID_conflict_assign();
            ppuStack_150 = (undefined **)0x0;
            ppuStack_154 = (undefined **)0x1;
            local_8._0_1_ = 1;
            puStack_158 = (undefined *)0x7cab7a;
            FUN_00401829();
          }
          ppuStack_150 = (undefined **)local_4c;
          ppuStack_154 = (undefined **)local_30;
          puStack_158 = (undefined *)0x7cab8c;
          FUN_007cb01b();
        }
        ppuStack_150 = (undefined **)0x0;
        ppuStack_154 = (undefined **)PTR_DAT_032a2db8;
        puStack_158 = (undefined *)0x7caba0;
        iVar6 = FUN_0046bfb4();
        if (iVar6 != -1) {
          ppuStack_150 = (undefined **)local_7c;
          ppuStack_154 = (undefined **)&local_84;
          puStack_158 = (undefined *)0x7cabb4;
          FUN_00496cf1();
          puStack_158 = (undefined *)0x1;
          uStack_15c = 0x7cabc3;
          puStack_158 = (undefined *)FUN_007cadbe();
          ppuStack_150 = (undefined **)0xffffffff;
          ppuStack_154 = (undefined **)0x0;
          local_8._0_1_ = 0xf;
          uStack_15c = 0x7cabd6;
          FID_conflict_assign();
          ppuStack_150 = (undefined **)0x0;
          ppuStack_154 = (undefined **)0x1;
          local_8._0_1_ = 1;
          puStack_158 = (undefined *)0x7cabe3;
          FUN_00401829();
          if (local_38 == 0) {
            ppuStack_154 = (undefined **)local_30;
            ppuStack_150 = &PTR_DAT_032a2db8;
            puStack_158 = (undefined *)0x7cac7d;
            FUN_007cb071();
          }
          else {
            ppuStack_150 = (undefined **)&local_88;
            ppuStack_154 = (undefined **)0x7cabfe;
            ppuStack_150 = (undefined **)FUN_00417498();
            local_8._0_1_ = 0x10;
            ppuStack_154 = (undefined **)0x7cac08;
            piVar7 = (int *)FUN_004173bd();
            ppuStack_150 = (undefined **)0x7cac10;
            uVar8 = (**(code **)(*piVar7 + 4))();
            ppuStack_150 = (undefined **)0x7cac1e;
            std::locale::~locale((locale *)&local_88);
            ppuStack_150 = (undefined **)0x0;
            local_54 = 7;
            ppuStack_154 = (undefined **)0x7cac2e;
            FUN_0040180b();
            ppuStack_154 = (undefined **)0x1;
            local_8._0_1_ = 0x11;
            puStack_158 = (undefined *)0x7cac3c;
            ppuStack_150 = (undefined **)(uVar8 & 0xffff);
            FID_conflict_append();
            ppuStack_150 = (undefined **)0xffffffff;
            ppuStack_154 = (undefined **)0x0;
            puStack_158 = local_4c;
            uStack_15c = 0x7cac4b;
            FID_conflict_append();
            ppuStack_150 = (undefined **)local_6c;
            ppuStack_154 = (undefined **)local_30;
            puStack_158 = (undefined *)0x7cac5d;
            FUN_007cb01b();
            ppuStack_150 = (undefined **)0x0;
            ppuStack_154 = (undefined **)0x1;
            local_8._0_1_ = 1;
            puStack_158 = (undefined *)0x7cac6d;
            FUN_00401829();
          }
        }
        ppuStack_150 = (undefined **)local_7c;
        ppuStack_154 = (undefined **)local_74;
        puStack_158 = (undefined *)0x7cac8b;
        puVar9 = (undefined4 *)FUN_007cc2a0();
        puStack_158 = (undefined *)0x9;
        local_88 = &uStack_168;
        puVar10 = local_b8;
        for (iVar6 = 9; iVar6 != 0; iVar6 = iVar6 + -1) {
          *puVar10 = *puVar9;
          puVar9 = puVar9 + 1;
          puVar10 = puVar10 + 1;
        }
        basic_string<>(local_30);
        (**(code **)(*local_bc + 0x10))(local_94,param_5,param_6,local_90,param_3,local_b8);
        uStack_168 = 0;
        FUN_00401829(1);
        uStack_168 = 0;
        FUN_00401829(1);
        goto LAB_007cace9;
      }
    }
  }
  ppuStack_150 = (undefined **)&local_7c;
  ppuStack_154 = (undefined **)0x7ca609;
  FUN_00496e91();
  iVar6 = *param_1_00;
  ppuStack_150 = (undefined **)0x7ca613;
  ppuStack_150 = (undefined **)FUN_0049d01c();
  ppuStack_154 = (undefined **)param_3;
  puStack_158 = (undefined *)local_90;
  uStack_15c = param_6;
  uStack_160 = param_5;
  uStack_164 = local_94;
  uStack_168 = 0x7ca62e;
  (**(code **)(iVar6 + 0xc))();
LAB_007cace9:
  uStack_168 = 0x7cacf4;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007cacf7(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0x7cad06;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x14);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = time_put<>(uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 5;
}



undefined4 FUN_007cad96(undefined4 param_1)

{
  FUN_007cae2b(param_1,0);
  return param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_007cadae(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1);
  return param_1;
}



void FUN_007cadbe(char param_1)

{
  undefined4 *in_EAX;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_ESI;
  longlong lVar1;
  undefined4 uVar2;
  
  uVar2 = 0;
  lVar1 = __allrem(*in_EAX,in_EAX[1],1000000,0);
  if ((param_1 == '\0') || (lVar1 != 0)) {
    FUN_0043b52a(lVar1,6,uVar2);
    FUN_007cb12f();
  }
  else {
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_ESI)
    ;
  }
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::time_put<char,class std::ostreambuf_iterator<char,struct
// std::char_traits<char> > >::time_put<char,class std::ostreambuf_iterator<char,struct
// std::char_traits<char> > >(class std::_Locinfo const &,unsigned int)
//  public: __thiscall std::time_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::time_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::time_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::time_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release

undefined4 * __thiscall time_put<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::
                time_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                ::vftable;
  param_1_00[2] = 0;
  Init(param_1);
  return param_1_00;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_007cae2b(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1,(char *)&PTR_02bd3fc0);
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: void __thiscall std::time_put<char,class std::ostreambuf_iterator<char,struct
// std::char_traits<char> > >::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::time_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::time_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Init(class std::_Locinfo const &)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release

void __thiscall Init(int param_1_00,void *param_1)

{
  undefined4 *puVar1;
  _Collvec _Var2;
  
  _Var2 = __Getcoll();
  *(_Collvec *)(param_1_00 + 0xc) = _Var2;
  puVar1 = (undefined4 *)FUN_007cb906(&param_1);
  *(undefined4 *)(param_1_00 + 8) = *puVar1;
  *puVar1 = 0;
  _free(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

facet * FUN_007cae78(locale *param_1)

{
  code *pcVar1;
  uint uVar2;
  facet *pfVar3;
  facet *pfVar4;
  bad_cast local_20 [12];
  _Lockit local_14 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7cae84;
  std::_Lockit::_Lockit(local_14,0);
  pfVar4 = DAT_032efeac;
  local_8 = 0;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032f1490);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar4, pfVar4 == (facet *)0x0)) {
    std::bad_cast::bad_cast(local_20,"bad cast");
    __CxxThrowException_8(local_20,&DAT_03115570);
    pcVar1 = (code *)swi(3);
    pfVar4 = (facet *)(*pcVar1)();
    return pfVar4;
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



void FUN_007caee7(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 uStack_2c;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  
  FUN_00412721(&local_44);
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            (param_1,&local_34);
  puVar2 = (undefined4 *)FUN_004760e5(&param_2,local_34,local_30,local_44,local_40);
  local_44 = *puVar2;
  local_40 = puVar2[1];
  uStack_3c = puVar2[2];
  uStack_38 = puVar2[3];
  local_28 = param_5;
  uStack_24 = param_6;
  uStack_20 = param_7;
  uStack_1c = param_8;
  local_34 = param_2;
  local_30 = param_3;
  uStack_2c = param_4;
  cVar1 = FUN_004761e2();
  if (cVar1 != '\0') {
    FUN_007cb271(param_1,local_34,local_30,uStack_2c,local_28,uStack_24,uStack_20,uStack_1c,local_44
                 ,local_40,uStack_3c,uStack_38,local_28,uStack_24,uStack_20,uStack_1c);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007caf99(int param_1_00,int param_1,undefined4 param_2)

{
  undefined4 *unaff_EDI;
  undefined local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x7cafa5;
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0x22) {
    basic_string<>(param_1_00);
    local_8 = 0;
    FUN_0041b0a1(local_2c);
    local_8 = 0xffffffff;
    FUN_00401829(1,0);
  }
  *unaff_EDI = param_2;
  return;
}



void __thiscall FUN_007cafe7(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_005f1df3(param_1,*param_1_00,param_1_00[1]);
  return;
}



void FUN_007cb01b(undefined4 param_1,undefined4 param_2)

{
  short sVar1;
  short *psVar2;
  short **in_EAX;
  short *psVar3;
  undefined4 *puVar4;
  undefined4 uStack_8;
  
  psVar2 = *in_EAX;
  psVar3 = psVar2;
  do {
    sVar1 = *psVar3;
    psVar3 = psVar3 + 1;
  } while (sVar1 != 0);
  puVar4 = (undefined4 *)FUN_00475e31(param_2);
  FUN_007caee7(param_1,psVar2,psVar2 + ((int)psVar3 - (int)(psVar2 + 1) >> 1),uStack_8,*puVar4,
               puVar4[1],puVar4[2],puVar4[3]);
  return;
}



void FUN_007cb071(undefined4 param_1,short **param_2)

{
  short sVar1;
  short *psVar2;
  short *psVar3;
  
  psVar2 = *param_2;
  psVar3 = psVar2;
  do {
    sVar1 = *psVar3;
    psVar3 = psVar3 + 1;
  } while (sVar1 != 0);
  FUN_00475efd(psVar2,psVar2 + ((int)psVar3 - (int)(psVar2 + 1) >> 1));
  return;
}



void FUN_007cb0bd(undefined4 param_1,short **param_2,undefined4 param_3)

{
  short sVar1;
  short *psVar2;
  undefined4 *puVar3;
  short *psVar4;
  undefined4 uStack_c;
  
  puVar3 = (undefined4 *)FUN_005f421b(param_3);
  psVar2 = *param_2;
  psVar4 = psVar2;
  do {
    sVar1 = *psVar4;
    psVar4 = psVar4 + 1;
  } while (sVar1 != 0);
  FUN_007cb1d3(param_1,psVar2,psVar2 + ((int)psVar4 - (int)(psVar2 + 1) >> 1),uStack_c,*puVar3,
               puVar3[1],puVar3[2],puVar3[3]);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007cb12f(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  int *piVar2;
  undefined local_9c [128];
  undefined local_1c [4];
  locale local_18 [4];
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x7cb13e;
  local_14 = 0;
  FUN_00449269(local_9c);
  local_8 = 1;
  uVar1 = FUN_00823b7b();
  FUN_007cc42e(local_18,uVar1);
  std::locale::~locale(local_18);
  FUN_00823cac(local_1c,param_4);
  piVar2 = (int *)FUN_00415f60();
  *(undefined2 *)((int)piVar2 + *(int *)(*piVar2 + 4) + 0x30) = 0x30;
  FUN_00469622(local_9c,param_2,param_3);
  FUN_004491d9();
  local_14 = 1;
  local_8 = local_8 & 0xffffff00;
  FUN_0044922e();
  return param_1;
}



void FUN_007cb1d3(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  char cVar6;
  undefined4 *puVar7;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_00412721(&local_c);
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            (param_1,&local_1c);
  puVar7 = (undefined4 *)FUN_004760e5(&param_2,local_1c,local_18,local_c,local_8);
  uVar5 = param_8;
  uVar4 = param_7;
  uVar3 = param_6;
  uVar2 = param_5;
  uVar1 = param_2;
  local_14 = *puVar7;
  uStack_10 = puVar7[1];
  local_c = puVar7[2];
  local_8 = puVar7[3];
  local_1c = param_3;
  local_18 = param_4;
  cVar6 = FUN_004761e2();
  if (cVar6 != '\0') {
    FUN_007cb462(param_1,uVar1,local_1c,local_18,uVar2,uVar3,uVar4,uVar5,local_14,uStack_10,local_c,
                 local_8,uVar2,uVar3,uVar4,uVar5);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007cb271(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  char cVar3;
  undefined4 *puVar4;
  uint uVar5;
  undefined4 param_5;
  undefined4 param_6;
  undefined4 param_7;
  undefined4 param_8;
  undefined4 param_9;
  undefined4 param_10;
  undefined4 in_stack_0000002c;
  uint param_11;
  undefined4 param_12;
  undefined4 in_stack_00000038;
  undefined4 in_stack_0000003c;
  undefined4 in_stack_00000040;
  undefined local_74 [8];
  undefined4 local_6c [6];
  uint local_54;
  int local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  uint local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 *local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  uint local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x84;
  local_8 = 0x7cb280;
  local_4c = param_9;
  local_48 = param_10;
  local_44 = in_stack_0000002c;
  local_40 = param_11;
  local_3c = param_12;
  local_38 = in_stack_00000038;
  local_34 = in_stack_0000003c;
  local_30 = in_stack_00000040;
  local_2c = &stack0x00000014;
  FUN_00467a19();
  local_8 = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            (param_1,&local_28);
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            (param_1,&local_20);
  while( true ) {
    cVar3 = FUN_008477d0(&local_44);
    if (cVar3 == '\0') break;
    puVar4 = (undefined4 *)FUN_00476507(local_28,local_24,local_20,local_1c,local_4c,local_48);
    uVar1 = local_44;
    local_28 = *puVar4;
    local_24 = puVar4[1];
    local_1c = local_40;
    uVar5 = local_50 + local_54;
    local_20 = local_44;
    if (uVar5 < local_54) {
      FUN_00a3fb10();
    }
    FUN_007cb653(local_6c,param_11,local_6c[0],uVar5,local_3c,local_38,local_34,local_30);
    FUN_00412721(&local_18);
    puVar4 = (undefined4 *)FUN_004760e5(&stack0x00000008,uVar1,local_40,local_18,local_14);
    local_4c = *puVar4;
    local_48 = puVar4[1];
    local_44 = puVar4[2];
    local_40 = puVar4[3];
    cVar3 = FUN_00412797(&local_44);
    if (cVar3 == '\0') {
      local_3c = param_5;
      local_38 = param_6;
      local_34 = param_7;
      local_30 = param_8;
    }
  }
  FUN_00412721(&local_18);
  puVar4 = (undefined4 *)FUN_00476507(local_28,local_24,local_20,local_1c,local_18,local_14);
  uVar1 = *puVar4;
  uVar2 = puVar4[1];
  if (local_50 == 0) {
    FUN_00412721(&local_18);
    FUN_004320f0(local_74,uVar1,uVar2,local_18,local_14);
  }
  else {
    local_1c = local_50 + local_54;
    uVar5 = local_54;
    if (local_1c < local_54) {
      FUN_00a3fb10();
      uVar5 = local_54;
    }
    uVar1 = local_6c[0];
    if (local_50 + uVar5 < uVar5) {
      FUN_00a3fb10();
    }
    FUN_00412721(&local_18);
    FUN_0047657f(param_1,local_18,local_14,local_6c[0],uVar5,uVar1,local_1c);
  }
  FUN_005f489f();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007cb462(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  char cVar3;
  undefined4 *puVar4;
  uint uVar5;
  undefined4 param_5;
  undefined4 param_6;
  undefined4 param_7;
  undefined4 param_8;
  undefined4 param_9;
  undefined4 param_10;
  undefined4 in_stack_0000002c;
  uint param_11;
  undefined4 param_12;
  undefined4 in_stack_00000038;
  undefined4 in_stack_0000003c;
  undefined4 in_stack_00000040;
  undefined local_74 [8];
  undefined4 local_6c [6];
  uint local_54;
  int local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  uint local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 *local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  uint local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x84;
  local_8 = 0x7cb471;
  local_4c = param_9;
  local_48 = param_10;
  local_44 = in_stack_0000002c;
  local_40 = param_11;
  local_3c = param_12;
  local_38 = in_stack_00000038;
  local_34 = in_stack_0000003c;
  local_30 = in_stack_00000040;
  local_2c = &stack0x00000014;
  FUN_00467a19();
  local_8 = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            (param_1,&local_28);
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            (param_1,&local_20);
  while( true ) {
    cVar3 = FUN_008477d0(&local_44);
    if (cVar3 == '\0') break;
    puVar4 = (undefined4 *)FUN_00476507(local_28,local_24,local_20,local_1c,local_4c,local_48);
    uVar1 = local_44;
    local_28 = *puVar4;
    local_24 = puVar4[1];
    local_1c = local_40;
    uVar5 = local_50 + local_54;
    local_20 = local_44;
    if (uVar5 < local_54) {
      FUN_00a3fb10();
    }
    FUN_007cb79b(local_6c,param_11,local_6c[0],uVar5,local_3c,local_38,local_34,local_30);
    FUN_00412721(&local_18);
    puVar4 = (undefined4 *)FUN_004760e5(&stack0x00000008,uVar1,local_40,local_18,local_14);
    local_4c = *puVar4;
    local_48 = puVar4[1];
    local_44 = puVar4[2];
    local_40 = puVar4[3];
    cVar3 = FUN_00412797(&local_44);
    if (cVar3 == '\0') {
      local_3c = param_5;
      local_38 = param_6;
      local_34 = param_7;
      local_30 = param_8;
    }
  }
  FUN_00412721(&local_18);
  puVar4 = (undefined4 *)FUN_00476507(local_28,local_24,local_20,local_1c,local_18,local_14);
  uVar1 = *puVar4;
  uVar2 = puVar4[1];
  if (local_50 == 0) {
    FUN_00412721(&local_18);
    FUN_004320f0(local_74,uVar1,uVar2,local_18,local_14);
  }
  else {
    local_1c = local_50 + local_54;
    uVar5 = local_54;
    if (local_1c < local_54) {
      FUN_00a3fb10();
      uVar5 = local_54;
    }
    uVar1 = local_6c[0];
    if (local_50 + uVar5 < uVar5) {
      FUN_00a3fb10();
    }
    FUN_00412721(&local_18);
    FUN_0047657f(param_1,local_18,local_14,local_6c[0],uVar5,uVar1,local_1c);
  }
  FUN_005f489f();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007cb653(int *param_1,undefined4 param_2,int param_3,int param_4)

{
  uint uVar1;
  char cVar2;
  uint uVar3;
  wchar_t *pwVar4;
  
  uVar3 = param_1[6];
  if (param_1[7] + uVar3 < uVar3) {
    FUN_00a3fb10();
  }
  if ((param_3 == 0) || (param_3 != *param_1)) {
    FUN_00a3fb10();
  }
  uVar3 = param_4 - uVar3;
  uVar1 = param_1[7];
  cVar2 = FUN_00412797(&stack0x0000001c);
  if (cVar2 == '\0') {
    if (uVar3 < uVar1 - uVar3) {
      while (cVar2 = FUN_008477d0(&stack0x0000001c), cVar2 != '\0') {
        pwVar4 = std::
                 _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                 ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                              *)&stack0x00000014);
        FUN_00476a6a(pwVar4);
        FUN_00847800();
      }
      if (uVar3 == 0) {
                    // WARNING: Subroutine does not return
        FUN_00476ae4(param_1[7] - uVar1);
      }
                    // WARNING: Subroutine does not return
      FUN_00476ae4((param_1[7] - uVar1) + uVar3);
    }
    while (cVar2 = FUN_008477d0(&stack0x0000001c), cVar2 != '\0') {
      pwVar4 = std::
               _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
               ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                            *)&stack0x00000014);
      FUN_00476731(pwVar4);
      FUN_00847800();
    }
    if (uVar3 < uVar1) {
                    // WARNING: Subroutine does not return
      FUN_00476ae4(uVar1);
    }
  }
  return;
}



void Catch_All_007cb6dc(void)

{
  uint uVar1;
  int iVar2;
  int unaff_EBX;
  int unaff_EBP;
  
  iVar2 = *(int *)(unaff_EBP + 8);
  uVar1 = *(uint *)(unaff_EBP + -0x14);
  while (uVar1 < *(uint *)(iVar2 + 0x1c)) {
    FUN_00476709();
  }
  __CxxThrowException_8(0,0);
  iVar2 = *(int *)(iVar2 + 0x1c) - *(int *)(unaff_EBP + -0x14);
  if (unaff_EBX != 0) {
                    // WARNING: Subroutine does not return
    FUN_00476ae4(iVar2 + unaff_EBX);
  }
                    // WARNING: Subroutine does not return
  FUN_00476ae4(iVar2);
}



void Catch_All_007cb749(void)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int unaff_EBX;
  int unaff_EBP;
  int unaff_ESI;
  
  iVar2 = *(int *)(unaff_EBP + 8);
  uVar1 = *(uint *)(unaff_EBP + -0x14);
  while (uVar1 < *(uint *)(iVar2 + 0x1c)) {
    if ((*(int *)(iVar2 + 0x1c) != 0) &&
       (iVar3 = *(int *)(iVar2 + 0x1c) + -1, *(int *)(iVar2 + 0x1c) = iVar3, iVar3 == 0)) {
      *(undefined4 *)(iVar2 + 0x18) = 0;
    }
  }
  __CxxThrowException_8(0,0);
  iVar2 = *(int *)(unaff_ESI + 0x1c) - *(int *)(unaff_EBP + -0x14);
  if (unaff_EBX != 0) {
                    // WARNING: Subroutine does not return
    FUN_00476ae4(iVar2 + unaff_EBX);
  }
                    // WARNING: Subroutine does not return
  FUN_00476ae4(iVar2);
}



void FUN_007cb78c(void)

{
                    // WARNING: Subroutine does not return
  FUN_00476ae4();
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007cb79b(int *param_1,undefined4 param_2,int param_3,int param_4)

{
  char cVar1;
  uint uVar2;
  char *pcVar3;
  uint uVar4;
  uint local_1c;
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x7cb7a7;
  uVar2 = param_1[6];
  if (param_1[7] + uVar2 < uVar2) {
    FUN_00a3fb10();
  }
  if ((param_3 == 0) || (param_3 != *param_1)) {
    FUN_00a3fb10();
  }
  uVar2 = param_4 - uVar2;
  local_18 = param_1[7];
  uVar4 = local_18 - uVar2;
  cVar1 = FUN_008477a0(&stack0x0000001c);
  if (cVar1 == '\0') {
    if (uVar2 < uVar4) {
      local_8 = 0;
      while( true ) {
        cVar1 = FUN_008477d0(&stack0x0000001c);
        if (cVar1 == '\0') break;
        pcVar3 = std::
                 _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                 ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                              *)&stack0x00000014);
        local_1c = (uint)(ushort)(short)*pcVar3;
        FUN_00476a6a(&local_1c);
        std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
        ::operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      *)&stack0x00000014);
      }
      if (uVar2 != 0) {
                    // WARNING: Subroutine does not return
        FUN_00476ae4((param_1[7] - local_18) + uVar2);
      }
                    // WARNING: Subroutine does not return
      FUN_00476ae4(param_1[7] - local_18);
    }
    local_8 = 2;
    while( true ) {
      cVar1 = FUN_008477d0(&stack0x0000001c);
      if (cVar1 == '\0') break;
      pcVar3 = std::
               _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
               ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                            *)&stack0x00000014);
      local_1c = (uint)(ushort)(short)*pcVar3;
      FUN_00476731(&local_1c);
      std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *)&stack0x00000014);
    }
    if (uVar2 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00476ae4(local_18);
    }
  }
  return;
}



void Catch_All_007cb831(void)

{
  uint uVar1;
  int iVar2;
  int unaff_EBX;
  int unaff_EBP;
  
  iVar2 = *(int *)(unaff_EBP + 8);
  uVar1 = *(uint *)(unaff_EBP + -0x14);
  while (uVar1 < *(uint *)(iVar2 + 0x1c)) {
    FUN_00476709();
  }
  __CxxThrowException_8(0,0);
  iVar2 = *(int *)(iVar2 + 0x1c) - *(int *)(unaff_EBP + -0x14);
  if (unaff_EBX != 0) {
                    // WARNING: Subroutine does not return
    FUN_00476ae4(iVar2 + unaff_EBX);
  }
                    // WARNING: Subroutine does not return
  FUN_00476ae4(iVar2);
}



void Catch_All_007cb8b1(void)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int unaff_EBX;
  int unaff_EBP;
  int unaff_ESI;
  
  iVar2 = *(int *)(unaff_EBP + 8);
  uVar1 = *(uint *)(unaff_EBP + -0x14);
  while (uVar1 < *(uint *)(iVar2 + 0x1c)) {
    if ((*(int *)(iVar2 + 0x1c) != 0) &&
       (iVar3 = *(int *)(iVar2 + 0x1c) + -1, *(int *)(iVar2 + 0x1c) = iVar3, iVar3 == 0)) {
      *(undefined4 *)(iVar2 + 0x18) = 0;
    }
  }
  __CxxThrowException_8(0,0);
  iVar2 = *(int *)(unaff_ESI + 0x1c) - *(int *)(unaff_EBP + -0x14);
  if (unaff_EBX != 0) {
                    // WARNING: Subroutine does not return
    FUN_00476ae4(iVar2 + unaff_EBX);
  }
                    // WARNING: Subroutine does not return
  FUN_00476ae4(iVar2);
}



void FUN_007cb8f7(void)

{
                    // WARNING: Subroutine does not return
  FUN_00476ae4();
}



void ** FUN_007cb906(void **param_1)

{
  void *pvVar1;
  
  pvVar1 = __Gettnames();
  *param_1 = pvVar1;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007cb916(undefined4 *param_1)

{
  int iVar1;
  int unaff_EBX;
  
  param_1[0xf] = &DAT_00fafc18;
  param_1[0x11] = boost::exception_detail::clone_base::vftable;
  FUN_007cbc04(unaff_EBX);
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + 0x28;
  }
  FUN_00401200(param_1 + 10,iVar1);
  return param_1;
}



undefined4 FUN_007cb994(undefined4 param_1)

{
  FUN_007cb916(param_1);
  return param_1;
}



void FUN_007cb9a9(undefined4 param_1)

{
  undefined4 *unaff_ESI;
  
  FUN_007cbc4b(param_1);
  unaff_ESI[10] = boost::exception::vftable;
  unaff_ESI[0xb] = 0;
  unaff_ESI[0xc] = 0;
  unaff_ESI[0xd] = 0;
  unaff_ESI[0xe] = 0xffffffff;
  *unaff_ESI = boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>::
               vftable;
  unaff_ESI[10] =
       boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>::vftable;
  return;
}



void __fastcall FUN_007cb9e3(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  FUN_007cba1c();
  param_1[0x11] = boost::exception_detail::clone_base::vftable;
  return;
}



void FUN_007cba1c(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>::
               vftable;
  unaff_ESI[10] =
       boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>::vftable;
  unaff_ESI[10] = boost::exception::vftable;
  FUN_00401874();
  *unaff_ESI = std::out_of_range::vftable;
  FUN_00417cf8();
  return;
}



void FUN_007cba45(void)

{
  FUN_007cbb4b();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007cba4d(undefined4 *param_1)

{
  int iVar1;
  int unaff_EBX;
  
  param_1[0xf] = &DAT_00fafc18;
  param_1[0x11] = boost::exception_detail::clone_base::vftable;
  FUN_007cbc04(unaff_EBX);
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + 0x28;
  }
  FUN_00401200(param_1 + 10,iVar1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007cbacb(void)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  
  pvVar1 = operator_new(0x48);
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_007cba4d(pvVar1,local_14);
  }
  if (iVar2 != 0) {
    iVar2 = *(int *)(*(int *)(iVar2 + 0x3c) + 4) + 0x3c + iVar2;
  }
  return iVar2;
}



void FUN_007cbb18(void)

{
  FUN_007cbacb();
  return;
}



void __fastcall FUN_007cbb20(int param_1)

{
  code *pcVar1;
  undefined local_4c [72];
  
  clone_impl<>(param_1 + -0x44,1);
  __CxxThrowException_8(local_4c,&DAT_03115cc4);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007cbb43(void)

{
  FUN_007cbb20();
  return;
}



undefined4 __thiscall FUN_007cbb4b(undefined4 param_1_00,byte param_1)

{
  FUN_007cb9e3();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007cbb67(void)

{
  FUN_007cbb4b();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >(class
// boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class
// std::domain_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::evaluation_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::rounding_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error> > const &)
// 
// Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release

undefined4 * __thiscall clone_impl<>(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_007cbc04(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) = 0;
  return param_1_00;
}



undefined4 __thiscall FUN_007cbbe0(undefined4 param_1,byte param_2)

{
  FUN_007cba1c();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_007cbbfc(void)

{
  FUN_007cbbe0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007cbc04(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FUN_007cbc4b(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0x28;
  }
  FUN_00401569(iVar1);
  *param_1_00 = boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>::
                vftable;
  param_1_00[10] =
       boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_weekday>::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_007cbc4b(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00418bc1(param_1);
  *param_1_00 = boost::gregorian::bad_weekday::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007cbc63(void)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_a0 [72];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_58 [28];
  undefined **local_3c [13];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xcc;
  local_8 = 0x7cbc72;
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_58,"Weekday is out of range 0..6");
  local_8 = 0;
  FUN_00418bd9(uVar2);
  FUN_004017b2(1,0);
  local_3c[0] = boost::gregorian::bad_weekday::vftable;
  local_8 = 1;
  FUN_007cb9a9(local_3c);
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_007cb994(local_a0);
  __CxxThrowException_8(local_a0,&DAT_03115cc4);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007cbcda(void)

{
  ushort uVar1;
  undefined4 *in_EAX;
  uint uVar2;
  uint uVar3;
  ushort *unaff_EDI;
  undefined2 local_c;
  ushort uStack_a;
  ushort uStack_8;
  
  FUN_00496db3(&local_c,*in_EAX);
  uVar2 = (int)(0xe - (uint)uStack_a) / 0xc & 0xffff;
  uVar3 = CONCAT22(uStack_a,local_c) - uVar2 & 0xffff;
  uVar2 = (int)((uint)uStack_8 +
               ((((uVar2 * 0xc + -2 + CONCAT22(uStack_8,uStack_a) & 0xffff) * 0x1f) / 0xc +
                 (uVar3 >> 2) + uVar3 / 400) - uVar3 / 100) + uVar3) % 7;
  *unaff_EDI = 0;
  uVar1 = (ushort)uVar2;
  if ((uVar2 & 0xffff) != 0xffffffff) goto LAB_007cbd60;
  do {
    uVar1 = FUN_007cbc63();
LAB_007cbd60:
  } while (6 < uVar1);
  *unaff_EDI = uVar1;
  return;
}



void __thiscall FUN_007cbd6f(undefined4 *param_1_00,undefined2 *param_1)

{
  undefined2 local_c [4];
  
  FUN_00496db3(local_c,*param_1_00);
  *param_1 = local_c[0];
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007cbd90(undefined4 *param_1)

{
  int iVar1;
  int unaff_EBX;
  
  param_1[0xf] = &DAT_00fafc18;
  param_1[0x11] = boost::exception_detail::clone_base::vftable;
  FUN_007cc07e(unaff_EBX);
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + 0x28;
  }
  FUN_00401200(param_1 + 10,iVar1);
  return param_1;
}



undefined4 FUN_007cbe0e(undefined4 param_1)

{
  FUN_007cbd90(param_1);
  return param_1;
}



void FUN_007cbe23(undefined4 param_1)

{
  undefined4 *unaff_ESI;
  
  FUN_007cc0c5(param_1);
  unaff_ESI[10] = boost::exception::vftable;
  unaff_ESI[0xb] = 0;
  unaff_ESI[0xc] = 0;
  unaff_ESI[0xd] = 0;
  unaff_ESI[0xe] = 0xffffffff;
  *unaff_ESI = boost::exception_detail::
               error_info_injector<struct_boost::gregorian::bad_day_of_year>::vftable;
  unaff_ESI[10] =
       boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>::
       vftable;
  return;
}



void __fastcall FUN_007cbe5d(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  FUN_007cbe96();
  param_1[0x11] = boost::exception_detail::clone_base::vftable;
  return;
}



void FUN_007cbe96(void)

{
  undefined4 *unaff_ESI;
  
  *unaff_ESI = boost::exception_detail::
               error_info_injector<struct_boost::gregorian::bad_day_of_year>::vftable;
  unaff_ESI[10] =
       boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>::
       vftable;
  unaff_ESI[10] = boost::exception::vftable;
  FUN_00401874();
  *unaff_ESI = std::out_of_range::vftable;
  FUN_00417cf8();
  return;
}



void FUN_007cbebf(void)

{
  FUN_007cbfc5();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007cbec7(undefined4 *param_1)

{
  int iVar1;
  int unaff_EBX;
  
  param_1[0xf] = &DAT_00fafc18;
  param_1[0x11] = boost::exception_detail::clone_base::vftable;
  FUN_007cc07e(unaff_EBX);
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + 0x28;
  }
  FUN_00401200(param_1 + 10,iVar1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007cbf45(void)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  
  pvVar1 = operator_new(0x48);
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_007cbec7(pvVar1,local_14);
  }
  if (iVar2 != 0) {
    iVar2 = *(int *)(*(int *)(iVar2 + 0x3c) + 4) + 0x3c + iVar2;
  }
  return iVar2;
}



void FUN_007cbf92(void)

{
  FUN_007cbf45();
  return;
}



void __fastcall FUN_007cbf9a(int param_1)

{
  code *pcVar1;
  undefined local_4c [72];
  
  clone_impl<>(param_1 + -0x44,1);
  __CxxThrowException_8(local_4c,&DAT_03115d4c);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007cbfbd(void)

{
  FUN_007cbf9a();
  return;
}



undefined4 __thiscall FUN_007cbfc5(undefined4 param_1_00,byte param_1)

{
  FUN_007cbe5d();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007cbfe1(void)

{
  FUN_007cbfc5();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >::clone_impl<struct
// boost::exception_detail::error_info_injector<class std::domain_error> >(class
// boost::exception_detail::clone_impl<struct boost::exception_detail::error_info_injector<class
// std::domain_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::evaluation_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::evaluation_error> > const &)
//  public: __thiscall boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error>
// >::clone_impl<struct boost::exception_detail::error_info_injector<class
// boost::math::rounding_error> >(class boost::exception_detail::clone_impl<struct
// boost::exception_detail::error_info_injector<class boost::math::rounding_error> > const &)
// 
// Libraries: Visual Studio 2017 Release, Visual Studio 2019 Release

undefined4 * __thiscall clone_impl<>(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  }
  FUN_007cc07e(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) = 0;
  return param_1_00;
}



undefined4 __thiscall FUN_007cc05a(undefined4 param_1,byte param_2)

{
  FUN_007cbe96();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_007cc076(void)

{
  FUN_007cc05a();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007cc07e(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  FUN_007cc0c5(param_1);
  iVar1 = 0;
  if (param_1 != 0) {
    iVar1 = param_1 + 0x28;
  }
  FUN_00401569(iVar1);
  *param_1_00 = boost::exception_detail::
                error_info_injector<struct_boost::gregorian::bad_day_of_year>::vftable;
  param_1_00[10] =
       boost::exception_detail::error_info_injector<struct_boost::gregorian::bad_day_of_year>::
       vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_007cc0c5(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00418bc1(param_1);
  *param_1_00 = boost::gregorian::bad_day_of_year::vftable;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007cc0dd(void)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_a0 [72];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_58 [28];
  undefined **local_3c [13];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xcc;
  local_8 = 0x7cc0ec;
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_58,"Day of year value is out of range 1..366");
  local_8 = 0;
  FUN_00418bd9(uVar2);
  FUN_004017b2(1,0);
  local_3c[0] = boost::gregorian::bad_day_of_year::vftable;
  local_8 = 1;
  FUN_007cbe23(local_3c);
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_007cbe0e(local_a0);
  __CxxThrowException_8(local_a0,&DAT_03115d4c);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007cc154(void)

{
  int iVar1;
  ushort uVar2;
  undefined2 *puVar3;
  int *piVar4;
  undefined4 extraout_ECX;
  ushort *unaff_ESI;
  undefined4 uVar5;
  undefined4 extraout_var;
  undefined4 uVar6;
  undefined local_6 [2];
  
  FUN_0043abcd(1);
  uVar5 = extraout_ECX;
  uVar6 = extraout_var;
  FUN_0043b07c(1);
  puVar3 = (undefined2 *)FUN_007cbd6f(local_6);
  FUN_0043a6c3(*puVar3,uVar5,uVar6);
  piVar4 = (int *)FUN_0049d03c();
  iVar1 = *piVar4;
  uVar2 = (ushort)(iVar1 + 1U);
  *unaff_ESI = 1;
  if (1 < (iVar1 + 1U & 0xffff) + 1) goto LAB_007cc1ae;
  do {
    uVar2 = FUN_007cc0dd();
LAB_007cc1ae:
  } while (0x16e < uVar2);
  *unaff_ESI = uVar2;
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_007cc1c2(undefined4 *param_1)

{
  ushort uVar1;
  undefined4 uVar2;
  char cVar3;
  int iVar4;
  ushort *puVar5;
  undefined4 *unaff_EBX;
  undefined4 *puVar6;
  char *pcVar7;
  undefined **local_64 [11];
  ushort local_38;
  ushort local_36;
  ushort local_34;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x54;
  local_8 = 0x7cc1ce;
  cVar3 = FUN_0049cf9a();
  if (cVar3 != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"tm unable to handle ");
    local_8 = 0;
    iVar4 = FUN_0049d01c();
    if (iVar4 == 0) {
      pcVar7 = "not-a-date-time value";
    }
    else if (iVar4 == 1) {
      pcVar7 = "-infinity date value";
    }
    else if (iVar4 == 2) {
      pcVar7 = "+infinity date value";
    }
    else {
      pcVar7 = "a special date value";
    }
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_30,pcVar7);
    FUN_00417ca0(local_30);
    local_64[0] = std::out_of_range::vftable;
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_0049d3f9(local_64);
  }
  uVar2 = *param_1;
  puVar6 = unaff_EBX;
  for (iVar4 = 9; iVar4 != 0; iVar4 = iVar4 + -1) {
    *puVar6 = 0;
    puVar6 = puVar6 + 1;
  }
  FUN_00496db3(&local_38,uVar2);
  unaff_EBX[5] = local_38 - 0x76c;
  unaff_EBX[4] = local_36 - 1;
  unaff_EBX[3] = (uint)local_34;
  puVar5 = (ushort *)FUN_007cbcda();
  unaff_EBX[6] = (uint)*puVar5;
  puVar5 = (ushort *)FUN_007cc154(param_1);
  uVar1 = *puVar5;
  unaff_EBX[8] = 0xffffffff;
  unaff_EBX[7] = uVar1 - 1;
  FUN_00a421fb();
  return;
}



undefined4 * FUN_007cc2a0(undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_00496e91(&local_8);
  puVar1 = (undefined4 *)FUN_007cc1c2();
  puVar4 = param_1;
  for (iVar3 = 9; iVar3 != 0; iVar3 = iVar3 + -1) {
    *puVar4 = *puVar1;
    puVar1 = puVar1 + 1;
    puVar4 = puVar4 + 1;
  }
  FUN_00496cf1(&local_c,param_2);
  uVar2 = __alldiv(local_c,local_8,3600000000,0);
  param_1[2] = uVar2;
  uVar2 = FUN_00496cd0();
  param_1[1] = uVar2;
  uVar2 = FUN_00496caf();
  param_1[8] = 0xffffffff;
  *param_1 = uVar2;
  return param_1;
}



void __fastcall FUN_007cc30f(int *param_1)

{
  *(uint *)(*param_1 + 0x10) = param_1[1] & 0xffff;
  return;
}



void __thiscall FUN_007cc31d(_Locimp *param_1_00,facet *param_1,uint param_2)

{
  std::locale::_Locimp::_Locimp_Addfac(param_1_00,param_1,param_2);
  return;
}



_Locimp * __thiscall FUN_007cc331(_Locimp *param_1_00,byte param_1)

{
  std::locale::_Locimp::~_Locimp(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  protected: virtual __thiscall std::locale::_Locimp::~_Locimp(void)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void __thiscall std::locale::_Locimp::~_Locimp(_Locimp *this)

{
  *(undefined ***)this = vftable;
  _Locimp_dtor(this);
  FUN_004017b2(1,0);
  *(undefined ***)this = facet::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007cc38a(undefined4 *param_1_00,_Locimp *param_1)

{
  param_1_00[1] = 1;
  param_1_00[2] = 0;
  *param_1_00 = std::locale::_Locimp::vftable;
  param_1_00[3] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[4] = *(undefined4 *)(param_1 + 0x10);
  *(_Locimp *)(param_1_00 + 5) = param_1[0x14];
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 6),
             (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0x18));
  std::locale::_Locimp::_Locimp_ctor((_Locimp *)param_1_00,param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007cc3e8(undefined4 param_1,undefined4 param_2)

{
  int *unaff_ESI;
  
  FUN_00417482(unaff_ESI[0xe]);
  (**(code **)(*unaff_ESI + 0x34))(param_2);
  FUN_005e3340(param_2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_007cc42e(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_005e3140(param_1,param_2);
  if (*(int *)(param_1_00 + 0x28) != 0) {
    FUN_007cc3e8(&param_2,param_2);
    std::locale::~locale((locale *)&param_2);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007cc480(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined2 local_14;
  undefined2 local_12;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x7cc48c;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00dd8e8c,5);
  local_8 = 0;
  local_14 = 0x8f76;
  local_12 = 0x589c;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 2;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd8e94,9);
  local_8._0_1_ = 3;
  local_14 = 0x837d;
  local_12 = 0xfd62;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 5;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00dd8ea0,10);
  local_8._0_1_ = 6;
  local_14 = 0xfd62;
  local_12 = 0xd6c3;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 8;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd8eac,9);
  local_8._0_1_ = 9;
  local_14 = 0x89b8;
  local_12 = 0x793c;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0xb;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00dd8eb8,5);
  local_8._0_1_ = 0xc;
  local_14 = 0x6d3;
  local_12 = 0xfe5;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0xe;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,"6n:/k{",6);
  local_8._0_1_ = 0xf;
  local_14 = 0xef18;
  local_12 = 0xcc56;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x11;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00dd8ec8,0xb);
  local_8._0_1_ = 0x12;
  local_14 = 0x212c;
  local_12 = 0xa65c;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x14;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd8ed4,9);
  local_8._0_1_ = 0x15;
  local_14 = 0xd19e;
  local_12 = 0xab94;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x17;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00dd8ee0,5);
  local_8._0_1_ = 0x18;
  local_14 = 0xde58;
  local_12 = 0x568c;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x1a;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd8ee8,8);
  local_8._0_1_ = 0x1b;
  local_14 = 0xe146;
  local_12 = 0x3190;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x1d;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00dd8ef4,5);
  local_8._0_1_ = 0x1e;
  local_14 = 0x4f56;
  local_12 = 0xd744;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x20;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd8efc,6);
  local_8._0_1_ = 0x21;
  local_14 = 0xd353;
  local_12 = 0x98f0;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x23;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_00dd8f04,0xd);
  local_8._0_1_ = 0x24;
  local_14 = 0x480f;
  local_12 = 0x9bc1;
  FUN_00b94330(&local_14,uVar1);
  local_8._0_1_ = 0x26;
  FUN_004017b2(1,0);
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_00dd8f14,5);
  local_8 = CONCAT31(local_8._1_3_,0x27);
  local_14 = 0x9e7b;
  local_12 = 0x796b;
  FUN_00b94330(&local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



int FUN_007cc83e(void)

{
  int in_EAX;
  
  if (0xf < *(uint *)(in_EAX + 0xf8)) {
    return *(int *)(in_EAX + 0xe4);
  }
  return in_EAX + 0xe4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007cc851(undefined4 *param_1)

{
  *param_1 = W3CA43D38::W1B0F0FDB::vftable;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 1));
  FUN_00b92800();
  FUN_007cc480(param_1 + 0xc);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007cc891(undefined4 *param_1_00,byte param_1)

{
  FUN_00502d9b();
  FUN_00b92d80();
  FUN_004017b2(1,0);
  *param_1_00 = W3CA43D38::WF45DE894::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static struct boost::archive::detail::extra_detail::guid_initializer<class
// W3CA43D38::W1B0F0FDB> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class W3CA43D38::W1B0F0FDB>
// >::get_mutable_instance(void)

guid_initializer<class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W1B0F0FDB>_>
::get_mutable_instance(void)

{
                    // 0x3cc8e2  1038
                    // ?get_mutable_instance@?$singleton@U?$guid_initializer@VW1B0F0FDB@W3CA43D38@@@extra_detail@detail@archive@boost@@@serialization@boost@@SAAAU?$guid_initializer@VW1B0F0FDB@W3CA43D38@@@extra_detail@detail@archive@3@XZ
  if ((__local_static_guard__2__ & 1) == 0) {
    __local_static_guard__2__ = __local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c7517e);
  }
  return (guid_initializer<class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static struct boost::archive::detail::extra_detail::guid_initializer<class
// W3CA43D38::W1B0F0FDB> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class W3CA43D38::W1B0F0FDB>
// >::get_instance(void)

guid_initializer<class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W1B0F0FDB>_>
::get_instance(void)

{
                    // 0x3cc8e7  718
                    // ?get_instance@?$singleton@U?$guid_initializer@VW1B0F0FDB@W3CA43D38@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAU?$guid_initializer@VW1B0F0FDB@W3CA43D38@@@extra_detail@detail@archive@3@XZ
  if ((__local_static_guard__2__ & 1) == 0) {
    __local_static_guard__2__ = __local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c7517e);
  }
  return (guid_initializer<class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W1B0F0FDB> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W1B0F0FDB> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_const_instance(void)

{
                    // 0x3cc908  689
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3cc908  1477
                    // ?instantiate@?$ptr_serialization_support@Vxml_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007cca1b();
    _atexit((_func_4879 *)&LAB_00c751c8);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W1B0F0FDB> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W1B0F0FDB> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_const_instance(void)

{
                    // 0x3cc90d  659
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3cc90d  1468
                    // ?instantiate@?$ptr_serialization_support@Vxml_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007cca6f();
    _atexit((_func_4879 *)&LAB_00c751b2);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W1B0F0FDB> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W1B0F0FDB> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_const_instance(void)

{
                    // 0x3cc912  674
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3cc912  1459
                    // ?instantiate@?$ptr_serialization_support@Vbinary_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ccac3();
    _atexit((_func_4879 *)&LAB_00c7519c);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W1B0F0FDB> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W1B0F0FDB> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_const_instance(void)

{
                    // 0x3cc917  637
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3cc917  1450
                    // ?instantiate@?$ptr_serialization_support@Vbinary_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ccb17();
    _atexit((_func_4879 *)&LAB_00c75186);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W1B0F0FDB> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W1B0F0FDB> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_const_instance(void)

{
                    // 0x3cc91c  602
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3cc91c  1115
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7522f);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::W1B0F0FDB> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W3CA43D38::W1B0F0FDB> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> *peVar1;
  
                    // 0x3cc921  522
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3cc921  1077
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75214);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W1B0F0FDB> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W1B0F0FDB> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_instance(void)

{
                    // 0x3cc926  1009
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007cca1b();
    _atexit((_func_4879 *)&LAB_00c751c8);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W1B0F0FDB> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W1B0F0FDB> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_instance(void)

{
                    // 0x3cc962  979
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007cca6f();
    _atexit((_func_4879 *)&LAB_00c751b2);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W1B0F0FDB> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W1B0F0FDB> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_instance(void)

{
                    // 0x3cc99e  994
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ccac3();
    _atexit((_func_4879 *)&LAB_00c7519c);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W1B0F0FDB> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W1B0F0FDB> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_instance(void)

{
                    // 0x3cc9da  957
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ccb17();
    _atexit((_func_4879 *)&LAB_00c75186);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W1B0F0FDB> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W1B0F0FDB> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_const_instance(void)

{
                    // 0x3cca16  569
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
                    // 0x3cca16  1100
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>::
    oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>
              ((oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c751f9);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>
* FUN_007cca1b(void)

{
  extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032f017c);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>
* FUN_007cca6f(void)

{
  extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f0174);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>
* FUN_007ccac3(void)

{
  extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>::
       vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032f016c);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>
* FUN_007ccb17(void)

{
  extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>::
       vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f0164);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007ccb6b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ccb8d(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ccbaf(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ccbd1(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W1B0F0FDB> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W1B0F0FDB> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_instance(void)

{
                    // 0x3ccbf3  922
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>::
    oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>
              ((oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7522f);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W1B0F0FDB> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W1B0F0FDB> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> *peVar1;
  
                    // 0x3ccc3d  842
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75214);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W1B0F0FDB> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W1B0F0FDB> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_instance(void)

{
                    // 0x3ccc8d  889
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>::
    oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>
              ((oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c751f9);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W1B0F0FDB> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W1B0F0FDB> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> *peVar1;
  
                    // 0x3cccd7  801
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c751de);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007ccd27(undefined4 *param_1_00,byte param_1)

{
  DAT_032efed5 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ccd50(undefined4 *param_1_00,byte param_1)

{
  DAT_032efed6 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ccd79(undefined4 *param_1_00,byte param_1)

{
  DAT_032efed7 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ccda2(undefined4 *param_1_00,byte param_1)

{
  DAT_032efed8 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W1B0F0FDB>::oserializer<class boost::archive::xml_oarchive,class
// W3CA43D38::W1B0F0FDB>(void)

oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>::
oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>
          (oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> *this)

{
  extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> *peVar1;
  
                    // 0x3ccdcb  60
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W1B0F0FDB>::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W1B0F0FDB>(void)

oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>
          (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> *this)

{
  extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> *peVar1;
  
                    // 0x3ccde5  27
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::W1B0F0FDB>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::W1B0F0FDB>
// >::get_const_instance(void)

extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>::
get_const_instance(void)

{
                    // 0x3ccdff  434
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW1B0F0FDB@W3CA43D38@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW1B0F0FDB@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007cce40();
    _atexit((_func_4879 *)&LAB_00c7524a);
  }
  return (extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W3CA43D38::W1B0F0FDB>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W3CA43D38::W1B0F0FDB> >::get_instance(void)

extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>::
get_instance(void)

{
                    // 0x3cce04  754
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW1B0F0FDB@W3CA43D38@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW1B0F0FDB@W3CA43D38@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007cce40();
    _atexit((_func_4879 *)&LAB_00c7524a);
  }
  return (extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>
* FUN_007cce40(void)

{
  FUN_008308e0("165A6E1B-7E38-D8D6-BC7E-CE5B48113363");
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>::vftable;
  FUN_00830c60(&W3CA43D38::W1B0F0FDB::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007cce93(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W1B0F0FDB>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x3cced4  1713
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_007cd18c(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007ccef6(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>::vftable;
  FUN_0082df80(&DAT_032f017c);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W1B0F0FDB>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3ccf34  1612
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7ccf40;
  pvVar1 = operator_new(0x1b8);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007cd2c9(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007cd203(param_1 + 9);
  return;
}



void Catch_All_007ccfa3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007ccfb0(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>::vftable;
  FUN_0082bbc0(&DAT_032f0174);
  FUN_00833fa0();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W1B0F0FDB>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>::
save_object_ptr(pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>
                *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> *poVar1;
  
                    // 0x3ccfee  1698
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  FUN_00830550(param_2,poVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007cd038(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>::
       vftable;
  FUN_00833f40(&DAT_032f016c);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W1B0F0FDB>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>::
load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>
                *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3cd076  1590
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7cd082;
  pvVar1 = operator_new(0x1b8);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007cd2c9(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007cd27a();
  return;
}



void Catch_All_007cd0e4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007cd0f1(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>::
       vftable;
  FUN_008347f0(&DAT_032f0164);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W3CA43D38::W1B0F0FDB>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> *this,
                basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> *local_8;
  
                    // 0x3cd12f  1670
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007cd2ef();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W3CA43D38::W1B0F0FDB>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3cd14b  1554
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007cd397();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W3CA43D38::W1B0F0FDB>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>::save_object_data
          (oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> *this,
          basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB> *local_8;
  
                    // 0x3cd15b  1637
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007cd43e();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W1B0F0FDB>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>::load_object_data
          (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3cd177  1513
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VW1B0F0FDB@W3CA43D38@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007cd4f6();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W1B0F0FDB> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W3CA43D38::W1B0F0FDB> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB> *peVar1;
  
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c751de);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>::get_instance(void)'
          ::`2'::t;
}



int FUN_007cd18c(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_007cd203(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int __fastcall FUN_007cd27a(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007cd2c9(int param_1)

{
  if (param_1 != 0) {
    FUN_007cc851(param_1);
  }
  return;
}



void __fastcall FUN_007cd2ef(int param_1)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  int local_c;
  int local_8;
  
  local_c = param_1;
  local_8 = param_1;
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  if (*(uint *)(in_EAX + 0x48) < 0x10) {
    local_c = in_EAX + 0x34;
  }
  else {
    local_c = *(int *)(in_EAX + 0x34);
  }
  FUN_007bdc74(&local_c);
  local_c = FUN_007cc83e();
  local_8 = in_EAX + 4;
  FUN_004414fa(&local_c);
  if (*(uint *)(in_EAX + 0x160) < 0x10) {
    local_c = in_EAX + 0x14c;
  }
  else {
    local_c = *(int *)(in_EAX + 0x14c);
  }
  local_8 = in_EAX + 0x20;
  if (param_1 == -9) {
    param_1 = 0;
  }
  FUN_004cc671(param_1 + 9);
  return;
}



void __fastcall FUN_007cd397(int param_1)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  int local_c;
  int local_8;
  
  local_c = param_1;
  local_8 = param_1;
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  if (*(uint *)(in_EAX + 0x48) < 0x10) {
    local_c = in_EAX + 0x34;
  }
  else {
    local_c = *(int *)(in_EAX + 0x34);
  }
  FUN_007bdc8f(&local_c);
  local_c = FUN_007cc83e();
  local_8 = in_EAX + 4;
  FUN_00441643();
  if (*(uint *)(in_EAX + 0x160) < 0x10) {
    local_c = in_EAX + 0x14c;
  }
  else {
    local_c = *(int *)(in_EAX + 0x14c);
  }
  local_8 = in_EAX + 0x20;
  if (param_1 == -9) {
    param_1 = 0;
  }
  FUN_0049528a(param_1 + 9);
  return;
}



void FUN_007cd43e(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  FUN_007bcc2f();
  FUN_007cc83e();
  FUN_007bdcaa();
  FUN_007cd5ae();
  return;
}



void FUN_007cd4f6(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W3CA43D38::W1B0F0FDB>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  FUN_007bcc7e();
  FUN_007cc83e();
  FUN_007bdce8();
  FUN_007cd5fd();
  return;
}



int __fastcall FUN_007cd5ae(int param_1)

{
  undefined4 uVar1;
  oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> *poVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



int __fastcall FUN_007cd5fd(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// class boost::serialization::void_cast_detail::void_caster const & __cdecl
// boost::serialization::void_cast_register<class W3CA43D38::W1B0F0FDB,class
// W3CA43D38::WF45DE894>(class W3CA43D38::W1B0F0FDB const *,class W3CA43D38::WF45DE894 const *)

void_caster * __cdecl
boost::serialization::void_cast_register<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>
          (W1B0F0FDB *param_1,WF45DE894 *param_2)

{
                    // 0x3cd64c  8
                    // ??$void_cast_register@VW1B0F0FDB@W3CA43D38@@VWF45DE894@2@@serialization@boost@@YAABVvoid_caster@void_cast_detail@01@PBVW1B0F0FDB@W3CA43D38@@PBVWF45DE894@5@@Z
                    // 0x3cd64c  710
                    // ?get_const_instance@?$singleton@V?$void_caster_primitive@VW1B0F0FDB@W3CA43D38@@VWF45DE894@2@@void_cast_detail@serialization@boost@@@serialization@boost@@SAABV?$void_caster_primitive@VW1B0F0FDB@W3CA43D38@@VWF45DE894@2@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007cd6b1();
    _atexit((_func_4879 *)&LAB_00c75260);
  }
  return (void_caster *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007cd651(undefined4 param_1)

{
  ___RTDynamicCast(param_1,0,&W3CA43D38::WF45DE894::RTTI_Type_Descriptor,
                   &W3CA43D38::W1B0F0FDB::RTTI_Type_Descriptor,0);
  return;
}



undefined4 FUN_007cd66e(undefined4 param_1)

{
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::void_cast_detail::void_caster_primitive<class
// W3CA43D38::W1B0F0FDB,class W3CA43D38::WF45DE894> & __cdecl boost::serialization::singleton<class
// boost::serialization::void_cast_detail::void_caster_primitive<class W3CA43D38::W1B0F0FDB,class
// W3CA43D38::WF45DE894> >::get_instance(void)

void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>
::get_instance(void)

{
                    // 0x3cd675  1030
                    // ?get_instance@?$singleton@V?$void_caster_primitive@VW1B0F0FDB@W3CA43D38@@VWF45DE894@2@@void_cast_detail@serialization@boost@@@serialization@boost@@CAAAV?$void_caster_primitive@VW1B0F0FDB@W3CA43D38@@VWF45DE894@2@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007cd6b1();
    _atexit((_func_4879 *)&LAB_00c75260);
  }
  return (void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>
* FUN_007cd6b1(void)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  _DAT_032f0e44 =
       boost::serialization::
       singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::W1B0F0FDB>_>
       ::get_instance();
  _DAT_032f0e4c = 0;
  _DAT_032f0e50 = 0;
  _t = boost::serialization::void_cast_detail::
       void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>::vftable;
  _DAT_032f0e48 = peVar1;
  FUN_0083ddb0(0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007cd70f(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::detail::
                singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>_>
                ::vftable;
  DAT_032efeda = 1;
  FUN_007cd738();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007cd738(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::
             void_caster_primitive<class_W3CA43D38::W1B0F0FDB,class_W3CA43D38::WF45DE894>::vftable;
  FUN_0083e150();
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 __thiscall FUN_007cd764(undefined4 param_1_00,byte param_1)

{
  FUN_007cd738();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007cd780(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007cd7a2(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class common::WB943A9F0> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class common::WB943A9F0> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>
::get_instance(void)

{
                    // 0x3cd7c4  901
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>::
    oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>
              ((oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75296);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class common::WB943A9F0> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class common::WB943A9F0> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>
::get_instance(void)

{
  extended_type_info_typeid<class_common::WB943A9F0> *peVar1;
  
                    // 0x3cd80e  813
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7527b);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007cd85e(undefined4 *param_1_00,byte param_1)

{
  DAT_032efedb = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007cd887(undefined4 *param_1_00,byte param_1)

{
  DAT_032efedc = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class common::WB943A9F0>::oserializer<class
// boost::archive::binary_oarchive,class common::WB943A9F0>(void)

oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>::
oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>
          (oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> *this)

{
  extended_type_info_typeid<class_common::WB943A9F0> *peVar1;
  
                    // 0x3cd8b0  39
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class common::WB943A9F0>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>::
save_object_data(oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> *this,
                basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> *local_8;
  
                    // 0x3cd8ca  1649
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007cd8f8(param_2);
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class common::WB943A9F0>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>::
load_object_data(iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3cd8e6  1525
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007cd9ae();
  return;
}



void FUN_007cd8f8(int param_1)

{
  int *piVar1;
  undefined *local_18;
  undefined4 *local_14;
  undefined4 local_10;
  int local_c;
  char local_5;
  
  piVar1 = (int *)(param_1 + 8);
  FUN_007cdb86(piVar1);
  if ((*piVar1 == 0) || (local_5 = '\x01', *(int *)(param_1 + 4) == 0)) {
    local_5 = '\0';
  }
  FUN_007cdbc2(&local_5);
  if (local_5 != '\0') {
    local_10 = *(undefined4 *)(param_1 + 4);
    local_c = *piVar1;
    local_14 = &local_10;
    local_18 = &DAT_00fb8b30;
    FUN_007cda46(&local_18);
  }
  return;
}



void FUN_007cd9ae(void)

{
  int unaff_EDI;
  char local_38 [8];
  undefined4 local_30;
  undefined **ppuStack_2c;
  char local_1d;
  undefined local_1c [4];
  char *local_18;
  char *local_14;
  undefined *local_10;
  char **local_c;
  
  local_14 = local_1c;
  local_18 = "size";
  ppuStack_2c = (undefined **)0x7cd9d8;
  FUN_007cdaa7();
  ppuStack_2c = (undefined **)0x0;
  local_18 = local_38;
  local_30 = 0;
  local_38[0] = '\0';
  FUN_00b92dc0();
  local_14 = &local_1d;
  local_18 = "defined";
  ppuStack_2c = (undefined **)0x7cda10;
  FUN_007cdae5();
  if (local_1d != '\0') {
    local_18 = *(char **)(unaff_EDI + 4);
    local_14 = *(char **)(unaff_EDI + 8);
    local_c = &local_18;
    ppuStack_2c = &local_10;
    local_10 = &DAT_00fb8b30;
    local_30 = 0x7cda41;
    FUN_007cdb23();
  }
  return;
}



int FUN_007cda46(int param_1)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_007bcd43(**(undefined4 **)(param_1 + 4),(*(undefined4 **)(param_1 + 4))[1]);
  if (iVar1 == -9) {
    iVar1 = 0;
  }
  return iVar1;
}



int __fastcall FUN_007cdaa7(int param_1)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_007bcdb8(*(undefined4 *)(param_1 + 4));
  if (iVar1 != -9) {
    return iVar1;
  }
  return 0;
}



int __fastcall FUN_007cdae5(int param_1)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_007c0bf9(*(undefined4 *)(param_1 + 4));
  if (iVar1 != -9) {
    return iVar1;
  }
  return 0;
}



int FUN_007cdb23(int param_1)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_007bcde2(**(undefined4 **)(param_1 + 4),(*(undefined4 **)(param_1 + 4))[1]);
  if (iVar1 == -9) {
    iVar1 = 0;
  }
  return iVar1;
}



int FUN_007cdb86(undefined4 param_1)

{
  int iVar1;
  int unaff_EDI;
  
  FUN_009b4100();
  FUN_007bcd43(param_1,4);
  if (unaff_EDI == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EDI + -9;
  }
  return iVar1;
}



int FUN_007cdbc2(undefined *param_1)

{
  int iVar1;
  int unaff_EDI;
  
  FUN_009b4100();
  param_1 = (undefined *)CONCAT31(param_1._1_3_,*param_1);
  FUN_007bcd43(&param_1,1);
  if (unaff_EDI == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EDI + -9;
  }
  return iVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007cdc0a(int *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 *unaff_EBX;
  int local_60;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_5c [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_40 [24];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x50;
  local_8 = 0x7cdc16;
  local_18 = FUN_004dc703();
  if (unaff_EBX == (undefined4 *)0x0) {
    FUN_00a3fb10();
  }
  local_24 = *unaff_EBX;
  local_20 = unaff_EBX[6];
  local_1c = local_24;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*param_1 < *(int *)(local_18 + 0xc))) {
    local_28 = 0xf;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
              (local_40,0);
    local_8 = 0;
    local_60 = *param_1;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_5c,local_40);
    local_8 = CONCAT31(local_8._1_3_,1);
    puVar2 = (undefined4 *)FUN_007cdd7d(&local_24,&local_60,local_1c,local_18);
    local_1c = *puVar2;
    local_18 = puVar2[1];
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
  }
  iVar3 = FUN_006badde();
  return iVar3 + 4;
}



int * FUN_007cdccc(int **param_1)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  int iVar4;
  int **unaff_EBX;
  int *piVar5;
  int *local_1c;
  int *local_18;
  int *local_14;
  int *local_10;
  int **local_c;
  
  local_c = (int **)unaff_EBX[6];
  if (*(char *)((int)(int *)((int *)local_c)[1] + 0x15) == '\0') {
    ppiVar3 = (int **)(int *)((int *)local_c)[1];
    do {
      if ((int)ppiVar3[3] < (int)*param_1) {
        piVar2 = ppiVar3[2];
      }
      else {
        piVar2 = *ppiVar3;
        local_c = ppiVar3;
      }
      ppiVar3 = (int **)piVar2;
    } while (*(char *)((int)piVar2 + 0x15) == '\0');
  }
  local_18 = unaff_EBX[6];
  local_10 = (int *)local_c;
  local_1c = *unaff_EBX;
  local_14 = local_1c;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (piVar2 = local_14, piVar5 = local_10, (int)*param_1 < (int)local_c[3])) {
    local_1c = *param_1;
    local_18 = (int *)0x0;
    ppiVar3 = (int **)FUN_007fdf2a(&local_14,&local_1c,local_14,local_10);
    piVar2 = *ppiVar3;
    piVar5 = ppiVar3[1];
  }
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar4 = 0;
  }
  else {
    iVar4 = *piVar2;
  }
  if (piVar5 == *(int **)(iVar4 + 0x18)) {
    FUN_00a3fb10();
  }
  return piVar5 + 4;
}



undefined4 * FUN_007cdd7d(undefined4 *param_1,int *param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int in_EAX;
  int iVar4;
  undefined4 *puVar5;
  bool bVar6;
  undefined4 uVar7;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar3 = FUN_006b8eca();
    if (cVar3 == '\0') {
      cVar3 = FUN_006b8eca();
      if (cVar3 == '\0') {
        iVar4 = *param_2;
        iVar1 = *(int *)(param_4 + 0xc);
        bVar6 = SBORROW4(iVar1,iVar4);
        iVar2 = iVar1 - iVar4;
        if (iVar4 < iVar1) {
          iVar4 = FUN_007a6a2f();
          iVar2 = *param_2;
          if (*(int *)(*(int *)(iVar4 + 4) + 0xc) < iVar2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x2d) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_007cdd9f;
          }
          bVar6 = SBORROW4(*(int *)(param_4 + 0xc),iVar2);
          iVar2 = *(int *)(param_4 + 0xc) - iVar2;
        }
        if (bVar6 != iVar2 < 0) {
          FUN_00743d11();
          cVar3 = FUN_006b8eca();
          if ((cVar3 != '\0') || (*param_2 < *(int *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x2d) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_007cdd9f;
          }
        }
LAB_007cdeba:
        puVar5 = (undefined4 *)FUN_007cdedc(in_EAX,param_2);
        *param_1 = *puVar5;
        param_1[1] = puVar5[1];
        return param_1;
      }
      if (*param_2 <= *(int *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_007cdeba;
      uVar7 = 0;
      goto LAB_007cdd9f;
    }
    if (*(int *)(param_4 + 0xc) <= *param_2) goto LAB_007cdeba;
  }
  uVar7 = 1;
LAB_007cdd9f:
  FUN_007cdf9d(param_1,uVar7,param_2);
  return param_1;
}



void FUN_007cdedc(undefined4 *param_1,int *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x2d) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (int)local_c[3]);
      if (*param_2 < (int)local_c[3]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x2d) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007cdf4f;
    }
    FUN_007a6a2f();
  }
  uVar3 = local_8;
  if (*param_2 <= (int)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007cdf4f:
  puVar2 = (undefined4 *)FUN_007cdf9d(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007cdf9d(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7cdfa9;
  if (0x7fffffd < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_007ce1ae(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_007ce0c2;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_007ce0c2;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_007ce0c2:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xb) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x2c) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xb) == '\0') {
LAB_007ce07e:
        *(undefined *)(piVar1 + 0xb) = 1;
        *(undefined *)(piVar7 + 0xb) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x2c) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007fb425(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x2c) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x2c) = 0;
        FUN_004fc926(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xb) == '\0') goto LAB_007ce07e;
    if (piVar8 == (int *)*piVar1) {
      FUN_004fc926(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x2c) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x2c) = 0;
    FUN_007fb425(unaff_ESI);
  } while( true );
}



void FUN_007ce0ea(undefined4 *param_1,int *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  local_c = CONCAT31(local_c._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_8[1] + 0x15) == '\0') {
    puVar2 = (undefined4 *)local_8[1];
    do {
      local_8 = puVar2;
      local_c = CONCAT31(local_c._1_3_,*param_2 < (int)local_8[3]);
      if (*param_2 < (int)local_8[3]) {
        puVar2 = (undefined4 *)*local_8;
      }
      else {
        puVar2 = (undefined4 *)local_8[2];
      }
    } while (*(char *)((int)puVar2 + 0x15) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_8;
  if ((char)local_c != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007ce160;
    }
    FUN_005d021f();
  }
  uVar3 = local_c;
  if (*param_2 <= (int)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007ce160:
  puVar2 = (undefined4 *)FUN_004650b9(&local_1c,uVar3,local_8,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_007ce1ae(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x30);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_1_00;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (puVar1 + 4),
               (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (param_1_00 + 1));
    *(undefined *)(puVar1 + 0xb) = 0;
    *(undefined *)((int)puVar1 + 0x2d) = 0;
  }
  return puVar1;
}



void Catch_All_007ce20b(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



undefined4 __thiscall FUN_007ce21e(undefined4 param_1_00,byte param_1)

{
  FUN_00b672eb();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007ce23a(void)

{
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  return;
}



void FUN_007ce26a(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  uint uVar2;
  undefined4 uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar2 = 0;
  }
  else {
    uVar2 = *(int *)(in_EAX + 0x14) - iVar1 >> 3;
  }
  if ((uint)(*(int *)(in_EAX + 0x10) - iVar1 >> 3) < uVar2) {
    uVar3 = FUN_00478fca(param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar3;
  }
  else {
    FUN_0046e65a();
    FUN_007ce306(&local_10,param_1,local_10,local_c);
  }
  return;
}



void FUN_007ce2c9(void)

{
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_004a65f7(&local_14,local_14,local_10,local_c,local_8);
  return;
}



undefined4 * FUN_007ce306(undefined4 *param_1,undefined4 param_2,int param_3,int param_4)

{
  undefined4 uVar1;
  int in_EAX;
  undefined4 *puVar2;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc) & 0xfffffff8U) == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = param_4 - local_8 >> 3;
  }
  FUN_007ce392();
  FUN_0046e65a();
  puVar2 = (undefined4 *)FUN_007d43be(local_8);
  uVar1 = *puVar2;
  param_1[1] = puVar2[1];
  *param_1 = uVar1;
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007ce392(int param_1_00,int param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int extraout_ECX;
  undefined8 uVar4;
  uint local_1c;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 == 0) {
    local_1c = 0;
  }
  else {
    local_1c = *(int *)(param_1 + 0x14) - iVar1 >> 3;
  }
  iVar3 = *(int *)(param_1 + 0x10);
  iVar1 = iVar3 - iVar1 >> 3;
  uVar4 = CONCAT44(0x1fffffff,iVar1);
  if (iVar1 == 0x1fffffff) {
    uVar4 = FUN_004423c1();
    iVar3 = extraout_ECX;
  }
  uVar2 = (int)uVar4 + 1;
  if (local_1c < uVar2) {
    if ((int)((ulonglong)uVar4 >> 0x20) - (local_1c >> 1) < local_1c) {
      local_1c = 0;
    }
    else {
      local_1c = local_1c + (local_1c >> 1);
    }
    if (local_1c < uVar2) {
      local_1c = uVar2;
    }
    iVar3 = FUN_0046aed6();
    iVar1 = *(int *)(param_1 + 0xc);
    FUN_00478fca(param_1_00);
    FUN_00674fdf(param_3,iVar3);
    FUN_00674fdf(*(undefined4 *)(param_1 + 0x10),iVar3 + 8 + (param_3 - iVar1 >> 3) * 8);
    if (*(int *)(param_1 + 0xc) != 0) {
      FUN_0043a4e8(*(int *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
    }
    *(uint *)(param_1 + 0x14) = iVar3 + local_1c * 8;
    *(int *)(param_1 + 0x10) =
         iVar3 + ((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc) >> 3) + 1) * 8;
    *(int *)(param_1 + 0xc) = iVar3;
    return;
  }
  if (iVar3 - param_3 >> 3 == 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1_00 + 4);
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 4);
}



void Catch_All_007ce491(void)

{
  int iVar1;
  int iVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + -0x1c);
  iVar2 = *(int *)(unaff_EBP + -0x20);
  if (1 < *(int *)(unaff_EBP + 8)) {
    FUN_0043a4e8(iVar1 + iVar2 * 8);
  }
  if (0 < *(int *)(unaff_EBP + 8)) {
    FUN_0043a4e8(iVar1 + 8 + iVar2 * 8);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar1);
}



void FUN_007ce4c5(void)

{
  int extraout_ECX;
  undefined4 *unaff_EBX;
  int unaff_EBP;
  
  __CxxThrowException_8();
  *(undefined4 *)(unaff_EBP + -0x24) = *unaff_EBX;
  if (extraout_ECX - *(int *)(unaff_EBP + 0x10) >> 3 == 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



void Catch_All_007ce540(void)

{
  int unaff_EBP;
  
  FUN_0043a4e8(*(int *)(*(int *)(unaff_EBP + 8) + 0x10) + 8);
  FUN_007ce4c5(0);
  return;
}



void FUN_007ce5ce(int param_1,int param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  int local_c;
  int local_8;
  
  iVar1 = param_2 - param_1 >> 3;
  if (0x20 < iVar1) {
    do {
      if (param_3 < 1) break;
      FUN_007ce6c0(&local_c,param_1,param_2,param_4);
      iVar1 = local_8;
      param_3 = param_3 / 2 + (param_3 / 2) / 2;
      if ((int)(local_c - param_1 & 0xfffffff8U) < (int)(param_2 - local_8 & 0xfffffff8U)) {
        FUN_007ce5ce(param_1,local_c,param_3,param_4);
        param_1 = iVar1;
      }
      else {
        FUN_007ce5ce(local_8,param_2,param_3,param_4);
        param_2 = local_c;
      }
      iVar1 = param_2 - param_1 >> 3;
    } while (0x20 < iVar1);
    if (0x20 < iVar1) {
      param_2 = param_2 - param_1;
      iVar1 = param_2 >> 3;
      if (iVar1 < 2) {
        return;
      }
      FUN_007ce914(param_4);
      while (1 < iVar1) {
        if (1 < iVar1) {
          FUN_007ceb97(param_4);
        }
        param_2 = param_2 + -8;
        iVar1 = param_2 >> 3;
      }
      return;
    }
  }
  if (1 < iVar1) {
    FUN_007ce95e(param_1,param_2,param_4);
  }
  return;
}



void FUN_007ce6c0(uint *param_1,uint param_2,uint param_3,undefined4 param_4)

{
  uint uVar1;
  char cVar2;
  uint uVar3;
  uint uVar4;
  uint local_10;
  uint local_c;
  uint local_8;
  
  uVar3 = param_2 + (((int)(param_3 - param_2) >> 3) - ((int)(param_3 - param_2) >> 0x1f) >> 1) * 8;
  FUN_007ce886(uVar3,param_3 - 8,param_4);
  local_10 = uVar3 + 8;
  while (local_c = uVar3, param_2 < local_c) {
    cVar2 = FUN_00b66f81();
    if ((cVar2 != '\0') || (cVar2 = FUN_00b66f81(), uVar3 = local_c - 8, cVar2 != '\0')) break;
  }
  while ((uVar3 = local_10, local_8 = local_10, uVar4 = local_c, local_10 < param_3 &&
         ((cVar2 = FUN_00b66f81(), cVar2 == '\0' && (cVar2 = FUN_00b66f81(), cVar2 == '\0'))))) {
    local_10 = local_10 + 8;
  }
joined_r0x007ce755:
  for (; uVar1 = local_c, local_8 < param_3; local_8 = local_8 + 8) {
    cVar2 = FUN_00b66f81();
    if (cVar2 == '\0') {
      cVar2 = FUN_00b66f81();
      if (cVar2 != '\0') break;
      uVar3 = uVar3 + 8;
      FUN_0046f668();
      local_10 = uVar3;
    }
  }
  while (local_c = uVar1, param_2 < local_c) {
    cVar2 = FUN_00b66f81();
    uVar3 = local_10;
    uVar1 = local_c - 8;
    if (cVar2 == '\0') {
      cVar2 = FUN_00b66f81();
      if (cVar2 != '\0') break;
      uVar4 = uVar4 - 8;
      FUN_0046f668();
    }
  }
  if (local_c == param_2) {
    if (local_8 == param_3) {
      *param_1 = uVar4;
      param_1[1] = uVar3;
      return;
    }
    if (uVar3 != local_8) {
      FUN_0046f668();
    }
    local_10 = uVar3 + 8;
    uVar4 = uVar4 + 8;
    local_8 = local_8 + 8;
  }
  else {
    local_c = local_c - 8;
    if (local_8 != param_3) {
      FUN_0046f668();
      local_8 = local_8 + 8;
      goto joined_r0x007ce755;
    }
    uVar4 = uVar4 - 8;
    if (local_c != uVar4) {
      FUN_0046f668();
    }
    local_10 = uVar3 - 8;
  }
  FUN_0046f668();
  uVar3 = local_10;
  goto joined_r0x007ce755;
}



int __thiscall FUN_007ce84d(int param_1_00,int param_1)

{
  int in_EAX;
  int iVar1;
  int iVar2;
  
  iVar1 = param_1_00 - param_1;
  if (param_1 != param_1_00) {
    iVar2 = in_EAX - param_1_00;
    do {
      param_1_00 = param_1_00 + -8;
      FUN_005d11c9(iVar2 + param_1_00);
    } while (param_1_00 != param_1);
  }
  return in_EAX + (iVar1 >> 3) * -8;
}



void FUN_007ce886(int param_1,int param_2,undefined4 param_3)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = param_2 - in_EAX >> 3;
  if (iVar1 < 0x29) {
    FUN_007cea2b(param_2,param_3);
  }
  else {
    iVar1 = iVar1 + 1;
    iVar1 = (int)(iVar1 + (iVar1 >> 0x1f & 7U)) >> 3;
    FUN_007cea2b(iVar1 * 0x10 + in_EAX,param_3);
    FUN_007cea2b(iVar1 * 8 + param_1,param_3);
    FUN_007cea2b(param_2,param_3);
    FUN_007cea2b(param_2 + iVar1 * -8,param_3);
  }
  return;
}



void __fastcall FUN_007ce914(int param_1)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = (in_EAX - param_1 >> 3) - (in_EAX - param_1 >> 0x1f) >> 1;
  if (iVar1 < 1) {
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 4 + (iVar1 + -1) * 8);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_007ce95e(int param_1,int param_2)

{
  if ((param_1 != param_2) && (param_1 + 8 != param_2)) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 0xc);
  }
  return &LAB_00c22db5;
}



void FUN_007cea2b(void)

{
  char cVar1;
  
  cVar1 = FUN_00b66f81();
  if (cVar1 != '\0') {
    FUN_0046f668();
  }
  cVar1 = FUN_00b66f81();
  if (cVar1 != '\0') {
    FUN_0046f668();
  }
  cVar1 = FUN_00b66f81();
  if (cVar1 != '\0') {
    FUN_0046f668();
    return;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_007ceb97(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + -4);
}



void __thiscall FUN_007cec0b(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 100))(param_1_00);
  return;
}



void __thiscall FUN_007cec1a(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 8))(param_1_00);
  return;
}



void __thiscall FUN_007cec29(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x40))(param_1_00);
  return;
}



undefined4 * __thiscall FUN_007cec38(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W71DA37B9::W65C793C4::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_007cecd1(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xd4))(param_1_00);
  return;
}



void __thiscall FUN_007ced5f(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xd0))(param_1_00);
  return;
}



int __fastcall FUN_007ceded(int param_1)

{
  return param_1 + 8;
}



void __thiscall FUN_007cee6d(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 200))(param_1_00);
  return;
}



void __thiscall FUN_007cef77(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xc0))(param_1_00);
  return;
}



void __thiscall FUN_007cf005(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xbc))(param_1_00);
  return;
}



void __thiscall FUN_007cf18b(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xb0))(param_1_00);
  return;
}



void __thiscall FUN_007cf219(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xac))(param_1_00);
  return;
}



void __thiscall FUN_007cf323(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xa4))(param_1_00);
  return;
}



void __thiscall FUN_007cf3b1(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0xa0))(param_1_00);
  return;
}



void __thiscall FUN_007cf43f(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x9c))(param_1_00);
  return;
}



void __thiscall FUN_007cf641(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x8c))(param_1_00);
  return;
}



undefined4 * __thiscall FUN_007cf74b(undefined4 *param_1_00,byte param_1)

{
  param_1_00[2] = W71DA37B9::W65C793C4::vftable;
  *param_1_00 = W71DA37B9::WE9038436::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007cfac5(undefined4 *param_1_00,byte param_1)

{
  param_1_00[1] = W71DA37B9::W65C793C4::vftable;
  *param_1_00 = W71DA37B9::WE9038436::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_007cfbc5(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x68))(param_1_00);
  return;
}



void __thiscall FUN_007cfe68(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x48))(param_1_00);
  return;
}



void __thiscall FUN_007d002f(undefined4 param_1_00,int *param_1)

{
  (**(code **)(*param_1 + 0x38))(param_1_00);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_007d02f2(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7d030a;
  FUN_007d0519();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007d0311;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_007d01fb(int *param_1)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  
  ppiVar2 = (int **)FUN_00418daa(1,0);
  if (ppiVar2 == (int **)0x0) {
    ppiVar2 = (int **)0x0;
  }
  else {
    *ppiVar2 = param_1;
  }
  *param_1 = (int)ppiVar2;
  iVar3 = FUN_00470e3e();
  piVar1 = param_1 + 6;
  *piVar1 = iVar3;
  *(undefined *)(iVar3 + 0x39) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[7] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_007d024f(uint *param_1_00,undefined4 *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  uint local_70 [10];
  undefined4 local_48;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x60;
  local_8 = 0x7d025b;
  FUN_007d04e7(param_1_00);
  local_20 = param_1[6];
  local_24 = *param_1;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*param_1_00 < *(uint *)(local_18 + 0x10))) {
    local_48 = 0;
    local_8 = 0;
    local_70[0] = *param_1_00;
    FUN_00672a11();
    local_8._0_1_ = 1;
    puVar2 = (undefined4 *)FUN_007d0388(&local_24,local_70,local_1c,local_18);
    local_1c = *puVar2;
    local_18 = puVar2[1];
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_00672431();
    local_8 = 0xffffffff;
    FUN_00672431();
  }
  iVar3 = FUN_00470c05();
  return iVar3 + 8;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007d02f2(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7d030a;
  FUN_007d0519();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007d0311;
  FUN_00a3f6a1();
}



void FUN_007d031a(undefined4 *param_1,uint *param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  FUN_007d04e7(param_2);
  local_10 = unaff_EBX[6];
  local_14 = *unaff_EBX;
  puVar3 = &local_c;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (*param_2 < *(uint *)(local_8 + 0x10))) {
    local_10 = unaff_EBX[6];
    local_14 = *unaff_EBX;
    puVar3 = &local_14;
  }
  uVar1 = puVar3[1];
  *param_1 = *puVar3;
  param_1[1] = uVar1;
  return;
}



void FUN_007d037b(void)

{
  FUN_00672431();
  return;
}



undefined4 * FUN_007d0388(undefined4 *param_1,uint *param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  bool bVar4;
  undefined4 uVar5;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 == '\0') {
        bVar4 = *(uint *)(param_4 + 0x10) < *param_2;
        if (*param_2 < *(uint *)(param_4 + 0x10)) {
          iVar2 = FUN_00421832();
          if (*(uint *)(*(int *)(iVar2 + 4) + 0x10) < *param_2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x39) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_007d03aa;
          }
          bVar4 = *(uint *)(param_4 + 0x10) < *param_2;
        }
        if (bVar4) {
          FUN_007449dd();
          cVar1 = FUN_006b8eca();
          if ((cVar1 != '\0') || (*param_2 < *(uint *)(param_4 + 0x10))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x39) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_007d03aa;
          }
        }
LAB_007d04c5:
        puVar3 = (undefined4 *)FUN_007d054d(in_EAX,param_2);
        *param_1 = *puVar3;
        param_1[1] = puVar3[1];
        return param_1;
      }
      if (*param_2 <= *(uint *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0x10)) goto LAB_007d04c5;
      uVar5 = 0;
      goto LAB_007d03aa;
    }
    if (*(uint *)(param_4 + 0x10) <= *param_2) goto LAB_007d04c5;
  }
  uVar5 = 1;
LAB_007d03aa:
  FUN_007d06c4(param_1,uVar5,param_2);
  return param_1;
}



void FUN_007d04e7(uint *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x39) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((uint)puVar2[4] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x39) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



void FUN_007d0519(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_007d060e(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_007d054d(undefined4 *param_1,uint *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x39) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (uint)local_c[4]);
      if (*param_2 < (uint)local_c[4]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x39) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007d05c0;
    }
    FUN_00421832();
  }
  uVar3 = local_8;
  if (*param_2 <= (uint)local_10[4]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007d05c0:
  puVar2 = (undefined4 *)FUN_007d06c4(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void FUN_007d060e(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_007d0b56(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_007449dd();
    FUN_007d0811();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007d06c4(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7d06d0;
  if (0x6666664 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_007d0ae6(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_007d07e9;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_007d07e9;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_007d07e9:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xe) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x38) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xe) == '\0') {
LAB_007d07a5:
        *(undefined *)(piVar1 + 0xe) = 1;
        *(undefined *)(piVar7 + 0xe) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x38) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007d0aa6(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x38) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x38) = 0;
        FUN_00437338(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xe) == '\0') goto LAB_007d07a5;
    if (piVar8 == (int *)*piVar1) {
      FUN_00437338(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x38) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x38) = 0;
    FUN_007d0aa6(unaff_ESI);
  } while( true );
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007d08fc)
// WARNING: Removing unreachable block (ram,0x007d090c)
// WARNING: Removing unreachable block (ram,0x007d0915)
// WARNING: Removing unreachable block (ram,0x007d0918)
// WARNING: Removing unreachable block (ram,0x007d0908)
// WARNING: Removing unreachable block (ram,0x007d0925)
// WARNING: Removing unreachable block (ram,0x007d0935)
// WARNING: Removing unreachable block (ram,0x007d0940)
// WARNING: Removing unreachable block (ram,0x007d093c)
// WARNING: Removing unreachable block (ram,0x007d0930)
// WARNING: Removing unreachable block (ram,0x007d0943)

void FUN_007d0811(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7d081d;
  if (*(char *)((int)param_4 + 0x39) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_007449dd();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
    if (*(char *)(param_4[2] + 0x39) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x39) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x39) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x39) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0xe) != '\x01') {
LAB_007d0a74:
    FUN_00672431();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_007d0a28:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xe) != '\x01'))
  goto LAB_007d0a70;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0xe) == '\0') {
      *(undefined *)(ppiVar4 + 0xe) = 1;
      *(undefined *)(ppiVar3 + 0xe) = 0;
      FUN_007d0aa6(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x39) == '\0') {
      if ((*(char *)(*ppiVar4 + 0xe) != '\x01') || (*(char *)(ppiVar4[2] + 0xe) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0xe) == '\x01') {
          *(undefined *)(*ppiVar4 + 0xe) = 1;
          *(undefined *)(ppiVar4 + 0xe) = 0;
          FUN_00437338(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0xe) = *(undefined *)(ppiVar3 + 0xe);
        *(undefined *)(ppiVar3 + 0xe) = 1;
        *(undefined *)(ppiVar4[2] + 0xe) = 1;
        FUN_007d0aa6(param_1);
        goto LAB_007d0a70;
      }
LAB_007d0a1f:
      *(undefined *)(ppiVar4 + 0xe) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0xe) == '\0') {
      *(undefined *)(ppiVar4 + 0xe) = 1;
      *(undefined *)(ppiVar3 + 0xe) = 0;
      FUN_00437338(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x39) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0xe) == '\x01') && (*(char *)(*ppiVar4 + 0xe) == '\x01'))
      goto LAB_007d0a1f;
      if (*(char *)(*ppiVar4 + 0xe) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0xe) = 1;
        *(undefined *)(ppiVar4 + 0xe) = 0;
        FUN_007d0aa6(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0xe) = *(undefined *)(ppiVar3 + 0xe);
      *(undefined *)(ppiVar3 + 0xe) = 1;
      *(undefined *)(*ppiVar4 + 0xe) = 1;
      FUN_00437338(param_1);
LAB_007d0a70:
      *(undefined *)(ppiVar5 + 0xe) = 1;
      goto LAB_007d0a74;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_007d0a28;
}



void __thiscall FUN_007d0aa6(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x39) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_007d0ae6(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x40);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[4] = *param_1_00;
    FUN_00672a11();
    *(undefined *)(puVar1 + 0xe) = 0;
    *(undefined *)((int)puVar1 + 0x39) = 0;
  }
  return puVar1;
}



void Catch_All_007d0b43(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void FUN_007d0b56(int param_1)

{
  if (*(char *)(param_1 + 0x39) == '\0') {
    FUN_007d0b56(*(undefined4 *)(param_1 + 8));
    FUN_00672431();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d0bc8)

undefined4 FUN_007d0b92(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d0b9e;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cec55;
  local_38[0] = &DAT_0305a421;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d0c29)

undefined4 FUN_007d0bf3(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d0bff;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cece3;
  local_38[0] = &DAT_0305a429;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d0c8a)

undefined4 FUN_007d0c54(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d0c60;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007ced71;
  local_38[0] = &DAT_0305a431;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d0ceb)

undefined4 FUN_007d0cb5(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d0cc1;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cedf1;
  local_38[0] = &DAT_0305a439;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d0d4c)

undefined4 FUN_007d0d16(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d0d22;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cee7f;
  local_38[0] = &DAT_0305a441;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d0dad)

undefined4 FUN_007d0d77(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d0d83;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007ceefb;
  local_38[0] = &DAT_0305a449;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d0e0e)

undefined4 FUN_007d0dd8(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d0de4;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cef89;
  local_38[0] = &DAT_0305a451;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d0e6f)

undefined4 FUN_007d0e39(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d0e45;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf017;
  local_38[0] = &DAT_0305a459;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d0ed0)

undefined4 FUN_007d0e9a(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d0ea6;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf093;
  local_38[0] = &DAT_0305a461;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d0f31)

undefined4 FUN_007d0efb(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d0f07;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf10f;
  local_38[0] = &DAT_0305a469;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d0f92)

undefined4 FUN_007d0f5c(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d0f68;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf19d;
  local_38[0] = &DAT_0305a471;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d0ff3)

undefined4 FUN_007d0fbd(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d0fc9;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf22b;
  local_38[0] = &DAT_0305a479;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1054)

undefined4 FUN_007d101e(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d102a;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf2a7;
  local_38[0] = &DAT_0305a481;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d10b5)

undefined4 FUN_007d107f(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d108b;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf335;
  local_38[0] = &DAT_0305a489;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1116)

undefined4 FUN_007d10e0(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d10ec;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf3c3;
  local_38[0] = &DAT_0305a491;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1177)

undefined4 FUN_007d1141(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d114d;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf451;
  local_38[0] = &DAT_0305a499;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d11d8)

undefined4 FUN_007d11a2(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d11ae;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf4cd;
  local_38[0] = &DAT_0305a4a1;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1239)

undefined4 FUN_007d1203(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d120f;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf549;
  local_38[0] = &DAT_0305a4a9;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d129a)

undefined4 FUN_007d1264(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d1270;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf5c5;
  local_38[0] = &DAT_0305a4b1;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d12fb)

undefined4 FUN_007d12c5(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d12d1;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf653;
  local_38[0] = &DAT_0305a4b9;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d135c)

undefined4 FUN_007d1326(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d1332;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf6cf;
  local_38[0] = &DAT_0305a4c1;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d13bd)

undefined4 FUN_007d1387(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d1393;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf76f;
  local_38[0] = &DAT_0305a4c9;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d141e)

undefined4 FUN_007d13e8(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d13f4;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf7eb;
  local_38[0] = &DAT_0305a4d1;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d147f)

undefined4 FUN_007d1449(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d1455;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf867;
  local_38[0] = &DAT_0305a4d9;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d14e0)

undefined4 FUN_007d14aa(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d14b6;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf8e3;
  local_38[0] = &DAT_0305a4e1;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1541)

undefined4 FUN_007d150b(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d1517;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf95f;
  local_38[0] = &DAT_0305a4e9;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d15a2)

undefined4 FUN_007d156c(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d1578;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cf9db;
  local_38[0] = &DAT_0305a4f1;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1603)

undefined4 FUN_007d15cd(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d15d9;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cfa57;
  local_38[0] = &DAT_0305a4f9;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1664)

undefined4 FUN_007d162e(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d163a;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cfae9;
  local_38[0] = &DAT_0305a501;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d16c5)

undefined4 FUN_007d168f(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d169b;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cfb57;
  local_38[0] = &DAT_0305a509;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1726)

undefined4 FUN_007d16f0(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d16fc;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cfbd4;
  local_38[0] = &DAT_0305a511;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1787)

undefined4 FUN_007d1751(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d175d;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cfc42;
  local_38[0] = &DAT_0305a519;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d17e8)

undefined4 FUN_007d17b2(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d17be;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cfcb0;
  local_38[0] = &DAT_0305a521;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1849)

undefined4 FUN_007d1813(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d181f;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cfd1e;
  local_38[0] = &DAT_0305a529;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d18aa)

undefined4 FUN_007d1874(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d1880;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cfd8c;
  local_38[0] = &DAT_0305a531;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d190b)

undefined4 FUN_007d18d5(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d18e1;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cfdfa;
  local_38[0] = &DAT_0305a539;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d196c)

undefined4 FUN_007d1936(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d1942;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cfe77;
  local_38[0] = &DAT_0305a541;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d19cd)

undefined4 FUN_007d1997(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d19a3;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cfee5;
  local_38[0] = &DAT_0305a549;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1a2e)

undefined4 FUN_007d19f8(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d1a04;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cff53;
  local_38[0] = &DAT_0305a551;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1a8f)

undefined4 FUN_007d1a59(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d1a65;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007cffc1;
  local_38[0] = &DAT_0305a559;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1af0)

undefined4 FUN_007d1aba(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d1ac6;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007d003e;
  local_38[0] = &DAT_0305a561;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1b51)

undefined4 FUN_007d1b1b(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d1b27;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007d00ac;
  local_38[0] = &DAT_0305a569;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1bb2)

undefined4 FUN_007d1b7c(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d1b88;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007d011a;
  local_38[0] = &DAT_0305a571;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007d1c13)

undefined4 FUN_007d1bdd(undefined4 param_1)

{
  undefined *local_38 [2];
  undefined *local_30 [10];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7d1be9;
  local_38[0] = (undefined *)0x0;
  FUN_00672b42(local_30);
  local_30[0] = &LAB_007d0188;
  local_38[0] = &DAT_0305a579;
  local_8 = 0;
  FUN_00672a46(local_38);
  local_8 = 0xffffffff;
  FUN_00672431();
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d1c3e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W0218BCF1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d1c84(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d1c9b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W67D642F9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d1ce1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d1cf8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W13187643>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d1d3e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d1d55(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WA8FB6303>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d1d9b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d1db2(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W61C8BF25>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d1df8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d1e0f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W728A8034>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d1e55(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d1e6c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WEBA353D3>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d1eb2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d1ec9(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W6C1AF82F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d1f0f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d1f26(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WB3657A67>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d1f6c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d1f83(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WCEFA011F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d1fc9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d1fe0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W193631A8>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2026(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d203d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W3B1DC1A4>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2083(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d209a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W4C96BE82>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d20e0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d20f7(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W35F9ED10>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d213d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2154(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W4EF33EAE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d219a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d21b1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W3C6F37BD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d21f7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d220e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W1EE70965>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2254(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d226b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W5283904C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d22b1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d22c8(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WCC3FF9DD>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d230e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2325(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W18856A04>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d236b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2382(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W47730792>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d23c8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d23df(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WE15D6DE9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2425(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d243c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W03B5DE0E>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2482(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2499(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WA10C1993>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d24df(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d24f6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W14D76E53>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d253c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2553(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WC3002645>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2599(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d25b0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W46759775>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d25f6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d260d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W8F2E35E1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2653(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d266a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W0E9FB772>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d26b0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d26c7(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WE4C852E1>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d270d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2724(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WB3C3A8A9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d276a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2781(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W523BE8A0>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d27c7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d27de(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W15A367DE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2824(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d283b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WEA6A3F85>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2881(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2898(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W920EF776>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d28de(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d28f5(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WCEC7BB0C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d293b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2952(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W68BDBC4C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2998(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d29af(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WA617A529>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d29f5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2a0c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W09484F2D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2a52(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2a69(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W39B62D24>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2aaf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2ac6(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::WE597A505>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2b0c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2b23(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W05509E6A>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2b69(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2b80(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W9890E3A9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2bc6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d2bdd(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W3745F2D6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d2c23(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007d2c3a(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d365e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5234;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2c75(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d36a6(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5274;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2cb0(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d36ee(0);
    return;
  }
  *param_2 = &PTR_vftable_032a52b4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2ceb(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3736(0);
    return;
  }
  *param_2 = &PTR_vftable_032a52f4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2d26(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d377e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5334;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2d61(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d37c6(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5374;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2d9c(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d380e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a53b4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2dd7(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3856(0);
    return;
  }
  *param_2 = &PTR_vftable_032a53f4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2e12(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d389e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5434;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2e4d(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d38e6(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5474;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2e88(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d392e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a54b4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2ec3(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3976(0);
    return;
  }
  *param_2 = &PTR_vftable_032a54f4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2efe(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d39be(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5534;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2f39(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3a06(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5574;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2f74(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3a4e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a55b4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2faf(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3a96(0);
    return;
  }
  *param_2 = &PTR_vftable_032a55f4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d2fea(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3ade(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5634;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d3025(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3b26(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5674;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d3060(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3b6e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a56b4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d309b(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3bb6(0);
    return;
  }
  *param_2 = &PTR_vftable_032a56f4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d30d6(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3bfe(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5734;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d3111(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3c46(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5774;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d314c(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3c8e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a57b4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d3187(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3cd6(0);
    return;
  }
  *param_2 = &PTR_vftable_032a57f4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d31c2(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3d1e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5834;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d31fd(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3d66(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5874;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d3238(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3dae(0);
    return;
  }
  *param_2 = &PTR_vftable_032a58b4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d3273(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3df6(0);
    return;
  }
  *param_2 = &PTR_vftable_032a58f4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d32ae(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3e3e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5934;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d32e9(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3e86(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5974;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d3324(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3ece(0);
    return;
  }
  *param_2 = &PTR_vftable_032a59b4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d335f(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3f16(0);
    return;
  }
  *param_2 = &PTR_vftable_032a59f4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d339a(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3f5e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5a34;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d33d5(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3fa6(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5a74;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d3410(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d3fee(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5ab4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d344b(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d4036(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5af4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d3486(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d407e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5b34;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d34c1(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d40c6(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5b74;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d34fc(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d410e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5bb4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d3537(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d4156(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5bf4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d3572(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d419e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5c34;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d35ad(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d41e6(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5c74;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d35e8(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d422e(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5cb4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d3623(undefined4 param_1,undefined4 *param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007d4276(0);
    return;
  }
  *param_2 = &PTR_vftable_032a5cf4;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007d365e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5234;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5234);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d36a6(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5274;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5274);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d36ee(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a52b4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a52b4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3736(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a52f4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a52f4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d377e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5334;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5334);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d37c6(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5374;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5374);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d380e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a53b4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a53b4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3856(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a53f4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a53f4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d389e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5434;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5434);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d38e6(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5474;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5474);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d392e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a54b4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a54b4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3976(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a54f4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a54f4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d39be(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5534;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5534);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3a06(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5574;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5574);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3a4e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a55b4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a55b4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3a96(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a55f4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a55f4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3ade(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5634;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5634);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3b26(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5674;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5674);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3b6e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a56b4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a56b4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3bb6(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a56f4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a56f4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3bfe(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5734;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5734);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3c46(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5774;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5774);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3c8e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a57b4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a57b4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3cd6(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a57f4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a57f4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3d1e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5834;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5834);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3d66(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5874;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5874);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3dae(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a58b4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a58b4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3df6(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a58f4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a58f4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3e3e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5934;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5934);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3e86(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5974;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5974);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3ece(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a59b4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a59b4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3f16(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a59f4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a59f4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3f5e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5a34;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5a34);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3fa6(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5a74;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5a74);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d3fee(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5ab4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5ab4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d4036(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5af4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5af4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d407e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5b34;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5b34);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d40c6(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5b74;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5b74);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d410e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5bb4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5bb4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d4156(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5bf4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5bf4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d419e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5c34;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5c34);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d41e6(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5c74;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5c74);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d422e(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5cb4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5cb4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



void FUN_007d4276(void)

{
  bool bVar1;
  int in_EAX;
  type_info *ptVar2;
  type_info **unaff_ESI;
  type_info **unaff_EDI;
  
  if (in_EAX == 0) {
    ptVar2 = *unaff_EDI;
  }
  else {
    if (in_EAX == 1) {
      *unaff_ESI = *unaff_EDI;
      *unaff_EDI = (type_info *)0x0;
      return;
    }
    if (in_EAX == 2) {
      *unaff_ESI = (type_info *)0x0;
      return;
    }
    if (in_EAX != 3) {
      *unaff_ESI = (type_info *)&PTR_vftable_032a5cf4;
      *(undefined *)(unaff_ESI + 1) = 0;
      *(undefined *)((int)unaff_ESI + 5) = 0;
      return;
    }
    bVar1 = type_info::operator==(*unaff_ESI,(type_info *)&PTR_vftable_032a5cf4);
    ptVar2 = (type_info *)(-(uint)bVar1 & (uint)unaff_EDI);
  }
  *unaff_ESI = ptVar2;
  return;
}



undefined4 __thiscall FUN_007d42be(undefined4 param_1,byte param_2)

{
  FUN_00b66f9c();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_007d42da(undefined4 param_1,undefined4 *param_2)

{
  undefined local_18 [16];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0;
  FUN_004f9bd2(local_18);
  FUN_0046f668();
  FUN_005e72d0();
  local_8 = 0xffffffff;
  if (param_2 != (undefined4 *)0x0) {
    (**(code **)*param_2)(1);
  }
  return param_1;
}



undefined4 __thiscall FUN_007d4324(undefined4 param_1_00,byte param_1)

{
  FUN_00b66772();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007d4340(undefined4 *param_1)

{
  *param_1 = W71DA37B9::WBE91BE05::vftable;
  return;
}



undefined4 * __thiscall FUN_007d4347(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W71DA37B9::WBE91BE05::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d4364(undefined4 *param_1_00,byte param_1)

{
  if (param_1_00[2] != 0) {
    FUN_0040127a();
  }
  *param_1_00 = W71DA37B9::WBE91BE05::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007d43a2(undefined4 param_1_00,byte param_1)

{
  FUN_00b6662c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007d43be(int param_1)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 != (int *)0x0) goto LAB_007d43cf;
    iVar2 = 0;
  }
  else {
LAB_007d43cf:
    iVar2 = *piVar1;
  }
  if (unaff_ESI[1] + param_1 * 2 <= *(int **)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *piVar1;
    }
    if (*(int **)(iVar2 + 0xc) <= unaff_ESI[1] + param_1 * 2) goto LAB_007d43fb;
  }
  FUN_00a3fb10();
LAB_007d43fb:
  unaff_ESI[1] = unaff_ESI[1] + param_1 * 2;
  return;
}



undefined4 __thiscall FUN_007d4404(undefined4 param_1_00,byte param_1)

{
  FUN_00b6641d();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007d4420(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_007d446d(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d446d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W71DA37B9::W7EE09E61>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007d44b3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



int * FUN_007d44ca(int *param_1)

{
  char cVar1;
  int **ppiVar2;
  int iVar3;
  undefined4 *unaff_EBX;
  int *local_2c;
  int *local_28;
  undefined4 local_24;
  undefined4 local_20;
  uint local_1c;
  int local_18;
  undefined4 local_14;
  undefined4 uStack_10;
  uint uStack_c;
  
  FUN_007d46e5(param_1);
  local_20 = unaff_EBX[6];
  local_24 = *unaff_EBX;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*param_1 < local_28[3])) {
    local_18 = *param_1;
    local_24 = 0;
    local_20 = 0;
    local_1c = local_1c & 0xffffff00;
    local_14 = 0;
    uStack_10 = 0;
    uStack_c = local_1c;
    ppiVar2 = (int **)FUN_007d4586(&local_24,&local_18,local_2c,local_28);
    local_2c = *ppiVar2;
    local_28 = ppiVar2[1];
  }
  if (local_2c == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *local_2c;
  }
  if (local_28 == *(int **)(iVar3 + 0x18)) {
    FUN_00a3fb10();
  }
  return local_28 + 4;
}



undefined4 * FUN_007d4586(undefined4 *param_1,int *param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int in_EAX;
  int iVar4;
  undefined4 *puVar5;
  bool bVar6;
  undefined4 uVar7;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar3 = FUN_006b8eca();
    if (cVar3 == '\0') {
      cVar3 = FUN_006b8eca();
      if (cVar3 == '\0') {
        iVar4 = *param_2;
        iVar1 = *(int *)(param_4 + 0xc);
        bVar6 = SBORROW4(iVar1,iVar4);
        iVar2 = iVar1 - iVar4;
        if (iVar4 < iVar1) {
          iVar4 = FUN_00696e3c();
          iVar2 = *param_2;
          if (*(int *)(*(int *)(iVar4 + 4) + 0xc) < iVar2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x1d) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_007d45a8;
          }
          bVar6 = SBORROW4(*(int *)(param_4 + 0xc),iVar2);
          iVar2 = *(int *)(param_4 + 0xc) - iVar2;
        }
        if (bVar6 != iVar2 < 0) {
          FUN_00696a87();
          cVar3 = FUN_006b8eca();
          if ((cVar3 != '\0') || (*param_2 < *(int *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x1d) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_007d45a8;
          }
        }
LAB_007d46c3:
        puVar5 = (undefined4 *)FUN_007d4717(in_EAX,param_2);
        *param_1 = *puVar5;
        param_1[1] = puVar5[1];
        return param_1;
      }
      if (*param_2 <= *(int *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_007d46c3;
      uVar7 = 0;
      goto LAB_007d45a8;
    }
    if (*(int *)(param_4 + 0xc) <= *param_2) goto LAB_007d46c3;
  }
  uVar7 = 1;
LAB_007d45a8:
  FUN_007d47d8(param_1,uVar7,param_2);
  return param_1;
}



void FUN_007d46e5(int *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x1d) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((int)puVar2[3] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x1d) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



void FUN_007d4717(undefined4 *param_1,int *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x1d) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (int)local_c[3]);
      if (*param_2 < (int)local_c[3]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x1d) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007d478a;
    }
    FUN_00696e3c();
  }
  uVar3 = local_8;
  if (*param_2 <= (int)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007d478a:
  puVar2 = (undefined4 *)FUN_007d47d8(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007d47d8(int **param_1_00,undefined4 *param_1,char param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7d47e4;
  if (0xffffffd < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_006bb29d(unaff_ESI[6],param_1_00,unaff_ESI[6],param_3);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_007d48fd;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_007d48fd;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_007d48fd:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 7) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x1c) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 7) == '\0') {
LAB_007d48b9:
        *(undefined *)(piVar1 + 7) = 1;
        *(undefined *)(piVar7 + 7) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x1c) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_00745426(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x1c) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x1c) = 0;
        FUN_006baade(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 7) == '\0') goto LAB_007d48b9;
    if (piVar8 == (int *)*piVar1) {
      FUN_006baade(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x1c) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x1c) = 0;
    FUN_00745426(unaff_ESI);
  } while( true );
}



void FUN_007d4925(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 7) = 1;
  *(undefined *)((int)puVar1 + 0x1d) = 0;
  return;
}



undefined4 __thiscall FUN_007d494f(undefined4 param_1_00,byte param_1)

{
  FUN_00b6639e();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007d496b(undefined4 param_1_00,byte param_1)

{
  FUN_00ba7620();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_007d4ace(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7d4ae6;
  FUN_007d4c43();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007d4aed;
  FUN_00a3f6a1();
}



void FUN_007d498c(undefined4 *param_1)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  if (unaff_ESI != param_1) {
    FUN_007d4b76(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,
                 (undefined4 *)unaff_ESI[6]);
    FUN_007d4b1a();
  }
  return;
}



int FUN_007d49c2(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int *unaff_EBX;
  undefined local_20 [8];
  int local_18;
  uint local_14;
  int local_10;
  int local_c;
  
  local_c = FUN_00452f18();
  if (unaff_EBX == (int *)0x0) {
    FUN_00a3fb10();
  }
  local_18 = *unaff_EBX;
  local_14 = unaff_EBX[6];
  local_10 = local_18;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*param_1 < *(int *)(local_c + 0xc))) {
    local_18 = *param_1;
    local_14 = local_14 & 0xffff0000;
    piVar2 = (int *)FUN_00452be5(local_20,&local_18,local_10,local_c);
    local_10 = *piVar2;
    local_c = piVar2[1];
  }
  iVar3 = FUN_006badde();
  return iVar3 + 4;
}



int FUN_007d4a49(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int *unaff_EBX;
  undefined local_20 [8];
  int local_18;
  uint local_14;
  int local_10;
  int local_c;
  
  local_c = FUN_00452f18();
  if (unaff_EBX == (int *)0x0) {
    FUN_00a3fb10();
  }
  local_18 = *unaff_EBX;
  local_14 = unaff_EBX[6];
  local_10 = local_18;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*param_1 < *(int *)(local_c + 0xc))) {
    local_18 = *param_1;
    local_14 = local_14 & 0xffffff00;
    piVar2 = (int *)FUN_00452be5(local_20,&local_18,local_10,local_c);
    local_10 = *piVar2;
    local_c = piVar2[1];
  }
  iVar3 = FUN_006badde();
  return iVar3 + 4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007d4ace(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7d4ae6;
  FUN_007d4c43();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007d4aed;
  FUN_00a3f6a1();
}



void FUN_007d4af6(void)

{
  int *piVar1;
  int unaff_EDI;
  
  piVar1 = (int *)(unaff_EDI + 0x18);
  FUN_007d4c11(*(undefined4 *)(*piVar1 + 4));
  *(int *)(*piVar1 + 4) = *piVar1;
  *(undefined4 *)(unaff_EDI + 0x1c) = 0;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  return;
}



void __fastcall FUN_007d4b1a(int param_1)

{
  int iVar1;
  int **ppiVar2;
  int *piVar3;
  int in_EAX;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  
  iVar1 = *(int *)(param_1 + 0x18);
  uVar4 = FUN_007d4e90(*(undefined4 *)(*(int *)(in_EAX + 0x18) + 4),iVar1);
  *(undefined4 *)(iVar1 + 4) = uVar4;
  *(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(in_EAX + 0x1c);
  ppiVar2 = *(int ***)(param_1 + 0x18);
  piVar3 = ppiVar2[1];
  if (*(char *)((int)ppiVar2[1] + 0x15) == '\0') {
    do {
      piVar5 = piVar3;
      piVar3 = (int *)*piVar5;
    } while (*(char *)((int)piVar3 + 0x15) == '\0');
    *ppiVar2 = piVar5;
    iVar1 = *(int *)(*(int *)(param_1 + 0x18) + 4);
    do {
      iVar6 = iVar1;
      iVar1 = *(int *)(iVar6 + 8);
    } while (*(char *)(iVar1 + 0x15) == '\0');
    *(int *)(*(int *)(param_1 + 0x18) + 8) = iVar6;
  }
  else {
    *ppiVar2 = (int *)ppiVar2;
    *(int *)(*(int *)(param_1 + 0x18) + 8) = *(int *)(param_1 + 0x18);
  }
  return;
}



void FUN_007d4b76(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_007d4af6();
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00448b61();
    FUN_007d4f0e();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_007d4c11(int param_1)

{
  if (*(char *)(param_1 + 0x15) == '\0') {
    FUN_007d4c11(*(undefined4 *)(param_1 + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_007d4c43(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_007d4b76(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_007d4c77(undefined4 *param_1,int *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)param_1[6];
  local_c = CONCAT31(local_c._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_8[1] + 0x15) == '\0') {
    puVar2 = (undefined4 *)local_8[1];
    do {
      local_8 = puVar2;
      local_c = CONCAT31(local_c._1_3_,*param_2 < (int)local_8[3]);
      if (*param_2 < (int)local_8[3]) {
        puVar2 = (undefined4 *)*local_8;
      }
      else {
        puVar2 = (undefined4 *)local_8[2];
      }
    } while (*(char *)((int)puVar2 + 0x15) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_8;
  if ((char)local_c != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007d4ced;
    }
    FUN_005d021f();
  }
  uVar3 = local_c;
  if (*param_2 <= (int)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007d4ced:
  puVar2 = (undefined4 *)FUN_007d4d3b(&local_1c,uVar3,local_8,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007d4d3b(undefined4 *param_1,char param_2,int **param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int **ppiVar5;
  int *piVar6;
  int *piVar7;
  undefined4 *unaff_EDI;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7d4d47;
  if (0x1ffffffd < (uint)unaff_EDI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::length_error::vftable;
    __CxxThrowException_8(local_54,&DAT_03115554);
  }
  piVar4 = (int *)FUN_007d519b(unaff_EDI[6],param_3,unaff_EDI[6],0);
  unaff_EDI[7] = unaff_EDI[7] + 1;
  piVar7 = piVar4;
  if (param_3 == (int **)unaff_EDI[6]) {
    ((int **)unaff_EDI[6])[1] = piVar4;
    *(int **)unaff_EDI[6] = piVar4;
    *(int **)(unaff_EDI[6] + 8) = piVar4;
  }
  else if (param_2 == '\0') {
    param_3[2] = piVar4;
    if (param_3 == *(int ***)(unaff_EDI[6] + 8)) {
      *(int **)(unaff_EDI[6] + 8) = piVar4;
    }
  }
  else {
    *param_3 = piVar4;
    if (param_3 == *(int ***)(int **)unaff_EDI[6]) {
      *(int **)unaff_EDI[6] = piVar4;
    }
  }
  do {
    while( true ) {
      ppiVar5 = (int **)(piVar7 + 1);
      if (*(char *)(*ppiVar5 + 5) != '\0') {
        *(undefined *)(*(int *)(unaff_EDI[6] + 4) + 0x14) = 1;
        uVar3 = *unaff_EDI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar5;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar6 = ppiVar2[2];
      if (*(char *)(piVar6 + 5) == '\0') {
LAB_007d4e24:
        *(undefined *)(piVar1 + 5) = 1;
        *(undefined *)(piVar6 + 5) = 1;
        *(undefined *)((*ppiVar5)[1] + 0x14) = 0;
        piVar7 = (int *)(*ppiVar5)[1];
      }
      else {
        if (piVar7 == (int *)piVar1[2]) {
          FUN_00492c11(unaff_EDI);
          piVar7 = piVar1;
        }
        *(undefined *)(piVar7[1] + 0x14) = 1;
        *(undefined *)(*(int *)(piVar7[1] + 4) + 0x14) = 0;
        FUN_005d0280(unaff_EDI);
      }
    }
    piVar6 = *ppiVar2;
    if (*(char *)(piVar6 + 5) == '\0') goto LAB_007d4e24;
    if (piVar7 == (int *)*piVar1) {
      FUN_005d0280(unaff_EDI);
      piVar7 = piVar1;
    }
    *(undefined *)(piVar7[1] + 0x14) = 1;
    *(undefined *)(*(int *)(piVar7[1] + 4) + 0x14) = 0;
    FUN_00492c11(unaff_EDI);
  } while( true );
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007d4e90(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *local_18;
  
  local_18 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)param_1 + 0x15) == '\0') {
    puVar1 = (undefined4 *)FUN_007d519b(local_18,param_2,local_18,*(undefined *)(param_1 + 5));
    if (*(char *)((int)local_18 + 0x15) != '\0') {
      local_18 = puVar1;
    }
    uVar2 = FUN_007d4e90(*param_1,puVar1);
    *puVar1 = uVar2;
    uVar2 = FUN_007d4e90(param_1[2],puVar1);
    puVar1[2] = uVar2;
  }
  return local_18;
}



void Catch_All_007d4ef9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_007d4c11(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007d4ff9)
// WARNING: Removing unreachable block (ram,0x007d5009)
// WARNING: Removing unreachable block (ram,0x007d5012)
// WARNING: Removing unreachable block (ram,0x007d5015)
// WARNING: Removing unreachable block (ram,0x007d5005)
// WARNING: Removing unreachable block (ram,0x007d5022)
// WARNING: Removing unreachable block (ram,0x007d5032)
// WARNING: Removing unreachable block (ram,0x007d503d)
// WARNING: Removing unreachable block (ram,0x007d5039)
// WARNING: Removing unreachable block (ram,0x007d502d)
// WARNING: Removing unreachable block (ram,0x007d5040)

void FUN_007d4f0e(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7d4f1a;
  if (*(char *)((int)param_4 + 0x15) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00448b61();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x15) == '\0') {
    if (*(char *)(param_4[2] + 0x15) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x15) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x15) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x15) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x15) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x15) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 5) != '\x01') {
LAB_007d5171:
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_007d5125:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 5) != '\x01'))
  goto LAB_007d516d;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 5) == '\0') {
      *(undefined *)(ppiVar4 + 5) = 1;
      *(undefined *)(ppiVar3 + 5) = 0;
      FUN_00492c11(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x15) == '\0') {
      if ((*(char *)(*ppiVar4 + 5) != '\x01') || (*(char *)(ppiVar4[2] + 5) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 5) == '\x01') {
          *(undefined *)(*ppiVar4 + 5) = 1;
          *(undefined *)(ppiVar4 + 5) = 0;
          FUN_005d0280(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 5) = *(undefined *)(ppiVar3 + 5);
        *(undefined *)(ppiVar3 + 5) = 1;
        *(undefined *)(ppiVar4[2] + 5) = 1;
        FUN_00492c11(param_1);
        goto LAB_007d516d;
      }
LAB_007d511c:
      *(undefined *)(ppiVar4 + 5) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 5) == '\0') {
      *(undefined *)(ppiVar4 + 5) = 1;
      *(undefined *)(ppiVar3 + 5) = 0;
      FUN_005d0280(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x15) == '\0') {
      if ((*(char *)(ppiVar4[2] + 5) == '\x01') && (*(char *)(*ppiVar4 + 5) == '\x01'))
      goto LAB_007d511c;
      if (*(char *)(*ppiVar4 + 5) == '\x01') {
        *(undefined *)(ppiVar4[2] + 5) = 1;
        *(undefined *)(ppiVar4 + 5) = 0;
        FUN_00492c11(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 5) = *(undefined *)(ppiVar3 + 5);
      *(undefined *)(ppiVar3 + 5) = 1;
      *(undefined *)(*ppiVar4 + 5) = 1;
      FUN_005d0280(param_1);
LAB_007d516d:
      *(undefined *)(ppiVar5 + 5) = 1;
      goto LAB_007d5171;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_007d5125;
}



void FUN_007d519b(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined param_4)

{
  undefined4 *puVar1;
  undefined4 *unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *unaff_ESI;
    puVar1[4] = unaff_ESI[1];
    *(undefined *)(puVar1 + 5) = param_4;
    *(undefined *)((int)puVar1 + 0x15) = 0;
  }
  return;
}



undefined4 __thiscall FUN_007d51d4(undefined4 param_1_00,byte param_1)

{
  FUN_00b9ec98();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007d51f0(void)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  int iVar3;
  uint uVar4;
  uint uVar5;
  int unaff_EBX;
  uint uVar6;
  undefined4 uVar7;
  
  if (in_EAX != unaff_EBX) {
    uVar4 = *(int *)(unaff_EBX + 0x10) - *(int *)(unaff_EBX + 0xc) >> 3;
    if (uVar4 == 0) {
      FUN_00674b89();
    }
    else {
      iVar3 = *(int *)(in_EAX + 0xc);
      uVar5 = *(int *)(in_EAX + 0x10) - iVar3 >> 3;
      if (uVar5 < uVar4) {
        if (iVar3 == 0) {
          uVar6 = 0;
        }
        else {
          uVar6 = *(int *)(in_EAX + 0x14) - iVar3 >> 3;
        }
        if (uVar6 < uVar4) {
          if (iVar3 != 0) {
            FUN_00674c9a(*(undefined4 *)(in_EAX + 0x10));
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(*(undefined4 *)(in_EAX + 0xc));
          }
          iVar3 = *(int *)(unaff_EBX + 0x10);
          iVar1 = *(int *)(unaff_EBX + 0xc);
          *(undefined4 *)(in_EAX + 0xc) = 0;
          *(undefined4 *)(in_EAX + 0x10) = 0;
          *(undefined4 *)(in_EAX + 0x14) = 0;
          if (iVar3 - iVar1 >> 3 == 0) {
            return;
          }
          cVar2 = FUN_006b1f5c();
          if (cVar2 == '\0') {
            return;
          }
          uVar7 = *(undefined4 *)(in_EAX + 0xc);
        }
        else {
          FUN_00674faa(*(int *)(unaff_EBX + 0xc) + uVar5 * 8);
          uVar7 = *(undefined4 *)(in_EAX + 0x10);
        }
        iVar3 = FUN_00674fdf(*(undefined4 *)(unaff_EBX + 0x10),uVar7);
      }
      else {
        FUN_00674faa(*(int *)(unaff_EBX + 0x10));
        FUN_00674c9a(*(undefined4 *)(in_EAX + 0x10));
        iVar3 = *(int *)(in_EAX + 0xc) +
                (*(int *)(unaff_EBX + 0x10) - *(int *)(unaff_EBX + 0xc) >> 3) * 8;
      }
      *(int *)(in_EAX + 0x10) = iVar3;
    }
  }
  return;
}



undefined4 __thiscall FUN_007d52c3(undefined4 param_1_00,byte param_1)

{
  FUN_00ba33ab();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007d52df(undefined4 *param_1)

{
  *param_1 = common::WE1313B31<unsigned_int>::vftable;
  FUN_007d4af6();
  FUN_007d4ace(param_1 + 1);
  return;
}



void Catch_All_007d5314(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007d531e(void)

{
  undefined4 *puVar1;
  char *unaff_ESI;
  int unaff_EDI;
  
  if ((-(uint)(*unaff_ESI != '\0') & 0x6a1cd8) == 0) {
    FUN_007d56a4(unaff_EDI + 4,&stack0x00000004);
  }
  else {
    puVar1 = (undefined4 *)FUN_00452997(&stack0x00000004);
    *puVar1 = *(undefined4 *)(unaff_ESI + 4);
  }
  return;
}



undefined * FUN_007d5359(undefined *param_1,int param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int iVar4;
  int unaff_EBX;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  puVar3 = (undefined4 *)(*(undefined4 **)(unaff_EBX + 0x1c))[1];
  local_8 = *(undefined4 **)(unaff_EBX + 0x1c);
  while (puVar2 = puVar3, *(char *)((int)puVar2 + 0x15) == '\0') {
    if ((int)puVar2[3] < param_2) {
      puVar3 = (undefined4 *)puVar2[2];
    }
    else {
      puVar3 = (undefined4 *)*puVar2;
      local_8 = puVar2;
    }
  }
  local_18 = *(undefined4 *)(unaff_EBX + 0x1c);
  local_10 = local_8;
  local_1c = *(undefined4 *)(unaff_EBX + 4);
  puVar3 = &local_14;
  local_14 = local_1c;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (param_2 < (int)local_8[3])) {
    local_18 = *(undefined4 *)(unaff_EBX + 0x1c);
    local_1c = *(undefined4 *)(unaff_EBX + 4);
    puVar3 = &local_1c;
  }
  local_c = *puVar3;
  local_8 = (undefined4 *)puVar3[1];
  local_18 = *(undefined4 *)(unaff_EBX + 0x1c);
  local_1c = *(undefined4 *)(unaff_EBX + 4);
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    iVar4 = FUN_006badde();
    FUN_00419e70(iVar4 + 4);
  }
  else {
    *param_1 = 0;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007d5411(undefined4 *param_1)

{
  *param_1 = common::WE1313B31<unsigned_short>::vftable;
  FUN_007d4af6();
  FUN_007d4ace(param_1 + 1);
  return;
}



void Catch_All_007d5446(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined * FUN_007d5450(undefined *param_1,int param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int iVar4;
  int unaff_EBX;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  puVar3 = (undefined4 *)(*(undefined4 **)(unaff_EBX + 0x1c))[1];
  local_8 = *(undefined4 **)(unaff_EBX + 0x1c);
  while (puVar2 = puVar3, *(char *)((int)puVar2 + 0x15) == '\0') {
    if ((int)puVar2[3] < param_2) {
      puVar3 = (undefined4 *)puVar2[2];
    }
    else {
      puVar3 = (undefined4 *)*puVar2;
      local_8 = puVar2;
    }
  }
  local_18 = *(undefined4 *)(unaff_EBX + 0x1c);
  local_10 = local_8;
  local_1c = *(undefined4 *)(unaff_EBX + 4);
  puVar3 = &local_14;
  local_14 = local_1c;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (param_2 < (int)local_8[3])) {
    local_18 = *(undefined4 *)(unaff_EBX + 0x1c);
    local_1c = *(undefined4 *)(unaff_EBX + 4);
    puVar3 = &local_1c;
  }
  local_c = *puVar3;
  local_8 = (undefined4 *)puVar3[1];
  local_18 = *(undefined4 *)(unaff_EBX + 0x1c);
  local_1c = *(undefined4 *)(unaff_EBX + 4);
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    iVar4 = FUN_006badde();
    *param_1 = 0;
    if ((undefined2 *)(param_1 + 2) != (undefined2 *)0x0) {
      *(undefined2 *)(param_1 + 2) = *(undefined2 *)(iVar4 + 4);
    }
    *param_1 = 1;
  }
  else {
    *param_1 = 0;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007d5514(undefined4 *param_1)

{
  *param_1 = common::WE1313B31<unsigned_char>::vftable;
  FUN_007d4af6();
  FUN_007d4ace(param_1 + 1);
  return;
}



void Catch_All_007d5549(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007d5553(void)

{
  char *pcVar1;
  char *unaff_ESI;
  int unaff_EDI;
  
  if ((-(uint)(*unaff_ESI != '\0') & 0x6a1cd8) == 0) {
    FUN_007d56a4(unaff_EDI + 4,&stack0x00000004);
  }
  else {
    pcVar1 = (char *)FUN_007d4a49(&stack0x00000004);
    *pcVar1 = unaff_ESI[1];
  }
  return;
}



undefined * FUN_007d558e(undefined *param_1,int param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int iVar4;
  int unaff_EBX;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 local_c;
  undefined4 *local_8;
  
  puVar3 = (undefined4 *)(*(undefined4 **)(unaff_EBX + 0x1c))[1];
  local_8 = *(undefined4 **)(unaff_EBX + 0x1c);
  while (puVar2 = puVar3, *(char *)((int)puVar2 + 0x15) == '\0') {
    if ((int)puVar2[3] < param_2) {
      puVar3 = (undefined4 *)puVar2[2];
    }
    else {
      puVar3 = (undefined4 *)*puVar2;
      local_8 = puVar2;
    }
  }
  local_18 = *(undefined4 *)(unaff_EBX + 0x1c);
  local_10 = local_8;
  local_1c = *(undefined4 *)(unaff_EBX + 4);
  puVar3 = &local_14;
  local_14 = local_1c;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (param_2 < (int)local_8[3])) {
    local_18 = *(undefined4 *)(unaff_EBX + 0x1c);
    local_1c = *(undefined4 *)(unaff_EBX + 4);
    puVar3 = &local_1c;
  }
  local_c = *puVar3;
  local_8 = (undefined4 *)puVar3[1];
  local_18 = *(undefined4 *)(unaff_EBX + 0x1c);
  local_1c = *(undefined4 *)(unaff_EBX + 4);
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    iVar4 = FUN_006badde();
    *param_1 = 0;
    if (param_1 + 1 != (undefined *)0x0) {
      param_1[1] = *(undefined *)(iVar4 + 4);
    }
    *param_1 = 1;
  }
  else {
    *param_1 = 0;
  }
  return param_1;
}



undefined4 __thiscall FUN_007d5650(undefined4 param_1_00,byte param_1)

{
  FUN_007d52df();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007d566c(undefined4 param_1_00,byte param_1)

{
  FUN_007d5411();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007d5688(undefined4 param_1_00,byte param_1)

{
  FUN_007d5514();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int FUN_007d56a4(undefined4 param_1,int param_2)

{
  char cVar1;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined local_14 [16];
  
  FUN_007d5713(param_2);
  param_2 = 0;
  while( true ) {
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') break;
    param_2 = param_2 + 1;
    FUN_00448b61();
  }
  FUN_007d4b76(local_14,local_24,local_20,local_1c,local_18);
  return param_2;
}



void __thiscall FUN_007d5713(undefined4 *param_1_00,int *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *local_8;
  
  puVar4 = (undefined4 *)param_1_00[6];
  local_8 = puVar4;
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x15) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((int)puVar2[3] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        if ((*(char *)((int)puVar4 + 0x15) != '\0') && (*param_1 < (int)puVar2[3])) {
          puVar4 = puVar2;
        }
        puVar3 = (undefined4 *)*puVar2;
        local_8 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x15) == '\0');
  }
  if (*(char *)((int)puVar4 + 0x15) == '\0') {
    puVar2 = (undefined4 *)*puVar4;
  }
  else {
    puVar2 = *(undefined4 **)(param_1_00[6] + 4);
  }
  if (*(char *)((int)puVar2 + 0x15) == '\0') {
    do {
      if (*param_1 < (int)puVar2[3]) {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      else {
        puVar3 = (undefined4 *)puVar2[2];
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x15) == '\0');
  }
  uVar1 = *param_1_00;
  in_EAX[1] = local_8;
  *in_EAX = uVar1;
  in_EAX[2] = uVar1;
  in_EAX[3] = puVar4;
  return;
}



undefined4 __thiscall FUN_007d5799(undefined4 param_1_00,byte param_1)

{
  FUN_00bb0b99();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007d57b5(void)

{
  int in_EAX;
  int unaff_EBX;
  
  if (unaff_EBX + 4 != in_EAX + 4) {
    FUN_007d498c(in_EAX + 8);
  }
  if (unaff_EBX + 0x28 != in_EAX + 0x28) {
    FUN_007d498c(in_EAX + 0x2c);
  }
  if (unaff_EBX + 0x4c != in_EAX + 0x4c) {
    FUN_007d498c(in_EAX + 0x50);
  }
  FUN_00b94fd0();
  return;
}



void __fastcall FUN_007d5810(undefined4 *param_1)

{
  *param_1 = W6D665DF4::W2201CC41::vftable;
  return;
}



undefined4 * __thiscall FUN_007d5820(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W6D665DF4::W2201CC41::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007d5840(undefined4 param_1,int *param_2,undefined4 param_3,int *param_4)

{
  int iVar1;
  uint uVar2;
  undefined4 *unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c14148;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffff0;
  ExceptionList = &local_c;
  local_4 = 0;
  *unaff_EDI = W6D665DF4::WAA3F02F3::vftable;
  unaff_EDI[1] = param_1;
  unaff_EDI[2] = param_2;
  if (param_2 != (int *)0x0) {
    LOCK();
    param_2[1] = param_2[1] + 1;
    UNLOCK();
  }
  unaff_EDI[3] = param_3;
  unaff_EDI[4] = param_4;
  if (param_4 != (int *)0x0) {
    LOCK();
    param_4[1] = param_4[1] + 1;
    UNLOCK();
  }
  if (param_2 != (int *)0x0) {
    LOCK();
    iVar1 = param_2[1] + -1;
    param_2[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*param_2 + 4))(uVar2);
      LOCK();
      iVar1 = param_2[2] + -1;
      param_2[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*param_2 + 8))();
      }
    }
  }
  local_4 = 0xffffffff;
  if (param_4 != (int *)0x0) {
    LOCK();
    iVar1 = param_4[1] + -1;
    param_4[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*param_4 + 4))();
      LOCK();
      iVar1 = param_4[2] + -1;
      param_4[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*param_4 + 8))();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_007d5940(undefined4 param_1_00,byte param_1)

{
  FUN_007d5960(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007d5960(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c14123;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 1;
  piVar1 = (int *)param_1[4];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  local_4 = local_4 & 0xffffff00;
  piVar1 = (int *)param_1[2];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = W6D665DF4::W2201CC41::vftable;
  ExceptionList = local_c;
  return;
}



// WARNING: Removing unreachable block (ram,0x007d5ab9)

undefined4 * __thiscall FUN_007d5a10(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  void *unaff_ESI;
  undefined4 *unaff_retaddr;
  undefined4 uStack_30;
  undefined4 *puStack_2c;
  undefined4 uStack_28;
  uint uStack_24;
  undefined4 *puStack_18;
  void *local_14;
  undefined4 *local_c;
  undefined *puStack_8;
  undefined4 *puStack_4;
  
  puStack_4 = (undefined4 *)0xffffffff;
  puStack_8 = &LAB_00c111c1;
  local_c = (undefined4 *)ExceptionList;
  uStack_24 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  local_14 = (void *)0x0;
  uStack_28 = param_2;
  puStack_2c = &param_2;
  uStack_30 = 0x7d5a53;
  puVar2 = (undefined4 *)(**(code **)(**(int **)(param_1_00 + 4) + 4))();
  uVar1 = *puVar2;
  *puVar2 = 0;
  local_c = (undefined4 *)0x1;
  if (unaff_retaddr != (undefined4 *)0x0) {
    uStack_30 = 1;
    (**(code **)*unaff_retaddr)();
  }
  if (*(int **)(param_1_00 + 0xc) == (int *)0x0) {
    *puStack_4 = uVar1;
    ExceptionList = local_14;
    return puStack_4;
  }
  puStack_18 = &uStack_30;
  uStack_30 = uVar1;
  puVar2 = (undefined4 *)(**(code **)(**(int **)(param_1_00 + 0xc) + 4))(&puStack_18);
  uVar1 = *puVar2;
  *puVar2 = 0;
  *local_c = uVar1;
  ExceptionList = unaff_ESI;
  return local_c;
}



undefined4 __thiscall FUN_007d5b00(undefined4 param_1_00,byte param_1)

{
  FUN_007d5b20(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007d5b20(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c07ed8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if ((undefined4 *)param_1[1] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[1])(1,DAT_0323f878 ^ (uint)&stack0xfffffff0);
  }
  *param_1 = W6D665DF4::W2201CC41::vftable;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_007d5b80(int param_1_00,undefined4 *param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  uint uVar4;
  uint local_120;
  undefined4 local_11c;
  undefined *local_118;
  undefined4 *local_114;
  undefined4 uStack_110;
  uint uStack_10c;
  uint *local_f8;
  undefined4 *local_f4;
  undefined4 local_f0;
  undefined4 *local_ec;
  undefined **local_dc;
  undefined local_24;
  undefined4 local_23;
  undefined4 local_1f;
  undefined4 local_1b;
  undefined4 local_17;
  undefined2 local_13;
  undefined local_11;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3d3ed;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_f8;
  uStack_10c = DAT_0323f878 ^ (uint)&stack0xfffffef8;
  ExceptionList = &local_c;
  local_ec = param_1;
  local_f0 = 0;
  local_24 = 0;
  local_23 = 0;
  local_1f = 0;
  local_1b = 0;
  local_17 = 0;
  local_13 = 0;
  local_11 = 0;
  local_dc = WB009B997::WCC4A7367::vftable;
  uStack_110 = 0x7d5c1a;
  FUN_00b71f00();
  local_4 = 1;
  uStack_110 = 0x7d5c2a;
  FUN_00b71f00();
  uStack_110 = *(undefined4 *)(param_2 + 0x14);
  if (*(uint *)(param_2 + 0x18) < 0x10) {
    local_114 = (undefined4 *)(param_2 + 4);
  }
  else {
    local_114 = *(undefined4 **)(param_2 + 4);
  }
  local_f4 = &local_11c;
  local_11c._0_1_ = 0;
  local_120 = 0x7d5c53;
  FUN_00b72260();
  iVar1 = *(int *)(param_1_00 + 4);
  if (((iVar1 != 0) && (*(int *)(iVar1 + 4) != 0)) && (*(int *)(iVar1 + 8) != 0)) {
    uStack_110 = 0;
    local_f4 = (undefined4 *)0x0;
    local_114 = (undefined4 *)0x7d5c75;
    FUN_00b92f80();
    uStack_110 = *(undefined4 *)(*(int *)(param_1_00 + 4) + 8);
    local_f8 = &local_11c;
    local_114 = local_f4;
    local_11c._0_1_ = 0;
    local_120 = 0x7d5c97;
    FUN_00b72260();
  }
  uStack_110 = 0x14;
  local_f8 = &local_11c;
  local_114 = (undefined4 *)&local_24;
  local_11c._0_1_ = 0;
  local_120 = 0x7d5cb7;
  FUN_00b72390();
  uVar4 = 0;
  if (*(int *)(param_1_00 + 8) != 0) {
    do {
      uStack_110 = 0x7d5cc9;
      FUN_00b71f00();
      uStack_110 = 0x14;
      local_f8 = &local_11c;
      local_114 = (undefined4 *)&local_24;
      local_11c._0_1_ = 0;
      local_120 = 0x7d5ce7;
      FUN_00b72260();
      uStack_110 = 0x14;
      local_f8 = &local_11c;
      local_114 = (undefined4 *)&local_24;
      local_11c._0_1_ = 0;
      local_120 = 0x7d5d05;
      FUN_00b72390();
      uVar4 = uVar4 + 1;
    } while (uVar4 < *(uint *)(param_1_00 + 8));
  }
  uStack_110 = 0;
  local_114 = (undefined4 *)0x14;
  local_f8 = &local_120;
  local_118 = &local_24;
  local_120 = local_120 & 0xffffff00;
  puVar3 = (undefined4 *)FUN_00b932e0();
  uVar2 = *puVar3;
  *puVar3 = 0;
  *local_ec = uVar2;
  local_f0 = 1;
  if (local_f4 != (undefined4 *)0x0) {
    uStack_110 = 1;
    local_114 = (undefined4 *)0x7d5d51;
    (**(code **)*local_f4)();
  }
  uStack_110 = 0x14;
  local_f8 = &local_11c;
  local_114 = (undefined4 *)&local_24;
  local_11c._0_1_ = 0;
  local_120 = 0x7d5d71;
  FUN_00b92490();
  local_4 = local_4 & 0xffffff00;
  uStack_110 = 0x7d5d84;
  FUN_00b72070();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_007d5df0(undefined4 param_1_00,byte param_1)

{
  FUN_007d5e0c();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007d5e0c(undefined4 *param_1)

{
  *param_1 = W16D1C966::W2FC1E8C1::vftable;
  FUN_00b72d90();
  FUN_00417fe6();
  *param_1 = W16D1C966::W855293D2::vftable;
  return;
}



void FUN_007d5e46(void)

{
  int unaff_ESI;
  
  (**(code **)(*(int *)(unaff_ESI + 0x20) + 0x28))(0,0);
  (**(code **)(*(int *)(unaff_ESI + 0x20) + 0x30))(0,0);
  *(undefined2 *)(unaff_ESI + 4) = 0xffff;
  *(undefined2 *)(unaff_ESI + 6) = 0xffff;
  *(undefined2 *)(unaff_ESI + 8) = 0xffff;
  *(undefined2 *)(unaff_ESI + 10) = 0xffff;
  *(undefined2 *)(unaff_ESI + 0xc) = 0xffff;
  *(undefined2 *)(unaff_ESI + 0xe) = 0xffff;
  *(undefined2 *)(unaff_ESI + 0x10) = 0xffff;
  *(undefined *)(unaff_ESI + 0x58) = 0;
  *(undefined *)(unaff_ESI + 0x59) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007d5e8b(int param_1)

{
  char local_14;
  
  FUN_0043d406(param_1 + 0x14);
  FUN_007d5e46();
  if (local_14 != '\0') {
    FUN_00401477();
  }
  return;
}



void FUN_007d5ec6(ushort param_1)

{
  ushort unaff_BX;
  int unaff_ESI;
  ushort unaff_DI;
  undefined local_24 [8];
  undefined2 *local_1c;
  undefined4 uStack_18;
  undefined2 local_14;
  undefined4 local_12;
  ushort local_e;
  ushort local_c;
  ushort local_a;
  undefined *local_8;
  
  if (((*(ushort *)(unaff_ESI + 4) != unaff_DI) || (*(ushort *)(unaff_ESI + 6) != param_1)) ||
     (*(ushort *)(unaff_ESI + 8) != unaff_BX)) {
    local_14 = 0xd7ae;
    local_e = unaff_DI << 8 | unaff_DI >> 8;
    local_c = param_1 << 8 | param_1 >> 8;
    local_a = unaff_BX << 8 | unaff_BX >> 8;
    uStack_18 = 0x7d5f15;
    local_12 = FUN_00b74bf0();
    uStack_18 = 0xc;
    local_8 = local_24;
    local_1c = &local_14;
    local_24[0] = 0;
    (**(code **)(*(int *)(unaff_ESI + 0x20) + 0x14))();
    *(ushort *)(unaff_ESI + 4) = unaff_DI;
    *(ushort *)(unaff_ESI + 6) = param_1;
    *(ushort *)(unaff_ESI + 8) = unaff_BX;
  }
  return;
}



void FUN_007d5f47(ushort param_1,ushort param_2)

{
  ushort unaff_BX;
  int unaff_ESI;
  ushort unaff_DI;
  undefined local_28 [8];
  undefined2 *local_20;
  undefined4 uStack_1c;
  undefined2 local_18;
  undefined4 local_16;
  ushort local_12;
  ushort local_10;
  ushort local_e;
  ushort local_c;
  undefined *local_8;
  
  if ((((*(ushort *)(unaff_ESI + 10) != unaff_DI) || (*(ushort *)(unaff_ESI + 0xc) != param_1)) ||
      (*(ushort *)(unaff_ESI + 0xe) != param_2)) || (*(ushort *)(unaff_ESI + 0x10) != unaff_BX)) {
    local_18 = 0xc1ae;
    local_12 = unaff_DI << 8 | unaff_DI >> 8;
    local_10 = param_1 << 8 | param_1 >> 8;
    local_e = param_2 << 8 | param_2 >> 8;
    local_c = unaff_BX << 8 | unaff_BX >> 8;
    uStack_1c = 0x7d5fac;
    local_16 = FUN_00b74bf0();
    uStack_1c = 0xe;
    local_8 = local_28;
    local_20 = &local_18;
    local_28[0] = 0;
    (**(code **)(*(int *)(unaff_ESI + 0x20) + 0x14))();
    *(ushort *)(unaff_ESI + 0xc) = param_1;
    *(ushort *)(unaff_ESI + 10) = unaff_DI;
    *(ushort *)(unaff_ESI + 0xe) = param_2;
    *(ushort *)(unaff_ESI + 0x10) = unaff_BX;
  }
  return;
}



void FUN_007d5fe6(void)

{
  int *in_EAX;
  int unaff_EDI;
  undefined local_2c [8];
  undefined2 *local_24;
  undefined4 uStack_20;
  undefined2 local_14;
  undefined4 local_12;
  undefined4 local_e;
  undefined *local_8;
  
  local_14 = 0xacae;
  uStack_20 = 0x7d6003;
  local_e = FUN_00b74bf0();
  uStack_20 = 0x7d600e;
  local_12 = FUN_00b74bf0();
  uStack_20 = 10;
  local_8 = local_2c;
  local_24 = &local_14;
  local_2c[0] = 0;
  (**(code **)(*in_EAX + 0x14))();
  if (*(int *)(unaff_EDI + 8) != 0) {
    FUN_00bb13e0();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007d603c(int param_1)

{
  char local_14;
  
  FUN_0043d406();
  if (*(char *)(param_1 + 0x59) == '\0') {
    FUN_00b74bf0();
    FUN_00b74bf0();
    FUN_00b74bf0();
    (**(code **)(*(int *)(param_1 + 0x20) + 0x14))();
  }
  if (local_14 != '\0') {
    FUN_00401477();
  }
  return;
}



void __fastcall FUN_007d60da(int param_1)

{
  ushort uVar1;
  ushort *puVar2;
  uint uVar3;
  uint local_9c;
  undefined4 uStack_98;
  uint *local_94;
  undefined *puStack_90;
  uint uStack_8c;
  undefined local_7a [2];
  undefined local_78 [2];
  undefined local_76 [2];
  undefined local_74 [4];
  undefined local_70 [4];
  undefined local_6c [4];
  uint local_68;
  uint local_64;
  uint local_60;
  uint *local_5c;
  uint local_58;
  undefined4 local_54;
  uint local_50;
  undefined4 local_4c;
  undefined8 local_48;
  char local_3c;
  undefined local_38 [8];
  undefined local_30 [12];
  undefined2 local_24;
  undefined4 local_22;
  undefined4 local_1e;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4b0df;
  local_14 = ExceptionList;
  uStack_8c = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_14;
  puStack_90 = local_74;
  local_94 = (uint *)0x7d6115;
  FUN_00496e91();
  puStack_90 = local_7a;
  local_94 = (uint *)0x7d6123;
  FUN_007cbd6f();
  puStack_90 = local_70;
  local_94 = (uint *)0x7d6133;
  FUN_00496e91();
  puStack_90 = local_78;
  local_94 = (uint *)0x7d6141;
  puVar2 = (ushort *)FUN_007d65fe();
  uVar1 = *puVar2;
  puStack_90 = local_6c;
  local_94 = (uint *)0x7d6151;
  FUN_00496e91();
  puStack_90 = local_76;
  local_94 = (uint *)0x7d615f;
  puVar2 = (ushort *)FUN_007d65dd();
  local_68 = (uint)*puVar2;
  puStack_90 = &stack0x00000008;
  local_94 = &local_58;
  uStack_98 = 0x7d6174;
  FUN_00496cf1();
  puStack_90 = (undefined *)0x0;
  local_94 = (uint *)0xd693a400;
  uStack_98 = local_54;
  local_9c = local_58;
  uVar3 = __alldiv();
  local_5c = (uint *)(uVar3 & 0xffff);
  puStack_90 = &stack0x00000008;
  local_94 = (uint *)local_38;
  uStack_98 = 0x7d619f;
  FUN_00496cf1();
  puStack_90 = (undefined *)0x7d61aa;
  local_60 = FUN_00496cd0();
  local_60 = local_60 & 0xffff;
  puStack_90 = &stack0x00000008;
  local_94 = (uint *)local_30;
  uStack_98 = 0x7d61bf;
  FUN_00496cf1();
  puStack_90 = (undefined *)0x7d61ca;
  local_64 = FUN_00496caf();
  local_64 = local_64 & 0xffff;
  puStack_90 = &stack0x00000008;
  local_94 = &local_50;
  uStack_98 = 0x7d61df;
  FUN_00496cf1();
  puStack_90 = (undefined *)0x0;
  local_94 = (uint *)0x3e8;
  uStack_98 = local_4c;
  local_9c = local_50;
  local_48 = __alldiv();
  puStack_90 = (undefined *)(param_1 + 0x14);
  local_94 = (uint *)0x7d620a;
  FUN_0043d406();
  local_c = 0;
  if (*(char *)(param_1 + 0x59) == '\0') {
    local_94 = (uint *)0x7d6223;
    puStack_90 = (undefined *)(uint)uVar1;
    FUN_007d5ec6();
    puStack_90 = (undefined *)local_64;
    local_94 = (uint *)local_60;
    uStack_98 = 0x7d6238;
    FUN_007d5f47();
    local_24 = 0xe1ae;
    puStack_90 = (undefined *)0x7d624a;
    local_1e = FUN_00b74bf0();
    puStack_90 = (undefined *)0x7d6256;
    local_22 = FUN_00b74bf0();
    puStack_90 = (undefined *)0xa;
    local_5c = &local_9c;
    local_94 = (uint *)&local_24;
    local_9c = local_9c & 0xffffff00;
    (**(code **)(*(int *)(param_1 + 0x20) + 0x14))();
    *(undefined *)(param_1 + 0x58) = 1;
  }
  local_c = 0xffffffff;
  if (local_3c != '\0') {
    puStack_90 = (undefined *)0x7d6293;
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_007d62a8(int param_1_00,undefined4 param_1,int param_2)

{
  ushort uVar1;
  ushort *puVar2;
  uint uVar3;
  uint local_9c;
  undefined4 uStack_98;
  uint *local_94;
  undefined *puStack_90;
  uint uStack_8c;
  undefined local_7a [2];
  undefined local_78 [2];
  undefined local_76 [2];
  undefined local_74 [4];
  undefined local_70 [4];
  undefined local_6c [4];
  uint local_68;
  uint local_64;
  uint local_60;
  uint *local_5c;
  uint local_58;
  undefined4 local_54;
  uint local_50;
  undefined4 local_4c;
  undefined8 local_48;
  char local_3c;
  undefined local_38 [8];
  undefined local_30 [8];
  undefined2 local_28;
  undefined4 local_26;
  undefined4 local_22;
  undefined4 local_1e;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4b0df;
  local_14 = ExceptionList;
  uStack_8c = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_14;
  puStack_90 = local_74;
  local_94 = (uint *)0x7d62e3;
  FUN_00496e91();
  puStack_90 = local_7a;
  local_94 = (uint *)0x7d62f1;
  FUN_007cbd6f();
  puStack_90 = local_70;
  local_94 = (uint *)0x7d6301;
  FUN_00496e91();
  puStack_90 = local_78;
  local_94 = (uint *)0x7d630f;
  puVar2 = (ushort *)FUN_007d65fe();
  uVar1 = *puVar2;
  puStack_90 = local_6c;
  local_94 = (uint *)0x7d631f;
  FUN_00496e91();
  puStack_90 = local_76;
  local_94 = (uint *)0x7d632d;
  puVar2 = (ushort *)FUN_007d65dd();
  local_68 = (uint)*puVar2;
  puStack_90 = &stack0x0000000c;
  local_94 = &local_58;
  uStack_98 = 0x7d6342;
  FUN_00496cf1();
  puStack_90 = (undefined *)0x0;
  local_94 = (uint *)0xd693a400;
  uStack_98 = local_54;
  local_9c = local_58;
  uVar3 = __alldiv();
  local_5c = (uint *)(uVar3 & 0xffff);
  puStack_90 = &stack0x0000000c;
  local_94 = (uint *)local_38;
  uStack_98 = 0x7d636d;
  FUN_00496cf1();
  puStack_90 = (undefined *)0x7d6378;
  local_60 = FUN_00496cd0();
  local_60 = local_60 & 0xffff;
  puStack_90 = &stack0x0000000c;
  local_94 = (uint *)local_30;
  uStack_98 = 0x7d638d;
  FUN_00496cf1();
  puStack_90 = (undefined *)0x7d6398;
  local_64 = FUN_00496caf();
  local_64 = local_64 & 0xffff;
  puStack_90 = &stack0x0000000c;
  local_94 = &local_50;
  uStack_98 = 0x7d63ad;
  FUN_00496cf1();
  puStack_90 = (undefined *)0x0;
  local_94 = (uint *)0x3e8;
  uStack_98 = local_4c;
  local_9c = local_50;
  local_48 = __alldiv();
  puStack_90 = (undefined *)(param_1_00 + 0x14);
  local_94 = (uint *)0x7d63d8;
  FUN_0043d406();
  local_c = 0;
  if (*(char *)(param_1_00 + 0x59) == '\0') {
    local_94 = (uint *)0x7d63f5;
    puStack_90 = (undefined *)(uint)uVar1;
    FUN_007d5ec6();
    puStack_90 = (undefined *)local_64;
    local_94 = (uint *)local_60;
    uStack_98 = 0x7d640a;
    FUN_007d5f47();
    local_28 = 0xedae;
    puStack_90 = (undefined *)0x7d641c;
    local_22 = FUN_00b74bf0();
    puStack_90 = (undefined *)0x7d642d;
    local_1e = FUN_00b74bf0();
    puStack_90 = (undefined *)0x7d6439;
    local_26 = FUN_00b74bf0();
    puStack_90 = (undefined *)0xe;
    local_5c = &local_9c;
    local_94 = (uint *)&local_28;
    local_9c = local_9c & 0xffffff00;
    (**(code **)(*(int *)(param_1_00 + 0x20) + 0x14))();
    if (*(int *)(param_2 + 8) != 0) {
      puStack_90 = (undefined *)param_2;
      local_94 = (uint *)0x7d6468;
      FUN_00bb13e0();
    }
    *(undefined *)(param_1_00 + 0x58) = 1;
  }
  local_c = 0xffffffff;
  if (local_3c != '\0') {
    puStack_90 = (undefined *)0x7d6485;
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_007d649a(int param_1)

{
  int iVar1;
  char local_8;
  
  iVar1 = param_1;
  FUN_0043d406(param_1 + 0x14);
  local_8 = (char)param_1;
  *(undefined *)(param_1 + 0x59) = 1;
  if (local_8 != '\0') {
    FUN_00401477(iVar1);
  }
  return;
}



void __thiscall FUN_007d64c3(int param_1_00,undefined *param_1)

{
  undefined4 uVar1;
  char cVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 *local_5c [2];
  char local_54;
  undefined local_50 [8];
  undefined4 local_48;
  undefined4 local_44;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c42708;
  local_14 = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_14;
  FUN_0043d406(param_1_00 + 0x14);
  local_c = 0;
  *param_1 = *(undefined *)(param_1_00 + 0x58);
  FUN_00b72ec0(local_50);
  local_c = CONCAT31(local_c._1_3_,1);
  if (*(char *)(param_1_00 + 0x59) == '\0') {
    puVar4 = (undefined4 *)FUN_00b933f0(local_5c,0,uVar3);
    uVar1 = *puVar4;
    *puVar4 = 0;
    FUN_0040c727(uVar1);
    if (local_5c[0] != (undefined4 *)0x0) {
      (**(code **)*local_5c[0])(1);
    }
  }
  else {
    if (*(char *)(param_1_00 + 0x58) == '\0') {
      local_48 = 0;
      local_44 = 0;
      FUN_00b73300(0,0);
    }
    else {
      FUN_00b732b0();
    }
    cVar2 = FUN_00b92890();
    if (cVar2 == '\0') {
      FUN_007d5fe6();
    }
    local_48 = 0;
    local_44 = 0;
    FUN_00bb1450(0xffffffff);
  }
  local_c = local_c & 0xffffff00;
  FUN_00b72d90();
  local_c = 0xffffffff;
  if (local_54 != '\0') {
    FUN_00401477();
  }
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_007d65dd(undefined4 *param_1_00,undefined2 *param_1)

{
  undefined local_c [4];
  undefined2 local_8;
  
  FUN_00496db3(local_c,*param_1_00);
  *param_1 = local_8;
  return;
}



void __thiscall FUN_007d65fe(undefined4 *param_1_00,undefined2 *param_1)

{
  undefined local_c [2];
  undefined2 local_a;
  
  FUN_00496db3(local_c,*param_1_00);
  *param_1 = local_a;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d661f(undefined4 *param_1,int *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined local_2c [8];
  undefined local_24 [8];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  *param_1 = WE711C61D::WF8F64DBA::vftable;
  param_1[1] = param_2;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  local_8._0_1_ = 9;
  local_8._1_3_ = 0;
  uVar1 = (**(code **)(*param_2 + 0x44))(local_2c,0x93ea627d);
  local_8._0_1_ = 10;
  puVar2 = (undefined4 *)FUN_005fc72d(local_24,uVar1);
  local_8 = CONCAT31(local_8._1_3_,0xb);
  local_1c = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



undefined4 __thiscall FUN_007d6ad5(undefined4 param_1_00,byte param_1)

{
  FUN_007d6af1();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007d6af1(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_44 [2];
  undefined4 *local_3c;
  undefined4 local_38;
  undefined4 *local_34;
  undefined4 *local_30;
  undefined4 *local_2c;
  undefined4 *local_28;
  undefined4 *local_24;
  undefined4 *local_20;
  undefined4 *local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x34;
  *param_1 = WE711C61D::WF8F64DBA::vftable;
  local_18 = param_1 + 0x14;
  local_8 = 10;
  if (&local_38 != local_18) {
    *local_18 = 0;
  }
  iVar1 = param_1[0x15];
  param_1[0x15] = 0;
  local_3c = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_1c = param_1 + 0x10;
  if (&local_38 != local_1c) {
    *local_1c = 0;
  }
  iVar1 = param_1[0x11];
  param_1[0x11] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_20 = param_1 + 0xe;
  if (&local_38 != local_20) {
    *local_20 = 0;
  }
  iVar1 = param_1[0xf];
  param_1[0xf] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_24 = param_1 + 0xc;
  if (&local_38 != local_24) {
    *local_24 = 0;
  }
  iVar1 = param_1[0xd];
  param_1[0xd] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_28 = param_1 + 10;
  if (&local_38 != local_28) {
    *local_28 = 0;
  }
  iVar1 = param_1[0xb];
  param_1[0xb] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_2c = param_1 + 8;
  if (&local_38 != local_2c) {
    *local_2c = 0;
  }
  iVar1 = param_1[9];
  param_1[9] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_30 = param_1 + 6;
  if (&local_38 != local_30) {
    *local_30 = 0;
  }
  iVar1 = param_1[7];
  param_1[7] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_34 = param_1 + 4;
  if (local_44 != local_34) {
    *local_34 = 0;
  }
  iVar1 = param_1[5];
  param_1[5] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  if (local_44 != param_1 + 2) {
    param_1[2] = 0;
  }
  iVar1 = param_1[3];
  param_1[3] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  if (local_44 != param_1 + 0x12) {
    param_1[0x12] = 0;
  }
  iVar1 = param_1[0x13];
  param_1[0x13] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 9;
  if (local_18[1] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 8;
  if (param_1[0x13] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 7;
  if (local_1c[1] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 6;
  if (local_20[1] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 5;
  if (local_24[1] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 4;
  if (local_28[1] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 3;
  if (local_2c[1] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 2;
  if (local_30[1] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (local_34[1] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (param_1[3] != 0) {
    FUN_0040127a();
  }
  return;
}



void Catch_All_007d6cf4(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



bool FUN_007d6cfe(void)

{
  int in_EAX;
  bool bVar1;
  undefined4 uVar2;
  
  bVar1 = *(int *)(in_EAX + 8) != 0;
  if (bVar1) {
    bVar1 = *(int *)(in_EAX + 0x10) != 0;
    if (bVar1) {
      bVar1 = *(int *)(in_EAX + 0x28) != 0;
      if (bVar1) {
        bVar1 = *(int *)(in_EAX + 0x18) != 0;
        if (bVar1) {
          bVar1 = *(int *)(in_EAX + 0x20) != 0;
          if (bVar1) {
            bVar1 = *(int *)(in_EAX + 0x30) != 0;
            if (bVar1) {
              bVar1 = *(int *)(in_EAX + 0x38) != 0;
              if (bVar1) {
                bVar1 = *(int *)(in_EAX + 0x40) != 0;
                if (bVar1) {
                  bVar1 = *(int *)(in_EAX + 0x48) != 0;
                  if (bVar1) {
                    bVar1 = *(int *)(in_EAX + 0x50) != 0;
                    if (bVar1) {
                      return bVar1;
                    }
                    uVar2 = 0xbc3e462c;
                  }
                  else {
                    uVar2 = 0xadbc347a;
                  }
                }
                else {
                  uVar2 = 0x80336928;
                }
              }
              else {
                uVar2 = 0x74e76b1;
              }
            }
            else {
              uVar2 = 0x3058dfda;
            }
          }
          else {
            uVar2 = 0x49d98377;
          }
        }
        else {
          uVar2 = 0x55a4a830;
        }
      }
      else {
        uVar2 = 0x1c6645c0;
      }
    }
    else {
      uVar2 = 0x27aac237;
    }
  }
  else {
    uVar2 = 0x9d00818;
  }
  FUN_00b940e0(uVar2);
  return bVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool __thiscall FUN_007d6df5(int *param_1_00,int param_1)

{
  bool bVar1;
  undefined4 uVar2;
  undefined local_18 [4];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x7d6e01;
  bVar1 = *(int **)(param_1 + 8) != (int *)0x0;
  if (bVar1) {
    (**(code **)(**(int **)(param_1 + 8) + 8))(local_18);
    local_8 = 0;
    FUN_004fe47e();
    local_8 = 0xffffffff;
    if (local_14 != 0) {
      FUN_0040127a();
    }
    bVar1 = *param_1_00 != 0;
    if (bVar1) {
      return bVar1;
    }
    uVar2 = 0xbb747f96;
  }
  else {
    uVar2 = 0xe127ae94;
  }
  FUN_00b940e0(uVar2);
  return bVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_007d6e64(int param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7d6e70;
  piVar1 = *(int **)(param_1 + 0x10);
  if (piVar1 == (int *)0x0) {
    FUN_00b940e0(0x2d3ae159);
    return piVar1 != (int *)0x0;
  }
  puVar2 = (undefined4 *)(**(code **)(*piVar1 + 8))(local_20);
  local_8 = 0;
  local_18 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_007d6efb(int param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7d6f07;
  piVar1 = *(int **)(param_1 + 0x18);
  if (piVar1 == (int *)0x0) {
    FUN_00b940e0(0x5090594b);
    return piVar1 != (int *)0x0;
  }
  puVar2 = (undefined4 *)(**(code **)(*piVar1 + 8))(local_20);
  local_8 = 0;
  local_18 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_007d6f92(int param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7d6f9e;
  piVar1 = *(int **)(param_1 + 0x20);
  if (piVar1 == (int *)0x0) {
    FUN_00b940e0(0x2f60c72e);
    return piVar1 != (int *)0x0;
  }
  puVar2 = (undefined4 *)(**(code **)(*piVar1 + 8))(local_20);
  local_8 = 0;
  local_18 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool FUN_007d7029(int param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined local_20 [8];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7d7035;
  piVar1 = *(int **)(param_1 + 0x28);
  if (piVar1 == (int *)0x0) {
    FUN_00b940e0(0xf9f78677);
    return piVar1 != (int *)0x0;
  }
  puVar2 = (undefined4 *)(**(code **)(*piVar1 + 8))(local_20);
  local_8 = 0;
  local_18 = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



bool FUN_007d70c0(void)

{
  int in_EAX;
  bool bVar1;
  
  bVar1 = *(int *)(in_EAX + 0x38) != 0;
  if (bVar1) {
    FUN_004fe47e();
  }
  else {
    FUN_00b940e0(0xfb17c6ac);
  }
  return bVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d70ed(int param_1,int *param_2)

{
  undefined4 uVar1;
  int *piVar2;
  undefined local_34 [4];
  int local_30;
  undefined local_2c [4];
  int local_28;
  int local_24 [2];
  int local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_14 = 0;
  local_1c = 0;
  local_18 = 0;
  local_8 = 1;
  uVar1 = (**(code **)(**(int **)(param_1 + 4) + 0x38))(local_2c);
  local_8._0_1_ = 2;
  FUN_004c7589(local_24,uVar1);
  local_8._0_1_ = 4;
  if (local_28 != 0) {
    FUN_0040127a();
  }
  if (local_24[0] != 0) {
    FUN_004f5f9d(local_24[0],local_34);
    local_8._0_1_ = 5;
    FUN_005d11c9(&local_1c);
    local_8._0_1_ = 4;
    if (local_30 != 0) {
      FUN_0040127a();
    }
    if (local_1c != 0) {
      *param_2 = local_1c;
                    // WARNING: Subroutine does not return
      FUN_0043c023(&local_18);
    }
  }
  piVar2 = (int *)FUN_004f6076(local_34);
  *param_2 = *piVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(piVar2 + 1);
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __fastcall
FUN_007d71d8(undefined *param_1,
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            *param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined *puStack_8c;
  undefined *puStack_88;
  undefined **local_58;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_54;
  undefined local_50 [28];
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8._0_1_ = 0xe4;
  local_8._1_3_ = 0x7d71;
  local_58 = (undefined **)0x0;
  local_54 = param_2;
  if (*(int *)(param_1 + 0x40) != 0) {
    local_58 = &puStack_8c;
    puStack_8c = param_1;
    puStack_88 = param_1;
    FUN_007d70ed(param_1,&puStack_8c);
    FUN_004b7e1a(local_50);
    local_8 = 0;
    uVar2 = basic_string<>(&DAT_00dd8ca0);
    local_8._0_1_ = 1;
    FUN_00475dcb(local_50,uVar2);
    local_8._0_1_ = 0;
    FUN_00401829(1,0);
    (**(code **)(**(int **)(param_1 + 0x40) + 8))(local_34);
    puStack_88 = local_50;
    local_8._0_1_ = 2;
    puStack_8c = (undefined *)0x7d725d;
    FUN_0040e5f4();
    puStack_8c = (undefined *)0x7d7265;
    puStack_88 = local_34;
    cVar1 = FUN_0041506b();
    if (cVar1 == '\0') {
      puStack_88 = (undefined *)0x0;
      local_8 = CONCAT31(local_8._1_3_,3);
      puStack_8c = local_34;
      FUN_00828050();
      local_8._0_1_ = 2;
      local_8._1_3_ = 0;
    }
    puStack_88 = local_34;
    puStack_8c = (undefined *)0x7d729d;
    cVar1 = FUN_0041506b();
    if (cVar1 != '\0') {
      puStack_88 = local_34;
      puStack_8c = (undefined *)0x7d72ab;
      cVar1 = FUN_00441954();
      if (cVar1 != '\0') {
        puStack_88 = local_34;
        puStack_8c = (undefined *)0x7d72bb;
        basic_string<>();
        puStack_88 = (undefined *)0x0;
        puStack_8c = (undefined *)0x1;
        FUN_00401829();
        puStack_88 = (undefined *)0x0;
        puStack_8c = (undefined *)0x1;
        FUN_00401829();
        goto LAB_007d72f0;
      }
    }
    puStack_88 = (undefined *)0x0;
    puStack_8c = (undefined *)0x1;
    FUN_00401829();
    puStack_88 = (undefined *)0x0;
    puStack_8c = (undefined *)0x1;
    FUN_00401829();
  }
  puStack_88 = (undefined *)0x7d72f0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_2);
LAB_007d72f0:
  puStack_88 = (undefined *)0x7d72f7;
  FUN_00a4220a();
  return;
}



undefined * Catch_007d7282(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 2;
  return &LAB_007d728f;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __fastcall
FUN_007d72f8(undefined *param_1,
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            *param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined *puStack_8c;
  undefined *puStack_88;
  undefined **local_58;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_54;
  undefined local_50 [28];
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8._0_1_ = 4;
  local_8._1_3_ = 0x7d73;
  local_58 = (undefined **)0x0;
  local_54 = param_2;
  if (*(int *)(param_1 + 0x40) != 0) {
    local_58 = &puStack_8c;
    puStack_8c = param_1;
    puStack_88 = param_1;
    FUN_007d70ed(param_1,&puStack_8c);
    FUN_004b7e1a(local_50);
    local_8 = 0;
    uVar2 = basic_string<>(&DAT_00dd8ca4);
    local_8._0_1_ = 1;
    FUN_00475dcb(local_50,uVar2);
    local_8._0_1_ = 0;
    FUN_00401829(1,0);
    (**(code **)(**(int **)(param_1 + 0x40) + 0xc))(local_34);
    puStack_88 = local_50;
    local_8._0_1_ = 2;
    puStack_8c = (undefined *)0x7d737d;
    FUN_0040e5f4();
    puStack_8c = (undefined *)0x7d7385;
    puStack_88 = local_34;
    cVar1 = FUN_0041506b();
    if (cVar1 == '\0') {
      puStack_88 = (undefined *)0x0;
      local_8 = CONCAT31(local_8._1_3_,3);
      puStack_8c = local_34;
      FUN_00828050();
      local_8._0_1_ = 2;
      local_8._1_3_ = 0;
    }
    puStack_88 = local_34;
    puStack_8c = (undefined *)0x7d73bd;
    cVar1 = FUN_0041506b();
    if (cVar1 != '\0') {
      puStack_88 = local_34;
      puStack_8c = (undefined *)0x7d73cb;
      cVar1 = FUN_00441954();
      if (cVar1 != '\0') {
        puStack_88 = local_34;
        puStack_8c = (undefined *)0x7d73db;
        basic_string<>();
        puStack_88 = (undefined *)0x0;
        puStack_8c = (undefined *)0x1;
        FUN_00401829();
        puStack_88 = (undefined *)0x0;
        puStack_8c = (undefined *)0x1;
        FUN_00401829();
        goto LAB_007d7410;
      }
    }
    puStack_88 = (undefined *)0x0;
    puStack_8c = (undefined *)0x1;
    FUN_00401829();
    puStack_88 = (undefined *)0x0;
    puStack_8c = (undefined *)0x1;
    FUN_00401829();
  }
  puStack_88 = (undefined *)0x7d7410;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_2);
LAB_007d7410:
  puStack_88 = (undefined *)0x7d7417;
  FUN_00a4220a();
  return;
}



undefined * Catch_007d73a2(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 2;
  return &LAB_007d73af;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __fastcall
FUN_007d7418(undefined *param_1,
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            *param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined *puStack_8c;
  undefined *puStack_88;
  undefined **local_58;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_54;
  undefined local_50 [28];
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8._0_1_ = 0x24;
  local_8._1_3_ = 0x7d74;
  local_58 = (undefined **)0x0;
  local_54 = param_2;
  if (*(int *)(param_1 + 0x40) != 0) {
    local_58 = &puStack_8c;
    puStack_8c = param_1;
    puStack_88 = param_1;
    FUN_007d70ed(param_1,&puStack_8c);
    FUN_004b7e1a(local_50);
    local_8 = 0;
    uVar2 = basic_string<>(&DAT_00dd8ca8);
    local_8._0_1_ = 1;
    FUN_00475dcb(local_50,uVar2);
    local_8._0_1_ = 0;
    FUN_00401829(1,0);
    (**(code **)(**(int **)(param_1 + 0x40) + 0x10))(local_34);
    puStack_88 = local_50;
    local_8._0_1_ = 2;
    puStack_8c = (undefined *)0x7d749d;
    FUN_0040e5f4();
    puStack_8c = (undefined *)0x7d74a5;
    puStack_88 = local_34;
    cVar1 = FUN_0041506b();
    if (cVar1 == '\0') {
      puStack_88 = (undefined *)0x0;
      local_8 = CONCAT31(local_8._1_3_,3);
      puStack_8c = local_34;
      FUN_00828050();
      local_8._0_1_ = 2;
      local_8._1_3_ = 0;
    }
    puStack_88 = local_34;
    puStack_8c = (undefined *)0x7d74dd;
    cVar1 = FUN_0041506b();
    if (cVar1 != '\0') {
      puStack_88 = local_34;
      puStack_8c = (undefined *)0x7d74eb;
      cVar1 = FUN_00441954();
      if (cVar1 != '\0') {
        puStack_88 = local_34;
        puStack_8c = (undefined *)0x7d74fb;
        basic_string<>();
        puStack_88 = (undefined *)0x0;
        puStack_8c = (undefined *)0x1;
        FUN_00401829();
        puStack_88 = (undefined *)0x0;
        puStack_8c = (undefined *)0x1;
        FUN_00401829();
        goto LAB_007d7530;
      }
    }
    puStack_88 = (undefined *)0x0;
    puStack_8c = (undefined *)0x1;
    FUN_00401829();
    puStack_88 = (undefined *)0x0;
    puStack_8c = (undefined *)0x1;
    FUN_00401829();
  }
  puStack_88 = (undefined *)0x7d7530;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_2);
LAB_007d7530:
  puStack_88 = (undefined *)0x7d7537;
  FUN_00a4220a();
  return;
}



undefined * Catch_007d74c2(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 2;
  return &LAB_007d74cf;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __fastcall
FUN_007d7538(undefined *param_1,
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            *param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined *puStack_8c;
  undefined *puStack_88;
  undefined **local_58;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_54;
  undefined local_50 [28];
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8._0_1_ = 0x44;
  local_8._1_3_ = 0x7d75;
  local_58 = (undefined **)0x0;
  local_54 = param_2;
  if (*(int *)(param_1 + 0x40) != 0) {
    local_58 = &puStack_8c;
    puStack_8c = param_1;
    puStack_88 = param_1;
    FUN_007d70ed(param_1,&puStack_8c);
    FUN_004b7e1a(local_50);
    local_8 = 0;
    uVar2 = basic_string<>(&DAT_00dd8cac);
    local_8._0_1_ = 1;
    FUN_00475dcb(local_50,uVar2);
    local_8._0_1_ = 0;
    FUN_00401829(1,0);
    (**(code **)(**(int **)(param_1 + 0x40) + 0x14))(local_34);
    puStack_88 = local_50;
    local_8._0_1_ = 2;
    puStack_8c = (undefined *)0x7d75bd;
    FUN_0040e5f4();
    puStack_8c = (undefined *)0x7d75c5;
    puStack_88 = local_34;
    cVar1 = FUN_0041506b();
    if (cVar1 == '\0') {
      puStack_88 = (undefined *)0x0;
      local_8 = CONCAT31(local_8._1_3_,3);
      puStack_8c = local_34;
      FUN_00828050();
      local_8._0_1_ = 2;
      local_8._1_3_ = 0;
    }
    puStack_88 = local_34;
    puStack_8c = (undefined *)0x7d75fd;
    cVar1 = FUN_0041506b();
    if (cVar1 != '\0') {
      puStack_88 = local_34;
      puStack_8c = (undefined *)0x7d760b;
      cVar1 = FUN_00441954();
      if (cVar1 != '\0') {
        puStack_88 = local_34;
        puStack_8c = (undefined *)0x7d761b;
        basic_string<>();
        puStack_88 = (undefined *)0x0;
        puStack_8c = (undefined *)0x1;
        FUN_00401829();
        puStack_88 = (undefined *)0x0;
        puStack_8c = (undefined *)0x1;
        FUN_00401829();
        goto LAB_007d7650;
      }
    }
    puStack_88 = (undefined *)0x0;
    puStack_8c = (undefined *)0x1;
    FUN_00401829();
    puStack_88 = (undefined *)0x0;
    puStack_8c = (undefined *)0x1;
    FUN_00401829();
  }
  puStack_88 = (undefined *)0x7d7650;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_2);
LAB_007d7650:
  puStack_88 = (undefined *)0x7d7657;
  FUN_00a4220a();
  return;
}



undefined * Catch_007d75e2(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 2;
  return &LAB_007d75ef;
}



void FUN_007d7658(void)

{
  int in_EAX;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_ESI;
  
  if (*(int **)(in_EAX + 0x40) == (int *)0x0) {
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_ESI)
    ;
  }
  else {
    (**(code **)(**(int **)(in_EAX + 0x40) + 0x18))();
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __fastcall
FUN_007d7677(undefined *param_1,
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            *param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined *puStack_8c;
  undefined *puStack_88;
  undefined **local_58;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_54;
  undefined local_50 [28];
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8._0_1_ = 0x83;
  local_8._1_3_ = 0x7d76;
  local_58 = (undefined **)0x0;
  local_54 = param_2;
  if (*(int *)(param_1 + 0x40) != 0) {
    local_58 = &puStack_8c;
    puStack_8c = param_1;
    puStack_88 = param_1;
    FUN_007d70ed(param_1,&puStack_8c);
    FUN_004b7e1a(local_50);
    local_8 = 0;
    uVar2 = basic_string<>(&DAT_00dd8cb0);
    local_8._0_1_ = 1;
    FUN_00475dcb(local_50,uVar2);
    local_8._0_1_ = 0;
    FUN_00401829(1,0);
    (**(code **)(**(int **)(param_1 + 0x40) + 0x1c))(local_34);
    puStack_88 = local_50;
    local_8._0_1_ = 2;
    puStack_8c = (undefined *)0x7d76fc;
    FUN_0040e5f4();
    puStack_8c = (undefined *)0x7d7704;
    puStack_88 = local_34;
    cVar1 = FUN_0041506b();
    if (cVar1 == '\0') {
      puStack_88 = (undefined *)0x0;
      local_8 = CONCAT31(local_8._1_3_,3);
      puStack_8c = local_34;
      FUN_00828050();
      local_8._0_1_ = 2;
      local_8._1_3_ = 0;
    }
    puStack_88 = local_34;
    puStack_8c = (undefined *)0x7d773c;
    cVar1 = FUN_0041506b();
    if (cVar1 != '\0') {
      puStack_88 = local_34;
      puStack_8c = (undefined *)0x7d774a;
      cVar1 = FUN_00441954();
      if (cVar1 != '\0') {
        puStack_88 = local_34;
        puStack_8c = (undefined *)0x7d775a;
        basic_string<>();
        puStack_88 = (undefined *)0x0;
        puStack_8c = (undefined *)0x1;
        FUN_00401829();
        puStack_88 = (undefined *)0x0;
        puStack_8c = (undefined *)0x1;
        FUN_00401829();
        goto LAB_007d778f;
      }
    }
    puStack_88 = (undefined *)0x0;
    puStack_8c = (undefined *)0x1;
    FUN_00401829();
    puStack_88 = (undefined *)0x0;
    puStack_8c = (undefined *)0x1;
    FUN_00401829();
  }
  puStack_88 = (undefined *)0x7d778f;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_2);
LAB_007d778f:
  puStack_88 = (undefined *)0x7d7796;
  FUN_00a4220a();
  return;
}



undefined * Catch_007d7721(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 2;
  return &LAB_007d772e;
}



void FUN_007d7797(void)

{
  int in_EAX;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_ESI;
  
  if (*(int **)(in_EAX + 0x40) == (int *)0x0) {
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_ESI)
    ;
  }
  else {
    (**(code **)(**(int **)(in_EAX + 0x40) + 0x1c))();
  }
  return;
}



void FUN_007d77b6(void)

{
  int in_EAX;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_ESI;
  
  if (*(int **)(in_EAX + 0x50) == (int *)0x0) {
    std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
    basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_ESI)
    ;
  }
  else {
    (**(code **)(**(int **)(in_EAX + 0x50) + 8))();
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __fastcall
FUN_007d77dd(undefined *param_1,
            basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            *param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined *puStack_8c;
  undefined *puStack_88;
  undefined **local_58;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_54;
  undefined local_50 [28];
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8._0_1_ = 0xe9;
  local_8._1_3_ = 0x7d77;
  local_58 = (undefined **)0x0;
  local_54 = param_2;
  if (*(int *)(param_1 + 0x40) != 0) {
    local_58 = &puStack_8c;
    puStack_8c = param_1;
    puStack_88 = param_1;
    FUN_007d70ed(param_1,&puStack_8c);
    FUN_004b7e1a(local_50);
    local_8 = 0;
    uVar2 = basic_string<>(&DAT_00dd8cb4);
    local_8._0_1_ = 1;
    FUN_00475dcb(local_50,uVar2);
    local_8._0_1_ = 0;
    FUN_00401829(1,0);
    (**(code **)(**(int **)(param_1 + 0x40) + 0x20))(local_34);
    puStack_88 = local_50;
    local_8._0_1_ = 2;
    puStack_8c = (undefined *)0x7d7862;
    FUN_0040e5f4();
    puStack_8c = (undefined *)0x7d786a;
    puStack_88 = local_34;
    cVar1 = FUN_0041506b();
    if (cVar1 == '\0') {
      puStack_88 = (undefined *)0x0;
      local_8 = CONCAT31(local_8._1_3_,3);
      puStack_8c = local_34;
      FUN_00828050();
      local_8._0_1_ = 2;
      local_8._1_3_ = 0;
    }
    puStack_88 = local_34;
    puStack_8c = (undefined *)0x7d78a2;
    cVar1 = FUN_0041506b();
    if (cVar1 != '\0') {
      puStack_88 = local_34;
      puStack_8c = (undefined *)0x7d78b0;
      cVar1 = FUN_00441954();
      if (cVar1 != '\0') {
        puStack_88 = local_34;
        puStack_8c = (undefined *)0x7d78c0;
        basic_string<>();
        puStack_88 = (undefined *)0x0;
        puStack_8c = (undefined *)0x1;
        FUN_00401829();
        puStack_88 = (undefined *)0x0;
        puStack_8c = (undefined *)0x1;
        FUN_00401829();
        goto LAB_007d78f5;
      }
    }
    puStack_88 = (undefined *)0x0;
    puStack_8c = (undefined *)0x1;
    FUN_00401829();
    puStack_88 = (undefined *)0x0;
    puStack_8c = (undefined *)0x1;
    FUN_00401829();
  }
  puStack_88 = (undefined *)0x7d78f5;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_2);
LAB_007d78f5:
  puStack_88 = (undefined *)0x7d78fc;
  FUN_00a4220a();
  return;
}



undefined * Catch_007d7887(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 2;
  return &LAB_007d7894;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_007d8233(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c1406b;
  if (param_1[2] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = W76AFA8BF::WCE6D7FD7::vftable;
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007d842c(int *param_1_00,undefined4 *param_1)

{
  undefined **local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = *param_1;
  local_18 = W76AFA8BF::W94A48914::vftable;
  local_8 = 0;
  (**(code **)(*param_1_00 + 4))(&local_18);
  return;
}



void FUN_007d845c(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0043bfa5(local_20,param_2);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_007d8534(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c269b5;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_0043bfa5(local_20,param_2);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_007d860c(undefined4 param_1,int param_2)

{
  undefined4 local_64 [2];
  int local_5c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c24c08;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_64[0] = 0;
  local_c = 0;
  if (param_2 == 1) {
    FUN_00465be3();
    local_c = CONCAT31(local_c._1_3_,3);
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  if (param_2 == 2) {
    FUN_00465be3();
    local_c = CONCAT31(local_c._1_3_,5);
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  if (param_2 == 3) {
    FUN_00465be3();
    local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
    FUN_0043c023();
  }
  if (param_2 != 4) {
    FUN_00465be3();
    local_c._0_1_ = 9;
    FUN_005d11c9();
    local_c = (uint)local_c._1_3_ << 8;
    if (local_5c != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_0043c023(local_64);
  }
  FUN_00465be3();
  local_c = CONCAT31(local_c._1_3_,7);
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d8948(undefined4 param_1,int param_2)

{
  int local_30;
  int local_28;
  int local_20;
  undefined4 local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_18[0] = 0;
  local_8 = 0;
  if (param_2 == 1) {
    FUN_00465be3();
    local_8._0_1_ = 1;
    FUN_005d11c9();
    local_8 = (uint)local_8._1_3_ << 8;
    local_20 = local_30;
  }
  else if (param_2 == 2) {
    FUN_00465be3();
    local_8._0_1_ = 2;
    FUN_005d11c9();
    local_8 = (uint)local_8._1_3_ << 8;
    local_20 = local_28;
  }
  else {
    FUN_00465be3();
    local_8._0_1_ = 3;
    FUN_005d11c9();
    local_8 = (uint)local_8._1_3_ << 8;
  }
  if (local_20 != 0) {
    FUN_0040127a();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d8a81(undefined4 param_1,int param_2,int param_3)

{
  int local_24;
  int local_1c;
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_14[0] = 0;
  local_8 = 0;
  if (param_2 == 1) {
    FUN_00465be3();
    local_8._0_1_ = 1;
LAB_007d8ac3:
    FUN_005d11c9();
  }
  else {
    if (param_2 != 2) goto LAB_007d8b43;
    if (param_3 != 0) {
      if (param_3 != 1) goto LAB_007d8b43;
      FUN_00465be3();
      local_8._0_1_ = 3;
      goto LAB_007d8ac3;
    }
    FUN_00465be3();
    local_8._0_1_ = 2;
    FUN_005d11c9();
    local_1c = local_24;
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_1c != 0) {
    FUN_0040127a();
  }
LAB_007d8b43:
  FUN_00465be3();
  local_8._0_1_ = 4;
  FUN_005d11c9();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_24 != 0) {
    FUN_0040127a();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_14);
}



void FUN_007d8c32(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c28d2d;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_007dc223();
  local_c = 0;
  iVar1 = FUN_0046752c();
  local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007d8d96(char *param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *local_68;
  undefined **local_64;
  int local_50 [3];
  uint local_44;
  uint local_40;
  int local_28;
  uint local_24;
  undefined *local_20;
  undefined4 local_1c;
  undefined **local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7d8da2;
  local_64 = (undefined **)local_50;
  local_68 = (undefined *)0x7d8dad;
  FUN_004382a5();
  local_24 = local_44;
  local_8 = 0;
  if (*param_1_00 != '\0') {
    local_18 = &local_68;
    local_68 = (undefined *)0xa0c;
    local_64 = (undefined **)0x9f;
    puVar1 = (undefined4 *)FUN_00465be3(&local_20);
    local_28 = *puVar1;
    local_64 = (undefined **)(puVar1 + 1);
                    // WARNING: Subroutine does not return
    local_68 = &UNK_007d8dea;
    FUN_0043c023();
  }
  if (param_1_00[1] != '\0') {
    local_18 = &local_68;
    local_68 = (undefined *)0xa0c;
    local_64 = (undefined **)0xa0;
    puVar1 = (undefined4 *)FUN_00465be3(&local_20);
    local_28 = *puVar1;
    local_64 = (undefined **)(puVar1 + 1);
                    // WARNING: Subroutine does not return
    local_68 = &UNK_007d8e4b;
    FUN_0043c023();
  }
  if (param_1_00[2] != '\0') {
    local_18 = &local_68;
    local_68 = (undefined *)0xa0c;
    local_64 = (undefined **)0xa1;
    puVar1 = (undefined4 *)FUN_00465be3(&local_20);
    local_28 = *puVar1;
    local_64 = (undefined **)(puVar1 + 1);
                    // WARNING: Subroutine does not return
    local_68 = &UNK_007d8eac;
    FUN_0043c023();
  }
  if (param_1_00[3] != '\0') {
    local_18 = &local_68;
    local_68 = (undefined *)0xa0c;
    local_64 = (undefined **)0xa2;
    puVar1 = (undefined4 *)FUN_00465be3(&local_20);
    local_28 = *puVar1;
    local_64 = (undefined **)(puVar1 + 1);
                    // WARNING: Subroutine does not return
    local_68 = &UNK_007d8f0f;
    FUN_0043c023();
  }
  if (param_1_00[4] != '\0') {
    local_18 = &local_68;
    local_68 = (undefined *)0xa0c;
    local_64 = (undefined **)0xa3;
    puVar1 = (undefined4 *)FUN_00465be3(&local_20);
    local_28 = *puVar1;
    local_64 = (undefined **)(puVar1 + 1);
                    // WARNING: Subroutine does not return
    local_68 = &UNK_007d8f70;
    FUN_0043c023();
  }
  if (param_1_00[5] != '\0') {
    local_18 = &local_68;
    local_68 = (undefined *)0xa0c;
    local_64 = (undefined **)0xa4;
    puVar1 = (undefined4 *)FUN_00465be3(&local_20);
    local_28 = *puVar1;
    local_64 = (undefined **)(puVar1 + 1);
                    // WARNING: Subroutine does not return
    local_68 = &UNK_007d8fd1;
    FUN_0043c023();
  }
  if ((local_40 - local_44 & 0xfffffff8) == 0) {
    param_1 = (undefined4 *)*param_1;
    local_64 = (undefined **)&param_1;
    local_68 = (undefined *)0x7d9020;
    FUN_007b536f();
    local_8 = 0xffffffff;
    local_64 = (undefined **)local_50;
    local_68 = (undefined *)0x7d91fd;
    FUN_0044237a();
    return;
  }
  local_20 = (undefined *)0x0;
  local_1c = 0;
  local_8 = 0xd;
  if (local_40 < local_44) {
    local_64 = (undefined **)0x7d9039;
    FUN_00a3fb10();
  }
  local_28 = local_50[0];
  local_64 = (undefined **)0x7d904a;
  FUN_007c96e9();
  local_64 = &local_20;
  local_68 = (undefined *)0x7d9053;
  FUN_005d11c9();
  local_64 = (undefined **)0x7d905b;
  FUN_0062d58f();
  if (local_40 < local_44) {
    local_64 = (undefined **)0x7d906a;
    FUN_00a3fb10();
  }
  if ((local_28 == 0) || (local_28 != local_50[0])) {
    local_64 = (undefined **)0x7d907b;
    FUN_00a3fb10();
  }
  if (local_24 != local_40) {
    local_64 = (undefined **)0x7d9088;
    puVar1 = (undefined4 *)FUN_007c96e9();
    local_68 = (undefined *)*puVar1;
    local_18 = &local_68;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
  local_18 = &local_68;
  local_68 = local_20;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_007d9205(void)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  char cVar4;
  int iVar5;
  int *local_58 [3];
  uint local_4c;
  uint local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_34 [24];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8 = 0x7d9211;
  local_58[0] = (int *)FUN_00418daa();
  if (local_58[0] == (int *)0x0) {
    local_58[0] = (int *)0x0;
  }
  else {
    *local_58[0] = (int)local_58;
  }
  local_4c = 0;
  local_48 = 0;
  local_44 = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  local_40 = 0;
  local_38 = 0x29;
  local_3c = 0x5022;
  FUN_007da651();
  local_40 = 1;
  local_38 = 0x2c;
  local_3c = 0x5022;
  FUN_007da651();
  local_40 = 2;
  local_38 = 0x2f;
  local_3c = 0x5022;
  FUN_007da651();
  local_40 = 3;
  local_38 = 0x32;
  local_3c = 0x5022;
  FUN_007da651();
  local_40 = 4;
  local_38 = 0x35;
  local_3c = 0x5022;
  FUN_007da651();
  local_40 = 5;
  local_38 = 0x38;
  local_3c = 0x5022;
  FUN_007da651();
  local_40 = 6;
  local_38 = 0x28;
  local_3c = 0x5022;
  FUN_007da651();
  local_40 = 7;
  local_38 = 0x2b;
  local_3c = 0x5022;
  FUN_007da651();
  local_40 = 8;
  local_38 = 0x2e;
  local_3c = 0x5022;
  FUN_007da651();
  local_40 = 9;
  local_38 = 0x31;
  local_3c = 0x5022;
  FUN_007da651();
  local_40 = 10;
  local_38 = 0x34;
  local_3c = 0x5022;
  FUN_007da651();
  local_40 = 0xb;
  local_38 = 0x37;
  local_3c = 0x5022;
  FUN_007da651();
  uVar2 = local_4c;
  if (local_48 < local_4c) {
    FUN_00a3fb10();
  }
  uVar3 = local_48;
  piVar1 = local_58[0];
  if (local_48 < local_4c) {
    FUN_00a3fb10();
  }
  if ((piVar1 == (int *)0x0) || (piVar1 != local_58[0])) {
    FUN_00a3fb10();
  }
  if (uVar2 != uVar3) {
    local_1c = 0xf;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
              (local_34,0);
    local_8._0_1_ = 2;
    FUN_007c96e9();
    cVar4 = FUN_00b9ef38();
    if (cVar4 != '\0') {
      iVar5 = FUN_00467341();
      local_8 = CONCAT31(local_8._1_3_,3);
                    // WARNING: Subroutine does not return
      FUN_0043c023(iVar5 + 4);
    }
    FUN_004017b2();
  }
  if (local_4c != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_4c = 0;
  local_48 = 0;
  local_44 = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



void FUN_007d94e8(void)

{
  int iVar1;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c27401;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00467341();
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d95f7(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7d9603;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0x5022;
  local_40 = 0x3f;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d9664(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7d9670;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0x5022;
  local_40 = 0x40;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d96d1(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7d96dd;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0x5022;
  local_40 = 0x88;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d973e(void)

{
  undefined4 *puVar1;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7d974a;
  uStack_3c = 0;
  uStack_40 = 0;
  uStack_44 = 0;
  local_18 = &local_4c;
  local_4c = 0xa0d;
  local_48 = 0x3a;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_8 = 0;
  local_4c = *puVar1;
  local_18 = &local_4c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d97ec(void)

{
  undefined4 *puVar1;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7d97f8;
  uStack_3c = 0;
  uStack_40 = 0;
  uStack_44 = 0;
  local_18 = &local_4c;
  local_4c = 0xa0d;
  local_48 = 0x39;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_18 = &local_4c;
  local_8 = 0;
  local_4c = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d989f(void)

{
  undefined4 *puVar1;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7d98ab;
  uStack_3c = 0;
  uStack_40 = 0;
  uStack_44 = 0;
  local_18 = &local_4c;
  local_4c = 0xa0d;
  local_48 = 0x3a;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_18 = &local_4c;
  local_8 = 0;
  local_4c = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d9952(void)

{
  undefined4 *puVar1;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7d995e;
  uStack_3c = 0;
  uStack_40 = 0;
  uStack_44 = 0;
  local_18 = &local_4c;
  local_4c = 0xa0d;
  local_48 = 0x39;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_8 = 0;
  local_4c = *puVar1;
  local_18 = &local_4c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d9a00(void)

{
  undefined4 *puVar1;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7d9a0c;
  uStack_3c = 0;
  uStack_40 = 0;
  uStack_44 = 0;
  local_18 = &local_4c;
  local_4c = 0xa0d;
  local_48 = 0x3b;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_18 = &local_4c;
  local_8 = 0;
  local_4c = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d9ab3(void)

{
  undefined4 *puVar1;
  undefined4 local_34;
  undefined4 local_30;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x7d9abf;
  local_14 = &local_34;
  local_34 = 0x5022;
  local_30 = 0x25;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_8 = 0;
  local_34 = *puVar1;
  local_14 = &local_34;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d9b38(void)

{
  undefined4 *puVar1;
  undefined4 local_34;
  undefined4 local_30;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x7d9b44;
  local_14 = &local_34;
  local_34 = 0x5022;
  local_30 = 0x25;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_8 = 0;
  local_34 = *puVar1;
  local_14 = &local_34;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d9bbd(void)

{
  undefined4 *puVar1;
  undefined4 local_34;
  undefined4 local_30;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x7d9bc9;
  local_14 = &local_34;
  local_34 = 0x5022;
  local_30 = 0x25;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_8 = 0;
  local_34 = *puVar1;
  local_14 = &local_34;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d9c42(void)

{
  undefined4 *puVar1;
  undefined4 local_34;
  undefined4 local_30;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x7d9c4e;
  local_14 = &local_34;
  local_34 = 0x5022;
  local_30 = 0x25;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_8 = 0;
  local_34 = *puVar1;
  local_14 = &local_34;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d9cc7(void)

{
  undefined4 *puVar1;
  undefined4 local_34;
  undefined4 local_30;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x7d9cd3;
  local_14 = &local_34;
  local_34 = 0x5022;
  local_30 = 0x25;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_8 = 0;
  local_34 = *puVar1;
  local_14 = &local_34;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d9d4c(void)

{
  undefined4 *puVar1;
  undefined4 local_34;
  undefined4 local_30;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x7d9d58;
  local_14 = &local_34;
  local_34 = 0x5022;
  local_30 = 0x25;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_8 = 0;
  local_34 = *puVar1;
  local_14 = &local_34;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d9dd1(void)

{
  undefined4 *puVar1;
  undefined4 local_34;
  undefined4 local_30;
  undefined local_1c [8];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x7d9ddd;
  local_14 = &local_34;
  local_34 = 0x5022;
  local_30 = 0x25;
  puVar1 = (undefined4 *)FUN_00465be3(local_1c);
  local_8 = 0;
  local_34 = *puVar1;
  local_14 = &local_34;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d9e56(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7d9e62;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0x5022;
  local_40 = 0xa5;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d9ec3(void)

{
  undefined4 *puVar1;
  undefined4 local_40;
  undefined4 local_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7d9ecf;
  local_18 = &local_40;
  local_40 = 0x5022;
  local_3c = 0xaf;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_8 = 0;
  local_40 = *puVar1;
  local_18 = &local_40;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007d9f63(void)

{
  undefined4 *puVar1;
  undefined4 local_40;
  undefined4 local_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7d9f6f;
  local_18 = &local_40;
  local_40 = 0x5022;
  local_3c = 0xb8;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_8 = 0;
  local_40 = *puVar1;
  local_18 = &local_40;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007da003(void)

{
  undefined4 *puVar1;
  undefined4 local_4c;
  undefined4 local_48;
  undefined local_2c [16];
  undefined4 *local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7da00f;
  local_1c = &local_4c;
  local_4c = 0x5022;
  local_48 = 200;
  puVar1 = (undefined4 *)FUN_00465be3(local_2c);
  local_8 = 0;
  local_4c = *puVar1;
  local_1c = &local_4c;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007da0f7(undefined4 param_1,char param_2)

{
  undefined local_24 [4];
  int local_20;
  undefined4 local_1c;
  undefined4 local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18[0] = 0;
  local_8 = 0;
  if (param_2 == '\0') {
    FUN_00465be3(local_24);
    local_8._0_1_ = 2;
  }
  else {
    FUN_00465be3(local_24);
    local_8._0_1_ = 1;
  }
  FUN_005d11c9();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    FUN_0040127a();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007da1d8(void)

{
  undefined4 *puVar1;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7da1e4;
  uStack_34 = 0;
  uStack_38 = 0;
  uStack_3c = 0;
  local_18 = &local_44;
  local_44 = 0x5022;
  local_40 = 0xf2;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_44 = *puVar1;
  local_18 = &local_44;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007da351(undefined4 param_1,char param_2)

{
  undefined local_24 [4];
  int local_20;
  undefined4 local_1c;
  undefined4 local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18[0] = 0;
  local_8 = 0;
  if (param_2 == '\0') {
    FUN_00465be3(local_24);
    local_8._0_1_ = 2;
  }
  else {
    FUN_00465be3(local_24);
    local_8._0_1_ = 1;
  }
  FUN_005d11c9();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    FUN_0040127a();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007da432(undefined4 param_1,char param_2)

{
  undefined local_24 [4];
  int local_20;
  undefined4 local_1c;
  undefined4 local_18 [4];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18[0] = 0;
  local_8 = 0;
  if (param_2 == '\0') {
    FUN_00465be3(local_24);
    local_8._0_1_ = 2;
  }
  else {
    FUN_00465be3(local_24);
    local_8._0_1_ = 1;
  }
  FUN_005d11c9();
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_20 != 0) {
    FUN_0040127a();
  }
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007da513(void)

{
  int iVar1;
  
  iVar1 = FUN_00467341();
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007da5b2(void)

{
  int iVar1;
  
  iVar1 = FUN_00467341();
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_007da651(undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 *unaff_ESI;
  undefined local_10 [4];
  uint local_c;
  
  uVar1 = unaff_ESI[3];
  if (uVar1 == 0) {
    local_c = 0;
  }
  else {
    local_c = (int)(unaff_ESI[5] - uVar1) / 0xc;
  }
  uVar2 = unaff_ESI[4];
  if ((uint)((int)(uVar2 - uVar1) / 0xc) < local_c) {
    uVar3 = FUN_007da765(uVar2,1);
    unaff_ESI[4] = uVar3;
  }
  else {
    if (uVar2 < uVar1) {
      FUN_00a3fb10();
    }
    FUN_007da6b6(local_10,param_1,*unaff_ESI,uVar2);
  }
  return;
}



void FUN_007da6b6(int **param_1,undefined4 param_2,int *param_3,int param_4)

{
  int *piVar1;
  int **in_EAX;
  int iVar2;
  int iVar3;
  int *piVar4;
  
  piVar4 = in_EAX[3];
  if (((int)in_EAX[4] - (int)piVar4) / 0xc == 0) {
    iVar3 = 0;
  }
  else {
    if (in_EAX[4] < piVar4) {
      FUN_00a3fb10();
    }
    if ((param_3 == (int *)0x0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    iVar3 = (param_4 - (int)piVar4) / 0xc;
  }
  FUN_007da792(param_3,param_4);
  piVar4 = in_EAX[3];
  if (in_EAX[4] < piVar4) {
    FUN_00a3fb10();
  }
  piVar1 = *in_EAX;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1;
  }
  piVar4 = piVar4 + iVar3 * 3;
  if (piVar4 <= *(int **)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(int **)(iVar3 + 0xc) <= piVar4) goto LAB_007da753;
  }
  FUN_00a3fb10();
LAB_007da753:
  param_1[1] = piVar4;
  *param_1 = piVar1;
  return;
}



int FUN_007da765(int param_1,int param_2)

{
  FUN_007da9d4(param_2,param_2,0);
  return param_2 * 0xc + param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall
FUN_007da792(undefined4 *param_1_00,int param_2_00,undefined4 param_1,undefined4 *param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  int iVar9;
  int extraout_ECX;
  uint local_18;
  
  iVar9 = *(int *)(param_2_00 + 0xc);
  if (iVar9 == 0) {
    local_18 = 0;
  }
  else {
    local_18 = (*(int *)(param_2_00 + 0x14) - iVar9) / 0xc;
  }
  iVar7 = *(int *)(param_2_00 + 0x10);
  iVar6 = (iVar7 - iVar9) / 0xc;
  iVar9 = 0x15555555;
  if (iVar6 == 0x15555555) {
    iVar6 = FUN_004423c1();
    iVar9 = extraout_ECX;
  }
  uVar1 = iVar6 + 1;
  if (local_18 < uVar1) {
    if (iVar9 - (local_18 >> 1) < local_18) {
      local_18 = 0;
    }
    else {
      local_18 = local_18 + (local_18 >> 1);
    }
    if (local_18 < uVar1) {
      local_18 = uVar1;
    }
    iVar7 = FUN_0044577a();
    iVar9 = ((int)param_2 - *(int *)(param_2_00 + 0xc)) / 0xc;
    FUN_007da765(iVar9 * 0xc + iVar7,1);
    FUN_007da969(param_2,iVar7);
    FUN_007da969(*(undefined4 *)(param_2_00 + 0x10),(iVar9 + 1) * 0xc + iVar7);
    iVar9 = *(int *)(param_2_00 + 0xc);
    if (iVar9 != 0) {
      for (; iVar9 != *(int *)(param_2_00 + 0x10); iVar9 = iVar9 + 0xc) {
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_2_00 + 0xc));
    }
    *(uint *)(param_2_00 + 0x14) = local_18 * 0xc + iVar7;
    *(int *)(param_2_00 + 0x10) = ((*(int *)(param_2_00 + 0x10) - iVar9) / 0xc + 1) * 0xc + iVar7;
    *(int *)(param_2_00 + 0xc) = iVar7;
  }
  else {
    uVar3 = *param_1_00;
    uVar4 = param_1_00[2];
    uVar5 = param_1_00[1];
    if ((iVar7 - (int)param_2) / 0xc == 0) {
      FUN_007da969(iVar7,param_2 + 3);
      FUN_007da765(*(int *)(param_2_00 + 0x10),
                   1 - (*(int *)(param_2_00 + 0x10) - (int)param_2) / 0xc);
      *(int *)(param_2_00 + 0x10) = *(int *)(param_2_00 + 0x10) + 0xc;
      iVar9 = *(int *)(param_2_00 + 0x10);
      for (; param_2 != (undefined4 *)(iVar9 + -0xc); param_2 = param_2 + 3) {
        *param_2 = uVar3;
        param_2[2] = uVar4;
        param_2[1] = uVar5;
      }
    }
    else {
      uVar8 = FUN_007da969(iVar7,iVar7);
      *(undefined4 *)(param_2_00 + 0x10) = uVar8;
      FUN_007da98d(param_2);
      puVar2 = param_2 + 3;
      for (; param_2 != puVar2; param_2 = param_2 + 3) {
        *param_2 = uVar3;
        param_2[2] = uVar4;
        param_2[1] = uVar5;
      }
    }
  }
  return;
}



void Catch_All_007da899(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x18));
}



void FUN_007da969(undefined4 param_1)

{
  thunk_FUN_007daa23(param_1,param_1,0);
  return;
}



int __thiscall FUN_007da98d(undefined4 *param_1_00,undefined4 *param_1)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  if (param_1 != param_1_00) {
    puVar1 = (undefined4 *)(in_EAX + 4);
    puVar3 = param_1_00;
    do {
      puVar4 = puVar3 + -3;
      puVar2 = puVar1 + -3;
      puVar1[-4] = *puVar4;
      puVar1[-2] = puVar3[-1];
      *puVar2 = *(undefined4 *)(((int)param_1_00 - in_EAX) + (int)puVar2);
      puVar1 = puVar2;
      puVar3 = puVar4;
    } while (puVar4 != param_1);
  }
  return in_EAX + (((int)param_1_00 - (int)param_1) / 0xc) * -0xc;
}



void __thiscall FUN_007da9d4(undefined4 *param_1_00,int param_1)

{
  undefined4 *in_EAX;
  
  if (param_1 != 0) {
    do {
      if (in_EAX != (undefined4 *)0x0) {
        *in_EAX = *param_1_00;
        in_EAX[1] = 0;
        in_EAX[2] = param_1_00[2];
        in_EAX[1] = param_1_00[1];
      }
      param_1 = param_1 + -1;
      in_EAX = in_EAX + 3;
    } while (param_1 != 0);
  }
  return;
}



void __thiscall thunk_FUN_007daa23(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *in_EAX;
  
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 3) {
    if (in_EAX != (undefined4 *)0x0) {
      *in_EAX = *param_1_00;
      in_EAX[1] = 0;
      in_EAX[2] = param_1_00[2];
      in_EAX[1] = param_1_00[1];
    }
    in_EAX = in_EAX + 3;
  }
  return;
}



void __thiscall FUN_007daa23(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *in_EAX;
  
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 3) {
    if (in_EAX != (undefined4 *)0x0) {
      *in_EAX = *param_1_00;
      in_EAX[1] = 0;
      in_EAX[2] = param_1_00[2];
      in_EAX[1] = param_1_00[1];
    }
    in_EAX = in_EAX + 3;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007daa2a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7daa36;
  uVar1 = basic_string<>(&DAT_0305b52c,8);
  local_8 = 0;
  local_18 = 0xd3d272e9;
  local_14 = 0xea676054;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007daa96(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7daaa2;
  uVar1 = basic_string<>(&DAT_0305b518,8);
  local_8 = 0;
  local_18 = 0x2df67d35;
  local_14 = 0x558add04;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dab02(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dab0e;
  uVar1 = basic_string<>(&DAT_0305b504,8);
  local_8 = 0;
  local_18 = 0x1fcba2f9;
  local_14 = 0xb844003;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dab6e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dab7a;
  uVar1 = basic_string<>(&DAT_0305b4f0,8);
  local_8 = 0;
  local_18 = 0xd1a01d58;
  local_14 = 0x478bbaab;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dabda(void)

{
  undefined4 uVar1;
  undefined *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dabe6;
  uVar1 = basic_string<>(&DAT_0305b4dc,8);
  local_8 = 0;
  local_18 = &DAT_020f5764;
  local_14 = 0xfda83802;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dac46(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dac52;
  uVar1 = basic_string<>(&DAT_0305b4c8,8);
  local_8 = 0;
  local_18 = 0xa96e0a7;
  local_14 = 0xf8b2d72;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dacb2(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dacbe;
  uVar1 = basic_string<>(&DAT_0305b4b4,8);
  local_8 = 0;
  local_18 = 0xaa7328ca;
  local_14 = 0xd25b9075;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dad1e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dad2a;
  uVar1 = basic_string<>(&DAT_0305b4a0,9);
  local_8 = 0;
  local_18 = 0x48d42be1;
  local_14 = 0x7ca2bb82;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dad8a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dad96;
  uVar1 = basic_string<>(&DAT_0305b48c,8);
  local_8 = 0;
  local_18 = 0xcc6edc81;
  local_14 = 0xf2f2ab48;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dadf6(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dae02;
  uVar1 = basic_string<>(&DAT_0305b478,8);
  local_8 = 0;
  local_18 = 0x276862af;
  local_14 = 0xca64044b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dae62(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dae6e;
  uVar1 = basic_string<>(&DAT_0305b458,0xe);
  local_8 = 0;
  local_18 = 0x9b3b247d;
  local_14 = 0xe3534fe1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007daece(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7daeda;
  uVar1 = basic_string<>(&DAT_0305b438,0xe);
  local_8 = 0;
  local_18 = 0xb106a814;
  local_14 = 0x4405c2bf;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007daf3a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7daf46;
  uVar1 = basic_string<>(&DAT_0305b418,0xe);
  local_8 = 0;
  local_18 = 0xb4f7e916;
  local_14 = 0xf6cdd353;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dafa6(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dafb2;
  uVar1 = basic_string<>(&DAT_0305b3f8,0xe);
  local_8 = 0;
  local_18 = 0xb821081f;
  local_14 = 0xe811f463;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db012(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db01e;
  uVar1 = basic_string<>(&DAT_0305b3d0,0x12);
  local_8 = 0;
  local_18 = 0x42690336;
  local_14 = 0x61075ec;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db07e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db08a;
  uVar1 = basic_string<>(&DAT_0305b3a8,0x12);
  local_8 = 0;
  local_18 = 0x115f84d7;
  local_14 = 0xcb9cce37;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db0ea(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db0f6;
  uVar1 = basic_string<>(&DAT_0305b388,0xe);
  local_8 = 0;
  local_18 = 0x373bc070;
  local_14 = 0xd6b1ab0c;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db156(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db162;
  uVar1 = basic_string<>(&DAT_0305b36c,0xd);
  local_8 = 0;
  local_18 = 0xc1f7b77d;
  local_14 = 0x8cef0535;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db1c2(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db1ce;
  uVar1 = basic_string<>(&DAT_0305b350,0xd);
  local_8 = 0;
  local_18 = 0x554e07e1;
  local_14 = 0x6ee8ca1f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db22e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db23a;
  uVar1 = basic_string<>(&DAT_0305b334,0xd);
  local_8 = 0;
  local_18 = 0x6ee1be;
  local_14 = 0x3a82a3c0;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db29a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db2a6;
  uVar1 = basic_string<>(&DAT_0305b318,0xc);
  local_8 = 0;
  local_18 = 0xfc26d33d;
  local_14 = 0xdcdbfc31;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db306(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db312;
  uVar1 = basic_string<>(&DAT_0305b2fc,0xd);
  local_8 = 0;
  local_18 = 0xe37f3041;
  local_14 = 0x97253685;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db372(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db37e;
  uVar1 = basic_string<>(&DAT_0305b2e0,0xd);
  local_8 = 0;
  local_18 = 0xc3324fa6;
  local_14 = 0xc95c64f4;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db3de(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db3ea;
  uVar1 = basic_string<>(&DAT_0305b2c4,0xd);
  local_8 = 0;
  local_18 = 0x9da54007;
  local_14 = 0xd6304359;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db44a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db456;
  uVar1 = basic_string<>(&DAT_0305b2a8,0xd);
  local_8 = 0;
  local_18 = 0xc144fcfe;
  local_14 = 0xa41a3175;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db4b6(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db4c2;
  uVar1 = basic_string<>(&DAT_0305b28c,0xd);
  local_8 = 0;
  local_18 = 0x274dd77a;
  local_14 = 0x4188cfd9;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db522(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db52e;
  uVar1 = basic_string<>(&DAT_0305b270,0xd);
  local_8 = 0;
  local_18 = 0x75905f7e;
  local_14 = 0xaafd32f5;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db58e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db59a;
  uVar1 = basic_string<>(&DAT_0305b254,0xd);
  local_8 = 0;
  local_18 = 0xd8c3abea;
  local_14 = 0x77677e73;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db5fa(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db606;
  uVar1 = basic_string<>(&DAT_0305b238,0xd);
  local_8 = 0;
  local_18 = 0xf11ed527;
  local_14 = 0x3d87f7ef;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db666(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db672;
  uVar1 = basic_string<>(&DAT_0305b21c,0xd);
  local_8 = 0;
  local_18 = 0x92fc1d4a;
  local_14 = &DAT_015759f1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db6d2(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db6de;
  uVar1 = basic_string<>(&DAT_0305b200,0xd);
  local_8 = 0;
  local_18 = 0xe73156cb;
  local_14 = 0xea877549;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db73e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db74a;
  uVar1 = basic_string<>(&DAT_0305b1e4,0xd);
  local_8 = 0;
  local_18 = 0xd21f3ff;
  local_14 = 0x408220c8;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db7aa(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db7b6;
  uVar1 = basic_string<>(&DAT_0305b1c8,0xd);
  local_8 = 0;
  local_18 = 0xe999090;
  local_14 = 0xd56ed8a6;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db816(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db822;
  uVar1 = basic_string<>(&DAT_0305b1ac,0xd);
  local_8 = 0;
  local_18 = 0xad7fb24f;
  local_14 = 0x4a95f155;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db882(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db88e;
  uVar1 = basic_string<>(&DAT_0305b190,0xd);
  local_8 = 0;
  local_18 = 0xf8922f08;
  local_14 = 0x9cf65ac9;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db8ee(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db8fa;
  uVar1 = basic_string<>(&DAT_0305b174,0xd);
  local_8 = 0;
  local_18 = 0x1e61f06a;
  local_14 = 0xf906a2b3;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db95a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db966;
  uVar1 = basic_string<>(&DAT_0305b158,0xd);
  local_8 = 0;
  local_18 = 0xc86ac811;
  local_14 = 0x7d0ecd6d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007db9c6(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7db9d2;
  uVar1 = basic_string<>(&DAT_0305b13c,0xd);
  local_8 = 0;
  local_18 = 0xa08bd735;
  local_14 = 0x3d2ef6f;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dba32(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dba3e;
  uVar1 = basic_string<>(&DAT_0305b120,0xd);
  local_8 = 0;
  local_18 = 0xcadc7f3f;
  local_14 = 0x76184d8c;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dba9e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dbaaa;
  uVar1 = basic_string<>(&DAT_0305b104,0xd);
  local_8 = 0;
  local_18 = 0x6aa2c42d;
  local_14 = 0xf25503a6;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dbb0a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dbb16;
  uVar1 = basic_string<>(&DAT_0305b0e8,0xd);
  local_8 = 0;
  local_18 = 0xe9bd769e;
  local_14 = 0x58071976;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dbb76(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dbb82;
  uVar1 = basic_string<>(&DAT_0305b0cc,0xd);
  local_8 = 0;
  local_18 = 0x11f179d7;
  local_14 = 0x870dec6d;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dbbe2(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dbbee;
  uVar1 = basic_string<>(&DAT_0305b0b0,0xd);
  local_8 = 0;
  local_18 = 0x408b2982;
  local_14 = 0xcf0d5040;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dbc4e(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dbc5a;
  uVar1 = basic_string<>(&DAT_0305b090,0xe);
  local_8 = 0;
  local_18 = 0x14986891;
  local_14 = 0x3bf9fcf1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dbcba(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dbcc6;
  uVar1 = basic_string<>(&DAT_0305b074,0xd);
  local_8 = 0;
  local_18 = 0x4583f878;
  local_14 = 0xb091e27;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dbd26(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dbd32;
  uVar1 = basic_string<>(&DAT_0305b058,0xd);
  local_8 = 0;
  local_18 = 0x1a1462f6;
  local_14 = 0x2d5e3a8b;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dbd92(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dbd9e;
  uVar1 = basic_string<>(&DAT_0305b03c,0xd);
  local_8 = 0;
  local_18 = 0xfc421326;
  local_14 = 0x9f69fc5;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dbdfe(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dbe0a;
  uVar1 = basic_string<>(&DAT_0305b020,0xd);
  local_8 = 0;
  local_18 = 0xdfbfb73a;
  local_14 = 0xdf18e34e;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dbe6a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dbe76;
  uVar1 = basic_string<>(&DAT_0305b004,0xd);
  local_8 = 0;
  local_18 = 0xa0ead917;
  local_14 = 0xe9c37708;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dbed6(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dbee2;
  uVar1 = basic_string<>(&DAT_0305afe8,0xd);
  local_8 = 0;
  local_18 = 0x5f4497c4;
  local_14 = 0x3b8f5dc3;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dbf42(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dbf4e;
  uVar1 = basic_string<>(&DAT_0305afcc,0xd);
  local_8 = 0;
  local_18 = 0xb8c2d8e6;
  local_14 = 0xf9797fd1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dbfae(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dbfba;
  uVar1 = basic_string<>(&DAT_0305afb0,0xd);
  local_8 = 0;
  local_18 = 0xa5f60aa8;
  local_14 = 0x70a41299;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dc01a(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dc026;
  uVar1 = basic_string<>(&DAT_0305af94,0xd);
  local_8 = 0;
  local_18 = 0xeb7246ff;
  local_14 = 0xe9d8370a;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dc086(void)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dc092;
  uVar1 = basic_string<>(&DAT_0305af78,0xd);
  local_8 = 0;
  local_18 = 0xd0f48cae;
  local_14 = 0xbba75ad1;
  uVar1 = FUN_00b94470(&local_18,uVar1);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar1,0,0xffffffff);
  FUN_00401829(1,0);
  FUN_00401829(1,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007dc0f2(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar2 = param_2;
  uStack_4 = 8;
  local_8 = 0x7dc0fe;
  local_14 = 0;
  if (param_1[2] == 0) {
    puVar3 = (undefined4 *)FUN_00b933f0(&local_18,0);
    uVar1 = *puVar3;
    *puVar3 = 0;
    *puVar2 = uVar1;
  }
  else {
    puVar3 = (undefined4 *)FUN_00b93190(param_1[2],&param_1);
    uVar1 = *puVar3;
    *puVar3 = 0;
    *puVar2 = uVar1;
    local_18 = param_1;
  }
  local_8 = 0;
  local_14 = 1;
  if (local_18 != (undefined4 *)0x0) {
    (**(code **)*local_18)(1);
  }
  return puVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dc15b(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined4 local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7dc167;
  uVar2 = basic_string<>(&DAT_0305af64,8);
  local_8 = 0;
  local_18 = 0xff98e078;
  local_14 = (undefined4 *)0x521357a3;
  uVar2 = FUN_00b94470(&local_18,uVar2);
  local_8 = CONCAT31(local_8._1_3_,1);
  FID_conflict_assign(uVar2,0,0xffffffff);
  FUN_00401829(1,0);
  local_8 = 0xffffffff;
  FUN_00401829(1,0);
  piVar3 = (int *)FUN_007dc0f2(param_1,&param_1);
  puVar1 = (undefined4 *)*piVar3;
  *piVar3 = 0;
  local_8 = 2;
  local_14 = puVar1;
  if (param_1 != (undefined4 *)0x0) {
    (**(code **)*param_1)(1);
  }
  local_8 = 0xffffffff;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  return;
}



undefined4 * __thiscall FUN_007dc1ff(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W71DA37B9::WDECEA333::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007dc21c(undefined4 *param_1)

{
  *param_1 = W71DA37B9::WDECEA333::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007dc223(void)

{
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_ESI;
  int *unaff_EDI;
  undefined **local_1c;
  
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_ESI);
  local_1c = W71DA37B9::W2248C88C::vftable;
  (**(code **)(*unaff_EDI + 4))(&local_1c);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dc263(undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined local_74 [8];
  undefined local_6c [8];
  undefined local_64 [8];
  undefined local_5c [8];
  undefined local_54 [8];
  undefined local_4c [8];
  undefined local_44 [8];
  undefined local_3c [8];
  undefined local_34 [8];
  undefined local_2c [8];
  undefined local_24 [8];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  *param_1 = 0;
  param_1[1] = 0;
  local_8 = 0;
  switch(param_2) {
  case 0:
    puVar1 = (undefined4 *)FUN_007dc5a3(local_24);
    local_8 = 1;
    local_1c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  case 1:
    puVar1 = (undefined4 *)FUN_006e812e(local_2c);
    local_8 = 2;
    local_1c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  case 2:
    puVar1 = (undefined4 *)FUN_0060a575(local_34);
    local_8 = 3;
    local_1c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  case 3:
    puVar1 = (undefined4 *)FUN_007dc636(local_3c);
    local_8 = 4;
    local_1c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  case 4:
    puVar1 = (undefined4 *)FUN_007dc6c9(local_44);
    local_8 = 5;
    local_1c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  case 5:
    puVar1 = (undefined4 *)FUN_007dc75c(local_4c);
    local_8 = 6;
    local_1c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  case 6:
    puVar1 = (undefined4 *)FUN_007dc7ef(local_54);
    local_8 = 7;
    local_1c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  case 7:
    puVar1 = (undefined4 *)FUN_007dc882(local_5c);
    local_8 = 8;
    local_1c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  case 8:
    puVar1 = (undefined4 *)FUN_007dc915(local_64);
    local_8 = 9;
    local_1c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  case 9:
    puVar1 = (undefined4 *)FUN_007dc9a8(local_6c);
    local_8 = 10;
    local_1c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  default:
    puVar1 = (undefined4 *)FUN_007dca3b(local_74);
    local_8 = 0xb;
    local_1c = *puVar1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar1 + 1);
  }
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dc5a3(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dc5af;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007dcace(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = W76AFA8BF::WCFFFDC6E::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dc636(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dc642;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007dcb25(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = W76AFA8BF::WFEFA1CD4::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dc6c9(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dc6d5;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007dcb7c(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = W76AFA8BF::WF180D0B1::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dc75c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dc768;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007dcbd3(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = W76AFA8BF::WDEC79ED7::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dc7ef(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dc7fb;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007dcc2a(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = W76AFA8BF::W4781AE39::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dc882(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dc88e;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007dcc81(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = W76AFA8BF::WD5C8C8DE::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dc915(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dc921;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007dccd8(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = W76AFA8BF::W7CCD3A08::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dc9a8(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dc9b4;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007dcd2f(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = W76AFA8BF::W69FB2C6D::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dca3b(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dca47;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007dcd86(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = W76AFA8BF::WEA85D48B::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007dcace(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W76AFA8BF::WCFFFDC6E*,class_boost::detail::sp_ms_deleter<class_W76AFA8BF::WCFFFDC6E>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007dcb14(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x18) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007dcb25(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W76AFA8BF::WFEFA1CD4*,class_boost::detail::sp_ms_deleter<class_W76AFA8BF::WFEFA1CD4>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007dcb6b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x18) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007dcb7c(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W76AFA8BF::WF180D0B1*,class_boost::detail::sp_ms_deleter<class_W76AFA8BF::WF180D0B1>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007dcbc2(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x18) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007dcbd3(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W76AFA8BF::WDEC79ED7*,class_boost::detail::sp_ms_deleter<class_W76AFA8BF::WDEC79ED7>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007dcc19(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x18) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007dcc2a(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W76AFA8BF::W4781AE39*,class_boost::detail::sp_ms_deleter<class_W76AFA8BF::W4781AE39>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007dcc70(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x18) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007dcc81(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W76AFA8BF::WD5C8C8DE*,class_boost::detail::sp_ms_deleter<class_W76AFA8BF::WD5C8C8DE>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007dccc7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x18) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007dccd8(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W76AFA8BF::W7CCD3A08*,class_boost::detail::sp_ms_deleter<class_W76AFA8BF::W7CCD3A08>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007dcd1e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x18) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007dcd2f(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W76AFA8BF::W69FB2C6D*,class_boost::detail::sp_ms_deleter<class_W76AFA8BF::W69FB2C6D>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007dcd75(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x18) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007dcd86(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W76AFA8BF::WEA85D48B*,class_boost::detail::sp_ms_deleter<class_W76AFA8BF::WEA85D48B>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007dcdcc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x18) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



uint __thiscall FUN_007dcddd(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W76AFA8BF::WCFFFDC6E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007dcdfe(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W76AFA8BF::WFEFA1CD4>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007dce1f(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W76AFA8BF::WF180D0B1>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007dce40(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W76AFA8BF::WDEC79ED7>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007dce61(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W76AFA8BF::W4781AE39>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007dce82(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W76AFA8BF::WD5C8C8DE>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007dcea3(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W76AFA8BF::W7CCD3A08>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007dcec4(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W76AFA8BF::W69FB2C6D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007dcee5(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W76AFA8BF::WEA85D48B>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dcf06(undefined4 *param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined local_1c [20];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dcf12;
  *param_1 = W76AFA8BF::W84FA533E::vftable;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 1);
  }
  param_1[1] = piVar1;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  local_8 = 2;
  puVar2 = (undefined4 *)FUN_005d144b(local_1c);
  param_1[9] = *puVar2;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar2 + 1);
}



undefined4 __thiscall FUN_007dcffb(undefined4 param_1_00,byte param_1)

{
  FUN_007dd017();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007dd017(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 *local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  *param_1 = W76AFA8BF::W84FA533E::vftable;
  local_8 = 7;
  local_1c = param_1;
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0049a803(&local_2c,local_2c,local_28,local_24,local_20);
  puVar1 = local_1c;
  local_8 = 6;
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  local_8._0_1_ = 3;
  if (puVar1[0xe] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 2;
  if (puVar1[0xc] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (puVar1[10] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (puVar1[8] != 0) {
    FUN_0040127a();
  }
  local_8 = 0xffffffff;
  FUN_007b3ae8(puVar1 + 1);
  return;
}



undefined4 Catch_All_007dd0d8(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 6;
  return 0x7dd06b;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007dd0e5(int param_1_00,int param_1,int param_2)

{
  int local_2c;
  undefined4 *local_28;
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  if (param_1 == 0) {
    local_28 = &param_1;
    local_2c = 0x7dd109;
    FUN_005d11c9();
  }
  local_28 = (undefined4 *)(param_1_00 + 0x1c);
  local_2c = 0x7dd115;
  FUN_005d11c9();
  if (*(int *)(param_1_00 + 0x14) - *(int *)(param_1_00 + 0x10) >> 3 != 0) {
    local_28 = (undefined4 *)0x7dd12a;
    FUN_00436b17();
    local_14 = &local_2c;
    local_2c = param_1;
                    // WARNING: Subroutine does not return
    FUN_0043c023(&param_2);
  }
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    local_28 = (undefined4 *)0x7dd169;
    FUN_0040127a();
  }
  return;
}



bool FUN_007dd185(void)

{
  int iVar1;
  int in_EAX;
  int *piVar2;
  undefined local_c [4];
  int local_8;
  
  piVar2 = (int *)FUN_0062042e(local_c,in_EAX + 0x2c);
  iVar1 = *piVar2;
  if (local_8 != 0) {
    FUN_0040127a();
  }
  return iVar1 != 0;
}



void FUN_007dd1b1(undefined4 param_1)

{
  int in_EAX;
  int **ppiVar1;
  undefined4 unaff_EBX;
  uint uVar2;
  
  *(undefined4 *)(in_EAX + 0x5c) = param_1;
  *(undefined4 *)(in_EAX + 0x60) = unaff_EBX;
  uVar2 = 0;
  if (*(int *)(in_EAX + 0x14) - *(int *)(in_EAX + 0x10) >> 3 != 0) {
    do {
      ppiVar1 = (int **)FUN_00436b17();
      (**(code **)(**ppiVar1 + 0x14))(param_1);
      uVar2 = uVar2 + 1;
    } while (uVar2 < (uint)(*(int *)(in_EAX + 0x14) - *(int *)(in_EAX + 0x10) >> 3));
  }
  return;
}



void FUN_007dd1f3(void)

{
  int in_EAX;
  int **ppiVar1;
  undefined4 unaff_EBX;
  uint uVar2;
  
  *(undefined4 *)(in_EAX + 100) = unaff_EBX;
  uVar2 = 0;
  if (*(int *)(in_EAX + 0x14) - *(int *)(in_EAX + 0x10) >> 3 != 0) {
    do {
      ppiVar1 = (int **)FUN_00436b17();
      (**(code **)(**ppiVar1 + 0x18))();
      uVar2 = uVar2 + 1;
    } while (uVar2 < (uint)(*(int *)(in_EAX + 0x14) - *(int *)(in_EAX + 0x10) >> 3));
  }
  return;
}



void FUN_007dd228(void)

{
  int in_EAX;
  int **ppiVar1;
  undefined4 unaff_EBX;
  uint uVar2;
  
  *(undefined4 *)(in_EAX + 0x68) = unaff_EBX;
  uVar2 = 0;
  if (*(int *)(in_EAX + 0x14) - *(int *)(in_EAX + 0x10) >> 3 != 0) {
    do {
      ppiVar1 = (int **)FUN_00436b17();
      (**(code **)(**ppiVar1 + 0x1c))();
      uVar2 = uVar2 + 1;
    } while (uVar2 < (uint)(*(int *)(in_EAX + 0x14) - *(int *)(in_EAX + 0x10) >> 3));
  }
  return;
}



void FUN_007dd25d(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  int in_EAX;
  int **ppiVar1;
  uint uVar2;
  
  uVar2 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (in_EAX + 0x70),param_1,0,0xffffffff);
  if (*(int *)(in_EAX + 0x14) - *(int *)(in_EAX + 0x10) >> 3 != 0) {
    do {
      ppiVar1 = (int **)FUN_00436b17();
      (**(code **)(**ppiVar1 + 0x20))(param_1);
      uVar2 = uVar2 + 1;
    } while (uVar2 < (uint)(*(int *)(in_EAX + 0x14) - *(int *)(in_EAX + 0x10) >> 3));
  }
  return;
}



void FUN_007dd2a5(void)

{
  undefined *in_EAX;
  undefined4 *puVar1;
  undefined4 *unaff_ESI;
  undefined local_1d4 [8];
  undefined local_1cc [8];
  undefined local_1c4 [8];
  undefined local_1bc [8];
  undefined local_1b4 [8];
  undefined local_1ac [8];
  undefined local_1a4 [8];
  undefined local_19c [8];
  undefined local_194 [8];
  undefined local_18c [8];
  undefined local_184 [8];
  undefined local_17c [8];
  undefined local_174 [8];
  undefined local_16c [8];
  undefined local_164 [8];
  undefined local_15c [8];
  undefined local_154 [8];
  undefined local_14c [8];
  undefined local_144 [8];
  undefined local_13c [8];
  undefined local_134 [8];
  undefined local_12c [8];
  undefined local_124 [8];
  undefined local_11c [8];
  undefined local_114 [8];
  undefined local_10c [8];
  undefined local_104 [8];
  undefined local_fc [8];
  undefined local_f4 [8];
  undefined local_ec [8];
  undefined local_e4 [8];
  undefined local_dc [8];
  undefined local_d4 [8];
  undefined local_cc [8];
  undefined local_c4 [8];
  undefined local_bc [8];
  undefined local_b4 [8];
  undefined local_ac [8];
  undefined local_a4 [8];
  undefined local_9c [8];
  undefined local_94 [8];
  undefined local_8c [8];
  undefined local_84 [8];
  undefined local_7c [8];
  undefined local_74 [8];
  undefined local_6c [8];
  undefined local_64 [8];
  undefined local_5c [8];
  undefined local_54 [8];
  undefined local_4c [8];
  undefined local_44 [8];
  undefined local_3c [8];
  undefined local_34 [8];
  undefined local_2c [8];
  undefined local_24 [8];
  undefined local_1c [8];
  undefined local_14 [8];
  undefined local_c [4];
  undefined4 local_8;
  
  local_8 = 0;
  if (in_EAX < (undefined *)0x77dedba4) {
    if (in_EAX == (undefined *)0x77dedba3) {
      puVar1 = (undefined4 *)FUN_007de411(local_1c);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
    if (in_EAX < (undefined *)0x34fae906) {
      if (in_EAX == (undefined *)0x34fae905) {
        puVar1 = (undefined4 *)FUN_007dfc4a(local_12c);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX < (undefined *)0x19915aae) {
        if (in_EAX == (undefined *)0x19915aad) {
          puVar1 = (undefined4 *)FUN_007df1bb(local_4c);
          *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar1 + 1);
        }
        if (in_EAX == &DAT_0207633c) {
          puVar1 = (undefined4 *)FUN_007deb85(local_10c);
          *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar1 + 1);
        }
        if (in_EAX == (undefined *)0xbb9ef7a) {
          puVar1 = (undefined4 *)FUN_007df6b3(local_3c);
          *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar1 + 1);
        }
        if (in_EAX == (undefined *)0xe468a51) {
          puVar1 = (undefined4 *)FUN_007df4d6(local_16c);
          *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar1 + 1);
        }
        if (in_EAX == (undefined *)0x1478b250) {
          puVar1 = (undefined4 *)FUN_007deae6(local_2c);
          *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar1 + 1);
        }
        if (in_EAX == (undefined *)0x14aae296) {
          puVar1 = (undefined4 *)FUN_007dfec6(local_fc);
          *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar1 + 1);
        }
        if (in_EAX == (undefined *)0x16e6a140) {
          puVar1 = (undefined4 *)FUN_007dee01(local_19c);
          *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar1 + 1);
        }
        if (in_EAX == (undefined *)0x187f24e9) {
          puVar1 = (undefined4 *)FUN_007de909(local_c);
          *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar1 + 1);
        }
      }
      else {
        if (in_EAX == (undefined *)0x1ae556b0) {
          puVar1 = (undefined4 *)FUN_007de5ee(local_7c);
          *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar1 + 1);
        }
        if (in_EAX == (undefined *)0x1ee73050) {
          puVar1 = (undefined4 *)FUN_007df2f9(local_17c);
          *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar1 + 1);
        }
        if (in_EAX == (undefined *)0x1f963e5f) {
          puVar1 = (undefined4 *)FUN_007de234(local_6c);
          *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar1 + 1);
        }
        if (in_EAX == (undefined *)0x2048574e) {
          puVar1 = (undefined4 *)FUN_007e0004(local_11c);
          *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar1 + 1);
        }
        if (in_EAX == (undefined *)0x2c53d708) {
          puVar1 = (undefined4 *)FUN_007dfce9(local_5c);
          *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar1 + 1);
        }
        if (in_EAX == (undefined *)0x322e119c) {
          puVar1 = (undefined4 *)FUN_007dfb0c(local_1bc);
          *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
          FUN_0043c023(puVar1 + 1);
        }
      }
    }
    else if (in_EAX < (undefined *)0x5cffadef) {
      if (in_EAX == (undefined *)0x5cffadee) {
        puVar1 = (undefined4 *)FUN_007dfe27(local_14c);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x39d53119) {
        puVar1 = (undefined4 *)FUN_007de9a8(local_bc);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x4a03e9d0) {
        puVar1 = (undefined4 *)FUN_007df614(local_18c);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x4efd680b) {
        puVar1 = (undefined4 *)FUN_007de0f6(local_ac);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x565f0a06) {
        puVar1 = (undefined4 *)FUN_007df575(local_13c);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x59e758ad) {
        puVar1 = (undefined4 *)FUN_007defde(local_9c);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x5a6364fe) {
        puVar1 = (undefined4 *)FUN_007de54f(local_1ac);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x5bc4bf01) {
        puVar1 = (undefined4 *)FUN_007dfa6d(local_8c);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
    }
    else {
      if (in_EAX == (undefined *)0x60240c14) {
        puVar1 = (undefined4 *)FUN_007df7f1(local_14);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x7122beb4) {
        puVar1 = (undefined4 *)FUN_007dea47(local_ec);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x7169ab7f) {
        puVar1 = (undefined4 *)FUN_007dff65(local_15c);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x721461d8) {
        puVar1 = (undefined4 *)FUN_007df437(local_dc);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x723ede1c) {
        puVar1 = (undefined4 *)FUN_007de2d3(local_1cc);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x7350e11f) {
        puVar1 = (undefined4 *)FUN_007df25a(local_cc);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
    }
  }
  else if (in_EAX < (undefined *)0xc3f06b1b) {
    if (in_EAX == (undefined *)0xc3f06b1a) {
      puVar1 = (undefined4 *)FUN_007df890(local_104);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
    if (in_EAX < (undefined *)0xa3fb6b09) {
      if (in_EAX == (undefined *)0xa3fb6b08) {
        puVar1 = (undefined4 *)FUN_007dde7a(local_94);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x80a2f867) {
        puVar1 = (undefined4 *)FUN_007e00a3(local_84);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x9395b534) {
        puVar1 = (undefined4 *)FUN_007de057(local_74);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x94b3b5ee) {
        puVar1 = (undefined4 *)FUN_007decc3(local_64);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x953e9d62) {
        puVar1 = (undefined4 *)FUN_007de72c(local_54);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x956f9d8b) {
        puVar1 = (undefined4 *)FUN_007ddf19(local_44);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x97cf6c88) {
        puVar1 = (undefined4 *)FUN_007df92f(local_34);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0x9dbdb511) {
        puVar1 = (undefined4 *)FUN_007de68d(local_24);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
    }
    else {
      if (in_EAX == (undefined *)0xa6fcbc9f) {
        puVar1 = (undefined4 *)FUN_007de7cb(local_f4);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0xa9299be7) {
        puVar1 = (undefined4 *)FUN_007de86a(local_e4);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0xab13c702) {
        puVar1 = (undefined4 *)FUN_007def3f(local_d4);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0xb48f6453) {
        puVar1 = (undefined4 *)FUN_007ded62(local_c4);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0xb6ec8899) {
        puVar1 = (undefined4 *)FUN_007df11c(local_b4);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
      if (in_EAX == (undefined *)0xc251dec6) {
        puVar1 = (undefined4 *)FUN_007ddddb(local_a4);
        *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar1 + 1);
      }
    }
  }
  else if (in_EAX < (undefined *)0xd6892790) {
    if (in_EAX == (undefined *)0xd689278f) {
      puVar1 = (undefined4 *)FUN_007dfbab(local_174);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
    if (in_EAX == (undefined *)0xc441fa8c) {
      puVar1 = (undefined4 *)FUN_007de4b0(local_164);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
    if (in_EAX == (undefined *)0xc56b78f7) {
      puVar1 = (undefined4 *)FUN_007df07d(local_154);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
    if (in_EAX == (undefined *)0xc59b253d) {
      puVar1 = (undefined4 *)FUN_007df752(local_144);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
    if (in_EAX == (undefined *)0xd13558a2) {
      puVar1 = (undefined4 *)FUN_007df9ce(local_134);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
    if (in_EAX == (undefined *)0xd34fff29) {
      puVar1 = (undefined4 *)FUN_007df398(local_124);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
    if (in_EAX == (undefined *)0xd4362672) {
      puVar1 = (undefined4 *)FUN_007deea0(local_114);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
  }
  else {
    if (in_EAX == (undefined *)0xdc4d2e7f) {
      puVar1 = (undefined4 *)FUN_007de195(local_1d4);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
    if (in_EAX == (undefined *)0xe0394fa8) {
      puVar1 = (undefined4 *)FUN_007e0142(local_1c4);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
    if (in_EAX == (undefined *)0xe10ae1ee) {
      puVar1 = (undefined4 *)FUN_007dfd88(local_1b4);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
    if (in_EAX == (undefined *)0xea7983e3) {
      puVar1 = (undefined4 *)FUN_007de372(local_1a4);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
    if (in_EAX == (undefined *)0xf9f18523) {
      puVar1 = (undefined4 *)FUN_007dec24(local_194);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
    if (in_EAX == (undefined *)0xfceb6d6d) {
      puVar1 = (undefined4 *)FUN_007ddfb8(local_184);
      *unaff_ESI = *puVar1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(puVar1 + 1);
    }
  }
  *unaff_ESI = 0;
  unaff_ESI[1] = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007ddddb(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7ddde7;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e01e1(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b65b87();
    *puVar1 = W2260F36E::W7729BB2C::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dde7a(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dde86;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0238(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b65adb();
    *puVar1 = W2260F36E::W2DACEA8A::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007ddf19(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7ddf25;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e028f(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b65c33();
    *puVar1 = W2260F36E::W7318749C::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007ddfb8(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7ddfc4;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e02e6(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b65a2f();
    *puVar1 = W2260F36E::WAF9B719E::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de057(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de063;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e033d(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b65983();
    *puVar1 = W2260F36E::W0117D88C::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de0f6(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de102;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0394(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b658d7();
    *puVar1 = W2260F36E::W1C49E488::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de195(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de1a1;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e03eb(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b6582b();
    *puVar1 = W2260F36E::WD762765E::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de234(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de240;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0442(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b6577f();
    *puVar1 = W2260F36E::WFD3F9E44::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de2d3(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de2df;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0499(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b656d3();
    *puVar1 = W2260F36E::WDD341921::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de372(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de37e;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e04f0(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b65627();
    *puVar1 = W2260F36E::WC8C6D2F4::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de411(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de41d;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0547(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b6557b();
    *puVar1 = W2260F36E::WF1A441E8::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de4b0(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de4bc;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e059e(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b654cf();
    *puVar1 = W2260F36E::WFECE5684::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de54f(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de55b;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e05f5(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b65423();
    *puVar1 = W2260F36E::WD157FB57::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de5ee(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de5fa;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e064c(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b65377();
    *puVar1 = W2260F36E::WDBD10967::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de68d(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de699;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e06a3(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b652cb();
    *puVar1 = W2260F36E::W7B34BF17::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de72c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de738;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e06fa(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b6521f();
    *puVar1 = W2260F36E::WC7CAA22E::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de7cb(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de7d7;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0751(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b65173();
    *puVar1 = W2260F36E::W2BD98D4F::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de86a(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de876;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e07a8(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b650c7();
    *puVar1 = W2260F36E::W731C685B::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de909(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de915;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e07ff(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b6501b();
    *puVar1 = W2260F36E::WD8C76A1E::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007de9a8(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7de9b4;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0856(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b64f6f();
    *puVar1 = W2260F36E::W2AB4EA8A::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dea47(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dea53;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e08ad(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b64ec3();
    *puVar1 = W2260F36E::W8717F72F::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007deae6(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7deaf2;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0904(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b64e17();
    *puVar1 = W2260F36E::W7B5A49EB::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007deb85(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7deb91;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e095b(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b64d6b();
    *puVar1 = W2260F36E::WA465DC26::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dec24(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dec30;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e09b2(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b64cbf();
    *puVar1 = W2260F36E::W8615F52D::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007decc3(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7deccf;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0a09(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b64c13();
    *puVar1 = W2260F36E::WE16851AE::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007ded62(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7ded6e;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0a60(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b64b67();
    *puVar1 = W2260F36E::W7AB89039::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dee01(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dee0d;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0ab7(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b64abb();
    *puVar1 = W2260F36E::WF8CB882C::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007deea0(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7deeac;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0b0e(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b64a0f();
    *puVar1 = W2260F36E::W7C8B2481::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007def3f(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7def4b;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0b65(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b64963();
    *puVar1 = W2260F36E::WFFB9E319::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007defde(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7defea;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0bbc(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b648b7();
    *puVar1 = W2260F36E::W0E8A6431::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df07d(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df089;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0c13(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b6480b();
    *puVar1 = W2260F36E::W486D7BCC::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df11c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df128;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0c6a(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b6475f();
    *puVar1 = W2260F36E::W1B7CEEB0::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df1bb(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df1c7;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0cc1(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b646b3();
    *puVar1 = W2260F36E::W36EF6A84::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df25a(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df266;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0d18(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b64607();
    *puVar1 = W2260F36E::WB4DF6F04::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df2f9(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df305;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0d6f(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b6455b();
    *puVar1 = W2260F36E::W18A4C7C7::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df398(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df3a4;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0dc6(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b644af();
    *puVar1 = W2260F36E::W157FAABF::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df437(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df443;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0e1d(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b64403();
    *puVar1 = W2260F36E::WC3F4B95A::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df4d6(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df4e2;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0e74(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b64357();
    *puVar1 = W2260F36E::WEFAB28C0::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df575(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df581;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0ecb(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b642ab();
    *puVar1 = W2260F36E::WEC91C384::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df614(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df620;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0f22(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b641ff();
    *puVar1 = W2260F36E::WD5219C29::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df6b3(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df6bf;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0f79(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b64153();
    *puVar1 = W2260F36E::W17280130::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df752(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df75e;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e0fd0(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b640a7();
    *puVar1 = W2260F36E::W324CBF9B::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df7f1(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df7fd;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e1027(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b63ffb();
    *puVar1 = W2260F36E::W34A2DA98::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df890(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df89c;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e107e(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b63f4f();
    *puVar1 = W2260F36E::W594955AD::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df92f(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df93b;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e10d5(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b63ea3();
    *puVar1 = W2260F36E::WE7F3DD00::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007df9ce(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7df9da;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e112c(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b63df7();
    *puVar1 = W2260F36E::WDAD98E3E::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dfa6d(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dfa79;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e1183(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b63d4b();
    *puVar1 = W2260F36E::W7F3383DD::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dfb0c(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dfb18;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e11da(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b63c9f();
    *puVar1 = W2260F36E::W9C908FEA::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dfbab(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dfbb7;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e1231(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b63bf3();
    *puVar1 = W2260F36E::W395880BF::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dfc4a(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dfc56;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e1288(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b63b47();
    *puVar1 = W2260F36E::WAD77A3D5::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dfce9(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dfcf5;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e12df(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b63a9b();
    *puVar1 = W2260F36E::WCBF6909A::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dfd88(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dfd94;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e1336(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b639ef();
    *puVar1 = W2260F36E::W0FA43D95::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dfe27(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dfe33;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e138d(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b63943();
    *puVar1 = W2260F36E::WF78837EE::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dfec6(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dfed2;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e13e4(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b63897();
    *puVar1 = W2260F36E::W002D374C::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007dff65(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7dff71;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e143b(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b637eb();
    *puVar1 = W2260F36E::WAC30A1F4::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e0004(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7e0010;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e1492(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b6373f();
    *puVar1 = W2260F36E::WE7A197DC::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e00a3(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7e00af;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e14e9(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b63693();
    *puVar1 = W2260F36E::W88C83CB7::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e0142(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined4 local_20;
  int *local_1c;
  undefined4 local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7e014e;
  local_18 = 0;
  local_14 = local_14 & 0xffffff00;
  local_20 = 0;
  FUN_007e1540(local_14);
  FUN_007a491c(&local_20,0,0);
  local_8 = 1;
  if (local_1c == (int *)0x0) {
    puVar2 = (undefined *)0x0;
  }
  else {
    puVar2 = (undefined *)(**(code **)(*local_1c + 0x10))();
  }
  puVar1 = (undefined4 *)(puVar2 + 4);
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00b635e7();
    *puVar1 = W2260F36E::W93F423F8::vftable;
  }
  *puVar2 = 1;
  FUN_007a491c(&local_20,puVar1,puVar1);
  *param_1 = puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_1c);
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e01e1(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W7729BB2C*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W7729BB2C>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0227(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0238(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W2DACEA8A*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W2DACEA8A>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e027e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e028f(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W7318749C*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W7318749C>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e02d5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e02e6(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WAF9B719E*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WAF9B719E>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e032c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e033d(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W0117D88C*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W0117D88C>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0383(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0394(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W1C49E488*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W1C49E488>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e03da(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e03eb(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WD762765E*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WD762765E>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0431(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0442(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WFD3F9E44*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WFD3F9E44>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0488(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0499(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WDD341921*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WDD341921>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e04df(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e04f0(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WC8C6D2F4*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WC8C6D2F4>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0536(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0547(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WF1A441E8*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WF1A441E8>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e058d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e059e(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WFECE5684*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WFECE5684>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e05e4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e05f5(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WD157FB57*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WD157FB57>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e063b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e064c(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WDBD10967*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WDBD10967>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0692(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e06a3(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W7B34BF17*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W7B34BF17>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e06e9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e06fa(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WC7CAA22E*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WC7CAA22E>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0740(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0751(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W2BD98D4F*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W2BD98D4F>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0797(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e07a8(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W731C685B*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W731C685B>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e07ee(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e07ff(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WD8C76A1E*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WD8C76A1E>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0845(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0856(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W2AB4EA8A*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W2AB4EA8A>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e089c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e08ad(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W8717F72F*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W8717F72F>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e08f3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0904(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W7B5A49EB*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W7B5A49EB>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e094a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e095b(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WA465DC26*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WA465DC26>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e09a1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e09b2(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W8615F52D*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W8615F52D>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e09f8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0a09(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WE16851AE*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WE16851AE>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0a4f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0a60(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W7AB89039*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W7AB89039>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0aa6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0ab7(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WF8CB882C*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WF8CB882C>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0afd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0b0e(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W7C8B2481*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W7C8B2481>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0b54(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0b65(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WFFB9E319*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WFFB9E319>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0bab(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0bbc(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W0E8A6431*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W0E8A6431>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0c02(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0c13(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W486D7BCC*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W486D7BCC>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0c59(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0c6a(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W1B7CEEB0*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W1B7CEEB0>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0cb0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0cc1(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W36EF6A84*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W36EF6A84>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0d07(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0d18(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WB4DF6F04*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WB4DF6F04>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0d5e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0d6f(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W18A4C7C7*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W18A4C7C7>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0db5(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0dc6(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W157FAABF*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W157FAABF>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0e0c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0e1d(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WC3F4B95A*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WC3F4B95A>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0e63(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0e74(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WEFAB28C0*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WEFAB28C0>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0eba(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0ecb(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WEC91C384*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WEC91C384>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0f11(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0f22(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WD5219C29*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WD5219C29>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0f68(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0f79(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W17280130*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W17280130>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e0fbf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e0fd0(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W324CBF9B*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W324CBF9B>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e1016(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e1027(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W34A2DA98*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W34A2DA98>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e106d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e107e(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W594955AD*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W594955AD>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e10c4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e10d5(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WE7F3DD00*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WE7F3DD00>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e111b(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e112c(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WDAD98E3E*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WDAD98E3E>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e1172(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e1183(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W7F3383DD*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W7F3383DD>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e11c9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e11da(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W9C908FEA*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W9C908FEA>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e1220(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e1231(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W395880BF*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W395880BF>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e1277(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e1288(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WAD77A3D5*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WAD77A3D5>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e12ce(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e12df(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WCBF6909A*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WCBF6909A>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e1325(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e1336(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W0FA43D95*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W0FA43D95>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e137c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e138d(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WF78837EE*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WF78837EE>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e13d3(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e13e4(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W002D374C*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W002D374C>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e142a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e143b(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WAC30A1F4*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WAC30A1F4>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e1481(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e1492(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::WE7A197DC*,class_boost::detail::sp_ms_deleter<class_W2260F36E::WE7A197DC>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e14d8(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e14e9(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W88C83CB7*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W88C83CB7>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e152f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __fastcall FUN_007e1540(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = 0;
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<class_W2260F36E::W93F423F8*,class_boost::detail::sp_ms_deleter<class_W2260F36E::W93F423F8>_>
              ::vftable;
    puVar1[3] = 0;
    *(undefined *)(puVar1 + 4) = 0;
  }
  *param_1 = puVar1;
  return param_1;
}



void Catch_All_007e1586(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined *)(unaff_EBP + -0x38) = 0;
  *(undefined *)(unaff_EBP + -4) = 1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



uint __thiscall FUN_007e1597(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W7729BB2C>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e15b8(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W2DACEA8A>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e15d9(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W7318749C>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e15fa(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WAF9B719E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e161b(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W0117D88C>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e163c(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W1C49E488>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e165d(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WD762765E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e167e(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WFD3F9E44>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e169f(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WDD341921>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e16c0(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WC8C6D2F4>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e16e1(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WF1A441E8>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1702(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WFECE5684>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1723(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WD157FB57>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1744(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WDBD10967>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1765(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W7B34BF17>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1786(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WC7CAA22E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e17a7(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W2BD98D4F>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e17c8(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W731C685B>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e17e9(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WD8C76A1E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e180a(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W2AB4EA8A>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e182b(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W8717F72F>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e184c(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W7B5A49EB>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e186d(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WA465DC26>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e188e(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W8615F52D>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e18af(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WE16851AE>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



int __fastcall FUN_007e18d0(int param_1)

{
  return param_1 + 0x10;
}



uint __thiscall FUN_007e18d4(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W7AB89039>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e18f5(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WF8CB882C>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1916(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W7C8B2481>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1937(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WFFB9E319>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1958(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W0E8A6431>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1979(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W486D7BCC>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e199a(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W1B7CEEB0>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e19bb(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W36EF6A84>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e19dc(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WB4DF6F04>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e19fd(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W18A4C7C7>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1a1e(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W157FAABF>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1a3f(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WC3F4B95A>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1a60(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WEFAB28C0>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1a81(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WEC91C384>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1aa2(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WD5219C29>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1ac3(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W17280130>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1ae4(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W324CBF9B>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1b05(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W34A2DA98>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1b26(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W594955AD>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1b47(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WE7F3DD00>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1b68(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WDAD98E3E>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1b89(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W7F3383DD>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1baa(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W9C908FEA>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1bcb(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W395880BF>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1bec(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WAD77A3D5>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1c0d(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WCBF6909A>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1c2e(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W0FA43D95>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1c4f(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WF78837EE>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1c70(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W002D374C>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1c91(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WAC30A1F4>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1cb2(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::WE7A197DC>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1cd3(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W88C83CB7>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



uint __thiscall FUN_007e1cf4(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::detail::sp_ms_deleter<class_W2260F36E::W93F423F8>::
                              RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x10U;
}



undefined4 * __thiscall FUN_007e1d15(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W2260F36E::W7773E56D<512>::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007e1d32(undefined4 *param_1)

{
  *param_1 = W2260F36E::W7773E56D<512>::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined * FUN_007e1d39(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = &LAB_00c14048;
  if (param_1[6] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  if (param_1[2] != 0) {
    puVar1 = (undefined *)FUN_0040127a();
  }
  *param_1 = W2260F36E::W7773E56D<512>::vftable;
  return puVar1;
}



undefined4 * FUN_007e1d79(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)FUN_007e220e();
  uVar1 = *puVar2;
  *puVar2 = 0;
  *param_1 = uVar1;
  FUN_007e2266();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_007e1da4(int *param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  
  *param_1 = 0;
  cVar2 = (**(code **)(*param_1_00 + 0x24))(param_1_00 + 1,param_1_00[3],param_1_00[4]);
  if ((cVar2 != '\0') &&
     (cVar2 = (**(code **)(*param_1_00 + 0x28))(param_1,param_1_00[1],param_2,param_3),
     cVar2 != '\0')) {
    return param_1;
  }
  puVar3 = (undefined4 *)FUN_007e220e();
  uVar1 = *puVar3;
  *puVar3 = 0;
  FUN_007e21d6(uVar1);
  FUN_007e2266();
  return param_1;
}



char FUN_007e1e14(undefined2 *param_1,int *param_2,undefined *param_3)

{
  int *piVar1;
  char cVar2;
  undefined2 uVar3;
  undefined auStack_24 [8];
  undefined4 *puStack_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  
  piVar1 = param_2;
  uStack_10 = 0;
  uStack_14 = param_3;
  uStack_18 = 0x7e1e28;
  cVar2 = (**(code **)(*param_2 + 0x28))();
  if (cVar2 != '\0') {
    uStack_18 = 2;
    param_3 = auStack_24;
    puStack_1c = &param_2;
    auStack_24[0] = 0;
    cVar2 = (**(code **)(*piVar1 + 0xc))();
    if (cVar2 != '\0') {
      uVar3 = FUN_00b74ca0();
      goto LAB_007e1e5d;
    }
  }
  uVar3 = 0;
LAB_007e1e5d:
  *param_1 = uVar3;
  return cVar2;
}



uint __thiscall FUN_007e1e6b(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  int *local_8;
  
  local_8 = param_1_00;
  cVar1 = (**(code **)(*param_1_00 + 0x24))(param_1_00 + 1,param_1_00[3],param_1_00[4]);
  if (cVar1 != '\0') {
    cVar1 = (**(code **)(*param_1_00 + 0x2c))(&local_8,param_1_00[1],param_1,param_2);
    if (cVar1 != '\0') goto LAB_007e1ea2;
  }
  local_8 = (int *)0x0;
LAB_007e1ea2:
  return (uint)local_8 & 0xffff;
}



char FUN_007e1eac(int *param_1,code *param_2)

{
  int iVar1;
  char local_85;
  int local_7c [11];
  undefined4 uStack_50;
  undefined4 uStack_4c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c4872f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_85 = '\x01';
  if (*param_1 == 0) {
    FUN_00b74200();
    local_85 = param_2 != (code *)0x0;
    local_c = 0;
    if ((bool)local_85) {
      local_85 = (*param_2)();
      if (local_85 != '\0') {
        uStack_50 = 0;
        uStack_4c = 0;
        iVar1 = FUN_00b93e40();
        local_c = CONCAT31(local_c._1_3_,1);
                    // WARNING: Subroutine does not return
        FUN_0043c023(iVar1 + 4);
      }
    }
    if (local_7c != param_1) {
      *param_1 = 0;
    }
    iVar1 = param_1[1];
    param_1[1] = 0;
    if (iVar1 != 0) {
      FUN_0040127a();
    }
    local_c = 0xffffffff;
    FUN_00b73a90();
  }
  ExceptionList = local_14;
  return local_85;
}



void __thiscall FUN_007e2052(int param_1_00,char param_1)

{
  undefined *puVar1;
  int iVar2;
  int unaff_EDI;
  
  if (param_1 == '\0') {
    FUN_00b92570();
  }
  else {
    iVar2 = 0;
    puVar1 = (undefined *)(param_1_00 + 0x3f);
    do {
      *(undefined *)(iVar2 + unaff_EDI) = *puVar1;
      iVar2 = iVar2 + 1;
      puVar1 = puVar1 + -1;
    } while (iVar2 < 0x40);
  }
  *(undefined *)(unaff_EDI + 0x40) = 0;
  *(undefined *)(unaff_EDI + 0x41) = 0;
  *(undefined *)(unaff_EDI + 0x42) = 0;
  *(undefined *)(unaff_EDI + 0x43) = 0;
  return;
}



void FUN_007e20af(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined4 *unaff_ESI;
  
  pvVar1 = operator_new(0x44);
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_007e2052(param_2);
  }
  *unaff_ESI = uVar2;
  FUN_007e2266(0);
  return;
}



void FUN_007e20e8(undefined4 param_1,int *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined local_47 [63];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  cVar1 = (**(code **)(*param_2 + 0x28))();
  _memset(local_47,0,0x3f);
  if (cVar1 != '\0') {
    cVar1 = (**(code **)(*param_2 + 0xc))();
    if (cVar1 != '\0') {
      puVar2 = (undefined4 *)FUN_007e20af();
      *puVar2 = 0;
      FUN_007e21d6();
      goto LAB_007e2183;
    }
  }
  puVar2 = (undefined4 *)FUN_007e220e();
  *puVar2 = 0;
  FUN_007e21d6();
LAB_007e2183:
  FUN_007e2266();
  FUN_00b92490();
  ___security_check_cookie_4();
  return;
}



void FUN_007e21b9(void)

{
  int iVar1;
  int unaff_EBX;
  int *unaff_EDI;
  
  iVar1 = *unaff_EDI;
  if ((unaff_EBX != iVar1) && (iVar1 != 0)) {
    FUN_007e2241();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  *unaff_EDI = unaff_EBX;
  return;
}



void FUN_007e21d6(void)

{
  undefined4 param_1;
  
  param_1 = 0;
  FUN_007e21b9();
  return;
}



void FUN_007e21ef(void)

{
  void *unaff_ESI;
  
  _memset(unaff_ESI,0,0x40);
  *(undefined *)((int)unaff_ESI + 0x40) = 0;
  *(undefined *)((int)unaff_ESI + 0x41) = 0;
  *(undefined *)((int)unaff_ESI + 0x42) = 0;
  *(undefined *)((int)unaff_ESI + 0x43) = 0;
  return;
}



void FUN_007e220e(void)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined4 *unaff_EDI;
  
  pvVar1 = operator_new(0x44);
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_007e21ef();
  }
  *unaff_EDI = uVar2;
  FUN_007e2266(0);
  return;
}



void FUN_007e2241(void)

{
  FUN_00b92490();
  return;
}



void FUN_007e2266(void)

{
  int iVar1;
  int *in_EAX;
  
  iVar1 = *in_EAX;
  if (iVar1 != 0) {
    FUN_007e2241();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_007e227d(int *param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  
  *param_1 = 0;
  cVar2 = (**(code **)(*param_1_00 + 0x24))(param_1_00 + 5,param_1_00[7],param_1_00[8]);
  if ((cVar2 != '\0') &&
     (cVar2 = (**(code **)(*param_1_00 + 0x28))(param_1,param_1_00[5],param_2,param_3),
     cVar2 != '\0')) {
    return param_1;
  }
  puVar3 = (undefined4 *)FUN_007e220e();
  uVar1 = *puVar3;
  *puVar3 = 0;
  FUN_007e21d6(uVar1);
  FUN_007e2266();
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_007e22ed(int param_1)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  bool bVar5;
  int *local_188;
  int *local_170;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_34 [24];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x178;
  local_8 = 0x7e22fc;
  bVar5 = *(int *)(param_1 + 0x14) == 0;
  if (bVar5) {
    FUN_00b940e0();
  }
  FUN_00b70210();
  local_8 = 0;
  if (!bVar5) {
    FUN_00ba8bdd();
    piVar1 = (int *)*local_170;
    do {
      if (local_188 == (int *)0x0) {
        FUN_00a3fb10();
      }
      if (piVar1 == local_170) break;
      local_1c = 0xf;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
                (local_34,0);
      local_8 = CONCAT31(local_8._1_3_,2);
      iVar4 = 0x10;
      do {
        uVar3 = FUN_00b6ff00();
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                  (local_34,1,(char)((ulonglong)(uVar3 & 0xff) % 10) + '0');
        iVar4 = iVar4 + -1;
      } while (iVar4 != 0);
      if (local_188 == (int *)0x0) {
        FUN_00a3fb10();
        iVar4 = 0;
      }
      else {
        iVar4 = *local_188;
      }
      if (piVar1 == (int *)*(int *)(iVar4 + 0x18)) {
        FUN_00a3fb10();
      }
      cVar2 = FUN_00b9f02d();
      if (cVar2 == '\0') {
        FUN_00b940e0();
      }
      FUN_00794e17();
      FUN_004017b2();
    } while (cVar2 != '\0');
    local_8 = local_8 & 0xffffff00;
    FUN_007fde36();
  }
  local_8 = 0xffffffff;
  FUN_00b70030();
  FUN_00a421fb();
  return;
}



void __thiscall FUN_007e2489(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x11) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



char FUN_007e25c3(void)

{
  char cVar1;
  int *in_EAX;
  int *unaff_ESI;
  undefined4 uVar2;
  
  cVar1 = (**(code **)(*in_EAX + 4))();
  if (cVar1 == '\0') {
    uVar2 = 0xa615e226;
  }
  else {
    cVar1 = (**(code **)(*unaff_ESI + 4))();
    if (cVar1 == '\0') {
      uVar2 = 0x8698a0fe;
    }
    else {
      cVar1 = FUN_00b62428();
      if (cVar1 == '\0') {
        uVar2 = 0x623a8c44;
      }
      else {
        cVar1 = (**(code **)(*unaff_ESI + 8))();
        if (cVar1 == '\0') {
          uVar2 = 0xbbf7302c;
        }
        else {
          cVar1 = (**(code **)(*in_EAX + 8))();
          if (cVar1 != '\0') {
            return cVar1;
          }
          uVar2 = 0xb3a7843c;
        }
      }
    }
  }
  FUN_00b940e0(uVar2);
  return '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e278b(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7e2797;
  local_18 = &local_38;
  local_38 = 0x5022;
  local_34 = 0x48;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e27f0(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7e27fc;
  local_18 = &local_38;
  local_38 = 0x5022;
  local_34 = 0x51;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e28fc(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  uint local_38 [5];
  undefined local_24 [12];
  uint *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7e2908;
  local_18 = local_38;
  local_38[0] = 0;
  iVar1 = FUN_00443a80(local_24,param_2,0);
  local_8 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e29a3(void)

{
  undefined4 *puVar1;
  undefined4 local_40;
  undefined4 local_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7e29af;
  local_18 = &local_40;
  local_40 = 0x5022;
  local_3c = 0xb2;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_8 = 0;
  local_40 = *puVar1;
  local_18 = &local_40;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e2a43(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7e2a4f;
  local_18 = &local_38;
  local_38 = 0x5022;
  local_34 = 0xb3;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e2aa8(undefined4 param_1,undefined param_2)

{
  int iVar1;
  undefined local_24 [28];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x7e2ab4;
  iVar1 = FUN_0046b0e8(local_24,param_2,0);
  local_8 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e2b4d(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7e2b59;
  local_18 = &local_38;
  local_38 = 0x5022;
  local_34 = 0xb6;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e2bb2(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7e2bbe;
  local_18 = &local_38;
  local_38 = 0x5022;
  local_34 = 0xb7;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e2c17(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7e2c23;
  local_18 = &local_38;
  local_38 = 0x5022;
  local_34 = 0xe8;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e2c7c(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7e2c88;
  local_18 = &local_38;
  local_38 = 0xa0c;
  local_34 = 0x11e;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e2d46(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7e2d52;
  local_18 = &local_38;
  local_38 = 0x5022;
  local_34 = 0x109;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e2dab(void)

{
  undefined4 *puVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x7e2db7;
  local_18 = &local_38;
  local_38 = 0x5022;
  local_34 = 0x110;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_8 = 0;
  local_38 = *puVar1;
  local_18 = &local_38;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e2e75(void)

{
  undefined4 *puVar1;
  undefined4 local_40;
  undefined4 local_3c;
  undefined local_28 [16];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x7e2e81;
  local_18 = &local_40;
  local_40 = 0x5022;
  local_3c = 0xfb;
  puVar1 = (undefined4 *)FUN_00465be3(local_28);
  local_8 = 0;
  local_40 = *puVar1;
  local_18 = &local_40;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e34ff(void)

{
  undefined4 *puVar1;
  undefined4 local_54;
  undefined4 local_50;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x7e350b;
  local_14 = 0;
  local_50 = 0x7e3517;
  FUN_007e3c58();
  local_18 = &local_54;
  local_8 = 1;
  local_54 = 0xa0c;
  local_50 = 0xda;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_18 = &local_54;
  local_8 = CONCAT31(local_8._1_3_,2);
  local_54 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007e3853(void)

{
  undefined4 *puVar1;
  undefined4 local_78;
  undefined4 local_74;
  undefined4 uStack_70;
  undefined4 uStack_6c;
  undefined local_20 [8];
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7e385f;
  local_14 = 0;
  uStack_6c = 0x7e386b;
  uStack_6c = FUN_007e3e3e();
  local_8 = 1;
  uStack_70 = 0x7e387a;
  uStack_70 = FUN_007e3ded();
  local_18 = &local_78;
  local_8._0_1_ = 2;
  local_78 = 0xa0c;
  local_74 = 0x138;
  puVar1 = (undefined4 *)FUN_00465be3(local_20);
  local_18 = &local_78;
  local_8 = CONCAT31(local_8._1_3_,3);
  local_78 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_007e3c58(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7e3c64;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00dd8b88,6);
  local_8 = 0;
  local_18 = 0xe1d0909b;
  local_14 = 0xcabb1c50;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_007e3ded(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7e3df9;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00dd8be8,6);
  local_8 = 0;
  local_18 = 0xad2cdeab;
  local_14 = 0x4a4cd9e5;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_007e3e3e(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7e3e4a;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00dd8bf8,7);
  local_8 = 0;
  local_18 = 0x26a30213;
  local_14 = 0x44b8b65b;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007e3f7e(undefined4 *param_1)

{
  *param_1 = W76AFA8BF::W727C087E::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  *(undefined *)(param_1 + 3) = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4));
  FUN_007cc480(param_1 + 0xb);
  return param_1;
}



// public: static struct boost::archive::detail::extra_detail::guid_initializer<class
// W76AFA8BF::W727C087E> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class W76AFA8BF::W727C087E>
// >::get_mutable_instance(void)

guid_initializer<class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>_>
::get_mutable_instance(void)

{
                    // 0x3e3fc0  1042
                    // ?get_mutable_instance@?$singleton@U?$guid_initializer@VW727C087E@W76AFA8BF@@@extra_detail@detail@archive@boost@@@serialization@boost@@SAAAU?$guid_initializer@VW727C087E@W76AFA8BF@@@extra_detail@detail@archive@3@XZ
  if ((`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c752b1);
  }
  return (guid_initializer<class_W76AFA8BF::W727C087E> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// private: static struct boost::archive::detail::extra_detail::guid_initializer<class
// W76AFA8BF::W727C087E> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class W76AFA8BF::W727C087E>
// >::get_instance(void)

guid_initializer<class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>_>
::get_instance(void)

{
                    // 0x3e3fc5  722
                    // ?get_instance@?$singleton@U?$guid_initializer@VW727C087E@W76AFA8BF@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAU?$guid_initializer@VW727C087E@W76AFA8BF@@@extra_detail@detail@archive@3@XZ
  if ((`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c752b1);
  }
  return (guid_initializer<class_W76AFA8BF::W727C087E> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::W727C087E> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::W727C087E> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>
::get_const_instance(void)

{
                    // 0x3e3fe6  680
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3e3fe6  1463
                    // ?instantiate@?$ptr_serialization_support@Vbinary_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e40fe();
    _atexit((_func_4879 *)&LAB_00c752fb);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::W727C087E> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::W727C087E> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>
::get_const_instance(void)

{
                    // 0x3e3feb  643
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3e3feb  1454
                    // ?instantiate@?$ptr_serialization_support@Vbinary_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e4152();
    _atexit((_func_4879 *)&LAB_00c752e5);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::W727C087E> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::W727C087E> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>
::get_const_instance(void)

{
                    // 0x3e3ff0  575
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3e3ff0  1106
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>::
    oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>
              ((oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75362);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::W727C087E> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::W727C087E> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W76AFA8BF::W727C087E> *peVar1;
  
                    // 0x3e3ff5  487
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3e3ff5  1061
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75347);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::W727C087E> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::W727C087E> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>
::get_const_instance(void)

{
                    // 0x3e3ffa  695
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3e3ffa  1481
                    // ?instantiate@?$ptr_serialization_support@Vxml_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e41a6();
    _atexit((_func_4879 *)&LAB_00c752cf);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W76AFA8BF::W727C087E> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W76AFA8BF::W727C087E> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>
::get_const_instance(void)

{
                    // 0x3e3fff  612
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3e3fff  1121
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>::
    oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>
              ((oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7532c);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::W727C087E> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::W727C087E> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>
::get_const_instance(void)

{
                    // 0x3e4004  665
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3e4004  1472
                    // ?instantiate@?$ptr_serialization_support@Vxml_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e41fa();
    _atexit((_func_4879 *)&LAB_00c752b9);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::W727C087E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::W727C087E> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>
::get_instance(void)

{
                    // 0x3e4009  1000
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e40fe();
    _atexit((_func_4879 *)&LAB_00c752fb);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::W727C087E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::W727C087E> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>
::get_instance(void)

{
                    // 0x3e4045  963
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e4152();
    _atexit((_func_4879 *)&LAB_00c752e5);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::W727C087E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::W727C087E> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>
::get_instance(void)

{
                    // 0x3e4081  1015
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e41a6();
    _atexit((_func_4879 *)&LAB_00c752cf);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::W727C087E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::W727C087E> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>
::get_instance(void)

{
                    // 0x3e40bd  985
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e41fa();
    _atexit((_func_4879 *)&LAB_00c752b9);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W76AFA8BF::W727C087E> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W76AFA8BF::W727C087E> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W76AFA8BF::W727C087E> *peVar1;
  
                    // 0x3e40f9  532
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3e40f9  1083
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75311);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>
* FUN_007e40fe(void)

{
  extended_type_info_typeid<class_W76AFA8BF::W727C087E> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>::
       vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032f0154);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>
* FUN_007e4152(void)

{
  extended_type_info_typeid<class_W76AFA8BF::W727C087E> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>::
       vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f014c);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>
* FUN_007e41a6(void)

{
  extended_type_info_typeid<class_W76AFA8BF::W727C087E> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032f0144);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>
* FUN_007e41fa(void)

{
  extended_type_info_typeid<class_W76AFA8BF::W727C087E> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f013c);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e424e(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e4270(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e4292(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e42b4(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::W727C087E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::W727C087E> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>
::get_instance(void)

{
                    // 0x3e42d6  895
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>::
    oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>
              ((oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75362);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::W727C087E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::W727C087E> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W76AFA8BF::W727C087E> *peVar1;
  
                    // 0x3e4320  807
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75347);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::W727C087E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::W727C087E> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>
::get_instance(void)

{
                    // 0x3e4370  932
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>::
    oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>
              ((oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7532c);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::W727C087E> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::W727C087E> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W76AFA8BF::W727C087E> *peVar1;
  
                    // 0x3e43ba  852
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75311);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e440a(undefined4 *param_1_00,byte param_1)

{
  DAT_032effd5 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e4433(undefined4 *param_1_00,byte param_1)

{
  DAT_032effd6 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e445c(undefined4 *param_1_00,byte param_1)

{
  DAT_032effd7 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e4485(undefined4 *param_1_00,byte param_1)

{
  DAT_032effd8 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::W727C087E>::oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::W727C087E>(void)

oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>::
oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>
          (oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> *this)

{
  extended_type_info_typeid<class_W76AFA8BF::W727C087E> *peVar1;
  
                    // 0x3e44ae  33
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W76AFA8BF::W727C087E>::oserializer<class boost::archive::xml_oarchive,class
// W76AFA8BF::W727C087E>(void)

oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>::
oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>
          (oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> *this)

{
  extended_type_info_typeid<class_W76AFA8BF::W727C087E> *peVar1;
  
                    // 0x3e44c8  70
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W76AFA8BF::W727C087E>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W76AFA8BF::W727C087E>
// >::get_const_instance(void)

extended_type_info_typeid<class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>::
get_const_instance(void)

{
                    // 0x3e44e2  444
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW727C087E@W76AFA8BF@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW727C087E@W76AFA8BF@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e4523();
    _atexit((_func_4879 *)&LAB_00c7537d);
  }
  return (extended_type_info_typeid<class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W76AFA8BF::W727C087E>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W76AFA8BF::W727C087E> >::get_instance(void)

extended_type_info_typeid<class_W76AFA8BF::W727C087E> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>::
get_instance(void)

{
                    // 0x3e44e7  764
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW727C087E@W76AFA8BF@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW727C087E@W76AFA8BF@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e4523();
    _atexit((_func_4879 *)&LAB_00c7537d);
  }
  return (extended_type_info_typeid<class_W76AFA8BF::W727C087E> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>
* FUN_007e4523(void)

{
  FUN_008308e0("75C2FBEA-234D-0573-7AF2-C9C5A2FDE227");
  _t = boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>::vftable;
  FUN_00830c60(&W76AFA8BF::W727C087E::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e4576(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::W727C087E>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>::
save_object_ptr(pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>
                *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> *poVar1;
  
                    // 0x3e45b7  1704
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  FUN_00830550(param_2,poVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e4601(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>::
       vftable;
  FUN_00833f40(&DAT_032f0154);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::W727C087E>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>::
load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>
                *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3e463f  1596
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7e464b;
  pvVar1 = operator_new(0x1b4);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007e49a7(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007e486a();
  return;
}



void Catch_All_007e46ad(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e46ba(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>::
       vftable;
  FUN_008347f0(&DAT_032f014c);
  FUN_00833fa0();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::W727C087E>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x3e46f8  1719
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_007e48b9(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e471a(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>::vftable;
  FUN_0082df80(&DAT_032f0144);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::W727C087E>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3e4758  1618
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7e4764;
  pvVar1 = operator_new(0x1b4);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007e49a7(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007e4930(param_1 + 9);
  return;
}



void Catch_All_007e47c7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e47d4(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>::vftable;
  FUN_0082bbc0(&DAT_032f013c);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::W727C087E>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>::save_object_data
          (oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> *this,
          basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E> *local_8;
  
                    // 0x3e4812  1643
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007e49cd();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::W727C087E>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>::load_object_data
          (iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3e482e  1519
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007e4ab6();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::W727C087E>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> *this,
                basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> *local_8;
  
                    // 0x3e483e  1680
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007e4bae();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::W727C087E>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3e485a  1564
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW727C087E@W76AFA8BF@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007e4c89();
  return;
}



int __fastcall FUN_007e486a(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



int FUN_007e48b9(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_007e4930(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007e49a7(int param_1)

{
  if (param_1 != 0) {
    FUN_007e3f7e(param_1);
  }
  return;
}



void FUN_007e49cd(void)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
  *poVar3;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  FUN_007bcc2f();
  poVar3 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
           ::get_instance();
  FUN_00830550(in_EAX + 4,poVar3);
  FUN_007e4d6d();
  FUN_007cc83e();
  FUN_007bdcaa();
  return;
}



void FUN_007e4ab6(void)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
  *piVar3;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  FUN_007bcc7e();
  piVar3 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
           ::get_instance();
  FUN_00832bd0(in_EAX + 4,piVar3);
  FUN_007cdae5();
  FUN_007cc83e();
  FUN_007bdce8();
  return;
}



void __fastcall FUN_007e4bae(int param_1)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  int iStack_10;
  int iStack_c;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  if (*(uint *)(in_EAX + 0x44) < 0x10) {
    iStack_10 = in_EAX + 0x30;
  }
  else {
    iStack_10 = *(int *)(in_EAX + 0x30);
  }
  FUN_007bdc74(&iStack_10);
  if (*(uint *)(in_EAX + 0xd0) < 0x10) {
    iStack_10 = in_EAX + 0xbc;
  }
  else {
    iStack_10 = *(int *)(in_EAX + 0xbc);
  }
  iStack_c = in_EAX + 4;
  if (param_1 == -9) {
    param_1 = 0;
  }
  FUN_007e4e18(param_1 + 9);
  if (*(uint *)(in_EAX + 0x60) < 0x10) {
    iStack_10 = in_EAX + 0x4c;
  }
  else {
    iStack_10 = *(int *)(in_EAX + 0x4c);
  }
  iStack_c = in_EAX + 0xc;
  FUN_007e4dad();
  iStack_10 = FUN_007cc83e();
  iStack_c = in_EAX + 0x10;
  FUN_004414fa(&iStack_10);
  return;
}



void __fastcall FUN_007e4c89(int param_1)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  int iStack_10;
  int iStack_c;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::W727C087E>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  if (*(uint *)(in_EAX + 0x44) < 0x10) {
    iStack_10 = in_EAX + 0x30;
  }
  else {
    iStack_10 = *(int *)(in_EAX + 0x30);
  }
  FUN_007bdc8f(&iStack_10);
  if (*(uint *)(in_EAX + 0xd0) < 0x10) {
    iStack_10 = in_EAX + 0xbc;
  }
  else {
    iStack_10 = *(int *)(in_EAX + 0xbc);
  }
  iStack_c = in_EAX + 4;
  if (param_1 == -9) {
    param_1 = 0;
  }
  FUN_007e4e8f(param_1 + 9);
  if (*(uint *)(in_EAX + 0x60) < 0x10) {
    iStack_10 = in_EAX + 0x4c;
  }
  else {
    iStack_10 = *(int *)(in_EAX + 0x4c);
  }
  iStack_c = in_EAX + 0xc;
  FUN_00495923();
  iStack_10 = FUN_007cc83e();
  iStack_c = in_EAX + 0x10;
  FUN_00441643();
  return;
}



int __fastcall FUN_007e4d6d(int param_1)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_007cdbc2(*(undefined4 *)(param_1 + 4));
  if (iVar1 != -9) {
    return iVar1;
  }
  return 0;
}



int __fastcall FUN_007e4dad(undefined4 *param_1)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_0082dd50(*param_1);
  FUN_0049589a(param_1[1]);
  FUN_0082de20(*param_1);
  if (iVar1 == -9) {
    iVar1 = 0;
  }
  return iVar1;
}



int FUN_007e4e18(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
  *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_007e4e8f(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// class boost::serialization::void_cast_detail::void_caster const & __cdecl
// boost::serialization::void_cast_register<class W76AFA8BF::W727C087E,class
// W3CA43D38::WF45DE894>(class W76AFA8BF::W727C087E const *,class W3CA43D38::WF45DE894 const *)

void_caster * __cdecl
boost::serialization::void_cast_register<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>
          (W727C087E *param_1,WF45DE894 *param_2)

{
                    // 0x3e4f06  11
                    // ??$void_cast_register@VW727C087E@W76AFA8BF@@VWF45DE894@W3CA43D38@@@serialization@boost@@YAABVvoid_caster@void_cast_detail@01@PBVW727C087E@W76AFA8BF@@PBVWF45DE894@W3CA43D38@@@Z
                    // 0x3e4f06  713
                    // ?get_const_instance@?$singleton@V?$void_caster_primitive@VW727C087E@W76AFA8BF@@VWF45DE894@W3CA43D38@@@void_cast_detail@serialization@boost@@@serialization@boost@@SAABV?$void_caster_primitive@VW727C087E@W76AFA8BF@@VWF45DE894@W3CA43D38@@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e4f64();
    _atexit((_func_4879 *)&LAB_00c75393);
  }
  return (void_caster *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007e4f0b(undefined4 param_1)

{
  ___RTDynamicCast(param_1,0,&W3CA43D38::WF45DE894::RTTI_Type_Descriptor,
                   &W76AFA8BF::W727C087E::RTTI_Type_Descriptor,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::void_cast_detail::void_caster_primitive<class
// W76AFA8BF::W727C087E,class W3CA43D38::WF45DE894> & __cdecl boost::serialization::singleton<class
// boost::serialization::void_cast_detail::void_caster_primitive<class W76AFA8BF::W727C087E,class
// W3CA43D38::WF45DE894> >::get_instance(void)

void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>
::get_instance(void)

{
                    // 0x3e4f28  1033
                    // ?get_instance@?$singleton@V?$void_caster_primitive@VW727C087E@W76AFA8BF@@VWF45DE894@W3CA43D38@@@void_cast_detail@serialization@boost@@@serialization@boost@@CAAAV?$void_caster_primitive@VW727C087E@W76AFA8BF@@VWF45DE894@W3CA43D38@@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e4f64();
    _atexit((_func_4879 *)&LAB_00c75393);
  }
  return (void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>
* FUN_007e4f64(void)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  _DAT_032f0e1c =
       boost::serialization::
       singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::W727C087E>_>
       ::get_instance();
  _DAT_032f0e24 = 0;
  _DAT_032f0e28 = 0;
  _t = boost::serialization::void_cast_detail::
       void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>::vftable;
  _DAT_032f0e20 = peVar1;
  FUN_0083ddb0(0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e4fc2(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::detail::
                singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>_>
                ::vftable;
  DAT_032effda = 1;
  FUN_007e4fed();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007e4fed(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::
             void_caster_primitive<class_W76AFA8BF::W727C087E,class_W3CA43D38::WF45DE894>::vftable;
  FUN_0083e150();
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 __thiscall FUN_007e5019(undefined4 param_1_00,byte param_1)

{
  FUN_007e4fed();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::shared_ptr<class W71DA37B9::W64105C87> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> >
// >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
          ::get_const_instance(void)

{
                    // 0x3e5035  588
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c753ae);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e503a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> >
// >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
          ::get_instance(void)

{
                    // 0x3e505c  908
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c753ae);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e50a6(undefined4 *param_1_00,byte param_1)

{
  DAT_032effdb = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::shared_ptr<class W71DA37B9::W64105C87> >::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> >(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
          (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
           *this)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> *peVar1;
  
                    // 0x3e50cf  46
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W71DA37B9::W64105C87> > const & __cdecl
// boost::serialization::singleton<class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W71DA37B9::W64105C87> > >::get_const_instance(void)

extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
::get_const_instance(void)

{
                    // 0x3e50e9  413
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$shared_ptr@VW64105C87@W71DA37B9@@@boost@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$shared_ptr@VW64105C87@W71DA37B9@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e512a();
    _atexit((_func_4879 *)&LAB_00c753c9);
  }
  return (extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W71DA37B9::W64105C87> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::shared_ptr<class
// W71DA37B9::W64105C87> > >::get_instance(void)

extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
::get_instance(void)

{
                    // 0x3e50ee  733
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$shared_ptr@VW64105C87@W71DA37B9@@@boost@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$shared_ptr@VW64105C87@W71DA37B9@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e512a();
    _atexit((_func_4879 *)&LAB_00c753c9);
  }
  return (extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
* FUN_007e512a(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>::vftable;
  FUN_00830c60(&boost::shared_ptr<class_W71DA37B9::W64105C87>::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e517a(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W64105C87>
// >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
::save_object_data(oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  undefined *puVar1;
  undefined local_8 [4];
  
                    // 0x3e51bb  1656
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  puVar1 = local_8;
  (**(code **)(*(int *)this + 0xc))(puVar1);
                    // WARNING: Load size is inaccurate
  param_2 = *param_2;
  FUN_007e53f2(puVar1,&DAT_03058be0,&param_2);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::shared_ptr<class W71DA37B9::W64105C87> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> >
// >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> *peVar1;
  
                    // 0x3e51fa  501
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c753df);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e51ff(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> >
// >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> *peVar1;
  
                    // 0x3e5221  821
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c753df);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e5271(undefined4 *param_1_00,byte param_1)

{
  DAT_032effdd = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W64105C87>
// >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
::load_object_data(iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3e529a  1533
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007e52b0(param_2,param_3);
  return;
}



void __thiscall FUN_007e52b0(undefined *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined *local_2c;
  undefined ***pppuStack_28;
  undefined *local_24;
  undefined *local_20;
  undefined **local_1c [2];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c1c00a;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if (param_2 == 0) {
    puVar2 = (undefined4 *)
             boost::serialization::
             singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    local_2c = param_1_00;
    if (param_1_00 + 9 == (undefined *)0x0) {
      local_2c = (undefined *)0x0;
    }
    uVar3 = (**(code **)*puVar2)(uVar1);
    FUN_00832c10(uVar3);
    local_20 = (undefined *)0x0;
    local_1c[0] = (undefined **)0x0;
    uStack_c = 0;
    pppuStack_28 = (undefined ***)&local_20;
    local_2c = &DAT_03058be0;
    FUN_007e546e(&local_2c);
    pppuStack_28 = local_1c;
    local_2c = &DAT_03058be4;
    FUN_007ba9fd(param_1_00 + 9);
    local_2c = local_20;
    FUN_007bceec(local_1c);
    uStack_c._0_1_ = 1;
    FUN_0082c9b0(&local_2c);
    uStack_c = (uint)uStack_c._1_3_ << 8;
    if (pppuStack_28 != (undefined ***)0x0) {
      FUN_007bcf4f();
    }
    uStack_c = 0xffffffff;
    local_24 = local_20;
    if (local_1c[0] != (undefined **)0x0) {
      FUN_007bcf4f();
    }
  }
  else {
    local_1c[0] = &local_24;
    local_20 = &DAT_03058be0;
    FUN_007e546e(&local_20);
  }
  FUN_007e5490(param_1_00 + 0x34);
  ExceptionList = local_14;
  return;
}



void FUN_007e53e5(void)

{
  int in_EAX;
  
  if (*(int *)(in_EAX + 4) != 0) {
    FUN_007bcf4f();
    return;
  }
  return;
}



void __fastcall FUN_007e53f2(int *param_1)

{
  int iVar1;
  undefined4 *in_EAX;
  undefined2 extraout_var;
  
  FUN_0082dd50(*in_EAX);
  if (param_1 == (int *)0xfffffff7) {
    param_1 = (int *)0x0;
  }
  iVar1 = *(int *)in_EAX[1];
  FUN_007e5d24();
  if (iVar1 == 0) {
    (**(code **)(*param_1 + 0x10))(CONCAT22(extraout_var,0xffff));
    FUN_0082d4f0();
  }
  else {
    FUN_007e5bb5(param_1,iVar1);
  }
  FUN_0082de20(*in_EAX);
  return;
}



int FUN_007e546e(undefined4 param_1)

{
  int iVar1;
  int unaff_ESI;
  
  FUN_007e5a05(param_1);
  if (unaff_ESI == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_ESI + -9;
  }
  return iVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007e5490(int param_1,int param_2)

{
  int *piVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined local_30 [4];
  int local_2c;
  int local_28;
  undefined local_24 [4];
  int local_20;
  undefined4 local_18;
  extended_type_info_typeid<class_W71DA37B9::W64105C87> *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb8;
  local_8 = 0x7e549f;
  if (param_1 == 0) {
    local_18 = 0;
    local_14 = (extended_type_info_typeid<class_W71DA37B9::W64105C87> *)0x0;
    FUN_0046f668();
    if (local_14 != (extended_type_info_typeid<class_W71DA37B9::W64105C87> *)0x0) {
      FUN_0040127a();
    }
    return;
  }
  piVar1 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
                  ::get_instance();
  local_14 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
             ::get_instance();
  uVar2 = ___RTtypeid(param_1);
  iVar3 = FUN_00830d80(uVar2);
  local_14 = (extended_type_info_typeid<class_W71DA37B9::W64105C87> *)iVar3;
  if (iVar3 == 0) {
    uVar4 = 1;
    uVar2 = (**(code **)(*piVar1 + 8))(0,1);
    uVar2 = FUN_00832e60(2,uVar2,iVar3,uVar4);
    local_8 = 0;
    iVar3 = FUN_0043fc7f(uVar2);
  }
  FUN_0082cad0(&local_28,param_1,iVar3,piVar1);
  local_8 = 1;
  if (local_28 == 0) {
    FUN_00502b3b(local_30);
    FUN_0046f668();
    if (local_2c != 0) {
      FUN_0040127a();
    }
    local_20 = FUN_0083e330(local_14,piVar1,param_1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 4);
  }
  local_20 = local_28;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_24);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3e55b4  651
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e563b();
    _atexit((_func_4879 *)&LAB_00c75410);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W64105C87 *,struct
// boost::serialization::null_deleter> > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W64105C87 *,struct
// boost::serialization::null_deleter> > >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3e55b9  508
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
                    // 0x3e55b9  1069
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75426);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W71DA37B9::W64105C87>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W71DA37B9::W64105C87>
// >::get_const_instance(void)

extended_type_info_typeid<class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>::
get_const_instance(void)

{
                    // 0x3e55be  442
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW64105C87@W71DA37B9@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW64105C87@W71DA37B9@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e568f();
    _atexit((_func_4879 *)&LAB_00c753fa);
  }
  return (extended_type_info_typeid<class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> > >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3e55c3  971
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e563b();
    _atexit((_func_4879 *)&LAB_00c75410);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W71DA37B9::W64105C87>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W71DA37B9::W64105C87> >::get_instance(void)

extended_type_info_typeid<class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>::
get_instance(void)

{
                    // 0x3e55ff  762
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW64105C87@W71DA37B9@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW64105C87@W71DA37B9@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e568f();
    _atexit((_func_4879 *)&LAB_00c753fa);
  }
  return (extended_type_info_typeid<class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
* FUN_007e563b(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f0134);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
* FUN_007e568f(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>::vftable;
  FUN_00830c60(&W71DA37B9::W64105C87::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e56df(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e5701(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> > >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3e5742  828
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75426);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e5792(undefined4 *param_1_00,byte param_1)

{
  DAT_032effe0 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W64105C87 *,struct
// boost::serialization::null_deleter> > const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W64105C87 *,struct
// boost::serialization::null_deleter> > >::get_const_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3e57bb  420
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e57fc();
    _atexit((_func_4879 *)&LAB_00c75441);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W64105C87 *,struct
// boost::serialization::null_deleter> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W64105C87 *,struct
// boost::serialization::null_deleter> > >::get_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3e57c0  740
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e57fc();
    _atexit((_func_4879 *)&LAB_00c75441);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
* FUN_007e57fc(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_00830c60(&boost_132::detail::
                sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>
                ::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e584c(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> >::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
::load_object_ptr(pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
                  *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3e588d  1604
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7e5899;
  pvVar1 = operator_new(0x2c);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007e594c();
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007e598e(param_1 + 9);
  return;
}



void Catch_All_007e58f9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e5906(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_0082bbc0(&DAT_032f0134);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> >::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3e5944  1502
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
                    // 0x3e5944  1540
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
  ::get_instance();
  return;
}



void FUN_007e594c(void)

{
  undefined4 *unaff_EDI;
  undefined *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = &local_8;
  local_10 = &DAT_03058be8;
  FUN_007e546e(&local_10);
  if (unaff_EDI != (undefined4 *)0x0) {
    FUN_007bceb5();
    unaff_EDI[9] = local_8;
    *unaff_EDI = boost_132::detail::
                 sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost_132::serialization::detail::null_deleter>
                 ::vftable;
  }
  unaff_EDI[1] = 0;
  return;
}



int FUN_007e598e(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007e5a05(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  extended_type_info_typeid<class_W71DA37B9::W64105C87> *peVar6;
  
  FUN_0082ace0(*param_1);
  puVar1 = (undefined4 *)param_1[1];
  puVar3 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>
           ::get_instance();
  uVar4 = (**(code **)*puVar3)();
  FUN_00832c10(uVar4);
  puVar5 = (undefined4 *)FUN_00832bf0(puVar1,puVar3,&LAB_007bb703);
  if (puVar5 != puVar3) {
    uVar4 = puVar5[1];
    uVar2 = *puVar1;
    peVar6 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
             ::get_instance();
    uVar4 = FUN_0083e220(uVar4,peVar6,uVar2);
    *puVar1 = uVar4;
  }
  FUN_0082af90(*param_1);
  return;
}



uint __thiscall FUN_007e5aaf(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost_132::serialization::detail::null_deleter::RTTI_Type_Descriptor);
  return -(uint)bVar1 & param_1_00 + 0x28U;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// class boost::serialization::void_cast_detail::void_caster const & __cdecl
// boost::serialization::void_cast_register<class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter>,class
// boost_132::detail::sp_counted_base>(class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> const *,class
// boost_132::detail::sp_counted_base const *)

void_caster * __cdecl
boost::serialization::
void_cast_register<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
          (sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>
           *param_1,sp_counted_base *param_2)

{
                    // 0x3e5ad0  2
                    // ??$void_cast_register@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@serialization@boost@@YAABVvoid_caster@void_cast_detail@01@PBV?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@PBVsp_counted_base@56@@Z
                    // 0x3e5ad0  704
                    // ?get_const_instance@?$singleton@V?$void_caster_primitive@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@serialization@boost@@@serialization@boost@@SAABV?$void_caster_primitive@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e5b2e();
    _atexit((_func_4879 *)&LAB_00c75457);
  }
  return (void_caster *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007e5ad5(undefined4 param_1)

{
  ___RTDynamicCast(param_1,0,&boost_132::detail::sp_counted_base::RTTI_Type_Descriptor,
                   &boost_132::detail::
                    sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>
                    ::RTTI_Type_Descriptor,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::void_cast_detail::void_caster_primitive<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W64105C87 *,struct
// boost::serialization::null_deleter>,class boost_132::detail::sp_counted_base> & __cdecl
// boost::serialization::singleton<class
// boost::serialization::void_cast_detail::void_caster_primitive<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W64105C87 *,struct
// boost::serialization::null_deleter>,class boost_132::detail::sp_counted_base>
// >::get_instance(void)

void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
          ::get_instance(void)

{
                    // 0x3e5af2  1024
                    // ?get_instance@?$singleton@V?$void_caster_primitive@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@serialization@boost@@@serialization@boost@@CAAAV?$void_caster_primitive@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e5b2e();
    _atexit((_func_4879 *)&LAB_00c75457);
  }
  return (void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
          *)&`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
* FUN_007e5b2e(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>
           ::get_instance();
  _DAT_032f0df0 =
       boost::serialization::
       singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
       ::get_instance();
  _DAT_032f0df8 = 0;
  _DAT_032f0dfc = 0;
  _t = boost::serialization::void_cast_detail::
       void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
       ::vftable;
  _DAT_032f0df4 = peVar1;
  FUN_0083ddb0(0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e5b8c(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::detail::
                singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
                ::vftable;
  DAT_032effe2 = 1;
  FUN_007e5cdc();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007e5bb5(undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2016e;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  piVar3 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
                  ::get_instance();
  uVar4 = ___RTtypeid(param_2,uVar2);
  piVar5 = (int *)FUN_00830d80(uVar4);
  if (piVar5 != (int *)0x0) goto LAB_007e5c25;
  uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
  local_c = 0;
  while( true ) {
    FUN_0043fc7f(uVar4);
LAB_007e5c25:
    cVar1 = FUN_00830f50(piVar5);
    if (cVar1 != '\0') break;
    iVar7 = FUN_0083e330(piVar5,piVar3,param_2);
    if (iVar7 == 0) {
      uVar9 = 1;
      uVar4 = (**(code **)(*piVar3 + 8))(1);
      uVar8 = (**(code **)(*piVar5 + 8))(uVar4);
      uVar4 = FUN_00832e60(10,uVar8,uVar4,uVar9);
      local_c = 1;
    }
    else {
      boost::serialization::
      singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>
      ::get_instance();
      iVar6 = FUN_0082dfa0(piVar5);
      if (iVar6 == 0) {
        iVar6 = 0;
      }
      else {
        iVar6 = iVar6 + -4;
      }
      if (iVar6 != 0) goto LAB_007e5cc1;
      piVar5 = (int *)0x2;
      uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
      local_c = 2;
    }
  }
  iVar6 = FUN_007e5d24();
  iVar7 = param_2;
LAB_007e5cc1:
  FUN_00830570(iVar7,iVar6);
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007e5cdc(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::
             void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
             ::vftable;
  FUN_0083e150();
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 __thiscall FUN_007e5d08(undefined4 param_1_00,byte param_1)

{
  FUN_007e5cdc();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_007e5d24(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W64105C87> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W64105C87> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>
::get_const_instance(void)

{
                    // 0x3e5d4d  693
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e5d93();
    _atexit((_func_4879 *)&LAB_00c75472);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W64105C87> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W64105C87> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>
::get_instance(void)

{
                    // 0x3e5d52  1013
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e5d93();
    _atexit((_func_4879 *)&LAB_00c75472);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W64105C87> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W64105C87> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>
::get_const_instance(void)

{
                    // 0x3e5d8e  610
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
                    // 0x3e5d8e  1119
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>::
    oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>
              ((oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75488);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>
* FUN_007e5d93(void)

{
  extended_type_info_typeid<class_W71DA37B9::W64105C87> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032f012c);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e5de7(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W64105C87> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W64105C87> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>
::get_instance(void)

{
                    // 0x3e5e09  930
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>::
    oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>
              ((oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75488);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e5e53(undefined4 *param_1_00,byte param_1)

{
  DAT_032effe4 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W64105C87>::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W64105C87>(void)

oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>::
oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>
          (oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> *this)

{
  extended_type_info_typeid<class_W71DA37B9::W64105C87> *peVar1;
  
                    // 0x3e5e7c  68
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W64105C87>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x3e5e96  1717
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_007e5f41(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e5eb8(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>::vftable;
  FUN_0082df80(&DAT_032f012c);
  FUN_00833b50();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W64105C87>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> *this,
                basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0x3e5ef6  1678
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  if (param_1 == (basic_oarchive *)0xfffffff7) {
    param_1 = (basic_oarchive *)0x0;
  }
  FUN_007e6427(param_1 + 9);
  return;
}



int FUN_007e5f41(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W64105C87>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W64105C87> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W64105C87> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>
::get_const_instance(void)

{
                    // 0x3e5fb8  663
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e60e6();
    _atexit((_func_4879 *)&LAB_00c754d9);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W71DA37B9::W64105C87> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W71DA37B9::W64105C87> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W64105C87> *peVar1;
  
                    // 0x3e5fbd  530
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
                    // 0x3e5fbd  1081
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c754ef);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> > const &
// __cdecl boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> >
// >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
          ::get_const_instance(void)

{
                    // 0x3e5fc2  558
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c754be);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> > const &
// __cdecl boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> >
// >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> *peVar1;
  
                    // 0x3e5fc7  463
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c754a3);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e5fcc(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e5fee(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W64105C87> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W64105C87> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>
::get_instance(void)

{
                    // 0x3e6010  983
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e60e6();
    _atexit((_func_4879 *)&LAB_00c754d9);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> >
// >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
          ::get_instance(void)

{
                    // 0x3e604c  878
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c754be);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W64105C87> >
// >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> *peVar1;
  
                    // 0x3e6096  783
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c754a3);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>
* FUN_007e60e6(void)

{
  extended_type_info_typeid<class_W71DA37B9::W64105C87> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f0124);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e613a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e615c(undefined4 *param_1_00,byte param_1)

{
  DAT_032effe6 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e6185(undefined4 *param_1_00,byte param_1)

{
  DAT_032effe7 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W64105C87>
// >::oserializer<class boost::archive::binary_oarchive,class boost::shared_ptr<class
// W71DA37B9::W64105C87> >(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
          (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
           *this)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_> *peVar1;
  
                    // 0x3e61ae  16
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W64105C87> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W64105C87> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W64105C87> *peVar1;
  
                    // 0x3e61c8  850
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c754ef);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e6218(undefined4 *param_1_00,byte param_1)

{
  DAT_032effe8 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W64105C87>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3e6241  1616
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7e624d;
  pvVar1 = operator_new(0x8c);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007e6401(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007e638a(param_1 + 9);
  return;
}



void Catch_All_007e62b0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e62bd(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>::vftable;
  FUN_0082bbc0(&DAT_032f0124);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W64105C87>
// >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
::save_object_data(oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0x3e62fb  1626
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  FUN_007e65d3();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W64105C87>
// >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W64105C87>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3e6333  1495
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW64105C87@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007e649e(param_2,param_3);
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W64105C87>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3e6349  1562
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  if (param_1 == (basic_iarchive *)0xfffffff7) {
    param_1 = (basic_iarchive *)0x0;
  }
  FUN_007e67a3(param_1 + 9);
  return;
}



int FUN_007e638a(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W64105C87>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007e6401(int param_1)

{
  if (param_1 != 0) {
    FUN_00b673a4(param_1);
  }
  return;
}



int FUN_007e6427(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
  *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void __thiscall FUN_007e649e(undefined *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined *local_2c;
  undefined ***pppuStack_28;
  undefined *local_24;
  undefined *local_20;
  undefined **local_1c [2];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c1c00a;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if (param_2 == 0) {
    puVar2 = (undefined4 *)
             boost::serialization::
             singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    local_2c = param_1_00;
    if (param_1_00 == (undefined *)0xfffffff7) {
      local_2c = (undefined *)0x0;
    }
    uVar3 = (**(code **)*puVar2)();
    FUN_00832c10(uVar3);
    local_20 = (undefined *)0x0;
    local_1c[0] = (undefined **)0x0;
    uStack_c = 0;
    pppuStack_28 = (undefined ***)&local_20;
    local_2c = &DAT_03058be0;
    FUN_007e6645(uVar1);
    pppuStack_28 = local_1c;
    local_2c = &DAT_03058be4;
    FUN_007bc2e0();
    local_2c = local_20;
    FUN_007bceec(local_1c);
    uStack_c._0_1_ = 1;
    FUN_0082c9b0(&local_2c);
    uStack_c = (uint)uStack_c._1_3_ << 8;
    if (pppuStack_28 != (undefined ***)0x0) {
      FUN_007bcf4f();
    }
    uStack_c = 0xffffffff;
    local_24 = local_20;
    if (local_1c[0] != (undefined **)0x0) {
      FUN_007bcf4f();
    }
  }
  else {
    local_1c[0] = &local_24;
    local_20 = &DAT_03058be0;
    FUN_007e6645(uVar1);
  }
  FUN_007e5490(param_1_00 + 0x1c);
  ExceptionList = local_14;
  return;
}



int __fastcall FUN_007e65d3(int param_1)

{
  int iVar1;
  undefined2 extraout_var;
  int unaff_EBX;
  int *piVar2;
  
  if (unaff_EBX == 0) {
    piVar2 = (int *)0x0;
  }
  else {
    piVar2 = (int *)(unaff_EBX + -9);
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  iVar1 = **(int **)(param_1 + 4);
  FUN_007e728a();
  if (iVar1 == 0) {
    (**(code **)(*piVar2 + 0x10))(CONCAT22(extraout_var,0xffff));
    FUN_009b4100();
  }
  else {
    FUN_007e70c3(piVar2,iVar1);
  }
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + -9;
  }
  return iVar1;
}



int __fastcall FUN_007e6645(int param_1)

{
  int iVar1;
  int unaff_ESI;
  
  if (unaff_ESI == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_ESI + -9;
  }
  if (iVar1 == -9) {
    iVar1 = 0;
  }
  FUN_007e6d90(iVar1 + 9,*(undefined4 *)(param_1 + 4));
  if (unaff_ESI == 0) {
    return 0;
  }
  return unaff_ESI + -9;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3e6673  629
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e66b4();
    _atexit((_func_4879 *)&LAB_00c7550a);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> > >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3e6678  949
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e66b4();
    _atexit((_func_4879 *)&LAB_00c7550a);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
* FUN_007e66b4(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f011c);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e6708(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> > >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3e672a  790
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75520);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e677a(undefined4 *param_1_00,byte param_1)

{
  DAT_032effea = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int FUN_007e67a3(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> >::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
::load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
                  *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void **ppvVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  bad_alloc local_24 [4];
  undefined *local_20;
  void ***local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3e681a  1582
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW64105C87@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7e6826;
  puVar2 = (undefined4 *)operator_new(0x2c);
  local_8 = 0;
  local_18 = puVar2;
  if (puVar2 == (undefined4 *)0x0) {
    uVar3 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar3);
  }
  *param_2 = puVar2;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(puVar2);
  local_1c = &param_2;
  local_20 = &DAT_03058be8;
  FUN_007e6645();
  ppvVar1 = param_2;
  FUN_007bceb5();
  puVar2[9] = ppvVar1;
  local_8 = 0;
  *puVar2 = boost_132::detail::
            sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost_132::serialization::detail::null_deleter>
            ::vftable;
  puVar2[1] = 0;
  local_20 = (undefined *)0x0;
  local_1c = (void ***)puVar2;
  FUN_007e6900();
  return;
}



void Catch_All_007e68b0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e68bd(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_008347f0(&DAT_032f011c);
  FUN_00833fa0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W64105C87 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75520);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



int __fastcall FUN_007e6900(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W64105C87*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// std::vector<class boost::shared_ptr<class W71DA37B9::W1A7DB823>,class std::allocator<class
// boost::shared_ptr<class W71DA37B9::W1A7DB823> > > > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > > >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
          ::get_const_instance(void)

{
                    // 0x3e694f  594
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7553b);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e6954(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > > & __cdecl boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > > >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
          ::get_instance(void)

{
                    // 0x3e6976  914
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7553b);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e69c0(undefined4 *param_1_00,byte param_1)

{
  DAT_032effeb = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// std::vector<class boost::shared_ptr<class W71DA37B9::W1A7DB823>,class std::allocator<class
// boost::shared_ptr<class W71DA37B9::W1A7DB823> > > >::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > >(void)

oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
::
oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
          (oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
           *this)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
  *peVar1;
  
                    // 0x3e69e9  52
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class std::vector<class
// boost::shared_ptr<class W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823> > > > const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > > >::get_const_instance(void)

extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
          ::get_const_instance(void)

{
                    // 0x3e6a03  426
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e6a44();
    _atexit((_func_4879 *)&LAB_00c75556);
  }
  return (extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class std::vector<class
// boost::shared_ptr<class W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823> > > > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > > >::get_instance(void)

extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
          ::get_instance(void)

{
                    // 0x3e6a08  746
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e6a44();
    _atexit((_func_4879 *)&LAB_00c75556);
  }
  return (extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
* FUN_007e6a44(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
       ::vftable;
  FUN_00830c60(&std::
                vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
                ::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e6a94(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
       ::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
::save_object_data(oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
  *local_8;
  
                    // 0x3e6ad5  1662
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007e6ba3();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// std::vector<class boost::shared_ptr<class W71DA37B9::W1A7DB823>,class std::allocator<class
// boost::shared_ptr<class W71DA37B9::W1A7DB823> > > > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > > >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
  *peVar1;
  
                    // 0x3e6af1  514
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7556c);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e6af6(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > > & __cdecl boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > > >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
  *peVar1;
  
                    // 0x3e6b18  834
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7556c);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e6b68(undefined4 *param_1_00,byte param_1)

{
  DAT_032effed = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
::load_object_data(iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3e6b91  1546
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007e6cd6(param_1,param_2);
  return;
}



void __fastcall FUN_007e6ba3(int param_1)

{
  uint uVar1;
  undefined4 *in_EAX;
  int local_28;
  undefined4 local_24;
  char *local_20;
  int *local_1c;
  undefined *local_18;
  undefined4 local_14;
  
  local_28 = (int)(in_EAX[4] - in_EAX[3]) >> 3;
  local_1c = &local_28;
  local_24 = 1;
  local_20 = "count";
  FUN_007b9f02();
  local_1c = &local_24;
  local_20 = "item_version";
  FUN_004cce2d(param_1 + 9);
  uVar1 = in_EAX[3];
  if ((uint)in_EAX[4] < uVar1) {
    FUN_00a3fb10();
  }
  local_20 = (char *)*in_EAX;
  if (local_28 != 0) {
    local_18 = &DAT_03058bd8;
    local_1c = (int *)uVar1;
    do {
      local_28 = local_28 + -1;
      FUN_007c96e9();
      FUN_007f0e50();
      local_14 = FUN_007c96e9();
      FUN_007e6c5f(param_1 + 9);
    } while (local_28 != 0);
  }
  return;
}



int FUN_007e6c5f(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
  *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007e6cd6(undefined4 param_1,undefined4 param_2)

{
  char **ppcVar1;
  int *piVar2;
  char *pcVar3;
  ushort local_1c [2];
  int local_18;
  int local_14;
  char *local_10;
  int *local_c;
  
  FUN_007ce2c9();
  local_18 = 0;
  FUN_00831450(local_1c);
  local_14 = 0;
  local_c = &local_18;
  local_10 = "count";
  FUN_007ba19a();
  if (3 < local_1c[0]) {
    local_c = &local_14;
    local_10 = "item_version";
    FUN_004cd077();
  }
  FUN_007f10ac(param_2,local_18);
  FUN_0046e65a();
  piVar2 = local_c;
  pcVar3 = local_10;
  while (local_18 != 0) {
    local_18 = local_18 + -1;
    ppcVar1 = (char **)FUN_007e6e13(pcVar3,piVar2);
    pcVar3 = *ppcVar1;
    piVar2 = (int *)ppcVar1[1];
  }
  return;
}



int FUN_007e6d90(int param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  extended_type_info_typeid<class_W71DA37B9::W64105C87> *peVar5;
  
  puVar2 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>
           ::get_instance();
  uVar3 = (**(code **)*puVar2)();
  FUN_00832c10(uVar3);
  puVar4 = (undefined4 *)FUN_00832bf0(param_2,puVar2,&LAB_007bc61f);
  if (puVar4 != puVar2) {
    uVar3 = puVar4[1];
    uVar1 = *param_2;
    peVar5 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
             ::get_instance();
    uVar3 = FUN_0083e220(uVar3,peVar5,uVar1);
    *param_2 = uVar3;
  }
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_007e6e13(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *unaff_ESI;
  int unaff_EDI;
  undefined4 *puVar2;
  undefined4 local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18 = 0;
  local_8 = 0;
  FUN_007e6e86(unaff_EDI + 9);
  FUN_007ce26a(&local_1c);
  puVar2 = &local_1c;
  uVar1 = FUN_007ba0c6(puVar2);
  FUN_00831750(uVar1,puVar2);
  *unaff_ESI = param_1;
  local_8 = 0xffffffff;
  unaff_ESI[1] = param_2;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



int FUN_007e6e86(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::shared_ptr<class W71DA37B9::W1A7DB823> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
          ::get_const_instance(void)

{
                    // 0x3e6efd  587
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75587);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e6f02(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
          ::get_instance(void)

{
                    // 0x3e6f24  907
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75587);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e6f6e(undefined4 *param_1_00,byte param_1)

{
  DAT_032effee = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::shared_ptr<class W71DA37B9::W1A7DB823> >::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> >(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
          (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
           *this)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> *peVar1;
  
                    // 0x3e6f97  45
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W71DA37B9::W1A7DB823> > const & __cdecl
// boost::serialization::singleton<class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W71DA37B9::W1A7DB823> > >::get_const_instance(void)

extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
::get_const_instance(void)

{
                    // 0x3e6fb1  412
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e6ff3();
    _atexit((_func_4879 *)&LAB_00c755a2);
  }
  return (extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W71DA37B9::W1A7DB823> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823> > >::get_instance(void)

extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
::get_instance(void)

{
                    // 0x3e6fb6  732
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e6ff3();
    _atexit((_func_4879 *)&LAB_00c755a2);
  }
  return (extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
* FUN_007e6ff3(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>::vftable;
  FUN_00830c60(&boost::shared_ptr<class_W71DA37B9::W1A7DB823>::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e7043(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823>
// >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
::save_object_data(oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  undefined *puVar1;
  undefined local_8 [4];
  
                    // 0x3e7084  1655
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  puVar1 = local_8;
  (**(code **)(*(int *)this + 0xc))(puVar1);
                    // WARNING: Load size is inaccurate
  param_2 = *param_2;
  FUN_007e779b(puVar1,&DAT_03058be0,&param_2);
  return;
}



void FUN_007e70c3(undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2016e;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  piVar3 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
                  ::get_instance();
  uVar4 = ___RTtypeid(param_2,uVar2);
  piVar5 = (int *)FUN_00830d80(uVar4);
  if (piVar5 != (int *)0x0) goto LAB_007e7133;
  uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
  local_c = 0;
  while( true ) {
    FUN_0043fc7f(uVar4);
LAB_007e7133:
    cVar1 = FUN_00830f50(piVar5);
    if (cVar1 != '\0') break;
    iVar7 = FUN_0083e330(piVar5,piVar3,param_2);
    if (iVar7 == 0) {
      uVar9 = 1;
      uVar4 = (**(code **)(*piVar3 + 8))(1);
      uVar8 = (**(code **)(*piVar5 + 8))(uVar4);
      uVar4 = FUN_00832e60(10,uVar8,uVar4,uVar9);
      local_c = 1;
    }
    else {
      boost::serialization::
      singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>
      ::get_instance();
      iVar6 = FUN_00833f60(piVar5);
      if (iVar6 == 0) {
        iVar6 = 0;
      }
      else {
        iVar6 = iVar6 + -4;
      }
      if (iVar6 != 0) goto LAB_007e71cf;
      piVar5 = (int *)0x2;
      uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
      local_c = 2;
    }
  }
  iVar6 = FUN_007e728a();
  iVar7 = param_2;
LAB_007e71cf:
  FUN_00830570(iVar7,iVar6);
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::shared_ptr<class W71DA37B9::W1A7DB823> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> *peVar1;
  
                    // 0x3e71ea  500
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c755b8);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e71ef(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> *peVar1;
  
                    // 0x3e7211  820
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c755b8);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e7261(undefined4 *param_1_00,byte param_1)

{
  DAT_032efff0 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_007e728a(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return puVar1;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823>
// >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
::load_object_data(iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3e72b3  1532
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007e7817(param_2,param_3);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W64105C87> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W64105C87> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>
::get_const_instance(void)

{
                    // 0x3e72c9  678
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e7350();
    _atexit((_func_4879 *)&LAB_00c755e9);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W64105C87> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W64105C87> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>
::get_const_instance(void)

{
                    // 0x3e72ce  641
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e73a4();
    _atexit((_func_4879 *)&LAB_00c755d3);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W64105C87> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W64105C87> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>
::get_instance(void)

{
                    // 0x3e72d3  998
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e7350();
    _atexit((_func_4879 *)&LAB_00c755e9);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W64105C87> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W64105C87> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>
::get_instance(void)

{
                    // 0x3e730f  961
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e73a4();
    _atexit((_func_4879 *)&LAB_00c755d3);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W64105C87> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W64105C87> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W64105C87> *peVar1;
  
                    // 0x3e734b  485
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
                    // 0x3e734b  1059
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c755ff);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>
* FUN_007e7350(void)

{
  extended_type_info_typeid<class_W71DA37B9::W64105C87> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>::
       vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032f0114);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>
* FUN_007e73a4(void)

{
  extended_type_info_typeid<class_W71DA37B9::W64105C87> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>::
       vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f010c);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e73f8(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e741a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W64105C87> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W64105C87> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>
::get_instance(void)

{
                    // 0x3e743c  893
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>::
    oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>
              ((oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7561a);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W64105C87> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W64105C87> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W64105C87> *peVar1;
  
                    // 0x3e7486  805
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c755ff);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e74d6(undefined4 *param_1_00,byte param_1)

{
  DAT_032efff3 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e74ff(undefined4 *param_1_00,byte param_1)

{
  DAT_032efff4 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W64105C87>::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W64105C87>(void)

oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>::
oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>
          (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> *this)

{
  extended_type_info_typeid<class_W71DA37B9::W64105C87> *peVar1;
  
                    // 0x3e7528  31
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W64105C87>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W64105C87>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>::
save_object_ptr(pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>
                *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> *poVar1;
  
                    // 0x3e7542  1702
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>
           ::get_instance();
  FUN_00830550(param_2,poVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e758c(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>::
       vftable;
  FUN_00833f40(&DAT_032f0114);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W64105C87>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>::
load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>
                *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3e75ca  1594
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7e75d6;
  pvVar1 = operator_new(0x8c);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007e6401(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007e774c();
  return;
}



void Catch_All_007e7638(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e7645(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>::
       vftable;
  FUN_008347f0(&DAT_032f010c);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W64105C87>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>::save_object_data
          (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> *this,
          basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
  *poVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> *local_8;
  
                    // 0x3e7683  1641
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
           ::get_instance();
  FUN_00830550((int)param_2 + 4,poVar1);
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W64105C87>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>::load_object_data
          (iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
  iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
  *piVar1;
  
                    // 0x3e76eb  1517
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VW64105C87@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  piVar1 = serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
           ::get_instance();
  FUN_00832bd0((int)param_2 + 4,piVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W64105C87> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W64105C87> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>
::get_const_instance(void)

{
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>::
    oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>
              ((oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7561a);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W64105C87>_>::get_instance(void)'
          ::`2'::t;
}



int __fastcall FUN_007e774c(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W64105C87>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



void __fastcall FUN_007e779b(int *param_1)

{
  int iVar1;
  undefined4 *in_EAX;
  undefined2 extraout_var;
  
  FUN_0082dd50(*in_EAX);
  if (param_1 == (int *)0xfffffff7) {
    param_1 = (int *)0x0;
  }
  iVar1 = *(int *)in_EAX[1];
  FUN_007e80b4();
  if (iVar1 == 0) {
    (**(code **)(*param_1 + 0x10))(CONCAT22(extraout_var,0xffff));
    FUN_0082d4f0();
  }
  else {
    FUN_007e7e2a(param_1,iVar1);
  }
  FUN_0082de20(*in_EAX);
  return;
}



void __thiscall FUN_007e7817(undefined *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined *local_2c;
  undefined ***pppuStack_28;
  undefined *local_24;
  undefined *local_20;
  undefined **local_1c [2];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c1c00a;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if (param_2 == 0) {
    puVar2 = (undefined4 *)
             boost::serialization::
             singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    local_2c = param_1_00;
    if (param_1_00 + 9 == (undefined *)0x0) {
      local_2c = (undefined *)0x0;
    }
    uVar3 = (**(code **)*puVar2)(uVar1);
    FUN_00832c10(uVar3);
    local_20 = (undefined *)0x0;
    local_1c[0] = (undefined **)0x0;
    uStack_c = 0;
    pppuStack_28 = (undefined ***)&local_20;
    local_2c = &DAT_03058be0;
    FUN_007e794c(&local_2c);
    pppuStack_28 = local_1c;
    local_2c = &DAT_03058be4;
    FUN_007ba9fd(param_1_00 + 9);
    local_2c = local_20;
    FUN_007bceec(local_1c);
    uStack_c._0_1_ = 1;
    FUN_0082c9b0(&local_2c);
    uStack_c = (uint)uStack_c._1_3_ << 8;
    if (pppuStack_28 != (undefined ***)0x0) {
      FUN_007bcf4f();
    }
    uStack_c = 0xffffffff;
    local_24 = local_20;
    if (local_1c[0] != (undefined **)0x0) {
      FUN_007bcf4f();
    }
  }
  else {
    local_1c[0] = &local_24;
    local_20 = &DAT_03058be0;
    FUN_007e794c(&local_20);
  }
  FUN_007e796e(param_1_00 + 0x34);
  ExceptionList = local_14;
  return;
}



int FUN_007e794c(undefined4 param_1)

{
  int iVar1;
  int unaff_ESI;
  
  FUN_007e800a(param_1);
  if (unaff_ESI == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_ESI + -9;
  }
  return iVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007e796e(int param_1,int param_2)

{
  int *piVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined local_30 [4];
  int local_2c;
  int local_28;
  undefined local_24 [4];
  int local_20;
  undefined4 local_18;
  extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb8;
  local_8 = 0x7e797d;
  if (param_1 == 0) {
    local_18 = 0;
    local_14 = (extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *)0x0;
    FUN_0046f668();
    if (local_14 != (extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *)0x0) {
      FUN_0040127a();
    }
    return;
  }
  piVar1 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
                  ::get_instance();
  local_14 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
             ::get_instance();
  uVar2 = ___RTtypeid(param_1);
  iVar3 = FUN_00830d80(uVar2);
  local_14 = (extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *)iVar3;
  if (iVar3 == 0) {
    uVar4 = 1;
    uVar2 = (**(code **)(*piVar1 + 8))(0,1);
    uVar2 = FUN_00832e60(2,uVar2,iVar3,uVar4);
    local_8 = 0;
    iVar3 = FUN_0043fc7f(uVar2);
  }
  FUN_0082cad0(&local_28,param_1,iVar3,piVar1);
  local_8 = 1;
  if (local_28 == 0) {
    FUN_005d4b35(local_30);
    FUN_0046f668();
    if (local_2c != 0) {
      FUN_0040127a();
    }
    local_20 = FUN_0083e330(local_14,piVar1,param_1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 4);
  }
  local_20 = local_28;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_24);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3e7a92  650
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e7b19();
    _atexit((_func_4879 *)&LAB_00c7564b);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W71DA37B9::W1A7DB823>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W71DA37B9::W1A7DB823>
// >::get_const_instance(void)

extended_type_info_typeid<class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>::
get_const_instance(void)

{
                    // 0x3e7a97  432
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW1A7DB823@W71DA37B9@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW1A7DB823@W71DA37B9@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e7b6d();
    _atexit((_func_4879 *)&LAB_00c75635);
  }
  return (extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> > >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3e7a9c  970
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e7b19();
    _atexit((_func_4879 *)&LAB_00c7564b);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W71DA37B9::W1A7DB823>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W71DA37B9::W1A7DB823> >::get_instance(void)

extended_type_info_typeid<class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>::
get_instance(void)

{
                    // 0x3e7ad8  752
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW1A7DB823@W71DA37B9@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW1A7DB823@W71DA37B9@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e7b6d();
    _atexit((_func_4879 *)&LAB_00c75635);
  }
  return (extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W1A7DB823 *,struct
// boost::serialization::null_deleter> > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W1A7DB823 *,struct
// boost::serialization::null_deleter> > >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3e7b14  507
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
                    // 0x3e7b14  1068
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75661);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
* FUN_007e7b19(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f0104);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
* FUN_007e7b6d(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>::vftable;
  FUN_00830c60(&W71DA37B9::W1A7DB823::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e7bbd(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e7bdf(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> > >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3e7c20  827
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75661);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e7c70(undefined4 *param_1_00,byte param_1)

{
  DAT_032efff7 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W1A7DB823 *,struct
// boost::serialization::null_deleter> > const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W1A7DB823 *,struct
// boost::serialization::null_deleter> > >::get_const_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3e7c99  419
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e7cda();
    _atexit((_func_4879 *)&LAB_00c7567c);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W1A7DB823 *,struct
// boost::serialization::null_deleter> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W1A7DB823 *,struct
// boost::serialization::null_deleter> > >::get_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3e7c9e  739
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e7cda();
    _atexit((_func_4879 *)&LAB_00c7567c);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
* FUN_007e7cda(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_00830c60(&boost_132::detail::
                sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>
                ::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e7d2a(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> >::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
::load_object_ptr(pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
                  *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3e7d6b  1603
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7e7d77;
  pvVar1 = operator_new(0x2c);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007e7f51();
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007e7f93(param_1 + 9);
  return;
}



void Catch_All_007e7dd7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e7de4(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_0082bbc0(&DAT_032f0104);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> >::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3e7e22  1501
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
                    // 0x3e7e22  1539
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
  ::get_instance();
  return;
}



void FUN_007e7e2a(undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2016e;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  piVar3 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
                  ::get_instance();
  uVar4 = ___RTtypeid(param_2,uVar2);
  piVar5 = (int *)FUN_00830d80(uVar4);
  if (piVar5 != (int *)0x0) goto LAB_007e7e9a;
  uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
  local_c = 0;
  while( true ) {
    FUN_0043fc7f(uVar4);
LAB_007e7e9a:
    cVar1 = FUN_00830f50(piVar5);
    if (cVar1 != '\0') break;
    iVar7 = FUN_0083e330(piVar5,piVar3,param_2);
    if (iVar7 == 0) {
      uVar9 = 1;
      uVar4 = (**(code **)(*piVar3 + 8))(1);
      uVar8 = (**(code **)(*piVar5 + 8))(uVar4);
      uVar4 = FUN_00832e60(10,uVar8,uVar4,uVar9);
      local_c = 1;
    }
    else {
      boost::serialization::
      singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>
      ::get_instance();
      iVar6 = FUN_0082dfa0(piVar5);
      if (iVar6 == 0) {
        iVar6 = 0;
      }
      else {
        iVar6 = iVar6 + -4;
      }
      if (iVar6 != 0) goto LAB_007e7f36;
      piVar5 = (int *)0x2;
      uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
      local_c = 2;
    }
  }
  iVar6 = FUN_007e80b4();
  iVar7 = param_2;
LAB_007e7f36:
  FUN_00830570(iVar7,iVar6);
  ExceptionList = local_14;
  return;
}



void FUN_007e7f51(void)

{
  undefined4 *unaff_EDI;
  undefined *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = &local_8;
  local_10 = &DAT_03058be8;
  FUN_007e794c(&local_10);
  if (unaff_EDI != (undefined4 *)0x0) {
    FUN_007bceb5();
    unaff_EDI[9] = local_8;
    *unaff_EDI = boost_132::detail::
                 sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost_132::serialization::detail::null_deleter>
                 ::vftable;
  }
  unaff_EDI[1] = 0;
  return;
}



int FUN_007e7f93(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007e800a(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *peVar6;
  
  FUN_0082ace0(*param_1);
  puVar1 = (undefined4 *)param_1[1];
  puVar3 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  uVar4 = (**(code **)*puVar3)();
  FUN_00832c10(uVar4);
  puVar5 = (undefined4 *)FUN_00832bf0(puVar1,puVar3,&LAB_007bb703);
  if (puVar5 != puVar3) {
    uVar4 = puVar5[1];
    uVar2 = *puVar1;
    peVar6 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
             ::get_instance();
    uVar4 = FUN_0083e220(uVar4,peVar6,uVar2);
    *puVar1 = uVar4;
  }
  FUN_0082af90(*param_1);
  return;
}



undefined4 * FUN_007e80b4(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W1A7DB823> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W1A7DB823> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>
::get_const_instance(void)

{
                    // 0x3e80dd  687
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e8123();
    _atexit((_func_4879 *)&LAB_00c75692);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W1A7DB823> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W1A7DB823> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>
::get_instance(void)

{
                    // 0x3e80e2  1007
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e8123();
    _atexit((_func_4879 *)&LAB_00c75692);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W1A7DB823> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W1A7DB823> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>
::get_const_instance(void)

{
                    // 0x3e811e  600
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
                    // 0x3e811e  1113
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>::
    oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>
              ((oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c756a8);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>
* FUN_007e8123(void)

{
  extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032f00fc);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e8177(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W1A7DB823> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W1A7DB823> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>
::get_instance(void)

{
                    // 0x3e8199  920
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>::
    oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>
              ((oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c756a8);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e81e3(undefined4 *param_1_00,byte param_1)

{
  DAT_032efffa = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W1A7DB823>::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W1A7DB823>(void)

oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>::
oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>
          (oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> *this)

{
  extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *peVar1;
  
                    // 0x3e820c  58
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W1A7DB823>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x3e8226  1711
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_007e8387(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e8248(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>::vftable;
  FUN_0082df80(&DAT_032f00fc);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// class boost::serialization::void_cast_detail::void_caster const & __cdecl
// boost::serialization::void_cast_register<class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter>,class
// boost_132::detail::sp_counted_base>(class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> const *,class
// boost_132::detail::sp_counted_base const *)

void_caster * __cdecl
boost::serialization::
void_cast_register<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
          (sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>
           *param_1,sp_counted_base *param_2)

{
                    // 0x3e8286  1
                    // ??$void_cast_register@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@serialization@boost@@YAABVvoid_caster@void_cast_detail@01@PBV?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@PBVsp_counted_base@56@@Z
                    // 0x3e8286  703
                    // ?get_const_instance@?$singleton@V?$void_caster_primitive@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@serialization@boost@@@serialization@boost@@SAABV?$void_caster_primitive@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e8300();
    _atexit((_func_4879 *)&LAB_00c756c3);
  }
  return (void_caster *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W1A7DB823>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> *this,
                basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> *local_8;
  
                    // 0x3e828b  1668
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007e8446();
  return;
}



void FUN_007e82a7(undefined4 param_1)

{
  ___RTDynamicCast(param_1,0,&boost_132::detail::sp_counted_base::RTTI_Type_Descriptor,
                   &boost_132::detail::
                    sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>
                    ::RTTI_Type_Descriptor,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::void_cast_detail::void_caster_primitive<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W1A7DB823 *,struct
// boost::serialization::null_deleter>,class boost_132::detail::sp_counted_base> & __cdecl
// boost::serialization::singleton<class
// boost::serialization::void_cast_detail::void_caster_primitive<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W1A7DB823 *,struct
// boost::serialization::null_deleter>,class boost_132::detail::sp_counted_base>
// >::get_instance(void)

void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
          ::get_instance(void)

{
                    // 0x3e82c4  1023
                    // ?get_instance@?$singleton@V?$void_caster_primitive@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@serialization@boost@@@serialization@boost@@CAAAV?$void_caster_primitive@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e8300();
    _atexit((_func_4879 *)&LAB_00c756c3);
  }
  return (void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
          *)&`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
* FUN_007e8300(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>
           ::get_instance();
  _DAT_032f0d34 =
       boost::serialization::
       singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
       ::get_instance();
  _DAT_032f0d3c = 0;
  _DAT_032f0d40 = 0;
  _t = boost::serialization::void_cast_detail::
       void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
       ::vftable;
  _DAT_032f0d38 = peVar1;
  FUN_0083ddb0(0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e835e(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::detail::
                singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
                ::vftable;
  DAT_032efffb = 1;
  FUN_007e83fe();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int FUN_007e8387(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007e83fe(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::
             void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
             ::vftable;
  FUN_0083e150();
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 __thiscall FUN_007e842a(undefined4 param_1_00,byte param_1)

{
  FUN_007e83fe();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007e8446(int param_1)

{
  int iVar1;
  
  iVar1 = param_1;
  if (param_1 == -9) {
    iVar1 = 0;
  }
  FUN_007e87c2(iVar1 + 9);
  FUN_007e86d0();
  if (param_1 == -9) {
    param_1 = 0;
  }
  FUN_007e883d(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W1A7DB823> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W1A7DB823> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>
::get_const_instance(void)

{
                    // 0x3e84e1  657
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e8527();
    _atexit((_func_4879 *)&LAB_00c756de);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W71DA37B9::W1A7DB823> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W71DA37B9::W1A7DB823> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *peVar1;
  
                    // 0x3e84e6  520
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
                    // 0x3e84e6  1075
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c756f4);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W1A7DB823> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W1A7DB823> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>
::get_instance(void)

{
                    // 0x3e84eb  977
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e8527();
    _atexit((_func_4879 *)&LAB_00c756de);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>
* FUN_007e8527(void)

{
  extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f00f4);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e857b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W1A7DB823> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W1A7DB823> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *peVar1;
  
                    // 0x3e859d  840
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c756f4);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e85ed(undefined4 *param_1_00,byte param_1)

{
  DAT_032efffd = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W1A7DB823>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3e8616  1610
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7e8622;
  pvVar1 = operator_new(0x84);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007e88b4(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007e874b(param_1 + 9);
  return;
}



void Catch_All_007e8685(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e8692(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>::vftable;
  FUN_0082bbc0(&DAT_032f00f4);
  FUN_00833fa0();
  return;
}



int __fastcall FUN_007e86d0(undefined4 *param_1)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_0082dd50(*param_1);
  FUN_00495874(param_1[1]);
  FUN_0082de20(*param_1);
  if (iVar1 == -9) {
    iVar1 = 0;
  }
  return iVar1;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W1A7DB823>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3e873b  1552
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007e88da();
  return;
}



int FUN_007e874b(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_007e87c2(int param_1)

{
  undefined *puVar1;
  undefined4 *in_EAX;
  
  FUN_0082dd50(*in_EAX);
  puVar1 = (undefined *)in_EAX[1];
  FUN_0082d4f0();
  FUN_007e8bef(*puVar1);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_007e883d(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
  *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007e88b4(int param_1)

{
  if (param_1 != 0) {
    FUN_00b67171(param_1);
  }
  return;
}



void __fastcall FUN_007e88da(int param_1)

{
  int in_EAX;
  int local_10;
  int local_c;
  
  if (*(uint *)(in_EAX + 0x2c) < 0x10) {
    local_10 = in_EAX + 0x18;
  }
  else {
    local_10 = *(int *)(in_EAX + 0x18);
  }
  FUN_0082ace0(local_10);
  FUN_007e8f6f(in_EAX + 4);
  FUN_0082af90(local_10);
  if (*(uint *)(in_EAX + 0x48) < 0x10) {
    local_10 = in_EAX + 0x34;
  }
  else {
    local_10 = *(int *)(in_EAX + 0x34);
  }
  local_c = in_EAX + 8;
  FUN_004957e5(&local_10);
  if (*(uint *)(in_EAX + 100) < 0x10) {
    local_10 = in_EAX + 0x50;
  }
  else {
    local_10 = *(int *)(in_EAX + 0x50);
  }
  local_c = in_EAX + 0xc;
  if (param_1 == -9) {
    param_1 = 0;
  }
  FUN_007e89b3(param_1 + 9);
  return;
}



int FUN_007e89b3(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::shared_ptr<class common::WB943A9F0> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class common::WB943A9F0> >
// >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_> *
__cdecl boost::serialization::
        singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
        ::get_const_instance(void)

{
                    // 0x3e8a2a  592
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7570f);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e8a2f(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class common::WB943A9F0> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class common::WB943A9F0> >
// >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_> *
__cdecl boost::serialization::
        singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
        ::get_instance(void)

{
                    // 0x3e8a51  912
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7570f);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e8a9b(undefined4 *param_1_00,byte param_1)

{
  DAT_032efffe = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::shared_ptr<class common::WB943A9F0> >::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class common::WB943A9F0> >(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_> *
__thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
          (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
           *this)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_> *peVar1;
  
                    // 0x3e8ac4  50
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class common::WB943A9F0> > const & __cdecl
// boost::serialization::singleton<class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class common::WB943A9F0> > >::get_const_instance(void)

extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>
::get_const_instance(void)

{
                    // 0x3e8ade  417
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$shared_ptr@VWB943A9F0@common@@@boost@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$shared_ptr@VWB943A9F0@common@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e8b1f();
    _atexit((_func_4879 *)&LAB_00c7572a);
  }
  return (extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class common::WB943A9F0> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::shared_ptr<class common::WB943A9F0>
// > >::get_instance(void)

extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>
::get_instance(void)

{
                    // 0x3e8ae3  737
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$shared_ptr@VWB943A9F0@common@@@boost@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$shared_ptr@VWB943A9F0@common@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e8b1f();
    _atexit((_func_4879 *)&LAB_00c7572a);
  }
  return (extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>
* FUN_007e8b1f(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>::vftable;
  FUN_00830c60(&boost::shared_ptr<class_common::WB943A9F0>::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e8b6f(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class common::WB943A9F0>
// >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                 *this,basic_oarchive *param_1,void *param_2)

{
  undefined *puVar1;
  undefined local_8 [4];
  
                    // 0x3e8bb0  1660
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  puVar1 = local_8;
  (**(code **)(*(int *)this + 0xc))(puVar1);
                    // WARNING: Load size is inaccurate
  param_2 = *param_2;
  FUN_007e8d58(puVar1,&DAT_03058be0,&param_2);
  return;
}



void FUN_007e8bef(byte param_1)

{
  _param_1 = (uint)param_1;
  FUN_007e8c0a(&param_1);
  return;
}



void __thiscall FUN_007e8c0a(int **param_1_00,undefined2 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_b0 [152];
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3041f;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_b0;
  ExceptionList = &local_14;
  if ((*(byte *)(*(int *)(**param_1_00 + 4) + 8 + (int)*param_1_00) & 6) != 0) {
    uVar2 = FUN_00832e60(0xd,0,0,1);
    local_c = 0;
    FUN_0043fc7f(uVar2);
  }
  FUN_00745c10(*param_1,uVar1);
  ExceptionList = pvStack_18;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::shared_ptr<class common::WB943A9F0> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class common::WB943A9F0> >
// >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_> *
__cdecl boost::serialization::
        singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
        ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_> *peVar1;
  
                    // 0x3e8c87  505
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75740);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
             ::`2'::t;
}



void FUN_007e8c8c(int param_1)

{
  if (param_1 != 0) {
    FUN_005e72d0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



undefined4 * __thiscall FUN_007e8ca7(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class common::WB943A9F0> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class common::WB943A9F0> >
// >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_> *
__cdecl boost::serialization::
        singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
        ::get_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_> *peVar1;
  
                    // 0x3e8cc9  825
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75740);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e8d19(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0000 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class common::WB943A9F0>
// >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                 *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3e8d42  1537
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007e90f8(param_2,param_3);
  return;
}



void __fastcall FUN_007e8d58(int *param_1)

{
  int iVar1;
  undefined4 *in_EAX;
  undefined2 extraout_var;
  
  FUN_0082dd50(*in_EAX);
  if (param_1 == (int *)0xfffffff7) {
    param_1 = (int *)0x0;
  }
  iVar1 = *(int *)in_EAX[1];
  FUN_007e969d();
  if (iVar1 == 0) {
    (**(code **)(*param_1 + 0x10))(CONCAT22(extraout_var,0xffff));
    FUN_0082d4f0();
  }
  else {
    FUN_007e922d(param_1,iVar1);
  }
  FUN_0082de20(*in_EAX);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::binary_oarchive,class std::vector<class
// boost::shared_ptr<class W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823> > > > >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
          ::get_const_instance(void)

{
                    // 0x3e8dd4  564
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75776);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::binary_iarchive,class std::vector<class
// boost::shared_ptr<class W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823> > > > >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
  *peVar1;
  
                    // 0x3e8dd9  476
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7575b);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



void FUN_007e8dde(int param_1)

{
  if (param_1 != 0) {
    FUN_007b3ae8(param_1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



undefined4 * __thiscall FUN_007e8df8(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e8e1a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > > & __cdecl boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > > >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
          ::get_instance(void)

{
                    // 0x3e8e3c  884
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75776);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > > & __cdecl boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > > >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
  *peVar1;
  
                    // 0x3e8e86  796
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7575b);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e8ed6(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0001 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e8eff(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0002 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > >::oserializer<class boost::archive::binary_oarchive,class std::vector<class
// boost::shared_ptr<class W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823> > > >(void)

oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
::
oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
          (oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
           *this)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
  *peVar1;
  
                    // 0x3e8f28  22
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
::save_object_data(oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
  *local_8;
  
                    // 0x3e8f42  1632
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007e99e7();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W1A7DB823>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// > >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3e8f5e  1508
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007e9ac4(param_1);
  return;
}



void FUN_007e8f6f(undefined *param_1)

{
  undefined local_8 [4];
  
  FUN_007e8f88(local_8);
  *param_1 = local_8[0];
  return;
}



void __thiscall FUN_007e8f88(int **param_1_00,undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_b0 [152];
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3041f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if ((*(byte *)(*(int *)(**param_1_00 + 4) + 8 + (int)*param_1_00) & 6) == 0) {
    FUN_007e9002(param_1,DAT_0323f878 ^ (uint)local_b0);
    ExceptionList = pvStack_18;
    return;
  }
  uVar2 = FUN_00832e60(8,0,0,1);
  local_c = 0;
  FUN_0043fc7f(uVar2);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_007e9002(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int *piVar4;
  undefined local_38 [4];
  undefined4 local_34;
  undefined4 local_2c;
  char local_24;
  locale local_20 [4];
  undefined4 local_1c;
  int *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x7e900e;
  local_1c = 0;
  local_18 = param_1_00;
  FUN_00441871(param_1_00,0);
  local_8 = 0;
  if (local_24 != '\0') {
    uVar2 = FUN_00417498(local_20);
    local_8._0_1_ = 1;
    uVar2 = FUN_00440e5e(uVar2);
    std::locale::~locale(local_20);
    local_8 = CONCAT31(local_8._1_3_,2);
    iVar3 = *(int *)(*param_1_00 + 4) + (int)param_1_00;
    iVar1 = *(int *)(iVar3 + 0x28);
    local_34 = CONCAT31(local_34._1_3_,iVar1 == 0);
    local_2c = CONCAT31(local_2c._1_3_,1);
    std::
    num_get<unsigned_short,class_std::istreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>
    ::get(uVar2,local_38,iVar1,local_34,0,local_2c,iVar3,&local_1c,param_1);
    local_8 = 0;
    piVar4 = (int *)FUN_007e90aa();
    return piVar4;
  }
  FUN_004259e0(local_1c,0);
  local_8 = 0xffffffff;
  FUN_00413965();
  return param_1_00;
}



undefined * Catch_All_007e908a(void)

{
  int unaff_EBP;
  
  FUN_004259e0(4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_007e90a7;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007e90aa(void)

{
  int unaff_EBP;
  
  FUN_004259e0(*(undefined4 *)(unaff_EBP + -0x18),0);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00413965();
  return;
}



// Library Function - Single Match
//  public: class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __thiscall std::num_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::get(class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,class std::ios_base &,int &,unsigned short &)const 
// 
// Library: Visual Studio 2012 Release

undefined4 __thiscall
std::
num_get<unsigned_short,class_std::istreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>
::get(void *this,undefined4 param_11,undefined4 param_12,undefined4 param_13,undefined4 param_14,
     undefined4 param_15,undefined4 param_16,undefined4 param_17,undefined4 param_18)

{
                    // WARNING: Load size is inaccurate
  (**(code **)(*this + 0x28))
            (param_11,param_12,param_13,param_14,param_15,param_16,param_17,param_18);
  return param_11;
}



void __thiscall FUN_007e90f8(undefined *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined *local_2c;
  undefined ***pppuStack_28;
  undefined *local_24;
  undefined *local_20;
  undefined **local_1c [2];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c1c00a;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if (param_2 == 0) {
    puVar2 = (undefined4 *)
             boost::serialization::
             singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    local_2c = param_1_00;
    if (param_1_00 + 9 == (undefined *)0x0) {
      local_2c = (undefined *)0x0;
    }
    uVar3 = (**(code **)*puVar2)(uVar1);
    FUN_00832c10(uVar3);
    local_20 = (undefined *)0x0;
    local_1c[0] = (undefined **)0x0;
    uStack_c = 0;
    pppuStack_28 = (undefined ***)&local_20;
    local_2c = &DAT_03058be0;
    FUN_007e9354(&local_2c);
    pppuStack_28 = local_1c;
    local_2c = &DAT_03058be4;
    FUN_007ba9fd(param_1_00 + 9);
    local_2c = local_20;
    FUN_007bceec(local_1c);
    uStack_c._0_1_ = 1;
    FUN_0082c9b0(&local_2c);
    uStack_c = (uint)uStack_c._1_3_ << 8;
    if (pppuStack_28 != (undefined ***)0x0) {
      FUN_007bcf4f();
    }
    uStack_c = 0xffffffff;
    local_24 = local_20;
    if (local_1c[0] != (undefined **)0x0) {
      FUN_007bcf4f();
    }
  }
  else {
    local_1c[0] = &local_24;
    local_20 = &DAT_03058be0;
    FUN_007e9354(&local_20);
  }
  FUN_007e9376(param_1_00 + 0x34);
  ExceptionList = local_14;
  return;
}



void FUN_007e922d(undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2016e;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  piVar3 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
                  ::get_instance();
  uVar4 = ___RTtypeid(param_2,uVar2);
  piVar5 = (int *)FUN_00830d80(uVar4);
  if (piVar5 != (int *)0x0) goto LAB_007e929d;
  uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
  local_c = 0;
  while( true ) {
    FUN_0043fc7f(uVar4);
LAB_007e929d:
    cVar1 = FUN_00830f50(piVar5);
    if (cVar1 != '\0') break;
    iVar7 = FUN_0083e330(piVar5,piVar3,param_2);
    if (iVar7 == 0) {
      uVar9 = 1;
      uVar4 = (**(code **)(*piVar3 + 8))(1);
      uVar8 = (**(code **)(*piVar5 + 8))(uVar4);
      uVar4 = FUN_00832e60(10,uVar8,uVar4,uVar9);
      local_c = 1;
    }
    else {
      boost::serialization::
      singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>
      ::get_instance();
      iVar6 = FUN_0082dfa0(piVar5);
      if (iVar6 == 0) {
        iVar6 = 0;
      }
      else {
        iVar6 = iVar6 + -4;
      }
      if (iVar6 != 0) goto LAB_007e9339;
      piVar5 = (int *)0x2;
      uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
      local_c = 2;
    }
  }
  iVar6 = FUN_007e969d();
  iVar7 = param_2;
LAB_007e9339:
  FUN_00830570(iVar7,iVar6);
  ExceptionList = local_14;
  return;
}



int FUN_007e9354(undefined4 param_1)

{
  int iVar1;
  int unaff_ESI;
  
  FUN_007e993d(param_1);
  if (unaff_ESI == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_ESI + -9;
  }
  return iVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007e9376(int param_1)

{
  int *piVar1;
  undefined4 uVar2;
  int iVar3;
  int unaff_ESI;
  undefined4 uVar4;
  undefined local_30 [8];
  int local_28;
  undefined local_24 [4];
  int local_20;
  extended_type_info_typeid<class_common::WB943A9F0> *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb8;
  local_8 = 0x7e9385;
  if (unaff_ESI == 0) {
    FUN_005d0c77();
    return;
  }
  piVar1 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
                  ::get_instance();
  local_18 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
             ::get_instance();
  uVar2 = ___RTtypeid();
  iVar3 = FUN_00830d80(uVar2);
  local_18 = (extended_type_info_typeid<class_common::WB943A9F0> *)iVar3;
  if (iVar3 == 0) {
    uVar4 = 1;
    uVar2 = (**(code **)(*piVar1 + 8))(0,1);
    uVar2 = FUN_00832e60(2,uVar2,iVar3,uVar4);
    local_8 = 0;
    iVar3 = FUN_0043fc7f(uVar2);
  }
  FUN_0082cad0(&local_28,unaff_ESI,iVar3,piVar1);
  local_8 = 1;
  if (local_28 == 0) {
    FUN_0042ae30(local_30);
    FUN_0046f668();
    FUN_005e72d0();
    local_20 = FUN_0083e330(local_18,piVar1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 4);
  }
  local_20 = local_28;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_24);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3e9496  655
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e94dc();
    _atexit((_func_4879 *)&LAB_00c75791);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::sp_counted_base_impl<class common::WB943A9F0 *,struct
// boost::serialization::null_deleter> > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::sp_counted_base_impl<class common::WB943A9F0 *,struct
// boost::serialization::null_deleter> > >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3e949b  512
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
                    // 0x3e949b  1073
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c757a7);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> > >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3e94a0  975
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e94dc();
    _atexit((_func_4879 *)&LAB_00c75791);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
* FUN_007e94dc(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032eff20);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e9530(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> > >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3e9552  832
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c757a7);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e95a2(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0004 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class common::WB943A9F0 *,struct
// boost::serialization::null_deleter> > const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class common::WB943A9F0 *,struct
// boost::serialization::null_deleter> > >::get_const_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3e95cb  424
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e960c();
    _atexit((_func_4879 *)&LAB_00c757c2);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class common::WB943A9F0 *,struct
// boost::serialization::null_deleter> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class common::WB943A9F0 *,struct
// boost::serialization::null_deleter> > >::get_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3e95d0  744
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e960c();
    _atexit((_func_4879 *)&LAB_00c757c2);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
* FUN_007e960c(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_00830c60(&boost_132::detail::
                sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>
                ::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e965c(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



undefined4 * FUN_007e969d(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return puVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> >::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
::load_object_ptr(pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
                  *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3e96c6  1608
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7e96d2;
  pvVar1 = operator_new(0x2c);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007e9884();
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007e98c6(param_1 + 9);
  return;
}



void Catch_All_007e9732(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e973f(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_0082bbc0(&DAT_032eff20);
  FUN_00833fa0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class common::WB943A9F0> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class common::WB943A9F0> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>
::get_const_instance(void)

{
                    // 0x3e977d  700
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e97d0();
    _atexit((_func_4879 *)&LAB_00c757d8);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// common::WB943A9F0> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class common::WB943A9F0>
// >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>
::get_const_instance(void)

{
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>::
    oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>
              ((oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7412a);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007e9787(void)

{
  int *in_EAX;
  
  if ((undefined4 *)*in_EAX != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)*in_EAX)(1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class common::WB943A9F0> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class common::WB943A9F0> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>
::get_instance(void)

{
                    // 0x3e9794  1020
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e97d0();
    _atexit((_func_4879 *)&LAB_00c757d8);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>
* FUN_007e97d0(void)

{
  extended_type_info_typeid<class_common::WB943A9F0> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032eff54);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class common::WB943A9F0>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x3e9824  1724
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_004cc671(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e9846(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_common::WB943A9F0>::vftable;
  FUN_0082df80(&DAT_032eff54);
  FUN_00833b50();
  return;
}



void FUN_007e9884(void)

{
  undefined4 *unaff_EDI;
  undefined *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = &local_8;
  local_10 = &DAT_03058be8;
  FUN_007e9354(&local_10);
  if (unaff_EDI != (undefined4 *)0x0) {
    FUN_007bceb5();
    unaff_EDI[9] = local_8;
    *unaff_EDI = boost_132::detail::
                 sp_counted_base_impl<class_common::WB943A9F0*,struct_boost_132::serialization::detail::null_deleter>
                 ::vftable;
  }
  unaff_EDI[1] = 0;
  return;
}



int FUN_007e98c6(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007e993d(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  extended_type_info_typeid<class_common::WB943A9F0> *peVar6;
  
  FUN_0082ace0(*param_1);
  puVar1 = (undefined4 *)param_1[1];
  puVar3 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>
           ::get_instance();
  uVar4 = (**(code **)*puVar3)();
  FUN_00832c10(uVar4);
  puVar5 = (undefined4 *)FUN_00832bf0(puVar1,puVar3,&LAB_007bb703);
  if (puVar5 != puVar3) {
    uVar4 = puVar5[1];
    uVar2 = *puVar1;
    peVar6 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
             ::get_instance();
    uVar4 = FUN_0083e220(uVar4,peVar6,uVar2);
    *puVar1 = uVar4;
  }
  FUN_0082af90(*param_1);
  return;
}



void FUN_007e99e7(void)

{
  uint uVar1;
  undefined4 *in_EAX;
  undefined4 uVar2;
  oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
  *poVar3;
  int local_20;
  undefined4 local_1c;
  char *local_18;
  int *local_14;
  
  local_20 = (int)(in_EAX[4] - in_EAX[3]) >> 3;
  local_14 = &local_20;
  local_1c = 1;
  local_18 = "count";
  FUN_007bb1ae();
  local_14 = &local_1c;
  local_18 = "item_version";
  FUN_007bb1ae();
  uVar1 = in_EAX[3];
  if ((uint)in_EAX[4] < uVar1) {
    FUN_00a3fb10();
  }
  local_18 = (char *)*in_EAX;
  local_14 = (int *)uVar1;
  while (local_20 != 0) {
    local_20 = local_20 + -1;
    FUN_007c96e9();
    FUN_007f0e50();
    uVar2 = FUN_007c96e9();
    poVar3 = boost::serialization::
             singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
             ::get_instance();
    FUN_00830550(uVar2,poVar3);
  }
  return;
}



void FUN_007e9ac4(undefined4 param_1)

{
  undefined4 in_EAX;
  char **ppcVar1;
  int *piVar2;
  char *pcVar3;
  ushort local_1c [2];
  int local_18;
  int local_14;
  char *local_10;
  int *local_c;
  
  FUN_007ce2c9();
  local_18 = 0;
  FUN_00831450(local_1c);
  local_14 = 0;
  local_c = &local_18;
  local_10 = "count";
  FUN_007bb201();
  if (3 < local_1c[0]) {
    local_c = &local_14;
    local_10 = "item_version";
    FUN_007bb23d();
  }
  FUN_007f10ac(in_EAX,local_18);
  FUN_0046e65a();
  piVar2 = local_c;
  pcVar3 = local_10;
  while (local_18 != 0) {
    local_18 = local_18 + -1;
    ppcVar1 = (char **)FUN_007e9b76(param_1,pcVar3,piVar2);
    pcVar3 = *ppcVar1;
    piVar2 = (int *)ppcVar1[1];
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_007e9b76(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
  *piVar1;
  undefined4 uVar2;
  undefined4 *unaff_ESI;
  undefined4 *puVar3;
  undefined4 local_20;
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_20 = 0;
  local_1c = 0;
  local_8 = 0;
  piVar1 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
           ::get_instance();
  FUN_00832bd0(&local_20,piVar1);
  FUN_007ce26a(&local_20);
  puVar3 = &local_20;
  uVar2 = FUN_007ba0c6(puVar3);
  FUN_00831750(uVar2,puVar3);
  *unaff_ESI = param_2;
  local_8 = 0xffffffff;
  unaff_ESI[1] = param_3;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// class boost::serialization::void_cast_detail::void_caster const & __cdecl
// boost::serialization::void_cast_register<class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter>,class
// boost_132::detail::sp_counted_base>(class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> const *,class
// boost_132::detail::sp_counted_base const *)

void_caster * __cdecl
boost::serialization::
void_cast_register<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
          (sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>
           *param_1,sp_counted_base *param_2)

{
                    // 0x3e9c1e  6
                    // ??$void_cast_register@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@serialization@boost@@YAABVvoid_caster@void_cast_detail@01@PBV?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@PBVsp_counted_base@56@@Z
                    // 0x3e9c1e  708
                    // ?get_const_instance@?$singleton@V?$void_caster_primitive@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@serialization@boost@@@serialization@boost@@SAABV?$void_caster_primitive@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e9c7c();
    _atexit((_func_4879 *)&LAB_00c757ee);
  }
  return (void_caster *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007e9c23(undefined4 param_1)

{
  ___RTDynamicCast(param_1,0,&boost_132::detail::sp_counted_base::RTTI_Type_Descriptor,
                   &boost_132::detail::
                    sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>
                    ::RTTI_Type_Descriptor,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::void_cast_detail::void_caster_primitive<class
// boost_132::detail::sp_counted_base_impl<class common::WB943A9F0 *,struct
// boost::serialization::null_deleter>,class boost_132::detail::sp_counted_base> & __cdecl
// boost::serialization::singleton<class
// boost::serialization::void_cast_detail::void_caster_primitive<class
// boost_132::detail::sp_counted_base_impl<class common::WB943A9F0 *,struct
// boost::serialization::null_deleter>,class boost_132::detail::sp_counted_base>
// >::get_instance(void)

void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
          ::get_instance(void)

{
                    // 0x3e9c40  1028
                    // ?get_instance@?$singleton@V?$void_caster_primitive@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@serialization@boost@@@serialization@boost@@CAAAV?$void_caster_primitive@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e9c7c();
    _atexit((_func_4879 *)&LAB_00c757ee);
  }
  return (void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
          *)&`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
* FUN_007e9c7c(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>
           ::get_instance();
  _DAT_032eff60 =
       boost::serialization::
       singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
       ::get_instance();
  _DAT_032eff68 = 0;
  _DAT_032eff6c = 0;
  _t = boost::serialization::void_cast_detail::
       void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
       ::vftable;
  _DAT_032eff64 = peVar1;
  FUN_0083ddb0(0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007e9cda(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::detail::
                singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
                ::vftable;
  DAT_032f0007 = 1;
  FUN_007e9d03();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007e9d03(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::
             void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
             ::vftable;
  FUN_0083e150();
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 __thiscall FUN_007e9d2f(undefined4 param_1_00,byte param_1)

{
  FUN_007e9d03();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class common::WB943A9F0> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class common::WB943A9F0> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>
::get_const_instance(void)

{
                    // 0x3e9d4b  670
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e9d8c();
    _atexit((_func_4879 *)&LAB_00c75809);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class common::WB943A9F0> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class common::WB943A9F0> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>
::get_instance(void)

{
                    // 0x3e9d50  990
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007e9d8c();
    _atexit((_func_4879 *)&LAB_00c75809);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>
* FUN_007e9d8c(void)

{
  extended_type_info_typeid<class_common::WB943A9F0> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032eff78);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class common::WB943A9F0>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3e9de0  1623
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7e9dec;
  pvVar1 = operator_new(0x10);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_00b92800();
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_0049528a(param_1 + 9);
  return;
}



void Catch_All_007e9e4c(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007e9e59(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>::vftable;
  FUN_0082bbc0(&DAT_032eff78);
  FUN_00833fa0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// common::WB943A9F0> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class common::WB943A9F0>
// >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_common::WB943A9F0> *peVar1;
  
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7415b);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> > const &
// __cdecl boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
          ::get_const_instance(void)

{
                    // 0x3e9e9c  557
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7583a);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> > const &
// __cdecl boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> *peVar1;
  
                    // 0x3e9ea1  462
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7581f);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e9ea6(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e9ec8(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
          ::get_instance(void)

{
                    // 0x3e9eea  877
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7583a);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823> >
// >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> *peVar1;
  
                    // 0x3e9f34  782
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7581f);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007e9f84(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0009 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007e9fad(undefined4 *param_1_00,byte param_1)

{
  DAT_032f000a = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823>
// >::oserializer<class boost::archive::binary_oarchive,class boost::shared_ptr<class
// W71DA37B9::W1A7DB823> >(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
          (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
           *this)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_> *peVar1;
  
                    // 0x3e9fd6  15
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823>
// >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
::save_object_data(oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0x3e9ff0  1625
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  FUN_007ea173();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W1A7DB823>
// >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W1A7DB823>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3ea028  1494
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW1A7DB823@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007ea03e(param_2,param_3);
  return;
}



void __thiscall FUN_007ea03e(undefined *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined *local_2c;
  undefined ***pppuStack_28;
  undefined *local_24;
  undefined *local_20;
  undefined **local_1c [2];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c1c00a;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if (param_2 == 0) {
    puVar2 = (undefined4 *)
             boost::serialization::
             singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    local_2c = param_1_00;
    if (param_1_00 == (undefined *)0xfffffff7) {
      local_2c = (undefined *)0x0;
    }
    uVar3 = (**(code **)*puVar2)();
    FUN_00832c10(uVar3);
    local_20 = (undefined *)0x0;
    local_1c[0] = (undefined **)0x0;
    uStack_c = 0;
    pppuStack_28 = (undefined ***)&local_20;
    local_2c = &DAT_03058be0;
    FUN_007ea1e5(uVar1);
    pppuStack_28 = local_1c;
    local_2c = &DAT_03058be4;
    FUN_007bc2e0();
    local_2c = local_20;
    FUN_007bceec(local_1c);
    uStack_c._0_1_ = 1;
    FUN_0082c9b0(&local_2c);
    uStack_c = (uint)uStack_c._1_3_ << 8;
    if (pppuStack_28 != (undefined ***)0x0) {
      FUN_007bcf4f();
    }
    uStack_c = 0xffffffff;
    local_24 = local_20;
    if (local_1c[0] != (undefined **)0x0) {
      FUN_007bcf4f();
    }
  }
  else {
    local_1c[0] = &local_24;
    local_20 = &DAT_03058be0;
    FUN_007ea1e5(uVar1);
  }
  FUN_007e796e(param_1_00 + 0x1c);
  ExceptionList = local_14;
  return;
}



int __fastcall FUN_007ea173(int param_1)

{
  int iVar1;
  undefined2 extraout_var;
  int unaff_EBX;
  int *piVar2;
  
  if (unaff_EBX == 0) {
    piVar2 = (int *)0x0;
  }
  else {
    piVar2 = (int *)(unaff_EBX + -9);
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  iVar1 = **(int **)(param_1 + 4);
  FUN_007ea622();
  if (iVar1 == 0) {
    (**(code **)(*piVar2 + 0x10))(CONCAT22(extraout_var,0xffff));
    FUN_009b4100();
  }
  else {
    FUN_007ea4fb(piVar2,iVar1);
  }
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + -9;
  }
  return iVar1;
}



int __fastcall FUN_007ea1e5(int param_1)

{
  int iVar1;
  int unaff_ESI;
  
  if (unaff_ESI == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_ESI + -9;
  }
  if (iVar1 == -9) {
    iVar1 = 0;
  }
  FUN_007ea478(iVar1 + 9,*(undefined4 *)(param_1 + 4));
  if (unaff_ESI == 0) {
    return 0;
  }
  return unaff_ESI + -9;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3ea213  628
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ea254();
    _atexit((_func_4879 *)&LAB_00c75855);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> > >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3ea218  948
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ea254();
    _atexit((_func_4879 *)&LAB_00c75855);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
* FUN_007ea254(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f00ec);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007ea2a8(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> > >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3ea2ca  789
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7586b);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007ea31a(undefined4 *param_1_00,byte param_1)

{
  DAT_032f000c = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> >::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
::load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
                  *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void **ppvVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  bad_alloc local_24 [4];
  undefined *local_20;
  void ***local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3ea343  1581
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW1A7DB823@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7ea34f;
  puVar2 = (undefined4 *)operator_new(0x2c);
  local_8 = 0;
  local_18 = puVar2;
  if (puVar2 == (undefined4 *)0x0) {
    uVar3 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar3);
  }
  *param_2 = puVar2;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(puVar2);
  local_1c = &param_2;
  local_20 = &DAT_03058be8;
  FUN_007ea1e5();
  ppvVar1 = param_2;
  FUN_007bceb5();
  puVar2[9] = ppvVar1;
  local_8 = 0;
  *puVar2 = boost_132::detail::
            sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost_132::serialization::detail::null_deleter>
            ::vftable;
  puVar2[1] = 0;
  local_20 = (undefined *)0x0;
  local_1c = (void ***)puVar2;
  FUN_007ea429();
  return;
}



void Catch_All_007ea3d9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007ea3e6(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_008347f0(&DAT_032f00ec);
  FUN_00833fa0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W1A7DB823 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7586b);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



int __fastcall FUN_007ea429(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W1A7DB823*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



int FUN_007ea478(int param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *peVar5;
  
  puVar2 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  uVar3 = (**(code **)*puVar2)();
  FUN_00832c10(uVar3);
  puVar4 = (undefined4 *)FUN_00832bf0(param_2,puVar2,&LAB_007bc61f);
  if (puVar4 != puVar2) {
    uVar3 = puVar4[1];
    uVar1 = *param_2;
    peVar5 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
             ::get_instance();
    uVar3 = FUN_0083e220(uVar3,peVar5,uVar1);
    *param_2 = uVar3;
  }
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007ea4fb(undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2016e;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  piVar3 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
                  ::get_instance();
  uVar4 = ___RTtypeid(param_2,uVar2);
  piVar5 = (int *)FUN_00830d80(uVar4);
  if (piVar5 != (int *)0x0) goto LAB_007ea56b;
  uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
  local_c = 0;
  while( true ) {
    FUN_0043fc7f(uVar4);
LAB_007ea56b:
    cVar1 = FUN_00830f50(piVar5);
    if (cVar1 != '\0') break;
    iVar7 = FUN_0083e330(piVar5,piVar3,param_2);
    if (iVar7 == 0) {
      uVar9 = 1;
      uVar4 = (**(code **)(*piVar3 + 8))(1);
      uVar8 = (**(code **)(*piVar5 + 8))(uVar4);
      uVar4 = FUN_00832e60(10,uVar8,uVar4,uVar9);
      local_c = 1;
    }
    else {
      boost::serialization::
      singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>
      ::get_instance();
      iVar6 = FUN_00833f60(piVar5);
      if (iVar6 == 0) {
        iVar6 = 0;
      }
      else {
        iVar6 = iVar6 + -4;
      }
      if (iVar6 != 0) goto LAB_007ea607;
      piVar5 = (int *)0x2;
      uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
      local_c = 2;
    }
  }
  iVar6 = FUN_007ea622();
  iVar7 = param_2;
LAB_007ea607:
  FUN_00830570(iVar7,iVar6);
  ExceptionList = local_14;
  return;
}



undefined4 * FUN_007ea622(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W1A7DB823> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W1A7DB823> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>
::get_const_instance(void)

{
                    // 0x3ea64b  672
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ea6d2();
    _atexit((_func_4879 *)&LAB_00c7589c);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W1A7DB823> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W1A7DB823> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>
::get_const_instance(void)

{
                    // 0x3ea650  635
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ea726();
    _atexit((_func_4879 *)&LAB_00c75886);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W1A7DB823> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W1A7DB823> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *peVar1;
  
                    // 0x3ea655  479
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
                    // 0x3ea655  1053
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c758b2);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W1A7DB823> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W1A7DB823> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>
::get_instance(void)

{
                    // 0x3ea65a  992
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ea6d2();
    _atexit((_func_4879 *)&LAB_00c7589c);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W1A7DB823> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W1A7DB823> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>
::get_instance(void)

{
                    // 0x3ea696  955
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ea726();
    _atexit((_func_4879 *)&LAB_00c75886);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>
* FUN_007ea6d2(void)

{
  extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>::
       vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032f00e4);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>
* FUN_007ea726(void)

{
  extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>::
       vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f00dc);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007ea77a(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ea79c(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W1A7DB823> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W1A7DB823> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>
::get_instance(void)

{
                    // 0x3ea7be  887
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>::
    oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>
              ((oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c758cd);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W1A7DB823> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W1A7DB823> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *peVar1;
  
                    // 0x3ea808  799
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c758b2);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007ea858(undefined4 *param_1_00,byte param_1)

{
  DAT_032f000f = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ea881(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0010 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W1A7DB823>::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W1A7DB823>(void)

oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>::
oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>
          (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> *this)

{
  extended_type_info_typeid<class_W71DA37B9::W1A7DB823> *peVar1;
  
                    // 0x3ea8aa  25
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W1A7DB823>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>::
save_object_ptr(pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>
                *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> *poVar1;
  
                    // 0x3ea8c4  1696
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  FUN_00830550(param_2,poVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007ea90e(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>::
       vftable;
  FUN_00833f40(&DAT_032f00e4);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W1A7DB823>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>::
load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>
                *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3ea94c  1588
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7ea958;
  pvVar1 = operator_new(0x84);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007e88b4(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007eaa36();
  return;
}



void Catch_All_007ea9ba(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007ea9c7(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>::
       vftable;
  FUN_008347f0(&DAT_032f00dc);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W1A7DB823>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>::save_object_data
          (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> *this,
          basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> *local_8;
  
                    // 0x3eaa05  1635
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007eaa85();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W1A7DB823>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>::load_object_data
          (iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3eaa21  1511
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VW1A7DB823@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007eab29();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W1A7DB823> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W1A7DB823> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>
::get_const_instance(void)

{
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>::
    oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>
              ((oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c758cd);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W1A7DB823>_>::get_instance(void)'
          ::`2'::t;
}



int __fastcall FUN_007eaa36(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W1A7DB823>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



void FUN_007eaa85(void)

{
  int in_EAX;
  
  FUN_009b4100();
  FUN_007bcd43(in_EAX + 4,1);
  FUN_007eabb5();
  FUN_007eabf5();
  return;
}



void FUN_007eab29(void)

{
  int in_EAX;
  
  FUN_007c0bf9(in_EAX + 4);
  FUN_007cdaa7();
  FUN_007eac55();
  return;
}



int __fastcall FUN_007eabb5(int param_1)

{
  int in_EAX;
  int iVar1;
  
  if (in_EAX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = in_EAX + -9;
  }
  FUN_007cdb86(*(undefined4 *)(param_1 + 4));
  if (iVar1 != -9) {
    return iVar1;
  }
  return 0;
}



int __fastcall FUN_007eabf5(int param_1)

{
  undefined4 uVar1;
  int in_EAX;
  int iVar2;
  oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
  *poVar3;
  
  if (in_EAX == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = in_EAX + -9;
  }
  uVar1 = *(undefined4 *)(param_1 + 4);
  poVar3 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar3);
  if (iVar2 != -9) {
    return iVar2;
  }
  return 0;
}



int __fastcall FUN_007eac55(int param_1)

{
  undefined4 uVar1;
  int in_EAX;
  int iVar2;
  iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
  *piVar3;
  
  if (in_EAX == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = in_EAX + -9;
  }
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar3 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar3);
  if (iVar2 != -9) {
    return iVar2;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class common::WB943A9F0> > const &
// __cdecl boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class common::WB943A9F0> >
// >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
          ::get_const_instance(void)

{
                    // 0x3eacb5  562
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75903);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class common::WB943A9F0> > const &
// __cdecl boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class common::WB943A9F0> >
// >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_> *peVar1;
  
                    // 0x3eacba  467
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c758e8);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007eacbf(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007eace1(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class common::WB943A9F0> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class common::WB943A9F0> >
// >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
          ::get_instance(void)

{
                    // 0x3ead03  882
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75903);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class common::WB943A9F0> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class common::WB943A9F0> >
// >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_> *peVar1;
  
                    // 0x3ead4d  787
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c758e8);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007ead9d(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0011 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007eadc6(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0012 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class common::WB943A9F0>
// >::oserializer<class boost::archive::binary_oarchive,class boost::shared_ptr<class
// common::WB943A9F0> >(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
          (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
           *this)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_> *peVar1;
  
                    // 0x3eadef  20
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_common::WB943A9F0>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class common::WB943A9F0>
// >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
::save_object_data(oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0x3eae09  1630
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  FUN_007eaf8c();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class common::WB943A9F0>
// >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_common::WB943A9F0>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3eae41  1499
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VWB943A9F0@common@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007eae57(param_2,param_3);
  return;
}



void __thiscall FUN_007eae57(undefined *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined *local_2c;
  undefined ***pppuStack_28;
  undefined *local_24;
  undefined *local_20;
  undefined **local_1c [2];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c1c00a;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if (param_2 == 0) {
    puVar2 = (undefined4 *)
             boost::serialization::
             singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    local_2c = param_1_00;
    if (param_1_00 == (undefined *)0xfffffff7) {
      local_2c = (undefined *)0x0;
    }
    uVar3 = (**(code **)*puVar2)();
    FUN_00832c10(uVar3);
    local_20 = (undefined *)0x0;
    local_1c[0] = (undefined **)0x0;
    uStack_c = 0;
    pppuStack_28 = (undefined ***)&local_20;
    local_2c = &DAT_03058be0;
    FUN_007eaffe(uVar1);
    pppuStack_28 = local_1c;
    local_2c = &DAT_03058be4;
    FUN_007bc2e0();
    local_2c = local_20;
    FUN_007bceec(local_1c);
    uStack_c._0_1_ = 1;
    FUN_0082c9b0(&local_2c);
    uStack_c = (uint)uStack_c._1_3_ << 8;
    if (pppuStack_28 != (undefined ***)0x0) {
      FUN_007bcf4f();
    }
    uStack_c = 0xffffffff;
    local_24 = local_20;
    if (local_1c[0] != (undefined **)0x0) {
      FUN_007bcf4f();
    }
  }
  else {
    local_1c[0] = &local_24;
    local_20 = &DAT_03058be0;
    FUN_007eaffe(uVar1);
  }
  FUN_007e9376(param_1_00 + 0x1c);
  ExceptionList = local_14;
  return;
}



int __fastcall FUN_007eaf8c(int param_1)

{
  int iVar1;
  undefined2 extraout_var;
  int unaff_EBX;
  int *piVar2;
  
  if (unaff_EBX == 0) {
    piVar2 = (int *)0x0;
  }
  else {
    piVar2 = (int *)(unaff_EBX + -9);
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  iVar1 = **(int **)(param_1 + 4);
  FUN_007eb446();
  if (iVar1 == 0) {
    (**(code **)(*piVar2 + 0x10))(CONCAT22(extraout_var,0xffff));
    FUN_009b4100();
  }
  else {
    FUN_007eb31f(piVar2,iVar1);
  }
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + -9;
  }
  return iVar1;
}



int __fastcall FUN_007eaffe(int param_1)

{
  int iVar1;
  int unaff_ESI;
  
  if (unaff_ESI == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_ESI + -9;
  }
  if (iVar1 == -9) {
    iVar1 = 0;
  }
  FUN_007eb29c(iVar1 + 9,*(undefined4 *)(param_1 + 4));
  if (unaff_ESI == 0) {
    return 0;
  }
  return unaff_ESI + -9;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3eb02c  633
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007eb075();
    _atexit((_func_4879 *)&LAB_00c7591e);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> > >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3eb031  953
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007eb075();
    _atexit((_func_4879 *)&LAB_00c7591e);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3eb06d  474
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
                    // 0x3eb06d  1051
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75934);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined FUN_007eb072(void)

{
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
* FUN_007eb075(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032effa4);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007eb0c9(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> > >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3eb0eb  794
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75934);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007eb13b(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0014 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> >::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
::load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
                  *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void **ppvVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  bad_alloc local_24 [4];
  undefined *local_20;
  void ***local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3eb164  1586
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7eb170;
  puVar2 = (undefined4 *)operator_new(0x2c);
  local_8 = 0;
  local_18 = puVar2;
  if (puVar2 == (undefined4 *)0x0) {
    uVar3 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar3);
  }
  *param_2 = puVar2;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(puVar2);
  local_1c = &param_2;
  local_20 = &DAT_03058be8;
  FUN_007eaffe();
  ppvVar1 = param_2;
  FUN_007bceb5();
  puVar2[9] = ppvVar1;
  local_8 = 0;
  *puVar2 = boost_132::detail::
            sp_counted_base_impl<class_common::WB943A9F0*,struct_boost_132::serialization::detail::null_deleter>
            ::vftable;
  puVar2[1] = 0;
  local_20 = (undefined *)0x0;
  local_1c = (void ***)puVar2;
  FUN_007eb24d();
  return;
}



void Catch_All_007eb1fa(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007eb207(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_008347f0(&DAT_032effa4);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// common::WB943A9F0 *,struct boost::serialization::null_deleter> >::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3eb245  1506
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
                    // 0x3eb245  1544
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVWB943A9F0@common@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
  ::get_instance();
  return;
}



int __fastcall FUN_007eb24d(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_common::WB943A9F0*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



int FUN_007eb29c(int param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  extended_type_info_typeid<class_common::WB943A9F0> *peVar5;
  
  puVar2 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>
           ::get_instance();
  uVar3 = (**(code **)*puVar2)();
  FUN_00832c10(uVar3);
  puVar4 = (undefined4 *)FUN_00832bf0(param_2,puVar2,&LAB_007bc61f);
  if (puVar4 != puVar2) {
    uVar3 = puVar4[1];
    uVar1 = *param_2;
    peVar5 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
             ::get_instance();
    uVar3 = FUN_0083e220(uVar3,peVar5,uVar1);
    *param_2 = uVar3;
  }
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007eb31f(undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2016e;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  piVar3 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
                  ::get_instance();
  uVar4 = ___RTtypeid(param_2,uVar2);
  piVar5 = (int *)FUN_00830d80(uVar4);
  if (piVar5 != (int *)0x0) goto LAB_007eb38f;
  uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
  local_c = 0;
  while( true ) {
    FUN_0043fc7f(uVar4);
LAB_007eb38f:
    cVar1 = FUN_00830f50(piVar5);
    if (cVar1 != '\0') break;
    iVar7 = FUN_0083e330(piVar5,piVar3,param_2);
    if (iVar7 == 0) {
      uVar9 = 1;
      uVar4 = (**(code **)(*piVar3 + 8))(1);
      uVar8 = (**(code **)(*piVar5 + 8))(uVar4);
      uVar4 = FUN_00832e60(10,uVar8,uVar4,uVar9);
      local_c = 1;
    }
    else {
      boost::serialization::
      singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>
      ::get_instance();
      iVar6 = FUN_00833f60(piVar5);
      if (iVar6 == 0) {
        iVar6 = 0;
      }
      else {
        iVar6 = iVar6 + -4;
      }
      if (iVar6 != 0) goto LAB_007eb42b;
      piVar5 = (int *)0x2;
      uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
      local_c = 2;
    }
  }
  iVar6 = FUN_007eb446();
  iVar7 = param_2;
LAB_007eb42b:
  FUN_00830570(iVar7,iVar6);
  ExceptionList = local_14;
  return;
}



undefined4 * FUN_007eb446(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class common::WB943A9F0> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class common::WB943A9F0> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>
::get_const_instance(void)

{
                    // 0x3eb46f  685
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007eb4f1();
    _atexit((_func_4879 *)&LAB_00c75965);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class common::WB943A9F0> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class common::WB943A9F0> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>
::get_const_instance(void)

{
                    // 0x3eb474  648
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007eb545();
    _atexit((_func_4879 *)&LAB_00c7594f);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class common::WB943A9F0> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class common::WB943A9F0> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>
::get_instance(void)

{
                    // 0x3eb479  1005
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007eb4f1();
    _atexit((_func_4879 *)&LAB_00c75965);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class common::WB943A9F0> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class common::WB943A9F0> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>
::get_instance(void)

{
                    // 0x3eb4b5  968
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007eb545();
    _atexit((_func_4879 *)&LAB_00c7594f);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>
* FUN_007eb4f1(void)

{
  extended_type_info_typeid<class_common::WB943A9F0> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032effc0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>
* FUN_007eb545(void)

{
  extended_type_info_typeid<class_common::WB943A9F0> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032effcc);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class common::WB943A9F0>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>::save_object_ptr
          (pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x3eb599  1709
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_007cd5ae();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007eb5bc(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>::vftable;
  FUN_00833f40(&DAT_032effc0);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class common::WB943A9F0>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>::load_object_ptr
          (pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3eb5fa  1601
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWB943A9F0@common@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7eb606;
  pvVar1 = operator_new(0x10);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_00b92800();
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007cd5fd();
  return;
}



void Catch_All_007eb665(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007eb672(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>::vftable;
  FUN_008347f0(&DAT_032effcc);
  FUN_00833fa0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class common::WB943A9F0> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class common::WB943A9F0> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>
::get_const_instance(void)

{
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>::
    oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>
              ((oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75296);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class common::WB943A9F0> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class common::WB943A9F0> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_common::WB943A9F0> *peVar1;
  
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_common::WB943A9F0>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c7527b);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_common::WB943A9F0>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_007eb6ba(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined4 uVar1;
  
  *param_1 = W76AFA8BF::W1E24F913::vftable;
  basic_string<>(param_2);
  uVar1 = std::locale::locale((locale *)&param_2);
  FUN_007ec4d2(param_3,uVar1);
  std::locale::~locale((locale *)&param_2);
  uVar1 = std::locale::locale((locale *)&param_2);
  FUN_007ec4d2(param_4,uVar1);
  std::locale::~locale((locale *)&param_2);
  param_1[0x16] = param_5;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_007ebadd(int param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined auStack_bc [24];
  undefined4 uStack_a4;
  undefined *puStack_a0;
  undefined *puStack_9c;
  undefined local_88 [92];
  undefined *local_2c;
  int local_28;
  undefined4 local_24;
  int *local_20;
  int local_1c;
  undefined *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x78;
  local_20 = (int *)0x0;
  local_1c = 0;
  local_8 = 0;
  puStack_9c = *(undefined **)(param_1_00 + 0x58);
  puStack_a0 = local_88;
  uStack_a4 = 0x7ebb05;
  FUN_007d661f();
  puStack_9c = local_88;
  local_8 = CONCAT31(local_8._1_3_,1);
  puStack_a0 = (undefined *)0x7ebb18;
  cVar1 = FUN_007d6df5();
  if ((cVar1 == '\0') || (local_20 == (int *)0x0)) {
    cVar1 = '\0';
    puStack_9c = (undefined *)0xe3f9d12c;
  }
  else {
    puStack_9c = (undefined *)(param_1_00 + 4);
    puStack_a0 = (undefined *)0x7ebb3d;
    cVar1 = (**(code **)(*local_20 + 4))();
    if (cVar1 == '\0') {
      puStack_9c = (undefined *)0x499845a2;
      cVar1 = '\0';
    }
    else {
      puStack_9c = (undefined *)0x1;
      local_18 = auStack_bc;
      FUN_005d44b1();
      local_24 = param_1;
      local_2c = &LAB_007ebd4d;
      local_28 = param_1_00;
      FUN_007ec4ef();
      FUN_0072e1bd(&LAB_007ebbe8,local_1c);
      cVar1 = (**(code **)(*local_20 + 0x10))();
      if (cVar1 != '\0') goto LAB_007ebbbf;
      puStack_9c = (undefined *)0x51cbbe46;
    }
  }
  puStack_a0 = (undefined *)0x7ebbbe;
  FUN_00b940e0();
LAB_007ebbbf:
  local_8 = local_8 & 0xffffff00;
  puStack_9c = (undefined *)0x7ebbce;
  FUN_007d6af1();
  local_8 = 0xffffffff;
  if (local_1c != 0) {
    puStack_9c = (undefined *)0x7ebbde;
    FUN_0040127a();
  }
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_007ebf37(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined *puVar2;
  int unaff_ESI;
  undefined local_2c [8];
  int *local_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x7ebf43;
  puVar2 = (undefined *)FUN_00b746c0();
  puVar2[6] = 1;
  puVar2[7] = 0;
  puVar2[2] = 1;
  *puVar2 = 1;
  FUN_00b748b0(local_2c,unaff_ESI + 4,puVar2);
  local_8 = 0;
  cVar1 = (**(code **)(*local_24 + 4))();
  if (cVar1 != '\0') {
    cVar1 = FUN_007ebfb6(param_1,param_2);
    if (cVar1 == '\0') {
      FUN_00b940e0(0xd6ad1d48);
    }
  }
  local_8 = 0xffffffff;
  FUN_00b747e0();
  return cVar1;
}



uint __thiscall FUN_007ebfb6(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  char cVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  uint uVar3;
  bool bVar4;
  int local_60;
  undefined local_5c [4];
  undefined4 local_58;
  int local_54;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c3d0d9;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_58 = 0;
  local_54 = 0;
  if (param_2 == 1) {
    local_c = 0;
    cVar1 = (**(code **)*param_1_00)();
    if (cVar1 != '\0') {
      FUN_00502a6a();
      local_c._0_1_ = 1;
      FUN_005d11c9();
      *(undefined *)(local_60 + 0xc) = 1;
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_005029ba();
      local_c._0_1_ = 2;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 (local_60 + 0x10),pbVar2,0,0xffffffff);
      local_c = CONCAT31(local_c._1_3_,1);
      FUN_004017b2();
                    // WARNING: Subroutine does not return
      FUN_0043c023(local_5c);
    }
  }
  else {
    local_c = 3;
    cVar1 = FUN_007ec1d5();
    if (cVar1 != '\0') {
      FUN_006230b2();
      local_c._0_1_ = 4;
      FUN_005d11c9();
      *(undefined *)(local_60 + 0xc) = 1;
      bVar4 = param_2 != 2;
      if (bVar4) {
        pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 FUN_00622fab();
        local_c = 6;
      }
      else {
        pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 FUN_00623000();
        local_c = CONCAT31(local_c._1_3_,5);
      }
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 (local_60 + 0x10),pbVar2,0,0xffffffff);
      if (bVar4) {
        FUN_004017b2();
      }
      local_c = 4;
      if (!bVar4) {
        FUN_004017b2();
      }
                    // WARNING: Subroutine does not return
      FUN_0043c023(local_5c);
    }
  }
  uVar3 = FUN_00b940e0();
  local_c = 0xffffffff;
  if (local_54 != 0) {
    uVar3 = FUN_0040127a();
  }
  ExceptionList = local_14;
  return uVar3 & 0xffffff00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_007ec1d5(undefined4 *param_1)

{
  undefined4 *puVar1;
  char cVar2;
  int *unaff_ESI;
  uint uStack_68;
  undefined4 *puStack_64;
  uint *puStack_60;
  uint *puStack_5c;
  undefined auStack_58 [8];
  uint *puStack_50;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  undefined4 *puStack_44;
  uint local_30;
  uint *local_2c;
  undefined local_28 [4];
  undefined4 **local_24;
  uint local_20;
  undefined *local_1c;
  uint *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x7ec1e1;
  puStack_44 = (undefined4 *)local_28;
  uStack_48 = 0x7ec1ea;
  FUN_006231d0();
  puStack_44 = param_1;
  local_8 = 0;
  uStack_48 = 0x7ec1f8;
  FUN_005d11c9();
  local_8 = 0xffffffff;
  if (local_24 != (undefined4 **)0x0) {
    puStack_44 = (undefined4 *)0x7ec208;
    FUN_0040127a();
  }
  puStack_44 = (undefined4 *)0x0;
  uStack_48 = 0;
  uStack_4c = 0x7ec211;
  (**(code **)(*unaff_ESI + 0x28))();
  uStack_4c = 4;
  local_1c = auStack_58;
  puStack_50 = &local_20;
  auStack_58[0] = 0;
  puStack_5c = (uint *)0x7ec22b;
  cVar2 = (**(code **)(*unaff_ESI + 0xc))();
  if (cVar2 == '\0') {
    puStack_5c = (uint *)0x8a615fe2;
    puStack_60 = (uint *)0x7ec240;
    FUN_00b940e0();
  }
  for (local_1c = (undefined *)0x0; (cVar2 != '\0' && (local_1c < local_20));
      local_1c = (undefined *)((int)local_1c + 1)) {
    puStack_5c = (uint *)0x8;
    local_18 = &uStack_68;
    puStack_60 = &local_30;
    uStack_68 = uStack_68 & 0xffffff00;
    cVar2 = (**(code **)(*unaff_ESI + 0xc))();
    if (cVar2 == '\0') {
      puStack_5c = (uint *)0xaedd63cb;
      puStack_60 = (uint *)0x7ec285;
      FUN_00b940e0();
    }
    else if (local_2c != (uint *)0x0) {
      local_18 = (undefined4 *)0x0;
      local_8 = 1;
      puStack_5c = local_2c;
      puStack_60 = (uint *)0x7ec2a6;
      cVar2 = FUN_00bb1450();
      puVar1 = local_18;
      if (cVar2 == '\0') {
        puStack_5c = (uint *)0x372c5cf;
        puStack_60 = (uint *)0x7ec2bc;
        FUN_00b940e0();
      }
      else {
        local_18 = (undefined4 *)0x0;
        puStack_60 = puStack_5c;
        local_24 = &puStack_64;
        puStack_64 = puVar1;
        uStack_68 = local_30;
        FUN_00b664bc(&puStack_60);
        puStack_64 = (undefined4 *)*param_1;
        uStack_68 = 0x7ec2eb;
        FUN_00b6664a();
      }
      local_8 = 0xffffffff;
      if (local_18 != (undefined4 *)0x0) {
        puStack_5c = (uint *)0x1;
        puStack_60 = (uint *)0x7ec2fc;
        (**(code **)*local_18)();
      }
    }
  }
  return cVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_007ec30f(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7ec31b;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00dd8aa8,3);
  local_8 = 0;
  local_18 = 0x8b409993;
  local_14 = 0x463d5486;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_007ec360(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7ec36c;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00dd8ab0,8);
  local_8 = 0;
  local_18 = 0xfbc9ddd7;
  local_14 = 0x3a4dd3af;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_007ec3b1(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7ec3bd;
  local_14 = 0;
  uVar1 = basic_string<>(&DAT_00dd8ac4,5);
  local_8 = 0;
  local_18 = 0x2040a362;
  local_14 = 0xdcfcea64;
  FUN_00b94470(&local_18,uVar1);
  FUN_00401829(1,0);
  return param_1;
}



int __fastcall FUN_007ec453(int param_1)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  int in_EAX;
  int iVar4;
  undefined4 *puVar5;
  int iVar6;
  undefined4 *puVar7;
  undefined4 *puVar8;
  
  uVar1 = *(undefined4 *)(in_EAX + 0x14);
  if (*(uint *)(in_EAX + 0x18) < 8) {
    iVar4 = in_EAX + 4;
  }
  else {
    iVar4 = *(int *)(in_EAX + 4);
  }
  iVar2 = *(int *)(param_1 + 0x14);
  if (iVar2 != 0) {
    uVar3 = *(uint *)(param_1 + 0x18);
    puVar8 = (undefined4 *)(param_1 + 4);
    puVar5 = puVar8;
    if (7 < uVar3) {
      puVar5 = (undefined4 *)*puVar8;
    }
    puVar7 = puVar8;
    if (7 < uVar3) {
      puVar7 = (undefined4 *)*puVar8;
    }
    for (; puVar7 < (undefined4 *)((int)puVar5 + iVar2 * 2);
        puVar7 = (undefined4 *)((int)puVar7 + 2)) {
      iVar6 = FUN_004210aa(iVar4,*(undefined2 *)puVar7,uVar1);
      if (iVar6 == 0) {
        if (7 < uVar3) {
          puVar8 = (undefined4 *)*puVar8;
        }
        return (int)puVar7 - (int)puVar8 >> 1;
      }
    }
  }
  return -1;
}



void FUN_007ec4d2(undefined4 param_1,undefined4 param_2)

{
  FUN_007ec535(param_1,param_2);
  return;
}



void FUN_007ec4ef(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_10 = param_1;
  uStack_c = param_2;
  uStack_8 = param_3;
  cVar1 = FUN_007f2630(&local_10);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_10;
      unaff_EBX[3] = uStack_c;
      unaff_EBX[4] = uStack_8;
    }
    *unaff_EBX = &DAT_0305d985;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



void FUN_007ec535(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  int unaff_EBX;
  
  puVar5 = (undefined4 *)FUN_00428a20();
  uVar1 = *puVar5;
  uVar2 = puVar5[1];
  puVar5 = (undefined4 *)FUN_004289f0();
  uVar3 = *puVar5;
  uVar4 = puVar5[1];
  *(undefined4 *)(unaff_EBX + 0x18) = 7;
  FUN_0040180b(0);
  FUN_007ec689(unaff_EBX,uVar3,uVar4,param_2,uVar1,uVar2,param_2,param_2);
  return;
}



void FUN_007ec5ae(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007ec63d(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::mf4<bool,class_W76AFA8BF::W1E24F913,class_W3CA43D38::W7D89EDB2&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::list5<class_boost::_bi::value<class_W76AFA8BF::W1E24F913*>,class_boost::reference_wrapper<class_W3CA43D38::W7D89EDB2>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_007ec63d(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::mf4<bool,class_W76AFA8BF::W1E24F913,class_W3CA43D38::W7D89EDB2&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::list5<class_boost::_bi::value<class_W76AFA8BF::W1E24F913*>,class_boost::reference_wrapper<class_W3CA43D38::W7D89EDB2>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::mf4<bool,class_W76AFA8BF::W1E24F913,class_W3CA43D38::W7D89EDB2&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>_>,class_boost::_bi::list5<class_boost::_bi::value<class_W76AFA8BF::W1E24F913*>,class_boost::reference_wrapper<class_W3CA43D38::W7D89EDB2>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007ec689(void)

{
  wchar_t wVar1;
  char cVar2;
  undefined2 uVar3;
  wchar_t *pwVar4;
  int *piVar5;
  undefined4 param_4;
  
  while( true ) {
    cVar2 = FUN_00412797(&stack0x00000014);
    if (cVar2 != '\0') break;
    pwVar4 = std::
             _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                          *)&stack0x00000008);
    wVar1 = *pwVar4;
    piVar5 = (int *)FUN_00413d06(param_4);
    uVar3 = (**(code **)(*piVar5 + 0x18))(wVar1);
    FID_conflict_append(1,uVar3);
    FUN_00847800();
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_007ec6dd(void)

{
  FUN_00401829(1,0);
  __CxxThrowException_8(0,0);
  return;
}



void FUN_007ed34e(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_0305d995;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



void FUN_007ed397(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_14 = param_1;
  uStack_10 = param_2;
  uStack_c = param_3;
  uStack_8 = param_4;
  cVar1 = FUN_007f2630(&local_14);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_14;
      unaff_EBX[3] = uStack_10;
      unaff_EBX[4] = uStack_c;
      unaff_EBX[5] = uStack_8;
    }
    *unaff_EBX = &DAT_0305d99d;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



void FUN_007ed3df(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007ed4f3(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(unsigned_int&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list4<class_boost::reference_wrapper<unsigned_int>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007ed466(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007ed53c(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(bool&,class_std::map<enum_W71DA37B9::W8335E0D3::Type,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,struct_std::less<enum_W71DA37B9::W8335E0D3::Type>,class_std::allocator<struct_std::pair<enum_W71DA37B9::W8335E0D3::Type_const_,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>&,class_WE711C61D::W00A9C67E&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list6<class_boost::reference_wrapper<bool>,class_boost::reference_wrapper<class_std::map<enum_W71DA37B9::W8335E0D3::Type,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,struct_std::less<enum_W71DA37B9::W8335E0D3::Type>,class_std::allocator<struct_std::pair<enum_W71DA37B9::W8335E0D3::Type_const_,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>_>,class_boost::reference_wrapper<class_WE711C61D::W00A9C67E>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007ed4f3(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(unsigned_int&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list4<class_boost::reference_wrapper<unsigned_int>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<bool,bool_(__cdecl*)(unsigned_int&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list4<class_boost::reference_wrapper<unsigned_int>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void __fastcall FUN_007ed53c(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(bool&,class_std::map<enum_W71DA37B9::W8335E0D3::Type,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,struct_std::less<enum_W71DA37B9::W8335E0D3::Type>,class_std::allocator<struct_std::pair<enum_W71DA37B9::W8335E0D3::Type_const_,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>&,class_WE711C61D::W00A9C67E&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list6<class_boost::reference_wrapper<bool>,class_boost::reference_wrapper<class_std::map<enum_W71DA37B9::W8335E0D3::Type,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,struct_std::less<enum_W71DA37B9::W8335E0D3::Type>,class_std::allocator<struct_std::pair<enum_W71DA37B9::W8335E0D3::Type_const_,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>_>,class_boost::reference_wrapper<class_WE711C61D::W00A9C67E>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<bool,bool_(__cdecl*)(bool&,class_std::map<enum_W71DA37B9::W8335E0D3::Type,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,struct_std::less<enum_W71DA37B9::W8335E0D3::Type>,class_std::allocator<struct_std::pair<enum_W71DA37B9::W8335E0D3::Type_const_,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>&,class_WE711C61D::W00A9C67E&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list6<class_boost::reference_wrapper<bool>,class_boost::reference_wrapper<class_std::map<enum_W71DA37B9::W8335E0D3::Type,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>,struct_std::less<enum_W71DA37B9::W8335E0D3::Type>,class_std::allocator<struct_std::pair<enum_W71DA37B9::W8335E0D3::Type_const_,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_>_>_>_>,class_boost::reference_wrapper<class_WE711C61D::W00A9C67E>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007ed589(undefined4 *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  undefined *local_74;
  int iStack_70;
  undefined4 uStack_6c;
  undefined *puStack_68;
  undefined **ppuStack_64;
  undefined local_50 [24];
  undefined local_38 [16];
  undefined local_28 [8];
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined **local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0x7ed595;
  local_14[0] = (undefined **)0x0;
  ppuStack_64 = (undefined **)local_14;
  puStack_68 = local_50;
  uStack_6c = 0x7ed5a8;
  puVar2 = (undefined4 *)FUN_005d491b();
  local_20 = *puVar2;
  local_1c = puVar2[1];
  local_14[0] = (undefined **)param_1[6];
  local_18 = *param_1;
  ppuStack_64 = (undefined **)0x7ed5c9;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    ppuStack_64 = (undefined **)0x0;
    puStack_68 = (undefined *)0x0;
    uStack_6c = 0;
    iStack_70 = 0x7ed5db;
    iStack_70 = FUN_006badde();
    iStack_70 = iStack_70 + 4;
    local_74 = local_38;
    puVar2 = (undefined4 *)FUN_0046752c();
    local_8 = 0;
    local_74 = (undefined *)*puVar2;
    local_14[0] = &local_74;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar2 + 1);
  }
  ppuStack_64 = (undefined **)local_14;
  puStack_68 = local_50;
  local_14[0] = (undefined **)0x1;
  uStack_6c = 0x7ed6ab;
  puVar2 = (undefined4 *)FUN_005d491b();
  local_20 = *puVar2;
  local_1c = puVar2[1];
  local_14[0] = (undefined **)param_1[6];
  local_18 = *param_1;
  ppuStack_64 = (undefined **)0x7ed6cc;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    ppuStack_64 = (undefined **)0x0;
    puStack_68 = (undefined *)0x0;
    uStack_6c = 0;
    iStack_70 = 0x7ed6de;
    iStack_70 = FUN_006badde();
    iStack_70 = iStack_70 + 4;
    local_74 = local_28;
    puVar2 = (undefined4 *)FUN_0046752c();
    local_8 = 3;
    local_74 = (undefined *)*puVar2;
    local_14[0] = &local_74;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar2 + 1);
  }
  ppuStack_64 = (undefined **)local_14;
  puStack_68 = local_50;
  local_14[0] = (undefined **)0x2;
  uStack_6c = 0x7ed7b2;
  puVar2 = (undefined4 *)FUN_005d491b();
  local_20 = *puVar2;
  local_1c = puVar2[1];
  local_14[0] = (undefined **)param_1[6];
  local_18 = *param_1;
  ppuStack_64 = (undefined **)0x7ed7d3;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    ppuStack_64 = (undefined **)0x0;
    puStack_68 = (undefined *)0x0;
    uStack_6c = 0;
    iStack_70 = 0x7ed7e5;
    iStack_70 = FUN_006badde();
    iStack_70 = iStack_70 + 4;
    local_74 = local_28;
    puVar2 = (undefined4 *)FUN_0046752c();
    local_8 = 6;
    local_74 = (undefined *)*puVar2;
    local_14[0] = &local_74;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar2 + 1);
  }
  ppuStack_64 = (undefined **)local_14;
  puStack_68 = local_50;
  local_14[0] = (undefined **)0x3;
  uStack_6c = 0x7ed8b9;
  puVar2 = (undefined4 *)FUN_005d491b();
  local_20 = *puVar2;
  local_1c = puVar2[1];
  local_14[0] = (undefined **)param_1[6];
  local_18 = *param_1;
  ppuStack_64 = (undefined **)0x7ed8da;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    ppuStack_64 = (undefined **)0x0;
    puStack_68 = (undefined *)0x0;
    uStack_6c = 0;
    iStack_70 = 0x7ed8ec;
    iStack_70 = FUN_006badde();
    iStack_70 = iStack_70 + 4;
    local_74 = local_28;
    puVar2 = (undefined4 *)FUN_0046752c();
    local_8 = 9;
    local_74 = (undefined *)*puVar2;
    local_14[0] = &local_74;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar2 + 1);
  }
  ppuStack_64 = (undefined **)local_14;
  puStack_68 = local_50;
  local_14[0] = (undefined **)0x4;
  uStack_6c = 0x7ed9c0;
  puVar2 = (undefined4 *)FUN_005d491b();
  local_20 = *puVar2;
  local_1c = puVar2[1];
  local_14[0] = (undefined **)param_1[6];
  local_18 = *param_1;
  ppuStack_64 = (undefined **)0x7ed9e1;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    ppuStack_64 = (undefined **)0x0;
    puStack_68 = (undefined *)0x0;
    uStack_6c = 0;
    iStack_70 = 0x7ed9f3;
    iStack_70 = FUN_006badde();
    iStack_70 = iStack_70 + 4;
    local_74 = local_28;
    puVar2 = (undefined4 *)FUN_0046752c();
    local_8 = 0xc;
    local_74 = (undefined *)*puVar2;
    local_14[0] = &local_74;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar2 + 1);
  }
  ppuStack_64 = (undefined **)local_14;
  puStack_68 = local_50;
  local_14[0] = (undefined **)0x5;
  uStack_6c = 0x7edac7;
  puVar2 = (undefined4 *)FUN_005d491b();
  local_20 = *puVar2;
  local_1c = puVar2[1];
  local_14[0] = (undefined **)param_1[6];
  local_18 = *param_1;
  ppuStack_64 = (undefined **)0x7edae8;
  cVar1 = FUN_006b8eca();
  if (cVar1 == '\0') {
    ppuStack_64 = (undefined **)0x0;
    puStack_68 = (undefined *)0x0;
    uStack_6c = 0;
    iStack_70 = 0x7edafa;
    iStack_70 = FUN_006badde();
    iStack_70 = iStack_70 + 4;
    local_74 = local_50;
    puVar2 = (undefined4 *)FUN_0046752c();
    local_8 = 0xf;
    local_74 = (undefined *)*puVar2;
    local_14[0] = &local_74;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar2 + 1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007edbc0(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W76AFA8BF::W87615F10::vftable;
    puVar2[1] = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007edc4f(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void __thiscall FUN_007edc2d(int param_1_00,undefined4 param_1)

{
  FUN_007b70c6(param_1,*(undefined4 *)(param_1_00 + 4));
  return;
}



void __thiscall FUN_007edc3e(int param_1_00,undefined4 param_1)

{
  FUN_007b7120(param_1,*(undefined4 *)(param_1_00 + 4));
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007edc4f(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76AFA8BF::W87615F10>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007edc95(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_007edd19(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W76AFA8BF::WCF5468EE::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_007edd36(int *param_1)

{
  int iVar1;
  char cVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined4 uVar5;
  undefined local_1c [4];
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x7edd42;
  (**(code **)(*param_1 + 0x18))(local_1c,0);
  local_8 = 0;
  puVar3 = (undefined4 *)FUN_00ba54e8();
  piVar4 = (int *)FUN_00419e85(*puVar3);
  iVar1 = *piVar4;
  local_8 = 0xffffffff;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  if ((~-(uint)(iVar1 != 1) & 0x7a491c) == 0) {
    cVar2 = FUN_007b754b(param_1,10);
    if (cVar2 == '\0') {
      uVar5 = 0x5ae7d436;
    }
    else {
      cVar2 = FUN_007b7636(0);
      if (cVar2 == '\0') {
        uVar5 = 0x2409bd6f;
      }
      else {
        cVar2 = FUN_007b76d3();
        if (cVar2 == '\0') {
          uVar5 = 0x85a50e39;
        }
        else {
          cVar2 = FUN_007b7451(param_1);
          if (cVar2 == '\0') {
            uVar5 = 0x96ad0d3d;
          }
          else {
            cVar2 = FUN_007b7768(1);
            if (cVar2 != '\0') {
              return cVar2;
            }
            uVar5 = 0xdc1bc5da;
          }
        }
      }
    }
    FUN_00b940e0(uVar5);
  }
  else {
    FUN_00b940e0(0xa5c16790);
  }
  return '\0';
}



void Catch_All_007ede7f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007ede96(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W76AFA8BF::W5B68AA9D::vftable;
    puVar2[1] = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007ee0cb(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



uint FUN_007edf03(int *param_1)

{
  char cVar1;
  int *piVar2;
  uint uVar3;
  int iVar4;
  int iStack_34;
  undefined auStack_28 [12];
  void *pvStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c32708;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  (**(code **)(*param_1 + 0x18))();
  local_14 = (void *)0x0;
  FUN_00ba54e8();
  piVar2 = (int *)FUN_00419e85();
  iVar4 = *piVar2;
  local_14 = (void *)0xffffffff;
  if (iStack_34 != 0) {
    FUN_0040127a();
  }
  if ((~-(uint)(iVar4 != 1) & 0x7a491c) == 0) {
    cVar1 = FUN_007b754b();
    if ((((cVar1 != '\0') && (cVar1 = FUN_007b7636(), cVar1 != '\0')) &&
        (cVar1 = FUN_007b76d3(), cVar1 != '\0')) && (cVar1 = FUN_007b7451(), cVar1 != '\0')) {
      iVar4 = FUN_00465be3(auStack_28);
      local_14 = (void *)0x1;
                    // WARNING: Subroutine does not return
      FUN_0043c023(iVar4 + 4);
    }
    uVar3 = FUN_00b940e0();
  }
  else {
    uVar3 = FUN_00b940e0();
  }
  ExceptionList = pvStack_1c;
  return uVar3 & 0xffffff00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007ee0cb(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76AFA8BF::W5B68AA9D>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007ee111(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_007ee1db(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007ee1f2(undefined4 *param_1)

{
  *param_1 = W76AFA8BF::WA36B9095::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  *(undefined *)(param_1 + 3) = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 4));
  FUN_007cc480(param_1 + 0xb);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007ee234(undefined4 *param_1_00,byte param_1)

{
  FUN_00502d9b();
  FUN_004017b2(1,0);
  if (param_1_00[2] != 0) {
    FUN_0040127a();
  }
  *param_1_00 = W3CA43D38::WF45DE894::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: static struct boost::archive::detail::extra_detail::guid_initializer<class
// W76AFA8BF::WA36B9095> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class W76AFA8BF::WA36B9095>
// >::get_mutable_instance(void)

guid_initializer<class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>_>
::get_mutable_instance(void)

{
                    // 0x3ee286  1044
                    // ?get_mutable_instance@?$singleton@U?$guid_initializer@VWA36B9095@W76AFA8BF@@@extra_detail@detail@archive@boost@@@serialization@boost@@SAAAU?$guid_initializer@VWA36B9095@W76AFA8BF@@@extra_detail@detail@archive@3@XZ
  if ((`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c7597b);
  }
  return (guid_initializer<class_W76AFA8BF::WA36B9095> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// private: static struct boost::archive::detail::extra_detail::guid_initializer<class
// W76AFA8BF::WA36B9095> & __cdecl boost::serialization::singleton<struct
// boost::archive::detail::extra_detail::guid_initializer<class W76AFA8BF::WA36B9095>
// >::get_instance(void)

guid_initializer<class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>_>
::get_instance(void)

{
                    // 0x3ee28b  724
                    // ?get_instance@?$singleton@U?$guid_initializer@VWA36B9095@W76AFA8BF@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAU?$guid_initializer@VWA36B9095@W76AFA8BF@@@extra_detail@detail@archive@3@XZ
  if ((`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    _atexit((_func_4879 *)&LAB_00c7597b);
  }
  return (guid_initializer<class_W76AFA8BF::WA36B9095> *)
         &`private:_static_struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<struct_boost::archive::detail::extra_detail::guid_initializer<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::WA36B9095> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::WA36B9095> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>
::get_const_instance(void)

{
                    // 0x3ee2ac  683
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3ee2ac  1465
                    // ?instantiate@?$ptr_serialization_support@Vbinary_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ee3d0();
    _atexit((_func_4879 *)&LAB_00c759c5);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::WA36B9095> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::WA36B9095> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>
::get_const_instance(void)

{
                    // 0x3ee2b1  698
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3ee2b1  1483
                    // ?instantiate@?$ptr_serialization_support@Vxml_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ee478();
    _atexit((_func_4879 *)&LAB_00c75999);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::WA36B9095> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::WA36B9095> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>
::get_const_instance(void)

{
                    // 0x3ee2b6  668
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3ee2b6  1474
                    // ?instantiate@?$ptr_serialization_support@Vxml_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ee4cc();
    _atexit((_func_4879 *)&LAB_00c75983);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::WA36B9095> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::WA36B9095> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>
::get_const_instance(void)

{
                    // 0x3ee2bb  646
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3ee2bb  1456
                    // ?instantiate@?$ptr_serialization_support@Vbinary_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@UAEXXZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ee424();
    _atexit((_func_4879 *)&LAB_00c759af);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W76AFA8BF::WA36B9095> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W76AFA8BF::WA36B9095> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W76AFA8BF::WA36B9095> *peVar1;
  
                    // 0x3ee2c0  539
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3ee2c0  1086
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c759db);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::WA36B9095> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::WA36B9095> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>
::get_instance(void)

{
                    // 0x3ee2c5  1003
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ee3d0();
    _atexit((_func_4879 *)&LAB_00c759c5);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::WA36B9095> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::WA36B9095> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>
::get_instance(void)

{
                    // 0x3ee301  966
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ee424();
    _atexit((_func_4879 *)&LAB_00c759af);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::WA36B9095> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::WA36B9095> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>
::get_instance(void)

{
                    // 0x3ee33d  1018
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ee478();
    _atexit((_func_4879 *)&LAB_00c75999);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::WA36B9095> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::WA36B9095> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>
::get_instance(void)

{
                    // 0x3ee379  988
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ee4cc();
    _atexit((_func_4879 *)&LAB_00c75983);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::WA36B9095> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::WA36B9095> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>
::get_const_instance(void)

{
                    // 0x3ee3b5  579
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3ee3b5  1109
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>::
    oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>
              ((oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75a2c);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007ee3ba(undefined4 *param_1)

{
  if (param_1 != (undefined4 *)0x0) {
    (**(code **)*param_1)(1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W76AFA8BF::WA36B9095> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W76AFA8BF::WA36B9095> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>
::get_const_instance(void)

{
                    // 0x3ee3cb  619
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
                    // 0x3ee3cb  1124
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vxml_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>::
    oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>
              ((oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c759f6);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>
* FUN_007ee3d0(void)

{
  extended_type_info_typeid<class_W76AFA8BF::WA36B9095> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>::
       vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032f00cc);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>
* FUN_007ee424(void)

{
  extended_type_info_typeid<class_W76AFA8BF::WA36B9095> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>::
       vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f00c4);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>
* FUN_007ee478(void)

{
  extended_type_info_typeid<class_W76AFA8BF::WA36B9095> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032f00bc);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>
* FUN_007ee4cc(void)

{
  extended_type_info_typeid<class_W76AFA8BF::WA36B9095> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f00b4);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007ee520(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ee542(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ee564(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ee586(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::WA36B9095> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::WA36B9095> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>
::get_instance(void)

{
                    // 0x3ee5a8  899
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>::
    oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>
              ((oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75a2c);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::WA36B9095> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::WA36B9095> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W76AFA8BF::WA36B9095> *peVar1;
  
                    // 0x3ee5f2  811
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75a11);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::WA36B9095> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::WA36B9095> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>
::get_instance(void)

{
                    // 0x3ee642  939
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>::
    oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>
              ((oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c759f6);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::WA36B9095> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::WA36B9095> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W76AFA8BF::WA36B9095> *peVar1;
  
                    // 0x3ee68c  859
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c759db);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007ee6dc(undefined4 *param_1_00,byte param_1)

{
  DAT_032f001c = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ee705(undefined4 *param_1_00,byte param_1)

{
  DAT_032f001d = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ee72e(undefined4 *param_1_00,byte param_1)

{
  DAT_032f001e = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007ee757(undefined4 *param_1_00,byte param_1)

{
  DAT_032f001f = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::WA36B9095>::oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::WA36B9095>(void)

oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>::
oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>
          (oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> *this)

{
  extended_type_info_typeid<class_W76AFA8BF::WA36B9095> *peVar1;
  
                    // 0x3ee780  37
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W76AFA8BF::WA36B9095>::oserializer<class boost::archive::xml_oarchive,class
// W76AFA8BF::WA36B9095>(void)

oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>::
oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>
          (oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> *this)

{
  extended_type_info_typeid<class_W76AFA8BF::WA36B9095> *peVar1;
  
                    // 0x3ee79a  77
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W76AFA8BF::WA36B9095>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W76AFA8BF::WA36B9095>
// >::get_const_instance(void)

extended_type_info_typeid<class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>::
get_const_instance(void)

{
                    // 0x3ee7b4  451
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VWA36B9095@W76AFA8BF@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VWA36B9095@W76AFA8BF@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ee7f5();
    _atexit((_func_4879 *)&LAB_00c75a47);
  }
  return (extended_type_info_typeid<class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W76AFA8BF::WA36B9095>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W76AFA8BF::WA36B9095> >::get_instance(void)

extended_type_info_typeid<class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>::
get_instance(void)

{
                    // 0x3ee7b9  771
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VWA36B9095@W76AFA8BF@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VWA36B9095@W76AFA8BF@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ee7f5();
    _atexit((_func_4879 *)&LAB_00c75a47);
  }
  return (extended_type_info_typeid<class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>
* FUN_007ee7f5(void)

{
  FUN_008308e0("E8458186-8900-4D05-F782-1F2737AF1B45");
  _t = boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>::vftable;
  FUN_00830c60(&W76AFA8BF::WA36B9095::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007ee848(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::WA36B9095>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>::
save_object_ptr(pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>
                *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> *poVar1;
  
                    // 0x3ee889  1707
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  FUN_00830550(param_2,poVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007ee8d3(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>::
       vftable;
  FUN_00833f40(&DAT_032f00cc);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::WA36B9095>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>::
load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>
                *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3ee911  1599
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7ee91d;
  pvVar1 = operator_new(0x1b4);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007eec7e(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007eeb41();
  return;
}



void Catch_All_007ee97f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007ee98c(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>::
       vftable;
  FUN_008347f0(&DAT_032f00c4);
  FUN_00833fa0();
  return;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::WA36B9095>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x3ee9ca  1722
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_007eeb90(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007ee9ec(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>::vftable;
  FUN_0082df80(&DAT_032f00bc);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::WA36B9095>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3eea2a  1621
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7eea36;
  pvVar1 = operator_new(0x1b4);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007eec7e(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007eec07(param_1 + 9);
  return;
}



void Catch_All_007eea99(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007eeaa6(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>::vftable;
  FUN_0082bbc0(&DAT_032f00b4);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W76AFA8BF::WA36B9095>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>::save_object_data
          (oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> *this,
          basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095> *local_8;
  
                    // 0x3eeae4  1647
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007eeca4();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::WA36B9095>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>::load_object_data
          (iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3eeb00  1523
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007eed8d();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W76AFA8BF::WA36B9095>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> *this,
                basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> *local_8;
  
                    // 0x3eeb10  1687
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007eee85();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W76AFA8BF::WA36B9095>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3eeb2c  1571
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VWA36B9095@W76AFA8BF@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007eef60();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::WA36B9095> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W76AFA8BF::WA36B9095> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W76AFA8BF::WA36B9095> *peVar1;
  
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75a11);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>::get_instance(void)'
          ::`2'::t;
}



int __fastcall FUN_007eeb41(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



int FUN_007eeb90(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_007eec07(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007eec7e(int param_1)

{
  if (param_1 != 0) {
    FUN_007ee1f2(param_1);
  }
  return;
}



void FUN_007eeca4(void)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
  *poVar3;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  FUN_007bcc2f();
  poVar3 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
           ::get_instance();
  FUN_00830550(in_EAX + 4,poVar3);
  FUN_007e4d6d();
  FUN_007cc83e();
  FUN_007bdcaa();
  return;
}



void FUN_007eed8d(void)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
  *piVar3;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  FUN_007bcc7e();
  piVar3 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
           ::get_instance();
  FUN_00832bd0(in_EAX + 4,piVar3);
  FUN_007cdae5();
  FUN_007cc83e();
  FUN_007bdce8();
  return;
}



void __fastcall FUN_007eee85(int param_1)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  int iStack_10;
  int iStack_c;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  if (*(uint *)(in_EAX + 0x44) < 0x10) {
    iStack_10 = in_EAX + 0x30;
  }
  else {
    iStack_10 = *(int *)(in_EAX + 0x30);
  }
  FUN_007bdc74(&iStack_10);
  if (*(uint *)(in_EAX + 0xd0) < 0x10) {
    iStack_10 = in_EAX + 0xbc;
  }
  else {
    iStack_10 = *(int *)(in_EAX + 0xbc);
  }
  iStack_c = in_EAX + 4;
  if (param_1 == -9) {
    param_1 = 0;
  }
  FUN_007ef044(param_1 + 9);
  if (*(uint *)(in_EAX + 0x60) < 0x10) {
    iStack_10 = in_EAX + 0x4c;
  }
  else {
    iStack_10 = *(int *)(in_EAX + 0x4c);
  }
  iStack_c = in_EAX + 0xc;
  FUN_007e4dad();
  iStack_10 = FUN_007cc83e();
  iStack_c = in_EAX + 0x10;
  FUN_004414fa(&iStack_10);
  return;
}



void __fastcall FUN_007eef60(int param_1)

{
  int in_EAX;
  undefined4 *puVar1;
  undefined4 uVar2;
  int iStack_10;
  int iStack_c;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W76AFA8BF::WA36B9095>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00832c10(uVar2);
  boost::serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>
  ::get_instance();
  if (*(uint *)(in_EAX + 0x44) < 0x10) {
    iStack_10 = in_EAX + 0x30;
  }
  else {
    iStack_10 = *(int *)(in_EAX + 0x30);
  }
  FUN_007bdc8f(&iStack_10);
  if (*(uint *)(in_EAX + 0xd0) < 0x10) {
    iStack_10 = in_EAX + 0xbc;
  }
  else {
    iStack_10 = *(int *)(in_EAX + 0xbc);
  }
  iStack_c = in_EAX + 4;
  if (param_1 == -9) {
    param_1 = 0;
  }
  FUN_007ef0bb(param_1 + 9);
  if (*(uint *)(in_EAX + 0x60) < 0x10) {
    iStack_10 = in_EAX + 0x4c;
  }
  else {
    iStack_10 = *(int *)(in_EAX + 0x4c);
  }
  iStack_c = in_EAX + 0xc;
  FUN_00495923();
  iStack_10 = FUN_007cc83e();
  iStack_c = in_EAX + 0x10;
  FUN_00441643();
  return;
}



int FUN_007ef044(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
  *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



int FUN_007ef0bb(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// class boost::serialization::void_cast_detail::void_caster const & __cdecl
// boost::serialization::void_cast_register<class W76AFA8BF::WA36B9095,class
// W3CA43D38::WF45DE894>(class W76AFA8BF::WA36B9095 const *,class W3CA43D38::WF45DE894 const *)

void_caster * __cdecl
boost::serialization::void_cast_register<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>
          (WA36B9095 *param_1,WF45DE894 *param_2)

{
                    // 0x3ef132  13
                    // ??$void_cast_register@VWA36B9095@W76AFA8BF@@VWF45DE894@W3CA43D38@@@serialization@boost@@YAABVvoid_caster@void_cast_detail@01@PBVWA36B9095@W76AFA8BF@@PBVWF45DE894@W3CA43D38@@@Z
                    // 0x3ef132  715
                    // ?get_const_instance@?$singleton@V?$void_caster_primitive@VWA36B9095@W76AFA8BF@@VWF45DE894@W3CA43D38@@@void_cast_detail@serialization@boost@@@serialization@boost@@SAABV?$void_caster_primitive@VWA36B9095@W76AFA8BF@@VWF45DE894@W3CA43D38@@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ef190();
    _atexit((_func_4879 *)&LAB_00c75a5d);
  }
  return (void_caster *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007ef137(undefined4 param_1)

{
  ___RTDynamicCast(param_1,0,&W3CA43D38::WF45DE894::RTTI_Type_Descriptor,
                   &W76AFA8BF::WA36B9095::RTTI_Type_Descriptor,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::void_cast_detail::void_caster_primitive<class
// W76AFA8BF::WA36B9095,class W3CA43D38::WF45DE894> & __cdecl boost::serialization::singleton<class
// boost::serialization::void_cast_detail::void_caster_primitive<class W76AFA8BF::WA36B9095,class
// W3CA43D38::WF45DE894> >::get_instance(void)

void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894> * __cdecl
boost::serialization::
singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>
::get_instance(void)

{
                    // 0x3ef154  1035
                    // ?get_instance@?$singleton@V?$void_caster_primitive@VWA36B9095@W76AFA8BF@@VWF45DE894@W3CA43D38@@@void_cast_detail@serialization@boost@@@serialization@boost@@CAAAV?$void_caster_primitive@VWA36B9095@W76AFA8BF@@VWF45DE894@W3CA43D38@@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ef190();
    _atexit((_func_4879 *)&LAB_00c75a5d);
  }
  return (void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894> *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>
* FUN_007ef190(void)

{
  extended_type_info_typeid<class_W3CA43D38::WF45DE894> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W3CA43D38::WF45DE894>_>
           ::get_instance();
  _DAT_032f0c8c =
       boost::serialization::
       singleton<class_boost::serialization::extended_type_info_typeid<class_W76AFA8BF::WA36B9095>_>
       ::get_instance();
  _DAT_032f0c94 = 0;
  _DAT_032f0c98 = 0;
  _t = boost::serialization::void_cast_detail::
       void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>::vftable;
  _DAT_032f0c90 = peVar1;
  FUN_0083ddb0(0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007ef1ee(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::detail::
                singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>_>
                ::vftable;
  DAT_032f0021 = 1;
  FUN_007ef217();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007ef217(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::
             void_caster_primitive<class_W76AFA8BF::WA36B9095,class_W3CA43D38::WF45DE894>::vftable;
  FUN_0083e150();
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 __thiscall FUN_007ef243(undefined4 param_1_00,byte param_1)

{
  FUN_007ef217();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::shared_ptr<class W71DA37B9::W6AB18A23> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> >
// >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
          ::get_const_instance(void)

{
                    // 0x3ef25f  589
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75a78);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007ef264(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> >
// >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
          ::get_instance(void)

{
                    // 0x3ef286  909
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75a78);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007ef2d0(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0022 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::shared_ptr<class W71DA37B9::W6AB18A23> >::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> >(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
          (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
           *this)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> *peVar1;
  
                    // 0x3ef2f9  47
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W71DA37B9::W6AB18A23> > const & __cdecl
// boost::serialization::singleton<class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W71DA37B9::W6AB18A23> > >::get_const_instance(void)

extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
::get_const_instance(void)

{
                    // 0x3ef313  414
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@boost@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ef354();
    _atexit((_func_4879 *)&LAB_00c75a93);
  }
  return (extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W71DA37B9::W6AB18A23> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::shared_ptr<class
// W71DA37B9::W6AB18A23> > >::get_instance(void)

extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
::get_instance(void)

{
                    // 0x3ef318  734
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@boost@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ef354();
    _atexit((_func_4879 *)&LAB_00c75a93);
  }
  return (extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
* FUN_007ef354(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>::vftable;
  FUN_00830c60(&boost::shared_ptr<class_W71DA37B9::W6AB18A23>::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007ef3a4(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23>
// >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
::save_object_data(oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  undefined *puVar1;
  undefined local_8 [4];
  
                    // 0x3ef3e5  1657
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  puVar1 = local_8;
  (**(code **)(*(int *)this + 0xc))(puVar1);
                    // WARNING: Load size is inaccurate
  param_2 = *param_2;
  FUN_007ef60f(puVar1,&DAT_03058be0,&param_2);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::shared_ptr<class W71DA37B9::W6AB18A23> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> >
// >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> *peVar1;
  
                    // 0x3ef424  502
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75aa9);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007ef429(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> >
// >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> *peVar1;
  
                    // 0x3ef44b  822
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75aa9);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007ef49b(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0024 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23>
// >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
::load_object_data(iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3ef4c4  1534
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007ef4da(param_2,param_3);
  return;
}



void __thiscall FUN_007ef4da(undefined *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined *local_2c;
  undefined ***pppuStack_28;
  undefined *local_24;
  undefined *local_20;
  undefined **local_1c [2];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c1c00a;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if (param_2 == 0) {
    puVar2 = (undefined4 *)
             boost::serialization::
             singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    local_2c = param_1_00;
    if (param_1_00 + 9 == (undefined *)0x0) {
      local_2c = (undefined *)0x0;
    }
    uVar3 = (**(code **)*puVar2)(uVar1);
    FUN_00832c10(uVar3);
    local_20 = (undefined *)0x0;
    local_1c[0] = (undefined **)0x0;
    uStack_c = 0;
    pppuStack_28 = (undefined ***)&local_20;
    local_2c = &DAT_03058be0;
    FUN_007ef68b(&local_2c);
    pppuStack_28 = local_1c;
    local_2c = &DAT_03058be4;
    FUN_007ba9fd(param_1_00 + 9);
    local_2c = local_20;
    FUN_007bceec(local_1c);
    uStack_c._0_1_ = 1;
    FUN_0082c9b0(&local_2c);
    uStack_c = (uint)uStack_c._1_3_ << 8;
    if (pppuStack_28 != (undefined ***)0x0) {
      FUN_007bcf4f();
    }
    uStack_c = 0xffffffff;
    local_24 = local_20;
    if (local_1c[0] != (undefined **)0x0) {
      FUN_007bcf4f();
    }
  }
  else {
    local_1c[0] = &local_24;
    local_20 = &DAT_03058be0;
    FUN_007ef68b(&local_20);
  }
  FUN_007ef6ad(param_1_00 + 0x34);
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_007ef60f(int *param_1)

{
  int iVar1;
  undefined4 *in_EAX;
  undefined2 extraout_var;
  
  FUN_0082dd50(*in_EAX);
  if (param_1 == (int *)0xfffffff7) {
    param_1 = (int *)0x0;
  }
  iVar1 = *(int *)in_EAX[1];
  FUN_007eff0c();
  if (iVar1 == 0) {
    (**(code **)(*param_1 + 0x10))(CONCAT22(extraout_var,0xffff));
    FUN_0082d4f0();
  }
  else {
    FUN_007efd9d(param_1,iVar1);
  }
  FUN_0082de20(*in_EAX);
  return;
}



int FUN_007ef68b(undefined4 param_1)

{
  int iVar1;
  int unaff_ESI;
  
  FUN_007efc0e(param_1);
  if (unaff_ESI == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_ESI + -9;
  }
  return iVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007ef6ad(int param_1,int param_2)

{
  int *piVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined local_30 [4];
  int local_2c;
  int local_28;
  undefined local_24 [4];
  int local_20;
  extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb8;
  local_8 = 0x7ef6bc;
  if (param_1 == 0) {
    FUN_005d1159();
    return;
  }
  piVar1 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
                  ::get_instance();
  local_18 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
             ::get_instance();
  uVar2 = ___RTtypeid(param_1);
  iVar3 = FUN_00830d80(uVar2);
  local_18 = (extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *)iVar3;
  if (iVar3 == 0) {
    uVar4 = 1;
    uVar2 = (**(code **)(*piVar1 + 8))(0,1);
    uVar2 = FUN_00832e60(2,uVar2,iVar3,uVar4);
    local_8 = 0;
    iVar3 = FUN_0043fc7f(uVar2);
  }
  FUN_0082cad0(&local_28,param_1,iVar3,piVar1);
  local_8 = 1;
  if (local_28 == 0) {
    FUN_00623183(local_30);
    FUN_0046f668();
    if (local_2c != 0) {
      FUN_0040127a();
    }
    local_20 = FUN_0083e330(local_18,piVar1,param_1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 4);
  }
  local_20 = local_28;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_24);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3ef7c5  652
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ef84c();
    _atexit((_func_4879 *)&LAB_00c75ada);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W6AB18A23 *,struct
// boost::serialization::null_deleter> > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W6AB18A23 *,struct
// boost::serialization::null_deleter> > >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3ef7ca  509
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
                    // 0x3ef7ca  1070
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75af0);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W71DA37B9::W6AB18A23>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W71DA37B9::W6AB18A23>
// >::get_const_instance(void)

extended_type_info_typeid<class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>::
get_const_instance(void)

{
                    // 0x3ef7cf  443
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW6AB18A23@W71DA37B9@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW6AB18A23@W71DA37B9@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ef8a0();
    _atexit((_func_4879 *)&LAB_00c75ac4);
  }
  return (extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> > >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3ef7d4  972
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ef84c();
    _atexit((_func_4879 *)&LAB_00c75ada);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W71DA37B9::W6AB18A23>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W71DA37B9::W6AB18A23> >::get_instance(void)

extended_type_info_typeid<class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>::
get_instance(void)

{
                    // 0x3ef810  763
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW6AB18A23@W71DA37B9@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW6AB18A23@W71DA37B9@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007ef8a0();
    _atexit((_func_4879 *)&LAB_00c75ac4);
  }
  return (extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
* FUN_007ef84c(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f00ac);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
* FUN_007ef8a0(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>::vftable;
  FUN_00830c60(&W71DA37B9::W6AB18A23::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007ef8f0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007ef912(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> > >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3ef953  829
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75af0);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007ef9a3(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0027 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W6AB18A23 *,struct
// boost::serialization::null_deleter> > const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W6AB18A23 *,struct
// boost::serialization::null_deleter> > >::get_const_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3ef9cc  421
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007efa0d();
    _atexit((_func_4879 *)&LAB_00c75b0b);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W6AB18A23 *,struct
// boost::serialization::null_deleter> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W6AB18A23 *,struct
// boost::serialization::null_deleter> > >::get_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3ef9d1  741
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007efa0d();
    _atexit((_func_4879 *)&LAB_00c75b0b);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
* FUN_007efa0d(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_00830c60(&boost_132::detail::
                sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>
                ::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007efa5d(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> >::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
::load_object_ptr(pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
                  *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3efa9e  1605
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7efaaa;
  pvVar1 = operator_new(0x2c);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007efb55();
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007efb97(param_1 + 9);
  return;
}



void Catch_All_007efb0a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007efb17(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_0082bbc0(&DAT_032f00ac);
  FUN_00833fa0();
  return;
}



void FUN_007efb55(void)

{
  undefined4 *unaff_EDI;
  undefined *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = &local_8;
  local_10 = &DAT_03058be8;
  FUN_007ef68b(&local_10);
  if (unaff_EDI != (undefined4 *)0x0) {
    FUN_007bceb5();
    unaff_EDI[9] = local_8;
    *unaff_EDI = boost_132::detail::
                 sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost_132::serialization::detail::null_deleter>
                 ::vftable;
  }
  unaff_EDI[1] = 0;
  return;
}



int FUN_007efb97(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007efc0e(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *peVar6;
  
  FUN_0082ace0(*param_1);
  puVar1 = (undefined4 *)param_1[1];
  puVar3 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  uVar4 = (**(code **)*puVar3)();
  FUN_00832c10(uVar4);
  puVar5 = (undefined4 *)FUN_00832bf0(puVar1,puVar3,&LAB_007bb703);
  if (puVar5 != puVar3) {
    uVar4 = puVar5[1];
    uVar2 = *puVar1;
    peVar6 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
             ::get_instance();
    uVar4 = FUN_0083e220(uVar4,peVar6,uVar2);
    *puVar1 = uVar4;
  }
  FUN_0082af90(*param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// class boost::serialization::void_cast_detail::void_caster const & __cdecl
// boost::serialization::void_cast_register<class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter>,class
// boost_132::detail::sp_counted_base>(class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> const *,class
// boost_132::detail::sp_counted_base const *)

void_caster * __cdecl
boost::serialization::
void_cast_register<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
          (sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>
           *param_1,sp_counted_base *param_2)

{
                    // 0x3efcb8  3
                    // ??$void_cast_register@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@serialization@boost@@YAABVvoid_caster@void_cast_detail@01@PBV?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@PBVsp_counted_base@56@@Z
                    // 0x3efcb8  705
                    // ?get_const_instance@?$singleton@V?$void_caster_primitive@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@serialization@boost@@@serialization@boost@@SAABV?$void_caster_primitive@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007efd16();
    _atexit((_func_4879 *)&LAB_00c75b21);
  }
  return (void_caster *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007efcbd(undefined4 param_1)

{
  ___RTDynamicCast(param_1,0,&boost_132::detail::sp_counted_base::RTTI_Type_Descriptor,
                   &boost_132::detail::
                    sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>
                    ::RTTI_Type_Descriptor,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::void_cast_detail::void_caster_primitive<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W6AB18A23 *,struct
// boost::serialization::null_deleter>,class boost_132::detail::sp_counted_base> & __cdecl
// boost::serialization::singleton<class
// boost::serialization::void_cast_detail::void_caster_primitive<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W6AB18A23 *,struct
// boost::serialization::null_deleter>,class boost_132::detail::sp_counted_base>
// >::get_instance(void)

void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
          ::get_instance(void)

{
                    // 0x3efcda  1025
                    // ?get_instance@?$singleton@V?$void_caster_primitive@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@serialization@boost@@@serialization@boost@@CAAAV?$void_caster_primitive@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007efd16();
    _atexit((_func_4879 *)&LAB_00c75b21);
  }
  return (void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
          *)&`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
* FUN_007efd16(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>
           ::get_instance();
  _DAT_032f0c60 =
       boost::serialization::
       singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
       ::get_instance();
  _DAT_032f0c68 = 0;
  _DAT_032f0c6c = 0;
  _t = boost::serialization::void_cast_detail::
       void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
       ::vftable;
  _DAT_032f0c64 = peVar1;
  FUN_0083ddb0(0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007efd74(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::detail::
                singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
                ::vftable;
  DAT_032f0029 = 1;
  FUN_007efec4();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007efd9d(undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2016e;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  piVar3 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
                  ::get_instance();
  uVar4 = ___RTtypeid(param_2,uVar2);
  piVar5 = (int *)FUN_00830d80(uVar4);
  if (piVar5 != (int *)0x0) goto LAB_007efe0d;
  uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
  local_c = 0;
  while( true ) {
    FUN_0043fc7f(uVar4);
LAB_007efe0d:
    cVar1 = FUN_00830f50(piVar5);
    if (cVar1 != '\0') break;
    iVar7 = FUN_0083e330(piVar5,piVar3,param_2);
    if (iVar7 == 0) {
      uVar9 = 1;
      uVar4 = (**(code **)(*piVar3 + 8))(1);
      uVar8 = (**(code **)(*piVar5 + 8))(uVar4);
      uVar4 = FUN_00832e60(10,uVar8,uVar4,uVar9);
      local_c = 1;
    }
    else {
      boost::serialization::
      singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>
      ::get_instance();
      iVar6 = FUN_0082dfa0(piVar5);
      if (iVar6 == 0) {
        iVar6 = 0;
      }
      else {
        iVar6 = iVar6 + -4;
      }
      if (iVar6 != 0) goto LAB_007efea9;
      piVar5 = (int *)0x2;
      uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
      local_c = 2;
    }
  }
  iVar6 = FUN_007eff0c();
  iVar7 = param_2;
LAB_007efea9:
  FUN_00830570(iVar7,iVar6);
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007efec4(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::
             void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
             ::vftable;
  FUN_0083e150();
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 __thiscall FUN_007efef0(undefined4 param_1_00,byte param_1)

{
  FUN_007efec4();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_007eff0c(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W6AB18A23> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W6AB18A23> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>
::get_const_instance(void)

{
                    // 0x3eff35  694
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007eff7b();
    _atexit((_func_4879 *)&LAB_00c75b3c);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W6AB18A23> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W6AB18A23> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>
::get_instance(void)

{
                    // 0x3eff3a  1014
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007eff7b();
    _atexit((_func_4879 *)&LAB_00c75b3c);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W6AB18A23> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W6AB18A23> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>
::get_const_instance(void)

{
                    // 0x3eff76  611
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
                    // 0x3eff76  1120
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>::
    oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>
              ((oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75b52);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>
* FUN_007eff7b(void)

{
  extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032f00a4);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007effcf(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W6AB18A23> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W6AB18A23> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>
::get_instance(void)

{
                    // 0x3efff2  931
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>::
    oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>
              ((oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75b52);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f003c(undefined4 *param_1_00,byte param_1)

{
  DAT_032f002b = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W6AB18A23>::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W6AB18A23>(void)

oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>::
oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>
          (oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> *this)

{
  extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *peVar1;
  
                    // 0x3f0065  69
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W6AB18A23>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x3f007f  1718
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_007f012a(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f00a1(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>::vftable;
  FUN_0082df80(&DAT_032f00a4);
  FUN_00833b50();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W6AB18A23>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> *this,
                basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0x3f00df  1679
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  if (param_1 == (basic_oarchive *)0xfffffff7) {
    param_1 = (basic_oarchive *)0x0;
  }
  FUN_007f0610(param_1 + 9);
  return;
}



int FUN_007f012a(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W6AB18A23> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W6AB18A23> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>
::get_const_instance(void)

{
                    // 0x3f01a1  664
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f02cf();
    _atexit((_func_4879 *)&LAB_00c75ba3);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W71DA37B9::W6AB18A23> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W71DA37B9::W6AB18A23> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *peVar1;
  
                    // 0x3f01a6  531
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
                    // 0x3f01a6  1082
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75bb9);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> > const &
// __cdecl boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> >
// >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
          ::get_const_instance(void)

{
                    // 0x3f01ab  559
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75b88);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> > const &
// __cdecl boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> >
// >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> *peVar1;
  
                    // 0x3f01b0  464
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75b6d);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f01b5(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007f01d7(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W6AB18A23> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W6AB18A23> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>
::get_instance(void)

{
                    // 0x3f01f9  984
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f02cf();
    _atexit((_func_4879 *)&LAB_00c75ba3);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> >
// >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
          ::get_instance(void)

{
                    // 0x3f0235  879
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75b88);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23> >
// >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> *peVar1;
  
                    // 0x3f027f  784
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75b6d);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>
* FUN_007f02cf(void)

{
  extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f009c);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f0323(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007f0345(undefined4 *param_1_00,byte param_1)

{
  DAT_032f002d = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007f036e(undefined4 *param_1_00,byte param_1)

{
  DAT_032f002e = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23>
// >::oserializer<class boost::archive::binary_oarchive,class boost::shared_ptr<class
// W71DA37B9::W6AB18A23> >(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
          (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
           *this)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_> *peVar1;
  
                    // 0x3f0397  17
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W6AB18A23> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W6AB18A23> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *peVar1;
  
                    // 0x3f03b1  851
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75bb9);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f0401(undefined4 *param_1_00,byte param_1)

{
  DAT_032f002f = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W6AB18A23>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3f042a  1617
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7f0436;
  pvVar1 = operator_new(0x8c);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007f05ea(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007f0573(param_1 + 9);
  return;
}



void Catch_All_007f0499(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f04a6(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>::vftable;
  FUN_0082bbc0(&DAT_032f009c);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23>
// >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
::save_object_data(oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0x3f04e4  1627
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  FUN_007f07bc();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W6AB18A23>
// >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W6AB18A23>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3f051c  1496
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW6AB18A23@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007f0687(param_2,param_3);
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W6AB18A23>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3f0532  1563
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  if (param_1 == (basic_iarchive *)0xfffffff7) {
    param_1 = (basic_iarchive *)0x0;
  }
  FUN_007f098c(param_1 + 9);
  return;
}



int FUN_007f0573(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007f05ea(int param_1)

{
  if (param_1 != 0) {
    FUN_00b66687(param_1);
  }
  return;
}



int FUN_007f0610(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
  *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void __thiscall FUN_007f0687(undefined *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined *local_2c;
  undefined ***pppuStack_28;
  undefined *local_24;
  undefined *local_20;
  undefined **local_1c [2];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c1c00a;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if (param_2 == 0) {
    puVar2 = (undefined4 *)
             boost::serialization::
             singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    local_2c = param_1_00;
    if (param_1_00 == (undefined *)0xfffffff7) {
      local_2c = (undefined *)0x0;
    }
    uVar3 = (**(code **)*puVar2)();
    FUN_00832c10(uVar3);
    local_20 = (undefined *)0x0;
    local_1c[0] = (undefined **)0x0;
    uStack_c = 0;
    pppuStack_28 = (undefined ***)&local_20;
    local_2c = &DAT_03058be0;
    FUN_007f082e(uVar1);
    pppuStack_28 = local_1c;
    local_2c = &DAT_03058be4;
    FUN_007bc2e0();
    local_2c = local_20;
    FUN_007bceec(local_1c);
    uStack_c._0_1_ = 1;
    FUN_0082c9b0(&local_2c);
    uStack_c = (uint)uStack_c._1_3_ << 8;
    if (pppuStack_28 != (undefined ***)0x0) {
      FUN_007bcf4f();
    }
    uStack_c = 0xffffffff;
    local_24 = local_20;
    if (local_1c[0] != (undefined **)0x0) {
      FUN_007bcf4f();
    }
  }
  else {
    local_1c[0] = &local_24;
    local_20 = &DAT_03058be0;
    FUN_007f082e(uVar1);
  }
  FUN_007ef6ad(param_1_00 + 0x1c);
  ExceptionList = local_14;
  return;
}



int __fastcall FUN_007f07bc(int param_1)

{
  int iVar1;
  undefined2 extraout_var;
  int unaff_EBX;
  int *piVar2;
  
  if (unaff_EBX == 0) {
    piVar2 = (int *)0x0;
  }
  else {
    piVar2 = (int *)(unaff_EBX + -9);
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  iVar1 = **(int **)(param_1 + 4);
  FUN_007f15a3();
  if (iVar1 == 0) {
    (**(code **)(*piVar2 + 0x10))(CONCAT22(extraout_var,0xffff));
    FUN_009b4100();
  }
  else {
    FUN_007f13bc(piVar2,iVar1);
  }
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + -9;
  }
  return iVar1;
}



int __fastcall FUN_007f082e(int param_1)

{
  int iVar1;
  int unaff_ESI;
  
  if (unaff_ESI == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_ESI + -9;
  }
  if (iVar1 == -9) {
    iVar1 = 0;
  }
  FUN_007f0fb6(iVar1 + 9,*(undefined4 *)(param_1 + 4));
  if (unaff_ESI == 0) {
    return 0;
  }
  return unaff_ESI + -9;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3f085c  630
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f089d();
    _atexit((_func_4879 *)&LAB_00c75bd4);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> > >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3f0861  950
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f089d();
    _atexit((_func_4879 *)&LAB_00c75bd4);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
* FUN_007f089d(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f0094);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f08f1(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> > >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3f0913  791
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75bea);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f0963(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0031 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int FUN_007f098c(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> >::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
::load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
                  *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void **ppvVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  bad_alloc local_24 [4];
  undefined *local_20;
  void ***local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3f0a03  1583
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7f0a0f;
  puVar2 = (undefined4 *)operator_new(0x2c);
  local_8 = 0;
  local_18 = puVar2;
  if (puVar2 == (undefined4 *)0x0) {
    uVar3 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar3);
  }
  *param_2 = puVar2;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(puVar2);
  local_1c = &param_2;
  local_20 = &DAT_03058be8;
  FUN_007f082e();
  ppvVar1 = param_2;
  FUN_007bceb5();
  puVar2[9] = ppvVar1;
  local_8 = 0;
  *puVar2 = boost_132::detail::
            sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost_132::serialization::detail::null_deleter>
            ::vftable;
  puVar2[1] = 0;
  local_20 = (undefined *)0x0;
  local_1c = (void ***)puVar2;
  FUN_007f0af1();
  return;
}



void Catch_All_007f0a99(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f0aa6(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_008347f0(&DAT_032f0094);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> >::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3f0ae4  1503
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
                    // 0x3f0ae4  1541
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW6AB18A23@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
  ::get_instance();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W6AB18A23 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75bea);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



int __fastcall FUN_007f0af1(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W6AB18A23*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// std::vector<class boost::shared_ptr<class W71DA37B9::W7EE09E61>,class std::allocator<class
// boost::shared_ptr<class W71DA37B9::W7EE09E61> > > > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > > >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
          ::get_const_instance(void)

{
                    // 0x3f0b40  595
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75c05);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f0b45(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > > & __cdecl boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > > >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
          ::get_instance(void)

{
                    // 0x3f0b67  915
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75c05);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f0bb1(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0032 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// std::vector<class boost::shared_ptr<class W71DA37B9::W7EE09E61>,class std::allocator<class
// boost::shared_ptr<class W71DA37B9::W7EE09E61> > > >::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > >(void)

oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
::
oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
          (oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
           *this)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
  *peVar1;
  
                    // 0x3f0bda  53
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class std::vector<class
// boost::shared_ptr<class W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61> > > > const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > > >::get_const_instance(void)

extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
          ::get_const_instance(void)

{
                    // 0x3f0bf4  427
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f0c35();
    _atexit((_func_4879 *)&LAB_00c75c20);
  }
  return (extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class std::vector<class
// boost::shared_ptr<class W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61> > > > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > > >::get_instance(void)

extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
          ::get_instance(void)

{
                    // 0x3f0bf9  747
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f0c35();
    _atexit((_func_4879 *)&LAB_00c75c20);
  }
  return (extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
* FUN_007f0c35(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
       ::vftable;
  FUN_00830c60(&std::
                vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
                ::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f0c85(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
       ::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
::save_object_data(oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::xml_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
  *local_8;
  
                    // 0x3f0cc6  1663
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007f0d94();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// std::vector<class boost::shared_ptr<class W71DA37B9::W7EE09E61>,class std::allocator<class
// boost::shared_ptr<class W71DA37B9::W7EE09E61> > > > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > > >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
  *peVar1;
  
                    // 0x3f0ce2  515
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75c36);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f0ce7(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > > & __cdecl boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > > >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
  *peVar1;
  
                    // 0x3f0d09  835
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75c36);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f0d59(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0034 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
::load_object_data(iserializer<class_boost::archive::xml_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3f0d82  1547
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007f0efc(param_1,param_2);
  return;
}



void __fastcall FUN_007f0d94(int param_1)

{
  uint uVar1;
  undefined4 *in_EAX;
  int local_28;
  undefined4 local_24;
  char *local_20;
  int *local_1c;
  undefined *local_18;
  undefined4 local_14;
  
  local_28 = (int)(in_EAX[4] - in_EAX[3]) >> 3;
  local_1c = &local_28;
  local_24 = 1;
  local_20 = "count";
  FUN_007b9f02();
  local_1c = &local_24;
  local_20 = "item_version";
  FUN_004cce2d(param_1 + 9);
  uVar1 = in_EAX[3];
  if ((uint)in_EAX[4] < uVar1) {
    FUN_00a3fb10();
  }
  local_20 = (char *)*in_EAX;
  if (local_28 != 0) {
    local_18 = &DAT_03058bd8;
    local_1c = (int *)uVar1;
    do {
      local_28 = local_28 + -1;
      FUN_007c96e9();
      FUN_007f0e50();
      local_14 = FUN_007c96e9();
      FUN_007f0e85(param_1 + 9);
    } while (local_28 != 0);
  }
  return;
}



void FUN_007f0e50(void)

{
  int *piVar1;
  int iVar2;
  int **unaff_ESI;
  int **unaff_EDI;
  
  *unaff_EDI = *unaff_ESI;
  unaff_EDI[1] = unaff_ESI[1];
  piVar1 = *unaff_ESI;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *unaff_ESI;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_007f0e71;
    }
  }
  iVar2 = *piVar1;
LAB_007f0e71:
  if (*(int **)(iVar2 + 0x10) <= unaff_ESI[1]) {
    FUN_00a3fb10();
  }
  unaff_ESI[1] = unaff_ESI[1] + 2;
  return;
}



int FUN_007f0e85(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
  *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007f0efc(undefined4 param_1,undefined4 param_2)

{
  char **ppcVar1;
  int *piVar2;
  char *pcVar3;
  ushort local_1c [2];
  int local_18;
  int local_14;
  char *local_10;
  int *local_c;
  
  FUN_007ce2c9();
  local_18 = 0;
  FUN_00831450(local_1c);
  local_14 = 0;
  local_c = &local_18;
  local_10 = "count";
  FUN_007ba19a();
  if (3 < local_1c[0]) {
    local_c = &local_14;
    local_10 = "item_version";
    FUN_004cd077();
  }
  FUN_007f10ac(param_2,local_18);
  FUN_0046e65a();
  piVar2 = local_c;
  pcVar3 = local_10;
  while (local_18 != 0) {
    local_18 = local_18 + -1;
    ppcVar1 = (char **)FUN_007f1039(pcVar3,piVar2);
    pcVar3 = *ppcVar1;
    piVar2 = (int *)ppcVar1[1];
  }
  return;
}



int FUN_007f0fb6(int param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *peVar5;
  
  puVar2 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  uVar3 = (**(code **)*puVar2)();
  FUN_00832c10(uVar3);
  puVar4 = (undefined4 *)FUN_00832bf0(param_2,puVar2,&LAB_007bc61f);
  if (puVar4 != puVar2) {
    uVar3 = puVar4[1];
    uVar1 = *param_2;
    peVar5 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
             ::get_instance();
    uVar3 = FUN_0083e220(uVar3,peVar5,uVar1);
    *param_2 = uVar3;
  }
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_007f1039(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *unaff_ESI;
  int unaff_EDI;
  undefined4 *puVar2;
  undefined4 local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = 0;
  local_18 = 0;
  local_8 = 0;
  FUN_007f1180(unaff_EDI + 9);
  FUN_007ce26a(&local_1c);
  puVar2 = &local_1c;
  uVar1 = FUN_007ba0c6(puVar2);
  FUN_00831750(uVar1,puVar2);
  *unaff_ESI = param_1;
  local_8 = 0xffffffff;
  unaff_ESI[1] = param_2;
  if (local_18 != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007f10ac(int param_1,uint param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 local_20;
  uint local_1c;
  
  if (0x1fffffff < param_2) {
    FUN_004423c1();
  }
  if (*(int *)(param_1 + 0xc) == 0) {
    uVar1 = 0;
  }
  else {
    uVar1 = *(int *)(param_1 + 0x14) - *(int *)(param_1 + 0xc) >> 3;
  }
  if (uVar1 < param_2) {
    iVar2 = FUN_0046aed6();
    FUN_0046e65a();
    FUN_0046e65a();
    local_1c = local_1c & 0xffffff00;
    FUN_00438958(local_20,param_2,local_1c);
    if (*(int *)(param_1 + 0xc) != 0) {
      FUN_0043a4e8(*(int *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
    }
    *(uint *)(param_1 + 0x14) = iVar2 + param_2 * 8;
    *(int *)(param_1 + 0x10) = iVar2 + (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc) >> 3) * 8
    ;
    *(int *)(param_1 + 0xc) = iVar2;
  }
  return;
}



void Catch_All_007f116d(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



int FUN_007f1180(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::shared_ptr<class W71DA37B9::W7EE09E61> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
          ::get_const_instance(void)

{
                    // 0x3f11f7  591
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75c51);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f11fc(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
          ::get_instance(void)

{
                    // 0x3f121e  911
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
    ::
    oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
              ((oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75c51);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f1268(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0035 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// boost::shared_ptr<class W71DA37B9::W7EE09E61> >::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> >(void)

oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
          (oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
           *this)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> *peVar1;
  
                    // 0x3f1291  49
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W71DA37B9::W7EE09E61> > const & __cdecl
// boost::serialization::singleton<class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W71DA37B9::W7EE09E61> > >::get_const_instance(void)

extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
::get_const_instance(void)

{
                    // 0x3f12ab  416
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f12ec();
    _atexit((_func_4879 *)&LAB_00c75c6c);
  }
  return (extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost::shared_ptr<class W71DA37B9::W7EE09E61> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61> > >::get_instance(void)

extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
::get_instance(void)

{
                    // 0x3f12b0  736
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f12ec();
    _atexit((_func_4879 *)&LAB_00c75c6c);
  }
  return (extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
* FUN_007f12ec(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>::vftable;
  FUN_00830c60(&boost::shared_ptr<class_W71DA37B9::W7EE09E61>::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f133c(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61>
// >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
::save_object_data(oserializer<class_boost::archive::xml_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  undefined *puVar1;
  undefined local_8 [4];
  
                    // 0x3f137d  1659
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  puVar1 = local_8;
  (**(code **)(*(int *)this + 0xc))(puVar1);
                    // WARNING: Load size is inaccurate
  param_2 = *param_2;
  FUN_007f1ab4(puVar1,&DAT_03058be0,&param_2);
  return;
}



void FUN_007f13bc(undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2016e;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  piVar3 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
                  ::get_instance();
  uVar4 = ___RTtypeid(param_2,uVar2);
  piVar5 = (int *)FUN_00830d80(uVar4);
  if (piVar5 != (int *)0x0) goto LAB_007f142c;
  uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
  local_c = 0;
  while( true ) {
    FUN_0043fc7f(uVar4);
LAB_007f142c:
    cVar1 = FUN_00830f50(piVar5);
    if (cVar1 != '\0') break;
    iVar7 = FUN_0083e330(piVar5,piVar3,param_2);
    if (iVar7 == 0) {
      uVar9 = 1;
      uVar4 = (**(code **)(*piVar3 + 8))(1);
      uVar8 = (**(code **)(*piVar5 + 8))(uVar4);
      uVar4 = FUN_00832e60(10,uVar8,uVar4,uVar9);
      local_c = 1;
    }
    else {
      boost::serialization::
      singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>
      ::get_instance();
      iVar6 = FUN_00833f60(piVar5);
      if (iVar6 == 0) {
        iVar6 = 0;
      }
      else {
        iVar6 = iVar6 + -4;
      }
      if (iVar6 != 0) goto LAB_007f14c8;
      piVar5 = (int *)0x2;
      uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
      local_c = 2;
    }
  }
  iVar6 = FUN_007f15a3();
  iVar7 = param_2;
LAB_007f14c8:
  FUN_00830570(iVar7,iVar6);
  ExceptionList = local_14;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost::shared_ptr<class W71DA37B9::W7EE09E61> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> *peVar1;
  
                    // 0x3f14e3  504
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75c82);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
             ::`2'::t;
}



void FUN_007f14e8(int param_1)

{
  if (param_1 != 0) {
    if (*(int *)(param_1 + 4) != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



undefined4 * __thiscall FUN_007f1508(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> *peVar1;
  
                    // 0x3f152a  824
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75c82);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f157a(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0037 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_007f15a3(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return puVar1;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61>
// >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
::load_object_data(iserializer<class_boost::archive::xml_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3f15cc  1536
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007f1b30(param_2,param_3);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W6AB18A23> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W6AB18A23> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>
::get_const_instance(void)

{
                    // 0x3f15e2  679
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f166e();
    _atexit((_func_4879 *)&LAB_00c75cb3);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W6AB18A23> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W6AB18A23> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>
::get_const_instance(void)

{
                    // 0x3f15e7  642
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f16c2();
    _atexit((_func_4879 *)&LAB_00c75c9d);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W6AB18A23> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W6AB18A23> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *peVar1;
  
                    // 0x3f15ec  486
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
                    // 0x3f15ec  1060
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75cc9);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W6AB18A23> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W6AB18A23> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>
::get_instance(void)

{
                    // 0x3f15f1  999
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f166e();
    _atexit((_func_4879 *)&LAB_00c75cb3);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W6AB18A23> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W6AB18A23> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>
::get_instance(void)

{
                    // 0x3f162d  962
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f16c2();
    _atexit((_func_4879 *)&LAB_00c75c9d);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W6AB18A23> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W6AB18A23> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>
::get_const_instance(void)

{
                    // 0x3f1669  574
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
                    // 0x3f1669  1105
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>::
    oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>
              ((oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75ce4);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>
* FUN_007f166e(void)

{
  extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>::
       vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032f008c);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>
* FUN_007f16c2(void)

{
  extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>::
       vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f0084);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f1716(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007f1738(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W6AB18A23> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W6AB18A23> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>
::get_instance(void)

{
                    // 0x3f175a  894
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>::
    oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>
              ((oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75ce4);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W6AB18A23> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W6AB18A23> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *peVar1;
  
                    // 0x3f17a4  806
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75cc9);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f17f4(undefined4 *param_1_00,byte param_1)

{
  DAT_032f003a = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007f181d(undefined4 *param_1_00,byte param_1)

{
  DAT_032f003b = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W6AB18A23>::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W6AB18A23>(void)

oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>::
oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>
          (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> *this)

{
  extended_type_info_typeid<class_W71DA37B9::W6AB18A23> *peVar1;
  
                    // 0x3f1846  32
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W6AB18A23>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>::
save_object_ptr(pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>
                *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> *poVar1;
  
                    // 0x3f1860  1703
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  FUN_00830550(param_2,poVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f18aa(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>::
       vftable;
  FUN_00833f40(&DAT_032f008c);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W6AB18A23>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>::
load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>
                *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3f18e8  1595
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7f18f4;
  pvVar1 = operator_new(0x8c);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007f05ea(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007f1a65();
  return;
}



void Catch_All_007f1956(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f1963(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>::
       vftable;
  FUN_008347f0(&DAT_032f0084);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W6AB18A23>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23>::save_object_data
          (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> *this,
          basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
  *poVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W6AB18A23> *local_8;
  
                    // 0x3f19a1  1642
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
           ::get_instance();
  FUN_00830550((int)param_2 + 4,poVar1);
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W6AB18A23>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>::load_object_data
          (iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
  iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
  *piVar1;
  
                    // 0x3f1a09  1518
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VW6AB18A23@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  piVar1 = serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
           ::get_instance();
  FUN_00832bd0((int)param_2 + 4,piVar1);
  return;
}



int __fastcall FUN_007f1a65(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W6AB18A23>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



void __fastcall FUN_007f1ab4(int *param_1)

{
  int iVar1;
  undefined4 *in_EAX;
  undefined2 extraout_var;
  
  FUN_0082dd50(*in_EAX);
  if (param_1 == (int *)0xfffffff7) {
    param_1 = (int *)0x0;
  }
  iVar1 = *(int *)in_EAX[1];
  FUN_007f23cd();
  if (iVar1 == 0) {
    (**(code **)(*param_1 + 0x10))(CONCAT22(extraout_var,0xffff));
    FUN_0082d4f0();
  }
  else {
    FUN_007f2143(param_1,iVar1);
  }
  FUN_0082de20(*in_EAX);
  return;
}



void __thiscall FUN_007f1b30(undefined *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined *local_2c;
  undefined ***pppuStack_28;
  undefined *local_24;
  undefined *local_20;
  undefined **local_1c [2];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c1c00a;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if (param_2 == 0) {
    puVar2 = (undefined4 *)
             boost::serialization::
             singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    local_2c = param_1_00;
    if (param_1_00 + 9 == (undefined *)0x0) {
      local_2c = (undefined *)0x0;
    }
    uVar3 = (**(code **)*puVar2)(uVar1);
    FUN_00832c10(uVar3);
    local_20 = (undefined *)0x0;
    local_1c[0] = (undefined **)0x0;
    uStack_c = 0;
    pppuStack_28 = (undefined ***)&local_20;
    local_2c = &DAT_03058be0;
    FUN_007f1c65(&local_2c);
    pppuStack_28 = local_1c;
    local_2c = &DAT_03058be4;
    FUN_007ba9fd(param_1_00 + 9);
    local_2c = local_20;
    FUN_007bceec(local_1c);
    uStack_c._0_1_ = 1;
    FUN_0082c9b0(&local_2c);
    uStack_c = (uint)uStack_c._1_3_ << 8;
    if (pppuStack_28 != (undefined ***)0x0) {
      FUN_007bcf4f();
    }
    uStack_c = 0xffffffff;
    local_24 = local_20;
    if (local_1c[0] != (undefined **)0x0) {
      FUN_007bcf4f();
    }
  }
  else {
    local_1c[0] = &local_24;
    local_20 = &DAT_03058be0;
    FUN_007f1c65(&local_20);
  }
  FUN_007f1c87(param_1_00 + 0x34);
  ExceptionList = local_14;
  return;
}



int FUN_007f1c65(undefined4 param_1)

{
  int iVar1;
  int unaff_ESI;
  
  FUN_007f2323(param_1);
  if (unaff_ESI == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_ESI + -9;
  }
  return iVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007f1c87(int param_1,int param_2)

{
  int *piVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined local_30 [4];
  int local_2c;
  int local_28;
  undefined local_24 [4];
  int local_20;
  undefined4 local_18;
  extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb8;
  local_8 = 0x7f1c96;
  if (param_1 == 0) {
    local_18 = 0;
    local_14 = (extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *)0x0;
    FUN_0046f668();
    if (local_14 != (extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *)0x0) {
      FUN_0040127a();
    }
    return;
  }
  piVar1 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
                  ::get_instance();
  local_14 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
             ::get_instance();
  uVar2 = ___RTtypeid(param_1);
  iVar3 = FUN_00830d80(uVar2);
  local_14 = (extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *)iVar3;
  if (iVar3 == 0) {
    uVar4 = 1;
    uVar2 = (**(code **)(*piVar1 + 8))(0,1);
    uVar2 = FUN_00832e60(2,uVar2,iVar3,uVar4);
    local_8 = 0;
    iVar3 = FUN_0043fc7f(uVar2);
  }
  FUN_0082cad0(&local_28,param_1,iVar3,piVar1);
  local_8 = 1;
  if (local_28 == 0) {
    FUN_007d4420(local_30);
    FUN_0046f668();
    if (local_2c != 0) {
      FUN_0040127a();
    }
    local_20 = FUN_0083e330(local_14,piVar1,param_1);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 4);
  }
  local_20 = local_28;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_24);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3f1dab  654
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f1e32();
    _atexit((_func_4879 *)&LAB_00c75d15);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class W71DA37B9::W7EE09E61>
// const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W71DA37B9::W7EE09E61>
// >::get_const_instance(void)

extended_type_info_typeid<class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>::
get_const_instance(void)

{
                    // 0x3f1db0  446
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@VW7EE09E61@W71DA37B9@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@VW7EE09E61@W71DA37B9@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f1e86();
    _atexit((_func_4879 *)&LAB_00c75cff);
  }
  return (extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> > >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3f1db5  974
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f1e32();
    _atexit((_func_4879 *)&LAB_00c75d15);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class W71DA37B9::W7EE09E61>
// & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class W71DA37B9::W7EE09E61> >::get_instance(void)

extended_type_info_typeid<class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>::
get_instance(void)

{
                    // 0x3f1df1  766
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@VW7EE09E61@W71DA37B9@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@VW7EE09E61@W71DA37B9@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f1e86();
    _atexit((_func_4879 *)&LAB_00c75cff);
  }
  return (extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W7EE09E61 *,struct
// boost::serialization::null_deleter> > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W7EE09E61 *,struct
// boost::serialization::null_deleter> > >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3f1e2d  511
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
                    // 0x3f1e2d  1072
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75d2b);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
* FUN_007f1e32(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f007c);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
* FUN_007f1e86(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>::vftable;
  FUN_00830c60(&W71DA37B9::W7EE09E61::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f1ed6(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f1ef8(void)

{
  _t = boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> > >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3f1f39  831
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75d2b);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f1f89(undefined4 *param_1_00,byte param_1)

{
  DAT_032f003e = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W7EE09E61 *,struct
// boost::serialization::null_deleter> > const & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W7EE09E61 *,struct
// boost::serialization::null_deleter> > >::get_const_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3f1fb2  423
                    // ?get_const_instance@?$singleton@V?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@serialization@boost@@@serialization@boost@@SAABV?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f1ff3();
    _atexit((_func_4879 *)&LAB_00c75d46);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W7EE09E61 *,struct
// boost::serialization::null_deleter> > & __cdecl boost::serialization::singleton<class
// boost::serialization::extended_type_info_typeid<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W7EE09E61 *,struct
// boost::serialization::null_deleter> > >::get_instance(void)

extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3f1fb7  743
                    // ?get_instance@?$singleton@V?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@serialization@boost@@@serialization@boost@@CAAAV?$extended_type_info_typeid@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@23@XZ
  if ((`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f1ff3();
    _atexit((_func_4879 *)&LAB_00c75d46);
  }
  return (extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
* FUN_007f1ff3(void)

{
  FUN_008308e0(0);
  _t = boost::serialization::
       extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_00830c60(&boost_132::detail::
                sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>
                ::RTTI_Type_Descriptor);
  FUN_00831270();
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f2043(void)

{
  _t = boost::serialization::
       extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_008312a0();
  FUN_00830c90();
  FUN_00830910();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> >::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
::load_object_ptr(pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
                  *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3f2084  1607
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7f2090;
  pvVar1 = operator_new(0x2c);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007f226a();
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007f22ac(param_1 + 9);
  return;
}



void Catch_All_007f20f0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f20fd(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_0082bbc0(&DAT_032f007c);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> >::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3f213b  1505
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
                    // 0x3f213b  1543
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  serialization::
  singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
  ::get_instance();
  return;
}



void FUN_007f2143(undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2016e;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  piVar3 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
                  ::get_instance();
  uVar4 = ___RTtypeid(param_2,uVar2);
  piVar5 = (int *)FUN_00830d80(uVar4);
  if (piVar5 != (int *)0x0) goto LAB_007f21b3;
  uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
  local_c = 0;
  while( true ) {
    FUN_0043fc7f(uVar4);
LAB_007f21b3:
    cVar1 = FUN_00830f50(piVar5);
    if (cVar1 != '\0') break;
    iVar7 = FUN_0083e330(piVar5,piVar3,param_2);
    if (iVar7 == 0) {
      uVar9 = 1;
      uVar4 = (**(code **)(*piVar3 + 8))(1);
      uVar8 = (**(code **)(*piVar5 + 8))(uVar4);
      uVar4 = FUN_00832e60(10,uVar8,uVar4,uVar9);
      local_c = 1;
    }
    else {
      boost::serialization::
      singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::xml_oarchive>_>
      ::get_instance();
      iVar6 = FUN_0082dfa0(piVar5);
      if (iVar6 == 0) {
        iVar6 = 0;
      }
      else {
        iVar6 = iVar6 + -4;
      }
      if (iVar6 != 0) goto LAB_007f224f;
      piVar5 = (int *)0x2;
      uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
      local_c = 2;
    }
  }
  iVar6 = FUN_007f23cd();
  iVar7 = param_2;
LAB_007f224f:
  FUN_00830570(iVar7,iVar6);
  ExceptionList = local_14;
  return;
}



void FUN_007f226a(void)

{
  undefined4 *unaff_EDI;
  undefined *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = &local_8;
  local_10 = &DAT_03058be8;
  FUN_007f1c65(&local_10);
  if (unaff_EDI != (undefined4 *)0x0) {
    FUN_007bceb5();
    unaff_EDI[9] = local_8;
    *unaff_EDI = boost_132::detail::
                 sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost_132::serialization::detail::null_deleter>
                 ::vftable;
  }
  unaff_EDI[1] = 0;
  return;
}



int FUN_007f22ac(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007f2323(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *peVar6;
  
  FUN_0082ace0(*param_1);
  puVar1 = (undefined4 *)param_1[1];
  puVar3 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  uVar4 = (**(code **)*puVar3)();
  FUN_00832c10(uVar4);
  puVar5 = (undefined4 *)FUN_00832bf0(puVar1,puVar3,&LAB_007bb703);
  if (puVar5 != puVar3) {
    uVar4 = puVar5[1];
    uVar2 = *puVar1;
    peVar6 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
             ::get_instance();
    uVar4 = FUN_0083e220(uVar4,peVar6,uVar2);
    *puVar1 = uVar4;
  }
  FUN_0082af90(*param_1);
  return;
}



undefined4 * FUN_007f23cd(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W7EE09E61> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W7EE09E61> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>
::get_const_instance(void)

{
                    // 0x3f23f6  696
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f243c();
    _atexit((_func_4879 *)&LAB_00c75d5c);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W7EE09E61> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W7EE09E61> >::get_instance(void)

pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>
::get_instance(void)

{
                    // 0x3f23fb  1016
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f243c();
    _atexit((_func_4879 *)&LAB_00c75d5c);
  }
  return (pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W7EE09E61> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W7EE09E61> >::get_const_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>
::get_const_instance(void)

{
                    // 0x3f2437  614
                    // ?get_const_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vxml_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
                    // 0x3f2437  1122
                    // ?get_mutable_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>::
    oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>
              ((oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75d72);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>
* FUN_007f243c(void)

{
  extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *peVar1;
  oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>::vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082df60(&DAT_032f0074);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f2490(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W7EE09E61> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W7EE09E61> >::get_instance(void)

oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>
::get_instance(void)

{
                    // 0x3f24b2  934
                    // ?get_instance@?$singleton@V?$oserializer@Vxml_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vxml_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>::
    oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>
              ((oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75d72);
  }
  return (oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f24fc(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0041 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W7EE09E61>::oserializer<class boost::archive::xml_oarchive,class
// W71DA37B9::W7EE09E61>(void)

oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> * __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>::
oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>
          (oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> *this)

{
  extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *peVar1;
  
                    // 0x3f2525  72
                    // ??0?$oserializer@Vxml_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W7EE09E61>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>::save_object_ptr
          (pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> *this,
          basic_oarchive *param_1,void *param_2)

{
                    // 0x3f253f  1720
                    // ?save_object_ptr@?$pointer_oserializer@Vxml_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  FUN_007f26f6(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f2561(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>::vftable;
  FUN_0082df80(&DAT_032f0074);
  FUN_00833b50();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::xml_oarchive,class W71DA37B9::W7EE09E61>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>::
save_object_data(oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> *this,
                basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0x3f259f  1682
                    // ?save_object_data@?$oserializer@Vxml_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  FUN_007e86d0();
  if (param_1 == (basic_oarchive *)0xfffffff7) {
    param_1 = (basic_oarchive *)0x0;
  }
  FUN_007e883d(param_1 + 9);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// class boost::serialization::void_cast_detail::void_caster const & __cdecl
// boost::serialization::void_cast_register<class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter>,class
// boost_132::detail::sp_counted_base>(class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> const *,class
// boost_132::detail::sp_counted_base const *)

void_caster * __cdecl
boost::serialization::
void_cast_register<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
          (sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>
           *param_1,sp_counted_base *param_2)

{
                    // 0x3f260e  5
                    // ??$void_cast_register@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@serialization@boost@@YAABVvoid_caster@void_cast_detail@01@PBV?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@PBVsp_counted_base@56@@Z
                    // 0x3f260e  707
                    // ?get_const_instance@?$singleton@V?$void_caster_primitive@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@serialization@boost@@@serialization@boost@@SAABV?$void_caster_primitive@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f266f();
    _atexit((_func_4879 *)&LAB_00c75d8d);
  }
  return (void_caster *)
         &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_007f2613(undefined4 param_1)

{
  ___RTDynamicCast(param_1,0,&boost_132::detail::sp_counted_base::RTTI_Type_Descriptor,
                   &boost_132::detail::
                    sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>
                    ::RTTI_Type_Descriptor,0);
  return;
}



undefined FUN_007f2630(void)

{
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::serialization::void_cast_detail::void_caster_primitive<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W7EE09E61 *,struct
// boost::serialization::null_deleter>,class boost_132::detail::sp_counted_base> & __cdecl
// boost::serialization::singleton<class
// boost::serialization::void_cast_detail::void_caster_primitive<class
// boost_132::detail::sp_counted_base_impl<class W71DA37B9::W7EE09E61 *,struct
// boost::serialization::null_deleter>,class boost_132::detail::sp_counted_base>
// >::get_instance(void)

void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
* __cdecl boost::serialization::
          singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
          ::get_instance(void)

{
                    // 0x3f2633  1027
                    // ?get_instance@?$singleton@V?$void_caster_primitive@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@serialization@boost@@@serialization@boost@@CAAAV?$void_caster_primitive@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@Vsp_counted_base@23@@void_cast_detail@23@XZ
  if ((`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f266f();
    _atexit((_func_4879 *)&LAB_00c75d8d);
  }
  return (void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
          *)&`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
* FUN_007f266f(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base> *peVar1;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base>_>
           ::get_instance();
  _DAT_032f0ba4 =
       boost::serialization::
       singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
       ::get_instance();
  _DAT_032f0bac = 0;
  _DAT_032f0bb0 = 0;
  _t = boost::serialization::void_cast_detail::
       void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
       ::vftable;
  _DAT_032f0ba8 = peVar1;
  FUN_0083ddb0(0);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
       ::vftable;
  return &`private:_static_class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>&___cdecl_boost::serialization::singleton<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f26cd(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::detail::
                singleton_wrapper<class_boost::serialization::void_cast_detail::void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>_>
                ::vftable;
  DAT_032f0042 = 1;
  FUN_007f276d();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int FUN_007f26f6(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61> *poVar2;
  
  FUN_0082dd50(*in_EAX);
  uVar1 = in_EAX[1];
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::xml_oarchive,class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  FUN_00830550(uVar1,poVar2);
  FUN_0082de20(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_007f276d(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::
             void_caster_primitive<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>,class_boost_132::detail::sp_counted_base>
             ::vftable;
  FUN_0083e150();
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 __thiscall FUN_007f2799(undefined4 param_1_00,byte param_1)

{
  FUN_007f276d();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W7EE09E61> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W7EE09E61> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>
::get_const_instance(void)

{
                    // 0x3f27b5  666
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f27fb();
    _atexit((_func_4879 *)&LAB_00c75da8);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W7EE09E61> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W7EE09E61> >::get_instance(void)

pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>
::get_instance(void)

{
                    // 0x3f27ba  986
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f27fb();
    _atexit((_func_4879 *)&LAB_00c75da8);
  }
  return (pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W71DA37B9::W7EE09E61> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::xml_iarchive,class
// W71DA37B9::W7EE09E61> >::get_const_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *peVar1;
  
                    // 0x3f27f6  534
                    // ?get_const_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vxml_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
                    // 0x3f27f6  1084
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75dbe);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>
* FUN_007f27fb(void)

{
  extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *peVar1;
  iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
        ::`2'::t;
  FUN_0082bba0(&DAT_032f006c);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f284f(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W7EE09E61> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W7EE09E61> >::get_instance(void)

iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *peVar1;
  
                    // 0x3f2871  854
                    // ?get_instance@?$singleton@V?$iserializer@Vxml_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vxml_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75dbe);
  }
  return (iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f28c1(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0044 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W7EE09E61>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>::load_object_ptr
          (pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> *this,
          basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3f28ea  1619
                    // ?load_object_ptr@?$pointer_iserializer@Vxml_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7f28f6;
  pvVar1 = operator_new(0x80);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007f2a81(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007f2a0a(param_1 + 9);
  return;
}



void Catch_All_007f2959(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f2966(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>::vftable;
  FUN_0082bbc0(&DAT_032f006c);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::xml_iarchive,class W71DA37B9::W7EE09E61>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>::
load_object_data(iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> *this,
                basic_iarchive *param_1,void *param_2,uint param_3)

{
  int local_c;
  int local_8;
  
                    // 0x3f29a4  1566
                    // ?load_object_data@?$iserializer@Vxml_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  if (*(uint *)((int)param_2 + 0x44) < 0x10) {
    local_c = (int)param_2 + 0x30;
  }
  else {
    local_c = *(int *)((int)param_2 + 0x30);
  }
  local_8 = (int)param_2 + 4;
  FUN_004957e5(&local_c);
  if (*(uint *)((int)param_2 + 0x60) < 0x10) {
    local_c = (int)param_2 + 0x4c;
  }
  else {
    local_c = *(int *)((int)param_2 + 0x4c);
  }
  local_8 = (int)param_2 + 8;
  if (param_1 == (basic_iarchive *)0xfffffff7) {
    param_1 = (basic_iarchive *)0x0;
  }
  FUN_007e89b3(param_1 + 9);
  return;
}



int FUN_007f2a0a(int param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61> *piVar2;
  
  FUN_0082ace0(*in_EAX);
  uVar1 = in_EAX[1];
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::xml_iarchive,class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  FUN_0082af90(*in_EAX);
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007f2a81(int param_1)

{
  if (param_1 != 0) {
    FUN_00b66579(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::oserializer<class boost::archive::binary_oarchive,class std::vector<class
// boost::shared_ptr<class W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61> > > > >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
          ::get_const_instance(void)

{
                    // 0x3f2aa7  565
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75df4);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > > const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::iserializer<class boost::archive::binary_iarchive,class std::vector<class
// boost::shared_ptr<class W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61> > > > >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
  *peVar1;
  
                    // 0x3f2aac  477
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75dd9);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f2ab1(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007f2ad3(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > > & __cdecl boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > > >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
          ::get_instance(void)

{
                    // 0x3f2af5  885
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75df4);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > > & __cdecl boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > > >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
  *peVar1;
  
                    // 0x3f2b3f  797
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75dd9);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f2b8f(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0045 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007f2bb8(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0046 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > >::oserializer<class boost::archive::binary_oarchive,class std::vector<class
// boost::shared_ptr<class W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61> > > >(void)

oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
::
oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
          (oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
           *this)

{
  extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
  *peVar1;
  
                    // 0x3f2be1  23
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
::save_object_data(oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
  *local_8;
  
                    // 0x3f2bfb  1633
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  local_8 = this;
  (**(code **)(*(int *)this + 0xc))(&local_8);
  FUN_007f2c28();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class std::vector<class boost::shared_ptr<class
// W71DA37B9::W7EE09E61>,class std::allocator<class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// > >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_std::vector<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>,class_std::allocator<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3f2c17  1509
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$vector@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@V?$allocator@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@boost@@@std@@@std@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007f2d05(param_1);
  return;
}



void FUN_007f2c28(void)

{
  uint uVar1;
  undefined4 *in_EAX;
  undefined4 uVar2;
  oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
  *poVar3;
  int local_20;
  undefined4 local_1c;
  char *local_18;
  int *local_14;
  
  local_20 = (int)(in_EAX[4] - in_EAX[3]) >> 3;
  local_14 = &local_20;
  local_1c = 1;
  local_18 = "count";
  FUN_007bb1ae();
  local_14 = &local_1c;
  local_18 = "item_version";
  FUN_007bb1ae();
  uVar1 = in_EAX[3];
  if ((uint)in_EAX[4] < uVar1) {
    FUN_00a3fb10();
  }
  local_18 = (char *)*in_EAX;
  local_14 = (int *)uVar1;
  while (local_20 != 0) {
    local_20 = local_20 + -1;
    FUN_007c96e9();
    FUN_007f0e50();
    uVar2 = FUN_007c96e9();
    poVar3 = boost::serialization::
             singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
             ::get_instance();
    FUN_00830550(uVar2,poVar3);
  }
  return;
}



void FUN_007f2d05(undefined4 param_1)

{
  undefined4 in_EAX;
  char **ppcVar1;
  int *piVar2;
  char *pcVar3;
  ushort local_1c [2];
  int local_18;
  int local_14;
  char *local_10;
  int *local_c;
  
  FUN_007ce2c9();
  local_18 = 0;
  FUN_00831450(local_1c);
  local_14 = 0;
  local_c = &local_18;
  local_10 = "count";
  FUN_007bb201();
  if (3 < local_1c[0]) {
    local_c = &local_14;
    local_10 = "item_version";
    FUN_007bb23d();
  }
  FUN_007f10ac(in_EAX,local_18);
  FUN_0046e65a();
  piVar2 = local_c;
  pcVar3 = local_10;
  while (local_18 != 0) {
    local_18 = local_18 + -1;
    ppcVar1 = (char **)FUN_007f2db7(param_1,pcVar3,piVar2);
    pcVar3 = *ppcVar1;
    piVar2 = (int *)ppcVar1[1];
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_007f2db7(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
  *piVar1;
  undefined4 uVar2;
  undefined4 *unaff_ESI;
  undefined4 *puVar3;
  undefined4 local_20;
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_20 = 0;
  local_1c = 0;
  local_8 = 0;
  piVar1 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
           ::get_instance();
  FUN_00832bd0(&local_20,piVar1);
  FUN_007ce26a(&local_20);
  puVar3 = &local_20;
  uVar2 = FUN_007ba0c6(puVar3);
  FUN_00831750(uVar2,puVar3);
  *unaff_ESI = param_2;
  local_8 = 0xffffffff;
  unaff_ESI[1] = param_3;
  if (local_1c != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> > const &
// __cdecl boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
          ::get_const_instance(void)

{
                    // 0x3f2e5f  561
                    // ?get_const_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75e2a);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> > const &
// __cdecl boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> *peVar1;
  
                    // 0x3f2e64  466
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75e0f);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f2e69(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007f2e8b(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
          ::get_instance(void)

{
                    // 0x3f2ead  881
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
    ::
    oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
              ((oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
                   ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75e2a);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
          *)&`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61> >
// >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> *peVar1;
  
                    // 0x3f2ef7  786
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75e0f);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f2f47(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0047 = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                ::vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007f2f70(undefined4 *param_1_00,byte param_1)

{
  DAT_032f0048 = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61>
// >::oserializer<class boost::archive::binary_oarchive,class boost::shared_ptr<class
// W71DA37B9::W7EE09E61> >(void)

oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
* __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
          (oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
           *this)

{
  extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_> *peVar1;
  
                    // 0x3f2f99  19
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61>
// >::save_object_data(class boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
::save_object_data(oserializer<class_boost::archive::binary_oarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                   *this,basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0x3f2fb3  1629
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  FUN_007f3136();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost::shared_ptr<class W71DA37B9::W7EE09E61>
// >::load_object_data(class boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
::load_object_data(iserializer<class_boost::archive::binary_iarchive,class_boost::shared_ptr<class_W71DA37B9::W7EE09E61>_>
                   *this,basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3f2feb  1498
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@V?$shared_ptr@VW7EE09E61@W71DA37B9@@@3@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007f3001(param_2,param_3);
  return;
}



void __thiscall FUN_007f3001(undefined *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined *local_2c;
  undefined ***pppuStack_28;
  undefined *local_24;
  undefined *local_20;
  undefined **local_1c [2];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c1c00a;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  if (param_2 == 0) {
    puVar2 = (undefined4 *)
             boost::serialization::
             singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    local_2c = param_1_00;
    if (param_1_00 == (undefined *)0xfffffff7) {
      local_2c = (undefined *)0x0;
    }
    uVar3 = (**(code **)*puVar2)();
    FUN_00832c10(uVar3);
    local_20 = (undefined *)0x0;
    local_1c[0] = (undefined **)0x0;
    uStack_c = 0;
    pppuStack_28 = (undefined ***)&local_20;
    local_2c = &DAT_03058be0;
    FUN_007f31a8(uVar1);
    pppuStack_28 = local_1c;
    local_2c = &DAT_03058be4;
    FUN_007bc2e0();
    local_2c = local_20;
    FUN_007bceec(local_1c);
    uStack_c._0_1_ = 1;
    FUN_0082c9b0(&local_2c);
    uStack_c = (uint)uStack_c._1_3_ << 8;
    if (pppuStack_28 != (undefined ***)0x0) {
      FUN_007bcf4f();
    }
    uStack_c = 0xffffffff;
    local_24 = local_20;
    if (local_1c[0] != (undefined **)0x0) {
      FUN_007bcf4f();
    }
  }
  else {
    local_1c[0] = &local_24;
    local_20 = &DAT_03058be0;
    FUN_007f31a8(uVar1);
  }
  FUN_007f1c87(param_1_00 + 0x1c);
  ExceptionList = local_14;
  return;
}



int __fastcall FUN_007f3136(int param_1)

{
  int iVar1;
  undefined2 extraout_var;
  int unaff_EBX;
  int *piVar2;
  
  if (unaff_EBX == 0) {
    piVar2 = (int *)0x0;
  }
  else {
    piVar2 = (int *)(unaff_EBX + -9);
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  if (piVar2 == (int *)0xfffffff7) {
    piVar2 = (int *)0x0;
  }
  iVar1 = **(int **)(param_1 + 4);
  FUN_007f35e5();
  if (iVar1 == 0) {
    (**(code **)(*piVar2 + 0x10))(CONCAT22(extraout_var,0xffff));
    FUN_009b4100();
  }
  else {
    FUN_007f34be(piVar2,iVar1);
  }
  if (unaff_EBX == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_EBX + -9;
  }
  return iVar1;
}



int __fastcall FUN_007f31a8(int param_1)

{
  int iVar1;
  int unaff_ESI;
  
  if (unaff_ESI == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = unaff_ESI + -9;
  }
  if (iVar1 == -9) {
    iVar1 = 0;
  }
  FUN_007f343b(iVar1 + 9,*(undefined4 *)(param_1 + 4));
  if (unaff_ESI == 0) {
    return 0;
  }
  return unaff_ESI + -9;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
                    // 0x3f31d6  632
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f321c();
    _atexit((_func_4879 *)&LAB_00c75e45);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> > >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
                    // 0x3f31db  952
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f321c();
    _atexit((_func_4879 *)&LAB_00c75e45);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> > const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> > >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
          ::get_const_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3f3217  473
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
                    // 0x3f3217  1050
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75e5b);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
* FUN_007f321c(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f0064);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f3270(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> > & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> > >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
* __cdecl boost::serialization::
          singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
          ::get_instance(void)

{
  extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
  *peVar1;
  
                    // 0x3f3292  793
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75e5b);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
          *)&`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>::get_instance(void)'
             ::`2'::t;
}



undefined4 * __thiscall FUN_007f32e2(undefined4 *param_1_00,byte param_1)

{
  DAT_032f004a = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
                ::vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class boost_132::detail::sp_counted_base_impl<class
// W71DA37B9::W7EE09E61 *,struct boost::serialization::null_deleter> >::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
::load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
                  *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void **ppvVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  bad_alloc local_24 [4];
  undefined *local_20;
  void ***local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3f330b  1585
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@V?$sp_counted_base_impl@PAVW7EE09E61@W71DA37B9@@Unull_deleter@serialization@boost@@@detail@boost_132@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7f3317;
  puVar2 = (undefined4 *)operator_new(0x2c);
  local_8 = 0;
  local_18 = puVar2;
  if (puVar2 == (undefined4 *)0x0) {
    uVar3 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar3);
  }
  *param_2 = puVar2;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(puVar2);
  local_1c = &param_2;
  local_20 = &DAT_03058be8;
  FUN_007f31a8();
  ppvVar1 = param_2;
  FUN_007bceb5();
  puVar2[9] = ppvVar1;
  local_8 = 0;
  *puVar2 = boost_132::detail::
            sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost_132::serialization::detail::null_deleter>
            ::vftable;
  puVar2[1] = 0;
  local_20 = (undefined *)0x0;
  local_1c = (void ***)puVar2;
  FUN_007f33ec();
  return;
}



void Catch_All_007f33a1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f33ae(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
       ::vftable;
  FUN_008347f0(&DAT_032f0064);
  FUN_00833fa0();
  return;
}



int __fastcall FUN_007f33ec(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>
  *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_boost_132::detail::sp_counted_base_impl<class_W71DA37B9::W7EE09E61*,struct_boost::serialization::null_deleter>_>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



int FUN_007f343b(int param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *peVar5;
  
  puVar2 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  uVar3 = (**(code **)*puVar2)();
  FUN_00832c10(uVar3);
  puVar4 = (undefined4 *)FUN_00832bf0(param_2,puVar2,&LAB_007bc61f);
  if (puVar4 != puVar2) {
    uVar3 = puVar4[1];
    uVar1 = *param_2;
    peVar5 = boost::serialization::
             singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
             ::get_instance();
    uVar3 = FUN_0083e220(uVar3,peVar5,uVar1);
    *param_2 = uVar3;
  }
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + -9;
  }
  return param_1;
}



void FUN_007f34be(undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2016e;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_14;
  piVar3 = (int *)boost::serialization::
                  singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
                  ::get_instance();
  uVar4 = ___RTtypeid(param_2,uVar2);
  piVar5 = (int *)FUN_00830d80(uVar4);
  if (piVar5 != (int *)0x0) goto LAB_007f352e;
  uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
  local_c = 0;
  while( true ) {
    FUN_0043fc7f(uVar4);
LAB_007f352e:
    cVar1 = FUN_00830f50(piVar5);
    if (cVar1 != '\0') break;
    iVar7 = FUN_0083e330(piVar5,piVar3,param_2);
    if (iVar7 == 0) {
      uVar9 = 1;
      uVar4 = (**(code **)(*piVar3 + 8))(1);
      uVar8 = (**(code **)(*piVar5 + 8))(uVar4);
      uVar4 = FUN_00832e60(10,uVar8,uVar4,uVar9);
      local_c = 1;
    }
    else {
      boost::serialization::
      singleton<class_boost::archive::detail::archive_serializer_map<class_boost::archive::binary_oarchive>_>
      ::get_instance();
      iVar6 = FUN_00833f60(piVar5);
      if (iVar6 == 0) {
        iVar6 = 0;
      }
      else {
        iVar6 = iVar6 + -4;
      }
      if (iVar6 != 0) goto LAB_007f35ca;
      piVar5 = (int *)0x2;
      uVar4 = FUN_00832e60(2,"derived class not registered or exported",0,1);
      local_c = 2;
    }
  }
  iVar6 = FUN_007f35e5();
  iVar7 = param_2;
LAB_007f35ca:
  FUN_00830570(iVar7,iVar6);
  ExceptionList = local_14;
  return;
}



undefined4 * FUN_007f35e5(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)
           boost::serialization::
           singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  uVar2 = (**(code **)*puVar1)();
  FUN_00830590(uVar2);
  return puVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W7EE09E61> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W7EE09E61> >::get_const_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>
::get_const_instance(void)

{
                    // 0x3f360e  681
                    // ?get_const_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f3695();
    _atexit((_func_4879 *)&LAB_00c75e8c);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// public: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W7EE09E61> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W7EE09E61> >::get_const_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>
::get_const_instance(void)

{
                    // 0x3f3613  644
                    // ?get_const_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f36e9();
    _atexit((_func_4879 *)&LAB_00c75e76);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W7EE09E61> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W7EE09E61> >::get_const_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>
::get_const_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *peVar1;
  
                    // 0x3f3618  489
                    // ?get_const_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAABV?$iserializer@Vbinary_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
                    // 0x3f3618  1062
                    // ?get_mutable_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@SAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75ea2);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W7EE09E61> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W7EE09E61> >::get_instance(void)

pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>
::get_instance(void)

{
                    // 0x3f361d  1001
                    // ?get_instance@?$singleton@V?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f3695();
    _atexit((_func_4879 *)&LAB_00c75e8c);
  }
  return (pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: static class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W7EE09E61> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W7EE09E61> >::get_instance(void)

pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>
::get_instance(void)

{
                    // 0x3f3659  964
                    // ?get_instance@?$singleton@V?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    FUN_007f36e9();
    _atexit((_func_4879 *)&LAB_00c75e76);
  }
  return (pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>
* FUN_007f3695(void)

{
  extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *peVar1;
  oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> *poVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  FUN_00833b30(peVar1);
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>::
       vftable;
  poVar2 = boost::serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>
    **)(poVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
        ::`2'::t;
  FUN_00833f20(&DAT_032f005c);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>
* FUN_007f36e9(void)

{
  extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *peVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> *piVar2;
  
  peVar1 = boost::serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  FUN_00833f80(peVar1);
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>::
       vftable;
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  *(singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>
    **)(piVar2 + 8) =
       &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
        ::`2'::t;
  FUN_008347d0(&DAT_032f0054);
  _t = boost::serialization::detail::
       singleton_wrapper<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>
       ::vftable;
  return &`private:_static_class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f373d(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007f375f(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W7EE09E61> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W7EE09E61> >::get_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>
::get_instance(void)

{
                    // 0x3f3781  897
                    // ?get_instance@?$singleton@V?$oserializer@Vbinary_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$oserializer@Vbinary_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>::
    oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>
              ((oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75ebd);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// private: static class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W7EE09E61> & __cdecl
// boost::serialization::singleton<class boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W7EE09E61> >::get_instance(void)

iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>
::get_instance(void)

{
  extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *peVar1;
  
                    // 0x3f37cb  809
                    // ?get_instance@?$singleton@V?$iserializer@Vbinary_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@@serialization@boost@@CAAAV?$iserializer@Vbinary_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@3@XZ
  if ((`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    peVar1 = singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
             ::get_instance();
    FUN_00832df0(peVar1);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75ea2);
  }
  return (iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



undefined4 * __thiscall FUN_007f381b(undefined4 *param_1_00,byte param_1)

{
  DAT_032f004d = 1;
  *param_1_00 = boost::archive::detail::
                oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>::
                vftable;
  FUN_00830880();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007f3844(undefined4 *param_1_00,byte param_1)

{
  DAT_032f004e = 1;
  *param_1_00 = boost::archive::detail::
                iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>::
                vftable;
  FUN_00832e10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W7EE09E61>::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W7EE09E61>(void)

oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> * __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>::
oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>
          (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> *this)

{
  extended_type_info_typeid<class_W71DA37B9::W7EE09E61> *peVar1;
  
                    // 0x3f386d  35
                    // ??0?$oserializer@Vbinary_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@QAE@XZ
  peVar1 = serialization::
           singleton<class_boost::serialization::extended_type_info_typeid<class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  FUN_00830860(peVar1);
  *(undefined ***)this = vftable;
  return this;
}



// private: virtual void __thiscall boost::archive::detail::pointer_oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W7EE09E61>::save_object_ptr(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>::
save_object_ptr(pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>
                *this,basic_oarchive *param_1,void *param_2)

{
  oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> *poVar1;
  
                    // 0x3f3887  1705
                    // ?save_object_ptr@?$pointer_oserializer@Vbinary_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_oarchive@234@PBX@Z
  poVar1 = serialization::
           singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  FUN_00830550(param_2,poVar1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f38d1(void)

{
  _t = boost::archive::detail::
       pointer_oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>::
       vftable;
  FUN_00833f40(&DAT_032f005c);
  FUN_00833b50();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// private: virtual void __thiscall boost::archive::detail::pointer_iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W7EE09E61>::load_object_ptr(class
// boost::archive::detail::basic_iarchive &,void * &,unsigned int)const 

void __thiscall
boost::archive::detail::
pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>::
load_object_ptr(pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>
                *this,basic_iarchive *param_1,void **param_2,uint param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  bad_alloc local_24 [4];
  undefined4 local_20;
  void *local_1c;
  void *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
                    // 0x3f390f  1597
                    // ?load_object_ptr@?$pointer_iserializer@Vbinary_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@EBEXAAVbasic_iarchive@234@AAPAXI@Z
  uStack_4 = 0x14;
  local_8 = 0x7f391b;
  pvVar1 = operator_new(0x80);
  local_8 = 0;
  local_18 = pvVar1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = std::bad_alloc::bad_alloc(local_24);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_006e0cb3(uVar2);
  }
  *param_2 = pvVar1;
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00831430(pvVar1);
  FUN_007f2a81(pvVar1);
  local_8 = 0;
  local_20 = 0;
  local_1c = pvVar1;
  FUN_007f3a87();
  return;
}



void Catch_All_007f397d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_007f398a(void)

{
  _t = boost::archive::detail::
       pointer_iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>::
       vftable;
  FUN_008347f0(&DAT_032f0054);
  FUN_00833fa0();
  return;
}



// public: virtual void __thiscall boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W7EE09E61>::save_object_data(class
// boost::archive::detail::basic_oarchive &,void const *)const 

void __thiscall
boost::archive::detail::
oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>::save_object_data
          (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> *this,
          basic_oarchive *param_1,void *param_2)

{
  undefined local_8 [4];
  
                    // 0x3f39c8  1645
                    // ?save_object_data@?$oserializer@Vbinary_oarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_oarchive@234@PBX@Z
  (**(code **)(*(int *)this + 0xc))(local_8);
  FUN_007eabb5();
  FUN_007eabf5();
  return;
}



// public: virtual void __thiscall boost::archive::detail::iserializer<class
// boost::archive::binary_iarchive,class W71DA37B9::W7EE09E61>::load_object_data(class
// boost::archive::detail::basic_iarchive &,void *,unsigned int)const 

void __thiscall
boost::archive::detail::
iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>::load_object_data
          (iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> *this,
          basic_iarchive *param_1,void *param_2,uint param_3)

{
                    // 0x3f3a2a  1521
                    // ?load_object_data@?$iserializer@Vbinary_iarchive@archive@boost@@VW7EE09E61@W71DA37B9@@@detail@archive@boost@@UBEXAAVbasic_iarchive@234@PAXI@Z
  FUN_007cdaa7();
  FUN_007eac55();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// public: static class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W7EE09E61> const & __cdecl
// boost::serialization::singleton<class boost::archive::detail::oserializer<class
// boost::archive::binary_oarchive,class W71DA37B9::W7EE09E61> >::get_const_instance(void)

oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>
::get_const_instance(void)

{
  if ((`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>::
    oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>
              ((oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> *)
               &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
                ::`2'::t);
    _t = detail::
         singleton_wrapper<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>
         ::vftable;
    _atexit((_func_4879 *)&LAB_00c75ebd);
  }
  return (oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61> *)
         &`private:_static_class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::oserializer<class_boost::archive::binary_oarchive,class_W71DA37B9::W7EE09E61>_>::get_instance(void)'
          ::`2'::t;
}



int __fastcall FUN_007f3a87(int param_1)

{
  undefined4 uVar1;
  iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61> *piVar2;
  int unaff_EBX;
  
  uVar1 = *(undefined4 *)(param_1 + 4);
  piVar2 = boost::serialization::
           singleton<class_boost::archive::detail::iserializer<class_boost::archive::binary_iarchive,class_W71DA37B9::W7EE09E61>_>
           ::get_instance();
  FUN_00832bd0(uVar1,piVar2);
  if (unaff_EBX != 0) {
    return unaff_EBX + -9;
  }
  return 0;
}



void __fastcall FUN_007f3b05(int param_1)

{
  int iVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined **local_94;
  undefined4 *local_90;
  uint uStack_8c;
  undefined ***local_70;
  int local_6c;
  undefined local_68 [32];
  undefined *local_48;
  int local_44;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c248a0;
  local_14 = ExceptionList;
  uStack_8c = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_14;
  param_1 = param_1 + 8;
  local_94 = (undefined **)&local_70;
  local_90 = (undefined4 *)param_1;
  piVar2 = (int *)FUN_006ddeb2();
  iVar1 = *piVar2;
  if (local_6c != 0) {
    local_90 = (undefined4 *)0x7f3b59;
    FUN_0040127a();
  }
  if (iVar1 != 0) {
    local_94 = (undefined **)0xa0d;
    local_90 = (undefined4 *)0x14;
    puVar3 = (undefined4 *)FUN_00465be3(&local_48);
    local_c = 0;
    local_94 = (undefined **)*puVar3;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar3 + 1);
  }
  local_94 = &local_48;
  local_90 = (undefined4 *)param_1;
  piVar2 = (int *)FUN_006dddfc();
  iVar1 = *piVar2;
  if (local_44 != 0) {
    local_90 = (undefined4 *)0x7f3d23;
    FUN_0040127a();
  }
  if (iVar1 != 0) {
    local_70 = &local_94;
    local_94 = (undefined **)0xa0d;
    local_90 = (undefined4 *)0x12;
    puVar3 = (undefined4 *)FUN_00465be3(local_68);
    local_70 = &local_94;
    local_c = 9;
    local_94 = (undefined **)*puVar3;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar3 + 1);
  }
  local_94 = &local_48;
  local_90 = (undefined4 *)param_1;
  piVar2 = (int *)FUN_007f64d6();
  iVar1 = *piVar2;
  if (local_44 != 0) {
    local_90 = (undefined4 *)0x7f3ef2;
    FUN_0040127a();
  }
  if (iVar1 != 0) {
    local_70 = &local_94;
    local_94 = (undefined **)0x5022;
    local_90 = (undefined4 *)0x44;
    local_90 = (undefined4 *)FUN_00465be3(&local_48);
    local_c = 0x12;
    local_70 = (undefined ***)*local_90;
    local_90 = local_90 + 1;
                    // WARNING: Subroutine does not return
    local_94 = (undefined **)&UNK_007f3f3d;
    FUN_0043c023();
  }
  local_94 = &local_48;
  local_90 = (undefined4 *)param_1;
  piVar2 = (int *)FUN_0063f857();
  iVar1 = *piVar2;
  if (local_44 != 0) {
    local_90 = (undefined4 *)0x7f3fff;
    FUN_0040127a();
  }
  if (iVar1 != 0) {
    local_70 = &local_94;
    local_94 = (undefined **)0xa0c;
    local_90 = (undefined4 *)0x1cf;
    local_90 = (undefined4 *)FUN_00465be3(&local_48);
    local_c = 0x16;
    local_70 = (undefined ***)*local_90;
    local_90 = local_90 + 1;
                    // WARNING: Subroutine does not return
    local_94 = (undefined **)&UNK_007f404a;
    FUN_0043c023();
  }
  local_94 = &local_48;
  local_90 = (undefined4 *)param_1;
  piVar2 = (int *)FUN_00735165();
  iVar1 = *piVar2;
  if (local_44 != 0) {
    local_90 = (undefined4 *)0x7f41fe;
    FUN_0040127a();
  }
  if (iVar1 != 0) {
    local_70 = &local_94;
    local_94 = (undefined **)0xa0d;
    local_90 = (undefined4 *)0x12;
    puVar3 = (undefined4 *)FUN_00465be3(local_68);
    local_70 = &local_94;
    local_c = 0x1e;
    local_94 = (undefined **)*puVar3;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar3 + 1);
  }
  local_94 = &local_48;
  local_90 = (undefined4 *)param_1;
  piVar2 = (int *)FUN_0073b006();
  iVar1 = *piVar2;
  if (local_44 != 0) {
    local_90 = (undefined4 *)0x7f43b4;
    FUN_0040127a();
  }
  local_70 = &local_94;
  if (iVar1 != 0) {
    local_94 = (undefined **)0x5022;
    local_90 = (undefined4 *)0xf4;
    local_70 = &local_94;
    local_90 = (undefined4 *)FUN_00465be3(&local_48);
    local_c = 0x27;
    local_70 = (undefined ***)*local_90;
    local_90 = local_90 + 1;
                    // WARNING: Subroutine does not return
    local_94 = (undefined **)&UNK_007f43fa;
    FUN_0043c023();
  }
  local_94 = (undefined **)0xa0d;
  local_90 = (undefined4 *)0x12;
  puVar3 = (undefined4 *)FUN_00465be3(local_20);
  local_70 = &local_94;
  local_c = 0x29;
  local_94 = (undefined **)*puVar3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar3 + 1);
}



void FUN_007f45d1(void)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  bool bVar5;
  bool bVar6;
  bool bVar7;
  bool bVar8;
  bool bVar9;
  bool bVar10;
  bool bVar11;
  bool bVar12;
  int *piVar13;
  int iVar14;
  int local_7c [2];
  int local_74;
  undefined local_70 [4];
  int local_6c;
  undefined local_68 [4];
  int local_64;
  undefined local_60 [4];
  int local_5c;
  int local_54;
  int local_4c;
  undefined local_48 [4];
  int local_44;
  int local_3c;
  int local_34;
  int local_2c;
  int local_24;
  undefined local_20 [4];
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2472f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  piVar13 = (int *)FUN_006ddeb2();
  local_c = 0;
  bVar2 = false;
  bVar4 = false;
  if (*piVar13 == 0) {
    piVar13 = (int *)FUN_007057db();
    local_c = 1;
    bVar2 = true;
    bVar4 = false;
    if (*piVar13 != 0) goto LAB_007f466c;
    piVar13 = (int *)FUN_007f658c();
    bVar2 = true;
    bVar4 = true;
    bVar1 = false;
    if (*piVar13 != 0) goto LAB_007f466c;
  }
  else {
LAB_007f466c:
    bVar1 = true;
  }
  if ((bVar4) && (local_7c[0] != 0)) {
    FUN_0040127a();
  }
  local_c = 0;
  if ((bVar2) && (local_74 != 0)) {
    FUN_0040127a();
  }
  local_c = 0xffffffff;
  if (local_6c != 0) {
    FUN_0040127a();
  }
  if (bVar1) {
    iVar14 = FUN_00465be3(local_68);
    local_c = 2;
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar14 + 4);
  }
  piVar13 = (int *)FUN_0072e864();
  iVar14 = *piVar13;
  if (local_64 != 0) {
    FUN_0040127a();
  }
  if (iVar14 != 0) {
    iVar14 = FUN_00465be3(local_60);
    local_c = 6;
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar14 + 4);
  }
  piVar13 = (int *)FUN_006214e8();
  iVar14 = *piVar13;
  if (local_5c != 0) {
    FUN_0040127a();
  }
  if (iVar14 != 0) {
    iVar14 = FUN_00465be3(local_70);
    local_c = 0xb;
                    // WARNING: Subroutine does not return
    FUN_0043c023(iVar14 + 4);
  }
  piVar13 = (int *)FUN_0062f1f4();
  iVar14 = *piVar13;
  if (local_5c != 0) {
    FUN_0040127a();
  }
  if (iVar14 == 0) {
    piVar13 = (int *)FUN_0063f857();
    iVar14 = *piVar13;
    if (local_5c != 0) {
      FUN_0040127a();
    }
    if (iVar14 == 0) {
      piVar13 = (int *)FUN_007f6864();
      iVar14 = *piVar13;
      if (local_1c != 0) {
        FUN_0040127a();
      }
      if (iVar14 != 0) {
        FUN_00465be3(local_20);
        local_c = 0x28;
                    // WARNING: Subroutine does not return
        FUN_0043c023();
      }
      piVar13 = (int *)FUN_0073b006();
      iVar14 = *piVar13;
      if (local_1c != 0) {
        FUN_0040127a();
      }
      if (iVar14 == 0) {
        iVar14 = FUN_00465be3(local_48);
        local_c = 0x30;
                    // WARNING: Subroutine does not return
        FUN_0043c023(iVar14 + 4);
      }
      FUN_00465be3(local_20);
      local_c = 0x2e;
                    // WARNING: Subroutine does not return
      FUN_0043c023();
    }
    local_7c[0] = 0;
    local_c = 0x17;
    piVar13 = (int *)FUN_0065508a();
    local_c = CONCAT31(local_c._1_3_,0x18);
    bVar12 = false;
    bVar11 = false;
    bVar10 = false;
    bVar9 = false;
    bVar8 = false;
    bVar7 = false;
    bVar6 = false;
    bVar5 = false;
    bVar1 = false;
    bVar2 = false;
    bVar4 = false;
    if (*piVar13 == 0) {
      piVar13 = (int *)FUN_00655140();
      local_c = 0x19;
      bVar12 = false;
      bVar11 = false;
      bVar10 = true;
      bVar9 = false;
      bVar8 = false;
      bVar7 = false;
      bVar6 = false;
      bVar5 = false;
      bVar1 = false;
      bVar2 = false;
      bVar4 = false;
      if (*piVar13 == 0) {
        piVar13 = (int *)FUN_00654db2();
        local_c = 0x1a;
        bVar12 = false;
        bVar11 = false;
        bVar10 = true;
        bVar9 = true;
        bVar8 = false;
        bVar7 = false;
        bVar6 = false;
        bVar5 = false;
        bVar1 = false;
        bVar2 = false;
        bVar4 = false;
        if (*piVar13 == 0) {
          piVar13 = (int *)FUN_00654e68();
          local_c = 0x1b;
          bVar12 = false;
          bVar11 = false;
          bVar10 = true;
          bVar9 = true;
          bVar8 = true;
          bVar7 = false;
          bVar6 = false;
          bVar5 = false;
          bVar1 = false;
          bVar2 = false;
          bVar4 = false;
          if (*piVar13 == 0) {
            piVar13 = (int *)FUN_00655418();
            local_c = 0x1c;
            bVar12 = false;
            bVar11 = false;
            bVar10 = true;
            bVar9 = true;
            bVar8 = true;
            bVar7 = true;
            bVar6 = false;
            bVar5 = false;
            bVar1 = false;
            bVar2 = false;
            bVar4 = false;
            if (*piVar13 == 0) {
              piVar13 = (int *)FUN_006554ce();
              local_c = 0x1d;
              bVar12 = false;
              bVar11 = false;
              bVar10 = true;
              bVar9 = true;
              bVar8 = true;
              bVar7 = true;
              bVar6 = true;
              bVar5 = false;
              bVar1 = false;
              bVar2 = false;
              bVar4 = false;
              if (*piVar13 == 0) {
                piVar13 = (int *)FUN_007f67ae();
                local_c = 0x1e;
                bVar12 = false;
                bVar11 = false;
                bVar10 = true;
                bVar9 = true;
                bVar8 = true;
                bVar7 = true;
                bVar6 = true;
                bVar5 = true;
                bVar1 = false;
                bVar2 = false;
                bVar4 = false;
                if (*piVar13 == 0) {
                  piVar13 = (int *)FUN_006551f6();
                  local_c = 0x1f;
                  bVar12 = false;
                  bVar11 = false;
                  bVar10 = true;
                  bVar9 = true;
                  bVar8 = true;
                  bVar7 = true;
                  bVar6 = true;
                  bVar5 = true;
                  bVar1 = true;
                  bVar2 = false;
                  bVar4 = false;
                  if (*piVar13 == 0) {
                    piVar13 = (int *)FUN_006552ac();
                    local_c = 0x20;
                    bVar12 = false;
                    bVar11 = false;
                    bVar10 = true;
                    bVar9 = true;
                    bVar8 = true;
                    bVar7 = true;
                    bVar6 = true;
                    bVar5 = true;
                    bVar1 = true;
                    bVar2 = true;
                    bVar4 = false;
                    if (*piVar13 == 0) {
                      piVar13 = (int *)FUN_00655362();
                      local_c = 0x21;
                      bVar12 = false;
                      bVar11 = false;
                      bVar10 = true;
                      bVar9 = true;
                      bVar8 = true;
                      bVar7 = true;
                      bVar6 = true;
                      bVar5 = true;
                      bVar1 = true;
                      bVar2 = true;
                      bVar4 = true;
                      if (*piVar13 == 0) {
                        piVar13 = (int *)FUN_00655584();
                        local_c = 0x22;
                        bVar12 = true;
                        bVar11 = false;
                        bVar10 = true;
                        bVar9 = true;
                        bVar8 = true;
                        bVar7 = true;
                        bVar6 = true;
                        bVar5 = true;
                        bVar1 = true;
                        bVar2 = true;
                        bVar4 = true;
                        if (*piVar13 == 0) {
                          piVar13 = (int *)FUN_0065563a();
                          bVar12 = true;
                          bVar11 = true;
                          bVar10 = true;
                          bVar9 = true;
                          bVar8 = true;
                          bVar7 = true;
                          bVar6 = true;
                          bVar5 = true;
                          bVar1 = true;
                          bVar2 = true;
                          bVar4 = true;
                          bVar3 = false;
                          if (*piVar13 == 0) goto LAB_007f4ef5;
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    bVar3 = true;
LAB_007f4ef5:
    if ((bVar11) && (local_5c != 0)) {
      FUN_0040127a();
    }
    local_c = 0x21;
    if ((bVar12) && (local_64 != 0)) {
      FUN_0040127a();
    }
    local_c = 0x20;
    if ((bVar4) && (local_6c != 0)) {
      FUN_0040127a();
    }
    local_c = 0x1f;
    if ((bVar2) && (local_74 != 0)) {
      FUN_0040127a();
    }
    local_c = 0x1e;
    if ((bVar1) && (local_54 != 0)) {
      FUN_0040127a();
    }
    local_c = 0x1d;
    if ((bVar5) && (local_4c != 0)) {
      FUN_0040127a();
    }
    local_c = 0x1c;
    if ((bVar6) && (local_44 != 0)) {
      FUN_0040127a();
    }
    local_c = 0x1b;
    if ((bVar7) && (local_3c != 0)) {
      FUN_0040127a();
    }
    local_c = 0x1a;
    if ((bVar8) && (local_34 != 0)) {
      FUN_0040127a();
    }
    local_c = 0x19;
    if ((bVar9) && (local_2c != 0)) {
      FUN_0040127a();
    }
    local_c = 0x18;
    if ((bVar10) && (local_24 != 0)) {
      FUN_0040127a();
    }
    local_c = 0x17;
    if (local_1c != 0) {
      FUN_0040127a();
    }
    if (bVar3) {
      FUN_00465be3(local_20);
      local_c._0_1_ = 0x23;
    }
    else {
      FUN_00465be3(local_20);
      local_c._0_1_ = 0x24;
    }
    FUN_005d11c9();
    local_c = CONCAT31(local_c._1_3_,0x17);
    if (local_1c != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_0043c023(local_7c);
  }
  local_7c[0] = 0;
  local_c = 0xf;
  piVar13 = (int *)FUN_007f6642();
  local_c = CONCAT31(local_c._1_3_,0x10);
  bVar4 = false;
  if (*piVar13 == 0) {
    piVar13 = (int *)FUN_007f66f8();
    bVar4 = true;
    bVar2 = false;
    if (*piVar13 == 0) goto LAB_007f4b0d;
  }
  bVar2 = true;
LAB_007f4b0d:
  if ((bVar4) && (local_5c != 0)) {
    FUN_0040127a();
  }
  local_c = 0xf;
  if (local_64 != 0) {
    FUN_0040127a();
  }
  if (!bVar2) {
    FUN_00465be3(local_60);
    local_c._0_1_ = 0x13;
    FUN_005d11c9();
    local_c = CONCAT31(local_c._1_3_,0xf);
    if (local_5c != 0) {
      FUN_0040127a();
    }
                    // WARNING: Subroutine does not return
    FUN_0043c023(local_7c);
  }
  iVar14 = FUN_00465be3(local_68);
  local_c = CONCAT31(local_c._1_3_,0x11);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar14 + 4);
}



void __fastcall FUN_007f55bc(int param_1)

{
  int iVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined **local_6c;
  undefined4 *local_68;
  uint uStack_64;
  undefined ***local_50;
  int local_4c;
  undefined local_48 [40];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c243ff;
  local_14 = ExceptionList;
  uStack_64 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_14;
  local_68 = (undefined4 *)(param_1 + 8);
  local_6c = (undefined **)&local_50;
  piVar2 = (int *)FUN_0062f1f4();
  iVar1 = *piVar2;
  if (local_4c != 0) {
    local_68 = (undefined4 *)0x7f5610;
    FUN_0040127a();
  }
  local_50 = &local_6c;
  local_6c = (undefined **)0xa0c;
  if (iVar1 != 0) {
    local_68 = (undefined4 *)0x1db;
    local_50 = &local_6c;
    local_68 = (undefined4 *)FUN_00465be3(local_48);
    local_c = 0;
    local_50 = (undefined ***)*local_68;
    local_68 = local_68 + 1;
                    // WARNING: Subroutine does not return
    local_6c = (undefined **)&UNK_007f5654;
    FUN_0043c023();
  }
  local_68 = (undefined4 *)0x6a;
  puVar3 = (undefined4 *)FUN_00465be3(local_20);
  local_50 = &local_6c;
  local_c = 0x10;
  local_6c = (undefined **)*puVar3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar3 + 1);
}



void __fastcall FUN_007f5ab2(int param_1)

{
  int iVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined **local_6c;
  int local_68;
  uint uStack_64;
  undefined ***local_50;
  int local_4c;
  undefined local_38 [24];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c24344;
  local_14 = ExceptionList;
  uStack_64 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_14;
  local_68 = param_1 + 8;
  local_6c = (undefined **)&local_50;
  piVar2 = (int *)FUN_0071cfb3();
  iVar1 = *piVar2;
  if (local_4c != 0) {
    local_68 = 0x7f5b06;
    FUN_0040127a();
  }
  local_50 = &local_6c;
  local_6c = (undefined **)0xa0c;
  local_68 = 0x6a;
  if (iVar1 != 0) {
    local_50 = &local_6c;
    puVar3 = (undefined4 *)FUN_00465be3(local_38);
    local_50 = &local_6c;
    local_c = 0;
    local_6c = (undefined **)*puVar3;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar3 + 1);
  }
  puVar3 = (undefined4 *)FUN_00465be3(local_20);
  local_50 = &local_6c;
  local_c = 0xc;
  local_6c = (undefined **)*puVar3;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar3 + 1);
}



void FUN_007f5ed8(void)

{
  undefined local_38 [36];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c242a9;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465be3(local_38);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



void FUN_007f6080(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2425e;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_007f61b5(void)

{
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c20132;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465be3(local_28);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



void FUN_007f63b4(void)

{
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c200d7;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_00465be3(local_28);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007f64d6(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7f64e2;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W22AF9B25::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W22AF9B25::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007f658c(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7f6598;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W4180795D::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W4180795D::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007f6642(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7f664e;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W03525D4B::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W03525D4B::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007f66f8(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7f6704;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W265C4016::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W265C4016::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007f67ae(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7f67ba;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::WB3983BFD::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::WB3983BFD::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007f6864(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x7f6870;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                   &W8489743A::W202213F5::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W8489743A::WE77C49A0::RTTI_Type_Descriptor,
                           &W8489743A::W202213F5::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



void __fastcall FUN_007f691a(undefined4 *param_1)

{
  *param_1 = W76AFA8BF::W3F20F7A9::vftable;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007f6921(undefined4 *param_1,undefined param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W76AFA8BF::W967055DE::vftable;
    *(undefined *)(puVar2 + 1) = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007f82f1(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007f698e(undefined4 *param_1,undefined2 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W76AFA8BF::W5DCAA246::vftable;
    *(undefined2 *)(puVar2 + 1) = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007f834e(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 * __thiscall FUN_007f69fd(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W76AFA8BF::W3F20F7A9::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007f6a1a(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W76AFA8BF::WC68E9054::vftable;
    puVar2[1] = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007f83ab(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 *
FUN_007f6a87(undefined4 *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x20);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W76AFA8BF::W8BE1A5B6::vftable;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (puVar2 + 1),param_2);
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007f8408(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 * __thiscall FUN_007f6b07(undefined4 *param_1_00,byte param_1)

{
  FUN_004017b2(1,0);
  *param_1_00 = W76AFA8BF::W3F20F7A9::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_007f6b30(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  void **ppvVar4;
  undefined auStack_15c [3];
  undefined local_159;
  undefined4 local_154;
  undefined4 *local_14c;
  undefined4 local_148;
  undefined4 local_144;
  undefined4 local_13c;
  undefined4 local_138;
  undefined local_40 [8];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_38 [24];
  undefined4 local_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3cffb;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_15c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffe98;
  ExceptionList = &local_14;
  local_154 = param_1;
  local_148 = param_2;
  local_20 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_38,0);
  local_c = 0;
  cVar1 = FUN_00bb6b50(local_38,param_1_00,1,uVar2);
  if (cVar1 != '\0') {
    local_13c = 0;
    local_138 = 0;
    local_c._0_1_ = 1;
    puVar3 = (undefined4 *)operator_new(0x18);
    local_c._0_1_ = 2;
    local_14c = puVar3;
    if (puVar3 != (undefined4 *)0x0) {
      ppvVar4 = (void **)FUN_00418daa(1,0);
      if (ppvVar4 == (void **)0x0) {
        ppvVar4 = (void **)0x0;
      }
      else {
        *ppvVar4 = puVar3;
      }
      *puVar3 = ppvVar4;
      puVar3[3] = 0;
      puVar3[4] = 0;
      puVar3[5] = 0;
    }
    local_c = CONCAT31(local_c._1_3_,1);
    puVar3 = (undefined4 *)FUN_007f7c1e(local_40);
    local_144 = *puVar3;
                    // WARNING: Subroutine does not return
    FUN_0043c023(puVar3 + 1);
  }
  FUN_00b940e0(0x37db732d);
  local_159 = 0;
  FUN_004017b2(1,0);
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void thunk_FUN_00501539(void)

{
  int in_EAX;
  
  FUN_005014fa();
  *(undefined4 *)(in_EAX + 0x50) = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)(undefined4 *)(in_EAX + 0x50));
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007f7861(undefined4 *param_1)

{
  FUN_00436bee();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void FUN_007f7889(int **param_1,undefined4 param_2,int *param_3,int param_4)

{
  int *piVar1;
  int **in_EAX;
  int iVar2;
  int iVar3;
  int *piVar4;
  
  piVar4 = in_EAX[3];
  if (((int)in_EAX[4] - (int)piVar4) / 0x18 == 0) {
    iVar3 = 0;
  }
  else {
    if (in_EAX[4] < piVar4) {
      FUN_00a3fb10();
    }
    if ((param_3 == (int *)0x0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    iVar3 = (param_4 - (int)piVar4) / 0x18;
  }
  FUN_007f7968();
  piVar4 = in_EAX[3];
  if (in_EAX[4] < piVar4) {
    FUN_00a3fb10();
  }
  piVar1 = *in_EAX;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1;
  }
  piVar4 = piVar4 + iVar3 * 6;
  if (piVar4 <= *(int **)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(int **)(iVar3 + 0xc) <= piVar4) goto LAB_007f7925;
  }
  FUN_00a3fb10();
LAB_007f7925:
  param_1[1] = piVar4;
  *param_1 = piVar1;
  return;
}



int FUN_007f7937(int param_1,int param_2,undefined4 param_3)

{
  FUN_007f8131(param_1,param_2,param_3,param_2,0);
  return param_2 * 0x18 + param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007f7968(int param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined *puVar5;
  int extraout_ECX;
  int iVar6;
  uint uVar7;
  undefined8 uVar8;
  undefined auStack_4c [24];
  undefined auStack_34 [24];
  int local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x7f7974;
  iVar3 = *(int *)(param_1 + 0xc);
  if (iVar3 == 0) {
    uVar7 = 0;
  }
  else {
    uVar7 = (*(int *)(param_1 + 0x14) - iVar3) / 0x18;
  }
  iVar6 = *(int *)(param_1 + 0x10);
  iVar3 = (iVar6 - iVar3) / 0x18;
  uVar8 = CONCAT44(0xaaaaaaa,iVar3);
  if (iVar3 == 0xaaaaaaa) {
    uVar8 = FUN_004423c1();
    iVar6 = extraout_ECX;
  }
  uVar1 = (int)uVar8 + 1;
  if (uVar7 < uVar1) {
    if ((int)((ulonglong)uVar8 >> 0x20) - (uVar7 >> 1) < uVar7) {
      uVar7 = 0;
    }
    else {
      uVar7 = uVar7 + (uVar7 >> 1);
    }
    if (uVar7 < uVar1) {
      uVar7 = uVar1;
    }
    iVar3 = FUN_007f7bbc();
    local_1c = (param_4 - *(int *)(param_1 + 0xc)) / 0x18;
    local_18 = 0;
    local_8 = 0;
    FUN_007f7937(local_1c * 0x18 + iVar3,1,param_2);
    local_18 = 1;
    FUN_007f7fd4(param_4,iVar3);
    local_18 = 2;
    FUN_007f7fd4(*(undefined4 *)(param_1 + 0x10),(local_1c + 1) * 0x18 + iVar3);
    local_8 = 0xffffffff;
    if (*(int *)(param_1 + 0xc) != 0) {
      FUN_007f7c06(*(undefined4 *)(param_1 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
    }
    *(uint *)(param_1 + 0x14) = uVar7 * 0x18 + iVar3;
    *(int *)(param_1 + 0x10) =
         ((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x18 + 1) * 0x18 + iVar3;
    *(int *)(param_1 + 0xc) = iVar3;
  }
  else {
    if ((iVar6 - param_4) / 0x18 == 0) {
      FUN_007a10f9(auStack_34,param_2);
      local_8 = 2;
      FUN_007f7fd4(*(undefined4 *)(param_1 + 0x10),param_4 + 0x18);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_007f7937(*(int *)(param_1 + 0x10),1 - (*(int *)(param_1 + 0x10) - param_4) / 0x18,
                   auStack_34);
      local_8 = 2;
      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 0x18;
      iVar3 = *(int *)(param_1 + 0x10);
      for (; param_4 != iVar3 + -0x18; param_4 = param_4 + 0x18) {
        FUN_007f81b1();
      }
      puVar5 = auStack_34;
    }
    else {
      FUN_007a10f9(auStack_4c,param_2);
      local_8 = 5;
      uVar2 = *(undefined4 *)(param_1 + 0x10);
      uVar4 = FUN_007f7fd4(uVar2,uVar2);
      *(undefined4 *)(param_1 + 0x10) = uVar4;
      FUN_007f7ff8(param_4,uVar2);
      iVar3 = param_4 + 0x18;
      if (param_4 != iVar3) {
        do {
          FUN_007f81b1();
          param_4 = param_4 + 0x18;
        } while (param_4 != iVar3);
      }
      puVar5 = auStack_4c;
    }
    local_8 = 0xffffffff;
    FUN_007f7861(puVar5);
  }
  return;
}



void Catch_All_007f7a79(void)

{
  int unaff_EBP;
  
  if (1 < *(int *)(unaff_EBP + -0x14)) {
    FUN_007f7c06(*(int *)(unaff_EBP + -0x18) * 0x18 + *(int *)(unaff_EBP + 8));
  }
  if (0 < *(int *)(unaff_EBP + -0x14)) {
    FUN_007f7c06((*(int *)(unaff_EBP + -0x18) + 1) * 0x18 + *(int *)(unaff_EBP + 8));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007f7aba(void)

{
  int iVar1;
  undefined4 uVar2;
  int extraout_ECX;
  int unaff_EBP;
  int unaff_ESI;
  int iVar3;
  
  __CxxThrowException_8();
  if ((extraout_ECX - *(int *)(unaff_EBP + 0x14)) / 0x18 == 0) {
    FUN_007a10f9();
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_007f7fd4();
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_007f7937(*(undefined4 *)(unaff_ESI + 0x10));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_ESI + 0x10) = *(int *)(unaff_ESI + 0x10) + 0x18;
    iVar1 = *(int *)(unaff_ESI + 0x10);
    for (iVar3 = *(int *)(unaff_EBP + 0x14); iVar3 != iVar1 + -0x18; iVar3 = iVar3 + 0x18) {
      FUN_007f81b1();
    }
  }
  else {
    FUN_007a10f9();
    *(undefined4 *)(unaff_EBP + -4) = 5;
    uVar2 = FUN_007f7fd4();
    *(undefined4 *)(unaff_ESI + 0x10) = uVar2;
    FUN_007f7ff8();
    iVar3 = *(int *)(unaff_EBP + 0x14);
    iVar1 = iVar3 + 0x18;
    for (; iVar3 != iVar1; iVar3 = iVar3 + 0x18) {
      FUN_007f81b1();
    }
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_007f7861();
  return;
}



void Catch_All_007f7b3d(void)

{
  int unaff_EBP;
  
  FUN_007f7c06(*(int *)(*(int *)(unaff_EBP + 8) + 0x10) + 0x18);
  FUN_007f7aba(0);
  return;
}



void __fastcall FUN_007f7bbc(uint param_1)

{
  code *pcVar1;
  undefined **local_14 [3];
  char *local_8;
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 0x18) {
    local_8 = (char *)0x0;
    std::exception::exception((exception *)local_14,&local_8);
    local_14[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_14,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 * 0x18);
  return;
}



void FUN_007f7c06(int param_1)

{
  int in_EAX;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 0x18) {
    FUN_007f7861(in_EAX);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007f7c1e(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 unaff_EDI;
  int local_14;
  
  *param_1 = unaff_EDI;
  param_1[1] = 0;
  puVar2 = (undefined4 *)FUN_007f8465(unaff_EDI);
  uVar1 = param_1[1];
  param_1[1] = *puVar2;
  *puVar2 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1);
  return param_1;
}



void FUN_007f7c6b(undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  
  uVar1 = FUN_00422b80(10);
  FUN_007f803e(param_1,param_2,uVar1);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_007f7c91(int *param_1,
                  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_2)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  int *piVar4;
  uint uVar5;
  char local_28;
  locale local_20 [4];
  uint local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x1c;
  local_8 = 0x7f7c9d;
  local_1c = 0;
  local_15 = '\0';
  FUN_00441871(param_1,0);
  local_8 = 0;
  if (local_28 == '\0') {
    *(undefined4 *)((int)param_1 + *(int *)(*param_1 + 4) + 0x18) = 0;
    if (local_15 == '\0') {
      local_1c = local_1c | 2;
    }
    FUN_004259e0(local_1c,0);
    local_8 = 0xffffffff;
    FUN_00413965();
    return param_1;
  }
  uVar1 = FUN_00417498(local_20);
  local_8._0_1_ = 1;
  iVar2 = FUN_00422a40(uVar1);
  local_8._0_1_ = 0;
  std::locale::~locale(local_20);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
            (param_2,0,0xffffffff);
  local_8 = CONCAT31(local_8._1_3_,2);
  uVar5 = *(uint *)((int)param_1 + *(int *)(*param_1 + 4) + 0x18);
  if (((int)uVar5 < 1) || (0xfffffffd < uVar5)) {
    uVar5 = 0xfffffffe;
  }
  uVar3 = std::basic_streambuf<char,struct_std::char_traits<char>_>::sgetc
                    (*(basic_streambuf<char,struct_std::char_traits<char>_> **)
                      ((int)param_1 + *(int *)(*param_1 + 4) + 0x28));
  do {
    if (uVar5 == 0) {
LAB_007f7d25:
      local_8 = 0;
      piVar4 = (int *)FUN_007f7d7b();
      return piVar4;
    }
    if (uVar3 == 0xffffffff) {
      local_1c = local_1c | 1;
      goto LAB_007f7d25;
    }
    if ((*(byte *)(*(int *)(iVar2 + 0x10) + (uVar3 & 0xff) * 2) & 0x48) != 0) goto LAB_007f7d25;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (param_2,1,(char)uVar3);
    local_15 = '\x01';
    uVar5 = uVar5 - 1;
    uVar3 = FUN_0044172e();
  } while( true );
}



undefined * Catch_All_007f7d59(void)

{
  int unaff_EBP;
  
  FUN_004259e0(4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_007f7d76;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007f7d7b(void)

{
  undefined4 unaff_EBX;
  int unaff_EBP;
  int *unaff_ESI;
  
  *(undefined4 *)((int)unaff_ESI + *(int *)(*unaff_ESI + 4) + 0x18) = unaff_EBX;
  if (*(char *)(unaff_EBP + -0x11) == (char)unaff_EBX) {
    *(uint *)(unaff_EBP + -0x18) = *(uint *)(unaff_EBP + -0x18) | 2;
  }
  FUN_004259e0(*(undefined4 *)(unaff_EBP + -0x18),unaff_EBX);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00413965();
  return;
}



void FUN_007f7fd4(undefined4 param_1,undefined4 param_2)

{
  FUN_007f85c3(param_1,param_2,param_2,0);
  return;
}



int FUN_007f7ff8(int param_1,int param_2)

{
  int in_EAX;
  int iVar1;
  
  iVar1 = in_EAX - param_1;
  if (param_1 != in_EAX) {
    do {
      in_EAX = in_EAX + -0x18;
      FUN_007f872a();
    } while (in_EAX != param_1);
  }
  return param_2 + (iVar1 / 0x18) * -0x18;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_007f803e(int *param_1,
                  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_2,byte param_3)

{
  uint uVar1;
  int *piVar2;
  char local_24;
  
  FUN_00441871(param_1,1);
  if (local_24 == '\0') {
    FUN_004259e0(2,0);
    FUN_00413965();
    return param_1;
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
            (param_2,0,0xffffffff);
  uVar1 = std::basic_streambuf<char,struct_std::char_traits<char>_>::sgetc
                    (*(basic_streambuf<char,struct_std::char_traits<char>_> **)
                      (*(int *)(*param_1 + 4) + 0x28 + (int)param_1));
  do {
    if (uVar1 == 0xffffffff) {
LAB_007f80be:
      piVar2 = (int *)FUN_007f8102();
      return piVar2;
    }
    if (uVar1 == param_3) {
      std::basic_streambuf<char,struct_std::char_traits<char>_>::sbumpc
                (*(basic_streambuf<char,struct_std::char_traits<char>_> **)
                  (*(int *)(*param_1 + 4) + 0x28 + (int)param_1));
      goto LAB_007f80be;
    }
    if (0xfffffffd < *(uint *)(param_2 + 0x14)) goto LAB_007f80be;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (param_2,1,(char)uVar1);
    uVar1 = FUN_0044172e();
  } while( true );
}



undefined * Catch_All_007f80e2(void)

{
  int unaff_EBP;
  
  FUN_004259e0(4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_007f80ff;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007f8102(void)

{
  int unaff_EBP;
  
  if (*(char *)(unaff_EBP + -0x15) == '\0') {
    *(uint *)(unaff_EBP + -0x1c) = *(uint *)(unaff_EBP + -0x1c) | 2;
  }
  FUN_004259e0(*(undefined4 *)(unaff_EBP + -0x1c),0);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00413965();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007f8131(int param_1,int param_2,undefined4 param_3)

{
  for (; param_2 != 0; param_2 = param_2 + -1) {
    FUN_007f8183(param_1,param_3);
    param_1 = param_1 + 0x18;
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_007f8161(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 8); iVar1 = iVar1 + 0x18)
  {
    FUN_007f7861(iVar1);
  }
  __CxxThrowException_8(0,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007f8183(int param_1,undefined4 param_2)

{
  if (param_1 != 0) {
    FUN_007a10f9(param_1,param_2);
  }
  return;
}



void FUN_007f81b1(void)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  int iVar3;
  uint uVar4;
  uint uVar5;
  int unaff_EBX;
  uint uVar6;
  undefined4 uVar7;
  
  if (in_EAX != unaff_EBX) {
    uVar4 = *(int *)(unaff_EBX + 0x10) - *(int *)(unaff_EBX + 0xc) >> 3;
    if (uVar4 == 0) {
      FUN_007f8284();
    }
    else {
      iVar3 = *(int *)(in_EAX + 0xc);
      uVar5 = *(int *)(in_EAX + 0x10) - iVar3 >> 3;
      if (uVar5 < uVar4) {
        if (iVar3 == 0) {
          uVar6 = 0;
        }
        else {
          uVar6 = *(int *)(in_EAX + 0x14) - iVar3 >> 3;
        }
        if (uVar6 < uVar4) {
          if (iVar3 != 0) {
            FUN_0043a4e8(*(undefined4 *)(in_EAX + 0x10));
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(*(undefined4 *)(in_EAX + 0xc));
          }
          iVar3 = *(int *)(unaff_EBX + 0x10);
          iVar1 = *(int *)(unaff_EBX + 0xc);
          *(undefined4 *)(in_EAX + 0xc) = 0;
          *(undefined4 *)(in_EAX + 0x10) = 0;
          *(undefined4 *)(in_EAX + 0x14) = 0;
          if (iVar3 - iVar1 >> 3 == 0) {
            return;
          }
          cVar2 = FUN_006b1f5c();
          if (cVar2 == '\0') {
            return;
          }
          uVar7 = *(undefined4 *)(in_EAX + 0xc);
        }
        else {
          FUN_007f8636(*(int *)(unaff_EBX + 0xc) + uVar5 * 8);
          uVar7 = *(undefined4 *)(in_EAX + 0x10);
        }
        iVar3 = FUN_00674fdf(*(undefined4 *)(unaff_EBX + 0x10),uVar7);
      }
      else {
        FUN_007f8636(*(int *)(unaff_EBX + 0x10));
        FUN_0043a4e8(*(undefined4 *)(in_EAX + 0x10));
        iVar3 = *(int *)(in_EAX + 0xc) +
                (*(int *)(unaff_EBX + 0x10) - *(int *)(unaff_EBX + 0xc) >> 3) * 8;
      }
      *(int *)(in_EAX + 0x10) = iVar3;
    }
  }
  return;
}



void FUN_007f8284(void)

{
  int in_EAX;
  undefined4 uVar1;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  if ((local_c == 0) || (local_c != local_14)) {
    FUN_00a3fb10();
  }
  if (local_8 != local_10) {
    uVar1 = FUN_007f8636(*(undefined4 *)(in_EAX + 0x10));
    FUN_0043a4e8(*(undefined4 *)(in_EAX + 0x10));
    *(undefined4 *)(in_EAX + 0x10) = uVar1;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007f82f1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76AFA8BF::W967055DE>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007f8337(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007f834e(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76AFA8BF::W5DCAA246>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007f8394(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007f83ab(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76AFA8BF::WC68E9054>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007f83f1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007f8408(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76AFA8BF::W8BE1A5B6>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007f844e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007f8465(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_p<class_std::vector<class_std::vector<class_boost::shared_ptr<struct_W76AFA8BF::W3F20F7A9>,class_std::allocator<class_boost::shared_ptr<struct_W76AFA8BF::W3F20F7A9>_>_>,class_std::allocator<class_std::vector<class_boost::shared_ptr<struct_W76AFA8BF::W3F20F7A9>,class_std::allocator<class_boost::shared_ptr<struct_W76AFA8BF::W3F20F7A9>_>_>_>_>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007f84ab(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
    FUN_007f8775(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007f84c2(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0;
  uStack_50 = 0x7f84dc;
  puVar1 = (undefined4 *)FUN_00428780();
  uStack_54 = *puVar1;
  local_18 = puVar1[1];
  local_14 = &uStack_54;
  uStack_50 = uStack_54;
  local_1c = uStack_54;
  FUN_00427c30();
  puVar1 = (undefined4 *)FUN_00428780();
  puVar2 = (undefined4 *)FUN_00428750();
  puVar1 = (undefined4 *)FUN_007f8679(*puVar2,puVar2[1],*puVar1,puVar1[1]);
  uStack_50 = local_18;
  uStack_54 = local_1c;
  FUN_00488619(&local_1c,*puVar1,puVar1[1]);
  uStack_50 = 0x7f853f;
  FUN_0042a290();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007f8545(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined local_1c [4];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0;
  local_18 = &uStack_54;
  FUN_00427c30();
  puVar2 = (undefined4 *)FUN_00428780();
  puVar3 = (undefined4 *)FUN_00428750();
  puVar2 = (undefined4 *)FUN_007f86c1(*puVar3,puVar3[1],*puVar2,puVar2[1]);
  uVar1 = *puVar2;
  local_18 = (undefined4 *)puVar2[1];
  uStack_50 = 0x7f85a1;
  puVar2 = (undefined4 *)FUN_00428750();
  uStack_50 = local_18;
  uStack_54 = uVar1;
  FUN_00488619(local_1c,*puVar2,puVar2[1]);
  uStack_50 = 0x7f85bd;
  FUN_0042a290();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_007f85c3(int param_1_00,int param_1,int param_2)

{
  undefined local_34 [24];
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7f85cf;
  local_1c = param_2;
  FUN_004382a5(local_34);
  local_8 = 1;
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0x18) {
    FUN_007f8183(param_2,local_34);
    FUN_007f872a();
    param_2 = param_2 + 0x18;
  }
  local_8 = 0xffffffff;
  FUN_007f7861(local_34);
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_007f8609(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x18); iVar1 != *(int *)(unaff_EBP + 0xc); iVar1 = iVar1 + 0x18
      ) {
    FUN_007f7861(iVar1);
  }
  __CxxThrowException_8(0,0);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_007f7861();
  return;
}



int __thiscall FUN_007f8636(int param_1_00,int param_1)

{
  int in_EAX;
  int iVar1;
  int iVar2;
  
  iVar1 = param_1 - param_1_00;
  if (param_1_00 != param_1) {
    iVar2 = in_EAX - param_1_00;
    do {
      FUN_005d11c9(iVar2 + param_1_00);
      param_1_00 = param_1_00 + 8;
    } while (param_1_00 != param_1);
  }
  return in_EAX + (iVar1 >> 3) * 8;
}



void __fastcall FUN_007f866b(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_007f8775(*(int *)(param_1 + 0xc));
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall
FUN_007f8679(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = &uStack_2c;
  uStack_2c = param_1_00;
  uStack_28 = param_1_00;
  FUN_00427c30();
  FUN_007f87c5(local_14,param_1,param_2,param_3,param_4);
  uStack_28 = 0x7f86b9;
  FUN_0042a290();
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007f86c1(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  char *pcVar2;
  undefined4 *unaff_ESI;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0;
  local_1c = param_1;
  local_18 = param_2;
  while( true ) {
    cVar1 = FUN_008477d0(&stack0x0000000c);
    if (cVar1 == '\0') break;
    pcVar2 = std::
             _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          *)&local_1c);
    cVar1 = FUN_00429660(*pcVar2);
    if (cVar1 == '\0') break;
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)&local_1c);
  }
  *unaff_ESI = local_1c;
  unaff_ESI[1] = local_18;
  FUN_0042a290();
  return;
}



void FUN_007f872a(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  int in_EAX;
  int unaff_EDI;
  
  if (unaff_EDI != in_EAX) {
    FUN_005e3390(in_EAX);
    puVar1 = (undefined4 *)(in_EAX + 0xc);
    puVar2 = (undefined4 *)(unaff_EDI + 0xc);
    if (puVar2 != puVar1) {
      uVar3 = *puVar2;
      *puVar2 = *puVar1;
      *puVar1 = uVar3;
    }
    puVar1 = (undefined4 *)(in_EAX + 0x10);
    puVar2 = (undefined4 *)(unaff_EDI + 0x10);
    if (puVar2 != puVar1) {
      uVar3 = *puVar2;
      *puVar2 = *puVar1;
      *puVar1 = uVar3;
    }
    puVar1 = (undefined4 *)(in_EAX + 0x14);
    puVar2 = (undefined4 *)(unaff_EDI + 0x14);
    if (puVar2 != puVar1) {
      uVar3 = *puVar2;
      *puVar2 = *puVar1;
      *puVar1 = uVar3;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007f8775(undefined4 *param_1)

{
  if (param_1[3] != 0) {
    FUN_007f7c06(param_1[4]);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007f87c5(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  char cVar1;
  char *pcVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0;
  local_18 = param_4;
  local_14 = param_5;
  do {
    cVar1 = FUN_008477d0(&param_2);
    if (cVar1 == '\0') {
      *unaff_ESI = param_2;
      uVar3 = param_3;
      goto LAB_007f881b;
    }
    FUN_00429850();
    pcVar2 = std::
             _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          *)&local_18);
    cVar1 = FUN_00429660(*pcVar2);
  } while (cVar1 != '\0');
  puVar4 = (undefined4 *)
           std::
           _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
           operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       *)&local_18);
  uVar3 = puVar4[1];
  *unaff_ESI = *puVar4;
LAB_007f881b:
  unaff_ESI[1] = uVar3;
  FUN_0042a290();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

undefined __thiscall
FUN_007f88f6(int param_1_00,undefined4 param_1,undefined4 *param_2,char param_3)

{
  code **ppcVar1;
  code *pcVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined uVar6;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 *puStack_24;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar3 = param_2;
  uStack_4 = 0;
  puVar4 = (undefined4 *)auStack_20;
  local_8 = 0;
  uVar6 = param_3 == '\x01';
  if ((bool)uVar6) {
    param_2 = (undefined4 *)0x0;
    uStack_28 = param_1;
    puStack_24 = puVar3;
    puVar4 = &uStack_2c;
    uStack_2c = 0x7f892b;
    uVar6 = (**(code **)(**(int **)(param_1_00 + 4) + 8))();
  }
  local_8 = 0xffffffff;
  if (param_2 != (undefined4 *)0x0) {
    ppcVar1 = (code **)*param_2;
    *(undefined4 *)((int)puVar4 + -4) = 1;
    pcVar2 = *ppcVar1;
    puVar5 = (undefined4 *)((int)puVar4 + -8);
    puVar4 = (undefined4 *)((int)puVar4 + -8);
    *puVar5 = 0x7f893e;
    (*pcVar2)();
  }
  *(undefined4 *)((int)puVar4 + -4) = 0x7f8945;
  return uVar6;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007f8948(undefined4 *param_1_00,byte param_1)

{
  if (param_1_00[2] != 0) {
    FUN_0040127a();
  }
  *param_1_00 = W8FD9BF6F::W1D4427CA::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007f8b2b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W76AFA8BF::W7C0B6555>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007f8b71(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_007f8b88(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8FD9BF6F::W1D4427CA::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007f8ba5(undefined4 *param_1)

{
  *param_1 = W8FD9BF6F::W1D4427CA::vftable;
  return;
}



void FUN_007f8c0a(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c240d4;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_007f8d2e(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c240d4;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_007f8e52(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c240d4;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_007f8f76(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c240d4;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_007f9193(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void FUN_007f9227(void)

{
  int iVar1;
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5e0e1;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  iVar1 = FUN_00465be3(local_20);
  local_c = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



undefined4 __thiscall FUN_007f95c7(undefined4 param_1_00,byte param_1)

{
  FUN_00b66074(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007f95e4(undefined4 param_1_00,byte param_1)

{
  FUN_00b9ebc2();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_007f98a5(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7f98bd;
  FUN_007f9ef5();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007f98c4;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_007f9ac3(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7f9adb;
  FUN_007fa12b();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007f9ae2;
  FUN_00a3f6a1();
}



int * FUN_007f960a(undefined4 *param_1)

{
  char cVar1;
  int **ppiVar2;
  int iVar3;
  uint *unaff_EBX;
  undefined4 *puVar4;
  undefined4 *puVar5;
  uint local_64;
  undefined4 local_60 [9];
  undefined4 local_3c [9];
  undefined4 local_18;
  undefined4 local_14;
  int *local_10;
  int *local_c;
  
  FUN_007f9d32(unaff_EBX);
  local_14 = param_1[6];
  local_18 = *param_1;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*unaff_EBX < (uint)local_c[3])) {
    puVar4 = local_3c;
    for (iVar3 = 9; iVar3 != 0; iVar3 = iVar3 + -1) {
      *puVar4 = 0;
      puVar4 = puVar4 + 1;
    }
    local_64 = *unaff_EBX;
    puVar4 = local_3c;
    puVar5 = local_60;
    for (iVar3 = 9; iVar3 != 0; iVar3 = iVar3 + -1) {
      *puVar5 = *puVar4;
      puVar4 = puVar4 + 1;
      puVar5 = puVar5 + 1;
    }
    ppiVar2 = (int **)FUN_007f9bd3(&local_18,&local_64,local_10,local_c);
    local_10 = *ppiVar2;
    local_c = ppiVar2[1];
  }
  if (local_10 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *local_10;
  }
  if (local_c == *(int **)(iVar3 + 0x18)) {
    FUN_00a3fb10();
  }
  return local_c + 4;
}



void FUN_007f96a7(undefined4 *param_1,uint *param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  FUN_007f9d32(param_2);
  local_10 = unaff_EBX[6];
  local_14 = *unaff_EBX;
  puVar3 = &local_c;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (*param_2 < *(uint *)(local_8 + 0xc))) {
    local_10 = unaff_EBX[6];
    local_14 = *unaff_EBX;
    puVar3 = &local_14;
  }
  uVar1 = puVar3[1];
  *param_1 = *puVar3;
  param_1[1] = uVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x007f975d)

undefined4 __thiscall FUN_007f9708(uint *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  uint *extraout_ECX;
  undefined4 local_50 [15];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0;
  if (*param_1_00 == 0) {
    local_50[0] = 0x7f9725;
    local_50[0] = FUN_00412b7a();
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_00412f44();
    param_1_00 = extraout_ECX;
  }
  local_14 = local_50;
  local_50[0] = param_2;
  uVar1 = (**(code **)((*param_1_00 & 0xfffffffe) + 4))(param_1_00 + 2,param_1);
  return uVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_007f976d(int *param_1)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  
  ppiVar2 = (int **)FUN_00418daa(1,0);
  if (ppiVar2 == (int **)0x0) {
    ppiVar2 = (int **)0x0;
  }
  else {
    *ppiVar2 = param_1;
  }
  *param_1 = (int)ppiVar2;
  iVar3 = FUN_007fb0f6();
  piVar1 = param_1 + 6;
  *piVar1 = iVar3;
  *(undefined *)(iVar3 + 0x61) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[7] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_007f97c1(uint *param_1_00,undefined4 *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  uint local_d0 [8];
  undefined local_b0 [80];
  int *local_60 [13];
  undefined local_2c [8];
  undefined4 local_24;
  int **local_20;
  undefined4 local_1c;
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc0;
  local_8 = 0x7f97d0;
  FUN_007f9ec3(param_1_00);
  local_20 = (int **)param_1[6];
  local_24 = *param_1;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*param_1_00 < *(uint *)(local_18 + 0xc))) {
    local_20 = local_60;
    local_60[0] = (int *)FUN_00418daa(1,0);
    if (local_60[0] == (int *)0x0) {
      local_60[0] = (int *)0x0;
    }
    else {
      *local_60[0] = (int)local_60;
    }
    local_8 = 0;
    FUN_007facfe();
    local_8 = 1;
    local_d0[0] = *param_1_00;
    FUN_007fa15f();
    local_8._0_1_ = 2;
    puVar2 = (undefined4 *)FUN_007f9d64(local_2c,local_d0,local_1c,local_18);
    local_1c = *puVar2;
    local_18 = puVar2[1];
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_007f9bab(local_b0);
    local_8 = 0xffffffff;
    FUN_007f9bab(local_60);
  }
  iVar3 = FUN_006badde();
  return iVar3 + 4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007f98a5(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7f98bd;
  FUN_007f9ef5();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007f98c4;
  FUN_00a3f6a1();
}



void FUN_007f98cd(undefined4 *param_1,uint *param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  FUN_007f9ec3(param_2);
  local_10 = unaff_EBX[6];
  local_14 = *unaff_EBX;
  puVar3 = &local_c;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (*param_2 < *(uint *)(local_8 + 0xc))) {
    local_10 = unaff_EBX[6];
    local_14 = *unaff_EBX;
    puVar3 = &local_14;
  }
  uVar1 = puVar3[1];
  *param_1 = *puVar3;
  param_1[1] = uVar1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007f992e(int param_1)

{
  undefined4 uVar1;
  undefined4 auStack_28 [5];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0x7f993a;
  local_14 = auStack_28;
  FUN_0041c235();
  local_8 = 0;
  auStack_28[0] = 0x7f9952;
  uVar1 = FUN_006adf18();
  *(undefined4 *)(param_1 + 0x18) = 0;
  *(undefined4 *)(param_1 + 0x14) = uVar1;
  return param_1;
}



void FUN_007f9963(void)

{
  int in_EAX;
  
  FUN_007fa7ce();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(in_EAX + 0x14));
}



undefined4 * __fastcall FUN_007f9982(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 *in_EAX;
  
  if (param_1 != in_EAX) {
    puVar1 = (undefined4 *)in_EAX[5];
    uVar2 = *in_EAX;
    uVar3 = *puVar1;
    FUN_007fa7ce();
    FUN_007fb8de(param_1,*param_1,*(undefined4 *)param_1[5],uVar2,uVar3,uVar2,puVar1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_007f99bc(int *param_1)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  
  ppiVar2 = (int **)FUN_00418daa(1,0);
  if (ppiVar2 == (int **)0x0) {
    ppiVar2 = (int **)0x0;
  }
  else {
    *ppiVar2 = param_1;
  }
  *param_1 = (int)ppiVar2;
  iVar3 = FUN_007fb465();
  piVar1 = param_1 + 6;
  *piVar1 = iVar3;
  *(undefined *)(iVar3 + 0x2d) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[7] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_007f9a10(uint *param_1)

{
  int *piVar1;
  char cVar2;
  int **ppiVar3;
  undefined4 *unaff_EBX;
  int iVar4;
  int *piVar5;
  uint local_60;
  undefined local_5c [28];
  undefined local_40 [28];
  undefined4 local_24;
  undefined4 local_20;
  int *local_1c;
  int *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x50;
  local_8 = 0x7f9a1c;
  FUN_007fa0f9(param_1);
  local_20 = unaff_EBX[6];
  local_24 = *unaff_EBX;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (piVar5 = local_18, *param_1 < (uint)local_18[3])) {
    FUN_007f992e(local_40);
    local_8 = 0;
    local_60 = *param_1;
    FUN_007fa75e(local_5c);
    local_8 = CONCAT31(local_8._1_3_,1);
    ppiVar3 = (int **)FUN_007f9f9a(&local_24,&local_60,local_1c,local_18);
    piVar1 = *ppiVar3;
    piVar5 = ppiVar3[1];
    FUN_007f9963();
    FUN_007f9963();
    local_1c = piVar1;
  }
  if (local_1c == (int *)0x0) {
    FUN_00a3fb10();
    iVar4 = 0;
  }
  else {
    iVar4 = *local_1c;
  }
  if (piVar5 == *(int **)(iVar4 + 0x18)) {
    FUN_00a3fb10();
  }
  return piVar5 + 4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007f9ac3(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7f9adb;
  FUN_007fa12b();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007f9ae2;
  FUN_00a3f6a1();
}



void FUN_007f9aeb(undefined4 *param_1,uint *param_2)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *unaff_EBX;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  
  FUN_007fa0f9(param_2);
  local_10 = unaff_EBX[6];
  local_14 = *unaff_EBX;
  puVar3 = &local_c;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (*param_2 < *(uint *)(local_8 + 0xc))) {
    local_10 = unaff_EBX[6];
    local_14 = *unaff_EBX;
    puVar3 = &local_14;
  }
  uVar1 = puVar3[1];
  *param_1 = *puVar3;
  param_1[1] = uVar1;
  return;
}



void FUN_007f9b4c(void)

{
  int in_EAX;
  
                    // WARNING: Subroutine does not return
  FUN_0043c023(in_EAX + 4);
}



void __fastcall FUN_007f9b8b(undefined4 param_1)

{
  int in_EAX;
  
  FUN_007f9bab(in_EAX + 0x1c,param_1);
  return;
}



void __fastcall FUN_007f9b97(undefined4 param_1)

{
  int in_EAX;
  
  FUN_007f9bab(in_EAX + 0x20,param_1);
  return;
}



void FUN_007f9ba3(void)

{
  FUN_007f9963();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007f9bab(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7f9bc3;
  FUN_007fa466();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007f9bca;
  FUN_00a3f6a1();
}



undefined4 * FUN_007f9bd3(undefined4 *param_1,uint *param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  bool bVar4;
  undefined4 uVar5;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 == '\0') {
        bVar4 = *(uint *)(param_4 + 0xc) < *param_2;
        if (*param_2 < *(uint *)(param_4 + 0xc)) {
          iVar2 = FUN_007fabe7();
          if (*(uint *)(*(int *)(iVar2 + 4) + 0xc) < *param_2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x35) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_007f9bf5;
          }
          bVar4 = *(uint *)(param_4 + 0xc) < *param_2;
        }
        if (bVar4) {
          FUN_007fab9a();
          cVar1 = FUN_006b8eca();
          if ((cVar1 != '\0') || (*param_2 < *(uint *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x35) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_007f9bf5;
          }
        }
LAB_007f9d10:
        puVar3 = (undefined4 *)FUN_007fa256(in_EAX,param_2);
        *param_1 = *puVar3;
        param_1[1] = puVar3[1];
        return param_1;
      }
      if (*param_2 <= *(uint *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_007f9d10;
      uVar5 = 0;
      goto LAB_007f9bf5;
    }
    if (*(uint *)(param_4 + 0xc) <= *param_2) goto LAB_007f9d10;
  }
  uVar5 = 1;
LAB_007f9bf5:
  FUN_007fa317(param_1,uVar5,param_2);
  return param_1;
}



void FUN_007f9d32(uint *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x35) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((uint)puVar2[3] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x35) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



undefined4 * FUN_007f9d64(undefined4 *param_1,uint *param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  bool bVar4;
  undefined4 uVar5;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 == '\0') {
        bVar4 = *(uint *)(param_4 + 0xc) < *param_2;
        if (*param_2 < *(uint *)(param_4 + 0xc)) {
          iVar2 = FUN_007fab39();
          if (*(uint *)(*(int *)(iVar2 + 4) + 0xc) < *param_2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x61) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_007f9d86;
          }
          bVar4 = *(uint *)(param_4 + 0xc) < *param_2;
        }
        if (bVar4) {
          FUN_007faaec();
          cVar1 = FUN_006b8eca();
          if ((cVar1 != '\0') || (*param_2 < *(uint *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x61) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_007f9d86;
          }
        }
LAB_007f9ea1:
        puVar3 = (undefined4 *)FUN_007fa49a(in_EAX,param_2);
        *param_1 = *puVar3;
        param_1[1] = puVar3[1];
        return param_1;
      }
      if (*param_2 <= *(uint *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_007f9ea1;
      uVar5 = 0;
      goto LAB_007f9d86;
    }
    if (*(uint *)(param_4 + 0xc) <= *param_2) goto LAB_007f9ea1;
  }
  uVar5 = 1;
LAB_007f9d86:
  FUN_007fa611(param_1,uVar5,param_2);
  return param_1;
}



void FUN_007f9ec3(uint *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x61) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((uint)puVar2[3] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x61) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



void FUN_007f9ef5(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_007fa55b(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007f9f29(undefined4 param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  int extraout_ECX;
  int iVar2;
  int unaff_EDI;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7f9f35;
  iVar1 = FUN_007fa7f7(param_3,*(int *)(param_3 + 4),param_1);
  iVar2 = *(int *)(unaff_EDI + 0x18);
  if (iVar2 == 0x3fffffff) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"list<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    iVar1 = __CxxThrowException_8(local_58,&DAT_03115554);
    iVar2 = extraout_ECX;
  }
  *(int *)(unaff_EDI + 0x18) = iVar2 + 1;
  *(int *)(param_3 + 4) = iVar1;
  **(int **)(iVar1 + 4) = iVar1;
  return;
}



undefined4 * FUN_007f9f9a(undefined4 *param_1,uint *param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  bool bVar4;
  undefined4 uVar5;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 == '\0') {
        bVar4 = *(uint *)(param_4 + 0xc) < *param_2;
        if (*param_2 < *(uint *)(param_4 + 0xc)) {
          iVar2 = FUN_007a6a2f();
          if (*(uint *)(*(int *)(iVar2 + 4) + 0xc) < *param_2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x2d) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_007f9fbc;
          }
          bVar4 = *(uint *)(param_4 + 0xc) < *param_2;
        }
        if (bVar4) {
          FUN_00743d11();
          cVar1 = FUN_006b8eca();
          if ((cVar1 != '\0') || (*param_2 < *(uint *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x2d) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_007f9fbc;
          }
        }
LAB_007fa0d7:
        puVar3 = (undefined4 *)FUN_007fa828(in_EAX,param_2);
        *param_1 = *puVar3;
        param_1[1] = puVar3[1];
        return param_1;
      }
      if (*param_2 <= *(uint *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_007fa0d7;
      uVar5 = 0;
      goto LAB_007f9fbc;
    }
    if (*(uint *)(param_4 + 0xc) <= *param_2) goto LAB_007fa0d7;
  }
  uVar5 = 1;
LAB_007f9fbc:
  FUN_007fa99f(param_1,uVar5,param_2);
  return param_1;
}



void FUN_007fa0f9(uint *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x2d) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((uint)puVar2[3] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x2d) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



void FUN_007fa12b(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_007fa8e9(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_007fa15f(void)

{
  undefined4 *in_EAX;
  int iVar1;
  undefined4 *unaff_EBX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  *unaff_EBX = *in_EAX;
  unaff_EBX[1] = in_EAX[1];
  unaff_EBX[2] = in_EAX[2];
  unaff_EBX[3] = in_EAX[3];
  unaff_EBX[4] = in_EAX[4];
  unaff_EBX[5] = in_EAX[5];
  unaff_EBX[6] = in_EAX[6];
  FUN_007fa1a9(unaff_EBX + 7);
  puVar2 = in_EAX + 0xf;
  puVar3 = unaff_EBX + 0xf;
  for (iVar1 = 5; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar3 = *puVar2;
    puVar2 = puVar2 + 1;
    puVar3 = puVar3 + 1;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * __thiscall FUN_007fa1a9(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  int **ppiVar3;
  undefined4 uVar4;
  int iVar5;
  int *piVar6;
  
  ppiVar3 = (int **)FUN_00418daa(1,0);
  if (ppiVar3 == (int **)0x0) {
    ppiVar3 = (int **)0x0;
  }
  else {
    *ppiVar3 = param_1;
  }
  *param_1 = (int)ppiVar3;
  FUN_007facfe();
  iVar1 = param_1[6];
  uVar4 = FUN_007fb78c(*(undefined4 *)(*(int *)(param_1_00 + 0x18) + 4),iVar1);
  *(undefined4 *)(iVar1 + 4) = uVar4;
  param_1[7] = *(int *)(param_1_00 + 0x1c);
  iVar1 = param_1[6];
  piVar2 = *(int **)(iVar1 + 4);
  if (*(char *)((int)*(int **)(iVar1 + 4) + 0x35) == '\0') {
    do {
      piVar6 = piVar2;
      piVar2 = (int *)*piVar6;
    } while (*(char *)((int)piVar2 + 0x35) == '\0');
    *(int **)param_1[6] = piVar6;
    iVar1 = *(int *)(param_1[6] + 4);
    do {
      iVar5 = iVar1;
      iVar1 = *(int *)(iVar5 + 8);
    } while (*(char *)(iVar1 + 0x35) == '\0');
    *(int *)(param_1[6] + 8) = iVar5;
  }
  else {
    *(int *)iVar1 = iVar1;
    *(int *)(param_1[6] + 8) = param_1[6];
  }
  return param_1;
}



void Catch_All_007fa244(void)

{
  code *pcVar1;
  
  FUN_007fa466();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007fa256(undefined4 *param_1,uint *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x35) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (uint)local_c[3]);
      if (*param_2 < (uint)local_c[3]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x35) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007fa2c9;
    }
    FUN_007fabe7();
  }
  uVar3 = local_8;
  if (*param_2 <= (uint)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007fa2c9:
  puVar2 = (undefined4 *)FUN_007fa317(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007fa317(int **param_1_00,undefined4 *param_1,char param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7fa323;
  if (0x6666664 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_007fada1(unaff_ESI[6],param_1_00,unaff_ESI[6],param_3,0);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_007fa43e;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_007fa43e;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_007fa43e:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xd) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x34) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xd) == '\0') {
LAB_007fa3fa:
        *(undefined *)(piVar1 + 0xd) = 1;
        *(undefined *)(piVar7 + 0xd) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x34) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007fad1f(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x34) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x34) = 0;
        FUN_007fad5f(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xd) == '\0') goto LAB_007fa3fa;
    if (piVar8 == (int *)*piVar1) {
      FUN_007fad5f(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x34) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x34) = 0;
    FUN_007fad1f(unaff_ESI);
  } while( true );
}



void FUN_007fa466(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_007fac48(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_007fa49a(undefined4 *param_1,uint *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x61) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (uint)local_c[3]);
      if (*param_2 < (uint)local_c[3]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x61) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007fa50d;
    }
    FUN_007fab39();
  }
  uVar3 = local_8;
  if (*param_2 <= (uint)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007fa50d:
  puVar2 = (undefined4 *)FUN_007fa611(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void FUN_007fa55b(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_007fb835(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_007faaec();
    FUN_007fadde();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007fa611(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7fa61d;
  if (0x30c30c1 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_007fb120(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_007fa736;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_007fa736;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_007fa736:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0x18) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x60) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0x18) == '\0') {
LAB_007fa6f2:
        *(undefined *)(piVar1 + 0x18) = 1;
        *(undefined *)(piVar7 + 0x18) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x60) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007fb074(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x60) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x60) = 0;
        FUN_007fb0b4(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0x18) == '\0') goto LAB_007fa6f2;
    if (piVar8 == (int *)*piVar1) {
      FUN_007fb0b4(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x60) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x60) = 0;
    FUN_007fb074(unaff_ESI);
  } while( true );
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007fa75e(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *apuStack_2c [5];
  undefined4 **local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x7fa76a;
  local_18 = apuStack_2c;
  apuStack_2c[0] = param_1_00;
  FUN_0041c235();
  local_8 = 0;
  apuStack_2c[0] = (undefined4 *)0x7fa785;
  puVar1 = (undefined4 *)FUN_006adf18();
  local_8 = CONCAT31(local_8._1_3_,1);
  param_1[5] = puVar1;
  param_1[6] = 0;
  apuStack_2c[0] = (undefined4 *)param_1_00[5];
  FUN_007fb8de(param_1,*param_1,*puVar1,*param_1_00,*apuStack_2c[0],*param_1_00);
  return param_1;
}



void Catch_All_007fa7b0(void)

{
  int iVar1;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  FUN_007fa7ce();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(iVar1 + 0x14));
}



void FUN_007fa7ce(void)

{
  int *piVar1;
  int iVar2;
  int unaff_ESI;
  
  piVar1 = *(int **)(unaff_ESI + 0x14);
  iVar2 = *piVar1;
  *piVar1 = (int)piVar1;
  *(int *)(*(int *)(unaff_ESI + 0x14) + 4) = *(int *)(unaff_ESI + 0x14);
  *(undefined4 *)(unaff_ESI + 0x18) = 0;
  if (iVar2 != *(int *)(unaff_ESI + 0x14)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  return;
}



void FUN_007fa7f7(undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = param_2;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = *param_3;
  }
  return;
}



void FUN_007fa828(undefined4 *param_1,uint *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x2d) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (uint)local_c[3]);
      if (*param_2 < (uint)local_c[3]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x2d) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007fa89b;
    }
    FUN_007a6a2f();
  }
  uVar3 = local_8;
  if (*param_2 <= (uint)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007fa89b:
  puVar2 = (undefined4 *)FUN_007fa99f(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void FUN_007fa8e9(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_007fb872(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00743d11();
    FUN_007fb190();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007fa99f(int **param_1_00,undefined4 *param_1,char param_2)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7fa9ab;
  if (0x7fffffd < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_007fb48f(unaff_ESI[6],param_1_00,unaff_ESI[6]);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_007faac4;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_007faac4;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_007faac4:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 0xb) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x2c) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 0xb) == '\0') {
LAB_007faa80:
        *(undefined *)(piVar1 + 0xb) = 1;
        *(undefined *)(piVar7 + 0xb) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x2c) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007fb425(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x2c) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x2c) = 0;
        FUN_004fc926(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 0xb) == '\0') goto LAB_007faa80;
    if (piVar8 == (int *)*piVar1) {
      FUN_004fc926(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x2c) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x2c) = 0;
    FUN_007fb425(unaff_ESI);
  } while( true );
}



void FUN_007faaec(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x61) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x61) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x61) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x61) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



void FUN_007fab39(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x61) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x61) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x61) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x61) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x61) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x61) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



void FUN_007fab9a(void)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x35) == '\0') {
    piVar1 = *(int **)(iVar2 + 8);
    if (*(char *)((int)*(int **)(iVar2 + 8) + 0x35) == '\0') {
      do {
        piVar3 = piVar1;
        piVar1 = (int *)*piVar3;
      } while (*(char *)((int)piVar1 + 0x35) == '\0');
      unaff_ESI[1] = (int)piVar3;
    }
    else {
      while ((iVar2 = *(int *)(iVar2 + 4), *(char *)(iVar2 + 0x35) == '\0' &&
             (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
      }
      unaff_ESI[1] = iVar2;
    }
  }
  else {
    FUN_00a3fb10();
  }
  return;
}



void FUN_007fabe7(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x35) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x35) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x35) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x35) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x35) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x35) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



void FUN_007fac48(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_007fb8ac(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_007fab9a();
    FUN_007fb4ff();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_007facfe(void)

{
  int *piVar1;
  int iVar2;
  int unaff_ESI;
  
  iVar2 = FUN_007fb80b();
  piVar1 = (int *)(unaff_ESI + 0x18);
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x35) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  return;
}



void __thiscall FUN_007fad1f(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x35) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



void __thiscall FUN_007fad5f(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x35) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



void FUN_007fada1(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,
                 undefined param_5)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar3 = puVar1 + 3;
    for (iVar2 = 10; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar3 = *param_4;
      param_4 = param_4 + 1;
      puVar3 = puVar3 + 1;
    }
    *(undefined *)(puVar1 + 0xd) = param_5;
    *(undefined *)((int)puVar1 + 0x35) = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007faec9)
// WARNING: Removing unreachable block (ram,0x007faed9)
// WARNING: Removing unreachable block (ram,0x007faee2)
// WARNING: Removing unreachable block (ram,0x007faee5)
// WARNING: Removing unreachable block (ram,0x007faed5)
// WARNING: Removing unreachable block (ram,0x007faef2)
// WARNING: Removing unreachable block (ram,0x007faf02)
// WARNING: Removing unreachable block (ram,0x007faf0d)
// WARNING: Removing unreachable block (ram,0x007faf09)
// WARNING: Removing unreachable block (ram,0x007faefd)
// WARNING: Removing unreachable block (ram,0x007faf10)

void FUN_007fadde(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7fadea;
  if (*(char *)((int)param_4 + 0x61) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_007faaec();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x61) == '\0') {
    if (*(char *)(param_4[2] + 0x61) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x61) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x61) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x61) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x61) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x61) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0x18) != '\x01') {
LAB_007fb041:
    FUN_007f9bab(param_4 + 0xb);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_007faff5:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0x18) != '\x01')
     ) goto LAB_007fb03d;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0x18) == '\0') {
      *(undefined *)(ppiVar4 + 0x18) = 1;
      *(undefined *)(ppiVar3 + 0x18) = 0;
      FUN_007fb074(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x61) == '\0') {
      if ((*(char *)(*ppiVar4 + 0x18) != '\x01') || (*(char *)(ppiVar4[2] + 0x18) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0x18) == '\x01') {
          *(undefined *)(*ppiVar4 + 0x18) = 1;
          *(undefined *)(ppiVar4 + 0x18) = 0;
          FUN_007fb0b4(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0x18) = *(undefined *)(ppiVar3 + 0x18);
        *(undefined *)(ppiVar3 + 0x18) = 1;
        *(undefined *)(ppiVar4[2] + 0x18) = 1;
        FUN_007fb074(param_1);
        goto LAB_007fb03d;
      }
LAB_007fafec:
      *(undefined *)(ppiVar4 + 0x18) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0x18) == '\0') {
      *(undefined *)(ppiVar4 + 0x18) = 1;
      *(undefined *)(ppiVar3 + 0x18) = 0;
      FUN_007fb0b4(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x61) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0x18) == '\x01') && (*(char *)(*ppiVar4 + 0x18) == '\x01'))
      goto LAB_007fafec;
      if (*(char *)(*ppiVar4 + 0x18) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0x18) = 1;
        *(undefined *)(ppiVar4 + 0x18) = 0;
        FUN_007fb074(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0x18) = *(undefined *)(ppiVar3 + 0x18);
      *(undefined *)(ppiVar3 + 0x18) = 1;
      *(undefined *)(*ppiVar4 + 0x18) = 1;
      FUN_007fb0b4(param_1);
LAB_007fb03d:
      *(undefined *)(ppiVar5 + 0x18) = 1;
      goto LAB_007fb041;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_007faff5;
}



void __thiscall FUN_007fb074(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x61) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



void __thiscall FUN_007fb0b4(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x61) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
  }
  else {
    piVar2 = (int *)param_1_00[1];
    if (param_1_00 == (int *)piVar2[2]) {
      piVar2[2] = iVar1;
    }
    else {
      *piVar2 = iVar1;
    }
  }
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



void FUN_007fb0f6(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(100);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 0x18) = 1;
  *(undefined *)((int)puVar1 + 0x61) = 0;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_007fb120(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(100);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_1_00;
    FUN_007fa15f();
    *(undefined *)(puVar1 + 0x18) = 0;
    *(undefined *)((int)puVar1 + 0x61) = 0;
  }
  return puVar1;
}



void Catch_All_007fb17d(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007fb27b)
// WARNING: Removing unreachable block (ram,0x007fb28b)
// WARNING: Removing unreachable block (ram,0x007fb294)
// WARNING: Removing unreachable block (ram,0x007fb297)
// WARNING: Removing unreachable block (ram,0x007fb287)
// WARNING: Removing unreachable block (ram,0x007fb2a4)
// WARNING: Removing unreachable block (ram,0x007fb2b4)
// WARNING: Removing unreachable block (ram,0x007fb2bf)
// WARNING: Removing unreachable block (ram,0x007fb2bb)
// WARNING: Removing unreachable block (ram,0x007fb2af)
// WARNING: Removing unreachable block (ram,0x007fb2c2)

void FUN_007fb190(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7fb19c;
  if (*(char *)((int)param_4 + 0x2d) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00743d11();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
    if (*(char *)(param_4[2] + 0x2d) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x2d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x2d) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x2d) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0xb) != '\x01') {
LAB_007fb3f3:
    FUN_007f9963();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_007fb3a7:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xb) != '\x01'))
  goto LAB_007fb3ef;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0xb) == '\0') {
      *(undefined *)(ppiVar4 + 0xb) = 1;
      *(undefined *)(ppiVar3 + 0xb) = 0;
      FUN_007fb425(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x2d) == '\0') {
      if ((*(char *)(*ppiVar4 + 0xb) != '\x01') || (*(char *)(ppiVar4[2] + 0xb) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0xb) == '\x01') {
          *(undefined *)(*ppiVar4 + 0xb) = 1;
          *(undefined *)(ppiVar4 + 0xb) = 0;
          FUN_004fc926(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0xb) = *(undefined *)(ppiVar3 + 0xb);
        *(undefined *)(ppiVar3 + 0xb) = 1;
        *(undefined *)(ppiVar4[2] + 0xb) = 1;
        FUN_007fb425(param_1);
        goto LAB_007fb3ef;
      }
LAB_007fb39e:
      *(undefined *)(ppiVar4 + 0xb) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0xb) == '\0') {
      *(undefined *)(ppiVar4 + 0xb) = 1;
      *(undefined *)(ppiVar3 + 0xb) = 0;
      FUN_004fc926(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x2d) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0xb) == '\x01') && (*(char *)(*ppiVar4 + 0xb) == '\x01'))
      goto LAB_007fb39e;
      if (*(char *)(*ppiVar4 + 0xb) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0xb) = 1;
        *(undefined *)(ppiVar4 + 0xb) = 0;
        FUN_007fb425(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0xb) = *(undefined *)(ppiVar3 + 0xb);
      *(undefined *)(ppiVar3 + 0xb) = 1;
      *(undefined *)(*ppiVar4 + 0xb) = 1;
      FUN_004fc926(param_1);
LAB_007fb3ef:
      *(undefined *)(ppiVar5 + 0xb) = 1;
      goto LAB_007fb3f3;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_007fb3a7;
}



void __thiscall FUN_007fb425(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x2d) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
  }
  else {
    ppiVar2 = (int **)param_1_00[1];
    if (param_1_00 == *ppiVar2) {
      *ppiVar2 = (int *)ppiVar1;
    }
    else {
      ppiVar2[2] = (int *)ppiVar1;
    }
  }
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



void FUN_007fb465(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x30);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 0xb) = 1;
  *(undefined *)((int)puVar1 + 0x2d) = 0;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_007fb48f(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x30);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_1_00;
    FUN_007fa75e(puVar1 + 4);
    *(undefined *)(puVar1 + 0xb) = 0;
    *(undefined *)((int)puVar1 + 0x2d) = 0;
  }
  return puVar1;
}



void Catch_All_007fb4ec(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007fb5ea)
// WARNING: Removing unreachable block (ram,0x007fb5fa)
// WARNING: Removing unreachable block (ram,0x007fb603)
// WARNING: Removing unreachable block (ram,0x007fb606)
// WARNING: Removing unreachable block (ram,0x007fb5f6)
// WARNING: Removing unreachable block (ram,0x007fb613)
// WARNING: Removing unreachable block (ram,0x007fb623)
// WARNING: Removing unreachable block (ram,0x007fb62e)
// WARNING: Removing unreachable block (ram,0x007fb62a)
// WARNING: Removing unreachable block (ram,0x007fb61e)
// WARNING: Removing unreachable block (ram,0x007fb631)

void FUN_007fb4ff(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7fb50b;
  if (*(char *)((int)param_4 + 0x35) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_007fab9a();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x35) == '\0') {
    if (*(char *)(param_4[2] + 0x35) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x35) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x35) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x35) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x35) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x35) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 0xd) != '\x01') {
LAB_007fb762:
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_007fb716:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 0xd) != '\x01'))
  goto LAB_007fb75e;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 0xd) == '\0') {
      *(undefined *)(ppiVar4 + 0xd) = 1;
      *(undefined *)(ppiVar3 + 0xd) = 0;
      FUN_007fad1f(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x35) == '\0') {
      if ((*(char *)(*ppiVar4 + 0xd) != '\x01') || (*(char *)(ppiVar4[2] + 0xd) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 0xd) == '\x01') {
          *(undefined *)(*ppiVar4 + 0xd) = 1;
          *(undefined *)(ppiVar4 + 0xd) = 0;
          FUN_007fad5f(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 0xd) = *(undefined *)(ppiVar3 + 0xd);
        *(undefined *)(ppiVar3 + 0xd) = 1;
        *(undefined *)(ppiVar4[2] + 0xd) = 1;
        FUN_007fad1f(param_1);
        goto LAB_007fb75e;
      }
LAB_007fb70d:
      *(undefined *)(ppiVar4 + 0xd) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 0xd) == '\0') {
      *(undefined *)(ppiVar4 + 0xd) = 1;
      *(undefined *)(ppiVar3 + 0xd) = 0;
      FUN_007fad5f(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x35) == '\0') {
      if ((*(char *)(ppiVar4[2] + 0xd) == '\x01') && (*(char *)(*ppiVar4 + 0xd) == '\x01'))
      goto LAB_007fb70d;
      if (*(char *)(*ppiVar4 + 0xd) == '\x01') {
        *(undefined *)(ppiVar4[2] + 0xd) = 1;
        *(undefined *)(ppiVar4 + 0xd) = 0;
        FUN_007fad1f(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 0xd) = *(undefined *)(ppiVar3 + 0xd);
      *(undefined *)(ppiVar3 + 0xd) = 1;
      *(undefined *)(*ppiVar4 + 0xd) = 1;
      FUN_007fad5f(param_1);
LAB_007fb75e:
      *(undefined *)(ppiVar5 + 0xd) = 1;
      goto LAB_007fb762;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_007fb716;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007fb78c(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *local_18;
  
  local_18 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)param_1 + 0x35) == '\0') {
    puVar1 = (undefined4 *)
             FUN_007fada1(local_18,param_2,local_18,param_1 + 3,*(undefined *)(param_1 + 0xd));
    if (*(char *)((int)local_18 + 0x35) != '\0') {
      local_18 = puVar1;
    }
    uVar2 = FUN_007fb78c(*param_1,puVar1);
    *puVar1 = uVar2;
    uVar2 = FUN_007fb78c(param_1[2],puVar1);
    puVar1[2] = uVar2;
  }
  return local_18;
}



void Catch_All_007fb7f6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_007fb8ac(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_007fb80b(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 0xd) = 1;
  *(undefined *)((int)puVar1 + 0x35) = 0;
  return;
}



void FUN_007fb835(int param_1)

{
  if (*(char *)(param_1 + 0x61) == '\0') {
    FUN_007fb835(*(undefined4 *)(param_1 + 8));
    FUN_007f9bab(param_1 + 0x2c);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_007fb872(int param_1)

{
  if (*(char *)(param_1 + 0x2d) == '\0') {
    FUN_007fb872(*(undefined4 *)(param_1 + 8));
    FUN_007f9963();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_007fb8ac(int param_1)

{
  if (*(char *)(param_1 + 0x35) == '\0') {
    FUN_007fb8ac(*(undefined4 *)(param_1 + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_007fb8de(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  FUN_007fb904(param_1,param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007fb904(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 int param_5,int param_6,int param_7,int param_8)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  
  while( true ) {
    if ((param_5 == 0) || (param_5 != param_7)) {
      FUN_00a3fb10();
    }
    if (param_6 == param_8) break;
    uVar2 = param_3;
    uVar3 = param_4;
    uVar1 = FUN_006adbc2(param_3,param_4);
    FUN_007f9f29(uVar1,uVar2,uVar3);
    FUN_007a741a();
  }
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void Catch_All_007fb957(void)

{
  undefined4 *puVar1;
  int unaff_EBP;
  
  while( true ) {
    if ((*(int *)(unaff_EBP + -0x18) == 0) ||
       (*(int *)(unaff_EBP + -0x18) != *(int *)(unaff_EBP + 0x18))) {
      FUN_00a3fb10();
    }
    if (*(int *)(unaff_EBP + -0x14) == *(int *)(unaff_EBP + 0x1c)) break;
    *(undefined4 *)(unaff_EBP + -0x20) = *(undefined4 *)(unaff_EBP + 0x10);
    *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(unaff_EBP + 0x14);
    puVar1 = (undefined4 *)FUN_00437ab5();
    FUN_007fb9b0(unaff_EBP + -0x28,*puVar1,puVar1[1]);
    FUN_007a741a();
  }
  __CxxThrowException_8(0,0);
  return;
}



void FUN_007fb9b0(undefined4 *param_1,undefined4 param_2,int *param_3)

{
  undefined4 *unaff_EBX;
  
  FUN_007a741a();
  if (param_3 != (int *)unaff_EBX[5]) {
    *(int *)param_3[1] = *param_3;
    *(int *)(*param_3 + 4) = param_3[1];
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  param_1[1] = param_3;
  *param_1 = *unaff_EBX;
  return;
}



undefined4 __thiscall FUN_007fb9f9(undefined4 param_1_00,byte param_1)

{
  FUN_00ba2c8d();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007fba15(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WE9980253::WC6F414AD::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007fba32(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W2260F36E::W37C4EF7A<512>::vftable;
  in_EAX[1] = 0;
  in_EAX[2] = 0;
  in_EAX[4] = 0xffffffff;
  in_EAX[3] = 0;
  in_EAX[5] = 0;
  in_EAX[6] = 0;
  in_EAX[8] = 0xffffffff;
  in_EAX[7] = 0;
  return;
}



undefined4 __thiscall FUN_007fba55(undefined4 param_1_00,byte param_1)

{
  FUN_007e1d39(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007fba72(undefined4 param_1_00,byte param_1)

{
  FUN_00bb0a88();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_007fba8e(undefined4 param_1_00,byte param_1)

{
  FUN_00b629cf();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007fbaaa(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *unaff_ESI;
  
  puVar2 = (undefined4 *)FUN_007e220e();
  uVar1 = *puVar2;
  *puVar2 = 0;
  *unaff_ESI = uVar1;
  FUN_007e2266();
  FUN_007fbb7c(*unaff_ESI,param_1,param_4);
  return;
}



void FUN_007fbae5(char *param_1)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  uint uVar4;
  int iVar5;
  undefined *unaff_EBX;
  
  _memset(unaff_EBX,0,0x40);
  unaff_EBX[0x40] = 0;
  unaff_EBX[0x41] = 0;
  unaff_EBX[0x42] = 0;
  unaff_EBX[0x43] = 0;
  *unaff_EBX = 1;
  *param_1 = '\x01';
  do {
    cVar2 = FUN_0041c034();
    if (cVar2 == '\0') {
      return;
    }
    FUN_0062d53d();
    piVar3 = (int *)FUN_007c96e9();
    iVar1 = *piVar3;
    uVar4 = 0;
    iVar5 = 0;
    do {
      uVar4 = uVar4 + (uint)(byte)unaff_EBX[iVar5] * iVar1;
      unaff_EBX[iVar5] = (char)uVar4;
      uVar4 = uVar4 >> 8;
      iVar5 = iVar5 + 1;
    } while (iVar5 < 0x40);
    if (uVar4 != 0) {
      *param_1 = '\0';
    }
  } while (*param_1 != '\0');
  return;
}



void __fastcall FUN_007fbb7c(int param_1_00,int param_2_00,void *param_1,int param_2,char param_3)

{
  short sVar1;
  ushort uVar2;
  int iVar3;
  ushort uVar4;
  int iVar5;
  byte *pbVar6;
  byte *pbVar7;
  bool bVar8;
  bool bVar9;
  int local_54;
  ushort local_50;
  byte local_4c [68];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  *(undefined *)(param_2 + 0x40) = 0;
  *(undefined *)(param_2 + 0x41) = 0;
  *(undefined *)(param_2 + 0x42) = 0;
  *(undefined *)(param_2 + 0x43) = 0;
  *(undefined *)(param_1_00 + 0x40) = 0;
  *(undefined *)(param_1_00 + 0x41) = 0;
  *(undefined *)(param_1_00 + 0x42) = 0;
  *(undefined *)(param_1_00 + 0x43) = 0;
  *(undefined *)(param_2_00 + 0x40) = 0;
  *(undefined *)(param_2_00 + 0x41) = 0;
  *(undefined *)(param_2_00 + 0x42) = 0;
  *(undefined *)(param_2_00 + 0x43) = 0;
  FUN_007e21ef();
  local_54 = 0;
  param_2_00 = param_2_00 - (int)local_4c;
  do {
    bVar9 = false;
    bVar8 = true;
    iVar5 = 0;
    local_50 = 0;
    do {
      if (bVar9 != bVar8) {
        local_50 = local_50 +
                   (ushort)local_4c[(param_1_00 - (int)local_4c) + iVar5] *
                   (ushort)*(byte *)(param_2 + local_54);
      }
      local_50 = local_50 + local_4c[iVar5];
      iVar3 = iVar5 + 1;
      bVar9 = SBORROW4(iVar3,0x40);
      bVar8 = iVar5 + -0x3f < 0;
      local_4c[iVar5] = (byte)local_50;
      iVar5 = iVar3;
      local_50 = local_50 >> 8;
    } while (iVar3 < 0x41);
    sVar1 = (short)(char)local_4c[0];
    iVar5 = 0;
    uVar2 = 0;
    do {
      pbVar6 = local_4c + iVar5;
      uVar2 = uVar2 + (ushort)pbVar6[param_2_00] * (sVar1 * param_3 & 0xffU) + (ushort)*pbVar6;
      local_50._0_1_ = (byte)uVar2;
      uVar2 = uVar2 >> 8;
      iVar5 = iVar5 + 1;
      *pbVar6 = (byte)local_50;
    } while (iVar5 < 0x43);
    local_54 = local_54 + 1;
    pbVar6 = local_4c;
    pbVar7 = local_4c;
    for (iVar5 = 0x42; pbVar6 = pbVar6 + 1, iVar5 != 0; iVar5 = iVar5 + -1) {
      *pbVar7 = *pbVar6;
      pbVar7 = pbVar7 + 1;
    }
    local_4c[0x42] = 0;
  } while (local_54 < 0x40);
  iVar5 = 0;
  uVar2 = 0;
  do {
    pbVar6 = local_4c + iVar5;
    uVar4 = ((ushort)*pbVar6 - (ushort)pbVar6[param_2_00]) - uVar2;
    uVar2 = ~((uVar4 >> 8) - 1) & 0xff;
    iVar5 = iVar5 + 1;
    pbVar6[(int)param_1 - (int)local_4c] = (byte)uVar4;
  } while (iVar5 < 0x41);
  if (uVar2 != 0) {
    _memcpy(param_1,local_4c,0x41);
  }
  FUN_007e2241();
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007fbfeb(undefined4 *param_1,int param_2)

{
  *param_1 = 0;
  if ((((param_2 == 0x31) || (param_2 == 0x33)) || (param_2 == 0x34)) || (param_2 == 0x35)) {
    FUN_004fc968(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007fc045(undefined4 *param_1,int param_2)

{
  *param_1 = 0;
  if ((((param_2 == 0x31) || (param_2 == 0x33)) || (param_2 == 0x34)) || (param_2 == 0x35)) {
    FUN_004fc968(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007fc09f(undefined4 *param_1,int param_2)

{
  *param_1 = 0;
  if ((((param_2 == 0x31) || (param_2 == 0x33)) || (param_2 == 0x34)) || (param_2 == 0x35)) {
    FUN_004fc968(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007fc0f9(undefined4 *param_1,int param_2)

{
  *param_1 = 0;
  if (((param_2 == 0x31) || (param_2 == 0x33)) || (param_2 == 0x34)) {
    FUN_004fc968(param_1);
  }
  return param_1;
}



char FUN_007fc149(undefined4 param_1,undefined4 param_2,int param_3)

{
  char cVar1;
  undefined4 uVar2;
  
  if (param_3 == 0x31) {
    cVar1 = FUN_005088ed();
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0xdda60b18;
  }
  else if (param_3 == 0x33) {
    cVar1 = FUN_00508da8();
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0xc9f07464;
  }
  else if (param_3 == 0x34) {
    cVar1 = FUN_00509263();
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0x98cc4ee8;
  }
  else if (param_3 == 0x35) {
    cVar1 = FUN_0050971e();
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0xbc9f0cde;
  }
  else if (param_3 == 0x50) {
    cVar1 = FUN_00509bd9();
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0xb5c6c59;
  }
  else {
    uVar2 = 0x3aa04f45;
  }
  FUN_00b940e0(uVar2);
  return '\0';
}



char FUN_007fc1f7(undefined4 param_1,undefined4 param_2,int param_3)

{
  char cVar1;
  undefined4 uVar2;
  
  if (param_3 == 0x31) {
    cVar1 = FUN_0050a55d();
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0xb469252b;
  }
  else if (param_3 == 0x33) {
    cVar1 = FUN_0050aa18();
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0x4aab1002;
  }
  else if (param_3 == 0x34) {
    cVar1 = FUN_0050aed3();
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0x1cbc598d;
  }
  else if (param_3 == 0x35) {
    cVar1 = FUN_0050b38e();
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0x614e5f29;
  }
  else if (param_3 == 0x50) {
    cVar1 = FUN_0050b849();
    if (cVar1 != '\0') {
      return cVar1;
    }
    uVar2 = 0xdafb50e5;
  }
  else {
    uVar2 = 0x2d04d12d;
  }
  FUN_00b940e0(uVar2);
  return '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007fc4a8(undefined4 *param_1,int param_2)

{
  *param_1 = 0;
  if ((((param_2 == 0x31) || (param_2 == 0x33)) || (param_2 == 0x34)) || (param_2 == 0x35)) {
    FUN_004fc968(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007fc502(undefined4 *param_1,int param_2)

{
  *param_1 = 0;
  if (((param_2 == 0x31) || (param_2 == 0x33)) || (param_2 == 0x34)) {
    FUN_004fc968(param_1);
  }
  return param_1;
}



int * FUN_007fc552(undefined4 *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  int **ppiVar3;
  int iVar4;
  ushort *unaff_EBX;
  undefined4 *puVar5;
  int *local_44;
  int *local_40;
  undefined4 local_3c;
  undefined4 local_38;
  ushort local_20 [2];
  undefined4 local_1c [6];
  
  FUN_007fc80c(unaff_EBX);
  local_38 = param_1[6];
  local_3c = *param_1;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*unaff_EBX < *(ushort *)(local_40 + 3))) {
    puVar2 = (undefined4 *)FUN_00b61a8a();
    local_20[0] = *unaff_EBX;
    puVar5 = local_1c;
    for (iVar4 = 5; iVar4 != 0; iVar4 = iVar4 + -1) {
      *puVar5 = *puVar2;
      puVar2 = puVar2 + 1;
      puVar5 = puVar5 + 1;
    }
    ppiVar3 = (int **)FUN_007fc6a2(&local_3c,local_20,local_44,local_40);
    local_44 = *ppiVar3;
    local_40 = ppiVar3[1];
  }
  if (local_44 == (int *)0x0) {
    FUN_00a3fb10();
    iVar4 = 0;
  }
  else {
    iVar4 = *local_44;
  }
  if (local_40 == *(int **)(iVar4 + 0x18)) {
    FUN_00a3fb10();
  }
  return local_40 + 4;
}



int FUN_007fc606(ushort *param_1)

{
  char cVar1;
  int **ppiVar2;
  int iVar3;
  undefined4 *unaff_EBX;
  int *piVar4;
  undefined4 local_18;
  undefined4 local_14;
  int *local_10;
  int *local_c;
  
  FUN_007fc9aa(param_1);
  local_14 = unaff_EBX[6];
  local_18 = *unaff_EBX;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (piVar4 = local_c, *param_1 < *(ushort *)(local_c + 3))) {
    ppiVar2 = (int **)FUN_007fc840(&local_10,&local_18,local_10,local_c);
    local_10 = *ppiVar2;
    piVar4 = ppiVar2[1];
  }
  if (local_10 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *local_10;
  }
  if (piVar4 == *(int **)(iVar3 + 0x18)) {
    FUN_00a3fb10();
  }
  return (int)piVar4 + 0xe;
}



undefined4 * FUN_007fc6a2(undefined4 *param_1,ushort *param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  bool bVar4;
  undefined4 uVar5;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 == '\0') {
        bVar4 = *(ushort *)(param_4 + 0xc) < *param_2;
        if (*param_2 < *(ushort *)(param_4 + 0xc)) {
          iVar2 = FUN_006bb23c();
          if (*(ushort *)(*(int *)(iVar2 + 4) + 0xc) < *param_2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x25) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_007fc6c4;
          }
          bVar4 = *(ushort *)(param_4 + 0xc) < *param_2;
        }
        if (bVar4) {
          FUN_006bae09();
          cVar1 = FUN_006b8eca();
          if ((cVar1 != '\0') || (*param_2 < *(ushort *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x25) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_007fc6c4;
          }
        }
LAB_007fc7ea:
        puVar3 = (undefined4 *)FUN_007fc9de(in_EAX,param_2);
        *param_1 = *puVar3;
        param_1[1] = puVar3[1];
        return param_1;
      }
      if (*param_2 <= *(ushort *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_007fc7ea;
      uVar5 = 0;
      goto LAB_007fc6c4;
    }
    if (*(ushort *)(param_4 + 0xc) <= *param_2) goto LAB_007fc7ea;
  }
  uVar5 = 1;
LAB_007fc6c4:
  FUN_007fcaa3(param_1,uVar5,param_2);
  return param_1;
}



void FUN_007fc80c(ushort *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x25) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if (*(ushort *)(puVar2 + 3) < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x25) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



undefined4 * FUN_007fc840(undefined4 *param_1,ushort *param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  undefined4 *puVar3;
  bool bVar4;
  undefined4 uVar5;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar1 = FUN_006b8eca();
    if (cVar1 == '\0') {
      cVar1 = FUN_006b8eca();
      if (cVar1 == '\0') {
        bVar4 = *(ushort *)(param_4 + 0xc) < *param_2;
        if (*param_2 < *(ushort *)(param_4 + 0xc)) {
          iVar2 = FUN_0076b32a();
          if (*(ushort *)(*(int *)(iVar2 + 4) + 0xc) < *param_2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x11) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_007fc862;
          }
          bVar4 = *(ushort *)(param_4 + 0xc) < *param_2;
        }
        if (bVar4) {
          FUN_00794e17();
          cVar1 = FUN_006b8eca();
          if ((cVar1 != '\0') || (*param_2 < *(ushort *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x11) == '\0') {
              uVar5 = 1;
            }
            else {
              uVar5 = 0;
            }
            goto LAB_007fc862;
          }
        }
LAB_007fc988:
        puVar3 = (undefined4 *)FUN_007fcbf0(in_EAX,param_2);
        *param_1 = *puVar3;
        param_1[1] = puVar3[1];
        return param_1;
      }
      if (*param_2 <= *(ushort *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_007fc988;
      uVar5 = 0;
      goto LAB_007fc862;
    }
    if (*(ushort *)(param_4 + 0xc) <= *param_2) goto LAB_007fc988;
  }
  uVar5 = 1;
LAB_007fc862:
  FUN_00464c60(param_1,uVar5,param_2);
  return param_1;
}



void FUN_007fc9aa(ushort *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x11) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if (*(ushort *)(puVar2 + 3) < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x11) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



void FUN_007fc9de(undefined4 *param_1,ushort *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x25) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < *(ushort *)(local_c + 3));
      if (*param_2 < *(ushort *)(local_c + 3)) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x25) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007fca53;
    }
    FUN_006bb23c();
  }
  uVar3 = local_8;
  if (*param_2 <= *(ushort *)(local_10 + 3)) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007fca53:
  puVar2 = (undefined4 *)FUN_007fcaa3(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007fcaa3(int **param_1_00,undefined4 *param_1,char param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7fcaaf;
  if (0xaaaaaa8 < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_007fccb5(unaff_ESI[6],param_1_00,unaff_ESI[6],param_3);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_007fcbc8;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_007fcbc8;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_007fcbc8:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 9) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x24) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 9) == '\0') {
LAB_007fcb84:
        *(undefined *)(piVar1 + 9) = 1;
        *(undefined *)(piVar7 + 9) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x24) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_005d43b9(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x24) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x24) = 0;
        FUN_006bad68(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 9) == '\0') goto LAB_007fcb84;
    if (piVar8 == (int *)*piVar1) {
      FUN_006bad68(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x24) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x24) = 0;
    FUN_005d43b9(unaff_ESI);
  } while( true );
}



void FUN_007fcbf0(undefined4 *param_1,ushort *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x11) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < *(ushort *)(local_c + 3));
      if (*param_2 < *(ushort *)(local_c + 3)) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x11) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007fcc65;
    }
    FUN_0076b32a();
  }
  uVar3 = local_8;
  if (*param_2 <= *(ushort *)(local_10 + 3)) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007fcc65:
  puVar2 = (undefined4 *)FUN_00464c60(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



void FUN_007fccb5(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  
  puVar1 = (undefined4 *)operator_new(0x28);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar3 = puVar1 + 3;
    for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar3 = *param_4;
      param_4 = param_4 + 1;
      puVar3 = puVar3 + 1;
    }
    *(undefined *)(puVar1 + 9) = 0;
    *(undefined *)((int)puVar1 + 0x25) = 0;
  }
  return;
}



undefined4 * __thiscall FUN_007fccf0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W71DA37B9::W69A87E0F::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007fcd0d(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W560DA063::WAE03E71B::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007fd2bc(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007fcd74(undefined4 *param_1,undefined param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W560DA063::WC91E8F58::vftable;
    *(undefined *)(puVar2 + 1) = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007fd319(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007fcde1(undefined4 *param_1,undefined param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0xc);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *(undefined *)(puVar2 + 1) = param_2;
    *puVar2 = W560DA063::W66B219C2::vftable;
    puVar2[2] = param_3;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007fd376(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007fce54(undefined4 *param_1,undefined param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W560DA063::WD0A55EE9::vftable;
    *(undefined *)(puVar2 + 1) = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_007fd3d3(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 * __thiscall FUN_007fcec1(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W560DA063::W0D166F9A::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_007fceeb(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7fcf03;
  FUN_007fcf13();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007fcf0a;
  FUN_00a3f6a1();
}



void __fastcall FUN_007fcee3(undefined4 param_1)

{
  FUN_00b72d90(param_1);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007fceeb(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7fcf03;
  FUN_007fcf13();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007fcf0a;
  FUN_00a3f6a1();
}



void FUN_007fcf13(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_007fcf47(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_007fcf47(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_007fd28a(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00620942();
    FUN_007fcffd();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007fd0e8)
// WARNING: Removing unreachable block (ram,0x007fd0f8)
// WARNING: Removing unreachable block (ram,0x007fd101)
// WARNING: Removing unreachable block (ram,0x007fd104)
// WARNING: Removing unreachable block (ram,0x007fd0f4)
// WARNING: Removing unreachable block (ram,0x007fd111)
// WARNING: Removing unreachable block (ram,0x007fd121)
// WARNING: Removing unreachable block (ram,0x007fd12c)
// WARNING: Removing unreachable block (ram,0x007fd128)
// WARNING: Removing unreachable block (ram,0x007fd11c)
// WARNING: Removing unreachable block (ram,0x007fd12f)

void FUN_007fcffd(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7fd009;
  if (*(char *)((int)param_4 + 0x21) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00620942();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x21) == '\0') {
    if (*(char *)(param_4[2] + 0x21) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x21) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x21) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x21) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x21) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x21) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 8) != '\x01') {
LAB_007fd260:
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_007fd214:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 8) != '\x01'))
  goto LAB_007fd25c;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 8) == '\0') {
      *(undefined *)(ppiVar4 + 8) = 1;
      *(undefined *)(ppiVar3 + 8) = 0;
      FUN_007a1dd4(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x21) == '\0') {
      if ((*(char *)(*ppiVar4 + 8) != '\x01') || (*(char *)(ppiVar4[2] + 8) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 8) == '\x01') {
          *(undefined *)(*ppiVar4 + 8) = 1;
          *(undefined *)(ppiVar4 + 8) = 0;
          FUN_00437a73(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 8) = *(undefined *)(ppiVar3 + 8);
        *(undefined *)(ppiVar3 + 8) = 1;
        *(undefined *)(ppiVar4[2] + 8) = 1;
        FUN_007a1dd4(param_1);
        goto LAB_007fd25c;
      }
LAB_007fd20b:
      *(undefined *)(ppiVar4 + 8) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 8) == '\0') {
      *(undefined *)(ppiVar4 + 8) = 1;
      *(undefined *)(ppiVar3 + 8) = 0;
      FUN_00437a73(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x21) == '\0') {
      if ((*(char *)(ppiVar4[2] + 8) == '\x01') && (*(char *)(*ppiVar4 + 8) == '\x01'))
      goto LAB_007fd20b;
      if (*(char *)(*ppiVar4 + 8) == '\x01') {
        *(undefined *)(ppiVar4[2] + 8) = 1;
        *(undefined *)(ppiVar4 + 8) = 0;
        FUN_007a1dd4(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 8) = *(undefined *)(ppiVar3 + 8);
      *(undefined *)(ppiVar3 + 8) = 1;
      *(undefined *)(*ppiVar4 + 8) = 1;
      FUN_00437a73(param_1);
LAB_007fd25c:
      *(undefined *)(ppiVar5 + 8) = 1;
      goto LAB_007fd260;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_007fd214;
}



void FUN_007fd28a(int param_1)

{
  if (*(char *)(param_1 + 0x21) == '\0') {
    FUN_007fd28a(*(undefined4 *)(param_1 + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007fd2bc(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W560DA063::WAE03E71B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007fd302(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007fd319(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W560DA063::WC91E8F58>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007fd35f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007fd376(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W560DA063::W66B219C2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007fd3bc(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007fd3d3(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W560DA063::WD0A55EE9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_007fd419(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_007fd430(undefined4 param_1_00,byte param_1)

{
  FUN_007fd44d(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007fd44d(int param_1)

{
  if (*(int *)(param_1 + 0x10) != 0) {
    FUN_0040127a();
  }
  FUN_00b6639e();
  return;
}



void Catch_All_007fd531(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_007fd5b4(undefined4 param_1_00,byte param_1)

{
  FUN_00ba23ee();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_007fd616(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_007fd62d(undefined4 param_1_00,byte param_1)

{
  FUN_00ba1575();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007fd649(undefined4 *param_1_00,byte param_1)

{
  if (*(char *)(param_1_00 + 6) != '\0') {
    *(undefined *)(param_1_00 + 6) = 0;
  }
  if (*(char *)(param_1_00 + 4) != '\0') {
    *(undefined *)(param_1_00 + 4) = 0;
  }
  if (*(char *)(param_1_00 + 2) != '\0') {
    *(undefined *)(param_1_00 + 2) = 0;
  }
  *param_1_00 = W71DA37B9::WBE91BE05::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_007fd733(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7fd74b;
  FUN_007fd763();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007fd752;
  FUN_00a3f6a1();
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int FUN_007fd685(int param_1,uint *param_2)

{
  char cVar1;
  int iVar2;
  undefined4 local_1c [2];
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x7fd691;
  FUN_00697f81(param_2);
  local_1c[0] = *(undefined4 *)(param_1 + 0x18);
  cVar1 = FUN_006b8eca();
  if ((cVar1 == '\0') && (*(uint *)(local_14 + 0xc) <= *param_2)) {
    iVar2 = FUN_006badde();
    return iVar2 + 4;
  }
  local_1c[0] = 0;
  local_8 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_1c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007fd733(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7fd74b;
  FUN_007fd763();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007fd752;
  FUN_00a3f6a1();
}



void FUN_007fd75b(void)

{
  FUN_005e72d0();
  return;
}



void FUN_007fd763(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_007fd797(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



void FUN_007fd797(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *in_EAX;
  
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') && (cVar1 = FUN_006b8eca(), cVar1 != '\0')) {
    FUN_007fdb43(*(undefined4 *)(in_EAX[6] + 4));
    *(undefined4 *)(in_EAX[6] + 4) = in_EAX[6];
    in_EAX[7] = 0;
    *(undefined4 *)in_EAX[6] = in_EAX[6];
    *(undefined4 *)(in_EAX[6] + 8) = in_EAX[6];
    param_1[1] = *(undefined4 *)in_EAX[6];
    *param_1 = *in_EAX;
    return;
  }
  while (cVar1 = FUN_006b8eca(), cVar1 == '\0') {
    FUN_00452ecb();
    FUN_007fd8ae();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_007fd84d(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x19) == '\0') {
    iVar1 = *piVar2;
    if (*(char *)(*piVar2 + 0x19) == '\0') {
      do {
        iVar3 = iVar1;
        iVar1 = *(int *)(iVar3 + 8);
      } while (*(char *)(iVar1 + 0x19) == '\0');
      unaff_ESI[1] = iVar3;
      return;
    }
    while ((piVar2 = (int *)piVar2[1], *(char *)((int)piVar2 + 0x19) == '\0' &&
           (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
    }
    if (*(char *)(unaff_ESI[1] + 0x19) == '\0') {
      unaff_ESI[1] = (int)piVar2;
      return;
    }
  }
  else {
    iVar1 = piVar2[2];
    unaff_ESI[1] = iVar1;
    if (*(char *)(iVar1 + 0x19) == '\0') {
      return;
    }
  }
  FUN_00a3fb10();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Removing unreachable block (ram,0x007fd999)
// WARNING: Removing unreachable block (ram,0x007fd9a9)
// WARNING: Removing unreachable block (ram,0x007fd9b2)
// WARNING: Removing unreachable block (ram,0x007fd9b5)
// WARNING: Removing unreachable block (ram,0x007fd9a5)
// WARNING: Removing unreachable block (ram,0x007fd9c2)
// WARNING: Removing unreachable block (ram,0x007fd9d2)
// WARNING: Removing unreachable block (ram,0x007fd9dd)
// WARNING: Removing unreachable block (ram,0x007fd9d9)
// WARNING: Removing unreachable block (ram,0x007fd9cd)
// WARNING: Removing unreachable block (ram,0x007fd9e0)

void FUN_007fd8ae(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined **local_54 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x7fd8ba;
  if (*(char *)((int)param_4 + 0x19) != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_2c,"invalid map/set<T> iterator");
    local_8 = 0;
    FUN_00417ca0(local_2c);
    local_54[0] = std::out_of_range::vftable;
    __CxxThrowException_8(local_54,&DAT_03115668);
  }
  FUN_00452ecb();
  ppiVar5 = (int **)*param_4;
  if (*(char *)((int)ppiVar5 + 0x19) == '\0') {
    if (*(char *)(param_4[2] + 0x19) == '\0') {
      ppiVar5 = (int **)param_4[2];
    }
  }
  else {
    ppiVar5 = (int **)param_4[2];
  }
  ppiVar4 = (int **)param_4[1];
  if (*(char *)((int)ppiVar5 + 0x19) == '\0') {
    ppiVar5[1] = (int *)ppiVar4;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 4) == param_4) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar5;
  }
  else if (*ppiVar4 == param_4) {
    *ppiVar4 = (int *)ppiVar5;
  }
  else {
    ppiVar4[2] = (int *)ppiVar5;
  }
  if (**(int ***)(param_1 + 0x18) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x19) == '\0') {
      ppiVar1 = (int **)*ppiVar5;
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x19) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)*ppiVar2;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar3;
  }
  if (*(int **)(*(int *)(param_1 + 0x18) + 8) == param_4) {
    ppiVar3 = ppiVar4;
    if (*(char *)((int)ppiVar5 + 0x19) == '\0') {
      ppiVar1 = (int **)ppiVar5[2];
      ppiVar3 = ppiVar5;
      while (ppiVar2 = ppiVar1, *(char *)((int)ppiVar2 + 0x19) == '\0') {
        ppiVar3 = ppiVar2;
        ppiVar1 = (int **)ppiVar2[2];
      }
    }
    *(int ***)(*(int *)(param_1 + 0x18) + 8) = ppiVar3;
  }
  if (*(char *)(param_4 + 6) != '\x01') {
LAB_007fdb11:
    FUN_005e72d0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
LAB_007fdac5:
  ppiVar3 = ppiVar4;
  if ((ppiVar5 == *(int ***)(*(int *)(param_1 + 0x18) + 4)) || (*(char *)(ppiVar5 + 6) != '\x01'))
  goto LAB_007fdb0d;
  ppiVar4 = (int **)*ppiVar3;
  if (ppiVar5 == ppiVar4) {
    ppiVar4 = (int **)ppiVar3[2];
    if (*(char *)(ppiVar4 + 6) == '\0') {
      *(undefined *)(ppiVar4 + 6) = 1;
      *(undefined *)(ppiVar3 + 6) = 0;
      FUN_0042bfd4(param_1);
      ppiVar4 = (int **)ppiVar3[2];
    }
    if (*(char *)((int)ppiVar4 + 0x19) == '\0') {
      if ((*(char *)(*ppiVar4 + 6) != '\x01') || (*(char *)(ppiVar4[2] + 6) != '\x01')) {
        if (*(char *)(ppiVar4[2] + 6) == '\x01') {
          *(undefined *)(*ppiVar4 + 6) = 1;
          *(undefined *)(ppiVar4 + 6) = 0;
          FUN_0042c014(param_1);
          ppiVar4 = (int **)ppiVar3[2];
        }
        *(undefined *)(ppiVar4 + 6) = *(undefined *)(ppiVar3 + 6);
        *(undefined *)(ppiVar3 + 6) = 1;
        *(undefined *)(ppiVar4[2] + 6) = 1;
        FUN_0042bfd4(param_1);
        goto LAB_007fdb0d;
      }
LAB_007fdabc:
      *(undefined *)(ppiVar4 + 6) = 0;
    }
  }
  else {
    if (*(char *)(ppiVar4 + 6) == '\0') {
      *(undefined *)(ppiVar4 + 6) = 1;
      *(undefined *)(ppiVar3 + 6) = 0;
      FUN_0042c014(param_1);
      ppiVar4 = (int **)*ppiVar3;
    }
    if (*(char *)((int)ppiVar4 + 0x19) == '\0') {
      if ((*(char *)(ppiVar4[2] + 6) == '\x01') && (*(char *)(*ppiVar4 + 6) == '\x01'))
      goto LAB_007fdabc;
      if (*(char *)(*ppiVar4 + 6) == '\x01') {
        *(undefined *)(ppiVar4[2] + 6) = 1;
        *(undefined *)(ppiVar4 + 6) = 0;
        FUN_0042bfd4(param_1);
        ppiVar4 = (int **)*ppiVar3;
      }
      *(undefined *)(ppiVar4 + 6) = *(undefined *)(ppiVar3 + 6);
      *(undefined *)(ppiVar3 + 6) = 1;
      *(undefined *)(*ppiVar4 + 6) = 1;
      FUN_0042c014(param_1);
LAB_007fdb0d:
      *(undefined *)(ppiVar5 + 6) = 1;
      goto LAB_007fdb11;
    }
  }
  ppiVar4 = (int **)ppiVar3[1];
  ppiVar5 = ppiVar3;
  goto LAB_007fdac5;
}



void FUN_007fdb43(int param_1)

{
  if (*(char *)(param_1 + 0x19) == '\0') {
    FUN_007fdb43(*(undefined4 *)(param_1 + 8));
    FUN_005e72d0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007fdb7d(undefined4 *param_1_00,byte param_1)

{
  FUN_007fd733(param_1_00 + 4);
  if (param_1_00[3] != 0) {
    FUN_0040127a();
  }
  param_1_00[1] = W71DA37B9::W57F7F82D::vftable;
  *param_1_00 = W560DA063::W652C2340::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_007fdbd2(void)

{
  FUN_007fdb7d();
  return;
}



undefined4 * __thiscall FUN_007fdbda(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W71DA37B9::W57F7F82D::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007fdbf7(undefined4 *param_1)

{
  *param_1 = W71DA37B9::W57F7F82D::vftable;
  return;
}



void FUN_007fdbfe(void)

{
  uint *unaff_EDI;
  
  *unaff_EDI = *unaff_EDI & 0xffffff00;
  *(undefined *)((int)unaff_EDI + 1) = 0;
  *(undefined *)((int)unaff_EDI + 2) = 0;
  *(undefined *)((int)unaff_EDI + 3) = 0;
  unaff_EDI[1] = 0;
  unaff_EDI[2] = 0;
  *(undefined *)(unaff_EDI + 3) = 0;
  *(undefined *)((int)unaff_EDI + 0xd) = 0;
  *(undefined *)((int)unaff_EDI + 0xe) = 0;
  *(undefined *)((int)unaff_EDI + 0xf) = 0;
  unaff_EDI[4] = 0;
  unaff_EDI[5] = 0xc1;
  FUN_00b92500();
  unaff_EDI[0xf] = 0xffffffff;
  unaff_EDI[9] = 0;
  unaff_EDI[10] = 0;
  unaff_EDI[0xb] = 0;
  unaff_EDI[0xc] = 0;
  unaff_EDI[0xd] = 0;
  unaff_EDI[0xe] = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007fdc75(undefined4 *param_1_00,byte param_1)

{
  if ((undefined4 *)param_1_00[3] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1_00[3])(1);
  }
  if (param_1_00[2] != 0) {
    FUN_0040127a();
  }
  *param_1_00 = W560DA063::W652C2340::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_007fdcc7(undefined4 *param_1)

{
  *param_1 = W560DA063::WC00A6620::vftable;
  return;
}



undefined4 * __thiscall FUN_007fdcce(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W560DA063::WC00A6620::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_007fdceb(undefined4 *param_1_00,byte param_1)

{
  FUN_007fde36(param_1_00 + 0x12);
  FUN_007fde36(param_1_00 + 10);
  FUN_00492aa0(param_1_00 + 2);
  *param_1_00 = W560DA063::WC00A6620::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void thunk_FUN_007fde36(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  uStack_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7fde4e;
  FUN_007fe13a();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007fde55;
  FUN_00a3f6a1();
}



int FUN_007fdd48(int *param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *unaff_EBX;
  int local_18;
  uint local_14;
  undefined local_10 [12];
  
  iVar3 = FUN_00452f18();
  if (unaff_EBX == (int *)0x0) {
    FUN_00a3fb10();
  }
  iVar1 = *unaff_EBX;
  local_14 = unaff_EBX[6];
  local_18 = iVar1;
  cVar2 = FUN_006b8eca();
  if ((cVar2 != '\0') || (*param_1 < *(int *)(iVar3 + 0xc))) {
    local_18 = *param_1;
    local_14 = local_14 & 0xffffff00;
    FUN_007fdf2a(local_10,&local_18,iVar1,iVar3);
  }
  iVar3 = FUN_006badde();
  return iVar3 + 4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_007fdde2(int *param_1)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  
  ppiVar2 = (int **)FUN_00418daa(1,0);
  if (ppiVar2 == (int **)0x0) {
    ppiVar2 = (int **)0x0;
  }
  else {
    *ppiVar2 = param_1;
  }
  *param_1 = (int)ppiVar2;
  iVar3 = FUN_007c20a5();
  piVar1 = param_1 + 6;
  *piVar1 = iVar3;
  *(undefined *)(iVar3 + 0x11) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  param_1[7] = 0;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Unable to track spacebase fully for stack

void FUN_007fde36(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 auStack_24 [7];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0;
  puVar1 = auStack_24;
  auStack_24[0] = 0x7fde4e;
  FUN_007fe13a();
  puVar1[-1] = *param_1;
                    // WARNING: Subroutine does not return
  puVar1[-2] = &UNK_007fde55;
  FUN_00a3f6a1();
}



void FUN_007fde5e(int *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  int *unaff_EBX;
  int *unaff_EDI;
  bool bVar4;
  undefined4 *local_14;
  int local_10;
  undefined4 *local_c;
  
  local_14 = (undefined4 *)unaff_EBX[6];
  bVar4 = true;
  if (*(char *)((int)(undefined4 *)local_14[1] + 0x11) == '\0') {
    puVar2 = (undefined4 *)local_14[1];
    do {
      local_14 = puVar2;
      bVar4 = *param_1 < (int)local_14[3];
      if (bVar4) {
        puVar2 = (undefined4 *)*local_14;
      }
      else {
        puVar2 = (undefined4 *)local_14[2];
      }
    } while (*(char *)((int)puVar2 + 0x11) == '\0');
  }
  local_10 = *unaff_EBX;
  local_c = local_14;
  if (bVar4 != false) {
    puVar2 = *(undefined4 **)unaff_EBX[6];
    if (local_10 == 0) {
      FUN_00a3fb10();
    }
    if (local_14 == puVar2) {
      bVar4 = true;
      goto LAB_007fded6;
    }
    FUN_0076b32a();
  }
  if (*param_1 <= (int)local_c[3]) {
    *unaff_EDI = local_10;
    unaff_EDI[1] = (int)local_c;
    *(undefined *)(unaff_EDI + 2) = 0;
    return;
  }
LAB_007fded6:
  piVar3 = (int *)FUN_00464c60(&local_10,bVar4,param_1);
  iVar1 = piVar3[1];
  *unaff_EDI = *piVar3;
  unaff_EDI[1] = iVar1;
  *(undefined *)(unaff_EDI + 2) = 1;
  return;
}



undefined4 * FUN_007fdf2a(undefined4 *param_1,int *param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int in_EAX;
  int iVar4;
  undefined4 *puVar5;
  bool bVar6;
  undefined4 uVar7;
  
  if (*(int *)(in_EAX + 0x1c) == 0) {
    param_4 = *(int *)(in_EAX + 0x18);
  }
  else {
    cVar3 = FUN_006b8eca();
    if (cVar3 == '\0') {
      cVar3 = FUN_006b8eca();
      if (cVar3 != '\0') {
        param_4 = *(int *)(*(int *)(in_EAX + 0x18) + 8);
        if (*param_2 <= *(int *)(param_4 + 0xc)) goto LAB_007fe05d;
        uVar7 = 0;
        goto LAB_007fdf4c;
      }
      iVar4 = *param_2;
      iVar1 = *(int *)(param_4 + 0xc);
      bVar6 = SBORROW4(iVar1,iVar4);
      iVar2 = iVar1 - iVar4;
      if (iVar4 < iVar1) {
        iVar4 = FUN_005d021f();
        iVar2 = *param_2;
        if (iVar2 <= *(int *)(*(int *)(iVar4 + 4) + 0xc)) {
          bVar6 = SBORROW4(*(int *)(param_4 + 0xc),iVar2);
          iVar2 = *(int *)(param_4 + 0xc) - iVar2;
          goto LAB_007fe010;
        }
        cVar3 = *(char *)(*(int *)(param_4 + 8) + 0x15);
      }
      else {
LAB_007fe010:
        if (bVar6 == iVar2 < 0) {
LAB_007fe05d:
          puVar5 = (undefined4 *)FUN_007ce0ea(in_EAX,param_2);
          *param_1 = *puVar5;
          param_1[1] = puVar5[1];
          return param_1;
        }
        FUN_00448b61();
        cVar3 = FUN_006b8eca();
        if ((cVar3 == '\0') && (*(int *)(param_4 + 0xc) <= *param_2)) goto LAB_007fe05d;
        cVar3 = *(char *)(*(int *)(param_4 + 8) + 0x15);
      }
      if (cVar3 == '\0') {
        uVar7 = 1;
      }
      else {
        uVar7 = 0;
      }
      goto LAB_007fdf4c;
    }
    if (*(int *)(param_4 + 0xc) <= *param_2) goto LAB_007fe05d;
  }
  uVar7 = 1;
LAB_007fdf4c:
  FUN_004650b9(param_1,uVar7,param_4,param_2);
  return param_1;
}



void FUN_007fe07f(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int *in_EAX;
  int *unaff_EBX;
  
  iVar1 = *(int *)in_EAX[6];
  if ((param_1 == 0) || (param_1 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_2 == iVar1) {
    iVar1 = in_EAX[6];
    if ((param_3 == 0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_4 == iVar1) {
      FUN_005d43f9(*(undefined4 *)(in_EAX[6] + 4));
      *(int *)(in_EAX[6] + 4) = in_EAX[6];
      in_EAX[7] = 0;
      *(int *)in_EAX[6] = in_EAX[6];
      *(int *)(in_EAX[6] + 8) = in_EAX[6];
      unaff_EBX[1] = *(int *)in_EAX[6];
      *unaff_EBX = *in_EAX;
      return;
    }
  }
  while( true ) {
    if ((param_1 == 0) || (param_1 != param_3)) {
      FUN_00a3fb10();
    }
    if (param_2 == param_4) break;
    FUN_00794e17();
    FUN_0049cccf();
  }
  *unaff_EBX = *in_EAX;
  unaff_EBX[1] = param_2;
  return;
}



void FUN_007fe13a(void)

{
  undefined4 *unaff_ESI;
  
  FUN_007fe07f(*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



int * FUN_007fe170(int *param_1)

{
  char cVar1;
  int **ppiVar2;
  int iVar3;
  uint *unaff_EBX;
  int local_34;
  undefined4 local_30;
  undefined4 uStack_2c;
  uint uStack_28;
  undefined4 uStack_24;
  undefined4 local_20;
  undefined4 local_1c;
  uint local_18;
  uint local_14;
  int *local_10;
  int *local_c;
  
  FUN_007fe37e(param_1);
  local_14 = unaff_EBX[6];
  local_18 = *unaff_EBX;
  cVar1 = FUN_006b8eca();
  if ((cVar1 != '\0') || (*param_1 < local_c[3])) {
    local_20 = 0;
    local_1c = 0;
    local_34 = *param_1;
    local_18 = local_18 & 0xffff0000;
    local_14 = 0xffff;
    local_30 = 0;
    uStack_2c = 0;
    uStack_28 = local_18;
    uStack_24 = 0xffff;
    ppiVar2 = (int **)FUN_007fe21f(&local_18,&local_34,local_10,local_c);
    local_10 = *ppiVar2;
    local_c = ppiVar2[1];
  }
  if (local_10 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *local_10;
  }
  if (local_c == *(int **)(iVar3 + 0x18)) {
    FUN_00a3fb10();
  }
  return local_c + 4;
}



undefined4 * FUN_007fe21f(undefined4 *param_1,int *param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int in_EAX;
  int iVar4;
  undefined4 *puVar5;
  bool bVar6;
  undefined4 uVar7;
  
  if (*(int *)(in_EAX + 0x1c) != 0) {
    cVar3 = FUN_006b8eca();
    if (cVar3 == '\0') {
      cVar3 = FUN_006b8eca();
      if (cVar3 == '\0') {
        iVar4 = *param_2;
        iVar1 = *(int *)(param_4 + 0xc);
        bVar6 = SBORROW4(iVar1,iVar4);
        iVar2 = iVar1 - iVar4;
        if (iVar4 < iVar1) {
          iVar4 = FUN_00437bca();
          iVar2 = *param_2;
          if (*(int *)(*(int *)(iVar4 + 4) + 0xc) < iVar2) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x21) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_007fe241;
          }
          bVar6 = SBORROW4(*(int *)(param_4 + 0xc),iVar2);
          iVar2 = *(int *)(param_4 + 0xc) - iVar2;
        }
        if (bVar6 != iVar2 < 0) {
          FUN_00620942();
          cVar3 = FUN_006b8eca();
          if ((cVar3 != '\0') || (*param_2 < *(int *)(param_4 + 0xc))) {
            if (*(char *)(*(int *)(param_4 + 8) + 0x21) == '\0') {
              uVar7 = 1;
            }
            else {
              uVar7 = 0;
            }
            goto LAB_007fe241;
          }
        }
LAB_007fe35c:
        puVar5 = (undefined4 *)FUN_007fe3b0(in_EAX,param_2);
        *param_1 = *puVar5;
        param_1[1] = puVar5[1];
        return param_1;
      }
      if (*param_2 <= *(int *)(*(int *)(*(int *)(in_EAX + 0x18) + 8) + 0xc)) goto LAB_007fe35c;
      uVar7 = 0;
      goto LAB_007fe241;
    }
    if (*(int *)(param_4 + 0xc) <= *param_2) goto LAB_007fe35c;
  }
  uVar7 = 1;
LAB_007fe241:
  FUN_007fe471(param_1,uVar7,param_2);
  return param_1;
}



void FUN_007fe37e(int *param_1)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  
  puVar4 = (undefined4 *)unaff_ESI[6];
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x21) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((int)puVar2[3] < *param_1) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x21) == '\0');
  }
  uVar1 = *unaff_ESI;
  in_EAX[1] = puVar4;
  *in_EAX = uVar1;
  return;
}



void FUN_007fe3b0(undefined4 *param_1,int *param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 *unaff_EBX;
  undefined4 uVar3;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  undefined4 local_8;
  
  local_c = (undefined4 *)param_1[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_c[1] + 0x21) == '\0') {
    puVar2 = (undefined4 *)local_c[1];
    do {
      local_c = puVar2;
      local_8 = CONCAT31(local_8._1_3_,*param_2 < (int)local_c[3]);
      if (*param_2 < (int)local_c[3]) {
        puVar2 = (undefined4 *)*local_c;
      }
      else {
        puVar2 = (undefined4 *)local_c[2];
      }
    } while (*(char *)((int)puVar2 + 0x21) == '\0');
  }
  local_14 = *param_1;
  local_10 = local_c;
  if ((char)local_8 != '\0') {
    local_18 = *(undefined4 *)param_1[6];
    local_1c = local_14;
    cVar1 = FUN_006b8eca();
    if (cVar1 != '\0') {
      uVar3 = 1;
      goto LAB_007fe423;
    }
    FUN_00437bca();
  }
  uVar3 = local_8;
  if (*param_2 <= (int)local_10[3]) {
    *unaff_EBX = local_14;
    unaff_EBX[1] = local_10;
    *(undefined *)(unaff_EBX + 2) = 0;
    return;
  }
LAB_007fe423:
  puVar2 = (undefined4 *)FUN_007fe471(&local_1c,uVar3,param_2);
  uVar3 = puVar2[1];
  *unaff_EBX = *puVar2;
  unaff_EBX[1] = uVar3;
  *(undefined *)(unaff_EBX + 2) = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_007fe471(int **param_1_00,undefined4 *param_1,char param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x7fe47d;
  if (0xcccccca < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_007fe5e8(unaff_ESI[6],param_1_00,unaff_ESI[6],param_3);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_007fe596;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_007fe596;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_007fe596:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 8) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x20) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 8) == '\0') {
LAB_007fe552:
        *(undefined *)(piVar1 + 8) = 1;
        *(undefined *)(piVar7 + 8) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x20) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007a1dd4(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x20) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x20) = 0;
        FUN_00437a73(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 8) == '\0') goto LAB_007fe552;
    if (piVar8 == (int *)*piVar1) {
      FUN_00437a73(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x20) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x20) = 0;
    FUN_007a1dd4(unaff_ESI);
  } while( true );
}



void FUN_007fe5be(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x24);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 8) = 1;
  *(undefined *)((int)puVar1 + 0x21) = 0;
  return;
}



void FUN_007fe5e8(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  
  puVar1 = (undefined4 *)operator_new(0x24);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar3 = puVar1 + 3;
    for (iVar2 = 5; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar3 = *param_4;
      param_4 = param_4 + 1;
      puVar3 = puVar3 + 1;
    }
    *(undefined *)(puVar1 + 8) = 0;
    *(undefined *)((int)puVar1 + 0x21) = 0;
  }
  return;
}



undefined4 * __thiscall FUN_007fe623(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W560DA063::W7DE84671::vftable;
  FUN_00ba327a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_007fe645(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W1ADA4FAD::WC1A90711::vftable;
  FUN_00ba327a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_007fe6bc(undefined4 *param_1,undefined4 param_2)

{
  int *piVar1;
  
  FUN_00b72980(param_1);
  *param_1 = W48463D55::WA13E81C7::vftable;
  FUN_00444db7(param_1 + 0x10);
  param_1[0x10] =
       boost::signals2::
       signal<void___cdecl(void),class_boost::signals2::optional_last_value<void>,int,struct_std::less<int>,class_boost::function<void___cdecl(void)>,class_boost::function<void___cdecl(class_boost::signals2::connection_const&)>,class_boost::signals2::mutex>
       ::vftable;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 0x14);
  }
  param_1[0x14] = piVar1;
  param_1[0x17] = 0;
  param_1[0x18] = 0;
  param_1[0x19] = 0;
  *(undefined *)(param_1 + 0x1a) = 0;
  *(undefined *)((int)param_1 + 0x69) = 0;
  *(undefined *)((int)param_1 + 0x6a) = 0;
  param_1[0x1b] = param_2;
  param_1[0x1c] = 0;
  param_1[0x1d] = 0;
  FUN_00453ddc(param_1 + 0x1e);
  return param_1;
}



undefined4 __thiscall FUN_007fe743(undefined4 param_1,byte param_2)

{
  FUN_007fe75f();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __fastcall FUN_007fe75f(undefined4 *param_1)

{
  char local_1c;
  
  *param_1 = W48463D55::WA13E81C7::vftable;
  FUN_00b72ae0();
  FUN_0043d406(param_1 + 0x1c);
  FUN_007ff052();
  if (local_1c != '\0') {
    FUN_00401477();
  }
  FUN_007fe7c6();
  return;
}



undefined * Catch_All_007fe7b6(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 4;
  return &DAT_007fe7c3;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007fe7c6(void)

{
  int unaff_EBX;
  int unaff_EBP;
  
  FUN_0042bd98();
  FUN_00417fe6();
  *(undefined *)(unaff_EBP + -4) = 1;
  FUN_00795834(unaff_EBX + 0x50);
  *(undefined *)(unaff_EBP + -4) = 0;
  FUN_0044613e();
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00b72bf0();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007fe8b0(int param_1)

{
  if (*(int *)(param_1 + 0x28) != 0) {
    FUN_0040127a();
  }
  FUN_00401829(1,0);
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0040127a();
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_007fe8f6(void)

{
  int iVar1;
  
  iVar1 = FUN_0046752c();
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



void __fastcall FUN_007fea06(int *param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  char cVar4;
  int iVar5;
  undefined4 local_e4 [4];
  undefined *puStack_d4;
  int *piStack_d0;
  int *piStack_cc;
  int *piStack_c8;
  uint uStack_c4;
  undefined auStack_b4 [3];
  char local_b1;
  uint local_b0;
  int **local_ac;
  undefined uStack_a7;
  undefined local_a6;
  undefined local_a5;
  int *local_a4;
  int iStack_a0;
  int *local_9c;
  int local_98;
  int iStack_94;
  undefined auStack_90 [8];
  uint local_88;
  char local_80;
  char local_78;
  char cStack_70;
  int *local_64;
  code *local_60;
  undefined4 local_5c;
  int *local_58;
  undefined4 uStack_54;
  int *local_4c;
  code *local_48;
  undefined4 uStack_44;
  int *piStack_40;
  undefined4 uStack_3c;
  undefined local_38 [20];
  int local_24;
  undefined4 local_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5fbba;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_b4;
  uStack_c4 = DAT_0323f878 ^ (uint)&stack0xffffff40;
  ExceptionList = &local_14;
  piStack_c8 = param_1 + 0x1c;
  piStack_cc = (int *)0x7fea55;
  FUN_0043d406();
  *(undefined *)(param_1 + 0x1a) = 1;
  if (local_80 != '\0') {
    piStack_c8 = (int *)0x7fea69;
    FUN_00401477();
  }
  local_88 = (param_1[0x18] - param_1[0x17]) / 0x2c;
  local_b0 = 0;
  local_b1 = '\x01';
  while (uVar2 = local_b0, local_b0 < local_88) {
    piStack_c8 = (int *)0x10000;
    piStack_cc = (int *)0x7fea9f;
    FUN_00b743c0();
    local_c = 0;
    local_9c = (int *)0x0;
    local_98 = 0;
    piStack_c8 = (int *)0x0;
    local_20 = 7;
    piStack_cc = (int *)0x7feac9;
    FUN_0040180b();
    piStack_c8 = param_1 + 0x1c;
    local_c._0_1_ = 2;
    piStack_cc = (int *)0x7feade;
    FUN_0043d406();
    piStack_c8 = (int *)uVar2;
    local_c._0_1_ = 3;
    piStack_cc = (int *)0x7feaef;
    FUN_007fefc7();
    piStack_c8 = (int *)0x7feaf8;
    FUN_004fe47e();
    piStack_c8 = (int *)local_b0;
    piStack_cc = (int *)0x7feb04;
    iVar5 = FUN_007fefc7();
    piStack_c8 = (int *)0xffffffff;
    piStack_d0 = (int *)(iVar5 + 8);
    piStack_cc = (int *)0x0;
    puStack_d4 = (undefined *)0x7feb19;
    FID_conflict_assign();
    local_c = CONCAT31(local_c._1_3_,2);
    if (local_78 != '\0') {
      piStack_c8 = (int *)0x7feb31;
      FUN_00401477();
    }
    if (local_24 != 0) {
      piStack_c8 = (int *)local_38;
      piStack_d0 = (int *)0x7feb48;
      piStack_cc = param_1;
      FUN_007fe8f6();
    }
    piStack_c8 = (int *)0x7feb4f;
    cVar4 = FUN_00b72540();
    if (cVar4 == '\0') {
      local_60 = FUN_00b72540;
      local_ac = (int **)local_e4;
      local_e4[0] = 0;
      local_a5 = 0;
      local_5c = 0;
      local_48 = FUN_00b72540;
      uStack_44 = 0;
      uStack_3c = uStack_54;
      local_64 = param_1;
      local_58 = param_1;
      local_4c = param_1;
      piStack_40 = param_1;
      cVar4 = FUN_007f2630(&local_48);
      puVar3 = local_ac;
      if (cVar4 == '\0') {
        local_a6 = 0;
        if (local_ac + 2 != (int **)0x0) {
          puVar1 = local_ac + 3;
          local_ac[2] = (int *)local_48;
          *puVar1 = uStack_44;
          puVar3[4] = piStack_40;
          puVar3[5] = uStack_3c;
        }
        *puVar3 = &DAT_030645b1;
      }
      else {
        *local_ac = (int *)0x0;
      }
      cVar4 = (**(code **)(*local_9c + 4))(local_a4);
      local_b1 = '\x01';
      if (cVar4 == '\0') goto LAB_007febfe;
    }
    else {
LAB_007febfe:
      local_b1 = '\0';
    }
    piStack_c8 = (int *)0x7fec0a;
    cVar4 = FUN_00b72540();
    if (cVar4 != '\0') {
      piStack_c8 = (int *)0x0;
      piStack_cc = (int *)0x1;
      piStack_d0 = (int *)0x7fed4d;
      FUN_00401829();
      local_c = local_c & 0xffffff00;
      if (local_98 != 0) {
        piStack_c8 = (int *)0x7fed62;
        FUN_0040127a();
      }
      local_c = 0xffffffff;
      if (iStack_a0 != 0) {
        piStack_c8 = (int *)0x7fed77;
        FUN_0040127a();
      }
      break;
    }
    if (local_b1 != '\0') {
      piStack_c8 = (int *)0x0;
      piStack_cc = (int *)0x0;
      piStack_d0 = (int *)0x7fec29;
      local_b1 = (**(code **)(*local_a4 + 0x28))();
      if (local_b1 != '\0') {
        piStack_c8 = (int *)auStack_90;
        piStack_cc = (int *)0x7fec3f;
        FUN_00515ee0();
        local_ac = &piStack_cc;
        local_c = CONCAT31(local_c._1_3_,4);
        uStack_a7 = 0;
        piStack_cc = local_a4;
        piStack_d0 = &iStack_a0;
                    // WARNING: Subroutine does not return
        puStack_d4 = &UNK_007fec68;
        FUN_0043c023();
      }
    }
    iStack_94 = param_1[0x1b];
    piStack_c8 = (int *)local_38;
    piStack_cc = &iStack_94;
    piStack_d0 = (int *)0x7fecf2;
    FUN_007b7f92();
    piStack_c8 = (int *)0x0;
    piStack_cc = (int *)0x1;
    piStack_d0 = (int *)0x7fed02;
    FUN_00401829();
    local_c = local_c & 0xffffff00;
    if (local_98 != 0) {
      piStack_c8 = (int *)0x7fed17;
      FUN_0040127a();
    }
    local_c = 0xffffffff;
    if (iStack_a0 != 0) {
      piStack_c8 = (int *)0x7fed2c;
      FUN_0040127a();
    }
    local_b0 = local_b0 + 1;
    if (local_b1 == '\0') break;
  }
  piStack_c8 = param_1 + 0x1c;
  piStack_cc = (int *)0x7fed84;
  FUN_0043d406();
  local_c = 6;
  *(bool *)((int)param_1 + 0x69) = local_b1 == '\0';
  piStack_c8 = (int *)0x7feda2;
  FUN_0044953d();
  local_c = 0xffffffff;
  if (cStack_70 != '\0') {
    piStack_c8 = (int *)0x7fedba;
    FUN_00401477();
  }
  piStack_c8 = (int *)0x7fedc2;
  FUN_00444e30();
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined FUN_007fede6(int param_1,int *param_2,undefined4 param_3,undefined4 param_4)

{
  bool bVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 local_98;
  undefined4 local_94;
  undefined4 uStack_90;
  int iStack_8c;
  undefined *puStack_88;
  int local_38;
  undefined local_34 [8];
  undefined local_2c [4];
  char local_28;
  undefined4 *local_20;
  int local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8 = 0x7fedf2;
  puStack_88 = (undefined *)(param_1 + 0x70);
  iStack_8c = 0x7fee01;
  FUN_0043d406();
  puStack_88 = (undefined *)param_4;
  local_8 = 0;
  iStack_8c = 0x7fee12;
  FUN_00795058();
  local_8._0_1_ = 1;
  puStack_88 = (undefined *)0x7fee20;
  FUN_004fe47e();
  local_8._0_1_ = 0;
  if (local_20 != (undefined4 *)0x0) {
    puStack_88 = (undefined *)0x7fee30;
    FUN_0040127a();
  }
  puStack_88 = (undefined *)0x7fee3e;
  uStack_90 = FUN_0079509b();
  puStack_88 = (undefined *)0xffffffff;
  iStack_8c = 0;
  local_8._0_1_ = 2;
  local_94 = 0x7fee50;
  FID_conflict_assign();
  puStack_88 = (undefined *)0x0;
  iStack_8c = 1;
  local_8 = (uint)local_8._1_3_ << 8;
  uStack_90 = 0x7fee5e;
  FUN_00401829();
  local_15 = *(char *)(param_1 + 0x69);
  if ((*param_2 == 0) && (local_15 == '\0')) {
    puStack_88 = (undefined *)0x7fee73;
    cVar2 = FUN_00b72540();
    if ((cVar2 == '\0') && (cVar2 = *(char *)(param_1 + 0x6a), cVar2 == '\0')) goto LAB_007fee80;
  }
  cVar2 = '\x01';
LAB_007fee80:
  bVar1 = true;
  if (cVar2 == '\0') {
    local_1c = param_1 + 0x78;
    do {
      if (bVar1) {
        puStack_88 = (undefined *)0x0;
        iStack_8c = 0;
        uStack_90 = 0;
        local_20 = &local_98;
        local_98 = 0xa0c;
        local_94 = 0x7f;
        puVar3 = (undefined4 *)FUN_00465be3(local_34);
        local_20 = &local_98;
        local_8 = CONCAT31(local_8._1_3_,3);
        local_98 = *puVar3;
                    // WARNING: Subroutine does not return
        FUN_0043c023(puVar3 + 1);
      }
      puStack_88 = local_2c;
      iStack_8c = local_1c;
      uStack_90 = 0x7feef7;
      FUN_00453ca3();
      puStack_88 = (undefined *)param_4;
      iStack_8c = 0x7fef05;
      FUN_00795058();
      local_8._0_1_ = 4;
      puStack_88 = (undefined *)0x7fef13;
      FUN_004fe47e();
      local_8._0_1_ = 0;
      if (local_38 != 0) {
        puStack_88 = (undefined *)0x7fef22;
        FUN_0040127a();
      }
      puStack_88 = (undefined *)0x7fef30;
      uStack_90 = FUN_0079509b();
      puStack_88 = (undefined *)0xffffffff;
      iStack_8c = 0;
      local_8._0_1_ = 5;
      local_94 = 0x7fef42;
      FID_conflict_assign();
      puStack_88 = (undefined *)0x0;
      iStack_8c = 1;
      local_8 = (uint)local_8._1_3_ << 8;
      uStack_90 = 0x7fef50;
      FUN_00401829();
      local_15 = *(char *)(param_1 + 0x69);
      if ((*param_2 == 0) && (local_15 == '\0')) {
        puStack_88 = (undefined *)0x7fef65;
        cVar2 = FUN_00b72540();
        if ((cVar2 != '\0') || (cVar2 = *(char *)(param_1 + 0x6a), cVar2 != '\0'))
        goto LAB_007fef70;
      }
      else {
LAB_007fef70:
        cVar2 = '\x01';
      }
      bVar1 = false;
    } while (cVar2 == '\0');
  }
  local_8 = 0xffffffff;
  if (local_28 != '\0') {
    puStack_88 = (undefined *)0x7fef95;
    FUN_00401477();
  }
  if ((*param_2 != 0) && (local_15 == '\0')) {
    puStack_88 = (undefined *)0x7fefa5;
    cVar2 = FUN_00b72540();
    if (cVar2 == '\0') {
      return 1;
    }
  }
  puStack_88 = (undefined *)0x8c63ead9;
  iStack_8c = 0x7fefbc;
  FUN_00b940e0();
  return 0;
}



int FUN_007fefc7(uint param_1)

{
  int unaff_ESI;
  
  if ((uint)((*(int *)(unaff_ESI + 0x10) - *(int *)(unaff_ESI + 0xc)) / 0x2c) <= param_1) {
    FUN_00a3fb10();
  }
  return param_1 * 0x2c + *(int *)(unaff_ESI + 0xc);
}



void FUN_007fefeb(undefined4 param_1)

{
  int iVar1;
  int in_EAX;
  undefined4 uVar2;
  uint uVar3;
  undefined4 local_10;
  undefined4 local_c;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  if (iVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (*(int *)(in_EAX + 0x14) - iVar1) / 0x2c;
  }
  if ((uint)((*(int *)(in_EAX + 0x10) - iVar1) / 0x2c) < uVar3) {
    uVar2 = FUN_0079587b(*(int *)(in_EAX + 0x10),1,param_1);
    *(undefined4 *)(in_EAX + 0x10) = uVar2;
  }
  else {
    FUN_0046e65a();
    FUN_007ff0c1(&local_10,param_1,local_10,local_c);
  }
  return;
}



void FUN_007ff052(void)

{
  int in_EAX;
  undefined4 uVar1;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  FUN_0046e65a();
  if ((local_c == 0) || (local_c != local_14)) {
    FUN_00a3fb10();
  }
  if (local_8 != local_10) {
    uVar1 = FUN_007958ab(*(undefined4 *)(in_EAX + 0x10),local_8);
    FUN_007ff170(*(undefined4 *)(in_EAX + 0x10));
    *(undefined4 *)(in_EAX + 0x10) = uVar1;
  }
  return;
}



void FUN_007ff0c1(int **param_1,undefined4 param_2,int param_3,int param_4)

{
  int in_EAX;
  int iVar1;
  int *piVar2;
  int *local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if ((*(int *)(in_EAX + 0x10) - *(int *)(in_EAX + 0xc)) / 0x2c == 0) {
    local_8 = 0;
  }
  else {
    FUN_0046e65a();
    if ((param_3 == 0) || (param_3 != local_c)) {
      FUN_00a3fb10();
    }
    local_8 = (param_4 - local_8) / 0x2c;
  }
  FUN_007ff188(param_2,param_3,param_4);
  FUN_0046e65a();
  if (local_14 == (int *)0x0) {
    FUN_00a3fb10();
    iVar1 = 0;
  }
  else {
    iVar1 = *local_14;
  }
  piVar2 = (int *)(local_10 + local_8 * 0x2c);
  if (piVar2 <= *(int **)(iVar1 + 0x10)) {
    if (local_14 == (int *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *local_14;
    }
    if (*(int **)(iVar1 + 0xc) <= piVar2) goto LAB_007ff161;
  }
  FUN_00a3fb10();
LAB_007ff161:
  param_1[1] = piVar2;
  *param_1 = local_14;
  return;
}



void FUN_007ff170(int param_1)

{
  int in_EAX;
  
  for (; in_EAX != param_1; in_EAX = in_EAX + 0x2c) {
    FUN_007fe8b0(in_EAX);
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch_GS replaced with injection: EH_prolog3

void __thiscall FUN_007ff188(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined *puVar5;
  int iVar6;
  int extraout_ECX;
  uint uVar7;
  undefined auStack_70 [44];
  undefined auStack_44 [60];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x70;
  local_8 = 0x7ff194;
  iVar6 = *(int *)(param_1_00 + 0xc);
  if (iVar6 == 0) {
    uVar7 = 0;
  }
  else {
    uVar7 = (*(int *)(param_1_00 + 0x14) - iVar6) / 0x2c;
  }
  iVar3 = *(int *)(param_1_00 + 0x10);
  iVar2 = (iVar3 - iVar6) / 0x2c;
  iVar6 = 0x5d1745d;
  if (iVar2 == 0x5d1745d) {
    iVar2 = FUN_004423c1();
    iVar6 = extraout_ECX;
  }
  uVar1 = iVar2 + 1;
  if (uVar7 < uVar1) {
    if (iVar6 - (uVar7 >> 1) < uVar7) {
      uVar7 = 0;
    }
    else {
      uVar7 = uVar7 + (uVar7 >> 1);
    }
    if (uVar7 < uVar1) {
      uVar7 = uVar1;
    }
    iVar6 = FUN_0049429f();
    iVar3 = (param_3 - *(int *)(param_1_00 + 0xc)) / 0x2c;
    local_8 = 0;
    FUN_0079587b(iVar3 * 0x2c + iVar6,1,param_1);
    FUN_007ff448(param_3,iVar6);
    FUN_007ff448(*(undefined4 *)(param_1_00 + 0x10),(iVar3 + 1) * 0x2c + iVar6);
    local_8 = 0xffffffff;
    if (*(int *)(param_1_00 + 0xc) != 0) {
      FUN_007ff170(*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
    }
    *(uint *)(param_1_00 + 0x14) = uVar7 * 0x2c + iVar6;
    *(int *)(param_1_00 + 0x10) =
         ((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x2c + 1) * 0x2c + iVar6;
    *(int *)(param_1_00 + 0xc) = iVar6;
  }
  else {
    if ((iVar3 - param_3) / 0x2c == 0) {
      FUN_007ff3fb(auStack_44);
      local_8 = 2;
      FUN_007ff448(*(undefined4 *)(param_1_00 + 0x10),param_3 + 0x2c);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_0079587b(*(int *)(param_1_00 + 0x10),1 - (*(int *)(param_1_00 + 0x10) - param_3) / 0x2c,
                   auStack_44);
      local_8 = 2;
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 0x2c;
      iVar6 = *(int *)(param_1_00 + 0x10);
      for (; param_3 != iVar6 + -0x2c; param_3 = param_3 + 0x2c) {
        FUN_00795941();
      }
      puVar5 = auStack_44;
    }
    else {
      FUN_007ff3fb(auStack_70);
      local_8 = 5;
      iVar6 = *(int *)(param_1_00 + 0x10);
      uVar4 = FUN_007ff448(iVar6,iVar6);
      *(undefined4 *)(param_1_00 + 0x10) = uVar4;
      while (iVar6 = iVar6 + -0x2c, param_3 != iVar6) {
        FUN_00795941();
      }
      iVar6 = param_3 + 0x2c;
      if (param_3 != iVar6) {
        do {
          FUN_00795941();
          param_3 = param_3 + 0x2c;
        } while (param_3 != iVar6);
      }
      puVar5 = auStack_70;
    }
    local_8 = 0xffffffff;
    FUN_007fe8b0(puVar5);
  }
  FUN_00a4220a();
  return;
}



void Catch_All_007ff2a1(void)

{
  int unaff_EBP;
  
  if (1 < *(int *)(unaff_EBP + -0x7c)) {
    FUN_007ff170(*(int *)(unaff_EBP + -0x70) * 0x2c + *(int *)(unaff_EBP + -0x78));
  }
  if (0 < *(int *)(unaff_EBP + -0x7c)) {
    FUN_007ff170((*(int *)(unaff_EBP + -0x70) + 1) * 0x2c + *(int *)(unaff_EBP + -0x78));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x78));
}



void FUN_007ff2e2(void)

{
  undefined4 uVar1;
  int unaff_EBP;
  int unaff_ESI;
  int iVar2;
  int unaff_EDI;
  int iVar3;
  int iVar4;
  
  __CxxThrowException_8();
  if ((unaff_ESI - *(int *)(unaff_EBP + 0x10)) / 0x2c == 0) {
    FUN_007ff3fb();
    *(undefined4 *)(unaff_EBP + -4) = 2;
    FUN_007ff448();
    *(undefined *)(unaff_EBP + -4) = 3;
    FUN_0079587b(*(undefined4 *)(unaff_EDI + 0x10));
    *(undefined4 *)(unaff_EBP + -4) = 2;
    *(int *)(unaff_EDI + 0x10) = *(int *)(unaff_EDI + 0x10) + 0x2c;
    iVar2 = *(int *)(unaff_EDI + 0x10);
    for (iVar3 = *(int *)(unaff_EBP + 0x10); iVar3 != iVar2 + -0x2c; iVar3 = iVar3 + 0x2c) {
      FUN_00795941();
    }
  }
  else {
    FUN_007ff3fb();
    *(undefined4 *)(unaff_EBP + -4) = 5;
    iVar3 = *(int *)(unaff_EDI + 0x10);
    iVar2 = iVar3 + -0x2c;
    uVar1 = FUN_007ff448();
    *(undefined4 *)(unaff_EDI + 0x10) = uVar1;
    iVar4 = *(int *)(unaff_EBP + 0x10);
    *(int *)(unaff_EBP + -0x70) = iVar4;
    if (iVar4 != iVar2) {
      *(int *)(unaff_EBP + -0x74) = iVar3;
      *(int *)(unaff_EBP + -0x74) = *(int *)(unaff_EBP + -0x74) - iVar2;
      do {
        iVar2 = iVar2 + -0x2c;
        FUN_00795941();
      } while (iVar2 != *(int *)(unaff_EBP + -0x70));
      iVar4 = *(int *)(unaff_EBP + 0x10);
    }
    iVar2 = iVar4 + 0x2c;
    for (; iVar4 != iVar2; iVar4 = iVar4 + 0x2c) {
      FUN_00795941();
    }
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_007fe8b0();
  FUN_00a4220a();
  return;
}



void Catch_All_007ff366(void)

{
  int unaff_EBP;
  
  FUN_007ff170(*(int *)(*(int *)(unaff_EBP + -0x70) + 0x10) + 0x2c);
  FUN_007ff2e2(0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_007ff3fb(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1 = *param_1_00;
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1_00 + 1);
}



void FUN_007ff448(undefined4 param_1,undefined4 param_2)

{
  FUN_007ff51d(param_1,param_2,param_2,0);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_007ff46c(int param_1)

{
  if (param_1 != 0) {
    FUN_007ff3fb(param_1);
  }
  return;
}



void FUN_007ff497(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_007ff4d0(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,class_boost::_mfi::cmf0<bool,class_WE7A5EFDD::W72CC8097>,class_boost::_bi::list1<class_boost::_bi::value<class_W48463D55::WA13E81C7*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_007ff4d0(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,class_boost::_mfi::cmf0<bool,class_WE7A5EFDD::W72CC8097>,class_boost::_bi::list1<class_boost::_bi::value<class_W48463D55::WA13E81C7*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<bool,class_boost::_mfi::cmf0<bool,class_WE7A5EFDD::W72CC8097>,class_boost::_bi::list1<class_boost::_bi::value<class_W48463D55::WA13E81C7*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int __thiscall FUN_007ff51d(int param_1_00,int param_1,int param_2)

{
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 0x2c) {
    FUN_007ff46c(param_2);
    param_2 = param_2 + 0x2c;
  }
  return param_2;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 Catch_All_007ff54d(void)

{
  int unaff_EBP;
  int iVar1;
  
  for (iVar1 = *(int *)(unaff_EBP + -0x14); iVar1 != *(int *)(unaff_EBP + 0xc); iVar1 = iVar1 + 0x2c
      ) {
    FUN_007fe8b0(iVar1);
  }
  __CxxThrowException_8(0,0);
  return *(undefined4 *)(unaff_EBP + 0xc);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall
FUN_007ff71a(undefined4 param_1_00,int param_2_00,int *param_1,int param_2,int param_3)

{
  int *piVar1;
  uint uVar2;
  char cVar3;
  undefined4 extraout_ECX;
  undefined4 extraout_ECX_00;
  int iVar4;
  undefined auStack_c4 [20];
  undefined4 uStack_b0;
  undefined *puStack_ac;
  int **ppiStack_a8;
  int *local_a4;
  undefined ***local_a0;
  char local_80;
  undefined **local_7c;
  int local_78;
  int local_74;
  int local_70;
  int **local_6c;
  int local_68;
  int *local_64;
  int local_60;
  int local_5c;
  uint local_58;
  undefined4 *local_54;
  int *local_50;
  int local_4c;
  int *local_48;
  int local_44;
  int *local_40;
  int local_3c;
  uint local_38;
  char local_31;
  int local_30 [6];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x7c;
  local_64 = param_1;
  local_60 = param_2;
  local_8 = 0;
  local_68 = param_2;
  local_a0 = (undefined ***)(param_2_00 + 0x70);
  local_a4 = (int *)0x7ff750;
  local_70 = param_2_00;
  local_5c = (int)local_a0;
  FUN_0043d406();
  iVar4 = param_2_00 + 0x50;
  local_58 = (*(int *)(param_2_00 + 0x60) - *(int *)(param_2_00 + 0x5c)) / 0x2c;
  local_4c = iVar4;
  if ((char)local_3c != '\0') {
    local_a0 = (undefined ***)0x7ff773;
    FUN_00401477();
  }
  local_38 = 0;
  local_31 = '\x01';
  do {
    uVar2 = local_38;
    if (local_58 <= local_38) break;
    local_48 = (int *)0x0;
    local_44 = 0;
    local_a0 = (undefined ***)0x0;
    local_18 = 7;
    local_a4 = (int *)0x7ff7a4;
    FUN_0040180b();
    local_a0 = (undefined ***)uVar2;
    local_a4 = local_30;
    ppiStack_a8 = &local_48;
    local_8._0_1_ = 2;
    uStack_b0 = 0x7ff7b7;
    puStack_ac = (undefined *)param_2_00;
    local_31 = FUN_007fede6();
    if (local_31 == '\0') {
      local_a0 = (undefined ***)0x7a22617;
      local_a4 = (int *)0x7ff7cd;
      FUN_00b940e0();
    }
    local_50 = (int *)0x0;
    if (local_31 != '\0') {
      local_a0 = (undefined ***)local_5c;
      local_a4 = (int *)0x7ff7e7;
      FUN_0043d406();
      local_8._0_1_ = 3;
      local_a0 = (undefined ***)0x2c;
      if (local_38 < (uint)((*(int *)(iVar4 + 0x10) - *(int *)(iVar4 + 0xc)) / 0x2c)) {
        local_a0 = (undefined ***)local_38;
        local_a4 = (int *)0x7ff806;
        FUN_007fefc7();
        local_a0 = (undefined ***)0x7ff80e;
        FUN_0074ca40();
        local_a0 = (undefined ***)extraout_ECX;
      }
      local_8._0_1_ = 2;
      if (local_80 != '\0') {
        local_a0 = (undefined ***)0x7ff820;
        FUN_00401477();
        local_a0 = (undefined ***)extraout_ECX_00;
      }
      piVar1 = local_48;
      if ((-(uint)(param_3 != 0) & 0x7a491c) != 0) {
        local_6c = &local_a4;
        local_a4 = local_48;
        ppiStack_a8 = (int **)&local_44;
                    // WARNING: Subroutine does not return
        puStack_ac = &UNK_007ff846;
        FUN_0043c023();
      }
      local_a0 = (undefined ***)&local_50;
      local_a4 = (int *)0x7ff882;
      local_31 = (**(code **)(*local_48 + 0x14))();
      if (local_31 == '\0') {
        local_a0 = (undefined ***)0x9e2f81cd;
        local_a4 = (int *)0x7ff898;
        FUN_00b940e0();
      }
      else {
        local_a0 = (undefined ***)local_30;
        local_a4 = &local_68;
        ppiStack_a8 = (int **)0x7ff8ab;
        FUN_007b4b62();
        local_a0 = (undefined ***)0x0;
        local_a4 = local_50;
        ppiStack_a8 = (int **)0x7ff8b8;
        (**(code **)*local_54)();
        iVar4 = local_60;
        local_40 = (int *)0x0;
        local_3c = 0;
        local_6c = (int **)auStack_c4;
        local_8._0_1_ = 5;
        FUN_005d44b1(local_60);
        local_31 = (**(code **)(*local_64 + 0x11c))(&local_40,piVar1,1);
        if (local_31 == '\0') {
          local_a0 = (undefined ***)0x79373e5b;
          local_a4 = (int *)0x7ff8fb;
          FUN_00b940e0();
        }
        if (local_40 != (int *)0x0) {
          local_7c = W48463D55::W7F6116D4::vftable;
          local_78 = iVar4;
          local_74 = iVar4;
          local_a0 = &local_7c;
          local_8._0_1_ = 6;
          local_a4 = (int *)0x7ff91d;
          (**(code **)(*local_40 + 8))();
          local_8._0_1_ = 5;
          local_7c = W560DA063::W1DB2E895::vftable;
          if (local_31 != '\0') {
            local_a0 = (undefined ***)0x7ff936;
            cVar3 = (**(code **)(*local_40 + 4))();
            if (cVar3 == '\0') {
              local_a0 = (undefined ***)0x1c050d12;
              local_a4 = (int *)0x7ff94c;
              local_31 = cVar3;
              FUN_00b940e0();
            }
          }
        }
        local_8._0_1_ = 2;
        iVar4 = local_4c;
        if (local_3c != 0) {
          local_a0 = (undefined ***)0x7ff95d;
          FUN_0040127a();
          iVar4 = local_4c;
        }
      }
    }
    local_a0 = (undefined ***)0x0;
    local_a4 = (int *)0x1;
    ppiStack_a8 = (int **)0x7ff96c;
    FUN_00401829();
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_44 != 0) {
      local_a0 = (undefined ***)0x7ff97c;
      FUN_0040127a();
    }
    local_38 = local_38 + 1;
    param_2_00 = local_70;
  } while (local_31 != '\0');
  local_8 = 0xffffffff;
  local_a0 = (undefined ***)0x7ff995;
  FUN_00507e58();
  local_a0 = (undefined ***)0x7ff99d;
  FUN_00a421fb();
  return;
}



void FUN_007fff0a(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_10 = param_1;
  uStack_c = param_2;
  uStack_8 = param_3;
  cVar1 = FUN_007f2630(&local_10);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_10;
      unaff_EBX[3] = uStack_c;
      unaff_EBX[4] = uStack_8;
    }
    *unaff_EBX = &DAT_030645d1;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



void FUN_007fff50(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 *unaff_EBX;
  undefined4 local_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  *unaff_EBX = 0;
  local_10 = param_1;
  uStack_c = param_2;
  uStack_8 = param_3;
  cVar1 = FUN_007f2630(&local_10);
  if (cVar1 == '\0') {
    if (unaff_EBX + 2 != (undefined4 *)0x0) {
      unaff_EBX[2] = local_10;
      unaff_EBX[3] = uStack_c;
      unaff_EBX[4] = uStack_8;
    }
    *unaff_EBX = &DAT_030645d9;
  }
  else {
    *unaff_EBX = 0;
  }
  return;
}



void FUN_007fff96(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0080001e(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W560DA063::W3A2C0306&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&),class_boost::_bi::list3<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W560DA063::W3A2C0306>,struct_boost::arg<1>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_007fffe5(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0080006a(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W560DA063::W3A2C0306&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list5<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W560DA063::W3A2C0306>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_0080001e(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W560DA063::W3A2C0306&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&),class_boost::_bi::list3<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W560DA063::W3A2C0306>,struct_boost::arg<1>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W560DA063::W3A2C0306&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&),class_boost::_bi::list3<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W560DA063::W3A2C0306>,struct_boost::arg<1>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



void __fastcall FUN_0080006a(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W560DA063::W3A2C0306&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list5<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W560DA063::W3A2C0306>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<bool,bool_(__cdecl*)(class_WDE765622::W673CE3C4&,class_W560DA063::W3A2C0306&,class_std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>_const&,unsigned_int,class_std::auto_ptr<class_common::WB943A9F0>),class_boost::_bi::list5<class_boost::reference_wrapper<class_WDE765622::W673CE3C4>,class_boost::reference_wrapper<class_W560DA063::W3A2C0306>,struct_boost::arg<1>,struct_boost::arg<2>,struct_boost::arg<3>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_00801a6a(undefined4 *param_1_00,int **param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_4c [68];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  local_8 = 0x801a76;
  FUN_00b72ec0(local_4c);
  local_8 = 0;
  *param_1_00 = 0;
  cVar1 = (**(code **)(**param_1 + 0xb0))(local_4c,param_1_00);
  if (cVar1 == '\0') {
    uVar2 = 0xc2302432;
    cVar1 = '\0';
  }
  else {
    cVar1 = FUN_005d5bb2(param_2);
    if (cVar1 != '\0') goto LAB_00801ace;
    uVar2 = 0xfe0fe1e0;
  }
  FUN_00b940e0(uVar2);
LAB_00801ace:
  local_8 = 0xffffffff;
  FUN_00b72d90();
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

bool __thiscall
FUN_00801ae4(int *param_1_00,undefined4 *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2)

{
  int iVar1;
  byte bVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  char cVar4;
  undefined4 uVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [56];
  int local_18;
  byte local_12;
  byte local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x801af0;
  FUN_0048867c(param_2);
  cVar4 = *param_1_00 != 0;
  if ((bool)cVar4) {
    uVar5 = 0xebf06c7e;
    cVar4 = '\x01' - (*(uint *)(*param_1_00 + 8) < 0x65);
  }
  else {
    uVar5 = 0xc7716012;
  }
  FUN_00b940e0(uVar5);
  local_18 = 0;
  if (cVar4 == '\0') {
    return false;
  }
  cVar4 = FUN_00b92f80(0);
  iVar1 = local_18;
  if (cVar4 == '\0') {
    uVar5 = 0x42e1209e;
    goto LAB_00801ba5;
  }
  cVar4 = *(char *)(local_18 + 0x4e);
  if (cVar4 == '\0') {
LAB_00801b84:
    uVar5 = 0;
  }
  else if (cVar4 == '\x01') {
    uVar5 = 1;
  }
  else if (cVar4 == '\x02') {
    uVar5 = 2;
  }
  else if (cVar4 == '\x03') {
    uVar5 = 3;
  }
  else {
    if (cVar4 == -1) goto LAB_00801b84;
    uVar5 = 4;
  }
  *param_1 = uVar5;
  local_12 = *(byte *)(local_18 + 0x61);
  cVar4 = '\x01' - (8 < local_12);
  if (cVar4 != '\0') {
    if (local_12 == 0) {
      uVar5 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
              basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        (local_50,&DAT_00dd8684,5);
      local_8 = 0;
      local_18 = -0x137f1883;
      pbVar3 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_00b94330(&local_18,uVar5);
      local_8 = CONCAT31(local_8._1_3_,1);
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (param_2,pbVar3,0,0xffffffff);
      FUN_004017b2(1,0);
      FUN_004017b2(1,0);
      return (bool)cVar4;
    }
    local_11 = 0;
    do {
      if (local_12 <= local_11) {
        return (bool)cVar4;
      }
      bVar2 = *(byte *)((local_11 >> 1) + 0x62 + iVar1);
      if ((local_11 & 1) == 0) {
        bVar2 = bVar2 & 0xf;
      }
      else {
        bVar2 = bVar2 >> 4;
      }
      cVar4 = bVar2 < 10;
      if ((bool)cVar4) {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                  (param_2,1,"0123456789"[bVar2]);
      }
      else {
        FUN_00b940e0(0xdfeafc15);
      }
      local_11 = local_11 + 1;
    } while ((bool)cVar4);
    return (bool)cVar4;
  }
  uVar5 = 0x77c1c401;
LAB_00801ba5:
  FUN_00b940e0(uVar5);
  return false;
}



undefined4 * __thiscall FUN_00801cdc(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W48463D55::W497755B0::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_00801d3f(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00801d56(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = W48463D55::W2F9EA682::vftable;
    puVar2[1] = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00801dee(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void FUN_00801dc3(undefined4 param_1,undefined4 param_2)

{
  FUN_005d531e(param_1,param_2);
  return;
}



void FUN_00801dd9(undefined4 param_1)

{
  FUN_005d3d89(param_1);
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00801dee(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W48463D55::W2F9EA682>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00801e34(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00803d7f(int param_1,undefined4 param_2,int param_3)

{
  undefined4 **ppuVar1;
  int iVar2;
  undefined4 *puVar3;
  char cVar4;
  int *piVar5;
  undefined4 *puVar6;
  int local_6c;
  undefined4 **local_68 [5];
  undefined local_54 [16];
  undefined4 *local_44;
  undefined4 *local_40;
  undefined4 *local_3c;
  int *local_38;
  undefined4 ***local_34;
  undefined4 *local_30;
  undefined4 *local_2c;
  undefined4 *local_28;
  undefined4 *local_24;
  undefined4 *local_20;
  uint local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0;
  local_15 = '\x01';
  local_1c = 0;
  do {
    if ((uint)(*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc) >> 3) <= local_1c) break;
    local_68[0] = (undefined4 **)0x803db3;
    piVar5 = (int *)FUN_00436b17();
    iVar2 = *piVar5;
    local_34 = *(undefined4 ****)(iVar2 + 4);
    local_68[0] = &local_28;
    local_6c = iVar2;
    piVar5 = (int *)FUN_00b5cf30();
    puVar3 = (undefined4 *)*piVar5;
    *piVar5 = 0;
    local_8._0_1_ = 1;
    local_3c = puVar3;
    if (local_28 != (undefined4 *)0x0) {
      local_68[0] = (undefined4 **)0x1;
      local_6c = 0x803ddd;
      (**(code **)*local_28)();
    }
    local_68[0] = &local_2c;
    local_6c = iVar2;
    puVar6 = (undefined4 *)FUN_00b5ceb0();
    local_40 = (undefined4 *)*puVar6;
    *puVar6 = 0;
    local_8._0_1_ = 2;
    local_24 = local_40;
    if (local_2c != (undefined4 *)0x0) {
      local_68[0] = (undefined4 **)0x1;
      local_6c = 0x803e02;
      (**(code **)*local_2c)();
    }
    local_68[0] = &local_30;
    local_6c = iVar2;
    puVar6 = (undefined4 *)FUN_00b5ce30();
    local_44 = (undefined4 *)*puVar6;
    *puVar6 = 0;
    local_8 = CONCAT31(local_8._1_3_,3);
    local_20 = local_44;
    if (local_30 != (undefined4 *)0x0) {
      local_68[0] = (undefined4 **)0x1;
      local_6c = 0x803e27;
      (**(code **)*local_30)();
    }
    local_38 = *(int **)(iVar2 + 0x14);
    if (((puVar3 == (undefined4 *)0x0) || (local_24 == (undefined4 *)0x0)) ||
       (local_20 == (undefined4 *)0x0)) {
      local_15 = '\0';
      local_68[0] = (undefined4 **)0x9cb9d439;
LAB_00803e89:
      local_6c = 0x803e8e;
      FUN_00b940e0();
LAB_00803edf:
      local_34 = local_68;
      local_6c = 0;
      local_68[0] = (undefined4 **)((uint)local_68[0] & 0xffffff00);
      piVar5 = (int *)FUN_00443a80(local_54,local_38,0);
      local_38 = &local_6c;
      local_8 = CONCAT31(local_8._1_3_,4);
      local_6c = *piVar5;
                    // WARNING: Subroutine does not return
      FUN_0043c023(piVar5 + 1);
    }
    iVar2 = puVar3[2];
    if (((iVar2 == 0) || (iVar2 != local_24[2])) || (iVar2 != local_20[2])) {
      local_15 = '\0';
      local_68[0] = (undefined4 **)0x2761a9c6;
      goto LAB_00803e89;
    }
    ppuVar1 = (undefined4 **)(iVar2 + (int)local_34);
    local_15 = '\x01' - (ppuVar1 < local_34);
    if (local_15 == '\0') {
      local_68[0] = (undefined4 **)0xbda81a1f;
      goto LAB_00803e89;
    }
    local_68[0] = local_34;
    if ((-(uint)(param_3 != 0) & 0x7a491c) == 0) {
LAB_00803ed6:
      if (local_15 == '\0') goto LAB_00803edf;
    }
    else {
      local_6c = 0x803ea8;
      cVar4 = FUN_0044be74();
      if (cVar4 == '\0') {
LAB_00803ec3:
        local_68[0] = (undefined4 **)0xe1f24299;
        local_15 = '\0';
        local_6c = 0x803ed5;
        FUN_00b940e0();
        goto LAB_00803ed6;
      }
      local_68[0] = (undefined4 **)((int)ppuVar1 - 1);
      local_6c = 0x803eb6;
      cVar4 = FUN_0044be74();
      if (cVar4 == '\0') goto LAB_00803ec3;
      local_15 = '\x01';
    }
    local_8._0_1_ = 2;
    if (local_20 != (undefined4 *)0x0) {
      local_68[0] = (undefined4 **)0x1;
      local_6c = 0x803f8a;
      (**(code **)*local_20)();
    }
    local_8._0_1_ = 1;
    if (local_24 != (undefined4 *)0x0) {
      local_68[0] = (undefined4 **)0x1;
      local_6c = 0x803f9b;
      (**(code **)*local_24)();
    }
    local_8 = (uint)local_8._1_3_ << 8;
    if (puVar3 != (undefined4 *)0x0) {
      local_68[0] = (undefined4 **)0x1;
      local_6c = 0x803faa;
      (**(code **)*puVar3)();
    }
    local_1c = local_1c + 1;
  } while (local_15 != '\0');
  local_8 = 0xffffffff;
  local_68[0] = (undefined4 **)0x803fc2;
  FUN_00507e58();
  return local_15;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_00806d95(int **param_1,int param_2)

{
  int iVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 **ppuVar4;
  undefined4 **ppuStack_50;
  undefined4 uStack_4c;
  undefined4 **ppuStack_48;
  int local_34;
  int local_30;
  undefined4 ***local_2c;
  undefined4 *local_28;
  undefined4 local_24;
  undefined4 **local_20;
  undefined4 **local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x806da1;
  ppuVar4 = (undefined4 **)(*(int *)(param_2 + 0x14) - *(int *)(param_2 + 0x10) >> 3);
  uStack_4c = 0;
  ppuStack_50 = (undefined4 **)0x806dbf;
  ppuStack_48 = ppuVar4;
  local_20 = ppuVar4;
  (**(code **)(*param_1)[1])();
  local_1c = (undefined4 **)0x0;
  local_15 = '\x01';
  do {
    if (ppuVar4 <= local_1c) {
      return local_15;
    }
    ppuStack_50 = (undefined4 **)0x806de2;
    FUN_00b672c0();
    iVar1 = local_34;
    local_8 = 0;
    if (local_34 == 0) {
LAB_00806e7e:
      if (local_15 != '\0') {
        ppuStack_50 = (undefined4 **)0x806e8a;
        cVar2 = (**(code **)(**param_1 + 0xc))();
        local_15 = '\x01' - (cVar2 != '\0');
        if (local_15 == '\0') {
          ppuStack_50 = (undefined4 **)0x1e44f1ed;
          goto LAB_00806e9f;
        }
      }
    }
    else if (param_1[3] < *(int **)(*(int *)(local_34 + 0xc) + 8)) {
      local_2c = (undefined4 ***)*param_1;
      ppuStack_50 = *(undefined4 ***)(local_34 + 8);
      FUN_007b57f3(&local_2c);
      if (local_15 != '\0') goto LAB_00806e6d;
    }
    else {
      ppuStack_50 = &local_28;
      puVar3 = (undefined4 *)FUN_00b6709c(local_34);
      local_8._0_1_ = 1;
      ppuStack_50 = (undefined4 **)*puVar3;
      local_2c = &ppuStack_50;
      *puVar3 = 0;
      local_24 = CONCAT31(local_24._1_3_,*(undefined *)(iVar1 + 4));
      local_15 = (**(code **)(*param_1[2] + 0x138))(local_24,*(undefined4 *)(iVar1 + 8));
      local_8 = (uint)local_8._1_3_ << 8;
      if (local_28 != (undefined4 *)0x0) {
        ppuStack_50 = (undefined4 **)0x1;
        (**(code **)*local_28)();
      }
      if (local_15 != '\0') {
LAB_00806e6d:
        ppuStack_50 = local_20;
        (**(code **)(*param_1)[1])((int)local_1c + 1);
        goto LAB_00806e7e;
      }
      ppuStack_50 = (undefined4 **)0x303476be;
LAB_00806e9f:
      FUN_00b940e0();
    }
    local_8 = 0xffffffff;
    if (local_30 != 0) {
      ppuStack_50 = (undefined4 **)0x806eb5;
      FUN_0040127a();
    }
    local_1c = (undefined4 **)((int)local_1c + 1);
    ppuVar4 = local_20;
    if (local_15 == '\0') {
      return '\0';
    }
  } while( true );
}



undefined4 * __thiscall FUN_00806ed0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W3BA3362A::W13088503::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00806ef0(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = W3BA3362A::W3D241858::vftable;
    FUN_00807000(unaff_EDI);
    return;
  }
  FUN_00807000(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_00806f40(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W3BA3362A::W3D241858::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00806f70(void)

{
  undefined4 *puVar1;
  undefined4 unaff_EDI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = W3BA3362A::W07263677::vftable;
    FUN_00807060(unaff_EDI);
    return;
  }
  FUN_00807060(unaff_EDI);
  return;
}



undefined4 * __thiscall FUN_00806fc0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W3BA3362A::W07263677::vftable;
  FUN_005d9bf0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00806ff0(undefined4 *param_1)

{
  *param_1 = W3BA3362A::W13088503::vftable;
  return;
}



undefined4 * __thiscall FUN_00807000(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_00807240(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_00807060(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_008072a0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



uint * __thiscall FUN_008070c0(undefined4 *param_1_00,uint *param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  uint uVar5;
  uint *puVar6;
  uint uVar7;
  uint local_20;
  int *local_1c;
  uint local_18;
  int *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c137d2;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_20 = 0;
  ___RTDynamicCast(0,0,&W6A4CD2C5::W6C89CAE2::RTTI_Type_Descriptor,
                   &W3BA3362A::WEBBD3535::RTTI_Type_Descriptor,0,
                   DAT_0323f878 ^ (uint)&stack0xffffffd4);
  uVar5 = ___RTDynamicCast(*param_1_00,0,&W6A4CD2C5::W6C89CAE2::RTTI_Type_Descriptor,
                           &W3BA3362A::WEBBD3535::RTTI_Type_Descriptor,0);
  if (uVar5 == 0) {
    local_20 = 0;
    local_1c = (int *)0x0;
    puVar6 = &local_20;
    uVar5 = 2;
  }
  else {
    local_14 = (int *)param_1_00[1];
    local_18 = uVar5;
    if (local_14 != (int *)0x0) {
      LOCK();
      local_14[1] = local_14[1] + 1;
      UNLOCK();
    }
    uVar5 = 1;
    local_4 = 1;
    puVar6 = &local_18;
  }
  piVar4 = local_14;
  piVar3 = local_1c;
  uVar7 = puVar6[1];
  *param_1 = *puVar6;
  param_1[1] = uVar7;
  if (uVar7 != 0) {
    LOCK();
    *(int *)(uVar7 + 4) = *(int *)(uVar7 + 4) + 1;
    UNLOCK();
  }
  uVar7 = uVar5 | 4;
  if (((uVar5 & 2) != 0) && (uVar7 = uVar5 & 0xfffffffd | 4, local_1c != (int *)0x0)) {
    LOCK();
    iVar2 = local_1c[1] + -1;
    local_1c[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      local_20 = uVar7;
      (**(code **)(*local_1c + 4))();
      piVar1 = piVar3 + 2;
      LOCK();
      iVar2 = *piVar1 + -1;
      *piVar1 = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar3 + 8))();
      }
    }
  }
  local_4 = 0;
  if (((uVar7 & 1) != 0) && (local_20 = uVar7 & 0xfffffffe, piVar4 != (int *)0x0)) {
    LOCK();
    iVar2 = piVar4[1] + -1;
    piVar4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar4 + 4))();
      LOCK();
      iVar2 = piVar4[2] + -1;
      piVar4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar4 + 8))();
      }
      ExceptionList = local_c;
      return param_1;
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00807240(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_00807300(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



void __thiscall FUN_008072a0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_008073a0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_00807300(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c07390;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3BA3362A::W3D241858>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_00807379(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_008073a0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c07370;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3BA3362A::W07263677>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_00807419(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_00807440(undefined4 param_1_00,byte param_1)

{
  FUN_00b5cd00();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4
FUN_00807460(undefined4 param_1,undefined4 param_2,undefined4 *param_3,undefined4 *param_4,
            undefined4 *param_5)

{
  void *pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1377c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 3;
  pvVar1 = operator_new(0x18);
  local_4._0_1_ = 4;
  if (pvVar1 != (void *)0x0) {
    param_5 = (undefined4 *)0x0;
    param_4 = (undefined4 *)0x0;
    param_3 = (undefined4 *)0x0;
    FUN_00b5cdd0(pvVar1);
  }
  local_4._0_1_ = 3;
  FUN_00807560();
  local_4._0_1_ = 2;
  if (param_3 != (undefined4 *)0x0) {
    (**(code **)*param_3)();
  }
  local_4._0_1_ = 1;
  if (param_4 != (undefined4 *)0x0) {
    (**(code **)*param_4)();
  }
  local_4 = (uint)local_4._1_3_ << 8;
  if (param_5 != (undefined4 *)0x0) {
    (**(code **)*param_5)();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_00807560(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_008075c0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_008075c0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_00807620(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_00807620(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c07350;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3BA3362A::WF87439FF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_00807699(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_008076c0(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 unaff_ESI;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = param_2;
    *puVar1 = W3BA3362A::WEF3142FF::vftable;
    puVar1[2] = param_1;
    FUN_00807710(unaff_ESI);
    return;
  }
  FUN_00807710(unaff_ESI);
  return;
}



undefined4 * __thiscall FUN_00807710(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_008077d0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_00807770(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_008078d0(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_008077d0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_00807830(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_00807830(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c07330;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3BA3362A::WEF3142FF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_008078a9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_008078d0(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_008079e0();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008079e0(undefined4 *param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_434 [108];
  undefined4 uStack_3c8;
  undefined4 **ppuStack_3c4;
  undefined auStack_3a8 [4];
  undefined4 *local_3a4 [2];
  undefined *local_39c;
  undefined local_398 [376];
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c382c3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_3a8;
  ExceptionList = &local_c;
  local_39c = auStack_434;
  local_3a4[0] = param_1;
  FUN_005da3d0(auStack_434);
  FUN_005da5d0();
  ppuStack_3c4 = (undefined4 **)0x807a56;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_3c4 = (undefined4 **)0x807a75;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_3c4 = (undefined4 **)0x807ab7;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_3c4 = (undefined4 **)0x807ae8;
  FUN_005dde60();
  ppuStack_3c4 = (undefined4 **)local_398;
  local_4 = 0;
  uStack_3c8 = 0x807b0b;
  FUN_00807cb0();
  local_4._0_1_ = 1;
  ppuStack_3c4 = (undefined4 **)0x807b1d;
  FUN_00808560();
  local_4._0_1_ = 3;
  ppuStack_3c4 = (undefined4 **)0x807b32;
  FUN_00807bd0();
  uStack_3c8 = 0x807b45;
  ppuStack_3c4 = local_3a4;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_3a4[0] != (undefined4 *)0x0) {
    piVar4 = local_3a4[0] + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_3a4[0] != (undefined4 *)0x0)) {
      ppuStack_3c4 = (undefined4 **)0x807b87;
      (**(code **)*local_3a4[0])();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00807bd0(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00807c50(param_1 + 0x80);
  local_4 = 0xffffffff;
  FUN_005da4f0(param_1);
  ExceptionList = local_c;
  return;
}



void FUN_00807c30(void)

{
  int in_EAX;
  
  FUN_00807c50(in_EAX + 8);
  return;
}



void FUN_00807c40(void)

{
  int in_EAX;
  
  FUN_00807c50(in_EAX + 4);
  return;
}



void FUN_00807c50(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005da4f0(param_1 + 0x7c);
  local_4 = 0xffffffff;
  FUN_005da4f0(param_1);
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall
FUN_00807cb0(undefined4 param_1_00,undefined4 *param_2_00,undefined4 param_1,undefined *param_2)

{
  undefined local_95;
  undefined4 local_94;
  undefined local_90 [132];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c3827b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_94 = 0;
  local_95 = *param_2;
  FUN_005ec5e0(local_90,param_2_00[1],&local_95);
  local_4 = 1;
  FUN_00807e50(param_1,*param_2_00);
  local_94 = 1;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_90);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00807d70(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined *)(param_1 + 0x78) = *(undefined *)(param_1_00 + 0x78);
  *(undefined4 *)(param_1 + 0x7c) = *(undefined4 *)(param_1_00 + 0x7c);
  FUN_00807de0(param_1 + 0x80);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00807de0(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2f258;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1_00 + 0x78);
  FUN_005da440(param_1 + 0x7c);
  *(undefined *)(param_1 + 0xf4) = *(undefined *)(param_1_00 + 0xf4);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00807e50(int param_1_00,undefined4 param_1,int param_2)

{
  undefined4 unaff_ESI;
  undefined local_190 [120];
  undefined local_118;
  undefined local_110 [4];
  undefined local_10c [256];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c38226;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005da440(local_190);
  local_118 = *(undefined *)(param_1_00 + 0x78);
  local_4 = 1;
  FUN_00807f40(local_110,*(undefined4 *)(param_2 + 4),local_190,unaff_ESI);
  local_4._0_1_ = 2;
  FUN_00807fd0(param_1,local_110,unaff_ESI);
  local_4._0_1_ = 1;
  FUN_00807c50(local_10c);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005da4f0(local_190);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00807f40(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined local_18 [4];
  int local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c381d1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  FUN_0080a2f0(local_18,param_2);
  local_4 = 1;
  FUN_008080c0(param_1,param_4);
  local_4 = local_4 & 0xffffff00;
  if (local_14 != 0) {
    FUN_005da010(uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00807fd0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined local_210 [260];
  undefined local_10c [256];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c38186;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdd4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00807de0(local_210);
  local_4 = 1;
  FUN_008081b0(uVar1);
  local_4._0_1_ = 2;
  FUN_008081e0(param_1,*param_1_00);
  local_4._0_1_ = 1;
  FUN_00807c50(local_10c);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00807c50(local_210);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall
FUN_008080c0(int param_1_00,int param_2_00,undefined4 param_1,undefined4 param_2)

{
  undefined local_188 [120];
  undefined local_110;
  undefined local_108 [252];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c38127;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005da440(local_188);
  local_110 = *(undefined *)(param_1_00 + 0x78);
  local_4 = 1;
  FUN_00808280(local_108,param_2_00 + 4,param_2);
  local_4._0_1_ = 2;
  FUN_00808360(local_108);
  local_4._0_1_ = 1;
  FUN_00807c50(local_108);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005da4f0(local_188);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_008081b0(undefined4 *param_1)

{
  undefined4 *in_EAX;
  undefined *unaff_ESI;
  
  *unaff_ESI = *(undefined *)*param_1;
  *(undefined4 *)(unaff_ESI + 4) = *in_EAX;
  FUN_00807de0(unaff_ESI + 8);
  return;
}



undefined4 FUN_008081e0(undefined4 param_1)

{
  undefined local_84 [120];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c380cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff68);
  local_4 = 1;
  FUN_008083b0(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_84);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00808280(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined local_114 [120];
  undefined local_9c;
  undefined local_94 [4];
  undefined local_90 [132];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c38076;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffed4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005da440(local_114);
  local_9c = *(undefined *)(param_1_00 + 0x78);
  local_4 = 1;
  FUN_00808420(uVar1);
  local_4._0_1_ = 2;
  FUN_00808450(param_1,param_2,local_94);
  local_4._0_1_ = 1;
  FUN_005da4f0(local_90);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005da4f0(local_114);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00808360(int *param_1,uint *param_2)

{
  uint uVar1;
  uint *puVar2;
  uint *puVar3;
  uint *unaff_ESI;
  uint local_4;
  
  local_4 = 0;
  uVar1 = *param_2;
  if (0 < (int)uVar1) {
    puVar3 = (uint *)(*param_1 + 0x70);
    local_4 = uVar1;
    puVar2 = &local_4;
    if (uVar1 <= *puVar3) {
      puVar2 = puVar3;
    }
    *puVar3 = *puVar2;
  }
  *unaff_ESI = *param_2;
  FUN_00807de0(unaff_ESI + 1);
  return;
}



int FUN_008083b0(int param_1)

{
  undefined *unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined *)(param_1 + 0x78) = *unaff_EBX;
  *(undefined4 *)(param_1 + 0x7c) = *(undefined4 *)(unaff_EBX + 4);
  FUN_00807de0(param_1 + 0x80);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00808420(int param_1)

{
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *in_EAX;
  FUN_005da440(unaff_ESI + 1);
  *(undefined *)(unaff_ESI + 0x1f) = *(undefined *)(param_1 + 0x78);
  return;
}



undefined4 FUN_00808450(undefined4 param_1)

{
  undefined local_88 [124];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3801b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff6c);
  local_4 = 1;
  FUN_008084f0(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_88);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_008084f0(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2f258;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *param_1_00;
  FUN_005da440(param_1 + 0x7c);
  *(undefined *)(param_1 + 0xf4) = *(undefined *)(param_1_00 + 0x1f);
  ExceptionList = local_c;
  return param_1;
}



void FUN_00808560(void)

{
  void *pvVar1;
  int iVar2;
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x180);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_008085e0(pvVar1);
  }
  *unaff_ESI = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_008085e0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33f08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>_>,struct_boost::xpressive::detail::matchable_ex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  FUN_00807d70(param_1 + 2);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00808640(int param_1_00,undefined4 param_1)

{
  FUN_008086d0(param_1,param_1_00 + 0x80);
  return;
}



undefined4 __thiscall FUN_00808660(undefined4 param_1_00,byte param_1)

{
  FUN_00808680(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00808680(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28958;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00807bd0(param_1 + 2);
  *param_1 = boost::xpressive::detail::
             matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
             ::vftable;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008086d0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined **local_20;
  undefined4 local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c2af08;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_20 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_1c = param_2;
  local_c = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)&local_20);
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_00808740(int param_1)

{
  FUN_00808760(*(undefined4 *)(param_1 + 4));
  return;
}



undefined4 FUN_00808760(char *param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *unaff_ESI;
  
  iVar1 = *unaff_ESI;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != unaff_ESI[6])))) {
    FUN_00a3fb10();
  }
  if (unaff_ESI[1] == unaff_ESI[7]) {
    *(undefined *)((int)unaff_ESI + 0x29) = 1;
    return 0;
  }
  if (*unaff_ESI != -4) {
    if (*unaff_ESI == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *unaff_ESI;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar3) <= (uint)unaff_ESI[1]) {
      FUN_00a3fb10();
    }
  }
  if (*(char *)unaff_ESI[1] == *param_1) {
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)unaff_ESI);
    cVar2 = FUN_008087f0();
    if (cVar2 != '\0') {
      return 1;
    }
    FUN_00429850();
  }
  return 0;
}



undefined4 __fastcall FUN_008087f0(int param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *in_EAX;
  
  uVar2 = *(undefined4 *)(in_EAX[2] + 0x1c + *param_2 * 0x24);
  iVar1 = in_EAX[2] + *param_2 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x18);
  *(undefined4 *)(iVar1 + 0x18) = *in_EAX;
  *(undefined4 *)(iVar1 + 0x1c) = in_EAX[1];
  cVar4 = FUN_00808840(in_EAX,param_1 + 0x78);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x18) = uVar3;
  *(undefined4 *)(iVar1 + 0x1c) = uVar2;
  return 0;
}



void __thiscall FUN_00808840(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void FUN_008088a0(void)

{
  FUN_008088c0();
  return;
}



undefined4 __fastcall FUN_008088c0(int param_1,int *param_2)

{
  undefined4 *puVar1;
  undefined uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  char cVar7;
  undefined4 *in_EAX;
  
  uVar3 = *(undefined4 *)(in_EAX[2] + 4 + *param_2 * 0x24);
  puVar1 = (undefined4 *)(in_EAX[2] + *param_2 * 0x24);
  uVar4 = puVar1[2];
  uVar5 = puVar1[3];
  uVar2 = *(undefined *)(puVar1 + 4);
  uVar6 = *puVar1;
  *puVar1 = puVar1[6];
  puVar1[1] = puVar1[7];
  puVar1[2] = *in_EAX;
  puVar1[3] = in_EAX[1];
  *(undefined *)(puVar1 + 4) = 1;
  cVar7 = FUN_005ee9f0(in_EAX,param_1 + 0x78);
  if (cVar7 != '\0') {
    return 1;
  }
  *puVar1 = uVar6;
  puVar1[1] = uVar3;
  puVar1[2] = uVar4;
  puVar1[3] = uVar5;
  *(undefined *)(puVar1 + 4) = uVar2;
  return 0;
}



undefined4
FUN_00808950(undefined4 param_1,undefined4 param_2,undefined4 *param_3,undefined4 *param_4,
            undefined4 *param_5)

{
  void *pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1108c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 3;
  pvVar1 = operator_new(0x18);
  local_4._0_1_ = 4;
  if (pvVar1 != (void *)0x0) {
    param_5 = (undefined4 *)0x0;
    param_4 = (undefined4 *)0x0;
    param_3 = (undefined4 *)0x0;
    FUN_00b5c900(pvVar1);
  }
  local_4._0_1_ = 3;
  FUN_00808a50();
  local_4._0_1_ = 2;
  if (param_3 != (undefined4 *)0x0) {
    (**(code **)*param_3)();
  }
  local_4._0_1_ = 1;
  if (param_4 != (undefined4 *)0x0) {
    (**(code **)*param_4)();
  }
  local_4 = (uint)local_4._1_3_ << 8;
  if (param_5 != (undefined4 *)0x0) {
    (**(code **)*param_5)();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_00808a50(undefined4 param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1224b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = param_1_00;
  param_1[1] = 0;
  local_4 = 0;
  FUN_00808b70(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_00808ab0(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_00808c70(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_00808b10(void)

{
  undefined4 uVar1;
  int iVar2;
  int *piVar3;
  undefined4 *in_EAX;
  undefined4 *unaff_EDI;
  undefined4 local_c [3];
  
  uVar1 = *in_EAX;
  iVar2 = in_EAX[1];
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  if (local_c != unaff_EDI) {
    *unaff_EDI = uVar1;
  }
  piVar3 = (int *)unaff_EDI[1];
  unaff_EDI[1] = iVar2;
  if (piVar3 != (int *)0x0) {
    LOCK();
    iVar2 = piVar3[1] + -1;
    piVar3[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar3 + 4))();
      LOCK();
      iVar2 = piVar3[2] + -1;
      piVar3[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar3 + 8))();
      }
    }
  }
  return;
}



void __thiscall FUN_00808b70(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  
  puVar3 = (undefined4 *)FUN_00808bd0(unaff_EDI);
  uVar1 = *in_EAX;
  *in_EAX = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1);
  return;
}



undefined4 * __thiscall FUN_00808bd0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00c07310;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W3BA3362A::W23C10D7C>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_00808c49(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00808c70(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_00808d80();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00808d80(undefined4 *param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_69c [108];
  undefined4 uStack_630;
  undefined4 **ppuStack_62c;
  undefined auStack_610 [4];
  undefined4 *local_60c [2];
  undefined *local_604;
  undefined local_600 [992];
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3cae3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_610;
  ExceptionList = &local_c;
  local_604 = auStack_69c;
  local_60c[0] = param_1;
  FUN_005da3d0(auStack_69c);
  FUN_005da5d0();
  ppuStack_62c = (undefined4 **)0x808df6;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_62c = (undefined4 **)0x808e15;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_62c = (undefined4 **)0x808e57;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_62c = (undefined4 **)0x808e88;
  FUN_005dde60();
  ppuStack_62c = (undefined4 **)local_600;
  local_4 = 0;
  uStack_630 = 0x808eab;
  FUN_00809180();
  local_4._0_1_ = 1;
  ppuStack_62c = (undefined4 **)0x808ebd;
  FUN_0080a730();
  local_4._0_1_ = 3;
  ppuStack_62c = (undefined4 **)0x808ed2;
  FUN_00808f70();
  uStack_630 = 0x808ee5;
  ppuStack_62c = local_60c;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_60c[0] != (undefined4 *)0x0) {
    piVar4 = local_60c[0] + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_60c[0] != (undefined4 *)0x0)) {
      ppuStack_62c = (undefined4 **)0x808f27;
      (**(code **)*local_60c[0])();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00808f70(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00808fe0(param_1 + 0x7c);
  local_4 = 0xffffffff;
  FUN_005da4f0(param_1);
  ExceptionList = local_c;
  return;
}



void FUN_00808fd0(void)

{
  int in_EAX;
  
  FUN_00808fe0(in_EAX + 4);
  return;
}



void FUN_00808fe0(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005e5d70(param_1 + 0x7c);
  local_4 = 0xffffffff;
  FUN_005da4f0(param_1);
  ExceptionList = local_c;
  return;
}



void FUN_00809040(void)

{
  int in_EAX;
  
  FUN_00809050(in_EAX + 4);
  return;
}



void FUN_00809050(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008090b0(param_1 + 0x7c);
  local_4 = 0xffffffff;
  FUN_005da4f0(param_1);
  ExceptionList = local_c;
  return;
}



void FUN_008090b0(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00809120(param_1 + 0x7c);
  local_4 = 0xffffffff;
  FUN_005da4f0(param_1);
  ExceptionList = local_c;
  return;
}



void FUN_00809110(void)

{
  int in_EAX;
  
  FUN_00809120(in_EAX + 4);
  return;
}



void FUN_00809120(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00807c50(param_1 + 0x7c);
  local_4 = 0xffffffff;
  FUN_005da4f0(param_1);
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00809180(undefined4 *param_1_00,undefined4 param_1,undefined *param_2)

{
  undefined local_95;
  undefined4 local_94;
  undefined local_90 [132];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c3ca9b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_94 = 0;
  local_95 = *param_2;
  FUN_005ec5e0(local_90,param_1_00[1],&local_95);
  local_4 = 1;
  FUN_00809480(param_1,*param_1_00);
  local_94 = 1;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_90);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00809240(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1_00 + 0x78);
  FUN_008092a0(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_008092a0(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1_00 + 0x78);
  FUN_00809300(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00809300(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined *)(param_1 + 0x78) = *(undefined *)(param_1_00 + 0x78);
  FUN_00809360(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00809360(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1_00 + 0x78);
  FUN_008093c0(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_008093c0(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1_00 + 0x78);
  FUN_00809420(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00809420(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(param_1_00 + 0x78);
  FUN_00807de0(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall
FUN_00809480(undefined4 param_1_00,int param_2_00,undefined4 param_1,int param_2)

{
  undefined local_190 [120];
  undefined local_118;
  undefined local_110 [4];
  undefined local_10c [256];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3ca46;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005da440(local_190);
  local_118 = *(undefined *)(param_2_00 + 0x78);
  local_4 = 1;
  FUN_00807f40(local_110,*(undefined4 *)(param_2 + 4),local_190,param_1_00);
  local_4._0_1_ = 2;
  FUN_00809570(param_1,local_110);
  local_4._0_1_ = 1;
  FUN_00807c50(local_10c);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005da4f0(local_190);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00809570(undefined4 *param_1_00,undefined4 param_1)

{
  undefined local_284 [252];
  undefined local_188 [380];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3c9e8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00807de0(local_284);
  local_4 = 1;
  FUN_00809660(local_188,param_1_00[1]);
  local_4._0_1_ = 2;
  FUN_00809700(param_1,*param_1_00);
  local_4._0_1_ = 1;
  FUN_00809120(local_188);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00807c50(local_284);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00809660(undefined4 param_1)

{
  undefined local_84 [120];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c37fcb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff68);
  local_4 = 1;
  FUN_00809950(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_84);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall
FUN_00809700(undefined4 param_1_00,undefined4 param_2_00,undefined4 param_1,int param_2)

{
  undefined local_380 [376];
  undefined local_208 [4];
  undefined local_204 [504];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3c988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00809420(local_380);
  local_4 = 1;
  FUN_008097e0(local_208,*(undefined4 *)(param_2 + 4),local_380,param_2_00);
  local_4._0_1_ = 2;
  FUN_00809870(param_1,local_208);
  local_4._0_1_ = 1;
  FUN_008090b0(local_204);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00809120(local_380);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_008097e0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined local_18 [4];
  int local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c931;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  FUN_0080a2f0(local_18,param_2);
  local_4 = 1;
  FUN_008099b0(param_1,param_4);
  local_4 = local_4 & 0xffffff00;
  if (local_14 != 0) {
    FUN_005da010(uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00809870(undefined4 param_1)

{
  undefined4 unaff_ESI;
  int unaff_EDI;
  undefined local_474 [500];
  undefined local_280 [628];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3c8e8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008093c0(local_474);
  local_4 = 1;
  FUN_00809a90(local_280,*(undefined4 *)(unaff_EDI + 4));
  local_4._0_1_ = 2;
  FUN_00809b30(param_1,unaff_ESI);
  local_4._0_1_ = 1;
  FUN_00809050(local_280);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_008090b0(local_474);
  ExceptionList = local_c;
  return param_1;
}



int FUN_00809950(int param_1)

{
  undefined4 *unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *unaff_EBX;
  FUN_00807de0(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_008099b0(undefined4 param_1,undefined4 param_2)

{
  undefined local_378 [376];
  undefined local_200 [500];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3c889;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00809420(local_378);
  local_4 = 1;
  FUN_00809c10(local_200,param_2);
  local_4._0_1_ = 2;
  FUN_00809ce0(local_200);
  local_4._0_1_ = 1;
  FUN_008090b0(local_200);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00809120(local_378);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00809a90(undefined4 param_1)

{
  undefined local_84 [120];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3a60b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff68);
  local_4 = 1;
  FUN_00809e50(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_84);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00809b30(undefined4 param_1)

{
  undefined local_4f0 [624];
  undefined local_280 [4];
  undefined local_27c [624];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3c828;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00809360(local_4f0);
  local_4 = 1;
  FUN_00809d30(local_4f0);
  local_4._0_1_ = 2;
  FUN_00809d60(param_1,local_280);
  local_4._0_1_ = 1;
  FUN_00809050(local_27c);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00809050(local_4f0);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00809c10(undefined4 param_1)

{
  undefined4 unaff_EDI;
  undefined local_300 [380];
  undefined local_184 [376];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3c7c8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00809420(local_300);
  local_4 = 1;
  FUN_00809eb0(local_300);
  local_4._0_1_ = 2;
  FUN_00809ee0(param_1,unaff_EDI);
  local_4._0_1_ = 1;
  FUN_00809120(local_184);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00809120(local_300);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00809ce0(int *param_1,uint *param_2)

{
  uint uVar1;
  uint *puVar2;
  uint *puVar3;
  uint *unaff_ESI;
  uint local_4;
  
  local_4 = 0;
  uVar1 = *param_2;
  if (0 < (int)uVar1) {
    puVar3 = (uint *)(*param_1 + 0x70);
    local_4 = uVar1;
    puVar2 = &local_4;
    if (uVar1 <= *puVar3) {
      puVar2 = puVar3;
    }
    *puVar3 = *puVar2;
  }
  *unaff_ESI = *param_2;
  FUN_008093c0(unaff_ESI + 1);
  return;
}



void FUN_00809d30(void)

{
  undefined4 *in_EAX;
  undefined *unaff_ESI;
  
  *unaff_ESI = *(undefined *)*in_EAX;
  FUN_00809360(unaff_ESI + 4);
  return;
}



undefined4 FUN_00809d60(undefined4 param_1)

{
  int unaff_EDI;
  undefined local_564 [620];
  undefined local_2f8 [748];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3c768;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00809360(local_564);
  local_4 = 1;
  FUN_00809f80(local_2f8,*(undefined4 *)(unaff_EDI + 4));
  local_4._0_1_ = 2;
  FUN_0080a020(param_1);
  local_4._0_1_ = 1;
  FUN_005e5d70(local_2f8);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00809050(local_564);
  ExceptionList = local_c;
  return param_1;
}



int FUN_00809e50(int param_1)

{
  undefined4 *unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *unaff_EBX;
  FUN_008093c0(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



void FUN_00809eb0(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *in_EAX;
  FUN_00809420(unaff_ESI + 1);
  return;
}



undefined4 FUN_00809ee0(undefined4 param_1)

{
  undefined local_84 [120];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c70b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff68);
  local_4 = 1;
  FUN_0080a290(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_84);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00809f80(undefined4 param_1)

{
  undefined local_84 [120];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c6bb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff68);
  local_4 = 1;
  FUN_0080a230(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_84);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_0080a020(undefined4 param_1_00,undefined4 *param_2,undefined4 param_1)

{
  undefined4 unaff_ESI;
  undefined local_664 [744];
  undefined local_37c [4];
  undefined local_378 [876];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3c668;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00809300(local_664);
  local_4 = 1;
  FUN_0080a100(local_37c,param_2[1],local_664,unaff_ESI);
  local_4._0_1_ = 2;
  FUN_0080a190(param_1,*param_2);
  local_4._0_1_ = 1;
  FUN_00808fe0(local_378);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005e5d70(local_664);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_0080a100(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined local_18 [4];
  int local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c611;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  FUN_0080a2f0(local_18,param_2);
  local_4 = 1;
  FUN_0080a3a0(param_1,param_4);
  local_4 = local_4 & 0xffffff00;
  if (local_14 != 0) {
    FUN_005da010(uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_0080a190(undefined4 param_1)

{
  undefined local_84 [120];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c5cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff68);
  local_4 = 1;
  FUN_0080a480(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_84);
  ExceptionList = local_c;
  return param_1;
}



int FUN_0080a230(int param_1)

{
  undefined *unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined *)(param_1 + 0x78) = *unaff_EBX;
  FUN_00809360(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



int FUN_0080a290(int param_1)

{
  undefined4 *unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *unaff_EBX;
  FUN_00809420(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_0080a2f0(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  uint uVar2;
  int local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c37f81;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  uVar1 = *(undefined4 *)*param_2;
  FUN_005e4c30(&local_14,param_2[1]);
  local_4 = 1;
  *param_1 = uVar1;
  local_10 = uVar1;
  FUN_005e4c30(param_1 + 1,&local_14);
  param_1[2] = local_10;
  local_4 = local_4 & 0xffffff00;
  if (local_14 != 0) {
    FUN_005da010(uVar2);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_0080a3a0(undefined4 param_1,undefined4 param_2)

{
  undefined local_660 [744];
  undefined local_378 [876];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3c579;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00809300(local_660);
  local_4 = 1;
  FUN_0080a4e0(local_378,param_2);
  local_4._0_1_ = 2;
  FUN_0080a5b0(local_378);
  local_4._0_1_ = 1;
  FUN_00808fe0(local_378);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005e5d70(local_660);
  ExceptionList = local_c;
  return param_1;
}



int FUN_0080a480(int param_1)

{
  undefined4 *unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *unaff_EBX;
  FUN_008092a0(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_0080a4e0(undefined4 param_1)

{
  undefined4 unaff_EDI;
  undefined local_5e8 [748];
  undefined local_2fc [752];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c3c518;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00809300(local_5e8);
  local_4 = 1;
  FUN_0080a600(local_5e8);
  local_4._0_1_ = 2;
  FUN_0080a630(param_1,unaff_EDI);
  local_4._0_1_ = 1;
  FUN_005e5d70(local_2fc);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_005e5d70(local_5e8);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_0080a5b0(int *param_1,uint *param_2)

{
  uint uVar1;
  uint *puVar2;
  uint *puVar3;
  uint *unaff_ESI;
  uint local_4;
  
  local_4 = 0;
  uVar1 = *param_2;
  if (0 < (int)uVar1) {
    puVar3 = (uint *)(*param_1 + 0x70);
    local_4 = uVar1;
    puVar2 = &local_4;
    if (uVar1 <= *puVar3) {
      puVar2 = puVar3;
    }
    *puVar3 = *puVar2;
  }
  *unaff_ESI = *param_2;
  FUN_008092a0(unaff_ESI + 1);
  return;
}



void FUN_0080a600(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *in_EAX;
  FUN_00809300(unaff_ESI + 1);
  return;
}



undefined4 FUN_0080a630(undefined4 param_1)

{
  undefined local_84 [120];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c4bb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff68);
  local_4 = 1;
  FUN_0080a6d0(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_84);
  ExceptionList = local_c;
  return param_1;
}



int FUN_0080a6d0(int param_1)

{
  undefined4 *unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d678;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005da440(param_1);
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x78) = *unaff_EBX;
  FUN_00809300(param_1 + 0x7c);
  ExceptionList = local_c;
  return param_1;
}



void FUN_0080a730(void)

{
  void *pvVar1;
  int iVar2;
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(1000);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_0080a7b0(pvVar1);
  }
  *unaff_ESI = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_0080a7b0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33f08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::...lass_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  FUN_00809240(param_1 + 2);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0080a810(int param_1_00,undefined4 param_1)

{
  FUN_0080a8a0(param_1,param_1_00 + 0x80);
  return;
}



undefined4 __thiscall FUN_0080a830(undefined4 param_1_00,byte param_1)

{
  FUN_0080a850(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0080a850(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28958;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00808f70(param_1 + 2);
  *param_1 = boost::xpressive::detail::
             matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
             ::vftable;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0080a8a0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined **local_20;
  undefined4 local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c2af08;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_20 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::ch...lass_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_1c = param_2;
  local_c = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)&local_20);
  ExceptionList = local_14;
  return;
}



void FUN_0080a910(void)

{
  FUN_0080a930();
  return;
}



undefined4 __fastcall FUN_0080a930(int param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *in_EAX;
  
  uVar2 = *(undefined4 *)(in_EAX[2] + 0x1c + *param_2 * 0x24);
  iVar1 = in_EAX[2] + *param_2 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x18);
  *(undefined4 *)(iVar1 + 0x18) = *in_EAX;
  *(undefined4 *)(iVar1 + 0x1c) = in_EAX[1];
  cVar4 = FUN_0080a980(in_EAX,param_1 + 0x78);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x18) = uVar3;
  *(undefined4 *)(iVar1 + 0x1c) = uVar2;
  return 0;
}



void __thiscall FUN_0080a980(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::ch...lass_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void FUN_0080a9e0(void)

{
  FUN_0080aa00();
  return;
}



undefined4 __fastcall FUN_0080aa00(int param_1,int *param_2)

{
  undefined4 *puVar1;
  undefined uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  char cVar7;
  undefined4 *in_EAX;
  
  uVar3 = *(undefined4 *)(in_EAX[2] + 4 + *param_2 * 0x24);
  puVar1 = (undefined4 *)(in_EAX[2] + *param_2 * 0x24);
  uVar4 = puVar1[2];
  uVar5 = puVar1[3];
  uVar2 = *(undefined *)(puVar1 + 4);
  uVar6 = *puVar1;
  *puVar1 = puVar1[6];
  puVar1[1] = puVar1[7];
  puVar1[2] = *in_EAX;
  puVar1[3] = in_EAX[1];
  *(undefined *)(puVar1 + 4) = 1;
  cVar7 = FUN_0080aa90(in_EAX,param_1 + 0x78);
  if (cVar7 != '\0') {
    return 1;
  }
  *puVar1 = uVar6;
  puVar1[1] = uVar3;
  puVar1[2] = uVar4;
  puVar1[3] = uVar5;
  *(undefined *)(puVar1 + 4) = uVar2;
  return 0;
}



void __thiscall FUN_0080aa90(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>_>_>_>_>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0080aaf0(int param_1)

{
  FUN_0080ab10(*(undefined4 *)(param_1 + 4));
  return;
}



undefined4 FUN_0080ab10(char *param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *unaff_ESI;
  int unaff_EDI;
  
  iVar1 = *unaff_ESI;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != unaff_ESI[6])))) {
    FUN_00a3fb10();
  }
  if (unaff_ESI[1] == unaff_ESI[7]) {
    *(undefined *)((int)unaff_ESI + 0x29) = 1;
    return 0;
  }
  if (*unaff_ESI != -4) {
    if (*unaff_ESI == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *unaff_ESI;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar3) <= (uint)unaff_ESI[1]) {
      FUN_00a3fb10();
    }
  }
  if (*(char *)unaff_ESI[1] == *param_1) {
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)unaff_ESI);
    cVar2 = FUN_0080aba0(unaff_ESI,unaff_EDI + 0x78);
    if (cVar2 != '\0') {
      return 1;
    }
    FUN_00429850();
  }
  return 0;
}



void __thiscall FUN_0080aba0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined **local_20;
  undefined4 local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c2af08;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_20 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>_>_>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_1c = param_2;
  local_c = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)&local_20);
  ExceptionList = local_14;
  return;
}



void FUN_0080ac10(void)

{
  FUN_0080ac30();
  return;
}



undefined4 __fastcall FUN_0080ac30(int param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *in_EAX;
  
  uVar2 = *(undefined4 *)(in_EAX[2] + 0x1c + *param_2 * 0x24);
  iVar1 = in_EAX[2] + *param_2 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x18);
  *(undefined4 *)(iVar1 + 0x18) = *in_EAX;
  *(undefined4 *)(iVar1 + 0x1c) = in_EAX[1];
  cVar4 = FUN_0080ac80(in_EAX,param_1 + 0x78);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x18) = uVar3;
  *(undefined4 *)(iVar1 + 0x1c) = uVar2;
  return 0;
}



void __thiscall FUN_0080ac80(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void FUN_0080ace0(void)

{
  FUN_0080ad00();
  return;
}



undefined4 __fastcall FUN_0080ad00(int param_1,int *param_2)

{
  undefined4 *puVar1;
  undefined uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  char cVar7;
  undefined4 *in_EAX;
  
  uVar3 = *(undefined4 *)(in_EAX[2] + 4 + *param_2 * 0x24);
  puVar1 = (undefined4 *)(in_EAX[2] + *param_2 * 0x24);
  uVar4 = puVar1[2];
  uVar5 = puVar1[3];
  uVar2 = *(undefined *)(puVar1 + 4);
  uVar6 = *puVar1;
  *puVar1 = puVar1[6];
  puVar1[1] = puVar1[7];
  puVar1[2] = *in_EAX;
  puVar1[3] = in_EAX[1];
  *(undefined *)(puVar1 + 4) = 1;
  cVar7 = FUN_0080ad90(in_EAX,param_1 + 0x78);
  if (cVar7 != '\0') {
    return 1;
  }
  *puVar1 = uVar6;
  puVar1[1] = uVar3;
  puVar1[2] = uVar4;
  puVar1[3] = uVar5;
  *(undefined *)(puVar1 + 4) = uVar2;
  return 0;
}



void __thiscall FUN_0080ad90(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void FUN_0080adf0(void)

{
  FUN_008087f0();
  return;
}



void __fastcall FUN_0080ae10(undefined4 *param_1)

{
  *param_1 = W6A4CD2C5::W6C89CAE2::vftable;
  return;
}



undefined4 __thiscall FUN_0080ae20(undefined4 param_1_00,byte param_1)

{
  FUN_00b5c830();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_0080ae40(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_0080afc0(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_0080aea0(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_0080b0d0(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_0080af00(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_0080b1e0(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_0080af60(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_0080b2f0(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_0080afc0(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_0080b400();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0080b0d0(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_0080b5d0();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0080b1e0(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_0080b7c0();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0080b2f0(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_0080b9b0();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0080b400(undefined4 param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_2dc [108];
  undefined4 uStack_270;
  undefined4 **ppuStack_26c;
  undefined auStack_250 [4];
  undefined4 *local_24c [2];
  undefined *local_244;
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c324f6;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_250;
  ExceptionList = &local_c;
  local_244 = auStack_2dc;
  FUN_005da3d0(auStack_2dc);
  FUN_005da5d0();
  ppuStack_26c = (undefined4 **)0x80b46f;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_26c = (undefined4 **)0x80b48e;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_26c = (undefined4 **)0x80b4d4;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_26c = (undefined4 **)0x80b4fc;
  FUN_005dde60();
  local_4 = 0;
  ppuStack_26c = (undefined4 **)0x80b520;
  FUN_0080bbd0();
  ppuStack_26c = (undefined4 **)0x80b52a;
  FUN_0080c670();
  local_4._0_1_ = 1;
  uStack_270 = 0x80b545;
  ppuStack_26c = local_24c;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_24c[0] != (undefined4 *)0x0) {
    piVar4 = local_24c[0] + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_24c[0] != (undefined4 *)0x0)) {
      ppuStack_26c = (undefined4 **)0x80b58a;
      (**(code **)*local_24c[0])();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0080b5d0(undefined4 *param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_35c [104];
  undefined4 uStack_2f4;
  undefined *puStack_2f0;
  undefined4 **ppuStack_2ec;
  undefined auStack_2d0 [4];
  undefined4 *local_2cc [2];
  undefined *local_2c4;
  undefined local_2c0 [160];
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c324b1;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_2d0;
  ExceptionList = &local_c;
  local_2c4 = auStack_35c;
  local_2cc[0] = param_1;
  FUN_005da3d0(auStack_35c);
  FUN_005da5d0();
  ppuStack_2ec = (undefined4 **)0x80b646;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_2ec = (undefined4 **)0x80b665;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_2ec = (undefined4 **)0x80b6a7;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_2ec = (undefined4 **)0x80b6d8;
  FUN_005dde60();
  local_4 = 0;
  ppuStack_2ec = (undefined4 **)local_2cc[0];
  puStack_2f0 = local_2c0;
  uStack_2f4 = 0x80b6fe;
  FUN_0080bc40();
  local_4._0_1_ = 1;
  FUN_0080c6c0();
  local_4._0_1_ = 3;
  ppuStack_2ec = (undefined4 **)0x80b723;
  FUN_005da4f0();
  puStack_2f0 = (undefined *)0x80b736;
  ppuStack_2ec = local_2cc;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_2cc[0] != (undefined4 *)0x0) {
    piVar4 = local_2cc[0] + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_2cc[0] != (undefined4 *)0x0)) {
      ppuStack_2ec = (undefined4 **)0x80b779;
      (**(code **)*local_2cc[0])();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0080b7c0(undefined4 *param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_374 [104];
  undefined4 uStack_30c;
  undefined *puStack_308;
  undefined4 **ppuStack_304;
  undefined auStack_2e8 [4];
  undefined4 *local_2e4;
  undefined local_2dd;
  undefined *local_2dc;
  undefined local_2d8 [184];
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c32461;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_2e8;
  ExceptionList = &local_c;
  local_2dc = auStack_374;
  local_2e4 = param_1;
  FUN_005da3d0(auStack_374);
  FUN_005da5d0();
  ppuStack_304 = (undefined4 **)0x80b836;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_304 = (undefined4 **)0x80b855;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_304 = (undefined4 **)0x80b897;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_304 = (undefined4 **)0x80b8c8;
  FUN_005dde60();
  ppuStack_304 = (undefined4 **)&local_2dd;
  puStack_308 = local_2d8;
  local_4 = 0;
  uStack_30c = 0x80b8ec;
  FUN_0080bcf0();
  local_4._0_1_ = 1;
  FUN_0080c740();
  local_4._0_1_ = 3;
  ppuStack_304 = (undefined4 **)0x80b911;
  FUN_005da4f0();
  puStack_308 = (undefined *)0x80b924;
  ppuStack_304 = &local_2e4;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_2e4 != (undefined4 *)0x0) {
    piVar4 = local_2e4 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_2e4 != (undefined4 *)0x0)) {
      ppuStack_304 = (undefined4 **)0x80b966;
      (**(code **)*local_2e4)();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0080b9b0(undefined4 *param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_354 [108];
  undefined4 uStack_2e8;
  undefined4 **ppuStack_2e4;
  undefined auStack_2c8 [4];
  undefined4 *local_2c4 [2];
  undefined *local_2bc;
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c32411;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_2c8;
  ExceptionList = &local_c;
  local_2bc = auStack_354;
  local_2c4[0] = param_1;
  FUN_005da3d0(auStack_354);
  FUN_005da5d0();
  ppuStack_2e4 = (undefined4 **)0x80ba26;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_2e4 = (undefined4 **)0x80ba45;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_2e4 = (undefined4 **)0x80ba87;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_2e4 = (undefined4 **)0x80bab8;
  FUN_005dde60();
  local_4 = 0;
  ppuStack_2e4 = (undefined4 **)0x80bada;
  FUN_0080bd90();
  local_4._0_1_ = 1;
  ppuStack_2e4 = (undefined4 **)0x80baec;
  FUN_0080c7c0();
  local_4._0_1_ = 3;
  ppuStack_2e4 = (undefined4 **)0x80bb01;
  FUN_005da4f0();
  uStack_2e8 = 0x80bb14;
  ppuStack_2e4 = local_2c4;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_2c4[0] != (undefined4 *)0x0) {
    piVar4 = local_2c4[0] + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_2c4[0] != (undefined4 *)0x0)) {
      ppuStack_2e4 = (undefined4 **)0x80bb56;
      (**(code **)*local_2c4[0])();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0080bba0(void)

{
  int in_EAX;
  
  FUN_005da4f0(in_EAX + 8);
  return;
}



void FUN_0080bbb0(void)

{
  undefined4 in_EAX;
  
  FUN_005da4f0(in_EAX);
  return;
}



void FUN_0080bbc0(void)

{
  int in_EAX;
  
  FUN_005da4f0(in_EAX + 4);
  return;
}



undefined4 FUN_0080bbd0(undefined4 param_1)

{
  undefined uVar1;
  undefined *in_EAX;
  undefined4 unaff_ESI;
  undefined local_1c [24];
  undefined local_4;
  
  uVar1 = *in_EAX;
  FUN_0080c1b0();
  local_4 = uVar1;
  FUN_0080bdf0(param_1,local_1c,unaff_ESI);
  return param_1;
}



int FUN_0080bc40(int param_1,undefined4 param_2,undefined *param_3)

{
  uint uVar1;
  int iVar2;
  undefined local_a8 [8];
  undefined local_a0 [148];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c323ca;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff4c;
  ExceptionList = &local_c;
  iVar2 = FUN_0080be50(local_a8,param_2);
  local_4 = 1;
  FUN_0080bff0(uVar1);
  *(undefined *)(param_1 + 0x98) = *(undefined *)(iVar2 + 0x98);
  *(undefined *)(param_1 + 0x9c) = *param_3;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_a0);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_0080bcf0(undefined4 param_1_00,int param_1,undefined *param_2,undefined4 param_3)

{
  uint uVar1;
  undefined local_c0 [180];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3237a;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff34;
  ExceptionList = &local_c;
  FUN_0080bef0(local_c0,param_1_00,param_3);
  local_4 = 1;
  FUN_0080bf90(uVar1);
  *(undefined *)(param_1 + 0xb4) = *param_2;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_c0);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_0080bd90(undefined4 param_1_00,int *param_2,undefined4 param_1)

{
  int *piVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 unaff_ESI;
  int local_20;
  int local_1c;
  undefined4 local_18;
  int local_14;
  int local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_18 = *in_EAX;
  iVar2 = *param_2;
  piVar1 = (int *)(iVar2 + 0x74);
  *piVar1 = *piVar1 + 1;
  local_20 = -*(int *)(iVar2 + 0x74);
  local_c = 2;
  local_8 = 2;
  local_4 = 0;
  local_1c = local_20;
  local_14 = local_20;
  local_10 = local_20;
  FUN_0080c210(unaff_ESI,&local_20,param_1);
  return;
}



undefined4 * FUN_0080bdf0(undefined4 *param_1,undefined4 *param_2,int param_3)

{
  char cVar1;
  undefined4 *puVar2;
  undefined2 uVar3;
  char **in_EAX;
  char *pcVar4;
  int iVar5;
  undefined4 *puVar6;
  
  puVar2 = param_1;
  pcVar4 = *in_EAX;
  do {
    cVar1 = *pcVar4;
    pcVar4 = pcVar4 + 1;
  } while (cVar1 != '\0');
  param_1 = (undefined4 *)CONCAT31(param_1._1_3_,*(undefined *)(in_EAX + 1));
  uVar3 = FUN_005ede50(param_3 + 8);
  param_1 = (undefined4 *)CONCAT22(uVar3,param_1._0_2_);
  *puVar2 = param_1;
  puVar6 = puVar2;
  for (iVar5 = 7; puVar6 = puVar6 + 1, iVar5 != 0; iVar5 = iVar5 + -1) {
    *puVar6 = *param_2;
    param_2 = param_2 + 1;
  }
  return puVar2;
}



int FUN_0080be50(int param_1)

{
  uint uVar1;
  undefined local_a9;
  undefined4 local_a8;
  undefined local_9c [144];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3232a;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff48;
  ExceptionList = &local_c;
  local_a8 = 0;
  FUN_0080c040(&local_a9);
  local_4 = 1;
  FUN_0080bff0(uVar1);
  *(undefined *)(param_1 + 0x98) = 0;
  local_a8 = 1;
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_9c);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_0080bef0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined local_a0 [148];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c322da;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff54;
  ExceptionList = &local_c;
  FUN_0080c0b0(param_3);
  local_4 = 1;
  FUN_0080c100(uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_a0);
  ExceptionList = local_c;
  return param_1;
}



void FUN_0080bf90(void)

{
  int in_EAX;
  int iVar1;
  int unaff_EBX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  FUN_005da440(unaff_EBX);
  *(undefined4 *)(unaff_EBX + 0x78) = *(undefined4 *)(in_EAX + 0x78);
  *(undefined4 *)(unaff_EBX + 0x7c) = *(undefined4 *)(in_EAX + 0x7c);
  *(undefined4 *)(unaff_EBX + 0x80) = *(undefined4 *)(in_EAX + 0x80);
  *(undefined4 *)(unaff_EBX + 0x84) = *(undefined4 *)(in_EAX + 0x84);
  *(undefined4 *)(unaff_EBX + 0x88) = *(undefined4 *)(in_EAX + 0x88);
  puVar2 = (undefined4 *)(in_EAX + 0x90);
  puVar3 = (undefined4 *)(unaff_EBX + 0x90);
  for (iVar1 = 9; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar3 = *puVar2;
    puVar2 = puVar2 + 1;
    puVar3 = puVar3 + 1;
  }
  return;
}



void FUN_0080bff0(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *in_EAX;
  unaff_ESI[1] = in_EAX[1];
  FUN_005da440(unaff_ESI + 2);
  unaff_ESI[0x20] = in_EAX[0x20];
  unaff_ESI[0x21] = in_EAX[0x21];
  unaff_ESI[0x22] = in_EAX[0x22];
  unaff_ESI[0x23] = in_EAX[0x23];
  unaff_ESI[0x24] = in_EAX[0x24];
  unaff_ESI[0x25] = in_EAX[0x25];
  return;
}



void __fastcall FUN_0080c040(undefined4 param_1_00,int *param_2,undefined4 param_1)

{
  int *piVar1;
  int iVar2;
  undefined4 *in_EAX;
  undefined4 unaff_ESI;
  int local_20;
  int local_1c;
  undefined4 local_18;
  int local_14;
  int local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_18 = *in_EAX;
  iVar2 = *param_2;
  piVar1 = (int *)(iVar2 + 0x74);
  *piVar1 = *piVar1 + 1;
  local_20 = -*(int *)(iVar2 + 0x74);
  local_c = 1;
  local_8 = 0xfffffffe;
  local_4 = 0;
  local_1c = local_20;
  local_14 = local_20;
  local_10 = local_20;
  FUN_0080c210(unaff_ESI,&local_20,param_1);
  return;
}



undefined4 __fastcall FUN_0080c0b0(undefined4 param_1)

{
  FUN_0080c2d0();
  return param_1;
}



void FUN_0080c100(void)

{
  int in_EAX;
  int iVar1;
  int unaff_ESI;
  
  FUN_005da440(unaff_ESI);
  *(undefined4 *)(unaff_ESI + 0x78) = *(undefined4 *)(in_EAX + 0x78);
  *(undefined4 *)(unaff_ESI + 0x7c) = *(undefined4 *)(in_EAX + 0x7c);
  *(undefined4 *)(unaff_ESI + 0x80) = *(undefined4 *)(in_EAX + 0x80);
  *(undefined4 *)(unaff_ESI + 0x84) = *(undefined4 *)(in_EAX + 0x84);
  *(undefined4 *)(unaff_ESI + 0x88) = *(undefined4 *)(in_EAX + 0x88);
  *(undefined *)(unaff_ESI + 0x90) = 0;
  iVar1 = 7;
  do {
    iVar1 = iVar1 + -1;
    *(undefined4 *)(unaff_ESI + 0x98 + iVar1 * 4) = 0;
  } while (-1 < iVar1);
  return;
}



void __fastcall FUN_0080c160(undefined4 *param_1)

{
  undefined4 *in_EAX;
  undefined4 *unaff_ESI;
  
  *unaff_ESI = *param_1;
  unaff_ESI[1] = *in_EAX;
  FUN_005da440(unaff_ESI + 2);
  unaff_ESI[0x20] = in_EAX[0x1f];
  unaff_ESI[0x21] = in_EAX[0x20];
  unaff_ESI[0x22] = in_EAX[0x21];
  unaff_ESI[0x23] = in_EAX[0x22];
  unaff_ESI[0x24] = in_EAX[0x23];
  unaff_ESI[0x25] = in_EAX[0x24];
  return;
}



void FUN_0080c1b0(void)

{
  undefined4 in_EAX;
  undefined4 *unaff_EBX;
  undefined local_21;
  undefined4 local_20;
  undefined2 local_1c;
  undefined4 local_14;
  uint local_4;
  
  FUN_005ed570(&local_21,in_EAX);
  *unaff_EBX = local_20;
  local_14 = CONCAT22(local_14._2_2_,local_1c);
  unaff_EBX[1] = local_14;
  unaff_EBX[2] = 0;
  local_4 = local_4 & 0xffffff00;
  unaff_EBX[3] = 7;
  unaff_EBX[4] = 1;
  unaff_EBX[5] = local_4;
  return;
}



undefined4 FUN_0080c210(undefined4 param_1)

{
  undefined local_a4 [152];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c3228a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0080c2f0(DAT_0323f878 ^ (uint)&stack0xffffff3c);
  local_4 = 1;
  FUN_0080c160();
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_a4);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_0080c2d0(undefined4 param_1,undefined4 param_2)

{
  undefined4 in_EAX;
  undefined4 unaff_ESI;
  
  FUN_0080c330(unaff_ESI,param_2,param_1,in_EAX);
  return;
}



void __fastcall FUN_0080c2f0(undefined *param_1)

{
  int in_EAX;
  undefined4 unaff_ESI;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined local_4;
  
  local_14 = *(undefined4 *)(in_EAX + 0xc);
  local_4 = *param_1;
  local_10 = *(undefined4 *)(in_EAX + 0x10);
  local_c = *(undefined4 *)(in_EAX + 0x14);
  local_8 = *(undefined4 *)(in_EAX + 0x18);
  FUN_0080c410(unaff_ESI,in_EAX,&local_14);
  return;
}



int FUN_0080c330(int param_1,undefined4 param_2,undefined4 *param_3)

{
  int iVar1;
  undefined local_8c [128];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3223a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = FUN_005de980(local_8c,param_2);
  local_4 = 1;
  FUN_005da440(param_1);
  *(undefined4 *)(param_1 + 0x78) = *(undefined4 *)(iVar1 + 0x78);
  *(undefined4 *)(param_1 + 0x7c) = *(undefined4 *)(iVar1 + 0x7c);
  *(undefined4 *)(param_1 + 0x80) = *param_3;
  *(undefined4 *)(param_1 + 0x84) = param_3[1];
  *(undefined4 *)(param_1 + 0x88) = param_3[2];
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_8c);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_0080c410(undefined4 param_1)

{
  undefined4 unaff_EDI;
  undefined local_a4 [152];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00c321ea;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0080c4e0(unaff_EDI);
  local_4 = 1;
  FUN_0080c530(local_a4);
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_a4);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_0080c4e0(undefined4 *param_1)

{
  undefined4 unaff_ESI;
  
  FUN_0080c5a0(unaff_ESI,*param_1);
  return;
}



void __fastcall FUN_0080c530(int *param_1_00,uint *param_2,uint param_1)

{
  uint uVar1;
  uint uVar2;
  uint *puVar3;
  uint *puVar4;
  uint *unaff_EBX;
  
  uVar2 = param_1;
  param_1 = 0;
  uVar1 = *param_2;
  if (0 < (int)uVar1) {
    puVar4 = (uint *)(*param_1_00 + 0x70);
    param_1 = uVar1;
    puVar3 = &param_1;
    if (uVar1 <= *puVar4) {
      puVar3 = puVar4;
    }
    *puVar4 = *puVar3;
  }
  *unaff_EBX = *param_2;
  FUN_005da440(unaff_EBX + 1);
  unaff_EBX[0x1f] = *(uint *)(uVar2 + 0x78);
  unaff_EBX[0x20] = *(uint *)(uVar2 + 0x7c);
  unaff_EBX[0x21] = *(uint *)(uVar2 + 0x80);
  unaff_EBX[0x22] = *(uint *)(uVar2 + 0x84);
  unaff_EBX[0x23] = *(uint *)(uVar2 + 0x88);
  unaff_EBX[0x24] = *(uint *)(uVar2 + 0x8c);
  return;
}



int FUN_0080c5a0(int param_1)

{
  undefined4 *unaff_EBX;
  undefined local_84 [120];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3219a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_005e6c60(DAT_0323f878 ^ (uint)&stack0xffffff68);
  local_4 = 1;
  FUN_005da440(param_1);
  *(undefined4 *)(param_1 + 0x78) = *unaff_EBX;
  *(undefined4 *)(param_1 + 0x7c) = unaff_EBX[1];
  *(undefined4 *)(param_1 + 0x80) = unaff_EBX[2];
  *(undefined4 *)(param_1 + 0x84) = unaff_EBX[3];
  *(undefined4 *)(param_1 + 0x88) = unaff_EBX[4];
  *(undefined4 *)(param_1 + 0x8c) = unaff_EBX[5];
  local_4 = local_4 & 0xffffff00;
  FUN_005da4f0(local_84);
  ExceptionList = local_c;
  return param_1;
}



void FUN_0080c670(undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *unaff_EBX;
  undefined4 *puVar3;
  
  puVar1 = (undefined4 *)operator_new(0x28);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    *puVar1 = boost::xpressive::detail::
              xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::posix_charset_matcher<struct_boost::xpressive::cpp_regex_traits<char>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::simple_repeat_matcher<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::posix_charset_matcher<struct_boost::xpressive::cpp_regex_traits<char>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::true_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::mpl::bool_<1>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>,struct_boost::xpressive::detail::matchable_ex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
              ::vftable;
    puVar3 = puVar1 + 2;
    for (iVar2 = 8; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar3 = *param_1;
      param_1 = param_1 + 1;
      puVar3 = puVar3 + 1;
    }
  }
  *unaff_EBX = puVar1;
  if (puVar1 != (undefined4 *)0x0) {
    LOCK();
    puVar1[1] = puVar1[1] + 1;
    UNLOCK();
  }
  return;
}



void FUN_0080c6c0(void)

{
  void *pvVar1;
  int iVar2;
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d2fb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xa8);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_0080c880(pvVar1);
  }
  *unaff_ESI = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return;
}



void FUN_0080c740(void)

{
  void *pvVar1;
  int iVar2;
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d2fb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xc0);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_0080c950(pvVar1);
  }
  *unaff_ESI = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return;
}



void FUN_0080c7c0(undefined4 param_1)

{
  void *pvVar1;
  int iVar2;
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c3c46b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xa0);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_0080ca20(pvVar1,param_1);
  }
  *unaff_ESI = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0080c840(int param_1)

{
  FUN_0080cbe0(param_1 + 0xc);
  return;
}



void FUN_0080c860(undefined4 *param_1)

{
  FUN_005ee500(*param_1);
  return;
}



undefined4 * FUN_0080c880(undefined4 *param_1)

{
  uint uVar1;
  int unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33f08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::keeper_matcher<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::repeat_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::repeat_end_matcher<struct_boost::mpl::bool_<1>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::independent_end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::xpressive::detail::matchable_ex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  FUN_0080bff0(uVar1);
  *(undefined *)(param_1 + 0x28) = *(undefined *)(unaff_EBX + 0x98);
  *(undefined *)(param_1 + 0x29) = *(undefined *)(unaff_EBX + 0x9c);
  ExceptionList = local_c;
  return param_1;
}



void FUN_0080c8f0(void)

{
  FUN_0080cc90();
  return;
}



void __thiscall FUN_0080c900(int param_1_00,int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  int local_4;
  
  local_4 = param_1_00 + 0xc;
  FUN_005e14c0(&local_4);
  puVar1 = (undefined4 *)FUN_005e16f0();
  *(undefined4 *)(param_1_00 + 0x98) = *puVar1;
  if ((*(int *)(param_1 + 0x1c) != 0) &&
     (iVar2 = *(int *)(param_1 + 0x1c) + -1, *(int *)(param_1 + 0x1c) = iVar2, iVar2 == 0)) {
    *(undefined4 *)(param_1 + 0x18) = 0;
  }
  return;
}



undefined4 * FUN_0080c950(undefined4 *param_1)

{
  uint uVar1;
  int unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33f08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::alternate_matcher<struct_boost::xpressive::detail::alternates_list<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::alternate_end_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::xpressive::detail::alternates_list<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::literal_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::alternate_end_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::fusion::nil>_>,struct_boost::xpressive::cpp_regex_traits<char>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::xpressive::detail::matchable_ex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  FUN_0080bf90(uVar1);
  *(undefined *)(param_1 + 0x2f) = *(undefined *)(unaff_EDI + 0xb4);
  ExceptionList = local_c;
  return param_1;
}



void FUN_0080c9c0(void)

{
  FUN_0080ccf0();
  return;
}



void __thiscall FUN_0080c9e0(int param_1_00,undefined4 param_1)

{
  FUN_0080cda0(param_1,param_1_00 + 0xbc);
  return;
}



void __fastcall FUN_0080ca00(int param_1)

{
  FUN_0080ce20(param_1 + 0x98);
  return;
}



undefined4 * FUN_0080ca20(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1ba28;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::repeat_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::repeat_end_matcher<struct_boost::mpl::bool_<1>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>,struct_boost::xpressive::detail::matchable_ex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  FUN_0080bff0(uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0080ca80(int param_1_00,int param_1)

{
  int iVar1;
  undefined uVar2;
  undefined4 uVar3;
  char cVar4;
  
  uVar2 = *(undefined *)(*(int *)(param_1 + 8) + 0x20 + *(int *)(param_1_00 + 8) * 0x24);
  iVar1 = *(int *)(param_1 + 8) + *(int *)(param_1_00 + 8) * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x14);
  *(undefined4 *)(iVar1 + 0x14) = 1;
  *(undefined *)(iVar1 + 0x20) = 0;
  cVar4 = FUN_0080cf90();
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x14) = uVar3;
  *(undefined *)(iVar1 + 0x20) = uVar2;
  return 0;
}



void FUN_0080cad0(undefined4 *param_1)

{
  undefined *puVar1;
  int iVar2;
  
  param_1[7] = param_1[7] + -1;
  if (*(char *)(param_1 + 8) != '\0') {
    param_1[7] = param_1[7] + -1;
  }
  puVar1 = (undefined *)*param_1;
  *puVar1 = 0;
  iVar2 = 7;
  do {
    iVar2 = iVar2 + -1;
    *(undefined4 *)(puVar1 + iVar2 * 4 + 8) = 0xffffffff;
  } while (-1 < iVar2);
  return;
}



undefined4 __thiscall FUN_0080cb00(undefined4 param_1_00,byte param_1)

{
  FUN_0080cb40(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0080cb20(undefined4 param_1_00,byte param_1)

{
  FUN_0080cb90(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0080cb40(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28958;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005da4f0(param_1 + 4);
  *param_1 = boost::xpressive::detail::
             matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
             ::vftable;
  ExceptionList = local_c;
  return;
}



void FUN_0080cb90(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28958;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_005da4f0(param_1 + 2);
  *param_1 = boost::xpressive::detail::
             matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
             ::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 FUN_0080cbe0(undefined4 param_1)

{
  int iVar1;
  char cVar2;
  int *in_EAX;
  int iVar3;
  char *unaff_ESI;
  
  iVar1 = *in_EAX;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != in_EAX[6])))) {
    FUN_00a3fb10();
  }
  if (in_EAX[1] == in_EAX[7]) {
    *(undefined *)((int)in_EAX + 0x29) = 1;
    return 0;
  }
  if (*in_EAX != -4) {
    if (*in_EAX == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *in_EAX;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar3) <= (uint)in_EAX[1]) {
      FUN_00a3fb10();
    }
  }
  if ((bool)*unaff_ESI !=
      ((*(ushort *)(in_EAX[0xe] + 8 + (uint)*(byte *)in_EAX[1] * 2) & *(ushort *)(unaff_ESI + 2)) !=
      0)) {
    std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)in_EAX);
    cVar2 = FUN_005ee3f0(param_1,0);
    if (cVar2 != '\0') {
      return 1;
    }
    FUN_00429850();
  }
  return 0;
}



undefined4 __fastcall FUN_0080cc90(uint param_1)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *in_EAX;
  undefined4 uVar3;
  uint local_c;
  
  if (*(char *)(param_1 + 0x98) == '\0') {
    local_c = param_1 & 0xffffff00;
    uVar3 = FUN_0080ce70(param_1,local_c);
    return uVar3;
  }
  uVar3 = *in_EAX;
  uVar1 = in_EAX[1];
  cVar2 = FUN_0080cfe0();
  if (cVar2 != '\0') {
    cVar2 = FUN_005e2f60();
    if (cVar2 != '\0') {
      return 1;
    }
    *in_EAX = uVar3;
    in_EAX[1] = uVar1;
  }
  return 0;
}



undefined4 FUN_0080ccf0(void)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int in_EAX;
  undefined4 uVar4;
  int iVar5;
  int *unaff_ESI;
  
  iVar1 = *unaff_ESI;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != unaff_ESI[6])))) {
    FUN_00a3fb10();
  }
  if (unaff_ESI[1] == unaff_ESI[7]) {
    *(undefined *)((int)unaff_ESI + 0x29) = 1;
  }
  else {
    iVar1 = unaff_ESI[0xe];
    if (*unaff_ESI != -4) {
      if (*unaff_ESI == 0) {
        FUN_00a3fb10();
      }
      iVar2 = *unaff_ESI;
      if (*(uint *)(iVar2 + 0x18) < 0x10) {
        iVar5 = iVar2 + 4;
      }
      else {
        iVar5 = *(int *)(iVar2 + 4);
      }
      if ((uint)(*(int *)(iVar2 + 0x14) + iVar5) <= (uint)unaff_ESI[1]) {
        FUN_00a3fb10();
      }
    }
    uVar4 = FUN_005e1420(*(undefined *)unaff_ESI[1],iVar1 + 8);
    if ((char)uVar4 == '\0') {
      return uVar4;
    }
  }
  cVar3 = FUN_005eee20(unaff_ESI,in_EAX + 0x78);
  if (cVar3 == '\0') {
    cVar3 = FUN_005e7f80(in_EAX + 0x80);
    if (cVar3 == '\0') {
      return 0;
    }
  }
  return 1;
}



void FUN_0080cda0(undefined4 param_1,undefined4 param_2)

{
  int unaff_EBX;
  int local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined local_13;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined local_4;
  
  local_24 = unaff_EBX + 0x90;
  local_20 = 0;
  local_1c = 0;
  local_18 = 0;
  local_13 = 0;
  local_10 = 0;
  local_c = 0;
  local_8 = 0;
  local_4 = 0;
  FUN_005e00f0();
  FUN_005e1470(unaff_EBX,param_2,&local_24);
  FUN_0080d100();
  return;
}



void FUN_0080ce20(char *param_1)

{
  char cVar1;
  int iVar2;
  uint *puVar3;
  char *unaff_EDI;
  
  cVar1 = *param_1;
  iVar2 = FUN_005e0900();
  if (iVar2 != 0x100) {
    if ((iVar2 != 0) && (*unaff_EDI != cVar1)) {
      FUN_005dc530();
      return;
    }
    *unaff_EDI = cVar1;
    iVar2 = 7;
    puVar3 = (uint *)(param_1 + 0x20);
    do {
      *(uint *)(unaff_EDI + iVar2 * 4 + 4) = *(uint *)(unaff_EDI + iVar2 * 4 + 4) | *puVar3;
      iVar2 = iVar2 + -1;
      puVar3 = puVar3 + -1;
    } while (-1 < iVar2);
  }
  return;
}



undefined4 FUN_0080ce70(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int iVar5;
  char cVar6;
  undefined4 *puVar7;
  int iVar8;
  undefined4 *unaff_EBX;
  undefined4 local_34;
  int local_30;
  undefined4 local_2c;
  undefined4 *local_28;
  undefined4 local_24;
  undefined4 local_20;
  
  uVar1 = *unaff_EBX;
  uVar2 = unaff_EBX[1];
  puVar7 = (undefined4 *)FUN_005eec10();
  local_34 = *puVar7;
  local_30 = puVar7[1];
  uVar3 = puVar7[2];
  puVar4 = (undefined4 *)puVar7[3];
  local_24 = puVar7[4];
  local_20 = puVar7[5];
  local_2c = uVar3;
  local_28 = puVar4;
  cVar6 = FUN_0080cfe0();
  unaff_EBX[0x11] = uVar3;
  unaff_EBX[0x12] = puVar4;
  *puVar4 = 0;
  if (cVar6 == '\0') {
    iVar8 = 0;
    for (iVar5 = *(int *)(unaff_EBX[0xb] + 0x4c); iVar5 != unaff_EBX[0xb] + 0x48;
        iVar5 = *(int *)(iVar5 + 4)) {
      iVar8 = iVar8 + 1;
    }
    if (iVar8 == local_30) {
      FUN_005e1df0();
    }
    unaff_EBX[0x14] = local_24;
    unaff_EBX[0x15] = local_20;
    return 0;
  }
  cVar6 = FUN_005e2f60();
  if (cVar6 != '\0') {
    iVar8 = 0;
    for (iVar5 = *(int *)(unaff_EBX[0xb] + 0x4c); iVar5 != unaff_EBX[0xb] + 0x48;
        iVar5 = *(int *)(iVar5 + 4)) {
      iVar8 = iVar8 + 1;
    }
    if (iVar8 == local_30) {
      FUN_005e1df0();
    }
    return 1;
  }
  FUN_005eecf0(&local_34);
  *unaff_EBX = uVar1;
  unaff_EBX[1] = uVar2;
  return 0;
}



undefined4 __fastcall FUN_0080cf90(int param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *in_EAX;
  
  uVar2 = *(undefined4 *)(in_EAX[2] + 0x1c + *param_2 * 0x24);
  iVar1 = in_EAX[2] + *param_2 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x18);
  *(undefined4 *)(iVar1 + 0x18) = *in_EAX;
  *(undefined4 *)(iVar1 + 0x1c) = in_EAX[1];
  cVar4 = FUN_0080d070(in_EAX,param_1 + 0x78);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x18) = uVar3;
  *(undefined4 *)(iVar1 + 0x1c) = uVar2;
  return 0;
}



undefined4 __fastcall FUN_0080cfe0(int *param_1,int *param_2)

{
  int iVar1;
  undefined uVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  char cVar8;
  undefined4 *in_EAX;
  
  iVar1 = in_EAX[2] + *param_1 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x14);
  *(undefined4 *)(iVar1 + 0x14) = 1;
  uVar2 = *(undefined *)(iVar1 + 0x20);
  *(undefined *)(iVar1 + 0x20) = 0;
  iVar4 = in_EAX[2];
  iVar5 = *param_2;
  uVar6 = *(undefined4 *)(iVar4 + 0x18 + iVar5 * 0x24);
  uVar7 = *(undefined4 *)(iVar4 + 0x1c + iVar5 * 0x24);
  iVar4 = iVar4 + iVar5 * 0x24;
  *(undefined4 *)(iVar4 + 0x18) = *in_EAX;
  *(undefined4 *)(iVar4 + 0x1c) = in_EAX[1];
  cVar8 = FUN_0080d160(in_EAX,param_2 + 0x1f);
  if (cVar8 == '\0') {
    *(undefined4 *)(iVar4 + 0x18) = uVar6;
    *(undefined4 *)(iVar4 + 0x1c) = uVar7;
    *(undefined4 *)(iVar1 + 0x14) = uVar3;
    *(undefined *)(iVar1 + 0x20) = uVar2;
    return 0;
  }
  return 1;
}



void __thiscall FUN_0080d070(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::stacked_xpression<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::repeat_end_matcher<struct_boost::mpl::bool_<1>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::repeat_end_matcher<struct_boost::mpl::bool_<1>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



void FUN_0080d0d0(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = boost::xpressive::detail::
            matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
            ::vftable;
  return;
}



void __fastcall FUN_0080d0e0(int param_1)

{
  FUN_0080d1c0(*(int *)(param_1 + 4) + 4);
  return;
}



void FUN_0080d100(void)

{
  int iVar1;
  int *in_EAX;
  undefined4 *puVar2;
  int iVar3;
  int unaff_EDI;
  undefined local_5;
  int local_4;
  
  local_4 = in_EAX[2];
  iVar1 = *in_EAX;
  FUN_005e14c0(&local_4);
  puVar2 = (undefined4 *)FUN_005e16f0();
  *(undefined4 *)(unaff_EDI + 4) = *puVar2;
  if ((*(int *)(iVar1 + 0x1c) != 0) &&
     (iVar3 = *(int *)(iVar1 + 0x1c) + -1, *(int *)(iVar1 + 0x1c) = iVar3, iVar3 == 0)) {
    *(undefined4 *)(iVar1 + 0x18) = 0;
  }
  FUN_005ee230(&local_5);
  return;
}



void __thiscall FUN_0080d160(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined auStack_18 [4];
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c28988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = boost::xpressive::detail::
             xpression_adaptor<class_boost::reference_wrapper<struct_boost::xpressive::detail::stacked_xpression<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::regex_matcher<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::repeat_end_matcher<struct_boost::mpl::bool_<1>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::independent_end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::repeat_end_matcher<struct_boost::mpl::bool_<1>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::independent_end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_const_>,struct_boost::xpressive::detail::matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  local_10 = param_2;
  local_4 = 0;
  FUN_005e18a0(param_1_00,DAT_0323f878 ^ (uint)auStack_18);
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_0080d1c0(int *param_1)

{
  undefined4 *puVar1;
  undefined uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  char cVar7;
  undefined4 *in_EAX;
  
  uVar3 = *(undefined4 *)(in_EAX[2] + 4 + *param_1 * 0x24);
  puVar1 = (undefined4 *)(in_EAX[2] + *param_1 * 0x24);
  uVar4 = puVar1[2];
  uVar5 = puVar1[3];
  uVar2 = *(undefined *)(puVar1 + 4);
  uVar6 = *puVar1;
  *puVar1 = puVar1[6];
  puVar1[1] = puVar1[7];
  puVar1[2] = *in_EAX;
  puVar1[3] = in_EAX[1];
  *(undefined *)(puVar1 + 4) = 1;
  cVar7 = FUN_0080d270();
  if (cVar7 != '\0') {
    return 1;
  }
  *puVar1 = uVar6;
  puVar1[1] = uVar3;
  puVar1[2] = uVar4;
  puVar1[3] = uVar5;
  *(undefined *)(puVar1 + 4) = uVar2;
  return 0;
}



void __fastcall FUN_0080d250(int param_1)

{
  FUN_0080d310(*(int *)(param_1 + 4) + 4);
  return;
}



undefined4 __fastcall FUN_0080d270(int *param_1)

{
  int iVar1;
  undefined uVar2;
  int iVar3;
  char cVar4;
  int *in_EAX;
  undefined4 uVar5;
  uint local_4;
  
  iVar1 = in_EAX[2] + *param_1 * 0x24;
  if (*(char *)(in_EAX[2] + 0x20 + *param_1 * 0x24) != '\0') {
    iVar3 = *(int *)(iVar1 + 0x18);
    if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *in_EAX)))) {
      FUN_00a3fb10();
    }
    if (*(int *)(iVar1 + 0x1c) == in_EAX[1]) {
      uVar5 = FUN_005e2f60();
      return uVar5;
    }
  }
  uVar2 = *(undefined *)(iVar1 + 0x20);
  iVar3 = *(int *)(iVar1 + 0x18);
  if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *in_EAX)))) {
    FUN_00a3fb10();
  }
  local_4 = local_4 & 0xffffff00;
  *(bool *)(iVar1 + 0x20) = *(int *)(iVar1 + 0x1c) == in_EAX[1];
  cVar4 = FUN_0080d3a0(local_4);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined *)(iVar1 + 0x20) = uVar2;
  return 0;
}



undefined4 __fastcall FUN_0080d310(int *param_1)

{
  undefined4 *puVar1;
  undefined uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  char cVar7;
  undefined4 *in_EAX;
  
  uVar3 = *(undefined4 *)(in_EAX[2] + 4 + *param_1 * 0x24);
  puVar1 = (undefined4 *)(in_EAX[2] + *param_1 * 0x24);
  uVar4 = puVar1[2];
  uVar5 = puVar1[3];
  uVar2 = *(undefined *)(puVar1 + 4);
  uVar6 = *puVar1;
  *puVar1 = puVar1[6];
  puVar1[1] = puVar1[7];
  puVar1[2] = *in_EAX;
  puVar1[3] = in_EAX[1];
  *(undefined *)(puVar1 + 4) = 1;
  cVar7 = FUN_0080d3f0();
  if (cVar7 != '\0') {
    return 1;
  }
  *puVar1 = uVar6;
  puVar1[1] = uVar3;
  puVar1[2] = uVar4;
  puVar1[3] = uVar5;
  *(undefined *)(puVar1 + 4) = uVar2;
  return 0;
}



undefined4 FUN_0080d3a0(void)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  undefined4 uVar3;
  int *unaff_EBX;
  
  iVar1 = *(int *)(in_EAX + 8) + *unaff_EBX * 0x24;
  if (*(uint *)(iVar1 + 0x14) < (uint)unaff_EBX[2]) {
    *(uint *)(iVar1 + 0x14) = *(uint *)(iVar1 + 0x14) + 1;
    cVar2 = FUN_0080cf90();
    if (cVar2 != '\0') {
      return 1;
    }
    *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + -1;
    if (*(uint *)(iVar1 + 0x14) < (uint)unaff_EBX[1]) {
      return 0;
    }
  }
  uVar3 = FUN_005e2f60();
  return uVar3;
}



undefined4 __fastcall FUN_0080d3f0(int *param_1)

{
  int iVar1;
  undefined uVar2;
  int iVar3;
  char cVar4;
  int *in_EAX;
  undefined4 uVar5;
  uint local_4;
  
  iVar1 = in_EAX[2] + *param_1 * 0x24;
  if (*(char *)(in_EAX[2] + 0x20 + *param_1 * 0x24) != '\0') {
    iVar3 = *(int *)(iVar1 + 0x18);
    if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *in_EAX)))) {
      FUN_00a3fb10();
    }
    if (*(int *)(iVar1 + 0x1c) == in_EAX[1]) {
      uVar5 = FUN_0080d490();
      return uVar5;
    }
  }
  uVar2 = *(undefined *)(iVar1 + 0x20);
  iVar3 = *(int *)(iVar1 + 0x18);
  if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *in_EAX)))) {
    FUN_00a3fb10();
  }
  local_4 = local_4 & 0xffffff00;
  *(bool *)(iVar1 + 0x20) = *(int *)(iVar1 + 0x1c) == in_EAX[1];
  cVar4 = FUN_0080d4b0(local_4);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined *)(iVar1 + 0x20) = uVar2;
  return 0;
}



undefined4 FUN_0080d490(void)

{
  int *piVar1;
  int unaff_EDI;
  
  for (piVar1 = *(int **)(unaff_EDI + 0x44); piVar1 != (int *)0x0; piVar1 = (int *)piVar1[1]) {
    (**(code **)(*piVar1 + 4))(*(undefined4 *)(unaff_EDI + 0x4c));
  }
  return 1;
}



undefined FUN_0080d4b0(void)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  int unaff_EBX;
  int *unaff_EDI;
  
  iVar1 = *(int *)(unaff_EBX + 8) + *unaff_EDI * 0x24;
  if (*(uint *)(iVar1 + 0x14) < (uint)unaff_EDI[2]) {
    *(uint *)(iVar1 + 0x14) = *(uint *)(iVar1 + 0x14) + 1;
    cVar3 = FUN_0080d510();
    if (cVar3 != '\0') {
      return 1;
    }
    *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + -1;
    if (*(uint *)(iVar1 + 0x14) < (uint)unaff_EDI[1]) {
      return 0;
    }
  }
  for (piVar2 = *(int **)(unaff_EBX + 0x44); piVar2 != (int *)0x0; piVar2 = (int *)piVar2[1]) {
    (**(code **)(*piVar2 + 4))(*(undefined4 *)(unaff_EBX + 0x4c));
  }
  return 1;
}



undefined4 __fastcall FUN_0080d510(undefined4 param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *in_EAX;
  
  uVar2 = *(undefined4 *)(in_EAX[2] + 0x1c + *param_2 * 0x24);
  iVar1 = in_EAX[2] + *param_2 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x18);
  *(undefined4 *)(iVar1 + 0x18) = *in_EAX;
  *(undefined4 *)(iVar1 + 0x1c) = in_EAX[1];
  cVar4 = FUN_0080d160(in_EAX,param_2 + 0x1f);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x18) = uVar3;
  *(undefined4 *)(iVar1 + 0x1c) = uVar2;
  return 0;
}



uint FUN_0080d560(uint param_1)

{
  int *in_EAX;
  int *piVar1;
  uint uVar2;
  int unaff_EBX;
  int *piVar3;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  if ((*in_EAX != 0) && (*(int *)(*in_EAX + 0x4c) != 0)) {
    piVar3 = (int *)(unaff_EBX + 4);
    piVar1 = piVar3;
    if (0xf < *(uint *)(unaff_EBX + 0x18)) {
      piVar1 = (int *)*piVar3;
    }
    FUN_00425c20(piVar1,unaff_EBX);
    if (0xf < *(uint *)(unaff_EBX + 0x18)) {
      piVar3 = (int *)*piVar3;
    }
    FUN_00425c20(*(int *)(unaff_EBX + 0x14) + (int)piVar3,unaff_EBX);
    uVar2 = FUN_0080d5f0(local_8,local_4,local_10,local_c);
    return uVar2;
  }
  *(undefined4 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 8) = 0;
  return param_1 & 0xffffff00;
}



undefined4 FUN_0080d5f0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 unaff_ESI;
  int unaff_EDI;
  undefined local_70 [8];
  int local_68;
  undefined local_50;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d648;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)FUN_005da1a0(unaff_ESI);
  FUN_0080d700(local_70,*puVar2,param_1,param_2,param_3,param_4);
  local_4 = 0;
  local_50 = 1;
  *(undefined4 *)(local_68 + 0x18) = param_1;
  *(undefined4 *)(local_68 + 0x1c) = param_2;
  cVar1 = FUN_0080da10(unaff_ESI,local_70);
  if (cVar1 != '\0') {
    FUN_0080d810(param_1,param_2,param_3,param_4);
    ExceptionList = local_c;
    return 1;
  }
  *(undefined4 *)(unaff_EDI + 4) = 0;
  *(undefined4 *)(unaff_EDI + 8) = 0;
  ExceptionList = local_c;
  return 0;
}



void FUN_0080d6d0(void)

{
  int in_EAX;
  
  *(undefined ***)(in_EAX + 0x40) = boost::xpressive::detail::actionable::vftable;
  return;
}



void FUN_0080d6e0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  FUN_0080d810(param_2,param_3,param_4,param_5);
  return;
}



undefined4 * __thiscall
FUN_0080d700(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2892b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = param_3;
  param_1[4] = param_3;
  param_1[1] = param_4;
  param_1[5] = param_4;
  param_1[6] = param_5;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[7] = param_6;
  *(undefined *)(param_1 + 8) = 0;
  *(undefined *)((int)param_1 + 0x21) = 0;
  *(undefined *)(param_1 + 9) = 0;
  *(undefined *)((int)param_1 + 0x25) = 0;
  *(undefined *)((int)param_1 + 0x26) = 0;
  *(undefined *)((int)param_1 + 0x27) = 0;
  *(undefined *)(param_1 + 10) = 0;
  *(undefined *)((int)param_1 + 0x22) = 1;
  *(undefined *)((int)param_1 + 0x23) = 1;
  *(undefined *)((int)param_1 + 0x29) = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  uVar2 = FUN_005e2560(uVar1);
  param_1[0xf] = uVar2;
  param_1[0x10] = boost::xpressive::detail::actionable::vftable;
  param_1[0x11] = 0;
  local_4 = 0;
  param_1[0x12] = param_1 + 0x11;
  param_1[0x13] = param_1_00 + 0x58;
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  param_1[0x16] = param_3;
  param_1[0x17] = param_4;
  FUN_005e2d50();
  FUN_005e1a20();
  FUN_005e1e40(param_1_00 + 0x48);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_0080d7f0(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 8);
  *puVar1 = puVar1[6];
  puVar1[1] = puVar1[7];
  puVar1[2] = *(undefined4 *)(param_1 + 0x18);
  puVar1[3] = *(undefined4 *)(param_1 + 0x1c);
  *(undefined *)(puVar1 + 4) = 0;
  return;
}



void __thiscall
FUN_0080d810(int param_1_00,int param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  undefined4 *puVar4;
  
  if (*(char *)(param_1_00 + 0xc) == '\0') {
    if ((int *)(param_1_00 + 0x10) != (int *)0x0) {
      *(int *)(param_1_00 + 0x10) = param_1;
      *(undefined4 *)(param_1_00 + 0x14) = param_2;
    }
    *(undefined *)(param_1_00 + 0xc) = 1;
  }
  else {
    *(int *)(param_1_00 + 0x10) = param_1;
    *(undefined4 *)(param_1_00 + 0x14) = param_2;
  }
  if ((DAT_032ef844 & 1) == 0) {
    DAT_032ef844 = DAT_032ef844 | 1;
    DAT_032ef848 = 0;
    DAT_032ef84c = 0;
    DAT_032ef850 = 0;
    DAT_032ef854 = 0;
    DAT_032ef858 = 0;
  }
  piVar3 = &DAT_032ef848;
  if (*(int *)(param_1_00 + 4) != 0) {
    piVar3 = *(int **)(param_1_00 + 8);
  }
  if ((param_1 != -4) && ((param_1 == 0 || (param_1 != *piVar3)))) {
    FUN_00a3fb10();
  }
  if ((DAT_032ef844 & 1) == 0) {
    DAT_032ef844 = DAT_032ef844 | 1;
    DAT_032ef848 = 0;
    DAT_032ef84c = 0;
    DAT_032ef850 = 0;
    DAT_032ef854 = 0;
    DAT_032ef858 = 0;
  }
  uVar2 = DAT_032ef844;
  FUN_0080dab0();
  if ((uVar2 & 1) == 0) {
    uVar2 = uVar2 | 1;
    DAT_032ef848 = 0;
    DAT_032ef84c = 0;
    DAT_032ef850 = 0;
    DAT_032ef854 = 0;
    DAT_032ef858 = 0;
    DAT_032ef844 = uVar2;
  }
  puVar4 = &DAT_032ef848;
  if (*(int *)(param_1_00 + 4) != 0) {
    puVar4 = *(undefined4 **)(param_1_00 + 8);
  }
  iVar1 = puVar4[2];
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != param_3)))) {
    FUN_00a3fb10();
    uVar2 = DAT_032ef844;
  }
  if ((uVar2 & 1) == 0) {
    DAT_032ef844 = uVar2 | 1;
    DAT_032ef848 = 0;
    DAT_032ef84c = 0;
    DAT_032ef850 = 0;
    DAT_032ef854 = 0;
    DAT_032ef858 = 0;
  }
  FUN_0080dab0();
  for (iVar1 = *(int *)(param_1_00 + 0x4c); iVar1 != param_1_00 + 0x48; iVar1 = *(int *)(iVar1 + 4))
  {
    FUN_0080d810(param_1,param_2,param_3,param_4);
  }
  return;
}



undefined FUN_0080da10(int *param_1,undefined4 param_2)

{
  undefined uVar1;
  uint local_21;
  void *local_14;
  code *pcStack_10;
  uint local_c;
  undefined4 local_8;
  
  pcStack_10 = __except_handler4;
  local_14 = ExceptionList;
  local_c = DAT_0323f878 ^ 0x315af50;
  ExceptionList = &local_14;
  local_21 = local_21 & 0xffffff00;
  local_8 = 0;
  uVar1 = (**(code **)(**(int **)(*param_1 + 0x4c) + 4))(param_2);
  local_8 = 0xfffffffe;
  FUN_0080db00(local_21);
  ExceptionList = local_14;
  return uVar1;
}



void __fastcall FUN_0080dab0(undefined4 param_1,char *param_2)

{
  undefined4 *in_EAX;
  
  if (*param_2 != '\0') {
    *(undefined4 *)(param_2 + 4) = *in_EAX;
    *(undefined4 *)(param_2 + 8) = in_EAX[1];
    *(undefined4 *)(param_2 + 0xc) = in_EAX[2];
    *(undefined4 *)(param_2 + 0x10) = in_EAX[3];
    *(undefined4 *)(param_2 + 0x14) = in_EAX[4];
    return;
  }
  if ((undefined4 *)(param_2 + 4) != (undefined4 *)0x0) {
    *(undefined4 *)(param_2 + 4) = *in_EAX;
    *(undefined4 *)(param_2 + 8) = in_EAX[1];
    *(undefined4 *)(param_2 + 0xc) = in_EAX[2];
    *(undefined4 *)(param_2 + 0x10) = in_EAX[3];
    *(undefined4 *)(param_2 + 0x14) = in_EAX[4];
  }
  *param_2 = '\x01';
  return;
}



void FUN_0080db00(char param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_50 [68];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1ff78;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  if (param_1 != '\0') {
    iVar2 = FUN_005e33c0(local_50,0xc);
    local_4 = 0;
    *(char **)(iVar2 + 0x30) = "void __cdecl boost::xpressive::detail::throw_on_stack_error(bool)";
    *(char **)(iVar2 + 0x34) = "D:\\boost_1_53_0\\boost/xpressive/basic_regex.hpp";
    *(undefined4 *)(iVar2 + 0x38) = 0x2c;
    FUN_005e3880(iVar2,uVar1);
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_0080db70(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::xpressive::detail::actionable::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0080db90(undefined4 *param_1)

{
  *param_1 = boost::xpressive::detail::actionable::vftable;
  return;
}



void FUN_0080dba0(void)

{
  uint uVar1;
  uint uVar2;
  undefined4 in_EAX;
  uint uVar3;
  undefined4 *unaff_EBX;
  uint local_c [3];
  
  uVar1 = unaff_EBX[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(unaff_EBX[5] - uVar1) >> 3;
  }
  uVar2 = unaff_EBX[4];
  if ((uint)((int)(uVar2 - uVar1) >> 3) < uVar3) {
    local_c[0] = local_c[0] & 0xffffff00;
    FUN_0080e2d0(local_c[0],local_c[0]);
    unaff_EBX[4] = uVar2 + 8;
    return;
  }
  if (uVar2 < uVar1) {
    FUN_00a3fb10();
  }
  FUN_0080dc20(local_c,in_EAX,*unaff_EBX,uVar2);
  return;
}



int * FUN_0080dc20(int *param_1,undefined4 param_2,int param_3,int param_4)

{
  uint uVar1;
  int iVar2;
  int *in_EAX;
  int iVar3;
  
  uVar1 = in_EAX[3];
  if ((in_EAX[4] - uVar1 & 0xfffffff8) == 0) {
    iVar3 = 0;
  }
  else {
    if ((uint)in_EAX[4] < uVar1) {
      FUN_00a3fb10();
    }
    if ((param_3 == 0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    iVar3 = (int)(param_4 - uVar1) >> 3;
  }
  FUN_0080de70(in_EAX,param_3,param_4);
  uVar1 = in_EAX[3];
  if ((uint)in_EAX[4] < uVar1) {
    FUN_00a3fb10();
  }
  iVar2 = *in_EAX;
  FUN_005d8250(iVar3);
  *param_1 = iVar2;
  param_1[1] = uVar1;
  return param_1;
}



void FUN_0080dcc0(undefined4 param_1,uint param_2,undefined4 param_3,uint param_4)

{
  int iVar1;
  int *unaff_ESI;
  int *unaff_EDI;
  
  *unaff_EDI = 0;
  if (((unaff_ESI == (int *)0x0) || (param_2 < (uint)unaff_ESI[3])) ||
     ((uint)unaff_ESI[4] < param_2)) {
    FUN_00a3fb10();
  }
  *unaff_EDI = *unaff_ESI;
  unaff_EDI[1] = param_2;
  if ((param_4 < (uint)unaff_ESI[3]) || ((uint)unaff_ESI[4] < param_4)) {
    FUN_00a3fb10();
  }
  if ((*unaff_EDI == 0) || (*unaff_EDI != *unaff_ESI)) {
    FUN_00a3fb10();
  }
  if (unaff_EDI[1] != param_4) {
    iVar1 = FUN_0080e290(unaff_EDI[1],param_1,param_1,0);
    FUN_005d9000(param_1);
    unaff_ESI[4] = iVar1;
  }
  return;
}



void FUN_0080dd60(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *unaff_ESI;
  
  puVar2 = (undefined4 *)FUN_005d89c0();
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = param_1;
  }
  if (puVar2 + 1 != (undefined4 *)0x0) {
    puVar2[1] = param_2;
  }
  if (puVar2 + 2 != (undefined4 *)0x0) {
    puVar2[2] = *unaff_ESI;
    iVar1 = unaff_ESI[1];
    puVar2[3] = iVar1;
    if (iVar1 != 0) {
      LOCK();
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
      UNLOCK();
    }
  }
  return;
}



void __fastcall FUN_0080ddb0(int param_1)

{
  uint uVar1;
  int iVar2;
  int extraout_ECX;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [3];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  undefined local_24;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d1b0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  iVar2 = *(int *)(param_1 + 0x18);
  if (iVar2 == 0x1fffffff) {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"list<T> too long",0x10);
    local_4 = 0;
    FUN_00a3f1a9(uVar1);
    local_4._0_1_ = 1;
    local_34[0] = std::logic_error::vftable;
    local_10 = 0xf;
    local_14 = 0;
    local_24 = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_28,local_50,0,0xffffffff);
    local_4 = (uint)local_4._1_3_ << 8;
    local_34[0] = std::length_error::vftable;
    iVar2 = __CxxThrowException_8(local_34,&DAT_03115554);
    param_1 = extraout_ECX;
  }
  *(int *)(param_1 + 0x18) = iVar2 + 1;
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_0080de70(undefined4 *param_1_00,int param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 *puVar1;
  int *piVar2;
  int iVar3;
  uint *puVar4;
  int iVar5;
  uint uVar6;
  void *pvVar7;
  undefined4 uVar8;
  uint extraout_ECX;
  undefined8 uVar9;
  uint uStack_40;
  undefined4 local_30;
  uint local_2c;
  undefined4 local_28;
  int local_24;
  undefined4 local_20;
  uint local_1c;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c1ff50;
  local_10 = ExceptionList;
  uStack_40 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_40;
  ExceptionList = &local_10;
  iVar5 = *(int *)(param_1 + 0xc);
  if (iVar5 == 0) {
    local_1c = 0;
  }
  else {
    local_1c = *(int *)(param_1 + 0x14) - iVar5 >> 3;
  }
  iVar5 = *(int *)(param_1 + 0x10) - iVar5 >> 3;
  uVar9 = CONCAT44(*(int *)(param_1 + 0x10),iVar5);
  puVar4 = &uStack_40;
  if (iVar5 == 0x1fffffff) {
    uVar9 = FUN_005db870();
    local_1c = extraout_ECX;
    puVar4 = local_14;
  }
  local_14 = puVar4;
  uVar6 = (int)uVar9 + 1;
  if (uVar6 <= local_1c) {
    if ((int)((ulonglong)uVar9 >> 0x20) - (int)param_3 >> 3 == 0) {
      iVar5 = param_1_00[1];
      local_28 = *param_1_00;
      if (iVar5 != 0) {
        LOCK();
        *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
        UNLOCK();
      }
      local_8 = 2;
      local_24 = iVar5;
      FUN_0080e220(param_3,param_3 + 2);
      local_8 = CONCAT31(local_8._1_3_,3);
      local_2c = local_2c & 0xffffff00;
      FUN_0080e2d0(param_1,local_2c);
      local_8 = 2;
      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 8;
      puVar1 = (undefined4 *)(*(int *)(param_1 + 0x10) + -8);
      if (param_3 != puVar1) {
        do {
          if (iVar5 != 0) {
            LOCK();
            *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
            UNLOCK();
          }
          if (&local_30 != param_3) {
            *param_3 = local_28;
          }
          piVar2 = (int *)param_3[1];
          param_3[1] = iVar5;
          if (piVar2 != (int *)0x0) {
            LOCK();
            iVar3 = piVar2[1] + -1;
            piVar2[1] = iVar3;
            UNLOCK();
            if (iVar3 == 0) {
              (**(code **)(*piVar2 + 4))();
              LOCK();
              iVar3 = piVar2[2] + -1;
              piVar2[2] = iVar3;
              UNLOCK();
              if (iVar3 == 0) {
                (**(code **)(*piVar2 + 8))();
              }
            }
          }
          param_3 = param_3 + 2;
        } while (param_3 != puVar1);
      }
    }
    else {
      local_2c = param_1_00[1];
      local_30 = *param_1_00;
      if (local_2c != 0) {
        LOCK();
        *(int *)(local_2c + 4) = *(int *)(local_2c + 4) + 1;
        UNLOCK();
      }
      local_8 = 5;
      uVar8 = FUN_0080e220(*(int *)(param_1 + 0x10) + -8,*(int *)(param_1 + 0x10));
      *(undefined4 *)(param_1 + 0x10) = uVar8;
      FUN_0080e250();
      puVar1 = param_3 + 2;
      if (param_3 != puVar1) {
        do {
          if (local_2c != 0) {
            LOCK();
            *(int *)(local_2c + 4) = *(int *)(local_2c + 4) + 1;
            UNLOCK();
          }
          if (&local_28 != param_3) {
            *param_3 = local_30;
          }
          piVar2 = (int *)param_3[1];
          param_3[1] = local_2c;
          if (piVar2 != (int *)0x0) {
            LOCK();
            iVar5 = piVar2[1] + -1;
            piVar2[1] = iVar5;
            UNLOCK();
            if (iVar5 == 0) {
              (**(code **)(*piVar2 + 4))();
              LOCK();
              iVar5 = piVar2[2] + -1;
              piVar2[2] = iVar5;
              UNLOCK();
              if (iVar5 == 0) {
                (**(code **)(*piVar2 + 8))();
              }
            }
          }
          param_3 = param_3 + 2;
        } while (param_3 != puVar1);
      }
    }
    local_8 = 0xffffffff;
    FUN_005e72d0();
    ExceptionList = local_10;
    return;
  }
  if (0x1fffffff - (local_1c >> 1) < local_1c) {
    local_1c = 0;
  }
  else {
    local_1c = local_1c + (local_1c >> 1);
  }
  if (local_1c < uVar6) {
    local_1c = uVar6;
  }
  if (local_1c == 0) {
    pvVar7 = operator_new(0);
  }
  else {
    pvVar7 = (void *)FUN_005d8a10();
  }
  local_24 = (int)param_3 - *(int *)(param_1 + 0xc) >> 3;
  local_8 = 0;
  local_20 = 0;
  local_2c = local_2c & 0xffffff00;
  FUN_0080e2d0(pvVar7,local_2c);
  local_2c = local_2c & 0xffffff00;
  local_20 = 1;
  FUN_0079c5d0(pvVar7,local_2c);
  local_2c = local_2c & 0xffffff00;
  local_20 = 2;
  FUN_0079c5d0(pvVar7,local_2c);
  local_8 = 0xffffffff;
  if (*(int *)(param_1 + 0xc) == 0) {
    *(void **)(param_1 + 0x14) = (void *)((int)pvVar7 + local_1c * 8);
    *(void **)(param_1 + 0x10) =
         (void *)((int)pvVar7 + ((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc) >> 3) + 1) * 8)
    ;
    *(void **)(param_1 + 0xc) = pvVar7;
    ExceptionList = local_10;
    return;
  }
  FUN_005d9000(pvVar7);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
}



void Catch_All_0080dff8(void)

{
  undefined4 uVar1;
  int unaff_EBP;
  
  uVar1 = *(undefined4 *)(unaff_EBP + 8);
  if (1 < *(int *)(unaff_EBP + -0x1c)) {
    FUN_005d9000(*(undefined4 *)(unaff_EBP + 8));
  }
  if (0 < *(int *)(unaff_EBP + -0x1c)) {
    FUN_005d9000(*(undefined4 *)(unaff_EBP + 8));
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(uVar1);
}



void Catch_All_0080e130(void)

{
  undefined4 *puVar1;
  int iVar2;
  int *piVar3;
  undefined4 uVar4;
  int unaff_EBP;
  undefined4 *unaff_ESI;
  int unaff_EDI;
  undefined4 *puVar5;
  
  FUN_005d9000(*(undefined4 *)(unaff_EBP + 8));
  __CxxThrowException_8(0,0);
  iVar2 = unaff_ESI[1];
  *(undefined4 *)(unaff_EBP + -0x2c) = *unaff_ESI;
  *(int *)(unaff_EBP + -0x28) = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  *(undefined4 *)(unaff_EBP + -4) = 5;
  uVar4 = FUN_0080e220(*(int *)(unaff_EDI + 0x10) + -8,*(int *)(unaff_EDI + 0x10));
  *(undefined4 *)(unaff_EDI + 0x10) = uVar4;
  FUN_0080e250();
  puVar5 = *(undefined4 **)(unaff_EBP + 0x10);
  puVar1 = puVar5 + 2;
  for (; puVar5 != puVar1; puVar5 = puVar5 + 2) {
    iVar2 = *(int *)(unaff_EBP + -0x28);
    if (iVar2 != 0) {
      LOCK();
      *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
      UNLOCK();
    }
    if ((undefined4 *)(unaff_EBP + -0x24) != puVar5) {
      *puVar5 = *(undefined4 *)(unaff_EBP + -0x2c);
    }
    piVar3 = (int *)puVar5[1];
    puVar5[1] = iVar2;
    if (piVar3 != (int *)0x0) {
      LOCK();
      iVar2 = piVar3[1] + -1;
      piVar3[1] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar3 + 4))();
        LOCK();
        iVar2 = piVar3[2] + -1;
        piVar3[2] = iVar2;
        UNLOCK();
        if (iVar2 == 0) {
          (**(code **)(*piVar3 + 8))();
        }
      }
    }
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_005e72d0();
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



void FUN_0080e220(undefined4 param_1,undefined4 param_2)

{
  FUN_0079c5d0(param_2,0);
  return;
}



int FUN_0080e250(void)

{
  int in_EAX;
  int unaff_EBX;
  int unaff_EDI;
  
  FUN_0080e300();
  return unaff_EDI + (in_EAX - unaff_EBX >> 3) * -8;
}



int FUN_0080e290(int param_1)

{
  int in_EAX;
  int iVar1;
  int unaff_EBX;
  
  iVar1 = unaff_EBX - in_EAX;
  if (in_EAX != unaff_EBX) {
    do {
      FUN_00808b10();
      in_EAX = in_EAX + 8;
    } while (in_EAX != unaff_EBX);
  }
  return param_1 + (iVar1 >> 3) * 8;
}



void __fastcall FUN_0080e2d0(undefined4 *param_1,int param_2)

{
  int iVar1;
  undefined4 *unaff_ESI;
  
  if (param_2 != 0) {
    do {
      if (param_1 != (undefined4 *)0x0) {
        *param_1 = *unaff_ESI;
        iVar1 = unaff_ESI[1];
        param_1[1] = iVar1;
        if (iVar1 != 0) {
          LOCK();
          *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
          UNLOCK();
        }
      }
      param_2 = param_2 + -1;
      param_1 = param_1 + 2;
    } while (param_2 != 0);
  }
  return;
}



void __thiscall FUN_0080e300(int param_1_00,int param_1)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined4 *in_EAX;
  undefined4 *puVar4;
  undefined4 local_c [3];
  
  if (param_1 != param_1_00) {
    do {
      iVar1 = *(int *)(param_1_00 + -4);
      uVar2 = *(undefined4 *)(param_1_00 + -8);
      param_1_00 = param_1_00 + -8;
      puVar4 = in_EAX + -2;
      if (iVar1 != 0) {
        LOCK();
        *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
        UNLOCK();
      }
      if (local_c != puVar4) {
        *puVar4 = uVar2;
      }
      piVar3 = (int *)in_EAX[-1];
      in_EAX[-1] = iVar1;
      if (piVar3 != (int *)0x0) {
        LOCK();
        iVar1 = piVar3[1] + -1;
        piVar3[1] = iVar1;
        UNLOCK();
        if (iVar1 == 0) {
          (**(code **)(*piVar3 + 4))();
          LOCK();
          iVar1 = piVar3[2] + -1;
          piVar3[2] = iVar1;
          UNLOCK();
          if (iVar1 == 0) {
            (**(code **)(*piVar3 + 8))();
          }
        }
      }
      in_EAX = puVar4;
    } while (param_1_00 != param_1);
  }
  return;
}



undefined4 * __thiscall FUN_0080e380(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W6A4CD2C5::W96F47EB7::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0080e3a0(undefined4 *param_1)

{
  *param_1 = W6A4CD2C5::W96F47EB7::vftable;
  return;
}



undefined4 * __thiscall FUN_0080e3b0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W6A4CD2C5::WC78A25D9::vftable;
  if (0xf < (uint)param_1_00[7]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[2]);
  }
  param_1_00[7] = 0xf;
  param_1_00[6] = 0;
  *(undefined *)(param_1_00 + 2) = 0;
  *param_1_00 = W6A4CD2C5::W96F47EB7::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_0080e400(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c33c48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  local_4 = 0;
  uVar2 = FUN_005da1a0(param_1);
  FUN_0080e460(uVar2,uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_0080e460(void)

{
  uint uVar1;
  _Locimp *this;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_228 [4];
  _Locimp *local_224;
  _Lockit local_220 [4];
  undefined local_21c [512];
  facet *local_1c;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c38316;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_228;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  this = std::locale::_Init();
  local_224 = this;
  iVar2 = FUN_008238c4(uVar1);
  std::_Lockit::_Lockit(local_220,0);
  if (*(int *)(iVar2 + 4) != -1) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  FUN_005dd280(local_21c,&local_224);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (this != (_Locimp *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref((facet *)this);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  FUN_0080e570();
  local_4 = 0xffffffff;
  if (local_1c != (facet *)0x0) {
    puVar3 = (undefined4 *)std::locale::facet::_Decref(local_1c);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0080e570(undefined4 param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined auStack_314 [108];
  undefined4 uStack_2a8;
  undefined4 **ppuStack_2a4;
  undefined auStack_288 [4];
  undefined4 *local_284 [2];
  undefined4 local_27c;
  undefined *local_278;
  uint local_254;
  undefined4 local_244;
  uint local_240;
  int local_220;
  int local_21c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c32141;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_288;
  ExceptionList = &local_c;
  local_278 = auStack_314;
  local_27c = param_1;
  FUN_005da3d0(auStack_314);
  FUN_005da5d0();
  ppuStack_2a4 = (undefined4 **)0x80e5ed;
  puVar3 = (undefined4 *)operator_new(0x210);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[1] = 0;
    *puVar3 = boost::xpressive::detail::
              traits_holder<struct_boost::xpressive::cpp_regex_traits<char>_>::vftable;
    ppuStack_2a4 = (undefined4 **)0x80e60c;
    FUN_005dde60();
  }
  iVar1 = *param_2;
  if (puVar3 != (undefined4 *)0x0) {
    LOCK();
    puVar3[1] = puVar3[1] + 1;
    UNLOCK();
  }
  puVar2 = *(undefined4 **)(iVar1 + 0x50);
  *(undefined4 **)(iVar1 + 0x50) = puVar3;
  if (puVar2 != (undefined4 *)0x0) {
    piVar4 = puVar2 + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (puVar2 != (undefined4 *)0x0)) {
      ppuStack_2a4 = (undefined4 **)0x80e652;
      (**(code **)*puVar2)();
    }
  }
  local_220 = *param_2;
  local_21c = param_2[1];
  if (local_21c != 0) {
    LOCK();
    *(int *)(local_21c + 4) = *(int *)(local_21c + 4) + 1;
    UNLOCK();
  }
  ppuStack_2a4 = (undefined4 **)0x80e680;
  FUN_005dde60();
  local_4 = 0;
  ppuStack_2a4 = (undefined4 **)0x80e6a2;
  FUN_0080e810();
  local_4._0_1_ = 1;
  ppuStack_2a4 = (undefined4 **)0x80e6b4;
  FUN_0080ee10();
  local_4._0_1_ = 3;
  if (0xf < local_240) {
                    // WARNING: Subroutine does not return
    ppuStack_2a4 = (undefined4 **)&UNK_0080e6d0;
    FUN_00a3f6a1();
  }
  ppuStack_2a4 = local_284;
  local_240 = 0xf;
  local_244 = 0;
  local_254 = local_254 & 0xffffff00;
  uStack_2a8 = 0x80e6f8;
  FUN_005deb20();
  FUN_005da7e0();
  FUN_005da850();
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_284[0] != (undefined4 *)0x0) {
    piVar4 = local_284[0] + 1;
    LOCK();
    iVar1 = *piVar4;
    *piVar4 = iVar1 + -1;
    UNLOCK();
    if (((iVar1 + -1 == 0) && (piVar4 != (int *)0x0)) && (local_284[0] != (undefined4 *)0x0)) {
      ppuStack_2a4 = (undefined4 **)0x80e73a;
      (**(code **)*local_284[0])();
    }
  }
  local_4 = 0xffffffff;
  FUN_005ddb50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0080e780(void)

{
  int unaff_ESI;
  
  if (0xf < *(uint *)(unaff_ESI + 0x34)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0x20));
  }
  *(undefined4 *)(unaff_ESI + 0x34) = 0xf;
  *(undefined4 *)(unaff_ESI + 0x30) = 0;
  *(undefined *)(unaff_ESI + 0x20) = 0;
  return;
}



void FUN_0080e7b0(void)

{
  int unaff_ESI;
  
  if (0xf < *(uint *)(unaff_ESI + 0x30)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0x1c));
  }
  *(undefined4 *)(unaff_ESI + 0x30) = 0xf;
  *(undefined4 *)(unaff_ESI + 0x2c) = 0;
  *(undefined *)(unaff_ESI + 0x1c) = 0;
  return;
}



void FUN_0080e7e0(void)

{
  int unaff_ESI;
  
  if (0xf < *(uint *)(unaff_ESI + 0x1c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 8));
  }
  *(undefined4 *)(unaff_ESI + 0x1c) = 0xf;
  *(undefined4 *)(unaff_ESI + 0x18) = 0;
  *(undefined *)(unaff_ESI + 8) = 0;
  return;
}



void __fastcall FUN_0080e810(undefined *param_1)

{
  undefined local_31;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  uint local_20;
  undefined local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_4;
  
  local_1c = *param_1;
  local_14 = CONCAT31(local_14._1_3_,local_31);
  local_4 = local_4 & 0xffffff00;
  local_2c = 0;
  local_24 = 1;
  local_28 = 0xfffffffe;
  local_18 = 0;
  local_30 = local_14;
  local_20 = local_4;
  FUN_0080e8e0(&local_30);
  return;
}



void FUN_0080e880(void)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_EBX;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_ESI;
  undefined4 *puVar1;
  
  *(undefined4 *)(unaff_ESI + 0x18) = 0xf;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  puVar1 = (undefined4 *)(unaff_ESI + 4);
  *(undefined *)puVar1 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (unaff_ESI,unaff_EBX,0,0xffffffff);
  if (0xf < *(uint *)(unaff_ESI + 0x18)) {
    puVar1 = (undefined4 *)*puVar1;
  }
  *(undefined **)(unaff_ESI + 0x1c) = (undefined *)(*(int *)(unaff_ESI + 0x14) + (int)puVar1);
  *(undefined4 *)(unaff_ESI + 0x20) = *(undefined4 *)(unaff_EBX + 0x20);
  *(undefined4 *)(unaff_ESI + 0x24) = *(undefined4 *)(unaff_EBX + 0x24);
  *(undefined4 *)(unaff_ESI + 0x28) = *(undefined4 *)(unaff_EBX + 0x28);
  *(undefined4 *)(unaff_ESI + 0x2c) = *(undefined4 *)(unaff_EBX + 0x2c);
  *(undefined4 *)(unaff_ESI + 0x30) = *(undefined4 *)(unaff_EBX + 0x30);
  *(undefined4 *)(unaff_ESI + 0x34) = *(undefined4 *)(unaff_EBX + 0x34);
  return;
}



void FUN_0080e8e0(undefined4 *param_1)

{
  uint uVar1;
  undefined4 unaff_EBX;
  int unaff_EDI;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined local_4c [4];
  undefined4 local_48;
  uint local_34;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1ff18;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)&local_68;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  local_64 = param_1[1];
  local_68 = *param_1;
  local_60 = param_1[2];
  local_5c = param_1[3];
  local_58 = param_1[4];
  local_54 = param_1[5];
  local_50 = 0;
  FUN_0080e9b0(unaff_EDI + 4,&local_68);
  local_4 = 0;
  FUN_0080ea30(local_4c,unaff_EBX);
  if (0xf < local_34) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_48,uVar1);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __fastcall FUN_0080e9b0(undefined4 param_1)

{
  undefined4 local_28;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1fee8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0080ea70(DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_4 = 0;
  FUN_0080eb90();
  if (0xf < local_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_28);
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0080ea30(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_c = *(undefined4 *)*param_1_00;
  local_8 = *(undefined4 *)param_1_00[1];
  local_4 = local_c;
  FUN_0080ea90(&local_c,param_2);
  return;
}



undefined4 __fastcall FUN_0080ea70(undefined4 param_1)

{
  FUN_005dedf0();
  return param_1;
}



void FUN_0080ea90(undefined4 param_1,undefined4 param_2)

{
  undefined4 local_a0;
  undefined4 local_9c;
  undefined local_98 [28];
  uint local_7c;
  undefined4 local_6c;
  uint local_68;
  undefined4 local_44;
  uint local_30;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1bab3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_a0;
  ExceptionList = &local_c;
  local_a0 = param_2;
  local_9c = 0;
  FUN_0080e880(DAT_0323f878 ^ (uint)&stack0xffffff50);
  local_4 = 0;
  FUN_0080ebf0(local_98);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0080ece0();
  if (0xf < local_68) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_7c);
  }
  local_68 = 0xf;
  local_6c = 0;
  local_7c = local_7c & 0xffffff00;
  if (0xf < local_30) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_44);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0080eb90(void)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *in_EAX;
  undefined4 *puVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_ESI;
  undefined4 *unaff_EDI;
  
  *(undefined4 *)(unaff_ESI + 0x18) = 0xf;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  puVar1 = (undefined4 *)(unaff_ESI + 4);
  *(undefined *)puVar1 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (unaff_ESI,in_EAX,0,0xffffffff);
  if (0xf < *(uint *)(unaff_ESI + 0x18)) {
    puVar1 = (undefined4 *)*puVar1;
  }
  *(undefined **)(unaff_ESI + 0x1c) = (undefined *)(*(int *)(unaff_ESI + 0x14) + (int)puVar1);
  *(undefined4 *)(unaff_ESI + 0x20) = *unaff_EDI;
  *(undefined4 *)(unaff_ESI + 0x24) = unaff_EDI[1];
  *(undefined4 *)(unaff_ESI + 0x28) = unaff_EDI[2];
  *(undefined4 *)(unaff_ESI + 0x2c) = unaff_EDI[3];
  *(undefined4 *)(unaff_ESI + 0x30) = unaff_EDI[4];
  *(undefined4 *)(unaff_ESI + 0x34) = unaff_EDI[5];
  return;
}



void FUN_0080ebf0(void)

{
  undefined4 local_8c;
  undefined local_88 [8];
  uint local_80;
  undefined4 local_70;
  uint local_6c;
  undefined4 local_48;
  uint local_34;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1ba63;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)&local_8c;
  ExceptionList = &local_c;
  local_8c = 0;
  FUN_0080e880(DAT_0323f878 ^ (uint)&stack0xffffff64);
  local_4 = 0;
  FUN_0080ed50();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0080ed70(local_88);
  if (0xf < local_6c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_80);
  }
  local_6c = 0xf;
  local_70 = 0;
  local_80 = local_80 & 0xffffff00;
  if (0xf < local_34) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_48);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_0080ece0(uint *param_1,int *param_2)

{
  uint uVar1;
  uint *in_EAX;
  uint *puVar2;
  uint *puVar3;
  uint *unaff_EDI;
  uint local_4;
  
  local_4 = 0;
  uVar1 = *in_EAX;
  if (0 < (int)uVar1) {
    puVar3 = (uint *)(*param_2 + 0x70);
    local_4 = uVar1;
    puVar2 = &local_4;
    if (uVar1 <= *puVar3) {
      puVar2 = puVar3;
    }
    *puVar3 = *puVar2;
  }
  *unaff_EDI = *in_EAX;
  unaff_EDI[1] = *param_1;
  unaff_EDI[2] = param_1[1];
  unaff_EDI[3] = param_1[2];
  unaff_EDI[4] = param_1[3];
  unaff_EDI[5] = param_1[4];
  unaff_EDI[6] = param_1[5];
  FUN_0080e880();
  return;
}



void FUN_0080ed50(void)

{
  undefined4 *in_EAX;
  undefined4 *unaff_EDI;
  
  *unaff_EDI = *in_EAX;
  FUN_0080e880();
  return;
}



void FUN_0080ed70(void)

{
  FUN_0080edd0();
  return;
}



void __fastcall FUN_0080edd0(undefined4 *param_1)

{
  undefined4 *in_EAX;
  undefined4 *unaff_EDI;
  
  *unaff_EDI = *in_EAX;
  unaff_EDI[1] = in_EAX[1];
  unaff_EDI[2] = in_EAX[2];
  unaff_EDI[3] = in_EAX[3];
  unaff_EDI[4] = in_EAX[4];
  unaff_EDI[5] = *param_1;
  FUN_0080e880();
  return;
}



void FUN_0080ee10(undefined4 param_1)

{
  void *pvVar1;
  int iVar2;
  int *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c1d2fb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x5c);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_0080ee90(pvVar1,param_1);
  }
  *unaff_ESI = iVar2;
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_0080ee90(undefined4 *param_1,undefined4 *param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1ba28;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = boost::xpressive::detail::
             xpression_adaptor<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_begin_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::simple_repeat_matcher<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::any_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::true_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::mark_end_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::string_matcher<struct_boost::xpressive::cpp_regex_traits<char>,struct_boost::mpl::bool_<0>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::simple_repeat_matcher<struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::any_matcher,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::true_matcher,struct_boost::xpressive::detail::no_next>_>,struct_boost::mpl::bool_<1>_>,struct_boost::xpressive::detail::static_xpression<struct_boost::xpressive::detail::end_matcher,struct_boost::xpressive::detail::no_next>_>_>_>_>_>,struct_boost::xpressive::detail::matchable_ex<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>
             ::vftable;
  param_1[2] = *param_2;
  param_1[3] = param_2[1];
  param_1[4] = param_2[2];
  param_1[5] = param_2[3];
  param_1[6] = param_2[4];
  param_1[7] = param_2[5];
  param_1[8] = param_2[6];
  FUN_0080e880(uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_0080ef20(void)

{
  FUN_0080efc0();
  return;
}



void __thiscall FUN_0080ef40(int param_1_00,undefined4 *param_1)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  
  if (*(char *)(param_1 + 8) != '\0') {
    param_1[7] = param_1[7] + -1;
  }
  iVar2 = *(int *)(param_1_00 + 0x10);
  puVar1 = (undefined *)*param_1;
  *puVar1 = 0;
  iVar3 = 7;
  if (iVar2 != 0) {
    do {
      iVar3 = iVar3 + -1;
      *(undefined4 *)(puVar1 + iVar3 * 4 + 8) = 0xffffffff;
    } while (-1 < iVar3);
    return;
  }
  do {
    iVar3 = iVar3 + -1;
    *(undefined4 *)(puVar1 + iVar3 * 4 + 8) = 0xffffffff;
  } while (-1 < iVar3);
  return;
}



undefined4 * __thiscall FUN_0080ef80(undefined4 *param_1_00,byte param_1)

{
  if (0xf < (uint)param_1_00[0xf]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[10]);
  }
  param_1_00[0xf] = 0xf;
  param_1_00[0xe] = 0;
  *(undefined *)(param_1_00 + 10) = 0;
  *param_1_00 = boost::xpressive::detail::
                matchable<class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
                ::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_0080efc0(int *param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  undefined4 *in_EAX;
  uint local_c;
  
  uVar2 = *(undefined4 *)(in_EAX[2] + 0x1c + *param_1 * 0x24);
  iVar1 = in_EAX[2] + *param_1 * 0x24;
  uVar3 = *(undefined4 *)(iVar1 + 0x18);
  *(undefined4 *)(iVar1 + 0x18) = *in_EAX;
  *(undefined4 *)(iVar1 + 0x1c) = in_EAX[1];
  local_c = (uint)param_1 & 0xffffff00;
  cVar4 = FUN_0080f020(param_2,param_2 + 0x14,local_c);
  if (cVar4 != '\0') {
    return 1;
  }
  *(undefined4 *)(iVar1 + 0x18) = uVar3;
  *(undefined4 *)(iVar1 + 0x1c) = uVar2;
  return 0;
}



undefined4 FUN_0080f020(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  int *in_EAX;
  int iVar5;
  uint uVar6;
  
  iVar1 = *in_EAX;
  iVar2 = in_EAX[1];
  uVar6 = 0;
  if (*(int *)(param_1 + 4) != 0) {
    do {
      cVar4 = FUN_0080f110();
      if (cVar4 == '\0') {
        in_EAX[1] = iVar2;
        *in_EAX = iVar1;
        return 0;
      }
      uVar6 = uVar6 + 1;
    } while (uVar6 < *(uint *)(param_1 + 4));
  }
  while( true ) {
    cVar4 = FUN_0080f170();
    if (cVar4 != '\0') {
      return 1;
    }
    if (*(uint *)(param_1 + 8) <= uVar6) break;
    iVar3 = *in_EAX;
    if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != in_EAX[6])))) {
      FUN_00a3fb10();
    }
    if (in_EAX[1] == in_EAX[7]) {
      *(undefined *)((int)in_EAX + 0x29) = 1;
      break;
    }
    if (*in_EAX != -4) {
      if (*in_EAX == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *in_EAX;
      if (*(uint *)(iVar3 + 0x18) < 0x10) {
        iVar5 = iVar3 + 4;
      }
      else {
        iVar5 = *(int *)(iVar3 + 4);
      }
      if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)in_EAX[1]) {
        FUN_00a3fb10();
      }
    }
    in_EAX[1] = in_EAX[1] + 1;
    uVar6 = uVar6 + 1;
  }
  *in_EAX = iVar1;
  in_EAX[1] = iVar2;
  return 0;
}



uint FUN_0080f110(void)

{
  int iVar1;
  int iVar2;
  int *unaff_ESI;
  
  iVar1 = *unaff_ESI;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != unaff_ESI[6])))) {
    FUN_00a3fb10();
  }
  if (unaff_ESI[1] == unaff_ESI[7]) {
    *(undefined *)((int)unaff_ESI + 0x29) = 1;
    return unaff_ESI[1] & 0xffffff00;
  }
  if (*unaff_ESI != -4) {
    if (*unaff_ESI == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *unaff_ESI;
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar2 = iVar1 + 4;
    }
    else {
      iVar2 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar2) <= (uint)unaff_ESI[1]) {
      FUN_00a3fb10();
    }
  }
  unaff_ESI[1] = unaff_ESI[1] + 1;
  return 1;
}



undefined4 __fastcall FUN_0080f170(int param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  undefined uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  char cVar9;
  int *in_EAX;
  
  iVar3 = *in_EAX;
  iVar4 = param_2[2];
  uVar5 = *(undefined4 *)(iVar4 + iVar3 * 0x24);
  uVar6 = *(undefined4 *)(iVar4 + 4 + iVar3 * 0x24);
  puVar1 = (undefined4 *)(iVar4 + iVar3 * 0x24);
  uVar7 = puVar1[2];
  uVar8 = puVar1[3];
  uVar2 = *(undefined *)(puVar1 + 4);
  *puVar1 = puVar1[6];
  puVar1[1] = puVar1[7];
  puVar1[2] = *param_2;
  puVar1[3] = param_2[1];
  *(undefined *)(puVar1 + 4) = 1;
  cVar9 = FUN_0080f200(param_1,param_1 + 0x20);
  if (cVar9 != '\0') {
    return 1;
  }
  *puVar1 = uVar5;
  puVar1[1] = uVar6;
  *(undefined *)(puVar1 + 4) = uVar2;
  puVar1[2] = uVar7;
  puVar1[3] = uVar8;
  return 0;
}



undefined4 FUN_0080f200(uint param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  int iVar5;
  int *unaff_ESI;
  char *pcVar6;
  
  iVar1 = *unaff_ESI;
  iVar2 = unaff_ESI[1];
  if (*(uint *)(param_1 + 0x18) < 0x10) {
    pcVar6 = (char *)(param_1 + 4);
  }
  else {
    pcVar6 = *(char **)(param_1 + 4);
  }
  if (pcVar6 != *(char **)(param_1 + 0x1c)) {
    do {
      iVar3 = *unaff_ESI;
      if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != unaff_ESI[6])))) {
        FUN_00a3fb10();
      }
      if (unaff_ESI[1] == unaff_ESI[7]) {
        *(undefined *)((int)unaff_ESI + 0x29) = 1;
LAB_0080f2ed:
        *unaff_ESI = iVar1;
        unaff_ESI[1] = iVar2;
        return 0;
      }
      if (*unaff_ESI != -4) {
        if (*unaff_ESI == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *unaff_ESI;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar5 = iVar3 + 4;
        }
        else {
          iVar5 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)unaff_ESI[1]) {
          FUN_00a3fb10();
        }
      }
      if (*(char *)unaff_ESI[1] != *pcVar6) goto LAB_0080f2ed;
      pcVar6 = pcVar6 + 1;
      if (*unaff_ESI != -4) {
        if (*unaff_ESI == 0) {
          FUN_00a3fb10();
        }
        iVar3 = *unaff_ESI;
        if (*(uint *)(iVar3 + 0x18) < 0x10) {
          iVar5 = iVar3 + 4;
        }
        else {
          iVar5 = *(int *)(iVar3 + 4);
        }
        if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)unaff_ESI[1]) {
          FUN_00a3fb10();
        }
      }
      unaff_ESI[1] = unaff_ESI[1] + 1;
    } while (pcVar6 != *(char **)(param_1 + 0x1c));
  }
  param_1 = param_1 & 0xffffff00;
  cVar4 = FUN_0080f320(param_2,param_1);
  if (cVar4 == '\0') {
    unaff_ESI[1] = iVar2;
    *unaff_ESI = iVar1;
    return 0;
  }
  return 1;
}



undefined * FUN_0080f320(uint param_1)

{
  uint *puVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  char cVar7;
  int *in_EAX;
  int *piVar8;
  uint *puVar9;
  uint uVar10;
  uint uVar11;
  undefined auStack_100 [200];
  undefined4 uStack_38;
  int iStack_34;
  uint uStack_30;
  
  uVar10 = param_1;
  iVar2 = in_EAX[6];
  iVar3 = *in_EAX;
  iVar4 = in_EAX[1];
  if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != iVar3)))) {
    uStack_30 = 0x80f34f;
    FUN_00a3fb10();
  }
  uStack_30 = *(uint *)(uVar10 + 4);
  uVar11 = in_EAX[7] - iVar4;
  param_1 = uVar11;
  if (uVar11 < uStack_30) {
    if (*(char *)(uVar10 + 0x10) != '\0') {
      if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != in_EAX[6])))) {
        uStack_30 = 0x80f380;
        FUN_00a3fb10();
      }
      if (iVar4 == in_EAX[7]) {
        in_EAX[0x16] = iVar3;
        in_EAX[0x17] = iVar4;
        return auStack_100;
      }
      uStack_38 = 0x80f3af;
      iStack_34 = iVar3;
      uStack_30 = iVar4;
      piVar8 = (int *)FUN_005ee720();
      in_EAX[0x16] = *piVar8;
      in_EAX[0x17] = piVar8[1];
      return (undefined *)0x0;
    }
  }
  else {
    iStack_34 = 0x80f3db;
    piVar8 = (int *)FUN_005e0be0();
    iVar2 = *piVar8;
    iVar5 = piVar8[1];
    puVar1 = (uint *)(uVar10 + 8);
    puVar9 = &param_1;
    if (*puVar1 <= uVar11) {
      puVar9 = puVar1;
    }
    uStack_30 = *puVar9;
    iStack_34 = 0x80f3ff;
    FUN_005e0be0();
    if (*(char *)(uVar10 + 0x10) != '\0') {
      if ((uVar11 == 0) || (*puVar1 <= uVar11)) {
        if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != in_EAX[6])))) {
          uStack_30 = 0x80f437;
          FUN_00a3fb10();
        }
        if (iVar4 == in_EAX[7]) {
          in_EAX[0x16] = iVar3;
          in_EAX[0x17] = iVar4;
        }
        else {
          uStack_38 = 0x80f45c;
          iStack_34 = iVar3;
          uStack_30 = iVar4;
          piVar8 = (int *)FUN_005ee720();
          in_EAX[0x16] = *piVar8;
          in_EAX[0x17] = piVar8[1];
        }
      }
      else {
        in_EAX[0x16] = *in_EAX;
        in_EAX[0x17] = in_EAX[1];
      }
    }
    uStack_30 = 0x80f475;
    cVar7 = FUN_005e2f60();
    while( true ) {
      if (cVar7 != '\0') {
        return (undefined *)0x1;
      }
      if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != *in_EAX)))) {
        uStack_30 = 0x80f497;
        FUN_00a3fb10();
      }
      if (iVar5 == in_EAX[1]) break;
      if (*in_EAX != -4) {
        if (*in_EAX == 0) {
          uStack_30 = 0x80f4b0;
          FUN_00a3fb10();
        }
        iVar6 = *in_EAX;
        if (*(uint *)(iVar6 + 0x18) < 0x10) {
          uVar10 = iVar6 + 4;
        }
        else {
          uVar10 = *(uint *)(iVar6 + 4);
        }
        if ((uint)in_EAX[1] <= uVar10) {
          uStack_30 = 0x80f4c9;
          FUN_00a3fb10();
        }
      }
      in_EAX[1] = in_EAX[1] + -1;
      uStack_30 = 0x80f4d1;
      cVar7 = FUN_005e2f60();
    }
    *in_EAX = iVar3;
    in_EAX[1] = iVar4;
  }
  return (undefined *)0x0;
}



void FUN_0080f500(int *param_1)

{
  void *pvVar1;
  uint uVar2;
  int *piVar3;
  int *piVar4;
  int unaff_ESI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_EDI;
  undefined auStack_4c [4];
  undefined *local_48;
  int *local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c320f8;
  local_c = ExceptionList;
  local_14 = DAT_0323f878 ^ (uint)auStack_4c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  local_44 = param_1;
  local_48 = &DAT_00dd7dee;
  local_18 = 0xf;
  local_1c = 0;
  local_2c = local_2c & 0xffffff00;
  local_4 = 0;
  piVar4 = (int *)(unaff_ESI + 4);
  piVar3 = piVar4;
  if (0xf < *(uint *)(unaff_ESI + 0x18)) {
    piVar3 = (int *)*piVar4;
  }
  FUN_00425c20(piVar3,unaff_ESI);
  if (0xf < *(uint *)(unaff_ESI + 0x18)) {
    piVar4 = (int *)*piVar4;
  }
  FUN_00425c20(*(int *)(unaff_ESI + 0x14) + (int)piVar4,unaff_ESI);
  if ((*local_44 == 0) || (*(int *)(*local_44 + 0x4c) == 0)) {
    local_44 = (int *)((uint)local_44 & 0xffffff00);
    FUN_0080fc10(&local_48,local_34,local_3c,local_30,local_48,local_48,local_44);
    *(undefined4 *)(unaff_EDI + 0x18) = 0xf;
    *(undefined4 *)(unaff_EDI + 0x14) = 0;
    unaff_EDI[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0
    ;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (unaff_EDI,local_30,0,0xffffffff);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  else {
    FUN_0080f6b0(&local_44,local_30,local_38,local_34,local_40,local_3c,uVar2);
    *(undefined4 *)(unaff_EDI + 0x18) = 0xf;
    *(undefined4 *)(unaff_EDI + 0x14) = 0;
    unaff_EDI[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0
    ;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (unaff_EDI,local_30,0,0xffffffff);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  local_c = ExceptionList;
  if (0xf < local_18) {
    ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ___security_check_cookie_4();
  return;
}



void FUN_0080f670(void)

{
  FUN_0080fc10();
  return;
}



void __fastcall
FUN_0080f6b0(undefined4 param_1_00,undefined4 param_2_00,uint *param_1,uint param_2,
            undefined4 param_3,undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  char *pcVar1;
  char cVar2;
  uint uVar3;
  undefined4 *puVar4;
  int iVar5;
  char *pcVar6;
  undefined4 uVar7;
  undefined auStack_128 [4];
  undefined4 local_124;
  uint *local_120;
  uint local_11c;
  undefined4 local_118;
  char **local_114;
  undefined4 local_110;
  undefined4 local_108;
  uint local_104;
  undefined4 local_100;
  undefined4 local_fc;
  undefined local_d7;
  undefined4 local_d0;
  undefined4 local_c4;
  undefined **local_c0;
  undefined4 local_bc;
  undefined4 *local_b8;
  undefined *local_b4;
  undefined4 local_b0;
  undefined4 local_ac;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined local_a0 [4];
  int local_9c;
  undefined4 *local_98;
  undefined local_58 [16];
  undefined local_48 [56];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c320b8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_128;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xfffffec8;
  ExceptionList = &local_c;
  local_120 = param_1;
  local_110 = param_3;
  local_118 = param_2_00;
  FUN_005e1b70(local_a0);
  local_4 = 0;
  puVar4 = (undefined4 *)FUN_005da1a0(param_2_00);
  FUN_0080d700(&local_100,*puVar4,param_3,param_4,param_5,param_6);
  local_4 = CONCAT31(local_4._1_3_,1);
  cVar2 = FUN_0080fcb0(param_2_00,0,uVar3);
  uVar7 = param_4;
  if (cVar2 != '\0') {
    local_124 = 0;
    puVar4 = (undefined4 *)FUN_005d9fc0();
    local_110 = *puVar4;
    local_124 = local_124 & 0xffffff00;
    FUN_0080fc10(&local_124,param_4,puVar4[1],param_2,local_120,local_120,local_124);
    pcVar1 = *local_114;
    do {
      pcVar6 = pcVar1;
      pcVar1 = pcVar6 + 1;
    } while (*pcVar6 != '\0');
    FUN_00810180(local_a0,&local_124,*local_114,pcVar6,local_124);
    param_2 = local_124;
    local_124 = 0;
    iVar5 = FUN_005d9fc0();
    local_110 = *(undefined4 *)(iVar5 + 8);
    uVar7 = *(undefined4 *)(iVar5 + 0xc);
    local_100 = local_110;
    local_fc = uVar7;
    local_a8 = local_110;
    local_a4 = uVar7;
    iVar5 = FUN_0080fb20();
    local_124 = CONCAT31(local_124._1_3_,iVar5 == 0);
    puVar4 = (undefined4 *)FUN_005da1a0(param_2_00);
    FUN_0080fbb0(*puVar4);
    cVar2 = FUN_0080fcb0(param_2_00,local_124);
    while (cVar2 != '\0') {
      if ((DAT_032ef844 & 1) == 0) {
        DAT_032ef844 = DAT_032ef844 | 1;
        DAT_032ef848 = 0;
        DAT_032ef84c = 0;
        DAT_032ef850 = 0;
        DAT_032ef854 = 0;
        DAT_032ef858 = 0;
      }
      puVar4 = &DAT_032ef848;
      if (local_9c != 0) {
        puVar4 = local_98;
      }
      local_110 = *puVar4;
      local_104 = local_104 & 0xffffff00;
      FUN_0080fc10(&local_108,uVar7,puVar4[1],param_2,local_120,local_120,local_104);
      uVar7 = local_108;
      FUN_0080d810(param_3,param_4,param_5,param_6);
      pcVar1 = *local_114;
      do {
        pcVar6 = pcVar1;
        pcVar1 = pcVar6 + 1;
      } while (*pcVar6 != '\0');
      FUN_00810180(local_a0,&local_11c,*local_114,pcVar6,uVar7);
      param_2 = local_11c;
      if ((DAT_032ef844 & 1) == 0) {
        DAT_032ef844 = DAT_032ef844 | 1;
        DAT_032ef848 = 0;
        DAT_032ef84c = 0;
        DAT_032ef850 = 0;
        DAT_032ef854 = 0;
        DAT_032ef858 = 0;
      }
      puVar4 = &DAT_032ef848;
      if (local_9c != 0) {
        puVar4 = local_98;
      }
      local_110 = puVar4[2];
      uVar7 = puVar4[3];
      local_100 = local_110;
      local_fc = uVar7;
      local_a8 = local_110;
      local_a4 = uVar7;
      iVar5 = FUN_0080fb20();
      local_124 = CONCAT31(local_124._1_3_,iVar5 == 0);
      FUN_005da1a0(param_2_00);
      local_c4 = FUN_005e2560();
      local_b8 = &local_bc;
      local_b4 = local_48;
      local_bc = 0;
      local_b0 = 0;
      local_ac = 0;
      local_d0 = 0;
      local_d7 = 0;
      FUN_005e2d50();
      FUN_005e1a20();
      FUN_005e1e40(local_58);
      cVar2 = FUN_0080fcb0(local_118,local_124);
      param_2_00 = local_118;
    }
  }
  local_11c = local_11c & 0xffffff00;
  FUN_0080fc10(&local_11c,uVar7,param_6,param_2,local_120,local_120,local_11c);
  *local_120 = local_11c;
  local_c0 = boost::xpressive::detail::actionable::vftable;
  local_4 = 0xffffffff;
  FUN_005e1bf0(local_a0);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int FUN_0080fb20(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int in_EAX;
  int *piVar4;
  
  if ((DAT_032ef844 & 1) == 0) {
    DAT_032ef844 = DAT_032ef844 | 1;
    DAT_032ef848 = 0;
    DAT_032ef84c = 0;
    DAT_032ef850 = 0;
    DAT_032ef854 = 0;
    DAT_032ef858 = 0;
  }
  if (*(int *)(in_EAX + 4) == 0) {
    piVar4 = &DAT_032ef848;
  }
  else {
    piVar4 = *(int **)(in_EAX + 8);
  }
  if (*(char *)(piVar4 + 4) != '\0') {
    iVar1 = piVar4[2];
    iVar2 = piVar4[3];
    iVar3 = piVar4[1];
    if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *piVar4)))) {
      FUN_00a3fb10();
    }
    return iVar2 - iVar3;
  }
  return 0;
}



void __fastcall FUN_0080fbb0(int param_1)

{
  int in_EAX;
  undefined4 uVar1;
  
  uVar1 = FUN_005e2560();
  *(undefined4 *)(param_1 + 0x44) = 0;
  *(undefined4 **)(param_1 + 0x48) = (undefined4 *)(param_1 + 0x44);
  *(int *)(param_1 + 0x4c) = in_EAX + 0x58;
  *(undefined4 *)(param_1 + 0x3c) = uVar1;
  *(undefined4 *)(param_1 + 0x50) = 0;
  *(undefined4 *)(param_1 + 0x54) = 0;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined *)(param_1 + 0x29) = 0;
  FUN_005e2d50();
  FUN_005e1a20();
  FUN_005e1e40(in_EAX + 0x48);
  return;
}



void FUN_0080fc10(int *param_1,undefined *param_2,undefined *param_3,int param_4)

{
  undefined uVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined local_8 [8];
  
  if (param_2 == param_3) {
    *param_1 = param_4;
    return;
  }
  do {
    uVar1 = *param_2;
    uVar2 = *(uint *)(param_4 + 0x18);
    puVar3 = (undefined4 *)(param_4 + 4);
    puVar4 = puVar3;
    if (0xf < uVar2) {
      puVar4 = (undefined4 *)*puVar3;
    }
    puVar4 = (undefined4 *)(*(int *)(param_4 + 0x14) + (int)puVar4);
    if (puVar4 == (undefined4 *)0x0) {
LAB_0080fc65:
      FUN_00a3fb10();
    }
    else {
      puVar5 = puVar3;
      if (0xf < uVar2) {
        puVar5 = (undefined4 *)*puVar3;
      }
      if (puVar4 < puVar5) goto LAB_0080fc65;
      if (0xf < uVar2) {
        puVar3 = (undefined4 *)*puVar3;
      }
      if ((undefined4 *)(*(int *)(param_4 + 0x14) + (int)puVar3) < puVar4) goto LAB_0080fc65;
    }
    FUN_008100d0(local_8,uVar1,param_4,puVar4);
    param_2 = param_2 + 1;
    if (param_2 == param_3) {
      *param_1 = param_4;
      return;
    }
  } while( true );
}



undefined4 FUN_0080fcb0(undefined4 param_1,char param_2)

{
  undefined *puVar1;
  char cVar2;
  undefined uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  undefined4 *puVar9;
  int *piVar10;
  undefined uVar11;
  char cVar12;
  uint uVar13;
  int *piVar14;
  undefined4 uVar15;
  int iVar16;
  int *unaff_ESI;
  int local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c32078;
  local_c = ExceptionList;
  uVar13 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  iVar4 = unaff_ESI[0xb];
  cVar2 = *(char *)(unaff_ESI + 10);
  puVar1 = (undefined *)((int)unaff_ESI + 0x26);
  if ((*(char *)((int)unaff_ESI + 0x26) == '\0') && (param_2 == '\0')) {
    uVar11 = 0;
  }
  else {
    uVar11 = 1;
  }
  uVar3 = *puVar1;
  *puVar1 = uVar11;
  local_4 = 0;
  if (*(char *)((int)unaff_ESI + 0x21) == '\0') {
    iVar5 = *unaff_ESI;
    if ((iVar5 != -4) && ((iVar5 == 0 || (iVar5 != unaff_ESI[4])))) {
      FUN_00a3fb10(uVar13);
    }
    if (unaff_ESI[1] == unaff_ESI[5]) {
      uVar11 = 0;
      goto LAB_0080fd3c;
    }
  }
  uVar11 = 1;
LAB_0080fd3c:
  *(undefined *)((int)unaff_ESI + 0x21) = uVar11;
  piVar14 = (int *)FUN_005da1a0(param_1);
  iVar5 = *piVar14;
  local_10 = unaff_ESI[1];
  local_14 = *unaff_ESI;
  iVar6 = unaff_ESI[2];
  iVar7 = unaff_ESI[6];
  piVar14 = (int *)(iVar6 + 0x18);
  iVar8 = unaff_ESI[7];
  *piVar14 = *unaff_ESI;
  *(int *)(iVar6 + 0x1c) = unaff_ESI[1];
  if (*(char *)((int)unaff_ESI + 0x27) == '\0') {
    piVar10 = *(int **)(iVar5 + 0x54);
    if ((piVar10 == (int *)0x0) ||
       ((cVar2 != '\0' && (cVar12 = (**(code **)(*piVar10 + 4))(), cVar12 == '\0')))) {
      cVar12 = FUN_0080da10(param_1,unaff_ESI);
      while( true ) {
        if (cVar12 != '\0') {
          FUN_0080d810(local_14,local_10,iVar7,iVar8);
          *puVar1 = uVar3;
          ExceptionList = local_c;
          return 1;
        }
        if ((cVar2 != '\0') && (*(char *)((int)unaff_ESI + 0x29) != '\0')) {
          puVar9 = (undefined4 *)unaff_ESI[2];
          *puVar9 = puVar9[6];
          puVar9[1] = puVar9[7];
          puVar9[2] = unaff_ESI[6];
          puVar9[3] = unaff_ESI[7];
          *(undefined *)(puVar9 + 4) = 0;
          *puVar1 = uVar3;
          ExceptionList = local_c;
          return 1;
        }
        if ((iVar7 != -4) && ((iVar7 == 0 || (iVar7 != *piVar14)))) {
          FUN_00a3fb10();
        }
        if (iVar8 == *(int *)(iVar6 + 0x1c)) break;
        if (*piVar14 != -4) {
          if (*piVar14 == 0) {
            FUN_00a3fb10();
          }
          iVar5 = *piVar14;
          if (*(uint *)(iVar5 + 0x18) < 0x10) {
            iVar16 = iVar5 + 4;
          }
          else {
            iVar16 = *(int *)(iVar5 + 4);
          }
          if ((uint)(*(int *)(iVar5 + 0x14) + iVar16) <= *(uint *)(iVar6 + 0x1c)) {
            FUN_00a3fb10();
          }
        }
        *(int *)(iVar6 + 0x1c) = *(int *)(iVar6 + 0x1c) + 1;
        *unaff_ESI = *piVar14;
        unaff_ESI[1] = *(int *)(iVar6 + 0x1c);
        *puVar1 = uVar3;
        cVar12 = FUN_0080da10(param_1,unaff_ESI);
      }
    }
    else {
      piVar10 = *(int **)(iVar5 + 0x54);
      cVar12 = (**(code **)(*piVar10 + 8))();
      if (cVar12 != '\0') {
        cVar12 = FUN_008477d0(&local_14);
        if (cVar12 != '\0') {
          *puVar1 = uVar3;
        }
        do {
          *piVar14 = *unaff_ESI;
          *(int *)(iVar6 + 0x1c) = unaff_ESI[1];
          cVar12 = FUN_0080da10(param_1,unaff_ESI);
          if (cVar12 != '\0') {
            FUN_0080d6e0(iVar4,local_14,local_10,iVar7,iVar8);
            uVar15 = 1;
            goto LAB_00810051;
          }
          if ((cVar2 != '\0') && (*(char *)((int)unaff_ESI + 0x29) != '\0')) {
            FUN_0080d7f0();
            uVar15 = 1;
            goto LAB_00810051;
          }
          *puVar1 = uVar3;
          iVar5 = *unaff_ESI;
          if ((iVar5 != -4) && ((iVar5 == 0 || (iVar5 != unaff_ESI[6])))) {
            FUN_00a3fb10();
          }
          if (unaff_ESI[1] == unaff_ESI[7]) break;
          if (*unaff_ESI != -4) {
            if (*unaff_ESI == 0) {
              FUN_00a3fb10();
            }
            iVar5 = *unaff_ESI;
            if (*(uint *)(iVar5 + 0x18) < 0x10) {
              iVar16 = iVar5 + 4;
            }
            else {
              iVar16 = *(int *)(iVar5 + 4);
            }
            if ((uint)(*(int *)(iVar5 + 0x14) + iVar16) <= (uint)unaff_ESI[1]) {
              FUN_00a3fb10();
            }
          }
          unaff_ESI[1] = unaff_ESI[1] + 1;
          cVar12 = (**(code **)(*piVar10 + 8))();
        } while (cVar12 != '\0');
      }
    }
  }
  else {
    cVar12 = FUN_0080da10(param_1,unaff_ESI);
    if (cVar12 != '\0') {
      FUN_0080d810(local_14,local_10,iVar7,iVar8);
      *puVar1 = uVar3;
      ExceptionList = local_c;
      return 1;
    }
    if ((cVar2 != '\0') && (*(char *)((int)unaff_ESI + 0x29) != '\0')) {
      puVar9 = (undefined4 *)unaff_ESI[2];
      *puVar9 = puVar9[6];
      puVar9[1] = puVar9[7];
      puVar9[2] = unaff_ESI[6];
      puVar9[3] = unaff_ESI[7];
      *(undefined *)(puVar9 + 4) = 0;
      *puVar1 = uVar3;
      ExceptionList = local_c;
      return 1;
    }
  }
  *(undefined4 *)(iVar4 + 4) = 0;
  *(undefined4 *)(iVar4 + 8) = 0;
  uVar15 = 0;
LAB_00810051:
  *puVar1 = uVar3;
  ExceptionList = local_c;
  return uVar15;
}



void FUN_00810070(void)

{
  undefined uVar1;
  int iVar2;
  undefined *in_EAX;
  int iVar3;
  int *unaff_EDI;
  undefined4 local_c;
  undefined4 local_8;
  
  uVar1 = *in_EAX;
  iVar2 = *unaff_EDI;
  if (*(uint *)(iVar2 + 0x18) < 0x10) {
    iVar3 = iVar2 + 4;
  }
  else {
    iVar3 = *(int *)(iVar2 + 4);
  }
  FUN_00425c20(*(int *)(iVar2 + 0x14) + iVar3,iVar2);
  FUN_008100d0(&local_c,uVar1,local_c,local_8);
  return;
}



void FUN_008100c0(void)

{
  undefined4 *in_EAX;
  
  *(undefined *)*in_EAX = *(undefined *)(in_EAX + 1);
  return;
}



int * FUN_008100d0(int *param_1,char param_2,int param_3,uint param_4)

{
  int **ppiVar1;
  int **ppiVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_ESI;
  int local_14;
  int local_10;
  int local_8;
  
  ppiVar2 = (int **)(unaff_ESI + 4);
  ppiVar1 = ppiVar2;
  if (0xf < *(uint *)(unaff_ESI + 0x18)) {
    ppiVar1 = (int **)*ppiVar2;
  }
  FUN_00425c20(ppiVar1,unaff_ESI);
  if (param_4 != 0) {
    if ((param_3 != -4) && ((param_3 == 0 || (param_3 != local_14)))) {
      FUN_00a3fb10();
    }
    param_4 = param_4 - local_10;
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
            (unaff_ESI,param_4,1,param_2);
  if (0xf < *(uint *)(unaff_ESI + 0x18)) {
    ppiVar2 = (int **)*ppiVar2;
  }
  FUN_00425c20(ppiVar2,unaff_ESI);
  FUN_005e0be0(param_4);
  *param_1 = param_3;
  param_1[1] = local_8;
  return param_1;
}



int * FUN_00810180(undefined4 param_1,int *param_2,char *param_3,char *param_4,int param_5)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined local_c [4];
  undefined local_8 [8];
  
  if (param_3 == param_4) {
    *param_2 = param_5;
    return param_2;
  }
  do {
    if (*param_3 == '$') {
      piVar3 = (int *)FUN_00810260(local_c,param_5);
      param_5 = *piVar3;
    }
    else {
      uVar2 = *(uint *)(param_5 + 0x18);
      cVar1 = *param_3;
      puVar4 = (undefined4 *)(param_5 + 4);
      puVar5 = puVar4;
      if (0xf < uVar2) {
        puVar5 = (undefined4 *)*puVar4;
      }
      puVar5 = (undefined4 *)(*(int *)(param_5 + 0x14) + (int)puVar5);
      if (puVar5 == (undefined4 *)0x0) {
LAB_008101e8:
        FUN_00a3fb10();
      }
      else {
        puVar6 = puVar4;
        if (0xf < uVar2) {
          puVar6 = (undefined4 *)*puVar4;
        }
        if (puVar5 < puVar6) goto LAB_008101e8;
        if (0xf < uVar2) {
          puVar4 = (undefined4 *)*puVar4;
        }
        if ((undefined4 *)(*(int *)(param_5 + 0x14) + (int)puVar4) < puVar5) goto LAB_008101e8;
      }
      FUN_008100d0(local_8,cVar1,param_5,puVar5);
    }
    param_3 = param_3 + 1;
    if (param_3 == param_4) {
      *param_2 = param_5;
      return param_2;
    }
  } while( true );
}



void __fastcall
FUN_00810260(char **param_1_00,int param_2_00,undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  char *in_EAX;
  undefined4 *puVar2;
  int iVar3;
  undefined4 uVar4;
  char *pcVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  
  pcVar5 = *param_1_00;
  if (pcVar5 != in_EAX) {
    cVar1 = *pcVar5;
    if (cVar1 != '$') {
      if (cVar1 == '&') {
        *param_1_00 = pcVar5 + 1;
        puVar2 = (undefined4 *)FUN_005da070();
      }
      else {
        if (cVar1 == '`') {
          *param_1_00 = pcVar5 + 1;
          puVar2 = (undefined4 *)FUN_00810400();
          iVar3 = FUN_00810400();
          uVar8 = *(undefined4 *)(iVar3 + 0xc);
          uVar7 = *(undefined4 *)(iVar3 + 8);
          uVar4 = puVar2[1];
          uVar6 = *puVar2;
          goto LAB_00810386;
        }
        if (cVar1 == '\'') {
          *param_1_00 = pcVar5 + 1;
          puVar2 = (undefined4 *)FUN_00810420();
          iVar3 = FUN_00810420();
          uVar8 = *(undefined4 *)(iVar3 + 0xc);
          uVar7 = *(undefined4 *)(iVar3 + 8);
          uVar4 = puVar2[1];
          uVar6 = *puVar2;
          goto LAB_00810386;
        }
        iVar3 = (**(code **)(**(int **)(param_2_00 + 0x54) + 0x10))(cVar1,10);
        if (iVar3 == -1) {
          FUN_00810070();
          pcVar5 = *param_1_00;
          goto LAB_008103c8;
        }
        iVar3 = FUN_00810440();
        if (iVar3 == 0) {
          FUN_005e30b0(3,
                       "class std::back_insert_iterator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > __thiscall boost::xpressive::match_results<class std::_String_const_iterator<char,struct std::char_traits<char>,class std::allocator<char> > >::format_backref_<const char*,class std::back_insert_iterator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >>(const char *&,const char *,class std::back_insert_iterator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >) const"
                       ,"D:\\boost_1_53_0\\boost/xpressive/match_results.hpp",0x47f);
        }
        iVar3 = FUN_005da070();
        if (*(char *)(iVar3 + 0x10) == '\0') goto LAB_008103de;
        puVar2 = (undefined4 *)FUN_005da070();
      }
      iVar3 = FUN_005da070();
      uVar8 = *(undefined4 *)(iVar3 + 0xc);
      uVar7 = *(undefined4 *)(iVar3 + 8);
      uVar4 = puVar2[1];
      uVar6 = *puVar2;
LAB_00810386:
      puVar2 = (undefined4 *)FUN_0080f670(param_2,uVar6,uVar4,uVar7,uVar8);
      *param_1 = *puVar2;
      return;
    }
LAB_008103c8:
    *param_1_00 = pcVar5 + 1;
  }
  FUN_00810070();
LAB_008103de:
  *param_1 = param_2;
  return;
}



int FUN_00810400(void)

{
  int in_EAX;
  int iVar1;
  
  if ((-(uint)(*(char *)(in_EAX + 0x18) != '\0') & 0x79b520) != 0) {
    return in_EAX + 0x1c;
  }
  iVar1 = FUN_005da070();
  return iVar1;
}



int FUN_00810420(void)

{
  int in_EAX;
  int iVar1;
  
  if ((-(uint)(*(char *)(in_EAX + 0x30) != '\0') & 0x79b520) != 0) {
    return in_EAX + 0x34;
  }
  iVar1 = FUN_005da070();
  return iVar1;
}



int FUN_00810440(int param_1,int *param_2,int param_3)

{
  int iVar1;
  int unaff_EBX;
  int *unaff_ESI;
  int iVar2;
  
  iVar2 = 0;
  iVar1 = *unaff_ESI;
  while ((iVar1 != param_1 &&
         (iVar1 = (**(code **)(*param_2 + 0x10))(*(undefined *)*unaff_ESI), iVar1 != -1))) {
    iVar2 = iVar2 * unaff_EBX + iVar1;
    if (param_3 < iVar2) {
      return iVar2 / unaff_EBX;
    }
    *unaff_ESI = *unaff_ESI + 1;
    iVar1 = *unaff_ESI;
  }
  return iVar2;
}



undefined4 __thiscall FUN_00810488(undefined4 param_1_00,byte param_1)

{
  FUN_00b5bafe();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_008104a4(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W13A880BC::W906A7B35>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_008104ea(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00810501(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_0081053a(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W13A880BC::W906A7B35>,class_boost::_bi::list1<class_boost::_bi::value<class_W13A880BC::W906A7B35*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_0081053a(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W13A880BC::W906A7B35>,class_boost::_bi::list1<class_boost::_bi::value<class_W13A880BC::W906A7B35*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W13A880BC::W906A7B35>,class_boost::_bi::list1<class_boost::_bi::value<class_W13A880BC::W906A7B35*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00810587(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0x9c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_00b5a7b2(puVar2);
    *puVar2 = W13A880BC::W542819A7::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_0081061d(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 __thiscall FUN_00810601(undefined4 param_1_00,byte param_1)

{
  FUN_00b5b84f();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0081061d(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W13A880BC::W542819A7>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00810663(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0081067a(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W13A880BC::W34443DE2>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_008106c0(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_008106d7(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W13A880BC::WC0CBB831>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0081071d(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00810734(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W13A880BC::WC2A494C4>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0081077a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00810791(undefined4 *param_1_00,byte param_1)

{
  if (param_1_00[2] != 0) {
    FUN_0040127a();
  }
  *param_1_00 = W5FC6A77E::W5212F7B0::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_008107cf(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W13A880BC::W62CEF8EF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00810815(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0081082c(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W13A880BC::W3DC2C751>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00810872(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00810889(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W13A880BC::W5585B6C4>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_008108cf(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_008108ec(undefined4 param_1_00,byte param_1)

{
  FUN_00b5a732();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00810908(undefined4 param_1_00,byte param_1)

{
  FUN_00b59f29();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00810924(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W13A880BC::WBF0CCA9F>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0081096a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00810ba6(void)

{
  char *pcVar1;
  undefined4 *in_EAX;
  
  pcVar1 = *(char **)*in_EAX;
  if (*pcVar1 != '\0') {
    WSACleanup();
    *pcVar1 = '\0';
  }
  return;
}



void FUN_00810bbb(void)

{
  SOCKET *pSVar1;
  SOCKET s;
  undefined4 *in_EAX;
  
  pSVar1 = *(SOCKET **)*in_EAX;
  s = *pSVar1;
  if (s != 0xffffffff) {
    closesocket(s);
    *pSVar1 = 0xffffffff;
  }
  return;
}



void __fastcall FUN_00810bd3(undefined4 *param_1)

{
  *param_1 = W8D227ECF::W53779624::vftable;
  return;
}



undefined4 * __thiscall FUN_00810bda(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8D227ECF::W53779624::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00810bf7(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x90);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0081392f(pvVar2,param_2,param_3);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_008118b7(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00810c71(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0xe8);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00810ce5(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00811914(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00810ce5(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  void *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x3c;
  *param_1 = W8D227ECF::W64DB09AA::vftable;
  param_1[1] = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_03065028,6);
  local_8._0_1_ = 2;
  local_14[0] = (void *)0x11bbb719;
  FUN_00b94330(local_14,uVar2);
  local_8._0_1_ = 4;
  FUN_004017b2(1,0);
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_03065030,7);
  local_8._0_1_ = 5;
  local_14[0] = (void *)0x8ec1a1b0;
  FUN_00b94330(local_14,uVar2);
  local_8._0_1_ = 7;
  FUN_004017b2(1,0);
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_03065038,5);
  local_8._0_1_ = 8;
  local_14[0] = (void *)0xb8f1b2a2;
  FUN_00b94330(local_14,uVar2);
  local_8._0_1_ = 10;
  FUN_004017b2(1,0);
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_03065040,5);
  local_8._0_1_ = 0xb;
  local_14[0] = (void *)0x732d9acf;
  FUN_00b94330(local_14,uVar2);
  local_8._0_1_ = 0xd;
  FUN_004017b2(1,0);
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_03065048,5);
  local_8._0_1_ = 0xe;
  local_14[0] = (void *)0x816daf8d;
  FUN_00b94330(local_14,uVar2);
  local_8._0_1_ = 0x10;
  FUN_004017b2(1,0);
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_03065050,5);
  local_8._0_1_ = 0x11;
  local_14[0] = (void *)0xf0c34611;
  FUN_00b94330(local_14,uVar2);
  local_8._0_1_ = 0x13;
  FUN_004017b2(1,0);
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_03065058,5);
  local_8._0_1_ = 0x14;
  local_14[0] = (void *)0x35bd5f82;
  FUN_00b94330(local_14,uVar2);
  local_8._0_1_ = 0x16;
  FUN_004017b2(1,0);
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_4c,&DAT_03065060,5);
  local_8._0_1_ = 0x17;
  local_14[0] = (void *)0x50ca3a35;
  FUN_00b94330(local_14,uVar2);
  local_8._0_1_ = 0x19;
  FUN_004017b2(1,0);
  local_14[0] = operator_new(0x18);
  local_8._0_1_ = 0x1a;
  if (local_14[0] == (void *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3 = (undefined4 *)FUN_00813c11(local_14[0]);
  }
  local_8 = CONCAT31(local_8._1_3_,0x19);
  puVar1 = (undefined4 *)param_1[1];
  if ((puVar3 != puVar1) && (puVar1 != (undefined4 *)0x0)) {
    (**(code **)*puVar1)(1);
  }
  param_1[1] = puVar3;
  return param_1;
}



undefined4 __thiscall FUN_00810f58(undefined4 param_1_00,byte param_1)

{
  FUN_00810f74();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00810f74(undefined4 *param_1)

{
  *param_1 = W8D227ECF::W64DB09AA::vftable;
  if ((undefined4 *)param_1[1] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[1])(1);
  }
  param_1[1] = 0;
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  if ((undefined4 *)param_1[1] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[1])(1);
  }
  *param_1 = W8D227ECF::W53779624::vftable;
  return;
}



void Catch_All_0081101a(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00811024(void)

{
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x0000000c);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_0081109e(undefined4 param_1_00,uint param_2_00,undefined4 param_1,int *param_2)

{
  undefined *puVar1;
  char cVar2;
  undefined4 *puVar3;
  int **ppiVar4;
  int iVar5;
  uint uStackY_160;
  uint uStackY_15c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbStackY_158;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_120 [28];
  undefined local_104 [4];
  char local_100;
  undefined *local_f4;
  char local_7c;
  undefined local_74 [12];
  int *local_68;
  uint *local_64;
  uint local_60;
  undefined4 *local_5c;
  undefined *local_58;
  undefined local_54 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_38 [28];
  char local_1c [4];
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 300;
  local_8 = 0x8110ad;
  local_5c = (undefined4 *)param_1;
  local_68 = param_2;
  pbStackY_158 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 local_104;
  uStackY_15c = 0x8110d2;
  FUN_0081392f();
  local_8 = 0;
  if (local_100 == '\0') {
    FUN_00b940e0();
  }
  local_58 = (undefined *)(param_2_00 | 0x8000);
  FUN_0081183a();
  local_8._0_1_ = 1;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_120,",");
  pbStackY_158 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 local_54;
  local_8._0_1_ = 2;
  uStackY_15c = 0x81112c;
  FUN_004f4b55();
  pbStackY_158 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 0x81113e;
  FUN_004017b2();
  local_8._0_1_ = 5;
  pbStackY_158 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 0x811151;
  FUN_004017b2();
  cVar2 = local_100;
  if (local_100 != '\0') {
    cVar2 = (**(code **)(*local_68 + 0x20))();
    if (cVar2 != '\0') {
      pbStackY_158 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
                     )local_74;
      uStackY_15c = local_60;
      uStackY_160 = 0x81118c;
      cVar2 = FUN_008115df();
      if (cVar2 != '\0') {
        pbStackY_158 = local_38;
        uStackY_15c = 0x8111b4;
        FUN_004f4b55();
        local_8._0_1_ = 6;
        cVar2 = FUN_00811779();
        if (cVar2 == '\0') {
          FUN_00b940e0();
        }
        pbStackY_158 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        *)0x8111f1;
        FUN_004017b2();
        goto LAB_008111f1;
      }
    }
    cVar2 = '\0';
    FUN_00b940e0();
  }
LAB_008111f1:
  local_5c = (undefined4 *)0x0;
  local_8._0_1_ = 7;
  local_58 = (undefined *)0x0;
  if (cVar2 != '\0') {
    pbStackY_158 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                   0x811214;
    puVar3 = (undefined4 *)FUN_00b933f0();
    *puVar3 = 0;
    FUN_0040c727();
    if (local_64 != (undefined4 *)0x0) {
      (**(code **)*local_64)();
    }
    cVar2 = FUN_00b93010();
    puVar1 = local_58;
    if (cVar2 != '\0') {
      do {
        local_58 = (undefined *)0x0;
        local_64 = &uStackY_160;
        uStackY_160 = uStackY_160 & 0xffffff00;
        pbStackY_158 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        *)puVar1;
        cVar2 = (**(code **)(*local_68 + 8))();
        if (cVar2 == '\0') goto LAB_008113e5;
        if (local_58 == (undefined *)0x0) goto LAB_00811308;
        cVar2 = FUN_008116f7();
        if (cVar2 == '\0') goto LAB_008113e5;
        ppiVar4 = (int **)FUN_00b66323();
        local_8._0_1_ = 8;
        pbStackY_158 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        *)0x8112c2;
        (**(code **)(**ppiVar4 + 0x10))();
        local_8._0_1_ = 7;
        if (local_18 != 0) {
          FUN_0040127a();
        }
        local_64 = &uStackY_15c;
        uStackY_15c = uStackY_15c & 0xffffff00;
        uStackY_160 = 0x8112ee;
        cVar2 = FUN_00b74490();
      } while (cVar2 != '\0');
      FUN_00b940e0();
      cVar2 = '\0';
LAB_00811308:
      if (cVar2 == '\0') goto LAB_008113f0;
      __time64((__time64_t *)0x0);
      cVar2 = FUN_008116f7();
      if (cVar2 != '\0') {
        local_64 = &uStackY_15c;
        uStackY_15c = uStackY_15c & 0xffffff00;
        uStackY_160 = 0x81136d;
        cVar2 = FUN_00b74540();
        if (cVar2 != '\0') {
          pbStackY_158 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          *)0x811388;
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_38,local_1c,4);
          local_8._0_1_ = 9;
          iVar5 = FUN_00429980();
          local_8._0_1_ = 7;
          pbStackY_158 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          *)0x8113b5;
          FUN_004017b2();
          if (iVar5 == 0) {
            pbStackY_158 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                            *)local_f4;
            uStackY_15c = 0x8113d7;
            local_7c = FUN_008141b6();
            if (local_7c != '\0') goto LAB_008113f0;
          }
        }
      }
    }
LAB_008113e5:
    FUN_00b940e0();
  }
LAB_008113f0:
  local_8 = CONCAT31(local_8._1_3_,5);
  if (local_5c != (undefined4 *)0x0) {
    (**(code **)*local_5c)();
  }
  pbStackY_158 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 0x81140d;
  FUN_004017b2();
  local_8 = 0xffffffff;
  FUN_008139bf();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined __thiscall FUN_00811426(int param_1_00,undefined4 param_1)

{
  undefined uVar1;
  undefined4 uVar2;
  undefined local_38 [28];
  undefined local_1c [20];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x811432;
  uVar2 = FUN_004f4b55(local_38,param_1_00 + 0x24,param_1);
  local_8 = 0;
  uVar1 = FUN_00813e23(local_1c,uVar2,1);
  FUN_004017b2(1,0);
  return uVar1;
}



char __thiscall FUN_00811474(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uVar2;
  int *local_3c;
  int iStack_38;
  undefined local_34 [32];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c42081;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar2 = FUN_004f4b55(local_34,param_1_00 + 0x24,param_2,DAT_0323f878 ^ (uint)&stack0xffffffb8);
  local_c = 0;
  FUN_00810bf7(&local_3c,*(undefined4 *)(param_1_00 + 4),uVar2);
  local_c = CONCAT31(local_c._1_3_,2);
  FUN_004017b2(1,0);
  cVar1 = (**(code **)(*local_3c + 4))();
  if (cVar1 == '\0') {
    FUN_00b940e0(0xad933ba6);
  }
  else {
    FUN_005d11c9(param_1);
  }
  local_c = 0xffffffff;
  if (iStack_38 != 0) {
    FUN_0040127a();
  }
  ExceptionList = local_14;
  return cVar1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00811535(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_74 [56];
  undefined local_3c [4];
  undefined4 local_38;
  undefined2 local_34;
  undefined2 local_32;
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8 = 0x811541;
  local_38 = param_1;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_74,&DAT_0306506c,8);
  local_8 = 0;
  local_34 = 0x59da;
  local_32 = 0x6a33;
  uVar1 = FUN_00b94330(&local_34,uVar1);
  local_8._0_1_ = 1;
  FUN_004f4b55(local_30,uVar1,local_38);
  FUN_004017b2(1,0);
  local_8 = CONCAT31(local_8._1_3_,4);
  FUN_004017b2(1,0);
  FUN_00813e23(local_3c,local_30,0);
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_008115df(undefined4 param_1,int *param_2)

{
  char cVar1;
  int iVar2;
  undefined local_5c [4];
  undefined4 uStackY_58;
  undefined *local_38;
  undefined *local_34;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x8115eb;
  cVar1 = FUN_00811779();
  if (cVar1 != '\0') {
    local_38 = local_5c;
    local_5c[0] = 0;
    cVar1 = (**(code **)(*param_2 + 0xc))();
    if (cVar1 != '\0') {
      uStackY_58 = 0x811647;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                (local_30,(char *)&local_38,4);
      local_8 = 0;
      iVar2 = FUN_00429980();
      if (iVar2 != 0) {
        FUN_00b940e0();
      }
      local_8 = 0xffffffff;
      uStackY_58 = 0x81167e;
      FUN_004017b2();
      if (iVar2 != 0) goto LAB_008116ed;
      local_34 = local_5c;
      local_5c[0] = 0;
      cVar1 = (**(code **)(*param_2 + 0xc))();
      if (cVar1 != '\0') {
        local_34 = local_5c;
        local_5c[0] = 0;
        cVar1 = (**(code **)(*param_2 + 0xc))();
        if (cVar1 != '\0') {
          local_34 = local_5c;
          local_5c[0] = 0;
          cVar1 = (**(code **)(*param_2 + 0xc))();
          if (cVar1 != '\0') goto LAB_008116ed;
        }
      }
    }
  }
  FUN_00b940e0();
LAB_008116ed:
  FUN_00a421fb();
  return;
}



char FUN_008116f7(void)

{
  int in_EAX;
  int *unaff_ESI;
  char cVar1;
  
  cVar1 = *(int *)(in_EAX + 0x14) == 4;
  if ((bool)cVar1) {
    cVar1 = (**(code **)(*unaff_ESI + 0x14))();
    if (cVar1 == '\0') {
      cVar1 = '\0';
    }
    else {
      cVar1 = (**(code **)(*unaff_ESI + 0x14))();
      if (cVar1 != '\0') {
        return cVar1;
      }
    }
  }
  FUN_00b940e0();
  return cVar1;
}



bool __fastcall FUN_00811779(undefined *param_1)

{
  char cVar1;
  int in_EAX;
  int *unaff_ESI;
  bool bVar2;
  undefined local_24 [8];
  undefined **local_1c;
  undefined *puStack_18;
  undefined *local_8;
  
  bVar2 = *(int *)(in_EAX + 0x14) == 4;
  if (bVar2) {
    puStack_18 = (undefined *)0x4;
    if (*(uint *)(in_EAX + 0x18) < 0x10) {
      local_1c = (undefined **)(in_EAX + 4);
    }
    else {
      local_1c = *(undefined ***)(in_EAX + 4);
    }
    local_8 = local_24;
    local_24[0] = 0;
    cVar1 = (**(code **)(*unaff_ESI + 0x14))();
    if (cVar1 == '\0') {
      puStack_18 = (undefined *)0xd54bc8f;
      bVar2 = false;
    }
    else {
      local_8 = *(undefined **)(param_1 + 0x14);
      puStack_18 = (undefined *)0x4;
      local_1c = &local_8;
      local_24[0] = 0;
      cVar1 = (**(code **)(*unaff_ESI + 0x14))();
      if (cVar1 == '\0') {
        puStack_18 = (undefined *)0xb2fc02ae;
        bVar2 = false;
      }
      else {
        puStack_18 = local_8;
        if (*(uint *)(param_1 + 0x18) < 0x10) {
          local_1c = (undefined **)(param_1 + 4);
        }
        else {
          local_1c = *(undefined ***)(param_1 + 4);
        }
        local_24[0] = 0;
        cVar1 = (**(code **)(*unaff_ESI + 0x14))();
        if (cVar1 != '\0') {
          return (bool)cVar1;
        }
        puStack_18 = (undefined *)0x4d1a2368;
        bVar2 = false;
      }
    }
  }
  else {
    puStack_18 = (undefined *)0xdb03806c;
    local_8 = param_1;
  }
  local_1c = (undefined **)0x811833;
  FUN_00b940e0();
  return bVar2;
}



void FUN_0081183a(void)

{
  FUN_0081184f();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0081184f(void)

{
  code *pcVar1;
  char cVar2;
  undefined4 uVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *unaff_EBX;
  undefined4 *unaff_ESI;
  
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(unaff_EBX);
  FUN_004f4441(*unaff_ESI);
  cVar2 = FUN_004f43b9(unaff_EBX);
  if (cVar2 != '\0') {
    FUN_00a421fb();
    return;
  }
  uVar3 = FUN_0042a230(&PTR_vftable_0324d364,
                       &std::
                        basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        ::RTTI_Type_Descriptor);
  FUN_00427b80(uVar3);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_008118b7(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8D227ECF::W384FBCCF>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_008118fd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00811914(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8D227ECF::W64DB09AA>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_0081195a(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int **)(unaff_EBP + 8) != (int *)0x0) {
    (**(code **)(**(int **)(unaff_EBP + 8) + 4))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_00811972(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x81197e;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_030650c0,0x19);
  local_8 = 0;
  local_14[0] = 0xabef3326;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall
FUN_00811a2d(undefined4 param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2)

{
  undefined4 uVar1;
  int iVar2;
  undefined local_38 [7];
  char local_31;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_8 = 0x811a39;
  uVar1 = FUN_00811972();
  local_8 = 0;
  local_31 = FUN_00811c72(param_1,uVar1);
  local_8 = 0xffffffff;
  FUN_004017b2(1,0);
  if (local_31 == '\0') {
    FUN_00b940e0(0x23df0b54);
  }
  else if (*(int *)(param_2 + 0x14) != 0) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_30,param_2);
    local_8 = 1;
    local_38[0] = 0x2d;
    iVar2 = FUN_004277a0(local_38,0,1);
    if (iVar2 != -1) {
      FUN_00422150(iVar2);
    }
    FUN_00b9b820();
    local_8._0_1_ = 2;
    FUN_00b9af00();
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_00b9ae90();
    FUN_004017b2(1,0);
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00811aee(undefined4 param_1)

{
  undefined4 uVar1;
  undefined local_74 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_58 [28];
  undefined4 local_3c;
  undefined2 local_36;
  undefined2 local_34;
  char local_31;
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_8 = 0x811afa;
  local_3c = param_1;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_58,&DAT_030650dc,4);
  local_8 = 0;
  local_36 = 0x935b;
  local_34 = 0xb8b1;
  FUN_00b94330(&local_36,uVar1);
  local_8._0_1_ = 2;
  FUN_004017b2(1,0);
  FUN_004f4b55(local_74,local_30,local_3c);
  local_8._0_1_ = 3;
  local_31 = FUN_0081200a();
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_004017b2(1,0);
  if (local_31 == '\0') {
    FUN_00b940e0(0xc2ec413f);
  }
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00811c72(undefined *param_1,undefined4 param_2)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_7c [28];
  undefined4 local_60;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_5c;
  undefined2 local_58;
  undefined2 local_56;
  undefined *local_54;
  char local_4d;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x8c;
  local_8 = 0x811c81;
  local_54 = param_1;
  local_60 = param_2;
  local_18 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_30,0);
  local_8 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_7c,&DAT_030650f0,9);
  local_8._0_1_ = 1;
  local_58 = 0x5b34;
  local_56 = 0x3b21;
  FUN_00b94330();
  local_8._0_1_ = 2;
  FUN_004f4b55();
  FUN_004017b2();
  local_8 = CONCAT31(local_8._1_3_,5);
  FUN_004017b2();
  local_4d = FUN_00811f55();
  if (local_4d == '\0') {
    FUN_00b940e0();
  }
  local_8 = local_8 & 0xffffff00;
  FUN_004017b2();
  if (local_4d == '\0') {
    FUN_0048867c();
  }
  else {
    local_54 = &stack0xffffff3c;
    FUN_0081216e();
    pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_008121df(local_7c);
    local_8 = CONCAT31(local_8._1_3_,6);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_5c,pbVar1,0,0xffffffff);
    FUN_004017b2();
  }
  FUN_004017b2();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00811d98(undefined4 param_1,undefined *param_2)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_6c [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [28];
  undefined4 local_34;
  int local_28;
  int local_24;
  undefined2 local_1a;
  undefined2 local_18;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x5c;
  local_8 = 0x811da4;
  *param_2 = 0;
  FUN_004398f2();
  local_8 = 0;
  uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_6c,&DAT_030650fc,3);
  local_8._0_1_ = 1;
  local_1a = 0x4c88;
  local_18 = 0x151c;
  FUN_00b94330(&local_1a,uVar2);
  local_8._0_1_ = 2;
  cVar1 = FUN_00811fe2(param_1);
  FUN_004017b2(1,0);
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_004017b2(1,0);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x32dc9be6);
  }
  else {
    uVar4 = 0;
    if ((local_24 - local_28) / 0x1c != 0) {
      local_1a = 0xa08f;
      local_18 = 0xfd74;
      do {
        uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          (local_50,&DAT_03065100,7);
        local_8._0_1_ = 3;
        uVar2 = FUN_00b94330(&local_1a,uVar2);
        uVar5 = 0;
        FUN_0064cef0(uVar4);
        iVar3 = FUN_005d04b6(uVar2,uVar5);
        local_15 = iVar3 != -1;
        FUN_004017b2(1,0);
        local_8 = (uint)local_8._1_3_ << 8;
        FUN_004017b2(1,0);
        if (local_15 != '\0') {
          *param_2 = 1;
          break;
        }
        uVar4 = uVar4 + 1;
      } while (uVar4 < (uint)((local_24 - local_28) / 0x1c));
    }
  }
  FUN_0042f245();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_34);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00811ee1(undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 local_2c;
  int local_20;
  int local_1c;
  
  FUN_004398f2();
  cVar1 = FUN_00812061(param_1);
  if (cVar1 == '\0') {
    uVar2 = 0x106faa43;
  }
  else {
    if ((local_1c - local_20) / 0x1c == 0) goto LAB_00811f3a;
    uVar2 = 0x8fdfdb31;
  }
  FUN_00b940e0(uVar2);
LAB_00811f3a:
  FUN_0042f245();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_2c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00811f55(undefined4 param_1,
                 basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                 *param_2)

{
  char cVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  undefined4 local_28;
  int local_1c;
  int local_18;
  
  FUN_004398f2();
  cVar1 = FUN_00812061(param_1);
  if (cVar1 == '\0') {
    uVar3 = 0x82bab5fc;
  }
  else {
    if ((local_18 - local_1c) / 0x1c == 1) {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_0064cef0(0);
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (param_2,pbVar2,0,0xffffffff);
      goto LAB_00811fc7;
    }
    uVar3 = 0x57b67f;
  }
  FUN_00b940e0(uVar3);
LAB_00811fc7:
  FUN_0042f245();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_28);
}



char FUN_00811fe2(undefined4 param_1)

{
  char cVar1;
  
  cVar1 = FUN_00812061(param_1);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xe4fe4df1);
  }
  return cVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0081200a(undefined4 param_1)

{
  char cVar1;
  undefined4 local_2c;
  
  FUN_004398f2();
  cVar1 = FUN_00812061(param_1);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x87b549d0);
  }
  FUN_0042f245();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_2c);
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_00812061(undefined4 param_1_00,undefined4 param_2,undefined4 *param_1)

{
  undefined4 local_60;
  int local_5c;
  char local_56;
  char local_55;
  undefined4 local_54;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [28];
  char local_34 [4];
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x50;
  local_60 = 0;
  local_5c = 0;
  local_8 = 0;
  local_55 = (***(code ***)*param_1)(&local_60,param_2);
  if (local_55 == '\0') {
    FUN_00b940e0(0xf3f9d5ef);
  }
  else {
    local_54 = local_60;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_50);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_004313c6();
    local_56 = '\0';
    do {
      if (local_56 != '\0') break;
      local_34[0] = '\0';
      local_8 = CONCAT31(local_8._1_3_,2);
      local_55 = FUN_008145ed(local_34);
      if (local_55 == '\0') {
        FUN_00b940e0(0x37cd67c6);
      }
      else if ((-(uint)(local_34[0] != '\0') & 0x6a1cd8) == 0) {
        local_56 = '\x01';
      }
      else {
        FUN_00430aa3(local_30);
      }
      if (local_34[0] != '\0') {
        FUN_004017b2(1,0);
        local_34[0] = '\0';
      }
    } while (local_55 != '\0');
    FUN_004017b2(1,0);
  }
  local_8 = 0xffffffff;
  if (local_5c != 0) {
    FUN_0040127a();
  }
  FUN_00a421fb();
  return;
}



void FUN_0081214d(void)

{
  FUN_004017b2(1,0);
  return;
}



void FUN_0081215a(void)

{
  int *in_EAX;
  
  if ((8 < (uint)in_EAX[2]) && (*in_EAX != 0)) {
    FUN_00a3f66c(*in_EAX);
  }
  return;
}



void FUN_0081216e(void)

{
  char *pcVar1;
  undefined4 *_Dst;
  undefined4 *unaff_ESI;
  char *pcVar2;
  
  pcVar1 = " \t";
  do {
    pcVar2 = pcVar1;
    pcVar1 = pcVar2 + 1;
  } while (*pcVar2 != '\0');
  *unaff_ESI = 0;
  pcVar2 = pcVar2 + -0x30650ec;
  unaff_ESI[2] = pcVar2;
  _Dst = unaff_ESI;
  if ((char *)0x8 < pcVar2) {
    _Dst = (undefined4 *)FUN_00823c23(pcVar2);
    *unaff_ESI = _Dst;
  }
  if (0 < (int)pcVar2) {
    _memmove_s(_Dst,(rsize_t)pcVar2,&DAT_030650ec,(rsize_t)pcVar2);
  }
  FUN_00812435(_Dst,unaff_ESI[2] + (int)_Dst,(unaff_ESI[2] + (int)_Dst) - (int)_Dst);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_008121df(undefined4 param_1,int param_2,undefined4 param_3,uint param_4)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined auStack_68 [8];
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined4 uStack_54;
  int iStack_50;
  undefined local_2c [16];
  undefined *local_1c;
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_1c = (undefined *)0x0;
  local_18 = param_1;
  local_8 = 0;
  iStack_50 = 0x812205;
  puVar2 = (undefined4 *)FUN_00428780();
  iStack_50 = puVar2[1];
  uStack_54 = *puVar2;
  uStack_58 = 0x812214;
  puVar2 = (undefined4 *)FUN_00428750();
  uStack_58 = puVar2[1];
  uStack_5c = *puVar2;
  local_1c = auStack_68;
  FUN_00812270();
  puVar2 = (undefined4 *)FUN_008122a1(local_2c);
  iStack_50 = 0x812241;
  puVar3 = (undefined4 *)FUN_00428750();
  uVar1 = local_18;
  iStack_50 = puVar2[1];
  uStack_54 = *puVar2;
  uStack_58 = puVar3[1];
  uStack_5c = *puVar3;
  uStack_60 = 0x812253;
  FUN_00427ea0();
  if ((8 < param_4) && (param_2 != 0)) {
    iStack_50 = param_2;
    uStack_54 = 0x812267;
    FUN_00a3f66c();
  }
  return uVar1;
}



void FUN_00812270(void)

{
  uint uVar1;
  undefined4 *in_EAX;
  undefined4 *_Dst;
  undefined4 *unaff_ESI;
  
  uVar1 = in_EAX[2];
  *unaff_ESI = 0;
  unaff_ESI[2] = uVar1;
  _Dst = unaff_ESI;
  if (8 < uVar1) {
    _Dst = (undefined4 *)FUN_00823c23(uVar1);
    *unaff_ESI = _Dst;
    in_EAX = (undefined4 *)*in_EAX;
  }
  _memcpy(_Dst,in_EAX,unaff_ESI[2]);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4
FUN_008122a1(undefined4 param_1,int param_2,undefined4 param_3,uint param_4,undefined4 param_5,
            undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  undefined auStack_44 [12];
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  int iStack_28;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  iStack_28 = param_8;
  uStack_2c = param_7;
  uStack_30 = param_6;
  uStack_34 = param_5;
  uStack_38 = param_1;
  local_14 = auStack_44;
  FUN_00812270();
  FUN_00812356();
  if ((8 < param_4) && (param_2 != 0)) {
    iStack_28 = param_2;
    uStack_2c = 0x8122ef;
    FUN_00a3f66c();
  }
  return param_1;
}



void Catch_All_0081233e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 8) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00812356(int param_1,undefined4 param_2,uint param_3,undefined4 param_4,undefined4 param_5,
                 undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  char cVar1;
  _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this;
  char *pcVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  local_c = param_7;
  local_8 = param_8;
  do {
    cVar1 = FUN_008477d0(&param_5);
    if (cVar1 == '\0') {
      *unaff_ESI = param_5;
      uVar3 = param_6;
      goto LAB_008123a0;
    }
    this = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
           )FUN_00429850();
    pcVar2 = std::
             _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             ::operator*(this);
    cVar1 = FUN_008123cd(*pcVar2);
  } while (cVar1 != '\0');
  puVar4 = (undefined4 *)
           std::
           _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
           operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       *)&local_c);
  *unaff_ESI = *puVar4;
  uVar3 = puVar4[1];
LAB_008123a0:
  unaff_ESI[1] = uVar3;
  if ((8 < param_3) && (param_1 != 0)) {
    FUN_00a3f66c(param_1);
  }
  return;
}



undefined4 FUN_008123cd(char param_1)

{
  char **ppcVar1;
  int iVar2;
  char **in_EAX;
  int iVar3;
  undefined4 uVar4;
  
  ppcVar1 = in_EAX + 2;
  if ((char *)0x8 < *ppcVar1) {
    in_EAX = (char **)*in_EAX;
  }
  ppcVar1 = (char **)(*ppcVar1 + (int)in_EAX);
  iVar3 = (int)ppcVar1 - (int)in_EAX;
  while (iVar2 = iVar3, 0 < iVar2) {
    iVar3 = iVar2 / 2;
    if (*(char *)(iVar3 + (int)in_EAX) < param_1) {
      in_EAX = (char **)((char *)(iVar3 + (int)in_EAX) + 1);
      iVar3 = iVar2 + (-1 - iVar3);
    }
  }
  if ((in_EAX == ppcVar1) || (param_1 < *(char *)in_EAX)) {
    uVar4 = 0;
  }
  else {
    uVar4 = 1;
  }
  return uVar4;
}



void FUN_00812435(undefined *param_1,int param_2,int param_3)

{
  int iVar1;
  undefined4 local_10;
  undefined *local_c;
  
  iVar1 = param_2 - (int)param_1;
  if (0x20 < iVar1) {
    do {
      if (param_3 < 1) break;
      FUN_0081252a(&local_10,param_1,param_2);
      param_3 = param_3 / 2 + (param_3 / 2) / 2;
      if (local_10 - (int)param_1 < param_2 - (int)local_c) {
        FUN_00812435(param_1,local_10,param_3);
        param_1 = local_c;
      }
      else {
        FUN_00812435(local_c,param_2,param_3);
        param_2 = local_10;
      }
      iVar1 = param_2 - (int)param_1;
    } while (0x20 < iVar1);
    if (0x20 < iVar1) {
      param_2 = param_2 - (int)param_1;
      if (param_2 < 2) {
        return;
      }
      iVar1 = param_2 / 2;
      while (0 < iVar1) {
        iVar1 = iVar1 + -1;
        FUN_00812750(param_1[iVar1]);
      }
      if (param_2 < 2) {
        return;
      }
      if (param_2 < 2) goto LAB_0081250d;
      do {
        local_10 = CONCAT31(local_10._1_3_,param_1[param_2 + -1]);
        param_1[param_2 + -1] = *param_1;
        FUN_00812750(local_10);
LAB_0081250d:
        param_2 = param_2 + -1;
      } while (1 < param_2);
      return;
    }
  }
  if (1 < iVar1) {
    FUN_00812699(param_1,param_2);
  }
  return;
}



void FUN_0081252a(char **param_1,char *param_2,char *param_3)

{
  char cVar1;
  char *pcVar2;
  char *pcVar3;
  char *pcVar4;
  char *pcVar5;
  char *pcVar6;
  char *pcVar7;
  char *local_c;
  char *local_8;
  
  if (0x28 < (int)(param_3 + (-1 - (int)param_2))) {
    FUN_00812722();
    FUN_00812722();
    FUN_00812722();
  }
  FUN_00812722();
  pcVar3 = param_2 + ((int)param_3 - (int)param_2) / 2 + 1;
  pcVar5 = param_2 + ((int)param_3 - (int)param_2) / 2;
  while (pcVar6 = pcVar5, param_2 < pcVar6) {
    cVar1 = pcVar6[-1];
    if ((cVar1 < *pcVar6) || (pcVar5 = pcVar6 + -1, *pcVar6 < cVar1)) break;
  }
  local_c = pcVar6;
  local_8 = pcVar3;
  if (pcVar3 < param_3) {
    do {
      local_8 = pcVar3;
      if ((*pcVar3 < *pcVar6) || (*pcVar6 < *pcVar3)) break;
      pcVar3 = pcVar3 + 1;
      local_8 = pcVar3;
    } while (pcVar3 < param_3);
  }
LAB_00812604:
  do {
    pcVar5 = pcVar6;
    if (param_3 <= pcVar3) {
joined_r0x0081260f:
      while (pcVar2 = local_c, param_2 < pcVar2) {
        local_c = pcVar2 + -1;
        if (*pcVar5 <= *local_c) {
          if (*pcVar5 < *local_c) break;
          pcVar5 = pcVar5 + -1;
          FUN_00418ae3(pcVar5,local_c);
        }
      }
      if (pcVar2 == param_2) {
        if (pcVar3 == param_3) {
          *param_1 = pcVar5;
          param_1[1] = local_8;
          return;
        }
        if (local_8 != pcVar3) {
          FUN_00418ae3(pcVar5,local_8);
        }
        pcVar6 = pcVar5 + 1;
        pcVar4 = pcVar3 + 1;
        pcVar7 = pcVar3;
        local_c = pcVar2;
        local_8 = local_8 + 1;
      }
      else {
        pcVar2 = pcVar2 + -1;
        pcVar6 = pcVar3;
        local_c = pcVar2;
        if (pcVar3 != param_3) goto LAB_008125fc;
        pcVar6 = pcVar5 + -1;
        if (pcVar2 != pcVar6) {
          FUN_00418ae3(pcVar2,pcVar6);
        }
        pcVar7 = local_8 + -1;
        pcVar4 = pcVar3;
        pcVar5 = pcVar6;
        local_8 = pcVar7;
      }
      FUN_00418ae3(pcVar5,pcVar7);
      pcVar3 = pcVar4;
      goto LAB_00812604;
    }
    if (*pcVar3 <= *pcVar6) {
      if (*pcVar3 < *pcVar6) goto joined_r0x0081260f;
      pcVar6 = local_8;
      pcVar2 = pcVar3;
      local_8 = local_8 + 1;
LAB_008125fc:
      FUN_00418ae3(pcVar6,pcVar2);
      pcVar6 = pcVar5;
    }
    pcVar3 = pcVar3 + 1;
  } while( true );
}



void __thiscall FUN_00812699(uint param_1_00,char *param_1,char *param_2)

{
  char cVar1;
  char cVar2;
  char *pcVar3;
  char *pcVar4;
  uint local_8;
  
  if (param_1 != param_2) {
    local_8 = param_1_00;
    for (pcVar3 = param_1 + 1; pcVar3 != param_2; pcVar3 = pcVar3 + 1) {
      cVar1 = *pcVar3;
      pcVar4 = pcVar3;
      if (cVar1 < *param_1) {
        local_8 = local_8 & 0xffffff00;
        FUN_008127b8(param_1,pcVar3,pcVar3 + 1,param_1,param_1,local_8);
        *param_1 = cVar1;
      }
      else {
        while( true ) {
          cVar2 = pcVar4[-1];
          if (cVar2 <= cVar1) break;
          *pcVar4 = cVar2;
          pcVar4 = pcVar4 + -1;
        }
        *pcVar4 = cVar1;
      }
    }
  }
  return;
}



void FUN_008126fb(int param_1,int param_2)

{
  for (; (param_1 != param_2 && (param_2 = param_2 + -0x1c, param_1 != param_2));
      param_1 = param_1 + 0x1c) {
    FUN_0043165e(param_2);
  }
  return;
}



void FUN_00812722(void)

{
  char *unaff_EBX;
  char *unaff_ESI;
  char *unaff_EDI;
  
  if (*unaff_ESI < *unaff_EDI) {
    FUN_00418ae3();
  }
  if (*unaff_EBX < *unaff_ESI) {
    FUN_00418ae3();
  }
  if (*unaff_ESI < *unaff_EDI) {
    FUN_00418ae3();
  }
  return;
}



void __fastcall FUN_00812750(int param_1_00,int param_2,char param_1)

{
  char cVar1;
  int in_EAX;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar4 = param_2 * 2;
  iVar3 = param_2;
  while( true ) {
    iVar2 = iVar4 + 2;
    if (in_EAX <= iVar2) break;
    if (*(char *)(iVar2 + param_1_00) < *(char *)(param_1_00 + -1 + iVar2)) {
      iVar2 = iVar4 + 1;
    }
    *(undefined *)(param_1_00 + iVar3) = *(undefined *)(iVar2 + param_1_00);
    iVar4 = iVar2 * 2;
    iVar3 = iVar2;
  }
  if (iVar2 == in_EAX) {
    *(undefined *)(param_1_00 + iVar3) = *(undefined *)(param_1_00 + -1 + in_EAX);
    iVar3 = in_EAX + -1;
  }
  while ((iVar4 = (iVar3 + -1) / 2, param_2 < iVar3 &&
         (cVar1 = *(char *)(iVar4 + param_1_00), cVar1 < param_1))) {
    *(char *)(iVar3 + param_1_00) = cVar1;
    iVar3 = iVar4;
  }
  *(char *)(iVar3 + param_1_00) = param_1;
  return;
}



void * FUN_008127b8(void *param_1,int param_2,int param_3)

{
  rsize_t _DstSize;
  
  _DstSize = param_2 - (int)param_1;
  if (0 < (int)_DstSize) {
    _memmove_s((void *)(param_3 - _DstSize),_DstSize,param_1,_DstSize);
  }
  return (void *)(param_3 - _DstSize);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __fastcall FUN_008127de(undefined4 param_1)

{
  undefined4 uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x8127ea;
  local_14[0] = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,&DAT_03065120,7);
  local_8 = 0;
  local_14[0] = 0xba3d7884;
  FUN_00b94330(local_14,uVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall
FUN_00812833(undefined4 param_1_00,int **param_2_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  undefined local_94 [8];
  char *local_8c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_6c [28];
  char local_50 [4];
  undefined4 local_4c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_48;
  undefined **local_44;
  undefined *local_40;
  int local_3c;
  undefined4 *local_38;
  char local_31;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x5c;
  local_8 = 0x81283f;
  local_48 = param_1;
  local_4c = param_2;
  if (*param_2_00 != (int *)0x0) {
    FUN_00ba6c80();
    local_8._0_1_ = 0;
    local_8._1_3_ = 0;
    piVar1 = *param_2_00;
    local_40 = local_94;
    local_3c = 0;
    local_8c = local_50;
    local_94[0] = 0;
    cVar2 = (**(code **)(*piVar1 + 0xc))();
    if ((cVar2 == '\0') || (local_3c != 4)) {
      local_31 = '\0';
      FUN_00b940e0();
    }
    else {
      local_31 = '\x01';
      pbVar3 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
               basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                         (local_6c,local_50,4);
      local_8._0_1_ = 1;
      local_8c = (char *)0x8128bc;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (local_48,pbVar3,0,0xffffffff);
      FUN_004017b2();
    }
    local_38 = (undefined4 *)0x0;
    if (local_31 != '\0') {
      local_44 = W5FC6A77E::W13669450::vftable;
      local_40 = (undefined *)((uint)local_40 & 0xffff0000);
      local_8 = CONCAT31(local_8._1_3_,3);
      local_8c = (char *)0x8128f3;
      cVar2 = (**(code **)(*piVar1 + 0x10))();
      if ((cVar2 == '\0') || (local_38 == (undefined4 *)0x0)) {
        local_31 = '\0';
        FUN_00b940e0();
      }
      else {
        local_31 = '\x01';
      }
      local_8._0_1_ = 2;
      if (local_31 != '\0') {
        local_8c = (char *)0x812936;
        local_31 = FUN_00bb6b50();
        if (local_31 == '\0') {
          FUN_00b940e0();
        }
      }
    }
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_38 != (undefined4 *)0x0) {
      (**(code **)*local_38)();
    }
    FUN_00b9fb30();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_0081296e(undefined4 param_1_00,int *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  char cVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_78 [56];
  undefined4 local_40;
  undefined2 local_3c;
  undefined2 local_3a;
  undefined4 local_38;
  int *local_34;
  char local_2d;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x68;
  local_8 = 0x81297a;
  local_40 = param_2;
  local_34 = param_1;
  local_38 = param_1_00;
  if (*param_1 != 0) {
    FUN_00ba6c80();
    local_8 = 0;
    local_2d = '\x01';
    cVar3 = '\x01';
    while ((cVar3 != '\0' && (local_2d = FUN_00812833(local_38,local_40), local_2d != '\0'))) {
      uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
              basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        (local_78,&DAT_03065128,5);
      local_8._0_1_ = 1;
      local_3c = 0xfff9;
      local_3a = 0xd981;
      uVar1 = FUN_00b94330(&local_3c,uVar1);
      local_8._0_1_ = 2;
      iVar2 = FUN_00429980(uVar1);
      cVar3 = '\x01' - (iVar2 != 0);
      FUN_004017b2(1,0);
      local_8 = (uint)local_8._1_3_ << 8;
      FUN_004017b2(1,0);
      if (cVar3 == '\0') break;
      if ((-(uint)(local_34[2] != 0) & 0x7a491c) != 0) {
        FUN_0044be74(local_40);
      }
    }
    FUN_00b9fb30();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_00812a6b(undefined4 param_1_00,undefined4 param_2,undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  undefined *unaff_ESI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_6c [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [28];
  undefined4 local_34;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [24];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x60;
  local_8 = 0x812a77;
  local_34 = param_1;
  *unaff_ESI = 0;
  local_18 = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_30,0);
  local_8._0_1_ = 0;
  local_8._1_3_ = 0;
  cVar1 = FUN_0081296e(param_1_00,param_2,local_34);
  if (cVar1 == '\0') {
    FUN_00b940e0(0x88d0a08);
  }
  else {
    uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      (local_6c,&DAT_03065130,5);
    local_8._0_1_ = 1;
    local_34 = 0x68103d14;
    uVar2 = FUN_00b94330(&local_34,uVar2);
    local_8._0_1_ = 2;
    iVar3 = FUN_00429980(uVar2);
    FUN_004017b2(1,0);
    local_8._0_1_ = 0;
    FUN_004017b2(1,0);
    if (iVar3 == 0) {
      *unaff_ESI = 1;
    }
    else {
      uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
              basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        (local_50,"\x04+",5);
      local_8._0_1_ = 3;
      local_34 = 0x521b06bb;
      uVar2 = FUN_00b94330(&local_34,uVar2);
      local_8._0_1_ = 4;
      FUN_00429980(uVar2);
      FUN_004017b2(1,0);
      FUN_004017b2(1,0);
    }
  }
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00812ba6(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int *unaff_EBX;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_94 [56];
  undefined4 local_5c;
  undefined4 local_58;
  undefined2 local_52;
  undefined2 local_50;
  char local_4e;
  char local_4d;
  undefined local_4c [28];
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x84;
  local_8 = 0x812bb5;
  local_58 = param_1;
  local_5c = param_2;
  if (*unaff_EBX == 0) goto LAB_00812cd2;
  FUN_00ba6c80();
  local_8 = 0;
  uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_94,&DAT_03065140,8);
  local_8._0_1_ = 1;
  local_52 = 0xfc35;
  local_50 = 0x1291;
  uVar1 = FUN_00b94330(&local_52,uVar1);
  local_8._0_1_ = 2;
  FUN_004f4b55(local_4c,uVar1,local_5c);
  FUN_004017b2(1,0);
  local_8 = CONCAT31(local_8._1_3_,5);
  FUN_004017b2(1,0);
  local_4d = FUN_00bb0ecf();
  if (local_4d == '\0') {
    FUN_00b940e0(0x3fd0ba62);
  }
  local_8 = local_8 & 0xffffff00;
  FUN_004017b2(1,0);
  local_4e = '\0';
  if (local_4d != '\0') {
    local_4d = FUN_00812a6b(local_30);
    if (local_4d == '\0') {
      uVar1 = 0x11e9a558;
    }
    else {
      if (local_4e != '\0') goto LAB_00812cc7;
      local_4d = '\0';
      if ((-(uint)(unaff_EBX[10] != 0) & 0x7a491c) != 0) {
        FUN_0044be74(local_58);
      }
      uVar1 = 0xc31b5da4;
    }
    FUN_00b940e0(uVar1);
  }
LAB_00812cc7:
  FUN_00b9fb30();
LAB_00812cd2:
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00812cda(void)

{
  undefined4 uVar1;
  int iVar2;
  undefined *unaff_ESI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_60 [32];
  undefined8 local_40;
  char local_35;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_34 [24];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x6c;
  local_8 = 0x812ce6;
  local_1c = 0xf;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::_Eos
            (local_34,0);
  local_8 = 0;
  *unaff_ESI = 1;
  local_40 = FUN_0043b546(0,0,1,0,0);
  FUN_00b9fb90(local_60,&local_40);
  local_8._0_1_ = 1;
  uVar1 = FUN_008127de();
  local_8._0_1_ = 2;
  local_35 = FUN_00812ba6(local_34,uVar1);
  FUN_004017b2(1,0);
  local_8._0_1_ = 0;
  FUN_00b9fb30();
  if (local_35 == '\0') {
    FUN_00b940e0(0x237a3246);
  }
  else {
    uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      (local_60,&DAT_0306514c,3);
    local_8._0_1_ = 3;
    local_40._4_4_ = 0xd582ad0a;
    uVar1 = FUN_00b94330((int)&local_40 + 4,uVar1);
    local_8._0_1_ = 4;
    iVar2 = FUN_00429980(uVar1);
    FUN_004017b2(1,0);
    FUN_004017b2(1,0);
    local_40 = CONCAT44(local_40._4_4_,(undefined4)local_40);
    if (iVar2 == 0) {
      *unaff_ESI = 0;
      local_40 = CONCAT44(local_40._4_4_,(undefined4)local_40);
    }
  }
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



undefined4 FUN_0081342c(int param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  bool bVar5;
  undefined local_54 [16];
  undefined local_44 [16];
  undefined local_34 [16];
  undefined local_24 [16];
  int local_14 [4];
  
  piVar3 = (int *)(param_1 + 0x164);
  piVar1 = (int *)FUN_00413fc2(local_24);
  local_14[0] = *piVar1;
  local_14[1] = piVar1[1];
  local_14[2] = piVar1[2];
  local_14[3] = piVar1[3];
  iVar2 = 4;
  bVar5 = true;
  piVar1 = piVar3;
  piVar4 = local_14;
  do {
    if (iVar2 == 0) break;
    iVar2 = iVar2 + -1;
    bVar5 = *piVar1 == *piVar4;
    piVar1 = piVar1 + 1;
    piVar4 = piVar4 + 1;
  } while (bVar5);
  if (!bVar5) {
    piVar1 = (int *)FUN_0047af40(local_34);
    local_14[0] = *piVar1;
    local_14[1] = piVar1[1];
    local_14[2] = piVar1[2];
    local_14[3] = piVar1[3];
    iVar2 = 4;
    bVar5 = true;
    piVar1 = piVar3;
    piVar4 = local_14;
    do {
      if (iVar2 == 0) break;
      iVar2 = iVar2 + -1;
      bVar5 = *piVar1 == *piVar4;
      piVar1 = piVar1 + 1;
      piVar4 = piVar4 + 1;
    } while (bVar5);
    if (!bVar5) {
      piVar1 = (int *)FUN_0047af84(local_44);
      local_14[0] = *piVar1;
      local_14[1] = piVar1[1];
      local_14[2] = piVar1[2];
      local_14[3] = piVar1[3];
      iVar2 = 4;
      bVar5 = true;
      piVar1 = piVar3;
      piVar4 = local_14;
      do {
        if (iVar2 == 0) break;
        iVar2 = iVar2 + -1;
        bVar5 = *piVar1 == *piVar4;
        piVar1 = piVar1 + 1;
        piVar4 = piVar4 + 1;
      } while (bVar5);
      if (!bVar5) {
        piVar1 = (int *)FUN_0047afc8(local_54);
        local_14[0] = *piVar1;
        local_14[1] = piVar1[1];
        local_14[2] = piVar1[2];
        local_14[3] = piVar1[3];
        iVar2 = 4;
        bVar5 = true;
        piVar1 = local_14;
        do {
          if (iVar2 == 0) break;
          iVar2 = iVar2 + -1;
          bVar5 = *piVar3 == *piVar1;
          piVar3 = piVar3 + 1;
          piVar1 = piVar1 + 1;
        } while (bVar5);
        if (!bVar5) {
          return 0;
        }
      }
    }
  }
  return 1;
}



bool FUN_008134cc(int *param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  int *piVar3;
  int iVar4;
  char *pcVar5;
  char *pcVar6;
  bool bVar7;
  undefined4 uVar8;
  bool local_3d;
  undefined4 local_38;
  int local_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined local_28 [20];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5c93a;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  FUN_005d1159(uVar1);
  pcVar6 = (char *)(param_2 + 0x164);
  local_3d = (-(uint)(*(char *)(param_2 + 0x10) != '\0') & 0x6a1cd8) != 0;
  if (!local_3d) {
    uVar8 = 0x4b0fc25b;
    goto LAB_0081367a;
  }
  puVar2 = (undefined4 *)FUN_00413fc2(local_28);
  local_38 = *puVar2;
  local_34 = puVar2[1];
  uStack_30 = puVar2[2];
  uStack_2c = puVar2[3];
  iVar4 = (param_2 + 0x174) - (int)pcVar6;
  bVar7 = true;
  pcVar5 = pcVar6;
  puVar2 = &local_38;
  do {
    if (iVar4 == 0) break;
    iVar4 = iVar4 + -1;
    bVar7 = *pcVar5 == *(char *)puVar2;
    pcVar5 = pcVar5 + 1;
    puVar2 = (undefined4 *)((int)puVar2 + 1);
  } while (bVar7);
  if (bVar7) {
    FUN_008147b9(&local_38);
    local_c = 0;
LAB_00813616:
    FUN_005d11c9(param_1);
    local_c = 0xffffffff;
    if (local_34 != 0) {
      FUN_0040127a();
    }
  }
  else {
    puVar2 = (undefined4 *)FUN_0047af40(local_28);
    local_38 = *puVar2;
    local_34 = puVar2[1];
    uStack_30 = puVar2[2];
    uStack_2c = puVar2[3];
    iVar4 = (param_2 + 0x174) - (int)pcVar6;
    bVar7 = true;
    pcVar5 = pcVar6;
    puVar2 = &local_38;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar7 = *pcVar5 == *(char *)puVar2;
      pcVar5 = pcVar5 + 1;
      puVar2 = (undefined4 *)((int)puVar2 + 1);
    } while (bVar7);
    if (bVar7) {
      FUN_008147b9(&local_38);
      local_c = 1;
      goto LAB_00813616;
    }
    puVar2 = (undefined4 *)FUN_0047af84(local_28);
    local_38 = *puVar2;
    local_34 = puVar2[1];
    uStack_30 = puVar2[2];
    uStack_2c = puVar2[3];
    iVar4 = (param_2 + 0x174) - (int)pcVar6;
    bVar7 = true;
    pcVar5 = pcVar6;
    puVar2 = &local_38;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar7 = *pcVar5 == *(char *)puVar2;
      pcVar5 = pcVar5 + 1;
      puVar2 = (undefined4 *)((int)puVar2 + 1);
    } while (bVar7);
    if (bVar7) {
      FUN_008147b9(&local_38);
      local_c = 2;
      goto LAB_00813616;
    }
    puVar2 = (undefined4 *)FUN_0047afc8(local_28);
    local_38 = *puVar2;
    local_34 = puVar2[1];
    uStack_30 = puVar2[2];
    uStack_2c = puVar2[3];
    iVar4 = (param_2 + 0x174) - (int)pcVar6;
    bVar7 = true;
    puVar2 = &local_38;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar7 = *pcVar6 == *(char *)puVar2;
      pcVar6 = pcVar6 + 1;
      puVar2 = (undefined4 *)((int)puVar2 + 1);
    } while (bVar7);
    if (bVar7) {
      FUN_008147b9(&local_38);
      local_c = 3;
      goto LAB_00813616;
    }
  }
  local_3d = *param_1 != 0;
  if (local_3d) {
    piVar3 = (int *)FUN_00ba5779(param_2 + 0x14);
    local_3d = (~-(uint)(*piVar3 != 1) & 0x7a491c) != 0;
    if (local_3d) {
      ExceptionList = local_14;
      return local_3d;
    }
    uVar8 = 0xebabe1f5;
  }
  else {
    uVar8 = 0x73fd84fe;
  }
LAB_0081367a:
  FUN_00b940e0(uVar8);
  FUN_005d1159(uVar1);
  ExceptionList = local_14;
  return local_3d;
}



bool FUN_008136a6(int param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  bool bVar4;
  undefined local_24 [16];
  int local_14 [4];
  
  piVar1 = (int *)FUN_0047b00c(local_24);
  local_14[0] = *piVar1;
  local_14[1] = piVar1[1];
  local_14[2] = piVar1[2];
  local_14[3] = piVar1[3];
  iVar2 = 4;
  bVar4 = true;
  piVar1 = (int *)(param_1 + 0x164);
  piVar3 = local_14;
  do {
    if (iVar2 == 0) {
      return bVar4;
    }
    iVar2 = iVar2 + -1;
    bVar4 = *piVar1 == *piVar3;
    piVar1 = piVar1 + 1;
    piVar3 = piVar3 + 1;
  } while (bVar4);
  return bVar4;
}



char FUN_008136dd(int **param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  int *piVar3;
  int iVar4;
  char *pcVar5;
  bool bVar6;
  undefined4 uVar7;
  char local_41;
  undefined local_40 [4];
  int local_3c;
  int *local_38;
  int iStack_34;
  undefined4 local_28;
  int iStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5c8ff;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  FUN_005d1159(uVar1);
  local_41 = (-(uint)(*(char *)(param_2 + 0x10) != '\0') & 0x6a1cd8) != 0;
  if ((bool)local_41) {
    puVar2 = (undefined4 *)FUN_0047b00c(&local_38);
    local_28 = *puVar2;
    iStack_24 = puVar2[1];
    uStack_20 = puVar2[2];
    uStack_1c = puVar2[3];
    iVar4 = (param_2 + 0x174) - (int)(char *)(param_2 + 0x164);
    bVar6 = true;
    pcVar5 = (char *)(param_2 + 0x164);
    puVar2 = &local_28;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar6 = *pcVar5 == *(char *)puVar2;
      pcVar5 = pcVar5 + 1;
      puVar2 = (undefined4 *)((int)puVar2 + 1);
    } while (bVar6);
    if (bVar6) {
      FUN_008147b9(local_40);
      local_c = 0;
      FUN_005d11c9(param_1);
      local_c = 0xffffffff;
      if (local_3c != 0) {
        FUN_0040127a();
      }
    }
    local_41 = *param_1 != (int *)0x0;
    if ((bool)local_41) {
      piVar3 = (int *)FUN_00ba5779(param_2 + 0x14);
      local_41 = (~-(uint)(*piVar3 != 1) & 0x7a491c) != 0;
      if ((bool)local_41) {
        uVar7 = (**(code **)(**param_1 + 0x2c))(&local_28,0x5d9f44bb);
        local_c = 1;
        FUN_00813879(&local_38,uVar7);
        local_c = CONCAT31(local_c._1_3_,3);
        if (iStack_24 != 0) {
          FUN_0040127a();
        }
        if ((local_38 != (int *)0x0) &&
           (local_41 = (**(code **)(*local_38 + 0xc))(), local_41 == '\0')) {
          FUN_00b940e0(0x8e0aa6e6);
        }
        local_c = 0xffffffff;
        if (iStack_34 != 0) {
          FUN_0040127a();
        }
        if (local_41 != '\0') {
          ExceptionList = local_14;
          return local_41;
        }
        goto LAB_00813858;
      }
      uVar7 = 0x4ddf904a;
    }
    else {
      uVar7 = 0xcff63b12;
    }
  }
  else {
    uVar7 = 0xec895ff3;
  }
  FUN_00b940e0(uVar7);
LAB_00813858:
  FUN_005d1159(uVar1);
  ExceptionList = local_14;
  return local_41;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00813879(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x813885;
  local_14 = 0;
  ___RTDynamicCast(0,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                   &W8D227ECF::WDD39D6FA::RTTI_Type_Descriptor,0);
  iVar1 = ___RTDynamicCast(*param_2,0,&W5FC6A77E::W5212F7B0::RTTI_Type_Descriptor,
                           &W8D227ECF::WDD39D6FA::RTTI_Type_Descriptor,0);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_2 + 1);
  }
  local_18 = 0;
  local_14 = 2;
  *param_1 = 0;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&local_18);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0081392f(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  
  *param_1 = W8D227ECF::W384FBCCF::vftable;
  *(undefined *)(param_1 + 1) = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = param_2;
  param_1[6] = 0;
  param_1[7] = 0;
  FUN_00b6f370(param_1 + 8);
  *(undefined *)(param_1 + 0x22) = 0;
  cVar1 = FUN_00813e23(param_1 + 2,param_3,0);
  if (cVar1 == '\0') {
    FUN_00b940e0(0xd035e6d5);
  }
  *(char *)(param_1 + 1) = cVar1;
  return param_1;
}



undefined4 __thiscall FUN_008139a3(undefined4 param_1_00,byte param_1)

{
  FUN_008139bf();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_008139bf(undefined4 *param_1)

{
  *param_1 = W8D227ECF::W384FBCCF::vftable;
  FUN_00b6f120();
  *param_1 = W76FAFBE0::WE4A1E41E::vftable;
  return;
}



void Catch_All_008139f2(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall FUN_008139fc(int param_1)

{
  uint *puVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  uint param_4;
  uint *param_5;
  undefined4 **local_44;
  char *pcStack_40;
  undefined4 local_3c;
  int iStack_38;
  undefined4 ***local_24;
  uint *local_20;
  undefined4 local_1c;
  undefined4 *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_20 = param_5;
  local_8 = 0;
  local_11 = '\x01';
  do {
    if ((param_4 <= *(uint *)(param_1 + 0x6c)) || (*(char *)(param_1 + 0x88) != '\0')) break;
    local_18 = (undefined4 *)0x0;
    local_8 = CONCAT31(local_8._1_3_,1);
    iStack_38 = *(int *)(param_1 + 0xc);
    local_3c = *(undefined4 *)(param_1 + 8);
    local_44 = &local_18;
    pcStack_40 = (char *)(param_1 + 0x88);
    local_11 = FUN_00814006(*(undefined4 *)(param_1 + 0x10));
    if (local_11 == '\0') {
      iStack_38 = -0x55a9379d;
      local_3c = 0x813a5f;
      FUN_00b940e0();
    }
    else {
      iVar3 = local_18[2];
      if (iVar3 != 0) {
        local_1c = 0;
        iStack_38 = 0x813a77;
        FUN_00b93390();
        local_24 = &local_44;
        local_44 = (undefined4 **)((uint)local_44 & 0xffffff00);
        local_3c = local_1c;
        iStack_38 = iVar3;
        FUN_00b6fa00();
      }
    }
    local_8 = local_8 & 0xffffff00;
    if (local_18 != (undefined4 *)0x0) {
      iStack_38 = 1;
      local_3c = 0x813aa0;
      (**(code **)*local_18)();
    }
  } while (local_11 != '\0');
  if (local_11 != '\0') {
    local_24 = (undefined4 ***)&pcStack_40;
    local_44 = (undefined4 **)0x813abe;
    FUN_00b9ab90();
    local_44 = (undefined4 **)0x813ac9;
    uVar4 = FUN_00b6f3f0();
    *local_20 = uVar4;
    puVar1 = (uint *)(param_1 + 0x18);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 + uVar4;
    *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + (uint)CARRY4(uVar2,uVar4);
  }
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall
FUN_00813adf(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3,uint param_4,
            uint *param_5)

{
  uint uVar1;
  undefined4 *puVar2;
  uint local_48;
  undefined4 uStack_44;
  int local_40;
  uint uStack_3c;
  undefined4 local_38 [5];
  uint *local_24;
  undefined4 *local_20;
  uint *local_1c;
  uint local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_1c = param_5;
  local_8 = 0;
  local_11 = '\x01';
  *param_5 = 0;
  while( true ) {
    uVar1 = *local_1c;
    if (param_4 <= uVar1) {
      return local_11;
    }
    local_18 = param_4 - uVar1;
    if (0xfff < local_18) {
      local_18 = 0x1000;
    }
    if (local_11 == '\0') {
      return '\0';
    }
    local_38[0] = 0x813b33;
    local_11 = FUN_00b9a9d0();
    if (local_11 == '\0') break;
    local_38[0] = 0;
    uStack_3c = local_18;
    local_40 = uVar1 + param_3;
    local_24 = &local_48;
    local_48 = local_48 & 0xffffff00;
    puVar2 = (undefined4 *)FUN_00b932e0();
    local_8._0_1_ = 1;
    local_38[0] = *puVar2;
    local_24 = local_38;
    *puVar2 = 0;
    uStack_3c = *(undefined4 *)(param_1_00 + 0xc);
    local_40 = *(undefined4 *)(param_1_00 + 8);
    uStack_44 = *(undefined4 *)(param_1_00 + 0x10);
    local_48 = 0x813b79;
    local_11 = FUN_00813f58();
    local_8 = (uint)local_8._1_3_ << 8;
    if (local_20 != (undefined4 *)0x0) {
      local_38[0] = 1;
      uStack_3c = 0x813b8c;
      (**(code **)*local_20)();
    }
    if (local_11 == '\0') {
      local_38[0] = 0x4280ed6d;
      goto LAB_00813baa;
    }
    *local_1c = *local_1c + local_18;
  }
  local_38[0] = 0x998d7b7e;
  local_11 = '\0';
LAB_00813baa:
  uStack_3c = 0x813bb4;
  FUN_00b940e0();
  return local_11;
}



undefined * FUN_00813bc0(undefined *param_1)

{
  *param_1 = 0;
  FUN_0046cc2f();
  return param_1;
}



void __thiscall FUN_00813bd8(int param_1_00,undefined *param_1)

{
  uint uVar1;
  uint uVar2;
  int iVar4;
  uint uVar3;
  
  if (*(char *)(param_1_00 + 0x88) == '\0') {
    *param_1 = 0;
  }
  else {
    uVar1 = *(uint *)(param_1_00 + 0x6c);
    uVar2 = *(uint *)(param_1_00 + 0x18);
    uVar3 = *(uint *)(param_1_00 + 0x18);
    iVar4 = *(int *)(param_1_00 + 0x1c);
    *param_1 = 0;
    if ((int *)(param_1 + 8) != (int *)0x0) {
      *(uint *)(param_1 + 8) = uVar1 + uVar3;
      *(uint *)(param_1 + 0xc) = iVar4 + (uint)CARRY4(uVar1,uVar2);
    }
    *param_1 = 1;
  }
  return;
}



undefined FUN_00813c0c(void)

{
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00813c11(undefined4 *param_1)

{
  undefined4 local_2c;
  undefined4 *local_28;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  param_1[1] = 0;
  param_1[2] = 0;
  local_8 = 0;
  *param_1 = W8D227ECF::W40474632::vftable;
  param_1[3] = 1;
  local_2c = 0x813c41;
  local_28 = param_1 + 4;
  FUN_00814be1();
  local_14 = &local_2c;
  local_8 = CONCAT31(local_8._1_3_,1);
  local_2c = param_1[4];
                    // WARNING: Subroutine does not return
  FUN_0043c023(param_1 + 5);
}



undefined4 __thiscall FUN_00813c6c(undefined4 param_1_00,byte param_1)

{
  FUN_00813c88();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00813c88(undefined4 *param_1)

{
  int iVar1;
  uint3 uVar2;
  undefined4 local_20 [2];
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = W8D227ECF::W40474632::vftable;
  local_8._1_3_ = 0;
  uVar2 = local_8._1_3_;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  if (local_20 != param_1 + 4) {
    param_1[4] = 0;
  }
  iVar1 = param_1[5];
  param_1[5] = 0;
  local_18 = param_1;
  if (iVar1 != 0) {
    FUN_0040127a();
    uVar2 = local_8._1_3_;
  }
  local_8._1_3_ = uVar2;
  local_8._0_1_ = 1;
  if (param_1[5] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00b6639e();
  return;
}



void Catch_All_00813ce3(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00813ced(undefined4 param_1)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_5c [28];
  undefined4 local_40;
  undefined4 *local_3c;
  undefined4 *local_38;
  char local_31;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x50;
  local_40 = param_1;
  local_3c = (undefined4 *)0x0;
  local_8 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_5c,&DAT_030651a4,7);
  local_8._0_1_ = 1;
  local_38 = (undefined4 *)0xf8ad7fcc;
  FUN_00b94330(&local_38);
  local_8 = CONCAT31(local_8._1_3_,3);
  FUN_004017b2(1);
  local_31 = FUN_00bb62e0(&local_3c);
  if (local_31 == '\0') {
    FUN_00b940e0();
  }
  local_8 = local_8 & 0xffffff00;
  FUN_004017b2(1);
  if (local_31 != '\0') {
    local_38 = (undefined4 *)&stack0xffffff8c;
    local_3c = (undefined4 *)0x0;
    local_31 = FUN_008144d6(local_40,0x4e584e43,0x1000000,0x1000);
    if (local_31 == '\0') {
      FUN_00b940e0();
    }
    else {
      local_38 = (undefined4 *)0x0;
      local_8 = CONCAT31(local_8._1_3_,4);
      local_31 = FUN_0081446b(local_40,0x4e584e43,0x1000000,0x1000);
      if (local_31 == '\0') {
        FUN_00b940e0();
      }
      local_8 = local_8 & 0xffffff00;
      if (local_38 != (undefined4 *)0x0) {
        (**(code **)*local_38)();
      }
    }
  }
  local_8 = 0xffffffff;
  if (local_3c != (undefined4 *)0x0) {
    (**(code **)*local_3c)();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00813ef3)

char FUN_00813e23(int *param_1,undefined4 param_2,char param_3)

{
  char cVar1;
  int unaff_EBX;
  int iVar2;
  int local_20;
  int local_1c;
  int local_18;
  undefined4 *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  iVar2 = 0;
  local_14[0] = (undefined4 *)0x0;
  local_8 = 0;
  cVar1 = FUN_00bb62e0(local_14);
  if (cVar1 == '\0') {
    FUN_00b940e0();
    param_2._3_1_ = '\0';
  }
  else {
    iVar2 = *(int *)(unaff_EBX + 0xc);
    *(int *)(unaff_EBX + 0xc) = iVar2 + 1;
    local_14[0] = (undefined4 *)0x0;
    param_2._3_1_ = FUN_008144d6(unaff_EBX,0x4e45504f,iVar2,0);
    if (param_2._3_1_ == '\0') {
      FUN_00b940e0();
    }
  }
  if (param_3 == '\0') {
    local_20 = 0;
    local_18 = 0;
    local_1c = 0;
    if (param_2._3_1_ != '\0') {
      local_8 = CONCAT31(local_8._1_3_,1);
      param_2._3_1_ = FUN_0081426f(unaff_EBX,&local_20,&local_1c);
      if (param_2._3_1_ == '\0') {
        FUN_00b940e0();
      }
      local_8 = local_8 & 0xffffff00;
      if (param_2._3_1_ != '\0') {
        param_2._3_1_ = local_18 == 0x59414b4f;
        if (((bool)param_2._3_1_) && (param_2._3_1_ = local_1c == iVar2, (bool)param_2._3_1_)) {
          *param_1 = iVar2;
          param_1[1] = local_20;
        }
        else {
          FUN_00b940e0();
        }
      }
    }
  }
  local_8 = 0xffffffff;
  if (local_14[0] != (undefined4 *)0x0) {
    (**(code **)*local_14[0])();
  }
  return param_2._3_1_;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00813ff5)

char FUN_00813f58(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 **param_4)

{
  undefined4 **local_2c [5];
  undefined4 ***local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0;
  local_18 = local_2c;
  local_2c[0] = param_4;
  local_11 = FUN_008144d6(param_1,0x45545257,param_2,param_3);
  if (local_11 == '\0') {
    local_2c[0] = (undefined4 **)0x908c4d2d;
    FUN_00b940e0();
  }
  else {
    local_18 = (undefined4 ***)0x0;
    local_2c[0] = &local_18;
    local_8 = CONCAT31(local_8._1_3_,1);
    local_11 = FUN_0081446b(param_1,0x59414b4f,param_3,param_2);
    if (local_11 == '\0') {
      local_2c[0] = (undefined4 **)0x165a9ba7;
      FUN_00b940e0();
    }
    local_8 = local_8 & 0xffffff00;
    if (local_18 != (undefined4 ***)0x0) {
      local_2c[0] = (undefined4 **)0x1;
      (*(code *)**local_18)();
    }
  }
  return local_11;
}



undefined4
FUN_00814006(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 *param_4,
            int param_5)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 uVar3;
  int *piVar4;
  undefined4 *puVar5;
  undefined3 extraout_var;
  undefined3 uVar6;
  undefined4 *local_40;
  uint uStack_3c;
  char local_29;
  undefined4 *local_28;
  undefined4 *local_24;
  int local_20;
  undefined4 **local_1c [2];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c3c338;
  local_14 = ExceptionList;
  uStack_3c = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  local_40 = param_2;
  local_20 = 0;
  local_28 = (undefined4 *)0x0;
  local_24 = (undefined4 *)0x0;
  cVar2 = FUN_0081426f(param_1,&local_28,&local_24);
  if (cVar2 == '\0') {
    local_40 = (undefined4 *)0x87bfd902;
    local_29 = '\0';
  }
  else {
    uVar3 = 0x45545257;
    if ((local_20 == 0x45545257) || (local_20 == 0x45534c43)) {
      local_29 = '\x01';
      if (local_20 == 0x45545257) {
        if ((local_28 == (undefined4 *)param_5) && (local_24 == param_4)) {
          local_40 = (undefined4 *)0x0;
          piVar4 = (int *)FUN_00b933f0(&local_24);
          puVar1 = (undefined4 *)*piVar4;
          *piVar4 = 0;
          local_c = 0;
          if (local_24 != (undefined4 *)0x0) {
            local_40 = (undefined4 *)0x1;
            local_28 = puVar1;
            (**(code **)*local_24)();
          }
          local_1c[0] = &local_40;
          local_28 = (undefined4 *)0x0;
          local_40 = puVar1;
          uVar3 = FUN_008144d6(param_1,0x59414b4f,param_4,param_5);
          local_29 = (char)uVar3;
          if (local_29 != '\0') goto LAB_00814191;
          local_40 = (undefined4 *)0xb7e13b39;
        }
        else {
          local_29 = '\0';
          local_40 = (undefined4 *)0x28de1bbd;
        }
      }
      else {
        if (local_20 != 0x45534c43) {
LAB_00814191:
          uVar6 = (undefined3)((uint)uVar3 >> 8);
          *(bool *)param_3 = local_20 == 0x45534c43;
          goto LAB_0081419d;
        }
        if ((local_28 == (undefined4 *)0x0) && (local_24 == param_4)) {
          local_40 = (undefined4 *)0x0;
          puVar5 = (undefined4 *)FUN_00b933f0(local_1c);
          puVar1 = (undefined4 *)*puVar5;
          *puVar5 = 0;
          local_c = 1;
          if (local_1c[0] != (undefined4 **)0x0) {
            local_40 = (undefined4 *)0x1;
            local_24 = puVar1;
            (*(code *)**local_1c[0])();
          }
          local_24 = (undefined4 *)0x0;
          local_40 = puVar1;
          uVar3 = FUN_008144d6(param_1,0x45534c43,0,param_5);
          local_29 = (char)uVar3;
          if (local_29 != '\0') goto LAB_00814191;
          local_40 = (undefined4 *)0xc2a9426d;
        }
        else {
          local_29 = '\0';
          local_40 = (undefined4 *)0xd2e3cfe2;
        }
      }
    }
    else {
      local_29 = '\0';
      local_40 = (undefined4 *)0x73f4d2c8;
    }
  }
  FUN_00b940e0();
  uVar6 = extraout_var;
LAB_0081419d:
  ExceptionList = local_14;
  return CONCAT31(uVar6,local_29);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_008141b6(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 *local_18;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x8141c2;
  puVar1 = (undefined4 *)FUN_00b933f0(&local_18);
  *puVar1 = 0;
  local_8 = 0;
  if (local_18 != (undefined4 *)0x0) {
    (**(code **)*local_18)();
  }
  local_11 = FUN_008144d6(param_1,0x45534c43,0,param_3);
  if (local_11 == '\0') {
    FUN_00b940e0();
  }
  if (local_11 != '\0') {
    local_18 = (undefined4 *)0x0;
    local_8 = 1;
    local_11 = FUN_0081446b(param_1,0x45534c43,0,param_2);
    if (local_11 == '\0') {
      FUN_00b940e0();
    }
    local_8 = 0xffffffff;
    if (local_18 != (undefined4 *)0x0) {
      (**(code **)*local_18)();
    }
  }
  return local_11;
}



void FUN_0081426f(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  int **ppiVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined auStack_5c [3];
  char cStack_59;
  int iStack_58;
  int local_54;
  int *local_50;
  undefined4 local_4c;
  undefined4 *local_48;
  undefined4 *local_44;
  undefined4 local_40 [2];
  char cStack_38;
  int local_34;
  char cStack_30;
  undefined4 uStack_2c;
  char cStack_28;
  undefined4 uStack_24;
  uint local_1c;
  void *pvStack_18;
  void *local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  uStack_10 = &LAB_00c3c300;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_5c;
  ExceptionList = &local_14;
  local_40[0] = param_2;
  local_4c = param_3;
  local_48 = param_4;
  local_54 = 0;
  local_50 = (int *)0x0;
  local_c = 0;
  ppiVar1 = (int **)FUN_00b66323(DAT_0323f878 ^ (uint)&stack0xffffff98);
  local_c = CONCAT31(local_c._1_3_,1);
  cStack_59 = (**(code **)(**ppiVar1 + 0x18))(&local_54);
  uStack_10 = (undefined *)((uint)uStack_10 & 0xffffff00);
  if (local_34 != 0) {
    FUN_0040127a();
  }
  if (cStack_59 == '\0') {
    uVar3 = 0xc528d533;
  }
  else {
    cStack_59 = iStack_58 != 0;
    if ((bool)cStack_59) goto LAB_0081432b;
    uVar3 = 0x7735b4b;
  }
  FUN_00b940e0(uVar3);
LAB_0081432b:
  cStack_30 = '\0';
  cStack_28 = '\0';
  cStack_38 = '\0';
  uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,4);
  if (cStack_59 != '\0') {
    FUN_00ba337d(local_40,0);
    FUN_0041ba77();
    FUN_00ba337d(local_40,1);
    FUN_0041ba77();
    FUN_00ba337d(local_40,2);
    FUN_0041ba77();
    if ((((-(uint)(cStack_30 != '\0') & 0x6a1cd8) == 0) ||
        ((-(uint)(cStack_28 != '\0') & 0x6a1cd8) == 0)) ||
       ((-(uint)(cStack_38 != '\0') & 0x6a1cd8) == 0)) {
      cStack_59 = '\0';
      FUN_00b940e0(0xc5296f08);
    }
    else {
      *local_48 = uStack_2c;
      *local_44 = uStack_24;
      *local_50 = local_34;
      cStack_59 = '\x01';
      puVar2 = (undefined4 *)FUN_00b9eddc(&local_50);
      uVar3 = *puVar2;
      *puVar2 = 0;
      FUN_0040c727(uVar3);
      if (local_50 != (int *)0x0) {
        (**(code **)*local_50)(1);
      }
    }
  }
  uStack_10 = (undefined *)0xffffffff;
  if (local_54 != 0) {
    FUN_0040127a();
  }
  ExceptionList = pvStack_18;
  ___security_check_cookie_4();
  return;
}



bool FUN_0081446b(int param_1,int param_2,int param_3,int param_4,int param_5)

{
  char cVar1;
  bool bVar2;
  undefined4 uVar3;
  int local_8;
  
  cVar1 = FUN_0081426f(param_1,&param_1,&local_8,param_5);
  if (cVar1 == '\0') {
    uVar3 = 0x2e880f4a;
    bVar2 = false;
  }
  else {
    bVar2 = param_5 == param_2;
    if (bVar2) {
      if ((param_1 == param_3) && (local_8 == param_4)) {
        return true;
      }
      bVar2 = false;
      uVar3 = 0x10ecdc93;
    }
    else {
      uVar3 = 0xb6eddf85;
    }
  }
  FUN_00b940e0(uVar3);
  return bVar2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_008144d6(void)

{
  undefined local_14 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0;
  FUN_005d18a3();
  local_8._0_1_ = 2;
  FUN_007d531e();
  local_8._0_1_ = 3;
  FUN_007d531e();
  local_8._0_1_ = 4;
  FUN_007d531e();
  local_8._0_1_ = 1;
  FUN_00b9ed2c();
  FUN_00b66323();
  local_8 = CONCAT31(local_8._1_3_,5);
                    // WARNING: Subroutine does not return
  FUN_0043c023(local_14);
}



// WARNING: Removing unreachable block (ram,0x0081466c)
// WARNING: Removing unreachable block (ram,0x00814687)
// WARNING: Removing unreachable block (ram,0x00814672)
// WARNING: Removing unreachable block (ram,0x00814678)

char FUN_008145ed(void)

{
  bool bVar1;
  int **in_EAX;
  char local_6;
  
  FUN_00688539();
  local_6 = '\x01';
  bVar1 = true;
  while( true ) {
    if (!bVar1) {
      return local_6;
    }
    if (local_6 == '\0') break;
    local_6 = (**(code **)(**in_EAX + 8))();
    if (local_6 == '\0') {
      FUN_00b940e0();
      return '\0';
    }
    if (in_EAX[6] == (int *)0x0) {
      FUN_00688539();
    }
    else {
      FUN_0062d568();
    }
    FUN_0048867c();
    bVar1 = false;
  }
  return '\0';
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_008146bb(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            char *param_3)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [28];
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0x8146c7;
  local_14 = 0;
  pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
           basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                     (local_30,param_2);
  local_8 = 0;
  pbVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                     (pbVar1,param_3);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1,pbVar1);
  FUN_004017b2(1,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_008147b9(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x94);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0081482d(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00814afe(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0081482d(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined local_28 [12];
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x814839;
  FUN_00b9a937(param_1);
  *param_1 = W8D227ECF::WA1D23AAB::vftable;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  puVar1 = (undefined4 *)FUN_0081552c(local_28);
  local_8 = CONCAT31(local_8._1_3_,2);
  local_1c = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



undefined4 __thiscall FUN_008149b5(undefined4 param_1_00,byte param_1)

{
  FUN_008149d1();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_008149d1(undefined4 *param_1)

{
  *param_1 = W8D227ECF::WA1D23AAB::vftable;
  FUN_0074ca40();
  if (param_1[0x24] != 0) {
    FUN_0040127a();
  }
  FUN_00b9a8dd();
  return;
}



void Catch_All_00814a1e(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_00814a28(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_008157b2(*(undefined4 *)(param_1_00 + 0x8c),param_1,param_2);
  return param_1;
}



bool __fastcall FUN_00814a48(int param_1)

{
  return (-(uint)(*(char *)(*(int *)(param_1 + 0x8c) + 0x28) != '\0') & 0x6a1cd8) != 0;
}



void FUN_00814a62(void)

{
  FUN_00815822();
  return;
}



void FUN_00814a70(void)

{
  FUN_0081588b();
  return;
}



void __fastcall FUN_00814a7e(int param_1)

{
  FUN_00815a6a(*(undefined4 *)(param_1 + 0x8c));
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00814aa1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8D227ECF::W803B50E9>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00814ae7(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00814afe(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8D227ECF::WA1D23AAB>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00814b44(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00814b5b(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00814b94(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W8D227ECF::WA1D23AAB>,class_boost::_bi::list1<class_boost::_bi::value<class_W8D227ECF::WA1D23AAB*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void __fastcall FUN_00814b94(TypeDescriptor **param_1,TypeDescriptor **param_2)

{
  bool bVar1;
  int in_EAX;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (param_1 != (TypeDescriptor **)0x0) {
      *param_1 = *param_2;
      param_1[1] = param_2[1];
      param_1[2] = param_2[2];
      param_1[3] = param_2[3];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*param_1,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W8D227ECF::WA1D23AAB>,class_boost::_bi::list1<class_boost::_bi::value<class_W8D227ECF::WA1D23AAB*>_>_>
                          ::RTTI_Type_Descriptor);
      *param_1 = (TypeDescriptor *)(-(uint)bVar1 & (uint)param_2);
    }
    else {
      *param_1 = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W8D227ECF::WA1D23AAB>,class_boost::_bi::list1<class_boost::_bi::value<class_W8D227ECF::WA1D23AAB*>_>_>
                  ::RTTI_Type_Descriptor;
      *(undefined *)(param_1 + 1) = 0;
      *(undefined *)((int)param_1 + 5) = 0;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00814be1(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(0xc);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[1] = 0;
    puVar2[2] = 0;
    *puVar2 = W8D227ECF::WC63AB70B::vftable;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00815310(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



undefined4 __thiscall FUN_00814c4d(undefined4 param_1_00,byte param_1)

{
  FUN_00814c69();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00814c69(undefined4 *param_1)

{
  *param_1 = W8D227ECF::WC63AB70B::vftable;
  FUN_00ba327a();
  return;
}



void Catch_All_00814c8a(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00814c94(int param_1,int param_2)

{
  undefined4 *puVar1;
  int iVar2;
  char cVar3;
  int *piVar4;
  undefined4 uVar5;
  undefined4 *local_38 [2];
  undefined4 local_30;
  char local_2c [4];
  undefined4 local_28;
  char local_24 [4];
  undefined4 local_20;
  char local_1c [4];
  undefined4 local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8._0_1_ = 0;
  local_8._1_3_ = 0;
  if (param_1 == 0) {
    uVar5 = 0x63001fb;
  }
  else {
    FUN_00ba337d(local_1c,0);
    FUN_00ba337d(local_2c,1);
    FUN_00ba337d(local_24,2);
    local_8._0_1_ = 3;
    if ((((-(uint)(local_1c[0] != '\0') & 0x6a1cd8) != 0) &&
        ((-(uint)(local_2c[0] != '\0') & 0x6a1cd8) != 0)) &&
       ((-(uint)(local_24[0] != '\0') & 0x6a1cd8) != 0)) {
      piVar4 = (int *)FUN_00b9eddc(local_38);
      puVar1 = (undefined4 *)*piVar4;
      *piVar4 = 0;
      local_8 = CONCAT31(local_8._1_3_,4);
      if (local_38[0] != (undefined4 *)0x0) {
        (**(code **)*local_38[0])(1);
      }
      iVar2 = puVar1[2];
      local_30 = 0;
      if ((iVar2 == 0) || (cVar3 = FUN_00b93390(), cVar3 != '\0')) {
        cVar3 = FUN_00815150(local_18,local_28,local_20,iVar2);
        if (cVar3 == '\0') {
          uVar5 = 0x9b985976;
          goto LAB_00814d8c;
        }
      }
      else {
        uVar5 = 0xf26d873;
LAB_00814d8c:
        FUN_00b940e0(uVar5);
      }
      (**(code **)*puVar1)(1);
      local_8 = 0xffffffff;
      if (param_2 != 0) {
        FUN_0040127a();
      }
      goto LAB_00814dd5;
    }
    uVar5 = 0x533d87c7;
  }
  FUN_00b940e0(uVar5);
  local_8 = 0xffffffff;
  if (param_2 != 0) {
    FUN_0040127a();
  }
LAB_00814dd5:
  FUN_00a421fb();
  return;
}



char FUN_00814ddd(undefined4 **param_1)

{
  char cVar1;
  undefined4 ***local_58;
  uint uStack_54;
  undefined4 **local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined *local_24;
  undefined4 *local_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00c3c225;
  local_14 = ExceptionList;
  uStack_54 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  local_38 = 0;
  local_30 = 0;
  local_28 = (undefined4 ***)0x0;
  local_3c = (undefined4 **)0x0;
  local_58 = &local_3c;
  local_c = 0;
  cVar1 = FUN_00814f58(&local_38,&local_30,&local_28);
  if (cVar1 == '\0') {
    local_58 = (undefined4 ***)0xaae59e22;
    FUN_00b940e0();
  }
  else {
    local_58 = (undefined4 ***)&local_20;
    FUN_005d18a3();
    local_58 = (undefined4 ***)param_1;
    local_c._0_1_ = 1;
    FUN_005d11c9();
    local_c._0_1_ = 0;
    if (local_1c != 0) {
      local_58 = (undefined4 ***)0x814e80;
      FUN_0040127a();
    }
    local_34 = local_38;
    local_38 = CONCAT31(local_38._1_3_,1);
    local_c._0_1_ = 2;
    local_58 = (undefined4 ***)0x0;
    FUN_007d531e();
    local_2c = local_30;
    local_30 = CONCAT31(local_30._1_3_,1);
    local_c._0_1_ = 3;
    local_58 = (undefined4 ***)0x1;
    FUN_007d531e();
    local_24 = (undefined *)local_28;
    local_28 = (undefined4 ***)CONCAT31(local_28._1_3_,1);
    local_c._0_1_ = 4;
    local_58 = (undefined4 ***)0x2;
    FUN_007d531e();
    local_58 = (undefined4 ***)local_3c;
    local_c = (uint)local_c._1_3_ << 8;
    local_3c = (undefined4 **)0x0;
    local_28 = &local_58;
    FUN_00b9ed2c();
  }
  local_c = 0xffffffff;
  if (local_3c != (undefined4 **)0x0) {
    local_58 = (undefined4 ***)0x1;
    (*(code *)**local_3c)();
  }
  ExceptionList = local_14;
  return cVar1;
}



undefined4 FUN_00814f37(undefined *param_1)

{
  *param_1 = 1;
  return 1;
}



uint FUN_00814f43(undefined4 *param_1)

{
  uint in_EAX;
  
  if (param_1 != (undefined4 *)0x0) {
    in_EAX = (**(code **)*param_1)(1);
  }
  return in_EAX & 0xffffff00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char __thiscall
FUN_00814f58(int *param_1_00,uint *param_1,undefined4 *param_2,undefined4 *param_3,
            undefined **param_4)

{
  undefined **ppuVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined uStack_98;
  undefined4 uStack_90;
  undefined **ppuStack_8c;
  undefined ***pppuStack_88;
  undefined **ppuStack_84;
  undefined auStack_80 [8];
  uint *puStack_78;
  undefined *local_74;
  undefined ***pppuStack_70;
  undefined ***local_6c;
  int **ppiStack_68;
  uint local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined **local_48;
  undefined **local_44;
  uint local_40;
  int *local_30;
  int local_2c;
  undefined **local_28;
  undefined *local_24;
  undefined **local_20;
  undefined **local_1c;
  char local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x814f64;
  ppiStack_68 = (int **)0x18;
  local_28 = &local_74;
  local_6c = (undefined ***)&local_54;
  local_74 = (undefined *)((uint)local_74 & 0xffffff00);
  puStack_78 = (uint *)0x814f82;
  FUN_00b92490();
  ppiStack_68 = &local_30;
  local_1c = (undefined **)0x0;
  local_6c = (undefined ***)0x814f93;
  (**(code **)(*param_1_00 + 0xc))();
  local_28 = &PTR_DAT_03057af8;
  local_6c = &local_28;
  pppuStack_70 = &local_1c;
  local_74 = (undefined *)0x18;
  local_24 = auStack_80;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  puStack_78 = &local_54;
  auStack_80[0] = 0;
  ppuStack_84 = (undefined **)0x814fc4;
  cVar2 = (**(code **)(*local_30 + 0xc))();
  local_8 = (uint)local_8._1_3_ << 8;
  if (cVar2 == '\0') {
    ppuStack_84 = (undefined **)0xd973e020;
    local_15 = false;
LAB_00814fff:
    pppuStack_88 = (undefined ***)0x815009;
    FUN_00b940e0();
  }
  else {
    local_15 = local_1c == (undefined **)0x18;
    if (!(bool)local_15) {
      ppuStack_84 = (undefined **)0xb4d72d80;
      goto LAB_00814fff;
    }
    local_15 = local_40 == ~local_54;
    if (!(bool)local_15) {
      ppuStack_84 = (undefined **)0x1ae2348b;
      goto LAB_00814fff;
    }
  }
  local_20 = local_48;
  if (local_15 != '\0') {
    local_15 = '\x01' - ((undefined **)0x1000 < local_48);
    if (local_15 == '\0') {
      ppuStack_84 = (undefined **)0x62f89b75;
      pppuStack_88 = (undefined ***)0x815034;
      FUN_00b940e0();
    }
  }
  local_24 = (undefined *)0x0;
  if (local_15 != '\0') {
    pppuStack_88 = &local_28;
    ppuStack_84 = (undefined **)0x0;
    ppuStack_8c = (undefined **)0x81504e;
    puVar3 = (undefined4 *)FUN_00b933f0();
    ppuStack_84 = (undefined **)*puVar3;
    *puVar3 = 0;
    pppuStack_88 = (undefined ***)0x81505d;
    FUN_0040c727();
    if (local_28 != (undefined **)0x0) {
      ppuStack_84 = (undefined **)0x1;
      pppuStack_88 = (undefined ***)0x81506a;
      (**(code **)*local_28)();
    }
    ppuStack_84 = (undefined **)0x815074;
    FUN_00b93010();
    ppuVar1 = local_20;
    if (local_20 != (undefined **)0x0) {
      param_4 = &PTR_DAT_03057af8;
      ppuStack_84 = (undefined **)&param_4;
      pppuStack_88 = &local_1c;
      local_8._0_1_ = 2;
      ppuStack_8c = local_20;
      local_28 = (undefined **)&uStack_98;
      uStack_98 = 0;
      uStack_90 = local_24;
      cVar2 = (**(code **)(*local_30 + 0xc))();
      local_8 = (uint)local_8._1_3_ << 8;
      param_4 = &PTR_DAT_030577b8;
      if (cVar2 == '\0') {
        ppuStack_84 = (undefined **)0x316cb4c7;
        local_15 = false;
      }
      else {
        local_15 = local_1c == ppuVar1;
        if ((bool)local_15) goto LAB_008150d7;
        ppuStack_84 = (undefined **)0xa47b3ca9;
      }
      pppuStack_88 = (undefined ***)0x8150d6;
      FUN_00b940e0();
    }
  }
LAB_008150d7:
  local_28 = (undefined **)0x0;
  if (local_15 != '\0') {
    ppuStack_84 = local_20;
    pppuStack_88 = &local_28;
    ppuStack_8c = (undefined **)0x8150ee;
    cVar2 = FUN_008152c3();
    if (cVar2 == '\0') {
      ppuStack_84 = (undefined **)0xc6ce9f06;
      local_15 = false;
    }
    else {
      local_15 = local_28 == local_44;
      if ((bool)local_15) {
        *param_1 = local_54;
        *param_2 = local_50;
        *param_3 = local_4c;
        goto LAB_00815135;
      }
      ppuStack_84 = (undefined **)0xcf69cc56;
    }
    pppuStack_88 = (undefined ***)0x81511a;
    FUN_00b940e0();
  }
LAB_00815135:
  local_8 = 0xffffffff;
  if (local_2c != 0) {
    ppuStack_84 = (undefined **)0x815145;
    FUN_0040127a();
  }
  return local_15;
}



char __fastcall
FUN_00815150(int *param_1_00,uint *param_2_00,uint param_1,undefined4 param_2,undefined4 param_3,
            undefined **param_4)

{
  char cVar1;
  undefined auStack_6c [8];
  uint *puStack_64;
  undefined **ppuStack_60;
  undefined ***pppuStack_5c;
  int *piStack_58;
  uint uStack_54;
  undefined **ppuStack_44;
  undefined *puStack_40;
  int *piStack_3c;
  int local_38;
  uint uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined **ppuStack_28;
  undefined *puStack_24;
  uint uStack_20;
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c28760;
  local_14 = ExceptionList;
  uStack_54 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_14;
  piStack_58 = &local_38;
  pppuStack_5c = (undefined ***)0x815188;
  (**(code **)(*param_1_00 + 0xc))();
  puStack_10 = (undefined *)0x0;
  cVar1 = '\x01' - ((undefined **)0x1000 < param_4);
  if (cVar1 == '\0') {
    pppuStack_5c = (undefined ***)0x7528d4a5;
    ppuStack_60 = (undefined **)0x8151aa;
    FUN_00b940e0();
  }
  puStack_40 = (undefined *)0x0;
  if (cVar1 != '\0') {
    pppuStack_5c = (undefined ***)param_4;
    ppuStack_60 = &puStack_40;
    puStack_64 = (uint *)0x8151c1;
    cVar1 = FUN_008152c3();
    if (cVar1 == '\0') {
      pppuStack_5c = (undefined ***)0x48df1e2;
      ppuStack_60 = (undefined **)0x8151d1;
      FUN_00b940e0();
    }
    else {
      uStack_30 = param_2;
      uStack_2c = param_3;
      uStack_34 = param_1;
      ppuStack_28 = param_4;
      uStack_20 = ~param_1;
      puStack_24 = puStack_40;
    }
  }
  ppuStack_44 = (undefined **)0x0;
  if (cVar1 == '\0') goto LAB_0081529a;
  pppuStack_5c = &ppuStack_44;
  ppuStack_60 = (undefined **)0x18;
  puStack_40 = auStack_6c;
  puStack_64 = &uStack_34;
  auStack_6c[0] = 0;
  cVar1 = (**(code **)(*piStack_3c + 0x38))();
  if (cVar1 == '\0') {
    pppuStack_5c = (undefined ***)0xe0db9c26;
    cVar1 = false;
  }
  else {
    cVar1 = ppuStack_44 == (undefined **)0x18;
    if ((bool)cVar1) {
      if (param_4 == (undefined **)0x0) goto LAB_0081529a;
      pppuStack_5c = &ppuStack_44;
      ppuStack_60 = param_4;
      puStack_40 = auStack_6c;
      auStack_6c[0] = 0;
      puStack_64 = param_2_00;
      cVar1 = (**(code **)(*piStack_3c + 0x38))();
      if (cVar1 == '\0') {
        pppuStack_5c = (undefined ***)0x400e7d04;
        cVar1 = false;
      }
      else {
        cVar1 = param_4 == ppuStack_44;
        if ((bool)cVar1) goto LAB_0081529a;
        pppuStack_5c = (undefined ***)0x66348aa1;
      }
    }
    else {
      pppuStack_5c = (undefined ***)0xeea8f844;
    }
  }
  ppuStack_60 = (undefined **)0x815299;
  FUN_00b940e0();
LAB_0081529a:
  puStack_10 = (undefined *)0xffffffff;
  if (local_38 != 0) {
    pppuStack_5c = (undefined ***)0x8152ac;
    FUN_0040127a();
  }
  ExceptionList = pvStack_18;
  return cVar1;
}



char FUN_008152c3(int *param_1,uint param_2)

{
  uint uVar1;
  int iVar2;
  char cVar3;
  int unaff_ESI;
  
  if ((param_2 == 0) || (unaff_ESI != 0)) {
    cVar3 = '\x01';
  }
  else {
    cVar3 = '\0';
    FUN_00b940e0(0x93ffc4e1);
  }
  uVar1 = 0;
  iVar2 = 0;
  if ((cVar3 != '\0') && (param_2 != 0)) {
    do {
      iVar2 = iVar2 + (uint)*(byte *)(uVar1 + unaff_ESI);
      uVar1 = uVar1 + 1;
    } while (uVar1 < param_2);
  }
  *param_1 = iVar2;
  return cVar3;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00815310(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8D227ECF::WC63AB70B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00815356(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_0081536d(void)

{
  return 0x5d9f44bb;
}



undefined4 __thiscall FUN_00815373(undefined4 param_1_00,byte param_1)

{
  FUN_0081538f();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0081538f(undefined4 *param_1)

{
  *param_1 = W8D227ECF::W803B50E9::vftable;
  FUN_0074ca40();
  if (param_1[2] != 0) {
    FUN_0040127a();
  }
  *param_1 = W5FC6A77E::W5212F7B0::vftable;
  return;
}



void Catch_All_008153d4(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_008153de(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    *(undefined *)(*(int *)(param_1 + 4) + 0x24) = 1;
  }
  return;
}



void __fastcall FUN_008153ef(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    *(undefined *)(*(int *)(param_1 + 4) + 0x24) = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00815400(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x1c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00815f20(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00815c51(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0081552c(undefined4 *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int local_14;
  
  pvVar2 = operator_new(0x4c);
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0081559d(pvVar2);
  }
  *param_1 = uVar3;
  param_1[1] = 0;
  puVar4 = (undefined4 *)FUN_00815d0b(uVar3);
  uVar1 = param_1[1];
  param_1[1] = *puVar4;
  *puVar4 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,uVar3,uVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0081559d(undefined4 *param_1)

{
  int iVar1;
  undefined local_1c [20];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x60;
  *param_1 = W8D227ECF::WA6DB9B4B::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  *(undefined *)(param_1 + 9) = 0;
  *(undefined *)(param_1 + 10) = 0;
  local_8._0_1_ = 4;
  local_8._1_3_ = 0;
  *(undefined *)(param_1 + 0x12) = 0;
  *(undefined *)((int)param_1 + 0x49) = 0;
  iVar1 = FUN_00815400(local_1c);
  local_8 = CONCAT31(local_8._1_3_,5);
                    // WARNING: Subroutine does not return
  FUN_0043c023(iVar1 + 4);
}



undefined4 __thiscall FUN_008156eb(undefined4 param_1_00,byte param_1)

{
  FUN_00815707();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00815707(undefined4 *param_1)

{
  int iVar1;
  undefined4 local_1c;
  undefined4 *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  *param_1 = W8D227ECF::WA6DB9B4B::vftable;
  local_8 = 5;
  FUN_00815a6a(param_1);
  if (&local_1c != param_1 + 3) {
    param_1[3] = 0;
  }
  iVar1 = param_1[4];
  param_1[4] = 0;
  if (iVar1 != 0) {
    FUN_0040127a();
  }
  local_18 = param_1 + 1;
  FUN_0074ca40();
  FUN_00417f97();
  local_8._0_1_ = 3;
  if (param_1[8] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 2;
  if (param_1[6] != 0) {
    FUN_0040127a();
  }
  local_8._0_1_ = 1;
  if (param_1[4] != 0) {
    FUN_0040127a();
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_18[1] != 0) {
    FUN_0040127a();
  }
  return;
}



void Catch_All_008157a8(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_008157b2(int param_1,undefined4 *param_2,int param_3)

{
  undefined4 *puVar1;
  undefined local_18 [16];
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  uStack_8 = 0x8157be;
  if ((param_3 == 0) && (*(int *)(param_1 + 0x1c) != 0)) {
    *param_2 = *(undefined4 *)(param_1 + 0x1c);
                    // WARNING: Subroutine does not return
    FUN_0043c023(param_1 + 0x20);
  }
  puVar1 = (undefined4 *)FUN_00b92262(local_18);
  *param_2 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



bool FUN_00815822(void)

{
  char cVar1;
  int unaff_ESI;
  bool bVar2;
  undefined4 uVar3;
  
  bVar2 = *(int *)(unaff_ESI + 4) != 0;
  if (!bVar2) {
    FUN_00b940e0(0x1e1db006);
  }
  if ((*(char *)(unaff_ESI + 0x48) == '\0') && (bVar2)) {
    bVar2 = (-(uint)(*(char *)(unaff_ESI + 0x28) != '\0') & 0x6a1cd8) != 0;
    if (bVar2) {
      cVar1 = FUN_00815fbb();
      if (cVar1 != '\0') {
        *(undefined *)(unaff_ESI + 0x48) = 1;
        return (bool)cVar1;
      }
      uVar3 = 0xdf882b89;
      bVar2 = false;
    }
    else {
      uVar3 = 0xe8d48d4c;
    }
    FUN_00b940e0(uVar3);
  }
  return bVar2;
}



void FUN_0081588b(void)

{
  int unaff_EBX;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00c5daa9;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if ((*(char *)(unaff_EBX + 0x48) != '\0') && (*(int *)(unaff_EBX + 4) != 0)) {
                    // WARNING: Subroutine does not return
    FUN_0043c023(unaff_EBX + 8);
  }
  FUN_00b940e0();
  FUN_0074ca40();
  FUN_0074ca40();
  *(undefined *)(unaff_EBX + 0x49) = 0;
  ExceptionList = local_14;
  return;
}



char FUN_00815a6a(int param_1)

{
  bool bVar1;
  char cVar2;
  undefined4 *puVar3;
  char local_41;
  undefined4 *local_40;
  undefined **local_3c;
  undefined4 local_38 [2];
  undefined **local_30;
  undefined4 uStack_2c;
  undefined4 local_28;
  undefined4 uStack_24;
  undefined auStack_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c5c7b8;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_38[0] = 0;
  local_41 = '\x01';
  FUN_00453c32(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  if (*(int *)(param_1 + 0x14) == 0) goto LAB_00815bb6;
  local_40 = (undefined4 *)0x0;
  local_3c = W5FC6A77E::W0A40C7FA::vftable;
  if (*(int **)(param_1 + 0x1c) == (int *)0x0) {
LAB_00815b02:
    bVar1 = false;
  }
  else {
    local_30 = &PTR_DAT_03057b80;
    local_c = 2;
    local_38[0] = 1;
    cVar2 = (**(code **)(**(int **)(param_1 + 0x1c) + 0x10))(&local_40,&local_3c,&local_30);
    if (cVar2 == '\0') goto LAB_00815b02;
    bVar1 = true;
  }
  local_c = 1;
  if (((bVar1) && (local_40 != (undefined4 *)0x0)) && (local_40[2] != 0)) {
    local_30 = (undefined **)0x0;
    FUN_00b93390();
  }
  FUN_00b725b0();
  uStack_2c = 0;
  local_30 = (undefined **)0x4c4b40;
  FUN_0043b835(local_38,FUN_0043bca3);
  puVar3 = (undefined4 *)FUN_0043be95(auStack_20);
  local_28 = *puVar3;
  uStack_24 = puVar3[1];
  local_41 = FUN_00b729f0(*(int *)(param_1 + 0x14));
  if (local_41 == '\0') {
    FUN_00b940e0(0xaedfba66);
  }
  FUN_0074ca40();
  local_c = 0xffffffff;
  local_3c = W5FC6A77E::W89035DA7::vftable;
  if (local_40 != (undefined4 *)0x0) {
    (**(code **)*local_40)(1);
  }
LAB_00815bb6:
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0081606d();
    FUN_0074ca40();
    *(undefined *)(param_1 + 0x48) = 0;
  }
  *(undefined *)(param_1 + 0x49) = 0;
  ExceptionList = local_14;
  return local_41;
}



void FUN_00815c08(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 local_c;
  undefined4 local_8;
  
  *unaff_ESI = 0;
  local_c = param_1;
  local_8 = param_2;
  cVar1 = FUN_007f2630(&local_c);
  if (cVar1 == '\0') {
    if (unaff_ESI + 2 != (undefined4 *)0x0) {
      unaff_ESI[2] = local_c;
      unaff_ESI[3] = local_8;
    }
    *unaff_ESI = &DAT_03065281;
  }
  else {
    *unaff_ESI = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00815c51(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8D227ECF::WD56AF746>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00815c97(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00815cf4(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00815d0b(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_W8D227ECF::WA6DB9B4B>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_00815d51(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00815d68(undefined4 param_1,TypeDescriptor **param_2,int param_3)

{
  if (param_3 != 4) {
    FUN_00815da3(0);
    return;
  }
  *param_2 = &boost::_bi::
              bind_t<void,class_boost::_mfi::mf0<void,class_W8D227ECF::WA6DB9B4B>,class_boost::_bi::list1<class_boost::_bi::value<class_W8D227ECF::WA6DB9B4B*>_>_>
              ::RTTI_Type_Descriptor;
  *(undefined *)(param_2 + 1) = 0;
  *(undefined *)((int)param_2 + 5) = 0;
  return;
}



void FUN_00815da3(void)

{
  bool bVar1;
  int in_EAX;
  TypeDescriptor **unaff_ESI;
  TypeDescriptor **unaff_EDI;
  
  if ((in_EAX == 0) || (in_EAX == 1)) {
    if (unaff_ESI != (TypeDescriptor **)0x0) {
      *unaff_ESI = *unaff_EDI;
      unaff_ESI[1] = unaff_EDI[1];
    }
  }
  else if (in_EAX != 2) {
    if (in_EAX == 3) {
      bVar1 = type_info::operator==
                        ((type_info *)*unaff_ESI,
                         (type_info *)
                         &boost::_bi::
                          bind_t<void,class_boost::_mfi::mf0<void,class_W8D227ECF::WA6DB9B4B>,class_boost::_bi::list1<class_boost::_bi::value<class_W8D227ECF::WA6DB9B4B*>_>_>
                          ::RTTI_Type_Descriptor);
      *unaff_ESI = (TypeDescriptor *)(-(uint)bVar1 & (uint)unaff_EDI);
      return;
    }
    *unaff_ESI = &boost::_bi::
                  bind_t<void,class_boost::_mfi::mf0<void,class_W8D227ECF::WA6DB9B4B>,class_boost::_bi::list1<class_boost::_bi::value<class_W8D227ECF::WA6DB9B4B*>_>_>
                  ::RTTI_Type_Descriptor;
    *(undefined *)(unaff_ESI + 1) = 0;
    *(undefined *)((int)unaff_ESI + 5) = 0;
    return;
  }
  return;
}



void Catch_All_00815f09(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00815f20(undefined4 *param_1)

{
  undefined4 uVar1;
  
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  *param_1 = W8D227ECF::WD56AF746::vftable;
  FUN_00b6e830();
  uVar1 = FUN_0060e02d();
  param_1[6] = uVar1;
  return param_1;
}



undefined4 __thiscall FUN_00815f5f(undefined4 param_1_00,byte param_1)

{
  FUN_00815f7b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00815f7b(undefined4 *param_1)

{
  *param_1 = W8D227ECF::WD56AF746::vftable;
  FUN_0081606d();
  FUN_00b6e800();
  return;
}



void Catch_All_00815fb1(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



bool __fastcall FUN_00815fbb(int param_1)

{
  code *pcVar1;
  int in_EAX;
  int iVar2;
  int iVar3;
  bool bVar4;
  undefined4 uVar5;
  
  if (*(uint *)(in_EAX + 0x18) < 8) {
    iVar2 = in_EAX + 4;
  }
  else {
    iVar2 = *(int *)(in_EAX + 4);
  }
  iVar2 = FUN_0060df6c(iVar2);
  bVar4 = iVar2 != 0;
  *(int *)(param_1 + 4) = iVar2;
  if (bVar4) {
    pcVar1 = *(code **)(*(int *)(param_1 + 0x18) + 0x14);
    iVar3 = 0;
    if (pcVar1 == (code *)0x0) {
      FUN_00b940e0(0x48ed0790);
    }
    else {
      iVar3 = (*pcVar1)(iVar2,0,0);
    }
    bVar4 = iVar3 != 0;
    *(int *)(param_1 + 8) = iVar3;
    if (bVar4) {
      pcVar1 = *(code **)(*(int *)(param_1 + 0x18) + 0x18);
      iVar2 = 0;
      if (pcVar1 == (code *)0x0) {
        FUN_00b940e0(0x860d372e);
      }
      else {
        iVar2 = (*pcVar1)(*(undefined4 *)(param_1 + 4),0,0);
      }
      bVar4 = iVar2 != 0;
      *(int *)(param_1 + 0xc) = iVar2;
      if (bVar4) {
        return bVar4;
      }
      uVar5 = 0x2b9da9e9;
    }
    else {
      uVar5 = 0x9be50e1a;
    }
  }
  else {
    uVar5 = 0xb526f9b0;
  }
  FUN_00b940e0(uVar5);
  FUN_0081606d();
  return bVar4;
}



undefined4 FUN_0081606d(void)

{
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0xc) != 0) {
    FUN_0060dfcf(*(int *)(unaff_ESI + 0xc));
    *(undefined4 *)(unaff_ESI + 0xc) = 0;
  }
  if (*(int *)(unaff_ESI + 8) != 0) {
    FUN_0060dfcf(*(int *)(unaff_ESI + 8));
    *(undefined4 *)(unaff_ESI + 8) = 0;
  }
  if (*(int *)(unaff_ESI + 4) != 0) {
    FUN_0060dfcf(*(int *)(unaff_ESI + 4));
    *(undefined4 *)(unaff_ESI + 4) = 0;
  }
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_008160ae(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 *param_5,undefined4 param_6)

{
  code *pcVar1;
  char cVar2;
  DWORD DVar3;
  int unaff_EBX;
  HANDLE local_30;
  undefined4 local_2c;
  undefined4 local_24;
  undefined4 *local_20;
  undefined4 local_1c;
  int local_18;
  char local_12;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_20 = param_5;
  local_8 = 0;
  cVar2 = FUN_00b9ab10();
  if ((cVar2 == '\0') || (local_11 = '\x01', *(int *)(unaff_EBX + 8) == 0)) {
    local_11 = '\0';
  }
  FUN_00b6e830();
  local_8._0_1_ = 1;
  local_1c = 0;
  if (local_11 != '\0') {
    pcVar1 = *(code **)(*(int *)(unaff_EBX + 0x18) + 0x24);
    local_18 = 0;
    if (pcVar1 == (code *)0x0) {
      FUN_00b940e0(0x26ea537e);
    }
    else {
      local_18 = (*pcVar1)(*(undefined4 *)(unaff_EBX + 8),param_3,param_4,&local_1c,param_6,local_24
                          );
    }
    local_11 = local_18 != 0;
    *local_20 = local_1c;
    if ((bool)local_11) {
      DVar3 = GetLastError();
      if (DVar3 == 0x3e5) {
        while( true ) {
          local_30 = *(HANDLE *)(unaff_EBX + 0x14);
          local_2c = local_24;
          DVar3 = WaitForMultipleObjects(2,&local_30,0,0xffffffff);
          if (DVar3 == 0) break;
          if (DVar3 != 1) goto LAB_008161bf;
          local_1c = 0;
          local_12 = FUN_0060df99(local_18,&local_1c);
          DVar3 = GetLastError();
          *local_20 = local_1c;
          if ((local_12 != '\0') || (DVar3 == 0x79)) goto LAB_008161bf;
          if ((DVar3 < 0x3e4) || (0x3e5 < DVar3)) break;
        }
        local_11 = '\0';
      }
    }
LAB_008161bf:
    if (local_18 != 0) {
      FUN_0060dfcf(local_18);
    }
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00b6e800();
  return local_11;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

char FUN_008161e7(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 *param_5,undefined4 param_6)

{
  code *pcVar1;
  char cVar2;
  DWORD DVar3;
  int unaff_EBX;
  HANDLE local_34;
  undefined4 local_30;
  undefined4 local_2c [2];
  undefined4 local_24;
  undefined4 *local_20;
  undefined4 local_1c;
  int local_18;
  char local_12;
  char local_11;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_20 = param_5;
  local_8 = 0;
  if (*(int *)(unaff_EBX + 0xc) != 0) {
    cVar2 = FUN_00b9a9d0();
    local_11 = '\x01';
    if (cVar2 != '\0') goto LAB_0081621a;
  }
  local_11 = '\0';
LAB_0081621a:
  FUN_00b6e830();
  local_8._0_1_ = 1;
  if (local_11 != '\0') {
    local_2c[0] = 0;
    pcVar1 = *(code **)(*(int *)(unaff_EBX + 0x18) + 0x28);
    local_18 = 0;
    if (pcVar1 == (code *)0x0) {
      FUN_00b940e0(0xda1793fb);
    }
    else {
      local_18 = (*pcVar1)(*(undefined4 *)(unaff_EBX + 0xc),param_3,param_4,local_2c,param_6,
                           local_24);
    }
    DVar3 = GetLastError();
    if (DVar3 == 0x3e5) {
      while( true ) {
        local_34 = *(HANDLE *)(unaff_EBX + 0x14);
        local_30 = local_24;
        DVar3 = WaitForMultipleObjects(2,&local_34,0,0xffffffff);
        if (DVar3 == 0) break;
        if (DVar3 != 1) goto LAB_008162e1;
        local_1c = 0;
        local_12 = FUN_0060df99(local_18,&local_1c);
        DVar3 = GetLastError();
        *local_20 = local_1c;
        if ((local_12 != '\0') || (DVar3 == 0x79)) goto LAB_008162e1;
        if ((DVar3 < 0x3e4) || (0x3e5 < DVar3)) break;
      }
      local_11 = '\0';
    }
LAB_008162e1:
    if (local_18 != 0) {
      FUN_0060dfcf(local_18);
    }
  }
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_00b6e800();
  return local_11;
}



undefined4 __thiscall FUN_00816361(undefined4 param_1_00,byte param_1)

{
  FUN_0081637d();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0081637d(undefined4 *param_1)

{
  *param_1 = W8D227ECF::WE19BAB78::vftable;
  FUN_00507e58();
  FUN_00507e58();
  *param_1 = W5FC6A77E::WBF585E8D::vftable;
  return;
}



void Catch_All_008163bc(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_008163c6(int param_1)

{
  if ((-(uint)(*(int *)(param_1 + 8) != 0) & 0x7a491c) != 0) {
    FUN_004db8a7();
    return;
  }
  return;
}



void __fastcall FUN_008163dc(int param_1)

{
  if ((-(uint)(*(int *)(param_1 + 0x28) != 0) & 0x7a491c) != 0) {
    FUN_004db8a7();
    return;
  }
  return;
}



undefined4 FUN_008163f2(void)

{
  return 0x52f7262b;
}



undefined4 __thiscall FUN_008164b5(undefined4 param_1_00,byte param_1)

{
  FUN_008164d1();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_008164d1(undefined4 *param_1)

{
  *param_1 = W8D227ECF::WDBFF0014::vftable;
  FUN_0074ca40();
  if (param_1[2] != 0) {
    FUN_0040127a();
  }
  *param_1 = W5FC6A77E::WC01ABAA6::vftable;
  return;
}



void Catch_All_00816516(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __fastcall FUN_00816520(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if (((*(int *)(iVar1 + 0xc) != 0) && (*(int *)(iVar1 + 8) != 0)) && (*(int *)(iVar1 + 4) != 0)) {
    return 1;
  }
  return 0;
}



void FUN_0081653b(undefined *param_1)

{
  *param_1 = 0;
  if ((undefined4 *)(param_1 + 4) != (undefined4 *)0x0) {
    *(undefined4 *)(param_1 + 4) = 0x1000;
  }
  *param_1 = 1;
  return;
}



void FUN_00816555(undefined *param_1)

{
  *param_1 = 0;
  if ((undefined4 *)(param_1 + 4) != (undefined4 *)0x0) {
    *(undefined4 *)(param_1 + 4) = 0x800;
  }
  *param_1 = 1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_0081656f(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3,uint param_4,
            uint *param_5)

{
  uint uVar1;
  char cVar2;
  undefined auStack_3c [12];
  uint uStack_30;
  uint *puStack_2c;
  undefined4 uStack_28;
  undefined *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  *param_5 = 0;
  if ((*(char *)(param_1_00 + 0xc) == '\0') || (param_4 == 0)) {
    uStack_28 = 0x32;
    puStack_2c = param_5;
    uStack_30 = param_4;
    local_14 = auStack_3c;
    FUN_00b9ab90();
    FUN_008160ae();
  }
  else {
    uStack_28 = 0x32;
    puStack_2c = param_5;
    uStack_30 = param_4 - 1;
    local_14 = auStack_3c;
    FUN_00b9ab90();
    cVar2 = FUN_008160ae();
    if (((cVar2 != '\0') && (uVar1 = *param_5, uVar1 != 0)) && (uVar1 < param_4)) {
      *(undefined *)(uVar1 + param_3) = 0;
      *param_5 = *param_5 + 1;
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_008165ef(void)

{
  FUN_00b9aa90();
  FUN_008161e7();
  return;
}



void __fastcall FUN_0081662c(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  FUN_0060dfcf(*(undefined4 *)(iVar1 + 0xc));
  FUN_0060dfcf(*(undefined4 *)(iVar1 + 8));
  return;
}



void Catch_All_0081668e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_00816709(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 1;
  return;
}



void __fastcall FUN_00816713(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 2;
  return;
}



void __fastcall FUN_0081671d(undefined4 *param_1)

{
  *param_1 = WB0BF732D::W393C429E::vftable;
  return;
}



undefined4 * __thiscall FUN_00816724(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WB0BF732D::W393C429E::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_00816741(undefined4 *param_1,undefined4 param_2)

{
  int *piVar1;
  
  *param_1 = WB0BF732D::W7699A737::vftable;
  param_1[1] = param_2;
  piVar1 = (int *)FUN_00418daa(1,0);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)(param_1 + 2);
  }
  param_1[2] = piVar1;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  FUN_00674aaa(param_1 + 8);
  param_2 = 0x2100;
  FUN_008169b1(&param_2);
  param_2 = 0x2101;
  FUN_008169b1(&param_2);
  param_2 = 0x2102;
  FUN_008169b1(&param_2);
  param_2 = 0x2103;
  FUN_008169b1(&param_2);
  param_2 = 0x2104;
  FUN_008169b1(&param_2);
  param_2 = 0x21ff;
  FUN_008169b1(&param_2);
  FUN_008168ac();
  return param_1;
}



undefined4 __thiscall FUN_00816805(undefined4 param_1_00,byte param_1)

{
  FUN_00816821();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00816821(void)

{
  undefined4 *unaff_EDI;
  
  *unaff_EDI = WB0BF732D::W7699A737::vftable;
  FUN_007a7d86();
  FUN_007a7d86();
  *unaff_EDI = WB0BF732D::W393C429E::vftable;
  return;
}



int __fastcall FUN_00816840(int param_1)

{
  return *(int *)(param_1 + 0x30) - *(int *)(param_1 + 0x2c) >> 2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_0081684a(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined local_1c [8];
  undefined4 local_14;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  uStack_8 = 0x816856;
  local_14 = 0;
  puVar1 = (undefined4 *)FUN_0041b02a();
  puVar1 = (undefined4 *)FUN_004fe62f(local_1c,*(undefined4 *)(param_1_00 + 4),*puVar1);
  *param_1 = *puVar1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(puVar1 + 1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_008168ac(void)

{
  int *piVar1;
  undefined4 *puVar2;
  char cVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  int unaff_EDI;
  int local_3c [5];
  undefined4 *local_28;
  undefined4 *local_1c;
  int local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x8168b8;
  cVar3 = (**(code **)(**(int **)(unaff_EDI + 4) + 4))();
  if (cVar3 != '\0') {
    puVar6 = *(undefined4 **)(unaff_EDI + 0x14);
    if (*(undefined4 **)(unaff_EDI + 0x18) < puVar6) {
      FUN_00a3fb10();
    }
    piVar1 = *(int **)(unaff_EDI + 8);
    while( true ) {
      puVar2 = *(undefined4 **)(unaff_EDI + 0x18);
      local_1c = puVar6;
      if (puVar2 < *(undefined4 **)(unaff_EDI + 0x14)) {
        FUN_00a3fb10();
      }
      if ((piVar1 == (int *)0x0) || (piVar1 != *(int **)(unaff_EDI + 8))) {
        FUN_00a3fb10();
      }
      if (local_1c == puVar2) break;
      FUN_007f992e(local_3c);
      local_8 = 0;
      if (piVar1 == (int *)0x0) {
        FUN_00a3fb10();
        iVar4 = 0;
      }
      else {
        iVar4 = *piVar1;
      }
      puVar6 = local_1c;
      if (*(undefined4 **)(iVar4 + 0x10) <= local_1c) {
        FUN_00a3fb10();
      }
      cVar3 = (**(code **)(**(int **)(unaff_EDI + 4) + 0xc))(*puVar6,local_3c);
      if (cVar3 != '\0') {
        local_14 = (undefined4 *)*local_28;
        local_18 = local_3c[0];
        while( true ) {
          puVar2 = local_28;
          if ((local_18 == 0) || (local_18 != local_3c[0])) {
            FUN_00a3fb10();
          }
          puVar6 = local_1c;
          if (local_14 == puVar2) break;
          uVar5 = FUN_006adbc2();
          FUN_0041b043(uVar5);
          FUN_007a741a();
        }
      }
      local_8 = 0xffffffff;
      FUN_007f9963();
      if (piVar1 == (int *)0x0) {
        FUN_00a3fb10();
        iVar4 = 0;
      }
      else {
        iVar4 = *piVar1;
      }
      if (*(undefined4 **)(iVar4 + 0x10) <= puVar6) {
        FUN_00a3fb10();
      }
      puVar6 = puVar6 + 1;
    }
  }
  return;
}



void FUN_008169b1(undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 *unaff_EDI;
  undefined local_10 [12];
  
  uVar1 = unaff_EDI[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(unaff_EDI[5] - uVar1) >> 2;
  }
  uVar2 = unaff_EDI[4];
  if ((uint)((int)(uVar2 - uVar1) >> 2) < uVar3) {
    uVar4 = FUN_00816ab1(param_1);
    unaff_EDI[4] = uVar4;
  }
  else {
    if (uVar2 < uVar1) {
      FUN_00a3fb10();
    }
    FUN_00816a0b(local_10,param_1,*unaff_EDI,uVar2);
  }
  return;
}



void FUN_00816a0b(int **param_1,undefined4 param_2,int *param_3,int param_4)

{
  int *piVar1;
  int *piVar2;
  int **in_EAX;
  int iVar3;
  int iVar4;
  
  piVar1 = in_EAX[3];
  if (((int)in_EAX[4] - (int)piVar1 & 0xfffffffcU) == 0) {
    iVar4 = 0;
  }
  else {
    if (in_EAX[4] < piVar1) {
      FUN_00a3fb10();
    }
    if ((param_3 == (int *)0x0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    iVar4 = param_4 - (int)piVar1 >> 2;
  }
  FUN_00816ad8(param_3,param_4);
  piVar1 = in_EAX[3];
  if (in_EAX[4] < piVar1) {
    FUN_00a3fb10();
  }
  piVar2 = *in_EAX;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar2;
  }
  piVar1 = piVar1 + iVar4;
  if (piVar1 <= *(int **)(iVar3 + 0x10)) {
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *piVar2;
    }
    if (*(int **)(iVar4 + 0xc) <= piVar1) goto LAB_00816a9f;
  }
  FUN_00a3fb10();
LAB_00816a9f:
  param_1[1] = piVar1;
  *param_1 = piVar2;
  return;
}



int FUN_00816ab1(void)

{
  int unaff_EBX;
  int unaff_ESI;
  
  thunk_FUN_00816cb7();
  return unaff_EBX + unaff_ESI * 4;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00816ad8(int *param_1_00,int param_2_00,undefined4 param_1,int *param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int extraout_ECX;
  int iVar6;
  int local_1c;
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0x816ae4;
  iVar2 = *(int *)(param_2_00 + 0xc);
  if (iVar2 == 0) {
    local_18 = 0;
  }
  else {
    local_18 = *(int *)(param_2_00 + 0x14) - iVar2 >> 2;
  }
  iVar6 = *(int *)(param_2_00 + 0x10);
  iVar5 = 0x3fffffff;
  iVar2 = iVar6 - iVar2 >> 2;
  if (iVar2 == 0x3fffffff) {
    iVar2 = FUN_004423c1();
    iVar5 = extraout_ECX;
  }
  uVar1 = iVar2 + 1;
  if (local_18 < uVar1) {
    if (iVar5 - (local_18 >> 1) < local_18) {
      local_18 = 0;
    }
    else {
      local_18 = local_18 + (local_18 >> 1);
    }
    if (local_18 < uVar1) {
      local_18 = uVar1;
    }
    local_1c = FUN_00467f53();
    iVar2 = *(int *)(param_2_00 + 0xc);
    local_8 = 0;
    FUN_00816ab1(param_1_00);
    iVar6 = local_1c;
    FUN_00816c7e(param_2,local_1c);
    FUN_00816c7e(*(undefined4 *)(param_2_00 + 0x10),iVar6 + 4 + ((int)param_2 - iVar2 >> 2) * 4);
    iVar2 = *(int *)(param_2_00 + 0xc);
    if (iVar2 != 0) {
      for (; iVar2 != *(int *)(param_2_00 + 0x10); iVar2 = iVar2 + 4) {
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(param_2_00 + 0xc));
    }
    *(uint *)(param_2_00 + 0x14) = iVar6 + local_18 * 4;
    *(int *)(param_2_00 + 0x10) = iVar6 + ((*(int *)(param_2_00 + 0x10) - iVar2 >> 2) + 1) * 4;
    *(int *)(param_2_00 + 0xc) = iVar6;
  }
  else {
    iVar2 = *param_1_00;
    if (iVar6 - (int)param_2 >> 2 == 0) {
      local_1c = iVar2;
      FUN_00816c7e(iVar6,param_2 + 1);
      local_8 = 2;
      FUN_00816ab1(&local_1c);
      *(int *)(param_2_00 + 0x10) = *(int *)(param_2_00 + 0x10) + 4;
      iVar2 = *(int *)(param_2_00 + 0x10);
      for (; param_2 != (int *)(iVar2 + -4); param_2 = param_2 + 1) {
        *param_2 = local_1c;
      }
    }
    else {
      piVar4 = (int *)(iVar6 + -4);
      uVar3 = FUN_00816c7e(iVar6,iVar6);
      *(undefined4 *)(param_2_00 + 0x10) = uVar3;
      if (param_2 != piVar4) {
        iVar6 = iVar6 - (int)piVar4;
        do {
          piVar4 = piVar4 + -1;
          *(int *)(iVar6 + (int)piVar4) = *piVar4;
        } while (piVar4 != param_2);
      }
      piVar4 = param_2 + 1;
      if (param_2 != piVar4) {
        do {
          *param_2 = iVar2;
          param_2 = param_2 + 1;
        } while (param_2 != piVar4);
      }
    }
  }
  return;
}



void Catch_All_00816bc8(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x18));
}



void FUN_00816c7e(undefined4 param_1)

{
  thunk_FUN_00816ccf(param_1,param_1,0);
  return;
}



void thunk_FUN_00816cb7(int param_1,undefined4 *param_2)

{
  undefined4 *in_EAX;
  
  for (; param_1 != 0; param_1 = param_1 + -1) {
    if (in_EAX != (undefined4 *)0x0) {
      *in_EAX = *param_2;
    }
    in_EAX = in_EAX + 1;
  }
  return;
}



void FUN_00816cb7(int param_1,undefined4 *param_2)

{
  undefined4 *in_EAX;
  
  for (; param_1 != 0; param_1 = param_1 + -1) {
    if (in_EAX != (undefined4 *)0x0) {
      *in_EAX = *param_2;
    }
    in_EAX = in_EAX + 1;
  }
  return;
}



void __thiscall thunk_FUN_00816ccf(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *in_EAX;
  
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 1) {
    if (in_EAX != (undefined4 *)0x0) {
      *in_EAX = *param_1_00;
    }
    in_EAX = in_EAX + 1;
  }
  return;
}



void __thiscall FUN_00816ccf(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *in_EAX;
  
  for (; param_1_00 != param_1; param_1_00 = param_1_00 + 1) {
    if (in_EAX != (undefined4 *)0x0) {
      *in_EAX = *param_1_00;
    }
    in_EAX = in_EAX + 1;
  }
  return;
}



char FUN_00816cd6(undefined4 param_1)

{
  int iVar1;
  char cVar2;
  int *in_EAX;
  undefined4 uVar3;
  int local_8;
  
  cVar2 = FUN_00bb64e0(&local_8,0);
  iVar1 = local_8;
  if (cVar2 == '\0') {
    uVar3 = 0xf9447ad1;
  }
  else {
    *in_EAX = local_8;
    cVar2 = FUN_00bb6360(in_EAX + 2,param_1,4);
    local_8 = local_8 + 4;
    if (cVar2 == '\0') {
      uVar3 = 0xa792a78b;
    }
    else {
      cVar2 = FUN_00bb6360(in_EAX + 3,param_1,local_8);
      local_8 = local_8 + iVar1;
      if (cVar2 == '\0') {
        uVar3 = 0x88915337;
      }
      else {
        cVar2 = FUN_00bb6360(in_EAX + 4,param_1,local_8);
        local_8 = local_8 + iVar1;
        if (cVar2 == '\0') {
          uVar3 = 0xb4100677;
        }
        else {
          cVar2 = FUN_00bb6360(in_EAX + 5,param_1,local_8);
          if (cVar2 == '\0') {
            uVar3 = 0xff324051;
          }
          else {
            cVar2 = FUN_00816dd2();
            if (cVar2 != '\0') {
              return cVar2;
            }
            uVar3 = 0xe8fe9c0f;
          }
        }
      }
    }
  }
  FUN_00b940e0(uVar3);
  return '\0';
}



undefined FUN_00816dd2(void)

{
  byte bVar1;
  byte bVar2;
  undefined4 uVar3;
  char cVar4;
  byte *pbVar5;
  byte *pbVar6;
  undefined4 *puVar7;
  uint *unaff_ESI;
  undefined8 uVar8;
  undefined4 local_10;
  undefined4 *local_c;
  uint local_8;
  
  local_8 = *unaff_ESI;
  if (local_8 != 0) {
    do {
      pbVar5 = (byte *)FUN_00b92870();
      pbVar6 = (byte *)FUN_00b92870();
      bVar1 = *pbVar5;
      bVar2 = *pbVar6;
      uVar8 = FUN_00b92870();
      *(byte *)uVar8 = bVar1 & bVar2;
    } while ((int)((ulonglong)uVar8 >> 0x20) + 1U < local_8);
  }
  if (local_8 != 0) {
    do {
      pbVar5 = (byte *)FUN_00b92870();
      bVar1 = *pbVar5;
      pbVar5 = (byte *)FUN_00b92870();
      bVar2 = *pbVar5;
      uVar8 = FUN_00b92870();
      *(byte *)uVar8 = ~bVar1 & bVar2;
    } while ((int)((ulonglong)uVar8 >> 0x20) + 1U < local_8);
  }
  puVar7 = (undefined4 *)FUN_00b93190(unaff_ESI[2],&local_c);
  uVar3 = *puVar7;
  *puVar7 = 0;
  FUN_0040c727(uVar3);
  if (local_c != (undefined4 *)0x0) {
    (**(code **)*local_c)(1);
  }
  cVar4 = FUN_00b93390();
  if ((cVar4 != '\0') && (cVar4 = FUN_00b93390(), cVar4 != '\0')) {
    FUN_00816fd2(0,local_8,local_10,local_c);
    *(undefined *)(unaff_ESI + 1) = 1;
    return 1;
  }
  return 0;
}



char FUN_00816e9f(void)

{
  char cVar1;
  undefined4 *unaff_ESI;
  undefined4 uVar2;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  if (*(char *)(unaff_ESI + 1) == '\0') {
    uVar2 = 0xbb2ca9d9;
  }
  else {
    uVar2 = *unaff_ESI;
    cVar1 = FUN_00b93390();
    if ((((cVar1 != '\0') && (cVar1 = FUN_00b93390(), cVar1 != '\0')) &&
        (cVar1 = FUN_00b93390(), cVar1 != '\0')) &&
       ((cVar1 = FUN_00b93390(), cVar1 != '\0' && (cVar1 = FUN_00b93390(), cVar1 != '\0')))) {
      cVar1 = FUN_00816f6e(&local_c,uVar2,local_c,local_8);
      if (cVar1 != '\0') {
        FUN_00816fd2(local_c,uVar2,local_14,local_10);
        return '\x01';
      }
      cVar1 = FUN_00816f6e(&local_c,uVar2,local_18,local_8);
      return (cVar1 != '\0') + '\x02';
    }
    uVar2 = 0x7c3107e4;
  }
  FUN_00b940e0(uVar2);
  return '\0';
}



undefined __thiscall
FUN_00816f6e(int param_1_00,uint *param_1,uint param_2,byte *param_3,int param_4)

{
  uint uVar1;
  uint uVar2;
  byte *pbVar3;
  uint uVar4;
  bool bVar5;
  int local_c;
  
  uVar1 = *(uint *)(param_1_00 + 8);
  FUN_00b93390();
  uVar4 = 0;
  if (uVar1 != param_2) {
    do {
      uVar2 = 0;
      bVar5 = param_2 == 0;
      if (param_2 != 0) {
        pbVar3 = param_3;
        do {
          if ((pbVar3[param_4 - (int)param_3] & *(byte *)(local_c + uVar4 + uVar2)) != *pbVar3)
          break;
          uVar2 = uVar2 + 1;
          pbVar3 = pbVar3 + 1;
        } while (uVar2 < param_2);
        bVar5 = uVar2 == param_2;
      }
      if (bVar5) {
        *param_1 = uVar4;
        return 1;
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1 - param_2);
  }
  return 0;
}



void __thiscall FUN_00816fd2(int param_1_00,int param_1,uint param_2,byte *param_3,int param_4)

{
  uint uVar1;
  
  FUN_00b93010();
  uVar1 = 0;
  if (param_2 != 0) {
    param_4 = param_4 - (int)param_3;
    do {
      *(byte *)(param_1 + param_1_00 + uVar1) =
           param_3[param_4] & *(byte *)(param_1 + param_1_00 + uVar1) | *param_3;
      uVar1 = uVar1 + 1;
      param_3 = param_3 + 1;
    } while (uVar1 < param_2);
  }
  return;
}



void FUN_0081700e(undefined4 param_1,uint param_2,uint param_3,int param_4)

{
  bool bVar1;
  bool bVar2;
  int iVar3;
  int unaff_EDI;
  uint local_8;
  
  FUN_0041c0c6();
  iVar3 = 0;
  bVar1 = true;
  bVar2 = false;
  do {
    local_8 = param_4 + iVar3;
    if ((local_8 < param_2) || (param_3 <= local_8 + unaff_EDI)) {
      if (bVar2) {
        return;
      }
      bVar2 = true;
    }
    else {
      FUN_0041b043(&local_8);
      bVar2 = false;
    }
    iVar3 = -iVar3;
    bVar1 = !bVar1;
    if (!bVar1) {
      iVar3 = iVar3 + unaff_EDI;
    }
  } while( true );
}



void __fastcall FUN_00817060(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0x6020000;
  *(undefined4 *)(param_1 + 8) = 0x6300000;
  *(undefined4 *)(param_1 + 0xc) = 0x6100000;
  return;
}



void __fastcall FUN_00817078(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0x6040000;
  *(undefined4 *)(param_1 + 8) = 0x7000000;
  *(undefined4 *)(param_1 + 0xc) = 0x6580000;
  return;
}



void __fastcall FUN_00817090(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0x6020000;
  *(undefined4 *)(param_1 + 8) = 0x6820000;
  *(undefined4 *)(param_1 + 0xc) = 0x6200000;
  return;
}



void __fastcall FUN_008170a8(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0x6040000;
  *(undefined4 *)(param_1 + 8) = 0x7000000;
  *(undefined4 *)(param_1 + 0xc) = 0x6540000;
  return;
}



void __fastcall FUN_008170c0(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0x6040000;
  *(undefined4 *)(param_1 + 8) = 0x7000000;
  *(undefined4 *)(param_1 + 0xc) = 0x6600000;
  return;
}



void __fastcall FUN_008170d8(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0x6020000;
  *(undefined4 *)(param_1 + 8) = 0x67a0000;
  *(undefined4 *)(param_1 + 0xc) = 0x6320000;
  return;
}



void __fastcall FUN_008170f0(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0x6040000;
  *(undefined4 *)(param_1 + 8) = 0x69c0000;
  *(undefined4 *)(param_1 + 0xc) = 0x6300000;
  return;
}



void __fastcall FUN_00817108(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0x6040000;
  *(undefined4 *)(param_1 + 8) = 0x7000000;
  *(undefined4 *)(param_1 + 0xc) = 0x6180000;
  return;
}



void __fastcall FUN_00817120(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0xc080000;
  *(undefined4 *)(param_1 + 8) = 0xd400000;
  *(undefined4 *)(param_1 + 0xc) = 0xcb80000;
  return;
}



void __fastcall FUN_00817138(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0xc080000;
  *(undefined4 *)(param_1 + 8) = 0xd400000;
  *(undefined4 *)(param_1 + 0xc) = 0xcbe0000;
  return;
}



void __fastcall FUN_00817150(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0xc080000;
  *(undefined4 *)(param_1 + 8) = 0xd400000;
  *(undefined4 *)(param_1 + 0xc) = 0xcc00000;
  return;
}



void __fastcall FUN_00817168(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0xc080000;
  *(undefined4 *)(param_1 + 8) = 0xd400000;
  *(undefined4 *)(param_1 + 0xc) = 0xcbc0000;
  return;
}



void __fastcall FUN_00817180(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 8) = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  return;
}



undefined4 * __thiscall FUN_0081766e(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WB0BF732D::WD8748966::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined FUN_0081768b(void)

{
  return 1;
}



void Catch_All_008176d6(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_008176ed(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int local_14;
  
  puVar2 = (undefined4 *)operator_new(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = WB0BF732D::W0F9BD072::vftable;
    puVar2[1] = param_2;
  }
  *param_1 = puVar2;
  param_1[1] = 0;
  puVar3 = (undefined4 *)FUN_00817775(puVar2);
  uVar1 = param_1[1];
  param_1[1] = *puVar3;
  *puVar3 = uVar1;
  if (local_14 != 0) {
    FUN_0040127a();
  }
  FUN_007a491c(param_1,puVar2,puVar2);
  return param_1;
}



void __thiscall FUN_0081775a(int param_1_00,undefined4 param_1)

{
  FUN_00687f2b(param_1,*(undefined4 *)(param_1_00 + 4));
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00817775(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  *param_1_00 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_WB0BF732D::W0F9BD072>::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  return param_1_00;
}



void Catch_All_008177bb(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_008177d2(void)

{
  FUN_006bfe77();
  return;
}



void __fastcall FUN_008178b9(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x008178be. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + -0x30) + 4))();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_008178c1(undefined4 param_1)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0081790f(undefined4 param_1)

{
  undefined4 local_2c [6];
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0;
  local_14 = local_2c;
  local_2c[0] = param_1;
                    // WARNING: Subroutine does not return
  FUN_0043c023(&stack0x00000008);
}



undefined4 __thiscall FUN_0081795d(int param_1_00,undefined4 param_1)

{
  (**(code **)(*(int *)(param_1_00 + -0x30) + 0x18))(param_1,0);
  return param_1;
}



void __fastcall FUN_00817977(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x0081797c. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + -0x30) + 0x24))();
  return;
}



void __fastcall FUN_0081797f(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x00817984. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + -0x30) + 0x2c))();
  return;
}



void FUN_00817987(void)

{
  FUN_006bfe9f();
  return;
}



undefined4 __thiscall FUN_0081798f(undefined4 param_1_00,byte param_1)

{
  FUN_00b9c09b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void Catch_All_00817a3e(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_00817a55(undefined4 param_1,byte param_2)

{
  FUN_00ba5d20();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void Catch_All_00817b22(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  if (*(undefined4 **)(unaff_EBP + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(unaff_EBP + 8))(1);
  }
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_00817b39(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8E975A95::WCDAC42C9::vftable;
  FUN_00ba327a();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_00817b60(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_30;
  undefined4 local_2c;
  undefined local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d278;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  local_30 = 0;
  local_10 = 7;
  local_14 = 0;
  local_24 = local_24 & 0xffff0000;
  FID_conflict_assign(&DAT_03065578,0x11);
  local_4 = 0;
  local_30 = 0x18e38061;
  local_2c = 0x85f580fd;
  FUN_00b94470(&local_30,local_28);
  if (7 < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_00817c10(undefined4 param_1)

{
  uint uVar1;
  undefined4 local_30;
  undefined4 local_2c;
  undefined local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c2d278;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  local_30 = 0;
  local_10 = 7;
  local_14 = 0;
  local_24 = local_24 & 0xffff0000;
  FID_conflict_assign(&DAT_030655a0,0x25);
  local_4 = 0;
  local_30 = 0xdef8caa5;
  local_2c = 0xe15b179;
  FUN_00b94470(&local_30,local_28);
  if (7 < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00817cc0(undefined4 param_1_00,byte param_1)

{
  FUN_00b59100();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00817ce0(void)

{
  FUN_00817da0();
  return;
}



int * FUN_00817cf0(uint *param_1)

{
  int **ppiVar1;
  int *piVar2;
  int **ppiVar3;
  int **unaff_EBX;
  int iVar4;
  undefined local_18 [4];
  int *local_14;
  uint local_10 [2];
  undefined4 local_8;
  undefined4 local_4;
  
  ppiVar3 = (int **)unaff_EBX[6];
  if (*(char *)((int)(int *)((int *)ppiVar3)[1] + 0x21) == '\0') {
    ppiVar1 = (int **)(int *)((int *)ppiVar3)[1];
    do {
      if (ppiVar1[4] < *param_1) {
        piVar2 = ppiVar1[2];
      }
      else {
        piVar2 = *ppiVar1;
        ppiVar3 = ppiVar1;
      }
      ppiVar1 = (int **)piVar2;
    } while (*(char *)((int)piVar2 + 0x21) == '\0');
  }
  piVar2 = *unaff_EBX;
  local_14 = unaff_EBX[6];
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
  }
  if ((ppiVar3 == (int **)local_14) || (*param_1 < (uint)((int *)ppiVar3)[4])) {
    local_10[0] = *param_1;
    local_8 = 0;
    local_4 = 0;
    ppiVar3 = (int **)FUN_00817f10(local_18,local_10,piVar2,ppiVar3);
    piVar2 = *ppiVar3;
    ppiVar3 = (int **)ppiVar3[1];
  }
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar4 = 0;
  }
  else {
    iVar4 = *piVar2;
  }
  if (ppiVar3 == (int **)*(int **)(iVar4 + 0x18)) {
    FUN_00a3fb10();
  }
  return (int *)ppiVar3 + 6;
}



void FUN_00817da0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00c1cfc8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00818200(DAT_0323f878 ^ (uint)&stack0xfffffff0);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



int * FUN_00817df0(int *param_1,uint *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined4 *puVar5;
  int *unaff_EDI;
  int local_14;
  undefined4 *local_10;
  int local_c;
  int local_8;
  
  puVar5 = (undefined4 *)unaff_EDI[6];
  if (*(char *)((int)(undefined4 *)puVar5[1] + 0x21) == '\0') {
    puVar2 = (undefined4 *)puVar5[1];
    do {
      if ((uint)puVar2[4] < *param_2) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar5 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x21) == '\0');
  }
  puVar2 = (undefined4 *)unaff_EDI[6];
  local_10 = puVar5;
  local_14 = *unaff_EDI;
  if (*unaff_EDI == 0) {
    FUN_00a3fb10();
  }
  if ((puVar5 == puVar2) || (*param_2 < (uint)puVar5[4])) {
    local_8 = unaff_EDI[6];
    local_c = *unaff_EDI;
    piVar4 = &local_c;
  }
  else {
    piVar4 = &local_14;
  }
  iVar1 = *piVar4;
  param_1[1] = piVar4[1];
  *param_1 = iVar1;
  return param_1;
}



void FUN_00817e80(void)

{
  undefined4 *in_EAX;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*in_EAX);
}



void ** FUN_00817e90(void **param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00c15d48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffff0;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = param_1;
  }
  *param_1 = puVar2;
  local_4 = 0;
  pvVar3 = (void *)FUN_008188f0(uVar1);
  param_1[6] = pvVar3;
  *(undefined *)((int)pvVar3 + 0x21) = 1;
  *(void **)((int)param_1[6] + 4) = param_1[6];
  *(void **)param_1[6] = param_1[6];
  *(void **)((int)param_1[6] + 8) = param_1[6];
  param_1[7] = (void *)0x0;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_00817f10(undefined4 *param_1,uint *param_2,int param_3,int param_4)

{
  int iVar1;
  char cVar2;
  int *in_EAX;
  undefined4 *puVar3;
  bool bVar4;
  int local_10;
  int local_c;
  
  if (in_EAX[7] == 0) {
    FUN_00818660(param_1,1,in_EAX[6],param_2);
    return param_1;
  }
  iVar1 = *(int *)in_EAX[6];
  if ((param_3 == 0) || (param_3 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_4 == iVar1) {
    if (*param_2 < *(uint *)(param_4 + 0x10)) {
      FUN_00818660(param_1,1,param_4,param_2);
      return param_1;
    }
  }
  else {
    iVar1 = in_EAX[6];
    if ((param_3 == 0) || (param_3 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_4 == iVar1) {
      if (*(uint *)(*(int *)(in_EAX[6] + 8) + 0x10) < *param_2) {
        FUN_00818660(param_1,0,*(int *)(in_EAX[6] + 8),param_2);
        return param_1;
      }
      goto LAB_008180bc;
    }
    bVar4 = *(uint *)(param_4 + 0x10) < *param_2;
    if (*param_2 < *(uint *)(param_4 + 0x10)) {
      FUN_00818980();
      if (*(uint *)(param_4 + 0x10) < *param_2) {
        if (*(char *)(*(int *)(param_4 + 8) + 0x21) == '\0') {
          FUN_00818660(param_1,1,param_4,param_2);
          return param_1;
        }
        goto LAB_00818089;
      }
      bVar4 = *(uint *)(param_4 + 0x10) < *param_2;
    }
    if (bVar4) {
      local_10 = *in_EAX;
      local_c = in_EAX[6];
      FUN_00818a00();
      cVar2 = FUN_00818240();
      if ((cVar2 != '\0') || (*param_2 < *(uint *)(param_4 + 0x10))) {
        if (*(char *)(*(int *)(param_4 + 8) + 0x21) == '\0') {
          FUN_00818660(param_1,1,param_4,param_2);
          return param_1;
        }
LAB_00818089:
        FUN_00818660(param_1,0,param_4,param_2);
        return param_1;
      }
    }
  }
LAB_008180bc:
  puVar3 = (undefined4 *)FUN_00818260(&local_10,param_2);
  *param_1 = *puVar3;
  param_1[1] = puVar3[1];
  return param_1;
}



void FUN_008180e0(int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  int *in_EAX;
  
  iVar1 = *(int *)in_EAX[6];
  if ((param_2 == 0) || (param_2 != *in_EAX)) {
    FUN_00a3fb10();
  }
  if (param_3 == iVar1) {
    iVar1 = in_EAX[6];
    if ((param_4 == 0) || (param_4 != *in_EAX)) {
      FUN_00a3fb10();
    }
    if (param_5 == iVar1) {
      FUN_008181c0(*(undefined4 *)(in_EAX[6] + 4));
      *(int *)(in_EAX[6] + 4) = in_EAX[6];
      in_EAX[7] = 0;
      *(int *)in_EAX[6] = in_EAX[6];
      *(int *)(in_EAX[6] + 8) = in_EAX[6];
      iVar1 = *in_EAX;
      param_1[1] = *(int *)in_EAX[6];
      *param_1 = iVar1;
      return;
    }
  }
  while( true ) {
    if ((param_2 == 0) || (param_2 != param_4)) {
      FUN_00a3fb10();
    }
    if (param_3 == param_5) break;
    FUN_00818a00();
    FUN_00818360();
  }
  *param_1 = *in_EAX;
  param_1[1] = param_3;
  return;
}



void FUN_008181c0(int param_1)

{
  if (*(char *)(param_1 + 0x21) == '\0') {
    FUN_008181c0(*(undefined4 *)(param_1 + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_00818200(void)

{
  undefined4 *unaff_ESI;
  undefined local_10 [12];
  
  FUN_008180e0(local_10,*unaff_ESI,*(undefined4 *)unaff_ESI[6],*unaff_ESI,(undefined4 *)unaff_ESI[6]
              );
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(unaff_ESI[6]);
}



undefined4 FUN_00818240(void)

{
  int *unaff_ESI;
  int *unaff_EDI;
  
  if ((*unaff_EDI == 0) || (*unaff_EDI != *unaff_ESI)) {
    FUN_00a3fb10();
  }
  return CONCAT31((int3)((uint)unaff_EDI[1] >> 8),unaff_EDI[1] == unaff_ESI[1]);
}



int * FUN_00818260(int *param_1,uint *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  int *unaff_EBX;
  undefined4 *puVar4;
  bool bVar5;
  int local_c;
  undefined4 *local_8;
  
  puVar4 = (undefined4 *)unaff_EBX[6];
  bVar5 = true;
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x21) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      puVar4 = puVar2;
      bVar5 = *param_2 < (uint)puVar4[4];
      if (bVar5) {
        puVar2 = (undefined4 *)*puVar4;
      }
      else {
        puVar2 = (undefined4 *)puVar4[2];
      }
    } while (*(char *)((int)puVar2 + 0x21) == '\0');
  }
  local_c = *unaff_EBX;
  local_8 = puVar4;
  if (bVar5) {
    puVar2 = *(undefined4 **)unaff_EBX[6];
    if (local_c == 0) {
      FUN_00a3fb10();
    }
    if (puVar4 == puVar2) {
      piVar3 = (int *)FUN_00818660(&local_c,1,puVar4,param_2);
      iVar1 = *piVar3;
      param_1[1] = piVar3[1];
      *param_1 = iVar1;
      *(undefined *)(param_1 + 2) = 1;
      return param_1;
    }
    FUN_00818980();
  }
  if ((uint)local_8[4] < *param_2) {
    piVar3 = (int *)FUN_00818660(&local_c,bVar5,puVar4,param_2);
    iVar1 = piVar3[1];
    *param_1 = *piVar3;
    *(undefined *)(param_1 + 2) = 1;
    param_1[1] = iVar1;
    return param_1;
  }
  *param_1 = local_c;
  *(undefined *)(param_1 + 2) = 0;
  param_1[1] = (int)local_8;
  return param_1;
}



void FUN_00818360(int param_1,undefined4 param_2,undefined4 param_3,int **param_4)

{
  undefined uVar1;
  char cVar2;
  int **ppiVar3;
  int iVar4;
  int **ppiVar5;
  uint uVar6;
  int **ppiVar7;
  undefined4 uVar8;
  int **ppiVar9;
  int **ppiVar10;
  int **ppiVar11;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [3];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  undefined local_24;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00c1b9a0;
  local_c = ExceptionList;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  ppiVar7 = param_4;
  if (*(char *)((int)param_4 + 0x21) != '\0') {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"invalid map/set<T> iterator",0x1b);
    local_4 = 0;
    FUN_00a3f1a9();
    local_4._0_1_ = 1;
    local_34[0] = std::logic_error::vftable;
    local_10 = 0xf;
    local_14 = 0;
    local_24 = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_28,local_50,0,0xffffffff);
    local_4 = (uint)local_4._1_3_ << 8;
    local_34[0] = std::out_of_range::vftable;
    ppiVar7 = (int **)__CxxThrowException_8(local_34,&DAT_03115668);
  }
  FUN_00818a00(uVar6);
  ppiVar10 = (int **)*ppiVar7;
  if (*(char *)((int)ppiVar10 + 0x21) == '\0') {
    ppiVar11 = ppiVar10;
    if (*(char *)((int)ppiVar7[2] + 0x21) == '\0') {
      ppiVar11 = (int **)param_4[2];
      if (param_4 != ppiVar7) {
        ppiVar10[1] = (int *)param_4;
        *param_4 = *ppiVar7;
        ppiVar10 = param_4;
        if (param_4 != (int **)ppiVar7[2]) {
          ppiVar10 = (int **)param_4[1];
          if (*(char *)((int)ppiVar11 + 0x21) == '\0') {
            ppiVar11[1] = (int *)ppiVar10;
          }
          *ppiVar10 = (int *)ppiVar11;
          param_4[2] = ppiVar7[2];
          ppiVar7[2][1] = (int)param_4;
        }
        if (*(int ***)(*(int *)(param_1 + 0x18) + 4) == ppiVar7) {
          *(int ***)(*(int *)(param_1 + 0x18) + 4) = param_4;
        }
        else {
          ppiVar9 = (int **)ppiVar7[1];
          if ((int **)*ppiVar9 == ppiVar7) {
            *ppiVar9 = (int *)param_4;
          }
          else {
            ppiVar9[2] = (int *)param_4;
          }
        }
        param_4[1] = ppiVar7[1];
        ppiVar9 = ppiVar7 + 8;
        param_4 = param_4 + 8;
        if (param_4 != ppiVar9) {
          uVar1 = *(undefined *)param_4;
          *(undefined *)param_4 = *(undefined *)ppiVar9;
          *(undefined *)ppiVar9 = uVar1;
        }
        goto LAB_00818510;
      }
    }
  }
  else {
    ppiVar11 = (int **)ppiVar7[2];
  }
  ppiVar10 = (int **)ppiVar7[1];
  if (*(char *)((int)ppiVar11 + 0x21) == '\0') {
    ppiVar11[1] = (int *)ppiVar10;
  }
  if (*(int ***)(*(int *)(param_1 + 0x18) + 4) == ppiVar7) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar11;
  }
  else if ((int **)*ppiVar10 == ppiVar7) {
    *ppiVar10 = (int *)ppiVar11;
  }
  else {
    ppiVar10[2] = (int *)ppiVar11;
  }
  if ((int **)**(int ***)(param_1 + 0x18) == ppiVar7) {
    ppiVar9 = ppiVar10;
    if (*(char *)((int)ppiVar11 + 0x21) == '\0') {
      cVar2 = *(char *)((int)*ppiVar11 + 0x21);
      ppiVar3 = (int **)*ppiVar11;
      ppiVar9 = ppiVar11;
      while (ppiVar5 = ppiVar3, cVar2 == '\0') {
        ppiVar3 = (int **)*ppiVar5;
        cVar2 = *(char *)((int)ppiVar3 + 0x21);
        ppiVar9 = ppiVar5;
      }
    }
    **(int ***)(param_1 + 0x18) = (int *)ppiVar9;
  }
  iVar4 = *(int *)(param_1 + 0x18);
  if (*(int ***)(iVar4 + 8) == ppiVar7) {
    if (*(char *)((int)ppiVar11 + 0x21) == '\0') {
      uVar8 = FUN_00818880();
      *(undefined4 *)(iVar4 + 8) = uVar8;
    }
    else {
      *(int ***)(iVar4 + 8) = ppiVar10;
    }
  }
LAB_00818510:
  if (*(char *)(ppiVar7 + 8) == '\x01') {
    if (ppiVar11 != *(int ***)(*(int *)(param_1 + 0x18) + 4)) {
      do {
        ppiVar9 = ppiVar10;
        if (*(char *)(ppiVar11 + 8) != '\x01') break;
        ppiVar10 = (int **)*ppiVar9;
        if (ppiVar11 == ppiVar10) {
          ppiVar10 = (int **)ppiVar9[2];
          if (*(char *)(ppiVar10 + 8) == '\0') {
            *(undefined *)(ppiVar10 + 8) = 1;
            *(undefined *)(ppiVar9 + 8) = 0;
            FUN_00818830(param_1);
            ppiVar10 = (int **)ppiVar9[2];
          }
          if (*(char *)((int)ppiVar10 + 0x21) == '\0') {
            if ((*(char *)(*ppiVar10 + 8) != '\x01') || (*(char *)(ppiVar10[2] + 8) != '\x01')) {
              if (*(char *)(ppiVar10[2] + 8) == '\x01') {
                *(undefined *)(*ppiVar10 + 8) = 1;
                *(undefined *)(ppiVar10 + 8) = 0;
                FUN_008188a0(param_1);
                ppiVar10 = (int **)ppiVar9[2];
              }
              *(undefined *)(ppiVar10 + 8) = *(undefined *)(ppiVar9 + 8);
              *(undefined *)(ppiVar9 + 8) = 1;
              *(undefined *)(ppiVar10[2] + 8) = 1;
              FUN_00818830(param_1);
              break;
            }
LAB_008185ce:
            *(undefined *)(ppiVar10 + 8) = 0;
          }
        }
        else {
          if (*(char *)(ppiVar10 + 8) == '\0') {
            *(undefined *)(ppiVar10 + 8) = 1;
            *(undefined *)(ppiVar9 + 8) = 0;
            FUN_008188a0(param_1);
            ppiVar10 = (int **)*ppiVar9;
          }
          if (*(char *)((int)ppiVar10 + 0x21) == '\0') {
            if ((*(char *)(ppiVar10[2] + 8) == '\x01') && (*(char *)(*ppiVar10 + 8) == '\x01'))
            goto LAB_008185ce;
            if (*(char *)(*ppiVar10 + 8) == '\x01') {
              *(undefined *)(ppiVar10[2] + 8) = 1;
              *(undefined *)(ppiVar10 + 8) = 0;
              FUN_00818830(param_1);
              ppiVar10 = (int **)*ppiVar9;
            }
            *(undefined *)(ppiVar10 + 8) = *(undefined *)(ppiVar9 + 8);
            *(undefined *)(ppiVar9 + 8) = 1;
            *(undefined *)(*ppiVar10 + 8) = 1;
            FUN_008188a0(param_1);
            break;
          }
        }
        ppiVar10 = (int **)ppiVar9[1];
        ppiVar11 = ppiVar9;
      } while (ppiVar9 != *(int ***)(*(int *)(param_1 + 0x18) + 4));
    }
    *(undefined *)(ppiVar11 + 8) = 1;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(ppiVar7);
}



void FUN_00818660(undefined4 *param_1,char param_2,int **param_3)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  undefined4 uVar4;
  int *piVar5;
  int iVar6;
  int **ppiVar7;
  int *piVar8;
  int *piVar9;
  undefined4 *unaff_EDI;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [3];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  undefined local_24;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00c1b9a0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (0xffffffd < (uint)unaff_EDI[7]) {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"map/set<T> too long",0x13);
    local_4 = 0;
    FUN_00a3f1a9();
    local_4._0_1_ = 1;
    local_34[0] = std::logic_error::vftable;
    local_10 = 0xf;
    local_14 = 0;
    local_24 = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_28,local_50,0,0xffffffff);
    local_4 = (uint)local_4._1_3_ << 8;
    local_34[0] = std::length_error::vftable;
    __CxxThrowException_8(local_34,&DAT_03115554);
  }
  piVar5 = (int *)FUN_00818930(unaff_EDI[6],param_3,unaff_EDI[6]);
  unaff_EDI[7] = unaff_EDI[7] + 1;
  if (param_3 == (int **)unaff_EDI[6]) {
    ((int **)unaff_EDI[6])[1] = piVar5;
    *(int **)unaff_EDI[6] = piVar5;
    iVar6 = unaff_EDI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_3 = piVar5;
      if (param_3 == *(int ***)(int **)unaff_EDI[6]) {
        *(int **)unaff_EDI[6] = piVar5;
      }
      goto LAB_00818758;
    }
    param_3[2] = piVar5;
    iVar6 = unaff_EDI[6];
    if (param_3 != *(int ***)(iVar6 + 8)) goto LAB_00818758;
  }
  *(int **)(iVar6 + 8) = piVar5;
LAB_00818758:
  cVar1 = *(char *)(piVar5[1] + 0x20);
  piVar9 = piVar5;
  do {
    if (cVar1 != '\0') {
      *(undefined *)(*(int *)(unaff_EDI[6] + 4) + 0x20) = 1;
      uVar4 = *unaff_EDI;
      param_1[1] = piVar5;
      *param_1 = uVar4;
      ExceptionList = local_c;
      return;
    }
    ppiVar7 = (int **)(piVar9 + 1);
    piVar2 = *ppiVar7;
    ppiVar3 = (int **)piVar2[1];
    if (piVar2 == *ppiVar3) {
      piVar8 = ppiVar3[2];
      if (*(char *)(piVar8 + 8) == '\0') {
LAB_008187aa:
        *(undefined *)(piVar2 + 8) = 1;
        *(undefined *)(piVar8 + 8) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x20) = 0;
        piVar9 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar9 == (int *)piVar2[2]) {
          FUN_00818830(unaff_EDI);
          piVar9 = piVar2;
        }
        *(undefined *)(piVar9[1] + 0x20) = 1;
        *(undefined *)(*(int *)(piVar9[1] + 4) + 0x20) = 0;
        FUN_008188a0(unaff_EDI);
      }
    }
    else {
      piVar8 = *ppiVar3;
      if (*(char *)(piVar8 + 8) == '\0') goto LAB_008187aa;
      if (piVar9 == (int *)*piVar2) {
        FUN_008188a0(unaff_EDI);
        piVar9 = piVar2;
      }
      *(undefined *)(piVar9[1] + 0x20) = 1;
      *(undefined *)(*(int *)(piVar9[1] + 4) + 0x20) = 0;
      FUN_00818830(unaff_EDI);
    }
    cVar1 = *(char *)(piVar9[1] + 0x20);
  } while( true );
}



void __thiscall FUN_00818830(int *param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1_00[2];
  param_1_00[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x21) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1_00;
  }
  ppiVar1[1] = (int *)param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1 + 0x18) + 4) = ppiVar1;
    *ppiVar1 = param_1_00;
    param_1_00[1] = (int)ppiVar1;
    return;
  }
  ppiVar2 = (int **)param_1_00[1];
  if (param_1_00 == *ppiVar2) {
    *ppiVar2 = (int *)ppiVar1;
    *ppiVar1 = param_1_00;
    param_1_00[1] = (int)ppiVar1;
    return;
  }
  ppiVar2[2] = (int *)ppiVar1;
  *ppiVar1 = param_1_00;
  param_1_00[1] = (int)ppiVar1;
  return;
}



void FUN_00818880(void)

{
  char cVar1;
  int iVar2;
  int in_EAX;
  
  iVar2 = *(int *)(in_EAX + 8);
  cVar1 = *(char *)(iVar2 + 0x21);
  while (cVar1 == '\0') {
    iVar2 = *(int *)(iVar2 + 8);
    cVar1 = *(char *)(iVar2 + 0x21);
  }
  return;
}



void __thiscall FUN_008188a0(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1_00;
  *param_1_00 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x21) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1_00;
  }
  *(int *)(iVar1 + 4) = param_1_00[1];
  if (param_1_00 == *(int **)(*(int *)(param_1 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1 + 0x18) + 4) = iVar1;
    *(int **)(iVar1 + 8) = param_1_00;
    param_1_00[1] = iVar1;
    return;
  }
  piVar2 = (int *)param_1_00[1];
  if (param_1_00 == (int *)piVar2[2]) {
    piVar2[2] = iVar1;
    *(int **)(iVar1 + 8) = param_1_00;
    param_1_00[1] = iVar1;
    return;
  }
  *piVar2 = iVar1;
  *(int **)(iVar1 + 8) = param_1_00;
  param_1_00[1] = iVar1;
  return;
}



void FUN_008188f0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00818ab0();
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 8) = 1;
  *(undefined *)((int)puVar1 + 0x21) = 0;
  return;
}



void FUN_00818930(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 *unaff_ESI;
  
  puVar1 = (undefined4 *)FUN_00818ab0();
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[4] = *unaff_ESI;
    puVar1[5] = unaff_ESI[1];
    puVar1[6] = unaff_ESI[2];
    puVar1[7] = unaff_ESI[3];
    *(undefined *)(puVar1 + 8) = 0;
    *(undefined *)((int)puVar1 + 0x21) = 0;
  }
  return;
}



void FUN_00818980(void)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)unaff_ESI[1];
  if (*(char *)((int)piVar2 + 0x21) == '\0') {
    iVar3 = *piVar2;
    if (*(char *)(iVar3 + 0x21) == '\0') {
      cVar1 = *(char *)(*(int *)(iVar3 + 8) + 0x21);
      iVar4 = *(int *)(iVar3 + 8);
      while (cVar1 == '\0') {
        cVar1 = *(char *)(*(int *)(iVar4 + 8) + 0x21);
        iVar3 = iVar4;
        iVar4 = *(int *)(iVar4 + 8);
      }
      unaff_ESI[1] = iVar3;
      return;
    }
    piVar2 = (int *)piVar2[1];
    cVar1 = *(char *)((int)piVar2 + 0x21);
    while ((cVar1 == '\0' && (unaff_ESI[1] == *piVar2))) {
      unaff_ESI[1] = (int)piVar2;
      piVar2 = (int *)piVar2[1];
      cVar1 = *(char *)((int)piVar2 + 0x21);
    }
    if (*(char *)(unaff_ESI[1] + 0x21) != '\0') {
      FUN_00a3fb10();
      return;
    }
    unaff_ESI[1] = (int)piVar2;
  }
  else {
    iVar3 = piVar2[2];
    unaff_ESI[1] = iVar3;
    if (*(char *)(iVar3 + 0x21) != '\0') {
      FUN_00a3fb10();
      return;
    }
  }
  return;
}



void FUN_00818a00(void)

{
  char cVar1;
  int iVar2;
  int **ppiVar3;
  int **ppiVar4;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    FUN_00a3fb10();
  }
  iVar2 = unaff_ESI[1];
  if (*(char *)(iVar2 + 0x21) == '\0') {
    ppiVar3 = *(int ***)(iVar2 + 8);
    if (*(char *)((int)ppiVar3 + 0x21) != '\0') {
      iVar2 = *(int *)(iVar2 + 4);
      cVar1 = *(char *)(iVar2 + 0x21);
      while ((cVar1 == '\0' && (unaff_ESI[1] == *(int *)(iVar2 + 8)))) {
        unaff_ESI[1] = iVar2;
        iVar2 = *(int *)(iVar2 + 4);
        cVar1 = *(char *)(iVar2 + 0x21);
      }
      unaff_ESI[1] = iVar2;
      return;
    }
    cVar1 = *(char *)((int)*ppiVar3 + 0x21);
    ppiVar4 = (int **)*ppiVar3;
    while (cVar1 == '\0') {
      cVar1 = *(char *)((int)*ppiVar4 + 0x21);
      ppiVar3 = ppiVar4;
      ppiVar4 = (int **)*ppiVar4;
    }
    unaff_ESI[1] = (int)ppiVar3;
    return;
  }
  FUN_00a3fb10();
  return;
}



// WARNING: Removing unreachable block (ram,0x00818a82)

void FUN_00818a70(void)

{
  undefined4 *puVar1;
  uint uVar2;
  int unaff_EDI;
  
  uVar2 = 0;
  if (*(int *)(unaff_EDI + 0x14) != 0) {
    do {
      puVar1 = (undefined4 *)(unaff_EDI + 4);
      if (7 < *(uint *)(unaff_EDI + 0x18)) {
        puVar1 = *(undefined4 **)(undefined4 *)(unaff_EDI + 4);
      }
      *(undefined2 *)((int)puVar1 + uVar2 * 2) = 0;
      uVar2 = uVar2 + 1;
    } while (uVar2 < *(uint *)(unaff_EDI + 0x14));
  }
  return;
}



void __fastcall FUN_00818ab0(uint param_1)

{
  uint extraout_ECX;
  char *local_10;
  undefined **local_c [3];
  
  if ((uint)(0xffffffff / (ulonglong)param_1) < 0x28) {
    local_10 = (char *)0x0;
    std::exception::exception((exception *)local_c,&local_10);
    local_c[0] = std::bad_alloc::vftable;
    __CxxThrowException_8(local_c,&DAT_031153a4);
    param_1 = extraout_ECX;
  }
  operator_new(param_1 * 0x28);
  return;
}



undefined4 * __thiscall FUN_00818b10(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W8D447680::W2A773DC5::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Removing unreachable block (ram,0x00818c3c)
// WARNING: Removing unreachable block (ram,0x00818c46)
// WARNING: Removing unreachable block (ram,0x00818c49)

int * FUN_00818b30(int *param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined4 *puVar4;
  uint uVar5;
  uint uStack_40;
  uint local_30 [3];
  char local_24;
  undefined4 local_20;
  facet *local_1c [2];
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00c2d560;
  local_10 = ExceptionList;
  uStack_40 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_40;
  ExceptionList = &local_10;
  FUN_00425790(param_1);
  local_8 = 0;
  if (local_24 == '\0') {
    local_8 = 0xffffffff;
    FUN_00425900();
    ExceptionList = local_10;
    return param_1;
  }
  uVar2 = FUN_00417498(local_1c);
  local_8._0_1_ = 1;
  piVar3 = (int *)FUN_00424900(uVar2);
  local_8._0_1_ = 0;
  if ((local_1c[0] != (facet *)0x0) &&
     (puVar4 = (undefined4 *)std::locale::facet::_Decref(local_1c[0]), puVar4 != (undefined4 *)0x0))
  {
    (**(code **)*puVar4)(1);
  }
  local_8 = CONCAT31(local_8._1_3_,2);
  iVar1 = *(int *)(*param_1 + 4);
  uVar2 = *(undefined4 *)((int)param_1 + iVar1 + 0x28);
  local_30[0] = local_30[0] & 0xffffff00;
  local_20 = CONCAT31(local_20._1_3_,*(undefined *)(iVar1 + 0x30 + (int)param_1));
  uVar5 = local_30[0];
  (**(code **)(*piVar3 + 0x18))
            (local_30,local_30[0],uVar2,*(int *)(*param_1 + 4) + (int)param_1,local_20,param_2);
  local_8 = 0;
  piVar3 = (int *)FUN_00818c31(uVar5,uVar2);
  return piVar3;
}



undefined * Catch_All_00818bfc(void)

{
  int unaff_EBP;
  
  FUN_00417a55(*(uint *)((int)*(int **)(unaff_EBP + 8) + *(int *)(**(int **)(unaff_EBP + 8) + 4) + 8
                        ) | 4,1);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &DAT_00818c2a;
}



void FUN_00818c31(void)

{
  uint uVar1;
  uint unaff_EBX;
  int unaff_EBP;
  int *unaff_ESI;
  uint unaff_EDI;
  
  if (unaff_EDI != unaff_EBX) {
    uVar1 = *(uint *)((int)unaff_ESI + *(int *)(*unaff_ESI + 4) + 8) | unaff_EDI;
    if (*(uint *)((int)unaff_ESI + *(int *)(*unaff_ESI + 4) + 0x28) == unaff_EBX) {
      uVar1 = uVar1 | 4;
    }
    FUN_00417a55(uVar1,unaff_EBX);
  }
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00425900();
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



undefined4 __thiscall FUN_00818c80(undefined4 param_1,byte param_2)

{
  FUN_00b94ff0();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 FUN_00818ca0(void)

{
  undefined4 in_EAX;
  undefined4 unaff_EDI;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_00818da0(unaff_EDI,in_EAX);
  FUN_00818e30(local_14,local_10,local_c,local_8,0);
  FUN_007d4b76(&local_14,local_14,local_10,local_c,local_8);
  return 0;
}



int * FUN_00818d10(int *param_1,int *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined4 *puVar5;
  int *unaff_EDI;
  int local_14;
  undefined4 *local_10;
  int local_c;
  int local_8;
  
  puVar5 = (undefined4 *)unaff_EDI[6];
  if (*(char *)((int)(undefined4 *)puVar5[1] + 0x15) == '\0') {
    puVar2 = (undefined4 *)puVar5[1];
    do {
      if ((int)puVar2[3] < *param_2) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar5 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x15) == '\0');
  }
  puVar2 = (undefined4 *)unaff_EDI[6];
  local_10 = puVar5;
  local_14 = *unaff_EDI;
  if (*unaff_EDI == 0) {
    FUN_00a3fb10();
  }
  if ((puVar5 == puVar2) || (*param_2 < (int)puVar5[3])) {
    local_8 = unaff_EDI[6];
    local_c = *unaff_EDI;
    piVar4 = &local_c;
  }
  else {
    piVar4 = &local_14;
  }
  iVar1 = *piVar4;
  param_1[1] = piVar4[1];
  *param_1 = iVar1;
  return param_1;
}



void FUN_00818da0(undefined4 *param_1,int *param_2)

{
  undefined4 uVar1;
  undefined4 *in_EAX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  
  puVar4 = (undefined4 *)param_1[6];
  puVar5 = puVar4;
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x15) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      if ((int)puVar2[3] < *param_2) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        if ((*(char *)((int)puVar4 + 0x15) != '\0') && (*param_2 < (int)puVar2[3])) {
          puVar4 = puVar2;
        }
        puVar3 = (undefined4 *)*puVar2;
        puVar5 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x15) == '\0');
  }
  if (*(char *)((int)puVar4 + 0x15) == '\0') {
    puVar2 = (undefined4 *)*puVar4;
  }
  else {
    puVar2 = *(undefined4 **)(param_1[6] + 4);
  }
  if (*(char *)((int)puVar2 + 0x15) == '\0') {
    do {
      if (*param_2 < (int)puVar2[3]) {
        puVar3 = (undefined4 *)*puVar2;
        puVar4 = puVar2;
      }
      else {
        puVar3 = (undefined4 *)puVar2[2];
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x15) == '\0');
  }
  uVar1 = *param_1;
  in_EAX[1] = puVar5;
  *in_EAX = uVar1;
  in_EAX[2] = uVar1;
  in_EAX[3] = puVar4;
  return;
}



void FUN_00818e30(int param_1,int **param_2,int param_3,int **param_4)

{
  char cVar1;
  int **ppiVar2;
  int **ppiVar3;
  int *unaff_ESI;
  
  ppiVar2 = param_2;
  do {
    do {
      while( true ) {
        while( true ) {
          param_2 = ppiVar2;
          if ((param_1 == 0) || (param_1 != param_3)) {
            FUN_00a3fb10();
          }
          if (param_2 == param_4) {
            return;
          }
          *unaff_ESI = *unaff_ESI + 1;
          if (param_1 == 0) {
            FUN_00a3fb10();
          }
          if (*(char *)((int)param_2 + 0x15) == '\0') break;
          FUN_00a3fb10();
          ppiVar2 = param_2;
        }
        ppiVar2 = (int **)param_2[2];
        if (*(char *)((int)ppiVar2 + 0x15) != '\0') break;
        cVar1 = *(char *)((int)*ppiVar2 + 0x15);
        ppiVar3 = (int **)*ppiVar2;
        while (cVar1 == '\0') {
          cVar1 = *(char *)((int)*ppiVar3 + 0x15);
          ppiVar2 = ppiVar3;
          ppiVar3 = (int **)*ppiVar3;
        }
      }
      ppiVar2 = (int **)param_2[1];
    } while (*(char *)((int)ppiVar2 + 0x15) != '\0');
    do {
      ppiVar3 = ppiVar2;
      ppiVar2 = ppiVar3;
      if (param_2 != (int **)ppiVar3[2]) break;
      ppiVar2 = (int **)ppiVar3[1];
      param_2 = ppiVar3;
    } while (*(char *)((int)ppiVar2 + 0x15) == '\0');
  } while( true );
}



undefined4 __thiscall FUN_00818ec0(undefined4 param_1_00,byte param_1)

{
  FUN_00b57200();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00818ede(void)

{
  undefined4 *in_EAX;
  
  *in_EAX = W5FC6A77E::WFC0E798A::vftable;
  return;
}



void __fastcall FUN_00818ee5(undefined4 *param_1)

{
  *param_1 = W5FC6A77E::WD9FBBC44::vftable;
  return;
}



undefined4 * __thiscall FUN_00818eec(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = W5FC6A77E::WD9FBBC44::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_00818f09(undefined4 *param_1_00,byte param_1)

{
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    *(undefined *)(param_1_00 + 0x10) = 0;
  }
  FUN_00507e58();
  param_1_00[1] = W5FC6A77E::WD9FBBC44::vftable;
  *param_1_00 = W5FC6A77E::WFC0E798A::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00818f57(uint *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  uint uVar2;
  uint *extraout_ECX;
  undefined local_40 [44];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00c2247f;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a(DAT_0323f878 ^ (uint)local_40);
    local_c = 0;
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  (**(code **)((uVar2 & 0xfffffffe) + 4))(param_1_00 + 2,param_1,param_2);
  ExceptionList = local_14;
  return;
}



void FUN_00818fbf(void)

{
  FUN_00818f09();
  return;
}



void FUN_00818fc7(int *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  int *unaff_EBX;
  int *unaff_EDI;
  undefined4 uVar4;
  int local_18;
  undefined4 *local_14;
  undefined4 *local_10;
  undefined4 local_c;
  
  local_10 = (undefined4 *)unaff_EBX[6];
  local_c = CONCAT31(local_c._1_3_,1);
  if (*(char *)((int)(undefined4 *)local_10[1] + 0x11) == '\0') {
    puVar2 = (undefined4 *)local_10[1];
    do {
      local_10 = puVar2;
      local_c = CONCAT31(local_c._1_3_,*param_1 < (int)local_10[3]);
      if (*param_1 < (int)local_10[3]) {
        puVar2 = (undefined4 *)*local_10;
      }
      else {
        puVar2 = (undefined4 *)local_10[2];
      }
    } while (*(char *)((int)puVar2 + 0x11) == '\0');
  }
  local_18 = *unaff_EBX;
  local_14 = local_10;
  if ((char)local_c != '\0') {
    puVar2 = *(undefined4 **)unaff_EBX[6];
    if (local_18 == 0) {
      FUN_00a3fb10();
    }
    if (local_10 == puVar2) {
      uVar4 = 1;
      goto LAB_00819032;
    }
    FUN_0076b32a();
  }
  uVar4 = local_c;
  if (*param_1 <= (int)local_14[3]) {
    *unaff_EDI = local_18;
    unaff_EDI[1] = (int)local_14;
    *(undefined *)(unaff_EDI + 2) = 0;
    return;
  }
LAB_00819032:
  piVar3 = (int *)FUN_0081909f(&local_18,uVar4,param_1);
  iVar1 = piVar3[1];
  *unaff_EDI = *piVar3;
  unaff_EDI[1] = iVar1;
  *(undefined *)(unaff_EDI + 2) = 1;
  return;
}



void FUN_0081907e(void)

{
  int *piVar1;
  int iVar2;
  int unaff_ESI;
  
  iVar2 = FUN_007c20a5();
  piVar1 = (int *)(unaff_ESI + 0x18);
  *piVar1 = iVar2;
  *(undefined *)(iVar2 + 0x11) = 1;
  *(int *)(*piVar1 + 4) = *piVar1;
  *(int *)*piVar1 = *piVar1;
  *(int *)(*piVar1 + 8) = *piVar1;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall FUN_0081909f(int **param_1_00,undefined4 *param_1,char param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  undefined **local_58 [10];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x48;
  local_8 = 0x8190ab;
  if (0x3ffffffd < (uint)unaff_ESI[7]) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,"map/set<T> too long");
    local_8 = 0;
    FUN_00417ca0(local_30);
    local_58[0] = std::length_error::vftable;
    __CxxThrowException_8(local_58,&DAT_03115554);
  }
  piVar4 = (int *)FUN_008191ee(unaff_ESI[6],param_1_00,unaff_ESI[6],param_3,0);
  unaff_ESI[7] = unaff_ESI[7] + 1;
  piVar8 = piVar4;
  if (param_1_00 == (int **)unaff_ESI[6]) {
    ((int **)unaff_ESI[6])[1] = piVar4;
    *(int **)unaff_ESI[6] = piVar4;
    iVar5 = unaff_ESI[6];
  }
  else {
    if (param_2 != '\0') {
      *param_1_00 = piVar4;
      if (param_1_00 == *(int ***)(int **)unaff_ESI[6]) {
        *(int **)unaff_ESI[6] = piVar4;
      }
      goto LAB_008191c6;
    }
    param_1_00[2] = piVar4;
    iVar5 = unaff_ESI[6];
    if (param_1_00 != *(int ***)(iVar5 + 8)) goto LAB_008191c6;
  }
  *(int **)(iVar5 + 8) = piVar4;
LAB_008191c6:
  do {
    while( true ) {
      ppiVar6 = (int **)(piVar8 + 1);
      if (*(char *)(*ppiVar6 + 4) != '\0') {
        *(undefined *)(*(int *)(unaff_ESI[6] + 4) + 0x10) = 1;
        uVar3 = *unaff_ESI;
        param_1[1] = piVar4;
        *param_1 = uVar3;
        return;
      }
      piVar1 = *ppiVar6;
      ppiVar2 = (int **)piVar1[1];
      if (piVar1 != *ppiVar2) break;
      piVar7 = ppiVar2[2];
      if (*(char *)(piVar7 + 4) == '\0') {
LAB_00819182:
        *(undefined *)(piVar1 + 4) = 1;
        *(undefined *)(piVar7 + 4) = 1;
        *(undefined *)((*ppiVar6)[1] + 0x10) = 0;
        piVar8 = (int *)(*ppiVar6)[1];
      }
      else {
        if (piVar8 == (int *)piVar1[2]) {
          FUN_007e2489(unaff_ESI);
          piVar8 = piVar1;
        }
        *(undefined *)(piVar8[1] + 0x10) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x10) = 0;
        FUN_0049cbd2(unaff_ESI);
      }
    }
    piVar7 = *ppiVar2;
    if (*(char *)(piVar7 + 4) == '\0') goto LAB_00819182;
    if (piVar8 == (int *)*piVar1) {
      FUN_0049cbd2(unaff_ESI);
      piVar8 = piVar1;
    }
    *(undefined *)(piVar8[1] + 0x10) = 1;
    *(undefined *)(*(int *)(piVar8[1] + 4) + 0x10) = 0;
    FUN_007e2489(unaff_ESI);
  } while( true );
}



void FUN_008191ee(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,
                 undefined param_5)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x14);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_4;
    *(undefined *)(puVar1 + 4) = param_5;
    *(undefined *)((int)puVar1 + 0x11) = 0;
  }
  return;
}



int FUN_00819224(short *param_1)

{
  short *psVar1;
  short sVar2;
  
  if (param_1 != (short *)0x0) {
    psVar1 = param_1 + 1;
    do {
      sVar2 = *param_1;
      param_1 = param_1 + 1;
    } while (sVar2 != 0);
    return (int)param_1 - (int)psVar1 >> 1;
  }
  return 0;
}



undefined4 __thiscall FUN_00819241(undefined4 param_1_00,byte param_1)

{
  FUN_008603c0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall thunk_FUN_008603c0(undefined4 *param_1)

{
  *param_1 = wxMBConv::vftable;
  return;
}



int FUN_00819283(undefined4 param_1)

{
  int iVar1;
  
  if ((byte)param_1 < 0x80) {
    return (int)(char)(byte)param_1;
  }
  iVar1 = FUN_00884ad0(param_1);
  return iVar1;
}



undefined FUN_00819297(undefined param_1)

{
  char cVar1;
  undefined uVar2;
  
  cVar1 = FUN_00453f07();
  if (cVar1 == '\0') {
    uVar2 = FUN_00842f30();
    return uVar2;
  }
  uVar2 = DAT_03235e94;
  DAT_03235e94 = param_1;
  return uVar2;
}



undefined * __fastcall FUN_008192b5(undefined *param_1)

{
  undefined uVar1;
  
  uVar1 = FUN_00819297(0);
  *param_1 = uVar1;
  return param_1;
}



void __fastcall FUN_008192c6(undefined *param_1)

{
  FUN_00819297(*param_1);
  return;
}



undefined4 * __fastcall FUN_008192d1(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  FUN_00886fb0(0);
  return param_1;
}



void __thiscall FUN_008192ee(int *param_1_00,int **param_1)

{
  int *local_c;
  int *local_8;
  
  local_c = param_1_00;
  local_8 = param_1_00;
  (**(code **)(*param_1_00 + 0x270))(&local_8,&local_c);
  *param_1 = local_8;
  param_1[1] = local_c;
  return;
}



uint __fastcall thunk_FUN_008871c0(uint *param_1)

{
  uint uVar1;
  uint *puVar2;
  int iVar3;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbbe1;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  uVar1 = *param_1;
  if (uVar1 != 0xffffffff) {
    uVar1 = __close(uVar1);
    uVar1 = uVar1 & (int)uVar1 >> 0x1f;
    if (uVar1 == 0xffffffff) {
      puVar2 = (uint *)__errno();
      param_1[1] = *puVar2;
      FUN_0043c211(&DAT_00d25fa0);
      uVar1 = FUN_00846b30(1);
      if ((char)uVar1 != '\0') {
        FUN_004325b6();
        uStack_4 = 0;
        FUN_0043c211();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        uStack_4._0_1_ = 2;
        FUN_0043c211();
        uStack_4._0_1_ = 3;
        FUN_008423d0();
        uStack_4._0_1_ = 4;
        GetLastError();
        FUN_0084d140();
        FUN_00848820();
        uStack_4._0_1_ = 3;
        FUN_00842440();
        FUN_0040159c();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        uVar1 = FUN_0040159c();
      }
      *param_1 = 0xffffffff;
      ExceptionList = pvStack_c;
      return uVar1 & 0xffffff00;
    }
    *param_1 = 0xffffffff;
  }
  ExceptionList = pvStack_c;
  return CONCAT31((int3)(uVar1 >> 8),1);
}



undefined4 __thiscall FUN_0081931a(int *param_1_00,int *param_1)

{
  undefined4 uVar1;
  int *piVar2;
  
  if (((*param_1_00 == *param_1) && (*(short *)(param_1_00 + 1) == *(short *)(param_1 + 1))) &&
     (*(short *)((int)param_1_00 + 6) == *(short *)((int)param_1 + 6))) {
    piVar2 = param_1_00 + 2;
    do {
      if (*(char *)piVar2 != *(char *)(((int)param_1 - (int)param_1_00) + (int)piVar2)) {
        return 0;
      }
      piVar2 = (int *)((int)piVar2 + 1);
    } while ((char *)((-8 - (int)param_1_00) + (int)piVar2) < (char *)0x8);
    uVar1 = 1;
  }
  else {
    uVar1 = 0;
  }
  return uVar1;
}



void __fastcall FUN_00819362(undefined4 param_1)

{
  FUN_0081f686(param_1);
  return;
}



void __fastcall FUN_0081936a(undefined4 param_1)

{
  FUN_0081f6e7(param_1);
  return;
}



undefined4 __thiscall FUN_00819372(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    uVar1 = 0x80004003;
  }
  else {
    uVar1 = (**(code **)**(undefined4 **)(param_1_00 + 4))
                      (*(undefined4 **)(param_1_00 + 4),param_1,param_2);
  }
  return uVar1;
}



void __fastcall FUN_00819392(undefined4 *param_1)

{
  *param_1 = nsSupportsWeakReference::vftable;
  if (param_1[1] != 0) {
    *(undefined4 *)(param_1[1] + 4) = 0;
  }
  return;
}



void __fastcall FUN_008193a4(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0;
  return;
}



undefined4 FUN_008193a9(int *param_1,undefined4 *param_2)

{
  code **ppcVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 local_8;
  
  puVar2 = param_1;
  local_8 = 0;
  if (param_1 != (undefined4 *)0x0) {
    ppcVar1 = (code **)*param_1;
    param_1 = (int *)0x0;
    (**ppcVar1)(puVar2,&DAT_0322d0a4,&param_1);
    if (param_1 != (int *)0x0) {
      uVar3 = (**(code **)(*param_1 + 0xc))(param_1,&local_8);
      (**(code **)(*param_1 + 8))(param_1);
      if (param_2 != (undefined4 *)0x0) {
        *param_2 = uVar3;
      }
      return local_8;
    }
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = 0x80004003;
  }
  return 0;
}



undefined ** FUN_00819407(void)

{
  return &PTR_u_wxWebEvent_0322d004;
}



undefined4 FUN_0081940d(int param_1)

{
  *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 1;
  return *(undefined4 *)(param_1 + 0x2c);
}



int FUN_0081941a(int *param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = param_1 + 0xb;
  *piVar1 = *piVar1 + -1;
  iVar2 = param_1[0xb];
  if (*piVar1 == 0) {
    (**(code **)(*param_1 + 0x34))(1);
    iVar2 = 0;
  }
  return iVar2;
}



undefined4 FUN_00819432(void)

{
  return 0x80004001;
}



undefined4 FUN_0081943a(int param_1,undefined4 *param_2)

{
  *param_2 = *(undefined4 *)(param_1 + 0x60);
  return 0;
}



undefined4 FUN_0081944c(int param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1 + 0x60) = param_2;
  return 0;
}



int FUN_0081945c(int param_1)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  
  iVar2 = *(int *)(param_1 + 0x38);
  if (iVar2 != 0) {
    for (piVar3 = *(int **)(iVar2 + 0x44); piVar3 != (int *)0x0; piVar3 = (int *)piVar3[0x11]) {
      cVar1 = FUN_0083e950(&PTR_u_wxDialog_0323a540);
      if (cVar1 != '\0') {
        if (piVar3 != (int *)0x0) {
          *(int **)(param_1 + 100) = piVar3;
          (**(code **)(*piVar3 + 0x394))();
          *(undefined4 *)(param_1 + 100) = 0;
          return *(int *)(param_1 + 0x68);
        }
        break;
      }
    }
    iVar2 = 0;
  }
  return iVar2;
}



undefined4 FUN_008194a8(int param_1,uint *param_2)

{
  *param_2 = (uint)(*(int *)(param_1 + 100) != 0);
  return 0;
}



undefined4 FUN_008194bf(int param_1,undefined4 param_2)

{
  if (*(int *)(param_1 + 100) != 0) {
    *(undefined4 *)(param_1 + 0x68) = param_2;
  }
  return 0;
}



undefined4 FUN_008194d5(int param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  
  uVar1 = FUN_0081ff41(param_1 + 0x2c);
  *param_2 = uVar1;
  return 0;
}



undefined4 FUN_008194ee(undefined4 param_1,undefined4 *param_2)

{
  *param_2 = 1;
  return 0;
}



undefined4 FUN_008194fd(void)

{
  return 0;
}



undefined4
FUN_00819502(int param_1,undefined4 param_2,undefined4 *param_3,undefined4 *param_4,
            undefined4 *param_5,undefined4 *param_6)

{
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  if (*(int *)(param_1 + 0x28) == 0) {
    *param_3 = 0;
    *param_4 = 0;
    *param_5 = 100;
    *param_6 = 100;
  }
  else {
    FUN_008192ee(&local_c);
    FUN_004555c3(&local_14);
    if (param_3 != (undefined4 *)0x0) {
      *param_3 = local_c;
    }
    if (param_4 != (undefined4 *)0x0) {
      *param_4 = local_8;
    }
    if (param_5 != (undefined4 *)0x0) {
      *param_5 = local_14;
    }
    if (param_6 != (undefined4 *)0x0) {
      *param_6 = local_10;
    }
  }
  return 0;
}



undefined4 FUN_00819578(int param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  
  uVar1 = (**(code **)(**(int **)(param_1 + 0x28) + 0x218))();
  *param_2 = uVar1;
  return 0;
}



undefined4 FUN_00819592(void)

{
  return 0;
}



int FUN_00819597(int *param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = param_1 + 3;
  *piVar1 = *piVar1 + -1;
  iVar2 = param_1[3];
  if (*piVar1 == 0) {
    (**(code **)(*param_1 + 0x2c))(1);
    iVar2 = 0;
  }
  return iVar2;
}



int FUN_008195af(int *param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = param_1 + 1;
  *piVar1 = *piVar1 + -1;
  iVar2 = param_1[1];
  if (*piVar1 == 0) {
    (**(code **)(*param_1 + 0x10))(1);
    iVar2 = 0;
  }
  return iVar2;
}



int FUN_008195c7(int *param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = param_1 + 1;
  *piVar1 = *piVar1 + -1;
  iVar2 = param_1[1];
  if (*piVar1 == 0) {
    (**(code **)(*param_1 + 0x14))(1);
    iVar2 = 0;
  }
  return iVar2;
}



undefined __fastcall FUN_008195df(int param_1)

{
  return *(undefined *)(param_1 + 0x6c);
}



int __fastcall FUN_008195e3(int param_1)

{
  return param_1 + 0x70;
}



void FUN_008195e7(undefined4 param_1,undefined4 param_2)

{
  FUN_00854700(param_1,1);
  FUN_00854700(param_2,1);
  return;
}



undefined4 __thiscall FUN_00819607(undefined4 param_1_00,undefined4 param_1)

{
  FUN_0043da19(param_1_00);
  return param_1;
}



undefined FUN_00819618(void)

{
  return DAT_032bc420;
}



undefined FUN_0081961e(void)

{
  return DAT_032bc535;
}



void __thiscall FUN_00819624(int param_1_00,int *param_1)

{
  int *piVar1;
  
  piVar1 = *(int **)(param_1_00 + 8);
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  *(int **)(param_1_00 + 8) = param_1;
  if (param_1 != (int *)0x0) {
    (**(code **)(*param_1 + 4))(param_1);
  }
  return;
}



undefined ** FUN_00819649(void)

{
  return &PTR_PTR_00d1e140;
}



undefined * FUN_0081964f(void)

{
  return &DAT_032bc430;
}



undefined __fastcall FUN_00819655(int param_1)

{
  return *(undefined *)(param_1 + 0x19c);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0081965c(int param_1)

{
  undefined **local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_14 = 0;
  local_18 = wxImage::vftable;
  local_8 = 0;
  FUN_0043d987(&local_18);
  local_8 = 0xffffffff;
  local_18 = wxObject::vftable;
  FUN_0083e850();
  *(undefined *)(param_1 + 0x1c8) = 0;
  *(undefined *)(param_1 + 0x1c9) = 0;
  return;
}



undefined4 * __thiscall FUN_008196af(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_004586cc(param_1);
  *param_1_00 = wxImage::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_008196c7(undefined4 *param_1_00,int **param_1)

{
  int *piVar1;
  
  *param_1_00 = ns_smartptr<class_nsISupports>::vftable;
  piVar1 = *param_1;
  param_1_00[1] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(piVar1);
  }
  return param_1_00;
}



void __fastcall FUN_008196e9(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsISupports>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_008196fd(undefined4 *param_1_00,int **param_1)

{
  int *piVar1;
  
  *param_1_00 = ns_smartptr<class_nsIDOMNode>::vftable;
  piVar1 = *param_1;
  param_1_00[1] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(piVar1);
  }
  return param_1_00;
}



void __fastcall FUN_0081971f(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMNode>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



int __thiscall FUN_00819733(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d154,ppiVar1);
  return param_1_00;
}



int __thiscall FUN_0081975e(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d174,ppiVar1);
  return param_1_00;
}



int __thiscall FUN_00819789(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d254,ppiVar1);
  return param_1_00;
}



undefined4 * __thiscall FUN_008197b4(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIDOMElement>::vftable;
  (**(code **)*param_1)(&DAT_0322d184,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_008197d4(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMElement>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



int __thiscall FUN_008197e8(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d184,ppiVar1);
  return param_1_00;
}



void __fastcall FUN_00819813(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMDocument>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



int __thiscall FUN_00819827(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d194,ppiVar1);
  return param_1_00;
}



int __thiscall FUN_00819852(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d1b4,ppiVar1);
  return param_1_00;
}



void __fastcall FUN_0081987d(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMHTMLAnchorElement>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



int __thiscall FUN_00819891(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d1c4,ppiVar1);
  return param_1_00;
}



int __thiscall FUN_008198bc(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d1d4,ppiVar1);
  return param_1_00;
}



int __thiscall FUN_008198e7(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d1e4,ppiVar1);
  return param_1_00;
}



int __thiscall FUN_00819912(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d1f4,ppiVar1);
  return param_1_00;
}



int __thiscall FUN_0081993d(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d204,ppiVar1);
  return param_1_00;
}



int __thiscall FUN_00819968(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d214,ppiVar1);
  return param_1_00;
}



int __thiscall FUN_00819993(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d224,ppiVar1);
  return param_1_00;
}



int __thiscall FUN_008199be(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d234,ppiVar1);
  return param_1_00;
}



void __fastcall FUN_008199e9(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIWebBrowser>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



int __thiscall FUN_008199fd(int param_1_00,int param_1)

{
  int *piVar1;
  
  piVar1 = *(int **)(param_1_00 + 4);
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  piVar1 = *(int **)(param_1 + 4);
  *(int **)(param_1_00 + 4) = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(piVar1);
  }
  return param_1_00;
}



int __thiscall FUN_00819a27(int param_1_00,int *param_1)

{
  int *piVar1;
  
  piVar1 = *(int **)(param_1_00 + 4);
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  *(int **)(param_1_00 + 4) = param_1;
  if (param_1 != (int *)0x0) {
    (**(code **)(*param_1 + 4))(param_1);
  }
  return param_1_00;
}



int __thiscall FUN_00819a4e(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d314,ppiVar1);
  return param_1_00;
}



void __fastcall FUN_00819a79(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIWebBrowserFind>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



int __thiscall FUN_00819a8d(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d344,ppiVar1);
  return param_1_00;
}



void __fastcall FUN_00819ab8(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIBaseWindow>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



int __thiscall FUN_00819acc(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d0d4,ppiVar1);
  return param_1_00;
}



void __fastcall FUN_00819af7(int param_1)

{
  int *piVar1;
  
  piVar1 = *(int **)(param_1 + 4);
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  *(undefined4 *)(param_1 + 4) = 0;
  return;
}



void __fastcall FUN_00819b0d(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIWebNavigation>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



int __thiscall FUN_00819b21(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d374,ppiVar1);
  return param_1_00;
}



void __fastcall FUN_00819b4c(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMEventTarget>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00819b60(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIClipboardCommands>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



int __thiscall FUN_00819b74(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d0e4,ppiVar1);
  return param_1_00;
}



void __fastcall FUN_00819b9f(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIAppShell>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



int __thiscall FUN_00819bb3(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d0c4,ppiVar1);
  return param_1_00;
}



void __fastcall FUN_00819bde(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMEvent>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00819bf2(undefined4 *param_1_00,int **param_1)

{
  int *piVar1;
  
  *param_1_00 = ns_smartptr<class_nsIURI>::vftable;
  piVar1 = *param_1;
  param_1_00[1] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(piVar1);
  }
  return param_1_00;
}



void __fastcall FUN_00819c14(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIURI>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00819c28(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIDOM3Document>::vftable;
  (**(code **)*param_1)(&DAT_0322d164,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00819c48(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOM3Document>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00819c5c(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIDOMMouseEvent>::vftable;
  (**(code **)*param_1)(&DAT_0322d244,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00819c7c(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMMouseEvent>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00819c90(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIChromeInternal>::vftable;
  (**(code **)*param_1)(&DAT_0322d468,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00819cb0(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIChromeInternal>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00819cc4(undefined4 *param_1_00,int **param_1)

{
  int *piVar1;
  
  *param_1_00 = ns_smartptr<class_nsIWebBrowserChrome>::vftable;
  piVar1 = *param_1;
  param_1_00[1] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(piVar1);
  }
  return param_1_00;
}



void __fastcall FUN_00819ce6(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIWebBrowserChrome>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00819cfa(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIURIContentListener>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



int __thiscall FUN_00819d0e(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d304,ppiVar1);
  return param_1_00;
}



undefined4 __thiscall FUN_00819d39(int param_1_00,undefined4 param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    *param_2 = 0;
    uVar1 = 0x80004002;
  }
  else {
    uVar1 = (**(code **)**(undefined4 **)(param_1_00 + 4))
                      (*(undefined4 **)(param_1_00 + 4),param_1,param_2);
  }
  return uVar1;
}



void __fastcall FUN_00819d60(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsILocalFile>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00819d74(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIFile>::vftable;
  (**(code **)*param_1)(&DAT_0322d0b4,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00819d94(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIFile>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00819da8(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIWindowWatcher>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00819dbc(undefined4 *param_1_00,int **param_1)

{
  int *piVar1;
  
  *param_1_00 = ns_smartptr<class_nsIWindowCreator>::vftable;
  piVar1 = *param_1;
  param_1_00[1] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(piVar1);
  }
  return param_1_00;
}



void __fastcall FUN_00819dde(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIWindowCreator>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00819df2(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIComponentRegistrar>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00819e06(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIFactory>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00819e1a(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIDirectoryService>::vftable;
  (**(code **)*param_1)(&DAT_0322d124,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00819e3a(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDirectoryService>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00819e4e(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIProperties>::vftable;
  (**(code **)*param_1)(&DAT_0322d2c4,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00819e6e(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIProperties>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00819e82(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsISimpleEnumerator>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00819e96(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIPref>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00819eaa(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIDocShellTreeItem>::vftable;
  (**(code **)*param_1)(&DAT_0322d134,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00819eca(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDocShellTreeItem>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00819ede(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_ns18IDocShellTreeItem>::vftable;
  (**(code **)*param_1)(&DAT_0322d144,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00819efe(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_ns18IDocShellTreeItem>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00819f12(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMWindow>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00819f26(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIDOMWindow2>::vftable;
  (**(code **)*param_1)(&DAT_0322d284,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00819f46(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMWindow2>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00819f5a(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_ns18IDOMWindow2>::vftable;
  (**(code **)*param_1)(&DAT_0322d274,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00819f7a(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_ns18IDOMWindow2>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00819f8e(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIServiceManager>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00819fa2(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIWebBrowserPersist>::vftable;
  (**(code **)*param_1)(&DAT_0322d364,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00819fc2(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIWebBrowserPersist>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00819fd6(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIInputStream>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



int __thiscall FUN_00819fea(int param_1_00,undefined4 *param_1)

{
  int **ppiVar1;
  int *piVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  piVar2 = *ppiVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 8))(piVar2);
    *ppiVar1 = (int *)0x0;
  }
  (**(code **)*param_1)(&DAT_0322d2b4,ppiVar1);
  return param_1_00;
}



undefined4 * __thiscall FUN_0081a015(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIStringInputStream>::vftable;
  (**(code **)*param_1)(&DAT_0322d2d4,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_0081a035(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIStringInputStream>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_0081a049(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIWebBrowserFocus>::vftable;
  (**(code **)*param_1)(&DAT_0322d354,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_0081a069(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIWebBrowserFocus>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall
FUN_0081a07d(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 9) != uVar1)) {
    FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<unsigned int>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



undefined4 * FUN_0081a0dc(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxMBConvStrictUTF8::vftable;
    return puVar1;
  }
  return (undefined4 *)0x0;
}



void FUN_0081a0f2(uint param_1)

{
  if (0x7f < param_1) {
    FUN_00884ba0(param_1);
  }
  return;
}



uint __fastcall FUN_0081a105(uint *param_1)

{
  uint uVar1;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar1 = param_1[1];
    if ((((int)uVar1 < -1) || ((0x7fffffff < uVar1 && (*param_1 < 0x80000000)))) ||
       ((-1 < (int)uVar1 && ((0 < (int)uVar1 || (0x7fffffff < *param_1)))))) {
      FUN_00840480("D:\\wxWidgets-2.9.3\\include\\wx/longlong.h",0xb4,"wxLongLongNative::ToLong",
                   "(m_ll >= LONG_MIN) && (m_ll <= LONG_MAX)",
                   L"wxLongLong to long conversion loss of precision");
    }
  }
  return *param_1;
}



void FUN_0081a158(void)

{
  undefined4 *puVar1;
  undefined local_14 [8];
  undefined8 local_c;
  
  puVar1 = (undefined4 *)FUN_00886d30(local_14);
  local_c = __alldiv(*puVar1,puVar1[1],1000,0);
  FUN_0081a105();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0081a188(undefined4 *param_1_00,int *param_1)

{
  *param_1_00 = nsRequestInterface::vftable;
  param_1_00[2] = 0;
  param_1_00[1] = ns_smartptr<class_nsISupports>::vftable;
  param_1_00[2] = param_1;
  (**(code **)(*param_1 + 4))(param_1);
  return param_1_00;
}



undefined4 * __thiscall FUN_0081a1c4(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIInterfaceRequestor>::vftable;
  (**(code **)*param_1)(&DAT_0322d094,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_0081a1e4(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIInterfaceRequestor>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0081a1f8(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = nsRequestInterface::vftable;
  param_1_00[2] = 0;
  param_1_00[1] = ns_smartptr<class_nsISupports>::vftable;
  (**(code **)*param_1)(&DAT_0322de18,param_1_00 + 2);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 __thiscall FUN_0081a238(int param_1_00,undefined4 param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  int *local_14;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    uVar1 = 0x80004003;
  }
  else {
    FUN_0081a1c4(param_1_00 + 4);
    if (local_14 == (int *)0x0) {
      *param_2 = 0;
      uVar1 = 0x80004002;
    }
    else {
      uVar1 = (**(code **)(*local_14 + 0xc))(local_14,param_1,param_2);
      if (local_14 != (int *)0x0) {
        (**(code **)(*local_14 + 8))(local_14);
      }
    }
  }
  return uVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0081a2a5(void)

{
  undefined **local_18;
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x81a2b1;
  FUN_008196c7(&stack0x00000004);
  local_8 = 0;
  FUN_00819733(&local_18);
  FUN_0081975e(&local_18);
  FUN_00819789(&local_18);
  FUN_008197e8(&local_18);
  FUN_00819827(&local_18);
  FUN_00819852(&local_18);
  FUN_00819891(&local_18);
  FUN_008198bc(&local_18);
  FUN_008198e7(&local_18);
  FUN_00819912(&local_18);
  FUN_0081993d(&local_18);
  FUN_00819968(&local_18);
  FUN_00819993(&local_18);
  FUN_008199be(&local_18);
  local_8 = 0xffffffff;
  local_18 = ns_smartptr<class_nsISupports>::vftable;
  if (local_14 != (int *)0x0) {
    (**(code **)(*local_14 + 8))(local_14);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0081a38a(int *param_1)

{
  int *piVar1;
  undefined **local_20;
  int *local_1c;
  undefined **local_18;
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x81a396;
  if (param_1 == (int *)0x0) {
    return (int *)0x0;
  }
  FUN_008196fd(&param_1);
  local_18 = ns_smartptr<class_nsIDOMHTMLAnchorElement>::vftable;
  local_14 = (int *)0x0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  FUN_00819891(&local_20);
  piVar1 = param_1;
  if (local_14 == (int *)0x0) {
    (**(code **)(*param_1 + 0x1c))(param_1,&param_1);
    piVar1 = (int *)FUN_0081a38a(param_1);
    local_18 = ns_smartptr<class_nsIDOMHTMLAnchorElement>::vftable;
    if (local_14 == (int *)0x0) goto LAB_0081a40b;
  }
  local_8 = (uint)local_8._1_3_ << 8;
  local_18 = ns_smartptr<class_nsIDOMHTMLAnchorElement>::vftable;
  (**(code **)(*local_14 + 8))(local_14);
LAB_0081a40b:
  local_8 = 0xffffffff;
  local_20 = ns_smartptr<class_nsIDOMNode>::vftable;
  if (local_1c != (int *)0x0) {
    (**(code **)(*local_1c + 8))(local_1c);
  }
  return piVar1;
}



undefined4 FUN_0081a42b(int *param_1,undefined4 param_2,int **param_3)

{
  int iVar1;
  
  *param_3 = (int *)0x0;
  iVar1 = FUN_0081931a(&DAT_0322d074);
  if ((iVar1 == 0) && (iVar1 = FUN_0081931a(&DAT_0322d324), iVar1 == 0)) {
    iVar1 = FUN_0081931a(&DAT_0322d468);
    if (iVar1 == 0) {
      iVar1 = FUN_0081931a(&DAT_0322d334);
      if (iVar1 == 0) {
        iVar1 = FUN_0081931a(&DAT_0322d2f4);
        if (iVar1 == 0) {
          iVar1 = FUN_0081931a(&DAT_0322d294);
          if ((iVar1 == 0) && (iVar1 = FUN_0081931a(&DAT_0322d2a4), iVar1 == 0)) {
            iVar1 = FUN_0081931a(&DAT_0322d094);
            if (iVar1 == 0) {
              iVar1 = FUN_0081931a(&DAT_0322d0a4);
              if (iVar1 == 0) {
                iVar1 = FUN_0081931a(&DAT_0322d0f4);
                if (iVar1 == 0) {
                  iVar1 = FUN_0081931a(&DAT_0322d2e4);
                  if (iVar1 == 0) {
                    iVar1 = FUN_0081931a(&DAT_0322d1a4);
                    if (iVar1 == 0) {
                      return 0x80004002;
                    }
                    (**(code **)(*param_1 + 4))(param_1);
                    param_1 = param_1 + 10;
                  }
                  else {
                    (**(code **)(*param_1 + 4))(param_1);
                    param_1 = param_1 + 9;
                  }
                }
                else {
                  (**(code **)(*param_1 + 4))(param_1);
                  param_1 = param_1 + 8;
                }
              }
              else {
                (**(code **)(*param_1 + 4))(param_1);
                param_1 = param_1 + 6;
              }
            }
            else {
              (**(code **)(*param_1 + 4))(param_1);
              param_1 = param_1 + 5;
            }
          }
          else {
            (**(code **)(*param_1 + 4))(param_1);
            param_1 = param_1 + 4;
          }
        }
        else {
          (**(code **)(*param_1 + 4))(param_1);
          param_1 = param_1 + 3;
        }
      }
      else {
        (**(code **)(*param_1 + 4))(param_1);
        param_1 = param_1 + 2;
      }
    }
    else {
      (**(code **)(*param_1 + 4))(param_1);
      param_1 = param_1 + 1;
    }
  }
  else {
    (**(code **)(*param_1 + 4))(param_1);
  }
  *param_3 = param_1;
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0081a5a6(int param_1)

{
  int *piVar1;
  undefined local_38 [16];
  undefined local_28 [16];
  int *local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x81a5b2;
  if (param_1 == 0) {
    local_14 = 0;
  }
  else {
    local_14 = param_1 + 0x28;
  }
  local_18 = *(int **)(*(int *)(*(int *)(param_1 + 0x38) + 0x194) + 0x24);
  FUN_0081f675(local_28,L"mousedown",0xffffffff,2);
  local_8 = 0;
  (**(code **)(*local_18 + 0xc))(local_18,local_28,local_14,1);
  local_8 = 0xffffffff;
  FUN_0081f686(local_28);
  local_14 = param_1 + 0x28;
  local_18 = *(int **)(*(int *)(*(int *)(param_1 + 0x38) + 0x194) + 0x24);
  FUN_0081f675(local_28,L"mouseup",0xffffffff,2);
  local_8 = 1;
  (**(code **)(*local_18 + 0xc))(local_18,local_28,local_14,1);
  local_8 = 0xffffffff;
  FUN_0081f686(local_28);
  local_18 = *(int **)(*(int *)(*(int *)(param_1 + 0x38) + 0x194) + 0x24);
  FUN_0081f675(local_28,L"dblclick",0xffffffff,2);
  local_8 = 2;
  (**(code **)(*local_18 + 0xc))(local_18,local_28,local_14,1);
  local_8 = 0xffffffff;
  FUN_0081f686(local_28);
  local_18 = *(int **)(*(int *)(*(int *)(param_1 + 0x38) + 0x194) + 0x24);
  FUN_0081f675(local_28,L"dragdrop",0xffffffff,2);
  local_8 = 3;
  (**(code **)(*local_18 + 0xc))(local_18,local_28,local_14,0);
  local_8 = 0xffffffff;
  FUN_0081f686(local_28);
  local_18 = *(int **)(*(int *)(*(int *)(param_1 + 0x38) + 0x194) + 0x24);
  FUN_0081f675(local_28,L"DOMLinkAdded",0xffffffff,2);
  local_8 = 4;
  (**(code **)(*local_18 + 0xc))(local_18,local_28,local_14,0);
  local_8 = 0xffffffff;
  FUN_0081f686(local_28);
  piVar1 = *(int **)(*(int *)(*(int *)(param_1 + 0x38) + 0x194) + 0x24);
  FUN_0081f675(local_38,L"DOMContentLoaded",0xffffffff,2);
  local_8 = 5;
  (**(code **)(*piVar1 + 0xc))(piVar1,local_38,local_14,0);
  local_8 = 0xffffffff;
  FUN_0081f686(local_38);
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0081a772(int param_1)

{
  undefined local_38 [16];
  undefined local_28 [16];
  int *local_18;
  int local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0x81a77e;
  if (param_1 == 0) {
    local_14 = 0;
  }
  else {
    local_14 = param_1 + 0x28;
  }
  local_18 = *(int **)(*(int *)(*(int *)(param_1 + 0x38) + 0x194) + 0x24);
  FUN_0081f675(local_28,L"mousedown",0xffffffff,2);
  local_8 = 0;
  (**(code **)(*local_18 + 0x10))(local_18,local_28,local_14,1);
  local_8 = 0xffffffff;
  FUN_0081f686(local_28);
  local_18 = *(int **)(*(int *)(*(int *)(param_1 + 0x38) + 0x194) + 0x24);
  FUN_0081f675(local_28,L"mouseup",0xffffffff,2);
  local_8 = 1;
  (**(code **)(*local_18 + 0x10))(local_18,local_28,param_1 + 0x28,1);
  local_8 = 0xffffffff;
  FUN_0081f686(local_28);
  local_18 = *(int **)(*(int *)(*(int *)(param_1 + 0x38) + 0x194) + 0x24);
  FUN_0081f675(local_28,L"dblclick",0xffffffff,2);
  local_8 = 2;
  (**(code **)(*local_18 + 0x10))(local_18,local_28,param_1 + 0x28,1);
  local_8 = 0xffffffff;
  FUN_0081f686(local_28);
  local_18 = *(int **)(*(int *)(*(int *)(param_1 + 0x38) + 0x194) + 0x24);
  FUN_0081f675(local_28,L"dragdrop",0xffffffff,2);
  local_8 = 3;
  (**(code **)(*local_18 + 0x10))(local_18,local_28,param_1 + 0x28,1);
  local_8 = 0xffffffff;
  FUN_0081f686(local_28);
  local_18 = *(int **)(*(int *)(*(int *)(param_1 + 0x38) + 0x194) + 0x24);
  FUN_0081f675(local_28,L"DOMLinkAdded",0xffffffff,2);
  local_8 = 4;
  (**(code **)(*local_18 + 0x10))(local_18,local_28,param_1 + 0x28,0);
  local_8 = 0xffffffff;
  FUN_0081f686(local_28);
  local_18 = *(int **)(*(int *)(*(int *)(param_1 + 0x38) + 0x194) + 0x24);
  FUN_0081f675(local_38,L"DOMContentLoaded",0xffffffff,2);
  local_8 = 5;
  (**(code **)(*local_18 + 0x10))(local_18,local_38,param_1 + 0x28,0);
  local_8 = 0xffffffff;
  FUN_0081f686(local_38);
  *(undefined4 *)(param_1 + 0x38) = 0;
  return;
}



undefined4 FUN_0081a947(int param_1,int **param_2)

{
  int *piVar1;
  
  piVar1 = *(int **)(param_1 + 0x34);
  *param_2 = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(piVar1);
  }
  return 0;
}



undefined4 FUN_0081a963(undefined4 param_1,undefined4 param_2)

{
  FUN_00819a27(param_2);
  return 0;
}



undefined4 FUN_0081a978(int param_1)

{
  int *piVar1;
  
  piVar1 = *(int **)(*(int *)(*(int *)(param_1 + 0x28) + 0x194) + 0x14);
  (**(code **)(*piVar1 + 0x60))(piVar1);
  return 0;
}



undefined4 FUN_0081a993(int param_1,undefined4 param_2,undefined4 param_3)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  
  iVar2 = FUN_0081931a(&DAT_0322d264);
  if (iVar2 == 0) {
    uVar3 = (***(code ***)(undefined4 *)(param_1 + -0x14))
                      ((undefined4 *)(param_1 + -0x14),param_2,param_3);
  }
  else {
    piVar1 = *(int **)(param_1 + 0x20);
    if (piVar1 == (int *)0x0) {
      uVar3 = 0xc1f30001;
    }
    else {
      uVar3 = (**(code **)(*piVar1 + 0x24))(piVar1,param_3);
    }
  }
  return uVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0081a9d5(int param_1)

{
  undefined4 uVar1;
  int *local_1c;
  int *local_14;
  
  if (param_1 != 0) {
    uVar1 = FUN_00819cc4(&param_1);
    FUN_00819c90(uVar1);
    if (local_1c != (int *)0x0) {
      (**(code **)(*local_1c + 8))(local_1c);
    }
    if (local_14 != (int *)0x0) {
      uVar1 = (**(code **)(*local_14 + 0xc))();
      if (local_14 == (int *)0x0) {
        return uVar1;
      }
      (**(code **)(*local_14 + 8))(local_14);
      return uVar1;
    }
  }
  return 0;
}



void FUN_0081aa4a(void)

{
  FUN_008196e9();
  return;
}



undefined4 FUN_0081aa52(int *param_1,undefined4 param_2,int **param_3)

{
  int iVar1;
  
  *param_3 = (int *)0x0;
  iVar1 = FUN_0081931a(&DAT_0322d074);
  if ((iVar1 == 0) && (iVar1 = FUN_0081931a(&DAT_0322d304), iVar1 == 0)) {
    iVar1 = FUN_0081931a(&DAT_0322d0a4);
    if (iVar1 == 0) {
      return 0x80004002;
    }
    (**(code **)(*param_1 + 4))(param_1);
    param_1 = param_1 + 1;
  }
  else {
    (**(code **)(*param_1 + 4))(param_1);
  }
  *param_3 = param_1;
  return 0;
}



undefined4 * __thiscall FUN_0081aab8(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = WindowCreator::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_0081aad5(int *param_1,undefined4 param_2,int **param_3)

{
  int iVar1;
  
  *param_3 = (int *)0x0;
  iVar1 = FUN_0081931a(&DAT_0322d384);
  if ((iVar1 == 0) && (iVar1 = FUN_0081931a(&DAT_0322d074), iVar1 == 0)) {
    return 0x80004002;
  }
  (**(code **)(*param_1 + 4))(param_1);
  *param_3 = param_1;
  return 0;
}



undefined4 FUN_0081ab1c(int *param_1,undefined4 param_2,int **param_3)

{
  int iVar1;
  
  *param_3 = (int *)0x0;
  iVar1 = FUN_0081931a(&DAT_0322d084);
  if ((iVar1 == 0) && (iVar1 = FUN_0081931a(&DAT_0322d074), iVar1 == 0)) {
    return 0x80004002;
  }
  (**(code **)(*param_1 + 4))(param_1);
  *param_3 = param_1;
  return 0;
}



undefined4 FUN_0081ab63(int *param_1,undefined4 param_2,int **param_3)

{
  int iVar1;
  
  *param_3 = (int *)0x0;
  iVar1 = FUN_0081931a(&DAT_0322d074);
  if (((iVar1 == 0) && (iVar1 = FUN_0081931a(&DAT_0322d104), iVar1 == 0)) &&
     (iVar1 = FUN_0081931a(&DAT_0322d114), iVar1 == 0)) {
    return 0x80004002;
  }
  (**(code **)(*param_1 + 4))(param_1);
  *param_3 = param_1;
  return 0;
}



void __fastcall FUN_0081abbb(undefined4 *param_1)

{
  *param_1 = ns_smartptr<class_nsIWebBrowser>::vftable;
  param_1[1] = 0;
  param_1[2] = ns_smartptr<class_nsIWebBrowserFind>::vftable;
  param_1[3] = 0;
  param_1[4] = ns_smartptr<class_nsIBaseWindow>::vftable;
  param_1[5] = 0;
  param_1[6] = ns_smartptr<class_nsIWebNavigation>::vftable;
  param_1[7] = 0;
  param_1[8] = ns_smartptr<class_nsIDOMEventTarget>::vftable;
  param_1[9] = 0;
  param_1[10] = ns_smartptr<class_nsIClipboardCommands>::vftable;
  param_1[0xb] = 0;
  param_1[0xc] = ns_smartptr<class_nsISupports>::vftable;
  param_1[0xd] = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0081ac05(void)

{
  FUN_008196e9();
  FUN_00819b60();
  FUN_00819b4c();
  FUN_00819b0d();
  FUN_00819ab8();
  FUN_00819a79();
  FUN_008199e9();
  return;
}



void FUN_0081ac72(void)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  
  cVar2 = FUN_00819655();
  if (cVar2 != '\0') {
    piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 0x1c);
    (**(code **)(*piVar1 + 0x18))(piVar1);
  }
  return;
}



void FUN_0081ac8b(void)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  
  cVar2 = FUN_00819655();
  if (cVar2 != '\0') {
    piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 0x1c);
    (**(code **)(*piVar1 + 0x14))(piVar1);
  }
  return;
}



void FUN_0081aca4(void)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  
  cVar2 = FUN_00819655();
  if (cVar2 != '\0') {
    piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 0x1c);
    (**(code **)(*piVar1 + 0x24))(piVar1,0);
  }
  return;
}



void FUN_0081acbf(void)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  
  cVar2 = FUN_00819655();
  if (cVar2 != '\0') {
    piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 0x1c);
    (**(code **)(*piVar1 + 0x28))(piVar1,3);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0081acda(undefined4 param_1)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  int *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x81ace6;
  cVar2 = FUN_00819655();
  if (cVar2 != '\0') {
    local_14[0] = (int *)0x0;
    piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 4);
    local_8 = 0;
    (**(code **)(*piVar1 + 0x24))(piVar1,local_14);
    (**(code **)(*local_14[0] + 0x28))(local_14[0],param_1);
    local_8 = 0xffffffff;
    if (local_14[0] != (int *)0x0) {
      (**(code **)(*local_14[0] + 8))(local_14[0]);
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0081ad3a(undefined4 param_1)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  int *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x81ad46;
  cVar2 = FUN_00819655();
  if (cVar2 != '\0') {
    local_14[0] = (int *)0x0;
    piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 4);
    local_8 = 0;
    (**(code **)(*piVar1 + 0x24))(piVar1,local_14);
    (**(code **)(*local_14[0] + 0x2c))(local_14[0],param_1);
    local_8 = 0xffffffff;
    if (local_14[0] != (int *)0x0) {
      (**(code **)(*local_14[0] + 8))(local_14[0]);
    }
  }
  return;
}



bool FUN_0081ad9e(void)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  int local_8;
  
  cVar2 = FUN_00819655();
  if (cVar2 == '\0') {
    return false;
  }
  piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 0x2c);
  (**(code **)(*piVar1 + 0xc))(piVar1,&local_8);
  return local_8 != 0;
}



bool FUN_0081adc9(void)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  int local_8;
  
  cVar2 = FUN_00819655();
  if (cVar2 == '\0') {
    return false;
  }
  piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 0x2c);
  (**(code **)(*piVar1 + 0x10))(piVar1,&local_8);
  return local_8 != 0;
}



bool FUN_0081adf4(void)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  int local_8;
  
  cVar2 = FUN_00819655();
  if (cVar2 == '\0') {
    return false;
  }
  piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 0x2c);
  (**(code **)(*piVar1 + 0x14))(piVar1,&local_8);
  return local_8 != 0;
}



bool FUN_0081ae1f(void)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  int local_8;
  
  cVar2 = FUN_00819655();
  if (cVar2 == '\0') {
    return false;
  }
  piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 0x2c);
  (**(code **)(*piVar1 + 0x20))(piVar1,&local_8);
  return local_8 != 0;
}



void FUN_0081ae4a(void)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  
  cVar2 = FUN_00819655();
  if (cVar2 != '\0') {
    piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 0x2c);
    (**(code **)(*piVar1 + 0x24))(piVar1);
  }
  return;
}



void FUN_0081ae63(void)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  
  cVar2 = FUN_00819655();
  if (cVar2 != '\0') {
    piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 0x2c);
    (**(code **)(*piVar1 + 0x28))(piVar1);
  }
  return;
}



void FUN_0081ae7c(void)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  
  cVar2 = FUN_00819655();
  if (cVar2 != '\0') {
    piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 0x2c);
    (**(code **)(*piVar1 + 0x2c))(piVar1);
  }
  return;
}



void FUN_0081ae95(void)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  
  cVar2 = FUN_00819655();
  if (cVar2 != '\0') {
    piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 0x2c);
    (**(code **)(*piVar1 + 0x38))(piVar1);
  }
  return;
}



void FUN_0081aeae(void)

{
  int *piVar1;
  char cVar2;
  int extraout_ECX;
  
  cVar2 = FUN_00819655();
  if (cVar2 != '\0') {
    piVar1 = *(int **)(*(int *)(extraout_ECX + 0x194) + 0x2c);
    (**(code **)(*piVar1 + 0x3c))(piVar1);
  }
  return;
}



void __fastcall FUN_0081af30(int param_1)

{
  int *piVar1;
  char cVar2;
  undefined local_14 [8];
  undefined4 local_c;
  undefined4 local_8;
  
  cVar2 = FUN_00819655();
  if (cVar2 != '\0') {
    FUN_007b0d3e(local_14);
    if (*(int *)(*(int *)(param_1 + 0x194) + 0x14) != 0) {
      piVar1 = *(int **)(*(int *)(param_1 + 0x194) + 0x14);
      (**(code **)(*piVar1 + 0x28))(piVar1,0,0,local_c,local_8,1);
    }
  }
  return;
}



undefined * __thiscall
FUN_0081af70(undefined *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  int iVar2;
  
  if (param_2 != 0) {
    uVar1 = FUN_00886c70(param_3);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uVar1 & 9) != uVar1)) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x303,
                   "wxArgNormalizerNarrowChar<unsigned char>::wxArgNormalizerNarrowChar",
                   "(argtype & (wxFormatString::Arg_Char | wxFormatString::Arg_Int)) == argtype",
                   "format specifier doesn\'t match argument type");
    }
    iVar2 = FUN_00886c70(param_3);
    if (iVar2 != 1) {
      goto LAB_0081afe1;
    }
  }
  param_1._0_1_ = FUN_00819283(param_1);
LAB_0081afe1:
  *param_1_00 = (undefined)param_1;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __thiscall
FUN_0081afea(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  param_1_00[1] = param_3;
  param_1_00[2] = param_1;
  *param_1_00 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxFocusEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
                ::vftable;
  param_1_00[3] = param_2;
  return;
}



void __thiscall FUN_0081b018(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxFocusEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void FUN_0081b063(undefined4 *param_1,undefined4 param_2)

{
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_00422680(&local_c,param_2);
  *param_1 = local_c;
  param_1[1] = local_8;
  return;
}



void FUN_0081b086(undefined4 *param_1,int param_2)

{
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_00422680(&local_c,-param_2);
  *param_1 = local_c;
  param_1[1] = local_8;
  return;
}



void FUN_0081b0ac(int param_1)

{
  if (*(uint *)(param_1 + 0x18) < 8) {
    param_1 = param_1 + 4;
  }
  else {
    param_1 = *(int *)(param_1 + 4);
  }
  FUN_00a42654(param_1);
  return;
}



void __fastcall FUN_0081b0c6(undefined4 *param_1)

{
  *param_1 = nsWeakReference::vftable;
  if ((int *)param_1[1] != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x0081b0d5. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*(int *)param_1[1] + 0x10))();
    return;
  }
  return;
}



undefined4 FUN_0081b0d9(int param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  
  if (param_3 != (undefined4 *)0x0) {
    *param_3 = 0;
  }
  if (*(int *)(param_1 + 4) == 0) {
    uVar1 = 0x80004003;
  }
  else {
    uVar1 = (**(code **)**(undefined4 **)(param_1 + 4))
                      (*(undefined4 **)(param_1 + 4),param_2,param_3);
  }
  return uVar1;
}



undefined4 FUN_0081b105(int *param_1,undefined4 param_2,int **param_3)

{
  int iVar1;
  undefined4 uVar2;
  
  *param_3 = (int *)0x0;
  iVar1 = FUN_0081931a(&DAT_0322df40);
  if (iVar1 == 0) {
    uVar2 = 0x80004002;
  }
  else {
    *param_3 = param_1;
    (**(code **)(*param_1 + 4))(param_1);
    uVar2 = 0;
  }
  return uVar2;
}



undefined4 FUN_0081b138(int param_1)

{
  int *piVar1;
  
  piVar1 = (int *)(param_1 + 8);
  *piVar1 = *piVar1 + -1;
  if (*piVar1 == 0) {
    FUN_0081b0c6();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return *(undefined4 *)(param_1 + 8);
}



undefined4 FUN_0081b159(int param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  if (param_2 == (undefined4 *)0x0) {
    uVar1 = 0x80004003;
  }
  else {
    if (*(int *)(param_1 + 4) == 0) {
      puVar2 = (undefined4 *)operator_new(0xc);
      if (puVar2 == (undefined4 *)0x0) {
        puVar2 = (undefined4 *)0x0;
      }
      else {
        puVar2[2] = 0;
        *puVar2 = nsWeakReference::vftable;
        puVar2[1] = param_1;
      }
      *(undefined4 **)(param_1 + 4) = puVar2;
      if (puVar2 == (undefined4 *)0x0) {
        *param_2 = 0;
        return 0x8007000e;
      }
    }
    (**(code **)(**(int **)(param_1 + 4) + 4))(*(int **)(param_1 + 4));
    *param_2 = *(undefined4 *)(param_1 + 4);
    uVar1 = 0;
  }
  return uVar1;
}



undefined4 * __fastcall FUN_0081b1b6(undefined4 *param_1)

{
  *param_1 = PluginListProvider::vftable;
  param_1[1] = 0;
  FUN_00853ce0(0);
  return param_1;
}



int FUN_0081b1d1(void)

{
  int param_4;
  
  return (uint)(param_4 != 0) * 2 + -0x7fffbffd;
}



undefined4 * __thiscall FUN_0081b1e4(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = PluginListProvider::vftable;
  FUN_00853f30();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_0081b209(undefined4 *param_1)

{
  *param_1 = PluginEnumerator::vftable;
  param_1[1] = 0;
  FUN_00853ce0(0);
  param_1[6] = 0;
  return param_1;
}



undefined4 FUN_0081b228(int param_1,uint *param_2)

{
  undefined4 uVar1;
  
  if (param_2 == (uint *)0x0) {
    uVar1 = 0x80004003;
  }
  else {
    *param_2 = (uint)(*(uint *)(param_1 + 0x18) < *(uint *)(param_1 + 0xc));
    uVar1 = 0;
  }
  return uVar1;
}



undefined4 * __thiscall FUN_0081b24c(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = PluginEnumerator::vftable;
  FUN_00853f30();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Unable to track spacebase fully for stack

undefined4 FUN_0081b271(undefined4 param_1,byte *param_2,int **param_3)

{
  undefined4 uVar1;
  int iVar2;
  void *pvVar3;
  int iVar4;
  undefined4 *puVar5;
  int *piVar6;
  byte *pbVar7;
  bool bVar8;
  bool bVar9;
  undefined4 uStackY_28;
  undefined auStack_20 [24];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0;
  local_8 = 0x81b27d;
  puVar5 = (undefined4 *)auStack_20;
  if (param_3 == (int **)0x0) {
    uVar1 = 0x80004003;
  }
  else {
    iVar4 = 0xb;
    bVar8 = false;
    iVar2 = 0;
    bVar9 = true;
    pbVar7 = (byte *)"APluginsDL";
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar8 = *param_2 < *pbVar7;
      bVar9 = *param_2 == *pbVar7;
      param_2 = param_2 + 1;
      pbVar7 = pbVar7 + 1;
    } while (bVar9);
    if (!bVar9) {
      iVar2 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
    }
    if (iVar2 == 0) {
      uStackY_28 = 0x81b2ac;
      pvVar3 = operator_new(0x1c);
      piVar6 = (int *)0x0;
      local_8 = 0;
      if (pvVar3 != (void *)0x0) {
        piVar6 = (int *)FUN_0081b209();
      }
      local_8 = 0xffffffff;
      uStackY_28 = 0x81b2d5;
      FUN_00855070();
      *param_3 = piVar6;
      puVar5 = &uStackY_28;
      uStackY_28 = 0x81b2dd;
      (**(code **)(*piVar6 + 4))();
      uVar1 = 0;
    }
    else {
      uVar1 = 0x80004005;
    }
  }
  *(undefined4 *)((int)puVar5 + -4) = 0x81b2eb;
  return uVar1;
}



undefined4 * FUN_0081b2ee(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined local_c [8];
  
  puVar2 = (undefined4 *)FUN_0081b086(local_c,1);
  uVar1 = *puVar2;
  param_1[1] = puVar2[1];
  *param_1 = uVar1;
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0081b311(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x10);
  if (pvVar1 != (void *)0x0) {
    FUN_0081afea(param_2,param_3,0);
  }
  return;
}



_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *
__thiscall
FUN_0081b345(_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,wchar_t *param_1)

{
  wchar_t wVar1;
  wchar_t *pwVar2;
  
  wVar1 = *param_1;
  pwVar2 = std::
           _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
           ::operator*(param_1_00);
  *pwVar2 = wVar1;
  return param_1_00;
}



uint * __thiscall
FUN_0081b35f(uint *param_1_00,
            _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            *param_1)

{
  wchar_t *pwVar1;
  
  pwVar1 = std::
           _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
           ::operator*(param_1);
  *param_1_00 = (uint)(ushort)*pwVar1;
  return param_1_00;
}



undefined4 * __thiscall
FUN_0081b376(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_c;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *pbStack_8;
  
  local_c = param_1_00;
  pbStack_8 = param_1_00;
  puVar2 = (undefined4 *)
           std::
           basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
           begin(param_1_00,&local_c);
  uVar1 = *puVar2;
  param_1[1] = puVar2[1];
  *param_1 = uVar1;
  return param_1;
}



undefined4 * FUN_0081b397(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined local_c [8];
  
  puVar2 = (undefined4 *)FUN_00412721(local_c);
  uVar1 = *puVar2;
  param_1[1] = puVar2[1];
  *param_1 = uVar1;
  return param_1;
}



void FUN_0081b3b8(undefined4 *param_1)

{
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_0081b397(&local_c);
  *param_1 = local_c;
  param_1[1] = local_8;
  return;
}



undefined4 __thiscall FUN_0081b3d8(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int local_c;
  int iStack_8;
  
  local_c = param_1_00;
  iStack_8 = param_1_00;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x14) == 0)) {
    FUN_00840480("D:\\wxWidgets-2.9.3\\include\\wx/string.h",0x628,"wxString::Last","!empty()",
                 L"wxString: index out of bounds");
  }
  uVar1 = param_1;
  FUN_0081b3b8(&local_c);
  FUN_0081b2ee(uVar1);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0081b42d(undefined4 *param_1)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  
  *param_1 = wxWebControl::vftable;
  uVar4 = 0;
  ((int *)param_1[0x6f])[4] = 0;
  piVar3 = (int *)param_1[0x6f];
  (**(code **)(*piVar3 + 8))(piVar3);
  if (*(char *)(param_1 + 0x67) != '\0') {
    (**(code **)(**(int **)(param_1[0x65] + 0x14) + 0x14))(*(int **)(param_1[0x65] + 0x14));
    FUN_00819af7();
    FUN_0081a772();
    (**(code **)(*(int *)param_1[0x66] + 8))((int *)param_1[0x66]);
  }
  uVar1 = param_1[0x6c];
  if (uVar1 != 0) {
    do {
      piVar3 = (int *)FUN_004562d1(uVar4);
      if ((undefined4 *)*piVar3 != (undefined4 *)0x0) {
        (***(code ***)(undefined4 *)*piVar3)(1);
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  if ((undefined4 *)param_1[0x6e] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x6e])(1);
  }
  iVar2 = param_1[0x65];
  if (iVar2 != 0) {
    FUN_0081ac05();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  param_1[0x70] = wxObject::vftable;
  FUN_0083e850();
  FUN_0086aa30();
  FUN_0086aa30();
  FUN_0044cd6b();
  return;
}



undefined4 __thiscall
FUN_0081b52b(_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,wchar_t param_1)

{
  wchar_t *pwVar1;
  
  pwVar1 = std::
           _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
           ::operator*(param_1_00);
  return CONCAT31((int3)(CONCAT22((short)((uint)pwVar1 >> 0x10),*pwVar1) >> 8),*pwVar1 != param_1);
}



undefined4 FUN_0081b542(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined local_c [8];
  
  uVar1 = param_1;
  FUN_0081b376(local_c);
  FUN_0081b063(uVar1,param_2);
  return param_1;
}



undefined4 * FUN_0081b564(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined local_c [8];
  
  puVar2 = (undefined4 *)FUN_0081b542(local_c,param_2);
  uVar1 = *puVar2;
  param_1[1] = puVar2[1];
  *param_1 = uVar1;
  return param_1;
}



void FUN_0081b588(undefined4 param_1)

{
  undefined *puVar1;
  undefined local_c [8];
  
  puVar1 = &stack0x00000008;
  FUN_0081b564(local_c,param_1);
  FUN_0081b345(puVar1);
  return;
}



undefined4 FUN_0081b5a8(undefined4 param_1,undefined4 param_2)

{
  FUN_0081b564(param_1,param_2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0081b5bc(void)

{
  FUN_0043c1dd();
  FUN_0043c1dd();
  FUN_0043c1dd();
  return;
}



undefined4 FUN_0081b5f9(undefined4 param_1,undefined4 param_2,undefined2 param_3)

{
  FUN_00852430(param_1,param_2,param_3,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_0081b619(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  FUN_0044cdb8();
  *param_1_00 = wxControl::vftable;
  FUN_0086a600();
  FUN_00936340(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  return param_1_00;
}



uint * FUN_0081b66e(uint *param_1,undefined4 param_2)

{
  wchar_t *pwVar1;
  undefined local_30 [36];
  _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
  local_c [8];
  
  FUN_00856440(local_30,param_2);
  FUN_0081b564(local_c,0);
  pwVar1 = std::
           _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
           ::operator*(local_c);
  *param_1 = (uint)(ushort)*pwVar1;
  FUN_0040159c();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0081b6ad(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_0048a35a(param_1,param_2);
  *param_1_00 = wxWebEvent::vftable;
  FUN_008209bf();
  FUN_008209f8();
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0x1e));
  param_1_00[0x25] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0x27));
  param_1_00[0x2e] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0x31));
  param_1_00[0x38] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0x3a));
  param_1_00[0x41] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0x46));
  param_1_00[0x4d] = 0;
  param_1_00[0x18] = 0;
  param_1_00[0x19] = 0;
  param_1_00[0x44] = 0;
  param_1_00[0x43] = 0;
  param_1_00[0x45] = 0;
  param_1_00[0x4f] = 0;
  *(undefined *)(param_1_00 + 0x30) = 1;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0081b764(void)

{
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  FUN_00820a5d();
  FUN_00820a3f();
  FUN_00454a4e();
  return;
}



undefined4 * __thiscall FUN_0081b80c(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[1] = nsIChromeInternal::vftable;
  param_1_00[2] = nsIWebBrowserChromeFocus::vftable;
  param_1_00[3] = nsIWebProgressListener::vftable;
  param_1_00[4] = nsIEmbeddingSiteWindow2::vftable;
  param_1_00[5] = nsIInterfaceRequestor::vftable;
  param_1_00[6] = nsSupportsWeakReference::vftable;
  param_1_00[7] = 0;
  param_1_00[8] = nsIContextMenuListener2::vftable;
  param_1_00[9] = nsITooltipListener::vftable;
  param_1_00[10] = nsIDOMEventListener::vftable;
  *param_1_00 = BrowserChrome::vftable;
  param_1_00[1] = BrowserChrome::vftable;
  param_1_00[2] = BrowserChrome::vftable;
  param_1_00[3] = BrowserChrome::vftable;
  param_1_00[4] = BrowserChrome::vftable;
  param_1_00[5] = BrowserChrome::vftable;
  param_1_00[6] = BrowserChrome::vftable;
  param_1_00[8] = BrowserChrome::vftable;
  param_1_00[9] = BrowserChrome::vftable;
  param_1_00[10] = BrowserChrome::vftable;
  param_1_00[0xb] = 0;
  param_1_00[0xc] = ns_smartptr<class_nsIWebBrowser>::vftable;
  param_1_00[0xd] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0xf));
  param_1_00[0x16] = 0;
  param_1_00[0xe] = param_1;
  param_1_00[0x19] = 0;
  param_1_00[0x1a] = 0;
  param_1_00[0x18] = 0xffe;
  return param_1_00;
}



undefined4 __fastcall FUN_0081b8d0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x34);
}



void FUN_0081b8d4(void)

{
  FUN_0081941a();
  return;
}



void FUN_0081b8de(void)

{
  FUN_0081941a();
  return;
}



void FUN_0081b8e8(void)

{
  FUN_0081941a();
  return;
}



void FUN_0081b8f2(void)

{
  FUN_0081941a();
  return;
}



void FUN_0081b8fc(void)

{
  FUN_0081940d();
  return;
}



void FUN_0081b906(void)

{
  FUN_0081941a();
  return;
}



void FUN_0081b910(void)

{
  FUN_0081940d();
  return;
}



void FUN_0081b91a(void)

{
  FUN_0081940d();
  return;
}



void FUN_0081b924(void)

{
  FUN_0081941a();
  return;
}



void FUN_0081b92e(void)

{
  FUN_0081940d();
  return;
}



void FUN_0081b938(void)

{
  FUN_0081940d();
  return;
}



void FUN_0081b942(void)

{
  FUN_0081941a();
  return;
}



void FUN_0081b94c(void)

{
  FUN_0081940d();
  return;
}



void FUN_0081b956(void)

{
  FUN_0081941a();
  return;
}



void FUN_0081b960(void)

{
  FUN_0081940d();
  return;
}



void FUN_0081b96a(void)

{
  FUN_0081940d();
  return;
}



void FUN_0081b974(void)

{
  FUN_0081941a();
  return;
}



void FUN_0081b97e(void)

{
  FUN_0081940d();
  return;
}



void FUN_0081b988(void)

{
  FUN_0081a42b();
  return;
}



void FUN_0081b992(void)

{
  FUN_0081a42b();
  return;
}



void FUN_0081b99c(void)

{
  FUN_0081a42b();
  return;
}



void FUN_0081b9a6(void)

{
  FUN_0081a42b();
  return;
}



void FUN_0081b9b0(void)

{
  FUN_0081a42b();
  return;
}



void FUN_0081b9ba(void)

{
  FUN_0081a42b();
  return;
}



void FUN_0081b9c4(void)

{
  FUN_0081a42b();
  return;
}



void FUN_0081b9ce(void)

{
  FUN_0081a42b();
  return;
}



void FUN_0081b9d8(void)

{
  FUN_0081a42b();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0081b9e2(undefined4 *param_1)

{
  *param_1 = BrowserChrome::vftable;
  param_1[1] = BrowserChrome::vftable;
  param_1[2] = BrowserChrome::vftable;
  param_1[3] = BrowserChrome::vftable;
  param_1[4] = BrowserChrome::vftable;
  param_1[5] = BrowserChrome::vftable;
  param_1[6] = BrowserChrome::vftable;
  param_1[8] = BrowserChrome::vftable;
  param_1[9] = BrowserChrome::vftable;
  param_1[10] = BrowserChrome::vftable;
  FUN_0040159c();
  FUN_008199e9();
  param_1[6] = nsSupportsWeakReference::vftable;
  if (param_1[7] != 0) {
    *(undefined4 *)(param_1[7] + 4) = 0;
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0081ba64(int param_1,undefined4 param_2,undefined4 param_3,uint param_4)

{
  undefined local_154 [8];
  int local_14c;
  uint local_f4;
  undefined4 local_f0;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x144;
  local_8 = 0x81ba73;
  if (*(int *)(param_1 + 0x2c) != 0) {
    FUN_0081b6ad(DAT_032bc42c,*(undefined4 *)(*(int *)(param_1 + 0x2c) + 0x40));
    local_8 = 0;
    local_14c = *(int *)(param_1 + 0x2c);
    local_f4 = 0;
    if ((param_4 & 0x10) != 0) {
      local_f4 = 0x10;
    }
    if ((param_4 & 1) != 0) {
      local_f4 = local_f4 | 1;
    }
    if ((param_4 & 2) != 0) {
      local_f4 = local_f4 | 2;
    }
    if ((param_4 & 4) != 0) {
      local_f4 = local_f4 | 4;
    }
    if ((param_4 & 8) != 0) {
      local_f4 = local_f4 | 8;
    }
    if ((param_4 & 0x10000) != 0) {
      local_f4 = local_f4 | 0x20;
    }
    if ((param_4 & 0x20000) != 0) {
      local_f4 = local_f4 | 0x40;
    }
    if ((param_4 & 0x40000) != 0) {
      local_f4 = local_f4 | 0x80;
    }
    if ((param_4 & 0x80000) != 0) {
      local_f4 = local_f4 | 0x100;
    }
    local_f0 = 0;
    (**(code **)(**(int **)(local_14c + 0x70) + 0x18))(local_154);
    local_8 = 0xffffffff;
    FUN_0081b764();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0081bb34(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  param_1_00[1] = nsSupportsWeakReference::vftable;
  param_1_00[2] = 0;
  *param_1_00 = MainURIListener::vftable;
  param_1_00[1] = MainURIListener::vftable;
  param_1_00[3] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 5));
  param_1_00[0xc] = 0;
  param_1_00[0xe] = ns_smartptr<class_nsIURIContentListener>::vftable;
  param_1_00[0xf] = 0;
  param_1_00[4] = param_1;
  uVar1 = FUN_0081a188(param_2);
  FUN_00819d0e(uVar1);
  FUN_008196e9();
  return param_1_00;
}



undefined4 FUN_0081bbb4(void)

{
  return 0x80004001;
}



void FUN_0081bbbc(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  (**(code **)(*param_1 + 0x18))(param_1,param_2,1,param_3,param_4);
  return;
}



undefined4 FUN_0081bbd7(void)

{
  return 0x80004001;
}



void FUN_0081bbdf(void)

{
  FUN_00819597();
  return;
}



void FUN_0081bbe9(void)

{
  FUN_00820c29();
  return;
}



void FUN_0081bbf3(void)

{
  FUN_0081aa52();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0081bbfd(undefined4 *param_1)

{
  *param_1 = MainURIListener::vftable;
  param_1[1] = MainURIListener::vftable;
  FUN_00819cfa();
  FUN_0040159c();
  param_1[1] = nsSupportsWeakReference::vftable;
  if (param_1[2] != 0) {
    *(undefined4 *)(param_1[2] + 4) = 0;
  }
  return;
}



undefined4 __thiscall FUN_0081bc4a(undefined4 param_1_00,byte param_1)

{
  FUN_0081bbfd();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0081bc66(int *param_1)

{
  undefined local_60 [16];
  undefined **local_50;
  int *local_4c;
  undefined **local_48;
  int *local_44;
  int *local_40;
  int local_3c;
  undefined local_38 [48];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x50;
  local_8 = 0x81bc72;
  local_3c = 0;
  while( true ) {
    (**(code **)(*param_1 + 0xc))(param_1,&local_3c);
    if (local_3c == 0) break;
    local_40 = (int *)0x0;
    (**(code **)(*param_1 + 0x10))(param_1,&local_40);
    if (local_40 != (int *)0x0) {
      local_4c = local_40;
      local_50 = nsToSmart::vftable;
      FUN_00819d74(&local_50);
      local_8 = 0;
      (**(code **)(*local_40 + 8))(local_40);
      if (local_44 != (int *)0x0) {
        FUN_0081f6c5(local_60);
        local_8._0_1_ = 1;
        (**(code **)(*local_44 + 0x80))(local_44,local_60);
        FUN_00820057(local_38,local_60);
        local_8._0_1_ = 2;
        FUN_00854700(local_38,1);
        FUN_0040159c();
        local_8 = (uint)local_8._1_3_ << 8;
        FUN_0081f6e7(local_60);
      }
      local_8 = 0xffffffff;
      local_48 = ns_smartptr<class_nsIFile>::vftable;
      if (local_44 != (int *)0x0) {
        (**(code **)(*local_44 + 8))(local_44);
      }
    }
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __fastcall
FUN_0081bd47(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1)

{
  void *pvVar1;
  int *piVar2;
  
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            (param_1 + 0x24);
  *(undefined4 *)(param_1 + 0x40) = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            (param_1 + 0x48);
  *(undefined4 *)(param_1 + 100) = 0;
  FUN_0086a600();
  *(undefined ***)(param_1 + 0x7c) = ns_smartptr<class_nsIAppShell>::vftable;
  *(undefined4 *)(param_1 + 0x80) = 0;
  param_1[0x6c] =
       (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>)0x0;
  param_1[0x6d] =
       (basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>)0x0;
  pvVar1 = operator_new(0x18);
  if (pvVar1 == (void *)0x0) {
    piVar2 = (int *)0x0;
  }
  else {
    piVar2 = (int *)FUN_0081b1b6();
  }
  *(int **)(param_1 + 0x84) = piVar2;
  (**(code **)(*piVar2 + 4))(piVar2);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0081bdd7(int param_1)

{
  (**(code **)(**(int **)(param_1 + 0x84) + 8))(*(int **)(param_1 + 0x84));
  FUN_00819b9f();
  FUN_0086aa30();
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  return;
}



undefined4 * __thiscall FUN_0081be30(undefined4 *param_1_00,undefined4 param_1)

{
  *(undefined *)(param_1_00 + 1) = 0;
  *param_1_00 = wxWebFavIconProgress::vftable;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 4));
  param_1_00[0xb] = 0;
  param_1_00[2] = 0;
  param_1_00[3] = param_1;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0081be5e(undefined4 *param_1)

{
  *param_1 = wxWebFavIconProgress::vftable;
  if (param_1[2] != 0) {
    *(undefined4 *)(param_1[2] + 8) = 0;
    (**(code **)(*(int *)param_1[2] + 8))((int *)param_1[2]);
  }
  FUN_0040159c();
  *param_1 = wxWebProgressBase::vftable;
  return;
}



undefined4 __thiscall FUN_0081bea4(undefined4 param_1_00,byte param_1)

{
  FUN_0081be5e();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0081bec0(undefined4 param_1_00,byte param_1)

{
  FUN_0081b42d();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_0081bedc(int param_1_00,undefined4 param_1)

{
  undefined uVar1;
  char cVar2;
  undefined **local_160;
  undefined4 local_15c;
  undefined4 local_158;
  void *local_154;
  undefined4 local_14c;
  undefined4 local_148 [2];
  int local_140;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_148;
  local_148[0] = 0xc;
  local_14c = 0x81bf00;
  uVar1 = FUN_00819297(0);
  local_158 = CONCAT31(local_158._1_3_,uVar1);
  local_15c = 0;
  local_160 = wxImage::vftable;
  local_14c._0_1_ = 1;
  local_14c._1_3_ = 0;
  FUN_0043d987(&local_160);
  local_14c._0_1_ = 0;
  local_160 = wxObject::vftable;
  FUN_0083e850();
  cVar2 = (**(code **)(*(int *)(param_1_00 + 0x1c0) + 0x1c))(param_1,0x32,0xffffffff);
  if (cVar2 != '\0') {
    FUN_0081b0ac(param_1);
    FUN_0081b6ad(DAT_032bc4b4,*(undefined4 *)(param_1_00 + 0x40));
    local_14c._0_1_ = 2;
    local_140 = param_1_00;
    (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_148);
    local_14c = (uint)local_14c._1_3_ << 8;
    FUN_0081b764();
  }
  local_14c = 0xffffffff;
  FUN_00819297(local_158);
  ExceptionList = local_154;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_0081bfc2(int param_1)

{
  undefined local_154 [8];
  int local_14c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x144;
  local_8 = 0x81bfd1;
  *(undefined *)(param_1 + 0x1c9) = 1;
  FUN_0081b6ad(DAT_032bc4b8,*(undefined4 *)(param_1 + 0x40));
  local_8 = 0;
  local_14c = param_1;
  (**(code **)(**(int **)(param_1 + 0x70) + 0x18))(local_154);
  local_8 = 0xffffffff;
  FUN_0081b764();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int ** FUN_0081c01c(int **param_1,int param_2,int param_3)

{
  int *piVar1;
  
  if (param_3 == -1) {
    param_3 = FUN_00819224(param_2);
  }
  piVar1 = (int *)FUN_00850350();
  *param_1 = piVar1;
  if (param_2 != 0) {
    piVar1 = (int *)operator_new(0xc);
    if (piVar1 == (int *)0x0) {
      piVar1 = (int *)0x0;
    }
    else {
      *piVar1 = param_2;
      piVar1[1] = param_3;
      *(undefined2 *)(piVar1 + 2) = 1;
      *(undefined *)((int)piVar1 + 10) = 0;
    }
    *param_1 = piVar1;
  }
  return param_1;
}



undefined4 FUN_0081c086(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_0081a07d(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,0);
  return param_1;
}



undefined4 __thiscall
FUN_0081c0ba(uint param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  uVar1 = 0;
  FUN_0081af70(param_3,param_2,1);
  uVar1 = FUN_008854f0(uVar1);
  FUN_00853850(param_1,uVar1,param_1_00 >> 0x18);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0081c0f1(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00850350();
  *param_1_00 = uVar1;
  uVar1 = FUN_00850350();
  param_1_00[1] = uVar1;
  FUN_0081c01c(param_1_00 + 2,param_1,0xffffffff);
  param_1_00[3] = 0;
  param_1_00[4] = 0;
  return param_1_00;
}



void __thiscall
std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
          (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          uint param_1)

{
  uint uVar1;
  char cVar2;
  
  uVar1 = *(uint *)(this + 0x14);
  if ((uVar1 <= param_1) && (*(uint *)(this + 0x18) != param_1)) {
    cVar2 = FUN_004182d2(param_1,1);
    if (cVar2 != '\0') {
      FUN_0040180b(uVar1);
    }
  }
  return;
}



bool __thiscall
FUN_0081c141(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,uint param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
            (param_1_00,param_1);
  return param_1 <= *(uint *)(param_1_00 + 0x18);
}



undefined4 __thiscall FUN_0081c15a(undefined4 param_1_00,byte param_1)

{
  FUN_0081b764();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0081c176(undefined4 param_1_00,byte param_1)

{
  FUN_0081b9e2();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0081c192(int param_1)

{
  FUN_0081bedc(param_1 + 0x10);
  return;
}



undefined4 __thiscall FUN_0081c19f(undefined4 param_1_00,undefined2 param_1)

{
  FID_conflict_append(1,param_1);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall FUN_0081c1b5(undefined4 *param_1_00,int param_1)

{
  FUN_0048a37a(param_1);
  *param_1_00 = wxWebEvent::vftable;
  FUN_008209bf();
  FUN_008209f8();
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0x1e));
  param_1_00[0x25] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0x27));
  param_1_00[0x2e] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0x31));
  param_1_00[0x38] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0x3a));
  param_1_00[0x41] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0x46));
  param_1_00[0x4d] = 0;
  param_1_00[0x18] = *(undefined4 *)(param_1 + 0x60);
  param_1_00[0x19] = *(undefined4 *)(param_1 + 100);
  FUN_008209e6(param_1 + 0x68);
  FUN_00820a2d(param_1 + 0x70);
  FUN_0043261a(param_1 + 0x78);
  param_1_00[0x44] = *(undefined4 *)(param_1 + 0x110);
  param_1_00[0x43] = *(undefined4 *)(param_1 + 0x10c);
  FUN_0043261a(param_1 + 0x9c);
  FUN_0043261a(param_1 + 0xc4);
  FUN_0043261a(param_1 + 0xe8);
  *(undefined *)(param_1_00 + 0x30) = *(undefined *)(param_1 + 0xc0);
  param_1_00[0x45] = *(undefined4 *)(param_1 + 0x114);
  FUN_0043261a(param_1 + 0x118);
  param_1_00[0x4f] = *(undefined4 *)(param_1 + 0x13c);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_0081c304(undefined4 param_1)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x140);
  if (pvVar1 != (void *)0x0) {
    FUN_0081c1b5(param_1);
  }
  return;
}



undefined4 __thiscall FUN_0081c337(int param_1_00,undefined4 param_1)

{
  FUN_004325a0(param_1_00 + 0x24);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0081c352(int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined local_19c [36];
  undefined local_178 [36];
  void *local_154;
  undefined4 local_14c;
  undefined4 local_148 [2];
  undefined4 local_140;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_148;
  local_148[0] = 0x48;
  local_14c = 0x81c376;
  if (*(int *)(param_1 + 0x28) != 0) {
    uVar1 = FUN_00820120(local_19c,param_2);
    local_14c = 0;
    FUN_0043261a(uVar1);
    local_14c = 0xffffffff;
    FUN_0040159c();
    if (*(int *)(param_1 + 0x54) == 0) {
      FUN_0081b6ad(DAT_032bc4c0,*(undefined4 *)(*(int *)(param_1 + 0x28) + 0x40));
      local_140 = *(undefined4 *)(param_1 + 0x28);
      local_14c = 2;
      FUN_0043261a(param_1 + 0x2c);
      (**(code **)(**(int **)(*(int *)(param_1 + 0x28) + 0x70) + 0x18))(local_148);
      local_14c = 0xffffffff;
      FUN_0081b764();
    }
    else {
      uVar1 = FUN_00820120(local_178,param_2);
      local_14c = 1;
      (**(code **)(**(int **)(param_1 + 0x54) + 0x368))(uVar1);
      FUN_0040159c();
    }
  }
  ExceptionList = local_154;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0081c44e(int param_1,int param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined local_178 [36];
  undefined local_154 [8];
  undefined4 local_14c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x168;
  local_8 = 0x81c45d;
  if ((*(int *)(param_1 + 0x38) != 0) && (param_2 == 3)) {
    FUN_0081b6ad(DAT_032bc4bc,*(undefined4 *)(*(int *)(param_1 + 0x38) + 0x40));
    local_14c = *(undefined4 *)(param_1 + 0x38);
    local_8 = 0;
    uVar1 = FUN_00820120(local_178,param_3);
    local_8._0_1_ = 1;
    FUN_0043261a(uVar1);
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_0040159c();
    (**(code **)(**(int **)(*(int *)(param_1 + 0x38) + 0x70) + 0x18))(local_154);
    local_8 = 0xffffffff;
    FUN_0081b764();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0081c4ea(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  undefined4 uVar1;
  undefined local_188 [36];
  undefined local_164 [16];
  void *local_154;
  undefined4 local_14c;
  undefined4 local_148 [2];
  undefined4 local_140;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_148;
  local_148[0] = 0x34;
  local_14c = 0x81c50e;
  if (*(int *)(param_1 + 0x2c) != 0) {
    FUN_0081f6c5(local_164);
    local_14c = 0;
    (**(code **)(*param_4 + 0xc))(param_4,local_164);
    FUN_0081b6ad(DAT_032bc550,*(undefined4 *)(*(int *)(param_1 + 0x2c) + 0x40));
    local_140 = *(undefined4 *)(param_1 + 0x2c);
    local_14c._0_1_ = 1;
    uVar1 = FUN_00820057(local_188,local_164);
    local_14c._0_1_ = 2;
    FUN_0043261a(uVar1);
    local_14c._0_1_ = 1;
    FUN_0040159c();
    (**(code **)(**(int **)(*(int *)(param_1 + 0x2c) + 0x70) + 0x18))(local_148);
    local_14c = (uint)local_14c._1_3_ << 8;
    FUN_0081b764();
    local_14c = 0xffffffff;
    FUN_0081f6e7(local_164);
  }
  ExceptionList = local_154;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0081c5d2(int param_1)

{
  undefined4 uVar1;
  undefined4 param_5;
  undefined local_178 [36];
  undefined local_154 [8];
  undefined4 local_14c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x168;
  local_8 = 0x81c5e1;
  if (*(int *)(param_1 + 0x2c) != 0) {
    FUN_0081b6ad(DAT_032bc554,*(undefined4 *)(*(int *)(param_1 + 0x2c) + 0x40));
    local_14c = *(undefined4 *)(param_1 + 0x2c);
    local_8 = 0;
    uVar1 = FUN_00820120(local_178,param_5);
    local_8._0_1_ = 1;
    FUN_0043261a(uVar1);
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_0040159c();
    (**(code **)(**(int **)(*(int *)(param_1 + 0x2c) + 0x70) + 0x18))(local_154);
    local_8 = 0xffffffff;
    FUN_0081b764();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0081c668(int param_1,undefined4 param_2,int *param_3)

{
  undefined4 uVar1;
  undefined local_1ac [36];
  undefined local_188 [16];
  int local_178;
  undefined **local_174;
  int *local_170;
  undefined **local_16c;
  int *local_168;
  undefined **local_164;
  int *local_160;
  undefined **local_15c;
  int *local_158;
  void *local_154;
  undefined4 local_14c;
  undefined4 local_148 [2];
  int local_140;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_148;
  local_148[0] = 0x58;
  local_14c = 0x81c68c;
  local_178 = param_1;
  if (*(int *)(param_1 + 0x18) != 0) {
    FUN_0081b6ad(DAT_032bc4c4,*(undefined4 *)(*(int *)(param_1 + 0x18) + 0x40));
    local_174 = ns_smartptr<class_nsIDOMEvent>::vftable;
    local_170 = (int *)0x0;
    local_14c._0_1_ = 1;
    local_14c._1_3_ = 0;
    (**(code **)(*param_3 + 0xc))(param_3,&local_170);
    if (local_170 != (int *)0x0) {
      local_164 = ns_smartptr<class_nsIDOMEventTarget>::vftable;
      local_160 = (int *)0x0;
      local_14c._0_1_ = 2;
      (**(code **)(*local_170 + 0x10))(local_170,&local_160);
      FUN_0081a2a5(local_160);
      local_15c = ns_smartptr<class_nsIDOMNode>::vftable;
      local_158 = (int *)0x0;
      local_14c._0_1_ = 3;
      FUN_00819733(&local_164);
      local_158 = (int *)FUN_0081a38a(local_158);
      local_16c = ns_smartptr<class_nsIDOMHTMLAnchorElement>::vftable;
      local_168 = (int *)0x0;
      local_14c._0_1_ = 4;
      FUN_00819891(&local_15c);
      if (local_168 != (int *)0x0) {
        FUN_0081f664(local_188);
        local_14c._0_1_ = 5;
        (**(code **)(*local_168 + 0xf0))(local_168,local_188);
        uVar1 = FUN_008200b0(local_1ac,local_188);
        local_14c._0_1_ = 6;
        FUN_0043261a(uVar1);
        FUN_0040159c();
        local_14c._0_1_ = 4;
        FUN_0081f686(local_188);
      }
      local_14c._0_1_ = 3;
      local_16c = ns_smartptr<class_nsIDOMHTMLAnchorElement>::vftable;
      if (local_168 != (int *)0x0) {
        (**(code **)(*local_168 + 8))(local_168);
      }
      local_14c._0_1_ = 2;
      local_15c = ns_smartptr<class_nsIDOMNode>::vftable;
      if (local_158 != (int *)0x0) {
        (**(code **)(*local_158 + 8))(local_158);
      }
      local_14c._0_1_ = 1;
      local_164 = ns_smartptr<class_nsIDOMEventTarget>::vftable;
      if (local_160 != (int *)0x0) {
        (**(code **)(*local_160 + 8))(local_160);
      }
    }
    local_140 = *(int *)(local_178 + 0x18);
    (**(code **)(**(int **)(local_140 + 0x70) + 0x18))(local_148);
    local_14c = (uint)local_14c._1_3_ << 8;
    local_174 = ns_smartptr<class_nsIDOMEvent>::vftable;
    if (local_170 != (int *)0x0) {
      (**(code **)(*local_170 + 8))(local_170);
    }
    local_14c = 0xffffffff;
    FUN_0081b764();
  }
  ExceptionList = local_154;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0081c83a(int param_1,int *param_2,int *param_3)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  undefined4 uVar4;
  int **ppiVar5;
  undefined local_198 [36];
  undefined local_174 [16];
  int local_164;
  int *local_160;
  int *local_15c;
  int local_158;
  void *local_154;
  undefined4 local_14c;
  undefined4 local_148 [2];
  undefined4 local_140;
  char local_ec;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_148;
  local_148[0] = 0x44;
  local_14c = 0x81c85e;
  local_160 = param_2;
  local_15c = param_3;
  if (*(int *)(param_1 + 0x10) != 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      if (param_2 == (int *)0x0) {
        FUN_008402e0(s_______src_webcontrol_cpp_00d1e9f8,0x471,"MainURIListener::OnStartURIOpen",
                     &DAT_00d1f850,0);
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_15c == (int *)0x0)) {
        FUN_008402e0(s_______src_webcontrol_cpp_00d1e9f8,0x472,"MainURIListener::OnStartURIOpen",
                     "abort",0);
      }
    }
    *local_15c = 0;
    FUN_0081f6c5(local_174);
    local_14c = 0;
    iVar3 = (**(code **)(*local_160 + 0xc))(local_160,local_174);
    if (-1 < iVar3) {
      uVar4 = FUN_00820057(local_198,local_174);
      local_14c._0_1_ = 1;
      FUN_0043261a(uVar4);
      local_14c._0_1_ = 0;
      FUN_0040159c();
      FUN_0081b6ad(DAT_032bc4b0,*(undefined4 *)(*(int *)(param_1 + 0x10) + 0x40));
      local_140 = *(undefined4 *)(param_1 + 0x10);
      local_14c = CONCAT31(local_14c._1_3_,2);
      FUN_0043261a(param_1 + 0x14);
      cVar2 = (**(code **)(**(int **)(*(int *)(param_1 + 0x10) + 0x70) + 0x18))(local_148);
      if ((cVar2 == '\0') || (local_ec != '\0')) {
        iVar3 = FUN_008195e3();
        local_164 = *(int *)(iVar3 + 4);
        local_158 = 0;
        if (0 < local_164) {
          do {
            ppiVar5 = (int **)FUN_004562d1(local_158);
            piVar1 = local_15c;
            (**(code **)(**ppiVar5 + 0xc))(*ppiVar5,local_160,local_15c);
            if (*piVar1 != 0) break;
            local_158 = local_158 + 1;
          } while (local_158 < local_164);
        }
      }
      else {
        *local_15c = 1;
      }
      local_14c = local_14c & 0xffffff00;
      FUN_0081b764();
    }
    local_14c = 0xffffffff;
    FUN_0081f6e7(local_174);
  }
  ExceptionList = local_154;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0081c9ec(int param_1,undefined4 param_2,undefined4 param_3,char **param_4,uint *param_5)

{
  char cVar1;
  char *pcVar2;
  undefined4 *puVar3;
  char *pcVar4;
  uint *local_1a0;
  undefined local_19c [8];
  undefined4 local_194;
  char local_178;
  char local_dc;
  undefined local_b4 [88];
  undefined local_5c [56];
  int local_24;
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 400;
  local_8 = 0x81c9fb;
  local_1a0 = param_5;
  if (*(int *)(param_1 + 0x10) == 0) {
    *param_5 = 0;
  }
  else {
    FUN_00853800(local_5c,param_2);
    local_8 = 0;
    FUN_008510e0();
    FUN_0081b6ad(DAT_032bc560,*(undefined4 *)(*(int *)(param_1 + 0x10) + 0x40));
    local_194 = *(undefined4 *)(param_1 + 0x10);
    local_8._0_1_ = 1;
    FUN_0043261a(local_5c);
    FUN_0043261a(param_1 + 0x14);
    cVar1 = (**(code **)(**(int **)(*(int *)(param_1 + 0x10) + 0x70) + 0x18))(local_19c);
    if ((cVar1 == '\0') || (local_178 != '\0')) {
      (**(code **)(**(int **)(param_1 + 0x3c) + 0x18))
                (*(int **)(param_1 + 0x3c),param_2,param_3,param_4,local_1a0);
    }
    else {
      *local_1a0 = (uint)(local_dc != '\0');
      basic_string<>(local_b4);
      local_1c = 0;
      local_8._0_1_ = 2;
      FUN_008510e0();
      if (local_24 != 0) {
        cVar1 = FUN_00432636(local_5c,1);
        if (cVar1 == '\0') {
          pcVar2 = (char *)FUN_0081f619(local_24 + 1);
          *param_4 = pcVar2;
          puVar3 = (undefined4 *)FUN_0043242d(&local_1a0);
          pcVar2 = *(char **)*puVar3;
          pcVar4 = *param_4;
          do {
            cVar1 = *pcVar2;
            pcVar2 = pcVar2 + 1;
            *pcVar4 = cVar1;
            pcVar4 = pcVar4 + 1;
          } while (cVar1 != '\0');
          FUN_0043c1dd();
        }
      }
      FUN_0040159c();
    }
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_0081b764();
    FUN_0040159c();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0081cb60(undefined4 param_1,undefined4 param_2,uint param_3,int **param_4)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  undefined local_190 [36];
  undefined4 local_16c;
  undefined4 local_168;
  undefined4 local_164;
  undefined4 local_160;
  void *local_15c;
  uint local_158;
  void *local_154;
  undefined4 local_14c;
  undefined4 local_148 [2];
  int local_140;
  char local_ec;
  uint local_3c;
  int local_38;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_148;
  local_148[0] = 0x3c;
  local_14c = 0x81cb84;
  uVar3 = 0;
  local_158 = 0;
  iVar1 = FUN_0081a9d5(param_2);
  if (iVar1 != 0) {
    if ((param_3 & 0x20000000) != 0) {
      uVar3 = 2;
    }
    if ((param_3 & 8) != 0) {
      uVar3 = uVar3 | 4;
    }
    if ((param_3 & 0x8000000) != 0) {
      uVar3 = uVar3 | 8;
    }
    FUN_0081b6ad(DAT_032bc4a4,*(undefined4 *)(iVar1 + 0x40));
    local_14c = 0;
    local_140 = iVar1;
    local_3c = uVar3;
    (**(code **)(**(int **)(iVar1 + 0x70) + 0x18))(local_148);
    if (local_ec != '\0') {
      if (local_38 == 0) {
        local_15c = operator_new(0x230);
        local_14c._0_1_ = 1;
        if (local_15c == (void *)0x0) {
          piVar2 = (int *)0x0;
        }
        else {
          FUN_004325b6(&DAT_00fae9c8);
          local_16c = 0x32;
          local_168 = 0x32;
          local_14c = CONCAT31(local_14c._1_3_,2);
          local_158 = 1;
          local_164 = 0x226;
          local_160 = 500;
          piVar2 = (int *)FUN_00820b09(0,0xffffffff,local_190,&local_16c,&local_164,0x20401e40);
        }
        local_14c = 0;
        if ((local_158 & 1) != 0) {
          FUN_0040159c();
        }
        iVar1 = FUN_00820ae6();
        (**(code **)(*piVar2 + 0xcc))(1);
        piVar2 = *(int **)(iVar1 + 0x198);
      }
      else {
        piVar2 = *(int **)(local_38 + 0x198);
      }
      *param_4 = piVar2;
      (**(code **)(*piVar2 + 4))(piVar2);
    }
    local_14c = 0xffffffff;
    FUN_0081b764();
  }
  ExceptionList = local_154;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0081ccf4(int param_1,int **param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined local_2c [16];
  undefined **local_1c;
  int *local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  iVar1 = param_1;
  uStack_4 = 0x1c;
  if (param_2 != (int **)0x0) {
    local_18 = (int *)0x0;
    local_1c = ns_smartptr<class_nsILocalFile>::vftable;
    local_8 = 0;
    FUN_004325d6(*(undefined4 *)(param_1 + 0x18));
    puVar2 = (undefined4 *)FUN_0043242d(&param_1);
    local_8._0_1_ = 1;
    FUN_0081f6d6(local_2c,*(undefined4 *)*puVar2,0xffffffff,2);
    local_8._0_1_ = 2;
    local_14 = FUN_0081f692(local_2c,1,&local_18);
    local_8._0_1_ = 1;
    FUN_0081f6e7(local_2c);
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_0043c1dd();
    if ((local_14 & 0x80000000) == 0) {
      *param_2 = local_18;
      (**(code **)(*local_18 + 4))(local_18);
      *(int *)(iVar1 + 0x18) = *(int *)(iVar1 + 0x18) + 1;
      local_8 = 0xffffffff;
      local_1c = ns_smartptr<class_nsILocalFile>::vftable;
      if (local_18 != (int *)0x0) {
        (**(code **)(*local_18 + 8))(local_18);
      }
      return 0;
    }
    local_8 = 0xffffffff;
    local_1c = ns_smartptr<class_nsILocalFile>::vftable;
    if (local_18 != (int *)0x0) {
      (**(code **)(*local_18 + 8))(local_18);
    }
  }
  return 0x80004003;
}



void __thiscall FUN_0081ce15(int param_1_00,uint param_1)

{
  char cVar1;
  ushort *puVar2;
  uint uVar3;
  int local_c;
  int iStack_8;
  
  local_c = param_1_00;
  iStack_8 = param_1_00;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(param_1_00 + 0x6c) != '\0')) {
    FUN_00840480(s_______src_webcontrol_cpp_00d1e9f8,0x62e,"GeckoEngine::SetStoragePath","!m_ok",
                 L"This must be called before the first wxWebControl is instantiated");
  }
  FUN_0043261a(param_1);
  puVar2 = (ushort *)FUN_0081b66e(&param_1,0);
  param_1 = (uint)*puVar2;
  FUN_0043261a(param_1_00 + 0x24);
  if (*(int *)(param_1_00 + 0x5c) != 0) {
    uVar3 = param_1;
    FUN_0081b3d8(&local_c);
    cVar1 = FUN_0081b52b(uVar3);
    if (cVar1 == '\0') goto LAB_0081cea3;
  }
  FUN_0081c19f(param_1);
LAB_0081cea3:
  FUN_00473d8f(L"data01.dat");
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __thiscall FUN_0081ceb6(int param_1_00,int *param_1)

{
  char cVar1;
  undefined4 uVar2;
  ushort *puVar3;
  int *piVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  undefined local_f8 [36];
  undefined local_d4 [40];
  int *local_ac;
  undefined local_a8 [16];
  undefined **local_98;
  int *local_94;
  undefined **local_90;
  int *local_8c;
  undefined **local_88;
  int *local_84;
  void *local_80;
  undefined4 local_78;
  undefined4 local_74 [15];
  undefined4 local_38;
  undefined4 local_34;
  undefined local_2c [20];
  int local_18;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_74;
  local_74[0] = 0x9c;
  local_78 = 0x81ced7;
  if (*(char *)(param_1_00 + 0x1c8) != '\0') goto LAB_0081d15a;
  *(char *)(param_1_00 + 0x1c8) = '\x01';
  FUN_0081f6c5(local_a8);
  local_78 = 0;
  local_38 = 7;
  FUN_0040180b(0);
  local_34 = 0;
  local_78._0_1_ = 1;
  local_8c = param_1;
  FUN_00819bf2(&local_8c);
  piVar4 = local_ac;
  local_78._0_1_ = 2;
  (**(code **)(*local_ac + 0xc))(local_ac,local_a8);
  uVar2 = FUN_00820057(local_d4,local_a8);
  local_78._0_1_ = 3;
  FUN_0043261a(uVar2);
  local_78._0_1_ = 2;
  FUN_0040159c();
  uVar2 = FUN_0081fd2e(&local_90,"@mozilla.org/embedding/browser/nsWebBrowserPersist;1");
  local_78._0_1_ = 4;
  FUN_00819fa2(uVar2);
  local_78._0_1_ = 6;
  local_90 = ns_smartptr<class_nsISupports>::vftable;
  if (local_8c != (int *)0x0) {
    (**(code **)(*local_8c + 8))(local_8c);
  }
  if (local_84 == (int *)0x0) {
    local_88 = ns_smartptr<class_nsIWebBrowserPersist>::vftable;
    iVar5 = *piVar4;
    local_ac = piVar4;
  }
  else {
    FUN_0081c337(local_2c);
    local_78 = CONCAT31(local_78._1_3_,7);
    puVar3 = (ushort *)FUN_0081b66e(&local_8c,0);
    uVar6 = (uint)*puVar3;
    if (local_18 == 0) {
LAB_0081cfe2:
      FID_conflict_append(1,uVar6);
    }
    else {
      uVar7 = uVar6;
      FUN_0081b3d8(&local_90);
      cVar1 = FUN_0081b52b(uVar7);
      if (cVar1 != '\0') goto LAB_0081cfe2;
    }
    FUN_00473d8f(L"favicons");
    cVar1 = FUN_00857710(local_2c);
    if (cVar1 == '\0') {
      FUN_00859730(local_2c,0x1ff,0);
    }
    local_8c = (int *)FUN_004325b6(&DAT_00d1f930);
    local_78._0_1_ = 8;
    uVar2 = FUN_0081b5f9(local_f8,local_2c,uVar6);
    local_78._0_1_ = 9;
    uVar2 = FUN_008531f0(local_d4,uVar2,local_8c);
    local_78._0_1_ = 10;
    FUN_0085be30(local_74,uVar2);
    FUN_0040159c();
    FUN_0040159c();
    local_78._0_1_ = 0xe;
    FUN_0040159c();
    FUN_008201f2(&local_98,local_74);
    local_78 = CONCAT31(local_78._1_3_,0xf);
    FUN_0043261a(local_74);
    piVar4 = (int *)FUN_0081ffd6(*(undefined4 *)(param_1_00 + 0x1b8));
    FUN_00819624(piVar4);
    (**(code **)(*local_84 + 0x24))(local_84,piVar4);
    (**(code **)(*piVar4 + 8))(piVar4);
    iVar5 = (**(code **)(*local_84 + 0x28))(local_84,local_ac,0,0,0,0,local_94);
    if (iVar5 < 0) {
      (**(code **)(*local_84 + 0x24))(local_84,0);
    }
    local_98 = ns_smartptr<class_nsILocalFile>::vftable;
    local_78._0_1_ = 0xe;
    if (local_94 != (int *)0x0) {
      (**(code **)(*local_94 + 8))(local_94);
    }
    FUN_0040159c();
    FUN_0040159c();
    local_88 = ns_smartptr<class_nsIWebBrowserPersist>::vftable;
    local_78._0_1_ = 2;
    if (local_84 != (int *)0x0) {
      (**(code **)(*local_84 + 8))(local_84);
    }
    iVar5 = *local_ac;
  }
  local_78 = CONCAT31(local_78._1_3_,1);
  (**(code **)(iVar5 + 8))(local_ac);
  FUN_0040159c();
  local_78 = 0xffffffff;
  FUN_0081f6e7(local_a8);
LAB_0081d15a:
  ExceptionList = local_80;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_0081d179(int param_1_00,undefined4 param_1)

{
  FUN_004325a0(*(int *)(param_1_00 + 0x1bc) + 0x14);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_0081d19a(undefined4 param_1)

{
  undefined **local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_14 = 0;
  local_18 = 0;
  local_1c = wxMBConvUTF8::vftable;
  local_8 = 1;
  FUN_00432413(param_1,&local_1c);
  local_14 = 1;
  local_8 = local_8 & 0xffffff00;
  FUN_008603c0();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_0081d1e1(int param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined local_2f4 [16];
  undefined local_2e4 [16];
  undefined local_2d4 [36];
  undefined **local_2b0;
  int *local_2ac;
  undefined **local_2a8;
  int *local_2a4;
  undefined local_2a0 [16];
  undefined **local_290;
  int *local_28c;
  undefined local_288 [16];
  undefined **local_278;
  int *local_274;
  uint local_270;
  undefined local_26c [16];
  undefined **local_25c;
  int *local_258;
  undefined **local_254;
  int *local_250;
  undefined **local_24c;
  int *local_248;
  undefined **local_244;
  int *local_240;
  undefined **local_23c;
  int *local_238;
  undefined **local_234;
  int *local_230;
  void *local_22c;
  undefined4 local_224;
  undefined4 local_220 [2];
  undefined4 local_218;
  undefined local_e0 [36];
  undefined local_bc [24];
  undefined4 local_a4;
  undefined4 local_a0;
  undefined local_98 [24];
  undefined4 local_80;
  undefined4 local_7c;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_2c [36];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_220;
  local_220[0] = 200;
  local_224 = 0x81d208;
  local_240 = param_2;
  if (*(int *)(param_1 + 0x10) == 0) goto LAB_0081dbff;
  FUN_0081f664(local_288);
  local_224 = 0;
  (**(code **)(*param_2 + 0xc))(param_2,local_288);
  FUN_008200b0(local_2c,local_288);
  local_224._0_1_ = 1;
  FUN_008507a0(L"dragdrop");
  iVar1 = FUN_008507a0(L"DOMContentLoaded");
  if (iVar1 == 0) {
    FUN_0081bfc2();
    local_234 = ns_smartptr<class_nsIURI>::vftable;
    local_230 = (int *)0x0;
    local_25c = ns_smartptr<class_nsIURI>::vftable;
    local_258 = (int *)0x0;
    piVar3 = *(int **)(*(int *)(*(int *)(param_1 + 0x10) + 0x194) + 0x1c);
    local_224._0_1_ = 3;
    (**(code **)(*piVar3 + 0x30))(piVar3,&local_230);
    if (local_230 != (int *)0x0) {
      local_238 = (int *)0x0;
      (**(code **)(*local_230 + 0x5c))(local_230,"https",&local_238);
      if ((local_238 == (int *)0x0) &&
         ((**(code **)(*local_230 + 0x5c))(local_230,&DAT_00d1fa70,&local_238),
         local_238 == (int *)0x0)) {
        FUN_0081f6c5(local_26c);
        piVar3 = local_230;
        local_224._0_1_ = 4;
        FUN_0081f6d6(local_2a0,"/favicon.ico",0xffffffff,2);
        local_224._0_1_ = 5;
        (**(code **)(*piVar3 + 100))(piVar3,local_2a0,local_26c);
        local_224._0_1_ = 4;
        FUN_0081f6e7(local_2a0);
        uVar2 = FUN_00820057(local_e0,local_26c);
        local_224._0_1_ = 6;
        uVar2 = FUN_0082027a(&local_24c,uVar2);
        local_224._0_1_ = 7;
        FUN_008199fd(uVar2);
        local_224._0_1_ = 6;
        local_24c = ns_smartptr<class_nsIURI>::vftable;
        if (local_248 != (int *)0x0) {
          (**(code **)(*local_248 + 8))(local_248);
        }
        local_224._0_1_ = 4;
        FUN_0040159c();
        piVar3 = local_258;
        if (local_258 != (int *)0x0) {
          FUN_0081ceb6(local_258);
          local_224._0_1_ = 3;
          FUN_0081f6e7(local_26c);
          local_224._0_1_ = 2;
          (**(code **)(*piVar3 + 8))(piVar3);
          local_224._0_1_ = 1;
          local_234 = ns_smartptr<class_nsIURI>::vftable;
          if (local_230 != (int *)0x0) {
            (**(code **)(*local_230 + 8))(local_230);
          }
          goto LAB_0081d3e2;
        }
        local_224._0_1_ = 3;
        FUN_0081f6e7(local_26c);
        local_234 = ns_smartptr<class_nsIURI>::vftable;
        piVar3 = local_230;
      }
      else {
        local_234 = ns_smartptr<class_nsIURI>::vftable;
        piVar3 = local_230;
      }
      goto LAB_0081dbd8;
    }
    local_234 = ns_smartptr<class_nsIURI>::vftable;
  }
  else {
LAB_0081d3e2:
    iVar1 = FUN_008507a0(L"DOMLinkAdded");
    if (iVar1 == 0) {
      local_238 = (int *)0x0;
      local_23c = ns_smartptr<class_nsIDOMEventTarget>::vftable;
      local_224._0_1_ = 8;
      (**(code **)(*local_240 + 0x10))(local_240,&local_238);
      FUN_008197b4(&local_23c);
      local_224._0_1_ = 9;
      if (local_230 == (int *)0x0) {
        local_234 = ns_smartptr<class_nsIDOMElement>::vftable;
      }
      else {
        FUN_0081f664(local_26c);
        local_5c = 7;
        FUN_0040180b(0);
        local_58 = 0;
        local_38 = 7;
        FUN_0040180b(0);
        local_34 = 0;
        local_a4 = 7;
        FUN_0040180b(0);
        local_a0 = 0;
        local_80 = 7;
        FUN_0040180b(0);
        local_7c = 0;
        local_224._0_1_ = 0xe;
        (**(code **)(*local_230 + 0x70))(local_230,local_26c);
        uVar2 = FUN_008200b0(local_2d4,local_26c);
        local_224._0_1_ = 0xf;
        FUN_0043261a(uVar2);
        local_224._0_1_ = 0xe;
        FUN_0040159c();
        FUN_008510e0();
        iVar1 = FUN_008507a0(L"link");
        piVar3 = local_230;
        if (iVar1 == 0) {
          FUN_0081f675(local_2a0,&DAT_00d1fa4c,0xffffffff,2);
          local_224._0_1_ = 0x10;
          (**(code **)(*piVar3 + 0x74))(piVar3,local_2a0,local_26c);
          local_224._0_1_ = 0xe;
          FUN_0081f686(local_2a0);
          uVar2 = FUN_008200b0(local_2d4,local_26c);
          local_224._0_1_ = 0x11;
          FUN_0043261a(uVar2);
          local_224._0_1_ = 0xe;
          FUN_0040159c();
          FUN_008510e0();
          iVar1 = FUN_008507a0(L"shortcut icon");
          if ((iVar1 == 0) || (iVar1 = FUN_008507a0(L"icon"), iVar1 == 0)) {
            piVar3 = local_230;
            FUN_0081f675(local_2a0,L"href",0xffffffff,2);
            local_224._0_1_ = 0x12;
            (**(code **)(*piVar3 + 0x74))(piVar3,local_2a0,local_26c);
            local_224._0_1_ = 0xe;
            FUN_0081f686(local_2a0);
            uVar2 = FUN_008200b0(local_2d4,local_26c);
            local_224._0_1_ = 0x13;
            FUN_0043261a(uVar2);
            FUN_0040159c();
            local_240 = (int *)0x0;
            local_244 = ns_smartptr<class_nsIDOMDocument>::vftable;
            local_224._0_1_ = 0x14;
            (**(code **)(*local_230 + 0x38))(local_230,&local_240);
            FUN_00819c28(&local_244);
            local_224._0_1_ = 0x15;
            if (local_2a4 != (int *)0x0) {
              (**(code **)(*local_2a4 + 0x5c))(local_2a4,local_26c);
              uVar2 = FUN_008200b0(local_2d4,local_26c);
              local_224._0_1_ = 0x16;
              FUN_0043261a(uVar2);
              local_224._0_1_ = 0x15;
              FUN_0040159c();
              FUN_0081f6c5(local_2e4);
              local_224._0_1_ = 0x17;
              FUN_0081f6c5(local_2f4);
              local_224._0_1_ = 0x18;
              FUN_008201b5(local_bc,local_2e4);
              FUN_0082027a(&local_24c,local_98);
              local_224._0_1_ = 0x19;
              (**(code **)(*local_248 + 100))(local_248,local_2e4,local_2f4);
              FUN_00820057(local_e0,local_2f4);
              local_224._0_1_ = 0x1a;
              FUN_0082027a(&local_2b0,local_e0);
              local_224._0_1_ = 0x1b;
              FUN_0081ceb6(local_2ac);
              local_224._0_1_ = 0x1a;
              local_2b0 = ns_smartptr<class_nsIURI>::vftable;
              if (local_2ac != (int *)0x0) {
                (**(code **)(*local_2ac + 8))(local_2ac);
              }
              FUN_0040159c();
              local_224._0_1_ = 0x18;
              local_24c = ns_smartptr<class_nsIURI>::vftable;
              if (local_248 != (int *)0x0) {
                (**(code **)(*local_248 + 8))(local_248);
              }
              local_224._0_1_ = 0x17;
              FUN_0081f6e7(local_2f4);
              local_224._0_1_ = 0x15;
              FUN_0081f6e7(local_2e4);
              local_224._0_1_ = 0x14;
              local_2a8 = ns_smartptr<class_nsIDOM3Document>::vftable;
              if (local_2a4 != (int *)0x0) {
                (**(code **)(*local_2a4 + 8))(local_2a4);
              }
              local_224._0_1_ = 0xe;
              local_244 = ns_smartptr<class_nsIDOMDocument>::vftable;
              if (local_240 != (int *)0x0) {
                (**(code **)(*local_240 + 8))(local_240);
              }
              FUN_0040159c();
              FUN_0040159c();
              FUN_0040159c();
              FUN_0040159c();
              local_224._0_1_ = 9;
              FUN_0081f686(local_26c);
              local_224._0_1_ = 8;
              local_234 = ns_smartptr<class_nsIDOMElement>::vftable;
              if (local_230 != (int *)0x0) {
                (**(code **)(*local_230 + 8))(local_230);
              }
              local_224 = CONCAT31(local_224._1_3_,1);
              local_23c = ns_smartptr<class_nsIDOMEventTarget>::vftable;
              if (local_238 != (int *)0x0) {
                (**(code **)(*local_238 + 8))(local_238);
              }
              goto LAB_0081d8ac;
            }
            local_2a8 = ns_smartptr<class_nsIDOM3Document>::vftable;
            local_224._0_1_ = 0xe;
            local_244 = ns_smartptr<class_nsIDOMDocument>::vftable;
            if (local_240 != (int *)0x0) {
              (**(code **)(*local_240 + 8))(local_240);
            }
          }
        }
        FUN_0040159c();
        FUN_0040159c();
        FUN_0040159c();
        FUN_0040159c();
        local_224._0_1_ = 9;
        FUN_0081f686(local_26c);
        local_224._0_1_ = 8;
        local_234 = ns_smartptr<class_nsIDOMElement>::vftable;
        if (local_230 != (int *)0x0) {
          (**(code **)(*local_230 + 8))(local_230);
        }
      }
      local_23c = ns_smartptr<class_nsIDOMEventTarget>::vftable;
      piVar3 = local_238;
    }
    else {
      iVar1 = FUN_008507a0(L"mousedown");
      if ((((iVar1 != 0) && (iVar1 = FUN_008507a0(L"mouseup"), iVar1 != 0)) &&
          (iVar1 = FUN_008507a0(L"dblclick"), iVar1 != 0)) &&
         (iVar1 = FUN_008507a0(L"dragdrop"), iVar1 != 0)) {
        FUN_0040159c();
        local_224 = 0xffffffff;
        FUN_0081f686(local_288);
        goto LAB_0081dbff;
      }
      iVar1 = FUN_008507a0(L"mousedown");
      if ((iVar1 == 0) && (iVar1 = FUN_0091ac40(), iVar1 != *(int *)(param_1 + 0x10))) {
        (**(code **)(**(int **)(param_1 + 0x10) + 0x100))();
      }
      piVar3 = local_240;
      local_250 = (int *)0x0;
      local_254 = ns_smartptr<class_nsIDOMEventTarget>::vftable;
      local_224._0_1_ = 0x1c;
      (**(code **)(*local_240 + 0x10))(local_240,&local_250);
      local_24c = nsToSmart::vftable;
      local_248 = piVar3;
      FUN_00819c5c(&local_24c);
      local_224 = CONCAT31(local_224._1_3_,0x1d);
      if (local_258 == (int *)0x0) {
        local_25c = ns_smartptr<class_nsIDOMMouseEvent>::vftable;
        local_224 = CONCAT31(local_224._1_3_,1);
        local_254 = ns_smartptr<class_nsIDOMEventTarget>::vftable;
        if (local_250 != (int *)0x0) {
          (**(code **)(*local_250 + 8))(local_250);
        }
LAB_0081d8ac:
        FUN_0040159c();
        local_224 = 0xffffffff;
        FUN_0081f686(local_288);
        goto LAB_0081dbff;
      }
      local_270 = 0;
      (**(code **)(*local_258 + 0x60))(local_258,&local_270);
      iVar1 = FUN_008507a0(L"mousedown");
      if (iVar1 == 0) {
        piVar3 = DAT_032bc44c;
        if (((local_270 & 0xffff) != 1) && (piVar3 = DAT_032bc448, (local_270 & 0xffff) != 2)) {
          piVar3 = DAT_032bc4ac;
        }
      }
      else {
        iVar1 = FUN_008507a0(L"mouseup");
        if (iVar1 == 0) {
          piVar3 = DAT_032bc55c;
          if (((local_270 & 0xffff) != 1) && (piVar3 = DAT_032bc428, (local_270 & 0xffff) != 2)) {
            piVar3 = DAT_032bc4a8;
          }
        }
        else {
          iVar1 = FUN_008507a0(L"dblclick");
          piVar3 = DAT_032bc558;
          if (((iVar1 != 0) &&
              (iVar1 = FUN_008507a0(L"dragdrop"), piVar3 = DAT_032bc564, iVar1 != 0)) &&
             (piVar3 = local_238, PTR_FUN_03235c4c != (undefined *)0x0)) {
            FUN_00840480(s_______src_webcontrol_cpp_00d1e9f8,0x37d,"BrowserChrome::HandleEvent",
                         "Assert failure",
                         L"NS event type needs to be mapped to wxWebConnect event type");
            piVar3 = local_238;
          }
        }
      }
      local_238 = piVar3;
      local_274 = (int *)0x0;
      local_278 = ns_smartptr<class_nsIDOMNode>::vftable;
      local_224._0_1_ = 0x1e;
      FUN_00819733(&local_254);
      local_274 = (int *)FUN_0081a38a(local_274);
      local_28c = (int *)0x0;
      local_290 = ns_smartptr<class_nsIDOMHTMLAnchorElement>::vftable;
      local_224._0_1_ = 0x1f;
      FUN_00819891(&local_278);
      FUN_0081b6ad(local_238,*(undefined4 *)(*(int *)(param_1 + 0x10) + 0x40));
      local_224._0_1_ = 0x20;
      FUN_0081a2a5(local_250);
      local_218 = *(undefined4 *)(param_1 + 0x10);
      if (local_28c != (int *)0x0) {
        FUN_0081f664(local_2a0);
        local_224._0_1_ = 0x21;
        (**(code **)(*local_28c + 0xf0))(local_28c,local_2a0);
        uVar2 = FUN_008200b0(local_2d4,local_2a0);
        local_224._0_1_ = 0x22;
        FUN_0043261a(uVar2);
        local_224._0_1_ = 0x21;
        FUN_0040159c();
        FUN_0081965c();
        local_224._0_1_ = 0x20;
        FUN_0081f686(local_2a0);
      }
      (**(code **)(**(int **)(*(int *)(param_1 + 0x10) + 0x70) + 0x18))(local_220);
      local_224._0_1_ = 0x1f;
      FUN_0081b764();
      local_224._0_1_ = 0x1e;
      local_290 = ns_smartptr<class_nsIDOMHTMLAnchorElement>::vftable;
      if (local_28c != (int *)0x0) {
        (**(code **)(*local_28c + 8))(local_28c);
      }
      local_224._0_1_ = 0x1d;
      local_278 = ns_smartptr<class_nsIDOMNode>::vftable;
      if (local_274 != (int *)0x0) {
        (**(code **)(*local_274 + 8))(local_274);
      }
      local_224._0_1_ = 0x1c;
      local_25c = ns_smartptr<class_nsIDOMMouseEvent>::vftable;
      if (local_258 != (int *)0x0) {
        (**(code **)(*local_258 + 8))(local_258);
      }
      local_254 = ns_smartptr<class_nsIDOMEventTarget>::vftable;
      piVar3 = local_250;
    }
LAB_0081dbd8:
    local_224._0_1_ = 1;
    if (piVar3 != (int *)0x0) {
      (**(code **)(*piVar3 + 8))(piVar3);
    }
  }
  FUN_0040159c();
  local_224 = 0xffffffff;
  FUN_0081f686(local_288);
LAB_0081dbff:
  ExceptionList = local_22c;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void __fastcall FUN_0081dc24(int param_1)

{
  ushort uVar1;
  char cVar2;
  undefined uVar3;
  int *piVar4;
  ushort *puVar5;
  undefined4 *puVar6;
  char *pcVar7;
  uint uVar8;
  undefined4 uVar9;
  bool bVar10;
  undefined local_154 [16];
  undefined local_144 [8];
  undefined **local_13c;
  int *local_138;
  undefined local_134 [4];
  undefined **local_130;
  int *local_12c;
  undefined **local_128;
  int *local_124;
  undefined4 *local_120;
  undefined **local_11c;
  int *local_118;
  undefined **local_114;
  int *local_110;
  undefined **local_10c;
  int *local_108;
  undefined **local_104;
  int *local_100;
  undefined **local_fc;
  int *local_f8;
  undefined **local_f4;
  int *local_f0;
  undefined **local_ec;
  int *local_e8;
  undefined4 local_e4;
  undefined **local_e0;
  int *local_dc;
  undefined **local_d8;
  int *local_d4;
  undefined **local_d0;
  int *local_cc;
  undefined **local_c8;
  int *local_c4;
  void *local_c0;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 ****local_b0 [4];
  int local_a0;
  uint local_9c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_90 [4];
  undefined4 ****local_8c [5];
  uint local_78;
  undefined4 local_74;
  undefined2 local_70;
  undefined2 local_6e;
  undefined local_6c;
  undefined local_6b;
  undefined local_6a;
  undefined local_69;
  undefined local_68;
  undefined local_67;
  undefined local_66;
  undefined local_65;
  undefined4 local_64;
  undefined2 local_60;
  undefined2 local_5e;
  undefined local_5c;
  undefined local_5b;
  undefined local_5a;
  undefined local_59;
  undefined local_58;
  undefined local_57;
  undefined local_56;
  undefined local_55;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_54 [4];
  undefined4 ****local_50 [4];
  int local_40;
  uint local_3c;
  undefined4 local_38;
  undefined2 local_34;
  undefined2 local_32;
  undefined local_30;
  undefined local_2f;
  undefined local_2e;
  undefined local_2d;
  undefined local_2c;
  undefined local_2b;
  undefined local_2a;
  undefined local_29;
  undefined4 local_28;
  undefined2 local_24;
  undefined2 local_22;
  undefined local_20;
  undefined local_1f;
  undefined local_1e;
  undefined local_1d;
  undefined local_1c;
  undefined local_1b;
  undefined local_1a;
  undefined local_19;
  undefined4 local_18;
  undefined2 local_14;
  undefined2 local_12;
  undefined local_10;
  undefined local_f;
  undefined local_e;
  undefined local_d;
  undefined local_c;
  undefined local_b;
  undefined local_a;
  undefined local_9;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&local_b4;
  local_b4 = 0x94;
  local_b8 = 0x81dc4b;
  cVar2 = FUN_008195df();
  if ((cVar2 != '\0') || (*(int *)(param_1 + 0x14) == 0)) goto LAB_0081e85e;
  if (*(int *)(param_1 + 0x38) == 0) {
    uVar3 = FUN_00819297(0);
    local_e4 = CONCAT31(local_e4._1_3_,uVar3);
    local_b8 = 0;
    piVar4 = (int *)FUN_0085bf20();
    (**(code **)(*piVar4 + 0x30))(&local_b4);
    local_b8 = CONCAT31(local_b8._1_3_,1);
    puVar5 = (ushort *)FUN_0081b66e(local_134,0);
    uVar1 = *puVar5;
    if (local_a0 == 0) {
LAB_0081dcc1:
      FID_conflict_append(1,(uint)uVar1);
    }
    else {
      uVar8 = (uint)uVar1;
      FUN_0081b3d8(&local_13c);
      cVar2 = FUN_0081b52b(uVar8);
      if (cVar2 != '\0') goto LAB_0081dcc1;
    }
    FUN_00473d8f(L"kwkh01.tmp");
    if (local_9c < 8) {
      local_b0[0] = local_b0;
    }
    FUN_00a42684(local_b0[0]);
    FUN_0043261a(&local_b4);
    FUN_0040159c();
    local_b8 = 0xffffffff;
    FUN_00819297(local_e4);
  }
  FUN_0081ce15(param_1 + 0x24);
  puVar6 = (undefined4 *)FUN_0081b66e(&local_120,0);
  uVar3 = FUN_0081a0f2(*puVar6);
  local_e4 = CONCAT31(local_e4._1_3_,uVar3);
  puVar6 = (undefined4 *)FUN_0043242d(&local_120);
  local_b8 = 2;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_90,*(char **)*puVar6);
  local_b8._0_1_ = 4;
  FUN_0043c1dd();
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_54,local_90);
  local_b8 = CONCAT31(local_b8._1_3_,5);
  if (local_40 == 0) {
LAB_0081dd84:
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (local_54,1,(char)local_e4);
  }
  else {
    pcVar7 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
             operator[](local_54,local_40 - 1);
    if (*pcVar7 != (char)local_e4) goto LAB_0081dd84;
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_54,"xpcom.dll");
  if (local_3c < 0x10) {
    local_50[0] = local_50;
  }
  uVar8 = FUN_00820612(local_50[0]);
  if ((uVar8 & 0x80000000) == 0) {
    local_c8 = ns_smartptr<class_nsILocalFile>::vftable;
    local_c4 = (int *)0x0;
    local_b8._0_1_ = 6;
    if (local_78 < 0x10) {
      local_8c[0] = local_8c;
    }
    FUN_0081f6d6(local_144,local_8c[0],0xffffffff,2);
    local_b8._0_1_ = 7;
    local_e4 = FUN_0081f692(local_144,1,&local_c4);
    local_b8._0_1_ = 6;
    FUN_0081f6e7(local_144);
    if (((local_e4 & 0x80000000) != 0) ||
       (uVar8 = FUN_0081f608(0,local_c4,0), (uVar8 & 0x80000000) != 0)) {
LAB_0081de27:
      local_b8 = CONCAT31(local_b8._1_3_,5);
      local_c8 = ns_smartptr<class_nsILocalFile>::vftable;
      if (local_c4 != (int *)0x0) {
        (**(code **)(*local_c4 + 8))(local_c4);
      }
      goto LAB_0081ddba;
    }
    local_24 = 0xc051;
    local_22 = 0x11d1;
    local_28 = 0x2d96b3df;
    local_20 = 0xa8;
    local_1f = 0x27;
    local_1e = 0;
    local_1d = 0x40;
    local_1c = 0x95;
    local_1b = 0x9a;
    local_1a = 0x28;
    local_19 = 0xc9;
    uVar9 = FUN_0081fd9f(&local_11c,&local_28);
    local_b8._0_1_ = 8;
    FUN_00819bb3(uVar9);
    local_b8 = CONCAT31(local_b8._1_3_,6);
    local_11c = ns_smartptr<class_nsISupports>::vftable;
    if (local_118 != (int *)0x0) {
      (**(code **)(*local_118 + 8))(local_118);
    }
    piVar4 = *(int **)(param_1 + 0x80);
    if (piVar4 != (int *)0x0) {
      (**(code **)(*piVar4 + 0xc))(piVar4,0,0);
      (**(code **)(**(int **)(param_1 + 0x80) + 0x14))(*(int **)(param_1 + 0x80));
    }
    FUN_0081f8d4(&local_e0);
    local_b8._0_1_ = 9;
    if (local_dc == (int *)0x0) {
      local_e0 = ns_smartptr<class_nsIWindowWatcher>::vftable;
      goto LAB_0081de27;
    }
    local_120 = (undefined4 *)operator_new(8);
    if (local_120 == (undefined4 *)0x0) {
      local_120 = (undefined4 *)0x0;
    }
    else {
      *local_120 = WindowCreator::vftable;
      local_120[1] = 0;
    }
    FUN_00819dbc(&local_120);
    local_b8._0_1_ = 10;
    (**(code **)(*local_dc + 0x24))(local_dc,local_118);
    local_d0 = ns_smartptr<class_nsIComponentRegistrar>::vftable;
    local_cc = (int *)0x0;
    local_b8._0_1_ = 0xb;
    uVar8 = FUN_0081f653(&local_cc);
    if ((uVar8 & 0x80000000) != 0) {
      local_b8._0_1_ = 10;
      local_d0 = ns_smartptr<class_nsIComponentRegistrar>::vftable;
      if (local_cc != (int *)0x0) {
        (**(code **)(*local_cc + 8))(local_cc);
      }
      local_b8._0_1_ = 9;
      if (local_118 != (int *)0x0) {
        (**(code **)(*local_118 + 8))(local_118);
      }
      local_b8._0_1_ = 6;
      local_e0 = ns_smartptr<class_nsIWindowWatcher>::vftable;
      if (local_dc != (int *)0x0) {
        (**(code **)(*local_dc + 8))(local_dc);
      }
      goto LAB_0081de27;
    }
    local_d4 = (int *)0x0;
    local_d8 = ns_smartptr<class_nsIFactory>::vftable;
    local_b8._0_1_ = 0xc;
    FUN_0082105d(&local_d4);
    local_34 = 0xe28;
    local_32 = 0x421f;
    local_38 = 0xa2112d6a;
    local_30 = 0xb4;
    local_2f = 0x6a;
    local_2e = 0x25;
    local_2d = 0xc0;
    local_2c = 0xb3;
    local_2b = 8;
    local_2a = 0xcb;
    local_29 = 0xd0;
    (**(code **)(*local_cc + 0x14))
              (local_cc,&local_38,"Prompt Service","@mozilla.org/embedcomp/prompt-service;1",
               local_d4);
    FUN_00819af7();
    FUN_0082105d(&local_d4);
    local_70 = 0x1dd2;
    local_6e = 0x11b2;
    local_74 = 0x518e071f;
    local_6c = 0x93;
    local_6b = 0x7e;
    local_6a = 0xc4;
    local_69 = 0x5f;
    local_68 = 0x14;
    local_67 = 0xde;
    local_66 = 0xf7;
    local_65 = 0x78;
    (**(code **)(*local_cc + 0x14))
              (local_cc,&local_74,"PSM Dialog Impl","@mozilla.org/nsBadCertListener;1",local_d4);
    local_e8 = (int *)0x0;
    local_ec = ns_smartptr<class_nsIFactory>::vftable;
    local_b8._0_1_ = 0xd;
    FUN_00820caf(&local_e8);
    local_14 = 0x1dd1;
    local_12 = 0x11b2;
    local_18 = 0xe3fa9d0a;
    local_10 = 0xbd;
    local_f = 0xef;
    local_e = 0x8c;
    local_d = 0x72;
    local_c = 0xb;
    local_b = 0x59;
    local_a = 0x74;
    local_9 = 0x45;
    (**(code **)(*local_cc + 0x14))
              (local_cc,&local_18,"Transfer","@mozilla.org/transfer;1",local_e8);
    (**(code **)(*local_cc + 0x14))
              (local_cc,&local_18,"Transfer","@mozilla.org/download;1",local_e8);
    local_f0 = (int *)0x0;
    local_f4 = ns_smartptr<class_nsIFactory>::vftable;
    local_b8._0_1_ = 0xe;
    FUN_00820d09(&local_f0);
    local_60 = 0x3e9;
    local_5e = 0x11d3;
    local_64 = 0x42770b50;
    local_5c = 0x80;
    local_5b = 0x68;
    local_5a = 0;
    local_59 = 0x60;
    local_58 = 8;
    local_57 = 0x11;
    local_56 = 0xa9;
    local_55 = 0xc3;
    (**(code **)(*local_cc + 0x14))
              (local_cc,&local_64,"Helper App Launcher Dialog",
               "@mozilla.org/helperapplauncherdialog;1",local_f0);
    uVar9 = FUN_0081fa96(&local_13c);
    local_b8._0_1_ = 0xf;
    FUN_00819e1a(uVar9);
    local_b8._0_1_ = 0x11;
    local_13c = ns_smartptr<class_nsIProperties>::vftable;
    if (local_138 != (int *)0x0) {
      (**(code **)(*local_138 + 8))(local_138);
    }
    FUN_00819e4e(&local_10c);
    local_100 = (int *)0x0;
    local_104 = ns_smartptr<class_nsILocalFile>::vftable;
    local_b8._0_1_ = 0x13;
    puVar6 = (undefined4 *)FUN_0043242d(&local_120);
    local_b8._0_1_ = 0x14;
    FUN_0081f6d6(local_154,*(undefined4 *)*puVar6,0xffffffff,2);
    local_b8._0_1_ = 0x15;
    local_e4 = FUN_0081f692(local_154,1,&local_100);
    local_b8._0_1_ = 0x14;
    FUN_0081f6e7(local_154);
    local_b8._0_1_ = 0x13;
    FUN_0043c1dd();
    if (((local_e4 & 0x80000000) == 0) &&
       (uVar8 = (**(code **)(*local_f8 + 0x10))(local_f8,"UHist",local_100),
       (uVar8 & 0x80000000) == 0)) {
      local_110 = (int *)0x0;
      local_114 = ns_smartptr<class_nsILocalFile>::vftable;
      local_b8._0_1_ = 0x16;
      puVar6 = (undefined4 *)FUN_0043242d(local_134);
      local_b8._0_1_ = 0x17;
      FUN_0081f6d6(local_154,*(undefined4 *)*puVar6,0xffffffff,2);
      local_b8._0_1_ = 0x18;
      local_e4 = FUN_0081f692(local_154,1,&local_110);
      local_b8._0_1_ = 0x17;
      FUN_0081f6e7(local_154);
      local_b8._0_1_ = 0x16;
      FUN_0043c1dd();
      if (((local_e4 & 0x80000000) != 0) ||
         (uVar8 = (**(code **)(*local_f8 + 0x10))(local_f8,"ProfD",local_110),
         (uVar8 & 0x80000000) != 0)) {
        local_b8._0_1_ = 0x13;
        local_114 = ns_smartptr<class_nsILocalFile>::vftable;
        if (local_110 != (int *)0x0) {
          (**(code **)(*local_110 + 8))(local_110);
        }
        goto LAB_0081e280;
      }
      local_124 = (int *)0x0;
      local_128 = ns_smartptr<class_nsISimpleEnumerator>::vftable;
      local_b8._0_1_ = 0x19;
      uVar8 = (**(code **)(*local_f8 + 0xc))(local_f8,"APluginsDL",&DAT_0322d084,&local_124);
      if (((uVar8 & 0x80000000) != 0) || (local_124 == (int *)0x0)) {
        local_b8._0_1_ = 0x16;
        local_128 = ns_smartptr<class_nsISimpleEnumerator>::vftable;
        if (local_124 != (int *)0x0) {
          (**(code **)(*local_124 + 8))(local_124);
        }
        local_b8._0_1_ = 0x13;
        local_114 = ns_smartptr<class_nsILocalFile>::vftable;
        if (local_110 != (int *)0x0) {
          (**(code **)(*local_110 + 8))(local_110);
        }
        local_b8._0_1_ = 0x12;
        local_104 = ns_smartptr<class_nsILocalFile>::vftable;
        if (local_100 != (int *)0x0) {
          (**(code **)(*local_100 + 8))(local_100);
        }
        local_b8._0_1_ = 0x11;
        local_fc = ns_smartptr<class_nsIProperties>::vftable;
        if (local_f8 != (int *)0x0) {
          (**(code **)(*local_f8 + 8))(local_f8);
        }
        local_b8._0_1_ = 0xe;
        local_10c = ns_smartptr<class_nsIDirectoryService>::vftable;
        if (local_108 != (int *)0x0) {
          (**(code **)(*local_108 + 8))(local_108);
        }
        local_b8._0_1_ = 0xd;
        local_f4 = ns_smartptr<class_nsIFactory>::vftable;
        if (local_f0 != (int *)0x0) {
          (**(code **)(*local_f0 + 8))(local_f0);
        }
        local_b8._0_1_ = 0xc;
        local_ec = ns_smartptr<class_nsIFactory>::vftable;
        if (local_e8 != (int *)0x0) {
          (**(code **)(*local_e8 + 8))(local_e8);
        }
        local_b8._0_1_ = 0xb;
        local_d8 = ns_smartptr<class_nsIFactory>::vftable;
        if (local_d4 != (int *)0x0) {
          (**(code **)(*local_d4 + 8))(local_d4);
        }
        local_b8._0_1_ = 10;
        local_d0 = ns_smartptr<class_nsIComponentRegistrar>::vftable;
        if (local_cc != (int *)0x0) {
          (**(code **)(*local_cc + 8))(local_cc);
        }
        local_b8._0_1_ = 9;
        if (local_118 != (int *)0x0) {
          (**(code **)(*local_118 + 8))(local_118);
        }
        local_b8._0_1_ = 6;
        local_e0 = ns_smartptr<class_nsIWindowWatcher>::vftable;
        if (local_dc != (int *)0x0) {
          (**(code **)(*local_dc + 8))(local_dc);
        }
        goto LAB_0081e833;
      }
      FUN_0081bc66(local_124);
      uVar8 = (**(code **)(*local_108 + 0x10))(local_108,*(undefined4 *)(param_1 + 0x84));
      if ((uVar8 & 0x80000000) == 0) {
        bVar10 = local_124 == (int *)0x0;
        if (!bVar10) {
          FUN_0081f9b5(&local_130);
          local_b8._0_1_ = 0x1a;
          if (local_12c != (int *)0x0) {
            (**(code **)(*local_12c + 0x30))(local_12c,"security.warn_submit_insecure",0);
            (**(code **)(*local_12c + 0x40))(local_12c,"browser.history_expire_days",0);
            uVar9 = FUN_0081ff41(param_1 + 0x24);
            (**(code **)(*local_12c + 0x94))(local_12c,"browser.cache.disk.parent_directory",uVar9);
            thunk_FUN_0081f625(uVar9);
            *(bool *)(param_1 + 0x6d) = *(int *)(param_1 + 0x80) != 0;
            *(undefined *)(param_1 + 0x6c) = 1;
            local_b8._0_1_ = 0x19;
            local_130 = ns_smartptr<class_nsIPref>::vftable;
            if (local_12c != (int *)0x0) {
              (**(code **)(*local_12c + 8))(local_12c);
            }
            local_b8._0_1_ = 0x16;
            local_128 = ns_smartptr<class_nsISimpleEnumerator>::vftable;
            if (local_124 != (int *)0x0) {
              (**(code **)(*local_124 + 8))(local_124);
            }
            local_b8._0_1_ = 0x13;
            local_114 = ns_smartptr<class_nsILocalFile>::vftable;
            if (local_110 != (int *)0x0) {
              (**(code **)(*local_110 + 8))(local_110);
            }
            local_b8._0_1_ = 0x12;
            local_104 = ns_smartptr<class_nsILocalFile>::vftable;
            if (local_100 != (int *)0x0) {
              (**(code **)(*local_100 + 8))(local_100);
            }
            local_b8._0_1_ = 0x11;
            local_fc = ns_smartptr<class_nsIProperties>::vftable;
            if (local_f8 != (int *)0x0) {
              (**(code **)(*local_f8 + 8))(local_f8);
            }
            local_b8._0_1_ = 0xe;
            local_10c = ns_smartptr<class_nsIDirectoryService>::vftable;
            if (local_108 != (int *)0x0) {
              (**(code **)(*local_108 + 8))(local_108);
            }
            local_b8._0_1_ = 0xd;
            local_f4 = ns_smartptr<class_nsIFactory>::vftable;
            if (local_f0 != (int *)0x0) {
              (**(code **)(*local_f0 + 8))(local_f0);
            }
            local_b8._0_1_ = 0xc;
            local_ec = ns_smartptr<class_nsIFactory>::vftable;
            if (local_e8 != (int *)0x0) {
              (**(code **)(*local_e8 + 8))(local_e8);
            }
            local_b8._0_1_ = 0xb;
            local_d8 = ns_smartptr<class_nsIFactory>::vftable;
            if (local_d4 != (int *)0x0) {
              (**(code **)(*local_d4 + 8))(local_d4);
            }
            local_b8._0_1_ = 10;
            local_d0 = ns_smartptr<class_nsIComponentRegistrar>::vftable;
            if (local_cc != (int *)0x0) {
              (**(code **)(*local_cc + 8))(local_cc);
            }
            local_b8._0_1_ = 9;
            if (local_118 != (int *)0x0) {
              (**(code **)(*local_118 + 8))(local_118);
            }
            local_b8._0_1_ = 6;
            local_e0 = ns_smartptr<class_nsIWindowWatcher>::vftable;
            if (local_dc != (int *)0x0) {
              (**(code **)(*local_dc + 8))(local_dc);
            }
            local_b8 = CONCAT31(local_b8._1_3_,5);
            local_c8 = ns_smartptr<class_nsILocalFile>::vftable;
            if (local_c4 != (int *)0x0) {
              (**(code **)(*local_c4 + 8))(local_c4);
            }
            FUN_004017b2(1,0);
            FUN_004017b2(1,0);
            goto LAB_0081e85e;
          }
          local_130 = ns_smartptr<class_nsIPref>::vftable;
          goto LAB_0081e492;
        }
      }
      else {
LAB_0081e492:
        bVar10 = local_124 == (int *)0x0;
      }
      local_128 = ns_smartptr<class_nsISimpleEnumerator>::vftable;
      local_b8._0_1_ = 0x16;
      if (!bVar10) {
        (**(code **)(*local_124 + 8))(local_124);
      }
      local_114 = ns_smartptr<class_nsILocalFile>::vftable;
      local_b8._0_1_ = 0x13;
      if (local_110 != (int *)0x0) {
        (**(code **)(*local_110 + 8))(local_110);
      }
      local_104 = ns_smartptr<class_nsILocalFile>::vftable;
      local_b8._0_1_ = 0x12;
      if (local_100 != (int *)0x0) {
        (**(code **)(*local_100 + 8))(local_100);
      }
      local_fc = ns_smartptr<class_nsIProperties>::vftable;
      local_b8._0_1_ = 0x11;
      if (local_f8 != (int *)0x0) {
        (**(code **)(*local_f8 + 8))(local_f8);
      }
      local_10c = ns_smartptr<class_nsIDirectoryService>::vftable;
      local_b8._0_1_ = 0xe;
      if (local_108 != (int *)0x0) {
        (**(code **)(*local_108 + 8))(local_108);
      }
      local_f4 = ns_smartptr<class_nsIFactory>::vftable;
      local_b8._0_1_ = 0xd;
      if (local_f0 != (int *)0x0) {
        (**(code **)(*local_f0 + 8))(local_f0);
      }
      local_ec = ns_smartptr<class_nsIFactory>::vftable;
      local_b8._0_1_ = 0xc;
      if (local_e8 != (int *)0x0) {
        (**(code **)(*local_e8 + 8))(local_e8);
      }
      local_d8 = ns_smartptr<class_nsIFactory>::vftable;
      local_b8._0_1_ = 0xb;
      if (local_d4 != (int *)0x0) {
        (**(code **)(*local_d4 + 8))(local_d4);
      }
      local_d0 = ns_smartptr<class_nsIComponentRegistrar>::vftable;
      local_b8._0_1_ = 10;
      if (local_cc != (int *)0x0) {
        (**(code **)(*local_cc + 8))(local_cc);
      }
      local_b8._0_1_ = 9;
      if (local_118 != (int *)0x0) {
        (**(code **)(*local_118 + 8))(local_118);
      }
      local_e0 = ns_smartptr<class_nsIWindowWatcher>::vftable;
      local_b8._0_1_ = 6;
      if (local_dc != (int *)0x0) {
        (**(code **)(*local_dc + 8))(local_dc);
      }
      local_c8 = ns_smartptr<class_nsILocalFile>::vftable;
      local_b8 = CONCAT31(local_b8._1_3_,5);
      if (local_c4 != (int *)0x0) {
        (**(code **)(*local_c4 + 8))(local_c4);
      }
      FUN_004017b2(1,0);
    }
    else {
LAB_0081e280:
      local_104 = ns_smartptr<class_nsILocalFile>::vftable;
      local_b8._0_1_ = 0x12;
      if (local_100 != (int *)0x0) {
        (**(code **)(*local_100 + 8))(local_100);
      }
      local_fc = ns_smartptr<class_nsIProperties>::vftable;
      local_b8._0_1_ = 0x11;
      if (local_f8 != (int *)0x0) {
        (**(code **)(*local_f8 + 8))(local_f8);
      }
      local_10c = ns_smartptr<class_nsIDirectoryService>::vftable;
      local_b8._0_1_ = 0xe;
      if (local_108 != (int *)0x0) {
        (**(code **)(*local_108 + 8))(local_108);
      }
      local_f4 = ns_smartptr<class_nsIFactory>::vftable;
      local_b8._0_1_ = 0xd;
      if (local_f0 != (int *)0x0) {
        (**(code **)(*local_f0 + 8))(local_f0);
      }
      local_ec = ns_smartptr<class_nsIFactory>::vftable;
      local_b8._0_1_ = 0xc;
      if (local_e8 != (int *)0x0) {
        (**(code **)(*local_e8 + 8))(local_e8);
      }
      local_d8 = ns_smartptr<class_nsIFactory>::vftable;
      local_b8._0_1_ = 0xb;
      if (local_d4 != (int *)0x0) {
        (**(code **)(*local_d4 + 8))(local_d4);
      }
      local_b8._0_1_ = 10;
      local_d0 = ns_smartptr<class_nsIComponentRegistrar>::vftable;
      if (local_cc != (int *)0x0) {
        (**(code **)(*local_cc + 8))(local_cc);
      }
      local_b8._0_1_ = 9;
      if (local_118 != (int *)0x0) {
        (**(code **)(*local_118 + 8))(local_118);
      }
      local_b8._0_1_ = 6;
      local_e0 = ns_smartptr<class_nsIWindowWatcher>::vftable;
      if (local_dc != (int *)0x0) {
        (**(code **)(*local_dc + 8))(local_dc);
      }
LAB_0081e833:
      local_c8 = ns_smartptr<class_nsILocalFile>::vftable;
      local_b8 = CONCAT31(local_b8._1_3_,5);
      if (local_c4 != (int *)0x0) {
        (**(code **)(*local_c4 + 8))(local_c4);
      }
      FUN_004017b2(1,0);
    }
  }
  else {
LAB_0081ddba:
    FUN_004017b2(1,0);
  }
  FUN_004017b2(1,0);
LAB_0081e85e:
  ExceptionList = local_c0;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __fastcall FUN_0081e881(int param_1)

{
  ushort uVar1;
  ushort *puVar2;
  wchar_t *pwVar3;
  byte *pbVar4;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *unaff_EDI;
  wchar_t *local_a8 [5];
  undefined local_94 [36];
  wchar_t local_70 [6];
  wchar_t **local_64;
  undefined local_5c [20];
  wchar_t local_48 [2];
  undefined4 local_44;
  byte **local_40;
  ushort *local_3c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x84;
  local_8 = 0x81e890;
  local_44 = 0;
  local_a8[0] = (wchar_t *)0x81e8a1;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(unaff_EDI);
  *(undefined4 *)(unaff_EDI + 0x1c) = 0;
  local_8 = 0;
  local_a8[0] = (wchar_t *)(*(int *)(param_1 + 0x14) + 10);
  local_44 = 1;
  FUN_0081c141();
  local_a8[0] = local_70;
  FUN_00432231();
  local_a8[0] = L"\xf08b䶍覔졵㳨섹棿ﰐÑ䶍\xe8cc㳑￁뜏褆ﱝ濩\x01脀胾";
  puVar2 = (ushort *)FUN_00432242();
  local_a8[0] = L"ၨ퇼贀챍퇨센࿿ڷ嶉\xe9fců";
  local_3c = puVar2;
  FUN_00432214();
  local_a8[0] = L" ";
  FUN_004325b6();
  uVar1 = *puVar2;
  local_8 = 1;
  while (pwVar3 = (wchar_t *)(uint)uVar1, pwVar3 != (wchar_t *)0x0) {
    local_a8[0] = pwVar3;
    if (pwVar3 < (wchar_t *)0x80) {
      if (((((((pwVar3 < (wchar_t *)0x20) || (pwVar3 == (wchar_t *)0x25)) ||
             (pwVar3 == (wchar_t *)0x20)) ||
            ((pwVar3 == (wchar_t *)0x26 || (pwVar3 == (wchar_t *)0x3d)))) ||
           ((pwVar3 == (wchar_t *)0x2b ||
            ((pwVar3 == (wchar_t *)0x24 || (pwVar3 == (wchar_t *)0x23)))))) ||
          (pwVar3 == (wchar_t *)0x7b)) ||
         (((((pwVar3 == (wchar_t *)0x7d || (pwVar3 == (wchar_t *)0x5c)) ||
            (pwVar3 == (wchar_t *)0x7c)) ||
           (((pwVar3 == (wchar_t *)0x5e || (pwVar3 == (wchar_t *)0x7e)) ||
            ((pwVar3 == (wchar_t *)0x5b ||
             ((pwVar3 == (wchar_t *)0x5d || (pwVar3 == (wchar_t *)0x60)))))))) ||
          ((pwVar3 == (wchar_t *)0x3c || (pwVar3 == (wchar_t *)0x3e)))))) {
        local_a8[0] = L"%%%02X";
        FUN_0081c0f1();
        local_8._0_1_ = 7;
        local_a8[0] = pwVar3;
        local_a8[0] = (wchar_t *)FUN_0081c086(local_94,local_5c);
        local_8._0_1_ = 8;
        FUN_007b0d06();
        local_a8[0] = 
        L"䶍袨ﱝ柨ￋ菿졅謂졅뜏ༀ\xf0b7\xf685蔏ﺆ\xffff䶍\xe8cc⬪ﾾ잋苨∷쌀葨";
        FUN_0040159c();
        local_8 = CONCAT31(local_8._1_3_,1);
        local_a8[0] = L"䖃ˈ䖋࿈·뜏藰࿶蚅\xfffe跿챍⫨븫诿\xe8c7㞂\"棃\x84";
        FUN_0081b5bc();
      }
      else {
        FUN_0081c19f();
      }
      local_3c = local_3c + 1;
    }
    else {
      local_64 = local_a8;
      FUN_0081b588(0);
      local_a8[0] = local_48;
      local_a8[0] = (wchar_t *)FUN_0081d19a();
      local_8._0_1_ = 2;
      FUN_00432305();
      local_8 = CONCAT31(local_8._1_3_,4);
      local_a8[0] = 
      L"䖋评\xeb30桌ﰀÑ䶍\xe8a8힤\xffff똏倆䖍储薍ｰ\xffff왐ﱅ\xe805흕\xffff쒃倌쾋䗆ۼ鋨藍跿炍\xffff\xe8ffⰝﾾ䶍욨ﱅ\xe804찱\xffff聆>꽵䖃ˈ䶍裄ﱝ㷨쇘\xe9ff´"
      ;
      FUN_0043c1dd();
      for (pbVar4 = *local_40; *pbVar4 != 0; pbVar4 = pbVar4 + 1) {
        local_a8[0] = L"%%%02X";
        FUN_0081c0f1();
        local_a8[0] = (wchar_t *)(uint)*pbVar4;
        local_8._0_1_ = 5;
        local_a8[0] = (wchar_t *)FUN_0081c0ba(local_94,local_5c);
        local_8._0_1_ = 6;
        FUN_007b0d06();
        local_a8[0] = L"䶍욨ﱅ\xe804찱\xffff聆>꽵䖃ˈ䶍裄ﱝ㷨쇘\xe9ff´";
        FUN_0040159c();
        local_8 = CONCAT31(local_8._1_3_,4);
        local_a8[0] = L"聆>꽵䖃ˈ䶍裄ﱝ㷨쇘\xe9ff´";
        FUN_0081b5bc();
      }
      local_3c = local_3c + 1;
      local_8 = CONCAT31(local_8._1_3_,1);
      local_a8[0] = L"듩";
      FUN_0043c1dd();
    }
    uVar1 = *local_3c;
  }
  local_a8[0] = L"잋苨∷쌀葨";
  FUN_0040159c();
  local_a8[0] = L"棃\x84";
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0081ea7a(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  *param_1)

{
  undefined4 uVar1;
  undefined local_94 [52];
  undefined local_60 [20];
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_4c;
  undefined4 local_48;
  uint local_44;
  int local_40;
  uint local_3c;
  undefined local_38 [20];
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x84;
  local_8 = 0x81ea89;
  local_4c = param_1;
  local_48 = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_48 = 1;
  local_20 = 7;
  FUN_0040180b(0);
  local_1c = 0;
  local_44 = *(uint *)(local_40 + 4);
  local_8 = 1;
  local_3c = 0;
  if (local_44 != 0) {
    do {
      if (local_3c != 0) {
        FUN_00473d8f(&DAT_00d1fcb0);
      }
      FUN_004325d6(local_3c);
      uVar1 = FUN_0081e881();
      local_8._0_1_ = 2;
      FID_conflict_append(uVar1,0,0xffffffff);
      local_8._0_1_ = 1;
      FUN_0040159c();
      FUN_00473d8f(&DAT_00d1fcac);
      FUN_004325d6(local_3c);
      uVar1 = FUN_0081e881();
      local_8._0_1_ = 3;
      FID_conflict_append(uVar1,0,0xffffffff);
      local_8 = CONCAT31(local_8._1_3_,1);
      FUN_0040159c();
      local_3c = local_3c + 1;
    } while (local_3c < local_44);
  }
  FUN_0081c0f1(L"Content-Length: %d\r\n");
  local_8._0_1_ = 4;
  uVar1 = FUN_0081c086(local_94,local_60,local_24);
  local_8._0_1_ = 5;
  FUN_0043261a(uVar1);
  FUN_0040159c();
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_0081b5bc();
  FUN_00473d8f(L"Content-Type: application/x-www-form-urlencoded\r\n\r\n");
  FID_conflict_append(local_38,0,0xffffffff);
  FUN_0040159c();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_0081ec31(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined uVar1;
  char cVar2;
  void *pvVar3;
  undefined4 uVar4;
  int *piVar5;
  uint uVar6;
  int iVar7;
  undefined local_80 [36];
  undefined local_5c [40];
  undefined **local_34;
  int *local_30;
  undefined **local_2c;
  int *local_28;
  undefined **local_24;
  int *local_20;
  undefined **local_1c;
  int *local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x70;
  local_8 = 0x81ec3d;
  local_14 = param_1_00;
  FUN_0043c211("control");
  local_8 = 0;
  FUN_0081b619(param_1,param_2,param_3,param_4,0x200000,&DAT_032c0398,local_5c);
  local_8._0_1_ = 2;
  FUN_0040159c();
  *param_1_00 = wxWebControl::vftable;
  FUN_0086a600();
  local_8._0_1_ = 3;
  FUN_0086a600();
  param_1_00[0x71] = 0;
  param_1_00[0x70] = wxImage::vftable;
  local_8 = CONCAT31(local_8._1_3_,5);
  *(undefined *)(param_1_00 + 0x67) = 0;
  *(undefined *)((int)param_1_00 + 0x1c9) = 1;
  param_1_00[0x6e] = 0;
  pvVar3 = operator_new(0x38);
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_0081abbb();
  }
  param_1_00[0x65] = uVar4;
  pvVar3 = operator_new(0x6c);
  if (pvVar3 == (void *)0x0) {
    piVar5 = (int *)0x0;
  }
  else {
    piVar5 = (int *)FUN_0081b80c(param_1_00);
  }
  (**(code **)(*piVar5 + 4))(piVar5);
  param_1_00[0x66] = piVar5;
  cVar2 = FUN_008195df();
  if ((cVar2 == '\0') && (cVar2 = FUN_0081dc24(), cVar2 == '\0')) {
    (**(code **)(*(int *)param_1_00[0x66] + 8))((int *)param_1_00[0x66]);
    param_1_00[0x66] = 0;
    return param_1_00;
  }
  uVar4 = FUN_0081fd2e(&local_34,"@mozilla.org/embedding/browser/nsWebBrowser;1");
  local_8._0_1_ = 6;
  FUN_00819a4e(uVar4);
  local_8._0_1_ = 5;
  local_34 = ns_smartptr<class_nsISupports>::vftable;
  if (local_30 != (int *)0x0) {
    (**(code **)(*local_30 + 8))(local_30);
  }
  if (*(int *)(param_1_00[0x65] + 4) == 0) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return param_1_00;
    }
    uVar4 = 0x86a;
LAB_0081ed97:
    FUN_008402e0(s_______src_webcontrol_cpp_00d1e9f8,uVar4,"wxWebControl::wxWebControl",
                 &DAT_00fb763c,0);
    return param_1_00;
  }
  FUN_008199fd(param_1_00[0x65]);
  FUN_00819acc(param_1_00[0x65]);
  if (*(int *)(param_1_00[0x65] + 0x14) == 0) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return param_1_00;
    }
    uVar4 = 0x873;
    goto LAB_0081ed97;
  }
  piVar5 = *(int **)(param_1_00[0x65] + 4);
  (**(code **)(*piVar5 + 0x18))(piVar5,param_1_00[0x66]);
  FUN_00819eaa(param_1_00[0x65]);
  local_8._0_1_ = 7;
  if (local_18 == (int *)0x0) {
    FUN_00819ede(param_1_00[0x65]);
    local_8._0_1_ = 8;
    if (local_30 != (int *)0x0) {
      (**(code **)(*local_30 + 0x1c))(local_30,2);
      local_8._0_1_ = 7;
      local_34 = ns_smartptr<class_ns18IDocShellTreeItem>::vftable;
      if (local_30 != (int *)0x0) {
        (**(code **)(*local_30 + 8))(local_30);
      }
      goto LAB_0081ee89;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0(s_______src_webcontrol_cpp_00d1e9f8,0x886,"wxWebControl::wxWebControl",
                   &DAT_00fb763c,0);
    }
    local_34 = ns_smartptr<class_ns18IDocShellTreeItem>::vftable;
LAB_0081f27c:
    local_8._0_1_ = 7;
    if (local_30 != (int *)0x0) {
      (**(code **)(*local_30 + 8))(local_30);
    }
  }
  else {
    (**(code **)(*local_18 + 0x30))(local_18,2);
LAB_0081ee89:
    uVar4 = param_1_00[0x4f];
    FUN_0043d8d2(&local_34);
    uVar6 = (**(code **)(**(int **)(param_1_00[0x65] + 0x14) + 0xc))
                      (*(int **)(param_1_00[0x65] + 0x14),uVar4,0,0,0,local_34,local_30);
    if ((uVar6 & 0x80000000) == 0) {
      uVar6 = (**(code **)(**(int **)(param_1_00[0x65] + 0x14) + 0x10))
                        (*(int **)(param_1_00[0x65] + 0x14));
      if ((uVar6 & 0x80000000) == 0) {
        if (param_1_00[0x66] == 0) {
          iVar7 = 0;
        }
        else {
          iVar7 = param_1_00[0x66] + 0xc;
        }
        piVar5 = (int *)FUN_008193a9(iVar7,0);
        (**(code **)(**(int **)(param_1_00[0x65] + 4) + 0xc))
                  (*(int **)(param_1_00[0x65] + 4),piVar5,&DAT_0322d2f4);
        (**(code **)(*piVar5 + 8))(piVar5);
        pvVar3 = operator_new(0x40);
        local_8._0_1_ = 9;
        if (pvVar3 == (void *)0x0) {
          piVar5 = (int *)0x0;
        }
        else {
          piVar5 = (int *)FUN_0081bb34(param_1_00,*(undefined4 *)(param_1_00[0x65] + 4));
        }
        param_1_00[0x6f] = piVar5;
        local_8._0_1_ = 7;
        (**(code **)(*piVar5 + 4))(piVar5);
        (**(code **)(**(int **)(param_1_00[0x65] + 4) + 0x20))
                  (*(int **)(param_1_00[0x65] + 4),(int *)param_1_00[0x6f]);
        local_24 = ns_smartptr<class_nsIDOMWindow>::vftable;
        local_20 = (int *)0x0;
        local_8._0_1_ = 10;
        (**(code **)(**(int **)(param_1_00[0x65] + 4) + 0x24))
                  (*(int **)(param_1_00[0x65] + 4),&local_20);
        if (local_20 == (int *)0x0) {
          if (PTR_FUN_03235c4c != (undefined *)0x0) {
            FUN_008402e0(s_______src_webcontrol_cpp_00d1e9f8,0x8b9,"wxWebControl::wxWebControl",
                         &DAT_00fb763c,0);
          }
        }
        else {
          FUN_00819f26(&local_24);
          local_8._0_1_ = 0xb;
          if (local_28 == (int *)0x0) {
            FUN_00819f5a(&local_24);
            local_8._0_1_ = 0xc;
            uVar1 = (undefined)local_8;
            local_8._0_1_ = 0xc;
            if (local_30 == (int *)0x0) {
              if (PTR_FUN_03235c4c != (undefined *)0x0) {
                uVar4 = 0x8ce;
LAB_0081f07e:
                FUN_008402e0(s_______src_webcontrol_cpp_00d1e9f8,uVar4,"wxWebControl::wxWebControl",
                             &DAT_00fb763c,0);
              }
            }
            else {
              local_8._0_1_ = uVar1;
              iVar7 = (**(code **)(*local_30 + 0x50))(local_30,param_1_00[0x65] + 0x24);
              if (-1 < iVar7) {
                local_8._0_1_ = 0xb;
                local_34 = ns_smartptr<class_ns18IDOMWindow2>::vftable;
                if (local_30 != (int *)0x0) {
                  (**(code **)(*local_30 + 8))(local_30);
                }
                goto LAB_0081f0f2;
              }
              if (PTR_FUN_03235c4c != (undefined *)0x0) {
                uVar4 = 0x8d4;
                goto LAB_0081f07e;
              }
            }
            local_34 = ns_smartptr<class_ns18IDOMWindow2>::vftable;
            local_8._0_1_ = 0xb;
            if (local_30 != (int *)0x0) {
              (**(code **)(*local_30 + 8))(local_30);
            }
          }
          else {
            iVar7 = (**(code **)(*local_28 + 0x50))(local_28,param_1_00[0x65] + 0x24);
            if (iVar7 < 0) {
              if (PTR_FUN_03235c4c != (undefined *)0x0) {
                uVar4 = 0x8c4;
LAB_0081f03d:
                FUN_008402e0(s_______src_webcontrol_cpp_00d1e9f8,uVar4,"wxWebControl::wxWebControl",
                             &DAT_00fb763c,0);
              }
            }
            else {
LAB_0081f0f2:
              FUN_0081a5a6();
              uVar4 = FUN_0081a1f8(param_1_00[0x65]);
              local_8._0_1_ = 0xd;
              FUN_00819b74(uVar4);
              local_8._0_1_ = 0xb;
              FUN_008196e9();
              if (*(int *)(param_1_00[0x65] + 0x2c) == 0) {
                if (PTR_FUN_03235c4c != (undefined *)0x0) {
                  uVar4 = 0x8e2;
                  goto LAB_0081f03d;
                }
              }
              else {
                uVar4 = FUN_0081a1f8(param_1_00[0x65]);
                local_8._0_1_ = 0xe;
                FUN_00819a8d(uVar4);
                local_8._0_1_ = 0xb;
                FUN_008196e9();
                if (*(int *)(param_1_00[0x65] + 0xc) == 0) {
                  if (PTR_FUN_03235c4c != (undefined *)0x0) {
                    uVar4 = 0x8ea;
                    goto LAB_0081f03d;
                  }
                }
                else {
                  FUN_00819b21(param_1_00[0x65]);
                  if (*(int *)(param_1_00[0x65] + 0x1c) == 0) {
                    if (PTR_FUN_03235c4c != (undefined *)0x0) {
                      uVar4 = 0x8f2;
                      goto LAB_0081f03d;
                    }
                  }
                  else {
                    pvVar3 = operator_new(0x34);
                    if (pvVar3 == (void *)0x0) {
                      uVar4 = 0;
                    }
                    else {
                      uVar4 = FUN_0081be30(param_1_00);
                    }
                    param_1_00[0x6e] = uVar4;
                    *(undefined *)(param_1_00 + 0x67) = 1;
                    FUN_004325b6(L"about:blank");
                    local_8._0_1_ = 0xf;
                    uVar4 = FUN_0081ff41(local_80);
                    local_8._0_1_ = 0xb;
                    FUN_0040159c();
                    (**(code **)(**(int **)(param_1_00[0x65] + 0x1c) + 0x20))
                              (*(int **)(param_1_00[0x65] + 0x1c),uVar4,0,0,0,0);
                    thunk_FUN_0081f625(uVar4);
                    (**(code **)(**(int **)(param_1_00[0x65] + 0x14) + 0x48))
                              (*(int **)(param_1_00[0x65] + 0x14),1);
                  }
                }
              }
            }
          }
          local_8._0_1_ = 10;
          local_2c = ns_smartptr<class_nsIDOMWindow2>::vftable;
          if (local_28 != (int *)0x0) {
            (**(code **)(*local_28 + 8))(local_28);
          }
        }
        local_24 = ns_smartptr<class_nsIDOMWindow>::vftable;
        local_30 = local_20;
        goto LAB_0081f27c;
      }
      if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_0081f28a;
      uVar4 = 0x8a1;
    }
    else {
      if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_0081f28a;
      uVar4 = 0x89a;
    }
    FUN_008402e0(s_______src_webcontrol_cpp_00d1e9f8,uVar4,"wxWebControl::wxWebControl",
                 &DAT_00fb763c,0);
  }
LAB_0081f28a:
  local_8 = CONCAT31(local_8._1_3_,5);
  local_1c = ns_smartptr<class_nsIDocShellTreeItem>::vftable;
  if (local_18 == (int *)0x0) {
    return param_1_00;
  }
  (**(code **)(*local_18 + 8))(local_18);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall FUN_0081f2ac(int param_1_00,undefined4 param_1,byte param_2,int param_3)

{
  int *piVar1;
  char cVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined **local_5c;
  int *local_58;
  undefined **local_54;
  int *local_50;
  undefined4 local_4c;
  undefined **local_48;
  int *local_44;
  undefined **local_40;
  int *local_3c;
  undefined local_38 [20];
  undefined4 local_24;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x54;
  local_8 = 0x81f2b8;
  cVar2 = FUN_00819655();
  if (cVar2 == '\0') goto LAB_0081f499;
  local_3c = (int *)0x0;
  local_40 = wxImage::vftable;
  local_8 = 0;
  FUN_0043d987(&local_40);
  local_8 = 0xffffffff;
  local_40 = wxObject::vftable;
  FUN_0083e850();
  *(undefined *)(param_1_00 + 0x1c8) = 0;
  *(undefined *)(param_1_00 + 0x1c9) = 0;
  local_4c = 0;
  if ((param_2 & 2) != 0) {
    local_4c = 0x20;
  }
  local_48 = ns_smartptr<class_nsIInputStream>::vftable;
  local_44 = (int *)0x0;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  if (param_3 != 0) {
    uVar3 = FUN_0081fd2e(&local_5c,"@mozilla.org/io/string-input-stream;1");
    local_8._0_1_ = 2;
    FUN_0081a015(uVar3);
    local_8 = CONCAT31(local_8._1_3_,4);
    local_5c = ns_smartptr<class_nsISupports>::vftable;
    if (local_58 != (int *)0x0) {
      (**(code **)(*local_58 + 8))(local_58);
    }
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_0081f395:
      if (local_3c != (int *)0x0) goto LAB_0081f39a;
    }
    else {
      if (local_3c == (int *)0x0) {
        FUN_008402e0(s_______src_webcontrol_cpp_00d1e9f8,0xb31,"wxWebControl::OpenURI","strs.p",0);
        goto LAB_0081f395;
      }
LAB_0081f39a:
      FUN_0081ea7a(local_38);
      piVar1 = local_3c;
      local_8._0_1_ = 5;
      puVar4 = (undefined4 *)FUN_0043242d(&local_58);
      local_8._0_1_ = 6;
      (**(code **)(*piVar1 + 0x20))(piVar1,*(undefined4 *)*puVar4,local_24);
      local_8 = CONCAT31(local_8._1_3_,5);
      FUN_0043c1dd();
      FUN_00819fea(&local_40);
      FUN_0040159c();
    }
    local_8._0_1_ = 1;
    local_40 = ns_smartptr<class_nsIStringInputStream>::vftable;
    if (local_3c != (int *)0x0) {
      (**(code **)(*local_3c + 8))(local_3c);
    }
  }
  uVar3 = FUN_0081ff41(param_1);
  piVar1 = *(int **)(*(int *)(param_1_00 + 0x194) + 0x1c);
  (**(code **)(*piVar1 + 0x20))(piVar1,uVar3,local_4c,0,local_44,0);
  thunk_FUN_0081f625(uVar3);
  uVar3 = FUN_0081a1f8(*(undefined4 *)(param_1_00 + 0x194));
  local_8._0_1_ = 7;
  FUN_0081a049(uVar3);
  local_8._0_1_ = 9;
  FUN_008196e9();
  if (local_50 == (int *)0x0) {
    local_54 = ns_smartptr<class_nsIWebBrowserFocus>::vftable;
  }
  else {
    (**(code **)(*local_50 + 0xc))(local_50);
    local_8 = CONCAT31(local_8._1_3_,1);
    local_54 = ns_smartptr<class_nsIWebBrowserFocus>::vftable;
    if (local_50 != (int *)0x0) {
      (**(code **)(*local_50 + 8))(local_50);
    }
  }
  local_8 = 0xffffffff;
  local_48 = ns_smartptr<class_nsIInputStream>::vftable;
  if (local_44 != (int *)0x0) {
    (**(code **)(*local_44 + 8))(local_44);
  }
LAB_0081f499:
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0081f4a1(undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined **local_18;
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x81f4ad;
  FUN_0081f9b5(&local_18);
  piVar1 = local_14;
  local_8 = 0;
  if (local_14 != (int *)0x0) {
    puVar2 = (undefined4 *)FUN_0043242d(&param_1);
    local_8._0_1_ = 1;
    (**(code **)(*piVar1 + 0x40))(piVar1,*(undefined4 *)*puVar2,param_2);
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_0043c1dd();
    local_8 = 0xffffffff;
    local_18 = ns_smartptr<class_nsIPref>::vftable;
    if (local_14 != (int *)0x0) {
      (**(code **)(*local_14 + 8))(local_14);
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0081f50c(void)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined **local_1c;
  int *local_18;
  undefined local_14 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x81f518;
  FUN_0081f9b5(&local_1c);
  piVar1 = local_18;
  local_8 = 0;
  if (local_18 != (int *)0x0) {
    puVar2 = (undefined4 *)FUN_0043242d(local_14);
    local_8._0_1_ = 1;
    puVar3 = (undefined4 *)FUN_0043242d(&stack0x00000008);
    local_8._0_1_ = 2;
    (**(code **)(*piVar1 + 0x38))(piVar1,*(undefined4 *)*puVar3,*(undefined4 *)*puVar2);
    local_8._0_1_ = 1;
    FUN_0043c1dd();
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_0043c1dd();
    local_8 = 0xffffffff;
    local_1c = ns_smartptr<class_nsIPref>::vftable;
    if (local_18 != (int *)0x0) {
      (**(code **)(*local_18 + 8))(local_18);
    }
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0081f597(undefined4 param_1,char param_2)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined **local_18;
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x81f5a3;
  FUN_0081f9b5(&local_18);
  piVar1 = local_14;
  local_8 = 0;
  if (local_14 != (int *)0x0) {
    puVar2 = (undefined4 *)FUN_0043242d(&param_1);
    local_8._0_1_ = 1;
    (**(code **)(*piVar1 + 0x30))(piVar1,*(undefined4 *)*puVar2,param_2 != '\0');
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_0043c1dd();
    local_8 = 0xffffffff;
    local_18 = ns_smartptr<class_nsIPref>::vftable;
    if (local_14 != (int *)0x0) {
      (**(code **)(*local_14 + 8))(local_14);
    }
  }
  return;
}



undefined4 FUN_0081f608(void)

{
  undefined4 uVar1;
  
  if (DAT_032bc570 == (code *)0x0) {
    return 0xc1f30001;
  }
                    // WARNING: Could not recover jumptable at 0x0081f617. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (*DAT_032bc570)();
  return uVar1;
}



void FUN_0081f619(void)

{
  if (DAT_032bc5e0 == (code *)0x0) {
    return;
  }
                    // WARNING: Could not recover jumptable at 0x0081f623. Too many branches
                    // WARNING: Treating indirect jump as call
  (*DAT_032bc5e0)();
  return;
}



void FUN_0081f625(void)

{
  if (DAT_032bc5e8 != (code *)0x0) {
                    // WARNING: Could not recover jumptable at 0x0081f62e. Too many branches
                    // WARNING: Treating indirect jump as call
    (*DAT_032bc5e8)();
    return;
  }
  return;
}



undefined4 FUN_0081f631(void)

{
  undefined4 uVar1;
  
  if (DAT_032bc578 == (code *)0x0) {
    return 0xc1f30001;
  }
                    // WARNING: Could not recover jumptable at 0x0081f640. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (*DAT_032bc578)();
  return uVar1;
}



undefined4 FUN_0081f642(void)

{
  undefined4 uVar1;
  
  if (DAT_032bc57c == (code *)0x0) {
    return 0xc1f30001;
  }
                    // WARNING: Could not recover jumptable at 0x0081f651. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (*DAT_032bc57c)();
  return uVar1;
}



undefined4 FUN_0081f653(void)

{
  undefined4 uVar1;
  
  if (DAT_032bc580 == (code *)0x0) {
    return 0xc1f30001;
  }
                    // WARNING: Could not recover jumptable at 0x0081f662. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (*DAT_032bc580)();
  return uVar1;
}



undefined4 FUN_0081f664(void)

{
  undefined4 uVar1;
  
  if (DAT_032bc5a0 == (code *)0x0) {
    return 0xc1f30001;
  }
                    // WARNING: Could not recover jumptable at 0x0081f673. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (*DAT_032bc5a0)();
  return uVar1;
}



undefined4 FUN_0081f675(void)

{
  undefined4 uVar1;
  
  if (DAT_032bc5ec == (code *)0x0) {
    return 0xc1f30001;
  }
                    // WARNING: Could not recover jumptable at 0x0081f684. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (*DAT_032bc5ec)();
  return uVar1;
}



void FUN_0081f686(void)

{
  if (DAT_032bc5a4 != (code *)0x0) {
                    // WARNING: Could not recover jumptable at 0x0081f68f. Too many branches
                    // WARNING: Treating indirect jump as call
    (*DAT_032bc5a4)();
    return;
  }
  return;
}



undefined4 FUN_0081f692(void)

{
  undefined4 uVar1;
  
  if (DAT_032bc58c == (code *)0x0) {
    return 0xc1f30001;
  }
                    // WARNING: Could not recover jumptable at 0x0081f6a1. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (*DAT_032bc58c)();
  return uVar1;
}



undefined4 FUN_0081f6a3(void)

{
  undefined4 uVar1;
  
  if (DAT_032bc5ac == (code *)0x0) {
    return 0xc1f30001;
  }
                    // WARNING: Could not recover jumptable at 0x0081f6b2. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (*DAT_032bc5ac)();
  return uVar1;
}



undefined4 FUN_0081f6b4(void)

{
  undefined4 uVar1;
  
  if (DAT_032bc5a8 == (code *)0x0) {
    return 0xc1f30001;
  }
                    // WARNING: Could not recover jumptable at 0x0081f6c3. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (*DAT_032bc5a8)();
  return uVar1;
}



undefined4 FUN_0081f6c5(void)

{
  undefined4 uVar1;
  
  if (DAT_032bc5b8 == (code *)0x0) {
    return 0xc1f30001;
  }
                    // WARNING: Could not recover jumptable at 0x0081f6d4. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (*DAT_032bc5b8)();
  return uVar1;
}



undefined4 FUN_0081f6d6(void)

{
  undefined4 uVar1;
  
  if (DAT_032bc5f0 == (code *)0x0) {
    return 0xc1f30001;
  }
                    // WARNING: Could not recover jumptable at 0x0081f6e5. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (*DAT_032bc5f0)();
  return uVar1;
}



void FUN_0081f6e7(void)

{
  if (DAT_032bc5bc != (code *)0x0) {
                    // WARNING: Could not recover jumptable at 0x0081f6f0. Too many branches
                    // WARNING: Treating indirect jump as call
    (*DAT_032bc5bc)();
    return;
  }
  return;
}



void FUN_0081f6f3(void)

{
  if (DAT_032bc5c0 == (code *)0x0) {
    return;
  }
                    // WARNING: Could not recover jumptable at 0x0081f6fd. Too many branches
                    // WARNING: Treating indirect jump as call
  (*DAT_032bc5c0)();
  return;
}



void thunk_FUN_0081f625(void)

{
  if (DAT_032bc5e8 != (code *)0x0) {
                    // WARNING: Could not recover jumptable at 0x0081f62e. Too many branches
                    // WARNING: Treating indirect jump as call
    (*DAT_032bc5e8)();
    return;
  }
  return;
}



void __fastcall FUN_0081f704(undefined4 *param_1)

{
  *param_1 = ProgressListenerAdaptor18::vftable;
  return;
}



undefined4
FUN_0081f70b(int param_1,undefined4 param_2,int *param_3,undefined4 param_4,undefined4 param_5,
            undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  
  if (*(int *)(param_1 + 8) != 0) {
    (**(code **)(**(int **)(param_1 + 8) + 0x1c))(param_4,param_5,param_6,param_7);
    cVar1 = (**(code **)(**(int **)(param_1 + 8) + 0xc))();
    if (cVar1 != '\0') {
      (**(code **)(*param_3 + 0x18))(param_3,0x804b0002);
    }
  }
  return 0;
}



void __fastcall FUN_0081f74d(undefined4 *param_1)

{
  *param_1 = ProgressListenerAdaptor::vftable;
  return;
}



undefined4 FUN_0081f754(int param_1,undefined4 param_2,undefined4 param_3,byte param_4)

{
  if (((param_4 & 0x10) != 0) && (*(int *)(param_1 + 8) != 0)) {
    (**(code **)(**(int **)(param_1 + 8) + 0x14))();
  }
  return 0;
}



void FUN_0081f772(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,
                 int param_6,int param_7)

{
  (**(code **)(*param_1 + 0x20))
            (param_1,param_2,param_3,param_4,param_4 >> 0x1f,param_5,param_5 >> 0x1f,param_6,
             param_6 >> 0x1f,param_7,param_7 >> 0x1f);
  return;
}



undefined4 * __thiscall FUN_0081f7a2(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  
  *param_1_00 = ns_smartptr<class_nsISupports>::vftable;
  piVar1 = *(int **)(param_1 + 4);
  param_1_00[1] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(piVar1);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0081f7c5(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  
  *param_1_00 = ns_smartptr<class_nsIWindowWatcher>::vftable;
  piVar1 = *(int **)(param_1 + 4);
  param_1_00[1] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(piVar1);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0081f7e8(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  
  *param_1_00 = ns_smartptr<class_nsIPref>::vftable;
  piVar1 = *(int **)(param_1 + 4);
  param_1_00[1] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(piVar1);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0081f80b(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  
  *param_1_00 = ns_smartptr<class_nsIProperties>::vftable;
  piVar1 = *(int **)(param_1 + 4);
  param_1_00[1] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(piVar1);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0081f82e(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  
  *param_1_00 = ns_smartptr<class_nsIIOService>::vftable;
  piVar1 = *(int **)(param_1 + 4);
  param_1_00[1] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(piVar1);
  }
  return param_1_00;
}



void __fastcall FUN_0081f851(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIIOService>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_0081f865(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIComponentManager>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_0081f879(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  
  *param_1_00 = ns_smartptr<class_nsIURI>::vftable;
  piVar1 = *(int **)(param_1 + 4);
  param_1_00[1] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(piVar1);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_0081f89c(undefined4 param_1)

{
  undefined4 local_8;
  
  local_8 = param_1;
  FUN_0081f6f3(param_1,&local_8,0);
  return local_8;
}



void __thiscall FUN_0081f8b4(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_0081f6e7(param_1_00);
  FUN_0081f6d6(param_1_00,param_1,param_2,0);
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0081f8d4(undefined4 param_1)

{
  int iVar1;
  int *local_34;
  undefined **local_30;
  int *local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined2 local_20;
  undefined2 local_1e;
  undefined local_1c;
  undefined local_1b;
  undefined local_1a;
  undefined local_19;
  undefined local_18;
  undefined local_17;
  undefined local_16;
  undefined local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_28 = param_1;
  local_34 = (int *)0x0;
  local_30 = ns_smartptr<class_nsIWindowWatcher>::vftable;
  local_2c = (int *)0x0;
  local_8 = 2;
  iVar1 = FUN_0081f631(&local_34);
  if (iVar1 < 0) {
    FUN_0081f7c5(&local_30);
  }
  else {
    local_20 = 0x494b;
    local_1e = 0x43b3;
    local_24 = 0x2286a8;
    local_1c = 0x8d;
    local_1b = 0xdd;
    local_1a = 0x49;
    local_19 = 0xe3;
    local_18 = 0xfc;
    local_17 = 0x50;
    local_16 = 0x62;
    local_15 = 0x2b;
    (**(code **)(*local_34 + 0x10))
              (local_34,"@mozilla.org/embedcomp/window-watcher;1",&local_24,&local_2c);
    FUN_0081f7c5(&local_30);
  }
  local_30 = ns_smartptr<class_nsIWindowWatcher>::vftable;
  local_8._0_1_ = 1;
  if (local_2c != (int *)0x0) {
    (**(code **)(*local_2c + 8))(local_2c);
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_34 != (int *)0x0) {
    (**(code **)(*local_34 + 8))(local_34);
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0081f9b5(undefined4 param_1)

{
  int iVar1;
  int *local_34;
  undefined **local_30;
  int *local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined2 local_20;
  undefined2 local_1e;
  undefined local_1c;
  undefined local_1b;
  undefined local_1a;
  undefined local_19;
  undefined local_18;
  undefined local_17;
  undefined local_16;
  undefined local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_28 = param_1;
  local_34 = (int *)0x0;
  local_30 = ns_smartptr<class_nsIPref>::vftable;
  local_2c = (int *)0x0;
  local_8 = 2;
  iVar1 = FUN_0081f631(&local_34);
  if (iVar1 < 0) {
    FUN_0081f7e8(&local_30);
  }
  else {
    local_20 = 0xca86;
    local_1e = 0x11d1;
    local_24 = 0xa22ad7b0;
    local_1c = 0xa9;
    local_1b = 0xa4;
    local_1a = 0;
    local_19 = 0x80;
    local_18 = 0x5f;
    local_17 = 0x8a;
    local_16 = 0x7a;
    local_15 = 0xc4;
    (**(code **)(*local_34 + 0x10))(local_34,"@mozilla.org/preferences;1",&local_24,&local_2c);
    FUN_0081f7e8(&local_30);
  }
  local_30 = ns_smartptr<class_nsIPref>::vftable;
  local_8._0_1_ = 1;
  if (local_2c != (int *)0x0) {
    (**(code **)(*local_2c + 8))(local_2c);
  }
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_34 != (int *)0x0) {
    (**(code **)(*local_34 + 8))(local_34);
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0081fa96(undefined4 param_1)

{
  int iVar1;
  int *local_34;
  undefined **local_30;
  int *local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined2 local_20;
  undefined2 local_1e;
  undefined local_1c;
  undefined local_1b;
  undefined local_1a;
  undefined local_19;
  undefined local_18;
  undefined local_17;
  undefined local_16;
  undefined local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_28 = param_1;
  local_30 = ns_smartptr<class_nsIProperties>::vftable;
  local_2c = (int *)0x0;
  local_34 = (int *)0x0;
  local_8 = 2;
  iVar1 = FUN_0081f631(&local_34);
  if (iVar1 < 0) {
    FUN_0081f80b(&local_30);
  }
  else {
    local_20 = 0x4e93;
    local_1e = 0x4b60;
    local_24 = 0x78650582;
    local_1c = 0x8e;
    local_1b = 0x85;
    local_1a = 0x26;
    local_19 = 0xeb;
    local_18 = 0xd3;
    local_17 = 0xeb;
    local_16 = 0x14;
    local_15 = 0xca;
    (**(code **)(*local_34 + 0x10))
              (local_34,"@mozilla.org/file/directory_service;1",&local_24,&local_2c);
    FUN_0081f80b(&local_30);
  }
  local_8._0_1_ = 1;
  if (local_34 != (int *)0x0) {
    (**(code **)(*local_34 + 8))(local_34);
  }
  local_30 = ns_smartptr<class_nsIProperties>::vftable;
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_2c != (int *)0x0) {
    (**(code **)(*local_2c + 8))(local_2c);
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0081fb77(undefined4 param_1)

{
  int iVar1;
  int *local_34;
  undefined **local_30;
  int *local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined2 local_20;
  undefined2 local_1e;
  undefined local_1c;
  undefined local_1b;
  undefined local_1a;
  undefined local_19;
  undefined local_18;
  undefined local_17;
  undefined local_16;
  undefined local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_28 = param_1;
  local_30 = ns_smartptr<class_nsIIOService>::vftable;
  local_2c = (int *)0x0;
  local_34 = (int *)0x0;
  local_8 = 2;
  iVar1 = FUN_0081f631(&local_34);
  if (iVar1 < 0) {
    FUN_0081f82e(&local_30);
  }
  else {
    local_20 = 0x9020;
    local_1e = 0x4d12;
    local_24 = 0xbddeda3f;
    local_1c = 0x8c;
    local_1b = 0x70;
    local_1a = 0x98;
    local_19 = 0x4e;
    local_18 = 0xe9;
    local_17 = 0xf7;
    local_16 = 0x93;
    local_15 = 0x5e;
    (**(code **)(*local_34 + 0x10))
              (local_34,"@mozilla.org/network/io-service;1",&local_24,&local_2c);
    FUN_0081f82e(&local_30);
  }
  local_8._0_1_ = 1;
  if (local_34 != (int *)0x0) {
    (**(code **)(*local_34 + 8))(local_34);
  }
  local_30 = ns_smartptr<class_nsIIOService>::vftable;
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_2c != (int *)0x0) {
    (**(code **)(*local_2c + 8))(local_2c);
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0081fc58(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int *local_34;
  undefined **local_30;
  int *local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined2 local_20;
  undefined2 local_1e;
  undefined local_1c;
  undefined local_1b;
  undefined local_1a;
  undefined local_19;
  undefined local_18;
  undefined local_17;
  undefined local_16;
  undefined local_15;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_28 = param_1;
  local_30 = ns_smartptr<class_nsISupports>::vftable;
  local_2c = (int *)0x0;
  local_34 = (int *)0x0;
  local_8 = 2;
  iVar1 = FUN_0081f631(&local_34);
  if (iVar1 < 0) {
    FUN_0081f7a2(&local_30);
  }
  else {
    local_20 = 0;
    local_1e = 0;
    local_24 = 0;
    local_1c = 0xc0;
    local_1b = 0;
    local_1a = 0;
    local_19 = 0;
    local_18 = 0;
    local_17 = 0;
    local_16 = 0;
    local_15 = 0x46;
    (**(code **)(*local_34 + 0x10))(local_34,param_2,&local_24,&local_2c);
    FUN_0081f7a2(&local_30);
  }
  local_8._0_1_ = 1;
  if (local_34 != (int *)0x0) {
    (**(code **)(*local_34 + 8))(local_34);
  }
  local_30 = ns_smartptr<class_nsISupports>::vftable;
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_2c != (int *)0x0) {
    (**(code **)(*local_2c + 8))(local_2c);
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0081fd2e(undefined4 *param_1,undefined4 param_2)

{
  int *local_18;
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  *param_1 = ns_smartptr<class_nsISupports>::vftable;
  param_1[1] = 0;
  local_14 = 1;
  local_18 = (int *)0x0;
  local_8 = 1;
  FUN_0081f642(&local_18);
  if (local_18 != (int *)0x0) {
    (**(code **)(*local_18 + 0x18))(local_18,param_2,0,&DAT_0322e1d4,param_1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_18 != (int *)0x0) {
    (**(code **)(*local_18 + 8))(local_18);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_0081fd9f(undefined4 *param_1,undefined4 param_2)

{
  int *local_18;
  undefined4 local_14;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  *param_1 = ns_smartptr<class_nsISupports>::vftable;
  param_1[1] = 0;
  local_14 = 1;
  local_18 = (int *)0x0;
  local_8 = 1;
  FUN_0081f642(&local_18);
  if (local_18 != (int *)0x0) {
    (**(code **)(*local_18 + 0x14))(local_18,param_2,0,&DAT_0322e1e4,param_1 + 1);
  }
  local_8 = local_8 & 0xffffff00;
  if (local_18 != (int *)0x0) {
    (**(code **)(*local_18 + 8))(local_18);
  }
  return param_1;
}



undefined4 FUN_0081fe10(int param_1)

{
  int *piVar1;
  undefined4 extraout_ECX;
  
  piVar1 = (int *)(param_1 + 4);
  *piVar1 = *piVar1 + -1;
  if (*piVar1 == 0) {
    FUN_0081f704();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(extraout_ECX);
  }
  return *(undefined4 *)(param_1 + 4);
}



undefined4 FUN_0081fe2d(int param_1)

{
  int *piVar1;
  undefined4 extraout_ECX;
  
  piVar1 = (int *)(param_1 + 4);
  *piVar1 = *piVar1 + -1;
  if (*piVar1 == 0) {
    FUN_0081f74d();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(extraout_ECX);
  }
  return *(undefined4 *)(param_1 + 4);
}



undefined4 FUN_0081fe4a(int *param_1,undefined4 param_2,int **param_3)

{
  int iVar1;
  
  *param_3 = (int *)0x0;
  iVar1 = FUN_0081931a(&DAT_0322d074);
  if ((((iVar1 == 0) && (iVar1 = FUN_0081931a(&DAT_0322e088), iVar1 == 0)) &&
      (iVar1 = FUN_0081931a(&DAT_0322e068), iVar1 == 0)) &&
     (iVar1 = FUN_0081931a(&DAT_0322d2f4), iVar1 == 0)) {
    return 0x80004002;
  }
  (**(code **)(*param_1 + 4))(param_1);
  *param_3 = param_1;
  return 0;
}



void __thiscall
FUN_0081feb2(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,uint *param_1,undefined4 param_2)

{
  _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
  *this;
  wchar_t *pwVar1;
  undefined *puVar2;
  undefined local_14 [8];
  undefined local_c [8];
  
  puVar2 = local_c;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::begin
            (param_1_00,local_14);
  this = (_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
          *)FUN_007aa712(puVar2,param_2);
  pwVar1 = std::
           _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
           ::operator*(this);
  *param_1 = (uint)(ushort)*pwVar1;
  return;
}



void FUN_0081fee2(int param_1,undefined4 param_2)

{
  uint uVar1;
  longlong lVar2;
  int iVar3;
  uint uVar4;
  undefined4 local_8;
  
  uVar1 = *(uint *)(param_1 + 0x14);
  lVar2 = (ulonglong)(uVar1 + 1) * 2;
  iVar3 = FUN_00823c23(-(uint)((int)((ulonglong)lVar2 >> 0x20) != 0) | (uint)lVar2);
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      FUN_0081feb2(&local_8,uVar4);
      *(undefined2 *)(iVar3 + uVar4 * 2) = (undefined2)local_8;
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  FUN_0081f6a3(param_2,iVar3,uVar1);
  FUN_00a3f66c(iVar3);
  return;
}



void FUN_0081ff41(int param_1)

{
  uint uVar1;
  uint uVar2;
  undefined4 local_c;
  int local_8;
  
  uVar1 = *(uint *)(param_1 + 0x14);
  local_8 = FUN_0081f619(uVar1 * 2 + 2);
  uVar2 = 0;
  if (uVar1 != 0) {
    do {
      FUN_0081feb2(&local_c,uVar2);
      *(undefined2 *)(local_8 + uVar2 * 2) = (undefined2)local_c;
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar1);
  }
  *(undefined2 *)(uVar1 * 2 + local_8) = 0;
  return;
}



undefined4 * __thiscall FUN_0081ff90(undefined4 *param_1_00,int *param_1)

{
  *param_1_00 = ProgressListenerAdaptor::vftable;
  param_1_00[1] = 0;
  param_1_00[2] = param_1;
  if (param_1 != (int *)0x0) {
    (**(code **)(*param_1 + 0x10))();
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0081ffb3(undefined4 *param_1_00,int *param_1)

{
  *param_1_00 = ProgressListenerAdaptor18::vftable;
  param_1_00[1] = 0;
  param_1_00[2] = param_1;
  if (param_1 != (int *)0x0) {
    (**(code **)(*param_1 + 0x10))();
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

int * FUN_0081ffd6(undefined4 param_1)

{
  char cVar1;
  void *pvVar2;
  int *piVar3;
  
  cVar1 = FUN_0081961e();
  if (cVar1 == '\0') {
    pvVar2 = operator_new(0xc);
    if (pvVar2 != (void *)0x0) {
      piVar3 = (int *)FUN_0081ff90(param_1);
      goto LAB_0082002e;
    }
  }
  else {
    pvVar2 = operator_new(0xc);
    if (pvVar2 != (void *)0x0) {
      piVar3 = (int *)FUN_0081ffb3(param_1);
      goto LAB_0082002e;
    }
  }
  piVar3 = (int *)0x0;
LAB_0082002e:
  (**(code **)(*piVar3 + 4))(piVar3);
  return piVar3;
}



undefined4 __thiscall
FUN_00820040(_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1_00,wchar_t param_1)

{
  wchar_t *pwVar1;
  
  pwVar1 = std::
           _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
           ::operator*(param_1_00);
  return CONCAT31((int3)(CONCAT22((short)((uint)pwVar1 >> 0x10),*pwVar1) >> 8),*pwVar1 == param_1);
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *
FUN_00820057(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1)

{
  undefined4 uVar1;
  undefined local_3c [36];
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_18;
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0x820063;
  local_18 = param_1;
  local_14 = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_8 = 0;
  local_14 = 1;
  uVar1 = FUN_0081f89c();
  uVar1 = FUN_00853800(local_3c,uVar1);
  local_8 = 1;
  FUN_0043261a(uVar1);
  FUN_0040159c();
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *
FUN_008200b0(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1,undefined4 param_2)

{
  uint uVar1;
  uint uVar2;
  int local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xc;
  local_8 = 0x8200bc;
  uVar2 = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_8 = 0;
  uVar1 = FUN_0081f6b4(param_2,local_14,0);
  FUN_0081c141((int)(uVar1 * 2) >> 1);
  if (uVar1 != 0) {
    do {
      FUN_0081c19f(*(undefined2 *)(local_14[0] + uVar2 * 2));
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00820120(int param_1,short *param_2)

{
  short sVar1;
  uint uVar2;
  uint uVar3;
  undefined local_38 [24];
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x30;
  local_8 = 0x82012c;
  uVar2 = 0;
  if (param_2 == (short *)0x0) {
    FUN_004325b6(&DAT_00fae9c8);
  }
  else {
    local_20 = 7;
    FUN_0040180b(0);
    local_1c = 0;
    uVar3 = 0;
    local_8 = 0;
    sVar1 = *param_2;
    while (sVar1 != 0) {
      uVar3 = uVar3 + 1;
      sVar1 = param_2[uVar3];
    }
    FUN_0081c141(uVar3);
    if (uVar3 != 0) {
      do {
        FID_conflict_append(1,param_2[uVar2]);
        uVar2 = uVar2 + 1;
      } while (uVar2 < uVar3);
    }
    basic_string<>(local_38);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    FUN_0040159c();
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_008201b5(void)

{
  undefined4 *puVar1;
  undefined local_14 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0x8201c1;
  puVar1 = (undefined4 *)FUN_0043242d(local_14);
  local_8 = 0;
  FUN_0081f8b4(*(undefined4 *)*puVar1,0xffffffff);
  local_8 = 0xffffffff;
  FUN_0043c1dd();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * FUN_008201f2(undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined local_28 [16];
  undefined local_18 [4];
  undefined4 local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  *param_1 = ns_smartptr<class_nsILocalFile>::vftable;
  param_1[1] = 0;
  local_8 = 0;
  local_14 = 1;
  puVar1 = (undefined4 *)FUN_0043242d(local_18);
  local_8 = 1;
  FUN_0081f6d6(local_28,*(undefined4 *)*puVar1,0xffffffff,2);
  local_8._0_1_ = 2;
  iVar2 = FUN_0081f692(local_28,1,param_1 + 1);
  local_8._0_1_ = 1;
  FUN_0081f6e7(local_28);
  local_8 = (uint)local_8._1_3_ << 8;
  FUN_0043c1dd();
  if (iVar2 < 0) {
    FUN_00819af7();
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0082027a(undefined4 param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined local_5c [16];
  undefined local_4c [4];
  undefined4 local_48;
  undefined **local_44;
  int *local_40;
  undefined **local_3c;
  int *local_38;
  undefined4 local_34;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [4];
  undefined4 ***local_2c [5];
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_48 = 0;
  local_38 = (int *)0x0;
  local_34 = param_1;
  local_3c = ns_smartptr<class_nsIURI>::vftable;
  local_8 = 1;
  FUN_0081fb77(&local_44);
  local_8._0_1_ = 2;
  if (local_40 == (int *)0x0) {
    FUN_0081f879(&local_3c);
    local_48 = 1;
  }
  else {
    puVar2 = (undefined4 *)FUN_0043242d(local_4c);
    local_8._0_1_ = 3;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_30,*(char **)*puVar2);
    local_8._0_1_ = 5;
    FUN_0043c1dd();
    piVar1 = local_40;
    if (local_18 < 0x10) {
      local_2c[0] = local_2c;
    }
    FUN_0081f6d6(local_5c,local_2c[0],0xffffffff,2);
    local_8._0_1_ = 6;
    (**(code **)(*piVar1 + 0x14))(piVar1,local_5c,0,0,&local_38);
    local_8._0_1_ = 5;
    FUN_0081f6e7(local_5c);
    FUN_0081f879(&local_3c);
    local_48 = 1;
    FUN_004017b2(1,0);
  }
  local_44 = ns_smartptr<class_nsIIOService>::vftable;
  local_8._0_1_ = 1;
  if (local_40 != (int *)0x0) {
    (**(code **)(*local_40 + 8))(local_40);
  }
  local_3c = ns_smartptr<class_nsIURI>::vftable;
  local_8 = (uint)local_8._1_3_ << 8;
  if (local_38 != (int *)0x0) {
    (**(code **)(*local_38 + 8))(local_38);
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4
FUN_00820386(int param_1,undefined4 param_2,undefined4 param_3,uint param_4,undefined4 param_5)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0x820392;
  if (((param_4 & 0x80000000) != 0) && (*(int *)(param_1 + 8) != 0)) {
    cVar1 = (**(code **)(**(int **)(param_1 + 8) + 0xc))();
    if (cVar1 == '\0') {
      uVar2 = FUN_00820120(local_34,param_5);
      local_8 = 0;
      (**(code **)(**(int **)(param_1 + 8) + 0x18))(uVar2);
      FUN_0040159c();
    }
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_008203dd(void)

{
  _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
  *p_Var1;
  wchar_t *pwVar2;
  undefined4 *puVar3;
  FILE *_File;
  undefined4 uVar4;
  char *pcVar5;
  void *local_4a4;
  undefined4 local_498 [7];
  undefined4 local_47c;
  int local_460;
  undefined4 local_438;
  undefined4 local_434;
  undefined local_42c [20];
  uint local_418;
  undefined4 local_414;
  undefined4 local_410;
  char local_408 [1024];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_498;
  local_498[0] = 0x3c;
  FUN_00853800();
  local_438 = 7;
  FUN_0040180b();
  local_434 = 0;
  if (local_460 != 0) {
    p_Var1 = (_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)FUN_0081b3d8();
    pwVar2 = std::
             _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             ::operator*(p_Var1);
    if (*pwVar2 == L'\\') {
      FUN_00851a60();
    }
  }
  FUN_00852900(local_42c);
  FUN_0043261a();
  FUN_0040159c();
  basic_string<>();
  local_47c = 0;
  FID_conflict_append();
  FUN_00473d8f();
  puVar3 = (undefined4 *)FUN_0043242d();
  _File = _fopen(*(char **)*puVar3,"r");
  FUN_0043c1dd();
  if (_File != (FILE *)0x0) {
    local_414 = 7;
    FUN_0040180b();
    local_410 = 0;
    while( true ) {
      pcVar5 = _fgets(local_408,1000,_File);
      if (pcVar5 == (char *)0x0) break;
      if ((local_408[0] != '\0') && (local_408[0] != '#')) {
        FUN_0043261a();
        FID_conflict_append();
        uVar4 = FUN_00853800();
        FID_conflict_append(uVar4);
        FUN_0040159c();
        if (1 < local_418) {
          p_Var1 = (_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                    *)FUN_0081b3d8();
          pwVar2 = std::
                   _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                   ::operator*(p_Var1);
          if (*pwVar2 == L'\n') {
            FUN_00851a60();
          }
        }
        FUN_00854700();
      }
    }
    _fclose(_File);
    FUN_0040159c();
  }
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  ExceptionList = local_4a4;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 FUN_00820612(LPCSTR param_1)

{
  undefined4 *puVar1;
  HMODULE hModule;
  FARPROC pFVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  undefined *puVar6;
  uint local_24;
  undefined local_14 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x18;
  local_8 = 0x82061e;
  uVar4 = 0;
  FUN_00853ce0(0);
  local_8 = 0;
  FUN_008203dd(param_1);
  uVar5 = 0;
  if (local_24 != 0) {
    do {
      puVar6 = local_14;
      FUN_004325d6(uVar5);
      puVar1 = (undefined4 *)FUN_0043242d(puVar6);
      LoadLibraryExA(*(LPCSTR *)*puVar1,(HANDLE)0x0,8);
      FUN_0043c1dd();
      uVar5 = uVar5 + 1;
    } while (uVar5 < local_24);
  }
  hModule = LoadLibraryExA(param_1,(HANDLE)0x0,8);
  pFVar2 = GetProcAddress(hModule,"NS_GetFrozenFunctions");
  if (pFVar2 == (FARPROC)0x0) {
    FreeLibrary(hModule);
    local_8 = 0xffffffff;
    FUN_00853f30();
    uVar4 = 0x80004005;
  }
  else {
    _DAT_032bc568 = 1;
    _DAT_032bc56c = 0x98;
    iVar3 = (*pFVar2)(&DAT_032bc568,param_1);
    if (iVar3 < 0) {
      FreeLibrary(hModule);
      uVar4 = 0x80004005;
    }
    local_8 = 0xffffffff;
    FUN_00853f30();
  }
  return uVar4;
}



void __fastcall FUN_008206ee(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMAttr>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00820702(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMText>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00820716(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMHTMLElement>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_0082072a(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMHTMLButtonElement>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_0082073e(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMHTMLInputElement>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00820752(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMHTMLLinkElement>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00820766(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMHTMLOptionElement>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_0082077a(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMHTMLParamElement>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_0082078e(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMHTMLSelectElement>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_008207a2(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIDOMHTMLTextAreaElement>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_008207b6(void)

{
  undefined **local_18;
  int *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x8207c2;
  FUN_008196c7(&stack0x00000004);
  local_8 = 0;
  FUN_00819733(&local_18);
  FUN_0081975e(&local_18);
  local_8 = 0xffffffff;
  local_18 = ns_smartptr<class_nsISupports>::vftable;
  if (local_14 != (int *)0x0) {
    (**(code **)(*local_14 + 8))(local_14);
  }
  return;
}



void __fastcall FUN_0082080b(undefined4 *param_1)

{
  *param_1 = ns_smartptr<class_nsIDOMNode>::vftable;
  param_1[1] = 0;
  param_1[2] = ns_smartptr<class_nsIDOMAttr>::vftable;
  param_1[3] = 0;
  param_1[4] = ns_smartptr<class_nsIDOMText>::vftable;
  param_1[5] = 0;
  param_1[6] = ns_smartptr<class_nsIDOMElement>::vftable;
  param_1[7] = 0;
  param_1[8] = ns_smartptr<class_nsIDOMDocument>::vftable;
  param_1[9] = 0;
  param_1[10] = ns_smartptr<class_nsIDOMHTMLElement>::vftable;
  param_1[0xb] = 0;
  param_1[0xc] = ns_smartptr<class_nsIDOMHTMLAnchorElement>::vftable;
  param_1[0xd] = 0;
  param_1[0xe] = ns_smartptr<class_nsIDOMHTMLButtonElement>::vftable;
  param_1[0xf] = 0;
  param_1[0x10] = ns_smartptr<class_nsIDOMHTMLInputElement>::vftable;
  param_1[0x11] = 0;
  param_1[0x12] = ns_smartptr<class_nsIDOMHTMLLinkElement>::vftable;
  param_1[0x13] = 0;
  param_1[0x14] = ns_smartptr<class_nsIDOMHTMLOptionElement>::vftable;
  param_1[0x15] = 0;
  param_1[0x16] = ns_smartptr<class_nsIDOMHTMLParamElement>::vftable;
  param_1[0x17] = 0;
  param_1[0x18] = ns_smartptr<class_nsIDOMHTMLSelectElement>::vftable;
  param_1[0x19] = 0;
  param_1[0x1a] = ns_smartptr<class_nsIDOMHTMLTextAreaElement>::vftable;
  param_1[0x1b] = 0;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_0082089b(void)

{
  FUN_008207a2();
  FUN_0082078e();
  FUN_0082077a();
  FUN_00820766();
  FUN_00820752();
  FUN_0082073e();
  FUN_0082072a();
  FUN_0081987d();
  FUN_00820716();
  FUN_00819813();
  FUN_008197d4();
  FUN_00820702();
  FUN_008206ee();
  FUN_0081971f();
  return;
}



void FUN_0082095c(int param_1)

{
  FUN_0081a2a5(*(undefined4 *)(*(int *)(param_1 + 4) + 4));
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00820971(void)

{
  FUN_008206ee();
  FUN_0081971f();
  return;
}



void FUN_0082099f(int param_1)

{
  FUN_008207b6(*(undefined4 *)(*(int *)(param_1 + 4) + 4));
  return;
}



undefined4 __fastcall FUN_008209b4(int param_1)

{
  return CONCAT31((int3)((uint)*(int *)(param_1 + 4) >> 8),*(int *)(*(int *)(param_1 + 4) + 4) != 0)
  ;
}



undefined4 * __fastcall FUN_008209bf(undefined4 *param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  
  *param_1 = wxDOMNode::vftable;
  pvVar1 = operator_new(0x70);
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_0082080b();
  }
  param_1[1] = uVar2;
  return param_1;
}



undefined4 __thiscall FUN_008209e6(undefined4 param_1_00,undefined4 param_1)

{
  FUN_0082095c(param_1);
  return param_1_00;
}



undefined4 * __fastcall FUN_008209f8(undefined4 *param_1)

{
  undefined4 *puVar1;
  
  *param_1 = wxDOMEvent::vftable;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    *puVar1 = ns_smartptr<class_nsIDOMNode>::vftable;
    puVar1[3] = 0;
    puVar1[2] = ns_smartptr<class_nsIDOMAttr>::vftable;
  }
  param_1[1] = puVar1;
  return param_1;
}



undefined4 __thiscall FUN_00820a2d(undefined4 param_1_00,undefined4 param_1)

{
  FUN_0082099f(param_1);
  return param_1_00;
}



void __fastcall FUN_00820a3f(undefined4 *param_1)

{
  int iVar1;
  
  iVar1 = param_1[1];
  *param_1 = wxDOMNode::vftable;
  if (iVar1 != 0) {
    FUN_0082089b();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __fastcall FUN_00820a5d(undefined4 *param_1)

{
  int iVar1;
  
  iVar1 = param_1[1];
  *param_1 = wxDOMEvent::vftable;
  if (iVar1 != 0) {
    FUN_00820971();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00820a7b(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  FUN_0092a2f0();
  *param_1_00 = wxFrame::vftable;
  FUN_00928670();
  FUN_00928810(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  return param_1_00;
}



undefined ** FUN_00820ac8(void)

{
  return &PTR_PTR_00d1ffa0;
}



undefined * FUN_00820ace(void)

{
  return &DAT_032bc618;
}



void __fastcall FUN_00820ad4(undefined4 *param_1)

{
  *param_1 = wxWebFrame::vftable;
  FUN_00928690();
  return;
}



undefined4 __fastcall FUN_00820ae6(int param_1)

{
  return *(undefined4 *)(param_1 + 0x228);
}



undefined4 __thiscall FUN_00820aed(undefined4 param_1,byte param_2)

{
  FUN_00820ad4();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 * __thiscall
FUN_00820b09(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined local_48 [36];
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0x820b15;
  local_14 = param_1_00;
  FUN_0043c211("frame");
  local_8 = 0;
  FUN_00820a7b(param_1,param_2,param_3,param_4,param_5,param_6,local_48);
  local_8._0_1_ = 2;
  FUN_0040159c();
  *param_1_00 = wxWebFrame::vftable;
  *(undefined *)(param_1_00 + 0x8b) = 1;
  pvVar1 = operator_new(0x1cc);
  local_8._0_1_ = 3;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    local_1c = 200;
    local_18 = 200;
    local_24 = 0;
    local_20 = 0;
    uVar2 = FUN_0081ec31(param_1_00,0xffffffff,&local_24,&local_1c);
  }
  local_8._0_1_ = 2;
  param_1_00[0x8a] = uVar2;
  pvVar1 = operator_new(0x58);
  local_8._0_1_ = 4;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00445f46(8);
  }
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00445d61(param_1_00[0x8a],1,0x2000,0,0);
  FUN_0091c600(uVar2,1);
  return param_1_00;
}



void FUN_00820bf9(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  
  iVar1 = FUN_0084a340();
  if (iVar1 != 0) {
    FUN_0084f210(param_1,param_2);
    return;
  }
  FUN_0084d360(param_1);
  return;
}



undefined ** FUN_00820c1d(void)

{
  return &PTR_PTR_00d213f8;
}



undefined * FUN_00820c23(void)

{
  return &DAT_032bc694;
}



undefined4 FUN_00820c29(int param_1)

{
  *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
  return *(undefined4 *)(param_1 + 0xc);
}



int FUN_00820c36(int *param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = param_1 + 3;
  *piVar1 = *piVar1 + -1;
  iVar2 = param_1[3];
  if (*piVar1 == 0) {
    (**(code **)(*param_1 + 0x38))(1);
    iVar2 = 0;
  }
  return iVar2;
}



void __fastcall FUN_00820c4e(undefined4 *param_1)

{
  *param_1 = PromptService::vftable;
  param_1[1] = PromptService::vftable;
  param_1[2] = PromptService::vftable;
  return;
}



undefined4 FUN_00820c63(void)

{
  return 0;
}



undefined4 FUN_00820c68(void)

{
  undefined4 *param_8;
  
  *param_8 = 1;
  return 0;
}



undefined4 FUN_00820c77(void)

{
  return 0;
}



undefined4 FUN_00820c7c(void)

{
  return 0;
}



undefined4 FUN_00820c81(void)

{
  undefined4 *param_5;
  
  FUN_00819618();
  *param_5 = 1;
  return 0;
}



undefined4 FUN_00820c97(int param_1)

{
  int *piVar1;
  
  piVar1 = (int *)(param_1 + 4);
  *piVar1 = *piVar1 + -1;
  if (*piVar1 == 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return *(undefined4 *)(param_1 + 4);
}



void FUN_00820caf(void)

{
  int *piVar1;
  int *piVar2;
  int **unaff_retaddr;
  
  piVar1 = (int *)operator_new(8);
  piVar2 = (int *)0x0;
  if (piVar1 != (int *)0x0) {
    *piVar1 = (int)TransferFactory::vftable;
    piVar1[1] = 0;
    piVar2 = piVar1;
  }
  (**(code **)(*piVar2 + 4))(piVar2);
  *unaff_retaddr = piVar2;
  return;
}



undefined4 FUN_00820cd7(int param_1)

{
  *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
  return *(undefined4 *)(param_1 + 8);
}



undefined4 FUN_00820ce4(int param_1)

{
  int *piVar1;
  
  piVar1 = (int *)(param_1 + 8);
  *piVar1 = *piVar1 + -1;
  if (*piVar1 == 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return *(undefined4 *)(param_1 + 8);
}



undefined4 FUN_00820cfc(int param_1)

{
  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
  return *(undefined4 *)(param_1 + 4);
}



void FUN_00820d09(void)

{
  int *piVar1;
  int *piVar2;
  int **unaff_retaddr;
  
  piVar1 = (int *)operator_new(8);
  piVar2 = (int *)0x0;
  if (piVar1 != (int *)0x0) {
    *piVar1 = (int)UnknownContentTypeHandlerFactory::vftable;
    piVar1[1] = 0;
    piVar2 = piVar1;
  }
  (**(code **)(*piVar2 + 4))(piVar2);
  *unaff_retaddr = piVar2;
  return;
}



undefined4 * __thiscall FUN_00820d31(undefined4 *param_1_00,undefined4 *param_1,int param_2)

{
  *param_1_00 = *param_1;
  param_1_00[1] = param_2;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 == -1)) {
    FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/string.h",0x1ec,
                 "wxString::SubstrBufFromType<wchar_t const *>::SubstrBufFromType","len != npos",
                 "must have real length");
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00820d7b(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIURIFixup>::vftable;
  (**(code **)*param_1)(&DAT_0322e490,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00820d9b(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIURIFixup>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00820daf(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIRecentBadCertsService>::vftable;
  (**(code **)*param_1)(&DAT_0322e470,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00820dcf(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIRecentBadCertsService>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00820de3(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsISSLStatus>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00820df7(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsICertOverrideService>::vftable;
  (**(code **)*param_1)(&DAT_0322e480,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00820e17(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsICertOverrideService>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void __fastcall FUN_00820e2b(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIX509Cert>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall
FUN_00820e3f(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 9) != uVar1)) {
    FUN_008402e0("D:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<int>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



void FUN_00820e9e(void)

{
  FUN_00820c36();
  return;
}



void FUN_00820ea8(void)

{
  FUN_00820c36();
  return;
}



void FUN_00820eb2(void)

{
  FUN_00820c29();
  return;
}



undefined4 FUN_00820ebc(undefined4 param_1,short *param_2,int param_3)

{
  short sVar1;
  short *psVar2;
  int iVar3;
  
  iVar3 = param_3;
  if ((param_2 != (short *)0x0) && (param_3 == -1)) {
    psVar2 = param_2;
    do {
      sVar1 = *psVar2;
      psVar2 = psVar2 + 1;
    } while (sVar1 != 0);
    iVar3 = (int)psVar2 - (int)(param_2 + 1) >> 1;
  }
  FUN_00820d31(&param_2,iVar3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00820ef8(int param_1)

{
  undefined4 uVar1;
  undefined **local_20;
  int *local_1c;
  undefined **local_18;
  int *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0x820f04;
  FUN_0081f8d4(&local_20);
  local_14[0] = (int *)0x0;
  local_18 = ns_smartptr<class_nsIWebBrowserChrome>::vftable;
  local_8._0_1_ = 1;
  local_8._1_3_ = 0;
  if ((param_1 == 0) || (local_1c == (int *)0x0)) {
    local_8 = 0xffffffff;
    local_18 = ns_smartptr<class_nsIWebBrowserChrome>::vftable;
    local_20 = ns_smartptr<class_nsIWindowWatcher>::vftable;
    if (local_1c != (int *)0x0) {
      (**(code **)(*local_1c + 8))(local_1c);
    }
    uVar1 = 0;
  }
  else {
    (**(code **)(*local_1c + 0x28))(local_1c,param_1,local_14);
    uVar1 = FUN_0081a9d5(local_14[0]);
    local_8 = (uint)local_8._1_3_ << 8;
    local_18 = ns_smartptr<class_nsIWebBrowserChrome>::vftable;
    if (local_14[0] != (int *)0x0) {
      (**(code **)(*local_14[0] + 8))(local_14[0]);
    }
    local_8 = 0xffffffff;
    local_20 = ns_smartptr<class_nsIWindowWatcher>::vftable;
    if (local_1c != (int *)0x0) {
      (**(code **)(*local_1c + 8))(local_1c);
    }
  }
  return uVar1;
}



int FUN_00820f97(undefined4 param_1)

{
  char cVar1;
  int iVar2;
  int iVar3;
  
  iVar2 = FUN_00820ef8(param_1);
  if (iVar2 == 0) {
    return 0;
  }
  do {
    cVar1 = FUN_0083e950(&PTR_u_wxFrame_03239cfc);
    iVar3 = iVar2;
    if (cVar1 != '\0') {
      return iVar3;
    }
    iVar2 = *(int *)(iVar2 + 0x44);
  } while (iVar2 != 0);
  return iVar3;
}



undefined4 FUN_00820fcb(int *param_1,undefined4 param_2,int **param_3)

{
  int iVar1;
  
  *param_3 = (int *)0x0;
  iVar1 = FUN_0081931a(&DAT_0322d074);
  if (((iVar1 == 0) && (iVar1 = FUN_0081931a(&DAT_0322e4c0), iVar1 == 0)) &&
     (iVar1 = FUN_0081931a(&DAT_0322e4d0), iVar1 == 0)) {
    iVar1 = FUN_0081931a(&DAT_0322e460);
    if (iVar1 == 0) {
      return 0x80004002;
    }
    (**(code **)(*param_1 + 4))(param_1);
    param_1 = param_1 + 1;
  }
  else {
    (**(code **)(*param_1 + 4))(param_1);
  }
  *param_3 = param_1;
  return 0;
}



undefined4 __thiscall FUN_00821041(undefined4 param_1_00,byte param_1)

{
  FUN_00820c4e();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0082105d(void)

{
  int *piVar1;
  int *piVar2;
  int **unaff_retaddr;
  
  piVar1 = (int *)operator_new(8);
  piVar2 = (int *)0x0;
  if (piVar1 != (int *)0x0) {
    *piVar1 = (int)PromptServiceFactory::vftable;
    piVar1[1] = 0;
    piVar2 = piVar1;
  }
  (**(code **)(*piVar2 + 4))(piVar2);
  *unaff_retaddr = piVar2;
  return;
}



undefined4 FUN_00821085(int *param_1,undefined4 param_2,int **param_3)

{
  int iVar1;
  
  *param_3 = (int *)0x0;
  iVar1 = FUN_0081931a(&DAT_0322d074);
  if ((((iVar1 == 0) && (iVar1 = FUN_0081931a(&DAT_0322e078), iVar1 == 0)) &&
      (iVar1 = FUN_0081931a(&DAT_0322e058), iVar1 == 0)) &&
     (iVar1 = FUN_0081931a(&DAT_0322d2f4), iVar1 == 0)) {
    return 0x80004002;
  }
  (**(code **)(*param_1 + 4))(param_1);
  *param_3 = param_1;
  return 0;
}



undefined4 FUN_008210ed(int *param_1,undefined4 param_2,int **param_3)

{
  int iVar1;
  
  *param_3 = (int *)0x0;
  iVar1 = FUN_0081931a(&DAT_0322e450);
  if ((iVar1 == 0) && (iVar1 = FUN_0081931a(&DAT_0322d074), iVar1 == 0)) {
    return 0x80004002;
  }
  (**(code **)(*param_1 + 4))(param_1);
  *param_3 = param_1;
  return 0;
}



undefined4 FUN_00821134(int *param_1,undefined4 param_2,int **param_3)

{
  int iVar1;
  
  *param_3 = (int *)0x0;
  iVar1 = FUN_0081931a(&DAT_0322d074);
  if ((iVar1 == 0) && (iVar1 = FUN_0081931a(&DAT_0322e4b0), iVar1 == 0)) {
    iVar1 = FUN_0081931a(&DAT_0322e4a0);
    if (iVar1 == 0) {
      return 0x80004002;
    }
    (**(code **)(*param_1 + 4))(param_1);
    param_1 = param_1 + 1;
  }
  else {
    (**(code **)(*param_1 + 4))(param_1);
  }
  *param_3 = param_1;
  return 0;
}



void FUN_0082119a(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  (**(code **)(*(int *)(param_1 + -4) + 0x10))
            ((int *)(param_1 + -4),param_2,param_3,param_4,param_5,0,param_6);
  return;
}



undefined4 * __thiscall FUN_008211be(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIDOMWindow>::vftable;
  (**(code **)*param_1)(&DAT_0322d264,param_1_00 + 1);
  return param_1_00;
}



undefined4 * __thiscall FUN_008211de(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIMIMEInfo18>::vftable;
  (**(code **)*param_1)(&DAT_0322e788,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_008211fe(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIMIMEInfo18>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00821212(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = ns_smartptr<class_nsIMIMEInfo>::vftable;
  (**(code **)*param_1)(&DAT_0322e798,param_1_00 + 1);
  return param_1_00;
}



void __fastcall FUN_00821232(undefined4 *param_1)

{
  int *piVar1;
  
  *param_1 = ns_smartptr<class_nsIMIMEInfo>::vftable;
  piVar1 = (int *)param_1[1];
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1);
  }
  return;
}



void FUN_00821246(void)

{
  FUN_00820ce4();
  return;
}



void FUN_00821250(void)

{
  FUN_00820cd7();
  return;
}



void FUN_0082125a(void)

{
  FUN_00821134();
  return;
}



void FUN_00821264(void)

{
  FUN_00820fcb();
  return;
}



void FUN_0082126e(void)

{
  FUN_00820fcb();
  return;
}



void FUN_00821278(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_00820ebc(&local_c,param_1,param_3);
  FUN_00420f3f(local_c,param_2,local_8);
  return;
}



undefined4 FUN_00821334(void)

{
  return 0;
}



undefined4 FUN_00821339(void)

{
  return 0;
}



undefined4 FUN_0082133e(void)

{
  return 0;
}



int FUN_008213b7(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_00821278(param_1,0,0xffffffff);
  if (iVar1 == -1) {
    iVar1 = -1;
  }
  return iVar1;
}



undefined4 FUN_008213d6(void)

{
  return 0;
}



undefined4 FUN_008213db(undefined4 param_1,int param_2,undefined4 param_3,int param_4)

{
  char cVar1;
  int *piVar2;
  undefined4 uVar3;
  
  if (param_4 == 0) {
    return 0x80004003;
  }
  if (param_2 != 0) {
    return 0x80040110;
  }
  cVar1 = FUN_0081961e();
  if (cVar1 == '\0') {
    piVar2 = (int *)operator_new(8);
    if (piVar2 == (int *)0x0) goto LAB_0082142e;
    *piVar2 = (int)TransferService::vftable;
  }
  else {
    piVar2 = (int *)operator_new(8);
    if (piVar2 == (int *)0x0) {
LAB_0082142e:
      piVar2 = (int *)0x0;
      goto LAB_00821430;
    }
    *piVar2 = (int)TransferService18::vftable;
  }
  piVar2[1] = 0;
LAB_00821430:
  if (piVar2 == (int *)0x0) {
    uVar3 = 0x8007000e;
  }
  else {
    (**(code **)(*piVar2 + 4))(piVar2);
    uVar3 = (**(code **)*piVar2)(piVar2,param_3,param_4);
    (**(code **)(*piVar2 + 8))(piVar2);
  }
  return uVar3;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_0082145c(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  undefined local_80 [36];
  undefined local_5c [36];
  undefined local_38 [48];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x70;
  local_8 = 0x821468;
  FUN_00820120(local_80,param_3);
  local_8 = 0;
  FUN_00820120(local_38,param_4);
  local_8 = CONCAT31(local_8._1_3_,1);
  FUN_00820120(local_5c,param_5);
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_008214bc(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 uint *param_5)

{
  undefined4 uVar1;
  int iVar2;
  undefined local_5c [36];
  undefined local_38 [48];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0x8214c8;
  FUN_00820120(local_5c,param_3);
  local_8 = 0;
  FUN_00820120(local_38,param_4);
  local_8 = CONCAT31(local_8._1_3_,1);
  uVar1 = FUN_00820f97(param_2,0xffffffff,0xffffffff);
  iVar2 = FUN_008fe490(local_38,local_5c,10,uVar1);
  if (param_5 != (uint *)0x0) {
    *param_5 = (uint)(iVar2 == 2);
  }
  FUN_0040159c();
  FUN_0040159c();
  FUN_00a421fb();
  return;
}



void FUN_00821542(void)

{
  FUN_0040159c();
  FUN_00924620();
  return;
}



undefined4 FUN_00821558(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_00820e3f(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,0);
  return param_1;
}



undefined4 __thiscall FUN_0082158c(int param_1_00,undefined4 param_1)

{
  FUN_004325a0(param_1_00 + 500);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

undefined4 * __thiscall FUN_008215aa(undefined4 *param_1_00,int *param_1)

{
  undefined uVar1;
  undefined4 uVar2;
  void *pvVar3;
  int *piVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 uVar7;
  undefined *puVar8;
  undefined local_1b4 [36];
  undefined local_190 [36];
  undefined local_16c [36];
  undefined local_148 [36];
  undefined local_124 [36];
  undefined local_100 [36];
  undefined local_dc [36];
  undefined local_b8 [36];
  undefined local_94 [36];
  void *local_70;
  undefined4 local_68;
  undefined4 local_64 [9];
  undefined4 *local_40;
  undefined local_3c [8];
  int local_34;
  int local_30;
  undefined4 local_2c;
  int local_28;
  undefined4 local_24;
  undefined4 local_20;
  int *local_1c;
  int *local_18;
  int local_14;
  void *local_10;
  int *local_c;
  int *local_8;
  
  local_64[0] = 0x144;
  local_68 = 0x8215bd;
  local_8 = (int *)0x0;
  local_40 = param_1_00;
  FUN_0043c211("dialog");
  local_68 = 0;
  FUN_004325b6(PTR_DAT_03236318);
  local_68._0_1_ = 1;
  FUN_0043c211("Authentication Required");
  puVar8 = local_124;
  uVar7 = 0x20001801;
  piVar4 = &local_14;
  puVar5 = &DAT_03238d0c;
  local_68._0_1_ = 2;
  local_14 = 400;
  local_10 = (void *)0xc8;
  uVar2 = FUN_00820bf9(local_148,local_dc,&DAT_03238d0c,piVar4,0x20001801,puVar8);
  FUN_00481a0d(param_1,0xffffffff,uVar2,puVar5,piVar4,uVar7,puVar8);
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  *param_1_00 = PromptDlgPassword::vftable;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0x7c));
  param_1_00[0x83] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0x85));
  param_1_00[0x8c] = 0;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
            ((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
              *)(param_1_00 + 0x8e));
  param_1_00[0x95] = 0;
  local_68._0_1_ = 9;
  pvVar3 = operator_new(0x194);
  local_68._0_1_ = 10;
  uVar1 = (undefined)local_68;
  local_68._0_1_ = 10;
  if (pvVar3 == (void *)0x0) {
    local_24 = 0;
    local_68._0_1_ = uVar1;
  }
  else {
    FUN_0043c211("staticText");
    local_68 = CONCAT31(local_68._1_3_,0xb);
    local_8 = (int *)0x1;
    FUN_004325b6(PTR_DAT_03236318);
    local_68 = 0xc;
    local_8 = (int *)0x3;
    FUN_0043c211("User Name:");
    puVar8 = local_148;
    uVar7 = 0;
    puVar6 = &DAT_03238d04;
    puVar5 = &DAT_03238d0c;
    local_68._0_1_ = 0xd;
    local_68._1_3_ = 0;
    local_8 = (int *)0x7;
    uVar2 = FUN_00820bf9(local_124,local_dc,&DAT_03238d0c,&DAT_03238d04,0,puVar8);
    local_24 = FUN_00483552(param_1_00,0xffffffff,uVar2,puVar5,puVar6,uVar7,puVar8);
  }
  if (((uint)local_8 & 4) != 0) {
    local_8 = (int *)((uint)local_8 & 0xfffffffb);
    FUN_0040159c();
  }
  if (((uint)local_8 & 2) != 0) {
    local_8 = (int *)((uint)local_8 & 0xfffffffd);
    FUN_0040159c();
  }
  local_68 = 9;
  if (((uint)local_8 & 1) != 0) {
    local_8 = (int *)((uint)local_8 & 0xfffffffe);
    FUN_0040159c();
  }
  pvVar3 = operator_new(0x3b8);
  local_68._0_1_ = 0x11;
  if (pvVar3 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    FUN_0043c211(&DAT_00d5ef5c);
    local_8 = (int *)((uint)local_8 | 8);
    local_68 = CONCAT31(local_68._1_3_,0x12);
    uVar2 = FUN_00484074(param_1_00,6000,param_1_00 + 0x85,&DAT_03238d0c,&DAT_03238d04,0,
                         &DAT_032c0398,local_b8);
  }
  param_1_00[0x98] = uVar2;
  local_68 = 9;
  if (((uint)local_8 & 8) != 0) {
    local_8 = (int *)((uint)local_8 & 0xfffffff7);
    FUN_0040159c();
  }
  pvVar3 = operator_new(0x58);
  local_68._0_1_ = 0x14;
  if (pvVar3 == (void *)0x0) {
    local_1c = (int *)0x0;
  }
  else {
    local_1c = (int *)FUN_00445f46(4);
  }
  local_68._0_1_ = 9;
  FUN_00445d61(local_24,0,0x900,0,0);
  FUN_00445d61(param_1_00[0x98],1,0x2000,0,0);
  pvVar3 = operator_new(0x194);
  local_68._0_1_ = 0x15;
  uVar1 = (undefined)local_68;
  local_68._0_1_ = 0x15;
  if (pvVar3 == (void *)0x0) {
    local_20 = 0;
    local_68._0_1_ = uVar1;
  }
  else {
    FUN_0043c211("staticText");
    local_8 = (int *)((uint)local_8 | 0x10);
    local_68 = CONCAT31(local_68._1_3_,0x16);
    FUN_004325b6(PTR_DAT_03236318);
    local_8 = (int *)((uint)local_8 | 0x20);
    local_68 = 0x17;
    FUN_0043c211("Password:");
    local_8 = (int *)((uint)local_8 | 0x40);
    puVar8 = local_1b4;
    uVar7 = 0;
    puVar6 = &DAT_03238d04;
    puVar5 = &DAT_03238d0c;
    local_68._0_1_ = 0x18;
    local_68._1_3_ = 0;
    uVar2 = FUN_00820bf9(local_b8,local_190,&DAT_03238d0c,&DAT_03238d04,0,puVar8);
    local_20 = FUN_00483552(param_1_00,0xffffffff,uVar2,puVar5,puVar6,uVar7,puVar8);
  }
  if (((uint)local_8 & 0x40) != 0) {
    local_8 = (int *)((uint)local_8 & 0xffffffbf);
    FUN_0040159c();
  }
  if (((uint)local_8 & 0x20) != 0) {
    local_8 = (int *)((uint)local_8 & 0xffffffdf);
    FUN_0040159c();
  }
  local_68 = 9;
  if (((uint)local_8 & 0x10) != 0) {
    local_8 = (int *)((uint)local_8 & 0xffffffef);
    FUN_0040159c();
  }
  pvVar3 = operator_new(0x3b8);
  local_68._0_1_ = 0x1c;
  if (pvVar3 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    FUN_0043c211(&DAT_00d5ef5c);
    local_8 = (int *)((uint)local_8 | 0x80);
    local_68 = CONCAT31(local_68._1_3_,0x1d);
    FUN_004325b6(PTR_DAT_03236318);
    local_8 = (int *)((uint)local_8 | 0x100);
    local_68._0_1_ = 0x1e;
    local_68._1_3_ = 0;
    uVar2 = FUN_00484074(param_1_00,0x1771,local_94,&DAT_03238d0c,&DAT_03238d04,0x800,&DAT_032c0398,
                         local_64);
  }
  param_1_00[0x99] = uVar2;
  if (((uint)local_8 & 0x100) != 0) {
    local_8 = (int *)((uint)local_8 & 0xfffffeff);
    FUN_0040159c();
  }
  local_68 = 9;
  if (((uint)local_8 & 0x80) != 0) {
    local_8 = (int *)((uint)local_8 & 0xffffff7f);
    FUN_0040159c();
  }
  pvVar3 = operator_new(0x58);
  local_68._0_1_ = 0x21;
  if (pvVar3 == (void *)0x0) {
    local_18 = (int *)0x0;
  }
  else {
    local_18 = (int *)FUN_00445f46(4);
  }
  local_68._0_1_ = 9;
  FUN_00445d61(local_20,0,0x900,0,0);
  FUN_00445d61(param_1_00[0x99],1,0x2000,0,0);
  pvVar3 = operator_new(0x1a0);
  local_68._0_1_ = 0x22;
  uVar1 = (undefined)local_68;
  local_68._0_1_ = 0x22;
  if (pvVar3 == (void *)0x0) {
    local_c = (int *)0x0;
    local_68._0_1_ = uVar1;
  }
  else {
    FUN_0043c211("button");
    local_8 = (int *)((uint)local_8 | 0x200);
    local_68 = CONCAT31(local_68._1_3_,0x23);
    FUN_004325b6(PTR_DAT_03236318);
    local_8 = (int *)((uint)local_8 | 0x400);
    local_68._0_1_ = 0x24;
    local_68._1_3_ = 0;
    local_c = (int *)FUN_0044c65b(param_1_00,0x13ec,local_64,&DAT_03238d0c,&DAT_03238d04,0,
                                  &DAT_032c0398,local_94);
  }
  if (((uint)local_8 & 0x400) != 0) {
    local_8 = (int *)((uint)local_8 & 0xfffffbff);
    FUN_0040159c();
  }
  local_68 = 9;
  if (((uint)local_8 & 0x200) != 0) {
    local_8 = (int *)((uint)local_8 & 0xfffffdff);
    FUN_0040159c();
  }
  pvVar3 = operator_new(0x1a0);
  local_68._0_1_ = 0x27;
  if (pvVar3 == (void *)0x0) {
    local_10 = (void *)0x0;
  }
  else {
    FUN_0043c211("button");
    local_8 = (int *)((uint)local_8 | 0x800);
    local_68 = CONCAT31(local_68._1_3_,0x28);
    FUN_004325b6(PTR_DAT_03236318);
    local_8 = (int *)((uint)local_8 | 0x1000);
    local_68._0_1_ = 0x29;
    local_68._1_3_ = 0;
    local_10 = (void *)FUN_0044c65b(param_1_00,0x13ed,local_16c,&DAT_03238d0c,&DAT_03238d04,0,
                                    &DAT_032c0398,local_100);
  }
  if (((uint)local_8 & 0x1000) != 0) {
    local_8 = (int *)((uint)local_8 & 0xffffefff);
    FUN_0040159c();
  }
  local_68 = 9;
  if (((uint)local_8 & 0x800) != 0) {
    local_8 = (int *)((uint)local_8 & 0xfffff7ff);
    FUN_0040159c();
  }
  pvVar3 = operator_new(0x6c);
  local_68._0_1_ = 0x2c;
  if (pvVar3 == (void *)0x0) {
    param_1 = (int *)0x0;
  }
  else {
    param_1 = (int *)FUN_00931d00();
  }
  local_68._0_1_ = 9;
  FUN_009315a0(local_c);
  FUN_009315a0(local_10);
  FUN_00931da0();
  (**(code **)(*param_1 + 0x10))(5);
  (**(code **)(*local_c + 0x378))();
  FUN_0092fff0(&local_2c);
  local_28 = local_28 + 0x10;
  (**(code **)(*param_1 + 0x54))(local_2c,local_28);
  FUN_004555c3(&local_34);
  FUN_004555c3(&local_14);
  local_c = (int *)local_30;
  if (local_30 <= (int)local_10) {
    local_c = (int *)local_10;
  }
  if (local_34 <= local_14) {
    local_34 = local_14;
  }
  local_34 = local_34 + 10;
  (**(code **)(*local_1c + 0x60))(local_24,local_34,local_c);
  (**(code **)(*local_18 + 0x60))(local_20,local_34,local_c);
  FUN_0043c211("wxART_MESSAGE_BOX_C");
  local_68._0_1_ = 0x2d;
  FUN_0043c211("wxART_QUESTION");
  local_68._0_1_ = 0x2e;
  FUN_00971c50(local_3c,local_100,local_16c,&DAT_03238d04);
  FUN_0040159c();
  local_68._0_1_ = 0x31;
  FUN_0040159c();
  local_10 = operator_new(0x1a0);
  local_68._0_1_ = 0x32;
  if (local_10 == (void *)0x0) {
    local_10 = (void *)0x0;
  }
  else {
    FUN_0043c211("staticBitmap");
    local_8 = (int *)((uint)local_8 | 0x2000);
    local_68 = CONCAT31(local_68._1_3_,0x33);
    local_10 = (void *)FUN_0044cb56(param_1_00,0xffffffff,local_3c,&DAT_03238d0c,&DAT_03238d04,0,
                                    local_64);
  }
  local_68 = 0x31;
  if (((uint)local_8 & 0x2000) != 0) {
    local_8 = (int *)((uint)local_8 & 0xffffdfff);
    FUN_0040159c();
  }
  local_c = (int *)operator_new(0x194);
  local_68._0_1_ = 0x35;
  if (local_c == (int *)0x0) {
    uVar2 = 0;
  }
  else {
    FUN_0043c211("staticText");
    local_8 = (int *)((uint)local_8 | 0x4000);
    local_68 = CONCAT31(local_68._1_3_,0x36);
    uVar2 = FUN_00483552(param_1_00,0xffffffff,param_1_00 + 0x7c,&DAT_03238d0c,&DAT_03238d04,0,
                         local_94);
  }
  param_1_00[0x97] = uVar2;
  local_68 = 0x31;
  if (((uint)local_8 & 0x4000) != 0) {
    FUN_0040159c();
  }
  local_c = (int *)operator_new(0x58);
  local_68._0_1_ = 0x38;
  if (local_c == (int *)0x0) {
    piVar4 = (int *)0x0;
  }
  else {
    piVar4 = (int *)FUN_00445f46(8);
  }
  local_68._0_1_ = 0x31;
  FUN_00445d61(param_1_00[0x97],0,0x2000,0,0);
  (**(code **)(*piVar4 + 0x10))(0x10);
  FUN_0044c6ab(local_1c,0,0x2000,0,0);
  (**(code **)(*piVar4 + 0x10))(8);
  FUN_0044c6ab(local_18,0,0x2000,0,0);
  local_c = (int *)operator_new(0x58);
  local_68._0_1_ = 0x39;
  if (local_c == (int *)0x0) {
    local_8 = (int *)0x0;
  }
  else {
    local_8 = (int *)FUN_00445f46(4);
  }
  local_68._0_1_ = 0x31;
  (**(code **)(*local_8 + 0x10))(7);
  FUN_00445d61(local_10,0,0x40,7,0);
  (**(code **)(*local_8 + 0x10))(0xf);
  FUN_0044c6ab(piVar4,1,0x2040,7,0);
  local_10 = operator_new(0x58);
  local_68._0_1_ = 0x3a;
  if (local_10 == (void *)0x0) {
    piVar4 = (int *)0x0;
  }
  else {
    piVar4 = (int *)FUN_00445f46(8);
  }
  local_68._0_1_ = 0x31;
  (**(code **)(*piVar4 + 0x10))(8);
  FUN_0044c6ab(local_8,0,0x2030,8,0);
  FUN_00445db1(0,0,1,0,0,0);
  FUN_0044c6ab(param_1,0,0x2000,0,0);
  FUN_0091c600(piVar4,1);
  FUN_0091d660();
  local_68 = CONCAT31(local_68._1_3_,9);
  FUN_008f7630();
  ExceptionList = local_70;
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall FUN_00821efe(undefined4 *param_1)

{
  *param_1 = PromptDlgPassword::vftable;
  FUN_00432199(L"            ");
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  FUN_00924620();
  return;
}



void __thiscall FUN_00821f5c(int *param_1_00,undefined4 param_1)

{
  FUN_0043261a(param_1);
  (**(code **)(*(int *)param_1_00[0x97] + 0x54))(param_1_00 + 0x7c);
  FUN_0095feb0(*(undefined4 *)(((int *)param_1_00[0x97])[0x36] + 0x14));
  (**(code **)(*param_1_00 + 0x204))();
  return;
}



void __fastcall FUN_00822036(int *param_1)

{
  FUN_00432199(&DAT_00fae9c8);
  FUN_00432199(&DAT_00fae9c8);
  (**(code **)(*param_1 + 0x398))(0x13ed);
  return;
}



undefined4 __thiscall FUN_0082206b(undefined4 param_1_00,byte param_1)

{
  FUN_00821efe();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00822087(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 *param_5,undefined4 param_6,undefined4 param_7,undefined4 *param_8)

{
  undefined4 uVar1;
  int iVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined *puVar5;
  undefined4 uVar6;
  undefined4 *puVar7;
  undefined local_2c4 [36];
  undefined4 local_2a0;
  undefined local_80 [36];
  undefined local_5c [36];
  undefined local_38 [48];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2b4;
  local_8 = 0x822096;
  local_2a0 = param_4;
  FUN_00820120(local_5c,param_3);
  local_8 = 0;
  FUN_00820120(local_38,local_2a0);
  local_8._0_1_ = 1;
  FUN_00820120(local_80,*param_5);
  puVar7 = &DAT_03238d0c;
  uVar6 = 0x15;
  puVar5 = local_80;
  puVar4 = local_5c;
  puVar3 = local_38;
  local_8._0_1_ = 2;
  uVar1 = FUN_00820f97(param_2,puVar3,puVar4,puVar5,0x15,&DAT_03238d0c);
  FUN_00972260(uVar1,puVar3,puVar4,puVar5,uVar6,puVar7);
  local_8._0_1_ = 3;
  iVar2 = FUN_009246b0();
  if (iVar2 == 0x13ec) {
    uVar1 = FUN_0082158c(local_2c4);
    local_8._0_1_ = 4;
    uVar1 = FUN_0081ff41(uVar1);
    *param_5 = uVar1;
    FUN_0040159c();
    *param_8 = 1;
  }
  else {
    *param_8 = 0;
  }
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00821542();
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00822180(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 *param_5,undefined4 *param_6,undefined4 param_7,undefined4 param_8,
                 undefined4 *param_9)

{
  undefined4 uVar1;
  int iVar2;
  undefined local_2a4 [36];
  undefined4 local_280;
  void *local_27c;
  undefined4 local_274;
  undefined4 local_270 [154];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_270;
  local_270[0] = 0x28;
  local_274 = 0x8221a4;
  local_280 = param_4;
  uVar1 = FUN_00820f97(param_2);
  FUN_008215aa(uVar1);
  local_274 = 0;
  uVar1 = FUN_00820120(local_2a4,local_280);
  local_274._0_1_ = 1;
  FUN_00821f5c(uVar1);
  local_274._0_1_ = 0;
  FUN_0040159c();
  iVar2 = FUN_009246b0();
  if (iVar2 == 0x13ec) {
    uVar1 = FUN_00489398(local_2a4);
    local_274._0_1_ = 2;
    uVar1 = FUN_0081ff41(uVar1);
    *param_5 = uVar1;
    local_274._0_1_ = 0;
    FUN_0040159c();
    uVar1 = FUN_00484f30(local_2a4);
    local_274 = CONCAT31(local_274._1_3_,3);
    uVar1 = FUN_0081ff41(uVar1);
    *param_6 = uVar1;
    FUN_0040159c();
    *param_9 = 1;
  }
  else {
    *param_9 = 0;
  }
  local_274 = 0xffffffff;
  FUN_00821efe();
  ExceptionList = local_27c;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

undefined4 FUN_00822293(void)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  undefined2 *param_4;
  undefined4 *param_5;
  undefined local_a0 [36];
  undefined local_7c [36];
  void *local_58;
  undefined4 local_50;
  undefined4 local_4c [9];
  undefined local_28 [36];
  
  local_4c[0] = 0x48;
  local_50 = 0x8222a3;
  cVar1 = FUN_00819618();
  if (cVar1 == '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_50 = 0;
    FUN_0043c211("Website Certified by an Unknown Authority");
    local_50._0_1_ = 1;
    FUN_004325b6(PTR_DAT_03236318);
    local_50._0_1_ = 2;
    FUN_0043c211(
                "The requested web page is certified by an unknown authority.  Would you like to continue?"
                );
    local_50 = CONCAT31(local_50._1_3_,3);
    uVar2 = FUN_00820bf9(local_4c,local_a0,0x40b,0,0xffffffff,0xffffffff);
    uVar2 = FUN_00820bf9(local_7c,local_28,uVar2);
    iVar3 = FUN_008fe490(uVar2);
    FUN_0040159c();
    FUN_0040159c();
    FUN_0040159c();
    FUN_0040159c();
    if (iVar3 != 2) {
      *param_5 = 0;
      ExceptionList = local_58;
      return 0;
    }
    *param_4 = 1;
  }
  *param_5 = 1;
  ExceptionList = local_58;
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00822381(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 int *param_5,undefined4 param_6,undefined4 param_7,undefined4 *param_8)

{
  undefined4 uVar1;
  int iVar2;
  undefined local_2e4 [36];
  undefined local_2c0 [36];
  undefined local_29c [16];
  undefined local_28c [16];
  void *local_27c;
  undefined4 local_274;
  undefined4 local_270 [154];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_270;
  local_270[0] = 0x68;
  local_274 = 0x8223a5;
  uVar1 = FUN_00820f97(param_2);
  FUN_008215aa(uVar1);
  local_274 = 0;
  FUN_004325b6(PTR_DAT_03236318);
  local_274._0_1_ = 1;
  FUN_0043c211("Please enter a username and password:");
  local_274._0_1_ = 2;
  uVar1 = FUN_00820bf9(local_2e4,local_2c0);
  FUN_00821f5c(uVar1);
  FUN_0040159c();
  local_274._0_1_ = 0;
  FUN_0040159c();
  iVar2 = FUN_009246b0();
  if (iVar2 == 0x13ec) {
    FUN_0081f664(local_28c);
    local_274._0_1_ = 3;
    FUN_0081f664(local_29c);
    local_274._0_1_ = 4;
    uVar1 = FUN_00489398(local_2c0);
    local_274._0_1_ = 5;
    FUN_0081fee2(uVar1,local_28c);
    local_274._0_1_ = 4;
    FUN_0040159c();
    uVar1 = FUN_00484f30(local_2c0);
    local_274._0_1_ = 6;
    FUN_0081fee2(uVar1,local_29c);
    local_274._0_1_ = 4;
    FUN_0040159c();
    (**(code **)(*param_5 + 0x1c))(param_5,local_28c);
    (**(code **)(*param_5 + 0x24))(param_5,local_29c);
    *param_8 = 1;
    local_274._0_1_ = 3;
    FUN_0081f686(local_29c);
    local_274 = (uint)local_274._1_3_ << 8;
    FUN_0081f686(local_28c);
  }
  else {
    *param_8 = 0;
  }
  local_274 = 0xffffffff;
  FUN_00821efe();
  ExceptionList = local_27c;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

undefined4 FUN_00822507(void)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 *param_5;
  undefined local_a0 [36];
  undefined local_7c [36];
  undefined local_58 [36];
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x90;
  local_8 = 0x822516;
  cVar1 = FUN_00819618();
  if (cVar1 == '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_8 = 0;
    FUN_0043c211("Domain Mismatch");
    local_8._0_1_ = 1;
    FUN_004325b6(PTR_DAT_03236318);
    local_8._0_1_ = 2;
    FUN_0043c211(
                "The requested web page uses a certificate which does not match the domain.  Would you like to continue?"
                );
    local_8 = CONCAT31(local_8._1_3_,3);
    uVar2 = FUN_00820bf9(local_58,local_a0,0x40b,0,0xffffffff,0xffffffff);
    uVar2 = FUN_00820bf9(local_7c,local_34,uVar2);
    iVar3 = FUN_008fe490(uVar2);
    FUN_0040159c();
    FUN_0040159c();
    FUN_0040159c();
    FUN_0040159c();
    if (iVar3 != 2) {
      *param_5 = 0;
      return 0;
    }
  }
  *param_5 = 1;
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

undefined4 FUN_008225e7(void)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 *param_4;
  undefined local_a0 [36];
  undefined local_7c [36];
  void *local_58;
  undefined4 local_50;
  undefined4 local_4c [9];
  undefined local_28 [36];
  
  local_4c[0] = 0x48;
  local_50 = 0x8225f7;
  cVar1 = FUN_00819618();
  if (cVar1 == '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_50 = 0;
    FUN_0043c211("Certificate Expired");
    local_50._0_1_ = 1;
    FUN_004325b6(PTR_DAT_03236318);
    local_50._0_1_ = 2;
    FUN_0043c211(
                "The requested web page uses a certificate which has expired.  Would you like to continue?"
                );
    local_50 = CONCAT31(local_50._1_3_,3);
    uVar2 = FUN_00820bf9(local_4c,local_a0,0x40b,0,0xffffffff,0xffffffff);
    uVar2 = FUN_00820bf9(local_7c,local_28,uVar2);
    iVar3 = FUN_008fe490(uVar2);
    FUN_0040159c();
    FUN_0040159c();
    FUN_0040159c();
    FUN_0040159c();
    if (iVar3 != 2) {
      *param_4 = 0;
      ExceptionList = local_58;
      return 0;
    }
  }
  *param_4 = 1;
  ExceptionList = local_58;
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_008226cc(undefined4 param_1,int *param_2,undefined4 param_3)

{
  undefined uVar1;
  char cVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  undefined4 *puVar6;
  int *piVar7;
  undefined local_250 [16];
  undefined local_240 [16];
  undefined4 local_230;
  undefined local_22c [4];
  undefined local_228 [16];
  int *local_218;
  undefined **local_214;
  int *local_210;
  undefined **local_20c;
  int *local_208;
  undefined **local_204;
  int *local_200;
  undefined **local_1fc;
  int *local_1f8;
  undefined **local_1f4;
  int *local_1f0;
  undefined **local_1ec;
  int *local_1e8;
  void *local_1e4;
  undefined4 local_1dc;
  undefined4 local_1d8 [2];
  int local_1d0;
  int local_c4;
  undefined local_c0 [20];
  int local_ac;
  int *local_9c;
  undefined local_98 [36];
  undefined local_74 [24];
  undefined4 local_5c;
  undefined4 local_58;
  undefined local_50 [24];
  undefined4 local_38;
  undefined4 local_34;
  undefined local_2c [8];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_24 [4];
  undefined4 ***local_20 [5];
  uint local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_1d8;
  local_1d8[0] = 0x6c;
  local_1dc = 0x8226f0;
  local_230 = param_3;
  FUN_008196c7(&local_230);
  local_1dc = 0;
  uVar3 = FUN_0081a1f8(&local_1fc);
  local_1dc._0_1_ = 1;
  FUN_008211be(uVar3);
  local_1dc._0_1_ = 3;
  FUN_008196e9();
  iVar4 = FUN_00820ef8(local_200);
  if (iVar4 == 0) {
    local_1dc = (uint)local_1dc._1_3_ << 8;
    local_204 = ns_smartptr<class_nsIDOMWindow>::vftable;
    if (local_200 != (int *)0x0) {
      (**(code **)(*local_200 + 8))(local_200);
    }
    goto LAB_00822ba5;
  }
  local_38 = 7;
  FUN_0040180b(0);
  local_34 = 0;
  local_1f4 = ns_smartptr<class_nsIURI>::vftable;
  local_1f0 = (int *)0x0;
  local_1dc._0_1_ = 5;
  (**(code **)(*param_2 + 0x14))(param_2,&local_1f0);
  if (local_1f0 != (int *)0x0) {
    FUN_0081f6c5(local_228);
    local_1dc._0_1_ = 6;
    iVar5 = (**(code **)(*local_1f0 + 0xc))(local_1f0,local_228);
    if (-1 < iVar5) {
      uVar3 = FUN_00820057(local_2c,local_228);
      local_1dc._0_1_ = 7;
      FUN_0043261a(uVar3);
      FUN_0040159c();
    }
    local_1dc._0_1_ = 5;
    FUN_0081f6e7(local_228);
  }
  FUN_0081f664(local_250);
  local_1dc._0_1_ = 8;
  (**(code **)(*param_2 + 0x18))(param_2,local_250);
  FUN_008200b0(local_98,local_250);
  local_1dc._0_1_ = 9;
  FUN_0081f6c5(local_240);
  local_1ec = ns_smartptr<class_nsISupports>::vftable;
  local_1e8 = (int *)0x0;
  local_1dc._0_1_ = 0xb;
  (**(code **)(*param_2 + 0x10))(param_2,&local_1e8);
  local_5c = 7;
  FUN_0040180b(0);
  local_58 = 0;
  local_1dc._0_1_ = 0xc;
  FUN_008211de(&local_1ec);
  local_1dc._0_1_ = 0xd;
  uVar1 = (undefined)local_1dc;
  local_1dc._0_1_ = 0xd;
  if (local_208 != (int *)0x0) {
    (**(code **)(*local_208 + 0x24))(local_208,local_240);
    uVar3 = FUN_00820057(local_2c,local_240);
    local_1dc._0_1_ = 0xe;
    FUN_0043261a(uVar3);
    local_1dc._0_1_ = 0xd;
    FUN_0040159c();
    uVar1 = (undefined)local_1dc;
  }
  local_1dc._0_1_ = uVar1;
  FUN_00821212(&local_1ec);
  local_1dc._0_1_ = 0xf;
  uVar1 = (undefined)local_1dc;
  local_1dc._0_1_ = 0xf;
  if (local_210 != (int *)0x0) {
    (**(code **)(*local_210 + 0x58))(local_210,local_240);
    uVar3 = FUN_00820057(local_2c,local_240);
    local_1dc._0_1_ = 0x10;
    FUN_0043261a(uVar3);
    local_1dc._0_1_ = 0xf;
    FUN_0040159c();
    uVar1 = (undefined)local_1dc;
  }
  local_1dc._0_1_ = uVar1;
  FUN_0081b6ad(DAT_032bc424,*(undefined4 *)(iVar4 + 0x40));
  local_1dc = CONCAT31(local_1dc._1_3_,0x11);
  local_1d0 = iVar4;
  FUN_0043261a(local_98);
  FUN_0043261a(local_74);
  FUN_0043261a(local_50);
  cVar2 = (**(code **)(**(int **)(iVar4 + 0x70) + 0x18))(local_1d8);
  if (cVar2 == '\0') {
    (**(code **)(*param_2 + 0x1c))(param_2,0,0);
  }
  else {
    if (local_c4 == 1) {
      (**(code **)(*param_2 + 0x20))(param_2,0,0);
    }
    else if (local_c4 == 2) {
      (**(code **)(*param_2 + 0x1c))(param_2,0,0);
    }
    else if (local_c4 == 3) {
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_008229cc:
        if (local_ac == 0) {
          (**(code **)(*param_2 + 0xc))(param_2,0x804b0002);
          goto LAB_00822ae1;
        }
      }
      else if (local_ac == 0) {
        FUN_00840480("..\\..\\src\\promptservice.cpp",0x501,"UnknownContentTypeHandler::Show",
                     "evt.m_download_action_path.Length() > 0",
                     L"You must specify a filename in the event object");
        goto LAB_008229cc;
      }
      puVar6 = (undefined4 *)FUN_0043242d(local_22c);
      local_1dc._0_1_ = 0x12;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                (local_24,*(char **)*puVar6);
      local_1dc._0_1_ = 0x14;
      FUN_0043c1dd();
      local_218 = (int *)0x0;
      if (local_c < 0x10) {
        local_20[0] = local_20;
      }
      FUN_0081f6d6(local_228,local_20[0],0xffffffff,2);
      local_1dc._0_1_ = 0x15;
      FUN_0081f692(local_228,1,&local_218);
      local_1dc = CONCAT31(local_1dc._1_3_,0x14);
      FUN_0081f6e7(local_228);
      (**(code **)(*param_2 + 0x1c))(param_2,local_218,0);
      if (local_218 != (int *)0x0) {
        (**(code **)(*local_218 + 8))(local_218);
      }
      local_1dc = CONCAT31(local_1dc._1_3_,0x11);
      FUN_004017b2(1,0);
    }
    else if (local_c4 == 4) {
      (**(code **)(*param_2 + 0xc))(param_2,0x804b0002);
    }
    if (local_9c != (int *)0x0) {
      (**(code **)(*local_9c + 4))(local_50,local_c0);
      piVar7 = (int *)FUN_0081ffd6(local_9c);
      FUN_0081961e();
      (**(code **)(*param_2 + 0x24))(param_2,piVar7);
      (**(code **)(*piVar7 + 8))(piVar7);
    }
  }
LAB_00822ae1:
  local_1dc._0_1_ = 0xf;
  FUN_0081b764();
  local_1dc._0_1_ = 0xd;
  local_214 = ns_smartptr<class_nsIMIMEInfo>::vftable;
  if (local_210 != (int *)0x0) {
    (**(code **)(*local_210 + 8))(local_210);
  }
  local_1dc._0_1_ = 0xc;
  local_20c = ns_smartptr<class_nsIMIMEInfo18>::vftable;
  if (local_208 != (int *)0x0) {
    (**(code **)(*local_208 + 8))(local_208);
  }
  FUN_0040159c();
  local_1dc._0_1_ = 10;
  local_1ec = ns_smartptr<class_nsISupports>::vftable;
  if (local_1e8 != (int *)0x0) {
    (**(code **)(*local_1e8 + 8))(local_1e8);
  }
  local_1dc._0_1_ = 9;
  FUN_0081f6e7(local_240);
  FUN_0040159c();
  local_1dc._0_1_ = 5;
  FUN_0081f686(local_250);
  local_1dc._0_1_ = 4;
  local_1f4 = ns_smartptr<class_nsIURI>::vftable;
  if (local_1f0 != (int *)0x0) {
    (**(code **)(*local_1f0 + 8))(local_1f0);
  }
  FUN_0040159c();
  local_1dc = (uint)local_1dc._1_3_ << 8;
  local_204 = ns_smartptr<class_nsIDOMWindow>::vftable;
  if (local_200 != (int *)0x0) {
    (**(code **)(*local_200 + 8))(local_200);
  }
LAB_00822ba5:
  local_1fc = ns_smartptr<class_nsISupports>::vftable;
  local_1dc = 0xffffffff;
  if (local_1f8 != (int *)0x0) {
    (**(code **)(*local_1f8 + 8))(local_1f8);
  }
  ExceptionList = local_1e4;
  ___security_check_cookie_4();
  return;
}



void FUN_00822bdd(void)

{
  FUN_008226cc();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00822be7(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  byte bVar3;
  undefined local_144 [36];
  undefined local_120 [16];
  undefined local_110 [20];
  undefined local_fc [16];
  undefined local_ec [16];
  undefined local_dc [16];
  undefined **local_cc;
  int *local_c8;
  int local_c4;
  int local_c0;
  int local_bc;
  undefined **local_b8;
  int *local_b4;
  int local_b0;
  undefined **local_ac;
  int *local_a8;
  undefined **local_a4;
  int *local_a0;
  undefined **local_9c;
  int *local_98;
  undefined **local_94;
  int *local_90;
  undefined **local_8c;
  int *local_88;
  int local_84;
  void *local_80;
  undefined4 local_78;
  undefined4 local_74 [9];
  undefined local_50 [28];
  undefined4 local_34;
  undefined local_2c [36];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_74;
  local_74[0] = 0xc4;
  local_78 = 0x822c08;
  basic_string<>(param_1);
  local_34 = 0;
  local_78 = 0;
  FUN_00473d8f(&DAT_00d23e68);
  FUN_004325b6(PTR_DAT_03236318);
  local_78._0_1_ = 1;
  FUN_0043c211("Would you like to accept this certificate and continue?");
  local_78._0_1_ = 2;
  uVar1 = FUN_00820bf9(local_2c,local_120);
  FID_conflict_append(uVar1,0,0xffffffff);
  FUN_0040159c();
  local_78._0_1_ = 0;
  FUN_0040159c();
  FUN_004325b6(PTR_DAT_03236318);
  local_78._0_1_ = 3;
  FUN_0043c211("Secure Connection Warning");
  local_78._0_1_ = 4;
  uVar1 = FUN_00820f97(param_2,0xffffffff,0xffffffff);
  uVar1 = FUN_00820bf9(local_2c,local_120,10,uVar1);
  iVar2 = FUN_008fe490(local_50,uVar1);
  FUN_0040159c();
  local_78._0_1_ = 0;
  FUN_0040159c();
  if ((iVar2 == 2) && (local_b0 = FUN_00820ef8(param_2), local_b0 != 0)) {
    uVar1 = FUN_0081fc58(&local_8c,"@mozilla.org/docshell/urifixup;1");
    local_78._0_1_ = 5;
    FUN_00820d7b(uVar1);
    local_78._0_1_ = 7;
    local_8c = ns_smartptr<class_nsISupports>::vftable;
    if (local_88 != (int *)0x0) {
      (**(code **)(*local_88 + 8))(local_88);
    }
    if (local_a0 == (int *)0x0) {
      local_a4 = ns_smartptr<class_nsIURIFixup>::vftable;
    }
    else {
      FUN_0081d179(local_74);
      local_94 = ns_smartptr<class_nsIURI>::vftable;
      local_90 = (int *)0x0;
      local_78._0_1_ = 9;
      FUN_0081f6c5(local_ec);
      local_78._0_1_ = 10;
      FUN_008201b5(local_74,local_ec);
      (**(code **)(*local_a0 + 0x10))(local_a0,local_ec,0,&local_90);
      if (local_90 == (int *)0x0) {
        local_78 = CONCAT31(local_78._1_3_,9);
        FUN_0081f6e7(local_ec);
      }
      else {
        FUN_0081f6c5(local_dc);
        local_84 = 0;
        local_78._0_1_ = 0xb;
        (**(code **)(*local_90 + 0x6c))(local_90,local_dc);
        (**(code **)(*local_90 + 0x48))(local_90,&local_84);
        if (local_84 < 1) {
          local_84 = 0x1bb;
        }
        uVar1 = FUN_0081fc58(&local_8c,"@mozilla.org/security/recentbadcerts;1");
        local_78._0_1_ = 0xc;
        FUN_00820daf(uVar1);
        local_78._0_1_ = 0xe;
        local_8c = ns_smartptr<class_nsISupports>::vftable;
        if (local_88 != (int *)0x0) {
          (**(code **)(*local_88 + 8))(local_88);
        }
        if (local_b4 != (int *)0x0) {
          FUN_00820057(local_2c,local_dc);
          local_78._0_1_ = 0xf;
          FUN_0081c0f1(&DAT_00d23dc0);
          local_78._0_1_ = 0x10;
          uVar1 = FUN_00821558(local_144,local_110,local_84);
          local_78._0_1_ = 0x11;
          FID_conflict_append(uVar1,0,0xffffffff);
          FUN_0040159c();
          local_78._0_1_ = 0xf;
          FUN_0081b5bc();
          FUN_0081f664(local_fc);
          local_78._0_1_ = 0x12;
          FUN_0081fee2(local_2c,local_fc);
          local_9c = ns_smartptr<class_nsISSLStatus>::vftable;
          local_98 = (int *)0x0;
          local_78._0_1_ = 0x13;
          (**(code **)(*local_b4 + 0xc))(local_b4,local_fc,&local_98);
          if (local_98 != (int *)0x0) {
            uVar1 = FUN_0081fc58(&local_cc,"@mozilla.org/security/certoverride;1");
            local_78._0_1_ = 0x14;
            FUN_00820df7(uVar1);
            local_78._0_1_ = 0x16;
            local_cc = ns_smartptr<class_nsISupports>::vftable;
            if (local_c8 != (int *)0x0) {
              (**(code **)(*local_c8 + 8))(local_c8);
            }
            if (local_88 != (int *)0x0) {
              local_ac = ns_smartptr<class_nsIX509Cert>::vftable;
              local_a8 = (int *)0x0;
              local_78 = CONCAT31(local_78._1_3_,0x17);
              (**(code **)(*local_98 + 0xc))(local_98,&local_a8);
              if (local_a8 != (int *)0x0) {
                (**(code **)(*local_98 + 0x24))(local_98,&local_c0);
                (**(code **)(*local_98 + 0x1c))(local_98,&local_c4);
                (**(code **)(*local_98 + 0x20))(local_98,&local_bc);
                bVar3 = local_c0 != 0;
                if (local_c4 != 0) {
                  bVar3 = bVar3 | 2;
                }
                if (local_bc != 0) {
                  bVar3 = bVar3 | 4;
                }
                (**(code **)(*local_88 + 0xc))(local_88,local_dc,local_84,local_a8,bVar3,0);
                FUN_0081f2ac(local_74,0,0);
              }
              local_78._0_1_ = 0x16;
              local_ac = ns_smartptr<class_nsIX509Cert>::vftable;
              if (local_a8 != (int *)0x0) {
                (**(code **)(*local_a8 + 8))(local_a8);
              }
            }
            local_78._0_1_ = 0x13;
            local_8c = ns_smartptr<class_nsICertOverrideService>::vftable;
            if (local_88 != (int *)0x0) {
              (**(code **)(*local_88 + 8))(local_88);
            }
          }
          local_78._0_1_ = 0x12;
          local_9c = ns_smartptr<class_nsISSLStatus>::vftable;
          if (local_98 != (int *)0x0) {
            (**(code **)(*local_98 + 8))(local_98);
          }
          local_78._0_1_ = 0xf;
          FUN_0081f686(local_fc);
          FUN_0040159c();
        }
        local_78._0_1_ = 0xb;
        local_b8 = ns_smartptr<class_nsIRecentBadCertsService>::vftable;
        if (local_b4 != (int *)0x0) {
          (**(code **)(*local_b4 + 8))(local_b4);
        }
        local_78._0_1_ = 10;
        FUN_0081f6e7(local_dc);
        local_78 = CONCAT31(local_78._1_3_,9);
        FUN_0081f6e7(local_ec);
      }
      local_94 = ns_smartptr<class_nsIURI>::vftable;
      local_78._0_1_ = 8;
      if (local_90 != (int *)0x0) {
        (**(code **)(*local_90 + 8))(local_90);
      }
      FUN_0040159c();
      local_a4 = ns_smartptr<class_nsIURIFixup>::vftable;
      local_78._0_1_ = 0;
      if (local_a0 != (int *)0x0) {
        (**(code **)(*local_a0 + 8))(local_a0);
      }
    }
  }
  FUN_0040159c();
  ExceptionList = local_80;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3

void FUN_00823087(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  int *piVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined *puVar5;
  undefined *puVar6;
  undefined *puVar7;
  undefined4 uVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  undefined *puVar11;
  undefined local_418 [36];
  undefined local_3f4 [36];
  undefined local_3d0 [36];
  undefined local_3ac [36];
  undefined local_388 [36];
  undefined local_364 [16];
  undefined **local_354;
  int *local_350;
  undefined **local_34c;
  int *local_348;
  undefined4 local_344;
  void *local_340;
  undefined4 local_338;
  undefined4 local_334 [178];
  undefined local_6c [36];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_48 [4];
  undefined4 ***local_44 [5];
  uint local_30;
  undefined local_2c [20];
  int local_18;
  undefined4 local_14;
  undefined4 local_10;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)local_334;
  local_334[0] = 0xd8;
  local_338 = 0x8230ae;
  local_344 = param_3;
  FUN_008196c7(&local_344);
  local_338 = 0;
  uVar2 = FUN_0081a1f8(&local_34c);
  local_338._0_1_ = 1;
  FUN_008211be(uVar2);
  local_338._0_1_ = 3;
  FUN_008196e9();
  FUN_00820120(local_6c,param_4);
  local_14 = 7;
  FUN_0040180b(0);
  local_10 = 0;
  local_338._0_1_ = 5;
  FUN_004325b6(PTR_DAT_03236318);
  local_338._0_1_ = 6;
  FUN_0043c211("All Files");
  local_338._0_1_ = 7;
  uVar2 = FUN_00820bf9(local_388,local_3ac);
  FID_conflict_append(uVar2,0,0xffffffff);
  FUN_0040159c();
  local_338._0_1_ = 5;
  FUN_0040159c();
  FUN_00473d8f(L" (*.*)|*.*|");
  FUN_00851a60(local_18 + -1);
  FUN_0043c211("filedlg");
  local_338._0_1_ = 8;
  FUN_004325b6(&DAT_00fae9c8);
  local_338._0_1_ = 9;
  FUN_004325b6(PTR_DAT_03236318);
  local_338._0_1_ = 10;
  FUN_0043c211("Save As");
  piVar1 = local_350;
  puVar11 = local_3d0;
  puVar10 = &DAT_03238d04;
  puVar9 = &DAT_03238d0c;
  uVar8 = 6;
  puVar7 = local_2c;
  puVar6 = local_6c;
  puVar5 = local_3f4;
  local_338._0_1_ = 0xb;
  uVar2 = FUN_00820bf9(local_3ac,local_388,puVar5,puVar6,puVar7,6,&DAT_03238d0c,&DAT_03238d04,
                       puVar11);
  uVar3 = FUN_00820f97(piVar1,uVar2);
  FUN_00966560(uVar3,uVar2,puVar5,puVar6,puVar7,uVar8,puVar9,puVar10,puVar11);
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  local_338._0_1_ = 0x10;
  FUN_0040159c();
  iVar4 = FUN_00967140();
  if (iVar4 == 0x13ec) {
    FUN_00484f30(local_418);
    local_338._0_1_ = 0x11;
    puVar9 = (undefined4 *)FUN_0043242d(&local_344);
    local_338._0_1_ = 0x12;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              (local_48,*(char **)*puVar9);
    local_338._0_1_ = 0x14;
    FUN_0043c1dd();
    local_338._0_1_ = 0x15;
    FUN_0040159c();
    if (local_30 < 0x10) {
      local_44[0] = local_44;
    }
    FUN_0081f6d6(local_364,local_44[0],0xffffffff,2);
    local_338._0_1_ = 0x16;
    FUN_0081f692(local_364,1,param_7);
    local_338._0_1_ = 0x15;
    FUN_0081f6e7(local_364);
    FUN_004017b2(1,0);
    local_338._0_1_ = 5;
    FUN_00484d9e();
    FUN_0040159c();
    FUN_0040159c();
    local_338 = (uint)local_338._1_3_ << 8;
    local_354 = ns_smartptr<class_nsIDOMWindow>::vftable;
    if (local_350 != (int *)0x0) {
      (**(code **)(*local_350 + 8))(local_350);
    }
    local_338 = 0xffffffff;
    local_34c = ns_smartptr<class_nsISupports>::vftable;
    if (local_348 != (int *)0x0) {
      (**(code **)(*local_348 + 8))(local_348);
    }
  }
  else {
    local_338._0_1_ = 5;
    FUN_00484d9e();
    FUN_0040159c();
    FUN_0040159c();
    local_338 = (uint)local_338._1_3_ << 8;
    local_354 = ns_smartptr<class_nsIDOMWindow>::vftable;
    if (local_350 != (int *)0x0) {
      (**(code **)(*local_350 + 8))(local_350);
    }
    local_338 = 0xffffffff;
    local_34c = ns_smartptr<class_nsISupports>::vftable;
    if (local_348 != (int *)0x0) {
      (**(code **)(*local_348 + 8))(local_348);
    }
  }
  ExceptionList = local_340;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_008233dc(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  undefined4 uVar2;
  undefined local_5c [36];
  undefined local_38 [48];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0x8233e8;
  FUN_00820120(local_5c,param_3);
  local_8 = 0;
  FUN_00820120(local_38,param_4);
  local_8 = CONCAT31(local_8._1_3_,1);
  iVar1 = FUN_008213b7(L"ssl_error_");
  if (iVar1 == -1) {
    iVar1 = FUN_008213b7(L"sec_error_");
    if (iVar1 == -1) {
      uVar2 = FUN_00820f97(param_2,0xffffffff,0xffffffff);
      FUN_008fe490(local_38,local_5c,4,uVar2);
      goto LAB_00823460;
    }
  }
  FUN_00822be7(local_38,param_2);
LAB_00823460:
  FUN_0040159c();
  FUN_0040159c();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// Library Function - Single Match
//  public: static void __cdecl std::_String_base::_Xlen(void)
// 
// Library: Visual Studio 2008 Release

void __cdecl std::_String_base::_Xlen(void)

{
  code *pcVar1;
  undefined local_54 [40];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x823486;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_2c,"string too long");
  local_8 = 0;
  FUN_00417cd5(local_2c);
  __CxxThrowException_8(local_54,&DAT_03115554);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// Library Function - Single Match
//  public: static void __cdecl std::_String_base::_Xran(void)
// 
// Library: Visual Studio 2008 Release

void __cdecl std::_String_base::_Xran(void)

{
  code *pcVar1;
  undefined local_54 [40];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [36];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0x8234be;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_2c,"invalid string position");
  local_8 = 0;
  FUN_00418bd9(local_2c);
  __CxxThrowException_8(local_54,&DAT_03115668);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// Library Function - Single Match
//  __CreateLocForCP
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __CreateLocForCP(uint param_1)

{
  char local_28;
  char local_27 [31];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_28 = '.';
  __ui64toa_s((ulonglong)param_1,local_27,0x1f,10);
  __create_locale(0,&local_28);
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  __GetLocaleForCP
// 
// Library: Visual Studio 2008 Release

_locale_t __cdecl __GetLocaleForCP(uint param_1)

{
  undefined4 *Comperand;
  int iVar1;
  undefined4 *puVar2;
  int *_Memory;
  
  _Memory = (int *)0x0;
  do {
    Comperand = *(undefined4 **)(&DAT_032bc6b0 + (param_1 % 0x3e) * 4);
    for (puVar2 = Comperand; puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)*puVar2) {
      if (puVar2[1] == param_1) {
        if (_Memory != (int *)0x0) {
          __free_locale((_locale_t)_Memory[2]);
          _free(_Memory);
        }
        return (_locale_t)puVar2[2];
      }
    }
    if (_Memory == (int *)0x0) {
      _Memory = (int *)__malloc_crt(0xc);
      if (_Memory == (int *)0x0) {
        return (_locale_t)0x0;
      }
      iVar1 = __CreateLocForCP(param_1);
      _Memory[2] = iVar1;
      if (iVar1 == 0) {
        _free(_Memory);
        return (_locale_t)0x0;
      }
      _Memory[1] = param_1;
    }
    *_Memory = (int)Comperand;
    puVar2 = (undefined4 *)
             InterlockedCompareExchange
                       ((LONG *)(&DAT_032bc6b0 + (param_1 % 0x3e) * 4),(LONG)_Memory,(LONG)Comperand
                       );
    if (puVar2 == Comperand) {
      return (_locale_t)_Memory[2];
    }
  } while( true );
}



void FUN_008235c7(void)

{
  undefined4 *puVar1;
  undefined4 *_Memory;
  LONG *Target;
  
  Target = (LONG *)&DAT_032bc6b0;
  do {
    _Memory = (undefined4 *)InterlockedExchange(Target,0);
    while (_Memory != (undefined4 *)0x0) {
      puVar1 = (undefined4 *)*_Memory;
      __free_locale((_locale_t)_Memory[2]);
      _free(_Memory);
      _Memory = puVar1;
    }
    Target = Target + 1;
  } while ((int)Target < 0x32bc7a8);
  return;
}



// Library Function - Single Match
//  __Mbrtowc
// 
// Library: Visual Studio 2008 Release

int __cdecl
__Mbrtowc(wchar_t *param_1,char *param_2,size_t param_3,mbstate_t *param_4,_Cvtvec *param_5)

{
  ushort uVar1;
  int iVar2;
  uint CodePage;
  _locale_t plVar3;
  int *piVar4;
  ushort *puVar5;
  uint uVar6;
  
  if ((param_2 == (char *)0x0) || (param_3 == 0)) {
    return 0;
  }
  if (*param_2 == '\0') {
    if (param_1 == (wchar_t *)0x0) {
      return 0;
    }
    *param_1 = L'\0';
    return 0;
  }
  if (param_5 == (_Cvtvec *)0x0) {
    iVar2 = ____lc_handle_func();
    uVar6 = *(uint *)(iVar2 + 8);
    CodePage = ____lc_codepage_func();
  }
  else {
    uVar6 = param_5->_Page;
    CodePage = param_5->_Mbcurmax;
  }
  if (uVar6 == 0) {
    if (param_1 != (wchar_t *)0x0) {
      *param_1 = (ushort)(byte)*param_2;
    }
    return 1;
  }
  plVar3 = __GetLocaleForCP(CodePage);
  if (*param_4 == 0) {
    if (plVar3 == (_locale_t)0x0) {
      puVar5 = ___pctype_func();
      uVar1 = puVar5[(byte)*param_2] & 0x8000;
    }
    else {
      uVar1 = plVar3->mbcinfo->mbctype[(byte)*param_2 + 5] & 4;
    }
    if (uVar1 == 0) {
      iVar2 = MultiByteToWideChar(CodePage,9,param_2,1,param_1,(uint)(param_1 != (wchar_t *)0x0));
      if (iVar2 != 0) {
        return 1;
      }
      goto LAB_008236d0;
    }
    uVar6 = ____mb_cur_max_l_func(plVar3);
    if (param_3 < uVar6) {
      *(char *)param_4 = *param_2;
      return -2;
    }
    iVar2 = ____mb_cur_max_l_func(plVar3);
    if (1 < iVar2) {
      uVar6 = (uint)(param_1 != (wchar_t *)0x0);
      iVar2 = ____mb_cur_max_l_func(plVar3);
      iVar2 = MultiByteToWideChar(CodePage,9,param_2,iVar2,param_1,uVar6);
      if (iVar2 != 0) goto LAB_008236c1;
    }
    if (param_2[1] != '\0') goto LAB_008236c1;
  }
  else {
    *(char *)((int)param_4 + 1) = *param_2;
    iVar2 = ____mb_cur_max_l_func(plVar3);
    if ((1 < iVar2) &&
       (iVar2 = MultiByteToWideChar(CodePage,9,(LPCSTR)param_4,2,param_1,
                                    (uint)(param_1 != (wchar_t *)0x0)), iVar2 != 0)) {
      *param_4 = 0;
LAB_008236c1:
      iVar2 = ____mb_cur_max_l_func(plVar3);
      return iVar2;
    }
  }
  *param_4 = 0;
LAB_008236d0:
  piVar4 = __errno();
  *piVar4 = 0x2a;
  return -1;
}



undefined4 __fastcall FUN_0082378e(undefined4 param_1)

{
  LONG LVar1;
  _Rmtx *p_Var2;
  
  LVar1 = InterlockedIncrement((LONG *)&DAT_0322e868);
  if (LVar1 == 0) {
    p_Var2 = (_Rmtx *)&DAT_032bc7a8;
    do {
      __Mtxinit(p_Var2);
      p_Var2 = p_Var2 + 1;
    } while ((int)p_Var2 < 0x32bc808);
  }
  return param_1;
}



void FUN_008237bf(void)

{
  LONG LVar1;
  undefined *puVar2;
  
  LVar1 = InterlockedDecrement((LONG *)&DAT_0322e868);
  if (LVar1 < 0) {
    puVar2 = &DAT_032bc7a8;
    do {
      FUN_008247b6(puVar2);
      puVar2 = puVar2 + 0x18;
    } while ((int)puVar2 < 0x32bc808);
  }
  return;
}



// Library Function - Single Match
//  public: __thiscall std::_Lockit::_Lockit(int)
// 
// Library: Visual Studio 2008 Release

_Lockit * __thiscall std::_Lockit::_Lockit(_Lockit *this,int param_1)

{
  *(int *)this = param_1;
  if (param_1 < 4) {
    __Mtxlock((_Rmtx *)(&DAT_032bc7a8 + param_1 * 0x18));
  }
  return this;
}



void __fastcall FUN_00823810(int *param_1)

{
  if (*param_1 < 4) {
    __Mtxunlock((_Rmtx *)(&DAT_032bc7a8 + *param_1 * 0x18));
  }
  return;
}



// Library Function - Single Match
//  void __cdecl _AtModuleExit(void (__cdecl*)(void))
// 
// Library: Visual Studio 2008 Release

void __cdecl _AtModuleExit(_func_void *param_1)

{
  int iVar1;
  
  iVar1 = _atexit((_func_4879 *)param_1);
  if (iVar1 != 0) {
                    // WARNING: Subroutine does not return
    _abort();
  }
  return;
}



// Library Function - Single Match
//  public: __thiscall std::_Fac_node::~_Fac_node(void)
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release, Visual Studio 2008 Release

void __thiscall std::_Fac_node::~_Fac_node(_Fac_node *this)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)locale::facet::_Decref(*(facet **)(this + 4));
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  return;
}



_Fac_node * __thiscall FUN_00823856(_Fac_node *param_1_00,byte param_1)

{
  std::_Fac_node::~_Fac_node(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Single Match
//  __Deletegloballocale
// 
// Library: Visual Studio 2008 Release

void __Deletegloballocale(facet **param_1)

{
  undefined4 *puVar1;
  
  if (*param_1 != (facet *)0x0) {
    puVar1 = (undefined4 *)std::locale::facet::_Decref(*param_1);
    if (puVar1 != (undefined4 *)0x0) {
      (**(code **)*puVar1)(1);
    }
  }
  return;
}



// Library Function - Single Match
//  _tidy_global
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void _tidy_global(void)

{
  _Lockit local_8 [4];
  
  std::_Lockit::_Lockit(local_8,0);
  __Deletegloballocale(&DAT_032bc810);
  DAT_032bc810 = 0;
  FUN_00823810();
  return;
}



undefined4 FUN_008238c4(void)

{
  return DAT_032bc810;
}



// Library Function - Single Match
//  private: static void __cdecl std::locale::_Setgloballocale(void *)
// 
// Library: Visual Studio 2008 Release

void __cdecl std::locale::_Setgloballocale(void *param_1)

{
  if (DAT_032bc834 == '\0') {
    DAT_032bc834 = '\x01';
    _Atexit(_tidy_global);
  }
  DAT_032bc810 = param_1;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  private: static void __cdecl std::locale::_Locimp::_Locimp_dtor(class std::locale::_Locimp *)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void __cdecl std::locale::_Locimp::_Locimp_dtor(_Locimp *param_1)

{
  facet **ppfVar1;
  undefined4 *puVar2;
  int iVar3;
  _Lockit local_14 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 4;
  local_8 = 0x823900;
  _Lockit::_Lockit(local_14,0);
  local_8 = 0;
  iVar3 = *(int *)(param_1 + 0xc);
  while (iVar3 != 0) {
    iVar3 = iVar3 + -1;
    ppfVar1 = (facet **)(*(int *)(param_1 + 8) + iVar3 * 4);
    if (*ppfVar1 != (facet *)0x0) {
      puVar2 = (undefined4 *)facet::_Decref(*ppfVar1);
      if (puVar2 != (undefined4 *)0x0) {
        (**(code **)*puVar2)(1);
      }
    }
  }
  _free(*(void **)(param_1 + 8));
  local_8 = 0xffffffff;
  FUN_00823810();
  return;
}



// Library Function - Single Match
//  __Fac_tidy
// 
// Library: Visual Studio 2008 Release

void __Fac_tidy(void)

{
  _Lockit local_8 [4];
  
  std::_Lockit::_Lockit(local_8,0);
  while (DAT_032bc80c != (undefined4 *)0x0) {
    DAT_032bc80c = (undefined4 *)*DAT_032bc80c;
    FUN_00823856(1);
  }
  FUN_00823810();
  return;
}



// Library Function - Single Match
//  private: static void __cdecl std::locale::facet::facet_Register(class std::locale::facet *)
// 
// Library: Visual Studio 2008 Release

void __cdecl std::locale::facet::facet_Register(facet *param_1)

{
  int *piVar1;
  
  if (DAT_032bc80c == (int *)0x0) {
    _AtModuleExit(__Fac_tidy);
  }
  piVar1 = (int *)operator_new(8);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = (int)DAT_032bc80c;
    piVar1[1] = (int)param_1;
  }
  DAT_032bc80c = piVar1;
  return;
}



// Library Function - Single Match
//  public: static void __cdecl std::_Locinfo::_Locinfo_dtor(class std::_Locinfo *)
// 
// Library: Visual Studio 2008 Release

void __cdecl std::_Locinfo::_Locinfo_dtor(_Locinfo *param_1)

{
  _Locinfo *_Locale;
  
  if (*(int *)(param_1 + 0x50) != 0) {
    if (*(uint *)(param_1 + 0x54) < 0x10) {
      _Locale = param_1 + 0x40;
    }
    else {
      _Locale = *(_Locinfo **)(param_1 + 0x40);
    }
    _setlocale(0,(char *)_Locale);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  private: __thiscall std::locale::_Locimp::_Locimp(bool)
// 
// Library: Visual Studio 2008 Release

_Locimp * __thiscall std::locale::_Locimp::_Locimp(_Locimp *this,bool param_1)

{
  *(undefined4 *)(this + 4) = 1;
  *(undefined4 *)(this + 8) = 0;
  *(undefined4 *)(this + 0xc) = 0;
  *(undefined4 *)(this + 0x10) = 0;
  *(undefined ***)this = vftable;
  this[0x14] = (_Locimp)param_1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (this + 0x18),"*");
  return this;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  private: static class std::locale::_Locimp * __cdecl std::locale::_Init(void)
// 
// Library: Visual Studio 2008 Release

_Locimp * __cdecl std::locale::_Init(void)

{
  _Locimp *p_Var1;
  _Lockit local_14 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 8;
  local_8 = 0x823a44;
  p_Var1 = DAT_032bc810;
  if (DAT_032bc810 == (_Locimp *)0x0) {
    _Lockit::_Lockit(local_14,0);
    local_8 = 0;
    p_Var1 = DAT_032bc810;
    if (DAT_032bc810 == (_Locimp *)0x0) {
      p_Var1 = (_Locimp *)operator_new(0x34);
      local_8._0_1_ = 1;
      if (p_Var1 == (_Locimp *)0x0) {
        p_Var1 = (_Locimp *)0x0;
      }
      else {
        p_Var1 = (_Locimp *)_Locimp::_Locimp(p_Var1,false);
      }
      local_8 = (uint)local_8._1_3_ << 8;
      _Setgloballocale(p_Var1);
      *(undefined4 *)((facet *)p_Var1 + 0x10) = 0x3f;
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 ((facet *)p_Var1 + 0x18),"C");
      DAT_032bc814 = (facet *)p_Var1;
      facet::_Incref((facet *)p_Var1);
      _DAT_032bc82c = DAT_032bc814;
    }
    local_8 = 0xffffffff;
    FUN_00823810();
  }
  return p_Var1;
}



// Library Function - Single Match
//  public: static void __cdecl std::_Locinfo::_Locinfo_ctor(class std::_Locinfo *,char const *)
// 
// Library: Visual Studio 2008 Release

void __cdecl std::_Locinfo::_Locinfo_ctor(_Locinfo *param_1,char *param_2)

{
  undefined **ppuVar1;
  char *pcVar2;
  
  ppuVar1 = (undefined **)_setlocale(0,(char *)0x0);
  if (ppuVar1 == (undefined **)0x0) {
    ppuVar1 = &PTR_02bd3fc0;
  }
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0x3c),(char *)ppuVar1);
  if (param_2 != (char *)0x0) {
    pcVar2 = _setlocale(0,param_2);
    if (pcVar2 != (char *)0x0) goto LAB_00823b13;
  }
  pcVar2 = "*";
LAB_00823b13:
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0x58),pcVar2);
  return;
}



// Library Function - Single Match
//  public: static void __cdecl std::_Locinfo::_Locinfo_ctor(class std::_Locinfo *,class
// std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)
// 
// Library: Visual Studio 2008 Release

void __cdecl
std::_Locinfo::_Locinfo_ctor
          (_Locinfo *param_1,
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2)

{
  undefined **ppuVar1;
  char *pcVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *_Locale;
  
  if (*(uint *)(param_2 + 0x18) < 0x10) {
    _Locale = param_2 + 4;
  }
  else {
    _Locale = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
               (param_2 + 4);
  }
  ppuVar1 = (undefined **)_setlocale(0,(char *)0x0);
  if (ppuVar1 == (undefined **)0x0) {
    ppuVar1 = &PTR_02bd3fc0;
  }
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0x3c),(char *)ppuVar1);
  if (_Locale != (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)0x0
     ) {
    pcVar2 = _setlocale(0,(char *)_Locale);
    if (pcVar2 != (char *)0x0) goto LAB_00823b6e;
  }
  pcVar2 = "*";
LAB_00823b6e:
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0x58),pcVar2);
  return;
}



undefined * FUN_00823b7b(void)

{
  std::locale::_Init();
  return &DAT_032bc82c;
}



// Library Function - Single Match
//  __Wcrtomb
// 
// Library: Visual Studio 2008 Release

int __cdecl __Wcrtomb(char *param_1,wchar_t param_2,mbstate_t *param_3,_Cvtvec *param_4)

{
  int iVar1;
  uint CodePage;
  _locale_t plVar2;
  int *piVar3;
  uint uVar4;
  LPCSTR lpDefaultChar;
  _Cvtvec **lpUsedDefaultChar;
  
  if (param_4 == (_Cvtvec *)0x0) {
    iVar1 = ____lc_handle_func();
    uVar4 = *(uint *)(iVar1 + 8);
    CodePage = ____lc_codepage_func();
  }
  else {
    uVar4 = param_4->_Page;
    CodePage = param_4->_Mbcurmax;
  }
  if (uVar4 == 0) {
    if ((ushort)param_2 < 0x100) {
      *param_1 = (char)param_2;
      return 1;
    }
  }
  else {
    param_4 = (_Cvtvec *)0x0;
    plVar2 = __GetLocaleForCP(CodePage);
    lpUsedDefaultChar = &param_4;
    lpDefaultChar = (LPCSTR)0x0;
    iVar1 = ____mb_cur_max_l_func(plVar2);
    iVar1 = WideCharToMultiByte(CodePage,0,&param_2,1,param_1,iVar1,lpDefaultChar,
                                (LPBOOL)lpUsedDefaultChar);
    if ((iVar1 != 0) && (param_4 == (_Cvtvec *)0x0)) {
      return iVar1;
    }
  }
  piVar3 = __errno();
  *piVar3 = 0x2a;
  return -1;
}



// Library Function - Single Match
//  __Getcoll
// 
// Library: Visual Studio 2005 Release

_Collvec __cdecl __Getcoll(void)

{
  uint uVar1;
  int iVar2;
  wchar_t *pwVar3;
  _Collvec _Var4;
  
  iVar2 = ____lc_handle_func();
  uVar1 = *(uint *)(iVar2 + 8);
  pwVar3 = (wchar_t *)____lc_codepage_func();
  _Var4._LocaleName = pwVar3;
  _Var4._Page = uVar1;
  return _Var4;
}



void FUN_00823c23(uint param_1)

{
  operator_new(param_1);
  return;
}



bool thunk_FUN_00a45751(void)

{
  _ptiddata p_Var1;
  
  p_Var1 = __getptd();
  return p_Var1->_ProcessingThrow != 0;
}



// Library Function - Single Match
//  public: __thiscall std::_Mutex::_Mutex(void)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

_Mutex * __thiscall std::_Mutex::_Mutex(_Mutex *this)

{
  _Rmtx *p_Var1;
  
  p_Var1 = (_Rmtx *)operator_new(0x18);
  *(_Rmtx **)this = p_Var1;
  __Mtxinit(p_Var1);
  return this;
}



void __fastcall FUN_00823c4d(undefined4 *param_1)

{
  FUN_008247b6(*param_1);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void __fastcall FUN_00823c64(_Rmtx **param_1)

{
  __Mtxlock(*param_1);
  return;
}



void __fastcall FUN_00823c6d(_Rmtx **param_1)

{
  __Mtxunlock(*param_1);
  return;
}



void FUN_00823c76(int param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1 + 0x14) = param_2;
  return;
}



void FUN_00823c86(int param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1 + 0x18) = param_2;
  return;
}



void FUN_00823c96(code **param_1,code *param_2)

{
  *param_1 = FUN_00823c76;
  param_1[1] = param_2;
  return;
}



void FUN_00823cac(code **param_1,code *param_2)

{
  *param_1 = FUN_00823c86;
  param_1[1] = param_2;
  return;
}



void FUN_00823cc2(int param_1)

{
  FUN_005e3110(0);
  if (*(int *)(param_1 + 0x1c) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(int *)(param_1 + 0x1c));
  }
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if (*(int *)(param_1 + 0x20) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(int *)(param_1 + 0x20));
  }
  *(undefined4 *)(param_1 + 0x20) = 0;
  return;
}



// Library Function - Single Match
//  public: static void __cdecl std::ios_base::_Addstd(class std::ios_base *)
// 
// Libraries: Visual Studio 2005 Debug, Visual Studio 2005 Release, Visual Studio 2008 Debug, Visual
// Studio 2008 Release

void __cdecl std::ios_base::_Addstd(ios_base *param_1)

{
  ios_base *piVar1;
  _Lockit local_8 [4];
  
  _Lockit::_Lockit(local_8,2);
  *(undefined4 *)(param_1 + 4) = 1;
  do {
    piVar1 = *(ios_base **)(*(int *)(param_1 + 4) * 4 + 0x32bc844);
    if ((piVar1 == (ios_base *)0x0) || (piVar1 == param_1)) break;
    *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
  } while (*(uint *)(param_1 + 4) < 8);
  *(ios_base **)(*(int *)(param_1 + 4) * 4 + 0x32bc844) = param_1;
  (&DAT_032bc86c)[*(int *)(param_1 + 4)] = (&DAT_032bc86c)[*(int *)(param_1 + 4)] + '\x01';
  FUN_00823810();
  return;
}



// Library Function - Single Match
//  private: static void __cdecl std::ios_base::_Ios_base_dtor(class std::ios_base *)
// 
// Library: Visual Studio 2008 Release

void __cdecl std::ios_base::_Ios_base_dtor(ios_base *param_1)

{
  if ((*(int *)(param_1 + 4) == 0) ||
     ((&DAT_032bc86c)[*(int *)(param_1 + 4)] = (&DAT_032bc86c)[*(int *)(param_1 + 4)] + -1,
     (char)(&DAT_032bc86c)[*(int *)(param_1 + 4)] < '\x01')) {
    FUN_00823cc2(param_1);
    if (*(int *)(param_1 + 0x24) != 0) {
      FUN_00413944(1);
    }
  }
  return;
}



// Library Function - Single Match
//  __Getwctype
// 
// Library: Visual Studio 2008 Release

short __cdecl __Getwctype(wchar_t param_1,_Ctypevec *param_2)

{
  int iVar1;
  
  iVar1 = ___crtGetStringTypeW(0,1,&param_1,1,&param_2,param_2->_Table,param_2->_Page);
  return -(ushort)(iVar1 != 0) & (ushort)param_2;
}



// Library Function - Single Match
//  __Getwctypes
// 
// Library: Visual Studio 2008 Release

wchar_t * __cdecl __Getwctypes(wchar_t *param_1,wchar_t *param_2,short *param_3,_Ctypevec *param_4)

{
  ___crtGetStringTypeW
            (0,1,param_1,(int)param_2 - (int)param_1 >> 1,param_3,param_4->_Table,param_4->_Page);
  return param_2;
}



// Library Function - Single Match
//  __Tolower
// 
// Library: Visual Studio 2008 Release

int __cdecl __Tolower(int param_1,_Ctypevec *param_2)

{
  _Ctypevec *p_Var1;
  int iVar2;
  short *_Code_page;
  ushort *puVar3;
  uint uVar4;
  LPCWSTR local_10;
  undefined local_c;
  byte local_8;
  undefined local_7;
  
  p_Var1 = param_2;
  if (param_2 == (_Ctypevec *)0x0) {
    iVar2 = ____lc_handle_func();
    local_10 = *(LPCWSTR *)(iVar2 + 8);
    _Code_page = (short *)____lc_codepage_func();
  }
  else {
    local_10 = (LPCWSTR)param_2->_Page;
    _Code_page = param_2->_Table;
  }
  if (local_10 == (LPCWSTR)0x0) {
    if (0x19 < param_1 - 0x41U) {
      return param_1;
    }
    return param_1 + 0x20;
  }
  if ((uint)param_1 < 0x100) {
    if (p_Var1 != (_Ctypevec *)0x0) {
      if ((*(byte *)(p_Var1->_Delfl + param_1 * 2) & 1) == 0) {
        return param_1;
      }
      goto LAB_00823e6c;
    }
    iVar2 = _isupper(param_1);
    if (iVar2 == 0) {
      return param_1;
    }
  }
  else {
LAB_00823e6c:
    if (p_Var1 != (_Ctypevec *)0x0) {
      uVar4 = (uint)(int)*(short *)(p_Var1->_Delfl + (param_1 >> 8 & 0xffU) * 2) >> 0xf & 1;
      goto LAB_00823ea7;
    }
  }
  puVar3 = ___pctype_func();
  uVar4 = puVar3[param_1 >> 8 & 0xff] & 0x8000;
LAB_00823ea7:
  p_Var1 = param_2;
  if (uVar4 == 0) {
    param_2._0_2_ = (ushort)(byte)param_1;
    iVar2 = 1;
  }
  else {
    local_c = (undefined)((uint)param_1 >> 8);
    param_2._0_2_ = CONCAT11((byte)param_1,local_c);
    param_2._0_3_ = (uint3)(ushort)param_2;
    iVar2 = 2;
  }
  iVar2 = ___crtLCMapStringA((_locale_t)0x0,local_10,0x100,(LPCSTR)&param_2,iVar2,(LPSTR)&local_8,3,
                             (int)_Code_page,1);
  if ((iVar2 != 0) && (param_1 = (int)local_8, iVar2 != 1)) {
    param_1 = (int)CONCAT11(local_8,local_7);
  }
  return param_1;
}



// Library Function - Single Match
//  __Getctype
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

_Ctypevec * __cdecl __Getctype(_Ctypevec *__return_storage_ptr__)

{
  int iVar1;
  short *psVar2;
  void *pvVar3;
  ushort *puVar4;
  size_t _Size;
  
  iVar1 = ____lc_handle_func();
  __return_storage_ptr__->_Page = *(uint *)(iVar1 + 4);
  psVar2 = (short *)____lc_codepage_func();
  __return_storage_ptr__->_Table = psVar2;
  pvVar3 = __calloc_crt(0x100,2);
  __return_storage_ptr__->_Delfl = (int)pvVar3;
  if (pvVar3 == (void *)0x0) {
    puVar4 = ___pctype_func();
    __return_storage_ptr__->_LocaleName = (wchar_t *)0x0;
    __return_storage_ptr__->_Delfl = (int)puVar4;
  }
  else {
    _Size = 0x200;
    puVar4 = ___pctype_func();
    _memcpy((void *)__return_storage_ptr__->_Delfl,puVar4,_Size);
    __return_storage_ptr__->_LocaleName = (wchar_t *)0x1;
  }
  return __return_storage_ptr__;
}



// Library Function - Single Match
//  __Towupper
// 
// Library: Visual Studio 2008 Release

wchar_t __cdecl __Towupper(wchar_t param_1,_Ctypevec *param_2)

{
  int iVar1;
  uint uVar2;
  undefined2 in_stack_00000006;
  uint local_8;
  
  local_8 = (uint)(ushort)param_1;
  uVar2 = local_8;
  if (param_1 != L'\xffff') {
    if ((param_2->_Page == 0) && ((ushort)param_1 < 0x100)) {
      if ((ushort)(param_1 + L'ﾟ') < 0x1a) {
        uVar2 = _param_1 - 0x20 & 0xffff;
      }
    }
    else {
      iVar1 = ___crtLCMapStringW((LPCWSTR)0x0,param_2->_Page,(LPCWSTR)0x200,(int)&param_1,
                                 (LPWSTR)0x1,(int)&local_8);
      uVar2 = _param_1 & 0xffff;
      if (iVar1 != 0) {
        uVar2 = local_8;
      }
    }
  }
  return (wchar_t)uVar2;
}



// Library Function - Single Match
//  __Towlower
// 
// Library: Visual Studio 2008 Release

wchar_t __cdecl __Towlower(wchar_t param_1,_Ctypevec *param_2)

{
  int iVar1;
  uint uVar2;
  undefined2 in_stack_00000006;
  uint local_8;
  
  local_8 = (uint)(ushort)param_1;
  if (param_1 != L'\xffff') {
    if ((param_2->_Page == 0) && ((ushort)param_1 < 0x100)) {
      uVar2 = local_8;
      if ((ushort)(param_1 + L'﾿') < 0x1a) {
        uVar2 = _param_1 + 0x20 & 0xffff;
      }
    }
    else {
      iVar1 = ___crtLCMapStringW((LPCWSTR)0x0,param_2->_Page,(LPCWSTR)0x100,(int)&param_1,
                                 (LPWSTR)0x1,(int)&local_8);
      uVar2 = _param_1 & 0xffff;
      if (iVar1 != 0) {
        uVar2 = local_8;
      }
    }
    param_1 = (wchar_t)uVar2;
  }
  return param_1;
}



uint FUN_0082403e(byte *param_1,byte **param_2,uint param_3,undefined4 *param_4)

{
  byte bVar1;
  int iVar2;
  void *pvVar3;
  int *piVar4;
  char cVar5;
  byte *pbVar6;
  byte *pbVar7;
  byte *pbVar8;
  uint uVar9;
  uint local_10;
  uint local_c;
  byte local_5;
  
  if (param_4 != (undefined4 *)0x0) {
    *param_4 = 0;
  }
  bVar1 = *param_1;
  pbVar6 = param_1;
  while (iVar2 = _isspace((uint)bVar1), iVar2 != 0) {
    pbVar6 = pbVar6 + 1;
    bVar1 = *pbVar6;
  }
  local_5 = *pbVar6;
  if ((local_5 == 0x2d) || (local_5 == 0x2b)) {
    pbVar6 = pbVar6 + 1;
  }
  else {
    local_5 = 0x2b;
  }
  if ((((int)param_3 < 0) || (param_3 == 1)) || (0x24 < (int)param_3)) {
    if (param_2 == (byte **)0x0) {
      return 0;
    }
    *param_2 = param_1;
    return 0;
  }
  pbVar7 = pbVar6;
  if ((int)param_3 < 1) {
    if (*pbVar6 != 0x30) {
      param_3 = 10;
      goto LAB_008240ea;
    }
    if ((pbVar6[1] != 0x78) && (pbVar6[1] != 0x58)) {
      param_3 = 8;
      goto LAB_008240ea;
    }
    param_3 = 0x10;
  }
  else if (((param_3 != 0x10) || (*pbVar6 != 0x30)) || ((pbVar6[1] != 0x78 && (pbVar6[1] != 0x58))))
  goto LAB_008240ea;
  pbVar6 = pbVar6 + 2;
  pbVar7 = pbVar6;
LAB_008240ea:
  for (; *pbVar6 == 0x30; pbVar6 = pbVar6 + 1) {
  }
  local_c = 0;
  local_10 = 0;
  uVar9 = param_3;
  iVar2 = _tolower((int)(char)*pbVar6);
  pvVar3 = _memchr("0123456789abcdefghijklmnopqrstuvwxyz",iVar2,uVar9);
  pbVar8 = pbVar6;
  if (pvVar3 == (void *)0x0) {
    cVar5 = param_3._3_1_;
  }
  else {
    do {
      cVar5 = (char)pvVar3 + -0x38;
      local_10 = local_c;
      local_c = local_c * param_3 + (int)cVar5;
      pbVar8 = pbVar8 + 1;
      uVar9 = param_3;
      iVar2 = _tolower((int)(char)*pbVar8);
      pvVar3 = _memchr("0123456789abcdefghijklmnopqrstuvwxyz",iVar2,uVar9);
    } while (pvVar3 != (void *)0x0);
  }
  if (pbVar7 == pbVar8) {
    if (param_2 != (byte **)0x0) {
      *param_2 = param_1;
    }
    return 0;
  }
  iVar2 = (int)(pbVar8 + -(int)(char)(&DAT_00d23f60)[param_3]) - (int)pbVar6;
  if ((-1 < iVar2) &&
     (((pbVar8 + -(int)(char)(&DAT_00d23f60)[param_3] != pbVar6 && -1 < iVar2 ||
       (local_c < local_c - (int)cVar5)) || ((local_c - (int)cVar5) / param_3 != local_10)))) {
    piVar4 = __errno();
    *piVar4 = 0x22;
    if (param_4 != (undefined4 *)0x0) {
      *param_4 = 1;
    }
    local_c = 0xffffffff;
    local_5 = 0x2b;
  }
  if (local_5 == 0x2d) {
    local_c = -local_c;
  }
  if (param_2 != (byte **)0x0) {
    *param_2 = pbVar8;
    return local_c;
  }
  return local_c;
}



// Library Function - Single Match
//  __Stolx
// 
// Library: Visual Studio 2008 Release

uint __Stolx(byte *param_1,byte **param_2,undefined4 param_3,undefined4 *param_4)

{
  byte bVar1;
  byte *pbVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  byte *pbVar6;
  byte **ppbVar7;
  
  pbVar2 = param_1;
  ppbVar7 = param_2;
  if (param_2 == (byte **)0x0) {
    ppbVar7 = &param_1;
  }
  bVar1 = *param_1;
  pbVar6 = param_1;
  while (iVar3 = _isspace((uint)bVar1), iVar3 != 0) {
    pbVar6 = pbVar6 + 1;
    bVar1 = *pbVar6;
  }
  bVar1 = *pbVar6;
  if ((bVar1 == 0x2d) || (bVar1 == 0x2b)) {
    param_2 = (byte **)CONCAT13(bVar1,param_2._0_3_);
    pbVar6 = pbVar6 + 1;
  }
  else {
    param_2 = (byte **)CONCAT13(0x2b,param_2._0_3_);
  }
  uVar4 = FUN_0082403e(pbVar6,ppbVar7,param_3,param_4);
  if (pbVar6 == *ppbVar7) {
    *ppbVar7 = pbVar2;
  }
  if (((pbVar2 != *ppbVar7) || (uVar4 == 0)) && ((param_2._3_1_ != '+' || (uVar4 < 0x80000000)))) {
    if (param_2._3_1_ != '-') {
      return uVar4;
    }
    if (uVar4 < 0x80000001) {
      return -uVar4;
    }
  }
  piVar5 = __errno();
  *piVar5 = 0x22;
  if (param_4 != (undefined4 *)0x0) {
    *param_4 = 1;
  }
  return (param_2._3_1_ == '-') + 0x7fffffff;
}



// WARNING: Removing unreachable block (ram,0x00824303)
// Library Function - Single Match
//  __Stollx
// 
// Library: Visual Studio 2008 Release

int __Stollx(byte *param_1,byte **param_2,undefined4 param_3,undefined4 *param_4)

{
  byte bVar1;
  byte *pbVar2;
  int iVar3;
  int *piVar4;
  byte *pbVar5;
  byte **ppbVar6;
  ulonglong uVar7;
  
  pbVar2 = param_1;
  ppbVar6 = param_2;
  if (param_2 == (byte **)0x0) {
    ppbVar6 = &param_1;
  }
  bVar1 = *param_1;
  pbVar5 = param_1;
  while (iVar3 = _isspace((uint)bVar1), iVar3 != 0) {
    pbVar5 = pbVar5 + 1;
    bVar1 = *pbVar5;
  }
  bVar1 = *pbVar5;
  if ((bVar1 == 0x2d) || (bVar1 == 0x2b)) {
    param_2 = (byte **)CONCAT13(bVar1,param_2._0_3_);
    pbVar5 = pbVar5 + 1;
  }
  else {
    param_2 = (byte **)CONCAT13(0x2b,param_2._0_3_);
  }
  uVar7 = FUN_00824341(pbVar5,ppbVar6,param_3,param_4);
  if (pbVar5 == *ppbVar6) {
    *ppbVar6 = pbVar2;
  }
  if (((pbVar2 != *ppbVar6) || (uVar7 == 0)) &&
     ((param_2._3_1_ != '+' || (uVar7 < 0x8000000000000000)))) {
    if (param_2._3_1_ != '-') {
      return (int)uVar7;
    }
    if (uVar7 < 0x8000000000000001) {
      return -(int)uVar7;
    }
  }
  piVar4 = __errno();
  *piVar4 = 0x22;
  if (param_4 != (undefined4 *)0x0) {
    *param_4 = 1;
  }
  if (param_2._3_1_ == '-') {
    iVar3 = 0;
  }
  else {
    iVar3 = -1;
  }
  return iVar3;
}



// WARNING: Removing unreachable block (ram,0x008244cb)

ulonglong FUN_00824341(byte *param_1,byte **param_2,size_t param_3,undefined4 *param_4)

{
  byte bVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  int iVar4;
  void *pvVar5;
  int *piVar6;
  byte *pbVar7;
  byte *pbVar8;
  byte *pbVar9;
  longlong lVar10;
  ulonglong uVar11;
  size_t sVar12;
  int local_1c;
  int local_18;
  char local_6;
  byte local_5;
  
  if (param_4 != (undefined4 *)0x0) {
    *param_4 = 0;
  }
  bVar1 = *param_1;
  pbVar7 = param_1;
  while (iVar4 = _isspace((uint)bVar1), iVar4 != 0) {
    pbVar7 = pbVar7 + 1;
    bVar1 = *pbVar7;
  }
  local_5 = *pbVar7;
  if ((local_5 == 0x2d) || (local_5 == 0x2b)) {
    pbVar7 = pbVar7 + 1;
  }
  else {
    local_5 = 0x2b;
  }
  if ((((int)param_3 < 0) || (param_3 == 1)) || (0x24 < (int)param_3)) goto LAB_00824539;
  pbVar8 = pbVar7;
  if ((int)param_3 < 1) {
    if (*pbVar7 == 0x30) {
      if ((pbVar7[1] == 0x78) || (pbVar7[1] == 0x58)) {
        param_3 = 0x10;
        goto LAB_008243e5;
      }
      param_3 = 8;
    }
    else {
      param_3 = 10;
    }
  }
  else if (((param_3 == 0x10) && (*pbVar7 == 0x30)) && ((pbVar7[1] == 0x78 || (pbVar7[1] == 0x58))))
  {
LAB_008243e5:
    pbVar7 = pbVar7 + 2;
    pbVar8 = pbVar7;
  }
  for (; *pbVar7 == 0x30; pbVar7 = pbVar7 + 1) {
  }
  local_6 = '\0';
  sVar12 = param_3;
  iVar4 = _tolower((int)(char)*pbVar7);
  pvVar5 = _memchr("0123456789abcdefghijklmnopqrstuvwxyz",iVar4,sVar12);
  pbVar9 = pbVar7;
  uVar11 = 0;
  uVar3 = 0;
  while (uVar2 = uVar11, pvVar5 != (void *)0x0) {
    local_6 = (char)pvVar5 + 'x';
    lVar10 = __allmul(param_3,(int)param_3 >> 0x1f,uVar2);
    pbVar9 = pbVar9 + 1;
    sVar12 = param_3;
    iVar4 = _tolower((int)(char)*pbVar9);
    pvVar5 = _memchr("0123456789abcdefghijklmnopqrstuvwxyz",iVar4,sVar12);
    uVar11 = lVar10 + (int)local_6;
    uVar3 = uVar2;
  }
  if (pbVar8 != pbVar9) {
    iVar4 = (int)(pbVar9 + -(int)(char)(&DAT_00d23fb0)[param_3]) - (int)pbVar7;
    if ((-1 < iVar4) &&
       (((pbVar9 + -(int)(char)(&DAT_00d23fb0)[param_3] != pbVar7 && -1 < iVar4 ||
         (uVar2 < uVar2 - (longlong)(int)local_6)) ||
        (uVar11 = __aulldiv(uVar2 - (longlong)(int)local_6,param_3,(int)param_3 >> 0x1f),
        uVar11 != uVar3)))) {
      piVar6 = __errno();
      *piVar6 = 0x22;
      if (param_4 != (undefined4 *)0x0) {
        *param_4 = 1;
      }
      uVar2 = 0xffffffffffffffff;
      local_5 = 0x2b;
    }
    local_18 = (int)(uVar2 >> 0x20);
    local_1c = (int)uVar2;
    if (local_5 == 0x2d) {
      uVar2 = CONCAT44(-(local_18 + (uint)(local_1c != 0)),-local_1c);
    }
    if (param_2 == (byte **)0x0) {
      return uVar2;
    }
    *param_2 = pbVar9;
    return uVar2;
  }
LAB_00824539:
  if (param_2 != (byte **)0x0) {
    *param_2 = param_1;
  }
  return 0;
}



// Library Function - Single Match
//  __Stofx
// 
// Library: Visual Studio 2008 Release

float10 __thiscall
__Stofx(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
       undefined4 param_4)

{
  float10 fVar1;
  
  fVar1 = (float10)FUN_00824568(param_1,param_2,param_3,param_4,param_1_00);
  return (float10)(float)fVar1;
}



float10 FUN_00824568(undefined4 param_1,undefined4 param_2,int param_3,int *param_4)

{
  int iVar1;
  int *piVar2;
  float10 fVar3;
  double local_c;
  
  piVar2 = __errno();
  iVar1 = *piVar2;
  piVar2 = __errno();
  *piVar2 = 0;
  fVar3 = (float10)FUN_00a467d3(param_1,param_2);
  local_c = (double)fVar3;
  piVar2 = __errno();
  *param_4 = *piVar2;
  piVar2 = __errno();
  *piVar2 = iVar1;
  for (; 0 < param_3; param_3 = param_3 + -1) {
    local_c = local_c * 10.0;
  }
  if (param_3 < 0) {
    param_3 = -param_3;
    do {
      param_3 = param_3 + -1;
      local_c = local_c / 10.0;
    } while (param_3 != 0);
  }
  return (float10)local_c;
}



void FUN_008245d1(void)

{
  FUN_00824568();
  return;
}



// Library Function - Single Match
//  __Toupper
// 
// Library: Visual Studio 2008 Release

int __cdecl __Toupper(int param_1,_Ctypevec *param_2)

{
  _Ctypevec *p_Var1;
  int iVar2;
  short *_Code_page;
  ushort *puVar3;
  uint uVar4;
  LPCWSTR local_10;
  undefined local_c;
  byte local_8;
  undefined local_7;
  
  p_Var1 = param_2;
  if (param_2 == (_Ctypevec *)0x0) {
    iVar2 = ____lc_handle_func();
    local_10 = *(LPCWSTR *)(iVar2 + 8);
    _Code_page = (short *)____lc_codepage_func();
  }
  else {
    local_10 = (LPCWSTR)param_2->_Page;
    _Code_page = param_2->_Table;
  }
  if (local_10 == (LPCWSTR)0x0) {
    if (0x19 < param_1 - 0x61U) {
      return param_1;
    }
    return param_1 + -0x20;
  }
  if ((uint)param_1 < 0x100) {
    if (p_Var1 != (_Ctypevec *)0x0) {
      if ((*(byte *)(p_Var1->_Delfl + param_1 * 2) & 2) == 0) {
        return param_1;
      }
      goto LAB_00824653;
    }
    iVar2 = _islower(param_1);
    if (iVar2 == 0) {
      return param_1;
    }
  }
  else {
LAB_00824653:
    if (p_Var1 != (_Ctypevec *)0x0) {
      uVar4 = (uint)(int)*(short *)(p_Var1->_Delfl + (param_1 >> 8 & 0xffU) * 2) >> 0xf & 1;
      goto LAB_0082468e;
    }
  }
  puVar3 = ___pctype_func();
  uVar4 = puVar3[param_1 >> 8 & 0xff] & 0x8000;
LAB_0082468e:
  p_Var1 = param_2;
  if (uVar4 == 0) {
    param_2._0_2_ = (ushort)(byte)param_1;
    iVar2 = 1;
  }
  else {
    local_c = (undefined)((uint)param_1 >> 8);
    param_2._0_2_ = CONCAT11((byte)param_1,local_c);
    param_2._0_3_ = (uint3)(ushort)param_2;
    iVar2 = 2;
  }
  iVar2 = ___crtLCMapStringA((_locale_t)0x0,local_10,0x200,(LPCSTR)&param_2,iVar2,(LPSTR)&local_8,3,
                             (int)_Code_page,1);
  if ((iVar2 != 0) && (param_1 = (int)local_8, iVar2 != 1)) {
    param_1 = (int)CONCAT11(local_8,local_7);
  }
  return param_1;
}



// Library Function - Single Match
//  struct _iobuf * __cdecl std::_Fiopen(wchar_t const *,int,int)
// 
// Library: Visual Studio 2008 Release

_iobuf * __cdecl std::_Fiopen(wchar_t *param_1,int param_2,int param_3)

{
  int iVar1;
  FILE *_File;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  
  uVar3 = param_2 & 4;
  uVar4 = param_2 & 0x80;
  if ((param_2 & 0x40U) != 0) {
    param_2 = param_2 | 1;
  }
  if ((param_2 & 8U) != 0) {
    param_2 = param_2 | 2;
  }
  iVar1 = 0;
  uVar2 = 1;
  do {
    if (uVar2 == (param_2 & 0xffffff3bU)) break;
    uVar2 = (&DAT_00d23fe8)[iVar1];
    iVar1 = iVar1 + 1;
  } while (uVar2 != 0);
  if ((&DAT_00d23fe4)[iVar1] != 0) {
    if (((uVar4 == 0) || ((param_2 & 1U) == 0)) ||
       (_File = __wfsopen(param_1,L"r",param_3), _File == (FILE *)0x0)) {
      _File = __wfsopen(param_1,*(wchar_t **)(iVar1 * 4 + 0x322e88c),param_3);
      if (_File == (FILE *)0x0) {
        return (_iobuf *)0x0;
      }
      if (uVar3 == 0) {
        return _File;
      }
      iVar1 = _fseek(_File,0,2);
      if (iVar1 == 0) {
        return _File;
      }
    }
    _fclose(_File);
  }
  return (_iobuf *)0x0;
}



// Library Function - Single Match
//  __Mtxinit
// 
// Library: Visual Studio

void __cdecl __Mtxinit(_Rmtx *param_1)

{
  InitializeCriticalSection(param_1);
  return;
}



void FUN_008247b6(LPCRITICAL_SECTION param_1)

{
  DeleteCriticalSection(param_1);
  return;
}



// Library Function - Single Match
//  __Mtxlock
// 
// Library: Visual Studio 2008 Release

void __cdecl __Mtxlock(_Rmtx *param_1)

{
  EnterCriticalSection(param_1);
  return;
}



// Library Function - Single Match
//  __Mtxunlock
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __cdecl __Mtxunlock(_Rmtx *param_1)

{
  LeaveCriticalSection(param_1);
  return;
}



// Library Function - Single Match
//  void __cdecl _Atexit(void (__cdecl*)(void))
// 
// Library: Visual Studio 2008 Release

void __cdecl _Atexit(_func_void *param_1)

{
  if (DAT_0322e8cc == 0) {
                    // WARNING: Subroutine does not return
    _abort();
  }
  DAT_0322e8cc = DAT_0322e8cc + -1;
  *(_func_void **)(DAT_0322e8cc * 4 + 0x32bc898) = param_1;
  return;
}



void thunk_FUN_00824826(void)

{
  int iVar1;
  
  while (DAT_0322e8cc < 10) {
    iVar1 = DAT_0322e8cc * 4;
    DAT_0322e8cc = DAT_0322e8cc + 1;
    if (*(int *)(iVar1 + 0x32bc898) != 0) {
      (**(code **)(DAT_0322e8cc * 4 + 0x32bc894))();
    }
  }
  return;
}



void FUN_00824826(void)

{
  int iVar1;
  
  while (DAT_0322e8cc < 10) {
    iVar1 = DAT_0322e8cc * 4;
    DAT_0322e8cc = DAT_0322e8cc + 1;
    if (*(int *)(iVar1 + 0x32bc898) != 0) {
      (**(code **)(DAT_0322e8cc * 4 + 0x32bc894))();
    }
  }
  return;
}



undefined4 FUN_00824840(short param_1)

{
  if ((param_1 != 0x2f) && (param_1 != 0x5c)) {
    return 0;
  }
  return 1;
}



undefined4 * __thiscall FUN_00824860(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  _Collvec _Var1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc2518;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = param_2;
  local_4 = 0;
  *param_1_00 = std::codecvt<wchar_t,char,int>::vftable;
  _Var1 = __Getcoll();
  *(_Collvec *)(param_1_00 + 2) = _Var1;
  ExceptionList = local_c;
  return param_1_00;
}



bool __thiscall
FUN_008248c0(int param_1_00,mbstate_t *param_1,char *param_2,char *param_3,char **param_4,
            wchar_t *param_5,wchar_t *param_6,wchar_t **param_7)

{
  char *pcVar1;
  char cVar2;
  char *pcVar3;
  bool bVar4;
  
  *param_4 = param_2;
  *param_7 = param_5;
  bVar4 = *param_4 != param_3;
  if (*param_4 != param_3) {
    while (*param_7 != param_6) {
      pcVar3 = (char *)__Mbrtowc(*param_7,*param_4,(int)param_3 - (int)*param_4,param_1,
                                 (_Cvtvec *)(param_1_00 + 8));
      if (pcVar3 == (char *)0xfffffffe) {
        *param_4 = param_3;
        return bVar4;
      }
      if (pcVar3 == (char *)0xffffffff) {
        return (bool)2;
      }
      if (pcVar3 == (char *)0x0) {
        if (**param_7 == L'\0') {
          pcVar3 = *param_4;
          pcVar1 = pcVar3 + 1;
          do {
            cVar2 = *pcVar3;
            pcVar3 = pcVar3 + 1;
          } while (cVar2 != '\0');
          pcVar3 = pcVar3 + (1 - (int)pcVar1);
          goto LAB_0082493a;
        }
      }
      else {
LAB_0082493a:
        if (pcVar3 == (char *)0xfffffffd) {
          pcVar3 = (char *)0x0;
        }
      }
      *param_4 = *param_4 + (int)pcVar3;
      *param_7 = *param_7 + 1;
      bVar4 = false;
      if (*param_4 == param_3) {
        return false;
      }
    }
  }
  return bVar4;
}



void __thiscall
FUN_00824970(int param_1_00,mbstate_t *param_1,wchar_t *param_2,wchar_t *param_3,wchar_t **param_4,
            char *param_5,char *param_6,char **param_7)

{
  wchar_t *pwVar1;
  char *pcVar2;
  int iVar3;
  rsize_t _MaxCount;
  rsize_t _DstSize;
  char *local_1c;
  mbstate_t *local_18;
  int local_14;
  mbstate_t local_10;
  char local_c [8];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_1c;
  *param_4 = param_2;
  *param_7 = param_5;
  pwVar1 = *param_4;
  local_14 = param_1_00;
  local_18 = param_1;
  local_1c = param_6;
  do {
    if ((pwVar1 == param_3) || (*param_7 == local_1c)) goto LAB_00824a79;
    pcVar2 = *param_7;
    iVar3 = ____mb_cur_max_func();
    if ((int)local_1c - (int)pcVar2 < iVar3) {
      local_10 = *local_18;
      _MaxCount = __Wcrtomb(local_c,**param_4,local_18,(_Cvtvec *)(local_14 + 8));
      if ((int)_MaxCount < 0) goto LAB_00824a55;
      _DstSize = (int)local_1c - (int)*param_7;
      if ((int)_DstSize < (int)_MaxCount) {
        *local_18 = local_10;
LAB_00824a79:
        ___security_check_cookie_4();
        return;
      }
      _memcpy_s(*param_7,_DstSize,local_c,_MaxCount);
      *param_4 = *param_4 + 1;
      *param_7 = *param_7 + _MaxCount;
    }
    else {
      iVar3 = __Wcrtomb(pcVar2,**param_4,local_18,(_Cvtvec *)(local_14 + 8));
      if (iVar3 < 0) {
LAB_00824a55:
        ___security_check_cookie_4();
        return;
      }
      *param_4 = *param_4 + 1;
      *param_7 = *param_7 + iVar3;
    }
    pwVar1 = *param_4;
  } while( true );
}



void __thiscall
FUN_00824a90(int param_1_00,mbstate_t *param_1,void *param_2,int param_3,void **param_4)

{
  int iVar1;
  rsize_t _DstSize;
  rsize_t _MaxCount;
  mbstate_t local_10;
  char local_c [8];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_10;
  *param_4 = param_2;
  local_10 = *param_1;
  iVar1 = __Wcrtomb(local_c,L'\0',param_1,(_Cvtvec *)(param_1_00 + 8));
  if (iVar1 < 1) {
    ___security_check_cookie_4();
    return;
  }
  _MaxCount = iVar1 - 1;
  _DstSize = param_3 - (int)*param_4;
  if ((int)_DstSize < (int)_MaxCount) {
    *param_1 = local_10;
    ___security_check_cookie_4();
    return;
  }
  if (0 < (int)_MaxCount) {
    _memcpy_s(*param_4,_DstSize,local_c,_MaxCount);
    *param_4 = (void *)((int)*param_4 + _MaxCount);
  }
  ___security_check_cookie_4();
  return;
}



uint __thiscall
FUN_00824b50(int param_1_00,mbstate_t *param_1,char *param_2,char *param_3,uint param_4)

{
  char cVar1;
  char *pcVar2;
  char *pcVar3;
  char *pcVar4;
  uint uVar5;
  mbstate_t local_4;
  
  pcVar2 = param_3;
  local_4 = *param_1;
  uVar5 = 0;
  pcVar4 = param_2;
  if (param_4 != 0) {
    do {
      if (pcVar4 == pcVar2) {
        return uVar5;
      }
      pcVar3 = (char *)__Mbrtowc((wchar_t *)&param_1,pcVar4,(int)pcVar2 - (int)pcVar4,&local_4,
                                 (_Cvtvec *)(param_1_00 + 8));
      if (pcVar3 == (char *)0xfffffffe) {
        return uVar5;
      }
      if (pcVar3 == (char *)0xffffffff) {
        return uVar5;
      }
      if (pcVar3 == (char *)0x0) {
        if ((short)param_1 == 0) {
          pcVar3 = pcVar4;
          do {
            cVar1 = *pcVar3;
            pcVar3 = pcVar3 + 1;
          } while (cVar1 != '\0');
          pcVar3 = pcVar3 + (1 - (int)(pcVar4 + 1));
          goto LAB_00824bba;
        }
      }
      else {
LAB_00824bba:
        if (pcVar3 == (char *)0xfffffffd) {
          pcVar3 = (char *)0x0;
        }
      }
      uVar5 = uVar5 + 1;
      pcVar4 = pcVar4 + (int)pcVar3;
    } while (uVar5 < param_4);
  }
  return uVar5;
}



undefined4 FUN_00824be0(void)

{
  return 5;
}



int __thiscall FUN_00824bf0(int param_1_00,short *param_1,uint param_2,int param_3)

{
  int **ppiVar1;
  uint uVar2;
  int **ppiVar3;
  int **ppiVar4;
  short *psVar5;
  short *psVar6;
  int iVar7;
  
  if ((param_3 != 0) && (param_2 < *(uint *)(param_1_00 + 0x14))) {
    uVar2 = *(uint *)(param_1_00 + 0x18);
    ppiVar1 = (int **)(param_1_00 + 4);
    ppiVar3 = ppiVar1;
    if (7 < uVar2) {
      ppiVar3 = (int **)*ppiVar1;
    }
    ppiVar4 = ppiVar1;
    if (7 < uVar2) {
      ppiVar4 = (int **)*ppiVar1;
    }
    for (psVar5 = (short *)((int)ppiVar4 + param_2 * 2);
        psVar5 < (short *)((int)ppiVar3 + *(uint *)(param_1_00 + 0x14) * 2); psVar5 = psVar5 + 1) {
      psVar6 = param_1;
      iVar7 = param_3;
      do {
        if (*psVar6 == *psVar5) {
          if (7 < uVar2) {
            return (int)psVar5 - (int)*ppiVar1 >> 1;
          }
          return (int)psVar5 - (int)ppiVar1 >> 1;
        }
        psVar6 = psVar6 + 1;
        iVar7 = iVar7 + -1;
      } while (iVar7 != 0);
    }
  }
  return -1;
}



int __thiscall FUN_00824c80(int param_1_00,short *param_1,uint param_2,int param_3)

{
  int **ppiVar1;
  uint uVar2;
  int **ppiVar3;
  short *psVar4;
  int iVar5;
  short *psVar6;
  
  if ((param_3 != 0) && (uVar2 = *(uint *)(param_1_00 + 0x14), uVar2 != 0)) {
    if (uVar2 <= param_2) {
      param_2 = uVar2 - 1;
    }
    uVar2 = *(uint *)(param_1_00 + 0x18);
    ppiVar1 = (int **)(param_1_00 + 4);
    ppiVar3 = ppiVar1;
    if (7 < uVar2) {
      ppiVar3 = (int **)*ppiVar1;
    }
    psVar6 = (short *)((int)ppiVar3 + param_2 * 2);
    while( true ) {
      psVar4 = param_1;
      iVar5 = param_3;
      do {
        if (*psVar4 == *psVar6) {
          if (uVar2 < 8) {
            return (int)psVar6 - (int)ppiVar1 >> 1;
          }
          return (int)psVar6 - (int)*ppiVar1 >> 1;
        }
        psVar4 = psVar4 + 1;
        iVar5 = iVar5 + -1;
      } while (iVar5 != 0);
      psVar4 = (short *)FUN_00418333();
      if (psVar6 == psVar4) break;
      psVar6 = psVar6 + -1;
    }
  }
  return -1;
}



void FUN_00824d20(int param_1,int *param_2,int *param_3,uint param_4)

{
  short sVar1;
  char cVar2;
  int **ppiVar3;
  undefined2 *puVar4;
  int **ppiVar5;
  undefined4 *puVar6;
  short *psVar7;
  undefined4 *puVar8;
  uint uVar9;
  int iVar10;
  
  if (param_4 == 0xffffffff) {
    param_4 = *(uint *)(param_1 + 0x14);
  }
  *param_2 = 0;
  *param_3 = 0;
  if (*(int *)(param_1 + 0x14) == 0) {
    return;
  }
  uVar9 = 0;
  if (1 < param_4) {
    ppiVar3 = (int **)(param_1 + 4);
    ppiVar5 = ppiVar3;
    if (7 < *(uint *)(param_1 + 0x18)) {
      ppiVar5 = (int **)*ppiVar3;
    }
    if ((*(short *)ppiVar5 == 0x2f) || (*(short *)ppiVar5 == 0x5c)) {
      if (*(int *)(param_1 + 0x14) == 0) {
        FUN_00a3fb10();
      }
      if (7 < *(uint *)(param_1 + 0x18)) {
        ppiVar3 = (int **)*ppiVar3;
      }
      if ((*(short *)((int)ppiVar3 + 2) == 0x2f) || (*(short *)((int)ppiVar3 + 2) == 0x5c)) {
        if (param_4 != 2) {
          puVar4 = (undefined2 *)FUN_004127c3(2);
          cVar2 = FUN_00824840(*puVar4);
          if (cVar2 != '\0') goto LAB_00824deb;
        }
        uVar9 = 2;
        *param_3 = *param_3 + 2;
        goto LAB_00824dcd;
      }
    }
  }
LAB_00824deb:
  ppiVar3 = (int **)(param_1 + 4);
  ppiVar5 = ppiVar3;
  if (7 < *(uint *)(param_1 + 0x18)) {
    ppiVar5 = (int **)*ppiVar3;
  }
  if ((*(short *)ppiVar5 == 0x2f) || (*(short *)ppiVar5 == 0x5c)) {
    uVar9 = 1;
    *param_3 = *param_3 + 1;
    if (param_4 < 2) {
      return;
    }
    iVar10 = 2;
    while( true ) {
      if (*(uint *)(param_1 + 0x14) < uVar9) {
        FUN_00a3fb10();
      }
      ppiVar5 = ppiVar3;
      if (7 < *(uint *)(param_1 + 0x18)) {
        ppiVar5 = (int **)*ppiVar3;
      }
      if ((*(short *)(iVar10 + (int)ppiVar5) != 0x2f) && (*(short *)(iVar10 + (int)ppiVar5) != 0x5c)
         ) break;
      *param_2 = *param_2 + 1;
      uVar9 = uVar9 + 1;
      iVar10 = iVar10 + 2;
      if (param_4 <= uVar9) {
        return;
      }
    }
    return;
  }
LAB_00824dcd:
  puVar8 = (undefined4 *)(param_1 + 4);
  if (uVar9 < param_4) {
    while( true ) {
      if (*(uint *)(param_1 + 0x14) < uVar9) {
        FUN_00a3fb10();
      }
      puVar6 = puVar8;
      if (7 < *(uint *)(param_1 + 0x18)) {
        puVar6 = (undefined4 *)*puVar8;
      }
      if (*(short *)((int)puVar6 + uVar9 * 2) == 0x3a) break;
      if (*(uint *)(param_1 + 0x14) < uVar9) {
        FUN_00a3fb10();
      }
      puVar6 = puVar8;
      if (7 < *(uint *)(param_1 + 0x18)) {
        puVar6 = (undefined4 *)*puVar8;
      }
      sVar1 = *(short *)((int)puVar6 + uVar9 * 2);
      if ((sVar1 == 0x2f) || (sVar1 == 0x5c)) break;
      *param_3 = *param_3 + 1;
      uVar9 = uVar9 + 1;
      if (param_4 <= uVar9) break;
    }
  }
  if ((uVar9 != param_4) && (psVar7 = (short *)FUN_004127c3(uVar9), *psVar7 == 0x3a)) {
    *param_3 = *param_3 + 1;
  }
  return;
}



void FUN_00824ec0(short *param_1,undefined4 param_2)

{
  short sVar1;
  short *psVar2;
  
  psVar2 = param_1;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  FUN_00824bf0(param_1,param_2,(int)psVar2 - (int)(param_1 + 1) >> 1);
  return;
}



void __thiscall FUN_00824ef0(int param_1_00,uint param_1)

{
  uint uVar1;
  short *psVar2;
  
  if ((param_1 != 0) && (param_1 < *(uint *)(param_1_00 + 0x14))) {
    uVar1 = param_1 + 1;
    if (*(uint *)(param_1_00 + 0x14) < uVar1) {
      FUN_00a3fb10();
    }
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      param_1_00 = param_1_00 + 4;
    }
    else {
      param_1_00 = *(int *)(param_1_00 + 4);
    }
    if ((*(short *)(param_1_00 + uVar1 * 2) == 0x2f) ||
       (psVar2 = (short *)FUN_004220c0(uVar1), *psVar2 == 0x5c)) {
      FID_conflict_erase(param_1,1);
    }
  }
  return;
}



bool FUN_00824f50(int param_1,uint param_2)

{
  ushort uVar1;
  int iVar2;
  ushort **ppuVar3;
  short *psVar4;
  int iVar5;
  uint uVar6;
  ushort **ppuVar7;
  
  if (param_2 != 0) {
    iVar5 = param_2 * 2;
    uVar6 = param_2;
    do {
      uVar6 = uVar6 - 1;
      iVar5 = iVar5 + -2;
      if (*(uint *)(param_1 + 0x14) < uVar6) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar2 = param_1 + 4;
      }
      else {
        iVar2 = *(int *)(param_1 + 4);
      }
    } while (((*(short *)(iVar5 + iVar2) == 0x2f) || (*(short *)(iVar5 + iVar2) == 0x5c)) &&
            (param_2 = param_2 - 1, param_2 != 0));
  }
  if (param_2 != 0) {
    if (param_2 == 2) {
      ppuVar7 = (ushort **)(param_1 + 4);
      ppuVar3 = ppuVar7;
      if (7 < *(uint *)(param_1 + 0x18)) {
        ppuVar3 = (ushort **)*ppuVar7;
      }
      uVar1 = *(ushort *)ppuVar3;
      if (((0x60 < uVar1) && (uVar1 < 0x7b)) || ((ushort)(uVar1 - 0x41) < 0x1a)) {
        if (*(int *)(param_1 + 0x14) == 0) {
          FUN_00a3fb10();
        }
        if (7 < *(uint *)(param_1 + 0x18)) {
          ppuVar7 = (ushort **)*ppuVar7;
        }
        if (*(ushort *)((int)ppuVar7 + 2) == 0x3a) {
          return true;
        }
      }
    }
    else if (2 < param_2) {
      if (*(uint *)(param_1 + 0x18) < 8) {
        psVar4 = (short *)(param_1 + 4);
      }
      else {
        psVar4 = *(short **)(param_1 + 4);
      }
      if ((*psVar4 == 0x2f) || (*psVar4 == 0x5c)) {
        psVar4 = (short *)FUN_004127c3(1);
        if ((*psVar4 == 0x2f) || (*psVar4 == 0x5c)) {
          uVar6 = FUN_00824ec0(&DAT_00d2406c,2);
          return uVar6 == param_2;
        }
      }
    }
    return false;
  }
  return true;
}



uint FUN_00825060(int param_1,int param_2)

{
  uint uVar1;
  short sVar2;
  int iVar3;
  short **ppsVar4;
  int iVar5;
  short *psVar6;
  short **ppsVar7;
  
  iVar3 = param_2;
  if (param_2 == 2) {
    ppsVar7 = (short **)(param_1 + 4);
    ppsVar4 = ppsVar7;
    if (7 < *(uint *)(param_1 + 0x18)) {
      ppsVar4 = (short **)*ppsVar7;
    }
    if ((*(short *)ppsVar4 == 0x2f) || (*(short *)ppsVar4 == 0x5c)) {
      if (*(int *)(param_1 + 0x14) == 0) {
        FUN_00a3fb10();
      }
      if (7 < *(uint *)(param_1 + 0x18)) {
        ppsVar7 = (short **)*ppsVar7;
      }
      if (*(short *)((int)ppsVar7 + 2) == 0x2f) {
        return 0;
      }
      if (*(short *)((int)ppsVar7 + 2) == 0x5c) {
        return 0;
      }
    }
  }
  else if (param_2 == 0) goto LAB_008250f1;
  uVar1 = iVar3 - 1;
  if (*(uint *)(param_1 + 0x14) < uVar1) {
    FUN_00a3fb10();
  }
  if (*(uint *)(param_1 + 0x18) < 8) {
    iVar5 = param_1 + 4;
  }
  else {
    iVar5 = *(int *)(param_1 + 4);
  }
  sVar2 = *(short *)(iVar5 + uVar1 * 2);
  if ((sVar2 == 0x2f) || (sVar2 == 0x5c)) {
    return uVar1;
  }
LAB_008250f1:
  iVar5 = FUN_00824c80(&DAT_00d2406c,iVar3 + -1,2);
  if (iVar5 == -1) {
    param_2 = 0x3a;
    iVar5 = FUN_007433d1(&param_2,iVar3 + -2,1);
    if (iVar5 == -1) {
      return 0;
    }
  }
  if (iVar5 == 1) {
    if (*(uint *)(param_1 + 0x18) < 8) {
      psVar6 = (short *)(param_1 + 4);
    }
    else {
      psVar6 = *(short **)(param_1 + 4);
    }
    if ((*psVar6 == 0x2f) || (*psVar6 == 0x5c)) {
      return 0;
    }
  }
  return iVar5 + 1;
}



uint FUN_00825160(int param_1,uint param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined2 *puVar3;
  uint uVar4;
  short **ppsVar5;
  short *psVar6;
  undefined4 *puVar7;
  short **ppsVar8;
  undefined4 uVar9;
  
  if (2 < param_2) {
    if (*(int *)(param_1 + 0x14) == 0) {
      FUN_00a3fb10();
    }
    puVar7 = (undefined4 *)(param_1 + 4);
    puVar2 = puVar7;
    if (7 < *(uint *)(param_1 + 0x18)) {
      puVar2 = (undefined4 *)*puVar7;
    }
    if (*(short *)((int)puVar2 + 2) == 0x3a) {
      if (*(uint *)(param_1 + 0x14) < 2) {
        FUN_00a3fb10();
      }
      if (7 < *(uint *)(param_1 + 0x18)) {
        puVar7 = (undefined4 *)*puVar7;
      }
      if ((*(short *)(puVar7 + 1) == 0x2f) || (*(short *)(puVar7 + 1) == 0x5c)) {
        return 2;
      }
    }
  }
  if (param_2 == 2) {
    ppsVar8 = (short **)(param_1 + 4);
    ppsVar5 = ppsVar8;
    if (7 < *(uint *)(param_1 + 0x18)) {
      ppsVar5 = (short **)*ppsVar8;
    }
    if ((*(short *)ppsVar5 == 0x2f) || (*(short *)ppsVar5 == 0x5c)) {
      if (*(int *)(param_1 + 0x14) == 0) {
        FUN_00a3fb10();
      }
      if (7 < *(uint *)(param_1 + 0x18)) {
        ppsVar8 = (short **)*ppsVar8;
      }
      if (*(short *)((int)ppsVar8 + 2) == 0x2f) {
        return 0xffffffff;
      }
      if (*(short *)((int)ppsVar8 + 2) == 0x5c) {
        return 0xffffffff;
      }
    }
  }
  else {
    if (4 < param_2) {
      ppsVar8 = (short **)(param_1 + 4);
      ppsVar5 = ppsVar8;
      if (7 < *(uint *)(param_1 + 0x18)) {
        ppsVar5 = (short **)*ppsVar8;
      }
      if ((*(short *)ppsVar5 == 0x2f) || (*(short *)ppsVar5 == 0x5c)) {
        if (*(int *)(param_1 + 0x14) == 0) {
          FUN_00a3fb10();
        }
        if (7 < *(uint *)(param_1 + 0x18)) {
          ppsVar8 = (short **)*ppsVar8;
        }
        if (((*(short *)((int)ppsVar8 + 2) == 0x2f) || (*(short *)((int)ppsVar8 + 2) == 0x5c)) &&
           (psVar6 = (short *)FUN_004127c3(2), *psVar6 == 0x3f)) {
          puVar3 = (undefined2 *)FUN_004127c3(3);
          cVar1 = FUN_00824840(*puVar3);
          if (cVar1 != '\0') {
            uVar9 = 4;
            goto LAB_0082528f;
          }
        }
      }
    }
    if (3 < param_2) {
      ppsVar8 = (short **)(param_1 + 4);
      ppsVar5 = ppsVar8;
      if (7 < *(uint *)(param_1 + 0x18)) {
        ppsVar5 = (short **)*ppsVar8;
      }
      if ((*(short *)ppsVar5 == 0x2f) || (*(short *)ppsVar5 == 0x5c)) {
        if (*(int *)(param_1 + 0x14) == 0) {
          FUN_00a3fb10();
        }
        if (7 < *(uint *)(param_1 + 0x18)) {
          ppsVar8 = (short **)*ppsVar8;
        }
        if ((*(short *)((int)ppsVar8 + 2) == 0x2f) || (*(short *)((int)ppsVar8 + 2) == 0x5c)) {
          psVar6 = (short *)FUN_004127c3(2);
          if ((*psVar6 != 0x2f) && (*psVar6 != 0x5c)) {
            uVar9 = 2;
LAB_0082528f:
            uVar4 = FUN_00824ec0(&DAT_00d2406c,uVar9);
            if (param_2 <= uVar4) {
              return 0xffffffff;
            }
            return uVar4;
          }
        }
      }
    }
    if (param_2 == 0) {
      return 0xffffffff;
    }
  }
  if (*(uint *)(param_1 + 0x18) < 8) {
    psVar6 = (short *)(param_1 + 4);
  }
  else {
    psVar6 = *(short **)(param_1 + 4);
  }
  if ((*psVar6 != 0x2f) && (*psVar6 != 0x5c)) {
    return 0xffffffff;
  }
  return 0;
}



void __thiscall FUN_00825340(undefined4 *param_1_00,undefined4 *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar1 = *param_1_00;
  uVar2 = param_1_00[1];
  FUN_004226c0(-param_2);
  *param_1 = uVar1;
  param_1[1] = uVar2;
  return;
}



void __fastcall FUN_00825380(int param_1)

{
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  return;
}



uint __fastcall FUN_008253b0(int param_1)

{
  short sVar1;
  bool bVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int iVar7;
  
  uVar3 = FUN_00825060(param_1,*(undefined4 *)(param_1 + 0x14));
  if (*(uint *)(param_1 + 0x14) != 0) {
    if (*(uint *)(param_1 + 0x14) < uVar3) {
      FUN_00a3fb10();
    }
    if (*(uint *)(param_1 + 0x18) < 8) {
      iVar7 = param_1 + 4;
    }
    else {
      iVar7 = *(int *)(param_1 + 4);
    }
    sVar1 = *(short *)(iVar7 + uVar3 * 2);
    if ((sVar1 == 0x2f) || (sVar1 == 0x5c)) {
      bVar2 = true;
      goto LAB_00825400;
    }
  }
  bVar2 = false;
LAB_00825400:
  uVar4 = FUN_00825160(param_1,uVar3);
  if (uVar3 != 0) {
    iVar7 = uVar3 * 2;
    uVar6 = uVar3;
    while( true ) {
      iVar7 = iVar7 + -2;
      uVar6 = uVar6 - 1;
      if (uVar6 == uVar4) break;
      if (*(uint *)(param_1 + 0x14) < uVar6) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar5 = param_1 + 4;
      }
      else {
        iVar5 = *(int *)(param_1 + 4);
      }
      if (((*(short *)(iVar5 + iVar7) != 0x2f) && (*(short *)(iVar5 + iVar7) != 0x5c)) ||
         (uVar3 = uVar3 - 1, uVar3 == 0)) break;
    }
  }
  if (((uVar3 == 1) && (uVar4 == 0)) && (bVar2)) {
    return 0xffffffff;
  }
  return uVar3;
}



undefined4 __fastcall FUN_00825480(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar2 = 0xffffffff;
  uVar1 = FUN_008253b0(0xffffffff);
  FID_conflict_erase(uVar1,uVar2);
  return param_1;
}



int __thiscall FUN_008254a0(int param_1_00,undefined2 param_1)

{
  int *piVar1;
  int *piVar2;
  
  if (*(int *)(param_1_00 + 0x18) == 0) {
    FUN_004181eb(1,*(undefined4 *)(param_1_00 + 0x14));
  }
  piVar1 = (int *)(param_1_00 + 4);
  piVar2 = piVar1;
  if (7 < *(uint *)(param_1_00 + 0x18)) {
    piVar2 = (int *)*piVar1;
  }
  *(undefined2 *)piVar2 = param_1;
  *(undefined4 *)(param_1_00 + 0x14) = 1;
  if (7 < *(uint *)(param_1_00 + 0x18)) {
    piVar1 = (int *)*piVar1;
  }
  *(undefined2 *)((int)piVar1 + 2) = 0;
  return param_1_00;
}



undefined4 FUN_008254f0(int *param_1,locale *param_2)

{
  uint uVar1;
  void *pvVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  undefined4 uVar4;
  int iVar5;
  undefined local_9c [4];
  undefined4 local_98;
  uint local_84;
  _Locinfo local_80 [116];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc258f;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff50;
  ExceptionList = &local_c;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar2 = operator_new(0x10);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      iVar5 = 0;
    }
    else {
      pbVar3 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_9c);
      local_4 = CONCAT31(local_4._1_3_,1);
      uVar4 = std::_Locinfo::_Locinfo(local_80,pbVar3);
      local_4 = 2;
      iVar5 = FUN_00824860(uVar4,0);
    }
    *param_1 = iVar5;
    local_4 = 3;
    if ((pvVar2 != (void *)0x0) && (std::_Locinfo::~_Locinfo(local_80), 0xf < local_84)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_98,uVar1);
    }
  }
  ExceptionList = local_c;
  return 2;
}



int __thiscall FUN_00825600(int param_1_00,int param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  void *pvVar3;
  uint uVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  undefined4 *puVar8;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  pvVar3 = ExceptionList;
  puStack_8 = &LAB_00bc25c9;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 4) = 0;
  local_4 = 0;
  if (*(int *)(param_1_00 + 0x14) == 0) {
    ExceptionList = pvVar3;
    return param_1;
  }
  uVar1 = *(uint *)(param_1_00 + 0x18);
  puVar8 = (undefined4 *)(param_1_00 + 4);
  puVar7 = puVar8;
  if (7 < uVar1) {
    puVar7 = (undefined4 *)*puVar8;
  }
  if (puVar7 == (undefined4 *)0x0) {
LAB_008256a2:
    FUN_00a3fb10(uVar4);
  }
  else {
    puVar5 = puVar8;
    if (7 < uVar1) {
      puVar5 = (undefined4 *)*puVar8;
    }
    if (puVar7 < puVar5) goto LAB_008256a2;
    puVar5 = puVar8;
    if (7 < uVar1) {
      puVar5 = (undefined4 *)*puVar8;
    }
    if ((undefined4 *)((int)puVar5 + *(int *)(param_1_00 + 0x14) * 2) < puVar7) goto LAB_008256a2;
  }
  if (param_1_00 != -4) {
    puVar5 = puVar8;
    if (7 < *(uint *)(param_1_00 + 0x18)) {
      puVar5 = (undefined4 *)*puVar8;
    }
    if ((undefined4 *)((int)puVar5 + *(int *)(param_1_00 + 0x14) * 2) <= puVar7) {
      FUN_00a3fb10(uVar4);
    }
  }
  uVar1 = *(uint *)(param_1_00 + 0x18);
  iVar2 = *(int *)(param_1_00 + 0x14);
  puVar5 = puVar8;
  if (7 < uVar1) {
    puVar5 = (undefined4 *)*puVar8;
  }
  if (puVar5 != (undefined4 *)0x0) {
    puVar6 = puVar8;
    if (7 < uVar1) {
      puVar6 = (undefined4 *)*puVar8;
    }
    if (puVar6 <= puVar5) {
      puVar6 = puVar8;
      if (7 < uVar1) {
        puVar6 = (undefined4 *)*puVar8;
      }
      if (puVar5 <= (undefined4 *)((int)puVar6 + iVar2 * 2)) goto LAB_00825702;
    }
  }
  FUN_00a3fb10(uVar4);
LAB_00825702:
  if (param_1_00 != -4) {
    if (7 < *(uint *)(param_1_00 + 0x18)) {
      puVar8 = (undefined4 *)*puVar8;
    }
    if ((undefined4 *)((int)puVar8 + *(int *)(param_1_00 + 0x14) * 2) <= puVar5) {
      FUN_00a3fb10(uVar4);
    }
  }
  FUN_008284c0(puVar5,(int)puVar7 + iVar2 * 2,param_1,param_2);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00825760(undefined4 param_1_00,int param_1)

{
  uint uVar1;
  undefined4 ****ppppuVar2;
  undefined4 ****ppppuVar3;
  undefined4 ****ppppuVar4;
  undefined4 local_34;
  int local_30;
  undefined local_2c [4];
  undefined4 ****local_28 [4];
  int local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2611;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_34;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  local_34 = 0;
  local_30 = param_1;
  local_14 = 7;
  local_18 = 0;
  local_28[0] = (undefined4 ****)((uint)local_28[0] & 0xffff0000);
  FID_conflict_assign(param_1_00,0,0xffffffff);
  local_4 = 1;
  ppppuVar2 = local_28[0];
  if (local_14 < 8) {
    ppppuVar2 = local_28;
  }
  ppppuVar2 = (undefined4 ****)((int)ppppuVar2 + local_18 * 2);
  if (ppppuVar2 == (undefined4 ****)0x0) {
LAB_00825807:
    FUN_00a3fb10(uVar1);
  }
  else {
    ppppuVar4 = local_28[0];
    if (local_14 < 8) {
      ppppuVar4 = local_28;
    }
    if (ppppuVar2 < ppppuVar4) goto LAB_00825807;
    ppppuVar4 = local_28[0];
    if (local_14 < 8) {
      ppppuVar4 = local_28;
    }
    if ((undefined4 ****)((int)ppppuVar4 + local_18 * 2) < ppppuVar2) goto LAB_00825807;
  }
  if (local_14 < 8) {
    ppppuVar4 = local_28;
LAB_00825827:
    ppppuVar3 = local_28[0];
    if (local_14 < 8) {
      ppppuVar3 = local_28;
    }
    if (ppppuVar3 <= ppppuVar4) {
      ppppuVar3 = local_28[0];
      if (local_14 < 8) {
        ppppuVar3 = local_28;
      }
      if (ppppuVar4 <= (undefined4 ****)((int)ppppuVar3 + local_18 * 2)) goto joined_r0x00825851;
    }
  }
  else {
    ppppuVar4 = local_28[0];
    if (local_28[0] != (undefined4 ****)0x0) goto LAB_00825827;
  }
  FUN_00a3fb10(uVar1);
joined_r0x00825851:
  for (; ppppuVar4 != ppppuVar2; ppppuVar4 = (undefined4 ****)((int)ppppuVar4 + 2)) {
    if (*(short *)ppppuVar4 == 0x5c) {
      *(short *)ppppuVar4 = 0x2f;
    }
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(local_2c,0,0xffffffff);
  if (7 < local_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_28[0]);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __fastcall FUN_008258d0(int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  short **ppsVar3;
  short **ppsVar4;
  int iVar5;
  short **ppsVar6;
  
  iVar5 = *(int *)(param_1 + 0x14);
  if (iVar5 == 0) {
    return 0;
  }
  uVar1 = *(uint *)(param_1 + 0x18);
  ppsVar6 = (short **)(param_1 + 4);
  ppsVar3 = ppsVar6;
  if (7 < uVar1) {
    ppsVar3 = (short **)*ppsVar6;
  }
  ppsVar3 = (short **)((int)ppsVar3 + iVar5 * 2);
  if (ppsVar3 == (short **)0x0) {
LAB_0082591c:
    FUN_00a3fb10();
  }
  else {
    ppsVar4 = ppsVar6;
    if (7 < uVar1) {
      ppsVar4 = (short **)*ppsVar6;
    }
    if (ppsVar3 < ppsVar4) goto LAB_0082591c;
    ppsVar4 = ppsVar6;
    if (7 < uVar1) {
      ppsVar4 = (short **)*ppsVar6;
    }
    if ((short **)((int)ppsVar4 + iVar5 * 2) < ppsVar3) goto LAB_0082591c;
  }
  FUN_004226c0(0xffffffff);
  if (param_1 != -4) {
    if (param_1 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(param_1 + 0x18) < 8) {
      iVar5 = param_1 + 4;
    }
    else {
      iVar5 = *(int *)(param_1 + 4);
    }
    if ((short **)(iVar5 + *(int *)(param_1 + 0x14) * 2) <= ppsVar3) {
      FUN_00a3fb10();
    }
  }
  if (*(short *)ppsVar3 == 0x3a) {
    return 0;
  }
  uVar1 = *(uint *)(param_1 + 0x18);
  ppsVar3 = ppsVar6;
  if (7 < uVar1) {
    ppsVar3 = (short **)*ppsVar6;
  }
  iVar5 = *(int *)(param_1 + 0x14) * 2;
  ppsVar3 = (short **)(iVar5 + (int)ppsVar3);
  if (ppsVar3 != (short **)0x0) {
    ppsVar4 = ppsVar6;
    if (7 < uVar1) {
      ppsVar4 = (short **)*ppsVar6;
    }
    if (ppsVar4 <= ppsVar3) {
      if (7 < uVar1) {
        ppsVar6 = (short **)*ppsVar6;
      }
      if (ppsVar3 <= (short **)(iVar5 + (int)ppsVar6)) goto LAB_008259af;
    }
  }
  FUN_00a3fb10();
LAB_008259af:
  FUN_004226c0(0xffffffff);
  if (param_1 != -4) {
    if (param_1 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(param_1 + 0x18) < 8) {
      iVar5 = param_1 + 4;
    }
    else {
      iVar5 = *(int *)(param_1 + 4);
    }
    if ((short **)(iVar5 + *(int *)(param_1 + 0x14) * 2) <= ppsVar3) {
      FUN_00a3fb10();
    }
  }
  if ((*(short *)ppsVar3 != 0x2f) && (*(short *)ppsVar3 != 0x5c)) {
    uVar2 = *(undefined4 *)(param_1 + 0x14);
    FID_conflict_append(1,0x5c);
    return uVar2;
  }
  return 0;
}



void __thiscall FUN_00825a30(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(int *)(param_1 + 0x1c) = param_1_00;
  *(undefined4 *)(param_1 + 0x20) = *(undefined4 *)(param_1_00 + 0x14);
  return;
}



_Locimp ** __thiscall FUN_00825a60(_Locimp **param_1_00,undefined4 *param_1,facet *param_2)

{
  facet *pfVar1;
  uint uVar2;
  void *pvVar3;
  _Locimp *p_Var4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc264b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar3 = operator_new(0x34);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    p_Var4 = (_Locimp *)0x0;
  }
  else {
    p_Var4 = (_Locimp *)FUN_007cc38a(*param_1);
  }
  pfVar1 = param_2;
  local_4 = 0xffffffff;
  *param_1_00 = p_Var4;
  if (param_2 != (facet *)0x0) {
    if (DAT_032bc828 == 0) {
      std::_Lockit::_Lockit((_Lockit *)&param_1,0);
      if (DAT_032bc828 == 0) {
        DAT_032bc818 = DAT_032bc818 + 1;
        DAT_032bc828 = DAT_032bc818;
      }
      FUN_00823810(uVar2);
    }
    std::locale::_Locimp::_Locimp_Addfac(*param_1_00,pfVar1,DAT_032bc828);
    *(undefined4 *)(*param_1_00 + 0x10) = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (*param_1_00 + 0x18),"*",1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



facet * FUN_00825b50(int *param_1)

{
  uint uVar1;
  facet *pfVar2;
  int *piVar3;
  uint uVar4;
  int iVar5;
  facet *pfVar6;
  facet *local_24;
  _Lockit local_20 [4];
  _Lockit local_1c [4];
  bad_cast local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2678;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  std::_Lockit::_Lockit(local_1c,0);
  pfVar2 = DAT_032bc8c4;
  local_4 = 0;
  local_24 = DAT_032bc8c4;
  if (DAT_032bc828 == 0) {
    std::_Lockit::_Lockit(local_20,0);
    if (DAT_032bc828 == 0) {
      DAT_032bc818 = DAT_032bc818 + 1;
      DAT_032bc828 = DAT_032bc818;
    }
    FUN_00823810(uVar4);
  }
  piVar3 = param_1;
  uVar1 = DAT_032bc828;
  iVar5 = *param_1;
  if (DAT_032bc828 < *(uint *)(iVar5 + 0xc)) {
    pfVar6 = *(facet **)(*(int *)(iVar5 + 8) + DAT_032bc828 * 4);
    if (pfVar6 == (facet *)0x0) goto LAB_00825be4;
LAB_00825c02:
    if (pfVar6 != (facet *)0x0) goto LAB_00825c71;
  }
  else {
    pfVar6 = (facet *)0x0;
LAB_00825be4:
    if (*(char *)(iVar5 + 0x14) == '\0') goto LAB_00825c02;
    iVar5 = FUN_008238c4();
    if (uVar1 < *(uint *)(iVar5 + 0xc)) {
      pfVar6 = *(facet **)(*(int *)(iVar5 + 8) + uVar1 * 4);
      goto LAB_00825c02;
    }
  }
  pfVar6 = pfVar2;
  if (pfVar2 == (facet *)0x0) {
    iVar5 = FUN_008254f0(&local_24,piVar3);
    if (iVar5 == -1) {
      std::bad_cast::bad_cast(local_18,"bad cast");
      __CxxThrowException_8(local_18,&DAT_03115570);
    }
    pfVar6 = local_24;
    DAT_032bc8c4 = local_24;
    std::_Lockit::_Lockit((_Lockit *)&param_1,0);
    if (*(int *)(pfVar6 + 4) != -1) {
      *(int *)(pfVar6 + 4) = *(int *)(pfVar6 + 4) + 1;
    }
    FUN_00823810();
    std::locale::facet::facet_Register(pfVar6);
  }
LAB_00825c71:
  local_4 = 0xffffffff;
  FUN_00823810(uVar4);
  ExceptionList = local_c;
  return pfVar6;
}



_Lockit * __thiscall FUN_00825ca0(_Lockit *param_1_00,char *param_1)

{
  undefined3 uVar1;
  char *extraout_ECX;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_34 [40];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc26dc;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  std::_Lockit::_Lockit(param_1_00,0);
  *(undefined4 *)(param_1_00 + 0x1c) = 0xf;
  *(undefined4 *)(param_1_00 + 0x18) = 0;
  param_1_00[8] = (_Lockit)0x0;
  *(undefined4 *)(param_1_00 + 0x38) = 0xf;
  *(undefined4 *)(param_1_00 + 0x34) = 0;
  param_1_00[0x24] = (_Lockit)0x0;
  *(undefined4 *)(param_1_00 + 0x54) = 0xf;
  *(undefined4 *)(param_1_00 + 0x50) = 0;
  param_1_00[0x40] = (_Lockit)0x0;
  *(undefined4 *)(param_1_00 + 0x70) = 0xf;
  *(undefined4 *)(param_1_00 + 0x6c) = 0;
  param_1_00[0x5c] = (_Lockit)0x0;
  local_4._1_3_ = 0;
  uVar1 = local_4._1_3_;
  local_4._0_1_ = 4;
  local_4._1_3_ = 0;
  if (param_1 == (char *)0x0) {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"bad locale name",0xf);
    local_4._0_1_ = 5;
    FUN_00401118(local_50);
    __CxxThrowException_8(local_34,&DAT_030e85dc);
    param_1 = extraout_ECX;
    uVar1 = local_4._1_3_;
  }
  local_4._1_3_ = uVar1;
  std::_Locinfo::_Locinfo_ctor((_Locinfo *)param_1_00,param_1);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00825d70(undefined4 *param_1_00,undefined4 param_1)

{
  _Collvec _Var1;
  undefined4 *local_88;
  _Locinfo local_84 [116];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc2716;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_88;
  ExceptionList = &local_c;
  param_1_00[1] = param_1;
  local_4 = 0;
  *param_1_00 = std::codecvt<wchar_t,char,int>::vftable;
  local_88 = param_1_00;
  FUN_00825ca0(&DAT_00d23f30);
  local_4._0_1_ = 1;
  _Var1 = __Getcoll();
  *(_Collvec *)(param_1_00 + 2) = _Var1;
  local_4 = (uint)local_4._1_3_ << 8;
  std::_Locinfo::~_Locinfo(local_84);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00825e20(int param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  undefined4 ****ppppuVar3;
  short **ppsVar4;
  short **ppsVar5;
  short **ppsVar6;
  undefined local_2c [4];
  undefined4 ****local_28 [4];
  undefined4 local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2758;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_2c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x14) == 0) goto LAB_00825f57;
  if (param_1_00 == param_1) {
    local_14 = 7;
    local_18 = 0;
    local_28[0] = (undefined4 ****)((uint)local_28[0] & 0xffff0000);
    FID_conflict_assign(param_1,0,0xffffffff);
    local_4 = 0;
    ppppuVar3 = local_28[0];
    if (local_14 < 8) {
      ppppuVar3 = local_28;
    }
    if ((*(short *)ppppuVar3 != 0x2f) && (*(short *)ppppuVar3 != 0x5c)) {
      FUN_008258d0();
    }
    FID_conflict_append(local_2c,0,0xffffffff);
    if (7 < local_14) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_28[0]);
    }
    goto LAB_00825f57;
  }
  uVar1 = *(uint *)(param_1 + 0x18);
  ppsVar6 = (short **)(param_1 + 4);
  ppsVar5 = ppsVar6;
  if (7 < uVar1) {
    ppsVar5 = (short **)*ppsVar6;
  }
  if (ppsVar5 == (short **)0x0) {
LAB_00825f14:
    FUN_00a3fb10(uVar2);
  }
  else {
    ppsVar4 = ppsVar6;
    if (7 < uVar1) {
      ppsVar4 = (short **)*ppsVar6;
    }
    if (ppsVar5 < ppsVar4) goto LAB_00825f14;
    ppsVar4 = ppsVar6;
    if (7 < uVar1) {
      ppsVar4 = (short **)*ppsVar6;
    }
    if ((short **)((int)ppsVar4 + *(int *)(param_1 + 0x14) * 2) < ppsVar5) goto LAB_00825f14;
  }
  if (param_1 != -4) {
    if (7 < *(uint *)(param_1 + 0x18)) {
      ppsVar6 = (short **)*ppsVar6;
    }
    if ((short **)((int)ppsVar6 + *(int *)(param_1 + 0x14) * 2) <= ppsVar5) {
      FUN_00a3fb10(uVar2);
    }
  }
  if ((*(short *)ppsVar5 != 0x2f) && (*(short *)ppsVar5 != 0x5c)) {
    FUN_008258d0();
  }
  FID_conflict_append(param_1,0,0xffffffff);
LAB_00825f57:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_00825f90(int param_1_00,int param_1)

{
  short *psVar1;
  short sVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  undefined *puVar6;
  short *psVar7;
  bool bVar8;
  undefined local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc27b2;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar8 = false;
  uVar4 = FUN_00825060(param_1_00,*(undefined4 *)(param_1_00 + 0x14),
                       DAT_0323f878 ^ (uint)&stack0xffffffc8);
  if ((*(uint *)(param_1_00 + 0x14) != 0) && (uVar4 != 0)) {
    if (*(uint *)(param_1_00 + 0x14) < uVar4) {
      FUN_00a3fb10();
    }
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      iVar5 = param_1_00 + 4;
    }
    else {
      iVar5 = *(int *)(param_1_00 + 4);
    }
    sVar2 = *(short *)(iVar5 + uVar4 * 2);
    if ((sVar2 == 0x2f) || (sVar2 == 0x5c)) {
      cVar3 = FUN_00824f50(param_1_00,uVar4);
      if (cVar3 == '\0') {
        puVar6 = &DAT_0322e938;
        goto LAB_0082606b;
      }
    }
  }
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    param_1_00 = param_1_00 + 4;
  }
  else {
    param_1_00 = *(int *)(param_1_00 + 4);
  }
  psVar1 = (short *)(param_1_00 + uVar4 * 2);
  local_24 = local_24 & 0xffff0000;
  local_10 = 7;
  local_14 = 0;
  psVar7 = psVar1;
  do {
    sVar2 = *psVar7;
    psVar7 = psVar7 + 1;
  } while (sVar2 != 0);
  FID_conflict_assign(psVar1,(int)psVar7 - (int)(psVar1 + 1) >> 1);
  bVar8 = true;
  puVar6 = local_28;
  local_4 = 1;
LAB_0082606b:
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(puVar6,0,0xffffffff);
  if ((bVar8) && (7 < local_10)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_008260d0(undefined4 param_1)

{
  undefined4 uVar1;
  uint uVar2;
  _Locimp *p_Var3;
  int iVar4;
  undefined4 *puVar5;
  _Lockit local_18 [4];
  _Locimp *local_14;
  undefined4 *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc27e3;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  local_14 = (_Locimp *)0x0;
  p_Var3 = std::locale::_Init();
  local_14 = p_Var3;
  iVar4 = FUN_008238c4(uVar2);
  std::_Lockit::_Lockit(local_18,0);
  if (*(int *)(iVar4 + 4) != -1) {
    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  puVar5 = (undefined4 *)operator_new(0x10);
  local_4._0_1_ = 1;
  local_10 = puVar5;
  if (puVar5 == (undefined4 *)0x0) {
    puVar5 = (undefined4 *)0x0;
  }
  else {
    FUN_00825d70(0);
    *puVar5 = windows_file_codecvt::vftable;
  }
  uVar1 = param_1;
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00825a60(&local_14,puVar5);
  local_4 = 0xffffffff;
  if (p_Var3 != (_Locimp *)0x0) {
    std::_Lockit::_Lockit((_Lockit *)&param_1,0);
    iVar4 = *(int *)(p_Var3 + 4);
    if ((iVar4 != 0) && (iVar4 != -1)) {
      *(int *)(p_Var3 + 4) = iVar4 + -1;
    }
    puVar5 = (undefined4 *)(~-(uint)(*(int *)(p_Var3 + 4) != 0) & (uint)p_Var3);
    FUN_00823810();
    if (puVar5 != (undefined4 *)0x0) {
      (**(code **)*puVar5)(1);
    }
  }
  ExceptionList = local_c;
  return uVar1;
}



undefined4 * FUN_008261e0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc280e;
  local_c = ExceptionList;
  if ((DAT_032bc8cc & 1) == 0) {
    DAT_032bc8cc = DAT_032bc8cc | 1;
    local_4 = 0;
    ExceptionList = &local_c;
    FUN_008260d0(&DAT_032bc8c8,DAT_0323f878 ^ (uint)&local_c);
    _atexit((_func_4879 *)&LAB_00c75f90);
  }
  ExceptionList = local_c;
  return &DAT_032bc8c8;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * FUN_00826250(void)

{
  undefined4 uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc283e;
  local_c = ExceptionList;
  if ((DAT_032bc8d4 & 1) == 0) {
    DAT_032bc8d4 = DAT_032bc8d4 | 1;
    local_4 = 0;
    ExceptionList = &local_c;
    uVar1 = FUN_008261e0(DAT_0323f878 ^ (uint)&local_c);
    _DAT_032bc8d0 = FUN_00825b50(uVar1);
  }
  ExceptionList = local_c;
  return &DAT_032bc8d0;
}



undefined4 FUN_008262c0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00826250();
  return *puVar1;
}



void __thiscall FUN_008262d0(int param_1_00,int param_1,int param_2)

{
  uint uVar1;
  undefined4 ***pppuVar2;
  int local_30 [2];
  undefined4 ***local_28 [4];
  int local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc2870;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_30;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  local_4 = 0;
  local_30[0] = param_1_00;
  if (param_1 != param_2) {
    local_14 = 7;
    local_18 = 0;
    local_28[0] = (undefined4 ***)((uint)local_28[0] & 0xffff0000);
    FID_conflict_assign(param_1,param_2 - param_1 >> 1);
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00826250(uVar1);
    pppuVar2 = local_28[0];
    if (local_14 < 8) {
      pppuVar2 = local_28;
    }
    FUN_004126db(pppuVar2,(int)pppuVar2 + local_18 * 2);
    if (7 < local_14) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_28[0]);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_008263b0(int param_1_00,int param_1)

{
  int *piVar1;
  int iVar2;
  undefined *puVar3;
  int *piVar4;
  uint uVar5;
  undefined4 local_40;
  uint local_2c;
  undefined local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc28eb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = FUN_008253b0(DAT_0323f878 ^ (uint)&stack0xffffffa8);
  if (iVar2 == -1) {
    local_10 = 7;
    local_14 = 0;
    local_24 = local_24 & 0xffff0000;
    puVar3 = local_28;
    uVar5 = 1;
  }
  else {
    piVar4 = (int *)(param_1_00 + 4);
    piVar1 = piVar4;
    if (7 < *(uint *)(param_1_00 + 0x18)) {
      piVar1 = (int *)*piVar4;
      piVar4 = (int *)*piVar4;
    }
    puVar3 = (undefined *)FUN_008262d0(piVar4,(int)piVar1 + iVar2 * 2);
    uVar5 = 2;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = uVar5;
  FID_conflict_assign(puVar3,0,0xffffffff);
  if (((uVar5 & 2) != 0) && (uVar5 = uVar5 & 0xfffffffd, 7 < local_2c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40);
  }
  if (((uVar5 & 1) != 0) && (7 < local_10)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24);
  }
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_008264c0(undefined4 param_1_00,int param_1)

{
  short sVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int iVar5;
  short *psVar6;
  undefined4 local_34;
  undefined4 local_30;
  int local_2c;
  undefined local_28 [4];
  undefined4 local_24;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bc2931;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  local_2c = param_1;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0;
  local_30 = 1;
  *(undefined4 *)(param_1 + 0x1c) = param_1_00;
  FUN_00824d20(param_1_00,(undefined4 *)(param_1 + 0x20),&local_34,0xffffffff,uVar2);
  uVar3 = FUN_0041b008(local_28,*(undefined4 *)(param_1 + 0x20),local_34);
  local_4 = 1;
  FUN_00432156();
  puVar4 = (undefined4 *)FUN_00826250();
  FUN_00411c7a(uVar3,param_1,*puVar4);
  local_4 = local_4 & 0xffffff00;
  if (7 < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24);
  }
  psVar6 = (short *)PTR_DAT_0322e934;
  do {
    sVar1 = *psVar6;
    psVar6 = psVar6 + 1;
  } while (sVar1 != 0);
  iVar5 = FUN_004129cd(0,*(undefined4 *)(param_1 + 0x14),PTR_DAT_0322e934,
                       (int)psVar6 - (int)(PTR_DAT_0322e934 + 2) >> 1);
  if (iVar5 == 0) {
    psVar6 = (short *)PTR_DAT_0322e930;
    do {
      sVar1 = *psVar6;
      psVar6 = psVar6 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(PTR_DAT_0322e930,(int)psVar6 - (int)(PTR_DAT_0322e930 + 2) >> 1);
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_008265f0(int param_1)

{
  short sVar1;
  uint uVar2;
  int iVar3;
  bool bVar4;
  char cVar5;
  uint uVar6;
  short *psVar7;
  int iVar8;
  undefined4 uVar9;
  undefined4 *puVar10;
  short **ppsVar11;
  short **ppsVar12;
  int iVar13;
  undefined local_28 [4];
  undefined4 local_24;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2958;
  local_c = ExceptionList;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  uVar2 = *(uint *)(param_1 + 0x14);
  *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + uVar2;
  if (*(int *)(param_1 + 0x20) == *(int *)(*(int *)(param_1 + 0x1c) + 0x14)) {
    FUN_00432156();
    ExceptionList = local_c;
    return;
  }
  if (2 < uVar2) {
    ppsVar12 = (short **)(param_1 + 4);
    ppsVar11 = ppsVar12;
    if (7 < *(uint *)(param_1 + 0x18)) {
      ppsVar11 = (short **)*ppsVar12;
    }
    if ((*(short *)ppsVar11 == 0x2f) || (*(short *)ppsVar11 == 0x5c)) {
      if (uVar2 == 0) {
        FUN_00a3fb10(uVar6);
      }
      if (7 < *(uint *)(param_1 + 0x18)) {
        ppsVar12 = (short **)*ppsVar12;
      }
      if ((*(short *)((int)ppsVar12 + 2) == 0x2f) || (*(short *)((int)ppsVar12 + 2) == 0x5c)) {
        psVar7 = (short *)FUN_004220c0(2);
        if ((*psVar7 != 0x2f) && (*psVar7 != 0x5c)) {
          bVar4 = true;
          goto LAB_008266ad;
        }
      }
    }
  }
  bVar4 = false;
LAB_008266ad:
  uVar2 = *(uint *)(param_1 + 0x20);
  iVar13 = *(int *)(param_1 + 0x1c);
  if (*(uint *)(iVar13 + 0x14) < uVar2) {
    FUN_00a3fb10(uVar6);
  }
  if (*(uint *)(iVar13 + 0x18) < 8) {
    iVar13 = iVar13 + 4;
  }
  else {
    iVar13 = *(int *)(iVar13 + 4);
  }
  sVar1 = *(short *)(iVar13 + uVar2 * 2);
  if ((sVar1 == 0x2f) || (sVar1 == 0x5c)) {
    if ((bVar4) || (psVar7 = (short *)FUN_004220c0(*(int *)(param_1 + 0x14) + -1), *psVar7 == 0x3a))
    {
      FUN_008254a0(0x2f);
      ExceptionList = local_c;
      return;
    }
    if (*(int *)(param_1 + 0x20) != *(int *)(*(int *)(param_1 + 0x1c) + 0x14)) {
      do {
        uVar2 = *(uint *)(param_1 + 0x20);
        iVar13 = *(int *)(param_1 + 0x1c);
        if (*(uint *)(iVar13 + 0x14) < uVar2) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar13 + 0x18) < 8) {
          iVar13 = iVar13 + 4;
        }
        else {
          iVar13 = *(int *)(iVar13 + 4);
        }
        sVar1 = *(short *)(iVar13 + uVar2 * 2);
      } while (((sVar1 == 0x2f) || (sVar1 == 0x5c)) &&
              (*(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1,
              *(int *)(param_1 + 0x20) != *(int *)(*(int *)(param_1 + 0x1c) + 0x14)));
    }
    if ((*(int *)(param_1 + 0x20) == *(int *)(*(int *)(param_1 + 0x1c) + 0x14)) &&
       (cVar5 = FUN_00824f50(*(int *)(param_1 + 0x1c),*(int *)(param_1 + 0x20) + -1), cVar5 == '\0')
       ) {
      *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + -1;
      FUN_0044197d(&DAT_0322e938);
      ExceptionList = local_c;
      return;
    }
  }
  iVar13 = *(int *)(param_1 + 0x20);
  iVar3 = *(int *)(param_1 + 0x1c);
  iVar8 = FUN_00824bf0(&DAT_00d2406c,iVar13,2);
  if (iVar8 == -1) {
    iVar8 = *(int *)(iVar3 + 0x14);
  }
  uVar9 = FUN_0041b008(local_28,iVar13,iVar8 - iVar13);
  local_4 = 0;
  FUN_00432156();
  puVar10 = (undefined4 *)FUN_00826250();
  FUN_00411c7a(uVar9,param_1,*puVar10);
  if (local_10 < 8) {
    ExceptionList = local_c;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_24);
}



int FUN_00826820(undefined4 param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  bool bVar2;
  uint uVar3;
  undefined4 *puVar4;
  uint uVar5;
  uint param_6;
  uint param_7;
  int param_8;
  int param_9;
  int param_11;
  undefined4 param_12;
  uint param_13;
  int param_14;
  int param_15;
  undefined4 *param_17;
  uint param_18;
  uint param_19;
  int param_20;
  int param_21;
  undefined4 param_23;
  uint param_24;
  int param_25;
  int param_26;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc29a0;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 3;
  do {
    if (((param_8 == param_14) && (param_9 == param_15)) ||
       ((param_20 == param_25 && (param_21 == param_26)))) {
      if ((param_8 == param_14) && (param_9 == param_15)) {
        if ((param_20 == param_25) && (param_21 == param_26)) {
          local_4._0_1_ = 2;
          FUN_00825380();
          local_4._0_1_ = 1;
          FUN_00825380();
          local_4 = (uint)local_4._1_3_ << 8;
          FUN_00825380();
          local_4 = 0xffffffff;
          FUN_00825380();
          ExceptionList = local_c;
          return 0;
        }
        if (param_9 == param_15) {
          bVar2 = true;
          goto LAB_00826b74;
        }
      }
      bVar2 = false;
LAB_00826b74:
      if (7 < param_7) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(param_2,uVar3);
      }
      param_7 = 7;
      param_6 = 0;
      param_2 = (undefined4 *)((uint)param_2._2_2_ << 0x10);
      if (7 < param_13) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(param_11,uVar3);
      }
      param_13 = 7;
      param_12 = 0;
      param_11 = (uint)param_11._2_2_ << 0x10;
      if (7 < param_19) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(param_17,uVar3);
      }
      param_19 = 7;
      param_18 = 0;
      param_17 = (undefined4 *)((uint)param_17._2_2_ << 0x10);
      if (param_24 < 8) {
        ExceptionList = local_c;
        return (uint)!bVar2 * 2 + -1;
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_23,uVar3);
    }
    puVar4 = param_17;
    if (param_19 < 8) {
      puVar4 = &stack0x00000050;
    }
    uVar5 = param_6;
    if (param_18 <= param_6) {
      uVar5 = param_18;
    }
    puVar1 = param_2;
    if (param_7 < 8) {
      puVar1 = &param_2;
    }
    for (; uVar5 != 0; uVar5 = uVar5 - 1) {
      if (*(ushort *)puVar1 != *(ushort *)puVar4) {
        uVar5 = (-(uint)(*(ushort *)puVar1 < *(ushort *)puVar4) & 0xfffffffe) + 1;
        if (uVar5 != 0) goto LAB_008268fb;
        break;
      }
      puVar4 = (undefined4 *)((int)puVar4 + 2);
      puVar1 = (undefined4 *)((int)puVar1 + 2);
    }
    if (param_6 < param_18) {
LAB_008269b0:
      if (7 < param_7) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(param_2,uVar3);
      }
      param_7 = 7;
      param_6 = 0;
      param_2 = (undefined4 *)((uint)param_2._2_2_ << 0x10);
      if (7 < param_13) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(param_11,uVar3);
      }
      param_13 = 7;
      param_12 = 0;
      param_11 = (uint)param_11._2_2_ << 0x10;
      if (7 < param_19) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(param_17,uVar3);
      }
      param_19 = 7;
      param_18 = 0;
      param_17 = (undefined4 *)((uint)param_17._2_2_ << 0x10);
      if (param_24 < 8) {
        ExceptionList = local_c;
        return -1;
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_23,uVar3);
    }
    uVar5 = (uint)(param_6 != param_18);
LAB_008268fb:
    if ((int)uVar5 < 0) goto LAB_008269b0;
    puVar4 = param_2;
    if (param_7 < 8) {
      puVar4 = &param_2;
    }
    uVar5 = param_18;
    if (param_6 <= param_18) {
      uVar5 = param_6;
    }
    puVar1 = param_17;
    if (param_19 < 8) {
      puVar1 = &stack0x00000050;
    }
    for (; uVar5 != 0; uVar5 = uVar5 - 1) {
      if (*(ushort *)puVar1 != *(ushort *)puVar4) {
        uVar5 = (-(uint)(*(ushort *)puVar1 < *(ushort *)puVar4) & 0xfffffffe) + 1;
        if (uVar5 != 0) goto LAB_00826957;
        break;
      }
      puVar4 = (undefined4 *)((int)puVar4 + 2);
      puVar1 = (undefined4 *)((int)puVar1 + 2);
    }
    if (param_18 < param_6) {
LAB_00826a54:
      if (7 < param_7) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(param_2,uVar3);
      }
      param_7 = 7;
      param_6 = 0;
      param_2 = (undefined4 *)((uint)param_2._2_2_ << 0x10);
      if (7 < param_13) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(param_11,uVar3);
      }
      param_13 = 7;
      param_12 = 0;
      param_11 = (uint)param_11._2_2_ << 0x10;
      if (7 < param_19) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(param_17,uVar3);
      }
      param_19 = 7;
      param_18 = 0;
      param_17 = (undefined4 *)((uint)param_17._2_2_ << 0x10);
      if (param_24 < 8) {
        ExceptionList = local_c;
        return 1;
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_23,uVar3);
    }
    uVar5 = (uint)(param_18 != param_6);
LAB_00826957:
    if ((int)uVar5 < 0) goto LAB_00826a54;
    FUN_008265f0(&param_1);
    FUN_008265f0(&stack0x0000004c);
  } while( true );
}



void FUN_00826c30(void)

{
  undefined auStack_b4 [28];
  undefined4 uStack_98;
  undefined *puStack_94;
  undefined auStack_90 [28];
  undefined4 uStack_74;
  undefined *puStack_70;
  undefined auStack_6c [28];
  undefined4 uStack_50;
  undefined *puStack_4c;
  undefined auStack_48 [36];
  uint uStack_24;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc29d8;
  local_c = ExceptionList;
  uStack_24 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  puStack_4c = auStack_48;
  uStack_50 = 0x826c6c;
  FUN_00825a30();
  puStack_70 = auStack_6c;
  local_4 = 0;
  uStack_74 = 0x826c85;
  FUN_008264c0();
  puStack_94 = auStack_90;
  local_4._0_1_ = 1;
  uStack_98 = 0x826c9e;
  FUN_00825a30();
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_008264c0(auStack_b4);
  local_4 = 0xffffffff;
  FUN_00826820();
  ExceptionList = local_c;
  return;
}



void FUN_00826cf0(int param_1)

{
  bool bVar1;
  int iVar2;
  undefined *puVar3;
  undefined4 ***pppuVar4;
  undefined4 local_54;
  undefined4 local_50;
  int local_4c;
  undefined local_2c [4];
  undefined4 ***local_28 [5];
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2a3a;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_54;
  ExceptionList = &local_c;
  bVar1 = false;
  local_4c = param_1;
  local_54 = 0;
  FUN_00825f90(local_2c);
  local_4 = 1;
  iVar2 = FUN_00826c30(&DAT_0322e938);
  if (iVar2 != 0) {
    iVar2 = FUN_00826c30(&DAT_0322e954);
    if (iVar2 != 0) {
      local_50 = 0x2e;
      iVar2 = FUN_007433d1(&local_50,0xffffffff,1);
      if (iVar2 == -1) {
        puVar3 = local_2c;
      }
      else {
        pppuVar4 = local_28[0];
        if (local_14 < 8) {
          pppuVar4 = local_28;
        }
        puVar3 = (undefined *)FUN_008262d0(pppuVar4,(int)pppuVar4 + iVar2 * 2);
        bVar1 = true;
        local_4 = CONCAT31(local_4._1_3_,2);
        local_54 = 2;
      }
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(puVar3,0,0xffffffff);
      local_4 = 1;
      if (bVar1) {
        local_54 = 1;
        FUN_004155a2();
      }
      goto LAB_00826e23;
    }
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(local_2c,0,0xffffffff);
LAB_00826e23:
  if (7 < local_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_28[0]);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



// WARNING: Type propagation algorithm not settling

void FUN_00826e60(int param_1)

{
  void *pvVar1;
  void *pvVar2;
  uint uVar3;
  int iVar4;
  undefined *puVar5;
  undefined4 *******pppppppuVar6;
  uint uVar7;
  uint uVar8;
  uint local_70;
  undefined4 local_6c;
  int local_68;
  undefined local_64 [4];
  undefined2 local_60;
  undefined4 local_50;
  undefined4 local_4c;
  undefined local_2c [4];
  undefined4 *******local_28 [5];
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2ac3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_70;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff84;
  ExceptionList = &local_c;
  local_68 = param_1;
  local_70 = 0;
  FUN_00825f90(local_2c);
  local_4 = 1;
  iVar4 = FUN_00826c30(&DAT_0322e938);
  if ((iVar4 == 0) || (iVar4 = FUN_00826c30(&DAT_0322e954), iVar4 == 0)) {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    pvVar1 = ExceptionList;
    pvVar2 = local_c;
  }
  else {
    local_6c = 0x2e;
    iVar4 = FUN_007433d1(&local_6c,0xffffffff,1);
    if (iVar4 == -1) {
      local_4c = 7;
      local_50 = 0;
      local_60 = 0;
      puVar5 = local_64;
      local_4 = CONCAT31(local_4._1_3_,2);
      uVar7 = 2;
    }
    else {
      pppppppuVar6 = local_28[0];
      if (local_14 < 8) {
        pppppppuVar6 = local_28;
      }
      puVar5 = (undefined *)FUN_004cd8f3((int)pppppppuVar6 + iVar4 * 2);
      local_4 = 3;
      uVar7 = 4;
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    local_70 = uVar7;
    FID_conflict_assign(puVar5,0,0xffffffff);
    uVar8 = uVar7 | 1;
    local_4 = 2;
    if ((uVar7 & 4) != 0) {
      uVar8 = uVar7 & 0xfffffffb | 1;
      local_70 = uVar8;
      FUN_004155a2();
    }
    local_4 = 1;
    pvVar1 = ExceptionList;
    pvVar2 = local_c;
    if ((uVar8 & 2) != 0) {
      local_70 = uVar8 & 0xfffffffd;
      FUN_004155a2();
      pvVar1 = ExceptionList;
      pvVar2 = local_c;
    }
  }
  ExceptionList = pvVar2;
  local_c = ExceptionList;
  if (local_14 < 8) {
    ___security_check_cookie_4();
    return;
  }
  ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_28[0],uVar3);
}



void __fastcall FUN_00827000(HANDLE *param_1)

{
  if (*param_1 != (HANDLE)0xffffffff) {
    CloseHandle(*param_1);
  }
  return;
}



bool FUN_00827010(int param_1)

{
  int iVar1;
  uint uVar2;
  LPCWSTR lpFileName;
  HANDLE hDevice;
  int *lpOutBuffer;
  BOOL BVar3;
  DWORD DStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2b00;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  if (*(uint *)(param_1 + 0x18) < 8) {
    lpFileName = (LPCWSTR)(param_1 + 4);
  }
  else {
    lpFileName = *(LPCWSTR *)(param_1 + 4);
  }
  hDevice = CreateFileW(lpFileName,8,7,(LPSECURITY_ATTRIBUTES)0x0,3,0x2200000,(HANDLE)0x0);
  uStack_4 = 0;
  if (hDevice != (HANDLE)0xffffffff) {
    lpOutBuffer = (int *)FUN_00823c23(0x4000,uVar2);
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    BVar3 = DeviceIoControl(hDevice,0x900a8,(LPVOID)0x0,0,lpOutBuffer,0x4000,&DStack_10,
                            (LPOVERLAPPED)0x0);
    if (BVar3 != 0) {
      iVar1 = *lpOutBuffer;
      FUN_00a3f66c(lpOutBuffer);
      uStack_4 = 0xffffffff;
      CloseHandle(hDevice);
      ExceptionList = local_c;
      return iVar1 == -0x5ffffff4;
    }
    FUN_00a3f66c(lpOutBuffer);
    uStack_4 = 0xffffffff;
    CloseHandle(hDevice);
  }
  ExceptionList = local_c;
  return false;
}



void __fastcall FUN_00827110(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  undefined4 local_8 [2];
  
  if (local_8 != param_1) {
    *param_1 = 0;
  }
  piVar1 = (int *)param_1[1];
  param_1[1] = 0;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
                    // WARNING: Could not recover jumptable at 0x0082715c. Too many branches
                    // WARNING: Treating indirect jump as call
        (**(code **)(*piVar1 + 8))();
        return;
      }
    }
  }
  return;
}



void __fastcall FUN_00827170(int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x34) = 7;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined2 *)(param_1 + 0x20) = 0;
  *(undefined4 *)(param_1 + 0x50) = 0xf;
  *(undefined4 *)(param_1 + 0x4c) = 0;
  *(undefined *)(param_1 + 0x3c) = 0;
  return;
}



void __fastcall FUN_008271e0(int param_1)

{
  void *pvVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  pvVar1 = ExceptionList;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2b63;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  if (0xf < *(uint *)(param_1 + 0x50)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x3c),uVar2);
  }
  *(undefined4 *)(param_1 + 0x50) = 0xf;
  *(undefined4 *)(param_1 + 0x4c) = 0;
  *(undefined *)(param_1 + 0x3c) = 0;
  if (7 < *(uint *)(param_1 + 0x34)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x20),uVar2);
  }
  *(undefined4 *)(param_1 + 0x34) = 7;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined2 *)(param_1 + 0x20) = 0;
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4),uVar2);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  ExceptionList = pvVar1;
  return;
}



undefined4 * __thiscall
FUN_00827280(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2b88;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00401118(param_3);
  *param_1_00 = boost::system::system_error::vftable;
  param_1_00[10] = param_1;
  param_1_00[0xb] = param_2;
  param_1_00[0x11] = 0;
  param_1_00[0x12] = 0xf;
  *(undefined *)(param_1_00 + 0xd) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_008272f0(int param_1)

{
  if (param_1 != 0) {
    FUN_008271e0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



undefined4 FUN_00827310(undefined4 param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_008262c0();
  FUN_00825600(param_1,uVar1);
  return param_1;
}



// WARNING: Removing unreachable block (ram,0x00827525)
// WARNING: Removing unreachable block (ram,0x00827534)
// WARNING: Removing unreachable block (ram,0x00827544)

uint FUN_00827340(undefined4 param_1,byte param_2)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  bool bVar5;
  bool bVar6;
  int iVar7;
  char *pcVar8;
  uint local_f0;
  undefined local_ec [4];
  uint local_e8;
  undefined4 local_d8;
  uint local_d4;
  undefined local_d0 [4];
  uint local_cc;
  undefined4 local_bc;
  uint local_b8;
  undefined local_b4 [4];
  uint local_b0;
  undefined4 local_a0;
  uint local_9c;
  undefined local_98 [4];
  uint local_94;
  undefined4 local_84;
  uint local_80;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  undefined local_60 [4];
  uint local_5c;
  undefined4 local_4c;
  uint local_48;
  undefined local_44 [28];
  undefined local_28 [4];
  undefined4 local_24;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2cb9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_f0 = 0x124;
  if ((param_2 & 1) == 0) {
    local_f0 = 0x1b6;
  }
  FUN_00826e60(local_28);
  local_4 = 0;
  iVar7 = FUN_00827310(local_60);
  local_4 = 1;
  bVar6 = false;
  bVar5 = false;
  bVar4 = false;
  bVar3 = false;
  bVar2 = false;
  if (*(uint *)(iVar7 + 0x18) < 0x10) {
    pcVar8 = (char *)(iVar7 + 4);
  }
  else {
    pcVar8 = *(char **)(iVar7 + 4);
  }
  iVar7 = __stricmp(pcVar8,".exe");
  if (iVar7 != 0) {
    FUN_00826e60(local_98);
    local_4 = 2;
    iVar7 = FUN_00827310(local_d0);
    local_4 = 3;
    bVar6 = true;
    bVar5 = true;
    bVar4 = false;
    bVar3 = false;
    bVar2 = false;
    if (*(uint *)(iVar7 + 0x18) < 0x10) {
      pcVar8 = (char *)(iVar7 + 4);
    }
    else {
      pcVar8 = *(char **)(iVar7 + 4);
    }
    iVar7 = __stricmp(pcVar8,".com");
    if (iVar7 != 0) {
      FUN_00826e60(local_7c);
      local_4 = 4;
      iVar7 = FUN_00827310(local_ec);
      bVar6 = true;
      bVar5 = true;
      bVar4 = true;
      bVar3 = true;
      bVar2 = false;
      local_4 = 5;
      if (*(uint *)(iVar7 + 0x18) < 0x10) {
        pcVar8 = (char *)(iVar7 + 4);
      }
      else {
        pcVar8 = *(char **)(iVar7 + 4);
      }
      iVar7 = __stricmp(pcVar8,".bat");
      if (iVar7 != 0) {
        FUN_00826e60(local_b4);
        local_4 = 6;
        iVar7 = FUN_00827310(local_44);
        bVar6 = true;
        bVar5 = true;
        bVar4 = true;
        bVar3 = true;
        bVar2 = true;
        local_4 = 7;
        if (*(uint *)(iVar7 + 0x18) < 0x10) {
          pcVar8 = (char *)(iVar7 + 4);
        }
        else {
          pcVar8 = *(char **)(iVar7 + 4);
        }
        iVar7 = __stricmp(pcVar8,".cmd");
        bVar1 = false;
        if (iVar7 != 0) goto LAB_00827521;
      }
    }
  }
  bVar1 = true;
LAB_00827521:
  if (bVar2) {
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b0);
    }
    local_9c = 7;
    local_a0 = 0;
    local_b0 = local_b0 & 0xffff0000;
  }
  if (bVar3) {
    if (0xf < local_d4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_e8);
    }
    local_d4 = 0xf;
    local_d8 = 0;
    local_e8 = local_e8 & 0xffffff00;
  }
  if (bVar4) {
    if (7 < local_64) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_78);
    }
    local_64 = 7;
    local_68 = 0;
    local_78 = local_78 & 0xffff0000;
  }
  if (bVar5) {
    if (0xf < local_b8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_cc);
    }
    local_b8 = 0xf;
    local_bc = 0;
    local_cc = local_cc & 0xffffff00;
  }
  if (bVar6) {
    if (7 < local_80) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_94);
    }
    local_80 = 7;
    local_84 = 0;
    local_94 = local_94 & 0xffff0000;
  }
  if (local_48 < 0x10) {
    local_5c = local_5c & 0xffffff00;
    local_48 = 0xf;
    local_4c = 0;
    if (local_10 < 8) {
      if (bVar1) {
        local_f0 = local_f0 | 0x49;
      }
      ExceptionList = local_c;
      return local_f0;
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_5c);
}



undefined4 * __thiscall FUN_008276f0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bc2ce0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<struct_boost::filesystem::filesystem_error::m_imp>::
              vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_00827769(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_008272f0(*(undefined4 *)(unaff_EBP + 8));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_00827780(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_008271e0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __thiscall
FUN_008277a0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  
  puVar3 = (undefined4 *)FUN_008276f0(param_2);
  uVar1 = *param_3;
  *param_3 = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1,param_2,param_2);
  return;
}



undefined4 * __thiscall FUN_00827810(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf220b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  param_1_00[1] = 0;
  local_4 = 0;
  FUN_008277a0(param_1_00,param_1,param_1_00 + 1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00827870(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  int *local_4;
  
  puVar3 = (undefined4 *)FUN_00827810(param_1);
  if (puVar3 != param_1_00) {
    uVar1 = *puVar3;
    *puVar3 = *param_1_00;
    *param_1_00 = uVar1;
  }
  uVar1 = param_1_00[1];
  param_1_00[1] = puVar3[1];
  puVar3[1] = uVar1;
  if (local_4 != (int *)0x0) {
    LOCK();
    iVar2 = local_4[1] + -1;
    local_4[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*local_4 + 4))();
      LOCK();
      iVar2 = local_4[2] + -1;
      local_4[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*local_4 + 8))();
      }
    }
  }
  return;
}



void __fastcall FUN_008278e0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  
  *param_1 = boost::filesystem::filesystem_error::vftable;
  piVar1 = (int *)param_1[0x14];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  FUN_00401328();
  return;
}



undefined4 * __thiscall FUN_00827930(undefined4 *param_1,byte param_2)

{
  int *piVar1;
  int iVar2;
  
  *param_1 = boost::filesystem::filesystem_error::vftable;
  piVar1 = (int *)param_1[0x14];
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  FUN_00401328();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



int __fastcall FUN_00827990(int param_1)

{
  char cVar1;
  int iVar2;
  char *pcVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar4;
  char *pcVar5;
  uint uStack_60;
  undefined local_50 [4];
  undefined4 local_4c;
  uint local_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  int local_18;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bc2d10;
  local_10 = ExceptionList;
  uStack_60 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_60;
  ExceptionList = &local_10;
  iVar2 = *(int *)(param_1 + 0x4c);
  local_18 = param_1;
  if (iVar2 == 0) {
    local_14 = &uStack_60;
    iVar2 = FUN_00401361();
    ExceptionList = local_10;
    return iVar2;
  }
  local_8 = 0;
  if (*(int *)(iVar2 + 0x4c) == 0) {
    pcVar3 = (char *)FUN_00401361();
    pcVar5 = pcVar3;
    do {
      cVar1 = *pcVar5;
      pcVar5 = pcVar5 + 1;
    } while (cVar1 != '\0');
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (iVar2 + 0x38),pcVar3,(int)pcVar5 - (int)(pcVar3 + 1));
    if (*(int *)(*(int *)(param_1 + 0x4c) + 0x14) != 0) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 (*(int *)(param_1 + 0x4c) + 0x38),": \"",3);
      pbVar4 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_00827310(local_50);
      local_8._0_1_ = 1;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 (*(int *)(param_1 + 0x4c) + 0x38),pbVar4,0,0xffffffff);
      local_8 = (uint)local_8._1_3_ << 8;
      if (0xf < local_38) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_4c);
      }
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 (*(int *)(param_1 + 0x4c) + 0x38),"\"",1);
    }
    if (*(int *)(*(int *)(param_1 + 0x4c) + 0x30) != 0) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 (*(int *)(param_1 + 0x4c) + 0x38),", \"",3);
      pbVar4 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_00827310(local_34);
      local_8._0_1_ = 2;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 (*(int *)(param_1 + 0x4c) + 0x38),pbVar4,0,0xffffffff);
      local_8 = (uint)local_8._1_3_ << 8;
      if (0xf < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
      local_1c = 0xf;
      local_20 = 0;
      local_30 = local_30 & 0xffffff00;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 (*(int *)(param_1 + 0x4c) + 0x38),"\"",1);
    }
  }
  iVar2 = *(int *)(param_1 + 0x4c);
  if (0xf < *(uint *)(iVar2 + 0x50)) {
    ExceptionList = local_10;
    return *(int *)(iVar2 + 0x3c);
  }
  ExceptionList = local_10;
  return iVar2 + 0x3c;
}



undefined * Catch_All_00827b09(void)

{
  undefined4 uVar1;
  int unaff_EBP;
  
  uVar1 = FUN_00401361();
  *(undefined4 *)(unaff_EBP + -0x14) = uVar1;
  return &LAB_00827b1a;
}



void __thiscall
FUN_00827b50(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bc2d4e;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  FUN_00827280(param_3,param_4,param_1);
  *param_1_00 = boost::filesystem::filesystem_error::vftable;
  param_1_00[0x13] = 0;
  param_1_00[0x14] = 0;
  local_8._0_1_ = 2;
  local_8._1_3_ = 0;
  pvVar1 = operator_new(0x54);
  local_8._0_1_ = 3;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00827170();
  }
  local_8 = CONCAT31(local_8._1_3_,2);
  FUN_00827870(uVar2);
  FID_conflict_assign(param_2,0,0xffffffff);
  FUN_00827bfa();
  return;
}



undefined * Catch_All_00827be6(void)

{
  FUN_00827110();
  return &DAT_00827bf7;
}



void FUN_00827bfa(void)

{
  int unaff_EBP;
  
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



void FUN_00827c50(undefined4 *param_1,undefined4 param_2,DWORD *param_3)

{
  uint uVar1;
  DWORD DVar2;
  DWORD DVar3;
  undefined4 uVar4;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_7c [28];
  undefined auStack_60 [84];
  void *local_c;
  undefined *puStack_8;
  DWORD *pDStack_4;
  
  pDStack_4 = (DWORD *)0xffffffff;
  puStack_8 = &LAB_00bc2d78;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff7c;
  ExceptionList = &local_c;
  DVar2 = GetLastError();
  if (param_3 != (DWORD *)0x0) {
    DVar3 = FUN_008288a0(uVar1);
    *param_3 = DVar2;
    param_3[1] = DVar3;
  }
  if (((((DVar2 != 2) && (DVar2 != 3)) && (DVar2 != 0x7b)) && ((DVar2 != 0xf && (DVar2 != 0x15))))
     && ((DVar2 != 0x57 && ((DVar2 != 0xa1 && (DVar2 != 0x35)))))) {
    if (DVar2 == 0x20) {
      *param_1 = 10;
    }
    else {
      if (param_3 == (DWORD *)0x0) {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
        basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  (abStack_7c,"boost::filesystem::status");
        pDStack_4 = param_3;
        uVar4 = FUN_008288a0(uVar1);
        FUN_00827b50(abStack_7c,param_2,DVar2,uVar4);
        __CxxThrowException_8(auStack_60,&DAT_030e8b98);
      }
      *param_1 = 0;
    }
    param_1[1] = 0xffff;
    ExceptionList = local_c;
    return;
  }
  *param_1 = 1;
  param_1[1] = 0;
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_00827d70(undefined4 *param_1,int param_2,undefined4 *param_3)

{
  char cVar1;
  uint uVar2;
  int **lpFileName;
  DWORD DVar3;
  undefined4 ****lpFileName_00;
  HANDLE hObject;
  undefined4 uVar4;
  int **ppiVar5;
  undefined4 uStack_30;
  undefined4 ****appppuStack_24 [4];
  undefined4 uStack_14;
  uint uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2db0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  ppiVar5 = (int **)(param_2 + 4);
  lpFileName = ppiVar5;
  if (7 < *(uint *)(param_2 + 0x18)) {
    lpFileName = (int **)*ppiVar5;
  }
  DVar3 = GetFileAttributesW((LPCWSTR)lpFileName);
  if (DVar3 != 0xffffffff) {
    if ((DVar3 & 0x400) != 0) {
      if (7 < *(uint *)(param_2 + 0x18)) {
        ppiVar5 = (int **)*ppiVar5;
      }
      FUN_004cd8f3(ppiVar5);
      uStack_4 = 0;
      lpFileName_00 = appppuStack_24[0];
      if (uStack_10 < 8) {
        lpFileName_00 = appppuStack_24;
      }
      hObject = CreateFileW((LPCWSTR)lpFileName_00,0,7,(LPSECURITY_ATTRIBUTES)0x0,3,0x2000000,
                            (HANDLE)0x0);
      uStack_4 = CONCAT31(uStack_4._1_3_,2);
      if (7 < uStack_10) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(appppuStack_24[0]);
      }
      uStack_10 = 7;
      uStack_14 = 0;
      appppuStack_24[0] = (undefined4 ****)((uint)appppuStack_24[0] & 0xffff0000);
      if (hObject == (HANDLE)0xffffffff) goto LAB_00827db7;
      cVar1 = FUN_00827010(param_2,uVar2);
      if (cVar1 == '\0') {
        uVar4 = FUN_00827340(param_2,DVar3);
        *param_1 = 9;
        param_1[1] = uVar4;
        uStack_4 = 0xffffffff;
        CloseHandle(hObject);
        ExceptionList = local_c;
        return param_1;
      }
      uStack_4 = 0xffffffff;
      CloseHandle(hObject);
    }
    if (param_3 != (undefined4 *)0x0) {
      *param_3 = 0;
      uVar4 = FUN_008288a0();
      param_3[1] = uVar4;
    }
    uStack_30 = 3;
    if ((DVar3 & 0x10) == 0) {
      uStack_30 = 2;
    }
    uVar4 = FUN_00827340(param_2,DVar3);
    *param_1 = uStack_30;
    param_1[1] = uVar4;
    ExceptionList = local_c;
    return param_1;
  }
LAB_00827db7:
  FUN_00827c50(param_1,param_2,param_3);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00827f20(int param_1,DWORD *param_2)

{
  uint uVar1;
  LPCWSTR lpPathName;
  BOOL BVar2;
  DWORD DVar3;
  int *piVar4;
  undefined4 uVar5;
  DWORD DVar6;
  undefined auStack_8c [8];
  undefined auStack_84 [4];
  int iStack_80;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_7c [28];
  undefined auStack_60 [84];
  void *local_c;
  undefined *puStack_8;
  DWORD *pDStack_4;
  
  pDStack_4 = (DWORD *)0xffffffff;
  puStack_8 = &LAB_00bc2dd8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  if (*(uint *)(param_1 + 0x18) < 8) {
    lpPathName = (LPCWSTR)(param_1 + 4);
  }
  else {
    lpPathName = *(LPCWSTR *)(param_1 + 4);
  }
  BVar2 = CreateDirectoryW(lpPathName,(LPSECURITY_ATTRIBUTES)0x0);
  if (BVar2 == 0) {
    DVar3 = GetLastError();
    FUN_008288a0(uVar1);
    if (DVar3 == 0xb7) {
      piVar4 = (int *)FUN_00827d70(auStack_84,param_1,auStack_8c);
      iStack_80 = piVar4[1];
      if (*piVar4 == 3) {
        if (param_2 == (DWORD *)0x0) {
          ExceptionList = local_c;
          return 0;
        }
        *param_2 = 0;
        DVar3 = FUN_008288a0(uVar1);
        param_2[1] = DVar3;
        ExceptionList = local_c;
        return 0;
      }
    }
    if (param_2 == (DWORD *)0x0) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                (abStack_7c,"boost::filesystem::create_directory");
      pDStack_4 = param_2;
      uVar5 = FUN_008288a0();
      FUN_00827b50(abStack_7c,param_1,DVar3,uVar5);
      __CxxThrowException_8(auStack_60,&DAT_030e8b98);
    }
    DVar6 = FUN_008288a0();
    *param_2 = DVar3;
    param_2[1] = DVar6;
    ExceptionList = local_c;
    return 0;
  }
  if (param_2 != (DWORD *)0x0) {
    *param_2 = 0;
    DVar3 = FUN_008288a0(uVar1);
    param_2[1] = DVar3;
  }
  ExceptionList = local_c;
  return 1;
}



void FUN_00828050(undefined4 param_1,int *param_2)

{
  uint uVar1;
  int iVar2;
  int local_ac;
  int local_a8;
  int local_a4 [2];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_9c [28];
  undefined local_80 [84];
  undefined local_2c [4];
  undefined4 local_28;
  int local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2e13;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_ac;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff48;
  ExceptionList = &local_c;
  local_ac = 0;
  local_a8 = FUN_008288a0(uVar1);
  FUN_00827d70(local_a4,param_1,&local_ac);
  if (local_a4[0] == 3) {
    if (param_2 != (int *)0x0) {
      *param_2 = 0;
      iVar2 = FUN_008288a0(uVar1);
      param_2[1] = iVar2;
    }
  }
  else {
    FUN_008263b0(local_2c);
    local_4 = 0;
    if (((local_18 == 0) || (FUN_00827d70(local_a4,local_2c,&local_ac), local_a4[0] != 1)) ||
       (FUN_00828050(local_2c,&local_ac), (-(uint)(local_ac != 0) & 0x9b4100) == 0)) {
      FUN_00827f20(param_1,param_2);
      if (7 < local_14) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_28);
      }
    }
    else {
      iVar2 = local_ac;
      if (param_2 == (int *)0x0) {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
        basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  (local_9c,"boost::filesystem::create_directories");
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_00827b50(local_9c,local_2c,local_ac,local_a8);
        iVar2 = __CxxThrowException_8(local_80,&DAT_030e8b98);
      }
      *param_2 = iVar2;
      param_2[1] = local_a8;
      local_4 = 0xffffffff;
      FUN_004155a2();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall
FUN_00828230(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,char *param_3)

{
  char cVar1;
  uint uVar2;
  char *pcVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2e60;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  pcVar3 = param_3;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,param_3,(int)pcVar3 - (int)(param_3 + 1));
  local_4 = 0;
  FUN_00401118(local_28);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar2);
  }
  *param_1_00 = boost::system::system_error::vftable;
  param_1_00[0xb] = param_2;
  param_1_00[10] = param_1;
  param_1_00[0x12] = 0xf;
  param_1_00[0x11] = 0;
  *(undefined *)(param_1_00 + 0xd) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_008282f0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  
  uVar1 = *(uint *)(param_1_00 + 0x18);
  puVar5 = (undefined4 *)(param_1_00 + 4);
  puVar2 = puVar5;
  if (0xf < uVar1) {
    puVar2 = (undefined4 *)*puVar5;
  }
  puVar2 = (undefined4 *)(*(int *)(param_1_00 + 0x14) + (int)puVar2);
  if (puVar2 == (undefined4 *)0x0) {
LAB_00828331:
    FUN_00a3fb10();
  }
  else {
    puVar3 = puVar5;
    if (0xf < uVar1) {
      puVar3 = (undefined4 *)*puVar5;
    }
    if (puVar2 < puVar3) goto LAB_00828331;
    puVar3 = puVar5;
    if (0xf < uVar1) {
      puVar3 = (undefined4 *)*puVar5;
    }
    if ((undefined4 *)(*(int *)(param_1_00 + 0x14) + (int)puVar3) < puVar2) goto LAB_00828331;
  }
  uVar1 = *(uint *)(param_1_00 + 0x18);
  puVar3 = puVar5;
  if (0xf < uVar1) {
    puVar3 = (undefined4 *)*puVar5;
  }
  puVar3 = (undefined4 *)(*(int *)(param_1_00 + 0x14) + (int)puVar3);
  if (puVar3 != (undefined4 *)0x0) {
    puVar4 = puVar5;
    if (0xf < uVar1) {
      puVar4 = (undefined4 *)*puVar5;
    }
    if (puVar4 <= puVar3) {
      if (0xf < uVar1) {
        puVar5 = (undefined4 *)*puVar5;
      }
      if (puVar3 <= (undefined4 *)(*(int *)(param_1_00 + 0x14) + (int)puVar5)) goto LAB_0082836f;
    }
  }
  FUN_00a3fb10();
LAB_0082836f:
  FUN_004f4720(param_1_00,puVar3,param_1_00,puVar2,param_1,param_2,param_2);
  return;
}



void __thiscall FUN_00828390(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  
  uVar1 = *(uint *)(param_1_00 + 0x18);
  puVar6 = (undefined4 *)(param_1_00 + 4);
  puVar3 = puVar6;
  if (7 < uVar1) {
    puVar3 = (undefined4 *)*puVar6;
  }
  iVar2 = *(int *)(param_1_00 + 0x14) * 2;
  puVar3 = (undefined4 *)(iVar2 + (int)puVar3);
  if (puVar3 == (undefined4 *)0x0) {
LAB_008283d3:
    FUN_00a3fb10();
  }
  else {
    puVar4 = puVar6;
    if (7 < uVar1) {
      puVar4 = (undefined4 *)*puVar6;
    }
    if (puVar3 < puVar4) goto LAB_008283d3;
    puVar4 = puVar6;
    if (7 < uVar1) {
      puVar4 = (undefined4 *)*puVar6;
    }
    if ((undefined4 *)(iVar2 + (int)puVar4) < puVar3) goto LAB_008283d3;
  }
  uVar1 = *(uint *)(param_1_00 + 0x18);
  puVar4 = puVar6;
  if (7 < uVar1) {
    puVar4 = (undefined4 *)*puVar6;
  }
  iVar2 = *(int *)(param_1_00 + 0x14) * 2;
  puVar4 = (undefined4 *)(iVar2 + (int)puVar4);
  if (puVar4 != (undefined4 *)0x0) {
    puVar5 = puVar6;
    if (7 < uVar1) {
      puVar5 = (undefined4 *)*puVar6;
    }
    if (puVar5 <= puVar4) {
      if (7 < uVar1) {
        puVar6 = (undefined4 *)*puVar6;
      }
      if (puVar4 <= (undefined4 *)(iVar2 + (int)puVar6)) goto LAB_00828413;
    }
  }
  FUN_00a3fb10();
LAB_00828413:
  FUN_0048734c(param_1_00,puVar4,param_1_00,puVar3,param_1,param_2,param_2);
  return;
}



void FUN_00828440(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,int *param_6)

{
  int iVar1;
  undefined4 uVar2;
  char *pcVar3;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined4 *puStack_60;
  undefined4 local_54;
  undefined local_50 [76];
  undefined4 uStack_4;
  
  puStack_60 = &param_6;
  uStack_64 = param_4;
  uStack_68 = param_3;
  local_54 = 0;
  iVar1 = (**(code **)(*param_6 + 0x14))(&local_54,param_1,param_2,local_50);
  if (iVar1 != 0) {
    pcVar3 = "boost::filesystem::path codecvt to string";
    uVar2 = FUN_00828720("boost::filesystem::path codecvt to string");
    FUN_00828230(iVar1,uVar2,pcVar3);
    __CxxThrowException_8(&uStack_68,&DAT_030e8cdc);
  }
  FUN_008282f0(param_3,uStack_4,uStack_4);
  return;
}



void FUN_008284c0(short *param_1,short *param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  short sVar2;
  short *psVar3;
  int iVar4;
  undefined4 local_11c;
  undefined4 local_118;
  int iStack_114;
  undefined local_110 [256];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2e8b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_11c;
  ExceptionList = &local_c;
  local_118 = param_3;
  local_11c = param_4;
  if (param_2 == (short *)0x0) {
    psVar3 = param_1;
    do {
      sVar2 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar2 != 0);
    param_2 = param_1 + ((int)psVar3 - (int)(param_1 + 1) >> 1);
  }
  if (param_1 != param_2) {
    uVar1 = ((int)param_2 - (int)param_1 >> 1) * 4 + 4;
    if (uVar1 < 0x101) {
      FUN_00828440(param_1,param_2,local_110,&local_10,param_3,param_4,
                   DAT_0323f878 ^ (uint)&stack0xfffffed4);
    }
    else {
      iVar4 = FUN_00823c23(uVar1);
      uStack_4 = 0;
      iStack_114 = iVar4;
      FUN_00828440(param_1,param_2,iVar4,iVar4 + uVar1,local_118,local_11c);
      FUN_00a3f66c(iVar4);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4
FUN_008285e0(undefined4 param_1,LPCSTR param_2,int param_3,int *param_4,LPWSTR param_5,int param_6,
            LPWSTR *param_7)

{
  BOOL BVar1;
  int iVar2;
  
  BVar1 = AreFileApisANSI();
  iVar2 = MultiByteToWideChar((uint)(BVar1 == 0),1,param_2,param_3 - (int)param_2,param_5,
                              param_6 - (int)param_5 >> 1);
  if (iVar2 == 0) {
    return 2;
  }
  *param_4 = param_3;
  *param_7 = param_5 + iVar2;
  param_5[iVar2] = L'\0';
  return 0;
}



undefined4
FUN_00828640(undefined4 param_1,LPCWSTR param_2,int param_3,int *param_4,LPSTR param_5,int param_6,
            LPSTR *param_7)

{
  BOOL BVar1;
  int iVar2;
  
  BVar1 = AreFileApisANSI();
  iVar2 = WideCharToMultiByte((uint)(BVar1 == 0),0x400,param_2,param_3 - (int)param_2 >> 1,param_5,
                              param_6 - (int)param_5,(LPCSTR)0x0,(LPBOOL)0x0);
  if (iVar2 == 0) {
    return 2;
  }
  *param_4 = param_3;
  *param_7 = param_5 + iVar2;
  param_5[iVar2] = '\0';
  return 0;
}



void __thiscall FUN_008286a0(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2)

{
  *param_1 = param_2;
  param_1[1] = param_1_00;
  return;
}



undefined4 __thiscall FUN_008286b0(int *param_1_00,undefined4 param_1)

{
  int *piVar1;
  int *unaff_retaddr;
  undefined local_8 [8];
  
  piVar1 = (int *)(**(code **)(*param_1_00 + 0xc))(local_8,param_1);
  if ((piVar1[1] == unaff_retaddr[1]) && (*piVar1 == *unaff_retaddr)) {
    return 1;
  }
  return 0;
}



undefined4 __thiscall FUN_008286f0(int param_1_00,int *param_1,int param_2)

{
  if ((param_1_00 == param_1[1]) && (*param_1 == param_2)) {
    return 1;
  }
  return 0;
}



char * FUN_00828710(void)

{
  return "codecvt";
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * FUN_00828720(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc2ece;
  local_c = ExceptionList;
  if ((DAT_032bc8fc & 1) == 0) {
    DAT_032bc8fc = DAT_032bc8fc | 1;
    local_4 = 0;
    _DAT_032bc8f8 = `anonymous_namespace'::codecvt_error_cat::vftable;
    ExceptionList = &local_c;
    _atexit((_func_4879 *)&LAB_00c76120);
  }
  ExceptionList = local_c;
  return &DAT_032bc8f8;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00828790(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            undefined4 param_2)

{
  char *pcVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc2f09;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  local_4 = 0;
  switch(param_2) {
  case 0:
    uVar2 = 2;
    pcVar1 = "ok";
    break;
  case 1:
    uVar2 = 7;
    pcVar1 = "partial";
    break;
  case 2:
    uVar2 = 5;
    pcVar1 = "error";
    break;
  case 3:
    uVar2 = 6;
    pcVar1 = "noconv";
    break;
  default:
    uVar2 = 0xd;
    pcVar1 = "unknown error";
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,pcVar1,uVar2);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00828850(HLOCAL *param_1)

{
  LocalFree(*param_1);
  return;
}



char * FUN_00828860(void)

{
  return "generic";
}



char * FUN_00828870(void)

{
  return "system";
}



undefined4 * __thiscall FUN_00828880(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::system::error_category::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * FUN_008288a0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc2f3e;
  local_c = ExceptionList;
  if ((DAT_032bc904 & 1) == 0) {
    DAT_032bc904 = DAT_032bc904 | 1;
    local_4 = 0;
    _DAT_032bc900 = `anonymous_namespace'::system_error_category::vftable;
    ExceptionList = &local_c;
    _atexit((_func_4879 *)&LAB_00c76130);
  }
  ExceptionList = local_c;
  return &DAT_032bc900;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * FUN_00828910(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc2f6e;
  local_c = ExceptionList;
  if ((DAT_032bc90c & 1) == 0) {
    DAT_032bc90c = DAT_032bc90c | 1;
    local_4 = 0;
    _DAT_032bc908 = `anonymous_namespace'::generic_error_category::vftable;
    ExceptionList = &local_c;
    _atexit((_func_4879 *)&LAB_00c76140);
  }
  ExceptionList = local_c;
  return &DAT_032bc908;
}



void FUN_00828980(int *param_1,int param_2)

{
  int iVar1;
  
  if (param_2 < 0x10c) {
    if (param_2 != 0x10b) {
      switch(param_2) {
      case 0:
        iVar1 = FUN_00828910();
        *param_1 = 0;
        param_1[1] = iVar1;
        return;
      case 1:
        iVar1 = FUN_00828910();
        *param_1 = 0x28;
        param_1[1] = iVar1;
        return;
      case 2:
      case 3:
        iVar1 = FUN_00828910();
        *param_1 = 2;
        param_1[1] = iVar1;
        return;
      case 4:
switchD_008289aa_caseD_4:
        iVar1 = FUN_00828910();
        *param_1 = 0x18;
        param_1[1] = iVar1;
        return;
      case 5:
      case 0xc:
      case 0x10:
      case 0x13:
      case 0x20:
      case 0x52:
switchD_008289aa_caseD_5:
        iVar1 = FUN_00828910();
        *param_1 = 0xd;
        param_1[1] = iVar1;
        return;
      case 6:
      case 0x7b:
      case 0x83:
        break;
      default:
        goto switchD_008289aa_caseD_7;
      case 8:
      case 0xe:
        iVar1 = FUN_00828910();
        *param_1 = 0xc;
        param_1[1] = iVar1;
        return;
      case 0xf:
      case 0x14:
      case 0x37:
        iVar1 = FUN_00828910();
        *param_1 = 0x13;
        param_1[1] = iVar1;
        return;
      case 0x11:
        iVar1 = FUN_00828910();
        *param_1 = 0x12;
        param_1[1] = iVar1;
        return;
      case 0x15:
switchD_008289aa_caseD_15:
        iVar1 = FUN_00828910();
        *param_1 = 0xb;
        param_1[1] = iVar1;
        return;
      case 0x19:
      case 0x1d:
      case 0x1e:
      case 0x6e:
        goto switchD_008289aa_caseD_19;
      case 0x21:
      case 0xd4:
        iVar1 = FUN_00828910();
        *param_1 = 0x27;
        param_1[1] = iVar1;
        return;
      case 0x27:
      case 0x70:
        iVar1 = FUN_00828910();
        *param_1 = 0x1c;
        param_1[1] = iVar1;
        return;
      case 0x50:
      case 0xb7:
        iVar1 = FUN_00828910();
        *param_1 = 0x11;
        param_1[1] = iVar1;
        return;
      case 0x6f:
switchD_008289aa_caseD_6f:
        iVar1 = FUN_00828910();
        *param_1 = 0x26;
        param_1[1] = iVar1;
        return;
      case 0x8e:
      case 0xaa:
switchD_008289aa_caseD_8e:
        iVar1 = FUN_00828910();
        *param_1 = 0x10;
        param_1[1] = iVar1;
        return;
      case 0x91:
        iVar1 = FUN_00828910();
        *param_1 = 0x29;
        param_1[1] = iVar1;
        return;
      }
    }
switchD_008289aa_caseD_6:
    iVar1 = FUN_00828910();
    *param_1 = 0x16;
    param_1[1] = iVar1;
    return;
  }
  if (param_2 < 0x2715) {
    if (param_2 == 0x2714) {
      iVar1 = FUN_00828910();
      *param_1 = 4;
      param_1[1] = iVar1;
      return;
    }
    if (param_2 < 0x3f6) {
      if (param_2 != 0x3f5) {
        switch(param_2) {
        case 0x3e3:
          iVar1 = FUN_00828910();
          *param_1 = 0x26c7;
          param_1[1] = iVar1;
          return;
        default:
          goto switchD_008289aa_caseD_7;
        case 0x3e6:
          goto switchD_008289aa_caseD_5;
        case 0x3f3:
        case 0x3f4:
          break;
        }
      }
switchD_008289aa_caseD_19:
      iVar1 = FUN_00828910();
      *param_1 = 5;
      param_1[1] = iVar1;
      return;
    }
    if (param_2 == 0x4d5) goto switchD_008289aa_caseD_15;
    if ((param_2 == 0x961) || (param_2 == 0x964)) goto switchD_008289aa_caseD_8e;
  }
  else {
    switch(param_2) {
    case 0x2719:
      iVar1 = FUN_00828910();
      *param_1 = 9;
      param_1[1] = iVar1;
      return;
    case 0x271d:
      goto switchD_008289aa_caseD_5;
    case 0x271e:
      iVar1 = FUN_00828910();
      *param_1 = 0xe;
      param_1[1] = iVar1;
      return;
    case 0x2726:
      goto switchD_008289aa_caseD_6;
    case 0x2728:
      goto switchD_008289aa_caseD_4;
    case 0x2733:
      iVar1 = FUN_00828910();
      *param_1 = 0x26ca;
      param_1[1] = iVar1;
      return;
    case 0x2734:
      iVar1 = FUN_00828910();
      *param_1 = 0x26c8;
      param_1[1] = iVar1;
      return;
    case 0x2735:
      iVar1 = FUN_00828910();
      *param_1 = 0x26b3;
      param_1[1] = iVar1;
      return;
    case 0x2736:
      iVar1 = FUN_00828910();
      *param_1 = 0x26c3;
      param_1[1] = iVar1;
      return;
    case 0x2737:
      iVar1 = FUN_00828910();
      *param_1 = 0x26b6;
      param_1[1] = iVar1;
      return;
    case 0x2738:
      iVar1 = FUN_00828910();
      *param_1 = 0x26b9;
      param_1[1] = iVar1;
      return;
    case 0x2739:
      iVar1 = FUN_00828910();
      *param_1 = 0x26d5;
      param_1[1] = iVar1;
      return;
    case 0x273a:
      iVar1 = FUN_00828910();
      *param_1 = 0x26c1;
      param_1[1] = iVar1;
      return;
    case 0x273b:
      iVar1 = FUN_00828910();
      *param_1 = 0x26cd;
      param_1[1] = iVar1;
      return;
    case 0x273d:
      iVar1 = FUN_00828910();
      *param_1 = 0x26c9;
      param_1[1] = iVar1;
      return;
    case 0x273f:
      iVar1 = FUN_00828910();
      *param_1 = 0x26ad;
      param_1[1] = iVar1;
      return;
    case 0x2740:
      iVar1 = FUN_00828910();
      *param_1 = 0x26ae;
      param_1[1] = iVar1;
      return;
    case 0x2741:
      iVar1 = FUN_00828910();
      *param_1 = 0x26af;
      param_1[1] = iVar1;
      return;
    case 0x2742:
      iVar1 = FUN_00828910();
      *param_1 = 0x26ba;
      param_1[1] = iVar1;
      return;
    case 0x2743:
      iVar1 = FUN_00828910();
      *param_1 = 0x26bc;
      param_1[1] = iVar1;
      return;
    case 0x2744:
      iVar1 = FUN_00828910();
      *param_1 = 0x26bb;
      param_1[1] = iVar1;
      return;
    case 0x2745:
      iVar1 = FUN_00828910();
      *param_1 = 0x26b2;
      param_1[1] = iVar1;
      return;
    case 0x2746:
      iVar1 = FUN_00828910();
      *param_1 = 0x26b5;
      param_1[1] = iVar1;
      return;
    case 0x2747:
      iVar1 = FUN_00828910();
      *param_1 = 0x26bd;
      param_1[1] = iVar1;
      return;
    case 0x2748:
      iVar1 = FUN_00828910();
      *param_1 = 0x26b0;
      param_1[1] = iVar1;
      return;
    case 0x2749:
      iVar1 = FUN_00828910();
      *param_1 = 0x26c5;
      param_1[1] = iVar1;
      return;
    case 0x274c:
      iVar1 = FUN_00828910();
      *param_1 = 0x26d2;
      param_1[1] = iVar1;
      return;
    case 0x274d:
      iVar1 = FUN_00828910();
      *param_1 = 0x26b4;
      param_1[1] = iVar1;
      return;
    case 0x274f:
      goto switchD_008289aa_caseD_6f;
    case 0x2751:
      iVar1 = FUN_00828910();
      *param_1 = 0x26b7;
      param_1[1] = iVar1;
      return;
    }
  }
switchD_008289aa_caseD_7:
  iVar1 = FUN_008288a0();
  *param_1 = param_2;
  param_1[1] = iVar1;
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00829070(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            char *param_2)

{
  char cVar1;
  uint uVar2;
  char *pcVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar4;
  char *pcVar5;
  bool bVar6;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc2fd0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  bVar6 = false;
  if ((DAT_032bc92c & 1) == 0) {
    DAT_032bc92c = DAT_032bc92c | 1;
    local_4 = 1;
    DAT_032bc928 = 0xf;
    _DAT_032bc924 = 0;
    DAT_032bc914._0_1_ = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &DAT_032bc910,"Unknown error",0xd);
    _atexit((_func_4879 *)&LAB_00c76150);
    local_4 = local_4 & 0xffffff00;
  }
  pcVar3 = _strerror(param_2);
  if (pcVar3 == (char *)0x0) {
    pbVar4 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             &DAT_032bc910;
  }
  else {
    local_10 = 0xf;
    local_14 = 0;
    local_24 = local_24 & 0xffffff00;
    pcVar5 = pcVar3;
    do {
      cVar1 = *pcVar5;
      pcVar5 = pcVar5 + 1;
    } while (cVar1 != '\0');
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_28,pcVar3,(int)pcVar5 - (int)(pcVar3 + 1));
    bVar6 = true;
    pbVar4 = local_28;
    local_4 = 2;
  }
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,pbVar4,0,0xffffffff);
  if ((bVar6) && (0xf < local_10)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar2);
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_008291a0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1,DWORD param_2)

{
  uint uVar1;
  char cVar2;
  char *hMem;
  uint uVar3;
  DWORD DVar4;
  char *pcVar5;
  undefined4 ****ppppuVar6;
  char *local_3c;
  undefined4 local_38;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_34;
  char *pcStack_30;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_2c [4];
  undefined4 ****appppuStack_28 [4];
  uint uStack_18;
  uint uStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3019;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3c;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  local_38 = 0;
  local_34 = param_1;
  local_3c = (char *)0x0;
  DVar4 = FormatMessageA(0x1300,(LPCVOID)0x0,param_2,0x400,(LPSTR)&local_3c,0,(va_list *)0x0);
  hMem = local_3c;
  pcStack_30 = local_3c;
  uStack_4 = 1;
  if (DVar4 == 0) {
    *(undefined4 *)(param_1 + 0x18) = 0xf;
    *(undefined4 *)(param_1 + 0x14) = 0;
    param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (param_1,"Unknown error",0xd);
  }
  else {
    uStack_14 = 0xf;
    uStack_18 = 0;
    appppuStack_28[0] = (undefined4 ****)((uint)appppuStack_28[0] & 0xffffff00);
    pcVar5 = local_3c;
    do {
      cVar2 = *pcVar5;
      pcVar5 = pcVar5 + 1;
    } while (cVar2 != '\0');
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (abStack_2c,local_3c,(int)pcVar5 - (int)(local_3c + 1));
    uStack_4 = CONCAT31(uStack_4._1_3_,2);
    while (uStack_18 != 0) {
      uVar1 = uStack_18 - 1;
      if (uStack_18 < uVar1) {
        FUN_00a3fb10(uVar3);
      }
      ppppuVar6 = appppuStack_28[0];
      if (uStack_14 < 0x10) {
        ppppuVar6 = appppuStack_28;
      }
      if (*(char *)((int)ppppuVar6 + uVar1) != '\n') {
        uVar1 = uStack_18 - 1;
        if (uStack_18 < uVar1) {
          FUN_00a3fb10(uVar3);
        }
        ppppuVar6 = appppuStack_28[0];
        if (uStack_14 < 0x10) {
          ppppuVar6 = appppuStack_28;
        }
        if (*(char *)((int)ppppuVar6 + uVar1) != '\r') {
          if (uStack_18 != 0) {
            uVar3 = uStack_18 - 1;
            if (uStack_18 < uVar3) {
              FUN_00a3fb10();
            }
            ppppuVar6 = appppuStack_28[0];
            if (uStack_14 < 0x10) {
              ppppuVar6 = appppuStack_28;
            }
            if (*(char *)((int)ppppuVar6 + uVar3) == '.') {
              std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
              erase(abStack_2c,uStack_18 - 1,0xffffffff);
            }
          }
          break;
        }
      }
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
                (abStack_2c,uStack_18 - 1,0xffffffff);
    }
    *(undefined4 *)(param_1 + 0x18) = 0xf;
    *(undefined4 *)(param_1 + 0x14) = 0;
    param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (param_1,abStack_2c,0,0xffffffff);
    local_38 = 1;
    if (0xf < uStack_14) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(appppuStack_28[0]);
    }
    uStack_14 = 0xf;
    uStack_18 = 0;
    appppuStack_28[0] = (undefined4 ****)((uint)appppuStack_28[0] & 0xffffff00);
  }
  local_38 = 1;
  uStack_4 = uStack_4 & 0xffffff00;
  LocalFree(hMem);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00829380(char *param_1_00,int param_1,int param_2)

{
  char cVar1;
  
  if ((param_2 == 0) && (param_1 != -1)) {
    cVar1 = '\0';
  }
  else {
    cVar1 = '\x01';
  }
  *param_1_00 = cVar1;
  if (cVar1 != '\0') {
    *(undefined4 *)(param_1_00 + 4) = 0xfffffffe;
    return;
  }
  *(int *)(param_1_00 + 4) = param_1;
  return;
}



DWORD * FUN_008293e0(DWORD *param_1)

{
  DWORD DVar1;
  
  DVar1 = GetCurrentThreadId();
  *param_1 = DVar1;
  return param_1;
}



void FUN_008293f0(void)

{
  if (DAT_0322eb2c != 0xffffffff) {
    TlsFree(DAT_0322eb2c);
    DAT_0322eb2c = 0xffffffff;
  }
  return;
}



void FUN_00829410(int param_1,char *param_2)

{
  byte bVar1;
  
  *param_2 = ((byte)param_1 & 0xf) + 0x41;
  param_2[1] = ((byte)(param_1 >> 4) & 0xf) + 0x41;
  param_2[2] = ((byte)((uint)param_1 >> 8) & 0xf) + 0x41;
  param_2[3] = ((byte)(param_1 >> 0xc) & 0xf) + 0x41;
  param_2[4] = ((byte)((uint)param_1 >> 0x10) & 0xf) + 0x41;
  param_2[5] = ((byte)(param_1 >> 0x14) & 0xf) + 0x41;
  bVar1 = (byte)((uint)param_1 >> 0x18);
  param_2[6] = (bVar1 & 0xf) + 0x41;
  param_2[7] = ((char)bVar1 >> 4 & 0xfU) + 0x41;
  param_2[8] = '\0';
  return;
}



void FUN_00829490(uint param_1,char *param_2)

{
  byte bVar1;
  
  *param_2 = ((byte)param_1 & 0xf) + 0x41;
  param_2[1] = ((byte)(param_1 >> 4) & 0xf) + 0x41;
  param_2[2] = ((byte)(param_1 >> 8) & 0xf) + 0x41;
  param_2[3] = ((byte)(param_1 >> 0xc) & 0xf) + 0x41;
  param_2[4] = ((byte)(param_1 >> 0x10) & 0xf) + 0x41;
  param_2[5] = ((byte)(param_1 >> 0x14) & 0xf) + 0x41;
  bVar1 = (byte)(param_1 >> 0x18);
  param_2[6] = (bVar1 & 0xf) + 0x41;
  param_2[7] = (bVar1 >> 4) + 0x41;
  param_2[8] = '\0';
  return;
}



void FUN_00829510(undefined4 *param_1,undefined4 param_2)

{
  DWORD DVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined2 *puVar5;
  
  if (*(char *)param_1 == '\0') {
    puVar3 = (undefined4 *)"Local\\{C15730E2-145C-4c5e-B005-3BC753F42475}-once-flag";
    puVar4 = param_1;
    for (iVar2 = 0xd; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
      puVar4 = puVar4 + 1;
    }
    *(undefined2 *)puVar4 = *(undefined2 *)puVar3;
    *(undefined *)((int)puVar4 + 2) = *(undefined *)((int)puVar3 + 2);
    FUN_00829410(param_2,(undefined2 *)((int)param_1 + 0x36));
    puVar5 = (undefined2 *)((int)param_1 + 0x3e);
    DVar1 = GetCurrentProcessId();
    FUN_00829490(DVar1,puVar5);
  }
  OpenEventA(0x100002,0,(LPCSTR)param_1);
  return;
}



void FUN_00829570(undefined4 *param_1,undefined4 param_2)

{
  DWORD DVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined2 *puVar5;
  
  if (*(char *)param_1 == '\0') {
    puVar3 = (undefined4 *)"Local\\{C15730E2-145C-4c5e-B005-3BC753F42475}-once-flag";
    puVar4 = param_1;
    for (iVar2 = 0xd; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
      puVar4 = puVar4 + 1;
    }
    *(undefined2 *)puVar4 = *(undefined2 *)puVar3;
    *(undefined *)((int)puVar4 + 2) = *(undefined *)((int)puVar3 + 2);
    FUN_00829410(param_2,(undefined2 *)((int)param_1 + 0x36));
    puVar5 = (undefined2 *)((int)param_1 + 0x3e);
    DVar1 = GetCurrentProcessId();
    FUN_00829490(DVar1,puVar5);
  }
  CreateEventA((LPSECURITY_ATTRIBUTES)0x0,1,0,(LPCSTR)param_1);
  return;
}



void FUN_008295d0(void)

{
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bc3058;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  local_8 = 0;
  FUN_00829630();
  return;
}



void FUN_00829630(void)

{
  DWORD DVar1;
  HANDLE hEvent;
  undefined4 uVar2;
  int iVar3;
  int *unaff_EBX;
  int unaff_EBP;
  code *unaff_ESI;
  undefined4 *puVar4;
  undefined4 *puVar5;
  
  if (*unaff_EBX != -0x3ea8cf1e) {
    LOCK();
    iVar3 = *unaff_EBX;
    if (iVar3 == 0) {
      *unaff_EBX = 0x7f0725e3;
      iVar3 = 0;
    }
    UNLOCK();
    if (iVar3 == 0) {
      hEvent = *(HANDLE *)(unaff_EBP + -100);
      *(undefined *)(unaff_EBP + -4) = 1;
      if (hEvent == (HANDLE)0x0) {
        if (*(char *)(unaff_EBP + -0x5c) == '\0') {
          puVar4 = (undefined4 *)"Local\\{C15730E2-145C-4c5e-B005-3BC753F42475}-once-flag";
          puVar5 = (undefined4 *)(unaff_EBP + -0x5c);
          for (iVar3 = 0xd; iVar3 != 0; iVar3 = iVar3 + -1) {
            *puVar5 = *puVar4;
            puVar4 = puVar4 + 1;
            puVar5 = puVar5 + 1;
          }
          *(undefined2 *)puVar5 = *(undefined2 *)puVar4;
          *(undefined *)((int)puVar5 + 2) = *(undefined *)((int)puVar4 + 2);
          FUN_00829410();
          DVar1 = GetCurrentProcessId();
          FUN_00829490(DVar1,unaff_EBP + -0x1e);
        }
        hEvent = OpenEventA(0x100002,0,(LPCSTR)(unaff_EBP + -0x5c));
        *(HANDLE *)(unaff_EBP + -100) = hEvent;
        if (hEvent != (HANDLE)0x0) goto LAB_008296af;
      }
      else {
LAB_008296af:
        ResetEvent(hEvent);
      }
      (**(code **)(unaff_EBP + -0x68))();
      if (*(char *)(unaff_EBP + -0x5d) == '\0') {
        LOCK();
        unaff_EBX[1] = unaff_EBX[1] + 1;
        UNLOCK();
      }
      LOCK();
      *unaff_EBX = -0x3ea8cf1e;
      UNLOCK();
      if (hEvent == (HANDLE)0x0) {
        if (unaff_EBX[1] < 2) goto LAB_0082978e;
        hEvent = (HANDLE)FUN_00829570(unaff_EBP + -0x5c);
        *(HANDLE *)(unaff_EBP + -100) = hEvent;
        if (hEvent == (HANDLE)0x0) goto LAB_00829791;
      }
      SetEvent(hEvent);
      goto LAB_00829791;
    }
    if (*(char *)(unaff_EBP + -0x5d) != '\0') {
LAB_00829781:
      (*unaff_ESI)(*(undefined4 *)(unaff_EBP + -100),0xffffffff);
      FUN_00829630();
      return;
    }
    LOCK();
    unaff_EBX[1] = unaff_EBX[1] + 1;
    UNLOCK();
    iVar3 = *unaff_EBX;
    *(undefined *)(unaff_EBP + -0x5d) = 1;
    if (iVar3 != -0x3ea8cf1e) {
      if (*(int *)(unaff_EBP + -100) == 0) {
        uVar2 = FUN_00829570(unaff_EBP + -0x5c);
        *(undefined4 *)(unaff_EBP + -100) = uVar2;
        FUN_00829630();
        return;
      }
      goto LAB_00829781;
    }
  }
LAB_0082978e:
  hEvent = *(HANDLE *)(unaff_EBP + -100);
LAB_00829791:
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  if ((hEvent != (HANDLE)0x0) && (hEvent != (HANDLE)0xffffffff)) {
    CloseHandle(hEvent);
  }
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  ___security_check_cookie_4();
  return;
}



void Catch_All_0082970a(void)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  HANDLE pvVar4;
  int *unaff_EBX;
  int unaff_EBP;
  code *unaff_ESI;
  
  puVar1 = *(undefined4 **)(unaff_EBP + -0x6c);
  LOCK();
  *puVar1 = 0;
  UNLOCK();
  pvVar4 = *(HANDLE *)(unaff_EBP + -100);
  if (pvVar4 == (HANDLE)0x0) {
    uVar3 = FUN_00829510(unaff_EBP + -0x5c,puVar1);
    FUN_00449529(uVar3);
    pvVar4 = *(HANDLE *)(unaff_EBP + -100);
    if (pvVar4 == (HANDLE)0x0) goto LAB_0082973e;
  }
  SetEvent(pvVar4);
LAB_0082973e:
  __CxxThrowException_8(0,0);
  if (*(char *)(unaff_EBP + -0x5d) == '\0') {
    LOCK();
    unaff_EBX[1] = unaff_EBX[1] + 1;
    UNLOCK();
    iVar2 = *unaff_EBX;
    *(undefined *)(unaff_EBP + -0x5d) = 1;
    if (iVar2 == -0x3ea8cf1e) {
      pvVar4 = *(HANDLE *)(unaff_EBP + -100);
      *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
      if ((pvVar4 != (HANDLE)0x0) && (pvVar4 != (HANDLE)0xffffffff)) {
        CloseHandle(pvVar4);
      }
      ExceptionList = *(void **)(unaff_EBP + -0xc);
      ___security_check_cookie_4();
      return;
    }
    if (*(int *)(unaff_EBP + -100) == 0) {
      uVar3 = FUN_00829570(unaff_EBP + -0x5c);
      *(undefined4 *)(unaff_EBP + -100) = uVar3;
      FUN_00829630();
      return;
    }
  }
  (*unaff_ESI)(*(undefined4 *)(unaff_EBP + -100),0xffffffff);
  FUN_00829630();
  return;
}



void __thiscall FUN_008297d0(uint *param_1_00,uint *param_1,uint *param_2)

{
  uint uVar1;
  uint uVar2;
  char cVar3;
  uint uVar4;
  uint uVar5;
  
  uVar1 = *param_1_00;
  uVar2 = param_1_00[1];
  if (((uVar1 != 0) || (uVar2 != 0x80000000)) && ((uVar1 != 0xffffffff || (uVar2 != 0x7fffffff)))) {
    if ((uVar1 == 0xfffffffe) && (uVar2 == 0x7fffffff)) goto LAB_0082991d;
    uVar4 = *param_2;
    uVar5 = param_2[1];
    if (((uVar4 != 0) || (uVar5 != 0x80000000)) &&
       (((uVar4 != 0xffffffff || (uVar5 != 0x7fffffff)) &&
        ((uVar4 != 0xfffffffe || (uVar5 != 0x7fffffff)))))) goto LAB_00829908;
  }
  if ((uVar1 != 0xfffffffe) || (uVar2 != 0x7fffffff)) {
    uVar4 = *param_2;
    uVar5 = param_2[1];
    if (((uVar4 != 0xfffffffe) || (uVar5 != 0x7fffffff)) &&
       (((((uVar1 != 0xffffffff || (uVar2 != 0x7fffffff)) || (uVar4 != 0xffffffff)) ||
         (uVar5 != 0x7fffffff)) &&
        (((uVar1 != 0 || (uVar2 != 0x80000000)) || ((uVar4 != 0 || (uVar5 != 0x80000000)))))))) {
      cVar3 = FUN_0043bd5f();
      if (cVar3 != '\0') {
        uVar1 = param_1_00[1];
        *param_1 = *param_1_00;
        param_1[1] = uVar1;
        return;
      }
      cVar3 = FUN_0043bd84(uVar4,uVar5);
      if (cVar3 != '\0') {
        *param_1 = 0;
        param_1[1] = 0x80000000;
        return;
      }
      cVar3 = FUN_0043bd9c(uVar4,uVar5);
      if (cVar3 != '\0') {
        *param_1 = 0xffffffff;
        param_1[1] = 0x7fffffff;
        return;
      }
LAB_00829908:
      param_1[1] = (uVar2 - uVar5) - (uint)(uVar1 < uVar4);
      *param_1 = uVar1 - uVar4;
      return;
    }
  }
LAB_0082991d:
  *param_1 = 0xfffffffe;
  param_1[1] = 0x7fffffff;
  return;
}



void __thiscall FUN_00829950(int *param_1_00,int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1_00;
  *param_1 = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



undefined4 * FUN_00829980(undefined4 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  HANDLE hHeap;
  DWORD dwFlags;
  undefined4 *local_4;
  
  FUN_00829950(&local_4);
  if (local_4 == (undefined4 *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = local_4[0xc];
  }
  *param_1 = uVar2;
  if (local_4 != (undefined4 *)0x0) {
    LOCK();
    iVar1 = local_4[1] + -1;
    local_4[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)*local_4)(0);
      dwFlags = 0;
      hHeap = GetProcessHeap();
      HeapFree(hHeap,dwFlags,local_4);
    }
  }
  return param_1;
}



void __fastcall FUN_008299e0(int *param_1)

{
  int iVar1;
  HANDLE hHeap;
  DWORD dwFlags;
  undefined4 *lpMem;
  
  lpMem = (undefined4 *)*param_1;
  *param_1 = 0;
  if (lpMem != (undefined4 *)0x0) {
    LOCK();
    iVar1 = lpMem[1] + -1;
    lpMem[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)*lpMem)(0);
      dwFlags = 0;
      hHeap = GetProcessHeap();
      HeapFree(hHeap,dwFlags,lpMem);
    }
  }
  return;
}



void FUN_00829a20(void)

{
  int iVar1;
  uint uVar2;
  HANDLE hHeap;
  DWORD dwFlags;
  undefined4 *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3088;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_00829950(&local_10);
  local_4 = 0;
  if (local_10 != (undefined4 *)0x0) {
    SetEvent((HANDLE)local_10[0x19]);
  }
  local_4 = 0xffffffff;
  if (local_10 != (undefined4 *)0x0) {
    LOCK();
    iVar1 = local_10[1] + -1;
    local_10[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)*local_10)(0,uVar2);
      dwFlags = 0;
      hHeap = GetProcessHeap();
      HeapFree(hHeap,dwFlags,local_10);
    }
  }
  ExceptionList = local_c;
  return;
}



int * FUN_00829ab0(int *param_1,uint *param_2,uint *param_3)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  int *piVar4;
  undefined4 uVar5;
  int iVar6;
  uint local_18;
  uint local_14;
  uint local_10;
  uint local_c;
  undefined local_8 [8];
  
  uVar1 = *param_2;
  uVar2 = param_2[1];
  if ((((uVar1 != 0) || (uVar2 != 0x80000000)) && ((uVar1 != 0xffffffff || (uVar2 != 0x7fffffff))))
     && ((uVar1 != 0xfffffffe || (uVar2 != 0x7fffffff)))) {
    uVar1 = *param_3;
    uVar2 = param_3[1];
    if (((uVar1 != 0) || (uVar2 != 0x80000000)) &&
       (((uVar1 != 0xffffffff || (uVar2 != 0x7fffffff)) &&
        ((uVar1 != 0xfffffffe || (uVar2 != 0x7fffffff)))))) {
      iVar6 = *param_2 - *param_3;
      iVar3 = (param_2[1] - param_3[1]) - (uint)(*param_2 < *param_3);
      if (iVar3 < 0) {
        iVar3 = -((uint)(iVar6 != 0) - (iVar3 + (uint)(iVar6 != 0)));
      }
      param_1[1] = iVar3;
      *param_1 = iVar6;
      return param_1;
    }
  }
  local_18 = *param_3;
  local_14 = param_3[1];
  local_10 = *param_2;
  local_c = param_2[1];
  piVar4 = (int *)FUN_008297d0(local_8,&local_18);
  iVar3 = *piVar4;
  iVar6 = piVar4[1];
  if ((iVar3 == -2) && (iVar6 == 0x7fffffff)) {
    FUN_00453ae1(param_1,0);
    return param_1;
  }
  if ((iVar3 == 0) && (iVar6 == -0x80000000)) {
    FUN_00453ae1(param_1,1);
    return param_1;
  }
  if ((iVar3 != -1) || (uVar5 = 2, iVar6 != 0x7fffffff)) {
    uVar5 = 5;
  }
  FUN_00453ae1(param_1,uVar5);
  return param_1;
}



void FUN_00829bf0(void)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  uint uVar4;
  HANDLE pvVar5;
  int iVar6;
  undefined4 *lpMem;
  DWORD DVar7;
  int *piVar8;
  int **lpMem_00;
  undefined auStack_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00bc30b8;
  local_14 = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_14;
  if (DAT_0322eb2c == 0xffffffff) {
    lpMem = (undefined4 *)0x0;
  }
  else {
    lpMem = (undefined4 *)TlsGetValue(DAT_0322eb2c);
  }
  local_c = 0;
  if (lpMem != (undefined4 *)0x0) {
    while( true ) {
      if (lpMem[0xb] != 0) {
        iVar6 = lpMem[3];
        goto joined_r0x00829cc0;
      }
      if (lpMem[3] == 0) break;
      do {
        lpMem_00 = (int **)lpMem[3];
        lpMem[3] = lpMem_00[1];
        if (*lpMem_00 != (int *)0x0) {
          (**(code **)(**lpMem_00 + 4))(uVar4);
          piVar8 = *lpMem_00;
          (**(code **)*piVar8)(0);
          DVar7 = 0;
          pvVar5 = GetProcessHeap();
          HeapFree(pvVar5,DVar7,piVar8);
        }
        DVar7 = 0;
        pvVar5 = GetProcessHeap();
        HeapFree(pvVar5,DVar7,lpMem_00);
        iVar6 = lpMem[3];
joined_r0x00829cc0:
      } while (iVar6 != 0);
      piVar8 = (int *)lpMem[10];
      piVar1 = (int *)lpMem[4];
      piVar2 = (int *)*piVar8;
      while( true ) {
        if (piVar1 == (int *)0x0) {
          FUN_00a3fb10();
        }
        if (piVar2 == piVar8) break;
        FUN_00439758();
        if (piVar1 == (int *)0x0) {
          FUN_00a3fb10();
          iVar6 = 0;
        }
        else {
          iVar6 = *piVar1;
        }
        if (piVar2 == (int *)*(int *)(iVar6 + 0x18)) {
          FUN_00a3fb10();
        }
        if (piVar2[4] != 0) {
          if (piVar1 == (int *)0x0) {
            FUN_00a3fb10();
            iVar6 = 0;
          }
          else {
            iVar6 = *piVar1;
          }
          if (piVar2 == (int *)*(int *)(iVar6 + 0x18)) {
            FUN_00a3fb10();
          }
          if (piVar2[6] != 0) {
            if (piVar1 == (int *)0x0) {
              FUN_00a3fb10();
              iVar6 = 0;
            }
            else {
              iVar6 = *piVar1;
            }
            if (piVar2 == (int *)*(int *)(iVar6 + 0x18)) {
              FUN_00a3fb10();
            }
            piVar3 = (int *)piVar2[4];
            if (piVar1 == (int *)0x0) {
              FUN_00a3fb10();
              iVar6 = 0;
            }
            else {
              iVar6 = *piVar1;
            }
            if (piVar2 == (int *)*(int *)(iVar6 + 0x18)) {
              FUN_00a3fb10();
            }
            (**(code **)(*piVar3 + 4))(piVar2[6]);
          }
        }
        FUN_004394ca(auStack_20,piVar1,piVar2);
      }
    }
    FUN_008295d0(&DAT_032bc944,&LAB_008293c0);
    if (DAT_0322eb2c != 0xffffffff) {
      TlsSetValue(DAT_0322eb2c,(LPVOID)0x0);
    }
  }
  local_c = 0xffffffff;
  if (lpMem != (undefined4 *)0x0) {
    LOCK();
    iVar6 = lpMem[1] + -1;
    lpMem[1] = iVar6;
    UNLOCK();
    if (iVar6 == 0) {
      (**(code **)*lpMem)(0);
      DVar7 = 0;
      pvVar5 = GetProcessHeap();
      HeapFree(pvVar5,DVar7,lpMem);
    }
  }
  ExceptionList = local_14;
  return;
}



undefined4 FUN_00829df0(int *param_1)

{
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bc30e0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  FUN_008295d0(&DAT_032bc944,&LAB_008293c0);
  if (DAT_0322eb2c != 0xffffffff) {
    TlsSetValue(DAT_0322eb2c,param_1);
  }
  local_8 = 0;
  (**(code **)(*param_1 + 4))();
  local_8 = 0xffffffff;
  FUN_00829bf0();
  ExceptionList = local_10;
  return 0;
}



undefined4 Catch_00829e72(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  return 0x829e57;
}



undefined4 __fastcall FUN_00829e80(void **param_1)

{
  void *pvVar1;
  HANDLE hObject;
  uintptr_t uVar2;
  
  uVar2 = __beginthreadex((void *)0x0,0,FUN_00829df0,*param_1,4,(uint *)((int)*param_1 + 0x30));
  if (uVar2 == 0) {
    return 0;
  }
  LOCK();
  *(int *)((int)*param_1 + 4) = *(int *)((int)*param_1 + 4) + 1;
  UNLOCK();
  pvVar1 = *param_1;
  hObject = *(HANDLE *)((int)pvVar1 + 8);
  if ((hObject != (HANDLE)0x0) && (hObject != (HANDLE)0xffffffff)) {
    CloseHandle(hObject);
  }
  *(uintptr_t *)((int)pvVar1 + 8) = uVar2;
  ResumeThread(*(HANDLE *)((int)*param_1 + 8));
  return 1;
}



void thunk_FUN_00829bf0(void)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  uint uVar4;
  HANDLE pvVar5;
  int iVar6;
  undefined4 *lpMem;
  DWORD DVar7;
  int *piVar8;
  int **lpMem_00;
  undefined auStack_20 [12];
  void *pvStack_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00bc30b8;
  pvStack_14 = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &pvStack_14;
  if (DAT_0322eb2c == 0xffffffff) {
    lpMem = (undefined4 *)0x0;
  }
  else {
    lpMem = (undefined4 *)TlsGetValue(DAT_0322eb2c);
  }
  uStack_c = 0;
  if (lpMem != (undefined4 *)0x0) {
    while( true ) {
      if (lpMem[0xb] != 0) {
        iVar6 = lpMem[3];
        goto joined_r0x00829cc0;
      }
      if (lpMem[3] == 0) break;
      do {
        lpMem_00 = (int **)lpMem[3];
        lpMem[3] = lpMem_00[1];
        if (*lpMem_00 != (int *)0x0) {
          (**(code **)(**lpMem_00 + 4))(uVar4);
          piVar8 = *lpMem_00;
          (**(code **)*piVar8)(0);
          DVar7 = 0;
          pvVar5 = GetProcessHeap();
          HeapFree(pvVar5,DVar7,piVar8);
        }
        DVar7 = 0;
        pvVar5 = GetProcessHeap();
        HeapFree(pvVar5,DVar7,lpMem_00);
        iVar6 = lpMem[3];
joined_r0x00829cc0:
      } while (iVar6 != 0);
      piVar8 = (int *)lpMem[10];
      piVar1 = (int *)lpMem[4];
      piVar2 = (int *)*piVar8;
      while( true ) {
        if (piVar1 == (int *)0x0) {
          FUN_00a3fb10();
        }
        if (piVar2 == piVar8) break;
        FUN_00439758();
        if (piVar1 == (int *)0x0) {
          FUN_00a3fb10();
          iVar6 = 0;
        }
        else {
          iVar6 = *piVar1;
        }
        if (piVar2 == (int *)*(int *)(iVar6 + 0x18)) {
          FUN_00a3fb10();
        }
        if (piVar2[4] != 0) {
          if (piVar1 == (int *)0x0) {
            FUN_00a3fb10();
            iVar6 = 0;
          }
          else {
            iVar6 = *piVar1;
          }
          if (piVar2 == (int *)*(int *)(iVar6 + 0x18)) {
            FUN_00a3fb10();
          }
          if (piVar2[6] != 0) {
            if (piVar1 == (int *)0x0) {
              FUN_00a3fb10();
              iVar6 = 0;
            }
            else {
              iVar6 = *piVar1;
            }
            if (piVar2 == (int *)*(int *)(iVar6 + 0x18)) {
              FUN_00a3fb10();
            }
            piVar3 = (int *)piVar2[4];
            if (piVar1 == (int *)0x0) {
              FUN_00a3fb10();
              iVar6 = 0;
            }
            else {
              iVar6 = *piVar1;
            }
            if (piVar2 == (int *)*(int *)(iVar6 + 0x18)) {
              FUN_00a3fb10();
            }
            (**(code **)(*piVar3 + 4))(piVar2[6]);
          }
        }
        FUN_004394ca(auStack_20,piVar1,piVar2);
      }
    }
    FUN_008295d0(&DAT_032bc944,&LAB_008293c0);
    if (DAT_0322eb2c != 0xffffffff) {
      TlsSetValue(DAT_0322eb2c,(LPVOID)0x0);
    }
  }
  uStack_c = 0xffffffff;
  if (lpMem != (undefined4 *)0x0) {
    LOCK();
    iVar6 = lpMem[1] + -1;
    lpMem[1] = iVar6;
    UNLOCK();
    if (iVar6 == 0) {
      (**(code **)*lpMem)(0);
      DVar7 = 0;
      pvVar5 = GetProcessHeap();
      HeapFree(pvVar5,DVar7,lpMem);
    }
  }
  ExceptionList = pvStack_14;
  return;
}



void __fastcall FUN_00829f00(int param_1)

{
  undefined4 *puVar1;
  int *piVar2;
  int iVar3;
  undefined4 *puVar4;
  
  *(undefined *)(param_1 + 0x18) = 1;
  FUN_0044953d();
  puVar1 = *(undefined4 **)(param_1 + 0x6c);
  piVar2 = *(int **)(param_1 + 0x58);
  puVar4 = (undefined4 *)*puVar1;
  while( true ) {
    if (piVar2 == (int *)0x0) {
      FUN_00a3fb10();
    }
    if (puVar4 == puVar1) break;
    if (piVar2 == (int *)0x0) {
      FUN_00a3fb10();
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar2;
    }
    if (puVar4 == *(undefined4 **)(iVar3 + 0x14)) {
      FUN_00a3fb10();
    }
    FUN_0044953d();
    if (piVar2 == (int *)0x0) {
      FUN_00a3fb10();
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar2;
    }
    if (puVar4 == *(undefined4 **)(iVar3 + 0x14)) {
      FUN_00a3fb10();
    }
    puVar4 = (undefined4 *)*puVar4;
  }
  return;
}



void __fastcall FUN_00829f80(int param_1)

{
  uint uVar1;
  HANDLE hEvent;
  uint *local_14;
  char local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3108;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = (uint *)(param_1 + 0x24);
  local_10 = '\0';
  FUN_0043d358(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  local_4 = 0;
  FUN_00829f00(&local_14);
  local_4 = 0xffffffff;
  if (local_10 != '\0') {
    LOCK();
    uVar1 = *local_14;
    *local_14 = *local_14 + 0x80000000;
    UNLOCK();
    if (((uVar1 & 0x40000000) == 0) && (-0x80000000 < (int)uVar1)) {
      LOCK();
      uVar1 = *local_14;
      *local_14 = *local_14 | 0x40000000;
      UNLOCK();
      if ((uVar1 >> 0x1e & 1) == 0) {
        hEvent = (HANDLE)FUN_004014a7();
        SetEvent(hEvent);
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0082a030(undefined4 *param_1)

{
  HANDLE *ppvVar1;
  uint uVar2;
  int *piVar3;
  uint uVar4;
  int *piVar5;
  uint *puVar6;
  uint uVar7;
  int iVar8;
  HANDLE pvVar9;
  HANDLE pvVar10;
  uint uVar11;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc3167;
  local_c = ExceptionList;
  uVar7 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  *param_1 = boost::detail::thread_data_base::vftable;
  uVar11 = param_1[0x10];
  local_4 = 4;
  if ((uint)param_1[0x11] < uVar11) {
    FUN_00a3fb10(uVar7);
  }
  piVar3 = (int *)param_1[0xd];
  uVar4 = param_1[0x11];
  if (uVar4 < (uint)param_1[0x10]) {
    FUN_00a3fb10(uVar7);
  }
  piVar5 = (int *)param_1[0xd];
  while( true ) {
    if ((piVar3 == (int *)0x0) || (piVar3 != piVar5)) {
      FUN_00a3fb10(uVar7);
    }
    if (uVar11 == uVar4) break;
    if (piVar3 == (int *)0x0) {
      FUN_00a3fb10(uVar7);
      iVar8 = 0;
    }
    else {
      iVar8 = *piVar3;
    }
    if (*(uint *)(iVar8 + 0x10) <= uVar11) {
      FUN_00a3fb10();
    }
    puVar6 = *(uint **)(uVar11 + 4);
    LOCK();
    uVar2 = *puVar6;
    *puVar6 = *puVar6 + 0x80000000;
    UNLOCK();
    if (((uVar2 & 0x40000000) == 0) && (-0x80000000 < (int)uVar2)) {
      LOCK();
      uVar2 = *puVar6;
      *puVar6 = *puVar6 | 0x40000000;
      UNLOCK();
      if ((uVar2 >> 0x1e & 1) == 0) {
        ppvVar1 = (HANDLE *)(puVar6 + 1);
        pvVar9 = *ppvVar1;
        if (*ppvVar1 == (HANDLE)0x0) {
          pvVar9 = (HANDLE)FUN_0040143f(0,0);
          LOCK();
          pvVar10 = *ppvVar1;
          if (pvVar10 == (HANDLE)0x0) {
            *ppvVar1 = pvVar9;
            pvVar10 = (HANDLE)0x0;
          }
          UNLOCK();
          if (pvVar10 != (HANDLE)0x0) {
            CloseHandle(pvVar9);
            pvVar9 = pvVar10;
          }
        }
        SetEvent(pvVar9);
      }
    }
    if (piVar3 == (int *)0x0) {
      FUN_00a3fb10();
      iVar8 = 0;
    }
    else {
      iVar8 = *piVar3;
    }
    if (*(uint *)(iVar8 + 0x10) <= uVar11) {
      FUN_00a3fb10();
    }
    FUN_0044953d();
    if (piVar3 == (int *)0x0) {
      FUN_00a3fb10();
      iVar8 = 0;
    }
    else {
      iVar8 = *piVar3;
    }
    if (*(uint *)(iVar8 + 0x10) <= uVar11) {
      FUN_00a3fb10();
    }
    uVar11 = uVar11 + 8;
  }
  uVar11 = param_1[0x16];
  if ((uint)param_1[0x17] < uVar11) {
    FUN_00a3fb10(uVar7);
  }
  uVar7 = param_1[0x17];
  piVar3 = (int *)param_1[0x13];
  if (uVar7 < (uint)param_1[0x16]) {
    FUN_00a3fb10();
  }
  piVar5 = (int *)param_1[0x13];
  while( true ) {
    if ((piVar3 == (int *)0x0) || (piVar3 != piVar5)) {
      FUN_00a3fb10();
    }
    if (uVar11 == uVar7) break;
    if (piVar3 == (int *)0x0) {
      FUN_00a3fb10();
      iVar8 = 0;
    }
    else {
      iVar8 = *piVar3;
    }
    if (*(uint *)(iVar8 + 0x10) <= uVar11) {
      FUN_00a3fb10();
    }
    FUN_00829f80();
    if (piVar3 == (int *)0x0) {
      FUN_00a3fb10();
      iVar8 = 0;
    }
    else {
      iVar8 = *piVar3;
    }
    if (*(uint *)(iVar8 + 0x10) <= uVar11) {
      FUN_00a3fb10();
    }
    uVar11 = uVar11 + 8;
  }
  pvVar9 = (HANDLE)param_1[0x19];
  local_4._0_1_ = 3;
  if ((pvVar9 != (HANDLE)0x0) && (pvVar9 != (HANDLE)0xffffffff)) {
    CloseHandle(pvVar9);
  }
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_0043993e();
  if (param_1[0x10] == 0) {
    param_1[0x10] = 0;
    param_1[0x11] = 0;
    param_1[0x12] = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xd]);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[0x10]);
}



char * __thiscall FUN_0082a270(int *param_1_00,char *param_1)

{
  uint uVar1;
  DWORD DVar2;
  uint uVar3;
  int iVar4;
  char cVar5;
  longlong lVar6;
  uint local_10;
  int local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  if ((param_1_00[2] & param_1_00[3]) == 0xffffffff) {
    *param_1 = '\x01';
    *(undefined4 *)(param_1 + 4) = 0xfffffffe;
    return param_1;
  }
  if (*(char *)(param_1_00 + 4) == '\0') {
    FUN_0043b835(&local_10,FUN_0043bca3);
    if ((param_1_00[7] <= local_c) &&
       ((param_1_00[7] < local_c || ((uint)param_1_00[6] <= local_10)))) {
      *param_1 = '\0';
      *(undefined4 *)(param_1 + 4) = 0;
      return param_1;
    }
    FUN_00829ab0(&local_8,param_1_00 + 6,&local_10);
    lVar6 = __alldiv(local_8,local_4,1000,0);
    FUN_00829380(lVar6 + 1);
    return param_1;
  }
  DVar2 = GetTickCount();
  uVar3 = DVar2 - *param_1_00;
  uVar1 = param_1_00[2];
  if ((param_1_00[3] == 0) && (uVar1 <= uVar3)) {
    iVar4 = 0;
  }
  else {
    iVar4 = uVar1 - uVar3;
    if ((param_1_00[3] != (uint)(uVar1 < uVar3)) || (iVar4 == -1)) {
      cVar5 = '\x01';
      goto LAB_0082a2d5;
    }
  }
  cVar5 = '\0';
LAB_0082a2d5:
  *param_1 = cVar5;
  if (cVar5 != '\0') {
    iVar4 = -2;
  }
  *(int *)(param_1 + 4) = iVar4;
  return param_1;
}



int FUN_0082a380(int *param_1)

{
  uint uVar1;
  WORD WVar2;
  DWORD DVar3;
  BOOL BVar4;
  int iVar5;
  int iVar6;
  int *piVar7;
  undefined8 uVar8;
  undefined4 local_20;
  undefined4 local_1c;
  _FILETIME local_18;
  SYSTEMTIME local_10;
  
  piVar7 = param_1;
  local_18.dwLowDateTime = 0;
  local_18.dwHighDateTime = 0;
  if (*(char *)(param_1 + 4) == '\0') {
    piVar7 = param_1 + 6;
    local_10.wYear = 0;
    local_10.wMonth = 0;
    local_10.wDayOfWeek = 0;
    local_10.wDay = 0;
    local_10.wHour = 0;
    local_10.wMinute = 0;
    local_10.wSecond = 0;
    local_10.wMilliseconds = 0;
    FUN_00496e91(&param_1);
    FUN_00496db3(&local_20,param_1);
    local_10.wYear = (WORD)local_20;
    FUN_00496e91(&param_1);
    FUN_00496db3(&local_20,param_1);
    local_10.wMonth = local_20._2_2_;
    FUN_00496e91(&param_1);
    FUN_00496db3(&local_20,param_1);
    local_10.wDay = (WORD)local_1c;
    FUN_00496cf1(&local_20,piVar7);
    WVar2 = __alldiv(local_20,local_1c,3600000000,0);
    local_10.wHour = WVar2;
    FUN_00496cf1(&local_20,piVar7);
    uVar8 = __alldiv(local_20,local_1c,60000000,0);
    WVar2 = __allrem(uVar8,0x3c,0);
    local_10.wMinute = WVar2;
    FUN_00496cf1(&local_20,piVar7);
    uVar8 = __alldiv(local_20,local_1c,1000000,0);
    WVar2 = __allrem(uVar8,0x3c,0);
    local_10.wSecond = WVar2;
    BVar4 = SystemTimeToFileTime(&local_10,&local_18);
    if (BVar4 == 0) {
      return 0;
    }
    FUN_00496cf1(&local_20,piVar7);
    uVar8 = __allrem(local_20,local_1c,1000000,0);
    iVar5 = __allmul(uVar8,10,0);
    return local_18.dwLowDateTime + iVar5;
  }
  DVar3 = GetTickCount();
  iVar5 = piVar7[2] - (DVar3 - *piVar7);
  uVar1 = (uint)((uint)piVar7[2] < DVar3 - *piVar7);
  iVar6 = piVar7[3] - uVar1;
  if ((iVar6 >= 0) &&
     ((iVar6 != 0 && (SBORROW4(piVar7[3],uVar1) != false) == iVar6 < 0 || (iVar5 != 0)))) {
    iVar5 = __allmul(iVar5,iVar6,0xffffd8f0,0xffffffff);
    return iVar5;
  }
  return local_18.dwLowDateTime;
}



undefined4
FUN_0082a570(HANDLE param_1,undefined4 param_2,undefined4 param_3,uint param_4,uint param_5,
            char param_6)

{
  code *pcVar1;
  LPVOID pvVar2;
  HANDLE hTimer;
  BOOL BVar3;
  undefined4 *puVar4;
  uint *puVar5;
  DWORD DVar6;
  undefined4 uVar7;
  int iVar8;
  uint uVar9;
  uint uVar10;
  DWORD nCount;
  DWORD dwMilliseconds;
  undefined4 *puVar11;
  bool bVar12;
  HANDLE local_58;
  DWORD local_54;
  DWORD local_50;
  DWORD local_4c;
  LARGE_INTEGER local_48;
  undefined auStack_40 [8];
  HANDLE local_38 [11];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3198;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_38[1] = (HANDLE)0x0;
  local_38[2] = (HANDLE)0x0;
  local_38[0] = (HANDLE)0x0;
  local_50 = 0xffffffff;
  local_4c = 0xffffffff;
  local_54 = 0xffffffff;
  if (param_1 != (HANDLE)0xffffffff) {
    local_50 = 0;
    local_38[0] = param_1;
  }
  uVar9 = (uint)(param_1 != (HANDLE)0xffffffff);
  uVar10 = uVar9;
  if ((DAT_0322eb2c != 0xffffffff) && (pvVar2 = TlsGetValue(DAT_0322eb2c), pvVar2 != (LPVOID)0x0)) {
    if (DAT_0322eb2c == 0xffffffff) {
      pvVar2 = (LPVOID)0x0;
    }
    else {
      pvVar2 = TlsGetValue(DAT_0322eb2c);
    }
    if (*(char *)((int)pvVar2 + 0x68) != '\0') {
      if (DAT_0322eb2c == 0xffffffff) {
        pvVar2 = (LPVOID)0x0;
      }
      else {
        pvVar2 = TlsGetValue(DAT_0322eb2c);
      }
      local_38[uVar9] = *(HANDLE *)((int)pvVar2 + 100);
      uVar10 = uVar9 + 1;
      local_4c = uVar9;
    }
  }
  local_58 = (HANDLE)0x0;
  local_4 = 0;
  nCount = uVar10;
  hTimer = (HANDLE)0x0;
  if ((param_4 & param_5) != 0xffffffff) {
    FUN_0082a270(&local_48);
    if ((uint)local_48.s.HighPart < 0x15) {
      if (param_6 == '\0') {
        puVar4 = (undefined4 *)FUN_007a2470(local_48.s.HighPart,0);
        puVar11 = &param_2;
        for (iVar8 = 8; hTimer = local_58, iVar8 != 0; iVar8 = iVar8 + -1) {
          *puVar11 = *puVar4;
          puVar4 = puVar4 + 1;
          puVar11 = puVar11 + 1;
        }
      }
    }
    else {
      hTimer = CreateWaitableTimerA((LPSECURITY_ATTRIBUTES)0x0,0,(LPCSTR)0x0);
      if (hTimer != (HANDLE)0x0) {
        local_48.QuadPart = (LONGLONG)FUN_0082a380(&param_2);
        BVar3 = SetWaitableTimer(hTimer,&local_48,0,(PTIMERAPCROUTINE)0x0,(LPVOID)0x0,0);
        if (BVar3 != 0) {
          local_38[uVar10] = hTimer;
          nCount = uVar10 + 1;
          local_54 = uVar10;
        }
      }
    }
  }
  local_48.s.LowPart = local_48.s.LowPart & 0xffffff00;
  dwMilliseconds = 0;
  do {
    if (local_54 == 0xffffffff) {
      puVar5 = (uint *)FUN_0082a270(auStack_40);
      local_48.s.LowPart = *puVar5;
      dwMilliseconds = puVar5[1];
    }
    if (nCount == 0) {
      Sleep(dwMilliseconds);
    }
    else {
      DVar6 = dwMilliseconds;
      if (local_54 != 0xffffffff) {
        DVar6 = 0xffffffff;
      }
      DVar6 = WaitForMultipleObjects(nCount,local_38,0,DVar6);
      if (DVar6 < nCount) {
        if (DVar6 == local_50) {
          local_4 = 0xffffffff;
          if ((hTimer != (HANDLE)0x0) && (hTimer != (HANDLE)0xffffffff)) {
            CloseHandle(hTimer);
          }
          ExceptionList = local_c;
          return 1;
        }
        if (DVar6 == local_4c) {
          if (DAT_0322eb2c == 0xffffffff) {
            pvVar2 = (LPVOID)0x0;
          }
          else {
            pvVar2 = TlsGetValue(DAT_0322eb2c);
          }
          ResetEvent(*(HANDLE *)((int)pvVar2 + 100));
          param_1 = (HANDLE)((uint)param_1 & 0xffffff00);
          __CxxThrowException_8(&param_1,&DAT_030e8e50);
          pcVar1 = (code *)swi(3);
          uVar7 = (*pcVar1)();
          return uVar7;
        }
        if (DVar6 == local_54) break;
      }
    }
    if (param_6 != '\0') {
      bVar12 = 0xfffffffd < param_4;
      param_4 = param_4 + 2;
      param_5 = (param_5 - 1) + (uint)bVar12;
    }
  } while (local_48.s.LowPart._0_1_ != '\0');
  local_4 = 0xffffffff;
  if ((hTimer != (HANDLE)0x0) && (hTimer != (HANDLE)0xffffffff)) {
    CloseHandle(hTimer);
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __fastcall FUN_0082a7e0(int *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  HANDLE pvVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 auStack_68 [4];
  undefined4 uStack_58;
  DWORD DVar6;
  undefined4 *local_34;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc31c8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00829950();
  local_4 = 0;
  if (local_34 != (undefined4 *)0x0) {
    uVar1 = local_34[2];
    puVar2 = (undefined4 *)FUN_00453c86();
    puVar5 = auStack_68;
    for (iVar4 = 8; iVar4 != 0; iVar4 = iVar4 + -1) {
      *puVar5 = *puVar2;
      puVar2 = puVar2 + 1;
      puVar5 = puVar5 + 1;
    }
    FUN_0082a570(uVar1);
    puVar2 = (undefined4 *)*param_1;
    *param_1 = 0;
    if (puVar2 != (undefined4 *)0x0) {
      LOCK();
      iVar4 = puVar2[1] + -1;
      puVar2[1] = iVar4;
      UNLOCK();
      if (iVar4 == 0) {
        (**(code **)*puVar2)();
        DVar6 = 0;
        pvVar3 = GetProcessHeap();
        uStack_58 = 0x82a889;
        HeapFree(pvVar3,DVar6,puVar2);
      }
    }
    local_4 = 0xffffffff;
    LOCK();
    iVar4 = local_34[1] + -1;
    local_34[1] = iVar4;
    UNLOCK();
    if (iVar4 == 0) {
      (**(code **)*local_34)();
      DVar6 = 0;
      pvVar3 = GetProcessHeap();
      uStack_58 = 0x82a8b0;
      HeapFree(pvVar3,DVar6,local_34);
    }
    ExceptionList = local_c;
    return 1;
  }
  ExceptionList = local_c;
  return 0;
}



void tls_callback_0(undefined4 param_1,int param_2)

{
  if (param_2 == 3) {
    thunk_FUN_00829bf0();
  }
  return;
}



undefined4 FUN_0082a930(undefined4 param_1,int param_2)

{
  if (param_2 == 0) {
    FUN_008293f0();
  }
  else if (param_2 == 3) {
    thunk_FUN_00829bf0();
    return 1;
  }
  return 1;
}



char * __fastcall FUN_0082a960(int param_1)

{
  char *pcVar1;
  
  pcVar1 = "unknown exception code";
  switch(*(undefined4 *)(param_1 + 0xc)) {
  case 0:
    return "attempt to encode a value > 6 bits";
  case 1:
    return "attempt to decode a value not in base64 char set";
  case 2:
    return "invalid xml escape_sequence";
  case 3:
    return "cannot invoke iterator comparison now";
  case 4:
    pcVar1 = "invalid multbyte/wide char conversion";
  }
  return pcVar1;
}



void __thiscall exception::~exception(exception *this)

{
  *(undefined ***)this = std::exception::vftable;
  if (*(int *)(this + 8) != 0) {
    _free(*(void **)(this + 4));
  }
  return;
}



void __thiscall FUN_0082a9c0(int param_1_00,undefined *param_1)

{
  if (param_1_00 != -9) {
    *param_1 = *(undefined *)(*(int *)(param_1_00 + 0x30) + 0x1cc);
    return;
  }
  *param_1 = *(undefined *)(iRam00000030 + 0x1cc);
  return;
}



void __thiscall FUN_0082a9f0(int param_1_00,undefined2 *param_1)

{
  if (param_1_00 != -9) {
    *param_1 = *(undefined2 *)(*(int *)(param_1_00 + 0x30) + 0x1c0);
    return;
  }
  *param_1 = *(undefined2 *)(iRam00000030 + 0x1c0);
  return;
}



void __thiscall FUN_0082aa30(int param_1_00,undefined4 *param_1)

{
  if (param_1_00 != -9) {
    *param_1 = *(undefined4 *)(*(int *)(param_1_00 + 0x30) + 0x1c8);
    return;
  }
  *param_1 = *(undefined4 *)(iRam00000030 + 0x1c8);
  return;
}



void __thiscall FUN_0082aa60(int param_1_00,undefined4 *param_1)

{
  if (param_1_00 != -9) {
    *param_1 = *(undefined4 *)(*(int *)(param_1_00 + 0x30) + 0x1c4);
    return;
  }
  *param_1 = *(undefined4 *)(iRam00000030 + 0x1c4);
  return;
}



// public: static bool __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::naked_xml_iarchive>
// >::is_destroyed(void)

bool __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_>
::is_destroyed(void)

{
                    // 0x42aa90  1488
                    // ?is_destroyed@?$singleton@V?$map@Vnaked_xml_iarchive@archive@boost@@@extra_detail@detail@archive@boost@@@serialization@boost@@SA_NXZ
  return (bool)DAT_032bc964;
}



// public: static bool __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::xml_iarchive>
// >::is_destroyed(void)

bool __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>::
is_destroyed(void)

{
                    // 0x42aaa0  1489
                    // ?is_destroyed@?$singleton@V?$map@Vxml_iarchive@archive@boost@@@extra_detail@detail@archive@boost@@@serialization@boost@@SA_NXZ
  return (bool)DAT_032bc965;
}



int * __thiscall FUN_0082aab0(int *param_1_00,int *param_1,int param_2)

{
  exception *peVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc320c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    *param_1_00 = (int)&DAT_00d246cc;
    param_1_00[5] = (int)&PTR_00d246c4;
    if (param_1 == (int *)0x0) {
      peVar1 = (exception *)0x0;
    }
    else {
      peVar1 = (exception *)(*(int *)(*param_1 + 4) + (int)param_1);
    }
    std::exception::exception((exception *)(param_1_00 + 2),peVar1);
    if (param_1 == (int *)0x0) {
      param_1 = (int *)0x0;
    }
    else {
      param_1 = (int *)(*(int *)(*param_1 + 8) + (int)param_1);
    }
    *(undefined ***)((int)param_1_00 + *(int *)(param_1_00[5] + 4) + 0x14) =
         boost::archive::archive_exception::vftable;
    *(undefined4 *)(*(int *)(param_1_00[5] + 4) + 0x10 + (int)param_1_00) = 0;
    piVar4 = param_1_00 + 6;
    piVar3 = param_1;
    for (iVar2 = 0x20; piVar3 = piVar3 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *piVar4 = *piVar3;
      piVar4 = piVar4 + 1;
    }
    param_1_00[0x26] = param_1[0x21];
  }
  *(undefined ***)((int)param_1_00 + *(int *)(*param_1_00 + 4)) =
       boost::archive::xml_archive_exception::vftable;
  *(undefined4 *)(*(int *)(*param_1_00 + 4) + -4 + (int)param_1_00) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_0082abc0(void)

{
  FUN_00833110();
  return;
}



void FUN_0082abe0(void)

{
  FUN_0082acb0();
  return;
}



exception * __thiscall FUN_0082abf0(exception *param_1_00,byte param_1)

{
  exception::~exception(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0082ac10(undefined4 *param_1)

{
  *param_1 = boost::archive::basic_xml_iarchive<class_boost::archive::xml_iarchive>::vftable;
  FUN_00832dd0();
  return;
}



void __fastcall FUN_0082ac20(int param_1)

{
  FUN_008330e0();
  exception::~exception((exception *)(param_1 + 8));
  return;
}



void FUN_0082ac40(undefined4 param_1)

{
  code *pcVar1;
  undefined local_9c [156];
  
  FUN_0082aab0(param_1,1);
  __CxxThrowException_8(local_9c,&DAT_030e9090);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0082ac70(exception *param_1)

{
  code *pcVar1;
  undefined **local_10 [3];
  undefined4 local_4;
  
  std::exception::exception((exception *)local_10,param_1);
  local_4 = *(undefined4 *)(param_1 + 0xc);
  local_10[0] = boost::archive::iterators::dataflow_exception::vftable;
  __CxxThrowException_8(local_10,&DAT_030e90e8);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



exception * __thiscall FUN_0082acb0(exception *param_1_00,byte param_1)

{
  FUN_008330e0();
  exception::~exception(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00 + -8);
  }
  return param_1_00 + -8;
}



void __thiscall FUN_0082ace0(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc323b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff58;
  ExceptionList = &local_c;
  if (param_1 != 0) {
    iVar4 = param_1_00;
    if (param_1_00 == -9) {
      iVar4 = 0;
    }
    cVar1 = FUN_0083a1a0(*(undefined4 *)(iVar4 + 0x10));
    if (cVar1 != '\x01') {
      uVar3 = FUN_00832e60(8,0,0,1);
      local_4 = 0;
      FUN_0043fc7f(uVar3,uVar2);
    }
    *(int *)(param_1_00 + 0xc) = *(int *)(param_1_00 + 0xc) + 1;
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0082ad80(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined local_a8 [156];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc326b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)local_a8;
  ExceptionList = &local_c;
  cVar1 = FUN_0083a1f0(*(undefined4 *)(param_1_00 + 0x10),param_1);
  if (cVar1 == '\0') {
    uVar3 = FUN_0083d040(0,0,0,1);
    local_4 = 0;
    FUN_0082ac40(uVar3,uVar2);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0082ae00(int param_1_00,void **param_1)

{
  int iVar1;
  void *_Dst;
  uint uVar2;
  undefined4 uVar3;
  void *_Src;
  size_t extraout_ECX;
  uint _Size;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc329b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff54;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1_00 + 0x30);
  _Size = *(uint *)(iVar1 + 0x1e4);
  if (0x7f < _Size) {
    uVar3 = FUN_00832e60(9,0,0,1);
    local_4 = 0;
    FUN_0043fc7f(uVar3,uVar2);
    _Size = extraout_ECX;
  }
  _Dst = *param_1;
  if (*(uint *)(iVar1 + 0x1e8) < 0x10) {
    _Src = (void *)(iVar1 + 0x1d4);
  }
  else {
    _Src = *(void **)(iVar1 + 0x1d4);
  }
  _memcpy(_Dst,_Src,_Size);
  *(undefined *)((int)_Dst + *(int *)(iVar1 + 0x1e4)) = 0;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0082aeb0(int param_1)

{
  if (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 4))(1);
  }
  return;
}



void __fastcall FUN_0082aec0(int param_1)

{
  void *pvVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  pvVar1 = ExceptionList;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc32d3;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  if (0xf < *(uint *)(param_1 + 0x60)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x4c),uVar2);
  }
  *(undefined4 *)(param_1 + 0x60) = 0xf;
  *(undefined4 *)(param_1 + 0x5c) = 0;
  *(undefined *)(param_1 + 0x4c) = 0;
  if (0xf < *(uint *)(param_1 + 0x34)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x20),uVar2);
  }
  *(undefined4 *)(param_1 + 0x34) = 0xf;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined *)(param_1 + 0x20) = 0;
  if (0xf < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4),uVar2);
  }
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 4) = 0;
  ExceptionList = pvVar1;
  return;
}



undefined4
FUN_0082af60(undefined4 param_1,char *param_2,undefined4 param_3,char *param_4,int param_5)

{
  if (param_2 != param_4) {
    param_5 = param_5 - (int)param_2;
    do {
      if (*param_2 != param_2[param_5]) {
        return 0;
      }
      param_2 = param_2 + 1;
    } while (param_2 != param_4);
  }
  return 1;
}



void __thiscall FUN_0082af90(int param_1_00,int param_1)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  undefined local_150 [8];
  undefined local_148 [316];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3306;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xfffffea4;
  ExceptionList = &local_c;
  if (param_1 != 0) {
    iVar4 = param_1_00;
    if (param_1_00 == -9) {
      iVar4 = 0;
    }
    cVar2 = FUN_0083a1d0(*(undefined4 *)(iVar4 + 0x10));
    if (cVar2 != '\x01') {
      uVar5 = FUN_00832e60(8,0,0,1);
      local_4 = 0;
      FUN_0043fc7f(uVar5,uVar3);
    }
    piVar1 = (int *)(param_1_00 + 0xc);
    *piVar1 = *piVar1 + -1;
    if ((*piVar1 != 0) && (uVar3 = FUN_00831460(), (uVar3 & 4) == 0)) {
      if (param_1_00 == -9) {
        param_1_00 = 0;
      }
      if (*(char *)(*(int *)(*(int *)(param_1_00 + 0x30) + 0x19c) + param_1) == '\0') {
        puVar6 = (undefined4 *)FUN_0042a130(local_148);
        puVar7 = (undefined4 *)FUN_0042a0d0(local_150);
        cVar2 = FUN_0082af60(*puVar7,puVar7[1],*puVar6,puVar6[1],param_1);
        if (cVar2 != '\0') {
          ExceptionList = local_c;
          return;
        }
      }
      uVar5 = FUN_0083d040(1,param_1,0,1);
      local_4 = 1;
      FUN_0082ac40(uVar5);
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0082b0f0(int param_1)

{
  int *piVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc35ab;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0x30;
  FUN_0082aec0(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  piVar1 = *(int **)(param_1 + 0x184);
  local_4._0_1_ = 0x2f;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  piVar1 = *(int **)(param_1 + 0x17c);
  local_4._0_1_ = 0x2e;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  piVar1 = *(int **)(param_1 + 0x174);
  local_4._0_1_ = 0x2d;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  piVar1 = *(int **)(param_1 + 0x16c);
  local_4._0_1_ = 0x2c;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  piVar1 = *(int **)(param_1 + 0x164);
  local_4._0_1_ = 0x2b;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  piVar1 = *(int **)(param_1 + 0x15c);
  local_4._0_1_ = 0x2a;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  piVar1 = *(int **)(param_1 + 0x154);
  local_4._0_1_ = 0x29;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  piVar1 = *(int **)(param_1 + 0x14c);
  local_4._0_1_ = 0x28;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  piVar1 = *(int **)(param_1 + 0x144);
  local_4._0_1_ = 0x27;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  local_4._0_1_ = 0x26;
  if (*(undefined4 **)(param_1 + 0x13c) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x13c))(1);
  }
  local_4._0_1_ = 0x25;
  if (*(undefined4 **)(param_1 + 0x134) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x134))(1);
  }
  local_4._0_1_ = 0x24;
  if (*(undefined4 **)(param_1 + 300) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 300))(1);
  }
  local_4._0_1_ = 0x23;
  if (*(undefined4 **)(param_1 + 0x124) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x124))(1);
  }
  local_4._0_1_ = 0x22;
  if (*(undefined4 **)(param_1 + 0x11c) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x11c))(1);
  }
  local_4._0_1_ = 0x21;
  if (*(undefined4 **)(param_1 + 0x114) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x114))(1);
  }
  local_4._0_1_ = 0x20;
  if (*(undefined4 **)(param_1 + 0x10c) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x10c))(1);
  }
  local_4._0_1_ = 0x1f;
  if (*(undefined4 **)(param_1 + 0x104) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x104))(1);
  }
  local_4._0_1_ = 0x1e;
  if (*(undefined4 **)(param_1 + 0xfc) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xfc))(1);
  }
  local_4._0_1_ = 0x1d;
  if (*(undefined4 **)(param_1 + 0xf4) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xf4))(1);
  }
  local_4._0_1_ = 0x1c;
  if (*(undefined4 **)(param_1 + 0xec) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xec))(1);
  }
  local_4._0_1_ = 0x1b;
  if (*(undefined4 **)(param_1 + 0xe4) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xe4))(1);
  }
  local_4._0_1_ = 0x1a;
  if (*(undefined4 **)(param_1 + 0xdc) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xdc))(1);
  }
  local_4._0_1_ = 0x19;
  if (*(undefined4 **)(param_1 + 0xd4) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xd4))(1);
  }
  local_4._0_1_ = 0x18;
  if (*(undefined4 **)(param_1 + 0xcc) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xcc))(1);
  }
  local_4._0_1_ = 0x17;
  if (*(undefined4 **)(param_1 + 0xc4) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xc4))(1);
  }
  local_4._0_1_ = 0x16;
  if (*(undefined4 **)(param_1 + 0xbc) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xbc))(1);
  }
  local_4._0_1_ = 0x15;
  if (*(undefined4 **)(param_1 + 0xb4) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xb4))(1);
  }
  local_4._0_1_ = 0x14;
  if (*(undefined4 **)(param_1 + 0xac) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xac))(1);
  }
  local_4._0_1_ = 0x13;
  if (*(undefined4 **)(param_1 + 0xa4) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xa4))(1);
  }
  local_4._0_1_ = 0x12;
  if (*(undefined4 **)(param_1 + 0x9c) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x9c))(1);
  }
  local_4._0_1_ = 0x11;
  if (*(undefined4 **)(param_1 + 0x94) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x94))(1);
  }
  local_4._0_1_ = 0x10;
  if (*(undefined4 **)(param_1 + 0x8c) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x8c))(1);
  }
  local_4._0_1_ = 0xf;
  if (*(undefined4 **)(param_1 + 0x84) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x84))(1);
  }
  local_4._0_1_ = 0xe;
  if (*(undefined4 **)(param_1 + 0x7c) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x7c))(1);
  }
  local_4._0_1_ = 0xd;
  if (*(undefined4 **)(param_1 + 0x74) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x74))(1);
  }
  local_4._0_1_ = 0xc;
  if (*(undefined4 **)(param_1 + 0x6c) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x6c))(1);
  }
  local_4._0_1_ = 0xb;
  if (*(undefined4 **)(param_1 + 100) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 100))(1);
  }
  local_4._0_1_ = 10;
  if (*(undefined4 **)(param_1 + 0x5c) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x5c))(1);
  }
  local_4._0_1_ = 9;
  if (*(undefined4 **)(param_1 + 0x54) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x54))(1);
  }
  local_4._0_1_ = 8;
  if (*(undefined4 **)(param_1 + 0x4c) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x4c))(1);
  }
  local_4._0_1_ = 7;
  if (*(undefined4 **)(param_1 + 0x44) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x44))(1);
  }
  local_4._0_1_ = 6;
  if (*(undefined4 **)(param_1 + 0x3c) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x3c))(1);
  }
  local_4._0_1_ = 5;
  if (*(undefined4 **)(param_1 + 0x34) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x34))(1);
  }
  local_4._0_1_ = 4;
  if (*(undefined4 **)(param_1 + 0x2c) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x2c))(1);
  }
  local_4._0_1_ = 3;
  if (*(undefined4 **)(param_1 + 0x24) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x24))(1);
  }
  local_4._0_1_ = 2;
  if (*(undefined4 **)(param_1 + 0x1c) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x1c))(1);
  }
  local_4._0_1_ = 1;
  if (*(undefined4 **)(param_1 + 0x14) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x14))(1);
  }
  local_4 = (uint)local_4._1_3_ << 8;
  if (*(undefined4 **)(param_1 + 0xc) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0xc))(1);
  }
  local_4 = 0xffffffff;
  if (*(undefined4 **)(param_1 + 4) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 4))(1);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0082b6b0(int param_1)

{
  undefined4 ***pppuVar1;
  code *pcVar2;
  char cVar3;
  uint uVar4;
  undefined4 uVar5;
  int iVar6;
  undefined4 ***_SrcCh;
  undefined4 local_dc;
  undefined **local_d8 [3];
  undefined4 local_cc;
  undefined local_2c [4];
  undefined4 ***local_28 [4];
  int local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc35ee;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_dc;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff18;
  ExceptionList = &local_c;
  local_14 = 0xf;
  local_18 = 0;
  local_28[0] = (undefined4 ***)((uint)local_28[0] & 0xffffff00);
  local_4 = 0;
  cVar3 = FUN_0083a1f0(*(undefined4 *)(param_1 + 0x10),local_2c);
  if (cVar3 == '\0') {
    uVar5 = FUN_0083d040(0,0,0,1);
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_0082ac40(uVar5,uVar4);
  }
  FID_conflict_erase(0,0xffffffff);
  _SrcCh = local_28[0];
  if (local_14 < 0x10) {
    _SrcCh = local_28;
  }
  pppuVar1 = (undefined4 ***)(local_18 + (int)_SrcCh);
  for (; _SrcCh < pppuVar1; _SrcCh = (undefined4 ***)((int)_SrcCh + iVar6)) {
    iVar6 = _mbtowc((wchar_t *)&local_dc,(char *)_SrcCh,(int)pppuVar1 - (int)_SrcCh);
    if (iVar6 < 1) {
      FUN_00a3f1a9();
      local_d8[0] = boost::archive::iterators::dataflow_exception::vftable;
      local_cc = 4;
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_0082ac70(local_d8);
      pcVar2 = (code *)swi(3);
      (*pcVar2)();
      return;
    }
    FID_conflict_append(1,local_dc);
  }
  if (local_14 < 0x10) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_28[0]);
}



undefined4 * __thiscall FUN_0082b820(undefined4 *param_1_00,undefined4 param_1,uint param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined2 extraout_var;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bc363e;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  FUN_0082e550(param_1,(byte)(param_2 >> 1) & 1);
  local_8 = 0;
  FUN_00832d60(param_2);
  param_1_00[3] = 0;
  local_8._0_1_ = 1;
  *param_1_00 = boost::archive::xml_iarchive_impl<class_boost::archive::xml_iarchive>::vftable;
  pvVar1 = operator_new(0x1ec);
  local_8._0_1_ = 2;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_0083bd70();
  }
  param_1_00[0xc] = uVar2;
  if ((param_2 & 1) == 0) {
    local_8 = CONCAT31(local_8._1_3_,3);
    FUN_0083a250(param_1_00[4]);
    FUN_00831440(CONCAT22(extraout_var,*(undefined2 *)(param_1_00[0xc] + 0x1c8)));
  }
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0082b8fd(void)

{
  int iVar1;
  code *pcVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(*(int *)(unaff_EBP + -0x14) + 0x30);
  if (iVar1 != 0) {
    FUN_0082b0f0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



void __fastcall FUN_0082b930(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bc3673;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1 = boost::archive::xml_iarchive_impl<class_boost::archive::xml_iarchive>::vftable;
  local_8 = 1;
  uVar2 = FUN_00831460();
  if ((uVar2 & 1) == 0) {
    local_8 = CONCAT31(local_8._1_3_,2);
    FUN_0083a3e0(param_1[4]);
    local_8 = 1;
    FUN_0082b99c();
    return;
  }
  iVar1 = param_1[0xc];
  if (iVar1 != 0) {
    FUN_0082b0f0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  local_8 = (uint)local_8._1_3_ << 8;
  *param_1 = boost::archive::basic_xml_iarchive<class_boost::archive::xml_iarchive>::vftable;
  FUN_00832dd0();
  local_8 = 0xffffffff;
  FUN_008334b0();
  ExceptionList = local_10;
  return;
}



undefined * Catch_All_0082b98c(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 1;
  return &DAT_0082b999;
}



void FUN_0082b99c(void)

{
  int iVar1;
  int unaff_EBP;
  undefined4 *unaff_ESI;
  
  iVar1 = unaff_ESI[0xc];
  if (iVar1 != 0) {
    FUN_0082b0f0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  *(undefined *)(unaff_EBP + -4) = 0;
  *unaff_ESI = boost::archive::basic_xml_iarchive<class_boost::archive::xml_iarchive>::vftable;
  FUN_00832dd0();
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_008334b0();
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



void ** __fastcall FUN_0082b9f0(void **param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3b18;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = param_1;
  }
  *param_1 = puVar2;
  local_4 = 0;
  pvVar3 = (void *)FUN_00830a90(uVar1);
  param_1[6] = pvVar3;
  *(undefined *)((int)pvVar3 + 0x11) = 1;
  *(void **)((int)param_1[6] + 4) = param_1[6];
  *(void **)param_1[6] = param_1[6];
  *(void **)((int)param_1[6] + 8) = param_1[6];
  param_1[7] = (void *)0x0;
  ExceptionList = local_c;
  return param_1;
}



// private: static class boost::archive::detail::extra_detail::map<class
// boost::archive::naked_xml_iarchive> & __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::naked_xml_iarchive>
// >::get_instance(void)

map<class_boost::archive::naked_xml_iarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_>
::get_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
                    // 0x42ba80  872
                    // ?get_instance@?$singleton@V?$map@Vnaked_xml_iarchive@archive@boost@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAV?$map@Vnaked_xml_iarchive@archive@boost@@@extra_detail@detail@archive@3@XZ
  puStack_8 = &LAB_00bc369e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    local_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c761a0);
  }
  ExceptionList = local_c;
  return (map<class_boost::archive::naked_xml_iarchive> *)
         &`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_>::get_instance(void)'
          ::`2'::t;
}



// private: static class boost::archive::detail::extra_detail::map<class
// boost::archive::xml_iarchive> & __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::xml_iarchive>
// >::get_instance(void)

map<class_boost::archive::xml_iarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>::
get_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
                    // 0x42bb00  873
                    // ?get_instance@?$singleton@V?$map@Vxml_iarchive@archive@boost@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAV?$map@Vxml_iarchive@archive@boost@@@extra_detail@detail@archive@3@XZ
  puStack_8 = &LAB_00bc36ce;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    local_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c76180);
  }
  ExceptionList = local_c;
  return (map<class_boost::archive::xml_iarchive> *)
         &`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>::get_instance(void)'
          ::`2'::t;
}



// public: static class boost::archive::detail::extra_detail::map<class
// boost::archive::naked_xml_iarchive> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::naked_xml_iarchive>
// >::get_const_instance(void)

map<class_boost::archive::naked_xml_iarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_>
::get_const_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bc369e;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  if ((`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    uStack_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c761a0);
  }
  ExceptionList = pvStack_c;
  return (map<class_boost::archive::naked_xml_iarchive> *)
         &`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_xml_iarchive>_>::get_instance(void)'
          ::`2'::t;
}



// public: static class boost::archive::detail::extra_detail::map<class
// boost::archive::xml_iarchive> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::xml_iarchive>
// >::get_const_instance(void)

map<class_boost::archive::xml_iarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>::
get_const_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bc36ce;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  if ((`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    uStack_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c76180);
  }
  ExceptionList = pvStack_c;
  return (map<class_boost::archive::xml_iarchive> *)
         &`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_0082bba0(undefined4 param_1)

{
  boost::serialization::
  singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>::
  get_instance();
  FUN_0083d430(param_1);
  return;
}



void FUN_0082bbc0(undefined4 param_1)

{
  if (DAT_032bc965 == '\0') {
    boost::serialization::
    singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>
    ::get_instance();
    FUN_0083d2b0(param_1);
  }
  return;
}



void FUN_0082bbe0(undefined4 param_1)

{
  boost::serialization::
  singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_iarchive>_>::
  get_instance();
  FUN_0083d230(param_1);
  return;
}



void __fastcall FUN_0082bc00(int *param_1)

{
  char cVar1;
  int iVar2;
  int **ppiVar3;
  int **ppiVar4;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  iVar2 = param_1[1];
  if (*(char *)(iVar2 + 0x15) == '\0') {
    ppiVar3 = *(int ***)(iVar2 + 8);
    if (*(char *)((int)ppiVar3 + 0x15) != '\0') {
      iVar2 = *(int *)(iVar2 + 4);
      cVar1 = *(char *)(iVar2 + 0x15);
      while ((cVar1 == '\0' && (param_1[1] == *(int *)(iVar2 + 8)))) {
        param_1[1] = iVar2;
        iVar2 = *(int *)(iVar2 + 4);
        cVar1 = *(char *)(iVar2 + 0x15);
      }
      param_1[1] = iVar2;
      return;
    }
    cVar1 = *(char *)((int)*ppiVar3 + 0x15);
    ppiVar4 = (int **)*ppiVar3;
    while (cVar1 == '\0') {
      cVar1 = *(char *)((int)*ppiVar4 + 0x15);
      ppiVar3 = ppiVar4;
      ppiVar4 = (int **)*ppiVar4;
    }
    param_1[1] = (int)ppiVar3;
    return;
  }
  FUN_00a3fb10();
  return;
}



int __thiscall FUN_0082bc70(int param_1_00,type_info *param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator==
                    (param_1,(type_info *)
                             &boost::archive::detail::shared_ptr_helper::null_deleter::
                              RTTI_Type_Descriptor);
  if (bVar1) {
    return param_1_00 + 0x10;
  }
  return 0;
}



int __fastcall FUN_0082bca0(int param_1)

{
  return param_1 + 0x10;
}



void __fastcall FUN_0082bcb0(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)param_1[1];
  if (*(char *)((int)piVar2 + 0x15) == '\0') {
    iVar3 = *piVar2;
    if (*(char *)(iVar3 + 0x15) == '\0') {
      cVar1 = *(char *)(*(int *)(iVar3 + 8) + 0x15);
      iVar4 = *(int *)(iVar3 + 8);
      while (cVar1 == '\0') {
        cVar1 = *(char *)(*(int *)(iVar4 + 8) + 0x15);
        iVar3 = iVar4;
        iVar4 = *(int *)(iVar4 + 8);
      }
      param_1[1] = iVar3;
      return;
    }
    piVar2 = (int *)piVar2[1];
    cVar1 = *(char *)((int)piVar2 + 0x15);
    while ((cVar1 == '\0' && (param_1[1] == *piVar2))) {
      param_1[1] = (int)piVar2;
      piVar2 = (int *)piVar2[1];
      cVar1 = *(char *)((int)piVar2 + 0x15);
    }
    if (*(char *)(param_1[1] + 0x15) != '\0') {
      FUN_00a3fb10();
      return;
    }
    param_1[1] = (int)piVar2;
  }
  else {
    iVar3 = piVar2[2];
    param_1[1] = iVar3;
    if (*(char *)(iVar3 + 0x15) != '\0') {
      FUN_00a3fb10();
      return;
    }
  }
  return;
}



undefined4 * __thiscall FUN_0082bd40(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bc36f0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x14);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::
              sp_counted_impl_pd<void_const*,struct_boost::archive::detail::shared_ptr_helper::null_deleter>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_0082bdb9(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



int * __fastcall FUN_0082bdd0(int **param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *param_1;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *param_1;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_0082bdea;
    }
  }
  iVar2 = *piVar1;
LAB_0082bdea:
  if (param_1[1] == *(int **)(iVar2 + 0x18)) {
    FUN_00a3fb10();
  }
  return param_1[1] + 3;
}



void FUN_0082be00(void)

{
  void *pvVar1;
  
  pvVar1 = operator_new(0x10);
  if (pvVar1 != (void *)0x0) {
    *(void **)pvVar1 = pvVar1;
  }
  if ((void **)((int)pvVar1 + 4) != (void **)0x0) {
    *(void **)((int)pvVar1 + 4) = pvVar1;
  }
  return;
}



void FUN_0082be20(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 5) = 1;
  *(undefined *)((int)puVar1 + 0x15) = 0;
  return;
}



void FUN_0082be60(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  
  *param_1 = *param_2;
  iVar1 = param_2[1];
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void FUN_0082be90(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc3721;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = *param_2;
    iVar1 = param_2[1];
    param_1[1] = iVar1;
    if (iVar1 != 0) {
      EnterCriticalSection((LPCRITICAL_SECTION)(iVar1 + 0xc));
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
      LeaveCriticalSection((LPCRITICAL_SECTION)(iVar1 + 0xc));
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_0082bf10(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,
                 undefined param_5)

{
  int iVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0x18);
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = param_1;
    puVar2[2] = param_3;
    puVar2[1] = param_2;
    puVar2[3] = *param_4;
    iVar1 = param_4[1];
    puVar2[4] = iVar1;
    if (iVar1 != 0) {
      LOCK();
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
      UNLOCK();
    }
    *(undefined *)(puVar2 + 5) = param_5;
    *(undefined *)((int)puVar2 + 0x15) = 0;
  }
  return;
}



undefined4 * FUN_0082bf60(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bc3740;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  puVar1 = (undefined4 *)operator_new(0x10);
  local_8 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = param_2;
  }
  FUN_0082be90(puVar1 + 2,param_3);
  ExceptionList = local_10;
  return puVar1;
}



void Catch_All_0082bfdc(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void __thiscall FUN_0082c000(int *param_1_00,int *param_1,uint *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined4 *puVar5;
  int local_10;
  undefined4 *local_c;
  int local_8;
  int local_4;
  
  puVar5 = (undefined4 *)param_1_00[6];
  if (*(char *)((int)(undefined4 *)puVar5[1] + 0x15) == '\0') {
    puVar2 = (undefined4 *)puVar5[1];
    do {
      if ((uint)puVar2[3] < *param_2) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar5 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x15) == '\0');
  }
  puVar2 = (undefined4 *)param_1_00[6];
  local_c = puVar5;
  local_10 = *param_1_00;
  if (*param_1_00 == 0) {
    FUN_00a3fb10();
  }
  if ((puVar5 == puVar2) || (*param_2 < (uint)puVar5[3])) {
    local_4 = param_1_00[6];
    local_8 = *param_1_00;
    piVar4 = &local_8;
  }
  else {
    piVar4 = &local_10;
  }
  iVar1 = piVar4[1];
  *param_1 = *piVar4;
  param_1[1] = iVar1;
  return;
}



void __fastcall FUN_0082c090(undefined4 *param_1)

{
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void FUN_0082c0a0(int param_1)

{
  int *piVar1;
  int iVar2;
  
  if (*(char *)(param_1 + 0x15) == '\0') {
    FUN_0082c0a0(*(undefined4 *)(param_1 + 8));
    piVar1 = *(int **)(param_1 + 0x10);
    if (piVar1 != (int *)0x0) {
      LOCK();
      iVar2 = piVar1[1] + -1;
      piVar1[1] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 4))();
        LOCK();
        iVar2 = piVar1[2] + -1;
        piVar1[2] = iVar2;
        UNLOCK();
        if (iVar2 == 0) {
          (**(code **)(*piVar1 + 8))();
        }
      }
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void ** __fastcall FUN_0082c110(void **param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3b18;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = param_1;
  }
  *param_1 = puVar2;
  local_4 = 0;
  pvVar3 = (void *)FUN_0082be00(uVar1);
  param_1[5] = pvVar3;
  param_1[6] = (void *)0x0;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall
FUN_0082c180(undefined4 *param_1_00,undefined4 *param_1,char param_2,int **param_3,
            undefined4 param_4)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  int *piVar4;
  undefined4 uVar5;
  int *piVar6;
  int **ppiVar7;
  int *piVar8;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2db8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (0x1ffffffd < (uint)param_1_00[7]) {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"map/set<T> too long",0x13);
    local_4 = 0;
    FUN_00417ca0(local_50);
    local_34[0] = std::length_error::vftable;
    __CxxThrowException_8(local_34,&DAT_03115554);
  }
  piVar6 = (int *)FUN_0082bf10(param_1_00[6],param_3,param_1_00[6],param_4,0);
  param_1_00[7] = param_1_00[7] + 1;
  if (param_3 == (int **)param_1_00[6]) {
    ((int **)param_1_00[6])[1] = piVar6;
    *(int **)param_1_00[6] = piVar6;
    *(int **)(param_1_00[6] + 8) = piVar6;
  }
  else if (param_2 == '\0') {
    param_3[2] = piVar6;
    if (param_3 == *(int ***)(param_1_00[6] + 8)) {
      *(int **)(param_1_00[6] + 8) = piVar6;
    }
  }
  else {
    *param_3 = piVar6;
    if (param_3 == *(int ***)(int **)param_1_00[6]) {
      *(int **)param_1_00[6] = piVar6;
    }
  }
  cVar1 = *(char *)(piVar6[1] + 0x14);
  piVar8 = piVar6;
  while (cVar1 == '\0') {
    ppiVar7 = (int **)(piVar8 + 1);
    piVar2 = *ppiVar7;
    ppiVar3 = (int **)piVar2[1];
    if (piVar2 == *ppiVar3) {
      piVar4 = ppiVar3[2];
      if (*(char *)(piVar4 + 5) == '\0') {
        *(undefined *)(piVar2 + 5) = 1;
        *(undefined *)(piVar4 + 5) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x14) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)piVar2[2]) {
          FUN_00831780(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x14) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x14) = 0;
        FUN_008317d0(*(undefined4 *)(piVar8[1] + 4));
      }
    }
    else {
      piVar4 = *ppiVar3;
      if (*(char *)(piVar4 + 5) == '\0') {
        *(undefined *)(piVar2 + 5) = 1;
        *(undefined *)(piVar4 + 5) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x14) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)*piVar2) {
          FUN_008317d0(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x14) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x14) = 0;
        piVar2 = *(int **)(piVar8[1] + 4);
        piVar4 = (int *)piVar2[2];
        piVar2[2] = *piVar4;
        if (*(char *)(*piVar4 + 0x15) == '\0') {
          *(int **)(*piVar4 + 4) = piVar2;
        }
        piVar4[1] = piVar2[1];
        if (piVar2 == (int *)*(int *)(param_1_00[6] + 4)) {
          *(int **)(param_1_00[6] + 4) = piVar4;
        }
        else {
          ppiVar3 = (int **)piVar2[1];
          if (piVar2 == *ppiVar3) {
            *ppiVar3 = piVar4;
          }
          else {
            ppiVar3[2] = piVar4;
          }
        }
        *piVar4 = (int)piVar2;
        piVar2[1] = (int)piVar4;
      }
    }
    cVar1 = *(char *)(piVar8[1] + 0x14);
  }
  *(undefined *)(*(int *)(param_1_00[6] + 4) + 0x14) = 1;
  uVar5 = *param_1_00;
  param_1[1] = piVar6;
  *param_1 = uVar5;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0082c380(int param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *(int **)(param_1 + 0x14);
  iVar2 = *piVar1;
  *piVar1 = (int)piVar1;
  *(int *)(*(int *)(param_1 + 0x14) + 4) = *(int *)(param_1 + 0x14);
  *(undefined4 *)(param_1 + 0x18) = 0;
  if (iVar2 != *(int *)(param_1 + 0x14)) {
    if (*(int *)(iVar2 + 0xc) != 0) {
      FUN_007bcf4f();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  return;
}



void __thiscall FUN_0082c3d0(int param_1_00,uint param_1)

{
  int iVar1;
  int extraout_ECX;
  undefined8 uVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3768;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1_00 + 0x18);
  if (0x1fffffffU - iVar1 < param_1) {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"list<T> too long",0x10);
    local_4 = 0;
    FUN_00417ca0(local_50);
    local_34[0] = std::length_error::vftable;
    uVar2 = __CxxThrowException_8(local_34,&DAT_03115554);
    param_1 = (uint)((ulonglong)uVar2 >> 0x20);
    iVar1 = (int)uVar2;
    param_1_00 = extraout_ECX;
  }
  *(uint *)(param_1_00 + 0x18) = iVar1 + param_1;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0082c470(int param_1_00,undefined4 param_1,undefined4 param_2,int **param_3)

{
  undefined uVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  int **ppiVar5;
  int **ppiVar6;
  undefined4 uVar7;
  int **ppiVar8;
  int **ppiVar9;
  int **ppiVar10;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3ae8;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  ppiVar5 = param_3;
  if (*(char *)((int)param_3 + 0x15) != '\0') {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"invalid map/set<T> iterator",0x1b);
    local_4 = 0;
    FUN_00417ca0(local_50);
    local_34[0] = std::out_of_range::vftable;
    ppiVar5 = (int **)__CxxThrowException_8(local_34,&DAT_03115668);
  }
  FUN_0082bc00(uVar4);
  ppiVar8 = (int **)*ppiVar5;
  if (*(char *)((int)ppiVar8 + 0x15) == '\0') {
    ppiVar10 = ppiVar8;
    if (*(char *)((int)ppiVar5[2] + 0x15) == '\0') {
      ppiVar10 = (int **)param_3[2];
      if (param_3 != ppiVar5) {
        ppiVar8[1] = (int *)param_3;
        *param_3 = *ppiVar5;
        ppiVar8 = param_3;
        if (param_3 != (int **)ppiVar5[2]) {
          ppiVar8 = (int **)param_3[1];
          if (*(char *)((int)ppiVar10 + 0x15) == '\0') {
            ppiVar10[1] = (int *)ppiVar8;
          }
          *ppiVar8 = (int *)ppiVar10;
          param_3[2] = ppiVar5[2];
          ppiVar5[2][1] = (int)param_3;
        }
        if (*(int ***)(*(int *)(param_1_00 + 0x18) + 4) == ppiVar5) {
          *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = param_3;
        }
        else {
          ppiVar9 = (int **)ppiVar5[1];
          if ((int **)*ppiVar9 == ppiVar5) {
            *ppiVar9 = (int *)param_3;
          }
          else {
            ppiVar9[2] = (int *)param_3;
          }
        }
        param_3[1] = ppiVar5[1];
        ppiVar9 = ppiVar5 + 5;
        param_3 = param_3 + 5;
        if (param_3 != ppiVar9) {
          uVar1 = *(undefined *)param_3;
          *(undefined *)param_3 = *(undefined *)ppiVar9;
          *(undefined *)ppiVar9 = uVar1;
        }
        goto LAB_0082c5ed;
      }
    }
  }
  else {
    ppiVar10 = (int **)ppiVar5[2];
  }
  ppiVar8 = (int **)ppiVar5[1];
  if (*(char *)((int)ppiVar10 + 0x15) == '\0') {
    ppiVar10[1] = (int *)ppiVar8;
  }
  if (*(int ***)(*(int *)(param_1_00 + 0x18) + 4) == ppiVar5) {
    *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = ppiVar10;
  }
  else if ((int **)*ppiVar8 == ppiVar5) {
    *ppiVar8 = (int *)ppiVar10;
  }
  else {
    ppiVar8[2] = (int *)ppiVar10;
  }
  ppiVar9 = *(int ***)(param_1_00 + 0x18);
  if ((int **)*ppiVar9 == ppiVar5) {
    ppiVar6 = ppiVar8;
    if (*(char *)((int)ppiVar10 + 0x15) == '\0') {
      ppiVar6 = (int **)FUN_0082eb10(ppiVar10);
    }
    *ppiVar9 = (int *)ppiVar6;
  }
  iVar2 = *(int *)(param_1_00 + 0x18);
  if (*(int ***)(iVar2 + 8) == ppiVar5) {
    if (*(char *)((int)ppiVar10 + 0x15) == '\0') {
      uVar7 = FUN_00831480(ppiVar10);
      *(undefined4 *)(iVar2 + 8) = uVar7;
    }
    else {
      *(int ***)(iVar2 + 8) = ppiVar8;
    }
  }
LAB_0082c5ed:
  if (*(char *)(ppiVar5 + 5) == '\x01') {
    if (ppiVar10 != *(int ***)(*(int *)(param_1_00 + 0x18) + 4)) {
      do {
        ppiVar9 = ppiVar8;
        if (*(char *)(ppiVar10 + 5) != '\x01') break;
        ppiVar8 = (int **)*ppiVar9;
        if (ppiVar10 == ppiVar8) {
          ppiVar8 = (int **)ppiVar9[2];
          if (*(char *)(ppiVar8 + 5) == '\0') {
            *(undefined *)(ppiVar8 + 5) = 1;
            *(undefined *)(ppiVar9 + 5) = 0;
            FUN_00831780(ppiVar9);
            ppiVar8 = (int **)ppiVar9[2];
          }
          if (*(char *)((int)ppiVar8 + 0x15) == '\0') {
            if ((*(char *)(*ppiVar8 + 5) != '\x01') || (*(char *)(ppiVar8[2] + 5) != '\x01')) {
              if (*(char *)(ppiVar8[2] + 5) == '\x01') {
                *(undefined *)(*ppiVar8 + 5) = 1;
                *(undefined *)(ppiVar8 + 5) = 0;
                FUN_008317d0(ppiVar8);
                ppiVar8 = (int **)ppiVar9[2];
              }
              *(undefined *)(ppiVar8 + 5) = *(undefined *)(ppiVar9 + 5);
              *(undefined *)(ppiVar9 + 5) = 1;
              *(undefined *)(ppiVar8[2] + 5) = 1;
              FUN_00831780(ppiVar9);
              break;
            }
LAB_0082c6b0:
            *(undefined *)(ppiVar8 + 5) = 0;
          }
        }
        else {
          if (*(char *)(ppiVar8 + 5) == '\0') {
            *(undefined *)(ppiVar8 + 5) = 1;
            *(undefined *)(ppiVar9 + 5) = 0;
            FUN_008317d0(ppiVar9);
            ppiVar8 = (int **)*ppiVar9;
          }
          if (*(char *)((int)ppiVar8 + 0x15) == '\0') {
            if ((*(char *)(ppiVar8[2] + 5) == '\x01') && (*(char *)(*ppiVar8 + 5) == '\x01'))
            goto LAB_0082c6b0;
            if (*(char *)(*ppiVar8 + 5) == '\x01') {
              *(undefined *)(ppiVar8[2] + 5) = 1;
              *(undefined *)(ppiVar8 + 5) = 0;
              FUN_00831780(ppiVar8);
              ppiVar8 = (int **)*ppiVar9;
            }
            *(undefined *)(ppiVar8 + 5) = *(undefined *)(ppiVar9 + 5);
            *(undefined *)(ppiVar9 + 5) = 1;
            *(undefined *)(*ppiVar8 + 5) = 1;
            FUN_008317d0(ppiVar9);
            break;
          }
        }
        ppiVar8 = (int **)ppiVar9[1];
        ppiVar10 = ppiVar9;
      } while (ppiVar9 != *(int ***)(*(int *)(param_1_00 + 0x18) + 4));
    }
    *(undefined *)(ppiVar10 + 5) = 1;
  }
  piVar3 = ppiVar5[4];
  if (piVar3 != (int *)0x0) {
    LOCK();
    iVar2 = piVar3[1] + -1;
    piVar3[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar3 + 4))();
      LOCK();
      iVar2 = piVar3[2] + -1;
      piVar3[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar3 + 8))();
      }
    }
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(ppiVar5);
}



void __thiscall FUN_0082c770(int *param_1_00,int *param_1,uint *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  undefined4 *puVar4;
  bool bVar5;
  int local_8;
  undefined4 *local_4;
  
  puVar4 = (undefined4 *)param_1_00[6];
  bVar5 = true;
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x15) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      puVar4 = puVar2;
      bVar5 = *param_2 < (uint)puVar4[3];
      if (bVar5) {
        puVar2 = (undefined4 *)*puVar4;
      }
      else {
        puVar2 = (undefined4 *)puVar4[2];
      }
    } while (*(char *)((int)puVar2 + 0x15) == '\0');
  }
  local_8 = *param_1_00;
  local_4 = puVar4;
  if (bVar5) {
    puVar2 = *(undefined4 **)param_1_00[6];
    if (local_8 == 0) {
      FUN_00a3fb10();
    }
    if (puVar4 == puVar2) {
      piVar3 = (int *)FUN_0082c180(&local_8,1,puVar4,param_2);
      iVar1 = *piVar3;
      param_1[1] = piVar3[1];
      *(undefined *)(param_1 + 2) = 1;
      *param_1 = iVar1;
      return;
    }
    FUN_0082bcb0();
  }
  if ((uint)local_4[3] < *param_2) {
    piVar3 = (int *)FUN_0082c180(&local_8,bVar5,puVar4,param_2);
    iVar1 = *piVar3;
    param_1[1] = piVar3[1];
    *(undefined *)(param_1 + 2) = 1;
    *param_1 = iVar1;
    return;
  }
  param_1[1] = (int)local_4;
  *(undefined *)(param_1 + 2) = 0;
  *param_1 = local_8;
  return;
}



void __thiscall
FUN_0082c860(int *param_1_00,int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  undefined local_8 [8];
  
  iVar1 = *(int *)param_1_00[6];
  if ((param_2 == 0) || (param_2 != *param_1_00)) {
    FUN_00a3fb10();
  }
  if (param_3 == iVar1) {
    iVar1 = param_1_00[6];
    if ((param_4 == 0) || (param_4 != *param_1_00)) {
      FUN_00a3fb10();
    }
    if (param_5 == iVar1) {
      FUN_0082c0a0(*(undefined4 *)(param_1_00[6] + 4));
      *(int *)(param_1_00[6] + 4) = param_1_00[6];
      param_1_00[7] = 0;
      *(int *)param_1_00[6] = param_1_00[6];
      *(int *)(param_1_00[6] + 8) = param_1_00[6];
      iVar1 = *param_1_00;
      param_1[1] = *(int *)param_1_00[6];
      *param_1 = iVar1;
      return;
    }
  }
  while( true ) {
    if ((param_2 == 0) || (param_2 != param_4)) {
      FUN_00a3fb10();
    }
    if (param_3 == param_5) break;
    FUN_0082bc00();
    FUN_0082c470(local_8,param_2,param_3);
  }
  *param_1 = *param_1_00;
  param_1[1] = param_3;
  return;
}



void __fastcall FUN_0082c940(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc3b18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0082c380(DAT_0323f878 ^ (uint)&stack0xffffffec);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x14));
}



void __thiscall FUN_0082c9b0(int param_1_00,undefined4 param_1)

{
  int iVar1;
  void *pvVar2;
  undefined4 uVar3;
  int iVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be860b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 4) == 0) {
    pvVar2 = operator_new(0x1c);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = FUN_0082c110();
    }
    *(undefined4 *)(param_1_00 + 4) = uVar3;
  }
  local_4 = 0xffffffff;
  iVar1 = *(int *)(*(int *)(param_1_00 + 4) + 0x14);
  iVar4 = FUN_0082bf60(iVar1,*(undefined4 *)(iVar1 + 4),param_1);
  FUN_0082c3d0(1);
  *(int *)(iVar1 + 4) = iVar4;
  **(int **)(iVar4 + 4) = iVar4;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0082ca50(undefined4 *param_1)

{
  uint uVar1;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf27a8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0082c860(local_14,*param_1,*(undefined4 *)param_1[6],*param_1,(undefined4 *)param_1[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[6],uVar1);
}



int * __thiscall
FUN_0082cad0(int **param_1_00,int *param_1,undefined4 param_2,int *param_3,int *param_4)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int *piVar6;
  undefined4 uVar7;
  undefined local_c1;
  int *local_c0;
  int *local_bc;
  int local_b8;
  int *local_b4;
  undefined4 local_b0;
  undefined local_ac [160];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc37de;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_b0 = 0;
  iVar1 = FUN_0083e330(param_3,param_4,param_2,DAT_0323f878 ^ (uint)&stack0xffffff2c);
  if (iVar1 == 0) {
    uVar7 = 1;
    uVar2 = (**(code **)(*param_4 + 8))(1);
    uVar3 = (**(code **)(*param_3 + 8))(uVar2);
    uVar2 = FUN_00832e60(10,uVar3,uVar2,uVar7);
    local_4 = 1;
    FUN_0043fc7f(uVar2);
  }
  if (*param_1_00 == (int *)0x0) {
    piVar4 = (int *)operator_new(0x20);
    local_4 = 2;
    local_c0 = piVar4;
    if (piVar4 == (int *)0x0) {
      piVar4 = (int *)0x0;
    }
    else {
      local_c1 = 0;
      FUN_00831b70(&local_c1,&local_c1);
    }
    *param_1_00 = piVar4;
    local_4 = local_4 & 0xffffff00;
  }
  local_c0 = (int *)((uint)local_c0 & 0xffffff00);
  local_b8 = iVar1;
  FUN_0082bd40(iVar1,local_c0);
  FUN_007a491c(&local_b8,iVar1,iVar1);
  local_4 = 3;
  FUN_0082c000(&local_c0,&local_b8);
  piVar6 = local_c0;
  piVar4 = (int *)(*param_1_00)[6];
  if ((local_c0 == (int *)0x0) || (local_c0 != (int *)**param_1_00)) {
    FUN_00a3fb10();
  }
  if (local_bc == piVar4) {
    *param_1 = 0;
    param_1[1] = 0;
    local_b0 = 1;
    local_4 = local_4 & 0xffffff00;
    if (local_b4 != (int *)0x0) {
      LOCK();
      iVar1 = local_b4[1] + -1;
      local_b4[1] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_b4 + 4))();
        LOCK();
        iVar1 = local_b4[2] + -1;
        local_b4[2] = iVar1;
        UNLOCK();
        if (iVar1 == 0) {
          (**(code **)(*local_b4 + 8))();
        }
      }
    }
  }
  else {
    if (piVar6 != (int *)0x0) goto LAB_0082ccd6;
    FUN_00a3fb10();
    iVar1 = 0;
    while( true ) {
      if (local_bc == *(int **)(iVar1 + 0x18)) {
        FUN_00a3fb10();
      }
      iVar1 = FUN_0083e220(param_3,param_4,local_bc[3]);
      if (iVar1 != 0) break;
      uVar7 = 1;
      uVar2 = (**(code **)(*param_4 + 8))(1);
      uVar3 = (**(code **)(*param_3 + 8))(uVar2);
      uVar2 = FUN_00832e60(10,uVar3,uVar2,uVar7);
      local_4 = CONCAT31(local_4._1_3_,4);
      FUN_0043fc7f(uVar2);
      piVar6 = (int *)0x0;
LAB_0082ccd6:
      iVar1 = *piVar6;
    }
    uVar2 = FUN_0082bdd0();
    iVar5 = FUN_0082be60(local_ac,uVar2);
    *param_1 = iVar1;
    iVar1 = *(int *)(iVar5 + 4);
    param_1[1] = iVar1;
    if (iVar1 != 0) {
      LOCK();
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
      UNLOCK();
    }
    local_b0 = 1;
    FUN_0042d2d9();
    local_4 = local_4 & 0xffffff00;
    FUN_0042d2d9();
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0082cd50(int **param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  uint uVar3;
  int *piVar4;
  undefined local_21;
  int *local_20;
  int local_1c;
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc380b;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  if (*param_1_00 == (int *)0x0) {
    piVar4 = (int *)operator_new(0x20);
    local_4 = 0;
    local_20 = piVar4;
    if (piVar4 == (int *)0x0) {
      piVar4 = (int *)0x0;
    }
    else {
      local_21 = 0;
      FUN_00831b70(&local_21,&param_1);
    }
    *param_1_00 = piVar4;
  }
  uVar2 = param_1;
  local_4 = 0xffffffff;
  FUN_0082c000(&local_20,param_1);
  iVar1 = (*param_1_00)[6];
  if ((local_20 == (int *)0x0) || (local_20 != (int *)**param_1_00)) {
    FUN_00a3fb10(uVar3);
  }
  if (local_1c == iVar1) {
    FUN_0082c770(local_18,uVar2);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0082ce10(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (iVar1 != 0) {
    FUN_0082ca50();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  iVar1 = param_1[1];
  if (iVar1 != 0) {
    FUN_0082c940();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __fastcall thunk_FUN_00830840(undefined4 *param_1)

{
  int iVar1;
  
  iVar1 = param_1[1];
  *param_1 = boost::archive::detail::basic_oarchive::vftable;
  if (iVar1 != 0) {
    FUN_008306c0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



// public: static bool __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::xml_oarchive>
// >::is_destroyed(void)

bool __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>::
is_destroyed(void)

{
                    // 0x42ce60  1490
                    // ?is_destroyed@?$singleton@V?$map@Vxml_oarchive@archive@boost@@@extra_detail@detail@archive@boost@@@serialization@boost@@SA_NXZ
  return (bool)DAT_032bc9c8;
}



undefined4 __thiscall FUN_0082ce70(undefined4 *param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  undefined uVar1;
  undefined4 uVar2;
  
  uVar1 = *(undefined *)*param_1_00;
  uVar2 = CONCAT31((int3)((uint)(undefined *)*param_1_00 >> 8),uVar1);
  switch(uVar1) {
  case 0x22:
    *param_1 = &DAT_00d247bc;
    *param_2 = &DAT_00d247c2;
    return CONCAT31((int3)((uint)(undefined *)*param_1 >> 8),*(undefined *)*param_1);
  case 0x26:
    *param_1 = &DAT_00d247c4;
    *param_2 = &DAT_00d247c9;
    return CONCAT31((int3)((uint)(undefined *)*param_1 >> 8),*(undefined *)*param_1);
  case 0x27:
    *param_1 = &DAT_00d247b4;
    *param_2 = &DAT_00d247ba;
    uVar2 = CONCAT31((int3)((uint)(undefined *)*param_1 >> 8),*(undefined *)*param_1);
    break;
  case 0x3c:
    *param_1 = &DAT_00d247d4;
    *param_2 = &DAT_00d247d8;
    return CONCAT31((int3)((uint)(undefined *)*param_1 >> 8),*(undefined *)*param_1);
  case 0x3e:
    *param_1 = &DAT_00d247cc;
    *param_2 = &DAT_00d247d0;
    return CONCAT31((int3)((uint)(undefined *)*param_1 >> 8),*(undefined *)*param_1);
  }
  return uVar2;
}



uint __thiscall FUN_0082cf50(ushort **param_1_00,undefined4 *param_1,wchar_t **param_2)

{
  uint uVar1;
  
  uVar1 = (uint)**param_1_00;
  switch(uVar1) {
  case 0x22:
    *param_1 = &DAT_00d247ec;
    *param_2 = L"";
    return CONCAT22((short)((uint)(undefined2 *)*param_1 >> 0x10),*(undefined2 *)*param_1);
  case 0x26:
    *param_1 = &DAT_00d247fc;
    *param_2 = L"";
    return CONCAT22((short)((uint)(undefined2 *)*param_1 >> 0x10),*(undefined2 *)*param_1);
  case 0x27:
    *param_1 = &DAT_00d247dc;
    *param_2 = L"";
    uVar1 = CONCAT22((short)((uint)(undefined2 *)*param_1 >> 0x10),*(undefined2 *)*param_1);
    break;
  case 0x3c:
    *param_1 = &DAT_00d24814;
    *param_2 = L"";
    return CONCAT22((short)((uint)(undefined2 *)*param_1 >> 0x10),*(undefined2 *)*param_1);
  case 0x3e:
    *param_1 = &DAT_00d24808;
    *param_2 = L"";
    return CONCAT22((short)((uint)(undefined2 *)*param_1 >> 0x10),*(undefined2 *)*param_1);
  }
  return uVar1;
}



bool __thiscall FUN_0082d040(int *param_1_00,int *param_1)

{
  undefined2 uVar1;
  
  if (*(char *)(param_1_00 + 3) == '\0') {
    if (*(char *)(param_1 + 3) != '\0') {
      uVar1 = FUN_0082cf50(param_1_00 + 1,param_1_00 + 2);
      *(undefined2 *)((int)param_1_00 + 0xe) = uVar1;
      *(undefined *)(param_1_00 + 3) = 1;
    }
  }
  else if (*(char *)(param_1 + 3) == '\0') {
    uVar1 = FUN_0082cf50(param_1 + 1,param_1 + 2);
    *(undefined2 *)((int)param_1 + 0xe) = uVar1;
    *(undefined *)(param_1 + 3) = 1;
  }
  if (param_1_00[1] != param_1[1]) {
    return false;
  }
  return *param_1_00 == *param_1;
}



void FUN_0082d0b0(byte param_1)

{
  uint uVar1;
  undefined4 uVar2;
  char local_b0 [128];
  undefined local_30;
  undefined local_2f;
  undefined local_2e;
  undefined local_2d;
  undefined local_2c;
  undefined local_2b;
  undefined local_2a;
  undefined local_29;
  undefined local_28;
  undefined local_27;
  undefined local_26;
  undefined local_25;
  undefined local_24;
  undefined local_23;
  undefined local_22;
  undefined local_21;
  undefined local_20;
  undefined local_1f;
  undefined local_1e;
  undefined local_1d;
  undefined local_1c;
  undefined local_1b;
  undefined local_1a;
  undefined local_19;
  undefined local_18;
  undefined local_17;
  undefined local_16;
  undefined local_15;
  undefined local_14;
  undefined local_13;
  undefined local_12;
  undefined local_11;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc383b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_b0;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff4c;
  ExceptionList = &local_c;
  local_b0[0] = '\0';
  local_b0[1] = 0;
  local_b0[2] = 0;
  local_b0[3] = 0;
  local_b0[4] = 0;
  local_b0[5] = 0;
  local_b0[6] = 0;
  local_b0[7] = 0;
  local_b0[8] = 0;
  local_b0[9] = 0;
  local_b0[10] = 0;
  local_b0[0xb] = 0;
  local_b0[0xc] = 0;
  local_b0[0xd] = 0;
  local_b0[0xe] = 0;
  local_b0[0xf] = 0;
  local_b0[0x10] = 0;
  local_b0[0x11] = 0;
  local_b0[0x12] = 0;
  local_b0[0x13] = 0;
  local_b0[0x14] = 0;
  local_b0[0x15] = 0;
  local_b0[0x16] = 0;
  local_b0[0x17] = 0;
  local_b0[0x18] = 0;
  local_b0[0x19] = 0;
  local_b0[0x1a] = 0;
  local_b0[0x1b] = 0;
  local_b0[0x1c] = 0;
  local_b0[0x1d] = 0;
  local_b0[0x1e] = 0;
  local_b0[0x1f] = 0;
  local_b0[0x20] = 0;
  local_b0[0x21] = 0;
  local_b0[0x22] = 0;
  local_b0[0x23] = 0;
  local_b0[0x24] = 0;
  local_b0[0x25] = 0;
  local_b0[0x26] = 0;
  local_b0[0x27] = 0;
  local_b0[0x28] = 0;
  local_b0[0x29] = 0;
  local_b0[0x2a] = 0;
  local_b0[0x2b] = 0;
  local_b0[0x2c] = 0;
  local_b0[0x2d] = 1;
  local_b0[0x2e] = 1;
  local_b0[0x2f] = 0;
  local_b0[0x30] = 1;
  local_b0[0x31] = 1;
  local_b0[0x32] = 1;
  local_b0[0x33] = 1;
  local_b0[0x34] = 1;
  local_b0[0x35] = 1;
  local_b0[0x36] = 1;
  local_b0[0x37] = 1;
  local_b0[0x38] = 1;
  local_b0[0x39] = 1;
  local_b0[0x3a] = 0;
  local_b0[0x3b] = 0;
  local_b0[0x3c] = 0;
  local_b0[0x3d] = 0;
  local_b0[0x3e] = 0;
  local_b0[0x3f] = 0;
  local_b0[0x40] = 0;
  local_b0[0x41] = 1;
  local_b0[0x42] = 1;
  local_b0[0x43] = 1;
  local_b0[0x44] = 1;
  local_b0[0x45] = 1;
  local_b0[0x46] = 1;
  local_b0[0x47] = 1;
  local_b0[0x48] = 1;
  local_b0[0x49] = 1;
  local_b0[0x4a] = 1;
  local_b0[0x4b] = 1;
  local_b0[0x4c] = 1;
  local_b0[0x4d] = 1;
  local_b0[0x4e] = 1;
  local_b0[0x4f] = 1;
  local_b0[0x50] = 1;
  local_b0[0x51] = 1;
  local_b0[0x52] = 1;
  local_b0[0x53] = 1;
  local_b0[0x54] = 1;
  local_b0[0x55] = 1;
  local_b0[0x56] = 1;
  local_b0[0x57] = 1;
  local_b0[0x58] = 1;
  local_b0[0x59] = 1;
  local_b0[0x5a] = 1;
  local_b0[0x5b] = 0;
  local_b0[0x5c] = 0;
  local_b0[0x5d] = 0;
  local_b0[0x5e] = 0;
  local_b0[0x5f] = 1;
  local_b0[0x60] = 0;
  local_b0[0x61] = 1;
  local_b0[0x62] = 1;
  local_b0[99] = 1;
  local_b0[100] = 1;
  local_b0[0x65] = 1;
  local_b0[0x66] = 1;
  local_b0[0x67] = 1;
  local_b0[0x68] = 1;
  local_b0[0x69] = 1;
  local_b0[0x6a] = 1;
  local_b0[0x6b] = 1;
  local_b0[0x6c] = 1;
  local_b0[0x6d] = 1;
  local_b0[0x6e] = 1;
  local_b0[0x6f] = 1;
  local_b0[0x70] = 1;
  local_b0[0x71] = 1;
  local_b0[0x72] = 1;
  local_b0[0x73] = 1;
  local_b0[0x74] = 1;
  local_b0[0x75] = 1;
  local_b0[0x76] = 1;
  local_b0[0x77] = 1;
  local_b0[0x78] = 1;
  local_b0[0x79] = 1;
  local_b0[0x7a] = 1;
  local_b0[0x7b] = 0;
  local_b0[0x7c] = 0;
  local_b0[0x7d] = 0;
  local_b0[0x7e] = 0;
  local_b0[0x7f] = 0;
  local_30 = 0;
  local_2f = 0;
  local_2e = 0;
  local_2d = 0;
  local_2c = 0;
  local_2b = 0;
  local_2a = 0;
  local_29 = 0;
  local_28 = 0;
  local_27 = 0;
  local_26 = 0;
  local_25 = 0;
  local_24 = 0;
  local_23 = 0;
  local_22 = 0;
  local_21 = 0;
  local_20 = 0;
  local_1f = 0;
  local_1e = 0;
  local_1d = 0;
  local_1c = 0;
  local_1b = 0;
  local_1a = 0;
  local_19 = 0;
  local_18 = 0;
  local_17 = 0;
  local_16 = 0;
  local_15 = 0;
  local_14 = 0;
  local_13 = 0;
  local_12 = 0;
  local_11 = 0;
  if ((param_1 < 0x80) && (local_b0[(char)param_1] == '\0')) {
    uVar2 = FUN_0083d040(2,0,0,1);
    local_4 = 0;
    FUN_0082ac40(uVar2,uVar1);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0082d440(int **param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_a4 [148];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc387b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_a4;
  ExceptionList = &local_c;
  if ((*(byte *)(*(int *)(**param_1_00 + 4) + 8 + (int)*param_1_00) & 6) != 0) {
    uVar2 = FUN_00832e60(0xd,0,0,1);
    local_4 = 0;
    FUN_0043fc7f(uVar2);
  }
  FUN_005e3200(param_1,uVar1);
  ExceptionList = pvStack_10;
  return;
}



void __fastcall FUN_0082d4c0(int param_1)

{
  int iVar1;
  
  for (iVar1 = *(int *)(param_1 + 0xc); 0 < iVar1; iVar1 = iVar1 + -1) {
    FUN_0082d440(9);
  }
  return;
}



void __fastcall FUN_0082d4f0(int param_1)

{
  if (*(char *)(param_1 + 0x11) != '\0') {
    if (param_1 != -9) {
      FUN_0082d440(0x3e);
      *(undefined *)(param_1 + 0x11) = 0;
      return;
    }
    FUN_0082d440(0x3e);
    uRam00000008 = 0;
  }
  return;
}



void __fastcall FUN_0082d530(undefined4 *param_1)

{
  uint uVar1;
  char *pcVar2;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bc38a8;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1 = boost::archive::basic_xml_oarchive<class_boost::archive::xml_oarchive>::vftable;
  local_8 = 0;
  uVar1 = FUN_0082eac0();
  if ((uVar1 & 1) == 0) {
    local_8 = CONCAT31(local_8._1_3_,1);
    for (pcVar2 = "</boost_serialization>\n"; *pcVar2 != '\0'; pcVar2 = pcVar2 + 1) {
      FUN_005e3200(*pcVar2);
    }
  }
  local_8 = 0xffffffff;
  FUN_00830840();
  ExceptionList = local_10;
  return;
}



undefined * Catch_All_0082d59a(void)

{
  return &DAT_0082d5a0;
}



int ** __thiscall FUN_0082d5d0(int **param_1_00,undefined4 param_1)

{
  if (*param_1_00 != (int *)0x0) {
    FUN_005e3200(param_1);
    if (*(int *)(*(int *)(**param_1_00 + 4) + 8 + (int)*param_1_00) != 0) {
      *param_1_00 = (int *)0x0;
      return param_1_00;
    }
  }
  return param_1_00;
}



int ** FUN_0082d610(int **param_1,undefined4 param_2,wchar_t *param_3,wchar_t *param_4,
                   undefined4 param_5,undefined4 param_6_00,int param_6,undefined4 param_8_00,
                   undefined4 param_7,undefined4 param_8)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  int *in_stack_00000050;
  
  piVar3 = in_stack_00000050;
  do {
    if ((CONCAT22(param_6_00._2_2_,(undefined2)param_6_00) == 0) && (param_6 == 0)) {
      cVar1 = FUN_0082d040(&stack0x0000002c);
      if (cVar1 != '\0') {
        *param_1 = piVar3;
        return param_1;
      }
    }
    if (param_8._1_1_ == '\0') {
      if ((char)param_5 == '\0') {
        param_5._2_2_ = FUN_0082cf50(&param_3,&param_4);
        param_5._0_1_ = '\x01';
      }
      iVar2 = _wctomb((char *)&param_8_00,param_5._2_2_);
      param_6_00._0_2_ = (undefined2)iVar2;
      param_6_00._2_2_ = (undefined2)((uint)iVar2 >> 0x10);
      param_6 = 0;
      param_8._1_1_ = '\x01';
      piVar3 = in_stack_00000050;
    }
    if (piVar3 != (int *)0x0) {
      FUN_005e3200(*(undefined *)((int)&param_8_00 + param_6));
      piVar3 = in_stack_00000050;
      if (*(int *)(*(int *)(*in_stack_00000050 + 4) + 8 + (int)in_stack_00000050) != 0) {
        piVar3 = (int *)0x0;
        in_stack_00000050 = (int *)0x0;
      }
    }
    param_6 = param_6 + 1;
    if (CONCAT22(param_6_00._2_2_,(undefined2)param_6_00) <= param_6) {
      param_3 = param_3 + 1;
      param_6 = 0;
      param_6_00._0_2_ = 0;
      param_6_00._2_2_ = 0;
      if (param_3 < param_4) {
        param_5._2_2_ = *param_3;
        param_8._1_1_ = '\0';
      }
      else {
        param_3 = (wchar_t *)0x0;
        param_4 = (wchar_t *)0x0;
        param_5._0_1_ = '\0';
        param_8._1_1_ = '\0';
      }
    }
  } while( true );
}



void __thiscall FUN_0082d720(int param_1_00,char *param_1,undefined4 param_3,char *param_4)

{
  char *pcVar1;
  char cVar2;
  char *pcVar3;
  
  FUN_0082d440(0x20);
  cVar2 = *param_1;
  while (cVar2 != '\0') {
    FUN_005e3200(cVar2);
    pcVar3 = param_1 + 1;
    param_1 = param_1 + 1;
    cVar2 = *pcVar3;
  }
  cVar2 = *param_4;
  pcVar3 = param_4;
  while (cVar2 != '\0') {
    FUN_005e3200(cVar2);
    pcVar1 = pcVar3 + 1;
    pcVar3 = pcVar3 + 1;
    cVar2 = *pcVar1;
  }
  FUN_0043fb74(&param_3);
  if (param_1_00 == -9) {
    FUN_0082d440(0x22);
    return;
  }
  FUN_0082d440(0x22);
  return;
}



void FUN_0082d7d0(byte *param_1)

{
  undefined4 uVar1;
  uint uVar2;
  undefined *puVar3;
  
  uVar2 = (uint)*param_1;
  puVar3 = &DAT_00d248a8;
  uVar1 = FUN_0083e790(uVar2,&DAT_00d248a8);
  FUN_0082d720(uVar1,uVar2,puVar3);
  return;
}



void FUN_0082d800(short *param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined *puVar3;
  
  iVar1 = (int)*param_1;
  puVar3 = &DAT_00d248a8;
  uVar2 = FUN_0083e770(iVar1,&DAT_00d248a8);
  FUN_0082d720(uVar2,iVar1,puVar3);
  return;
}



void FUN_0082d830(short *param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined *puVar3;
  
  iVar1 = (int)*param_1;
  puVar3 = &DAT_00d248a8;
  uVar2 = FUN_0083e760(iVar1,&DAT_00d248a8);
  FUN_0082d720(uVar2,iVar1,puVar3);
  return;
}



void FUN_0082d860(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined *puVar3;
  
  uVar2 = *param_1;
  puVar3 = &DAT_00d248a8;
  uVar1 = FUN_0083e7a0(uVar2,&DAT_00d248a8);
  FUN_0082d720(uVar1,uVar2,puVar3);
  return;
}



void FUN_0082d880(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined *puVar3;
  
  uVar2 = *param_1;
  puVar3 = &DAT_00d248ac;
  uVar1 = FUN_0083e750(uVar2,&DAT_00d248ac);
  FUN_0082d720(uVar1,uVar2,puVar3);
  return;
}



void FUN_0082d8a0(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined *puVar3;
  
  uVar2 = *param_1;
  puVar3 = &DAT_00d248ac;
  uVar1 = FUN_0083e740(uVar2,&DAT_00d248ac);
  FUN_0082d720(uVar1,uVar2,puVar3);
  return;
}



undefined4 FUN_0082d8c0(undefined4 param_1,undefined4 param_2)

{
  undefined4 param_6;
  undefined4 param_7;
  
  FUN_0082d610(param_1,param_2,0,0,0,param_6,param_7);
  return param_1;
}



void FUN_0082d950(int **param_1,int param_2,undefined *param_3,undefined *param_4,undefined4 param_5
                 ,int param_6_00,undefined *param_6,undefined4 param_8_00,undefined4 param_7,
                 int *param_8)

{
  char cVar1;
  int *piVar2;
  
  piVar2 = param_8;
  while( true ) {
    cVar1 = (char)param_5;
    if ((char)param_5 == '\0') {
      if ((char)param_7 != '\0') {
        param_5._1_1_ = FUN_0082ce70(&param_3,&param_4);
        cVar1 = '\x01';
        param_5._0_1_ = '\x01';
      }
    }
    else if ((char)param_7 == '\0') {
      param_7._1_1_ = FUN_0082ce70(&param_6,&param_8_00);
      param_7._0_1_ = '\x01';
    }
    if ((param_3 == param_6) && (param_2 == param_6_00)) break;
    if (cVar1 == '\0') {
      param_5._1_1_ = FUN_0082ce70(&param_3,&param_4);
      param_5._0_1_ = '\x01';
    }
    if (piVar2 != (int *)0x0) {
      FUN_005e3200(CONCAT13((undefined)param_6_00,CONCAT21(param_5._2_2_,param_5._1_1_)));
      piVar2 = param_8;
      if (*(int *)(*(int *)(*param_8 + 4) + 8 + (int)param_8) != 0) {
        piVar2 = (int *)0x0;
        param_8 = (int *)0x0;
      }
    }
    param_3 = param_3 + 1;
    if (param_3 < param_4) {
      param_5._1_1_ = *param_3;
    }
    else {
      param_2 = param_2 + 1;
      param_3 = (undefined *)0x0;
      param_4 = (undefined *)0x0;
      param_5._0_1_ = '\0';
    }
  }
  *param_1 = piVar2;
  return;
}



// private: static class boost::archive::detail::extra_detail::map<class
// boost::archive::xml_oarchive> & __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::xml_oarchive>
// >::get_instance(void)

map<class_boost::archive::xml_oarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>::
get_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
                    // 0x42da50  874
                    // ?get_instance@?$singleton@V?$map@Vxml_oarchive@archive@boost@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAV?$map@Vxml_oarchive@archive@boost@@@extra_detail@detail@archive@3@XZ
  puStack_8 = &LAB_00bc38de;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    local_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c761c0);
  }
  ExceptionList = local_c;
  return (map<class_boost::archive::xml_oarchive> *)
         &`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_0082dad0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0082d8c0(&param_1,param_2,0,0,0,0,0);
  return;
}



undefined4 FUN_0082db30(undefined4 param_1,undefined4 param_2)

{
  undefined4 param_6;
  undefined4 param_10;
  
  FUN_0082d950(param_1,param_2,0,0,0,param_6,0,0,0,param_10,param_10,param_10,0);
  return param_1;
}



void __thiscall FUN_0082db90(int param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)(param_1 + 4);
  ppiVar2 = ppiVar1;
  if (7 < *(uint *)(param_1 + 0x18)) {
    ppiVar2 = (int **)*ppiVar1;
  }
  if (7 < *(uint *)(param_1 + 0x18)) {
    ppiVar1 = (int **)*ppiVar1;
  }
  FUN_0082dad0(*(undefined4 *)(param_1_00 + 0x14),ppiVar1,
               (int)ppiVar2 + *(int *)(param_1 + 0x14) * 2);
  return;
}



void __thiscall FUN_0082dbd0(int param_1_00,int param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)(param_1 + 4);
  ppiVar2 = ppiVar1;
  if (0xf < *(uint *)(param_1 + 0x18)) {
    ppiVar2 = (int **)*ppiVar1;
  }
  if (0xf < *(uint *)(param_1 + 0x18)) {
    ppiVar1 = (int **)*ppiVar1;
  }
  FUN_0082db30(&param_1,ppiVar1,0,0,0,(int)ppiVar2 + *(int *)(param_1 + 0x14),0,0,0,
               *(undefined4 *)(param_1_00 + 0x14));
  return;
}



void __thiscall FUN_0082dc30(int param_1_00,char *param_1)

{
  char *pcVar1;
  char *pcVar2;
  
  pcVar1 = param_1;
  do {
    pcVar2 = pcVar1;
    pcVar1 = pcVar2 + 1;
  } while (*pcVar2 != '\0');
  FUN_0082db30(&param_1,param_1,0,0,0,pcVar2,0,0,0,*(undefined4 *)(param_1_00 + 0x14));
  return;
}



// public: static class boost::archive::detail::extra_detail::map<class
// boost::archive::xml_oarchive> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::xml_oarchive>
// >::get_const_instance(void)

map<class_boost::archive::xml_oarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>::
get_const_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bc38de;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  if ((`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    uStack_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c761c0);
  }
  ExceptionList = pvStack_c;
  return (map<class_boost::archive::xml_oarchive> *)
         &`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>::get_instance(void)'
          ::`2'::t;
}



void __thiscall FUN_0082dca0(int param_1_00,char *param_1,undefined4 param_3)

{
  char *pcVar1;
  char cVar2;
  undefined *puVar3;
  
  FUN_0082d440(0x20);
  cVar2 = *param_1;
  while (cVar2 != '\0') {
    FUN_005e3200(cVar2);
    pcVar1 = param_1 + 1;
    param_1 = param_1 + 1;
    cVar2 = *pcVar1;
  }
  puVar3 = &DAT_00d248a8;
  cVar2 = '=';
  do {
    FUN_005e3200(cVar2);
    cVar2 = puVar3[1];
    puVar3 = puVar3 + 1;
  } while (cVar2 != '\0');
  FUN_0082dc30(param_3);
  if (param_1_00 == -9) {
    FUN_0082d440(0x22);
    return;
  }
  FUN_0082d440(0x22);
  return;
}



void __thiscall FUN_0082dd50(int param_1_00,char *param_1)

{
  char *pcVar1;
  char *pcVar2;
  
  pcVar2 = param_1;
  if (param_1 != (char *)0x0) {
    do {
      pcVar1 = pcVar2;
      pcVar2 = pcVar1 + 1;
    } while (*pcVar1 != '\0');
    pcVar2 = param_1;
    if (param_1 != pcVar1) {
      do {
        FUN_0082d0b0(*pcVar2);
        pcVar2 = pcVar2 + 1;
      } while (pcVar2 != pcVar1);
    }
    if (*(char *)(param_1_00 + 0x11) != '\0') {
      FUN_0082d440(0x3e);
      *(undefined *)(param_1_00 + 0x11) = 0;
    }
    if (*(int *)(param_1_00 + 0xc) != 0) {
      FUN_0082d440(10);
      FUN_0082d4c0();
    }
    *(int *)(param_1_00 + 0xc) = *(int *)(param_1_00 + 0xc) + 1;
    FUN_0082d440(0x3c);
    FUN_0082dc30(param_1);
    *(undefined *)(param_1_00 + 0x11) = 1;
    *(undefined *)(param_1_00 + 0x10) = 0;
  }
  return;
}



void __thiscall FUN_0082de20(int param_1_00,char *param_1)

{
  char cVar1;
  char *pcVar2;
  char *pcVar3;
  undefined *puVar4;
  
  pcVar3 = param_1;
  if (param_1 != (char *)0x0) {
    do {
      pcVar2 = pcVar3;
      pcVar3 = pcVar2 + 1;
    } while (*pcVar2 != '\0');
    pcVar3 = param_1;
    if (param_1 != pcVar2) {
      do {
        FUN_0082d0b0(*pcVar3);
        pcVar3 = pcVar3 + 1;
      } while (pcVar3 != pcVar2);
    }
    if (*(char *)(param_1_00 + 0x11) != '\0') {
      FUN_0082d440(0x3e);
      *(undefined *)(param_1_00 + 0x11) = 0;
    }
    *(int *)(param_1_00 + 0xc) = *(int *)(param_1_00 + 0xc) + -1;
    if (*(char *)(param_1_00 + 0x10) != '\0') {
      FUN_0082d440(10);
      FUN_0082d4c0();
    }
    *(undefined *)(param_1_00 + 0x10) = 1;
    puVar4 = &DAT_00d248b0;
    cVar1 = '<';
    do {
      FUN_005e3200(cVar1);
      cVar1 = puVar4[1];
      puVar4 = puVar4 + 1;
    } while (cVar1 != '\0');
    FUN_0082dc30(param_1);
    FUN_0082d440(0x3e);
    if (*(int *)(param_1_00 + 0xc) == 0) {
      if (param_1_00 != -9) {
        FUN_0082d440();
        return;
      }
      FUN_0082d440();
      return;
    }
  }
  return;
}



void FUN_0082df40(int *param_1)

{
  undefined4 uVar1;
  int iVar2;
  
  iVar2 = *param_1;
  if (iVar2 != 0) {
    uVar1 = FUN_0083e780(iVar2);
    FUN_0082dca0(uVar1,iVar2);
  }
  return;
}



void FUN_0082df60(undefined4 param_1)

{
  boost::serialization::
  singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>::
  get_instance();
  FUN_0083d430(param_1);
  return;
}



void FUN_0082df80(undefined4 param_1)

{
  if (DAT_032bc9c8 == '\0') {
    boost::serialization::
    singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>
    ::get_instance();
    FUN_0083d2b0(param_1);
  }
  return;
}



void FUN_0082dfa0(undefined4 param_1)

{
  boost::serialization::
  singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::xml_oarchive>_>::
  get_instance();
  FUN_0083d230(param_1);
  return;
}



void FUN_0082dfd0(void)

{
  char cVar1;
  undefined4 uVar2;
  undefined2 *puVar3;
  char *pcVar4;
  undefined *puVar5;
  undefined auStack_2 [2];
  
  pcVar4 = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>\n";
  cVar1 = '<';
  do {
    FUN_005e3200(cVar1);
    cVar1 = pcVar4[1];
    pcVar4 = pcVar4 + 1;
  } while (cVar1 != '\0');
  pcVar4 = "<!DOCTYPE boost_serialization>\n";
  cVar1 = '<';
  do {
    FUN_005e3200(cVar1);
    cVar1 = pcVar4[1];
    pcVar4 = pcVar4 + 1;
  } while (cVar1 != '\0');
  pcVar4 = "<boost_serialization";
  cVar1 = '<';
  do {
    FUN_005e3200(cVar1);
    cVar1 = pcVar4[1];
    pcVar4 = pcVar4 + 1;
  } while (cVar1 != '\0');
  uVar2 = FUN_0083e7b0();
  FUN_0082dca0("signature",uVar2);
  puVar3 = (undefined2 *)FUN_0083e7c0(&stack0xfffffffc + 2);
  FUN_0082d720("version",*puVar3,&DAT_00d248a8);
  puVar5 = &DAT_00d248b4;
  cVar1 = '>';
  do {
    FUN_005e3200(cVar1);
    cVar1 = puVar5[1];
    puVar5 = puVar5 + 1;
  } while (cVar1 != '\0');
  return;
}



undefined4 * __thiscall FUN_0082e0c0(undefined4 *param_1_00,undefined4 param_1,uint param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3913;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_0082e550(param_1,(byte)(param_2 >> 1) & 1);
  local_4 = 0;
  FUN_008307d0(param_2);
  param_1_00[3] = 0;
  *(undefined *)(param_1_00 + 4) = 0;
  *(undefined *)((int)param_1_00 + 0x11) = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  *param_1_00 = boost::archive::xml_oarchive_impl<class_boost::archive::xml_oarchive>::vftable;
  if ((param_2 & 1) == 0) {
    FUN_0082dfd0(uVar1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_0082e150(int param_1)

{
  int iVar1;
  undefined4 *puVar2;
  uint local_8;
  _Lockit local_4 [4];
  
  FUN_005de4e0(&local_8,param_1 + 4);
  if (local_8 != 0) {
    std::_Lockit::_Lockit(local_4,0);
    iVar1 = *(int *)(local_8 + 4);
    if ((iVar1 != 0) && (iVar1 != -1)) {
      *(int *)(local_8 + 4) = iVar1 + -1;
    }
    puVar2 = (undefined4 *)(~-(uint)(*(int *)(local_8 + 4) != 0) & local_8);
    FUN_00823810();
    if (puVar2 != (undefined4 *)0x0) {
      (**(code **)*puVar2)(1);
    }
  }
  return;
}



void FUN_0082e1b0(uint *param_1)

{
  uint uVar1;
  int iVar2;
  uint *puVar3;
  undefined4 *puVar4;
  
  puVar3 = param_1;
  if (param_1 == (uint *)0x0) {
    return;
  }
  uVar1 = *param_1;
  if (uVar1 != 0) {
    std::_Lockit::_Lockit((_Lockit *)&param_1,0);
    iVar2 = *(int *)(uVar1 + 4);
    if ((iVar2 != 0) && (iVar2 != -1)) {
      *(int *)(uVar1 + 4) = iVar2 + -1;
    }
    puVar4 = (undefined4 *)(~-(uint)(*(int *)(uVar1 + 4) != 0) & uVar1);
    FUN_00823810();
    if (puVar4 != (undefined4 *)0x0) {
      (**(code **)*puVar4)(1);
    }
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(puVar3);
}



void __fastcall FUN_0082e210(int *param_1)

{
  *(int *)(*param_1 + 0x14) = param_1[1];
  return;
}



void __fastcall FUN_0082e220(undefined4 *param_1)

{
  FUN_0082e1b0(*param_1);
  return;
}



void __fastcall FUN_0082e230(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 *puVar3;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc393b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_10 = param_1;
  FUN_0082e150(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  uVar1 = *(uint *)(param_1 + 4);
  local_4 = 0xffffffff;
  if (uVar1 != 0) {
    std::_Lockit::_Lockit((_Lockit *)&local_10,0);
    iVar2 = *(int *)(uVar1 + 4);
    if ((iVar2 != 0) && (iVar2 != -1)) {
      *(int *)(uVar1 + 4) = iVar2 + -1;
    }
    puVar3 = (undefined4 *)(~-(uint)(*(int *)(uVar1 + 4) != 0) & uVar1);
    FUN_00823810();
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0082e2d0(undefined4 *param_1)

{
  uint *puVar1;
  uint uVar2;
  byte bVar3;
  uint *puVar4;
  uint uVar5;
  uint local_8;
  uint local_4;
  
  uVar5 = 6;
  local_8 = 6;
  *(undefined *)((int)param_1 + 5) = 0;
  puVar1 = param_1 + 2;
  do {
    if (*puVar1 == 0) {
      if (*(char *)(param_1 + 3) == '\0') {
        *(undefined *)((int)param_1 + 6) = *(undefined *)*param_1;
        *param_1 = (undefined *)*param_1 + 1;
        *puVar1 = 8;
      }
      else {
        *(undefined *)((int)param_1 + 6) = 0;
        *puVar1 = uVar5;
      }
    }
    puVar4 = puVar1;
    if (uVar5 <= *puVar1) {
      puVar4 = &local_8;
    }
    uVar2 = *puVar4;
    local_4 = *puVar1;
    bVar3 = (byte)uVar2;
    uVar5 = uVar5 - uVar2;
    local_8 = uVar5;
    *puVar1 = local_4 - uVar2;
    *(byte *)((int)param_1 + 5) =
         *(char *)((int)param_1 + 6) >> ((char)local_4 - bVar3 & 0x1f) &
         ('\x01' << (bVar3 & 0x1f)) - 1U | *(char *)((int)param_1 + 5) << (bVar3 & 0x1f);
  } while (uVar5 != 0);
  *(undefined *)(param_1 + 1) = 1;
  return;
}



void __thiscall FUN_0082e360(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *local_88;
  _Locinfo local_84 [116];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc396b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_88;
  ExceptionList = &local_c;
  param_1_00[1] = param_1;
  local_4 = 0;
  *param_1_00 = std::codecvt<char,char,int>::vftable;
  local_88 = param_1_00;
  FUN_00825ca0(&DAT_00d23f30);
  std::_Locinfo::~_Locinfo(local_84);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



_Locimp ** __thiscall FUN_0082e3f0(_Locimp **param_1_00,undefined4 *param_1,facet *param_2)

{
  facet *pfVar1;
  uint uVar2;
  void *pvVar3;
  _Locimp *p_Var4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc39ab;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar3 = operator_new(0x34);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    p_Var4 = (_Locimp *)0x0;
  }
  else {
    p_Var4 = (_Locimp *)FUN_007cc38a(*param_1);
  }
  pfVar1 = param_2;
  local_4 = 0xffffffff;
  *param_1_00 = p_Var4;
  if (param_2 != (facet *)0x0) {
    if (DAT_032f11f4 == 0) {
      std::_Lockit::_Lockit((_Lockit *)&param_1,0);
      if (DAT_032f11f4 == 0) {
        DAT_032bc818 = DAT_032bc818 + 1;
        DAT_032f11f4 = DAT_032bc818;
      }
      FUN_00823810(uVar2);
    }
    std::locale::_Locimp::_Locimp_Addfac(*param_1_00,pfVar1,DAT_032f11f4);
    *(undefined4 *)(*param_1_00 + 0x10) = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (*param_1_00 + 0x18),"*",1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_0082e4e0(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(4);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0082e3f0(param_1,param_2);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



int ** __thiscall FUN_0082e550(int **param_1_00,int *param_1,undefined4 *param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int *piVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc3a07;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  if (param_1 == (int *)0x0) {
    piVar6 = (int *)0x0;
  }
  else {
    piVar6 = (int *)(*(int *)(*param_1 + 4) + (int)param_1);
  }
  param_1_00[1] = piVar6;
  param_1_00[2] = (int *)piVar6[4];
  if (param_1 == (int *)0x0) {
    piVar6 = (int *)0x0;
  }
  else {
    piVar6 = (int *)(*(int *)(*param_1 + 4) + (int)param_1);
  }
  param_1_00[3] = piVar6;
  param_1_00[4] = (int *)piVar6[5];
  param_1_00[5] = (int *)0x0;
  local_4._0_1_ = 2;
  local_4._1_3_ = 0;
  param_1_00[6] = *(int **)(*(int *)(*param_1 + 4) + 0x28 + (int)param_1);
  FUN_0043f377(param_1_00 + 7);
  local_4._0_1_ = 3;
  if ((char)param_2 == '\0') {
    puVar2 = (undefined4 *)operator_new(8);
    local_4._0_1_ = 4;
    param_2 = puVar2;
    if (puVar2 == (undefined4 *)0x0) {
      puVar2 = (undefined4 *)0x0;
    }
    else {
      FUN_0082e360(0);
      *puVar2 = boost::archive::codecvt_null<char>::vftable;
    }
    local_4 = CONCAT31(local_4._1_3_,3);
    uVar3 = FUN_00823b7b(puVar2,uVar1);
    piVar4 = (int *)FUN_0082e4e0(uVar3);
    piVar6 = param_1_00[5];
    param_1_00[5] = piVar4;
    FUN_0082e1b0(piVar6);
    FUN_005de2b0(&param_2,param_1_00[5]);
    std::locale::~locale((locale *)&param_2);
  }
  piVar6 = *param_1_00;
  if (piVar6 == (int *)0x0) {
    iVar5 = 0;
  }
  else {
    iVar5 = *(int *)(*piVar6 + 4) + (int)piVar6;
  }
  *(uint *)(iVar5 + 0x10) = *(uint *)(iVar5 + 0x10) & 0xffffbfff;
  ExceptionList = local_c;
  return param_1_00;
}



int * __thiscall FUN_0082e680(int *param_1_00,undefined8 param_1)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  uint uStack_44;
  uint local_34;
  char local_28;
  locale local_20 [4];
  uint local_1c;
  int *local_18;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bc3a40;
  local_10 = ExceptionList;
  uStack_44 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_44;
  ExceptionList = &local_10;
  local_1c = 0;
  local_18 = param_1_00;
  FUN_00425790();
  local_8 = 0;
  uVar3 = 0;
  if (local_28 != '\0') {
    FUN_00417498();
    local_8._0_1_ = 1;
    piVar2 = (int *)FUN_00424900();
    std::locale::~locale(local_20);
    iVar1 = *(int *)(*param_1_00 + 4);
    local_34 = local_34 & 0xffffff00;
    local_8 = CONCAT31(local_8._1_3_,2);
    (**(code **)(*piVar2 + 0xc))
              (&param_1,local_34,*(undefined4 *)((int)param_1_00 + iVar1 + 0x28),
               *(int *)(*param_1_00 + 4) + (int)param_1_00,
               *(undefined *)((int)param_1_00 + iVar1 + 0x30),CONCAT71(param_1._1_7_,(char)param_1))
    ;
    uVar3 = 4;
    if ((char)param_1 == '\0') {
      uVar3 = local_1c;
    }
  }
  local_8 = 0;
  if (uVar3 != 0) {
    uVar3 = *(uint *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 8) | uVar3;
    if (*(int *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 0x28) == 0) {
      uVar3 = uVar3 | 4;
    }
    FUN_00417a55(uVar3,0);
  }
  local_8 = 0xffffffff;
  FUN_00425900();
  ExceptionList = local_10;
  return param_1_00;
}



undefined * Catch_All_0082e787(void)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  undefined *puVar4;
  uint uVar5;
  int unaff_EBP;
  
  piVar1 = *(int **)(unaff_EBP + -0x14);
  iVar2 = *(int *)(*piVar1 + 4);
  uVar5 = *(uint *)((int)piVar1 + iVar2 + 8) & 0x17 | 4;
  *(uint *)((int)piVar1 + iVar2 + 8) = uVar5;
  if ((*(uint *)((int)piVar1 + iVar2 + 0xc) & uVar5) == 0) {
    *(undefined4 *)(unaff_EBP + -4) = 0;
    return &DAT_0082e7b8;
  }
  __CxxThrowException_8(0,0);
  pcVar3 = (code *)swi(3);
  puVar4 = (undefined *)(*pcVar3)();
  return puVar4;
}



void __fastcall FUN_0082e7d0(void *param_1)

{
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  uStack_8 = &LAB_00bc3a8c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 3;
  FUN_005e3200(10,DAT_0323f878 ^ (uint)&stack0xffffffe8);
  FUN_00425840();
  uStack_8._0_1_ = 2;
  FUN_0082e230();
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
  FUN_0082e1b0(*(undefined4 *)((int)param_1 + 0x14));
  *(undefined4 *)(*(int *)((int)param_1 + 0xc) + 0x14) = *(undefined4 *)((int)param_1 + 0x10);
  *(uint *)(*(int *)((int)param_1 + 4) + 0x10) = *(uint *)((int)param_1 + 8) & 0xffff;
  ExceptionList = param_1;
  return;
}



void FUN_0082e860(int **param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,
                 undefined4 param_6,int param_7,int param_8)

{
  char cVar1;
  int *piVar2;
  int *param_14;
  
  piVar2 = param_14;
  while ((param_2 != param_8 || (param_4 != 0))) {
    if (param_7 == 0x4c) {
      cVar1 = '\n';
    }
    else {
      if ((char)param_3 == '\0') {
        FUN_0082e2d0();
      }
      cVar1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[param_3._1_1_];
    }
    if (piVar2 != (int *)0x0) {
      FUN_005e3200(cVar1);
      piVar2 = param_14;
      if (*(int *)(*(int *)(*param_14 + 4) + 8 + (int)param_14) != 0) {
        piVar2 = (int *)0x0;
        param_14 = (int *)0x0;
      }
    }
    if (param_7 == 0x4c) {
      param_7 = 0;
    }
    else {
      param_7 = param_7 + 1;
      param_3._0_1_ = '\0';
    }
  }
  *param_1 = piVar2;
  return;
}



undefined4 FUN_0082e910(undefined4 param_1,undefined4 param_2,undefined param_3,undefined4 param_4)

{
  FUN_0082e860(param_1,param_2,param_3,param_4,0);
  return param_1;
}



void __thiscall FUN_0082e9a0(int **param_1_00,int param_1,uint param_2)

{
  int *piVar1;
  int iStack_104;
  undefined uStack_100;
  undefined uStack_fe;
  undefined4 uStack_fc;
  undefined uStack_f8;
  undefined4 uStack_f0;
  int iStack_ec;
  undefined uStack_e8;
  undefined uStack_e6;
  undefined4 uStack_e4;
  uint uStack_e0;
  undefined4 uStack_dc;
  undefined4 uStack_d8;
  int *piStack_d4;
  uint uStack_d0;
  int *piStack_bc;
  int *piStack_b8;
  undefined uStack_ae;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3abb;
  local_c = ExceptionList;
  uStack_d0 = DAT_0323f878 ^ (uint)&stack0xffffff34;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    if ((*(byte *)(*(int *)(**param_1_00 + 4) + 8 + (int)*param_1_00) & 6) != 0) {
      piStack_d4 = (int *)0x1;
      uStack_d8 = 0;
      uStack_dc = 0;
      uStack_e0 = 0xd;
      uStack_e4 = 0x82e9fd;
      piStack_d4 = (int *)FUN_00832e60();
      local_4 = 0;
      uStack_d8 = 0x82ea0a;
      FUN_0043fc7f();
    }
    piStack_d4 = (int *)0xa;
    uStack_d8 = 0x82ea11;
    FUN_005e3200();
    piVar1 = *param_1_00;
    uStack_e6 = uStack_ae;
    uStack_e8 = 0;
    uStack_e4 = 0;
    uStack_e0 = uStack_e0 & 0xffffff00;
    uStack_d8 = 0;
    iStack_ec = param_2 + param_1;
    piStack_bc = &iStack_104;
    iStack_104 = param_1;
    uStack_100 = 0;
    uStack_fe = uStack_ae;
    uStack_fc = 0;
    uStack_f8 = 0;
    uStack_f0 = 0;
    piStack_d4 = piVar1;
    piStack_b8 = piVar1;
    FUN_0082e910(&piStack_bc);
    if (param_2 != (param_2 / 3) * 3) {
      piStack_d4 = (int *)0x3d;
      uStack_d8 = 0x82ea92;
      piStack_bc = piVar1;
      FUN_0082d5d0();
      if (param_2 % 3 < 2) {
        piStack_d4 = (int *)0x3d;
        uStack_d8 = 0x82eaa2;
        FUN_0082d5d0();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_0082eac0(int param_1)

{
  return **(undefined4 **)(param_1 + 4);
}



void FUN_0082ead0(int param_1)

{
  char cVar1;
  int iVar2;
  
  iVar2 = *(int *)(param_1 + 8);
  cVar1 = *(char *)(iVar2 + 0x19);
  while (cVar1 == '\0') {
    iVar2 = *(int *)(iVar2 + 8);
    cVar1 = *(char *)(iVar2 + 0x19);
  }
  return;
}



void FUN_0082eaf0(int **param_1)

{
  char cVar1;
  int *piVar2;
  
  piVar2 = *param_1;
  cVar1 = *(char *)((int)piVar2 + 0x19);
  while (cVar1 == '\0') {
    piVar2 = (int *)*piVar2;
    cVar1 = *(char *)((int)piVar2 + 0x19);
  }
  return;
}



void FUN_0082eb10(int **param_1)

{
  char cVar1;
  int *piVar2;
  
  piVar2 = *param_1;
  cVar1 = *(char *)((int)piVar2 + 0x15);
  while (cVar1 == '\0') {
    piVar2 = (int *)*piVar2;
    cVar1 = *(char *)((int)piVar2 + 0x15);
  }
  return;
}



void __fastcall FUN_0082eb30(int *param_1)

{
  char cVar1;
  int iVar2;
  int **ppiVar3;
  int **ppiVar4;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  iVar2 = param_1[1];
  if (*(char *)(iVar2 + 0x19) == '\0') {
    ppiVar3 = *(int ***)(iVar2 + 8);
    if (*(char *)((int)ppiVar3 + 0x19) != '\0') {
      iVar2 = *(int *)(iVar2 + 4);
      cVar1 = *(char *)(iVar2 + 0x19);
      while ((cVar1 == '\0' && (param_1[1] == *(int *)(iVar2 + 8)))) {
        param_1[1] = iVar2;
        iVar2 = *(int *)(iVar2 + 4);
        cVar1 = *(char *)(iVar2 + 0x19);
      }
      param_1[1] = iVar2;
      return;
    }
    cVar1 = *(char *)((int)*ppiVar3 + 0x19);
    ppiVar4 = (int **)*ppiVar3;
    while (cVar1 == '\0') {
      cVar1 = *(char *)((int)*ppiVar4 + 0x19);
      ppiVar3 = ppiVar4;
      ppiVar4 = (int **)*ppiVar4;
    }
    param_1[1] = (int)ppiVar3;
    return;
  }
  FUN_00a3fb10();
  return;
}



void __fastcall FUN_0082eba0(int *param_1)

{
  char cVar1;
  int iVar2;
  int **ppiVar3;
  int **ppiVar4;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  iVar2 = param_1[1];
  if (*(char *)(iVar2 + 0x11) == '\0') {
    ppiVar3 = *(int ***)(iVar2 + 8);
    if (*(char *)((int)ppiVar3 + 0x11) != '\0') {
      iVar2 = *(int *)(iVar2 + 4);
      cVar1 = *(char *)(iVar2 + 0x11);
      while ((cVar1 == '\0' && (param_1[1] == *(int *)(iVar2 + 8)))) {
        param_1[1] = iVar2;
        iVar2 = *(int *)(iVar2 + 4);
        cVar1 = *(char *)(iVar2 + 0x11);
      }
      param_1[1] = iVar2;
      return;
    }
    cVar1 = *(char *)((int)*ppiVar3 + 0x11);
    ppiVar4 = (int **)*ppiVar3;
    while (cVar1 == '\0') {
      cVar1 = *(char *)((int)*ppiVar4 + 0x11);
      ppiVar3 = ppiVar4;
      ppiVar4 = (int **)*ppiVar4;
    }
    param_1[1] = (int)ppiVar3;
    return;
  }
  FUN_00a3fb10();
  return;
}



void __thiscall FUN_0082ec10(int param_1_00,int *param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1[2];
  param_1[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x19) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1;
  }
  ppiVar1[1] = (int *)param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = ppiVar1;
    *ppiVar1 = param_1;
    param_1[1] = (int)ppiVar1;
    return;
  }
  ppiVar2 = (int **)param_1[1];
  if (param_1 == *ppiVar2) {
    *ppiVar2 = (int *)ppiVar1;
    *ppiVar1 = param_1;
    param_1[1] = (int)ppiVar1;
    return;
  }
  ppiVar2[2] = (int *)ppiVar1;
  *ppiVar1 = param_1;
  param_1[1] = (int)ppiVar1;
  return;
}



void __thiscall FUN_0082ec60(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1;
  *param_1 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x19) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1;
  }
  *(int *)(iVar1 + 4) = param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1_00 + 0x18) + 4) = iVar1;
    *(int **)(iVar1 + 8) = param_1;
    param_1[1] = iVar1;
    return;
  }
  piVar2 = (int *)param_1[1];
  if (param_1 == (int *)piVar2[2]) {
    piVar2[2] = iVar1;
    *(int **)(iVar1 + 8) = param_1;
    param_1[1] = iVar1;
    return;
  }
  *piVar2 = iVar1;
  *(int **)(iVar1 + 8) = param_1;
  param_1[1] = iVar1;
  return;
}



void __fastcall FUN_0082ecc0(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)param_1[1];
  if (*(char *)((int)piVar2 + 0x19) == '\0') {
    iVar3 = *piVar2;
    if (*(char *)(iVar3 + 0x19) == '\0') {
      cVar1 = *(char *)(*(int *)(iVar3 + 8) + 0x19);
      iVar4 = *(int *)(iVar3 + 8);
      while (cVar1 == '\0') {
        cVar1 = *(char *)(*(int *)(iVar4 + 8) + 0x19);
        iVar3 = iVar4;
        iVar4 = *(int *)(iVar4 + 8);
      }
      param_1[1] = iVar3;
      return;
    }
    piVar2 = (int *)piVar2[1];
    cVar1 = *(char *)((int)piVar2 + 0x19);
    while ((cVar1 == '\0' && (param_1[1] == *piVar2))) {
      param_1[1] = (int)piVar2;
      piVar2 = (int *)piVar2[1];
      cVar1 = *(char *)((int)piVar2 + 0x19);
    }
    if (*(char *)(param_1[1] + 0x19) != '\0') {
      FUN_00a3fb10();
      return;
    }
    param_1[1] = (int)piVar2;
  }
  else {
    iVar3 = piVar2[2];
    param_1[1] = iVar3;
    if (*(char *)(iVar3 + 0x19) != '\0') {
      FUN_00a3fb10();
      return;
    }
  }
  return;
}



void FUN_0082ed50(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,
                 undefined param_5)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x1c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[2] = param_3;
    puVar1[1] = param_2;
    puVar1[3] = *param_4;
    *(undefined2 *)(puVar1 + 4) = *(undefined2 *)(param_4 + 1);
    puVar1[5] = param_4[2];
    *(undefined *)(puVar1 + 6) = param_5;
    *(undefined *)((int)puVar1 + 0x19) = 0;
  }
  return;
}



void FUN_0082eda0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,
                 undefined param_5)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[2] = param_3;
    puVar1[1] = param_2;
    puVar1[3] = *param_4;
    *(undefined2 *)(puVar1 + 4) = *(undefined2 *)(param_4 + 1);
    *(undefined *)((int)puVar1 + 0x12) = *(undefined *)((int)param_4 + 6);
    *(undefined *)(puVar1 + 5) = param_5;
    *(undefined *)((int)puVar1 + 0x15) = 0;
  }
  return;
}



void FUN_0082edf0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x1c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 6) = 1;
  *(undefined *)((int)puVar1 + 0x19) = 0;
  return;
}



void FUN_0082ee30(int param_1)

{
  if (*(char *)(param_1 + 0x19) == '\0') {
    FUN_0082ee30(*(undefined4 *)(param_1 + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __thiscall FUN_0082ee70(int *param_1_00,int *param_1,uint *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined4 *puVar5;
  int local_10;
  undefined4 *local_c;
  int local_8;
  int local_4;
  
  puVar5 = (undefined4 *)param_1_00[6];
  if (*(char *)((int)(undefined4 *)puVar5[1] + 0x11) == '\0') {
    puVar2 = (undefined4 *)puVar5[1];
    do {
      if ((uint)puVar2[3] < *param_2) {
        puVar3 = (undefined4 *)puVar2[2];
      }
      else {
        puVar3 = (undefined4 *)*puVar2;
        puVar5 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar3 + 0x11) == '\0');
  }
  puVar2 = (undefined4 *)param_1_00[6];
  local_c = puVar5;
  local_10 = *param_1_00;
  if (*param_1_00 == 0) {
    FUN_00a3fb10();
  }
  if ((puVar5 == puVar2) || (*param_2 < (uint)puVar5[3])) {
    local_4 = param_1_00[6];
    local_8 = *param_1_00;
    piVar4 = &local_8;
  }
  else {
    piVar4 = &local_10;
  }
  iVar1 = piVar4[1];
  *param_1 = *piVar4;
  param_1[1] = iVar1;
  return;
}



void __thiscall
FUN_0082ef00(undefined4 *param_1_00,undefined4 *param_1,char param_2,int **param_3,
            undefined4 param_4)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  int *piVar4;
  undefined4 uVar5;
  int *piVar6;
  int **ppiVar7;
  int *piVar8;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2db8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (0x15555553 < (uint)param_1_00[7]) {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"map/set<T> too long",0x13);
    local_4 = 0;
    FUN_00417ca0(local_50);
    local_34[0] = std::length_error::vftable;
    __CxxThrowException_8(local_34,&DAT_03115554);
  }
  piVar6 = (int *)FUN_0082ed50(param_1_00[6],param_3,param_1_00[6],param_4,0);
  param_1_00[7] = param_1_00[7] + 1;
  if (param_3 == (int **)param_1_00[6]) {
    ((int **)param_1_00[6])[1] = piVar6;
    *(int **)param_1_00[6] = piVar6;
    *(int **)(param_1_00[6] + 8) = piVar6;
  }
  else if (param_2 == '\0') {
    param_3[2] = piVar6;
    if (param_3 == *(int ***)(param_1_00[6] + 8)) {
      *(int **)(param_1_00[6] + 8) = piVar6;
    }
  }
  else {
    *param_3 = piVar6;
    if (param_3 == *(int ***)(int **)param_1_00[6]) {
      *(int **)param_1_00[6] = piVar6;
    }
  }
  cVar1 = *(char *)(piVar6[1] + 0x18);
  piVar8 = piVar6;
  while (cVar1 == '\0') {
    ppiVar7 = (int **)(piVar8 + 1);
    piVar2 = *ppiVar7;
    ppiVar3 = (int **)piVar2[1];
    if (piVar2 == *ppiVar3) {
      piVar4 = ppiVar3[2];
      if (*(char *)(piVar4 + 6) == '\0') {
        *(undefined *)(piVar2 + 6) = 1;
        *(undefined *)(piVar4 + 6) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x18) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)piVar2[2]) {
          FUN_0082ec10(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x18) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x18) = 0;
        FUN_0082ec60(*(undefined4 *)(piVar8[1] + 4));
      }
    }
    else {
      piVar4 = *ppiVar3;
      if (*(char *)(piVar4 + 6) == '\0') {
        *(undefined *)(piVar2 + 6) = 1;
        *(undefined *)(piVar4 + 6) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x18) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)*piVar2) {
          FUN_0082ec60(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x18) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x18) = 0;
        piVar2 = *(int **)(piVar8[1] + 4);
        piVar4 = (int *)piVar2[2];
        piVar2[2] = *piVar4;
        if (*(char *)(*piVar4 + 0x19) == '\0') {
          *(int **)(*piVar4 + 4) = piVar2;
        }
        piVar4[1] = piVar2[1];
        if (piVar2 == (int *)*(int *)(param_1_00[6] + 4)) {
          *(int **)(param_1_00[6] + 4) = piVar4;
        }
        else {
          ppiVar3 = (int **)piVar2[1];
          if (piVar2 == *ppiVar3) {
            *ppiVar3 = piVar4;
          }
          else {
            ppiVar3[2] = piVar4;
          }
        }
        *piVar4 = (int)piVar2;
        piVar2[1] = (int)piVar4;
      }
    }
    cVar1 = *(char *)(piVar8[1] + 0x18);
  }
  *(undefined *)(*(int *)(param_1_00[6] + 4) + 0x18) = 1;
  uVar5 = *param_1_00;
  param_1[1] = piVar6;
  *param_1 = uVar5;
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_0082f100(undefined4 *param_1_00,undefined4 *param_1,char param_2,int **param_3,
            undefined4 param_4)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  int *piVar4;
  undefined4 uVar5;
  int *piVar6;
  int **ppiVar7;
  int *piVar8;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2db8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (0x1ffffffd < (uint)param_1_00[7]) {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"map/set<T> too long",0x13);
    local_4 = 0;
    FUN_00417ca0(local_50);
    local_34[0] = std::length_error::vftable;
    __CxxThrowException_8(local_34,&DAT_03115554);
  }
  piVar6 = (int *)FUN_0082eda0(param_1_00[6],param_3,param_1_00[6],param_4,0);
  param_1_00[7] = param_1_00[7] + 1;
  if (param_3 == (int **)param_1_00[6]) {
    ((int **)param_1_00[6])[1] = piVar6;
    *(int **)param_1_00[6] = piVar6;
    *(int **)(param_1_00[6] + 8) = piVar6;
  }
  else if (param_2 == '\0') {
    param_3[2] = piVar6;
    if (param_3 == *(int ***)(param_1_00[6] + 8)) {
      *(int **)(param_1_00[6] + 8) = piVar6;
    }
  }
  else {
    *param_3 = piVar6;
    if (param_3 == *(int ***)(int **)param_1_00[6]) {
      *(int **)param_1_00[6] = piVar6;
    }
  }
  cVar1 = *(char *)(piVar6[1] + 0x14);
  piVar8 = piVar6;
  while (cVar1 == '\0') {
    ppiVar7 = (int **)(piVar8 + 1);
    piVar2 = *ppiVar7;
    ppiVar3 = (int **)piVar2[1];
    if (piVar2 == *ppiVar3) {
      piVar4 = ppiVar3[2];
      if (*(char *)(piVar4 + 5) == '\0') {
        *(undefined *)(piVar2 + 5) = 1;
        *(undefined *)(piVar4 + 5) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x14) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)piVar2[2]) {
          FUN_00831780(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x14) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x14) = 0;
        FUN_008317d0(*(undefined4 *)(piVar8[1] + 4));
      }
    }
    else {
      piVar4 = *ppiVar3;
      if (*(char *)(piVar4 + 5) == '\0') {
        *(undefined *)(piVar2 + 5) = 1;
        *(undefined *)(piVar4 + 5) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x14) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)*piVar2) {
          FUN_008317d0(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x14) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x14) = 0;
        piVar2 = *(int **)(piVar8[1] + 4);
        piVar4 = (int *)piVar2[2];
        piVar2[2] = *piVar4;
        if (*(char *)(*piVar4 + 0x15) == '\0') {
          *(int **)(*piVar4 + 4) = piVar2;
        }
        piVar4[1] = piVar2[1];
        if (piVar2 == (int *)*(int *)(param_1_00[6] + 4)) {
          *(int **)(param_1_00[6] + 4) = piVar4;
        }
        else {
          ppiVar3 = (int **)piVar2[1];
          if (piVar2 == *ppiVar3) {
            *ppiVar3 = piVar4;
          }
          else {
            ppiVar3[2] = piVar4;
          }
        }
        *piVar4 = (int)piVar2;
        piVar2[1] = (int)piVar4;
      }
    }
    cVar1 = *(char *)(piVar8[1] + 0x14);
  }
  *(undefined *)(*(int *)(param_1_00[6] + 4) + 0x14) = 1;
  uVar5 = *param_1_00;
  param_1[1] = piVar6;
  *param_1 = uVar5;
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_0082f300(undefined4 *param_1_00,undefined4 *param_1,char param_2,int **param_3,
            undefined4 param_4)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  int *piVar4;
  undefined4 uVar5;
  int *piVar6;
  int **ppiVar7;
  int *piVar8;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2db8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (0x3ffffffd < (uint)param_1_00[7]) {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"map/set<T> too long",0x13);
    local_4 = 0;
    FUN_00417ca0(local_50);
    local_34[0] = std::length_error::vftable;
    __CxxThrowException_8(local_34,&DAT_03115554);
  }
  piVar6 = (int *)FUN_00830a50(param_1_00[6],param_3,param_1_00[6],param_4,0);
  param_1_00[7] = param_1_00[7] + 1;
  if (param_3 == (int **)param_1_00[6]) {
    ((int **)param_1_00[6])[1] = piVar6;
    *(int **)param_1_00[6] = piVar6;
    *(int **)(param_1_00[6] + 8) = piVar6;
  }
  else if (param_2 == '\0') {
    param_3[2] = piVar6;
    if (param_3 == *(int ***)(param_1_00[6] + 8)) {
      *(int **)(param_1_00[6] + 8) = piVar6;
    }
  }
  else {
    *param_3 = piVar6;
    if (param_3 == *(int ***)(int **)param_1_00[6]) {
      *(int **)param_1_00[6] = piVar6;
    }
  }
  cVar1 = *(char *)(piVar6[1] + 0x10);
  piVar8 = piVar6;
  while (cVar1 == '\0') {
    ppiVar7 = (int **)(piVar8 + 1);
    piVar2 = *ppiVar7;
    ppiVar3 = (int **)piVar2[1];
    if (piVar2 == *ppiVar3) {
      piVar4 = ppiVar3[2];
      if (*(char *)(piVar4 + 4) == '\0') {
        *(undefined *)(piVar2 + 4) = 1;
        *(undefined *)(piVar4 + 4) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x10) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)piVar2[2]) {
          FUN_0083d600(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x10) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x10) = 0;
        FUN_00830970(*(undefined4 *)(piVar8[1] + 4));
      }
    }
    else {
      piVar4 = *ppiVar3;
      if (*(char *)(piVar4 + 4) == '\0') {
        *(undefined *)(piVar2 + 4) = 1;
        *(undefined *)(piVar4 + 4) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x10) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)*piVar2) {
          FUN_00830970(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x10) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x10) = 0;
        piVar2 = *(int **)(piVar8[1] + 4);
        piVar4 = (int *)piVar2[2];
        piVar2[2] = *piVar4;
        if (*(char *)(*piVar4 + 0x11) == '\0') {
          *(int **)(*piVar4 + 4) = piVar2;
        }
        piVar4[1] = piVar2[1];
        if (piVar2 == (int *)*(int *)(param_1_00[6] + 4)) {
          *(int **)(param_1_00[6] + 4) = piVar4;
        }
        else {
          ppiVar3 = (int **)piVar2[1];
          if (piVar2 == *ppiVar3) {
            *ppiVar3 = piVar4;
          }
          else {
            ppiVar3[2] = piVar4;
          }
        }
        *piVar4 = (int)piVar2;
        piVar2[1] = (int)piVar4;
      }
    }
    cVar1 = *(char *)(piVar8[1] + 0x10);
  }
  *(undefined *)(*(int *)(param_1_00[6] + 4) + 0x10) = 1;
  uVar5 = *param_1_00;
  param_1[1] = piVar6;
  *param_1 = uVar5;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0082f500(int param_1_00,undefined4 param_1,undefined4 param_2,int **param_3)

{
  undefined uVar1;
  int iVar2;
  uint uVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined4 uVar6;
  int **ppiVar7;
  int **ppiVar8;
  int **ppiVar9;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3ae8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  ppiVar4 = param_3;
  if (*(char *)((int)param_3 + 0x19) != '\0') {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"invalid map/set<T> iterator",0x1b);
    local_4 = 0;
    FUN_00417ca0(local_50);
    local_34[0] = std::out_of_range::vftable;
    ppiVar4 = (int **)__CxxThrowException_8(local_34,&DAT_03115668);
  }
  FUN_0082eb30(uVar3);
  ppiVar7 = (int **)*ppiVar4;
  if (*(char *)((int)ppiVar7 + 0x19) == '\0') {
    ppiVar9 = ppiVar7;
    if (*(char *)((int)ppiVar4[2] + 0x19) == '\0') {
      ppiVar9 = (int **)param_3[2];
      if (param_3 != ppiVar4) {
        ppiVar7[1] = (int *)param_3;
        *param_3 = *ppiVar4;
        ppiVar7 = param_3;
        if (param_3 != (int **)ppiVar4[2]) {
          ppiVar7 = (int **)param_3[1];
          if (*(char *)((int)ppiVar9 + 0x19) == '\0') {
            ppiVar9[1] = (int *)ppiVar7;
          }
          *ppiVar7 = (int *)ppiVar9;
          param_3[2] = ppiVar4[2];
          ppiVar4[2][1] = (int)param_3;
        }
        if (*(int ***)(*(int *)(param_1_00 + 0x18) + 4) == ppiVar4) {
          *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = param_3;
        }
        else {
          ppiVar8 = (int **)ppiVar4[1];
          if ((int **)*ppiVar8 == ppiVar4) {
            *ppiVar8 = (int *)param_3;
          }
          else {
            ppiVar8[2] = (int *)param_3;
          }
        }
        param_3[1] = ppiVar4[1];
        ppiVar8 = ppiVar4 + 6;
        param_3 = param_3 + 6;
        if (param_3 != ppiVar8) {
          uVar1 = *(undefined *)param_3;
          *(undefined *)param_3 = *(undefined *)ppiVar8;
          *(undefined *)ppiVar8 = uVar1;
        }
        goto LAB_0082f67d;
      }
    }
  }
  else {
    ppiVar9 = (int **)ppiVar4[2];
  }
  ppiVar7 = (int **)ppiVar4[1];
  if (*(char *)((int)ppiVar9 + 0x19) == '\0') {
    ppiVar9[1] = (int *)ppiVar7;
  }
  if (*(int ***)(*(int *)(param_1_00 + 0x18) + 4) == ppiVar4) {
    *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = ppiVar9;
  }
  else if ((int **)*ppiVar7 == ppiVar4) {
    *ppiVar7 = (int *)ppiVar9;
  }
  else {
    ppiVar7[2] = (int *)ppiVar9;
  }
  ppiVar8 = *(int ***)(param_1_00 + 0x18);
  if ((int **)*ppiVar8 == ppiVar4) {
    ppiVar5 = ppiVar7;
    if (*(char *)((int)ppiVar9 + 0x19) == '\0') {
      ppiVar5 = (int **)FUN_0082eaf0(ppiVar9);
    }
    *ppiVar8 = (int *)ppiVar5;
  }
  iVar2 = *(int *)(param_1_00 + 0x18);
  if (*(int ***)(iVar2 + 8) == ppiVar4) {
    if (*(char *)((int)ppiVar9 + 0x19) == '\0') {
      uVar6 = FUN_0082ead0(ppiVar9);
      *(undefined4 *)(iVar2 + 8) = uVar6;
    }
    else {
      *(int ***)(iVar2 + 8) = ppiVar7;
    }
  }
LAB_0082f67d:
  if (*(char *)(ppiVar4 + 6) == '\x01') {
    if (ppiVar9 != *(int ***)(*(int *)(param_1_00 + 0x18) + 4)) {
      do {
        ppiVar8 = ppiVar7;
        if (*(char *)(ppiVar9 + 6) != '\x01') break;
        ppiVar7 = (int **)*ppiVar8;
        if (ppiVar9 == ppiVar7) {
          ppiVar7 = (int **)ppiVar8[2];
          if (*(char *)(ppiVar7 + 6) == '\0') {
            *(undefined *)(ppiVar7 + 6) = 1;
            *(undefined *)(ppiVar8 + 6) = 0;
            FUN_0082ec10(ppiVar8);
            ppiVar7 = (int **)ppiVar8[2];
          }
          if (*(char *)((int)ppiVar7 + 0x19) == '\0') {
            if ((*(char *)(*ppiVar7 + 6) != '\x01') || (*(char *)(ppiVar7[2] + 6) != '\x01')) {
              if (*(char *)(ppiVar7[2] + 6) == '\x01') {
                *(undefined *)(*ppiVar7 + 6) = 1;
                *(undefined *)(ppiVar7 + 6) = 0;
                FUN_0082ec60(ppiVar7);
                ppiVar7 = (int **)ppiVar8[2];
              }
              *(undefined *)(ppiVar7 + 6) = *(undefined *)(ppiVar8 + 6);
              *(undefined *)(ppiVar8 + 6) = 1;
              *(undefined *)(ppiVar7[2] + 6) = 1;
              FUN_0082ec10(ppiVar8);
              break;
            }
LAB_0082f740:
            *(undefined *)(ppiVar7 + 6) = 0;
          }
        }
        else {
          if (*(char *)(ppiVar7 + 6) == '\0') {
            *(undefined *)(ppiVar7 + 6) = 1;
            *(undefined *)(ppiVar8 + 6) = 0;
            FUN_0082ec60(ppiVar8);
            ppiVar7 = (int **)*ppiVar8;
          }
          if (*(char *)((int)ppiVar7 + 0x19) == '\0') {
            if ((*(char *)(ppiVar7[2] + 6) == '\x01') && (*(char *)(*ppiVar7 + 6) == '\x01'))
            goto LAB_0082f740;
            if (*(char *)(*ppiVar7 + 6) == '\x01') {
              *(undefined *)(ppiVar7[2] + 6) = 1;
              *(undefined *)(ppiVar7 + 6) = 0;
              FUN_0082ec10(ppiVar7);
              ppiVar7 = (int **)*ppiVar8;
            }
            *(undefined *)(ppiVar7 + 6) = *(undefined *)(ppiVar8 + 6);
            *(undefined *)(ppiVar8 + 6) = 1;
            *(undefined *)(*ppiVar7 + 6) = 1;
            FUN_0082ec60(ppiVar8);
            break;
          }
        }
        ppiVar7 = (int **)ppiVar8[1];
        ppiVar9 = ppiVar8;
      } while (ppiVar8 != *(int ***)(*(int *)(param_1_00 + 0x18) + 4));
    }
    *(undefined *)(ppiVar9 + 6) = 1;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(ppiVar4);
}



void __thiscall FUN_0082f7d0(int param_1_00,undefined4 param_1,undefined4 param_2,int **param_3)

{
  undefined uVar1;
  int iVar2;
  uint uVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined4 uVar6;
  int **ppiVar7;
  int **ppiVar8;
  int **ppiVar9;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3ae8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  ppiVar4 = param_3;
  if (*(char *)((int)param_3 + 0x15) != '\0') {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"invalid map/set<T> iterator",0x1b);
    local_4 = 0;
    FUN_00417ca0(local_50);
    local_34[0] = std::out_of_range::vftable;
    ppiVar4 = (int **)__CxxThrowException_8(local_34,&DAT_03115668);
  }
  FUN_0082bc00(uVar3);
  ppiVar7 = (int **)*ppiVar4;
  if (*(char *)((int)ppiVar7 + 0x15) == '\0') {
    ppiVar9 = ppiVar7;
    if (*(char *)((int)ppiVar4[2] + 0x15) == '\0') {
      ppiVar9 = (int **)param_3[2];
      if (param_3 != ppiVar4) {
        ppiVar7[1] = (int *)param_3;
        *param_3 = *ppiVar4;
        ppiVar7 = param_3;
        if (param_3 != (int **)ppiVar4[2]) {
          ppiVar7 = (int **)param_3[1];
          if (*(char *)((int)ppiVar9 + 0x15) == '\0') {
            ppiVar9[1] = (int *)ppiVar7;
          }
          *ppiVar7 = (int *)ppiVar9;
          param_3[2] = ppiVar4[2];
          ppiVar4[2][1] = (int)param_3;
        }
        if (*(int ***)(*(int *)(param_1_00 + 0x18) + 4) == ppiVar4) {
          *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = param_3;
        }
        else {
          ppiVar8 = (int **)ppiVar4[1];
          if ((int **)*ppiVar8 == ppiVar4) {
            *ppiVar8 = (int *)param_3;
          }
          else {
            ppiVar8[2] = (int *)param_3;
          }
        }
        param_3[1] = ppiVar4[1];
        ppiVar8 = ppiVar4 + 5;
        param_3 = param_3 + 5;
        if (param_3 != ppiVar8) {
          uVar1 = *(undefined *)param_3;
          *(undefined *)param_3 = *(undefined *)ppiVar8;
          *(undefined *)ppiVar8 = uVar1;
        }
        goto LAB_0082f94d;
      }
    }
  }
  else {
    ppiVar9 = (int **)ppiVar4[2];
  }
  ppiVar7 = (int **)ppiVar4[1];
  if (*(char *)((int)ppiVar9 + 0x15) == '\0') {
    ppiVar9[1] = (int *)ppiVar7;
  }
  if (*(int ***)(*(int *)(param_1_00 + 0x18) + 4) == ppiVar4) {
    *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = ppiVar9;
  }
  else if ((int **)*ppiVar7 == ppiVar4) {
    *ppiVar7 = (int *)ppiVar9;
  }
  else {
    ppiVar7[2] = (int *)ppiVar9;
  }
  ppiVar8 = *(int ***)(param_1_00 + 0x18);
  if ((int **)*ppiVar8 == ppiVar4) {
    ppiVar5 = ppiVar7;
    if (*(char *)((int)ppiVar9 + 0x15) == '\0') {
      ppiVar5 = (int **)FUN_0082eb10(ppiVar9);
    }
    *ppiVar8 = (int *)ppiVar5;
  }
  iVar2 = *(int *)(param_1_00 + 0x18);
  if (*(int ***)(iVar2 + 8) == ppiVar4) {
    if (*(char *)((int)ppiVar9 + 0x15) == '\0') {
      uVar6 = FUN_00831480(ppiVar9);
      *(undefined4 *)(iVar2 + 8) = uVar6;
    }
    else {
      *(int ***)(iVar2 + 8) = ppiVar7;
    }
  }
LAB_0082f94d:
  if (*(char *)(ppiVar4 + 5) == '\x01') {
    if (ppiVar9 != *(int ***)(*(int *)(param_1_00 + 0x18) + 4)) {
      do {
        ppiVar8 = ppiVar7;
        if (*(char *)(ppiVar9 + 5) != '\x01') break;
        ppiVar7 = (int **)*ppiVar8;
        if (ppiVar9 == ppiVar7) {
          ppiVar7 = (int **)ppiVar8[2];
          if (*(char *)(ppiVar7 + 5) == '\0') {
            *(undefined *)(ppiVar7 + 5) = 1;
            *(undefined *)(ppiVar8 + 5) = 0;
            FUN_00831780(ppiVar8);
            ppiVar7 = (int **)ppiVar8[2];
          }
          if (*(char *)((int)ppiVar7 + 0x15) == '\0') {
            if ((*(char *)(*ppiVar7 + 5) != '\x01') || (*(char *)(ppiVar7[2] + 5) != '\x01')) {
              if (*(char *)(ppiVar7[2] + 5) == '\x01') {
                *(undefined *)(*ppiVar7 + 5) = 1;
                *(undefined *)(ppiVar7 + 5) = 0;
                FUN_008317d0(ppiVar7);
                ppiVar7 = (int **)ppiVar8[2];
              }
              *(undefined *)(ppiVar7 + 5) = *(undefined *)(ppiVar8 + 5);
              *(undefined *)(ppiVar8 + 5) = 1;
              *(undefined *)(ppiVar7[2] + 5) = 1;
              FUN_00831780(ppiVar8);
              break;
            }
LAB_0082fa10:
            *(undefined *)(ppiVar7 + 5) = 0;
          }
        }
        else {
          if (*(char *)(ppiVar7 + 5) == '\0') {
            *(undefined *)(ppiVar7 + 5) = 1;
            *(undefined *)(ppiVar8 + 5) = 0;
            FUN_008317d0(ppiVar8);
            ppiVar7 = (int **)*ppiVar8;
          }
          if (*(char *)((int)ppiVar7 + 0x15) == '\0') {
            if ((*(char *)(ppiVar7[2] + 5) == '\x01') && (*(char *)(*ppiVar7 + 5) == '\x01'))
            goto LAB_0082fa10;
            if (*(char *)(*ppiVar7 + 5) == '\x01') {
              *(undefined *)(ppiVar7[2] + 5) = 1;
              *(undefined *)(ppiVar7 + 5) = 0;
              FUN_00831780(ppiVar7);
              ppiVar7 = (int **)*ppiVar8;
            }
            *(undefined *)(ppiVar7 + 5) = *(undefined *)(ppiVar8 + 5);
            *(undefined *)(ppiVar8 + 5) = 1;
            *(undefined *)(*ppiVar7 + 5) = 1;
            FUN_008317d0(ppiVar8);
            break;
          }
        }
        ppiVar7 = (int **)ppiVar8[1];
        ppiVar9 = ppiVar8;
      } while (ppiVar8 != *(int ***)(*(int *)(param_1_00 + 0x18) + 4));
    }
    *(undefined *)(ppiVar9 + 5) = 1;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(ppiVar4);
}



void __thiscall FUN_0082faa0(int *param_1_00,int *param_1,uint *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  bool bVar4;
  undefined4 *puVar5;
  int local_8;
  undefined4 *local_4;
  
  puVar5 = (undefined4 *)param_1_00[6];
  bVar4 = true;
  if (*(char *)((int)(undefined4 *)puVar5[1] + 0x19) == '\0') {
    puVar2 = (undefined4 *)puVar5[1];
    do {
      puVar5 = puVar2;
      if (*param_2 < (uint)puVar5[3]) {
        bVar4 = true;
      }
      else if ((uint)puVar5[3] < *param_2) {
        bVar4 = false;
      }
      else {
        bVar4 = *(short *)(param_2 + 1) < *(short *)(puVar5 + 4);
      }
      if (bVar4) {
        puVar2 = (undefined4 *)*puVar5;
      }
      else {
        puVar2 = (undefined4 *)puVar5[2];
      }
    } while (*(char *)((int)puVar2 + 0x19) == '\0');
  }
  local_8 = *param_1_00;
  local_4 = puVar5;
  if (bVar4) {
    puVar2 = *(undefined4 **)param_1_00[6];
    if (local_8 == 0) {
      FUN_00a3fb10();
    }
    if (puVar5 == puVar2) {
      piVar3 = (int *)FUN_0082ef00(&local_8,1,puVar5,param_2);
      iVar1 = piVar3[1];
      *param_1 = *piVar3;
      *(undefined *)(param_1 + 2) = 1;
      param_1[1] = iVar1;
      return;
    }
    FUN_0082ecc0();
  }
  if ((*param_2 <= (uint)local_4[3]) &&
     ((*param_2 < (uint)local_4[3] || (*(short *)(param_2 + 1) <= *(short *)(local_4 + 4))))) {
    *param_1 = local_8;
    *(undefined *)(param_1 + 2) = 0;
    param_1[1] = (int)local_4;
    return;
  }
  piVar3 = (int *)FUN_0082ef00(&local_8,bVar4,puVar5,param_2);
  iVar1 = piVar3[1];
  *param_1 = *piVar3;
  *(undefined *)(param_1 + 2) = 1;
  param_1[1] = iVar1;
  return;
}



void __thiscall FUN_0082fbd0(int *param_1_00,int *param_1,int *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  char cVar3;
  char cVar4;
  undefined4 *puVar5;
  int *piVar6;
  undefined4 *puVar7;
  int local_8;
  undefined4 *local_4;
  
  puVar1 = (undefined4 *)((undefined4 *)param_1_00[6])[1];
  cVar3 = '\x01';
  cVar4 = *(char *)((int)puVar1 + 0x15);
  puVar5 = (undefined4 *)param_1_00[6];
  while (cVar4 == '\0') {
    if (puVar1[3] == 0) {
      puVar5 = (undefined4 *)0x0;
    }
    else {
      puVar5 = (undefined4 *)(puVar1[3] + 4);
    }
    cVar3 = FUN_00830f20(*puVar5);
    if (cVar3 == '\0') {
      puVar7 = (undefined4 *)puVar1[2];
    }
    else {
      puVar7 = (undefined4 *)*puVar1;
    }
    puVar5 = puVar1;
    puVar1 = puVar7;
    cVar4 = *(char *)((int)puVar7 + 0x15);
  }
  local_8 = *param_1_00;
  local_4 = puVar5;
  if (cVar3 != '\0') {
    puVar1 = *(undefined4 **)param_1_00[6];
    if (local_8 == 0) {
      FUN_00a3fb10();
    }
    if (puVar5 == puVar1) {
      cVar3 = '\x01';
      goto LAB_0082fc5c;
    }
    FUN_0082bcb0();
  }
  puVar1 = local_4;
  iVar2 = local_8;
  if (*param_2 == 0) {
    puVar7 = (undefined4 *)0x0;
  }
  else {
    puVar7 = (undefined4 *)(*param_2 + 4);
  }
  cVar4 = FUN_00830f20(*puVar7);
  if (cVar4 == '\0') {
    param_1[1] = (int)puVar1;
    *param_1 = iVar2;
    *(undefined *)(param_1 + 2) = 0;
    return;
  }
LAB_0082fc5c:
  piVar6 = (int *)FUN_0082f100(&local_8,cVar3,puVar5,param_2);
  iVar2 = piVar6[1];
  *param_1 = *piVar6;
  param_1[1] = iVar2;
  *(undefined *)(param_1 + 2) = 1;
  return;
}



void __thiscall FUN_0082fce0(int *param_1_00,int *param_1,uint *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  undefined4 *puVar4;
  bool bVar5;
  int local_8;
  undefined4 *local_4;
  
  puVar4 = (undefined4 *)param_1_00[6];
  bVar5 = true;
  if (*(char *)((int)(undefined4 *)puVar4[1] + 0x11) == '\0') {
    puVar2 = (undefined4 *)puVar4[1];
    do {
      puVar4 = puVar2;
      bVar5 = *param_2 < (uint)puVar4[3];
      if (bVar5) {
        puVar2 = (undefined4 *)*puVar4;
      }
      else {
        puVar2 = (undefined4 *)puVar4[2];
      }
    } while (*(char *)((int)puVar2 + 0x11) == '\0');
  }
  local_8 = *param_1_00;
  local_4 = puVar4;
  if (bVar5) {
    puVar2 = *(undefined4 **)param_1_00[6];
    if (local_8 == 0) {
      FUN_00a3fb10();
    }
    if (puVar4 == puVar2) {
      piVar3 = (int *)FUN_0082f300(&local_8,1,puVar4,param_2);
      iVar1 = *piVar3;
      param_1[1] = piVar3[1];
      *(undefined *)(param_1 + 2) = 1;
      *param_1 = iVar1;
      return;
    }
    FUN_0083d570();
  }
  if ((uint)local_4[3] < *param_2) {
    piVar3 = (int *)FUN_0082f300(&local_8,bVar5,puVar4,param_2);
    iVar1 = *piVar3;
    param_1[1] = piVar3[1];
    *(undefined *)(param_1 + 2) = 1;
    *param_1 = iVar1;
    return;
  }
  param_1[1] = (int)local_4;
  *(undefined *)(param_1 + 2) = 0;
  *param_1 = local_8;
  return;
}



void ** __fastcall FUN_0082fdd0(void **param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3b18;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = param_1;
  }
  *param_1 = puVar2;
  local_4 = 0;
  pvVar3 = (void *)FUN_0082edf0(uVar1);
  param_1[6] = pvVar3;
  *(undefined *)((int)pvVar3 + 0x19) = 1;
  *(void **)((int)param_1[6] + 4) = param_1[6];
  *(void **)param_1[6] = param_1[6];
  *(void **)((int)param_1[6] + 8) = param_1[6];
  param_1[7] = (void *)0x0;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall
FUN_0082fe60(int *param_1_00,int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  undefined local_8 [8];
  
  iVar1 = *(int *)param_1_00[6];
  if ((param_2 == 0) || (param_2 != *param_1_00)) {
    FUN_00a3fb10();
  }
  if (param_3 == iVar1) {
    iVar1 = param_1_00[6];
    if ((param_4 == 0) || (param_4 != *param_1_00)) {
      FUN_00a3fb10();
    }
    if (param_5 == iVar1) {
      FUN_0082ee30(*(undefined4 *)(param_1_00[6] + 4));
      *(int *)(param_1_00[6] + 4) = param_1_00[6];
      param_1_00[7] = 0;
      *(int *)param_1_00[6] = param_1_00[6];
      *(int *)(param_1_00[6] + 8) = param_1_00[6];
      iVar1 = *param_1_00;
      param_1[1] = *(int *)param_1_00[6];
      *param_1 = iVar1;
      return;
    }
  }
  while( true ) {
    if ((param_2 == 0) || (param_2 != param_4)) {
      FUN_00a3fb10();
    }
    if (param_3 == param_5) break;
    FUN_0082eb30();
    FUN_0082f500(local_8,param_2,param_3);
  }
  *param_1 = *param_1_00;
  param_1[1] = param_3;
  return;
}



void __thiscall
FUN_0082ff40(int *param_1_00,int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  undefined local_8 [8];
  
  iVar1 = *(int *)param_1_00[6];
  if ((param_2 == 0) || (param_2 != *param_1_00)) {
    FUN_00a3fb10();
  }
  if (param_3 == iVar1) {
    iVar1 = param_1_00[6];
    if ((param_4 == 0) || (param_4 != *param_1_00)) {
      FUN_00a3fb10();
    }
    if (param_5 == iVar1) {
      FUN_005e2c30(*(undefined4 *)(param_1_00[6] + 4));
      *(int *)(param_1_00[6] + 4) = param_1_00[6];
      param_1_00[7] = 0;
      *(int *)param_1_00[6] = param_1_00[6];
      *(int *)(param_1_00[6] + 8) = param_1_00[6];
      iVar1 = *param_1_00;
      param_1[1] = *(int *)param_1_00[6];
      *param_1 = iVar1;
      return;
    }
  }
  while( true ) {
    if ((param_2 == 0) || (param_2 != param_4)) {
      FUN_00a3fb10();
    }
    if (param_3 == param_5) break;
    FUN_0082bc00();
    FUN_0082f7d0(local_8,param_2,param_3);
  }
  *param_1 = *param_1_00;
  param_1[1] = param_3;
  return;
}



int * __thiscall FUN_00830020(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  undefined4 local_14;
  undefined2 local_10;
  undefined local_e;
  undefined local_c [12];
  
  local_10 = *(undefined2 *)(param_1_00 + 0x40);
  local_14 = param_1;
  local_e = 0;
  ppiVar2 = (int **)FUN_0082fbd0(local_c,&local_14);
  piVar1 = ppiVar2[1];
  if (*ppiVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = **ppiVar2;
  }
  if (piVar1 == *(int **)(iVar3 + 0x18)) {
    FUN_00a3fb10();
  }
  return piVar1 + 3;
}



void __thiscall FUN_00830080(int **param_1_00,int ***param_1,int *param_2,int *param_3)

{
  int *piVar1;
  int ***pppiVar2;
  int *piVar3;
  char cVar4;
  int iVar5;
  int **ppiVar6;
  undefined2 extraout_var;
  int ***pppiStack_dc;
  int *piStack_d8;
  uint uStack_d4;
  int ****ppppiStack_c0;
  undefined2 uStack_bc;
  undefined4 uStack_b8;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3b4b;
  local_c = ExceptionList;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_c;
  if ((param_2 == param_1_00[0x19]) && (param_1_00[0x1a] == param_3)) {
    piStack_d8 = param_2;
    pppiStack_dc = param_1;
    (**(code **)*param_3)();
  }
  else {
    piStack_d8 = param_3;
    pppiStack_dc = (int ***)0x8300e3;
    iVar5 = FUN_00830020();
    piStack_d8 = (int *)0x8300ee;
    cVar4 = (**(code **)(*param_3 + 4))();
    if ((cVar4 != '\0') && (*(char *)(iVar5 + 6) == '\0')) {
      ppppiStack_c0 = (int ****)&piStack_d8;
      piStack_d8 = (int *)CONCAT22(extraout_var,*(undefined2 *)(iVar5 + 4));
      pppiStack_dc = (int ***)0x830116;
      (*(code *)(*param_1)[3])();
      pppiStack_dc = (int ***)*param_1_00;
      (**(code **)(*param_3 + 8))();
      (*(code *)**param_1)();
      (**(code **)(*param_3 + 0xc))();
      (*(code *)(*param_1)[7])();
      *(undefined *)(iVar5 + 6) = 1;
    }
    piStack_d8 = *param_1_00;
    pppiStack_dc = (int ***)0x830167;
    cVar4 = (**(code **)(*param_3 + 8))();
    if (cVar4 != '\0') {
      uStack_b8 = param_1_00[8];
      uStack_bc = *(undefined2 *)(iVar5 + 4);
      pppiStack_dc = (int ***)&ppppiStack_c0;
      ppppiStack_c0 = (int ****)param_1;
      ppiVar6 = (int **)FUN_0082faa0();
      piVar1 = ppiVar6[1];
      uStack_b8 = (int *)CONCAT31(uStack_b8._1_3_,*(undefined *)(ppiVar6 + 2));
      if (*ppiVar6 == (int *)0x0) {
        pppiStack_dc = (int ***)0x8301ad;
        FUN_00a3fb10();
        iVar5 = 0;
      }
      else {
        iVar5 = **ppiVar6;
      }
      if (piVar1 == *(int **)(iVar5 + 0x18)) {
        pppiStack_dc = (int ***)0x8301b9;
        FUN_00a3fb10();
      }
      pppiVar2 = (int ***)piVar1[5];
      if ((char)uStack_b8 == '\0') {
        piVar1 = param_1_00[0x17];
        piVar3 = param_1_00[0x11];
        pppiStack_dc = (int ***)&stack0xffffff3c;
        ppiVar6 = (int **)FUN_0082ee70();
        if ((piVar3 == (int *)0x0) || (piVar3 != *ppiVar6)) {
          pppiStack_dc = (int ***)0x830218;
          FUN_00a3fb10();
        }
        if (piVar1 != ppiVar6[1]) {
          pppiStack_dc = (int ***)0x1;
          pppiStack_dc = (int ***)FUN_00832e60();
          puStack_8 = (undefined *)0x0;
          FUN_0043fc7f();
        }
        ppppiStack_c0 = &pppiStack_dc;
        pppiStack_dc = pppiVar2;
        (*(code *)(*param_1)[5])();
        ExceptionList = pvStack_14;
        return;
      }
      ppppiStack_c0 = &pppiStack_dc;
      pppiStack_dc = pppiVar2;
      (*(code *)(*param_1)[6])();
    }
    pppiStack_dc = param_1;
    (**(code **)*param_3)();
  }
  ExceptionList = pvStack_14;
  return;
}



void __thiscall FUN_00830280(undefined4 *param_1_00,int *param_1,undefined4 param_2,int *param_3)

{
  undefined4 *puVar1;
  char cVar2;
  undefined uVar3;
  int *piVar4;
  undefined4 *puVar5;
  int **ppiVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 extraout_ECX;
  undefined4 extraout_ECX_00;
  undefined2 *extraout_ECX_01;
  undefined4 *puVar9;
  int iVar10;
  int unaff_EBX;
  int unaff_EBP;
  int **unaff_ESI;
  int *unaff_EDI;
  undefined4 unaff_retaddr;
  int *piStack_fc;
  undefined4 **ppuStack_f8;
  undefined4 uStack_f4;
  undefined4 **ppuStack_f0;
  undefined4 uStack_ec;
  uint uStack_e8;
  undefined4 *puStack_d4;
  undefined4 *puStack_d0;
  undefined4 *puStack_cc;
  undefined4 *puStack_c8;
  undefined4 *puStack_c4;
  undefined2 auStack_c0 [2];
  undefined4 uStack_bc;
  void *pvStack_1c;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3ba7;
  local_c = ExceptionList;
  uStack_e8 = DAT_0323f878 ^ (uint)&stack0xffffff1c;
  ExceptionList = &local_c;
  uStack_ec = (int *)0x8302bf;
  piVar4 = (int *)(**(code **)*param_3)();
  puStack_d0 = (undefined4 *)param_1_00[0x10];
  ppuStack_f0 = (undefined4 **)0x8302d0;
  uStack_ec = piVar4;
  puVar5 = (undefined4 *)FUN_00830020();
  puStack_c8 = &uStack_ec;
  puVar9 = &uStack_ec;
  uStack_ec = (int *)extraout_ECX;
  puStack_d4 = puVar5;
  puVar1 = &uStack_ec;
  if (*(char *)((int)puVar5 + 6) == '\0') {
    uStack_ec = (int *)CONCAT22((short)((uint)extraout_ECX >> 0x10),*(undefined2 *)(puVar5 + 1));
    ppuStack_f0 = (undefined4 **)0x8302fc;
    (**(code **)(*param_1 + 0x10))();
    if (puStack_d4 < (undefined4 *)param_1_00[0x10]) {
      ppuStack_f0 = (undefined4 **)0x83030e;
      cVar2 = (**(code **)(*piVar4 + 0x10))();
      if (cVar2 != '\0') {
        if ((piVar4[1] == 0) ||
           (puVar9 = *(undefined4 **)(piVar4[1] + 8), puVar9 == (undefined4 *)0x0)) {
          ppuStack_f0 = (undefined4 **)0x1;
          uStack_f4 = (undefined4 **)0x0;
          ppuStack_f8 = (undefined4 **)0x0;
          piStack_fc = (int *)0x2;
          ppuStack_f0 = (undefined4 **)FUN_00832e60();
          puStack_8 = (undefined *)0x0;
          uStack_f4 = (undefined4 **)0x8303aa;
          puVar5 = (undefined4 *)FUN_0043fc7f();
          puVar9 = (undefined4 *)extraout_ECX_01;
          puVar1 = puStack_c8;
          goto LAB_008303aa;
        }
        ppuStack_f0 = &puStack_d4;
        uStack_f4 = (undefined4 **)0x830332;
        puStack_d4 = puVar9;
        (**(code **)(*param_1 + 4))();
      }
    }
    ppuStack_f0 = (undefined4 **)0x83033b;
    cVar2 = (**(code **)(*piVar4 + 4))();
    if (cVar2 != '\0') {
      ppuStack_f0 = (undefined4 **)*param_1_00;
      uStack_f4 = (undefined4 **)0x83034b;
      uVar3 = (**(code **)(*piVar4 + 8))();
      puStack_d0 = &uStack_f4;
      uStack_f4 = (undefined4 **)CONCAT31((int3)((uint)extraout_ECX_00 >> 8),uVar3);
      ppuStack_f8 = (undefined4 **)0x83035c;
      (**(code **)*param_1)();
      ppuStack_f8 = &puStack_d4;
      piStack_fc = (int *)0x83036a;
      ppiVar6 = (int **)(**(code **)(*piVar4 + 0xc))();
      piStack_fc = *ppiVar6;
      unaff_ESI = &piStack_fc;
      (**(code **)(*param_1 + 0x1c))();
    }
    *(undefined *)(unaff_EBX + 6) = 1;
  }
  else {
LAB_008303aa:
    puStack_c8 = puVar1;
    *(undefined2 *)puVar9 = *(undefined2 *)(puVar5 + 1);
    ppuStack_f0 = (undefined4 **)0x8303ba;
    (**(code **)(*param_1 + 8))();
  }
  ppuStack_f0 = (undefined4 **)*param_1_00;
  uStack_f4 = (undefined4 **)0x8303c6;
  cVar2 = (**(code **)(*piVar4 + 8))();
  if (cVar2 == '\0') {
    uVar8 = param_1_00[0x19];
    puStack_d4 = param_1_00 + 0x19;
    puStack_d0 = (undefined4 *)param_1_00[0x1a];
    puVar9 = param_1_00 + 0x1a;
    *puStack_d4 = unaff_retaddr;
    local_c = (void *)0x2;
    uStack_f4 = (undefined4 **)0x83040b;
    puStack_cc = puVar9;
    uVar7 = (**(code **)*param_3)();
    *puVar9 = uVar7;
    ppuStack_f8 = (undefined4 **)param_1;
    piStack_fc = (int *)0x830420;
    (**(code **)(*param_3 + 4))();
    *puVar9 = uVar8;
    puStack_cc = unaff_ESI;
  }
  else {
    uStack_bc = param_1_00[8];
    auStack_c0[0] = *(undefined2 *)(unaff_EBP + 4);
    uStack_f4 = &puStack_c4;
    ppuStack_f8 = &puStack_d0;
    piStack_fc = (int *)0x830460;
    ppiVar6 = (int **)FUN_0082faa0();
    piVar4 = ppiVar6[1];
    uStack_bc = CONCAT31(uStack_bc._1_3_,*(undefined *)(ppiVar6 + 2));
    if (*ppiVar6 == (int *)0x0) {
      uStack_f4 = (undefined4 **)0x830475;
      FUN_00a3fb10();
      iVar10 = 0;
    }
    else {
      iVar10 = **ppiVar6;
    }
    if (piVar4 == *(int **)(iVar10 + 0x18)) {
      uStack_f4 = (undefined4 **)0x830481;
      FUN_00a3fb10();
    }
    iVar10 = piVar4[5];
    puStack_d0 = &uStack_f4;
    uStack_f4 = (undefined4 **)iVar10;
    if ((char)uStack_bc == '\0') {
      ppuStack_f8 = (undefined4 **)0x8304a1;
      puStack_d0 = &uStack_f4;
      (**(code **)(*param_1 + 0x14))();
      ExceptionList = pvStack_1c;
      return;
    }
    ppuStack_f8 = (undefined4 **)0x8304af;
    (**(code **)(*param_1 + 0x18))();
    puStack_c8 = (undefined4 *)param_1_00[0x19];
    puStack_c4 = param_1_00 + 0x19;
    puStack_d4 = (undefined4 *)param_1_00[0x1a];
    *puStack_c4 = uStack_4;
    uStack_10 = 4;
    ppuStack_f8 = (undefined4 **)0x8304f4;
    puStack_d0 = param_1_00 + 0x1a;
    uVar8 = (**(code **)*param_3)();
    param_1_00[0x1a] = uVar8;
    ppuStack_f8 = (undefined4 **)uStack_4;
    piStack_fc = param_1;
    (**(code **)(*param_3 + 4))();
    piStack_fc = (int *)&stack0xffffff20;
    FUN_0082fce0(auStack_c0);
    *unaff_EDI = iVar10;
  }
  param_1_00[0x19] = puStack_cc;
  ExceptionList = pvStack_1c;
  return;
}



void __thiscall FUN_00830550(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_00830080(param_1_00,param_1,param_2);
  return;
}



void __thiscall FUN_00830570(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_00830280(param_1_00,param_1,param_2);
  return;
}



void FUN_00830590(void)

{
  FUN_00830020();
  return;
}



void __fastcall FUN_008305a0(undefined4 *param_1)

{
  uint uVar1;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf27a8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0082fe60(local_14,*param_1,*(undefined4 *)param_1[6],*param_1,(undefined4 *)param_1[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[6],uVar1);
}



void __fastcall FUN_00830620(undefined4 *param_1)

{
  uint uVar1;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf27a8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0082ff40(local_14,*param_1,*(undefined4 *)param_1[6],*param_1,(undefined4 *)param_1[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[6],uVar1);
}



void __fastcall FUN_008306a0(undefined4 *param_1)

{
  uint uVar1;
  undefined auStack_14 [8];
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bf27a8;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &pvStack_c;
  uStack_4 = 0;
  FUN_0082fe60(auStack_14,*param_1,*(undefined4 *)param_1[6],*param_1,(undefined4 *)param_1[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[6],uVar1);
}



void __fastcall FUN_008306b0(undefined4 *param_1)

{
  uint uVar1;
  undefined auStack_14 [8];
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bf27a8;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &pvStack_c;
  uStack_4 = 0;
  FUN_0082ff40(auStack_14,*param_1,*(undefined4 *)param_1[6],*param_1,(undefined4 *)param_1[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[6],uVar1);
}



void FUN_008306c0(void)

{
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bc3be6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_0083dc90(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = local_4 & 0xffffff00;
  FUN_00830620();
  local_4 = 0xffffffff;
  FUN_008305a0();
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_00830730(undefined4 *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3be6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  FUN_0082fdd0(&param_1,&param_1);
  local_4 = 0;
  FUN_00831b70(&param_1,&param_1);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0082b9f0(&param_1,&param_1);
  param_1_00[0x19] = 0;
  param_1_00[0x1a] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_008307d0(undefined4 *param_1_00,undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = boost::archive::detail::basic_oarchive::vftable;
  pvVar1 = operator_new(0x6c);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00830730(param_1);
  }
  param_1_00[1] = uVar2;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00830840(undefined4 *param_1)

{
  int iVar1;
  
  iVar1 = param_1[1];
  *param_1 = boost::archive::detail::basic_oarchive::vftable;
  if (iVar1 != 0) {
    FUN_008306c0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __thiscall FUN_00830860(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[1] = param_1;
  *param_1_00 = boost::archive::detail::basic_oserializer::vftable;
  param_1_00[2] = 0;
  return;
}



void __fastcall FUN_00830880(undefined4 *param_1)

{
  *param_1 = boost::archive::detail::basic_oserializer::vftable;
  return;
}



uint __thiscall FUN_00830890(uint param_1_00,uint param_1)

{
  int iVar1;
  
  if (param_1_00 == param_1) {
    return param_1 & 0xffffff00;
  }
  iVar1 = type_info::before(*(type_info **)(param_1_00 + 0xc),*(type_info **)(param_1 + 0xc));
  return (uint)(iVar1 != 0);
}



bool __thiscall FUN_008308c0(int param_1_00,int param_1)

{
  bool bVar1;
  
  bVar1 = type_info::operator!=(*(type_info **)(param_1_00 + 0xc),*(type_info **)(param_1 + 0xc));
  return !bVar1;
}



undefined4 * __thiscall FUN_008308e0(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00830f00(1,param_1);
  *param_1_00 = boost::serialization::typeid_system::extended_type_info_typeid_0::vftable;
  param_1_00[3] = 0;
  return param_1_00;
}



void __fastcall FUN_00830910(undefined4 *param_1)

{
  *param_1 = boost::serialization::typeid_system::extended_type_info_typeid_0::vftable;
  FUN_00830fb0();
  return;
}



void __fastcall FUN_00830920(undefined4 *param_1)

{
  param_1[3] = 0;
  *param_1 = boost::serialization::typeid_system::extended_type_info_typeid_0::vftable;
  FUN_00830fb0();
  return;
}



// public: static bool __cdecl boost::serialization::singleton<class std::multiset<class
// boost::serialization::typeid_system::extended_type_info_typeid_0 const *,struct
// boost::serialization::typeid_system::type_compare,class std::allocator<class
// boost::serialization::typeid_system::extended_type_info_typeid_0 const *> > >::is_destroyed(void)

bool __cdecl
boost::serialization::
singleton<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>
::is_destroyed(void)

{
                    // 0x430940  1492
                    // ?is_destroyed@?$singleton@V?$multiset@PBVextended_type_info_typeid_0@typeid_system@serialization@boost@@Utype_compare@234@V?$allocator@PBVextended_type_info_typeid_0@typeid_system@serialization@boost@@@std@@@std@@@serialization@boost@@SA_NXZ
  return (bool)DAT_032bc9f4;
}



void FUN_00830950(int param_1)

{
  char cVar1;
  int iVar2;
  
  iVar2 = *(int *)(param_1 + 8);
  cVar1 = *(char *)(iVar2 + 0x11);
  while (cVar1 == '\0') {
    iVar2 = *(int *)(iVar2 + 8);
    cVar1 = *(char *)(iVar2 + 0x11);
  }
  return;
}



void __thiscall FUN_00830970(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1;
  *param_1 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x11) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1;
  }
  *(int *)(iVar1 + 4) = param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1_00 + 0x18) + 4) = iVar1;
    *(int **)(iVar1 + 8) = param_1;
    param_1[1] = iVar1;
    return;
  }
  piVar2 = (int *)param_1[1];
  if (param_1 == (int *)piVar2[2]) {
    piVar2[2] = iVar1;
    *(int **)(iVar1 + 8) = param_1;
    param_1[1] = iVar1;
    return;
  }
  *piVar2 = iVar1;
  *(int **)(iVar1 + 8) = param_1;
  param_1[1] = iVar1;
  return;
}



undefined4 * __thiscall FUN_008309d0(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar4 = (undefined4 *)(*(undefined4 **)(param_1_00 + 0x18))[1];
  cVar2 = *(char *)((int)puVar4 + 0x11);
  puVar1 = *(undefined4 **)(param_1_00 + 0x18);
  while (cVar2 == '\0') {
    cVar2 = (***(code ***)puVar4[3])(*param_1);
    if (cVar2 == '\0') {
      puVar3 = (undefined4 *)*puVar4;
    }
    else {
      puVar3 = (undefined4 *)puVar4[2];
      puVar4 = puVar1;
    }
    puVar1 = puVar4;
    puVar4 = puVar3;
    cVar2 = *(char *)((int)puVar3 + 0x11);
  }
  return puVar1;
}



undefined4 * __thiscall FUN_00830a10(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar4 = *(undefined4 **)(param_1_00 + 0x18);
  cVar2 = *(char *)((int)(undefined4 *)puVar4[1] + 0x11);
  puVar1 = (undefined4 *)puVar4[1];
  while (cVar2 == '\0') {
    cVar2 = (***(code ***)*param_1)(puVar1[3]);
    if (cVar2 == '\0') {
      puVar3 = (undefined4 *)puVar1[2];
    }
    else {
      puVar3 = (undefined4 *)*puVar1;
      puVar4 = puVar1;
    }
    puVar1 = puVar3;
    cVar2 = *(char *)((int)puVar3 + 0x11);
  }
  return puVar4;
}



void FUN_00830a50(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,
                 undefined param_5)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x14);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[3] = *param_4;
    *(undefined *)(puVar1 + 4) = param_5;
    *(undefined *)((int)puVar1 + 0x11) = 0;
  }
  return;
}



void FUN_00830a90(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x14);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 4) = 1;
  *(undefined *)((int)puVar1 + 0x11) = 0;
  return;
}



void __thiscall FUN_00830ad0(int *param_1_00,int *param_1,undefined4 *param_2)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  iVar3 = FUN_008309d0(param_2);
  local_c = iVar3;
  if (param_1_00 == (int *)0x0) {
    FUN_00a3fb10();
  }
  iVar1 = param_1_00[6];
  local_10 = *param_1_00;
  if (*param_1_00 == 0) {
    FUN_00a3fb10();
  }
  if ((iVar3 == iVar1) ||
     (cVar2 = (***(code ***)*param_2)(*(undefined4 *)(iVar3 + 0xc)), cVar2 != '\0')) {
    local_4 = param_1_00[6];
    local_8 = *param_1_00;
    piVar4 = &local_8;
  }
  else {
    piVar4 = &local_10;
  }
  iVar3 = piVar4[1];
  *param_1 = *piVar4;
  param_1[1] = iVar3;
  return;
}



void __thiscall FUN_00830b50(int param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  char cVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 local_8;
  
  puVar4 = (undefined4 *)(*(undefined4 **)(param_1_00 + 0x18))[1];
  cVar3 = *(char *)((int)puVar4 + 0x11);
  local_8 = CONCAT31(local_8._1_3_,1);
  puVar2 = *(undefined4 **)(param_1_00 + 0x18);
  while (cVar3 == '\0') {
    cVar3 = (***(code ***)*param_2)(puVar4[3]);
    local_8 = CONCAT31(local_8._1_3_,cVar3);
    if (cVar3 == '\0') {
      puVar5 = (undefined4 *)puVar4[2];
    }
    else {
      puVar5 = (undefined4 *)*puVar4;
    }
    puVar2 = puVar4;
    puVar4 = puVar5;
    cVar3 = *(char *)((int)puVar5 + 0x11);
  }
  puVar4 = (undefined4 *)FUN_0082f300(&local_8,local_8,puVar2,param_2);
  uVar1 = puVar4[1];
  *param_1 = *puVar4;
  param_1[1] = uVar1;
  *(undefined *)(param_1 + 2) = 1;
  return;
}



// private: static class std::multiset<class
// boost::serialization::typeid_system::extended_type_info_typeid_0 const *,struct
// boost::serialization::typeid_system::type_compare,class std::allocator<class
// boost::serialization::typeid_system::extended_type_info_typeid_0 const *> > & __cdecl
// boost::serialization::singleton<class std::multiset<class
// boost::serialization::typeid_system::extended_type_info_typeid_0 const *,struct
// boost::serialization::typeid_system::type_compare,class std::allocator<class
// boost::serialization::typeid_system::extended_type_info_typeid_0 const *> > >::get_instance(void)

multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>
* __cdecl boost::serialization::
          singleton<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>
          ::get_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
                    // 0x430bd0  876
                    // ?get_instance@?$singleton@V?$multiset@PBVextended_type_info_typeid_0@typeid_system@serialization@boost@@Utype_compare@234@V?$allocator@PBVextended_type_info_typeid_0@typeid_system@serialization@boost@@@std@@@std@@@serialization@boost@@CAAAV?$multiset@PBVextended_type_info_typeid_0@typeid_system@serialization@boost@@Utype_compare@234@V?$allocator@PBVextended_type_info_typeid_0@typeid_system@serialization@boost@@@std@@@std@@XZ
  puStack_8 = &LAB_00bc3c1e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((`private:_static_class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    local_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c761e0);
  }
  ExceptionList = local_c;
  return (multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>
          *)&`private:_static_class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>::get_instance(void)'
             ::`2'::t;
}



// public: static class std::multiset<class
// boost::serialization::typeid_system::extended_type_info_typeid_0 const *,struct
// boost::serialization::typeid_system::type_compare,class std::allocator<class
// boost::serialization::typeid_system::extended_type_info_typeid_0 const *> > const & __cdecl
// boost::serialization::singleton<class std::multiset<class
// boost::serialization::typeid_system::extended_type_info_typeid_0 const *,struct
// boost::serialization::typeid_system::type_compare,class std::allocator<class
// boost::serialization::typeid_system::extended_type_info_typeid_0 const *> >
// >::get_const_instance(void)

multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>
* __cdecl boost::serialization::
          singleton<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>
          ::get_const_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bc3c1e;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  if ((`private:_static_class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    uStack_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c761e0);
  }
  ExceptionList = pvStack_c;
  return (multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>
          *)&`private:_static_class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>::get_instance(void)'
             ::`2'::t;
}



void __thiscall FUN_00830c60(int param_1_00,int param_1)

{
  undefined local_c [12];
  
  *(int *)(param_1_00 + 0xc) = param_1;
  param_1 = param_1_00;
  boost::serialization::
  singleton<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>
  ::get_instance();
  FUN_00830b50(local_c,&param_1);
  return;
}



void __fastcall FUN_00830c90(int *param_1)

{
  int **ppiVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int *local_20;
  int local_1c;
  int *local_18;
  int local_14;
  undefined local_10 [12];
  
  if ((param_1[3] != 0) && (DAT_032bc9f4 == '\0')) {
    ppiVar1 = (int **)boost::serialization::
                      singleton<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>
                      ::get_instance();
    local_20 = param_1;
    iVar2 = FUN_008309d0(&local_20);
    local_14 = iVar2;
    if (ppiVar1 == (int **)0x0) {
      FUN_00a3fb10();
    }
    piVar4 = *ppiVar1;
    local_20 = param_1;
    local_18 = piVar4;
    local_1c = FUN_00830a10(&local_20);
    local_20 = *ppiVar1;
    do {
      if (piVar4 == (int *)0x0) {
        FUN_00a3fb10();
        iVar3 = 0;
      }
      else {
        iVar3 = *piVar4;
      }
      if (iVar2 == *(int *)(iVar3 + 0x18)) {
        FUN_00a3fb10();
      }
      if (param_1 == *(int **)(iVar2 + 0xc)) {
        FUN_0082eba0();
        FUN_0083d8e0(local_10,piVar4,iVar2);
      }
      else {
        FUN_0082eba0();
      }
      piVar4 = local_18;
      if ((local_18 == (int *)0x0) || (local_18 != local_20)) {
        FUN_00a3fb10();
      }
      iVar2 = local_14;
    } while (local_14 != local_1c);
    param_1[3] = 0;
    return;
  }
  param_1[3] = 0;
  return;
}



int FUN_00830d80(undefined ***param_1)

{
  int *piVar1;
  uint uVar2;
  int **ppiVar3;
  int iVar4;
  int *local_24;
  int *local_20;
  undefined **local_1c [3];
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3c48;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  FUN_00830f00(1,0);
  local_1c[0] = boost::serialization::typeid_system::extended_type_info_typeid_arg::vftable;
  local_10 = param_1;
  local_4 = 0;
  ppiVar3 = (int **)boost::serialization::
                    singleton<class_std::multiset<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*,struct_boost::serialization::typeid_system::type_compare,class_std::allocator<class_boost::serialization::typeid_system::extended_type_info_typeid_0_const*>_>_>
                    ::get_instance();
  param_1 = local_1c;
  FUN_00830ad0(&local_24,&param_1);
  piVar1 = ppiVar3[6];
  if ((*ppiVar3 == (int *)0x0) || (*ppiVar3 != local_24)) {
    FUN_00a3fb10(uVar2);
  }
  if (piVar1 == local_20) {
    local_4 = 0xffffffff;
    local_10 = 0;
    local_1c[0] = boost::serialization::typeid_system::extended_type_info_typeid_0::vftable;
    FUN_00830fb0();
    ExceptionList = local_c;
    return 0;
  }
  if (local_24 == (int *)0x0) {
    FUN_00a3fb10(uVar2);
    iVar4 = 0;
  }
  else {
    iVar4 = *local_24;
  }
  if (local_20 == *(int **)(iVar4 + 0x18)) {
    FUN_00a3fb10();
  }
  iVar4 = local_20[3];
  local_4 = 0xffffffff;
  local_10 = 0;
  local_1c[0] = boost::serialization::typeid_system::extended_type_info_typeid_0::vftable;
  FUN_00830fb0();
  ExceptionList = local_c;
  return iVar4;
}



uint FUN_00830ea0(byte *param_1,byte *param_2)

{
  byte bVar1;
  int iVar2;
  byte *pbVar3;
  bool bVar4;
  
  if (param_1 != param_2) {
    param_1 = *(byte **)(param_1 + 8);
    pbVar3 = *(byte **)(param_2 + 8);
    if (param_1 != pbVar3) {
      while( true ) {
        bVar1 = *param_1;
        bVar4 = bVar1 < *pbVar3;
        if (bVar1 != *pbVar3) break;
        if (bVar1 == 0) {
          return 0;
        }
        bVar1 = param_1[1];
        bVar4 = bVar1 < pbVar3[1];
        if (bVar1 != pbVar3[1]) break;
        param_1 = param_1 + 2;
        pbVar3 = pbVar3 + 2;
        if (bVar1 == 0) {
          return 0;
        }
      }
      iVar2 = (1 - (uint)bVar4) - (uint)(bVar4 != 0);
      return CONCAT31((int3)((uint)iVar2 >> 8),iVar2 < 0);
    }
  }
  return (uint)param_1 & 0xffffff00;
}



void __thiscall FUN_00830f00(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  *param_1_00 = boost::serialization::extended_type_info::vftable;
  param_1_00[1] = param_1;
  param_1_00[2] = param_2;
  return;
}



uint __thiscall FUN_00830f20(undefined4 *param_1_00,undefined4 *param_1)

{
  uint in_EAX;
  uint uVar1;
  
  if (param_1_00 == param_1) {
    return in_EAX & 0xffffff00;
  }
  uVar1 = param_1_00[1];
  if (uVar1 == param_1[1]) {
    uVar1 = (**(code **)*param_1_00)(param_1);
    return uVar1;
  }
  return CONCAT31((int3)(uVar1 >> 8),uVar1 < (uint)param_1[1]);
}



undefined4 __thiscall FUN_00830f50(int *param_1_00,int *param_1)

{
  undefined4 uVar1;
  
  if (param_1_00 == param_1) {
    return 1;
  }
  if (param_1_00[1] != param_1[1]) {
    return 0;
  }
                    // WARNING: Could not recover jumptable at 0x00830f73. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (**(code **)(*param_1_00 + 4))();
  return uVar1;
}



// public: static bool __cdecl boost::serialization::singleton<class std::multiset<class
// boost::serialization::extended_type_info const *,struct
// boost::serialization::detail::key_compare,class std::allocator<class
// boost::serialization::extended_type_info const *> > >::is_destroyed(void)

bool __cdecl
boost::serialization::
singleton<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>
::is_destroyed(void)

{
                    // 0x430f80  1491
                    // ?is_destroyed@?$singleton@V?$multiset@PBVextended_type_info@serialization@boost@@Ukey_compare@detail@23@V?$allocator@PBVextended_type_info@serialization@boost@@@std@@@std@@@serialization@boost@@SA_NXZ
  return (bool)DAT_032bca20;
}



void FUN_00830f90(int **param_1)

{
  char cVar1;
  int *piVar2;
  
  piVar2 = *param_1;
  cVar1 = *(char *)((int)piVar2 + 0x11);
  while (cVar1 == '\0') {
    piVar2 = (int *)*piVar2;
    cVar1 = *(char *)((int)piVar2 + 0x11);
  }
  return;
}



void __fastcall FUN_00830fb0(undefined4 *param_1)

{
  *param_1 = boost::serialization::extended_type_info::vftable;
  return;
}



undefined4 * __thiscall FUN_00830fc0(int param_1_00,int *param_1)

{
  byte bVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  byte *pbVar4;
  int iVar5;
  byte *pbVar6;
  undefined4 *puVar7;
  bool bVar8;
  
  puVar3 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)(undefined4 *)puVar3[1] + 0x11) == '\0') {
    puVar2 = puVar3;
    puVar7 = (undefined4 *)puVar3[1];
    do {
      puVar3 = puVar7;
      if (puVar3[3] == *param_1) {
LAB_00831019:
        puVar7 = (undefined4 *)*puVar3;
      }
      else {
        pbVar4 = *(byte **)(puVar3[3] + 8);
        pbVar6 = *(byte **)(*param_1 + 8);
        if (pbVar4 == pbVar6) goto LAB_00831019;
        do {
          bVar1 = *pbVar4;
          bVar8 = bVar1 < *pbVar6;
          if (bVar1 != *pbVar6) {
LAB_00831006:
            iVar5 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
            goto LAB_0083100b;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar4[1];
          bVar8 = bVar1 < pbVar6[1];
          if (bVar1 != pbVar6[1]) goto LAB_00831006;
          pbVar4 = pbVar4 + 2;
          pbVar6 = pbVar6 + 2;
        } while (bVar1 != 0);
        iVar5 = 0;
LAB_0083100b:
        if (-1 < iVar5) goto LAB_00831019;
        puVar7 = (undefined4 *)puVar3[2];
        puVar3 = puVar2;
      }
      puVar2 = puVar3;
    } while (*(char *)((int)puVar7 + 0x11) == '\0');
  }
  return puVar3;
}



undefined4 * __thiscall FUN_00831030(int param_1_00,int *param_1)

{
  byte bVar1;
  undefined4 *puVar2;
  byte *pbVar3;
  int iVar4;
  byte *pbVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  bool bVar8;
  
  puVar2 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)(undefined4 *)puVar2[1] + 0x11) == '\0') {
    puVar6 = (undefined4 *)puVar2[1];
    do {
      if (*param_1 == puVar6[3]) {
LAB_0083108a:
        puVar7 = (undefined4 *)puVar6[2];
      }
      else {
        pbVar3 = *(byte **)(*param_1 + 8);
        pbVar5 = *(byte **)(puVar6[3] + 8);
        if (pbVar3 == pbVar5) goto LAB_0083108a;
        do {
          bVar1 = *pbVar3;
          bVar8 = bVar1 < *pbVar5;
          if (bVar1 != *pbVar5) {
LAB_00831076:
            iVar4 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
            goto LAB_0083107b;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar3[1];
          bVar8 = bVar1 < pbVar5[1];
          if (bVar1 != pbVar5[1]) goto LAB_00831076;
          pbVar3 = pbVar3 + 2;
          pbVar5 = pbVar5 + 2;
        } while (bVar1 != 0);
        iVar4 = 0;
LAB_0083107b:
        if (-1 < iVar4) goto LAB_0083108a;
        puVar7 = (undefined4 *)*puVar6;
        puVar2 = puVar6;
      }
      puVar6 = puVar7;
    } while (*(char *)((int)puVar7 + 0x11) == '\0');
  }
  return puVar2;
}



void __thiscall FUN_008310a0(int *param_1_00,int *param_1,undefined4 *param_2)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  iVar3 = FUN_00830fc0(param_2);
  local_c = iVar3;
  if (param_1_00 == (int *)0x0) {
    FUN_00a3fb10();
  }
  iVar1 = param_1_00[6];
  local_10 = *param_1_00;
  if (*param_1_00 == 0) {
    FUN_00a3fb10();
  }
  if ((iVar3 == iVar1) ||
     (cVar2 = FUN_00830ea0(*param_2,*(undefined4 *)(iVar3 + 0xc)), cVar2 != '\0')) {
    local_4 = param_1_00[6];
    local_8 = *param_1_00;
    piVar4 = &local_8;
  }
  else {
    piVar4 = &local_10;
  }
  iVar3 = piVar4[1];
  *param_1 = *piVar4;
  param_1[1] = iVar3;
  return;
}



void __thiscall FUN_00831120(int param_1_00,undefined4 *param_1,int *param_2)

{
  byte bVar1;
  undefined4 uVar2;
  byte *pbVar3;
  int iVar4;
  undefined4 *puVar5;
  byte *pbVar6;
  undefined4 *puVar7;
  bool bVar8;
  int local_8 [2];
  
  puVar5 = *(undefined4 **)(param_1_00 + 0x18);
  bVar8 = true;
  if (*(char *)((int)(undefined4 *)puVar5[1] + 0x11) == '\0') {
    puVar7 = (undefined4 *)puVar5[1];
    do {
      puVar5 = puVar7;
      if (*param_2 == puVar5[3]) {
LAB_0083118e:
        bVar8 = false;
LAB_00831192:
        puVar7 = (undefined4 *)puVar5[2];
      }
      else {
        pbVar3 = *(byte **)(*param_2 + 8);
        pbVar6 = *(byte **)(puVar5[3] + 8);
        if (pbVar3 == pbVar6) goto LAB_0083118e;
        do {
          bVar1 = *pbVar3;
          bVar8 = bVar1 < *pbVar6;
          if (bVar1 != *pbVar6) {
LAB_00831178:
            iVar4 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
            goto LAB_0083117d;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar3[1];
          bVar8 = bVar1 < pbVar6[1];
          if (bVar1 != pbVar6[1]) goto LAB_00831178;
          pbVar3 = pbVar3 + 2;
          pbVar6 = pbVar6 + 2;
        } while (bVar1 != 0);
        iVar4 = 0;
LAB_0083117d:
        bVar8 = iVar4 < 0;
        if (!bVar8) goto LAB_00831192;
        puVar7 = (undefined4 *)*puVar5;
      }
    } while (*(char *)((int)puVar7 + 0x11) == '\0');
  }
  local_8[0] = param_1_00;
  puVar5 = (undefined4 *)FUN_0082f300(local_8,bVar8,puVar5,param_2);
  uVar2 = puVar5[1];
  *param_1 = *puVar5;
  param_1[1] = uVar2;
  *(undefined *)(param_1 + 2) = 1;
  return;
}



// private: static class std::multiset<class boost::serialization::extended_type_info const *,struct
// boost::serialization::detail::key_compare,class std::allocator<class
// boost::serialization::extended_type_info const *> > & __cdecl
// boost::serialization::singleton<class std::multiset<class
// boost::serialization::extended_type_info const *,struct
// boost::serialization::detail::key_compare,class std::allocator<class
// boost::serialization::extended_type_info const *> > >::get_instance(void)

multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>
* __cdecl boost::serialization::
          singleton<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>
          ::get_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
                    // 0x4311e0  875
                    // ?get_instance@?$singleton@V?$multiset@PBVextended_type_info@serialization@boost@@Ukey_compare@detail@23@V?$allocator@PBVextended_type_info@serialization@boost@@@std@@@std@@@serialization@boost@@CAAAV?$multiset@PBVextended_type_info@serialization@boost@@Ukey_compare@detail@23@V?$allocator@PBVextended_type_info@serialization@boost@@@std@@@std@@XZ
  puStack_8 = &LAB_00bc3c7e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((`private:_static_class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    local_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c76200);
  }
  ExceptionList = local_c;
  return (multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>
          *)&`private:_static_class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>::get_instance(void)'
             ::`2'::t;
}



// public: static class std::multiset<class boost::serialization::extended_type_info const *,struct
// boost::serialization::detail::key_compare,class std::allocator<class
// boost::serialization::extended_type_info const *> > const & __cdecl
// boost::serialization::singleton<class std::multiset<class
// boost::serialization::extended_type_info const *,struct
// boost::serialization::detail::key_compare,class std::allocator<class
// boost::serialization::extended_type_info const *> > >::get_const_instance(void)

multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>
* __cdecl boost::serialization::
          singleton<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>
          ::get_const_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bc3c7e;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  if ((`private:_static_class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    uStack_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c76200);
  }
  ExceptionList = pvStack_c;
  return (multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>
          *)&`private:_static_class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>&___cdecl_boost::serialization::singleton<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>::get_instance(void)'
             ::`2'::t;
}



void __fastcall FUN_00831270(int param_1)

{
  int local_10;
  undefined local_c [12];
  
  if (*(int *)(param_1 + 8) != 0) {
    local_10 = param_1;
    boost::serialization::
    singleton<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>
    ::get_instance();
    FUN_00831120(local_c,&local_10);
  }
  return;
}



void __fastcall FUN_008312a0(int param_1)

{
  int **ppiVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int local_14;
  int local_10;
  int *local_c;
  int *local_8;
  int local_4;
  
  if ((*(int *)(param_1 + 8) != 0) && (DAT_032bca20 == '\0')) {
    ppiVar1 = (int **)boost::serialization::
                      singleton<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>
                      ::get_instance();
    local_14 = param_1;
    iVar2 = FUN_00830fc0(&local_14);
    local_4 = iVar2;
    if (ppiVar1 == (int **)0x0) {
      FUN_00a3fb10();
    }
    piVar4 = *ppiVar1;
    local_14 = param_1;
    local_c = piVar4;
    local_8 = piVar4;
    local_10 = FUN_00831030(&local_14);
    while( true ) {
      if ((piVar4 == (int *)0x0) || (piVar4 != local_c)) {
        FUN_00a3fb10();
      }
      if (iVar2 == local_10) {
        return;
      }
      if (piVar4 == (int *)0x0) {
        FUN_00a3fb10();
        iVar3 = 0;
      }
      else {
        iVar3 = *piVar4;
      }
      if (iVar2 == *(int *)(iVar3 + 0x18)) {
        FUN_00a3fb10();
      }
      if (param_1 == *(int *)(iVar2 + 0xc)) break;
      FUN_0082eba0();
      iVar2 = local_4;
      piVar4 = local_8;
    }
    FUN_0083d8e0(&local_8,piVar4,iVar2);
  }
  return;
}



int FUN_00831360(undefined ***param_1)

{
  int *piVar1;
  uint uVar2;
  int **ppiVar3;
  int iVar4;
  int *local_20;
  int *local_1c;
  undefined **local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3ca8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  ppiVar3 = (int **)boost::serialization::
                    singleton<class_std::multiset<class_boost::serialization::extended_type_info_const*,struct_boost::serialization::detail::key_compare,class_std::allocator<class_boost::serialization::extended_type_info_const*>_>_>
                    ::get_instance();
  local_14 = 0;
  local_10 = param_1;
  local_18 = boost::serialization::detail::extended_type_info_arg::vftable;
  param_1 = &local_18;
  local_4 = 0;
  FUN_008310a0(&local_20,&param_1);
  piVar1 = ppiVar3[6];
  if ((*ppiVar3 == (int *)0x0) || (*ppiVar3 != local_20)) {
    FUN_00a3fb10(uVar2);
  }
  if (piVar1 == local_1c) {
    ExceptionList = local_c;
    return 0;
  }
  if (local_20 == (int *)0x0) {
    FUN_00a3fb10(uVar2);
    iVar4 = 0;
  }
  else {
    iVar4 = *local_20;
  }
  if (local_1c == *(int **)(iVar4 + 0x18)) {
    FUN_00a3fb10(uVar2);
  }
  ExceptionList = local_c;
  return local_1c[3];
}



void __thiscall FUN_00831430(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(*(int *)(param_1_00 + 4) + 100) = param_1;
  return;
}



void __thiscall FUN_00831440(int param_1_00,undefined2 param_1)

{
  **(undefined2 **)(param_1_00 + 4) = param_1;
  return;
}



void __thiscall FUN_00831450(int param_1_00,undefined2 *param_1)

{
  *param_1 = **(undefined2 **)(param_1_00 + 4);
  return;
}



undefined4 __fastcall FUN_00831460(int param_1)

{
  return *(undefined4 *)(*(int *)(param_1 + 4) + 4);
}



void FUN_00831470(undefined4 *param_1,undefined4 *param_2)

{
  *param_1 = *param_2;
  return;
}



void FUN_00831480(int param_1)

{
  char cVar1;
  int iVar2;
  
  iVar2 = *(int *)(param_1 + 8);
  cVar1 = *(char *)(iVar2 + 0x15);
  while (cVar1 == '\0') {
    iVar2 = *(int *)(iVar2 + 8);
    cVar1 = *(char *)(iVar2 + 0x15);
  }
  return;
}



void FUN_008314a0(char *param_1)

{
  code *pcVar1;
  char *pcVar2;
  undefined **local_c [3];
  
  if (param_1 == (char *)0x0) {
    pcVar2 = (char *)0x0;
  }
  else {
    pcVar2 = param_1;
    if ((uint)(0xffffffff / ZEXT48(param_1)) < 0x10) {
      param_1 = (char *)0x0;
      std::exception::exception((exception *)local_c,&param_1);
      local_c[0] = std::bad_alloc::vftable;
      __CxxThrowException_8(local_c,&DAT_031153a4);
      pcVar1 = (code *)swi(3);
      (*pcVar1)();
      return;
    }
  }
  operator_new((int)pcVar2 << 4);
  return;
}



void FUN_00831500(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)

{
  if (param_1 != param_2) {
    do {
      *param_1 = *param_3;
      param_1[1] = param_3[1];
      param_1[2] = param_3[2];
      *(undefined *)(param_1 + 3) = *(undefined *)(param_3 + 3);
      *(undefined *)((int)param_1 + 0xd) = *(undefined *)((int)param_3 + 0xd);
      param_1 = param_1 + 4;
    } while (param_1 != param_2);
  }
  return;
}



void FUN_00831540(int param_1,int param_2,undefined4 *param_3)

{
  int iVar1;
  
  if (param_1 != param_2) {
    do {
      iVar1 = param_2 + -0x10;
      param_3[-4] = *(undefined4 *)(param_2 + -0x10);
      param_3[-3] = *(undefined4 *)(param_2 + -0xc);
      param_3[-2] = *(undefined4 *)(param_2 + -8);
      *(undefined *)(param_3 + -1) = *(undefined *)(param_2 + -4);
      *(undefined *)((int)param_3 + -3) = *(undefined *)(param_2 + -3);
      param_3 = param_3 + -4;
      param_2 = iVar1;
    } while (iVar1 != param_1);
  }
  return;
}



void __thiscall FUN_00831580(int param_1_00,int param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  
  uVar2 = *(uint *)(param_1_00 + 0x28);
  if (uVar2 < *(uint *)(param_1_00 + 0x24)) {
    do {
      if ((uint)(*(int *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14) >> 3) <= uVar2) {
        FUN_00a3fb10();
      }
    } while ((param_2 != *(uint *)(*(int *)(param_1_00 + 0x14) + uVar2 * 8)) &&
            (uVar2 = uVar2 + 1, uVar2 < *(uint *)(param_1_00 + 0x24)));
    if (uVar2 < *(uint *)(param_1_00 + 0x24)) {
      do {
        if ((uint)(*(int *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14) >> 3) <= uVar2) {
          FUN_00a3fb10();
        }
        if (param_2 < *(uint *)(*(int *)(param_1_00 + 0x14) + uVar2 * 8)) {
          if ((uint)(*(int *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14) >> 3) <= uVar2) {
            FUN_00a3fb10();
          }
          iVar1 = *(int *)(*(int *)(param_1_00 + 0x14) + uVar2 * 8);
          if ((uint)(*(int *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14) >> 3) <= uVar2) {
            FUN_00a3fb10();
          }
          *(uint *)(*(int *)(param_1_00 + 0x14) + uVar2 * 8) = (iVar1 - param_2) + param_1;
        }
        else {
          if ((uint)(*(int *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14) >> 3) <= uVar2) {
            FUN_00a3fb10();
          }
          iVar1 = *(int *)(*(int *)(param_1_00 + 0x14) + uVar2 * 8);
          if ((uint)(*(int *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14) >> 3) <= uVar2) {
            FUN_00a3fb10();
          }
          *(uint *)(*(int *)(param_1_00 + 0x14) + uVar2 * 8) = param_1 - (param_2 - iVar1);
        }
        uVar2 = uVar2 + 1;
      } while (uVar2 < *(uint *)(param_1_00 + 0x24));
    }
  }
  return;
}



void __thiscall FUN_00831660(int param_1_00,int *param_1,int **param_2)

{
  int *piVar1;
  int **ppiVar2;
  char cVar3;
  undefined uVar4;
  int **ppiVar5;
  
  ppiVar2 = param_2;
  if (*(char *)((int)param_2 + 0xd) == '\0') {
    cVar3 = (**(code **)(**param_2 + 4))();
    piVar1 = param_1;
    if (cVar3 != '\0') {
      param_2 = (int **)((uint)param_2 & 0xffff0000);
      (**(code **)(*param_1 + 8))(&param_2);
      (**(code **)*piVar1)(ppiVar2 + 3);
      (**(code **)(*piVar1 + 0x14))(ppiVar2 + 2);
      *(undefined *)((int)ppiVar2 + 0xd) = 1;
      return;
    }
    uVar4 = (**(code **)(**ppiVar2 + 8))(*(undefined4 *)(param_1_00 + 4));
    *(undefined *)(ppiVar2 + 3) = uVar4;
    ppiVar5 = (int **)(**(code **)(**ppiVar2 + 0xc))(&param_1);
    ppiVar2[2] = *ppiVar5;
    *(undefined *)((int)ppiVar2 + 0xd) = 1;
  }
  return;
}



undefined4 __thiscall FUN_008316f0(int param_1_00,int *param_1)

{
  uint unaff_ESI;
  undefined4 local_4;
  
  local_4 = 0;
  (**(code **)(*param_1 + 0x10))(&local_4);
  if (unaff_ESI < (uint)(*(int *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14) >> 3)) {
    if ((uint)(*(int *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14) >> 3) <= unaff_ESI) {
      FUN_00a3fb10();
    }
    *param_1 = *(int *)(*(int *)(param_1_00 + 0x14) + unaff_ESI * 8);
    return 0;
  }
  return 1;
}



void FUN_00831750(void)

{
  FUN_00831580();
  return;
}



void __fastcall FUN_00831760(undefined4 *param_1)

{
  *(undefined4 *)param_1[1] = *param_1;
  return;
}



void __fastcall FUN_00831770(int param_1)

{
  FUN_00831470(*(undefined4 *)(param_1 + 4),param_1);
  return;
}



void __thiscall FUN_00831780(int param_1_00,int *param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1[2];
  param_1[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x15) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1;
  }
  ppiVar1[1] = (int *)param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = ppiVar1;
    *ppiVar1 = param_1;
    param_1[1] = (int)ppiVar1;
    return;
  }
  ppiVar2 = (int **)param_1[1];
  if (param_1 == *ppiVar2) {
    *ppiVar2 = (int *)ppiVar1;
    *ppiVar1 = param_1;
    param_1[1] = (int)ppiVar1;
    return;
  }
  ppiVar2[2] = (int *)ppiVar1;
  *ppiVar1 = param_1;
  param_1[1] = (int)ppiVar1;
  return;
}



void __thiscall FUN_008317d0(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1;
  *param_1 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x15) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1;
  }
  *(int *)(iVar1 + 4) = param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1_00 + 0x18) + 4) = iVar1;
    *(int **)(iVar1 + 8) = param_1;
    param_1[1] = iVar1;
    return;
  }
  piVar2 = (int *)param_1[1];
  if (param_1 == (int *)piVar2[2]) {
    piVar2[2] = iVar1;
    *(int **)(iVar1 + 8) = param_1;
    param_1[1] = iVar1;
    return;
  }
  *piVar2 = iVar1;
  *(int **)(iVar1 + 8) = param_1;
  param_1[1] = iVar1;
  return;
}



int FUN_00831830(int param_1,int param_2,int param_3)

{
  undefined2 *puVar1;
  undefined2 *puVar2;
  int iVar3;
  int iVar4;
  
  if (param_1 != param_2) {
    puVar1 = (undefined2 *)(param_3 + 6);
    iVar3 = param_2;
    do {
      iVar4 = iVar3 + -8;
      puVar2 = puVar1 + -4;
      *(undefined4 *)(puVar1 + -7) = *(undefined4 *)(iVar3 + -8);
      *(undefined *)(puVar1 + -5) = *(undefined *)(iVar3 + -4);
      *puVar2 = *(undefined2 *)((param_2 - param_3) + (int)puVar2);
      puVar1 = puVar2;
      iVar3 = iVar4;
    } while (iVar4 != param_1);
  }
  return param_3 + (param_2 - param_1 >> 3) * -8;
}



void FUN_00831890(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)

{
  if (param_1 != param_2) {
    do {
      if (param_3 != (undefined4 *)0x0) {
        *param_3 = *param_1;
        *(undefined *)(param_3 + 1) = *(undefined *)(param_1 + 1);
        *(undefined2 *)((int)param_3 + 6) = *(undefined2 *)((int)param_1 + 6);
      }
      param_1 = param_1 + 2;
      param_3 = param_3 + 2;
    } while (param_1 != param_2);
  }
  return;
}



void FUN_008318d0(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)

{
  if (param_1 != param_2) {
    do {
      if (param_3 != (undefined4 *)0x0) {
        *param_3 = *param_1;
        param_3[1] = param_1[1];
        param_3[2] = param_1[2];
        *(undefined *)(param_3 + 3) = *(undefined *)(param_1 + 3);
        *(undefined *)((int)param_3 + 0xd) = *(undefined *)((int)param_1 + 0xd);
      }
      param_1 = param_1 + 4;
      param_3 = param_3 + 4;
    } while (param_1 != param_2);
  }
  return;
}



void FUN_00831910(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,
                 undefined param_5)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[2] = param_3;
    puVar1[1] = param_2;
    puVar1[3] = *param_4;
    *(undefined2 *)(puVar1 + 4) = *(undefined2 *)(param_4 + 1);
    *(undefined *)(puVar1 + 5) = param_5;
    *(undefined *)((int)puVar1 + 0x15) = 0;
  }
  return;
}



void FUN_00831960(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)

{
  if (param_1 != param_2) {
    do {
      *param_1 = *param_3;
      *(undefined *)(param_1 + 1) = *(undefined *)(param_3 + 1);
      *(undefined2 *)((int)param_1 + 6) = *(undefined2 *)((int)param_3 + 6);
      param_1 = param_1 + 2;
    } while (param_1 != param_2);
  }
  return;
}



void FUN_00831990(undefined4 *param_1,int param_2,undefined4 *param_3)

{
  if (param_2 != 0) {
    do {
      if (param_1 != (undefined4 *)0x0) {
        *param_1 = *param_3;
        *(undefined *)(param_1 + 1) = *(undefined *)(param_3 + 1);
        *(undefined2 *)((int)param_1 + 6) = *(undefined2 *)((int)param_3 + 6);
      }
      param_2 = param_2 + -1;
      param_1 = param_1 + 2;
    } while (param_2 != 0);
  }
  return;
}



void FUN_008319d0(undefined4 *param_1,int param_2,undefined4 *param_3)

{
  if (param_2 != 0) {
    do {
      if (param_1 != (undefined4 *)0x0) {
        *param_1 = *param_3;
        param_1[1] = param_3[1];
        param_1[2] = param_3[2];
        *(undefined *)(param_1 + 3) = *(undefined *)(param_3 + 3);
        *(undefined *)((int)param_1 + 0xd) = *(undefined *)((int)param_3 + 0xd);
      }
      param_2 = param_2 + -1;
      param_1 = param_1 + 4;
    } while (param_2 != 0);
  }
  return;
}



void FUN_00831a10(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00831830(param_1,param_2,param_3,param_3,param_3,0);
  return;
}



int FUN_00831a40(int param_1,int param_2,int param_3)

{
  uint local_8;
  uint local_4;
  
  local_4 = local_4 & 0xffffff00;
  local_8 = local_8 & 0xffffff00;
  FUN_00831540(param_1,param_2,param_3,param_3,local_4,local_8);
  return param_3 + (param_2 - param_1 >> 4) * -0x10;
}



int __thiscall FUN_00831a90(uint param_1_00,int param_1,int param_2,undefined4 param_3)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_00831990(param_1,param_2,param_3,param_1_00 + 8,param_3,local_4);
  return param_1 + param_2 * 8;
}



int __thiscall FUN_00831ad0(uint param_1_00,int param_1,int param_2,undefined4 param_3)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_008319d0(param_1,param_2,param_3,param_1_00 + 8,param_3,local_4);
  return param_2 * 0x10 + param_1;
}



void __thiscall
FUN_00831b10(uint param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_00831890(param_1,param_2,param_3,param_1_00 + 8,param_3,local_4);
  return;
}



void __thiscall
FUN_00831b40(uint param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_008318d0(param_1,param_2,param_3,param_1_00 + 8,param_3,local_4);
  return;
}



void ** __fastcall FUN_00831b70(void **param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3b18;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = param_1;
  }
  *param_1 = puVar2;
  local_4 = 0;
  pvVar3 = (void *)FUN_0082be20(uVar1);
  param_1[6] = pvVar3;
  *(undefined *)((int)pvVar3 + 0x15) = 1;
  *(void **)((int)param_1[6] + 4) = param_1[6];
  *(void **)param_1[6] = param_1[6];
  *(void **)((int)param_1[6] + 8) = param_1[6];
  param_1[7] = (void *)0x0;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall
FUN_00831c00(undefined4 *param_1_00,undefined4 *param_1,char param_2,int **param_3,
            undefined4 param_4)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  int *piVar4;
  undefined4 uVar5;
  int *piVar6;
  int **ppiVar7;
  int *piVar8;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2db8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (0x1ffffffd < (uint)param_1_00[7]) {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"map/set<T> too long",0x13);
    local_4 = 0;
    FUN_00417ca0(local_50);
    local_34[0] = std::length_error::vftable;
    __CxxThrowException_8(local_34,&DAT_03115554);
  }
  piVar6 = (int *)FUN_00831910(param_1_00[6],param_3,param_1_00[6],param_4,0);
  param_1_00[7] = param_1_00[7] + 1;
  if (param_3 == (int **)param_1_00[6]) {
    ((int **)param_1_00[6])[1] = piVar6;
    *(int **)param_1_00[6] = piVar6;
    *(int **)(param_1_00[6] + 8) = piVar6;
  }
  else if (param_2 == '\0') {
    param_3[2] = piVar6;
    if (param_3 == *(int ***)(param_1_00[6] + 8)) {
      *(int **)(param_1_00[6] + 8) = piVar6;
    }
  }
  else {
    *param_3 = piVar6;
    if (param_3 == *(int ***)(int **)param_1_00[6]) {
      *(int **)param_1_00[6] = piVar6;
    }
  }
  cVar1 = *(char *)(piVar6[1] + 0x14);
  piVar8 = piVar6;
  while (cVar1 == '\0') {
    ppiVar7 = (int **)(piVar8 + 1);
    piVar2 = *ppiVar7;
    ppiVar3 = (int **)piVar2[1];
    if (piVar2 == *ppiVar3) {
      piVar4 = ppiVar3[2];
      if (*(char *)(piVar4 + 5) == '\0') {
        *(undefined *)(piVar2 + 5) = 1;
        *(undefined *)(piVar4 + 5) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x14) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)piVar2[2]) {
          FUN_00831780(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x14) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x14) = 0;
        FUN_008317d0(*(undefined4 *)(piVar8[1] + 4));
      }
    }
    else {
      piVar4 = *ppiVar3;
      if (*(char *)(piVar4 + 5) == '\0') {
        *(undefined *)(piVar2 + 5) = 1;
        *(undefined *)(piVar4 + 5) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x14) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)*piVar2) {
          FUN_008317d0(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x14) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x14) = 0;
        piVar2 = *(int **)(piVar8[1] + 4);
        piVar4 = (int *)piVar2[2];
        piVar2[2] = *piVar4;
        if (*(char *)(*piVar4 + 0x15) == '\0') {
          *(int **)(*piVar4 + 4) = piVar2;
        }
        piVar4[1] = piVar2[1];
        if (piVar2 == (int *)*(int *)(param_1_00[6] + 4)) {
          *(int **)(param_1_00[6] + 4) = piVar4;
        }
        else {
          ppiVar3 = (int **)piVar2[1];
          if (piVar2 == *ppiVar3) {
            *ppiVar3 = piVar4;
          }
          else {
            ppiVar3[2] = piVar4;
          }
        }
        *piVar4 = (int)piVar2;
        piVar2[1] = (int)piVar4;
      }
    }
    cVar1 = *(char *)(piVar8[1] + 0x14);
  }
  *(undefined *)(*(int *)(param_1_00[6] + 4) + 0x14) = 1;
  uVar5 = *param_1_00;
  param_1[1] = piVar6;
  *param_1 = uVar5;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00831e00(int *param_1_00,int *param_1,int *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  char cVar3;
  char cVar4;
  undefined4 *puVar5;
  int *piVar6;
  undefined4 *puVar7;
  int local_8;
  undefined4 *local_4;
  
  puVar1 = (undefined4 *)((undefined4 *)param_1_00[6])[1];
  cVar3 = '\x01';
  cVar4 = *(char *)((int)puVar1 + 0x15);
  puVar5 = (undefined4 *)param_1_00[6];
  while (cVar4 == '\0') {
    if (puVar1[3] == 0) {
      puVar5 = (undefined4 *)0x0;
    }
    else {
      puVar5 = (undefined4 *)(puVar1[3] + 4);
    }
    cVar3 = FUN_00830f20(*puVar5);
    if (cVar3 == '\0') {
      puVar7 = (undefined4 *)puVar1[2];
    }
    else {
      puVar7 = (undefined4 *)*puVar1;
    }
    puVar5 = puVar1;
    puVar1 = puVar7;
    cVar4 = *(char *)((int)puVar7 + 0x15);
  }
  local_8 = *param_1_00;
  local_4 = puVar5;
  if (cVar3 != '\0') {
    puVar1 = *(undefined4 **)param_1_00[6];
    if (local_8 == 0) {
      FUN_00a3fb10();
    }
    if (puVar5 == puVar1) {
      cVar3 = '\x01';
      goto LAB_00831e8c;
    }
    FUN_0082bcb0();
  }
  puVar1 = local_4;
  iVar2 = local_8;
  if (*param_2 == 0) {
    puVar7 = (undefined4 *)0x0;
  }
  else {
    puVar7 = (undefined4 *)(*param_2 + 4);
  }
  cVar4 = FUN_00830f20(*puVar7);
  if (cVar4 == '\0') {
    param_1[1] = (int)puVar1;
    *param_1 = iVar2;
    *(undefined *)(param_1 + 2) = 0;
    return;
  }
LAB_00831e8c:
  piVar6 = (int *)FUN_00831c00(&local_8,cVar3,puVar5,param_2);
  iVar2 = piVar6[1];
  *param_1 = *piVar6;
  param_1[1] = iVar2;
  *(undefined *)(param_1 + 2) = 1;
  return;
}



void __thiscall
FUN_00831f10(int param_1_00,undefined4 param_1,int param_2,uint param_3,undefined4 *param_4)

{
  uint uVar1;
  uint *puVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  uint uVar6;
  uint extraout_ECX;
  uint uStack_2c;
  undefined4 local_1c;
  undefined4 local_18;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bc3cd0;
  local_10 = ExceptionList;
  uStack_2c = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_2c;
  ExceptionList = &local_10;
  iVar3 = *(int *)(param_1_00 + 0xc);
  if (iVar3 == 0) {
    uVar6 = 0;
  }
  else {
    uVar6 = *(int *)(param_1_00 + 0x14) - iVar3 >> 3;
  }
  if (param_3 != 0) {
    iVar4 = *(int *)(param_1_00 + 0x10);
    iVar3 = iVar4 - iVar3 >> 3;
    puVar2 = &uStack_2c;
    if (0x1fffffffU - iVar3 < param_3) {
      iVar3 = FUN_00837240();
      uVar6 = extraout_ECX;
      puVar2 = local_14;
    }
    local_14 = puVar2;
    uVar1 = iVar3 + param_3;
    if (uVar6 < uVar1) {
      if (0x1fffffff - (uVar6 >> 1) < uVar6) {
        local_18 = 0;
      }
      else {
        local_18 = uVar6 + (uVar6 >> 1);
      }
      if (local_18 < uVar1) {
        local_18 = uVar1;
      }
      iVar4 = FUN_00a6b850(local_18,0);
      iVar3 = param_2 - *(int *)(param_1_00 + 0xc) >> 3;
      local_8 = 0;
      FUN_00831a90(iVar4 + iVar3 * 8,param_3,param_4);
      uVar6 = (uint)param_4 >> 8;
      param_4 = (undefined4 *)(uVar6 << 8);
      FUN_00831890(*(undefined4 *)(param_1_00 + 0xc),param_2,iVar4,param_1_00 + 8,param_4,param_4);
      param_4 = (undefined4 *)(uVar6 << 8);
      FUN_00831890(param_2,*(undefined4 *)(param_1_00 + 0x10),iVar4 + (iVar3 + param_3) * 8,
                   param_1_00 + 8,param_4,param_4);
      iVar3 = *(int *)(param_1_00 + 0xc);
      if (iVar3 != 0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar3);
      }
      *(uint *)(param_1_00 + 0x14) = iVar4 + local_18 * 8;
      *(uint *)(param_1_00 + 0x10) =
           iVar4 + (param_3 + (*(int *)(param_1_00 + 0x10) - iVar3 >> 3)) * 8;
      *(int *)(param_1_00 + 0xc) = iVar4;
      ExceptionList = local_10;
      return;
    }
    if ((uint)(iVar4 - param_2 >> 3) < param_3) {
      local_1c = *param_4;
      local_18 = CONCAT22(*(undefined2 *)((int)param_4 + 6),(undefined2)local_18);
      local_18 = CONCAT31(local_18._1_3_,*(undefined *)(param_4 + 1));
      FUN_00831b10(param_2,iVar4,param_3 * 8 + param_2);
      local_8 = 2;
      FUN_00831a90(*(int *)(param_1_00 + 0x10),
                   param_3 - (*(int *)(param_1_00 + 0x10) - param_2 >> 3),&local_1c);
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + param_3 * 8;
      FUN_00831960(param_2,*(int *)(param_1_00 + 0x10) + param_3 * -8,&local_1c);
      ExceptionList = local_10;
      return;
    }
    local_1c = *param_4;
    local_18 = CONCAT22(*(undefined2 *)((int)param_4 + 6),(undefined2)local_18);
    iVar3 = iVar4 + param_3 * -8;
    local_18 = CONCAT31(local_18._1_3_,*(undefined *)(param_4 + 1));
    uVar5 = FUN_00831b10(iVar3,iVar4,iVar4);
    *(undefined4 *)(param_1_00 + 0x10) = uVar5;
    FUN_00831a10(param_2,iVar3,iVar4);
    FUN_00831960(param_2,param_3 * 8 + param_2,&local_1c);
  }
  ExceptionList = local_10;
  return;
}



void Catch_All_00832067(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 0x10));
}



void __thiscall
FUN_00832170(int param_1_00,undefined4 param_1,int param_2,uint param_3,undefined4 *param_4)

{
  uint uVar1;
  uint *puVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  uint extraout_ECX;
  uint uStack_38;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined local_1c;
  undefined local_1b;
  uint local_18;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bc3cf0;
  local_10 = ExceptionList;
  uStack_38 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_38;
  ExceptionList = &local_10;
  iVar3 = *(int *)(param_1_00 + 0xc);
  if (iVar3 == 0) {
    local_18 = 0;
  }
  else {
    local_18 = *(int *)(param_1_00 + 0x14) - iVar3 >> 4;
  }
  if (param_3 != 0) {
    iVar4 = *(int *)(param_1_00 + 0x10);
    iVar3 = iVar4 - iVar3 >> 4;
    puVar2 = &uStack_38;
    if (0xfffffffU - iVar3 < param_3) {
      iVar3 = FUN_00837240();
      local_18 = extraout_ECX;
      puVar2 = local_14;
    }
    local_14 = puVar2;
    uVar1 = iVar3 + param_3;
    if (local_18 < uVar1) {
      if (0xfffffff - (local_18 >> 1) < local_18) {
        local_18 = 0;
      }
      else {
        local_18 = local_18 + (local_18 >> 1);
      }
      if (local_18 < uVar1) {
        local_18 = uVar1;
      }
      iVar4 = FUN_008314a0(local_18,0);
      iVar3 = param_2 - *(int *)(param_1_00 + 0xc) >> 4;
      local_8 = 0;
      FUN_00831ad0(iVar3 * 0x10 + iVar4,param_3,param_4);
      uVar1 = (uint)param_4 >> 8;
      param_4 = (undefined4 *)(uVar1 << 8);
      FUN_008318d0(*(undefined4 *)(param_1_00 + 0xc),param_2,iVar4,param_1_00 + 8,param_4,param_4);
      param_4 = (undefined4 *)(uVar1 << 8);
      FUN_008318d0(param_2,*(undefined4 *)(param_1_00 + 0x10),(iVar3 + param_3) * 0x10 + iVar4,
                   param_1_00 + 8,param_4,param_4);
      iVar3 = *(int *)(param_1_00 + 0xc);
      if (iVar3 != 0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar3);
      }
      *(uint *)(param_1_00 + 0x14) = local_18 * 0x10 + iVar4;
      *(uint *)(param_1_00 + 0x10) =
           (param_3 + (*(int *)(param_1_00 + 0x10) - iVar3 >> 4)) * 0x10 + iVar4;
      *(int *)(param_1_00 + 0xc) = iVar4;
      ExceptionList = local_10;
      return;
    }
    if ((uint)(iVar4 - param_2 >> 4) < param_3) {
      local_28 = *param_4;
      local_24 = param_4[1];
      local_20 = param_4[2];
      local_1c = *(undefined *)(param_4 + 3);
      local_1b = *(undefined *)((int)param_4 + 0xd);
      FUN_00831b40(param_2,iVar4,param_3 * 0x10 + param_2);
      local_8 = 2;
      FUN_00831ad0(*(int *)(param_1_00 + 0x10),
                   param_3 - (*(int *)(param_1_00 + 0x10) - param_2 >> 4),&local_28);
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + param_3 * 0x10;
      FUN_00831500(param_2,*(int *)(param_1_00 + 0x10) + param_3 * -0x10,&local_28);
      ExceptionList = local_10;
      return;
    }
    local_28 = *param_4;
    local_24 = param_4[1];
    local_20 = param_4[2];
    local_1c = *(undefined *)(param_4 + 3);
    local_1b = *(undefined *)((int)param_4 + 0xd);
    iVar3 = iVar4 + param_3 * -0x10;
    uVar5 = FUN_00831b40(iVar3,iVar4,iVar4);
    *(undefined4 *)(param_1_00 + 0x10) = uVar5;
    FUN_00831a40(param_2,iVar3,iVar4);
    FUN_00831500(param_2,param_3 * 0x10 + param_2,&local_28);
  }
  ExceptionList = local_10;
  return;
}



void Catch_All_008322d1(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 0x10));
}



void __thiscall
FUN_008323f0(int **param_1_00,int **param_1,int *param_2,int param_3,undefined4 param_4)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  
  piVar1 = param_1_00[3];
  if (((int)param_1_00[4] - (int)piVar1 & 0xfffffff8U) == 0) {
    iVar4 = 0;
  }
  else {
    if (param_1_00[4] < piVar1) {
      FUN_00a3fb10();
    }
    if ((param_2 == (int *)0x0) || (param_2 != *param_1_00)) {
      FUN_00a3fb10();
    }
    iVar4 = param_3 - (int)piVar1 >> 3;
  }
  FUN_00831f10(param_2,param_3,1,param_4);
  piVar1 = param_1_00[3];
  if (param_1_00[4] < piVar1) {
    FUN_00a3fb10();
  }
  piVar2 = *param_1_00;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar2;
  }
  piVar1 = piVar1 + iVar4 * 2;
  if (piVar1 <= *(int **)(iVar3 + 0x10)) {
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *piVar2;
    }
    if (*(int **)(iVar4 + 0xc) <= piVar1) goto LAB_0083248c;
  }
  FUN_00a3fb10();
LAB_0083248c:
  param_1[1] = piVar1;
  *param_1 = piVar2;
  return;
}



void __thiscall
FUN_008324a0(int **param_1_00,int **param_1,int *param_2,int param_3,undefined4 param_4)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  
  piVar4 = param_1_00[3];
  if (((int)param_1_00[4] - (int)piVar4 & 0xfffffff0U) == 0) {
    iVar3 = 0;
  }
  else {
    if (param_1_00[4] < piVar4) {
      FUN_00a3fb10();
    }
    if ((param_2 == (int *)0x0) || (param_2 != *param_1_00)) {
      FUN_00a3fb10();
    }
    iVar3 = param_3 - (int)piVar4 >> 4;
  }
  FUN_00832170(param_2,param_3,1,param_4);
  piVar4 = param_1_00[3];
  if (param_1_00[4] < piVar4) {
    FUN_00a3fb10();
  }
  piVar1 = *param_1_00;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1;
  }
  piVar4 = piVar4 + iVar3 * 4;
  if (piVar4 <= *(int **)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(int **)(iVar3 + 0xc) <= piVar4) goto LAB_0083253e;
  }
  FUN_00a3fb10();
LAB_0083253e:
  param_1[1] = piVar4;
  *param_1 = piVar1;
  return;
}



void __thiscall FUN_00832560(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint local_8 [2];
  
  uVar1 = param_1_00[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(param_1_00[5] - uVar1) >> 3;
  }
  uVar2 = param_1_00[4];
  if ((uint)((int)(uVar2 - uVar1) >> 3) < uVar3) {
    local_8[0] = local_8[0] & 0xffffff00;
    FUN_00831990(uVar2,1,param_1,param_1_00 + 2,param_1,local_8[0]);
    param_1_00[4] = uVar2 + 8;
    return;
  }
  if (uVar2 < uVar1) {
    FUN_00a3fb10();
  }
  FUN_008323f0(local_8,*param_1_00,uVar2,param_1);
  return;
}



void __thiscall FUN_008325e0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint local_8 [2];
  
  uVar1 = param_1_00[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(param_1_00[5] - uVar1) >> 4;
  }
  uVar2 = param_1_00[4];
  if ((uint)((int)(uVar2 - uVar1) >> 4) < uVar3) {
    local_8[0] = local_8[0] & 0xffffff00;
    FUN_008319d0(uVar2,1,param_1,param_1_00 + 2,param_1,local_8[0]);
    param_1_00[4] = uVar2 + 0x10;
    return;
  }
  if (uVar2 < uVar1) {
    FUN_00a3fb10();
  }
  FUN_008324a0(local_8,*param_1_00,uVar2,param_1);
  return;
}



short * __thiscall FUN_00832660(int param_1_00,short *param_1,int param_2)

{
  int *piVar1;
  int *piVar2;
  short sVar3;
  int **ppiVar4;
  int iVar5;
  int local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10;
  undefined local_f;
  undefined local_c [12];
  
  sVar3 = (short)*(undefined4 *)(param_1_00 + 0x48);
  *param_1 = sVar3;
  local_18 = CONCAT22(local_18._2_2_,sVar3);
  local_1c = param_2;
  ppiVar4 = (int **)FUN_00831e00(local_c,&local_1c);
  piVar1 = *ppiVar4;
  piVar2 = ppiVar4[1];
  if (*(char *)(ppiVar4 + 2) != '\0') {
    local_1c = param_2;
    local_18 = 0;
    local_14 = 0;
    local_10 = 0;
    local_f = 0;
    FUN_008325e0(&local_1c);
  }
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar5 = 0;
  }
  else {
    iVar5 = *piVar1;
  }
  if (piVar2 == *(int **)(iVar5 + 0x18)) {
    FUN_00a3fb10();
  }
  sVar3 = *(short *)(piVar2 + 4);
  *param_1 = sVar3;
  if ((uint)(*(int *)(param_1_00 + 0x5c) - *(int *)(param_1_00 + 0x58) >> 4) <= (uint)(int)sVar3) {
    FUN_00a3fb10();
  }
  *(undefined4 *)(sVar3 * 0x10 + 4 + *(int *)(param_1_00 + 0x58)) = *(undefined4 *)(param_2 + 8);
  return param_1;
}



void __thiscall FUN_00832720(int param_1_00,undefined4 param_1,int param_2,undefined4 *param_3)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  short local_24 [2];
  int local_20;
  int local_1c;
  undefined local_18;
  short local_16;
  undefined4 local_14;
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3d18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_2 == *(int *)(param_1_00 + 100)) && (param_3 == *(undefined4 **)(param_1_00 + 0x68))) {
    (**(code **)*param_3)
              (param_1,param_2,*(undefined4 *)(param_1_00 + 0x6c),
               DAT_0323f878 ^ (uint)&stack0xffffffcc);
    ExceptionList = local_c;
    return;
  }
  FUN_00832660(local_24,param_3);
  uVar3 = (uint)local_24[0];
  if ((uint)(*(int *)(param_1_00 + 0x5c) - *(int *)(param_1_00 + 0x58) >> 4) <= uVar3) {
    FUN_00a3fb10();
  }
  iVar4 = uVar3 * 0x10 + *(int *)(param_1_00 + 0x58);
  local_20 = iVar4;
  FUN_00831660(param_1,iVar4);
  local_14 = *(undefined4 *)(param_1_00 + 0x20);
  piVar1 = (int *)(param_1_00 + 0x20);
  cVar2 = *(char *)(iVar4 + 0xc);
  iVar4 = *(int *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14) >> 3;
  local_4 = 0;
  *piVar1 = iVar4;
  local_10 = piVar1;
  if (cVar2 != '\0') {
    cVar2 = FUN_008316f0(param_1,&param_2);
    if (cVar2 == '\0') goto LAB_00832839;
    local_1c = param_2;
    local_18 = 0;
    local_16 = local_24[0];
    FUN_00832560(&local_1c);
    *(int *)(param_1_00 + 0x24) = *(int *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14) >> 3;
  }
  (**(code **)*param_3)(param_1,param_2,*(undefined4 *)(local_20 + 8));
  *(int *)(param_1_00 + 0x28) = iVar4;
LAB_00832839:
  FUN_00831470(piVar1,&local_14);
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_00832860(int param_1_00,int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4
            )

{
  undefined4 *puVar1;
  int *piVar2;
  char cVar3;
  int *piVar4;
  int iVar5;
  undefined4 uVar6;
  code *unaff_EBX;
  uint uVar7;
  undefined *puVar8;
  short sVar9;
  int *local_178;
  undefined4 *local_174;
  undefined4 local_170;
  undefined uStack_16c;
  short sStack_16a;
  undefined *puStack_168;
  undefined4 *puStack_164;
  undefined4 uStack_160;
  int *local_15c;
  int iStack_158;
  undefined4 uStack_154;
  int *piStack_150;
  undefined4 uStack_14c;
  undefined4 *puStack_148;
  undefined4 uStack_144;
  int iStack_140;
  undefined4 uStack_13c;
  undefined4 *puStack_138;
  undefined4 uStack_134;
  int iStack_130;
  char acStack_98 [4];
  undefined auStack_94 [132];
  void *local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bc3d82;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&local_178);
  ExceptionList = &local_c;
  local_174 = param_4;
  local_178 = (int *)((uint)local_178 & 0xffff0000);
  local_15c = param_1;
  local_170 = param_2;
  (**(code **)(*param_1 + 0xc))(&local_178,DAT_0323f878 ^ (uint)&stack0xfffffe78);
  sVar9 = (short)unaff_EBX;
  if (sVar9 == -1) {
    *param_2 = 0;
    goto LAB_00832b9e;
  }
  if ((short)*(undefined4 *)(param_1_00 + 0x48) <= sVar9) {
    if (param_3 == (undefined4 *)0x0) {
LAB_0083291a:
      puStack_168 = auStack_94;
      (**(code **)(*param_1 + 4))(&puStack_168);
      if ((acStack_98[0] == '\0') || (iVar5 = FUN_00831360(acStack_98), iVar5 == 0)) {
        uVar6 = FUN_00832e60(2,0,0,1);
        local_c = (void *)0x0;
        iVar5 = FUN_0043fc7f(uVar6);
      }
      param_3 = (undefined4 *)(*unaff_EBX)(iVar5);
    }
    else {
      piVar4 = (int *)(**(code **)*param_3)();
      cVar3 = (**(code **)(*piVar4 + 0x10))();
      if (cVar3 != '\0') goto LAB_0083291a;
    }
    uVar6 = (**(code **)*param_3)();
    FUN_00832660(&local_170,uVar6);
    if ((uint)(*(int *)(param_1_00 + 0x5c) - *(int *)(param_1_00 + 0x58) >> 4) <= (uint)(int)sVar9)
    {
      FUN_00a3fb10();
    }
    *(undefined4 **)(*(int *)(param_1_00 + 0x58) + 4 + sVar9 * 0x10) = param_3;
  }
  if ((uint)(*(int *)(param_1_00 + 0x5c) - *(int *)(param_1_00 + 0x58) >> 4) <= (uint)(int)sVar9) {
    FUN_00a3fb10();
  }
  puVar8 = (undefined *)(sVar9 * 0x10 + *(int *)(param_1_00 + 0x58));
  piVar4 = *(int **)(puVar8 + 4);
  local_178 = piVar4;
  puStack_168 = puVar8;
  FUN_00831660(param_1,puVar8);
  cVar3 = puVar8[0xc];
  local_170 = (undefined4 *)CONCAT31(local_170._1_3_,cVar3);
  if (cVar3 != '\0') {
    cVar3 = FUN_008316f0(param_1,local_174);
    if (cVar3 == '\0') goto LAB_00832b9e;
    cVar3 = (char)local_170;
  }
  uStack_144 = *(undefined4 *)(param_1_00 + 0x20);
  iStack_158 = param_1_00 + 0x20;
  uStack_8 = (undefined *)0x1;
  iStack_140 = iStack_158;
  if (cVar3 == '\0') {
    (**(code **)(*piVar4 + 4))(param_1,local_174,*(undefined4 *)(puVar8 + 8));
  }
  else {
    uStack_14c = *(undefined4 *)(param_1_00 + 100);
    puStack_164 = (undefined4 *)(param_1_00 + 100);
    uStack_13c = *(undefined4 *)(param_1_00 + 0x68);
    puVar1 = (undefined4 *)(param_1_00 + 0x68);
    uStack_154 = *(undefined4 *)(param_1_00 + 0x6c);
    piVar2 = (int *)(param_1_00 + 0x6c);
    uStack_8._0_1_ = 4;
    uStack_8._1_3_ = 0;
    local_15c = piVar2;
    piStack_150 = piVar2;
    puStack_148 = puStack_164;
    puStack_138 = puVar1;
    uVar6 = (**(code **)*piVar4)();
    *puVar1 = uVar6;
    *piVar2 = *(int *)(puStack_168 + 8);
    uStack_134 = *(undefined4 *)(param_1_00 + 0x24);
    uVar7 = *(int *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14) >> 3;
    local_170 = (undefined4 *)*local_174;
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,5);
    uStack_16c = 0;
    sStack_16a = sVar9;
    iStack_130 = param_1_00 + 0x24;
    FUN_00832560(&local_170);
    if ((uint)(*(int *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14) >> 3) <= uVar7) {
      FUN_00a3fb10();
    }
    local_170 = (undefined4 *)(uVar7 * 8);
    (**(code **)(*local_178 + 4))
              (uStack_160,*(int *)(param_1_00 + 0x14) + (int)local_170,
               *(undefined4 *)(puStack_168 + 8));
    if ((uint)(*(int *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14) >> 3) <= uVar7) {
      FUN_00a3fb10();
    }
    *local_174 = *(undefined4 *)((int)local_170 + *(int *)(param_1_00 + 0x14));
    if ((uint)(*(int *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14) >> 3) <= uVar7) {
      FUN_00a3fb10();
    }
    *(undefined *)(*(int *)(param_1_00 + 0x14) + 4 + (int)local_170) = 1;
    FUN_00831470(param_1_00 + 0x24,&uStack_134);
    FUN_00831470(local_15c,&uStack_154);
    *puVar1 = uStack_13c;
    *puStack_164 = uStack_14c;
  }
  FUN_00831470(iStack_158,&uStack_144);
LAB_00832b9e:
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00832bd0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_00832720(param_1_00,param_1,param_2);
  return;
}



void __thiscall
FUN_00832bf0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00832860(param_1_00,param_1,param_2,param_3);
  return;
}



void FUN_00832c10(undefined4 param_1)

{
  FUN_00832660(&param_1,param_1);
  return;
}



int __thiscall FUN_00832c30(int param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3dc6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0083e7c0(param_1_00,DAT_0323f878 ^ (uint)&stack0xffffffe8);
  *(undefined4 *)(param_1_00 + 4) = param_1;
  FUN_00a74790();
  *(undefined4 *)(param_1_00 + 0x20) = 0;
  *(undefined4 *)(param_1_00 + 0x24) = 0;
  local_4 = 0;
  *(undefined4 *)(param_1_00 + 0x28) = 0;
  FUN_00831b70(&param_1,&param_1);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00a74790();
  *(undefined4 *)(param_1_00 + 100) = 0;
  *(undefined4 *)(param_1_00 + 0x68) = 0;
  *(undefined4 *)(param_1_00 + 0x6c) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00832cc0(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc3dfb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  if (*(int *)(param_1 + 0x58) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(int *)(param_1 + 0x58),uVar1);
  }
  *(undefined4 *)(param_1 + 0x58) = 0;
  *(undefined4 *)(param_1 + 0x5c) = 0;
  *(undefined4 *)(param_1 + 0x60) = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x4c),uVar1);
}



undefined4 * __thiscall FUN_00832d60(undefined4 *param_1_00,undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = boost::archive::detail::basic_iarchive::vftable;
  pvVar1 = operator_new(0x70);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00832c30(param_1);
  }
  param_1_00[1] = uVar2;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00832dd0(undefined4 *param_1)

{
  int iVar1;
  
  iVar1 = param_1[1];
  *param_1 = boost::archive::detail::basic_iarchive::vftable;
  if (iVar1 != 0) {
    FUN_00832cc0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __thiscall FUN_00832df0(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[1] = param_1;
  *param_1_00 = boost::archive::detail::basic_iserializer::vftable;
  param_1_00[2] = 0;
  return;
}



void __fastcall FUN_00832e10(undefined4 *param_1)

{
  *param_1 = boost::archive::detail::basic_iserializer::vftable;
  return;
}



void __thiscall FUN_00832e20(int param_1_00,uint param_1,char *param_2)

{
  char cVar1;
  
  if (0x7e < param_1) {
    *(undefined *)(param_1 + 4 + param_1_00) = 0;
    return;
  }
  do {
    cVar1 = *param_2;
    param_2 = param_2 + 1;
    if (cVar1 == '\0') break;
    *(char *)(param_1 + 4 + param_1_00) = cVar1;
    param_1 = param_1 + 1;
  } while (param_1 < 0x7f);
  *(undefined *)(param_1 + 4 + param_1_00) = 0;
  return;
}



int * __thiscall
FUN_00832e60(int *param_1_00,int param_1,char *param_2,undefined *param_3,int param_4)

{
  undefined4 uVar1;
  
  if (param_4 != 0) {
    *param_1_00 = (int)&PTR_00fafcf0;
    FUN_00a3f1a9();
  }
  *(undefined ***)((int)param_1_00 + *(int *)(*param_1_00 + 4)) =
       boost::archive::archive_exception::vftable;
  *(int *)(*(int *)(*param_1_00 + 4) + -4 + (int)param_1_00) = *(int *)(*param_1_00 + 4) + -0x8c;
  param_1_00[0x21] = param_1;
  switch(param_1) {
  case 0:
    FUN_00832e20(0,"uninitialized exception");
    return param_1_00;
  case 1:
    FUN_00832e20(0,"unknown derived exception");
    return param_1_00;
  case 2:
    uVar1 = FUN_00832e20(0,"unregistered class");
    if (param_2 != (char *)0x0) {
      uVar1 = FUN_00832e20(uVar1,&DAT_00d24ba4);
      FUN_00832e20(uVar1,param_2);
      return param_1_00;
    }
    break;
  case 3:
    FUN_00832e20(0,"invalid signature");
    return param_1_00;
  case 4:
    FUN_00832e20(0,"unsupported version");
    return param_1_00;
  case 5:
    FUN_00832e20(0,"pointer conflict");
    return param_1_00;
  case 6:
    uVar1 = FUN_00832e20(0,"incompatible native format");
    if (param_2 != (char *)0x0) {
      uVar1 = FUN_00832e20(uVar1,&DAT_00d24ba4);
      FUN_00832e20(uVar1,param_2);
      return param_1_00;
    }
    break;
  case 7:
    FUN_00832e20(0,"array size too short");
    return param_1_00;
  case 8:
    FUN_00832e20(0,"input stream error");
    return param_1_00;
  case 9:
    FUN_00832e20(0,"class name too long");
    return param_1_00;
  case 10:
    uVar1 = FUN_00832e20(0,"unregistered void cast ");
    if (param_2 == (char *)0x0) {
      param_2 = "?";
    }
    uVar1 = FUN_00832e20(uVar1,param_2);
    uVar1 = FUN_00832e20(uVar1,&DAT_00d24aec);
    if (param_3 == (undefined *)0x0) {
      param_3 = &DAT_00d24af0;
    }
    FUN_00832e20(uVar1,param_3);
    return param_1_00;
  case 0xb:
    uVar1 = FUN_00832e20(0,"class version ");
    if (param_2 == (char *)0x0) {
      param_2 = "<unknown class>";
    }
    FUN_00832e20(uVar1,param_2);
    return param_1_00;
  case 0xc:
    uVar1 = FUN_00832e20(0,"code instantiated in more than one module");
    if (param_2 != (char *)0x0) {
      uVar1 = FUN_00832e20(uVar1,&DAT_00d24ba4);
      FUN_00832e20(uVar1,param_2);
      return param_1_00;
    }
    break;
  case 0xd:
    FUN_00832e20(0,"output stream error");
    return param_1_00;
  default:
    FUN_00832e20(0,"programming error");
  }
  return param_1_00;
}



void __fastcall FUN_008330e0(int param_1)

{
  int iVar1;
  
  *(undefined ***)(*(int *)(*(int *)(param_1 + -0x8c) + 4) + -0x8c + param_1) =
       boost::archive::archive_exception::vftable;
  iVar1 = *(int *)(*(int *)(param_1 + -0x8c) + 4);
  *(int *)(iVar1 + -0x90 + param_1) = iVar1 + -0x8c;
  return;
}



int __fastcall FUN_00833110(int param_1)

{
  return param_1 + -0x88;
}



void FUN_00833120(byte param_1)

{
  undefined **local_a0 [3];
  undefined4 local_94;
  char local_90 [128];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3e2b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_a0;
  ExceptionList = &local_c;
  local_90[0] = -1;
  local_90[1] = 0xff;
  local_90[2] = 0xff;
  local_90[3] = 0xff;
  local_90[4] = 0xff;
  local_90[5] = 0xff;
  local_90[6] = 0xff;
  local_90[7] = 0xff;
  local_90[8] = 0xff;
  local_90[9] = 0xff;
  local_90[10] = 0xff;
  local_90[0xb] = 0xff;
  local_90[0xc] = 0xff;
  local_90[0xd] = 0xff;
  local_90[0xe] = 0xff;
  local_90[0xf] = 0xff;
  local_90[0x10] = 0xff;
  local_90[0x11] = 0xff;
  local_90[0x12] = 0xff;
  local_90[0x13] = 0xff;
  local_90[0x14] = 0xff;
  local_90[0x15] = 0xff;
  local_90[0x16] = 0xff;
  local_90[0x17] = 0xff;
  local_90[0x18] = 0xff;
  local_90[0x19] = 0xff;
  local_90[0x1a] = 0xff;
  local_90[0x1b] = 0xff;
  local_90[0x1c] = 0xff;
  local_90[0x1d] = 0xff;
  local_90[0x1e] = 0xff;
  local_90[0x1f] = 0xff;
  local_90[0x20] = 0xff;
  local_90[0x21] = 0xff;
  local_90[0x22] = 0xff;
  local_90[0x23] = 0xff;
  local_90[0x24] = 0xff;
  local_90[0x25] = 0xff;
  local_90[0x26] = 0xff;
  local_90[0x27] = 0xff;
  local_90[0x28] = 0xff;
  local_90[0x29] = 0xff;
  local_90[0x2a] = 0xff;
  local_90[0x2b] = 0x3e;
  local_90[0x2c] = 0xff;
  local_90[0x2d] = 0xff;
  local_90[0x2e] = 0xff;
  local_90[0x2f] = 0x3f;
  local_90[0x30] = 0x34;
  local_90[0x31] = 0x35;
  local_90[0x32] = 0x36;
  local_90[0x33] = 0x37;
  local_90[0x34] = 0x38;
  local_90[0x35] = 0x39;
  local_90[0x36] = 0x3a;
  local_90[0x37] = 0x3b;
  local_90[0x38] = 0x3c;
  local_90[0x39] = 0x3d;
  local_90[0x3a] = 0xff;
  local_90[0x3b] = 0xff;
  local_90[0x3c] = 0xff;
  local_90[0x3d] = 0;
  local_90[0x3e] = 0xff;
  local_90[0x3f] = 0xff;
  local_90[0x40] = 0xff;
  local_90[0x41] = 0;
  local_90[0x42] = 1;
  local_90[0x43] = 2;
  local_90[0x44] = 3;
  local_90[0x45] = 4;
  local_90[0x46] = 5;
  local_90[0x47] = 6;
  local_90[0x48] = 7;
  local_90[0x49] = 8;
  local_90[0x4a] = 9;
  local_90[0x4b] = 10;
  local_90[0x4c] = 0xb;
  local_90[0x4d] = 0xc;
  local_90[0x4e] = 0xd;
  local_90[0x4f] = 0xe;
  local_90[0x50] = 0xf;
  local_90[0x51] = 0x10;
  local_90[0x52] = 0x11;
  local_90[0x53] = 0x12;
  local_90[0x54] = 0x13;
  local_90[0x55] = 0x14;
  local_90[0x56] = 0x15;
  local_90[0x57] = 0x16;
  local_90[0x58] = 0x17;
  local_90[0x59] = 0x18;
  local_90[0x5a] = 0x19;
  local_90[0x5b] = 0xff;
  local_90[0x5c] = 0xff;
  local_90[0x5d] = 0xff;
  local_90[0x5e] = 0xff;
  local_90[0x5f] = 0xff;
  local_90[0x60] = 0xff;
  local_90[0x61] = 0x1a;
  local_90[0x62] = 0x1b;
  local_90[99] = 0x1c;
  local_90[100] = 0x1d;
  local_90[0x65] = 0x1e;
  local_90[0x66] = 0x1f;
  local_90[0x67] = 0x20;
  local_90[0x68] = 0x21;
  local_90[0x69] = 0x22;
  local_90[0x6a] = 0x23;
  local_90[0x6b] = 0x24;
  local_90[0x6c] = 0x25;
  local_90[0x6d] = 0x26;
  local_90[0x6e] = 0x27;
  local_90[0x6f] = 0x28;
  local_90[0x70] = 0x29;
  local_90[0x71] = 0x2a;
  local_90[0x72] = 0x2b;
  local_90[0x73] = 0x2c;
  local_90[0x74] = 0x2d;
  local_90[0x75] = 0x2e;
  local_90[0x76] = 0x2f;
  local_90[0x77] = 0x30;
  local_90[0x78] = 0x31;
  local_90[0x79] = 0x32;
  local_90[0x7a] = 0x33;
  local_90[0x7b] = 0xff;
  local_90[0x7c] = 0xff;
  local_90[0x7d] = 0xff;
  local_90[0x7e] = 0xff;
  local_90[0x7f] = 0xff;
  if ((0x7f < param_1) || (local_90[(char)param_1] == -1)) {
    FUN_00a3f1a9(DAT_0323f878 ^ (uint)local_a0);
    local_a0[0] = boost::archive::iterators::dataflow_exception::vftable;
    local_94 = 1;
    local_4 = 0;
    FUN_0082ac70(local_a0);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __fastcall FUN_00833450(int *param_1)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  
  piVar1 = *(int **)(*(int *)(*param_1 + 4) + 0x28 + (int)param_1);
  uVar4 = 0;
  if (piVar1 == (int *)0x0) {
    uVar3 = 0xffffffff;
  }
  else {
    iVar2 = (**(code **)(*piVar1 + 0x30))();
    if (iVar2 == -1) {
      uVar4 = 4;
      uVar3 = 0xffffffff;
    }
    else {
      uVar3 = 0;
    }
  }
  if (uVar4 != 0) {
    uVar4 = *(uint *)((int)param_1 + *(int *)(*param_1 + 4) + 8) | uVar4;
    if (*(int *)((int)param_1 + *(int *)(*param_1 + 4) + 0x28) == 0) {
      uVar4 = uVar4 | 4;
    }
    FUN_00417a55(uVar4,0);
  }
  return uVar3;
}



void __fastcall FUN_008334b0(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc3e8c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 3;
  FUN_00833450(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4._0_1_ = 2;
  FUN_0082e230();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0082e1b0(*(undefined4 *)(param_1 + 0x14));
  *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x14) = *(undefined4 *)(param_1 + 0x10);
  *(uint *)(*(int *)(param_1 + 4) + 0x10) = *(uint *)(param_1 + 8) & 0xffff;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00833530(int *param_1)

{
  int *piVar1;
  int *piVar2;
  byte *pbVar3;
  uint uVar4;
  char local_24;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bc3eb8;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  param_1[1] = 0;
  FUN_00441871(param_1,1);
  local_8 = 0;
  if (local_24 == '\0') {
    FUN_0083360e();
    return;
  }
  piVar1 = *(int **)(*(int *)(*param_1 + 4) + 0x28 + (int)param_1);
  local_8 = 1;
  if ((*(int *)piVar1[8] == 0) || (piVar2 = (int *)piVar1[0xc], *piVar2 < 1)) {
    uVar4 = (**(code **)(*piVar1 + 0x14))();
  }
  else {
    *piVar2 = *piVar2 + -1;
    pbVar3 = *(byte **)piVar1[8];
    *(byte **)piVar1[8] = pbVar3 + 1;
    uVar4 = (uint)*pbVar3;
  }
  if (uVar4 == 0xffffffff) {
    local_8 = 0;
    FUN_0083360e();
    return;
  }
  param_1[1] = param_1[1] + 1;
  local_8 = 0;
  FUN_0083360e();
  return;
}



undefined * Catch_All_008335d5(void)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  undefined *puVar4;
  uint uVar5;
  int unaff_EBP;
  
  piVar1 = *(int **)(unaff_EBP + -0x14);
  iVar2 = *(int *)(*piVar1 + 4);
  uVar5 = *(uint *)((int)piVar1 + iVar2 + 8) & 0x17 | 4;
  *(uint *)((int)piVar1 + iVar2 + 8) = uVar5;
  if ((*(uint *)((int)piVar1 + iVar2 + 0xc) & uVar5) == 0) {
    *(undefined4 *)(unaff_EBP + -4) = 0;
    return &DAT_00833606;
  }
  __CxxThrowException_8(0,0);
  pcVar3 = (code *)swi(3);
  puVar4 = (undefined *)(*pcVar3)();
  return puVar4;
}



void FUN_0083360e(void)

{
  int iVar1;
  uint uVar2;
  uint unaff_EBX;
  int unaff_EBP;
  int *unaff_ESI;
  
  if (unaff_EBX != 0) {
    uVar2 = *(uint *)((int)unaff_ESI + *(int *)(*unaff_ESI + 4) + 8) | unaff_EBX;
    if (*(int *)((int)unaff_ESI + *(int *)(*unaff_ESI + 4) + 0x28) == 0) {
      uVar2 = uVar2 | 4;
    }
    FUN_00417a55(uVar2,0);
  }
  iVar1 = *(int *)(*(int *)(**(int **)(unaff_EBP + -0x24) + 4) + 0x28 +
                  (int)*(int **)(unaff_EBP + -0x24));
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  if (iVar1 != 0) {
    FUN_00823c6d();
  }
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



int * __thiscall FUN_00833670(int *param_1_00,int param_1,uint param_2)

{
  int *piVar1;
  int *piVar2;
  byte *pbVar3;
  uint uVar4;
  int *local_24;
  char local_20;
  uint local_18;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bc3ee8;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  local_18 = 0;
  param_1_00[1] = 0;
  FUN_00441871(param_1_00,1);
  if ((local_20 != '\0') && (0 < param_1)) {
    local_8 = 1;
    do {
      if ((param_1 != 0x7fffffff) && (param_1 = param_1 + -1, param_1 < 0)) break;
      piVar1 = *(int **)(*(int *)(*param_1_00 + 4) + 0x28 + (int)param_1_00);
      if ((*(int *)piVar1[8] == 0) || (piVar2 = (int *)piVar1[0xc], *piVar2 < 1)) {
        uVar4 = (**(code **)(*piVar1 + 0x14))();
      }
      else {
        *piVar2 = *piVar2 + -1;
        pbVar3 = *(byte **)piVar1[8];
        *(byte **)piVar1[8] = pbVar3 + 1;
        uVar4 = (uint)*pbVar3;
      }
      if (uVar4 == 0xffffffff) {
        local_18 = 1;
        break;
      }
      param_1_00[1] = param_1_00[1] + 1;
    } while (uVar4 != param_2);
  }
  local_8 = 0;
  if (local_18 != 0) {
    local_18 = *(uint *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 8) | local_18;
    if (*(int *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 0x28) == 0) {
      local_18 = local_18 | 4;
    }
    FUN_00417a55(local_18,0);
  }
  local_8 = 0xffffffff;
  if (*(int *)(*(int *)(*local_24 + 4) + 0x28 + (int)local_24) != 0) {
    FUN_00823c6d();
  }
  ExceptionList = local_10;
  return param_1_00;
}



undefined * Catch_All_00833780(void)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  undefined *puVar4;
  uint uVar5;
  int unaff_EBP;
  
  piVar1 = *(int **)(unaff_EBP + -0x18);
  iVar2 = *(int *)(*piVar1 + 4);
  uVar5 = *(uint *)((int)piVar1 + iVar2 + 8) & 0x17 | 4;
  *(uint *)((int)piVar1 + iVar2 + 8) = uVar5;
  if ((*(uint *)((int)piVar1 + iVar2 + 0xc) & uVar5) == 0) {
    *(undefined4 *)(unaff_EBP + -4) = 0;
    return &DAT_008337b1;
  }
  __CxxThrowException_8(0,0);
  pcVar3 = (code *)swi(3);
  puVar4 = (undefined *)(*pcVar3)();
  return puVar4;
}



void __fastcall FUN_008337d0(int *param_1)

{
  int *piVar1;
  char local_24;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bc3f18;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  param_1[1] = 0;
  FUN_00441871(param_1,1);
  local_8 = 0;
  if (local_24 != '\0') {
    piVar1 = *(int **)(*(int *)(*param_1 + 4) + 0x28 + (int)param_1);
    local_8 = 1;
    if ((*(int *)piVar1[8] == 0) || (*(int *)piVar1[0xc] < 1)) {
      (**(code **)(*piVar1 + 0x10))();
    }
    local_8 = 0;
    FUN_00833896();
    return;
  }
  FUN_00833896();
  return;
}



undefined * Catch_All_0083385d(void)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  undefined *puVar4;
  uint uVar5;
  int unaff_EBP;
  
  piVar1 = *(int **)(unaff_EBP + -0x14);
  iVar2 = *(int *)(*piVar1 + 4);
  uVar5 = *(uint *)((int)piVar1 + iVar2 + 8) & 0x17 | 4;
  *(uint *)((int)piVar1 + iVar2 + 8) = uVar5;
  if ((*(uint *)((int)piVar1 + iVar2 + 0xc) & uVar5) == 0) {
    *(undefined4 *)(unaff_EBP + -4) = 0;
    return &DAT_0083388e;
  }
  __CxxThrowException_8(0,0);
  pcVar3 = (code *)swi(3);
  puVar4 = (undefined *)(*pcVar3)();
  return puVar4;
}



void FUN_00833896(void)

{
  int iVar1;
  uint uVar2;
  int unaff_EBP;
  int *unaff_ESI;
  uint unaff_EDI;
  
  if (unaff_EDI != 0) {
    uVar2 = *(uint *)((int)unaff_ESI + *(int *)(*unaff_ESI + 4) + 8) | unaff_EDI;
    if (*(int *)((int)unaff_ESI + *(int *)(*unaff_ESI + 4) + 0x28) == 0) {
      uVar2 = uVar2 | 4;
    }
    FUN_00417a55(uVar2,0);
  }
  iVar1 = *(int *)(*(int *)(**(int **)(unaff_EBP + -0x24) + 4) + 0x28 +
                  (int)*(int **)(unaff_EBP + -0x24));
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  if (iVar1 != 0) {
    FUN_00823c6d();
  }
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



void __fastcall FUN_00833900(int *param_1)

{
  uint uVar1;
  int iVar2;
  
  if (*(char *)((int)param_1 + 9) == '\0') {
    uVar1 = FUN_008337d0();
    iVar2 = _isspace(uVar1 & 0xff);
    while (iVar2 != 0) {
      if (*param_1 != 0) {
        FUN_00833670(1,0xffffffff);
      }
      uVar1 = FUN_008337d0();
      iVar2 = _isspace(uVar1 & 0xff);
    }
    *(undefined *)((int)param_1 + 9) = 1;
  }
  FUN_008337d0();
  return;
}



void __fastcall FUN_00833960(int *param_1)

{
  uint *puVar1;
  uint uVar2;
  uint uVar3;
  undefined uVar4;
  byte bVar5;
  uint *puVar6;
  uint local_c;
  undefined4 uStack_8;
  uint local_4;
  
  local_c = 8;
  *(undefined *)((int)param_1 + 0x11) = 0;
  puVar1 = (uint *)(param_1 + 5);
  do {
    uVar3 = local_c;
    if (*puVar1 == 0) {
      if (*(char *)(param_1 + 6) == '\0') {
        uVar4 = FUN_00833900();
        uStack_8 = CONCAT31(uStack_8._1_3_,uVar4);
        uVar4 = FUN_00833120(uStack_8);
        *(undefined *)((int)param_1 + 9) = 0;
        if (*param_1 != 0) {
          FUN_00833670(1,0xffffffff);
        }
        *(undefined *)((int)param_1 + 0x12) = uVar4;
        *puVar1 = 6;
      }
      else {
        *(undefined *)((int)param_1 + 0x12) = 0;
        *puVar1 = local_c;
      }
    }
    puVar6 = puVar1;
    if (uVar3 <= *puVar1) {
      puVar6 = &local_c;
    }
    uVar2 = *puVar6;
    local_4 = *puVar1;
    bVar5 = (byte)uVar2;
    local_c = uVar3 - uVar2;
    *puVar1 = local_4 - uVar2;
    *(byte *)((int)param_1 + 0x11) =
         *(char *)((int)param_1 + 0x12) >> ((char)local_4 - bVar5 & 0x1f) &
         ('\x01' << (bVar5 & 0x1f)) - 1U | *(char *)((int)param_1 + 0x11) << (bVar5 & 0x1f);
  } while (local_c != 0);
  *(undefined *)(param_1 + 4) = 1;
  return;
}



void __thiscall FUN_00833a20(int **param_1_00,undefined *param_1,int param_2)

{
  byte bVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  int iVar5;
  undefined local_b7;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3f4b;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    if ((*(byte *)(*(int *)(**param_1_00 + 4) + 8 + (int)*param_1_00) & 6) != 0) {
      uVar4 = FUN_00832e60(8,0,0,1);
      local_4 = 0;
      FUN_0043fc7f(uVar4);
    }
    if (param_2 != 0) {
      do {
        param_2 = param_2 + -1;
        FUN_00833960(uVar3);
        *param_1 = local_b7;
        param_1 = param_1 + 1;
      } while (param_2 != 0);
    }
    cVar2 = FUN_00833530();
    bVar1 = *(byte *)(*(int *)(**param_1_00 + 4) + 8 + (int)*param_1_00);
    while (((bVar1 & 1) == 0 && (iVar5 = _isspace((int)cVar2), iVar5 == 0))) {
      cVar2 = FUN_00833530();
      bVar1 = *(byte *)(*(int *)(**param_1_00 + 4) + 8 + (int)*param_1_00);
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00833b30(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[1] = param_1;
  *param_1_00 = boost::archive::detail::basic_pointer_oserializer::vftable;
  return;
}



void __fastcall FUN_00833b50(undefined4 *param_1)

{
  *param_1 = boost::archive::detail::basic_pointer_oserializer::vftable;
  return;
}



// public: static bool __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::binary_oarchive>
// >::is_destroyed(void)

bool __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>::
is_destroyed(void)

{
                    // 0x433b60  1486
                    // ?is_destroyed@?$singleton@V?$map@Vbinary_oarchive@archive@boost@@@extra_detail@detail@archive@boost@@@serialization@boost@@SA_NXZ
  return (bool)DAT_032bca4c;
}



void FUN_00833b70(int param_1)

{
  int iVar1;
  
  iVar1 = param_1;
  param_1 = *(undefined4 *)(param_1 + 0x14);
  FUN_007bcd43(&param_1,4);
  if (0xf < *(uint *)(iVar1 + 0x18)) {
    FUN_007bcd43(*(undefined4 *)(iVar1 + 4),param_1);
    return;
  }
  FUN_007bcd43(iVar1 + 4,param_1);
  return;
}



void __fastcall FUN_00833bd0(int param_1)

{
  undefined local_5;
  undefined4 local_4;
  
  local_5 = 4;
  FUN_007bcd43(&local_5,1);
  local_5 = 4;
  FUN_007bcd43(&local_5,1);
  local_5 = 4;
  FUN_007bcd43(&local_5,1);
  local_5 = 8;
  FUN_007bcd43(&local_5,1);
  local_4 = 1;
  if (param_1 != 0) {
    FUN_007bcd43(&local_4,4);
    return;
  }
  FUN_007bcd43(&local_4,4);
  return;
}



undefined4 * __thiscall FUN_00833c90(undefined4 *param_1_00,undefined4 param_1,undefined4 *param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc3f91;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  param_1_00[1] = 0;
  local_4 = 0;
  param_1_00[2] = *param_1_00;
  FUN_0043f377(param_1_00 + 3);
  local_4._0_1_ = 1;
  if ((char)param_2 == '\0') {
    puVar2 = (undefined4 *)operator_new(8);
    local_4._0_1_ = 2;
    param_2 = puVar2;
    if (puVar2 == (undefined4 *)0x0) {
      puVar2 = (undefined4 *)0x0;
    }
    else {
      FUN_0082e360(0);
      *puVar2 = boost::archive::codecvt_null<char>::vftable;
    }
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar3 = FUN_00823b7b(puVar2,uVar1);
    uVar4 = FUN_0082e4e0(uVar3);
    uVar3 = param_1_00[1];
    param_1_00[1] = uVar4;
    FUN_0082e1b0(uVar3);
    FUN_005de4e0(&param_2,param_1_00[1]);
    std::locale::~locale((locale *)&param_2);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_00833d70(void)

{
  char cVar1;
  char *pcVar2;
  char *pcVar3;
  undefined local_30 [4];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [4];
  uint local_28;
  undefined4 local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3fb8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_30;
  ExceptionList = &local_c;
  pcVar2 = (char *)FUN_0083e7b0(DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_14 = 0xf;
  local_18 = 0;
  local_28 = local_28 & 0xffffff00;
  pcVar3 = pcVar2;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_2c,pcVar2,(int)pcVar3 - (int)(pcVar2 + 1));
  local_4 = 0;
  FUN_009b4100();
  FUN_00833b70(local_2c);
  FUN_0083e7c0(local_30);
  FUN_009b4100();
  FUN_007bcd43(local_30,2);
  if (0xf < local_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_28);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



// private: static class boost::archive::detail::extra_detail::map<class
// boost::archive::binary_oarchive> & __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::binary_oarchive>
// >::get_instance(void)

map<class_boost::archive::binary_oarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>::
get_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
                    // 0x433e90  870
                    // ?get_instance@?$singleton@V?$map@Vbinary_oarchive@archive@boost@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAV?$map@Vbinary_oarchive@archive@boost@@@extra_detail@detail@archive@3@XZ
  puStack_8 = &LAB_00bc3fee;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    local_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c76220);
  }
  ExceptionList = local_c;
  return (map<class_boost::archive::binary_oarchive> *)
         &`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
          ::`2'::t;
}



// public: static class boost::archive::detail::extra_detail::map<class
// boost::archive::binary_oarchive> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::binary_oarchive>
// >::get_const_instance(void)

map<class_boost::archive::binary_oarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>::
get_const_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bc3fee;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  if ((`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    uStack_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c76220);
  }
  ExceptionList = pvStack_c;
  return (map<class_boost::archive::binary_oarchive> *)
         &`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_00833f20(undefined4 param_1)

{
  boost::serialization::
  singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>
  ::get_instance();
  FUN_0083d430(param_1);
  return;
}



void FUN_00833f40(undefined4 param_1)

{
  if (DAT_032bca4c == '\0') {
    boost::serialization::
    singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>
    ::get_instance();
    FUN_0083d2b0(param_1);
  }
  return;
}



void FUN_00833f60(undefined4 param_1)

{
  boost::serialization::
  singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_oarchive>_>
  ::get_instance();
  FUN_0083d230(param_1);
  return;
}



void __thiscall FUN_00833f80(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[1] = param_1;
  *param_1_00 = boost::archive::detail::basic_pointer_iserializer::vftable;
  return;
}



void __fastcall FUN_00833fa0(undefined4 *param_1)

{
  *param_1 = boost::archive::detail::basic_pointer_iserializer::vftable;
  return;
}



// public: static bool __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::naked_binary_iarchive>
// >::is_destroyed(void)

bool __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_>
::is_destroyed(void)

{
                    // 0x433fb0  1487
                    // ?is_destroyed@?$singleton@V?$map@Vnaked_binary_iarchive@archive@boost@@@extra_detail@detail@archive@boost@@@serialization@boost@@SA_NXZ
  return (bool)DAT_032bca78;
}



// public: static bool __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::binary_iarchive>
// >::is_destroyed(void)

bool __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>::
is_destroyed(void)

{
                    // 0x433fc0  1485
                    // ?is_destroyed@?$singleton@V?$map@Vbinary_iarchive@archive@boost@@@extra_detail@detail@archive@boost@@@serialization@boost@@SA_NXZ
  return (bool)DAT_032bca79;
}



void __fastcall FUN_00833fd0(int **param_1)

{
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bc4026;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  local_8 = 2;
  (**(code **)(**param_1 + 0x30))();
  local_8 = 1;
  FUN_0083402d();
  return;
}



undefined * Catch_All_0083401d(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -4) = 1;
  return &DAT_0083402a;
}



void FUN_0083402d(void)

{
  undefined4 uVar1;
  int unaff_EBP;
  int unaff_ESI;
  
  *(undefined *)(unaff_EBP + -4) = 0;
  FUN_0082e230();
  uVar1 = *(undefined4 *)(unaff_ESI + 4);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_0082e1b0(uVar1);
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



void FUN_00834060(void)

{
  uint uVar1;
  undefined4 uVar2;
  char local_141;
  int local_140 [77];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4087;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffeb4;
  ExceptionList = &local_c;
  FUN_007bcde2(&local_141,1);
  if (local_141 != '\x04') {
    uVar2 = FUN_00832e60(6,"size of int",0,1);
    local_4 = 0;
    FUN_0043fc7f(uVar2,uVar1);
  }
  FUN_007bcde2(&local_141,1);
  if (local_141 != '\x04') {
    uVar2 = FUN_00832e60(6,"size of long",0,1);
    local_4 = 1;
    FUN_0043fc7f(uVar2,uVar1);
  }
  FUN_007bcde2(&local_141,1);
  if (local_141 != '\x04') {
    uVar2 = FUN_00832e60(6,"size of float",0,1);
    local_4 = 2;
    FUN_0043fc7f(uVar2);
  }
  FUN_007bcde2(&local_141,1);
  if (local_141 != '\b') {
    uVar2 = FUN_00832e60(6,"size of double",0,1);
    local_4 = 3;
    FUN_0043fc7f(uVar2);
  }
  FUN_007bcde2(local_140,4);
  if (local_140[0] != 1) {
    uVar2 = FUN_00832e60(6,"endian setting",0,1);
    local_4 = 4;
    FUN_0043fc7f(uVar2);
  }
  ExceptionList = local_c;
  return;
}



void FUN_00834210(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  uint local_4;
  
  FUN_007bcde2(&local_4,4);
  if (*(uint *)(param_1 + 0x14) < local_4) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (param_1,local_4 - *(uint *)(param_1 + 0x14),'\0');
  }
  else {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
              (param_1,local_4,0xffffffff);
  }
  if (local_4 == 0) {
    return;
  }
  uVar1 = *(uint *)(param_1 + 0x18);
  puVar4 = (undefined4 *)(param_1 + 4);
  puVar3 = puVar4;
  if (0xf < uVar1) {
    puVar3 = (undefined4 *)*puVar4;
  }
  if (puVar3 != (undefined4 *)0x0) {
    puVar2 = puVar4;
    if (0xf < uVar1) {
      puVar2 = (undefined4 *)*puVar4;
    }
    if (puVar2 <= puVar3) {
      puVar2 = puVar4;
      if (0xf < uVar1) {
        puVar2 = (undefined4 *)*puVar4;
      }
      if (puVar3 <= (undefined4 *)(*(int *)(param_1 + 0x14) + (int)puVar2)) goto LAB_0083429c;
    }
  }
  FUN_00a3fb10();
LAB_0083429c:
  if (param_1 !=
      (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)0xfffffffc) {
    if (0xf < *(uint *)(param_1 + 0x18)) {
      puVar4 = (undefined4 *)*puVar4;
    }
    if ((undefined4 *)(*(int *)(param_1 + 0x14) + (int)puVar4) <= puVar3) {
      FUN_00a3fb10();
    }
  }
  FUN_007bcde2(puVar3,local_4);
  return;
}



// WARNING: Type propagation algorithm not settling

undefined4 __fastcall FUN_008342d0(int param_1)

{
  char cVar1;
  int *piVar2;
  int *piVar3;
  byte *pbVar4;
  char *pcVar5;
  undefined4 *******pppppppuVar6;
  int iVar7;
  ushort *puVar8;
  undefined4 uVar9;
  char *pcVar10;
  undefined4 *******pppppppuVar11;
  uint uVar12;
  uint uStack_e4;
  uint local_38;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_34 [4];
  undefined4 *******local_30 [4];
  uint local_20;
  uint local_1c;
  uint local_18;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bc40ce;
  local_10 = ExceptionList;
  uStack_e4 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_e4;
  ExceptionList = &local_10;
  local_1c = 0xf;
  local_20 = 0;
  local_30[0] = (undefined4 *******)((uint)local_30[0] & 0xffffff00);
  local_8 = 1;
  local_18 = uStack_e4;
  FUN_007bcde2(&local_38);
  pcVar5 = (char *)FUN_0083e7b0();
  pcVar10 = pcVar5 + 1;
  do {
    cVar1 = *pcVar5;
    pcVar5 = pcVar5 + 1;
  } while (cVar1 != '\0');
  if (local_38 == (int)pcVar5 - (int)pcVar10) {
    if (local_20 < local_38) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                (local_34,local_38 - local_20,'\0');
    }
    else {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
                (local_34,local_38,0xffffffff);
    }
    if (local_38 != 0) {
      if (local_1c < 0x10) {
        pppppppuVar11 = local_30;
LAB_0083438a:
        pppppppuVar6 = local_30[0];
        if (local_1c < 0x10) {
          pppppppuVar6 = local_30;
        }
        if (pppppppuVar11 < pppppppuVar6) goto LAB_008343ab;
        pppppppuVar6 = local_30[0];
        if (local_1c < 0x10) {
          pppppppuVar6 = local_30;
        }
        if ((undefined4 *******)((int)pppppppuVar6 + local_20) < pppppppuVar11) goto LAB_008343ab;
      }
      else {
        pppppppuVar11 = local_30[0];
        if (local_30[0] != (undefined4 *******)0x0) goto LAB_0083438a;
LAB_008343ab:
        FUN_00a3fb10();
      }
      if (&stack0x00000000 != (undefined *)0x30) {
        pppppppuVar6 = local_30[0];
        if (local_1c < 0x10) {
          pppppppuVar6 = local_30;
        }
        if ((undefined4 *******)((int)pppppppuVar6 + local_20) <= pppppppuVar11) {
          FUN_00a3fb10();
        }
      }
      FUN_007bcde2(pppppppuVar11);
    }
  }
  local_8 = 0;
  pcVar5 = (char *)FUN_0083e7b0();
  pcVar10 = pcVar5;
  do {
    cVar1 = *pcVar10;
    pcVar10 = pcVar10 + 1;
  } while (cVar1 != '\0');
  iVar7 = FUN_00429910(0,local_20,pcVar5);
  if (iVar7 != 0) {
    FUN_00832e60(3,0,0);
    local_8 = CONCAT31(local_8._1_3_,3);
    FUN_0043fc7f();
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_34,(char *)&PTR_02bd3fc0);
    return 0x8343f6;
  }
  iVar7 = param_1;
  if (param_1 == -9) {
    iVar7 = 0;
  }
  piVar2 = *(int **)(iVar7 + 0xc);
  if ((*(int *)piVar2[8] == 0) || (piVar3 = (int *)piVar2[0xc], *piVar3 < 1)) {
    uVar12 = (**(code **)(*piVar2 + 0x14))();
  }
  else {
    *piVar3 = *piVar3 + -1;
    pbVar4 = *(byte **)piVar2[8];
    *(byte **)piVar2[8] = pbVar4 + 1;
    uVar12 = (uint)*pbVar4;
  }
  if (5 < (int)uVar12) {
    if ((6 < (int)uVar12) && ((int)uVar12 < 8)) {
      iVar7 = param_1;
      if (param_1 == -9) {
        iVar7 = 0;
      }
      iVar7 = std::basic_streambuf<char,struct_std::char_traits<char>_>::sgetc
                        (*(basic_streambuf<char,struct_std::char_traits<char>_> **)(iVar7 + 0xc));
      if (iVar7 != 0) goto LAB_008344d6;
    }
    if (param_1 == -9) {
      param_1 = 0;
    }
    std::basic_streambuf<char,struct_std::char_traits<char>_>::sbumpc
              (*(basic_streambuf<char,struct_std::char_traits<char>_> **)(param_1 + 0xc));
  }
LAB_008344d6:
  FUN_00831440();
  puVar8 = (ushort *)FUN_0083e7c0();
  if (*puVar8 < (ushort)uVar12) {
    FUN_00832e60(4,0,0);
    local_8 = CONCAT31(local_8._1_3_,4);
    FUN_0043fc7f();
  }
  if (local_1c < 0x10) {
    ExceptionList = local_10;
    uVar9 = ___security_check_cookie_4();
    return uVar9;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



undefined4 Catch_0083443a(void)

{
  int unaff_EBP;
  
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (unaff_EBP + -0x30),(char *)&PTR_02bd3fc0);
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return 0x8343f6;
}



void FUN_00834550(void **param_1)

{
  undefined4 uVar1;
  undefined4 *****pppppuVar2;
  size_t extraout_ECX;
  size_t _Size;
  undefined auStack_c4 [144];
  undefined auStack_34 [4];
  undefined4 *****apppppuStack_30 [2];
  undefined local_28;
  uint uStack_20;
  uint uStack_1c;
  undefined4 local_18;
  undefined *local_14;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4113;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_c4;
  ExceptionList = &local_c;
  local_14 = &DAT_0000000f;
  local_18 = 0;
  local_28 = 0;
  local_4 = 0;
  FUN_00401af2(0x80,0,DAT_0323f878 ^ (uint)&stack0xffffff30);
  uStack_20 = 0;
  pppppuVar2 = apppppuStack_30[0];
  if (uStack_1c < 0x10) {
    pppppuVar2 = apppppuStack_30;
  }
  *(undefined *)pppppuVar2 = 0;
  FUN_00834210(auStack_34);
  _Size = uStack_20;
  if (0x7f < uStack_20) {
    uVar1 = FUN_00832e60(9,0,0,1);
    local_c = (void *)CONCAT31(local_c._1_3_,1);
    FUN_0043fc7f(uVar1);
    _Size = extraout_ECX;
  }
  pppppuVar2 = apppppuStack_30[0];
  if (uStack_1c < 0x10) {
    pppppuVar2 = apppppuStack_30;
  }
  _memcpy(*param_1,pppppuVar2,_Size);
  *(undefined *)(uStack_20 + (int)*param_1) = 0;
  if (0xf < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(apppppuStack_30[0]);
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// private: static class boost::archive::detail::extra_detail::map<class
// boost::archive::naked_binary_iarchive> & __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::naked_binary_iarchive>
// >::get_instance(void)

map<class_boost::archive::naked_binary_iarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_>
::get_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
                    // 0x4346b0  871
                    // ?get_instance@?$singleton@V?$map@Vnaked_binary_iarchive@archive@boost@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAV?$map@Vnaked_binary_iarchive@archive@boost@@@extra_detail@detail@archive@3@XZ
  puStack_8 = &LAB_00bc415e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    local_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c76260);
  }
  ExceptionList = local_c;
  return (map<class_boost::archive::naked_binary_iarchive> *)
         &`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_>::get_instance(void)'
          ::`2'::t;
}



// private: static class boost::archive::detail::extra_detail::map<class
// boost::archive::binary_iarchive> & __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::binary_iarchive>
// >::get_instance(void)

map<class_boost::archive::binary_iarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>::
get_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
                    // 0x434730  869
                    // ?get_instance@?$singleton@V?$map@Vbinary_iarchive@archive@boost@@@extra_detail@detail@archive@boost@@@serialization@boost@@CAAAV?$map@Vbinary_iarchive@archive@boost@@@extra_detail@detail@archive@3@XZ
  puStack_8 = &LAB_00bc418e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    local_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c76240);
  }
  ExceptionList = local_c;
  return (map<class_boost::archive::binary_iarchive> *)
         &`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>::get_instance(void)'
          ::`2'::t;
}



// public: static class boost::archive::detail::extra_detail::map<class
// boost::archive::naked_binary_iarchive> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::naked_binary_iarchive>
// >::get_const_instance(void)

map<class_boost::archive::naked_binary_iarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_>
::get_const_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bc415e;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  if ((`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    uStack_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c76260);
  }
  ExceptionList = pvStack_c;
  return (map<class_boost::archive::naked_binary_iarchive> *)
         &`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::naked_binary_iarchive>_>::get_instance(void)'
          ::`2'::t;
}



// public: static class boost::archive::detail::extra_detail::map<class
// boost::archive::binary_iarchive> const & __cdecl boost::serialization::singleton<class
// boost::archive::detail::extra_detail::map<class boost::archive::binary_iarchive>
// >::get_const_instance(void)

map<class_boost::archive::binary_iarchive> * __cdecl
boost::serialization::
singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>::
get_const_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bc418e;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  if ((`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    uStack_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c76240);
  }
  ExceptionList = pvStack_c;
  return (map<class_boost::archive::binary_iarchive> *)
         &`private:_static_class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>&___cdecl_boost::serialization::singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>::get_instance(void)'
          ::`2'::t;
}



void FUN_008347d0(undefined4 param_1)

{
  boost::serialization::
  singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>
  ::get_instance();
  FUN_0083d430(param_1);
  return;
}



void FUN_008347f0(undefined4 param_1)

{
  if (DAT_032bca79 == '\0') {
    boost::serialization::
    singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>
    ::get_instance();
    FUN_0083d2b0(param_1);
  }
  return;
}



void FUN_00834810(undefined4 param_1)

{
  boost::serialization::
  singleton<class_boost::archive::detail::extra_detail::map<class_boost::archive::binary_iarchive>_>
  ::get_instance();
  FUN_0083d230(param_1);
  return;
}



void __fastcall FUN_00834830(undefined4 *param_1)

{
  *param_1 = boost::spirit::classic::impl::
             abstract_parser<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
             ::vftable;
  return;
}



void FUN_00834840(char *param_1)

{
  code *pcVar1;
  char *pcVar2;
  undefined **local_c [3];
  
  if (param_1 == (char *)0x0) {
    pcVar2 = (char *)0x0;
  }
  else {
    pcVar2 = param_1;
    if ((uint)(0xffffffff / ZEXT48(param_1)) < 4) {
      param_1 = (char *)0x0;
      std::exception::exception((exception *)local_c,&param_1);
      local_c[0] = std::bad_alloc::vftable;
      __CxxThrowException_8(local_c,&DAT_031153a4);
      pcVar1 = (code *)swi(3);
      (*pcVar1)();
      return;
    }
  }
  operator_new((int)pcVar2 * 4);
  return;
}



undefined4 __thiscall FUN_008348a0(short *param_1_00,ushort *param_1)

{
  ushort uVar1;
  ushort uVar2;
  
  if (*param_1_00 == 0) {
    uVar2 = 0;
  }
  else {
    uVar2 = *param_1_00 - 1;
  }
  if (param_1_00[1] == -1) {
    uVar1 = 0xffff;
  }
  else {
    uVar1 = param_1_00[1] + 1;
  }
  if ((uVar2 <= param_1[1]) && (*param_1 <= uVar1)) {
    return 1;
  }
  return 0;
}



undefined4 * __fastcall FUN_008348f0(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834920(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<char>_>,struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    puVar1[3] = *(undefined4 *)(param_1 + 0xc);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834960(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::kleene_star<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834990(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<char>_>,class_boost::spirit::classic::action<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spiri...::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar3 = (undefined4 *)(param_1 + 4);
    puVar4 = puVar1;
    for (iVar2 = 7; puVar4 = puVar4 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
    }
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_008349c0(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::strlit<char_const*>_>,class_boost::spirit::classic::action<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,stru...::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar3 = (undefined4 *)(param_1 + 4);
    puVar4 = puVar1;
    for (iVar2 = 7; puVar4 = puVar4 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
    }
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_008349f0(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,struct_boost::archive::xml::append_string<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



uint FUN_00834a20(uint *param_1,int param_2)

{
  uint uVar1;
  
  if ((DAT_032bcad4 & 1) == 0) {
    DAT_032bcad4 = DAT_032bcad4 | 1;
    DAT_032bcad0 = 0xffffffff;
  }
  if ((DAT_032bcad4 & 2) == 0) {
    DAT_032bcad4 = DAT_032bcad4 | 2;
    DAT_032bcacc = DAT_032bcad0 / 10;
  }
  uVar1 = *param_1;
  if (uVar1 <= DAT_032bcacc) {
    uVar1 = uVar1 * 10;
    *param_1 = uVar1;
    if (uVar1 <= DAT_032bcad0 - param_2) {
      *param_1 = uVar1 + param_2;
      return CONCAT31((int3)(uVar1 + param_2 >> 8),1);
    }
  }
  return uVar1 & 0xffffff00;
}



undefined4 * __fastcall FUN_00834a90(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::strlit<wchar_t_const*>,class_boost::spirit::classic::action<struct_boost::spirit::classic::uint_parser<unsigned_int,10,1,-1>,struct_boost::archive::xml::append_char<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    puVar1[3] = *(undefined4 *)(param_1 + 0xc);
    puVar1[4] = *(undefined4 *)(param_1 + 0x10);
    puVar1[5] = *(undefined4 *)(param_1 + 0x14);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834ad0(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::strlit<wchar_t_const*>,class_boost::spirit::classic::action<struct_boost::spirit::classic::uint_parser<unsigned_int,16,1,-1>,struct_boost::archive::xml::append_char<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    puVar1[3] = *(undefined4 *)(param_1 + 0xc);
    puVar1[4] = *(undefined4 *)(param_1 + 0x10);
    puVar1[5] = *(undefined4 *)(param_1 + 0x14);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834b10(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::alternative<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834b40(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::archive::xml::append_lit<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,38>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    puVar1[3] = *(undefined4 *)(param_1 + 0xc);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834b80(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::archive::xml::append_lit<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,60>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    puVar1[3] = *(undefined4 *)(param_1 + 0xc);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834bc0(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::archive::xml::append_lit<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,62>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    puVar1[3] = *(undefined4 *)(param_1 + 0xc);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834c00(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::archive::xml::append_lit<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,39>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    puVar1[3] = *(undefined4 *)(param_1 + 0xc);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834c40(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::archive::xml::append_lit<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,34>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    puVar1[3] = *(undefined4 *)(param_1 + 0xc);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834c80(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x1c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::alternative<struct_boost::spirit::classic::alternative<struct_boost::spirit::classic::alternative<struct_boost::spirit::classic::alternative<struct_boost::spirit::classic::alternative<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::actio...::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    puVar1[3] = *(undefined4 *)(param_1 + 0xc);
    puVar1[4] = *(undefined4 *)(param_1 + 0x10);
    puVar1[5] = *(undefined4 *)(param_1 + 0x14);
    puVar1[6] = *(undefined4 *)(param_1 + 0x18);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834cd0(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x1c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::alternative<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::positive<struct_boost::spirit::classic::alternative<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>_>,class_boost::spirit::classic::strlit<wchar_t_const*>_>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    puVar1[3] = *(undefined4 *)(param_1 + 0xc);
    puVar1[4] = *(undefined4 *)(param_1 + 0x10);
    puVar1[5] = *(undefined4 *)(param_1 + 0x14);
    puVar1[6] = *(undefined4 *)(param_1 + 0x18);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



uint FUN_00834d20(uint *param_1,int param_2)

{
  uint uVar1;
  
  if ((DAT_032bcaec & 1) == 0) {
    DAT_032bcaec = DAT_032bcaec | 1;
    DAT_032bcae8 = -0x80000000;
  }
  if ((DAT_032bcaec & 2) == 0) {
    DAT_032bcaec = DAT_032bcaec | 2;
    DAT_032bcae4 = DAT_032bcae8 / 10;
  }
  uVar1 = DAT_032bcae4;
  if ((int)DAT_032bcae4 <= (int)*param_1) {
    uVar1 = *param_1 * 10;
    *param_1 = uVar1;
    if (DAT_032bcae8 + param_2 <= (int)uVar1) {
      *param_1 = uVar1 - param_2;
      return CONCAT31((int3)(uVar1 - param_2 >> 8),1);
    }
  }
  return uVar1 & 0xffffff00;
}



uint FUN_00834da0(uint *param_1,int param_2)

{
  uint uVar1;
  
  if ((DAT_032bcaf8 & 1) == 0) {
    DAT_032bcaf8 = DAT_032bcaf8 | 1;
    DAT_032bcaf4 = 0x7fffffff;
  }
  if ((DAT_032bcaf8 & 2) == 0) {
    DAT_032bcaf8 = DAT_032bcaf8 | 2;
    DAT_032bcaf0 = DAT_032bcaf4 / 10;
  }
  uVar1 = DAT_032bcaf0;
  if ((int)*param_1 <= (int)DAT_032bcaf0) {
    uVar1 = *param_1 * 10;
    *param_1 = uVar1;
    if ((int)uVar1 <= DAT_032bcaf4 - param_2) {
      *param_1 = uVar1 + param_2;
      return CONCAT31((int3)(uVar1 + param_2 >> 8),1);
    }
  }
  return uVar1 & 0xffffff00;
}



undefined4 * __fastcall FUN_00834e20(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = (undefined4 *)operator_new(0x24);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::strlit<char_const*>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::action<struct_boost::spirit::classic::int_parser<int,10,1,-1>,struct_boost::archive::xml::assign_impl<short>_>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar3 = (undefined4 *)(param_1 + 4);
    puVar4 = puVar1;
    for (iVar2 = 8; puVar4 = puVar4 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
    }
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834e50(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = (undefined4 *)operator_new(0x30);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::alternative<class_boost::spirit::classic::strlit<char_const*>,class_boost::spirit::classic::strlit<char_const*>_>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::action<struct_boost::spirit::classic::uint_parser<unsigned_int,10,1,-1>,struct_boost::archive::xml::assign_impl<unsigned_int>_>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar3 = (undefined4 *)(param_1 + 4);
    puVar4 = puVar1;
    for (iVar2 = 0xb; puVar4 = puVar4 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
    }
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834e80(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(8);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::kleene_star<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834eb0(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x1c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::strlit<char_const*>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    puVar1[3] = *(undefined4 *)(param_1 + 0xc);
    puVar1[4] = *(undefined4 *)(param_1 + 0x10);
    puVar1[5] = *(undefined4 *)(param_1 + 0x14);
    puVar1[6] = *(undefined4 *)(param_1 + 0x18);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834f00(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::strlit<char_const*>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::action<struct_boost::spirit::classic::uint_parser<unsigned_int,10,1,-1>,struct_boost::archive::xml::assign_level>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar3 = (undefined4 *)(param_1 + 4);
    puVar4 = puVar1;
    for (iVar2 = 7; puVar4 = puVar4 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
    }
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __thiscall FUN_00834f30(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::spirit::classic::impl::
                abstract_parser<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
                ::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_00834f50(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::strlit<char_const*>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::action<struct_boost::spirit::classic::uint_parser<unsigned_int,10,1,-1>,struct_boost::archive::xml::assign_impl<unsigned_int>_>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar3 = (undefined4 *)(param_1 + 4);
    puVar4 = puVar1;
    for (iVar2 = 7; puVar4 = puVar4 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
    }
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834f80(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    puVar1[3] = *(undefined4 *)(param_1 + 0xc);
    puVar1[4] = *(undefined4 *)(param_1 + 0x10);
    puVar1[5] = *(undefined4 *)(param_1 + 0x14);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834fc0(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::strlit<wchar_t_const*>_>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,cla...::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar3 = (undefined4 *)(param_1 + 4);
    puVar4 = puVar1;
    for (iVar2 = 0xd; puVar4 = puVar4 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
    }
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00834ff0(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::strlit<wchar_t_const*>_>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    puVar1[3] = *(undefined4 *)(param_1 + 0xc);
    puVar1[4] = *(undefined4 *)(param_1 + 0x10);
    puVar1[5] = *(undefined4 *)(param_1 + 0x14);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00835030(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::strlit<wchar_t_const*>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::action<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,struct_boost::archive::xml::assign_impl<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar3 = (undefined4 *)(param_1 + 4);
    puVar4 = puVar1;
    for (iVar2 = 7; puVar4 = puVar4 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
    }
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00835060(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = (undefined4 *)operator_new(0x34);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::strlit<wchar_t_const*>_>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_polic...::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar3 = (undefined4 *)(param_1 + 4);
    puVar4 = puVar1;
    for (iVar2 = 0xc; puVar4 = puVar4 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
    }
    return puVar1;
  }
  return (undefined4 *)0x0;
}



int ** __fastcall FUN_00835090(int **param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *param_1;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *param_1;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_008350aa;
    }
  }
  iVar2 = *piVar1;
LAB_008350aa:
  if (param_1[1] <= *(int **)(iVar2 + 0xc)) {
    FUN_00a3fb10();
  }
  param_1[1] = param_1[1] + -1;
  return param_1;
}



undefined4 * __thiscall FUN_008350c0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bc41b0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_boost::spirit::classic::basic_chset<char>_>::
              vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_00835139(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 8));
}



void __fastcall FUN_00835150(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
}



void FUN_00835160(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)

{
  if (param_1 != param_2) {
    do {
      if (param_3 != (undefined4 *)0x0) {
        *param_3 = *param_1;
      }
      param_1 = param_1 + 1;
      param_3 = param_3 + 1;
    } while (param_1 != param_2);
  }
  return;
}



int __thiscall FUN_00835190(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0x18);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::strlit<wchar_t_const*>,class_boost::spirit::classic::action<struct_boost::spirit::classic::uint_parser<unsigned_int,10,1,-1>,struct_boost::archive::xml::append_char<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar2[1] = *param_1;
    puVar2[2] = param_1[1];
    puVar2[3] = param_1[2];
    puVar2[4] = param_1[3];
    puVar2[5] = param_1[4];
  }
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  *(undefined4 **)(param_1_00 + 4) = puVar2;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  return param_1_00;
}



int __thiscall FUN_008351f0(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0x18);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::strlit<wchar_t_const*>,class_boost::spirit::classic::action<struct_boost::spirit::classic::uint_parser<unsigned_int,16,1,-1>,struct_boost::archive::xml::append_char<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar2[1] = *param_1;
    puVar2[2] = param_1[1];
    puVar2[3] = param_1[2];
    puVar2[4] = param_1[3];
    puVar2[5] = param_1[4];
  }
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  *(undefined4 **)(param_1_00 + 4) = puVar2;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  return param_1_00;
}



int __thiscall FUN_00835250(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::alternative<struct_boost::spirit::classic::alternative<struct_boost::spirit::classic::alternative<struct_boost::spirit::classic::alternative<struct_boost::spirit::classic::alternative<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::actio...::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar2[1] = *param_1;
    puVar2[2] = param_1[1];
    puVar2[3] = param_1[2];
    puVar2[4] = param_1[3];
    puVar2[5] = param_1[4];
    puVar2[6] = param_1[5];
  }
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  *(undefined4 **)(param_1_00 + 4) = puVar2;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  return param_1_00;
}



int __thiscall FUN_008352b0(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::alternative<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::positive<struct_boost::spirit::classic::alternative<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>_>,class_boost::spirit::classic::strlit<wchar_t_const*>_>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar2[1] = *param_1;
    puVar2[2] = param_1[1];
    puVar2[3] = param_1[2];
    puVar2[4] = param_1[3];
    puVar2[5] = param_1[4];
    puVar2[6] = param_1[5];
  }
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  *(undefined4 **)(param_1_00 + 4) = puVar2;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  return param_1_00;
}



int __thiscall FUN_00835310(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0x1c);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::strlit<char_const*>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar2[1] = *param_1;
    puVar2[2] = param_1[1];
    puVar2[3] = param_1[2];
    puVar2[4] = param_1[3];
    puVar2[5] = param_1[4];
    puVar2[6] = param_1[5];
  }
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  *(undefined4 **)(param_1_00 + 4) = puVar2;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  return param_1_00;
}



int __thiscall FUN_00835370(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::strlit<char_const*>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::action<struct_boost::spirit::classic::uint_parser<unsigned_int,10,1,-1>,struct_boost::archive::xml::assign_level>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar3 = puVar1;
    for (iVar2 = 7; puVar3 = puVar3 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar3 = *param_1;
      param_1 = param_1 + 1;
    }
  }
  puVar3 = *(undefined4 **)(param_1_00 + 4);
  *(undefined4 **)(param_1_00 + 4) = puVar1;
  if (puVar3 != (undefined4 *)0x0) {
    (**(code **)*puVar3)(1);
  }
  return param_1_00;
}



int __thiscall FUN_008353c0(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::strlit<char_const*>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::action<struct_boost::spirit::classic::uint_parser<unsigned_int,10,1,-1>,struct_boost::archive::xml::assign_impl<unsigned_int>_>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar3 = puVar1;
    for (iVar2 = 7; puVar3 = puVar3 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar3 = *param_1;
      param_1 = param_1 + 1;
    }
  }
  puVar3 = *(undefined4 **)(param_1_00 + 4);
  *(undefined4 **)(param_1_00 + 4) = puVar1;
  if (puVar3 != (undefined4 *)0x0) {
    (**(code **)*puVar3)(1);
  }
  return param_1_00;
}



int __thiscall FUN_00835410(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0x18);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar2[1] = *param_1;
    puVar2[2] = param_1[1];
    puVar2[3] = param_1[2];
    puVar2[4] = param_1[3];
    puVar2[5] = param_1[4];
  }
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  *(undefined4 **)(param_1_00 + 4) = puVar2;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  return param_1_00;
}



int __thiscall FUN_00835470(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  
  puVar1 = (undefined4 *)operator_new(0x38);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::strlit<wchar_t_const*>_>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,cla...::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar3 = puVar1;
    for (iVar2 = 0xd; puVar3 = puVar3 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar3 = *param_1;
      param_1 = param_1 + 1;
    }
  }
  puVar3 = *(undefined4 **)(param_1_00 + 4);
  *(undefined4 **)(param_1_00 + 4) = puVar1;
  if (puVar3 != (undefined4 *)0x0) {
    (**(code **)*puVar3)(1);
  }
  return param_1_00;
}



int __thiscall FUN_008354c0(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0x18);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::strlit<wchar_t_const*>_>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar2[1] = *param_1;
    puVar2[2] = param_1[1];
    puVar2[3] = param_1[2];
    puVar2[4] = param_1[3];
    puVar2[5] = param_1[4];
  }
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  *(undefined4 **)(param_1_00 + 4) = puVar2;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1);
  }
  return param_1_00;
}



int __thiscall FUN_00835520(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::strlit<wchar_t_const*>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::action<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,struct_boost::archive::xml::assign_impl<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar3 = puVar1;
    for (iVar2 = 7; puVar3 = puVar3 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar3 = *param_1;
      param_1 = param_1 + 1;
    }
  }
  puVar3 = *(undefined4 **)(param_1_00 + 4);
  *(undefined4 **)(param_1_00 + 4) = puVar1;
  if (puVar3 != (undefined4 *)0x0) {
    (**(code **)*puVar3)(1);
  }
  return param_1_00;
}



int __thiscall FUN_00835570(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  
  puVar1 = (undefined4 *)operator_new(0x34);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::strlit<wchar_t_const*>_>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_polic...::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar3 = puVar1;
    for (iVar2 = 0xc; puVar3 = puVar3 + 1, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar3 = *param_1;
      param_1 = param_1 + 1;
    }
  }
  puVar3 = *(undefined4 **)(param_1_00 + 4);
  *(undefined4 **)(param_1_00 + 4) = puVar1;
  if (puVar3 != (undefined4 *)0x0) {
    (**(code **)*puVar3)(1);
  }
  return param_1_00;
}



void __thiscall
FUN_008355c0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  
  puVar3 = (undefined4 *)FUN_008350c0(param_2);
  uVar1 = *param_3;
  *param_3 = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1,param_2,param_2);
  return;
}



int * __fastcall FUN_00835630(int **param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *param_1;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    piVar1 = *param_1;
    if (piVar1 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_0083564a;
    }
  }
  iVar2 = *piVar1;
LAB_0083564a:
  if (*(int **)(iVar2 + 0x10) <= param_1[1]) {
    FUN_00a3fb10();
    return param_1[1];
  }
  return param_1[1];
}



void FUN_00835660(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)

{
  if (param_1 != param_2) {
    do {
      *param_1 = *param_3;
      param_1 = param_1 + 1;
    } while (param_1 != param_2);
  }
  return;
}



void FUN_00835680(undefined4 *param_1,int param_2,undefined4 *param_3)

{
  if (param_2 != 0) {
    do {
      if (param_1 != (undefined4 *)0x0) {
        *param_1 = *param_3;
      }
      param_2 = param_2 + -1;
      param_1 = param_1 + 1;
    } while (param_2 != 0);
  }
  return;
}



undefined4 * __thiscall FUN_008356b0(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  int iVar2;
  int *piVar3;
  undefined4 local_8 [2];
  
  uVar1 = *param_1;
  iVar2 = param_1[1];
  if (iVar2 != 0) {
    LOCK();
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    UNLOCK();
  }
  if (local_8 != param_1_00) {
    *param_1_00 = uVar1;
  }
  piVar3 = (int *)param_1_00[1];
  param_1_00[1] = iVar2;
  if (piVar3 != (int *)0x0) {
    LOCK();
    iVar2 = piVar3[1] + -1;
    piVar3[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar3 + 4))();
      LOCK();
      iVar2 = piVar3[2] + -1;
      piVar3[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar3 + 8))();
      }
    }
  }
  return param_1_00;
}



void __fastcall FUN_00835720(int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x34) = 0xf;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined *)(param_1 + 0x20) = 0;
  *(undefined4 *)(param_1 + 0x40) = 0;
  *(undefined *)(param_1 + 0x44) = 0;
  *(undefined4 *)(param_1 + 0x60) = 0xf;
  *(undefined4 *)(param_1 + 0x5c) = 0;
  *(undefined *)(param_1 + 0x4c) = 0;
  return;
}



void __fastcall FUN_00835780(int param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *(int **)(param_1 + 4);
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
                    // WARNING: Could not recover jumptable at 0x008357b1. Too many branches
                    // WARNING: Treating indirect jump as call
        (**(code **)(*piVar1 + 8))();
        return;
      }
    }
  }
  return;
}



undefined4 * __thiscall FUN_008357c0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf220b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  param_1_00[1] = 0;
  local_4 = 0;
  FUN_008355c0(param_1_00,param_1,param_1_00 + 1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_00835820(undefined4 *param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4208;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  if ((param_1[1] == 0) || (*(int *)(param_1[1] + 4) != 1)) {
    puVar2 = (undefined4 *)operator_new(0x20);
    if (puVar2 == (undefined4 *)0x0) {
      puVar2 = (undefined4 *)0x0;
    }
    else {
      puVar5 = (undefined4 *)*param_1;
      puVar6 = puVar2;
      for (iVar4 = 8; iVar4 != 0; iVar4 = iVar4 + -1) {
        *puVar6 = *puVar5;
        puVar5 = puVar5 + 1;
        puVar6 = puVar6 + 1;
      }
    }
    uVar3 = FUN_008357c0(puVar2);
    local_4 = 0;
    FUN_008356b0(uVar3);
    local_4 = 0xffffffff;
    if (local_10 != (int *)0x0) {
      LOCK();
      iVar4 = local_10[1] + -1;
      local_10[1] = iVar4;
      UNLOCK();
      if (iVar4 == 0) {
        (**(code **)(*local_10 + 4))(uVar1);
        LOCK();
        iVar4 = local_10[2] + -1;
        local_10[2] = iVar4;
        UNLOCK();
        if (iVar4 == 0) {
          (**(code **)(*local_10 + 8))();
        }
      }
    }
  }
  ExceptionList = local_c;
  return;
}



undefined __fastcall FUN_008358e0(int param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  
  piVar1 = *(int **)(param_1 + 4);
  if (*piVar1 == -4) {
    return *(undefined *)piVar1[1];
  }
  if (*piVar1 == 0) {
    FUN_00a3fb10();
  }
  iVar2 = *piVar1;
  if (*(uint *)(iVar2 + 0x18) < 0x10) {
    iVar3 = iVar2 + 4;
  }
  else {
    iVar3 = *(int *)(iVar2 + 4);
  }
  if ((uint)(*(int *)(iVar2 + 0x14) + iVar3) <= (uint)piVar1[1]) {
    FUN_00a3fb10();
    return *(undefined *)piVar1[1];
  }
  return *(undefined *)piVar1[1];
}



void __thiscall FUN_00835930(int **param_1_00,int **param_1,int param_2)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  
  piVar1 = param_1_00[1];
  piVar2 = *param_1_00;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar2;
  }
  piVar1 = piVar1 + -param_2;
  if (piVar1 <= *(int **)(iVar3 + 0x10)) {
    if (piVar2 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar2;
    }
    if (*(int **)(iVar3 + 0xc) <= piVar1) goto LAB_00835969;
  }
  FUN_00a3fb10();
LAB_00835969:
  *param_1 = piVar2;
  param_1[1] = piVar1;
  return;
}



int FUN_00835980(int param_1,int param_2,int param_3)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  
  iVar2 = param_2 - param_1;
  if (param_1 != param_2) {
    iVar3 = param_3 - param_2;
    do {
      puVar1 = (undefined4 *)(param_2 + -4);
      param_2 = param_2 + -4;
      *(undefined4 *)(iVar3 + param_2) = *puVar1;
    } while (param_2 != param_1);
  }
  return param_3 + (iVar2 >> 2) * -4;
}



void FUN_008359c0(int *param_1,ushort *param_2,ushort *param_3,int param_4)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar3 = (int)param_3 - (int)param_2;
  if (param_2 != param_3) {
    do {
      piVar1 = *(int **)(param_4 + 4);
      iVar2 = *piVar1;
      if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != *(int *)(param_4 + 8))))) {
        FUN_00a3fb10();
      }
      if (piVar1[1] == *(int *)(param_4 + 0xc)) {
LAB_00835a94:
        *param_1 = -1;
        return;
      }
      piVar1 = *(int **)(param_4 + 4);
      if (*piVar1 != -4) {
        if (*piVar1 == 0) {
          FUN_00a3fb10();
        }
        iVar2 = *piVar1;
        if (*(uint *)(iVar2 + 0x18) < 0x10) {
          iVar4 = iVar2 + 4;
        }
        else {
          iVar4 = *(int *)(iVar2 + 4);
        }
        if ((uint)(*(int *)(iVar2 + 0x14) + iVar4) <= (uint)piVar1[1]) {
          FUN_00a3fb10();
        }
      }
      if ((uint)*param_2 != (int)*(char *)piVar1[1]) goto LAB_00835a94;
      piVar1 = *(int **)(param_4 + 4);
      param_2 = param_2 + 1;
      if (*piVar1 != -4) {
        if (*piVar1 == 0) {
          FUN_00a3fb10();
        }
        iVar2 = *piVar1;
        if (*(uint *)(iVar2 + 0x18) < 0x10) {
          iVar4 = iVar2 + 4;
        }
        else {
          iVar4 = *(int *)(iVar2 + 4);
        }
        if ((uint)(*(int *)(iVar2 + 0x14) + iVar4) <= (uint)piVar1[1]) {
          FUN_00a3fb10();
        }
      }
      piVar1[1] = piVar1[1] + 1;
    } while (param_2 != param_3);
  }
  *param_1 = iVar3 >> 1;
  return;
}



bool FUN_00835ab0(int param_1,int *param_2)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  char cVar4;
  int iVar5;
  
  *param_2 = 0;
  piVar2 = *(int **)(param_1 + 4);
  if (*piVar2 != -4) {
    if (*piVar2 == 0) {
      FUN_00a3fb10();
    }
    iVar3 = *piVar2;
    if (*(uint *)(iVar3 + 0x18) < 0x10) {
      iVar5 = iVar3 + 4;
    }
    else {
      iVar5 = *(int *)(iVar3 + 4);
    }
    if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)piVar2[1]) {
      FUN_00a3fb10();
    }
  }
  cVar1 = *(char *)piVar2[1];
  if (cVar1 != '-') {
    cVar4 = FUN_008358e0();
    if (cVar4 != '+') {
      return false;
    }
  }
  piVar2 = *(int **)(param_1 + 4);
  if (*piVar2 != -4) {
    if (*piVar2 == 0) {
      FUN_00a3fb10();
    }
    iVar3 = *piVar2;
    if (*(uint *)(iVar3 + 0x18) < 0x10) {
      iVar5 = iVar3 + 4;
    }
    else {
      iVar5 = *(int *)(iVar3 + 4);
    }
    if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)piVar2[1]) {
      FUN_00a3fb10();
    }
  }
  piVar2[1] = piVar2[1] + 1;
  *param_2 = *param_2 + 1;
  return cVar1 == '-';
}



void FUN_00835b60(int *param_1,char *param_2,char *param_3,int param_4)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar3 = (int)param_3 - (int)param_2;
  if (param_2 != param_3) {
    do {
      piVar1 = *(int **)(param_4 + 4);
      iVar2 = *piVar1;
      if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != *(int *)(param_4 + 8))))) {
        FUN_00a3fb10();
      }
      if (piVar1[1] == *(int *)(param_4 + 0xc)) {
LAB_00835c2c:
        *param_1 = -1;
        return;
      }
      piVar1 = *(int **)(param_4 + 4);
      if (*piVar1 != -4) {
        if (*piVar1 == 0) {
          FUN_00a3fb10();
        }
        iVar2 = *piVar1;
        if (*(uint *)(iVar2 + 0x18) < 0x10) {
          iVar4 = iVar2 + 4;
        }
        else {
          iVar4 = *(int *)(iVar2 + 4);
        }
        if ((uint)(*(int *)(iVar2 + 0x14) + iVar4) <= (uint)piVar1[1]) {
          FUN_00a3fb10();
        }
      }
      if (*param_2 != *(char *)piVar1[1]) goto LAB_00835c2c;
      piVar1 = *(int **)(param_4 + 4);
      param_2 = param_2 + 1;
      if (*piVar1 != -4) {
        if (*piVar1 == 0) {
          FUN_00a3fb10();
        }
        iVar2 = *piVar1;
        if (*(uint *)(iVar2 + 0x18) < 0x10) {
          iVar4 = iVar2 + 4;
        }
        else {
          iVar4 = *(int *)(iVar2 + 4);
        }
        if ((uint)(*(int *)(iVar2 + 0x14) + iVar4) <= (uint)piVar1[1]) {
          FUN_00a3fb10();
        }
      }
      piVar1[1] = piVar1[1] + 1;
    } while (param_2 != param_3);
  }
  *param_1 = iVar3;
  return;
}



undefined4 __fastcall FUN_00835c40(undefined4 param_1)

{
  void *pvVar1;
  int iVar2;
  
  pvVar1 = operator_new(0x20);
  if (pvVar1 != (void *)0x0) {
    iVar2 = 7;
    do {
      iVar2 = iVar2 + -1;
      *(undefined4 *)((int)pvVar1 + iVar2 * 4 + 4) = 0;
    } while (-1 < iVar2);
    FUN_008357c0(pvVar1);
    return param_1;
  }
  FUN_008357c0(0);
  return param_1;
}



void FUN_00835c90(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  
  *param_1 = *param_2;
  param_1[1] = param_2[1];
  uVar1 = param_2[3];
  param_1[2] = param_2[2];
  param_1[3] = uVar1;
  param_1[4] = *param_3;
  param_1[5] = param_3[1];
  param_1[6] = param_3[2];
  param_1[7] = param_3[3];
  uVar1 = param_3[5];
  param_1[8] = param_3[4];
  param_1[9] = uVar1;
  return;
}



undefined4 * __thiscall FUN_00835ce0(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4238;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1_00 = boost::spirit::classic::impl::
                concrete_parser<class_boost::spirit::classic::chset<char>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
                ::vftable;
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar3 = (undefined4 *)*param_1;
    puVar4 = puVar1;
    for (iVar2 = 8; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
      puVar4 = puVar4 + 1;
    }
  }
  FUN_008357c0(puVar1);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00835d60(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc45d8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = boost::spirit::classic::impl::
             concrete_parser<class_boost::spirit::classic::chset<char>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
             ::vftable;
  piVar1 = (int *)param_1[2];
  local_4 = 0;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = boost::spirit::classic::impl::
             abstract_parser<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
             ::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00835de0(undefined4 param_1_00,byte param_1)

{
  FUN_00835d60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_00835e00(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xc);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00835ce0(param_1 + 4);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00835e70(int *param_1_00,int *param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  
  uVar2 = param_2;
  if (*(int **)(*param_1_00 + 4) != (int *)0x0) {
    piVar3 = (int *)(**(code **)(**(int **)(*param_1_00 + 4) + 4))(&param_2,param_2);
    iVar1 = *piVar3;
    if ((-1 < iVar1) && (*(int **)(param_1_00[1] + 4) != (int *)0x0)) {
      piVar3 = (int *)(**(code **)(**(int **)(param_1_00[1] + 4) + 4))(&param_2,uVar2);
      if (-1 < *piVar3) {
        *param_1 = *piVar3 + iVar1;
        return;
      }
    }
  }
  *param_1 = -1;
  return;
}



int * __thiscall FUN_00835ee0(int *param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  undefined auStack_c [8];
  undefined4 local_4;
  
  iVar3 = param_2;
  *param_1 = 0;
  while( true ) {
    local_4 = (*(undefined4 **)(iVar3 + 4))[1];
    uVar1 = **(undefined4 **)(iVar3 + 4);
    if (*(int **)(*param_1_00 + 4) == (int *)0x0) break;
    piVar4 = (int *)(**(code **)(**(int **)(*param_1_00 + 4) + 4))(&param_2,iVar3);
    iVar5 = *piVar4;
    if ((iVar5 < 0) || (*(int **)(param_1_00[1] + 4) == (int *)0x0)) break;
    piVar4 = (int *)(**(code **)(**(int **)(param_1_00[1] + 4) + 4))(auStack_c,iVar3);
    if ((*piVar4 < 0) || (iVar5 = *piVar4 + iVar5, iVar5 < 0)) break;
    *param_1 = *param_1 + iVar5;
  }
  puVar2 = *(undefined4 **)(iVar3 + 4);
  *puVar2 = uVar1;
  puVar2[1] = local_4;
  return param_1;
}



int * __thiscall FUN_00835f70(int *param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  int *piVar5;
  int *unaff_EBX;
  
  iVar4 = param_2;
  uVar1 = **(undefined4 **)(param_2 + 4);
  uVar2 = (*(undefined4 **)(param_2 + 4))[1];
  if (*(int **)(*param_1_00 + 4) != (int *)0x0) {
    piVar5 = (int *)(**(code **)(**(int **)(*param_1_00 + 4) + 4))(&param_2,param_2);
    if (-1 < *piVar5) {
      *param_1 = *piVar5;
      return param_1;
    }
  }
  puVar3 = *(undefined4 **)(iVar4 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  if (*(int **)(param_1_00[1] + 4) != (int *)0x0) {
    piVar5 = (int *)(**(code **)(**(int **)(param_1_00[1] + 4) + 4))(&param_2,iVar4);
    *unaff_EBX = *piVar5;
    return unaff_EBX;
  }
  *param_1 = -1;
  return param_1;
}



int * __thiscall FUN_00835ff0(int *param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  int *piVar5;
  
  iVar4 = param_2;
  *param_1 = 0;
  while( true ) {
    uVar1 = **(undefined4 **)(iVar4 + 4);
    uVar2 = (*(undefined4 **)(iVar4 + 4))[1];
    if (*(int **)(*param_1_00 + 4) == (int *)0x0) break;
    piVar5 = (int *)(**(code **)(**(int **)(*param_1_00 + 4) + 4))(&param_2,iVar4);
    if (*piVar5 < 0) break;
    *param_1 = *param_1 + *piVar5;
  }
  puVar3 = *(undefined4 **)(iVar4 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  return param_1;
}



int __thiscall FUN_00836050(uint param_1_00,int param_1,int param_2,undefined4 param_3)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_00835680(param_1,param_2,param_3,param_1_00 + 8,param_3,local_4);
  return param_1 + param_2 * 4;
}



void __thiscall FUN_00836090(int *param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  int *piVar5;
  
  iVar4 = param_2;
  uVar1 = (*(undefined4 **)(param_2 + 4))[1];
  uVar2 = **(undefined4 **)(param_2 + 4);
  if (*(int **)(*param_1_00 + 4) != (int *)0x0) {
    piVar5 = (int *)(**(code **)(**(int **)(*param_1_00 + 4) + 4))(&param_2,param_2);
    if (-1 < *piVar5) {
      *param_1 = *piVar5;
      return;
    }
  }
  puVar3 = *(undefined4 **)(iVar4 + 4);
  *puVar3 = uVar2;
  puVar3[1] = uVar1;
  *param_1 = 0;
  return;
}



int * __thiscall FUN_008360e0(int param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  int *piVar5;
  int *unaff_EBX;
  
  iVar4 = param_2;
  uVar1 = **(undefined4 **)(param_2 + 4);
  uVar2 = (*(undefined4 **)(param_2 + 4))[1];
  FUN_00835f70(&param_2,param_2);
  if (-1 < param_2) {
    *param_1 = param_2;
    return param_1;
  }
  puVar3 = *(undefined4 **)(iVar4 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  piVar5 = *(int **)(*(int *)(param_1_00 + 8) + 4);
  if (piVar5 != (int *)0x0) {
    piVar5 = (int *)(**(code **)(*piVar5 + 4))(&param_2,iVar4);
    *unaff_EBX = *piVar5;
    return unaff_EBX;
  }
  *param_1 = -1;
  return param_1;
}



int * __thiscall
FUN_00836160(int *param_1_00,int *param_1,undefined4 param_2,uint param_3,undefined4 param_4,
            undefined4 *param_5)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  int iVar4;
  
  *param_1 = 0;
  if (((param_1_00 == (int *)0x0) || (param_3 < (uint)param_1_00[3])) ||
     ((uint)param_1_00[4] < param_3)) {
    FUN_00a3fb10();
  }
  *param_1 = *param_1_00;
  param_1[1] = param_3;
  if ((param_5 < (undefined4 *)param_1_00[3]) || ((undefined4 *)param_1_00[4] < param_5)) {
    FUN_00a3fb10();
  }
  if ((*param_1 == 0) || (*param_1 != *param_1_00)) {
    FUN_00a3fb10();
  }
  puVar1 = (undefined4 *)param_1[1];
  if (puVar1 != param_5) {
    puVar2 = (undefined4 *)param_1_00[4];
    iVar3 = (int)puVar2 - (int)param_5;
    if (param_5 != puVar2) {
      iVar4 = (int)puVar1 - (int)param_5;
      do {
        *(undefined4 *)(iVar4 + (int)param_5) = *param_5;
        param_5 = param_5 + 1;
      } while (param_5 != puVar2);
    }
    param_1_00[4] = (int)(puVar1 + (iVar3 >> 2));
  }
  return param_1;
}



int * __thiscall FUN_008361f0(int param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  int *piVar5;
  int *unaff_EBX;
  
  iVar4 = param_2;
  uVar1 = **(undefined4 **)(param_2 + 4);
  uVar2 = (*(undefined4 **)(param_2 + 4))[1];
  FUN_008360e0(&param_2,param_2);
  if (-1 < param_2) {
    *param_1 = param_2;
    return param_1;
  }
  puVar3 = *(undefined4 **)(iVar4 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  piVar5 = *(int **)(*(int *)(param_1_00 + 0xc) + 4);
  if (piVar5 != (int *)0x0) {
    piVar5 = (int *)(**(code **)(*piVar5 + 4))(&param_2,iVar4);
    *unaff_EBX = *piVar5;
    return unaff_EBX;
  }
  *param_1 = -1;
  return param_1;
}



int * FUN_00836270(int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  
  iVar4 = param_2;
  FUN_00835f70(param_1,param_2);
  if (-1 < *param_1) {
    uVar1 = **(undefined4 **)(iVar4 + 4);
    uVar2 = (*(undefined4 **)(iVar4 + 4))[1];
    FUN_00835f70(&param_2,iVar4);
    while (-1 < param_2) {
      *param_1 = *param_1 + param_2;
      uVar2 = (*(undefined4 **)(iVar4 + 4))[1];
      uVar1 = **(undefined4 **)(iVar4 + 4);
      FUN_00835f70(&param_2,iVar4);
    }
    puVar3 = *(undefined4 **)(iVar4 + 4);
    *puVar3 = uVar1;
    puVar3[1] = uVar2;
  }
  return param_1;
}



void __thiscall FUN_008362f0(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  
  iVar1 = param_2;
  FUN_00835e70(&param_2,param_2);
  iVar2 = param_2;
  if ((-1 < param_2) && (piVar3 = *(int **)(*(int *)(param_1_00 + 8) + 4), piVar3 != (int *)0x0)) {
    piVar3 = (int *)(**(code **)(*piVar3 + 4))(&param_2,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



uint FUN_00836350(int param_1,undefined4 param_2,int *param_3)

{
  byte bVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  
  iVar6 = 0;
  while( true ) {
    piVar2 = *(int **)(param_1 + 4);
    iVar3 = *piVar2;
    if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *(int *)(param_1 + 8))))) {
      FUN_00a3fb10();
    }
    if (piVar2[1] == *(int *)(param_1 + 0xc)) break;
    piVar2 = *(int **)(param_1 + 4);
    if (*piVar2 != -4) {
      if (*piVar2 == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *piVar2;
      if (*(uint *)(iVar3 + 0x18) < 0x10) {
        iVar5 = iVar3 + 4;
      }
      else {
        iVar5 = *(int *)(iVar3 + 4);
      }
      if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)piVar2[1]) {
        FUN_00a3fb10();
      }
    }
    bVar1 = *(byte *)piVar2[1];
    iVar3 = _isdigit((uint)bVar1);
    if (iVar3 == 0) break;
    uVar4 = FUN_00834a20(param_2,(char)bVar1 + -0x30);
    if ((char)uVar4 == '\0') {
      return uVar4 & 0xffffff00;
    }
    piVar2 = *(int **)(param_1 + 4);
    iVar6 = iVar6 + 1;
    if (*piVar2 != -4) {
      if (*piVar2 == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *piVar2;
      if (*(uint *)(iVar3 + 0x18) < 0x10) {
        iVar5 = iVar3 + 4;
      }
      else {
        iVar5 = *(int *)(iVar3 + 4);
      }
      if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)piVar2[1]) {
        FUN_00a3fb10();
      }
    }
    piVar2[1] = piVar2[1] + 1;
    *param_3 = *param_3 + 1;
  }
  return (uint)(iVar6 != 0);
}



uint FUN_00836440(int param_1,uint *param_2,int *param_3)

{
  byte bVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int local_4;
  
  local_4 = 0;
  do {
    piVar2 = *(int **)(param_1 + 4);
    iVar3 = *piVar2;
    if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *(int *)(param_1 + 8))))) {
      FUN_00a3fb10();
    }
    if (piVar2[1] == *(int *)(param_1 + 0xc)) {
LAB_0083658c:
      return (uint)(local_4 != 0);
    }
    piVar2 = *(int **)(param_1 + 4);
    if (*piVar2 != -4) {
      if (*piVar2 == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *piVar2;
      if (*(uint *)(iVar3 + 0x18) < 0x10) {
        iVar5 = iVar3 + 4;
      }
      else {
        iVar5 = *(int *)(iVar3 + 4);
      }
      if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)piVar2[1]) {
        FUN_00a3fb10();
      }
    }
    bVar1 = *(byte *)piVar2[1];
    iVar5 = (char)bVar1 + -0x30;
    iVar3 = _isdigit((uint)bVar1);
    if (iVar3 == 0) {
      iVar3 = _tolower((uint)bVar1);
      if (5 < (byte)((char)iVar3 + 0x9fU)) goto LAB_0083658c;
      iVar5 = (char)iVar3 + -0x57;
    }
    if ((DAT_032bcae0 & 1) == 0) {
      DAT_032bcae0 = DAT_032bcae0 | 1;
      DAT_032bcadc = 0xffffffff;
    }
    if ((DAT_032bcae0 & 2) == 0) {
      DAT_032bcae0 = DAT_032bcae0 | 2;
      DAT_032bcad8 = DAT_032bcadc >> 4;
    }
    uVar4 = *param_2;
    if (DAT_032bcad8 < uVar4) {
LAB_00836584:
      return uVar4 & 0xffffff00;
    }
    uVar4 = uVar4 * 0x10;
    *param_2 = uVar4;
    if (DAT_032bcadc - iVar5 < uVar4) goto LAB_00836584;
    *param_2 = uVar4 + iVar5;
    piVar2 = *(int **)(param_1 + 4);
    local_4 = local_4 + 1;
    if (*piVar2 != -4) {
      if (*piVar2 == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *piVar2;
      if (*(uint *)(iVar3 + 0x18) < 0x10) {
        iVar5 = iVar3 + 4;
      }
      else {
        iVar5 = *(int *)(iVar3 + 4);
      }
      if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)piVar2[1]) {
        FUN_00a3fb10();
      }
    }
    piVar2[1] = piVar2[1] + 1;
    *param_3 = *param_3 + 1;
  } while( true );
}



uint FUN_008365a0(int param_1,undefined4 param_2,int *param_3)

{
  byte bVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  
  iVar6 = 0;
  while( true ) {
    piVar2 = *(int **)(param_1 + 4);
    iVar3 = *piVar2;
    if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *(int *)(param_1 + 8))))) {
      FUN_00a3fb10();
    }
    if (piVar2[1] == *(int *)(param_1 + 0xc)) break;
    piVar2 = *(int **)(param_1 + 4);
    if (*piVar2 != -4) {
      if (*piVar2 == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *piVar2;
      if (*(uint *)(iVar3 + 0x18) < 0x10) {
        iVar5 = iVar3 + 4;
      }
      else {
        iVar5 = *(int *)(iVar3 + 4);
      }
      if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)piVar2[1]) {
        FUN_00a3fb10();
      }
    }
    bVar1 = *(byte *)piVar2[1];
    iVar3 = _isdigit((uint)bVar1);
    if (iVar3 == 0) break;
    uVar4 = FUN_00834d20(param_2,(char)bVar1 + -0x30);
    if ((char)uVar4 == '\0') {
      return uVar4 & 0xffffff00;
    }
    piVar2 = *(int **)(param_1 + 4);
    iVar6 = iVar6 + 1;
    if (*piVar2 != -4) {
      if (*piVar2 == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *piVar2;
      if (*(uint *)(iVar3 + 0x18) < 0x10) {
        iVar5 = iVar3 + 4;
      }
      else {
        iVar5 = *(int *)(iVar3 + 4);
      }
      if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)piVar2[1]) {
        FUN_00a3fb10();
      }
    }
    piVar2[1] = piVar2[1] + 1;
    *param_3 = *param_3 + 1;
  }
  return (uint)(iVar6 != 0);
}



uint FUN_00836690(int param_1,undefined4 param_2,int *param_3)

{
  byte bVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  
  iVar6 = 0;
  while( true ) {
    piVar2 = *(int **)(param_1 + 4);
    iVar3 = *piVar2;
    if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *(int *)(param_1 + 8))))) {
      FUN_00a3fb10();
    }
    if (piVar2[1] == *(int *)(param_1 + 0xc)) break;
    piVar2 = *(int **)(param_1 + 4);
    if (*piVar2 != -4) {
      if (*piVar2 == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *piVar2;
      if (*(uint *)(iVar3 + 0x18) < 0x10) {
        iVar5 = iVar3 + 4;
      }
      else {
        iVar5 = *(int *)(iVar3 + 4);
      }
      if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)piVar2[1]) {
        FUN_00a3fb10();
      }
    }
    bVar1 = *(byte *)piVar2[1];
    iVar3 = _isdigit((uint)bVar1);
    if (iVar3 == 0) break;
    uVar4 = FUN_00834da0(param_2,(char)bVar1 + -0x30);
    if ((char)uVar4 == '\0') {
      return uVar4 & 0xffffff00;
    }
    piVar2 = *(int **)(param_1 + 4);
    iVar6 = iVar6 + 1;
    if (*piVar2 != -4) {
      if (*piVar2 == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *piVar2;
      if (*(uint *)(iVar3 + 0x18) < 0x10) {
        iVar5 = iVar3 + 4;
      }
      else {
        iVar5 = *(int *)(iVar3 + 4);
      }
      if ((uint)(*(int *)(iVar3 + 0x14) + iVar5) <= (uint)piVar2[1]) {
        FUN_00a3fb10();
      }
    }
    piVar2[1] = piVar2[1] + 1;
    *param_3 = *param_3 + 1;
  }
  return (uint)(iVar6 != 0);
}



undefined4 FUN_00836780(undefined4 param_1,undefined4 *param_2,int *param_3)

{
  uint uVar1;
  undefined4 *puVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 *local_14;
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4581;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x20);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar5 = (undefined4 *)*param_2;
    puVar6 = puVar2;
    for (iVar4 = 8; iVar4 != 0; iVar4 = iVar4 + -1) {
      *puVar6 = *puVar5;
      puVar5 = puVar5 + 1;
      puVar6 = puVar6 + 1;
    }
  }
  FUN_008357c0(puVar2);
  local_4 = 1;
  FUN_00835820(&local_14,uVar1);
  iVar4 = *param_3;
  iVar3 = 7;
  do {
    local_14[iVar3] = local_14[iVar3] | *(uint *)(iVar4 + iVar3 * 4);
    iVar3 = iVar3 + -1;
  } while (-1 < iVar3);
  puVar2 = (undefined4 *)operator_new(0x20);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar5 = puVar2;
    for (iVar4 = 8; iVar4 != 0; iVar4 = iVar4 + -1) {
      *puVar5 = *local_14;
      local_14 = local_14 + 1;
      puVar5 = puVar5 + 1;
    }
  }
  FUN_008357c0(puVar2);
  local_4 = local_4 & 0xffffff00;
  if (local_10 != (int *)0x0) {
    LOCK();
    iVar4 = local_10[1] + -1;
    local_10[1] = iVar4;
    UNLOCK();
    if (iVar4 == 0) {
      (**(code **)(*local_10 + 4))();
      LOCK();
      iVar4 = local_10[2] + -1;
      local_10[2] = iVar4;
      UNLOCK();
      if (iVar4 == 0) {
        (**(code **)(*local_10 + 8))();
      }
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_00836890(int *param_1,int *param_2,int *param_3,int param_4)

{
  int *piVar1;
  int *piVar2;
  undefined uVar3;
  int iVar4;
  int local_18;
  int local_14;
  undefined2 local_10 [2];
  int *local_c;
  int local_8;
  int local_4;
  
  piVar1 = param_3;
  local_c = &local_18;
  local_18 = *param_2;
  local_14 = param_2[1];
  local_10[0] = param_2._0_2_;
  local_4 = param_3[1];
  local_8 = *param_3;
  piVar2 = &local_18;
  if ((local_18 != -4) && ((local_18 == 0 || (piVar2 = &local_18, local_18 != local_8)))) {
    FUN_00a3fb10();
    piVar2 = local_c;
  }
  local_c = piVar2;
  if (*(int **)(param_4 + 4) == (int *)0x0) {
    iVar4 = -1;
  }
  else {
    piVar2 = (int *)(**(code **)(**(int **)(param_4 + 4) + 4))(&param_2,local_10);
    iVar4 = *piVar2;
    if (-1 < iVar4) {
      if ((local_18 != -4) && ((local_18 == 0 || (local_18 != *piVar1)))) {
        FUN_00a3fb10();
      }
      if (local_14 == piVar1[1]) {
        uVar3 = 1;
        goto LAB_0083692d;
      }
    }
  }
  uVar3 = 0;
LAB_0083692d:
  *param_1 = local_18;
  param_1[1] = local_14;
  param_1[3] = iVar4;
  *(bool *)(param_1 + 2) = -1 < iVar4;
  *(undefined *)((int)param_1 + 9) = uVar3;
  return;
}



int __thiscall FUN_00836950(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar3 = operator_new(0xc);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_00835ce0(param_1);
  }
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  local_4 = 0xffffffff;
  *(undefined4 *)(param_1_00 + 4) = uVar4;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1,uVar2);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_008369d0(undefined4 param_1,undefined4 param_2)

{
  FUN_00835e70(param_1,param_2);
  return param_1;
}



undefined4 FUN_008369f0(undefined4 param_1,undefined4 param_2)

{
  FUN_00835ee0(param_1,param_2);
  return param_1;
}



undefined4 FUN_00836a10(undefined4 param_1,undefined4 param_2)

{
  FUN_00835f70(param_1,param_2);
  return param_1;
}



undefined4 FUN_00836a30(undefined4 param_1,undefined4 param_2)

{
  FUN_00835ff0(param_1,param_2);
  return param_1;
}



void __fastcall FUN_00836a50(int param_1)

{
  if (*(int *)(param_1 + 0xc) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(int *)(param_1 + 0xc));
  }
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  return;
}



void __thiscall FUN_00836a80(int **param_1_00,int *param_1,int *param_2,int *param_3)

{
  ushort uVar1;
  ushort *puVar2;
  int iVar3;
  int *piVar4;
  ushort uVar5;
  int *piVar6;
  ushort *puVar7;
  int **local_8 [2];
  
  local_8[0] = param_1_00;
  if (param_1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *param_1;
  }
  if (*(int **)(iVar3 + 0x10) <= param_2) {
    FUN_00a3fb10();
  }
  piVar6 = param_3;
  if (*(ushort *)param_2 <= *(ushort *)param_3) {
    piVar6 = param_2;
  }
  *(ushort *)param_2 = *(ushort *)piVar6;
  puVar2 = (ushort *)((int)param_2 + 2);
  puVar7 = (ushort *)((int)param_3 + 2);
  if (*(ushort *)((int)param_3 + 2) <= *puVar2) {
    puVar7 = puVar2;
  }
  *puVar2 = *puVar7;
  if (param_1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *param_1;
  }
  piVar6 = param_2 + 1;
  if (*(int **)(iVar3 + 0x10) < piVar6) {
LAB_00836b14:
    FUN_00a3fb10();
  }
  else {
    if (param_1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *param_1;
    }
    if (piVar6 < *(int **)(iVar3 + 0xc)) goto LAB_00836b14;
  }
  while( true ) {
    piVar4 = param_1_00[4];
    if (piVar4 < param_1_00[3]) {
      FUN_00a3fb10();
    }
    if ((param_1 == (int *)0x0) || (param_1 != *param_1_00)) {
      FUN_00a3fb10();
    }
    if (piVar6 == piVar4) break;
    if (param_1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar3 = 0;
    }
    else {
      iVar3 = *param_1;
    }
    if (*(int **)(iVar3 + 0x10) <= piVar6) {
      FUN_00a3fb10();
    }
    if (param_1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar3 = 0;
    }
    else {
      iVar3 = *param_1;
    }
    if (*(int **)(iVar3 + 0x10) <= param_2) {
      FUN_00a3fb10();
    }
    if (*(ushort *)param_2 == 0) {
      uVar5 = 0;
    }
    else {
      uVar5 = *(ushort *)param_2 - 1;
    }
    if (*(ushort *)((int)param_2 + 2) == 0xffff) {
      uVar1 = 0xffff;
    }
    else {
      uVar1 = *(ushort *)((int)param_2 + 2) + 1;
    }
    if ((*(ushort *)((int)piVar6 + 2) < uVar5) || (uVar1 < *(ushort *)piVar6)) break;
    if (param_1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar3 = 0;
    }
    else {
      iVar3 = *param_1;
    }
    if (*(int **)(iVar3 + 0x10) <= piVar6) {
      FUN_00a3fb10();
    }
    if (param_1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar3 = 0;
    }
    else {
      iVar3 = *param_1;
    }
    if (*(int **)(iVar3 + 0x10) <= piVar6) {
      FUN_00a3fb10();
    }
    if (param_1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar3 = 0;
    }
    else {
      iVar3 = *param_1;
    }
    if (*(int **)(iVar3 + 0x10) <= param_2) {
      FUN_00a3fb10();
    }
    piVar4 = piVar6;
    if (*(ushort *)param_2 <= *(ushort *)piVar6) {
      piVar4 = param_2;
    }
    *(ushort *)param_2 = *(ushort *)piVar4;
    puVar7 = (ushort *)((int)param_2 + 2);
    puVar2 = (ushort *)((int)piVar6 + 2);
    if (*(ushort *)((int)piVar6 + 2) <= *puVar7) {
      puVar2 = puVar7;
    }
    *puVar7 = *puVar2;
    piVar6 = piVar6 + 1;
  }
  if (param_1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *param_1;
  }
  param_2 = param_2 + 1;
  if (param_2 <= *(int **)(iVar3 + 0x10)) {
    if (param_1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *param_1;
    }
    if (*(int **)(iVar3 + 0xc) <= param_2) goto LAB_00836c89;
  }
  FUN_00a3fb10();
LAB_00836c89:
  FUN_00836160(local_8,param_1,param_2,param_1,piVar6);
  return;
}



int * __thiscall FUN_00836cb0(int param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  int *piVar5;
  int *unaff_EBX;
  
  iVar4 = param_2;
  uVar1 = **(undefined4 **)(param_2 + 4);
  uVar2 = (*(undefined4 **)(param_2 + 4))[1];
  FUN_008361f0(&param_2,param_2);
  if (-1 < param_2) {
    *param_1 = param_2;
    return param_1;
  }
  puVar3 = *(undefined4 **)(iVar4 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  piVar5 = *(int **)(*(int *)(param_1_00 + 0x10) + 4);
  if (piVar5 != (int *)0x0) {
    piVar5 = (int *)(**(code **)(*piVar5 + 4))(&param_2,iVar4);
    *unaff_EBX = *piVar5;
    return unaff_EBX;
  }
  *param_1 = -1;
  return param_1;
}



void __thiscall
FUN_00836d30(uint param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_00835160(param_1,param_2,param_3,param_1_00 + 8,param_3,local_4);
  return;
}



int * FUN_00836d60(int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  
  iVar4 = param_2;
  uVar1 = **(undefined4 **)(param_2 + 4);
  uVar2 = (*(undefined4 **)(param_2 + 4))[1];
  FUN_008362f0(&param_2,param_2);
  if (-1 < param_2) {
    *param_1 = param_2;
    return param_1;
  }
  puVar3 = *(undefined4 **)(iVar4 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  FUN_008362f0(param_1,iVar4);
  return param_1;
}



void __thiscall
FUN_00836dc0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             **param_1_00,int param_1,char *param_2,int param_3,char *param_4)

{
  int iVar1;
  
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
            (*param_1_00,0,0xffffffff);
  while( true ) {
    if ((param_1 != -4) && ((param_1 == 0 || (param_1 != param_3)))) {
      FUN_00a3fb10();
    }
    if (param_2 == param_4) break;
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 0x10) {
        iVar1 = param_1 + 4;
      }
      else {
        iVar1 = *(int *)(param_1 + 4);
      }
      if ((char *)(*(int *)(param_1 + 0x14) + iVar1) <= param_2) {
        FUN_00a3fb10();
      }
    }
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (*param_1_00,1,*param_2);
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 0x10) {
        iVar1 = param_1 + 4;
      }
      else {
        iVar1 = *(int *)(param_1 + 4);
      }
      if ((char *)(*(int *)(param_1 + 0x14) + iVar1) <= param_2) {
        FUN_00a3fb10();
      }
    }
    param_2 = param_2 + 1;
  }
  return;
}



void __fastcall FUN_00836e90(int param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *(int **)(param_1 + 0x10);
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))();
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
                    // WARNING: Could not recover jumptable at 0x00836ec1. Too many branches
                    // WARNING: Treating indirect jump as call
        (**(code **)(*piVar1 + 8))();
        return;
      }
    }
  }
  return;
}



undefined4 FUN_00836ed0(undefined4 param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 != (undefined4 *)0x0) {
    puVar3 = (undefined4 *)*param_2;
    puVar4 = puVar1;
    for (iVar2 = 8; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
      puVar4 = puVar4 + 1;
    }
    FUN_008357c0(puVar1);
    return param_1;
  }
  FUN_008357c0(0);
  return param_1;
}



undefined4 * __thiscall FUN_00836f20(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4238;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1_00 = boost::spirit::classic::impl::
                concrete_parser<struct_boost::spirit::classic::positive<class_boost::spirit::classic::chset<char>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
                ::vftable;
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar3 = (undefined4 *)*param_1;
    puVar4 = puVar1;
    for (iVar2 = 8; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
      puVar4 = puVar4 + 1;
    }
  }
  FUN_008357c0(puVar1);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00836fa0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc45d8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = boost::spirit::classic::impl::
             concrete_parser<struct_boost::spirit::classic::positive<class_boost::spirit::classic::chset<char>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
             ::vftable;
  piVar1 = (int *)param_1[2];
  local_4 = 0;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = boost::spirit::classic::impl::
             abstract_parser<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
             ::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00837020(undefined4 param_1_00,byte param_1)

{
  FUN_00836fa0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_00837040(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xc);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00836f20(param_1 + 4);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_008370b0(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4238;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1_00 = boost::spirit::classic::impl::
                concrete_parser<struct_boost::spirit::classic::kleene_star<class_boost::spirit::classic::chset<char>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
                ::vftable;
  puVar1 = (undefined4 *)operator_new(0x20);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar3 = (undefined4 *)*param_1;
    puVar4 = puVar1;
    for (iVar2 = 8; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = *puVar3;
      puVar3 = puVar3 + 1;
      puVar4 = puVar4 + 1;
    }
  }
  FUN_008357c0(puVar1);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00837130(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc45d8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = boost::spirit::classic::impl::
             concrete_parser<struct_boost::spirit::classic::kleene_star<class_boost::spirit::classic::chset<char>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
             ::vftable;
  piVar1 = (int *)param_1[2];
  local_4 = 0;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = boost::spirit::classic::impl::
             abstract_parser<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
             ::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008371b0(undefined4 param_1_00,byte param_1)

{
  FUN_00837130();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_008371d0(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xc);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008370b0(param_1 + 4);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_00837240(void)

{
  code *pcVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4268;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_38 = 0xf;
  local_3c = 0;
  local_4c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_50,"vector<T> too long",0x12);
  local_4 = 0;
  FUN_00417ca0(local_50);
  local_34[0] = std::length_error::vftable;
  __CxxThrowException_8(local_34,&DAT_03115554);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



int * __thiscall FUN_008372c0(int param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  int *piVar5;
  int *unaff_EBX;
  
  iVar4 = param_2;
  uVar1 = **(undefined4 **)(param_2 + 4);
  uVar2 = (*(undefined4 **)(param_2 + 4))[1];
  FUN_00836cb0(&param_2,param_2);
  if (-1 < param_2) {
    *param_1 = param_2;
    return param_1;
  }
  puVar3 = *(undefined4 **)(iVar4 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  piVar5 = *(int **)(*(int *)(param_1_00 + 0x14) + 4);
  if (piVar5 != (int *)0x0) {
    piVar5 = (int *)(**(code **)(*piVar5 + 4))(&param_2,iVar4);
    *unaff_EBX = *piVar5;
    return unaff_EBX;
  }
  *param_1 = -1;
  return param_1;
}



void __thiscall
FUN_00837340(int param_1_00,undefined4 param_1,int param_2,uint param_3,undefined4 *param_4)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  uint extraout_ECX;
  uint local_18;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  uVar3 = param_3;
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bc4290;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  iVar4 = *(int *)(param_1_00 + 0xc);
  if (iVar4 == 0) {
    local_18 = 0;
  }
  else {
    local_18 = *(int *)(param_1_00 + 0x14) - iVar4 >> 2;
  }
  if (param_3 != 0) {
    iVar2 = *(int *)(param_1_00 + 0x10);
    iVar4 = iVar2 - iVar4 >> 2;
    if (0x3fffffffU - iVar4 < param_3) {
      iVar4 = FUN_00837240();
      local_18 = extraout_ECX;
    }
    uVar1 = iVar4 + uVar3;
    if (local_18 < uVar1) {
      if (0x3fffffff - (local_18 >> 1) < local_18) {
        local_18 = 0;
      }
      else {
        local_18 = local_18 + (local_18 >> 1);
      }
      if (local_18 < uVar1) {
        local_18 = uVar1;
      }
      param_3 = FUN_00834840(local_18,0);
      iVar4 = param_2 - *(int *)(param_1_00 + 0xc) >> 2;
      local_8 = 0;
      FUN_00836050(param_3 + iVar4 * 4,uVar3,param_4);
      param_4 = (undefined4 *)((uint)param_4 & 0xffffff00);
      FUN_00835160(*(undefined4 *)(param_1_00 + 0xc),param_2,param_3,param_1_00 + 8,param_4,param_4)
      ;
      iVar2 = param_3;
      param_4 = (undefined4 *)((uint)param_4 & 0xffffff00);
      FUN_00835160(param_2,*(undefined4 *)(param_1_00 + 0x10),param_3 + (iVar4 + uVar3) * 4,
                   param_1_00 + 8,param_4,param_4);
      iVar4 = *(int *)(param_1_00 + 0xc);
      if (iVar4 != 0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar4);
      }
      *(uint *)(param_1_00 + 0x14) = iVar2 + local_18 * 4;
      *(uint *)(param_1_00 + 0x10) =
           iVar2 + (uVar3 + (*(int *)(param_1_00 + 0x10) - iVar4 >> 2)) * 4;
      *(int *)(param_1_00 + 0xc) = iVar2;
      ExceptionList = local_10;
      return;
    }
    if ((uint)(iVar2 - param_2 >> 2) < uVar3) {
      param_3 = *param_4;
      param_4 = (undefined4 *)(uVar3 * 4);
      FUN_00836d30(param_2,iVar2,(int)param_4 + param_2);
      local_8 = 2;
      FUN_00836050(*(int *)(param_1_00 + 0x10),uVar3 - (*(int *)(param_1_00 + 0x10) - param_2 >> 2),
                   &param_3);
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + (int)param_4;
      FUN_00835660(param_2,*(int *)(param_1_00 + 0x10) - (int)param_4,&param_3);
      ExceptionList = local_10;
      return;
    }
    param_3 = *param_4;
    param_4 = (undefined4 *)(uVar3 * 4);
    iVar4 = iVar2 + uVar3 * -4;
    uVar5 = FUN_00836d30(iVar4,iVar2,iVar2);
    *(undefined4 *)(param_1_00 + 0x10) = uVar5;
    FUN_00835980(param_2,iVar4,iVar2);
    FUN_00835660(param_2,(int)param_4 + param_2,&param_3);
  }
  ExceptionList = local_10;
  return;
}



void Catch_All_00837497(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 0x10));
}



void __thiscall FUN_00837590(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  iVar1 = param_2;
  FUN_00836270(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    FUN_008359c0(&param_2,*(undefined4 *)(param_1_00 + 8),*(undefined4 *)(param_1_00 + 0xc),iVar1);
    if (-1 < param_2) {
      *param_1 = param_2 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void __thiscall FUN_008375f0(int *param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  
  iVar4 = param_2;
  uVar1 = **(undefined4 **)(param_2 + 4);
  uVar2 = (*(undefined4 **)(param_2 + 4))[1];
  if (*(int **)(*param_1_00 + 4) != (int *)0x0) {
    piVar5 = (int *)(**(code **)(**(int **)(*param_1_00 + 4) + 4))(&param_2,param_2);
    iVar6 = *piVar5;
    if (-1 < iVar6) goto LAB_0083762c;
  }
  puVar3 = *(undefined4 **)(iVar4 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  iVar6 = 0;
LAB_0083762c:
  FUN_008359c0(&param_2,param_1_00[1],param_1_00[2],iVar4);
  if (param_2 < 0) {
    *param_1 = -1;
    return;
  }
  *param_1 = param_2 + iVar6;
  return;
}



void __thiscall
FUN_00837670(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  
  uVar1 = *(uint *)(param_1_00 + 0x18);
  puVar5 = (undefined4 *)(param_1_00 + 4);
  puVar2 = puVar5;
  if (0xf < uVar1) {
    puVar2 = (undefined4 *)*puVar5;
  }
  puVar2 = (undefined4 *)(*(int *)(param_1_00 + 0x14) + (int)puVar2);
  if (puVar2 == (undefined4 *)0x0) {
LAB_008376b1:
    FUN_00a3fb10();
  }
  else {
    puVar3 = puVar5;
    if (0xf < uVar1) {
      puVar3 = (undefined4 *)*puVar5;
    }
    if (puVar2 < puVar3) goto LAB_008376b1;
    puVar3 = puVar5;
    if (0xf < uVar1) {
      puVar3 = (undefined4 *)*puVar5;
    }
    if ((undefined4 *)(*(int *)(param_1_00 + 0x14) + (int)puVar3) < puVar2) goto LAB_008376b1;
  }
  uVar1 = *(uint *)(param_1_00 + 0x18);
  puVar3 = puVar5;
  if (0xf < uVar1) {
    puVar3 = (undefined4 *)*puVar5;
  }
  puVar3 = (undefined4 *)(*(int *)(param_1_00 + 0x14) + (int)puVar3);
  if (puVar3 != (undefined4 *)0x0) {
    puVar4 = puVar5;
    if (0xf < uVar1) {
      puVar4 = (undefined4 *)*puVar5;
    }
    if (puVar4 <= puVar3) {
      if (0xf < uVar1) {
        puVar5 = (undefined4 *)*puVar5;
      }
      if (puVar3 <= (undefined4 *)(*(int *)(param_1_00 + 0x14) + (int)puVar5)) goto LAB_008376ef;
    }
  }
  FUN_00a3fb10();
LAB_008376ef:
  FUN_00428270(param_1_00,puVar3,param_1_00,puVar2,param_1,param_2,param_3,param_4);
  return;
}



void __thiscall FUN_00837720(undefined4 *param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  
  iVar1 = param_2;
  FUN_008359c0(&param_2,*param_1_00,param_1_00[1],param_2);
  iVar2 = param_2;
  if ((-1 < param_2) && (*(int **)(param_1_00[2] + 4) != (int *)0x0)) {
    piVar3 = (int *)(**(code **)(**(int **)(param_1_00[2] + 4) + 4))(&param_2,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



int * __thiscall FUN_00837790(undefined4 *param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  
  iVar4 = param_2;
  uVar1 = **(undefined4 **)(param_2 + 4);
  uVar2 = (*(undefined4 **)(param_2 + 4))[1];
  FUN_00835b60(&param_2,*param_1_00,param_1_00[1],param_2);
  if (-1 < param_2) {
    *param_1 = param_2;
    return param_1;
  }
  puVar3 = *(undefined4 **)(iVar4 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  FUN_00835b60(param_1,param_1_00[2],param_1_00[3],iVar4);
  return param_1;
}



int __thiscall FUN_00837800(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar3 = operator_new(0xc);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_00836f20(param_1);
  }
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  local_4 = 0xffffffff;
  *(undefined4 *)(param_1_00 + 4) = uVar4;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1,uVar2);
  }
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_00837880(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar3 = operator_new(0xc);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_008370b0(param_1);
  }
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  local_4 = 0xffffffff;
  *(undefined4 *)(param_1_00 + 4) = uVar4;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1,uVar2);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_00837900(undefined4 param_1,undefined4 param_2)

{
  FUN_008372c0(param_1,param_2);
  return param_1;
}



void __fastcall FUN_00837920(int param_1)

{
  if (*(char *)(param_1 + 4) != '\0') {
    *(undefined *)(param_1 + 4) = 0;
  }
  return;
}



void __thiscall FUN_00837930(int param_1_00,char param_1,char param_2)

{
  uint *puVar1;
  code *pcVar2;
  byte bVar3;
  uint uVar4;
  
  uVar4 = (uint)param_1;
  while( true ) {
    if ((int)param_2 < (int)uVar4) {
      return;
    }
    if (0xff < (uVar4 & 0xff)) break;
    bVar3 = (byte)uVar4;
    puVar1 = (uint *)(param_1_00 + ((uVar4 & 0xff) >> 5) * 4);
    uVar4 = uVar4 + 1;
    *puVar1 = *puVar1 | 1 << (bVar3 & 0x1f);
  }
  FUN_005e0c40();
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



int * __thiscall FUN_00837980(undefined4 *param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  
  iVar4 = param_2;
  uVar1 = **(undefined4 **)(param_2 + 4);
  uVar2 = (*(undefined4 **)(param_2 + 4))[1];
  FUN_008359c0(&param_2,*param_1_00,param_1_00[1],param_2);
  if (-1 < param_2) {
    *param_1 = param_2;
    return param_1;
  }
  puVar3 = *(undefined4 **)(iVar4 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  FUN_00837590(param_1,iVar4);
  return param_1;
}



void __thiscall
FUN_008379e0(int **param_1_00,int **param_1,int *param_2,int param_3,undefined4 param_4)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  
  piVar1 = param_1_00[3];
  if (((int)param_1_00[4] - (int)piVar1 & 0xfffffffcU) == 0) {
    iVar4 = 0;
  }
  else {
    if (param_1_00[4] < piVar1) {
      FUN_00a3fb10();
    }
    if ((param_2 == (int *)0x0) || (param_2 != *param_1_00)) {
      FUN_00a3fb10();
    }
    iVar4 = param_3 - (int)piVar1 >> 2;
  }
  FUN_00837340(param_2,param_3,1,param_4);
  piVar1 = param_1_00[3];
  if (param_1_00[4] < piVar1) {
    FUN_00a3fb10();
  }
  piVar2 = *param_1_00;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar2;
  }
  piVar1 = piVar1 + iVar4;
  if (piVar1 <= *(int **)(iVar3 + 0x10)) {
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *piVar2;
    }
    if (*(int **)(iVar4 + 0xc) <= piVar1) goto LAB_00837a7c;
  }
  FUN_00a3fb10();
LAB_00837a7c:
  param_1[1] = piVar1;
  *param_1 = piVar2;
  return;
}



void FUN_00837a90(undefined4 *param_1,undefined4 param_2,undefined *param_3)

{
  *param_1 = param_2;
  *(undefined *)(param_1 + 1) = 0;
  if ((undefined *)((int)param_1 + 5) != (undefined *)0x0) {
    *(undefined *)((int)param_1 + 5) = *param_3;
  }
  *(undefined *)(param_1 + 1) = 1;
  return;
}



undefined4 * __thiscall FUN_00837ac0(char *param_1_00,undefined4 *param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  undefined4 local_8 [2];
  
  iVar3 = param_2;
  local_8[0] = 0;
  piVar1 = *(int **)(param_2 + 4);
  iVar2 = *piVar1;
  if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  if (piVar1[1] != *(int *)(iVar3 + 0xc)) {
    cVar4 = FUN_008358e0();
    param_2 = CONCAT31(param_2._1_3_,cVar4);
    if (cVar4 == *param_1_00) {
      std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      operator++(*(_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                   **)(iVar3 + 4));
      FUN_00837a90(param_1,1,&param_2,local_8,*(undefined4 *)(iVar3 + 4));
      return param_1;
    }
  }
  *param_1 = 0xffffffff;
  *(undefined *)(param_1 + 1) = 0;
  return param_1;
}



undefined4 * __thiscall FUN_00837b50(ushort *param_1_00,undefined4 *param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  undefined4 local_8 [2];
  
  iVar3 = param_2;
  local_8[0] = 0;
  piVar1 = *(int **)(param_2 + 4);
  iVar2 = *piVar1;
  if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  if (piVar1[1] != *(int *)(iVar3 + 0xc)) {
    cVar4 = FUN_008358e0();
    param_2 = CONCAT31(param_2._1_3_,cVar4);
    if ((int)cVar4 == (uint)*param_1_00) {
      std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      operator++(*(_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                   **)(iVar3 + 4));
      FUN_00837a90(param_1,1,&param_2,local_8,*(undefined4 *)(iVar3 + 4));
      return param_1;
    }
  }
  *param_1 = 0xffffffff;
  *(undefined *)(param_1 + 1) = 0;
  return param_1;
}



void __thiscall FUN_00837bf0(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  
  iVar1 = param_2;
  FUN_008375f0(&param_2,param_2);
  iVar2 = param_2;
  if ((-1 < param_2) && (piVar3 = *(int **)(*(int *)(param_1_00 + 0xc) + 4), piVar3 != (int *)0x0))
  {
    piVar3 = (int *)(**(code **)(*piVar3 + 4))(&param_2,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void ** __thiscall FUN_00837c50(void **param_1_00,uint param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  undefined4 uVar4;
  undefined4 extraout_ECX;
  uint uVar5;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bc42b8;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  puVar2 = (undefined4 *)operator_new(4);
  uVar4 = 0;
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = param_1_00;
  }
  *param_1_00 = puVar2;
  local_8 = 0;
  uVar5 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc) >> 2;
  param_1_00[3] = (void *)0x0;
  param_1_00[4] = (void *)0x0;
  param_1_00[5] = (void *)0x0;
  if (uVar5 != 0) {
    if (0x3fffffff < uVar5) {
      FUN_00837240();
      uVar4 = extraout_ECX;
    }
    pvVar3 = (void *)FUN_00834840(uVar5,uVar4);
    param_1_00[3] = pvVar3;
    param_1_00[4] = pvVar3;
    param_1_00[5] = (void *)((int)pvVar3 + uVar5 * 4);
    uVar5 = *(uint *)(param_1 + 0x10);
    local_8 = CONCAT31(local_8._1_3_,1);
    if (uVar5 < *(uint *)(param_1 + 0xc)) {
      FUN_00a3fb10();
    }
    uVar1 = *(uint *)(param_1 + 0xc);
    if (*(uint *)(param_1 + 0x10) < uVar1) {
      FUN_00a3fb10();
    }
    param_1 = param_1 & 0xffffff00;
    pvVar3 = (void *)FUN_00835160(uVar1,uVar5,param_1_00[3],param_1_00 + 2,param_1,param_1);
    param_1_00[4] = pvVar3;
  }
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_00837d32(void)

{
  code *pcVar1;
  
  FUN_00836a50();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00837d50(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_00835e70(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void FUN_00837db0(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_00837720(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void __fastcall FUN_00837e10(undefined4 *param_1)

{
  if (param_1[3] != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void __thiscall FUN_00837e50(int *param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  
  iVar4 = param_2;
  uVar1 = **(undefined4 **)(param_2 + 4);
  uVar2 = (*(undefined4 **)(param_2 + 4))[1];
  if (*(int **)(*param_1_00 + 4) != (int *)0x0) {
    piVar5 = (int *)(**(code **)(**(int **)(*param_1_00 + 4) + 4))(&param_2,param_2);
    iVar6 = *piVar5;
    if (-1 < iVar6) goto LAB_00837e8c;
  }
  puVar3 = *(undefined4 **)(iVar4 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  iVar6 = 0;
LAB_00837e8c:
  FUN_00835b60(&param_2,param_1_00[1],param_1_00[2],iVar4);
  if (param_2 < 0) {
    *param_1 = -1;
    return;
  }
  *param_1 = param_2 + iVar6;
  return;
}



void __thiscall FUN_00837ed0(undefined4 *param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  
  iVar1 = param_2;
  FUN_00835b60(&param_2,*param_1_00,param_1_00[1],param_2);
  iVar2 = param_2;
  if ((-1 < param_2) && (*(int **)(param_1_00[2] + 4) != (int *)0x0)) {
    piVar3 = (int *)(**(code **)(**(int **)(param_1_00[2] + 4) + 4))(&param_2,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void __thiscall FUN_00837f40(int **param_1_00,ushort *param_1)

{
  ushort uVar1;
  undefined2 uVar2;
  int *piVar3;
  int *piVar4;
  ushort *puVar5;
  int *piVar6;
  int **ppiVar7;
  short *psVar8;
  int iVar9;
  int *piVar10;
  uint local_18;
  undefined local_8 [8];
  
  piVar3 = param_1_00[4];
  if (((int)piVar3 - (int)param_1_00[3] & 0xfffffffcU) != 0) {
    local_18 = local_18 & 0xffffff00;
    if (piVar3 < param_1_00[3]) {
      FUN_00a3fb10();
    }
    piVar6 = param_1_00[3];
    if (param_1_00[4] < piVar6) {
      FUN_00a3fb10();
    }
    piVar4 = *param_1_00;
    piVar6 = (int *)FUN_0083b270(piVar6,piVar3,param_1,local_18,0);
    piVar3 = param_1_00[3];
    if (param_1_00[4] < piVar3) {
      FUN_00a3fb10();
    }
    if ((piVar4 == (int *)0x0) || (piVar4 != *param_1_00)) {
      FUN_00a3fb10();
    }
    piVar10 = piVar6;
    if (piVar6 != piVar3) {
      ppiVar7 = (int **)FUN_00835930(local_8,1);
      piVar3 = ppiVar7[1];
      if (*ppiVar7 == (int *)0x0) {
        FUN_00a3fb10();
        iVar9 = 0;
      }
      else {
        iVar9 = **ppiVar7;
      }
      if (*(int **)(iVar9 + 0x10) <= piVar3) {
        FUN_00a3fb10();
      }
      puVar5 = param_1;
      if ((*(ushort *)piVar3 <= *param_1) && (*param_1 <= *(ushort *)((int)piVar3 + 2))) {
        iVar9 = FUN_00835630();
        if (puVar5[1] < *(ushort *)(iVar9 + 2)) {
          iVar9 = FUN_00835630();
          uVar2 = *(undefined2 *)(iVar9 + 2);
          uVar1 = *puVar5;
          iVar9 = FUN_00835630();
          *(ushort *)(iVar9 + 2) = uVar1 - 1;
          param_1 = (ushort *)CONCAT22(uVar2,param_1[1] + 1);
          FUN_008379e0(local_8,piVar4,piVar6,&param_1);
          return;
        }
        uVar1 = *puVar5;
        iVar9 = FUN_00835630();
        *(ushort *)(iVar9 + 2) = uVar1 - 1;
      }
    }
    while( true ) {
      piVar3 = param_1_00[4];
      if (piVar3 < param_1_00[3]) {
        FUN_00a3fb10();
      }
      if ((piVar4 == (int *)0x0) || (piVar4 != *param_1_00)) {
        FUN_00a3fb10();
      }
      if (piVar10 == piVar3) break;
      if (piVar4 == (int *)0x0) {
        FUN_00a3fb10();
        iVar9 = 0;
      }
      else {
        iVar9 = *piVar4;
      }
      if (*(int **)(iVar9 + 0x10) <= piVar10) {
        FUN_00a3fb10();
      }
      if ((*(ushort *)piVar10 < *param_1) || (param_1[1] < *(ushort *)((int)piVar10 + 2))) break;
      if (piVar4 == (int *)0x0) {
        FUN_00a3fb10();
        iVar9 = 0;
      }
      else {
        iVar9 = *piVar4;
      }
      if (*(int **)(iVar9 + 0x10) <= piVar10) {
        FUN_00a3fb10();
      }
      piVar10 = piVar10 + 1;
    }
    piVar3 = param_1_00[4];
    if (piVar3 < param_1_00[3]) {
      FUN_00a3fb10();
    }
    if ((piVar4 == (int *)0x0) || (piVar4 != *param_1_00)) {
      FUN_00a3fb10();
    }
    if (piVar10 != piVar3) {
      if (piVar4 == (int *)0x0) {
        FUN_00a3fb10();
        iVar9 = 0;
      }
      else {
        iVar9 = *piVar4;
      }
      if (*(int **)(iVar9 + 0x10) <= piVar10) {
        FUN_00a3fb10();
      }
      uVar1 = param_1[1];
      if ((*(ushort *)piVar10 <= uVar1) && (uVar1 <= *(ushort *)((int)piVar10 + 2))) {
        psVar8 = (short *)FUN_00835630();
        *psVar8 = uVar1 + 1;
      }
    }
    FUN_00836160(local_8,piVar4,piVar6,piVar4,piVar10);
  }
  return;
}



void __thiscall FUN_008381a0(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  
  iVar1 = param_2;
  FUN_00837790(&param_2,param_2);
  iVar2 = param_2;
  if ((-1 < param_2) && (piVar3 = *(int **)(*(int *)(param_1_00 + 0x10) + 4), piVar3 != (int *)0x0))
  {
    piVar3 = (int *)(**(code **)(*piVar3 + 4))(&param_2,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void __thiscall FUN_00838200(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  iVar1 = param_2;
  FUN_00837bf0(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    FUN_008359c0(&param_2,*(undefined4 *)(param_1_00 + 0x10),*(undefined4 *)(param_1_00 + 0x14),
                 iVar1);
    if (-1 < param_2) {
      *param_1 = param_2 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void FUN_00838260(undefined4 *param_1,undefined4 param_2,undefined4 *param_3)

{
  *param_1 = param_2;
  *(undefined *)(param_1 + 1) = 0;
  if (param_1 + 2 != (undefined4 *)0x0) {
    param_1[2] = *param_3;
  }
  *(undefined *)(param_1 + 1) = 1;
  return;
}



void FUN_00838290(int *param_1,byte *param_2)

{
  uint *puVar1;
  byte bVar2;
  byte bVar3;
  uint uVar4;
  int extraout_ECX;
  int iVar5;
  byte *pbVar6;
  
  bVar3 = *param_2;
  param_2 = param_2 + 1;
  if (bVar3 == 0) {
    return;
  }
  do {
    bVar2 = *param_2;
    pbVar6 = param_2 + 1;
    if (bVar2 == 0x2d) {
      bVar2 = *pbVar6;
      pbVar6 = param_2 + 2;
      if (bVar2 == 0) {
        iVar5 = *param_1;
        uVar4 = (uint)bVar3;
        if (0xff < uVar4) {
          uVar4 = FUN_005e0c40();
          iVar5 = extraout_ECX;
        }
        puVar1 = (uint *)(iVar5 + (uVar4 >> 5) * 4);
        *puVar1 = *puVar1 | 1 << ((byte)uVar4 & 0x1f);
        *(uint *)(*param_1 + 4) = *(uint *)(*param_1 + 4) | 0x2000;
        return;
      }
      FUN_00837930(bVar3,bVar2);
      bVar3 = bVar2;
    }
    else {
      puVar1 = (uint *)(*param_1 + (uint)(bVar3 >> 5) * 4);
      *puVar1 = *puVar1 | 1 << (bVar3 & 0x1f);
      bVar3 = bVar2;
    }
    param_2 = pbVar6;
  } while (bVar3 != 0);
  return;
}



undefined4 FUN_00838340(undefined4 param_1,undefined4 param_2)

{
  FUN_00837980(param_1,param_2);
  return param_1;
}



void FUN_00838360(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_00837bf0(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void __thiscall FUN_008383c0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint local_8 [2];
  
  uVar1 = param_1_00[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(param_1_00[5] - uVar1) >> 2;
  }
  uVar2 = param_1_00[4];
  if ((uint)((int)(uVar2 - uVar1) >> 2) < uVar3) {
    local_8[0] = local_8[0] & 0xffffff00;
    FUN_00835680(uVar2,1,param_1,param_1_00 + 2,param_1,local_8[0]);
    param_1_00[4] = uVar2 + 4;
    return;
  }
  if (uVar2 < uVar1) {
    FUN_00a3fb10();
  }
  FUN_008379e0(local_8,*param_1_00,uVar2,param_1);
  return;
}



void __thiscall FUN_00838440(int *param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  undefined local_8 [8];
  
  iVar4 = param_2;
  uVar1 = **(undefined4 **)(param_2 + 4);
  uVar2 = (*(undefined4 **)(param_2 + 4))[1];
  if (*(int **)(*param_1_00 + 4) != (int *)0x0) {
    piVar5 = (int *)(**(code **)(**(int **)(*param_1_00 + 4) + 4))(&param_2,param_2);
    iVar6 = *piVar5;
    if (-1 < iVar6) goto LAB_0083847f;
  }
  puVar3 = *(undefined4 **)(iVar4 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  iVar6 = 0;
LAB_0083847f:
  piVar5 = (int *)FUN_00837ac0(local_8,iVar4);
  if (*piVar5 < 0) {
    *param_1 = -1;
    return;
  }
  *param_1 = *piVar5 + iVar6;
  return;
}



void FUN_008384c0(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  iVar1 = param_2;
  FUN_00837bf0(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    FUN_00836d60(&param_2,iVar1);
    if ((-1 < param_2) && (iVar2 = iVar2 + param_2, -1 < iVar2)) {
      FUN_00836090(&param_2,iVar1);
      if (-1 < param_2) {
        *param_1 = param_2 + iVar2;
        return;
      }
    }
  }
  *param_1 = -1;
  return;
}



void FUN_00838530(undefined4 *param_1)

{
  if (param_1 == (undefined4 *)0x0) {
    return;
  }
  if (param_1[3] != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1);
}



void FUN_00838580(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_00837ed0(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



int * __thiscall FUN_008385e0(int *param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  
  iVar3 = param_2;
  iVar5 = **(int **)(param_2 + 4);
  if ((iVar5 != -4) && ((iVar5 == 0 || (iVar5 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  uVar1 = **(undefined4 **)(iVar3 + 4);
  uVar2 = (*(undefined4 **)(iVar3 + 4))[1];
  if (*(int **)(*param_1_00 + 4) == (int *)0x0) {
    iVar5 = -1;
  }
  else {
    piVar4 = (int *)(**(code **)(**(int **)(*param_1_00 + 4) + 4))(&param_2,iVar3);
    iVar5 = *piVar4;
  }
  *param_1 = iVar5;
  if (-1 < iVar5) {
    FUN_00836dc0(uVar1,uVar2,**(undefined4 **)(iVar3 + 4),(*(undefined4 **)(iVar3 + 4))[1]);
  }
  return param_1;
}



undefined4 __thiscall FUN_00838660(undefined4 param_1_00,int **param_1)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  int *piVar4;
  
  piVar4 = param_1[3];
  if (param_1[4] < piVar4) {
    FUN_00a3fb10();
  }
  piVar1 = *param_1;
  while( true ) {
    piVar2 = param_1[4];
    if (piVar2 < param_1[3]) {
      FUN_00a3fb10();
    }
    if ((piVar1 == (int *)0x0) || (piVar1 != *param_1)) {
      FUN_00a3fb10();
    }
    if (piVar4 == piVar2) break;
    if (piVar1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(int **)(iVar3 + 0x10) <= piVar4) {
      FUN_00a3fb10();
    }
    FUN_00837f40(piVar4);
    if (piVar1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(int **)(iVar3 + 0x10) <= piVar4) {
      FUN_00a3fb10();
    }
    piVar4 = piVar4 + 1;
  }
  return param_1_00;
}



void __thiscall FUN_008386f0(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  
  iVar1 = param_2;
  FUN_00837ed0(&param_2,param_2);
  iVar2 = param_2;
  if ((-1 < param_2) && (piVar3 = *(int **)(*(int *)(param_1_00 + 0xc) + 4), piVar3 != (int *)0x0))
  {
    piVar3 = (int *)(**(code **)(*piVar3 + 4))(&param_2,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void __thiscall FUN_00838750(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  
  iVar1 = param_2;
  FUN_008381a0(&param_2,param_2);
  iVar2 = param_2;
  if ((-1 < param_2) && (piVar3 = *(int **)(*(int *)(param_1_00 + 0x14) + 4), piVar3 != (int *)0x0))
  {
    piVar3 = (int *)(**(code **)(*piVar3 + 4))(&param_2,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void __thiscall FUN_008387b0(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  
  iVar1 = param_2;
  FUN_00838200(&param_2,param_2);
  iVar2 = param_2;
  if ((-1 < param_2) && (piVar3 = *(int **)(*(int *)(param_1_00 + 0x18) + 4), piVar3 != (int *)0x0))
  {
    piVar3 = (int *)(**(code **)(*piVar3 + 4))(&param_2,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void __thiscall FUN_00838810(int *param_1_00,int *param_1)

{
  int *piVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  int iVar6;
  
  if (param_1_00 != param_1) {
    puVar3 = (undefined4 *)*param_1_00;
    *param_1_00 = *param_1;
    *param_1 = (int)puVar3;
    puVar4 = (undefined4 *)*param_1_00;
    if (puVar4 != puVar3) {
      uVar5 = *puVar4;
      *puVar4 = *puVar3;
      *puVar3 = uVar5;
    }
    piVar1 = param_1 + 3;
    piVar2 = param_1_00 + 3;
    if (piVar2 != piVar1) {
      iVar6 = *piVar2;
      *piVar2 = *piVar1;
      *piVar1 = iVar6;
    }
    piVar1 = param_1 + 4;
    piVar2 = param_1_00 + 4;
    if (piVar2 != piVar1) {
      iVar6 = *piVar2;
      *piVar2 = *piVar1;
      *piVar1 = iVar6;
    }
    param_1 = param_1 + 5;
    param_1_00 = param_1_00 + 5;
    if (param_1_00 != param_1) {
      iVar6 = *param_1_00;
      *param_1_00 = *param_1;
      *param_1 = iVar6;
    }
  }
  return;
}



undefined4 * FUN_008388a0(undefined4 *param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  undefined4 local_8 [2];
  
  iVar3 = param_2;
  local_8[0] = 0;
  piVar1 = *(int **)(param_2 + 4);
  iVar2 = *piVar1;
  if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  if (piVar1[1] != *(int *)(iVar3 + 0xc)) {
    param_2 = 0;
    local_8[0] = 0;
    cVar4 = FUN_00836350(iVar3,&param_2,local_8);
    if (cVar4 != '\0') {
      FUN_00838260(param_1,local_8[0],&param_2,local_8,*(undefined4 *)(iVar3 + 4));
      return param_1;
    }
  }
  *param_1 = 0xffffffff;
  *(undefined *)(param_1 + 1) = 0;
  return param_1;
}



undefined4 * FUN_00838930(undefined4 *param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  undefined4 local_8 [2];
  
  iVar3 = param_2;
  local_8[0] = 0;
  piVar1 = *(int **)(param_2 + 4);
  iVar2 = *piVar1;
  if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  if (piVar1[1] != *(int *)(iVar3 + 0xc)) {
    param_2 = 0;
    local_8[0] = 0;
    cVar4 = FUN_00836440(iVar3,&param_2,local_8);
    if (cVar4 != '\0') {
      FUN_00838260(param_1,local_8[0],&param_2,local_8,*(undefined4 *)(iVar3 + 4));
      return param_1;
    }
  }
  *param_1 = 0xffffffff;
  *(undefined *)(param_1 + 1) = 0;
  return param_1;
}



undefined4 * FUN_008389c0(undefined4 *param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  int iVar6;
  char cVar7;
  undefined4 local_8 [2];
  
  iVar6 = param_2;
  local_8[0] = 0;
  piVar1 = *(int **)(param_2 + 4);
  iVar2 = *piVar1;
  if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  if (piVar1[1] != *(int *)(iVar6 + 0xc)) {
    uVar3 = **(undefined4 **)(iVar6 + 4);
    uVar4 = (*(undefined4 **)(iVar6 + 4))[1];
    local_8[0] = 0;
    param_2 = 0;
    cVar7 = FUN_00835ab0(iVar6,&param_2);
    if (cVar7 == '\0') {
      cVar7 = FUN_00836690(iVar6,local_8,&param_2);
    }
    else {
      cVar7 = FUN_008365a0(iVar6,local_8,&param_2);
    }
    if (cVar7 != '\0') {
      FUN_00838260(param_1,param_2,local_8,local_8,*(undefined4 *)(iVar6 + 4));
      return param_1;
    }
    puVar5 = *(undefined4 **)(iVar6 + 4);
    *puVar5 = uVar3;
    puVar5[1] = uVar4;
  }
  *param_1 = 0xffffffff;
  *(undefined *)(param_1 + 1) = 0;
  return param_1;
}



int * __thiscall FUN_00838a90(int *param_1_00,byte param_1)

{
  uint *puVar1;
  uint uVar2;
  void *pvVar3;
  uint uVar4;
  int iVar5;
  int extraout_ECX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4308;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar3 = operator_new(0x20);
  if (pvVar3 == (void *)0x0) {
    pvVar3 = (void *)0x0;
  }
  else {
    iVar5 = 7;
    do {
      iVar5 = iVar5 + -1;
      *(undefined4 *)((int)pvVar3 + iVar5 * 4 + 4) = 0;
    } while (-1 < iVar5);
  }
  FUN_008357c0(pvVar3);
  uVar4 = (uint)param_1;
  iVar5 = *param_1_00;
  local_4 = 0;
  if (0xff < uVar4) {
    uVar4 = FUN_005e0c40(uVar2);
    iVar5 = extraout_ECX;
  }
  puVar1 = (uint *)(iVar5 + (uVar4 >> 5) * 4);
  *puVar1 = *puVar1 | 1 << ((byte)uVar4 & 0x1f);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00838b30(undefined4 param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4308;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x20);
  if (pvVar2 == (void *)0x0) {
    pvVar2 = (void *)0x0;
  }
  else {
    iVar3 = 7;
    do {
      iVar3 = iVar3 + -1;
      *(undefined4 *)((int)pvVar2 + iVar3 * 4 + 4) = 0;
    } while (-1 < iVar3);
  }
  FUN_008357c0(pvVar2);
  local_4 = 0;
  FUN_00838290(param_1_00,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_00838bc0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4581;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  uVar3 = FUN_00838a90(param_3);
  local_4 = 1;
  FUN_00836780(param_1,param_2,uVar3,uVar2);
  local_4 = local_4 & 0xffffff00;
  if (local_10 != (int *)0x0) {
    LOCK();
    iVar1 = local_10[1] + -1;
    local_10[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*local_10 + 4))();
      LOCK();
      iVar1 = local_10[2] + -1;
      local_10[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_10 + 8))();
      }
    }
  }
  ExceptionList = local_c;
  return param_1;
}



int * __thiscall FUN_00838c70(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = **(int **)(param_2 + 4);
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  FUN_008359c0(param_1,*(undefined4 *)(param_1_00 + 4),*(undefined4 *)(param_1_00 + 8),param_2);
  if (-1 < *param_1) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (*(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                (param_1_00 + 0xc),1,'&');
  }
  return param_1;
}



int * __thiscall FUN_00838cc0(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = **(int **)(param_2 + 4);
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  FUN_008359c0(param_1,*(undefined4 *)(param_1_00 + 4),*(undefined4 *)(param_1_00 + 8),param_2);
  if (-1 < *param_1) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (*(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                (param_1_00 + 0xc),1,'<');
  }
  return param_1;
}



int * __thiscall FUN_00838d10(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = **(int **)(param_2 + 4);
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  FUN_008359c0(param_1,*(undefined4 *)(param_1_00 + 4),*(undefined4 *)(param_1_00 + 8),param_2);
  if (-1 < *param_1) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (*(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                (param_1_00 + 0xc),1,'>');
  }
  return param_1;
}



int * __thiscall FUN_00838d60(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = **(int **)(param_2 + 4);
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  FUN_008359c0(param_1,*(undefined4 *)(param_1_00 + 4),*(undefined4 *)(param_1_00 + 8),param_2);
  if (-1 < *param_1) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (*(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                (param_1_00 + 0xc),1,'\'');
  }
  return param_1;
}



int * __thiscall FUN_00838db0(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = **(int **)(param_2 + 4);
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  FUN_008359c0(param_1,*(undefined4 *)(param_1_00 + 4),*(undefined4 *)(param_1_00 + 8),param_2);
  if (-1 < *param_1) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (*(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                (param_1_00 + 0xc),1,'\"');
  }
  return param_1;
}



undefined4 FUN_00838e00(undefined4 param_1,undefined4 param_2)

{
  FUN_00838360(param_1,param_2);
  return param_1;
}



void __thiscall FUN_00838e20(int **param_1_00,ushort *param_1)

{
  int *piVar1;
  char cVar2;
  int *piVar3;
  int **ppiVar4;
  int *piVar5;
  int iVar6;
  undefined4 *puVar7;
  ushort *puVar8;
  uint local_14;
  undefined local_8 [4];
  int *local_4;
  
  piVar5 = param_1_00[4];
  if (((int)piVar5 - (int)param_1_00[3] & 0xfffffffcU) == 0) {
    FUN_008383c0(param_1);
    return;
  }
  local_14 = local_14 & 0xffffff00;
  if (piVar5 < param_1_00[3]) {
    FUN_00a3fb10();
  }
  piVar3 = param_1_00[3];
  if (param_1_00[4] < piVar3) {
    FUN_00a3fb10();
  }
  piVar1 = *param_1_00;
  local_4 = piVar3;
  piVar3 = (int *)FUN_0083b270(piVar3,piVar5,param_1,local_14,0);
  piVar5 = param_1_00[4];
  if (piVar5 < param_1_00[3]) {
    FUN_00a3fb10();
  }
  if ((piVar1 == (int *)0x0) || (piVar1 != *param_1_00)) {
    FUN_00a3fb10();
  }
  if (piVar3 != piVar5) {
    if (piVar1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar6 = 0;
    }
    else {
      iVar6 = *piVar1;
    }
    if (*(int **)(iVar6 + 0x10) <= piVar3) {
      FUN_00a3fb10();
    }
    if ((*(ushort *)piVar3 <= *param_1) && (param_1[1] <= *(ushort *)((int)piVar3 + 2))) {
      return;
    }
  }
  piVar5 = param_1_00[3];
  if (param_1_00[4] < piVar5) {
    FUN_00a3fb10();
  }
  if ((piVar1 == (int *)0x0) || (piVar1 != *param_1_00)) {
    FUN_00a3fb10();
  }
  if (piVar3 == piVar5) goto LAB_00838f62;
  ppiVar4 = (int **)FUN_00835930(local_8,1);
  piVar5 = *ppiVar4;
  if (piVar5 == (int *)0x0) {
    FUN_00a3fb10();
    piVar5 = *ppiVar4;
    if (piVar5 != (int *)0x0) goto LAB_00838f3a;
    iVar6 = 0;
  }
  else {
LAB_00838f3a:
    iVar6 = *piVar5;
  }
  if (*(int **)(iVar6 + 0x10) <= ppiVar4[1]) {
    FUN_00a3fb10();
  }
  if ((*(ushort *)ppiVar4[1] <= *param_1) && (param_1[1] <= *(ushort *)((int)ppiVar4[1] + 2))) {
    return;
  }
LAB_00838f62:
  piVar5 = param_1_00[3];
  if (param_1_00[4] < piVar5) {
    FUN_00a3fb10();
  }
  if ((piVar1 == (int *)0x0) || (piVar1 != *param_1_00)) {
    FUN_00a3fb10();
  }
  if (piVar3 != piVar5) {
    puVar8 = param_1;
    FUN_00835930(local_8,1);
    FUN_00835630(puVar8);
    cVar2 = FUN_008348a0(puVar8);
    if (cVar2 != '\0') {
      puVar7 = (undefined4 *)FUN_00835090();
      FUN_00836a80(*puVar7,puVar7[1],param_1);
      return;
    }
  }
  piVar5 = param_1_00[4];
  if (piVar5 < param_1_00[3]) {
    FUN_00a3fb10();
  }
  if ((piVar1 == (int *)0x0) || (piVar1 != *param_1_00)) {
    FUN_00a3fb10();
  }
  if (piVar3 != piVar5) {
    puVar8 = param_1;
    FUN_00835630(param_1);
    cVar2 = FUN_008348a0(puVar8);
    if (cVar2 != '\0') {
      FUN_00836a80(piVar1,piVar3,param_1);
      return;
    }
  }
  FUN_008379e0(local_8,piVar1,piVar3,param_1);
  return;
}



undefined4 * __thiscall FUN_00839060(undefined4 *param_1_00,undefined4 *param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  byte bVar4;
  undefined8 uVar5;
  undefined4 local_8 [2];
  
  iVar3 = param_2;
  local_8[0] = 0;
  piVar1 = *(int **)(param_2 + 4);
  iVar2 = *piVar1;
  if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  if (piVar1[1] != *(int *)(iVar3 + 0xc)) {
    bVar4 = FUN_008358e0();
    param_2 = CONCAT31(param_2._1_3_,bVar4);
    uVar5 = CONCAT44(*param_1_00,(uint)bVar4);
    if (0xff < bVar4) {
      uVar5 = FUN_005e0c40();
    }
    if ((*(uint *)((int)((ulonglong)uVar5 >> 0x20) + ((uint)uVar5 >> 5) * 4) &
        1 << ((byte)uVar5 & 0x1f)) != 0) {
      std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      operator++(*(_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                   **)(iVar3 + 4));
      FUN_00837a90(param_1,1,&param_2,local_8,*(undefined4 *)(iVar3 + 4));
      return param_1;
    }
  }
  *param_1 = 0xffffffff;
  *(undefined *)(param_1 + 1) = 0;
  return param_1;
}



int * FUN_00839110(int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined local_8 [4];
  char local_4;
  
  *param_1 = 0;
  while( true ) {
    uVar1 = **(undefined4 **)(param_2 + 4);
    uVar2 = (*(undefined4 **)(param_2 + 4))[1];
    piVar4 = (int *)FUN_00839060(local_8,param_2);
    if (local_4 != '\0') {
      local_4 = '\0';
    }
    if (*piVar4 < 0) break;
    *param_1 = *param_1 + *piVar4;
  }
  puVar3 = *(undefined4 **)(param_2 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  return param_1;
}



void FUN_00839170(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  iVar1 = param_2;
  FUN_00838440(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    FUN_00836090(&param_2,iVar1);
    if (-1 < param_2) {
      *param_1 = param_2 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void FUN_008391d0(int *param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_00837d50(&param_2,param_2);
  iVar3 = param_2;
  if (-1 < param_2) {
    FUN_00836090(&param_2,iVar1);
    if ((-1 < param_2) && (iVar3 = iVar3 + param_2, -1 < iVar3)) {
      piVar2 = (int *)FUN_00837b50(local_8,iVar1);
      if (-1 < *piVar2) {
        *param_1 = *piVar2 + iVar3;
        return;
      }
    }
  }
  *param_1 = -1;
  return;
}



void FUN_00839250(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_008384c0(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



undefined4 * __thiscall FUN_008392b0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bc4330;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_boost::spirit::classic::basic_chset<wchar_t>_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_00839329(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_00838530(*(undefined4 *)(unaff_EBP + 8));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall FUN_00839340(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  
  iVar1 = param_2;
  FUN_00838580(&param_2,param_2);
  iVar2 = param_2;
  if ((-1 < param_2) && (piVar3 = *(int **)(*(int *)(param_1_00 + 0x10) + 4), piVar3 != (int *)0x0))
  {
    piVar3 = (int *)(**(code **)(*piVar3 + 4))(&param_2,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void __fastcall FUN_008393a0(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 0xc);
  if (puVar1 == (undefined4 *)0x0) {
    return;
  }
  if (puVar1[3] != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1[3]);
  }
  puVar1[3] = 0;
  puVar1[4] = 0;
  puVar1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*puVar1);
}



void __thiscall FUN_008393e0(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  
  iVar1 = param_2;
  FUN_00838440(&param_2,param_2);
  iVar3 = param_2;
  if (-1 < param_2) {
    FUN_008385e0(&param_2,iVar1);
    if (((-1 < param_2) && (iVar3 = iVar3 + param_2, -1 < iVar3)) &&
       (piVar2 = *(int **)(*(int *)(param_1_00 + 0x10) + 4), piVar2 != (int *)0x0)) {
      piVar2 = (int *)(**(code **)(*piVar2 + 4))(&param_2,iVar1);
      if (-1 < *piVar2) {
        *param_1 = *piVar2 + iVar3;
        return;
      }
    }
  }
  *param_1 = -1;
  return;
}



void FUN_00839460(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_008386f0(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void FUN_008394c0(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_00838750(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void __thiscall FUN_00839520(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  iVar1 = param_2;
  FUN_008387b0(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    FUN_008359c0(&param_2,*(undefined4 *)(param_1_00 + 0x1c),*(undefined4 *)(param_1_00 + 0x20),
                 iVar1);
    if (-1 < param_2) {
      *param_1 = param_2 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



undefined4 FUN_00839580(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_008388a0(param_1,param_3);
  return param_1;
}



undefined4 FUN_008395b0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00838930(param_1,param_3);
  return param_1;
}



undefined4 FUN_008395e0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_008389c0(param_1,param_3);
  return param_1;
}



undefined4 FUN_00839610(undefined4 param_1,undefined4 param_2)

{
  FUN_00838b30(param_2);
  return param_1;
}



void __fastcall FUN_00839630(int param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int *local_30;
  undefined local_2c [4];
  int *local_28;
  undefined local_24 [4];
  int *piStack_20;
  undefined local_1c [4];
  int *piStack_18;
  undefined local_14 [4];
  int *piStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4398;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  uVar3 = FUN_00838b30(&DAT_00d24f3c);
  local_4 = 0;
  FUN_008356b0(uVar3);
  local_4 = 0xffffffff;
  if (local_30 != (int *)0x0) {
    LOCK();
    iVar1 = local_30[1] + -1;
    local_30[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*local_30 + 4))(uVar2);
      LOCK();
      iVar1 = local_30[2] + -1;
      local_30[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_30 + 8))();
      }
    }
  }
  uVar3 = FUN_00838b30(&DAT_00d24f2c);
  local_4 = 1;
  FUN_008356b0(uVar3);
  local_4 = 0xffffffff;
  if (local_30 != (int *)0x0) {
    LOCK();
    iVar1 = local_30[1] + -1;
    local_30[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*local_30 + 4))();
      LOCK();
      iVar1 = local_30[2] + -1;
      local_30[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_30 + 8))();
      }
    }
  }
  uVar3 = FUN_00838b30(&DAT_00d24f28);
  local_4 = 2;
  FUN_008356b0(uVar3);
  local_4 = 0xffffffff;
  if (local_30 != (int *)0x0) {
    LOCK();
    iVar1 = local_30[1] + -1;
    local_30[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*local_30 + 4))();
      LOCK();
      iVar1 = local_30[2] + -1;
      local_30[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_30 + 8))();
      }
    }
  }
  uVar3 = FUN_00838a90(0xffffffb7);
  local_4 = 3;
  FUN_008356b0(uVar3);
  local_4 = 0xffffffff;
  if (local_30 != (int *)0x0) {
    LOCK();
    iVar1 = local_30[1] + -1;
    local_30[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*local_30 + 4))();
      LOCK();
      iVar1 = local_30[2] + -1;
      local_30[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_30 + 8))();
      }
    }
  }
  uVar3 = FUN_00838b30(&DAT_00d24f20);
  local_4 = 4;
  FUN_008356b0(uVar3);
  local_4 = 0xffffffff;
  if (local_30 != (int *)0x0) {
    LOCK();
    iVar1 = local_30[1] + -1;
    local_30[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*local_30 + 4))();
      LOCK();
      iVar1 = local_30[2] + -1;
      local_30[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_30 + 8))();
      }
    }
  }
  uVar3 = FUN_00839610(local_14,&DAT_00d24f18);
  local_4 = 5;
  uVar4 = FUN_00836780(local_1c,param_1 + 0x158,param_1 + 0x160);
  local_4._0_1_ = 6;
  uVar3 = FUN_00836780(local_24,uVar4,uVar3);
  local_4._0_1_ = 7;
  uVar3 = FUN_00836780(local_2c,uVar3,param_1 + 0x170);
  local_4._0_1_ = 8;
  FUN_008356b0(uVar3);
  local_4._0_1_ = 7;
  if (local_28 != (int *)0x0) {
    LOCK();
    iVar1 = local_28[1] + -1;
    local_28[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*local_28 + 4))();
      LOCK();
      iVar1 = local_28[2] + -1;
      local_28[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_28 + 8))();
      }
    }
  }
  local_4._0_1_ = 6;
  if (piStack_20 != (int *)0x0) {
    LOCK();
    iVar1 = piStack_20[1] + -1;
    piStack_20[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*piStack_20 + 4))();
      LOCK();
      iVar1 = piStack_20[2] + -1;
      piStack_20[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*piStack_20 + 8))();
      }
    }
  }
  local_4 = CONCAT31(local_4._1_3_,5);
  if (piStack_18 != (int *)0x0) {
    LOCK();
    iVar1 = piStack_18[1] + -1;
    piStack_18[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*piStack_18 + 4))();
      LOCK();
      iVar1 = piStack_18[2] + -1;
      piStack_18[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*piStack_18 + 8))();
      }
    }
  }
  local_4 = 0xffffffff;
  if (piStack_10 != (int *)0x0) {
    LOCK();
    iVar1 = piStack_10[1] + -1;
    piStack_10[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*piStack_10 + 4))();
      LOCK();
      iVar1 = piStack_10[2] + -1;
      piStack_10[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*piStack_10 + 8))();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



int * __thiscall FUN_00839970(int *param_1_00,char param_1)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  int *local_24;
  char local_20;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bc43c8;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  uVar3 = 0;
  param_1_00[1] = 0;
  FUN_00441871(param_1_00,1);
  if (local_20 != '\0') {
    piVar1 = *(int **)(*(int *)(*param_1_00 + 4) + 0x28 + (int)param_1_00);
    uVar2 = *(uint *)piVar1[8];
    local_8 = 1;
    if (((uVar2 == 0) || (uVar2 <= *(uint *)piVar1[4])) || (param_1 != *(char *)(uVar2 - 1))) {
      uVar2 = (**(code **)(*piVar1 + 8))(param_1);
    }
    else {
      *(int *)piVar1[0xc] = *(int *)piVar1[0xc] + 1;
      *(int *)piVar1[8] = *(int *)piVar1[8] + -1;
      uVar2 = (uint)**(byte **)piVar1[8];
    }
    if (uVar2 == 0xffffffff) {
      uVar3 = 4;
    }
  }
  local_8 = 0;
  if (uVar3 != 0) {
    uVar3 = *(uint *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 8) | uVar3;
    if (*(int *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 0x28) == 0) {
      uVar3 = uVar3 | 4;
    }
    FUN_00417a55(uVar3,0);
  }
  local_8 = 0xffffffff;
  if (*(int *)(*(int *)(*local_24 + 4) + 0x28 + (int)local_24) != 0) {
    FUN_00823c6d();
  }
  ExceptionList = local_10;
  return param_1_00;
}



undefined * Catch_All_00839a5e(void)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  undefined *puVar4;
  uint uVar5;
  int unaff_EBP;
  
  piVar1 = *(int **)(unaff_EBP + -0x14);
  iVar2 = *(int *)(*piVar1 + 4);
  uVar5 = *(uint *)((int)piVar1 + iVar2 + 8) & 0x17 | 4;
  *(uint *)((int)piVar1 + iVar2 + 8) = uVar5;
  if ((*(uint *)((int)piVar1 + iVar2 + 0xc) & uVar5) == 0) {
    *(undefined4 *)(unaff_EBP + -4) = 0;
    return &DAT_00839a8c;
  }
  __CxxThrowException_8(0,0);
  pcVar3 = (code *)swi(3);
  puVar4 = (undefined *)(*pcVar3)();
  return puVar4;
}



void FUN_00839aa0(undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined local_8 [8];
  
  puVar1 = (undefined4 *)FUN_00839060(local_8,param_2);
  *param_1 = *puVar1;
  return;
}



undefined4 FUN_00839ad0(undefined4 param_1,undefined4 param_2)

{
  FUN_00839110(param_1,param_2);
  return param_1;
}



undefined4 FUN_00839af0(undefined4 param_1,undefined4 param_2)

{
  FUN_00839170(param_1,param_2);
  return param_1;
}



undefined4 FUN_00839b10(undefined4 param_1,undefined4 param_2)

{
  FUN_008391d0(param_1,param_2);
  return param_1;
}



undefined4 FUN_00839b30(undefined4 param_1,undefined4 param_2)

{
  FUN_00839250(param_1,param_2);
  return param_1;
}



void __thiscall
FUN_00839b50(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  
  puVar3 = (undefined4 *)FUN_008392b0(param_2);
  uVar1 = *param_3;
  *param_3 = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1,param_2,param_2);
  return;
}



int * FUN_00839bc0(int *param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int *piVar5;
  undefined local_8 [4];
  char local_4;
  
  piVar5 = (int *)FUN_00839060(local_8,param_2);
  iVar1 = *piVar5;
  *param_1 = iVar1;
  if (-1 < iVar1) {
    while( true ) {
      uVar2 = **(undefined4 **)(param_2 + 4);
      uVar3 = (*(undefined4 **)(param_2 + 4))[1];
      piVar5 = (int *)FUN_00839060(local_8,param_2);
      if (local_4 != '\0') {
        local_4 = '\0';
      }
      if (*piVar5 < 0) break;
      *param_1 = *param_1 + *piVar5;
    }
    puVar4 = *(undefined4 **)(param_2 + 4);
    *puVar4 = uVar2;
    puVar4[1] = uVar3;
  }
  return param_1;
}



int * __thiscall FUN_00839c30(int *param_1_00,int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  
  iVar3 = param_2;
  iVar5 = **(int **)(param_2 + 4);
  if ((iVar5 != -4) && ((iVar5 == 0 || (iVar5 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  uVar1 = **(undefined4 **)(iVar3 + 4);
  uVar2 = (*(undefined4 **)(iVar3 + 4))[1];
  if (*(int **)(*param_1_00 + 4) == (int *)0x0) {
    iVar5 = -1;
  }
  else {
    piVar4 = (int *)(**(code **)(**(int **)(*param_1_00 + 4) + 4))(&param_2,iVar3);
    iVar5 = *piVar4;
  }
  *param_1 = iVar5;
  if (-1 < iVar5) {
    FUN_00837670(uVar1,uVar2,**(undefined4 **)(iVar3 + 4),(*(undefined4 **)(iVar3 + 4))[1]);
  }
  return param_1;
}



void FUN_00839cb0(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_00839340(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void FUN_00839d10(int *param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_00837db0(&param_2,param_2);
  iVar3 = param_2;
  if (-1 < param_2) {
    FUN_008385e0(&param_2,iVar1);
    if ((-1 < param_2) && (iVar3 = iVar3 + param_2, -1 < iVar3)) {
      piVar2 = (int *)FUN_00837b50(local_8,iVar1);
      if (-1 < *piVar2) {
        *param_1 = *piVar2 + iVar3;
        return;
      }
    }
  }
  *param_1 = -1;
  return;
}



void FUN_00839d90(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  iVar1 = param_2;
  FUN_00837e50(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    FUN_008385e0(&param_2,iVar1);
    if ((-1 < param_2) && (iVar2 = iVar2 + param_2, -1 < iVar2)) {
      FUN_00836090(&param_2,iVar1);
      if (-1 < param_2) {
        *param_1 = param_2 + iVar2;
        return;
      }
    }
  }
  *param_1 = -1;
  return;
}



void FUN_00839e00(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_008394c0(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void __thiscall FUN_00839e60(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  
  iVar1 = param_2;
  FUN_00839520(&param_2,param_2);
  iVar2 = param_2;
  if ((-1 < param_2) && (piVar3 = *(int **)(*(int *)(param_1_00 + 0x24) + 4), piVar3 != (int *)0x0))
  {
    piVar3 = (int *)(**(code **)(*piVar3 + 4))(&param_2,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



undefined4 FUN_00839ec0(undefined4 param_1,undefined4 param_2)

{
  FUN_00839580(param_1,&param_2,param_2,param_2);
  return param_1;
}



undefined4 FUN_00839ef0(undefined4 param_1,undefined4 param_2)

{
  FUN_008395b0(param_1,&param_2,param_2,param_2);
  return param_1;
}



undefined4 FUN_00839f20(undefined4 param_1,undefined4 param_2)

{
  FUN_008395e0(param_1,&param_2,param_2,param_2);
  return param_1;
}



void FUN_00839f50(int *param_1,undefined4 param_2,char param_3)

{
  int iVar1;
  uint uVar2;
  char cVar3;
  uint uVar4;
  undefined4 uVar5;
  undefined4 ***pppuVar6;
  undefined4 ***pppuVar7;
  undefined4 local_f0;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbStack_ec;
  undefined4 ***pppuStack_e8;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbStack_e4;
  undefined4 ***pppuStack_e0;
  int local_dc;
  uint local_d8;
  undefined auStack_d4 [168];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_2c [4];
  undefined4 ***local_28 [4];
  int local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc440e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_f0;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff00;
  ExceptionList = &local_c;
  iVar1 = *(int *)(*param_1 + 4) + (int)param_1;
  local_f0 = param_2;
  if ((*(uint *)(iVar1 + 8) & 6) != 0) {
    uVar5 = FUN_00832e60(8,0,0,1);
    local_4 = 0;
    FUN_0043fc7f(uVar5);
  }
  uVar2 = *(uint *)(iVar1 + 0x10);
  *(uint *)(iVar1 + 0x10) = *(uint *)(iVar1 + 0x10) & 0xfffffffe;
  local_14 = 0xf;
  local_18 = 0;
  local_28[0] = (undefined4 ***)((uint)local_28[0] & 0xffffff00);
  local_4 = 2;
  local_dc = iVar1;
  local_d8 = uVar2;
  do {
    cVar3 = FUN_00833530(uVar4);
    if ((*(byte *)(*(int *)(*param_1 + 4) + 8 + (int)param_1) & 6) != 0) {
      if (0xf < local_14) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_28[0]);
      }
      goto LAB_0083a143;
    }
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (abStack_2c,1,cVar3);
  } while (cVar3 != param_3);
  pppuVar6 = local_28[0];
  if (local_14 < 0x10) {
    pppuVar6 = local_28;
  }
  pppuVar6 = (undefined4 ***)((int)pppuVar6 + local_18);
  if (pppuVar6 == (undefined4 ***)0x0) {
LAB_0083a091:
    FUN_00a3fb10();
  }
  else {
    pppuVar7 = local_28[0];
    if (local_14 < 0x10) {
      pppuVar7 = local_28;
    }
    if (pppuVar6 < pppuVar7) goto LAB_0083a091;
    pppuVar7 = local_28[0];
    if (local_14 < 0x10) {
      pppuVar7 = local_28;
    }
    if ((undefined4 ***)((int)pppuVar7 + local_18) < pppuVar6) goto LAB_0083a091;
  }
  pbStack_ec = abStack_2c;
  pppuStack_e8 = pppuVar6;
  if (local_14 < 0x10) {
    pppuVar6 = local_28;
LAB_0083a0c9:
    pppuVar7 = local_28[0];
    if (local_14 < 0x10) {
      pppuVar7 = local_28;
    }
    if (pppuVar7 <= pppuVar6) {
      pppuVar7 = local_28[0];
      if (local_14 < 0x10) {
        pppuVar7 = local_28;
      }
      if (pppuVar6 <= (undefined4 ***)((int)pppuVar7 + local_18)) goto LAB_0083a0f4;
    }
  }
  else {
    pppuVar6 = local_28[0];
    if (local_28[0] != (undefined4 ***)0x0) goto LAB_0083a0c9;
  }
  FUN_00a3fb10();
LAB_0083a0f4:
  pbStack_e4 = abStack_2c;
  pppuStack_e0 = pppuVar6;
  FUN_00836890(auStack_d4,&pbStack_e4,&pbStack_ec,local_f0);
  if (0xf < local_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_28[0]);
  }
LAB_0083a143:
  *(uint *)(iVar1 + 0x10) = uVar2 & 0xffff;
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0083a1a0(int param_1_00,undefined4 param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 0x1d0),0,0xffffffff);
  FUN_00839f50(param_1,param_1_00 + 0x10,0x3e);
  return;
}



void __thiscall FUN_0083a1d0(int param_1_00,undefined4 param_1)

{
  FUN_00839f50(param_1,param_1_00 + 0x18,0x3e);
  return;
}



char __thiscall
FUN_0083a1f0(int param_1_00,undefined4 param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2)

{
  char cVar1;
  
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 0x1a4),0,0xffffffff);
  cVar1 = FUN_00839f50(param_1,param_1_00 + 0x80,0x3c);
  FUN_00839970(0x3c);
  if (cVar1 != '\0') {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (param_2,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        *)(param_1_00 + 0x1a4),0,0xffffffff);
  }
  return cVar1;
}



void __thiscall FUN_0083a250(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  char cVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined local_148 [316];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc446c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00839630(DAT_0323f878 ^ (uint)&stack0xfffffeac);
  cVar2 = FUN_00839f50(param_1,param_1_00 + 0xb8,0x3e);
  if (cVar2 == '\0') {
    uVar3 = FUN_0083d040(0,0,0,1);
    local_4 = 0;
    FUN_0082ac40(uVar3);
  }
  cVar2 = FUN_00839f50(param_1,param_1_00 + 200,0x3e);
  if (cVar2 == '\0') {
    uVar3 = FUN_0083d040(0,0,0,1);
    local_4 = 1;
    FUN_0082ac40(uVar3);
  }
  cVar2 = FUN_00839f50(param_1,param_1_00 + 0x118,0x3e);
  if (cVar2 == '\0') {
    uVar3 = FUN_0083d040(0,0,0,1);
    local_4 = 2;
    FUN_0082ac40(uVar3);
  }
  uVar1 = *(uint *)(param_1_00 + 0x1e8);
  puVar4 = (undefined4 *)(param_1_00 + 0x1d4);
  puVar5 = puVar4;
  if (0xf < uVar1) {
    puVar5 = (undefined4 *)*puVar4;
  }
  puVar5 = (undefined4 *)(*(int *)(param_1_00 + 0x1e4) + (int)puVar5);
  if (puVar5 != (undefined4 *)0x0) {
    puVar6 = puVar4;
    if (0xf < uVar1) {
      puVar6 = (undefined4 *)*puVar4;
    }
    if (puVar6 <= puVar5) {
      if (0xf < uVar1) {
        puVar4 = (undefined4 *)*puVar4;
      }
      if (puVar5 <= (undefined4 *)(*(int *)(param_1_00 + 0x1e4) + (int)puVar4)) goto LAB_0083a374;
    }
  }
  FUN_00a3fb10();
LAB_0083a374:
  puVar4 = (undefined4 *)FUN_0042a0d0(local_148);
  uVar3 = FUN_0083e7b0();
  cVar2 = FUN_0082af60(*puVar4,puVar4[1],param_1_00 + 0x1d0,puVar5,uVar3);
  if (cVar2 == '\0') {
    uVar3 = FUN_00832e60(3,0,0,1);
    local_4 = 3;
    FUN_0043fc7f(uVar3);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0083a3e0(int param_1_00,int *param_1)

{
  if ((*(byte *)(*(int *)(*param_1 + 4) + 8 + (int)param_1) & 6) == 0) {
    FUN_00839f50(param_1,param_1_00 + 0x18,0x3e);
  }
  return;
}



undefined4 * __thiscall FUN_0083a400(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf220b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  param_1_00[1] = 0;
  local_4 = 0;
  FUN_00839b50(param_1_00,param_1,param_1_00 + 1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_0083a460(undefined4 param_1_00,undefined4 param_1,short *param_2)

{
  short sVar1;
  short sVar2;
  short *psVar3;
  short *psVar4;
  undefined4 *puVar5;
  undefined4 local_4;
  
  sVar2 = *param_2;
  psVar3 = param_2 + 1;
  local_4 = param_1_00;
  if (sVar2 == 0) {
    return;
  }
  do {
    psVar4 = psVar3 + 1;
    if (*psVar3 == 0x2d) {
      sVar1 = *psVar4;
      psVar4 = psVar3 + 2;
      if (sVar1 == 0) {
        param_2 = (short *)CONCAT22(sVar2,sVar2);
        FUN_00838e20(&param_2);
        param_2 = (short *)0x2d002d;
        FUN_00838e20(&param_2);
        return;
      }
      puVar5 = &param_2;
      param_2 = (short *)CONCAT22(sVar1,sVar2);
      sVar2 = sVar1;
    }
    else {
      puVar5 = &local_4;
      local_4 = CONCAT22(sVar2,sVar2);
      sVar2 = *psVar3;
    }
    FUN_00838e20(puVar5);
    psVar3 = psVar4;
  } while (sVar2 != 0);
  return;
}



undefined4 FUN_0083a500(undefined4 param_1,undefined4 param_2)

{
  FUN_00839bc0(param_1,param_2);
  return param_1;
}



undefined4 FUN_0083a520(undefined4 param_1,undefined4 param_2)

{
  FUN_00839c30(param_1,param_2);
  return param_1;
}



undefined4 FUN_0083a540(undefined4 param_1,undefined4 param_2)

{
  FUN_00839cb0(param_1,param_2);
  return param_1;
}



undefined4 FUN_0083a560(undefined4 param_1,undefined4 param_2)

{
  FUN_00839d10(param_1,param_2);
  return param_1;
}



undefined4 __thiscall FUN_0083a580(undefined4 param_1_00,undefined4 *param_1)

{
  void *pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x18);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    pvVar1 = (void *)0x0;
  }
  else {
    FUN_00837c50(*param_1);
  }
  local_4 = 0xffffffff;
  FUN_0083a400(pvVar1);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_0083a600(int *param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_008393e0(&param_2,param_2);
  iVar3 = param_2;
  if (-1 < param_2) {
    FUN_00836090(&param_2,iVar1);
    if ((-1 < param_2) && (iVar3 = iVar3 + param_2, -1 < iVar3)) {
      piVar2 = (int *)FUN_00837ac0(local_8,iVar1);
      if (-1 < *piVar2) {
        *param_1 = *piVar2 + iVar3;
        return;
      }
    }
  }
  *param_1 = -1;
  return;
}



void FUN_0083a680(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_00839d90(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837ac0(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void __fastcall FUN_0083a6e0(undefined4 param_1)

{
  undefined2 local_28;
  undefined2 local_26;
  undefined4 local_24 [3];
  int local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4498;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00a74790(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  local_26 = 0xffff;
  local_4 = 0;
  local_28 = 0;
  FUN_00838e20(&local_28);
  FUN_00838660(param_1);
  FUN_00838810(local_24);
  if (local_18 != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_18);
  }
  local_18 = 0;
  local_14 = 0;
  local_10 = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_24[0]);
}



void FUN_0083a790(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc44d3;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  if ((param_1[1] == 0) || (*(int *)(param_1[1] + 4) != 1)) {
    pvVar3 = operator_new(0x18);
    local_4 = 0;
    if (pvVar3 == (void *)0x0) {
      pvVar3 = (void *)0x0;
    }
    else {
      FUN_00837c50(*param_1);
    }
    local_4 = 0xffffffff;
    uVar4 = FUN_0083a400(pvVar3);
    local_4 = 1;
    FUN_008356b0(uVar4);
    local_4 = 0xffffffff;
    if (local_10 != (int *)0x0) {
      LOCK();
      iVar1 = local_10[1] + -1;
      local_10[1] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_10 + 4))(uVar2);
        LOCK();
        iVar1 = local_10[2] + -1;
        local_10[2] = iVar1;
        UNLOCK();
        if (iVar1 == 0) {
          (**(code **)(*local_10 + 8))();
        }
      }
    }
  }
  ExceptionList = local_c;
  return;
}



int * __thiscall FUN_0083a860(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4509;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = **(int **)(param_2 + 4);
  local_4 = 0;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  }
  FUN_00839ec0(param_1,param_2);
  local_4 = 0;
  if (-1 < *param_1) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (*(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                (param_1_00 + 4),1,(char)param_1[2]);
  }
  ExceptionList = local_c;
  return param_1;
}



int * __thiscall FUN_0083a900(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4509;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = **(int **)(param_2 + 4);
  local_4 = 0;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  }
  FUN_00839ef0(param_1,param_2);
  local_4 = 0;
  if (-1 < *param_1) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (*(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                (param_1_00 + 4),1,(char)param_1[2]);
  }
  ExceptionList = local_c;
  return param_1;
}



int * __thiscall FUN_0083a9a0(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = **(int **)(param_2 + 4);
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  FUN_00839f20(param_1,param_2);
  if (-1 < *param_1) {
    **(undefined2 **)(param_1_00 + 4) = *(undefined2 *)(param_1 + 2);
  }
  return param_1;
}



int * __thiscall FUN_0083a9f0(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = **(int **)(param_2 + 4);
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  FUN_00839ec0(param_1,param_2);
  if (-1 < *param_1) {
    **(int **)(param_1_00 + 4) = param_1[2];
  }
  return param_1;
}



int * __thiscall FUN_0083aa40(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = **(int **)(param_2 + 4);
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  FUN_00839ec0(param_1,param_2);
  if (-1 < *param_1) {
    *(bool *)*(undefined4 *)(param_1_00 + 4) = param_1[2] != 0;
  }
  return param_1;
}



undefined4 __thiscall FUN_0083aaa0(undefined4 param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4543;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x18);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    pvVar2 = (void *)0x0;
  }
  else {
    FUN_00a74790(uVar1);
  }
  local_4 = 0xffffffff;
  FUN_0083a400(pvVar2);
  local_4 = 1;
  FUN_0083a460(param_1_00,param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_0083ab30(undefined4 param_1,undefined4 param_2)

{
  FUN_0083a600(param_1,param_2);
  return param_1;
}



undefined4 FUN_0083ab50(undefined4 param_1,undefined4 param_2)

{
  FUN_0083a680(param_1,param_2);
  return param_1;
}



void __thiscall FUN_0083ab70(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  iVar1 = param_2;
  FUN_00839e60(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    FUN_00836090(&param_2,iVar1);
    if ((-1 < param_2) && (iVar2 = iVar2 + param_2, -1 < iVar2)) {
      FUN_008359c0(&param_2,*(undefined4 *)(param_1_00 + 0x2c),*(undefined4 *)(param_1_00 + 0x30),
                   iVar1);
      if (-1 < param_2) {
        *param_1 = param_2 + iVar2;
        return;
      }
    }
  }
  *param_1 = -1;
  return;
}



void __thiscall FUN_0083abf0(undefined4 *param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_c [12];
  
  iVar1 = param_2;
  FUN_008359c0(&param_2,*param_1_00,param_1_00[1],param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_0083a860(local_c,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void __thiscall FUN_0083ac60(undefined4 *param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_c [12];
  
  iVar1 = param_2;
  FUN_008359c0(&param_2,*param_1_00,param_1_00[1],param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_0083a900(local_c,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void FUN_0083acd0(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_c [12];
  
  iVar1 = param_2;
  FUN_00839460(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_0083a9a0(local_c,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void FUN_0083ad30(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_c [12];
  
  iVar1 = param_2;
  FUN_00839e00(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_0083a9f0(local_c,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void FUN_0083ad90(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_c [12];
  
  iVar1 = param_2;
  FUN_00838580(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_0083aa40(local_c,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void FUN_0083adf0(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_c [12];
  
  iVar1 = param_2;
  FUN_00838580(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_0083a9f0(local_c,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



undefined4 FUN_0083ae50(undefined4 param_1,undefined4 param_2)

{
  FUN_0083aaa0(param_2);
  return param_1;
}



undefined4 FUN_0083ae70(undefined4 param_1,undefined4 param_2)

{
  FUN_0083ab70(param_1,param_2);
  return param_1;
}



undefined4 FUN_0083ae90(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  int *piStack_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4581;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  uVar3 = FUN_0083a580(param_2);
  local_4 = 1;
  FUN_0083a790(uVar3,uVar2);
  FUN_0083a6e0();
  FUN_0083a580(uVar3);
  local_4 = local_4 & 0xffffff00;
  if (piStack_10 != (int *)0x0) {
    LOCK();
    iVar1 = piStack_10[1] + -1;
    piStack_10[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*piStack_10 + 4))();
      LOCK();
      iVar1 = piStack_10[2] + -1;
      piStack_10[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*piStack_10 + 8))();
      }
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_0083af50(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_0083abf0(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void FUN_0083afb0(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_0083ac60(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void FUN_0083b010(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_0083acd0(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void FUN_0083b070(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_0083ad30(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void FUN_0083b0d0(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_0083ad90(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



void FUN_0083b130(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_8 [8];
  
  iVar1 = param_2;
  FUN_0083adf0(&param_2,param_2);
  iVar2 = param_2;
  if (-1 < param_2) {
    piVar3 = (int *)FUN_00837b50(local_8,iVar1);
    if (-1 < *piVar3) {
      *param_1 = *piVar3 + iVar2;
      return;
    }
  }
  *param_1 = -1;
  return;
}



undefined4 FUN_0083b190(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0083ae90(param_1,param_3);
  return param_1;
}



undefined4 FUN_0083b1c0(undefined4 param_1,undefined4 param_2)

{
  FUN_0083a580(param_2);
  return param_1;
}



int __thiscall FUN_0083b1e0(undefined4 param_1_00,int param_1,undefined4 *param_2)

{
  FUN_0083a580(param_1_00);
  *(undefined4 *)(param_1 + 8) = *param_2;
  return param_1;
}



undefined4 * __thiscall FUN_0083b210(undefined4 *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc45a8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1_00 = boost::spirit::classic::impl::
                concrete_parser<struct_boost::spirit::classic::positive<class_boost::spirit::classic::chset<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
                ::vftable;
  FUN_0083a580(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



int FUN_0083b270(int param_1,int param_2,ushort *param_3)

{
  int iVar1;
  int iVar2;
  
  iVar2 = param_2 - param_1 >> 2;
  if (0 < iVar2) {
    do {
      iVar1 = iVar2 / 2;
      if (*(ushort *)(param_1 + iVar1 * 4) < *param_3) {
        param_1 = param_1 + 4 + iVar1 * 4;
        iVar1 = iVar2 + (-1 - iVar1);
      }
      iVar2 = iVar1;
    } while (0 < iVar1);
  }
  return param_1;
}



void __fastcall FUN_0083b2c0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc45d8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = boost::spirit::classic::impl::
             concrete_parser<struct_boost::spirit::classic::positive<class_boost::spirit::classic::chset<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
             ::vftable;
  piVar1 = (int *)param_1[2];
  local_4 = 0;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = boost::spirit::classic::impl::
             abstract_parser<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
             ::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_0083b340(undefined4 param_1_00,byte param_1)

{
  FUN_0083b2c0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



uint __thiscall FUN_0083b360(int **param_1_00,ushort param_1)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  int iVar5;
  uint local_10;
  
  piVar1 = param_1_00[4];
  piVar4 = param_1_00[3];
  if (((int)piVar1 - (int)piVar4 & 0xfffffffcU) != 0) {
    local_10 = local_10 & 0xffffff00;
    if (piVar1 < piVar4) {
      FUN_00a3fb10();
    }
    piVar4 = param_1_00[3];
    if (param_1_00[4] < piVar4) {
      FUN_00a3fb10();
    }
    piVar2 = *param_1_00;
    piVar3 = (int *)FUN_0083b270(piVar4,piVar1,&param_1,local_10,0);
    piVar1 = param_1_00[4];
    if (piVar1 < param_1_00[3]) {
      FUN_00a3fb10();
    }
    piVar4 = *param_1_00;
    if ((piVar2 == (int *)0x0) || (piVar2 != piVar4)) {
      piVar4 = (int *)FUN_00a3fb10();
    }
    if (piVar3 != piVar1) {
      if (piVar2 == (int *)0x0) {
        FUN_00a3fb10();
        iVar5 = 0;
      }
      else {
        iVar5 = *piVar2;
      }
      if (*(int **)(iVar5 + 0x10) <= piVar3) {
        iVar5 = FUN_00a3fb10();
      }
      piVar4 = (int *)CONCAT22((short)((uint)iVar5 >> 0x10),param_1);
      if ((*(ushort *)piVar3 <= param_1) && (param_1 <= *(ushort *)((int)piVar3 + 2))) {
        return CONCAT31((int3)((uint)piVar4 >> 8),1);
      }
    }
    piVar1 = param_1_00[3];
    if (param_1_00[4] < piVar1) {
      piVar4 = (int *)FUN_00a3fb10();
    }
    if ((piVar2 == (int *)0x0) || (piVar2 != *param_1_00)) {
      piVar4 = (int *)FUN_00a3fb10();
    }
    if (piVar3 != piVar1) {
      if (piVar2 == (int *)0x0) {
        FUN_00a3fb10();
        iVar5 = 0;
      }
      else {
        iVar5 = *piVar2;
      }
      if (piVar3 <= *(int **)(iVar5 + 0xc)) {
        FUN_00a3fb10();
      }
      if (piVar2 == (int *)0x0) {
        FUN_00a3fb10();
        iVar5 = 0;
      }
      else {
        iVar5 = *piVar2;
      }
      if (*(int **)(iVar5 + 0x10) <= piVar3 + -1) {
        FUN_00a3fb10();
      }
      if ((*(ushort *)(piVar3 + -1) <= param_1) && (param_1 <= *(ushort *)((int)piVar3 + -2))) {
        return 1;
      }
      return 0;
    }
  }
  return (uint)piVar4 & 0xffffff00;
}



undefined4 * FUN_0083b4b0(undefined4 *param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  undefined4 local_8 [2];
  
  iVar3 = param_2;
  local_8[0] = 0;
  piVar1 = *(int **)(param_2 + 4);
  iVar2 = *piVar1;
  if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10();
  }
  if (piVar1[1] != *(int *)(iVar3 + 0xc)) {
    cVar4 = FUN_008358e0();
    param_2 = CONCAT31(param_2._1_3_,cVar4);
    cVar4 = FUN_0083b360((short)cVar4);
    if (cVar4 != '\0') {
      std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      operator++(*(_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                   **)(iVar3 + 4));
      FUN_00837a90(param_1,1,&param_2,local_8,*(undefined4 *)(iVar3 + 4));
      return param_1;
    }
  }
  *param_1 = 0xffffffff;
  *(undefined *)(param_1 + 1) = 0;
  return param_1;
}



int * FUN_0083b550(int *param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int *piVar5;
  undefined local_8 [4];
  char local_4;
  
  piVar5 = (int *)FUN_0083b4b0(local_8,param_2);
  iVar1 = *piVar5;
  *param_1 = iVar1;
  if (-1 < iVar1) {
    while( true ) {
      uVar2 = **(undefined4 **)(param_2 + 4);
      uVar3 = (*(undefined4 **)(param_2 + 4))[1];
      piVar5 = (int *)FUN_0083b4b0(local_8,param_2);
      if (local_4 != '\0') {
        local_4 = '\0';
      }
      if (*piVar5 < 0) break;
      *param_1 = *param_1 + *piVar5;
    }
    puVar4 = *(undefined4 **)(param_2 + 4);
    *puVar4 = uVar2;
    puVar4[1] = uVar3;
  }
  return param_1;
}



undefined4 FUN_0083b5c0(undefined4 param_1,undefined4 param_2)

{
  FUN_0083b550(param_1,param_2);
  return param_1;
}



undefined4 __fastcall FUN_0083b5e0(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xc);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0083b210(param_1 + 4);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_0083b650(undefined4 param_1,undefined4 param_2)

{
  FUN_0083af50(param_1,param_2);
  return param_1;
}



undefined4 FUN_0083b670(undefined4 param_1,undefined4 param_2)

{
  FUN_0083afb0(param_1,param_2);
  return param_1;
}



undefined4 FUN_0083b690(undefined4 param_1,undefined4 param_2)

{
  FUN_0083b010(param_1,param_2);
  return param_1;
}



undefined4 FUN_0083b6b0(undefined4 param_1,undefined4 param_2)

{
  FUN_0083b070(param_1,param_2);
  return param_1;
}



undefined4 FUN_0083b6d0(undefined4 param_1,undefined4 param_2)

{
  FUN_0083b0d0(param_1,param_2);
  return param_1;
}



undefined4 FUN_0083b6f0(undefined4 param_1,undefined4 param_2)

{
  FUN_0083b130(param_1,param_2);
  return param_1;
}



undefined4 * __thiscall FUN_0083b710(undefined4 *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc45a8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1_00 = boost::spirit::classic::impl::
                concrete_parser<struct_boost::spirit::classic::kleene_star<class_boost::spirit::classic::chset<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
                ::vftable;
  FUN_0083a580(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_0083b770(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc45d8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = boost::spirit::classic::impl::
             concrete_parser<struct_boost::spirit::classic::kleene_star<class_boost::spirit::classic::chset<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
             ::vftable;
  piVar1 = (int *)param_1[2];
  local_4 = 0;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = boost::spirit::classic::impl::
             abstract_parser<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
             ::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_0083b7f0(undefined4 param_1_00,byte param_1)

{
  FUN_0083b770();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int * FUN_0083b810(int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int *piVar4;
  undefined local_8 [4];
  char local_4;
  
  *param_1 = 0;
  while( true ) {
    uVar1 = **(undefined4 **)(param_2 + 4);
    uVar2 = (*(undefined4 **)(param_2 + 4))[1];
    piVar4 = (int *)FUN_0083b4b0(local_8,param_2);
    if (local_4 != '\0') {
      local_4 = '\0';
    }
    if (*piVar4 < 0) break;
    *param_1 = *param_1 + *piVar4;
  }
  puVar3 = *(undefined4 **)(param_2 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  return param_1;
}



undefined4 FUN_0083b870(undefined4 param_1,undefined4 param_2)

{
  FUN_0083b810(param_1,param_2);
  return param_1;
}



undefined4 __fastcall FUN_0083b890(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xc);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0083b710(param_1 + 4);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



int __thiscall FUN_0083b900(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar3 = operator_new(0xc);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_0083b210(param_1);
  }
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  local_4 = 0xffffffff;
  *(undefined4 *)(param_1_00 + 4) = uVar4;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1,uVar2);
  }
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_0083b980(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar3 = operator_new(0xc);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_0083b710(param_1);
  }
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  local_4 = 0xffffffff;
  *(undefined4 *)(param_1_00 + 4) = uVar4;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1,uVar2);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * FUN_0083ba00(undefined4 *param_1,undefined4 *param_2,int param_3)

{
  *param_1 = *param_2;
  param_1[1] = param_2[1];
  param_1[2] = param_2[2];
  FUN_0083a580(param_3);
  param_1[5] = *(undefined4 *)(param_3 + 8);
  return param_1;
}



undefined4 * __thiscall FUN_0083ba40(undefined4 *param_1_00,undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4608;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = boost::spirit::classic::impl::
                concrete_parser<struct_boost::spirit::classic::alternative<struct_boost::spirit::classic::alternative<struct_boost::spirit::classic::alternative<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>...::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
                ::vftable;
  param_1_00[1] = *param_1;
  param_1_00[2] = param_1[1];
  param_1_00[3] = param_1[2];
  local_4 = 0;
  FUN_0083a580(param_1 + 3);
  param_1_00[6] = param_1[5];
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_0083bac0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc45d8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = boost::spirit::classic::impl::
             concrete_parser<struct_boost::spirit::classic::alternative<struct_boost::spirit::classic::alternative<struct_boost::spirit::classic::alternative<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>...::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
             ::vftable;
  piVar1 = (int *)param_1[5];
  local_4 = 0;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  *param_1 = boost::spirit::classic::impl::
             abstract_parser<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
             ::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_0083bb40(undefined4 param_1_00,byte param_1)

{
  FUN_0083bac0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int * __thiscall FUN_0083bb60(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4509;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = **(int **)(param_2 + 4);
  local_4 = 0;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *(int *)(param_2 + 8))))) {
    FUN_00a3fb10(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  }
  FUN_0083b4b0(param_1,param_2);
  local_4 = 0;
  if (-1 < *param_1) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (*(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                (param_1_00 + 8),1,*(char *)((int)param_1 + 5));
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_0083bc00(int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  int *piVar5;
  undefined local_8 [8];
  
  iVar4 = param_2;
  uVar1 = **(undefined4 **)(param_2 + 4);
  uVar2 = (*(undefined4 **)(param_2 + 4))[1];
  FUN_008360e0(&param_2,param_2);
  if (-1 < param_2) {
    *param_1 = param_2;
    return;
  }
  puVar3 = *(undefined4 **)(iVar4 + 4);
  *puVar3 = uVar1;
  puVar3[1] = uVar2;
  piVar5 = (int *)FUN_0083bb60(local_8,iVar4);
  *param_1 = *piVar5;
  return;
}



undefined4 FUN_0083bc60(undefined4 param_1,undefined4 param_2)

{
  FUN_0083bc00(param_1,param_2);
  return param_1;
}



undefined4 __fastcall FUN_0083bc80(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x1c);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0083ba40(param_1 + 4);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



int __thiscall FUN_0083bcf0(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar3 = operator_new(0x1c);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_0083ba40(param_1);
  }
  puVar1 = *(undefined4 **)(param_1_00 + 4);
  local_4 = 0xffffffff;
  *(undefined4 *)(param_1_00 + 4) = uVar4;
  if (puVar1 != (undefined4 *)0x0) {
    (**(code **)*puVar1)(1,uVar2);
  }
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_0083bd70(int param_1)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  char cVar4;
  undefined4 *puVar5;
  uint uVar6;
  undefined4 uVar7;
  undefined4 *puVar8;
  int **ppiVar9;
  short *psVar10;
  char *pcVar11;
  int iVar12;
  char *pcVar13;
  int **ppiVar14;
  int **ppiVar15;
  short *local_bc;
  undefined4 local_b8;
  int *piStack_b4;
  wchar_t *pwStack_b0;
  undefined4 uStack_ac;
  undefined4 uStack_a8;
  undefined4 uStack_a4;
  undefined4 uStack_a0;
  undefined2 uStack_9c;
  undefined4 uStack_98;
  short *psStack_94;
  undefined4 uStack_8c;
  undefined4 uStack_88;
  int *piStack_84;
  int *apiStack_80 [2];
  short *psStack_78;
  undefined4 uStack_74;
  wchar_t *pwStack_70;
  int *piStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_60;
  int iStack_5c;
  undefined *puStack_54;
  short *psStack_50;
  int *local_4c [2];
  int iStack_44;
  int iStack_40;
  int iStack_3c;
  int *piStack_38;
  undefined2 uStack_20;
  int local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00bc4959;
  local_14 = ExceptionList;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_14;
  *(undefined4 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(undefined4 *)(param_1 + 0x24) = 0;
  *(undefined4 *)(param_1 + 0x2c) = 0;
  *(undefined4 *)(param_1 + 0x34) = 0;
  *(undefined4 *)(param_1 + 0x3c) = 0;
  *(undefined4 *)(param_1 + 0x44) = 0;
  *(undefined4 *)(param_1 + 0x4c) = 0;
  *(undefined4 *)(param_1 + 0x54) = 0;
  *(undefined4 *)(param_1 + 0x5c) = 0;
  *(undefined4 *)(param_1 + 100) = 0;
  *(undefined4 *)(param_1 + 0x6c) = 0;
  *(undefined4 *)(param_1 + 0x74) = 0;
  *(undefined4 *)(param_1 + 0x7c) = 0;
  *(undefined4 *)(param_1 + 0x84) = 0;
  *(undefined4 *)(param_1 + 0x8c) = 0;
  *(undefined4 *)(param_1 + 0x94) = 0;
  *(undefined4 *)(param_1 + 0x9c) = 0;
  *(undefined4 *)(param_1 + 0xa4) = 0;
  *(undefined4 *)(param_1 + 0xac) = 0;
  *(undefined4 *)(param_1 + 0xb4) = 0;
  *(undefined4 *)(param_1 + 0xbc) = 0;
  *(undefined4 *)(param_1 + 0xc4) = 0;
  *(undefined4 *)(param_1 + 0xcc) = 0;
  *(undefined4 *)(param_1 + 0xd4) = 0;
  *(undefined4 *)(param_1 + 0xdc) = 0;
  *(undefined4 *)(param_1 + 0xe4) = 0;
  *(undefined4 *)(param_1 + 0xec) = 0;
  *(undefined4 *)(param_1 + 0xf4) = 0;
  *(undefined4 *)(param_1 + 0xfc) = 0;
  *(undefined4 *)(param_1 + 0x104) = 0;
  *(undefined4 *)(param_1 + 0x10c) = 0;
  *(undefined4 *)(param_1 + 0x114) = 0;
  *(undefined4 *)(param_1 + 0x11c) = 0;
  *(undefined4 *)(param_1 + 0x124) = 0;
  *(undefined4 *)(param_1 + 300) = 0;
  *(undefined4 *)(param_1 + 0x134) = 0;
  piVar3 = (int *)(param_1 + 0x138);
  *(undefined4 *)(param_1 + 0x13c) = 0;
  local_c._0_1_ = 0x27;
  local_c._1_3_ = 0;
  local_1c = param_1;
  FUN_00835c40(uVar6);
  local_c._0_1_ = 0x28;
  FUN_00835c40();
  local_c._0_1_ = 0x29;
  FUN_00835c40();
  local_c._0_1_ = 0x2a;
  FUN_00835c40();
  local_c._0_1_ = 0x2b;
  FUN_00835c40();
  local_c._0_1_ = 0x2c;
  FUN_00835c40();
  local_c._0_1_ = 0x2d;
  FUN_00835c40();
  local_c._0_1_ = 0x2e;
  FUN_00835c40();
  local_c._0_1_ = 0x2f;
  FUN_00835c40();
  local_c._0_1_ = 0x30;
  FUN_00835720();
  local_c._0_1_ = 0x31;
  FUN_00839630();
  uVar7 = FUN_00836ed0(&local_bc,param_1 + 0x178);
  local_c._0_1_ = 0x32;
  FUN_00837800(uVar7);
  piVar2 = local_b8;
  local_c._0_1_ = 0x31;
  if (local_b8 != (int *)0x0) {
    LOCK();
    iVar12 = local_b8[1] + -1;
    local_b8[1] = iVar12;
    UNLOCK();
    if (iVar12 == 0) {
      (**(code **)(*local_b8 + 4))();
      piVar1 = piVar2 + 2;
      LOCK();
      iVar12 = *piVar1 + -1;
      *piVar1 = iVar12;
      UNLOCK();
      if (iVar12 == 0) {
        (**(code **)(*piVar2 + 8))();
      }
    }
  }
  uVar7 = FUN_00838bc0(local_4c,param_1 + 0x158,0x5f);
  local_c._0_1_ = 0x33;
  uVar7 = FUN_00838bc0(&local_bc,uVar7,0x3a);
  local_c._0_1_ = 0x34;
  FUN_00836950(uVar7);
  piVar2 = local_b8;
  local_c._0_1_ = 0x33;
  if (local_b8 != (int *)0x0) {
    LOCK();
    iVar12 = local_b8[1] + -1;
    local_b8[1] = iVar12;
    UNLOCK();
    if (iVar12 == 0) {
      (**(code **)(*local_b8 + 4))();
      piVar1 = piVar2 + 2;
      LOCK();
      iVar12 = *piVar1 + -1;
      *piVar1 = iVar12;
      UNLOCK();
      if (iVar12 == 0) {
        (**(code **)(*piVar2 + 8))();
      }
    }
  }
  piVar2 = local_4c[1];
  local_c._0_1_ = 0x31;
  if (local_4c[1] != (int *)0x0) {
    LOCK();
    iVar12 = local_4c[1][1] + -1;
    local_4c[1][1] = iVar12;
    UNLOCK();
    if (iVar12 == 0) {
      (**(code **)(*local_4c[1] + 4))();
      piVar1 = piVar2 + 2;
      LOCK();
      iVar12 = *piVar1 + -1;
      *piVar1 = iVar12;
      UNLOCK();
      if (iVar12 == 0) {
        (**(code **)(*piVar2 + 8))();
      }
    }
  }
  uVar7 = FUN_00836ed0(&local_bc,param_1 + 0x180);
  local_c._0_1_ = 0x35;
  FUN_00837880(uVar7);
  local_c = CONCAT31(local_c._1_3_,0x31);
  if (local_b8 != (int *)0x0) {
    local_4c[0] = local_b8;
    LOCK();
    iVar12 = local_b8[1] + -1;
    local_b8[1] = iVar12;
    UNLOCK();
    if (iVar12 == 0) {
      (**(code **)(*local_b8 + 4))();
      LOCK();
      iVar12 = local_4c[0][2] + -1;
      local_4c[0][2] = iVar12;
      UNLOCK();
      if (iVar12 == 0) {
        (**(code **)(*local_4c[0] + 8))();
      }
    }
  }
  puVar8 = (undefined4 *)operator_new(0xc);
  if (puVar8 == (undefined4 *)0x0) {
    puVar8 = (undefined4 *)0x0;
  }
  else {
    *puVar8 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar8[1] = param_1 + 0x120;
    puVar8[2] = param_1 + 0x128;
  }
  puVar5 = *(undefined4 **)(param_1 + 0xb4);
  *(undefined4 **)(param_1 + 0xb4) = puVar8;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  local_b8 = (int *)CONCAT31(local_b8._1_3_,0x3d);
  puVar8 = (undefined4 *)operator_new(0x10);
  if (puVar8 == (undefined4 *)0x0) {
    puVar8 = (undefined4 *)0x0;
  }
  else {
    puVar8[1] = piVar3;
    puVar8[2] = local_b8;
    *puVar8 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<char>_>,struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar8[3] = piVar3;
  }
  puVar5 = *(undefined4 **)(param_1 + 0xc);
  *(undefined4 **)(param_1 + 0xc) = puVar8;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  puVar8 = (undefined4 *)operator_new(0xc);
  if (puVar8 == (undefined4 *)0x0) {
    puVar8 = (undefined4 *)0x0;
  }
  else {
    *puVar8 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::kleene_star<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar8[1] = piVar3;
    puVar8[2] = param_1 + 0x108;
  }
  puVar5 = *(undefined4 **)(param_1 + 0x134);
  *(undefined4 **)(param_1 + 0x134) = puVar8;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  uStack_a8 = (int *)(param_1 + 0x188);
  local_b8 = (int *)CONCAT31(local_b8._1_3_,0x3c);
  pwStack_70 = (wchar_t *)(param_1 + 0x130);
  apiStack_80[1] = local_b8;
  uStack_68 = CONCAT31(uStack_68._1_3_,0x3e);
  apiStack_80[0] = piVar3;
  psStack_78 = (short *)(param_1 + 0xb0);
  uStack_74 = uStack_a8;
  piStack_6c = piVar3;
  ppiVar9 = (int **)operator_new(0x20);
  if (ppiVar9 == (int **)0x0) {
    ppiVar9 = (int **)0x0;
  }
  else {
    *ppiVar9 = (int *)boost::spirit::classic::impl::
                      concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<char>_>,class_boost::spirit::classic::action<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spiri...::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
                      ::vftable;
    ppiVar14 = apiStack_80;
    ppiVar15 = ppiVar9;
    for (iVar12 = 7; ppiVar15 = ppiVar15 + 1, iVar12 != 0; iVar12 = iVar12 + -1) {
      *ppiVar15 = *ppiVar14;
      ppiVar14 = ppiVar14 + 1;
    }
  }
  puVar8 = *(undefined4 **)(param_1 + 0x14);
  *(int ***)(param_1 + 0x14) = ppiVar9;
  if (puVar8 != (undefined4 *)0x0) {
    (**(code **)*puVar8)(1);
  }
  psStack_78 = (short *)0xd248b0;
  do {
    psStack_78 = (short *)((int)psStack_78 + 1);
  } while (*(char *)psStack_78 != '\0');
  apiStack_80[0] = (int *)(param_1 + 0x138);
  uStack_74 = (int *)(param_1 + 0xb0);
  uStack_a4 = (wchar_t *)(param_1 + 0x188);
  apiStack_80[1] = (int *)&DAT_00d248b0;
  uStack_68 = CONCAT31(uStack_68._1_3_,0x3e);
  pwStack_70 = uStack_a4;
  piStack_6c = apiStack_80[0];
  iStack_40 = (int)uStack_74;
  ppiVar9 = (int **)operator_new(0x20);
  if (ppiVar9 == (int **)0x0) {
    ppiVar9 = (int **)0x0;
  }
  else {
    *ppiVar9 = (int *)boost::spirit::classic::impl::
                      concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::optional<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::strlit<char_const*>_>,class_boost::spirit::classic::action<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,stru...::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
                      ::vftable;
    ppiVar14 = apiStack_80;
    ppiVar15 = ppiVar9;
    for (iVar12 = 7; ppiVar15 = ppiVar15 + 1, iVar12 != 0; iVar12 = iVar12 + -1) {
      *ppiVar15 = *ppiVar14;
      ppiVar14 = ppiVar14 + 1;
    }
  }
  puVar8 = *(undefined4 **)(param_1 + 0x1c);
  *(int ***)(param_1 + 0x1c) = ppiVar9;
  if (puVar8 != (undefined4 *)0x0) {
    (**(code **)*puVar8)(1);
  }
  uVar7 = FUN_0083ae50(&uStack_88,&DAT_00d25018);
  local_c._0_1_ = 0x36;
  uVar7 = FUN_0083b190(local_4c,DAT_032bcb18,uVar7);
  local_c._0_1_ = 0x37;
  uVar7 = FUN_0083b1c0(&local_bc,uVar7);
  local_c._0_1_ = 0x38;
  FUN_0083b900(uVar7);
  piVar3 = local_b8;
  local_c._0_1_ = 0x37;
  if (local_b8 != (int *)0x0) {
    LOCK();
    iVar12 = local_b8[1] + -1;
    local_b8[1] = iVar12;
    UNLOCK();
    if (iVar12 == 0) {
      (**(code **)(*local_b8 + 4))();
      piVar2 = piVar3 + 2;
      LOCK();
      iVar12 = *piVar2 + -1;
      *piVar2 = iVar12;
      UNLOCK();
      if (iVar12 == 0) {
        (**(code **)(*piVar3 + 8))();
      }
    }
  }
  local_c._0_1_ = 0x36;
  if (local_4c[1] != (int *)0x0) {
    LOCK();
    iVar12 = local_4c[1][1] + -1;
    local_4c[1][1] = iVar12;
    UNLOCK();
    if (iVar12 == 0) {
      (**(code **)(*local_4c[1] + 4))();
      LOCK();
      iVar12 = local_4c[1][2] + -1;
      local_4c[1][2] = iVar12;
      UNLOCK();
      if (iVar12 == 0) {
        (**(code **)(*local_4c[1] + 8))();
      }
    }
  }
  piVar3 = piStack_84;
  local_c = CONCAT31(local_c._1_3_,0x31);
  if (piStack_84 != (int *)0x0) {
    LOCK();
    iVar12 = piStack_84[1] + -1;
    piStack_84[1] = iVar12;
    UNLOCK();
    if (iVar12 == 0) {
      (**(code **)(*piStack_84 + 4))();
      piVar2 = piVar3 + 2;
      LOCK();
      iVar12 = *piVar2 + -1;
      *piVar2 = iVar12;
      UNLOCK();
      if (iVar12 == 0) {
        (**(code **)(*piVar3 + 8))();
      }
    }
  }
  puVar8 = (undefined4 *)operator_new(0xc);
  if (puVar8 == (undefined4 *)0x0) {
    puVar8 = (undefined4 *)0x0;
  }
  else {
    *puVar8 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,struct_boost::archive::xml::append_string<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,class_std::_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar8[1] = param_1 + 0x78;
    puVar8[2] = param_1 + 0x1a4;
  }
  puVar5 = *(undefined4 **)(param_1 + 0x74);
  *(undefined4 **)(param_1 + 0x74) = puVar8;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  pwStack_b0 = (wchar_t *)&DAT_00d25010;
  do {
    pwStack_b0 = pwStack_b0 + 1;
  } while (*pwStack_b0 != 0);
  piStack_b4 = (int *)&DAT_00d25010;
  uStack_ac = (wchar_t *)uStack_88;
  uStack_a4._0_2_ = 0x3b;
  uStack_a8 = (int *)(param_1 + 0x1a4);
  FUN_00835190(&piStack_b4);
  pwStack_b0 = (wchar_t *)&DAT_00d25008;
  do {
    pwStack_b0 = pwStack_b0 + 1;
  } while (*pwStack_b0 != 0);
  uStack_a8 = (int *)(param_1 + 0x1a4);
  piStack_b4 = (int *)&DAT_00d25008;
  uStack_ac = (wchar_t *)uStack_88;
  uStack_a4 = (wchar_t *)CONCAT22(uStack_a4._2_2_,0x3b);
  FUN_008351f0(&piStack_b4);
  puVar8 = (undefined4 *)operator_new(0xc);
  if (puVar8 == (undefined4 *)0x0) {
    puVar8 = (undefined4 *)0x0;
  }
  else {
    *puVar8 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::alternative<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar8[1] = param_1 + 0x30;
    puVar8[2] = param_1 + 0x38;
  }
  puVar5 = *(undefined4 **)(param_1 + 0x44);
  *(undefined4 **)(param_1 + 0x44) = puVar8;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  psVar10 = &DAT_00d247fc;
  do {
    psVar10 = psVar10 + 1;
  } while (*psVar10 != 0);
  puVar8 = (undefined4 *)operator_new(0x10);
  if (puVar8 == (undefined4 *)0x0) {
    puVar8 = (undefined4 *)0x0;
  }
  else {
    puVar8[1] = &DAT_00d247fc;
    puVar8[2] = psVar10;
    *puVar8 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::archive::xml::append_lit<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,38>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar8[3] = param_1 + 0x1a4;
  }
  puVar5 = *(undefined4 **)(param_1 + 0x4c);
  *(undefined4 **)(param_1 + 0x4c) = puVar8;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  psVar10 = &DAT_00d24814;
  do {
    psVar10 = psVar10 + 1;
  } while (*psVar10 != 0);
  puVar8 = (undefined4 *)operator_new(0x10);
  if (puVar8 == (undefined4 *)0x0) {
    puVar8 = (undefined4 *)0x0;
  }
  else {
    puVar8[1] = &DAT_00d24814;
    puVar8[2] = psVar10;
    *puVar8 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::archive::xml::append_lit<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,60>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar8[3] = param_1 + 0x1a4;
  }
  puVar5 = *(undefined4 **)(param_1 + 0x54);
  *(undefined4 **)(param_1 + 0x54) = puVar8;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  psVar10 = &DAT_00d24808;
  do {
    psVar10 = psVar10 + 1;
  } while (*psVar10 != 0);
  puVar8 = (undefined4 *)operator_new(0x10);
  if (puVar8 == (undefined4 *)0x0) {
    puVar8 = (undefined4 *)0x0;
  }
  else {
    puVar8[1] = &DAT_00d24808;
    puVar8[2] = psVar10;
    *puVar8 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::archive::xml::append_lit<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,62>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar8[3] = param_1 + 0x1a4;
  }
  puVar5 = *(undefined4 **)(param_1 + 0x5c);
  *(undefined4 **)(param_1 + 0x5c) = puVar8;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  psVar10 = &DAT_00d247dc;
  do {
    psVar10 = psVar10 + 1;
  } while (*psVar10 != 0);
  puVar8 = (undefined4 *)operator_new(0x10);
  if (puVar8 == (undefined4 *)0x0) {
    puVar8 = (undefined4 *)0x0;
  }
  else {
    puVar8[1] = &DAT_00d247dc;
    puVar8[2] = psVar10;
    *puVar8 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::archive::xml::append_lit<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,39>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar8[3] = param_1 + 0x1a4;
  }
  puVar5 = *(undefined4 **)(param_1 + 100);
  *(undefined4 **)(param_1 + 100) = puVar8;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  psVar10 = &DAT_00d247ec;
  do {
    psVar10 = psVar10 + 1;
  } while (*psVar10 != 0);
  puVar8 = (undefined4 *)operator_new(0x10);
  if (puVar8 == (undefined4 *)0x0) {
    puVar8 = (undefined4 *)0x0;
  }
  else {
    puVar8[1] = &DAT_00d247ec;
    puVar8[2] = psVar10;
    *puVar8 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::archive::xml::append_lit<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,34>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar8[3] = param_1 + 0x1a4;
  }
  puVar5 = *(undefined4 **)(param_1 + 0x6c);
  *(undefined4 **)(param_1 + 0x6c) = puVar8;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  pwStack_b0 = (wchar_t *)(param_1 + 0x50);
  piStack_b4 = (int *)(param_1 + 0x48);
  uStack_ac = (wchar_t *)(param_1 + 0x58);
  uStack_a0 = (short *)(param_1 + 0x40);
  uStack_a8 = (int *)(param_1 + 0x60);
  uStack_a4 = (wchar_t *)(param_1 + 0x68);
  FUN_00835250(&piStack_b4);
  uStack_a0 = (short *)&DAT_00d25004;
  do {
    uStack_a0 = uStack_a0 + 1;
  } while (*uStack_a0 != 0);
  uStack_a8 = (int *)(param_1 + 0x70);
  pwStack_b0 = (wchar_t *)&DAT_00d25004;
  do {
    pwStack_b0 = (wchar_t *)((int)pwStack_b0 + 2);
  } while (*pwStack_b0 != 0);
  piStack_b4 = (int *)&DAT_00d25004;
  uStack_a4 = (wchar_t *)&DAT_00d25004;
  uStack_ac = (wchar_t *)param_1;
  FUN_008352b0(&piStack_b4);
  apiStack_80[0] = (int *)FUN_0083e760();
  cVar4 = *(char *)apiStack_80[0];
  apiStack_80[1] = apiStack_80[0];
  while (cVar4 != '\0') {
    apiStack_80[1] = (int *)((int)apiStack_80[1] + 1);
    cVar4 = *(char *)apiStack_80[1];
  }
  uStack_a4 = (wchar_t *)CONCAT22(uStack_a4._2_2_,0x22);
  pwStack_70 = uStack_a4;
  piStack_6c = (int *)uStack_88;
  psStack_78 = (short *)(param_1 + 0x128);
  uStack_74 = (int *)(param_1 + 8);
  uStack_68 = param_1 + 0x1c0;
  ppiVar9 = apiStack_80;
  ppiVar15 = &piStack_b4;
  for (iVar12 = 7; iVar12 != 0; iVar12 = iVar12 + -1) {
    *ppiVar15 = *ppiVar9;
    ppiVar9 = ppiVar9 + 1;
    ppiVar15 = ppiVar15 + 1;
  }
  uStack_98 = (undefined *)CONCAT22(uStack_98._2_2_,0x22);
  ppiVar9 = (int **)operator_new(0x24);
  if (ppiVar9 == (int **)0x0) {
    ppiVar9 = (int **)0x0;
  }
  else {
    *ppiVar9 = (int *)boost::spirit::classic::impl::
                      concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<class_boost::spirit::classic::strlit<char_const*>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::action<struct_boost::spirit::classic::int_parser<int,10,1,-1>,struct_boost::archive::xml::assign_impl<short>_>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
                      ::vftable;
    ppiVar14 = &piStack_b4;
    ppiVar15 = ppiVar9;
    for (iVar12 = 8; ppiVar15 = ppiVar15 + 1, iVar12 != 0; iVar12 = iVar12 + -1) {
      *ppiVar15 = *ppiVar14;
      ppiVar14 = ppiVar14 + 1;
    }
  }
  puVar8 = *(undefined4 **)(param_1 + 0xdc);
  *(int ***)(param_1 + 0xdc) = ppiVar9;
  if (puVar8 != (undefined4 *)0x0) {
    (**(code **)*puVar8)(1);
  }
  pcVar11 = (char *)FUN_0083e750();
  cVar4 = *pcVar11;
  pcVar13 = pcVar11;
  while (cVar4 != '\0') {
    pcVar13 = pcVar13 + 1;
    cVar4 = *pcVar13;
  }
  apiStack_80[0] = (int *)FUN_0083e740();
  uVar7 = uStack_88;
  cVar4 = *(char *)apiStack_80[0];
  apiStack_80[1] = apiStack_80[0];
  while (cVar4 != '\0') {
    apiStack_80[1] = (int *)((int)apiStack_80[1] + 1);
    cVar4 = *(char *)apiStack_80[1];
  }
  uStack_74 = (int *)pcVar13;
  piStack_6c = (int *)(param_1 + 8);
  pwStack_70 = (wchar_t *)(param_1 + 0x128);
  psStack_78 = (short *)pcVar11;
  uStack_68 = CONCAT22(uStack_68._2_2_,0x22);
  ppiVar9 = apiStack_80;
  ppiVar15 = &piStack_b4;
  for (iVar12 = 7; iVar12 != 0; iVar12 = iVar12 + -1) {
    *ppiVar15 = *ppiVar9;
    ppiVar9 = ppiVar9 + 1;
    ppiVar15 = ppiVar15 + 1;
  }
  uStack_98 = (undefined *)CONCAT22(uStack_98._2_2_,0x5f);
  ppiVar9 = &piStack_b4;
  ppiVar15 = apiStack_80;
  for (iVar12 = 8; iVar12 != 0; iVar12 = iVar12 + -1) {
    *ppiVar15 = *ppiVar9;
    ppiVar9 = ppiVar9 + 1;
    ppiVar15 = ppiVar15 + 1;
  }
  iStack_5c = param_1 + 0x1c4;
  uStack_60 = uVar7;
  ppiVar9 = apiStack_80;
  ppiVar15 = &piStack_b4;
  for (iVar12 = 10; iVar12 != 0; iVar12 = iVar12 + -1) {
    *ppiVar15 = *ppiVar9;
    ppiVar9 = ppiVar9 + 1;
    ppiVar15 = ppiVar15 + 1;
  }
  uStack_8c = (int *)CONCAT22(uStack_8c._2_2_,0x22);
  ppiVar9 = (int **)operator_new(0x30);
  if (ppiVar9 == (int **)0x0) {
    ppiVar9 = (int **)0x0;
  }
  else {
    *ppiVar9 = (int *)boost::spirit::classic::impl::
                      concrete_parser<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::sequence<struct_boost::spirit::classic::alternative<class_boost::spirit::classic::strlit<char_const*>,class_boost::spirit::classic::strlit<char_const*>_>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::action<struct_boost::spirit::classic::uint_parser<unsigned_int,10,1,-1>,struct_boost::archive::xml::assign_impl<unsigned_int>_>_>,struct_boost::spirit::classic::chlit<wchar_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
                      ::vftable;
    ppiVar14 = &piStack_b4;
    ppiVar15 = ppiVar9;
    for (iVar12 = 0xb; ppiVar15 = ppiVar15 + 1, iVar12 != 0; iVar12 = iVar12 + -1) {
      *ppiVar15 = *ppiVar14;
      ppiVar14 = ppiVar14 + 1;
    }
  }
  puVar8 = *(undefined4 **)(param_1 + 0xe4);
  *(int ***)(param_1 + 0xe4) = ppiVar9;
  if (puVar8 != (undefined4 *)0x0) {
    (**(code **)*puVar8)(1);
  }
  psVar10 = &DAT_00d247fc;
  do {
    psVar10 = psVar10 + 1;
  } while (*psVar10 != 0);
  puVar8 = (undefined4 *)operator_new(0x10);
  if (puVar8 == (undefined4 *)0x0) {
    puVar8 = (undefined4 *)0x0;
  }
  else {
    puVar8[1] = &DAT_00d247fc;
    puVar8[2] = psVar10;
    *puVar8 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::archive::xml::append_lit<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,38>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar8[3] = param_1 + 0x1d0;
  }
  puVar5 = *(undefined4 **)(param_1 + 0x8c);
  *(undefined4 **)(param_1 + 0x8c) = puVar8;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  psVar10 = &DAT_00d24814;
  do {
    psVar10 = psVar10 + 1;
  } while (*psVar10 != 0);
  puVar8 = (undefined4 *)operator_new(0x10);
  if (puVar8 == (undefined4 *)0x0) {
    puVar8 = (undefined4 *)0x0;
  }
  else {
    puVar8[1] = &DAT_00d24814;
    puVar8[2] = psVar10;
    *puVar8 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::archive::xml::append_lit<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,60>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar8[3] = param_1 + 0x1d0;
  }
  puVar5 = *(undefined4 **)(param_1 + 0x94);
  *(undefined4 **)(param_1 + 0x94) = puVar8;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  psVar10 = &DAT_00d24808;
  do {
    psVar10 = psVar10 + 1;
  } while (*psVar10 != 0);
  puVar8 = (undefined4 *)operator_new(0x10);
  if (puVar8 == (undefined4 *)0x0) {
    puVar8 = (undefined4 *)0x0;
  }
  else {
    puVar8[1] = &DAT_00d24808;
    puVar8[2] = psVar10;
    *puVar8 = boost::spirit::classic::impl::
              concrete_parser<class_boost::spirit::classic::action<class_boost::spirit::classic::strlit<wchar_t_const*>,struct_boost::archive::xml::append_lit<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>,62>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar8[3] = param_1 + 0x1d0;
  }
  puVar5 = *(undefined4 **)(param_1 + 0x9c);
  *(undefined4 **)(param_1 + 0x9c) = puVar8;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  uVar7 = FUN_0083ae50(&local_bc,&DAT_00d25000);
  local_c._0_1_ = 0x39;
  FUN_0083b190(&uStack_88,DAT_032bcb18,uVar7);
  local_4c[0] = (int *)(param_1 + 0x1d0);
  local_c._0_1_ = 0x3a;
  uVar7 = FUN_0083b1e0(&piStack_b4,local_4c);
  local_4c[0] = (int *)(param_1 + 0x88);
  local_4c[1] = (int *)(param_1 + 0x90);
  local_c._0_1_ = 0x3b;
  iStack_44 = param_1 + 0x98;
  uVar7 = FUN_0083ba00(apiStack_80,local_4c,uVar7);
  local_c._0_1_ = 0x3c;
  FUN_0083bcf0(uVar7);
  piVar3 = (int *)pwStack_70;
  local_c._0_1_ = 0x3b;
  if ((int *)pwStack_70 != (int *)0x0) {
    LOCK();
    iVar12 = *(int *)((int)pwStack_70 + 4) + -1;
    *(int *)((int)pwStack_70 + 4) = iVar12;
    UNLOCK();
    if (iVar12 == 0) {
      (**(code **)(*(int *)pwStack_70 + 4))();
      piVar2 = piVar3 + 2;
      LOCK();
      iVar12 = *piVar2 + -1;
      *piVar2 = iVar12;
      UNLOCK();
      if (iVar12 == 0) {
        (**(code **)(*piVar3 + 8))();
      }
    }
  }
  piVar3 = (int *)pwStack_b0;
  local_c._0_1_ = 0x3a;
  if ((int *)pwStack_b0 != (int *)0x0) {
    LOCK();
    iVar12 = *(int *)((int)pwStack_b0 + 4) + -1;
    *(int *)((int)pwStack_b0 + 4) = iVar12;
    UNLOCK();
    if (iVar12 == 0) {
      (**(code **)(*(int *)pwStack_b0 + 4))();
      piVar2 = piVar3 + 2;
      LOCK();
      iVar12 = *piVar2 + -1;
      *piVar2 = iVar12;
      UNLOCK();
      if (iVar12 == 0) {
        (**(code **)(*piVar3 + 8))();
      }
    }
  }
  local_c._0_1_ = 0x39;
  if (piStack_84 != (int *)0x0) {
    LOCK();
    iVar12 = piStack_84[1] + -1;
    piStack_84[1] = iVar12;
    UNLOCK();
    if (iVar12 == 0) {
      (**(code **)(*piStack_84 + 4))();
      LOCK();
      iVar12 = piStack_84[2] + -1;
      piStack_84[2] = iVar12;
      UNLOCK();
      if (iVar12 == 0) {
        (**(code **)(*piStack_84 + 8))();
      }
    }
  }
  piVar3 = local_b8;
  local_c = CONCAT31(local_c._1_3_,0x31);
  if (local_b8 != (int *)0x0) {
    LOCK();
    iVar12 = local_b8[1] + -1;
    local_b8[1] = iVar12;
    UNLOCK();
    if (iVar12 == 0) {
      (**(code **)(*local_b8 + 4))();
      piVar2 = piVar3 + 2;
      LOCK();
      iVar12 = *piVar2 + -1;
      *piVar2 = iVar12;
      UNLOCK();
      if (iVar12 == 0) {
        (**(code **)(*piVar3 + 8))();
      }
    }
  }
  puVar8 = (undefined4 *)operator_new(8);
  if (puVar8 == (undefined4 *)0x0) {
    puVar8 = (undefined4 *)0x0;
  }
  else {
    *puVar8 = boost::spirit::classic::impl::
              concrete_parser<struct_boost::spirit::classic::kleene_star<class_boost::spirit::classic::rule<class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t,struct_boost::spirit::classic::nil_t>_>,class_boost::spirit::classic::scanner<class_std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>,struct_boost::spirit::classic::scanner_policies<struct_boost::spirit::classic::iteration_policy,struct_boost::spirit::classic::match_policy,struct_boost::spirit::classic::action_policy>_>,struct_boost::spirit::classic::nil_t>
              ::vftable;
    puVar8[1] = param_1 + 0xa0;
  }
  puVar5 = *(undefined4 **)(param_1 + 0xac);
  *(undefined4 **)(param_1 + 0xac) = puVar8;
  if (puVar5 != (undefined4 *)0x0) {
    (**(code **)*puVar5)(1);
  }
  piStack_b4 = (int *)FUN_0083e780();
  cVar4 = *(char *)piStack_b4;
  pwStack_b0 = (wchar_t *)piStack_b4;
  while (cVar4 != '\0') {
    pwStack_b0 = (wchar_t *)((int)pwStack_b0 + 1);
    cVar4 = *(char *)pwStack_b0;
  }
  uStack_ac = (wchar_t *)(param_1 + 8);
  uStack_a8._0_2_ = 0x22;
  uStack_a4 = (wchar_t *)(param_1 + 0xa8);
  uStack_a0 = (short *)CONCAT22(uStack_a0._2_2_,0x22);
  FUN_00835310(&piStack_b4);
  apiStack_80[0] = (int *)FUN_0083e790();
  cVar4 = *(char *)apiStack_80[0];
  apiStack_80[1] = apiStack_80[0];
  while (cVar4 != '\0') {
    apiStack_80[1] = (int *)((int)apiStack_80[1] + 1);
    cVar4 = *(char *)apiStack_80[1];
  }
  pwStack_70 = (wchar_t *)uStack_88;
  psStack_78 = (short *)(param_1 + 8);
  uStack_a8._0_2_ = 0x22;
  piStack_6c = (int *)(param_1 + 0x1cc);
  uStack_74._0_2_ = 0x22;
  uStack_74._2_2_ = uStack_a8._2_2_;
  uStack_68._0_2_ = 0x22;
  FUN_00835370(apiStack_80);
  apiStack_80[0] = (int *)FUN_0083e7a0();
  cVar4 = *(char *)apiStack_80[0];
  apiStack_80[1] = apiStack_80[0];
  while (cVar4 != '\0') {
    apiStack_80[1] = (int *)((int)apiStack_80[1] + 1);
    cVar4 = *(char *)apiStack_80[1];
  }
  uStack_a8 = (int *)CONCAT22(uStack_a8._2_2_,0x22);
  uStack_74 = uStack_a8;
  piStack_6c = (int *)(param_1 + 0x1c8);
  pwStack_70 = (wchar_t *)uStack_88;
  uStack_68 = CONCAT22(uStack_68._2_2_,0x22);
  psStack_78 = (short *)(param_1 + 8);
  FUN_008353c0(apiStack_80);
  uStack_ac = (wchar_t *)CONCAT22(uStack_ac._2_2_,0x22);
  piStack_b4 = (int *)(param_1 + 0xb0);
  uStack_a8 = (int *)(param_1 + 0x70);
  uStack_a4 = (wchar_t *)CONCAT22(uStack_a4._2_2_,0x22);
  pwStack_b0 = (wchar_t *)(param_1 + 8);
  FUN_00835410(&piStack_b4);
  local_4c[1] = (int *)(param_1 + 0xe0);
  local_4c[0] = (int *)(param_1 + 0xd8);
  uStack_ac = (wchar_t *)(param_1 + 0xe8);
  iStack_40 = param_1 + 0xf0;
  iStack_44 = (int)uStack_ac;
  iStack_3c = param_1 + 0xf8;
  piStack_38 = (int *)(param_1 + 0x100);
  FUN_00835250(local_4c);
  uVar7 = FUN_0083ae50(local_4c,&DAT_00d24ff8);
  local_c._0_1_ = 0x3d;
  uVar7 = FUN_0083b190(&local_bc,DAT_032bcb18,uVar7);
  local_c._0_1_ = 0x3e;
  uVar7 = FUN_0083b1c0(&uStack_88,uVar7);
  local_c._0_1_ = 0x3f;
  FUN_0083b980(uVar7);
  local_c._0_1_ = 0x3e;
  FUN_00835780();
  local_c._0_1_ = 0x3d;
  FUN_00835780();
  local_c = CONCAT31(local_c._1_3_,0x31);
  FUN_00835780();
  psVar10 = (short *)&DAT_00d24ff8;
  do {
    psVar10 = psVar10 + 1;
  } while (*psVar10 != 0);
  local_bc = (short *)&DAT_00d24fec;
  do {
    local_bc = local_bc + 1;
  } while (*local_bc != 0);
  local_4c[0] = (int *)0xd24fdc;
  do {
    local_4c[0] = (int *)((int)local_4c[0] + 2);
  } while (*(wchar_t *)local_4c[0] != L'\0');
  uStack_ac = (wchar_t *)&DAT_00d24fd0;
  do {
    uStack_ac = uStack_ac + 1;
  } while (*uStack_ac != 0);
  apiStack_80[1] = (int *)&DAT_00d24fd0;
  psStack_78 = uStack_ac;
  piVar3 = (int *)(param_1 + 0x138);
  uStack_74 = piVar3;
  uStack_a4 = L"version";
  pwStack_70 = L"version";
  piStack_6c = local_4c[0];
  apiStack_80[0] = piVar3;
  uStack_68 = param_1 + 8;
  ppiVar9 = apiStack_80;
  ppiVar15 = &piStack_b4;
  for (iVar12 = 7; iVar12 != 0; iVar12 = iVar12 + -1) {
    *ppiVar15 = *ppiVar9;
    ppiVar9 = ppiVar9 + 1;
    ppiVar15 = ppiVar15 + 1;
  }
  uStack_98 = &DAT_00d24fec;
  psStack_94 = local_bc;
  ppiVar9 = &piStack_b4;
  ppiVar15 = apiStack_80;
  for (iVar12 = 9; iVar12 != 0; iVar12 = iVar12 + -1) {
    *ppiVar15 = *ppiVar9;
    ppiVar9 = ppiVar9 + 1;
    ppiVar15 = ppiVar15 + 1;
  }
  iStack_5c = param_1 + 0xc0;
  ppiVar9 = apiStack_80;
  ppiVar15 = &piStack_b4;
  for (iVar12 = 10; iVar12 != 0; iVar12 = iVar12 + -1) {
    *ppiVar15 = *ppiVar9;
    ppiVar9 = ppiVar9 + 1;
    ppiVar15 = ppiVar15 + 1;
  }
  uStack_8c = piVar3;
  ppiVar9 = &piStack_b4;
  ppiVar15 = apiStack_80;
  for (iVar12 = 0xb; iVar12 != 0; iVar12 = iVar12 + -1) {
    *ppiVar15 = *ppiVar9;
    ppiVar9 = ppiVar9 + 1;
    ppiVar15 = ppiVar15 + 1;
  }
  puStack_54 = &DAT_00d24ff8;
  psStack_50 = psVar10;
  FUN_00835470(apiStack_80);
  uVar7 = FUN_0083ae50(local_4c,&DAT_00d24fcc);
  local_c._0_1_ = 0x40;
  uVar7 = FUN_0083b190(&local_bc,DAT_032bcb18,uVar7);
  local_c._0_1_ = 0x41;
  uVar7 = FUN_0083b1c0(&uStack_88,uVar7);
  local_c._0_1_ = 0x42;
  FUN_0083b980(uVar7);
  local_c._0_1_ = 0x41;
  FUN_00835780();
  local_c._0_1_ = 0x40;
  FUN_00835780();
  local_c = CONCAT31(local_c._1_3_,0x31);
  FUN_00835780();
  uStack_ac = L"<!DOCTYPE";
  do {
    uStack_ac = uStack_ac + 1;
  } while (*uStack_ac != L'\0');
  piStack_b4 = (int *)(param_1 + 0x138);
  pwStack_b0 = L"<!DOCTYPE";
  uStack_a8 = (int *)(param_1 + 0xd0);
  uStack_a4 = (wchar_t *)CONCAT22(uStack_a4._2_2_,0x3e);
  FUN_008354c0(&piStack_b4);
  pwStack_b0 = L"signature";
  do {
    pwStack_b0 = pwStack_b0 + 1;
  } while (*pwStack_b0 != L'\0');
  uStack_a8 = (int *)CONCAT22(uStack_a8._2_2_,0x22);
  uStack_ac = (wchar_t *)(param_1 + 8);
  uStack_a4 = (wchar_t *)(param_1 + 0xb0);
  uStack_a0 = (short *)(param_1 + 0x1d0);
  piStack_b4 = (int *)0xd24fa4;
  uStack_9c = 0x22;
  pwStack_70 = uStack_a4;
  FUN_00835520(&piStack_b4);
  local_4c[1] = (int *)(param_1 + 0x138);
  iStack_44 = param_1 + 0xf8;
  uStack_ac = L"<boost_serialization";
  do {
    uStack_ac = uStack_ac + 1;
  } while (*uStack_ac != L'\0');
  pwStack_b0 = L"<boost_serialization";
  piVar3 = (int *)(param_1 + 0x138);
  piStack_b4 = piVar3;
  uStack_a8 = piVar3;
  local_4c[0] = (int *)(param_1 + 0x110);
  iStack_40 = iStack_44;
  iStack_3c = (int)local_4c[1];
  piStack_38 = (int *)(param_1 + 0x110);
  ppiVar9 = (int **)FUN_00835c90(apiStack_80,&piStack_b4,local_4c);
  ppiVar15 = &piStack_b4;
  for (iVar12 = 10; iVar12 != 0; iVar12 = iVar12 + -1) {
    *ppiVar15 = *ppiVar9;
    ppiVar9 = ppiVar9 + 1;
    ppiVar15 = ppiVar15 + 1;
  }
  uStack_8c = piVar3;
  ppiVar9 = &piStack_b4;
  ppiVar15 = local_4c;
  for (iVar12 = 0xb; iVar12 != 0; iVar12 = iVar12 + -1) {
    *ppiVar15 = *ppiVar9;
    ppiVar9 = ppiVar9 + 1;
    ppiVar15 = ppiVar15 + 1;
  }
  uStack_20 = 0x3e;
  FUN_00835570(local_4c);
  ExceptionList = local_14;
  return param_1;
}



int * __thiscall
FUN_0083d040(int *param_1_00,int param_1,char *param_2,undefined4 param_3,int param_4)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc49bb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  if (param_4 != 0) {
    *param_1_00 = (int)&DAT_00d246cc;
    param_1_00[5] = (int)&PTR_00d246c4;
    FUN_00a3f1a9(uVar1);
    local_4 = 0;
    FUN_00832e60(1,param_2,param_3,0);
    local_4 = 1;
  }
  *(undefined ***)((int)param_1_00 + *(int *)(*param_1_00 + 4)) =
       boost::archive::xml_archive_exception::vftable;
  *(int *)(*(int *)(*param_1_00 + 4) + -4 + (int)param_1_00) = *(int *)(*param_1_00 + 4) + -8;
  if (param_1 == 0) {
    param_2 = "unrecognized XML syntax";
  }
  else {
    if (param_1 == 1) {
      uVar2 = FUN_00832e20(0,"XML start/end tag mismatch");
      if (param_2 == (char *)0x0) {
        ExceptionList = local_c;
        return param_1_00;
      }
      uVar2 = FUN_00832e20(uVar2,&DAT_00d24ba4);
      goto LAB_0083d148;
    }
    if (param_1 == 2) {
      param_2 = "Invalid XML tag name";
    }
    else {
      param_2 = "programming error";
    }
  }
  uVar2 = 0;
LAB_0083d148:
  FUN_00832e20(uVar2,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_0083d170(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar4 = (undefined4 *)(*(undefined4 **)(param_1_00 + 0x18))[1];
  cVar2 = *(char *)((int)puVar4 + 0x11);
  puVar1 = *(undefined4 **)(param_1_00 + 0x18);
  while (cVar2 == '\0') {
    cVar2 = FUN_00830f20(*(undefined4 *)*param_1);
    if (cVar2 == '\0') {
      puVar3 = (undefined4 *)*puVar4;
    }
    else {
      puVar3 = (undefined4 *)puVar4[2];
      puVar4 = puVar1;
    }
    puVar1 = puVar4;
    puVar4 = puVar3;
    cVar2 = *(char *)((int)puVar3 + 0x11);
  }
  return puVar1;
}



void __thiscall FUN_0083d1b0(int *param_1_00,int *param_1,undefined4 param_2)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  iVar3 = FUN_0083d170(param_2);
  local_c = iVar3;
  if (param_1_00 == (int *)0x0) {
    FUN_00a3fb10();
  }
  iVar1 = param_1_00[6];
  local_10 = *param_1_00;
  if (*param_1_00 == 0) {
    FUN_00a3fb10();
  }
  if ((iVar3 == iVar1) || (cVar2 = FUN_00830f20(**(undefined4 **)(iVar3 + 0xc)), cVar2 != '\0')) {
    local_4 = param_1_00[6];
    local_8 = *param_1_00;
    piVar4 = &local_8;
  }
  else {
    piVar4 = &local_10;
  }
  iVar3 = piVar4[1];
  *param_1 = *piVar4;
  param_1[1] = iVar3;
  return;
}



int __thiscall FUN_0083d230(int **param_1_00,undefined4 param_1)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  int **ppiVar4;
  int iVar5;
  undefined4 *local_c;
  undefined local_8 [8];
  
  local_c = &param_1;
  ppiVar4 = (int **)FUN_0083d1b0(local_8,&local_c);
  piVar1 = *ppiVar4;
  piVar2 = param_1_00[6];
  piVar3 = ppiVar4[1];
  if ((piVar1 == (int *)0x0) || (piVar1 != *param_1_00)) {
    FUN_00a3fb10();
  }
  if (piVar3 == piVar2) {
    return 0;
  }
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar5 = 0;
  }
  else {
    iVar5 = *piVar1;
  }
  if (piVar3 == *(int **)(iVar5 + 0x18)) {
    FUN_00a3fb10();
  }
  return piVar3[3];
}



void __thiscall FUN_0083d2b0(int **param_1_00,int param_1)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  int iVar4;
  undefined local_10 [12];
  
  piVar1 = param_1_00[6];
  piVar2 = *param_1_00;
  piVar3 = (int *)*piVar1;
  while( true ) {
    if (piVar2 == (int *)0x0) {
      FUN_00a3fb10();
    }
    if (piVar3 == piVar1) break;
    if (piVar2 == (int *)0x0) {
      FUN_00a3fb10();
      iVar4 = 0;
    }
    else {
      iVar4 = *piVar2;
    }
    if (piVar3 == (int *)*(int *)(iVar4 + 0x18)) {
      FUN_00a3fb10();
    }
    if (piVar3[3] == param_1) {
      FUN_0082eba0();
      FUN_0083d8e0(local_10,piVar2,piVar3);
    }
    else {
      FUN_0082eba0();
    }
  }
  return;
}



void __thiscall FUN_0083d350(int *param_1_00,int *param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  char cVar4;
  char cVar5;
  int *piVar6;
  undefined4 *puVar7;
  int local_8;
  undefined4 *local_4;
  
  puVar1 = (undefined4 *)((undefined4 *)param_1_00[6])[1];
  cVar4 = '\x01';
  cVar5 = *(char *)((int)puVar1 + 0x11);
  puVar3 = (undefined4 *)param_1_00[6];
  while (cVar5 == '\0') {
    cVar4 = FUN_00830f20(*(undefined4 *)puVar1[3]);
    if (cVar4 == '\0') {
      puVar7 = (undefined4 *)puVar1[2];
    }
    else {
      puVar7 = (undefined4 *)*puVar1;
    }
    puVar3 = puVar1;
    puVar1 = puVar7;
    cVar5 = *(char *)((int)puVar7 + 0x11);
  }
  local_8 = *param_1_00;
  local_4 = puVar3;
  if (cVar4 != '\0') {
    puVar1 = *(undefined4 **)param_1_00[6];
    if (local_8 == 0) {
      FUN_00a3fb10();
    }
    if (puVar3 == puVar1) {
      cVar4 = '\x01';
      goto LAB_0083d3c1;
    }
    FUN_0083d570();
  }
  puVar1 = local_4;
  cVar5 = FUN_00830f20(*(undefined4 *)*param_2);
  if (cVar5 == '\0') {
    param_1[1] = (int)puVar1;
    *(undefined *)(param_1 + 2) = 0;
    *param_1 = local_8;
    return;
  }
LAB_0083d3c1:
  piVar6 = (int *)FUN_0082f300(&local_8,cVar4,puVar3,param_2);
  iVar2 = *piVar6;
  param_1[1] = piVar6[1];
  *(undefined *)(param_1 + 2) = 1;
  *param_1 = iVar2;
  return;
}



undefined4 FUN_0083d430(void)

{
  undefined local_c [12];
  
  FUN_0083d350(local_c,&stack0x00000004);
  return 1;
}



undefined4 __thiscall FUN_0083d450(int param_1_00,int param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  if (*(int *)(param_1_00 + 4) != *(int *)(param_1 + 4)) {
    cVar1 = FUN_00830f20(*(int *)(param_1 + 4));
    if (cVar1 != '\0') {
      return 1;
    }
    cVar1 = FUN_00830f20(*(undefined4 *)(param_1_00 + 4));
    if (cVar1 != '\0') {
      return 0;
    }
  }
  if (*(int *)(param_1_00 + 8) == *(int *)(param_1 + 8)) {
    return 0;
  }
  uVar2 = FUN_00830f20();
  return uVar2;
}



undefined4 * __thiscall
FUN_0083d4a0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4a98;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = param_1;
  param_1_00[2] = param_2;
  param_1_00[3] = param_3;
  param_1_00[4] = param_5;
  local_4 = 0;
  *param_1_00 = boost::serialization::void_cast_detail::void_caster_shortcut::vftable;
  *(char *)(param_1_00 + 5) = (char)param_4;
  FUN_0083ddb0(param_4);
  ExceptionList = local_c;
  return param_1_00;
}



undefined __fastcall FUN_0083d520(int param_1)

{
  return *(undefined *)(param_1 + 0x14);
}



void __fastcall FUN_0083d530(undefined4 *param_1)

{
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  return;
}



undefined4 * __thiscall FUN_0083d540(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::serialization::void_cast_detail::void_caster::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// public: static bool __cdecl boost::serialization::singleton<class std::set<class
// boost::serialization::void_cast_detail::void_caster const *,struct
// boost::serialization::void_cast_detail::void_caster_compare,class std::allocator<class
// boost::serialization::void_cast_detail::void_caster const *> > >::is_destroyed(void)

bool __cdecl
boost::serialization::
singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>
::is_destroyed(void)

{
                    // 0x43d560  1493
                    // ?is_destroyed@?$singleton@V?$set@PBVvoid_caster@void_cast_detail@serialization@boost@@Uvoid_caster_compare@234@V?$allocator@PBVvoid_caster@void_cast_detail@serialization@boost@@@std@@@std@@@serialization@boost@@SA_NXZ
  return (bool)DAT_032bcb1b;
}



void __fastcall FUN_0083d570(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)param_1[1];
  if (*(char *)((int)piVar2 + 0x11) == '\0') {
    iVar3 = *piVar2;
    if (*(char *)(iVar3 + 0x11) == '\0') {
      cVar1 = *(char *)(*(int *)(iVar3 + 8) + 0x11);
      iVar4 = *(int *)(iVar3 + 8);
      while (cVar1 == '\0') {
        cVar1 = *(char *)(*(int *)(iVar4 + 8) + 0x11);
        iVar3 = iVar4;
        iVar4 = *(int *)(iVar4 + 8);
      }
      param_1[1] = iVar3;
      return;
    }
    piVar2 = (int *)piVar2[1];
    cVar1 = *(char *)((int)piVar2 + 0x11);
    while ((cVar1 == '\0' && (param_1[1] == *piVar2))) {
      param_1[1] = (int)piVar2;
      piVar2 = (int *)piVar2[1];
      cVar1 = *(char *)((int)piVar2 + 0x11);
    }
    if (*(char *)(param_1[1] + 0x11) != '\0') {
      FUN_00a3fb10();
      return;
    }
    param_1[1] = (int)piVar2;
  }
  else {
    iVar3 = piVar2[2];
    param_1[1] = iVar3;
    if (*(char *)(iVar3 + 0x11) != '\0') {
      FUN_00a3fb10();
      return;
    }
  }
  return;
}



void __thiscall FUN_0083d600(int param_1_00,int *param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1[2];
  param_1[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x11) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1;
  }
  ppiVar1[1] = (int *)param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = ppiVar1;
    *ppiVar1 = param_1;
    param_1[1] = (int)ppiVar1;
    return;
  }
  ppiVar2 = (int **)param_1[1];
  if (param_1 == *ppiVar2) {
    *ppiVar2 = (int *)ppiVar1;
    *ppiVar1 = param_1;
    param_1[1] = (int)ppiVar1;
    return;
  }
  ppiVar2[2] = (int *)ppiVar1;
  *ppiVar1 = param_1;
  param_1[1] = (int)ppiVar1;
  return;
}



undefined4 * __thiscall FUN_0083d650(int param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  char cVar5;
  undefined4 *puVar6;
  undefined4 *local_4;
  
  local_4 = (undefined4 *)(*(undefined4 **)(param_1_00 + 0x18))[1];
  cVar5 = *(char *)((int)local_4 + 0x11);
  puVar4 = *(undefined4 **)(param_1_00 + 0x18);
  do {
    if (cVar5 != '\0') {
      return puVar4;
    }
    iVar1 = *param_1;
    iVar2 = local_4[3];
    iVar3 = *(int *)(iVar1 + 4);
    if (*(int *)(iVar2 + 4) == iVar3) {
LAB_0083d69a:
      iVar1 = *(int *)(iVar1 + 8);
      if ((*(int *)(iVar2 + 8) != iVar1) && (cVar5 = FUN_00830f20(iVar1), cVar5 != '\0'))
      goto LAB_0083d6ae;
LAB_0083d6b3:
      puVar6 = (undefined4 *)*local_4;
    }
    else {
      cVar5 = FUN_00830f20(iVar3);
      if (cVar5 == '\0') {
        cVar5 = FUN_00830f20(*(undefined4 *)(iVar2 + 4));
        if (cVar5 == '\0') goto LAB_0083d69a;
        goto LAB_0083d6b3;
      }
LAB_0083d6ae:
      puVar6 = (undefined4 *)local_4[2];
      local_4 = puVar4;
    }
    cVar5 = *(char *)((int)puVar6 + 0x11);
    puVar4 = local_4;
    local_4 = puVar6;
  } while( true );
}



void FUN_0083d6d0(int param_1)

{
  if (*(char *)(param_1 + 0x11) == '\0') {
    FUN_0083d6d0(*(undefined4 *)(param_1 + 8));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __thiscall FUN_0083d710(int *param_1_00,int *param_1,undefined4 param_2)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  iVar3 = FUN_0083d650(param_2);
  local_c = iVar3;
  if (param_1_00 == (int *)0x0) {
    FUN_00a3fb10();
  }
  iVar1 = param_1_00[6];
  local_10 = *param_1_00;
  if (*param_1_00 == 0) {
    FUN_00a3fb10();
  }
  if ((iVar3 == iVar1) || (cVar2 = FUN_0083d450(*(undefined4 *)(iVar3 + 0xc)), cVar2 != '\0')) {
    local_8 = *param_1_00;
    local_4 = param_1_00[6];
    piVar4 = &local_8;
  }
  else {
    piVar4 = &local_10;
  }
  iVar3 = piVar4[1];
  *param_1 = *piVar4;
  param_1[1] = iVar3;
  return;
}



void __thiscall FUN_0083d790(int *param_1_00,int *param_1,int *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  char cVar6;
  char cVar7;
  int *piVar8;
  undefined4 *puVar9;
  int local_8;
  undefined4 *local_4;
  
  puVar1 = (undefined4 *)((undefined4 *)param_1_00[6])[1];
  cVar6 = *(char *)((int)puVar1 + 0x11);
  cVar7 = '\x01';
  puVar5 = (undefined4 *)param_1_00[6];
  do {
    if (cVar6 != '\0') {
      local_8 = *param_1_00;
      local_4 = puVar5;
      if (cVar7 != '\0') {
        puVar1 = *(undefined4 **)param_1_00[6];
        if (local_8 == 0) {
          FUN_00a3fb10();
        }
        if (puVar5 == puVar1) {
          piVar8 = (int *)FUN_0082f300(&local_8,1,puVar5,param_2);
          iVar2 = piVar8[1];
          *param_1 = *piVar8;
          param_1[1] = iVar2;
          *(undefined *)(param_1 + 2) = 1;
          return;
        }
        FUN_0083d570();
      }
      puVar1 = local_4;
      iVar2 = local_8;
      cVar6 = FUN_0083d450(*param_2);
      if (cVar6 == '\0') {
        *param_1 = iVar2;
        param_1[1] = (int)puVar1;
        *(undefined *)(param_1 + 2) = 0;
        return;
      }
      piVar8 = (int *)FUN_0082f300(&local_8,cVar7,puVar5,param_2);
      iVar2 = piVar8[1];
      *param_1 = *piVar8;
      param_1[1] = iVar2;
      *(undefined *)(param_1 + 2) = 1;
      return;
    }
    iVar2 = *param_2;
    iVar3 = puVar1[3];
    iVar4 = *(int *)(iVar3 + 4);
    if (*(int *)(iVar2 + 4) == iVar4) {
LAB_0083d7e3:
      iVar3 = *(int *)(iVar3 + 8);
      if (*(int *)(iVar2 + 8) == iVar3) {
LAB_0083d7f5:
        cVar7 = '\0';
      }
      else {
        cVar7 = FUN_00830f20(iVar3);
      }
    }
    else {
      cVar6 = FUN_00830f20(iVar4);
      if (cVar6 == '\0') {
        cVar6 = FUN_00830f20(*(undefined4 *)(iVar2 + 4));
        if (cVar6 == '\0') goto LAB_0083d7e3;
        goto LAB_0083d7f5;
      }
      cVar7 = '\x01';
    }
    if (cVar7 == '\0') {
      puVar9 = (undefined4 *)puVar1[2];
    }
    else {
      puVar9 = (undefined4 *)*puVar1;
    }
    cVar6 = *(char *)((int)puVar9 + 0x11);
    puVar5 = puVar1;
    puVar1 = puVar9;
  } while( true );
}



void __thiscall FUN_0083d8e0(int param_1_00,undefined4 param_1,undefined4 param_2,int **param_3)

{
  undefined uVar1;
  int iVar2;
  uint uVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined4 uVar6;
  int **ppiVar7;
  int **ppiVar8;
  int **ppiVar9;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3ae8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  ppiVar4 = param_3;
  if (*(char *)((int)param_3 + 0x11) != '\0') {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"invalid map/set<T> iterator",0x1b);
    local_4 = 0;
    FUN_00417ca0(local_50);
    local_34[0] = std::out_of_range::vftable;
    ppiVar4 = (int **)__CxxThrowException_8(local_34,&DAT_03115668);
  }
  FUN_0082eba0(uVar3);
  ppiVar7 = (int **)*ppiVar4;
  if (*(char *)((int)ppiVar7 + 0x11) == '\0') {
    ppiVar9 = ppiVar7;
    if (*(char *)((int)ppiVar4[2] + 0x11) == '\0') {
      ppiVar9 = (int **)param_3[2];
      if (param_3 != ppiVar4) {
        ppiVar7[1] = (int *)param_3;
        *param_3 = *ppiVar4;
        ppiVar7 = param_3;
        if (param_3 != (int **)ppiVar4[2]) {
          ppiVar7 = (int **)param_3[1];
          if (*(char *)((int)ppiVar9 + 0x11) == '\0') {
            ppiVar9[1] = (int *)ppiVar7;
          }
          *ppiVar7 = (int *)ppiVar9;
          param_3[2] = ppiVar4[2];
          ppiVar4[2][1] = (int)param_3;
        }
        if (*(int ***)(*(int *)(param_1_00 + 0x18) + 4) == ppiVar4) {
          *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = param_3;
        }
        else {
          ppiVar8 = (int **)ppiVar4[1];
          if ((int **)*ppiVar8 == ppiVar4) {
            *ppiVar8 = (int *)param_3;
          }
          else {
            ppiVar8[2] = (int *)param_3;
          }
        }
        param_3[1] = ppiVar4[1];
        ppiVar8 = ppiVar4 + 4;
        param_3 = param_3 + 4;
        if (param_3 != ppiVar8) {
          uVar1 = *(undefined *)param_3;
          *(undefined *)param_3 = *(undefined *)ppiVar8;
          *(undefined *)ppiVar8 = uVar1;
        }
        goto LAB_0083da5d;
      }
    }
  }
  else {
    ppiVar9 = (int **)ppiVar4[2];
  }
  ppiVar7 = (int **)ppiVar4[1];
  if (*(char *)((int)ppiVar9 + 0x11) == '\0') {
    ppiVar9[1] = (int *)ppiVar7;
  }
  if (*(int ***)(*(int *)(param_1_00 + 0x18) + 4) == ppiVar4) {
    *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = ppiVar9;
  }
  else if ((int **)*ppiVar7 == ppiVar4) {
    *ppiVar7 = (int *)ppiVar9;
  }
  else {
    ppiVar7[2] = (int *)ppiVar9;
  }
  ppiVar8 = *(int ***)(param_1_00 + 0x18);
  if ((int **)*ppiVar8 == ppiVar4) {
    ppiVar5 = ppiVar7;
    if (*(char *)((int)ppiVar9 + 0x11) == '\0') {
      ppiVar5 = (int **)FUN_00830f90(ppiVar9);
    }
    *ppiVar8 = (int *)ppiVar5;
  }
  iVar2 = *(int *)(param_1_00 + 0x18);
  if (*(int ***)(iVar2 + 8) == ppiVar4) {
    if (*(char *)((int)ppiVar9 + 0x11) == '\0') {
      uVar6 = FUN_00830950(ppiVar9);
      *(undefined4 *)(iVar2 + 8) = uVar6;
    }
    else {
      *(int ***)(iVar2 + 8) = ppiVar7;
    }
  }
LAB_0083da5d:
  if (*(char *)(ppiVar4 + 4) == '\x01') {
    if (ppiVar9 != *(int ***)(*(int *)(param_1_00 + 0x18) + 4)) {
      do {
        ppiVar8 = ppiVar7;
        if (*(char *)(ppiVar9 + 4) != '\x01') break;
        ppiVar7 = (int **)*ppiVar8;
        if (ppiVar9 == ppiVar7) {
          ppiVar7 = (int **)ppiVar8[2];
          if (*(char *)(ppiVar7 + 4) == '\0') {
            *(undefined *)(ppiVar7 + 4) = 1;
            *(undefined *)(ppiVar8 + 4) = 0;
            FUN_0083d600(ppiVar8);
            ppiVar7 = (int **)ppiVar8[2];
          }
          if (*(char *)((int)ppiVar7 + 0x11) == '\0') {
            if ((*(char *)(*ppiVar7 + 4) != '\x01') || (*(char *)(ppiVar7[2] + 4) != '\x01')) {
              if (*(char *)(ppiVar7[2] + 4) == '\x01') {
                *(undefined *)(*ppiVar7 + 4) = 1;
                *(undefined *)(ppiVar7 + 4) = 0;
                FUN_00830970(ppiVar7);
                ppiVar7 = (int **)ppiVar8[2];
              }
              *(undefined *)(ppiVar7 + 4) = *(undefined *)(ppiVar8 + 4);
              *(undefined *)(ppiVar8 + 4) = 1;
              *(undefined *)(ppiVar7[2] + 4) = 1;
              FUN_0083d600(ppiVar8);
              break;
            }
LAB_0083db20:
            *(undefined *)(ppiVar7 + 4) = 0;
          }
        }
        else {
          if (*(char *)(ppiVar7 + 4) == '\0') {
            *(undefined *)(ppiVar7 + 4) = 1;
            *(undefined *)(ppiVar8 + 4) = 0;
            FUN_00830970(ppiVar8);
            ppiVar7 = (int **)*ppiVar8;
          }
          if (*(char *)((int)ppiVar7 + 0x11) == '\0') {
            if ((*(char *)(ppiVar7[2] + 4) == '\x01') && (*(char *)(*ppiVar7 + 4) == '\x01'))
            goto LAB_0083db20;
            if (*(char *)(*ppiVar7 + 4) == '\x01') {
              *(undefined *)(ppiVar7[2] + 4) = 1;
              *(undefined *)(ppiVar7 + 4) = 0;
              FUN_0083d600(ppiVar7);
              ppiVar7 = (int **)*ppiVar8;
            }
            *(undefined *)(ppiVar7 + 4) = *(undefined *)(ppiVar8 + 4);
            *(undefined *)(ppiVar8 + 4) = 1;
            *(undefined *)(*ppiVar7 + 4) = 1;
            FUN_00830970(ppiVar8);
            break;
          }
        }
        ppiVar7 = (int **)ppiVar8[1];
        ppiVar9 = ppiVar8;
      } while (ppiVar8 != *(int ***)(*(int *)(param_1_00 + 0x18) + 4));
    }
    *(undefined *)(ppiVar9 + 4) = 1;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(ppiVar4);
}



void __thiscall
FUN_0083dbb0(int *param_1_00,int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  undefined local_8 [8];
  
  iVar1 = *(int *)param_1_00[6];
  if ((param_2 == 0) || (param_2 != *param_1_00)) {
    FUN_00a3fb10();
  }
  if (param_3 == iVar1) {
    iVar1 = param_1_00[6];
    if ((param_4 == 0) || (param_4 != *param_1_00)) {
      FUN_00a3fb10();
    }
    if (param_5 == iVar1) {
      FUN_0083d6d0(*(undefined4 *)(param_1_00[6] + 4));
      *(int *)(param_1_00[6] + 4) = param_1_00[6];
      param_1_00[7] = 0;
      *(int *)param_1_00[6] = param_1_00[6];
      *(int *)(param_1_00[6] + 8) = param_1_00[6];
      iVar1 = *param_1_00;
      param_1[1] = *(int *)param_1_00[6];
      *param_1 = iVar1;
      return;
    }
  }
  while( true ) {
    if ((param_2 == 0) || (param_2 != param_4)) {
      FUN_00a3fb10();
    }
    if (param_3 == param_5) break;
    FUN_0082eba0();
    FUN_0083d8e0(local_8,param_2,param_3);
  }
  *param_1 = *param_1_00;
  param_1[1] = param_3;
  return;
}



void __fastcall FUN_0083dc90(undefined4 *param_1)

{
  uint uVar1;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf27a8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0083dbb0(local_14,*param_1,*(undefined4 *)param_1[6],*param_1,(undefined4 *)param_1[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[6],uVar1);
}



// private: static class std::set<class boost::serialization::void_cast_detail::void_caster const
// *,struct boost::serialization::void_cast_detail::void_caster_compare,class std::allocator<class
// boost::serialization::void_cast_detail::void_caster const *> > & __cdecl
// boost::serialization::singleton<class std::set<class
// boost::serialization::void_cast_detail::void_caster const *,struct
// boost::serialization::void_cast_detail::void_caster_compare,class std::allocator<class
// boost::serialization::void_cast_detail::void_caster const *> > >::get_instance(void)

set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>
* __cdecl boost::serialization::
          singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>
          ::get_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
                    // 0x43dd10  1022
                    // ?get_instance@?$singleton@V?$set@PBVvoid_caster@void_cast_detail@serialization@boost@@Uvoid_caster_compare@234@V?$allocator@PBVvoid_caster@void_cast_detail@serialization@boost@@@std@@@std@@@serialization@boost@@CAAAV?$set@PBVvoid_caster@void_cast_detail@serialization@boost@@Uvoid_caster_compare@234@V?$allocator@PBVvoid_caster@void_cast_detail@serialization@boost@@@std@@@std@@XZ
  puStack_8 = &LAB_00bc49ee;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((`private:_static_class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>&___cdecl_boost::serialization::singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>&___cdecl_boost::serialization::singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>&___cdecl_boost::serialization::singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    local_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c76280);
  }
  ExceptionList = local_c;
  return (set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>
          *)&`private:_static_class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>&___cdecl_boost::serialization::singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>::get_instance(void)'
             ::`2'::t;
}



// public: static class std::set<class boost::serialization::void_cast_detail::void_caster const
// *,struct boost::serialization::void_cast_detail::void_caster_compare,class std::allocator<class
// boost::serialization::void_cast_detail::void_caster const *> > const & __cdecl
// boost::serialization::singleton<class std::set<class
// boost::serialization::void_cast_detail::void_caster const *,struct
// boost::serialization::void_cast_detail::void_caster_compare,class std::allocator<class
// boost::serialization::void_cast_detail::void_caster const *> > >::get_const_instance(void)

set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>
* __cdecl boost::serialization::
          singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>
          ::get_const_instance(void)

{
  uint3 in_ECX;
  undefined4 uStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bc49ee;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  if ((`private:_static_class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>&___cdecl_boost::serialization::singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>::get_instance(void)'
       ::`2'::_local_static_guard__2__ & 1) == 0) {
    `private:_static_class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>&___cdecl_boost::serialization::singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>::get_instance(void)'
    ::`2'::_local_static_guard__2__ =
         `private:_static_class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>&___cdecl_boost::serialization::singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>::get_instance(void)'
         ::`2'::_local_static_guard__2__ | 1;
    uStack_4 = 0;
    uStack_10 = (uint)in_ECX;
    FUN_0082b9f0((int)&uStack_10 + 3,(int)&uStack_10 + 3);
    _atexit((_func_4879 *)&LAB_00c76280);
  }
  ExceptionList = pvStack_c;
  return (set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>
          *)&`private:_static_class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>&___cdecl_boost::serialization::singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>::get_instance(void)'
             ::`2'::t;
}



void __thiscall FUN_0083ddb0(undefined ***param_1,char param_2)

{
  int *piVar1;
  int *piVar2;
  char cVar3;
  uint uVar4;
  int **ppiVar5;
  int iVar6;
  int **ppiVar7;
  int iVar8;
  uint3 uVar10;
  int *piVar9;
  undefined ***local_5c;
  int *local_58;
  int *local_54;
  int *local_4c;
  undefined local_48 [12];
  undefined auStack_3c [8];
  undefined **ppuStack_34;
  undefined **ppuStack_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined **local_20;
  undefined4 local_1c;
  undefined **local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4a36;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  ppiVar5 = (int **)boost::serialization::
                    singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>
                    ::get_instance();
  local_5c = param_1;
  FUN_0083d790(local_48,&local_5c);
  local_54 = (int *)*ppiVar5[6];
  local_58 = *ppiVar5;
  while( true ) {
    piVar2 = local_54;
    piVar9 = local_58;
    local_4c = ppiVar5[6];
    if ((local_58 == (int *)0x0) || (local_58 != *ppiVar5)) {
      FUN_00a3fb10(uVar4);
    }
    if (piVar2 == local_4c) break;
    if (piVar9 == (int *)0x0) {
      FUN_00a3fb10(uVar4);
      iVar6 = 0;
    }
    else {
      iVar6 = *piVar9;
    }
    if (piVar2 == *(int **)(iVar6 + 0x18)) {
      FUN_00a3fb10();
    }
    cVar3 = FUN_00830f50(*(undefined4 *)(piVar2[3] + 8));
    if (cVar3 != '\0') {
      if (piVar9 == (int *)0x0) {
        FUN_00a3fb10();
        iVar6 = 0;
      }
      else {
        iVar6 = *piVar9;
      }
      if (piVar2 == *(int **)(iVar6 + 0x18)) {
        FUN_00a3fb10();
      }
      local_1c = *(undefined4 *)(piVar2[3] + 4);
      local_18 = param_1[2];
      local_14 = 0;
      local_10 = 0;
      local_20 = boost::serialization::void_cast_detail::void_caster_argument::vftable;
      local_5c = &local_20;
      local_4 = 0;
      ppiVar7 = (int **)FUN_0083d710(local_48,&local_5c);
      piVar9 = ppiVar7[1];
      piVar1 = ppiVar5[6];
      if ((*ppiVar7 == (int *)0x0) || (*ppiVar7 != *ppiVar5)) {
        FUN_00a3fb10();
      }
      if (piVar9 == piVar1) {
        local_5c = (undefined ***)operator_new(0x18);
        piVar1 = local_58;
        local_4 = CONCAT31(local_4._1_3_,1);
        if (local_5c != (undefined ***)0x0) {
          if (local_58 == (int *)0x0) {
            FUN_00a3fb10();
            iVar6 = 0;
          }
          else {
            iVar6 = *local_58;
          }
          if (piVar2 == *(int **)(iVar6 + 0x18)) {
            FUN_00a3fb10();
          }
          cVar3 = (***(code ***)piVar2[3])();
          uVar10 = (uint3)((uint)piVar9 >> 8);
          if ((cVar3 == '\0') && (param_2 == '\0')) {
            iVar6 = (uint)uVar10 << 8;
          }
          else {
            iVar6 = CONCAT31(uVar10,1);
          }
          if (piVar1 == (int *)0x0) {
            FUN_00a3fb10();
            iVar8 = 0;
          }
          else {
            iVar8 = *piVar1;
          }
          if (piVar2 == *(int **)(iVar8 + 0x18)) {
            FUN_00a3fb10();
          }
          if (piVar1 == (int *)0x0) {
            FUN_00a3fb10();
            iVar8 = 0;
          }
          else {
            iVar8 = *piVar1;
          }
          if (piVar2 == *(int **)(iVar8 + 0x18)) {
            FUN_00a3fb10();
          }
          FUN_0083d4a0(*(undefined4 *)(piVar2[3] + 4),param_1[2],
                       *(int *)(piVar2[3] + 0xc) + (int)param_1[3],iVar6,param_1);
        }
      }
      local_4 = 0xffffffff;
      piVar9 = local_58;
    }
    if (piVar9 == (int *)0x0) {
      FUN_00a3fb10();
      iVar6 = 0;
    }
    else {
      iVar6 = *piVar9;
    }
    if (piVar2 == *(int **)(iVar6 + 0x18)) {
      FUN_00a3fb10();
    }
    cVar3 = FUN_00830f50(param_1[2]);
    if (cVar3 != '\0') {
      if (piVar9 == (int *)0x0) {
        FUN_00a3fb10();
        iVar6 = 0;
      }
      else {
        iVar6 = *piVar9;
      }
      if (piVar2 == *(int **)(iVar6 + 0x18)) {
        FUN_00a3fb10();
      }
      uStack_2c = *(undefined4 *)(piVar2[3] + 8);
      ppuStack_30 = param_1[1];
      uStack_28 = 0;
      uStack_24 = 0;
      ppuStack_34 = boost::serialization::void_cast_detail::void_caster_argument::vftable;
      local_5c = &ppuStack_34;
      local_4 = 2;
      ppiVar7 = (int **)FUN_0083d710(auStack_3c,&local_5c);
      piVar9 = ppiVar7[1];
      piVar1 = ppiVar5[6];
      if ((*ppiVar7 == (int *)0x0) || (*ppiVar7 != *ppiVar5)) {
        FUN_00a3fb10();
      }
      if (piVar9 == piVar1) {
        local_5c = (undefined ***)operator_new(0x18);
        piVar9 = local_58;
        local_4 = CONCAT31(local_4._1_3_,3);
        if (local_5c != (undefined ***)0x0) {
          if (local_58 == (int *)0x0) {
            FUN_00a3fb10();
            iVar6 = 0;
          }
          else {
            iVar6 = *local_58;
          }
          if (piVar2 == *(int **)(iVar6 + 0x18)) {
            FUN_00a3fb10();
          }
          cVar3 = (***(code ***)piVar2[3])();
          uVar10 = (uint3)((uint)piVar1 >> 8);
          if ((cVar3 == '\0') && (param_2 == '\0')) {
            iVar6 = (uint)uVar10 << 8;
          }
          else {
            iVar6 = CONCAT31(uVar10,1);
          }
          if (piVar9 == (int *)0x0) {
            FUN_00a3fb10();
            iVar8 = 0;
          }
          else {
            iVar8 = *piVar9;
          }
          if (piVar2 == *(int **)(iVar8 + 0x18)) {
            FUN_00a3fb10();
          }
          if (piVar9 == (int *)0x0) {
            FUN_00a3fb10();
            iVar8 = 0;
          }
          else {
            iVar8 = *piVar9;
          }
          if (piVar2 == *(int **)(iVar8 + 0x18)) {
            FUN_00a3fb10();
          }
          FUN_0083d4a0(param_1[1],*(undefined4 *)(piVar2[3] + 8),
                       *(int *)(piVar2[3] + 0xc) + (int)param_1[3],iVar6,param_1);
        }
      }
      local_4 = 0xffffffff;
      ppuStack_34 = boost::serialization::void_cast_detail::void_caster::vftable;
    }
    FUN_0082eba0();
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0083e150(int *param_1)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  int **ppiVar4;
  int iVar5;
  undefined local_18 [8];
  undefined local_10 [12];
  
  if (DAT_032bcb1b != '\0') {
    return;
  }
  ppiVar4 = (int **)boost::serialization::
                    singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>
                    ::get_instance();
  do {
    piVar1 = (int *)*ppiVar4[6];
    piVar2 = *ppiVar4;
    while( true ) {
      while( true ) {
        piVar3 = ppiVar4[6];
        if ((piVar2 == (int *)0x0) || (piVar2 != *ppiVar4)) {
          FUN_00a3fb10();
        }
        if (piVar1 == piVar3) {
          return;
        }
        if (piVar2 == (int *)0x0) {
          FUN_00a3fb10();
          iVar5 = 0;
        }
        else {
          iVar5 = *piVar2;
        }
        if (piVar1 == *(int **)(iVar5 + 0x18)) {
          FUN_00a3fb10();
        }
        piVar3 = (int *)piVar1[3];
        if (piVar3 != param_1) break;
        FUN_0082eba0();
        FUN_0083d8e0(local_18,piVar2,piVar1);
      }
      if ((int *)piVar3[4] == param_1) break;
      FUN_0082eba0();
    }
    FUN_0083d8e0(local_10,piVar2,piVar1);
    (**(code **)(*piVar3 + 0xc))(1);
  } while( true );
}



undefined4 FUN_0083e220(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int *piVar1;
  int *piVar2;
  char cVar3;
  uint uVar4;
  int **ppiVar5;
  int **ppiVar6;
  undefined4 uVar7;
  int iVar8;
  undefined ***local_30;
  int *local_2c;
  undefined local_28 [8];
  undefined **local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4a68;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  cVar3 = FUN_00830f50(param_2);
  if (cVar3 != '\0') {
    ExceptionList = local_c;
    return param_3;
  }
  ppiVar5 = (int **)boost::serialization::
                    singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>
                    ::get_instance();
  local_1c = param_1;
  local_18 = param_2;
  local_14 = 0;
  local_10 = (void *)0x0;
  local_20 = boost::serialization::void_cast_detail::void_caster_argument::vftable;
  local_30 = &local_20;
  local_4 = 0;
  ppiVar6 = (int **)FUN_0083d710(local_28,&local_30);
  piVar1 = *ppiVar6;
  piVar2 = ppiVar6[1];
  local_2c = ppiVar5[6];
  if ((*ppiVar5 == (int *)0x0) || (*ppiVar5 != piVar1)) {
    FUN_00a3fb10(uVar4);
  }
  if (local_2c != piVar2) {
    if (piVar1 == (int *)0x0) {
      FUN_00a3fb10(uVar4);
      iVar8 = 0;
    }
    else {
      iVar8 = *piVar1;
    }
    if (piVar2 == *(int **)(iVar8 + 0x18)) {
      FUN_00a3fb10();
    }
    uVar7 = (**(code **)(*(int *)piVar2[3] + 4))(param_3);
    ExceptionList = local_10;
    return uVar7;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_0083e330(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int *piVar1;
  int *piVar2;
  char cVar3;
  uint uVar4;
  int **ppiVar5;
  int **ppiVar6;
  undefined4 uVar7;
  int iVar8;
  undefined ***local_30;
  int *local_2c;
  undefined local_28 [8];
  undefined **local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4a68;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  cVar3 = FUN_00830f50(param_2);
  if (cVar3 != '\0') {
    ExceptionList = local_c;
    return param_3;
  }
  ppiVar5 = (int **)boost::serialization::
                    singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>
                    ::get_instance();
  local_1c = param_1;
  local_18 = param_2;
  local_14 = 0;
  local_10 = (void *)0x0;
  local_20 = boost::serialization::void_cast_detail::void_caster_argument::vftable;
  local_30 = &local_20;
  local_4 = 0;
  ppiVar6 = (int **)FUN_0083d710(local_28,&local_30);
  piVar1 = *ppiVar6;
  piVar2 = ppiVar6[1];
  local_2c = ppiVar5[6];
  if ((*ppiVar5 == (int *)0x0) || (*ppiVar5 != piVar1)) {
    FUN_00a3fb10(uVar4);
  }
  if (local_2c != piVar2) {
    if (piVar1 == (int *)0x0) {
      FUN_00a3fb10(uVar4);
      iVar8 = 0;
    }
    else {
      iVar8 = *piVar1;
    }
    if (piVar2 == *(int **)(iVar8 + 0x18)) {
      FUN_00a3fb10();
    }
    uVar7 = (**(code **)(*(int *)piVar2[3] + 8))(param_3);
    ExceptionList = local_10;
    return uVar7;
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_0083e440(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4a98;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = boost::serialization::void_cast_detail::void_caster_shortcut::vftable;
  local_4 = 0;
  FUN_0083e150(uVar1);
  *param_1 = boost::serialization::void_cast_detail::void_caster::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_0083e4a0(undefined4 param_1_00,byte param_1)

{
  FUN_0083e440();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0083e4c0(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  int **ppiVar4;
  int iVar5;
  undefined4 uVar6;
  int iVar7;
  
  ppiVar4 = (int **)boost::serialization::
                    singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>
                    ::get_instance();
  piVar1 = (int *)*ppiVar4[6];
  piVar2 = *ppiVar4;
  do {
    piVar3 = ppiVar4[6];
    if ((piVar2 == (int *)0x0) || (piVar2 != *ppiVar4)) {
      FUN_00a3fb10();
    }
    if (piVar1 == piVar3) {
      return 0;
    }
    if (piVar2 == (int *)0x0) {
      FUN_00a3fb10();
      iVar5 = 0;
    }
    else {
      iVar5 = *piVar2;
    }
    if (piVar1 == *(int **)(iVar5 + 0x18)) {
      FUN_00a3fb10();
    }
    if (*(int *)(piVar1[3] + 4) == *(int *)(param_1_00 + 4)) {
      if (piVar2 == (int *)0x0) {
        FUN_00a3fb10();
        iVar5 = 0;
      }
      else {
        iVar5 = *piVar2;
      }
      if (piVar1 == *(int **)(iVar5 + 0x18)) {
        FUN_00a3fb10();
      }
      if (*(int *)(piVar1[3] + 8) != *(int *)(param_1_00 + 8)) {
        if (piVar2 == (int *)0x0) {
          FUN_00a3fb10();
          iVar5 = 0;
        }
        else {
          iVar5 = *piVar2;
        }
        if (piVar1 == *(int **)(iVar5 + 0x18)) {
          FUN_00a3fb10();
        }
        iVar5 = FUN_0083e330(*(undefined4 *)(piVar1[3] + 8),*(undefined4 *)(param_1_00 + 8),param_1)
        ;
        if (iVar5 != 0) {
          if (piVar2 == (int *)0x0) {
            FUN_00a3fb10();
            iVar7 = 0;
          }
          else {
            iVar7 = *piVar2;
          }
          if (piVar1 == *(int **)(iVar7 + 0x18)) {
            FUN_00a3fb10();
          }
          uVar6 = (**(code **)(*(int *)piVar1[3] + 8))(iVar5);
          return uVar6;
        }
      }
    }
    FUN_0082eba0();
  } while( true );
}



undefined4 __thiscall FUN_0083e5e0(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  int **ppiVar4;
  int iVar5;
  undefined4 uVar6;
  int iVar7;
  
  ppiVar4 = (int **)boost::serialization::
                    singleton<class_std::set<class_boost::serialization::void_cast_detail::void_caster_const*,struct_boost::serialization::void_cast_detail::void_caster_compare,class_std::allocator<class_boost::serialization::void_cast_detail::void_caster_const*>_>_>
                    ::get_instance();
  piVar1 = (int *)*ppiVar4[6];
  piVar2 = *ppiVar4;
  do {
    piVar3 = ppiVar4[6];
    if ((piVar2 == (int *)0x0) || (piVar2 != *ppiVar4)) {
      FUN_00a3fb10();
    }
    if (piVar1 == piVar3) {
      return 0;
    }
    if (piVar2 == (int *)0x0) {
      FUN_00a3fb10();
      iVar5 = 0;
    }
    else {
      iVar5 = *piVar2;
    }
    if (piVar1 == *(int **)(iVar5 + 0x18)) {
      FUN_00a3fb10();
    }
    if (*(int *)(piVar1[3] + 8) == *(int *)(param_1_00 + 8)) {
      if (piVar2 == (int *)0x0) {
        FUN_00a3fb10();
        iVar5 = 0;
      }
      else {
        iVar5 = *piVar2;
      }
      if (piVar1 == *(int **)(iVar5 + 0x18)) {
        FUN_00a3fb10();
      }
      if (*(int *)(piVar1[3] + 4) != *(int *)(param_1_00 + 4)) {
        if (piVar2 == (int *)0x0) {
          FUN_00a3fb10();
          iVar5 = 0;
        }
        else {
          iVar5 = *piVar2;
        }
        if (piVar1 == *(int **)(iVar5 + 0x18)) {
          FUN_00a3fb10();
        }
        iVar5 = FUN_0083e220(*(undefined4 *)(param_1_00 + 4),*(undefined4 *)(piVar1[3] + 4),param_1)
        ;
        if (iVar5 != 0) {
          if (piVar2 == (int *)0x0) {
            FUN_00a3fb10();
            iVar7 = 0;
          }
          else {
            iVar7 = *piVar2;
          }
          if (piVar1 == *(int **)(iVar7 + 0x18)) {
            FUN_00a3fb10();
          }
          uVar6 = (**(code **)(*(int *)piVar1[3] + 4))(iVar5);
          return uVar6;
        }
      }
    }
    FUN_0082eba0();
  } while( true );
}



int __thiscall FUN_0083e700(int param_1_00,int param_1)

{
  int iVar1;
  
  if (*(char *)(param_1_00 + 0x14) != '\0') {
    iVar1 = FUN_0083e5e0();
    return iVar1;
  }
  return param_1 - *(int *)(param_1_00 + 0xc);
}



int __thiscall FUN_0083e720(int param_1_00,int param_1)

{
  int iVar1;
  
  if (*(char *)(param_1_00 + 0x14) != '\0') {
    iVar1 = FUN_0083e4c0();
    return iVar1;
  }
  return *(int *)(param_1_00 + 0xc) + param_1;
}



char * FUN_0083e740(void)

{
  return "object_id";
}



char * FUN_0083e750(void)

{
  return "object_id_reference";
}



char * FUN_0083e760(void)

{
  return "class_id";
}



char * FUN_0083e770(void)

{
  return "class_id_reference";
}



char * FUN_0083e780(void)

{
  return "class_name";
}



char * FUN_0083e790(void)

{
  return "tracking_level";
}



char * FUN_0083e7a0(void)

{
  return "version";
}



char * FUN_0083e7b0(void)

{
  return "serialization::archive";
}



void FUN_0083e7c0(undefined2 *param_1)

{
  *param_1 = 10;
  return;
}



undefined * FUN_0083e7d0(void)

{
  return &DAT_032bcb4c;
}



undefined4 * __fastcall FUN_0083e7e0(undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00889270();
  *param_1 = uVar1;
  return param_1;
}



void __fastcall FUN_0083e800(undefined4 *param_1)

{
  int *piVar1;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((int)param_1[1] < 1)) {
    FUN_008402e0("..\\..\\src\\common\\object.cpp",0x161,"wxRefCounter::DecRef","m_count > 0",
                 "invalid ref data count");
  }
  piVar1 = param_1 + 1;
  *piVar1 = *piVar1 + -1;
  if (*piVar1 == 0) {
    (**(code **)*param_1)(1);
  }
  return;
}



void __fastcall FUN_0083e850(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0083e800();
    *(undefined4 *)(param_1 + 4) = 0;
  }
  return;
}



undefined4 FUN_0083e870(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\object.cpp",0x1a2,"wxObject::CreateRefData","Assert failure",
                 L"CreateRefData() must be overridden if called!");
  }
  return 0;
}



undefined4 FUN_0083e8a0(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\object.cpp",0x1ab,"wxObject::CloneRefData","Assert failure",
                 L"CloneRefData() must be overridden if called!");
  }
  return 0;
}



void __fastcall FUN_0083e8d0(undefined4 *param_1)

{
  *param_1 = wxObject::vftable;
  if (param_1[1] != 0) {
    FUN_0083e800();
    param_1[1] = 0;
  }
  return;
}



undefined4 * __thiscall
FUN_0083e8f0(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (param_2 != 0) {
    uVar1 = FUN_00886c70(param_3);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uVar1 & 6) != uVar1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                   "wxArgNormalizer<wchar_t const *>::wxArgNormalizer",
                   "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                   "format specifier doesn\'t match argument type");
    }
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0083e950(undefined4 *param_1,int param_2)

{
  char cVar1;
  int iVar2;
  
  iVar2 = (**(code **)*param_1)();
  if (iVar2 == 0) {
    return 0;
  }
  if (param_2 != 0) {
    if (param_2 == iVar2) {
      return 1;
    }
    if ((*(int *)(iVar2 + 0xc) != 0) && (cVar1 = FUN_0048a047(param_2), cVar1 != '\0')) {
      return 1;
    }
    if ((*(int *)(iVar2 + 0x10) != 0) && (cVar1 = FUN_0048a047(param_2), cVar1 != '\0')) {
      return 1;
    }
  }
  return 0;
}



undefined4 * FUN_0083e9a0(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  
  if (DAT_032bcb48 != 0) {
    uVar2 = FUN_00889330(param_1);
    puVar3 = (undefined4 *)FUN_008892a0(param_1,uVar2);
    return puVar3;
  }
  puVar3 = DAT_032bcb44;
  if (DAT_032bcb44 != (undefined4 *)0x0) {
    do {
      iVar4 = FUN_008507a0(*puVar3);
      if (iVar4 == 0) {
        return puVar3;
      }
      puVar1 = puVar3 + 5;
      puVar3 = (undefined4 *)*puVar1;
    } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);
  }
  return (undefined4 *)0x0;
}



undefined4 __fastcall FUN_0083ea00(int *param_1)

{
  return *(undefined4 *)(*param_1 + 8);
}



undefined4 * FUN_0083ea10(undefined4 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = DAT_032bcb48;
  *(undefined4 *)(DAT_032bcb48 + 0x1c) = 0;
  *(undefined4 *)(iVar1 + 0x20) = 0;
  iVar1 = DAT_032bcb48;
  uVar2 = FUN_00889270();
  *param_1 = uVar2;
  param_1[1] = iVar1;
  return param_1;
}



void FUN_0083ea40(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  return;
}



void __thiscall FUN_0083ea60(int param_1_00,int param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 4) != *(int *)(param_1 + 4)) {
    if (*(int *)(param_1_00 + 4) != 0) {
      FUN_0083e800();
      *(undefined4 *)(param_1_00 + 4) = 0;
    }
    iVar1 = *(int *)(param_1 + 4);
    if (iVar1 != 0) {
      *(int *)(param_1_00 + 4) = iVar1;
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    }
  }
  return;
}



void __fastcall FUN_0083eaa0(int *param_1)

{
  code *pcVar1;
  int iVar2;
  
  iVar2 = param_1[1];
  if (iVar2 == 0) {
    iVar2 = (**(code **)(*param_1 + 8))();
  }
  else {
    if (*(int *)(iVar2 + 4) < 2) goto LAB_0083ead5;
    FUN_0083e800();
    pcVar1 = *(code **)(*param_1 + 0xc);
    param_1[1] = 0;
    iVar2 = (*pcVar1)(iVar2);
  }
  param_1[1] = iVar2;
LAB_0083ead5:
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((param_1[1] == 0 || (*(int *)(param_1[1] + 4) != 1)))) {
    FUN_00840480("..\\..\\src\\common\\object.cpp",0x19c,"wxObject::AllocExclusive",
                 "m_refData && m_refData->GetRefCount() == 1",L"wxObject::AllocExclusive() failed.")
    ;
  }
  return;
}



undefined4 * __thiscall FUN_0083eb10(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4ac8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00889180(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1_00 = wxHashTable::vftable;
  FUN_00889090(param_1,param_2);
  param_1_00[7] = 0;
  param_1_00[8] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_0083eb80(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4ac8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxHashTable::vftable;
  local_4 = 0;
  FUN_00889830(uVar1);
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  if (param_1[1] != 0) {
    FUN_0083e800();
    param_1[1] = 0;
  }
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_0083ebf0(undefined4 param_1_00,byte param_1)

{
  FUN_0083eb80();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_0083ec10(undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (param_2 != 0) {
    uVar1 = FUN_00886c70(1);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uVar1 & 6) != uVar1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                   "wxArgNormalizer<wchar_t const *>::wxArgNormalizer",
                   "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                   "format specifier doesn\'t match argument type");
    }
  }
  uVar2 = FUN_008854f0();
  FUN_00853850(param_1,uVar2,param_3);
  return param_1;
}



void __fastcall FUN_0083ec80(undefined4 *param_1)

{
  bool bVar1;
  bool bVar2;
  int *piVar3;
  void *pvVar4;
  int *piVar5;
  undefined4 uVar6;
  int iVar7;
  undefined local_68 [20];
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4b2c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar2 = false;
  if (DAT_032bcb48 == (int *)0x0) {
    pvVar4 = operator_new(0x24);
    local_4 = 0;
    if (pvVar4 == (void *)0x0) {
      local_4 = 0xffffffff;
      piVar5 = (int *)0x0;
    }
    else {
      piVar5 = (int *)FUN_0083eb10(2,1000);
      local_4 = 0xffffffff;
    }
  }
  else {
    piVar5 = DAT_032bcb48;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
       (DAT_032bcb64 = DAT_032bcb64 + 1, DAT_032bcb64 != 1)) {
      FUN_00840480("..\\..\\src\\common\\object.cpp",0xed,"wxClassInfo::Register","++entry == 1",
                   L"wxClassInfo::Register() reentrance",DAT_0323f878 ^ (uint)&stack0xffffff84);
      piVar5 = DAT_032bcb48;
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_004325b6(*param_1);
    local_4 = 1;
    bVar2 = true;
    uVar6 = FUN_00889330(local_30);
    iVar7 = FUN_008892a0(local_30,uVar6);
    if (iVar7 != 0) {
      bVar1 = false;
      goto LAB_0083ed7b;
    }
  }
  bVar1 = true;
LAB_0083ed7b:
  local_4 = 0xffffffff;
  if ((bVar2) && (_free(local_14), 7 < local_18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (!bVar1) {
    FUN_0081c0f1(
                L"Class \"%s\" already in RTTI table - have you used IMPLEMENT_DYNAMIC_CLASS() multiple times or linked some object file twice)?"
                );
    local_4 = 2;
    uVar6 = FUN_0083ec10(local_30,local_68,*param_1);
    local_4 = CONCAT31(local_4._1_3_,3);
    FUN_008401a0("..\\..\\src\\common\\object.cpp",0xfc,"wxClassInfo::Register",
                 "classTable->Get(m_className) == NULL",uVar6);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_2c = local_2c & 0xffff0000;
    local_18 = 7;
    local_1c = 0;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  FUN_004325b6(*param_1);
  local_4 = 4;
  uVar6 = FUN_00889330(local_54,param_1);
  FUN_008895a0(local_54,uVar6,param_1);
  local_4 = 0xffffffff;
  _free(local_38);
  if (local_3c < 8) {
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    piVar3 = DAT_032bcb48;
    if ((DAT_032bcb48 != piVar5) && (piVar3 = piVar5, DAT_032bcb48 != (int *)0x0)) {
      if (piVar5 != (int *)0x0) {
        (**(code **)(*piVar5 + 4))(1);
      }
      FUN_0083ec80();
      piVar3 = DAT_032bcb48;
    }
    DAT_032bcb48 = piVar3;
    DAT_032bcb64 = 0;
    ExceptionList = local_c;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_50);
}



void __fastcall FUN_0083ef10(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  if (DAT_032bcb48 != (int *)0x0) {
    FUN_004325b6(*param_1);
    local_4 = 0;
    uVar2 = FUN_00889330(local_30,uVar1);
    FUN_00889670(local_30,uVar2);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    if (DAT_032bcb48[3] == 0) {
      (**(code **)(*DAT_032bcb48 + 4))(1);
      DAT_032bcb48 = (int *)0x0;
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0083f000(int param_1)

{
  int iVar1;
  int iVar2;
  
  if (param_1 == DAT_032bcb44) {
    DAT_032bcb44 = *(undefined4 *)(param_1 + 0x14);
    FUN_0083ef10();
    return;
  }
  iVar2 = DAT_032bcb44;
  if (DAT_032bcb44 != 0) {
    while (iVar1 = *(int *)(iVar2 + 0x14), iVar1 != param_1) {
      iVar2 = iVar1;
      if (iVar1 == 0) {
        FUN_0083ef10();
        return;
      }
    }
    *(undefined4 *)(iVar2 + 0x14) = *(undefined4 *)(param_1 + 0x14);
  }
  FUN_0083ef10();
  return;
}



undefined4 FUN_0083f040(void)

{
  return DAT_032bcb70;
}



undefined4 * __thiscall FUN_0083f050(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxStackWalkerBase::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0083f070(int *param_1)

{
  *(int *)param_1[1] = param_1[2];
  if ((undefined4 *)*param_1 != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)*param_1)(1);
  }
  return;
}



undefined4 __fastcall FUN_0083f0a0(int *param_1)

{
  char cVar1;
  int iVar2;
  code *pcVar3;
  void *unaff_ESI;
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4b58;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = param_1[0x12];
  local_10 = param_1;
  FUN_0088cbc0(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  FUN_0088b3e0(iVar2,param_1 + 0x13);
  local_4 = 0;
  (**(code **)(*param_1 + 0x78))(&local_10);
  iVar2 = FUN_0088e330(0);
  if (iVar2 == -1) {
    pcVar3 = *(code **)(*param_1 + 0x80);
  }
  else if (iVar2 == 0) {
    pcVar3 = *(code **)(*param_1 + 0x7c);
  }
  else {
    pcVar3 = *(code **)(*param_1 + 0x84);
  }
  cVar1 = (*pcVar3)(&stack0xffffffec);
  local_c = (void *)0xffffffff;
  if (cVar1 == '\0') {
    FUN_008905e0();
    ExceptionList = unaff_ESI;
    return 0;
  }
  FUN_008905e0();
  ExceptionList = unaff_ESI;
  return 1;
}



void __fastcall FUN_0083f170(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x0083f178. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0xa4))();
  return;
}



undefined4 FUN_0083f180(void)

{
  int *piVar1;
  
  piVar1 = (int *)FUN_00889870(0);
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(1);
  }
  return 0;
}



void __fastcall FUN_0083f1a0(int *param_1)

{
  if (param_1[0x47] != 0) {
                    // WARNING: Could not recover jumptable at 0x0083f1b1. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*param_1 + 0xa8))();
    return;
  }
                    // WARNING: Subroutine does not return
  _exit(-1);
}



void __fastcall FUN_0083f1c0(int param_1)

{
  int *piVar1;
  
  piVar1 = *(int **)(param_1 + 0x11c);
  if ((piVar1 != (int *)0x0) && (DAT_032bdbdc == piVar1)) {
    (**(code **)(*piVar1 + 0xc))(0);
  }
  return;
}



undefined4 FUN_0083f1e0(void)

{
  char cVar1;
  
  if (DAT_032bdbdc != (int *)0x0) {
    cVar1 = (**(code **)(*DAT_032bdbdc + 0x10))();
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



undefined4 FUN_0083f200(void)

{
  char cVar1;
  
  if (DAT_032bdbdc != (int *)0x0) {
    cVar1 = (**(code **)(*DAT_032bdbdc + 0x14))();
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



void FUN_0083f220(void)

{
  if (DAT_032bdbdc != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x0083f22f. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*DAT_032bdbdc + 0x1c))();
    return;
  }
  return;
}



bool FUN_0083f240(void)

{
  return DAT_032bdbdc != 0;
}



void FUN_0083f250(undefined4 param_1,code *param_2,undefined4 param_3,undefined4 param_4)

{
  (*param_2)(param_4);
  return;
}



void __thiscall FUN_0083f270(int *param_1_00,undefined4 param_1,int *param_2,undefined4 param_4)

{
  undefined8 uVar1;
  
  uVar1 = (**(code **)(*param_2 + 0x10))();
  if ((int)uVar1 != 0) {
    (**(code **)(*param_1_00 + 0x8c))(param_1,uVar1,param_4);
    return;
  }
  (**(code **)(*param_2 + 4))(param_1,param_4);
  return;
}



void FUN_0083f2c0(void)

{
  code *pcVar1;
  
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_0083f2d0(void)

{
  FUN_0088dd90(&PTR_00d25588);
  return;
}



undefined FUN_0083f2f0(void)

{
  FUN_008904c0();
  return 0;
}



void __thiscall
FUN_0083f300(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  (**(code **)(*param_1_00 + 0xb8))(param_1,param_2,0,param_3,param_4);
  return;
}



undefined4 FUN_0083f330(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(8);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00843fb0(0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x2c);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00891630(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_0083f410(void)

{
  _setlocale(0,(char *)&PTR_02bd3fc0);
  return;
}



void thunk_FUN_0086c5f0(void)

{
  LPCRITICAL_SECTION lpCriticalSection;
  DWORD DVar1;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (DAT_032bdb68 != 0) {
      DVar1 = GetCurrentThreadId();
      if (DVar1 != DAT_032bdb68) goto LAB_0086c631;
    }
    FUN_00840480("..\\..\\src\\msw\\thread.cpp",0x534,"wxMutexGuiEnterImpl","!wxThread::IsMain()",
                 L"main thread doesn\'t want to block in wxMutexGuiEnter()!");
  }
LAB_0086c631:
  lpCriticalSection = DAT_032bdb70;
  EnterCriticalSection(DAT_032bdb70);
  DAT_032bdb78 = DAT_032bdb78 + 1;
  LeaveCriticalSection(lpCriticalSection);
  FUN_0086c4e0();
  EnterCriticalSection(DAT_032bdb6c);
  return;
}



void thunk_FUN_0086c660(void)

{
  LPCRITICAL_SECTION lpCriticalSection;
  uint uVar1;
  DWORD DVar2;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  lpCriticalSection = DAT_032bdb70;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc98e8;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &pvStack_c;
  EnterCriticalSection(DAT_032bdb70);
  uStack_4 = 0;
  if (DAT_032bdb68 != 0) {
    DVar2 = GetCurrentThreadId();
    if (DVar2 != DAT_032bdb68) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bdb78 == 0)) {
        FUN_00840480("..\\..\\src\\msw\\thread.cpp",0x552,"wxMutexGuiLeaveImpl",
                     "gs_nWaitingForGui > 0",L"calling wxMutexGuiLeave() without entering it first?"
                     ,uVar1);
      }
      DAT_032bdb78 = DAT_032bdb78 + -1;
      FUN_0086c4e0();
      goto LAB_0086c6fb;
    }
  }
  DAT_032364d0 = 0;
LAB_0086c6fb:
  LeaveCriticalSection(DAT_032bdb6c);
  LeaveCriticalSection(lpCriticalSection);
  ExceptionList = pvStack_c;
  return;
}



void __fastcall FUN_0083f440(int *param_1)

{
  if ((undefined4 *)*param_1 != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)*param_1)(1);
  }
  return;
}



void __fastcall FUN_0083f460(undefined4 *param_1)

{
  *param_1 = wxMessageOutputBase::vftable;
  return;
}



void __fastcall FUN_0083f470(undefined4 *param_1)

{
  *param_1 = wxList::vftable;
  FUN_0086ade0();
  return;
}



undefined4 * __thiscall
FUN_0083f480(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxObjectListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __thiscall FUN_0083f500(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxList::vftable;
  FUN_0086ade0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0083f530(int param_1)

{
  if (*(undefined4 **)(param_1 + 0x11c) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x11c))(1);
    *(undefined4 *)(param_1 + 0x11c) = 0;
  }
  return;
}



undefined4 FUN_0083f560(void)

{
  if ((DAT_032bcb68 != 0) && (*(int *)(DAT_032bcb68 + 0x11c) != 0)) {
    return 1;
  }
  return 0;
}



void FUN_0083f580(undefined4 param_1)

{
  int iVar1;
  
  FUN_0086bd90();
  iVar1 = FUN_0086a790(param_1,0);
  if (iVar1 == -1) {
    FUN_0086a400(param_1,1);
  }
  FUN_0086bda0();
  return;
}



void __thiscall FUN_0083f5d0(int *param_1,int *param_2)

{
  char cVar1;
  int iVar2;
  
  cVar1 = (**(code **)(*param_1 + 0xb4))();
  if (cVar1 == '\0') {
    if (param_2 != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x0083f5f3. Too many branches
                    // WARNING: Treating indirect jump as call
      (**(code **)(*param_2 + 4))();
      return;
    }
  }
  else {
    iVar2 = FUN_0086af40(param_2);
    if (iVar2 == 0) {
      FUN_0086ad60(param_2);
    }
  }
  return;
}



void FUN_0083f620(void)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  
  if (DAT_032bcb80 != 0) {
    do {
      iVar2 = DAT_032bcb80;
      piVar1 = *(int **)(DAT_032bcb80 + 8);
      iVar3 = FUN_0086af40(piVar1);
      if (iVar3 != 0) {
        FUN_0086b060(iVar2);
      }
      if (piVar1 != (int *)0x0) {
        (**(code **)(*piVar1 + 4))(1);
      }
    } while (DAT_032bcb80 != 0);
  }
  return;
}



void FUN_0083f670(void)

{
  if (DAT_032bcb68 != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x0083f682. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*DAT_032bcb68 + 0xac))();
    return;
  }
  return;
}



undefined4 __thiscall FUN_0083f690(undefined4 param_1_00,byte param_1)

{
  FUN_0086b2e0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_0083f6b0(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxIdleEvent::vftable;
    *(undefined *)(puVar1 + 10) = *(undefined *)(param_1 + 0x28);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __fastcall FUN_0083f720(int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  iVar1 = *(int *)(param_1 + 0x10);
  if (iVar1 != 0) {
    uVar2 = *(uint *)(param_1 + 4);
    uVar3 = 0;
    if (uVar2 != 0) {
      do {
        _free(*(void **)(iVar1 + uVar3 * 4));
        uVar3 = uVar3 + 1;
      } while (uVar3 < uVar2);
    }
    FUN_00a3f66c(iVar1);
  }
  iVar1 = *(int *)(param_1 + 0x14);
  if (iVar1 != 0) {
    uVar2 = *(uint *)(param_1 + 4);
    uVar3 = 0;
    if (uVar2 != 0) {
      do {
        _free(*(void **)(iVar1 + uVar3 * 4));
        uVar3 = uVar3 + 1;
      } while (uVar3 < uVar2);
    }
    FUN_00a3f66c(iVar1);
  }
  return;
}



undefined4 FUN_0083f780(undefined4 *param_1,undefined4 *param_2)

{
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = 0;
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = 0;
  }
  return 1;
}



undefined __fastcall FUN_0083f7b0(int *param_1)

{
  uint uVar1;
  undefined **local_38 [2];
  int *local_30;
  undefined uStack_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a68;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  FUN_00845a20(0,DAT_032bd450);
  local_38[0] = wxIdleEvent::vftable;
  local_10 = (void *)((uint)local_10 & 0xffffff00);
  local_4 = 0;
  local_30 = param_1;
  (**(code **)(*param_1 + 0x18))(local_38,uVar1);
  FUN_00845310();
  FUN_0083f620();
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  ExceptionList = local_10;
  return uStack_14;
}



undefined4 * __thiscall FUN_0083f850(undefined4 *param_1_00,undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_00a475e9();
  param_1_00[1] = iVar1 + 0x40;
  param_1_00[2] = param_1;
  *param_1_00 = wxMessageOutputBest::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_0083f880(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxMessageOutputBase::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0083f8a0(void)

{
  FUN_0083f720();
  FUN_00853f30();
  return;
}



undefined4 * __thiscall FUN_0083f8b0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxAppTraitsBase::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_0083f8d0(void)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = (undefined4 *)operator_new(8);
  if (puVar1 != (undefined4 *)0x0) {
    iVar2 = FUN_00a475e9();
    puVar1[1] = iVar2 + 0x40;
    *puVar1 = wxMessageOutputStderr::vftable;
    return puVar1;
  }
  return (undefined4 *)0x0;
}



void __fastcall FUN_0083f900(int *param_1)

{
  short *psVar1;
  void **ppvVar2;
  int iVar3;
  
  iVar3 = FUN_00850350();
  if (*param_1 != iVar3) {
    psVar1 = (short *)(*param_1 + 8);
    *psVar1 = *psVar1 + -1;
    ppvVar2 = (void **)*param_1;
    if ((*(short *)(ppvVar2 + 2) == 0) && (ppvVar2 != (void **)0x0)) {
      if (*(char *)((int)ppvVar2 + 10) != '\0') {
        _free(*ppvVar2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar2);
    }
    iVar3 = FUN_00850350();
    *param_1 = iVar3;
  }
  return;
}



undefined4 * FUN_0083f950(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxConsoleAppTraits::vftable;
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __thiscall FUN_0083f970(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4b93;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_00850350(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1_00 = uVar1;
  local_4 = 0;
  uVar1 = FUN_00850350();
  param_1_00[1] = uVar1;
  local_4 = CONCAT31(local_4._1_3_,1);
  uVar1 = FUN_00850350();
  param_1_00[2] = uVar1;
  param_1_00[4] = param_1;
  param_1_00[3] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall
FUN_0083f9e0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_00853900(local_30,param_2,param_3,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  local_4 = 0;
  FUN_00845400(param_1,uVar1,param_1_00 + 8);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0083fa70(undefined4 *param_1)

{
  short *psVar1;
  void **ppvVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4bc3;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 1;
  iVar4 = FUN_00850350(uVar3);
  if (param_1[0xe] != iVar4) {
    psVar1 = (short *)(param_1[0xe] + 8);
    *psVar1 = *psVar1 + -1;
    ppvVar2 = (void **)param_1[0xe];
    if ((*(short *)(ppvVar2 + 2) == 0) && (ppvVar2 != (void **)0x0)) {
      if (*(char *)((int)ppvVar2 + 10) != '\0') {
        _free(*ppvVar2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar2);
    }
    uVar5 = FUN_00850350(uVar3);
    param_1[0xe] = uVar5;
  }
  _free((void *)param_1[10]);
  if (7 < (uint)param_1[9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[4]);
  }
  param_1[9] = 7;
  param_1[8] = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0083fb40(undefined4 *param_1)

{
  _free((void *)param_1[8]);
  if (7 < (uint)param_1[7]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[2]);
  }
  param_1[7] = 7;
  param_1[6] = 0;
  *(undefined2 *)(param_1 + 2) = 0;
  *param_1 = wxStackWalkerBase::vftable;
  return;
}



undefined4 * __thiscall FUN_0083fb80(undefined4 *param_1_00,byte param_1)

{
  _free((void *)param_1_00[8]);
  if (7 < (uint)param_1_00[7]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[2]);
  }
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  *param_1_00 = wxStackWalkerBase::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0083fbe0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4b93;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_00850350(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1_00 = uVar1;
  local_4 = 0;
  FUN_0043234d(param_1_00 + 1,param_1,0xffffffff);
  local_4 = CONCAT31(local_4._1_3_,1);
  uVar1 = FUN_00850350();
  param_1_00[2] = uVar1;
  param_1_00[3] = 0;
  param_1_00[4] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_0083fc60(undefined4 param_1_00,int param_1)

{
  short sVar1;
  short *psVar2;
  int iVar3;
  undefined4 *puVar4;
  short *psVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  iVar3 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce568;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == 0) {
    FUN_00432156(DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  else {
    if (DAT_032bd4d4 == 0) {
      DAT_032bd4d4 = FUN_00861440();
    }
    puVar4 = (undefined4 *)FUN_0043c155(&param_1,iVar3,DAT_032bd4d4);
    psVar2 = *(short **)*puVar4;
    local_4 = 0;
    psVar5 = psVar2;
    do {
      sVar1 = *psVar5;
      psVar5 = psVar5 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(psVar2,(int)psVar5 - (int)(psVar2 + 1) >> 1);
    local_4 = 0xffffffff;
    thunk_FUN_0043c1dd();
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_0083fd10(undefined4 param_1_00,short *param_1)

{
  short sVar1;
  short *psVar2;
  
  if (param_1 == (short *)0x0) {
    param_1 = &DAT_00fae9c8;
  }
  psVar2 = param_1;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  FUN_00473ccc(param_1,(int)psVar2 - (int)(param_1 + 1) >> 1);
  return param_1_00;
}



undefined4 __thiscall FUN_0083fd50(undefined4 param_1_00,undefined2 param_1)

{
  FID_conflict_append(1,param_1);
  return param_1_00;
}



// WARNING: Removing unreachable block (ram,0x0083fe02)

int __thiscall FUN_0083fd70(undefined4 param_1_00,int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FID_conflict_assign(param_1_00,0,0xffffffff);
  local_4 = 0;
  uVar2 = FUN_00851200(uVar1);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free((void *)0x0);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_0083fe30(undefined4 *param_1_00,int param_1)

{
  undefined4 uVar1;
  
  uVar1 = *param_1_00;
  if (param_1_00[1] == 0) {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(uVar1,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    return param_1;
  }
  FUN_00852560(param_1,param_1_00[1],0xffffffff);
  return param_1;
}



void FUN_0083fe90(undefined4 *param_1,undefined4 param_2)

{
  uint uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5328;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_30;
  ExceptionList = &local_c;
  FUN_004325b6(param_2);
  local_4 = 0;
  FUN_0083f9e0(*param_1,local_30,&stack0x0000000c);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_0083ff10(int *param_1,int param_2)

{
  (**(code **)(*param_1 + 0xc))();
  *(undefined4 *)(param_2 + 0x18) = 7;
  *(undefined4 *)(param_2 + 0x14) = 0;
  *(undefined2 *)(param_2 + 4) = 0;
  FID_conflict_assign(param_1 + 2,0,0xffffffff);
  *(undefined4 *)(param_2 + 0x1c) = 0;
  return param_2;
}



int __thiscall FUN_0083ff60(int *param_1,int param_2)

{
  (**(code **)(*param_1 + 0x10))();
  *(undefined4 *)(param_2 + 0x18) = 7;
  *(undefined4 *)(param_2 + 0x14) = 0;
  *(undefined2 *)(param_2 + 4) = 0;
  FID_conflict_assign(param_1 + 0x14,0,0xffffffff);
  *(undefined4 *)(param_2 + 0x1c) = 0;
  return param_2;
}



void FUN_0083ffb0(void)

{
  char cVar1;
  uint uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  FUN_0043c211("verbose");
  local_4 = 0;
  cVar1 = FUN_0088b5f0(local_30);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar2);
  }
  if (cVar1 != '\0') {
    DAT_032bcb95 = 1;
  }
  ExceptionList = local_c;
  return;
}



void FUN_00840040(undefined *param_1)

{
  int iVar1;
  undefined *puVar2;
  undefined *local_80;
  undefined **local_68;
  undefined4 local_64;
  undefined *local_60;
  undefined local_5c [24];
  uint local_44;
  void *local_40;
  undefined **local_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4c09;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_68;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_60 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_64 = 1;
  local_38 = `protected:_virtual_class_wxString___thiscall_wxAppTraitsBase::GetAssertStackTrace(void)'
             ::`2'::StackDump::vftable;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 1;
  local_80 = (undefined *)0x2;
  FUN_00891360();
  if (param_1 != local_34) {
    local_80 = (undefined *)0x0;
    FID_conflict_assign(local_34);
  }
  local_68 = (undefined **)&stack0xffffff84;
  local_80 = (undefined *)0x8400f1;
  iVar1 = FUN_00850df0();
  iVar1 = iVar1 + -0x14;
  if (0 < iVar1) {
    do {
      local_68 = &local_80;
      local_80 = (undefined *)0xa;
      puVar2 = (undefined *)FUN_00852900(local_5c);
      local_4._0_1_ = 2;
      if (param_1 != puVar2) {
        local_80 = (undefined *)0x0;
        FID_conflict_assign(puVar2);
      }
      local_4 = CONCAT31(local_4._1_3_,1);
      local_80 = (undefined *)0x84013d;
      _free(local_40);
      if (7 < local_44) {
                    // WARNING: Subroutine does not return
        local_80 = &UNK_00840151;
        FUN_00a3f6a1();
      }
      iVar1 = iVar1 + -1;
    } while (iVar1 != 0);
  }
  local_80 = (undefined *)0x840163;
  _free(local_18);
  if (local_1c < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  local_80 = &UNK_00840177;
  FUN_00a3f6a1();
}



void FUN_008401a0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  uint uVar1;
  undefined local_78 [4];
  uint uStack_74;
  undefined4 uStack_64;
  uint uStack_60;
  void *pvStack_5c;
  undefined local_54 [4];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4c58;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_78;
  ExceptionList = &local_c;
  FUN_0043c211(param_4);
  local_4 = 0;
  FUN_0043c211(param_3);
  local_4._0_1_ = 1;
  FUN_0043c211(param_1);
  local_4 = CONCAT31(local_4._1_3_,2);
  (*(code *)PTR_FUN_03235c4c)(local_78,param_2,local_54,local_30,param_5,uVar1);
  _free(pvStack_5c);
  if (7 < uStack_60) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_74);
  }
  uStack_60 = 7;
  uStack_64 = 0;
  uStack_74 = uStack_74 & 0xffff0000;
  _free(pvStack_38);
  if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_50);
  }
  uStack_3c = 7;
  uStack_40 = 0;
  uStack_50 = uStack_50 & 0xffff0000;
  _free(pvStack_14);
  if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c);
  }
  ExceptionList = local_c;
  return;
}



void FUN_008402e0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  uint uVar1;
  undefined local_9c [4];
  uint uStack_98;
  undefined4 uStack_88;
  uint uStack_84;
  void *pvStack_80;
  undefined local_78 [4];
  uint uStack_74;
  undefined4 uStack_64;
  uint uStack_60;
  void *pvStack_5c;
  undefined local_54 [4];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4ca3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff5c;
  ExceptionList = &local_c;
  FUN_0043c211(param_5);
  local_4 = 0;
  FUN_0043c211(param_4);
  local_4._0_1_ = 1;
  FUN_0043c211(param_3);
  local_4._0_1_ = 2;
  FUN_0043c211(param_1);
  local_4 = CONCAT31(local_4._1_3_,3);
  (*(code *)PTR_FUN_03235c4c)(local_54,param_2,local_9c,local_78,local_30,uVar1);
  _free(pvStack_38);
  if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_50);
  }
  uStack_3c = 7;
  uStack_40 = 0;
  uStack_50 = uStack_50 & 0xffff0000;
  _free(pvStack_80);
  if (7 < uStack_84) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_98);
  }
  uStack_84 = 7;
  uStack_88 = 0;
  uStack_98 = uStack_98 & 0xffff0000;
  _free(pvStack_5c);
  if (7 < uStack_60) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_74);
  }
  uStack_60 = 7;
  uStack_64 = 0;
  uStack_74 = uStack_74 & 0xffff0000;
  _free(pvStack_14);
  if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c);
  }
  ExceptionList = local_c;
  return;
}



void FUN_00840480(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  uint uVar1;
  undefined local_9c [4];
  uint uStack_98;
  undefined4 uStack_88;
  uint uStack_84;
  void *pvStack_80;
  undefined local_78 [4];
  uint uStack_74;
  undefined4 uStack_64;
  uint uStack_60;
  void *pvStack_5c;
  undefined local_54 [4];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4ca3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff5c;
  ExceptionList = &local_c;
  FUN_004325b6(param_5);
  local_4 = 0;
  FUN_0043c211(param_4);
  local_4._0_1_ = 1;
  FUN_0043c211(param_3);
  local_4._0_1_ = 2;
  FUN_0043c211(param_1);
  local_4 = CONCAT31(local_4._1_3_,3);
  (*(code *)PTR_FUN_03235c4c)(local_54,param_2,local_9c,local_78,local_30,uVar1);
  _free(pvStack_38);
  if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_50);
  }
  uStack_3c = 7;
  uStack_40 = 0;
  uStack_50 = uStack_50 & 0xffff0000;
  _free(pvStack_80);
  if (7 < uStack_84) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_98);
  }
  uStack_84 = 7;
  uStack_88 = 0;
  uStack_98 = uStack_98 & 0xffff0000;
  _free(pvStack_5c);
  if (7 < uStack_60) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_74);
  }
  uStack_60 = 7;
  uStack_64 = 0;
  uStack_74 = uStack_74 & 0xffff0000;
  _free(pvStack_14);
  if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c);
  }
  ExceptionList = local_c;
  return;
}



void FUN_00840620(void)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined local_cc [4];
  uint local_c8;
  undefined4 local_b8;
  uint local_b4;
  void *local_b0;
  undefined local_a8 [4];
  undefined4 local_a4;
  uint local_90;
  void *local_8c;
  undefined local_84 [4];
  uint local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4d04;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_cc;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_c;
  local_6c = 7;
  local_70 = 0;
  local_80 = local_80 & 0xffff0000;
  local_68 = (void *)0x0;
  local_4 = 0;
  FUN_004325b6(L"WXTRACE");
  local_4._0_1_ = 1;
  cVar1 = FUN_00895070(local_cc,local_84,uVar2);
  local_4._0_1_ = 0;
  _free(local_b0);
  if (7 < local_b4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_c8);
  }
  if (cVar1 != '\0') {
    FUN_004325b6(&DAT_00d25720);
    local_4._0_1_ = 2;
    FUN_00894710(local_84,local_cc,0);
    local_4 = CONCAT31(local_4._1_3_,4);
    _free(local_b0);
    if (7 < local_b4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_c8);
    }
    local_b4 = 7;
    local_b8 = 0;
    local_c8 = local_c8 & 0xffff0000;
    cVar1 = FUN_00894180();
    while (cVar1 != '\0') {
      uVar3 = FUN_00894270(local_a8);
      local_4._0_1_ = 5;
      FUN_00843250(uVar3);
      local_4 = CONCAT31(local_4._1_3_,4);
      _free(local_8c);
      if (7 < local_90) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_a4);
      }
      cVar1 = FUN_00894180();
    }
    local_4._1_3_ = (undefined3)((uint)local_4 >> 8);
    local_4._0_1_ = 0;
    FUN_0083fa70();
  }
  _free(local_68);
  if (7 < local_6c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_80);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00840800(undefined4 param_1)

{
  wchar_t *pwVar1;
  uint uVar2;
  wchar_t *pwVar3;
  undefined4 ***lpText;
  int iVar4;
  undefined local_34 [4];
  undefined4 ***local_30 [4];
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4d48;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  uVar2 = DAT_0323f878 ^ (uint)local_34;
  ExceptionList = &local_c;
  local_30[0] = (undefined4 ***)((uint)local_30[0] & 0xffff0000);
  local_1c = 7;
  local_20 = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  local_18 = (void *)0x0;
  local_4 = 0;
  pwVar1 = 
  L"\nDo you want to stop the program?\nYou can also choose [Cancel] to suppress further warnings.";
  do {
    pwVar3 = pwVar1;
    pwVar1 = pwVar3 + 1;
  } while (*pwVar3 != L'\0');
  FUN_00473ccc(L"\nDo you want to stop the program?\nYou can also choose [Cancel] to suppress further warnings."
               ,(int)(pwVar3 + -0x692bb4) >> 1);
  lpText = local_30[0];
  if (local_1c < 8) {
    lpText = local_30;
  }
  iVar4 = MessageBoxW((HWND)0x0,(LPCWSTR)lpText,L"wxWidgets Debug Alert",0x13);
  if (iVar4 == 2) {
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30[0],uVar2);
    }
  }
  else {
    if (iVar4 == 6) {
      DebugBreak();
    }
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30[0]);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall
FUN_00840920(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 2) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<void *>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_00840990(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 6) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x211,
                 "wxArgNormalizerWchar<class wxString const &>::wxArgNormalizerWchar",
                 "(argtype & (wxFormatString::Arg_String)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_00840a00(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 6) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x222,
                 "wxArgNormalizerWchar<class wxCStrData const &>::wxArgNormalizerWchar",
                 "(argtype & (wxFormatString::Arg_String)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



int __fastcall FUN_00840a70(int param_1)

{
  short sVar1;
  uint uVar2;
  int iVar3;
  short *psVar4;
  short *psVar5;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  iVar3 = FUN_0083fe30(local_30);
  local_4 = 0;
  if (*(uint *)(iVar3 + 0x18) < 8) {
    psVar5 = (short *)(iVar3 + 4);
  }
  else {
    psVar5 = *(short **)(iVar3 + 4);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  psVar4 = psVar5;
  do {
    sVar1 = *psVar4;
    psVar4 = psVar4 + 1;
  } while (sVar1 != 0);
  FID_conflict_assign(psVar5,(int)psVar4 - (int)(psVar5 + 1) >> 1);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar2);
  }
  *(undefined4 *)(param_1 + 0x1c) = 0;
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00840b30(undefined4 param_1_00,undefined4 param_1)

{
  FID_conflict_append(param_1,0,0xffffffff);
  return param_1_00;
}



void __fastcall FUN_00840b50(void **param_1)

{
  FUN_00893cf0(param_1[1],*param_1,FUN_008c64b0);
  param_1[2] = (void *)0x0;
  _free(*param_1);
  return;
}



void __fastcall FUN_00840b80(undefined4 param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_008854f0();
  FUN_0083fe90(param_1,uVar1);
  return;
}



void FUN_00840ba0(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_0086a790(param_1,0);
  if (iVar1 != -1) {
    FUN_0086a1e0(iVar1,1);
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0xd5b,"wxEvtHandlerArray::Remove",
                 "iIndex != (-1)","removing inexistent element in wxArray::Remove");
  }
  return;
}



void __fastcall FUN_00840bf0(undefined4 *param_1)

{
  *param_1 = wxEventFilter::vftable;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[1] != 0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/eventfilter.h",0x31,
                 "wxEventFilter::~wxEventFilter","!m_next",
                 "Forgot to call wxEvtHandler::RemoveFilter()?");
  }
  return;
}



undefined4 * __thiscall FUN_00840c30(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxEventFilter::vftable;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1_00[1] != 0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/eventfilter.h",0x31,
                 "wxEventFilter::~wxEventFilter","!m_next",
                 "Forgot to call wxEvtHandler::RemoveFilter()?");
  }
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_00840c80(int param_1_00,int param_1,uint param_2)

{
  int iVar1;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= param_2)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                 "nIndex < m_nCount",L"wxArrayString: index out of bounds");
  }
  iVar1 = *(int *)(param_1_00 + 8);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(iVar1 + param_2 * 0x24,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



undefined4 * __thiscall
FUN_00840d00(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 9) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<unsigned long>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



void __fastcall FUN_00840d70(int **param_1)

{
  int *piVar1;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    piVar1 = *param_1;
    if (0 < *piVar1) {
      *piVar1 = *piVar1 + -1;
      return;
    }
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/recguard.h",0x26,
                 "wxRecursionGuard::~wxRecursionGuard","m_flag > 0",
                 L"unbalanced wxRecursionGuards!?");
  }
  **param_1 = **param_1 + -1;
  return;
}



undefined4 * __fastcall FUN_00840db0(undefined4 *param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4dfb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00845b70(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  puVar1 = param_1 + 0x10;
  *puVar1 = wxEventFilter::vftable;
  param_1[0x11] = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  *param_1 = wxAppConsoleBase::vftable;
  *puVar1 = wxAppConsoleBase::vftable;
  FUN_00853ce0(0);
  param_1[0x17] = 0;
  param_1[0x18] = 0;
  param_1[0x1f] = 7;
  param_1[0x1e] = 0;
  *(undefined2 *)(param_1 + 0x1a) = 0;
  param_1[0x20] = 0;
  param_1[0x28] = 7;
  param_1[0x27] = 0;
  *(undefined2 *)(param_1 + 0x23) = 0;
  param_1[0x29] = 0;
  param_1[0x31] = 7;
  param_1[0x30] = 0;
  *(undefined2 *)(param_1 + 0x2c) = 0;
  param_1[0x32] = 0;
  param_1[0x3a] = 7;
  param_1[0x39] = 0;
  *(undefined2 *)(param_1 + 0x35) = 0;
  param_1[0x3b] = 0;
  param_1[0x43] = 7;
  param_1[0x42] = 0;
  *(undefined2 *)(param_1 + 0x3e) = 0;
  param_1[0x44] = 0;
  local_4._0_1_ = 7;
  FUN_0086a600();
  local_4._0_1_ = 8;
  FUN_0086a600();
  local_4._0_1_ = 9;
  FUN_0086bd70(0);
  param_1[0x46] = 0;
  param_1[0x47] = 0;
  *(undefined *)(param_1 + 0x54) = 1;
  local_4 = CONCAT31(local_4._1_3_,10);
  DAT_032bcb68 = param_1;
  FUN_00840620();
  if ((undefined4 *)param_1[0x46] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x46])(1);
    param_1[0x46] = 0;
  }
  FUN_00845720(puVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_00840f20(void)

{
  FUN_00841b80();
  return;
}



void __fastcall FUN_00840f30(undefined4 *param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4dfb;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  puVar1 = param_1 + 0x10;
  *param_1 = wxAppConsoleBase::vftable;
  *puVar1 = wxAppConsoleBase::vftable;
  local_4 = 10;
  FUN_00845770(puVar1,uVar2);
  DAT_032bcb68 = 0;
  if ((undefined4 *)param_1[0x46] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x46])(1);
  }
  local_4._0_1_ = 9;
  FUN_0086bd80();
  local_4._0_1_ = 8;
  FUN_0086aa30();
  local_4._0_1_ = 7;
  FUN_0086aa30();
  _free((void *)param_1[0x44]);
  if (7 < (uint)param_1[0x43]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x3e]);
  }
  param_1[0x43] = 7;
  param_1[0x42] = 0;
  *(undefined2 *)(param_1 + 0x3e) = 0;
  _free((void *)param_1[0x3b]);
  if (7 < (uint)param_1[0x3a]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x35]);
  }
  param_1[0x3a] = 7;
  param_1[0x39] = 0;
  *(undefined2 *)(param_1 + 0x35) = 0;
  _free((void *)param_1[0x32]);
  if (7 < (uint)param_1[0x31]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x2c]);
  }
  param_1[0x31] = 7;
  param_1[0x30] = 0;
  *(undefined2 *)(param_1 + 0x2c) = 0;
  _free((void *)param_1[0x29]);
  if (7 < (uint)param_1[0x28]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x23]);
  }
  param_1[0x28] = 7;
  param_1[0x27] = 0;
  *(undefined2 *)(param_1 + 0x23) = 0;
  _free((void *)param_1[0x20]);
  if (7 < (uint)param_1[0x1f]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x1a]);
  }
  param_1[0x1f] = 7;
  param_1[0x1e] = 0;
  *(undefined2 *)(param_1 + 0x1a) = 0;
  local_4._0_1_ = 1;
  FUN_0083f720();
  FUN_00853f30();
  *puVar1 = wxEventFilter::vftable;
  local_4 = (uint)local_4._1_3_ << 8;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[0x11] != 0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/eventfilter.h",0x31,
                 "wxEventFilter::~wxEventFilter","!m_next",
                 "Forgot to call wxEvtHandler::RemoveFilter()?");
  }
  local_4 = 0xffffffff;
  FUN_00846530();
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_00841170(int param_1_00,int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be0da1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0;
  FID_conflict_assign(param_1_00 + 0xac,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  if ((*(int *)(param_1 + 0x14) == 0) && (*(int *)(param_1_00 + 0x50) != 0)) {
    uVar2 = FUN_00840c80(local_30,0);
    local_4 = 1;
    FUN_00858c30(uVar2,0,param_1,0,0,uVar1);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00841240(int param_1_00,int param_1)

{
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0xe4) == 0) {
    if (*(int *)(param_1_00 + 0xc0) == 0) {
      FUN_00841170(local_30);
      local_4 = 0;
      FUN_0083fd70(param_1);
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
    }
    else {
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(param_1_00 + 0xac,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
    }
  }
  else {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(param_1_00 + 0xd0,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
  }
  ExceptionList = local_c;
  return param_1;
}



int __fastcall FUN_00841320(int *param_1)

{
  int iVar1;
  
  if (param_1[0x46] == 0) {
    iVar1 = (**(code **)(*param_1 + 0xc0))();
    param_1[0x46] = iVar1;
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return iVar1;
    }
    if (iVar1 != 0) {
      return iVar1;
    }
    FUN_00840480("..\\..\\src\\common\\appbase.cpp",0x129,"wxAppConsoleBase::GetTraits","m_traits",
                 L"wxApp::CreateTraits() failed?");
  }
  return param_1[0x46];
}



void FUN_00841380(undefined4 param_1)

{
  int iVar1;
  
  FUN_0086bd90();
  FUN_00840ba0(param_1);
  iVar1 = FUN_0086a790(param_1,0);
  if (iVar1 == -1) {
    FUN_0086a400(param_1,1);
  }
  FUN_0086bda0();
  return;
}



void FUN_008413d0(undefined4 param_1)

{
  int iVar1;
  
  FUN_0086bd90();
  iVar1 = FUN_0086a790(param_1,0);
  if (iVar1 != -1) {
    FUN_00840ba0(param_1);
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      iVar1 = FUN_0086a790(param_1,0);
      if (iVar1 != -1) {
        FUN_008402e0("..\\..\\src\\common\\appbase.cpp",0x1b3,
                     "wxAppConsoleBase::RemovePendingEventHandler",
                     "m_handlersWithPendingEvents.Index(toRemove) == wxNOT_FOUND",
                     "Handler occurs twice in the m_handlersWithPendingEvents list!");
      }
    }
  }
  iVar1 = FUN_0086a790(param_1,0);
  if (iVar1 != -1) {
    FUN_00840ba0(param_1);
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      iVar1 = FUN_0086a790(param_1,0);
      if (iVar1 != -1) {
        FUN_008402e0("..\\..\\src\\common\\appbase.cpp",0x1bd,
                     "wxAppConsoleBase::RemovePendingEventHandler",
                     "m_handlersWithPendingDelayedEvents.Index(toRemove) == wxNOT_FOUND",
                     "Handler occurs twice in m_handlersWithPendingDelayedEvents list!");
      }
    }
  }
  FUN_0086bda0();
  return;
}



void __fastcall FUN_008414b0(int param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  
  if (*(char *)(param_1 + 0x150) != '\0') {
    FUN_0086bd90();
    if (*(int *)(param_1 + 0x130) == 0) {
      iVar2 = *(int *)(param_1 + 0x124);
      while (iVar2 != 0) {
        FUN_0086bda0();
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x124) == 0)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        FUN_00847000();
        FUN_0086bd90();
        iVar2 = *(int *)(param_1 + 0x124);
      }
      uVar1 = *(uint *)(param_1 + 0x130);
      if (uVar1 != 0) {
        if (*(uint *)(param_1 + 0x120) < uVar1) {
          FUN_0086a310(uVar1);
        }
        uVar3 = 0;
        if (uVar1 != 0) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x130) <= uVar3)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            FUN_0086a400(*(undefined4 *)(*(int *)(param_1 + 0x134) + uVar3 * 4),1);
            uVar3 = uVar3 + 1;
          } while (uVar3 < uVar1);
        }
        FUN_0086a880();
      }
      FUN_0086bda0();
      return;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\appbase.cpp",0x1ea,"wxAppConsoleBase::ProcessPendingEvents"
                   ,"m_handlersWithPendingDelayedEvents.IsEmpty()",
                   "this helper list should be empty");
    }
  }
  return;
}



void FUN_00841610(void)

{
  int *piVar1;
  
  if (DAT_032bcb68 != 0) {
    piVar1 = (int *)FUN_00841320();
    if (piVar1 != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x0084162a. Too many branches
                    // WARNING: Treating indirect jump as call
      (**(code **)(*piVar1 + 0x38))();
      return;
    }
  }
  return;
}



void __thiscall FUN_00841630(int *param_1_00,undefined4 param_1)

{
  wchar_t *pwVar1;
  wchar_t *pwVar2;
  undefined4 uVar3;
  int iStack_84;
  undefined auStack_80 [4];
  uint uStack_7c;
  undefined4 uStack_6c;
  uint uStack_68;
  void *pvStack_64;
  undefined auStack_5c [4];
  undefined4 uStack_58;
  undefined2 local_54;
  uint local_44;
  void *local_40;
  undefined4 local_3c;
  undefined auStack_38 [4];
  uint local_34 [4];
  int iStack_24;
  uint uStack_20;
  void *pvStack_1c;
  void *local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  uStack_8 = &LAB_00bc4e43;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&iStack_84);
  ExceptionList = &local_c;
  local_40 = (void *)0x7;
  local_44 = 0;
  local_54 = 0;
  local_3c = 0;
  local_4 = 0;
  (**(code **)(*param_1_00 + 0x4c))(local_34,DAT_0323f878 ^ (uint)&stack0xffffff70);
  uStack_8._0_1_ = 1;
  if (iStack_24 != 0) {
    pwVar1 = L"\n\nCall stack:\n";
    do {
      pwVar2 = pwVar1;
      pwVar1 = pwVar2 + 1;
    } while (*pwVar2 != L'\0');
    FUN_00473ccc(L"\n\nCall stack:\n",(int)(pwVar2 + -0x692f58) >> 1);
    FID_conflict_append(auStack_38,0,0xffffffff);
    iStack_84 = FUN_00a475e9();
    iStack_84 = iStack_84 + 0x40;
    uStack_8._0_1_ = 2;
    FUN_008935d0(auStack_5c);
  }
  uStack_8._0_1_ = 1;
  uVar3 = FUN_008531f0(auStack_80,param_1,auStack_5c);
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,3);
  FUN_00840800(uVar3);
  _free(pvStack_64);
  if (7 < uStack_68) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_7c);
  }
  uStack_68 = 7;
  uStack_6c = 0;
  uStack_7c = uStack_7c & 0xffff0000;
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_34[0]);
  }
  uStack_20 = 7;
  iStack_24 = 0;
  local_34[0] = local_34[0] & 0xffff0000;
  _free(local_40);
  if (7 < local_44) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_58);
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_008417f0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_4)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  uint in_stack_00000020;
  void *in_stack_00000024;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf538;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840990(&param_2,param_1,1);
  uVar3 = FUN_008854f0(uVar2);
  iVar1 = *param_1_00;
  uVar4 = FUN_00884e10();
  (**(code **)(iVar1 + 8))(param_1_00,uVar3,uVar4);
  _free(in_stack_00000024);
  if (7 < in_stack_00000020) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall
FUN_00841890(undefined4 param_1_00,undefined4 param_1,int param_2,undefined4 param_3,char param_4,
            int param_5,undefined4 param_6,char param_7,int param_8,undefined4 param_9,char param_10
            )

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4e98;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 2;
  FUN_00840a00(&param_8,param_1,3);
  FUN_00840a00(&param_5,param_1,2);
  FUN_00840a00(&param_2,param_1,1);
  uVar5 = FUN_008854f0(uVar4);
  uVar6 = FUN_00884e20();
  uVar6 = FUN_00884e20(uVar6);
  uVar6 = FUN_00884e20(uVar6);
  uVar5 = FUN_00853980(param_1_00,uVar5,uVar6);
  iVar3 = param_8;
  iVar2 = param_5;
  iVar1 = param_2;
  if ((param_4 != '\0') && (param_2 != 0)) {
    _free(*(void **)(param_2 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  if ((param_7 != '\0') && (param_5 != 0)) {
    _free(*(void **)(param_5 + 0x1c));
    if (7 < *(uint *)(iVar2 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar2 + 4));
    }
    *(undefined4 *)(iVar2 + 0x18) = 7;
    *(undefined4 *)(iVar2 + 0x14) = 0;
    *(undefined2 *)(iVar2 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  if ((param_10 != '\0') && (param_8 != 0)) {
    _free(*(void **)(param_8 + 0x1c));
    if (7 < *(uint *)(iVar3 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar3 + 4));
    }
    *(undefined4 *)(iVar3 + 0x18) = 7;
    *(undefined4 *)(iVar3 + 0x14) = 0;
    *(undefined2 *)(iVar3 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar3);
  }
  ExceptionList = local_c;
  return uVar5;
}



undefined4
FUN_00841a20(undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4,char param_5)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4ec8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840a00(&param_3,param_2,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20();
  FUN_00853850(param_1,uVar3,uVar4);
  iVar1 = param_3;
  if ((param_5 != '\0') && (param_3 != 0)) {
    _free(*(void **)(param_3 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00841af0(void **param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4ef8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00893cf0(param_1[5],param_1[4],FUN_008c64b0,DAT_0323f878 ^ (uint)&stack0xffffffec);
  param_1[6] = (void *)0x0;
  _free(param_1[4]);
  local_4 = 0xffffffff;
  FUN_00893cf0(param_1[1],*param_1,FUN_009e7620);
  param_1[2] = (void *)0x0;
  _free(*param_1);
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00841b80(undefined4 param_1_00,byte param_1)

{
  FUN_00840f30();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_00841ba0(void)

{
  int *piVar1;
  
  piVar1 = (int *)FUN_00841320();
  (**(code **)(*piVar1 + 0x1c))();
  return 1;
}



undefined4 __fastcall FUN_00841bc0(int param_1)

{
  int *piVar1;
  int *piVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4f28;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  piVar1 = (int *)FUN_00841320(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  piVar2 = (int *)(**(code **)(*piVar1 + 0x2c))();
  piVar1 = *(int **)(param_1 + 0x11c);
  *(int **)(param_1 + 0x11c) = piVar2;
  uStack_4 = 0;
  if (piVar2 == (int *)0x0) {
    uVar3 = 0xffffffff;
  }
  else {
    uVar3 = (**(code **)(*piVar2 + 8))();
  }
  uStack_4 = 0xffffffff;
  *(int **)(param_1 + 0x11c) = piVar1;
  if (piVar2 != (int *)0x0) {
    (**(code **)*piVar2)(1);
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined FUN_00841c70(undefined4 param_1)

{
  undefined uVar1;
  int *piVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4f58;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032bdbdc == 0) {
    piVar2 = (int *)FUN_00841320(DAT_0323f878 ^ (uint)&stack0xffffffe8);
    puVar3 = (undefined4 *)(**(code **)(*piVar2 + 0x2c))();
    uStack_4 = 0;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (puVar3 == (undefined4 *)0x0)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/scopedptr.h",0x56,
                   "wxScopedPtr<class wxEventLoopBase>::operator ->","m_ptr != 0",0);
    }
    uVar1 = FUN_00890620(param_1);
    uStack_4 = 0xffffffff;
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
    ExceptionList = local_c;
    return uVar1;
  }
  uVar1 = FUN_00890620(param_1);
  ExceptionList = local_c;
  return uVar1;
}



undefined * FUN_00841d50(void)

{
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bc4f98;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  local_8 = 1;
  __CxxThrowException_8(0,0);
  FUN_0083fc60("unknown exception");
  return &LAB_00841dbb;
}



undefined * Catch_All_00841da1(void)

{
  int unaff_EBP;
  
  FUN_0083fc60("unknown exception");
  *(undefined4 *)(unaff_EBP + -4) = 0;
  return &LAB_00841dbb;
}



void __thiscall thunk_FUN_00841630(int *param_1_00,undefined4 param_1)

{
  wchar_t *pwVar1;
  wchar_t *pwVar2;
  undefined4 uVar3;
  int iStack_84;
  undefined auStack_80 [4];
  uint uStack_7c;
  undefined4 uStack_6c;
  uint uStack_68;
  void *pvStack_64;
  undefined auStack_5c [4];
  undefined4 uStack_58;
  undefined2 uStack_54;
  uint uStack_44;
  void *pvStack_40;
  undefined4 uStack_3c;
  undefined auStack_38 [4];
  uint auStack_34 [4];
  int iStack_24;
  uint uStack_20;
  void *pvStack_1c;
  void *pvStack_10;
  void *pvStack_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_8 = &LAB_00bc4e43;
  pvStack_c = ExceptionList;
  pvStack_10 = (void *)(DAT_0323f878 ^ (uint)&iStack_84);
  ExceptionList = &pvStack_c;
  pvStack_40 = (void *)0x7;
  uStack_44 = 0;
  uStack_54 = 0;
  uStack_3c = 0;
  uStack_4 = 0;
  (**(code **)(*param_1_00 + 0x4c))(auStack_34,DAT_0323f878 ^ (uint)&stack0xffffff70);
  uStack_8._0_1_ = 1;
  if (iStack_24 != 0) {
    pwVar1 = L"\n\nCall stack:\n";
    do {
      pwVar2 = pwVar1;
      pwVar1 = pwVar2 + 1;
    } while (*pwVar2 != L'\0');
    FUN_00473ccc(L"\n\nCall stack:\n",(int)(pwVar2 + -0x692f58) >> 1);
    FID_conflict_append(auStack_38,0,0xffffffff);
    iStack_84 = FUN_00a475e9();
    iStack_84 = iStack_84 + 0x40;
    uStack_8._0_1_ = 2;
    FUN_008935d0(auStack_5c);
  }
  uStack_8._0_1_ = 1;
  uVar3 = FUN_008531f0(auStack_80,param_1,auStack_5c);
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,3);
  FUN_00840800(uVar3);
  _free(pvStack_64);
  if (7 < uStack_68) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_7c);
  }
  uStack_68 = 7;
  uStack_6c = 0;
  uStack_7c = uStack_7c & 0xffff0000;
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(auStack_34[0]);
  }
  uStack_20 = 7;
  iStack_24 = 0;
  auStack_34[0] = auStack_34[0] & 0xffff0000;
  _free(pvStack_40);
  if (7 < uStack_44) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_58);
  }
  ExceptionList = pvStack_10;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00841e40(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_00840920(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,param_2);
  return param_1;
}



undefined4 __thiscall
FUN_00841e80(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,uint param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 param_7;
  uint param_8;
  void *param_9;
  undefined4 param_11;
  undefined4 param_13;
  uint param_14;
  void *param_15;
  undefined4 local_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be54c0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00840990(&stack0x00000030,param_1,3);
  FUN_00820e3f(param_11,param_1,2);
  FUN_00840990(&param_2,param_1,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  uVar3 = FUN_00884e10(local_18,uVar3);
  uVar2 = FUN_00853980(param_1_00,uVar2,uVar3);
  _free(param_9);
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  param_8 = 7;
  param_7 = 0;
  param_3 = param_3 & 0xffff0000;
  _free(param_15);
  if (7 < param_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_13);
  }
  ExceptionList = local_c;
  return uVar2;
}



undefined4 FUN_00841f90(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_00840d00(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,param_2);
  return param_1;
}



void __fastcall
FUN_00841fd0(undefined4 param_1_00,undefined4 param_2_00,undefined4 param_1,undefined4 param_2,
            int param_3)

{
  short sVar1;
  short *psVar2;
  DWORD DVar3;
  int unaff_EDI;
  int local_80;
  int *piStack_7c;
  int iStack_78;
  undefined4 local_74 [6];
  uint uStack_5c;
  undefined4 uStack_4c;
  uint uStack_48;
  void *pvStack_44;
  undefined4 ****appppuStack_38 [2];
  undefined2 local_30;
  undefined4 uStack_28;
  uint uStack_24;
  void *local_20;
  undefined4 local_1c;
  undefined4 local_18;
  void *pvStack_14;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc4ff0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  ExceptionList = &local_c;
  local_80 = param_3;
  local_1c = 7;
  local_20 = (void *)0x0;
  local_30 = 0;
  local_18 = 0;
  local_4 = 0;
  local_74[0] = param_2_00;
  FUN_004181eb();
  uStack_28 = 0;
  if (uStack_24 < 8) {
    appppuStack_38[0] = appppuStack_38;
  }
  *(undefined2 *)appppuStack_38[0] = 0;
  FUN_0081c0f1();
  local_c._0_1_ = 1;
  FID_conflict_assign();
  local_c._0_1_ = 2;
  FID_conflict_assign(param_1,0,0xffffffff);
  local_c._0_1_ = 1;
  FUN_00841e80(local_74);
  local_c = (void *)((uint)local_c._1_3_ << 8);
  FUN_0081b5bc();
  if (*(int *)(unaff_EDI + 0x14) != 0) {
    psVar2 = &DAT_00d25f30;
    do {
      sVar1 = *psVar2;
      psVar2 = psVar2 + 1;
    } while (sVar1 != 0);
    FUN_00473ccc();
    FID_conflict_append();
    psVar2 = &DAT_00d25f28;
    do {
      sVar1 = *psVar2;
      psVar2 = psVar2 + 1;
    } while (sVar1 != 0);
    FUN_00473ccc();
  }
  if (*(int *)(iStack_78 + 0x14) == 0) {
    FID_conflict_append();
  }
  else {
    psVar2 = &DAT_00d25f20;
    do {
      sVar1 = *psVar2;
      psVar2 = psVar2 + 1;
    } while (sVar1 != 0);
    FUN_00473ccc();
    FID_conflict_append();
  }
  if ((DAT_032bdb68 != 0) && (DVar3 = GetCurrentThreadId(), DVar3 != DAT_032bdb68)) {
    FUN_0083fbe0();
    local_c._0_1_ = 3;
    GetCurrentThreadId();
    FUN_00841f90();
    local_c._0_1_ = 4;
    FID_conflict_append();
    _free(pvStack_44);
    if (7 < uStack_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_48 = 7;
    uStack_4c = 0;
    uStack_5c = uStack_5c & 0xffff0000;
    local_c = (void *)((uint)local_c._1_3_ << 8);
    FUN_0081b5bc();
  }
  local_80 = FUN_00a475e9();
  local_80 = local_80 + 0x40;
  local_c._0_1_ = 5;
  FUN_008935d0();
  local_c = (void *)((uint)local_c._1_3_ << 8);
  if (DAT_032bcb8c == '\0') {
    if (piStack_7c == (int *)0x0) {
      DAT_032bcb8c = FUN_00840800();
    }
    else {
      DAT_032bcb8c = (**(code **)(*piStack_7c + 0x20))();
    }
  }
  _free(local_20);
  if (uStack_24 < 8) {
    ExceptionList = pvStack_14;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



undefined4 __thiscall FUN_00842300(undefined4 param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_44 [20];
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca1c0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  FUN_0081c0f1(&DAT_00d25f74);
  local_4 = 0;
  uVar2 = FUN_0081c086(local_30,local_44,param_1,uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  FID_conflict_append(uVar2,0,0xffffffff);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  local_4 = 0xffffffff;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_008423d0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  DWORD DVar1;
  __time64_t _Var2;
  
  *param_1_00 = param_1;
  param_1_00[2] = param_2;
  param_1_00[4] = param_4;
  param_1_00[3] = param_3;
  param_1_00[5] = param_5;
  _Var2 = __time64((__time64_t *)0x0);
  *(__time64_t *)(param_1_00 + 6) = _Var2;
  DVar1 = GetCurrentThreadId();
  param_1_00[8] = DVar1;
  param_1_00[9] = 0;
  param_1_00[0x10] = 7;
  param_1_00[0xf] = 0;
  *(undefined2 *)(param_1_00 + 0xb) = 0;
  param_1_00[0x11] = 0;
  return param_1_00;
}



void __fastcall FUN_00842440(int param_1)

{
  int iVar1;
  
  _free(*(void **)(param_1 + 0x44));
  if (7 < *(uint *)(param_1 + 0x40)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x2c));
  }
  *(undefined4 *)(param_1 + 0x40) = 7;
  *(undefined4 *)(param_1 + 0x3c) = 0;
  *(undefined2 *)(param_1 + 0x2c) = 0;
  iVar1 = *(int *)(param_1 + 0x24);
  if (iVar1 != 0) {
    FUN_00841af0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void FUN_00842490(byte *param_1,undefined4 param_2)

{
  byte bVar1;
  byte *pbVar2;
  int iVar3;
  undefined4 uVar4;
  char *pcVar5;
  bool bVar6;
  undefined auStack_150 [4];
  undefined4 uStack_14c;
  undefined **ppuStack_148;
  undefined *puStack_144;
  undefined4 uStack_140;
  char *pcStack_13c;
  byte *pbStack_138;
  char *pcStack_134;
  byte **local_11c;
  undefined local_118 [124];
  undefined4 local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [24];
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc506f;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_11c;
  ExceptionList = &local_c;
  pcVar5 = "2.9.3 (wchar_t,Visual C++ 1500,wx containers)";
  pbVar2 = param_1;
  do {
    bVar1 = *pbVar2;
    bVar6 = bVar1 < (byte)*pcVar5;
    if (bVar1 != *pcVar5) {
LAB_00842502:
      iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
      goto LAB_00842509;
    }
    if (bVar1 == 0) break;
    bVar1 = pbVar2[1];
    bVar6 = bVar1 < ((byte *)pcVar5)[1];
    if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00842502;
    pbVar2 = pbVar2 + 2;
    pcVar5 = (char *)((byte *)pcVar5 + 2);
  } while (bVar1 != 0);
  iVar3 = 0;
LAB_00842509:
  if (iVar3 != 0) {
    pcStack_134 = local_34;
    pbStack_138 = (byte *)0x842523;
    FUN_00853800();
    pcStack_13c = local_58;
    pbStack_138 = param_1;
    local_4 = 0;
    uStack_140 = 0x842538;
    FUN_00853800();
    puStack_144 = local_7c;
    uStack_140 = param_2;
    local_4._0_1_ = 1;
    ppuStack_148 = (undefined **)0x84254e;
    FUN_00853800();
    local_88 = 7;
    local_8c = 0;
    local_9c._0_2_ = 0;
    local_84 = (void *)0x0;
    local_4._0_1_ = 3;
    pcStack_134 = (char *)0x84258b;
    FUN_0081c0f1();
    local_11c = &pbStack_138;
    pcStack_13c = (char *)&pbStack_138;
    local_4._0_1_ = 4;
    uStack_140 = 0x8425a9;
    FUN_00432231();
    local_11c = &puStack_144;
    ppuStack_148 = &puStack_144;
    uStack_14c = 0x8425bf;
    FUN_00432231();
    local_11c = (byte **)auStack_150;
    FUN_00432231(auStack_150);
    FUN_00841890(local_118);
    local_4._0_1_ = 3;
    FUN_0081b5bc();
    pcStack_134 = (char *)0x842608;
    FUN_00432231();
    local_4._0_1_ = 5;
    pcStack_134 = (char *)0x84261a;
    FUN_0083f970();
    pcStack_134 = "wxAppConsoleBase::CheckBuildOptions";
    pbStack_138 = (byte *)0x2ed;
    pcStack_13c = "..\\..\\src\\common\\appbase.cpp";
    uStack_140 = 0;
    local_4._0_1_ = 6;
    puStack_144 = (undefined *)0x842640;
    uVar4 = FUN_008423d0();
    local_4._0_1_ = 7;
    FUN_008854f0();
    pbStack_138 = (byte *)0x842659;
    pcStack_134 = (char *)uVar4;
    FUN_0083fe90();
    local_4._0_1_ = 6;
    FUN_00842440();
    local_4 = CONCAT31(local_4._1_3_,5);
    FUN_0081b5bc();
    FUN_00432214();
    pcStack_134 = (char *)0x842694;
    _free(local_84);
    if (7 < local_88) {
                    // WARNING: Subroutine does not return
      pcStack_134 = &UNK_008426b2;
      FUN_00a3f6a1();
    }
    local_88 = 7;
    local_8c = 0;
    local_9c = (uint)local_9c._2_2_ << 0x10;
    pcStack_134 = (char *)0x8426da;
    _free(local_60);
    if (7 < local_64) {
                    // WARNING: Subroutine does not return
      pcStack_134 = &UNK_008426f3;
      FUN_00a3f6a1();
    }
    local_64 = 7;
    local_68 = 0;
    local_78 = local_78 & 0xffff0000;
    pcStack_134 = (char *)0x84271b;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      pcStack_134 = &UNK_00842734;
      FUN_00a3f6a1();
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    pcStack_134 = (char *)0x84275c;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      pcStack_134 = &UNK_00842775;
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008427b0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  uint uVar1;
  undefined4 local_98;
  uint local_84;
  void *local_80;
  undefined local_78 [4];
  uint local_74;
  undefined4 local_64;
  uint local_60;
  void *local_5c;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc50c3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff58;
  ExceptionList = &local_c;
  FUN_004325b6(param_5);
  local_4 = 0;
  FUN_004325b6(param_4);
  local_4._0_1_ = 1;
  FUN_004325b6(param_3);
  local_4._0_1_ = 2;
  FUN_004325b6(param_1);
  local_4 = CONCAT31(local_4._1_3_,3);
  FUN_00841320(uVar1);
  FUN_00841fd0(local_54,param_2,local_78);
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_80);
  if (7 < local_84) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_98);
  }
  _free(local_5c);
  if (7 < local_60) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_74);
  }
  local_60 = 7;
  local_64 = 0;
  local_74 = local_74 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return;
}



void FUN_00842950(int *param_1)

{
  int iVar1;
  undefined *puVar2;
  undefined *puStack_b8;
  undefined *puStack_b4;
  undefined auStack_98 [3];
  char local_95;
  undefined local_94 [4];
  uint local_90;
  undefined4 local_80;
  uint local_7c;
  void *local_78;
  undefined local_70 [20];
  undefined **local_5c;
  uint uStack_40;
  void *pvStack_3c;
  int local_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5139;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_98;
  ExceptionList = &local_c;
  puStack_b4 = (undefined *)0x8429a2;
  FUN_0081c0f1();
  puStack_b4 = local_70;
  puStack_b8 = local_94;
  local_4 = 0;
  puStack_b8 = (undefined *)FUN_00821558();
  puStack_b4 = (undefined *)0x0;
  local_4 = CONCAT31(local_4._1_3_,1);
  FID_conflict_append();
  puStack_b4 = (undefined *)0x8429e1;
  _free(local_78);
  if (7 < local_7c) {
                    // WARNING: Subroutine does not return
    puStack_b4 = &UNK_008429f9;
    FUN_00a3f6a1();
  }
  local_90 = local_90 & 0xffff0000;
  local_7c = 7;
  local_80 = 0;
  local_4 = 0xffffffff;
  FUN_0081b5bc();
  puStack_b4 = (undefined *)0x842a2f;
  FUN_0083ff10();
  local_4 = 2;
  if (local_20 == 0) {
    puStack_b4 = (undefined *)0x842ac7;
    FUN_0081c0f1();
    puStack_b4 = local_70;
    puStack_b8 = local_94;
    local_4._0_1_ = 5;
    puStack_b8 = (undefined *)FUN_00841e40();
    puStack_b4 = (undefined *)0x0;
    local_4 = CONCAT31(local_4._1_3_,6);
    FID_conflict_append();
    puStack_b4 = (undefined *)0x842b02;
    _free(local_78);
    if (7 < local_7c) {
                    // WARNING: Subroutine does not return
      puStack_b4 = &UNK_00842b15;
      FUN_00a3f6a1();
    }
  }
  else {
    puStack_b4 = (undefined *)0x842a51;
    FUN_0081c0f1();
    local_5c = &puStack_b8;
    local_4._0_1_ = 3;
    FUN_00432231(&puStack_b8);
    puStack_b8 = (undefined *)FUN_00841a20(local_94,local_70);
    puStack_b4 = (undefined *)0x0;
    local_4 = CONCAT31(local_4._1_3_,4);
    FID_conflict_append();
    puStack_b4 = (undefined *)0x842a9e;
    _free(local_78);
    if (7 < local_7c) {
                    // WARNING: Subroutine does not return
      puStack_b4 = &UNK_00842ab1;
      FUN_00a3f6a1();
    }
  }
  local_90 = local_90 & 0xffff0000;
  local_7c = 7;
  local_80 = 0;
  local_4._0_1_ = 2;
  FUN_0081b5bc();
  puStack_b4 = (undefined *)0x842b48;
  iVar1 = FUN_0083ff60();
  local_95 = *(int *)(iVar1 + 0x14) != 0;
  puStack_b4 = (undefined *)0x842b5a;
  _free(local_78);
  if (7 < local_7c) {
                    // WARNING: Subroutine does not return
    puStack_b4 = &UNK_00842b6d;
    FUN_00a3f6a1();
  }
  if (local_95 != '\0') {
    puStack_b4 = (undefined *)0x842b83;
    puVar2 = (undefined *)FUN_0083ff60();
    local_4._0_1_ = 7;
    (**(code **)(*param_1 + 0x10))();
    puStack_b4 = (undefined *)0x1;
    puStack_b8 = (undefined *)0x842ba4;
    FID_conflict_append();
    puStack_b4 = (undefined *)0x0;
    puStack_b8 = puVar2;
    FID_conflict_append();
    puStack_b4 = (undefined *)0x1;
    puStack_b8 = (undefined *)0x842bbb;
    FID_conflict_append();
    puStack_b4 = (undefined *)0x842bc3;
    FUN_00842300();
    local_4._0_1_ = 2;
    puStack_b4 = (undefined *)0x842bd5;
    _free(pvStack_3c);
    if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
      puStack_b4 = &UNK_00842be8;
      FUN_00a3f6a1();
    }
  }
  puStack_b4 = (undefined *)0x1;
  puStack_b8 = (undefined *)0x842bf6;
  FID_conflict_append();
  puStack_b4 = (undefined *)0x842c03;
  _free(pvStack_18);
  if (uStack_1c < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  puStack_b4 = &UNK_00842c19;
  FUN_00a3f6a1();
}



void FUN_00842c50(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  int *piVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  undefined local_60 [12];
  undefined local_54 [12];
  undefined local_48 [12];
  undefined local_3c [12];
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc51a0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_c;
  FUN_0043c211("exit-on-assert");
  local_4 = 0;
  iVar2 = FUN_00897050(local_30,uVar1);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (iVar2 != 0) {
                    // WARNING: Subroutine does not return
    _abort();
  }
  iVar2 = DAT_032bcb90 + 1;
  local_4 = 1;
  if (DAT_032bcb90 == 0) {
    if (DAT_032bcb68 == (int *)0x0) {
      DAT_032bcb90 = iVar2;
      FUN_00841fd0(param_1,param_2,param_4);
    }
    else {
      DAT_032bcb90 = iVar2;
      piVar3 = (int *)FUN_00432231(local_3c);
      piVar4 = (int *)FUN_00432231(local_48);
      piVar5 = (int *)FUN_00432231(local_54);
      piVar6 = (int *)FUN_00432231(local_60);
      iVar2 = *piVar3;
      local_4 = CONCAT31(local_4._1_3_,5);
      if (*(uint *)(iVar2 + 0x18) < 8) {
        iVar2 = iVar2 + 4;
      }
      else {
        iVar2 = *(int *)(iVar2 + 4);
      }
      iVar7 = *piVar4;
      if (*(uint *)(iVar7 + 0x18) < 8) {
        iVar7 = iVar7 + 4;
      }
      else {
        iVar7 = *(int *)(iVar7 + 4);
      }
      iVar9 = *piVar5;
      if (*(uint *)(iVar9 + 0x18) < 8) {
        iVar9 = iVar9 + 4;
      }
      else {
        iVar9 = *(int *)(iVar9 + 4);
      }
      iVar8 = *piVar6;
      if (*(uint *)(iVar8 + 0x18) < 8) {
        iVar8 = iVar8 + 4;
      }
      else {
        iVar8 = *(int *)(iVar8 + 4);
      }
      (**(code **)(*DAT_032bcb68 + 0xb8))
                (iVar8 + piVar6[1] * 2,param_2,iVar9 + piVar5[1] * 2,iVar7 + piVar4[1] * 2,
                 iVar2 + piVar3[1] * 2);
      FUN_00432214();
      FUN_00432214();
      FUN_00432214();
      FUN_00432214();
    }
  }
  else {
    DAT_032bcb90 = iVar2;
    DebugBreak();
  }
  local_4 = 0xffffffff;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bcb90 < 1)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/recguard.h",0x26,
                 "wxRecursionGuard::~wxRecursionGuard","m_flag > 0",
                 L"unbalanced wxRecursionGuards!?");
  }
  DAT_032bcb90 = DAT_032bcb90 + -1;
  ExceptionList = local_c;
  return;
}



void FUN_00842ea0(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\log.cpp",0x1d6,"wxLog::DoLogText","Assert failure",
                 "must be overridden if it is called");
  }
  return;
}



int * FUN_00842ed0(undefined4 param_1)

{
  int *piVar1;
  
  if (DAT_032bcb98 != (int *)0x0) {
    (**(code **)(*DAT_032bcb98 + 4))();
  }
  piVar1 = DAT_032bcb98;
  DAT_032bcb98 = (int *)param_1;
  return piVar1;
}



void FUN_00842f00(void)

{
  DAT_03235e95 = 1;
  return;
}



bool FUN_00842f10(void)

{
  return *(char *)(*(int *)((int)ThreadLocalStoragePointer + _tls_index * 4) + 8) == '\0';
}



undefined4 FUN_00842f30(char param_1)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  
  iVar2 = *(int *)((int)ThreadLocalStoragePointer + _tls_index * 4);
  cVar1 = *(char *)(iVar2 + 8);
  uVar3 = (uint)_tls_index >> 8;
  *(bool *)(iVar2 + 8) = param_1 == '\0';
  return CONCAT31((int3)uVar3,cVar1 == '\0');
}



DWORD GetLastError(void)

{
  DWORD DVar1;
  
                    // WARNING: Could not recover jumptable at 0x00842f60. Too many branches
                    // WARNING: Treating indirect jump as call
  DVar1 = GetLastError();
  return DVar1;
}



uint FUN_00842f70(wchar_t *param_1,wchar_t *param_2,uint param_3)

{
  wchar_t wVar1;
  wchar_t *pwVar2;
  uint uVar3;
  size_t _Count;
  
  pwVar2 = param_2;
  do {
    wVar1 = *pwVar2;
    pwVar2 = pwVar2 + 1;
  } while (wVar1 != L'\0');
  uVar3 = (int)pwVar2 - (int)(param_2 + 1) >> 1;
  if (param_3 != 0) {
    _Count = param_3 - 1;
    if (uVar3 < param_3) {
      _Count = uVar3;
    }
    _wcsncpy(param_1,param_2,_Count);
    param_1[_Count] = L'\0';
  }
  return uVar3;
}



void FUN_00842fc0(void)

{
  FUN_0086bda0();
  return;
}



void FUN_00842fd0(undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  
  iVar1 = FUN_0084a340();
  if (iVar1 != 0) {
    FUN_0084e0f0(param_1,param_2,param_3,param_4);
    return;
  }
  if (param_3 == 1) {
    FUN_0084d360(param_1);
    return;
  }
  FUN_0084d360(param_2);
  return;
}



undefined4 * __thiscall
FUN_00843020(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 9) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<long>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



undefined * FUN_00843090(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc51ce;
  local_c = ExceptionList;
  if ((DAT_032bcbd4 & 1) == 0) {
    DAT_032bcbd4 = DAT_032bcbd4 | 1;
    local_4 = 0;
    ExceptionList = &local_c;
    FUN_0086bd70(0);
    _atexit((_func_4879 *)&LAB_00c762d0);
  }
  ExceptionList = local_c;
  return &DAT_032bcbbc;
}



undefined * FUN_00843100(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc51fe;
  local_c = ExceptionList;
  if ((DAT_032bcbf0 & 1) == 0) {
    DAT_032bcbf0 = DAT_032bcbf0 | 1;
    local_4 = 0;
    ExceptionList = &local_c;
    FUN_0086bd70(0);
    _atexit((_func_4879 *)&LAB_00c762e0);
  }
  ExceptionList = local_c;
  return &DAT_032bcbd8;
}



undefined * FUN_00843170(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc522e;
  local_c = ExceptionList;
  if ((DAT_032bcc0c & 1) == 0) {
    DAT_032bcc0c = DAT_032bcc0c | 1;
    local_4 = 0;
    ExceptionList = &local_c;
    FUN_0086bd70(0);
    _atexit((_func_4879 *)&LAB_00c762f0);
  }
  ExceptionList = local_c;
  return &DAT_032bcbf4;
}



undefined * FUN_008431e0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc525e;
  local_c = ExceptionList;
  if ((DAT_032bcc20 & 1) == 0) {
    DAT_032bcc20 = DAT_032bcc20 | 1;
    local_4 = 0;
    ExceptionList = &local_c;
    FUN_00853ce0(0);
    _atexit((_func_4879 *)&LAB_00c76300);
  }
  ExceptionList = local_c;
  return &DAT_032bcc10;
}



void FUN_00843250(undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1348;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00843100(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_0086bd90();
  local_4 = 0;
  FUN_008431e0();
  FUN_00854700(param_1,1);
  local_4 = 0xffffffff;
  FUN_0086bda0();
  ExceptionList = local_c;
  return;
}



undefined4 FUN_008432c0(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5288;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00843100(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  FUN_0086bd90();
  local_4 = 0;
  iVar1 = FUN_008431e0();
  iVar3 = *(int *)(iVar1 + 8);
  iVar1 = iVar3 + *(int *)(iVar1 + 4) * 0x24;
  while( true ) {
    if (iVar3 == iVar1) {
      local_4 = 0xffffffff;
      FUN_0086bda0();
      ExceptionList = local_c;
      return 0;
    }
    if ((*(int *)(iVar3 + 0x14) == *(int *)(param_1 + 0x14)) &&
       (iVar2 = FUN_00850760(param_1), iVar2 == 0)) break;
    iVar3 = iVar3 + 0x24;
  }
  local_4 = 0xffffffff;
  FUN_0086bda0();
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_00843390(int param_1_00,undefined4 param_1,undefined4 *param_2)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 0x1c) != 0) {
    iVar1 = FUN_00970c40(param_1);
    if (iVar1 != 0) {
      *param_2 = *(undefined4 *)(iVar1 + 0x28);
      return 1;
    }
  }
  return 0;
}



undefined4 * __thiscall FUN_008433c0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4b93;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_00850350(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1_00 = uVar1;
  local_4 = 0;
  uVar1 = FUN_00850350();
  param_1_00[1] = uVar1;
  local_4 = CONCAT31(local_4._1_3_,1);
  uVar1 = FUN_00850350();
  param_1_00[2] = uVar1;
  param_1_00[3] = param_1;
  param_1_00[4] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_00843430(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  
  if ((byte)param_3 < 0x80) {
    iVar1 = (int)(char)(byte)param_3;
  }
  else {
    iVar1 = FUN_00884ad0(param_3,0);
  }
  FUN_00852430(param_1,param_2,iVar1);
  return param_1;
}



void __thiscall FUN_00843470(int *param_1_00,int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined **local_38;
  int local_34;
  undefined4 local_30 [5];
  uint uStack_1c;
  void *local_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc52c0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1 != 6) && (param_1 != 7)) {
    (**(code **)(*param_1_00 + 0x10))(param_2);
    ExceptionList = pvStack_10;
    return;
  }
  local_34 = FUN_00a475e9(DAT_0323f878 ^ (uint)&local_38);
  local_34 = local_34 + 0x40;
  local_38 = wxMessageOutputDebug::vftable;
  local_4 = 0;
  uVar1 = FUN_0081b5f9(local_30,param_2,10);
  local_4 = CONCAT31(local_4._1_3_,1);
  (*(code *)local_38[1])(uVar1);
  _free(local_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  ExceptionList = pvStack_10;
  return;
}



void __thiscall FUN_00843540(int param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  int *piVar4;
  undefined local_54 [4];
  undefined4 uStack_50;
  uint uStack_3c;
  void *pvStack_38;
  undefined auStack_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc52f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_00843430(local_54,param_1,10,DAT_0323f878 ^ (uint)&stack0xffffff9c);
  local_4 = 0;
  FUN_008930f0(uVar2,*(undefined4 *)(param_1_00 + 4));
  local_4 = 0xffffffff;
  _free(pvStack_38);
  if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_50);
  }
  _fflush(*(FILE **)(param_1_00 + 4));
  iVar3 = FUN_00a475e9();
  if ((*(int *)(param_1_00 + 4) == iVar3 + 0x40) && (DAT_032bcb68 != 0)) {
    piVar4 = (int *)FUN_00841320();
    if (piVar4 != (int *)0x0) {
      cVar1 = (**(code **)(*piVar4 + 0x24))();
      if (cVar1 == '\0') {
        FUN_00a475e9();
        local_4 = 1;
        uVar2 = FUN_0081b5f9(auStack_30,param_1,10);
        local_4 = CONCAT31(local_4._1_3_,2);
        FUN_008935d0(uVar2);
        FUN_0040159c();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_00843650(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  uint param_8;
  void *param_9;
  undefined4 param_11;
  undefined4 local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf508;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0081a07d(param_11,param_1,2);
  FUN_00840990(&param_2,param_1,1);
  uVar3 = FUN_008854f0(uVar2);
  iVar1 = *param_1_00;
  uVar4 = FUN_00884e10(local_14);
  (**(code **)(iVar1 + 8))(param_1_00,uVar3,uVar4);
  _free(param_9);
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  ExceptionList = local_c;
  return;
}



undefined2 * FUN_00843700(wchar_t *param_1)

{
  wchar_t wVar1;
  short *psVar2;
  uint uVar3;
  wchar_t *pwVar4;
  DWORD DVar5;
  undefined4 uVar6;
  short *psVar7;
  int iVar8;
  size_t _Count;
  undefined4 uStack_24;
  undefined auStack_20 [20];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd018;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  pwVar4 = param_1;
  if (param_1 == (wchar_t *)0x0) {
    pwVar4 = (wchar_t *)GetLastError();
  }
  DVar5 = FormatMessageW(0x1100,(LPCVOID)0x0,(DWORD)pwVar4,0x400,(LPWSTR)&param_1,0,(va_list *)0x0);
  if (DVar5 == 0) {
    FUN_0081c0f1(L"unknown error %lx");
    uStack_4 = 0;
    FUN_00840d00(pwVar4,auStack_20,1);
    uVar6 = FUN_008854f0(uVar3);
    FUN_00893120(&DAT_032bcc28,uVar6,uStack_24);
    uStack_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  else if (param_1 == (wchar_t *)0x0) {
    DAT_032bcc28 = 0;
  }
  else {
    pwVar4 = param_1;
    do {
      wVar1 = *pwVar4;
      pwVar4 = pwVar4 + 1;
    } while (wVar1 != L'\0');
    uVar3 = (int)pwVar4 - (int)(param_1 + 1) >> 1;
    _Count = 0x3ff;
    if (uVar3 < 0x400) {
      _Count = uVar3;
    }
    _wcsncpy((wchar_t *)&DAT_032bcc28,param_1,_Count);
    (&DAT_032bcc28)[_Count] = 0;
    LocalFree(param_1);
    DAT_032bcc28 = _towlower(DAT_032bcc28);
    psVar2 = (short *)&DAT_032bcc28;
    do {
      psVar7 = psVar2;
      psVar2 = psVar7 + 1;
    } while (*psVar7 != 0);
    iVar8 = (int)(psVar7 + -0x195e614) >> 1;
    if ((iVar8 != 0) && ((&DAT_032bcc24)[iVar8] == 0xd)) {
      (&DAT_032bcc24)[iVar8] = 0;
    }
  }
  ExceptionList = local_c;
  return &DAT_032bcc28;
}



void __thiscall
FUN_00843870(int *param_1_00,undefined4 param_1,int param_2,undefined4 param_4,char param_5)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5328;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840a00(&param_2,param_1,1);
  uVar3 = FUN_008854f0(uVar2);
  iVar1 = *param_1_00;
  uVar4 = FUN_00884e20();
  (**(code **)(iVar1 + 8))(param_1_00,uVar3,uVar4);
  iVar1 = param_2;
  if ((param_5 != '\0') && (param_2 != 0)) {
    _free(*(void **)(param_2 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_00843930(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = *param_1;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_1 + 1,0,0xffffffff);
  param_1_00[8] = 0;
  param_1_00[10] = param_1[10];
  return param_1_00;
}



void __fastcall FUN_00843980(int *param_1)

{
  uint uVar1;
  int iVar2;
  undefined *puVar3;
  undefined4 uVar4;
  int local_cc;
  undefined4 local_c8;
  undefined local_c4 [4];
  uint local_c0;
  undefined4 local_b0;
  uint local_ac;
  void *local_a8;
  undefined local_a0 [4];
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5394;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_cc;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff24;
  ExceptionList = &local_c;
  local_cc = DAT_03235ee8;
  if (DAT_03235ee8 != 0) {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 0;
    if (DAT_03235ee8 == 1) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 1;
      FUN_0043c211("The previous message repeated once.");
      local_4 = CONCAT31(local_4._1_3_,2);
      iVar2 = FUN_0084a340(uVar1);
      if (iVar2 == 0) {
        puVar3 = (undefined *)FUN_0084d360(local_c4);
      }
      else {
        puVar3 = (undefined *)FUN_0084f210(local_c4,local_a0);
      }
      if (local_34 != puVar3) {
        FID_conflict_assign(puVar3,0,0xffffffff);
      }
      _free(local_a8);
      if (7 < local_ac) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_c0);
      }
      local_ac = 7;
      local_b0 = 0;
      local_c0 = local_c0 & 0xffff0000;
      local_4 = local_4 & 0xffffff00;
      _free(local_84);
      local_54 = local_9c;
      local_40 = local_88;
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 3;
      FUN_0043c211("The previous message repeated %lu times.");
      local_4._0_1_ = 4;
      FUN_0043c211("The previous message repeated %lu time.");
      local_4._0_1_ = 5;
      uVar4 = FUN_00842fd0(local_7c,local_a0,DAT_03235ee8,local_58);
      FUN_008433c0(uVar4);
      local_4._0_1_ = 6;
      FUN_0081a07d(DAT_03235ee8,local_c4,1);
      uVar4 = FUN_008854f0();
      FUN_00853980(local_34,uVar4,local_c8);
      local_4._0_1_ = 5;
      FUN_0081b5bc();
      _free(local_60);
      if (7 < local_64) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_78);
      }
      local_64 = 7;
      local_68 = 0;
      local_78 = local_78 & 0xffff0000;
      _free(local_84);
      if (7 < local_88) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_9c);
      }
      local_88 = 7;
      local_8c = 0;
      local_9c = local_9c & 0xffff0000;
      local_4 = (uint)local_4._1_3_ << 8;
      _free(local_3c);
    }
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    DAT_03235ee8 = 0;
    FUN_00432156();
    (**(code **)(*param_1 + 8))(DAT_03235ec4,local_34,&DAT_03235ec8);
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00843cb0(undefined4 *param_1)

{
  int iVar1;
  uint local_74;
  void *local_70;
  uint local_50;
  void *local_4c;
  undefined local_44 [44];
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc53fe;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = wxLog::vftable;
  if (DAT_03235ee8 != 0) {
    FUN_004325b6();
    local_4 = 0;
    FUN_0043c211();
    local_4._0_1_ = 1;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,2);
    iVar1 = FUN_0084a340();
    if (iVar1 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084e0f0();
    }
    FUN_008433c0();
    local_4._0_1_ = 3;
    FID_conflict_assign(&DAT_03235ea0,0,0xffffffff);
    FUN_00a475e9();
    local_4._0_1_ = 4;
    FUN_00843650(local_44);
    local_4 = CONCAT31(local_4._1_3_,2);
    FUN_0081b5bc();
    _free(local_4c);
    if (7 < local_50) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(local_70);
    if (7 < local_74) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_00843eb0(int param_1)

{
  short *psVar1;
  uint uVar2;
  int iVar3;
  short *psVar4;
  undefined *puVar5;
  undefined *puVar6;
  undefined *puVar7;
  undefined local_3c [4];
  undefined local_38 [8];
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9388;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  if (DAT_03235f04 != 0) {
    FUN_0086c940(0);
    puVar7 = local_3c;
    puVar6 = &DAT_03235ef0;
    puVar5 = local_30;
    FUN_0086cc80(local_38,puVar5,&DAT_03235ef0,puVar7,uVar2);
    iVar3 = FUN_00872a30(puVar5,puVar6,puVar7);
    local_4 = 0;
    if (param_1 != iVar3) {
      FID_conflict_assign(iVar3,0,0xffffffff);
    }
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_2c = local_2c & 0xffff0000;
    local_18 = 7;
    local_1c = 0;
    psVar1 = &DAT_00d25f20;
    do {
      psVar4 = psVar1;
      psVar1 = psVar4 + 1;
    } while (*psVar4 != 0);
    FUN_00473ccc(&DAT_00d25f20,(int)(psVar4 + -0x692f90) >> 1);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall thunk_FUN_00843980(int *param_1)

{
  uint uVar1;
  int iVar2;
  undefined *puVar3;
  undefined4 uVar4;
  int iStack_cc;
  undefined4 uStack_c8;
  undefined auStack_c4 [4];
  uint uStack_c0;
  undefined4 uStack_b0;
  uint uStack_ac;
  void *pvStack_a8;
  undefined auStack_a0 [4];
  uint uStack_9c;
  undefined4 uStack_8c;
  uint uStack_88;
  void *pvStack_84;
  undefined auStack_7c [4];
  uint uStack_78;
  undefined4 uStack_68;
  uint uStack_64;
  void *pvStack_60;
  undefined auStack_58 [4];
  uint uStack_54;
  uint uStack_40;
  void *pvStack_3c;
  undefined auStack_34 [4];
  uint uStack_30;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint uStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5394;
  pvStack_c = ExceptionList;
  uStack_10 = DAT_0323f878 ^ (uint)&iStack_cc;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff24;
  ExceptionList = &pvStack_c;
  iStack_cc = DAT_03235ee8;
  if (DAT_03235ee8 != 0) {
    uStack_1c = 7;
    uStack_20 = 0;
    uStack_30 = uStack_30 & 0xffff0000;
    pvStack_18 = (void *)0x0;
    uStack_4 = 0;
    if (DAT_03235ee8 == 1) {
      FUN_004325b6(PTR_DAT_03236318);
      uStack_4._0_1_ = 1;
      FUN_0043c211("The previous message repeated once.");
      uStack_4 = CONCAT31(uStack_4._1_3_,2);
      iVar2 = FUN_0084a340(uVar1);
      if (iVar2 == 0) {
        puVar3 = (undefined *)FUN_0084d360(auStack_c4);
      }
      else {
        puVar3 = (undefined *)FUN_0084f210(auStack_c4,auStack_a0);
      }
      if (auStack_34 != puVar3) {
        FID_conflict_assign(puVar3,0,0xffffffff);
      }
      _free(pvStack_a8);
      if (7 < uStack_ac) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_c0);
      }
      uStack_ac = 7;
      uStack_b0 = 0;
      uStack_c0 = uStack_c0 & 0xffff0000;
      uStack_4 = uStack_4 & 0xffffff00;
      _free(pvStack_84);
      uStack_54 = uStack_9c;
      uStack_40 = uStack_88;
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      uStack_4._0_1_ = 3;
      FUN_0043c211("The previous message repeated %lu times.");
      uStack_4._0_1_ = 4;
      FUN_0043c211("The previous message repeated %lu time.");
      uStack_4._0_1_ = 5;
      uVar4 = FUN_00842fd0(auStack_7c,auStack_a0,DAT_03235ee8,auStack_58);
      FUN_008433c0(uVar4);
      uStack_4._0_1_ = 6;
      FUN_0081a07d(DAT_03235ee8,auStack_c4,1);
      uVar4 = FUN_008854f0();
      FUN_00853980(auStack_34,uVar4,uStack_c8);
      uStack_4._0_1_ = 5;
      FUN_0081b5bc();
      _free(pvStack_60);
      if (7 < uStack_64) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_78);
      }
      uStack_64 = 7;
      uStack_68 = 0;
      uStack_78 = uStack_78 & 0xffff0000;
      _free(pvStack_84);
      if (7 < uStack_88) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_9c);
      }
      uStack_88 = 7;
      uStack_8c = 0;
      uStack_9c = uStack_9c & 0xffff0000;
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      _free(pvStack_3c);
    }
    if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_54);
    }
    DAT_03235ee8 = 0;
    FUN_00432156();
    (**(code **)(*param_1 + 8))(DAT_03235ec4,auStack_34,&DAT_03235ec8);
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
  }
  ExceptionList = pvStack_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_00843fb0(undefined4 *param_1_00,int param_1)

{
  *param_1_00 = wxLogStderr::vftable;
  if (param_1 == 0) {
    param_1 = FUN_00a475e9();
    param_1 = param_1 + 0x40;
  }
  param_1_00[1] = param_1;
  return param_1_00;
}



undefined4 * FUN_00843fe0(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x4c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = *param_1;
    FUN_008fa5f0(param_1 + 1);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __thiscall FUN_00844050(void **param_1_00,undefined4 *param_1)

{
  void *_Memory;
  void *pvVar1;
  void *_Count;
  void *pvVar2;
  
  _Count = (void *)FUN_00893ca0(param_1[2]);
  _Memory = *param_1_00;
  pvVar1 = param_1_00[1];
  pvVar2 = _calloc((size_t)_Count,4);
  *param_1_00 = pvVar2;
  param_1_00[1] = _Count;
  FUN_00893d40(_Memory,pvVar1,param_1_00,pvVar2,&LAB_008696d0,&LAB_00893da0);
  _free(_Memory);
  FUN_00893d40(*param_1,param_1[1],param_1_00,*param_1_00,&LAB_008696d0,FUN_00843fe0);
  return;
}



undefined4 FUN_008440c0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x2c);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00843930(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00844130(void **param_1_00,undefined4 *param_1)

{
  void *_Memory;
  void *pvVar1;
  void *_Count;
  void *pvVar2;
  
  _Count = (void *)FUN_00893ca0(param_1[2]);
  _Memory = *param_1_00;
  pvVar1 = param_1_00[1];
  pvVar2 = _calloc((size_t)_Count,4);
  *param_1_00 = pvVar2;
  param_1_00[1] = _Count;
  FUN_00893d40(_Memory,pvVar1,param_1_00,pvVar2,&LAB_008696d0,&LAB_00893da0);
  _free(_Memory);
  FUN_00893d40(*param_1,param_1[1],param_1_00,*param_1_00,&LAB_008696d0,FUN_008440c0);
  return;
}



void FUN_008441a0(undefined4 param_1)

{
  undefined **local_18;
  int local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5428;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = FUN_00a475e9(DAT_0323f878 ^ (uint)&local_18);
  local_14 = local_14 + 0x40;
  local_18 = wxMessageOutputBest::vftable;
  local_10 = 0;
  local_4 = 0;
  FUN_008937b0(param_1);
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00844210(int *param_1_00,int param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 local_c8;
  undefined local_c4 [4];
  uint local_c0;
  undefined4 local_b0;
  uint local_ac;
  void *local_a8;
  undefined local_a0 [4];
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined4 uStack_80;
  undefined local_7c [4];
  undefined4 local_78;
  uint uStack_6c;
  void *pvStack_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined4 uStack_38;
  undefined local_34 [4];
  undefined2 local_30;
  uint uStack_24;
  void *local_20;
  undefined4 local_1c;
  undefined4 local_18;
  void *pvStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5486;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_c8;
  ExceptionList = &local_c;
  local_c8 = param_2;
  local_1c = 7;
  local_20 = (void *)0x0;
  local_30 = 0;
  local_18 = 0;
  local_4 = 0;
  if ((param_1 != 6) && (param_1 != 7)) {
    FUN_00843eb0(local_34,DAT_0323f878 ^ (uint)&stack0xffffff28);
  }
  if (param_1 == 1) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4._0_1_ = 1;
    FUN_0043c211("Error: ");
    local_4 = CONCAT31(local_4._1_3_,2);
    iVar1 = FUN_0084a340();
    if (iVar1 == 0) {
      uVar2 = FUN_0084d360(local_a0);
    }
    else {
      uVar2 = FUN_0084f210(local_a0,local_7c);
    }
    FID_conflict_append(uVar2,0,0xffffffff);
    _free(local_84);
    if (7 < local_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_9c);
    }
    local_88 = 7;
    local_8c = 0;
    local_9c = local_9c & 0xffff0000;
    local_4 = local_4 & 0xffffff00;
    _free(local_60);
  }
  else {
    if (param_1 != 2) goto LAB_0084444d;
    FUN_004325b6(PTR_DAT_03236318);
    local_4._0_1_ = 3;
    FUN_0043c211("Warning: ");
    local_4 = CONCAT31(local_4._1_3_,4);
    iVar1 = FUN_0084a340();
    if (iVar1 == 0) {
      uVar2 = FUN_0084d360(local_c4);
    }
    else {
      uVar2 = FUN_0084f210(local_c4,local_58);
    }
    FID_conflict_append(uVar2,0,0xffffffff);
    _free(local_a8);
    if (7 < local_ac) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_c0);
    }
    local_ac = 7;
    local_b0 = 0;
    local_c0 = local_c0 & 0xffff0000;
    local_4 = local_4 & 0xffffff00;
    _free(local_3c);
    local_78 = local_54;
    local_64 = local_40;
  }
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
LAB_0084444d:
  uVar2 = FUN_008531f0(local_7c,local_34,local_c8);
  local_4 = CONCAT31(local_4._1_3_,5);
  (**(code **)(*param_1_00 + 0xc))(param_1,uVar2);
  _free(pvStack_68);
  if (7 < uStack_6c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_80);
  }
  _free(local_20);
  if (7 < uStack_24) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_38);
  }
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



void FUN_008444f0(void)

{
  int *piVar1;
  
  if (((DAT_03235e95 != '\0') && (DAT_032bcb98 == (undefined4 *)0x0)) && (DAT_032bd428 == '\0')) {
    DAT_032bd428 = 1;
    if (DAT_032bcb68 != 0) {
      piVar1 = (int *)FUN_00841320();
      DAT_032bcb98 = (undefined4 *)(**(code **)(*piVar1 + 8))();
      DAT_032bd428 = 0;
      return;
    }
    DAT_032bcb98 = (undefined4 *)operator_new(4);
    if (DAT_032bcb98 != (undefined4 *)0x0) {
      *DAT_032bcb98 = `anonymous_namespace'::wxLogOutputBest::vftable;
      DAT_032bd428 = 0;
      return;
    }
    DAT_032bcb98 = (undefined4 *)0x0;
    DAT_032bd428 = '\0';
  }
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * FUN_00844570(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc54ce;
  local_c = ExceptionList;
  if ((DAT_032bd43c & 1) == 0) {
    DAT_032bd43c = DAT_032bd43c | 1;
    local_4 = 0;
    ExceptionList = &local_c;
    DAT_032bd430 = FUN_00893ca0(100,DAT_0323f878 ^ (uint)&local_c);
    _DAT_032bd434 = 0;
    DAT_032bd42c = _calloc(DAT_032bd430,4);
    _atexit((_func_4879 *)&LAB_00c76360);
  }
  ExceptionList = local_c;
  return &DAT_032bd42c;
}



undefined4 __thiscall FUN_008445f0(undefined4 param_1_00,byte param_1)

{
  FUN_00843cb0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int FUN_00844610(void)

{
  DWORD DVar1;
  int iVar2;
  
  if (DAT_032bdb68 != 0) {
    DVar1 = GetCurrentThreadId();
    if (DVar1 != DAT_032bdb68) {
      iVar2 = *(int *)(*(int *)((int)ThreadLocalStoragePointer + _tls_index * 4) + 4);
      if (iVar2 == 0) {
        iVar2 = DAT_032bcb98;
      }
      return iVar2;
    }
  }
  iVar2 = FUN_008444f0();
  return iVar2;
}



undefined4 FUN_00844650(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  undefined *puVar3;
  int param_6;
  uint param_7;
  void *param_8;
  undefined local_30 [24];
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5508;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00843170();
  FUN_0086bd90();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00844570();
  uVar1 = DAT_03235e98;
  do {
    DAT_03235e98 = uVar1;
    if (param_6 == 0) {
      local_4 = local_4 & 0xffffff00;
      FUN_0086bda0();
      _free(param_8);
joined_r0x00844740:
      if (7 < param_7) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      ExceptionList = local_c;
      return uVar1;
    }
    iVar2 = FUN_00970c40();
    if (iVar2 != 0) {
      uVar1 = *(undefined4 *)(iVar2 + 0x28);
      local_4 = local_4 & 0xffffff00;
      FUN_0086bda0();
      _free(param_8);
      goto joined_r0x00844740;
    }
    puVar3 = (undefined *)FUN_00852900(local_30);
    local_4._0_1_ = 2;
    if (&param_1 != (undefined4 *)puVar3) {
      FID_conflict_assign(puVar3);
    }
    local_4 = CONCAT31(local_4._1_3_,1);
    _free(local_14);
    uVar1 = DAT_03235e98;
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  } while( true );
}



undefined4 * __thiscall FUN_00844790(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5538;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = 0;
  param_1_00[1] = 0;
  param_1_00[2] = *(undefined4 *)(param_1 + 8);
  FUN_00844130(param_1);
  param_1_00[4] = 0;
  param_1_00[5] = 0;
  local_4 = 0;
  param_1_00[6] = *(undefined4 *)(param_1 + 0x18);
  FUN_00844050(param_1 + 0x10);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00844820(undefined4 *param_1_00,undefined4 *param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8b4b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar4 = param_1;
  puVar5 = param_1_00;
  for (iVar3 = 8; iVar3 != 0; iVar3 = iVar3 + -1) {
    *puVar5 = *puVar4;
    puVar4 = puVar4 + 1;
    puVar5 = puVar5 + 1;
  }
  if (param_1[7] != 0) {
    pvVar1 = operator_new(0x20);
    local_4 = 0;
    if (pvVar1 == (void *)0x0) {
      uVar2 = 0;
    }
    else {
      uVar2 = FUN_00844790(param_1[7]);
    }
    param_1_00[7] = uVar2;
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_008448a0(int param_1)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6418;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1 + 0x44);
  local_4 = 0;
  if (iVar1 != 0) {
    FUN_00841af0(DAT_0323f878 ^ (uint)&stack0xffffffe8);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  _free(*(void **)(param_1 + 0x1c));
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00844930(int param_1)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc556b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1 + 0x44);
  local_4 = 0;
  if (iVar1 != 0) {
    FUN_00841af0(DAT_0323f878 ^ (uint)&stack0xffffffe8);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  _free(*(void **)(param_1 + 0x20));
  if (7 < *(uint *)(param_1 + 0x1c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 8));
  }
  *(undefined4 *)(param_1 + 0x1c) = 7;
  *(undefined4 *)(param_1 + 0x18) = 0;
  *(undefined2 *)(param_1 + 8) = 0;
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall
FUN_008449c0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc556b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  param_1_00[8] = 0;
  local_4 = 0;
  FUN_00844820(param_3);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00844a50(int *param_1_00,int param_1,undefined *param_2,undefined *param_3)

{
  bool bVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined *puVar5;
  undefined4 uVar6;
  undefined local_f0 [4];
  uint local_ec;
  undefined4 local_dc;
  uint local_d8;
  void *local_d4;
  undefined *local_cc;
  uint local_c8;
  int *local_c4;
  undefined4 local_c0;
  undefined local_bc [4];
  undefined4 local_b8;
  uint local_a4;
  void *local_a0;
  undefined4 local_98;
  undefined *local_94;
  undefined local_90 [20];
  undefined local_7c [4];
  undefined4 local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5622;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_f0;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff00;
  ExceptionList = &local_c;
  local_c8 = 0;
  local_94 = param_2;
  local_cc = param_3;
  local_c4 = param_1_00;
  if (DAT_032bcb94 != '\0') {
    if (*(int *)(param_2 + 0x14) == DAT_03235eb4) {
      iVar3 = FUN_00850760(&DAT_03235ea0);
      if (iVar3 == 0) {
        DAT_03235ee8 = DAT_03235ee8 + 1;
        goto LAB_00844fd8;
      }
    }
    FUN_00843980(uVar2);
    if (param_2 != &DAT_03235ea0) {
      FID_conflict_assign(param_2,0,0xffffffff);
    }
    iVar3 = DAT_03235ee4;
    DAT_03235ec4 = param_1;
    if (param_3 != &DAT_03235ec8) {
      if (DAT_03235ee4 != 0) {
        FUN_00841af0();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar3);
      }
      FUN_00844820(param_3);
    }
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  local_3c = (void *)0x0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  uVar6 = 0;
  FUN_0043c211("wx.sys_error");
  local_4._0_1_ = 2;
  if (*(int *)(param_3 + 0x1c) == 0) {
    bVar1 = false;
  }
  else {
    iVar3 = FUN_00970c40(local_f0);
    if (iVar3 == 0) {
      bVar1 = false;
    }
    else {
      uVar6 = *(undefined4 *)(iVar3 + 0x28);
      bVar1 = true;
    }
  }
  local_4._0_1_ = 1;
  _free(local_d4);
  if (7 < local_d8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_ec);
  }
  if (bVar1) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4._0_1_ = 3;
    FUN_0043c211(" (error %ld: %s)");
    local_4 = CONCAT31(local_4._1_3_,4);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      uVar4 = FUN_0084d360(local_f0);
    }
    else {
      uVar4 = FUN_0084f210(local_f0,local_bc);
    }
    FUN_008433c0(uVar4);
    local_4._0_1_ = 5;
    uVar4 = FUN_00843700(uVar6);
    FUN_0083e8f0(uVar4,local_90,2);
    FUN_00843020(uVar6,local_90,1);
    uVar6 = FUN_008854f0();
    FUN_00853980(local_58,uVar6,local_98,local_c0);
    local_4._0_1_ = 4;
    FUN_0081b5bc();
    _free(local_d4);
    if (7 < local_d8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_ec);
    }
    local_d8 = 7;
    local_dc = 0;
    local_ec = local_ec & 0xffff0000;
    _free(local_a0);
    if (7 < local_a4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b8);
    }
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = (uint)local_78._2_2_ << 0x10;
  local_60 = (void *)0x0;
  local_4._0_1_ = 6;
  if (param_1 == 7) {
    FUN_0043c211("wx.trace_mask");
    local_4 = CONCAT31(local_4._1_3_,7);
    local_c8 = 1;
    if (*(int *)(local_cc + 0x1c) == 0) goto LAB_00844da5;
    iVar3 = FUN_00970c40(local_bc);
    if (iVar3 == 0) goto LAB_00844da5;
    if (local_7c != (undefined *)(iVar3 + 0x28)) {
      FID_conflict_assign((undefined *)(iVar3 + 0x28),0,0xffffffff);
    }
    bVar1 = true;
  }
  else {
LAB_00844da5:
    bVar1 = false;
  }
  local_4 = 6;
  if ((local_c8 & 1) != 0) {
    _free(local_a0);
    if (7 < local_a4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b8);
    }
  }
  if (bVar1) {
    uVar6 = FUN_008534d0(local_bc,&DAT_00d262ec,local_7c);
    local_4._0_1_ = 8;
    puVar5 = (undefined *)FUN_00853300(local_f0,uVar6,&DAT_00d262e8);
    local_4._0_1_ = 9;
    if (local_34 != puVar5) {
      FID_conflict_assign(puVar5,0,0xffffffff);
    }
    _free(local_d4);
    if (7 < local_d8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_ec);
    }
    local_d8 = 7;
    local_dc = 0;
    local_ec = local_ec & 0xffff0000;
    local_4 = CONCAT31(local_4._1_3_,6);
    _free(local_a0);
    if (7 < local_a4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b8);
    }
  }
  uVar6 = FUN_008531f0(local_bc,local_34,local_94);
  local_4._0_1_ = 10;
  uVar6 = FUN_008531f0(local_f0,uVar6,local_58);
  local_4 = CONCAT31(local_4._1_3_,0xb);
  (**(code **)(*local_c4 + 8))(param_1,uVar6,local_cc);
  _free(local_d4);
  if (7 < local_d8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_ec);
  }
  local_d8 = 7;
  local_dc = 0;
  local_ec = local_ec & 0xffff0000;
  _free(local_a0);
  if (7 < local_a4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_b8);
  }
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
LAB_00844fd8:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_00845010(undefined4 *param_1_00,undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc565b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = *param_1;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_1 + 1,0,0xffffffff);
  param_1_00[8] = 0;
  local_4 = 0;
  FUN_00844820(param_1 + 10);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_008450a0(uint *param_1)

{
  uint uVar1;
  
  uVar1 = 0;
  if (*param_1 != 0) {
    do {
      FUN_00844930();
      uVar1 = uVar1 + 1;
    } while (uVar1 < *param_1);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[2]);
}



void FUN_008450f0(int param_1,int param_2,uint param_3)

{
  uint uVar1;
  void *pvVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5697;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  pvVar2 = operator_new(param_2 * 0x48);
  uVar3 = 0;
  if (param_3 != 0) {
    do {
      local_4 = 0;
      if ((void *)((int)pvVar2 + uVar3 * 0x48) != (void *)0x0) {
        FUN_00845010(uVar3 * 0x48 + param_1);
      }
      local_4 = 0xffffffff;
      FUN_00844930(uVar1);
      uVar3 = uVar3 + 1;
    } while (uVar3 < param_3);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



void __fastcall FUN_008451b0(uint *param_1)

{
  uint uVar1;
  
  uVar1 = 0;
  if (*param_1 != 0) {
    do {
      FUN_00844930();
      uVar1 = uVar1 + 1;
    } while (uVar1 < *param_1);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[2]);
}



void __thiscall FUN_008451c0(uint *param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  
  if (param_1_00[1] < param_1) {
    uVar2 = *param_1_00;
    if (uVar2 == 0) {
      uVar1 = 0x10;
    }
    else {
      uVar1 = uVar2;
      if (0xfff < uVar2) {
        uVar1 = 0x1000;
      }
    }
    uVar1 = uVar1 + param_1_00[1];
    if (param_1 < uVar1) {
      param_1 = uVar1;
    }
    uVar2 = FUN_008450f0(param_1_00[2],param_1 * 0x48,uVar2);
    param_1_00[2] = uVar2;
    param_1_00[1] = param_1;
  }
  return;
}



void FUN_00845220(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc56c8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00843090(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  FUN_0086bd90();
  puVar1 = DAT_032bcba8;
  iVar3 = DAT_032bcba0;
  DAT_032bcba0 = 0;
  DAT_032bcba4 = 0;
  DAT_032bcba8 = (undefined4 *)0x0;
  FUN_0086bda0();
  if (iVar3 != 0) {
    for (puVar2 = puVar1; puVar2 != puVar1 + iVar3 * 0x12; puVar2 = puVar2 + 0x12) {
      FUN_00844a50(*puVar2,puVar2 + 1,puVar2 + 10);
    }
  }
  local_4 = 0xffffffff;
  for (; iVar3 != 0; iVar3 = iVar3 + -1) {
    FUN_00844930();
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(puVar1);
}



void FUN_00845310(void)

{
  DWORD DVar1;
  int *piVar2;
  int *piVar3;
  
  if (DAT_032bcb9c == 0) {
    if ((DAT_032bdb68 == 0) || (DVar1 = GetCurrentThreadId(), DVar1 == DAT_032bdb68)) {
      piVar2 = (int *)FUN_008444f0();
    }
    else {
      piVar3 = *(int **)(*(int *)((int)ThreadLocalStoragePointer + _tls_index * 4) + 4);
      piVar2 = DAT_032bcb98;
      if (piVar3 != (int *)0x0) goto LAB_0084535c;
    }
    piVar3 = piVar2;
    if (piVar2 != (int *)0x0) {
LAB_0084535c:
      if ((DAT_032bdb68 == 0) || (DVar1 = GetCurrentThreadId(), DVar1 == DAT_032bdb68)) {
        FUN_00845220();
      }
                    // WARNING: Could not recover jumptable at 0x00845381. Too many branches
                    // WARNING: Treating indirect jump as call
      (**(code **)(*piVar3 + 4))();
      return;
    }
  }
  return;
}



void __thiscall FUN_00845390(int *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4d71;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008451c0(*param_1_00 + 1);
  local_4 = 0;
  if (param_1_00[2] + *param_1_00 * 0x48 != 0) {
    FUN_00845010(param_1);
  }
  *param_1_00 = *param_1_00 + 1;
  ExceptionList = local_c;
  return;
}



void FUN_00845400(int param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  LPCWSTR lpText;
  DWORD DVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 ****lpCaption;
  undefined4 ****local_74 [5];
  uint local_60;
  void *pvStack_5c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5700;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff7c;
  ExceptionList = &local_c;
  if (param_1 != 0) {
    if ((DAT_032bdb68 == 0) || (DVar2 = GetCurrentThreadId(), DVar2 == DAT_032bdb68)) {
      iVar4 = FUN_008444f0(uVar1);
      if (iVar4 == 0) {
        ExceptionList = local_c;
        return;
      }
    }
    else if (*(int *)(*(int *)((int)ThreadLocalStoragePointer + _tls_index * 4) + 4) == 0) {
      if (DAT_032bcb98 == 0) {
        ExceptionList = local_c;
        return;
      }
      FUN_00843090();
      FUN_0086bd90();
      local_4 = 0;
      uVar3 = FUN_008449c0(param_1,param_2,param_3);
      local_4._0_1_ = 1;
      FUN_00845390(uVar3);
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00844930();
      FUN_0083f670();
      local_4 = 0xffffffff;
      FUN_0086bda0();
      ExceptionList = local_c;
      return;
    }
    FUN_00844a50(param_1,param_2,param_3);
    ExceptionList = local_c;
    return;
  }
  FUN_004325b6(L"Fatal Error");
  lpCaption = local_74[0];
  if (local_60 < 8) {
    lpCaption = local_74;
  }
  if (*(uint *)(param_2 + 0x18) < 8) {
    lpText = (LPCWSTR)(param_2 + 4);
  }
  else {
    lpText = *(LPCWSTR *)(param_2 + 4);
  }
  MessageBoxW((HWND)0x0,lpText,(LPCWSTR)lpCaption,0x10);
  _free(pvStack_5c);
  if (local_60 < 8) {
                    // WARNING: Subroutine does not return
    _abort();
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_74[0]);
}



int __fastcall FUN_00845590(int *param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1 == 0)) {
    FUN_008402e0("..\\..\\src\\common\\event.cpp",0x36,"wxEventPtr::operator *","m_ptr != 0",0);
  }
  return *param_1;
}



undefined ** FUN_008455c0(void)

{
  return &PTR_u_wxEvtHandler_03235ff8;
}



undefined ** FUN_008455d0(void)

{
  return &PTR_u_wxEvent_03236010;
}



undefined ** FUN_008455e0(void)

{
  return &PTR_u_wxIdleEvent_03236028;
}



undefined ** FUN_008455f0(void)

{
  return &PTR_u_wxThreadEvent_03236040;
}



undefined * FUN_00845600(void)

{
  return &DAT_00d2633c;
}



undefined ** FUN_00845610(void)

{
  return &PTR_DAT_03236058;
}



int FUN_00845620(void)

{
  int iVar1;
  
  iVar1 = DAT_03235f70;
  DAT_03235f70 = DAT_03235f70 + 1;
  return iVar1;
}



void __fastcall FUN_00845630(undefined4 *param_1)

{
  *param_1 = wxEventFunctor::vftable;
  return;
}



void __fastcall FUN_00845640(int param_1)

{
  uint uVar1;
  int iVar2;
  uint *puVar3;
  void *_Dst;
  uint uVar4;
  uint uVar5;
  
  uVar1 = *(uint *)(param_1 + 8);
  iVar2 = *(int *)(param_1 + 0xc);
  uVar5 = uVar1 * 2 + 1;
  _Dst = (void *)FUN_00823c23(-(uint)((int)((ulonglong)uVar5 * 4 >> 0x20) != 0) |
                              (uint)((ulonglong)uVar5 * 4));
  *(void **)(param_1 + 0xc) = _Dst;
  _memset(_Dst,0,uVar5 * 4);
  *(uint *)(param_1 + 8) = uVar5;
  uVar5 = 0;
  if (uVar1 != 0) {
    do {
      puVar3 = *(uint **)(iVar2 + uVar5 * 4);
      if (puVar3 == (uint *)0x0) {
LAB_008456ac:
        uVar5 = uVar5 + 1;
      }
      else {
        uVar4 = *puVar3 % *(uint *)(param_1 + 8);
        if (*(int *)(*(int *)(param_1 + 0xc) + uVar4 * 4) == 0) {
          *(uint **)(*(int *)(param_1 + 0xc) + uVar4 * 4) = puVar3;
          goto LAB_008456ac;
        }
        FUN_00845640();
      }
    } while (uVar5 < uVar1);
  }
  FUN_00a3f66c(iVar2);
  return;
}



void __fastcall FUN_008456c0(int param_1)

{
  if (*(int **)(param_1 + 0x10) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x10) + 0x10))(*(undefined4 *)(param_1 + 0xc));
  }
  if (*(int **)(param_1 + 0xc) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0xc) + 0x14))(*(undefined4 *)(param_1 + 0x10));
  }
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  return;
}



undefined4 __fastcall FUN_00845700(int param_1)

{
  if ((*(int *)(param_1 + 0x10) == 0) && (*(int *)(param_1 + 0xc) == 0)) {
    return 1;
  }
  return 0;
}



void FUN_00845720(int param_1)

{
  if (param_1 != 0) {
    *(int *)(param_1 + 4) = DAT_032bd448;
    DAT_032bd448 = param_1;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\event.cpp",0x471,"wxEvtHandler::AddFilter","filter",
                 "NULL filter");
  }
  return;
}



void FUN_00845770(int param_1)

{
  int *piVar1;
  int iVar2;
  
  iVar2 = DAT_032bd448;
  if (DAT_032bd448 != 0) {
    do {
      if (iVar2 == param_1) {
        DAT_032bd448 = *(undefined4 *)(iVar2 + 4);
        *(undefined4 *)(iVar2 + 4) = 0;
        return;
      }
      piVar1 = (int *)(iVar2 + 4);
      iVar2 = *piVar1;
    } while (*piVar1 != 0);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\event.cpp",0x48f,"wxEvtHandler::RemoveFilter",
                 "Assert failure","Filter not found");
  }
  return;
}



void __thiscall FUN_008457d0(int param_1_00,undefined4 param_1)

{
  undefined4 unaff_retaddr;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x3c) == 2)) {
    FUN_00840480("..\\..\\src\\common\\event.cpp",0x694,"wxEvtHandler::DoSetClientObject",
                 "m_clientDataType != wxClientData_Void",
                 L"can\'t have both object and void client data");
  }
  if (*(undefined4 **)(param_1_00 + 0x38) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1_00 + 0x38))(1);
    *(undefined4 *)(param_1_00 + 0x38) = unaff_retaddr;
    *(undefined4 *)(param_1_00 + 0x3c) = 1;
    return;
  }
  *(undefined4 *)(param_1_00 + 0x38) = param_1;
  *(undefined4 *)(param_1_00 + 0x3c) = 1;
  return;
}



undefined4 __fastcall FUN_00845840(int param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x3c) == 2)) {
    FUN_00840480("..\\..\\src\\common\\event.cpp",0x6a2,"wxEvtHandler::DoGetClientObject",
                 "m_clientDataType != wxClientData_Void",
                 L"this window doesn\'t have object client data");
  }
  return *(undefined4 *)(param_1 + 0x38);
}



void __thiscall FUN_00845880(int param_1_00,undefined4 param_1)

{
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    *(undefined4 *)(param_1_00 + 0x38) = param_1;
    *(undefined4 *)(param_1_00 + 0x3c) = 2;
    return;
  }
  if (*(int *)(param_1_00 + 0x3c) == 1) {
    FUN_00840480("..\\..\\src\\common\\event.cpp",0x6aa,"wxEvtHandler::DoSetClientData",
                 "m_clientDataType != wxClientData_Object",
                 L"can\'t have both object and void client data");
    *(undefined4 *)(param_1_00 + 0x38) = param_1;
    *(undefined4 *)(param_1_00 + 0x3c) = 2;
    return;
  }
  *(undefined4 *)(param_1_00 + 0x38) = param_1;
  *(undefined4 *)(param_1_00 + 0x3c) = 2;
  return;
}



undefined4 __fastcall FUN_008458f0(int param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x3c) == 1)) {
    FUN_00840480("..\\..\\src\\common\\event.cpp",0x6b5,"wxEvtHandler::DoGetClientData",
                 "m_clientDataType != wxClientData_Object",
                 L"this window doesn\'t have void client data");
  }
  return *(undefined4 *)(param_1 + 0x38);
}



void __thiscall FUN_00845930(int *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  
  iVar2 = *param_1_00;
  while( true ) {
    if (iVar2 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/tracker.h",0x3a,"wxTrackable::RemoveNode",
                     "Assert failure","removing invalid tracker node");
      }
      return;
    }
    iVar1 = *param_1_00;
    if (iVar1 == param_1) break;
    iVar2 = *(int *)(iVar1 + 4);
    param_1_00 = (int *)(iVar1 + 4);
  }
  *param_1_00 = *(int *)(param_1 + 4);
  return;
}



void __fastcall FUN_00845990(int **param_1)

{
  int *piVar1;
  
  piVar1 = *param_1;
  while (piVar1 != (int *)0x0) {
    piVar1 = *param_1;
    *param_1 = (int *)piVar1[1];
    (**(code **)(*piVar1 + 4))();
    piVar1 = *param_1;
  }
  return;
}



void __fastcall FUN_008459b0(int *param_1)

{
  *(int *)(*param_1 + 0x1c) = param_1[1];
  return;
}



void __thiscall FUN_008459c0(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  param_1_00[2] = param_1;
  param_1_00[1] = 0;
  *param_1_00 = wxEventConnectionRef::vftable;
  param_1_00[3] = param_2;
  param_1_00[4] = 1;
  param_1_00[1] = *(undefined4 *)(param_2 + 8);
  *(undefined4 **)(param_2 + 8) = param_1_00;
  return;
}



void __fastcall FUN_008459f0(undefined4 *param_1)

{
  int *piVar1;
  
  piVar1 = param_1 + 4;
  *piVar1 = *piVar1 + -1;
  if (*piVar1 == 0) {
    if (param_1[3] != 0) {
      FUN_00845930(param_1);
    }
    (**(code **)*param_1)(1);
  }
  return;
}



void __thiscall FUN_00845a20(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[3] = param_2;
  param_1_00[1] = 0;
  *param_1_00 = wxEvent::vftable;
  param_1_00[2] = 0;
  param_1_00[4] = 0;
  param_1_00[5] = param_1;
  *(undefined *)(param_1_00 + 9) = 0;
  param_1_00[6] = 0;
  param_1_00[7] = 0;
  *(undefined *)((int)param_1_00 + 0x25) = 0;
  param_1_00[8] = 0;
  *(undefined *)((int)param_1_00 + 0x26) = 0;
  return;
}



void __thiscall FUN_00845a60(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  *param_1_00 = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 4);
  param_1_00[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1_00 = wxEvent::vftable;
  param_1_00[2] = *(undefined4 *)(param_1 + 8);
  param_1_00[3] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[4] = *(undefined4 *)(param_1 + 0x10);
  param_1_00[5] = *(undefined4 *)(param_1 + 0x14);
  param_1_00[6] = *(undefined4 *)(param_1 + 0x18);
  param_1_00[7] = 0;
  param_1_00[8] = *(undefined4 *)(param_1 + 0x20);
  *(undefined *)(param_1_00 + 9) = *(undefined *)(param_1 + 0x24);
  *(undefined *)((int)param_1_00 + 0x25) = *(undefined *)(param_1 + 0x25);
  *(undefined *)((int)param_1_00 + 0x26) = 0;
  return;
}



int __thiscall FUN_00845ac0(int param_1_00,int param_1)

{
  if (param_1_00 != param_1) {
    FUN_0083ea60(param_1);
  }
  *(undefined4 *)(param_1_00 + 8) = *(undefined4 *)(param_1 + 8);
  *(undefined4 *)(param_1_00 + 0xc) = *(undefined4 *)(param_1 + 0xc);
  *(undefined4 *)(param_1_00 + 0x10) = *(undefined4 *)(param_1 + 0x10);
  *(undefined4 *)(param_1_00 + 0x14) = *(undefined4 *)(param_1 + 0x14);
  *(undefined4 *)(param_1_00 + 0x18) = *(undefined4 *)(param_1 + 0x18);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x20) = *(undefined4 *)(param_1 + 0x20);
  *(undefined *)(param_1_00 + 0x24) = *(undefined *)(param_1 + 0x24);
  *(undefined *)(param_1_00 + 0x25) = *(undefined *)(param_1 + 0x25);
  return param_1_00;
}



undefined4 * __thiscall FUN_00845b10(undefined4 *param_1_00,undefined4 param_1)

{
  void *_Dst;
  
  *param_1_00 = param_1;
  *(undefined *)(param_1_00 + 1) = 1;
  _Dst = (void *)FUN_00823c23(0x7c);
  param_1_00[3] = _Dst;
  _memset(_Dst,0,0x7c);
  param_1_00[2] = 0x1f;
  param_1_00[5] = DAT_032bd444;
  if (DAT_032bd444 != (undefined4 *)0x0) {
    *(undefined4 **)((int)DAT_032bd444 + 0x10) = param_1_00;
  }
  DAT_032bd444 = param_1_00;
  return param_1_00;
}



undefined4 * __fastcall FUN_00845b70(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5733;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  param_1[2] = 0;
  local_4 = 1;
  *param_1 = wxEvtHandler::vftable;
  FUN_0086bd70(0);
  param_1[3] = 0;
  param_1[4] = 0;
  *(undefined *)(param_1 + 0xd) = 1;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00845bf0(int *param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (iVar1 != -1) {
    if (param_1[1] == -1) {
      if (iVar1 != *(int *)(param_3 + 0x14)) {
        return 0;
      }
    }
    else {
      if (*(int *)(param_3 + 0x14) < iVar1) {
        return 0;
      }
      if (param_1[1] < *(int *)(param_3 + 0x14)) {
        return 0;
      }
    }
  }
  *(undefined *)(param_3 + 0x24) = 0;
  *(int *)(param_3 + 0x18) = param_1[3];
  if (DAT_032bcb68 == (int *)0x0) {
    (**(code **)(*(int *)param_1[2] + 4))(param_2,param_3);
  }
  else {
    (**(code **)(*DAT_032bcb68 + 0x88))(param_2,(int *)param_1[2]);
  }
  if (*(char *)(param_3 + 0x24) != '\0') {
    return 0;
  }
  return 1;
}



undefined4 __thiscall FUN_00845c70(int *param_1_00,int param_1)

{
  char cVar1;
  
  if (((DAT_032bcb68 != (int *)0x0) && (param_1_00 != DAT_032bcb68)) &&
     (*(int *)(param_1 + 0xc) != DAT_032bd450)) {
    cVar1 = (**(code **)(*DAT_032bcb68 + 0x18))(param_1);
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



undefined4 __thiscall FUN_00845cb0(int *param_1_00,int param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  if ((int *)param_1_00[3] != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00845cbe. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (**(code **)(*(int *)param_1_00[3] + 0x2c))();
    return uVar2;
  }
  if (((DAT_032bcb68 != (int *)0x0) && (param_1_00 != DAT_032bcb68)) &&
     (*(int *)(param_1 + 0xc) != DAT_032bd450)) {
    cVar1 = (**(code **)(*DAT_032bcb68 + 0x18))(param_1);
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



undefined4 __thiscall FUN_00845d00(int param_1_00,int param_1)

{
  int *piVar1;
  undefined4 uVar2;
  void **ppvVar3;
  char cVar4;
  uint uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5758;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  piVar1 = *(int **)(param_1_00 + 0xc);
  ppvVar3 = &local_c;
  local_c = ExceptionList;
  while( true ) {
    ExceptionList = ppvVar3;
    if (piVar1 == (int *)0x0) {
      ExceptionList = local_c;
      return 0;
    }
    uVar2 = *(undefined4 *)(param_1 + 0x1c);
    *(int **)(param_1 + 0x1c) = piVar1;
    local_4 = 0;
    cVar4 = (**(code **)(*piVar1 + 0x18))(param_1,uVar5);
    if (cVar4 != '\0') break;
    if (piVar1 != *(int **)(param_1 + 0x1c)) {
      *(undefined *)(param_1 + 0x24) = 1;
      *(undefined4 *)(param_1 + 0x1c) = uVar2;
      ExceptionList = local_c;
      return 1;
    }
    *(undefined4 *)(param_1 + 0x1c) = uVar2;
    piVar1 = (int *)piVar1[3];
    ppvVar3 = (void **)ExceptionList;
  }
  *(undefined *)(param_1 + 0x24) = 0;
  *(undefined4 *)(param_1 + 0x1c) = uVar2;
  ExceptionList = local_c;
  return 1;
}



void __thiscall FUN_00845dc0(int *param_1_00,undefined4 param_1)

{
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bc5780;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  local_8 = 0;
  (**(code **)(*param_1_00 + 0x18))(param_1);
  ExceptionList = local_10;
  return;
}



undefined4 Catch_All_00845e0f(void)

{
  int *piVar1;
  int *piVar2;
  char cVar3;
  int unaff_EBP;
  
  piVar2 = DAT_032bdbdc;
  piVar1 = DAT_032bcb68;
  *(BADSPACEBASE **)(unaff_EBP + -0x10) = register0x00000010;
  *(undefined *)(unaff_EBP + -4) = 2;
  *(int **)(unaff_EBP + 8) = piVar2;
  if ((piVar1 != (int *)0x0) && (cVar3 = (**(code **)(*piVar1 + 0x94))(), cVar3 != '\0')) {
    return 0x845e65;
  }
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 0xc))(0);
  }
  return 0x845e65;
}



uint Catch_All_00845e4c(void)

{
  uint uVar1;
  int unaff_EBP;
  
  if (*(int **)(unaff_EBP + 8) != (int *)0x0) {
    (**(code **)(**(int **)(unaff_EBP + 8) + 0xc))(0);
  }
  uVar1 = __CxxThrowException_8(0,0);
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return uVar1 & 0xffffff00;
}



undefined4 __thiscall FUN_00845e80(undefined4 param_1_00,int param_1,int param_2)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  iVar1 = *(int *)(param_2 + 0xc);
  iVar4 = *(int *)(param_1 + 4);
  iVar5 = 0;
  if (*(int *)(iVar4 + 8) != 0) {
    iVar3 = 0;
    do {
      if (iVar1 == **(int **)(iVar3 + iVar4 + 0x10)) {
        cVar2 = FUN_00845bf0(iVar3 + iVar4,param_1_00,param_2);
        if (cVar2 != '\0') {
          return 1;
        }
      }
      iVar4 = *(int *)(param_1 + 4);
      iVar5 = iVar5 + 1;
      iVar3 = iVar5 * 0x14;
    } while (*(int *)(iVar4 + 8 + iVar3) != 0);
  }
  return 0;
}



undefined4 __thiscall FUN_00845ee0(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  
  if (*(int *)(param_1_00 + 0x14) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\event.cpp",0x679,"wxEvtHandler::SearchDynamicEventTable",
                   "m_dynamicEvents",L"caller should check that we have dynamic events");
    }
    return 0;
  }
  iVar1 = *(int *)(*(int *)(param_1_00 + 0x14) + 0xc);
  do {
    do {
      if (iVar1 == 0) {
        return 0;
      }
      iVar2 = *(int *)(iVar1 + 8);
      iVar1 = *(int *)(iVar1 + 0xc);
    } while (*(int *)(param_1 + 0xc) != *(int *)(iVar2 + 0x10));
    iVar4 = (**(code **)(**(int **)(iVar2 + 8) + 0xc))();
    if (iVar4 == 0) {
      iVar4 = param_1_00;
    }
    cVar3 = FUN_00845bf0(iVar2,iVar4,param_1);
  } while (cVar3 == '\0');
  return 1;
}



int __thiscall FUN_00845f80(int param_1_00,int param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *(int **)(param_1 + 8);
  while( true ) {
    if (piVar1 == (int *)0x0) {
      return 0;
    }
    iVar2 = (**(code **)(*piVar1 + 8))();
    if ((iVar2 != 0) && (*(int *)(iVar2 + 8) == param_1_00)) break;
    piVar1 = (int *)piVar1[1];
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(iVar2 + 0xc) != param_1)) {
    FUN_008402e0("..\\..\\src\\common\\event.cpp",0x6c4,"wxEvtHandler::FindRefInTrackerList",
                 "evtConnRef->m_sink==eventSink",0);
  }
  return iVar2;
}



undefined4 * __thiscall FUN_00845ff0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxTrackerNode::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x40);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00845b70(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_008460d0(int param_1_00,int param_1)

{
  int iVar1;
  uint *puVar2;
  undefined4 *puVar3;
  uint uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc57ab;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1_00 + 0xc);
  if (iVar1 != 0) {
    uVar4 = **(uint **)(param_1 + 0x10) % *(uint *)(param_1_00 + 8);
    puVar2 = *(uint **)(iVar1 + uVar4 * 4);
    if (puVar2 == (uint *)0x0) {
      puVar3 = (undefined4 *)operator_new(0x10);
      local_4 = 0;
      if (puVar3 == (undefined4 *)0x0) {
        puVar3 = (undefined4 *)0x0;
      }
      else {
        FUN_0086a600();
      }
      *puVar3 = **(undefined4 **)(param_1 + 0x10);
      *(undefined4 **)(iVar1 + uVar4 * 4) = puVar3;
    }
    else if (*puVar2 != **(uint **)(param_1 + 0x10)) {
      FUN_00845640(DAT_0323f878 ^ (uint)&stack0xffffffe8);
      FUN_008460d0(param_1);
      ExceptionList = local_c;
      return;
    }
    local_4 = 0xffffffff;
    FUN_0086a400(param_1,1);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_008461a0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,
            undefined4 param_5)

{
  uint uVar1;
  void *pvVar2;
  void *pvVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc57e6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x14);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    pvVar2 = (void *)0x0;
  }
  else {
    FUN_00418b2d(param_1,param_2,param_4,param_5);
    *(undefined4 *)((int)pvVar2 + 0x10) = param_3;
  }
  local_4 = 0xffffffff;
  if (*(int *)(param_1_00 + 0x14) == 0) {
    pvVar3 = operator_new(0x18);
    local_4 = 1;
    if (pvVar3 == (void *)0x0) {
      uVar4 = 0;
    }
    else {
      uVar4 = FUN_0086b270(0);
    }
    *(undefined4 *)(param_1_00 + 0x14) = uVar4;
  }
  local_4 = 0xffffffff;
  FUN_0086ae40(0,pvVar2);
  iVar5 = (**(code **)(*param_4 + 0xc))(uVar1);
  if ((iVar5 != 0) && (iVar5 != param_1_00)) {
    iVar6 = FUN_00845f80(iVar5);
    if (iVar6 != 0) {
      *(int *)(iVar6 + 0x10) = *(int *)(iVar6 + 0x10) + 1;
      ExceptionList = local_c;
      return;
    }
    pvVar2 = operator_new(0x14);
    if (pvVar2 != (void *)0x0) {
      FUN_008459c0(param_1_00,iVar5);
    }
  }
  ExceptionList = local_c;
  return;
}



uint __thiscall
FUN_008462c0(int param_1_00,int param_1,uint param_2,int param_3,int *param_4,int param_6)

{
  int *piVar1;
  uint in_EAX;
  int iVar2;
  uint uVar3;
  
  if (*(int *)(param_1_00 + 0x14) == 0) {
    return in_EAX & 0xffffff00;
  }
  iVar2 = (**(code **)(*param_4 + 0xc))();
  if (((iVar2 != 0) && (iVar2 != param_1_00)) && (iVar2 = FUN_00845f80(iVar2), iVar2 != 0)) {
    FUN_008459f0();
  }
  uVar3 = *(uint *)(param_1_00 + 0x14);
  iVar2 = *(int *)(uVar3 + 0xc);
  while( true ) {
    if (iVar2 == 0) {
      return uVar3 & 0xffffff00;
    }
    piVar1 = *(int **)(iVar2 + 8);
    if ((((*piVar1 == param_1) &&
         ((uVar3 = param_2, piVar1[1] == param_2 || (param_2 == 0xffffffff)))) &&
        ((piVar1[4] == param_3 || (param_3 == DAT_032bd44c)))) &&
       ((uVar3 = (**(code **)(*(int *)piVar1[2] + 8))(param_4), (char)uVar3 != '\0' &&
        ((piVar1[3] == param_6 || (param_6 == 0)))))) break;
    iVar2 = *(int *)(iVar2 + 0xc);
  }
  if ((int *)piVar1[3] != (int *)0x0) {
    (**(code **)(*(int *)piVar1[3] + 4))(1);
  }
  FUN_0086b060(iVar2);
  if ((undefined4 *)piVar1[2] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)piVar1[2])(1);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(piVar1);
}



void __thiscall FUN_008463b0(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x14) == 0)) {
    FUN_008402e0("..\\..\\src\\common\\event.cpp",0x6ce,"wxEvtHandler::OnSinkDestroyed",
                 "m_dynamicEvents",0);
  }
  iVar2 = *(int *)(*(int *)(param_1 + 0x14) + 0xc);
  do {
    iVar3 = iVar2;
    if (iVar3 == 0) {
      return;
    }
    iVar1 = *(int *)(iVar3 + 8);
    iVar2 = *(int *)(iVar3 + 0xc);
    iVar4 = (**(code **)(**(int **)(iVar1 + 8) + 0xc))();
  } while (iVar4 != param_2);
  if (*(int **)(iVar1 + 0xc) != (int *)0x0) {
    (**(code **)(**(int **)(iVar1 + 0xc) + 4))(1);
  }
  FUN_0086b060(iVar3);
  if (*(undefined4 **)(iVar1 + 8) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(iVar1 + 8))(1);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar1);
}



void __fastcall FUN_00846450(undefined4 *param_1)

{
  if (param_1[2] != 0) {
    FUN_008463b0(param_1[3]);
  }
  (**(code **)*param_1)(1);
  return;
}



void __fastcall FUN_00846470(int param_1)

{
  int iVar1;
  uint uVar2;
  
  uVar2 = 0;
  if (*(int *)(param_1 + 8) != 0) {
    do {
      iVar1 = *(int *)(*(int *)(param_1 + 0xc) + uVar2 * 4);
      if (iVar1 != 0) {
        FUN_0086aa30();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < *(uint *)(param_1 + 8));
  }
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_00a3f66c(*(int *)(param_1 + 0xc));
    *(undefined4 *)(param_1 + 0xc) = 0;
  }
  *(undefined4 *)(param_1 + 8) = 0;
  return;
}



void __fastcall FUN_008464d0(undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  
  for (puVar1 = (undefined4 *)*param_1; puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1)
  {
    iVar2 = *(int *)(puVar1[1] + 8);
    iVar3 = puVar1[1];
    while (iVar2 != 0) {
      FUN_008460d0(iVar3);
      iVar2 = *(int *)(iVar3 + 0x1c);
      iVar3 = iVar3 + 0x14;
    }
  }
  uVar4 = 0;
  if (param_1[2] != 0) {
    do {
      if (*(int *)(param_1[3] + uVar4 * 4) != 0) {
        FUN_0086a040();
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < (uint)param_1[2]);
  }
  return;
}



void __fastcall FUN_00846530(undefined4 *param_1)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  int iVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc582e;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  *param_1 = wxEvtHandler::vftable;
  local_4 = 2;
  if ((int *)param_1[4] != (int *)0x0) {
    (**(code **)(*(int *)param_1[4] + 0x10))(param_1[3],uVar3);
  }
  if ((int *)param_1[3] != (int *)0x0) {
    (**(code **)(*(int *)param_1[3] + 0x14))(param_1[4]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  if (param_1[5] != 0) {
    iVar1 = *(int *)(param_1[5] + 0xc);
    if (iVar1 != 0) {
      iVar1 = *(int *)(iVar1 + 8);
      iVar4 = (**(code **)(**(int **)(iVar1 + 8) + 0xc))();
      if ((iVar4 != 0) && (puVar5 = (undefined4 *)FUN_00845f80(iVar4), puVar5 != (undefined4 *)0x0))
      {
        FUN_00845930(puVar5);
        (**(code **)*puVar5)(1);
      }
      if (*(int **)(iVar1 + 0xc) != (int *)0x0) {
        (**(code **)(**(int **)(iVar1 + 0xc) + 4))(1);
      }
      if (*(undefined4 **)(iVar1 + 8) != (undefined4 *)0x0) {
        (**(code **)**(undefined4 **)(iVar1 + 8))(1);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar1);
    }
    if ((undefined4 *)param_1[5] != (undefined4 *)0x0) {
      (***(code ***)(undefined4 *)param_1[5])(1);
    }
  }
  if (DAT_032bcb68 != 0) {
    FUN_008413d0(param_1);
  }
  if (param_1[6] != 0) {
    *(undefined *)(param_1[6] + 8) = 1;
  }
  if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[6])(1);
    param_1[6] = 0;
  }
  if ((param_1[0xf] == 1) && ((undefined4 *)param_1[0xe] != (undefined4 *)0x0)) {
    (***(code ***)(undefined4 *)param_1[0xe])(1);
  }
  local_4._0_1_ = 1;
  FUN_0086bd80();
  iVar1 = param_1[2];
  local_4 = (uint)local_4._1_3_ << 8;
  while (iVar1 != 0) {
    piVar2 = (int *)param_1[2];
    param_1[2] = piVar2[1];
    (**(code **)(*piVar2 + 4))();
    iVar1 = param_1[2];
  }
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_008466d0(int param_1)

{
  if (*(int *)(param_1 + 0x14) != 0) {
    *(undefined4 *)(*(int *)(param_1 + 0x14) + 0x10) = *(undefined4 *)(param_1 + 0x10);
  }
  if (*(int *)(param_1 + 0x10) != 0) {
    *(undefined4 *)(*(int *)(param_1 + 0x10) + 0x14) = *(undefined4 *)(param_1 + 0x14);
  }
  if (DAT_032bd444 == param_1) {
    DAT_032bd444 = *(int *)(param_1 + 0x14);
  }
  FUN_00846470();
  return;
}



undefined4 __thiscall FUN_00846700(int param_1_00,int param_1,undefined4 param_2)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  uint uVar4;
  
  if (*(char *)(param_1_00 + 4) != '\0') {
    FUN_008464d0();
    *(undefined *)(param_1_00 + 4) = 0;
  }
  if (*(int *)(param_1_00 + 0xc) == 0) {
    return 0;
  }
  puVar1 = *(uint **)(*(int *)(param_1_00 + 0xc) +
                     (*(uint *)(param_1 + 0xc) % *(uint *)(param_1_00 + 8)) * 4);
  if ((puVar1 != (uint *)0x0) && (*puVar1 == *(uint *)(param_1 + 0xc))) {
    uVar2 = puVar1[2];
    uVar4 = 0;
    if (uVar2 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (puVar1[2] <= uVar4)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        cVar3 = FUN_00845bf0(*(undefined4 *)(puVar1[3] + uVar4 * 4),param_2,param_1);
        if (cVar3 != '\0') {
          return 1;
        }
        uVar4 = uVar4 + 1;
      } while (uVar4 < uVar2);
    }
  }
  return 0;
}



bool __thiscall FUN_008467b0(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  
  if (*(char *)(param_1_00 + 0xd) == '\0') {
    return false;
  }
  if (param_1_00[5] != 0) {
    cVar1 = FUN_00845ee0(param_1);
    if (cVar1 != '\0') {
      return true;
    }
  }
  (**(code **)(*param_1_00 + 0x3c))(param_1,param_1_00);
  cVar1 = FUN_00846700(param_1,param_1_00);
  return cVar1 != '\0';
}



void __fastcall FUN_00846800(void *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5858;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  (**(code **)(**(int **)((int)param_1 + 0x40) + 8))
            ((int)param_1 + 0x30,DAT_0323f878 ^ (uint)&stack0xffffffec);
  _free(*(void **)((int)param_1 + 0x1c));
  if (7 < *(uint *)((int)param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)((int)param_1 + 4));
  }
  *(undefined4 *)((int)param_1 + 0x18) = 7;
  *(undefined4 *)((int)param_1 + 0x14) = 0;
  *(undefined2 *)((int)param_1 + 4) = 0;
  ExceptionList = param_1;
  return;
}



undefined4 __thiscall FUN_00846890(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1_00 + 0x28))(param_1);
  if (cVar1 == '\0') {
    cVar1 = FUN_008467b0(param_1);
    if (cVar1 == '\0') {
      cVar1 = FUN_00845d00(param_1);
      if (cVar1 == '\0') {
        return 0;
      }
    }
  }
  return 1;
}



undefined4 FUN_00846930(void)

{
  return 0x10;
}



void __fastcall FUN_00846940(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00846800(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008469a0(undefined4 param_1_00,byte param_1)

{
  FUN_00846940();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



bool __thiscall FUN_008469f0(int *param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  
  if (*(char *)(param_1 + 0x26) == '\0') {
    *(undefined *)(param_1 + 0x26) = 1;
    for (piVar3 = DAT_032bd448; piVar3 != (int *)0x0; piVar3 = (int *)piVar3[1]) {
      iVar2 = (**(code **)(*piVar3 + 4))(param_1);
      if (iVar2 != -1) {
        if (((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar2 != 0)) && (iVar2 != 1)) {
          FUN_008402e0("..\\..\\src\\common\\event.cpp",0x585,"wxEvtHandler::ProcessEvent",
                       "rc == wxEventFilter::Event_Ignore || rc == wxEventFilter::Event_Processed",
                       "unexpected FilterEvent() return value");
        }
        return iVar2 != 0;
      }
    }
  }
  if (param_1_00 == *(int **)(param_1 + 0x1c)) {
    cVar1 = (**(code **)(*param_1_00 + 0x28))(param_1);
    if (cVar1 == '\0') {
      if (*(char *)(param_1_00 + 0xd) == '\0') {
        return false;
      }
      if ((param_1_00[5] == 0) || (cVar1 = FUN_00845ee0(param_1), cVar1 == '\0')) {
        (**(code **)(*param_1_00 + 0x3c))(param_1,param_1_00);
        cVar1 = FUN_00846700(param_1,param_1_00);
        if (cVar1 == '\0') {
          return false;
        }
      }
    }
    return true;
  }
  cVar1 = (**(code **)(*param_1_00 + 0x28))(param_1);
  if (cVar1 != '\0') goto LAB_00846b01;
  if (*(char *)(param_1_00 + 0xd) != '\0') {
    if ((param_1_00[5] != 0) && (cVar1 = FUN_00845ee0(param_1), cVar1 != '\0')) goto LAB_00846b01;
    iVar2 = param_1;
    piVar3 = param_1_00;
    (**(code **)(*param_1_00 + 0x3c))(param_1,param_1_00);
    cVar1 = FUN_00846700(iVar2,piVar3);
    if (cVar1 != '\0') goto LAB_00846b01;
  }
  cVar1 = FUN_00845d00(param_1);
  if (cVar1 == '\0') {
    cVar1 = (**(code **)(*param_1_00 + 0x2c))(param_1);
    return cVar1 != '\0';
  }
LAB_00846b01:
  return *(char *)(param_1 + 0x24) == '\0';
}



undefined4 FUN_00846b30(uint param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  DWORD DVar2;
  uint uVar3;
  undefined4 uVar4;
  uint param_8;
  void *param_9;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5b08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar4 = 0;
  local_4 = 0;
  cVar1 = DAT_03235e94;
  if ((DAT_032bdb68 != 0) &&
     (DVar2 = GetCurrentThreadId(), cVar1 = DAT_03235e94, DVar2 != DAT_032bdb68)) {
    cVar1 = FUN_00842f10();
  }
  if (cVar1 != '\0') {
    FID_conflict_assign(&param_2,0,0xffffffff);
    uVar3 = FUN_00844650();
    if (param_1 <= uVar3) {
      uVar4 = 1;
    }
  }
  _free(param_9);
  if (param_8 < 8) {
    ExceptionList = local_c;
    return uVar4;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



int __thiscall FUN_00846bf0(int param_1_00,int param_1)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  void *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5888;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x24) = *(undefined4 *)(param_1 + 0x24);
  *(undefined4 *)(param_1_00 + 0x28) = *(undefined4 *)(param_1 + 0x28);
  piVar1 = DAT_032bdc50;
  *(int **)(param_1_00 + 0x40) = DAT_032bdc50;
  local_4 = 0;
  (**(code **)(*piVar1 + 8))(param_1_00 + 0x30,uVar3);
  piVar1 = *(int **)(param_1 + 0x40);
  cVar2 = (**(code **)(*piVar1 + 4))(*(undefined4 *)(param_1_00 + 0x40));
  if (cVar2 == '\0') {
    *(int **)(param_1_00 + 0x40) = piVar1;
  }
  (**(code **)(*piVar1 + 0xc))(param_1 + 0x30,param_1_00 + 0x30);
  ExceptionList = unaff_ESI;
  return param_1_00;
}



undefined4 * __thiscall FUN_00846ca0(undefined4 *param_1_00,int param_1)

{
  undefined4 uVar1;
  int local_3c [2];
  char local_34;
  undefined4 local_30;
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc58d3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00845a60(param_1);
  local_4 = 0;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00846bf0(param_1);
  *param_1_00 = wxThreadEvent::vftable;
  uVar1 = FUN_00432231(local_3c);
  local_4._0_1_ = 2;
  FUN_00840a70(uVar1);
  local_4 = CONCAT31(local_4._1_3_,3);
  if (param_1_00 + 10 != &local_30) {
    FID_conflict_assign(&local_30,0,0xffffffff);
  }
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  if ((local_34 != '\0') && (local_3c[0] != 0)) {
    _free(*(void **)(local_3c[0] + 0x1c));
    if (7 < *(uint *)(local_3c[0] + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(local_3c[0] + 4));
    }
    *(undefined4 *)(local_3c[0] + 0x18) = 7;
    *(undefined4 *)(local_3c[0] + 0x14) = 0;
    *(undefined2 *)(local_3c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_3c[0]);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_00846dd0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x70);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00846ca0(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00846e40(int param_1_00,int *param_1)

{
  char cVar1;
  void *pvVar2;
  undefined4 uVar3;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc590b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0();
    }
    ExceptionList = local_c;
    return;
  }
  if (DAT_032bcb68 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0083fbe0();
      local_4 = 0;
      FUN_008423d0();
      local_4._0_1_ = 1;
      FUN_008854f0();
      FUN_0083fe90();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    (**(code **)(*param_1 + 4))();
    ExceptionList = pvStack_10;
    return;
  }
  FUN_0086bd90();
  if (*(int *)(param_1_00 + 0x18) == 0) {
    pvVar2 = operator_new(0x18);
    local_4 = 2;
    if (pvVar2 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = FUN_0086b270();
    }
    local_4 = 0xffffffff;
    *(undefined4 *)(param_1_00 + 0x18) = uVar3;
  }
  FUN_0086ad60();
  FUN_0083f580();
  FUN_0086bda0();
  FUN_0083f670();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00847000(int *param_1)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  int iVar4;
  int *piVar5;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5948;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032bcb68 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(6);
    if (cVar3 != '\0') {
      FUN_0083fbe0();
      local_4 = 0;
      FUN_008423d0();
      local_4._0_1_ = 1;
      FUN_008854f0();
      FUN_0083fe90();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
      ExceptionList = local_c;
      return;
    }
  }
  else {
    FUN_0086bd90();
    piVar2 = DAT_032bdbdc;
    iVar4 = param_1[6];
    if ((iVar4 != 0) && (*(int *)(iVar4 + 4) != 0)) {
      iVar4 = *(int *)(iVar4 + 0xc);
      piVar5 = *(int **)(iVar4 + 8);
      if (DAT_032bdbdc != (int *)0x0) {
        cVar3 = (**(code **)(*DAT_032bdbdc + 0x2c))();
        if (cVar3 != '\0') {
          while (piVar5 != (int *)0x0) {
            iVar1 = *piVar2;
            (**(code **)(*piVar5 + 0x14))();
            cVar3 = (**(code **)(iVar1 + 0x30))();
            if (cVar3 != '\0') break;
            iVar4 = *(int *)(iVar4 + 0xc);
            if (iVar4 == 0) goto LAB_00847162;
            piVar5 = *(int **)(iVar4 + 8);
          }
          if (iVar4 == 0) {
LAB_00847162:
            FUN_00841380();
            FUN_0086bda0();
            ExceptionList = local_c;
            return;
          }
        }
      }
      local_4 = 2;
      FUN_0086b060();
      if (*(int *)(param_1[6] + 4) == 0) {
        FUN_008413d0();
      }
      FUN_0086bda0();
      iVar4 = *param_1;
      FUN_00845590();
      (**(code **)(iVar4 + 0x18))();
      puStack_8 = (undefined *)0xffffffff;
      FUN_008c5410();
      ExceptionList = pvStack_10;
      return;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0();
    }
  }
  ExceptionList = local_c;
  return;
}



int FUN_00847250(void)

{
  UINT UVar1;
  
  UVar1 = GetACP();
  if (UVar1 - 0x4e2 < 8) {
    return UVar1 - 0x4c3;
  }
  if (UVar1 == 0x36a) {
    return 0x1a;
  }
  if (UVar1 == 0x3a4) {
    return 0x1b;
  }
  if (UVar1 == 0x3a8) {
    return 0x1c;
  }
  if (UVar1 == 0x3b5) {
    return 0x1d;
  }
  return (-(uint)(UVar1 != 0x3b6) & 0xffffffe1) + 0x1e;
}



undefined4 FUN_008472b0(int param_1)

{
  if (param_1 == 2) {
    return 0x1f;
  }
  if (param_1 != 3) {
    if (param_1 != 5) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_008402e0("..\\..\\src\\common\\intl.cpp",0x57e,
                     "`anonymous-namespace\'::GetLCTYPEFormatFromLocalInfo","Assert failure",
                     "no matching LCTYPE");
      }
      return 0;
    }
    return 0x1003;
  }
  return 0x20;
}



undefined4 FUN_00847310(void)

{
  return DAT_032bd45c;
}



undefined ** FUN_00847320(void)

{
  return &PTR_u_wxLocaleModule_032360bc;
}



undefined4 * __fastcall FUN_00847330(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5983;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = wxModule::vftable;
  FUN_0086a600(uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00853ce0(0);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_008473a0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bc5983;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxModule::vftable;
  local_4 = 1;
  FUN_00853f30(uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_0086aa30();
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined8 * __thiscall
FUN_00847420(undefined8 *param_1_00,undefined8 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 0x40) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<double>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



void FUN_00847490(void)

{
  uint uVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  if (DAT_032bd458 == (void *)0x0) {
    pvVar2 = operator_new(0xc);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      pvVar2 = (void *)0x0;
    }
    else {
      FUN_0086a600(uVar1);
    }
    local_4 = 0xffffffff;
    DAT_032bd458 = pvVar2;
    FUN_00899860();
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00847510(int param_1)

{
  int iVar1;
  
  *(undefined4 *)(param_1 + 0x50) = 0;
  iVar1 = param_1;
  *(int *)(param_1 + 0x54) = DAT_032bd45c;
  DAT_032bd45c = iVar1;
  iVar1 = FUN_0084a340();
  if ((iVar1 == 0) ||
     ((*(int *)(param_1 + 0x54) != 0 && (iVar1 == *(int *)(param_1 + 0x54) + 0x5c)))) {
    FUN_0084d6f0(param_1 + 0x5c);
  }
  *(undefined *)(param_1 + 0x58) = 0;
  *(undefined4 *)(param_1 + 0x4c) = 1;
  return;
}



undefined4 FUN_00847560(void)

{
  uint uVar1;
  LCID LVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  
  FUN_00847490();
  uVar1 = *(uint *)(DAT_032bd458 + 4);
  uVar5 = 0;
  LVar2 = GetUserDefaultLCID();
  iVar4 = DAT_032bd458;
  if (LVar2 == 0) {
LAB_0084763a:
    if (uVar5 < uVar1) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar4 + 4) <= uVar5)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      return **(undefined4 **)(*(int *)(iVar4 + 8) + uVar5 * 4);
    }
  }
  else if (uVar1 != 0) {
    do {
      iVar3 = iVar4;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar4 + 4) <= uVar5)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
        iVar3 = DAT_032bd458;
      }
      iVar4 = iVar3;
      if (*(uint *)(*(int *)(*(int *)(iVar4 + 8) + uVar5 * 4) + 0x28) == (LVar2 & 0x3ff)) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar3 + 4) <= uVar5)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          iVar4 = DAT_032bd458;
        }
        if (*(uint *)(*(int *)(*(int *)(iVar3 + 8) + uVar5 * 4) + 0x2c) == (LVar2 & 0xffff) >> 10)
        goto LAB_0084763a;
      }
      uVar5 = uVar5 + 1;
    } while (uVar5 < uVar1);
  }
  return 1;
}



undefined4 FUN_00847680(int param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  
  FUN_00847490();
  if (param_1 == 0) {
    param_1 = FUN_00847560();
  }
  uVar1 = *(uint *)(DAT_032bd458 + 4);
  uVar4 = 0;
  iVar2 = DAT_032bd458;
  if (uVar1 != 0) {
    do {
      iVar3 = iVar2;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 4) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
        iVar3 = DAT_032bd458;
      }
      if (**(int **)(*(int *)(iVar2 + 8) + uVar4 * 4) == param_1) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar3 + 4) <= uVar4)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        return *(undefined4 *)(*(int *)(iVar3 + 8) + uVar4 * 4);
      }
      uVar4 = uVar4 + 1;
      iVar2 = iVar3;
    } while (uVar4 < uVar1);
  }
  return 0;
}



undefined4 * FUN_00847740(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxLocaleModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 __thiscall FUN_008477a0(int *param_1_00,int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1_00;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *param_1)))) {
    FUN_00a3fb10();
  }
  return CONCAT31((int3)((uint)param_1_00[1] >> 8),param_1_00[1] == param_1[1]);
}



undefined4 __thiscall FUN_008477d0(int *param_1_00,int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1_00;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *param_1)))) {
    FUN_00a3fb10();
  }
  return CONCAT31((int3)((uint)param_1_00[1] >> 8),param_1_00[1] != param_1[1]);
}



int * __fastcall FUN_00847800(int *param_1)

{
  int iVar1;
  int iVar2;
  
  if (*param_1 != -4) {
    if (*param_1 == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *param_1;
    if (*(uint *)(iVar1 + 0x18) < 8) {
      iVar2 = iVar1 + 4;
    }
    else {
      iVar2 = *(int *)(iVar1 + 4);
    }
    if ((uint)(iVar2 + *(int *)(iVar1 + 0x14) * 2) <= (uint)param_1[1]) {
      FUN_00a3fb10();
    }
  }
  param_1[1] = param_1[1] + 2;
  return param_1;
}



void __thiscall FUN_00847840(int *param_1_00,uint *param_1)

{
  int iVar1;
  int iVar2;
  
  if (*param_1_00 != -4) {
    if (*param_1_00 == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *param_1_00;
    if (*(uint *)(iVar1 + 0x18) < 8) {
      iVar2 = iVar1 + 4;
    }
    else {
      iVar2 = *(int *)(iVar1 + 4);
    }
    if ((uint)(iVar2 + *(int *)(iVar1 + 0x14) * 2) <= (uint)param_1_00[1]) {
      FUN_00a3fb10();
    }
  }
  *param_1 = (uint)*(ushort *)param_1_00[1];
  return;
}



void __thiscall FUN_00847890(int param_1_00,int *param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  uVar1 = *(uint *)(param_1_00 + 0x18);
  puVar2 = (undefined4 *)(param_1_00 + 4);
  puVar4 = puVar2;
  if (7 < uVar1) {
    puVar4 = (undefined4 *)*puVar2;
  }
  if (puVar4 != (undefined4 *)0x0) {
    puVar3 = puVar2;
    if (7 < uVar1) {
      puVar3 = (undefined4 *)*puVar2;
    }
    if (puVar3 <= puVar4) {
      if (7 < uVar1) {
        puVar2 = (undefined4 *)*puVar2;
      }
      if (puVar4 <= (undefined4 *)((int)puVar2 + *(int *)(param_1_00 + 0x14) * 2))
      goto LAB_008478ce;
    }
  }
  FUN_00a3fb10();
LAB_008478ce:
  param_1[1] = (int)puVar4;
  *param_1 = param_1_00;
  return;
}



void __thiscall FUN_008478e0(int param_1_00,int *param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  
  uVar1 = *(uint *)(param_1_00 + 0x18);
  puVar3 = (undefined4 *)(param_1_00 + 4);
  puVar4 = puVar3;
  if (7 < uVar1) {
    puVar4 = (undefined4 *)*puVar3;
  }
  iVar2 = *(int *)(param_1_00 + 0x14) * 2;
  puVar4 = (undefined4 *)(iVar2 + (int)puVar4);
  if (puVar4 != (undefined4 *)0x0) {
    puVar5 = puVar3;
    if (7 < uVar1) {
      puVar5 = (undefined4 *)*puVar3;
    }
    if (puVar5 <= puVar4) {
      if (7 < uVar1) {
        puVar3 = (undefined4 *)*puVar3;
      }
      if (puVar4 <= (undefined4 *)(iVar2 + (int)puVar3)) goto LAB_00847923;
    }
  }
  FUN_00a3fb10();
LAB_00847923:
  param_1[1] = (int)puVar4;
  *param_1 = param_1_00;
  return;
}



void FUN_00847940(int param_1,undefined4 param_2)

{
  if (7 < *(uint *)(param_1 + 0x18)) {
    FUN_00420f3f(*(undefined4 *)(param_1 + 4),param_2,*(undefined4 *)(param_1 + 0x14));
    return;
  }
  FUN_00420f3f(param_1 + 4,param_2,*(undefined4 *)(param_1 + 0x14));
  return;
}



int * __thiscall FUN_00847980(int *param_1_00,int *param_1,int param_2,undefined4 param_3)

{
  short *psVar1;
  uint uVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6bb8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *param_1_00 = *param_1;
  iVar3 = FUN_00850350(uVar2);
  if (*param_1_00 != iVar3) {
    psVar1 = (short *)(*param_1_00 + 8);
    *psVar1 = *psVar1 + 1;
  }
  local_4 = 0;
  if (((param_2 != 0) && (uVar2 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar2 & 6) != uVar2)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x200,
                 "wxArgNormalizerWithBuffer<wchar_t>::wxArgNormalizerWithBuffer",
                 "(argtype & (wxFormatString::Arg_String)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_00847a30(undefined4 param_1,undefined4 param_2,undefined8 param_3)

{
  undefined4 uVar1;
  uint uStack_4;
  
  FUN_00847420(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,(ulonglong)uStack_4 << 0x20);
  return param_1;
}



void __fastcall FUN_00847a80(int param_1)

{
  _free(*(void **)(param_1 + 0x4c));
  if (7 < *(uint *)(param_1 + 0x48)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x34));
  }
  *(undefined4 *)(param_1 + 0x48) = 7;
  *(undefined4 *)(param_1 + 0x44) = 0;
  *(undefined2 *)(param_1 + 0x34) = 0;
  _free(*(void **)(param_1 + 0x20));
  if (7 < *(uint *)(param_1 + 0x1c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 8));
  }
  *(undefined4 *)(param_1 + 0x1c) = 7;
  *(undefined4 *)(param_1 + 0x18) = 0;
  *(undefined2 *)(param_1 + 8) = 0;
  return;
}



void __fastcall FUN_00847af0(undefined4 *param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc59c1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxLocale::vftable;
  local_4 = 2;
  puVar2 = (undefined4 *)FUN_0084a340(uVar1);
  if (puVar2 == param_1 + 0x17) {
    if (param_1[0x15] == 0) {
      FUN_0084dd00(0);
    }
    else {
      FUN_0084d6f0(param_1[0x15] + 0x5c);
    }
  }
  DAT_032bd45c = param_1[0x15];
  _setlocale(0,(char *)param_1[0x14]);
  _free((void *)param_1[0x14]);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0084d2b0();
  _free((void *)param_1[0x11]);
  if ((uint)param_1[0x10] < 8) {
    param_1[0x10] = 7;
    param_1[0xf] = 0;
    *(undefined2 *)(param_1 + 0xb) = 0;
    _free((void *)param_1[8]);
    if ((uint)param_1[7] < 8) {
      param_1[7] = 7;
      param_1[6] = 0;
      *(undefined2 *)(param_1 + 2) = 0;
      ExceptionList = local_c;
      return;
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[2]);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[0xb]);
}



undefined4 __thiscall
FUN_00847c00(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  void **ppvVar2;
  void **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc59f0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_10 = param_1_00;
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  }
  uVar1 = FUN_00861fa0(&local_14,param_1);
  local_4 = 0;
  FUN_00847980(uVar1,param_2,param_3);
  local_4 = CONCAT31(local_4._1_3_,2);
  ppvVar2 = (void **)FUN_00850350();
  if (local_14 != ppvVar2) {
    *(short *)(local_14 + 2) = *(short *)(local_14 + 2) + -1;
    if (*(short *)(local_14 + 2) == 0) {
      if (*(char *)((int)local_14 + 10) != '\0') {
        _free(*local_14);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_14);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return param_1_00;
}



char * FUN_00847cd0(int param_1)

{
  undefined4 *puVar1;
  char *pcVar2;
  void **ppvVar3;
  void **local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5ed8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  }
  puVar1 = (undefined4 *)FUN_00432413(&local_10,DAT_032bd4d4);
  local_4 = 0;
  pcVar2 = _setlocale(param_1,*(char **)*puVar1);
  local_4 = 0xffffffff;
  ppvVar3 = (void **)FUN_00850350();
  if (local_10 != ppvVar3) {
    *(short *)(local_10 + 2) = *(short *)(local_10 + 2) + -1;
    if (*(short *)(local_10 + 2) == 0) {
      if (*(char *)((int)local_10 + 10) != '\0') {
        _free(*local_10);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_10);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return pcVar2;
}



void __thiscall
FUN_00847d90(undefined4 param_1_00,void **param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  void **ppvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5a18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)FUN_00847c00(param_2,param_1,1);
  local_4 = 0;
  FUN_0083e8f0(param_6,param_1,5);
  FUN_00843020(param_5,param_1,4);
  FUN_0083e8f0(param_4,param_1,3);
  FUN_00820e3f(param_3,param_1,2);
  uVar2 = FUN_008854f0(*(undefined4 *)*puVar1,param_4,param_5,param_6,param_2);
  FUN_0083fe90(param_1_00,uVar2);
  local_4 = 0xffffffff;
  ppvVar3 = (void **)FUN_00850350();
  if (param_1 != ppvVar3) {
    *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + -1;
    if (*(short *)(param_1 + 2) == 0) {
      if (*(char *)((int)param_1 + 10) != '\0') {
        _free(*param_1);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_1);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00847eb0(undefined4 param_1,LCID param_2)

{
  WCHAR WVar1;
  int iVar2;
  WCHAR *pWVar3;
  int unaff_ESI;
  undefined4 local_38;
  WCHAR local_30;
  short asStack_2e [15];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5a59;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  ExceptionList = &local_c;
  *(undefined4 *)(unaff_ESI + 0x18) = 7;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined2 *)(unaff_ESI + 4) = 0;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  local_4 = 0;
  local_38 = 1;
  iVar2 = GetLocaleInfoW(param_2,0x1004,&local_30,0x10);
  if ((0 < iVar2) && ((local_30 != L'0' || (asStack_2e[0] != 0)))) {
    pWVar3 = &local_30;
    do {
      WVar1 = *pWVar3;
      pWVar3 = pWVar3 + 1;
    } while (WVar1 != L'\0');
    FID_conflict_assign(&local_30,(int)pWVar3 - (int)asStack_2e >> 1);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00847f70(int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = *(uint *)(param_1 + 4);
  if (uVar2 != 0) {
    uVar3 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar2 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1 + 8) + uVar3 * 4);
      if (iVar1 != 0) {
        FUN_00847a80();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar2 = *(uint *)(param_1 + 4);
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  return;
}



undefined4 * __thiscall FUN_00847fe0(undefined4 *param_1_00,undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5a9b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = *param_1;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_1 + 1,0,0xffffffff);
  param_1_00[8] = 0;
  param_1_00[10] = param_1[10];
  param_1_00[0xb] = param_1[0xb];
  param_1_00[0x12] = 7;
  param_1_00[0x11] = 0;
  *(undefined2 *)(param_1_00 + 0xd) = 0;
  local_4 = 0;
  FID_conflict_assign(param_1 + 0xc,0,0xffffffff);
  param_1_00[0x13] = 0;
  param_1_00[0x15] = param_1[0x15];
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_00848090(undefined4 param_1,int param_2)

{
  int iVar1;
  
  if ((param_2 != 0) && (param_2 != 1)) {
    iVar1 = FUN_00847680(param_2);
    if (iVar1 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      return param_1;
    }
    FUN_004325a0(iVar1 + 4);
    return param_1;
  }
  FUN_004325b6(PTR_DAT_03236318);
  return param_1;
}



int __thiscall FUN_008480f0(int param_1_00,int param_1)

{
  ushort uVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  ushort **ppuVar5;
  uint uVar6;
  char *pcVar7;
  int iVar8;
  ushort **ppuVar9;
  ushort **ppuVar10;
  uint uVar11;
  undefined4 *puVar12;
  undefined4 uVar13;
  char *pcVar14;
  undefined4 local_1c;
  ushort **local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5ad9;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar12 = (undefined4 *)(param_1 + 4);
  *(undefined2 *)puVar12 = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  uVar6 = *(uint *)(param_1_00 + 0x14);
  uVar11 = *(uint *)(param_1 + 0x14);
  local_4 = 0;
  if (((uVar11 <= uVar6) && (*(uint *)(param_1 + 0x18) != uVar6)) &&
     (cVar3 = FUN_004182d2(uVar6,1), cVar3 != '\0')) {
    *(uint *)(param_1 + 0x14) = uVar11;
    if (7 < *(uint *)(param_1 + 0x18)) {
      puVar12 = (undefined4 *)*puVar12;
    }
    *(undefined2 *)((int)puVar12 + uVar11 * 2) = 0;
  }
  uVar6 = *(uint *)(param_1_00 + 0x18);
  uVar11 = 0;
  local_1c = local_1c & 0xffffff00;
  ppuVar5 = (ushort **)(param_1_00 + 4);
  local_14 = ppuVar5;
  if (7 < uVar6) {
    local_14 = (ushort **)*ppuVar5;
  }
  if (local_14 != (ushort **)0x0) {
    ppuVar10 = ppuVar5;
    if (7 < uVar6) {
      ppuVar10 = (ushort **)*ppuVar5;
    }
    if (ppuVar10 <= local_14) {
      if (7 < uVar6) {
        ppuVar5 = (ushort **)*ppuVar5;
      }
      if (local_14 <= (ushort **)((int)ppuVar5 + *(int *)(param_1_00 + 0x14) * 2))
      goto LAB_008481c3;
    }
  }
  FUN_00a3fb10(uVar4);
LAB_008481c3:
  do {
    uVar6 = *(uint *)(param_1_00 + 0x18);
    if (uVar6 < 8) {
      iVar8 = param_1_00 + 4;
    }
    else {
      iVar8 = *(int *)(param_1_00 + 4);
    }
    iVar2 = *(int *)(param_1_00 + 0x14) * 2;
    ppuVar5 = (ushort **)(iVar8 + iVar2);
    if (ppuVar5 == (ushort **)0x0) {
LAB_00848203:
      FUN_00a3fb10(uVar4);
    }
    else {
      if (uVar6 < 8) {
        ppuVar10 = (ushort **)(param_1_00 + 4);
      }
      else {
        ppuVar10 = *(ushort ***)(param_1_00 + 4);
      }
      if (ppuVar5 < ppuVar10) goto LAB_00848203;
      if (uVar6 < 8) {
        iVar8 = param_1_00 + 4;
      }
      else {
        iVar8 = *(int *)(param_1_00 + 4);
      }
      if ((ushort **)(iVar8 + iVar2) < ppuVar5) goto LAB_00848203;
    }
    if ((param_1_00 != -4) && (param_1_00 == 0)) {
      FUN_00a3fb10(uVar4);
    }
    if (local_14 == ppuVar5) {
LAB_008482de:
      if (uVar11 != 0) {
        switch((byte)local_1c) {
        case 0x48:
          if ((uVar11 == 0) || (2 < uVar11)) {
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              pcVar14 = "wrong number of \'H\'s";
              pcVar7 = "Assert failure";
              uVar13 = 0x50b;
              goto LAB_008485b9;
            }
          }
          else {
            FUN_0084b060(&DAT_00d26c20);
          }
          break;
        default:
          if (PTR_FUN_03235c4c != (undefined *)0x0) {
            pcVar14 = "unreachable";
            pcVar7 = "Assert failure";
            uVar13 = 0x550;
LAB_008485b9:
            FUN_008402e0("..\\..\\src\\common\\intl.cpp",uVar13,
                         "`anonymous-namespace\'::TranslateFromUnicodeFormat",pcVar7,pcVar14);
          }
          break;
        case 0x4d:
          switch(uVar11) {
          case 1:
          case 2:
            FUN_0084b060(&DAT_00d26c5c);
            break;
          case 3:
            FUN_0084b060(&DAT_00d26c58);
            break;
          case 4:
            FUN_0084b060(&DAT_00d26c54);
            break;
          default:
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              pcVar14 = "too many \'M\'s";
              pcVar7 = "Assert failure";
              uVar13 = 0x4ed;
              goto LAB_008485b9;
            }
          }
          break;
        case 100:
          switch(uVar11) {
          case 1:
          case 2:
            FUN_0084b060(&DAT_00d26cac);
            break;
          case 3:
            FUN_0084b060(&DAT_00d26ca8);
            break;
          case 4:
            FUN_0084b060(&DAT_00d26ca4);
            break;
          default:
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              pcVar14 = "too many \'d\'s";
              pcVar7 = "Assert failure";
              uVar13 = 0x4aa;
              goto LAB_008485b9;
            }
          }
          break;
        case 0x67:
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (2 < uVar11)) {
            pcVar14 = "too many \'g\'s";
            pcVar7 = "lastCount <= 2";
            uVar13 = 0x539;
            goto LAB_008485b9;
          }
          break;
        case 0x68:
          if ((uVar11 == 0) || (2 < uVar11)) {
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              pcVar14 = "wrong number of \'h\'s";
              pcVar7 = "Assert failure";
              uVar13 = 0x518;
              goto LAB_008485b9;
            }
          }
          else {
            FUN_0084b060(&DAT_00d26c04);
          }
          break;
        case 0x6d:
          if ((uVar11 == 0) || (2 < uVar11)) {
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              pcVar14 = "wrong number of \'m\'s";
              pcVar7 = "Assert failure";
              uVar13 = 0x525;
              goto LAB_008485b9;
            }
          }
          else {
            FUN_0084b060(&DAT_00d26be8);
          }
          break;
        case 0x73:
          if ((uVar11 == 0) || (2 < uVar11)) {
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              pcVar14 = "wrong number of \'s\'s";
              pcVar7 = "Assert failure";
              uVar13 = 0x532;
              goto LAB_008485b9;
            }
          }
          else {
            FUN_0084b060(&DAT_00d26bcc);
          }
          break;
        case 0x74:
          if ((uVar11 == 0) || (2 < uVar11)) {
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              pcVar14 = "too many \'t\'s";
              pcVar7 = "Assert failure";
              uVar13 = 0x54b;
              goto LAB_008485b9;
            }
          }
          else {
            FUN_0084b060(&DAT_00fad99c);
          }
          break;
        case 0x79:
          if (uVar11 == 0) {
LAB_00848415:
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              pcVar14 = "wrong number of \'y\'s";
              pcVar7 = "Assert failure";
              uVar13 = 0x4fe;
              goto LAB_008485b9;
            }
          }
          else if (uVar11 < 3) {
            FUN_0084b060(&DAT_00d26c3c);
          }
          else {
            if (uVar11 != 4) goto LAB_00848415;
            FUN_0084b060(&DAT_00d26c40);
          }
        }
        local_1c = local_1c & 0xffffff00;
        uVar11 = 0;
      }
      uVar6 = *(uint *)(param_1_00 + 0x18);
      if (uVar6 < 8) {
        iVar8 = param_1_00 + 4;
      }
      else {
        iVar8 = *(int *)(param_1_00 + 4);
      }
      iVar2 = *(int *)(param_1_00 + 0x14) * 2;
      ppuVar5 = (ushort **)(iVar8 + iVar2);
      if (ppuVar5 == (ushort **)0x0) {
LAB_00848615:
        FUN_00a3fb10();
      }
      else {
        ppuVar10 = (ushort **)(param_1_00 + 4);
        ppuVar9 = ppuVar10;
        if (7 < uVar6) {
          ppuVar9 = (ushort **)*ppuVar10;
        }
        if (ppuVar5 < ppuVar9) goto LAB_00848615;
        if (7 < uVar6) {
          ppuVar10 = (ushort **)*ppuVar10;
        }
        if ((ushort **)((int)ppuVar10 + iVar2) < ppuVar5) goto LAB_00848615;
      }
      if ((param_1_00 != -4) && (param_1_00 == 0)) {
        FUN_00a3fb10();
      }
      if (local_14 == ppuVar5) {
        ExceptionList = local_c;
        return param_1;
      }
      if (param_1_00 != -4) {
        if (param_1_00 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_1_00 + 0x18) < 8) {
          iVar8 = param_1_00 + 4;
        }
        else {
          iVar8 = *(int *)(param_1_00 + 4);
        }
        if ((ushort **)(iVar8 + *(int *)(param_1_00 + 0x14) * 2) <= local_14) {
          FUN_00a3fb10();
        }
      }
      if (*(ushort *)local_14 == 0x25) {
        FID_conflict_append(1,0x25);
      }
      if (param_1_00 != -4) {
        if (param_1_00 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_1_00 + 0x18) < 8) {
          iVar8 = param_1_00 + 4;
        }
        else {
          iVar8 = *(int *)(param_1_00 + 4);
        }
        if ((ushort **)(iVar8 + *(int *)(param_1_00 + 0x14) * 2) <= local_14) {
          FUN_00a3fb10();
        }
      }
      FID_conflict_append(1,*(ushort *)local_14);
    }
    else {
      if (param_1_00 != -4) {
        if (param_1_00 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_1_00 + 0x18) < 8) {
          iVar8 = param_1_00 + 4;
        }
        else {
          iVar8 = *(int *)(param_1_00 + 4);
        }
        if ((ushort **)(iVar8 + *(int *)(param_1_00 + 0x14) * 2) <= local_14) {
          FUN_00a3fb10();
        }
      }
      uVar1 = *(ushort *)local_14;
      if ((byte)local_1c < 0x80) {
        uVar6 = (uint)(char)(byte)local_1c;
      }
      else {
        uVar6 = FUN_00884ad0(local_1c);
      }
      if (uVar1 == uVar6) {
        uVar11 = uVar11 + 1;
      }
      else {
        if (param_1_00 != -4) {
          if (param_1_00 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(param_1_00 + 0x18) < 8) {
            iVar8 = param_1_00 + 4;
          }
          else {
            iVar8 = *(int *)(param_1_00 + 4);
          }
          if ((ushort **)(iVar8 + *(int *)(param_1_00 + 0x14) * 2) <= local_14) {
            FUN_00a3fb10();
          }
        }
        uVar1 = *(ushort *)local_14;
        if ((0x7f < uVar1) || (pcVar7 = _strchr("dghHmMsSyt",(uint)uVar1), pcVar7 == (char *)0x0))
        goto LAB_008482de;
        local_1c = CONCAT31(local_1c._1_3_,(char)uVar1);
        uVar11 = 1;
      }
    }
    if (param_1_00 != -4) {
      if (param_1_00 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar8 = param_1_00 + 4;
      }
      else {
        iVar8 = *(int *)(param_1_00 + 4);
      }
      if ((ushort **)(iVar8 + *(int *)(param_1_00 + 0x14) * 2) <= local_14) {
        FUN_00a3fb10();
      }
    }
    local_14 = (ushort **)((int)local_14 + 2);
  } while( true );
}



void __thiscall
FUN_00848780(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint param_8;
  void *param_9;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5b08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840990(&param_2,param_1,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  FUN_0083fe90(param_1_00,uVar2,uVar3);
  _free(param_9);
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00848820(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  FUN_00820e3f(param_2,param_1,1);
  uVar1 = FUN_008854f0(param_1);
  FUN_0083fe90(param_1_00,uVar1);
  return;
}



void __thiscall
FUN_00848860(undefined4 param_1_00,undefined4 param_1,int param_2,undefined4 param_3,char param_4)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7df8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840a00(&param_2,param_1,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20();
  FUN_0083fe90(param_1_00,uVar3,uVar4);
  iVar1 = param_2;
  if ((param_4 != '\0') && (param_2 != 0)) {
    _free(*(void **)(param_2 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



void FUN_00848920(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00847f70(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_0086a880();
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00848980(int param_1_00,undefined4 param_1,uint param_2)

{
  int iVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce226;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    pvVar2 = operator_new(0x58);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = FUN_00847fe0(param_1);
    }
    iVar1 = *(int *)(param_1_00 + 4);
    local_4 = 0xffffffff;
    if (iVar3 != 0) {
      FUN_0086a0a0(iVar3,iVar1 * 4 >> 2,param_2);
    }
    uVar5 = 1;
    if (1 < param_2) {
      iVar3 = iVar1 * 4;
      do {
        iVar3 = iVar3 + 4;
        pvVar2 = operator_new(0x58);
        local_4 = 1;
        if (pvVar2 == (void *)0x0) {
          uVar4 = 0;
        }
        else {
          uVar4 = FUN_00847fe0(param_1);
        }
        local_4 = 0xffffffff;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar5 + iVar1))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 *)(*(int *)(param_1_00 + 8) + iVar3) = uVar4;
        uVar5 = uVar5 + 1;
      } while (uVar5 < param_2);
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_00848ab0(undefined4 param_1)

{
  FUN_00847490();
  FUN_00848980(param_1,1);
  return;
}



void FUN_00848ad0(int param_1,undefined4 param_2,int param_3)

{
  undefined uVar1;
  uint uVar2;
  int iVar3;
  LCTYPE LCType;
  LCID Locale;
  undefined4 uVar4;
  WCHAR *lpLCData;
  undefined8 uVar5;
  undefined auStack_2e0 [3];
  char cStack_2dd;
  uint local_2dc;
  undefined auStack_2d8 [56];
  undefined auStack_2a0 [36];
  undefined local_27c [4];
  undefined4 local_278;
  undefined4 local_268;
  uint local_264;
  void *local_260;
  undefined local_258 [20];
  int local_244;
  undefined local_234 [20];
  int local_220;
  WCHAR local_210 [256];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5b7e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_2e0;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffd14;
  ExceptionList = &local_c;
  local_2dc = 0;
  Locale = 0x400;
  if ((DAT_032bd45c != 0) && (iVar3 = FUN_00847680(), iVar3 != 0)) {
    Locale = (LCID)(ushort)(*(short *)(iVar3 + 0x2c) << 10 | *(ushort *)(iVar3 + 0x28));
  }
  local_264 = 7;
  local_268 = 0;
  local_278 = (uint)local_278._2_2_ << 0x10;
  local_260 = (void *)0x0;
  local_4 = 0;
  local_210[0] = L'\0';
  switch(param_2) {
  case 0:
    iVar3 = GetLocaleInfoW(Locale,0xf,local_210,0x100);
    if (iVar3 != 0) {
      FUN_00432199();
    }
    break;
  case 1:
    iVar3 = GetLocaleInfoW(Locale,(uint)(param_3 == 2) * 8 + 0xe,local_210,0x100);
    if (iVar3 != 0) {
      FUN_00432199();
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_00848c69:
        cStack_2dd = '\x01';
      }
      else {
        FUN_0083fbe0();
        local_4 = CONCAT31(local_4._1_3_,1);
        local_2dc = 1;
        FUN_00847a30(auStack_2a0,auStack_2d8,0x3ff3ae147ae147ae);
        local_2dc = 3;
        iVar3 = FUN_00847940(local_27c,0);
        cStack_2dd = '\0';
        if (iVar3 != -1) goto LAB_00848c69;
      }
      if ((local_2dc & 2) != 0) {
        local_2dc = local_2dc & 0xfffffffd;
        FUN_0040159c();
      }
      local_4 = 0;
      if ((local_2dc & 1) != 0) {
        FUN_0081b5bc();
      }
      if (cStack_2dd == '\0') {
        uVar5 = 0xd26d2800d26ce8;
        uVar4 = 0x5b4;
        goto LAB_00848e1e;
      }
    }
    break;
  case 2:
  case 3:
  case 5:
    lpLCData = local_210;
    iVar3 = 0x100;
    LCType = FUN_008472b0(param_2);
    iVar3 = GetLocaleInfoW(Locale,LCType,lpLCData,iVar3);
    if (iVar3 != 0) {
      FUN_004325b6();
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_008480f0();
      FUN_0040159c();
      FUN_0040159c();
      goto LAB_00848e74;
    }
    break;
  case 4:
    FUN_00848ad0(local_258,2,3,uVar2);
    local_4._0_1_ = 3;
    if (local_244 == 0) {
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_00848ad0(local_234,5);
      local_4._0_1_ = 4;
      uVar1 = (undefined)local_4;
      local_4._0_1_ = 4;
      if (local_220 == 0) {
        FUN_0040159c();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_0040159c();
      }
      else {
        local_4._0_1_ = uVar1;
        FID_conflict_append(local_258,0,0xffffffff);
        FID_conflict_append(1,0x20);
        FID_conflict_append(local_234,0,0xffffffff);
        FUN_0040159c();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_0040159c();
      }
    }
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      uVar5 = 0xd26cbc00fad940;
      uVar4 = 0x5d7;
LAB_00848e1e:
      FUN_008402e0("..\\..\\src\\common\\intl.cpp",uVar4,"wxLocale::GetInfo",uVar5);
    }
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(local_27c,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(local_260);
  if (7 < local_264) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
LAB_00848e74:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00848ec0(void)

{
  int iVar1;
  
  iVar1 = DAT_032bd458;
  if (DAT_032bd458 != 0) {
    FUN_00848920();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __thiscall FUN_00848ef0(int param_1_00,int param_1)

{
  WCHAR WVar1;
  void *pvVar2;
  char cVar3;
  int iVar4;
  WCHAR *pWVar5;
  uint Locale;
  undefined auStack_2f8 [8];
  undefined4 uStack_2f0;
  undefined *puStack_2ec;
  char *pcStack_2e8;
  undefined *local_2c0;
  undefined local_2bc [104];
  uint local_254;
  undefined4 local_244;
  uint local_240;
  void *local_23c;
  uint local_230;
  int local_220;
  uint local_21c;
  void *local_218;
  WCHAR local_210 [256];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5bdc;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_2c0;
  ExceptionList = &local_c;
  local_2c0 = (undefined *)0x0;
  local_240 = 7;
  local_244 = 0;
  local_254 = local_254 & 0xffff0000;
  local_23c = (void *)0x0;
  Locale = (uint)(ushort)(*(short *)(param_1_00 + 0x2c) << 10 | *(ushort *)(param_1_00 + 0x28));
  local_4 = 0;
  local_210[0] = L'\0';
  pcStack_2e8 = (char *)0x848f98;
  iVar4 = GetLocaleInfoW(Locale,0x1001,local_210,0x100);
  if (iVar4 == 0) {
    local_2c0 = auStack_2f8;
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(6);
    if (cVar3 != '\0') {
      FUN_0081c0f1();
      pcStack_2e8 = (char *)0x6;
      local_4._0_1_ = 1;
      puStack_2ec = (undefined *)0x848ffa;
      FUN_008423d0();
      local_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      pcStack_2e8 = "..\\..\\src\\common\\intl.cpp";
      puStack_2ec = local_2bc;
      uStack_2f0 = 0x849034;
      FUN_00847d90();
      local_4._0_1_ = 1;
      FUN_00842440();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0081b5bc();
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign();
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_23c);
    pvVar2 = ExceptionList;
    ExceptionList = local_c;
  }
  else {
    pWVar5 = local_210;
    do {
      WVar1 = *pWVar5;
      pWVar5 = pWVar5 + 1;
    } while (WVar1 != L'\0');
    FUN_00473ccc();
    pcStack_2e8 = (char *)0x8490e9;
    iVar4 = GetLocaleInfoW(Locale,0x1002,local_210,0x100);
    if (0 < iVar4) {
      FID_conflict_append();
      pWVar5 = local_210;
      do {
        WVar1 = *pWVar5;
        pWVar5 = pWVar5 + 1;
      } while (WVar1 != L'\0');
      FUN_00473ccc();
    }
    FUN_00847eb0();
    local_4 = CONCAT31(local_4._1_3_,3);
    if (local_220 != 0) {
      FID_conflict_append();
      FID_conflict_append();
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign();
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_218);
    if (7 < local_21c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_21c = 7;
    local_220 = 0;
    local_230 = local_230 & 0xffff0000;
    _free(local_23c);
    pvVar2 = ExceptionList;
    ExceptionList = local_c;
  }
  local_c = ExceptionList;
  if (7 < local_240) {
    ExceptionList = pvVar2;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00849230(int param_1_00,int param_1,char *param_2,char *param_3)

{
  char cVar1;
  char *pcVar2;
  int iVar3;
  char **ppcVar4;
  char acStack_12c [4];
  undefined2 local_128;
  undefined4 uStack_120;
  char *pcStack_11c;
  undefined4 local_118;
  char *local_114;
  char *local_110;
  char *local_f4;
  char *local_f0;
  char *local_ec;
  undefined local_e8 [8];
  undefined local_e0 [20];
  undefined local_cc [152];
  char local_34 [4];
  undefined4 local_30;
  uint local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5c4f;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_f4;
  ExceptionList = &local_c;
  local_f0 = param_3;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(param_1_00 + 0x58) != '\0')) {
    local_110 = "!m_initialized";
    local_114 = "wxLocale::DoInit";
    local_118 = 0x10e;
    pcStack_11c = "..\\..\\src\\common\\intl.cpp";
    uStack_120 = 0x8492b3;
    FUN_00840480();
  }
  *(undefined *)(param_1_00 + 0x58) = 1;
  if (param_1_00 + 4 != param_1) {
    local_110 = (char *)0x0;
    local_114 = (char *)param_1;
    local_118 = 0x8492ca;
    FID_conflict_assign();
  }
  local_f4 = (char *)(param_1_00 + 0x28);
  if (local_f4 != param_2) {
    local_110 = (char *)0x0;
    local_114 = param_2;
    local_118 = 0x8492e0;
    FID_conflict_assign();
  }
  local_110 = (char *)0x0;
  local_30 = (uint)local_30._2_2_ << 0x10;
  local_114 = local_f0;
  *(undefined4 *)(param_1_00 + 0x4c) = 1;
  local_1c = 7;
  local_20 = 0;
  local_118 = 0x849317;
  FID_conflict_assign();
  local_18 = (void *)0x0;
  local_4 = 0;
  if (local_20 == 0) {
    if (local_34 != param_2) {
      local_110 = (char *)0x0;
      local_114 = param_2;
      local_118 = 0x849344;
      FID_conflict_assign();
      if (local_20 != 0) goto LAB_008493a7;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      local_110 = "!szLocale.empty()";
      local_114 = "wxLocale::DoInit";
      local_118 = 0x11d;
      pcStack_11c = "..\\..\\src\\common\\intl.cpp";
      uStack_120 = 0x849373;
      FUN_00840480();
    }
    local_110 = (char *)0x849383;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      local_110 = &UNK_0084939d;
      FUN_00a3f6a1();
    }
  }
  else {
LAB_008493a7:
    local_110 = (char *)0x0;
    local_114 = (char *)0x8493b5;
    pcVar2 = (char *)FUN_00847cd0();
    if (pcVar2 == (char *)0x0) {
      *(undefined4 *)(param_1_00 + 0x50) = 0;
    }
    else {
      local_110 = (char *)0x8493c2;
      pcVar2 = __strdup(pcVar2);
      *(char **)(param_1_00 + 0x50) = pcVar2;
    }
    if (*(int *)(param_1_00 + 0x50) == 0) {
      local_f0 = acStack_12c;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        local_110 = (char *)0x84940b;
        FUN_004325b6();
        local_4._0_1_ = 1;
        local_110 = (char *)0x849421;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,2);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          local_110 = (char *)0x84944f;
          FUN_0084d360();
        }
        else {
          local_110 = local_cc;
          local_114 = (char *)0x849443;
          FUN_0084f210();
        }
        local_110 = (char *)0x84945c;
        FUN_008433c0();
        local_f0 = acStack_12c;
        local_114 = (char *)0x7;
        local_118 = 0;
        local_4._0_1_ = 3;
        local_128 = 0;
        FID_conflict_assign(local_34,0,0xffffffff);
        local_110 = (char *)0x0;
        local_4._0_1_ = 4;
        FUN_008423d0(1,"..\\..\\src\\common\\intl.cpp",0x128,"wxLocale::DoInit",&DAT_00d25fa0);
        local_4._0_1_ = 6;
        FUN_00848780(local_e0);
        local_4._0_1_ = 3;
        FUN_00842440();
        local_4._0_1_ = 2;
        FUN_0081b5bc();
        FUN_0040159c();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_0040159c();
      }
    }
    if ((*(int *)(param_1_00 + 0x3c) == 0) && (local_20 != 0)) {
      local_110 = local_e8;
      local_114 = (char *)0x849542;
      ppcVar4 = (char **)FUN_0081b542();
      local_f0 = *ppcVar4;
      local_ec = ppcVar4[1];
      local_110 = (char *)0x84955d;
      FUN_0081b35f();
      local_110 = (char *)0x849567;
      _towlower((wint_t)local_f4);
      local_110 = (char *)0x1;
      local_114 = (char *)0x849577;
      FID_conflict_append();
      if (1 < local_20) {
        local_110 = local_e8;
        local_114 = (char *)0x849594;
        ppcVar4 = (char **)FUN_0081b542();
        local_f0 = *ppcVar4;
        local_ec = ppcVar4[1];
        local_110 = (char *)0x8495af;
        FUN_0081b35f();
        local_110 = (char *)0x8495b9;
        _towlower((wint_t)local_f4);
        local_110 = (char *)0x1;
        local_114 = (char *)0x8495c9;
        FID_conflict_append();
      }
    }
    local_110 = (char *)0x8495d6;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      local_110 = &UNK_008495f0;
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00849620(undefined *param_1_00,int param_1,byte param_2)

{
  char cVar1;
  int iVar2;
  undefined *puVar3;
  undefined4 uStack_194;
  undefined4 uStack_190;
  char *pcStack_18c;
  undefined4 uStack_188;
  char *pcStack_184;
  char *pcStack_180;
  undefined *puStack_17c;
  char *pcStack_178;
  undefined auStack_15c [2];
  undefined local_15a;
  char local_159;
  undefined **local_158;
  int local_154;
  undefined4 *local_150;
  undefined local_14c [20];
  undefined local_138 [24];
  uint local_120;
  void *local_11c;
  undefined auStack_7c [4];
  undefined4 local_78;
  int local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5d27;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_15c;
  ExceptionList = &local_c;
  local_15a = 1;
  local_154 = param_1;
  local_150 = (undefined4 *)param_1_00;
  if (param_1 == 0) {
    local_154 = FUN_00847560();
  }
  if (local_154 == 1) goto LAB_00849bee;
  pcStack_178 = (undefined *)0x849691;
  iVar2 = FUN_00847680();
  if (iVar2 == 0) {
    local_150 = &uStack_194;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      pcStack_178 = (char *)0x8496cd;
      FUN_0081c0f1();
      pcStack_178 = "wxLocale::Init";
      puStack_17c = (undefined *)0x180;
      pcStack_180 = "..\\..\\src\\common\\intl.cpp";
      pcStack_184 = (char *)0x1;
      local_4 = 0;
      uStack_188 = 0x8496f6;
      FUN_008423d0();
      pcStack_178 = local_14c;
      local_4._0_1_ = 1;
      puStack_17c = (undefined *)0x84970b;
      FUN_00848820();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    goto LAB_00849bee;
  }
  puStack_17c = (undefined *)(iVar2 + 0x30);
  pcStack_178 = (char *)0x0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  pcStack_180 = (char *)0x849769;
  FID_conflict_assign();
  local_18 = (void *)0x0;
  puStack_17c = (undefined *)(iVar2 + 4);
  pcStack_178 = (char *)0x0;
  local_54 = local_54 & 0xffff0000;
  local_4 = 2;
  local_40 = 7;
  local_44 = 0;
  pcStack_180 = (undefined *)0x8497a6;
  FID_conflict_assign();
  local_3c = (void *)0x0;
  local_64 = 7;
  local_68 = 0;
  local_78 = (uint)local_78._2_2_ << 0x10;
  local_60 = (void *)0x0;
  local_4._0_1_ = 4;
  if (param_1 == 0) {
    pcStack_178 = (char *)0x849928;
    FUN_004325b6();
    pcStack_178 = (char *)0x0;
    local_4._0_1_ = 10;
    puStack_17c = (undefined *)0x84993e;
    iVar2 = FUN_00847cd0();
    local_4._0_1_ = 4;
    FUN_0040159c();
LAB_00849957:
    if (iVar2 == 0) {
      iVar2 = FUN_00847eb0();
      local_159 = *(int *)(iVar2 + 0x14) == 0;
      FUN_0040159c();
      if (local_159 == '\0') goto LAB_0084998c;
    }
  }
  else if (*(int *)(iVar2 + 0x28) == 0) {
    local_158 = (undefined **)&uStack_194;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(2);
    if (cVar1 != '\0') {
      pcStack_178 = (char *)0x84981d;
      FUN_0081c0f1();
      local_158 = &puStack_17c;
      pcStack_180 = (char *)&puStack_17c;
      pcStack_184 = (char *)0x849833;
      FUN_00432231();
      pcStack_180 = &DAT_00d25fa0;
      pcStack_184 = "wxLocale::Init";
      uStack_188 = 0x1da;
      pcStack_18c = "..\\..\\src\\common\\intl.cpp";
      uStack_190 = 2;
      local_4._0_1_ = 6;
      uStack_194 = 0x84985d;
      FUN_008423d0();
      pcStack_180 = local_14c;
      local_4._0_1_ = 8;
      pcStack_184 = (char *)0x849879;
      FUN_00848860();
      local_4._0_1_ = 5;
      FUN_00842440();
      local_4._0_1_ = 4;
      FUN_0081b5bc();
    }
  }
  else {
    pcStack_178 = (char *)0x8498bb;
    SetThreadLocale((uint)(ushort)(*(short *)(iVar2 + 0x2c) << 10 | *(ushort *)(iVar2 + 0x28)));
    pcStack_178 = (char *)0x8498c7;
    puVar3 = (undefined *)FUN_00848ef0();
    local_4._0_1_ = 9;
    if (auStack_7c != puVar3) {
      pcStack_178 = (char *)0x0;
      pcStack_180 = (undefined *)0x8498e3;
      puStack_17c = puVar3;
      FID_conflict_assign();
    }
    local_4._0_1_ = 4;
    FUN_0040159c();
    if (local_68 != 0) {
      pcStack_178 = (char *)0x0;
      puStack_17c = (undefined *)0x84990f;
      iVar2 = FUN_00847cd0();
      goto LAB_00849957;
    }
LAB_0084998c:
    local_158 = (undefined **)&uStack_194;
    local_15a = 0;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(2);
    if (cVar1 != '\0') {
      pcStack_178 = (char *)0x8499c5;
      FUN_004325b6();
      local_4._0_1_ = 0xb;
      pcStack_178 = (char *)0x8499db;
      FUN_0043c211();
      pcStack_178 = local_138;
      local_4._0_1_ = 0xc;
      puStack_17c = (undefined *)0x8499f2;
      FUN_00820bf9();
      pcStack_178 = (char *)0x8499ff;
      FUN_008433c0();
      local_158 = &puStack_17c;
      pcStack_180 = (char *)&puStack_17c;
      pcStack_184 = (char *)0x849a15;
      FUN_00432231();
      pcStack_180 = &DAT_00d25fa0;
      pcStack_184 = "wxLocale::Init";
      uStack_188 = 0x221;
      pcStack_18c = "..\\..\\src\\common\\intl.cpp";
      uStack_190 = 2;
      local_4._0_1_ = 0xe;
      uStack_194 = 0x849a3f;
      FUN_008423d0();
      pcStack_180 = local_14c;
      local_4._0_1_ = 0x10;
      pcStack_184 = (char *)0x849a5b;
      FUN_00848860();
      local_4._0_1_ = 0xd;
      FUN_00842440();
      local_4._0_1_ = 0xc;
      FUN_0081b5bc();
      FUN_0040159c();
      local_4._0_1_ = 4;
      FUN_0040159c();
    }
  }
  pcStack_178 = (char *)0x849aa4;
  FUN_0043c211();
  puVar3 = (undefined *)local_150;
  pcStack_178 = local_58;
  puStack_17c = local_34;
  local_4._0_1_ = 0x11;
  pcStack_180 = (char *)0x849acc;
  cVar1 = FUN_00849230();
  local_159 = cVar1 == '\0';
  local_4 = CONCAT31(local_4._1_3_,4);
  pcStack_178 = (char *)0x849ae5;
  _free(local_11c);
  if (7 < local_120) {
                    // WARNING: Subroutine does not return
    pcStack_178 = &UNK_00849afd;
    FUN_00a3f6a1();
  }
  if (local_159 != '\0') {
    local_15a = 0;
  }
  if (*(int *)(puVar3 + 0x50) != 0) {
    *(int *)(puVar3 + 0x4c) = local_154;
  }
  iVar2 = FUN_0084a340();
  if (iVar2 != 0) {
    pcStack_178 = (char *)0x849b29;
    FUN_0084c4b0();
    if ((param_2 & 1) != 0) {
      FUN_0084fb80();
    }
  }
  pcStack_178 = (char *)0x849b47;
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    pcStack_178 = &UNK_00849b60;
    FUN_00a3f6a1();
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  pcStack_178 = (char *)0x849b8d;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    pcStack_178 = &UNK_00849ba6;
    FUN_00a3f6a1();
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  pcStack_178 = (undefined *)0x849bce;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    pcStack_178 = &UNK_00849be7;
    FUN_00a3f6a1();
  }
LAB_00849bee:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



bool __fastcall FUN_00849c20(int **param_1)

{
  byte bVar1;
  int *piVar2;
  int iVar3;
  int *piVar4;
  uint uVar5;
  int *piVar6;
  int *piVar7;
  int *piVar8;
  
  piVar7 = (int *)0x0;
  iVar3 = _isspace((uint)*(byte *)*param_1);
  while (iVar3 != 0) {
    *param_1 = (int *)((int)*param_1 + 1);
    iVar3 = _isspace((uint)*(byte *)*param_1);
  }
  if (*(byte *)*param_1 == 0) {
    param_1[1] = (int *)0x1;
    return true;
  }
  iVar3 = _isdigit((uint)*(byte *)*param_1);
  if (iVar3 != 0) {
    bVar1 = *(byte *)*param_1;
    piVar4 = (int *)((int)*param_1 + 1);
    *param_1 = piVar4;
    piVar7 = (int *)((char)bVar1 + -0x30);
    iVar3 = _isdigit((uint)*(byte *)piVar4);
    while (iVar3 != 0) {
      piVar4 = (int *)((int)*param_1 + 1);
      piVar7 = (int *)((char)*(byte *)*param_1 + -0x30 + (int)piVar7 * 10);
      *param_1 = piVar4;
      iVar3 = _isdigit((uint)*(byte *)piVar4);
    }
    param_1[2] = piVar7;
    param_1[1] = (int *)0x2;
    return true;
  }
  iVar3 = _isalpha((uint)*(byte *)*param_1);
  if (iVar3 == 0) {
    piVar4 = *param_1;
    bVar1 = *(byte *)piVar4;
    if (bVar1 == 0x3d) {
      *param_1 = (int *)((int)piVar4 + 1);
      if (*(byte *)(int *)((int)piVar4 + 1) != 0x3d) {
        param_1[1] = (int *)0x7;
        return true;
      }
      *param_1 = (int *)((int)piVar4 + 2);
      param_1[1] = (int *)0x6;
      return true;
    }
    if (bVar1 == 0x3e) {
      *param_1 = (int *)((int)piVar4 + 1);
      if (*(byte *)(int *)((int)piVar4 + 1) != 0x3d) {
        param_1[1] = (int *)0x8;
        return true;
      }
      *param_1 = (int *)((int)piVar4 + 2);
      param_1[1] = (int *)0x9;
      return true;
    }
    if (bVar1 == 0x3c) {
      *param_1 = (int *)((int)piVar4 + 1);
      if (*(byte *)(int *)((int)piVar4 + 1) != 0x3d) {
        param_1[1] = (int *)0xa;
        return true;
      }
      *param_1 = (int *)((int)piVar4 + 2);
      param_1[1] = (int *)&DAT_0000000b;
      return true;
    }
    if (bVar1 == 0x25) {
      *param_1 = (int *)((int)piVar4 + 1);
      param_1[1] = (int *)0xc;
      return true;
    }
    if ((bVar1 == 0x21) && (*(byte *)((int)piVar4 + 1) == 0x3d)) {
      *param_1 = (int *)((int)piVar4 + 2);
      param_1[1] = (int *)0xd;
      return true;
    }
    if ((bVar1 == 0x26) && (*(byte *)((int)piVar4 + 1) == 0x26)) {
      *param_1 = (int *)((int)piVar4 + 2);
      param_1[1] = (int *)0xe;
      return true;
    }
    if ((bVar1 == 0x7c) && (*(byte *)((int)piVar4 + 1) == 0x7c)) {
      *param_1 = (int *)((int)piVar4 + 2);
      param_1[1] = (int *)&DAT_0000000f;
      return true;
    }
    if (bVar1 == 0x3f) {
      *param_1 = (int *)((int)piVar4 + 1);
      param_1[1] = (int *)0x10;
      return true;
    }
    if (bVar1 == 0x3a) {
      *param_1 = (int *)((int)piVar4 + 1);
      param_1[1] = (int *)0x11;
      return true;
    }
    if (bVar1 == 0x3b) {
      *param_1 = (int *)((int)piVar4 + 1);
      param_1[1] = (int *)0x12;
      return true;
    }
    if (bVar1 == 0x28) {
      *param_1 = (int *)((int)piVar4 + 1);
      param_1[1] = (int *)0x13;
      return true;
    }
    if (bVar1 == 0x29) {
      piVar7 = (int *)0x14;
      *param_1 = (int *)((int)piVar4 + 1);
    }
  }
  else {
    piVar4 = *param_1;
    *param_1 = (int *)((int)piVar4 + 1);
    iVar3 = _isalnum((uint)*(byte *)(int *)((int)piVar4 + 1));
    while (iVar3 != 0) {
      *param_1 = (int *)((int)*param_1 + 1);
      iVar3 = _isalnum((uint)*(byte *)*param_1);
    }
    iVar3 = (int)*param_1 - (int)piVar4;
    if (iVar3 == 1) {
      if (*(byte *)piVar4 == 0x6e) {
        param_1[1] = (int *)0x3;
        return true;
      }
    }
    else if (iVar3 == 6) {
      uVar5 = 6;
      piVar2 = (int *)"plural";
      do {
        piVar8 = piVar4;
        piVar6 = piVar2;
        if (*piVar8 != *piVar6) goto LAB_00849fab;
        uVar5 = uVar5 - 4;
        piVar2 = piVar6 + 1;
        piVar4 = piVar8 + 1;
      } while (3 < uVar5);
      if ((uVar5 == 0) ||
         ((*(byte *)(piVar6 + 1) == *(byte *)(piVar8 + 1) &&
          ((uVar5 < 2 ||
           ((*(byte *)((int)piVar6 + 5) == *(byte *)((int)piVar8 + 5) &&
            ((uVar5 < 3 || (*(byte *)((int)piVar6 + 6) == *(byte *)((int)piVar8 + 6))))))))))) {
        param_1[1] = (int *)0x4;
        return true;
      }
    }
    else if (iVar3 == 8) {
      uVar5 = 8;
      piVar2 = (int *)"nplurals";
      do {
        piVar8 = piVar4;
        piVar6 = piVar2;
        if (*piVar8 != *piVar6) goto LAB_00849fab;
        uVar5 = uVar5 - 4;
        piVar2 = piVar6 + 1;
        piVar4 = piVar8 + 1;
      } while (3 < uVar5);
      if ((uVar5 == 0) ||
         ((*(byte *)(piVar6 + 1) == *(byte *)(piVar8 + 1) &&
          ((uVar5 < 2 ||
           ((*(byte *)((int)piVar6 + 5) == *(byte *)((int)piVar8 + 5) &&
            ((uVar5 < 3 || (*(byte *)((int)piVar6 + 6) == *(byte *)((int)piVar8 + 6))))))))))) {
        param_1[1] = (int *)0x5;
        return true;
      }
    }
  }
LAB_00849fab:
  param_1[1] = piVar7;
  return piVar7 != (int *)0x0;
}



uint __thiscall FUN_00849fc0(undefined4 *param_1_00,uint param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  
  switch(*param_1_00) {
  case 2:
    return param_1_00[1];
  case 3:
    return param_1;
  default:
    goto switchD_00849fd3_caseD_4;
  case 6:
    iVar2 = FUN_00849fc0(param_1);
    iVar1 = FUN_00849fc0(param_1);
    return (uint)(iVar1 == iVar2);
  case 8:
    iVar2 = FUN_00849fc0(param_1);
    iVar1 = FUN_00849fc0(param_1);
    return (uint)(iVar2 < iVar1);
  case 9:
    iVar2 = FUN_00849fc0(param_1);
    iVar1 = FUN_00849fc0(param_1);
    return (uint)(iVar2 <= iVar1);
  case 10:
    iVar2 = FUN_00849fc0(param_1);
    iVar1 = FUN_00849fc0(param_1);
    return (uint)(iVar1 < iVar2);
  case 0xb:
    iVar2 = FUN_00849fc0(param_1);
    iVar1 = FUN_00849fc0(param_1);
    return (uint)(iVar1 <= iVar2);
  case 0xc:
    iVar2 = FUN_00849fc0(param_1);
    if (iVar2 == 0) {
      return 0;
    }
    iVar1 = FUN_00849fc0(param_1);
    return iVar1 % iVar2;
  case 0xd:
    iVar2 = FUN_00849fc0(param_1);
    iVar1 = FUN_00849fc0(param_1);
    return (uint)(iVar1 != iVar2);
  case 0xe:
    iVar2 = FUN_00849fc0(param_1);
    if (iVar2 == 0) {
      return 0;
    }
    iVar2 = FUN_00849fc0(param_1);
    break;
  case 0xf:
    iVar2 = FUN_00849fc0(param_1);
    if (iVar2 != 0) {
      return 1;
    }
    iVar2 = FUN_00849fc0(param_1);
    break;
  case 0x10:
    iVar2 = FUN_00849fc0(param_1);
    if (iVar2 != 0) {
      uVar3 = FUN_00849fc0(param_1);
      return uVar3;
    }
    uVar3 = FUN_00849fc0(param_1);
    return uVar3;
  }
  if (iVar2 != 0) {
    return 1;
  }
switchD_00849fd3_caseD_4:
  return 0;
}



int __fastcall FUN_0084a1d0(int *param_1)

{
  int iVar1;
  
  if (*param_1 == 0) {
    return 0;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[3] != 1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/buffer.h",0x1dc,"wxMemoryBufferData::release",
                 "m_ref == 1","can\'t release shared buffer");
  }
  iVar1 = *param_1;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  return iVar1;
}



void ** __thiscall FUN_0084a230(void **param_1_00,void *param_1)

{
  void **ppvVar1;
  void *pvVar2;
  
  ppvVar1 = (void **)operator_new(0x10);
  if (ppvVar1 != (void **)0x0) {
    if (param_1 == (void *)0x0) {
      pvVar2 = (void *)0x0;
    }
    else {
      pvVar2 = _malloc((size_t)param_1);
    }
    *ppvVar1 = pvVar2;
    ppvVar1[1] = param_1;
    ppvVar1[2] = (void *)0x0;
    ppvVar1[3] = (void *)0x0;
    *param_1_00 = ppvVar1;
    ppvVar1[3] = (void *)((int)ppvVar1[3] + 1);
    return param_1_00;
  }
  *param_1_00 = (void *)0x0;
  iRam0000000c = iRam0000000c + 1;
  return param_1_00;
}



void __thiscall FUN_0084a290(int *param_1_00,uint param_1)

{
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    *(uint *)(*param_1_00 + 8) = param_1;
    return;
  }
  if (*(uint *)(*param_1_00 + 4) < param_1) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/buffer.h",0x21f,"wxMemoryBuffer::SetDataLen",
                 "len <= m_bufdata->m_size",0);
    *(uint *)(*param_1_00 + 8) = param_1;
    return;
  }
  *(uint *)(*param_1_00 + 8) = param_1;
  return;
}



void * __thiscall FUN_0084a2f0(int *param_1_00,void *param_1)

{
  void **ppvVar1;
  void *_Memory;
  void *pvVar2;
  
  ppvVar1 = (void **)*param_1_00;
  if (ppvVar1[1] < param_1) {
    _Memory = *ppvVar1;
    pvVar2 = _realloc(_Memory,(size_t)(void *)((int)param_1 + 0x400U));
    *ppvVar1 = pvVar2;
    if (pvVar2 == (void *)0x0) {
      _free(_Memory);
    }
    ppvVar1[1] = (void *)((int)param_1 + 0x400U);
    return *(void **)*param_1_00;
  }
  return *ppvVar1;
}



undefined4 FUN_0084a340(void)

{
  return DAT_032bd460;
}



undefined ** FUN_0084a350(void)

{
  return &PTR_u_wxTranslationsModule_03236144;
}



undefined4 * __thiscall FUN_0084a360(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxTranslationsLoader::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_0084a380(int *param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = *param_1_00;
  if (param_1 != iVar1) {
    if (iVar1 != 0) {
      _eh_vector_destructor_iterator_((void *)(iVar1 + 8),4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar1);
    }
    *param_1_00 = param_1;
  }
  return;
}



void __thiscall FUN_0084a3c0(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 8 + param_1 * 4);
  if (param_2 != iVar1) {
    if (iVar1 != 0) {
      _eh_vector_destructor_iterator_((void *)(iVar1 + 8),4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar1);
    }
    *(int *)(param_1_00 + 8 + param_1 * 4) = param_2;
  }
  return;
}



void __thiscall FUN_0084a400(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  
  *param_1_00 = param_1;
  iVar1 = param_1_00[1];
  if (param_2 != iVar1) {
    if (iVar1 != 0) {
      _eh_vector_destructor_iterator_((void *)(iVar1 + 8),4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar1);
    }
    param_1_00[1] = param_2;
  }
  return;
}



void __fastcall FUN_0084a440(int *param_1)

{
  void **ppvVar1;
  void **ppvVar2;
  
  ppvVar2 = (void **)*param_1;
  ppvVar1 = ppvVar2 + 3;
  *ppvVar1 = (void *)((int)*ppvVar1 + -1);
  if (*ppvVar1 == (void *)0x0) {
    _free(*ppvVar2);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(ppvVar2);
  }
  return;
}



undefined4 * FUN_0084a460(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxTranslationsModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __fastcall FUN_0084a4c0(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (iVar1 != 0) {
    _eh_vector_destructor_iterator_((void *)(iVar1 + 8),4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __fastcall FUN_0084a4f0(int *param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = *param_1;
  if (iVar1 == 0) {
    return;
  }
  iVar2 = *(int *)(iVar1 + 4);
  if (iVar2 == 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  _eh_vector_destructor_iterator_((void *)(iVar2 + 8),4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar2);
}



int __thiscall FUN_0084a540(int **param_1_00,int param_1,int param_2)

{
  uint uVar1;
  uint uVar2;
  
  uVar2 = *(uint *)(param_1 + 4 + param_2 * 8);
  if (*(char *)(param_1_00 + 0xd) != '\0') {
    uVar2 = (uVar2 & 0xff0000 | uVar2 >> 0x10) >> 8 | (uVar2 & 0xff00 | uVar2 << 0x10) << 8;
  }
  uVar1 = *(uint *)(param_1 + param_2 * 8);
  if (*(char *)(param_1_00 + 0xd) != '\0') {
    uVar1 = (uVar1 & 0xff0000 | uVar1 >> 0x10) >> 8 | (uVar1 & 0xff00 | uVar1 << 0x10) << 8;
  }
  if ((uint)(*param_1_00)[1] < uVar1 + uVar2) {
    return 0;
  }
  return **param_1_00 + uVar2;
}



undefined4 * __thiscall FUN_0084a5d0(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = *param_1;
  param_1_00[1] = param_1[1];
  _eh_vector_constructor_iterator_(param_1_00 + 2,4,3,FUN_0089f2c0,FUN_0084a4c0);
  return param_1_00;
}



void __thiscall FUN_0084a600(int *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  
  if (*param_1_00 != param_1) {
    iVar1 = *param_1_00;
    if (iVar1 != 0) {
      iVar2 = *(int *)(iVar1 + 4);
      if (iVar2 == 0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      _eh_vector_destructor_iterator_((void *)(iVar2 + 8),4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar2);
    }
    *param_1_00 = param_1;
  }
  return;
}



undefined4 * __fastcall FUN_0084a660(int *param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5d73;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  iVar3 = *(int *)(*param_1 + 4);
  local_4 = 0;
  if ((iVar3 == 3) || (iVar3 == 2)) {
    puVar4 = (undefined4 *)operator_new(0x14);
    local_4._0_1_ = 1;
    if (puVar4 == (undefined4 *)0x0) {
      puVar4 = (undefined4 *)0x0;
    }
    else {
      iVar3 = *param_1;
      *puVar4 = *(undefined4 *)(iVar3 + 4);
      puVar4[1] = *(undefined4 *)(iVar3 + 8);
      _eh_vector_constructor_iterator_(puVar4 + 2,4,3,FUN_0089f2c0,FUN_0084a4c0);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    puVar5 = (undefined4 *)0x0;
    if (puVar4 != (undefined4 *)0x0) {
      puVar5 = puVar4;
    }
    cVar1 = FUN_00849c20(uVar2);
    if (cVar1 != '\0') {
      ExceptionList = local_c;
      return puVar5;
    }
    local_4 = 0xffffffff;
    if (puVar5 != (undefined4 *)0x0) {
      _eh_vector_destructor_iterator_(puVar5 + 2,4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(puVar5);
    }
  }
  else if (iVar3 == 0x13) {
    cVar1 = FUN_00849c20(uVar2);
    if (cVar1 != '\0') {
      iVar3 = FUN_0084ca10();
      if (iVar3 == 0) {
        local_4 = 0xffffffff;
        FUN_0084a4c0();
        ExceptionList = local_c;
        return (undefined4 *)0x0;
      }
      FUN_0084a380(iVar3);
      if ((*(int *)(*param_1 + 4) == 0x14) && (cVar1 = FUN_00849c20(uVar2), cVar1 != '\0')) {
        ExceptionList = local_c;
        return (undefined4 *)0x0;
      }
    }
    local_4 = 0xffffffff;
    FUN_0084a4c0();
    ExceptionList = local_c;
    return (undefined4 *)0x0;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



int __fastcall FUN_0084a7e0(int *param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  void *pvVar4;
  int iVar5;
  int iVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5dab;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  iVar3 = FUN_0084a660(uVar2);
  if (iVar3 == 0) {
    ExceptionList = local_c;
    return 0;
  }
  local_4 = 0;
  if (*(int *)(*param_1 + 4) == 0xc) {
    pvVar4 = operator_new(0x14);
    local_4._0_1_ = 1;
    if (pvVar4 == (void *)0x0) {
      iVar5 = 0;
    }
    else {
      iVar5 = FUN_0084a5d0(*param_1 + 4);
    }
    local_4._0_1_ = 2;
    cVar1 = FUN_00849c20();
    if (cVar1 == '\0') {
      local_4 = (uint)local_4._1_3_ << 8;
      if (iVar5 != 0) {
        _eh_vector_destructor_iterator_((void *)(iVar5 + 8),4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar5);
      }
      local_4 = 0xffffffff;
      _eh_vector_destructor_iterator_((void *)(iVar3 + 8),4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar3);
    }
    iVar6 = FUN_0084a660(uVar2);
    if (iVar6 == 0) {
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0084a4c0();
      local_4 = 0xffffffff;
      FUN_0084a4c0();
      ExceptionList = local_c;
      return 0;
    }
    FUN_0084a3c0(1,iVar6);
    FUN_0084a3c0(0,iVar3);
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0084a4c0();
    local_4 = 0xffffffff;
    FUN_0084a4c0();
    ExceptionList = local_c;
    return iVar5;
  }
  ExceptionList = local_c;
  return iVar3;
}



undefined4 * FUN_0084a970(undefined4 *param_1,char *param_2,char *param_3)

{
  char cVar1;
  undefined4 uVar2;
  char **ppcVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5de9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if (param_3 == (char *)0xffffffff) {
    if (param_2 == (char *)0x0) {
      param_3 = (char *)0x0;
    }
    else {
      param_3 = param_2;
      do {
        cVar1 = *param_3;
        param_3 = param_3 + 1;
      } while (cVar1 != '\0');
      param_3 = param_3 + -(int)(param_2 + 1);
    }
  }
  uVar2 = FUN_00850350(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  *param_1 = uVar2;
  local_4 = 0;
  if (param_2 != (char *)0x0) {
    ppcVar3 = (char **)operator_new(0xc);
    if (ppcVar3 == (char **)0x0) {
      ppcVar3 = (char **)0x0;
    }
    else {
      *ppcVar3 = param_2;
      ppcVar3[1] = param_3;
      *(undefined2 *)(ppcVar3 + 2) = 1;
      *(undefined *)((int)ppcVar3 + 10) = 1;
    }
    *param_1 = ppcVar3;
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0084aa20(int param_1_00,undefined4 param_1)

{
  FUN_0089e080(param_1,*(undefined4 *)(param_1_00 + 0xec),*(undefined *)(param_1_00 + 0xf0));
  return param_1;
}



int ** __thiscall FUN_0084aa50(int **param_1_00,void *param_1)

{
  int *piVar1;
  void **ppvVar2;
  void *pvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6bb8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  piVar1 = (int *)FUN_00850350(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  *param_1_00 = piVar1;
  local_4 = 0;
  ppvVar2 = (void **)operator_new(0xc);
  if (ppvVar2 == (void **)0x0) {
    ppvVar2 = (void **)0x0;
  }
  else {
    pvVar3 = _malloc((int)param_1 + 1);
    *ppvVar2 = pvVar3;
    ppvVar2[1] = param_1;
    *(undefined2 *)(ppvVar2 + 2) = 1;
    *(undefined *)((int)ppvVar2 + 10) = 1;
  }
  *param_1_00 = (int *)ppvVar2;
  *(undefined *)((int)param_1 + (int)*ppvVar2) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_0084aae0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_00843020(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,param_2);
  return param_1;
}



int __thiscall
FUN_0084ab20(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5e39;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 0;
  FUN_00853ce0(0);
  *(undefined4 *)(param_1_00 + 0x4c) = 7;
  *(undefined4 *)(param_1_00 + 0x48) = 0;
  *(undefined2 *)(param_1_00 + 0x38) = 0;
  *(undefined4 *)(param_1_00 + 0x50) = 0;
  *(undefined4 *)(param_1_00 + 0x70) = 7;
  *(undefined4 *)(param_1_00 + 0x6c) = 0;
  *(undefined2 *)(param_1_00 + 0x5c) = 0;
  *(undefined4 *)(param_1_00 + 0x74) = 0;
  local_4 = CONCAT31(local_4._1_3_,3);
  FUN_00859ea0(param_1,param_2,param_3,param_4);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __fastcall FUN_0084abd0(int *param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  int iVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5e7b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  puVar3 = (undefined4 *)FUN_0084a7e0(uVar2);
  if (puVar3 == (undefined4 *)0x0) {
    ExceptionList = local_c;
    return (undefined4 *)0x0;
  }
  iVar5 = *(int *)(*param_1 + 4);
  local_4 = 0;
  if ((((iVar5 != 8) && (iVar5 != 10)) && (iVar5 != 9)) && (iVar5 != 0xb)) {
    local_4 = 0xffffffff;
    FUN_0084a4c0();
    ExceptionList = local_c;
    return puVar3;
  }
  puVar4 = (undefined4 *)operator_new(0x14);
  local_4._0_1_ = 1;
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    iVar5 = *param_1;
    *puVar4 = *(undefined4 *)(iVar5 + 4);
    puVar4[1] = *(undefined4 *)(iVar5 + 8);
    _eh_vector_constructor_iterator_(puVar4 + 2,4,3,FUN_0089f2c0,FUN_0084a4c0);
  }
  local_4._0_1_ = 2;
  cVar1 = FUN_00849c20();
  if (cVar1 == '\0') {
    local_4 = (uint)local_4._1_3_ << 8;
    if (puVar4 != (undefined4 *)0x0) {
      _eh_vector_destructor_iterator_(puVar4 + 2,4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(puVar4);
    }
  }
  else {
    iVar5 = FUN_0084a7e0(uVar2);
    if (iVar5 != 0) {
      FUN_0084a3c0(1,iVar5);
      FUN_0084a3c0(0,puVar3);
      ExceptionList = local_c;
      return puVar4;
    }
    local_4 = (uint)local_4._1_3_ << 8;
    if (puVar4 != (undefined4 *)0x0) {
      _eh_vector_destructor_iterator_(puVar4 + 2,4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(puVar4);
    }
    if (puVar3 == (undefined4 *)0x0) {
      ExceptionList = local_c;
      return (undefined4 *)0x0;
    }
  }
  local_4 = 0xffffffff;
  _eh_vector_destructor_iterator_(puVar3 + 2,4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(puVar3);
}



void __fastcall FUN_0084ad90(int *param_1)

{
  short *psVar1;
  void **ppvVar2;
  int iVar3;
  
  _free((void *)param_1[0xb]);
  if (7 < (uint)param_1[10]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[5]);
  }
  param_1[10] = 7;
  param_1[9] = 0;
  *(undefined2 *)(param_1 + 5) = 0;
  iVar3 = FUN_00850350();
  if (*param_1 != iVar3) {
    psVar1 = (short *)(*param_1 + 8);
    *psVar1 = *psVar1 + -1;
    ppvVar2 = (void **)*param_1;
    if ((*(short *)(ppvVar2 + 2) == 0) && (ppvVar2 != (void **)0x0)) {
      if (*(char *)((int)ppvVar2 + 10) != '\0') {
        _free(*ppvVar2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar2);
    }
    iVar3 = FUN_00850350();
    *param_1 = iVar3;
  }
  return;
}



int __fastcall FUN_0084ae10(int param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6418;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x28) = 0;
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = wxFileTranslationsLoader::vftable;
  }
  *(undefined4 **)(param_1 + 0x24) = puVar1;
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_0084ae90(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint param_9;
  void *param_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bca288;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840990(&param_3,param_2,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  FUN_00853850(param_1,uVar2,uVar3);
  _free(param_10);
  if (7 < param_9) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_0084af30(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 param_8;
  uint param_9;
  void *param_10;
  undefined4 param_12;
  uint param_13;
  void *param_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5eb0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00840990(&stack0x00000030,param_2,2);
  FUN_00840990(&param_3,param_2,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  uVar3 = FUN_00884e10(uVar3);
  FUN_00853850(param_1,uVar2,uVar3);
  _free(param_10);
  if (7 < param_9) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
  param_9 = 7;
  param_8 = 0;
  param_4 = param_4 & 0xffff0000;
  _free(param_14);
  if (7 < param_13) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_12);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_0084b030(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00851ce0(param_1,param_2,param_3,param_4);
  return param_1;
}



void ** __thiscall FUN_0084b060(void **param_1_00,undefined4 param_1)

{
  short sVar1;
  short *psVar2;
  void **ppvVar3;
  undefined4 *puVar4;
  short *psVar5;
  void **ppvVar6;
  void **local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5ed8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_10 = param_1_00;
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  }
  puVar4 = (undefined4 *)FUN_0043c155(&local_10,param_1,DAT_032bd4d4);
  psVar2 = *(short **)*puVar4;
  local_4 = 0;
  psVar5 = psVar2;
  do {
    sVar1 = *psVar5;
    psVar5 = psVar5 + 1;
  } while (sVar1 != 0);
  FUN_00473ccc(psVar2,(int)psVar5 - (int)(psVar2 + 1) >> 1);
  local_4 = 0xffffffff;
  ppvVar6 = (void **)FUN_00850350();
  ppvVar3 = local_10;
  if (local_10 != ppvVar6) {
    *(short *)(local_10 + 2) = *(short *)(local_10 + 2) + -1;
    if (*(short *)(local_10 + 2) == 0) {
      if (*(char *)((int)local_10 + 10) != '\0') {
        _free(*local_10);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar3);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_0084b140(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  void **ppvVar1;
  void **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5f08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  }
  FUN_0084b030(&local_14,param_1,param_2,DAT_032bd4d4);
  local_4 = 0;
  FID_conflict_assign(*local_14,local_10);
  local_4 = 0xffffffff;
  ppvVar1 = (void **)FUN_00850350();
  if (local_14 != ppvVar1) {
    *(short *)(local_14 + 2) = *(short *)(local_14 + 2) + -1;
    if (*(short *)(local_14 + 2) == 0) {
      if (*(char *)((int)local_14 + 10) != '\0') {
        _free(*local_14);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_14);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __fastcall FUN_0084b210(int *param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  int iVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5e7b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  puVar3 = (undefined4 *)FUN_0084abd0(uVar2);
  if (puVar3 == (undefined4 *)0x0) {
    ExceptionList = local_c;
    return (undefined4 *)0x0;
  }
  local_4 = 0;
  if ((*(int *)(*param_1 + 4) != 6) && (*(int *)(*param_1 + 4) != 0xd)) {
    ExceptionList = local_c;
    return puVar3;
  }
  puVar4 = (undefined4 *)operator_new(0x14);
  local_4._0_1_ = 1;
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    iVar5 = *param_1;
    *puVar4 = *(undefined4 *)(iVar5 + 4);
    puVar4[1] = *(undefined4 *)(iVar5 + 8);
    _eh_vector_constructor_iterator_(puVar4 + 2,4,3,FUN_0089f2c0,FUN_0084a4c0);
  }
  local_4._0_1_ = 2;
  cVar1 = FUN_00849c20();
  if (cVar1 == '\0') {
    local_4 = (uint)local_4._1_3_ << 8;
    if (puVar4 != (undefined4 *)0x0) {
      _eh_vector_destructor_iterator_(puVar4 + 2,4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(puVar4);
    }
  }
  else {
    iVar5 = FUN_0084abd0(uVar2);
    if (iVar5 != 0) {
      FUN_0084a3c0(1,iVar5);
      FUN_0084a3c0(0,puVar3);
      ExceptionList = local_c;
      return puVar4;
    }
    local_4 = (uint)local_4._1_3_ << 8;
    if (puVar4 != (undefined4 *)0x0) {
      _eh_vector_destructor_iterator_(puVar4 + 2,4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(puVar4);
    }
    if (puVar3 == (undefined4 *)0x0) {
      ExceptionList = local_c;
      return (undefined4 *)0x0;
    }
  }
  local_4 = 0xffffffff;
  _eh_vector_destructor_iterator_(puVar3 + 2,4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(puVar3);
}



int __thiscall FUN_0084b3b0(int param_1_00,undefined4 param_1,void **param_2)

{
  short sVar1;
  short *psVar2;
  void **ppvVar3;
  undefined4 *puVar4;
  short *psVar5;
  void **ppvVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5f40;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar4 = (undefined4 *)
           FUN_0043c155(&param_2,param_1,param_2,DAT_0323f878 ^ (uint)&stack0xffffffe4);
  psVar2 = *(short **)*puVar4;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  local_4 = 0;
  psVar5 = psVar2;
  do {
    sVar1 = *psVar5;
    psVar5 = psVar5 + 1;
  } while (sVar1 != 0);
  FID_conflict_assign(psVar2,(int)psVar5 - (int)(psVar2 + 1) >> 1);
  local_4 = CONCAT31(local_4._1_3_,2);
  ppvVar6 = (void **)FUN_00850350();
  ppvVar3 = param_2;
  if (param_2 != ppvVar6) {
    *(short *)(param_2 + 2) = *(short *)(param_2 + 2) + -1;
    if (*(short *)(param_2 + 2) == 0) {
      if (*(char *)((int)param_2 + 10) != '\0') {
        _free(*param_2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar3);
    }
    FUN_00850350();
  }
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_0084b490(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6cd3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 1;
  FUN_0084b140(param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



int * __fastcall FUN_0084b500(int *param_1)

{
  int iVar1;
  undefined uVar2;
  char cVar3;
  int *piVar4;
  void *pvVar5;
  int *piVar6;
  int *piVar7;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5f83;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  piVar4 = (int *)FUN_0084b210(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  if (piVar4 == (int *)0x0) {
    ExceptionList = local_c;
    return (int *)0x0;
  }
  local_4 = 0;
  if (*(int *)(*param_1 + 4) != 0xe) {
    ExceptionList = local_c;
    return piVar4;
  }
  pvVar5 = operator_new(0x14);
  local_4._0_1_ = 1;
  if (pvVar5 == (void *)0x0) {
    piVar6 = (int *)0x0;
  }
  else {
    piVar6 = (int *)FUN_0084a5d0(*param_1 + 4);
  }
  local_4._0_1_ = 2;
  cVar3 = FUN_00849c20();
  if (cVar3 == '\0') {
    local_4 = (uint)local_4._1_3_ << 8;
    if (piVar6 != (int *)0x0) {
      _eh_vector_destructor_iterator_(piVar6 + 2,4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(piVar6);
    }
    local_4 = 0xffffffff;
    _eh_vector_destructor_iterator_(piVar4 + 2,4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(piVar4);
  }
  piVar7 = (int *)FUN_0084b500();
  if (piVar7 == (int *)0x0) {
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0084a4c0();
    local_4 = 0xffffffff;
    FUN_0084a4c0();
    ExceptionList = local_c;
    return (int *)0x0;
  }
  local_4._0_1_ = 3;
  uVar2 = (undefined)local_4;
  local_4._0_1_ = 3;
  if (*piVar7 == 0xe) {
    FUN_0084a3c0(0,piVar4);
    iVar1 = piVar7[2];
    piVar7[2] = 0;
    FUN_0084a3c0(1,iVar1);
    FUN_0084a3c0(0,piVar6);
    local_4._0_1_ = 2;
    FUN_0084a4c0();
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0084a4c0();
    local_4 = 0xffffffff;
    FUN_0084a4c0();
    ExceptionList = local_c;
    return piVar7;
  }
  local_4._0_1_ = uVar2;
  FUN_0084a3c0(0,piVar4);
  FUN_0084a3c0(1,piVar7);
  local_4._0_1_ = 2;
  FUN_0084a4c0();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0084a4c0();
  local_4 = 0xffffffff;
  FUN_0084a4c0();
  ExceptionList = local_c;
  return piVar6;
}



int __thiscall FUN_0084b730(int param_1_00,undefined4 param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  undefined local_54 [4];
  undefined4 local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5fb0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != -1) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x38) == 0)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/translation.h",0x38,
                   "wxPluralFormsCalculatorPtr::operator ->","m_ptr != 0",0,
                   DAT_0323f878 ^ (uint)&stack0xffffff94);
    }
    piVar1 = *(int **)(param_1_00 + 0x38);
    if (piVar1[1] != 0) {
      iVar2 = FUN_00849fc0(param_2);
      if (((-1 < iVar2) && (iVar2 <= *piVar1)) && (iVar2 != 0)) {
        local_3c = 7;
        local_40 = 0;
        local_50 = (uint)local_50._2_2_ << 0x10;
        FID_conflict_assign(param_1,0,0xffffffff);
        local_38 = (void *)0x0;
        local_4 = 0;
        uVar3 = FUN_0081b5f9(local_30,local_54,iVar2);
        local_4 = CONCAT31(local_4._1_3_,1);
        iVar2 = FUN_00970c40(uVar3);
        _free(local_14);
        if (7 < local_18) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_2c);
        }
        local_18 = 7;
        local_1c = 0;
        local_2c = local_2c & 0xffff0000;
        _free(local_38);
        if (7 < local_3c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_50);
        }
        goto LAB_0084b87f;
      }
    }
  }
  iVar2 = FUN_00970c40(param_1);
LAB_0084b87f:
  if (iVar2 == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = iVar2 + 0x28;
  }
  ExceptionList = local_c;
  return iVar2;
}



int __thiscall FUN_0084b8a0(int param_1_00,int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1_00 + 0x14) != 0) {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(param_1_00,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    return param_1;
  }
  uVar1 = FUN_00847560();
  FUN_00848090(param_1,uVar1);
  return param_1;
}



undefined4 * __thiscall FUN_0084b900(int *param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  float fVar2;
  float fVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be860b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar4 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    *puVar4 = 0;
    puVar4[7] = 7;
    puVar4[6] = 0;
    *(undefined2 *)(puVar4 + 2) = 0;
    FID_conflict_assign(param_1,0,0xffffffff);
    puVar4[8] = 0;
  }
  *puVar4 = *(undefined4 *)(*param_1_00 + param_2 * 4);
  *(undefined4 **)(*param_1_00 + param_2 * 4) = puVar4;
  param_1_00[2] = param_1_00[2] + 1;
  iVar1 = param_1_00[1];
  fVar2 = (float)param_1_00[2];
  local_4 = 0xffffffff;
  if (param_1_00[2] < 0) {
    fVar2 = fVar2 + 4.294967e+09;
  }
  fVar3 = (float)iVar1;
  if (iVar1 < 0) {
    fVar3 = fVar3 + 4.294967e+09;
  }
  if (0.85 <= fVar2 / fVar3) {
    FUN_00b28480(iVar1);
  }
  ExceptionList = local_c;
  return puVar4;
}



undefined4 * __thiscall FUN_0084b9f0(int param_1_00,int param_1)

{
  undefined4 *puVar1;
  void **ppvVar2;
  uint uVar3;
  int iVar4;
  bool bVar5;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  puVar1 = *(undefined4 **)(param_1_00 + 0x28);
  ppvVar2 = &local_c;
  local_c = ExceptionList;
  while( true ) {
    ExceptionList = ppvVar2;
    if (puVar1 == (undefined4 *)0x0) {
      ExceptionList = local_c;
      return (undefined4 *)0x0;
    }
    iVar4 = FUN_0095a050(local_30);
    local_4 = 0;
    if (*(int *)(iVar4 + 0x14) == *(int *)(param_1 + 0x14)) {
      iVar4 = FUN_00850760(param_1);
      bVar5 = iVar4 == 0;
    }
    else {
      bVar5 = false;
    }
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) break;
    if (bVar5) {
      ExceptionList = local_c;
      return puVar1;
    }
    puVar1 = (undefined4 *)*puVar1;
    ppvVar2 = (void **)ExceptionList;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_2c,uVar3);
}



undefined FUN_0084bab0(undefined4 param_1,undefined4 param_2)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  char cVar5;
  uint uVar6;
  undefined4 uVar7;
  undefined local_1a1;
  undefined local_19c [4];
  uint local_198;
  undefined4 local_188;
  uint local_184;
  void *local_180;
  undefined local_178 [4];
  uint local_174;
  undefined4 local_164;
  uint local_160;
  void *local_15c;
  undefined local_154 [4];
  uint local_150;
  undefined4 local_140;
  uint local_13c;
  void *local_138;
  undefined local_130 [4];
  undefined4 local_12c;
  uint local_118;
  void *local_114;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc609c;
  local_c = ExceptionList;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xfffffe4c;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d2721c);
  local_4 = 0;
  FUN_0084ab20(param_1,param_2,local_130,0);
  local_4 = 1;
  bVar4 = false;
  bVar3 = false;
  bVar2 = false;
  bVar1 = false;
  cVar5 = FUN_00859650(uVar6);
  if (cVar5 == '\0') {
    FUN_0043c211(&DAT_00d2721c);
    local_4 = 2;
    uVar7 = FUN_0081b5f9(local_154,param_1,0x5c);
    local_4 = 3;
    uVar7 = FUN_00853300(local_178,uVar7,"LC_MESSAGES");
    local_4 = 4;
    FUN_0084ab20(uVar7,param_2,local_19c,0);
    bVar4 = true;
    bVar3 = true;
    bVar2 = true;
    bVar1 = true;
    local_4 = 5;
    cVar5 = FUN_00859650();
    local_1a1 = 0;
    if (cVar5 == '\0') goto LAB_0084bbe8;
  }
  local_1a1 = 1;
LAB_0084bbe8:
  local_4 = 4;
  if (bVar1) {
    FUN_0043250a();
  }
  if (bVar2) {
    _free(local_15c);
    if (7 < local_160) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_174);
    }
    local_160 = 7;
    local_164 = 0;
    local_174 = local_174 & 0xffff0000;
  }
  if (bVar3) {
    _free(local_138);
    if (7 < local_13c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_150);
    }
    local_13c = 7;
    local_140 = 0;
    local_150 = local_150 & 0xffff0000;
  }
  if (bVar4) {
    _free(local_180);
    if (7 < local_184) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_198);
    }
    local_184 = 7;
    local_188 = 0;
    local_198 = local_198 & 0xffff0000;
  }
  local_4 = 0;
  FUN_0043250a();
  _free(local_114);
  if (7 < local_118) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_12c);
  }
  ExceptionList = local_c;
  return local_1a1;
}



void FUN_0084bd40(undefined4 param_1,int param_2)

{
  uint uVar1;
  int *piVar2;
  undefined *puVar3;
  int iVar4;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58 [5];
  uint uStack_44;
  void *pvStack_40;
  undefined auStack_38 [4];
  undefined4 uStack_34;
  undefined2 local_30;
  uint local_20;
  void *local_1c;
  undefined4 local_18;
  void *local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  uStack_8 = &LAB_00bc60f1;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&local_60);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  local_4 = 0;
  local_5c = param_1;
  local_60 = 0;
  FUN_00853ce0(0);
  local_4 = 0;
  local_60 = 1;
  FUN_00855070(&DAT_032bd468);
  local_1c = (void *)0x7;
  local_20 = 0;
  local_30 = 0;
  local_18 = 0;
  local_4 = 1;
  if (*(int *)(param_2 + 0x14) == 0) {
    piVar2 = (int *)FUN_0085bf20(uVar1);
    puVar3 = (undefined *)(**(code **)(*piVar2 + 0x20))(local_58);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,2);
  }
  else {
    piVar2 = (int *)FUN_0085bf20(uVar1);
    puVar3 = (undefined *)(**(code **)(*piVar2 + 0x24))(local_58,param_2,1);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,3);
  }
  if (auStack_38 != puVar3) {
    FID_conflict_assign(puVar3,0,0xffffffff);
  }
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
  _free(pvStack_40);
  if (7 < uStack_44) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_58[0]);
  }
  iVar4 = FUN_00853d10(auStack_38,1,0);
  if (iVar4 == -1) {
    FUN_00854700(auStack_38,1);
  }
  _free(local_1c);
  if (7 < local_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_34);
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0084bea0(undefined4 param_1_00,void **param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  void **ppvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6128;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_00847c00(param_2,param_1,1);
  local_4 = 0;
  uVar2 = FUN_008854f0(*param_1,uVar1);
  FUN_0083fe90(param_1_00,uVar2);
  local_4 = 0xffffffff;
  ppvVar3 = (void **)FUN_00850350();
  if (param_1 != ppvVar3) {
    *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + -1;
    if (*(short *)(param_1 + 2) == 0) {
      if (*(char *)((int)param_1 + 10) != '\0') {
        _free(*param_1);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_1);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_0084bf60(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,uint param_3)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 param_7;
  uint param_8;
  void *param_9;
  int param_11;
  char param_12;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6160;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00840a00(&stack0x0000002c,param_1,2);
  FUN_00840990(&param_2,param_1,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20();
  uVar4 = FUN_00884e10(uVar4);
  FUN_0083fe90(param_1_00,uVar3,uVar4);
  _free(param_9);
  iVar1 = param_11;
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  param_8 = 7;
  param_7 = 0;
  param_3 = param_3 & 0xffff0000;
  if ((param_12 != '\0') && (param_11 != 0)) {
    _free(*(void **)(param_11 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



int FUN_0084c080(int param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



undefined4 FUN_0084c0c0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_28 [4];
  undefined4 local_24;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6188;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  uVar2 = FUN_0041b008(local_28,param_2,param_3);
  local_4 = 0;
  FUN_0084c080(param_1,uVar2,uVar1);
  if (7 < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_0084c140(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  size_t _Count;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc61bb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *param_1_00 = 0;
  _Count = FUN_00893ca0(100,uVar1);
  param_1_00[2] = _Count;
  param_1_00[3] = 0;
  pvVar2 = _calloc(_Count,4);
  param_1_00[1] = pvVar2;
  param_1_00[0xb] = 7;
  param_1_00[10] = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 6) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[0xc] = 0;
  param_1_00[0xe] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



int * __fastcall FUN_0084c1d0(int *param_1)

{
  int iVar1;
  undefined uVar2;
  char cVar3;
  int *piVar4;
  void *pvVar5;
  int *piVar6;
  int *piVar7;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5f83;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  piVar4 = (int *)FUN_0084b500(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  if (piVar4 == (int *)0x0) {
    ExceptionList = local_c;
    return (int *)0x0;
  }
  local_4 = 0;
  if (*(int *)(*param_1 + 4) != 0xf) {
    ExceptionList = local_c;
    return piVar4;
  }
  pvVar5 = operator_new(0x14);
  local_4._0_1_ = 1;
  if (pvVar5 == (void *)0x0) {
    piVar6 = (int *)0x0;
  }
  else {
    piVar6 = (int *)FUN_0084a5d0(*param_1 + 4);
  }
  local_4._0_1_ = 2;
  cVar3 = FUN_00849c20();
  if (cVar3 == '\0') {
    local_4 = (uint)local_4._1_3_ << 8;
    if (piVar6 != (int *)0x0) {
      _eh_vector_destructor_iterator_(piVar6 + 2,4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(piVar6);
    }
    local_4 = 0xffffffff;
    _eh_vector_destructor_iterator_(piVar4 + 2,4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(piVar4);
  }
  piVar7 = (int *)FUN_0084c1d0();
  if (piVar7 == (int *)0x0) {
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0084a4c0();
    local_4 = 0xffffffff;
    FUN_0084a4c0();
    ExceptionList = local_c;
    return (int *)0x0;
  }
  local_4._0_1_ = 3;
  uVar2 = (undefined)local_4;
  local_4._0_1_ = 3;
  if (*piVar7 == 0xf) {
    FUN_0084a3c0(0,piVar4);
    iVar1 = piVar7[2];
    piVar7[2] = 0;
    FUN_0084a3c0(1,iVar1);
    FUN_0084a3c0(0,piVar6);
    local_4._0_1_ = 2;
    FUN_0084a4c0();
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0084a4c0();
    local_4 = 0xffffffff;
    FUN_0084a4c0();
    ExceptionList = local_c;
    return piVar7;
  }
  local_4._0_1_ = uVar2;
  FUN_0084a3c0(0,piVar4);
  FUN_0084a3c0(1,piVar7);
  local_4._0_1_ = 2;
  FUN_0084a4c0();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0084a4c0();
  local_4 = 0xffffffff;
  FUN_0084a4c0();
  ExceptionList = local_c;
  return piVar6;
}



void __fastcall FUN_0084c400(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc61f6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_0084a4f0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  _free(*(void **)(param_1 + 0x30));
  if (7 < *(uint *)(param_1 + 0x2c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x18));
  }
  *(undefined4 *)(param_1 + 0x2c) = 7;
  *(undefined4 *)(param_1 + 0x28) = 0;
  *(undefined2 *)(param_1 + 0x18) = 0;
  local_4 = 0xffffffff;
  FUN_00893cf0(*(undefined4 *)(param_1 + 8),*(undefined4 *)(param_1 + 4),FUN_008c64b0);
  *(undefined4 *)(param_1 + 0xc) = 0;
  _free(*(void **)(param_1 + 4));
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0084c4b0(undefined *param_1_00,int param_1)

{
  undefined *puVar1;
  undefined local_54 [4];
  undefined4 local_50;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6230;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == 0) {
    FUN_0043c211(&PTR_02bd3fc0);
    local_4 = 0;
    if (param_1_00 != local_54) {
      FID_conflict_assign(local_54,0,0xffffffff);
    }
    _free(local_38);
    local_2c = local_50;
    local_18 = local_3c;
  }
  else {
    puVar1 = (undefined *)FUN_00848090(local_30,param_1,DAT_0323f878 ^ (uint)&stack0xffffffa8);
    local_4 = 1;
    if (param_1_00 != puVar1) {
      FID_conflict_assign(puVar1,0,0xffffffff);
    }
    _free(local_14);
  }
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_0084c580(int *param_1_00,int param_1,undefined *param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    iVar3 = param_1 + 4;
  }
  else {
    iVar3 = *(int *)(param_1 + 4);
  }
  uVar2 = FUN_00893df0(iVar3);
  uVar1 = param_1_00[1];
  puVar4 = *(undefined4 **)(*param_1_00 + (uVar2 % uVar1) * 4);
  while( true ) {
    if (puVar4 == (undefined4 *)0x0) {
      *param_2 = 1;
      puVar4 = (undefined4 *)FUN_0084b900(param_1,uVar2 % uVar1);
      return puVar4;
    }
    if ((puVar4[6] == *(int *)(param_1 + 0x14)) && (iVar3 = FUN_00850760(param_1), iVar3 == 0))
    break;
    puVar4 = (undefined4 *)*puVar4;
  }
  *param_2 = 0;
  return puVar4;
}



void FUN_0084c600(int param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  short *psVar2;
  char cVar3;
  uint uVar4;
  short *psVar5;
  undefined4 *puVar6;
  undefined4 local_bc;
  int local_b8;
  undefined local_34 [4];
  undefined4 local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6285;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_bc;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff34;
  ExceptionList = &local_c;
  local_4 = 0;
  local_b8 = param_1;
  local_bc = 0;
  FUN_00432475(param_2,param_3,0);
  local_4 = 1;
  FUN_008581b0(local_34,0);
  local_4 = CONCAT31(local_4._1_3_,3);
  FUN_0043250a(uVar4);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar6 = (undefined4 *)(param_1 + 4);
  *(undefined2 *)puVar6 = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  uVar4 = *(uint *)(param_1 + 0x14);
  uVar1 = local_20 * 4;
  local_bc = 1;
  if ((uVar4 <= uVar1) && (*(uint *)(param_1 + 0x18) != uVar1)) {
    cVar3 = FUN_004182d2(uVar1,1);
    if (cVar3 != '\0') {
      *(uint *)(param_1 + 0x14) = uVar4;
      if (7 < *(uint *)(param_1 + 0x18)) {
        puVar6 = (undefined4 *)*puVar6;
      }
      *(undefined2 *)((int)puVar6 + uVar4 * 2) = 0;
    }
  }
  FID_conflict_append(local_34,0,0xffffffff);
  FID_conflict_append(1,0x5c);
  FUN_0084b060("LC_MESSAGES");
  psVar2 = &DAT_00d27220;
  do {
    psVar5 = psVar2;
    psVar2 = psVar5 + 1;
  } while (*psVar5 != 0);
  FUN_00473ccc(&DAT_00d27220,(int)(psVar5 + -0x693910) >> 1);
  FID_conflict_append(param_2,0,0xffffffff);
  FID_conflict_append(1,0x5c);
  psVar2 = &DAT_00d27220;
  do {
    psVar5 = psVar2;
    psVar2 = psVar5 + 1;
  } while (*psVar5 != 0);
  FUN_00473ccc(&DAT_00d27220,(int)(psVar5 + -0x693910) >> 1);
  FID_conflict_append(local_34,0,0xffffffff);
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0084c7f0(int param_1,undefined4 param_2)

{
  uint uVar1;
  short *psVar2;
  uint uVar3;
  short *psVar4;
  undefined4 *puVar5;
  int iVar6;
  undefined4 local_50;
  undefined4 local_4c;
  undefined local_48 [4];
  int local_44;
  int local_40;
  int local_38;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc62e9;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_50;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar5 = (undefined4 *)(param_1 + 4);
  *(undefined2 *)puVar5 = 0;
  local_38 = param_1;
  local_50 = param_2;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  uVar1 = *(uint *)(param_1 + 0x14);
  local_4 = 0;
  local_4c = 1;
  if ((uVar1 < 0x1f5) && (*(uint *)(param_1 + 0x18) != 500)) {
    if (*(uint *)(param_1 + 0x18) < 500) {
      FUN_004181eb(500,uVar1,uVar3);
    }
    *(uint *)(param_1 + 0x14) = uVar1;
    if (7 < *(uint *)(param_1 + 0x18)) {
      puVar5 = (undefined4 *)*puVar5;
    }
    *(undefined2 *)((int)puVar5 + uVar1 * 2) = 0;
  }
  FUN_0084bd40(local_48,local_50);
  local_4 = 1;
  iVar6 = local_40;
  if (local_40 != local_40 + local_44 * 0x24) {
    do {
      FUN_0084c600(local_34,iVar6,local_50);
      local_4._0_1_ = 2;
      if (*(int *)(param_1 + 0x14) != 0) {
        psVar2 = &DAT_00d27220;
        do {
          psVar4 = psVar2;
          psVar2 = psVar4 + 1;
        } while (*psVar4 != 0);
        FUN_00473ccc(&DAT_00d27220,(int)(psVar4 + -0x693910) >> 1);
      }
      FID_conflict_append(local_34,0,0xffffffff);
      local_4 = CONCAT31(local_4._1_3_,1);
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
      iVar6 = iVar6 + 0x24;
    } while (iVar6 != local_40 + local_44 * 0x24);
  }
  local_4 = local_4 & 0xffffff00;
  FUN_00853f30();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void ** __fastcall FUN_0084c990(void **param_1)

{
  void *pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc4ef8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = (void *)FUN_00893ca0(100,DAT_0323f878 ^ (uint)&stack0xffffffec);
  param_1[1] = pvVar1;
  param_1[2] = (void *)0x0;
  pvVar1 = _calloc((size_t)pvVar1,4);
  *param_1 = pvVar1;
  local_4 = 0;
  pvVar1 = (void *)FUN_00893ca0(100);
  param_1[5] = pvVar1;
  param_1[6] = (void *)0x0;
  pvVar1 = _calloc((size_t)pvVar1,4);
  param_1[4] = pvVar1;
  ExceptionList = local_c;
  return param_1;
}



int __fastcall FUN_0084ca10(int *param_1)

{
  char cVar1;
  int iVar2;
  void *pvVar3;
  int iVar4;
  int iVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5dab;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = FUN_0084c1d0(DAT_0323f878 ^ (uint)&stack0xffffffdc);
  if (iVar2 == 0) {
    ExceptionList = local_c;
    return 0;
  }
  local_4 = 0;
  if (*(int *)(*param_1 + 4) == 0x10) {
    pvVar3 = operator_new(0x14);
    local_4._0_1_ = 1;
    if (pvVar3 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = FUN_0084a5d0(*param_1 + 4);
    }
    local_4._0_1_ = 2;
    cVar1 = FUN_00849c20();
    if (cVar1 == '\0') {
      local_4 = (uint)local_4._1_3_ << 8;
      if (iVar4 != 0) {
        _eh_vector_destructor_iterator_((void *)(iVar4 + 8),4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar4);
      }
      local_4 = 0xffffffff;
      _eh_vector_destructor_iterator_((void *)(iVar2 + 8),4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar2);
    }
    iVar5 = FUN_0084ca10();
    if (iVar5 != 0) {
      FUN_0084a3c0(1,iVar5);
      if (*(int *)(*param_1 + 4) == 0x11) {
        cVar1 = FUN_00849c20();
        if (cVar1 != '\0') {
          iVar5 = FUN_0084ca10();
          if (iVar5 != 0) {
            FUN_0084a3c0(2,iVar5);
            FUN_0084a3c0(0,iVar2);
            local_4 = (uint)local_4._1_3_ << 8;
            FUN_0084a4c0();
            local_4 = 0xffffffff;
            FUN_0084a4c0();
            ExceptionList = local_c;
            return iVar4;
          }
        }
      }
    }
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0084a4c0();
    local_4 = 0xffffffff;
    FUN_0084a4c0();
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = local_c;
  return iVar2;
}



void __thiscall FUN_0084cbd0(int param_1_00,undefined4 param_1)

{
  char *_Str;
  uint uVar1;
  int iVar2;
  undefined *puVar3;
  size_t sVar4;
  uint uVar5;
  uint uVar6;
  uint local_c0;
  int local_bc;
  uint local_b8;
  int *local_b4;
  int *local_b0;
  void *local_ac;
  int local_a8;
  undefined4 local_a4;
  undefined4 local_9c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6373;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_c0;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_c;
  local_c0 = 0;
  local_a4 = param_1;
  local_b0 = (int *)0x0;
  local_a8 = param_1_00;
  if (*(int *)(param_1_00 + 0x24) == 0) {
    local_b4 = DAT_032bd50c;
  }
  else {
    local_ac = operator_new(0x10);
    local_4 = 0;
    if (local_ac == (void *)0x0) {
      local_b4 = (int *)0x0;
      local_b0 = local_b4;
    }
    else {
      local_b4 = (int *)FUN_00862d20(param_1_00 + 0x10);
      local_b0 = local_b4;
    }
  }
  local_4._0_1_ = 0xff;
  local_4._1_3_ = 0xffffff;
  local_b8 = 0;
  if (*(int *)(param_1_00 + 4) != 0) {
    do {
      uVar5 = local_b8;
      iVar2 = FUN_0084a540(*(undefined4 *)(param_1_00 + 8),local_b8);
      if (iVar2 == 0) goto LAB_0084cc90;
      local_40 = 7;
      local_44 = 0;
      local_54 = local_54 & 0xffff0000;
      local_3c = (void *)0x0;
      local_4 = 1;
      puVar3 = (undefined *)FUN_0084b3b0(iVar2,local_b4);
      local_4._0_1_ = 2;
      if (local_58 != puVar3) {
        FID_conflict_assign(puVar3,0,0xffffffff);
      }
      local_4._0_1_ = 1;
      _free(local_84);
      if (7 < local_88) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_9c);
      }
      iVar2 = *(int *)(param_1_00 + 0xc);
      local_ac = (void *)FUN_0084a540(iVar2,uVar5);
      if (local_ac == (void *)0x0) {
        _free(local_3c);
        if (7 < local_40) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_54);
        }
        goto LAB_0084cc90;
      }
      uVar5 = *(uint *)(iVar2 + uVar5 * 8);
      if (*(char *)(param_1_00 + 0x34) != '\0') {
        uVar5 = (uVar5 & 0xff0000 | uVar5 >> 0x10) >> 8 | (uVar5 << 0x10 | uVar5 & 0xff00) << 8;
      }
      uVar6 = 0;
      local_bc = 0;
      if (uVar5 != 0) {
        do {
          _Str = (char *)(uVar6 + (int)local_ac);
          local_1c = 7;
          local_20 = 0;
          local_30 = local_30 & 0xffff0000;
          local_18 = (void *)0x0;
          local_4._0_1_ = 3;
          puVar3 = (undefined *)FUN_0084b3b0(_Str,local_b4);
          local_4._0_1_ = 4;
          if (local_34 != puVar3) {
            FID_conflict_assign(puVar3,0,0xffffffff);
          }
          local_4._0_1_ = 3;
          _free(local_84);
          if (7 < local_88) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_9c);
          }
          if (local_20 != 0) {
            if (local_bc == 0) {
              puVar3 = local_58;
            }
            else {
              puVar3 = (undefined *)FUN_0081b5f9(local_7c,local_58,local_bc);
              local_c0 = local_c0 | 1;
              local_4._0_1_ = 5;
            }
            puVar3 = (undefined *)FUN_008c8430(puVar3);
            if (puVar3 != local_34) {
              FID_conflict_assign(local_34,0,0xffffffff);
            }
            local_4._0_1_ = 3;
            local_4._1_3_ = 0;
            if ((local_c0 & 1) != 0) {
              local_c0 = local_c0 & 0xfffffffe;
              _free(local_60);
              if (7 < local_64) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_78);
              }
              local_64 = 7;
              local_68 = 0;
              local_78 = local_78 & 0xffff0000;
            }
          }
          sVar4 = _strnlen(_Str,uVar5 - uVar6);
          local_bc = local_bc + 1;
          uVar6 = uVar6 + 1 + sVar4;
          _free(local_18);
          if (7 < local_1c) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_30);
          }
          local_1c = 7;
          local_20 = 0;
          local_30 = local_30 & 0xffff0000;
          param_1_00 = local_a8;
        } while (uVar6 < uVar5);
      }
      local_4._0_1_ = 0xff;
      local_4._1_3_ = 0xffffff;
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_54);
      }
      local_54 = local_54 & 0xffff0000;
      local_b8 = local_b8 + 1;
      local_40 = 7;
      local_44 = 0;
    } while (local_b8 < *(uint *)(param_1_00 + 4));
  }
  if (local_b0 != (int *)0x0) {
    (**(code **)(*local_b0 + 0x18))(1,uVar1);
  }
LAB_0084cc90:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_0084cff0(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (iVar1 == 0) {
    return;
  }
  FUN_0084c400();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar1);
}



void __thiscall FUN_0084d020(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x1c) == 0) {
    pvVar1 = operator_new(0x20);
    local_4 = 0;
    if (pvVar1 == (void *)0x0) {
      uVar2 = 0;
    }
    else {
      uVar2 = FUN_0084c990();
    }
    *(undefined4 *)(param_1_00 + 0x1c) = uVar2;
  }
  local_4 = 0xffffffff;
  puVar3 = (undefined4 *)FUN_008c39e0(param_1);
  *puVar3 = param_2;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0084d0a0(int param_1_00,undefined4 param_1,int param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x1c) == 0) {
    pvVar1 = operator_new(0x20);
    local_4 = 0;
    if (pvVar1 == (void *)0x0) {
      uVar2 = 0;
    }
    else {
      uVar2 = FUN_0084c990();
    }
    *(undefined4 *)(param_1_00 + 0x1c) = uVar2;
  }
  local_4 = 0xffffffff;
  iVar3 = FUN_008c8430(param_1);
  if (iVar3 != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_0084d140(int param_1_00,int param_1,undefined4 param_2)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x3c) != 0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/log.h",0x361,"wxLogger::MaybeStore",
                 "m_optKey.empty()","can only have one optional value");
  }
  if (param_1_00 + 0x28 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  FUN_0084d020(param_1,param_2);
  return param_1_00;
}



undefined4 __thiscall
FUN_0084d1a0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  uint param_8;
  void *param_9;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc63b8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffff0;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0084d0a0(param_1,&param_2);
  _free(param_9);
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3,uVar1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_0084d220(int *param_1)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc63e8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = FUN_0084ca10(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  if (iVar1 == 0) {
    ExceptionList = local_c;
    return 0;
  }
  if (*(int *)(*param_1 + 4) != 0x12) {
    local_4 = 0xffffffff;
    _eh_vector_destructor_iterator_((void *)(iVar1 + 8),4,3,FUN_0084a4c0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return iVar1;
}



void __fastcall FUN_0084d2b0(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6418;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if (*(undefined4 **)(param_1 + 0x24) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1 + 0x24))(1,DAT_0323f878 ^ (uint)&stack0xffffffe8);
  }
  iVar2 = *(int *)(param_1 + 0x28);
  while (iVar2 != 0) {
    puVar1 = *(undefined4 **)(param_1 + 0x28);
    *(undefined4 *)(param_1 + 0x28) = *puVar1;
    if (puVar1 != (undefined4 *)0x0) {
      FUN_0084c400();
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(puVar1);
    }
    iVar2 = *(int *)(param_1 + 0x28);
  }
  _free(*(void **)(param_1 + 0x1c));
  if (*(uint *)(param_1 + 0x18) < 8) {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    ExceptionList = local_c;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

int FUN_0084d360(undefined4 param_1)

{
  int iVar1;
  undefined local_d;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc644e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((DAT_032bd488 & 1) == 0) {
    DAT_032bd488 = DAT_032bd488 | 1;
    local_4 = 0;
    DAT_032bd47c = FUN_00893ca0(100,DAT_0323f878 ^ (uint)&stack0xffffffec);
    _DAT_032bd480 = 0;
    DAT_032bd478 = _calloc(DAT_032bd47c,4);
    _atexit((_func_4879 *)&LAB_00c76490);
  }
  local_4 = 0xffffffff;
  iVar1 = FUN_00970c40(param_1);
  if (iVar1 == 0) {
    iVar1 = FUN_0084c580(param_1,&local_d);
  }
  ExceptionList = local_c;
  return iVar1 + 4;
}



void FUN_0084d410(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined local_54 [24];
  uint local_3c;
  void *local_38;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdcc00;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_008432c0();
  if (cVar1 != '\0') {
    FUN_0043c211();
    local_4 = 0;
    FID_conflict_assign(param_2,0,0xffffffff);
    FUN_0084d1a0(local_54);
    local_4 = 0xffffffff;
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    FUN_004325b6();
    local_4 = 1;
    FUN_0083f9e0();
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_0084d530(int *param_1)

{
  undefined4 uVar1;
  char cVar2;
  int iVar3;
  
  if (*(int *)(*param_1 + 4) == 5) {
    cVar2 = FUN_00849c20();
    if (cVar2 != '\0') {
      if (*(int *)(*param_1 + 4) == 7) {
        cVar2 = FUN_00849c20();
        if ((cVar2 != '\0') && (*(int *)(*param_1 + 4) == 2)) {
          uVar1 = *(undefined4 *)(*param_1 + 8);
          cVar2 = FUN_00849c20();
          if ((cVar2 != '\0') && (*(int *)(*param_1 + 4) == 0x12)) {
            cVar2 = FUN_00849c20();
            if ((cVar2 != '\0') && (*(int *)(*param_1 + 4) == 4)) {
              cVar2 = FUN_00849c20();
              if ((cVar2 != '\0') && (*(int *)(*param_1 + 4) == 7)) {
                cVar2 = FUN_00849c20();
                if (cVar2 != '\0') {
                  iVar3 = FUN_0084d220();
                  if ((iVar3 != 0) && (*(int *)(*param_1 + 4) == 0x12)) {
                    cVar2 = FUN_00849c20();
                    if ((cVar2 != '\0') && (*(int *)(*param_1 + 4) == 1)) {
                      FUN_0084a400(uVar1,iVar3);
                      return 1;
                    }
                  }
                }
              }
            }
          }
          return 0;
        }
      }
      return 0;
    }
  }
  return 0;
}



undefined4 * FUN_0084d5f0(int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6478;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  puVar3 = (undefined4 *)operator_new(8);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    *puVar3 = 0;
    puVar3[1] = 0;
  }
  local_4 = 0;
  if (param_1 != 0) {
    FUN_00849c20(uVar2);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (puVar3 == (undefined4 *)0x0)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/translation.h",0x38,
                   "wxPluralFormsCalculatorPtr::operator *","m_ptr != 0",0);
    }
    cVar1 = FUN_0084d530(puVar3);
    if (cVar1 == '\0') {
      local_4 = 0xffffffff;
      FUN_0084a4f0();
      ExceptionList = local_c;
      return (undefined4 *)0x0;
    }
  }
  local_4 = 0xffffffff;
  FUN_0084a4f0();
  ExceptionList = local_c;
  return puVar3;
}



void FUN_0084d6f0(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = DAT_032bd460;
  if (DAT_032bd464 == '\0') {
    DAT_032bd460 = param_1;
    DAT_032bd464 = 0;
    return;
  }
  if (DAT_032bd460 != 0) {
    FUN_0084d2b0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  DAT_032bd460 = param_1;
  DAT_032bd464 = 0;
  return;
}



void FUN_0084d750(void)

{
  int iVar1;
  
  iVar1 = DAT_032bd460;
  if (DAT_032bd464 == '\0') {
    DAT_032bd460 = 0;
    DAT_032bd464 = 1;
    return;
  }
  if (DAT_032bd460 != 0) {
    FUN_0084d2b0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  DAT_032bd460 = 0;
  DAT_032bd464 = 1;
  return;
}



void __thiscall
FUN_0084d7a0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint param_9;
  void *param_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcc0a8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840990(&param_3,param_2,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  FUN_0084d410(param_1_00,param_1,uVar2,uVar3);
  _free(param_10);
  if (7 < param_9) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_0084d840(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            uint param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 param_8;
  uint param_9;
  void *param_10;
  uint param_12;
  undefined4 param_13;
  uint param_14;
  void *param_15;
  undefined4 param_17;
  uint param_18;
  void *param_19;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc64b8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  local_4 = 2;
  FUN_00840990(&stack0x00000054,param_2,3);
  FUN_00840990(&stack0x00000030,param_2,2);
  FUN_00840990(&param_3,param_2,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  uVar3 = FUN_00884e10(uVar3);
  uVar3 = FUN_00884e10(uVar3);
  FUN_0084d410(param_1_00,param_1,uVar2,uVar3);
  _free(param_10);
  if (7 < param_9) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
  param_9 = 7;
  param_8 = 0;
  param_4 = param_4 & 0xffff0000;
  _free(param_15);
  if (7 < param_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_12);
  }
  param_14 = 7;
  param_13 = 0;
  param_12 = param_12 & 0xffff0000;
  _free(param_19);
  if (7 < param_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_17);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_0084d990(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            uint param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 param_8;
  uint param_9;
  void *param_10;
  undefined4 param_12;
  uint param_13;
  void *param_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc64f0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00840990(&stack0x00000030,param_2,2);
  FUN_00840990(&param_3,param_2,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  uVar3 = FUN_00884e10(uVar3);
  FUN_0084d410(param_1_00,param_1,uVar2,uVar3);
  _free(param_10);
  if (7 < param_9) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
  param_9 = 7;
  param_8 = 0;
  param_4 = param_4 & 0xffff0000;
  _free(param_14);
  if (7 < param_13) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_12);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_0084da80(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            uint param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 param_8;
  uint param_9;
  void *param_10;
  uint param_12;
  undefined4 param_13;
  uint param_14;
  void *param_15;
  uint param_17;
  undefined4 param_18;
  uint param_19;
  void *param_20;
  undefined4 param_22;
  uint param_23;
  void *param_24;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6530;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  local_4 = 3;
  FUN_00840990(&stack0x00000078,param_2,4);
  FUN_00840990(&stack0x00000054,param_2,3);
  FUN_00840990(&stack0x00000030,param_2,2);
  FUN_00840990(&param_3,param_2,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  uVar3 = FUN_00884e10(uVar3);
  uVar3 = FUN_00884e10(uVar3);
  uVar3 = FUN_00884e10(uVar3);
  FUN_0084d410(param_1_00,param_1,uVar2,uVar3);
  _free(param_10);
  if (7 < param_9) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
  param_9 = 7;
  param_8 = 0;
  param_4 = param_4 & 0xffff0000;
  _free(param_15);
  if (7 < param_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_12);
  }
  param_14 = 7;
  param_13 = 0;
  param_12 = param_12 & 0xffff0000;
  _free(param_20);
  if (7 < param_19) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_17);
  }
  param_19 = 7;
  param_18 = 0;
  param_17 = param_17 & 0xffff0000;
  _free(param_24);
  if (7 < param_23) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_22);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_0084dc30(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,int param_3,
            undefined4 param_4,char param_5)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccd68;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840a00(&param_3,param_2,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20();
  FUN_0084d410(param_1_00,param_1,uVar3,uVar4);
  iVar1 = param_3;
  if ((param_5 != '\0') && (param_3 != 0)) {
    _free(*(void **)(param_3 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



void FUN_0084dd00(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = DAT_032bd460;
  if (DAT_032bd464 == '\0') {
    DAT_032bd460 = param_1;
    DAT_032bd464 = 1;
    return;
  }
  if (DAT_032bd460 != 0) {
    FUN_0084d2b0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  DAT_032bd460 = param_1;
  DAT_032bd464 = 1;
  return;
}



void __thiscall FUN_0084dd60(int param_1_00,undefined4 param_1,int param_2)

{
  char cVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined auStack_f8 [36];
  undefined auStack_d4 [136];
  int iStack_4c;
  uint uStack_48;
  void *pvStack_44;
  uint uStack_38;
  undefined4 uStack_28;
  uint uStack_24;
  void *pvStack_20;
  void *pvStack_14;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc659f;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_f8;
  ExceptionList = &local_c;
  (**(code **)(**(int **)(param_1_00 + 0x24) + 8))();
  FUN_00853f30();
  if (*(int *)(param_1_00 + 0x24) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0();
    }
    goto LAB_0084e0c1;
  }
  iVar2 = FUN_00847250();
  if (iVar2 == -1) {
LAB_0084dede:
    puVar3 = (undefined4 *)(**(code **)(**(int **)(param_1_00 + 0x24) + 4))();
    if (puVar3 == (undefined4 *)0x0) {
      FUN_00852890();
      local_c = (void *)0x2;
      if ((*(int *)(param_2 + 0x14) != iStack_4c) || (iVar2 = FUN_00850760(), iVar2 != 0)) {
        puVar3 = (undefined4 *)(**(code **)(**(int **)(param_1_00 + 0x24) + 4))();
      }
      local_c = (void *)0xffffffff;
      _free(pvStack_44);
      if (7 < uStack_48) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if (puVar3 == (undefined4 *)0x0) {
        FUN_0043c211();
        cVar1 = FUN_00846b30();
        if (cVar1 != '\0') {
          FUN_0083fbe0();
          local_c = (void *)0x3;
          FUN_004325b6();
          local_c._0_1_ = 4;
          FUN_004325a0();
          local_c._0_1_ = 5;
          FUN_004325a0(param_1);
          local_c._0_1_ = 6;
          FUN_008423d0(7,"..\\..\\src\\common\\translation.cpp",0x585,"wxTranslations::LoadCatalog",
                       &DAT_00d25fa0);
          local_c._0_1_ = 8;
          FUN_0084d990(auStack_d4,auStack_f8);
          local_c = (void *)CONCAT31(local_c._1_3_,4);
          FUN_00842440();
          FUN_0040159c();
          local_c = (void *)0xffffffff;
          FUN_0081b5bc();
        }
        goto LAB_0084e0c1;
      }
    }
  }
  else {
    uStack_38 = uStack_38 & 0xffff0000;
    uStack_24 = 7;
    uStack_28 = 0;
    FID_conflict_assign();
    pvStack_20 = (void *)0x0;
    local_c = (void *)0x0;
    FUN_00891ec0();
    local_c._0_1_ = 1;
    FID_conflict_append();
    FID_conflict_append();
    local_c = (void *)((uint)local_c._1_3_ << 8);
    _free(pvStack_44);
    if (7 < uStack_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    puVar3 = (undefined4 *)(**(code **)(**(int **)(param_1_00 + 0x24) + 4))();
    local_c = (void *)0xffffffff;
    _free(pvStack_20);
    if (7 < uStack_24) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (puVar3 == (undefined4 *)0x0) goto LAB_0084dede;
  }
  *puVar3 = *(undefined4 *)(param_1_00 + 0x28);
  *(undefined4 **)(param_1_00 + 0x28) = puVar3;
LAB_0084e0c1:
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0084e0f0(int param_1_00,int param_1,undefined4 param_2,int param_3,int param_4)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  bool bVar4;
  bool bVar5;
  undefined auStack_204 [4];
  undefined2 local_200;
  undefined4 local_1f0;
  undefined *local_1ec;
  undefined4 local_1e8;
  undefined4 uStack_1e4;
  undefined2 local_1dc;
  undefined4 local_1cc;
  undefined *local_1c8;
  undefined4 local_1c4;
  undefined4 uStack_1c0;
  undefined2 local_1b8;
  undefined4 local_1a8;
  int local_1a4;
  undefined *local_1a0;
  undefined *puStack_19c;
  undefined auStack_198 [4];
  undefined2 local_194;
  undefined4 local_184;
  undefined *local_180;
  undefined *local_17c;
  undefined *local_15c;
  undefined local_154 [4];
  uint local_150;
  undefined4 local_140;
  uint local_13c;
  void *local_138;
  undefined local_130 [4];
  uint local_12c;
  undefined4 local_11c;
  uint local_118;
  void *local_114;
  undefined *local_10c;
  undefined *local_108;
  undefined local_104 [4];
  uint local_100;
  undefined4 local_f0;
  uint local_ec;
  void *local_e8;
  undefined local_e0 [4];
  uint local_dc;
  undefined4 local_cc;
  uint local_c8;
  void *local_c4;
  undefined local_bc [4];
  uint local_b8;
  undefined4 local_a8;
  uint local_a4;
  void *local_a0;
  undefined local_98 [20];
  undefined local_84 [20];
  undefined local_70 [100];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc66e3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x14) == 0) goto LAB_0084e5fe;
  if (*(int *)(param_4 + 0x14) == 0) {
    piVar3 = *(int **)(param_1_00 + 0x28);
    if (piVar3 != (int *)0x0) {
      do {
        local_17c = (undefined *)param_1;
        local_180 = (undefined *)0x84e176;
        iVar2 = FUN_0084b730();
        if (iVar2 != 0) {
          ExceptionList = local_c;
          return;
        }
        piVar3 = (int *)*piVar3;
        iVar2 = 0;
      } while (piVar3 != (int *)0x0);
      goto LAB_0084e184;
    }
  }
  else {
    local_17c = (undefined *)0x84e149;
    iVar2 = FUN_0084b9f0();
    if (iVar2 != 0) {
      local_17c = (undefined *)param_1;
      local_180 = (undefined *)0x84e15d;
      iVar2 = FUN_0084b730();
LAB_0084e184:
      if (iVar2 != 0) {
        ExceptionList = local_c;
        return;
      }
    }
  }
  puStack_19c = &DAT_00d25fa0;
  local_1a0 = (undefined *)0x84e19f;
  FUN_0043c211();
  puStack_19c = (undefined *)0x7;
  local_1a0 = (undefined *)0x84e1aa;
  cVar1 = FUN_00846b30();
  if (cVar1 != '\0') {
    bVar4 = *(int *)(param_4 + 0x14) == 0;
    if (bVar4) {
      local_13c = 7;
      local_140 = 0;
      local_150 = local_150 & 0xffff0000;
      local_138 = (void *)0x0;
      local_15c = local_154;
      local_4 = 2;
    }
    else {
      local_17c = (undefined *)0x84e1d2;
      FUN_0083fbe0();
      puStack_19c = (undefined *)0xffffffff;
      local_180 = (undefined *)0x7;
      local_184 = 0;
      local_1a0 = (undefined *)0x0;
      local_194 = 0;
      local_1a4 = param_4;
      local_4 = 0;
      local_1a8 = 0x84e209;
      FID_conflict_assign();
      puStack_19c = local_70;
      local_1a0 = local_e0;
      local_17c = (undefined *)0x0;
      local_1a4 = 0x84e221;
      local_15c = (undefined *)FUN_0084ae90();
      local_4 = 1;
    }
    bVar5 = param_3 == -1;
    if (bVar5) {
      local_118 = 7;
      local_11c = 0;
      local_12c = local_12c & 0xffff0000;
      local_114 = (void *)0x0;
      local_1ec = local_130;
      local_4 = 5;
    }
    else {
      local_17c = (undefined *)0x84e284;
      FUN_0083fbe0();
      local_17c = local_98;
      local_180 = local_bc;
      local_4 = 3;
      local_184 = 0x84e2aa;
      local_1ec = (undefined *)FUN_0084aae0();
      local_4 = 4;
    }
    local_17c = (undefined *)0x84e2f9;
    FUN_0083fbe0();
    local_4 = 6;
    local_17c = (undefined *)0x84e312;
    FUN_004325b6();
    local_108 = auStack_198;
    puStack_19c = (undefined *)0xffffffff;
    local_180 = (undefined *)0x7;
    local_184 = 0;
    local_1a0 = (undefined *)0x0;
    local_194 = 0;
    local_4._0_1_ = 7;
    local_1a8 = 0x84e341;
    local_1a4 = param_1_00;
    FID_conflict_assign();
    local_17c = (undefined *)0x0;
    uStack_1c0 = 0xffffffff;
    local_1c4 = 0;
    local_1c8 = local_15c;
    local_1a4 = 7;
    local_1a8 = 0;
    local_4._0_1_ = 8;
    local_1b8 = 0;
    local_1cc = 0x84e370;
    FID_conflict_assign();
    local_1a0 = (undefined *)0x0;
    uStack_1e4 = 0xffffffff;
    local_1e8 = 0;
    local_1c8 = (undefined *)0x7;
    local_1cc = 0;
    local_4._0_1_ = 9;
    local_1dc = 0;
    local_1f0 = 0x84e39e;
    FID_conflict_assign();
    local_1c4 = 0;
    local_10c = auStack_204;
    local_1ec = (undefined *)0x7;
    local_1f0 = 0;
    local_4._0_1_ = 10;
    local_200 = 0;
    FID_conflict_assign(param_1,0,0xffffffff);
    local_1e8 = 0;
    local_4._0_1_ = 0xb;
    FUN_008423d0(7,"..\\..\\src\\common\\translation.cpp",0x5da,"wxTranslations::GetString",
                 &DAT_00d25fa0);
    local_4._0_1_ = 0xd;
    FUN_0084da80(local_104,local_84);
    local_4._0_1_ = 7;
    FUN_00842440();
    local_17c = (undefined *)0x84e447;
    _free(local_e8);
    if (7 < local_ec) {
                    // WARNING: Subroutine does not return
      local_17c = &UNK_0084e462;
      FUN_00a3f6a1();
    }
    local_100 = local_100 & 0xffff0000;
    local_ec = 7;
    local_f0 = 0;
    local_4 = CONCAT31(local_4._1_3_,5);
    FUN_0081b5bc();
    if (bVar5) {
      local_17c = (undefined *)0x84e4a4;
      _free(local_114);
      if (7 < local_118) {
                    // WARNING: Subroutine does not return
        local_17c = &UNK_0084e4b7;
        FUN_00a3f6a1();
      }
      local_118 = 7;
      local_11c = 0;
      local_12c = local_12c & 0xffff0000;
    }
    if (!bVar5) {
      local_17c = (undefined *)0x84e4e2;
      _free(local_a0);
      if (7 < local_a4) {
                    // WARNING: Subroutine does not return
        local_17c = &UNK_0084e4fb;
        FUN_00a3f6a1();
      }
      local_a4 = 7;
      local_a8 = 0;
      local_b8 = local_b8 & 0xffff0000;
    }
    local_4 = 2;
    if (!bVar5) {
      FUN_0081b5bc();
    }
    if (bVar4) {
      local_17c = (undefined *)0x84e54f;
      _free(local_138);
      if (7 < local_13c) {
                    // WARNING: Subroutine does not return
        local_17c = &UNK_0084e562;
        FUN_00a3f6a1();
      }
      local_13c = 7;
      local_140 = 0;
      local_150 = local_150 & 0xffff0000;
    }
    if (!bVar4) {
      local_17c = (undefined *)0x84e58d;
      _free(local_c4);
      if (7 < local_c8) {
                    // WARNING: Subroutine does not return
        local_17c = &UNK_0084e5a6;
        FUN_00a3f6a1();
      }
      local_c8 = 7;
      local_cc = 0;
      local_dc = local_dc & 0xffff0000;
    }
    local_4 = 0xffffffff;
    if (!bVar4) {
      FUN_0081b5bc();
    }
  }
LAB_0084e5fe:
  local_17c = (undefined *)0x84e604;
  FUN_0084d360();
  ExceptionList = local_c;
  return;
}



void FUN_0084e630(undefined4 param_1,undefined4 param_2)

{
  short sVar1;
  char cVar2;
  short *psVar3;
  int iVar4;
  int iVar5;
  undefined auStack_1b0 [4];
  undefined2 local_1ac;
  undefined4 uStack_1a0;
  undefined *local_19c;
  undefined *local_198;
  undefined4 local_194;
  undefined *puStack_190;
  undefined auStack_18c [4];
  uint local_188;
  undefined auStack_154 [3];
  char local_151;
  undefined *local_150;
  undefined *local_14c;
  undefined4 local_148;
  undefined local_144 [4];
  int local_140;
  int local_13c;
  undefined local_134 [4];
  uint local_130;
  undefined4 local_120;
  uint local_11c;
  void *local_118;
  undefined *local_110;
  undefined4 local_10c;
  uint local_104;
  undefined4 local_f4;
  uint local_f0;
  void *local_ec;
  undefined4 local_e0;
  undefined4 local_d0;
  uint local_cc;
  void *local_c8;
  undefined local_c0 [20];
  undefined4 local_ac;
  char *local_a4;
  undefined4 local_a0;
  char *local_9c;
  undefined *local_98;
  __time64_t local_94;
  DWORD local_8c;
  int local_88;
  uint local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  undefined *local_5c;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc67e4;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_154;
  ExceptionList = &local_c;
  local_4 = 0;
  local_148 = param_1;
  local_10c = 0;
  FUN_00853ce0();
  local_10c = 1;
  local_cc = 7;
  local_d0 = 0;
  local_e0._0_2_ = 0;
  local_c8 = (void *)0x0;
  local_4 = 1;
  FUN_0084bd40();
  local_4._0_1_ = 3;
  _free(local_c8);
  if (7 < local_cc) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_14c = auStack_18c;
  puStack_190 = &DAT_00d25fa0;
  local_cc = 7;
  local_d0 = 0;
  local_e0 = (uint)local_e0._2_2_ << 0x10;
  local_194 = 0x84e733;
  FUN_0043c211();
  puStack_190 = (undefined *)0x7;
  local_194 = 0x84e739;
  cVar2 = FUN_00846b30();
  if (cVar2 != '\0') {
    FUN_0083fbe0();
    local_4._0_1_ = 4;
    FUN_004325b6();
    local_14c = auStack_18c;
    local_19c = auStack_18c;
    puStack_190 = (undefined *)0x5c;
    local_194 = 0x3b;
    local_198 = local_144;
    local_4._0_1_ = 5;
    uStack_1a0 = 0x84e78b;
    FUN_008547f0();
    local_150 = auStack_1b0;
    local_198 = (undefined *)0x7;
    local_19c = (undefined *)0x0;
    local_4._0_1_ = 6;
    local_1ac = 0;
    FID_conflict_assign(param_2,0,0xffffffff);
    local_194 = 0;
    local_4._0_1_ = 7;
    FUN_008423d0(7,"..\\..\\src\\common\\translation.cpp",0x6c8,
                 "wxFileTranslationsLoader::GetAvailableTranslations",&DAT_00d25fa0);
    local_4._0_1_ = 9;
    FUN_0084d990(local_134,local_c0);
    local_4._0_1_ = 5;
    FUN_00842440();
    _free(local_118);
    if (7 < local_11c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_11c = 7;
    local_120 = 0;
    local_130 = local_130 & 0xffff0000;
    local_4._0_1_ = 3;
    FUN_0081b5bc();
  }
  local_14c = (undefined *)local_13c;
  iVar4 = local_140;
  iVar5 = local_13c;
  if (local_13c != local_13c + local_140 * 0x24) {
    do {
      if (*(int *)(iVar5 + 0x14) != 0) {
        local_150 = (undefined *)0x0;
        local_4._0_1_ = 10;
        local_14c = (undefined *)iVar5;
        cVar2 = FUN_0089ea80();
        if (cVar2 != '\0') {
          local_40 = 7;
          local_44 = 0;
          local_54 = local_54 & 0xffff0000;
          local_3c = (void *)0x0;
          local_4._0_1_ = 0xb;
          FUN_0043c211();
          local_4._0_1_ = 0xc;
          local_151 = FUN_0089eb40();
          local_4._0_1_ = 0xb;
          _free(local_ec);
          cVar2 = local_151;
          if (7 < local_f0) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          while (cVar2 != '\0') {
            FUN_0081b5f9();
            local_4._0_1_ = 0xd;
            FUN_008531f0();
            local_4._0_1_ = 0xf;
            local_188 = 0x84e973;
            _free(local_ec);
            if (7 < local_f0) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1();
            }
            local_f0 = 7;
            local_f4 = 0;
            local_104 = local_104 & 0xffff0000;
            cVar2 = FUN_0084bab0();
            if (cVar2 != '\0') {
              local_110 = auStack_18c;
              puStack_190 = &DAT_00d25fa0;
              local_194 = 0x84e9c8;
              FUN_0043c211();
              puStack_190 = (undefined *)0x7;
              local_194 = 0x84e9ce;
              cVar2 = FUN_00846b30();
              if (cVar2 != '\0') {
                FUN_0083fbe0();
                psVar3 = &DAT_00d272b4;
                local_130 = local_130 & 0xffff0000;
                local_4._0_1_ = 0x10;
                local_11c = 7;
                local_120 = 0;
                do {
                  sVar1 = *psVar3;
                  psVar3 = psVar3 + 1;
                } while (sVar1 != 0);
                FID_conflict_assign();
                local_118 = (void *)0x0;
                local_110 = auStack_18c;
                puStack_190 = (undefined *)0xffffffff;
                local_194 = 0;
                local_198 = (undefined *)param_2;
                local_4._0_1_ = 0x11;
                local_188 = local_188 & 0xffff0000;
                local_19c = (undefined *)0x84ea5a;
                FID_conflict_assign();
                local_5c = auStack_1b0;
                local_198 = (undefined *)0x7;
                local_19c = (undefined *)0x0;
                local_4._0_1_ = 0x12;
                local_1ac = 0;
                FID_conflict_assign(local_58,0,0xffffffff);
                local_194 = 0;
                local_4._0_1_ = 0x13;
                local_ac = 7;
                local_a4 = "..\\..\\src\\common\\translation.cpp";
                local_9c = "wxFileTranslationsLoader::GetAvailableTranslations";
                local_a0 = 0x6e4;
                local_98 = &DAT_00d25fa0;
                local_94 = __time64((__time64_t *)0x0);
                local_8c = GetCurrentThreadId();
                local_88 = 0;
                local_6c = 7;
                local_70 = 0;
                local_80 = local_80 & 0xffff0000;
                local_68 = (void *)0x0;
                local_4._0_1_ = 0x15;
                FUN_0084d990(local_134,local_c0);
                local_4._0_1_ = 0x11;
                _free(local_68);
                if (7 < local_6c) {
                    // WARNING: Subroutine does not return
                  FUN_00a3f6a1();
                }
                local_80 = local_80 & 0xffff0000;
                local_6c = 7;
                local_70 = 0;
                if (local_88 != 0) {
                  FUN_00841af0();
                    // WARNING: Subroutine does not return
                  FUN_00a3f6a1();
                }
                _free(local_118);
                if (7 < local_11c) {
                    // WARNING: Subroutine does not return
                  FUN_00a3f6a1();
                }
                local_130 = local_130 & 0xffff0000;
                local_11c = 7;
                local_120 = 0;
                local_4._0_1_ = 0xf;
                FUN_0081b5bc();
                iVar5 = (int)local_14c;
              }
              FUN_00854700();
            }
            local_4._0_1_ = 0xb;
            _free(local_18);
            if (7 < local_1c) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1();
            }
            cVar2 = FUN_0089ea00();
          }
          _free(local_3c);
          if (7 < local_40) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          local_40 = 7;
          local_44 = 0;
          local_54 = local_54 & 0xffff0000;
        }
        local_4._0_1_ = 3;
        FUN_0089e9e0();
        iVar4 = local_140;
      }
      local_14c = (undefined *)(iVar5 + 0x24);
      iVar5 = (int)local_14c;
    } while (local_14c != (undefined *)(local_13c + iVar4 * 0x24));
  }
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00853f30();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0084ed00(undefined4 param_1)

{
  char cVar1;
  int iVar2;
  undefined auStack_174 [4];
  undefined2 local_170;
  undefined4 local_160;
  undefined4 local_15c;
  undefined4 local_158;
  undefined4 uStack_154;
  undefined auStack_150 [4];
  undefined2 local_14c;
  undefined4 uStack_144;
  undefined4 uStack_140;
  char *local_13c;
  undefined *local_138;
  char *local_134;
  undefined *puStack_130;
  undefined auStack_12c [4];
  undefined2 local_128;
  undefined4 local_118;
  undefined *local_114;
  undefined *local_110;
  undefined auStack_f4 [3];
  undefined local_f1;
  undefined *local_f0;
  undefined *local_ec;
  undefined local_e8 [4];
  uint local_e4;
  undefined4 local_d4;
  uint local_d0;
  void *local_cc;
  undefined local_c4 [20];
  undefined *local_b0;
  undefined *local_ac;
  undefined local_58 [4];
  uint local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [20];
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc689e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_f4;
  ExceptionList = &local_c;
  local_110 = local_34;
  local_114 = (undefined *)0x84ed5d;
  FUN_00848090();
  local_110 = (undefined *)param_1;
  local_114 = local_58;
  local_4 = 0;
  local_118 = 0x84ed81;
  FUN_0084b8a0();
  local_4._0_1_ = 1;
  if (local_44 == 0) {
    puStack_130 = &DAT_00d25fa0;
    local_134 = (char *)0x84eda9;
    local_f0 = auStack_12c;
    FUN_0043c211();
    puStack_130 = (undefined *)0x7;
    local_134 = (undefined *)0x84edb4;
    cVar1 = FUN_00846b30();
    if (cVar1 != '\0') {
      local_110 = (undefined *)0x84edcd;
      FUN_0081c0f1();
      local_4._0_1_ = 2;
      local_110 = (undefined *)0x84ede3;
      FUN_004325b6();
      local_f0 = auStack_12c;
      puStack_130 = (undefined *)0xffffffff;
      local_114 = (undefined *)0x7;
      local_118 = 0;
      local_134 = (char *)0x0;
      local_128 = 0;
      local_138 = (undefined *)param_1;
      local_4._0_1_ = 3;
      local_13c = (char *)0x84ee0b;
      FID_conflict_assign();
      local_110 = (undefined *)0x0;
      puStack_130 = &DAT_00d25fa0;
      local_134 = "wxTranslations::AddCatalog";
      local_138 = (undefined *)0x53f;
      local_13c = "..\\..\\src\\common\\translation.cpp";
      uStack_140 = 7;
      local_4._0_1_ = 4;
      uStack_144 = 0x84ee37;
      FUN_008423d0();
      puStack_130 = local_c4;
      local_134 = local_e8;
      local_4._0_1_ = 6;
      local_138 = (undefined *)0x84ee58;
      FUN_0084d7a0();
      local_4._0_1_ = 3;
      FUN_00842440();
      local_110 = (undefined *)0x84ee73;
      _free(local_cc);
      if (7 < local_d0) {
                    // WARNING: Subroutine does not return
        local_110 = &UNK_0084ee8b;
        FUN_00a3f6a1();
      }
      local_e4 = local_e4 & 0xffff0000;
      local_d0 = 7;
      local_d4 = 0;
      local_4._0_1_ = 1;
      FUN_0081b5bc();
    }
    local_110 = (undefined *)0x84eec2;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      local_110 = &UNK_0084eedb;
      FUN_00a3f6a1();
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    local_110 = (undefined *)0x84ef03;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      local_110 = &UNK_0084ef1c;
      FUN_00a3f6a1();
    }
  }
  else {
    puStack_130 = &DAT_00d25fa0;
    local_134 = (char *)0x84ef34;
    local_ec = auStack_12c;
    FUN_0043c211();
    puStack_130 = (undefined *)0x7;
    local_134 = (undefined *)0x84ef3f;
    cVar1 = FUN_00846b30();
    if (cVar1 != '\0') {
      local_110 = (undefined *)0x84ef58;
      FUN_0081c0f1();
      local_4._0_1_ = 7;
      local_110 = (undefined *)0x84ef6e;
      FUN_004325b6();
      local_ec = auStack_12c;
      puStack_130 = (undefined *)0xffffffff;
      local_114 = (undefined *)0x7;
      local_118 = 0;
      local_134 = (char *)0x0;
      local_138 = local_34;
      local_128 = 0;
      local_4._0_1_ = 8;
      local_13c = (char *)0x84ef9d;
      FID_conflict_assign();
      local_110 = (undefined *)0x0;
      local_ac = auStack_150;
      uStack_154 = 0xffffffff;
      local_158 = 0;
      local_138 = (undefined *)0x7;
      local_13c = (char *)0x0;
      local_15c = param_1;
      local_4._0_1_ = 9;
      local_14c = 0;
      local_160 = 0x84efcb;
      FID_conflict_assign();
      local_134 = (undefined *)0x0;
      local_b0 = auStack_174;
      local_15c = 7;
      local_160 = 0;
      local_170 = 0;
      local_4._0_1_ = 10;
      FID_conflict_assign(local_58,0,0xffffffff);
      local_158 = 0;
      local_4._0_1_ = 0xb;
      FUN_008423d0(7,"..\\..\\src\\common\\translation.cpp",0x545,"wxTranslations::AddCatalog",
                   &DAT_00d25fa0);
      local_4._0_1_ = 0xd;
      FUN_0084d840(local_e8,local_c4);
      local_4._0_1_ = 8;
      FUN_00842440();
      local_110 = (undefined *)0x84f06e;
      _free(local_cc);
      if (7 < local_d0) {
                    // WARNING: Subroutine does not return
        local_110 = &UNK_0084f082;
        FUN_00a3f6a1();
      }
      local_d0 = 7;
      local_d4 = 0;
      local_e4 = local_e4 & 0xffff0000;
      local_4._0_1_ = 1;
      FUN_0081b5bc();
    }
    if (local_20 == local_44) {
      local_110 = (undefined *)0x84f0d1;
      iVar2 = FUN_00850760();
      if (iVar2 == 0) {
        local_110 = (undefined *)0x84f0e7;
        _free(local_3c);
        if (7 < local_40) {
                    // WARNING: Subroutine does not return
          local_110 = &UNK_0084f105;
          FUN_00a3f6a1();
        }
        local_40 = 7;
        local_44 = 0;
        local_54 = local_54 & 0xffff0000;
        local_110 = (undefined *)0x84f12d;
        _free(local_18);
        if (7 < local_1c) {
                    // WARNING: Subroutine does not return
          local_110 = &UNK_0084f146;
          FUN_00a3f6a1();
        }
        goto LAB_0084f1d7;
      }
    }
    local_110 = (undefined *)param_1;
    local_114 = (undefined *)0x84f160;
    local_f1 = FUN_0084dd60();
    local_110 = (undefined *)0x84f171;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      local_110 = &UNK_0084f18f;
      FUN_00a3f6a1();
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    local_110 = (undefined *)0x84f1b7;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      local_110 = &UNK_0084f1d0;
      FUN_00a3f6a1();
    }
  }
LAB_0084f1d7:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0084f210(undefined4 param_1,undefined4 param_2)

{
  FUN_0084e0f0(param_1,param_1,0xffffffff,param_2);
  return;
}



undefined4 __thiscall FUN_0084f230(int **param_1_00,int **param_1,int *param_2)

{
  int *piVar1;
  char cVar2;
  undefined4 uVar3;
  int *piVar4;
  uint uVar5;
  char *pcVar6;
  char *pcVar7;
  int iVar8;
  char **local_16c;
  uint local_14c;
  void *local_148;
  uint local_128;
  void *local_124;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc693b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  piVar1 = (int *)**param_1;
  if (((int *)(*param_1)[1] < (int *)0x1d) ||
     ((iVar8 = *piVar1, *(bool *)(param_1_00 + 0xd) = iVar8 == -0x21edfb6b, iVar8 != -0x21edfb6b &&
      (*piVar1 != -0x6afbed22)))) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(2);
    if (cVar2 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      if (DAT_032bd460 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084e0f0();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_008423d0();
      local_4._0_1_ = 3;
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      _free(local_148);
      if (7 < local_14c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(local_124);
      if (7 < local_128) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    uVar3 = 0;
  }
  else {
    if (param_1 != param_1_00) {
      FUN_0043c1dd();
      *param_1_00 = *param_1;
      piVar4 = (int *)FUN_00850350();
      if (*param_1_00 != piVar4) {
        piVar4 = *param_1_00 + 2;
        *(short *)piVar4 = *(short *)piVar4 + 1;
      }
    }
    piVar4 = (int *)piVar1[2];
    if (*(char *)(param_1_00 + 0xd) != '\0') {
      piVar4 = (int *)(((uint)piVar4 & 0xff0000 | (uint)piVar4 >> 0x10) >> 8 |
                      ((int)piVar4 << 0x10 | (uint)piVar4 & 0xff00) << 8);
    }
    param_1_00[1] = piVar4;
    uVar5 = piVar1[3];
    if (*(char *)(param_1_00 + 0xd) != '\0') {
      uVar5 = (uVar5 & 0xff0000 | uVar5 >> 0x10) >> 8 | (uVar5 << 0x10 | uVar5 & 0xff00) << 8;
    }
    param_1_00[2] = (int *)(**param_1 + uVar5);
    uVar5 = piVar1[4];
    if (*(char *)(param_1_00 + 0xd) != '\0') {
      uVar5 = (uVar5 & 0xff0000 | uVar5 >> 0x10) >> 8 | (uVar5 << 0x10 | uVar5 & 0xff00) << 8;
    }
    param_1_00[3] = (int *)(uVar5 + **param_1);
    pcVar6 = (char *)FUN_0084a540();
    if ((pcVar6 != (char *)0x0) && (*pcVar6 == '\0')) {
      pcVar6 = (char *)FUN_0084a540();
      pcVar7 = _strstr(pcVar6,"Content-Type: text/plain; charset=");
      if (pcVar7 != (char *)0x0) {
        pcVar7 = _strchr(pcVar7 + 0x22,10);
        if (pcVar7 != (char *)0x0) {
          FUN_0084b490();
          local_4 = 4;
          FUN_0043261a();
          local_4 = 0xffffffff;
          FUN_0040159c();
          FUN_008507a0();
        }
      }
      pcVar6 = _strstr(pcVar6,"Plural-Forms:");
      if (pcVar6 != (char *)0x0) {
        pcVar6 = pcVar6 + 0xd;
        pcVar7 = _strchr(pcVar6,10);
        if (pcVar7 != (char *)0x0) {
          FUN_0084aa50();
          local_4 = 5;
          _strncpy(*local_16c,pcVar6,(int)pcVar7 - (int)pcVar6);
          iVar8 = FUN_0084d5f0();
          if (iVar8 == 0) {
            FUN_0043c211(&DAT_00d25fa0);
            cVar2 = FUN_00846b30(5);
            if ((cVar2 != '\0') && (DAT_032bcb95 != '\0')) {
              FUN_004325b6();
              local_4._0_1_ = 6;
              FUN_0043c211();
              local_4._0_1_ = 7;
              FUN_00820bf9();
              FUN_008433c0();
              local_4._0_1_ = 8;
              FUN_008423d0();
              local_4._0_1_ = 9;
              FUN_0084bea0();
              local_4._0_1_ = 8;
              FUN_00842440();
              local_4 = CONCAT31(local_4._1_3_,7);
              FUN_0081b5bc();
              FUN_0040159c();
              FUN_0040159c();
            }
          }
          else {
            FUN_0084a600();
          }
          local_4 = 0xffffffff;
          thunk_FUN_0043c1dd();
        }
      }
      if (*param_2 == 0) {
        FUN_0084d5f0();
        FUN_0084a600();
      }
    }
    uVar3 = 1;
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 FUN_0084f710(undefined4 param_1)

{
  void **ppvVar1;
  char cVar2;
  void **ppvVar3;
  void *pvVar4;
  int iVar5;
  longlong lVar6;
  undefined4 uStack_104;
  undefined4 uStack_100;
  char *pcStack_fc;
  undefined4 uStack_f8;
  char *pcStack_f4;
  undefined ***pppuStack_f0;
  undefined **ppuStack_ec;
  char *pcStack_e8;
  int local_cc;
  undefined ***local_c4;
  void **local_c0;
  undefined local_b8 [56];
  undefined local_80 [116];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc69b2;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pcStack_e8 = (char *)param_1;
  ppuStack_ec = (undefined **)0x84f755;
  FUN_00889060();
  local_4 = 0;
  if (local_cc == -1) {
    local_4 = 0xffffffff;
    FUN_008871c0();
  }
  else {
    lVar6 = FUN_00888a70();
    if (lVar6 == -1) {
      local_4 = 0xffffffff;
      FUN_008871c0();
    }
    else {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((int)((ulonglong)lVar6 >> 0x20) != 0)) {
        pcStack_e8 = "nSize == lenFile + size_t(0)";
        ppuStack_ec = (undefined **)0xd275a8;
        pppuStack_f0 = (undefined ***)0x391;
        pcStack_f4 = "..\\..\\src\\common\\translation.cpp";
        uStack_f8 = 0x84f7d4;
        FUN_00840480();
      }
      pcStack_e8 = (char *)0x84f7de;
      ppvVar3 = (void **)operator_new(0x10);
      if (ppvVar3 == (void **)0x0) {
        ppvVar3 = (void **)0x0;
      }
      else {
        pcStack_e8 = (char *)0x84f7f1;
        pvVar4 = _malloc(0x400);
        *ppvVar3 = pvVar4;
        ppvVar3[1] = (void *)0x400;
        ppvVar3[2] = (void *)0x0;
        ppvVar3[3] = (void *)0x0;
      }
      ppvVar3[3] = (void *)((int)ppvVar3[3] + 1);
      local_4._0_1_ = 1;
      ppuStack_ec = (undefined **)0x84f821;
      pcStack_e8 = (char *)(int)lVar6;
      local_c0 = ppvVar3;
      pcStack_e8 = (char *)FUN_0084a2f0();
      ppuStack_ec = (undefined **)0x84f82b;
      iVar5 = FUN_00887390();
      if (lVar6 == iVar5) {
        pcStack_e8 = (char *)0x84f86e;
        FUN_0084a290();
        pcStack_e8 = (char *)FUN_0084a1d0();
        ppuStack_ec = (undefined **)&local_c4;
        pppuStack_f0 = (undefined ***)0x84f881;
        pcStack_e8 = (char *)FUN_0084a970();
        local_4._0_1_ = 2;
        ppuStack_ec = (undefined **)0x84f89e;
        cVar2 = FUN_0084f230();
        local_4._0_1_ = 1;
        thunk_FUN_0043c1dd();
        if (cVar2 != '\0') {
          ppvVar1 = ppvVar3 + 3;
          *ppvVar1 = (void *)((int)*ppvVar1 + -1);
          if (*ppvVar1 == (void *)0x0) {
            pcStack_e8 = (char *)0x84f9d0;
            _free(*ppvVar3);
                    // WARNING: Subroutine does not return
            ppuStack_ec = (undefined **)&UNK_0084f9d6;
            pcStack_e8 = (char *)ppvVar3;
            FUN_00a3f6a1();
          }
          local_4 = 0xffffffff;
          FUN_008871c0();
          ExceptionList = local_c;
          return 1;
        }
        local_c4 = (undefined ***)&uStack_104;
        FUN_0043c211(&DAT_00d25fa0);
        cVar2 = FUN_00846b30(2);
        if (cVar2 != '\0') {
          pcStack_e8 = (char *)0x84f8ee;
          FUN_004325b6();
          local_4._0_1_ = 3;
          pcStack_e8 = (char *)0x84f904;
          FUN_0043c211();
          pcStack_e8 = local_80;
          local_4._0_1_ = 4;
          ppuStack_ec = (undefined **)0x84f91c;
          FUN_00820bf9();
          pcStack_e8 = (char *)0x84f929;
          FUN_008433c0();
          local_c4 = &ppuStack_ec;
          pppuStack_f0 = &ppuStack_ec;
          pcStack_f4 = (char *)0x84f93f;
          FUN_00432231();
          pppuStack_f0 = (undefined ***)&DAT_00d25fa0;
          pcStack_f4 = "wxMsgCatalogFile::LoadFile";
          uStack_f8 = 0x3a2;
          pcStack_fc = "..\\..\\src\\common\\translation.cpp";
          uStack_100 = 2;
          local_4._0_1_ = 6;
          uStack_104 = 0x84f969;
          FUN_008423d0();
          pppuStack_f0 = (undefined ***)local_b8;
          local_4._0_1_ = 8;
          pcStack_f4 = (char *)0x84f985;
          FUN_00848860();
          local_4._0_1_ = 5;
          FUN_00842440();
          local_4._0_1_ = 4;
          FUN_0081b5bc();
          FUN_0040159c();
          FUN_0040159c();
        }
      }
      ppvVar1 = ppvVar3 + 3;
      *ppvVar1 = (void *)((int)*ppvVar1 + -1);
      if (*ppvVar1 == (void *)0x0) {
        pcStack_e8 = (char *)0x84f844;
        _free(*ppvVar3);
                    // WARNING: Subroutine does not return
        ppuStack_ec = (undefined **)&UNK_0084f84a;
        pcStack_e8 = (char *)ppvVar3;
        FUN_00a3f6a1();
      }
      local_4 = 0xffffffff;
      FUN_008871c0();
    }
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_0084fa10(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  void *pvVar3;
  void *local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined2 local_34;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc69fb;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_50;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  local_4c = param_2;
  local_50 = operator_new(0x3c);
  local_4 = 0;
  if (local_50 == (void *)0x0) {
    pvVar3 = (void *)0x0;
  }
  else {
    pvVar3 = (void *)FUN_0084c140(param_2);
  }
  local_4 = 1;
  local_50 = pvVar3;
  local_48 = FUN_00850350(uVar2);
  local_20 = 7;
  local_24 = 0;
  local_34 = 0;
  local_1c = 0;
  local_4._0_1_ = 2;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (pvVar3 == (void *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/scopedptr.h",0x56,
                 "wxScopedPtr<class wxMsgCatalog>::operator ->","m_ptr != 0",0);
  }
  cVar1 = FUN_0084f710(param_1,(int)pvVar3 + 0x38);
  if (cVar1 == '\0') {
    local_4 = CONCAT31(local_4._1_3_,1);
  }
  else {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (pvVar3 == (void *)0x0)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/scopedptr.h",0x56,
                   "wxScopedPtr<class wxMsgCatalog>::operator ->","m_ptr != 0",0);
    }
    cVar1 = FUN_0084cbd0((int)pvVar3 + 4,local_4c);
    local_4 = CONCAT31(local_4._1_3_,1);
    if (cVar1 != '\0') {
      local_50 = (void *)0x0;
      FUN_0084ad90();
      local_4 = 0xffffffff;
      FUN_0084cff0();
      goto LAB_0084fb60;
    }
  }
  FUN_0084ad90();
  local_4 = 0xffffffff;
  FUN_0084cff0();
LAB_0084fb60:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0084fb80(void)

{
  char cVar1;
  undefined *local_94;
  undefined **local_80;
  undefined local_7c [24];
  uint local_64;
  void *local_60;
  undefined local_58 [24];
  uint local_40;
  void *local_3c;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6a48;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  ExceptionList = &local_c;
  local_94 = (undefined *)0x84fbc3;
  FUN_004325b6();
  local_94 = local_7c;
  local_4 = 0;
  cVar1 = FUN_0084ed00();
  local_4 = 0xffffffff;
  local_94 = (undefined *)0x84fbf6;
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    local_94 = &UNK_0084fc0a;
    FUN_00a3f6a1();
  }
  if (cVar1 != '\0') {
    local_94 = (undefined *)0x84fc22;
    FUN_0089e060();
    local_94 = (undefined *)0x84fc29;
    FUN_0084aa20();
    local_4 = 1;
    if (local_20 != 0) {
      local_80 = &local_94;
      local_94 = (undefined *)0x2f;
      FUN_00852890(local_58);
      local_4 = CONCAT31(local_4._1_3_,2);
      local_94 = (undefined *)FUN_008510e0();
      FUN_0084ed00();
      local_94 = (undefined *)0x84fc7b;
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        local_94 = &UNK_0084fc8f;
        FUN_00a3f6a1();
      }
    }
    local_94 = (undefined *)0x84fc9c;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      local_94 = &UNK_0084fcb0;
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0084fce0(undefined4 param_1)

{
  char cVar1;
  undefined4 uStack_1ec;
  undefined4 local_1e8;
  char *pcStack_1e4;
  undefined4 uStack_1e0;
  char *pcStack_1dc;
  undefined *local_1d8;
  undefined *local_1d4;
  undefined4 local_1d0;
  undefined *puStack_1cc;
  undefined4 uStack_1c8;
  undefined4 local_1c4;
  char *pcStack_1c0;
  undefined4 uStack_1bc;
  char *pcStack_1b8;
  undefined auStack_190 [3];
  char local_18d;
  undefined4 *local_18c;
  undefined local_188 [4];
  uint local_184;
  undefined4 local_174;
  uint local_170;
  void *local_16c;
  undefined **local_164;
  undefined local_160 [140];
  undefined4 local_d4;
  undefined4 local_c4;
  uint local_c0;
  void *local_bc;
  undefined local_b4 [24];
  uint local_9c;
  void *local_98;
  int local_24;
  undefined local_13;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6b4c;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_190;
  ExceptionList = &local_c;
  FUN_0084c7f0();
  local_164 = (undefined **)&uStack_1c8;
  puStack_1cc = &DAT_00d25fa0;
  local_4 = 0;
  local_1d0 = 0x84fd53;
  FUN_0043c211();
  puStack_1cc = (undefined *)0x7;
  local_1d0 = 0x84fd5e;
  cVar1 = FUN_00846b30();
  if (cVar1 != '\0') {
    FUN_0081c0f1();
    local_4._0_1_ = 1;
    FUN_004325b6();
    local_164 = (undefined **)&uStack_1c8;
    puStack_1cc = (undefined *)0xffffffff;
    local_1d0 = 0;
    local_1d4 = local_b4;
    local_1c4 = (uint)local_1c4._2_2_ << 0x10;
    local_4._0_1_ = 2;
    local_1d8 = (undefined *)0x84fdbc;
    FID_conflict_assign();
    local_18c = &uStack_1ec;
    local_1d4 = (undefined *)0x7;
    local_1d8 = (undefined *)0x0;
    local_4._0_1_ = 3;
    local_1e8 = (uint)local_1e8._2_2_ << 0x10;
    FID_conflict_assign(param_1,0,0xffffffff);
    local_1d0 = 0;
    local_4._0_1_ = 4;
    FUN_008423d0(7,"..\\..\\src\\common\\translation.cpp",0x6b1,
                 "wxFileTranslationsLoader::LoadCatalog",&DAT_00d25fa0);
    local_4._0_1_ = 6;
    FUN_0084d990(local_188,local_160);
    local_4._0_1_ = 2;
    FUN_00842440();
    _free(local_16c);
    if (7 < local_170) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_170 = 7;
    local_174 = 0;
    local_184 = local_184 & 0xffff0000;
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0081b5bc();
  }
  FUN_00432544();
  local_4._0_1_ = 7;
  FUN_004325b6();
  local_4._0_1_ = 8;
  FID_conflict_assign();
  local_13 = local_24 != 0;
  _free(local_16c);
  if (7 < local_170) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_c0 = 7;
  local_c4 = 0;
  local_d4._0_2_ = 0;
  local_bc = (void *)0x0;
  local_4._0_1_ = 9;
  FUN_008581b0();
  local_4._0_1_ = 10;
  cVar1 = FUN_0085e110();
  local_18d = cVar1 == '\0';
  local_4._0_1_ = 9;
  pcStack_1b8 = (undefined *)0x84ff74;
  _free(local_16c);
  if (7 < local_170) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (local_18d == '\0') {
    local_18c = &uStack_1c8;
    puStack_1cc = &DAT_00d25fa0;
    local_1d0 = 0x85002b;
    FUN_0043c211();
    puStack_1cc = (undefined *)0x5;
    local_1d0 = 0x850032;
    cVar1 = FUN_00846b30();
    if ((cVar1 != '\0') && (DAT_032bcb95 != '\0')) {
      FUN_004325b6();
      local_4._0_1_ = 0xb;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,0xc);
      if (DAT_032bd460 == 0) {
        FUN_0084d360();
      }
      else {
        pcStack_1b8 = (undefined *)0x850094;
        FUN_0084e0f0();
      }
      FUN_008433c0();
      local_18c = (undefined4 *)&stack0xfffffe50;
      pcStack_1b8 = (undefined *)0x8500bf;
      FUN_00432231();
      local_164 = &local_1d4;
      local_1d8 = (undefined *)param_1;
      local_4._0_1_ = 0xe;
      pcStack_1dc = (char *)0x8500d6;
      FUN_004325a0();
      local_1d8 = &DAT_00d25fa0;
      pcStack_1dc = "wxFileTranslationsLoader::LoadCatalog";
      uStack_1e0 = 0x6bc;
      pcStack_1e4 = "..\\..\\src\\common\\translation.cpp";
      local_1e8 = 5;
      local_4._0_1_ = 0xf;
      uStack_1ec = 0x850100;
      FUN_008423d0();
      local_1d8 = local_160;
      local_4._0_1_ = 0x11;
      pcStack_1dc = (char *)0x85011c;
      FUN_0084bf60();
      local_4._0_1_ = 0xd;
      FUN_00842440();
      local_4._0_1_ = 0xc;
      FUN_0081b5bc();
      FUN_0040159c();
      local_4._0_1_ = 9;
      FUN_0040159c();
    }
    local_18c = &uStack_1c8;
    puStack_1cc = &DAT_00d25fa0;
    local_1d0 = 0x85016b;
    FUN_0043c211();
    puStack_1cc = (undefined *)0x7;
    local_1d0 = 0x850171;
    cVar1 = FUN_00846b30();
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4._0_1_ = 0x12;
      FUN_004325b6();
      local_18c = (undefined4 *)&stack0xfffffe50;
      pcStack_1b8 = (char *)0x8501b6;
      FUN_00432231();
      pcStack_1b8 = "wxFileTranslationsLoader::LoadCatalog";
      uStack_1bc = 0x6bd;
      pcStack_1c0 = "..\\..\\src\\common\\translation.cpp";
      local_1c4 = 7;
      local_4._0_1_ = 0x14;
      uStack_1c8 = 0x8501df;
      FUN_008423d0();
      pcStack_1b8 = local_188;
      local_4._0_1_ = 0x16;
      uStack_1bc = 0x850200;
      FUN_0084dc30();
      local_4._0_1_ = 0x13;
      FUN_00842440();
      _free(local_16c);
      if (7 < local_170) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_170 = 7;
      local_174 = 0;
      local_184 = local_184 & 0xffff0000;
      local_4._0_1_ = 9;
      FUN_0081b5bc();
    }
    FUN_0084fa10();
    _free(local_bc);
    if (7 < local_c0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_c0 = 7;
    local_c4 = 0;
    local_d4 = (uint)local_d4._2_2_ << 0x10;
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0043250a();
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  else {
    _free(local_bc);
    if (7 < local_c0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_c0 = 7;
    local_c4 = 0;
    local_d4 = (uint)local_d4._2_2_ << 0x10;
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0043250a();
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * FUN_00850350(void)

{
  if ((_DAT_032bd498 & 1) == 0) {
    _DAT_032bd498 = _DAT_032bd498 | 1;
    DAT_032bd48c = 0;
    _DAT_032bd490 = 0;
    _DAT_032bd494 = 1;
    DAT_032bd496 = 1;
    _atexit((_func_4879 *)&LAB_00c764d0);
  }
  return &DAT_032bd48c;
}



undefined4 __thiscall FUN_00850390(int param_1_00,int *param_1)

{
  undefined4 uVar1;
  int iVar2;
  void *pvVar3;
  undefined4 unaff_EDI;
  int local_4;
  
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    local_4 = param_1_00 + 4;
  }
  else {
    local_4 = *(int *)(param_1_00 + 4);
  }
  uVar1 = *(undefined4 *)(param_1_00 + 0x14);
  iVar2 = (**(code **)(*param_1 + 4))(0,0,local_4,uVar1);
  if (iVar2 != -1) {
    if ((*(int *)(param_1_00 + 0x1c) == 0) || (iVar2 != *(int *)(param_1_00 + 0x20))) {
      pvVar3 = _realloc(*(void **)(param_1_00 + 0x1c),iVar2 + 1);
      if (pvVar3 == (void *)0x0) {
        return 0;
      }
      *(void **)(param_1_00 + 0x1c) = pvVar3;
      *(int *)(param_1_00 + 0x20) = iVar2;
    }
    *(undefined *)(iVar2 + *(int *)(param_1_00 + 0x1c)) = 0;
    iVar2 = (**(code **)(*param_1 + 4))(*(undefined4 *)(param_1_00 + 0x1c),iVar2,unaff_EDI,uVar1);
    if (iVar2 != -1) {
      return *(undefined4 *)(param_1_00 + 0x1c);
    }
  }
  return 0;
}



void FUN_00850430(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 local_8;
  undefined4 local_4;
  
  FUN_00820ebc(&local_8,param_3,param_4);
  FUN_004129cd(param_1,param_2,local_8,local_4);
  return;
}



int __thiscall FUN_00850470(int param_1_00,int param_1)

{
  wchar_t *pwVar1;
  wchar_t *pwVar2;
  wchar_t wVar3;
  int iVar4;
  wchar_t *pwVar5;
  wchar_t *_Str1;
  wchar_t *_Str2;
  
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    _Str1 = (wchar_t *)(param_1_00 + 4);
  }
  else {
    _Str1 = *(wchar_t **)(param_1_00 + 4);
  }
  if (*(uint *)(param_1 + 0x18) < 8) {
    _Str2 = (wchar_t *)(param_1 + 4);
  }
  else {
    _Str2 = *(wchar_t **)(param_1 + 4);
  }
  pwVar1 = _Str1 + *(int *)(param_1_00 + 0x14);
  pwVar2 = _Str2 + *(int *)(param_1 + 0x14);
  iVar4 = __wcsicmp(_Str1,_Str2);
  if (iVar4 != 0) {
    return iVar4;
  }
  do {
    if (_Str1 == (wchar_t *)0x0) {
      iVar4 = 0;
    }
    else {
      pwVar5 = _Str1;
      do {
        wVar3 = *pwVar5;
        pwVar5 = pwVar5 + 1;
      } while (wVar3 != L'\0');
      iVar4 = (int)pwVar5 - (int)(_Str1 + 1) >> 1;
    }
    _Str1 = _Str1 + iVar4;
    _Str2 = _Str2 + iVar4;
    wVar3 = *_Str1;
    while (wVar3 == L'\0') {
      if (_Str1 == pwVar1) {
        return -(uint)(_Str2 != pwVar2);
      }
      if (_Str2 == pwVar2) {
        return 1;
      }
      if (*_Str2 != L'\0') {
        return -1;
      }
      _Str1 = _Str1 + 1;
      _Str2 = _Str2 + 1;
      wVar3 = *_Str1;
    }
    iVar4 = __wcsicmp(_Str1,_Str2);
    if (iVar4 != 0) {
      return iVar4;
    }
  } while( true );
}



void __fastcall FUN_00850540(undefined4 *param_1)

{
  _free((void *)param_1[2]);
  param_1[2] = 0;
  param_1[1] = 0;
  *param_1 = 0;
  return;
}



void __thiscall FUN_00850560(uint *param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  void *pvVar3;
  uint uVar4;
  
  uVar2 = *param_1_00;
  uVar4 = uVar2 + 1;
  if (param_1_00[1] < uVar4) {
    if (uVar2 == 0) {
      uVar2 = 0x10;
    }
    else if (0xfff < uVar2) {
      uVar2 = 0x1000;
    }
    uVar2 = uVar2 + param_1_00[1];
    if (uVar4 < uVar2) {
      uVar4 = uVar2;
    }
    pvVar3 = _realloc((void *)param_1_00[2],uVar4 << 4);
    param_1_00[2] = (uint)pvVar3;
    param_1_00[1] = uVar4;
  }
  puVar1 = (undefined4 *)(param_1_00[2] + *param_1_00 * 4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = *param_1;
  }
  *param_1_00 = *param_1_00 + 1;
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void __thiscall FUN_008505d0(void **param_1_00,int *param_1)

{
  size_t _Size;
  undefined4 *puVar1;
  void *pvVar2;
  void *_Src;
  void **ppvVar3;
  void *_Dst;
  
  FUN_0043c1dd();
  if ((_DAT_032bd498 & 1) == 0) {
    _DAT_032bd498 = _DAT_032bd498 | 1;
    DAT_032bd48c = 0;
    _DAT_032bd490 = 0;
    _DAT_032bd494 = 1;
    DAT_032bd496 = 1;
    _atexit((_func_4879 *)&LAB_00c764d0);
  }
  puVar1 = (undefined4 *)*param_1;
  if (puVar1 == &DAT_032bd48c) {
    if ((_DAT_032bd498 & 1) == 0) {
      _DAT_032bd498 = _DAT_032bd498 | 1;
      DAT_032bd48c = 0;
      _DAT_032bd490 = 0;
      _DAT_032bd494 = 1;
      DAT_032bd496 = 1;
      _atexit((_func_4879 *)&LAB_00c764d0);
    }
    *param_1_00 = &DAT_032bd48c;
    return;
  }
  if (*(char *)((int)puVar1 + 10) != '\0') {
    *param_1_00 = puVar1;
    FUN_0043c126();
    return;
  }
  ppvVar3 = (void **)operator_new(0xc);
  if (ppvVar3 != (void **)0x0) {
    pvVar2 = ((void **)*param_1)[1];
    _Src = *(void **)*param_1;
    _Size = (int)pvVar2 * 2 + 2;
    _Dst = _malloc(_Size);
    _memcpy(_Dst,_Src,_Size);
    *ppvVar3 = _Dst;
    ppvVar3[1] = pvVar2;
    *(undefined2 *)(ppvVar3 + 2) = 1;
    *(undefined *)((int)ppvVar3 + 10) = 1;
    *param_1_00 = ppvVar3;
    return;
  }
  *param_1_00 = (void *)0x0;
  return;
}



undefined4 __thiscall FUN_008506f0(int param_1_00,int param_1,int param_2)

{
  wint_t wVar1;
  wint_t wVar2;
  bool bVar3;
  
  if (*(int *)(param_1_00 + 0x14) == 1) {
    if ((char)param_2 == '\0') {
      wVar1 = _towupper((wint_t)param_1);
      FUN_0081feb2(&param_2,0);
      wVar2 = _towupper((wint_t)param_2);
      bVar3 = wVar2 == wVar1;
    }
    else {
      FUN_0081feb2(&param_2,0);
      bVar3 = param_2 == param_1;
    }
    if (bVar3) {
      return 1;
    }
  }
  return 0;
}



void __thiscall FUN_00850760(int param_1_00,int param_1)

{
  if (7 < *(uint *)(param_1 + 0x18)) {
    FUN_004129cd(0,*(undefined4 *)(param_1_00 + 0x14),*(undefined4 *)(param_1 + 4),
                 *(undefined4 *)(param_1 + 0x14));
    return;
  }
  FUN_004129cd(0,*(undefined4 *)(param_1_00 + 0x14),param_1 + 4,*(undefined4 *)(param_1 + 0x14));
  return;
}



void __thiscall FUN_008507a0(int param_1_00,short *param_1)

{
  short sVar1;
  short *psVar2;
  
  if (param_1 == (short *)0x0) {
    param_1 = &DAT_00fae9c8;
  }
  psVar2 = param_1;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  FUN_004129cd(0,*(undefined4 *)(param_1_00 + 0x14),param_1,(int)psVar2 - (int)(param_1 + 1) >> 1);
  return;
}



undefined4 __fastcall FUN_008507e0(int param_1)

{
  ushort **ppuVar1;
  uint uVar2;
  ushort **ppuVar3;
  int iVar4;
  ushort **ppuVar5;
  ushort **local_4;
  
  uVar2 = *(uint *)(param_1 + 0x18);
  ppuVar1 = (ushort **)(param_1 + 4);
  local_4 = ppuVar1;
  if (7 < uVar2) {
    local_4 = (ushort **)*ppuVar1;
  }
  if (local_4 != (ushort **)0x0) {
    ppuVar3 = ppuVar1;
    if (7 < uVar2) {
      ppuVar3 = (ushort **)*ppuVar1;
    }
    if (ppuVar3 <= local_4) {
      ppuVar3 = ppuVar1;
      if (7 < uVar2) {
        ppuVar3 = (ushort **)*ppuVar1;
      }
      if (local_4 <= (ushort **)((int)ppuVar3 + *(int *)(param_1 + 0x14) * 2)) goto LAB_00850830;
    }
  }
  FUN_00a3fb10();
LAB_00850830:
  do {
    uVar2 = *(uint *)(param_1 + 0x18);
    ppuVar3 = ppuVar1;
    if (7 < uVar2) {
      ppuVar3 = (ushort **)*ppuVar1;
    }
    iVar4 = *(int *)(param_1 + 0x14) * 2;
    ppuVar3 = (ushort **)(iVar4 + (int)ppuVar3);
    if (ppuVar3 == (ushort **)0x0) {
LAB_0085086a:
      FUN_00a3fb10();
    }
    else {
      ppuVar5 = ppuVar1;
      if (7 < uVar2) {
        ppuVar5 = (ushort **)*ppuVar1;
      }
      if (ppuVar3 < ppuVar5) goto LAB_0085086a;
      ppuVar5 = ppuVar1;
      if (7 < uVar2) {
        ppuVar5 = (ushort **)*ppuVar1;
      }
      if ((ushort **)(iVar4 + (int)ppuVar5) < ppuVar3) goto LAB_0085086a;
    }
    if ((param_1 != -4) && (param_1 == 0)) {
      FUN_00a3fb10();
    }
    if (local_4 == ppuVar3) {
      return 1;
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((ushort **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= local_4) {
        FUN_00a3fb10();
      }
    }
    if (0x7f < *(ushort *)local_4) {
      return 0;
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((ushort **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= local_4) {
        FUN_00a3fb10();
      }
    }
    local_4 = (ushort **)((int)local_4 + 2);
  } while( true );
}



undefined4 FUN_00850910(ushort param_1,char param_2)

{
  undefined4 uVar1;
  
  _param_2 = (uint)param_1;
  if (param_2 == '\0') {
    uVar1 = FUN_00420f3f(&param_2,0,1);
  }
  else {
    uVar1 = FUN_007433d1(&param_2,0xffffffff,1);
  }
  return uVar1;
}



uint __thiscall FUN_00850950(int param_1_00,int **param_1,wchar_t *param_2)

{
  wchar_t *_Radix;
  int *in_EAX;
  int *piVar1;
  wchar_t *_Str;
  
  _Radix = param_2;
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 != (wchar_t *)0x0)) &&
     (((int)param_2 < 2 || (0x24 < (int)param_2)))) {
    in_EAX = (int *)FUN_00840480("..\\..\\src\\common\\string.cpp",0x6aa,"wxString::ToLong",
                                 "!base || (base > 1 && base <= 36)",L"invalid base");
  }
  if (param_1 == (int **)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      in_EAX = (int *)FUN_00840480("..\\..\\src\\common\\string.cpp",0x6ac,"wxString::ToLong",
                                   &DAT_00d27800,L"NULL output pointer");
    }
  }
  else {
    piVar1 = __errno();
    *piVar1 = 0;
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      _Str = (wchar_t *)(param_1_00 + 4);
    }
    else {
      _Str = *(wchar_t **)(param_1_00 + 4);
    }
    piVar1 = (int *)_wcstol(_Str,&param_2,(int)_Radix);
    in_EAX = piVar1;
    if (param_2 != _Str) {
      in_EAX = __errno();
      if (*in_EAX != 0x22) {
        *param_1 = piVar1;
        return (uint)(*param_2 == L'\0');
      }
    }
  }
  return (uint)in_EAX & 0xffffff00;
}



uint __thiscall FUN_00850a20(int param_1_00,int **param_1,wchar_t *param_2)

{
  wchar_t *_Radix;
  int *in_EAX;
  int *piVar1;
  wchar_t *_Str;
  
  _Radix = param_2;
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 != (wchar_t *)0x0)) &&
     (((int)param_2 < 2 || (0x24 < (int)param_2)))) {
    in_EAX = (int *)FUN_00840480("..\\..\\src\\common\\string.cpp",0x6b3,"wxString::ToULong",
                                 "!base || (base > 1 && base <= 36)",L"invalid base");
  }
  if (param_1 == (int **)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      in_EAX = (int *)FUN_00840480("..\\..\\src\\common\\string.cpp",0x6b5,"wxString::ToULong",
                                   &DAT_00d27800,L"NULL output pointer");
    }
  }
  else {
    piVar1 = __errno();
    *piVar1 = 0;
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      _Str = (wchar_t *)(param_1_00 + 4);
    }
    else {
      _Str = *(wchar_t **)(param_1_00 + 4);
    }
    piVar1 = (int *)_wcstoul(_Str,&param_2,(int)_Radix);
    in_EAX = piVar1;
    if (param_2 != _Str) {
      in_EAX = __errno();
      if (*in_EAX != 0x22) {
        *param_1 = piVar1;
        return (uint)(*param_2 == L'\0');
      }
    }
  }
  return (uint)in_EAX & 0xffffff00;
}



uint __thiscall FUN_00850af0(int param_1_00,longlong *param_1,wchar_t *param_2)

{
  wchar_t *_Radix;
  uint in_EAX;
  int *piVar1;
  wchar_t *_Str;
  longlong lVar2;
  
  _Radix = param_2;
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 != (wchar_t *)0x0)) &&
     (((int)param_2 < 2 || (0x24 < (int)param_2)))) {
    in_EAX = FUN_00840480("..\\..\\src\\common\\string.cpp",0x6bc,"wxString::ToLongLong",
                          "!base || (base > 1 && base <= 36)",L"invalid base");
  }
  if (param_1 != (longlong *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0;
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      _Str = (wchar_t *)(param_1_00 + 4);
    }
    else {
      _Str = *(wchar_t **)(param_1_00 + 4);
    }
    lVar2 = __wcstoi64(_Str,&param_2,(int)_Radix);
    piVar1 = (int *)lVar2;
    if (param_2 != _Str) {
      piVar1 = __errno();
      if (*piVar1 != 0x22) {
        *param_1 = lVar2;
        return (uint)(*param_2 == L'\0');
      }
    }
    return (uint)piVar1 & 0xffffff00;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    in_EAX = FUN_00840480("..\\..\\src\\common\\string.cpp",0x6be,"wxString::ToLongLong",
                          &DAT_00d27800,L"NULL output pointer");
  }
  return in_EAX & 0xffffff00;
}



uint __thiscall FUN_00850bd0(int param_1_00,ulonglong *param_1,wchar_t *param_2)

{
  wchar_t *_Radix;
  uint in_EAX;
  int *piVar1;
  wchar_t *_Str;
  ulonglong uVar2;
  
  _Radix = param_2;
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 != (wchar_t *)0x0)) &&
     (((int)param_2 < 2 || (0x24 < (int)param_2)))) {
    in_EAX = FUN_00840480("..\\..\\src\\common\\string.cpp",0x6c5,"wxString::ToULongLong",
                          "!base || (base > 1 && base <= 36)",L"invalid base");
  }
  if (param_1 != (ulonglong *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0;
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      _Str = (wchar_t *)(param_1_00 + 4);
    }
    else {
      _Str = *(wchar_t **)(param_1_00 + 4);
    }
    uVar2 = __wcstoui64(_Str,&param_2,(int)_Radix);
    piVar1 = (int *)uVar2;
    if (param_2 != _Str) {
      piVar1 = __errno();
      if (*piVar1 != 0x22) {
        *param_1 = uVar2;
        return (uint)(*param_2 == L'\0');
      }
    }
    return (uint)piVar1 & 0xffffff00;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    in_EAX = FUN_00840480("..\\..\\src\\common\\string.cpp",0x6c7,"wxString::ToULongLong",
                          &DAT_00d27800,L"NULL output pointer");
  }
  return in_EAX & 0xffffff00;
}



uint __thiscall FUN_00850cb0(int param_1_00,double *param_1)

{
  double *pdVar1;
  int *in_EAX;
  int *piVar2;
  double *pdVar3;
  float10 extraout_ST0;
  
  pdVar1 = param_1;
  if (param_1 == (double *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      in_EAX = (int *)FUN_00840480("..\\..\\src\\common\\string.cpp",0x6ce,"wxString::ToDouble",
                                   &DAT_00d27800,L"NULL output pointer");
    }
  }
  else {
    piVar2 = __errno();
    *piVar2 = 0;
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      pdVar3 = (double *)(param_1_00 + 4);
    }
    else {
      pdVar3 = *(double **)(param_1_00 + 4);
    }
    in_EAX = (int *)FUN_00a47f1d(pdVar3,&param_1);
    if (param_1 != pdVar3) {
      in_EAX = __errno();
      if (*in_EAX != 0x22) {
        *pdVar1 = (double)extraout_ST0;
        return (uint)(*(short *)param_1 == 0);
      }
    }
  }
  return (uint)in_EAX & 0xffffff00;
}



uint __thiscall FUN_00850d50(int param_1_00,double *param_1)

{
  double *pdVar1;
  int *in_EAX;
  int *piVar2;
  undefined4 *puVar3;
  double *pdVar4;
  float10 extraout_ST0;
  
  pdVar1 = param_1;
  if (param_1 == (double *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      in_EAX = (int *)FUN_00840480("..\\..\\src\\common\\string.cpp",0x6f1,"wxString::ToCDouble",
                                   &DAT_00d27800,L"NULL output pointer");
    }
  }
  else {
    piVar2 = __errno();
    *piVar2 = 0;
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      pdVar4 = (double *)(param_1_00 + 4);
    }
    else {
      pdVar4 = *(double **)(param_1_00 + 4);
    }
    puVar3 = (undefined4 *)FUN_0089ec00();
    in_EAX = (int *)FUN_00a47e16(pdVar4,&param_1,*puVar3);
    if (param_1 != pdVar4) {
      in_EAX = __errno();
      if (*in_EAX != 0x22) {
        *pdVar1 = (double)extraout_ST0;
        return (uint)(*(short *)param_1 == 0);
      }
    }
  }
  return (uint)in_EAX & 0xffffff00;
}



int __thiscall FUN_00850df0(int param_1_00,uint param_1)

{
  ushort **ppuVar1;
  uint uVar2;
  ushort **ppuVar3;
  int iVar4;
  ushort **ppuVar5;
  int local_c;
  ushort **local_4;
  
  uVar2 = *(uint *)(param_1_00 + 0x18);
  local_c = 0;
  ppuVar1 = (ushort **)(param_1_00 + 4);
  local_4 = ppuVar1;
  if (7 < uVar2) {
    local_4 = (ushort **)*ppuVar1;
  }
  if (local_4 != (ushort **)0x0) {
    ppuVar3 = ppuVar1;
    if (7 < uVar2) {
      ppuVar3 = (ushort **)*ppuVar1;
    }
    if (ppuVar3 <= local_4) {
      ppuVar3 = ppuVar1;
      if (7 < uVar2) {
        ppuVar3 = (ushort **)*ppuVar1;
      }
      if (local_4 <= (ushort **)((int)ppuVar3 + *(int *)(param_1_00 + 0x14) * 2)) goto LAB_00850e43;
    }
  }
  FUN_00a3fb10();
LAB_00850e43:
  do {
    uVar2 = *(uint *)(param_1_00 + 0x18);
    ppuVar3 = ppuVar1;
    if (7 < uVar2) {
      ppuVar3 = (ushort **)*ppuVar1;
    }
    iVar4 = *(int *)(param_1_00 + 0x14) * 2;
    ppuVar3 = (ushort **)(iVar4 + (int)ppuVar3);
    if (ppuVar3 == (ushort **)0x0) {
LAB_00850e7d:
      FUN_00a3fb10();
    }
    else {
      ppuVar5 = ppuVar1;
      if (7 < uVar2) {
        ppuVar5 = (ushort **)*ppuVar1;
      }
      if (ppuVar3 < ppuVar5) goto LAB_00850e7d;
      ppuVar5 = ppuVar1;
      if (7 < uVar2) {
        ppuVar5 = (ushort **)*ppuVar1;
      }
      if ((ushort **)(iVar4 + (int)ppuVar5) < ppuVar3) goto LAB_00850e7d;
    }
    if ((param_1_00 != -4) && (param_1_00 == 0)) {
      FUN_00a3fb10();
    }
    if (local_4 == ppuVar3) {
      return local_c;
    }
    if (param_1_00 != -4) {
      if (param_1_00 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar4 = param_1_00 + 4;
      }
      else {
        iVar4 = *(int *)(param_1_00 + 4);
      }
      if ((ushort **)(iVar4 + *(int *)(param_1_00 + 0x14) * 2) <= local_4) {
        FUN_00a3fb10();
      }
    }
    if (*(ushort *)local_4 == param_1) {
      local_c = local_c + 1;
    }
    if (param_1_00 != -4) {
      if (param_1_00 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar4 = param_1_00 + 4;
      }
      else {
        iVar4 = *(int *)(param_1_00 + 4);
      }
      if ((ushort **)(iVar4 + *(int *)(param_1_00 + 0x14) * 2) <= local_4) {
        FUN_00a3fb10();
      }
    }
    local_4 = (ushort **)((int)local_4 + 2);
  } while( true );
}



int * __thiscall FUN_00850f20(int *param_1_00,undefined2 param_1)

{
  int iVar1;
  int iVar2;
  
  if (*param_1_00 != -4) {
    if (*param_1_00 == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *param_1_00;
    if (*(uint *)(iVar1 + 0x18) < 8) {
      iVar2 = iVar1 + 4;
    }
    else {
      iVar2 = *(int *)(iVar1 + 4);
    }
    if ((uint)(iVar2 + *(int *)(iVar1 + 0x14) * 2) <= (uint)param_1_00[1]) {
      FUN_00a3fb10();
    }
  }
  *(undefined2 *)param_1_00[1] = param_1;
  return param_1_00;
}



void FUN_00850f70(undefined4 param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  
  iVar1 = -1;
  if (*(int *)(param_3 + 0x14) != -1) {
    iVar1 = *(int *)(param_3 + 0x14);
  }
  if (7 < *(uint *)(param_3 + 0x18)) {
    FUN_004129cd(param_1,param_2,*(undefined4 *)(param_3 + 4),iVar1);
    return;
  }
  FUN_004129cd(param_1,param_2,param_3 + 4,iVar1);
  return;
}



int __fastcall FUN_00850fc0(int param_1)

{
  uint uVar1;
  wint_t wVar2;
  wint_t **ppwVar3;
  int iVar4;
  wint_t **ppwVar5;
  wint_t **ppwVar6;
  int local_8;
  wint_t **local_4;
  
  uVar1 = *(uint *)(param_1 + 0x18);
  ppwVar3 = (wint_t **)(param_1 + 4);
  ppwVar6 = ppwVar3;
  if (7 < uVar1) {
    ppwVar6 = (wint_t **)*ppwVar3;
  }
  if (ppwVar6 != (wint_t **)0x0) {
    ppwVar5 = ppwVar3;
    if (7 < uVar1) {
      ppwVar5 = (wint_t **)*ppwVar3;
    }
    if (ppwVar5 <= ppwVar6) {
      if (7 < uVar1) {
        ppwVar3 = (wint_t **)*ppwVar3;
      }
      if (ppwVar6 <= (wint_t **)((int)ppwVar3 + *(int *)(param_1 + 0x14) * 2)) goto LAB_00851002;
    }
  }
  FUN_00a3fb10();
LAB_00851002:
  FUN_0081b397(&local_8);
  while( true ) {
    if ((param_1 != -4) && ((param_1 == 0 || (param_1 != local_8)))) {
      FUN_00a3fb10();
    }
    if (ppwVar6 == local_4) break;
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((wint_t **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppwVar6) {
        FUN_00a3fb10();
      }
    }
    wVar2 = _towupper(*(wint_t *)ppwVar6);
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((wint_t **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppwVar6) {
        FUN_00a3fb10();
      }
    }
    *(wint_t *)ppwVar6 = wVar2;
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((wint_t **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppwVar6) {
        FUN_00a3fb10();
      }
    }
    ppwVar6 = (wint_t **)((int)ppwVar6 + 2);
  }
  return param_1;
}



int __fastcall FUN_008510e0(int param_1)

{
  uint uVar1;
  wint_t wVar2;
  wint_t **ppwVar3;
  int iVar4;
  wint_t **ppwVar5;
  wint_t **ppwVar6;
  int local_8;
  wint_t **local_4;
  
  uVar1 = *(uint *)(param_1 + 0x18);
  ppwVar3 = (wint_t **)(param_1 + 4);
  ppwVar6 = ppwVar3;
  if (7 < uVar1) {
    ppwVar6 = (wint_t **)*ppwVar3;
  }
  if (ppwVar6 != (wint_t **)0x0) {
    ppwVar5 = ppwVar3;
    if (7 < uVar1) {
      ppwVar5 = (wint_t **)*ppwVar3;
    }
    if (ppwVar5 <= ppwVar6) {
      if (7 < uVar1) {
        ppwVar3 = (wint_t **)*ppwVar3;
      }
      if (ppwVar6 <= (wint_t **)((int)ppwVar3 + *(int *)(param_1 + 0x14) * 2)) goto LAB_00851122;
    }
  }
  FUN_00a3fb10();
LAB_00851122:
  FUN_0081b397(&local_8);
  while( true ) {
    if ((param_1 != -4) && ((param_1 == 0 || (param_1 != local_8)))) {
      FUN_00a3fb10();
    }
    if (ppwVar6 == local_4) break;
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((wint_t **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppwVar6) {
        FUN_00a3fb10();
      }
    }
    wVar2 = _towlower(*(wint_t *)ppwVar6);
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((wint_t **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppwVar6) {
        FUN_00a3fb10();
      }
    }
    *(wint_t *)ppwVar6 = wVar2;
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((wint_t **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppwVar6) {
        FUN_00a3fb10();
      }
    }
    ppwVar6 = (wint_t **)((int)ppwVar6 + 2);
  }
  return param_1;
}



int __fastcall FUN_00851200(int param_1)

{
  uint uVar1;
  wint_t wVar2;
  wint_t **ppwVar3;
  int iVar4;
  wint_t **ppwVar5;
  wint_t **ppwVar6;
  bool bVar7;
  int local_10;
  wint_t **local_c;
  wint_t **local_4;
  
  FUN_0081b397(&local_10);
  uVar1 = *(uint *)(param_1 + 0x18);
  ppwVar5 = (wint_t **)(param_1 + 4);
  ppwVar6 = ppwVar5;
  if (7 < uVar1) {
    ppwVar6 = (wint_t **)*ppwVar5;
  }
  if (ppwVar6 != (wint_t **)0x0) {
    ppwVar3 = ppwVar5;
    if (7 < uVar1) {
      ppwVar3 = (wint_t **)*ppwVar5;
    }
    if (ppwVar3 <= ppwVar6) {
      ppwVar3 = ppwVar5;
      if (7 < uVar1) {
        ppwVar3 = (wint_t **)*ppwVar5;
      }
      if (ppwVar6 <= (wint_t **)((int)ppwVar3 + *(int *)(param_1 + 0x14) * 2)) goto LAB_00851250;
    }
  }
  FUN_00a3fb10();
LAB_00851250:
  local_4 = ppwVar6;
  if ((param_1 != -4) && (param_1 != local_10)) {
    FUN_00a3fb10();
  }
  if (ppwVar6 != local_c) {
    if (param_1 != -4) {
      ppwVar3 = ppwVar5;
      if (7 < *(uint *)(param_1 + 0x18)) {
        ppwVar3 = (wint_t **)*ppwVar5;
      }
      if ((wint_t **)((int)ppwVar3 + *(int *)(param_1 + 0x14) * 2) <= ppwVar6) {
        FUN_00a3fb10();
      }
    }
    wVar2 = _towupper(*(wint_t *)ppwVar6);
    if (param_1 != -4) {
      ppwVar3 = ppwVar5;
      if (7 < *(uint *)(param_1 + 0x18)) {
        ppwVar3 = (wint_t **)*ppwVar5;
      }
      if ((wint_t **)((int)ppwVar3 + *(int *)(param_1 + 0x14) * 2) <= ppwVar6) {
        FUN_00a3fb10();
      }
    }
    *(wint_t *)ppwVar6 = wVar2;
    if (param_1 == -4) goto LAB_008512e2;
    if (7 < *(uint *)(param_1 + 0x18)) {
      ppwVar5 = (wint_t **)*ppwVar5;
    }
    bVar7 = ppwVar6 < (wint_t **)((int)ppwVar5 + *(int *)(param_1 + 0x14) * 2);
    do {
      if (!bVar7) {
        FUN_00a3fb10();
      }
LAB_008512e2:
      do {
        ppwVar6 = (wint_t **)((int)ppwVar6 + 2);
        if ((param_1 != -4) && ((param_1 == 0 || (param_1 != local_10)))) {
          FUN_00a3fb10();
        }
        if (ppwVar6 == local_c) {
          return param_1;
        }
        if (param_1 != -4) {
          if (param_1 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(param_1 + 0x18) < 8) {
            iVar4 = param_1 + 4;
          }
          else {
            iVar4 = *(int *)(param_1 + 4);
          }
          if ((wint_t **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppwVar6) {
            FUN_00a3fb10();
          }
        }
        wVar2 = _towlower(*(wint_t *)ppwVar6);
        if (param_1 != -4) {
          if (param_1 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(param_1 + 0x18) < 8) {
            iVar4 = param_1 + 4;
          }
          else {
            iVar4 = *(int *)(param_1 + 4);
          }
          if ((wint_t **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppwVar6) {
            FUN_00a3fb10();
          }
        }
        *(wint_t *)ppwVar6 = wVar2;
      } while (param_1 == -4);
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        bVar7 = ppwVar6 < (wint_t **)(param_1 + 4 + *(int *)(param_1 + 0x14) * 2);
      }
      else {
        bVar7 = ppwVar6 < (wint_t **)(*(int *)(param_1 + 4) + *(int *)(param_1 + 0x14) * 2);
      }
    } while( true );
  }
  return param_1;
}



undefined4 * __thiscall FUN_008513b0(undefined4 *param_1_00,undefined4 *param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6be8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1_00 = *param_1;
  FUN_0043c126(uVar1);
  param_1_00[1] = param_2;
  local_4 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 == -1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/string.h",0x1ec,
                 "wxString::SubstrBufFromType<class wxScopedCharTypeBuffer<wchar_t> >::SubstrBufFromType"
                 ,"len != npos","must have real length");
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined2 __fastcall FUN_00851440(int *param_1)

{
  int iVar1;
  int iVar2;
  
  if (*param_1 != -4) {
    if (*param_1 == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *param_1;
    if (*(uint *)(iVar1 + 0x18) < 8) {
      iVar2 = iVar1 + 4;
    }
    else {
      iVar2 = *(int *)(iVar1 + 4);
    }
    if ((uint)(iVar2 + *(int *)(iVar1 + 0x14) * 2) <= (uint)param_1[1]) {
      FUN_00a3fb10();
    }
    return *(undefined2 *)param_1[1];
  }
  return *(undefined2 *)param_1[1];
}



undefined4 *
FUN_00851490(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined local_8 [8];
  
  puVar2 = (undefined4 *)FUN_004320f0(local_8,param_2,param_3,param_4,param_5);
  uVar1 = *puVar2;
  param_1[1] = puVar2[1];
  *param_1 = uVar1;
  return param_1;
}



void FUN_008514d0(void)

{
  FUN_0043c1dd();
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void ** __thiscall FUN_008514e0(void **param_1_00,short *param_1,void *param_2)

{
  size_t _Size;
  short sVar1;
  short *psVar2;
  void **ppvVar3;
  void *_Dst;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6b88;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((_DAT_032bd498 & 1) == 0) {
    _DAT_032bd498 = _DAT_032bd498 | 1;
    DAT_032bd48c = 0;
    _DAT_032bd490 = 0;
    _DAT_032bd494 = 1;
    DAT_032bd496 = 1;
    _atexit((_func_4879 *)&LAB_00c764d0);
  }
  *param_1_00 = &DAT_032bd48c;
  local_4 = 0;
  if (param_1 == (short *)0x0) {
    if ((_DAT_032bd498 & 1) == 0) {
      _DAT_032bd498 = _DAT_032bd498 | 1;
      DAT_032bd48c = 0;
      _DAT_032bd490 = 0;
      _DAT_032bd494 = 1;
      DAT_032bd496 = 1;
      _atexit((_func_4879 *)&LAB_00c764d0);
    }
    *param_1_00 = &DAT_032bd48c;
  }
  else {
    if (param_2 == (void *)0xffffffff) {
      psVar2 = param_1;
      do {
        sVar1 = *psVar2;
        psVar2 = psVar2 + 1;
      } while (sVar1 != 0);
      param_2 = (void *)((int)psVar2 - (int)(param_1 + 1) >> 1);
    }
    ppvVar3 = (void **)operator_new(0xc);
    if (ppvVar3 == (void **)0x0) {
      *param_1_00 = (void *)0x0;
    }
    else {
      _Size = (int)param_2 * 2 + 2;
      _Dst = _malloc(_Size);
      _memcpy(_Dst,param_1,_Size);
      *ppvVar3 = _Dst;
      ppvVar3[1] = param_2;
      *(undefined2 *)(ppvVar3 + 2) = 1;
      *(undefined *)((int)ppvVar3 + 10) = 1;
      *param_1_00 = ppvVar3;
    }
  }
  ExceptionList = local_c;
  return param_1_00;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

int ** __thiscall FUN_00851620(int **param_1_00,void *param_1)

{
  void **ppvVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6bb8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((_DAT_032bd498 & 1) == 0) {
    _DAT_032bd498 = _DAT_032bd498 | 1;
    DAT_032bd48c = 0;
    _DAT_032bd490 = 0;
    _DAT_032bd494 = 1;
    DAT_032bd496 = 1;
    _atexit((_func_4879 *)&LAB_00c764d0);
  }
  *param_1_00 = &DAT_032bd48c;
  local_4 = 0;
  ppvVar1 = (void **)operator_new(0xc);
  if (ppvVar1 == (void **)0x0) {
    ppvVar1 = (void **)0x0;
  }
  else {
    pvVar2 = _malloc((int)param_1 * 2 + 2);
    *ppvVar1 = pvVar2;
    ppvVar1[1] = param_1;
    *(undefined2 *)(ppvVar1 + 2) = 1;
    *(undefined *)((int)ppvVar1 + 10) = 1;
  }
  *param_1_00 = (int *)ppvVar1;
  *(undefined2 *)((int)*ppvVar1 + (int)param_1 * 2) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * __thiscall FUN_00851700(undefined4 *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6be8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((_DAT_032bd498 & 1) == 0) {
    _DAT_032bd498 = _DAT_032bd498 | 1;
    DAT_032bd48c = 0;
    _DAT_032bd490 = 0;
    _DAT_032bd494 = 1;
    DAT_032bd496 = 1;
    _atexit((_func_4879 *)&LAB_00c764d0);
  }
  *param_1_00 = &DAT_032bd48c;
  local_4 = 0;
  FUN_008505d0(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_008517a0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  ushort **ppuVar3;
  undefined4 *puVar4;
  ushort **ppuVar5;
  ushort **ppuVar6;
  undefined4 *local_38;
  undefined4 **local_34;
  undefined4 *local_30;
  undefined4 *local_18;
  ushort **local_14;
  undefined4 *local_8;
  ushort **local_4;
  
  if (param_1_00[5] == 0) {
    return param_1_00;
  }
  if ((char)param_1 == '\0') {
    local_30 = &param_1;
    local_34 = (undefined4 **)0x85181e;
    FUN_0081feb2();
    if (0x7e < (ushort)param_1) {
      return param_1_00;
    }
    local_30 = (undefined4 *)0x851835;
    iVar2 = _iswspace((ushort)param_1);
    if (iVar2 == 0) {
      return param_1_00;
    }
    local_30 = (undefined4 *)0x85184c;
    FUN_0081b376();
    do {
      uVar1 = param_1_00[6];
      ppuVar3 = (ushort **)(param_1_00 + 1);
      ppuVar6 = ppuVar3;
      if (7 < uVar1) {
        ppuVar6 = (ushort **)*ppuVar3;
      }
      ppuVar6 = (ushort **)(param_1_00[5] * 2 + (int)ppuVar6);
      if (ppuVar6 == (ushort **)0x0) {
LAB_00851989:
        FUN_00a3fb10();
      }
      else {
        ppuVar5 = ppuVar3;
        if (7 < uVar1) {
          ppuVar5 = (ushort **)*ppuVar3;
        }
        if (ppuVar6 < ppuVar5) goto LAB_00851989;
        if (7 < uVar1) {
          ppuVar3 = (ushort **)*ppuVar3;
        }
        if ((ushort **)(param_1_00[5] * 2 + (int)ppuVar3) < ppuVar6) goto LAB_00851989;
      }
      if ((local_18 != (undefined4 *)0xfffffffc) &&
         ((local_18 == (undefined4 *)0x0 || (local_18 != param_1_00)))) {
        FUN_00a3fb10();
      }
      if (local_14 == ppuVar6) goto LAB_00851a24;
      if (local_18 != (undefined4 *)0xfffffffc) {
        if (local_18 == (undefined4 *)0x0) {
          FUN_00a3fb10();
        }
        if ((uint)local_18[6] < 8) {
          puVar4 = local_18 + 1;
        }
        else {
          puVar4 = (undefined4 *)local_18[1];
        }
        if ((ushort **)((int)puVar4 + local_18[5] * 2) <= local_14) {
          FUN_00a3fb10();
        }
      }
      if (0x7e < *(ushort *)local_14) goto LAB_00851a24;
      local_30 = (undefined4 *)0x8519e6;
      iVar2 = _iswspace(*(ushort *)local_14);
      if (iVar2 == 0) goto LAB_00851a24;
      if (local_18 != (undefined4 *)0xfffffffc) {
        if (local_18 == (undefined4 *)0x0) {
          FUN_00a3fb10();
        }
        if ((uint)local_18[6] < 8) {
          puVar4 = local_18 + 1;
        }
        else {
          puVar4 = (undefined4 *)local_18[1];
        }
        if ((ushort **)((int)puVar4 + local_18[5] * 2) <= local_14) {
          FUN_00a3fb10();
        }
      }
      local_14 = (ushort **)((int)local_14 + 2);
    } while( true );
  }
  local_30 = &param_1;
  local_34 = (undefined4 **)0x8517c7;
  FUN_0081feb2();
  if (0x7e < (ushort)param_1) {
    return param_1_00;
  }
  local_30 = (undefined4 *)0x8517de;
  iVar2 = _iswspace((ushort)param_1);
  if (iVar2 == 0) {
    return param_1_00;
  }
  local_30 = (undefined4 *)0x8517f5;
  FUN_0081b397();
  local_14 = local_4;
  do {
    uVar1 = param_1_00[6];
    ppuVar3 = (ushort **)(param_1_00 + 1);
    ppuVar6 = ppuVar3;
    if (7 < uVar1) {
      ppuVar6 = (ushort **)*ppuVar3;
    }
    if (ppuVar6 == (ushort **)0x0) {
LAB_0085188c:
      FUN_00a3fb10();
    }
    else {
      ppuVar5 = ppuVar3;
      if (7 < uVar1) {
        ppuVar5 = (ushort **)*ppuVar3;
      }
      if (ppuVar6 < ppuVar5) goto LAB_0085188c;
      if (7 < uVar1) {
        ppuVar3 = (ushort **)*ppuVar3;
      }
      if ((ushort **)((int)ppuVar3 + param_1_00[5] * 2) < ppuVar6) goto LAB_0085188c;
    }
    if ((local_8 != (undefined4 *)0xfffffffc) &&
       ((local_8 == (undefined4 *)0x0 || (local_8 != param_1_00)))) {
      FUN_00a3fb10();
    }
    if (local_14 == ppuVar6) goto LAB_00851941;
    local_30 = (undefined4 *)0x8518c4;
    FUN_004226c0();
    if (local_8 != (undefined4 *)0xfffffffc) {
      if (local_8 == (undefined4 *)0x0) {
        FUN_00a3fb10();
      }
      if ((uint)local_8[6] < 8) {
        puVar4 = local_8 + 1;
      }
      else {
        puVar4 = (undefined4 *)local_8[1];
      }
      if ((ushort **)((int)puVar4 + local_8[5] * 2) <= local_14) {
        FUN_00a3fb10();
      }
    }
    if (0x7e < *(ushort *)local_14) goto LAB_00851941;
    local_30 = (undefined4 *)0x851909;
    iVar2 = _iswspace(*(ushort *)local_14);
    if (iVar2 == 0) goto LAB_00851941;
    if (local_8 != (undefined4 *)0xfffffffc) {
      if (local_8 == (undefined4 *)0x0) {
        FUN_00a3fb10();
      }
      if ((uint)local_8[6] < 8) {
        ppuVar3 = (ushort **)(local_8 + 1);
      }
      else {
        ppuVar3 = (ushort **)local_8[1];
      }
      if (local_14 <= ppuVar3) {
        FUN_00a3fb10();
      }
    }
    local_14 = (ushort **)((int)local_14 + -2);
  } while( true );
LAB_00851a24:
  local_30 = local_18;
  FUN_0081b376(&local_38);
  goto LAB_00851a3d;
LAB_00851941:
  local_34 = &local_30;
  local_38 = (undefined4 *)0x85194c;
  FUN_0081b397();
  local_38 = local_8;
  local_34 = (undefined4 **)local_14;
LAB_00851a3d:
  FUN_00851490(&local_8);
  return param_1_00;
}



int __thiscall FUN_00851a60(int param_1_00,uint param_1)

{
  undefined4 *puVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined local_8 [8];
  
  if (param_1 < *(uint *)(param_1_00 + 0x14)) {
    puVar1 = (undefined4 *)FUN_0081b376(local_8);
    local_18 = *puVar1;
    local_14 = puVar1[1];
    FUN_004226c0(param_1);
    FUN_0081b397(&local_10);
    FUN_004320f0(&local_18,local_18,local_14,local_10,local_c);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00851ad0(int param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined **ppuVar2;
  
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440();
  }
  iVar1 = FUN_00850390(DAT_032bd4d4);
  if (iVar1 == 0) {
    ppuVar2 = &PTR_02bd3fc0;
  }
  else {
    ppuVar2 = (undefined **)(*(int *)(param_1_00 + 4) + iVar1);
  }
  FUN_0043234d(param_1,ppuVar2,0xffffffff);
  return param_1;
}



undefined4 FUN_00851b20(undefined4 param_1,int param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  
  uVar1 = *(undefined4 *)(param_2 + 0x14);
  if (param_3 != (undefined4 *)0x0) {
    *param_3 = uVar1;
  }
  if (7 < *(uint *)(param_2 + 0x18)) {
    FUN_0081c01c(param_1,*(undefined4 *)(param_2 + 4),uVar1);
    return param_1;
  }
  FUN_0081c01c(param_1,param_2 + 4,uVar1);
  return param_1;
}



void __fastcall FUN_00851b70(int param_1)

{
  short sVar1;
  short *psVar2;
  uint uVar3;
  short *psVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6c18;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  psVar2 = **(short ***)(param_1 + 4);
  local_4 = 0;
  psVar4 = psVar2;
  do {
    sVar1 = *psVar4;
    psVar4 = psVar4 + 1;
  } while (sVar1 != 0);
  FID_conflict_assign(psVar2,(int)psVar4 - (int)(psVar2 + 1) >> 1);
  FUN_0043c1dd(uVar3);
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00851bf0(int param_1)

{
  short sVar1;
  uint uVar2;
  short *psVar3;
  short *psVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6c18;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  psVar4 = **(short ***)(param_1 + 4);
  local_4 = 0;
  if (psVar4 == (short *)0x0) {
    psVar4 = &DAT_00fae9c8;
  }
  psVar3 = psVar4;
  do {
    sVar1 = *psVar3;
    psVar3 = psVar3 + 1;
  } while (sVar1 != 0);
  FID_conflict_assign(psVar4,(int)psVar3 - (int)(psVar4 + 1) >> 1);
  FUN_0043c1dd(uVar2);
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00851c70(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3a98;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_00851b20(&param_2,param_1_00,param_2,DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  FUN_00851700(uVar1);
  FUN_0043c1dd();
  ExceptionList = local_c;
  return param_1;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * FUN_00851ce0(undefined4 *param_1,undefined4 *param_2,int param_3)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 local_18;
  undefined local_14 [4];
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6c68;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  local_10 = 0;
  if ((param_2 == (undefined4 *)0x0) || (param_3 == 0)) {
    FUN_008514e0(&DAT_00fae9c8,0xffffffff);
    *param_1 = param_2;
    FUN_0043c126();
    param_1[1] = 0;
  }
  else {
    puVar2 = (undefined4 *)FUN_00862090(local_14,param_2,param_3,&local_10);
    puVar2 = (undefined4 *)*puVar2;
    param_2 = puVar2;
    if ((_DAT_032bd498 & 1) == 0) {
      _DAT_032bd498 = _DAT_032bd498 | 1;
      DAT_032bd48c = 0;
      _DAT_032bd490 = 0;
      _DAT_032bd494 = 1;
      DAT_032bd496 = 1;
      _atexit((_func_4879 *)&LAB_00c764d0);
    }
    if (puVar2 != &DAT_032bd48c) {
      *(short *)(puVar2 + 2) = *(short *)(puVar2 + 2) + 1;
    }
    local_4 = 2;
    FUN_0043c1dd(uVar1);
    if (local_10 == 0) {
      FUN_008514e0(&DAT_00fae9c8,0xffffffff);
      *param_1 = local_18;
      FUN_0043c126();
      param_1[1] = 0;
      FUN_0043c1dd();
    }
    else {
      FUN_008513b0(&param_2,local_10);
    }
  }
  FUN_0043c1dd(uVar1);
  ExceptionList = local_c;
  return param_1;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * __thiscall FUN_00851e30(int param_1_00,undefined4 *param_1)

{
  ushort **ppuVar1;
  undefined4 *puVar2;
  ushort uVar3;
  uint uVar4;
  undefined uVar5;
  uint uVar6;
  ushort **ppuVar7;
  int iVar8;
  ushort **ppuVar9;
  ushort **ppuVar10;
  undefined4 *local_14;
  undefined *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6c98;
  local_c = ExceptionList;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  FUN_0084aa50(*(undefined4 *)(param_1_00 + 0x14));
  local_10 = (undefined *)*local_14;
  uVar4 = *(uint *)(param_1_00 + 0x18);
  ppuVar1 = (ushort **)(param_1_00 + 4);
  ppuVar10 = ppuVar1;
  if (7 < uVar4) {
    ppuVar10 = (ushort **)*ppuVar1;
  }
  if (ppuVar10 != (ushort **)0x0) {
    ppuVar7 = ppuVar1;
    if (7 < uVar4) {
      ppuVar7 = (ushort **)*ppuVar1;
    }
    if (ppuVar7 <= ppuVar10) {
      ppuVar7 = ppuVar1;
      if (7 < uVar4) {
        ppuVar7 = (ushort **)*ppuVar1;
      }
      if (ppuVar10 <= (ushort **)((int)ppuVar7 + *(int *)(param_1_00 + 0x14) * 2))
      goto LAB_00851ec0;
    }
  }
  FUN_00a3fb10(uVar6);
LAB_00851ec0:
  do {
    uVar4 = *(uint *)(param_1_00 + 0x18);
    ppuVar7 = ppuVar1;
    if (7 < uVar4) {
      ppuVar7 = (ushort **)*ppuVar1;
    }
    iVar8 = *(int *)(param_1_00 + 0x14) * 2;
    ppuVar7 = (ushort **)(iVar8 + (int)ppuVar7);
    if (ppuVar7 == (ushort **)0x0) {
LAB_00851efd:
      FUN_00a3fb10(uVar6);
    }
    else {
      ppuVar9 = ppuVar1;
      if (7 < uVar4) {
        ppuVar9 = (ushort **)*ppuVar1;
      }
      if (ppuVar7 < ppuVar9) goto LAB_00851efd;
      ppuVar9 = ppuVar1;
      if (7 < uVar4) {
        ppuVar9 = (ushort **)*ppuVar1;
      }
      if ((ushort **)(iVar8 + (int)ppuVar9) < ppuVar7) goto LAB_00851efd;
    }
    if ((param_1_00 != -4) && (param_1_00 == 0)) {
      FUN_00a3fb10(uVar6);
    }
    if (ppuVar10 == ppuVar7) {
LAB_00851f93:
      uVar4 = _DAT_032bd498 & 1;
      *param_1 = local_14;
      if (uVar4 == 0) {
        _DAT_032bd498 = _DAT_032bd498 | 1;
        DAT_032bd48c = 0;
        _DAT_032bd490 = 0;
        _DAT_032bd494 = 1;
        DAT_032bd496 = 1;
        _atexit((_func_4879 *)&LAB_00c764d0);
      }
      if ((undefined4 *)*param_1 != &DAT_032bd48c) {
        puVar2 = (undefined4 *)*param_1 + 2;
        *(short *)puVar2 = *(short *)puVar2 + 1;
      }
      FUN_0043c1dd();
      ExceptionList = local_c;
      return param_1;
    }
    if (param_1_00 != -4) {
      if (param_1_00 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar8 = param_1_00 + 4;
      }
      else {
        iVar8 = *(int *)(param_1_00 + 4);
      }
      if ((ushort **)(iVar8 + *(int *)(param_1_00 + 0x14) * 2) <= ppuVar10) {
        FUN_00a3fb10();
      }
    }
    uVar3 = *(ushort *)ppuVar10;
    uVar5 = (undefined)uVar3;
    if (0x7f < uVar3) {
      uVar5 = 0x5f;
    }
    *local_10 = uVar5;
    local_10 = local_10 + 1;
    if (uVar3 == 0) goto LAB_00851f93;
    if (param_1_00 != -4) {
      if (param_1_00 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar8 = param_1_00 + 4;
      }
      else {
        iVar8 = *(int *)(param_1_00 + 4);
      }
      if ((ushort **)(iVar8 + *(int *)(param_1_00 + 0x14) * 2) <= ppuVar10) {
        FUN_00a3fb10();
      }
    }
    ppuVar10 = (ushort **)((int)ppuVar10 + 2);
  } while( true );
}



undefined4 __thiscall FUN_00852010(undefined4 param_1_00,int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  iVar2 = *(int *)(param_1 + 0x14);
  iVar3 = -1;
  if (iVar2 != -1) {
    iVar3 = iVar2;
  }
  if (*(uint *)(param_1 + 0x18) < 8) {
    iVar1 = param_1 + 4;
  }
  else {
    iVar1 = *(int *)(param_1 + 4);
  }
  iVar2 = FUN_004129cd(0,iVar2,iVar1,iVar3);
  if (iVar2 != 0) {
    return 0;
  }
  if (param_2 != 0) {
    FID_conflict_assign(param_1_00,*(undefined4 *)(param_1 + 0x14),0xffffffff);
  }
  return 1;
}



undefined4 __thiscall FUN_00852070(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  iVar1 = *(int *)(param_1 + 0x14);
  iVar3 = *(int *)(param_1_00 + 0x14) - iVar1;
  if (-1 < iVar3) {
    iVar2 = -1;
    if (iVar1 != -1) {
      iVar2 = iVar1;
    }
    if (*(uint *)(param_1 + 0x18) < 8) {
      param_1 = param_1 + 4;
    }
    else {
      param_1 = *(int *)(param_1 + 4);
    }
    iVar1 = FUN_004129cd(iVar3,0xffffffff,param_1,iVar2);
    if (iVar1 == 0) {
      if (param_2 != 0) {
        FID_conflict_assign(param_1_00,0,iVar3);
      }
      return 1;
    }
  }
  return 0;
}



int __thiscall FUN_008520d0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6cd3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 1;
  FUN_00412939(param_2,param_1);
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_00852140(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf283;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 1;
  FUN_00820ebc(&local_14,param_1,param_2,uVar1);
  FID_conflict_assign(local_14,local_10);
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_008521d0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6cd3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 1;
  FID_conflict_assign(param_1,param_2,param_3);
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall
FUN_00852250(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  FUN_00427fd0(param_1,param_2,param_3,param_4);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  return param_1_00;
}



undefined4 * __thiscall FUN_00852280(undefined4 *param_1_00,void **param_1,uint param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  uVar1 = param_2;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6cfb;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  FUN_00851620(param_2);
  local_4 = 0;
  FUN_00851c70(&param_1,&param_2,0);
  if (*param_1 != (void *)0x0) {
    uVar3 = param_2;
    if (uVar1 < param_2) {
      *(undefined2 *)(*(int *)param_1_00[1] + uVar1 * 2) = 0;
      uVar3 = uVar1 - 1;
    }
    _memcpy(*(void **)param_1_00[1],*param_1,uVar3 * 2 + 2);
  }
  FUN_0043c1dd(uVar2);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00852340(int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint uVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  undefined local_3c [8];
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bddc78;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_3c;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  puVar5 = (undefined4 *)FUN_0081b397(local_3c);
  uVar1 = *(uint *)(param_1 + 0x18);
  uVar2 = *puVar5;
  uVar3 = puVar5[1];
  puVar5 = (undefined4 *)(param_1 + 4);
  puVar7 = puVar5;
  if (7 < uVar1) {
    puVar7 = (undefined4 *)*puVar5;
  }
  if (puVar7 != (undefined4 *)0x0) {
    puVar6 = puVar5;
    if (7 < uVar1) {
      puVar6 = (undefined4 *)*puVar5;
    }
    if (puVar6 <= puVar7) {
      if (7 < uVar1) {
        puVar5 = (undefined4 *)*puVar5;
      }
      if (puVar7 <= (undefined4 *)((int)puVar5 + *(int *)(param_1 + 0x14) * 2)) goto LAB_008523bd;
    }
  }
  FUN_00a3fb10(uVar4);
LAB_008523bd:
  FUN_00427fd0(param_1,puVar7,uVar2,uVar3);
  local_18 = (void *)0x0;
  local_4 = 0;
  FUN_0043165e(local_34);
  _free(local_18);
  if (local_1c < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_30);
}



int FUN_00852430(int param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6ec9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  FID_conflict_append(1,param_3);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_008524c0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 *local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6d28;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  }
  FUN_0084b030(&local_14,param_3,param_4,DAT_032bd4d4);
  local_4 = 0;
  uVar1 = FUN_004129cd(param_1,param_2,*local_14,local_10);
  FUN_0043c1dd();
  ExceptionList = local_c;
  return uVar1;
}



void __thiscall FUN_00852560(int param_1_00,int param_1,uint param_2,int param_3)

{
  uint uVar1;
  undefined4 local_38;
  undefined local_34 [4];
  undefined4 local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6d58;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  ExceptionList = &local_c;
  uVar1 = *(uint *)(param_1_00 + 0x14);
  local_38 = 0;
  if (param_3 == -1) {
    param_3 = uVar1 - param_2;
  }
  if (uVar1 < param_2 + param_3) {
    param_3 = uVar1 - param_2;
  }
  if (uVar1 < param_2) {
    FUN_004325b6(PTR_DAT_03236318);
  }
  else {
    FUN_008521d0(param_1_00,param_2,param_3);
    local_4 = 0;
    if ((local_20 != param_3) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
      FUN_00840480("..\\..\\src\\common\\string.cpp",0x4f4,"wxString::Mid","Assert failure",
                   L"out of memory in wxString::Mid");
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_00852680(int param_1_00,int param_1,uint param_2)

{
  uint uVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6ec9;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  uVar1 = *(uint *)(param_1_00 + 0x14);
  local_4 = 0;
  if (uVar1 < param_2) {
    param_2 = uVar1;
  }
  FUN_008521d0(param_1_00,uVar1 - param_2,param_2);
  local_4 = 0;
  if ((*(uint *)(param_1 + 0x14) != param_2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_00840480("..\\..\\src\\common\\string.cpp",0x526,"wxString::Right","Assert failure",
                 L"out of memory in wxString::Right",uVar2);
  }
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00852730(int param_1_00,int param_1,ushort param_2)

{
  int iVar1;
  uint local_18;
  undefined4 local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcefa9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_10 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_18 = (uint)param_2;
  local_4 = 0;
  local_14 = 1;
  iVar1 = FUN_007433d1(&local_18,0xffffffff,1);
  if ((iVar1 == -1) || (iVar1 == -1)) {
    if (param_1 == param_1_00) {
      ExceptionList = local_c;
      return param_1;
    }
    iVar1 = 0;
  }
  else {
    iVar1 = iVar1 + 1;
  }
  FID_conflict_assign(param_1_00,iVar1,0xffffffff);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_008527e0(int param_1_00,int param_1,uint param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6ec9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  if (*(uint *)(param_1_00 + 0x14) < param_2) {
    param_2 = *(uint *)(param_1_00 + 0x14);
  }
  FUN_008521d0(param_1_00,0,param_2);
  local_4 = 0;
  if ((*(uint *)(param_1 + 0x14) != param_2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_00840480("..\\..\\src\\common\\string.cpp",0x541,"wxString::Left","Assert failure",
                 L"out of memory in wxString::Left",uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00852890(int param_1_00,undefined4 param_1,ushort param_2,int param_3)

{
  int iVar1;
  uint local_4;
  
  local_4 = (uint)param_2;
  iVar1 = FUN_00420f3f(&local_4,0,1);
  if ((iVar1 == -1) || (iVar1 == -1)) {
    iVar1 = *(int *)(param_1_00 + 0x14);
    if (param_3 != 0) {
      FUN_00432156();
    }
  }
  else if (param_3 != 0) {
    FID_conflict_assign(param_1_00,iVar1 + 1,0xffffffff);
  }
  FUN_008521d0(param_1_00,0,iVar1);
  return param_1;
}



int __thiscall FUN_00852900(int param_1_00,int param_1,ushort param_2,int param_3)

{
  int iVar1;
  uint local_18;
  undefined4 local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6d99;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_10 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_18 = (uint)param_2;
  local_4 = 0;
  local_14 = 1;
  iVar1 = FUN_007433d1(&local_18,0xffffffff,1);
  if ((iVar1 == -1) || (iVar1 == -1)) {
    if (param_3 == 0) {
      ExceptionList = local_c;
      return param_1;
    }
    if (param_3 == param_1_00) {
      ExceptionList = local_c;
      return param_1;
    }
    iVar1 = 0;
  }
  else {
    if (iVar1 != 0) {
      FID_conflict_assign(param_1_00,0,iVar1);
    }
    if (param_3 == 0) {
      ExceptionList = local_c;
      return param_1;
    }
    iVar1 = iVar1 + 1;
  }
  FID_conflict_assign(param_1_00,iVar1,0xffffffff);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_008529d0(undefined4 param_1_00,int param_1,ushort param_2)

{
  int iVar1;
  uint local_18;
  undefined4 local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc73c9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_10 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_18 = (uint)param_2;
  local_4 = 0;
  local_14 = 1;
  iVar1 = FUN_00420f3f(&local_18,0,1);
  if ((iVar1 != -1) && (iVar1 != -1)) {
    FID_conflict_assign(param_1_00,iVar1 + 1,0xffffffff);
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00852a70(int param_1_00,int param_1,int param_2,char param_3)

{
  short sVar1;
  ushort uVar2;
  undefined2 uVar3;
  char cVar4;
  uint uVar5;
  short *psVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  undefined4 ****ppppuVar10;
  short *psVar11;
  ushort *puVar12;
  undefined2 *puVar13;
  uint uVar14;
  uint local_50;
  uint local_4c;
  int local_48;
  uint local_44;
  undefined4 local_40;
  void *local_3c;
  int local_38;
  undefined local_34 [4];
  undefined4 ****local_30 [4];
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6dd0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_50;
  ExceptionList = &local_c;
  local_4c = *(uint *)(param_1 + 0x14);
  local_38 = param_2;
  if (local_4c == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\string.cpp",0x583,"wxString::Replace","!strOld.empty()",
                   L"wxString::Replace(): invalid parameter",DAT_0323f878 ^ (uint)&stack0xffffffa0);
    }
  }
  else {
    local_50 = 0;
    if ((local_4c == 1) && (*(int *)(param_2 + 0x14) == 1)) {
      if (*(uint *)(param_1 + 0x18) < 8) {
        puVar12 = (ushort *)(param_1 + 4);
      }
      else {
        puVar12 = *(ushort **)(param_1 + 4);
      }
      uVar2 = *puVar12;
      if (*(uint *)(param_2 + 0x18) < 8) {
        puVar13 = (undefined2 *)(param_2 + 4);
      }
      else {
        puVar13 = *(undefined2 **)(param_2 + 4);
      }
      uVar3 = *puVar13;
      local_4c = (uint)uVar2;
      uVar5 = FUN_00420f3f(&local_4c,0,1);
      if (uVar5 != 0xffffffff) {
        local_4c = (uint)uVar2;
        do {
          if (*(uint *)(param_1_00 + 0x14) < uVar5) {
            FUN_00a3fb10();
          }
          if (*(uint *)(param_1_00 + 0x18) < 8) {
            iVar7 = param_1_00 + 4;
          }
          else {
            iVar7 = *(int *)(param_1_00 + 4);
          }
          local_50 = local_50 + 1;
          *(undefined2 *)(iVar7 + uVar5 * 2) = uVar3;
        } while ((param_3 != '\0') &&
                (uVar5 = FUN_00420f3f(&local_4c,uVar5 + 1,1), uVar5 != 0xffffffff));
      }
    }
    else if (param_3 == '\0') {
      psVar6 = (short *)FUN_00432c6c();
      psVar11 = psVar6;
      do {
        sVar1 = *psVar11;
        psVar11 = psVar11 + 1;
      } while (sVar1 != 0);
      iVar7 = FUN_00420f3f(psVar6,0,(int)psVar11 - (int)(psVar6 + 1) >> 1);
      if (iVar7 != -1) {
        FUN_00412114(iVar7,*(undefined4 *)(param_1 + 0x14),param_2,0,0xffffffff);
        local_50 = 1;
      }
    }
    else {
      iVar7 = *(int *)(param_2 + 0x14);
      local_44 = 0;
      local_40 = 0;
      local_3c = (void *)0x0;
      local_4 = 0;
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar8 = param_1 + 4;
      }
      else {
        iVar8 = *(int *)(param_1 + 4);
      }
      iVar8 = FUN_00420f3f(iVar8,0,local_4c);
      local_48 = iVar8;
      if (iVar8 != -1) {
        do {
          local_48 = iVar8;
          FUN_00850560(&local_48);
          local_50 = local_50 + 1;
          if (*(uint *)(param_1 + 0x18) < 8) {
            iVar9 = param_1 + 4;
          }
          else {
            iVar9 = *(int *)(param_1 + 4);
          }
          iVar8 = FUN_00420f3f(iVar9,iVar8 + local_4c,*(undefined4 *)(param_1 + 0x14));
          uVar5 = local_50;
        } while (iVar8 != -1);
        uVar14 = 0;
        local_48 = iVar8;
        if (local_50 != 0) {
          local_1c = 7;
          local_20 = 0;
          local_30[0] = (undefined4 ****)((uint)local_30[0] & 0xffff0000);
          local_18 = (void *)0x0;
          local_4 = CONCAT31(local_4._1_3_,1);
          iVar7 = (iVar7 - local_4c) * local_50 + *(int *)(param_1_00 + 0x14);
          if ((iVar7 != 7) && (cVar4 = FUN_004182d2(iVar7,1), cVar4 != '\0')) {
            local_20 = 0;
            ppppuVar10 = local_30[0];
            if (local_1c < 8) {
              ppppuVar10 = local_30;
            }
            *(undefined2 *)ppppuVar10 = 0;
          }
          iVar7 = 0;
          if (uVar5 != 0) {
            do {
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_44 <= uVar14)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                             "wxVector<unsigned int>::at","idx < m_size",0);
              }
              iVar8 = *(int *)((int)local_3c + uVar14 * 4);
              if (iVar7 != iVar8) {
                FID_conflict_append(param_1_00,iVar7,iVar8 - iVar7);
              }
              FID_conflict_append(local_38,0,0xffffffff);
              uVar14 = uVar14 + 1;
              iVar7 = local_4c + iVar8;
            } while (uVar14 < local_50);
          }
          if (iVar7 != *(int *)(param_1_00 + 0x14)) {
            FID_conflict_append(param_1_00,iVar7,*(int *)(param_1_00 + 0x14) - iVar7);
          }
          FUN_0043165e(local_34);
          _free(local_18);
          if (7 < local_1c) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_30[0]);
          }
          local_1c = 7;
          local_20 = 0;
          local_30[0] = (undefined4 ****)((uint)local_30[0] & 0xffff0000);
          _free(local_3c);
          goto LAB_00852db2;
        }
      }
      _free(local_3c);
    }
  }
LAB_00852db2:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_00852de0(undefined4 param_1_00,int param_1,byte param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc73c9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  local_4 = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  if ((param_2 & 1) != 0) {
    FUN_008517a0(0);
  }
  if ((param_2 & 2) != 0) {
    FUN_008517a0(1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00852e80(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  int iVar4;
  int unaff_EBX;
  int iVar5;
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6e08;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  iVar5 = 0x400;
  FUN_00852280(unaff_EBX,0x401);
  iVar1 = *local_10;
  while (iVar1 != 0) {
    local_4 = 0;
    piVar3 = __errno();
    *piVar3 = 0;
    iVar4 = FUN_008930b0(iVar1,iVar5,param_1,param_2,uVar2);
    *(undefined2 *)(iVar1 + iVar5 * 2) = 0;
    if (iVar4 < 0) {
      piVar3 = __errno();
      if ((*piVar3 == 0x2a) || (piVar3 = __errno(), *piVar3 == 0x16)) break;
      iVar5 = iVar5 * 2;
    }
    else {
      if (iVar4 < iVar5) {
        local_4 = 0xffffffff;
        FUN_00851bf0();
        FUN_00852340();
        ExceptionList = local_c;
        return *(undefined4 *)(unaff_EBX + 0x14);
      }
      iVar5 = iVar4 + 1;
    }
    local_4 = 0xffffffff;
    FUN_00851bf0();
    FUN_00852280(unaff_EBX,iVar5 + 1);
    iVar1 = *local_10;
  }
  local_4 = 0xffffffff;
  FUN_00851bf0();
  ExceptionList = local_c;
  return 0xffffffff;
}



void FUN_00852fa0(undefined4 param_1,undefined4 param_2)

{
  FUN_00852e80(param_1,param_2);
  return;
}



void __thiscall FUN_00852fc0(int param_1_00,int param_1)

{
  wchar_t wVar1;
  wchar_t *pwVar2;
  int iVar3;
  undefined4 ****_SubStr;
  wchar_t *pwVar4;
  wchar_t *pwVar5;
  wchar_t *local_30;
  wchar_t *local_2c;
  undefined4 ****local_24 [4];
  undefined4 local_14;
  uint local_10;
  void *local_c;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_30;
  if (*(uint *)(param_1 + 0x18) < 8) {
    pwVar5 = (wchar_t *)(param_1 + 4);
  }
  else {
    pwVar5 = *(wchar_t **)(param_1 + 4);
  }
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    pwVar4 = (wchar_t *)(param_1_00 + 4);
  }
  else {
    pwVar4 = *(wchar_t **)(param_1_00 + 4);
  }
  local_2c = (wchar_t *)0x0;
  do {
    wVar1 = *pwVar5;
    local_30 = (wchar_t *)0x0;
    pwVar2 = pwVar5;
    pwVar5 = local_2c;
    while (local_2c = pwVar5, wVar1 != L'\0') {
      pwVar5 = pwVar2;
      if (wVar1 == L'*') {
        for (; (*pwVar5 == L'*' || (*pwVar5 == L'?')); pwVar5 = pwVar5 + 1) {
        }
        local_30 = pwVar4;
        local_2c = pwVar2;
        if (*pwVar5 == L'\0') goto LAB_00853121;
        pwVar2 = _wcspbrk(pwVar5,L"*?");
        if (pwVar2 == (wchar_t *)0x0) {
          pwVar2 = pwVar5;
          do {
            wVar1 = *pwVar2;
            pwVar2 = pwVar2 + 1;
          } while (wVar1 != L'\0');
          iVar3 = (int)pwVar2 - (int)(pwVar5 + 1);
        }
        else {
          iVar3 = (int)pwVar2 - (int)pwVar5;
        }
        iVar3 = iVar3 >> 1;
        FUN_00852140(pwVar5,iVar3);
        _SubStr = local_24[0];
        if (local_10 < 8) {
          _SubStr = local_24;
        }
        pwVar4 = _wcsstr(pwVar4,(wchar_t *)_SubStr);
        if (pwVar4 == (wchar_t *)0x0) {
          _free(local_c);
          if (7 < local_10) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_24[0]);
          }
          goto LAB_00853159;
        }
        pwVar4 = pwVar4 + iVar3 + -1;
        pwVar2 = pwVar5 + iVar3 + -1;
        _free(local_c);
        if (7 < local_10) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_24[0]);
        }
        local_10 = 7;
        local_14 = 0;
        local_24[0] = (undefined4 ****)((uint)local_24[0] & 0xffff0000);
      }
      else if (wVar1 == L'?') {
        if (*pwVar4 == L'\0') goto LAB_00853159;
      }
      else if (wVar1 != *pwVar4) goto LAB_00853159;
      pwVar5 = pwVar2 + 1;
      pwVar2 = pwVar2 + 1;
      pwVar4 = pwVar4 + 1;
      wVar1 = *pwVar5;
      pwVar5 = local_2c;
    }
    if (*pwVar4 == L'\0') {
LAB_00853121:
      ___security_check_cookie_4();
      return;
    }
    if (local_30 == (wchar_t *)0x0) {
LAB_00853159:
      ___security_check_cookie_4();
      return;
    }
    pwVar4 = local_30 + 1;
  } while( true );
}



int __thiscall FUN_00853170(int param_1_00,int param_1)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6cd3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 1;
  if (*(uint *)(param_1 + 0x18) < 0x10) {
    iVar1 = param_1 + 4;
  }
  else {
    iVar1 = *(int *)(param_1 + 4);
  }
  FUN_0084b140(iVar1,*(undefined4 *)(param_1 + 0x14));
  ExceptionList = local_c;
  return param_1_00;
}



int FUN_008531f0(int param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc73c9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  FID_conflict_append(param_3,0,0xffffffff);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00853280(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6ec9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008520d0(param_2,1);
  local_4 = 0;
  FID_conflict_append(param_3,0,0xffffffff);
  ExceptionList = local_c;
  return param_1;
}



int FUN_00853300(int param_1,int param_2,char *param_3)

{
  char cVar1;
  uint uVar2;
  char *pcVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcefa9;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  pcVar3 = param_3;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  cVar1 = FUN_0081c141(pcVar3 + (*(int *)(param_2 + 0x14) - (int)(param_3 + 1)));
  if ((cVar1 == '\0') && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_00840480("..\\..\\src\\common\\string.cpp",0x28d,"operator +","Assert failure",
                 L"out of memory in wxString::operator+",uVar2);
  }
  FID_conflict_append(param_2,0,0xffffffff);
  FUN_0084b060(param_3);
  ExceptionList = local_c;
  return param_1;
}



int FUN_008533d0(int param_1,int param_2,short *param_3)

{
  short sVar1;
  char cVar2;
  uint uVar3;
  short *psVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcefa9;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  psVar4 = param_3;
  do {
    sVar1 = *psVar4;
    psVar4 = psVar4 + 1;
  } while (sVar1 != 0);
  cVar2 = FUN_0081c141(((int)psVar4 - (int)(param_3 + 1) >> 1) + *(int *)(param_2 + 0x14));
  if ((cVar2 == '\0') && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_00840480("..\\..\\src\\common\\string.cpp",0x29d,"operator +","Assert failure",
                 L"out of memory in wxString::operator+",uVar3);
  }
  FID_conflict_append(param_2,0,0xffffffff);
  if (param_3 == (short *)0x0) {
    param_3 = &DAT_00fae9c8;
  }
  psVar4 = param_3;
  do {
    sVar1 = *psVar4;
    psVar4 = psVar4 + 1;
  } while (sVar1 != 0);
  FUN_00473ccc(param_3,(int)psVar4 - (int)(param_3 + 1) >> 1);
  ExceptionList = local_c;
  return param_1;
}



int FUN_008534d0(int param_1,char *param_2,int param_3)

{
  char cVar1;
  uint uVar2;
  char *pcVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcefa9;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  pcVar3 = param_2;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  cVar1 = FUN_0081c141(pcVar3 + (*(int *)(param_3 + 0x14) - (int)(param_2 + 1)));
  if ((cVar1 == '\0') && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_00840480("..\\..\\src\\common\\string.cpp",0x2ad,"operator +","Assert failure",
                 L"out of memory in wxString::operator+",uVar2);
  }
  FUN_0083fc60(param_2);
  FID_conflict_append(param_3,0,0xffffffff);
  ExceptionList = local_c;
  return param_1;
}



int FUN_008535a0(int param_1,short *param_2,int param_3)

{
  short sVar1;
  char cVar2;
  uint uVar3;
  short *psVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcefa9;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  psVar4 = param_2;
  do {
    sVar1 = *psVar4;
    psVar4 = psVar4 + 1;
  } while (sVar1 != 0);
  cVar2 = FUN_0081c141(((int)psVar4 - (int)(param_2 + 1) >> 1) + *(int *)(param_3 + 0x14));
  if ((cVar2 == '\0') && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_00840480("..\\..\\src\\common\\string.cpp",0x2bd,"operator +","Assert failure",
                 L"out of memory in wxString::operator+",uVar3);
  }
  if (param_2 == (short *)0x0) {
    FUN_00432156();
  }
  else {
    psVar4 = param_2;
    do {
      sVar1 = *psVar4;
      psVar4 = psVar4 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(param_2,(int)psVar4 - (int)(param_2 + 1) >> 1);
  }
  FID_conflict_append(param_3,0,0xffffffff);
  ExceptionList = local_c;
  return param_1;
}



void FUN_008536a0(int param_1,byte *param_2,int param_3)

{
  byte bVar1;
  uint uVar2;
  ushort *puVar3;
  undefined4 local_40;
  ushort **local_3c;
  int local_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00bc6e40;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_40;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  local_38 = param_1;
  local_40 = 0;
  if ((param_2 == (byte *)0x0) || (param_3 == 0)) {
    FUN_004325b6(PTR_DAT_03236318);
  }
  else {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 0;
    FUN_00852280(local_34,param_3);
    puVar3 = *local_3c;
    local_4._0_1_ = 1;
    if (param_3 != 0) {
      do {
        bVar1 = *param_2;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (0x7f < bVar1)) {
          FUN_00840480("..\\..\\src\\common\\string.cpp",0x4a9,"wxString::FromAscii","c < 0x80",
                       L"Non-ASCII value passed to FromAscii().",uVar2);
        }
        *puVar3 = (ushort)bVar1;
        puVar3 = puVar3 + 1;
        param_3 = param_3 + -1;
        param_1 = local_38;
        param_2 = param_2 + 1;
      } while (param_3 != 0);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_00851b70();
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00853800(undefined4 param_1,char *param_2)

{
  char cVar1;
  char *pcVar2;
  
  if (param_2 != (char *)0x0) {
    pcVar2 = param_2;
    do {
      cVar1 = *pcVar2;
      pcVar2 = pcVar2 + 1;
    } while (cVar1 != '\0');
    FUN_008536a0(param_1,param_2,(int)pcVar2 - (int)(param_2 + 1));
    return param_1;
  }
  FUN_008536a0(param_1,0,0);
  return param_1;
}



int FUN_00853850(int param_1,undefined4 param_2)

{
  uint uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6e91;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  FUN_004325b6(param_2);
  local_4 = 1;
  FUN_00852e80(local_30,&stack0x0000000c,uVar1);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



int FUN_00853900(int param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6ec9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  FUN_00852e80(param_2,param_3,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00853980(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  FUN_004325b6(param_2);
  local_4 = 0;
  uVar2 = FUN_00852e80(local_30,&stack0x0000000c,uVar1);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return uVar2;
}



int * FUN_00853a10(int *param_1)

{
  uint uVar1;
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0ea8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_00851ad0(&local_10);
  local_4 = 0;
  if (*local_10 == 0) {
    FUN_00417a55((*(int *)((int)param_1 + *(int *)(*param_1 + 4) + 0x28) == 0) * '\x04' + '\x02',0);
  }
  else {
    FUN_004f48b2(param_1,*local_10,uVar1);
  }
  FUN_0043c1dd();
  ExceptionList = local_c;
  return param_1;
}



void FUN_00853aa0(undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  int local_18 [2];
  char local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1eb8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  uVar2 = FUN_00432231(local_18);
  local_4 = 0;
  FUN_00853a10(param_1,uVar2,uVar1);
  if ((local_10 != '\0') && (local_18[0] != 0)) {
    _free(*(void **)(local_18[0] + 0x1c));
    if (7 < *(uint *)(local_18[0] + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(local_18[0] + 4));
    }
    *(undefined4 *)(local_18[0] + 0x18) = 7;
    *(undefined4 *)(local_18[0] + 0x14) = 0;
    *(undefined2 *)(local_18[0] + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_18[0]);
  }
  ExceptionList = local_c;
  return;
}



int FUN_00853b50(int param_1,undefined8 param_2,int param_11)

{
  uint local_90;
  int local_8c;
  uint auStack_7c [15];
  undefined **local_40 [13];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6f25;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_11 < -1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\string.cpp",0x746,"wxString::FromCDouble","precision >= -1"
                   ,"Invalid negative precision",DAT_0323f878 ^ (uint)&stack0xffffff4c);
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    *(undefined4 *)(param_1 + 0x1c) = 0;
    ExceptionList = local_c;
    return param_1;
  }
  FUN_00745d64(2,1);
  local_4 = 1;
  if (param_11 != -1) {
    *(int *)((int)auStack_7c + *(int *)(local_8c + 4) + 4) = param_11;
    *(uint *)((int)auStack_7c + *(int *)(local_8c + 4)) =
         *(uint *)((int)auStack_7c + *(int *)(local_8c + 4)) & 0xffffefff | 0x2000;
  }
  FUN_0082e680(param_2);
  FUN_00745bf6();
  local_4._0_1_ = 2;
  FUN_00853170();
  if (0xf < local_90) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_4 = (uint)local_4._1_3_ << 8;
  ~basic_ostringstream<>();
  local_40[0] = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)local_40);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00853ce0(undefined4 *param_1_00,undefined param_1)

{
  param_1_00[1] = 0;
  *param_1_00 = 0;
  param_1_00[2] = 0;
  *(undefined *)(param_1_00 + 3) = param_1;
  return;
}



void __fastcall FUN_00853d00(int param_1)

{
  *(undefined4 *)(param_1 + 4) = 0;
  return;
}



uint __thiscall FUN_00853d10(int param_1_00,int param_1,char param_2,char param_3)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  
  if (*(char *)(param_1_00 + 0xc) == '\0') {
    if (param_3 == '\0') {
      uVar3 = 0;
      if (*(int *)(param_1_00 + 4) != 0) {
        iVar1 = 0;
        do {
          if (*(int *)(*(int *)(param_1_00 + 8) + 0x14 + iVar1) == *(int *)(param_1 + 0x14)) {
            if (param_2 == '\0') {
              iVar2 = FUN_00850470(param_1);
            }
            else {
              iVar2 = FUN_00850760(param_1);
            }
            if (iVar2 == 0) {
              return uVar3;
            }
          }
          uVar3 = uVar3 + 1;
          iVar1 = iVar1 + 0x24;
          if (*(uint *)(param_1_00 + 4) <= uVar3) {
            return 0xffffffff;
          }
        } while( true );
      }
    }
    else {
      uVar3 = *(uint *)(param_1_00 + 4);
      if (uVar3 != 0) {
        iVar1 = uVar3 * 0x24;
        do {
          iVar1 = iVar1 + -0x24;
          uVar3 = uVar3 - 1;
          if (*(int *)(*(int *)(param_1_00 + 8) + 0x14 + iVar1) == *(int *)(param_1 + 0x14)) {
            if (param_2 == '\0') {
              iVar2 = FUN_00850470(param_1);
            }
            else {
              iVar2 = FUN_00850760(param_1);
            }
            if (iVar2 == 0) {
              return uVar3;
            }
          }
          if (uVar3 == 0) {
            return 0xffffffff;
          }
        } while( true );
      }
    }
  }
  else {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((param_2 == '\0' || (param_3 != '\0')))) {
      FUN_00840480("..\\..\\src\\common\\arrstr.cpp",0xdb,"wxArrayString::Index",
                   "bCase && !bFromEnd",L"search parameters ignored for auto sorted array");
    }
    uVar3 = 0;
    uVar5 = *(uint *)(param_1_00 + 4);
    if (*(uint *)(param_1_00 + 4) != 0) {
      do {
        uVar4 = uVar5 + uVar3 >> 1;
        iVar1 = FUN_00850760(*(int *)(param_1_00 + 8) + uVar4 * 0x24);
        if (-1 < iVar1) {
          if (iVar1 < 1) {
            return uVar4;
          }
          uVar3 = uVar4 + 1;
          uVar4 = uVar5;
        }
        uVar5 = uVar4;
      } while (uVar3 < uVar4);
    }
  }
  return 0xffffffff;
}



uint __thiscall FUN_00853e60(int param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  
  uVar1 = *(uint *)(param_1_00 + 4);
  if (uVar1 != *(uint *)(param_1 + 4)) {
    return uVar1 & 0xffffff00;
  }
  uVar2 = 0;
  if (uVar1 != 0) {
    iVar4 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 4) <= uVar2)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      iVar3 = *(int *)(param_1 + 8) + iVar4;
      uVar1 = param_1;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar2)) {
        uVar1 = FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                             "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      if (*(int *)(*(int *)(param_1_00 + 8) + 0x14 + iVar4) != *(int *)(iVar3 + 0x14)) {
LAB_00853f22:
        return uVar1 & 0xffffff00;
      }
      iVar3 = FUN_00850760(iVar3);
      uVar1 = CONCAT31((int3)((uint)iVar3 >> 8),iVar3 == 0);
      if (iVar3 != 0) goto LAB_00853f22;
      uVar2 = uVar2 + 1;
      iVar4 = iVar4 + 0x24;
    } while (uVar2 < *(uint *)(param_1_00 + 4));
  }
  return CONCAT31((int3)(uVar1 >> 8),1);
}



void __fastcall FUN_00853f30(int param_1)

{
  void *pvVar1;
  
  pvVar1 = *(void **)(param_1 + 8);
  if (pvVar1 != (void *)0x0) {
    _eh_vector_destructor_iterator_(pvVar1,0x24,*(int *)((int)pvVar1 + -4),FUN_0040159c);
    FUN_00a3f66c((int)pvVar1 + -4);
  }
  return;
}



void __fastcall FUN_00853f60(undefined4 *param_1)

{
  void *pvVar1;
  
  param_1[1] = 0;
  *param_1 = 0;
  pvVar1 = (void *)param_1[2];
  if (pvVar1 != (void *)0x0) {
    _eh_vector_destructor_iterator_(pvVar1,0x24,*(int *)((int)pvVar1 + -4),FUN_0040159c);
    FUN_00a3f66c((int)pvVar1 + -4);
    param_1[2] = 0;
  }
  return;
}



int __thiscall FUN_00853fa0(int param_1_00,undefined2 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6cd3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 1;
  FUN_00412939(param_2,param_1);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00854010(uint *param_1_00,uint *param_1)

{
  void *pvVar1;
  uint uVar2;
  uint *puVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6f66;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  uVar4 = *param_1_00;
  if (uVar4 - param_1_00[1] < param_1) {
    uVar7 = 0;
    if (uVar4 == 0) {
      *param_1_00 = 0x10;
      if (0x10 < param_1) {
        *param_1_00 = (uint)param_1;
      }
      uVar4 = *param_1_00;
      uVar7 = -(uint)((int)((ulonglong)uVar4 * 0x24 >> 0x20) != 0) | (uint)((ulonglong)uVar4 * 0x24)
      ;
      puVar3 = (uint *)FUN_00823c23(-(uint)(0xfffffffb < uVar7) | uVar7 + 4,uVar2);
      uStack_4 = 0;
      if (puVar3 == (uint *)0x0) {
        param_1_00[2] = 0;
      }
      else {
        *puVar3 = uVar4;
        _eh_vector_constructor_iterator_(puVar3 + 1,0x24,uVar4,FUN_00418b1d,FUN_0040159c);
        param_1_00[2] = (uint)(puVar3 + 1);
      }
    }
    else {
      if (uVar4 < 0x10) {
        uVar4 = 0x10;
      }
      else {
        uVar4 = uVar4 >> 1;
        if (0x1000 < uVar4) {
          uVar4 = 0x1000;
        }
      }
      if (param_1 < uVar4) {
        param_1 = (uint *)uVar4;
      }
      *param_1_00 = *param_1_00 + (int)param_1;
      uVar4 = *param_1_00;
      uVar5 = -(uint)((int)((ulonglong)uVar4 * 0x24 >> 0x20) != 0) | (uint)((ulonglong)uVar4 * 0x24)
      ;
      puVar3 = (uint *)FUN_00823c23(-(uint)(0xfffffffb < uVar5) | uVar5 + 4,uVar2);
      uStack_4 = 1;
      if (puVar3 == (uint *)0x0) {
        param_1 = (uint *)0x0;
      }
      else {
        param_1 = puVar3 + 1;
        *puVar3 = uVar4;
        _eh_vector_constructor_iterator_(param_1,0x24,uVar4,FUN_00418b1d,FUN_0040159c);
      }
      uStack_4 = 0xffffffff;
      if (param_1_00[1] != 0) {
        iVar6 = 0;
        puVar3 = param_1;
        do {
          if (puVar3 != (uint *)(param_1_00[2] + iVar6)) {
            FID_conflict_assign((uint *)(param_1_00[2] + iVar6),0,0xffffffff);
          }
          uVar7 = uVar7 + 1;
          iVar6 = iVar6 + 0x24;
          puVar3 = puVar3 + 9;
        } while (uVar7 < param_1_00[1]);
      }
      pvVar1 = (void *)param_1_00[2];
      if (pvVar1 != (void *)0x0) {
        _eh_vector_destructor_iterator_(pvVar1,0x24,*(int *)((int)pvVar1 + -4),FUN_0040159c);
        FUN_00a3f66c((int)pvVar1 + -4);
      }
      param_1_00[2] = (uint)param_1;
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008541b0(uint *param_1_00,uint param_1)

{
  void *pvVar1;
  uint *puVar2;
  uint uVar3;
  int iVar4;
  uint *puStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bddcab;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1_00 < param_1) {
    uVar3 = -(uint)((int)((ulonglong)param_1 * 0x24 >> 0x20) != 0) |
            (uint)((ulonglong)param_1 * 0x24);
    puVar2 = (uint *)FUN_00823c23(-(uint)(0xfffffffb < uVar3) | uVar3 + 4,
                                  DAT_0323f878 ^ (uint)&stack0xffffffe0);
    uVar3 = 0;
    uStack_4 = 0;
    if (puVar2 == (uint *)0x0) {
      puStack_10 = (uint *)0x0;
    }
    else {
      puStack_10 = puVar2 + 1;
      *puVar2 = param_1;
      _eh_vector_constructor_iterator_(puStack_10,0x24,param_1,FUN_00418b1d,FUN_0040159c);
    }
    uStack_4 = 0xffffffff;
    if (puStack_10 != (uint *)0x0) {
      if (param_1_00[1] != 0) {
        iVar4 = 0;
        puVar2 = puStack_10;
        do {
          if (puVar2 != (uint *)(param_1_00[2] + iVar4)) {
            FID_conflict_assign((uint *)(param_1_00[2] + iVar4),0,0xffffffff);
          }
          uVar3 = uVar3 + 1;
          iVar4 = iVar4 + 0x24;
          puVar2 = puVar2 + 9;
        } while (uVar3 < param_1_00[1]);
      }
      pvVar1 = (void *)param_1_00[2];
      if (pvVar1 != (void *)0x0) {
        _eh_vector_destructor_iterator_(pvVar1,0x24,*(int *)((int)pvVar1 + -4),FUN_0040159c);
        FUN_00a3f66c((int)pvVar1 + -4);
      }
      param_1_00[2] = (uint)puStack_10;
      *param_1_00 = param_1;
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008542c0(int param_1_00,int param_1,uint param_2,int param_3)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  uVar2 = *(uint *)(param_1_00 + 4);
  if (uVar2 < param_2) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\arrstr.cpp",0x134,"wxArrayString::Insert",
                   "nIndex <= m_nCount",L"bad index in wxArrayString::Insert");
      return;
    }
  }
  else if (uVar2 + param_3 < uVar2) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\arrstr.cpp",0x136,"wxArrayString::Insert",
                   "m_nCount <= m_nCount + nInsert",L"array size overflow in wxArrayString::Insert")
      ;
      return;
    }
  }
  else {
    FUN_00854010(param_3);
    iVar4 = (*(int *)(param_1_00 + 4) - param_2) + -1;
    if (-1 < iVar4) {
      iVar3 = (iVar4 + param_2 + param_3) * 0x24;
      iVar5 = (iVar4 + param_2) * 0x24;
      do {
        iVar1 = iVar5 + *(int *)(param_1_00 + 8);
        if (iVar3 + *(int *)(param_1_00 + 8) != iVar1) {
          FID_conflict_assign(iVar1,0,0xffffffff);
        }
        iVar4 = iVar4 + -1;
        iVar5 = iVar5 + -0x24;
        iVar3 = iVar3 + -0x24;
      } while (-1 < iVar4);
    }
    if (param_3 != 0) {
      iVar4 = param_2 * 0x24;
      param_2 = param_3;
      do {
        if (*(int *)(param_1_00 + 8) + iVar4 != param_1) {
          FID_conflict_assign(param_1,0,0xffffffff);
        }
        iVar4 = iVar4 + 0x24;
        param_2 = param_2 + -1;
      } while (param_2 != 0);
    }
    *(int *)(param_1_00 + 4) = *(int *)(param_1_00 + 4) + param_3;
  }
  return;
}



void __thiscall FUN_008543e0(int param_1_00,uint param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  
  uVar4 = param_1;
  uVar3 = *(uint *)(param_1_00 + 4);
  if (param_1 < uVar3) {
    uVar1 = param_2 + param_1;
    if (uVar1 <= uVar3) {
      iVar5 = uVar3 - param_1;
      param_1 = 0;
      if (iVar5 != param_2) {
        iVar5 = uVar4 * 0x24;
        iVar6 = uVar1 * 0x24;
        do {
          iVar2 = iVar6 + *(int *)(param_1_00 + 8);
          if (iVar5 + *(int *)(param_1_00 + 8) != iVar2) {
            FID_conflict_assign(iVar2,0,0xffffffff);
          }
          param_1 = param_1 + 1;
          iVar6 = iVar6 + 0x24;
          iVar5 = iVar5 + 0x24;
        } while (param_1 < (*(int *)(param_1_00 + 4) - uVar4) - param_2);
      }
      *(int *)(param_1_00 + 4) = *(int *)(param_1_00 + 4) - param_2;
      return;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\arrstr.cpp",0x173,"wxArrayString::RemoveAt",
                   "nIndex + nRemove <= m_nCount",
                   L"removing too many elements in wxArrayString::Remove");
      return;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\arrstr.cpp",0x171,"wxArrayString::RemoveAt",
                 "nIndex < m_nCount",L"bad index in wxArrayString::Remove");
  }
  return;
}



void FUN_008544c0(undefined *param_1,undefined *param_2)

{
  uint uVar1;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6f98;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  if (param_1 != param_2) {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    FID_conflict_assign(param_1,0,0xffffffff);
    local_18 = (void *)0x0;
    local_4 = 0;
    FID_conflict_assign(param_2,0,0xffffffff);
    if (param_2 != local_34) {
      FID_conflict_assign(local_34,0,0xffffffff);
    }
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30,uVar1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00854590(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  uint param_10;
  void *in_stack_0000002c;
  code *param_11;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6fc8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  if (param_3 < param_2) {
    do {
      iVar4 = (param_2 + -1) / 2;
      iVar1 = param_1 + iVar4 * 0x24;
      iVar3 = (*param_11)(iVar1,&param_4,uVar2);
      if (-1 < iVar3) break;
      if (param_1 + param_2 * 0x24 != iVar1) {
        FID_conflict_assign(iVar1,0,0xffffffff);
      }
      param_2 = iVar4;
    } while (param_3 < iVar4);
  }
  if ((undefined4 *)(param_1 + param_2 * 0x24) != &param_4) {
    FID_conflict_assign(&param_4,0,0xffffffff);
  }
  _free(in_stack_0000002c);
  if (7 < param_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_5);
  }
  ExceptionList = local_c;
  return;
}



int FUN_00854670(int param_1,int param_2,int param_3)

{
  if (param_1 == param_2) {
    return param_3;
  }
  do {
    param_2 = param_2 + -0x24;
    param_3 = param_3 + -0x24;
    if (param_3 != param_2) {
      FID_conflict_assign(param_2,0,0xffffffff);
    }
  } while (param_2 != param_1);
  return param_3;
}



int __thiscall FUN_008546b0(int param_1_00,int param_1,undefined4 param_2)

{
  int iVar1;
  
  iVar1 = (param_1 - *(int *)(param_1_00 + 8)) / 0x24;
  FUN_008542c0(param_2,iVar1,1);
  return *(int *)(param_1_00 + 8) + iVar1 * 0x24;
}



void __thiscall thunk_FUN_008541b0(uint *param_1_00,uint param_1)

{
  void *pvVar1;
  uint *puVar2;
  uint uVar3;
  int iVar4;
  uint *puStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bddcab;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  if (*param_1_00 < param_1) {
    uVar3 = -(uint)((int)((ulonglong)param_1 * 0x24 >> 0x20) != 0) |
            (uint)((ulonglong)param_1 * 0x24);
    puVar2 = (uint *)FUN_00823c23(-(uint)(0xfffffffb < uVar3) | uVar3 + 4,
                                  DAT_0323f878 ^ (uint)&stack0xffffffe0);
    uVar3 = 0;
    uStack_4 = 0;
    if (puVar2 == (uint *)0x0) {
      puStack_10 = (uint *)0x0;
    }
    else {
      puStack_10 = puVar2 + 1;
      *puVar2 = param_1;
      _eh_vector_constructor_iterator_(puStack_10,0x24,param_1,FUN_00418b1d,FUN_0040159c);
    }
    uStack_4 = 0xffffffff;
    if (puStack_10 != (uint *)0x0) {
      if (param_1_00[1] != 0) {
        iVar4 = 0;
        puVar2 = puStack_10;
        do {
          if (puVar2 != (uint *)(param_1_00[2] + iVar4)) {
            FID_conflict_assign((uint *)(param_1_00[2] + iVar4),0,0xffffffff);
          }
          uVar3 = uVar3 + 1;
          iVar4 = iVar4 + 0x24;
          puVar2 = puVar2 + 9;
        } while (uVar3 < param_1_00[1]);
      }
      pvVar1 = (void *)param_1_00[2];
      if (pvVar1 != (void *)0x0) {
        _eh_vector_destructor_iterator_(pvVar1,0x24,*(int *)((int)pvVar1 + -4),FUN_0040159c);
        FUN_00a3f66c((int)pvVar1 + -4);
      }
      param_1_00[2] = (uint)puStack_10;
      *param_1_00 = param_1;
    }
  }
  ExceptionList = pvStack_c;
  return;
}



uint __thiscall FUN_00854700(int param_1_00,int param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  
  if (*(char *)(param_1_00 + 0xc) == '\0') {
    FUN_00854010(param_2);
    uVar5 = 0;
    if (param_2 != 0) {
      do {
        if (*(int *)(param_1_00 + 8) + (*(int *)(param_1_00 + 4) + uVar5) * 0x24 != param_1) {
          FID_conflict_assign(param_1,0,0xffffffff);
        }
        uVar5 = uVar5 + 1;
      } while (uVar5 < param_2);
    }
    uVar5 = *(uint *)(param_1_00 + 4);
    *(uint *)(param_1_00 + 4) = uVar5 + param_2;
    return uVar5;
  }
  uVar5 = *(uint *)(param_1_00 + 4);
  uVar2 = 0;
  uVar3 = uVar2;
  uVar4 = uVar5;
  if (uVar5 != 0) {
    do {
      uVar2 = uVar3 + uVar5 >> 1;
      iVar1 = FUN_00850760(*(int *)(param_1_00 + 8) + uVar2 * 0x24);
      uVar4 = uVar2;
      if (-1 < iVar1) {
        if (iVar1 < 1) break;
        uVar3 = uVar2 + 1;
        uVar4 = uVar5;
      }
      uVar2 = uVar3;
      uVar3 = uVar2;
      uVar5 = uVar4;
    } while (uVar2 < uVar4);
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar2 != uVar4)) {
    FUN_00840480("..\\..\\src\\common\\arrstr.cpp",0x11d,"wxArrayString::Add","lo == hi",
                 L"binary search broken");
  }
  FUN_008542c0(param_1,uVar2,param_2);
  return uVar2;
}



void FUN_008547f0(int param_1,int param_2,short param_3,short param_4)

{
  short sVar1;
  uint uVar2;
  char cVar3;
  uint uVar4;
  uint uVar5;
  undefined4 ****ppppuVar6;
  short **ppsVar7;
  int iVar8;
  short **ppsVar9;
  int iVar10;
  short **ppsVar11;
  int iVar12;
  uint local_4c;
  int local_48;
  int local_44;
  short **local_40;
  uint local_3c;
  int local_38;
  undefined local_34 [4];
  undefined4 ****local_30 [4];
  uint local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6ff8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_4c;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  uVar2 = *(uint *)(param_2 + 4);
  local_38 = param_1;
  local_48 = param_2;
  local_3c = uVar2;
  if (uVar2 == 0) {
    FUN_004325b6(PTR_DAT_03236318);
  }
  else {
    local_1c = 7;
    local_20 = 0;
    local_30[0] = (undefined4 ****)((uint)local_30[0] & 0xffff0000);
    local_18 = (void *)0x0;
    local_4 = 0;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar2 == 0)) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                   "nIndex < m_nCount",L"wxArrayString: index out of bounds",uVar4);
    }
    iVar10 = *(int *)(*(int *)(param_2 + 8) + 0x14);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_2 + 4) <= uVar2 - 1)) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                   "nIndex < m_nCount",L"wxArrayString: index out of bounds",uVar4);
    }
    uVar4 = local_20;
    uVar5 = (*(int *)(*(int *)(param_2 + 8) + 0x14 + (uVar2 - 1) * 0x24) + iVar10) * uVar2 >> 1;
    if (((local_20 <= uVar5) && (local_1c != uVar5)) &&
       (cVar3 = FUN_004182d2(uVar5,1), cVar3 != '\0')) {
      ppppuVar6 = local_30[0];
      if (local_1c < 8) {
        ppppuVar6 = local_30;
      }
      local_20 = uVar4;
      *(undefined2 *)((int)ppppuVar6 + uVar4 * 2) = 0;
    }
    iVar10 = local_48;
    uVar4 = 0;
    if (param_4 == 0) {
      if (uVar2 != 0) {
        iVar12 = 0;
        do {
          if (uVar4 != 0) {
            FID_conflict_append(1,param_3);
          }
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar10 + 4) <= uVar4)) {
            FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                         "nIndex < m_nCount",L"wxArrayString: index out of bounds");
          }
          FID_conflict_append(*(int *)(iVar10 + 8) + iVar12,0,0xffffffff);
          uVar4 = uVar4 + 1;
          iVar12 = iVar12 + 0x24;
        } while (uVar4 < local_3c);
      }
    }
    else {
      local_4c = 0;
      if (uVar2 != 0) {
        local_44 = 0;
        do {
          uVar2 = local_4c;
          if (local_4c != 0) {
            FID_conflict_append(1,param_3);
          }
          iVar10 = local_48;
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(local_48 + 4) <= uVar2)) {
            FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                         "nIndex < m_nCount",L"wxArrayString: index out of bounds");
          }
          iVar12 = *(int *)(iVar10 + 8) + local_44;
          uVar2 = *(uint *)(iVar12 + 0x18);
          ppsVar7 = (short **)(iVar12 + 4);
          ppsVar11 = ppsVar7;
          if (7 < uVar2) {
            ppsVar11 = (short **)*ppsVar7;
          }
          if (ppsVar11 == (short **)0x0) {
LAB_00854a35:
            FUN_00a3fb10();
          }
          else {
            ppsVar9 = ppsVar7;
            if (7 < uVar2) {
              ppsVar9 = (short **)*ppsVar7;
            }
            if (ppsVar11 < ppsVar9) goto LAB_00854a35;
            if (7 < uVar2) {
              ppsVar7 = (short **)*ppsVar7;
            }
            if ((short **)((int)ppsVar7 + *(int *)(iVar12 + 0x14) * 2) < ppsVar11)
            goto LAB_00854a35;
          }
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar10 + 4) <= local_4c)) {
            FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                         "nIndex < m_nCount",L"wxArrayString: index out of bounds");
          }
          iVar10 = *(int *)(local_48 + 8) + local_44;
          uVar2 = *(uint *)(iVar10 + 0x18);
          ppsVar7 = (short **)(iVar10 + 4);
          local_40 = ppsVar7;
          if (7 < uVar2) {
            local_40 = (short **)*ppsVar7;
          }
          iVar8 = *(int *)(iVar10 + 0x14) * 2;
          local_40 = (short **)((int)local_40 + iVar8);
          if (local_40 == (short **)0x0) {
LAB_00854ab8:
            FUN_00a3fb10();
          }
          else {
            ppsVar9 = ppsVar7;
            if (7 < uVar2) {
              ppsVar9 = (short **)*ppsVar7;
            }
            if (local_40 < ppsVar9) goto LAB_00854ab8;
            if (7 < uVar2) {
              ppsVar7 = (short **)*ppsVar7;
            }
            if ((short **)(iVar8 + (int)ppsVar7) < local_40) goto LAB_00854ab8;
          }
          while( true ) {
            if ((iVar12 != -4) && ((iVar12 == 0 || (iVar12 != iVar10)))) {
              FUN_00a3fb10();
            }
            if (ppsVar11 == local_40) break;
            if (iVar12 != -4) {
              if (iVar12 == 0) {
                FUN_00a3fb10();
              }
              if (*(uint *)(iVar12 + 0x18) < 8) {
                iVar8 = iVar12 + 4;
              }
              else {
                iVar8 = *(int *)(iVar12 + 4);
              }
              if ((short **)(iVar8 + *(int *)(iVar12 + 0x14) * 2) <= ppsVar11) {
                FUN_00a3fb10();
              }
            }
            sVar1 = *(short *)ppsVar11;
            if (sVar1 == param_3) {
              FID_conflict_append(1,param_4);
            }
            FID_conflict_append(1,sVar1);
            if (iVar12 != -4) {
              if (iVar12 == 0) {
                FUN_00a3fb10();
              }
              if (*(uint *)(iVar12 + 0x18) < 8) {
                iVar8 = iVar12 + 4;
              }
              else {
                iVar8 = *(int *)(iVar12 + 4);
              }
              if ((short **)(iVar8 + *(int *)(iVar12 + 0x14) * 2) <= ppsVar11) {
                FUN_00a3fb10();
              }
            }
            ppsVar11 = (short **)((int)ppsVar11 + 2);
          }
          local_44 = local_44 + 0x24;
          local_4c = local_4c + 1;
        } while (local_4c < local_3c);
      }
    }
    FUN_00852340();
    iVar10 = local_38;
    *(undefined4 *)(local_38 + 0x18) = 7;
    *(undefined4 *)(local_38 + 0x14) = 0;
    *(undefined2 *)(local_38 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(iVar10 + 0x1c) = 0;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30[0]);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00854bf0(undefined4 param_1,undefined4 param_2,undefined4 param_3,code *param_4)

{
  int iVar1;
  
  iVar1 = (*param_4)(param_2,param_1);
  if (iVar1 < 0) {
    FUN_008544c0(param_2,param_1);
  }
  iVar1 = (*param_4)(param_3,param_2);
  if (iVar1 < 0) {
    FUN_008544c0(param_3,param_2);
  }
  iVar1 = (*param_4)(param_2,param_1);
  if (iVar1 < 0) {
    FUN_008544c0(param_2,param_1);
  }
  return;
}



void FUN_00854c50(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)

{
  int iVar1;
  void **ppvVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  uint param_10;
  void *in_stack_0000002c;
  code *param_11;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7028;
  local_4 = 0;
  iVar1 = param_2 * 2;
  ppvVar2 = &local_c;
  local_c = ExceptionList;
  iVar5 = param_2;
  while (ExceptionList = ppvVar2, iVar4 = iVar1 + 2, iVar4 < param_3) {
    iVar3 = (*param_11)();
    if (iVar3 < 0) {
      iVar4 = iVar1 + 1;
    }
    if (param_1 + iVar5 * 0x24 != param_1 + iVar4 * 0x24) {
      FID_conflict_assign();
    }
    ppvVar2 = (void **)ExceptionList;
    iVar5 = iVar4;
    iVar1 = iVar4 * 2;
  }
  if (iVar4 == param_3) {
    if (param_1 + iVar5 * 0x24 != param_1 + -0x24 + param_3 * 0x24) {
      FID_conflict_assign();
    }
    iVar5 = param_3 + -1;
  }
  FID_conflict_assign(&param_4,0,0xffffffff);
  FUN_00854590(param_1,iVar5,param_2);
  _free(in_stack_0000002c);
  if (param_10 < 8) {
    ExceptionList = local_c;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



int FUN_00854d70(int param_1,int param_2,int param_3)

{
  uint local_8;
  uint local_4;
  
  local_4 = local_4 & 0xffffff00;
  local_8 = local_8 & 0xffffff00;
  FUN_00854670(param_1,param_2,param_3,param_3,local_4,local_8);
  return param_3 + ((param_2 - param_1) / 0x24) * -0x24;
}



void FUN_00854dd0(int param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)

{
  uint param_10;
  void *param_11;
  undefined4 param_12;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7058;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if (param_3 != param_1) {
    FID_conflict_assign();
  }
  FID_conflict_assign(&param_4,0,0xffffffff);
  FUN_00854c50(param_1,0,(param_2 - param_1) / 0x24);
  _free(param_11);
  if (7 < param_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  ExceptionList = local_c;
  return;
}



void FUN_00854ea0(int param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  
  if (0x10 < *(uint *)(param_1 + 4)) {
    FUN_008541b0(*(uint *)(param_1 + 4));
  }
  uVar1 = *(uint *)(param_1 + 4);
  uVar3 = 0;
  if (uVar1 != 0) {
    iVar2 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar1 <= uVar3)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      FUN_00854700(*(int *)(param_1 + 8) + iVar2,1);
      uVar1 = *(uint *)(param_1 + 4);
      uVar3 = uVar3 + 1;
      iVar2 = iVar2 + 0x24;
    } while (uVar3 < uVar1);
  }
  return;
}



void FUN_00854f20(int param_1,int param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  iVar1 = (param_3 - param_1) / 0x24;
  if (0x28 < iVar1) {
    iVar1 = iVar1 + 1;
    iVar2 = (int)(iVar1 + (iVar1 >> 0x1f & 7U)) >> 3;
    iVar1 = iVar2 * 0x24 + param_1;
    FUN_00854bf0(param_1,iVar1,iVar2 * 0x48 + param_1,param_4);
    FUN_00854bf0(param_2 + iVar2 * -0x24,param_2,iVar2 * 0x24 + param_2,param_4);
    iVar3 = param_3 + iVar2 * -0x24;
    FUN_00854bf0(param_3 + iVar2 * -0x48,iVar3,param_3,param_4);
    FUN_00854bf0(iVar1,param_2,iVar3,param_4);
    return;
  }
  FUN_00854bf0(param_1,param_2,param_3,param_4);
  return;
}



void FUN_00854fe0(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  iVar1 = (param_2 - param_1) / 0x24;
  iVar3 = iVar1 / 2;
  if (0 < iVar3) {
    iVar2 = param_1 + iVar3 * 0x24;
    do {
      iVar2 = iVar2 + -0x24;
      iVar3 = iVar3 + -1;
      FID_conflict_assign(iVar2,0,0xffffffff);
      FUN_00854c50(param_1,iVar3,iVar1);
    } while (0 < iVar3);
  }
  return;
}



int * __thiscall FUN_00855070(int *param_1_00,int param_1)

{
  void *pvVar1;
  
  if (*param_1_00 != 0) {
    param_1_00[1] = 0;
    *param_1_00 = 0;
    pvVar1 = (void *)param_1_00[2];
    if (pvVar1 != (void *)0x0) {
      _eh_vector_destructor_iterator_(pvVar1,0x24,*(int *)((int)pvVar1 + -4),FUN_0040159c);
      FUN_00a3f66c((int)pvVar1 + -4);
      param_1_00[2] = 0;
    }
  }
  FUN_00854ea0(param_1);
  *(undefined *)(param_1_00 + 3) = *(undefined *)(param_1 + 0xc);
  return param_1_00;
}



void FUN_008550d0(uint *param_1,uint param_2,uint param_3,code *param_4)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uStack_4;
  
  uVar6 = param_2 + ((int)(param_3 - param_2) / 0x48) * 0x24;
  FUN_00854f20(param_2,uVar6,param_3 - 0x24,param_4);
  uVar1 = uVar6;
  while (uStack_4 = uVar1, param_2 < uStack_4) {
    uVar1 = uStack_4 - 0x24;
    iVar2 = (*param_4)(uVar1,uStack_4);
    if ((iVar2 < 0) || (iVar2 = (*param_4)(uStack_4,uVar1), iVar2 < 0)) break;
  }
  do {
    uVar6 = uVar6 + 0x24;
    uVar1 = uVar6;
    uVar7 = uStack_4;
    uVar4 = uStack_4;
    if (param_3 <= uVar6) break;
    iVar2 = (*param_4)(uVar6,uStack_4);
    if ((iVar2 < 0) || (iVar2 = (*param_4)(uStack_4,uVar6), iVar2 < 0)) break;
  } while( true );
joined_r0x00855174:
  uVar3 = uVar4;
  if (param_3 <= uVar1) {
joined_r0x008551ac:
    while (param_2 < uVar4) {
      uVar3 = uVar3 - 0x24;
      iVar2 = (*param_4)(uVar3,uVar7);
      if (-1 < iVar2) {
        iVar2 = (*param_4)(uVar7,uVar3);
        uVar4 = uStack_4;
        if (iVar2 < 0) break;
        uVar7 = uVar7 - 0x24;
        FUN_008544c0(uVar7,uVar3);
      }
      uStack_4 = uStack_4 - 0x24;
      uVar4 = uStack_4;
    }
    if (uVar4 == param_2) {
      if (uVar1 == param_3) {
        *param_1 = uVar7;
        param_1[1] = uVar6;
        return;
      }
      if (uVar6 != uVar1) {
        FUN_008544c0(uVar7,uVar6);
      }
      uVar6 = uVar6 + 0x24;
      FUN_008544c0(uVar7,uVar1);
      uVar1 = uVar1 + 0x24;
      uVar7 = uVar7 + 0x24;
    }
    else {
      uStack_4 = uVar4 - 0x24;
      uVar4 = uStack_4;
      if (uVar1 == param_3) {
        uVar7 = uVar7 - 0x24;
        if (uStack_4 != uVar7) {
          FUN_008544c0(uStack_4,uVar7);
        }
        uVar6 = uVar6 - 0x24;
        FUN_008544c0(uVar7,uVar6);
      }
      else {
        FUN_008544c0(uVar1,uStack_4);
        uVar1 = uVar1 + 0x24;
      }
    }
    goto joined_r0x00855174;
  }
  iVar2 = (*param_4)(uVar7,uVar1);
  uVar5 = uVar6;
  if (-1 < iVar2) {
    iVar2 = (*param_4)(uVar1,uVar7);
    if (iVar2 < 0) goto joined_r0x008551ac;
    uVar5 = uVar6 + 0x24;
    FUN_008544c0(uVar6,uVar1);
  }
  uVar6 = uVar5;
  uVar1 = uVar1 + 0x24;
  goto joined_r0x00855174;
}



void FUN_00855280(undefined *param_1,undefined *param_2,code *param_3)

{
  undefined *puVar1;
  undefined *puVar2;
  uint uVar3;
  int iVar4;
  undefined *puVar5;
  undefined *local_3c;
  uint uStack_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bddc78;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3c;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  if ((param_1 != param_2) && (puVar5 = param_1 + 0x24, puVar5 != param_2)) {
    local_3c = param_1;
    do {
      local_30 = local_30 & 0xffff0000;
      local_1c = 7;
      local_20 = 0;
      FID_conflict_assign(puVar5,0,0xffffffff);
      local_18 = (void *)0x0;
      local_4 = 0;
      iVar4 = (*param_3)(local_34,param_1,uVar3);
      puVar2 = local_3c;
      if (iVar4 < 0) {
        uStack_38 = uStack_38 & 0xffffff00;
        FUN_00854d70(param_1,puVar5,local_3c + 0x48,uStack_38,uStack_38,uStack_38);
        if (param_1 != local_34) {
LAB_00855397:
          FID_conflict_assign(local_34,0,0xffffffff);
        }
      }
      else {
        iVar4 = (*param_3)(local_34,local_3c);
        puVar1 = puVar5;
        while (iVar4 < 0) {
          if (puVar1 != puVar2) {
            FID_conflict_assign(puVar2,0,0xffffffff);
          }
          iVar4 = (*param_3)(local_34,puVar2 + -0x24);
          puVar1 = puVar2;
          puVar2 = puVar2 + -0x24;
        }
        if (puVar1 != local_34) goto LAB_00855397;
      }
      local_4 = 0xffffffff;
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
      local_3c = local_3c + 0x24;
      puVar5 = puVar5 + 0x24;
    } while (puVar5 != param_2);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_00855400(undefined4 *param_1_00,int param_1)

{
  *(undefined *)(param_1_00 + 3) = *(undefined *)(param_1 + 0xc);
  param_1_00[1] = 0;
  *param_1_00 = 0;
  param_1_00[2] = 0;
  FUN_00855070(param_1);
  return param_1_00;
}



void FUN_00855430(undefined4 *param_1,undefined4 param_2,undefined4 param_3,short param_4)

{
  ushort uVar1;
  undefined uVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  ushort *puVar6;
  uint local_94;
  int local_90;
  ushort *local_8c;
  int local_88;
  ushort *local_84;
  undefined4 local_80;
  undefined4 local_7c;
  void *local_78;
  undefined local_74;
  undefined4 *local_70;
  undefined4 local_6c;
  int local_68;
  ushort *local_64;
  int local_60;
  ushort *local_5c;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc70b1;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_94;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff5c;
  ExceptionList = &local_c;
  local_70 = param_1;
  local_6c = 0;
  if (param_4 == 0) {
    FUN_00853fa0(param_3,1);
    local_4 = 1;
    FUN_008947e0(param_1,param_2,local_58,2,uVar3);
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
  }
  else {
    local_7c = 0;
    local_80 = 0;
    local_78 = (void *)0x0;
    local_74 = 0;
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 3;
    local_94 = 0;
    FUN_00847890(&local_90);
    FUN_008478e0(&local_68);
    while( true ) {
      if ((local_90 != -4) && ((local_90 == 0 || (local_90 != local_68)))) {
        FUN_00a3fb10();
      }
      puVar6 = local_8c;
      if (local_8c == local_64) break;
      if (local_90 != -4) {
        if (local_90 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(local_90 + 0x18) < 8) {
          iVar5 = local_90 + 4;
        }
        else {
          iVar5 = *(int *)(local_90 + 4);
        }
        if ((ushort *)(iVar5 + *(int *)(local_90 + 0x14) * 2) <= puVar6) {
          FUN_00a3fb10();
        }
      }
      uVar1 = *puVar6;
      uVar3 = (uint)uVar1;
      if (uVar1 == (ushort)param_3) {
        if ((ushort)local_94 == param_4) {
          FUN_0081b397(&local_60);
          local_88 = local_60;
          local_84 = local_5c;
          FUN_004226c0(0xffffffff);
          puVar6 = local_84;
          iVar5 = local_88;
          if (local_88 != -4) {
            if (local_88 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(iVar5 + 0x18) < 8) {
              iVar4 = iVar5 + 4;
            }
            else {
              iVar4 = *(int *)(iVar5 + 4);
            }
            if ((ushort *)(iVar4 + *(int *)(iVar5 + 0x14) * 2) <= puVar6) {
              FUN_00a3fb10();
            }
          }
          *puVar6 = (ushort)param_3;
          param_1 = local_70;
          puVar6 = local_8c;
        }
        else {
          FUN_00854700(local_34,1);
          FUN_00432156();
        }
      }
      else {
        FID_conflict_append(1,uVar1);
      }
      local_94 = uVar3;
      if (local_90 != -4) {
        if (local_90 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(local_90 + 0x18) < 8) {
          iVar5 = local_90 + 4;
        }
        else {
          iVar5 = *(int *)(local_90 + 4);
        }
        if ((ushort *)(iVar5 + *(int *)(local_90 + 0x14) * 2) <= puVar6) {
          FUN_00a3fb10();
        }
      }
      local_8c = puVar6 + 1;
    }
    if ((local_20 != 0) || ((ushort)local_94 == (ushort)param_3)) {
      FUN_00854700(local_34,1);
    }
    uVar2 = local_74;
    param_1[1] = 0;
    *param_1 = 0;
    param_1[2] = 0;
    *(undefined *)(param_1 + 3) = local_74;
    FUN_00854ea0(&local_80);
    *(undefined *)(param_1 + 3) = uVar2;
    local_6c = 1;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_4 = local_4 & 0xffffff00;
    if (local_78 != (void *)0x0) {
      iVar5 = (int)local_78 + -4;
      _eh_vector_destructor_iterator_(local_78,0x24,*(int *)((int)local_78 + -4),FUN_0040159c);
      FUN_00a3f66c(iVar5);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00855780(int param_1,int param_2)

{
  int iVar1;
  
  iVar1 = (param_2 - param_1) / 0x24;
  if (1 < iVar1) {
    param_2 = param_2 + -0x24;
    if (iVar1 < 2) goto LAB_008557f6;
    do {
      FID_conflict_assign(param_2,0,0xffffffff);
      FUN_00854dd0(param_1,param_2,param_2);
LAB_008557f6:
      param_2 = param_2 + -0x24;
    } while (1 < ((0x24 - param_1) + param_2) / 0x24);
  }
  return;
}



void FUN_00855820(int param_1,int param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  int local_8;
  int local_4;
  
  iVar1 = param_2 - param_1;
  do {
    iVar1 = iVar1 / 0x24;
    if (iVar1 < 0x21) {
LAB_00855900:
      if (1 < iVar1) {
        FUN_00855280(param_1,param_2,param_4,0);
      }
      return;
    }
    if (param_3 < 1) {
      if (0x20 < iVar1) {
        if (1 < (param_2 - param_1) / 0x24) {
          FUN_00854fe0(param_1,param_2,param_4,0,0);
        }
        FUN_00855780(param_1,param_2,param_4);
        return;
      }
      goto LAB_00855900;
    }
    FUN_008550d0(&local_8,param_1,param_2,param_4);
    iVar1 = local_4;
    param_3 = param_3 / 2 + (param_3 / 2) / 2;
    if ((local_8 - param_1) / 0x24 < (param_2 - local_4) / 0x24) {
      FUN_00855820(param_1,local_8,param_3,param_4);
      param_1 = iVar1;
    }
    else {
      FUN_00855820(local_4,param_2,param_3,param_4);
      param_2 = local_8;
    }
    iVar1 = param_2 - param_1;
  } while( true );
}



void __thiscall FUN_00855970(int param_1_00,undefined4 param_1)

{
  int iVar1;
  int iVar2;
  
  if (*(char *)(param_1_00 + 0xc) == '\0') {
    iVar2 = *(int *)(param_1_00 + 8);
    iVar1 = iVar2 + *(int *)(param_1_00 + 4) * 0x24;
    FUN_00855820(iVar2,iVar1,(iVar1 - iVar2) / 0x24,param_1);
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\arrstr.cpp",0x19f,"wxArrayString::Sort","!m_autoSort",
                 L"can\'t use this method with sorted arrays");
  }
  return;
}



undefined4 * __thiscall FUN_008559e0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  *param_1_00 = 0;
  FUN_0089ed30(param_1,param_2);
  return param_1_00;
}



void FUN_00855a00(undefined4 param_1)

{
  FUN_008543e0(param_1,1);
  return;
}



int FUN_00855a20(int param_1)

{
  if (param_1 == 0) {
    param_1 = 3;
  }
  return param_1;
}



void __fastcall FUN_00855a30(int *param_1)

{
  if (*param_1 != 0) {
    FUN_0089f290(*param_1);
    *param_1 = 0;
  }
  return;
}



int __thiscall FUN_00855a50(int param_1_00,short *param_1,uint param_2,int param_3)

{
  int **ppiVar1;
  uint uVar2;
  int **ppiVar3;
  short *psVar4;
  int iVar5;
  short *psVar6;
  
  uVar2 = *(uint *)(param_1_00 + 0x14);
  if (uVar2 == 0) {
    return -1;
  }
  if (uVar2 <= param_2) {
    param_2 = uVar2 - 1;
  }
  uVar2 = *(uint *)(param_1_00 + 0x18);
  ppiVar1 = (int **)(param_1_00 + 4);
  ppiVar3 = ppiVar1;
  if (7 < uVar2) {
    ppiVar3 = (int **)*ppiVar1;
  }
  psVar6 = (short *)((int)ppiVar3 + param_2 * 2);
  while (param_3 != 0) {
    psVar4 = param_1;
    iVar5 = param_3;
    while (*psVar4 != *psVar6) {
      psVar4 = psVar4 + 1;
      iVar5 = iVar5 + -1;
      if (iVar5 == 0) goto LAB_00855aad;
    }
    psVar4 = (short *)FUN_00418333();
    if (psVar6 == psVar4) {
      return -1;
    }
    psVar6 = psVar6 + -1;
  }
LAB_00855aad:
  if (uVar2 < 8) {
    return (int)psVar6 - (int)ppiVar1 >> 1;
  }
  return (int)psVar6 - (int)*ppiVar1 >> 1;
}



undefined4 FUN_00855b00(int param_1)

{
  int unaff_ESI;
  
  if ((param_1 == 3) && (3 < *(uint *)(unaff_ESI + 0x14))) {
    FUN_0081feb2(&param_1,0);
    if ((param_1 == 0x5c) || (param_1 == 0x2f)) {
      FUN_0081feb2(&param_1,1);
      if ((param_1 == 0x5c) || (param_1 == 0x2f)) {
        FUN_0081feb2(&param_1,2);
        if ((param_1 != 0x5c) && (param_1 != 0x2f)) {
          return 1;
        }
      }
    }
  }
  return 0;
}



undefined4 FUN_00855b70(int param_1)

{
  LPCWSTR lpFileName;
  DWORD DVar1;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    lpFileName = (LPCWSTR)(param_1 + 4);
  }
  else {
    lpFileName = *(LPCWSTR *)(param_1 + 4);
  }
  DVar1 = GetFileAttributesW(lpFileName);
  if ((DVar1 != 0xffffffff) && ((DVar1 & 0x10) == 0)) {
    return 1;
  }
  return 0;
}



void __fastcall FUN_00855ba0(char *param_1)

{
  int in_EAX;
  LPCWSTR lpFileName;
  HANDLE _OSFileHandle;
  
  if (*param_1 != '\0') {
    if (*(uint *)(in_EAX + 0x18) < 8) {
      lpFileName = (LPCWSTR)(in_EAX + 4);
    }
    else {
      lpFileName = *(LPCWSTR *)(in_EAX + 4);
    }
    _OSFileHandle =
         CreateFileW(lpFileName,0xc0000000,0,(LPSECURITY_ATTRIBUTES)0x0,4,0x4000100,(HANDLE)0x0);
    __open_osfhandle((intptr_t)_OSFileHandle,0x8000);
    return;
  }
  *param_1 = '\0';
  if (7 < *(uint *)(in_EAX + 0x18)) {
    FID_conflict__wopen(*(wchar_t **)(in_EAX + 4),0x8102,0x180);
    return;
  }
  FID_conflict__wopen((wchar_t *)(in_EAX + 4),0x8102,0x180);
  return;
}



void FUN_00855c20(int *param_1)

{
  int iVar1;
  undefined2 *puVar2;
  int iVar3;
  
  iVar1 = *param_1;
  puVar2 = (undefined2 *)param_1[1];
  if (iVar1 != -4) {
    if (iVar1 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(iVar1 + 0x18) < 8) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((undefined2 *)(iVar3 + *(int *)(iVar1 + 0x14) * 2) <= puVar2) {
      FUN_00a3fb10();
    }
  }
  FUN_008506f0(*puVar2,1);
  return;
}



undefined4 FUN_00855c70(undefined4 param_1,undefined2 param_2,undefined4 param_3)

{
  FUN_00853280(param_1,param_2,param_3);
  return param_1;
}



undefined4 FUN_00855ca0(undefined4 param_1)

{
  FUN_0089f830(param_1);
  return param_1;
}



undefined4 __thiscall
FUN_00855cc0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint param_8;
  void *param_9;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5b08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840990(&param_2,param_1,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  uVar2 = FUN_00853980(param_1_00,uVar2,uVar3);
  _free(param_9);
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  ExceptionList = local_c;
  return uVar2;
}



void __thiscall FUN_00855d60(undefined4 *param_1_00,undefined4 *param_1,int param_2)

{
  undefined uVar1;
  
  *param_1 = *param_1_00;
  uVar1 = *(undefined *)(param_1_00 + 2);
  param_1[1] = param_1_00[1] + param_2;
  *(undefined *)(param_1 + 2) = uVar1;
  return;
}



int __thiscall FUN_00855d90(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6cd3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 1;
  if ((byte)param_1 < 0x80) {
    iVar2 = (int)(char)(byte)param_1;
  }
  else {
    iVar2 = FUN_00884ad0(param_1,uVar1);
  }
  FUN_00412939(param_2,iVar2);
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_00855e10(int param_1_00,undefined2 param_1)

{
  int *piVar1;
  int *piVar2;
  
  if (*(int *)(param_1_00 + 0x18) == 0) {
    FUN_004181eb(1,*(undefined4 *)(param_1_00 + 0x14));
  }
  piVar1 = (int *)(param_1_00 + 4);
  piVar2 = piVar1;
  if (7 < *(uint *)(param_1_00 + 0x18)) {
    piVar2 = (int *)*piVar1;
  }
  *(undefined2 *)piVar2 = param_1;
  *(undefined4 *)(param_1_00 + 0x14) = 1;
  if (7 < *(uint *)(param_1_00 + 0x18)) {
    piVar1 = (int *)*piVar1;
  }
  *(undefined2 *)((int)piVar1 + 2) = 0;
  return param_1_00;
}



int __thiscall FUN_00855e60(int param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = FUN_008531f0(local_30,param_1,param_1_00,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  local_4 = 0;
  if (param_1_00 != iVar1) {
    FID_conflict_assign(iVar1,0,0xffffffff);
  }
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1_00;
}



bool FUN_00855ef0(undefined4 param_1,char param_2)

{
  uint uVar1;
  int iVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaad9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  if (param_2 == '\0') {
    FUN_004325b6(param_1);
    local_4 = 0;
    iVar2 = FUN_00850470(local_30);
  }
  else {
    iVar2 = FUN_008507a0(param_1);
  }
  if ((param_2 == '\0') && (_free(local_14), 7 < local_18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  ExceptionList = local_c;
  return iVar2 == 0;
}



bool FUN_00855fb0(int param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  bool bVar3;
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  iVar2 = FUN_0043c211(param_2);
  bVar3 = false;
  local_4 = 0;
  if (*(int *)(iVar2 + 0x14) == *(int *)(param_1 + 0x14)) {
    iVar2 = FUN_00850760(param_1);
    bVar3 = iVar2 == 0;
  }
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  ExceptionList = local_c;
  return bVar3;
}



int __thiscall FUN_00856040(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x58,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int __thiscall FUN_00856080(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x34,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int __thiscall FUN_008560c0(undefined4 param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



void __thiscall FUN_00856100(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_54 [4];
  undefined4 local_50;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc70f8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  iVar2 = FUN_008560c0(local_54);
  local_4 = 0;
  if (param_1_00 != iVar2) {
    FID_conflict_assign(iVar2,0,0xffffffff);
  }
  local_4 = 0xffffffff;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50,uVar1);
  }
  FUN_00855070(param_1 + 0x24);
  iVar2 = FUN_00856080(local_54);
  local_4 = 1;
  if (param_1_00 + 0x34 != iVar2) {
    FID_conflict_assign(iVar2,0,0xffffffff);
  }
  local_4 = 0xffffffff;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  iVar2 = FUN_00856040(local_30);
  local_4 = 2;
  if (param_1_00 + 0x58 != iVar2) {
    FID_conflict_assign(iVar2,0,0xffffffff);
  }
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  *(undefined *)(param_1_00 + 0x7c) = *(undefined *)(param_1 + 0x7c);
  *(undefined *)(param_1_00 + 0x7d) = *(undefined *)(param_1 + 0x7d);
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00856240(int param_1)

{
  int iVar1;
  short sVar2;
  short *psVar3;
  
  FUN_00853f60();
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    FUN_00432156();
  }
  else {
    psVar3 = (short *)PTR_DAT_03236318;
    do {
      sVar2 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar2 != 0);
    FID_conflict_assign(PTR_DAT_03236318,(int)psVar3 - (int)(PTR_DAT_03236318 + 2) >> 1);
  }
  iVar1 = param_1 + 0x34;
  if (iVar1 != param_1 + 0x58) {
    FID_conflict_assign(param_1 + 0x58,0,0xffffffff);
  }
  if (param_1 != iVar1) {
    FID_conflict_assign(iVar1,0,0xffffffff);
  }
  *(undefined *)(param_1 + 0x7d) = 0;
  *(undefined *)(param_1 + 0x7c) = 1;
  return;
}



uint FUN_008562b0(void)

{
  int _FileHandle;
  FILE *pFVar1;
  FILE **unaff_ESI;
  FILE *local_30;
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  _FileHandle = FUN_00855ba0(DAT_0323f878 ^ (uint)&stack0xffffffcc);
  if (_FileHandle == -1) {
    ExceptionList = local_c;
    return 0xffffff00;
  }
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  pFVar1 = __fdopen(_FileHandle,"w+b");
  FUN_0089fb50();
  *unaff_ESI = pFVar1;
  if (unaff_ESI + 1 != &local_30) {
    FID_conflict_assign(&local_30,0,0xffffffff);
  }
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return (uint)(*unaff_ESI != (FILE *)0x0);
}



int FUN_00856380(int param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6ec9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar3 = (undefined4 *)(param_1 + 4);
  *(undefined2 *)puVar3 = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  if (((param_2 == 0) || (param_2 == 3)) || (param_2 == 4)) {
    if (*(int *)(param_1 + 0x18) == 0) {
      FUN_004181eb(1,*(undefined4 *)(param_1 + 0x14),uVar1);
    }
    puVar2 = puVar3;
    if (7 < *(uint *)(param_1 + 0x18)) {
      puVar2 = (undefined4 *)*puVar3;
    }
    *(undefined2 *)puVar2 = 0x3a;
    *(undefined4 *)(param_1 + 0x14) = 1;
    if (7 < *(uint *)(param_1 + 0x18)) {
      puVar3 = (undefined4 *)*puVar3;
    }
    *(undefined2 *)((int)puVar3 + 2) = 0;
  }
  ExceptionList = local_c;
  return param_1;
}



int FUN_00856440(int param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6ec9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar3 = (undefined4 *)(param_1 + 4);
  *(undefined2 *)puVar3 = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  if (param_2 == 0) {
    param_2 = 3;
  }
  switch(param_2) {
  case 1:
    goto switchD_008564a7_caseD_1;
  case 2:
    FUN_00855e10(0x3a);
    ExceptionList = local_c;
    return param_1;
  case 3:
    FID_conflict_append(1,0x5c);
    FID_conflict_append(1,0x2f);
    ExceptionList = local_c;
    return param_1;
  case 4:
    FUN_00855e10(0x2e);
    ExceptionList = local_c;
    return param_1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\filename.cpp",0x722,"wxFileName::GetPathSeparators",
                 "Assert failure",L"Unknown wxPATH_XXX style",uVar1);
  }
switchD_008564a7_caseD_1:
  if (*(int *)(param_1 + 0x18) == 0) {
    FUN_004181eb(1,*(undefined4 *)(param_1 + 0x14));
  }
  puVar2 = puVar3;
  if (7 < *(uint *)(param_1 + 0x18)) {
    puVar2 = (undefined4 *)*puVar3;
  }
  *(undefined2 *)puVar2 = 0x2f;
  *(undefined4 *)(param_1 + 0x14) = 1;
  if (7 < *(uint *)(param_1 + 0x18)) {
    puVar3 = (undefined4 *)*puVar3;
  }
  *(undefined2 *)((int)puVar3 + 2) = 0;
  ExceptionList = local_c;
  return param_1;
}



int FUN_008565a0(int param_1,int param_2)

{
  bool bVar1;
  bool bVar2;
  undefined4 uVar3;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7152;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 == 0) {
    param_2 = 3;
  }
  else if (param_2 == 4) {
    uVar3 = FUN_00853fa0(0x5d,1);
    local_4 = 0;
    bVar2 = true;
    bVar1 = false;
    goto LAB_008565f8;
  }
  uVar3 = FUN_00856440(local_54,param_2,DAT_0323f878 ^ (uint)&stack0xffffff9c);
  local_4 = 1;
  bVar2 = false;
  bVar1 = true;
LAB_008565f8:
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar3,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if (bVar1) {
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
  }
  if (bVar2) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



undefined FUN_008566c0(short param_1,undefined4 param_2)

{
  int iVar1;
  bool bVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaad9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar2 = false;
  if (param_1 != 0) {
    FUN_00856440(local_30,param_2,DAT_0323f878 ^ (uint)&stack0xffffffc4);
    local_4 = 0;
    bVar2 = true;
    iVar1 = FUN_00850910(param_1,0);
    param_1._0_1_ = 1;
    if (iVar1 != -1) goto LAB_0085672f;
  }
  param_1._0_1_ = 0;
LAB_0085672f:
  if (bVar2) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return (undefined)param_1;
}



undefined4 FUN_00856770(int param_1,int param_2)

{
  bool bVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaad9;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  uVar4 = 0;
  bVar1 = false;
  if ((param_2 == 3) && (0x30 < *(uint *)(param_1 + 0x14))) {
    FUN_004325b6(L"\\\\?\\Volume{");
    local_4 = 0;
    bVar1 = true;
    cVar2 = FUN_00852010(local_30,0);
    if (cVar2 != '\0') {
      FUN_0081feb2(&param_2,0x30);
      if (param_2 == 0x5c) {
        uVar4 = 1;
      }
    }
  }
  if (bVar1) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar3);
    }
  }
  ExceptionList = local_c;
  return uVar4;
}



undefined4 FUN_00856830(int param_1)

{
  bool bVar1;
  undefined4 uVar2;
  uint uVar3;
  char cVar4;
  uint uVar5;
  uint uVar6;
  undefined4 local_3c;
  undefined4 local_38;
  uint local_34;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7189;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  local_34 = *(uint *)(param_1 + 0x14);
  if (local_34 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\filename.cpp",0x75b,"wxFileName::IsValidDirComponent",
                   "Assert failure",L"empty directory passed to wxFileName::InsertDir()");
    }
    ExceptionList = local_c;
    return 0;
  }
  uVar6 = 0;
  if (local_34 != 0) {
    do {
      FUN_00856380(local_30,0,uVar5);
      local_4 = 0;
      FUN_0081feb2(&local_3c,uVar6);
      cVar4 = FUN_008506f0(local_3c,1);
      if (cVar4 == '\0') {
        FUN_0081feb2(&local_38,uVar6);
        cVar4 = FUN_008566c0(local_38,0);
        bVar1 = false;
        if (cVar4 != '\0') goto LAB_00856919;
      }
      else {
LAB_00856919:
        bVar1 = true;
      }
      local_4 = 0xffffffff;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
      local_18 = 7;
      uVar3 = local_18;
      local_1c = 0;
      uVar2 = local_1c;
      local_2c = local_2c & 0xffff0000;
      local_18 = 7;
      local_1c = 0;
      if (bVar1) {
        if (PTR_FUN_03235c4c == (undefined *)0x0) {
          ExceptionList = local_c;
          return 0;
        }
        FUN_00840480("..\\..\\src\\common\\filename.cpp",0x765,"wxFileName::IsValidDirComponent",
                     "Assert failure",L"invalid directory component in wxFileName");
        ExceptionList = local_c;
        return 0;
      }
      uVar6 = uVar6 + 1;
      local_1c = uVar2;
      local_18 = uVar3;
    } while (uVar6 < local_34);
  }
  ExceptionList = local_c;
  return 1;
}



void FUN_00856a10(undefined4 param_1,int param_2,undefined *param_3,int param_4)

{
  undefined2 *puVar1;
  char cVar2;
  uint uVar3;
  int *piVar4;
  undefined4 ***pppuVar5;
  int iVar6;
  int iVar7;
  int local_90;
  int local_8c;
  undefined *local_88;
  undefined local_84 [8];
  undefined local_7c [36];
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 ***local_30 [4];
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc71c8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_90;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff60;
  ExceptionList = &local_c;
  local_90 = param_2;
  local_88 = param_3;
  if (param_4 == 0) {
    param_4 = 3;
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  FID_conflict_assign(param_1,0,0xffffffff);
  local_3c = (void *)0x0;
  local_4 = 0;
  cVar2 = FUN_00856770(local_58,param_4,uVar3);
  if (cVar2 == '\0') {
    cVar2 = FUN_00855b00(param_4);
    if (cVar2 != '\0') {
      FID_conflict_erase(0,2);
      iVar6 = FUN_008565a0(local_34,param_4);
      if (*(uint *)(iVar6 + 0x18) < 8) {
        iVar7 = iVar6 + 4;
      }
      else {
        iVar7 = *(int *)(iVar6 + 4);
      }
      iVar6 = FUN_00824bf0(iVar7,0,*(undefined4 *)(iVar6 + 0x14));
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30[0]);
      }
      if (iVar6 != -1) {
        piVar4 = (int *)FUN_0081b542(local_84,iVar6);
        local_90 = *piVar4;
        local_8c = piVar4[1];
        FUN_00850f20(0x3a);
        FID_conflict_insert(iVar6 + 1,1,0x5c);
      }
    }
  }
  else {
    piVar4 = (int *)FUN_0081b542(local_84,0x30);
    iVar6 = *piVar4;
    puVar1 = (undefined2 *)piVar4[1];
    if (iVar6 != -4) {
      if (iVar6 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar6 + 0x18) < 8) {
        iVar7 = iVar6 + 4;
      }
      else {
        iVar7 = *(int *)(iVar6 + 4);
      }
      if ((undefined2 *)(iVar7 + *(int *)(iVar6 + 0x14) * 2) <= puVar1) {
        FUN_00a3fb10();
      }
    }
    *puVar1 = 0x3a;
    FID_conflict_insert(0x31,1,0x5c);
    FID_conflict_erase(0,4);
    param_2 = local_90;
  }
  if ((param_4 == 3) || (param_4 == 4)) {
    FUN_00856380(local_34,param_4);
    local_4._0_1_ = 1;
    pppuVar5 = local_30[0];
    if (local_1c < 8) {
      pppuVar5 = local_30;
    }
    iVar6 = FUN_00824bf0(pppuVar5,0,local_20);
    if ((iVar6 != 0) && (iVar6 != -1)) {
      if (param_2 != 0) {
        iVar7 = FUN_008527e0(local_7c,iVar6);
        local_4._0_1_ = 2;
        if (param_2 != iVar7) {
          FID_conflict_assign(iVar7,0,0xffffffff);
        }
        local_4._0_1_ = 1;
        FUN_0040159c();
      }
      FID_conflict_erase(0,local_20 + iVar6);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30[0]);
    }
  }
  if ((local_88 != (undefined *)0x0) && (local_88 != local_58)) {
    FID_conflict_assign(local_58,0,0xffffffff);
  }
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00856d10(undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,
                 undefined *param_6,int param_7)

{
  char cVar1;
  undefined2 uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  undefined4 *puVar6;
  uint uVar7;
  int iVar8;
  undefined4 uVar9;
  uint local_78;
  int local_74;
  undefined *local_70;
  undefined4 local_6c;
  undefined4 local_68;
  int local_64;
  undefined local_60 [4];
  undefined4 local_5c;
  uint local_48;
  void *local_44;
  undefined local_3c [8];
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7220;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_78;
  ExceptionList = &local_c;
  local_64 = param_4;
  local_74 = param_5;
  local_70 = param_6;
  if (param_7 == 0) {
    param_7 = 3;
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  FUN_00856a10(param_1,param_2,local_34,param_7,DAT_0323f878 ^ (uint)&stack0xffffff78);
  local_78 = 0x2e;
  uVar3 = FUN_007433d1(&local_78,0xffffffff,1);
  iVar4 = FUN_008565a0(local_60,param_7);
  if (*(uint *)(iVar4 + 0x18) < 8) {
    iVar8 = iVar4 + 4;
  }
  else {
    iVar8 = *(int *)(iVar4 + 4);
  }
  uVar5 = FUN_00824c80(iVar8,0xffffffff,*(undefined4 *)(iVar4 + 0x14));
  local_78 = uVar5;
  _free(local_44);
  if (7 < local_48) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_5c);
  }
  if (uVar3 == 0xffffffff) goto LAB_00856ec8;
  if (uVar3 != 0) {
    puVar6 = (undefined4 *)FUN_0081b542(local_3c,uVar3 - 1);
    local_6c = *puVar6;
    local_68 = puVar6[1];
    uVar2 = FUN_00851440(0);
    cVar1 = FUN_008566c0(uVar2);
    uVar5 = local_78;
    if (cVar1 == '\0') {
      if (param_7 == 4) {
        uVar9 = 0x5d;
        FUN_0081b5a8(local_3c,uVar3 - 1);
        cVar1 = FUN_00820040(uVar9);
        uVar5 = local_78;
        if (cVar1 != '\0') goto LAB_00856ea9;
      }
      uVar5 = local_78;
      if (((uVar3 != 0xffffffff) && (local_78 != 0xffffffff)) && (uVar3 < local_78)) {
        uVar3 = 0xffffffff;
      }
      goto LAB_00856ec8;
    }
  }
LAB_00856ea9:
  uVar3 = 0xffffffff;
LAB_00856ec8:
  if (param_3 != 0) {
    if (uVar5 == 0xffffffff) {
      FUN_00432156();
    }
    else {
      uVar7 = uVar5;
      if ((uVar5 == 0) && (param_7 != 2)) {
        uVar7 = 1;
      }
      iVar4 = FUN_008527e0(local_60,uVar7);
      local_4._0_1_ = 1;
      if (param_3 != iVar4) {
        FID_conflict_assign(iVar4,0,0xffffffff);
      }
      local_4 = (uint)local_4._1_3_ << 8;
      _free(local_44);
      if (7 < local_48) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_5c);
      }
      if (param_7 == 4) {
        puVar6 = (undefined4 *)FUN_0081b542(local_3c,0);
        local_6c = *puVar6;
        local_68 = puVar6[1];
        cVar1 = FUN_00820040(0x5b);
        if (cVar1 != '\0') {
          FID_conflict_erase(0,1);
        }
      }
    }
  }
  iVar4 = local_64;
  if (local_64 != 0) {
    if (uVar5 == 0xffffffff) {
      iVar8 = 0;
    }
    else {
      iVar8 = uVar5 + 1;
    }
    uVar7 = 0xffffffff;
    if ((uVar3 != 0xffffffff) && (uVar7 = uVar3, uVar5 != 0xffffffff)) {
      uVar7 = (uVar3 - uVar5) - 1;
    }
    iVar8 = FUN_00852560(local_60,iVar8,uVar7);
    local_4._0_1_ = 2;
    if (iVar4 != iVar8) {
      FID_conflict_assign(iVar8,0,0xffffffff);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_44);
    if (7 < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c);
    }
  }
  iVar4 = local_74;
  if (uVar3 == 0xffffffff) {
    if (local_74 != 0) {
      FUN_00432156();
    }
    if (local_70 != (undefined *)0x0) {
      *local_70 = 0;
    }
  }
  else {
    if (local_74 != 0) {
      iVar8 = FUN_00852560(local_60,uVar3 + 1,0xffffffff);
      local_4 = CONCAT31(local_4._1_3_,3);
      if (iVar4 != iVar8) {
        FID_conflict_assign(iVar8,0,0xffffffff);
      }
      _free(local_44);
      if (7 < local_48) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_5c);
      }
    }
    if (local_70 != (undefined *)0x0) {
      *local_70 = 1;
    }
  }
  _free(local_18);
  if (local_1c < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_30);
}



int __thiscall FUN_008570c0(int param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc5e39;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 0;
  FUN_00853ce0(0);
  *(undefined4 *)(param_1_00 + 0x4c) = 7;
  *(undefined4 *)(param_1_00 + 0x48) = 0;
  *(undefined2 *)(param_1_00 + 0x38) = 0;
  *(undefined4 *)(param_1_00 + 0x50) = 0;
  *(undefined4 *)(param_1_00 + 0x70) = 7;
  *(undefined4 *)(param_1_00 + 0x6c) = 0;
  *(undefined2 *)(param_1_00 + 0x5c) = 0;
  *(undefined4 *)(param_1_00 + 0x74) = 0;
  local_4 = CONCAT31(local_4._1_3_,3);
  FUN_00856100(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00857160(int param_1)

{
  void *pvVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  int unaff_ESI;
  int unaff_EDI;
  undefined local_54 [4];
  undefined4 local_50;
  uint local_3c;
  void *local_38;
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  pvVar1 = ExceptionList;
  puStack_8 = &LAB_00bc7281;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  *(undefined4 *)(unaff_ESI + 0x18) = 7;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined2 *)(unaff_ESI + 4) = 0;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  local_4 = 0;
  if (*(uint *)(unaff_EDI + 0x14) == 0) {
    ExceptionList = pvVar1;
    return;
  }
  if (param_1 == 0) {
    param_1 = 3;
  }
  else if (param_1 != 3) {
    if (param_1 != 4) {
      ExceptionList = pvVar1;
      return;
    }
    goto LAB_0085728f;
  }
  if (1 < *(uint *)(unaff_EDI + 0x14)) {
    uVar4 = FUN_008534d0(local_30,&DAT_00d280ec);
    local_4 = 1;
    uVar4 = FUN_00853300(local_54,uVar4,&DAT_00d280e8);
    local_4._0_1_ = 2;
    cVar2 = FUN_00856770(uVar4,3);
    FUN_0040159c();
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0040159c();
    if (cVar2 == '\0') {
      FID_conflict_append(1,0x5c);
      FID_conflict_append(1,0x5c);
      FID_conflict_append(unaff_EDI,0,0xffffffff);
      ExceptionList = local_c;
      return;
    }
    FUN_0084b060(&DAT_00d280ec);
    FID_conflict_append(unaff_EDI,0,0xffffffff);
    ExceptionList = local_c;
    return;
  }
LAB_0085728f:
  uVar4 = FUN_00856380(local_54,param_1,uVar3);
  local_4 = 3;
  FID_conflict_append(unaff_EDI,0,0xffffffff);
  FID_conflict_append(uVar4,0,0xffffffff);
  _free(local_38);
  if (local_3c < 8) {
    ExceptionList = local_c;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_50);
}



void __thiscall FUN_00857300(undefined *param_1_00,int param_1,int param_2)

{
  char cVar1;
  short sVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined *local_128;
  undefined4 local_124;
  undefined4 local_120;
  undefined local_11c [4];
  uint local_118;
  undefined4 local_108;
  uint local_104;
  void *local_100;
  undefined local_f8 [4];
  undefined4 local_f4;
  uint local_e0;
  void *local_dc;
  undefined local_d4 [8];
  undefined local_cc [4];
  uint local_c8;
  int local_b8;
  uint local_b4;
  void *local_b0;
  undefined local_a8 [4];
  uint local_a4;
  int local_94;
  uint local_90;
  void *local_8c;
  undefined local_84 [4];
  undefined4 local_80;
  int local_70;
  uint local_6c;
  void *local_68;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc72df;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_128;
  ExceptionList = &local_c;
  local_128 = param_1_00 + 0x24;
  FUN_00853f60(DAT_0323f878 ^ (uint)&stack0xfffffec8);
  if (*(int *)(param_1 + 0x14) == 0) {
    param_1_00[0x7c] = 1;
  }
  else {
    if (param_2 == 0) {
      param_2 = 3;
    }
    local_90 = 7;
    local_94 = 0;
    local_a4 = local_a4 & 0xffff0000;
    local_8c = (void *)0x0;
    local_b4 = 7;
    local_b8 = 0;
    local_c8 = local_c8 & 0xffff0000;
    local_b0 = (void *)0x0;
    local_4 = 1;
    FUN_00856a10(param_1,local_a8,local_cc,param_2);
    if (local_94 != 0) {
      param_1_00[0x7c] = 0;
      if (param_1_00 != local_a8) {
        FID_conflict_assign(local_a8,0,0xffffffff);
      }
    }
    if (local_b8 == 0) {
      _free(local_b0);
      if (7 < local_b4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_c8);
      }
      local_b4 = 7;
      local_b8 = 0;
      local_c8 = local_c8 & 0xffff0000;
      _free(local_8c);
    }
    else {
      puVar3 = (undefined4 *)FUN_0081b542(local_d4,0);
      local_124 = *puVar3;
      local_120 = puVar3[1];
      sVar2 = FUN_00851440();
      switch(param_2) {
      case 2:
        param_1_00[0x7c] = sVar2 == 0x3a;
        if (sVar2 == 0x3a) {
          FID_conflict_erase(0,1);
        }
        break;
      case 3:
        cVar1 = FUN_008566c0(sVar2,param_2);
        param_1_00[0x7c] = cVar1 == '\0';
        break;
      case 4:
        param_1_00[0x7c] = 0;
        break;
      default:
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\common\\filename.cpp",0x1d0,"wxFileName::SetPath",
                       "Assert failure",L"Unknown path format");
        }
      case 1:
        param_1_00[0x7c] = sVar2 != 0x2f;
      }
      uVar4 = FUN_00856440(local_11c,param_2);
      local_4._0_1_ = 2;
      FUN_00894710(local_cc,uVar4,0);
      local_4 = CONCAT31(local_4._1_3_,4);
      _free(local_100);
      if (7 < local_104) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_118);
      }
      local_104 = 7;
      local_108 = 0;
      local_118 = local_118 & 0xffff0000;
      cVar1 = FUN_00894180();
      while (cVar1 != '\0') {
        FUN_00894270(local_84);
        local_4._0_1_ = 5;
        if (local_70 == 0) {
          if (param_2 == 2) {
            FUN_004325b6(&DAT_00d240e0);
            local_4._0_1_ = 6;
            FUN_00854700(local_f8,1);
            _free(local_dc);
            if (7 < local_e0) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1(local_f4);
            }
          }
        }
        else {
          FUN_00854700(local_84,1);
        }
        local_4 = CONCAT31(local_4._1_3_,4);
        _free(local_68);
        if (7 < local_6c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_80);
        }
        cVar1 = FUN_00894180();
      }
      local_4._1_3_ = (undefined3)((uint)local_4 >> 8);
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0083fa70();
      _free(local_b0);
      if (7 < local_b4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_c8);
      }
      local_b4 = 7;
      local_b8 = 0;
      local_c8 = local_c8 & 0xffff0000;
      _free(local_8c);
    }
    if (7 < local_90) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a4);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



// WARNING: Removing unreachable block (ram,0x00857888)
// WARNING: Removing unreachable block (ram,0x0085789f)
// WARNING: Type propagation algorithm not settling

void FUN_00857710(undefined4 param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 *******pppppppuVar4;
  undefined4 *******pppppppuVar5;
  int local_64 [2];
  undefined4 *******local_5c;
  undefined local_34 [4];
  undefined4 *******local_30 [4];
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7318;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_64;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  local_64[0] = 0;
  local_30[0] = (undefined4 *******)((uint)local_30[0] & 0xffff0000);
  local_1c = 7;
  local_20 = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  local_18 = (void *)0x0;
  local_4 = 0;
  cVar2 = FUN_0085cac0(local_34,uVar3);
  iVar1 = local_64[0];
  local_64[0] = local_20;
  while ((local_20 = local_64[0], cVar2 != '\0' && (iVar1 = local_64[0], local_64[0] != 1))) {
    if (local_64[0] == 3) {
      if (local_1c < 8) {
        pppppppuVar5 = local_30;
LAB_008577c1:
        pppppppuVar4 = local_30[0];
        if (local_1c < 8) {
          pppppppuVar4 = local_30;
        }
        if (pppppppuVar5 < pppppppuVar4) goto LAB_008577e2;
        pppppppuVar4 = local_30[0];
        if (local_1c < 8) {
          pppppppuVar4 = local_30;
        }
        if ((undefined4 *******)((int)pppppppuVar4 + 6U) < pppppppuVar5) goto LAB_008577e2;
      }
      else {
        pppppppuVar5 = local_30[0];
        if (local_30[0] != (undefined4 *******)0x0) goto LAB_008577c1;
LAB_008577e2:
        FUN_00a3fb10();
      }
      local_5c = pppppppuVar5;
      if (&stack0x00000000 != (undefined *)0x30) {
        pppppppuVar4 = local_30[0];
        if (local_1c < 8) {
          pppppppuVar4 = local_30;
        }
        if ((undefined4 *******)((int)pppppppuVar5 + 2U) <=
            (undefined4 *******)((int)pppppppuVar4 + local_20 * 2)) {
          pppppppuVar4 = local_30[0];
          if (local_1c < 8) {
            pppppppuVar4 = local_30;
          }
          if (pppppppuVar4 <= (undefined4 *******)((int)pppppppuVar5 + 2U)) goto LAB_0085782f;
        }
        FUN_00a3fb10();
      }
LAB_0085782f:
      if (&stack0x00000000 != (undefined *)0x30) {
        if (&stack0x00000000 == (undefined *)0x34) {
          FUN_00a3fb10();
        }
        pppppppuVar5 = local_30[0];
        if (local_1c < 8) {
          pppppppuVar5 = local_30;
        }
        if ((LPCWSTR)((int)pppppppuVar5 + local_20 * 2) <= (LPCWSTR)((int)pppppppuVar5 + 2U)) {
          FUN_00a3fb10();
        }
      }
      iVar1 = local_64[0];
      if (*(LPCWSTR)((int)pppppppuVar5 + 2U) == L':') break;
    }
    else if (local_64[0] == 0x31) {
      local_4 = 0;
    }
    FUN_00851a60(local_64[0] + -1);
    cVar2 = FUN_0085cac0(local_34);
    iVar1 = local_64[0];
    local_64[0] = local_20;
  }
  local_64[0] = iVar1;
  pppppppuVar5 = local_30[0];
  if (local_1c < 8) {
    pppppppuVar5 = local_30;
  }
  GetFileAttributesW((LPCWSTR)pppppppuVar5);
  _free(local_18);
  if (local_1c < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_30[0]);
}



void FUN_00857940(undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined *puVar2;
  undefined4 uVar3;
  undefined4 local_84;
  undefined local_80 [4];
  uint local_7c;
  undefined4 local_6c;
  uint local_68;
  void *local_64;
  undefined4 local_5c;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc737f;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_84;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff6c;
  ExceptionList = &local_c;
  local_84 = 0;
  local_5c = param_1;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 1;
  if (*(int *)(param_2 + 0x14) != 0) {
    puVar2 = (undefined *)FUN_0085f2e0(local_80,uVar1);
    local_4._0_1_ = 2;
    if (local_34 != puVar2) {
      FID_conflict_assign(puVar2,0,0xffffffff);
    }
    local_4._0_1_ = 1;
    _free(local_64);
    if (7 < local_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_7c);
    }
    uVar3 = FUN_00856380(local_58,0);
    local_4._0_1_ = 3;
    uVar3 = FUN_008531f0(local_80,param_2,uVar3);
    local_4._0_1_ = 4;
    FUN_0085f380(uVar3);
    _free(local_64);
    if (7 < local_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_7c);
    }
    local_68 = 7;
    local_6c = 0;
    local_7c = local_7c & 0xffff0000;
    local_4 = CONCAT31(local_4._1_3_,1);
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
  }
  FUN_0085f2e0(param_1,uVar1);
  local_84 = 1;
  if (*(int *)(param_2 + 0x14) != 0) {
    FUN_0085f380(local_34);
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int FUN_00857b00(int param_1,undefined *param_2)

{
  char cVar1;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_00857710(param_2,DAT_0323f878 ^ (uint)&stack0xffffffc0);
  if (cVar1 == '\0') {
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    local_14 = (void *)0x0;
    param_2 = local_30;
    local_4 = 0;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if ((cVar1 == '\0') && (_free(local_14), 7 < local_18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00857bd0(int param_1_00,int param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_30 [8];
  undefined local_28 [4];
  uint local_24;
  int local_14;
  uint local_10;
  void *local_c;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_38;
  if ((param_1 == 1) && (*(int *)(param_1_00 + 0x28) != 0)) {
    uVar2 = thunk_FUN_004325d6(0);
    local_24 = local_24 & 0xffff0000;
    local_10 = 7;
    local_14 = 0;
    FID_conflict_assign(uVar2,0,0xffffffff);
    local_c = (void *)0x0;
    if (local_14 != 0) {
      puVar3 = (undefined4 *)FUN_0081b542(local_30,0);
      local_38 = *puVar3;
      local_34 = puVar3[1];
      cVar1 = FUN_00820040(0x7e);
      if (cVar1 != '\0') {
        FUN_0040159c();
        goto LAB_00857cfa;
      }
    }
    FUN_0040159c();
  }
  if (*(char *)(param_1_00 + 0x7c) != '\0') {
LAB_00857c6e:
    ___security_check_cookie_4();
    return;
  }
  iVar4 = FUN_00856380(local_28,param_1);
  iVar4 = *(int *)(iVar4 + 0x14);
  _free(local_c);
  if (7 < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24);
  }
  if (iVar4 != 0) {
    iVar4 = FUN_008560c0(local_28);
    iVar4 = *(int *)(iVar4 + 0x14);
    _free(local_c);
    if (7 < local_10) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_24);
    }
    if (iVar4 == 0) goto LAB_00857c6e;
  }
LAB_00857cfa:
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_00857d40(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc73c9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0;
  FID_conflict_assign(param_1_00 + 0x34,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  if (*(char *)(param_1_00 + 0x7d) != '\0') {
    FID_conflict_append(1,0x2e);
    FID_conflict_append(param_1_00 + 0x58,0,0xffffffff);
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00857de0(int param_1_00,int param_1,uint param_2,int param_3)

{
  void *pvVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  undefined *puVar9;
  int local_8c;
  int local_88;
  uint local_84;
  undefined local_80 [8];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7408;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_8c;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff64;
  ExceptionList = &local_c;
  local_88 = param_1;
  local_84 = 0;
  local_8c = param_3;
  if (param_3 == 0) {
    local_8c = 3;
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  if ((param_2 & 1) != 0) {
    FUN_008560c0(local_58);
    local_4._0_1_ = 1;
    uVar4 = FUN_00857160();
    local_4._0_1_ = 2;
    FID_conflict_append(uVar4,0,0xffffffff);
    _free(local_60);
    if (7 < local_64) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_78);
    }
    local_64 = 7;
    local_68 = 0;
    local_78 = local_78 & 0xffff0000;
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
  }
  iVar6 = local_88;
  switch(local_8c) {
  case 1:
    goto switchD_00857f23_caseD_1;
  case 2:
    if (*(char *)(param_1_00 + 0x7c) == '\0') goto LAB_00857f81;
    uVar4 = 0x3a;
    break;
  case 3:
    if (*(char *)(param_1_00 + 0x7c) != '\0') goto LAB_00857f81;
    uVar4 = 0x5c;
    break;
  case 4:
    param_2 = 0;
    goto LAB_00857f81;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\filename.cpp",0x7b3,"wxFileName::GetPath","Assert failure",
                   L"Unknown path format",uVar3);
    }
switchD_00857f23_caseD_1:
    if (*(char *)(param_1_00 + 0x7c) != '\0') goto LAB_00857f81;
    uVar4 = 0x2f;
  }
  FID_conflict_append(1,uVar4);
LAB_00857f81:
  if (*(int *)(param_1_00 + 0x28) == 0) {
    *(undefined4 *)(iVar6 + 0x18) = 7;
    *(undefined4 *)(iVar6 + 0x14) = 0;
    *(undefined2 *)(iVar6 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(iVar6 + 0x1c) = 0;
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  else {
    if (local_8c == 4) {
      FID_conflict_append(1,0x5b);
    }
    local_84 = *(uint *)(param_1_00 + 0x28);
    uVar8 = 0;
    if (local_84 != 0) {
      iVar7 = 0;
      do {
        switch(local_8c) {
        case 1:
        case 3:
switchD_00858003_caseD_1:
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x28) <= uVar8)) {
            FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                         "nIndex < m_nCount",L"wxArrayString: index out of bounds");
          }
          break;
        case 2:
          thunk_FUN_004325d6(uVar8);
          iVar6 = FUN_008507a0(&DAT_00fae798);
          if (iVar6 != 0) goto switchD_00858003_caseD_4;
          goto LAB_008580ea;
        case 4:
switchD_00858003_caseD_4:
          uVar4 = 1;
          puVar9 = &DAT_00d240e0;
          thunk_FUN_004325d6(uVar8);
          cVar2 = FUN_00855ef0(puVar9,uVar4);
          if (cVar2 == '\0') {
            iVar6 = thunk_FUN_004325d6(uVar8);
            goto LAB_008580ae;
          }
          goto LAB_008580b7;
        default:
          if (PTR_FUN_03235c4c != (undefined *)0x0) {
            FUN_00840480("..\\..\\src\\common\\filename.cpp",0x7e4,"wxFileName::GetPath",
                         "Assert failure",L"Unexpected path format",uVar3);
            goto switchD_00858003_caseD_1;
          }
        }
        iVar6 = *(int *)(param_1_00 + 0x2c) + iVar7;
LAB_008580ae:
        FID_conflict_append(iVar6,0,0xffffffff);
LAB_008580b7:
        if (((param_2 & 2) != 0) || (uVar8 != local_84 - 1)) {
          puVar5 = (undefined4 *)FUN_0081b66e(local_80,local_8c);
          FID_conflict_append(1,*puVar5);
        }
LAB_008580ea:
        uVar8 = uVar8 + 1;
        iVar7 = iVar7 + 0x24;
        iVar6 = local_88;
      } while (uVar8 < local_84);
    }
    if (local_8c == 4) {
      FID_conflict_append(1,0x5d);
    }
    *(undefined4 *)(iVar6 + 0x18) = 7;
    *(undefined4 *)(iVar6 + 0x14) = 0;
    *(undefined2 *)(iVar6 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(iVar6 + 0x1c) = 0;
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  local_c = ExceptionList;
  if (7 < local_1c) {
    ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_008581b0(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd7ac1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00857de0(param_1,3,param_2);
  local_4 = 0;
  uVar2 = FUN_00857d40(local_30);
  local_4 = 1;
  FID_conflict_append(uVar2,0,0xffffffff);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00858270(int param_1_00,int param_1)

{
  int iVar1;
  short sVar2;
  bool bVar3;
  char cVar4;
  uint uVar5;
  int iVar6;
  undefined4 *****pppppuVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 *puVar10;
  undefined *puVar11;
  HANDLE hFindFile;
  short *psVar12;
  uint uVar13;
  uint local_388;
  char local_381;
  uint local_380;
  undefined4 *puStack_37c;
  int local_378;
  undefined local_374 [4];
  undefined4 uStack_370;
  uint uStack_35c;
  void *pvStack_358;
  uint uStack_34c;
  int iStack_348;
  undefined local_340 [4];
  uint local_33c;
  undefined4 local_32c;
  uint local_328;
  void *local_324;
  undefined local_31c [4];
  uint local_318;
  undefined4 local_308;
  uint local_304;
  void *local_300;
  undefined auStack_2f8 [4];
  uint uStack_2f4;
  undefined4 uStack_2e4;
  uint uStack_2e0;
  void *pvStack_2dc;
  undefined auStack_2d4 [8];
  undefined auStack_2cc [4];
  undefined4 uStack_2c8;
  int iStack_2b8;
  uint uStack_2b4;
  void *pvStack_2b0;
  undefined auStack_2a8 [4];
  uint local_2a4;
  undefined4 local_294;
  uint local_290;
  void *local_28c;
  undefined local_284 [4];
  undefined4 *****local_280 [4];
  undefined4 uStack_270;
  uint local_26c;
  void *pvStack_268;
  undefined auStack_260 [44];
  short sStack_234;
  undefined auStack_232 [546];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7534;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_388;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xfffffc68;
  ExceptionList = &local_c;
  uVar13 = 0;
  local_388 = 0;
  local_378 = param_1;
  local_290 = 7;
  local_294 = 0;
  local_2a4 = local_2a4 & 0xffff0000;
  local_28c = (void *)0x0;
  local_4 = 1;
  FUN_008581b0(local_284,0);
  local_4._0_1_ = 2;
  if (DAT_032bd4a0 == (code *)0x0) {
    if (DAT_032bd49c == '\0') {
      DAT_032bd49c = '\x01';
      FUN_004325b6(L"kernel32");
      local_4._0_1_ = 3;
      local_380 = 0;
      FUN_0089ed30(local_31c,2);
      local_4._0_1_ = 5;
      _free(local_300);
      if (7 < local_304) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_318);
      }
      local_304 = 7;
      local_308 = 0;
      local_318 = local_318 & 0xffff0000;
      FUN_004325b6(L"GetLongPathNameW");
      local_4._0_1_ = 6;
      FUN_0089ecd0(local_340,&local_381);
      local_4._0_1_ = 5;
      _free(local_324);
      if (7 < local_328) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_33c);
      }
      local_328 = 7;
      local_32c = 0;
      local_33c = local_33c & 0xffff0000;
      if (local_381 != '\0') {
        FUN_004325b6(L"GetLongPathNameW");
        local_4._0_1_ = 7;
        DAT_032bd4a0 = (code *)FUN_0089f060(local_374,0);
        FUN_0040159c();
      }
      local_4._0_1_ = 2;
      if (local_380 != 0) {
        FUN_0089f290(local_380);
        local_380 = 0;
      }
      if (DAT_032bd4a0 != (code *)0x0) goto LAB_0085846e;
    }
  }
  else {
LAB_0085846e:
    pppppuVar7 = local_280[0];
    if (local_26c < 8) {
      pppppuVar7 = local_280;
    }
    iVar6 = (*DAT_032bd4a0)(pppppuVar7,0,0,uVar5);
    if (iVar6 != 0) {
      FUN_00852280(auStack_2a8,iVar6);
      local_4._0_1_ = 8;
      pppppuVar7 = local_280[0];
      if (local_26c < 8) {
        pppppuVar7 = local_280;
      }
      iVar6 = (*DAT_032bd4a0)(pppppuVar7,*puStack_37c,iVar6);
      local_4._0_1_ = 2;
      FUN_00851bf0();
      if (iVar6 != 0) {
        FUN_004325a0(auStack_2a8);
        FUN_0040159c();
        FUN_0040159c();
        goto LAB_00858a56;
      }
    }
  }
  if (*(int *)(param_1_00 + 0x14) == 0) {
    if (PTR_DAT_03236318 == (undefined *)0x0) {
      FUN_00432156();
    }
    else {
      psVar12 = (short *)PTR_DAT_03236318;
      do {
        sVar2 = *psVar12;
        psVar12 = psVar12 + 1;
      } while (sVar2 != 0);
      FID_conflict_assign(PTR_DAT_03236318,(int)psVar12 - (int)(PTR_DAT_03236318 + 2) >> 1);
    }
  }
  else {
    uVar8 = FUN_00856380(local_374,3);
    local_4._0_1_ = 9;
    uVar9 = FUN_008560c0(auStack_2f8);
    local_4._0_1_ = 10;
    uVar8 = FUN_008531f0(local_31c,uVar9,uVar8);
    local_4._0_1_ = 0xb;
    puVar10 = (undefined4 *)FUN_0081b66e(&local_380,3);
    puVar11 = (undefined *)FUN_00852430(local_340,uVar8,*puVar10);
    local_4._0_1_ = 0xc;
    if (auStack_2a8 != puVar11) {
      FID_conflict_assign(puVar11,0,0xffffffff);
    }
    _free(local_324);
    if (7 < local_328) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_33c);
    }
    local_328 = 7;
    local_32c = 0;
    local_33c = local_33c & 0xffff0000;
    _free(local_300);
    if (7 < local_304) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_318);
    }
    local_304 = 7;
    local_308 = 0;
    local_318 = local_318 & 0xffff0000;
    _free(pvStack_2dc);
    if (7 < uStack_2e0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2f4);
    }
    uStack_2e0 = 7;
    uStack_2e4 = 0;
    uStack_2f4 = uStack_2f4 & 0xffff0000;
    local_4._0_1_ = 2;
    _free(pvStack_358);
    if (7 < uStack_35c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_370);
    }
  }
  FUN_00855400(param_1_00 + 0x24);
  local_4._0_1_ = 0xd;
  uVar8 = FUN_00857d40(local_374);
  local_4._0_1_ = 0xe;
  FUN_00854700(uVar8,1);
  _free(pvStack_358);
  if (7 < uStack_35c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_370);
  }
  uStack_2b4 = 7;
  iStack_2b8 = 0;
  uStack_2c8 = (undefined4 *)((uint)uStack_2c8._2_2_ << 0x10);
  pvStack_2b0 = (void *)0x0;
  local_4._0_1_ = 0xf;
  local_380 = uStack_34c;
  if (uStack_34c != 0) {
    iVar6 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_34c <= uVar13)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      iVar1 = iStack_348 + iVar6;
      puVar11 = (undefined *)FUN_008531f0(local_374,auStack_2a8,iVar1);
      local_4._0_1_ = 0x10;
      if (auStack_2cc != puVar11) {
        FID_conflict_assign(puVar11,0,0xffffffff);
      }
      local_4._0_1_ = 0xf;
      _free(pvStack_358);
      if (7 < uStack_35c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_370);
      }
      if (((iStack_2b8 == 0) || (cVar4 = FUN_008506f0(0x2e,1), cVar4 != '\0')) ||
         (cVar4 = FUN_00855fb0(iVar1,&DAT_00d2814c), cVar4 != '\0')) {
LAB_00858869:
        bVar3 = true;
      }
      else {
        uVar8 = FUN_00856380(local_374,3);
        local_388 = local_388 | 2;
        local_4 = CONCAT31(local_4._1_3_,0x11);
        uVar9 = FUN_0081b3d8(auStack_2d4);
        cVar4 = FUN_00855c20(uVar9,uVar8);
        if (cVar4 != '\0') goto LAB_00858869;
        bVar3 = false;
      }
      local_4._0_1_ = 0xf;
      local_4._1_3_ = 0;
      if ((local_388 & 2) != 0) {
        local_388 = local_388 & 0xfffffffd;
        _free(pvStack_358);
        if (7 < uStack_35c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_370);
        }
      }
      if (bVar3) {
        FID_conflict_append(1,0x5c);
        FID_conflict_assign(auStack_2cc,0,0xffffffff);
      }
      else {
        puVar10 = uStack_2c8;
        if (uStack_2b4 < 8) {
          puVar10 = &uStack_2c8;
        }
        hFindFile = FindFirstFileW((LPCWSTR)puVar10,(LPWIN32_FIND_DATAW)auStack_260);
        if (hFindFile == (HANDLE)0xffffffff) {
          uVar13 = uVar13 + 1;
          if (uVar13 < local_380) {
            iVar6 = uVar13 * 0x24;
            do {
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_34c <= uVar13)) {
                FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                             "nIndex < m_nCount",L"wxArrayString: index out of bounds");
              }
              uVar8 = FUN_00855c70(local_374,0x5c,iVar6 + iStack_348);
              local_4._0_1_ = 0x12;
              FID_conflict_append(uVar8,0,0xffffffff);
              local_4._0_1_ = 0xf;
              _free(pvStack_358);
              if (7 < uStack_35c) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(uStack_370);
              }
              uVar13 = uVar13 + 1;
              iVar6 = iVar6 + 0x24;
            } while (uVar13 < local_380);
          }
          iVar6 = local_378;
          *(undefined4 *)(local_378 + 0x18) = 7;
          *(undefined4 *)(local_378 + 0x14) = 0;
          *(undefined2 *)(local_378 + 4) = 0;
          FID_conflict_assign(auStack_2cc,0,0xffffffff);
          local_388 = local_388 | 1;
          *(undefined4 *)(iVar6 + 0x1c) = 0;
          _free(pvStack_2b0);
          if (7 < uStack_2b4) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(uStack_2c8);
          }
          uStack_2b4 = 7;
          iStack_2b8 = 0;
          uStack_2c8 = (undefined4 *)((uint)uStack_2c8 & 0xffff0000);
          local_4._0_1_ = 2;
          FUN_00853f30();
          _free(pvStack_268);
          if (7 < local_26c) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_280[0]);
          }
          local_26c = 7;
          uStack_270 = 0;
          local_280[0] = (undefined4 *****)((uint)local_280[0] & 0xffff0000);
          _free(local_28c);
          if (7 < local_290) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_2a4);
          }
          goto LAB_00858a56;
        }
        psVar12 = (short *)(auStack_260 + 0x2c);
        do {
          sVar2 = *psVar12;
          psVar12 = psVar12 + 1;
        } while (sVar2 != 0);
        FUN_00473ccc(auStack_260 + 0x2c,(int)psVar12 - (int)(auStack_260 + 0x2e) >> 1);
        if (uVar13 < local_380 - 1) {
          FID_conflict_append(1,0x5c);
        }
        FindClose(hFindFile);
      }
      uVar13 = uVar13 + 1;
      iVar6 = iVar6 + 0x24;
    } while (uVar13 < local_380);
  }
  iVar6 = local_378;
  *(undefined4 *)(local_378 + 0x18) = 7;
  *(undefined4 *)(local_378 + 0x14) = 0;
  *(undefined2 *)(local_378 + 4) = 0;
  FID_conflict_assign(auStack_2a8,0,0xffffffff);
  local_388 = local_388 | 1;
  *(undefined4 *)(iVar6 + 0x1c) = 0;
  _free(pvStack_2b0);
  if (7 < uStack_2b4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c8);
  }
  uStack_2c8 = (undefined4 *)((uint)uStack_2c8 & 0xffff0000);
  uStack_2b4 = 7;
  iStack_2b8 = 0;
  local_4._0_1_ = 2;
  FUN_00853f30();
  _free(pvStack_268);
  if (7 < local_26c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_280[0]);
  }
  local_26c = 7;
  uStack_270 = 0;
  local_280[0] = (undefined4 *****)((uint)local_280[0] & 0xffff0000);
  _free(local_28c);
  if (7 < local_290) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2a4);
  }
LAB_00858a56:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00858c30(undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  undefined4 uVar1;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7580;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_58;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  FUN_00856d10(param_1,local_34,param_2,param_3,param_4,0,param_5,
               DAT_0323f878 ^ (uint)&stack0xffffff9c);
  if (param_2 != 0) {
    uVar1 = FUN_00857160();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00855e60(uVar1);
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00858d30(int param_1_00,int param_1,undefined4 param_2,int param_3,int param_4,undefined param_5
            ,undefined4 param_6)

{
  char cVar1;
  int local_3c;
  int local_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bddc78;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3c;
  ExceptionList = &local_c;
  local_3c = param_3;
  local_38 = param_4;
  cVar1 = FUN_00855b00(param_6,DAT_0323f878 ^ (uint)&stack0xffffffb4);
  if (cVar1 == '\0') {
    FUN_00857300(param_2,param_6);
  }
  else {
    FUN_008521d0(param_2,1,0xffffffff);
    local_4 = 0;
    FUN_00857300(local_34,param_6);
    local_4 = 0xffffffff;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
  }
  if (param_1_00 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  if (param_1_00 + 0x58 != local_38) {
    FID_conflict_assign(local_38,0,0xffffffff);
  }
  if (param_1_00 + 0x34 == local_3c) {
    *(undefined *)(param_1_00 + 0x7d) = param_5;
  }
  else {
    FID_conflict_assign(local_3c,0,0xffffffff);
    *(undefined *)(param_1_00 + 0x7d) = param_5;
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00858e70(undefined4 param_1,undefined4 param_2)

{
  undefined4 local_a4;
  undefined local_a0 [4];
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc75d3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_a4;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  local_60 = (void *)0x0;
  local_88 = 7;
  local_8c = 0;
  local_9c = local_9c & 0xffff0000;
  local_84 = (void *)0x0;
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  local_3c = (void *)0x0;
  local_4 = 3;
  FUN_00856d10(param_1,local_34,local_7c,local_a0,local_58,&local_a4,param_2,
               DAT_0323f878 ^ (uint)&stack0xffffff4c);
  FUN_00858d30(local_34,local_7c,local_a0,local_58,local_a4,param_2);
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_9c);
  }
  local_88 = 7;
  local_8c = 0;
  local_9c = local_9c & 0xffff0000;
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00859060(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 local_15c [2];
  undefined local_154 [4];
  undefined4 local_150;
  int local_140;
  uint local_13c;
  void *local_138;
  undefined local_130 [4];
  undefined4 local_12c;
  undefined4 local_11c;
  uint local_118;
  void *local_114;
  undefined local_10c [4];
  undefined4 local_108;
  undefined4 local_f8;
  uint local_f4;
  void *local_f0;
  undefined local_e8 [4];
  undefined4 local_e4;
  int local_d4;
  uint local_d0;
  void *local_cc;
  undefined local_c4 [4];
  undefined4 local_c0;
  undefined4 local_b0;
  uint local_ac;
  void *local_a8;
  undefined local_a0 [4];
  undefined4 local_9c;
  int local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  undefined4 local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc766a;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_15c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffe94;
  ExceptionList = &local_c;
  local_30 = local_30 & 0xffff0000;
  local_1c = 7;
  local_20 = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  local_18 = (void *)0x0;
  local_4 = 0;
  if (local_20 != 0) {
    cVar1 = FUN_0085cac0(local_34,uVar2);
    if (cVar1 == '\0') {
      puVar3 = (undefined4 *)FUN_0081b66e(local_15c,param_3);
      FID_conflict_append(1,*puVar3);
    }
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = (uint)local_78._2_2_ << 0x10;
  local_60 = (void *)0x0;
  local_ac = 7;
  local_b0 = 0;
  local_c0 = (uint)local_c0._2_2_ << 0x10;
  local_a8 = (void *)0x0;
  local_f4 = 7;
  local_f8 = 0;
  local_108 = (uint)local_108._2_2_ << 0x10;
  local_f0 = (void *)0x0;
  local_118 = 7;
  local_11c = 0;
  local_12c = (uint)local_12c._2_2_ << 0x10;
  local_114 = (void *)0x0;
  local_13c = 7;
  local_140 = 0;
  local_150 = (uint)local_150._2_2_ << 0x10;
  local_138 = (void *)0x0;
  local_d0 = 7;
  local_d4 = 0;
  local_e4 = (uint)local_e4._2_2_ << 0x10;
  local_cc = (void *)0x0;
  local_88 = 7;
  local_8c = 0;
  local_9c = (uint)local_9c._2_2_ << 0x10;
  local_84 = (void *)0x0;
  local_40 = 7;
  local_44 = 0;
  local_54 = (uint)local_54._2_2_ << 0x10;
  local_3c = (void *)0x0;
  local_4 = CONCAT31(local_4._1_3_,8);
  FUN_00856d10(param_2,local_154,local_e8,local_10c,local_130,local_15c,param_3);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((local_140 != 0 || (local_d4 != 0)))) {
    FUN_00840480("..\\..\\src\\common\\filename.cpp",0x216,"wxFileName::Assign",
                 "volDummy.empty() && pathDummy.empty()",
                 L"the file name shouldn\'t contain the path");
  }
  FUN_00856d10(local_34,local_7c,local_c4,local_a0,local_58,0,param_3);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((local_8c != 0 || (local_44 != 0)))) {
    FUN_00840480("..\\..\\src\\common\\filename.cpp",0x21d,"wxFileName::Assign",
                 "nameDummy.empty() && extDummy.empty()",
                 L"the path shouldn\'t contain file name nor extension");
  }
  FUN_00858d30(local_7c,local_c4,local_10c,local_130,local_15c[0],param_3);
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_9c);
  }
  local_88 = 7;
  local_8c = 0;
  local_9c = local_9c & 0xffff0000;
  _free(local_cc);
  if (7 < local_d0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_e4);
  }
  local_d0 = 7;
  local_d4 = 0;
  local_e4 = local_e4 & 0xffff0000;
  _free(local_138);
  if (7 < local_13c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_150);
  }
  local_13c = 7;
  local_140 = 0;
  local_150 = local_150 & 0xffff0000;
  _free(local_114);
  if (7 < local_118) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_12c);
  }
  local_118 = 7;
  local_11c = 0;
  local_12c = local_12c & 0xffff0000;
  _free(local_f0);
  if (7 < local_f4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_108);
  }
  local_f4 = 7;
  local_f8 = 0;
  local_108 = local_108 & 0xffff0000;
  _free(local_a8);
  if (7 < local_ac) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_c0);
  }
  local_ac = 7;
  local_b0 = 0;
  local_c0 = local_c0 & 0xffff0000;
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00859540(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  FUN_00859060(param_1,local_30,param_2);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  ExceptionList = local_c;
  return;
}



undefined4 FUN_008595d0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc76b9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00432caa(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  local_4 = 0;
  FUN_00859540(param_2,param_3);
  ExceptionList = local_c;
  return param_1;
}



undefined FUN_00859650(void)

{
  int iVar1;
  LPCWSTR lpFileName;
  DWORD DVar2;
  undefined uVar3;
  undefined local_24 [4];
  undefined4 uStack_20;
  uint uStack_c;
  void *pvStack_8;
  
  iVar1 = FUN_008581b0(local_24,0);
  if (*(uint *)(iVar1 + 0x18) < 8) {
    lpFileName = (LPCWSTR)(iVar1 + 4);
  }
  else {
    lpFileName = *(LPCWSTR *)(iVar1 + 4);
  }
  DVar2 = GetFileAttributesW(lpFileName);
  if ((DVar2 == 0xffffffff) || ((DVar2 & 0x10) != 0)) {
    uVar3 = 0;
  }
  else {
    uVar3 = 1;
  }
  _free(pvStack_8);
  if (7 < uStack_c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_20);
  }
  return uVar3;
}



void FUN_008596b0(undefined4 param_1)

{
  undefined4 uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_00857940(local_30,param_1,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  local_4 = 0;
  FUN_00859540(uVar1,0);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return;
}



void FUN_00859730(undefined4 param_1,undefined4 param_2,byte param_3)

{
  uint uVar1;
  char cVar2;
  undefined4 uVar3;
  uint uVar4;
  int iVar5;
  undefined local_10c [4];
  uint local_108;
  int local_104;
  uint local_f8;
  undefined4 local_e8;
  uint local_e4;
  void *local_e0;
  undefined local_d8 [4];
  uint local_d4;
  undefined4 local_c4;
  uint local_c0;
  void *local_bc;
  undefined local_b4 [4];
  undefined4 local_b0;
  undefined4 local_a0;
  uint local_9c;
  void *local_98;
  int local_7c;
  undefined local_6c [92];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7717;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_10c;
  ExceptionList = &local_c;
  if ((param_3 & 1) == 0) {
    FUN_0085e920(param_1,param_2,DAT_0323f878 ^ (uint)&stack0xfffffee4);
  }
  else {
    FUN_00432caa();
    local_4 = 0;
    FUN_00859540(param_1,0);
    local_9c = 7;
    local_a0 = 0;
    local_b0 = (uint)local_b0._2_2_ << 0x10;
    local_98 = (void *)0x0;
    local_4._0_1_ = 1;
    if (local_7c != 0) {
      FUN_008560c0(local_d8);
      local_4._0_1_ = 2;
      uVar3 = FUN_00857160();
      local_4._0_1_ = 3;
      FID_conflict_append(uVar3,0,0xffffffff);
      _free(local_e0);
      if (7 < local_e4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_f8);
      }
      local_e4 = 7;
      local_e8 = 0;
      local_f8 = local_f8 & 0xffff0000;
      local_4._0_1_ = 1;
      _free(local_bc);
      if (7 < local_c0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_d4);
      }
      local_c0 = 7;
      local_c4 = 0;
      local_d4 = local_d4 & 0xffff0000;
    }
    FUN_00855400(local_6c);
    uVar1 = local_108;
    uVar4 = 0;
    local_4._0_1_ = 4;
    if (local_108 != 0) {
      iVar5 = 0;
      do {
        if (uVar4 == 0) {
          cVar2 = FUN_00857bd0(0);
          if (cVar2 != '\0') goto LAB_008598c5;
        }
        else {
LAB_008598c5:
          FID_conflict_append(1,0x5c);
        }
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_108 <= uVar4)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                       "nIndex < m_nCount",L"wxArrayString: index out of bounds");
        }
        FID_conflict_append(local_104 + iVar5,0,0xffffffff);
        cVar2 = FUN_00857710(local_b4);
        if (cVar2 == '\0') {
          cVar2 = FUN_0085e920(local_b4,param_2);
          if (cVar2 == '\0') {
            local_4 = CONCAT31(local_4._1_3_,1);
            FUN_00853f30();
            _free(local_98);
            if (7 < local_9c) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1(local_b0);
            }
            local_9c = 7;
            local_a0 = 0;
            local_b0 = local_b0 & 0xffff0000;
            local_4 = 0xffffffff;
            FUN_0043250a();
            goto LAB_00859a33;
          }
        }
        uVar4 = uVar4 + 1;
        iVar5 = iVar5 + 0x24;
      } while (uVar4 < uVar1);
    }
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00853f30();
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b0);
    }
    local_9c = 7;
    local_a0 = 0;
    local_b0 = local_b0 & 0xffff0000;
    local_4 = 0xffffffff;
    FUN_0043250a();
  }
LAB_00859a33:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00859a60(undefined4 param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  HRESULT HVar2;
  undefined4 *puVar3;
  int *unaff_EBX;
  int *unaff_EBP;
  int *unaff_EDI;
  int *piVar4;
  undefined4 uStack_12e0;
  undefined4 *local_12dc;
  undefined auStack_12d8 [4];
  undefined4 local_12d4;
  undefined local_12a8 [4];
  uint local_12a4;
  undefined4 local_1294;
  uint local_1290;
  void *local_128c;
  undefined local_1284 [4];
  uint local_1280;
  undefined4 local_1270;
  uint local_126c;
  void *local_1268;
  undefined local_1260 [4];
  uint local_125c;
  undefined4 local_124c;
  uint local_1248;
  void *local_1244;
  undefined local_123c [4];
  undefined4 local_1238;
  int iStack_1234;
  uint local_1224;
  void *local_1220;
  undefined auStack_1030 [20];
  undefined auStack_101c [4088];
  undefined uStack_24;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7792;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&uStack_12e0;
  ExceptionList = &local_c;
  local_12d4 = param_3;
  local_1248 = 7;
  local_124c = 0;
  local_125c = local_125c & 0xffff0000;
  local_1244 = (void *)0x0;
  local_126c = 7;
  local_1270 = 0;
  local_1280 = local_1280 & 0xffff0000;
  local_1268 = (void *)0x0;
  local_1290 = 7;
  local_1294 = 0;
  local_12a4 = local_12a4 & 0xffff0000;
  local_128c = (void *)0x0;
  local_4._0_1_ = 2;
  local_4._1_3_ = 0;
  FUN_00858c30(param_1,local_1260,local_1284,local_12a8,0,DAT_0323f878 ^ (uint)&stack0xffffed10);
  uStack_12e0._0_3_ = (uint3)(ushort)uStack_12e0;
  FUN_004325b6(&DAT_00d282b0);
  local_4._0_1_ = 3;
  iVar1 = FUN_00850470(local_123c);
  uStack_12e0 = CONCAT13(iVar1 != 0,(uint3)uStack_12e0);
  local_4 = CONCAT31(local_4._1_3_,2);
  _free(local_1220);
  if (7 < local_1224) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_1238);
  }
  if (uStack_12e0._3_1_ == '\0') {
    HVar2 = CoCreateInstance((IID *)&DAT_00dcd7f8,(LPUNKNOWN)0x0,1,(IID *)&DAT_00dcd638,&local_12dc)
    ;
    if (-1 < HVar2) {
      piVar4 = (int *)&DAT_00dcd748;
      iVar1 = (**(code **)*local_12dc)(local_12dc,&DAT_00dcd748,auStack_12d8);
      if (-1 < iVar1) {
        if (DAT_032bd4d4 == 0) {
          DAT_032bd4d4 = FUN_00861440();
        }
        puVar3 = (undefined4 *)FUN_00432413(&local_12dc,DAT_032bd4d4);
        MultiByteToWideChar(0,1,*(LPCSTR *)*puVar3,-1,(LPWSTR)&local_1224,0x104);
        thunk_FUN_0043c1dd();
        iVar1 = (**(code **)(*unaff_EBX + 0x14))(unaff_EBX,&local_1224,0);
        (**(code **)(*unaff_EDI + 8))(unaff_EDI);
        if (-1 < iVar1) {
          (**(code **)(*unaff_EBP + 0xc))(unaff_EBP,auStack_101c,0x800,0,2);
          iVar1 = FUN_004325b6(auStack_1030);
          uStack_24 = 4;
          if (param_2 != iVar1) {
            FID_conflict_assign(iVar1,0,0xffffffff);
          }
          uStack_24 = 2;
          FUN_0040159c();
          FUN_0043225e(param_1,param_2);
          (**(code **)(*piVar4 + 0x28))(piVar4,auStack_1030,0x800);
          FUN_004325b6(auStack_101c);
          local_10._0_1_ = 5;
          if ((iStack_1234 != 0) && (uStack_12e0 != 0)) {
            FUN_0043261a(&local_1248);
          }
          local_10 = CONCAT31(local_10._1_3_,2);
          FUN_0040159c();
        }
      }
      (**(code **)(*unaff_EBP + 8))(unaff_EBP);
    }
    _free(local_128c);
    if (7 < local_1290) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_12a4);
    }
    local_1290 = 7;
    local_1294 = 0;
    local_12a4 = local_12a4 & 0xffff0000;
    _free(local_1268);
    if (7 < local_126c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_1280);
    }
    local_126c = 7;
    local_1270 = 0;
    local_1280 = local_1280 & 0xffff0000;
    _free(local_1244);
    if (7 < local_1248) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_125c);
    }
  }
  else {
    _free(local_128c);
    if (7 < local_1290) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_12a4);
    }
    local_1290 = 7;
    local_1294 = 0;
    local_12a4 = local_12a4 & 0xffff0000;
    _free(local_1268);
    if (7 < local_126c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_1280);
    }
    local_126c = 7;
    local_1270 = 0;
    local_1280 = local_1280 & 0xffff0000;
    _free(local_1244);
    if (7 < local_1248) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_125c);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00859ea0(undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd3090;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_58;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  local_3c = (void *)0x0;
  local_4 = 1;
  FUN_00856a10(param_1,local_34,local_58,param_4,DAT_0323f878 ^ (uint)&stack0xffffff98);
  FUN_00858d30(local_34,local_58,param_2,param_3,*(int *)(param_3 + 0x14) != 0,param_4);
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00859fd0(int param_1_00,uint param_1,int param_2,int param_3)

{
  undefined uVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  int local_13c;
  int local_138;
  int local_134;
  uint local_130;
  uint local_128;
  int local_124;
  uint local_11c;
  undefined local_118 [4];
  uint local_114;
  int local_110;
  uint local_108 [3];
  undefined local_fc [4];
  uint local_f8;
  int local_e8;
  uint local_e4;
  void *local_e0;
  undefined local_d8 [4];
  uint local_d4;
  int local_c4;
  uint local_c0;
  void *local_bc;
  undefined local_b4 [4];
  undefined4 local_b0;
  int local_a0;
  uint local_9c;
  void *local_98;
  int local_7c;
  undefined local_6c [4];
  int local_68;
  int local_48;
  int local_24;
  char local_14;
  char local_13;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7870;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_13c;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xfffffeb4;
  ExceptionList = &local_c;
  local_134 = param_1_00;
  if ((param_1 & 1) != 0) {
    FUN_008581b0(local_b4,param_3);
    local_4 = 0;
    FUN_0088a3f0(local_fc,local_b4);
    local_4 = CONCAT31(local_4._1_3_,1);
    if ((local_e8 != local_a0) || (iVar4 = FUN_00850760(local_b4), iVar4 != 0)) {
      FUN_00858e70(local_fc,0);
    }
    _free(local_e0);
    if (7 < local_e4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_f8);
    }
    local_e4 = 7;
    local_e8 = 0;
    local_f8 = local_f8 & 0xffff0000;
    local_4 = 0xffffffff;
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b0);
    }
  }
  iVar4 = param_1_00 + 0x24;
  local_138 = iVar4;
  FUN_00855400(iVar4);
  local_4 = 2;
  FUN_00432caa(uVar3);
  local_4._0_1_ = 3;
  local_13c = param_3;
  if (param_3 == 0) {
    local_13c = 3;
  }
  if (((param_1 & 0x10) != 0) && (cVar2 = FUN_00857bd0(local_13c), cVar2 == '\0')) {
    if (*(int *)(param_2 + 0x14) == 0) {
      uVar5 = FUN_008560c0(local_d8);
      local_4._0_1_ = 4;
      FUN_008596b0(uVar5);
      local_4._0_1_ = 3;
      FUN_0040159c();
    }
    else {
      FUN_00859540(param_2,0);
    }
  }
  if ((((local_13c == 1) && ((param_1 & 4) != 0)) && (*(char *)(param_1_00 + 0x7c) != '\0')) &&
     (local_128 != 0)) {
    uVar5 = thunk_FUN_004325d6(0);
    FUN_004325a0(uVar5);
    if (local_c4 != 0) {
      uVar5 = 0x7e;
      FUN_0081b5a8(local_108,0);
      cVar2 = FUN_00820040(uVar5);
      if (cVar2 != '\0') {
        FUN_00432231(local_118);
        uVar5 = FUN_00855d60(local_108,1);
        local_4._0_1_ = 7;
        FUN_00840a70(uVar5);
        local_4._0_1_ = 8;
        uVar5 = FUN_008969e0(local_fc,local_b4);
        local_4._0_1_ = 9;
        FUN_00859540(uVar5,0);
        FUN_0040159c();
        FUN_0040159c();
        FUN_00432214();
        local_4._0_1_ = 5;
        FUN_00432214();
        FUN_008543e0(0,1);
      }
    }
    local_4._0_1_ = 3;
    FUN_0040159c();
  }
  if (((local_68 != 0) || (local_48 != 0)) ||
     ((local_14 == '\0' || ((local_24 != 0 || (local_13 != '\0')))))) {
    if ((*(int *)(param_1_00 + 0x14) == 0) && (local_7c != 0)) {
      iVar6 = FUN_008560c0(local_d8);
      local_4._0_1_ = 10;
      if (param_1_00 != iVar6) {
        FID_conflict_assign(iVar6,0,0xffffffff);
      }
      local_4._0_1_ = 3;
      FUN_0040159c();
      if (*(char *)(param_1_00 + 0x7c) == '\0') {
        FUN_00856240();
      }
    }
    FUN_00855400(local_6c);
    uVar3 = local_114;
    local_4 = CONCAT31(local_4._1_3_,0xb);
    thunk_FUN_008541b0(local_114);
    uVar8 = 0;
    if (uVar3 != 0) {
      iVar6 = 0;
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_114 <= uVar8)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                       "nIndex < m_nCount",L"wxArrayString: index out of bounds");
        }
        FUN_008542c0(local_110 + iVar6,uVar8,1);
        uVar8 = uVar8 + 1;
        iVar6 = iVar6 + 0x24;
        iVar4 = local_138;
      } while (uVar8 < uVar3);
    }
    if (local_14 == '\0') {
      *(undefined *)(param_1_00 + 0x7c) = 0;
    }
    local_4._0_1_ = 3;
    FUN_00853f30();
  }
  FUN_00853d00();
  local_108[0] = local_128;
  local_130 = 0;
  if (local_128 != 0) {
    local_11c = param_1 & 2;
    iVar6 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_128 <= local_130)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      local_e4 = 7;
      local_e8 = 0;
      local_f8 = local_f8 & 0xffff0000;
      FID_conflict_assign(local_124 + iVar6,0,0xffffffff);
      local_e0 = (void *)0x0;
      local_4._0_1_ = 0xc;
      uVar1 = (undefined)local_4;
      local_4._0_1_ = 0xc;
      if (local_11c == 0) goto LAB_0085a52b;
      iVar7 = FUN_008507a0(&DAT_00fae798);
      if (iVar7 == 0) {
        local_4._0_1_ = 3;
        _free(local_e0);
      }
      else {
        iVar7 = FUN_008507a0(&DAT_00d240e0);
        uVar1 = (undefined)local_4;
        if (iVar7 == 0) {
          if (*(int *)(param_1_00 + 0x28) == 0) {
            if (*(char *)(param_1_00 + 0x7c) == '\0') {
              local_4._0_1_ = 3;
              _free(local_e0);
              goto joined_r0x0085a512;
            }
            goto LAB_0085a52b;
          }
          FUN_008543e0(*(int *)(iVar4 + 4) + -1,1);
        }
        else {
LAB_0085a52b:
          local_4._0_1_ = uVar1;
          FUN_00854700(local_fc,1);
        }
        local_4._0_1_ = 3;
        _free(local_e0);
      }
joined_r0x0085a512:
      if (7 < local_e4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_f8);
      }
      local_130 = local_130 + 1;
      iVar6 = iVar6 + 0x24;
    } while (local_130 < local_108[0]);
  }
  if ((param_1 & 0x40) != 0) {
    local_e4 = 7;
    local_e8 = 0;
    local_f8 = local_f8 & 0xffff0000;
    local_e0 = (void *)0x0;
    local_4._0_1_ = 0xd;
    uVar5 = FUN_008581b0(local_d8,local_13c);
    local_4._0_1_ = 0xe;
    cVar2 = FUN_00859a60(uVar5,local_fc,0);
    local_4 = CONCAT31(local_4._1_3_,0xd);
    _free(local_bc);
    if (7 < local_c0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_d4);
    }
    if (cVar2 != '\0') {
      *(undefined *)(local_134 + 0x7c) = 0;
      FUN_00858e70(local_fc,0);
    }
    local_4._0_1_ = 3;
    _free(local_e0);
    param_1_00 = local_134;
    if (7 < local_e4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_f8);
    }
  }
  iVar4 = local_13c;
  if (((param_1 & 0x20) != 0) && (local_13c == 3)) {
    uVar5 = FUN_00858270(local_d8);
    local_4._0_1_ = 0xf;
    FUN_00858e70(uVar5,0);
    local_4._0_1_ = 3;
    _free(local_bc);
    if (7 < local_c0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_d4);
    }
    local_c0 = 7;
    local_c4 = 0;
    local_d4 = local_d4 & 0xffff0000;
  }
  if (((param_1 & 8) != 0) && ((iVar4 == 0 || (iVar4 != 1)))) {
    FUN_008510e0();
    FUN_008510e0();
    FUN_008510e0();
    uVar3 = *(uint *)(param_1_00 + 0x28);
    uVar8 = 0;
    if (uVar3 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(local_138 + 4) <= uVar8)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                       "nIndex < m_nCount",L"wxArrayString: index out of bounds");
        }
        FUN_008510e0();
        uVar8 = uVar8 + 1;
      } while (uVar8 < uVar3);
    }
  }
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_0043250a();
  local_4 = 0xffffffff;
  FUN_00853f30();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



HANDLE * __thiscall FUN_0085a7a0(HANDLE *param_1_00,int param_1,int param_2,DWORD param_3)

{
  char cVar1;
  LPCWSTR lpFileName;
  HANDLE pvVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7921;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(uint *)(param_1 + 0x18) < 8) {
    lpFileName = (LPCWSTR)(param_1 + 4);
  }
  else {
    lpFileName = *(LPCWSTR *)(param_1 + 4);
  }
  pvVar2 = CreateFileW(lpFileName,(-(uint)(param_2 != 0) & 0x80) + 0x80,3,(LPSECURITY_ATTRIBUTES)0x0
                       ,3,param_3,(HANDLE)0x0);
  *param_1_00 = pvVar2;
  if (pvVar2 == (HANDLE)0xffffffff) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (param_2 == 0) {
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return param_1_00;
      }
      FUN_004325b6();
      uStack_4 = param_2;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_0043c211();
      FUN_00432231();
      uStack_4._0_1_ = 4;
      FUN_008423d0();
      uStack_4._0_1_ = 5;
      GetLastError();
      FUN_0084d140();
      uStack_4._0_1_ = 6;
      FUN_00848860();
      uStack_4._0_1_ = 3;
      FUN_00842440();
      FUN_0040159c();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
    }
    else {
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return param_1_00;
      }
      FUN_004325b6();
      uStack_4 = 7;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,8);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 9;
      FUN_0043c211();
      FUN_00432231();
      uStack_4._0_1_ = 0xb;
      FUN_008423d0();
      uStack_4._0_1_ = 0xc;
      GetLastError();
      FUN_0084d140();
      uStack_4._0_1_ = 0xd;
      FUN_00848860();
      uStack_4._0_1_ = 10;
      FUN_00842440();
      FUN_0040159c();
      uStack_4 = CONCAT31(uStack_4._1_3_,8);
      FUN_0081b5bc();
      FUN_0040159c();
    }
    FUN_0040159c();
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_0085aae0(HANDLE *param_1)

{
  char cVar1;
  BOOL BVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7981;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1 != (HANDLE)0xffffffff) {
    BVar2 = CloseHandle(*param_1);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        uStack_4 = 0;
        FUN_0043c211();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        uStack_4._0_1_ = 2;
        FUN_0043c211();
        uStack_4._0_1_ = 3;
        FUN_008423d0();
        uStack_4._0_1_ = 4;
        GetLastError();
        FUN_0084d140();
        FUN_008854f0();
        FUN_0083fe90();
        uStack_4._0_1_ = 3;
        FUN_00842440();
        FUN_0040159c();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_0085ac80(undefined4 param_1,DWORD *param_2)

{
  char cVar1;
  BOOL BVar2;
  _SYSTEMTIME _Stack_f8;
  FILETIME local_e4;
  _FILETIME local_dc [26];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc79d9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_e4.dwLowDateTime = *param_2;
  local_e4.dwHighDateTime = param_2[1];
  BVar2 = FileTimeToLocalFileTime(&local_e4,local_dc);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  BVar2 = FileTimeToSystemTime(local_dc,&_Stack_f8);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 2;
      FUN_008423d0();
      uStack_4._0_1_ = 3;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = CONCAT31(uStack_4._1_3_,2);
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  FUN_0086df90();
  ExceptionList = local_c;
  return;
}



// WARNING: Removing unreachable block (ram,0x0085b095)

int FUN_0085aec0(int param_1)

{
  char cVar1;
  int iVar2;
  DWORD DVar3;
  LPWSTR *local_d4;
  uint local_b4;
  void *local_b0;
  uint local_90;
  void *local_8c;
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7a69;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  _getenv("TMPDIR");
  FUN_0043c211();
  local_4 = 1;
  FUN_00857b00();
  local_4 = local_4 & 0xffffff00;
  _free(local_64);
  if (7 < local_68) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (*(int *)(param_1 + 0x14) == 0) {
    _getenv("TMP");
    FUN_0043c211();
    local_4 = 2;
    iVar2 = FUN_00857b00();
    local_4._0_1_ = 3;
    if (param_1 != iVar2) {
      FID_conflict_assign();
    }
    _free(local_b0);
    if (7 < local_b4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_8c);
    if (7 < local_90) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (*(int *)(param_1 + 0x14) == 0) {
      _getenv("TEMP");
      FUN_0043c211();
      local_4 = 4;
      iVar2 = FUN_00857b00();
      local_4._0_1_ = 5;
      if (param_1 != iVar2) {
        FID_conflict_assign();
      }
      _free(local_b0);
      local_4 = (uint)local_4._1_3_ << 8;
      _free(local_8c);
      if (7 < local_90) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if (*(int *)(param_1 + 0x14) == 0) {
        FUN_00852280();
        DVar3 = GetTempPathW(0x104,*local_d4);
        FUN_00851bf0();
        if (DVar3 == 0) {
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(6);
          if (cVar1 != '\0') {
            FUN_0081c0f1();
            local_4 = 6;
            FUN_008423d0();
            local_4._0_1_ = 7;
            GetLastError();
            FUN_00843700();
            GetLastError();
            FUN_00847d90();
            local_4._0_1_ = 6;
            FUN_00842440();
            local_4 = (uint)local_4._1_3_ << 8;
            FUN_0081b5bc();
          }
        }
        goto LAB_0085b25a;
      }
    }
  }
  FUN_00856440();
  iVar2 = FUN_00855a50();
  _free(local_8c);
  if (7 < local_90) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (iVar2 == -1) {
    FUN_0081b66e();
    FUN_00855e10();
  }
  else {
    FID_conflict_erase();
  }
LAB_0085b25a:
  if (*(int *)(param_1 + 0x14) == 0) {
    FUN_0083fc60();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0085b290(int param_1_00,int param_1,int param_2,int param_3)

{
  char cVar1;
  BOOL BVar2;
  undefined4 uVar3;
  int iVar4;
  HANDLE local_140;
  undefined local_13c [8];
  undefined local_134 [8];
  undefined local_12c [12];
  uint local_120;
  undefined4 local_110;
  uint local_10c;
  void *local_108;
  uint local_e8;
  void *local_e4;
  uint local_d8;
  undefined4 local_c8;
  uint local_c4;
  void *local_c0;
  uint local_b4;
  undefined4 local_a4;
  uint local_a0;
  void *local_9c;
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7aed;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*(int *)(param_1_00 + 0x48) == 0) && (*(int *)(param_1_00 + 0x6c) == 0)) {
    FUN_00857de0();
    local_4 = 0;
    cVar1 = FUN_0089e1c0();
    local_4 = 0xffffffff;
    _free(local_e4);
    if (7 < local_e8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  else {
    FUN_008581b0();
    local_4 = 1;
    FUN_0085a7a0();
    local_4 = 0xffffffff;
    _free(local_e4);
    if (7 < local_e8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (local_140 == (HANDLE)0xffffffff) {
      cVar1 = false;
    }
    else {
      BVar2 = GetFileTime(local_140,(LPFILETIME)(-(uint)(param_3 != 0) & (uint)local_13c),
                          (LPFILETIME)(-(uint)(param_1 != 0) & (uint)local_134),
                          (LPFILETIME)(-(uint)(param_2 != 0) & (uint)local_12c));
      cVar1 = BVar2 != 0;
    }
    FUN_0085aae0();
  }
  if (cVar1 == '\0') {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 2;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,3);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 4;
      FUN_0043c211();
      local_4._0_1_ = 5;
      FUN_008581b0();
      FUN_00432231();
      local_4._0_1_ = 7;
      FUN_008423d0();
      local_4._0_1_ = 8;
      GetLastError();
      FUN_0084d140();
      local_4._0_1_ = 9;
      FUN_00848860();
      local_4._0_1_ = 6;
      FUN_00842440();
      _free(local_9c);
      if (7 < local_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_a0 = 7;
      local_a4 = 0;
      local_b4 = local_b4 & 0xffff0000;
      _free(local_c0);
      if (7 < local_c4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_d8 = local_d8 & 0xffff0000;
      local_c4 = 7;
      local_c8 = 0;
      local_4 = CONCAT31(local_4._1_3_,3);
      FUN_0081b5bc();
      _free(local_108);
      if (7 < local_10c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_10c = 7;
      local_110 = 0;
      local_120 = local_120 & 0xffff0000;
      _free(local_64);
      if (7 < local_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    uVar3 = 0;
  }
  else {
    if (param_3 != 0) {
      FUN_0085ac80();
    }
    if (param_1 != 0) {
      FUN_0085ac80();
    }
    if (param_2 != 0) {
      FUN_0085ac80();
    }
    uVar3 = 1;
  }
  ExceptionList = local_c;
  return uVar3;
}



void __fastcall
FUN_0085b690(int *param_1_00,int param_2_00,undefined4 param_1,int *param_2,undefined *param_3)

{
  int *piVar1;
  char cVar2;
  undefined *puVar3;
  undefined4 *lpPathName;
  UINT UVar4;
  int iVar5;
  undefined4 *lpPrefixString;
  undefined auStack_17c [8];
  undefined4 uStack_174;
  undefined *puStack_170;
  char *pcStack_16c;
  undefined auStack_144 [2];
  undefined local_142;
  char cStack_141;
  int local_140;
  undefined *local_13c;
  LPWSTR *local_138;
  int *local_134;
  int *local_130;
  undefined4 local_12c;
  undefined auStack_128 [44];
  uint local_fc;
  void *local_f8;
  uint uStack_ec;
  undefined4 uStack_dc;
  uint uStack_d8;
  void *pvStack_d4;
  uint uStack_c8;
  undefined4 uStack_b8;
  uint uStack_b4;
  void *pvStack_b0;
  undefined4 local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7bc6;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_144;
  ExceptionList = &local_c;
  local_12c = 0;
  local_4 = 0;
  local_134 = param_2;
  local_140 = param_2_00;
  local_130 = param_1_00;
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 != (int *)0x0)) &&
     (param_1_00 != (int *)0x0)) {
    pcStack_16c = "..\\..\\src\\common\\filename.cpp";
    puStack_170 = (undefined *)0x85b725;
    FUN_008402e0();
  }
  *(undefined4 *)(param_2_00 + 0x18) = 7;
  *(undefined4 *)(param_2_00 + 0x14) = 0;
  *(undefined2 *)(param_2_00 + 4) = 0;
  *(undefined4 *)(param_2_00 + 0x1c) = 0;
  local_12c = 1;
  local_1c = 7;
  local_20 = 0;
  local_30 = (undefined4 *)((uint)local_30._2_2_ << 0x10);
  local_18 = (void *)0x0;
  local_40 = 7;
  local_44 = 0;
  local_54 = (undefined4 *)((uint)local_54._2_2_ << 0x10);
  local_3c = (void *)0x0;
  local_4._0_1_ = 2;
  local_4._1_3_ = 0;
  local_142 = 0;
  if (param_3 == (undefined *)0x0) {
    param_3 = &local_142;
  }
  else {
    local_142 = *param_3;
    *param_3 = 0;
  }
  pcStack_16c = (char *)param_1;
  puStack_170 = (undefined *)0x85b7c2;
  FUN_00858c30();
  if (local_20 == 0) {
    puVar3 = (undefined *)FUN_0085aec0();
    local_4._0_1_ = 3;
    if (local_34 != puVar3) {
      FID_conflict_assign();
    }
    local_4._0_1_ = 2;
    _free(local_f8);
    if (7 < local_fc) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  FUN_00852280();
  lpPrefixString = local_54;
  if (local_40 < 8) {
    lpPrefixString = &local_54;
  }
  lpPathName = local_30;
  if (local_1c < 8) {
    lpPathName = &local_30;
  }
  pcStack_16c = (char *)0x85b87a;
  UVar4 = GetTempFileNameW((LPCWSTR)lpPathName,(LPCWSTR)lpPrefixString,0,*local_138);
  FUN_00851bf0();
  if (UVar4 == 0) {
    local_13c = auStack_17c;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 != '\0') {
      FUN_0081c0f1();
      pcStack_16c = (char *)0x6;
      local_4._0_1_ = 4;
      puStack_170 = (undefined *)0x85b8ee;
      FUN_008423d0();
      local_4._0_1_ = 5;
      GetLastError();
      FUN_00843700();
      GetLastError();
      pcStack_16c = "..\\..\\src\\common\\filename.cpp";
      puStack_170 = auStack_128;
      uStack_174 = 0x85b928;
      FUN_00847d90();
      local_4._0_1_ = 4;
      FUN_00842440();
      local_4._0_1_ = 2;
      FUN_0081b5bc();
    }
    FUN_00432156();
  }
  if (*(int *)(param_2_00 + 0x14) == 0) {
    local_13c = auStack_17c;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 != '\0') {
      FUN_004325b6();
      local_4._0_1_ = 6;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,7);
      iVar5 = FUN_0084a340();
      if (iVar5 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 8;
      FUN_0043c211();
      pcStack_16c = (char *)0x1;
      local_4._0_1_ = 9;
      puStack_170 = (undefined *)0x85ba2e;
      FUN_008423d0();
      local_4._0_1_ = 10;
      GetLastError();
      FUN_0084d140();
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 9;
      FUN_00842440();
      _free(pvStack_d4);
      if (7 < uStack_d8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_d8 = 7;
      uStack_dc = 0;
      uStack_ec = uStack_ec & 0xffff0000;
      local_4._0_1_ = 7;
      FUN_0081b5bc();
      _free(pvStack_b0);
      if (7 < uStack_b4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_b4 = 7;
      uStack_b8 = 0;
      uStack_c8 = uStack_c8 & 0xffff0000;
      _free(local_f8);
      if (7 < local_fc) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  else {
    cStack_141 = '\x01';
    if ((local_134 != (int *)0x0) && (*local_134 == -1)) {
      *param_3 = local_142;
      iVar5 = FUN_00855ba0();
      piVar1 = local_134;
      if (iVar5 == -1) {
        cStack_141 = '\0';
      }
      else {
        FUN_008871c0();
        *piVar1 = iVar5;
        piVar1[1] = 0;
      }
    }
    if ((local_130 != (int *)0x0) && (*local_130 == 0)) {
      *param_3 = local_142;
      cStack_141 = FUN_008562b0();
    }
    if (cStack_141 == '\0') {
      local_13c = auStack_17c;
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(1);
      if (cVar2 != '\0') {
        FUN_004325b6();
        local_4._0_1_ = 0xb;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,0xc);
        iVar5 = FUN_0084a340();
        if (iVar5 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        pcStack_16c = (char *)0x1;
        local_4._0_1_ = 0xd;
        puStack_170 = (undefined *)0x85bcf6;
        FUN_008423d0();
        local_4._0_1_ = 0xe;
        FUN_008854f0();
        FUN_0083fe90();
        local_4._0_1_ = 0xd;
        FUN_00842440();
        local_4._0_1_ = 0xc;
        FUN_0081b5bc();
        FUN_0040159c();
        local_4._0_1_ = 2;
        FUN_0040159c();
      }
      FUN_00432156();
    }
  }
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = (undefined4 *)((uint)local_54 & 0xffff0000);
  _free(local_18);
  if (local_1c < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



bool __fastcall FUN_0085bd70(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int unaff_ESI;
  char local_31 [5];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_31[0] = '\x01';
  iVar1 = FUN_0085b690(param_2,param_1,local_31,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_4 = 0;
  if (unaff_ESI != iVar1) {
    FID_conflict_assign(iVar1,0,0xffffffff);
  }
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  iVar1 = *(int *)(unaff_ESI + 0x14);
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  if (local_31[0] != '\0') {
    FUN_00432156();
  }
  ExceptionList = local_c;
  return iVar1 != 0;
}



undefined4 FUN_0085be30(undefined4 param_1,undefined4 param_2)

{
  FUN_0085b690(param_2,0,0);
  return param_1;
}



undefined4 FUN_0085be60(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_0085b690(param_2,param_3,param_4);
  return param_1;
}



undefined4 FUN_0085be90(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0085be60(param_1,param_2,param_3,0);
  return param_1;
}



void FUN_0085bec0(undefined4 param_1,undefined4 param_2)

{
  FUN_0085bd70(param_2);
  return;
}



void thunk_FUN_00853f30(void)

{
  FUN_00853f30();
  return;
}



undefined * FUN_0085bef0(void)

{
  return &DAT_032bd4a4;
}



void __fastcall FUN_0085bf00(undefined4 *param_1)

{
  *param_1 = wxStandardPathsBase::vftable;
  param_1[1] = 1;
  return;
}



void __fastcall FUN_0085bf10(undefined4 *param_1)

{
  *param_1 = wxStandardPathsBase::vftable;
  return;
}



undefined * FUN_0085bf20(void)

{
  int *piVar1;
  undefined *puVar2;
  
  if (DAT_032bcb68 != 0) {
    piVar1 = (int *)FUN_00841320();
    if (piVar1 != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x0085bf3a. Too many branches
                    // WARNING: Treating indirect jump as call
      puVar2 = (undefined *)(**(code **)(*piVar1 + 0x18))();
      return puVar2;
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\stdpbase.cpp",0x31,"wxStandardPathsBase::Get","traits",
                 L"create wxApp before calling this");
  }
  return &DAT_032bd4a4;
}



undefined4 * __thiscall FUN_0085bf70(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxStandardPathsBase::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0085bf90(int *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 unaff_retaddr;
  undefined4 local_58;
  uint uStack_54;
  undefined4 uStack_44;
  uint uStack_40;
  void *pvStack_3c;
  undefined4 local_30 [5];
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00be5190;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_58 = 0;
  uVar1 = (**(code **)(*param_1 + 0x20))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffa4);
  uStack_8 = (undefined *)0x0;
  uVar1 = FUN_0081b5f9(&local_58,uVar1,0x5c);
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
  FUN_008531f0(unaff_retaddr,uVar1,param_2);
  _free(pvStack_3c);
  if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_54);
  }
  uStack_40 = 7;
  uStack_44 = 0;
  uStack_54 = uStack_54 & 0xffff0000;
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  ExceptionList = pvStack_10;
  return unaff_retaddr;
}



undefined4 __thiscall FUN_0085c060(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0xc))(param_1);
  return param_1;
}



undefined4 __thiscall FUN_0085c080(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0x14))(param_1);
  return param_1;
}



undefined4 FUN_0085c0a0(undefined4 param_1)

{
  FUN_00855ca0(param_1);
  return param_1;
}



undefined4 FUN_0085c0c0(undefined4 param_1)

{
  FUN_0085aec0(param_1);
  return param_1;
}



void FUN_0085c0e0(undefined4 param_1)

{
  undefined uVar1;
  char cVar2;
  uint uVar3;
  undefined4 local_114 [5];
  undefined4 local_100;
  undefined local_fc [36];
  undefined local_d8 [36];
  undefined local_b4 [20];
  int local_a0;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7c64;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_114;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xfffffee4;
  ExceptionList = &local_c;
  local_114[0] = 0;
  local_100 = param_1;
  if ((DAT_032bcb68 == 0) || (*(int *)(DAT_032bcb68 + 0x50) == 0)) {
    FUN_004325b6(PTR_DAT_03236318);
  }
  else {
    FUN_00840c80(local_d8,0);
    local_4 = 1;
    cVar2 = FUN_0085c910(local_d8,uVar3);
    if (cVar2 == '\0') {
      FUN_00853ce0(0);
      local_4._0_1_ = 2;
      FUN_004325b6(L"PATH");
      local_4._0_1_ = 3;
      FUN_0085cd20(local_fc);
      local_4._0_1_ = 2;
      FUN_0040159c();
      FUN_0085f5b0(local_b4,local_d8);
      local_4._0_1_ = 4;
      uVar1 = (undefined)local_4;
      local_4._0_1_ = 4;
      if (local_a0 == 0) {
        FUN_004325a0(local_d8);
        local_114[0] = 1;
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_00853f30();
        FUN_0040159c();
      }
      else {
        local_4._0_1_ = uVar1;
        FUN_00432544(local_b4,0);
        local_4._0_1_ = 5;
        FUN_004325b6(PTR_DAT_03236318);
        local_4._0_1_ = 6;
        FUN_00859fd0(0xf7,local_fc,0);
        local_4._0_1_ = 5;
        FUN_0040159c();
        FUN_008581b0(param_1,0);
        local_114[0] = 1;
        local_4._0_1_ = 4;
        FUN_0043250a();
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_00853f30();
        FUN_0040159c();
      }
    }
    else {
      FUN_004325a0(local_d8);
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int FUN_0085c310(int param_1,undefined4 param_2,int param_3)

{
  char cVar1;
  short sVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  int local_18;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7cb9;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  local_24 = 0;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0;
  local_18 = param_1;
  FID_conflict_assign(param_2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  local_24 = 1;
  if ((*(int *)(param_1 + 0x14) != 0) && (*(int *)(param_3 + 0x14) != 0)) {
    puVar4 = (undefined4 *)FUN_0081b397(local_14);
    local_2c = *puVar4;
    local_28 = puVar4[1];
    FUN_004226c0(0xffffffff);
    local_1c = local_28;
    local_20 = local_2c;
    sVar2 = FUN_00851440(uVar3);
    cVar1 = FUN_008566c0(sVar2,0);
    if ((cVar1 == '\0') && (sVar2 != 0x2e)) {
      puVar4 = (undefined4 *)FUN_0081b66e(&local_2c,0);
      FID_conflict_append(1,*puVar4);
    }
    FID_conflict_append(param_3,0,0xffffffff);
  }
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_0085c420(int param_1_00,int param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  int local_34;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7d11;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0;
  local_34 = param_1;
  FID_conflict_assign(param_2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  if ((*(uint *)(param_1_00 + 4) >> 1 & 1) != 0) {
    iVar2 = FUN_0085c310(local_58,param_1,DAT_032bcb68 + 100,uVar1);
    local_4 = 1;
    if (param_1 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    local_4 = local_4 & 0xffffff00;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
  }
  if ((*(byte *)(param_1_00 + 4) & 1) != 0) {
    uVar3 = FUN_00841170(local_30);
    local_4 = 2;
    iVar2 = FUN_0085c310(local_58,param_1,uVar3,uVar1);
    local_4 = CONCAT31(local_4._1_3_,3);
    if (param_1 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0085c5a0(int *param_1_00,int param_1)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 local_5c;
  uint uStack_58;
  undefined4 uStack_48;
  uint uStack_44;
  void *pvStack_40;
  undefined4 uStack_38;
  undefined4 local_34 [5];
  uint uStack_20;
  void *pvStack_1c;
  void *local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bc7d40;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&local_5c);
  ExceptionList = &local_c;
  local_5c = 0;
  (**(code **)(*param_1_00 + 0x28))(local_34,DAT_0323f878 ^ (uint)&stack0xffffff98);
  uStack_8 = (undefined *)0x0;
  FUN_0085c420(&local_5c,&uStack_38);
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
  cVar1 = thunk_FUN_00857710(&local_5c);
  puVar2 = &local_5c;
  if (cVar1 == '\0') {
    puVar2 = &uStack_38;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(puVar2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(pvStack_40);
  if (7 < uStack_44) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_58);
  }
  uStack_44 = 7;
  uStack_48 = 0;
  uStack_58 = uStack_58 & 0xffff0000;
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_34[0]);
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



undefined4 thunk_FUN_00855b70(int param_1)

{
  LPCWSTR lpFileName;
  DWORD DVar1;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    lpFileName = (LPCWSTR)(param_1 + 4);
  }
  else {
    lpFileName = *(LPCWSTR *)(param_1 + 4);
  }
  DVar1 = GetFileAttributesW(lpFileName);
  if ((DVar1 != 0xffffffff) && ((DVar1 & 0x10) == 0)) {
    return 1;
  }
  return 0;
}



// WARNING: Removing unreachable block (ram,0x00857888)
// WARNING: Removing unreachable block (ram,0x0085789f)
// WARNING: Type propagation algorithm not settling

void thunk_FUN_00857710(undefined4 param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 *******pppppppuVar4;
  undefined4 *******pppppppuVar5;
  int aiStack_64 [2];
  undefined4 *******pppppppuStack_5c;
  undefined auStack_34 [4];
  undefined4 *******apppppppuStack_30 [4];
  int iStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint uStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7318;
  pvStack_c = ExceptionList;
  uStack_10 = DAT_0323f878 ^ (uint)aiStack_64;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &pvStack_c;
  aiStack_64[0] = 0;
  apppppppuStack_30[0] = (undefined4 *******)((uint)apppppppuStack_30[0] & 0xffff0000);
  uStack_1c = 7;
  iStack_20 = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  pvStack_18 = (void *)0x0;
  uStack_4 = 0;
  cVar2 = FUN_0085cac0(auStack_34,uVar3);
  iVar1 = aiStack_64[0];
  aiStack_64[0] = iStack_20;
  while ((iStack_20 = aiStack_64[0], cVar2 != '\0' && (iVar1 = aiStack_64[0], aiStack_64[0] != 1)))
  {
    if (aiStack_64[0] == 3) {
      if (uStack_1c < 8) {
        pppppppuVar5 = apppppppuStack_30;
LAB_008577c1:
        pppppppuVar4 = apppppppuStack_30[0];
        if (uStack_1c < 8) {
          pppppppuVar4 = apppppppuStack_30;
        }
        if (pppppppuVar5 < pppppppuVar4) goto LAB_008577e2;
        pppppppuVar4 = apppppppuStack_30[0];
        if (uStack_1c < 8) {
          pppppppuVar4 = apppppppuStack_30;
        }
        if ((undefined4 *******)((int)pppppppuVar4 + 6U) < pppppppuVar5) goto LAB_008577e2;
      }
      else {
        pppppppuVar5 = apppppppuStack_30[0];
        if (apppppppuStack_30[0] != (undefined4 *******)0x0) goto LAB_008577c1;
LAB_008577e2:
        FUN_00a3fb10();
      }
      pppppppuStack_5c = pppppppuVar5;
      if (&stack0x00000000 != (undefined *)0x30) {
        pppppppuVar4 = apppppppuStack_30[0];
        if (uStack_1c < 8) {
          pppppppuVar4 = apppppppuStack_30;
        }
        if ((undefined4 *******)((int)pppppppuVar5 + 2U) <=
            (undefined4 *******)((int)pppppppuVar4 + iStack_20 * 2)) {
          pppppppuVar4 = apppppppuStack_30[0];
          if (uStack_1c < 8) {
            pppppppuVar4 = apppppppuStack_30;
          }
          if (pppppppuVar4 <= (undefined4 *******)((int)pppppppuVar5 + 2U)) goto LAB_0085782f;
        }
        FUN_00a3fb10();
      }
LAB_0085782f:
      if (&stack0x00000000 != (undefined *)0x30) {
        if (&stack0x00000000 == (undefined *)0x34) {
          FUN_00a3fb10();
        }
        pppppppuVar5 = apppppppuStack_30[0];
        if (uStack_1c < 8) {
          pppppppuVar5 = apppppppuStack_30;
        }
        if ((LPCWSTR)((int)pppppppuVar5 + iStack_20 * 2) <= (LPCWSTR)((int)pppppppuVar5 + 2U)) {
          FUN_00a3fb10();
        }
      }
      iVar1 = aiStack_64[0];
      if (*(LPCWSTR)((int)pppppppuVar5 + 2U) == L':') break;
    }
    else if (aiStack_64[0] == 0x31) {
      uStack_4 = 0;
    }
    FUN_00851a60(aiStack_64[0] + -1);
    cVar2 = FUN_0085cac0(auStack_34);
    iVar1 = aiStack_64[0];
    aiStack_64[0] = iStack_20;
  }
  aiStack_64[0] = iVar1;
  pppppppuVar5 = apppppppuStack_30[0];
  if (uStack_1c < 8) {
    pppppppuVar5 = apppppppuStack_30;
  }
  GetFileAttributesW((LPCWSTR)pppppppuVar5);
  _free(pvStack_18);
  if (uStack_1c < 8) {
    ExceptionList = pvStack_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(apppppppuStack_30[0]);
}



undefined4 FUN_0085c6e0(int param_1)

{
  HANDLE hFile;
  DWORD DVar1;
  uint uVar2;
  
  hFile = (HANDLE)__get_osfhandle(param_1);
  DVar1 = GetFileType(hFile);
  uVar2 = DVar1 & 0xffff7fff;
  if (uVar2 == 1) {
    return 1;
  }
  if (uVar2 != 2) {
    if (uVar2 != 3) {
      return 0;
    }
    return 3;
  }
  return 2;
}



undefined4 FUN_0085c720(FILE *param_1)

{
  int _FileHandle;
  HANDLE hFile;
  DWORD DVar1;
  uint uVar2;
  
  if (param_1 != (FILE *)0x0) {
    _FileHandle = __fileno(param_1);
    hFile = (HANDLE)__get_osfhandle(_FileHandle);
    DVar1 = GetFileType(hFile);
    uVar2 = DVar1 & 0xffff7fff;
    if (uVar2 == 1) {
      return 1;
    }
    if (uVar2 == 2) {
      return 2;
    }
    if (uVar2 == 3) {
      return 3;
    }
  }
  return 0;
}



undefined4 __fastcall FUN_0085c770(int *param_1)

{
  if ((*param_1 == DAT_032365a0) && (param_1[1] == DAT_032365a4)) {
    return 0;
  }
  return 1;
}



// WARNING: Removing unreachable block (ram,0x0085c7fa)

void __fastcall FUN_0085c790(int *param_1)

{
  longlong lVar1;
  
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1 == DAT_032365a0)) &&
     (param_1[1] == DAT_032365a4)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/datetime.h",0x712,"wxDateTime::GetTicks",
                 "IsValid()",L"invalid wxDateTime");
  }
  if ((-1 < param_1[1]) && (lVar1 = __alldiv(*param_1,param_1[1],1000,0), lVar1 < 0x7fffffff)) {
    FUN_0081a105();
    return;
  }
  return;
}



undefined4 * FUN_0085c830(undefined4 *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)FUN_004226c0(-param_2);
  uVar1 = *puVar2;
  param_1[1] = puVar2[1];
  *param_1 = uVar1;
  return param_1;
}



void FUN_0085c870(short *param_1,int param_2)

{
  short sVar1;
  short *psVar2;
  
  if (*(uint *)(param_2 + 0x18) < 8) {
    psVar2 = (short *)(param_2 + 4);
  }
  else {
    psVar2 = *(short **)(param_2 + 4);
  }
  do {
    sVar1 = *psVar2;
    *param_1 = sVar1;
    psVar2 = psVar2 + 1;
    param_1 = param_1 + 1;
  } while (sVar1 != 0);
  return;
}



void FUN_0085c8b0(uint *param_1)

{
  int iVar1;
  ushort *puVar2;
  int *piVar3;
  int iVar4;
  
  piVar3 = (int *)FUN_004226c0(0xffffffff);
  iVar1 = *piVar3;
  puVar2 = (ushort *)piVar3[1];
  if (iVar1 != -4) {
    if (iVar1 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(iVar1 + 0x18) < 8) {
      iVar4 = iVar1 + 4;
    }
    else {
      iVar4 = *(int *)(iVar1 + 4);
    }
    if ((ushort *)(iVar4 + *(int *)(iVar1 + 0x14) * 2) <= puVar2) {
      FUN_00a3fb10();
    }
  }
  *param_1 = (uint)*puVar2;
  return;
}



undefined4 FUN_0085c910(int param_1)

{
  int iVar1;
  
  if (*(int *)(param_1 + 0x14) == 0) {
    return 0;
  }
  FUN_0081feb2(&param_1,0);
  if ((param_1 != 0x2f) && (FUN_0081feb2(&param_1,0), param_1 != 0x5c)) {
    FUN_0081feb2(&param_1,0);
    iVar1 = _iswalpha((wint_t)param_1);
    if ((iVar1 != 0) && (FUN_0081feb2(&param_1,1), param_1 == 0x3a)) {
      return 1;
    }
    return 0;
  }
  return 1;
}



undefined4 __thiscall FUN_0085ca50(int param_1_00,undefined4 param_1)

{
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x14) == 0)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/string.h",0x621,"wxString::Last","!empty()",
                 L"wxString: index out of bounds");
  }
  FUN_008478e0(&local_10);
  local_8 = local_10;
  local_4 = local_c;
  FUN_0085c8b0(param_1);
  return param_1;
}



undefined4 FUN_0085cac0(int param_1)

{
  short *psVar1;
  
  if (*(int *)(param_1 + 0x14) != 0) {
    psVar1 = (short *)FUN_0085ca50(&param_1);
    if ((*psVar1 == 0x5c) || (*psVar1 == 0x2f)) {
      return 1;
    }
  }
  return 0;
}



undefined4 FUN_0085caf0(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7d9a;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff6c;
  ExceptionList = &local_c;
  FUN_00432544(param_2,0);
  local_4 = 1;
  FUN_00857d40(param_1);
  local_4 = local_4 & 0xffffff00;
  FUN_0043250a(uVar1);
  ExceptionList = local_c;
  return param_1;
}



void FUN_0085cb90(undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 local_94;
  undefined4 local_90;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7dcb;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  local_94 = 0;
  local_90 = 0x80000000;
  FUN_00432544(param_1,0);
  local_4 = 0;
  cVar1 = FUN_0085b290(0,&local_94,0);
  local_4 = 0xffffffff;
  FUN_0043250a(uVar2);
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return;
  }
  FUN_0085c790();
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_0085cc60(undefined4 param_1_00,undefined4 param_1,int param_2,undefined4 param_3,char param_4)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7df8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840a00(&param_2,param_1,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20();
  FUN_00853980(param_1_00,uVar3,uVar4);
  iVar1 = param_2;
  if ((param_4 != '\0') && (param_2 != 0)) {
    _free(*(void **)(param_2 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



void FUN_0085cd20(undefined4 param_1)

{
  uint uVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  undefined local_68 [4];
  uint local_64;
  int local_60;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7e38;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_68;
  ExceptionList = &local_c;
  uVar3 = 0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  cVar2 = FUN_00895070(param_1,local_34,DAT_0323f878 ^ (uint)&stack0xffffff88);
  if (cVar2 != '\0') {
    FUN_004325b6(&DAT_00d27220);
    local_4._0_1_ = 1;
    FUN_008947e0(local_68,local_34,local_58,0);
    local_4 = CONCAT31(local_4._1_3_,3);
    _free(local_3c);
    uVar1 = local_64;
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    thunk_FUN_008541b0(local_64);
    if (uVar1 != 0) {
      iVar4 = 0;
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_64 <= uVar3)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                       "nIndex < m_nCount",L"wxArrayString: index out of bounds");
        }
        FUN_00854700(local_60 + iVar4,1);
        uVar3 = uVar3 + 1;
        iVar4 = iVar4 + 0x24;
      } while (uVar3 < uVar1);
    }
    local_4 = local_4 & 0xffffff00;
    FUN_00853f30();
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0085cea0(int param_1_00,int param_1,undefined4 param_2)

{
  short sVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  undefined *puVar5;
  uint *puVar6;
  int *piVar7;
  undefined4 *puVar8;
  undefined4 uVar9;
  short *psVar10;
  int iVar11;
  short *psVar12;
  undefined4 local_120;
  uint local_11c;
  int local_118;
  int local_114;
  int local_110;
  undefined local_10c [4];
  undefined local_108 [4];
  undefined local_104 [8];
  undefined local_fc [4];
  undefined4 local_f8;
  uint local_e4;
  void *local_e0;
  undefined local_d8 [4];
  uint local_d4;
  int local_c4;
  uint local_c0;
  void *local_bc;
  undefined local_b4 [4];
  undefined4 local_b0;
  undefined4 local_a0;
  uint local_9c;
  void *local_98;
  int local_48;
  int local_24;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7ecf;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_120;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xfffffed0;
  ExceptionList = &local_c;
  local_114 = param_1;
  local_120 = 0;
  local_110 = param_1_00;
  FUN_00432544(param_2,0);
  local_9c = 7;
  local_a0 = 0;
  local_b0 = (uint)local_b0._2_2_ << 0x10;
  local_98 = (void *)0x0;
  local_4._0_1_ = 2;
  local_4._1_3_ = 0;
  FUN_004325b6(PTR_DAT_03236318);
  local_4._0_1_ = 3;
  cVar3 = FUN_00859fd0(0x25,local_d8,0);
  local_4._0_1_ = 2;
  _free(local_bc);
  if (7 < local_c0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_d4);
  }
  if (cVar3 == '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_120 = 1;
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b0);
    }
    local_4 = (uint)local_4._1_3_;
  }
  else {
    if (((PTR_FUN_03235c4c != (undefined *)0x0) && (local_48 == 0)) && (local_24 == 0)) {
      FUN_00840480("..\\..\\src\\common\\filefn.cpp",0xfb,"wxPathList::FindValidPath","!fn.IsDir()",
                   L"Cannot search for directories; only for files",uVar4);
    }
    cVar3 = FUN_00857bd0(0);
    if (cVar3 == '\0') {
      puVar5 = (undefined *)FUN_008581b0(local_d8,0);
      local_4._0_1_ = 5;
      if (local_b4 != puVar5) {
        FID_conflict_assign(puVar5,0,0xffffffff);
      }
      local_4 = CONCAT31(local_4._1_3_,2);
      _free(local_bc);
    }
    else {
      puVar5 = (undefined *)FUN_00857d40(local_d8);
      local_4._0_1_ = 4;
      if (local_b4 != puVar5) {
        FID_conflict_assign(puVar5,0,0xffffffff);
      }
      local_4 = CONCAT31(local_4._1_3_,2);
      _free(local_bc);
    }
    if (7 < local_c0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_d4);
    }
    uVar4 = *(uint *)(param_1_00 + 4);
    local_11c = 0;
    if (uVar4 != 0) {
      local_118 = 0;
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar4 <= local_11c)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                       "nIndex < m_nCount",L"wxArrayString: index out of bounds");
        }
        local_c0 = 7;
        local_c4 = 0;
        local_d4 = local_d4 & 0xffff0000;
        FID_conflict_assign(*(int *)(param_1_00 + 8) + local_118,0,0xffffffff);
        local_bc = (void *)0x0;
        local_4._0_1_ = 6;
        if (local_c4 != 0) {
          puVar6 = (uint *)FUN_0081b66e(local_10c,0);
          piVar7 = (int *)FUN_0081b3d8(local_104);
          if (*piVar7 != -4) {
            if (*piVar7 == 0) {
              FUN_00a3fb10();
            }
            iVar2 = *piVar7;
            if (*(uint *)(iVar2 + 0x18) < 8) {
              iVar11 = iVar2 + 4;
            }
            else {
              iVar11 = *(int *)(iVar2 + 4);
            }
            if ((uint)(iVar11 + *(int *)(iVar2 + 0x14) * 2) <= (uint)piVar7[1]) {
              FUN_00a3fb10();
            }
          }
          param_1_00 = local_110;
          param_1 = local_114;
          if ((uint)*(ushort *)piVar7[1] != *puVar6) {
            puVar8 = (undefined4 *)FUN_0081b66e(local_108,0);
            FID_conflict_append(1,*puVar8);
            param_1_00 = local_110;
            param_1 = local_114;
          }
        }
        uVar9 = FUN_008531f0(local_fc,local_d8,local_b4);
        local_4._0_1_ = 7;
        cVar3 = FUN_00855b70(uVar9);
        local_4._0_1_ = 6;
        _free(local_e0);
        if (7 < local_e4) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_f8);
        }
        if (cVar3 != '\0') {
          FUN_008531f0(param_1,local_d8,local_b4);
          local_120 = 1;
          _free(local_bc);
          if (7 < local_c0) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_d4);
          }
          local_c0 = 7;
          local_c4 = 0;
          local_d4 = local_d4 & 0xffff0000;
          _free(local_98);
          if (7 < local_9c) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_b0);
          }
          local_4 = (uint)local_4._1_3_;
          goto LAB_0085d309;
        }
        local_4 = CONCAT31(local_4._1_3_,2);
        _free(local_bc);
        if (7 < local_c0) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_d4);
        }
        uVar4 = *(uint *)(param_1_00 + 4);
        local_118 = local_118 + 0x24;
        local_11c = local_11c + 1;
      } while (local_11c < uVar4);
    }
    psVar12 = (short *)PTR_DAT_03236318;
    if (PTR_DAT_03236318 == (undefined *)0x0) {
      psVar12 = &DAT_00fae9c8;
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    psVar10 = psVar12;
    do {
      sVar1 = *psVar10;
      psVar10 = psVar10 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(psVar12,(int)psVar10 - (int)(psVar12 + 1) >> 1);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    local_120 = 1;
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b0);
    }
    local_4 = local_4 >> 8;
  }
LAB_0085d309:
  local_4 = local_4 << 8;
  local_b0 = local_b0 & 0xffff0000;
  local_9c = 7;
  local_a0 = 0;
  FUN_0043250a();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0085d3f0(undefined4 param_1)

{
  uint uVar1;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7f08;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_58;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  FUN_004325b6(param_1);
  local_4 = 0;
  FUN_0085caf0(local_58,local_34,uVar1);
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0085d4d0(undefined4 param_1,int param_2)

{
  int iVar1;
  uint uVar2;
  undefined4 *puVar3;
  int local_80c;
  int local_808;
  undefined4 local_804;
  undefined2 local_800;
  undefined2 local_7fe;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_80c;
  local_80c = 0;
  puVar3 = (undefined4 *)PTR_DAT_03236318;
  if (*(int *)(param_2 + 0x14) != 0) {
    FUN_0085c870(&local_804,param_2);
    uVar2 = *(int *)(param_2 + 0x14) - 1;
    if (-1 < (int)uVar2) {
      do {
        FUN_0081feb2(&local_808,uVar2);
        if ((local_808 == 0x2f) || (FUN_0081feb2(&local_80c,uVar2), local_80c == 0x5c)) {
          if (uVar2 == 0) {
            uVar2 = 1;
          }
          *(undefined2 *)((int)&local_804 + uVar2 * 2) = 0;
          puVar3 = &local_804;
          goto LAB_0085d59c;
        }
        uVar2 = uVar2 - 1;
      } while (uVar2 < 0x80000000);
    }
    iVar1 = _iswalpha((wint_t)local_804);
    puVar3 = (undefined4 *)PTR_DAT_03236318;
    if ((iVar1 != 0) && (local_804._2_2_ == 0x3a)) {
      local_800 = 0x2e;
      local_7fe = 0;
      puVar3 = &local_804;
    }
  }
LAB_0085d59c:
  FUN_004325b6(puVar3);
  ___security_check_cookie_4();
  return;
}



void FUN_0085d5c0(int param_1)

{
  int iVar1;
  undefined4 local_38;
  undefined local_34 [4];
  uint local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7f38;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  ExceptionList = &local_c;
  local_38 = 0;
  if (DAT_032bd4d0 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\filefn.cpp",0x561,"wxFindNextFile","gs_dir",
                   "You must call wxFindFirstFile before!",DAT_0323f878 ^ (uint)&stack0xffffffbc);
    }
    FUN_0043c211(&PTR_02bd3fc0);
  }
  else {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 0;
    FUN_0089ea00(local_34);
    iVar1 = DAT_032bd4d0;
    if (local_20 == 0) {
      if (DAT_032bd4d0 != 0) {
        FUN_0089e9e0();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(local_34,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      _free(local_18);
    }
    else {
      FUN_008531f0(param_1,&DAT_0323618c,local_34);
      _free(local_18);
    }
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0085d710(char *param_1,int param_2,int param_3)

{
  short sVar1;
  int iVar2;
  char *pcVar3;
  uint uVar4;
  short *psVar5;
  int iVar6;
  uint uVar7;
  char *pcStack_108;
  char *pcStack_104;
  int local_e8;
  int local_e4;
  uint local_e0;
  char local_dc [4];
  uint local_d8;
  undefined4 local_c8;
  uint local_c4;
  void *local_c0;
  char **local_b8;
  undefined local_b4 [4];
  uint local_b0;
  undefined4 local_a0;
  uint local_9c;
  void *local_98;
  undefined local_90 [20];
  char local_7c [4];
  undefined4 local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  char local_58 [4];
  undefined4 local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  char local_34 [4];
  undefined4 local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7fdb;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_e8;
  ExceptionList = &local_c;
  local_e4 = param_2;
  local_e8 = param_3;
  FUN_00853f60();
  FUN_00853f60();
  pcStack_104 = (char *)0x0;
  pcStack_108 = param_1;
  local_64 = 7;
  local_68 = 0;
  local_78 = (uint)local_78._2_2_ << 0x10;
  FID_conflict_assign();
  local_60 = (void *)0x0;
  local_1c = 7;
  local_20 = 0;
  local_30 = (uint)local_30._2_2_ << 0x10;
  local_18 = (void *)0x0;
  local_40 = 7;
  local_44 = 0;
  local_54 = (uint)local_54._2_2_ << 0x10;
  local_3c = (void *)0x0;
  local_4._0_1_ = 2;
  local_4._1_3_ = 0;
  do {
    pcStack_104 = (char *)0x7c;
    pcStack_108 = (char *)0x85d80e;
    iVar2 = FUN_00850910();
    iVar6 = local_e8;
    if (iVar2 == -1) {
      if (*(int *)(local_e8 + 4) == 0) {
        pcStack_104 = (char *)0x85da05;
        FUN_004325b6();
        pcStack_104 = local_dc;
        local_4._0_1_ = 3;
        pcStack_108 = (char *)0x85da1d;
        FUN_00854700();
        local_4._0_1_ = 2;
        pcStack_104 = (char *)0x85da2f;
        _free(local_c0);
        if (7 < local_c4) {
                    // WARNING: Subroutine does not return
          pcStack_104 = &UNK_0085da43;
          FUN_00a3f6a1();
        }
        pcStack_104 = param_1;
        pcStack_108 = (char *)0x85da50;
        FUN_00854700();
      }
      else if (PTR_FUN_03235c4c != (undefined *)0x0) {
        pcStack_104 = "Assert failure";
        pcStack_108 = "wxParseCommonDialogsFilter";
        FUN_00840480("..\\..\\src\\common\\filefn.cpp",0x6a8);
      }
      break;
    }
    pcStack_104 = local_dc;
    pcStack_108 = (char *)0x85d82b;
    pcVar3 = (char *)FUN_008527e0();
    local_4._0_1_ = 4;
    if (local_34 != pcVar3) {
      pcStack_104 = (char *)0x0;
      pcStack_108 = pcVar3;
      FID_conflict_assign();
    }
    local_4._0_1_ = 2;
    pcStack_104 = (char *)0x85d859;
    _free(local_c0);
    if (7 < local_c4) {
                    // WARNING: Subroutine does not return
      pcStack_104 = &UNK_0085d86d;
      FUN_00a3f6a1();
    }
    pcStack_104 = (char *)(iVar2 + 1);
    pcStack_108 = local_dc;
    pcVar3 = (char *)FUN_00852560();
    local_4._0_1_ = 5;
    if (local_7c != pcVar3) {
      pcStack_104 = (char *)0x0;
      pcStack_108 = pcVar3;
      FID_conflict_assign();
    }
    local_4._0_1_ = 2;
    pcStack_104 = (char *)0x85d8b8;
    _free(local_c0);
    if (7 < local_c4) {
                    // WARNING: Subroutine does not return
      pcStack_104 = &UNK_0085d8cc;
      FUN_00a3f6a1();
    }
    pcStack_104 = (char *)0x7c;
    pcStack_108 = (char *)0x85d8e2;
    iVar2 = FUN_00850910();
    pcStack_108 = local_7c;
    if (iVar2 == -1) {
      pcStack_104 = (char *)0x0;
      FID_conflict_assign();
    }
    else {
      pcStack_104 = local_dc;
      pcStack_108 = (char *)0x85d90f;
      pcVar3 = (char *)FUN_008527e0();
      local_4._0_1_ = 6;
      if (local_58 != pcVar3) {
        pcStack_104 = (char *)0x0;
        pcStack_108 = pcVar3;
        FID_conflict_assign();
      }
      local_4._0_1_ = 2;
      pcStack_104 = (char *)0x85d93d;
      _free(local_c0);
      if (7 < local_c4) {
                    // WARNING: Subroutine does not return
        pcStack_104 = &UNK_0085d951;
        FUN_00a3f6a1();
      }
      pcStack_104 = (char *)(iVar2 + 1);
      pcStack_108 = local_dc;
      pcVar3 = (char *)FUN_00852560();
      local_4._0_1_ = 7;
      if (local_7c != pcVar3) {
        pcStack_104 = (char *)0x0;
        pcStack_108 = pcVar3;
        FID_conflict_assign();
      }
      local_4._0_1_ = 2;
      pcStack_104 = (char *)0x85d99e;
      _free(local_c0);
      if (7 < local_c4) {
                    // WARNING: Subroutine does not return
        pcStack_104 = &UNK_0085d9b2;
        FUN_00a3f6a1();
      }
    }
    pcStack_104 = local_34;
    pcStack_108 = (char *)0x85d9c8;
    FUN_00854700();
    pcStack_104 = local_58;
    pcStack_108 = (char *)0x85d9db;
    FUN_00854700();
    iVar6 = local_e8;
  } while (iVar2 != -1);
  uVar4 = *(uint *)(local_e4 + 4);
  local_e0 = 0;
  if (uVar4 != 0) {
    iVar2 = 0;
    do {
      uVar7 = local_e0;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar4 <= local_e0)) {
        pcStack_104 = "nIndex < m_nCount";
        pcStack_108 = "wxArrayString::Item";
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3);
      }
      if (*(int *)(*(int *)(local_e4 + 8) + 0x14 + iVar2) == 0) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar6 + 4) <= uVar7)) {
          pcStack_104 = "nIndex < m_nCount";
          pcStack_108 = "wxArrayString::Item";
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3);
        }
        if (*(int *)(iVar2 + 0x14 + *(int *)(iVar6 + 8)) != 0) {
          pcStack_104 = PTR_DAT_03236318;
          if (PTR_DAT_03236318 == (undefined *)0x0) {
            pcStack_104 = (char *)&DAT_00fae9c8;
          }
          local_d8 = local_d8 & 0xffff0000;
          local_c4 = 7;
          local_c8 = 0;
          psVar5 = (short *)pcStack_104;
          do {
            sVar1 = *psVar5;
            psVar5 = psVar5 + 1;
          } while (sVar1 != 0);
          pcStack_108 = (char *)0x85db4d;
          FID_conflict_assign();
          local_c0 = (void *)0x0;
          local_4._0_1_ = 8;
          pcStack_104 = (char *)0x85db67;
          FUN_0043c211();
          local_4 = CONCAT31(local_4._1_3_,9);
          iVar6 = FUN_0084a340();
          if (iVar6 == 0) {
            pcStack_104 = (char *)0x85db95;
            FUN_0084d360();
          }
          else {
            pcStack_104 = local_b4;
            pcStack_108 = (char *)0x85db89;
            FUN_0084f210();
          }
          pcStack_104 = (char *)0x85dba2;
          FUN_008433c0();
          local_4._0_1_ = 10;
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(local_e8 + 4) <= local_e0)) {
            pcStack_104 = "nIndex < m_nCount";
            pcStack_108 = "wxArrayString::Item";
            FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3);
          }
          local_b8 = &pcStack_108;
          FUN_00432231(&pcStack_108);
          local_4._0_1_ = 0xb;
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(local_e4 + 4) <= local_e0)) {
            FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                         "nIndex < m_nCount",L"wxArrayString: index out of bounds");
          }
          local_4._0_1_ = 10;
          FUN_0085cc60(local_90);
          local_4._0_1_ = 9;
          FUN_0081b5bc();
          pcStack_104 = (char *)0x85dc6c;
          _free(local_98);
          if (7 < local_9c) {
                    // WARNING: Subroutine does not return
            pcStack_104 = &UNK_0085dc84;
            FUN_00a3f6a1();
          }
          local_9c = 7;
          local_a0 = 0;
          local_b0 = local_b0 & 0xffff0000;
          local_4._0_1_ = 2;
          pcStack_104 = (char *)0x85dca8;
          _free(local_c0);
          uVar7 = local_e0;
          iVar6 = local_e8;
          if (7 < local_c4) {
                    // WARNING: Subroutine does not return
            pcStack_104 = &UNK_0085dcbb;
            FUN_00a3f6a1();
          }
        }
      }
      uVar4 = *(uint *)(local_e4 + 4);
      local_e0 = uVar7 + 1;
      iVar2 = iVar2 + 0x24;
    } while (local_e0 < uVar4);
  }
  pcStack_104 = (char *)0x85dced;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    pcStack_104 = &UNK_0085dd0b;
    FUN_00a3f6a1();
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  pcStack_104 = (char *)0x85dd38;
  _free(local_18);
  if (local_1c < 8) {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    pcStack_104 = (char *)0x85dd79;
    _free(local_60);
    if (local_64 < 8) {
      ExceptionList = local_c;
      ___security_check_cookie_4();
      return;
    }
                    // WARNING: Subroutine does not return
    pcStack_104 = &UNK_0085dd92;
    FUN_00a3f6a1();
  }
                    // WARNING: Subroutine does not return
  pcStack_104 = &UNK_0085dd51;
  FUN_00a3f6a1();
}



uint FUN_0085ddc0(int param_1,ushort *param_2,char param_3)

{
  ushort *puVar1;
  bool bVar2;
  int *piVar3;
  uint uVar4;
  ushort uVar5;
  int iVar6;
  ushort *puVar7;
  ushort *puVar8;
  ushort *puVar9;
  undefined local_18 [12];
  undefined local_c [12];
  
  bVar2 = false;
  if (*(int *)((int)param_2 + 0x14) == 0) {
    return (uint)(*(int *)(param_1 + 0x14) == 0);
  }
  piVar3 = (int *)FUN_00432231(local_18);
  iVar6 = *piVar3;
  if (*(uint *)(iVar6 + 0x18) < 8) {
    iVar6 = iVar6 + 4;
  }
  else {
    iVar6 = *(int *)(iVar6 + 4);
  }
  puVar8 = (ushort *)(iVar6 + piVar3[1] * 2);
  FUN_00432214();
  piVar3 = (int *)FUN_00432231(local_c);
  iVar6 = *piVar3;
  if (*(uint *)(iVar6 + 0x18) < 8) {
    iVar6 = iVar6 + 4;
  }
  else {
    iVar6 = *(int *)(iVar6 + 4);
  }
  puVar9 = (ushort *)(iVar6 + piVar3[1] * 2);
  uVar4 = FUN_00432214();
  param_2 = (ushort *)0x0;
  puVar7 = (ushort *)0x0;
  if ((param_3 == '\0') || (*puVar9 != 0x2e)) {
LAB_0085de53:
    do {
      while( true ) {
        uVar5 = *puVar8;
        uVar4 = (uint)uVar5;
        if (uVar5 != 0x2a) break;
        param_2 = puVar8 + 1;
        bVar2 = true;
        puVar7 = puVar9;
        puVar8 = param_2;
      }
      if (uVar5 != 0x3f) {
        if (uVar5 == 0x5c) {
          puVar1 = puVar8 + 1;
          uVar4 = (uint)*puVar1;
          puVar8 = puVar8 + 1;
          if (*puVar1 == 0) break;
LAB_0085dea0:
          uVar5 = *puVar9;
          bVar2 = false;
          if ((ushort)uVar4 == uVar5) {
            puVar8 = puVar8 + 1;
            puVar9 = puVar9 + 1;
            goto LAB_0085de53;
          }
        }
        else {
          if (uVar5 != 0) goto LAB_0085dea0;
          uVar5 = *puVar9;
          if ((uVar5 == 0) || (bVar2)) {
            return 1;
          }
        }
        if ((uVar5 == 0) || (param_2 == (ushort *)0x0)) break;
        puVar7 = puVar7 + 1;
        puVar8 = param_2;
        puVar9 = puVar7;
        goto LAB_0085de53;
      }
      uVar5 = *puVar9;
      uVar4 = (uint)uVar5;
      puVar8 = puVar8 + 1;
      puVar9 = puVar9 + 1;
    } while (uVar5 != 0);
  }
  return uVar4 & 0xffffff00;
}



void __thiscall
FUN_0085def0(undefined4 param_1_00,undefined4 param_1,int param_2,undefined4 param_3,char param_4,
            int param_5,undefined4 param_6,char param_7)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8020;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00840a00(&param_5,param_1,2);
  FUN_00840a00(&param_2,param_1,1);
  uVar4 = FUN_008854f0(uVar3);
  uVar5 = FUN_00884e20();
  uVar5 = FUN_00884e20(uVar5);
  FUN_0083fe90(param_1_00,uVar4,uVar5);
  iVar2 = param_5;
  iVar1 = param_2;
  if ((param_4 != '\0') && (param_2 != 0)) {
    _free(*(void **)(param_2 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  if ((param_7 != '\0') && (param_5 != 0)) {
    _free(*(void **)(param_5 + 0x1c));
    if (7 < *(uint *)(iVar2 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar2 + 4));
    }
    *(undefined4 *)(iVar2 + 0x18) = 7;
    *(undefined4 *)(iVar2 + 0x14) = 0;
    *(undefined2 *)(iVar2 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_0085e020(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,uint param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 param_7;
  uint param_8;
  void *param_9;
  undefined4 param_12;
  uint param_13;
  void *param_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8050;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00840990(&stack0x0000002c,param_1,2);
  FUN_00840990(&param_2,param_1,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  uVar3 = FUN_00884e10(uVar3);
  FUN_0083fe90(param_1_00,uVar2,uVar3);
  _free(param_9);
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  param_8 = 7;
  param_7 = 0;
  param_3 = param_3 & 0xffff0000;
  _free(param_14);
  if (7 < param_13) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_12);
  }
  ExceptionList = local_c;
  return;
}



void FUN_0085e110(undefined *param_1,undefined4 param_2,undefined *param_3)

{
  char cVar1;
  undefined *puVar2;
  short *psVar3;
  short local_d4 [2];
  undefined *local_d0;
  undefined local_cc [4];
  uint local_c8;
  undefined4 local_b8;
  uint local_b4;
  void *local_b0;
  undefined local_a8 [4];
  uint local_a4;
  int local_94;
  uint local_90;
  void *local_8c;
  undefined local_84 [4];
  uint local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc80a4;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_d4;
  ExceptionList = &local_c;
  local_d0 = param_1;
  if (*(int *)(param_3 + 0x14) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\filefn.cpp",0x657,"wxFindFileInPath","!szFile.empty()",
                   L"empty file name in wxFindFileInPath",DAT_0323f878 ^ (uint)&stack0xffffff1c);
    }
  }
  else {
    local_6c = 7;
    local_70 = 0;
    local_80 = local_80 & 0xffff0000;
    local_68 = (void *)0x0;
    local_4 = 0;
    FUN_0081feb2(local_d4,0);
    if ((local_d4[0] == 0x5c) || (local_d4[0] == 0x2f)) {
      puVar2 = (undefined *)FUN_00852560(local_cc,1,0xffffffff);
      local_4._0_1_ = 1;
      if (local_84 != puVar2) {
        FID_conflict_assign(puVar2,0,0xffffffff);
      }
      local_4 = (uint)local_4._1_3_ << 8;
      _free(local_b0);
      if (7 < local_b4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_c8);
      }
    }
    else if (local_84 != param_3) {
      FID_conflict_assign(param_3,0,0xffffffff);
    }
    FUN_004325b6(&DAT_00d27220);
    local_4._0_1_ = 2;
    FUN_00894710(param_2,local_cc,0);
    local_4 = CONCAT31(local_4._1_3_,4);
    _free(local_b0);
    if (7 < local_b4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_c8);
    }
    local_b4 = 7;
    local_b8 = 0;
    local_c8 = local_c8 & 0xffff0000;
    cVar1 = FUN_00894180();
    while (cVar1 != '\0') {
      FUN_00894270(local_a8);
      local_4 = CONCAT31(local_4._1_3_,5);
      if (local_94 == 0) {
LAB_0085e2d0:
        FID_conflict_append(1,0x5c);
      }
      else {
        psVar3 = (short *)FUN_0085ca50(local_d4);
        if ((*psVar3 != 0x5c) && (*psVar3 != 0x2f)) goto LAB_0085e2d0;
      }
      FID_conflict_append(local_84,0,0xffffffff);
      cVar1 = FUN_00855b70(local_a8);
      if (cVar1 != '\0') {
        if (local_d0 != local_a8) {
          FID_conflict_assign(local_a8,0,0xffffffff);
        }
        _free(local_8c);
        if (7 < local_90) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_a4);
        }
        local_90 = 7;
        local_94 = 0;
        local_a4 = local_a4 & 0xffff0000;
        local_4 = local_4 & 0xffffff00;
        FUN_0083fa70();
        _free(local_68);
        if (7 < local_6c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_80);
        }
        goto LAB_0085e425;
      }
      local_4 = CONCAT31(local_4._1_3_,4);
      _free(local_8c);
      if (7 < local_90) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_a4);
      }
      cVar1 = FUN_00894180();
    }
    local_4 = local_4 & 0xffffff00;
    FUN_0083fa70();
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_80);
    }
  }
LAB_0085e425:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_0085e450(int param_1,int param_2,char param_3)

{
  char cVar1;
  LPCWSTR lpExistingFileName;
  BOOL BVar2;
  int iVar3;
  undefined4 uVar4;
  LPCWSTR lpNewFileName;
  uint uStack_c8;
  void *pvStack_c4;
  uint uStack_a0;
  void *pvStack_9c;
  uint uStack_68;
  void *pvStack_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc8127;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(uint *)(param_2 + 0x18) < 8) {
    lpNewFileName = (LPCWSTR)(param_2 + 4);
  }
  else {
    lpNewFileName = *(LPCWSTR *)(param_2 + 4);
  }
  if (*(uint *)(param_1 + 0x18) < 8) {
    lpExistingFileName = (LPCWSTR)(param_1 + 4);
  }
  else {
    lpExistingFileName = *(LPCWSTR *)(param_1 + 4);
  }
  BVar2 = CopyFileW(lpExistingFileName,lpNewFileName,(uint)(param_3 == '\0'));
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_0043c211();
      FUN_00432231();
      FUN_00432231();
      uStack_4._0_1_ = 5;
      FUN_008423d0(1,"..\\..\\src\\common\\filefn.cpp");
      uStack_4._0_1_ = 6;
      GetLastError();
      FUN_0084d140();
      uStack_4._0_1_ = 7;
      FUN_0085def0();
      uStack_4._0_1_ = 3;
      FUN_00842440();
      _free(pvStack_9c);
      if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      _free(pvStack_c4);
      if (7 < uStack_c8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(pvStack_64);
      if (7 < uStack_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    uVar4 = 0;
  }
  else {
    uVar4 = 1;
  }
  ExceptionList = local_c;
  return uVar4;
}



bool FUN_0085e6c0(undefined4 param_1)

{
  char cVar1;
  int iVar2;
  int iVar3;
  DWORD DVar4;
  undefined *puVar5;
  uint local_c4;
  void *local_c0;
  undefined local_b8 [4];
  uint local_b4;
  undefined4 local_a4;
  uint local_a0;
  void *local_9c;
  undefined local_94 [44];
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc818c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = FUN_00a42654();
  if (iVar2 != 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_0043c211();
      local_4._0_1_ = 3;
      FID_conflict_assign(param_1,0,0xffffffff);
      local_4._0_1_ = 4;
      FUN_008423d0(1,"..\\..\\src\\common\\filefn.cpp",0x4bb,"wxRemoveFile",&DAT_00d25fa0);
      local_4._0_1_ = 5;
      puVar5 = local_94;
      DVar4 = GetLastError();
      FUN_0084d140(local_b8,DVar4);
      local_4._0_1_ = 6;
      FUN_00848780(puVar5);
      local_4._0_1_ = 3;
      FUN_00842440();
      _free(local_9c);
      if (7 < local_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_a0 = 7;
      local_a4 = 0;
      local_b4 = local_b4 & 0xffff0000;
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      _free(local_c0);
      if (7 < local_c4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(local_64);
      if (7 < local_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  ExceptionList = local_c;
  return iVar2 == 0;
}



undefined4 FUN_0085e920(undefined4 param_1)

{
  char cVar1;
  int iVar2;
  DWORD DVar3;
  undefined4 uVar4;
  undefined *puVar5;
  uint local_e8;
  void *local_e4;
  undefined local_dc [4];
  uint local_d8;
  undefined4 local_c8;
  uint local_c4;
  void *local_c0;
  uint local_a0;
  void *local_9c;
  undefined local_94 [44];
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc81ec;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_004325b6();
  iVar2 = FUN_00a42684();
  _free(local_9c);
  if (7 < local_a0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (iVar2 == 0) {
    uVar4 = 1;
  }
  else {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_0043c211();
      local_4._0_1_ = 3;
      FID_conflict_assign(param_1,0,0xffffffff);
      local_4._0_1_ = 4;
      FUN_008423d0(1,"..\\..\\src\\common\\filefn.cpp",0x4ea,"wxMkdir",&DAT_00d25fa0);
      local_4._0_1_ = 5;
      puVar5 = local_94;
      DVar3 = GetLastError();
      FUN_0084d140(local_dc,DVar3);
      local_4._0_1_ = 6;
      FUN_00848780(puVar5);
      local_4._0_1_ = 3;
      FUN_00842440();
      _free(local_c0);
      if (7 < local_c4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_c4 = 7;
      local_c8 = 0;
      local_d8 = local_d8 & 0xffff0000;
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      _free(local_e4);
      if (7 < local_e8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(local_64);
      if (7 < local_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    uVar4 = 0;
  }
  ExceptionList = local_c;
  return uVar4;
}



void FUN_0085ebd0(int param_1,undefined4 param_2)

{
  short sVar1;
  char cVar2;
  short *psVar3;
  int iVar4;
  DWORD DVar5;
  undefined *puVar6;
  undefined auStack_16c [4];
  undefined2 local_168;
  undefined4 uStack_160;
  undefined4 uStack_15c;
  undefined *local_134;
  int local_130;
  undefined4 local_12c;
  uint local_124;
  undefined4 local_114;
  uint local_110;
  void *local_10c;
  undefined local_104 [4];
  uint local_100;
  undefined4 local_f0;
  uint local_ec;
  void *local_e8;
  undefined local_e0 [44];
  uint local_b4;
  void *local_b0;
  uint local_90;
  void *local_8c;
  uint local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc8273;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_134;
  ExceptionList = &local_c;
  uStack_15c = param_2;
  local_130 = param_1;
  local_12c = param_2;
  local_134 = (undefined *)0x0;
  uStack_160 = 0x85ec35;
  FUN_00858c30();
  if (DAT_032361a0 == 0) {
    psVar3 = &DAT_00fae798;
    do {
      sVar1 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign();
    if (DAT_032361a0 != 0) goto LAB_0085ec77;
  }
  else {
LAB_0085ec77:
    psVar3 = (short *)FUN_0085ca50();
    if ((*psVar3 == 0x5c) || (*psVar3 == 0x2f)) goto LAB_0085eca3;
  }
  FID_conflict_append();
LAB_0085eca3:
  if (DAT_032bd4d0 != 0) {
    FUN_0089e9e0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_134 = (undefined *)operator_new(4);
  local_4 = 0;
  if (local_134 == (undefined *)0x0) {
    DAT_032bd4d0 = 0;
  }
  else {
    DAT_032bd4d0 = FUN_0089ebd0();
  }
  local_4 = 0xffffffff;
  cVar2 = FUN_0089e1b0();
  if (cVar2 == '\0') {
    local_134 = auStack_16c;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 != '\0') {
      FUN_004325b6();
      local_4 = 1;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,2);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 3;
      FUN_0043c211();
      local_134 = auStack_16c;
      local_4._0_1_ = 4;
      local_168 = 0;
      FID_conflict_assign(local_12c,0,0xffffffff);
      local_4._0_1_ = 5;
      FUN_008423d0(1,"..\\..\\src\\common\\filefn.cpp",0x548,"wxFindFirstFile",&DAT_00d25fa0);
      local_4._0_1_ = 6;
      puVar6 = local_e0;
      DVar5 = GetLastError();
      FUN_0084d140(local_104,DVar5);
      local_4._0_1_ = 7;
      FUN_00848780(puVar6);
      local_4._0_1_ = 4;
      FUN_00842440();
      _free(local_e8);
      if (7 < local_ec) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_ec = 7;
      local_f0 = 0;
      local_100 = local_100 & 0xffff0000;
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_0081b5bc();
      _free(local_10c);
      if (7 < local_110) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_110 = 7;
      local_114 = 0;
      local_124 = local_124 & 0xffff0000;
      local_4 = 0xffffffff;
      _free(local_b0);
      if (7 < local_b4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    FUN_004325b6();
  }
  else {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 8;
    FUN_0085caf0();
    local_4._0_1_ = 9;
    FUN_0089eb40();
    local_4 = CONCAT31(local_4._1_3_,8);
    _free(local_8c);
    if (7 < local_90) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (local_20 == 0) {
      if (DAT_032bd4d0 != 0) {
        FUN_0089e9e0();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign();
      *(undefined4 *)(param_1 + 0x1c) = 0;
      _free(local_18);
    }
    else {
      FUN_008531f0();
      uStack_15c = 0x85f041;
      _free(local_18);
    }
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



wchar_t * FUN_0085f090(wchar_t *param_1,int param_2)

{
  char cVar1;
  wchar_t *pwVar2;
  int iVar3;
  uint uStack_c8;
  void *pvStack_c4;
  uint uStack_a0;
  void *pvStack_9c;
  uint uStack_68;
  void *pvStack_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc82e1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == (wchar_t *)0x0) {
    param_1 = (wchar_t *)FUN_00823c23();
  }
  pwVar2 = __wgetcwd(param_1,param_2);
  if (pwVar2 == (wchar_t *)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_0043c211();
      uStack_4._0_1_ = 3;
      FUN_008423d0();
      uStack_4._0_1_ = 4;
      GetLastError();
      FUN_0084d140();
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4._0_1_ = 3;
      FUN_00842440();
      _free(pvStack_9c);
      if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      _free(pvStack_c4);
      if (7 < uStack_c8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(pvStack_64);
      if (7 < uStack_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    *param_1 = L'\0';
  }
  ExceptionList = local_c;
  return param_1;
}



int FUN_0085f2e0(int param_1)

{
  uint uVar1;
  undefined4 *local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bc8331;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  FUN_00852280(param_1,0x400);
  local_4 = 1;
  FUN_0085f090(*local_14,0x400,uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_00851bf0();
  ExceptionList = local_c;
  return param_1;
}



bool FUN_0085f380(int param_1)

{
  char cVar1;
  LPCWSTR lpPathName;
  BOOL BVar2;
  int iVar3;
  undefined4 uVar4;
  undefined auStack_118 [12];
  undefined4 uStack_10c;
  undefined4 uStack_108;
  char *pcStack_104;
  undefined4 uStack_100;
  char *pcStack_fc;
  undefined auStack_e0 [4];
  uint uStack_dc;
  undefined4 uStack_cc;
  uint uStack_c8;
  void *pvStack_c4;
  undefined *puStack_bc;
  undefined auStack_b8 [4];
  uint uStack_b4;
  undefined4 uStack_a4;
  uint uStack_a0;
  void *pvStack_9c;
  uint uStack_68;
  void *pvStack_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc8381;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(uint *)(param_1 + 0x18) < 8) {
    lpPathName = (LPCWSTR)(param_1 + 4);
  }
  else {
    lpPathName = *(LPCWSTR *)(param_1 + 4);
  }
  pcStack_fc = (char *)0x85f3cc;
  BVar2 = SetCurrentDirectoryW(lpPathName);
  if (BVar2 == 0) {
    puStack_bc = auStack_118;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      pcStack_fc = (char *)0x85f411;
      FUN_004325b6();
      uStack_4 = 0;
      pcStack_fc = (char *)0x85f42a;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        pcStack_fc = (char *)0x85f458;
        FUN_0084d360();
      }
      else {
        pcStack_fc = auStack_e0;
        uStack_100 = 0x85f44c;
        FUN_0084f210();
      }
      pcStack_fc = (char *)0x85f465;
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      pcStack_fc = (char *)0x85f47b;
      FUN_0043c211();
      pcStack_fc = "wxSetWorkingDirectory";
      uStack_100 = 0x637;
      pcStack_104 = "..\\..\\src\\common\\filefn.cpp";
      uStack_108 = 1;
      uStack_4._0_1_ = 3;
      uStack_10c = 0x85f4a6;
      FUN_008423d0();
      uStack_4._0_1_ = 4;
      GetLastError();
      pcStack_fc = auStack_b8;
      uStack_100 = 0x85f4c2;
      uVar4 = FUN_0084d140();
      FUN_008854f0();
      uStack_100 = 0x85f4d4;
      pcStack_fc = (char *)uVar4;
      FUN_0083fe90();
      uStack_4._0_1_ = 3;
      FUN_00842440();
      pcStack_fc = (char *)0x85f4f4;
      _free(pvStack_9c);
      if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
        pcStack_fc = &UNK_0085f507;
        FUN_00a3f6a1();
      }
      uStack_b4 = uStack_b4 & 0xffff0000;
      uStack_a0 = 7;
      uStack_a4 = 0;
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      pcStack_fc = (char *)0x85f53d;
      _free(pvStack_c4);
      if (7 < uStack_c8) {
                    // WARNING: Subroutine does not return
        pcStack_fc = &UNK_0085f550;
        FUN_00a3f6a1();
      }
      uStack_c8 = 7;
      uStack_cc = 0;
      uStack_dc = uStack_dc & 0xffff0000;
      pcStack_fc = (char *)0x85f573;
      _free(pvStack_64);
      if (7 < uStack_68) {
                    // WARNING: Subroutine does not return
        pcStack_fc = &UNK_0085f589;
        FUN_00a3f6a1();
      }
    }
  }
  ExceptionList = local_c;
  return BVar2 != 0;
}



void FUN_0085f5b0(int param_1,undefined4 param_2)

{
  void *pvVar1;
  char cVar2;
  uint uVar3;
  short *psVar4;
  undefined local_60 [4];
  undefined4 local_5c;
  undefined local_58 [4];
  uint local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc83c0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_60;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  local_5c = 0;
  FUN_0085cea0(local_34,param_2);
  local_4 = 0;
  if ((local_20 == 0) || (cVar2 = FUN_0085c910(local_34,uVar3), cVar2 != '\0')) {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
    goto joined_r0x0085f6d7;
  }
  FUN_0085f2e0(local_58);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (local_44 == 0) {
LAB_0085f651:
    FID_conflict_append(1,0x5c);
  }
  else {
    psVar4 = (short *)FUN_0085ca50(local_60);
    if ((*psVar4 != 0x5c) && (*psVar4 != 0x2f)) goto LAB_0085f651;
  }
  FID_conflict_append(local_34,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(local_58,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  _free(local_18);
  pvVar1 = ExceptionList;
  ExceptionList = local_c;
joined_r0x0085f6d7:
  local_c = ExceptionList;
  if (7 < local_1c) {
    ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_0085f750(undefined4 param_1,undefined4 param_2,char param_3)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  DWORD DVar4;
  undefined *puVar5;
  undefined local_198 [92];
  undefined local_13c [304];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc8487;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_3 == '\0') && (cVar1 = FUN_00855b70(), cVar1 != '\0')) {
    FUN_0043c211();
    cVar1 = FUN_00846b30();
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_0043c211();
      FUN_00432231();
      FUN_00432231();
      local_4._0_1_ = 5;
      FUN_008423d0();
      local_4._0_1_ = 6;
      GetLastError();
      FUN_0084d140();
      local_4._0_1_ = 7;
      FUN_0085def0();
      local_4._0_1_ = 3;
      FUN_00842440();
      FUN_0040159c();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
LAB_0085fad8:
      FUN_0040159c();
    }
LAB_0085fadd:
    uVar3 = 0;
  }
  else {
    iVar2 = FUN_00a48de0();
    if (iVar2 != 0) {
      cVar1 = FUN_0085e450();
      if (cVar1 == '\0') {
        FUN_0043c211();
        cVar1 = FUN_00846b30();
        if (cVar1 != '\0') {
          FUN_004325b6();
          local_4 = 8;
          FUN_0043c211();
          local_4 = CONCAT31(local_4._1_3_,9);
          iVar2 = FUN_0084a340();
          if (iVar2 == 0) {
            FUN_0084d360();
          }
          else {
            FUN_0084f210();
          }
          FUN_008433c0();
          local_4._0_1_ = 10;
          FUN_0043c211();
          local_4._0_1_ = 0xb;
          FUN_004325a0();
          local_4._0_1_ = 0xc;
          FUN_004325a0(param_1);
          local_4._0_1_ = 0xd;
          FUN_008423d0(1,"..\\..\\src\\common\\filefn.cpp",0x4a4,"wxRenameFile",&DAT_00d25fa0);
          local_4._0_1_ = 0xe;
          puVar5 = local_198;
          DVar4 = GetLastError();
          FUN_0084d140(local_13c,DVar4);
          local_4._0_1_ = 0xf;
          FUN_0085e020(puVar5);
          local_4._0_1_ = 0xb;
          FUN_00842440();
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,9);
          FUN_0081b5bc();
          FUN_0040159c();
          goto LAB_0085fad8;
        }
        goto LAB_0085fadd;
      }
      FUN_0085e6c0();
    }
    uVar3 = 1;
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 __fastcall FUN_0085fb00(ushort *param_1,uint *param_2)

{
  ushort uVar1;
  ushort uVar2;
  
  uVar1 = *param_1;
  if ((uVar1 < 0xd800) || (0xdfff < uVar1)) {
    *param_2 = (uint)uVar1;
    return 1;
  }
  uVar2 = param_1[1];
  if ((0xdbff < uVar2) && (uVar2 < 0xe000)) {
    *param_2 = (uVar1 - 0xd7c0) * 0x400 + -0xdc00 + (uint)uVar2;
    return 2;
  }
  *param_2 = (uint)uVar1;
  return 0xffffffff;
}



int __thiscall
FUN_0085fb70(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  
  iVar1 = (**(code **)*param_1_00)(param_1,param_3,param_2,0xffffffff);
  if (iVar1 != -1) {
    iVar1 = iVar1 + -1;
  }
  return iVar1;
}



int __thiscall
FUN_0085fb90(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  
  iVar1 = (**(code **)(*param_1_00 + 4))(param_1,param_3,param_2,0xffffffff);
  if (iVar1 != -1) {
    iVar2 = (**(code **)(*param_1_00 + 8))();
    iVar1 = iVar1 - iVar2;
  }
  return iVar1;
}



int FUN_0085fbd0(uint param_1,int param_2,byte *param_3,byte *param_4)

{
  byte bVar1;
  byte *pbVar2;
  uint uVar3;
  byte *pbVar4;
  ushort *puVar5;
  bool bVar6;
  
  puVar5 = (ushort *)(-(uint)(param_2 != 0) & param_1);
  param_1 = 0;
  pbVar2 = param_4;
  if (param_4 == (byte *)0xffffffff) {
    pbVar2 = param_3;
    do {
      bVar1 = *pbVar2;
      pbVar2 = pbVar2 + 1;
    } while (bVar1 != 0);
    pbVar2 = pbVar2 + (1 - (int)(param_3 + 1));
    param_4 = pbVar2;
  }
  do {
    if (pbVar2 == (byte *)0xffffffff) {
      bVar6 = *param_3 == 0;
    }
    else {
      bVar6 = pbVar2 == (byte *)0x0;
    }
    if (bVar6) {
      if (pbVar2 == (byte *)0xffffffff) {
        if (puVar5 != (ushort *)0x0) {
          if (param_2 == 0) {
            return -1;
          }
          *puVar5 = 0;
        }
        param_1 = param_1 + 1;
      }
      return param_1;
    }
    if ((puVar5 != (ushort *)0x0) && (bVar6 = param_2 == 0, param_2 = param_2 + -1, bVar6)) {
      return -1;
    }
    bVar1 = *param_3;
    if (bVar1 < 0x80) {
      if (pbVar2 == (byte *)0x0) {
        return -1;
      }
      if (pbVar2 != (byte *)0xffffffff) {
        pbVar2 = pbVar2 + -1;
        param_4 = pbVar2;
      }
      uVar3 = (uint)bVar1;
    }
    else {
      pbVar4 = (byte *)(uint)(byte)(&DAT_00d28bf8)[bVar1];
      if (pbVar4 == (byte *)0x0) {
        return -1;
      }
      if (pbVar2 < pbVar4) {
        return -1;
      }
      if (pbVar2 != (byte *)0xffffffff) {
        pbVar2 = pbVar2 + -(int)pbVar4;
        param_4 = pbVar2;
      }
      if (((&DAT_00d28cff)[(int)pbVar4] & bVar1) != (&DAT_00d28cfb)[(int)pbVar4]) {
        return -1;
      }
      uVar3 = (uint)((&DAT_00d28cf7)[(int)pbVar4] & bVar1);
      while (pbVar4 = pbVar4 + -1, pbVar4 != (byte *)0x0) {
        pbVar2 = param_3 + 1;
        param_3 = param_3 + 1;
        if ((*pbVar2 & 0xc0) != 0x80) {
          return -1;
        }
        uVar3 = uVar3 << 6 | *pbVar2 & 0x3f;
        pbVar2 = param_4;
      }
    }
    if (uVar3 < 0x10000) {
      if (puVar5 != (ushort *)0x0) {
        *puVar5 = (ushort)uVar3;
        goto LAB_0085fd0f;
      }
    }
    else {
      if (uVar3 < 0x110000) {
        if (puVar5 != (ushort *)0x0) {
          *puVar5 = (short)(uVar3 >> 10) + 0xd7c0;
          puVar5[1] = ((ushort)uVar3 & 0x3ff) + 0xdc00;
          puVar5 = puVar5 + 1;
        }
        param_1 = param_1 + 1;
      }
LAB_0085fd0f:
      if (puVar5 != (ushort *)0x0) {
        puVar5 = puVar5 + 1;
      }
    }
    param_1 = param_1 + 1;
    param_3 = param_3 + 1;
  } while( true );
}



int FUN_0085fd50(uint param_1,uint param_2,ushort *param_3,int param_4)

{
  ushort uVar1;
  ushort uVar2;
  byte bVar3;
  int iVar4;
  byte bVar5;
  uint uVar6;
  byte *pbVar7;
  int iVar8;
  bool bVar9;
  
  pbVar7 = (byte *)(-(uint)(param_2 != 0) & param_1);
  iVar4 = 0;
LAB_0085fd6c:
  do {
    if (param_4 == -1) {
      bVar9 = *param_3 == 0;
    }
    else {
      bVar9 = param_4 == 0;
    }
    if (bVar9) {
      if (param_4 != -1) {
        return iVar4;
      }
      if (pbVar7 != (byte *)0x0) {
        if (param_2 == 0) {
          return -1;
        }
        *pbVar7 = 0;
      }
      return iVar4 + 1;
    }
    if (param_4 != -1) {
      param_4 = param_4 + -1;
    }
    uVar1 = *param_3;
    if ((((uVar1 < 0xd800) || (0xdfff < uVar1)) || (uVar2 = param_3[1], uVar2 < 0xdc00)) ||
       (0xdfff < uVar2)) {
      uVar6 = (uint)uVar1;
    }
    else {
      param_3 = param_3 + 1;
      uVar6 = (uVar1 - 0xd7c0) * 0x400 + -0xdc00 + (uint)uVar2;
      if (param_4 != -1) {
        param_4 = param_4 + -1;
      }
    }
    bVar3 = (byte)uVar6;
    if (uVar6 < 0x80) {
      iVar8 = 1;
      if (pbVar7 != (byte *)0x0) {
        if (param_2 == 0) {
          return -1;
        }
        *pbVar7 = bVar3;
        pbVar7 = pbVar7 + 1;
        param_2 = param_2 - 1;
        iVar4 = iVar4 + 1;
        param_3 = param_3 + 1;
        goto LAB_0085fd6c;
      }
    }
    else if (uVar6 < 0x800) {
      iVar8 = 2;
      if (pbVar7 != (byte *)0x0) {
        if (param_2 < 2) {
          return -1;
        }
        bVar3 = bVar3 & 0x3f | 0x80;
        bVar5 = (byte)(uVar6 >> 6) | 0xc0;
        goto LAB_0085fea7;
      }
    }
    else if (uVar6 < 0xffff) {
      iVar8 = 3;
      if (pbVar7 != (byte *)0x0) {
        if (param_2 < 3) {
          return -1;
        }
        pbVar7[2] = bVar3 & 0x3f | 0x80;
        bVar3 = (byte)(uVar6 >> 6) & 0x3f | 0x80;
        bVar5 = (byte)(uVar6 >> 0xc) | 0xe0;
LAB_0085fea7:
        pbVar7[1] = bVar3;
        *pbVar7 = bVar5;
        pbVar7 = pbVar7 + iVar8;
        param_2 = param_2 - iVar8;
      }
    }
    else {
      if (0x10ffff < uVar6) {
        if (PTR_FUN_03235c4c == (undefined *)0x0) {
          return -1;
        }
        FUN_00840480("..\\..\\src\\common\\strconv.cpp",0x4ba,"wxMBConvStrictUTF8::FromWChar",
                     "Assert failure",L"trying to encode undefined Unicode character");
        return -1;
      }
      iVar8 = 4;
      if (pbVar7 != (byte *)0x0) {
        if (param_2 < 4) {
          return -1;
        }
        pbVar7[3] = bVar3 & 0x3f | 0x80;
        pbVar7[2] = (byte)(uVar6 >> 6) & 0x3f | 0x80;
        bVar3 = (byte)(uVar6 >> 0xc) & 0x3f | 0x80;
        bVar5 = (byte)(uVar6 >> 0x12) | 0xf0;
        goto LAB_0085fea7;
      }
    }
    iVar4 = iVar4 + iVar8;
    param_3 = param_3 + 1;
  } while( true );
}



// WARNING: Removing unreachable block (ram,0x008601a8)
// WARNING: Removing unreachable block (ram,0x008601c7)

uint __thiscall FUN_0085ff10(int param_1_00,ushort *param_1,uint param_2,byte *param_3,int param_4)

{
  byte bVar1;
  byte bVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  byte *pbVar8;
  bool bVar9;
  uint local_8;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    uVar3 = FUN_0085fbd0();
    return uVar3;
  }
  bVar9 = param_4 == -1;
  local_8 = 0;
  uVar3 = local_8;
LAB_0085ff40:
  do {
    local_8 = uVar3;
    pbVar8 = param_3;
    if (bVar9) {
      iVar5 = (int)(char)*param_3;
    }
    else {
      iVar5 = param_4;
      param_4 = param_4 + -1;
    }
    if ((iVar5 == 0) || ((param_1 != (ushort *)0x0 && (param_2 <= local_8)))) {
      if (bVar9) {
        if ((param_1 != (ushort *)0x0) && (local_8 < param_2)) {
          *param_1 = 0;
        }
        local_8 = local_8 + 1;
      }
      return local_8;
    }
    bVar1 = *param_3;
    param_3 = param_3 + 1;
    iVar5 = 0;
    bVar2 = bVar1;
    if ((char)bVar1 < '\0') {
      do {
        iVar6 = iVar5;
        bVar2 = bVar2 * '\x02';
        iVar5 = iVar6 + 1;
      } while ((char)bVar2 < '\0');
      if (iVar6 + 1 != 0) {
        if (iVar6 != 0) {
          iVar5 = iVar6 + -1;
          uVar3 = 0x3f >> ((byte)iVar6 & 0x1f) & (uint)bVar1;
          do {
            iVar6 = iVar6 + -1;
            if ((*param_3 & 0xc0) != 0x80) goto LAB_0086008f;
            uVar7 = *param_3 & 0x3f;
            uVar4 = uVar3 << 6;
            param_3 = param_3 + 1;
            uVar3 = uVar4 | uVar7;
          } while (iVar6 != 0);
          if ((*(uint *)(&UNK_00d28bd8 + iVar5 * 4) < uVar3) &&
             (((*(byte *)(param_1_00 + 4) & 1) == 0 || (0xff < uVar3 - 0x100000)))) {
            if (uVar3 < 0x10000) {
              if (param_1 != (ushort *)0x0) {
                *param_1 = (ushort)uVar3;
              }
              iVar5 = 1;
            }
            else {
              if (0x10ffff < uVar3) goto LAB_0086008f;
              if (param_1 != (ushort *)0x0) {
                *param_1 = (short)(uVar4 >> 10) + 0xd7c0;
                param_1[1] = ((ushort)uVar4 & 0x3ff | (ushort)uVar7) + 0xdc00;
              }
              iVar5 = 2;
            }
            if (param_1 != (ushort *)0x0) {
              param_1 = param_1 + iVar5;
            }
            uVar3 = local_8 + iVar5;
            goto LAB_0085ff40;
          }
        }
LAB_0086008f:
        if ((*(uint *)(param_1_00 + 4) & 1) == 0) {
          if ((*(uint *)(param_1_00 + 4) & 2) == 0) {
            return 0xffffffff;
          }
          uVar3 = local_8;
          if (pbVar8 < param_3) {
            uVar4 = local_8 + 3;
            do {
              if (param_1 != (ushort *)0x0) {
                uVar3 = local_8;
                if (param_2 <= local_8) break;
                if (uVar4 < param_2) {
                  bVar1 = *pbVar8;
                  *param_1 = 0x5c;
                  param_1[1] = (bVar1 >> 6) + 0x30;
                  param_1[2] = (short)((int)(bVar1 & 0x8000003f) >> 3) + 0x30;
                  param_1[3] = (bVar1 & 7) + 0x30;
                  param_1 = param_1 + 4;
                }
              }
              local_8 = local_8 + 4;
              pbVar8 = pbVar8 + 1;
              uVar4 = uVar4 + 4;
              uVar3 = local_8;
            } while (pbVar8 < param_3);
          }
        }
        else {
          for (; (uVar3 = local_8, pbVar8 < param_3 &&
                 ((param_1 == (ushort *)0x0 || (local_8 < param_2)))); local_8 = local_8 + iVar5) {
            uVar3 = *pbVar8 + 0x100000;
            if (uVar3 < 0x10000) {
              if (param_1 != (ushort *)0x0) {
                *param_1 = (ushort)uVar3;
              }
              iVar5 = 1;
            }
            else if (uVar3 < 0x110000) {
              if (param_1 != (ushort *)0x0) {
                *param_1 = (short)(uVar3 >> 10) + 0xd7c0;
                param_1[1] = (ushort)uVar3 + 0xdc00;
              }
              iVar5 = 2;
            }
            else {
              iVar5 = -1;
            }
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar5 == -1)) {
              FUN_008402e0("..\\..\\src\\common\\strconv.cpp",0x536,"wxMBConvUTF8::ToWChar",
                           "pa != ((size_t)-1)",0);
            }
            if (param_1 != (ushort *)0x0) {
              param_1 = param_1 + iVar5;
            }
            pbVar8 = pbVar8 + 1;
          }
        }
        goto LAB_0085ff40;
      }
    }
    if (param_1 != (ushort *)0x0) {
      *param_1 = (ushort)bVar1;
      param_1 = param_1 + 1;
    }
    uVar3 = local_8 + 1;
  } while (((*(byte *)(param_1_00 + 4) & 2) == 0) || (bVar1 != 0x5c));
  if (param_1 != (ushort *)0x0) {
    if (param_2 <= uVar3) goto LAB_0085ff40;
    *param_1 = 0x5c;
    param_1 = param_1 + 1;
  }
  uVar3 = local_8 + 2;
  goto LAB_0085ff40;
}



int __thiscall FUN_00860220(int param_1_00,byte *param_1,uint param_2,ushort *param_3,uint param_4)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  byte *pbVar6;
  byte *pbVar7;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    iVar2 = FUN_0085fd50();
    return iVar2;
  }
  uVar5 = 0;
  pbVar6 = param_1;
LAB_00860242:
  do {
    while( true ) {
      if (param_4 == 0xffffffff) {
        uVar3 = (uint)*param_3;
      }
      else {
        uVar3 = param_4;
        param_4 = param_4 - 1;
      }
      if ((uVar3 == 0) || ((pbVar6 != (byte *)0x0 && (param_2 <= uVar5)))) {
        if ((param_4 == 0xffffffff) && ((pbVar6 != (byte *)0x0 && (uVar5 < param_2)))) {
          *pbVar6 = 0;
        }
        return uVar5 + 1;
      }
      iVar2 = FUN_0085fb00();
      if (iVar2 == -1) {
        iVar2 = 1;
      }
      param_3 = param_3 + iVar2;
      bVar1 = (byte)param_1;
      if (((*(uint *)(param_1_00 + 4) & 1) == 0) || ((byte *)0xff < param_1 + -0x100000)) break;
      if (pbVar6 == (byte *)0x0) {
LAB_00860346:
        uVar5 = uVar5 + 1;
      }
      else {
        *pbVar6 = bVar1;
        uVar5 = uVar5 + 1;
        pbVar6 = pbVar6 + 1;
      }
    }
    uVar3 = *(uint *)(param_1_00 + 4) & 2;
    if ((uVar3 == 0) || ((param_1 != (byte *)0x5c || (*param_3 != 0x5c)))) {
      if ((((uVar3 == 0) || (param_1 != (byte *)0x5c)) || (7 < (ushort)(*param_3 - 0x30))) ||
         ((7 < (ushort)(param_3[1] - 0x30) || (7 < (ushort)(param_3[2] - 0x30))))) {
        iVar2 = 0;
        if ((byte *)0x7f < param_1) {
          do {
            iVar4 = iVar2;
            iVar2 = iVar4 + 1;
          } while (*(byte **)(&UNK_00d28bd8 + iVar2 * 4) < param_1);
          if (iVar2 != 0) {
            uVar5 = iVar4 + 2 + uVar5;
            if (pbVar6 != (byte *)0x0) {
              iVar4 = iVar2 * 6;
              *pbVar6 = (byte)((uint)param_1 >> ((byte)iVar4 & 0x1f)) &
                        (byte)(0x3f >> ((byte)iVar2 & 0x1f)) | (byte)(-0x80 >> ((byte)iVar2 & 0x1f))
              ;
              pbVar7 = pbVar6 + 1;
              do {
                iVar4 = iVar4 + -6;
                iVar2 = iVar2 + -1;
                pbVar6 = pbVar7 + 1;
                *pbVar7 = (byte)((uint)param_1 >> ((byte)iVar4 & 0x1f)) & 0x3f | 0x80;
                pbVar7 = pbVar6;
              } while (iVar2 != 0);
            }
            goto LAB_00860242;
          }
        }
        if (pbVar6 != (byte *)0x0) {
          *pbVar6 = bVar1;
          pbVar6 = pbVar6 + 1;
        }
        goto LAB_00860346;
      }
      pbVar7 = pbVar6;
      if (pbVar6 != (byte *)0x0) {
        pbVar7 = pbVar6 + 1;
        *pbVar6 = (*(char *)param_3 * '\b' + *(char *)(param_3 + 1) + '\n') * '\b' +
                  *(char *)(param_3 + 2);
      }
      param_3 = param_3 + 3;
      uVar5 = uVar5 + 1;
      pbVar6 = pbVar7;
      goto LAB_00860242;
    }
    if (pbVar6 != (byte *)0x0) {
      *pbVar6 = bVar1;
      pbVar6 = pbVar6 + 1;
    }
    param_3 = param_3 + 1;
    uVar5 = uVar5 + 1;
  } while( true );
}



void __fastcall FUN_008603c0(undefined4 *param_1)

{
  *param_1 = wxMBConv::vftable;
  return;
}



uint FUN_008603d0(void *param_1,uint param_2,short *param_3,uint param_4)

{
  short sVar1;
  short *psVar2;
  int iVar3;
  
  if (param_4 == 0xffffffff) {
    iVar3 = 1;
    sVar1 = *param_3;
    psVar2 = param_3;
    while (sVar1 != 0) {
      psVar2 = psVar2 + 1;
      iVar3 = iVar3 + 1;
      sVar1 = *psVar2;
    }
    param_4 = iVar3 * 2;
  }
  else if ((param_4 & 1) != 0) {
    return 0xffffffff;
  }
  if (param_4 == 0xffffffff) {
    return 0xffffffff;
  }
  if (param_1 != (void *)0x0) {
    if (param_2 < param_4 >> 1) {
      return 0xffffffff;
    }
    _memcpy(param_1,param_3,param_4);
  }
  return param_4 >> 1;
}



uint FUN_00860440(void *param_1,uint param_2,short *param_3,int param_4)

{
  short sVar1;
  uint _Size;
  short *psVar2;
  
  if (param_4 == -1) {
    psVar2 = param_3;
    do {
      sVar1 = *psVar2;
      psVar2 = psVar2 + 1;
    } while (sVar1 != 0);
    param_4 = ((int)psVar2 - (int)(param_3 + 1) >> 1) + 1;
  }
  _Size = param_4 * 2;
  if (param_1 != (void *)0x0) {
    if (param_2 < _Size) {
      return 0xffffffff;
    }
    _memcpy(param_1,param_3,_Size);
  }
  return _Size;
}



uint FUN_00860490(ushort *param_1,uint param_2,short *param_3,uint param_4)

{
  short sVar1;
  uint uVar2;
  short *psVar3;
  int iVar4;
  
  if (param_4 == 0xffffffff) {
    iVar4 = 1;
    sVar1 = *param_3;
    psVar3 = param_3;
    while (sVar1 != 0) {
      psVar3 = psVar3 + 1;
      iVar4 = iVar4 + 1;
      sVar1 = *psVar3;
    }
    param_4 = iVar4 * 2;
  }
  else if ((param_4 & 1) != 0) {
    return 0xffffffff;
  }
  if (param_4 == 0xffffffff) {
    return 0xffffffff;
  }
  param_4 = param_4 >> 1;
  if (param_1 != (ushort *)0x0) {
    uVar2 = param_4;
    if (param_2 < param_4) {
      return 0xffffffff;
    }
    for (; uVar2 != 0; uVar2 = uVar2 - 1) {
      *param_1 = (ushort)*(byte *)((int)param_3 + 1) | *param_3 << 8;
      param_1 = param_1 + 1;
      param_3 = param_3 + 1;
    }
  }
  return param_4;
}



undefined4 FUN_00860520(void)

{
  return 2;
}



uint FUN_00860530(ushort *param_1,uint param_2,short *param_3,int param_4)

{
  short sVar1;
  uint uVar2;
  short *psVar3;
  int iVar4;
  
  if (param_4 == -1) {
    psVar3 = param_3;
    do {
      sVar1 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar1 != 0);
    param_4 = ((int)psVar3 - (int)(param_3 + 1) >> 1) + 1;
  }
  uVar2 = param_4 * 2;
  if (param_1 != (ushort *)0x0) {
    if (param_2 < uVar2) {
      return 0xffffffff;
    }
    if (uVar2 != 0) {
      iVar4 = (uVar2 - 1 >> 1) + 1;
      do {
        *param_1 = (ushort)*(byte *)((int)param_3 + 1) | *param_3 << 8;
        param_1 = param_1 + 1;
        param_3 = param_3 + 1;
        iVar4 = iVar4 + -1;
      } while (iVar4 != 0);
    }
  }
  return uVar2;
}



uint FUN_008605b0(ushort *param_1,uint param_2,uint *param_3,uint param_4)

{
  uint uVar1;
  uint uVar2;
  ushort uVar3;
  int iVar4;
  ushort uVar5;
  uint *puVar6;
  ushort *puVar7;
  
  puVar6 = param_3;
  if (param_4 == 0xffffffff) {
    iVar4 = 1;
    uVar2 = *param_3;
    while (uVar2 != 0) {
      param_3 = param_3 + 1;
      iVar4 = iVar4 + 1;
      uVar2 = *param_3;
    }
    param_4 = iVar4 * 4;
  }
  else if ((param_4 & 3) != 0) {
    return 0xffffffff;
  }
  if (param_4 == 0xffffffff) {
    return 0xffffffff;
  }
  uVar2 = param_4 >> 2;
  param_4 = 0;
  param_3 = (uint *)0x0;
  if (uVar2 != 0) {
    do {
      uVar1 = *puVar6;
      uVar5 = 0;
      uVar3 = 0;
      if (uVar1 < 0x10000) {
        iVar4 = 1;
        uVar5 = (ushort)uVar1;
      }
      else if (uVar1 < 0x110000) {
        uVar5 = (short)(uVar1 >> 10) + 0xd7c0;
        uVar3 = ((ushort)uVar1 & 0x3ff) + 0xdc00;
        iVar4 = 2;
      }
      else {
        iVar4 = -1;
      }
      puVar6 = puVar6 + 1;
      if (iVar4 == -1) {
        return 0xffffffff;
      }
      param_4 = param_4 + iVar4;
      puVar7 = param_1;
      if (param_1 != (ushort *)0x0) {
        if (param_2 < param_4) {
          return 0xffffffff;
        }
        *param_1 = uVar5;
        puVar7 = param_1 + 1;
        if (iVar4 == 2) {
          *puVar7 = uVar3;
          puVar7 = param_1 + 2;
        }
      }
      param_3 = (uint *)((int)param_3 + 1);
      param_1 = puVar7;
    } while (param_3 < uVar2);
  }
  return param_4;
}



uint FUN_008606a0(uint *param_1,uint param_2,ushort *param_3,int param_4)

{
  ushort uVar1;
  ushort uVar2;
  ushort *puVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  
  if (param_4 == -1) {
    puVar3 = param_3;
    do {
      uVar1 = *puVar3;
      puVar3 = puVar3 + 1;
    } while (uVar1 != 0);
    param_4 = ((int)puVar3 - (int)(param_3 + 1) >> 1) + 1;
  }
  if (param_1 == (uint *)0x0) {
    return param_4 * 4;
  }
  puVar3 = param_3 + param_4;
  uVar5 = 0;
  if (param_3 < puVar3) {
    do {
      uVar1 = *param_3;
      if ((uVar1 < 0xd800) || (0xdfff < uVar1)) {
        uVar6 = (uint)uVar1;
        iVar4 = 1;
      }
      else {
        uVar2 = param_3[1];
        if (uVar2 < 0xdc00) {
          return 0xffffffff;
        }
        if (0xdfff < uVar2) {
          return 0xffffffff;
        }
        uVar6 = (uVar1 - 0xd7c0) * 0x400 + -0xdc00 + (uint)uVar2;
        iVar4 = 2;
      }
      param_3 = param_3 + iVar4;
      if ((param_3 == (ushort *)0x0) || (uVar5 = uVar5 + 4, param_2 < uVar5)) {
        return 0xffffffff;
      }
      *param_1 = uVar6;
      param_1 = param_1 + 1;
    } while (param_3 < puVar3);
  }
  return uVar5;
}



uint FUN_00860770(ushort *param_1,uint param_2,uint *param_3,uint param_4)

{
  byte bVar1;
  ushort uVar2;
  uint *puVar3;
  uint uVar4;
  ushort uVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  ushort uVar9;
  uint uVar10;
  ushort *puVar11;
  uint uVar12;
  
  if (param_4 == 0xffffffff) {
    iVar6 = 1;
    uVar4 = *param_3;
    puVar3 = param_3;
    while (uVar4 != 0) {
      puVar3 = puVar3 + 1;
      iVar6 = iVar6 + 1;
      uVar4 = *puVar3;
    }
    param_4 = iVar6 * 4;
  }
  else if ((param_4 & 3) != 0) {
    return 0xffffffff;
  }
  if (param_4 == 0xffffffff) {
    return 0xffffffff;
  }
  uVar4 = param_4 >> 2;
  uVar12 = 0;
  param_4 = 0;
  if (uVar4 != 0) {
    do {
      uVar7 = *param_3;
      uVar10 = uVar7 >> 8 & 0xff00;
      uVar7 = (uVar7 << 0x10 | uVar7 & 0xff00) << 8 | uVar10;
      bVar1 = *(byte *)((int)param_3 + 3);
      uVar8 = uVar7 | bVar1;
      uVar5 = 0;
      uVar2 = (ushort)uVar10;
      if (uVar8 < 0x10000) {
        uVar9 = uVar2 | bVar1;
        iVar6 = 1;
      }
      else {
        if (0x10ffff < uVar8) {
          return 0xffffffff;
        }
        uVar9 = (short)(uVar7 >> 10) + 0xd7c0;
        uVar5 = (uVar2 & 0x3ff | (ushort)bVar1) + 0xdc00;
        iVar6 = 2;
      }
      param_4 = param_4 + iVar6;
      puVar11 = param_1;
      if (param_1 != (ushort *)0x0) {
        if (param_2 < param_4) {
          return 0xffffffff;
        }
        *param_1 = uVar9;
        puVar11 = param_1 + 1;
        if (iVar6 == 2) {
          *puVar11 = uVar5;
          puVar11 = param_1 + 2;
        }
      }
      uVar12 = uVar12 + 1;
      param_3 = param_3 + 1;
      param_1 = puVar11;
    } while (uVar12 < uVar4);
  }
  return param_4;
}



uint FUN_00860880(uint *param_1,uint param_2,ushort *param_3,int param_4)

{
  ushort uVar1;
  ushort uVar2;
  ushort *puVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  
  if (param_4 == -1) {
    puVar3 = param_3;
    do {
      uVar1 = *puVar3;
      puVar3 = puVar3 + 1;
    } while (uVar1 != 0);
    param_4 = ((int)puVar3 - (int)(param_3 + 1) >> 1) + 1;
  }
  if (param_1 == (uint *)0x0) {
    return param_4 * 4;
  }
  puVar3 = param_3 + param_4;
  uVar5 = 0;
  if (param_3 < puVar3) {
    do {
      uVar1 = *param_3;
      if ((uVar1 < 0xd800) || (0xdfff < uVar1)) {
        uVar4 = (uint)uVar1;
        iVar6 = 1;
      }
      else {
        uVar2 = param_3[1];
        if (uVar2 < 0xdc00) {
          return 0xffffffff;
        }
        if (0xdfff < uVar2) {
          return 0xffffffff;
        }
        uVar4 = (uVar1 - 0xd7c0) * 0x400 + -0xdc00 + (uint)uVar2;
        iVar6 = 2;
      }
      param_3 = param_3 + iVar6;
      if ((param_3 == (ushort *)0x0) || (uVar5 = uVar5 + 4, param_2 < uVar5)) {
        return 0xffffffff;
      }
      *param_1 = (uVar4 & 0xff0000 | uVar4 >> 0x10) >> 8 | (uVar4 & 0xff00 | uVar4 << 0x10) << 8;
      param_1 = param_1 + 1;
    } while (param_3 < puVar3);
  }
  return uVar5;
}



undefined4 * __thiscall FUN_00860980(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8528;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1_00 = wxMBConv_win32::vftable;
  uVar2 = FUN_00895220(param_1,uVar1);
  param_1_00[1] = uVar2;
  param_1_00[2] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_008609f0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8528;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1_00 = wxMBConv_win32::vftable;
  uVar2 = FUN_00894cd0(param_1,uVar1);
  param_1_00[1] = uVar2;
  param_1_00[2] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __fastcall FUN_00860a60(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxMBConv_win32::vftable;
    puVar1[1] = *(undefined4 *)(param_1 + 4);
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



bool FUN_00860a90(void)

{
  int iVar1;
  int local_8;
  int local_4;
  
  if (DAT_03236250 != 0xffffffff) goto LAB_00860b13;
  iVar1 = FUN_00894a40(&local_8,&local_4);
  if (iVar1 == 4) {
    if ((local_8 < 4) || (local_4 < 10)) goto LAB_00860ad8;
    DAT_03236250 = 1;
  }
  else if (iVar1 == 8) {
    DAT_03236250 = (uint)(4 < local_8);
  }
  else {
LAB_00860ad8:
    DAT_03236250 = 0;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_03236250 == 0xffffffff)) {
    FUN_00840480("..\\..\\src\\common\\strconv.cpp",0xaef,"wxMBConv_win32::CanUseNoBestFit",
                 "s_isWin98Or2k != -1",L"should be set above");
  }
LAB_00860b13:
  return DAT_03236250 == 1;
}



void FUN_00860b30(void)

{
  _OSVERSIONINFOW local_120;
  ushort uStack_c;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_120;
  if (DAT_03236254 == -1) {
    _memset(&local_120,0,0x11c);
    local_120.dwOSVersionInfoSize = 0x11c;
    GetVersionExW(&local_120);
    if ((5 < local_120.dwMajorVersion) ||
       ((local_120.dwMajorVersion == 5 &&
        ((local_120.dwMinorVersion != 0 || ((local_120.dwMinorVersion == 0 && (3 < uStack_c))))))))
    {
      DAT_03236254 = 1;
    }
    else {
      DAT_03236254 = 0;
    }
  }
  ___security_check_cookie_4();
  return;
}



char * __thiscall FUN_00860bd0(int param_1_00,int param_1,char *param_2,char *param_3,char *param_4)

{
  char cVar1;
  char *pcVar2;
  
  if (*(int *)(param_1_00 + 0xc) != 0) {
                    // WARNING: Could not recover jumptable at 0x00860bdd. Too many branches
                    // WARNING: Treating indirect jump as call
    pcVar2 = (char *)(**(code **)**(undefined4 **)(param_1_00 + 0xc))();
    return pcVar2;
  }
  if (param_4 == (char *)0xffffffff) {
    param_4 = param_3;
    do {
      cVar1 = *param_4;
      param_4 = param_4 + 1;
    } while (cVar1 != '\0');
    param_4 = param_4 + (1 - (int)(param_3 + 1));
  }
  if (param_1 != 0) {
    if (param_2 < param_4) {
      return (char *)0xffffffff;
    }
    pcVar2 = (char *)0x0;
    if (param_4 != (char *)0x0) {
      do {
        *(ushort *)(param_1 + (int)pcVar2 * 2) = (ushort)(byte)param_3[(int)pcVar2];
        pcVar2 = pcVar2 + 1;
      } while (pcVar2 < param_4);
    }
  }
  return param_4;
}



uint __thiscall FUN_00860c40(int param_1_00,int param_1,uint param_2,short *param_3,uint param_4)

{
  short sVar1;
  uint uVar2;
  short *psVar3;
  
  if (*(int *)(param_1_00 + 0xc) != 0) {
                    // WARNING: Could not recover jumptable at 0x00860c4e. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (**(code **)(**(int **)(param_1_00 + 0xc) + 4))();
    return uVar2;
  }
  if (param_4 == 0xffffffff) {
    psVar3 = param_3;
    do {
      sVar1 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar1 != 0);
    param_4 = ((int)psVar3 - (int)(param_3 + 1) >> 1) + 1;
  }
  if (param_1 == 0) {
    uVar2 = 0;
    if (param_4 == 0) {
      return 0;
    }
    while ((ushort)param_3[uVar2] < 0x100) {
      uVar2 = uVar2 + 1;
      if (param_4 <= uVar2) {
        return param_4;
      }
    }
  }
  else if (param_4 <= param_2) {
    uVar2 = 0;
    if (param_4 == 0) {
      return 0;
    }
    while ((ushort)param_3[uVar2] < 0x100) {
      *(undefined *)(uVar2 + param_1) = *(undefined *)(param_3 + uVar2);
      uVar2 = uVar2 + 1;
      if (param_4 <= uVar2) {
        return param_4;
      }
    }
  }
  return 0xffffffff;
}



undefined4 __fastcall FUN_00860cd0(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0xc) != 0) {
                    // WARNING: Could not recover jumptable at 0x00860cde. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (**(code **)(**(int **)(param_1 + 0xc) + 8))();
    return uVar1;
  }
  return 1;
}



void __fastcall FUN_00860cf0(undefined4 *param_1)

{
  *param_1 = wxEncodingConverter::vftable;
  if (param_1[2] != 0) {
    FUN_00a3f66c(param_1[2]);
  }
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined4 * __thiscall FUN_00860d20(undefined4 *param_1,byte param_2)

{
  *param_1 = wxEncodingConverter::vftable;
  if (param_1[2] != 0) {
    FUN_00a3f66c(param_1[2]);
  }
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



uint __thiscall
FUN_00860d60(int param_1_00,ushort *param_1,uint param_2,byte *param_3,byte *param_4)

{
  byte bVar1;
  byte bVar2;
  byte *pbVar3;
  int iVar4;
  int *piVar5;
  uint uVar6;
  byte *pbVar7;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  uVar6 = 0;
  local_10 = 0;
  if (param_4 == (byte *)0xffffffff) {
    param_4 = param_3;
    do {
      bVar1 = *param_4;
      param_4 = param_4 + 1;
    } while (bVar1 != 0);
    param_4 = param_4 + (1 - (int)(param_3 + 1));
    piVar5 = &local_10;
  }
  else {
    piVar5 = (int *)(param_1_00 + 4);
    local_10 = *piVar5;
    local_c = *(int *)(param_1_00 + 8);
    local_8 = *(int *)(param_1_00 + 0xc);
    local_4 = *(int *)(param_1_00 + 0x10);
  }
  pbVar3 = param_3 + (int)param_4;
  param_4 = (byte *)0x0;
  if (param_3 < pbVar3) {
    do {
      if ((param_1 != (ushort *)0x0) && (param_2 <= uVar6)) break;
      bVar1 = *param_3;
      pbVar7 = param_3 + 1;
      if (*piVar5 == 1) {
        bVar2 = (&DAT_00d28a18)[bVar1];
        if (bVar2 != 0xff) {
          piVar5[2] = piVar5[2] + 6;
          uVar6 = (uint)bVar2 + piVar5[1] * 0x40;
          piVar5[1] = uVar6;
          if (7 < (uint)piVar5[2]) {
            iVar4 = piVar5[2] - 8;
            uVar6 = uVar6 >> ((byte)iVar4 & 0x1f);
            piVar5[2] = iVar4;
            if (*(char *)((int)piVar5 + 0xd) == '\0') {
              *(char *)(piVar5 + 3) = (char)uVar6;
              *(undefined *)((int)piVar5 + 0xd) = 1;
            }
            else {
              if (param_1 != (ushort *)0x0) {
                *param_1 = (ushort)*(byte *)(piVar5 + 3) << 8 | (ushort)uVar6 & 0xff;
                param_1 = param_1 + 1;
              }
              param_4 = (byte *)((int)param_4 + 1);
              *(undefined *)((int)piVar5 + 0xd) = 0;
            }
          }
          goto LAB_00860e78;
        }
        if (((*(char *)((int)piVar5 + 0xd) != '\0') || (4 < (uint)piVar5[2])) ||
           ((piVar5[1] & (1 << ((byte)piVar5[2] & 0x1f)) - 1U) != 0)) {
LAB_00860f02:
          if (uVar6 != 0) {
            return 0xffffffff;
          }
          goto LAB_00860f06;
        }
        *piVar5 = 0;
        if (bVar1 != 0x2d) goto LAB_00860e81;
      }
      else {
LAB_00860e78:
        uVar6 = (uint)param_4;
        if (*piVar5 == 0) {
LAB_00860e81:
          if (bVar1 == 0x2b) {
            if (*pbVar7 != 0x2d) {
              if ((&DAT_00d28a18)[(char)*pbVar7] == -1) goto LAB_00860f02;
              *piVar5 = 1;
              piVar5[2] = 0;
              piVar5[1] = 0;
              *(undefined *)((int)piVar5 + 0xd) = 0;
              goto LAB_00860ee8;
            }
            if (param_1 != (ushort *)0x0) {
              *param_1 = 0x2b;
              param_1 = param_1 + 1;
            }
            pbVar7 = param_3 + 2;
          }
          else {
            if (0x7e < bVar1) {
              return 0xffffffff;
            }
            if (((bVar1 < 0x20) && (bVar1 != 0)) &&
               ((bVar1 != 9 && ((bVar1 != 0xd && (bVar1 != 10)))))) {
              return 0xffffffff;
            }
            if (param_1 != (ushort *)0x0) {
              *param_1 = (ushort)bVar1;
              param_1 = param_1 + 1;
            }
          }
          param_4 = (byte *)(uVar6 + 1);
          uVar6 = (uint)param_4;
        }
      }
LAB_00860ee8:
      param_3 = pbVar7;
    } while (pbVar7 < pbVar3);
    if (uVar6 != 0) {
      return uVar6;
    }
  }
LAB_00860f06:
  *piVar5 = local_10;
  piVar5[1] = local_c;
  piVar5[2] = local_8;
  piVar5[3] = local_4;
  return 0xffffffff;
}



void __thiscall FUN_00860f30(int param_1_00,char *param_1,uint param_2,ushort *param_3,uint param_4)

{
  ushort *puVar1;
  uint uVar2;
  uint uVar3;
  int *piVar4;
  ushort uVar5;
  int local_c;
  int local_8;
  int local_4;
  
  local_c = 0;
  if (param_4 == -1) {
    piVar4 = &local_c;
    puVar1 = param_3;
    do {
      uVar5 = *puVar1;
      puVar1 = puVar1 + 1;
    } while (uVar5 != 0);
    param_4 = ((int)puVar1 - (int)(param_3 + 1) >> 1) + 1;
  }
  else {
    piVar4 = (int *)(param_1_00 + 0x14);
    local_c = *(int *)(param_1_00 + 0x14);
    local_8 = *(int *)(param_1_00 + 0x18);
    local_4 = *(int *)(param_1_00 + 0x1c);
  }
  puVar1 = param_3 + param_4;
  param_4 = 0;
  if (param_3 < puVar1) {
    do {
      if ((param_1 != (char *)0x0) && (param_2 <= param_4)) break;
      uVar5 = *param_3;
      param_3 = param_3 + 1;
      if ((uVar5 < 0x80) &&
         ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[uVar5 + 0x40] == '\0'))
      {
        if (*piVar4 == 1) {
          if (piVar4[2] != 0) {
            if (param_1 != (char *)0x0) {
              *param_1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                         [(piVar4[1] & 0xfU) << (6U - (char)piVar4[2] & 0x1f) & 0x3f];
              param_1 = param_1 + 1;
            }
            param_4 = param_4 + 1;
          }
          *piVar4 = 0;
          if (param_1 != (char *)0x0) {
            *param_1 = '-';
            param_1 = param_1 + 1;
          }
          param_4 = param_4 + 1;
        }
        if (param_1 != (char *)0x0) {
          *param_1 = (char)uVar5;
          param_1 = param_1 + 1;
        }
        param_4 = param_4 + 1;
      }
      else {
        if (uVar5 == 0x2b) {
          if (*piVar4 == 0) {
            if (param_1 != (char *)0x0) {
              *param_1 = (char)uVar5;
              param_1[1] = '-';
              param_1 = param_1 + 2;
            }
            param_4 = param_4 + 2;
            goto LAB_008610f4;
          }
        }
        else if (*piVar4 == 0) {
          *piVar4 = 1;
          piVar4[2] = 0;
          piVar4[1] = 0;
          if (param_1 != (char *)0x0) {
            *param_1 = '+';
            param_1 = param_1 + 1;
          }
          param_4 = param_4 + 1;
        }
        while( true ) {
          uVar2 = 0;
          do {
            piVar4[1] = piVar4[1] << 8;
            if (uVar2 == 0) {
              uVar3 = (uint)(uVar5 >> 8);
            }
            else {
              uVar3 = uVar5 & 0xff;
            }
            piVar4[2] = piVar4[2] + 8;
            piVar4[1] = piVar4[1] + uVar3;
            uVar3 = piVar4[2];
            while (5 < uVar3) {
              piVar4[2] = piVar4[2] + -6;
              if (param_1 != (char *)0x0) {
                *param_1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                           [(uint)piVar4[1] >> ((byte)piVar4[2] & 0x1f) & 0x3f];
                param_1 = param_1 + 1;
              }
              param_4 = param_4 + 1;
              uVar3 = piVar4[2];
            }
            uVar2 = uVar2 + 1;
          } while (uVar2 < 2);
          if ((param_3 == puVar1) ||
             ((uVar5 = *param_3, uVar5 < 0x80 &&
              ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[uVar5 + 0x40] ==
               '\0')))) break;
          param_3 = param_3 + 1;
        }
      }
LAB_008610f4:
    } while (param_3 < puVar1);
  }
  if (param_1 == (char *)0x0) {
    *piVar4 = local_c;
    piVar4[1] = local_8;
    piVar4[2] = local_4;
  }
  return;
}



undefined4 * FUN_00861150(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxMBConvUTF16BE::vftable;
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * FUN_00861170(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxMBConvUTF32BE::vftable;
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __thiscall FUN_00861190(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxMBConv::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_008611b0(undefined4 *param_1_00,int param_1)

{
  char cVar1;
  undefined uVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc84ce;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1_00 = wxMBConv_wxwin::vftable;
  FUN_008a2440(uVar3);
  local_4._0_1_ = 1;
  FUN_008a2440();
  local_4 = CONCAT31(local_4._1_3_,2);
  param_1_00[1] = param_1;
  if ((param_1 < 0x2f) || (0x56 < param_1)) {
    cVar1 = FUN_008a2460(param_1,0x2c,0);
    if (cVar1 != '\0') {
      cVar1 = FUN_008a2460(0x2c,param_1_00[1],0);
      if (cVar1 != '\0') {
        uVar2 = 1;
        goto LAB_00861243;
      }
    }
  }
  uVar2 = 0;
LAB_00861243:
  *(undefined *)(param_1_00 + 10) = uVar2;
  ExceptionList = local_c;
  return param_1_00;
}



int FUN_00861260(int param_1,char *param_2)

{
  char cVar1;
  char *pcVar2;
  
  pcVar2 = param_2;
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  if (param_1 != 0) {
    cVar1 = FUN_008a21f0(param_2,param_1);
    if (cVar1 == '\0') {
      return -1;
    }
  }
  return (int)pcVar2 - (int)(param_2 + 1);
}



int FUN_008612a0(int param_1,short *param_2)

{
  short sVar1;
  char cVar2;
  short *psVar3;
  
  psVar3 = param_2;
  do {
    sVar1 = *psVar3;
    psVar3 = psVar3 + 1;
  } while (sVar1 != 0);
  if (param_1 != 0) {
    cVar2 = FUN_008a2320(param_2,param_1);
    if (cVar2 == '\0') {
      return -1;
    }
  }
  return (int)psVar3 - (int)(param_2 + 1) >> 1;
}



undefined4 __fastcall FUN_008612f0(int param_1)

{
  switch(*(undefined4 *)(param_1 + 4)) {
  case 0x2b:
  case 0x2c:
    return 2;
  case 0x2d:
  case 0x2e:
    return 4;
  default:
    return 1;
  }
}



undefined4 __fastcall FUN_00861330(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x2c);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008611b0(*(undefined4 *)(param_1 + 4));
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_008613a0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bc8503;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 1;
  param_1[6] = wxEncodingConverter::vftable;
  if (param_1[8] != 0) {
    FUN_00a3f66c(param_1[8],uVar1);
  }
  param_1[6] = wxObject::vftable;
  FUN_0083e850();
  local_4 = local_4 & 0xffffff00;
  param_1[2] = wxEncodingConverter::vftable;
  if (param_1[4] != 0) {
    FUN_00a3f66c(param_1[4],uVar1);
  }
  param_1[2] = wxObject::vftable;
  FUN_0083e850();
  *param_1 = wxMBConv::vftable;
  ExceptionList = local_c;
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * FUN_00861440(void)

{
  if ((_DAT_032bd524 & 1) == 0) {
    _DAT_032bd524 = _DAT_032bd524 | 1;
    _DAT_032bd518 = wxMBConv_win32::vftable;
    _DAT_032bd51c = 0;
    _DAT_032bd520 = 0;
    _atexit(FUN_00c76590);
  }
  return &DAT_032bd518;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * FUN_00861480(void)

{
  if ((_DAT_032bd52c & 1) == 0) {
    _DAT_032bd52c = _DAT_032bd52c | 1;
    _DAT_032bd528 = wxMBConvStrictUTF8::vftable;
    _atexit(FUN_00c765a0);
  }
  return &DAT_032bd528;
}



undefined4 * FUN_008614b0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxMBConvUTF16LE::vftable;
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * FUN_008614d0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxMBConvUTF32LE::vftable;
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_008614f0(undefined4 param_1_00,byte param_1)

{
  FUN_008613a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00861510(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8528;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxCSConv::vftable;
  local_4 = 0;
  _free((void *)param_1[1]);
  param_1[1] = 0;
  if ((int *)param_1[3] != (int *)0x0) {
    (**(code **)(*(int *)param_1[3] + 0x18))(1,uVar1);
    param_1[3] = 0;
  }
  *param_1 = wxMBConv::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00861590(undefined4 param_1_00,byte param_1)

{
  FUN_00861510();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int * __thiscall FUN_008615b0(int *param_1_00,int *param_1)

{
  short *psVar1;
  int iVar2;
  
  if (param_1 != param_1_00) {
    FUN_0043c1dd();
    *param_1_00 = *param_1;
    iVar2 = FUN_00850350();
    if (*param_1_00 != iVar2) {
      psVar1 = (short *)(*param_1_00 + 8);
      *psVar1 = *psVar1 + 1;
    }
  }
  return param_1_00;
}



int * __thiscall FUN_008615e0(int *param_1_00,int *param_1)

{
  short *psVar1;
  int iVar2;
  
  if (param_1 != param_1_00) {
    FUN_0043c1dd();
    *param_1_00 = *param_1;
    iVar2 = FUN_00850350();
    if (*param_1_00 != iVar2) {
      psVar1 = (short *)(*param_1_00 + 8);
      *psVar1 = *psVar1 + 1;
      return param_1_00;
    }
  }
  return param_1_00;
}



int __thiscall FUN_00861620(int param_1_00,byte **param_1,byte *param_2,uint param_3)

{
  byte bVar1;
  char cVar2;
  int iVar3;
  byte *pbVar4;
  int iVar5;
  DWORD dwFlags;
  int iVar6;
  bool bVar7;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc8568;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar3 = *(int *)(param_1_00 + 4);
  if (iVar3 == 0xfde9) {
    local_4 = 0;
    iVar3 = FUN_0085fb70(param_1,param_2,param_3);
    ExceptionList = local_c;
    return iVar3;
  }
  if (iVar3 == 65000) {
    local_4 = 1;
    iVar3 = FUN_0085fb70(param_1,param_2,param_3);
    ExceptionList = local_c;
    return iVar3;
  }
  dwFlags = 0;
  if (((iVar3 < 50000) && (iVar3 != 0x2a)) &&
     (cVar2 = FUN_00860b30(DAT_0323f878 ^ (uint)&stack0xffffffbc), cVar2 != '\0')) {
    dwFlags = 8;
  }
  iVar3 = MultiByteToWideChar(*(UINT *)(param_1_00 + 4),dwFlags,(LPCSTR)param_2,-1,(LPWSTR)param_1,
                              -(uint)(param_1 != (byte **)0x0) & param_3);
  if (iVar3 == 0) {
    ExceptionList = local_c;
    return -1;
  }
  if ((dwFlags == 0) && (param_1 != (byte **)0x0)) {
    pbVar4 = param_2;
    do {
      bVar1 = *pbVar4;
      pbVar4 = pbVar4 + 1;
    } while (bVar1 != 0);
    FUN_0084aa50((int)pbVar4 - (int)(param_2 + 1));
    iVar6 = -1;
    iVar5 = WideCharToMultiByte(*(UINT *)(param_1_00 + 4),0,(LPCWSTR)param_1,-1,(LPSTR)*param_1,
                                ((int)pbVar4 - (int)(param_2 + 1)) + 1,(LPCSTR)0x0,(LPBOOL)0x0);
    if (iVar5 != 0) {
      pbVar4 = *param_1;
      do {
        bVar1 = *pbVar4;
        bVar7 = bVar1 < *param_2;
        if (bVar1 != *param_2) {
LAB_00861780:
          iVar5 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
          goto LAB_00861784;
        }
        if (bVar1 == 0) break;
        bVar1 = pbVar4[1];
        bVar7 = bVar1 < param_2[1];
        if (bVar1 != param_2[1]) goto LAB_00861780;
        pbVar4 = pbVar4 + 2;
        param_2 = param_2 + 2;
      } while (bVar1 != 0);
      iVar5 = 0;
LAB_00861784:
      if (iVar5 == 0) {
        local_4 = 0xffffffff;
        thunk_FUN_0043c1dd();
        goto LAB_00861799;
      }
    }
    local_4 = 0xffffffff;
    thunk_FUN_0043c1dd();
  }
  else {
LAB_00861799:
    iVar6 = iVar3 + -1;
  }
  ExceptionList = local_c;
  return iVar6;
}



int __thiscall FUN_008617d0(int *param_1_00,LPSTR param_1,LPCWSTR param_2,WCHAR **param_3)

{
  WCHAR WVar1;
  char cVar2;
  LPBOOL lpUsedDefaultChar;
  LPSTR *ppCVar3;
  int iVar4;
  LPCWSTR pWVar5;
  WCHAR **ppWVar6;
  WCHAR *pWVar7;
  DWORD dwFlags;
  bool bVar8;
  int local_18;
  undefined auStack_14 [4];
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc85b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_18 = 0;
  cVar2 = FUN_00860a90(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  if ((cVar2 == '\0') || (49999 < param_1_00[1])) {
    dwFlags = 0;
    lpUsedDefaultChar = (LPBOOL)0x0;
  }
  else {
    dwFlags = 0x400;
    lpUsedDefaultChar = &local_18;
  }
  iStack_10 = WideCharToMultiByte(param_1_00[1],dwFlags,param_2,-1,param_1,
                                  -(uint)(param_1 != (LPSTR)0x0) & (uint)param_3,(LPCSTR)0x0,
                                  lpUsedDefaultChar);
  if (iStack_10 != 0) {
    if (dwFlags == 0) {
      FUN_00850350();
      uStack_4 = 0;
      ppCVar3 = (LPSTR *)FUN_00850350();
      iVar4 = iStack_10;
      uStack_4 = 1;
      if (param_1 == (LPSTR)0x0) {
        FUN_0084aa50(iStack_10);
        uStack_4._0_1_ = 2;
        FUN_008615e0(auStack_14);
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        thunk_FUN_0043c1dd();
        param_1 = *ppCVar3;
        iVar4 = WideCharToMultiByte(param_1_00[1],0,param_2,-1,param_1,iVar4,(LPCSTR)0x0,(LPBOOL)0x0
                                   );
        if (iVar4 == 0) {
          uStack_4 = 0xffffffff;
          thunk_FUN_0043c1dd();
          ExceptionList = local_c;
          return -1;
        }
      }
      ppWVar6 = param_3;
      if (param_3 == (WCHAR **)0x0) {
        pWVar5 = param_2;
        do {
          WVar1 = *pWVar5;
          pWVar5 = pWVar5 + 1;
        } while (WVar1 != L'\0');
        ppWVar6 = (WCHAR **)((int)pWVar5 - (int)(param_2 + 1) >> 1);
      }
      FUN_00851620(ppWVar6);
      uStack_4._0_1_ = 3;
      iVar4 = (**(code **)(*param_1_00 + 0xc))(*param_3,param_1,(int)ppWVar6 + 1);
      if (iVar4 != -1) {
        pWVar7 = *param_3;
        do {
          WVar1 = *pWVar7;
          bVar8 = (ushort)WVar1 < (ushort)*param_2;
          if (WVar1 != *param_2) {
LAB_0086196e:
            iVar4 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
            goto LAB_00861972;
          }
          if (WVar1 == L'\0') break;
          WVar1 = pWVar7[1];
          bVar8 = (ushort)WVar1 < (ushort)param_2[1];
          if (WVar1 != param_2[1]) goto LAB_0086196e;
          pWVar7 = pWVar7 + 2;
          param_2 = param_2 + 2;
        } while (WVar1 != L'\0');
        iVar4 = 0;
LAB_00861972:
        if (iVar4 == 0) {
          uStack_4 = CONCAT31(uStack_4._1_3_,1);
          FUN_0083f900();
          uStack_4 = 0xffffffff;
          thunk_FUN_0043c1dd();
          goto LAB_00861995;
        }
      }
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0083f900();
      uStack_4 = 0xffffffff;
      thunk_FUN_0043c1dd();
      ExceptionList = local_c;
      return -1;
    }
    if (local_18 == 0) {
LAB_00861995:
      ExceptionList = local_c;
      return iStack_10 + -1;
    }
  }
  ExceptionList = local_c;
  return -1;
}



uint __thiscall FUN_008619d0(int *param_1_00,int param_1,uint param_2,char **param_3,char **param_4)

{
  char cVar1;
  char *_Dst;
  char *pcVar2;
  int iVar3;
  int iVar4;
  char **ppcVar5;
  uint uVar6;
  uint uVar7;
  char **local_18;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc85e8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar7 = 0;
  local_14 = 0;
  FUN_00850350(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  local_4 = 0;
  local_18 = (char **)FUN_00850350();
  local_4 = 1;
  if (param_4 == (char **)0xffffffff) {
    param_4 = (char **)0x0;
  }
  else {
    uVar7 = (**(code **)(*param_1_00 + 8))();
    if (uVar7 == 0xffffffff) goto LAB_00861bc0;
    if (param_4 < uVar7) {
LAB_00861a7c:
      FUN_0084aa50((uVar7 - 1) + (int)param_4);
      local_4._0_1_ = 2;
      FUN_0043c1dd();
      local_18 = param_3;
      ppcVar5 = (char **)FUN_00850350();
      if (param_3 != ppcVar5) {
        *(short *)(param_3 + 2) = *(short *)(param_3 + 2) + 1;
      }
      local_4 = CONCAT31(local_4._1_3_,1);
      thunk_FUN_0043c1dd();
      _Dst = *param_3;
      _memcpy(_Dst,param_3,(size_t)param_4);
      pcVar2 = _Dst + (int)param_4;
      if (pcVar2 < _Dst + (int)param_4 + uVar7) {
        _memset(pcVar2,0,(int)(_Dst + (int)param_4 + uVar7) - (int)pcVar2);
      }
      param_3 = (char **)*param_3;
    }
    else {
      pcVar2 = (char *)((int)param_3 + ((int)param_4 - uVar7));
      uVar6 = uVar7;
      if (uVar7 != 0) {
        do {
          cVar1 = *pcVar2;
          pcVar2 = pcVar2 + 1;
          if (cVar1 != '\0') {
            if (uVar6 == 0) goto LAB_00861aed;
            goto LAB_00861a7c;
          }
          uVar6 = uVar6 - 1;
        } while (uVar6 != 0);
        param_4 = (char **)((int)param_3 + (int)param_4);
        goto LAB_00861afe;
      }
    }
LAB_00861aed:
    param_4 = (char **)((int)param_3 + (int)param_4);
  }
LAB_00861afe:
  iVar3 = (**(code **)(*param_1_00 + 0xc))(0,param_3,0);
  while (iVar3 != -1) {
    local_14 = local_14 + iVar3;
    if (param_4 == (char **)0x0) {
      local_14 = local_14 + 1;
    }
    if (iVar3 == 0) {
LAB_00861be2:
      local_4 = 0xffffffff;
      ppcVar5 = (char **)FUN_00850350();
      if (local_18 == ppcVar5) {
        ExceptionList = local_c;
        return local_14;
      }
      *(short *)(local_18 + 2) = *(short *)(local_18 + 2) + -1;
      if (*(short *)(local_18 + 2) != 0) {
        FUN_00850350();
        ExceptionList = local_c;
        return local_14;
      }
      if (*(char *)((int)local_18 + 10) != '\0') {
        _free(*local_18);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_18);
    }
    if (param_1 != 0) {
      if ((param_2 < local_14) ||
         (iVar4 = (**(code **)(*param_1_00 + 0xc))(param_1,param_3,iVar3 + 1), iVar4 == -1)) break;
      param_1 = param_1 + iVar3 * 2;
    }
    if (param_4 == (char **)0x0) goto LAB_00861be2;
    while (ppcVar5 = param_3, uVar6 = uVar7, uVar7 != 0) {
      while (cVar1 = *(char *)ppcVar5, ppcVar5 = (char **)((int)ppcVar5 + 1), cVar1 == '\0') {
        uVar6 = uVar6 - 1;
        if (uVar6 == 0) goto LAB_00861b88;
      }
      if (uVar6 == 0) break;
      param_3 = (char **)((int)param_3 + uVar7);
    }
LAB_00861b88:
    if (param_3 == param_4) goto LAB_00861be2;
    local_14 = local_14 + 1;
    if (param_1 != 0) {
      param_1 = param_1 + 2;
    }
    param_3 = (char **)((int)param_3 + uVar7);
    if (param_4 <= param_3) goto LAB_00861be2;
    iVar3 = (**(code **)(*param_1_00 + 0xc))(0,param_3,0);
  }
LAB_00861bc0:
  local_4 = 0xffffffff;
  thunk_FUN_0043c1dd();
  ExceptionList = local_c;
  return 0xffffffff;
}



uint __thiscall FUN_00861c50(int *param_1_00,void *param_1,uint param_2,void **param_3,int param_4)

{
  short sVar1;
  undefined uVar2;
  short **ppsVar3;
  void **ppvVar4;
  int iVar5;
  size_t _Size;
  void **ppvVar6;
  void **ppvVar7;
  int iVar8;
  short **ppsVar9;
  void **ppvVar10;
  void *_Src;
  short *_Memory;
  uint uVar11;
  void **ppvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  iVar8 = param_4;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc8640;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar11 = 0;
  param_4 = CONCAT31(param_4._1_3_,param_4 == -1);
  FUN_00850350(DAT_0323f878 ^ (uint)&stack0xffffffcc);
  local_4 = 0;
  ppsVar3 = (short **)FUN_00850350();
  ppvVar10 = param_3;
  local_4 = 1;
  if ((char)param_4 == '\0') {
    if ((iVar8 != 0) && (*(short *)((int)param_3 + (iVar8 * 2 - 2U)) != 0)) {
      FUN_00851620(iVar8);
      local_4._0_1_ = 2;
      FUN_008615e0(&param_3);
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0083f900();
      _memcpy(*ppsVar3,ppvVar10,iVar8 * 2);
      ppvVar10 = (void **)*ppsVar3;
    }
  }
  else {
    ppvVar4 = param_3;
    do {
      sVar1 = *(short *)ppvVar4;
      ppvVar4 = (void **)((int)ppvVar4 + 2);
    } while (sVar1 != 0);
    iVar8 = ((int)ppvVar4 - (int)((int)param_3 + 2) >> 1) + 1;
  }
  iVar5 = (**(code **)(*param_1_00 + 8))();
  ppvVar4 = (void **)((int)ppvVar10 + iVar8 * 2);
  do {
    if (ppvVar4 <= ppvVar10) {
LAB_00861f37:
      local_4 = 0xffffffff;
      ppsVar9 = (short **)FUN_00850350();
      if (ppsVar3 != ppsVar9) {
        *(short *)(ppsVar3 + 2) = *(short *)(ppsVar3 + 2) + -1;
        if (*(short *)(ppsVar3 + 2) == 0) {
          if (*(char *)((int)ppsVar3 + 10) != '\0') {
            _free(*ppsVar3);
          }
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(ppsVar3);
        }
        FUN_00850350();
      }
      ExceptionList = local_c;
      return uVar11;
    }
    _Size = (**(code **)(*param_1_00 + 0x10))(0,ppvVar10,0);
    if (_Size == 0xffffffff) {
      local_4 = 0xffffffff;
      ppsVar9 = (short **)FUN_00850350();
      if (ppsVar3 == ppsVar9) {
        ExceptionList = local_c;
        return 0xffffffff;
      }
      *(short *)(ppsVar3 + 2) = *(short *)(ppsVar3 + 2) + -1;
      if (*(short *)(ppsVar3 + 2) != 0) {
LAB_00861ebc:
        FUN_00850350();
        ExceptionList = local_c;
        return 0xffffffff;
      }
      if (*(char *)((int)ppsVar3 + 10) == '\0') goto LAB_00861eb3;
      _Memory = *ppsVar3;
LAB_00861eab:
      _free(_Memory);
LAB_00861eb3:
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppsVar3);
    }
    uVar11 = uVar11 + _Size;
    if ((char)param_4 == '\0') {
      ppvVar6 = ppvVar10;
      do {
        sVar1 = *(short *)ppvVar6;
        ppvVar6 = (void **)((int)ppvVar6 + 2);
      } while (sVar1 != 0);
      ppvVar6 = (void **)((int)ppvVar10 + ((int)ppvVar6 - (int)((int)ppvVar10 + 2) >> 1) * 2);
    }
    else {
      ppvVar6 = (void **)((int)ppvVar4 - 2);
    }
    if (ppvVar6 < ppvVar4) {
      uVar11 = uVar11 + iVar5;
    }
    if (param_1 != (void *)0x0) {
      if (param_2 < uVar11) {
        local_4 = 0xffffffff;
        ppsVar9 = (short **)FUN_00850350();
        if (ppsVar3 == ppsVar9) {
          ExceptionList = local_c;
          return 0xffffffff;
        }
        *(short *)(ppsVar3 + 2) = *(short *)(ppsVar3 + 2) + -1;
        if (*(short *)(ppsVar3 + 2) != 0) goto LAB_00861ebc;
        if (*(char *)((int)ppsVar3 + 10) == '\0') goto LAB_00861eb3;
        _Memory = *ppsVar3;
        goto LAB_00861eab;
      }
      param_3 = (void **)FUN_00850350();
      local_4._0_1_ = 3;
      param_3 = (void **)FUN_00850350();
      local_4._0_1_ = 4;
      uVar2 = (undefined)local_4;
      local_4._0_1_ = 4;
      _Src = param_1;
      if (ppvVar6 == ppvVar4) {
        FUN_0084aa50(iVar5 + -1 + _Size);
        local_4._0_1_ = 5;
        FUN_0043c1dd();
        param_3 = ppvStack_14;
        ppvVar7 = (void **)FUN_00850350();
        if (ppvStack_14 != ppvVar7) {
          *(short *)(ppvStack_14 + 2) = *(short *)(ppvStack_14 + 2) + 1;
        }
        local_4._0_1_ = 4;
        thunk_FUN_0043c1dd();
        _Src = *ppvStack_14;
        uVar2 = (undefined)local_4;
      }
      local_4._0_1_ = uVar2;
      iVar8 = (**(code **)(*param_1_00 + 0x10))(_Src,ppvVar10,iVar5 + _Size);
      if (iVar8 == -1) {
        local_4 = CONCAT31(local_4._1_3_,1);
        thunk_FUN_0043c1dd();
        local_4 = 0xffffffff;
        FUN_0083f900();
        ExceptionList = local_c;
        return 0xffffffff;
      }
      if (_Src != param_1) {
        _memcpy(param_1,_Src,_Size);
        local_4 = CONCAT31(local_4._1_3_,1);
        thunk_FUN_0043c1dd();
        goto LAB_00861f37;
      }
      param_1 = (void *)((int)param_1 + _Size);
      if (ppvVar6 < ppvVar4) {
        param_1 = (void *)((int)param_1 + iVar5);
      }
      local_4 = CONCAT31(local_4._1_3_,1);
      thunk_FUN_0043c1dd();
    }
    ppvVar10 = (void **)((int)ppvVar6 + 2);
  } while( true );
}



int * __thiscall FUN_00861fa0(undefined4 *param_1_00,int *param_1,undefined4 *param_2)

{
  short *psVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc8670;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_2 != (undefined4 *)0x0) &&
     (iVar2 = (**(code **)*param_1_00)(0,0,param_2,0xffffffff,DAT_0323f878 ^ (uint)&stack0xffffffe4)
     , iVar2 != -1)) {
    FUN_00851620(iVar2 + -1);
    uStack_4 = 0;
    iVar2 = (**(code **)*param_1_00)(*param_2,iVar2,param_2,0xffffffff);
    if (iVar2 != -1) {
      *param_1 = (int)param_2;
      iVar2 = FUN_00850350();
      if (*param_1 != iVar2) {
        psVar1 = (short *)(*param_1 + 8);
        *psVar1 = *psVar1 + 1;
      }
      uStack_4 = 0xffffffff;
      FUN_0083f900();
      ExceptionList = local_c;
      return param_1;
    }
    uStack_4 = 0xffffffff;
    FUN_0083f900();
  }
  iVar2 = FUN_00850350();
  *param_1 = iVar2;
  uStack_4 = 1;
  iVar2 = FUN_00850350();
  *param_1 = iVar2;
  ExceptionList = local_c;
  return param_1;
}



int ** __thiscall
FUN_00862090(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  int **ppiVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int *piVar5;
  void *unaff_ESI;
  int *unaff_retaddr;
  int **local_c;
  undefined *puStack_8;
  int *piStack_4;
  
  piStack_4 = (int *)0xffffffff;
  puStack_8 = &LAB_00bc86a0;
  local_c = (int **)ExceptionList;
  ExceptionList = &local_c;
  iVar2 = (**(code **)*param_1_00)(0,0,param_2,param_3,DAT_0323f878 ^ (uint)&stack0xffffffe0);
  if (iVar2 != -1) {
    FUN_00851620(iVar2);
    *(undefined2 *)(*piStack_4 + iVar2 * 2) = 0;
    iVar3 = (**(code **)*param_1_00)(*piStack_4,iVar2,param_2,param_3);
    ppiVar1 = local_c;
    if (iVar3 != -1) {
      if ((unaff_retaddr != (int *)0x0) && (*unaff_retaddr = iVar2, param_3 == -1)) {
        *unaff_retaddr = iVar2 + -1;
      }
      *local_c = piStack_4;
      piVar4 = (int *)FUN_00850350();
      piVar5 = *ppiVar1;
      if (piVar5 != piVar4) {
        piVar5 = piVar5 + 2;
        *(short *)piVar5 = *(short *)piVar5 + 1;
      }
      FUN_0083f900();
      ExceptionList = unaff_ESI;
      return ppiVar1;
    }
    FUN_0083f900();
  }
  if (unaff_retaddr != (int *)0x0) {
    *unaff_retaddr = 0;
  }
  piVar5 = (int *)FUN_00850350();
  ppiVar1 = local_c;
  *local_c = piVar5;
  piVar5 = (int *)FUN_00850350();
  *ppiVar1 = piVar5;
  ExceptionList = unaff_ESI;
  return ppiVar1;
}



int ** __thiscall FUN_008621a0(int *param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  int **ppiVar1;
  int iVar2;
  size_t _Size;
  int iVar3;
  int *piVar4;
  int *piVar5;
  void *unaff_ESI;
  int *unaff_retaddr;
  int **local_c;
  undefined *puStack_8;
  int *piStack_4;
  
  piStack_4 = (int *)0xffffffff;
  puStack_8 = &LAB_00bc86d0;
  local_c = (int **)ExceptionList;
  ExceptionList = &local_c;
  iVar2 = (**(code **)(*param_1_00 + 4))(0,0,param_2,param_3,DAT_0323f878 ^ (uint)&stack0xffffffe0);
  if (iVar2 != -1) {
    _Size = (**(code **)(*param_1_00 + 8))();
    FUN_0084aa50((_Size - 1) + iVar2);
    _memset((void *)(*piStack_4 + iVar2),0,_Size);
    iVar3 = (**(code **)(*param_1_00 + 4))(*piStack_4,iVar2,puStack_8,param_3);
    ppiVar1 = local_c;
    if (iVar3 != -1) {
      if ((unaff_retaddr != (int *)0x0) && (*unaff_retaddr = iVar2, param_3 == -1)) {
        *unaff_retaddr = iVar2 - _Size;
      }
      *local_c = piStack_4;
      piVar4 = (int *)FUN_00850350();
      piVar5 = *ppiVar1;
      if (piVar5 != piVar4) {
        piVar5 = piVar5 + 2;
        *(short *)piVar5 = *(short *)piVar5 + 1;
      }
      thunk_FUN_0043c1dd();
      ExceptionList = unaff_ESI;
      return ppiVar1;
    }
    thunk_FUN_0043c1dd();
  }
  if (unaff_retaddr != (int *)0x0) {
    *unaff_retaddr = 0;
  }
  piVar5 = (int *)FUN_00850350();
  ppiVar1 = local_c;
  *local_c = piVar5;
  piVar5 = (int *)FUN_00850350();
  *ppiVar1 = piVar5;
  ExceptionList = unaff_ESI;
  return ppiVar1;
}



int ** __thiscall FUN_008622d0(undefined4 *param_1_00,int **param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined4 uVar4;
  void **ppvVar5;
  void **local_10;
  void *local_c;
  undefined *puStack_8;
  uint uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc8719;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = ((undefined4 *)*param_2)[1];
  if ((iVar2 != 0) &&
     (iVar1 = (**(code **)*param_1_00)
                        (0,0,*(undefined4 *)*param_2,iVar2,DAT_0323f878 ^ (uint)&stack0xffffffdc),
     iVar1 != -1)) {
    FUN_00851620(iVar1);
    *(undefined2 *)(*param_2 + iVar1 * 2) = 0;
    uStack_4 = 1;
    iVar2 = (**(code **)*param_1_00)(*param_2,iVar1,*(undefined4 *)*param_2,iVar2);
    if (iVar2 != -1) {
      *param_1 = param_2;
      piVar3 = (int *)FUN_00850350();
      if (*param_1 != piVar3) {
        piVar3 = *param_1 + 2;
        *(short *)piVar3 = *(short *)piVar3 + 1;
      }
      uStack_4 = uStack_4 & 0xffffff00;
      FUN_0083f900();
      ExceptionList = local_c;
      return param_1;
    }
    uStack_4 = uStack_4 & 0xffffff00;
    FUN_0083f900();
  }
  uVar4 = FUN_0081c01c(&local_10,&DAT_00fae9c8,0);
  uStack_4 = 2;
  FUN_00851700(uVar4);
  uStack_4 = uStack_4 & 0xffffff00;
  ppvVar5 = (void **)FUN_00850350();
  if (local_10 != ppvVar5) {
    *(short *)(local_10 + 2) = *(short *)(local_10 + 2) + -1;
    if (*(short *)(local_10 + 2) == 0) {
      if (*(char *)((int)local_10 + 10) != '\0') {
        _free(*local_10);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_10);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00862440(undefined4 param_1,undefined4 param_2)

{
  FUN_00861fa0(param_1,param_2);
  return param_1;
}



undefined4 * __thiscall FUN_00862460(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  undefined uVar3;
  uint uVar4;
  int *piVar5;
  undefined4 uVar6;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8766;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1_00 = wxMBConv_wxwin::vftable;
  FUN_008a2440(uVar4);
  local_4._0_1_ = 1;
  FUN_008a2440();
  local_4._0_1_ = 2;
  uVar3 = (undefined)local_4;
  local_4._0_1_ = 2;
  if (param_1 == 0) {
    param_1_00[1] = 0xffffffff;
    local_4._0_1_ = uVar3;
  }
  else {
    FUN_0043c211(param_1);
    local_4._0_1_ = 3;
    piVar5 = (int *)FUN_008916f0();
    uVar6 = (**(code **)(*piVar5 + 4))(local_30,0);
    param_1_00[1] = uVar6;
    local_4._0_1_ = 2;
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  iVar1 = param_1_00[1];
  if ((iVar1 < 0x2f) || (0x56 < iVar1)) {
    cVar2 = FUN_008a2460(iVar1,0x2c,0);
    if (cVar2 != '\0') {
      cVar2 = FUN_008a2460(0x2c,param_1_00[1],0);
      if (cVar2 != '\0') {
        uVar3 = 1;
        goto LAB_0086254f;
      }
    }
  }
  uVar3 = 0;
LAB_0086254f:
  *(undefined *)(param_1_00 + 10) = uVar3;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_00862570(int param_1)

{
  if (param_1 == 0) {
    return;
  }
  _free(*(void **)(param_1 + 0x24));
  if (7 < *(uint *)(param_1 + 0x20)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
  }
  *(undefined4 *)(param_1 + 0x20) = 7;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(undefined2 *)(param_1 + 0xc) = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



int __fastcall FUN_008625c0(int param_1)

{
  char cVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 8) == 0) {
    iVar2 = WideCharToMultiByte(*(UINT *)(param_1 + 4),0,L"",1,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0)
    ;
    switch(iVar2) {
    case 0:
      goto switchD_00862613_caseD_0;
    case 1:
    case 2:
    case 4:
      *(int *)(param_1 + 8) = iVar2;
      ExceptionList = local_c;
      return iVar2;
    default:
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        FUN_00848820();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
switchD_00862613_caseD_0:
      *(undefined4 *)(param_1 + 8) = 0xffffffff;
    }
  }
  ExceptionList = local_c;
  return *(int *)(param_1 + 8);
}



void __thiscall
FUN_008626f0(undefined4 param_1_00,undefined4 param_1,void **param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  void **ppvVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc8798;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)FUN_00847c00(param_3,param_2,1);
  local_4 = 0;
  uVar3 = FUN_008854f0(*(undefined4 *)*puVar2,uVar1);
  FUN_0084d410(param_1_00,param_1,uVar3);
  local_4 = 0xffffffff;
  ppvVar4 = (void **)FUN_00850350();
  if (param_2 != ppvVar4) {
    *(short *)(param_2 + 2) = *(short *)(param_2 + 2) + -1;
    if (*(short *)(param_2 + 2) == 0) {
      if (*(char *)((int)param_2 + 10) != '\0') {
        _free(*param_2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_2);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return;
}



int * __fastcall FUN_008627b0(int param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  undefined4 uVar4;
  bool bVar5;
  undefined auStack_1c8 [12];
  undefined4 uStack_1bc;
  undefined4 uStack_1b8;
  char *pcStack_1b4;
  undefined *puStack_1b0;
  char *pcStack_1ac;
  undefined *local_18c;
  undefined local_188 [4];
  uint local_184;
  undefined4 local_174;
  uint local_170;
  void *local_16c;
  undefined local_164 [24];
  uint local_14c;
  void *local_148;
  undefined auStack_140 [20];
  undefined local_12c [20];
  undefined auStack_118 [36];
  undefined auStack_f4 [232];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc88d5;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_18c = auStack_1c8;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    bVar5 = *(int *)(param_1 + 4) == 0;
    if (bVar5) {
      pcStack_1ac = local_164;
      puStack_1b0 = (undefined *)0x862822;
      FUN_00891ec0();
      local_4 = 0;
      FUN_0043c1a4();
      pcStack_1ac = (char *)&local_18c;
      puStack_1b0 = (undefined *)0x862848;
      FUN_00432413();
      local_4 = 1;
    }
    pcStack_1ac = "h";
    FUN_0081c0f1();
    local_4 = 2;
    pcStack_1ac = (char *)0x862882;
    FUN_004325b6();
    pcStack_1ac = "wxCSConv::DoCreate";
    puStack_1b0 = (undefined *)0xc0c;
    pcStack_1b4 = "..\\..\\src\\common\\strconv.cpp";
    uStack_1b8 = 7;
    local_4._0_1_ = 3;
    uStack_1bc = 0x8628ab;
    FUN_008423d0();
    pcStack_1ac = local_12c;
    puStack_1b0 = local_188;
    local_4._0_1_ = 4;
    pcStack_1b4 = (char *)0x8628c5;
    FUN_008626f0();
    local_4._0_1_ = 3;
    FUN_00842440();
    pcStack_1ac = (char *)0x8628e2;
    _free(local_16c);
    if (7 < local_170) {
                    // WARNING: Subroutine does not return
      pcStack_1ac = &UNK_008628fa;
      FUN_00a3f6a1();
    }
    local_170 = 7;
    local_174 = 0;
    local_184 = local_184 & 0xffff0000;
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_0081b5bc();
    local_4 = 0;
    if (bVar5) {
      thunk_FUN_0043c1dd();
    }
    local_4 = 0xffffffff;
    if (bVar5) {
      pcStack_1ac = (char *)0x862960;
      _free(local_148);
      if (7 < local_14c) {
                    // WARNING: Subroutine does not return
        pcStack_1ac = &UNK_00862973;
        FUN_00a3f6a1();
      }
    }
  }
  if (*(int *)(param_1 + 8) == 1) {
    ExceptionList = local_c;
    return (int *)0x0;
  }
  if (*(int *)(param_1 + 4) == 0) {
    pcStack_1ac = (char *)0x8629b4;
    local_18c = (undefined *)operator_new(0xc);
    local_4 = 6;
    if (local_18c == (undefined *)0x0) goto LAB_008629d7;
    pcStack_1ac = (char *)0x8629d5;
    piVar2 = (int *)FUN_008609f0();
  }
  else {
    pcStack_1ac = (char *)0x86298c;
    local_18c = (undefined *)operator_new(0xc);
    local_4 = 5;
    if (local_18c == (undefined *)0x0) {
LAB_008629d7:
      piVar2 = (int *)0x0;
    }
    else {
      pcStack_1ac = (char *)0x8629ad;
      piVar2 = (int *)FUN_00860980();
    }
  }
  local_4 = 0xffffffff;
  if (piVar2[1] != -1) {
    ExceptionList = local_c;
    return piVar2;
  }
  pcStack_1ac = (char *)0x8629f9;
  (**(code **)(*piVar2 + 0x18))();
  iVar3 = *(int *)(param_1 + 8);
  if ((iVar3 == -1) && (*(int *)(param_1 + 4) != 0)) {
    pcStack_1ac = (char *)0x862a14;
    FUN_0043c211();
    local_4 = 7;
    piVar2 = (int *)FUN_008916f0();
    pcStack_1ac = local_164;
    puStack_1b0 = (undefined *)0x862a33;
    iVar3 = (**(code **)(*piVar2 + 4))();
    local_4 = 0xffffffff;
    FUN_0040159c();
  }
  switch(iVar3) {
  case 0x28:
    pcStack_1ac = (char *)0x862a5f;
    piVar2 = (int *)operator_new(0x20);
    if (piVar2 != (int *)0x0) {
      *piVar2 = (int)wxMBConvUTF7::vftable;
      piVar2[1] = 0;
      piVar2[5] = 0;
      ExceptionList = local_c;
      return piVar2;
    }
    break;
  case 0x29:
    pcStack_1ac = (char *)0x862a82;
    piVar2 = (int *)operator_new(8);
    if (piVar2 != (int *)0x0) {
      *piVar2 = (int)wxMBConvUTF8::vftable;
      piVar2[1] = 0;
      ExceptionList = local_c;
      return piVar2;
    }
    break;
  default:
    if (*(int *)(param_1 + 4) == 0) {
      pcStack_1ac = (char *)0x862b43;
      local_18c = (undefined *)operator_new(0x2c);
      local_4 = 9;
      if (local_18c == (undefined *)0x0) goto LAB_00862b66;
      pcStack_1ac = (char *)0x862b64;
      piVar2 = (int *)FUN_008611b0();
    }
    else {
      pcStack_1ac = (char *)0x862b1b;
      local_18c = (undefined *)operator_new(0x2c);
      local_4 = 8;
      if (local_18c == (undefined *)0x0) {
LAB_00862b66:
        piVar2 = (int *)0x0;
      }
      else {
        pcStack_1ac = (char *)0x862b3c;
        piVar2 = (int *)FUN_00862460();
      }
    }
    local_4 = 0xffffffff;
    if (*(char *)(piVar2 + 10) != '\0') {
      ExceptionList = local_c;
      return piVar2;
    }
    pcStack_1ac = (char *)0x862b84;
    (**(code **)(*piVar2 + 0x18))();
    local_18c = auStack_1c8;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(7);
    if (cVar1 != '\0') {
      bVar5 = *(int *)(param_1 + 4) == 0;
      if (bVar5) {
        pcStack_1ac = auStack_f4;
        puStack_1b0 = (undefined *)0x862be2;
        uVar4 = FUN_00891ec0();
        local_4 = 0xb;
      }
      else {
        pcStack_1ac = (char *)0x862bbd;
        uVar4 = FUN_0043c211();
        local_4 = 10;
      }
      pcStack_1ac = "h";
      FUN_0081c0f1();
      local_4 = 0xc;
      pcStack_1ac = (char *)0x862c21;
      FUN_004325b6();
      local_18c = auStack_1c8;
      local_4._0_1_ = 0xd;
      FUN_004325a0(uVar4);
      local_4._0_1_ = 0xe;
      FUN_008423d0(7,"..\\..\\src\\common\\strconv.cpp",0xcbb,"wxCSConv::DoCreate",&DAT_00d25fa0);
      local_4._0_1_ = 0x10;
      FUN_0084d7a0(auStack_118,auStack_140);
      local_4._0_1_ = 0xd;
      FUN_00842440();
      FUN_0040159c();
      local_4 = CONCAT31(local_4._1_3_,0xb);
      FUN_0081b5bc();
      if (bVar5) {
        FUN_0040159c();
      }
      else {
        FUN_0040159c();
      }
    }
    break;
  case 0x2b:
    pcStack_1ac = (char *)0x862aa2;
    piVar2 = (int *)operator_new(4);
    if (piVar2 != (int *)0x0) {
      *piVar2 = (int)wxMBConvUTF16BE::vftable;
      ExceptionList = local_c;
      return piVar2;
    }
    break;
  case 0x2c:
    pcStack_1ac = (char *)0x862abf;
    piVar2 = (int *)operator_new(4);
    if (piVar2 != (int *)0x0) {
      *piVar2 = (int)wxMBConvUTF16LE::vftable;
      ExceptionList = local_c;
      return piVar2;
    }
    break;
  case 0x2d:
    pcStack_1ac = (char *)0x862adc;
    piVar2 = (int *)operator_new(4);
    if (piVar2 != (int *)0x0) {
      *piVar2 = (int)wxMBConvUTF32BE::vftable;
      ExceptionList = local_c;
      return piVar2;
    }
    break;
  case 0x2e:
    pcStack_1ac = (char *)0x862af9;
    piVar2 = (int *)operator_new(4);
    if (piVar2 != (int *)0x0) {
      *piVar2 = (int)wxMBConvUTF32LE::vftable;
      ExceptionList = local_c;
      return piVar2;
    }
  }
  ExceptionList = local_c;
  return (int *)0x0;
}



undefined4 * __thiscall FUN_00862d20(undefined4 *param_1_00,int param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  char *pcVar3;
  int iVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  iVar4 = param_1;
  puStack_8 = &LAB_00bc8908;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1_00 = wxCSConv::vftable;
  param_1_00[1] = 0;
  param_1_00[3] = 0;
  local_4 = 0;
  if (*(int *)(param_1 + 0x14) != 0) {
    puVar2 = (undefined4 *)FUN_00851e30(&param_1);
    if (*(char **)*puVar2 != (char *)0x0) {
      pcVar3 = __strdup(*(char **)*puVar2);
      param_1_00[1] = pcVar3;
    }
    thunk_FUN_0043c1dd();
  }
  iVar4 = FUN_00892210(iVar4,uVar1);
  if (iVar4 == -1) {
LAB_00862db4:
    if (param_1_00[1] != 0) {
      param_1_00[2] = 0xffffffff;
      goto LAB_00862dd7;
    }
    iVar4 = FUN_00847250();
    param_1_00[2] = iVar4;
    if (iVar4 != -1) goto LAB_00862dd7;
  }
  else if (iVar4 != 0) {
    if (iVar4 != 0x58) {
      param_1_00[2] = iVar4;
      goto LAB_00862dd7;
    }
    goto LAB_00862db4;
  }
  param_1_00[2] = 1;
LAB_00862dd7:
  uVar5 = FUN_008627b0();
  param_1_00[3] = uVar5;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00862e00(undefined4 *param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8528;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1_00 = wxCSConv::vftable;
  if ((param_1 == 0x58) || (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\strconv.cpp",0xbcb,"wxCSConv::wxCSConv","Assert failure",
                   L"invalid encoding value in wxCSConv ctor",uVar1);
    }
    param_1 = -1;
  }
  param_1_00[1] = 0;
  param_1_00[3] = 0;
  if (param_1 == -1) {
LAB_00862e91:
    iVar2 = FUN_00847250();
    param_1_00[2] = iVar2;
    if (iVar2 != -1) goto LAB_00862ea5;
  }
  else if (param_1 != 0) {
    if (param_1 != 0x58) {
      param_1_00[2] = param_1;
      goto LAB_00862ea5;
    }
    goto LAB_00862e91;
  }
  param_1_00[2] = 1;
LAB_00862ea5:
  uVar3 = FUN_008627b0();
  param_1_00[3] = uVar3;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00862ed0(undefined4 *param_1_00,int param_1)

{
  uint uVar1;
  char *pcVar2;
  int iVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8908;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1_00 = wxCSConv::vftable;
  param_1_00[1] = 0;
  param_1_00[3] = 0;
  local_4 = 0;
  if (*(char **)(param_1 + 4) != (char *)0x0) {
    pcVar2 = __strdup(*(char **)(param_1 + 4));
    param_1_00[1] = pcVar2;
  }
  iVar3 = *(int *)(param_1 + 8);
  if (iVar3 == -1) {
LAB_00862f42:
    if (param_1_00[1] != 0) {
      param_1_00[2] = 0xffffffff;
      goto LAB_00862f65;
    }
    iVar3 = FUN_00847250(uVar1);
    param_1_00[2] = iVar3;
    if (iVar3 != -1) goto LAB_00862f65;
  }
  else if (iVar3 != 0) {
    if (iVar3 != 0x58) {
      param_1_00[2] = iVar3;
      goto LAB_00862f65;
    }
    goto LAB_00862f42;
  }
  param_1_00[2] = 1;
LAB_00862f65:
  uVar4 = FUN_008627b0();
  param_1_00[3] = uVar4;
  ExceptionList = local_c;
  return param_1_00;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * FUN_00862fb0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8948;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((DAT_032bd564 & 1) == 0) {
    DAT_032bd564 = DAT_032bd564 | 1;
    local_4 = 1;
    _DAT_032bd554 = wxCSConv::vftable;
    _DAT_032bd558 = 0;
    _DAT_032bd560 = 0;
    _DAT_032bd55c = FUN_00847250(DAT_0323f878 ^ (uint)&stack0xfffffff0);
    if (_DAT_032bd55c == -1) {
      _DAT_032bd55c = 1;
    }
    _DAT_032bd560 = FUN_008627b0();
    _atexit((_func_4879 *)&LAB_00c765e0);
  }
  ExceptionList = local_c;
  return &DAT_032bd554;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * FUN_00863050(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8988;
  local_c = ExceptionList;
  if ((DAT_032bd578 & 1) == 0) {
    DAT_032bd578 = DAT_032bd578 | 1;
    local_4 = 1;
    _DAT_032bd570 = 1;
    _DAT_032bd568 = wxCSConv::vftable;
    _DAT_032bd56c = 0;
    _DAT_032bd574 = 0;
    ExceptionList = &local_c;
    _DAT_032bd574 = FUN_008627b0(DAT_0323f878 ^ (uint)&local_c);
    _atexit((_func_4879 *)&LAB_00c765f0);
  }
  ExceptionList = local_c;
  return &DAT_032bd568;
}



undefined4 __fastcall FUN_008630e0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x10);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00862ed0(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined ** FUN_00863150(void)

{
  return &PTR_u_wxFileSystemHandler_03236394;
}



undefined ** FUN_00863160(void)

{
  return &PTR_u_wxFileSystem_032363d0;
}



undefined ** FUN_00863170(void)

{
  return &PTR_u_wxFSFile_032363e8;
}



undefined ** FUN_00863180(void)

{
  return &PTR_u_wxFileSystemModule_03236424;
}



undefined8 * __thiscall FUN_00863190(undefined8 *param_1_00,int param_1)

{
  undefined8 uVar1;
  
  uVar1 = __allmul(param_1,param_1 >> 0x1f,*(undefined4 *)param_1_00,
                   *(undefined4 *)((int)param_1_00 + 4));
  *param_1_00 = uVar1;
  return param_1_00;
}



void FUN_008631c0(undefined4 param_1)

{
  undefined4 uVar1;
  
  if (DAT_032bdb14 == 0) {
    FUN_0086ad60(param_1);
    return;
  }
  uVar1 = FUN_0086aef0(0);
  FUN_0086ae40(uVar1,param_1);
  return;
}



uint FUN_00863200(uint param_1)

{
  char cVar1;
  
  cVar1 = FUN_0086b0c0(param_1);
  return -(uint)(cVar1 != '\0') & param_1;
}



void FUN_00863220(void)

{
  int iVar1;
  
  iVar1 = DAT_032bdb1c;
  if (DAT_032bdb1c != 0) {
    do {
      if (*(int **)(iVar1 + 8) != (int *)0x0) {
        (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
      }
      iVar1 = *(int *)(iVar1 + 0xc);
    } while (iVar1 != 0);
  }
  FUN_0086b130();
  return;
}



void __fastcall FUN_00863260(int param_1)

{
  int *piVar1;
  char cVar2;
  
  piVar1 = *(int **)(param_1 + 0x28);
  cVar2 = FUN_0086b0c0(piVar1);
  if ((cVar2 != '\0') && (piVar1 != (int *)0x0)) {
    (**(code **)(*piVar1 + 4))(1);
  }
  FUN_00863220();
  return;
}



undefined4 * FUN_00863290(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxFileSystemModule::vftable;
    puVar2[10] = 0;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 __fastcall FUN_00863310(int param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  puVar1 = (undefined4 *)operator_new(8);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    *puVar1 = wxLocalFSHandler::vftable;
  }
  *(undefined4 **)(param_1 + 0x28) = puVar1;
  if (DAT_032bdb14 == 0) {
    FUN_0086ad60(puVar1);
    return 1;
  }
  uVar2 = FUN_0086aef0(0);
  FUN_0086ae40(uVar2,puVar1);
  return 1;
}



undefined2 __fastcall FUN_00863370(int *param_1)

{
  int iVar1;
  int iVar2;
  
  if (*param_1 != -4) {
    if (*param_1 == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *param_1;
    if (*(uint *)(iVar1 + 0x18) < 8) {
      iVar2 = iVar1 + 4;
    }
    else {
      iVar2 = *(int *)(iVar1 + 4);
    }
    if ((uint)(iVar2 + *(int *)(iVar1 + 0x14) * 2) <= (uint)param_1[1]) {
      FUN_00a3fb10();
    }
  }
  return *(undefined2 *)param_1[1];
}



undefined4 * __fastcall FUN_008633b0(undefined4 *param_1)

{
  uint uVar1;
  size_t _Count;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc89ce;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1[1] = 0;
  *param_1 = wxFileSystem::vftable;
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  param_1[9] = 0;
  param_1[0x11] = 7;
  param_1[0x10] = 0;
  *(undefined2 *)(param_1 + 0xc) = 0;
  param_1[0x12] = 0;
  local_4 = 2;
  _Count = FUN_00893ca0(100,uVar1);
  param_1[0x16] = _Count;
  param_1[0x17] = 0;
  pvVar2 = _calloc(_Count,4);
  param_1[0x15] = pvVar2;
  param_1[0x14] = 0;
  ExceptionList = local_c;
  return param_1;
}



int __fastcall FUN_00863450(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8a35;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(undefined4 *)(param_1 + 0x3c) = 7;
  *(undefined4 *)(param_1 + 0x38) = 0;
  *(undefined2 *)(param_1 + 0x28) = 0;
  *(undefined4 *)(param_1 + 0x40) = 0;
  *(undefined4 *)(param_1 + 0x60) = 7;
  *(undefined4 *)(param_1 + 0x5c) = 0;
  *(undefined2 *)(param_1 + 0x4c) = 0;
  *(undefined4 *)(param_1 + 100) = 0;
  *(undefined4 *)(param_1 + 0x84) = 7;
  *(undefined4 *)(param_1 + 0x80) = 0;
  *(undefined2 *)(param_1 + 0x70) = 0;
  *(undefined4 *)(param_1 + 0x88) = 0;
  *(undefined4 *)(param_1 + 0xa8) = 7;
  *(undefined4 *)(param_1 + 0xa4) = 0;
  *(undefined2 *)(param_1 + 0x94) = 0;
  *(undefined4 *)(param_1 + 0xac) = 0;
  *(undefined4 *)(param_1 + 0xcc) = 7;
  *(undefined4 *)(param_1 + 200) = 0;
  *(undefined2 *)(param_1 + 0xb8) = 0;
  *(undefined4 *)(param_1 + 0xd0) = 0;
  local_4 = 5;
  FUN_00853ce0(0);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00863520(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8a95;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 5;
  FUN_00853f30(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  _free(*(void **)(param_1 + 0xd0));
  if (7 < *(uint *)(param_1 + 0xcc)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xb8));
  }
  *(undefined4 *)(param_1 + 0xcc) = 7;
  *(undefined4 *)(param_1 + 200) = 0;
  *(undefined2 *)(param_1 + 0xb8) = 0;
  _free(*(void **)(param_1 + 0xac));
  if (7 < *(uint *)(param_1 + 0xa8)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x94));
  }
  *(undefined4 *)(param_1 + 0xa8) = 7;
  *(undefined4 *)(param_1 + 0xa4) = 0;
  *(undefined2 *)(param_1 + 0x94) = 0;
  _free(*(void **)(param_1 + 0x88));
  if (7 < *(uint *)(param_1 + 0x84)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x70));
  }
  *(undefined4 *)(param_1 + 0x84) = 7;
  *(undefined4 *)(param_1 + 0x80) = 0;
  *(undefined2 *)(param_1 + 0x70) = 0;
  _free(*(void **)(param_1 + 100));
  if (7 < *(uint *)(param_1 + 0x60)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x4c));
  }
  *(undefined4 *)(param_1 + 0x60) = 7;
  *(undefined4 *)(param_1 + 0x5c) = 0;
  *(undefined2 *)(param_1 + 0x4c) = 0;
  _free(*(void **)(param_1 + 0x40));
  if (7 < *(uint *)(param_1 + 0x3c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x28));
  }
  *(undefined4 *)(param_1 + 0x3c) = 7;
  *(undefined4 *)(param_1 + 0x38) = 0;
  *(undefined2 *)(param_1 + 0x28) = 0;
  _free(*(void **)(param_1 + 0x1c));
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(100);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_008633b0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_00863720(undefined4 *param_1)

{
  void **ppvVar1;
  uint uVar2;
  int *piVar3;
  uint uVar4;
  uint uVar5;
  int *piVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_c = ExceptionList;
  puStack_8 = &LAB_00bc8ad9;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *param_1 = wxFileSystem::vftable;
  ppvVar1 = (void **)(param_1 + 0x15);
  uVar5 = 0;
  local_4 = 3;
  if (param_1[0x16] != 0) {
    do {
      if (*(int *)(param_1[0x15] + uVar5 * 4) != 0) {
        piVar6 = *(int **)(param_1[0x15] + uVar5 * 4);
        goto joined_r0x00863785;
      }
      uVar5 = uVar5 + 1;
    } while (uVar5 < (uint)param_1[0x16]);
  }
  piVar6 = (int *)0x0;
joined_r0x00863785:
  do {
    do {
      piVar3 = piVar6;
      if (piVar3 == (int *)0x0) {
        FUN_00893cf0(param_1[0x16],*ppvVar1,&LAB_00981b50);
        param_1[0x17] = 0;
        local_4 = CONCAT31(local_4._1_3_,2);
        FUN_00893cf0(param_1[0x16],*ppvVar1,&LAB_00981b50);
        param_1[0x17] = 0;
        _free(*ppvVar1);
        _free((void *)param_1[0x12]);
        if (7 < (uint)param_1[0x11]) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(param_1[0xc]);
        }
        param_1[0x11] = 7;
        param_1[0x10] = 0;
        *(undefined2 *)(param_1 + 0xc) = 0;
        _free((void *)param_1[9]);
        if (7 < (uint)param_1[8]) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(param_1[3]);
        }
        param_1[8] = 7;
        param_1[7] = 0;
        *(undefined2 *)(param_1 + 3) = 0;
        local_4 = 0xffffffff;
        *param_1 = wxObject::vftable;
        FUN_0083e850();
        ExceptionList = local_c;
        return;
      }
      if ((int *)piVar3[2] != (int *)0x0) {
        (**(code **)(*(int *)piVar3[2] + 4))(1,uVar4);
      }
      piVar6 = (int *)*piVar3;
    } while ((int *)*piVar3 != (int *)0x0);
    uVar2 = param_1[0x16];
    uVar5 = (uint)piVar3[1] % uVar2 + 1;
    if (uVar5 < uVar2) {
      piVar6 = (int *)((int)*ppvVar1 + uVar5 * 4);
      do {
        if (*piVar6 != 0) {
          piVar6 = *(int **)((int)*ppvVar1 + uVar5 * 4);
          goto joined_r0x00863785;
        }
        uVar5 = uVar5 + 1;
        piVar6 = piVar6 + 1;
      } while (uVar5 < uVar2);
    }
    piVar6 = (int *)0x0;
  } while( true );
}



int __thiscall
FUN_008638b0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8,undefined4 param_9)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8b53;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x3c) = 7;
  *(undefined4 *)(param_1_00 + 0x38) = 0;
  *(undefined2 *)(param_1_00 + 0x28) = 0;
  *(undefined4 *)(param_1_00 + 0x40) = 0;
  *(undefined4 *)(param_1_00 + 0x60) = 7;
  *(undefined4 *)(param_1_00 + 0x5c) = 0;
  *(undefined2 *)(param_1_00 + 0x4c) = 0;
  *(undefined4 *)(param_1_00 + 100) = 0;
  *(undefined4 *)(param_1_00 + 0x84) = 7;
  *(undefined4 *)(param_1_00 + 0x80) = 0;
  *(undefined2 *)(param_1_00 + 0x70) = 0;
  *(undefined4 *)(param_1_00 + 0x88) = 0;
  *(undefined4 *)(param_1_00 + 0xa8) = 7;
  *(undefined4 *)(param_1_00 + 0xa4) = 0;
  *(undefined2 *)(param_1_00 + 0x94) = 0;
  *(undefined4 *)(param_1_00 + 0xac) = 0;
  *(undefined4 *)(param_1_00 + 0xcc) = 7;
  *(undefined4 *)(param_1_00 + 200) = 0;
  *(undefined2 *)(param_1_00 + 0xb8) = 0;
  *(undefined4 *)(param_1_00 + 0xd0) = 0;
  local_4._0_1_ = 5;
  local_4._1_3_ = 0;
  FUN_00853ce0(0);
  local_4 = CONCAT31(local_4._1_3_,6);
  FUN_00840920(param_9,0,5);
  FUN_0083e8f0(param_8,0,4);
  FUN_0083e8f0(param_7,0,3);
  FUN_0083e8f0(param_6,0,2);
  FUN_0083e8f0(param_5,0,1);
  FUN_008a2f50(param_1_00,param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9);
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall
FUN_00863a10(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8b53;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x3c) = 7;
  *(undefined4 *)(param_1_00 + 0x38) = 0;
  *(undefined2 *)(param_1_00 + 0x28) = 0;
  *(undefined4 *)(param_1_00 + 0x40) = 0;
  *(undefined4 *)(param_1_00 + 0x60) = 7;
  *(undefined4 *)(param_1_00 + 0x5c) = 0;
  *(undefined2 *)(param_1_00 + 0x4c) = 0;
  *(undefined4 *)(param_1_00 + 100) = 0;
  *(undefined4 *)(param_1_00 + 0x84) = 7;
  *(undefined4 *)(param_1_00 + 0x80) = 0;
  *(undefined2 *)(param_1_00 + 0x70) = 0;
  *(undefined4 *)(param_1_00 + 0x88) = 0;
  *(undefined4 *)(param_1_00 + 0xa8) = 7;
  *(undefined4 *)(param_1_00 + 0xa4) = 0;
  *(undefined2 *)(param_1_00 + 0x94) = 0;
  *(undefined4 *)(param_1_00 + 0xac) = 0;
  *(undefined4 *)(param_1_00 + 0xcc) = 7;
  *(undefined4 *)(param_1_00 + 200) = 0;
  *(undefined2 *)(param_1_00 + 0xb8) = 0;
  *(undefined4 *)(param_1_00 + 0xd0) = 0;
  local_4._0_1_ = 5;
  local_4._1_3_ = 0;
  FUN_00853ce0(0);
  local_4 = CONCAT31(local_4._1_3_,6);
  FUN_00840920(param_7,0,3);
  FUN_0083e8f0(param_6,0,2);
  FUN_0083e8f0(param_5,0,1);
  FUN_008a2f50(param_1_00,param_1,param_2,param_3,param_4,param_5,param_6,param_7,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00863b50(undefined4 param_1_00,byte param_1)

{
  FUN_00863720();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Removing unreachable block (ram,0x00863c02)

int __thiscall FUN_00863b70(undefined4 param_1_00,int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FID_conflict_assign(param_1_00,0,0xffffffff);
  local_4 = 0;
  uVar2 = FUN_008510e0(uVar1);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free((void *)0x0);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall
FUN_00863c30(undefined4 *param_1_00,undefined4 param_1,undefined4 *param_2,undefined4 param_3,
            undefined4 *param_4,undefined4 param_5,undefined4 param_6)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8ba1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxFSFile::vftable;
  param_1_00[9] = 7;
  param_1_00[8] = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  param_1_00[10] = 0;
  param_1_00[0x12] = 7;
  param_1_00[0x11] = 0;
  *(undefined2 *)(param_1_00 + 0xd) = 0;
  param_1_00[0x13] = 0;
  param_1_00[0x1b] = 7;
  param_1_00[0x1a] = 0;
  *(undefined2 *)(param_1_00 + 0x16) = 0;
  param_1_00[0x1c] = 0;
  param_1_00[0x1e] = 0;
  param_1_00[0x1f] = 0x80000000;
  local_4._0_1_ = 3;
  local_4._1_3_ = 0;
  param_1_00[2] = param_1;
  if (param_1_00 + 3 != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  puVar2 = (undefined4 *)FUN_00863b70(local_30);
  local_4._0_1_ = 4;
  if (param_1_00 + 0xc != puVar2) {
    FID_conflict_assign(puVar2,0,0xffffffff);
  }
  local_4 = CONCAT31(local_4._1_3_,3);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  if (param_1_00 + 0x15 != param_4) {
    FID_conflict_assign(param_4,0,0xffffffff);
  }
  param_1_00[0x1e] = param_5;
  param_1_00[0x1f] = param_6;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00863d50(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8be9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxFSFile::vftable;
  local_4 = 3;
  if ((int *)param_1[2] != (int *)0x0) {
    (**(code **)(*(int *)param_1[2] + 4))(1,uVar1);
  }
  _free((void *)param_1[0x1c]);
  if (7 < (uint)param_1[0x1b]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x16]);
  }
  param_1[0x1b] = 7;
  param_1[0x1a] = 0;
  *(undefined2 *)(param_1 + 0x16) = 0;
  _free((void *)param_1[0x13]);
  if (7 < (uint)param_1[0x12]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xd]);
  }
  param_1[0x12] = 7;
  param_1[0x11] = 0;
  *(undefined2 *)(param_1 + 0xd) = 0;
  _free((void *)param_1[10]);
  if (7 < (uint)param_1[9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[4]);
  }
  param_1[9] = 7;
  param_1[8] = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00863e60(undefined4 param_1_00,byte param_1)

{
  FUN_00863d50();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00863e80(int param_1,int param_2)

{
  bool bVar1;
  int iVar2;
  void *pvVar3;
  int iVar4;
  short *psVar5;
  short *psVar6;
  int iVar7;
  int local_40;
  int local_3c;
  int local_38;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bddcd8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_40;
  ExceptionList = &local_c;
  local_40 = 0;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  local_40 = *(int *)(param_2 + 0x14);
  bVar1 = false;
  iVar7 = local_40 + -1;
  if (-1 < iVar7) {
    do {
      FUN_0081feb2(&local_38,iVar7);
      if ((local_38 == 0x23) && (iVar2 = local_40, bVar1)) goto joined_r0x00863f8c;
      FUN_0081feb2(&local_3c,iVar7);
      if ((local_3c == 0x3a) && (iVar7 != 1)) {
        bVar1 = true;
      }
      iVar7 = iVar7 + -1;
    } while (-1 < iVar7);
    iVar2 = local_40;
    if (bVar1) {
joined_r0x00863f8c:
      while ((iVar4 = local_40, iVar7 = iVar7 + 1, bVar1 = iVar7 < local_40, local_40 = iVar2, bVar1
             && (FUN_0081feb2(&local_40,iVar7), local_40 != 0x3a))) {
        FUN_0081feb2(&local_3c,iVar7);
        FID_conflict_append(1,local_3c);
        iVar2 = local_40;
        local_40 = iVar4;
      }
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(local_34,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      _free(local_18);
      pvVar3 = ExceptionList;
      ExceptionList = local_c;
      goto joined_r0x00863ffc;
    }
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  psVar5 = &DAT_00d29118;
  do {
    psVar6 = psVar5;
    psVar5 = psVar6 + 1;
  } while (*psVar6 != 0);
  FID_conflict_assign(&DAT_00d29118,(int)(psVar6 + -0x69488c) >> 1);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(local_18);
  pvVar3 = ExceptionList;
  ExceptionList = local_c;
joined_r0x00863ffc:
  local_c = ExceptionList;
  if (local_1c < 8) {
    ___security_check_cookie_4();
    return;
  }
  ExceptionList = pvVar3;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_30);
}



int FUN_00864030(int param_1,int param_2)

{
  short sVar1;
  int iVar2;
  bool bVar3;
  short *psVar4;
  short *psVar5;
  int local_4;
  
  local_4 = 0;
  iVar2 = *(int *)(param_2 + 0x14);
  bVar3 = false;
  do {
    while( true ) {
      iVar2 = iVar2 + -1;
      if (iVar2 < 0) {
        psVar5 = (short *)PTR_DAT_03236318;
        if ((short *)PTR_DAT_03236318 == (short *)0x0) {
          psVar5 = &DAT_00fae9c8;
        }
        *(undefined4 *)(param_1 + 0x18) = 7;
        *(undefined4 *)(param_1 + 0x14) = 0;
        *(undefined2 *)(param_1 + 4) = 0;
        psVar4 = psVar5;
        do {
          sVar1 = *psVar4;
          psVar4 = psVar4 + 1;
        } while (sVar1 != 0);
        FID_conflict_assign(psVar5,(int)psVar4 - (int)(psVar5 + 1) >> 1);
        *(undefined4 *)(param_1 + 0x1c) = 0;
        return param_1;
      }
      FUN_0081feb2(&param_2,iVar2);
      if ((param_2 != 0x3a) || (iVar2 == 1)) break;
      bVar3 = true;
    }
  } while ((!bVar3) || (FUN_0081feb2(&local_4,iVar2), local_4 != 0x23));
  FUN_008527e0(param_1,iVar2);
  return param_1;
}



int FUN_008640f0(int param_1,int param_2)

{
  short sVar1;
  short *psVar2;
  short *psVar3;
  int iVar4;
  int iVar5;
  int local_8;
  int local_4;
  
  local_4 = 0;
  iVar5 = *(int *)(param_2 + 0x14) + -1;
  iVar4 = *(int *)(param_2 + 0x14) + 1;
  if (-1 < iVar5) {
    do {
      FUN_0081feb2(&param_2,iVar5);
      if (((param_2 == 0x3a) && (iVar5 != 1)) &&
         (FUN_0081feb2(&local_8,iVar5 + -2), local_8 != 0x3a)) break;
      FUN_0081feb2(&local_4,iVar5);
      if (local_4 == 0x23) {
        iVar4 = iVar5 + 1;
      }
      iVar5 = iVar5 + -1;
    } while (-1 < iVar5);
    if (iVar5 == 0) {
      psVar3 = (short *)PTR_DAT_03236318;
      if (PTR_DAT_03236318 == (undefined *)0x0) {
        psVar3 = &DAT_00fae9c8;
      }
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      psVar2 = psVar3;
      do {
        sVar1 = *psVar2;
        psVar2 = psVar2 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign(psVar3,(int)psVar2 - (int)(psVar3 + 1) >> 1);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      return param_1;
    }
  }
  FUN_00852560(param_1,iVar5 + 1,(iVar4 - iVar5) + -2);
  return param_1;
}



int FUN_008641f0(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  short sVar3;
  short *psVar4;
  short *psVar5;
  
  iVar1 = *(int *)(param_2 + 0x14);
  iVar2 = iVar1;
  do {
    iVar2 = iVar2 + -1;
    if (iVar2 < 0) {
      psVar5 = (short *)PTR_DAT_03236318;
      if ((short *)PTR_DAT_03236318 == (short *)0x0) {
        psVar5 = &DAT_00fae9c8;
      }
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      psVar4 = psVar5;
      do {
        sVar3 = *psVar4;
        psVar4 = psVar4 + 1;
      } while (sVar3 != 0);
      goto LAB_00864271;
    }
    FUN_0081feb2(&param_2,iVar2);
    sVar3 = (short)param_2;
    if (sVar3 == 0x23) {
      FUN_00852680(param_1,(iVar1 - iVar2) + -1);
      return param_1;
    }
  } while (((sVar3 != 0x2f) && (sVar3 != 0x5c)) && (sVar3 != 0x3a));
  psVar5 = (short *)PTR_DAT_03236318;
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    psVar5 = &DAT_00fae9c8;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  psVar4 = psVar5;
  do {
    sVar3 = *psVar4;
    psVar4 = psVar4 + 1;
  } while (sVar3 != 0);
LAB_00864271:
  FID_conflict_assign(psVar5,(int)psVar4 - (int)(psVar5 + 1) >> 1);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



undefined4 FUN_008642e0(undefined4 param_1)

{
  FUN_004325b6(PTR_DAT_03236318);
  return param_1;
}



undefined4 FUN_00864310(undefined4 param_1)

{
  FUN_004325b6(PTR_DAT_03236318);
  return param_1;
}



bool FUN_00864340(undefined4 param_1)

{
  int iVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00863e80(local_30,param_1,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  local_4 = 0;
  iVar1 = FUN_008507a0(&DAT_00d29118);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return iVar1 == 0;
}



void FUN_008643d0(int param_1,undefined4 param_2)

{
  undefined2 *puVar1;
  void *pvVar2;
  uint uVar3;
  int *piVar4;
  undefined *puVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int local_a8;
  int local_a4;
  int local_a0;
  undefined4 local_9c;
  int local_98;
  int local_94;
  int local_90 [2];
  int local_88;
  int local_84;
  int local_80;
  undefined local_7c [4];
  undefined4 local_78;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc8c30;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_a8;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff48;
  ExceptionList = &local_c;
  iVar9 = 0;
  local_90[0] = 0;
  local_30 = local_30 & 0xffff0000;
  local_a4 = param_1;
  local_1c = 7;
  local_20 = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  local_18 = (void *)0x0;
  local_40 = 7;
  local_44 = 0;
  local_54 = (uint)local_54._2_2_ << 0x10;
  local_3c = (void *)0x0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  local_a0 = local_20;
  iVar7 = local_20;
  if (0 < local_20) {
    do {
      FUN_0081feb2(&local_a8,iVar9);
      if (local_a8 == 0x5c) {
        piVar4 = (int *)FUN_0081b542(local_90,iVar9);
        iVar7 = *piVar4;
        puVar1 = (undefined2 *)piVar4[1];
        if (iVar7 != -4) {
          if (iVar7 == 0) {
            FUN_00a3fb10(uVar3);
          }
          if (*(uint *)(iVar7 + 0x18) < 8) {
            iVar6 = iVar7 + 4;
          }
          else {
            iVar6 = *(int *)(iVar7 + 4);
          }
          if ((undefined2 *)(iVar6 + *(int *)(iVar7 + 0x14) * 2) <= puVar1) {
            FUN_00a3fb10();
          }
        }
        *puVar1 = 0x2f;
        param_1 = local_a4;
        iVar7 = local_a0;
      }
      iVar9 = iVar9 + 1;
    } while (iVar9 < iVar7);
  }
  FUN_008527e0(local_7c,2);
  local_4._0_1_ = 2;
  iVar9 = FUN_008507a0(&DAT_00d29124);
  local_4._0_1_ = 1;
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  if (iVar9 == 0) {
    puVar5 = (undefined *)FUN_00852560(local_7c,2,0xffffffff);
    local_4._0_1_ = 3;
    if (local_34 != puVar5) {
      FID_conflict_assign(puVar5,0,0xffffffff);
    }
    local_4._0_1_ = 1;
    _free(local_60);
    if (7 < local_64) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_78);
    }
    iVar7 = iVar7 + -2;
    local_a0 = iVar7;
  }
  if (iVar7 < 3) {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    _free(local_18);
    pvVar2 = ExceptionList;
    ExceptionList = local_c;
  }
  else {
    FUN_0081feb2(&local_a8,1);
    FUN_0081feb2(&local_a4,0);
    FID_conflict_append(1,local_a4);
    FID_conflict_append(1,local_a8);
    iVar9 = 2;
    if (2 < iVar7) {
      do {
        FUN_0081feb2(&local_a4,iVar9);
        if ((local_a4 != 0x2f) && (FUN_0081feb2(&local_a8,iVar9), local_a8 != 0x2e)) {
          if (iVar9 < iVar7) {
            iVar6 = iVar9 + -2;
            goto LAB_00864711;
          }
          break;
        }
        FUN_0081feb2(&local_9c,iVar9);
        FID_conflict_append(1,local_9c);
        iVar9 = iVar9 + 1;
      } while (iVar9 < iVar7);
    }
LAB_00864840:
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_58,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    _free(local_18);
    pvVar2 = ExceptionList;
    ExceptionList = local_c;
  }
  local_c = ExceptionList;
  if (7 < local_1c) {
    ExceptionList = pvVar2;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ___security_check_cookie_4();
  return;
LAB_00864711:
  FUN_0081feb2(&local_9c,iVar9);
  FID_conflict_append(1,local_9c);
  FUN_0081feb2(&local_a4,iVar9);
  if (((local_a4 == 0x2f) && (FUN_0081feb2(&local_a8,iVar6 + 1), local_a8 == 0x2e)) &&
     (FUN_0081feb2(&local_88,iVar6), local_88 == 0x2e)) {
    for (iVar8 = local_44 + -2; iVar7 = local_a0, -1 < iVar8; iVar8 = iVar8 + -1) {
      FUN_0081feb2(&local_80,iVar8);
      if ((local_80 == 0x2f) || (FUN_0081feb2(&local_98,iVar8), local_98 == 0x3a)) {
        iVar7 = local_a0;
        if ((-1 < iVar8) && (FUN_0081feb2(&local_84,iVar8), iVar7 = local_a0, local_84 != 0x3a))
        goto joined_r0x008647f0;
        break;
      }
    }
  }
  goto LAB_00864832;
  while (FUN_0081feb2(local_90,iVar8), local_90[0] != 0x3a) {
joined_r0x008647f0:
    iVar7 = iVar8;
    iVar8 = iVar7 + -1;
    if ((iVar8 < 0) || (FUN_0081feb2(&local_94,iVar8), local_94 == 0x2f)) break;
  }
  FUN_00851a60(iVar7);
  iVar7 = local_a0;
LAB_00864832:
  iVar9 = iVar9 + 1;
  iVar6 = iVar6 + 1;
  if (iVar7 <= iVar9) goto LAB_00864840;
  goto LAB_00864711;
}



void __thiscall FUN_008648f0(int param_1_00,undefined4 param_1,char param_2)

{
  int iVar1;
  undefined4 *puVar2;
  short sVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  char cVar7;
  int iVar8;
  int *piVar9;
  int iVar10;
  undefined4 *puVar11;
  undefined4 *puVar12;
  short *psVar13;
  undefined4 *puVar14;
  undefined4 uVar15;
  undefined4 local_58;
  undefined4 local_54;
  undefined local_50 [8];
  undefined local_48 [8];
  undefined local_40 [4];
  undefined4 *local_3c;
  undefined local_38 [8];
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc8c68;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar8 = FUN_008643d0(local_30,param_1,DAT_0323f878 ^ (uint)&stack0xffffff94);
  iVar1 = param_1_00 + 8;
  local_4 = 0;
  if (iVar1 != iVar8) {
    FID_conflict_assign(iVar8,0,0xffffffff);
  }
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (param_2 == '\0') {
    iVar8 = *(int *)(param_1_00 + 0x1c);
    do {
      while( true ) {
        iVar6 = iVar8;
        iVar8 = iVar6 + -1;
        if (iVar8 < 0) goto LAB_00864b03;
        piVar9 = (int *)FUN_0081b542(local_50,iVar8);
        iVar4 = *piVar9;
        psVar13 = (short *)piVar9[1];
        if (iVar4 != -4) {
          if (iVar4 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar4 + 0x18) < 8) {
            iVar10 = iVar4 + 4;
          }
          else {
            iVar10 = *(int *)(iVar4 + 4);
          }
          if ((short *)(iVar10 + *(int *)(iVar4 + 0x14) * 2) <= psVar13) {
            FUN_00a3fb10();
          }
        }
        if (*psVar13 != 0x2f) break;
        if (iVar8 < 2) goto LAB_00864af6;
        piVar9 = (int *)FUN_0081b542(local_48,iVar6 + -2);
        iVar4 = *piVar9;
        psVar13 = (short *)piVar9[1];
        if (iVar4 != -4) {
          if (iVar4 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar4 + 0x18) < 8) {
            iVar10 = iVar4 + 4;
          }
          else {
            iVar10 = *(int *)(iVar4 + 4);
          }
          if ((short *)(iVar10 + *(int *)(iVar4 + 0x14) * 2) <= psVar13) {
            FUN_00a3fb10();
          }
        }
        if (*psVar13 != 0x2f) goto LAB_00864af6;
        puVar11 = (undefined4 *)FUN_0081b542(local_40,iVar6 + -3);
        local_58 = *puVar11;
        local_54 = puVar11[1];
        cVar7 = FUN_00820040(0x3a);
        if (cVar7 == '\0') goto LAB_00864af6;
        iVar8 = iVar6 + -3;
      }
      piVar9 = (int *)FUN_0081b542(local_38,iVar8);
      iVar4 = *piVar9;
      psVar13 = (short *)piVar9[1];
      if (iVar4 != -4) {
        if (iVar4 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar4 + 0x18) < 8) {
          iVar10 = iVar4 + 4;
        }
        else {
          iVar10 = *(int *)(iVar4 + 4);
        }
        if ((short *)(iVar10 + *(int *)(iVar4 + 0x14) * 2) <= psVar13) {
          FUN_00a3fb10();
        }
      }
    } while (*psVar13 != 0x3a);
LAB_00864af6:
    if (iVar8 == -1) {
LAB_00864b03:
      _param_2 = 0;
      iVar8 = 0;
      if (0 < *(int *)(param_1_00 + 0x1c)) {
        do {
          uVar5 = *(uint *)(param_1_00 + 0x20);
          puVar11 = (undefined4 *)(param_1_00 + 0xc);
          puVar14 = puVar11;
          if (7 < uVar5) {
            puVar14 = (undefined4 *)*puVar11;
          }
          if (puVar14 == (undefined4 *)0x0) {
LAB_00864b4b:
            FUN_00a3fb10();
          }
          else {
            puVar12 = puVar11;
            if (7 < uVar5) {
              puVar12 = (undefined4 *)*puVar11;
            }
            if (puVar14 < puVar12) goto LAB_00864b4b;
            puVar12 = puVar11;
            if (7 < uVar5) {
              puVar12 = (undefined4 *)*puVar11;
            }
            if ((undefined4 *)((int)puVar12 + *(int *)(param_1_00 + 0x1c) * 2) < puVar14)
            goto LAB_00864b4b;
          }
          local_3c = puVar14;
          if (iVar1 != -4) {
            puVar12 = puVar11;
            if (7 < *(uint *)(param_1_00 + 0x20)) {
              puVar12 = (undefined4 *)*puVar11;
            }
            puVar2 = (undefined4 *)((int)puVar14 + _param_2 * 2);
            if (puVar2 <= (undefined4 *)((int)puVar12 + *(int *)(param_1_00 + 0x1c) * 2)) {
              if (7 < *(uint *)(param_1_00 + 0x20)) {
                puVar11 = (undefined4 *)*puVar11;
              }
              if (puVar11 <= puVar2) goto LAB_00864b88;
            }
            FUN_00a3fb10();
          }
LAB_00864b88:
          psVar13 = (short *)((int)puVar14 + _param_2 * 2);
          if (iVar1 != -4) {
            if (param_1_00 == -8) {
              FUN_00a3fb10();
            }
            if (*(uint *)(param_1_00 + 0x20) < 8) {
              iVar8 = param_1_00 + 0xc;
            }
            else {
              iVar8 = *(int *)(param_1_00 + 0xc);
            }
            if ((short *)(iVar8 + *(int *)(param_1_00 + 0x1c) * 2) <= psVar13) {
              FUN_00a3fb10();
            }
          }
          if (*psVar13 == 0x3a) {
            FUN_00851a60(_param_2 + 1);
            iVar8 = _param_2;
            break;
          }
          iVar8 = _param_2 + 1;
          _param_2 = iVar8;
        } while (iVar8 < *(int *)(param_1_00 + 0x1c));
      }
      if (iVar8 == *(int *)(param_1_00 + 0x1c)) {
        if (PTR_DAT_03236318 == (undefined *)0x0) {
          FUN_00432156();
        }
        else {
          psVar13 = (short *)PTR_DAT_03236318;
          do {
            sVar3 = *psVar13;
            psVar13 = psVar13 + 1;
          } while (sVar3 != 0);
          FID_conflict_assign(PTR_DAT_03236318,(int)psVar13 - (int)(PTR_DAT_03236318 + 2) >> 1);
        }
      }
    }
    else {
      FUN_00851a60(iVar6);
    }
  }
  else if (*(int *)(param_1_00 + 0x1c) != 0) {
    uVar15 = 0x2f;
    FUN_0081b3d8(&local_58);
    cVar7 = FUN_0081b52b(uVar15);
    if (cVar7 != '\0') {
      uVar15 = 0x3a;
      FUN_0081b3d8(&local_58);
      cVar7 = FUN_0081b52b(uVar15);
      if (cVar7 != '\0') {
        FID_conflict_append(1,0x2f);
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00864c40(void *param_1_00,undefined4 param_1,byte param_2)

{
  short sVar1;
  void *pvVar2;
  char cVar3;
  int *piVar4;
  short *psVar5;
  undefined4 uVar6;
  uint uVar7;
  undefined4 *puVar8;
  int iVar9;
  uint uVar10;
  undefined *puVar11;
  short sVar12;
  int iVar13;
  int local_9c;
  undefined *local_98;
  void *local_94;
  uint local_90;
  int local_8c [2];
  uint local_84;
  undefined4 uStack_80;
  undefined local_7c [4];
  uint uStack_78;
  undefined4 uStack_68;
  uint uStack_64;
  void *pvStack_60;
  undefined auStack_58 [4];
  uint uStack_54;
  undefined4 uStack_44;
  uint uStack_40;
  void *pvStack_3c;
  undefined local_34 [4];
  undefined4 uStack_30;
  undefined *local_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4._0_1_ = 0xff;
  local_4._1_3_ = 0xffffff;
  puStack_8 = &LAB_00bc8cff;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_9c;
  ExceptionList = &local_c;
  puVar11 = (undefined *)0x0;
  local_90 = 0;
  local_94 = param_1_00;
  if ((param_2 & 1) == 0) goto LAB_008651bb;
  FUN_008643d0(local_34,param_1,DAT_0323f878 ^ (uint)&stack0xffffff54);
  sVar12 = 0;
  local_4._0_1_ = 0;
  local_4._1_3_ = 0;
  local_9c = 0;
  local_98 = local_20;
  sVar1 = 0;
  if (local_20 != (undefined *)0x0) {
    do {
      sVar12 = sVar1;
      piVar4 = (int *)FUN_0081b542(&local_84,puVar11);
      iVar13 = *piVar4;
      psVar5 = (short *)piVar4[1];
      if (iVar13 != -4) {
        if (iVar13 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar13 + 0x18) < 8) {
          iVar9 = iVar13 + 4;
        }
        else {
          iVar9 = *(int *)(iVar13 + 4);
        }
        if ((short *)(iVar9 + *(int *)(iVar13 + 0x14) * 2) <= psVar5) {
          FUN_00a3fb10();
        }
      }
      sVar1 = *psVar5;
      if (((sVar1 == 0x23) || (sVar1 == 0x2f)) || (sVar1 == 0x3a)) {
        piVar4 = (int *)FUN_0081b542(local_8c,puVar11);
        iVar13 = *piVar4;
        psVar5 = (short *)piVar4[1];
        if (iVar13 != -4) {
          if (iVar13 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar13 + 0x18) < 8) {
            iVar9 = iVar13 + 4;
          }
          else {
            iVar9 = *(int *)(iVar13 + 4);
          }
          if ((short *)(iVar9 + *(int *)(iVar13 + 0x14) * 2) <= psVar5) {
            FUN_00a3fb10();
          }
        }
        sVar12 = *psVar5;
        if (sVar12 != 0) break;
      }
      puVar11 = puVar11 + 1;
      sVar1 = sVar12;
    } while (puVar11 < local_98);
  }
  local_98 = (undefined *)((int)local_94 + 0x2c);
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    FUN_00432156();
  }
  else {
    psVar5 = (short *)PTR_DAT_03236318;
    do {
      sVar1 = *psVar5;
      psVar5 = psVar5 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(PTR_DAT_03236318,(int)psVar5 - (int)(PTR_DAT_03236318 + 2) >> 1);
  }
  if ((sVar12 == 0x3a) || (DAT_032bdb1c == 0)) {
LAB_00864f86:
    pvVar2 = local_94;
    local_8c[0] = DAT_032bdb1c;
    iVar13 = local_9c;
    if (DAT_032bdb1c != 0) {
      do {
        piVar4 = *(int **)(local_8c[0] + 8);
        cVar3 = (**(code **)(*piVar4 + 0x10))(local_34);
        if (cVar3 != '\0') {
          uVar7 = (**(code **)*piVar4)();
          if (*(int *)(uVar7 + 8) != 0) {
            uVar10 = uVar7 % *(uint *)((int)pvVar2 + 0x58);
            uStack_80 = 0;
            for (puVar8 = *(undefined4 **)(*(int *)((int)pvVar2 + 0x54) + uVar10 * 4);
                local_84 = uVar7, puVar8 != (undefined4 *)0x0; puVar8 = (undefined4 *)*puVar8) {
              if (puVar8[1] == uVar7) goto LAB_00864ffa;
            }
            puVar8 = (undefined4 *)FUN_00911610(&local_84,uVar10);
LAB_00864ffa:
            if (puVar8[2] == 0) {
              if (*(code **)(uVar7 + 8) != (code *)0x0) {
                piVar4 = (int *)(**(code **)(uVar7 + 8))();
                puVar8[2] = piVar4;
                goto LAB_0086501d;
              }
              puVar8[2] = 0;
            }
            piVar4 = (int *)puVar8[2];
          }
LAB_0086501d:
          iVar13 = (**(code **)(*piVar4 + 0x14))(pvVar2,local_34);
          local_9c = iVar13;
          if (iVar13 != 0) {
            if (local_98 != local_34) {
              FID_conflict_assign(local_34,0,0xffffffff);
            }
            break;
          }
        }
        local_8c[0] = *(int *)(local_8c[0] + 0xc);
      } while (local_8c[0] != 0);
      if (iVar13 != 0) goto LAB_00865068;
    }
  }
  else {
    iVar13 = (int)local_94 + 8;
    local_8c[0] = DAT_032bdb1c;
    do {
      piVar4 = *(int **)(local_8c[0] + 8);
      uVar6 = FUN_008531f0(local_7c,iVar13,local_34);
      local_4._0_1_ = 1;
      cVar3 = (**(code **)(*piVar4 + 0x10))(uVar6);
      local_4._0_1_ = 0;
      _free(pvStack_60);
      if (7 < uStack_64) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_78);
      }
      if (cVar3 != '\0') {
        uVar7 = (**(code **)*piVar4)();
        if (*(int *)(uVar7 + 8) != 0) {
          uVar10 = uVar7 % *(uint *)((int)local_94 + 0x58);
          uStack_80 = 0;
          for (puVar8 = *(undefined4 **)(*(int *)((int)local_94 + 0x54) + uVar10 * 4);
              local_84 = uVar7, puVar8 != (undefined4 *)0x0; puVar8 = (undefined4 *)*puVar8) {
            if (puVar8[1] == uVar7) goto LAB_00864e86;
          }
          puVar8 = (undefined4 *)FUN_00911610(&local_84,uVar10);
LAB_00864e86:
          if (puVar8[2] == 0) {
            if (*(code **)(uVar7 + 8) == (code *)0x0) {
              uVar6 = 0;
            }
            else {
              uVar6 = (**(code **)(uVar7 + 8))();
            }
            puVar8[2] = uVar6;
          }
          piVar4 = (int *)puVar8[2];
        }
        uVar6 = FUN_008531f0(auStack_58,iVar13,local_34);
        local_4._0_1_ = 2;
        iVar9 = (**(code **)(*piVar4 + 0x14))(local_94,uVar6);
        local_4._0_1_ = 0;
        local_9c = iVar9;
        _free(pvStack_3c);
        if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_54);
        }
        uStack_40 = 7;
        uStack_44 = 0;
        uStack_54 = uStack_54 & 0xffff0000;
        if (iVar9 != 0) {
          puVar11 = (undefined *)FUN_008531f0(local_7c,iVar13,local_34);
          local_4._0_1_ = 3;
          if (local_98 != puVar11) {
            FID_conflict_assign(puVar11,0,0xffffffff);
          }
          local_4._0_1_ = 0;
          _free(pvStack_60);
          if (7 < uStack_64) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(uStack_78);
          }
          break;
        }
      }
      local_8c[0] = *(int *)(local_8c[0] + 0xc);
    } while (local_8c[0] != 0);
    if (local_9c == 0) goto LAB_00864f86;
LAB_00865068:
    if (((param_2 & 4) != 0) &&
       (cVar3 = (**(code **)(**(int **)(local_9c + 8) + 0x1c))(), cVar3 == '\0')) {
      local_94 = operator_new(0x28);
      local_4._0_1_ = 4;
      if (local_94 == (void *)0x0) {
        uVar6 = 0;
        iVar13 = local_9c;
      }
      else {
        FUN_004325b6(L"wxbf");
        iVar13 = local_9c;
        uVar6 = *(undefined4 *)(local_9c + 8);
        local_4 = CONCAT31(local_4._1_3_,5);
        local_90 = 1;
        *(undefined4 *)(local_9c + 8) = 0;
        FUN_008a3de0(uVar6,0x4000,local_7c);
        local_4 = 6;
        local_90 = 3;
        uVar6 = FUN_008a3e80(&local_98);
      }
      local_4 = 7;
      uVar7 = local_90;
      if ((local_90 & 2) != 0) {
        uVar7 = local_90 & 0xfffffffd;
        local_90 = uVar7;
        FUN_008a3e60();
      }
      local_4._0_1_ = 0;
      local_4._1_3_ = 0;
      if ((uVar7 & 1) != 0) {
        _free(pvStack_60);
        if (7 < uStack_64) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_78);
        }
        uStack_64 = 7;
        uStack_68 = 0;
        uStack_78 = uStack_78 & 0xffff0000;
      }
      FUN_008a3b40();
      if (*(int **)(iVar13 + 8) != (int *)0x0) {
        (**(code **)(**(int **)(iVar13 + 8) + 4))(1);
      }
      *(undefined4 *)(iVar13 + 8) = uVar6;
    }
  }
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_30);
  }
LAB_008651bb:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008651f0(undefined4 param_1,undefined4 param_2)

{
  short *psVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  undefined *puVar5;
  int *piVar6;
  int iVar7;
  undefined4 *puVar8;
  undefined4 uVar9;
  undefined4 local_6c;
  undefined4 local_68;
  undefined local_64 [4];
  undefined4 local_60;
  uint local_4c;
  void *local_48;
  undefined4 local_40;
  undefined local_3c [8];
  undefined local_34 [4];
  uint local_30;
  uint local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc8d60;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_6c;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff84;
  ExceptionList = &local_c;
  local_6c = 0;
  local_30 = local_30 & 0xffff0000;
  local_40 = param_1;
  local_1c = 7;
  local_20 = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  local_18 = (void *)0x0;
  local_4 = 0;
  FUN_00820ebc(&local_6c,L"file://",0xffffffff,uVar3);
  iVar4 = FUN_00420f3f(local_6c,0,local_68);
  if ((iVar4 == -1) || (iVar4 != 0)) {
    FUN_00820ebc(&local_6c,L"file:",0xffffffff,uVar3);
    iVar4 = FUN_00420f3f(local_6c,0,local_68);
    if ((iVar4 != -1) && (iVar4 == 0)) {
      puVar5 = (undefined *)FUN_00852560(local_64,5,0xffffffff);
      local_4._0_1_ = 2;
      if (local_34 != puVar5) {
        FID_conflict_assign(puVar5,0,0xffffffff);
      }
      local_4 = (uint)local_4._1_3_ << 8;
      _free(local_48);
      goto joined_r0x00865364;
    }
  }
  else {
    puVar5 = (undefined *)FUN_00852560(local_64,7,0xffffffff);
    local_4._0_1_ = 1;
    if (local_34 != puVar5) {
      FID_conflict_assign(puVar5,0,0xffffffff);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_48);
joined_r0x00865364:
    if (7 < local_4c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_60);
    }
  }
  puVar5 = (undefined *)FUN_008a4a70(local_64,local_34);
  local_4._0_1_ = 3;
  if (local_34 != puVar5) {
    FID_conflict_assign(puVar5,0,0xffffffff);
  }
  local_4 = (uint)local_4._1_3_ << 8;
  _free(local_48);
  if (7 < local_4c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_60);
  }
  piVar6 = (int *)FUN_0081b542(&local_6c,0);
  iVar4 = *piVar6;
  psVar1 = (short *)piVar6[1];
  if (iVar4 != -4) {
    if (iVar4 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(iVar4 + 0x18) < 8) {
      iVar7 = iVar4 + 4;
    }
    else {
      iVar7 = *(int *)(iVar4 + 4);
    }
    if ((short *)(iVar7 + *(int *)(iVar4 + 0x14) * 2) <= psVar1) {
      FUN_00a3fb10();
    }
  }
  if (*psVar1 == 0x2f) {
    piVar6 = (int *)FUN_0081b542(&local_6c,1);
    iVar4 = *piVar6;
    psVar1 = (short *)piVar6[1];
    if (iVar4 != -4) {
      if (iVar4 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar4 + 0x18) < 8) {
        iVar7 = iVar4 + 4;
      }
      else {
        iVar7 = *(int *)(iVar4 + 4);
      }
      if ((short *)(iVar7 + *(int *)(iVar4 + 0x14) * 2) <= psVar1) {
        FUN_00a3fb10();
      }
    }
    if (*psVar1 != 0x2f) {
      puVar5 = (undefined *)FUN_00852560(local_64,1,0xffffffff);
      local_4._0_1_ = 4;
      if (local_34 != puVar5) {
        FID_conflict_assign(puVar5,0,0xffffffff);
      }
      local_4 = (uint)local_4._1_3_ << 8;
      _free(local_48);
      if (7 < local_4c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_60);
      }
      goto LAB_0086556d;
    }
  }
  FUN_00820ebc(&local_6c,L"file://",0xffffffff);
  iVar4 = FUN_00420f3f(local_6c,0,local_68);
  if ((((iVar4 != -1) && (iVar4 == 0)) && (iVar4 = FUN_00850910(0x2f,0), iVar4 != -1)) &&
     (1 < local_20)) {
    puVar8 = (undefined4 *)FUN_0081b542(local_3c,1);
    local_6c = *puVar8;
    local_68 = puVar8[1];
    cVar2 = FUN_0081b52b(0x3a);
    if (cVar2 != '\0') {
      uVar9 = FUN_008535a0(local_64,&DAT_00d29138,local_34);
      local_4._0_1_ = 5;
      FUN_0043261a(uVar9);
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
  }
LAB_0086556d:
  FUN_00852a70(&DAT_03236400,&DAT_032bdb28,1);
  FUN_00432544(local_34,0);
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



// WARNING: Type propagation algorithm not settling

void FUN_008655e0(int param_1,undefined4 param_2)

{
  undefined4 *******pppppppuVar1;
  short sVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  char cVar6;
  wchar_t *pwVar7;
  int iVar8;
  undefined4 *******pppppppuVar9;
  undefined4 *******pppppppuVar10;
  undefined *puVar11;
  short *psVar12;
  short *psVar13;
  wchar_t *pwVar14;
  int local_1ac;
  int local_1a8;
  undefined local_1a4 [4];
  uint local_1a0;
  undefined4 local_190;
  uint local_18c;
  void *local_188;
  undefined local_180 [4];
  uint local_17c;
  undefined4 local_16c;
  uint local_168;
  void *local_164;
  undefined local_15c [4];
  uint local_158;
  undefined4 local_148;
  uint local_144;
  void *local_140;
  undefined local_138 [4];
  uint local_134;
  undefined4 local_124;
  uint local_120;
  void *local_11c;
  undefined local_114 [4];
  uint local_110;
  undefined4 local_100;
  uint local_fc;
  void *local_f8;
  undefined local_f0 [4];
  uint local_ec;
  undefined4 local_dc;
  uint local_d8;
  void *local_d4;
  undefined local_cc [4];
  uint local_c8;
  undefined4 local_b8;
  uint local_b4;
  void *local_b0;
  undefined local_a8 [4];
  uint local_a4;
  undefined4 local_94;
  uint local_90;
  void *local_8c;
  undefined4 *******local_80;
  undefined local_7c [4];
  undefined4 *******local_78 [4];
  int local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined local_4;
  undefined3 uStack_3;
  
  puStack_8 = &LAB_00bc8eda;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_1ac;
  ExceptionList = &local_c;
  local_1ac = param_1;
  local_1a8 = 0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  local_3c = (void *)0x0;
  local_4 = 1;
  uStack_3 = 0;
  FUN_008640f0(local_7c,param_2,DAT_0323f878 ^ (uint)&stack0xfffffe44);
  local_4 = 2;
  iVar5 = local_68;
  iVar8 = local_68;
  do {
    do {
      local_1a8 = iVar5;
      iVar3 = iVar8 + -1;
      if (iVar3 < 0) {
LAB_008656b4:
        local_18c = 7;
        local_190 = 0;
        local_1a0 = local_1a0 & 0xffff0000;
        pwVar14 = L"filesys.no-mimetypesmanager";
        do {
          pwVar7 = pwVar14;
          pwVar14 = pwVar7 + 1;
        } while (*pwVar7 != L'\0');
        FID_conflict_assign(L"filesys.no-mimetypesmanager",(int)(pwVar7 + -0x694984) >> 1);
        local_188 = (void *)0x0;
        local_4 = 4;
        iVar8 = FUN_00897050(local_1a4);
        local_4 = 2;
        _free(local_188);
        if (7 < local_18c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_1a0);
        }
        if (iVar8 == 0) {
          if (DAT_032bdb0c == '\0') {
            if ((DAT_032bdb08 & 1) == 0) {
              DAT_032bdb08 = DAT_032bdb08 | 1;
              local_4 = 5;
              FUN_004325b6(L"JPEG image (from fallback)");
              local_4 = 6;
              FUN_004325b6(PTR_DAT_03236318);
              local_4 = 7;
              FUN_004325b6(PTR_DAT_03236318);
              local_4 = 8;
              FUN_004325b6(L"image/jpeg");
              local_4 = 9;
              FUN_008638b0(local_1a4,local_114,local_15c,local_138,&DAT_00faef54,L"jpeg",
                           &DAT_00d292bc,L"JPEG",0);
              _free(local_188);
              if (7 < local_18c) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_1a0);
              }
              local_18c = 7;
              local_190 = 0;
              local_1a0 = local_1a0 & 0xffff0000;
              _free(local_f8);
              if (7 < local_fc) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_110);
              }
              local_fc = 7;
              local_100 = 0;
              local_110 = local_110 & 0xffff0000;
              _free(local_140);
              if (7 < local_144) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_158);
              }
              local_144 = 7;
              local_148 = 0;
              local_158 = local_158 & 0xffff0000;
              local_4 = 0xe;
              _free(local_11c);
              if (7 < local_120) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_134);
              }
              local_134 = local_134 & 0xffff0000;
              local_120 = 7;
              local_124 = 0;
              FUN_004325b6(L"GIF image (from fallback)");
              local_4 = 0xf;
              FUN_004325b6(PTR_DAT_03236318);
              local_4 = 0x10;
              FUN_004325b6(PTR_DAT_03236318);
              local_4 = 0x11;
              FUN_004325b6(L"image/gif");
              local_4 = 0x12;
              FUN_00863a10(local_a8,local_f0,local_cc,local_180,&DAT_00faef24,&DAT_00d29280,0);
              _free(local_8c);
              if (7 < local_90) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_a4);
              }
              local_90 = 7;
              local_94 = 0;
              local_a4 = local_a4 & 0xffff0000;
              _free(local_d4);
              if (7 < local_d8) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_ec);
              }
              local_d8 = 7;
              local_dc = 0;
              local_ec = local_ec & 0xffff0000;
              _free(local_b0);
              if (7 < local_b4) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_c8);
              }
              local_b4 = 7;
              local_b8 = 0;
              local_c8 = local_c8 & 0xffff0000;
              local_4 = 0x17;
              _free(local_164);
              if (7 < local_168) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_17c);
              }
              local_17c = local_17c & 0xffff0000;
              local_168 = 7;
              local_16c = 0;
              FUN_004325b6(L"PNG image (from fallback)");
              local_4 = 0x18;
              FUN_004325b6(PTR_DAT_03236318);
              local_4 = 0x19;
              FUN_004325b6(PTR_DAT_03236318);
              local_4 = 0x1a;
              FUN_004325b6(L"image/png");
              local_4 = 0x1b;
              FUN_00863a10(local_138,local_15c,local_114,local_1a4,&DAT_00faeef4,&DAT_00d29244,0);
              _free(local_11c);
              if (7 < local_120) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_134);
              }
              local_120 = 7;
              local_124 = 0;
              local_134 = local_134 & 0xffff0000;
              _free(local_140);
              if (7 < local_144) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_158);
              }
              local_144 = 7;
              local_148 = 0;
              local_158 = local_158 & 0xffff0000;
              _free(local_f8);
              if (7 < local_fc) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_110);
              }
              local_fc = 7;
              local_100 = 0;
              local_110 = local_110 & 0xffff0000;
              local_4 = 0x20;
              _free(local_188);
              if (7 < local_18c) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_1a0);
              }
              local_1a0 = local_1a0 & 0xffff0000;
              local_18c = 7;
              local_190 = 0;
              FUN_004325b6(L"windows bitmap image (from fallback)");
              local_4 = 0x21;
              FUN_004325b6(PTR_DAT_03236318);
              local_4 = 0x22;
              FUN_004325b6(PTR_DAT_03236318);
              local_4 = 0x23;
              FUN_004325b6(L"image/bmp");
              local_4 = 0x24;
              FUN_00863a10(local_180,local_cc,local_f0,local_a8,&DAT_00d291d4,&DAT_00d291dc,0);
              _free(local_164);
              if (7 < local_168) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_17c);
              }
              local_168 = 7;
              local_16c = 0;
              local_17c = local_17c & 0xffff0000;
              _free(local_b0);
              if (7 < local_b4) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_c8);
              }
              local_b4 = 7;
              local_b8 = 0;
              local_c8 = local_c8 & 0xffff0000;
              _free(local_d4);
              if (7 < local_d8) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_ec);
              }
              local_d8 = 7;
              local_dc = 0;
              local_ec = local_ec & 0xffff0000;
              local_4 = 0x29;
              FUN_008672a0();
              FUN_004325b6(L"HTML document (from fallback)");
              local_4 = 0x2a;
              FUN_004325b6(PTR_DAT_03236318);
              local_4 = 0x2b;
              FUN_004325b6(PTR_DAT_03236318);
              local_4 = 0x2c;
              FUN_004325b6(L"text/html");
              local_4 = 0x2d;
              FUN_008638b0(local_138,local_15c,local_114,local_1a4,&DAT_00d2915c,L"html",
                           &DAT_00d29170,L"HTML",0);
              FUN_008672a0();
              FUN_008672a0();
              FUN_008672a0();
              local_4 = 0x32;
              FUN_008672a0();
              FUN_00863450();
              _atexit((_func_4879 *)&LAB_00c76790);
              local_4 = 2;
            }
            FUN_008a36a0(&DAT_032bd580);
            DAT_032bdb0c = '\x01';
          }
          iVar8 = FUN_008a3220(local_34);
          if ((iVar8 == 0) || (cVar6 = FUN_008a3170(local_58), cVar6 == '\0')) {
            if (PTR_DAT_03236318 == (undefined *)0x0) {
              FUN_00432156();
            }
            else {
              psVar13 = (short *)PTR_DAT_03236318;
              do {
                sVar2 = *psVar13;
                psVar13 = psVar13 + 1;
              } while (sVar2 != 0);
              FID_conflict_assign(PTR_DAT_03236318,(int)psVar13 - (int)(PTR_DAT_03236318 + 2) >> 1);
            }
          }
          iVar5 = local_1ac;
          if (iVar8 != 0) {
            FUN_008a3150();
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(iVar8);
          }
          *(undefined4 *)(local_1ac + 0x18) = 7;
          *(undefined4 *)(local_1ac + 0x14) = 0;
          *(undefined2 *)(local_1ac + 4) = 0;
          FID_conflict_assign(local_58,0,0xffffffff);
          *(undefined4 *)(iVar5 + 0x1c) = 0;
          _free(local_60);
          if (7 < local_64) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_78[0]);
          }
          local_64 = 7;
          local_68 = 0;
          local_78[0] = (undefined4 *******)((uint)local_78[0] & 0xffff0000);
          _free(local_3c);
          if (7 < local_40) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_54);
          }
          local_40 = 7;
          local_44 = 0;
          local_54 = local_54 & 0xffff0000;
          _free(local_18);
          if (7 < local_1c) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_30);
          }
        }
        else {
          cVar6 = FUN_00855ef0(&DAT_00d2915c,0);
          if ((cVar6 == '\0') && (cVar6 = FUN_00855ef0(L"html",0), cVar6 == '\0')) {
            cVar6 = FUN_00855ef0(&DAT_00faef54,0);
            if ((cVar6 == '\0') && (cVar6 = FUN_00855ef0(L"jpeg",0), cVar6 == '\0')) {
              cVar6 = FUN_00855ef0(&DAT_00faef24,0);
              if (cVar6 == '\0') {
                cVar6 = FUN_00855ef0(&DAT_00faeef4,0);
                if (cVar6 == '\0') {
                  cVar6 = FUN_00855ef0(&DAT_00d291d4,0);
                  pwVar14 = (wchar_t *)PTR_DAT_03236318;
                  if (cVar6 != '\0') {
                    pwVar14 = L"image/bmp";
                  }
                }
                else {
                  pwVar14 = L"image/png";
                }
              }
              else {
                pwVar14 = L"image/gif";
              }
            }
            else {
              pwVar14 = L"image/jpeg";
            }
            FUN_004325b6(pwVar14);
            FUN_0040159c();
            FUN_0040159c();
            FUN_0040159c();
          }
          else {
            FUN_004325b6(L"text/html");
            _free(local_60);
            if (7 < local_64) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1(local_78[0]);
            }
            local_64 = 7;
            local_68 = 0;
            local_78[0] = (undefined4 *******)((uint)local_78[0] & 0xffff0000);
            _free(local_3c);
            if (7 < local_40) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1(local_54);
            }
            local_40 = 7;
            local_44 = 0;
            local_54 = local_54 & 0xffff0000;
            _free(local_18);
            if (7 < local_1c) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1(local_30);
            }
          }
        }
        goto LAB_00866411;
      }
      if (local_64 < 8) {
        pppppppuVar10 = local_78;
LAB_00865ee6:
        pppppppuVar9 = local_78[0];
        if (local_64 < 8) {
          pppppppuVar9 = local_78;
        }
        if (pppppppuVar10 < pppppppuVar9) goto LAB_00865f0d;
        pppppppuVar9 = local_78[0];
        if (local_64 < 8) {
          pppppppuVar9 = local_78;
        }
        if ((undefined4 *******)((int)pppppppuVar9 + local_68 * 2) < pppppppuVar10)
        goto LAB_00865f0d;
      }
      else {
        pppppppuVar10 = local_78[0];
        if (local_78[0] != (undefined4 *******)0x0) goto LAB_00865ee6;
LAB_00865f0d:
        FUN_00a3fb10();
      }
      local_80 = pppppppuVar10;
      if (&stack0x00000000 != (undefined *)0x78) {
        pppppppuVar9 = local_78[0];
        if (local_64 < 8) {
          pppppppuVar9 = local_78;
        }
        pppppppuVar1 = (undefined4 *******)((int)pppppppuVar10 + iVar3 * 2);
        if (pppppppuVar1 <= (undefined4 *******)((int)pppppppuVar9 + local_68 * 2)) {
          pppppppuVar9 = local_78[0];
          if (local_64 < 8) {
            pppppppuVar9 = local_78;
          }
          if (pppppppuVar9 <= pppppppuVar1) goto LAB_00865f71;
        }
        FUN_00a3fb10();
      }
LAB_00865f71:
      psVar13 = (short *)((int)pppppppuVar10 + iVar3 * 2);
      if (&stack0x00000000 != (undefined *)0x78) {
        if (&stack0x00000000 == (undefined *)0x7c) {
          FUN_00a3fb10();
        }
        pppppppuVar10 = local_78[0];
        if (local_64 < 8) {
          pppppppuVar10 = local_78;
        }
        if ((short *)((int)pppppppuVar10 + local_68 * 2) <= psVar13) {
          FUN_00a3fb10();
        }
      }
      iVar4 = local_1ac;
      sVar2 = *psVar13;
      iVar5 = iVar8;
      iVar8 = iVar3;
    } while (sVar2 == 0x23);
    if (sVar2 == 0x2e) {
      puVar11 = (undefined *)FUN_00852680(local_180,(local_1a8 - iVar3) + -1);
      local_4 = 3;
      if (local_34 != puVar11) {
        FID_conflict_assign(puVar11,0,0xffffffff);
      }
      local_4 = 2;
      _free(local_164);
      if (7 < local_168) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_17c);
      }
      goto LAB_008656b4;
    }
  } while (((sVar2 != 0x2f) && (sVar2 != 0x5c)) && (iVar5 = local_1a8, sVar2 != 0x3a));
  psVar13 = (short *)PTR_DAT_03236318;
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    psVar13 = &DAT_00fae9c8;
  }
  *(undefined4 *)(local_1ac + 0x18) = 7;
  *(undefined4 *)(local_1ac + 0x14) = 0;
  *(undefined2 *)(local_1ac + 4) = 0;
  psVar12 = psVar13;
  do {
    sVar2 = *psVar12;
    psVar12 = psVar12 + 1;
  } while (sVar2 != 0);
  FID_conflict_assign(psVar13,(int)psVar12 - (int)(psVar13 + 1) >> 1);
  *(undefined4 *)(iVar4 + 0x1c) = 0;
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78[0]);
  }
  local_64 = 7;
  local_68 = 0;
  local_78[0] = (undefined4 *******)((uint)local_78[0] & 0xffff0000);
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
LAB_00866411:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00866440(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uVar2;
  int *piVar3;
  uint uVar4;
  bool bVar5;
  undefined8 uVar6;
  uint local_170;
  void *local_16c;
  undefined local_168 [4];
  uint local_164;
  undefined4 local_154;
  uint local_150;
  void *local_14c;
  undefined local_144 [4];
  uint local_140;
  undefined4 local_130;
  uint local_12c;
  void *local_128;
  undefined auStack_120 [36];
  undefined auStack_fc [36];
  undefined local_d8 [4];
  uint local_d4;
  undefined4 local_c4;
  uint local_c0;
  void *local_bc;
  undefined local_b4 [4];
  undefined4 local_b0;
  uint local_9c;
  void *local_98;
  undefined local_90 [128];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc8fbe;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_170;
  ExceptionList = &local_c;
  local_170 = 0;
  FUN_008640f0(local_b4,param_2,DAT_0323f878 ^ (uint)&stack0xfffffe80);
  local_4 = 0;
  FUN_008651f0(local_90,local_b4);
  local_4._0_1_ = 1;
  uVar2 = FUN_008581b0(local_144,0);
  local_4._0_1_ = 2;
  FUN_008531f0(local_d8,&DAT_032363ac,uVar2);
  local_4._0_1_ = 4;
  _free(local_128);
  if (7 < local_12c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_140);
  }
  local_12c = 7;
  local_130 = 0;
  local_140 = local_140 & 0xffff0000;
  cVar1 = thunk_FUN_00855b70(local_d8);
  if (cVar1 == '\0') {
    _free(local_bc);
    if (7 < local_c0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_d4);
    }
    local_c0 = 7;
    local_c4 = 0;
    local_d4 = local_d4 & 0xffff0000;
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0043250a();
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b0);
    }
  }
  else {
    local_16c = operator_new(0x24);
    local_4._0_1_ = 5;
    bVar5 = local_16c == (void *)0x0;
    if (bVar5) {
      piVar3 = (int *)0x0;
    }
    else {
      FUN_0043c211(&DAT_02bcf114);
      local_4 = CONCAT31(local_4._1_3_,6);
      local_170 = 1;
      piVar3 = (int *)FUN_00882660(local_d8,local_168);
    }
    bVar5 = !bVar5;
    uVar4 = (uint)bVar5;
    local_4 = 4;
    if (bVar5) {
      uVar4 = 0;
      _free(local_14c);
      if (7 < local_150) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_164);
      }
      local_150 = 7;
      local_154 = 0;
      local_164 = local_164 & 0xffff0000;
    }
    cVar1 = (**(code **)(*piVar3 + 0x10))();
    if (cVar1 == '\0') {
      (**(code **)(*piVar3 + 4))(1);
      _free(local_bc);
      if (7 < local_c0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_d4);
      }
      local_c0 = 7;
      local_c4 = 0;
      local_d4 = local_d4 & 0xffff0000;
      local_4 = local_4 & 0xffffff00;
      FUN_0043250a();
      _free(local_98);
      if (7 < local_9c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_b0);
      }
    }
    else {
      local_16c = operator_new(0x80);
      local_4._0_1_ = 8;
      if (local_16c != (void *)0x0) {
        FUN_004325b6(PTR_DAT_03236318);
        local_170 = uVar4 | 2;
        local_4 = CONCAT31(local_4._1_3_,9);
        uVar2 = FUN_008641f0(auStack_fc,param_2);
        uVar4 = uVar4 | 6;
        local_4._0_1_ = 10;
        local_4._1_3_ = 0;
        local_170 = uVar4;
        uVar6 = FUN_0085cb90(local_d8);
        uVar6 = __allmul(1000,0,uVar6);
        FUN_00863c30(piVar3,local_b4,auStack_120,uVar2,uVar6);
      }
      if ((uVar4 & 4) != 0) {
        uVar4 = uVar4 & 0xfffffffb;
        FUN_0040159c();
      }
      local_4 = 4;
      if ((uVar4 & 2) != 0) {
        FUN_0040159c();
      }
      _free(local_bc);
      if (7 < local_c0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_d4);
      }
      local_d4 = local_d4 & 0xffff0000;
      local_4 = local_4 & 0xffffff00;
      local_c0 = 7;
      local_c4 = 0;
      FUN_0043250a();
      _free(local_98);
      if (7 < local_9c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_b0);
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008668a0(byte *param_1)

{
  byte bVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  int unaff_ESI;
  undefined local_44 [20];
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_c = ExceptionList;
  puStack_8 = &LAB_00bc9019;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  *(undefined4 *)(unaff_ESI + 0x18) = 7;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined2 *)(unaff_ESI + 4) = 0;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  local_4 = 0;
  bVar1 = *param_1;
  while (bVar1 != 0) {
    bVar1 = *param_1;
    if ((((((bVar1 == 0x2f) || (bVar1 == 0x2d)) || (bVar1 == 0x2e)) ||
         ((bVar1 == 0x5f || (bVar1 == 0x7e)))) || ((0x2f < bVar1 && (bVar1 < 0x3a)))) ||
       (((0x60 < bVar1 && (bVar1 < 0x7b)) || ((0x40 < bVar1 && (bVar1 < 0x5b)))))) {
      if (bVar1 < 0x80) {
        iVar4 = (int)(char)bVar1;
      }
      else {
        iVar4 = FUN_00884ad0(bVar1,uVar2);
      }
      FID_conflict_append(1,iVar4);
    }
    else {
      FUN_0083fbe0("%%%02x");
      local_4 = 1;
      uVar3 = FUN_0081c0ba(local_30,local_44,bVar1);
      local_4._0_1_ = 2;
      FID_conflict_append(uVar3,0,0xffffffff);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0081b5bc();
    }
    param_1 = param_1 + 1;
    bVar1 = *param_1;
  }
  ExceptionList = local_c;
  return;
}



void FUN_008669d0(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined *puVar4;
  undefined4 *puVar5;
  void **ppvVar6;
  void **local_10c;
  undefined4 local_108;
  undefined local_104 [4];
  uint local_100;
  undefined4 local_f0;
  uint local_ec;
  void *local_e8;
  undefined4 local_e0;
  undefined4 local_dc;
  undefined local_d8 [4];
  undefined4 local_d4;
  uint local_c0;
  void *local_bc;
  undefined local_b4 [4];
  uint local_b0;
  undefined4 local_a0;
  uint local_9c;
  void *local_98;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc90ba;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_10c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffee8;
  ExceptionList = &local_c;
  local_dc = param_1;
  local_e0 = 0;
  FUN_008570c0(param_2);
  local_4 = 1;
  FUN_004325b6(PTR_DAT_03236318);
  local_4._0_1_ = 2;
  FUN_00859fd0(0x16,local_104,0);
  local_4._0_1_ = 1;
  _free(local_e8);
  if (7 < local_ec) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_100,uVar1);
  }
  FUN_008581b0(local_b4,0);
  local_4._0_1_ = 3;
  FUN_00820ebc(&local_10c,&DAT_00d29348,0xffffffff);
  iVar2 = FUN_00420f3f(local_10c,0,local_108);
  if ((iVar2 == -1) || (iVar2 != 0)) {
    puVar4 = (undefined *)FUN_008535a0(local_d8,&DAT_03057848,local_b4);
    local_4._0_1_ = 6;
    if (local_b4 != puVar4) {
      FID_conflict_assign(puVar4,0,0xffffffff);
    }
    local_4 = CONCAT31(local_4._1_3_,3);
    _free(local_bc);
  }
  else {
    uVar3 = FUN_00852560(local_d8,2,0xffffffff);
    local_4._0_1_ = 4;
    puVar4 = (undefined *)FUN_008535a0(local_104,&DAT_00d29138,uVar3);
    local_4._0_1_ = 5;
    if (local_b4 != puVar4) {
      FID_conflict_assign(puVar4,0,0xffffffff);
    }
    _free(local_e8);
    if (7 < local_ec) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_100);
    }
    local_ec = 7;
    local_f0 = 0;
    local_100 = local_100 & 0xffff0000;
    local_4 = CONCAT31(local_4._1_3_,3);
    _free(local_bc);
  }
  if (7 < local_c0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_d4);
  }
  FUN_00852a70(&DAT_032bdb28,&DAT_03236400,1);
  puVar5 = (undefined4 *)FUN_0081d19a(&local_10c);
  local_4._0_1_ = 7;
  uVar3 = FUN_008668a0(*(undefined4 *)*puVar5);
  local_4._0_1_ = 8;
  FUN_008535a0(param_1,L"file:",uVar3);
  local_e0 = 1;
  _free(local_e8);
  if (local_ec < 8) {
    local_ec = 7;
    local_f0 = 0;
    local_100 = local_100 & 0xffff0000;
    local_4 = CONCAT31(local_4._1_3_,3);
    ppvVar6 = (void **)FUN_00850350();
    if (local_10c != ppvVar6) {
      *(short *)(local_10c + 2) = *(short *)(local_10c + 2) + -1;
      if (*(short *)(local_10c + 2) == 0) {
        if (*(char *)((int)local_10c + 10) != '\0') {
          _free(*local_10c);
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_10c);
      }
      local_10c = (void **)FUN_00850350();
    }
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b0);
    }
    local_9c = 7;
    local_a0 = 0;
    local_b0 = local_b0 & 0xffff0000;
    local_4 = local_4 & 0xffffff00;
    FUN_0043250a();
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_100);
}



int __fastcall FUN_00866d40(int param_1)

{
  int iVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*(int *)(param_1 + 0x44) == 0) && (*(int *)(param_1 + 0x20) != 0)) {
    iVar1 = FUN_008655e0(local_30,param_1 + 0xc,DAT_0323f878 ^ (uint)&stack0xffffffcc);
    local_4 = 0;
    if (param_1 + 0x30 != iVar1) {
      FID_conflict_assign(iVar1,0,0xffffffff);
    }
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return param_1 + 0x30;
}



void FUN_00866de0(int param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 local_1a8;
  int local_1a4;
  undefined local_1a0 [4];
  uint local_19c;
  undefined4 local_18c;
  uint local_188;
  void *local_184;
  undefined local_17c [4];
  uint local_178;
  undefined4 local_168;
  uint local_164;
  void *local_160;
  undefined local_158 [4];
  uint local_154;
  undefined4 local_144;
  uint local_140;
  void *local_13c;
  undefined local_134 [128];
  undefined local_b4 [4];
  uint local_b0;
  int local_a0;
  uint local_9c;
  void *local_98;
  undefined local_90 [128];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9154;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_1a8;
  ExceptionList = &local_c;
  local_1a4 = param_1;
  local_1a8 = 0;
  uVar1 = FUN_008640f0(local_1a0,param_2,DAT_0323f878 ^ (uint)&stack0xfffffe48);
  local_4 = 1;
  FUN_008651f0(local_90,uVar1);
  local_4._0_1_ = 3;
  _free(local_184);
  if (7 < local_188) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_19c);
  }
  local_19c = local_19c & 0xffff0000;
  local_188 = 7;
  local_18c = 0;
  uVar1 = FUN_008581b0(local_17c,0);
  local_4._0_1_ = 4;
  uVar1 = FUN_008531f0(local_158,&DAT_032363ac,uVar1);
  local_4._0_1_ = 5;
  FUN_0085ebd0(local_b4,uVar1,param_3);
  _free(local_13c);
  if (local_140 < 8) {
    local_140 = 7;
    local_144 = 0;
    local_154 = local_154 & 0xffff0000;
    local_4._0_1_ = 8;
    _free(local_160);
    if (7 < local_164) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_178);
    }
    local_164 = 7;
    local_168 = 0;
    local_178 = local_178 & 0xffff0000;
    if (local_a0 == 0) {
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(local_b4,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      local_1a8 = 1;
      _free(local_98);
      if (7 < local_9c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_b0);
      }
    }
    else {
      FUN_00432544(local_b4,0);
      local_4._0_1_ = 9;
      FUN_008669d0(param_1,local_134);
      local_1a8 = 1;
      local_4._0_1_ = 8;
      FUN_0043250a();
      _free(local_98);
      if (7 < local_9c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_b0);
      }
    }
    local_b0 = local_b0 & 0xffff0000;
    local_9c = 7;
    local_a0 = 0;
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0043250a();
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_154);
}



void FUN_00867080(int param_1)

{
  void *pvVar1;
  undefined4 local_bc;
  int local_b8;
  undefined local_b4 [128];
  undefined local_34 [4];
  undefined4 local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc91c5;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_bc;
  ExceptionList = &local_c;
  local_b8 = param_1;
  local_bc = 0;
  FUN_0085d5c0(local_34,DAT_0323f878 ^ (uint)&stack0xffffff40);
  local_4 = 1;
  if (local_20 == 0) {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  else {
    FUN_00432544(local_34,0);
    local_4._0_1_ = 2;
    FUN_008669d0(param_1,local_b4);
    local_bc = 1;
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_0043250a();
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  local_c = ExceptionList;
  if (7 < local_1c) {
    ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ___security_check_cookie_4();
  return;
}



undefined4 __fastcall FUN_008671d0(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x1c) != 0) {
    pvVar1 = operator_new(0x28);
    local_4 = 0;
    if (pvVar1 != (void *)0x0) {
      uVar2 = FUN_008a3e80(param_1 + 0x1c);
      ExceptionList = local_c;
      return uVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined ** FUN_00867250(void)

{
  return &PTR_u_wxArchiveFSHandler_03236460;
}



void __fastcall FUN_00867260(int param_1)

{
  if (*(int **)(param_1 + 0x24) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x24) + 4))(1);
    *(undefined4 *)(param_1 + 0x24) = 0;
  }
  if (*(int **)(param_1 + 0x20) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x20) + 4))(1);
    *(undefined4 *)(param_1 + 0x20) = 0;
  }
  return;
}



void __fastcall FUN_008672a0(int param_1)

{
  _free(*(void **)(param_1 + 0x1c));
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  return;
}



void FUN_008672e0(undefined4 param_1)

{
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9208;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  ExceptionList = &local_c;
  FUN_00863e80(local_34,param_1,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_4 = 0;
  FUN_008a63c0(local_34,0);
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __fastcall FUN_00867380(undefined4 *param_1)

{
  undefined4 *puVar1;
  short sVar2;
  uint uVar3;
  short *psVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc926a;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = wxArchiveFSHandler::vftable;
  FUN_008633b0(uVar3);
  puVar1 = param_1 + 0x1e;
  param_1[0x24] = 7;
  param_1[0x23] = 0;
  *(undefined2 *)(param_1 + 0x1f) = 0;
  param_1[0x25] = 0;
  param_1[0x2d] = 7;
  param_1[0x2c] = 0;
  *(undefined2 *)(param_1 + 0x28) = 0;
  param_1[0x2e] = 0;
  param_1[0x36] = 7;
  param_1[0x35] = 0;
  *(undefined2 *)(param_1 + 0x31) = 0;
  param_1[0x37] = 0;
  param_1[0x1c] = 0;
  param_1[0x1d] = 0;
  local_4 = CONCAT31(local_4._1_3_,4);
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    FUN_00432156();
  }
  else {
    psVar4 = (short *)PTR_DAT_03236318;
    do {
      sVar2 = *psVar4;
      psVar4 = psVar4 + 1;
    } while (sVar2 != 0);
    FID_conflict_assign(PTR_DAT_03236318,(int)psVar4 - (int)(PTR_DAT_03236318 + 2) >> 1);
  }
  if (puVar1 != param_1 + 0x27) {
    FID_conflict_assign(param_1 + 0x27,0,0xffffffff);
  }
  if (param_1 + 0x30 != puVar1) {
    FID_conflict_assign(puVar1,0,0xffffffff);
  }
  *(undefined *)((int)param_1 + 0xe5) = 1;
  *(undefined *)(param_1 + 0x39) = 1;
  param_1[0x3a] = 0;
  param_1[2] = 0;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_008674b0(undefined4 *param_1_00,int *param_1,undefined4 param_2)

{
  uint uVar1;
  size_t _Count;
  void *pvVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc92a6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1_00 = 1;
  _Count = FUN_00893ca0(100,uVar1);
  param_1_00[2] = _Count;
  param_1_00[3] = 0;
  pvVar2 = _calloc(_Count,4);
  param_1_00[1] = pvVar2;
  param_1_00[5] = 0;
  param_1_00[6] = param_1_00 + 5;
  param_1_00[7] = 0;
  param_1_00[8] = param_2;
  local_4 = 1;
  uVar3 = (**(code **)(*param_1 + 0x28))(param_2);
  param_1_00[9] = uVar3;
  ExceptionList = param_1_00;
  return param_1_00;
}



void __fastcall FUN_00867550(int param_1)

{
  void **ppvVar1;
  uint uVar2;
  void **ppvVar3;
  uint uVar4;
  uint uVar5;
  int *piVar6;
  int *piVar7;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bc92e6;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ppvVar1 = (void **)(param_1 + 4);
  uVar5 = 0;
  local_4 = 1;
  ppvVar3 = &local_c;
  local_c = ExceptionList;
  if (*(uint *)(param_1 + 8) != 0) {
    do {
      if (*(int *)(*(int *)(param_1 + 4) + uVar5 * 4) != 0) {
        piVar6 = *(int **)(*(int *)(param_1 + 4) + uVar5 * 4);
        goto joined_r0x008675a4;
      }
      uVar5 = uVar5 + 1;
    } while (uVar5 < *(uint *)(param_1 + 8));
  }
  piVar6 = (int *)0x0;
joined_r0x008675a4:
  do {
    do {
      piVar7 = piVar6;
      ExceptionList = ppvVar3;
      if (piVar7 == (int *)0x0) {
        FUN_00893cf0(*(undefined4 *)(param_1 + 8),*ppvVar1,FUN_009e7620);
        *(undefined4 *)(param_1 + 0xc) = 0;
        if (*(int *)(param_1 + 0x14) != 0) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(*(int *)(param_1 + 0x14));
        }
        if (*(int **)(param_1 + 0x24) != (int *)0x0) {
          (**(code **)(**(int **)(param_1 + 0x24) + 4))(1);
          *(undefined4 *)(param_1 + 0x24) = 0;
        }
        if (*(int **)(param_1 + 0x20) != (int *)0x0) {
          (**(code **)(**(int **)(param_1 + 0x20) + 4))(1);
          *(undefined4 *)(param_1 + 0x20) = 0;
        }
        local_4 = local_4 & 0xffffff00;
        FUN_008a3e60();
        local_4 = 0xffffffff;
        FUN_00893cf0(*(undefined4 *)(param_1 + 8),*ppvVar1,FUN_009e7620);
        *(undefined4 *)(param_1 + 0xc) = 0;
        _free(*ppvVar1);
        ExceptionList = local_c;
        return;
      }
      if ((int *)piVar7[10] != (int *)0x0) {
        (**(code **)(*(int *)piVar7[10] + 4))(1,uVar4);
      }
      ppvVar3 = (void **)ExceptionList;
      piVar6 = (int *)*piVar7;
    } while ((int *)*piVar7 != (int *)0x0);
    if ((uint)piVar7[7] < 8) {
      piVar7 = piVar7 + 2;
    }
    else {
      piVar7 = (int *)piVar7[2];
    }
    uVar5 = FUN_00893df0(piVar7);
    uVar2 = *(uint *)(param_1 + 8);
    uVar5 = uVar5 % uVar2 + 1;
    ppvVar3 = (void **)ExceptionList;
    if (uVar5 < uVar2) {
      piVar6 = (int *)((int)*ppvVar1 + uVar5 * 4);
      do {
        if (*piVar6 != 0) {
          piVar6 = *(int **)((int)*ppvVar1 + uVar5 * 4);
          goto joined_r0x008675a4;
        }
        uVar5 = uVar5 + 1;
        piVar6 = piVar6 + 1;
      } while (uVar5 < uVar2);
    }
    piVar6 = (int *)0x0;
  } while( true );
}



undefined4 * __thiscall FUN_008676b0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x28);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_008674b0(param_1,param_2);
  }
  *param_1_00 = uVar2;
  ExceptionList = local_c;
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0xec);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00867380(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_00867790(undefined4 *param_1_00,int *param_1,undefined4 param_2)

{
  uint uVar1;
  size_t _Count;
  void *pvVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9361;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1_00 = 1;
  _Count = FUN_00893ca0(100,uVar1);
  param_1_00[2] = _Count;
  param_1_00[3] = 0;
  pvVar2 = _calloc(_Count,4);
  param_1_00[1] = pvVar2;
  local_4 = 0;
  param_1_00[5] = 0;
  param_1_00[6] = param_1_00 + 5;
  FUN_008a36d0(param_2);
  local_4._0_1_ = 1;
  pvVar2 = operator_new(0x28);
  local_4._0_1_ = 2;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_008a3e80(param_2);
  }
  param_1_00[8] = uVar3;
  local_4 = CONCAT31(local_4._1_3_,1);
  uVar3 = (**(code **)(*param_1 + 0x28))(uVar3);
  param_1_00[9] = uVar3;
  ExceptionList = param_1_00;
  return param_1_00;
}



void __thiscall FUN_00867860(int param_1_00,int *param_1)

{
  undefined4 uVar1;
  int **ppiVar2;
  void *pvVar3;
  undefined4 unaff_ESI;
  undefined local_30 [12];
  undefined4 uStack_24;
  uint uStack_20;
  void *pvStack_1c;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = (**(code **)(*param_1 + 0x2c))(local_30,1,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_c = (void *)0x0;
  ppiVar2 = (int **)FUN_008c39e0(uVar1);
  *ppiVar2 = param_1;
  local_c = (void *)0xffffffff;
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI);
  }
  uStack_20 = 7;
  uStack_24 = 0;
  pvVar3 = operator_new(8);
  **(void ***)(param_1_00 + 0x18) = pvVar3;
  *(int **)**(undefined4 **)(param_1_00 + 0x18) = param_1;
  *(undefined4 *)(**(int **)(param_1_00 + 0x18) + 4) = 0;
  *(int *)(param_1_00 + 0x18) = **(int **)(param_1_00 + 0x18) + 4;
  ExceptionList = pvStack_14;
  return;
}



int * __thiscall FUN_00867930(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  bool bVar4;
  undefined auStack_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9388;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  iVar2 = FUN_00970c40(param_1);
  if (iVar2 == 0) {
    if (*(int **)(param_1_00 + 0x24) != (int *)0x0) {
      piVar3 = (int *)(**(code **)(**(int **)(param_1_00 + 0x24) + 0x50))(uVar1);
      while (piVar3 != (int *)0x0) {
        FUN_00867860(piVar3);
        iVar2 = (**(code **)(*piVar3 + 0x2c))(auStack_30,1);
        uStack_4 = 0;
        if (*(int *)(iVar2 + 0x14) == *(int *)(param_1 + 0x14)) {
          iVar2 = FUN_00850760(param_1);
          bVar4 = iVar2 == 0;
        }
        else {
          bVar4 = false;
        }
        uStack_4 = 0xffffffff;
        _free(pvStack_14);
        if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_2c);
        }
        uStack_18 = 7;
        uStack_1c = 0;
        uStack_2c = uStack_2c & 0xffff0000;
        if (bVar4) {
          ExceptionList = local_c;
          return piVar3;
        }
        piVar3 = (int *)(**(code **)(**(int **)(param_1_00 + 0x24) + 0x50))();
      }
      FUN_00867260();
    }
    piVar3 = (int *)0x0;
  }
  else {
    piVar3 = *(int **)(iVar2 + 0x28);
  }
  ExceptionList = local_c;
  return piVar3;
}



undefined4 * __thiscall FUN_00867a50(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x28);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00867790(param_1,param_2);
  }
  *param_1_00 = uVar2;
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00867ac0(int param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int **ppiVar4;
  undefined *puVar5;
  undefined4 *puVar6;
  undefined4 uVar7;
  undefined *puStack_110;
  int local_f4;
  undefined **ppuStack_f0;
  undefined auStack_ec [4];
  uint uStack_e8;
  undefined4 uStack_d8;
  uint uStack_d4;
  void *pvStack_d0;
  undefined4 local_c8;
  undefined auStack_c4 [24];
  uint uStack_ac;
  void *pvStack_a8;
  undefined auStack_a0 [4];
  uint uStack_9c;
  undefined4 uStack_8c;
  uint uStack_88;
  void *pvStack_84;
  undefined auStack_7c [4];
  uint local_78;
  int local_68;
  uint local_64;
  void *local_60;
  undefined auStack_58 [4];
  uint local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined auStack_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined local_4;
  undefined3 uStack_3;
  
  puStack_8 = &LAB_00bc9458;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_f4;
  ExceptionList = &local_c;
  local_c8 = 0;
  local_f4 = param_1;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  local_60 = (void *)0x0;
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  local_3c = (void *)0x0;
  local_4 = 3;
  uStack_3 = 0;
  puStack_110 = (undefined *)0x867b90;
  FUN_004325b6();
  local_c8 = 1;
  puStack_110 = (undefined *)0x867ba6;
  iVar2 = FUN_008507a0();
  do {
    if (iVar2 != 0) {
LAB_00868109:
      puStack_110 = (undefined *)0x868116;
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        puStack_110 = &UNK_00868134;
        FUN_00a3f6a1();
      }
      local_40 = 7;
      local_44 = 0;
      local_54 = local_54 & 0xffff0000;
      puStack_110 = (undefined *)0x86815c;
      _free(local_60);
      if (local_64 < 8) {
        local_64 = 7;
        local_68 = 0;
        local_78 = local_78 & 0xffff0000;
        puStack_110 = (undefined *)0x86819d;
        _free(local_18);
        if (local_1c < 8) {
          ExceptionList = local_c;
          ___security_check_cookie_4();
          return;
        }
                    // WARNING: Subroutine does not return
        puStack_110 = &UNK_008681b6;
        FUN_00a3f6a1();
      }
                    // WARNING: Subroutine does not return
      puStack_110 = &UNK_00868175;
      FUN_00a3f6a1();
    }
    iVar2 = **(int **)(param_1_00 + 0x70);
    if (*(int *)(param_1_00 + 0x74) == 0) {
      ppiVar4 = *(int ***)(iVar2 + 0x14);
    }
    else {
      ppiVar4 = *(int ***)(*(int *)(param_1_00 + 0x74) + 4);
    }
    if ((ppiVar4 == (int **)0x0) && (*(int **)(iVar2 + 0x24) != (int *)0x0)) {
      iVar3 = (**(code **)(**(int **)(iVar2 + 0x24) + 0x50))();
      if (iVar3 == 0) {
        if (*(int **)(iVar2 + 0x24) != (int *)0x0) {
          puStack_110 = (undefined *)0x867bf6;
          (**(code **)(**(int **)(iVar2 + 0x24) + 4))();
          *(undefined4 *)(iVar2 + 0x24) = 0;
        }
        if (*(int **)(iVar2 + 0x20) != (int *)0x0) {
          puStack_110 = (undefined *)0x867c09;
          (**(code **)(**(int **)(iVar2 + 0x20) + 4))();
          *(undefined4 *)(iVar2 + 0x20) = 0;
        }
      }
      else {
        puStack_110 = (undefined *)0x867be2;
        ppiVar4 = (int **)FUN_00867860();
      }
    }
    *(int ***)(param_1_00 + 0x74) = ppiVar4;
    if (ppiVar4 == (int **)0x0) {
      *(undefined4 *)(param_1_00 + 0x70) = 0;
      *(undefined4 *)(param_1_00 + 0x74) = 0;
      goto LAB_00868109;
    }
    puStack_110 = auStack_ec;
    puVar5 = (undefined *)(**(code **)(**ppiVar4 + 0x2c))();
    local_4 = 4;
    if (auStack_34 != puVar5) {
      puStack_110 = (undefined *)0x0;
      FID_conflict_assign(puVar5);
    }
    local_4 = 3;
    puStack_110 = (undefined *)0x867c55;
    _free(pvStack_d0);
    if (7 < uStack_d4) {
                    // WARNING: Subroutine does not return
      puStack_110 = &UNK_00867c6d;
      FUN_00a3f6a1();
    }
    if (*(char *)(param_1_00 + 0xe4) != '\0') {
      ppuStack_f0 = &puStack_110;
      puStack_110 = (undefined *)0x2f;
      puVar5 = (undefined *)FUN_00852900(auStack_ec);
      local_4 = 5;
      if (auStack_7c != puVar5) {
        puStack_110 = (undefined *)0x0;
        FID_conflict_assign(puVar5);
      }
      local_4 = 3;
      puStack_110 = (undefined *)0x867ccb;
      _free(pvStack_d0);
      if (7 < uStack_d4) {
                    // WARNING: Subroutine does not return
        puStack_110 = &UNK_00867cde;
        FUN_00a3f6a1();
      }
      while (local_68 != 0) {
        puStack_110 = (undefined *)0x867d01;
        iVar2 = FUN_00970c40();
        if (iVar2 != 0) break;
        puStack_110 = (undefined *)0x867d1c;
        puVar6 = (undefined4 *)FUN_008c39e0();
        ppuStack_f0 = (undefined **)&stack0xfffffef4;
        *puVar6 = 1;
        puStack_110 = auStack_ec;
        puVar5 = (undefined *)FUN_00852730();
        local_4 = 6;
        if (auStack_58 != puVar5) {
          puStack_110 = (undefined *)0x0;
          FID_conflict_assign(puVar5);
        }
        local_4 = 3;
        puStack_110 = (undefined *)0x867d70;
        _free(pvStack_d0);
        if (7 < uStack_d4) {
                    // WARNING: Subroutine does not return
          puStack_110 = &UNK_00867d83;
          FUN_00a3f6a1();
        }
        ppuStack_f0 = &puStack_110;
        puStack_110 = (undefined *)0x2f;
        puVar5 = (undefined *)FUN_00852900(auStack_ec);
        local_4 = 7;
        if (auStack_7c != puVar5) {
          puStack_110 = (undefined *)0x0;
          FID_conflict_assign(puVar5);
        }
        local_4 = 3;
        puStack_110 = (undefined *)0x867dd3;
        _free(pvStack_d0);
        if (7 < uStack_d4) {
                    // WARNING: Subroutine does not return
          puStack_110 = &UNK_00867de6;
          FUN_00a3f6a1();
        }
        if ((local_44 != 0) && (*(int *)(param_1_00 + 0xb0) == local_68)) {
          puStack_110 = (undefined *)0x867e1c;
          iVar2 = FUN_00850760();
          if (iVar2 == 0) {
            puStack_110 = auStack_58;
            cVar1 = FUN_0085ddc0(param_1_00 + 0x78);
            if (cVar1 != '\0') {
              puStack_110 = (undefined *)(param_1_00 + 0xc0);
              uVar7 = FUN_008531f0(auStack_c4);
              local_4 = 8;
              uVar7 = FUN_008533d0(auStack_ec,uVar7,&DAT_03057848);
              local_4 = 9;
              iVar2 = FUN_008531f0(auStack_a0,uVar7,auStack_58);
              local_4 = 10;
              if (local_f4 != iVar2) {
                puStack_110 = (undefined *)0x0;
                FID_conflict_assign(iVar2);
              }
              puStack_110 = (undefined *)0x867ebe;
              _free(pvStack_84);
              if (7 < uStack_88) {
                    // WARNING: Subroutine does not return
                puStack_110 = &UNK_00867ed4;
                FUN_00a3f6a1();
              }
              uStack_88 = 7;
              uStack_8c = 0;
              uStack_9c = uStack_9c & 0xffff0000;
              puStack_110 = (undefined *)0x867efb;
              _free(pvStack_d0);
              if (7 < uStack_d4) {
                    // WARNING: Subroutine does not return
                puStack_110 = &UNK_00867f0e;
                FUN_00a3f6a1();
              }
              uStack_d4 = 7;
              uStack_d8 = 0;
              uStack_e8 = uStack_e8 & 0xffff0000;
              local_4 = 3;
              puStack_110 = (undefined *)0x867f32;
              _free(pvStack_a8);
              if (7 < uStack_ac) {
                    // WARNING: Subroutine does not return
                puStack_110 = &UNK_00867f45;
                FUN_00a3f6a1();
              }
            }
          }
        }
      }
    }
    ppuStack_f0 = (undefined **)&stack0xfffffef4;
    puStack_110 = auStack_c4;
    puVar5 = (undefined *)FUN_00852730();
    local_4 = 0xb;
    if (auStack_58 != puVar5) {
      puStack_110 = (undefined *)0x0;
      FID_conflict_assign(puVar5);
    }
    local_4 = 3;
    puStack_110 = (undefined *)0x867fa1;
    _free(pvStack_a8);
    if (7 < uStack_ac) {
                    // WARNING: Subroutine does not return
      puStack_110 = &UNK_00867fb4;
      FUN_00a3f6a1();
    }
    ppuStack_f0 = &puStack_110;
    puStack_110 = (undefined *)0x2f;
    puVar5 = (undefined *)FUN_00852900(auStack_c4);
    local_4 = 0xc;
    if (auStack_7c != puVar5) {
      puStack_110 = (undefined *)0x0;
      FID_conflict_assign(puVar5);
    }
    local_4 = 3;
    puStack_110 = (undefined *)0x868006;
    _free(pvStack_a8);
    if (7 < uStack_ac) {
                    // WARNING: Subroutine does not return
      puStack_110 = &UNK_00868019;
      FUN_00a3f6a1();
    }
    if (((*(char *)(param_1_00 + 0xe5) != '\0') && (local_44 != 0)) &&
       (*(int *)(param_1_00 + 0xb0) == local_68)) {
      puStack_110 = (undefined *)0x86805b;
      iVar2 = FUN_00850760();
      if (iVar2 == 0) {
        puStack_110 = auStack_58;
        cVar1 = FUN_0085ddc0(param_1_00 + 0x78);
        if (cVar1 != '\0') {
          puStack_110 = (undefined *)(param_1_00 + 0xc0);
          iVar2 = FUN_008531f0(auStack_c4);
          local_4 = 0xd;
          if (local_f4 != iVar2) {
            puStack_110 = (undefined *)0x0;
            FID_conflict_assign(iVar2);
          }
          local_4 = 3;
          puStack_110 = (undefined *)0x8680c6;
          _free(pvStack_a8);
          if (7 < uStack_ac) {
                    // WARNING: Subroutine does not return
            puStack_110 = &UNK_008680d9;
            FUN_00a3f6a1();
          }
        }
      }
    }
    puStack_110 = (undefined *)0x8680f0;
    iVar2 = FUN_008507a0();
  } while( true );
}



void __fastcall FUN_008681f0(int **param_1)

{
  int *piVar1;
  
  piVar1 = *param_1;
  if ((piVar1 != (int *)0x0) && (*piVar1 = *piVar1 + -1, *piVar1 == 0)) {
    FUN_00867550();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(piVar1);
  }
  return;
}



void __fastcall FUN_00868210(int param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6418;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  piVar1 = *(int **)(param_1 + 0x24);
  local_4 = 0;
  if ((piVar1 != (int *)0x0) && (*piVar1 = *piVar1 + -1, *piVar1 == 0)) {
    FUN_00867550(uVar2);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(piVar1);
  }
  _free(*(void **)(param_1 + 0x1c));
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008682b0(int param_1_00,undefined4 param_1)

{
  if (*(int *)(param_1_00 + 0x70) == 0) {
    FUN_004325b6(PTR_DAT_03236318);
    return param_1;
  }
  FUN_00867ac0(param_1);
  return param_1;
}



undefined4 * __thiscall FUN_008682f0(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  
  *param_1_00 = 0;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[8] = 0;
  piVar1 = *(int **)(param_1 + 0x24);
  if (piVar1 != (int *)0x0) {
    *piVar1 = *piVar1 + 1;
    param_1_00[10] = piVar1;
    return param_1_00;
  }
  param_1_00[10] = 0;
  return param_1_00;
}



undefined4 * __thiscall FUN_00868350(int *param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  float fVar2;
  float fVar3;
  void *pvVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar4 = operator_new(0x2c);
  puVar5 = (undefined4 *)0x0;
  local_4 = 0;
  if (pvVar4 != (void *)0x0) {
    puVar5 = (undefined4 *)FUN_008682f0(param_1);
  }
  *puVar5 = *(undefined4 *)(*param_1_00 + param_2 * 4);
  *(undefined4 **)(*param_1_00 + param_2 * 4) = puVar5;
  param_1_00[2] = param_1_00[2] + 1;
  iVar1 = param_1_00[1];
  fVar2 = (float)param_1_00[2];
  local_4 = 0xffffffff;
  if (param_1_00[2] < 0) {
    fVar2 = fVar2 + 4.294967e+09;
  }
  fVar3 = (float)iVar1;
  if (iVar1 < 0) {
    fVar3 = fVar3 + 4.294967e+09;
  }
  if (0.85 <= fVar2 / fVar3) {
    FUN_00b28480(iVar1);
  }
  ExceptionList = local_c;
  return puVar5;
}



void FUN_00868410(int param_1)

{
  if (param_1 != 0) {
    FUN_00868210();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



undefined4 * __thiscall FUN_00868430(int *param_1_00,int param_1,undefined *param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    iVar3 = param_1 + 4;
  }
  else {
    iVar3 = *(int *)(param_1 + 4);
  }
  uVar2 = FUN_00893df0(iVar3);
  uVar1 = param_1_00[1];
  puVar4 = *(undefined4 **)(*param_1_00 + (uVar2 % uVar1) * 4);
  while( true ) {
    if (puVar4 == (undefined4 *)0x0) {
      *param_2 = 1;
      puVar4 = (undefined4 *)FUN_00868350(param_1,uVar2 % uVar1);
      return puVar4;
    }
    if ((puVar4[6] == *(int *)(param_1 + 0x14)) && (iVar3 = FUN_00850760(param_1), iVar3 == 0))
    break;
    puVar4 = (undefined4 *)*puVar4;
  }
  *param_2 = 0;
  return puVar4;
}



int FUN_008684b0(undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_34 [4];
  undefined2 local_30;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc94a0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  local_4 = 0;
  local_1c = 7;
  local_20 = 0;
  local_30 = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  local_18 = 0;
  local_10 = 0;
  local_4._0_1_ = 1;
  iVar2 = FUN_00868430(local_34,&param_1);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00868210(uVar1);
  ExceptionList = local_c;
  return iVar2 + 0x28;
}



int ** FUN_00868550(int *param_1,int *param_2,int *param_3)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined4 uVar6;
  undefined auStack_30 [4];
  int *piStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc94e0;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  ppiVar4 = (int **)FUN_008684b0(param_1);
  cVar2 = (**(code **)(*param_3 + 0x1c))(uVar3);
  if (cVar2 == '\0') {
    FUN_004325b6(L"wxbf");
    uStack_4 = 1;
    uVar6 = FUN_008a3de0(param_3,0x4000,auStack_30);
    uStack_4._0_1_ = 2;
    ppiVar5 = (int **)FUN_00867a50(param_2,uVar6);
    piVar1 = *ppiVar4;
    uStack_4 = CONCAT31(uStack_4._1_3_,3);
    if (*ppiVar5 != piVar1) {
      if ((piVar1 != (int *)0x0) && (*piVar1 = *piVar1 + -1, *piVar1 == 0)) {
        FUN_00867550();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(piVar1);
      }
      piVar1 = *ppiVar5;
      *ppiVar4 = piVar1;
      if (piVar1 != (int *)0x0) {
        *piVar1 = *piVar1 + 1;
      }
    }
    uStack_4 = CONCAT31(uStack_4._1_3_,2);
    if ((param_1 != (int *)0x0) && (*param_1 = *param_1 + -1, *param_1 == 0)) {
      FUN_00867550();
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_1);
    }
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    FUN_008a3e60();
    _free(pvStack_14);
    param_2 = piStack_2c;
    if (uStack_18 < 8) {
      ExceptionList = local_c;
      return ppiVar4;
    }
  }
  else {
    ppiVar5 = (int **)FUN_008676b0(param_2,param_3);
    piVar1 = *ppiVar4;
    uStack_4 = 0;
    if (*ppiVar5 != piVar1) {
      if ((piVar1 != (int *)0x0) && (*piVar1 = *piVar1 + -1, *piVar1 == 0)) {
        FUN_00867550();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(piVar1);
      }
      piVar1 = *ppiVar5;
      *ppiVar4 = piVar1;
      if (piVar1 != (int *)0x0) {
        *piVar1 = *piVar1 + 1;
      }
    }
    uStack_4 = 0xffffffff;
    if ((param_2 == (int *)0x0) || (*param_2 = *param_2 + -1, *param_2 != 0)) {
      ExceptionList = local_c;
      return ppiVar4;
    }
    FUN_00867550();
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_2);
}



void FUN_008686f0(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 ****ppppuVar3;
  int iVar4;
  undefined *puVar5;
  void **ppvVar6;
  void *pvVar7;
  int *piVar8;
  int *piVar9;
  undefined4 uVar10;
  undefined4 *puVar11;
  uint uVar12;
  int *piVar13;
  void **local_1ec;
  uint local_1e8;
  int local_1e4;
  undefined local_1e0 [4];
  undefined4 ****local_1dc [4];
  undefined4 local_1cc;
  uint local_1c8;
  void *local_1c4;
  undefined4 local_1bc;
  undefined local_1b8 [4];
  uint local_1b4;
  undefined4 local_1a4;
  uint local_1a0;
  void *local_19c;
  undefined local_194 [4];
  uint local_190;
  undefined4 local_180;
  uint local_17c;
  void *local_178;
  undefined auStack_170 [8];
  undefined auStack_168 [36];
  undefined auStack_144 [36];
  undefined local_120 [4];
  undefined4 local_11c;
  int local_10c;
  uint local_108;
  void *local_104;
  undefined local_fc [4];
  uint local_f8;
  undefined4 local_e8;
  uint local_e4;
  void *local_e0;
  undefined local_d8 [4];
  uint local_d4;
  undefined4 local_c4;
  uint local_c0;
  void *local_bc;
  undefined local_b4 [4];
  uint local_b0;
  undefined4 local_a0;
  uint local_9c;
  void *local_98;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc95fb;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_1ec;
  ExceptionList = &local_c;
  piVar13 = (int *)0x0;
  local_1bc = param_2;
  local_1e8 = 0;
  FUN_008640f0(local_120,param_2,DAT_0323f878 ^ (uint)&stack0xfffffe04);
  local_4 = 0;
  FUN_00864030(local_fc,param_2);
  local_4._0_1_ = 1;
  FUN_00863e80(local_b4,param_2);
  local_4._0_1_ = 2;
  uVar2 = FUN_008533d0(local_1b8,local_fc,&DAT_030585e0);
  local_4._0_1_ = 3;
  uVar2 = FUN_008531f0(local_194,uVar2,local_b4);
  local_4._0_1_ = 4;
  FUN_008533d0(local_d8,uVar2,&DAT_00d293f4);
  _free(local_178);
  if (7 < local_17c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_190);
  }
  local_17c = 7;
  local_180 = 0;
  local_190 = local_190 & 0xffff0000;
  local_4._0_1_ = 7;
  _free(local_19c);
  if (7 < local_1a0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_1b4);
  }
  local_1b4 = local_1b4 & 0xffff0000;
  local_1a0 = 7;
  local_1a4 = 0;
  FUN_004325b6(&DAT_00d29124);
  ppppuVar3 = local_1dc[0];
  if (local_1c8 < 8) {
    ppppuVar3 = local_1dc;
  }
  iVar4 = FUN_00420f3f(ppppuVar3,0,local_1cc);
  if (iVar4 == -1) {
    iVar4 = -1;
  }
  _free(local_1c4);
  if (7 < local_1c8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_1dc[0]);
  }
  if (iVar4 != -1) {
    FUN_0081feb2(&local_1ec,0);
    if (local_1ec != (void **)0x2f) {
      puVar5 = (undefined *)FUN_00855c70(local_1e0,0x2f,local_120);
      local_4._0_1_ = 8;
      if (local_120 != puVar5) {
        FID_conflict_assign(puVar5,0,0xffffffff);
      }
      local_4._0_1_ = 7;
      _free(local_1c4);
      if (7 < local_1c8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_1dc[0]);
      }
    }
    FUN_00432544(local_120,1);
    local_4._0_1_ = 9;
    FUN_004325b6(&DAT_03057848);
    local_4._0_1_ = 10;
    FUN_00859fd0(2,local_1e0,1);
    local_4._0_1_ = 9;
    _free(local_1c4);
    if (7 < local_1c8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_1dc[0]);
    }
    puVar5 = (undefined *)FUN_008581b0(local_1e0,1);
    local_4._0_1_ = 0xb;
    if (local_120 != puVar5) {
      FID_conflict_assign(puVar5,0,0xffffffff);
    }
    _free(local_1c4);
    if (7 < local_1c8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_1dc[0]);
    }
    local_4._0_1_ = 7;
    FUN_0043250a();
  }
  if ((local_10c != 0) && (FUN_0081feb2(&local_1ec,0), local_1ec == (void **)0x2f)) {
    puVar5 = (undefined *)FUN_00852560(local_1e0,1,0xffffffff);
    local_4._0_1_ = 0xc;
    if (local_120 != puVar5) {
      FID_conflict_assign(puVar5,0,0xffffffff);
    }
    local_4._0_1_ = 7;
    _free(local_1c4);
    if (7 < local_1c8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_1dc[0]);
    }
  }
  if (*(int *)(local_1e4 + 8) == 0) {
    ppvVar6 = (void **)operator_new(0x10);
    local_4._0_1_ = 0xd;
    local_1ec = ppvVar6;
    if (ppvVar6 == (void **)0x0) {
      ppvVar6 = (void **)0x0;
    }
    else {
      pvVar7 = (void *)FUN_00893ca0(100);
      ppvVar6[1] = pvVar7;
      ppvVar6[2] = (void *)0x0;
      pvVar7 = _calloc((size_t)pvVar7,4);
      *ppvVar6 = pvVar7;
    }
    local_4._0_1_ = 7;
    *(void ***)(local_1e4 + 8) = ppvVar6;
  }
  piVar8 = (int *)FUN_008a63c0(local_b4,0);
  if (piVar8 == (int *)0x0) {
    _free(local_bc);
    if (7 < local_c0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_d4);
    }
    local_c0 = 7;
    local_c4 = 0;
    local_d4 = local_d4 & 0xffff0000;
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b0);
    }
    local_9c = 7;
    local_a0 = 0;
    local_b0 = local_b0 & 0xffff0000;
    _free(local_e0);
    if (7 < local_e4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_f8);
    }
    local_e4 = 7;
    local_e8 = 0;
    local_f8 = local_f8 & 0xffff0000;
    _free(local_104);
    if (7 < local_108) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_11c);
    }
    goto LAB_00868e3a;
  }
  iVar4 = FUN_00970c40(local_d8);
  if ((iVar4 == 0) || (piVar13 = (int *)(iVar4 + 0x28), piVar13 == (int *)0x0)) {
    piVar9 = (int *)FUN_00864c40(local_fc,1);
    if (piVar9 != piVar13) {
      iVar4 = piVar9[2];
      piVar9[2] = (int)piVar13;
      FUN_00868550(local_d8,piVar8,iVar4);
      (**(code **)(*piVar9 + 4))(1);
      goto LAB_00868c47;
    }
  }
  else {
LAB_00868c47:
    piVar13 = (int *)FUN_00867930(local_120);
    if (piVar13 != (int *)0x0) {
      iVar4 = FUN_008671d0();
      if (iVar4 == 0) {
        piVar9 = (int *)FUN_00864c40(local_fc,1);
        if (piVar9 == (int *)0x0) goto LAB_00868cd2;
        iVar4 = piVar9[2];
        piVar9[2] = 0;
        (**(code **)(*piVar9 + 4))(1);
      }
      piVar8 = (int *)(**(code **)(*piVar8 + 0x20))(iVar4);
      if (piVar8 != (int *)0x0) {
        (**(code **)(*piVar8 + 0x48))(piVar13);
        cVar1 = (**(code **)(*piVar8 + 0x10))();
        if (cVar1 != '\0') {
          local_1ec = (void **)operator_new(0x80);
          local_4._0_1_ = 0xe;
          if (local_1ec != (void **)0x0) {
            FUN_004325b6(PTR_DAT_03236318);
            local_4 = CONCAT31(local_4._1_3_,0xf);
            local_1e8 = 1;
            uVar2 = FUN_008641f0(auStack_144,local_1bc);
            local_4 = 0x10;
            local_1e8 = 3;
            uVar10 = FUN_008531f0(auStack_168,local_d8,local_120);
            local_4._0_1_ = 0x11;
            local_4._1_3_ = 0;
            local_1e8 = 7;
            puVar11 = (undefined4 *)(**(code **)(*piVar13 + 0x10))(auStack_170);
            FUN_00863c30(piVar8,uVar10,local_1e0,uVar2,*puVar11,puVar11[1]);
          }
          uVar12 = local_1e8;
          if ((local_1e8 & 4) != 0) {
            uVar12 = local_1e8 & 0xfffffffb;
            FUN_0040159c();
          }
          if ((uVar12 & 2) != 0) {
            uVar12 = uVar12 & 0xfffffffd;
            FUN_0040159c();
          }
          if ((uVar12 & 1) != 0) {
            FUN_0040159c();
          }
          FUN_0040159c();
          FUN_0040159c();
          FUN_0040159c();
          FUN_0040159c();
          goto LAB_00868e3a;
        }
        (**(code **)(*piVar8 + 4))(1);
      }
    }
  }
LAB_00868cd2:
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
LAB_00868e3a:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00868e70(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  char cVar1;
  undefined4 uVar2;
  int *piVar3;
  void **ppvVar4;
  void *pvVar5;
  int iVar6;
  int iVar7;
  undefined4 local_11c;
  void **local_118;
  undefined4 local_110;
  undefined local_10c [24];
  uint local_f4;
  void *local_f0;
  undefined local_e8 [4];
  uint local_e4;
  undefined4 local_d4;
  uint local_d0;
  void *local_cc;
  undefined local_c4 [4];
  uint local_c0;
  undefined4 local_b0;
  uint local_ac;
  void *local_a8;
  int local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc96b1;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_11c;
  ExceptionList = &local_c;
  local_11c = param_1;
  local_110 = param_2;
  local_118 = (void **)0x0;
  FUN_008640f0();
  local_4 = 0;
  FUN_00864030(local_34,param_2);
  local_4._0_1_ = 1;
  FUN_00863e80(local_58,param_2);
  local_4._0_1_ = 2;
  uVar2 = FUN_008533d0(local_c4,local_34,&DAT_030585e0);
  local_4._0_1_ = 3;
  uVar2 = FUN_008531f0(local_e8,uVar2,local_58);
  local_4._0_1_ = 4;
  FUN_008533d0(local_7c,uVar2,&DAT_00d293f4);
  _free(local_cc);
  if (7 < local_d0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_d0 = 7;
  local_d4 = 0;
  local_e4 = local_e4 & 0xffff0000;
  local_4._0_1_ = 7;
  _free(local_a8);
  if (7 < local_ac) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_ac = 7;
  local_b0 = 0;
  local_c0 = local_c0 & 0xffff0000;
  if (local_8c != 0) {
    piVar3 = (int *)FUN_0081b3d8();
    if (*piVar3 != -4) {
      if (*piVar3 == 0) {
        FUN_00a3fb10();
      }
      iVar6 = *piVar3;
      if (*(uint *)(iVar6 + 0x18) < 8) {
        iVar7 = iVar6 + 4;
      }
      else {
        iVar7 = *(int *)(iVar6 + 4);
      }
      if ((uint)(iVar7 + *(int *)(iVar6 + 0x14) * 2) <= (uint)piVar3[1]) {
        FUN_00a3fb10();
      }
    }
    if (*(short *)piVar3[1] == 0x2f) {
      FUN_00851a60();
    }
  }
  if (*(int *)(param_1_00 + 8) == 0) {
    ppvVar4 = (void **)operator_new(0x10);
    local_4._0_1_ = 8;
    local_118 = ppvVar4;
    if (ppvVar4 == (void **)0x0) {
      ppvVar4 = (void **)0x0;
    }
    else {
      pvVar5 = (void *)FUN_00893ca0();
      ppvVar4[1] = pvVar5;
      ppvVar4[2] = (void *)0x0;
      pvVar5 = _calloc((size_t)pvVar5,4);
      *ppvVar4 = pvVar5;
    }
    local_4._0_1_ = 7;
    *(void ***)(param_1_00 + 8) = ppvVar4;
  }
  iVar6 = FUN_008a63c0();
  if (iVar6 == 0) {
    FUN_004325b6();
    _free(local_60);
    if (7 < local_64) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_64 = 7;
    local_68 = 0;
    local_78 = local_78 & 0xffff0000;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    _free(local_84);
    if (7 < local_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    goto LAB_008694e8;
  }
  iVar6 = FUN_00970c40();
  if (iVar6 == 0) {
    iVar6 = 0;
  }
  else {
    iVar6 = iVar6 + 0x28;
  }
  *(int *)(param_1_00 + 0x70) = iVar6;
  if (iVar6 == 0) {
    piVar3 = (int *)FUN_00864c40();
    if (piVar3 != (int *)0x0) {
      piVar3[2] = 0;
      uVar2 = FUN_00868550(local_7c);
      *(undefined4 *)(param_1_00 + 0x70) = uVar2;
      (**(code **)(*piVar3 + 4))();
      goto LAB_00869223;
    }
LAB_008694ab:
    FUN_004325b6();
  }
  else {
LAB_00869223:
    *(undefined4 *)(param_1_00 + 0x74) = 0;
    if (param_3 == 1) {
      *(undefined *)(param_1_00 + 0xe4) = 0;
LAB_0086924d:
      *(undefined *)(param_1_00 + 0xe5) = 1;
    }
    else {
      *(undefined *)(param_1_00 + 0xe4) = 1;
      if (param_3 != 2) goto LAB_0086924d;
      *(undefined *)(param_1_00 + 0xe5) = 0;
    }
    if ((undefined *)(param_1_00 + 0xc0) != local_7c) {
      FID_conflict_assign(local_7c);
    }
    local_118 = (void **)&stack0xfffffecc;
    iVar6 = FUN_00852730();
    local_4._0_1_ = 9;
    if (param_1_00 + 0x78 != iVar6) {
      FID_conflict_assign(iVar6);
    }
    local_4._0_1_ = 7;
    _free(local_f0);
    if (7 < local_f4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_118 = (void **)&stack0xfffffec8;
    iVar6 = FUN_00852900(local_10c);
    local_4._0_1_ = 10;
    if (param_1_00 + 0x9c != iVar6) {
      FID_conflict_assign(iVar6);
    }
    local_4._0_1_ = 7;
    _free(local_f0);
    if (7 < local_f4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    FUN_004325b6();
    local_4._0_1_ = 0xb;
    cVar1 = FUN_00852010();
    local_4._0_1_ = 7;
    _free(local_f0);
    if (7 < local_f4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (cVar1 != '\0') {
      iVar6 = FUN_00852560(local_10c);
      local_4._0_1_ = 0xc;
      if (param_1_00 + 0x9c != iVar6) {
        FID_conflict_assign(iVar6);
      }
      local_4._0_1_ = 7;
      FUN_0040159c();
    }
    if (*(int *)(param_1_00 + 0x70) == 0) goto LAB_008694ab;
    if (*(char *)(param_1_00 + 0xe4) == '\0') {
LAB_00869465:
      FUN_00867ac0();
      FUN_0040159c();
      FUN_0040159c();
      FUN_0040159c();
      FUN_0040159c();
      goto LAB_008694e8;
    }
    ppvVar4 = *(void ***)(param_1_00 + 0xe8);
    if (ppvVar4 != (void **)0x0) {
      FUN_00893cf0(ppvVar4[1]);
      ppvVar4[2] = (void *)0x0;
      _free(*ppvVar4);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar4);
    }
    local_118 = (void **)operator_new(0x10);
    local_4._0_1_ = 0xd;
    if (local_118 == (void **)0x0) {
      uVar2 = 0;
    }
    else {
      uVar2 = FUN_00908980(100);
    }
    local_4._0_1_ = 7;
    *(undefined4 *)(param_1_00 + 0xe8) = uVar2;
    if (local_8c != 0) goto LAB_00869465;
    FUN_004325a0();
  }
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
  FUN_0040159c();
LAB_008694e8:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00869520(undefined4 *param_1)

{
  void **ppvVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bc971a;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *param_1 = wxArchiveFSHandler::vftable;
  ppvVar1 = (void **)param_1[0x3a];
  local_4 = 4;
  if (ppvVar1 != (void **)0x0) {
    FUN_00893cf0(ppvVar1[1],*ppvVar1,FUN_009e7620,uVar2);
    ppvVar1[2] = (void *)0x0;
    _free(*ppvVar1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(ppvVar1);
  }
  ppvVar1 = (void **)param_1[2];
  if (ppvVar1 != (void **)0x0) {
    FUN_00893cf0(ppvVar1[1],*ppvVar1,FUN_00868410,uVar2);
    ppvVar1[2] = (void *)0x0;
    _free(*ppvVar1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(ppvVar1);
  }
  _free((void *)param_1[0x37]);
  if (7 < (uint)param_1[0x36]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x31]);
  }
  param_1[0x36] = 7;
  param_1[0x35] = 0;
  *(undefined2 *)(param_1 + 0x31) = 0;
  _free((void *)param_1[0x2e]);
  if (7 < (uint)param_1[0x2d]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x28]);
  }
  param_1[0x2d] = 7;
  param_1[0x2c] = 0;
  *(undefined2 *)(param_1 + 0x28) = 0;
  _free((void *)param_1[0x25]);
  if (7 < (uint)param_1[0x24]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x1f]);
  }
  param_1[0x24] = 7;
  param_1[0x23] = 0;
  *(undefined2 *)(param_1 + 0x1f) = 0;
  local_4 = local_4 & 0xffffff00;
  FUN_00863720();
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008696b0(undefined4 param_1_00,byte param_1)

{
  FUN_00869520();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_00869740(int param_1_00,int param_1)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  int *piVar4;
  int iVar5;
  
  iVar5 = *(int *)(param_1_00 + 0x1c);
  do {
    if (iVar5 == 0) {
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      *(undefined4 *)(param_1 + 0x1c) = 0;
      return param_1;
    }
    cVar2 = FUN_00852fc0(param_1_00 + 8);
    piVar1 = *(int **)(param_1_00 + 0x2c);
    iVar5 = *piVar1;
    if (iVar5 == 0) {
      iVar5 = *(int *)(param_1_00 + 0x30);
      if ((uint)piVar1[7] < 8) {
        piVar4 = piVar1 + 2;
      }
      else {
        piVar4 = (int *)piVar1[2];
      }
      uVar3 = FUN_00893df0(piVar4);
      uVar3 = uVar3 % *(uint *)(iVar5 + 4) + 1;
      if (uVar3 < (uint)(*(int **)(param_1_00 + 0x30))[1]) {
        iVar5 = **(int **)(param_1_00 + 0x30);
        piVar4 = (int *)(iVar5 + uVar3 * 4);
        do {
          if (*piVar4 != 0) {
            iVar5 = *(int *)(iVar5 + uVar3 * 4);
            goto LAB_008697ba;
          }
          uVar3 = uVar3 + 1;
          piVar4 = piVar4 + 1;
        } while (uVar3 < *(uint *)(*(int *)(param_1_00 + 0x30) + 4));
      }
      iVar5 = 0;
    }
LAB_008697ba:
    *(int *)(param_1_00 + 0x2c) = iVar5;
    if (iVar5 == 0) {
      FUN_00432156();
    }
    if (cVar2 != '\0') {
      FUN_008534d0(param_1,"memory:",piVar1 + 1);
      return param_1;
    }
    iVar5 = *(int *)(param_1_00 + 0x1c);
  } while( true );
}



undefined4 FUN_00869820(undefined4 param_1,undefined4 param_2)

{
  short sVar1;
  short *psVar2;
  undefined4 *puVar3;
  short *psVar4;
  undefined4 uVar5;
  void **ppvVar6;
  void **local_4;
  
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440();
  }
  puVar3 = (undefined4 *)FUN_0043c155(&local_4,param_1,DAT_032bd4d4);
  psVar2 = *(short **)*puVar3;
  psVar4 = psVar2;
  do {
    sVar1 = *psVar4;
    psVar4 = psVar4 + 1;
  } while (sVar1 != 0);
  uVar5 = FUN_00824bf0(psVar2,param_2,(int)psVar4 - (int)(psVar2 + 1) >> 1);
  ppvVar6 = (void **)FUN_00850350();
  if (local_4 != ppvVar6) {
    *(short *)(local_4 + 2) = *(short *)(local_4 + 2) + -1;
    if (*(short *)(local_4 + 2) == 0) {
      if (*(char *)((int)local_4 + 10) != '\0') {
        _free(*local_4);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_4);
    }
    FUN_00850350();
  }
  return uVar5;
}



undefined4 * __thiscall FUN_008698c0(undefined4 *param_1,byte param_2)

{
  *param_1 = wxMemoryFSFile::vftable;
  FUN_00a3f66c(param_1[2]);
  _free((void *)param_1[0xb]);
  if (7 < (uint)param_1[10]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[5]);
  }
  param_1[10] = 7;
  param_1[9] = 0;
  *(undefined2 *)(param_1 + 5) = 0;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void __fastcall FUN_00869920(undefined4 *param_1)

{
  uint uVar1;
  uint uVar2;
  int *piVar3;
  int *piVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_c = ExceptionList;
  puStack_8 = &LAB_00bc9753;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *param_1 = wxMemoryFSHandlerBase::vftable;
  uVar2 = 0;
  local_4 = 1;
  if (DAT_032bdb50 != 0) {
    do {
      if (*(int *)(DAT_032bdb4c + uVar2 * 4) != 0) {
        piVar3 = *(int **)(DAT_032bdb4c + uVar2 * 4);
        goto joined_r0x00869988;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < DAT_032bdb50);
  }
  piVar3 = (int *)0x0;
joined_r0x00869988:
  do {
    do {
      piVar4 = piVar3;
      if (piVar4 == (int *)0x0) {
        FUN_00893cf0(DAT_032bdb50,DAT_032bdb4c,FUN_009e7620);
        _DAT_032bdb54 = 0;
        _free((void *)param_1[9]);
        if ((uint)param_1[8] < 8) {
          param_1[8] = 7;
          param_1[7] = 0;
          *(undefined2 *)(param_1 + 3) = 0;
          local_4 = 0xffffffff;
          *param_1 = wxObject::vftable;
          FUN_0083e850();
          ExceptionList = local_c;
          return;
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(param_1[3]);
      }
      if ((undefined4 *)piVar4[10] != (undefined4 *)0x0) {
        (***(code ***)(undefined4 *)piVar4[10])(1,uVar1);
      }
      piVar3 = (int *)*piVar4;
    } while ((int *)*piVar4 != (int *)0x0);
    if ((uint)piVar4[7] < 8) {
      piVar4 = piVar4 + 2;
    }
    else {
      piVar4 = (int *)piVar4[2];
    }
    uVar2 = FUN_00893df0(piVar4);
    uVar2 = uVar2 % DAT_032bdb50 + 1;
    if (uVar2 < DAT_032bdb50) {
      piVar3 = (int *)(DAT_032bdb4c + uVar2 * 4);
      do {
        if (*piVar3 != 0) {
          piVar3 = *(int **)(DAT_032bdb4c + uVar2 * 4);
          goto joined_r0x00869988;
        }
        uVar2 = uVar2 + 1;
        piVar3 = piVar3 + 1;
      } while (uVar2 < DAT_032bdb50);
    }
    piVar3 = (int *)0x0;
  } while( true );
}



undefined FUN_00869a70(undefined4 param_1)

{
  undefined uVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_00863e80(local_30,param_1,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  local_4 = 0;
  uVar1 = FUN_00855fb0(uVar2,"memory");
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return uVar1;
}



undefined4 FUN_00869af0(undefined4 param_1,undefined4 param_2)

{
  bool bVar1;
  undefined4 uVar2;
  int iVar3;
  void *pvVar4;
  undefined4 uVar5;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc97a7;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar5 = 0;
  bVar1 = false;
  uVar2 = FUN_008640f0(local_54,param_2,DAT_0323f878 ^ (uint)&stack0xffffff98);
  local_4 = 0;
  iVar3 = FUN_00970c40(uVar2);
  local_4 = 0xffffffff;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  uVar2 = 0;
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  if (iVar3 != 0) {
    iVar3 = *(int *)(iVar3 + 0x28);
    pvVar4 = operator_new(0x80);
    local_4 = 1;
    if (pvVar4 == (void *)0x0) {
      uVar2 = 0;
    }
    else {
      pvVar4 = operator_new(0x24);
      local_4._0_1_ = 2;
      if (pvVar4 != (void *)0x0) {
        uVar5 = FUN_00874cb0(*(undefined4 *)(iVar3 + 8),*(undefined4 *)(iVar3 + 0xc));
      }
      local_4._0_1_ = 1;
      uVar2 = FUN_008641f0(local_30,param_2);
      local_4 = CONCAT31(local_4._1_3_,3);
      bVar1 = true;
      uVar2 = FUN_00863c30(uVar5,param_2,iVar3 + 0x10,uVar2,*(undefined4 *)(iVar3 + 0x38),
                           *(undefined4 *)(iVar3 + 0x3c));
    }
    if ((bVar1) && (_free(local_14), 7 < local_18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return uVar2;
}



void __thiscall FUN_00869c50(int *param_1_00,int param_1,undefined *param_2,byte param_3)

{
  int iVar1;
  undefined *puVar2;
  int *piVar3;
  undefined *local_64;
  undefined4 local_60 [2];
  undefined local_58 [4];
  undefined2 local_54;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  int local_34;
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc97f1;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_64;
  ExceptionList = &local_c;
  local_64 = param_2;
  local_60[0] = 0;
  if (((param_3 & 2) == 0) || ((param_3 & 1) != 0)) {
    FUN_008640f0(&local_34,param_2,DAT_0323f878 ^ (uint)&stack0xffffff8c);
    local_4 = 0;
    iVar1 = FUN_00869820(&DAT_00d2945c,0);
    if (iVar1 == -1) {
      iVar1 = FUN_00970c40(&local_34);
      puVar2 = local_64;
      if (iVar1 == 0) {
        local_40 = 7;
        local_44 = 0;
        local_54 = 0;
        local_3c = 0;
        local_4 = CONCAT31(local_4._1_3_,1);
        local_60[0] = 2;
        puVar2 = local_58;
      }
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(puVar2,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      if (iVar1 == 0) {
        FUN_0040159c();
      }
      _free(local_18);
    }
    else {
      if (param_1_00 + 2 != &local_34) {
        FID_conflict_assign(&local_34,0,0xffffffff);
      }
      piVar3 = (int *)FUN_009da970(local_60);
      iVar1 = piVar3[1];
      param_1_00[0xb] = *piVar3;
      param_1_00[0xc] = iVar1;
      (**(code **)(*param_1_00 + 0x1c))(param_1);
      _free(local_18);
    }
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  else {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    *(undefined4 *)(param_1 + 0x1c) = 0;
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00869e00(undefined4 param_1)

{
  if (DAT_032bd4e4 == 0) {
    DAT_032bd4e4 = FUN_00863050();
  }
  FUN_00432413(param_1,DAT_032bd4e4);
  return param_1;
}



undefined4 __thiscall FUN_00869e40(undefined4 param_1_00,byte param_1)

{
  FUN_00869920();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



uint FUN_00869e60(undefined4 param_1)

{
  int iVar1;
  void *pvVar2;
  uint uVar3;
  uint local_a0;
  void *local_9c;
  undefined local_94 [44];
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9851;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = FUN_00970c40();
  if (iVar1 == 0) {
    uVar3 = 1;
  }
  else {
    FUN_0043c211(&DAT_00d25fa0);
    pvVar2 = (void *)FUN_00846b30(1);
    if ((char)pvVar2 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar1 = FUN_0084a340();
      if (iVar1 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FID_conflict_assign(param_1,0,0xffffffff);
      local_4._0_1_ = 3;
      FUN_008423d0(1,"..\\..\\src\\common\\fs_mem.cpp",0xb0,
                   "wxMemoryFSHandlerBase::CheckDoesntExist",&DAT_00d25fa0);
      local_4._0_1_ = 5;
      FUN_00848780(local_94);
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      _free(local_9c);
      if (7 < local_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(local_64);
      pvVar2 = local_64;
      if (7 < local_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    uVar3 = (uint)pvVar2 & 0xffffff00;
  }
  ExceptionList = local_c;
  return uVar3;
}



void __fastcall FUN_0086a040(uint *param_1)

{
  longlong lVar1;
  void *_Dst;
  
  if ((param_1[1] < *param_1) &&
     (lVar1 = (ulonglong)param_1[1] * 4,
     _Dst = (void *)FUN_00823c23(-(uint)((int)((ulonglong)lVar1 >> 0x20) != 0) | (uint)lVar1),
     _Dst != (void *)0x0)) {
    _memcpy(_Dst,(void *)param_1[2],param_1[1] * 4);
    FUN_00a3f66c(param_1[2]);
    param_1[2] = (uint)_Dst;
    *param_1 = param_1[1];
  }
  return;
}



void __thiscall FUN_0086a0a0(int param_1_00,undefined4 param_1,uint param_2,int param_3)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  
  uVar1 = *(uint *)(param_1_00 + 4);
  if (uVar1 < param_2) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\dynarray.cpp",0x179,"wxBaseArrayPtrVoid::Insert",
                   "nIndex <= m_nCount",L"bad index in wxArray::Insert");
      return;
    }
  }
  else if (uVar1 + param_3 < uVar1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\dynarray.cpp",0x179,"wxBaseArrayPtrVoid::Insert",
                   "m_nCount <= m_nCount + nInsert",L"array size overflow in wxArray::Insert");
      return;
    }
  }
  else if (param_3 != 0) {
    FUN_0086a370(param_3);
    iVar2 = param_2 * 4;
    _memmove((void *)(*(int *)(param_1_00 + 8) + (param_2 + param_3) * 4),
             (void *)(*(int *)(param_1_00 + 8) + iVar2),(*(int *)(param_1_00 + 4) - param_2) * 4);
    iVar3 = param_3;
    if (param_3 != 0) {
      do {
        *(undefined4 *)(iVar2 + *(int *)(param_1_00 + 8)) = param_1;
        iVar2 = iVar2 + 4;
        iVar3 = iVar3 + -1;
      } while (iVar3 != 0);
    }
    *(int *)(param_1_00 + 4) = *(int *)(param_1_00 + 4) + param_3;
  }
  return;
}



uint __thiscall FUN_0086a180(int param_1_00,undefined4 param_1,code *param_2)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  
  uVar2 = *(uint *)(param_1_00 + 4);
  uVar4 = 0;
  if (uVar2 == 0) {
    return 0;
  }
  do {
    uVar3 = uVar2 + uVar4 >> 1;
    iVar1 = (*param_2)(param_1,*(undefined4 *)(*(int *)(param_1_00 + 8) + uVar3 * 4));
    if (-1 < iVar1) {
      if (iVar1 < 1) {
        return uVar3;
      }
      uVar4 = uVar3 + 1;
      uVar3 = uVar2;
    }
    uVar2 = uVar3;
  } while (uVar4 < uVar3);
  return uVar4;
}



void __thiscall FUN_0086a1e0(int param_1_00,uint param_1,int param_2)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1_00 + 4);
  if (param_1 < uVar1) {
    if (uVar1 < param_1 + param_2) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\dynarray.cpp",0x179,"wxBaseArrayPtrVoid::RemoveAt",
                     "nIndex + nRemove <= m_nCount",
                     L"removing too many elements in wxArray::RemoveAt");
        return;
      }
    }
    else {
      _memmove((void *)(*(int *)(param_1_00 + 8) + param_1 * 4),
               (void *)(*(int *)(param_1_00 + 8) + (param_1 + param_2) * 4),
               ((uVar1 - param_1) - param_2) * 4);
      *(int *)(param_1_00 + 4) = *(int *)(param_1_00 + 4) - param_2;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\dynarray.cpp",0x179,"wxBaseArrayPtrVoid::RemoveAt",
                 "nIndex < m_nCount",L"bad index in wxArray::RemoveAt");
    return;
  }
  return;
}



void __thiscall FUN_0086a280(int param_1_00,_PtFuncCompare *param_1)

{
  _qsort(*(void **)(param_1_00 + 8),*(size_t *)(param_1_00 + 4),4,param_1);
  return;
}



uint * __thiscall FUN_0086a2a0(uint *param_1_00,int param_1)

{
  uint uVar1;
  void *_Dst;
  
  uVar1 = *(uint *)(param_1 + 4);
  param_1_00[1] = uVar1;
  *param_1_00 = uVar1;
  if (uVar1 == 0) {
    param_1_00[2] = 0;
    return param_1_00;
  }
  _Dst = (void *)FUN_00823c23(-(uint)((int)((ulonglong)uVar1 * 4 >> 0x20) != 0) |
                              (uint)((ulonglong)uVar1 * 4));
  param_1_00[2] = (uint)_Dst;
  if (_Dst != (void *)0x0) {
    _memcpy(_Dst,*(void **)(param_1 + 8),param_1_00[1] * 4);
    return param_1_00;
  }
  *param_1_00 = 0;
  return param_1_00;
}



undefined4 __thiscall FUN_0086a310(uint *param_1_00,uint param_1)

{
  void *_Dst;
  
  _Dst = (void *)FUN_00823c23(-(uint)((int)((ulonglong)param_1 * 4 >> 0x20) != 0) |
                              (uint)((ulonglong)param_1 * 4));
  if (_Dst == (void *)0x0) {
    return 0;
  }
  *param_1_00 = param_1;
  _memcpy(_Dst,(void *)param_1_00[2],param_1_00[1] * 4);
  FUN_00a3f66c(param_1_00[2]);
  param_1_00[2] = (uint)_Dst;
  return 1;
}



void __thiscall FUN_0086a370(uint *param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  
  uVar2 = *param_1_00;
  if ((param_1_00[1] == uVar2) || (uVar2 - param_1_00[1] < param_1)) {
    if (uVar2 == 0) {
      uVar2 = 0x10;
      if (0x10 < param_1) {
        uVar2 = param_1;
      }
      uVar1 = FUN_00823c23(-(uint)((int)((ulonglong)uVar2 * 4 >> 0x20) != 0) |
                           (uint)((ulonglong)uVar2 * 4));
      param_1_00[2] = uVar1;
      if (uVar1 != 0) {
        *param_1_00 = uVar2;
        return;
      }
    }
    else {
      if (uVar2 < 0x10) {
        uVar1 = 0x10;
      }
      else {
        uVar1 = uVar2 >> 1;
        if (0x1000 < uVar1) {
          uVar1 = 0x1000;
        }
      }
      if (param_1 < uVar1) {
        param_1 = uVar1;
      }
      FUN_0086a310(uVar2 + param_1);
    }
  }
  return;
}



void __thiscall FUN_0086a400(int param_1_00,undefined4 param_1,int param_2)

{
  if ((param_2 != 0) && (FUN_0086a370(param_2), param_2 != 0)) {
    do {
      *(undefined4 *)(*(int *)(param_1_00 + 8) + *(int *)(param_1_00 + 4) * 4) = param_1;
      *(int *)(param_1_00 + 4) = *(int *)(param_1_00 + 4) + 1;
      param_2 = param_2 + -1;
    } while (param_2 != 0);
  }
  return;
}



void __thiscall FUN_0086a440(int param_1_00,undefined4 param_1,uint param_2,int param_3)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  
  uVar1 = *(uint *)(param_1_00 + 4);
  if (uVar1 < param_2) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\dynarray.cpp",0x17c,"wxBaseArrayInt::Insert",
                   "nIndex <= m_nCount",L"bad index in wxArray::Insert");
      return;
    }
  }
  else if (uVar1 + param_3 < uVar1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\dynarray.cpp",0x17c,"wxBaseArrayInt::Insert",
                   "m_nCount <= m_nCount + nInsert",L"array size overflow in wxArray::Insert");
      return;
    }
  }
  else if (param_3 != 0) {
    FUN_0086a370(param_3);
    iVar2 = param_2 * 4;
    _memmove((void *)(*(int *)(param_1_00 + 8) + (param_2 + param_3) * 4),
             (void *)(*(int *)(param_1_00 + 8) + iVar2),(*(int *)(param_1_00 + 4) - param_2) * 4);
    iVar3 = param_3;
    if (param_3 != 0) {
      do {
        *(undefined4 *)(iVar2 + *(int *)(param_1_00 + 8)) = param_1;
        iVar2 = iVar2 + 4;
        iVar3 = iVar3 + -1;
      } while (iVar3 != 0);
    }
    *(int *)(param_1_00 + 4) = *(int *)(param_1_00 + 4) + param_3;
  }
  return;
}



uint __thiscall FUN_0086a520(int param_1_00,undefined4 param_1,code *param_2)

{
  uint uVar1;
  int iVar2;
  
  uVar1 = FUN_0086a180(param_1,param_2);
  if (uVar1 < *(uint *)(param_1_00 + 4)) {
    iVar2 = (*param_2)(param_1,*(undefined4 *)(*(int *)(param_1_00 + 8) + uVar1 * 4));
    if (iVar2 == 0) {
      return uVar1;
    }
  }
  return 0xffffffff;
}



void __thiscall FUN_0086a560(int param_1_00,uint param_1,int param_2)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1_00 + 4);
  if (param_1 < uVar1) {
    if (uVar1 < param_1 + param_2) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\dynarray.cpp",0x17c,"wxBaseArrayInt::RemoveAt",
                     "nIndex + nRemove <= m_nCount",
                     L"removing too many elements in wxArray::RemoveAt");
        return;
      }
    }
    else {
      _memmove((void *)(*(int *)(param_1_00 + 8) + param_1 * 4),
               (void *)(*(int *)(param_1_00 + 8) + (param_1 + param_2) * 4),
               ((uVar1 - param_1) - param_2) * 4);
      *(int *)(param_1_00 + 4) = *(int *)(param_1_00 + 4) - param_2;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\dynarray.cpp",0x17c,"wxBaseArrayInt::RemoveAt",
                 "nIndex < m_nCount",L"bad index in wxArray::RemoveAt");
    return;
  }
  return;
}



void __fastcall FUN_0086a600(undefined4 *param_1)

{
  param_1[1] = 0;
  *param_1 = 0;
  param_1[2] = 0;
  return;
}



undefined4 __thiscall FUN_0086a610(uint *param_1_00,uint param_1)

{
  void *_Dst;
  
  _Dst = (void *)FUN_00823c23(-(uint)((int)((ulonglong)param_1 * 8 >> 0x20) != 0) |
                              (uint)((ulonglong)param_1 * 8));
  if (_Dst == (void *)0x0) {
    return 0;
  }
  *param_1_00 = param_1;
  _memcpy(_Dst,(void *)param_1_00[2],param_1_00[1] * 8);
  FUN_00a3f66c(param_1_00[2]);
  param_1_00[2] = (uint)_Dst;
  return 1;
}



void __thiscall FUN_0086a670(uint *param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  
  uVar2 = *param_1_00;
  if ((param_1_00[1] == uVar2) || (uVar2 - param_1_00[1] < param_1)) {
    if (uVar2 == 0) {
      uVar2 = 0x10;
      if (0x10 < param_1) {
        uVar2 = param_1;
      }
      uVar1 = FUN_00823c23(-(uint)((int)((ulonglong)uVar2 * 8 >> 0x20) != 0) |
                           (uint)((ulonglong)uVar2 * 8));
      param_1_00[2] = uVar1;
      if (uVar1 != 0) {
        *param_1_00 = uVar2;
        return;
      }
    }
    else {
      if (uVar2 < 0x10) {
        uVar1 = 0x10;
      }
      else {
        uVar1 = uVar2 >> 1;
        if (0x1000 < uVar1) {
          uVar1 = 0x1000;
        }
      }
      if (param_1 < uVar1) {
        param_1 = uVar1;
      }
      FUN_0086a610(uVar2 + param_1);
    }
  }
  return;
}



void __thiscall FUN_0086a700(int param_1_00,undefined8 param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  
  if (param_2 != 0) {
    FUN_0086a670(param_2);
    uVar2 = 0;
    if (3 < (int)param_2) {
      iVar1 = (param_2 - 4 >> 2) + 1;
      uVar2 = iVar1 * 4;
      do {
        *(undefined8 *)(*(int *)(param_1_00 + 8) + *(int *)(param_1_00 + 4) * 8) = param_1;
        *(int *)(param_1_00 + 4) = *(int *)(param_1_00 + 4) + 1;
        *(undefined8 *)(*(int *)(param_1_00 + 8) + *(int *)(param_1_00 + 4) * 8) = param_1;
        *(int *)(param_1_00 + 4) = *(int *)(param_1_00 + 4) + 1;
        *(undefined8 *)(*(int *)(param_1_00 + 8) + *(int *)(param_1_00 + 4) * 8) = param_1;
        *(int *)(param_1_00 + 4) = *(int *)(param_1_00 + 4) + 1;
        *(undefined8 *)(*(int *)(param_1_00 + 8) + *(int *)(param_1_00 + 4) * 8) = param_1;
        *(int *)(param_1_00 + 4) = *(int *)(param_1_00 + 4) + 1;
        iVar1 = iVar1 + -1;
      } while (iVar1 != 0);
    }
    if (uVar2 < param_2) {
      iVar1 = param_2 - uVar2;
      do {
        *(undefined8 *)(*(int *)(param_1_00 + 8) + *(int *)(param_1_00 + 4) * 8) = param_1;
        *(int *)(param_1_00 + 4) = *(int *)(param_1_00 + 4) + 1;
        iVar1 = iVar1 + -1;
      } while (iVar1 != 0);
    }
  }
  return;
}



uint __thiscall FUN_0086a790(int param_1_00,int param_1,char param_2)

{
  uint uVar1;
  uint uVar2;
  
  if (param_2 == '\0') {
    uVar1 = *(uint *)(param_1_00 + 4);
    uVar2 = 0;
    if (uVar1 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar1 <= uVar2)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        if (*(int *)(*(int *)(param_1_00 + 8) + uVar2 * 4) == param_1) {
          return uVar2;
        }
        uVar1 = *(uint *)(param_1_00 + 4);
        uVar2 = uVar2 + 1;
      } while (uVar2 < uVar1);
    }
  }
  else {
    uVar1 = *(uint *)(param_1_00 + 4);
    if (uVar1 != 0) {
      while( true ) {
        uVar1 = uVar1 - 1;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar1)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        if (*(int *)(*(int *)(param_1_00 + 8) + uVar1 * 4) == param_1) break;
        if (uVar1 == 0) {
          return 0xffffffff;
        }
      }
      return uVar1;
    }
  }
  return 0xffffffff;
}



undefined4 FUN_0086a850(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = FUN_0086a180(param_1,param_2);
  FUN_0086a0a0(param_1,uVar1,1);
  return uVar1;
}



void __fastcall FUN_0086a880(undefined4 *param_1)

{
  param_1[1] = 0;
  *param_1 = 0;
  if (param_1[2] != 0) {
    FUN_00a3f66c(param_1[2]);
    param_1[2] = 0;
  }
  return;
}



uint __thiscall FUN_0086a8b0(int param_1_00,int param_1,char param_2)

{
  uint uVar1;
  uint uVar2;
  
  if (param_2 == '\0') {
    uVar1 = *(uint *)(param_1_00 + 4);
    uVar2 = 0;
    if (uVar1 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar1 <= uVar2)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                       "uiIndex < m_nCount",0);
        }
        if (*(int *)(*(int *)(param_1_00 + 8) + uVar2 * 4) == param_1) {
          return uVar2;
        }
        uVar1 = *(uint *)(param_1_00 + 4);
        uVar2 = uVar2 + 1;
      } while (uVar2 < uVar1);
    }
  }
  else {
    uVar1 = *(uint *)(param_1_00 + 4);
    if (uVar1 != 0) {
      while( true ) {
        uVar1 = uVar1 - 1;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar1)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                       "uiIndex < m_nCount",0);
        }
        if (*(int *)(*(int *)(param_1_00 + 8) + uVar1 * 4) == param_1) break;
        if (uVar1 == 0) {
          return 0xffffffff;
        }
      }
      return uVar1;
    }
  }
  return 0xffffffff;
}



undefined4 FUN_0086a970(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = FUN_0086a180(param_1,param_2);
  FUN_0086a440(param_1,uVar1,1);
  return uVar1;
}



uint * __thiscall FUN_0086a9a0(uint *param_1_00,int param_1)

{
  uint uVar1;
  void *_Dst;
  
  if (param_1_00[2] != 0) {
    FUN_00a3f66c(param_1_00[2]);
    param_1_00[2] = 0;
  }
  uVar1 = *(uint *)(param_1 + 4);
  param_1_00[1] = uVar1;
  *param_1_00 = uVar1;
  if (uVar1 != 0) {
    _Dst = (void *)FUN_00823c23(-(uint)((int)((ulonglong)uVar1 * 4 >> 0x20) != 0) |
                                (uint)((ulonglong)uVar1 * 4));
    param_1_00[2] = (uint)_Dst;
    if (_Dst != (void *)0x0) {
      _memcpy(_Dst,*(void **)(param_1 + 8),param_1_00[1] * 4);
      return param_1_00;
    }
    *param_1_00 = 0;
    return param_1_00;
  }
  param_1_00[2] = 0;
  return param_1_00;
}



void __fastcall FUN_0086aa30(int param_1)

{
  if (*(int *)(param_1 + 8) != 0) {
    FUN_00a3f66c(*(int *)(param_1 + 8));
    *(undefined4 *)(param_1 + 8) = 0;
  }
  return;
}



uint __thiscall FUN_0086aa50(int param_1_00,int param_1,char param_2)

{
  uint uVar1;
  uint uVar2;
  
  if (param_2 == '\0') {
    uVar1 = *(uint *)(param_1_00 + 4);
    uVar2 = 0;
    if (uVar1 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar1 <= uVar2)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x344,"wxBaseArrayLong::Item",
                       "uiIndex < m_nCount",0);
        }
        if (*(int *)(*(int *)(param_1_00 + 8) + uVar2 * 4) == param_1) {
          return uVar2;
        }
        uVar1 = *(uint *)(param_1_00 + 4);
        uVar2 = uVar2 + 1;
      } while (uVar2 < uVar1);
    }
  }
  else {
    uVar1 = *(uint *)(param_1_00 + 4);
    if (uVar1 != 0) {
      while( true ) {
        uVar1 = uVar1 - 1;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar1)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x344,"wxBaseArrayLong::Item",
                       "uiIndex < m_nCount",0);
        }
        if (*(int *)(*(int *)(param_1_00 + 8) + uVar1 * 4) == param_1) break;
        if (uVar1 == 0) {
          return 0xffffffff;
        }
      }
      return uVar1;
    }
  }
  return 0xffffffff;
}



void __fastcall FUN_0086ab10(undefined4 *param_1)

{
  *param_1 = wxClientDataContainer::vftable;
  param_1[1] = 0;
  param_1[2] = 0;
  return;
}



void __fastcall FUN_0086ab30(undefined4 *param_1)

{
  *param_1 = wxClientDataContainer::vftable;
  if ((param_1[2] == 1) && ((undefined4 *)param_1[1] != (undefined4 *)0x0)) {
    (***(code ***)(undefined4 *)param_1[1])(1);
  }
  return;
}



void __thiscall FUN_0086ab50(int param_1_00,undefined4 param_1)

{
  undefined4 unaff_retaddr;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 8) == 2)) {
    FUN_00840480("..\\..\\src\\common\\clntdata.cpp",0x2a,"wxClientDataContainer::DoSetClientObject"
                 ,"m_clientDataType != wxClientData_Void",
                 L"can\'t have both object and void client data");
  }
  if (*(undefined4 **)(param_1_00 + 4) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1_00 + 4))(1);
    *(undefined4 *)(param_1_00 + 4) = unaff_retaddr;
    *(undefined4 *)(param_1_00 + 8) = 1;
    return;
  }
  *(undefined4 *)(param_1_00 + 4) = param_1;
  *(undefined4 *)(param_1_00 + 8) = 1;
  return;
}



undefined4 __fastcall FUN_0086abc0(int param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 8) == 2)) {
    FUN_00840480("..\\..\\src\\common\\clntdata.cpp",0x38,"wxClientDataContainer::DoGetClientObject"
                 ,"m_clientDataType != wxClientData_Void",
                 L"this window doesn\'t have object client data");
  }
  return *(undefined4 *)(param_1 + 4);
}



void __thiscall FUN_0086ac00(int param_1_00,undefined4 param_1)

{
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    *(undefined4 *)(param_1_00 + 4) = param_1;
    *(undefined4 *)(param_1_00 + 8) = 2;
    return;
  }
  if (*(int *)(param_1_00 + 8) == 1) {
    FUN_00840480("..\\..\\src\\common\\clntdata.cpp",0x40,"wxClientDataContainer::DoSetClientData",
                 "m_clientDataType != wxClientData_Object",
                 L"can\'t have both object and void client data");
    *(undefined4 *)(param_1_00 + 4) = param_1;
    *(undefined4 *)(param_1_00 + 8) = 2;
    return;
  }
  *(undefined4 *)(param_1_00 + 4) = param_1;
  *(undefined4 *)(param_1_00 + 8) = 2;
  return;
}



undefined4 __fastcall FUN_0086ac70(int param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 8) == 1)) {
    FUN_00840480("..\\..\\src\\common\\clntdata.cpp",0x4b,"wxClientDataContainer::DoGetClientData",
                 "m_clientDataType != wxClientData_Object",
                 L"this window doesn\'t have void client data");
  }
  return *(undefined4 *)(param_1 + 4);
}



undefined4 * __thiscall FUN_0086acb0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxClientDataContainer::vftable;
  if ((param_1_00[2] == 1) && ((undefined4 *)param_1_00[1] != (undefined4 *)0x0)) {
    (***(code ***)(undefined4 *)param_1_00[1])(1);
  }
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __fastcall FUN_0086acf0(int param_1)

{
  int iVar1;
  int iVar2;
  
  if (*(int *)(param_1 + 0x14) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\list.cpp",0x78,"wxNodeBase::IndexOf","m_list",
                   L"node doesn\'t belong to a list in IndexOf");
    }
    iVar1 = -1;
  }
  else {
    iVar2 = *(int *)(param_1 + 0x10);
    iVar1 = 0;
    if (iVar2 != 0) {
      do {
        iVar2 = *(int *)(iVar2 + 0x10);
        iVar1 = iVar1 + 1;
      } while (iVar2 != 0);
      return iVar1;
    }
  }
  return iVar1;
}



void __thiscall FUN_0086ad40(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x10) = 0;
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  *(undefined4 *)(param_1_00 + 4) = 0;
  *(undefined *)(param_1_00 + 8) = 0;
  *(undefined4 *)(param_1_00 + 0x14) = param_1;
  return;
}



int __thiscall FUN_0086ad60(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  
  if (param_1_00[5] != 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\list.cpp",0xec,"wxListBase::Append",
                   "m_keyType == wxKEY_NONE",L"need a key for the object to append");
    }
    return 0;
  }
  iVar1 = (**(code **)(*param_1_00 + 4))(param_1_00[4],0,param_1,&DAT_032bdb5c);
  if (param_1_00[3] == 0) {
    param_1_00[1] = param_1_00[1] + 1;
    param_1_00[3] = iVar1;
    param_1_00[4] = iVar1;
    return iVar1;
  }
  *(int *)(param_1_00[4] + 0xc) = iVar1;
  param_1_00[1] = param_1_00[1] + 1;
  param_1_00[4] = iVar1;
  return iVar1;
}



void __fastcall FUN_0086ade0(undefined4 *param_1)

{
  int *piVar1;
  int *piVar2;
  
  *param_1 = wxListBase::vftable;
  piVar2 = (int *)param_1[3];
  while (piVar2 != (int *)0x0) {
    piVar1 = (int *)piVar2[3];
    if (param_1[5] == 2) {
      _free((void *)piVar2[1]);
    }
    if (*(char *)(param_1 + 2) != '\0') {
      (**(code **)(*piVar2 + 4))();
    }
    piVar2[5] = 0;
    (**(code **)*piVar2)(1);
    piVar2 = piVar1;
  }
  return;
}



int __thiscall FUN_0086ae40(int *param_1_00,int param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  
  if (param_1_00[5] != 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\list.cpp",0x110,"wxListBase::Insert",
                   "m_keyType == wxKEY_NONE",L"need a key for the object to insert");
    }
    return 0;
  }
  if (param_1 == 0) {
    param_1 = param_1_00[3];
    iVar2 = 0;
  }
  else {
    if (*(int **)(param_1 + 0x14) != param_1_00) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\list.cpp",0x113,"wxListBase::Insert",
                     "!position || position->m_list == this",
                     L"can\'t insert before a node from another list");
      }
      return 0;
    }
    iVar2 = *(int *)(param_1 + 0x10);
  }
  iVar1 = (**(code **)(*param_1_00 + 4))(iVar2,param_1,param_2,&DAT_032bdb5c);
  if (param_1_00[3] == 0) {
    param_1_00[4] = iVar1;
  }
  if (iVar2 == 0) {
    param_1_00[3] = iVar1;
  }
  param_1_00[1] = param_1_00[1] + 1;
  return iVar1;
}



int __thiscall FUN_0086aef0(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 0xc);
  while( true ) {
    if (iVar1 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\list.cpp",0x13e,"wxListBase::Item","Assert failure",
                     L"invalid index in wxListBase::Item");
      }
      return 0;
    }
    if (param_1 == 0) break;
    iVar1 = *(int *)(iVar1 + 0xc);
    param_1 = param_1 + -1;
  }
  return iVar1;
}



int __thiscall FUN_0086af40(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 0xc);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    if (*(int *)(iVar1 + 8) == param_1) break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  return iVar1;
}



undefined4 __thiscall FUN_0086af70(int param_1_00,int param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *(int *)(param_1_00 + 0xc);
  while( true ) {
    if (iVar1 == 0) {
      return 0xffffffff;
    }
    if (*(int *)(iVar1 + 8) == param_1) break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  uVar2 = FUN_0086acf0();
  return uVar2;
}



int __thiscall FUN_0086afc0(int param_1_00,int param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\list.cpp",0x17b,"wxListBase::DetachNode",&DAT_00fb76e0,
                   L"detaching NULL wxNodeBase");
    }
  }
  else {
    if (*(int *)(param_1 + 0x14) == param_1_00) {
      piVar3 = (int *)(*(int *)(param_1 + 0x10) + 0xc);
      if (*(int *)(param_1 + 0x10) == 0) {
        piVar3 = (int *)(param_1_00 + 0xc);
      }
      iVar1 = *(int *)(param_1 + 0xc);
      puVar2 = (undefined4 *)(iVar1 + 0x10);
      if (iVar1 == 0) {
        puVar2 = (undefined4 *)(param_1_00 + 0x10);
      }
      *piVar3 = iVar1;
      *puVar2 = *(undefined4 *)(param_1 + 0x10);
      *(int *)(param_1_00 + 4) = *(int *)(param_1_00 + 4) + -1;
      *(undefined4 *)(param_1 + 0x14) = 0;
      return param_1;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\list.cpp",0x17d,"wxListBase::DetachNode",
                   "node->m_list == this",L"detaching node which is not from this list");
      return 0;
    }
  }
  return 0;
}



undefined4 __thiscall FUN_0086b060(int param_1_00,int *param_1)

{
  int iVar1;
  
  iVar1 = FUN_0086afc0(param_1);
  if (iVar1 == 0) {
    return 0;
  }
  if (*(int *)(param_1_00 + 0x14) == 2) {
    _free((void *)param_1[1]);
  }
  if (*(char *)(param_1_00 + 8) != '\0') {
    (**(code **)(*param_1 + 4))();
  }
  param_1[5] = 0;
  (**(code **)*param_1)(1);
  return 1;
}



undefined4 __thiscall FUN_0086b0c0(int param_1_00,int param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *(int **)(param_1_00 + 0xc);
  while( true ) {
    if (piVar1 == (int *)0x0) {
      return 0;
    }
    if (piVar1[2] == param_1) break;
    piVar1 = (int *)piVar1[3];
  }
  iVar2 = FUN_0086afc0(piVar1);
  if (iVar2 != 0) {
    if (*(int *)(param_1_00 + 0x14) == 2) {
      _free((void *)piVar1[1]);
    }
    if (*(char *)(param_1_00 + 8) != '\0') {
      (**(code **)(*piVar1 + 4))();
    }
    piVar1[5] = 0;
    (**(code **)*piVar1)(1);
  }
  return 1;
}



void __fastcall FUN_0086b130(int param_1)

{
  int *piVar1;
  int *piVar2;
  
  piVar2 = *(int **)(param_1 + 0xc);
  while (piVar2 != (int *)0x0) {
    piVar1 = (int *)piVar2[3];
    if (*(int *)(param_1 + 0x14) == 2) {
      _free((void *)piVar2[1]);
    }
    if (*(char *)(param_1 + 8) != '\0') {
      (**(code **)(*piVar2 + 4))();
    }
    piVar2[5] = 0;
    (**(code **)*piVar2)(1);
    piVar2 = piVar1;
  }
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 4) = 0;
  return;
}



bool __thiscall FUN_0086b190(int *param_1_00,int param_1)

{
  int iVar1;
  
  if (*param_1_00 == 1) {
    return param_1_00[1] == param_1;
  }
  if ((*param_1_00 != 2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_00840480("..\\..\\src\\common\\list.cpp",0x34,"wxListKey::operator ==","Assert failure",
                 L"bad key type.");
  }
  if (*(int *)(param_1_00[1] + 0x14) != *(int *)(param_1 + 0x14)) {
    return false;
  }
  iVar1 = FUN_00850760(param_1);
  return iVar1 == 0;
}



int __thiscall FUN_0086b200(int param_1_00,int *param_1)

{
  int iVar1;
  char cVar2;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x14) != *param_1)) {
    FUN_00840480("..\\..\\src\\common\\list.cpp",0x146,"wxListBase::Find",
                 "m_keyType == key.GetKeyType()",L"this list is not keyed on the type of this key");
  }
  iVar1 = *(int *)(param_1_00 + 0xc);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    cVar2 = FUN_0086b190(*(undefined4 *)(iVar1 + 4));
    if (cVar2 != '\0') break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  return iVar1;
}



void __thiscall FUN_0086b270(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[4] = 0;
  param_1_00[3] = 0;
  param_1_00[1] = 0;
  *(undefined *)(param_1_00 + 2) = 0;
  param_1_00[5] = param_1;
  *param_1_00 = wxList::vftable;
  return;
}



void __fastcall FUN_0086b290(int *param_1)

{
  int iVar1;
  
  if ((*param_1 == 2) && (iVar1 = param_1[1], iVar1 != 0)) {
    _free(*(void **)(iVar1 + 0x1c));
    if (*(uint *)(iVar1 + 0x18) < 8) {
      *(undefined4 *)(iVar1 + 0x18) = 7;
      *(undefined4 *)(iVar1 + 0x14) = 0;
      *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar1);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
  }
  return;
}



void __fastcall FUN_0086b2e0(undefined4 *param_1)

{
  int iVar1;
  
  *param_1 = wxNodeBase::vftable;
  if (param_1[5] != 0) {
    if ((*(int *)(param_1[5] + 0x14) == 2) && (iVar1 = param_1[1], iVar1 != 0)) {
      _free(*(void **)(iVar1 + 0x1c));
      if (*(uint *)(iVar1 + 0x18) < 8) {
        *(undefined4 *)(iVar1 + 0x18) = 7;
        *(undefined4 *)(iVar1 + 0x14) = 0;
        *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    FUN_0086afc0(param_1);
  }
  return;
}



int __thiscall FUN_0086b350(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  void *unaff_ESI;
  int unaff_EDI;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  if ((param_1_00[5] != 1) && ((param_1_00[5] != 0 || (param_1_00[1] != 0)))) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\list.cpp",0xfb,"wxListBase::Append",
                   "(m_keyType == wxKEY_INTEGER) || (m_keyType == wxKEY_NONE && m_count == 0)",
                   L"can\'t append object with numeric key to this list");
    }
    ExceptionList = local_c;
    return 0;
  }
  local_14 = 1;
  local_10 = param_1;
  local_4 = 0;
  iVar2 = (**(code **)(*param_1_00 + 4))(param_1_00[4],0,param_2,&local_14);
  if ((uVar1 == 2) && (unaff_EDI != 0)) {
    _free(*(void **)(unaff_EDI + 0x1c));
    if (7 < *(uint *)(unaff_EDI + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(unaff_EDI + 4));
    }
    *(undefined4 *)(unaff_EDI + 0x18) = 7;
    *(undefined4 *)(unaff_EDI + 0x14) = 0;
    *(undefined2 *)(unaff_EDI + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EDI);
  }
  if (param_1_00[3] == 0) {
    param_1_00[3] = iVar2;
  }
  else {
    *(int *)(param_1_00[4] + 0xc) = iVar2;
  }
  param_1_00[1] = param_1_00[1] + 1;
  param_1_00[4] = iVar2;
  ExceptionList = unaff_ESI;
  return iVar2;
}



undefined4 * __thiscall FUN_0086b480(undefined4 *param_1_00,undefined4 param_1)

{
  void *pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = 2;
  pvVar1 = operator_new(0x24);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    param_1_00[1] = 0;
  }
  else {
    *(undefined4 *)((int)pvVar1 + 0x18) = 7;
    *(undefined4 *)((int)pvVar1 + 0x14) = 0;
    *(undefined2 *)((int)pvVar1 + 4) = 0;
    FID_conflict_assign(param_1,0,0xffffffff);
    *(undefined4 *)((int)pvVar1 + 0x1c) = 0;
    param_1_00[1] = pvVar1;
  }
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_0086b510(int *param_1_00,int param_1)

{
  int iVar1;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 != 2)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/list.h",0x185,"wxListKey::GetString",
                 "m_keyType == wxKEY_STRING",0);
  }
  iVar1 = param_1_00[1];
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(iVar1,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int __thiscall FUN_0086b580(int param_1_00,int param_1)

{
  undefined4 uVar1;
  
  uVar1 = *(undefined4 *)(param_1_00 + 4);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar1,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



undefined4 * __thiscall
FUN_0086b5c0(undefined4 *param_1_00,undefined4 param_1,int param_2,int param_3,undefined4 param_4,
            int *param_5)

{
  int iVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8b4b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[5] = param_1;
  *param_1_00 = wxNodeBase::vftable;
  param_1_00[2] = param_4;
  param_1_00[4] = param_2;
  param_1_00[3] = param_3;
  iVar1 = *param_5;
  if (iVar1 != 0) {
    if (iVar1 == 1) {
      param_1_00[1] = param_5[1];
    }
    else if (iVar1 == 2) {
      pvVar3 = operator_new(0x24);
      local_4 = 0;
      if (pvVar3 == (void *)0x0) {
        param_1_00[1] = 0;
      }
      else {
        uVar4 = FUN_0086b510(pvVar3);
        param_1_00[1] = uVar4;
      }
    }
    else if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\list.cpp",0x5c,"wxNodeBase::wxNodeBase","Assert failure",
                   L"invalid key type",uVar2);
    }
  }
  if (param_2 != 0) {
    *(undefined4 **)(param_2 + 0xc) = param_1_00;
  }
  if (param_3 != 0) {
    *(undefined4 **)(param_3 + 0x10) = param_1_00;
  }
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_0086b6a0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  void *unaff_ESI;
  int unaff_EDI;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  if ((param_1_00[5] != 2) && ((param_1_00[5] != 0 || (param_1_00[1] != 0)))) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\list.cpp",0x106,"wxListBase::Append",
                   "(m_keyType == wxKEY_STRING) || (m_keyType == wxKEY_NONE && m_count == 0)",
                   L"can\'t append object with string key to this list");
    }
    ExceptionList = local_c;
    return 0;
  }
  FUN_0086b480(param_1);
  local_4 = 0;
  iVar2 = (**(code **)(*param_1_00 + 4))(param_1_00[4],0,param_2,local_14);
  if ((uVar1 == 2) && (unaff_EDI != 0)) {
    _free(*(void **)(unaff_EDI + 0x1c));
    if (7 < *(uint *)(unaff_EDI + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(unaff_EDI + 4));
    }
    *(undefined4 *)(unaff_EDI + 0x18) = 7;
    *(undefined4 *)(unaff_EDI + 0x14) = 0;
    *(undefined2 *)(unaff_EDI + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EDI);
  }
  if (param_1_00[3] == 0) {
    param_1_00[3] = iVar2;
  }
  else {
    *(int *)(param_1_00[4] + 0xc) = iVar2;
  }
  param_1_00[1] = param_1_00[1] + 1;
  param_1_00[4] = iVar2;
  ExceptionList = unaff_ESI;
  return iVar2;
}



void __thiscall FUN_0086b7d0(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9388;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(param_1 + 8) != '\0')) {
    FUN_00840480("..\\..\\src\\common\\list.cpp",0xa3,"wxListBase::DoCopy","!list.m_destroy",
                 L"copying list which owns it\'s elements is a bad idea",uVar3);
  }
  *(undefined *)(param_1_00 + 8) = *(undefined *)(param_1 + 8);
  iVar1 = *(int *)(param_1 + 0x14);
  *(int *)(param_1_00 + 0x14) = iVar1;
  *(undefined4 *)(param_1_00 + 0x10) = 0;
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  iVar2 = *(int *)(param_1 + 0xc);
  if (iVar1 == 1) {
    for (; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0xc)) {
      FUN_0086b350(*(undefined4 *)(iVar2 + 4),*(undefined4 *)(iVar2 + 8));
    }
  }
  else if (iVar1 == 2) {
    for (; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0xc)) {
      uVar4 = FUN_0086b580(local_30);
      local_4 = 0;
      FUN_0086b6a0(uVar4,*(undefined4 *)(iVar2 + 8));
      local_4 = 0xffffffff;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
      local_18 = 7;
      local_1c = 0;
      local_2c = local_2c & 0xffff0000;
    }
  }
  else {
    for (; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0xc)) {
      FUN_0086ad60(*(undefined4 *)(iVar2 + 8));
    }
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 4) != *(int *)(param_1 + 4)))
  {
    FUN_00840480("..\\..\\src\\common\\list.cpp",200,"wxListBase::DoCopy","m_count == list.m_count",
                 L"logic error in wxList::DoCopy",uVar3);
  }
  ExceptionList = local_c;
  return;
}



undefined * FUN_0086b950(void)

{
  return &DAT_032364b4;
}



void __fastcall FUN_0086b960(int param_1)

{
  if (*(int *)(param_1 + 0x40) != 0) {
    FUN_008a6440();
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\timercmn.cpp",0x4a,"wxTimer::SetOwner","m_impl",
                 L"uninitialized timer");
  }
  return;
}



undefined4 __fastcall FUN_0086b9a0(int param_1)

{
  if (*(int *)(param_1 + 0x40) != 0) {
    return *(undefined4 *)(*(int *)(param_1 + 0x40) + 8);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\timercmn.cpp",0x51,"wxTimer::GetOwner","m_impl",
                 L"uninitialized timer");
  }
  return 0;
}



void __fastcall FUN_0086ba20(int param_1)

{
  char cVar1;
  
  if (*(int *)(param_1 + 0x40) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\timercmn.cpp",0x5f,"wxTimer::Stop","m_impl",
                   L"uninitialized timer");
    }
  }
  else {
    cVar1 = (**(code **)(**(int **)(param_1 + 0x40) + 0xc))();
    if (cVar1 != '\0') {
                    // WARNING: Could not recover jumptable at 0x0086ba40. Too many branches
                    // WARNING: Treating indirect jump as call
      (**(code **)(**(int **)(param_1 + 0x40) + 8))();
      return;
    }
  }
  return;
}



uint __fastcall FUN_0086bae0(int param_1)

{
  uint in_EAX;
  uint uVar1;
  
  if (*(int *)(param_1 + 0x40) != 0) {
                    // WARNING: Could not recover jumptable at 0x0086baee. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (**(code **)(**(int **)(param_1 + 0x40) + 0xc))();
    return uVar1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    in_EAX = FUN_00840480("..\\..\\src\\common\\timercmn.cpp",0x70,"wxTimer::IsRunning","m_impl",
                          L"uninitialized timer");
  }
  return in_EAX & 0xffffff00;
}



undefined4 __fastcall FUN_0086bb20(int param_1)

{
  if (*(int *)(param_1 + 0x40) != 0) {
    return *(undefined4 *)(*(int *)(param_1 + 0x40) + 0xc);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\timercmn.cpp",0x77,"wxTimer::GetId","m_impl",
                 L"uninitialized timer");
  }
  return 0xffffffff;
}



void __fastcall FUN_0086bb60(undefined4 *param_1)

{
  char cVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc98b8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxTimer::vftable;
  local_4 = 0;
  if ((int *)param_1[0x10] == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\timercmn.cpp",0x5f,"wxTimer::Stop","m_impl",
                   L"uninitialized timer",uVar2);
    }
  }
  else {
    cVar1 = (**(code **)(*(int *)param_1[0x10] + 0xc))();
    if (cVar1 != '\0') {
      (**(code **)(*(int *)param_1[0x10] + 8))();
    }
  }
  if ((undefined4 *)param_1[0x10] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x10])(1);
  }
  local_4 = 0xffffffff;
  FUN_00846530();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0086bc10(int param_1)

{
  int *piVar1;
  int iVar2;
  
  if (DAT_032bcb68 != 0) {
    piVar1 = (int *)FUN_00841320();
    if (piVar1 != (int *)0x0) {
      iVar2 = (**(code **)(*piVar1 + 0x30))(param_1);
      goto LAB_0086bc34;
    }
  }
  iVar2 = 0;
LAB_0086bc34:
  *(int *)(param_1 + 0x40) = iVar2;
  if ((iVar2 == 0) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_00840480("..\\..\\src\\common\\timercmn.cpp",0x3f,"wxTimer::Init","Assert failure",
                 L"No timer implementation for this platform");
  }
  return;
}



undefined4 FUN_0086bc70(void)

{
  return 8;
}



undefined4 * __fastcall FUN_0086bc80(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxTimerEvent::vftable;
    puVar1[10] = *(undefined4 *)(param_1 + 0x28);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * FUN_0086bcf0(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0xffffffff,DAT_032bdb64);
    *puVar1 = wxTimerEvent::vftable;
    puVar1[10] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



LPCRITICAL_SECTION __fastcall FUN_0086bd70(LPCRITICAL_SECTION param_1)

{
  InitializeCriticalSection(param_1);
  return param_1;
}



void __fastcall FUN_0086bd80(LPCRITICAL_SECTION param_1)

{
  DeleteCriticalSection(param_1);
  return;
}



void __fastcall FUN_0086bd90(LPCRITICAL_SECTION param_1)

{
  EnterCriticalSection(param_1);
  return;
}



void __fastcall FUN_0086bda0(LPCRITICAL_SECTION param_1)

{
  LeaveCriticalSection(param_1);
  return;
}



DWORD GetCurrentThreadId(void)

{
  DWORD DVar1;
  
                    // WARNING: Could not recover jumptable at 0x0086bdb0. Too many branches
                    // WARNING: Treating indirect jump as call
  DVar1 = GetCurrentThreadId();
  return DVar1;
}



undefined ** FUN_0086bdc0(void)

{
  return &PTR_u_wxThreadModule_032364d4;
}



undefined FUN_0086bdd0(void)

{
  return DAT_032364d0;
}



undefined FUN_0086bde0(void)

{
  return DAT_032bdb7c;
}



void FUN_0086bdf0(void)

{
  LPCRITICAL_SECTION lpCriticalSection;
  uint uVar1;
  DWORD DVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc98e8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bdb68 != 0)) {
    DVar2 = GetCurrentThreadId();
    if (DVar2 != DAT_032bdb68) {
      FUN_00840480("..\\..\\src\\msw\\thread.cpp",0x55f,"wxMutexGuiLeaveOrEnter",
                   "wxThread::IsMain()",L"only main thread may call wxMutexGuiLeaveOrEnter()!",uVar1
                  );
    }
  }
  lpCriticalSection = DAT_032bdb70;
  EnterCriticalSection(DAT_032bdb70);
  uStack_4 = 0;
  if (DAT_032bdb78 == 0) {
    if (DAT_032364d0 == '\0') {
      EnterCriticalSection(DAT_032bdb6c);
      DAT_032364d0 = '\x01';
    }
  }
  else if (DAT_032364d0 != '\0') {
    FUN_00841610();
  }
  LeaveCriticalSection(lpCriticalSection);
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_0086bec0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxThreadModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __thiscall FUN_0086bf20(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  FUN_0081a07d(param_2,param_1,1);
  uVar1 = FUN_008854f0(param_1);
  FUN_0083fe90(param_1_00,uVar1);
  return;
}



undefined4 FUN_0086bf60(void)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  BOOL BVar4;
  LPCRITICAL_SECTION p_Var5;
  uint uStack_194;
  void *pvStack_190;
  uint uStack_170;
  void *pvStack_16c;
  uint uStack_124;
  void *pvStack_120;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc997b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  DAT_032364cc = TlsAlloc();
  if (DAT_032364cc == 0xffffffff) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_0043c211();
      FUN_008423d0();
      uStack_4._0_1_ = 4;
      GetLastError();
      FUN_0084d140();
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4._0_1_ = 3;
      FUN_00842440();
      _free(pvStack_16c);
      if (7 < uStack_170) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      _free(pvStack_190);
      if (7 < uStack_194) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(pvStack_120);
      if (7 < uStack_124) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    uVar3 = 0;
  }
  else {
    BVar4 = TlsSetValue(DAT_032364cc,(LPVOID)0x0);
    if (BVar4 == 0) {
      TlsFree(DAT_032364cc);
      DAT_032364cc = 0xffffffff;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        uStack_4 = 5;
        FUN_0043c211();
        uStack_4 = CONCAT31(uStack_4._1_3_,6);
        iVar2 = FUN_0084a340();
        if (iVar2 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        uStack_4._0_1_ = 7;
        FUN_0043c211();
        FUN_008423d0();
        uStack_4._0_1_ = 9;
        GetLastError();
        FUN_0084d140();
        FUN_008854f0();
        FUN_0083fe90();
        uStack_4._0_1_ = 8;
        FUN_00842440();
        FUN_0040159c();
        uStack_4 = CONCAT31(uStack_4._1_3_,6);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      uVar3 = 0;
    }
    else {
      p_Var5 = (LPCRITICAL_SECTION)operator_new(0x18);
      if (p_Var5 == (LPCRITICAL_SECTION)0x0) {
        p_Var5 = (LPCRITICAL_SECTION)0x0;
      }
      else {
        InitializeCriticalSection(p_Var5);
      }
      DAT_032bdb70 = p_Var5;
      p_Var5 = (LPCRITICAL_SECTION)operator_new(0x18);
      if (p_Var5 == (LPCRITICAL_SECTION)0x0) {
        p_Var5 = (LPCRITICAL_SECTION)0x0;
      }
      else {
        InitializeCriticalSection(p_Var5);
      }
      DAT_032bdb6c = p_Var5;
      EnterCriticalSection(p_Var5);
      p_Var5 = (LPCRITICAL_SECTION)operator_new(0x18);
      if (p_Var5 == (LPCRITICAL_SECTION)0x0) {
        p_Var5 = (LPCRITICAL_SECTION)0x0;
      }
      else {
        InitializeCriticalSection(p_Var5);
      }
      DAT_032bdb74 = p_Var5;
      DAT_032bdb68 = GetCurrentThreadId();
      uVar3 = 1;
    }
  }
  ExceptionList = local_c;
  return uVar3;
}



void FUN_0086c360(void)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4070;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = TlsFree(DAT_032364cc);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  if (DAT_032bdb74 != (LPCRITICAL_SECTION)0x0) {
    DeleteCriticalSection(DAT_032bdb74);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (DAT_032bdb6c != (LPCRITICAL_SECTION)0x0) {
    LeaveCriticalSection(DAT_032bdb6c);
    if (DAT_032bdb6c != (LPCRITICAL_SECTION)0x0) {
      DeleteCriticalSection(DAT_032bdb6c);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  if (DAT_032bdb70 != (LPCRITICAL_SECTION)0x0) {
    DeleteCriticalSection(DAT_032bdb70);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  ExceptionList = local_c;
  return;
}



void FUN_0086c4e0(void)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = PostThreadMessageW(DAT_032bdb68,0,0,0);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_0086c5f0(void)

{
  LPCRITICAL_SECTION lpCriticalSection;
  DWORD DVar1;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (DAT_032bdb68 != 0) {
      DVar1 = GetCurrentThreadId();
      if (DVar1 != DAT_032bdb68) goto LAB_0086c631;
    }
    FUN_00840480("..\\..\\src\\msw\\thread.cpp",0x534,"wxMutexGuiEnterImpl","!wxThread::IsMain()",
                 L"main thread doesn\'t want to block in wxMutexGuiEnter()!");
  }
LAB_0086c631:
  lpCriticalSection = DAT_032bdb70;
  EnterCriticalSection(DAT_032bdb70);
  DAT_032bdb78 = DAT_032bdb78 + 1;
  LeaveCriticalSection(lpCriticalSection);
  FUN_0086c4e0();
  EnterCriticalSection(DAT_032bdb6c);
  return;
}



void FUN_0086c660(void)

{
  LPCRITICAL_SECTION lpCriticalSection;
  uint uVar1;
  DWORD DVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  lpCriticalSection = DAT_032bdb70;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc98e8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  EnterCriticalSection(DAT_032bdb70);
  uStack_4 = 0;
  if (DAT_032bdb68 != 0) {
    DVar2 = GetCurrentThreadId();
    if (DVar2 != DAT_032bdb68) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bdb78 == 0)) {
        FUN_00840480("..\\..\\src\\msw\\thread.cpp",0x552,"wxMutexGuiLeaveImpl",
                     "gs_nWaitingForGui > 0",L"calling wxMutexGuiLeave() without entering it first?"
                     ,uVar1);
      }
      DAT_032bdb78 = DAT_032bdb78 + -1;
      FUN_0086c4e0();
      goto LAB_0086c6fb;
    }
  }
  DAT_032364d0 = 0;
LAB_0086c6fb:
  LeaveCriticalSection(DAT_032bdb6c);
  LeaveCriticalSection(lpCriticalSection);
  ExceptionList = local_c;
  return;
}



undefined ** FUN_0086c720(void)

{
  return &PTR_u_wxDateTimeHolidaysModule_03236588;
}



int __fastcall FUN_0086c730(int param_1)

{
  int in_EAX;
  int iVar1;
  ushort unaff_BX;
  int iVar2;
  
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (in_EAX < -0x1268)) &&
     ((in_EAX != -0x1269 || ((param_1 < 0xb && ((param_1 != 10 || (unaff_BX < 0x18)))))))) {
    FUN_00840480("..\\..\\src\\common\\datetime.cpp",0xfe,"GetTruncatedJDN",
                 "(year > JDN_0_YEAR) || ((year == JDN_0_YEAR) && (mon > JDN_0_MONTH)) || ((year == JDN_0_YEAR) && (mon == JDN_0_MONTH) && (day >= JDN_0_DAY))"
                 ,L"date out of range - can\'t convert to JDN");
  }
  iVar2 = in_EAX + 0x12c0;
  if (param_1 < 2) {
    param_1 = param_1 + 10;
    iVar2 = in_EAX + 0x12bf;
  }
  else {
    param_1 = param_1 + -2;
  }
  iVar1 = (iVar2 % 100) * 0x5b5;
  iVar2 = (iVar2 / 100) * 0x23ab1;
  return ((int)(iVar1 + (iVar1 >> 0x1f & 3U)) >> 2) + (param_1 * 0x99 + 2) / 5 +
         ((int)(iVar2 + (iVar2 >> 0x1f & 3U)) >> 2) + -0x7d2e + (uint)unaff_BX;
}



void FUN_0086c800(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[4] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[3] = 1;
  param_1[5] = 0x4c;
  param_1[8] = 0xffffffff;
  return;
}



void __thiscall FUN_0086c830(undefined2 *param_1_00,undefined2 *param_1,undefined4 *param_2)

{
  *(undefined4 *)(param_1_00 + 10) = *param_2;
  *param_1_00 = 0;
  param_1_00[1] = *param_1;
  param_1_00[2] = param_1[2];
  param_1_00[3] = param_1[4];
  param_1_00[4] = param_1[6];
  *(undefined4 *)(param_1_00 + 6) = *(undefined4 *)(param_1 + 8);
  *(int *)(param_1_00 + 8) = *(int *)(param_1 + 10) + 0x76c;
  param_1_00[0xc] = param_1[0xc];
  param_1_00[5] = param_1[0xe];
  return;
}



int __fastcall FUN_0086c890(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_0086c730();
  *(short *)(param_1 + 0x18) = (short)((iVar1 + 2) % 7);
  return (iVar1 + 2) / 7;
}



void __thiscall FUN_0086c8c0(int param_1_00,int param_1)

{
  int iVar1;
  
  if (SBORROW4(param_1,-*(int *)(param_1_00 + 0xc)) != param_1 + *(int *)(param_1_00 + 0xc) < 0) {
    do {
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + -1;
      param_1 = param_1 + 0xc;
    } while (param_1 < -*(int *)(param_1_00 + 0xc));
  }
  iVar1 = *(int *)(param_1_00 + 0xc) + param_1;
  while (0xb < iVar1) {
    *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 1;
    param_1 = param_1 + -0xc;
    iVar1 = *(int *)(param_1_00 + 0xc) + param_1;
  }
  *(int *)(param_1_00 + 0xc) = *(int *)(param_1_00 + 0xc) + param_1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((*(int *)(param_1_00 + 0xc) < 0 || (0xb < *(int *)(param_1_00 + 0xc))))) {
    FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x1a9,"wxDateTime::Tm::AddMonths",
                 "mon >= 0 && mon < MONTHS_IN_YEAR",L"logic error");
  }
  return;
}



int * __thiscall FUN_0086c940(int *param_1_00,int param_1)

{
  int iVar1;
  
  switch(param_1) {
  case 0:
    iVar1 = FUN_008a6790();
    *param_1_00 = -iVar1;
    return param_1_00;
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
  case 6:
  case 7:
  case 8:
  case 9:
  case 10:
  case 0xb:
  case 0xc:
  case 0xd:
  case 0xe:
  case 0xf:
  case 0x10:
  case 0x11:
  case 0x12:
  case 0x13:
  case 0x14:
  case 0x15:
  case 0x16:
  case 0x17:
  case 0x18:
  case 0x19:
  case 0x1a:
    *param_1_00 = (param_1 + -0xd) * 0xe10;
    return param_1_00;
  case 0x1b:
    *param_1_00 = 0x8598;
    return param_1_00;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x1f9,"wxDateTime::TimeZone::TimeZone",
                 "Assert failure",L"unknown time zone");
  }
  return param_1_00;
}



undefined4 FUN_0086c9e0(int param_1)

{
  if (param_1 == 1) {
    return 0;
  }
  if (param_1 != 2) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\datetime.cpp",0x29c,
                   "`anonymous-namespace\'::NameArrayIndexFromFlag","Assert failure",
                   "unknown wxDateTime::NameFlags value");
    }
    return 0xffffffff;
  }
  return 1;
}



void FUN_0086ca30(int *param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (0xb < *param_1) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x87b,"wxNextMonth",
                   "m < wxDateTime::Inv_Month",L"invalid month");
    }
    *param_1 = *param_1 + 1;
    return;
  }
  *param_1 = *param_1 + 1;
  return;
}



void FUN_0086ca70(int *param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (6 < *param_1) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x88b,"wxNextWDay",
                   "wd < wxDateTime::Inv_WeekDay",L"invalid week day");
    }
    *param_1 = *param_1 + 1;
    return;
  }
  *param_1 = *param_1 + 1;
  return;
}



void __thiscall FUN_0086cab0(int *param_1_00,int *param_1)

{
  int iVar1;
  
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 == DAT_032365a0)) &&
     (param_1_00[1] == DAT_032365a4)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/datetime.h",0x70b,"wxDateTime::GetValue",
                 "IsValid()",L"invalid wxDateTime");
  }
  iVar1 = param_1_00[1];
  *param_1 = *param_1_00;
  param_1[1] = iVar1;
  return;
}



uint * __thiscall FUN_0086cb10(uint *param_1_00,uint *param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 == DAT_032365a0)) &&
     (param_1_00[1] == DAT_032365a4)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/datetime.h",0x7a4,"wxDateTime::Add","IsValid()",
                 L"invalid wxDateTime");
  }
  uVar2 = *param_1;
  uVar3 = param_1[1];
  uVar1 = *param_1_00;
  *param_1_00 = *param_1_00 + uVar2;
  param_1_00[1] = param_1_00[1] + uVar3 + (uint)CARRY4(uVar1,uVar2);
  return param_1_00;
}



undefined8 * __thiscall
FUN_0086cb70(undefined8 *param_1_00,uint param_1,uint param_2,uint param_3,int param_4,uint param_5,
            int param_6)

{
  uint uVar1;
  undefined8 uVar2;
  
  *(uint *)param_1_00 = param_1;
  uVar2 = __allmul(*(uint *)param_1_00,(int)param_1 >> 0x1f,0x3c,0);
  *param_1_00 = uVar2;
  uVar1 = *(uint *)param_1_00;
  *(uint *)param_1_00 = *(uint *)param_1_00 + param_2;
  *(uint *)((int)param_1_00 + 4) =
       *(uint *)((int)param_1_00 + 4) + ((int)param_2 >> 0x1f) + (uint)CARRY4(uVar1,param_2);
  uVar2 = __allmul(*(uint *)param_1_00,*(uint *)((int)param_1_00 + 4),0x3c,0);
  *(uint *)param_1_00 = (uint)uVar2;
  uVar1 = *(uint *)param_1_00;
  *(uint *)param_1_00 = *(uint *)param_1_00 + param_3;
  *(uint *)((int)param_1_00 + 4) = (uint)((ulonglong)uVar2 >> 0x20);
  *(uint *)((int)param_1_00 + 4) =
       *(uint *)((int)param_1_00 + 4) + param_4 + (uint)CARRY4(uVar1,param_3);
  uVar2 = __allmul(*(uint *)param_1_00,*(uint *)((int)param_1_00 + 4),1000,0);
  *param_1_00 = uVar2;
  uVar1 = *(uint *)param_1_00;
  *(uint *)param_1_00 = *(uint *)param_1_00 + param_5;
  *(uint *)((int)param_1_00 + 4) =
       *(uint *)((int)param_1_00 + 4) + param_6 + (uint)CARRY4(uVar1,param_5);
  return param_1_00;
}



undefined4 * __thiscall FUN_0086cbf0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxDateTimeHolidayAuthority::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0086cc10(undefined2 *param_1)

{
  *(undefined4 *)(param_1 + 10) = 0;
  param_1[5] = 0;
  *param_1 = 0;
  param_1[2] = 0;
  *(undefined4 *)(param_1 + 8) = 0x8000;
  *(undefined4 *)(param_1 + 6) = 0xc;
  param_1[4] = 0;
  param_1[1] = 0;
  param_1[3] = 0;
  param_1[0xc] = 7;
  return;
}



void FUN_0086cc50(undefined4 param_1)

{
  undefined8 local_8;
  
  local_8 = __time64((__time64_t *)0x0);
  FUN_008a67b0(&local_8,param_1);
  return;
}



undefined4 * FUN_0086cc80(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined local_8 [8];
  
  puVar2 = (undefined4 *)FUN_008a6860(local_8);
  uVar1 = *puVar2;
  param_1[1] = puVar2[1];
  *param_1 = uVar1;
  return param_1;
}



undefined8 * __thiscall FUN_0086cca0(undefined8 *param_1_00,int *param_1)

{
  int iVar1;
  tm *ptVar2;
  longlong lVar3;
  undefined8 uVar4;
  tm local_24;
  
  ptVar2 = &local_24;
  for (iVar1 = 9; iVar1 != 0; iVar1 = iVar1 + -1) {
    ptVar2->tm_sec = *param_1;
    param_1 = param_1 + 1;
    ptVar2 = (tm *)&ptVar2->tm_min;
  }
  lVar3 = __mktime64(&local_24);
  if (lVar3 == -1) {
    if (((local_24.tm_year != 0x46) || (local_24.tm_mon != 0)) || (local_24.tm_mday != 1)) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x467,"wxDateTime::Set","Assert failure",
                     L"mktime() failed");
      }
      *(undefined4 *)param_1_00 = DAT_032365a0;
      *(undefined4 *)((int)param_1_00 + 4) = DAT_032365a4;
      return param_1_00;
    }
    iVar1 = FUN_008a6790();
    lVar3 = (longlong)(iVar1 + local_24.tm_sec + (local_24.tm_min + local_24.tm_hour * 0x3c) * 0x3c)
    ;
  }
  uVar4 = __allmul(lVar3,1000,0);
  *param_1_00 = uVar4;
  return param_1_00;
}



undefined8 * __thiscall FUN_0086cd70(undefined8 *param_1_00,uint param_1)

{
  __time64_t _Var1;
  undefined8 uVar2;
  tm local_24;
  
  local_24.tm_wday = 0;
  local_24.tm_yday = 0;
  local_24.tm_year = ((int)param_1 >> 0x19) + 0x50;
  local_24.tm_mon = ((int)param_1 >> 0x15 & 0xfU) - 1;
  local_24.tm_mday = (int)param_1 >> 0x10 & 0x1f;
  local_24.tm_hour = (int)param_1 >> 0xb & 0x1f;
  local_24.tm_min = (int)param_1 >> 5 & 0x3f;
  local_24.tm_sec = (param_1 & 0x1f) * 2;
  local_24.tm_isdst = -1;
  _Var1 = __mktime64(&local_24);
  *(int *)param_1_00 = (int)_Var1;
  uVar2 = __allmul(*(undefined4 *)param_1_00,(int)((ulonglong)_Var1 >> 0x20),1000,0);
  *param_1_00 = uVar2;
  return param_1_00;
}



uint * __thiscall FUN_0086ce20(uint *param_1_00,ushort param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  undefined8 uVar4;
  
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 == DAT_032365a0)) &&
     (param_1_00[1] == DAT_032365a4)) {
    FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x61a,"wxDateTime::SetMillisecond","IsValid()",
                 L"invalid wxDateTime");
  }
  uVar2 = param_1_00[1];
  uVar3 = *param_1_00;
  uVar4 = __allrem(uVar3,uVar2,1000,0);
  *param_1_00 = uVar3 - (uint)uVar4;
  uVar1 = *param_1_00;
  *param_1_00 = *param_1_00 + (uint)param_1;
  param_1_00[1] = (uVar2 - (int)((ulonglong)uVar4 >> 0x20)) - (uint)(uVar3 < (uint)uVar4);
  param_1_00[1] = param_1_00[1] + (uint)CARRY4(uVar1,(uint)param_1);
  return param_1_00;
}



void __fastcall FUN_0086cea0(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 4) == 0)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(**(undefined4 **)(param_1 + 8));
  }
  return;
}



void FUN_0086cf00(void)

{
  undefined4 *puVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = DAT_032bdb88;
  uVar3 = 0;
  if (DAT_032bdb88 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bdb88 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      puVar1 = *(undefined4 **)(DAT_032bdb8c + uVar3 * 4);
      if (puVar1 != (undefined4 *)0x0) {
        (**(code **)*puVar1)(1);
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  FUN_0086a880();
  return;
}



undefined4 __thiscall FUN_0086cf70(int *param_1_00,int *param_1)

{
  uint *puVar1;
  uint *puVar2;
  undefined local_10 [8];
  undefined local_8 [8];
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (((*param_1_00 == DAT_032365a0) && (param_1_00[1] == DAT_032365a4)) ||
       ((*param_1 == DAT_032365a0 && (param_1[1] == DAT_032365a4)))) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/datetime.h",0x3d3,"wxDateTime::operator <=",
                   "IsValid() && dt.IsValid()",L"invalid wxDateTime");
    }
  }
  puVar1 = (uint *)FUN_0086cab0(local_10);
  puVar2 = (uint *)FUN_0086cab0(local_8);
  if (((int)puVar2[1] <= (int)puVar1[1]) &&
     (((int)puVar2[1] < (int)puVar1[1] || (*puVar2 <= *puVar1)))) {
    return 1;
  }
  return 0;
}



undefined4 __thiscall FUN_0086d010(int *param_1_00,int *param_1)

{
  uint *puVar1;
  uint *puVar2;
  undefined local_10 [8];
  undefined local_8 [8];
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (((*param_1_00 == DAT_032365a0) && (param_1_00[1] == DAT_032365a4)) ||
       ((*param_1 == DAT_032365a0 && (param_1[1] == DAT_032365a4)))) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/datetime.h",0x3d9,"wxDateTime::operator >",
                   "IsValid() && dt.IsValid()",L"invalid wxDateTime");
    }
  }
  puVar1 = (uint *)FUN_0086cab0(local_10);
  puVar2 = (uint *)FUN_0086cab0(local_8);
  if (((int)puVar1[1] <= (int)puVar2[1]) &&
     (((int)puVar1[1] < (int)puVar2[1] || (*puVar1 < *puVar2)))) {
    return 1;
  }
  return 0;
}



undefined4 __thiscall FUN_0086d0b0(int *param_1_00,int *param_1)

{
  int *piVar1;
  int *piVar2;
  undefined local_10 [8];
  undefined local_8 [8];
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (((*param_1_00 == DAT_032365a0) && (param_1_00[1] == DAT_032365a4)) ||
       ((*param_1 == DAT_032365a0 && (param_1[1] == DAT_032365a4)))) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/datetime.h",0x3e5,"wxDateTime::operator ==",
                   "IsValid() && dt.IsValid()",L"invalid wxDateTime");
    }
  }
  piVar1 = (int *)FUN_0086cab0(local_10);
  piVar2 = (int *)FUN_0086cab0(local_8);
  if ((*piVar2 == *piVar1) && (piVar2[1] == piVar1[1])) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0086d150(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxDateTimeWorkDays::vftable;
    FUN_0086a400(puVar1,1);
    return 1;
  }
  FUN_0086a400(0,1);
  return 1;
}



void FUN_0086d190(void)

{
  FUN_0086cf00();
  FUN_0086a880();
  return;
}



undefined4 * FUN_0086d1a0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxDateTimeHolidaysModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void FUN_0086d200(void)

{
  int iVar1;
  int *unaff_ESI;
  int *unaff_EDI;
  undefined8 local_34;
  undefined8 local_2c;
  undefined local_24 [36];
  
  iVar1 = 0;
  if (*unaff_ESI == -0x8000) {
    local_34 = __time64((__time64_t *)0x0);
    iVar1 = FUN_008a67b0(&local_34,local_24);
    *unaff_ESI = *(int *)(iVar1 + 0x14) + 0x76c;
  }
  if (*unaff_EDI == 0xc) {
    if (iVar1 == 0) {
      local_2c = __time64((__time64_t *)0x0);
      iVar1 = FUN_008a67b0(&local_2c,local_24);
    }
    *unaff_EDI = *(int *)(iVar1 + 0x10);
  }
  return;
}



undefined4 * __thiscall
FUN_0086d270(undefined4 *param_1_00,ushort param_1,ushort param_2,ushort param_3,undefined4 param_4)

{
  uint *puVar1;
  undefined4 *puVar2;
  int iVar3;
  uint *puVar4;
  tm *ptVar5;
  uint local_6c [8];
  int local_4c;
  tm local_48;
  undefined local_24 [36];
  
  if ((((param_1 < 0x18) && (param_3 < 0x3e)) && (param_2 < 0x3c)) && ((ushort)param_4 < 1000)) {
    puVar1 = (uint *)FUN_0086cc50(local_24);
    if (puVar1 != (uint *)0x0) {
      puVar4 = local_6c;
      for (iVar3 = 9; iVar3 != 0; iVar3 = iVar3 + -1) {
        *puVar4 = *puVar1;
        puVar1 = puVar1 + 1;
        puVar4 = puVar4 + 1;
      }
      local_6c[2] = (uint)param_1;
      local_6c[0] = (uint)param_3;
      local_6c[1] = (uint)param_2;
      puVar1 = local_6c;
      ptVar5 = &local_48;
      for (iVar3 = 9; iVar3 != 0; iVar3 = iVar3 + -1) {
        ptVar5->tm_sec = *puVar1;
        puVar1 = puVar1 + 1;
        ptVar5 = (tm *)&ptVar5->tm_min;
      }
      __mktime64(&local_48);
      if (local_48.tm_isdst != local_4c) {
        local_4c = local_48.tm_isdst;
      }
      FUN_0086cca0(local_6c);
      puVar2 = (undefined4 *)FUN_0086ce20(param_4);
      return puVar2;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x484,"wxDateTime::Set",&DAT_00d2a874,
                   L"wxLocaltime_r() failed");
    }
    *param_1_00 = DAT_032365a0;
    param_1_00[1] = DAT_032365a4;
    return param_1_00;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x47e,"wxDateTime::Set",
                 "hour < 24 && second < 62 && minute < 60 && millisec < 1000",
                 L"Invalid time in wxDateTime::Set()");
  }
  *param_1_00 = DAT_032365a0;
  param_1_00[1] = DAT_032365a4;
  return param_1_00;
}



uint FUN_0086d3d0(void)

{
  int *piVar1;
  undefined8 local_2c;
  undefined local_24 [36];
  
  local_2c = FUN_0085c790();
  piVar1 = (int *)FUN_008a67b0(&local_2c,local_24);
  if (piVar1 != (int *)0x0) {
    return *piVar1 / 2 |
           ((piVar1[3] << 5 | piVar1[2]) << 6 | piVar1[1]) << 5 | (piVar1[5] + 0x30) * 0x2000000 |
           (piVar1[4] + 1) * 0x200000;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x536,"wxDateTime::GetAsDOS",&DAT_00d2a874,
                 L"time can\'t be represented in DOS format");
  }
  return 0xffffffff;
}



undefined4 * __thiscall FUN_0086d460(uint *param_1_00,undefined4 *param_1,int *param_2)

{
  longlong lVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  undefined4 *puVar8;
  undefined4 *puVar9;
  undefined8 uVar10;
  undefined4 uVar11;
  wchar_t *pwVar12;
  undefined8 local_50;
  undefined8 local_48;
  short local_40;
  ushort local_3e;
  ushort local_3c;
  short local_3a;
  undefined2 local_38;
  short local_36;
  int local_34;
  int local_30;
  undefined4 local_2c;
  undefined2 local_28;
  undefined local_24 [36];
  
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 == DAT_032365a0)) &&
     (param_1_00[1] == DAT_032365a4)) {
    FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x556,"wxDateTime::GetTm","IsValid()",
                 L"invalid wxDateTime");
  }
  local_50 = FUN_0085c790();
  if (local_50 == -1) {
LAB_0086d5d1:
    uVar4 = *param_2 * 1000;
    uVar7 = uVar4 + *param_1_00;
    iVar3 = ((int)uVar4 >> 0x1f) + param_1_00[1] + (uint)CARRY4(uVar4,*param_1_00);
    local_48 = __allrem(uVar7,iVar3,86400000,0);
    uVar4 = FUN_0081a105();
    if ((int)uVar4 < 0) {
      uVar4 = uVar4 + 86400000;
    }
    uVar10 = __alldiv(uVar7 - uVar4,(iVar3 - ((int)uVar4 >> 0x1f)) - (uint)(uVar7 < uVar4),86400000,
                      0);
    local_48 = uVar10;
    iVar3 = FUN_0081a105();
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar3 + 0x253d8b < -1)) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x59e,"wxDateTime::GetTm","jdn > -2",
                   L"JDN out of range");
    }
    iVar3 = (iVar3 + 0x253d8b) * 4 + 0x1f4b7;
    iVar2 = iVar3 % 0x23ab1;
    iVar2 = ((int)(iVar2 + (iVar2 >> 0x1f & 3U)) >> 2) * 4 + 3;
    iVar5 = (iVar3 / 0x23ab1) * 100 + iVar2 / 0x5b5;
    iVar2 = iVar2 % 0x5b5;
    iVar3 = (int)(iVar2 + (iVar2 >> 0x1f & 3U)) >> 2;
    iVar6 = iVar3 + 1;
    iVar3 = iVar3 + -2 + iVar6 * 4;
    iVar2 = iVar3 / 0x99;
    iVar3 = (iVar3 % 0x99) / 5 + 1;
    if (iVar2 < 10) {
      iVar2 = iVar2 + 3;
    }
    else {
      iVar5 = iVar5 + 1;
      iVar2 = iVar2 + -9;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      if ((iVar2 < 1) || (0xc < iVar2)) {
        FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x5bd,"wxDateTime::GetTm",
                     "(0 < month) && (month <= 12)",L"invalid month");
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((iVar3 < 1 || (0x1f < iVar3)))) {
        FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x5be,"wxDateTime::GetTm",
                     "(1 <= day) && (day < 32)",L"invalid day");
      }
    }
    local_38 = (short)iVar3;
    local_28 = 7;
    local_40 = (short)((int)uVar4 % 1000);
    iVar3 = (int)(uVar4 - ((int)uVar4 % 1000 & 0xffffU)) / 1000;
    local_3e = (short)iVar3 + (short)(iVar3 / 0x3c) * -0x3c;
    iVar3 = (int)(iVar3 - (uint)local_3e) / 0x3c;
    local_3c = (short)iVar3 + (short)(iVar3 / 0x3c) * -0x3c;
    iVar3 = iVar3 - (uint)local_3c;
    local_30 = iVar5 + -0x12c0;
    local_2c = 0;
    local_36 = (short)iVar6 + -1;
    local_34 = iVar2 + -1;
    local_3a = ((short)(iVar3 / 0x3c) + (short)(iVar3 >> 0x1f)) -
               (short)((longlong)iVar3 * 0x88888889 >> 0x3f);
LAB_0086d868:
    puVar8 = (undefined4 *)&local_40;
    puVar9 = param_1;
    for (iVar3 = 7; iVar3 != 0; iVar3 = iVar3 + -1) {
      *puVar9 = *puVar8;
      puVar8 = puVar8 + 1;
      puVar9 = puVar9 + 1;
    }
    return param_1;
  }
  iVar3 = *param_2;
  iVar2 = FUN_008a6790();
  if (iVar3 == -iVar2) {
    iVar3 = FUN_008a67b0(&local_50,local_24);
    if (iVar3 != 0) {
LAB_0086d57d:
      FUN_0086c830(iVar3,param_2);
      local_48 = __allrem(*param_1_00,param_1_00[1],86400000,0);
      iVar3 = FUN_0081a105();
      local_40 = (short)iVar3 +
                 (((short)(iVar3 / 1000) + (short)(iVar3 >> 0x1f)) -
                 (short)((longlong)iVar3 * 0x10624dd3 >> 0x3f)) * -1000;
      goto LAB_0086d868;
    }
    if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_0086d515;
    pwVar12 = L"wxLocaltime_r() failed";
    uVar11 = 0x564;
  }
  else {
    lVar1 = local_50 + *param_2;
    local_50 = local_50 + *param_2;
    if (lVar1 < 0) goto LAB_0086d5d1;
    local_50 = lVar1;
    iVar3 = FUN_008a67e0(&local_50,local_24);
    if (iVar3 != 0) goto LAB_0086d57d;
    if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_0086d515;
    pwVar12 = L"wxGmtime_r() failed";
    uVar11 = 0x573;
  }
  FUN_00840480("..\\..\\src\\common\\datetime.cpp",uVar11,"wxDateTime::GetTm",&DAT_00d2a874,pwVar12)
  ;
LAB_0086d515:
  FUN_0086cc10();
  return param_1;
}



undefined4 FUN_0086d890(void)

{
  int local_3c;
  short local_38;
  short local_36;
  short local_34;
  short local_32;
  short local_1c;
  short local_1a;
  short local_18;
  short local_16;
  
  local_3c = FUN_008a6790();
  local_3c = -local_3c;
  FUN_0086d460(&local_38,&local_3c);
  local_3c = FUN_008a6790();
  local_3c = -local_3c;
  FUN_0086d460(&local_1c,&local_3c);
  if ((((local_32 == local_16) && (local_34 == local_18)) && (local_36 == local_1a)) &&
     (local_38 == local_1c)) {
    return 1;
  }
  return 0;
}



undefined4 FUN_0086d920(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  wchar_t *pwVar3;
  undefined local_24 [8];
  undefined local_1c [28];
  
  if (param_1 == 0) {
    param_1 = FUN_008a6790();
    param_1 = -param_1;
    FUN_00455539(local_24);
    iVar1 = FUN_0086d460(local_1c,&param_1);
    return *(undefined4 *)(iVar1 + 0x10);
  }
  if (param_1 == 1) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0xffff8000;
    }
    pwVar3 = L"TODO";
    uVar2 = 0x239;
  }
  else {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0xffff8000;
    }
    pwVar3 = L"unsupported calendar";
    uVar2 = 0x23d;
  }
  FUN_00840480("..\\..\\src\\common\\datetime.cpp",uVar2,"wxDateTime::GetCurrentYear",
               "Assert failure",pwVar3);
  return 0xffff8000;
}



undefined4 FUN_0086d9c0(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  wchar_t *pwVar3;
  undefined local_24 [8];
  undefined local_1c [28];
  
  if (param_1 == 0) {
    param_1 = FUN_008a6790();
    param_1 = -param_1;
    FUN_00455539(local_24);
    iVar1 = FUN_0086d460(local_1c,&param_1);
    return *(undefined4 *)(iVar1 + 0xc);
  }
  if (param_1 == 1) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0xc;
    }
    pwVar3 = L"TODO";
    uVar2 = 0x24d;
  }
  else {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0xc;
    }
    pwVar3 = L"unsupported calendar";
    uVar2 = 0x251;
  }
  FUN_00840480("..\\..\\src\\common\\datetime.cpp",uVar2,"wxDateTime::GetCurrentMonth",
               "Assert failure",pwVar3);
  return 0xc;
}



undefined4 FUN_0086da60(void)

{
  int iVar1;
  int iVar2;
  int local_20;
  undefined local_1c [28];
  
  local_20 = FUN_008a6790();
  local_20 = -local_20;
  iVar1 = FUN_0086d460(local_1c,&local_20);
  if (*(short *)(iVar1 + 0x18) == 7) {
    iVar2 = FUN_0086c730();
    *(short *)(iVar1 + 0x18) = (short)((iVar2 + 2) % 7);
  }
  if ((*(short *)(iVar1 + 0x18) != 0) && (*(short *)(iVar1 + 0x18) != 6)) {
    return 0;
  }
  return 1;
}



uint FUN_0086dad0(uint param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  undefined local_24 [8];
  undefined local_1c [28];
  
  uVar3 = param_1;
  if (param_1 == 0xffff8000) {
    iVar1 = FUN_008a6790();
    param_1 = -iVar1;
    FUN_00455539(local_24);
    iVar1 = FUN_0086d460(local_1c,&param_1);
    uVar3 = *(uint *)(iVar1 + 0x10);
  }
  if (param_2 != 0) {
    if (param_2 == 1) {
      uVar3 = uVar3 & 0x80000003;
      if ((int)uVar3 < 0) {
        uVar3 = (uVar3 - 1 | 0xfffffffc) + 1;
      }
      return (uint)(uVar3 == 0);
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      param_2 = FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x21d,"wxDateTime::IsLeapYear",
                             "Assert failure",L"unknown calendar");
    }
    return param_2 & 0xffffff00;
  }
  uVar2 = uVar3 & 0x80000003;
  if ((int)uVar2 < 0) {
    uVar2 = (uVar2 - 1 | 0xfffffffc) + 1;
  }
  if ((uVar2 == 0) && ((uVar3 != ((int)uVar3 / 100) * 100 || (uVar3 == ((int)uVar3 / 400) * 400))))
  {
    return 1;
  }
  return 0;
}



short FUN_0086dbc0(int param_1,int param_2)

{
  char cVar1;
  int iVar2;
  undefined local_24 [8];
  undefined local_1c [28];
  
  iVar2 = param_1;
  if (param_1 == -0x8000) {
    param_1 = FUN_008a6790();
    param_1 = -param_1;
    FUN_00455539(local_24);
    iVar2 = FUN_0086d460(local_1c,&param_1);
    iVar2 = *(int *)(iVar2 + 0x10);
  }
  if ((-1 < param_2) && (param_2 < 2)) {
    cVar1 = FUN_0086dad0(iVar2,0);
    return (cVar1 != '\0') + 0x16d;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x268,"wxDateTime::GetNumberOfDays",
                 "Assert failure",L"unsupported calendar");
  }
  return 0;
}



int FUN_0086dc60(undefined4 param_1)

{
  int iVar1;
  uint uVar2;
  undefined local_1c [28];
  
  iVar1 = FUN_0086d460(local_1c,param_1);
  uVar2 = FUN_0086dad0(*(undefined4 *)(iVar1 + 0x10),0);
  return (uint)*(ushort *)(&DAT_00d2a404 + (*(int *)(iVar1 + 0xc) + (uVar2 & 0xff) * 0xc) * 2) +
         (uint)*(ushort *)(iVar1 + 8);
}



undefined4 FUN_0086dcb0(int param_1)

{
  uint uVar1;
  
  uVar1 = FUN_0086dad0();
  param_1 = param_1 + (uVar1 & 0xff) * 0xc;
  return CONCAT22((short)((uint)param_1 >> 0x10),*(undefined2 *)(&DAT_00d2aa98 + param_1 * 2));
}



uint __fastcall FUN_0086dce0(ushort *param_1)

{
  int iVar1;
  ushort uVar2;
  uint in_EAX;
  
  iVar1 = *(int *)(param_1 + 6);
  if (iVar1 != 0xc) {
    if ((-1 < iVar1) && (iVar1 < 0xc)) {
      if ((*(int *)(param_1 + 8) != -0x8000) && (param_1[4] != 0)) {
        uVar2 = FUN_0086dcb0(iVar1);
        if (((param_1[4] <= uVar2) &&
            (((param_1[3] < 0x18 && (param_1[2] < 0x3c)) && (param_1[1] < 0x3e)))) &&
           (*param_1 < 1000)) {
          return 1;
        }
      }
      return 0;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      in_EAX = FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x186,"wxDateTime::Tm::IsValid",
                            "mon >= wxDateTime::Jan && mon < wxDateTime::Inv_Month",
                            L"Invalid month value");
    }
  }
  return in_EAX & 0xffffff00;
}



void __thiscall FUN_0086dd70(int param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  
  iVar1 = (uint)*(ushort *)(param_1_00 + 8) + param_1;
  while (iVar1 < 1) {
    FUN_0086c8c0(0xffffffff);
    iVar1 = *(int *)(param_1_00 + 0xc);
    uVar2 = FUN_0086dad0(*(undefined4 *)(param_1_00 + 0x10),0);
    param_1 = param_1 + (uint)*(ushort *)(&DAT_00d2aa98 + (iVar1 + (uVar2 & 0xff) * 0xc) * 2);
    iVar1 = (uint)*(ushort *)(param_1_00 + 8) + param_1;
  }
  *(short *)(param_1_00 + 8) = *(short *)(param_1_00 + 8) + (short)param_1;
  iVar1 = *(int *)(param_1_00 + 0xc);
  uVar2 = FUN_0086dad0(*(undefined4 *)(param_1_00 + 0x10),0);
  if (*(ushort *)(&DAT_00d2aa98 + (iVar1 + (uVar2 & 0xff) * 0xc) * 2) < *(ushort *)(param_1_00 + 8))
  {
    do {
      iVar1 = *(int *)(param_1_00 + 0xc);
      uVar2 = FUN_0086dad0(*(undefined4 *)(param_1_00 + 0x10),0);
      *(short *)(param_1_00 + 8) =
           *(short *)(param_1_00 + 8) -
           *(short *)(&DAT_00d2aa98 + (iVar1 + (uVar2 & 0xff) * 0xc) * 2);
      FUN_0086c8c0(1);
      iVar1 = *(int *)(param_1_00 + 0xc);
      uVar2 = FUN_0086dad0(*(undefined4 *)(param_1_00 + 0x10),0);
    } while (*(ushort *)(&DAT_00d2aa98 + (iVar1 + (uVar2 & 0xff) * 0xc) * 2) <
             *(ushort *)(param_1_00 + 8));
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((*(short *)(param_1_00 + 8) == 0 ||
      (iVar1 = *(int *)(param_1_00 + 0xc),
      uVar2 = FUN_0086dad0(*(undefined4 *)(param_1_00 + 0x10),0),
      *(ushort *)(&DAT_00d2aa98 + (iVar1 + (uVar2 & 0xff) * 0xc) * 2) < *(ushort *)(param_1_00 + 8))
      ))) {
    FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x1c2,"wxDateTime::Tm::AddDays",
                 "mday > 0 && mday <= GetNumOfDaysInMonth(year, mon)",L"logic error");
  }
  return;
}



undefined2 FUN_0086deb0(int param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  undefined local_24 [8];
  undefined local_1c [28];
  
  iVar1 = param_1;
  if (param_1 < 0xc) {
    if ((param_3 == 0) || (param_3 == 1)) {
      iVar2 = param_2;
      if (param_2 == -0x8000) {
        param_1 = FUN_008a6790();
        param_1 = -param_1;
        FUN_00455539(local_24);
        iVar2 = FUN_0086d460(local_1c,&param_1);
        iVar2 = *(int *)(iVar2 + 0x10);
      }
      uVar3 = FUN_0086dad0(iVar2,0);
      return *(undefined2 *)(&DAT_00d2aa98 + (iVar1 + (uVar3 & 0xff) * 0xc) * 2);
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x282,"wxDateTime::GetNumberOfDays",
                   "Assert failure",L"unsupported calendar");
      return 0;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x274,"wxDateTime::GetNumberOfDays",
                 "month < MONTHS_IN_YEAR",L"invalid month");
  }
  return 0;
}



uint * __thiscall
FUN_0086df90(uint *param_1_00,ushort param_1,undefined4 param_2,int param_3,ushort param_4,
            ushort param_5,ushort param_6,uint param_7)

{
  uint uVar1;
  char cVar2;
  ushort uVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  uint local_24;
  uint local_20;
  uint local_1c;
  uint local_18;
  undefined4 local_14;
  int local_10;
  undefined4 local_4;
  
  if ((((0x17 < param_4) || (0x3d < param_6)) || (0x3b < param_5)) || (999 < (ushort)param_7)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x4a6,"wxDateTime::Set",
                   "hour < 24 && second < 62 && minute < 60 && millisec < 1000",
                   L"Invalid time in wxDateTime::Set()");
    }
    *param_1_00 = DAT_032365a0;
    param_1_00[1] = DAT_032365a4;
    return param_1_00;
  }
  FUN_0086d200();
  if ((param_1 == 0) || (uVar3 = FUN_0086deb0(param_2,param_3,0), uVar3 < param_1)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x4ab,"wxDateTime::Set",
                   "(0 < day) && (day <= GetNumberOfDays(month, year))",
                   L"Invalid date in wxDateTime::Set()");
    }
    *param_1_00 = DAT_032365a0;
    param_1_00[1] = DAT_032365a4;
    return param_1_00;
  }
  if (0x43 < param_3 - 0x7b2U) {
    uVar4 = FUN_0086c730();
    *param_1_00 = uVar4;
    uVar1 = *param_1_00;
    *param_1_00 = *param_1_00 - 0x253d8b;
    param_1_00[1] = (int)uVar4 >> 0x1f;
    param_1_00[1] = (param_1_00[1] - 1) + (uint)(0x253d8a < uVar1);
    FUN_00863190(86400000);
    param_7 = param_7 & 0xffff;
    uVar6 = 0;
    iVar5 = FUN_008a6790();
    uVar6 = FUN_0086cb70(param_4,param_5,iVar5 + (uint)param_6,(int)(iVar5 + (uint)param_6) >> 0x1f,
                         param_7,uVar6);
    FUN_0086cb10(uVar6);
    return param_1_00;
  }
  local_1c = (uint)param_4;
  local_20 = (uint)param_5;
  local_18 = (uint)param_1;
  local_24 = (uint)param_6;
  local_10 = param_3 + -0x76c;
  local_14 = param_2;
  local_4 = 0xffffffff;
  FUN_0086cca0(&local_24);
  cVar2 = FUN_0085c770();
  if (cVar2 == '\0') {
    return param_1_00;
  }
  FUN_0086ce20(param_7);
  return param_1_00;
}



undefined4 * __thiscall FUN_0086e190(undefined4 *param_1_00,int param_1)

{
  ushort uVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int local_24 [2];
  undefined local_1c [28];
  
  local_24[0] = FUN_008a6790();
  local_24[0] = -local_24[0];
  iVar3 = FUN_0086d460(local_1c,local_24);
  uVar1 = (ushort)param_1;
  iVar3 = *(int *)(iVar3 + 0x10);
  if ((ushort)param_1 != 0) {
    iVar4 = iVar3;
    if (iVar3 == -0x8000) {
      param_1 = FUN_008a6790();
      param_1 = -param_1;
      FUN_00455539(local_24);
      iVar4 = FUN_0086d460(local_1c,&param_1);
      iVar4 = *(int *)(iVar4 + 0x10);
    }
    cVar2 = FUN_0086dad0(iVar4,0);
    if (uVar1 <= (ushort)((cVar2 != '\0') + 0x16d)) {
      uVar5 = FUN_0086dad0(iVar3,0);
      param_1 = 0;
      while ((param_1 != 0xb &&
             (*(ushort *)(&DAT_00d2a406 + (param_1 + (uVar5 & 0xff) * 0xc) * 2) < uVar1))) {
        FUN_0086ca30(&param_1);
        if (0xb < param_1) {
          return param_1_00;
        }
      }
      FUN_0086df90(uVar1 - *(short *)(&DAT_00d2a404 + (param_1 + (uVar5 & 0xff) * 0xc) * 2),param_1,
                   iVar3,0,0,0,0);
      return param_1_00;
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x792,"wxDateTime::SetToYearDay",
                 "(0 < yday) && (yday <= GetNumberOfDays(year))",L"invalid year day");
  }
  *param_1_00 = DAT_032365a0;
  param_1_00[1] = DAT_032365a4;
  return param_1_00;
}



void FUN_0086e2f0(undefined2 *param_1)

{
  char cVar1;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    cVar1 = FUN_0086dce0();
    if (cVar1 == '\0') {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/datetime.h",0x6ec,"wxDateTime::Set",
                   "tm.IsValid()",L"invalid broken down date/time");
    }
  }
  FUN_0086df90(param_1[4],*(undefined4 *)(param_1 + 6),*(undefined4 *)(param_1 + 8),param_1[3],
               param_1[2],param_1[1],*param_1);
  return;
}



undefined4 * __thiscall
FUN_0086e360(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  *param_1_00 = 0;
  param_1_00[1] = 0;
  FUN_0086df90(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  return param_1_00;
}



undefined4 __fastcall FUN_0086e3a0(undefined4 param_1)

{
  int local_20;
  short local_1c;
  short local_1a;
  short local_18;
  short local_16;
  
  local_20 = FUN_008a6790();
  local_20 = -local_20;
  FUN_0086d460(&local_1c,&local_20);
  if ((((local_16 != 0) || (local_18 != 0)) || (local_1a != 0)) || (local_1c != 0)) {
    local_18 = 0;
    local_1a = 0;
    local_16 = 0;
    local_1c = 0;
    FUN_0086e2f0(&local_1c);
  }
  return param_1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_0086e410(int param_1,int param_2,tm *param_3)

{
  wchar_t wVar1;
  uint uVar2;
  size_t sVar3;
  int iVar4;
  wchar_t *pwVar5;
  undefined4 local_2018;
  int local_2014;
  wchar_t local_2010;
  undefined local_200e [8190];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc99c2;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_2018;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffdfdc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_2014 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  local_2018 = 1;
  if (*(uint *)(param_2 + 0x18) < 8) {
    pwVar5 = (wchar_t *)(param_2 + 4);
  }
  else {
    pwVar5 = *(wchar_t **)(param_2 + 4);
  }
  sVar3 = _wcsftime(&local_2010,0x1000,pwVar5,param_3);
  if (sVar3 == 0) {
    iVar4 = FUN_008507a0(&DAT_00d260a8);
    if ((iVar4 != 0) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",299,"CallStrftime","Assert failure",
                   L"strftime() failed",uVar2);
    }
    local_2010 = L'\0';
  }
  pwVar5 = &local_2010;
  do {
    wVar1 = *pwVar5;
    pwVar5 = pwVar5 + 1;
  } while (wVar1 != L'\0');
  FID_conflict_assign(&local_2010,(int)pwVar5 - (int)local_200e >> 1);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int FUN_0086e550(int param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  
  if (param_2 == 0xc) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\datetime.cpp",0x2a7,"wxDateTime::GetEnglishMonthName",
                   "month != Inv_Month","invalid month");
    }
    FUN_004325b6(PTR_DAT_03236318);
    return param_1;
  }
  iVar1 = FUN_0086c9e0(param_3);
  if (iVar1 == -1) {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    *(undefined4 *)(param_1 + 0x1c) = 0;
    return param_1;
  }
  FUN_0043c211((&PTR_s_January_00d2ad58)[param_2 + iVar1 * 0xc]);
  return param_1;
}



undefined4 FUN_0086e600(undefined4 param_1,int param_2,int param_3)

{
  undefined *puVar1;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  int local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc99f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 == 0xc) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x2bd,"wxDateTime::GetMonthName",
                   "month != Inv_Month",L"invalid month",DAT_0323f878 ^ (uint)&stack0xffffffa4);
    }
    FUN_004325b6(PTR_DAT_03236318);
  }
  else {
    local_54 = 0;
    local_50 = 0;
    local_4c = 0;
    local_3c = 0;
    local_38 = 0;
    local_48 = 1;
    local_40 = 0x4c;
    local_34 = 0xffffffff;
    local_44 = param_2;
    puVar1 = &DAT_00d2ae6c;
    if (param_3 != 2) {
      puVar1 = &DAT_03059f38;
    }
    FUN_004325b6(puVar1);
    local_4 = 0;
    FUN_0086e410(param_1,local_30,&local_54);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



int FUN_0086e730(int param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  
  if (param_2 == 7) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x2ce,"wxDateTime::GetEnglishWeekDayName",
                   "wday != Inv_WeekDay",L"invalid weekday");
    }
    FUN_004325b6(PTR_DAT_03236318);
    return param_1;
  }
  iVar1 = FUN_0086c9e0(param_3);
  if (iVar1 == -1) {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    *(undefined4 *)(param_1 + 0x1c) = 0;
    return param_1;
  }
  FUN_0043c211((&PTR_s_Sunday_00d2aecc)[iVar1 * 7 + param_2]);
  return param_1;
}



undefined4 FUN_0086e7e0(undefined4 param_1,int param_2,int param_3)

{
  undefined *puVar1;
  tm local_54;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc99f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 == 7) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x2e3,"wxDateTime::GetWeekDayName",
                   "wday != Inv_WeekDay",L"invalid weekday",DAT_0323f878 ^ (uint)&stack0xffffffa4);
    }
    FUN_004325b6(PTR_DAT_03236318);
  }
  else {
    local_54.tm_sec = 0;
    local_54.tm_min = 0;
    local_54.tm_hour = 0;
    local_54.tm_wday = 0;
    local_54.tm_yday = 0;
    local_54.tm_mday = param_2 + 0x15;
    local_54.tm_isdst = -1;
    local_54.tm_mon = 10;
    local_54.tm_year = 99;
    __mktime64(&local_54);
    puVar1 = &DAT_03059f30;
    if (param_3 != 2) {
      puVar1 = &DAT_03059f28;
    }
    FUN_004325b6(puVar1);
    local_4 = 0;
    FUN_0086e410(param_1,local_30,&local_54);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_0086e920(undefined *param_1,undefined *param_2)

{
  uint uVar1;
  size_t sVar2;
  undefined *puVar3;
  undefined4 *****pppppuVar4;
  undefined local_fc [4];
  undefined4 *****local_f8 [5];
  uint local_e4;
  void *local_e0;
  undefined local_d8 [4];
  undefined4 *****local_d4;
  undefined4 local_c4;
  uint local_c0;
  void *local_bc;
  tm local_b4;
  wchar_t local_90 [64];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9a4c;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_fc;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffef8;
  ExceptionList = &local_c;
  local_b4.tm_sec = 0;
  local_b4.tm_min = 0;
  local_b4.tm_hour = 0;
  local_b4.tm_mon = 0;
  local_b4.tm_wday = 0;
  local_b4.tm_yday = 0;
  local_b4.tm_mday = 1;
  local_b4.tm_year = 0x4c;
  local_b4.tm_isdst = -1;
  if (param_1 != (undefined *)0x0) {
    FUN_004325b6(&DAT_00d260a8);
    pppppuVar4 = local_f8[0];
    if (local_e4 < 8) {
      pppppuVar4 = local_f8;
    }
    sVar2 = _wcsftime(local_90,0x40,(wchar_t *)pppppuVar4,&local_b4);
    _free(local_e0);
    if (7 < local_e4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_f8[0],uVar1);
    }
    if (sVar2 == 0) {
      local_c0 = 7;
      local_c4 = 0;
      local_d4 = (undefined4 *****)((uint)local_d4 & 0xffff0000);
      local_bc = (void *)0x0;
      local_4 = 1;
      if (param_1 != local_d8) {
        FID_conflict_assign(local_d8,0,0xffffffff);
      }
      local_4 = 0xffffffff;
      _free(local_bc);
      if (7 < local_c0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_d4);
      }
    }
    else {
      puVar3 = (undefined *)FUN_004325b6(local_90);
      local_4 = 0;
      if (param_1 != puVar3) {
        FID_conflict_assign(puVar3,0,0xffffffff);
      }
      local_4 = 0xffffffff;
      _free(local_e0);
      if (7 < local_e4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_f8[0]);
      }
    }
  }
  if (param_2 != (undefined *)0x0) {
    local_b4.tm_hour = 0xd;
    FUN_004325b6(&DAT_00d260a8);
    pppppuVar4 = local_f8[0];
    if (local_e4 < 8) {
      pppppuVar4 = local_f8;
    }
    sVar2 = _wcsftime(local_90,0x40,(wchar_t *)pppppuVar4,&local_b4);
    _free(local_e0);
    if (7 < local_e4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_f8[0]);
    }
    if (sVar2 == 0) {
      local_c0 = 7;
      local_c4 = 0;
      local_d4 = (undefined4 *****)((uint)local_d4 & 0xffff0000);
      local_bc = (void *)0x0;
      local_4 = 3;
      if (param_2 != local_d8) {
        FID_conflict_assign(local_d8,0,0xffffffff);
      }
      _free(local_bc);
      local_f8[0] = local_d4;
      local_e4 = local_c0;
    }
    else {
      puVar3 = (undefined *)FUN_004325b6(local_90);
      local_4 = 2;
      if (param_2 != puVar3) {
        FID_conflict_assign(puVar3,0,0xffffffff);
      }
      _free(local_e0);
    }
    if (7 < local_e4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_f8[0]);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0086ec00(void)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined8 local_84;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [36];
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9a90;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_84;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_c;
  if (DAT_032bdb80 != 0) goto LAB_0086ee57;
  iVar3 = DAT_032bdb80;
  local_84 = __time64((__time64_t *)0x0);
  uVar2 = FUN_008a67b0(&local_84,local_58,iVar3,uVar1);
  FUN_004325b6(&DAT_03059db0);
  local_4 = 0;
  FUN_0086e410(local_34,local_7c,uVar2);
  local_4 = CONCAT31(local_4._1_3_,2);
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  iVar3 = FUN_008507a0(&DAT_00d2b000);
  if (iVar3 == 0) {
LAB_0086ee27:
    DAT_032bdb80 = 5;
  }
  else {
    iVar3 = FUN_008507a0(L"WEST");
    if (iVar3 == 0) goto LAB_0086ee27;
    iVar3 = FUN_008507a0(&DAT_00d2afec);
    if (iVar3 == 0) {
LAB_0086ee1b:
      DAT_032bdb80 = 2;
    }
    else {
      iVar3 = FUN_008507a0(L"CEST");
      if (iVar3 == 0) goto LAB_0086ee1b;
      iVar3 = FUN_008507a0(&DAT_00d2afd8);
      if (iVar3 == 0) {
LAB_0086ee0f:
        DAT_032bdb80 = 6;
      }
      else {
        iVar3 = FUN_008507a0(&DAT_00d2afd0);
        if (iVar3 == 0) goto LAB_0086ee0f;
        iVar3 = FUN_008507a0(&DAT_00d2afc8);
        if (iVar3 != 0) {
          iVar3 = FUN_008507a0(&DAT_00d2afc0);
          if (iVar3 != 0) {
            iVar3 = FUN_008507a0(&DAT_00d2afb8);
            if (iVar3 != 0) {
              iVar3 = FUN_008507a0(&DAT_00d2afb0);
              if (iVar3 != 0) {
                iVar3 = FUN_008507a0(&DAT_00d2afa8);
                if (iVar3 != 0) {
                  iVar3 = FUN_008507a0(&DAT_00d2afa0);
                  if (iVar3 != 0) {
                    iVar3 = FUN_008507a0(&DAT_00d2af98);
                    if (iVar3 != 0) {
                      iVar3 = FUN_008507a0(&DAT_00d2af90);
                      if (iVar3 != 0) {
                        iVar3 = FUN_008507a0(&DAT_00d2af88);
                        if (iVar3 != 0) {
                          FUN_008507a0(&DAT_00d2af80);
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
        DAT_032bdb80 = 7;
      }
    }
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
LAB_0086ee57:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



bool FUN_0086ee80(int param_1)

{
  if (param_1 == 1) {
    param_1 = FUN_0086ec00();
  }
  return param_1 - 2U < 4;
}



undefined4 __thiscall FUN_0086eea0(undefined4 param_1_00,int *param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int local_24;
  undefined4 local_20;
  undefined local_1c [8];
  ushort local_14;
  int local_10;
  int local_c;
  
  local_24 = FUN_008a6790();
  local_24 = -local_24;
  FUN_0086d460(local_1c,&local_24);
  local_c = local_c + *param_1;
  FUN_0086c8c0(param_1[1]);
  iVar1 = local_c;
  uVar3 = FUN_0086dad0(local_c,0);
  if (*(ushort *)(&DAT_00d2aa98 + (local_10 + (uVar3 & 0xff) * 0xc) * 2) < local_14) {
    uVar3 = FUN_0086dad0(iVar1,0);
    local_14 = *(ushort *)(&DAT_00d2aa98 + (local_10 + (uVar3 & 0xff) * 0xc) * 2);
  }
  FUN_0086dd70(param_1[2] * 7 + param_1[3]);
  FUN_0086e2f0(local_1c);
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    local_24 = 0;
    local_20 = 0;
    FUN_0086e2f0(local_1c);
    cVar2 = FUN_0086d890(&local_24);
    if (cVar2 == '\0') {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x640,"wxDateTime::Add","IsSameTime(tm)",
                   L"Add(wxDateSpan) shouldn\'t modify time");
    }
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0086efb0(undefined4 *param_1_00,uint param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  undefined4 *puVar5;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  int local_10;
  
  uVar1 = param_1;
  if (param_1 == 7) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x6bc,"wxDateTime::SetToNextWeekDay",
                   "weekday != Inv_WeekDay",L"invalid weekday");
    }
    *param_1_00 = DAT_032365a0;
    param_1_00[1] = DAT_032365a4;
  }
  else {
    iVar2 = FUN_008a6790();
    param_1 = -iVar2;
    iVar2 = FUN_0086d460(&local_1c,&param_1);
    if (*(short *)(iVar2 + 0x18) == 7) {
      iVar3 = FUN_0086c730();
      *(short *)(iVar2 + 0x18) = (short)((iVar3 + 2) % 7);
    }
    uVar4 = (uint)*(ushort *)(iVar2 + 0x18);
    if (uVar1 != uVar4) {
      if ((int)uVar1 < (int)uVar4) {
        local_10 = (uVar1 - uVar4) + 7;
      }
      else {
        local_10 = uVar1 - uVar4;
      }
      local_1c = 0;
      local_18 = 0;
      local_14 = 0;
      puVar5 = (undefined4 *)FUN_0086eea0(&local_1c);
      return puVar5;
    }
  }
  return param_1_00;
}



uint FUN_0086f090(int param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  int local_64;
  undefined4 local_60;
  int local_5c [2];
  undefined local_54 [8];
  ushort local_4c;
  int local_48;
  undefined4 local_44;
  undefined local_38 [28];
  undefined local_1c [28];
  
  if (param_1 == 0) {
    iVar1 = FUN_0086ec00();
    param_1 = 2 - (uint)(iVar1 != 7);
  }
  uVar5 = param_2;
  FUN_0086d460(local_54,param_2);
  uVar2 = FUN_0086dad0(local_44,0);
  param_2 = (uint)(ushort)(*(short *)(&DAT_00d2a404 + (local_48 + (uVar2 & 0xff) * 0xc) * 2) +
                          local_4c);
  iVar1 = FUN_0086d460(local_38,uVar5);
  if (*(short *)(iVar1 + 0x18) == 7) {
    iVar3 = FUN_0086c730();
    *(short *)(iVar1 + 0x18) = (short)((iVar3 + 2) % 7);
  }
  uVar2 = (uint)*(ushort *)(iVar1 + 0x18);
  local_5c[0] = FUN_008a6790();
  local_5c[0] = -local_5c[0];
  local_64 = FUN_008a6790();
  local_64 = -local_64;
  iVar1 = FUN_0086d460(local_38,&local_64);
  local_64 = 0;
  local_60 = 0;
  FUN_0086df90(1,0,*(undefined4 *)(iVar1 + 0x10),0,0,0,0);
  iVar1 = FUN_0086d460(local_1c,local_5c);
  if (*(short *)(iVar1 + 0x18) == 7) {
    iVar3 = FUN_0086c730();
    *(short *)(iVar1 + 0x18) = (short)((iVar3 + 2) % 7);
  }
  uVar4 = (uint)*(ushort *)(iVar1 + 0x18);
  if (param_1 == 2) {
    uVar2 = (int)(((param_2 & 0xffff) - uVar2) + 7) / 7;
    if ((uVar4 == 3) || (uVar4 == 4)) {
      return uVar2 + 1;
    }
  }
  else {
    if (uVar4 == 0) {
      iVar1 = 6;
    }
    else {
      iVar1 = uVar4 - 1;
    }
    if (uVar2 == 0) {
      iVar3 = 6;
    }
    else {
      iVar3 = uVar2 - 1;
    }
    if (iVar1 < 4) {
      uVar2 = (int)(((param_2 & 0xffff) - iVar3) + 6 + iVar1) / 7;
      if ((uVar2 == 0x35) && (0x1c < (int)((uint)local_4c - iVar3))) {
        return 1;
      }
    }
    else {
      if ((local_48 == 0) && ((int)(uint)local_4c < 8 - iVar1)) {
        iVar1 = FUN_008a6790();
        param_2 = -iVar1;
        param_1 = FUN_008a6790();
        param_1 = -param_1;
        iVar1 = FUN_0086d460(local_1c,&param_1);
        puVar6 = &param_2;
        uVar5 = 1;
        FUN_0086e360(0x1f,0xb,*(int *)(iVar1 + 0x10) + -1,0,0,0,0);
        uVar2 = FUN_0086f090(uVar5,puVar6);
        return uVar2 & 0xffff;
      }
      uVar2 = (int)(((param_2 & 0xffff) - iVar3) + -1 + iVar1) / 7;
    }
  }
  return uVar2;
}



void FUN_0086f2f0(int *param_1)

{
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  local_10 = -*param_1;
  local_c = -param_1[1];
  local_8 = -param_1[2];
  local_4 = -param_1[3];
  FUN_0086eea0(&local_10);
  return;
}



undefined4 * __thiscall FUN_0086f330(undefined4 *param_1_00,uint param_1,int param_2)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  uint uVar4;
  uint uVar5;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  int local_10;
  
  uVar5 = param_1;
  if (param_1 == 7) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x694,"wxDateTime::SetToWeekDayInSameWeek",
                   "weekday != Inv_WeekDay",L"invalid weekday");
    }
    *param_1_00 = DAT_032365a0;
    param_1_00[1] = DAT_032365a4;
    return param_1_00;
  }
  iVar1 = FUN_008a6790();
  param_1 = -iVar1;
  iVar1 = FUN_0086d460(&local_1c,&param_1);
  if (*(short *)(iVar1 + 0x18) == 7) {
    iVar2 = FUN_0086c730();
    *(short *)(iVar1 + 0x18) = (short)((iVar2 + 2) % 7);
  }
  uVar4 = (uint)*(ushort *)(iVar1 + 0x18);
  if (uVar5 == uVar4) {
    return param_1_00;
  }
  iVar1 = param_2;
  if (param_2 == 0) {
    iVar1 = FUN_0086ec00();
    iVar1 = 2 - (uint)(iVar1 != 7);
  }
  if (iVar1 == 1) {
    if (uVar4 == 0) {
      uVar4 = 7;
    }
    if (uVar5 == 0) {
      uVar5 = 7;
    }
  }
  local_1c = 0;
  local_18 = 0;
  local_14 = 0;
  if ((int)uVar5 < (int)uVar4) {
    local_10 = uVar4 - uVar5;
    puVar3 = (undefined4 *)FUN_0086f2f0(&local_1c);
    return puVar3;
  }
  local_10 = uVar5 - uVar4;
  puVar3 = (undefined4 *)FUN_0086eea0(&local_1c);
  return puVar3;
}



undefined4 * __thiscall FUN_0086f460(undefined4 *param_1_00,uint param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  undefined4 *puVar5;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  int local_10;
  
  uVar1 = param_1;
  if (param_1 == 7) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x6d4,"wxDateTime::SetToPrevWeekDay",
                   "weekday != Inv_WeekDay",L"invalid weekday");
    }
    *param_1_00 = DAT_032365a0;
    param_1_00[1] = DAT_032365a4;
  }
  else {
    iVar2 = FUN_008a6790();
    param_1 = -iVar2;
    iVar2 = FUN_0086d460(&local_1c,&param_1);
    if (*(short *)(iVar2 + 0x18) == 7) {
      iVar3 = FUN_0086c730();
      *(short *)(iVar2 + 0x18) = (short)((iVar3 + 2) % 7);
    }
    uVar4 = (uint)*(ushort *)(iVar2 + 0x18);
    if (uVar1 != uVar4) {
      if ((int)uVar4 < (int)uVar1) {
        local_10 = (uVar4 - uVar1) + 7;
      }
      else {
        local_10 = uVar4 - uVar1;
      }
      local_1c = 0;
      local_18 = 0;
      local_14 = 0;
      local_10 = -local_10;
      puVar5 = (undefined4 *)FUN_0086eea0(&local_1c);
      return puVar5;
    }
  }
  return param_1_00;
}



undefined4 FUN_0086f540(undefined4 *param_1,undefined4 *param_2,int param_3)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  
  cVar2 = FUN_0086d010(param_2);
  if (cVar2 != '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\datetime.cpp",0x853,
                   "wxDateTimeWorkDays::DoGetHolidaysInRange","Assert failure",
                   L"invalid date range in GetHolidaysInRange");
    }
    return 0;
  }
  FUN_0086cea0();
  FUN_0086a880();
  local_2c = param_1[1];
  local_30 = *param_1;
  puVar3 = (undefined4 *)FUN_0086efb0(6);
  local_40 = *puVar3;
  local_3c = puVar3[1];
  local_30 = *param_2;
  local_2c = param_2[1];
  puVar3 = (undefined4 *)FUN_0086f460(6);
  local_38 = *puVar3;
  local_34 = puVar3[1];
  local_30 = *param_1;
  local_2c = param_1[1];
  puVar3 = (undefined4 *)FUN_0086efb0(0);
  local_14 = puVar3[1];
  local_24 = param_2[1];
  uVar1 = *puVar3;
  local_28 = *param_2;
  puVar3 = (undefined4 *)FUN_0086f460(0);
  local_30 = *puVar3;
  local_2c = puVar3[1];
  local_48 = local_40;
  local_44 = local_3c;
  cVar2 = FUN_0086cf70(&local_38);
  if (cVar2 != '\0') {
    local_28 = 0;
    local_24 = 0;
    local_20 = 1;
    local_1c = 0;
    do {
      FUN_009ce2c0(&local_48,1);
      FUN_0086eea0(&local_28);
      cVar2 = FUN_0086cf70(&local_38);
    } while (cVar2 != '\0');
  }
  local_44 = local_14;
  local_48 = uVar1;
  cVar2 = FUN_0086cf70(&local_30);
  if (cVar2 != '\0') {
    local_18 = 0;
    local_14 = 0;
    local_10 = 1;
    local_c = 0;
    do {
      FUN_009ce2c0(&local_48,1);
      FUN_0086eea0(&local_18);
      cVar2 = FUN_0086cf70(&local_30);
    } while (cVar2 != '\0');
  }
  return *(undefined4 *)(param_3 + 4);
}



undefined2 * __thiscall
FUN_0086f710(undefined2 *param_1_00,undefined2 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 9) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<unsigned short>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_0086f780(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 9) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<enum wxDateTime::WeekDay>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



int __thiscall FUN_0086f7f0(int *param_1_00,int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1_00;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *param_1)))) {
    FUN_00a3fb10();
  }
  return param_1_00[1] - param_1[1] >> 1;
}



int * __thiscall FUN_0086f820(int *param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = *param_1_00;
  iVar2 = param_1_00[1];
  *param_1 = iVar1;
  param_1[1] = iVar2;
  if (iVar1 != -4) {
    if (iVar1 == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *param_1_00;
    if (*(uint *)(iVar1 + 0x18) < 8) {
      iVar2 = iVar1 + 4;
    }
    else {
      iVar2 = *(int *)(iVar1 + 4);
    }
    if ((uint)(iVar2 + *(int *)(iVar1 + 0x14) * 2) <= (uint)param_1_00[1]) {
      FUN_00a3fb10();
    }
  }
  param_1_00[1] = param_1_00[1] + 2;
  return param_1;
}



undefined4 * __thiscall FUN_0086f870(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_004226c0(param_1);
  *param_1_00 = *puVar1;
  param_1_00[1] = puVar1[1];
  return param_1_00;
}



undefined4 * FUN_0086f8b0(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)FUN_004226c0(param_2);
  uVar1 = *puVar2;
  param_1[1] = puVar2[1];
  *param_1 = uVar1;
  return param_1;
}



undefined4 __thiscall FUN_0086f8f0(int param_1_00,undefined4 param_1,int param_2,int param_3)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  uVar1 = *(uint *)(param_1_00 + 0x18);
  puVar3 = (undefined4 *)(param_1_00 + 4);
  puVar4 = puVar3;
  if (7 < uVar1) {
    puVar4 = (undefined4 *)*puVar3;
  }
  if (puVar4 != (undefined4 *)0x0) {
    puVar2 = puVar3;
    if (7 < uVar1) {
      puVar2 = (undefined4 *)*puVar3;
    }
    if (puVar2 <= puVar4) {
      puVar2 = puVar3;
      if (7 < uVar1) {
        puVar2 = (undefined4 *)*puVar3;
      }
      if (puVar4 <= (undefined4 *)((int)puVar2 + *(int *)(param_1_00 + 0x14) * 2))
      goto LAB_0086f937;
    }
  }
  FUN_00a3fb10();
LAB_0086f937:
  if (param_3 != 0) {
    if ((param_2 != -4) && ((param_2 == 0 || (param_2 != param_1_00)))) {
      FUN_00a3fb10();
    }
    param_3 = param_3 - (int)puVar4 >> 1;
  }
  FID_conflict_erase(param_3,1);
  if (7 < *(uint *)(param_1_00 + 0x18)) {
    puVar3 = (undefined4 *)*puVar3;
  }
  FUN_00412747((int)puVar3 + param_3 * 2,param_1_00);
  return param_1;
}



bool __thiscall FUN_0086f990(int *param_1_00,undefined4 param_1)

{
  ushort uVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  
  if (*param_1_00 != -4) {
    if (*param_1_00 == 0) {
      FUN_00a3fb10();
    }
    iVar2 = *param_1_00;
    if (*(uint *)(iVar2 + 0x18) < 8) {
      iVar4 = iVar2 + 4;
    }
    else {
      iVar4 = *(int *)(iVar2 + 4);
    }
    if ((uint)(iVar4 + *(int *)(iVar2 + 0x14) * 2) <= (uint)param_1_00[1]) {
      FUN_00a3fb10();
    }
  }
  uVar1 = *(ushort *)param_1_00[1];
  if ((byte)param_1 < 0x80) {
    return (uint)uVar1 == (int)(char)(byte)param_1;
  }
  uVar3 = FUN_00884ad0(param_1);
  return uVar1 == uVar3;
}



undefined4 FUN_0086fa00(undefined4 param_1,uint param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_0086f710(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,param_2 & 0xffff);
  return param_1;
}



undefined4 FUN_0086fa40(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_0086f780(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,param_2);
  return param_1;
}



int __thiscall FUN_0086fa80(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6cd3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 1;
  FID_conflict_assign(param_1,0,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_0086faf0(undefined4 param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  
  if ((byte)param_1 < 0x80) {
    FID_conflict_append(1,(int)(char)(byte)param_1);
    return param_1_00;
  }
  uVar1 = FUN_00884ad0(param_1);
  FID_conflict_append(1,uVar1);
  return param_1_00;
}



wchar_t * FUN_0086fb30(undefined4 param_1,wchar_t *param_2)

{
  int *piVar1;
  wchar_t *pwVar2;
  int iVar3;
  int local_c [2];
  char local_4;
  
  piVar1 = (int *)FUN_00432231(local_c);
  iVar3 = *piVar1;
  if (*(uint *)(iVar3 + 0x18) < 8) {
    iVar3 = iVar3 + 4;
  }
  else {
    iVar3 = *(int *)(iVar3 + 4);
  }
  pwVar2 = _wcsstr((wchar_t *)(iVar3 + piVar1[1] * 2),param_2);
  if (local_4 == '\0') {
    return pwVar2;
  }
  if (local_c[0] == 0) {
    return pwVar2;
  }
  _free(*(void **)(local_c[0] + 0x1c));
  if (7 < *(uint *)(local_c[0] + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(local_c[0] + 4));
  }
  *(undefined4 *)(local_c[0] + 0x18) = 7;
  *(undefined4 *)(local_c[0] + 0x14) = 0;
  *(undefined2 *)(local_c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_c[0]);
}



void FUN_0086fbd0(uint param_1,int *param_2,int *param_3,undefined4 param_4)

{
  undefined2 *puVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  uint local_3c;
  undefined4 local_38;
  uint local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bddc78;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  local_38 = param_4;
  local_3c = 1;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  do {
    iVar3 = *param_2;
    if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *param_3)))) {
      FUN_00a3fb10(uVar2);
    }
    if (param_2[1] == param_3[1]) break;
    if (*param_2 != -4) {
      if (*param_2 == 0) {
        FUN_00a3fb10(uVar2);
      }
      iVar3 = *param_2;
      if (*(uint *)(iVar3 + 0x18) < 8) {
        iVar4 = iVar3 + 4;
      }
      else {
        iVar4 = *(int *)(iVar3 + 4);
      }
      if ((uint)(iVar4 + *(int *)(iVar3 + 0x14) * 2) <= (uint)param_2[1]) {
        FUN_00a3fb10(uVar2);
      }
    }
    iVar3 = _iswdigit(*(wint_t *)param_2[1]);
    if (iVar3 == 0) break;
    iVar3 = *param_2;
    puVar1 = (undefined2 *)param_2[1];
    if (iVar3 != -4) {
      if (iVar3 == 0) {
        FUN_00a3fb10();
      }
      iVar4 = *param_2;
      if (*(uint *)(iVar4 + 0x18) < 8) {
        iVar5 = iVar4 + 4;
      }
      else {
        iVar5 = *(int *)(iVar4 + 4);
      }
      if ((uint)(iVar5 + *(int *)(iVar4 + 0x14) * 2) <= (uint)param_2[1]) {
        FUN_00a3fb10();
      }
    }
    param_2[1] = param_2[1] + 2;
    if (iVar3 != -4) {
      if (iVar3 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar3 + 0x18) < 8) {
        iVar4 = iVar3 + 4;
      }
      else {
        iVar4 = *(int *)(iVar3 + 4);
      }
      if ((undefined2 *)(iVar4 + *(int *)(iVar3 + 0x14) * 2) <= puVar1) {
        FUN_00a3fb10();
      }
    }
    FID_conflict_append(1,*puVar1);
  } while ((param_1 == 0) || (local_3c = local_3c + 1, local_3c <= param_1));
  if (local_20 != 0) {
    FUN_00850a20(local_38,10);
  }
  _free(local_18);
  if (local_1c < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_30);
}



int FUN_0086fda0(int param_1,int *param_2,int *param_3)

{
  undefined2 *puVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcefa9;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  while( true ) {
    iVar3 = *param_2;
    if ((iVar3 != -4) && ((iVar3 == 0 || (iVar3 != *param_3)))) {
      FUN_00a3fb10(uVar2);
    }
    if (param_2[1] == param_3[1]) {
      ExceptionList = local_c;
      return param_1;
    }
    if (*param_2 != -4) {
      if (*param_2 == 0) {
        FUN_00a3fb10(uVar2);
      }
      iVar3 = *param_2;
      if (*(uint *)(iVar3 + 0x18) < 8) {
        iVar4 = iVar3 + 4;
      }
      else {
        iVar4 = *(int *)(iVar3 + 4);
      }
      if ((uint)(iVar4 + *(int *)(iVar3 + 0x14) * 2) <= (uint)param_2[1]) {
        FUN_00a3fb10(uVar2);
      }
    }
    iVar3 = _iswalpha(*(wint_t *)param_2[1]);
    if (iVar3 == 0) break;
    iVar3 = *param_2;
    puVar1 = (undefined2 *)param_2[1];
    if (iVar3 != -4) {
      if (iVar3 == 0) {
        FUN_00a3fb10(uVar2);
      }
      iVar4 = *param_2;
      if (*(uint *)(iVar4 + 0x18) < 8) {
        iVar5 = iVar4 + 4;
      }
      else {
        iVar5 = *(int *)(iVar4 + 4);
      }
      if ((uint)(iVar5 + *(int *)(iVar4 + 0x14) * 2) <= (uint)param_2[1]) {
        FUN_00a3fb10();
      }
    }
    param_2[1] = param_2[1] + 2;
    if (iVar3 != -4) {
      if (iVar3 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar3 + 0x18) < 8) {
        iVar4 = iVar3 + 4;
      }
      else {
        iVar4 = *(int *)(iVar3 + 4);
      }
      if ((undefined2 *)(iVar4 + *(int *)(iVar3 + 0x14) * 2) <= puVar1) {
        FUN_00a3fb10();
      }
    }
    FID_conflict_append(1,*puVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_0086ff00(undefined4 *param_1,undefined4 param_2,uint param_3,byte param_4)

{
  short *psVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  int *piVar6;
  bool bVar7;
  int local_98;
  undefined4 *local_94;
  undefined4 local_90;
  undefined4 local_8c;
  int local_88;
  short *local_84;
  undefined4 local_80;
  undefined4 local_7c;
  uint local_78;
  int local_74;
  short *local_70;
  undefined local_6c [4];
  undefined local_68 [8];
  undefined local_60 [8];
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9ae8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_98;
  ExceptionList = &local_c;
  local_80 = *param_1;
  local_7c = param_1[1];
  local_94 = param_1;
  FUN_0086fda0(local_34,param_1,param_2,DAT_0323f878 ^ (uint)&stack0xffffff58);
  local_4 = 0;
  if (local_20 == 0) {
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  else {
    local_78 = param_3 & 1;
    local_98 = 0;
    do {
      if (local_78 != 0) {
        if ((param_4 & 1) != 0) {
          uVar2 = FUN_0086e550(local_58,local_98,1);
          local_4._0_1_ = 1;
          iVar3 = FUN_00850470(uVar2);
          local_4 = (uint)local_4._1_3_ << 8;
          _free(local_3c);
          if (7 < local_40) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_54);
          }
          if (iVar3 == 0) break;
        }
        if ((param_4 & 2) != 0) {
          uVar2 = FUN_0086e600(local_58,local_98,1);
          local_4._0_1_ = 2;
          iVar3 = FUN_00850470(uVar2);
          local_4 = (uint)local_4._1_3_ << 8;
          _free(local_3c);
          if (7 < local_40) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_54);
          }
          if (iVar3 == 0) break;
        }
      }
      if ((param_3 & 2) != 0) {
        if ((param_4 & 1) != 0) {
          uVar2 = FUN_0086e550(local_58,local_98,2);
          local_4._0_1_ = 3;
          iVar3 = FUN_00850470(uVar2);
          local_4 = (uint)local_4._1_3_ << 8;
          _free(local_3c);
          if (7 < local_40) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_54);
          }
          if (iVar3 == 0) break;
        }
        if ((param_4 & 2) != 0) {
          FUN_0086e600(local_58,local_98,2);
          local_4 = CONCAT31(local_4._1_3_,4);
          FUN_0081b397(&local_74);
          local_88 = local_74;
          local_84 = local_70;
          FUN_004226c0(0xffffffff);
          psVar1 = local_84;
          iVar3 = local_88;
          if (local_88 != -4) {
            if (local_88 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(iVar3 + 0x18) < 8) {
              iVar4 = iVar3 + 4;
            }
            else {
              iVar4 = *(int *)(iVar3 + 4);
            }
            if ((short *)(iVar4 + *(int *)(iVar3 + 0x14) * 2) <= psVar1) {
              FUN_00a3fb10();
            }
          }
          bVar7 = *psVar1 == 0x2e;
          if (bVar7) {
            puVar5 = (undefined4 *)FUN_0081b397(local_60);
            local_90 = *puVar5;
            local_8c = puVar5[1];
            FUN_004226c0(0xffffffff);
            FUN_0086f8f0(local_68,local_90,local_8c);
          }
          iVar3 = FUN_00850470(local_58);
          if (iVar3 == 0) {
            if (bVar7) {
              piVar6 = (int *)FUN_00847840(local_6c);
              if (*piVar6 != 0x2e) goto LAB_00870210;
              FUN_00847800();
            }
            FUN_0040159c();
            break;
          }
LAB_00870210:
          local_4 = local_4 & 0xffffff00;
          FUN_0040159c();
        }
      }
      FUN_0086ca30(&local_98);
    } while (local_98 < 0xc);
    if (local_98 == 0xc) {
      *local_94 = local_80;
      local_94[1] = local_7c;
    }
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008702c0(undefined4 *param_1,undefined4 param_2,uint param_3,byte param_4)

{
  undefined4 uVar1;
  int iVar2;
  int local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9b48;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_64;
  ExceptionList = &local_c;
  local_60 = *param_1;
  local_5c = param_1[1];
  FUN_0086fda0(local_34,param_1,param_2,DAT_0323f878 ^ (uint)&stack0xffffff8c);
  local_4 = 0;
  if (local_20 == 0) {
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  else {
    local_64 = 0;
    do {
      if ((param_3 & 1) != 0) {
        if ((param_4 & 1) != 0) {
          uVar1 = FUN_0086e730(local_58,local_64,1);
          local_4._0_1_ = 1;
          iVar2 = FUN_00850470(uVar1);
          local_4 = (uint)local_4._1_3_ << 8;
          _free(local_3c);
          if (7 < local_40) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_54);
          }
          if (iVar2 == 0) break;
        }
        if ((param_4 & 2) != 0) {
          uVar1 = FUN_0086e7e0(local_58,local_64,1);
          local_4._0_1_ = 2;
          iVar2 = FUN_00850470(uVar1);
          local_4 = (uint)local_4._1_3_ << 8;
          _free(local_3c);
          if (7 < local_40) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_54);
          }
          if (iVar2 == 0) break;
        }
      }
      if ((param_3 & 2) != 0) {
        if ((param_4 & 1) != 0) {
          uVar1 = FUN_0086e730(local_58,local_64,2);
          local_4._0_1_ = 3;
          iVar2 = FUN_00850470(uVar1);
          local_4 = (uint)local_4._1_3_ << 8;
          _free(local_3c);
          if (7 < local_40) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_54);
          }
          if (iVar2 == 0) break;
        }
        if ((param_4 & 2) != 0) {
          uVar1 = FUN_0086e7e0(local_58,local_64,2);
          local_4._0_1_ = 4;
          iVar2 = FUN_00850470(uVar1);
          local_4 = (uint)local_4._1_3_ << 8;
          _free(local_3c);
          if (7 < local_40) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_54);
          }
          if (iVar2 == 0) break;
        }
      }
      FUN_0086ca70(&local_64);
    } while (local_64 < 7);
    if (local_64 == 7) {
      *param_1 = local_60;
      param_1[1] = local_5c;
    }
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00870560(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,
                 int param_5)

{
  char cVar1;
  uint uVar2;
  undefined4 ***pppuVar3;
  undefined4 *puVar4;
  undefined4 ***pppuVar5;
  undefined *local_44;
  int local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_34 [4];
  undefined4 ***local_30 [4];
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9b78;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_44;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  FUN_00427fd0(*param_2,param_2[1],*param_3,param_3[1]);
  local_18 = (void *)0x0;
  local_4 = 0;
  local_44 = (undefined *)0x0;
  local_40 = 0;
  *param_1 = 0;
  param_1[1] = 0x80000000;
  cVar1 = FUN_008706f0(local_34,param_4,&DAT_032365a0,&local_44);
  if (cVar1 == '\0') {
    if (*(int *)(param_5 + 0x14) == 0) goto LAB_0087069e;
    cVar1 = FUN_008706f0(local_34,param_5,&DAT_032365a0,&local_44);
    if (cVar1 == '\0') goto LAB_0087069e;
  }
  if (local_1c < 8) {
    pppuVar5 = local_30;
LAB_00870633:
    pppuVar3 = local_30[0];
    if (local_1c < 8) {
      pppuVar3 = local_30;
    }
    if (pppuVar5 < pppuVar3) goto LAB_00870656;
    pppuVar3 = local_30[0];
    if (local_1c < 8) {
      pppuVar3 = local_30;
    }
    if ((undefined4 ***)((int)pppuVar3 + local_20 * 2) < pppuVar5) goto LAB_00870656;
  }
  else {
    pppuVar5 = local_30[0];
    if (local_30[0] != (undefined4 ***)0x0) goto LAB_00870633;
LAB_00870656:
    FUN_00a3fb10(uVar2);
  }
  if ((local_44 != (undefined *)0xfffffffc) &&
     ((local_44 == (undefined *)0x0 || (local_44 != local_34)))) {
    FUN_00a3fb10(uVar2);
  }
  local_38 = param_2[1];
  local_3c = *param_2;
  puVar4 = (undefined4 *)FUN_004226c0(local_40 - (int)pppuVar5 >> 1);
  *param_2 = *puVar4;
  param_2[1] = puVar4[1];
LAB_0087069e:
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_008706f0(int *param_1_00,undefined4 param_1,int param_2,int *param_3,int *param_4)

{
  uint uVar1;
  char cVar2;
  ushort uVar3;
  ushort uVar4;
  int *piVar5;
  int iVar6;
  int *piVar7;
  undefined4 *puVar8;
  int ***pppiVar9;
  wint_t *pwVar10;
  undefined4 ****ppppuVar11;
  undefined4 *puVar12;
  undefined4 ****local_454;
  char *local_450;
  char *local_44c;
  undefined auStack_434 [7];
  char local_42d;
  char local_42c;
  char local_42b;
  char local_42a;
  char local_429;
  int ***local_428;
  wint_t *local_424;
  uint local_420;
  char local_41a;
  char local_419;
  int ***local_418;
  wint_t *local_414;
  char local_40d;
  int *local_40c;
  char local_407;
  char local_406;
  char local_405;
  uint local_404;
  int ****local_400;
  uint local_3fc;
  undefined4 ****local_3f8;
  undefined4 ****local_3f4;
  undefined4 local_3f0;
  undefined4 local_3ec;
  undefined4 local_3e8;
  undefined4 local_3e4;
  uint local_3dc;
  uint local_3d8;
  int local_3d4;
  wint_t *local_3d0;
  undefined4 local_3cc;
  undefined4 local_3c8;
  undefined4 local_3c4;
  int *local_3c0;
  uint local_3bc;
  uint local_3b8;
  int local_3b4;
  int *local_3ac;
  undefined2 local_3a4;
  undefined2 local_3a2;
  undefined2 local_3a0;
  undefined2 local_39e;
  ushort local_39c;
  undefined4 ****local_398;
  undefined4 ****local_394;
  undefined local_378 [8];
  undefined local_370 [8];
  undefined local_368 [28];
  undefined4 local_34c [7];
  undefined local_330 [8];
  undefined local_328 [8];
  undefined local_320 [8];
  undefined4 ***local_318 [4];
  undefined4 ***local_308 [4];
  undefined local_2f8 [48];
  undefined4 ***local_2c8 [18];
  undefined4 ***local_280 [9];
  undefined4 ***local_25c [9];
  undefined4 ***local_238 [18];
  undefined4 ***local_1f0 [9];
  undefined local_1cc [36];
  undefined4 ***local_1a8 [9];
  undefined local_184 [108];
  undefined local_118 [36];
  undefined local_f4 [72];
  undefined4 local_ac;
  ushort local_a8;
  ushort local_a6;
  ushort local_a4;
  undefined4 ****local_a0;
  undefined4 ****local_9c;
  int local_98;
  undefined4 local_94;
  undefined4 local_90;
  uint local_84;
  undefined4 local_74;
  uint local_70;
  void *local_6c;
  undefined4 ***local_64;
  undefined2 local_60;
  undefined4 ****local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 ***local_40;
  undefined2 local_3c;
  int local_2c;
  undefined4 local_28;
  undefined4 local_24;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined local_c;
  undefined3 uStack_b;
  
  local_c = 0xff;
  uStack_b = 0xffffff;
  puStack_10 = &LAB_00bc9c88;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_434;
  ExceptionList = &local_14;
  local_40c = param_3;
  local_3cc = param_1;
  local_3b4 = param_2;
  local_3ac = param_4;
  local_3c0 = param_1_00;
  if (*(int *)(param_2 + 0x14) == 0) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_00871d47;
    local_44c = "!format.empty()";
    local_454 = (undefined4 ****)0x390;
  }
  else {
    if (param_4 != (int *)0x0) {
      local_70 = 7;
      local_74 = 0;
      local_84 = local_84 & 0xffff0000;
      local_6c = (void *)0x0;
      local_3d8 = 7;
      local_c = 0;
      uStack_b = 0;
      local_3b8 = 0;
      local_400 = (int ****)0x0;
      local_3fc = 0;
      local_404 = 0;
      local_3bc = 0;
      local_3dc = 0;
      local_3f4 = (undefined4 ****)0x0;
      local_419 = '\0';
      local_405 = '\0';
      local_41a = '\0';
      local_42a = '\0';
      local_429 = '\0';
      local_42d = '\0';
      local_42c = '\0';
      local_42b = '\0';
      local_40d = '\0';
      local_407 = '\0';
      local_406 = '\0';
      local_3f8 = (undefined4 ****)0xc;
      local_44c = (char *)0x8707fd;
      FUN_00847890();
      local_44c = (char *)0x870809;
      FUN_008478e0();
      local_44c = (char *)0x870815;
      FUN_00847890();
      while( true ) {
        pwVar10 = local_3d0;
        local_44c = (char *)0x870834;
        piVar5 = (int *)FUN_008478e0();
        if ((local_3d4 != -4) && ((local_3d4 == 0 || (local_3d4 != *piVar5)))) {
          FUN_00a3fb10();
        }
        if (pwVar10 == (wint_t *)piVar5[1]) break;
        if (local_3d4 != -4) {
          if (local_3d4 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(local_3d4 + 0x18) < 8) {
            iVar6 = local_3d4 + 4;
          }
          else {
            iVar6 = *(int *)(local_3d4 + 4);
          }
          if ((wint_t *)(iVar6 + *(int *)(local_3d4 + 0x14) * 2) <= pwVar10) {
            FUN_00a3fb10();
          }
        }
        if (*pwVar10 == 0x25) {
          ppppuVar11 = (undefined4 ****)0x0;
          while( true ) {
            if (local_3d4 != -4) {
              if (local_3d4 == 0) {
                FUN_00a3fb10();
              }
              if (*(uint *)(local_3d4 + 0x18) < 8) {
                iVar6 = local_3d4 + 4;
              }
              else {
                iVar6 = *(int *)(local_3d4 + 4);
              }
              if ((wint_t *)(iVar6 + *(int *)(local_3d4 + 0x14) * 2) <= pwVar10) {
                FUN_00a3fb10();
              }
            }
            pwVar10 = pwVar10 + 1;
            if (local_3d4 != -4) {
              if (local_3d4 == 0) {
                FUN_00a3fb10();
              }
              if (*(uint *)(local_3d4 + 0x18) < 8) {
                iVar6 = local_3d4 + 4;
              }
              else {
                iVar6 = *(int *)(local_3d4 + 4);
              }
              if ((wint_t *)(iVar6 + *(int *)(local_3d4 + 0x14) * 2) <= pwVar10) {
                FUN_00a3fb10();
              }
            }
            local_44c = (char *)0x870a52;
            iVar6 = _iswdigit(*pwVar10);
            if (iVar6 == 0) break;
            if (local_3d4 != -4) {
              if (local_3d4 == 0) {
                FUN_00a3fb10();
              }
              if (*(uint *)(local_3d4 + 0x18) < 8) {
                iVar6 = local_3d4 + 4;
              }
              else {
                iVar6 = *(int *)(local_3d4 + 4);
              }
              if ((wint_t *)(iVar6 + *(int *)(local_3d4 + 0x14) * 2) <= pwVar10) {
                FUN_00a3fb10();
              }
            }
            ppppuVar11 = (undefined4 ****)((int)ppppuVar11 * 10 + -0x30 + (uint)*pwVar10);
          }
          local_3d0 = pwVar10;
          if (ppppuVar11 == (undefined4 ****)0x0) {
            if (local_3d4 != -4) {
              if (local_3d4 == 0) {
                FUN_00a3fb10();
              }
              if (*(uint *)(local_3d4 + 0x18) < 8) {
                iVar6 = local_3d4 + 4;
              }
              else {
                iVar6 = *(int *)(local_3d4 + 4);
              }
              if ((wint_t *)(iVar6 + *(int *)(local_3d4 + 0x14) * 2) <= pwVar10) {
                FUN_00a3fb10();
              }
            }
            switch(*pwVar10) {
            case 0x59:
              ppppuVar11 = (undefined4 ****)0x4;
              break;
            default:
              ppppuVar11 = (undefined4 ****)0x2;
              break;
            case 0x6a:
            case 0x6c:
              ppppuVar11 = (undefined4 ****)0x3;
              break;
            case 0x77:
              ppppuVar11 = (undefined4 ****)0x1;
            }
          }
          if (local_3d4 != -4) {
            if (local_3d4 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(local_3d4 + 0x18) < 8) {
              iVar6 = local_3d4 + 4;
            }
            else {
              iVar6 = *(int *)(local_3d4 + 4);
            }
            if ((wint_t *)(iVar6 + *(int *)(local_3d4 + 0x14) * 2) <= pwVar10) {
              FUN_00a3fb10();
            }
          }
          switch(*pwVar10) {
          case 0:
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              local_44c = "Assert failure";
              local_450 = "wxDateTime::ParseFormat";
              local_454 = (undefined4 ****)0x573;
              FUN_00840480("..\\..\\src\\common\\datetimefmt.cpp");
            }
          default:
            local_44c = (char *)0x8719cb;
            _free(local_6c);
            if (7 < local_70) {
                    // WARNING: Subroutine does not return
              local_44c = &UNK_008719e9;
              FUN_00a3f6a1();
            }
            goto LAB_00871d47;
          case 0x25:
            local_44c = (char *)0x0;
            local_450 = (char *)local_318;
            local_454 = (undefined4 ****)0x871902;
            FUN_0086f820();
            local_44c = (char *)0x871909;
            piVar5 = (int *)FUN_00847840();
            if (*piVar5 != 0x25) goto LAB_00871951;
            break;
          case 0x41:
          case 0x61:
            local_44c = (char *)0x870b51;
            piVar5 = (int *)FUN_00847840();
            local_450 = (char *)&local_418;
            local_454 = &local_428;
            local_44c = (char *)((*piVar5 == 0x61) + 1);
            local_3d8 = FUN_008702c0();
            if (local_3d8 == 7) goto LAB_00871951;
            local_419 = '\x01';
            break;
          case 0x42:
          case 0x62:
            local_44c = (char *)0x870b9c;
            piVar5 = (int *)FUN_00847840();
            local_450 = (char *)&local_418;
            local_454 = &local_428;
            local_44c = (char *)((*piVar5 == 0x62) + 1);
            local_3f8 = (undefined4 ****)FUN_0086ff00();
            if (local_3f8 == (undefined4 ****)0xc) goto LAB_00871951;
            local_42a = '\x01';
            break;
          case 0x48:
            local_44c = (char *)&local_418;
            local_450 = (char *)&local_428;
            local_454 = ppppuVar11;
            cVar2 = FUN_0086fbd0();
            if ((cVar2 == '\0') || (0x17 < local_420)) goto LAB_00871951;
            local_404 = local_420 & 0xffff;
            local_42d = '\x01';
            break;
          case 0x49:
            local_44c = (char *)&local_418;
            local_450 = (char *)&local_428;
            local_454 = ppppuVar11;
            cVar2 = FUN_0086fbd0();
            if (((cVar2 == '\0') || (local_420 == 0)) || (0xc < local_420)) goto LAB_00871951;
            local_404 = local_420 % 0xc;
            local_42d = '\x01';
            local_407 = '\x01';
            break;
          case 0x4d:
            local_44c = (char *)&local_418;
            local_450 = (char *)&local_428;
            local_454 = ppppuVar11;
            cVar2 = FUN_0086fbd0();
            if ((cVar2 == '\0') || (0x3b < local_420)) goto LAB_00871951;
            local_3fc = local_420 & 0xffff;
            local_42c = '\x01';
            break;
          case 0x52:
            local_44c = (char *)0x871297;
            FUN_004325b6();
            local_c = 0xb;
            local_44c = (char *)0x8712b0;
            FUN_004325b6();
            local_44c = (char *)local_2c8;
            local_450 = (char *)&local_418;
            local_454 = &local_428;
            local_c = 0xc;
            FUN_00870560(local_378);
            FUN_0040159c();
            local_c = 0;
            FUN_0040159c();
            cVar2 = FUN_0085c770();
            if (cVar2 == '\0') goto LAB_00871951;
            local_42c = '\x01';
            local_42d = '\x01';
            local_44c = (char *)0x87132e;
            FUN_0086c940();
            local_44c = (char *)&local_ac;
            local_450 = (char *)0x87134a;
            FUN_0086d460();
            local_404 = (uint)local_a6;
            local_3fc = (uint)local_a8;
            break;
          case 0x53:
            local_44c = (char *)&local_418;
            local_450 = (char *)&local_428;
            local_454 = ppppuVar11;
            cVar2 = FUN_0086fbd0();
            if ((cVar2 == '\0') || (0x3d < local_420)) goto LAB_00871951;
            local_400 = (int ****)(local_420 & 0xffff);
            local_42b = '\x01';
            break;
          case 0x54:
            local_44c = (char *)0x8713b8;
            FUN_004325b6();
            local_c = 0xd;
            local_44c = (char *)0x8713d1;
            FUN_004325b6();
            local_44c = (char *)local_25c;
            local_450 = (char *)&local_418;
            local_454 = &local_428;
            local_c = 0xe;
            FUN_00870560(local_368);
            FUN_0040159c();
            local_c = 0;
            FUN_0040159c();
            cVar2 = FUN_0085c770();
            if (cVar2 == '\0') goto LAB_00871951;
            local_42b = '\x01';
            local_42c = '\x01';
            local_42d = '\x01';
            local_44c = (char *)0x871454;
            FUN_0086c940();
            local_44c = (char *)&local_ac;
            local_450 = (char *)0x871470;
            FUN_0086d460();
            local_404 = (uint)local_a6;
            local_3fc = (uint)local_a8;
            local_400 = (int ****)(uint)local_ac._2_2_;
            break;
          case 0x58:
            local_450 = (char *)&local_64;
            local_44c = (char *)0x5;
            local_454 = (undefined4 ****)0x871740;
            FUN_00848ad0();
            local_28 = 7;
            local_2c = 0;
            local_3c = 0;
            local_24 = 0;
            local_c = 0x16;
            if (local_50 == (undefined4 ****)0x0) {
              local_44c = (char *)0x87178a;
              FUN_0083fc60();
              local_44c = (char *)0x87179b;
              FUN_0083fc60();
            }
            local_44c = (char *)&local_64;
            local_450 = (char *)&local_418;
            local_454 = &local_428;
            FUN_00870560(local_370);
            cVar2 = FUN_0085c770();
            if (cVar2 != '\0') {
              local_42b = '\x01';
              local_42c = '\x01';
              local_42d = '\x01';
              local_44c = (char *)0x8717f5;
              FUN_0086c940();
              local_44c = (char *)&local_ac;
              local_450 = (char *)0x871811;
              FUN_0086d460();
              local_3fc = (uint)local_a8;
              local_404 = (uint)local_a6;
              local_400 = (int ****)(uint)local_ac._2_2_;
              goto LAB_00871145;
            }
LAB_00871969:
            FUN_0040159c();
            FUN_0040159c();
            FUN_0040159c();
            goto LAB_00871d47;
          case 0x59:
            local_44c = (char *)&local_418;
            local_450 = (char *)&local_428;
            local_454 = ppppuVar11;
            cVar2 = FUN_0086fbd0();
            if (cVar2 == '\0') goto LAB_00871951;
            local_3f4 = (undefined4 ****)(local_420 & 0xffff);
            local_429 = '\x01';
            break;
          case 0x5a:
            local_44c = (char *)&local_428;
            local_450 = (char *)local_280;
            local_454 = (undefined4 ****)0x8718d6;
            FUN_0086fda0();
            FUN_0040159c();
            break;
          case 99:
            local_450 = (char *)&local_40;
            local_44c = (char *)0x4;
            local_3f0 = 0;
            local_3ec = 0x80000000;
            local_454 = (undefined4 ****)0x870bf7;
            FUN_00848ad0();
            local_c = 1;
            if (local_2c != 0) {
              local_44c = (char *)0x870c1f;
              FUN_004325b6();
              local_44c = (char *)&local_40;
              local_450 = (char *)&local_418;
              local_454 = &local_428;
              local_c = 2;
              puVar8 = (undefined4 *)FUN_00870560(local_2f8);
              local_3f0 = *puVar8;
              local_3ec = puVar8[1];
              local_c = 1;
              FUN_0040159c();
            }
            cVar2 = FUN_0085c770();
            if (cVar2 == '\0') {
              local_44c = (char *)0x870c96;
              FUN_004325b6();
              local_c = 3;
              local_44c = (char *)0x870caf;
              FUN_004325b6();
              local_44c = (char *)local_238;
              local_450 = (char *)&local_418;
              local_454 = &local_428;
              local_c = 4;
              puVar8 = (undefined4 *)FUN_00870560(local_320);
              local_3f0 = *puVar8;
              local_3ec = puVar8[1];
              FUN_0040159c();
              local_c = 1;
              FUN_0040159c();
            }
            cVar2 = FUN_0085c770();
            if (cVar2 == '\0') {
              local_44c = (char *)0x870d30;
              FUN_004325b6();
              local_c = 5;
              local_44c = (char *)0x870d49;
              FUN_004325b6();
              local_44c = (char *)local_1f0;
              local_450 = (char *)&local_418;
              local_454 = &local_428;
              local_c = 6;
              puVar8 = (undefined4 *)FUN_00870560(local_330);
              local_3f0 = *puVar8;
              local_3ec = puVar8[1];
              FUN_0040159c();
              local_c = 1;
              FUN_0040159c();
            }
            cVar2 = FUN_0085c770();
            if (cVar2 == '\0') {
              FUN_0040159c();
              goto LAB_00871951;
            }
            local_44c = (char *)0x870dc7;
            FUN_0086c940();
            local_44c = (char *)&local_ac;
            local_450 = (char *)0x870de0;
            FUN_0086d460();
            local_3fc = (uint)local_a8;
            local_400 = (int ****)(uint)local_ac._2_2_;
            local_404 = (uint)local_a6;
            local_3dc = (uint)local_a4;
            local_3f8 = local_a0;
            local_3f4 = local_9c;
            local_42b = '\x01';
            local_42c = '\x01';
            local_42d = '\x01';
            local_429 = '\x01';
            local_42a = '\x01';
            local_41a = '\x01';
            local_c = 0;
            FUN_0040159c();
            break;
          case 100:
          case 0x65:
            local_44c = (char *)&local_418;
            local_450 = (char *)&local_428;
            local_454 = ppppuVar11;
            cVar2 = FUN_0086fbd0();
            if ((cVar2 == '\0') || (0x1e < local_420 - 1)) goto LAB_00871951;
            local_3dc = local_420 & 0xffff;
            local_41a = '\x01';
            break;
          case 0x6a:
            local_44c = (char *)&local_418;
            local_450 = (char *)&local_428;
            local_454 = ppppuVar11;
            cVar2 = FUN_0086fbd0();
            if (((cVar2 == '\0') || (local_420 == 0)) || (0x16e < local_420)) goto LAB_00871951;
            local_3bc = local_420 & 0xffff;
            local_405 = '\x01';
            break;
          case 0x6c:
            local_44c = (char *)&local_418;
            local_450 = (char *)&local_428;
            local_454 = ppppuVar11;
            cVar2 = FUN_0086fbd0();
            if (cVar2 == '\0') goto LAB_00871951;
            local_3b8 = local_420 & 0xffff;
            local_40d = '\x01';
            break;
          case 0x6d:
            local_44c = (char *)&local_418;
            local_450 = (char *)&local_428;
            local_454 = ppppuVar11;
            cVar2 = FUN_0086fbd0();
            if (((cVar2 == '\0') || (local_420 == 0)) || (0xc < local_420)) goto LAB_00871951;
            local_3f8 = (undefined4 ****)(local_420 - 1);
            local_42a = '\x01';
            break;
          case 0x70:
            local_4c = 7;
            local_50 = (undefined4 ****)0x0;
            local_60 = 0;
            local_48 = 0;
            local_94 = 7;
            local_98 = 0;
            local_a8 = 0;
            local_90 = 0;
            local_44c = (char *)&local_64;
            local_c = 8;
            local_450 = (char *)0x87109f;
            FUN_0086e920();
            if ((local_50 == (undefined4 ****)0x0) || (local_98 == 0)) goto LAB_00871969;
            local_44c = (char *)0x8710cd;
            FUN_00847890();
            local_44c = (char *)0x8710d7;
            ppppuVar11 = (undefined4 ****)FUN_0086f7f0();
            local_44c = (char *)local_98;
            local_454 = (undefined4 ****)0x8710f6;
            local_450 = (char *)ppppuVar11;
            iVar6 = FUN_00850f70();
            if (iVar6 == 0) {
              local_406 = '\x01';
            }
            else {
              local_44c = (char *)local_50;
              local_454 = (undefined4 ****)0x871125;
              local_450 = (char *)ppppuVar11;
              iVar6 = FUN_00850f70();
              if (iVar6 != 0) goto LAB_00871969;
            }
            local_44c = (char *)0x87113e;
            FUN_0086f870();
            goto LAB_00871145;
          case 0x72:
            local_3c8 = 0;
            local_3c4 = 0x80000000;
            local_44c = (char *)0x87118a;
            FUN_004325b6();
            local_44c = (char *)local_418;
            local_400 = (int ****)&local_454;
            local_454 = (undefined4 ****)local_428;
            local_c = 9;
            local_450 = (char *)local_424;
            local_454 = (undefined4 ****)FUN_00852250();
            local_44c = (char *)&DAT_032365a0;
            local_450 = (char *)local_1a8;
            local_c = 10;
            cVar2 = FUN_008706f0();
            FUN_0040159c();
            local_c = 0;
            FUN_0040159c();
            if (cVar2 == '\0') goto LAB_00871951;
            local_42b = '\x01';
            local_42c = '\x01';
            local_42d = '\x01';
            local_44c = (char *)0x87123b;
            FUN_0086c940();
            local_44c = (char *)&local_ac;
            local_450 = (char *)0x871257;
            FUN_0086d460();
            local_404 = (uint)local_a6;
            local_3fc = (uint)local_a8;
            local_400 = (int ****)(uint)local_ac._2_2_;
            pwVar10 = local_3d0;
            break;
          case 0x77:
            local_44c = (char *)&local_418;
            local_450 = (char *)&local_428;
            local_454 = ppppuVar11;
            cVar2 = FUN_0086fbd0();
            if ((cVar2 == '\0') || (6 < (int)local_3d8)) goto LAB_00871951;
            local_419 = '\x01';
            local_3d8 = local_420;
            break;
          case 0x78:
            local_450 = (char *)&local_64;
            local_44c = (char *)0x2;
            local_454 = (undefined4 ****)0x8714e7;
            FUN_00848ad0();
            local_454 = (undefined4 ****)0x3;
            local_c = 0xf;
            FUN_00848ad0(&local_40,3);
            local_c = 0x10;
            if (local_50 == (undefined4 ****)0x0) {
              FUN_0086ec00();
              local_44c = (char *)0x871520;
              cVar2 = FUN_0086ee80();
              if ((cVar2 == '\0') && (iVar6 = FUN_0086ec00(), iVar6 != 6)) {
                local_44c = (char *)0x871542;
                FUN_00432199();
              }
              else {
                local_44c = (char *)0x87155a;
                FUN_00432199();
              }
              local_44c = (char *)0x87156b;
              FUN_00432199();
            }
            local_44c = (char *)&local_64;
            local_450 = (char *)&local_418;
            local_454 = &local_428;
            FUN_00870560(&local_3e8);
            cVar2 = FUN_0085c770();
            if (cVar2 == '\0') {
              local_44c = (char *)0x8715b4;
              FUN_0043c211();
              local_c = 0x11;
              local_44c = (char *)0x8715cd;
              FUN_0043c211();
              local_44c = local_184;
              local_450 = local_1cc;
              local_c = 0x12;
              local_454 = (undefined4 ****)0x8715f3;
              FUN_00852a70();
              FUN_0040159c();
              local_c = 0x10;
              FUN_0040159c();
              local_44c = (char *)0x871624;
              FUN_0043c211();
              local_c = 0x13;
              local_44c = (char *)0x87163d;
              FUN_0043c211();
              local_44c = local_118;
              local_450 = local_f4;
              local_c = 0x14;
              local_454 = (undefined4 ****)0x871663;
              FUN_00852a70();
              FUN_0040159c();
              local_c = 0x10;
              FUN_0040159c();
              local_44c = (char *)&local_64;
              local_450 = (char *)&local_418;
              local_454 = &local_428;
              puVar8 = (undefined4 *)FUN_00870560(local_328);
              local_3e8 = *puVar8;
              local_3e4 = puVar8[1];
              cVar2 = FUN_0085c770();
              if (cVar2 == '\0') goto LAB_00871969;
            }
            local_44c = (char *)0x8716d9;
            FUN_0086c940();
            local_44c = (char *)&local_ac;
            local_450 = (char *)0x8716f2;
            FUN_0086d460();
            local_3f8 = local_a0;
            local_3dc = (uint)local_a4;
            local_3f4 = local_9c;
            local_429 = '\x01';
            local_42a = '\x01';
            local_41a = '\x01';
LAB_00871145:
            FUN_0040159c();
            local_c = 0;
            FUN_0040159c();
            break;
          case 0x79:
            local_44c = (char *)&local_418;
            local_450 = (char *)&local_428;
            local_454 = ppppuVar11;
            cVar2 = FUN_0086fbd0();
            if ((cVar2 == '\0') || (99 < local_420)) goto LAB_00871951;
            local_3f4 = (undefined4 ****)
                        ((-(uint)(0x1e < local_420) & 0xffffff9c) + 2000 + (local_420 & 0xffff));
            local_429 = '\x01';
          }
        }
        else {
          if (local_3d4 != -4) {
            if (local_3d4 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(local_3d4 + 0x18) < 8) {
              iVar6 = local_3d4 + 4;
            }
            else {
              iVar6 = *(int *)(local_3d4 + 4);
            }
            if ((wint_t *)(iVar6 + *(int *)(local_3d4 + 0x14) * 2) <= pwVar10) {
              FUN_00a3fb10();
            }
          }
          local_44c = (char *)0x8708bc;
          iVar6 = _iswspace(*pwVar10);
          if (iVar6 != 0) {
            while( true ) {
              if ((local_428 != (int ***)0xfffffffc) &&
                 ((local_428 == (int ***)0x0 || (local_428 != local_418)))) {
                FUN_00a3fb10();
              }
              if (local_424 == local_414) break;
              if (local_428 != (int ***)0xfffffffc) {
                if (local_428 == (int ***)0x0) {
                  FUN_00a3fb10();
                }
                if (local_428[6] < (int **)0x8) {
                  pppiVar9 = local_428 + 1;
                }
                else {
                  pppiVar9 = (int ***)local_428[1];
                }
                if ((wint_t *)((int)pppiVar9 + (int)local_428[5] * 2) <= local_424) {
                  FUN_00a3fb10();
                }
              }
              local_44c = (char *)0x870934;
              iVar6 = _iswspace(*local_424);
              if (iVar6 == 0) break;
              if (local_428 != (int ***)0xfffffffc) {
                if (local_428 == (int ***)0x0) {
                  FUN_00a3fb10();
                }
                if (local_428[6] < (int **)0x8) {
                  pppiVar9 = local_428 + 1;
                }
                else {
                  pppiVar9 = (int ***)local_428[1];
                }
                if ((wint_t *)((int)pppiVar9 + (int)local_428[5] * 2) <= local_424) {
                  FUN_00a3fb10();
                }
              }
              local_424 = local_424 + 1;
            }
            goto LAB_0087190e;
          }
          if ((local_428 != (int ***)0xfffffffc) &&
             ((local_428 == (int ***)0x0 || (local_428 != local_418)))) {
            FUN_00a3fb10();
          }
          if (local_424 == local_414) goto LAB_00871b30;
          local_44c = (char *)0x8709b5;
          piVar5 = (int *)FUN_00847840();
          local_44c = (char *)0x0;
          local_450 = (char *)local_308;
          local_454 = (undefined4 ****)0x8709d2;
          FUN_0086f820();
          local_44c = (char *)0x8709d9;
          piVar7 = (int *)FUN_00847840();
          if (*piVar7 != *piVar5) goto LAB_00871b30;
        }
LAB_0087190e:
        if (local_3d4 != -4) {
          if (local_3d4 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(local_3d4 + 0x18) < 8) {
            iVar6 = local_3d4 + 4;
          }
          else {
            iVar6 = *(int *)(local_3d4 + 4);
          }
          if ((wint_t *)(iVar6 + *(int *)(local_3d4 + 0x14) * 2) <= pwVar10) {
            FUN_00a3fb10();
          }
        }
        local_3d0 = pwVar10 + 1;
      }
      FUN_0086cc10();
      if ((*local_40c == DAT_032365a0) && (local_40c[1] == DAT_032365a4)) {
        if ((*local_3c0 == DAT_032365a0) && (local_3c0[1] == DAT_032365a4)) {
          local_44c = (char *)0x871a76;
          FUN_0086c940();
          local_44c = (char *)0x871a83;
          FUN_0086cc50();
          local_3e8 = 0;
          local_3e4 = 0;
          local_44c = (char *)0x871a98;
          FUN_0086cca0();
          FUN_0086e3a0();
        }
        else {
          local_44c = (char *)0x871a54;
          FUN_0086c940();
        }
      }
      else {
        local_44c = (char *)0x871a24;
        FUN_0086c940();
      }
      local_44c = (char *)&local_ac;
      local_450 = (char *)0x871ab7;
      puVar8 = (undefined4 *)FUN_0086d460();
      puVar12 = local_34c;
      for (iVar6 = 7; iVar6 != 0; iVar6 = iVar6 + -1) {
        *puVar12 = *puVar8;
        puVar8 = puVar8 + 1;
        puVar12 = puVar12 + 1;
      }
      puVar8 = local_34c;
      puVar12 = (undefined4 *)&local_3a4;
      for (iVar6 = 7; iVar6 != 0; iVar6 = iVar6 + -1) {
        *puVar12 = *puVar8;
        puVar8 = puVar8 + 1;
        puVar12 = puVar12 + 1;
      }
      if (local_42a != '\0') {
        local_398 = local_3f8;
      }
      if (local_429 != '\0') {
        local_394 = local_3f4;
      }
      local_44c = (char *)local_394;
      if (local_41a != '\0') {
        local_450 = (char *)local_398;
        local_454 = (undefined4 ****)0x871b20;
        uVar3 = FUN_0086deb0();
        uVar4 = (ushort)local_3dc;
        if ((ushort)local_3dc <= uVar3) {
LAB_00871bfc:
          local_39c = uVar4;
          if (local_42d != '\0') {
            if ((local_407 != '\0') && (local_406 != '\0')) {
              local_404 = local_404 + 0xc;
            }
            local_39e = (undefined2)local_404;
          }
          if (local_42c != '\0') {
            local_3a0 = (undefined2)local_3fc;
          }
          if (local_42b != '\0') {
            local_3a2 = local_400._0_2_;
          }
          if (local_40d != '\0') {
            local_3a4 = (undefined2)local_3b8;
          }
          local_44c = (char *)0x871c78;
          FUN_0086e2f0();
          if (local_419 != '\0') {
            local_44c = (char *)0x871c8a;
            FUN_0086c940();
            local_44c = (char *)&local_ac;
            local_450 = (char *)0x871c9e;
            iVar6 = FUN_0086d460();
            if (*(short *)(iVar6 + 0x18) == 7) {
              FUN_0086c890();
            }
            if (*(ushort *)(iVar6 + 0x18) != local_3d8) goto LAB_00871951;
          }
          *local_3ac = (int)local_428;
          local_3ac[1] = (int)local_424;
          local_44c = (char *)0x871cdd;
          _free(local_6c);
          if (7 < local_70) {
                    // WARNING: Subroutine does not return
            local_44c = &UNK_00871cf7;
            FUN_00a3f6a1();
          }
          goto LAB_00871d47;
        }
LAB_00871b30:
        local_44c = (char *)0x871b3d;
        _free(local_6c);
        if (7 < local_70) {
                    // WARNING: Subroutine does not return
          local_44c = &UNK_00871b5b;
          FUN_00a3f6a1();
        }
        goto LAB_00871d47;
      }
      uVar4 = local_39c;
      if (local_405 == '\0') goto LAB_00871bfc;
      local_450 = (char *)0x871b77;
      uVar4 = FUN_0086dbc0();
      uVar1 = local_3bc;
      if ((ushort)local_3bc <= uVar4) {
        local_44c = (char *)0x871b94;
        FUN_0086c940();
        local_44c = (char *)0x0;
        local_450 = (char *)0x0;
        local_454 = (undefined4 ****)0x0;
        local_3c8 = 0;
        local_3c4 = 0;
        FUN_0086df90(1,0,local_394);
        local_44c = (char *)&local_ac;
        local_450 = (char *)uVar1;
        local_454 = (undefined4 ****)0x871bd7;
        FUN_0086e190();
        local_450 = (char *)0x871bde;
        FUN_0086d460();
        local_398 = local_a0;
        uVar4 = local_a4;
        goto LAB_00871bfc;
      }
LAB_00871951:
      FUN_0040159c();
      goto LAB_00871d47;
    }
    if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_00871d47;
    local_44c = "endParse";
    local_454 = (undefined4 ****)0x391;
  }
  local_450 = "wxDateTime::ParseFormat";
  FUN_008402e0("..\\..\\src\\common\\datetimefmt.cpp");
LAB_00871d47:
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00871e80(uint *param_1_00,undefined4 param_1,uint *param_2)

{
  short sVar1;
  wint_t *pwVar2;
  char cVar3;
  ushort uVar4;
  int iVar5;
  undefined4 uVar6;
  uint *puVar7;
  uint uVar8;
  uint uVar9;
  char *pcVar10;
  int iVar11;
  short *psVar12;
  wint_t **ppwVar13;
  wint_t **ppwVar14;
  short *psVar15;
  char cVar16;
  uint uVar17;
  wint_t *pwVar18;
  undefined auStack_114 [2];
  char local_112;
  char local_111;
  char local_110;
  char local_10f;
  char local_10e;
  char local_10d;
  uint local_10c;
  int local_108;
  uint local_104;
  uint local_100;
  wint_t *local_fc;
  wint_t *local_f4;
  uint local_f0;
  uint local_ec;
  uint local_e8;
  uint local_e4;
  uint local_e0;
  wint_t *local_dc;
  uint *local_d8;
  undefined4 local_d4;
  uint *local_d0;
  undefined local_cc [4];
  uint local_c8;
  undefined4 local_b8;
  uint local_b4;
  void *local_b0;
  uint local_a8;
  wint_t *local_a4;
  undefined local_a0 [4];
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined4 local_7c;
  wint_t *local_78;
  undefined4 local_74;
  int local_70;
  uint local_64;
  void *local_60;
  undefined local_58 [36];
  undefined local_34 [4];
  uint local_30;
  uint local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9d04;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_114;
  ExceptionList = &local_c;
  local_d4 = param_1;
  local_d0 = param_2;
  local_d8 = param_1_00;
  if (param_2 == (uint *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\datetimefmt.cpp",0x60e,"wxDateTime::ParseDate",
                   &DAT_00d2b37c,"end iterator pointer must be specified",
                   DAT_0323f878 ^ (uint)&stack0xfffffedc);
    }
    goto LAB_00872a06;
  }
  FUN_00847890(&local_a8);
  FUN_008478e0(&local_e0);
  uVar17 = local_a8;
  pwVar2 = local_dc;
  uVar8 = local_e0;
  local_f4 = local_a4;
  pwVar18 = local_a4;
  while( true ) {
    if ((uVar17 != 0xfffffffc) && ((uVar17 == 0 || (uVar17 != uVar8)))) {
      FUN_00a3fb10();
    }
    if (pwVar18 == pwVar2) break;
    if (uVar17 != 0xfffffffc) {
      if (uVar17 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(uVar17 + 0x18) < 8) {
        iVar5 = uVar17 + 4;
      }
      else {
        iVar5 = *(int *)(uVar17 + 4);
      }
      if ((wint_t *)(iVar5 + *(int *)(uVar17 + 0x14) * 2) <= pwVar18) {
        FUN_00a3fb10();
      }
    }
    iVar5 = _iswspace(*pwVar18);
    if (iVar5 == 0) break;
    if (uVar17 != 0xfffffffc) {
      if (uVar17 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(uVar17 + 0x18) < 8) {
        iVar5 = uVar17 + 4;
      }
      else {
        iVar5 = *(int *)(uVar17 + 4);
      }
      if ((wint_t *)(iVar5 + *(int *)(uVar17 + 0x14) * 2) <= pwVar18) {
        FUN_00a3fb10();
      }
    }
    pwVar18 = pwVar18 + 1;
  }
  local_f4 = pwVar18;
  if ((uVar8 != 0xfffffffc) && ((uVar8 == 0 || (uVar8 != uVar17)))) {
    FUN_00a3fb10();
  }
  local_f0 = (int)pwVar2 - (int)pwVar18 >> 1;
  local_10c = 0;
  do {
    uVar8 = local_10c;
    psVar15 = (short *)PTR_DAT_03236318;
    if (PTR_DAT_03236318 == (undefined *)0x0) {
      psVar15 = &DAT_00fae9c8;
    }
    local_c8 = local_c8 & 0xffff0000;
    local_b4 = 7;
    local_b8 = 0;
    psVar12 = psVar15;
    do {
      sVar1 = *psVar12;
      psVar12 = psVar12 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(psVar15,(int)psVar12 - (int)(psVar15 + 1) >> 1);
    local_b0 = (void *)0x0;
    local_4 = 0;
    FUN_0043c211((&PTR_s_today_032365a8)[uVar8 * 2]);
    local_4 = CONCAT31(local_4._1_3_,1);
    iVar5 = FUN_0084a340();
    if (iVar5 == 0) {
      uVar6 = FUN_0084d360(local_a0);
    }
    else {
      uVar6 = FUN_0084f210(local_a0,local_cc);
    }
    local_30 = local_30 & 0xffff0000;
    local_1c = 7;
    local_20 = 0;
    FID_conflict_assign(uVar6,0,0xffffffff);
    local_18 = (void *)0x0;
    _free(local_84);
    if (7 < local_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_9c);
    }
    local_88 = 7;
    local_8c = 0;
    local_9c = local_9c & 0xffff0000;
    local_4._0_1_ = 4;
    _free(local_b0);
    pwVar2 = local_f4;
    if (7 < local_b4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_c8);
    }
    local_b4 = 7;
    local_b8 = 0;
    local_c8 = local_c8 & 0xffff0000;
    if (local_f0 < local_20) {
      local_4 = 0xffffffff;
      _free(local_18);
    }
    else {
      local_100 = uVar17;
      local_fc = local_f4;
      puVar7 = (uint *)FUN_004226c0(local_20);
      uVar8 = puVar7[1];
      uVar9 = *puVar7;
      FUN_00427fd0(uVar17,pwVar2,uVar9,uVar8);
      local_60 = (void *)0x0;
      local_4._0_1_ = 5;
      iVar5 = FUN_00850470(local_34);
      local_4 = CONCAT31(local_4._1_3_,4);
      _free(local_60);
      if (7 < local_64) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_78);
      }
      if (iVar5 == 0) {
        iVar5 = *(int *)(&DAT_032365ac + local_10c * 8);
        uVar6 = FUN_0086cc50(&local_7c);
        local_100 = 0;
        local_fc = (wint_t *)0x0;
        FUN_0086cca0(uVar6);
        FUN_0086e3a0();
        *local_d8 = local_100;
        local_d8[1] = (uint)local_fc;
        if (iVar5 != 0) {
          local_7c = 0;
          local_78 = (wint_t *)0x0;
          local_74 = 0;
          local_70 = iVar5;
          FUN_0086eea0(&local_7c);
        }
        *local_d0 = uVar9;
        local_d0[1] = uVar8;
        _free(local_18);
        if (7 < local_1c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_30);
        }
        goto LAB_00872a06;
      }
      local_4 = 0xffffffff;
      _free(local_18);
    }
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
    local_10c = local_10c + 1;
  } while (local_10c < 3);
  cVar16 = '\0';
  local_112 = '\0';
  local_10f = '\0';
  local_110 = '\0';
  local_111 = '\0';
  local_10e = '\0';
  local_e4 = 7;
  local_104 = 0;
  local_108 = 0xc;
  local_10c = 0;
  iVar5 = 0xc;
  while( true ) {
    pwVar2 = local_f4;
    if ((uVar17 != 0xfffffffc) && ((uVar17 == 0 || (uVar17 != local_e0)))) {
      FUN_00a3fb10();
    }
    if (pwVar2 == local_dc) break;
    if (uVar17 != 0xfffffffc) {
      if (uVar17 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(uVar17 + 0x18) < 8) {
        iVar11 = uVar17 + 4;
      }
      else {
        iVar11 = *(int *)(uVar17 + 4);
      }
      if ((wint_t *)(iVar11 + *(int *)(uVar17 + 0x14) * 2) <= pwVar2) {
        FUN_00a3fb10();
      }
    }
    uVar4 = *pwVar2;
    if (uVar4 < 0x80) {
      local_10d = (char)uVar4;
LAB_008723fe:
      pcVar10 = _strchr(".,/-\t\r\n ",(int)local_10d);
      if (pcVar10 == (char *)0x0) goto LAB_00872389;
      if (uVar17 != 0xfffffffc) {
        if (uVar17 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(uVar17 + 0x18) < 8) {
          iVar11 = uVar17 + 4;
        }
        else {
          iVar11 = *(int *)(uVar17 + 4);
        }
        if ((wint_t *)(iVar11 + *(int *)(uVar17 + 0x14) * 2) <= pwVar2) {
          FUN_00a3fb10();
        }
      }
      local_f4 = pwVar2 + 1;
    }
    else {
      cVar3 = FUN_00884b40(uVar4,&local_10d);
      if (cVar3 != '\0') goto LAB_008723fe;
LAB_00872389:
      local_100 = uVar17;
      local_fc = pwVar2;
      cVar3 = FUN_0086fbd0(10,&local_100,&local_e0,&local_f0);
      if (cVar3 == '\0') {
        iVar11 = FUN_0086ff00(&local_100,&local_e0,3,3);
        if (iVar11 == 0xc) {
          uVar8 = FUN_008702c0(&local_100,&local_e0,3,3);
          if (uVar8 == 7) {
            iVar5 = (int)pwVar2 - (int)local_a4;
            uVar8 = 0;
            local_ec = 0;
            do {
              psVar15 = (short *)PTR_DAT_03236318;
              if (PTR_DAT_03236318 == (undefined *)0x0) {
                psVar15 = &DAT_00fae9c8;
              }
              local_b4 = 7;
              local_b8 = 0;
              local_c8 = local_c8 & 0xffff0000;
              psVar12 = psVar15;
              do {
                sVar1 = *psVar12;
                psVar12 = psVar12 + 1;
              } while (sVar1 != 0);
              FID_conflict_assign(psVar15,(int)psVar12 - (int)(psVar15 + 1) >> 1);
              local_b0 = (void *)0x0;
              local_4 = 6;
              FUN_0043c211((&PTR_s_first_00d2b380)[uVar8]);
              local_4 = CONCAT31(local_4._1_3_,7);
              iVar11 = FUN_0084a340();
              if (iVar11 == 0) {
                uVar6 = FUN_0084d360(local_a0);
              }
              else {
                uVar6 = FUN_0084f210(local_a0,local_cc);
              }
              local_30 = local_30 & 0xffff0000;
              local_1c = 7;
              local_20 = 0;
              FID_conflict_assign(uVar6,0,0xffffffff);
              local_18 = (void *)0x0;
              _free(local_84);
              if (7 < local_88) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_9c);
              }
              local_88 = 7;
              local_8c = 0;
              local_9c = local_9c & 0xffff0000;
              local_4 = CONCAT31(local_4._1_3_,10);
              _free(local_b0);
              uVar9 = local_20;
              if (7 < local_b4) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_c8);
              }
              local_b4 = 7;
              local_b8 = 0;
              local_c8 = local_c8 & 0xffff0000;
              if ((uVar17 != 0xfffffffc) && ((uVar17 == 0 || (uVar17 != local_a8)))) {
                FUN_00a3fb10();
              }
              iVar11 = FUN_00850f70(iVar5 >> 1,uVar9,local_34);
              pwVar2 = local_f4;
              if (iVar11 == 0) {
                local_78 = local_f4;
                local_ec = uVar8;
                if (uVar17 != 0xfffffffc) {
                  if (uVar17 == 0) {
                    FUN_00a3fb10();
                  }
                  ppwVar13 = (wint_t **)(uVar17 + 4);
                  ppwVar14 = ppwVar13;
                  if (7 < *(uint *)(uVar17 + 0x18)) {
                    ppwVar14 = (wint_t **)*ppwVar13;
                  }
                  if (pwVar2 + uVar9 <= (wint_t *)((int)ppwVar14 + *(int *)(uVar17 + 0x14) * 2)) {
                    if (7 < *(uint *)(uVar17 + 0x18)) {
                      ppwVar13 = (wint_t **)*ppwVar13;
                    }
                    if (ppwVar13 <= pwVar2 + uVar9) goto LAB_00872793;
                  }
                  FUN_00a3fb10();
                }
LAB_00872793:
                uVar8 = local_ec;
                local_f4 = local_f4 + uVar9;
                local_4 = 0xffffffff;
                _free(local_18);
                uVar9 = local_ec;
                if (7 < local_1c) {
                    // WARNING: Subroutine does not return
                  FUN_00a3f6a1(local_30);
                }
                break;
              }
              local_4 = 0xffffffff;
              _free(local_18);
              if (7 < local_1c) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1(local_30);
              }
              uVar8 = uVar8 + 1;
              uVar9 = uVar8;
            } while (uVar8 < 0x14);
            local_ec = uVar9;
            if (uVar8 == 0x14) break;
            if (local_112 != '\0') goto LAB_0087281d;
            iVar5 = local_108;
            cVar16 = local_110;
            uVar8 = uVar8 + 1;
LAB_008727e7:
            local_104 = uVar8 & 0xffff;
            local_112 = '\x01';
            local_f4 = local_fc;
            uVar17 = local_100;
          }
          else {
            if (local_10f != '\0') break;
            local_10f = '\x01';
            local_f4 = local_fc;
            uVar17 = local_100;
            local_e4 = uVar8;
          }
        }
        else {
          if (cVar16 != '\0') {
            if (local_112 != '\0') goto LAB_0087281d;
            if (local_10e == '\0') goto LAB_00872810;
            local_104 = iVar5 + 1U & 0xffff;
            local_112 = '\x01';
          }
          cVar16 = '\x01';
          local_110 = '\x01';
          local_f4 = local_fc;
          uVar17 = local_100;
          iVar5 = iVar11;
          local_108 = iVar11;
        }
      }
      else if ((cVar16 == '\0') && (local_f0 - 1 < 0xc)) {
        cVar16 = '\x01';
        local_110 = '\x01';
        local_10e = '\x01';
        local_f4 = local_fc;
        uVar17 = local_100;
        iVar5 = local_f0 - 1;
        local_108 = local_f0 - 1;
      }
      else {
        if (local_112 == '\0') {
          if (cVar16 == '\0') {
            uVar9 = 0x1f;
          }
          else {
            uVar8 = local_10c;
            if (local_111 == '\0') {
              uVar8 = 0x7b8;
            }
            uVar9 = FUN_0086deb0(iVar5,uVar8,0);
            uVar9 = uVar9 & 0xffff;
          }
          if ((local_f0 != 0) && (uVar8 = local_f0, local_f0 <= uVar9)) goto LAB_008727e7;
        }
        if (local_111 != '\0') break;
        local_f4 = local_fc;
        local_10c = local_f0 & 0xffff;
        local_111 = '\x01';
        uVar17 = local_100;
      }
    }
  }
  iVar5 = local_108;
  cVar16 = local_110;
  if (local_112 == '\0') {
LAB_00872810:
    if (local_10f == '\0') goto LAB_00872a06;
LAB_0087282d:
    if ((cVar16 == '\0') && (local_111 == '\0')) {
      if (local_112 != '\0') goto LAB_00872a06;
    }
    else if ((local_112 == '\0') || ((cVar16 == '\0' || (local_111 == '\0')))) goto LAB_00872a06;
    if (local_10f == '\0') goto LAB_00872864;
LAB_008728c5:
    if (cVar16 == '\0') {
      iVar5 = FUN_0086d9c0(0);
      local_108 = iVar5;
    }
LAB_008728d9:
    if (local_111 == '\0') goto LAB_008728e0;
  }
  else {
LAB_0087281d:
    iVar5 = local_108;
    cVar16 = local_110;
    if (local_10f != '\0') goto LAB_0087282d;
LAB_00872864:
    uVar8 = local_10c;
    if (local_111 == '\0') goto LAB_008728c5;
    if (local_112 == '\0') {
      if (cVar16 == '\0') goto LAB_00872a06;
      goto LAB_008728d9;
    }
    if (cVar16 != '\0') goto LAB_008728d9;
    if (((0xc < (ushort)local_104) ||
        (iVar5 = (local_104 & 0xffff) - 1, local_108 = iVar5, (int)local_10c < 1)) ||
       (uVar9 = FUN_0086deb0(iVar5,0xffff8000,0), (int)(uVar9 & 0xffff) < (int)uVar8))
    goto LAB_00872a06;
    local_104 = uVar8 & 0xffff;
LAB_008728e0:
    local_10c = FUN_0086d920(0);
  }
  if (local_112 == '\0') {
    uVar6 = FUN_0086cc50(local_58);
    local_ec = 0;
    local_e8 = 0;
    FUN_0086cca0(uVar6);
    FUN_0086e3a0();
    *local_d8 = local_ec;
    local_d8[1] = local_e8;
    FUN_0086f330(local_e4,1);
  }
  else {
    uVar4 = FUN_0086deb0(iVar5,local_10c,0);
    if (uVar4 < (ushort)local_104) goto LAB_00872a06;
    FUN_0086df90(local_104,local_108,local_10c,0,0,0,0);
    if (local_10f != '\0') {
      FUN_0086c940(0);
      iVar5 = FUN_0086d460(&local_7c,&local_d4);
      if (*(short *)(iVar5 + 0x18) == 7) {
        FUN_0086c890();
      }
      if (*(ushort *)(iVar5 + 0x18) != local_e4) goto LAB_00872a06;
    }
  }
  *local_d0 = uVar17;
  local_d0[1] = (uint)local_f4;
LAB_00872a06:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00872a30(int param_1,int param_2,int *param_3)

{
  undefined *puVar1;
  longlong lVar2;
  short *psVar3;
  undefined2 uVar4;
  int iVar5;
  int iVar6;
  int *piVar7;
  undefined4 *****pppppuVar8;
  undefined4 *****pppppuVar9;
  short *psVar10;
  int iVar11;
  undefined *puVar12;
  undefined4 uVar13;
  undefined2 *puVar14;
  undefined4 uVar15;
  uint uVar16;
  undefined4 *****pppppuVar17;
  uint uVar18;
  wint_t wVar19;
  undefined *local_6bc;
  undefined4 *****local_6b8;
  int *local_6b0;
  int local_6ac;
  undefined8 local_6a8;
  undefined local_6a0 [2];
  ushort local_69e;
  ushort uStack_69c;
  ushort local_69a;
  ushort uStack_698;
  undefined2 uStack_696;
  int local_694;
  int local_690;
  ushort local_688;
  undefined4 local_684;
  int local_680;
  uint local_67c;
  uint local_678;
  uint local_674;
  undefined4 local_670;
  undefined4 local_66c;
  undefined4 local_668;
  undefined4 local_664;
  undefined4 local_660;
  undefined4 local_65c;
  uint local_658;
  uint local_654;
  uint local_650;
  uint local_64c;
  int local_648;
  int local_644;
  uint local_640;
  uint local_63c;
  undefined4 local_638;
  undefined local_634 [4];
  undefined local_630 [8];
  undefined local_628 [4];
  undefined local_624 [4];
  uint local_620;
  undefined4 local_610;
  uint local_60c;
  void *local_608;
  undefined local_600 [20];
  undefined local_5ec [20];
  undefined local_5d8 [20];
  undefined local_5c4 [20];
  undefined local_5b0 [20];
  undefined local_59c [20];
  undefined local_588 [20];
  undefined local_574 [20];
  undefined local_560 [20];
  undefined local_54c [20];
  undefined local_538 [20];
  undefined local_524 [20];
  undefined local_510 [20];
  undefined local_4fc [20];
  undefined local_4e8 [20];
  undefined local_4d4 [20];
  undefined local_4c0 [20];
  undefined local_4ac [36];
  undefined local_488 [36];
  undefined local_464 [36];
  undefined local_440 [36];
  undefined local_41c [28];
  undefined local_400 [36];
  undefined local_3dc [36];
  undefined local_3b8 [36];
  undefined local_394 [36];
  undefined local_370 [36];
  undefined local_34c [36];
  undefined local_328 [36];
  undefined local_304 [36];
  undefined local_2e0 [36];
  undefined local_2bc [36];
  undefined local_298 [36];
  undefined local_274 [36];
  undefined local_250 [36];
  undefined local_22c [36];
  undefined local_208 [36];
  undefined local_1e4 [36];
  undefined local_1c0 [36];
  undefined local_19c [36];
  undefined local_178 [36];
  undefined local_154 [36];
  undefined local_130 [36];
  undefined local_10c [36];
  undefined local_e8 [4];
  undefined4 local_e4;
  undefined4 local_d4;
  uint local_d0;
  void *local_cc;
  undefined local_c4 [4];
  undefined4 local_c0;
  int local_b0;
  uint local_ac;
  void *local_a8;
  undefined local_a0 [4];
  undefined4 *****local_9c [4];
  int local_8c;
  uint local_88;
  void *local_84;
  undefined4 local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 *****local_54 [4];
  undefined4 local_44;
  uint local_40;
  undefined local_34 [36];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9f5d;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_6bc;
  ExceptionList = &local_c;
  local_684 = 0;
  local_6ac = param_1;
  local_6b0 = param_3;
  if (*(int *)(param_2 + 0x14) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\datetimefmt.cpp",0x139,"wxDateTime::Format",
                   "!formatp.empty()",L"NULL format in wxDateTime::Format",
                   DAT_0323f878 ^ (uint)&stack0xfffff934);
    }
    FUN_004325b6(PTR_DAT_03236318);
    goto LAB_008740f2;
  }
  local_9c[0] = (undefined4 *****)((uint)local_9c[0] & 0xffff0000);
  local_88 = 7;
  local_8c = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  local_84 = (void *)0x0;
  local_4 = 0;
  local_6a8 = FUN_0085c790();
  if (local_6a8 == -1) {
LAB_00872c35:
    FUN_0086d460(local_6a0,param_3);
    local_674 = (uint)local_69a;
    local_67c = (uint)local_69e;
    local_664 = 0;
    local_660 = 0;
    local_678 = (uint)uStack_69c;
    local_670 = 1;
    local_66c = 0;
    local_668 = 0x4c;
    local_65c = 0;
    local_64 = 7;
    local_68 = 0;
    local_78 = (uint)local_78._2_2_ << 0x10;
    local_60 = (void *)0x0;
    local_d0 = 7;
    local_d4 = 0;
    local_e4 = (uint)local_e4._2_2_ << 0x10;
    local_cc = (void *)0x0;
    local_ac = 7;
    local_b0 = 0;
    local_c0 = (uint)local_c0._2_2_ << 0x10;
    local_a8 = (void *)0x0;
    local_4 = CONCAT31(local_4._1_3_,3);
    piVar7 = (int *)FUN_0081b376(local_630);
    puVar1 = (undefined *)*piVar7;
    pppppuVar17 = (undefined4 *****)piVar7[1];
    local_6bc = puVar1;
LAB_00872d20:
    pppppuVar8 = local_9c[0];
    if (local_88 < 8) {
      pppppuVar8 = local_9c;
    }
    pppppuVar8 = (undefined4 *****)((int)pppppuVar8 + local_8c * 2);
    if (pppppuVar8 == (undefined4 *****)0x0) {
LAB_00872d71:
      FUN_00a3fb10();
    }
    else {
      pppppuVar9 = local_9c[0];
      if (local_88 < 8) {
        pppppuVar9 = local_9c;
      }
      if (pppppuVar8 < pppppuVar9) goto LAB_00872d71;
      pppppuVar9 = local_9c[0];
      if (local_88 < 8) {
        pppppuVar9 = local_9c;
      }
      if ((undefined4 *****)((int)pppppuVar9 + local_8c * 2) < pppppuVar8) goto LAB_00872d71;
    }
    if ((puVar1 != (undefined *)0xfffffffc) &&
       ((puVar1 == (undefined *)0x0 || (puVar1 != local_a0)))) {
      FUN_00a3fb10();
    }
    iVar5 = local_6ac;
    if (pppppuVar17 != pppppuVar8) {
      if (puVar1 != (undefined *)0xfffffffc) {
        if (puVar1 == (undefined *)0x0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(puVar1 + 0x18) < 8) {
          puVar12 = puVar1 + 4;
        }
        else {
          puVar12 = *(undefined **)(puVar1 + 4);
        }
        if (puVar12 + *(int *)(puVar1 + 0x14) * 2 <= pppppuVar17) {
          FUN_00a3fb10();
        }
      }
      if (*(wint_t *)pppppuVar17 == 0x25) {
        if (puVar1 != (undefined *)0xfffffffc) {
          if (puVar1 == (undefined *)0x0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(puVar1 + 0x18) < 8) {
            puVar12 = puVar1 + 4;
          }
          else {
            puVar12 = *(undefined **)(puVar1 + 4);
          }
          if (puVar12 + *(int *)(puVar1 + 0x14) * 2 <= pppppuVar17) {
            FUN_00a3fb10();
          }
        }
        pppppuVar17 = (undefined4 *****)((int)pppppuVar17 + 2);
        local_6b8 = pppppuVar17;
        if (puVar1 != (undefined *)0xfffffffc) {
          if (puVar1 == (undefined *)0x0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(puVar1 + 0x18) < 8) {
            puVar12 = puVar1 + 4;
          }
          else {
            puVar12 = *(undefined **)(puVar1 + 4);
          }
          if (puVar12 + *(int *)(puVar1 + 0x14) * 2 <= pppppuVar17) {
            FUN_00a3fb10();
          }
        }
        switch(*(wint_t *)pppppuVar17) {
        case 0x59:
          FUN_00432199(L"%04d");
          break;
        default:
          psVar3 = &DAT_00d2b60c;
          do {
            psVar10 = psVar3;
            psVar3 = psVar10 + 1;
          } while (*psVar10 != 0);
          FID_conflict_assign(&DAT_00d2b60c,(int)(psVar10 + -0x695b06) >> 1);
          break;
        case 0x6a:
        case 0x6c:
          FUN_00432199(L"%03d");
          break;
        case 0x77:
          FUN_00432199(&DAT_00d2b618);
        }
LAB_00872ed0:
        if (puVar1 != (undefined *)0xfffffffc) {
          if (puVar1 == (undefined *)0x0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(puVar1 + 0x18) < 8) {
            puVar12 = puVar1 + 4;
          }
          else {
            puVar12 = *(undefined **)(puVar1 + 4);
          }
          if (puVar12 + *(int *)(puVar1 + 0x14) * 2 <= pppppuVar17) {
            FUN_00a3fb10();
          }
        }
        switch(*(wint_t *)pppppuVar17) {
        case 0:
          local_6b8 = pppppuVar17;
          if (PTR_FUN_03235c4c != (undefined *)0x0) {
            FUN_00840480("..\\..\\src\\common\\datetimefmt.cpp",0x2a7,"wxDateTime::Format",
                         "Assert failure",L"missing format at the end of string");
          }
          wVar19 = 0x25;
          goto LAB_00873f5b;
        default:
          FUN_00432156();
          do {
            if (puVar1 != (undefined *)0xfffffffc) {
              if (puVar1 == (undefined *)0x0) {
                FUN_00a3fb10();
              }
              if (*(uint *)(puVar1 + 0x18) < 8) {
                puVar12 = puVar1 + 4;
              }
              else {
                puVar12 = *(undefined **)(puVar1 + 4);
              }
              if (puVar12 + *(int *)(puVar1 + 0x14) * 2 <= pppppuVar17) {
                FUN_00a3fb10();
              }
            }
            if (*(wint_t *)pppppuVar17 != 0x2d) {
              if (puVar1 != (undefined *)0xfffffffc) {
                if (puVar1 == (undefined *)0x0) {
                  FUN_00a3fb10();
                }
                if (*(uint *)(puVar1 + 0x18) < 8) {
                  puVar12 = puVar1 + 4;
                }
                else {
                  puVar12 = *(undefined **)(puVar1 + 4);
                }
                if (puVar12 + *(int *)(puVar1 + 0x14) * 2 <= pppppuVar17) {
                  FUN_00a3fb10();
                }
              }
              if (*(wint_t *)pppppuVar17 != 0x2b) {
                if (puVar1 != (undefined *)0xfffffffc) {
                  if (puVar1 == (undefined *)0x0) {
                    FUN_00a3fb10();
                  }
                  if (*(uint *)(puVar1 + 0x18) < 8) {
                    puVar12 = puVar1 + 4;
                  }
                  else {
                    puVar12 = *(undefined **)(puVar1 + 4);
                  }
                  if (puVar12 + *(int *)(puVar1 + 0x14) * 2 <= pppppuVar17) {
                    FUN_00a3fb10();
                  }
                }
                if (*(wint_t *)pppppuVar17 != 0x20) {
                  if (puVar1 != (undefined *)0xfffffffc) {
                    if (puVar1 == (undefined *)0x0) {
                      FUN_00a3fb10();
                    }
                    if (*(uint *)(puVar1 + 0x18) < 8) {
                      puVar12 = puVar1 + 4;
                    }
                    else {
                      puVar12 = *(undefined **)(puVar1 + 4);
                    }
                    if (puVar12 + *(int *)(puVar1 + 0x14) * 2 <= pppppuVar17) {
                      FUN_00a3fb10();
                    }
                  }
                  iVar5 = _iswdigit(*(wint_t *)pppppuVar17);
                  if (iVar5 == 0) goto LAB_00873067;
                }
              }
            }
            if (puVar1 != (undefined *)0xfffffffc) {
              if (puVar1 == (undefined *)0x0) {
                FUN_00a3fb10();
              }
              if (*(uint *)(puVar1 + 0x18) < 8) {
                puVar12 = puVar1 + 4;
              }
              else {
                puVar12 = *(undefined **)(puVar1 + 4);
              }
              if (puVar12 + *(int *)(puVar1 + 0x14) * 2 <= pppppuVar17) {
                FUN_00a3fb10();
              }
            }
            FID_conflict_append(1,*(wint_t *)pppppuVar17);
            if (puVar1 != (undefined *)0xfffffffc) {
              if (puVar1 == (undefined *)0x0) {
                FUN_00a3fb10();
              }
              if (*(uint *)(puVar1 + 0x18) < 8) {
                puVar12 = puVar1 + 4;
              }
              else {
                puVar12 = *(undefined **)(puVar1 + 4);
              }
              if (puVar12 + *(int *)(puVar1 + 0x14) * 2 <= pppppuVar17) {
                FUN_00a3fb10();
              }
            }
            pppppuVar17 = (undefined4 *****)((int)pppppuVar17 + 2);
          } while( true );
        case 0x25:
          local_6b8 = pppppuVar17;
          goto LAB_00873f2c;
        case 0x41:
        case 0x61:
          local_6b8 = pppppuVar17;
          piVar7 = (int *)FUN_00847840(local_628);
          iVar5 = *piVar7;
          if (local_688 == 7) {
            FUN_0086c890();
          }
          uVar15 = FUN_0086e7e0(local_250,local_688,(iVar5 == 0x61) + '\x01');
          local_4._0_1_ = 4;
          FID_conflict_append(uVar15,0,0xffffffff);
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0040159c();
          break;
        case 0x42:
        case 0x62:
          local_6b8 = pppppuVar17;
          piVar7 = (int *)FUN_00847840(local_634);
          uVar15 = FUN_0086e600(local_370,local_694,(*piVar7 == 0x62) + '\x01');
          local_4._0_1_ = 5;
          FID_conflict_append(uVar15,0,0xffffffff);
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0040159c();
          break;
        case 0x48:
          local_6b8 = pppppuVar17;
          FUN_008433c0(local_c4);
          local_4._0_1_ = 0x14;
          uVar15 = FUN_0086fa00(local_298,local_524,CONCAT22(uStack_698,local_69a));
          local_4._0_1_ = 0x15;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0081b5bc();
          break;
        case 0x49:
          uVar18 = (uint)local_69a;
          if (local_69a < 0xd) {
            if (local_69a == 0) {
              uVar18 = 0xc;
            }
          }
          else {
            uVar18 = uVar18 - 0xc;
          }
          local_6b8 = pppppuVar17;
          FUN_008433c0(local_c4);
          local_4._0_1_ = 0x16;
          uVar15 = FUN_00821558(local_400,local_5c4,uVar18);
          local_4._0_1_ = 0x17;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0081b5bc();
          break;
        case 0x4d:
          local_6b8 = pppppuVar17;
          FUN_008433c0(local_c4);
          local_4._0_1_ = 0x1e;
          uVar15 = FUN_0086fa00(local_304,local_574,CONCAT22(local_69a,uStack_69c));
          local_4._0_1_ = 0x1f;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0081b5bc();
          break;
        case 0x53:
          local_6b8 = pppppuVar17;
          FUN_008433c0(local_c4);
          local_4._0_1_ = 0x22;
          uVar15 = FUN_0086fa00(local_274,local_4c0,CONCAT22(uStack_69c,local_69e));
          local_4._0_1_ = 0x23;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0081b5bc();
          break;
        case 0x55:
          local_6b8 = pppppuVar17;
          FUN_008433c0(local_c4);
          local_4._0_1_ = 0x24;
          uVar4 = FUN_0086f090(2,local_6b0);
          uVar15 = FUN_0086fa00(local_22c,local_54c,uVar4);
          local_4._0_1_ = 0x25;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0081b5bc();
          break;
        case 0x57:
          local_6b8 = pppppuVar17;
          FUN_008433c0(local_c4);
          local_4._0_1_ = 0x26;
          uVar4 = FUN_0086f090(1,local_6b0);
          uVar15 = FUN_0086fa00(local_1e4,local_4d4,uVar4);
          local_4._0_1_ = 0x27;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0081b5bc();
          break;
        case 0x58:
          local_6b8 = pppppuVar17;
          FUN_004325b6(&DAT_00fb1b74);
          local_4._0_1_ = 0x2a;
          uVar15 = FUN_0086e410(local_154,local_440,&local_67c);
          local_4._0_1_ = 0x2b;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0040159c();
          break;
        case 0x59:
          local_6b8 = pppppuVar17;
          FUN_008433c0(local_c4);
          local_4._0_1_ = 0x2e;
          uVar15 = FUN_00821558(local_1c0,local_5b0,local_690);
          local_4._0_1_ = 0x2f;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0081b5bc();
          break;
        case 0x5a:
          local_6b8 = pppppuVar17;
          FUN_004325b6(&DAT_03059db0);
          local_4._0_1_ = 0x30;
          uVar15 = FUN_0086e410(local_3b8,local_4ac,&local_67c);
          local_4._0_1_ = 0x31;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0040159c();
          break;
        case 99:
        case 0x78:
          local_6b8 = pppppuVar17;
          iVar5 = FUN_0086d460(local_41c,local_6b0);
          local_680 = *(int *)(iVar5 + 0x10);
          iVar5 = local_680 % 0x1c;
          uVar18 = iVar5 + 0x7c4;
          if (9 < iVar5) {
            uVar18 = iVar5 + 0x7a8;
          }
          iVar5 = (int)uVar18 / 100;
          iVar6 = local_680 / 100;
          for (iVar5 = ((((int)(iVar6 + (iVar6 >> 0x1f & 3U)) >> 2) -
                        ((int)(iVar5 + (iVar5 >> 0x1f & 3U)) >> 2)) - iVar6) + iVar5; iVar5 % 7 != 0
              ; iVar5 = iVar5 + iVar11) {
            uVar16 = uVar18 & 0x80000003;
            if ((int)uVar16 < 0) {
              uVar16 = (uVar16 - 1 | 0xfffffffc) + 1;
            }
            uVar18 = uVar18 + 1;
            iVar11 = 1;
            if (uVar16 == 0) {
              iVar11 = 2;
            }
          }
          if (1999 < (int)uVar18) {
            uVar18 = uVar18 - 0x1c;
          }
          if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
             (((int)uVar18 < 0x7b2 || (1999 < (int)uVar18)))) {
            FUN_00840480("..\\..\\src\\common\\datetimefmt.cpp",0x202,"wxDateTime::Format",
                         "year >= 1970 && year < 2000",L"logic error in wxDateTime::Format");
          }
          FUN_0086c800(&local_658);
          local_650 = (uint)local_69a;
          local_654 = (uint)uStack_69c;
          local_658 = (uint)local_69e;
          if (local_688 == 7) {
            FUN_0086c890();
          }
          local_640 = (uint)local_688;
          FUN_0086c940(0);
          local_63c = FUN_0086dc60(&local_684);
          local_64c = (uint)uStack_698;
          local_63c = local_63c & 0xffff;
          local_644 = uVar18 - 0x76c;
          local_648 = local_694;
          local_638 = 0;
          piVar7 = (int *)FUN_00847840(local_630);
          puVar12 = &DAT_00d2b5a4;
          if (*piVar7 != 99) {
            puVar12 = &DAT_00d2b59c;
          }
          FUN_004325b6(puVar12);
          local_4._0_1_ = 6;
          FUN_0086e410(local_34,local_488,&local_658);
          local_4._0_1_ = 8;
          FUN_0040159c();
          FUN_0043c211(&DAT_00d2b598);
          local_4._0_1_ = 9;
          while( true ) {
            pppppuVar17 = local_54[0];
            if (local_40 < 8) {
              pppppuVar17 = local_54;
            }
            iVar5 = FUN_00420f3f(pppppuVar17,0,local_44);
            if (iVar5 == -1) break;
            FID_conflict_append(1,0x7c);
          }
          FUN_0083fbe0(&DAT_00d26cac);
          local_4._0_1_ = 10;
          uVar15 = FUN_00821558(local_130,local_588,uVar18);
          local_4._0_1_ = 0xb;
          FUN_00852a70(uVar15,local_58,1);
          FUN_0040159c();
          local_4._0_1_ = 9;
          FUN_0081b5bc();
          FUN_0083fbe0(&DAT_00d26cac);
          local_4._0_1_ = 0xc;
          FUN_0083fbe0(&DAT_00d26cac);
          iVar5 = local_680;
          local_4._0_1_ = 0xd;
          uVar15 = FUN_00821558(local_208,local_538,local_680 + iVar6 * -100);
          local_4._0_1_ = 0xe;
          uVar13 = FUN_00821558(local_328,local_560,(int)uVar18 % 100);
          local_4._0_1_ = 0xf;
          FUN_00852a70(uVar13,uVar15,1);
          FUN_0040159c();
          FUN_0040159c();
          local_4._0_1_ = 0xc;
          FUN_0081b5bc();
          local_4._0_1_ = 9;
          FUN_0081b5bc();
          FUN_0083fbe0(&DAT_00d26cac);
          local_4._0_1_ = 0x10;
          uVar15 = FUN_00821558(local_2e0,local_510,iVar5);
          local_4._0_1_ = 0x11;
          FUN_00852a70(local_58,uVar15,1);
          FUN_0040159c();
          local_4._0_1_ = 9;
          FUN_0081b5bc();
          FID_conflict_append(local_34,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0040159c();
          pppppuVar17 = local_6b8;
          break;
        case 100:
          local_6b8 = pppppuVar17;
          FUN_008433c0(local_c4);
          local_4._0_1_ = 0x12;
          uVar15 = FUN_0086fa00(local_178,local_4e8,CONCAT22(uStack_696,uStack_698));
          local_4._0_1_ = 0x13;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0081b5bc();
          break;
        case 0x6a:
          local_6b8 = pppppuVar17;
          FUN_008433c0(local_c4);
          local_4._0_1_ = 0x18;
          uVar4 = FUN_0086dc60(local_6b0);
          uVar15 = FUN_0086fa00(local_3dc,local_600,uVar4);
          local_4._0_1_ = 0x19;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0081b5bc();
          break;
        case 0x6c:
          local_6b8 = pppppuVar17;
          FUN_008433c0(local_c4);
          local_4._0_1_ = 0x1a;
          puVar14 = (undefined2 *)FUN_0086d460(local_41c,local_6b0);
          uVar15 = FUN_0086fa00(local_394,local_59c,*puVar14);
          local_4._0_1_ = 0x1b;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0081b5bc();
          break;
        case 0x6d:
          local_6b8 = pppppuVar17;
          FUN_008433c0(local_c4);
          local_4._0_1_ = 0x1c;
          uVar15 = FUN_00821558(local_34c,local_4fc,local_694 + 1);
          local_4._0_1_ = 0x1d;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0081b5bc();
          break;
        case 0x70:
          local_6b8 = pppppuVar17;
          FUN_004325b6(&DAT_00d260a8);
          local_4._0_1_ = 0x20;
          uVar15 = FUN_0086e410(local_2bc,local_464,&local_67c);
          local_4._0_1_ = 0x21;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0040159c();
          break;
        case 0x77:
          local_6b8 = pppppuVar17;
          FUN_008433c0(local_c4);
          local_4._0_1_ = 0x28;
          if (local_688 == 7) {
            FUN_0086c890();
          }
          uVar15 = FUN_0086fa40(local_19c,local_5ec,local_688);
          local_4._0_1_ = 0x29;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0081b5bc();
          break;
        case 0x79:
          local_6b8 = pppppuVar17;
          FUN_008433c0(local_c4);
          local_4._0_1_ = 0x2c;
          uVar15 = FUN_00821558(local_10c,local_5d8,local_690 % 100);
          local_4._0_1_ = 0x2d;
          FID_conflict_append(uVar15,0,0xffffffff);
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,3);
          FUN_0081b5bc();
        }
        goto LAB_00873f69;
      }
      if (puVar1 != (undefined *)0xfffffffc) {
        if (puVar1 == (undefined *)0x0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(puVar1 + 0x18) < 8) goto LAB_00873f44;
        puVar12 = *(undefined **)(puVar1 + 4);
        goto LAB_00873f47;
      }
      goto LAB_00873f56;
    }
    *(undefined4 *)(local_6ac + 0x18) = 7;
    *(undefined4 *)(local_6ac + 0x14) = 0;
    *(undefined2 *)(local_6ac + 4) = 0;
    FID_conflict_assign(local_e8,0,0xffffffff);
    *(undefined4 *)(iVar5 + 0x1c) = 0;
    _free(local_a8);
    if (7 < local_ac) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_c0);
    }
    local_ac = 7;
    local_b0 = 0;
    local_c0 = local_c0 & 0xffff0000;
    _free(local_cc);
    if (7 < local_d0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_e4);
    }
    local_d0 = 7;
    local_d4 = 0;
    local_e4 = local_e4 & 0xffff0000;
    _free(local_60);
    if (7 < local_64) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_78);
    }
    local_64 = 7;
    local_68 = 0;
    local_78 = local_78 & 0xffff0000;
    _free(local_84);
    if (7 < local_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_9c[0]);
    }
    goto LAB_008740f2;
  }
  iVar5 = FUN_0086fb30(local_a0,&DAT_00d2b64c);
  if (iVar5 != 0) goto LAB_00872c35;
  iVar5 = *param_3;
  iVar6 = FUN_008a6790();
  if (iVar5 == -iVar6) {
    iVar5 = FUN_008a67b0(&local_6a8,local_4ac);
    if (iVar5 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\datetimefmt.cpp",0x151,"wxDateTime::Format",&DAT_00d2a874
                     ,L"wxLocaltime_r() failed");
      }
      FUN_004325b6(PTR_DAT_03236318);
      FUN_0040159c();
      goto LAB_008740f2;
    }
  }
  else {
    lVar2 = local_6a8 + *param_3;
    local_6a8 = local_6a8 + *param_3;
    if (lVar2 < 0) goto LAB_00872c35;
    local_6a8 = lVar2;
    iVar5 = FUN_008a67e0(&local_6a8,local_4ac);
    if (iVar5 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\datetimefmt.cpp",0x161,"wxDateTime::Format",&DAT_00d2a874
                     ,L"wxGmtime_r() failed");
      }
      FUN_004325b6(PTR_DAT_03236318);
      FUN_0040159c();
      goto LAB_008740f2;
    }
  }
  FUN_0086e410(local_6ac,local_a0,iVar5);
  FUN_0040159c();
LAB_008740f2:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
LAB_00873067:
  if (local_b0 == 0) goto LAB_00873ef8;
  FUN_00853fa0(0x25,1);
  local_4._0_1_ = 0x32;
  FUN_00855e60(local_624);
  local_4 = CONCAT31(local_4._1_3_,3);
  _free(local_608);
  if (7 < local_60c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_620);
  }
  local_60c = 7;
  local_610 = 0;
  local_620 = local_620 & 0xffff0000;
  FID_conflict_append(1,100);
  goto LAB_00872ed0;
LAB_00873ef8:
  local_6b8 = pppppuVar17;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\datetimefmt.cpp",0x29e,"wxDateTime::Format","Assert failure",
                 L"unknown format specifier");
  }
LAB_00873f2c:
  if (puVar1 != (undefined *)0xfffffffc) {
    if (puVar1 == (undefined *)0x0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(puVar1 + 0x18) < 8) {
LAB_00873f44:
      puVar12 = puVar1 + 4;
    }
    else {
      puVar12 = *(undefined **)(puVar1 + 4);
    }
LAB_00873f47:
    if (puVar12 + *(int *)(puVar1 + 0x14) * 2 <= pppppuVar17) {
      FUN_00a3fb10();
    }
  }
LAB_00873f56:
  wVar19 = *(wint_t *)pppppuVar17;
LAB_00873f5b:
  FID_conflict_append(1,wVar19);
LAB_00873f69:
  if (puVar1 != (undefined *)0xfffffffc) {
    if (puVar1 == (undefined *)0x0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(puVar1 + 0x18) < 8) {
      puVar12 = puVar1 + 4;
    }
    else {
      puVar12 = *(undefined **)(puVar1 + 4);
    }
    if (puVar12 + *(int *)(puVar1 + 0x14) * 2 <= pppppuVar17) {
      FUN_00a3fb10();
    }
  }
  pppppuVar17 = (undefined4 *****)((int)pppppuVar17 + 2);
  goto LAB_00872d20;
}



void __thiscall FUN_00874230(int param_1_00,int param_1,undefined4 *param_2)

{
  short sVar1;
  char cVar2;
  short *psVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  short *psVar7;
  undefined4 *puVar8;
  uint uVar9;
  uint local_b0;
  int local_ac;
  undefined4 *local_a8;
  undefined4 *local_a4;
  undefined local_a0 [4];
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  undefined4 local_78;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9fbb;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_b0;
  ExceptionList = &local_c;
  uVar9 = 0;
  local_a4 = param_2;
  local_ac = param_1_00;
  if (param_2 == (undefined4 *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\datetimefmt.cpp",0x773,"wxDateTime::ParseTime",
                   &DAT_00d2b37c,"end iterator pointer must be specified",
                   DAT_0323f878 ^ (uint)&stack0xffffff40);
    }
  }
  else {
    local_b0 = 0;
    do {
      psVar7 = (short *)PTR_DAT_03236318;
      if (PTR_DAT_03236318 == (undefined *)0x0) {
        psVar7 = &DAT_00fae9c8;
      }
      local_9c = local_9c & 0xffff0000;
      local_88 = 7;
      local_8c = 0;
      psVar3 = psVar7;
      do {
        sVar1 = *psVar3;
        psVar3 = psVar3 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign(psVar7,(int)psVar3 - (int)(psVar7 + 1) >> 1);
      local_84 = (void *)0x0;
      local_4 = 0;
      FUN_0043c211((&PTR_DAT_00d2b680)[local_b0 * 2]);
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        uVar5 = FUN_0084d360(local_58);
      }
      else {
        uVar5 = FUN_0084f210(local_58,local_a0);
      }
      local_30 = local_30 & 0xffff0000;
      local_1c = 7;
      local_20 = 0;
      FID_conflict_assign(uVar5,0,0xffffffff);
      local_18 = (void *)0x0;
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_54);
      }
      local_40 = 7;
      local_44 = 0;
      local_54 = local_54 & 0xffff0000;
      local_4._0_1_ = 4;
      _free(local_84);
      if (7 < local_88) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_9c);
      }
      local_9c = local_9c & 0xffff0000;
      local_88 = 7;
      local_8c = 0;
      uVar5 = FUN_0086fa80(param_1,local_20);
      local_4._0_1_ = 5;
      iVar4 = FUN_00850470(uVar5);
      local_4 = CONCAT31(local_4._1_3_,4);
      _free(local_60);
      if (7 < local_64) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_78);
      }
      if (iVar4 == 0) {
        FUN_0086d270(*(undefined2 *)(&DAT_00d2b684 + local_b0 * 8),0,0,0);
        uVar5 = local_20;
        uVar9 = *(uint *)(param_1 + 0x18);
        puVar6 = (undefined4 *)(param_1 + 4);
        local_a8 = puVar6;
        if (7 < uVar9) {
          local_a8 = (undefined4 *)*puVar6;
        }
        if (local_a8 == (undefined4 *)0x0) {
LAB_00874537:
          FUN_00a3fb10();
        }
        else {
          puVar8 = puVar6;
          if (7 < uVar9) {
            puVar8 = (undefined4 *)*puVar6;
          }
          if (local_a8 < puVar8) goto LAB_00874537;
          if (7 < uVar9) {
            puVar6 = (undefined4 *)*puVar6;
          }
          if ((undefined4 *)((int)puVar6 + *(int *)(param_1 + 0x14) * 2) < local_a8)
          goto LAB_00874537;
        }
        local_ac = param_1;
        puVar6 = (undefined4 *)FUN_004226c0(uVar5);
        *local_a4 = *puVar6;
        local_a4[1] = puVar6[1];
        _free(local_18);
        if (7 < local_1c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_30);
        }
        goto LAB_008745b5;
      }
      local_4 = 0xffffffff;
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
      local_b0 = local_b0 + 1;
    } while (local_b0 < 2);
    do {
      FUN_0043c211(*(undefined4 *)((int)&PTR_s__I__M__S__p_00d2b66c + uVar9));
      local_4 = 6;
      cVar2 = FUN_008706f0(param_1,local_7c,&DAT_032365a0,local_a4);
      local_4 = 0xffffffff;
      _free(local_60);
      if (7 < local_64) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_78);
      }
    } while ((cVar2 == '\0') && (uVar9 = uVar9 + 4, uVar9 < 0x14));
  }
LAB_008745b5:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008745e0(undefined4 param_1_00,int param_1,undefined4 *param_2)

{
  undefined2 uVar1;
  undefined2 uVar2;
  undefined2 uVar3;
  undefined2 uVar4;
  uint uVar5;
  char cVar6;
  int iVar7;
  int *piVar8;
  undefined4 *puVar9;
  undefined4 uVar10;
  undefined2 *puVar11;
  int iVar12;
  wint_t **ppwVar13;
  wint_t **ppwVar14;
  wint_t **ppwVar15;
  wint_t **ppwVar16;
  int local_14c;
  wint_t **local_148;
  int local_144;
  int local_140;
  wint_t **local_13c;
  undefined4 local_138;
  undefined4 local_134;
  undefined4 local_130;
  undefined4 local_12c;
  undefined4 local_128;
  undefined4 local_124;
  undefined4 *local_120;
  undefined local_11c [4];
  undefined local_118 [4];
  undefined local_114 [4];
  undefined4 local_110;
  undefined local_10c [8];
  undefined local_104 [4];
  undefined local_100 [8];
  undefined local_f8 [28];
  undefined local_dc [28];
  undefined local_c0 [28];
  undefined local_a4 [28];
  undefined local_88 [28];
  undefined local_6c [28];
  undefined local_50 [28];
  undefined local_34 [28];
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca000;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_14c;
  ExceptionList = &local_c;
  local_144 = param_1;
  local_120 = param_2;
  local_110 = param_1_00;
  if (param_2 == (undefined4 *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\datetimefmt.cpp",0x5d9,"wxDateTime::ParseDateTime",
                   &DAT_00d2b37c,"end iterator pointer must be specified",
                   DAT_0323f878 ^ (uint)&stack0xfffffea4);
    }
  }
  else {
    local_124 = 0x80000000;
    local_12c = 0x80000000;
    local_128 = 0;
    local_130 = 0;
    local_140 = 0;
    local_13c = (wint_t **)0x0;
    local_14c = 0;
    local_148 = (wint_t **)0x0;
    cVar6 = FUN_00871e80(param_1,&local_14c);
    iVar12 = local_14c;
    if (cVar6 != '\0') {
      do {
        uVar5 = *(uint *)(param_1 + 0x18);
        ppwVar13 = (wint_t **)(param_1 + 4);
        ppwVar15 = ppwVar13;
        if (7 < uVar5) {
          ppwVar15 = (wint_t **)*ppwVar13;
        }
        iVar7 = *(int *)(param_1 + 0x14) * 2;
        ppwVar15 = (wint_t **)((int)ppwVar15 + iVar7);
        if (ppwVar15 == (wint_t **)0x0) {
LAB_008746b9:
          FUN_00a3fb10();
        }
        else {
          ppwVar14 = ppwVar13;
          if (7 < uVar5) {
            ppwVar14 = (wint_t **)*ppwVar13;
          }
          if (ppwVar15 < ppwVar14) goto LAB_008746b9;
          if (7 < uVar5) {
            ppwVar13 = (wint_t **)*ppwVar13;
          }
          if ((wint_t **)((int)ppwVar13 + iVar7) < ppwVar15) goto LAB_008746b9;
        }
        if ((iVar12 != -4) && ((iVar12 == 0 || (iVar12 != param_1)))) {
          FUN_00a3fb10();
        }
        if (local_148 == ppwVar15) goto LAB_0087474e;
        if (iVar12 != -4) {
          if (iVar12 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar12 + 0x18) < 8) {
            iVar7 = iVar12 + 4;
          }
          else {
            iVar7 = *(int *)(iVar12 + 4);
          }
          if ((wint_t **)(iVar7 + *(int *)(iVar12 + 0x14) * 2) <= local_148) {
            FUN_00a3fb10();
          }
        }
        ppwVar13 = local_148;
        iVar7 = _iswspace(*(wint_t *)local_148);
        if (iVar7 == 0) goto LAB_0087474e;
        if (iVar12 != -4) {
          if (iVar12 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar12 + 0x18) < 8) {
            iVar7 = iVar12 + 4;
          }
          else {
            iVar7 = *(int *)(iVar12 + 4);
          }
          if ((wint_t **)(iVar7 + *(int *)(iVar12 + 0x14) * 2) <= ppwVar13) {
            FUN_00a3fb10();
          }
        }
        local_148 = (wint_t **)((int)ppwVar13 + 2);
      } while( true );
    }
    cVar6 = FUN_00874230(param_1,&local_140);
    iVar12 = local_140;
    ppwVar13 = local_13c;
    if (cVar6 != '\0') {
      do {
        uVar5 = *(uint *)(local_144 + 0x18);
        ppwVar14 = (wint_t **)(local_144 + 4);
        ppwVar15 = ppwVar14;
        if (7 < uVar5) {
          ppwVar15 = (wint_t **)*ppwVar14;
        }
        iVar7 = *(int *)(local_144 + 0x14) * 2;
        ppwVar15 = (wint_t **)((int)ppwVar15 + iVar7);
        if (ppwVar15 == (wint_t **)0x0) {
LAB_00874861:
          FUN_00a3fb10();
        }
        else {
          ppwVar16 = ppwVar14;
          if (7 < uVar5) {
            ppwVar16 = (wint_t **)*ppwVar14;
          }
          if (ppwVar15 < ppwVar16) goto LAB_00874861;
          if (7 < uVar5) {
            ppwVar14 = (wint_t **)*ppwVar14;
          }
          if ((wint_t **)((int)ppwVar14 + iVar7) < ppwVar15) goto LAB_00874861;
        }
        if ((iVar12 != -4) && ((iVar12 == 0 || (iVar12 != local_144)))) {
          FUN_00a3fb10();
        }
        if (ppwVar13 == ppwVar15) goto LAB_008748ed;
        if (iVar12 != -4) {
          if (iVar12 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar12 + 0x18) < 8) {
            iVar7 = iVar12 + 4;
          }
          else {
            iVar7 = *(int *)(iVar12 + 4);
          }
          if ((wint_t **)(iVar7 + *(int *)(iVar12 + 0x14) * 2) <= ppwVar13) {
            FUN_00a3fb10();
          }
        }
        iVar7 = _iswspace(*(wint_t *)ppwVar13);
        if (iVar7 == 0) goto LAB_008748ed;
        if (iVar12 != -4) {
          if (iVar12 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar12 + 0x18) < 8) {
            iVar7 = iVar12 + 4;
          }
          else {
            iVar7 = *(int *)(iVar12 + 4);
          }
          if ((wint_t **)(iVar7 + *(int *)(iVar12 + 0x14) * 2) <= ppwVar13) {
            FUN_00a3fb10();
          }
        }
        ppwVar13 = (wint_t **)((int)ppwVar13 + 2);
      } while( true );
    }
  }
  goto LAB_00874af6;
LAB_0087474e:
  FUN_008478e0(&local_138);
  FUN_00427fd0(iVar12,local_148,local_138,local_134);
  local_18 = 0;
  local_4 = 0;
  cVar6 = FUN_00874230(local_34,&local_140);
  if (cVar6 != '\0') {
    piVar8 = (int *)FUN_00847890(local_100);
    if ((local_140 != -4) && ((local_140 == 0 || (local_140 != *piVar8)))) {
      FUN_00a3fb10();
    }
    puVar9 = (undefined4 *)FUN_0086f8b0(local_10c,(int)local_13c - piVar8[1] >> 1);
    local_138 = *puVar9;
    local_134 = puVar9[1];
    goto LAB_00874982;
  }
  goto LAB_008747a7;
LAB_008748ed:
  local_13c = ppwVar13;
  FUN_008478e0(&local_138);
  FUN_00427fd0(iVar12,ppwVar13,local_138,local_134);
  local_18 = 0;
  local_4 = 1;
  cVar6 = FUN_00871e80(local_34,&local_14c);
  if (cVar6 != '\0') {
    uVar10 = FUN_00847890(local_100);
    uVar10 = FUN_0086f7f0(uVar10);
    puVar9 = (undefined4 *)FUN_0086f8b0(local_10c,uVar10);
    local_138 = *puVar9;
    local_134 = puVar9[1];
LAB_00874982:
    local_4 = 0xffffffff;
    FUN_0040159c();
    FUN_0086c940(0);
    FUN_0086c940(0);
    FUN_0086c940(0);
    FUN_0086c940(0);
    FUN_0086c940(0);
    FUN_0086c940(0);
    FUN_0086c940(0);
    puVar11 = (undefined2 *)FUN_0086d460(local_f8,&local_144);
    uVar1 = *puVar11;
    iVar12 = FUN_0086d460(local_c0,local_118);
    uVar2 = *(undefined2 *)(iVar12 + 2);
    iVar12 = FUN_0086d460(local_50,local_104);
    uVar3 = *(undefined2 *)(iVar12 + 4);
    iVar12 = FUN_0086d460(local_88,local_11c);
    uVar4 = *(undefined2 *)(iVar12 + 6);
    iVar12 = FUN_0086d460(local_dc,local_114);
    local_140 = *(int *)(iVar12 + 0x10);
    iVar12 = FUN_0086d460(local_a4,local_10c);
    local_14c = *(int *)(iVar12 + 0xc);
    iVar12 = FUN_0086d460(local_6c,local_100);
    FUN_0086df90(*(undefined2 *)(iVar12 + 8),local_14c,local_140,uVar4,uVar3,uVar2,uVar1);
    *local_120 = local_138;
    local_120[1] = local_134;
    goto LAB_00874af6;
  }
LAB_008747a7:
  FUN_0040159c();
LAB_00874af6:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_00874b20(void)

{
  return &PTR_u_wxMemoryInputStream_03236660;
}



void __fastcall FUN_00874b30(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bca038;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxMemoryInputStream::vftable;
  local_4 = 0;
  if ((undefined4 *)param_1[7] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[7])(1,uVar1);
  }
  local_4 = 0xffffffff;
  FUN_00883d00();
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_00874ba0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x20);
}



void __thiscall
FUN_00874bb0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  (**(code **)(**(int **)(param_1_00 + 0x1c) + 0x1c))(param_1,param_2,param_3);
  return;
}



undefined ** FUN_00874bd0(void)

{
  return &PTR_u_wxMemoryOutputStream_03236678;
}



void __fastcall FUN_00874be0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxMemoryOutputStream::vftable;
  local_4 = 0;
  if ((undefined4 *)param_1[4] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[4])(1,uVar1);
  }
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_00874c50(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  (**(code **)(**(int **)(param_1_00 + 0x10) + 0x1c))(param_1,param_2,param_3);
  return;
}



bool __fastcall FUN_00874c70(int param_1)

{
  return *(int *)(param_1 + 0xc) == 0;
}



undefined4 __fastcall FUN_00874c80(int param_1)

{
  return *(undefined4 *)(param_1 + 8);
}



undefined4 __thiscall FUN_00874c90(undefined4 param_1_00,byte param_1)

{
  FUN_00874b30();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00874cb0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca073;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00883ce0(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  local_4 = 0;
  *param_1_00 = wxMemoryInputStream::vftable;
  pvVar1 = operator_new(0x1c);
  local_4._0_1_ = 1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00882d20(0);
  }
  local_4 = (uint)local_4._1_3_ << 8;
  param_1_00[7] = uVar2;
  FUN_00884200(param_1,param_2,0);
  *(undefined4 *)(param_1_00[7] + 0xc) = *(undefined4 *)(param_1_00[7] + 4);
  *(undefined *)(param_1_00[7] + 0x19) = 1;
  param_1_00[8] = param_2;
  ExceptionList = local_c;
  return param_1_00;
}



bool __fastcall FUN_00874d60(int param_1)

{
  return *(int *)(*(int *)(param_1 + 0x1c) + 0xc) - *(int *)(*(int *)(param_1 + 0x1c) + 4) !=
         *(int *)(param_1 + 0x20);
}



int __fastcall FUN_00874d80(int param_1)

{
  int iVar1;
  int iVar2;
  uint3 uVar3;
  
  iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 4);
  iVar2 = *(int *)(*(int *)(param_1 + 0x1c) + 0xc) - iVar1;
  uVar3 = (uint3)((uint)iVar2 >> 8);
  if (iVar2 == *(int *)(param_1 + 0x20)) {
    *(undefined4 *)(param_1 + 0xc) = 3;
    return (uint)uVar3 << 8;
  }
  return CONCAT31(uVar3,*(undefined *)(iVar2 + iVar1));
}



int __thiscall FUN_00874db0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  
  piVar1 = *(int **)(param_1_00 + 0x1c);
  iVar2 = piVar1[3];
  iVar3 = piVar1[1];
  if (iVar2 - iVar3 == *(int *)(param_1_00 + 0x20)) {
    *(undefined4 *)(param_1_00 + 0xc) = 1;
    return 0;
  }
  (**(code **)(*piVar1 + 4))(param_1,param_2);
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  return (*(int *)(*(int *)(param_1_00 + 0x1c) + 0xc) - *(int *)(*(int *)(param_1_00 + 0x1c) + 4)) -
         (iVar2 - iVar3);
}



undefined4 * __thiscall FUN_00874e00(undefined4 *param_1_00,int param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca0a3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00883d40(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  local_4 = 0;
  *param_1_00 = wxMemoryOutputStream::vftable;
  pvVar1 = operator_new(0x1c);
  local_4._0_1_ = 1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00882d20(1);
  }
  local_4 = (uint)local_4._1_3_ << 8;
  param_1_00[4] = uVar2;
  if (param_1 != 0) {
    FUN_00884200(param_1,param_2,0);
  }
  *(undefined *)(param_1_00[4] + 0x19) = 0;
  *(undefined *)(param_1_00[4] + 0x1a) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00874ea0(undefined4 param_1_00,byte param_1)

{
  FUN_00874be0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_00874ec0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  piVar1 = *(int **)(param_1_00 + 0x10);
  iVar2 = piVar1[3];
  iVar3 = piVar1[1];
  (**(code **)(*piVar1 + 8))(param_1,param_2);
  iVar4 = *(int *)(param_1_00 + 0x10);
  iVar5 = *(int *)(iVar4 + 0xc) - *(int *)(iVar4 + 4);
  if (iVar5 == 0) {
    iVar5 = *(int *)(iVar4 + 8) - *(int *)(iVar4 + 4);
  }
  return iVar5 - (iVar2 - iVar3);
}



size_t __thiscall FUN_00874f00(int *param_1_00,void *param_1,size_t param_3)

{
  uint uVar1;
  
  if (param_1 != (void *)0x0) {
    uVar1 = (**(code **)(*param_1_00 + 0x14))();
    if (uVar1 < param_3) {
      param_3 = (**(code **)(*param_1_00 + 0x14))();
    }
    _memcpy(param_1,*(void **)(param_1_00[4] + 4),param_3);
    return param_3;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\mstream.cpp",0xc5,"wxMemoryOutputStream::CopyTo","buffer",
                 L"must have buffer to CopyTo");
  }
  return 0;
}



undefined4 * __thiscall FUN_00874f80(undefined4 *param_1_00,int *param_1)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 uVar3;
  longlong lVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca0d3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00883ce0(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  *param_1_00 = wxMemoryInputStream::vftable;
  local_4 = 0;
  lVar4 = (**(code **)(*param_1 + 0x18))();
  uVar1 = (undefined4)lVar4;
  if (lVar4 == -1) {
    param_1_00[7] = 0;
    param_1_00[3] = 1;
  }
  else {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((int)((ulonglong)lVar4 >> 0x20) != 0)) {
      FUN_00840480("..\\..\\src\\common\\mstream.cpp",0x44,
                   "wxMemoryInputStream::wxMemoryInputStream","len == lenFile + size_t(0)",
                   L"huge files not supported");
    }
    pvVar2 = operator_new(0x1c);
    local_4._0_1_ = 1;
    if (pvVar2 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = FUN_00882d20(0);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    param_1_00[7] = uVar3;
    FUN_00884270(uVar1);
    FUN_00874f00(*(undefined4 *)(param_1_00[7] + 4),uVar1);
    *(undefined4 *)(param_1_00[7] + 0xc) = *(undefined4 *)(param_1_00[7] + 4);
    *(undefined *)(param_1_00[7] + 0x19) = 1;
    param_1_00[8] = uVar1;
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_00875090(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x14);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00874e00(0,0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



int FUN_00875100(int param_1)

{
  int iVar1;
  uint uVar2;
  
  iVar1 = 0;
  uVar2 = 0;
  do {
    if (*(int *)((int)&DAT_03236690 + uVar2) == param_1) {
      return iVar1;
    }
    uVar2 = uVar2 + 0xc;
    iVar1 = iVar1 + 1;
  } while (uVar2 < 0x54);
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\registry.cpp",0xcf,"wxRegKey::GetStdKeyFromHkey",
                 "Assert failure",L"non root hkey passed to wxRegKey::GetStdKeyFromHkey.");
  }
  return 0;
}



undefined4 FUN_00875150(void)

{
  char cVar1;
  int in_EAX;
  
  if ((in_EAX != 0) && (in_EAX != 1)) {
    if (in_EAX == 2) {
      cVar1 = FUN_008950e0();
      if (cVar1 != '\0') {
        return 0x100;
      }
    }
    else if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\msw\\registry.cpp",0x5f1,"GetMSWViewFlags","Assert failure",
                   "Unknown registry view.");
      return 0;
    }
  }
  return 0;
}



undefined4 * __thiscall
FUN_008751a0(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 9) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<enum wxRegKey::ValueType>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



undefined ** __fastcall FUN_00875210(int param_1)

{
  int iVar1;
  
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440();
  }
  iVar1 = FUN_00850390(DAT_032bd4d4);
  if (iVar1 == 0) {
    return &PTR_02bd3fc0;
  }
  return (undefined **)(*(int *)(param_1 + 4) + iVar1);
}



undefined4 FUN_00875250(HKEY param_1)

{
  int in_EAX;
  uint uVar1;
  LSTATUS LVar2;
  LPCWSTR lpSubKey;
  HKEY local_4;
  
  if (*(int *)(in_EAX + 0x14) != 0) {
    uVar1 = FUN_00875150();
    if (*(uint *)(in_EAX + 0x18) < 8) {
      lpSubKey = (LPCWSTR)(in_EAX + 4);
    }
    else {
      lpSubKey = *(LPCWSTR *)(in_EAX + 4);
    }
    LVar2 = RegOpenKeyExW(param_1,lpSubKey,0,uVar1 | 0x20019,&local_4);
    if (LVar2 != 0) {
      return 0;
    }
    RegCloseKey(local_4);
  }
  return 1;
}



undefined4 __fastcall FUN_008752b0(int *param_1)

{
  undefined4 uVar1;
  
  if (*param_1 != 0) {
    return 1;
  }
  uVar1 = FUN_00875250(param_1[1],param_1[0xb]);
  return uVar1;
}



void __thiscall FUN_008752d0(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  param_1_00[9] = 0;
  param_1_00[0xb] = param_1;
  param_1_00[1] = DAT_03236690;
  *param_1_00 = 0;
  param_1_00[0xd] = 0;
  return;
}



void FUN_00875300(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int unaff_EDI;
  undefined local_8 [8];
  
  if (*(int *)(unaff_EDI + 0x14) != 0) {
    piVar2 = (int *)FUN_0081b3d8(local_8);
    if (*piVar2 != -4) {
      if (*piVar2 == 0) {
        FUN_00a3fb10();
      }
      iVar1 = *piVar2;
      if (*(uint *)(iVar1 + 0x18) < 8) {
        iVar3 = iVar1 + 4;
      }
      else {
        iVar3 = *(int *)(iVar1 + 4);
      }
      if ((uint)(iVar3 + *(int *)(iVar1 + 0x14) * 2) <= (uint)piVar2[1]) {
        FUN_00a3fb10();
      }
    }
    if (*(short *)piVar2[1] == 0x5c) {
      FUN_00851a60(*(int *)(unaff_EDI + 0x14) + -1);
    }
  }
  return;
}



undefined4 FUN_00875370(undefined4 param_1,undefined4 param_2)

{
  FUN_008529d0(param_1,param_2);
  return param_1;
}



wchar_t * FUN_00875390(undefined4 param_1,wchar_t param_2)

{
  int *piVar1;
  wchar_t *pwVar2;
  int iVar3;
  int local_c [2];
  char local_4;
  
  piVar1 = (int *)FUN_00432231(local_c);
  iVar3 = *piVar1;
  if (*(uint *)(iVar3 + 0x18) < 8) {
    iVar3 = iVar3 + 4;
  }
  else {
    iVar3 = *(int *)(iVar3 + 4);
  }
  pwVar2 = _wcschr((wchar_t *)(iVar3 + piVar1[1] * 2),param_2);
  if (local_4 == '\0') {
    return pwVar2;
  }
  if (local_c[0] == 0) {
    return pwVar2;
  }
  _free(*(void **)(local_c[0] + 0x1c));
  if (7 < *(uint *)(local_c[0] + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(local_c[0] + 4));
  }
  *(undefined4 *)(local_c[0] + 0x18) = 7;
  *(undefined4 *)(local_c[0] + 0x14) = 0;
  *(undefined2 *)(local_c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_c[0]);
}



void FUN_00875430(int param_1)

{
  short sVar1;
  int iVar2;
  short *psVar3;
  int iVar4;
  int *piVar5;
  uint uVar6;
  short *local_b0;
  undefined auStack_94 [3];
  char local_91;
  uint local_90;
  short **local_8c;
  int local_88;
  short local_84 [2];
  uint local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  uint local_5c;
  undefined4 local_4c;
  uint local_48;
  void *local_44;
  undefined local_34 [24];
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca144;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_94;
  ExceptionList = &local_c;
  local_8c = &local_b0;
  local_90 = 0;
  local_b0 = (short *)0x5c;
  local_88 = param_1;
  FUN_00852890(local_34);
  local_4 = 0;
  local_8c = (short **)0x0;
  uVar6 = 0;
  do {
    local_b0 = *(short **)((int)&PTR_u_HKEY_CLASSES_ROOT_03236694 + uVar6);
    if (local_b0 == (short *)0x0) {
      local_b0 = &DAT_00fae9c8;
    }
    local_6c = 7;
    local_70 = 0;
    local_80 = local_80 & 0xffff0000;
    psVar3 = local_b0;
    do {
      sVar1 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign();
    local_68 = (void *)0x0;
    local_90 = local_90 | 1;
    local_4 = CONCAT31(local_4._1_3_,1);
    local_b0 = (short *)0x875500;
    iVar2 = FUN_00850470();
    if (iVar2 == 0) {
LAB_0087556b:
      local_91 = '\x01';
    }
    else {
      local_b0 = *(short **)((int)&PTR_u_HKCR_03236698 + uVar6);
      if (local_b0 == (short *)0x0) {
        local_b0 = &DAT_00fae9c8;
      }
      local_5c = local_5c & 0xffff0000;
      local_48 = 7;
      local_4c = 0;
      psVar3 = local_b0;
      do {
        sVar1 = *psVar3;
        psVar3 = psVar3 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign();
      local_44 = (void *)0x0;
      local_90 = local_90 | 2;
      local_4 = 2;
      local_b0 = (short *)0x875563;
      iVar2 = FUN_00850470();
      local_91 = '\0';
      if (iVar2 == 0) goto LAB_0087556b;
    }
    if ((local_90 & 2) != 0) {
      local_90 = local_90 & 0xfffffffd;
      local_b0 = (short *)0x875586;
      _free(local_44);
      if (7 < local_48) {
                    // WARNING: Subroutine does not return
        local_b0 = (short *)&UNK_0087559a;
        FUN_00a3f6a1();
      }
      local_48 = 7;
      local_4c = 0;
      local_5c = local_5c & 0xffff0000;
    }
    local_4 = 0;
    if ((local_90 & 1) != 0) {
      local_90 = local_90 & 0xfffffffe;
      local_b0 = (short *)0x8755c9;
      _free(local_68);
      if (7 < local_6c) {
                    // WARNING: Subroutine does not return
        local_b0 = (short *)&UNK_008755dd;
        FUN_00a3f6a1();
      }
    }
    iVar2 = local_88;
    if (local_91 != '\0') break;
    local_8c = (short **)((int)local_8c + 1);
    uVar6 = uVar6 + 0xc;
  } while (uVar6 < 0x54);
  if (local_8c == (short **)0x7) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      local_b0 = (short *)0xfad940;
      FUN_00840480("..\\..\\src\\msw\\registry.cpp",0xbb,"wxRegKey::ExtractKeyName");
    }
    local_8c = (short **)0x0;
  }
  else {
    local_8c = (short **)&stack0xffffff54;
    local_b0 = local_84;
    iVar4 = FUN_00875370();
    local_4._0_1_ = 3;
    if (iVar2 != iVar4) {
      local_b0 = (short *)0x0;
      FID_conflict_assign(iVar4);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    local_b0 = (short *)0x875677;
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      local_b0 = (short *)&UNK_0087568b;
      FUN_00a3f6a1();
    }
    if (*(int *)(iVar2 + 0x14) != 0) {
      local_b0 = (short *)0x87569f;
      piVar5 = (int *)FUN_0081b3d8();
      if (*piVar5 != -4) {
        if (*piVar5 == 0) {
          FUN_00a3fb10();
        }
        iVar2 = *piVar5;
        if (*(uint *)(iVar2 + 0x18) < 8) {
          iVar4 = iVar2 + 4;
        }
        else {
          iVar4 = *(int *)(iVar2 + 4);
        }
        if ((uint)(iVar4 + *(int *)(iVar2 + 0x14) * 2) <= (uint)piVar5[1]) {
          FUN_00a3fb10();
        }
      }
      if (*(short *)piVar5[1] == 0x5c) {
        local_b0 = (short *)0x8756e6;
        FUN_00851a60();
      }
    }
  }
  local_b0 = (short *)0x8756f3;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    local_b0 = (short *)&UNK_0087570a;
    FUN_00a3f6a1();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_00875740(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca18b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[9] = 0;
  local_4 = 0;
  param_1_00[0xb] = param_2;
  iVar2 = FUN_00875430(param_1_00 + 2,uVar1);
  param_1_00[1] = (&DAT_03236690)[iVar2 * 3];
  *param_1_00 = 0;
  param_1_00[0xd] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_008757d0(undefined4 *param_1_00,int param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca18b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  param_1_00[9] = 0;
  local_4 = 0;
  param_1_00[0xb] = param_3;
  FUN_00875300(uVar1);
  param_1_00[1] = (&DAT_03236690)[param_1 * 3];
  *param_1_00 = 0;
  param_1_00[0xd] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00875860(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  FUN_008751a0(param_2,param_1,1);
  uVar1 = FUN_008854f0(param_1);
  FUN_0083fe90(param_1_00,uVar1);
  return;
}



undefined4 __thiscall FUN_008758a0(undefined4 param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_44 [20];
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca1c0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  FUN_0081c0f1(&DAT_00d2b618);
  local_4 = 0;
  uVar2 = FUN_00821558(local_30,local_44,param_1,uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  FID_conflict_append(uVar2,0,0xffffffff);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  local_4 = 0xffffffff;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00875970(undefined4 *param_1_00,int param_1,int param_2)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  iVar1 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca1eb;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  FID_conflict_assign(param_1 + 8,0,0xffffffff);
  param_1_00[9] = 0;
  local_4 = 0;
  param_1_00[0xb] = *(undefined4 *)(iVar1 + 0x2c);
  if (param_1_00[7] != 0) {
    if (*(int *)(param_2 + 0x14) != 0) {
      FUN_0081feb2(&param_1,0);
      if (param_1 == 0x5c) goto LAB_008759fa;
    }
    FID_conflict_append(1,0x5c);
  }
LAB_008759fa:
  FID_conflict_append(param_2,0,0xffffffff);
  FUN_00875300(uVar2);
  param_1_00[1] = *(undefined4 *)(iVar1 + 4);
  *param_1_00 = 0;
  param_1_00[0xd] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00875a40(int param_1_00,undefined4 param_1,char param_2)

{
  short *psVar1;
  int iVar2;
  undefined *puVar3;
  short *psVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6ec9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  iVar2 = FUN_00875100(*(undefined4 *)(param_1_00 + 4),DAT_0323f878 ^ (uint)&stack0xffffffe4);
  if (param_2 == '\0') {
    puVar3 = (&PTR_u_HKEY_CLASSES_ROOT_03236694)[iVar2 * 3];
  }
  else {
    puVar3 = (&PTR_u_HKCR_03236698)[iVar2 * 3];
  }
  FUN_004325b6(puVar3);
  local_4 = 0;
  if (*(int *)(param_1_00 + 0x1c) != 0) {
    psVar1 = &DAT_0305784c;
    do {
      psVar4 = psVar1;
      psVar1 = psVar4 + 1;
    } while (*psVar4 != 0);
    FUN_00473ccc(&DAT_0305784c,(int)(psVar4 + -0x182bc26) >> 1);
    FID_conflict_append(param_1_00 + 8,0,0xffffffff);
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_00875b20(void)

{
  short *psVar1;
  short *psVar2;
  undefined4 unaff_ESI;
  int unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bca229;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00875a40(unaff_ESI,1);
  local_4 = 0;
  if (*(int *)(unaff_EDI + 0x14) != 0) {
    psVar1 = &DAT_0305784c;
    do {
      psVar2 = psVar1;
      psVar1 = psVar2 + 1;
    } while (*psVar2 != 0);
    FUN_00473ccc(&DAT_0305784c,(int)(psVar2 + -0x182bc26) >> 1);
    FID_conflict_append(unaff_EDI,0,0xffffffff);
  }
  ExceptionList = local_c;
  return;
}



void FUN_00875bc0(void)

{
  undefined4 unaff_ESI;
  
  FUN_00875a40(unaff_ESI,1);
  return;
}



void __thiscall
FUN_00875be0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,int param_3,
            undefined4 param_4,char param_5)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccd68;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840a00(&param_3,param_2,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20();
  FUN_00978a00(param_1_00,param_1,uVar3,uVar4);
  iVar1 = param_3;
  if ((param_5 != '\0') && (param_3 != 0)) {
    _free(*(void **)(param_3 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_00875cb0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            uint param_4)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 param_8;
  uint param_9;
  void *param_10;
  int param_11;
  char param_12;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bca260;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00840a00(&stack0x00000030,param_2,2);
  FUN_00840990(&param_3,param_2,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20();
  uVar4 = FUN_00884e10(uVar4);
  FUN_00978a00(param_1_00,param_1,uVar3,uVar4);
  _free(param_10);
  iVar1 = param_11;
  if (7 < param_9) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
  param_9 = 7;
  param_8 = 0;
  param_4 = param_4 & 0xffff0000;
  if ((param_12 != '\0') && (param_11 != 0)) {
    _free(*(void **)(param_11 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_00875dd0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint param_9;
  void *param_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bca288;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840990(&param_3,param_2,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  FUN_00978a00(param_1_00,param_1,uVar2,uVar3);
  _free(param_10);
  if (7 < param_9) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00875e70(HKEY *param_1_00,char param_1)

{
  char cVar1;
  uint uVar2;
  HKEY pHVar3;
  int iVar4;
  undefined4 uVar5;
  HKEY local_108;
  DWORD local_104 [62];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bca7d7;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == '\0') {
    if (*param_1_00 == (HKEY)0x0) {
      cVar1 = FUN_00875250();
      if (cVar1 == '\0') goto LAB_00875ecb;
    }
LAB_0087608e:
    uVar5 = 0;
  }
  else {
LAB_00875ecb:
    if (*param_1_00 == (HKEY)0x0) {
      uVar2 = FUN_00875150();
      if (param_1_00[8] < (HKEY)0x8) {
        pHVar3 = (HKEY)(param_1_00 + 3);
      }
      else {
        pHVar3 = param_1_00[3];
      }
      pHVar3 = (HKEY)RegCreateKeyExW(param_1_00[1],(LPCWSTR)pHVar3,0,(LPWSTR)0x0,0,uVar2 | 0xf003f,
                                     (LPSECURITY_ATTRIBUTES)0x0,&local_108,local_104);
      param_1_00[0xd] = pHVar3;
      if (pHVar3 != (HKEY)0x0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(1);
        if (cVar1 != '\0') {
          FUN_004325b6();
          uStack_4 = 0;
          FUN_0043c211();
          uStack_4 = CONCAT31(uStack_4._1_3_,1);
          iVar4 = FUN_0084a340();
          if (iVar4 == 0) {
            FUN_0084d360();
          }
          else {
            FUN_0084f210();
          }
          FUN_008433c0();
          uStack_4._0_1_ = 2;
          FUN_0043c211();
          uStack_4._0_1_ = 3;
          FUN_00875a40();
          FUN_00432231();
          uStack_4._0_1_ = 5;
          FUN_008423d0();
          uStack_4._0_1_ = 6;
          GetLastError();
          FUN_0084d140();
          uStack_4._0_1_ = 7;
          FUN_00875be0();
          uStack_4._0_1_ = 4;
          FUN_00842440();
          FUN_0040159c();
          FUN_0040159c();
          uStack_4 = CONCAT31(uStack_4._1_3_,1);
          FUN_0081b5bc();
          FUN_0040159c();
          FUN_0040159c();
        }
        goto LAB_0087608e;
      }
      *param_1_00 = local_108;
    }
    uVar5 = 1;
  }
  ExceptionList = local_c;
  return uVar5;
}



undefined4 __fastcall FUN_008760c0(HKEY *param_1)

{
  char cVar1;
  HKEY pHVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bca2f7;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1 != (HKEY)0x0) {
    pHVar2 = (HKEY)RegCloseKey(*param_1);
    param_1[0xd] = pHVar2;
    *param_1 = (HKEY)0x0;
    if (pHVar2 != (HKEY)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        uStack_4 = 0;
        FUN_0043c211();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        uStack_4._0_1_ = 2;
        FUN_0043c211();
        uStack_4._0_1_ = 3;
        FUN_00875a40();
        FUN_00432231();
        uStack_4._0_1_ = 5;
        FUN_008423d0();
        uStack_4._0_1_ = 6;
        GetLastError();
        FUN_0084d140();
        uStack_4._0_1_ = 7;
        FUN_00875be0();
        uStack_4._0_1_ = 4;
        FUN_00842440();
        FUN_0040159c();
        FUN_0040159c();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      ExceptionList = local_c;
      return 0;
    }
  }
  ExceptionList = local_c;
  return 1;
}



void __thiscall FUN_008762c0(HKEY *param_1_00,undefined4 param_1,DWORD *param_2)

{
  WCHAR WVar1;
  DWORD dwIndex;
  char cVar2;
  HKEY pHVar3;
  WCHAR *pWVar4;
  undefined4 uStack_940;
  undefined4 *puStack_90c;
  DWORD local_908 [62];
  WCHAR local_810 [1024];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bca36d;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&puStack_90c;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 == (HKEY)0x0)) {
    FUN_008402e0();
  }
  dwIndex = *param_2;
  if (dwIndex != 0xffffffff) {
    *param_2 = dwIndex + 1;
    local_908[0] = 0x400;
    uStack_940 = 0x87636d;
    pHVar3 = (HKEY)RegEnumValueW(*param_1_00,dwIndex,local_810,local_908,(LPDWORD)0x0,(LPDWORD)0x0,
                                 (LPBYTE)0x0,(LPDWORD)0x0);
    param_1_00[0xd] = pHVar3;
    if (pHVar3 == (HKEY)0x0) {
      pWVar4 = local_810;
      do {
        WVar1 = *pWVar4;
        pWVar4 = pWVar4 + 1;
      } while (WVar1 != L'\0');
      FID_conflict_assign();
    }
    else if (pHVar3 == (HKEY)0x103) {
      param_1_00[0xd] = (HKEY)0x0;
      *param_2 = 0xffffffff;
    }
    else {
      puStack_90c = &uStack_940;
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(1);
      if (cVar2 != '\0') {
        FUN_004325b6();
        uStack_4 = 0;
        FUN_0043c211();
        uStack_4._0_1_ = 1;
        FUN_00820bf9();
        FUN_008433c0();
        uStack_4._0_1_ = 2;
        FUN_0043c211();
        uStack_4._0_1_ = 3;
        FUN_00875a40();
        puStack_90c = (undefined4 *)&stack0xfffff6d8;
        FUN_00432231();
        uStack_4._0_1_ = 5;
        uStack_940 = 0x87646f;
        FUN_008423d0();
        uStack_4._0_1_ = 6;
        GetLastError();
        FUN_0084d140();
        uStack_4._0_1_ = 7;
        FUN_00875be0();
        uStack_4._0_1_ = 4;
        FUN_00842440();
        FUN_0040159c();
        FUN_0040159c();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00876550(HKEY *param_1_00,undefined4 param_1,DWORD *param_2)

{
  WCHAR WVar1;
  DWORD dwIndex;
  char cVar2;
  HKEY pHVar3;
  WCHAR *pWVar4;
  undefined4 uStack_348;
  undefined4 uStack_344;
  char *pcStack_340;
  DWORD DStack_33c;
  char *pcStack_338;
  undefined4 *apuStack_314 [15];
  undefined auStack_2d8 [188];
  WCHAR local_21c [262];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bca3ed;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)apuStack_314;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 == (HKEY)0x0)) {
    pcStack_338 = "..\\..\\src\\msw\\registry.cpp";
    DStack_33c = 0x8765c3;
    FUN_008402e0();
  }
  dwIndex = *param_2;
  if (dwIndex != 0xffffffff) {
    *param_2 = dwIndex + 1;
    pcStack_338 = (char *)0x8765ed;
    pHVar3 = (HKEY)RegEnumKeyW(*param_1_00,dwIndex,local_21c,0x105);
    param_1_00[0xd] = pHVar3;
    if (pHVar3 == (HKEY)0x0) {
      pWVar4 = local_21c;
      do {
        WVar1 = *pWVar4;
        pWVar4 = pWVar4 + 1;
      } while (WVar1 != L'\0');
      FID_conflict_assign();
    }
    else if (pHVar3 == (HKEY)0x103) {
      param_1_00[0xd] = (HKEY)0x0;
      *param_2 = 0xffffffff;
    }
    else {
      apuStack_314[0] = &uStack_348;
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(1);
      if (cVar2 != '\0') {
        FUN_004325b6();
        uStack_4 = 0;
        FUN_0043c211();
        uStack_4._0_1_ = 1;
        FUN_00820bf9();
        FUN_008433c0();
        uStack_4._0_1_ = 2;
        FUN_0043c211();
        uStack_4._0_1_ = 3;
        FUN_00875a40();
        apuStack_314[0] = (undefined4 *)&stack0xfffffcd0;
        pcStack_338 = (char *)0x8766c7;
        FUN_00432231();
        pcStack_338 = "wxRegKey::GetNextKey";
        DStack_33c = 0x48a;
        pcStack_340 = "..\\..\\src\\msw\\registry.cpp";
        uStack_344 = 1;
        uStack_4._0_1_ = 5;
        uStack_348 = 0x8766f0;
        FUN_008423d0();
        uStack_4._0_1_ = 6;
        pcStack_338 = (char *)param_1_00[0xd];
        DStack_33c = 0x876708;
        DStack_33c = GetLastError();
        pcStack_340 = auStack_2d8;
        uStack_344 = 0x876715;
        FUN_0084d140();
        uStack_4._0_1_ = 7;
        DStack_33c = 0x876724;
        FUN_00875be0();
        uStack_4._0_1_ = 4;
        FUN_00842440();
        FUN_0040159c();
        FUN_0040159c();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_008767d0(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd908b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008760c0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  _free(*(void **)(param_1 + 0x24));
  if (7 < *(uint *)(param_1 + 0x20)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
  }
  *(undefined4 *)(param_1 + 0x20) = 7;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(undefined2 *)(param_1 + 0xc) = 0;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00876850(int param_1_00,int param_1)

{
  int iVar1;
  
  FUN_008760c0();
  if (param_1_00 + 8 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  iVar1 = FUN_00875430(param_1_00 + 8);
  *(undefined4 *)(param_1_00 + 4) = (&DAT_03236690)[iVar1 * 3];
  return;
}



void __thiscall FUN_00876890(int param_1_00,int param_1,int param_2)

{
  FUN_008760c0();
  if (param_1_00 + 8 != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  FUN_00875300();
  *(undefined4 *)(param_1_00 + 4) = (&DAT_03236690)[param_1 * 3];
  return;
}



void __thiscall FUN_008768d0(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  FUN_008760c0();
  FUN_00432156();
  iVar1 = param_1;
  FID_conflict_append(param_1 + 8,0,0xffffffff);
  iVar2 = param_2;
  if (*(int *)(param_2 + 0x14) != 0) {
    FUN_0081feb2(&param_1,0);
    if (param_1 != 0x5c) {
      FID_conflict_append(1,0x5c);
    }
  }
  FID_conflict_append(iVar2,0,0xffffffff);
  FUN_00875300();
  *(undefined4 *)(param_1_00 + 4) = *(undefined4 *)(iVar1 + 4);
  return;
}



undefined4 __thiscall FUN_00876940(HKEY *param_1_00,HKEY param_1)

{
  void **ppvVar1;
  char cVar2;
  uint uVar3;
  HKEY pHVar4;
  int iVar5;
  HKEY local_104 [62];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bca467;
  local_c = ExceptionList;
  ppvVar1 = &local_c;
  if (*param_1_00 != (HKEY)0x0) {
    if ((int)param_1 <= (int)param_1_00[0xc]) {
      return 1;
    }
    ExceptionList = &local_c;
    FUN_008760c0();
    ppvVar1 = (void **)ExceptionList;
  }
  ExceptionList = ppvVar1;
  uVar3 = FUN_00875150();
  if (param_1_00[8] < (HKEY)0x8) {
    pHVar4 = (HKEY)(param_1_00 + 3);
  }
  else {
    pHVar4 = param_1_00[3];
  }
  pHVar4 = (HKEY)RegOpenKeyExW(param_1_00[1],(LPCWSTR)pHVar4,0,
                               uVar3 | (-(uint)(param_1 != (HKEY)0x0) & 0xd0026) + 0x20019,local_104
                              );
  param_1_00[0xd] = pHVar4;
  if (pHVar4 == (HKEY)0x0) {
    *param_1_00 = local_104[0];
    param_1_00[0xc] = param_1;
    ExceptionList = local_c;
    return 1;
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar2 = FUN_00846b30(1);
  if (cVar2 != '\0') {
    FUN_004325b6();
    uStack_4 = 0;
    FUN_0043c211();
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    iVar5 = FUN_0084a340();
    if (iVar5 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    uStack_4._0_1_ = 2;
    FUN_0043c211();
    uStack_4._0_1_ = 3;
    FUN_00875a40();
    FUN_00432231();
    uStack_4._0_1_ = 5;
    FUN_008423d0();
    uStack_4._0_1_ = 6;
    GetLastError();
    FUN_0084d140();
    uStack_4._0_1_ = 7;
    FUN_00875be0();
    uStack_4._0_1_ = 4;
    FUN_00842440();
    FUN_0040159c();
    FUN_0040159c();
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    FUN_0081b5bc();
    FUN_0040159c();
    FUN_0040159c();
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_00876b70(HKEY *param_1_00,int param_1)

{
  char cVar1;
  LPCWSTR lpValueName;
  HKEY pHVar2;
  DWORD DVar3;
  undefined *puVar4;
  undefined auStack_100 [20];
  undefined auStack_ec [224];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bca4e2;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_00876940();
  if (cVar1 != '\0') {
    if (*(int *)(param_1 + 0x14) == 0) {
      lpValueName = (LPCWSTR)0x0;
    }
    else if (*(uint *)(param_1 + 0x18) < 8) {
      lpValueName = (LPCWSTR)(param_1 + 4);
    }
    else {
      lpValueName = *(LPCWSTR *)(param_1 + 4);
    }
    pHVar2 = (HKEY)RegDeleteValueW(*param_1_00,lpValueName);
    param_1_00[0xd] = pHVar2;
    if ((pHVar2 == (HKEY)0x0) || (pHVar2 == (HKEY)0x2)) {
      ExceptionList = local_c;
      return 1;
    }
    FUN_0043c211();
    cVar1 = FUN_00846b30();
    if (cVar1 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4._0_1_ = 1;
      FUN_00820bf9();
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_0043c211();
      uStack_4._0_1_ = 3;
      FUN_00875a40();
      FUN_00432231();
      uStack_4._0_1_ = 5;
      FUN_004325a0(param_1);
      uStack_4._0_1_ = 6;
      FUN_008423d0(1,"..\\..\\src\\msw\\registry.cpp",0x325,"wxRegKey::DeleteValue",&DAT_00d25fa0);
      uStack_4._0_1_ = 7;
      pHVar2 = param_1_00[0xd];
      puVar4 = auStack_100;
      DVar3 = GetLastError();
      FUN_0084d140(auStack_ec,DVar3);
      uStack_4._0_1_ = 8;
      FUN_00875cb0(pHVar2,puVar4);
      uStack_4._0_1_ = 4;
      FUN_00842440();
      FUN_0040159c();
      FUN_0040159c();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  return 0;
}



uint __thiscall FUN_00876d80(HKEY *param_1_00,int param_1)

{
  undefined uVar1;
  uint uVar2;
  DWORD DVar3;
  uint uVar4;
  LPCWSTR lpValueName;
  undefined3 extraout_var;
  undefined3 uVar5;
  bool bVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca518;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (DAT_032bdb68 == 0) {
LAB_00876dcf:
    uVar1 = DAT_03235e94;
    DAT_03235e94 = 0;
  }
  else {
    DVar3 = GetCurrentThreadId();
    if (DVar3 == DAT_032bdb68) goto LAB_00876dcf;
    uVar1 = FUN_00842f30(0);
  }
  local_4 = 0;
  uVar4 = FUN_00876940(0);
  if ((char)uVar4 == '\0') {
    local_4 = 0xffffffff;
    if (DAT_032bdb68 != 0) {
      uVar4 = GetCurrentThreadId();
      if (uVar4 != DAT_032bdb68) {
        uVar2 = FUN_00842f30(uVar1,uVar2);
        ExceptionList = local_c;
        return uVar2 & 0xffffff00;
      }
    }
    DAT_03235e94 = uVar1;
    ExceptionList = local_c;
    return uVar4 & 0xffffff00;
  }
  if (*(int *)(param_1 + 0x14) == 0) {
    lpValueName = (LPCWSTR)0x0;
  }
  else if (*(uint *)(param_1 + 0x18) < 8) {
    lpValueName = (LPCWSTR)(param_1 + 4);
  }
  else {
    lpValueName = *(LPCWSTR *)(param_1 + 4);
  }
  DVar3 = RegQueryValueExW(*param_1_00,lpValueName,(LPDWORD)0x0,(LPDWORD)0x0,(LPBYTE)0x0,
                           (LPDWORD)0x0);
  bVar6 = DVar3 == 0;
  local_4 = 0xffffffff;
  if (DAT_032bdb68 != 0) {
    DVar3 = GetCurrentThreadId();
    if (DVar3 != DAT_032bdb68) {
      FUN_00842f30(uVar1);
      uVar5 = extraout_var;
      goto LAB_00876ec0;
    }
  }
  uVar5 = (undefined3)(DVar3 >> 8);
  DAT_03235e94 = uVar1;
LAB_00876ec0:
  ExceptionList = local_c;
  return CONCAT31(uVar5,bVar6);
}



undefined __fastcall FUN_00876ee0(undefined4 *param_1)

{
  undefined uVar1;
  char cVar2;
  undefined uVar3;
  uint uVar4;
  DWORD DVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca518;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if ((DAT_032bdb68 == 0) || (DVar5 = GetCurrentThreadId(), DVar5 == DAT_032bdb68)) {
    uVar1 = DAT_03235e94;
    DAT_03235e94 = 0;
  }
  else {
    uVar1 = FUN_00842f30(0);
  }
  local_4 = 0;
  cVar2 = FUN_00876940(0);
  if (cVar2 != '\0') {
    uVar3 = FUN_00875250(*param_1,param_1[0xb],uVar4);
    local_4 = 0xffffffff;
    if ((DAT_032bdb68 != 0) && (DVar5 = GetCurrentThreadId(), DVar5 != DAT_032bdb68)) {
      FUN_00842f30(uVar1);
      uVar1 = DAT_03235e94;
    }
    DAT_03235e94 = uVar1;
    ExceptionList = local_c;
    return uVar3;
  }
  local_4 = 0xffffffff;
  if ((DAT_032bdb68 != 0) && (DVar5 = GetCurrentThreadId(), DVar5 != DAT_032bdb68)) {
    FUN_00842f30(uVar1);
    ExceptionList = local_c;
    return 0;
  }
  DAT_03235e94 = uVar1;
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_00877020(HKEY *param_1_00,int param_1)

{
  char cVar1;
  LPCWSTR lpValueName;
  HKEY pHVar2;
  int iVar3;
  DWORD local_104 [62];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bca467;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_00876940();
  if (cVar1 != '\0') {
    if (*(int *)(param_1 + 0x14) == 0) {
      lpValueName = (LPCWSTR)0x0;
    }
    else if (*(uint *)(param_1 + 0x18) < 8) {
      lpValueName = (LPCWSTR)(param_1 + 4);
    }
    else {
      lpValueName = *(LPCWSTR *)(param_1 + 4);
    }
    pHVar2 = (HKEY)RegQueryValueExW(*param_1_00,lpValueName,(LPDWORD)0x0,local_104,(LPBYTE)0x0,
                                    (LPDWORD)0x0);
    param_1_00[0xd] = pHVar2;
    if (pHVar2 == (HKEY)0x0) {
      ExceptionList = local_c;
      return local_104[0];
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_0043c211();
      uStack_4._0_1_ = 3;
      FUN_00875a40();
      FUN_00432231();
      uStack_4._0_1_ = 5;
      FUN_008423d0();
      uStack_4._0_1_ = 6;
      GetLastError();
      FUN_0084d140();
      uStack_4._0_1_ = 7;
      FUN_00875be0();
      uStack_4._0_1_ = 4;
      FUN_00842440();
      FUN_0040159c();
      FUN_0040159c();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_00877240(HKEY *param_1_00,int param_1)

{
  char cVar1;
  LPCWSTR lpValueName;
  HKEY pHVar2;
  int iVar3;
  DWORD DVar4;
  undefined *puVar5;
  uint uStack_c4;
  void *pvStack_c0;
  undefined auStack_b8 [4];
  uint uStack_b4;
  undefined4 uStack_a4;
  uint uStack_a0;
  void *pvStack_9c;
  undefined auStack_94 [44];
  uint uStack_68;
  void *pvStack_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bca57c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_00876940();
  if (cVar1 != '\0') {
    if (*(int *)(param_1 + 0x14) == 0) {
      lpValueName = (LPCWSTR)0x0;
    }
    else if (*(uint *)(param_1 + 0x18) < 8) {
      lpValueName = (LPCWSTR)(param_1 + 4);
    }
    else {
      lpValueName = *(LPCWSTR *)(param_1 + 4);
    }
    pHVar2 = (HKEY)RegSetValueExW(*param_1_00,lpValueName,0,4,&stack0x00000008,4);
    param_1_00[0xd] = pHVar2;
    if (pHVar2 == (HKEY)0x0) {
      ExceptionList = local_c;
      return 1;
    }
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(1);
  if (cVar1 != '\0') {
    FUN_004325b6();
    uStack_4 = 0;
    FUN_0043c211();
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    uStack_4._0_1_ = 2;
    FUN_0043c211();
    uStack_4._0_1_ = 3;
    FUN_00875b20();
    uStack_4._0_1_ = 4;
    FUN_008423d0(1,"..\\..\\src\\msw\\registry.cpp",0x380,"wxRegKey::SetValue",&DAT_00d25fa0);
    uStack_4._0_1_ = 5;
    pHVar2 = param_1_00[0xd];
    puVar5 = auStack_94;
    DVar4 = GetLastError();
    FUN_0084d140(auStack_b8,DVar4);
    uStack_4._0_1_ = 6;
    FUN_00875dd0(pHVar2,puVar5);
    uStack_4._0_1_ = 3;
    FUN_00842440();
    _free(pvStack_9c);
    if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_a0 = 7;
    uStack_a4 = 0;
    uStack_b4 = uStack_b4 & 0xffff0000;
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    FUN_0081b5bc();
    _free(pvStack_c0);
    if (7 < uStack_c4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(pvStack_64);
    if (7 < uStack_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_008774b0(HKEY *param_1_00,int param_1,int *param_2)

{
  char cVar1;
  HKEY pHVar2;
  int iVar3;
  DWORD DVar4;
  LPCWSTR lpValueName;
  undefined *puVar5;
  uint uStack_c4;
  void *pvStack_c0;
  undefined auStack_b8 [4];
  uint uStack_b4;
  undefined4 uStack_a4;
  uint uStack_a0;
  void *pvStack_9c;
  undefined auStack_94 [44];
  uint uStack_68;
  void *pvStack_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bca57c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_00876940();
  if (cVar1 != '\0') {
    if (*(int *)(param_1 + 0x14) == 0) {
      lpValueName = (LPCWSTR)0x0;
    }
    else if (*(uint *)(param_1 + 0x18) < 8) {
      lpValueName = (LPCWSTR)(param_1 + 4);
    }
    else {
      lpValueName = *(LPCWSTR *)(param_1 + 4);
    }
    pHVar2 = (HKEY)RegSetValueExW(*param_1_00,lpValueName,0,3,*(BYTE **)*param_2,
                                  (DWORD)((BYTE **)*param_2)[2]);
    param_1_00[0xd] = pHVar2;
    if (pHVar2 == (HKEY)0x0) {
      ExceptionList = local_c;
      return 1;
    }
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(1);
  if (cVar1 != '\0') {
    FUN_004325b6();
    uStack_4 = 0;
    FUN_0043c211();
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    uStack_4._0_1_ = 2;
    FUN_0043c211();
    uStack_4._0_1_ = 3;
    FUN_00875b20();
    uStack_4._0_1_ = 4;
    FUN_008423d0(1,"..\\..\\src\\msw\\registry.cpp",0x3ac,"wxRegKey::SetValue",&DAT_00d25fa0);
    uStack_4._0_1_ = 5;
    pHVar2 = param_1_00[0xd];
    puVar5 = auStack_94;
    DVar4 = GetLastError();
    FUN_0084d140(auStack_b8,DVar4);
    uStack_4._0_1_ = 6;
    FUN_00875dd0(pHVar2,puVar5);
    uStack_4._0_1_ = 3;
    FUN_00842440();
    _free(pvStack_9c);
    if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_a0 = 7;
    uStack_a4 = 0;
    uStack_b4 = uStack_b4 & 0xffff0000;
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    FUN_0081b5bc();
    _free(pvStack_c0);
    if (7 < uStack_c4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(pvStack_64);
    if (7 < uStack_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_00877730(HKEY *param_1_00,int param_1)

{
  char cVar1;
  LPCWSTR pWVar2;
  HKEY pHVar3;
  LPBYTE lpData;
  int iVar4;
  undefined4 uStack_144;
  undefined4 uStack_140;
  char *pcStack_13c;
  DWORD local_10c;
  DWORD local_108;
  undefined4 *local_104;
  undefined local_a4 [152];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca5e7;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_00876940();
  if (cVar1 != '\0') {
    if (*(int *)(param_1 + 0x14) == 0) {
      pWVar2 = (LPCWSTR)0x0;
    }
    else if (*(uint *)(param_1 + 0x18) < 8) {
      pWVar2 = (LPCWSTR)(param_1 + 4);
    }
    else {
      pWVar2 = *(LPCWSTR *)(param_1 + 4);
    }
    pcStack_13c = (char *)0x8777a7;
    pHVar3 = (HKEY)RegQueryValueExW(*param_1_00,pWVar2,(LPDWORD)0x0,&local_108,(LPBYTE)0x0,
                                    &local_10c);
    param_1_00[0xd] = pHVar3;
    if (pHVar3 == (HKEY)0x0) {
      if (local_10c != 0) {
        lpData = (LPBYTE)FUN_0084a2f0();
        if (*(int *)(param_1 + 0x14) == 0) {
          pWVar2 = (LPCWSTR)0x0;
        }
        else if (*(uint *)(param_1 + 0x18) < 8) {
          pWVar2 = (LPCWSTR)(param_1 + 4);
        }
        else {
          pWVar2 = *(LPCWSTR *)(param_1 + 4);
        }
        pcStack_13c = (char *)0x8777f0;
        pHVar3 = (HKEY)RegQueryValueExW(*param_1_00,pWVar2,(LPDWORD)0x0,&local_108,lpData,&local_10c
                                       );
        param_1_00[0xd] = pHVar3;
      }
      FUN_0084a290();
    }
    if (param_1_00[0xd] == (HKEY)0x0) {
      ExceptionList = local_c;
      return 1;
    }
    local_104 = &uStack_144;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_0043c211();
      local_4._0_1_ = 3;
      FUN_00875a40();
      local_104 = (undefined4 *)&stack0xfffffed4;
      FUN_00432231();
      pcStack_13c = "..\\..\\src\\msw\\registry.cpp";
      uStack_140 = 1;
      local_4._0_1_ = 5;
      uStack_144 = 0x87790b;
      FUN_008423d0();
      local_4._0_1_ = 6;
      GetLastError();
      pcStack_13c = local_a4;
      uStack_140 = 0x877933;
      FUN_0084d140();
      local_4._0_1_ = 7;
      FUN_00875be0();
      local_4._0_1_ = 4;
      FUN_00842440();
      FUN_0040159c();
      FUN_0040159c();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_008779b0(HKEY *param_1_00,int param_1,int param_2)

{
  char cVar1;
  LPCWSTR lpValueName;
  HKEY pHVar2;
  int iVar3;
  DWORD DVar4;
  BYTE *lpData;
  undefined *puVar5;
  uint uStack_c4;
  void *pvStack_c0;
  undefined auStack_b8 [4];
  uint uStack_b4;
  undefined4 uStack_a4;
  uint uStack_a0;
  void *pvStack_9c;
  undefined auStack_94 [44];
  uint uStack_68;
  void *pvStack_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bca57c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_00876940();
  if (cVar1 != '\0') {
    if (*(uint *)(param_2 + 0x18) < 8) {
      lpData = (BYTE *)(param_2 + 4);
    }
    else {
      lpData = *(BYTE **)(param_2 + 4);
    }
    if (*(int *)(param_1 + 0x14) == 0) {
      lpValueName = (LPCWSTR)0x0;
    }
    else if (*(uint *)(param_1 + 0x18) < 8) {
      lpValueName = (LPCWSTR)(param_1 + 4);
    }
    else {
      lpValueName = *(LPCWSTR *)(param_1 + 4);
    }
    pHVar2 = (HKEY)RegSetValueExW(*param_1_00,lpValueName,0,1,lpData,
                                  *(int *)(param_2 + 0x14) * 2 + 2);
    param_1_00[0xd] = pHVar2;
    if (pHVar2 == (HKEY)0x0) {
      ExceptionList = local_c;
      return 1;
    }
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(1);
  if (cVar1 != '\0') {
    FUN_004325b6();
    uStack_4 = 0;
    FUN_0043c211();
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    uStack_4._0_1_ = 2;
    FUN_0043c211();
    uStack_4._0_1_ = 3;
    FUN_00875b20();
    uStack_4._0_1_ = 4;
    FUN_008423d0(1,"..\\..\\src\\msw\\registry.cpp",0x42a,"wxRegKey::SetValue",&DAT_00d25fa0);
    uStack_4._0_1_ = 5;
    pHVar2 = param_1_00[0xd];
    puVar5 = auStack_94;
    DVar4 = GetLastError();
    FUN_0084d140(auStack_b8,DVar4);
    uStack_4._0_1_ = 6;
    FUN_00875dd0(pHVar2,puVar5);
    uStack_4._0_1_ = 3;
    FUN_00842440();
    _free(pvStack_9c);
    if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_a0 = 7;
    uStack_a4 = 0;
    uStack_b4 = uStack_b4 & 0xffff0000;
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    FUN_0081b5bc();
    _free(pvStack_c0);
    if (7 < uStack_c4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(pvStack_64);
    if (7 < uStack_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_00877c40(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_00877020(param_1);
  return CONCAT31((int3)(iVar1 - 4U >> 8),iVar1 - 4U < 2);
}



void __fastcall FUN_00877c60(int param_1)

{
  uint uVar1;
  char cVar2;
  char cVar3;
  DWORD DVar4;
  int iVar5;
  code *pcVar6;
  LPCWSTR lpSubKey;
  uint uVar7;
  char *pcVar8;
  undefined4 uStack_25c;
  undefined4 uStack_258;
  char *pcStack_254;
  DWORD DStack_250;
  char *pcStack_24c;
  char **ppcStack_248;
  char *pcStack_244;
  undefined auStack_224 [3];
  char local_221;
  undefined4 local_220;
  int local_21c;
  uint local_214;
  undefined local_208 [4];
  uint local_204;
  undefined4 local_1f4;
  uint local_1f0;
  void *local_1ec;
  undefined local_1e4 [4];
  uint local_1e0;
  undefined4 local_1d0;
  uint local_1cc;
  void *local_1c8;
  undefined auStack_154 [236];
  undefined4 local_68;
  undefined4 local_58;
  uint local_54;
  void *local_50;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca6e3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_224;
  ExceptionList = &local_c;
  if ((DAT_032bdb68 == 0) || (DVar4 = GetCurrentThreadId(), DVar4 == DAT_032bdb68)) {
    cVar2 = DAT_03235e94;
    DAT_03235e94 = '\0';
  }
  else {
    cVar2 = FUN_00842f30();
  }
  local_220 = (char **)CONCAT31(local_220._1_3_,cVar2);
  local_4 = 0;
  local_221 = cVar2;
  cVar3 = FUN_00876940();
  local_4 = 0xffffffff;
  if (cVar3 == '\0') {
    if ((DAT_032bdb68 != 0) && (DVar4 = GetCurrentThreadId(), DVar4 != DAT_032bdb68)) {
      FUN_00842f30();
      cVar2 = DAT_03235e94;
    }
    goto LAB_00878436;
  }
  if ((DAT_032bdb68 != 0) && (DVar4 = GetCurrentThreadId(), DVar4 != DAT_032bdb68)) {
    FUN_00842f30();
    cVar2 = DAT_03235e94;
  }
  DAT_03235e94 = cVar2;
  if (*(int *)(param_1 + 0x1c) == 0) {
LAB_00878302:
    local_220 = (char **)&uStack_25c;
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(1);
    cVar2 = DAT_03235e94;
    if (cVar3 != '\0') {
      FUN_004325b6();
      local_4 = 1;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,2);
      iVar5 = FUN_0084a340();
      if (iVar5 == 0) {
        FUN_0084d360();
      }
      else {
        pcStack_244 = (char *)0x87837d;
        FUN_0084f210();
      }
      FUN_008433c0();
      local_220 = (char **)&uStack_25c;
      local_4._0_1_ = 3;
      FUN_00875bc0();
      local_4._0_1_ = 4;
      FUN_008423d0(1,"..\\..\\src\\msw\\registry.cpp",0x2d7,"wxRegKey::DeleteSelf",&DAT_00d25fa0);
      local_4._0_1_ = 6;
      FUN_00848780(local_1e4);
      local_4._0_1_ = 3;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
      cVar2 = DAT_03235e94;
    }
  }
  else {
    if (*(int *)(param_1 + 4) != DAT_03236690) {
      pcStack_244 = (char *)0x877d78;
      iVar5 = FUN_00850910();
      if (iVar5 == -1) goto LAB_00878302;
    }
    FUN_00853ce0();
    local_54 = 7;
    local_58 = 0;
    local_68 = (uint)local_68._2_2_ << 0x10;
    local_50 = (void *)0x0;
    local_4 = 8;
    cVar2 = FUN_00876940();
    if (cVar2 != '\0') {
      local_220 = (char **)0x0;
      pcStack_244 = (char *)0x877de2;
      cVar2 = FUN_00876550();
      while (cVar2 != '\0') {
        pcStack_244 = (char *)0x877df9;
        FUN_00854700();
        pcStack_244 = (char *)0x877e0d;
        cVar2 = FUN_00876550();
      }
    }
    uVar1 = local_214;
    uVar7 = 0;
    if (local_214 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_214 <= uVar7)) {
          pcStack_244 = "wxArrayString::Item";
          ppcStack_248 = (char **)0xb3;
          pcStack_24c = "d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h";
          DStack_250 = 0x877f9f;
          FUN_00840480();
        }
        pcStack_244 = (char *)0x877fb6;
        FUN_00875970();
        local_4._0_1_ = 9;
        cVar2 = FUN_00877c60();
        local_4 = CONCAT31(local_4._1_3_,8);
        if (cVar2 == '\0') {
          FUN_008767d0();
          _free(local_50);
          if (7 < local_54) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          goto LAB_00878035;
        }
        FUN_008767d0();
        uVar7 = uVar7 + 1;
      } while (uVar7 < uVar1);
    }
    FUN_008760c0();
    FUN_004325b6();
    local_4._0_1_ = 10;
    local_21c = 0;
    pcStack_244 = (char *)0x877e52;
    FUN_0089ed30();
    local_4._0_1_ = 0xc;
    _free(local_1c8);
    if (7 < local_1cc) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_1e0 = local_1e0 & 0xffff0000;
    local_1cc = 7;
    local_1d0 = 0;
    FUN_004325b6();
    local_4._0_1_ = 0xd;
    pcStack_244 = (char *)0x877ebc;
    FUN_0089ecd0();
    local_4._0_1_ = 0xc;
    _free(local_1ec);
    if (7 < local_1f0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (local_221 == '\0') {
      if (*(uint *)(param_1 + 0x20) < 8) {
        lpSubKey = (LPCWSTR)(param_1 + 0xc);
      }
      else {
        lpSubKey = *(LPCWSTR *)(param_1 + 0xc);
      }
      pcStack_244 = (char *)0x87808f;
      iVar5 = RegDeleteKeyW(*(HKEY *)(param_1 + 4),lpSubKey);
    }
    else {
      FUN_004325b6();
      local_4._0_1_ = 0xe;
      pcStack_244 = (char *)0x877f13;
      pcVar6 = (code *)FUN_0089f060();
      local_4._0_1_ = 0xc;
      _free(local_1ec);
      if (7 < local_1f0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_1f0 = 7;
      local_1f4 = 0;
      local_204 = local_204 & 0xffff0000;
      if (*(uint *)(param_1 + 0x20) < 8) {
        pcVar8 = (char *)(param_1 + 0xc);
      }
      else {
        pcVar8 = *(char **)(param_1 + 0xc);
      }
      FUN_00875150();
      ppcStack_248 = *(char ***)(param_1 + 4);
      pcStack_24c = (char *)0x87806e;
      pcStack_244 = pcVar8;
      iVar5 = (*pcVar6)();
    }
    *(int *)(param_1 + 0x34) = iVar5;
    if ((iVar5 == 0) || (iVar5 == 2)) {
      local_4 = CONCAT31(local_4._1_3_,8);
      if (local_21c != 0) {
        FUN_0089f290();
        local_21c = 0;
      }
      _free(local_50);
      if (7 < local_54) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_54 = 7;
      local_58 = 0;
      local_68 = local_68 & 0xffff0000;
      local_4 = 0xffffffff;
      FUN_00853f30();
      cVar2 = DAT_03235e94;
    }
    else {
      local_220 = (char **)&uStack_25c;
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(1);
      if (cVar2 != '\0') {
        FUN_004325b6();
        local_4._0_1_ = 0xf;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,0x10);
        iVar5 = FUN_0084a340();
        if (iVar5 == 0) {
          FUN_0084d360();
        }
        else {
          pcStack_244 = (char *)0x878116;
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 0x11;
        FUN_0043c211();
        local_4._0_1_ = 0x12;
        pcStack_244 = (char *)0x878161;
        FUN_00875a40();
        local_220 = &pcStack_244;
        ppcStack_248 = &pcStack_244;
        pcStack_24c = (char *)0x878172;
        FUN_00432231();
        ppcStack_248 = (char **)&DAT_00d25fa0;
        pcStack_24c = "wxRegKey::DeleteSelf";
        DStack_250 = 0x309;
        pcStack_254 = "..\\..\\src\\msw\\registry.cpp";
        uStack_258 = 1;
        local_4._0_1_ = 0x14;
        uStack_25c = 0x87819c;
        FUN_008423d0();
        local_4._0_1_ = 0x15;
        pcStack_24c = *(char **)(param_1 + 0x34);
        ppcStack_248 = (char **)local_208;
        DStack_250 = 0x8781b4;
        DStack_250 = GetLastError();
        pcStack_254 = auStack_154;
        uStack_258 = 0x8781c4;
        FUN_0084d140();
        local_4._0_1_ = 0x16;
        DStack_250 = 0x8781d3;
        FUN_00875be0();
        local_4._0_1_ = 0x13;
        FUN_00842440();
        FUN_0040159c();
        FUN_0040159c();
        local_4._0_1_ = 0x10;
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      local_4 = CONCAT31(local_4._1_3_,8);
      if (local_21c != 0) {
        FUN_0089f290();
        local_21c = 0;
      }
      _free(local_50);
      if (7 < local_54) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
LAB_00878035:
      local_68 = local_68 & 0xffff0000;
      local_58 = 0;
      local_54 = 7;
      local_4 = 0xffffffff;
      FUN_00853f30();
      cVar2 = DAT_03235e94;
    }
  }
LAB_00878436:
  DAT_03235e94 = cVar2;
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00878460(undefined4 param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined local_48 [56];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca728;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_48;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  cVar1 = FUN_00876940(1);
  if (cVar1 != '\0') {
    FUN_00875970(param_1_00,param_1);
    local_4 = 0;
    FUN_00877c60(uVar2);
    local_4 = 0xffffffff;
    FUN_008767d0();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00878500(void)

{
  char cVar1;
  DWORD DVar2;
  undefined auStack_40 [3];
  undefined local_3d;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_34 [4];
  undefined4 local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca760;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_40;
  ExceptionList = &local_c;
  if (DAT_032bdb68 == 0) {
LAB_00878554:
    local_3d = DAT_03235e94;
    DAT_03235e94 = 0;
  }
  else {
    DVar2 = GetCurrentThreadId();
    if (DVar2 == DAT_032bdb68) goto LAB_00878554;
    local_3d = FUN_00842f30(0);
  }
  local_3c = CONCAT31(local_3c._1_3_,local_3d);
  local_1c = 7;
  local_20 = 0;
  local_30 = (uint)local_30._2_2_ << 0x10;
  local_18 = (void *)0x0;
  local_4 = 1;
  cVar1 = FUN_00876940(0);
  if (cVar1 == '\0') {
    local_3d = 0;
  }
  else {
    local_38 = 0;
    local_3d = FUN_008762c0(local_34,&local_38);
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_4 = 0xffffffff;
  if (DAT_032bdb68 != 0) {
    DVar2 = GetCurrentThreadId();
    if (DVar2 != DAT_032bdb68) {
      FUN_00842f30(local_3c);
      goto LAB_0087861c;
    }
  }
  DAT_03235e94 = (undefined)local_3c;
LAB_0087861c:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00878640(void)

{
  char cVar1;
  DWORD DVar2;
  undefined auStack_40 [3];
  undefined local_3d;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_34 [4];
  undefined4 local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca760;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_40;
  ExceptionList = &local_c;
  if (DAT_032bdb68 == 0) {
LAB_00878694:
    local_3d = DAT_03235e94;
    DAT_03235e94 = 0;
  }
  else {
    DVar2 = GetCurrentThreadId();
    if (DVar2 == DAT_032bdb68) goto LAB_00878694;
    local_3d = FUN_00842f30(0);
  }
  local_3c = CONCAT31(local_3c._1_3_,local_3d);
  local_1c = 7;
  local_20 = 0;
  local_30 = (uint)local_30._2_2_ << 0x10;
  local_18 = (void *)0x0;
  local_4 = 1;
  cVar1 = FUN_00876940(0);
  if (cVar1 == '\0') {
    local_3d = 0;
  }
  else {
    local_38 = 0;
    local_3d = FUN_00876550(local_34,&local_38);
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_4 = 0xffffffff;
  if (DAT_032bdb68 != 0) {
    DVar2 = GetCurrentThreadId();
    if (DVar2 != DAT_032bdb68) {
      FUN_00842f30(local_3c);
      goto LAB_0087875c;
    }
  }
  DAT_03235e94 = (undefined)local_3c;
LAB_0087875c:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00878780(HKEY *param_1_00,int param_1,LPBYTE param_2)

{
  char cVar1;
  LPCWSTR lpValueName;
  HKEY pHVar2;
  int iVar3;
  DWORD local_108;
  DWORD local_104 [62];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bca7d7;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_00876940();
  if (cVar1 != '\0') {
    local_108 = 4;
    if (*(int *)(param_1 + 0x14) == 0) {
      lpValueName = (LPCWSTR)0x0;
    }
    else if (*(uint *)(param_1 + 0x18) < 8) {
      lpValueName = (LPCWSTR)(param_1 + 4);
    }
    else {
      lpValueName = *(LPCWSTR *)(param_1 + 4);
    }
    pHVar2 = (HKEY)RegQueryValueExW(*param_1_00,lpValueName,(LPDWORD)0x0,local_104,param_2,
                                    &local_108);
    param_1_00[0xd] = pHVar2;
    if (pHVar2 == (HKEY)0x0) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar3 = FUN_00877020(), 1 < iVar3 - 4U)) {
        FUN_00840480();
      }
      ExceptionList = local_c;
      return 1;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_0043c211();
      uStack_4._0_1_ = 3;
      FUN_00875a40();
      FUN_00432231();
      uStack_4._0_1_ = 5;
      FUN_008423d0();
      uStack_4._0_1_ = 6;
      GetLastError();
      FUN_0084d140();
      uStack_4._0_1_ = 7;
      FUN_00875be0();
      uStack_4._0_1_ = 4;
      FUN_00842440();
      FUN_0040159c();
      FUN_0040159c();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_008789e0(HKEY *param_1_00,int param_1,int param_2,char param_3)

{
  char cVar1;
  LPCWSTR pWVar2;
  HKEY pHVar3;
  undefined4 *lpSrc;
  undefined4 *lpSrc_00;
  int iVar4;
  DWORD DVar5;
  undefined *puVar6;
  undefined auStack_190 [8];
  undefined4 uStack_188;
  undefined *local_158;
  LPWSTR *local_154;
  int local_150;
  DWORD local_14c;
  DWORD local_148 [2];
  uint local_140;
  undefined4 local_130;
  uint local_12c;
  void *local_128;
  undefined local_120 [64];
  uint local_e0;
  void *local_dc;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca85d;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_158;
  ExceptionList = &local_c;
  local_150 = param_1;
  cVar1 = FUN_00876940();
  if (cVar1 != '\0') {
    local_14c = 0;
    local_148[0] = 0;
    if (*(int *)(param_1 + 0x14) == 0) {
      pWVar2 = (LPCWSTR)0x0;
    }
    else if (*(uint *)(param_1 + 0x18) < 8) {
      pWVar2 = (LPCWSTR)(param_1 + 4);
    }
    else {
      pWVar2 = *(LPCWSTR *)(param_1 + 4);
    }
    uStack_188 = 0x878a77;
    pHVar3 = (HKEY)RegQueryValueExW(*param_1_00,pWVar2,(LPDWORD)0x0,&local_14c,(LPBYTE)0x0,local_148
                                   );
    param_1_00[0xd] = pHVar3;
    if (pHVar3 == (HKEY)0x0) {
      if (local_148[0] == 0) {
        FUN_00432156();
      }
      else {
        FUN_00852280();
        if (*(int *)(param_1 + 0x14) == 0) {
          pWVar2 = (LPCWSTR)0x0;
        }
        else if (*(uint *)(param_1 + 0x18) < 8) {
          pWVar2 = (LPCWSTR)(param_1 + 4);
        }
        else {
          pWVar2 = *(LPCWSTR *)(param_1 + 4);
        }
        uStack_188 = 0x878ad3;
        pHVar3 = (HKEY)RegQueryValueExW(*param_1_00,pWVar2,(LPDWORD)0x0,&local_14c,
                                        (LPBYTE)*local_154,local_148);
        param_1_00[0xd] = pHVar3;
        FUN_00851bf0();
        if ((local_14c == 2) && (param_3 == '\0')) {
          lpSrc_00 = (undefined4 *)(param_2 + 4);
          lpSrc = lpSrc_00;
          if (7 < *(uint *)(param_2 + 0x18)) {
            lpSrc = (undefined4 *)*lpSrc_00;
          }
          DVar5 = ExpandEnvironmentStringsW((LPCWSTR)lpSrc,(LPWSTR)0x0,0);
          if (DVar5 != 0) {
            local_1c = 7;
            local_20 = 0;
            local_30 = local_30 & 0xffff0000;
            local_18 = (void *)0x0;
            local_4 = 0;
            FUN_00852280();
            if (7 < *(uint *)(param_2 + 0x18)) {
              lpSrc_00 = (undefined4 *)*lpSrc_00;
            }
            DVar5 = ExpandEnvironmentStringsW((LPCWSTR)lpSrc_00,*local_154,DVar5);
            FUN_00851bf0();
            FUN_0043261a();
            local_4 = 0xffffffff;
            FUN_0040159c();
            if (DVar5 != 0) goto LAB_00878c7c;
          }
          local_158 = auStack_190;
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(6);
          if (cVar1 != '\0') {
            FUN_0081c0f1();
            local_4 = 1;
            FUN_008423d0();
            local_4._0_1_ = 2;
            GetLastError();
            FUN_00843700();
            GetLastError();
            uStack_188 = 0x878c50;
            FUN_00847d90();
            local_4 = CONCAT31(local_4._1_3_,1);
            FUN_00842440();
            local_4 = 0xffffffff;
            FUN_0081b5bc();
          }
        }
      }
LAB_00878c7c:
      if (param_1_00[0xd] == (HKEY)0x0) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar4 = FUN_00877020(), iVar4 - 4U < 2)) {
          FUN_00840480();
        }
        goto LAB_00878ea9;
      }
    }
  }
  local_158 = auStack_190;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(1);
  if (cVar1 != '\0') {
    FUN_004325b6();
    local_4 = 3;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,4);
    iVar4 = FUN_0084a340();
    if (iVar4 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    local_4._0_1_ = 5;
    FUN_0043c211();
    local_158 = auStack_190;
    local_4._0_1_ = 6;
    FUN_00875b20();
    local_4._0_1_ = 7;
    FUN_008423d0(1,"..\\..\\src\\msw\\registry.cpp",0x419,"wxRegKey::QueryValue",&DAT_00d25fa0);
    local_4._0_1_ = 8;
    pHVar3 = param_1_00[0xd];
    puVar6 = local_120;
    DVar5 = GetLastError();
    FUN_0084d140(local_34,DVar5);
    local_4._0_1_ = 9;
    FUN_00875dd0(pHVar3,puVar6);
    local_4._0_1_ = 6;
    FUN_00842440();
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_4 = CONCAT31(local_4._1_3_,4);
    FUN_0081b5bc();
    _free(local_128);
    if (7 < local_12c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_12c = 7;
    local_130 = 0;
    local_140 = local_140 & 0xffff0000;
    _free(local_dc);
    if (7 < local_e0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
LAB_00878ea9:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00878ee0(undefined *param_1,undefined *param_2,undefined *param_3)

{
  void **ppvVar1;
  char cVar2;
  int iVar3;
  void **ppvVar4;
  void *pvVar5;
  undefined auStack_148 [12];
  undefined4 uStack_13c;
  undefined4 uStack_138;
  char *pcStack_134;
  undefined *puStack_130;
  char *pcStack_12c;
  undefined auStack_110 [3];
  undefined local_10d;
  void **local_10c;
  undefined *local_108;
  undefined local_104 [20];
  undefined local_f0 [152];
  undefined local_58 [4];
  uint local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca8d7;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_110;
  ExceptionList = &local_c;
  pcStack_12c = (char *)0x0;
  local_54 = local_54 & 0xffff0000;
  puStack_130 = param_3;
  local_108 = param_2;
  local_40 = 7;
  local_44 = 0;
  pcStack_134 = (char *)0x878f64;
  FID_conflict_assign();
  local_3c = (void *)0x0;
  local_4 = 0;
  if ((local_44 == 0) && (local_58 != param_1)) {
    pcStack_12c = (char *)0x0;
    puStack_130 = param_1;
    pcStack_134 = (char *)0x878f91;
    FID_conflict_assign();
  }
  pcStack_12c = (char *)0x878f99;
  iVar3 = FUN_00877020();
  if (iVar3 != 1) {
    if (iVar3 == 3) {
      pcStack_12c = (char *)0x87914a;
      ppvVar4 = (void **)operator_new(0x10);
      if (ppvVar4 == (void **)0x0) {
        ppvVar4 = (void **)0x0;
      }
      else {
        pcStack_12c = (char *)0x87915d;
        pvVar5 = _malloc(0x400);
        *ppvVar4 = pvVar5;
        ppvVar4[1] = (void *)0x400;
        ppvVar4[2] = (void *)0x0;
        ppvVar4[3] = (void *)0x0;
      }
      ppvVar4[3] = (void *)((int)ppvVar4[3] + 1);
      pcStack_12c = param_1;
      local_4 = CONCAT31(local_4._1_3_,2);
      puStack_130 = (undefined *)0x87918f;
      local_10c = ppvVar4;
      cVar2 = FUN_00877730();
      if (cVar2 != '\0') {
        pcStack_12c = local_58;
        puStack_130 = (undefined *)0x8791a9;
        FUN_008774b0();
      }
      ppvVar1 = ppvVar4 + 3;
      *ppvVar1 = (void *)((int)*ppvVar1 + -1);
      if (*ppvVar1 == (void *)0x0) {
        pcStack_12c = (char *)0x8791c1;
        _free(*ppvVar4);
                    // WARNING: Subroutine does not return
        puStack_130 = &UNK_008791c7;
        pcStack_12c = (char *)ppvVar4;
        FUN_00a3f6a1();
      }
    }
    else {
      if (iVar3 != 4) {
        local_108 = auStack_148;
        FUN_0043c211(&DAT_00d25fa0);
        cVar2 = FUN_00846b30(1);
        if (cVar2 != '\0') {
          pcStack_12c = (char *)0x878fe8;
          FUN_004325b6();
          local_4._0_1_ = 3;
          pcStack_12c = (char *)0x878ffe;
          FUN_0043c211();
          local_4 = CONCAT31(local_4._1_3_,4);
          iVar3 = FUN_0084a340();
          if (iVar3 == 0) {
            pcStack_12c = (char *)0x87902c;
            FUN_0084d360();
          }
          else {
            pcStack_12c = local_f0;
            puStack_130 = (undefined *)0x879020;
            FUN_0084f210();
          }
          pcStack_12c = (char *)0x879039;
          FUN_008433c0();
          pcStack_12c = "wxRegKey::CopyValue";
          puStack_130 = (undefined *)0x248;
          pcStack_134 = "..\\..\\src\\msw\\registry.cpp";
          uStack_138 = 1;
          local_4._0_1_ = 5;
          uStack_13c = 0x879064;
          FUN_008423d0();
          local_4._0_1_ = 6;
          pcStack_12c = (char *)0x879076;
          FUN_00877020();
          pcStack_12c = local_104;
          puStack_130 = (undefined *)0x879083;
          FUN_00875860();
          local_4._0_1_ = 5;
          FUN_00842440();
          local_4 = CONCAT31(local_4._1_3_,4);
          FUN_0081b5bc();
          FUN_0040159c();
          FUN_0040159c();
        }
        pcStack_12c = (char *)0x8790c3;
        _free(local_3c);
        if (7 < local_40) {
                    // WARNING: Subroutine does not return
          pcStack_12c = &UNK_008790dd;
          FUN_00a3f6a1();
        }
        goto LAB_008792aa;
      }
      pcStack_12c = param_1;
      puStack_130 = (undefined *)0x8790f4;
      cVar2 = FUN_00878780();
      if (cVar2 != '\0') {
        pcStack_12c = local_58;
        puStack_130 = (undefined *)0x87910c;
        FUN_00877240();
      }
    }
    pcStack_12c = (char *)0x87911f;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      pcStack_12c = &UNK_00879139;
      FUN_00a3f6a1();
    }
    goto LAB_008792aa;
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  pcStack_12c = local_34;
  puStack_130 = param_1;
  local_4 = CONCAT31(local_4._1_3_,1);
  pcStack_134 = (char *)0x87920b;
  cVar2 = FUN_008789e0();
  if (cVar2 == '\0') {
LAB_0087922f:
    local_10d = 0;
  }
  else {
    pcStack_12c = local_58;
    puStack_130 = (undefined *)0x879226;
    cVar2 = FUN_008779b0();
    local_10d = 1;
    if (cVar2 == '\0') goto LAB_0087922f;
  }
  pcStack_12c = (char *)0x879240;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    pcStack_12c = &UNK_0087925e;
    FUN_00a3f6a1();
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  pcStack_12c = (char *)0x87928a;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    pcStack_12c = &UNK_008792a3;
    FUN_00a3f6a1();
  }
LAB_008792aa:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008792e0(void)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined *puStack_148;
  HKEY local_144;
  DWORD local_140 [62];
  HKEY local_48;
  HKEY local_44;
  undefined4 ***local_3c [5];
  uint local_28;
  LSTATUS LStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca965;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&puStack_148;
  ExceptionList = &local_c;
  FUN_00875740();
  local_4 = 0;
  if ((local_48 == (HKEY)0x0) && (cVar1 = FUN_00875250(), cVar1 == '\0')) {
    if (local_48 == (HKEY)0x0) {
      uVar2 = FUN_00875150();
      if (local_28 < 8) {
        local_3c[0] = local_3c;
      }
      LStack_14 = RegCreateKeyExW(local_44,(LPCWSTR)local_3c[0],0,(LPWSTR)0x0,0,uVar2 | 0xf003f,
                                  (LPSECURITY_ATTRIBUTES)0x0,&local_144,local_140);
      if (LStack_14 != 0) {
        puStack_148 = &stack0xfffffe88;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(1);
        if (cVar1 != '\0') {
          FUN_004325b6();
          local_4._0_1_ = 1;
          FUN_0043c211();
          local_4 = CONCAT31(local_4._1_3_,2);
          iVar3 = FUN_0084a340();
          if (iVar3 == 0) {
            FUN_0084d360();
          }
          else {
            FUN_0084f210();
          }
          FUN_008433c0();
          local_4._0_1_ = 3;
          FUN_0043c211();
          local_4._0_1_ = 4;
          FUN_00875a40();
          puStack_148 = &stack0xfffffea0;
          FUN_00432231();
          local_4._0_1_ = 6;
          FUN_008423d0();
          local_4._0_1_ = 7;
          GetLastError();
          FUN_0084d140();
          local_4._0_1_ = 8;
          FUN_00875be0();
          local_4._0_1_ = 5;
          FUN_00842440();
          FUN_0040159c();
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,2);
          FUN_0081b5bc();
          FUN_0040159c();
          FUN_0040159c();
        }
        goto LAB_00879582;
      }
      local_48 = local_144;
    }
    cVar1 = FUN_008795d0();
    if (cVar1 == '\0') {
      FUN_00877c60();
    }
  }
LAB_00879582:
  local_4 = 0xffffffff;
  FUN_008767d0();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008795d0(int param_1_00,undefined4 param_1)

{
  short sVar1;
  char cVar2;
  short *psVar3;
  int iVar4;
  undefined auStack_1e8 [16];
  undefined4 uStack_1d8;
  undefined auStack_1d0 [4];
  undefined4 uStack_1cc;
  undefined *puStack_1c8;
  undefined4 uStack_1c4;
  char *pcStack_1c0;
  undefined4 uStack_1bc;
  char *pcStack_1b8;
  char *pcStack_1b4;
  undefined *puStack_1ac;
  short *psStack_1a8;
  undefined auStack_18c [2];
  char local_18a;
  char local_189;
  undefined4 local_188;
  undefined **local_184;
  undefined local_180 [4];
  uint local_17c;
  undefined4 local_16c;
  uint local_168;
  void *local_164;
  undefined4 local_15c;
  undefined **local_158;
  undefined local_154 [4];
  uint local_150;
  undefined4 local_140;
  uint local_13c;
  void *local_138;
  undefined local_130 [20];
  undefined4 local_11c;
  char *local_114;
  undefined4 local_110;
  char *local_10c;
  undefined *local_108;
  __time64_t local_104;
  DWORD local_fc;
  int local_f8;
  uint local_f0;
  undefined4 local_e0;
  uint local_dc;
  void *local_d8;
  uint local_c8;
  undefined4 local_b8;
  uint local_b4;
  void *local_b0;
  undefined local_a8 [4];
  undefined4 local_a4;
  undefined4 local_94;
  uint local_90;
  void *local_8c;
  undefined4 local_84;
  char *local_7c;
  undefined4 local_78;
  char *local_74;
  undefined *local_70;
  __time64_t local_6c;
  DWORD local_64;
  int local_60;
  undefined4 local_58;
  int local_48;
  uint local_44;
  void *local_40;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcaaa5;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_18c;
  ExceptionList = &local_c;
  local_15c = param_1;
  local_18a = '\x01';
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  psStack_1a8 = (short *)0x879651;
  cVar2 = FUN_00876940();
  if (cVar2 == '\0') {
    local_189 = '\0';
  }
  else {
    psStack_1a8 = (short *)local_34;
    local_188 = 0;
    puStack_1ac = (undefined *)0x879673;
    local_189 = FUN_00876550();
  }
  do {
    if (local_189 == '\0') break;
    puStack_1ac = (undefined *)0x879696;
    psStack_1a8 = (short *)param_1_00;
    FUN_00875970();
    local_b4 = 7;
    local_b8 = 0;
    local_c8 = local_c8 & 0xffff0000;
    local_b0 = (void *)0x0;
    local_4._0_1_ = 2;
    puStack_1ac = (undefined *)FUN_00875bc0();
    psStack_1a8 = (short *)0x0;
    local_4._0_1_ = 3;
    FID_conflict_append();
    psStack_1a8 = (short *)0x1;
    puStack_1ac = (undefined *)0x8796f6;
    FID_conflict_append();
    psStack_1a8 = (short *)0x0;
    puStack_1ac = local_34;
    FID_conflict_append();
    local_4._0_1_ = 2;
    psStack_1a8 = (short *)0x87971f;
    _free(local_164);
    if (7 < local_168) {
                    // WARNING: Subroutine does not return
      psStack_1a8 = (short *)&UNK_00879737;
      FUN_00a3f6a1();
    }
    psStack_1a8 = (short *)0x87974e;
    local_18a = FUN_008792e0();
    if (local_18a == '\0') {
      local_158 = (undefined **)&uStack_1c4;
      puStack_1c8 = &DAT_00d25fa0;
      uStack_1cc = 0x879786;
      FUN_0043c211();
      puStack_1c8 = (undefined *)0x1;
      uStack_1cc = 0x87978d;
      cVar2 = FUN_00846b30();
      if (cVar2 != '\0') {
        psStack_1a8 = (short *)PTR_DAT_03236318;
        if (PTR_DAT_03236318 == (undefined *)0x0) {
          psStack_1a8 = &DAT_00fae9c8;
        }
        local_17c = local_17c & 0xffff0000;
        local_168 = 7;
        local_16c = 0;
        psVar3 = psStack_1a8;
        do {
          sVar1 = *psVar3;
          psVar3 = psVar3 + 1;
        } while (sVar1 != 0);
        puStack_1ac = (undefined *)0x8797da;
        FID_conflict_assign();
        local_164 = (void *)0x0;
        local_4._0_1_ = 4;
        psStack_1a8 = (short *)0x8797f4;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,5);
        iVar4 = FUN_0084a340();
        if (iVar4 == 0) {
          psStack_1a8 = (short *)0x879822;
          FUN_0084d360();
        }
        else {
          psStack_1a8 = (short *)local_154;
          puStack_1ac = (undefined *)0x879816;
          FUN_0084f210();
        }
        psStack_1a8 = (short *)0x87982f;
        FUN_008433c0();
        local_158 = &puStack_1ac;
        pcStack_1b4 = (char *)0x879845;
        FUN_00432231();
        local_184 = (undefined **)auStack_1d0;
        local_4._0_1_ = 7;
        FUN_00875bc0();
        local_4._0_1_ = 8;
        local_11c = 1;
        local_114 = "..\\..\\src\\msw\\registry.cpp";
        local_10c = "wxRegKey::Copy";
        local_110 = 0x2a7;
        local_108 = &DAT_00d25fa0;
        uStack_1d8 = 0x8798a7;
        local_104 = __time64((__time64_t *)0x0);
        local_fc = GetCurrentThreadId();
        local_f8 = 0;
        local_dc = 7;
        local_e0 = 0;
        local_f0 = local_f0 & 0xffff0000;
        local_d8 = (void *)0x0;
        local_4._0_1_ = 10;
        uStack_1d8 = 0x879913;
        FUN_0084bf60();
        local_4._0_1_ = 6;
        psStack_1a8 = (short *)0x879928;
        _free(local_d8);
        if (7 < local_dc) {
                    // WARNING: Subroutine does not return
          psStack_1a8 = (short *)&UNK_00879941;
          FUN_00a3f6a1();
        }
        local_dc = 7;
        local_e0 = 0;
        local_f0 = local_f0 & 0xffff0000;
        if (local_f8 != 0) {
          FUN_00841af0();
                    // WARNING: Subroutine does not return
          psStack_1a8 = (short *)&UNK_00879974;
          FUN_00a3f6a1();
        }
        local_4._0_1_ = 5;
        FUN_0081b5bc();
        psStack_1a8 = (short *)0x879992;
        _free(local_138);
        if (7 < local_13c) {
                    // WARNING: Subroutine does not return
          psStack_1a8 = (short *)&UNK_008799a5;
          FUN_00a3f6a1();
        }
        local_13c = 7;
        local_140 = 0;
        local_150 = local_150 & 0xffff0000;
        psStack_1a8 = (short *)0x8799c5;
        _free(local_164);
        if (7 < local_168) {
                    // WARNING: Subroutine does not return
          psStack_1a8 = (short *)&UNK_008799d8;
          FUN_00a3f6a1();
        }
      }
    }
    else {
      psStack_1a8 = (short *)local_34;
      puStack_1ac = (undefined *)0x87976a;
      local_189 = FUN_00876550();
    }
    psStack_1a8 = (short *)0x8799e8;
    _free(local_b0);
    if (7 < local_b4) {
                    // WARNING: Subroutine does not return
      psStack_1a8 = (short *)&UNK_00879a01;
      FUN_00a3f6a1();
    }
    local_b4 = 7;
    local_b8 = 0;
    local_c8 = local_c8 & 0xffff0000;
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_008767d0();
  } while (local_18a != '\0');
  local_90 = 7;
  local_94 = 0;
  local_a4 = (uint)local_a4._2_2_ << 0x10;
  local_8c = (void *)0x0;
  local_4._0_1_ = 0xb;
  psStack_1a8 = (short *)0x879a70;
  cVar2 = FUN_00876940();
  if (cVar2 != '\0') {
    psStack_1a8 = (short *)local_a8;
    local_188 = 0;
    puStack_1ac = (undefined *)0x879a8c;
    cVar2 = FUN_008762c0();
  }
  if (local_18a != '\0') {
    while (cVar2 != '\0') {
      psStack_1a8 = (short *)PTR_DAT_03236318;
      if (PTR_DAT_03236318 == (undefined *)0x0) {
        psStack_1a8 = &DAT_00fae9c8;
      }
      local_17c = local_17c & 0xffff0000;
      local_168 = 7;
      local_16c = 0;
      psVar3 = psStack_1a8;
      do {
        sVar1 = *psVar3;
        psVar3 = psVar3 + 1;
      } while (sVar1 != 0);
      puStack_1ac = (undefined *)0x879adf;
      FID_conflict_assign();
      local_164 = (void *)0x0;
      psStack_1a8 = (short *)local_15c;
      puStack_1ac = local_a8;
      local_4._0_1_ = 0xc;
      local_18a = FUN_00878ee0();
      local_4._0_1_ = 0xb;
      psStack_1a8 = (short *)0x879b1a;
      _free(local_164);
      if (7 < local_168) {
                    // WARNING: Subroutine does not return
        psStack_1a8 = (short *)&UNK_00879b32;
        FUN_00a3f6a1();
      }
      if (local_18a == '\0') {
        local_184 = (undefined **)&uStack_1c4;
        puStack_1c8 = &DAT_00d25fa0;
        uStack_1cc = 0x879b67;
        FUN_0043c211();
        puStack_1c8 = (undefined *)0x1;
        uStack_1cc = 0x879b6e;
        cVar2 = FUN_00846b30();
        if (cVar2 != '\0') {
          psStack_1a8 = (short *)PTR_DAT_03236318;
          if (PTR_DAT_03236318 == (undefined *)0x0) {
            psStack_1a8 = &DAT_00fae9c8;
          }
          local_c8 = local_c8 & 0xffff0000;
          local_b4 = 7;
          local_b8 = 0;
          psVar3 = psStack_1a8;
          do {
            sVar1 = *psVar3;
            psVar3 = psVar3 + 1;
          } while (sVar1 != 0);
          puStack_1ac = (undefined *)0x879bcd;
          FID_conflict_assign();
          local_b0 = (void *)0x0;
          local_4._0_1_ = 0xd;
          psStack_1a8 = (short *)0x879bea;
          FUN_0043c211();
          local_4 = CONCAT31(local_4._1_3_,0xe);
          iVar4 = FUN_0084a340();
          if (iVar4 == 0) {
            psStack_1a8 = (short *)0x879c1b;
            FUN_0084d360();
          }
          else {
            psStack_1a8 = (short *)local_154;
            puStack_1ac = (undefined *)0x879c0f;
            FUN_0084f210();
          }
          psStack_1a8 = (short *)0x879c28;
          FUN_008433c0();
          local_4._0_1_ = 0xf;
          psStack_1a8 = (short *)0x879c3e;
          FUN_0043c211();
          local_184 = &puStack_1ac;
          pcStack_1b4 = (char *)0x879c54;
          FUN_00432231();
          local_4._0_1_ = 0x11;
          local_84 = 1;
          local_7c = "..\\..\\src\\msw\\registry.cpp";
          local_74 = "wxRegKey::Copy";
          local_78 = 0x2b3;
          local_70 = &DAT_00d25fa0;
          pcStack_1b4 = (char *)0x879c99;
          local_6c = __time64((__time64_t *)0x0);
          local_64 = GetCurrentThreadId();
          local_60 = 0;
          local_44 = 7;
          local_48 = 0;
          local_58 = (uint)local_58._2_2_ << 0x10;
          local_40 = (void *)0x0;
          local_4 = CONCAT31(local_4._1_3_,0x12);
          GetLastError();
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_48 != 0)) {
            pcStack_1b4 = "m_optKey.empty()";
            pcStack_1b8 = "wxLogger::MaybeStore";
            uStack_1bc = 0x361;
            pcStack_1c0 = "d:\\wxWidgets-2.9.3\\include\\wx/log.h";
            uStack_1c4 = 0x879d1e;
            FUN_008402e0();
          }
          pcStack_1b4 = (char *)0x0;
          pcStack_1b8 = local_180;
          uStack_1bc = 0x879d35;
          FID_conflict_assign();
          pcStack_1b4 = local_180;
          pcStack_1b8 = (char *)0x879d47;
          FUN_0084d020();
          pcStack_1b4 = *(char **)(param_1_00 + 0x34);
          local_4._0_1_ = 0x13;
          pcStack_1b8 = (char *)0x879d64;
          FUN_00875be0();
          local_4._0_1_ = 0x10;
          psStack_1a8 = (short *)0x879d79;
          _free(local_40);
          if (7 < local_44) {
                    // WARNING: Subroutine does not return
            psStack_1a8 = (short *)&UNK_00879d92;
            FUN_00a3f6a1();
          }
          local_44 = 7;
          local_48 = 0;
          local_58 = local_58 & 0xffff0000;
          if (local_60 != 0) {
            FUN_00841af0();
                    // WARNING: Subroutine does not return
            psStack_1a8 = (short *)&UNK_00879dc9;
            FUN_00a3f6a1();
          }
          psStack_1a8 = (short *)0x879dd6;
          _free(local_164);
          if (7 < local_168) {
                    // WARNING: Subroutine does not return
            psStack_1a8 = (short *)&UNK_00879de9;
            FUN_00a3f6a1();
          }
          local_168 = 7;
          local_16c = 0;
          local_17c = local_17c & 0xffff0000;
          local_4._0_1_ = 0xe;
          FUN_0081b5bc();
          psStack_1a8 = (short *)0x879e1b;
          _free(local_138);
          if (7 < local_13c) {
                    // WARNING: Subroutine does not return
            psStack_1a8 = (short *)&UNK_00879e2e;
            FUN_00a3f6a1();
          }
          local_13c = 7;
          local_140 = 0;
          local_150 = local_150 & 0xffff0000;
          local_4._0_1_ = 0xb;
          psStack_1a8 = (short *)0x879e55;
          _free(local_b0);
          if (7 < local_b4) {
                    // WARNING: Subroutine does not return
            psStack_1a8 = (short *)&UNK_00879e6e;
            FUN_00a3f6a1();
          }
        }
        goto LAB_00879e82;
      }
      psStack_1a8 = (short *)local_a8;
      puStack_1ac = (undefined *)0x879b4f;
      cVar2 = FUN_008762c0();
    }
    if (local_18a != '\0') goto LAB_0087a004;
  }
LAB_00879e82:
  local_184 = (undefined **)&uStack_1c4;
  puStack_1c8 = &DAT_00d25fa0;
  uStack_1cc = 0x879e95;
  FUN_0043c211();
  puStack_1c8 = (undefined *)0x1;
  uStack_1cc = 0x879e9c;
  cVar2 = FUN_00846b30();
  if (cVar2 != '\0') {
    psStack_1a8 = (short *)0x879eb6;
    FUN_004325b6();
    local_4._0_1_ = 0x14;
    psStack_1a8 = (short *)0x879ecc;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,0x15);
    iVar4 = FUN_0084a340();
    if (iVar4 == 0) {
      psStack_1a8 = (short *)0x879efa;
      FUN_0084d360();
    }
    else {
      psStack_1a8 = (short *)local_180;
      puStack_1ac = (undefined *)0x879eee;
      FUN_0084f210();
    }
    psStack_1a8 = (short *)0x879f07;
    FUN_008433c0();
    local_184 = (undefined **)&uStack_1c4;
    local_4._0_1_ = 0x16;
    puStack_1c8 = (undefined *)0x879f21;
    FUN_00875bc0();
    local_158 = (undefined **)auStack_1e8;
    local_4._0_1_ = 0x17;
    FUN_00875bc0();
    local_4._0_1_ = 0x18;
    FUN_008423d0(1,"..\\..\\src\\msw\\registry.cpp",0x2bd,"wxRegKey::Copy",&DAT_00d25fa0);
    local_4._0_1_ = 0x1a;
    FUN_0085e020(local_130);
    local_4._0_1_ = 0x16;
    FUN_00842440();
    local_4._0_1_ = 0x15;
    FUN_0081b5bc();
    psStack_1a8 = (short *)0x879fb4;
    _free(local_164);
    if (7 < local_168) {
                    // WARNING: Subroutine does not return
      psStack_1a8 = (short *)&UNK_00879fc7;
      FUN_00a3f6a1();
    }
    local_168 = 7;
    local_16c = 0;
    local_17c = local_17c & 0xffff0000;
    psStack_1a8 = (short *)0x879fe7;
    _free(local_138);
    if (7 < local_13c) {
                    // WARNING: Subroutine does not return
      psStack_1a8 = (short *)&UNK_00879ffa;
      FUN_00a3f6a1();
    }
  }
LAB_0087a004:
  psStack_1a8 = (short *)0x87a011;
  _free(local_8c);
  if (7 < local_90) {
                    // WARNING: Subroutine does not return
    psStack_1a8 = (short *)&UNK_0087a02a;
    FUN_00a3f6a1();
  }
  local_90 = 7;
  local_94 = 0;
  local_a4 = local_a4 & 0xffff0000;
  psStack_1a8 = (short *)0x87a056;
  _free(local_18);
  if (local_1c < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  psStack_1a8 = (short *)&UNK_0087a06f;
  FUN_00a3f6a1();
}



undefined4 FUN_0087a0a0(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  undefined auStack_1c8 [4];
  undefined2 local_1c4;
  undefined4 uStack_1bc;
  undefined4 uStack_1b8;
  char *local_1b4;
  undefined4 local_1b0;
  char *local_1ac;
  undefined *puStack_1a8;
  undefined2 local_1a0;
  undefined4 local_190;
  undefined4 local_18c;
  undefined *local_188;
  undefined local_168 [4];
  uint local_164;
  undefined4 local_154;
  uint local_150;
  void *local_14c;
  undefined local_144 [4];
  uint local_140;
  undefined4 local_130;
  uint local_12c;
  void *local_128;
  undefined *local_120;
  undefined local_11c [20];
  undefined local_108 [44];
  uint local_dc;
  void *local_d8;
  uint local_b8;
  void *local_b4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcab56;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_188 = (undefined *)0x87a0dc;
  cVar1 = FUN_00876d80();
  if (cVar1 == '\0') {
    local_18c = param_1;
    local_190 = 0x87a289;
    cVar1 = FUN_00878ee0();
    if (cVar1 != '\0') {
      local_188 = (undefined *)0x87a295;
      cVar1 = FUN_00876b70();
      if (cVar1 != '\0') {
        ExceptionList = local_c;
        return 1;
      }
    }
  }
  else {
    puStack_1a8 = &DAT_00d25fa0;
    local_1ac = (char *)0x87a0f9;
    FUN_0043c211();
    puStack_1a8 = (undefined *)0x1;
    local_1ac = (char *)0x87a100;
    cVar1 = FUN_00846b30();
    if (cVar1 != '\0') {
      local_188 = (undefined *)0x87a11d;
      FUN_004325b6();
      local_4 = 0;
      local_188 = (undefined *)0x87a132;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        local_188 = (undefined *)0x87a163;
        FUN_0084d360();
      }
      else {
        local_188 = local_168;
        local_18c = 0x87a157;
        FUN_0084f210();
      }
      local_188 = (undefined *)0x87a170;
      FUN_008433c0();
      puStack_1a8 = (undefined *)0xffffffff;
      local_18c = 7;
      local_190 = 0;
      local_1ac = (char *)0x0;
      local_1a0 = 0;
      local_1b0 = param_2;
      local_4._0_1_ = 2;
      local_1b4 = (char *)0x87a19d;
      FID_conflict_assign();
      local_188 = (undefined *)0x0;
      puStack_1a8 = &DAT_00d25fa0;
      local_1ac = "wxRegKey::RenameValue";
      local_1b0 = 0x209;
      local_1b4 = "..\\..\\src\\msw\\registry.cpp";
      uStack_1b8 = 1;
      local_4._0_1_ = 3;
      uStack_1bc = 0x87a1ca;
      FUN_008423d0();
      puStack_1a8 = local_108;
      local_4._0_1_ = 5;
      local_1ac = (char *)0x87a1e9;
      FUN_00848780();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      local_188 = (undefined *)0x87a218;
      _free(local_14c);
      if (7 < local_150) {
                    // WARNING: Subroutine does not return
        local_188 = &UNK_0087a230;
        FUN_00a3f6a1();
      }
      local_150 = 7;
      local_154 = 0;
      local_164 = local_164 & 0xffff0000;
      local_4 = 0xffffffff;
      local_188 = (undefined *)0x87a25a;
      _free(local_d8);
      if (7 < local_dc) {
                    // WARNING: Subroutine does not return
        local_188 = &UNK_0087a273;
        FUN_00a3f6a1();
      }
    }
  }
  puStack_1a8 = &DAT_00d25fa0;
  local_1ac = (char *)0x87a2b8;
  FUN_0043c211();
  puStack_1a8 = (undefined *)0x1;
  local_1ac = (char *)0x87a2bf;
  cVar1 = FUN_00846b30();
  if (cVar1 != '\0') {
    local_188 = (undefined *)0x87a2dd;
    FUN_004325b6();
    local_4 = 6;
    local_188 = (undefined *)0x87a2f6;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,7);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      local_188 = (undefined *)0x87a327;
      FUN_0084d360();
    }
    else {
      local_188 = local_144;
      local_18c = 0x87a31b;
      FUN_0084f210();
    }
    local_188 = (undefined *)0x87a334;
    FUN_008433c0();
    puStack_1a8 = (undefined *)0xffffffff;
    local_18c = 7;
    local_190 = 0;
    local_1ac = (char *)0x0;
    local_1a0 = 0;
    local_1b0 = param_2;
    local_4._0_1_ = 8;
    local_1b4 = (char *)0x87a35c;
    FID_conflict_assign();
    local_188 = (undefined *)0x0;
    local_120 = auStack_1c8;
    local_1b0 = 7;
    local_1b4 = (char *)0x0;
    local_4._0_1_ = 9;
    local_1c4 = 0;
    FID_conflict_assign(param_1,0,0xffffffff);
    local_1ac = (char *)0x0;
    local_4._0_1_ = 10;
    FUN_008423d0(1,"..\\..\\src\\msw\\registry.cpp",0x211,"wxRegKey::RenameValue",&DAT_00d25fa0);
    local_4._0_1_ = 0xc;
    FUN_0085e020(local_11c);
    local_4._0_1_ = 8;
    FUN_00842440();
    local_4 = CONCAT31(local_4._1_3_,7);
    FUN_0081b5bc();
    local_188 = (undefined *)0x87a40c;
    _free(local_128);
    if (7 < local_12c) {
                    // WARNING: Subroutine does not return
      local_188 = &UNK_0087a424;
      FUN_00a3f6a1();
    }
    local_12c = 7;
    local_130 = 0;
    local_140 = local_140 & 0xffff0000;
    local_188 = (undefined *)0x87a443;
    _free(local_b4);
    if (7 < local_b8) {
                    // WARNING: Subroutine does not return
      local_188 = &UNK_0087a45c;
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_0087a480(int *param_1)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  undefined4 *lpSubKey;
  undefined auStack_21c [12];
  undefined4 uStack_210;
  undefined4 uStack_20c;
  char *pcStack_208;
  undefined4 uStack_204;
  char *pcStack_200;
  undefined *puStack_1fc;
  undefined auStack_1c0 [3];
  undefined local_1bd;
  undefined *local_1bc;
  HKEY local_1b8;
  undefined *local_1b4;
  undefined local_1b0 [324];
  HKEY local_6c;
  HKEY local_68;
  int local_64;
  undefined4 local_60;
  undefined4 local_50;
  uint local_4c;
  undefined4 local_48;
  undefined4 local_40;
  LSTATUS local_38;
  undefined local_34 [20];
  int local_20;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcac87;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_1c0;
  ExceptionList = &local_c;
  if (param_1[7] == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    goto LAB_0087ac24;
  }
  if ((*param_1 == 0) && (cVar1 = FUN_00875250(), cVar1 == '\0')) {
    local_1b8 = (HKEY)&stack0xfffffe08;
    puStack_1fc = &DAT_00d25fa0;
    pcStack_200 = (char *)0x87a505;
    FUN_0043c211();
    puStack_1fc = (undefined *)0x1;
    pcStack_200 = (char *)0x87a50c;
    cVar1 = FUN_00846b30();
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_1b8 = (HKEY)&stack0xfffffe08;
      local_4._0_1_ = 2;
      puStack_1fc = (undefined *)0x87a590;
      FUN_00875bc0();
      puStack_1fc = &DAT_00d25fa0;
      pcStack_200 = "wxRegKey::Rename";
      uStack_204 = 0x253;
      pcStack_208 = "..\\..\\src\\msw\\registry.cpp";
      uStack_20c = 1;
      local_4._0_1_ = 3;
      uStack_210 = 0x87a5ba;
      FUN_008423d0();
      puStack_1fc = local_1b0;
      local_4._0_1_ = 5;
      pcStack_200 = (char *)0x87a5d6;
      FUN_00848780();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
    goto LAB_0087ac24;
  }
  iVar2 = FUN_00875390();
  local_4c = 7;
  local_50 = 0;
  local_60 = (undefined4 *)((uint)local_60._2_2_ << 0x10);
  local_48 = 0;
  local_40 = 0;
  local_68 = DAT_03236690;
  local_6c = (HKEY)0x0;
  local_38 = 0;
  local_4 = 6;
  if (iVar2 == 0) {
    local_1b8 = (HKEY)&stack0xfffffe24;
    FUN_00852900();
    local_4._0_1_ = 7;
    if (local_20 != 0) {
      FID_conflict_append();
    }
    FID_conflict_append();
    FUN_00875100();
    FUN_00876890();
    local_4 = CONCAT31(local_4._1_3_,6);
    FUN_0040159c();
  }
  else {
    FUN_00876850();
  }
  if ((local_6c == (HKEY)0x0) && (cVar1 = FUN_00875250(), cVar1 == '\0')) {
    if (local_6c == (HKEY)0x0) {
      uVar3 = FUN_00875150();
      lpSubKey = local_60;
      if (local_4c < 8) {
        lpSubKey = &local_60;
      }
      puStack_1fc = (undefined *)0x87a798;
      local_38 = RegCreateKeyExW(local_68,(LPCWSTR)lpSubKey,0,(LPWSTR)0x0,0,uVar3 | 0xf003f,
                                 (LPSECURITY_ATTRIBUTES)0x0,&local_1b8,(LPDWORD)&local_1b4);
      if (local_38 != 0) {
        local_1bc = &stack0xfffffe08;
        puStack_1fc = &DAT_00d25fa0;
        pcStack_200 = (char *)0x87a7ba;
        FUN_0043c211();
        puStack_1fc = (undefined *)0x1;
        pcStack_200 = (char *)0x87a7c1;
        cVar1 = FUN_00846b30();
        if (cVar1 != '\0') {
          FUN_004325b6();
          local_4._0_1_ = 8;
          FUN_0043c211();
          local_4 = CONCAT31(local_4._1_3_,9);
          iVar2 = FUN_0084a340();
          if (iVar2 == 0) {
            FUN_0084d360();
          }
          else {
            FUN_0084f210();
          }
          FUN_008433c0();
          local_4._0_1_ = 10;
          FUN_0043c211();
          local_4._0_1_ = 0xb;
          FUN_00875a40();
          local_1bc = &stack0xfffffe20;
          FUN_00432231();
          local_4._0_1_ = 0xd;
          FUN_008423d0();
          local_4._0_1_ = 0xe;
          GetLastError();
          FUN_0084d140();
          local_4._0_1_ = 0xf;
          FUN_00875be0();
          local_4._0_1_ = 0xc;
          FUN_00842440();
          FUN_0040159c();
          FUN_0040159c();
          local_4._0_1_ = 9;
          FUN_0081b5bc();
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,6);
          FUN_0040159c();
        }
        goto LAB_0087a930;
      }
      local_6c = local_1b8;
    }
    cVar1 = FUN_008795d0();
    if ((cVar1 == '\0') || (cVar1 = FUN_00877c60(), cVar1 == '\0')) {
      local_1bd = 0;
      goto LAB_0087aabd;
    }
    local_1bd = 1;
    param_1[1] = (int)local_68;
    if (param_1 + 2 != &local_64) {
      FID_conflict_assign();
    }
  }
  else {
LAB_0087a930:
    local_1bc = &stack0xfffffe08;
    puStack_1fc = &DAT_00d25fa0;
    local_1bd = 0;
    pcStack_200 = (char *)0x87a948;
    FUN_0043c211();
    puStack_1fc = (undefined *)0x1;
    pcStack_200 = (char *)0x87a94f;
    cVar1 = FUN_00846b30();
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4._0_1_ = 0x10;
      FUN_0043c211();
      local_4._0_1_ = 0x11;
      FUN_00820bf9();
      FUN_008433c0();
      local_1bc = &stack0xfffffe08;
      local_4._0_1_ = 0x12;
      puStack_1fc = (undefined *)0x87a9c1;
      FUN_00875bc0();
      puStack_1fc = &DAT_00d25fa0;
      pcStack_200 = "wxRegKey::Rename";
      uStack_204 = 0x272;
      pcStack_208 = "..\\..\\src\\msw\\registry.cpp";
      uStack_20c = 1;
      local_4._0_1_ = 0x13;
      uStack_210 = 0x87a9eb;
      FUN_008423d0();
      puStack_1fc = local_1b0;
      local_4._0_1_ = 0x15;
      pcStack_200 = (char *)0x87aa07;
      FUN_00848780();
      local_4._0_1_ = 0x12;
      FUN_00842440();
      local_4._0_1_ = 0x11;
      FUN_0081b5bc();
      FUN_0040159c();
      local_4 = CONCAT31(local_4._1_3_,6);
      FUN_0040159c();
    }
LAB_0087aabd:
    local_1bc = &stack0xfffffe08;
    puStack_1fc = &DAT_00d25fa0;
    pcStack_200 = (char *)0x87aad0;
    FUN_0043c211();
    puStack_1fc = (undefined *)0x1;
    pcStack_200 = (char *)0x87aad7;
    cVar1 = FUN_00846b30();
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4._0_1_ = 0x16;
      FUN_0043c211();
      local_4._0_1_ = 0x17;
      FUN_00820bf9();
      FUN_008433c0();
      local_1bc = &stack0xfffffe08;
      local_4._0_1_ = 0x18;
      puStack_1fc = (undefined *)0x87ab54;
      FUN_00875bc0();
      local_1b4 = auStack_21c;
      local_4._0_1_ = 0x19;
      FUN_00875bc0();
      local_4._0_1_ = 0x1a;
      FUN_008423d0(1,"..\\..\\src\\msw\\registry.cpp",0x27a,"wxRegKey::Rename",&DAT_00d25fa0);
      local_4._0_1_ = 0x1c;
      FUN_0085e020(local_34);
      local_4._0_1_ = 0x18;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,0x17);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  local_4 = 0xffffffff;
  FUN_008767d0();
LAB_0087ac24:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_0087ac50(int param_1)

{
  *(undefined4 *)(param_1 + 8) = 0;
  return;
}



void __fastcall FUN_0087ac60(undefined4 *param_1)

{
  *param_1 = wxArchiveInputStream::vftable;
  FUN_00883f00();
  return;
}



uint __fastcall thunk_FUN_00883080(int *param_1)

{
  uint uVar1;
  undefined auStack_5 [5];
  
  uVar1 = (**(code **)(*param_1 + 0x2c))(auStack_5);
  if (param_1[3] == 0) {
    uVar1 = FUN_00882f30(&stack0xfffffff4,1);
    return uVar1 & 0xffffff00;
  }
  return uVar1 & 0xffffff00;
}



undefined4 * __thiscall FUN_0087ac80(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxArchiveInputStream::vftable;
  FUN_00883f00();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0087acb0(undefined4 *param_1)

{
  *param_1 = wxArchiveOutputStream::vftable;
  FUN_00883fe0();
  return;
}



undefined4 * __thiscall FUN_0087acc0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxArchiveOutputStream::vftable;
  FUN_00883fe0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_0087acf0(int **param_1_00,void *param_1,size_t param_2)

{
  void *_NewSize;
  void **ppvVar1;
  void *_Memory;
  void *pvVar2;
  
  ppvVar1 = (void **)*param_1_00;
  if (ppvVar1[1] < (void *)((int)ppvVar1[2] + param_2)) {
    _Memory = *ppvVar1;
    _NewSize = (void *)((int)(void *)((int)ppvVar1[2] + param_2) + 0x400);
    pvVar2 = _realloc(_Memory,(size_t)_NewSize);
    *ppvVar1 = pvVar2;
    if (pvVar2 == (void *)0x0) {
      _free(_Memory);
    }
    ppvVar1[1] = _NewSize;
  }
  _memcpy((void *)((*param_1_00)[2] + **param_1_00),param_1,param_2);
  FUN_0084a290((*param_1_00)[2] + param_2);
  return;
}



void __fastcall thunk_FUN_0086ade0(undefined4 *param_1)

{
  int *piVar1;
  int *piVar2;
  
  *param_1 = wxListBase::vftable;
  piVar2 = (int *)param_1[3];
  while (piVar2 != (int *)0x0) {
    piVar1 = (int *)piVar2[3];
    if (param_1[5] == 2) {
      _free((void *)piVar2[1]);
    }
    if (*(char *)(param_1 + 2) != '\0') {
      (**(code **)(*piVar2 + 4))();
    }
    piVar2[5] = 0;
    (**(code **)*piVar2)(1);
    piVar2 = piVar1;
  }
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  public: virtual __thiscall CButton::~CButton(void)
//  public: virtual __thiscall CComboBox::~CComboBox(void)
//  public: virtual __thiscall CDateTimeCtrl::~CDateTimeCtrl(void)
//  public: virtual __thiscall CDialogBar::~CDialogBar(void)
//   19 names - too many to list
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void __fastcall FID_conflict__CProgressCtrl(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bce908;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxZlibOutputStream::vftable;
  local_4 = 0;
  FUN_008a6af0(uVar1);
  local_4 = 0xffffffff;
  FUN_00883fe0();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0087add0(int *param_1)

{
  (**(code **)(*param_1 + 0x44))(0);
  return;
}



undefined8 __fastcall FUN_0087ade0(int param_1)

{
  return *(undefined8 *)(param_1 + 0x28);
}



undefined ** FUN_0087adf0(void)

{
  return &PTR_u_wxZipEntry_032369d0;
}



undefined ** FUN_0087ae00(void)

{
  return &PTR_u_wxZipClassFactory_032369e8;
}



undefined ** FUN_0087ae10(int param_1)

{
  if (param_1 == 0) {
    return &PTR_DAT_03236798;
  }
  if (param_1 != 1) {
    if (param_1 != 3) {
      return (undefined **)&DAT_032bdb90;
    }
    return (undefined **)&DAT_032367a8;
  }
  return &PTR_u_application_zip_032367a0;
}



undefined2 __fastcall FUN_0087ae50(int param_1)

{
  undefined uVar1;
  undefined uVar2;
  int iVar3;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     (*(uint *)(param_1 + 0x40) < *(int *)(param_1 + 0x44) + 2U)) {
    FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0xd8,"wxZipHeader::Read16","m_pos + 2 <= m_size"
                 ,0);
  }
  iVar3 = *(int *)(param_1 + 0x44);
  uVar1 = *(undefined *)(iVar3 + 1 + param_1);
  uVar2 = *(undefined *)(iVar3 + param_1);
  *(int *)(param_1 + 0x44) = iVar3 + 2;
  return CONCAT11(uVar1,uVar2);
}



undefined4 __fastcall FUN_0087aeb0(int param_1)

{
  undefined uVar1;
  undefined uVar2;
  undefined uVar3;
  undefined uVar4;
  int iVar5;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     (*(uint *)(param_1 + 0x40) < *(int *)(param_1 + 0x44) + 4U)) {
    FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0xe0,"wxZipHeader::Read32","m_pos + 4 <= m_size"
                 ,0);
  }
  iVar5 = *(int *)(param_1 + 0x44);
  uVar1 = *(undefined *)(iVar5 + 3 + param_1);
  uVar2 = *(undefined *)(iVar5 + 2 + param_1);
  uVar3 = *(undefined *)(iVar5 + 1 + param_1);
  uVar4 = *(undefined *)(iVar5 + param_1);
  *(int *)(param_1 + 0x44) = iVar5 + 4;
  return CONCAT31(CONCAT21(CONCAT11(uVar1,uVar2),uVar3),uVar4);
}



undefined4 __fastcall FUN_0087af20(int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  return 1;
}



undefined8 __fastcall FUN_0087af30(int param_1)

{
  return *(undefined8 *)(param_1 + 0x18);
}



uint __thiscall FUN_0087af40(int *param_1,undefined4 param_2,uint param_3)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  int *piVar4;
  uint uVar5;
  
  cVar3 = (**(code **)(*param_1 + 0x10))();
  if ((cVar3 != '\0') && (param_3 != 0)) {
    piVar4 = (int *)(**(code **)(*(int *)param_1[4] + 0x28))(param_2,param_3);
    uVar5 = (**(code **)(*piVar4 + 0x34))();
    if (uVar5 != param_3) {
      param_1[3] = 2;
    }
    puVar1 = (uint *)(param_1 + 6);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 + uVar5;
    param_1[7] = param_1[7] + (uint)CARRY4(uVar2,uVar5);
    return uVar5;
  }
  return 0;
}



int __thiscall FUN_0087af90(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  undefined4 uVar2;
  
  piVar1 = (int *)FUN_00882ff0(param_1,param_2);
  uVar2 = (**(code **)(*piVar1 + 0x30))();
  *(undefined4 *)(param_1_00 + 0x38) = *(undefined4 *)(*(int *)(param_1_00 + 0x30) + 8);
  FUN_0087acf0(param_1,uVar2);
  return param_1_00;
}



void __fastcall FUN_0087afd0(int *param_1)

{
  (**(code **)(*param_1 + 0x44))(1);
  param_1[10] = -1;
  param_1[0xb] = -1;
                    // WARNING: Could not recover jumptable at 0x0087afed. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x10))();
  return;
}



undefined8 __fastcall FUN_0087aff0(int param_1)

{
  return *(undefined8 *)(param_1 + 0x30);
}



undefined4 * __thiscall FUN_0087b000(undefined4 *param_1_00,uint param_1)

{
  undefined4 uVar1;
  
  if (1 < (int)param_1_00[3]) {
    param_1_00[3] = param_1_00[3] + -1;
    param_1_00 = (undefined4 *)operator_new(0x10);
    if (param_1_00 == (undefined4 *)0x0) {
      param_1_00 = (undefined4 *)0x0;
    }
    else {
      *param_1_00 = 0;
      param_1_00[1] = 0;
      param_1_00[2] = 0;
      param_1_00[3] = 1;
    }
  }
  if ((uint)param_1_00[2] < param_1) {
    FUN_00a3f66c(*param_1_00);
    uVar1 = FUN_00823c23(param_1);
    *param_1_00 = uVar1;
    param_1_00[2] = param_1;
  }
  param_1_00[1] = param_1;
  return param_1_00;
}



void FUN_0087b070(void)

{
  undefined4 *puVar1;
  int iVar2;
  int unaff_EBX;
  int *unaff_ESI;
  
  if (*unaff_ESI == 0) {
    if (unaff_EBX != 0) {
      puVar1 = (undefined4 *)operator_new(0x10);
      if (puVar1 == (undefined4 *)0x0) {
        puVar1 = (undefined4 *)0x0;
      }
      else {
        *puVar1 = 0;
        puVar1[1] = 0;
        puVar1[2] = 0;
        puVar1[3] = 1;
      }
      *unaff_ESI = (int)puVar1;
    }
    if (*unaff_ESI == 0) {
      return;
    }
  }
  iVar2 = FUN_0087b000(unaff_EBX);
  *unaff_ESI = iVar2;
  return;
}



void __thiscall FUN_0087b0c0(int param_1_00,char param_1)

{
  if (param_1 == '\0') {
    *(uint *)(param_1_00 + 0x98) = *(uint *)(param_1_00 + 0x98) & 0xffffffef;
  }
  else {
    *(uint *)(param_1_00 + 0x98) = *(uint *)(param_1_00 + 0x98) | 0x10;
  }
  if (((*(byte *)(param_1_00 + 0xc) == 0) && ((*(uint *)(param_1_00 + 0x98) & 0xffff0000) != 0)) ||
     ((0x3202c >> (*(byte *)(param_1_00 + 0xc) & 0x1f) & 1U) != 0)) {
    *(uint *)(param_1_00 + 0x98) = *(uint *)(param_1_00 + 0x98) & 0xfffffff;
    if (param_1 != '\0') {
      *(uint *)(param_1_00 + 0x98) = *(uint *)(param_1_00 + 0x98) | 0x40000000;
      return;
    }
    *(uint *)(param_1_00 + 0x98) = *(uint *)(param_1_00 + 0x98) | 0x80000000;
  }
  return;
}



ushort __fastcall FUN_0087b130(int param_1)

{
  ushort uVar1;
  
  if (((*(byte *)(param_1 + 0xc) != 0) || ((*(uint *)(param_1 + 0x98) & 0xffff0000) == 0)) &&
     ((0x3202c >> (*(byte *)(param_1 + 0xc) & 0x1f) & 1U) == 0)) {
    uVar1 = 0x1a4;
    if ((*(uint *)(param_1 + 0x98) & 1) != 0) {
      uVar1 = 0x124;
    }
    if ((*(uint *)(param_1 + 0x98) & 0x10) != 0) {
      uVar1 = uVar1 | 0x49;
    }
    return uVar1;
  }
  return *(ushort *)(param_1 + 0x9a) & 0x1ff;
}



void __thiscall FUN_0087b180(int param_1_00,uint param_1)

{
  if ((param_1 & 0x92) == 0) {
    *(uint *)(param_1_00 + 0x98) = *(uint *)(param_1_00 + 0x98) | 1;
  }
  else {
    *(uint *)(param_1_00 + 0x98) = *(uint *)(param_1_00 + 0x98) & 0xfffffffe;
  }
  if (((*(byte *)(param_1_00 + 0xc) == 0) && ((*(uint *)(param_1_00 + 0x98) & 0xffff0000) != 0)) ||
     ((0x3202c >> (*(byte *)(param_1_00 + 0xc) & 0x1f) & 1U) != 0)) {
    *(uint *)(param_1_00 + 0x98) =
         *(uint *)(param_1_00 + 0x98) ^ (param_1 << 0x10 ^ *(uint *)(param_1_00 + 0x98)) & 0x1ff0000
    ;
  }
  return;
}



void __fastcall FUN_0087b1e0(int param_1)

{
  if (*(int *)(param_1 + 0xa4) != 0) {
    (**(code **)(**(int **)(param_1 + 0xa4) + 4))(param_1);
    return;
  }
  if (*(int **)(param_1 + 8) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 8) + 4))(param_1);
  }
  return;
}



void __fastcall FUN_0087b210(int param_1)

{
  *(undefined4 *)(param_1 + 8) = 0;
  *(undefined4 *)(param_1 + 0xa4) = 0;
  return;
}



int __fastcall FUN_0087b220(int *param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1 == 0)) {
    FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x51e,"wxZipEntryPtr_::operator ->","m_ptr != 0"
                 ,0);
  }
  return *param_1;
}



undefined4 __fastcall FUN_0087b260(int param_1)

{
  int iVar1;
  int local_4;
  
  local_4 = param_1;
  (**(code **)(**(int **)(param_1 + 0x1c) + 0x2c))(&local_4);
  iVar1 = (**(code **)(**(int **)(param_1 + 0x1c) + 0x30))();
  if (iVar1 == 4) {
    return 4;
  }
  return 0;
}



void __thiscall FUN_0087b2b0(int param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be860b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x20);
  local_4 = 0;
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_00883f90(*(undefined4 *)(param_1 + 0x10));
    *puVar2 = wxStoredOutputStream::vftable;
    puVar2[6] = 0;
    puVar2[7] = 0;
  }
  local_4 = 0xffffffff;
  *(undefined4 **)(param_1 + 0x1c) = puVar2;
  *(undefined4 *)(param_1 + 0x20) = 0;
  *(undefined4 *)(param_1 + 0x24) = 0;
  uVar3 = FUN_00823c23(0x1000,uVar1);
  *(undefined4 *)(param_1 + 0x40) = uVar3;
  *(undefined4 *)(param_1 + 0x44) = 0;
  *(undefined4 *)(param_1 + 0x48) = 0;
  *(undefined *)(param_1 + 0x4c) = 0;
  *(undefined4 *)(param_1 + 0x50) = 0;
  *(undefined4 *)(param_1 + 0x54) = 0;
  *(undefined4 *)(param_1 + 0x58) = 0;
  *(undefined4 *)(param_1 + 0x60) = 0;
  *(undefined4 *)(param_1 + 100) = 0;
  *(undefined4 *)(param_1 + 0x6c) = 0;
  *(undefined4 *)(param_1 + 0x70) = param_2;
  *(undefined4 *)(param_1 + 0x78) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x7c) = 0xffffffff;
  *(undefined *)(param_1 + 0xa4) = 0;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0087b3c0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x0087b3c8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0x1c) + 0x18))();
  return;
}



void __fastcall FUN_0087b3d0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x0087b3d8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0x10) + 0x18))();
  return;
}



undefined4 * __thiscall
FUN_0087b3e0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxwxZipEntryList_Node::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __thiscall FUN_0087b460(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = DAT_03235e98;
  DAT_03235e98 = 5;
  (**(code **)(*param_1_00 + 0x3c))(param_1,param_2,0);
  DAT_03235e98 = uVar1;
  return;
}



undefined4 * __fastcall FUN_0087b490(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = param_1;
  local_4 = 0;
  *param_1 = wxZipClassFactory::vftable;
  if (param_1 == (undefined4 *)&DAT_032bdb94) {
    FUN_008a6950(uVar1);
    puRam032bdba0 = DAT_032bdd94;
    DAT_032bdd94 = &DAT_032bdb94;
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0087b500(undefined4 param_1_00,byte param_1)

{
  FUN_00883f00();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_0087b520(int param_1_00,undefined4 param_1,uint param_2)

{
  uint *puVar1;
  uint uVar2;
  int *piVar3;
  uint uVar4;
  undefined4 uVar5;
  
  uVar4 = *(uint *)(param_1_00 + 0x30) - *(uint *)(param_1_00 + 0x28);
  uVar2 = (*(int *)(param_1_00 + 0x34) - *(int *)(param_1_00 + 0x2c)) -
          (uint)(*(uint *)(param_1_00 + 0x30) < *(uint *)(param_1_00 + 0x28));
  if ((uVar2 < 0x80000000) && ((0 < (int)uVar2 || (param_2 < uVar4)))) {
    uVar4 = param_2;
  }
  piVar3 = (int *)(**(code **)(**(int **)(param_1_00 + 0x1c) + 0x2c))(param_1,uVar4);
  uVar2 = (**(code **)(*piVar3 + 0x30))();
  puVar1 = (uint *)(param_1_00 + 0x28);
  uVar4 = *puVar1;
  *puVar1 = *puVar1 + uVar2;
  *(int *)(param_1_00 + 0x2c) = *(int *)(param_1_00 + 0x2c) + (uint)CARRY4(uVar4,uVar2);
  if (uVar2 < param_2) {
    if ((*(int *)(param_1_00 + 0x28) != *(int *)(param_1_00 + 0x30)) ||
       (uVar5 = 1, *(int *)(param_1_00 + 0x2c) != *(int *)(param_1_00 + 0x34))) {
      uVar5 = 3;
    }
    *(undefined4 *)(param_1_00 + 0xc) = uVar5;
  }
  return;
}



undefined4 * __thiscall FUN_0087b5a0(undefined4 *param_1_00,undefined4 param_1)

{
  void **ppvVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb908;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00883ea0(param_1);
  local_4 = 0;
  *param_1_00 = wxTeeInputStream::vftable;
  param_1_00[10] = 0;
  param_1_00[0xb] = 0;
  ppvVar1 = (void **)operator_new(0x10);
  if (ppvVar1 == (void **)0x0) {
    ppvVar1 = (void **)0x0;
  }
  else {
    pvVar2 = _malloc(0x2000);
    *ppvVar1 = pvVar2;
    ppvVar1[1] = (void *)0x2000;
    ppvVar1[2] = (void *)0x0;
    ppvVar1[3] = (void *)0x0;
  }
  param_1_00[0xc] = ppvVar1;
  ppvVar1[3] = (void *)((int)ppvVar1[3] + 1);
  param_1_00[0xd] = 0;
  param_1_00[0xe] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_0087b640(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x0087b648. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0x1c) + 0x28))();
  return;
}



void __thiscall FUN_0087b650(int param_1_00,undefined4 param_1,uint param_2)

{
  int *piVar1;
  uint uVar2;
  
  piVar1 = (int *)(**(code **)(**(int **)(param_1_00 + 0x1c) + 0x2c))(param_1,param_2);
  uVar2 = (**(code **)(*piVar1 + 0x30))();
  if (uVar2 < param_2) {
    *(undefined4 *)(param_1_00 + 0xc) = *(undefined4 *)(*(int *)(param_1_00 + 0x1c) + 0xc);
  }
  return;
}



size_t __thiscall FUN_0087b690(int param_1_00,void *param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  void *_Dst;
  uint uVar3;
  size_t _Size;
  
  uVar2 = *(uint *)(param_1_00 + 0x14);
  if (uVar2 != 0) {
    uVar3 = *(uint *)(*(int *)(param_1_00 + 0x30) + 8);
    if (uVar2 < uVar3) {
      uVar3 = uVar3 - uVar2;
    }
    else {
      uVar3 = 0;
    }
    FUN_0084a290(uVar3);
    if (uVar3 < *(uint *)(param_1_00 + 0x38)) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x197,"wxTeeInputStream::GetData",
                     "Assert failure",0);
      }
      *(uint *)(param_1_00 + 0x38) = uVar3;
    }
    *(undefined4 *)(*(int *)(param_1_00 + 0x1c) + 0xc) = 0;
    FUN_00882f30(*(undefined4 *)(param_1_00 + 0x10),*(undefined4 *)(param_1_00 + 0x14));
    _free(*(void **)(param_1_00 + 0x10));
    *(undefined4 *)(param_1_00 + 0x10) = 0;
    *(undefined4 *)(param_1_00 + 0x14) = 0;
    *(undefined4 *)(param_1_00 + 0x18) = 0;
  }
  uVar2 = *(int *)(param_1_00 + 0x38) - *(int *)(param_1_00 + 0x34);
  if (uVar2 < param_2) {
    param_2 = uVar2;
  }
  if (param_2 != 0) {
    _memcpy(param_1,(void *)(**(int **)(param_1_00 + 0x30) + *(int *)(param_1_00 + 0x34)),param_2);
    *(int *)(param_1_00 + 0x34) = *(int *)(param_1_00 + 0x34) + param_2;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
       (*(uint *)(param_1_00 + 0x38) < *(uint *)(param_1_00 + 0x34))) {
      FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x1a7,"wxTeeInputStream::GetData",
                   "m_start <= m_end",0);
    }
  }
  if (((*(int *)(param_1_00 + 0x34) == *(int *)(param_1_00 + 0x38)) &&
      (*(int *)(param_1_00 + 0x34) != 0)) &&
     (iVar1 = *(int *)(*(int *)(param_1_00 + 0x30) + 8), iVar1 != 0)) {
    _Dst = (void *)FUN_0084a2f0(iVar1);
    _Size = iVar1 - *(int *)(param_1_00 + 0x38);
    _memmove(_Dst,(void *)(*(int *)(param_1_00 + 0x38) + (int)_Dst),_Size);
    FUN_0084a290(_Size);
    *(undefined4 *)(param_1_00 + 0x38) = 0;
    *(undefined4 *)(param_1_00 + 0x34) = 0;
  }
  return param_2;
}



undefined4 __thiscall FUN_0087b7c0(undefined4 param_1_00,byte param_1)

{
  FID_conflict__CProgressCtrl();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0087b7e0(undefined4 param_1,byte param_2)

{
  FUN_008a6a20();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_0087b800(void)

{
  int *piVar1;
  undefined4 *puVar2;
  int *unaff_EBX;
  int unaff_EDI;
  
  puVar2 = (undefined4 *)*unaff_EBX;
  if (puVar2 != (undefined4 *)0x0) {
    piVar1 = puVar2 + 3;
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      FUN_00a3f66c(*puVar2);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(puVar2);
    }
  }
  if (unaff_EDI != 0) {
    *(int *)(unaff_EDI + 0xc) = *(int *)(unaff_EDI + 0xc) + 1;
  }
  *unaff_EBX = unaff_EDI;
  return;
}



undefined4 __thiscall FUN_0087b830(int param_1_00,uint param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(*(int *)(param_1_00 + 4) + (param_1 % *(uint *)(param_1_00 + 8)) * 4);
  while( true ) {
    if (puVar1 == (undefined4 *)0x0) {
      return 0;
    }
    if (puVar1[1] == param_1) break;
    puVar1 = (undefined4 *)*puVar1;
  }
  if (puVar1 == (undefined4 *)0x0) {
    return 0;
  }
  return puVar1[2];
}



void __thiscall FUN_0087b870(int *param_1_00,byte param_1)

{
  byte bVar1;
  int iVar2;
  bool bVar3;
  undefined uVar4;
  uint uVar5;
  uint uVar6;
  
  bVar1 = *(byte *)(param_1_00 + 3);
  if (((bVar1 == 0) && ((param_1_00[0x26] & 0xffff0000U) != 0)) ||
     ((0x3202c >> (bVar1 & 0x1f) & 1U) != 0)) {
    uVar5 = param_1_00[0x26];
    uVar6 = uVar5 >> 0x10 & 0x1ff;
  }
  else {
    uVar5 = param_1_00[0x26];
    uVar6 = 0x1a4;
    if ((uVar5 & 1) != 0) {
      uVar6 = 0x124;
    }
    if ((uVar5 & 0x10) != 0) {
      uVar6 = uVar6 | 0x49;
    }
  }
  if (((bVar1 == 0) && ((uVar5 & 0xffff0000) != 0)) || ((0x3202c >> (bVar1 & 0x1f) & 1U) != 0)) {
    bVar3 = true;
  }
  else {
    bVar3 = false;
  }
  *(byte *)(param_1_00 + 3) = param_1;
  if (bVar3) {
    if (((param_1 != 0) || ((uVar5 & 0xffff0000) == 0)) && ((0x3202c >> (param_1 & 0x1f) & 1U) == 0)
       ) {
      *(undefined2 *)((int)param_1_00 + 0x9a) = 0;
    }
  }
  else if (((param_1 == 0) && ((uVar5 & 0xffff0000) != 0)) ||
          ((0x3202c >> (param_1 & 0x1f) & 1U) != 0)) {
    iVar2 = *param_1_00;
    uVar4 = (**(code **)(iVar2 + 0x1c))();
    (**(code **)(iVar2 + 0x38))(uVar4);
    FUN_0087b180(uVar6);
    return;
  }
  return;
}



void __thiscall FUN_0087b950(int param_1_00,int *param_1)

{
  int *piVar1;
  undefined4 uVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined auStack_9c [56];
  uint uStack_64;
  undefined4 uStack_60;
  undefined uStack_5c;
  undefined local_50 [56];
  int iStack_18;
  undefined4 local_10;
  undefined4 local_c;
  undefined local_8;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_9c;
  local_10 = 0;
  local_c = 0;
  local_8 = 0;
  piVar1 = (int *)(**(code **)(*param_1 + 0x2c))(local_50,0xc);
  iStack_18 = (**(code **)(*piVar1 + 0x30))();
  local_10 = CONCAT31(local_10._1_3_,iStack_18 == 0xc);
  if (iStack_18 == 0xc) {
    uVar2 = FUN_0087aeb0();
    *(undefined4 *)(param_1_00 + 0x20) = uVar2;
    uVar2 = FUN_0087aeb0();
    *(undefined4 *)(param_1_00 + 0x28) = uVar2;
    *(undefined4 *)(param_1_00 + 0x2c) = 0;
    uVar2 = FUN_0087aeb0();
    *(undefined4 *)(param_1_00 + 0x30) = uVar2;
    *(undefined4 *)(param_1_00 + 0x34) = 0;
    if (*(int *)(param_1_00 + 0x20) == 0x8074b50) {
      uStack_64 = 0;
      uStack_60 = 0;
      uStack_5c = 0;
      piVar1 = (int *)(**(code **)(*param_1 + 0x2c))(&stack0xffffff5c,8);
      uStack_64 = (**(code **)(*piVar1 + 0x30))();
      uStack_5c = uStack_64 == 8;
      if (uStack_64 < 4) {
        puVar3 = (undefined *)0x4034b50;
      }
      else {
        puVar3 = (undefined *)FUN_0087aeb0();
      }
      if (uStack_64 == 8) {
        puVar4 = (undefined *)FUN_0087aeb0();
      }
      else {
        puVar4 = (undefined *)0x0;
      }
      if ((((puVar3 == (undefined *)0x4034b50) || (puVar3 == &DAT_02014b50)) &&
          (puVar4 != (undefined *)0x4034b50)) && (puVar4 != &DAT_02014b50)) {
        if (uStack_64 != 0) {
          FUN_00882f30(&stack0xffffff5c,uStack_64);
        }
      }
      else {
        if (4 < uStack_64) {
          FUN_00882f30(&stack0xffffff60,uStack_64 - 4);
        }
        *(undefined4 *)(param_1_00 + 0x2c) = *(undefined4 *)(param_1_00 + 0x34);
        *(undefined4 *)(param_1_00 + 0x20) = *(undefined4 *)(param_1_00 + 0x28);
        *(undefined4 *)(param_1_00 + 0x28) = *(undefined4 *)(param_1_00 + 0x30);
        *(undefined **)(param_1_00 + 0x30) = puVar3;
        *(undefined4 *)(param_1_00 + 0x34) = 0;
      }
    }
  }
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall
FUN_0087baf0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcacc8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x20) = param_2;
  *(undefined4 *)(param_1_00 + 0x28) = param_3;
  *(undefined4 *)(param_1_00 + 0x2c) = param_4;
  *(undefined4 *)(param_1_00 + 0x30) = param_5;
  *(undefined4 *)(param_1_00 + 0x34) = param_6;
  if (DAT_032bd4d8 == 0) {
    DAT_032bd4d8 = FUN_00861480(uVar1);
  }
  FUN_008a8470(param_1,DAT_032bd4d8);
  local_4 = 0;
  FUN_008a84c0(param_2);
  FUN_008a84c0(param_3);
  FUN_008a84c0(param_5);
  local_4 = 0xffffffff;
  FUN_008a84a0();
  ExceptionList = local_c;
  return 0xc;
}



int * __thiscall FUN_0087bbb0(int *param_1,int param_2)

{
  int *piVar1;
  char cVar2;
  int *piVar3;
  
  piVar3 = (int *)0x0;
  if (*(char *)(param_1 + 0x3e) == '\0') {
    if ((param_1[0x3d] == 0) && (cVar2 = (**(code **)(*param_1 + 0x38))(), cVar2 != '\0')) {
      return (int *)0x0;
    }
    piVar3 = (int *)operator_new(8);
    if (piVar3 == (int *)0x0) {
      piVar3 = (int *)0x0;
    }
    else {
      *piVar3 = 1;
      piVar3[1] = param_2;
    }
    piVar1 = (int *)param_1[0x40];
    if ((piVar1 != (int *)0x0) && (*piVar1 = *piVar1 + -1, *piVar1 == 0)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(piVar1);
    }
    *piVar3 = *piVar3 + 1;
    param_1[0x40] = (int)piVar3;
  }
  return piVar3;
}



undefined4 __thiscall FUN_0087bc20(int *param_1_00,int *param_1)

{
  undefined4 uVar1;
  
  if ((param_1 != (int *)0x0) && (param_1 == (int *)param_1_00[0xc])) {
                    // WARNING: Could not recover jumptable at 0x0087bc3b. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (**(code **)(*param_1_00 + 0x58))();
    return uVar1;
  }
  if ((param_1 != (int *)param_1_00[10]) &&
     ((param_1 != (int *)param_1_00[0xb] && (param_1 != (int *)0x0)))) {
    (**(code **)(*param_1 + 4))(1);
  }
  return 1;
}



// WARNING: Removing unreachable block (ram,0x0087bd4f)

undefined4 __thiscall FUN_0087bc60(int *param_1,int param_2,char param_3)

{
  char cVar1;
  undefined uVar2;
  undefined4 uVar3;
  DWORD DVar4;
  int iVar5;
  int iVar6;
  longlong lVar7;
  longlong lVar8;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcad00;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(*param_1 + 0x58))(DAT_0323f878 ^ (uint)&stack0xffffffcc);
  param_1[0x12] = param_2;
  if (param_2 == 0) {
    uVar3 = 0;
  }
  else {
    if (DAT_032bd4d8 == 0) {
      DAT_032bd4d8 = FUN_00861480();
    }
    FUN_008a8470(param_1[4],DAT_032bd4d8);
    uStack_4 = 0;
    FUN_008a85e0(0x4034b50);
    if (((param_1[0x14] | param_1[0x15]) == 0) &&
       (cVar1 = (**(code **)(*(int *)param_1[4] + 0x1c))(), cVar1 != '\0')) {
      uVar2 = DAT_03235e94;
      if ((DAT_032bdb68 != 0) &&
         (DVar4 = GetCurrentThreadId(), uVar2 = DAT_03235e94, DVar4 != DAT_032bdb68)) {
        uVar2 = FUN_00842f10();
      }
      FUN_008192b5();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      lVar7 = (**(code **)(*(int *)param_1[4] + 0x30))();
      if ((lVar7 != -1) && (3 < lVar7)) {
        iVar6 = (uint)lVar7 - 4;
        iVar5 = (int)((ulonglong)lVar7 >> 0x20) - (uint)((uint)lVar7 < 4);
        lVar8 = (**(code **)(*(int *)param_1[4] + 0x2c))(iVar6,iVar5,0);
        if (lVar8 == CONCAT44(iVar5,iVar6)) {
          param_1[0x1e] = iVar6;
          param_1[0x1f] = iVar5;
          FUN_00819297(uVar2);
          (**(code **)(*(int *)param_1[4] + 0x2c))(lVar7,0);
        }
      }
      uStack_4 = uStack_4 & 0xffffff00;
      FUN_008192c6();
    }
    (**(code **)(*(int *)param_1[0x12] + 0x48))(param_1[0x14],param_1[0x15]);
    iVar5 = FUN_008ecba0(0,0,0);
    param_1[0x1a] = iVar5;
    if (param_3 != '\0') {
      *(undefined *)(param_1 + 0x13) = 1;
    }
    param_1[3] = 0;
    uStack_4 = 0xffffffff;
    FUN_008a84a0();
    uVar3 = 1;
  }
  ExceptionList = local_c;
  return uVar3;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x10);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_0087b490(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



int __thiscall FUN_0087be80(int param_1_00,byte param_1)

{
  void **ppvVar1;
  void **ppvVar2;
  
  ppvVar2 = *(void ***)(param_1_00 + 0x30);
  ppvVar1 = ppvVar2 + 3;
  *ppvVar1 = (void *)((int)*ppvVar1 + -1);
  if (*ppvVar1 == (void *)0x0) {
    _free(*ppvVar2);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(ppvVar2);
  }
  FUN_00883f00();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



uint __thiscall FUN_0087bec0(int *param_1_00,int param_1,uint param_2)

{
  uint *puVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  char cVar5;
  int iVar6;
  uint uVar7;
  
  uVar7 = 0;
  if (param_2 != 0) {
    do {
      cVar5 = (**(code **)(*param_1_00 + 0x10))();
      if (cVar5 == '\0') break;
      cVar5 = (**(code **)(*(int *)param_1_00[7] + 0x10))();
      while ((cVar5 != '\0' &&
             (*(int *)(param_1_00[0xc] + 0x38) == *(int *)(param_1_00[0xc] + 0x34)))) {
        (**(code **)(*(int *)param_1_00[7] + 0x2c))(*(undefined4 *)param_1_00[0xd],0x2000);
        cVar5 = (**(code **)(*(int *)param_1_00[7] + 0x10))();
      }
      iVar6 = FUN_0087b690(uVar7 + param_1,param_2 - uVar7);
      uVar7 = uVar7 + iVar6;
      if (iVar6 == 0) {
        iVar6 = param_1_00[0xc];
        iVar3 = *(int *)(*(int *)(iVar6 + 0x30) + 8);
        iVar4 = *(int *)(iVar6 + 0x38);
        *(int *)(iVar6 + 0x38) = iVar3;
        if (iVar4 == iVar3) {
          param_1_00[3] = *(int *)(param_1_00[7] + 0xc);
        }
      }
    } while (uVar7 < param_2);
  }
  puVar1 = (uint *)(param_1_00 + 10);
  uVar2 = *puVar1;
  *puVar1 = *puVar1 + uVar7;
  param_1_00[0xb] = param_1_00[0xb] + (uint)CARRY4(uVar2,uVar7);
  return uVar7;
}



void FUN_0087bf70(undefined4 param_1)

{
  FUN_009115c0(&param_1);
  return;
}



void __fastcall FUN_0087bf90(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcad2b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0xc) != 0)) {
    FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x296,"wxZipWeakLinks::~wxZipWeakLinks",
                 "IsEmpty()",0,DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  local_4 = 0xffffffff;
  FUN_00893cf0(*(undefined4 *)(param_1 + 8),*(undefined4 *)(param_1 + 4),&LAB_00981b50);
  *(undefined4 *)(param_1 + 0xc) = 0;
  _free(*(void **)(param_1 + 4));
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0087c030(int param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  size_t _Count;
  void *pvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcad66;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x38);
  local_4 = 0;
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_00883ea0(*(undefined4 *)(param_1 + 0x1c));
    *puVar2 = wxStoredInputStream::vftable;
    puVar2[10] = 0;
    puVar2[0xb] = 0;
    puVar2[0xc] = 0;
    puVar2[0xd] = 0;
  }
  local_4 = 0xffffffff;
  *(undefined4 **)(param_1 + 0x28) = puVar2;
  *(undefined4 *)(param_1 + 0x2c) = 0;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined *)(param_1 + 0xe8) = 0;
  *(undefined4 *)(param_1 + 0xec) = 0;
  *(undefined4 *)(param_1 + 0xf4) = 0;
  *(undefined *)(param_1 + 0xf8) = 0;
  puVar2 = (undefined4 *)operator_new(0x14);
  local_4 = 1;
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = 1;
    _Count = FUN_00893ca0(100,uVar1);
    puVar2[2] = _Count;
    puVar2[3] = 0;
    pvVar3 = _calloc(_Count,4);
    puVar2[1] = pvVar3;
  }
  *(undefined4 **)(param_1 + 0xfc) = puVar2;
  *(undefined4 *)(param_1 + 0x100) = 0;
  *(undefined4 *)(param_1 + 0x108) = 0;
  *(undefined4 *)(param_1 + 0x10c) = 0;
  *(undefined4 *)(param_1 + 0x110) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x114) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x118) = 0;
  *(undefined4 *)(param_1 + 0x11c) = 0;
  *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(*(int *)(param_1 + 0x1c) + 0xc);
  ExceptionList = local_c;
  return;
}



void FUN_0087c150(undefined4 param_1)

{
  int iVar1;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    iVar1 = FUN_0048a085(param_1,&PTR_u_wxZipEntry_032369d0);
    if (iVar1 == 0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/object.h",0xa1,"wxCheckCast",
                   "wxDynamicCast(ptr, T)","wxStaticCast() used incorrectly");
    }
  }
  FUN_0087bc60(param_1,0);
  return;
}



undefined4 * __thiscall FUN_0087c1b0(undefined4 *param_1_00,undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcada3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00883ea0(param_1);
  local_4 = 0;
  *param_1_00 = wxRawInputStream::vftable;
  param_1_00[10] = 0;
  param_1_00[0xb] = 0;
  pvVar1 = operator_new(0x40);
  local_4._0_1_ = 1;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_0087b5a0(param_1);
  }
  local_4 = (uint)local_4._1_3_ << 8;
  param_1_00[0xc] = uVar2;
  FUN_0084aa50(0x2000);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_0087c250(undefined4 *param_1)

{
  short *psVar1;
  void **ppvVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bcadd3;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxRawInputStream::vftable;
  local_4 = 1;
  if ((int *)param_1[0xc] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0xc] + 4))(1,uVar3);
  }
  local_4 = local_4 & 0xffffff00;
  iVar4 = FUN_00850350();
  if (param_1[0xd] != iVar4) {
    psVar1 = (short *)(param_1[0xd] + 8);
    *psVar1 = *psVar1 + -1;
    ppvVar2 = (void **)param_1[0xd];
    if ((*(short *)(ppvVar2 + 2) == 0) && (ppvVar2 != (void **)0x0)) {
      if (*(char *)((int)ppvVar2 + 10) != '\0') {
        _free(*ppvVar2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar2);
    }
    uVar5 = FUN_00850350();
    param_1[0xd] = uVar5;
  }
  local_4 = 0xffffffff;
  FUN_00883f00();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_0087c310(undefined4 param_1_00,byte param_1)

{
  FUN_0087c250();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0087c330(undefined4 *param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  uint uVar3;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcae0e;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *param_1 = wxZipEntry::vftable;
  piVar1 = (int *)param_1[0x2a];
  local_4 = 2;
  local_10 = param_1;
  if (piVar1 != (int *)0x0) {
    local_14 = param_1[0x19];
    local_18 = param_1[0x18];
    FUN_009115c0(&local_18);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      FUN_0087bf90();
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(piVar1);
    }
  }
  puVar2 = (undefined4 *)param_1[0x27];
  if (puVar2 != (undefined4 *)0x0) {
    piVar1 = puVar2 + 3;
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      FUN_00a3f66c(*puVar2,uVar3);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(puVar2);
    }
  }
  puVar2 = (undefined4 *)param_1[0x28];
  if (puVar2 != (undefined4 *)0x0) {
    piVar1 = puVar2 + 3;
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      FUN_00a3f66c(*puVar2,uVar3);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(puVar2);
    }
  }
  _free((void *)param_1[0x23]);
  if (7 < (uint)param_1[0x22]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x1d]);
  }
  param_1[0x22] = 7;
  param_1[0x21] = 0;
  *(undefined2 *)(param_1 + 0x1d) = 0;
  _free((void *)param_1[0x15]);
  if (7 < (uint)param_1[0x14]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xf]);
  }
  param_1[0x14] = 7;
  param_1[0x13] = 0;
  *(undefined2 *)(param_1 + 0xf) = 0;
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0087c480(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *(undefined4 *)(param_1_00 + 0x1c);
  *param_1 = *(undefined4 *)(param_1_00 + 0x18);
  param_1[1] = uVar1;
  return;
}



undefined8 __fastcall FUN_0087c4a0(int param_1)

{
  return *(undefined8 *)(param_1 + 0x68);
}



void __thiscall FUN_0087c4b0(int param_1_00,undefined4 *param_1)

{
  *(undefined4 *)(param_1_00 + 0x18) = *param_1;
  *(undefined4 *)(param_1_00 + 0x1c) = param_1[1];
  return;
}



void __thiscall FUN_0087c4d0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 0x30) = param_1;
  *(undefined4 *)(param_1_00 + 0x34) = param_2;
  return;
}



void __thiscall FUN_0087c4f0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 0x68) = param_1;
  *(undefined4 *)(param_1_00 + 0x6c) = param_2;
  return;
}



void __fastcall FUN_0087c510(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x0087c515. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x50))();
  return;
}



uint __fastcall FUN_0087c520(int param_1)

{
  return *(uint *)(param_1 + 0x98) >> 4 & 1;
}



uint __fastcall FUN_0087c530(int param_1)

{
  return *(uint *)(param_1 + 0x98) & 1;
}



void FUN_0087c540(char param_1)

{
  uint uVar1;
  
  uVar1 = FUN_0087b130();
  if (param_1 != '\0') {
    FUN_0087b180(uVar1 & 0xffffff6d);
    return;
  }
  FUN_0087b180(uVar1 | 0x80);
  return;
}



void __fastcall FUN_0087c570(undefined4 *param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bcae51;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxZipInputStream::vftable;
  piVar1 = (int *)param_1[0x3d];
  local_4 = 2;
  if ((piVar1 == (int *)0x0) || (piVar1 != (int *)param_1[0xc])) {
    if ((piVar1 != (int *)param_1[10]) &&
       ((piVar1 != (int *)param_1[0xb] && (piVar1 != (int *)0x0)))) {
      (**(code **)(*piVar1 + 4))(1,uVar2);
    }
  }
  else {
    FUN_0087bc20(((int *)param_1[0xc])[7]);
  }
  if ((int *)param_1[10] != (int *)0x0) {
    (**(code **)(*(int *)param_1[10] + 4))(1);
  }
  if ((int *)param_1[0xb] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0xb] + 4))(1);
  }
  if ((int *)param_1[0xc] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0xc] + 4))(1);
  }
  piVar1 = (int *)param_1[0x3f];
  *piVar1 = *piVar1 + -1;
  if (*piVar1 == 0) {
    FUN_0087bf90();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(piVar1);
  }
  piVar1 = (int *)param_1[0x40];
  if ((piVar1 != (int *)0x0) && (*piVar1 = *piVar1 + -1, *piVar1 == 0)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(piVar1);
  }
  _free((void *)param_1[0x4f]);
  if (7 < (uint)param_1[0x4e]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x49]);
  }
  param_1[0x4e] = 7;
  param_1[0x4d] = 0;
  *(undefined2 *)(param_1 + 0x49) = 0;
  local_4 = local_4 & 0xffffff00;
  FUN_0087c330();
  local_4 = 0xffffffff;
  *param_1 = wxArchiveInputStream::vftable;
  FUN_00883f00();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0087c6c0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x0087c6c9. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + 0x38) + 0x14))();
  return;
}



undefined8 __fastcall FUN_0087c6d0(int param_1)

{
  undefined8 uVar1;
  
  if (*(int *)(param_1 + 0xf4) != 0) {
                    // WARNING: Could not recover jumptable at 0x0087c6e4. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (**(code **)(**(int **)(param_1 + 0xf4) + 0x40))();
    return uVar1;
  }
  return 0;
}



void __fastcall FUN_0087c6f0(int param_1)

{
  _free(*(void **)(param_1 + 0x2c));
  if (7 < *(uint *)(param_1 + 0x28)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x14));
  }
  *(undefined4 *)(param_1 + 0x28) = 7;
  *(undefined4 *)(param_1 + 0x24) = 0;
  *(undefined2 *)(param_1 + 0x14) = 0;
  return;
}



// WARNING: Removing unreachable block (ram,0x0087c8ee)

undefined4 __fastcall FUN_0087c730(int param_1)

{
  undefined2 *puVar1;
  undefined3 uVar2;
  char cVar3;
  undefined uVar4;
  DWORD DVar5;
  int *piVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  undefined3 *puVar10;
  undefined3 *puVar11;
  uint uVar12;
  longlong lVar13;
  uint *puStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  int iStack_18;
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcae80;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar3 = (**(code **)(**(int **)(param_1 + 0x1c) + 0x1c))(DAT_0323f878 ^ (uint)&stack0xffffffc8);
  uVar4 = DAT_03235e94;
  if (cVar3 != '\0') {
    if ((DAT_032bdb68 == 0) || (DVar5 = GetCurrentThreadId(), DVar5 == DAT_032bdb68)) {
      uVar4 = DAT_03235e94;
      DAT_03235e94 = 0;
    }
    else {
      uVar4 = FUN_00842f30(0);
    }
    uStack_1c = CONCAT31(uStack_1c._1_3_,uVar4);
    uStack_4 = 0;
    lVar13 = (**(code **)(**(int **)(param_1 + 0x1c) + 0x3c))(0xffffffea,0xffffffff,2);
    uStack_4 = 0xffffffff;
    if (lVar13 == -1) {
      if ((DAT_032bdb68 != 0) && (DVar5 = GetCurrentThreadId(), DVar5 != DAT_032bdb68)) {
        FUN_00842f30(uStack_1c);
        uVar4 = DAT_03235e94;
      }
    }
    else {
      if ((DAT_032bdb68 != 0) && (DVar5 = GetCurrentThreadId(), DVar5 != DAT_032bdb68)) {
        FUN_00842f30(uStack_1c);
        uVar4 = DAT_03235e94;
      }
      DAT_03235e94 = uVar4;
      *(undefined *)(param_1 + 0xf8) = 1;
      *(undefined4 *)(param_1 + 0x118) = 0;
      piVar6 = (int *)(**(code **)(**(int **)(param_1 + 0x1c) + 0x2c))(&uStack_20,4);
      iVar7 = (**(code **)(*piVar6 + 0x30))();
      uVar4 = DAT_03235e94;
      if (iVar7 == 4) {
        uVar8 = ((uStack_20 >> 0x10) << 8 | uStack_20 >> 8 & 0xff) << 8 | uStack_20 & 0xff;
        *(uint *)(param_1 + 0x118) = uVar8;
        if (uVar8 == 0x6054b50) {
          ExceptionList = local_c;
          return 1;
        }
        lVar13 = (**(code **)(**(int **)(param_1 + 0x1c) + 0x40))();
        iVar7 = (int)((ulonglong)lVar13 >> 0x20);
        FUN_0084aa50(0x400);
        puVar1 = (undefined2 *)*puStack_24;
        *puVar1 = (undefined2)uStack_20;
        *(undefined *)(puVar1 + 1) = uStack_20._2_1_;
        uStack_1c = (uint)lVar13 - 0xffff;
        uVar8 = (uint)((uint)lVar13 < 0xffff);
        iStack_18 = iVar7 - uVar8;
        uStack_4 = 1;
        if ((iStack_18 < 0) ||
           ((iStack_18 == 0 || (SBORROW4(iVar7,uVar8) != false) != iStack_18 < 0 && (uStack_1c == 0)
            ))) {
          uStack_1c = 0;
          iStack_18 = 0;
        }
        if (CONCAT44(iStack_18,uStack_1c) < lVar13) {
          while( true ) {
            iVar7 = (int)((ulonglong)lVar13 >> 0x20);
            uVar9 = (uint)lVar13;
            uVar8 = uVar9 - 0x3fd;
            iStack_10 = iVar7 - (uint)(uVar9 < 0x3fd);
            if ((iStack_10 < iStack_18) || ((iStack_10 <= iStack_18 && (uVar8 <= uStack_1c)))) {
              iStack_10 = iStack_18;
              uVar8 = uStack_1c;
            }
            puVar1 = (undefined2 *)*puStack_24;
            uVar8 = uVar9 - uVar8;
            *(undefined2 *)((int)puVar1 + uVar8) = *puVar1;
            *(undefined *)((int)puVar1 + uVar8 + 2) = *(undefined *)(puVar1 + 1);
            uVar12 = uVar9 - uVar8;
            iVar7 = iVar7 - (uint)(uVar9 < uVar8);
            lVar13 = (**(code **)(**(int **)(param_1 + 0x1c) + 0x3c))(uVar12,iVar7,0);
            if (lVar13 == -1) break;
            piVar6 = (int *)(**(code **)(**(int **)(param_1 + 0x1c) + 0x2c))(*puStack_24,uVar8);
            uVar9 = (**(code **)(*piVar6 + 0x30))();
            if (uVar9 != uVar8) break;
            puVar10 = (undefined3 *)((int)(undefined3 *)*puStack_24 + uVar8);
            if ((undefined3 *)*puStack_24 < puVar10) {
              do {
                puVar11 = (undefined3 *)((int)puVar10 - 1);
                uVar2 = *puVar10;
                uVar4 = *(undefined *)puVar11;
                *(int *)(param_1 + 0x118) = CONCAT31(uVar2,uVar4);
                if (CONCAT31(uVar2,uVar4) == 0x6054b50) {
                  uVar8 = (*puStack_24 - (int)puVar11) + uVar8;
                  if (4 < uVar8) {
                    FUN_00882f30((undefined *)((int)puVar10 + 3),uVar8 - 4);
                  }
                  uStack_4 = 0xffffffff;
                  thunk_FUN_0043c1dd();
                  ExceptionList = local_c;
                  return 1;
                }
                puVar10 = puVar11;
              } while ((undefined3 *)*puStack_24 < puVar11);
            }
            lVar13 = CONCAT44(iVar7,uVar12);
            if ((iVar7 <= iStack_18) &&
               ((iVar7 < iStack_18 || (lVar13 = CONCAT44(iVar7,uVar12), uVar12 <= uStack_1c))))
            break;
          }
        }
        uStack_4 = 0xffffffff;
        thunk_FUN_0043c1dd();
        uVar4 = DAT_03235e94;
      }
    }
  }
  DAT_03235e94 = uVar4;
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_0087ca40(int *param_1_00,char param_1)

{
  uint uVar1;
  uint uVar2;
  char cVar3;
  void *pvVar4;
  int iVar5;
  int iVar6;
  code *pcVar7;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8b4b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((param_1_00[0x3b] == 0 || (param_1_00[0x3d] != 0)))
     ) {
    FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x6d0,"wxZipInputStream::OpenDecompressor",
                 "AfterHeader()",0,DAT_0323f878 ^ (uint)&stack0xffffffe4);
  }
  uVar1 = param_1_00[0x18];
  uVar2 = param_1_00[0x19];
  if (param_1 != '\0') {
    *(undefined *)(param_1_00 + 0x3a) = 1;
  }
  if (*(char *)(param_1_00 + 0x3a) != '\0') {
    if ((uVar1 & uVar2) == 0xffffffff) {
      if (param_1_00[0xc] == 0) {
        pvVar4 = operator_new(0x38);
        local_4 = 0;
        if (pvVar4 == (void *)0x0) {
          iVar6 = 0;
        }
        else {
          iVar6 = FUN_0087c1b0(param_1_00[7]);
        }
        local_4 = 0xffffffff;
        param_1_00[0xc] = iVar6;
      }
      iVar5 = (**(code **)(*param_1_00 + 0x54))(*(undefined4 *)(param_1_00[0xc] + 0x30));
      iVar6 = param_1_00[0xc];
      if (iVar5 == 0) {
        param_1_00[0x3d] = 0;
      }
      else {
        *(int *)(iVar6 + 0x1c) = iVar5;
        iVar5 = *(int *)(iVar6 + 0x30);
        *(undefined4 *)(iVar6 + 0x28) = 0;
        *(undefined4 *)(iVar6 + 0x2c) = 0;
        *(undefined4 *)(iVar6 + 0xc) = 0;
        *(undefined4 *)(iVar5 + 0x38) = 0;
        *(undefined4 *)(iVar5 + 0x34) = 0;
        *(undefined4 *)(iVar5 + 0x28) = 0;
        *(undefined4 *)(iVar5 + 0x2c) = 0;
        *(undefined4 *)(iVar5 + 0xc) = 0;
        param_1_00[0x3d] = iVar6;
      }
    }
    else {
      iVar6 = param_1_00[10];
      *(undefined4 *)(iVar6 + 0x28) = 0;
      *(undefined4 *)(iVar6 + 0x2c) = 0;
      *(undefined4 *)(iVar6 + 0xc) = 0;
      *(uint *)(iVar6 + 0x30) = uVar1;
      *(uint *)(iVar6 + 0x34) = uVar2;
      param_1_00[0x3d] = param_1_00[10];
    }
    goto LAB_0087cbaa;
  }
  if ((uVar1 & uVar2) == 0xffffffff) {
LAB_0087cb97:
    iVar6 = param_1_00[7];
    pcVar7 = *(code **)(*param_1_00 + 0x54);
  }
  else {
    if (*(short *)((int)param_1_00 + 0x4a) == 8) {
      cVar3 = FUN_008a6a50();
      if (cVar3 == '\0') goto LAB_0087cb97;
    }
    iVar6 = param_1_00[10];
    *(undefined4 *)(iVar6 + 0x28) = 0;
    *(undefined4 *)(iVar6 + 0x2c) = 0;
    *(undefined4 *)(iVar6 + 0xc) = 0;
    *(uint *)(iVar6 + 0x30) = uVar1;
    *(uint *)(iVar6 + 0x34) = uVar2;
    iVar6 = param_1_00[10];
    pcVar7 = *(code **)(*param_1_00 + 0x54);
  }
  iVar6 = (*pcVar7)(iVar6);
  param_1_00[0x3d] = iVar6;
LAB_0087cbaa:
  iVar6 = FUN_008ecba0(0,0,0);
  param_1_00[0x3c] = iVar6;
  if (param_1_00[0x3d] == 0) {
    iVar6 = 3;
  }
  else {
    iVar6 = *(int *)(param_1_00[0x3d] + 0xc);
  }
  param_1_00[3] = iVar6;
  (**(code **)(*param_1_00 + 0x10))();
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall
FUN_0087cc00(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcaec1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008a6910(param_1,param_3);
  *param_1_00 = wxZipOutputStream::vftable;
  local_4 = 0;
  param_1_00[10] = wxListBase::vftable;
  FUN_0086ad40(0);
  param_1_00[10] = wxZipEntryList_::vftable;
  param_1_00[0x26] = 7;
  param_1_00[0x25] = 0;
  *(undefined2 *)(param_1_00 + 0x21) = 0;
  param_1_00[0x27] = 0;
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_0087b2b0(param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined8 __fastcall FUN_0087ccb0(int param_1)

{
  return *(undefined8 *)(param_1 + 0x60);
}



undefined4 * __thiscall
FUN_0087ccc0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcaec1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008a6930(param_1,param_3);
  *param_1_00 = wxZipOutputStream::vftable;
  local_4 = 0;
  param_1_00[10] = wxListBase::vftable;
  FUN_0086ad40(0);
  param_1_00[10] = wxZipEntryList_::vftable;
  param_1_00[0x26] = 7;
  param_1_00[0x25] = 0;
  *(undefined2 *)(param_1_00 + 0x21) = 0;
  param_1_00[0x27] = 0;
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_0087b2b0(param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_0087cd70(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xa8);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_0087cc00(param_1,0xffffffff,iVar3);
    ExceptionList = local_c;
    return uVar4;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_0087ce10(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xa8);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_0087ccc0(param_1,0xffffffff,iVar3);
    ExceptionList = local_c;
    return uVar4;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall thunk_FUN_0087cd70(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &pvStack_c;
  pvVar2 = operator_new(0xa8);
  uStack_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_0087cc00(param_1,0xffffffff,iVar3);
    ExceptionList = pvStack_c;
    return uVar4;
  }
  ExceptionList = pvStack_c;
  return 0;
}



undefined4 __thiscall thunk_FUN_0087ce10(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &pvStack_c;
  pvVar2 = operator_new(0xa8);
  uStack_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_0087ccc0(param_1,0xffffffff,iVar3);
    ExceptionList = pvStack_c;
    return uVar4;
  }
  ExceptionList = pvStack_c;
  return 0;
}



undefined4 __thiscall FUN_0087ced0(undefined4 param_1_00,byte param_1)

{
  FUN_0087c330();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0087cef0(undefined4 param_1_00,byte param_1)

{
  FUN_0087c570();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_0087cf10(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x38,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int __thiscall FUN_0087cf50(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x70,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



void __thiscall FUN_0087cf90(undefined4 param_1_00,int *param_1,short param_2)

{
  int unaff_ESI;
  undefined4 *local_40;
  undefined4 local_3c;
  undefined auStack_34 [4];
  uint uStack_30;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00bcaf09;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_40;
  ExceptionList = &local_c;
  local_3c = 0;
  if (param_2 == 0) {
    FUN_004325b6(PTR_DAT_03236318);
  }
  else {
    FUN_0084aa50(param_2);
    local_4 = 1;
    (**(code **)(*param_1 + 0x2c))(*local_40,param_2);
    FUN_0084b3b0(*local_40,param_1_00);
    *(undefined4 *)(unaff_ESI + 0x18) = 7;
    *(undefined4 *)(unaff_ESI + 0x14) = 0;
    local_4._0_1_ = 2;
    *(undefined2 *)(unaff_ESI + 4) = 0;
    FID_conflict_assign(auStack_34,0,0xffffffff);
    *(undefined4 *)(unaff_ESI + 0x1c) = 0;
    local_3c = 1;
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
    uStack_1c = 7;
    uStack_20 = 0;
    uStack_30 = uStack_30 & 0xffff0000;
    local_4 = (uint)local_4._1_3_ << 8;
    thunk_FUN_0043c1dd();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_0087d0c0(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcaf53;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 4);
  param_1_00[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[2] = 0;
  *param_1_00 = wxZipEntry::vftable;
  *(undefined *)(param_1_00 + 3) = *(undefined *)(param_1 + 0xc);
  *(undefined *)((int)param_1_00 + 0xd) = *(undefined *)(param_1 + 0xd);
  *(undefined2 *)((int)param_1_00 + 0xe) = *(undefined2 *)(param_1 + 0xe);
  *(undefined2 *)(param_1_00 + 4) = *(undefined2 *)(param_1 + 0x10);
  *(undefined2 *)((int)param_1_00 + 0x12) = *(undefined2 *)(param_1 + 0x12);
  param_1_00[6] = *(undefined4 *)(param_1 + 0x18);
  param_1_00[7] = *(undefined4 *)(param_1 + 0x1c);
  param_1_00[8] = *(undefined4 *)(param_1 + 0x20);
  param_1_00[10] = *(undefined4 *)(param_1 + 0x28);
  param_1_00[0xb] = *(undefined4 *)(param_1 + 0x2c);
  param_1_00[0xc] = *(undefined4 *)(param_1 + 0x30);
  param_1_00[0xd] = *(undefined4 *)(param_1 + 0x34);
  param_1_00[0x14] = 7;
  param_1_00[0x13] = 0;
  *(undefined2 *)(param_1_00 + 0xf) = 0;
  local_4 = 0;
  FID_conflict_assign(param_1 + 0x38,0,0xffffffff);
  param_1_00[0x15] = 0;
  param_1_00[0x18] = *(undefined4 *)(param_1 + 0x60);
  param_1_00[0x19] = *(undefined4 *)(param_1 + 100);
  param_1_00[0x1a] = *(undefined4 *)(param_1 + 0x68);
  param_1_00[0x1b] = *(undefined4 *)(param_1 + 0x6c);
  param_1_00[0x22] = 7;
  param_1_00[0x21] = 0;
  *(undefined2 *)(param_1_00 + 0x1d) = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  FID_conflict_assign(param_1 + 0x70,0,0xffffffff);
  param_1_00[0x23] = 0;
  *(undefined2 *)(param_1_00 + 0x25) = *(undefined2 *)(param_1 + 0x94);
  *(undefined2 *)((int)param_1_00 + 0x96) = *(undefined2 *)(param_1 + 0x96);
  param_1_00[0x26] = *(undefined4 *)(param_1 + 0x98);
  iVar1 = *(int *)(param_1 + 0x9c);
  if (iVar1 != 0) {
    *(int *)(iVar1 + 0xc) = *(int *)(iVar1 + 0xc) + 1;
  }
  param_1_00[0x27] = iVar1;
  iVar1 = *(int *)(param_1 + 0xa0);
  if (iVar1 != 0) {
    *(int *)(iVar1 + 0xc) = *(int *)(iVar1 + 0xc) + 1;
  }
  param_1_00[0x28] = iVar1;
  param_1_00[0x29] = 0;
  param_1_00[0x2a] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_0087d240(int param_1_00,int param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  int *piVar4;
  
  iVar3 = param_1;
  if (param_1 != param_1_00) {
    *(undefined *)(param_1_00 + 0xc) = *(undefined *)(param_1 + 0xc);
    *(undefined *)(param_1_00 + 0xd) = *(undefined *)(param_1 + 0xd);
    *(undefined2 *)(param_1_00 + 0xe) = *(undefined2 *)(param_1 + 0xe);
    *(undefined2 *)(param_1_00 + 0x10) = *(undefined2 *)(param_1 + 0x10);
    *(undefined2 *)(param_1_00 + 0x12) = *(undefined2 *)(param_1 + 0x12);
    *(undefined4 *)(param_1_00 + 0x18) = *(undefined4 *)(param_1 + 0x18);
    *(undefined4 *)(param_1_00 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);
    *(undefined4 *)(param_1_00 + 0x20) = *(undefined4 *)(param_1 + 0x20);
    *(undefined4 *)(param_1_00 + 0x28) = *(undefined4 *)(param_1 + 0x28);
    *(undefined4 *)(param_1_00 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);
    *(undefined4 *)(param_1_00 + 0x30) = *(undefined4 *)(param_1 + 0x30);
    *(undefined4 *)(param_1_00 + 0x34) = *(undefined4 *)(param_1 + 0x34);
    if (param_1_00 + 0x38 != param_1 + 0x38) {
      FID_conflict_assign(param_1 + 0x38,0,0xffffffff);
    }
    *(undefined4 *)(param_1_00 + 0x60) = *(undefined4 *)(iVar3 + 0x60);
    *(undefined4 *)(param_1_00 + 100) = *(undefined4 *)(iVar3 + 100);
    *(undefined4 *)(param_1_00 + 0x68) = *(undefined4 *)(iVar3 + 0x68);
    *(undefined4 *)(param_1_00 + 0x6c) = *(undefined4 *)(iVar3 + 0x6c);
    if (param_1_00 + 0x70 != iVar3 + 0x70) {
      FID_conflict_assign(iVar3 + 0x70,0,0xffffffff);
    }
    *(undefined2 *)(param_1_00 + 0x94) = *(undefined2 *)(iVar3 + 0x94);
    *(undefined2 *)(param_1_00 + 0x96) = *(undefined2 *)(iVar3 + 0x96);
    *(undefined4 *)(param_1_00 + 0x98) = *(undefined4 *)(iVar3 + 0x98);
    iVar1 = *(int *)(iVar3 + 0x9c);
    puVar2 = *(undefined4 **)(param_1_00 + 0x9c);
    if (puVar2 != (undefined4 *)0x0) {
      piVar4 = puVar2 + 3;
      *piVar4 = *piVar4 + -1;
      if (*piVar4 == 0) {
        FUN_00a3f66c(*puVar2);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(puVar2);
      }
    }
    if (iVar1 != 0) {
      *(int *)(iVar1 + 0xc) = *(int *)(iVar1 + 0xc) + 1;
    }
    *(int *)(param_1_00 + 0x9c) = iVar1;
    puVar2 = *(undefined4 **)(param_1_00 + 0xa0);
    iVar3 = *(int *)(iVar3 + 0xa0);
    if (puVar2 != (undefined4 *)0x0) {
      piVar4 = puVar2 + 3;
      *piVar4 = *piVar4 + -1;
      if (*piVar4 == 0) {
        FUN_00a3f66c(*puVar2);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(puVar2);
      }
    }
    if (iVar3 != 0) {
      *(int *)(iVar3 + 0xc) = *(int *)(iVar3 + 0xc) + 1;
    }
    *(int *)(param_1_00 + 0xa0) = iVar3;
    piVar4 = *(int **)(param_1_00 + 0xa8);
    *(undefined4 *)(param_1_00 + 0xa4) = 0;
    if (piVar4 != (int *)0x0) {
      param_1 = *(undefined4 *)(param_1_00 + 0x60);
      FUN_009115c0(&param_1);
      *piVar4 = *piVar4 + -1;
      if (*piVar4 == 0) {
        FUN_0087bf90();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(piVar4);
      }
      *(undefined4 *)(param_1_00 + 0xa8) = 0;
    }
  }
  return param_1_00;
}



void __thiscall FUN_0087d3d0(int *param_1_00,int param_1,undefined4 param_3)

{
  short *psVar1;
  undefined2 *puVar2;
  char cVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  uint uVar7;
  bool bVar8;
  undefined auStack_118 [3];
  char cStack_115;
  undefined4 local_114;
  int local_110;
  undefined auStack_10c [8];
  undefined auStack_104 [8];
  undefined auStack_fc [36];
  undefined auStack_d8 [36];
  undefined auStack_b4 [4];
  uint uStack_b0;
  uint uStack_a0;
  uint uStack_9c;
  void *pvStack_98;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  uint uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1d0c;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_118;
  ExceptionList = &local_c;
  local_114 = 0;
  local_110 = param_1;
  cVar3 = (**(code **)(*param_1_00 + 0x1c))(DAT_0323f878 ^ (uint)&stack0xfffffed8);
  if ((cVar3 == '\0') || (cStack_115 = '\x01', param_1_00[0x13] == 0)) {
    cStack_115 = '\0';
  }
  iVar4 = FUN_00855a20(param_3);
  if (iVar4 == 1) {
    bVar8 = cStack_115 == '\0';
    if (bVar8) {
      param_1_00 = param_1_00 + 0xe;
    }
    else {
      param_1_00 = (int *)FUN_008533d0(auStack_d8,param_1_00 + 0xe,&DAT_03057848);
      uStack_4 = 4;
      local_114 = 4;
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(param_1_00,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    if (!bVar8) {
      FUN_0040159c();
    }
  }
  else if (iVar4 == 3) {
    bVar8 = cStack_115 == '\0';
    if (bVar8) {
      param_1_00 = param_1_00 + 0xe;
    }
    else {
      param_1_00 = (int *)FUN_008533d0(auStack_fc,param_1_00 + 0xe,&DAT_0305784c);
      uStack_4 = 1;
      local_114 = 1;
    }
    uStack_b0 = uStack_b0 & 0xffff0000;
    uStack_9c = 7;
    uStack_a0 = 0;
    FID_conflict_assign(param_1_00,0,0xffffffff);
    pvStack_98 = (void *)0x0;
    uStack_4 = 3;
    if (!bVar8) {
      local_114 = 0;
      FUN_0040159c();
    }
    uVar7 = 0;
    if (uStack_a0 != 0) {
      do {
        piVar5 = (int *)FUN_0081b542(auStack_104,uVar7);
        iVar4 = *piVar5;
        psVar1 = (short *)piVar5[1];
        if (iVar4 != -4) {
          if (iVar4 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar4 + 0x18) < 8) {
            iVar6 = iVar4 + 4;
          }
          else {
            iVar6 = *(int *)(iVar4 + 4);
          }
          if ((short *)(iVar6 + *(int *)(iVar4 + 0x14) * 2) <= psVar1) {
            FUN_00a3fb10();
          }
        }
        if (*psVar1 == 0x2f) {
          piVar5 = (int *)FUN_0081b542(auStack_10c,uVar7);
          iVar4 = *piVar5;
          puVar2 = (undefined2 *)piVar5[1];
          if (iVar4 != -4) {
            if (iVar4 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(iVar4 + 0x18) < 8) {
              iVar6 = iVar4 + 4;
            }
            else {
              iVar6 = *(int *)(iVar4 + 4);
            }
            if ((undefined2 *)(iVar6 + *(int *)(iVar4 + 0x14) * 2) <= puVar2) {
              FUN_00a3fb10();
            }
          }
          *puVar2 = 0x5c;
        }
        uVar7 = uVar7 + 1;
      } while (uVar7 < uStack_a0);
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(auStack_b4,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(pvStack_98);
    if (7 < uStack_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_b0);
    }
  }
  else {
    FUN_00432caa();
    uStack_4 = 5;
    if (cStack_115 == '\0') {
      FUN_00858e70(param_1_00 + 0xe,1);
    }
    else {
      FUN_00859540(param_1_00 + 0xe,1);
    }
    FUN_008581b0(param_1,param_3);
    local_114 = 2;
    uStack_4 = uStack_4 & 0xffffff00;
    FUN_0043250a();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int FUN_0087d6d0(int param_1,int param_2,undefined4 param_3,char *param_4)

{
  short sVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  short **ppsVar6;
  short **ppsVar7;
  short *psVar8;
  int iVar9;
  short **ppsVar10;
  undefined local_b8 [4];
  uint local_b4;
  undefined4 local_a4;
  uint local_a0;
  void *local_9c;
  undefined local_94 [136];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcafa8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  iVar4 = FUN_00855a20(param_3,uVar3);
  if (iVar4 == 1) {
    if (param_1 != param_2) {
      FID_conflict_assign(param_2,0,0xffffffff);
    }
  }
  else {
    FUN_00432544(param_2,param_3);
    local_4 = 1;
    iVar4 = FUN_008581b0(local_b8,1);
    local_4._0_1_ = 2;
    if (param_1 != iVar4) {
      FID_conflict_assign(iVar4,0,0xffffffff);
    }
    _free(local_9c);
    if (7 < local_a0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b4);
    }
    local_a0 = 7;
    local_a4 = 0;
    local_b4 = local_b4 & 0xffff0000;
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0043250a();
  }
  if (*(int *)(param_1 + 0x14) != 0) {
    piVar5 = (int *)FUN_0081b3d8(local_94);
    if (*piVar5 != -4) {
      if (*piVar5 == 0) {
        FUN_00a3fb10();
      }
      iVar4 = *piVar5;
      if (*(uint *)(iVar4 + 0x18) < 8) {
        iVar9 = iVar4 + 4;
      }
      else {
        iVar9 = *(int *)(iVar4 + 4);
      }
      if ((uint)(iVar9 + *(int *)(iVar4 + 0x14) * 2) <= (uint)piVar5[1]) {
        FUN_00a3fb10();
      }
    }
    if (*(short *)piVar5[1] == 0x2f) {
      cVar2 = '\x01';
      goto LAB_0087d84d;
    }
  }
  cVar2 = '\0';
LAB_0087d84d:
  if (param_4 != (char *)0x0) {
    *param_4 = cVar2;
  }
  if (cVar2 != '\0') {
    FID_conflict_erase(*(int *)(param_1 + 0x14) + -1,0xffffffff);
  }
  if (*(int *)(param_1 + 0x14) != 0) {
    do {
      uVar3 = *(uint *)(param_1 + 0x18);
      if (uVar3 < 8) {
        ppsVar10 = (short **)(param_1 + 4);
      }
      else {
        ppsVar10 = *(short ***)(param_1 + 4);
      }
      if (ppsVar10 == (short **)0x0) {
LAB_0087d8b0:
        FUN_00a3fb10();
      }
      else {
        ppsVar7 = (short **)(param_1 + 4);
        ppsVar6 = ppsVar7;
        if (7 < uVar3) {
          ppsVar6 = (short **)*ppsVar7;
        }
        if (ppsVar10 < ppsVar6) goto LAB_0087d8b0;
        if (7 < uVar3) {
          ppsVar7 = (short **)*ppsVar7;
        }
        if ((short **)((int)ppsVar7 + *(int *)(param_1 + 0x14) * 2) < ppsVar10) goto LAB_0087d8b0;
      }
      if (param_1 != -4) {
        if (*(uint *)(param_1 + 0x18) < 8) {
          iVar4 = param_1 + 4;
        }
        else {
          iVar4 = *(int *)(param_1 + 4);
        }
        if ((short **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppsVar10) {
          FUN_00a3fb10();
        }
      }
    } while ((*(short *)ppsVar10 == 0x2f) &&
            (FID_conflict_erase(0,1), *(int *)(param_1 + 0x14) != 0));
    iVar4 = *(int *)(param_1 + 0x14);
    while ((iVar4 != 0 && (iVar4 = FUN_00850430(0,2,&DAT_00d29124,0xffffffff), iVar4 == 0))) {
      FID_conflict_erase(0,2);
      iVar4 = *(int *)(param_1 + 0x14);
    }
  }
  iVar4 = FUN_008507a0(&DAT_00fae798);
  if ((iVar4 == 0) || (iVar4 = FUN_008507a0(&DAT_00d240e0), iVar4 == 0)) {
    if (PTR_DAT_03236318 == (undefined *)0x0) {
      FUN_00432156();
    }
    else {
      psVar8 = (short *)PTR_DAT_03236318;
      do {
        sVar1 = *psVar8;
        psVar8 = psVar8 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign(PTR_DAT_03236318,(int)psVar8 - (int)(PTR_DAT_03236318 + 2) >> 1);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0087d990(int *param_1_00,int *param_1,undefined4 param_2)

{
  byte bVar1;
  undefined2 uVar2;
  short sVar3;
  int *piVar4;
  undefined4 uVar5;
  int iVar6;
  uint uVar7;
  ushort unaff_SI;
  undefined *puVar8;
  undefined4 uVar9;
  uint uVar10;
  undefined4 local_98;
  int iStack_94;
  uint uStack_90;
  undefined4 uStack_80;
  uint uStack_7c;
  void *pvStack_78;
  undefined local_5c [56];
  int iStack_24;
  undefined4 local_1c;
  undefined4 local_18;
  void *local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcafe8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_98;
  ExceptionList = &local_c;
  local_98 = param_2;
  uVar9 = 0x1a;
  puVar8 = local_5c;
  local_1c = 0;
  local_18 = 0;
  local_14 = (void *)((uint)local_14 & 0xffffff00);
  piVar4 = (int *)(**(code **)(*param_1 + 0x2c))(puVar8,0x1a,DAT_0323f878 ^ (uint)&stack0xffffff58);
  iStack_24 = (**(code **)(*piVar4 + 0x30))();
  local_1c = CONCAT31(local_1c._1_3_,iStack_24 == 0x1a);
  if (iStack_24 != 0x1a) goto LAB_0087dbef;
  uVar2 = FUN_0087ae50();
  *(undefined2 *)((int)param_1_00 + 0xe) = uVar2;
  uVar2 = FUN_0087ae50();
  *(undefined2 *)(param_1_00 + 4) = uVar2;
  uVar2 = FUN_0087ae50();
  iVar6 = *param_1_00;
  *(undefined2 *)((int)param_1_00 + 0x12) = uVar2;
  local_98 = 0;
  iStack_94 = 0x80000000;
  uVar5 = FUN_0087aeb0();
  uVar5 = FUN_0086cd70(uVar5);
  (**(code **)(iVar6 + 0x30))(uVar5);
  iVar6 = FUN_0087aeb0();
  uStack_90 = FUN_0087aeb0();
  iStack_94 = FUN_0087aeb0();
  sVar3 = FUN_0087ae50();
  FUN_0087ae50();
  bVar1 = ~(*(byte *)(param_1_00 + 4) >> 3) & 1;
  if ((((bVar1 == 0) && (iVar6 == 0)) || (param_1_00[8] = iVar6, bVar1 == 0)) &&
     ((uStack_90 == 0 && (*(short *)((int)param_1_00 + 0x12) != 0)))) {
LAB_0087daf5:
    if ((iStack_94 != 0) || (*(short *)((int)param_1_00 + 0x12) == 0)) goto LAB_0087db01;
  }
  else {
    param_1_00[10] = uStack_90;
    param_1_00[0xb] = 0;
    if (bVar1 == 0) goto LAB_0087daf5;
LAB_0087db01:
    param_1_00[0xc] = iStack_94;
    param_1_00[0xd] = 0;
  }
  uVar5 = FUN_0087cf90(param_1,sVar3);
  local_10 = 0;
  (**(code **)(*param_1_00 + 0x40))(uVar5,1);
  local_18 = 0xffffffff;
  _free(pvStack_78);
  if (7 < uStack_7c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_90);
  }
  uStack_90 = uStack_90 & 0xffff0000;
  uStack_7c = 7;
  uStack_80 = 0;
  uVar10 = (uint)unaff_SI;
  uVar7 = (**(code **)(*param_1 + 0x30))();
  if ((uVar7 == unaff_SI) &&
     ((sVar3 != 0 || ((param_1_00[0x28] != 0 && (*(int *)(param_1_00[0x28] + 4) != 0)))))) {
    FUN_0087b070(puVar8,uVar9,uVar10);
    if (sVar3 != 0) {
      (**(code **)(*param_1 + 0x2c))(*(undefined4 *)param_1_00[0x28],sVar3);
      (**(code **)(*param_1 + 0x30))();
    }
  }
LAB_0087dbef:
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0087dc20(int *param_1_00,int *param_1,undefined4 param_2)

{
  char *pcVar1;
  char cVar2;
  void **ppvVar3;
  undefined4 uVar4;
  void **ppvVar5;
  undefined **ppuVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  char **unaff_EBP;
  void **appvStack_54 [4];
  undefined4 auStack_44 [4];
  undefined local_34 [4];
  uint uStack_30;
  void *pvStack_2c;
  void *pvStack_20;
  undefined uStack_18;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb040;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)appvStack_54;
  ppvVar3 = (void **)(DAT_0323f878 ^ (uint)&stack0xffffff9c);
  ExceptionList = &local_c;
  (**(code **)(*param_1_00 + 0x2c))(local_34,1);
  local_c = (void *)0x0;
  uVar4 = FUN_00432413(appvStack_54,param_2);
  local_c._0_1_ = 1;
  FUN_00432305(uVar4);
  local_c = (void *)CONCAT31(local_c._1_3_,3);
  ppvVar5 = (void **)FUN_00850350();
  if (appvStack_54[0] != ppvVar5) {
    *(short *)(appvStack_54[0] + 2) = *(short *)(appvStack_54[0] + 2) + -1;
    if (*(short *)(appvStack_54[0] + 2) == 0) {
      if (*(char *)((int)appvStack_54[0] + 10) != '\0') {
        _free(*appvStack_54[0]);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(appvStack_54[0]);
    }
    appvStack_54[0] = (void **)FUN_00850350();
  }
  ppuVar6 = (undefined **)*unaff_EBP;
  if (ppuVar6 == (undefined **)0x0) {
    ppuVar6 = &PTR_02bd3fc0;
  }
  pcVar1 = (char *)((int)ppuVar6 + 1);
  do {
    cVar2 = *(char *)ppuVar6;
    ppuVar6 = (undefined **)((int)ppuVar6 + 1);
  } while (cVar2 != '\0');
  uVar7 = (int)ppuVar6 - (int)pcVar1;
  if (DAT_032bd4d8 == 0) {
    DAT_032bd4d8 = FUN_00861480();
  }
  FUN_008a8470(param_1,DAT_032bd4d8);
  uVar10 = (uint)*(ushort *)((int)param_1_00 + 0x12);
  uVar8 = (uint)*(ushort *)(param_1_00 + 4);
  local_c = (void *)CONCAT31(local_c._1_3_,4);
  FUN_008a85a0(*(undefined2 *)((int)param_1_00 + 0xe));
  FUN_008a85a0(uVar8);
  FUN_008a85a0(uVar10);
  (**(code **)(*param_1_00 + 0x10))(auStack_44);
  uVar4 = FUN_0086d3d0();
  FUN_008a84c0(uVar4);
  FUN_008a84c0(param_1_00[8]);
  if ((param_1_00[10] & param_1_00[0xb]) == 0xffffffff) {
    iVar9 = 0;
  }
  else {
    iVar9 = param_1_00[10];
  }
  FUN_008a84c0(iVar9);
  if ((param_1_00[0xc] & param_1_00[0xd]) == 0xffffffff) {
    iVar9 = 0;
  }
  else {
    iVar9 = param_1_00[0xc];
  }
  FUN_008a84c0(iVar9);
  FUN_008a85a0(uVar7);
  if (param_1_00[0x28] == 0) {
    uVar8 = 0;
  }
  else {
    uVar8 = *(uint *)(param_1_00[0x28] + 4);
  }
  FUN_008a8520(uVar8);
  (**(code **)(*param_1 + 0x28))(unaff_EBP,uVar7 & 0xffff);
  if ((short)uVar8 != 0) {
    (**(code **)(*param_1 + 0x28))(*(undefined4 *)param_1_00[0x28],uVar8 & 0xffff);
  }
  uStack_18 = 3;
  FUN_008a84a0();
  uStack_18 = 0;
  ppvVar5 = (void **)FUN_00850350();
  if (ppvVar3 != ppvVar5) {
    *(short *)(ppvVar3 + 2) = *(short *)(ppvVar3 + 2) + -1;
    if (*(short *)(ppvVar3 + 2) == 0) {
      if (*(char *)((int)ppvVar3 + 10) != '\0') {
        _free(*ppvVar3);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar3);
    }
    ppvVar3 = (void **)FUN_00850350();
  }
  _free(pvStack_2c);
  if (7 < uStack_30) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(auStack_44[0]);
  }
  ExceptionList = pvStack_20;
  ___security_check_cookie_4(ppvVar3);
  return;
}



void __thiscall FUN_0087deb0(int *param_1_00,int *param_1,undefined4 param_2)

{
  undefined *puVar1;
  undefined2 uVar2;
  int *piVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  ushort unaff_BP;
  undefined4 unaff_ESI;
  uint uVar9;
  undefined4 uStack_b8;
  undefined4 local_b4;
  uint uStack_b0;
  void *pvStack_ac;
  undefined auStack_64 [8];
  undefined local_5c [52];
  undefined4 uStack_28;
  uint uStack_24;
  uint uStack_20;
  undefined4 local_1c;
  undefined4 local_18;
  void *local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb083;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&uStack_b8;
  ExceptionList = &local_c;
  local_b4 = param_2;
  local_1c = 0;
  local_18 = 0;
  local_14 = (void *)((uint)local_14 & 0xffffff00);
  piVar3 = (int *)(**(code **)(*param_1 + 0x2c))
                            (local_5c,0x2a,DAT_0323f878 ^ (uint)&stack0xffffff38);
  uStack_24 = (**(code **)(*piVar3 + 0x30))();
  local_1c = CONCAT31(local_1c._1_3_,uStack_24 == 0x2a);
  if (uStack_24 == 0x2a) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (0x29 < uStack_20)) {
      FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0xd2,"wxZipHeader::Read8","m_pos < m_size",0);
    }
    uVar8 = uStack_20 + 1;
    *(undefined *)((int)param_1_00 + 0xd) = auStack_64[uStack_20];
    uStack_20 = uVar8;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_24 <= uVar8)) {
      FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0xd2,"wxZipHeader::Read8","m_pos < m_size",0);
    }
    puVar1 = auStack_64 + uStack_20;
    uStack_20 = uStack_20 + 1;
    *(undefined *)(param_1_00 + 3) = *puVar1;
    uVar2 = FUN_0087ae50();
    *(undefined2 *)((int)param_1_00 + 0xe) = uVar2;
    uVar2 = FUN_0087ae50();
    *(undefined2 *)(param_1_00 + 4) = uVar2;
    uVar2 = FUN_0087ae50();
    iVar5 = *param_1_00;
    *(undefined2 *)((int)param_1_00 + 0x12) = uVar2;
    uStack_b8 = 0;
    local_b4 = 0x80000000;
    uVar4 = FUN_0087aeb0();
    uVar4 = FUN_0086cd70(uVar4);
    (**(code **)(iVar5 + 0x30))(uVar4);
    iVar5 = FUN_0087aeb0();
    param_1_00[8] = iVar5;
    iVar6 = FUN_0087aeb0();
    iVar5 = *param_1_00;
    param_1_00[0xb] = 0;
    param_1_00[10] = iVar6;
    uVar4 = FUN_0087aeb0();
    (**(code **)(iVar5 + 0x34))(uVar4,0);
    uVar8 = FUN_0087ae50();
    uVar8 = uVar8 & 0xffff;
    FUN_0087ae50();
    FUN_0087ae50();
    uVar2 = FUN_0087ae50();
    *(undefined2 *)(param_1_00 + 0x25) = uVar2;
    uVar2 = FUN_0087ae50();
    *(undefined2 *)((int)param_1_00 + 0x96) = uVar2;
    iVar6 = FUN_0087aeb0();
    iVar5 = *param_1_00;
    param_1_00[0x26] = iVar6;
    uVar4 = FUN_0087aeb0();
    (**(code **)(iVar5 + 0x48))(uVar4,0);
    uVar4 = FUN_0087cf90(param_1,uVar8);
    uStack_20 = 0;
    (**(code **)(*param_1_00 + 0x40))(uVar4,1);
    uStack_28 = 0xffffffff;
    _free(pvStack_ac);
    if (7 < uStack_b0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(unaff_ESI);
    }
    uVar9 = uVar8;
    uVar7 = (**(code **)(*param_1 + 0x30))();
    if (uVar7 == uVar8) {
      if ((unaff_BP != 0) || ((param_1_00[0x27] != 0 && (*(int *)(param_1_00[0x27] + 4) != 0)))) {
        FUN_0087b070(uVar9);
        if (unaff_BP != 0) {
          (**(code **)(*param_1 + 0x2c))(*(undefined4 *)param_1_00[0x27],(uint)unaff_BP);
          uVar8 = (**(code **)(*param_1 + 0x30))();
          if (uVar8 != unaff_BP) goto LAB_0087e206;
        }
      }
      if ((short)uStack_b0 == 0) {
        FUN_00432156();
      }
      else {
        piVar3 = (int *)FUN_0087cf90(param_1,uStack_b0);
        local_c = (void *)0x1;
        if (param_1_00 + 0x1c != piVar3) {
          FID_conflict_assign(piVar3,0,0xffffffff);
        }
        local_c = (void *)0xffffffff;
        FUN_0040159c();
        (**(code **)(*param_1 + 0x30))();
      }
    }
  }
LAB_0087e206:
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0087e230(int *param_1_00,int *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uVar2;
  void **ppvVar3;
  undefined **ppuVar4;
  uint uVar5;
  uint uVar6;
  void **ppvVar7;
  uint uVar8;
  char **unaff_EBX;
  char **unaff_EBP;
  uint uVar9;
  undefined8 uVar10;
  int iVar11;
  void **ppvVar12;
  undefined auStack_64 [4];
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined **ppuStack_58;
  undefined **ppuStack_54;
  void **ppvStack_50;
  void **ppvStack_4c;
  int iStack_48;
  int aiStack_44 [3];
  uint uStack_38;
  void *local_34 [3];
  void *pvStack_28;
  undefined uStack_20;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb0f0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_64;
  ExceptionList = &local_c;
  ppvVar12 = (void **)0x1;
  ppvVar7 = local_34;
  (**(code **)(*param_1_00 + 0x2c))(ppvVar7,1,DAT_0323f878 ^ (uint)&stack0xffffff8c);
  local_c = (void *)0x0;
  uVar2 = FUN_00432413(&ppvStack_4c,param_2);
  local_c._0_1_ = 1;
  FUN_00432305(uVar2);
  local_c = (void *)CONCAT31(local_c._1_3_,3);
  ppvVar3 = (void **)FUN_00850350();
  if (ppvStack_4c != ppvVar3) {
    *(short *)(ppvStack_4c + 2) = *(short *)(ppvStack_4c + 2) + -1;
    if (*(short *)(ppvStack_4c + 2) == 0) {
      if (*(char *)((int)ppvStack_4c + 10) != '\0') {
        _free(*ppvStack_4c);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvStack_4c);
    }
    ppvStack_4c = (void **)FUN_00850350();
  }
  ppuStack_58 = (undefined **)*unaff_EBP;
  if (ppuStack_58 == (undefined **)0x0) {
    ppuStack_58 = &PTR_02bd3fc0;
  }
  ppuVar4 = ppuStack_58;
  do {
    cVar1 = *(char *)ppuVar4;
    ppuVar4 = (undefined **)((int)ppuVar4 + 1);
  } while (cVar1 != '\0');
  uVar5 = (int)ppuVar4 - (int)((int)ppuStack_58 + 1);
  uVar2 = FUN_00432413(&ppvStack_50,param_2);
  local_c._0_1_ = 4;
  FUN_00432305(uVar2);
  local_c = (void *)CONCAT31(local_c._1_3_,6);
  ppvVar3 = (void **)FUN_00850350();
  if (ppvStack_50 != ppvVar3) {
    *(short *)(ppvStack_50 + 2) = *(short *)(ppvStack_50 + 2) + -1;
    if (*(short *)(ppvStack_50 + 2) == 0) {
      if (*(char *)((int)ppvStack_50 + 10) != '\0') {
        _free(*ppvStack_50);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvStack_50);
    }
    ppvStack_50 = (void **)FUN_00850350();
  }
  ppuStack_54 = (undefined **)*unaff_EBX;
  if (ppuStack_54 == (undefined **)0x0) {
    ppuStack_54 = &PTR_02bd3fc0;
  }
  ppuVar4 = ppuStack_54;
  do {
    cVar1 = *(char *)ppuVar4;
    ppuVar4 = (undefined **)((int)ppuVar4 + 1);
  } while (cVar1 != '\0');
  iStack_48 = (int)ppuVar4 - (int)((int)ppuStack_54 + 1);
  if (param_1_00[0x27] == 0) {
    uVar9 = 0;
  }
  else {
    uVar9 = *(uint *)(param_1_00[0x27] + 4);
  }
  if (DAT_032bd4d8 == 0) {
    DAT_032bd4d8 = FUN_00861480();
  }
  FUN_008a8470(param_1,DAT_032bd4d8);
  uVar6 = (uint)*(byte *)(param_1_00 + 3);
  uVar8 = (uint)*(byte *)((int)param_1_00 + 0xd);
  local_c = (void *)CONCAT31(local_c._1_3_,7);
  FUN_008a85e0(&DAT_02014b50);
  FUN_008a8570(uVar8);
  FUN_008a8570(uVar6);
  FUN_008a8520(*(undefined2 *)((int)param_1_00 + 0xe));
  FUN_008a8520(*(undefined2 *)(param_1_00 + 4));
  FUN_008a8520(*(undefined2 *)((int)param_1_00 + 0x12));
  (**(code **)(*param_1_00 + 0x10))(aiStack_44);
  uVar2 = FUN_0086d3d0();
  FUN_008a84c0(uVar2);
  FUN_008a84c0(param_1_00[8]);
  aiStack_44[0] = param_1_00[0xb];
  FUN_008a84c0(param_1_00[10]);
  uVar10 = (**(code **)(*param_1_00 + 0x14))();
  aiStack_44[0] = (int)((ulonglong)uVar10 >> 0x20);
  FUN_008a84c0((int)uVar10);
  FUN_008a8520(uVar5);
  FUN_008a8520(uVar9);
  uVar10 = (**(code **)(*param_1_00 + 0x18))();
  aiStack_44[0] = (int)((ulonglong)uVar10 >> 0x20);
  uVar2 = (undefined4)uVar10;
  iVar11 = param_1_00[0x26];
  uVar6 = (uint)*(ushort *)(param_1_00 + 0x25);
  uVar8 = (uint)*(ushort *)((int)param_1_00 + 0x96);
  FUN_008a85a0(ppvStack_4c);
  FUN_008a85a0(uVar6);
  FUN_008a85a0(uVar8);
  FUN_008a85e0(iVar11);
  FUN_008a85e0(uVar2);
  (**(code **)(*param_1 + 0x28))(uStack_5c,uVar5 & 0xffff);
  if ((short)uVar9 != 0) {
    if ((undefined4 *)param_1_00[0x27] == (undefined4 *)0x0) {
      uVar2 = 0;
    }
    else {
      uVar2 = *(undefined4 *)param_1_00[0x27];
    }
    (**(code **)(*param_1 + 0x28))(uVar2,uVar9 & 0xffff);
  }
  (**(code **)(*param_1 + 0x28))(uStack_60,(uint)ppuStack_54 & 0xffff);
  uStack_20 = 6;
  FUN_008a84a0();
  uStack_20 = 3;
  ppvVar3 = (void **)FUN_00850350();
  if (ppvVar12 != ppvVar3) {
    *(short *)(ppvVar12 + 2) = *(short *)(ppvVar12 + 2) + -1;
    if (*(short *)(ppvVar12 + 2) == 0) {
      if (*(char *)((int)ppvVar12 + 10) != '\0') {
        _free(*ppvVar12);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar12);
    }
    ppvVar12 = (void **)FUN_00850350();
  }
  uStack_20 = 0;
  ppvVar3 = (void **)FUN_00850350();
  if (ppvVar7 != ppvVar3) {
    *(short *)(ppvVar7 + 2) = *(short *)(ppvVar7 + 2) + -1;
    if (*(short *)(ppvVar7 + 2) == 0) {
      if (*(char *)((int)ppvVar7 + 10) != '\0') {
        _free(*ppvVar7);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar7);
    }
    ppvVar7 = (void **)FUN_00850350();
  }
  _free(local_34[0]);
  if (7 < uStack_38) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(ppvStack_4c);
  }
  ExceptionList = pvStack_28;
  ___security_check_cookie_4(ppvVar7,ppvVar12);
  return;
}



int __thiscall FUN_0087e630(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x10,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



undefined __thiscall FUN_0087e670(ushort *param_1_00,int *param_1,void **param_2)

{
  char cVar1;
  undefined uVar2;
  uint uVar3;
  undefined4 uVar4;
  void **ppvVar5;
  undefined **ppuVar6;
  uint uVar7;
  void **ppvVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  undefined **ppuVar12;
  void **unaff_EBP;
  undefined4 uVar13;
  uint uVar14;
  char **local_1c;
  void *pvStack_14;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb138;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  uVar4 = FUN_00432413(&param_2,param_2);
  local_4 = 0;
  FUN_00432305(uVar4);
  local_4 = CONCAT31(local_4._1_3_,2);
  ppvVar5 = (void **)FUN_00850350(uVar3);
  ppvVar8 = param_2;
  if (param_2 != ppvVar5) {
    *(short *)(param_2 + 2) = *(short *)(param_2 + 2) + -1;
    if (*(short *)(param_2 + 2) == 0) {
      if (*(char *)((int)param_2 + 10) != '\0') {
        _free(*param_2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar8);
    }
    param_2 = (void **)FUN_00850350(uVar3);
  }
  ppuVar12 = (undefined **)*local_1c;
  if (ppuVar12 == (undefined **)0x0) {
    ppuVar12 = &PTR_02bd3fc0;
  }
  ppuVar6 = ppuVar12;
  do {
    cVar1 = *(char *)ppuVar6;
    ppuVar6 = (undefined **)((int)ppuVar6 + 1);
  } while (cVar1 != '\0');
  uVar3 = (int)ppuVar6 - (int)((int)ppuVar12 + 1) & 0xffff;
  if (DAT_032bd4d8 == 0) {
    DAT_032bd4d8 = FUN_00861480();
  }
  FUN_008a8470(param_1,DAT_032bd4d8);
  uVar4 = *(undefined4 *)(param_1_00 + 6);
  uVar13 = *(undefined4 *)(param_1_00 + 4);
  uVar9 = (uint)param_1_00[3];
  uVar11 = (uint)param_1_00[2];
  uVar7 = (uint)param_1_00[1];
  uVar10 = (uint)*param_1_00;
  local_4 = CONCAT31(local_4._1_3_,3);
  uVar14 = uVar3;
  FUN_008a85e0(0x6054b50);
  FUN_008a85a0(uVar10);
  FUN_008a85a0(uVar7);
  FUN_008a85a0(uVar11);
  FUN_008a85a0(uVar9);
  FUN_008a85e0(uVar13);
  FUN_008a85e0(uVar4);
  FUN_008a85a0(uVar14);
  (**(code **)(*param_1 + 0x28))(ppuVar12,uVar3);
  uVar2 = (**(code **)(*param_1 + 0x10))();
  local_c = (void *)CONCAT31(local_c._1_3_,2);
  FUN_008a84a0();
  local_c = (void *)0xffffffff;
  ppvVar8 = (void **)FUN_00850350();
  if (unaff_EBP != ppvVar8) {
    *(short *)(unaff_EBP + 2) = *(short *)(unaff_EBP + 2) + -1;
    if (*(short *)(unaff_EBP + 2) == 0) {
      if (*(char *)((int)unaff_EBP + 10) != '\0') {
        _free(*unaff_EBP);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(unaff_EBP);
    }
    FUN_00850350();
  }
  ExceptionList = pvStack_14;
  return uVar2;
}



void __thiscall FUN_0087e840(int *param_1_00,int param_1,undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  int local_24;
  int local_20;
  int local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb168;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     (((cVar2 = (**(code **)(*param_1_00 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffc8),
       cVar2 == '\0' || (param_1_00[0x12] == 0)) || (param_1_00[0x1b] != 0)))) {
    FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x89d,"wxZipOutputStream::CreatePendingEntry",
                 "IsOk() && m_pending && !m_comp",0);
  }
  piVar1 = (int *)param_1_00[0x12];
  local_24 = param_1_00[0x10];
  local_20 = param_1_00[0x11];
  local_4 = 0;
  param_1_00[0x12] = 0;
  local_1c = param_1;
  local_18 = param_2;
  local_14 = 0;
  local_10 = 0;
  if (*(char *)(param_1_00 + 0x13) == '\0') {
    piVar4 = &local_24;
    if (local_20 == 0) {
      piVar4 = &local_1c;
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar1 == (int *)0x0)) {
      FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x51e,"wxZipEntryPtr_::operator *",
                   "m_ptr != 0",0);
    }
    iVar3 = (**(code **)(*param_1_00 + 0x5c))(param_1_00[7],piVar1,piVar4);
  }
  else {
    iVar3 = param_1_00[7];
  }
  param_1_00[0x1b] = iVar3;
  if ((param_1_00[0x1e] & param_1_00[0x1f]) == 0xffffffff) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar1 == (int *)0x0)) {
      FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x51e,"wxZipEntryPtr_::operator ->",
                   "m_ptr != 0",0);
    }
    if (((piVar1[8] == 0) || ((piVar1[10] & piVar1[0xb]) == 0xffffffff)) ||
       (iVar3 = FUN_0087b220(), (*(uint *)(iVar3 + 0x30) & *(uint *)(iVar3 + 0x34)) == 0xffffffff))
    {
      if ((piVar1[10] & piVar1[0xb]) != 0xffffffff) {
        *(ushort *)(piVar1 + 4) = *(ushort *)(piVar1 + 4) | 8;
      }
      goto LAB_0087e9c6;
    }
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar1 == (int *)0x0)) {
    FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x51e,"wxZipEntryPtr_::operator ->","m_ptr != 0"
                 ,0);
  }
  *(ushort *)(piVar1 + 4) = *(ushort *)(piVar1 + 4) & 0xfff7;
LAB_0087e9c6:
  iVar3 = FUN_0087dc20(param_1_00[4],param_1_00[6]);
  param_1_00[0x16] = iVar3;
  param_1_00[3] = *(int *)(param_1_00[4] + 0xc);
  cVar2 = (**(code **)(*param_1_00 + 0x10))();
  piVar4 = piVar1;
  if (cVar2 != '\0') {
    piVar4 = (int *)0x0;
    FUN_0086ad60(piVar1);
    (**(code **)(*param_1_00 + 0x40))(param_1_00[0x10],param_1_00[0x11]);
  }
  param_1_00[0x11] = 0;
  local_4 = 0xffffffff;
  if (piVar4 != (int *)0x0) {
    (**(code **)(*piVar4 + 4))(1);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0087ea50(int *param_1)

{
  int *piVar1;
  char cVar2;
  int *piVar3;
  int *piVar4;
  int iVar5;
  uint uVar6;
  int iStack_30;
  int iStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined auStack_20 [8];
  void *pvStack_18;
  uint uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb1a0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     (((cVar2 = (**(code **)(*param_1 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffbc), cVar2 == '\0'
       || (param_1[0x12] == 0)) || (param_1[0x1b] != 0)))) {
    FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x8c6,"wxZipOutputStream::CreatePendingEntry",
                 "IsOk() && m_pending && !m_comp",0);
  }
  piVar1 = (int *)param_1[0x12];
  local_4 = 0;
  param_1[0x12] = 0;
  param_1[3] = 2;
  if (*(char *)(param_1 + 0x13) == '\0') {
    FUN_00874e00(0,0);
    iStack_30 = param_1[0x10];
    iStack_2c = param_1[0x11];
    local_4 = CONCAT31(local_4._1_3_,1);
    uStack_28 = 0;
    uStack_24 = 0;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar1 == (int *)0x0)) {
      FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x51e,"wxZipEntryPtr_::operator *",
                   "m_ptr != 0",0);
    }
    piVar3 = (int *)(**(code **)(*param_1 + 0x5c))(auStack_20,piVar1,&iStack_30);
    if (piVar3 == (int *)0x0) {
LAB_0087eb3d:
      uStack_10 = uStack_10 & 0xffffff00;
      FUN_00874be0();
      uStack_10 = 0xffffffff;
      FUN_008c5410();
      ExceptionList = pvStack_18;
      return;
    }
    if (piVar3 != (int *)param_1[7]) {
      piVar4 = (int *)(**(code **)(*piVar3 + 0x28))(param_1[0x10],param_1[0x11]);
      cVar2 = (**(code **)(*piVar4 + 0x10))();
      (**(code **)(*param_1 + 0x60))(piVar3);
      if (cVar2 == '\0') goto LAB_0087eb3d;
    }
    param_1[0x18] = param_1[0x11];
    param_1[0x19] = 0;
    iVar5 = FUN_008ecba0(0,param_1[0x10],param_1[0x11]);
    param_1[0x1a] = iVar5;
    iVar5 = FUN_00883c90();
    if ((iVar5 == 0) || (uVar6 = FUN_00883c90(), (uint)param_1[0x11] <= uVar6)) {
      iVar5 = FUN_0087b220();
      *(undefined2 *)(iVar5 + 0x12) = 0;
    }
    else {
      iVar5 = FUN_00883c90();
      param_1[0x11] = iVar5;
      FUN_00874f00(param_1[0x10],iVar5);
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar1 == (int *)0x0)) {
      FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x51e,"wxZipEntryPtr_::operator ->",
                   "m_ptr != 0",0);
    }
    (**(code **)(*piVar1 + 0x34))(param_1[0x18],param_1[0x19]);
    piVar1[8] = param_1[0x1a];
    iVar5 = param_1[0x11];
    piVar1[0xb] = 0;
    local_4 = local_4 & 0xffffff00;
    piVar1[10] = iVar5;
    FUN_00874be0();
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar1 == (int *)0x0)) {
    FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x51e,"wxZipEntryPtr_::operator ->","m_ptr != 0"
                 ,0);
  }
  *(ushort *)(piVar1 + 4) = *(ushort *)(piVar1 + 4) & 0xfff7;
  iVar5 = FUN_0087dc20(param_1[4],param_1[6]);
  param_1[0x16] = iVar5;
  cVar2 = (**(code **)(*(int *)param_1[4] + 0x10))();
  piVar3 = piVar1;
  if (cVar2 != '\0') {
    piVar3 = (int *)0x0;
    FUN_0086ad60(piVar1);
    param_1[0x1b] = (int)(int *)param_1[7];
    (**(code **)(*(int *)param_1[7] + 0x28))(param_1[0x10],param_1[0x11]);
  }
  param_1[0x11] = 0;
  param_1[3] = *(int *)(param_1[4] + 0xc);
  local_4 = 0xffffffff;
  if (piVar3 != (int *)0x0) {
    (**(code **)(*piVar3 + 4))(1);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0087ed20(int *param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  uint uVar4;
  bool bVar5;
  undefined auStack_54 [4];
  int iStack_50;
  int iStack_48;
  undefined2 uStack_44;
  undefined2 uStack_42;
  undefined2 uStack_40;
  undefined2 uStack_3e;
  uint uStack_3c;
  int iStack_38;
  int iStack_34;
  uint uStack_30;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb1c8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_54;
  ExceptionList = &local_c;
  (**(code **)(*param_1 + 0x58))(DAT_0323f878 ^ (uint)&stack0xffffff9c);
  if (param_1[3] != 2) {
    uVar4 = 0;
    if ((param_1[0xb] != 0) || (*(char *)(param_1 + 0x29) == '\0')) {
      uStack_44 = 0;
      uStack_42 = 0;
      uStack_3c = 0;
      uStack_1c = 7;
      uStack_20 = 0;
      uStack_30 = uStack_30 & 0xffff0000;
      pvStack_18 = (void *)0x0;
      iStack_38 = param_1[0x14];
      uStack_40 = (undefined2)param_1[0xb];
      uStack_4 = 0;
      uStack_3e = uStack_40;
      if (&iStack_34 != param_1 + 0x20) {
        FID_conflict_assign(param_1 + 0x20,0,0xffffffff);
      }
      iVar1 = param_1[0xd];
      iStack_48 = param_1[0xe];
      iStack_50 = 0;
      for (; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
        uVar3 = FUN_0087e230(param_1[4],param_1[6]);
        bVar5 = CARRY4(uVar4,uVar3);
        uVar4 = uVar4 + uVar3;
        iStack_50 = iStack_50 + (uint)bVar5;
        if (*(int **)(iVar1 + 8) != (int *)0x0) {
          (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
        }
      }
      FUN_0086b130();
      uStack_3c = uVar4;
      FUN_0087e670(param_1[4],param_1[6]);
      param_1[3] = *(int *)(param_1[4] + 0xc);
      *(undefined *)(param_1 + 0x29) = 1;
      cVar2 = FUN_008832a0();
      if ((cVar2 == '\0') || (cVar2 = (**(code **)(*param_1 + 0x10))(), cVar2 == '\0')) {
        _free(pvStack_18);
        if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_30);
        }
      }
      else {
        param_1[3] = 1;
        _free(pvStack_18);
        if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_30);
        }
      }
      goto LAB_0087eead;
    }
  }
  FUN_008832a0();
LAB_0087eead:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_0087eed0(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if ((cVar1 != '\0') && (param_1[0x12] != 0)) {
    FUN_0087e840(0,0);
  }
  if (param_1[0x1b] == 0) {
    param_1[3] = 2;
  }
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    (**(code **)(*(int *)param_1[0x1b] + 0x38))();
    param_1[3] = *(int *)(param_1[0x1b] + 0xc);
  }
  return;
}



size_t __thiscall FUN_0087ef20(int *param_1,void *param_2,size_t param_3)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  int *piVar4;
  size_t sVar5;
  int iVar6;
  uint uVar7;
  
  cVar3 = (**(code **)(*param_1 + 0x10))();
  if ((cVar3 != '\0') && (param_1[0x12] != 0)) {
    if (param_1[0x11] + param_3 < 0x1000) {
      _memcpy((void *)(param_1[0x10] + param_1[0x11]),param_2,param_3);
      param_1[0x11] = param_1[0x11] + param_3;
      return param_3;
    }
    FUN_0087e840(param_2,param_3);
  }
  if (param_1[0x1b] == 0) {
    param_1[3] = 2;
  }
  cVar3 = (**(code **)(*param_1 + 0x10))();
  if ((cVar3 != '\0') && (param_3 != 0)) {
    piVar4 = (int *)(**(code **)(*(int *)param_1[0x1b] + 0x28))(param_2,param_3);
    sVar5 = (**(code **)(*piVar4 + 0x34))();
    if (sVar5 != param_3) {
      param_1[3] = 2;
    }
    iVar6 = FUN_008ecba0(param_1[0x1a],param_2,param_3);
    param_1[0x1a] = iVar6;
    uVar7 = (**(code **)(*(int *)param_1[0x1b] + 0x34))();
    puVar1 = (uint *)(param_1 + 0x18);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 + uVar7;
    param_1[0x19] = param_1[0x19] + (uint)CARRY4(uVar2,uVar7);
    sVar5 = (**(code **)(*(int *)param_1[0x1b] + 0x34))();
    return sVar5;
  }
  return 0;
}



undefined4 __fastcall FUN_0087eff0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xb0);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0087d0c0(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_0087f060(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_0087d6d0(param_1,param_2,param_3,0);
  return param_1;
}



void __thiscall FUN_0087f090(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  piVar1 = (int *)FUN_0087d6d0(local_30,param_1,param_2,&param_2,
                               DAT_0323f878 ^ (uint)&stack0xffffffcc);
  local_4 = 0;
  if (param_1_00 + 0xe != piVar1) {
    FID_conflict_assign(piVar1,0,0xffffffff);
  }
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_2c = local_2c & 0xffff0000;
  local_18 = 7;
  local_1c = 0;
  (**(code **)(*param_1_00 + 0x38))(param_2);
  ExceptionList = pvStack_10;
  return;
}



undefined4 * __thiscall
FUN_0087f150(undefined4 *param_1_00,int param_1,undefined4 *param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcb20e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  param_1_00[2] = 0;
  *(undefined2 *)((int)param_1_00 + 0xe) = 0x14;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *param_1_00 = wxZipEntry::vftable;
  *(undefined *)(param_1_00 + 3) = 0;
  *(undefined *)((int)param_1_00 + 0xd) = 0x1d;
  *(undefined2 *)((int)param_1_00 + 0x12) = 0xffff;
  param_1_00[6] = *param_2;
  uVar1 = param_2[1];
  param_1_00[0xc] = param_3;
  param_1_00[7] = uVar1;
  param_1_00[0xd] = param_4;
  param_1_00[8] = 0;
  param_1_00[10] = 0xffffffff;
  param_1_00[0xb] = 0xffffffff;
  param_1_00[0x14] = 7;
  param_1_00[0x13] = 0;
  *(undefined2 *)(param_1_00 + 0xf) = 0;
  param_1_00[0x15] = 0;
  param_1_00[0x18] = 0xffffffff;
  param_1_00[0x19] = 0xffffffff;
  param_1_00[0x1a] = 0xffffffff;
  param_1_00[0x1b] = 0xffffffff;
  param_1_00[0x22] = 7;
  param_1_00[0x21] = 0;
  *(undefined2 *)(param_1_00 + 0x1d) = 0;
  param_1_00[0x23] = 0;
  *(undefined2 *)((int)param_1_00 + 0x96) = 0;
  *(undefined2 *)(param_1_00 + 0x25) = 0;
  param_1_00[0x26] = 0;
  param_1_00[0x27] = 0;
  param_1_00[0x28] = 0;
  param_1_00[0x29] = 0;
  param_1_00[0x2a] = 0;
  local_4 = 2;
  if (*(int *)(param_1 + 0x14) != 0) {
    FUN_0087f090(param_1,0);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_0087f270(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 local_5c;
  undefined4 local_58;
  undefined local_54 [4];
  undefined4 local_50;
  uint local_3c;
  void *local_38;
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb259;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  FUN_008a68d0(param_1,param_2);
  *param_1_00 = wxZipInputStream::vftable;
  local_4 = 0;
  FUN_004325b6(PTR_DAT_03236318);
  local_4._0_1_ = 1;
  uVar2 = FUN_0086cc50(local_30,uVar1);
  local_5c = 0;
  local_58 = 0;
  FUN_0086cca0(uVar2);
  FUN_0087f150(local_54,&local_5c,0xffffffff,0xffffffff);
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  param_1_00[0x4e] = 7;
  param_1_00[0x4d] = 0;
  *(undefined2 *)(param_1_00 + 0x49) = 0;
  param_1_00[0x4f] = 0;
  local_4 = CONCAT31(local_4._1_3_,4);
  FUN_0087c030();
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_0087f370(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 local_5c;
  undefined4 local_58;
  undefined local_54 [4];
  undefined4 local_50;
  uint local_3c;
  void *local_38;
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb259;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  FUN_008a68f0(param_1,param_2);
  *param_1_00 = wxZipInputStream::vftable;
  local_4 = 0;
  FUN_004325b6(PTR_DAT_03236318);
  local_4._0_1_ = 1;
  uVar2 = FUN_0086cc50(local_30,uVar1);
  local_5c = 0;
  local_58 = 0;
  FUN_0086cca0(uVar2);
  FUN_0087f150(local_54,&local_5c,0xffffffff,0xffffffff);
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  param_1_00[0x4e] = 7;
  param_1_00[0x4d] = 0;
  *(undefined2 *)(param_1_00 + 0x49) = 0;
  param_1_00[0x4f] = 0;
  local_4 = CONCAT31(local_4._1_3_,4);
  FUN_0087c030();
  ExceptionList = local_c;
  return param_1_00;
}



uint __fastcall FUN_0087f470(int *param_1)

{
  uint *puVar1;
  uint uVar2;
  code *pcVar3;
  char cVar4;
  uint uVar5;
  void **ppvVar6;
  undefined4 uVar7;
  uint uVar8;
  undefined4 *local_110;
  undefined4 uStack_10c;
  undefined auStack_108 [36];
  undefined auStack_e4 [216];
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bcb2a1;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xfffffee4;
  ppvVar6 = &local_c;
  if (param_1[0x3b] == 0) {
    return CONCAT31((int3)((uint)ppvVar6 >> 8),1);
  }
  if (param_1[3] == 3) {
LAB_0087f4b5:
    uVar5 = (uint)ppvVar6 & 0xffffff00;
  }
  else {
    ExceptionList = ppvVar6;
    if (*(char *)(param_1 + 0x3e) == '\0') {
      if ((param_1[0x3d] == 0) && (ppvVar6 = (void **)FUN_0087ca40(1), (char)ppvVar6 == '\0'))
      goto LAB_0087f4b5;
      FUN_0084aa50(0x2000);
      local_4 = 0;
      cVar4 = (**(code **)(*param_1 + 0x10))();
      while (cVar4 != '\0') {
        (**(code **)(*param_1 + 0x2c))(*local_110,0x2000);
        cVar4 = (**(code **)(*param_1 + 0x10))();
      }
      uVar8 = param_1[0x3b] + param_1[0x18];
      puVar1 = (uint *)(param_1 + 0x44);
      uVar2 = *puVar1;
      *puVar1 = *puVar1 + uVar8;
      local_4 = 0xffffffff;
      param_1[0x45] =
           param_1[0x45] + param_1[0x19] + (uint)CARRY4(param_1[0x3b],param_1[0x18]) +
           (uint)CARRY4(uVar2,uVar8);
      thunk_FUN_0043c1dd();
    }
    if (param_1[3] == 1) {
      param_1[3] = 0;
    }
    (**(code **)(*param_1 + 0x58))(param_1[0x3d],uVar5);
    param_1[0x3d] = 0;
    FUN_004325b6(PTR_DAT_03236318);
    uStack_8 = (undefined *)0x1;
    uVar7 = FUN_0086cc50(auStack_e4);
    local_110 = (undefined4 *)0x0;
    uStack_10c = 0;
    FUN_0086cca0(uVar7);
    uVar7 = FUN_0087f150(auStack_108,&local_110,0xffffffff,0xffffffff);
    uStack_8._0_1_ = 2;
    FUN_0087d240(uVar7);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
    FUN_0087c330();
    uStack_8 = (undefined *)0xffffffff;
    FUN_0040159c();
    pcVar3 = *(code **)(*param_1 + 0x10);
    param_1[0x3b] = 0;
    *(undefined *)(param_1 + 0x3a) = 0;
    uVar5 = (*pcVar3)();
  }
  ExceptionList = local_c;
  return uVar5;
}



void __fastcall FUN_0087f630(undefined4 *param_1)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bcb2f1;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *param_1 = wxZipOutputStream::vftable;
  local_4 = 2;
  FUN_0087ed20(uVar3);
  for (iVar1 = param_1[0xd]; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if (*(int **)(iVar1 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
    }
  }
  FUN_0086b130();
  if ((int *)param_1[7] != (int *)0x0) {
    (**(code **)(*(int *)param_1[7] + 4))(1);
  }
  if ((int *)param_1[8] != (int *)0x0) {
    (**(code **)(*(int *)param_1[8] + 4))(1);
  }
  if ((int *)param_1[0x12] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x12] + 4))(1);
  }
  FUN_00a3f66c(param_1[0x10]);
  piVar2 = (int *)param_1[9];
  if (piVar2 != (int *)0x0) {
    *piVar2 = *piVar2 + -1;
    piVar2[1] = 0;
    if (*piVar2 == 0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(piVar2);
    }
  }
  _free((void *)param_1[0x27]);
  if ((uint)param_1[0x26] < 8) {
    param_1[0x26] = 7;
    param_1[0x25] = 0;
    *(undefined2 *)(param_1 + 0x21) = 0;
    local_4 = local_4 & 0xffffff00;
    FUN_0086ade0();
    local_4 = 0xffffffff;
    *param_1 = wxArchiveOutputStream::vftable;
    FUN_00883fe0();
    ExceptionList = local_c;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[0x21]);
}



void FUN_0087f770(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xb0);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_0087f150(param_1,param_2,param_3,param_4);
  }
  local_4 = 0xffffffff;
  FUN_0087bc60(uVar2,0);
  ExceptionList = local_c;
  return;
}



void FUN_0087f800(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *pvVar2;
  int *piVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xb0);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    piVar3 = (int *)0x0;
  }
  else {
    piVar3 = (int *)FUN_0087f150(param_1,param_2,0xffffffff,0xffffffff);
  }
  local_4 = 0xffffffff;
  (**(code **)(*piVar3 + 0x38))(1,uVar1);
  FUN_0087bc60(piVar3,0);
  ExceptionList = pvVar2;
  return;
}



undefined4 __thiscall FUN_0087f890(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x148);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_0087f270(param_1,iVar3);
    ExceptionList = local_c;
    return uVar4;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_0087f930(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x148);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_0087f370(param_1,iVar3);
    ExceptionList = local_c;
    return uVar4;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 thunk_FUN_0087fa00(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined auStack_54 [4];
  undefined4 uStack_50;
  uint uStack_3c;
  void *pvStack_38;
  undefined auStack_30 [36];
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb334;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &pvStack_c;
  pvVar2 = operator_new(0xb0);
  uStack_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    FUN_004325b6(PTR_DAT_03236318);
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    uVar3 = FUN_0086cc50(auStack_30,uVar1);
    uStack_5c = 0;
    uStack_58 = 0;
    FUN_0086cca0(uVar3);
    uVar3 = FUN_0087f150(auStack_54,&uStack_5c,0xffffffff,0xffffffff);
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
  }
  ExceptionList = pvStack_c;
  return uVar3;
}



undefined4 __thiscall thunk_FUN_0087f890(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &pvStack_c;
  pvVar2 = operator_new(0x148);
  uStack_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_0087f270(param_1,iVar3);
    ExceptionList = pvStack_c;
    return uVar4;
  }
  ExceptionList = pvStack_c;
  return 0;
}



undefined4 __thiscall thunk_FUN_0087f930(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &pvStack_c;
  pvVar2 = operator_new(0x148);
  uStack_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_0087f370(param_1,iVar3);
    ExceptionList = pvStack_c;
    return uVar4;
  }
  ExceptionList = pvStack_c;
  return 0;
}



undefined4 FUN_0087fa00(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 local_5c;
  undefined4 local_58;
  undefined local_54 [4];
  undefined4 local_50;
  uint local_3c;
  void *local_38;
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb334;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xb0);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar3 = FUN_0086cc50(local_30,uVar1);
    local_5c = 0;
    local_58 = 0;
    FUN_0086cca0(uVar3);
    uVar3 = FUN_0087f150(local_54,&local_5c,0xffffffff,0xffffffff);
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 __thiscall FUN_0087fae0(undefined4 param_1_00,byte param_1)

{
  FUN_0087f630();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



uint __thiscall FUN_0087fb00(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb376;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = *(uint *)(param_1_00 + 0x28) & *(uint *)(param_1_00 + 0x2c);
  if (uVar1 == 0xffffffff) {
    *(undefined4 *)(*(int *)(param_1_00 + 0x20) + 0xc) = *(undefined4 *)(param_1_00 + 0x1c);
    *(undefined4 *)(*(int *)(param_1_00 + 0x20) + 0x10) = *(undefined4 *)(param_1_00 + 0x18);
    *(undefined4 *)(param_1_00 + 0x28) = 0;
    *(undefined4 *)(param_1_00 + 0x2c) = 0;
    *(undefined4 *)(param_1_00 + 0xc) = 0;
    *(undefined4 *)(param_1_00 + 0x10) = param_1;
    iVar2 = FUN_008ee2a0();
    if (iVar2 == 0) {
      ExceptionList = local_c;
      return 1;
    }
    FUN_0043c211(&DAT_00d25fa0);
    uVar1 = FUN_00846b30(1);
    if ((char)uVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_008423d0();
      local_4._0_1_ = 3;
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      uVar1 = FUN_0040159c();
    }
    *(undefined4 *)(param_1_00 + 0xc) = 2;
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar1 = FUN_008402e0();
  }
  ExceptionList = local_c;
  return uVar1 & 0xffffff00;
}



uint __thiscall FUN_0087fce0(int param_1_00,undefined4 param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined auStack_f0 [12];
  undefined4 uStack_e4;
  undefined4 uStack_e0;
  char *pcStack_dc;
  undefined4 uStack_d8;
  char *pcStack_d4;
  undefined local_bc [4];
  uint local_b8;
  undefined4 local_a8;
  uint local_a4;
  void *local_a0;
  undefined *local_98;
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb3c6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(*(int *)(param_1_00 + 0x2c) + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x30) = 0;
  *(undefined4 *)(param_1_00 + 0x34) = 0;
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = param_1;
  pcStack_d4 = (char *)0x87fd32;
  iVar1 = FUN_008ee580();
  if (iVar1 == 0) {
    uVar2 = 1;
  }
  else {
    local_98 = auStack_f0;
    FUN_0043c211(&DAT_00d25fa0);
    uVar2 = FUN_00846b30(1);
    if ((char)uVar2 != '\0') {
      pcStack_d4 = (char *)0x87fd71;
      FUN_004325b6();
      local_4 = 0;
      pcStack_d4 = (char *)0x87fd86;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar1 = FUN_0084a340();
      if (iVar1 == 0) {
        pcStack_d4 = (char *)0x87fdb4;
        FUN_0084d360();
      }
      else {
        pcStack_d4 = local_bc;
        uStack_d8 = 0x87fda8;
        FUN_0084f210();
      }
      pcStack_d4 = (char *)0x87fdc1;
      FUN_008433c0();
      pcStack_d4 = "wxZlibInputStream2::Open";
      uStack_d8 = 0x229;
      pcStack_dc = "..\\..\\src\\common\\zipstrm.cpp";
      uStack_e0 = 1;
      local_4._0_1_ = 2;
      uStack_e4 = 0x87fdeb;
      uVar3 = FUN_008423d0();
      local_4._0_1_ = 3;
      FUN_008854f0();
      uStack_d8 = 0x87fe05;
      pcStack_d4 = (char *)uVar3;
      FUN_0083fe90();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      pcStack_d4 = (char *)0x87fe34;
      _free(local_a0);
      if (7 < local_a4) {
                    // WARNING: Subroutine does not return
        pcStack_d4 = &UNK_0087fe4c;
        FUN_00a3f6a1();
      }
      uVar2 = 0;
      local_a4 = 7;
      local_a8 = 0;
      local_b8 = local_b8 & 0xffff0000;
      pcStack_d4 = (char *)0x87fe6c;
      _free(local_64);
      if (7 < local_68) {
                    // WARNING: Subroutine does not return
        pcStack_d4 = &UNK_0087fe7f;
        FUN_00a3f6a1();
      }
    }
    *(undefined4 *)(param_1_00 + 0xc) = 3;
    uVar2 = uVar2 & 0xffffff00;
  }
  ExceptionList = local_c;
  return uVar2;
}



void __thiscall FUN_0087feb0(short *param_1_00,int *param_1)

{
  char cVar1;
  short sVar2;
  ushort uVar3;
  int *piVar4;
  undefined4 uVar5;
  short *psVar6;
  uint uVar7;
  int iVar8;
  undefined auStack_130 [76];
  uint uStack_e4;
  void *pvStack_e0;
  int iStack_24;
  undefined4 local_1c;
  undefined4 local_18;
  void *local_14;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb427;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_130;
  ExceptionList = &local_c;
  local_1c = 0;
  local_18 = 0;
  local_14 = (void *)((uint)local_14 & 0xffffff00);
  piVar4 = (int *)(**(code **)(*param_1 + 0x2c))();
  iStack_24 = (**(code **)(*piVar4 + 0x30))();
  local_1c = CONCAT31(local_1c._1_3_,iStack_24 == 0x12);
  if (iStack_24 == 0x12) {
    sVar2 = FUN_0087ae50();
    *param_1_00 = sVar2;
    sVar2 = FUN_0087ae50();
    param_1_00[1] = sVar2;
    sVar2 = FUN_0087ae50();
    param_1_00[2] = sVar2;
    sVar2 = FUN_0087ae50();
    param_1_00[3] = sVar2;
    uVar5 = FUN_0087aeb0();
    *(undefined4 *)(param_1_00 + 4) = uVar5;
    uVar5 = FUN_0087aeb0();
    *(undefined4 *)(param_1_00 + 6) = uVar5;
    uVar3 = FUN_0087ae50();
    if (uVar3 != 0) {
      psVar6 = (short *)FUN_0087cf90();
      local_c = (void *)0x0;
      if (param_1_00 + 8 != psVar6) {
        FID_conflict_assign();
      }
      local_c = (void *)0xffffffff;
      _free(pvStack_e0);
      if (7 < uStack_e4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uVar7 = (**(code **)(*param_1 + 0x30))();
      if (uVar7 != uVar3) goto LAB_0088014e;
    }
    if (((*param_1_00 != 0) || (param_1_00[1] != 0)) || (param_1_00[2] != param_1_00[3])) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(2);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_c = (void *)0x1;
        FUN_0043c211();
        local_c = (void *)CONCAT31(local_c._1_3_,2);
        iVar8 = FUN_0084a340();
        if (iVar8 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_c._0_1_ = 3;
        FUN_008423d0();
        local_c._0_1_ = 4;
        FUN_008854f0();
        FUN_0083fe90();
        local_c._0_1_ = 3;
        FUN_00842440();
        local_c = (void *)CONCAT31(local_c._1_3_,2);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
  }
LAB_0088014e:
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00880180(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  longlong lVar7;
  undefined8 uVar8;
  undefined auStack_1e0 [12];
  undefined4 uStack_1d4;
  char *pcStack_1d0;
  char *pcStack_1cc;
  char *pcStack_1c8;
  char *pcStack_1c4;
  char *pcStack_1c0;
  uint uStack_1bc;
  undefined auStack_1a8 [4];
  undefined *puStack_1a4;
  undefined4 uStack_1a0;
  undefined auStack_19c [20];
  undefined auStack_188 [20];
  undefined auStack_174 [36];
  undefined auStack_150 [36];
  undefined auStack_12c [36];
  undefined auStack_108 [196];
  undefined2 uStack_44;
  undefined2 uStack_42;
  undefined2 uStack_40;
  ushort uStack_3e;
  uint uStack_3c;
  int *piStack_38;
  undefined2 uStack_30;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb4d6;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_1a8;
  uStack_1bc = DAT_0323f878 ^ (uint)&stack0xfffffe48;
  ExceptionList = &local_c;
  if ((param_1[0x44] & param_1[0x45]) == 0xffffffff) {
    pcStack_1c0 = (char *)0x8801d9;
    cVar1 = (**(code **)(*param_1 + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x44] = 0;
      param_1[0x45] = 0;
      pcStack_1c0 = (char *)0x8801f6;
      cVar1 = FUN_0087c730();
      if (cVar1 == '\0') {
        if (*(char *)(param_1 + 0x3e) == '\0') {
          pcStack_1c0 = (char *)0x88030b;
          FUN_008192b5();
          uStack_4 = 4;
          pcStack_1c0 = (char *)0x880320;
          lVar7 = (**(code **)(*(int *)param_1[7] + 0x40))();
          if (lVar7 != -1) {
            *(longlong *)(param_1 + 0x44) = lVar7;
            *(longlong *)(param_1 + 0x42) = lVar7;
          }
          uStack_4 = 0xffffffff;
          pcStack_1c0 = (char *)0x880355;
          FUN_008192c6();
        }
        else {
          puStack_1a4 = auStack_1e0;
          param_1[3] = 3;
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(1);
          if (cVar1 != '\0') {
            pcStack_1c0 = PTR_DAT_03236318;
            pcStack_1c4 = (char *)0x880246;
            FUN_004325b6();
            pcStack_1c0 = "invalid zip file";
            uStack_4 = 0;
            pcStack_1c4 = (char *)0x88025e;
            FUN_0043c211();
            pcStack_1c0 = auStack_150;
            pcStack_1c4 = auStack_12c;
            uStack_4._0_1_ = 1;
            pcStack_1c8 = (char *)0x880278;
            pcStack_1c0 = (char *)FUN_00820bf9();
            pcStack_1c4 = (char *)0x880285;
            FUN_008433c0();
            pcStack_1c0 = &DAT_00d25fa0;
            pcStack_1c4 = "wxZipInputStream::LoadEndRecord";
            pcStack_1c8 = (char *)0x5a6;
            pcStack_1cc = "..\\..\\src\\common\\zipstrm.cpp";
            pcStack_1d0 = (char *)0x1;
            uStack_4._0_1_ = 2;
            uStack_1d4 = 0x8802b0;
            FUN_008423d0();
            pcStack_1c0 = auStack_19c;
            uStack_4._0_1_ = 3;
            pcStack_1c4 = (char *)0x8802c4;
            FUN_00840b80();
            uStack_4._0_1_ = 2;
            pcStack_1c0 = (char *)0x8802d7;
            FUN_00842440();
            uStack_4 = CONCAT31(uStack_4._1_3_,1);
            pcStack_1c0 = (char *)0x8802e8;
            FUN_0081b5bc();
            pcStack_1c0 = (char *)0x8802f4;
            FUN_0040159c();
            pcStack_1c0 = (char *)0x8802fd;
            FUN_0040159c();
          }
        }
      }
      else {
        uStack_44 = 0;
        uStack_42 = 0;
        uStack_40 = 0;
        uStack_3e = 0;
        uStack_3c = 0;
        piStack_38 = (int *)0x0;
        uStack_1c = 7;
        uStack_20 = 0;
        uStack_30 = 0;
        uStack_18 = 0;
        uStack_4 = 5;
        pcStack_1c0 = (char *)0x8803c6;
        uVar8 = (**(code **)(*(int *)param_1[7] + 0x40))();
        pcStack_1c4 = (char *)param_1[7];
        pcStack_1c0 = (char *)param_1[9];
        uVar5 = (uint)uVar8 - 4;
        iVar4 = (int)((ulonglong)uVar8 >> 0x20) - (uint)((uint)uVar8 < 4);
        pcStack_1c8 = (char *)0x8803e3;
        cVar1 = FUN_0087feb0();
        if (cVar1 != '\0') {
          pcStack_1c0 = auStack_174;
          param_1[0x47] = (uint)uStack_3e;
          pcStack_1c4 = (char *)0x88040a;
          piVar2 = (int *)FUN_0087e630();
          uStack_4._0_1_ = 6;
          if (param_1 + 0x48 != piVar2) {
            pcStack_1c0 = (char *)0xffffffff;
            pcStack_1c4 = (char *)0x0;
            pcStack_1cc = (char *)0x880425;
            pcStack_1c8 = (char *)piVar2;
            FID_conflict_assign();
          }
          uStack_4 = CONCAT31(uStack_4._1_3_,5);
          pcStack_1c0 = (char *)0x880436;
          FUN_0040159c();
          pcStack_1c0 = (char *)0x0;
          uStack_1a0 = 0;
          pcStack_1c4 = (char *)0x0;
          pcStack_1c8 = (char *)piStack_38;
          iVar6 = (-(uint)(param_1[0x47] != 0) & 0xfbfc0000) + 0x6054b50;
          pcStack_1cc = (char *)0x88046c;
          lVar7 = (**(code **)(*(int *)param_1[7] + 0x3c))();
          if (lVar7 != -1) {
            pcStack_1c0 = (char *)0x88047a;
            iVar3 = FUN_0087b260();
            if (iVar3 == iVar6) {
              param_1[0x44] = (int)piStack_38;
              param_1[0x46] = iVar6;
              param_1[0x45] = 0;
              param_1[0x42] = 0;
              param_1[0x43] = 0;
              pcStack_1c0 = (char *)0x8804b1;
              FUN_0087c6f0();
              goto LAB_0088066d;
            }
          }
          pcStack_1c8 = (char *)(uVar5 - uStack_3c);
          uStack_1a0 = 0;
          pcStack_1c4 = (char *)(iVar4 - (uint)(uVar5 < uStack_3c));
          pcStack_1c0 = (char *)0x0;
          pcStack_1cc = (char *)0x8804e2;
          lVar7 = (**(code **)(*(int *)param_1[7] + 0x3c))();
          if (lVar7 != -1) {
            pcStack_1c0 = (char *)0x8804f0;
            iVar3 = FUN_0087b260();
            if (iVar3 == iVar6) {
              piVar2 = (int *)(uVar5 - uStack_3c);
              iVar4 = iVar4 - (uint)(uVar5 < uStack_3c);
              param_1[0x42] = (int)piVar2 - (int)piStack_38;
              param_1[0x46] = iVar6;
              param_1[0x44] = (int)piVar2;
              param_1[0x45] = iVar4;
              param_1[0x43] = iVar4 - (uint)(piVar2 < piStack_38);
              pcStack_1c0 = (char *)0x88053c;
              FUN_0087c6f0();
              goto LAB_0088066d;
            }
          }
          puStack_1a4 = auStack_1e0;
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(1);
          if (cVar1 != '\0') {
            pcStack_1c0 = PTR_DAT_03236318;
            pcStack_1c4 = (char *)0x880577;
            FUN_004325b6();
            pcStack_1c0 = "can\'t find central directory in zip";
            uStack_4._0_1_ = 7;
            pcStack_1c4 = (char *)0x880590;
            FUN_0043c211();
            pcStack_1c0 = auStack_174;
            pcStack_1c4 = auStack_108;
            uStack_4._0_1_ = 8;
            pcStack_1c8 = (char *)0x8805aa;
            pcStack_1c0 = (char *)FUN_00820bf9();
            pcStack_1c4 = (char *)0x8805b7;
            FUN_008433c0();
            pcStack_1c0 = &DAT_00d25fa0;
            pcStack_1c4 = "wxZipInputStream::LoadEndRecord";
            pcStack_1c8 = (char *)0x5d3;
            pcStack_1cc = "..\\..\\src\\common\\zipstrm.cpp";
            pcStack_1d0 = (char *)0x1;
            uStack_4._0_1_ = 9;
            uStack_1d4 = 0x8805e2;
            FUN_008423d0();
            pcStack_1c0 = auStack_188;
            uStack_4._0_1_ = 10;
            pcStack_1c4 = (char *)0x8805f6;
            FUN_00840b80();
            uStack_4._0_1_ = 9;
            pcStack_1c0 = (char *)0x880609;
            FUN_00842440();
            uStack_4 = CONCAT31(uStack_4._1_3_,8);
            pcStack_1c0 = (char *)0x88061a;
            FUN_0081b5bc();
            pcStack_1c0 = (char *)0x880626;
            FUN_0040159c();
            pcStack_1c0 = (char *)0x88062f;
            FUN_0040159c();
          }
          param_1[3] = 3;
        }
        pcStack_1c0 = (char *)0x880642;
        FUN_0087c6f0();
      }
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    pcStack_1c0 = (char *)0x0;
    pcStack_1c4 = "m_position == wxInvalidOffset";
    pcStack_1c8 = "wxZipInputStream::LoadEndRecord";
    pcStack_1cc = (char *)0x59b;
    pcStack_1d0 = "..\\..\\src\\common\\zipstrm.cpp";
    uStack_1d4 = 0x880668;
    FUN_008402e0();
  }
LAB_0088066d:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __fastcall FUN_008806a0(int *param_1)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  undefined4 uVar4;
  int iVar5;
  uint uVar6;
  longlong lVar7;
  undefined8 uVar8;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb5b6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1[0x3b] != 0) {
    (**(code **)(*param_1 + 0x4c))();
  }
  uVar4 = DAT_03235e98;
  if ((undefined *)param_1[0x46] == (undefined *)0x6054b50) {
    uVar4 = 1;
  }
  else {
    if ((undefined *)param_1[0x46] == &DAT_02014b50) {
      DAT_03235e98 = 5;
      lVar7 = (**(code **)(*(int *)param_1[7] + 0x3c))();
      DAT_03235e98 = uVar4;
      if (lVar7 != -1) {
        uVar6 = FUN_0087deb0();
        if (uVar6 == 0) {
          param_1[0x46] = 0;
          ExceptionList = local_c;
          return 3;
        }
        puVar1 = (uint *)(param_1 + 0x44);
        uVar2 = *puVar1;
        *puVar1 = *puVar1 + uVar6;
        param_1[0x45] = param_1[0x45] + (uint)CARRY4(uVar2,uVar6);
        iVar5 = FUN_0087b260();
        param_1[0x46] = iVar5;
        if ((param_1[0x42] | param_1[0x43]) != 0) {
          iVar5 = param_1[0xe];
          (**(code **)(iVar5 + 0x18))();
          (**(code **)(iVar5 + 0x48))();
        }
        uVar8 = (**(code **)(param_1[0xe] + 0x18))();
        *(undefined8 *)(param_1 + 0x26) = uVar8;
        ExceptionList = local_c;
        return 0;
      }
    }
    else {
      FUN_0043c211(&DAT_00d25fa0);
      cVar3 = FUN_00846b30(1);
      if (cVar3 != '\0') {
        FUN_004325b6();
        local_4 = 0;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,1);
        iVar5 = FUN_0084a340();
        if (iVar5 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 2;
        FUN_008423d0();
        local_4._0_1_ = 3;
        FUN_008854f0();
        FUN_0083fe90();
        local_4._0_1_ = 2;
        FUN_00842440();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
    uVar4 = 3;
  }
  ExceptionList = local_c;
  return uVar4;
}



void __thiscall FUN_008808e0(int *param_1,char param_2)

{
  uint *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  code *pcVar5;
  char cVar6;
  int iVar7;
  uint uVar8;
  int *piVar9;
  undefined *puVar10;
  int *piVar11;
  undefined **ppuVar12;
  undefined8 uVar13;
  undefined auStack_134 [12];
  undefined4 uStack_128;
  undefined4 uStack_124;
  char *pcStack_120;
  int *piStack_11c;
  char *pcStack_118;
  undefined *apuStack_fc [2];
  undefined4 uStack_f4;
  uint uStack_a0;
  void *pvStack_9c;
  undefined2 uStack_44;
  undefined2 uStack_42;
  undefined2 uStack_40;
  undefined2 uStack_3e;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined2 uStack_30;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4._0_1_ = 0xff;
  uStack_4._1_3_ = 0xffffff;
  puStack_8 = &LAB_00bcb562;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)apuStack_fc;
  ExceptionList = &local_c;
  if (param_1[0x3b] != 0) {
    (**(code **)(*param_1 + 0x4c))();
  }
  if (param_1[0x46] == 0) {
    iVar7 = FUN_0087b260();
    param_1[0x46] = iVar7;
  }
  if (((((undefined *)param_1[0x46] == &DAT_02014b50) ||
       ((undefined *)param_1[0x46] == (undefined *)0x6054b50)) &&
      (piVar11 = (int *)param_1[0x40], piVar11 != (int *)0x0)) && (piVar11[1] == 0)) {
    *piVar11 = *piVar11 + -1;
    if (*piVar11 == 0) {
                    // WARNING: Subroutine does not return
      pcStack_118 = &UNK_00880971;
      FUN_00a3f6a1();
    }
    param_1[0x40] = 0;
  }
  if ((undefined *)param_1[0x46] == &DAT_02014b50) {
    do {
      if ((*(int *)(param_1[0x3f] + 0xc) == 0) && (param_1[0x40] == 0)) goto LAB_00880e51;
      pcStack_118 = (char *)param_1[7];
      piStack_11c = (int *)0x8809b9;
      uVar8 = FUN_0087deb0();
      puVar1 = (uint *)(param_1 + 0x44);
      uVar2 = *puVar1;
      *puVar1 = *puVar1 + uVar8;
      param_1[0x46] = 0;
      param_1[0x45] = param_1[0x45] + (uint)CARRY4(uVar2,uVar8);
      if (uVar8 == 0) goto LAB_00880e51;
      uVar13 = (**(code **)(param_1[0xe] + 0x18))();
      uStack_f4 = (undefined4)((ulonglong)uVar13 >> 0x20);
      for (puVar3 = *(undefined4 **)
                     (*(int *)(param_1[0x3f] + 4) +
                     ((uint)uVar13 % *(uint *)(param_1[0x3f] + 8)) * 4); puVar3 != (undefined4 *)0x0
          ; puVar3 = (undefined4 *)*puVar3) {
        if (puVar3[1] == (uint)uVar13) {
          if ((puVar3 != (undefined4 *)0x0) && (piVar11 = (int *)puVar3[2], piVar11 != (int *)0x0))
          {
            pcStack_118 = (char *)0x880a2f;
            FUN_0087b870();
            *(undefined *)((int)piVar11 + 0xd) = *(undefined *)((int)param_1 + 0x45);
            pcStack_118 = (char *)0x880a42;
            piVar9 = (int *)FUN_0087cf50();
            uStack_4 = 0;
            if (piVar11 + 0x1c != piVar9) {
              pcStack_118 = (char *)0x0;
              pcStack_120 = (char *)0x880a59;
              piStack_11c = piVar9;
              FID_conflict_assign();
            }
            uStack_4._0_1_ = 0xff;
            uStack_4._1_3_ = 0xffffff;
            pcStack_118 = (char *)0x880a6e;
            _free(pvStack_9c);
            if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
              pcStack_118 = &UNK_00880a82;
              FUN_00a3f6a1();
            }
            *(undefined2 *)(piVar11 + 0x25) = *(undefined2 *)(param_1 + 0x33);
            *(undefined2 *)((int)piVar11 + 0x96) = *(undefined2 *)((int)param_1 + 0xce);
            piVar11[0x26] = param_1[0x34];
            iVar7 = piVar11[0x27];
            iVar4 = param_1[0x35];
            if (iVar7 != 0) {
              piVar9 = (int *)(iVar7 + 0xc);
              *piVar9 = *piVar9 + -1;
              if (*piVar9 == 0) {
                pcStack_118 = (char *)0x880acc;
                FUN_00a3f66c();
                    // WARNING: Subroutine does not return
                piStack_11c = (int *)&UNK_00880ad2;
                pcStack_118 = (char *)iVar7;
                FUN_00a3f6a1();
              }
            }
            if (iVar4 != 0) {
              *(int *)(iVar4 + 0xc) = *(int *)(iVar4 + 0xc) + 1;
            }
            piVar11[0x27] = iVar4;
            piVar9 = (int *)piVar11[0x29];
            if ((piVar9 != (int *)0x0) || (piVar9 = (int *)piVar11[2], piVar9 != (int *)0x0)) {
              pcStack_118 = (char *)0x880afb;
              (**(code **)(*piVar9 + 4))();
            }
            uVar13 = (**(code **)(*piVar11 + 0x18))();
            uStack_f4 = (undefined4)((ulonglong)uVar13 >> 0x20);
            iVar7 = param_1[0x3f];
            for (puVar3 = *(undefined4 **)
                           (*(int *)(iVar7 + 4) + ((uint)uVar13 % *(uint *)(iVar7 + 8)) * 4);
                puVar3 != (undefined4 *)0x0; puVar3 = (undefined4 *)*puVar3) {
              if (puVar3[1] == (uint)uVar13) {
                *(int *)(iVar7 + 0xc) = *(int *)(iVar7 + 0xc) + -1;
                    // WARNING: Subroutine does not return
                pcStack_118 = &UNK_00880b3d;
                FUN_00a3f6a1();
              }
            }
          }
          break;
        }
      }
      pcStack_118 = (char *)apuStack_fc;
      piStack_11c = (int *)0x880b55;
      (**(code **)(*(int *)param_1[7] + 0x2c))();
      piStack_11c = (int *)0x880b5f;
      iVar7 = (**(code **)(*(int *)param_1[7] + 0x30))();
      if (iVar7 == 4) {
        puVar10 = (undefined *)
                  ((((uint)apuStack_fc[0] >> 0x10) << 8 | (uint)apuStack_fc[0] >> 8 & 0xff) << 8 |
                  (uint)apuStack_fc[0] & 0xff);
      }
      else {
        puVar10 = (undefined *)0x0;
      }
      param_1[0x46] = (int)puVar10;
    } while (puVar10 == &DAT_02014b50);
  }
  if (param_1[0x46] == 0x6054b50) {
    if ((param_2 != '\0') || (param_1[0x40] != 0)) {
      uStack_44 = 0;
      uStack_42 = 0;
      uStack_40 = 0;
      uStack_3e = 0;
      uStack_3c = 0;
      uStack_38 = 0;
      uStack_1c = 7;
      uStack_20 = 0;
      uStack_30 = 0;
      uStack_18 = 0;
      pcStack_118 = (char *)param_1[7];
      uStack_4 = 1;
      piStack_11c = (int *)0x880c37;
      FUN_0087feb0();
      pcStack_118 = (char *)0x880c48;
      piVar11 = (int *)FUN_0087e630();
      uStack_4._0_1_ = 2;
      if (param_1 + 0x48 != piVar11) {
        pcStack_118 = (char *)0x0;
        pcStack_120 = (char *)0x880c63;
        piStack_11c = piVar11;
        FID_conflict_assign();
      }
      uStack_4._0_1_ = 1;
      FUN_0040159c();
      param_1[0x46] = 0;
      if (param_1[0x40] != 0) {
        pcStack_118 = (char *)0x880c93;
        piVar11 = (int *)FUN_0087e630();
        uStack_4._0_1_ = 3;
        if ((int *)(*(int *)(param_1[0x40] + 4) + 0x80) != piVar11) {
          pcStack_118 = (char *)0x0;
          pcStack_120 = (char *)0x880cb4;
          piStack_11c = piVar11;
          FID_conflict_assign();
        }
        FUN_0040159c();
        piVar11 = (int *)param_1[0x40];
        *piVar11 = *piVar11 + -1;
        if (*piVar11 == 0) {
                    // WARNING: Subroutine does not return
          pcStack_118 = &UNK_00880cce;
          FUN_00a3f6a1();
        }
        param_1[0x40] = 0;
      }
      FUN_0087c6f0();
    }
  }
  else {
    if (param_1[0x46] == 0x4034b50) {
      pcStack_118 = (char *)param_1[7];
      piStack_11c = (int *)0x880d06;
      iVar7 = FUN_0087d990();
      pcStack_118 = (char *)param_1[0x44];
      param_1[0x3b] = iVar7;
      pcVar5 = *(code **)(param_1[0xe] + 0x48);
      param_1[0x46] = 0;
      piStack_11c = (int *)0x880d29;
      (*pcVar5)();
      param_1[0x26] = param_1[0x44];
      param_1[0x27] = param_1[0x45];
      if (param_1[0x3b] != 0) {
        param_1[0x47] = param_1[0x47] + 1;
        goto LAB_00880e51;
      }
    }
    apuStack_fc[0] = auStack_134;
    FUN_0043c211(&DAT_00d25fa0);
    cVar6 = FUN_00846b30(1);
    if (cVar6 != '\0') {
      pcStack_118 = (char *)0x880d8b;
      FUN_004325b6();
      uStack_4 = 4;
      pcStack_118 = (char *)0x880da7;
      FUN_0043c211();
      pcStack_118 = (char *)&uStack_44;
      uStack_4._0_1_ = 5;
      piStack_11c = (int *)0x880dc1;
      FUN_00820bf9();
      pcStack_118 = (char *)0x880dce;
      FUN_008433c0();
      pcStack_118 = "wxZipInputStream::ReadLocal";
      piStack_11c = (int *)0x684;
      pcStack_120 = "..\\..\\src\\common\\zipstrm.cpp";
      uStack_124 = 1;
      uStack_4._0_1_ = 6;
      uStack_128 = 0x880df9;
      ppuVar12 = (undefined **)FUN_008423d0();
      uStack_4._0_1_ = 7;
      FUN_008854f0();
      piStack_11c = (int *)0x880e13;
      pcStack_118 = (char *)ppuVar12;
      FUN_0083fe90();
      uStack_4._0_1_ = 6;
      FUN_00842440();
      uStack_4._0_1_ = 5;
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
LAB_00880e51:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00880e80(int *param_1_00,int param_1,undefined param_2)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  longlong lVar4;
  longlong lVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb5b6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((((param_1_00[0x44] & param_1_00[0x45]) == 0xffffffff) &&
      (cVar1 = FUN_00880180(), cVar1 == '\0')) || (param_1_00[3] == 3)) {
    ExceptionList = local_c;
    return 0;
  }
  if (param_1_00[0x3d] != 0) {
    (**(code **)(*param_1_00 + 0x4c))();
  }
  *(undefined *)(param_1_00 + 0x3a) = param_2;
  if (param_1 != 0) {
    if (((param_1_00[0x3b] != 0) && (param_1_00[0x3d] == 0)) &&
       (lVar5 = *(longlong *)(param_1 + 0x60), lVar4 = (**(code **)(param_1_00[0xe] + 0x18))(),
       lVar4 == lVar5)) {
      ExceptionList = local_c;
      return 1;
    }
    if (*(char *)(param_1_00 + 0x3e) == '\0') {
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
        ExceptionList = local_c;
        return 0;
      }
      FUN_008402e0();
      ExceptionList = local_c;
      return 0;
    }
  }
  param_1_00[3] = 3;
  if (param_1 != 0) {
    FUN_0087d240();
  }
  if (*(char *)(param_1_00 + 0x3e) == '\0') {
LAB_008810b0:
    if (param_1_00[0x3b] == 0) goto LAB_008810bd;
  }
  else {
    (**(code **)(param_1_00[0xe] + 0x18))();
    lVar5 = FUN_0087b460();
    if (lVar5 == -1) {
      ExceptionList = local_c;
      return 0;
    }
    iVar2 = FUN_0087b260();
    if (iVar2 != 0x4034b50) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        uStack_4 = 0;
        FUN_0043c211();
        uStack_4._0_1_ = 1;
        FUN_00820bf9();
        FUN_008433c0();
        uStack_4._0_1_ = 2;
        FUN_008423d0();
        uStack_4._0_1_ = 3;
        FUN_00840b80();
        uStack_4._0_1_ = 2;
        FUN_00842440();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      ExceptionList = local_c;
      return 0;
    }
    if (*(char *)(param_1_00 + 0x3e) == '\0') goto LAB_008810b0;
LAB_008810bd:
    iVar2 = FUN_0087d990();
    param_1_00[0x3b] = iVar2;
    if ((iVar2 != 0) && (*(char *)(param_1_00 + 0x3e) != '\0')) {
      iVar2 = FUN_0087b830();
      if (iVar2 != 0) {
        FUN_0087b800();
        FUN_0087b1e0();
        FUN_0087bf70();
      }
      if ((param_1 != 0) && (param_1 != iVar2)) {
        FUN_0087b800();
        FUN_0087b1e0();
      }
    }
    if (param_1_00[0x3b] == 0) goto LAB_00881162;
  }
  param_1_00[3] = 0;
LAB_00881162:
  uVar3 = (**(code **)(*param_1_00 + 0x10))();
  ExceptionList = local_c;
  return uVar3;
}



undefined4 * __fastcall FUN_00881190(int param_1)

{
  char cVar1;
  int iVar2;
  undefined4 *puVar3;
  longlong lVar4;
  undefined8 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb643;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(short *)(param_1 + 0x4a) == 0) {
    lVar4 = (**(code **)(*(int *)(param_1 + 0x38) + 0x14))();
    if (lVar4 != -1) {
      uVar5 = (**(code **)(*(int *)(param_1 + 0x38) + 0x14))();
      iVar2 = *(int *)(param_1 + 0x28);
      *(undefined4 *)(iVar2 + 0x28) = 0;
      *(undefined4 *)(iVar2 + 0x2c) = 0;
      *(undefined4 *)(iVar2 + 0xc) = 0;
      *(undefined8 *)(iVar2 + 0x30) = uVar5;
      ExceptionList = local_c;
      return *(undefined4 **)(param_1 + 0x28);
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_008423d0();
      local_4._0_1_ = 3;
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  else {
    if (*(short *)(param_1 + 0x4a) == 8) {
      if (*(int *)(param_1 + 0x2c) != 0) {
        FUN_0087fce0();
        ExceptionList = local_c;
        return *(undefined4 **)(param_1 + 0x2c);
      }
      puVar3 = (undefined4 *)operator_new(0x38);
      local_4 = 4;
      if (puVar3 != (undefined4 *)0x0) {
        FUN_008a80d0();
        *puVar3 = wxZlibInputStream2::vftable;
        *(undefined4 **)(param_1 + 0x2c) = puVar3;
        ExceptionList = local_c;
        return puVar3;
      }
      *(undefined4 *)(param_1 + 0x2c) = 0;
      ExceptionList = local_c;
      return (undefined4 *)0x0;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 5;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,6);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 7;
      FUN_008423d0();
      local_4._0_1_ = 8;
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 7;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,6);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
      ExceptionList = local_c;
      return (undefined4 *)0x0;
    }
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_008814c0(int *param_1,undefined4 param_2,uint param_3)

{
  int iVar1;
  code *pcVar2;
  char cVar3;
  int *piVar4;
  uint uVar5;
  int iVar6;
  longlong lVar7;
  longlong lVar8;
  undefined4 uStack_1b0;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb6f1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1[0x3d] == 0) &&
     (((param_1[0x3b] == 0 && (cVar3 = FUN_00880e80(), cVar3 == '\0')) ||
      (cVar3 = FUN_0087ca40(), cVar3 == '\0')))) {
    param_1[3] = 3;
  }
  cVar3 = (**(code **)(*param_1 + 0x10))();
  if ((cVar3 == '\0') || (param_3 == 0)) {
    uStack_1b0 = 0;
  }
  else {
    piVar4 = (int *)(**(code **)(*(int *)param_1[0x3d] + 0x2c))();
    uVar5 = (**(code **)(*piVar4 + 0x30))();
    if (*(char *)(param_1 + 0x3a) == '\0') {
      iVar6 = FUN_008ecba0();
      param_1[0x3c] = iVar6;
    }
    if (uVar5 < param_3) {
      param_1[3] = *(int *)(param_1[0x3d] + 0xc);
    }
    cVar3 = (**(code **)(*param_1 + 0x38))();
    if (cVar3 != '\0') {
      if ((*(byte *)(param_1 + 0x12) & 8) != 0) {
        iVar6 = FUN_0087b950();
        param_1[0x3b] = param_1[0x3b] + iVar6;
        piVar4 = (int *)FUN_0087b830();
        if (piVar4 != (int *)0x0) {
          iVar6 = *piVar4;
          piVar4[8] = param_1[0x16];
          iVar1 = param_1[0x19];
          piVar4[10] = param_1[0x18];
          piVar4[0xb] = iVar1;
          (**(code **)(param_1[0xe] + 0x14))();
          (**(code **)(iVar6 + 0x34))();
          FUN_0087b1e0();
        }
      }
      if (*(char *)(param_1 + 0x3a) == '\0') {
        pcVar2 = *(code **)(*param_1 + 0x40);
        param_1[3] = 3;
        piVar4 = param_1 + 0xe;
        lVar7 = (*pcVar2)();
        lVar8 = (**(code **)(*piVar4 + 0x14))();
        if (lVar7 == lVar8) {
          if (param_1[0x3c] == param_1[0x16]) {
            param_1[3] = 1;
          }
          else {
            FUN_0043c211(&DAT_00d25fa0);
            cVar3 = FUN_00846b30(1);
            if (cVar3 != '\0') {
              FUN_004325b6();
              uStack_4 = 7;
              FUN_0043c211();
              uStack_4._0_1_ = 8;
              FUN_00820bf9();
              FUN_008433c0();
              uStack_4._0_1_ = 9;
              (**(code **)(*piVar4 + 0x2c))();
              FUN_00432231();
              uStack_4._0_1_ = 0xb;
              FUN_008423d0();
              uStack_4._0_1_ = 0xd;
              FUN_00848860();
              uStack_4._0_1_ = 10;
              FUN_00842440();
              FUN_0040159c();
              uStack_4 = CONCAT31(uStack_4._1_3_,8);
              FUN_0081b5bc();
              FUN_0040159c();
              FUN_0040159c();
            }
          }
        }
        else {
          FUN_0043c211(&DAT_00d25fa0);
          cVar3 = FUN_00846b30(1);
          if (cVar3 != '\0') {
            FUN_004325b6();
            uStack_4 = 0;
            FUN_0043c211();
            uStack_4._0_1_ = 1;
            FUN_00820bf9();
            FUN_008433c0();
            uStack_4._0_1_ = 2;
            (**(code **)(*piVar4 + 0x2c))();
            FUN_00432231();
            uStack_4._0_1_ = 4;
            FUN_008423d0();
            uStack_4._0_1_ = 6;
            FUN_00848860();
            uStack_4._0_1_ = 3;
            FUN_00842440();
            FUN_0040159c();
            uStack_4 = CONCAT31(uStack_4._1_3_,1);
            FUN_0081b5bc();
            FUN_0040159c();
            FUN_0040159c();
          }
        }
      }
    }
  }
  ExceptionList = local_c;
  return uStack_1b0;
}



undefined FUN_008818f0(int *param_1,int *param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined uVar4;
  int *piVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcb728;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  cVar1 = FUN_00880e80(param_1,1);
  piVar5 = param_1;
  if (cVar1 != '\0') {
    piVar5 = (int *)0x0;
    cVar1 = FUN_0087bc60(param_1,1);
    if (cVar1 != '\0') {
      piVar3 = (int *)FUN_008831e0(param_2);
      cVar1 = (**(code **)(*piVar3 + 0x10))(uVar2);
      if ((cVar1 != '\0') && (cVar1 = (**(code **)(*param_2 + 0x38))(), cVar1 != '\0')) {
        uVar4 = 1;
        goto LAB_00881977;
      }
    }
  }
  uVar4 = 0;
LAB_00881977:
  local_4 = 0xffffffff;
  if (piVar5 != (int *)0x0) {
    (**(code **)(*piVar5 + 4))(1);
  }
  ExceptionList = local_c;
  return uVar4;
}



undefined4 * __thiscall FUN_00881a30(int param_1_00,undefined4 param_1,int *param_2,int *param_3)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  undefined4 *puVar4;
  ushort uVar5;
  int iVar6;
  int iVar7;
  longlong lVar8;
  undefined8 uVar9;
  uint uStack_a0;
  void *pvStack_9c;
  uint uStack_68;
  void *pvStack_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb784;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(short *)((int)param_2 + 0x12) == -1) {
    if ((*(int *)(param_1_00 + 0x70) == 0) &&
       ((((*(uint *)(param_1_00 + 0x78) & *(uint *)(param_1_00 + 0x7c)) != 0xffffffff ||
         ((param_2[10] & param_2[0xb]) != 0xffffffff)) ||
        (lVar8 = (**(code **)(*param_2 + 0x14))(), lVar8 != -1)))) {
      *(undefined2 *)((int)param_2 + 0x12) = 0;
    }
    else {
      iVar7 = 0;
      iVar6 = 0;
      iVar3 = *param_3;
      piVar1 = param_3;
      while (iVar3 != 0) {
        iVar6 = iVar6 + piVar1[1];
        iVar7 = iVar7 + 1;
        piVar1 = param_3 + iVar7 * 2;
        iVar3 = param_3[iVar7 * 2];
      }
      *(ushort *)((int)param_2 + 0x12) = (iVar6 < 7) - 1 & 8;
    }
  }
  if (*(short *)((int)param_2 + 0x12) == 0) {
    if ((param_2[10] & param_2[0xb]) == 0xffffffff) {
      uVar9 = (**(code **)(*param_2 + 0x14))();
      *(undefined8 *)(param_2 + 10) = uVar9;
    }
    puVar4 = *(undefined4 **)(param_1_00 + 0x1c);
  }
  else if (*(short *)((int)param_2 + 0x12) == 8) {
    uVar5 = 0;
    switch(*(undefined4 *)(param_1_00 + 0x70)) {
    case 0:
    case 1:
      uVar5 = 6;
      break;
    case 2:
    case 3:
    case 4:
      uVar5 = 4;
      break;
    case 8:
    case 9:
      uVar5 = 2;
    }
    *(ushort *)(param_2 + 4) = *(ushort *)(param_2 + 4) & 0xfff9 | uVar5 | 8;
    if (*(int *)(param_1_00 + 0x20) == 0) {
      puVar4 = (undefined4 *)operator_new(0x30);
      uStack_4 = 0;
      if (puVar4 == (undefined4 *)0x0) {
        *(undefined4 *)(param_1_00 + 0x20) = 0;
        puVar4 = (undefined4 *)0x0;
      }
      else {
        FUN_008a81b0();
        *puVar4 = wxZlibOutputStream2::vftable;
        *(undefined4 **)(param_1_00 + 0x20) = puVar4;
      }
    }
    else {
      FUN_0087fb00();
      puVar4 = *(undefined4 **)(param_1_00 + 0x20);
    }
  }
  else {
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 != '\0') {
      FUN_004325b6();
      uStack_4 = 1;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,2);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 3;
      FUN_008423d0();
      uStack_4._0_1_ = 4;
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4._0_1_ = 3;
      FUN_00842440();
      uStack_4 = CONCAT31(uStack_4._1_3_,2);
      FUN_0081b5bc();
      _free(pvStack_9c);
      if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(pvStack_64);
      if (7 < uStack_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    puVar4 = (undefined4 *)0x0;
  }
  ExceptionList = local_c;
  return puVar4;
}



undefined4 __fastcall FUN_00881d30(int *param_1)

{
  uint *puVar1;
  uint uVar2;
  int *piVar3;
  code *pcVar4;
  char cVar5;
  undefined4 uVar6;
  uint uVar7;
  uint uVar8;
  uint unaff_EDI;
  longlong lVar9;
  undefined8 uVar10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bcb7ec;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar5 = (**(code **)(*param_1 + 0x10))();
  if ((cVar5 != '\0') && (param_1[0x12] != 0)) {
    FUN_0087ea50();
  }
  uVar6 = (**(code **)(*param_1 + 0x10))();
  if ((char)uVar6 == '\0') {
    ExceptionList = local_c;
    return uVar6;
  }
  if (param_1[0x1b] == 0) {
    ExceptionList = local_c;
    return 1;
  }
  (**(code **)(*param_1 + 0x60))();
  param_1[0x1b] = 0;
  lVar9 = (**(code **)(*(int *)param_1[7] + 0x30))();
  uVar8 = (uint)lVar9;
  piVar3 = *(int **)(param_1[0xe] + 8);
  if (*(char *)(param_1 + 0x13) != '\0') {
    param_1[0x1a] = piVar3[8];
    uVar10 = (**(code **)(*piVar3 + 0x14))();
    *(undefined8 *)(param_1 + 0x18) = uVar10;
  }
  if ((*(byte *)(piVar3 + 4) & 8) == 0) {
    if (param_1[0x1a] == piVar3[8]) {
      uVar10 = (**(code **)(*piVar3 + 0x14))();
      if (((param_1[0x18] == (int)uVar10) && (param_1[0x19] == (int)((ulonglong)uVar10 >> 0x20))) &&
         (lVar9 == *(longlong *)(piVar3 + 10))) goto LAB_00881ef9;
    }
    if ((param_1[0x1e] & param_1[0x1f]) == 0xffffffff) {
      param_1[3] = 2;
    }
    else {
      (**(code **)(*(int *)param_1[4] + 0x30))();
      (**(code **)(*(int *)param_1[4] + 0x2c))();
      FUN_0087baf0();
      (**(code **)(*(int *)param_1[4] + 0x2c))();
      param_1[3] = *(int *)(param_1[4] + 0xc);
      uVar8 = unaff_EDI;
    }
  }
  else {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((param_1[0x1e] & param_1[0x1f]) != 0xffffffff)) {
      FUN_008402e0();
    }
    uVar7 = FUN_0087baf0();
    puVar1 = (uint *)(param_1 + 0x14);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 + uVar7;
    param_1[0x15] = param_1[0x15] + (uint)CARRY4(uVar2,uVar7);
    param_1[3] = *(int *)(param_1[4] + 0xc);
  }
LAB_00881ef9:
  uVar7 = param_1[0x16] + uVar8;
  puVar1 = (uint *)(param_1 + 0x14);
  uVar2 = *puVar1;
  *puVar1 = *puVar1 + uVar7;
  param_1[0x15] =
       param_1[0x15] + (int)((ulonglong)lVar9 >> 0x20) + (uint)CARRY4(param_1[0x16],uVar8) +
       (uint)CARRY4(uVar2,uVar7);
  param_1[0x16] = 0;
  param_1[0x18] = 0;
  param_1[0x19] = 0;
  (**(code **)(*(int *)param_1[7] + 0x3c))();
  pcVar4 = *(code **)(*param_1 + 0x10);
  *(undefined *)(param_1 + 0x13) = 0;
  cVar5 = (*pcVar4)();
  if (cVar5 == '\0') {
    FUN_0043c211(&DAT_00d25fa0);
    cVar5 = FUN_00846b30(1);
    if (cVar5 != '\0') {
      FUN_004325b6();
      uStack_8 = (undefined *)0x0;
      FUN_0043c211();
      uStack_8._0_1_ = 1;
      FUN_00820bf9();
      FUN_008433c0();
      uStack_8._0_1_ = 2;
      (**(code **)(*piVar3 + 0x2c))();
      FUN_00432231();
      uStack_8._0_1_ = 4;
      FUN_008423d0();
      uStack_8._0_1_ = 6;
      FUN_00848860();
      uStack_8._0_1_ = 3;
      FUN_00842440();
      FUN_0040159c();
      uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      uStack_8 = (undefined *)0xffffffff;
      FUN_0040159c();
    }
  }
  else {
    param_1[3] = *(int *)(param_1[4] + 0xc);
  }
  uVar6 = (**(code **)(*param_1 + 0x10))();
  ExceptionList = local_c;
  return uVar6;
}



int __thiscall FUN_008820a0(int *param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  
  if ((param_1_00[0x44] & param_1_00[0x45]) == 0xffffffff) {
    cVar1 = FUN_00880180();
    if (cVar1 == '\0') {
      FUN_004325b6(PTR_DAT_03236318);
      return param_1;
    }
  }
  if (*(char *)(param_1_00 + 0x3e) == '\0') {
    cVar1 = (**(code **)(*param_1_00 + 0x38))();
    if ((cVar1 != '\0') && (param_1_00[0x46] != 0)) {
      param_1_00[3] = 0;
      iVar2 = FUN_008808e0(1);
      param_1_00[3] = iVar2;
    }
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x48,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int __fastcall FUN_00882140(int *param_1)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  void *pvStack_18;
  undefined4 uStack_14;
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb823;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (((param_1[0x44] & param_1[0x45]) != 0xffffffff) ||
     (cVar2 = FUN_00880180(DAT_0323f878 ^ (uint)&stack0xffffffe0), cVar2 != '\0')) {
    if (*(char *)(param_1 + 0x3e) == '\0') {
      iVar3 = FUN_008808e0(0);
    }
    else {
      iVar3 = FUN_008806a0();
    }
    param_1[3] = iVar3;
    cVar2 = (**(code **)(*param_1 + 0x10))();
    if (cVar2 != '\0') {
      pvStack_18 = operator_new(0xb0);
      uStack_4 = 0;
      if (pvStack_18 == (void *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = FUN_0087d0c0(param_1 + 0xe);
      }
      uStack_4 = 1;
      iStack_10 = iVar3;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar3 == 0)) {
        FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x51e,"wxZipEntryPtr_::operator ->",
                     "m_ptr != 0",0);
      }
      pvStack_18 = *(void **)(iVar3 + 0x60);
      piVar1 = (int *)param_1[0x3f];
      uStack_14 = *(undefined4 *)(iVar3 + 100);
      piVar4 = (int *)FUN_009dbfa0(&pvStack_18);
      *piVar4 = iVar3;
      *piVar1 = *piVar1 + 1;
      *(int **)(iVar3 + 0xa8) = piVar1;
      ExceptionList = local_c;
      return iVar3;
    }
  }
  ExceptionList = local_c;
  return 0;
}



uint FUN_00882270(int param_1)

{
  uint in_EAX;
  uint uVar1;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    in_EAX = FUN_0048a085(param_1,&PTR_u_wxZipEntry_032369d0);
    if (in_EAX == 0) {
      in_EAX = FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/object.h",0xa1,"wxCheckCast",
                            "wxDynamicCast(ptr, T)","wxStaticCast() used incorrectly");
    }
  }
  if (param_1 != 0) {
    uVar1 = FUN_00880e80(param_1,0);
    return uVar1;
  }
  return in_EAX & 0xffffff00;
}



undefined4 __fastcall FUN_008822d0(int param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  iVar3 = FUN_008820a0(local_30);
  local_4 = 0;
  if (param_1 + 0x80 != iVar3) {
    FID_conflict_assign(iVar3,0,0xffffffff);
  }
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar2);
  }
  local_2c = local_2c & 0xffff0000;
  piVar1 = *(int **)(param_1 + 0x24);
  local_18 = 7;
  local_1c = 0;
  if (piVar1 != (int *)0x0) {
    *piVar1 = *piVar1 + -1;
    piVar1[1] = 0;
    if (*piVar1 == 0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(piVar1,uVar2);
    }
  }
  uVar4 = FUN_0087bbb0(param_1);
  *(undefined4 *)(param_1 + 0x24) = uVar4;
  ExceptionList = local_c;
  return 1;
}



int __fastcall thunk_FUN_00882140(int *param_1)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  void *pvStack_18;
  undefined4 uStack_14;
  int iStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb823;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  if (((param_1[0x44] & param_1[0x45]) != 0xffffffff) ||
     (cVar2 = FUN_00880180(DAT_0323f878 ^ (uint)&stack0xffffffe0), cVar2 != '\0')) {
    if (*(char *)(param_1 + 0x3e) == '\0') {
      iVar3 = FUN_008808e0(0);
    }
    else {
      iVar3 = FUN_008806a0();
    }
    param_1[3] = iVar3;
    cVar2 = (**(code **)(*param_1 + 0x10))();
    if (cVar2 != '\0') {
      pvStack_18 = operator_new(0xb0);
      uStack_4 = 0;
      if (pvStack_18 == (void *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = FUN_0087d0c0(param_1 + 0xe);
      }
      uStack_4 = 1;
      iStack_10 = iVar3;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar3 == 0)) {
        FUN_008402e0("..\\..\\src\\common\\zipstrm.cpp",0x51e,"wxZipEntryPtr_::operator ->",
                     "m_ptr != 0",0);
      }
      pvStack_18 = *(void **)(iVar3 + 0x60);
      piVar1 = (int *)param_1[0x3f];
      uStack_14 = *(undefined4 *)(iVar3 + 100);
      piVar4 = (int *)FUN_009dbfa0(&pvStack_18);
      *piVar4 = iVar3;
      *piVar1 = *piVar1 + 1;
      *(int **)(iVar3 + 0xa8) = piVar1;
      ExceptionList = pvStack_c;
      return iVar3;
    }
  }
  ExceptionList = pvStack_c;
  return 0;
}



undefined4 * __thiscall FUN_008823c0(undefined4 *param_1_00,undefined4 param_1)

{
  void *pvVar1;
  int *piVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb853;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00883ce0(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  local_4 = 0;
  *param_1_00 = wxFileInputStream::vftable;
  pvVar1 = operator_new(8);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (pvVar1 == (void *)0x0) {
    piVar2 = (int *)0x0;
  }
  else {
    piVar2 = (int *)FUN_00889060(param_1,0);
  }
  param_1_00[7] = piVar2;
  *(undefined *)(param_1_00 + 8) = 1;
  if (*piVar2 == -1) {
    param_1_00[3] = 3;
  }
  ExceptionList = local_c;
  return param_1_00;
}



bool __fastcall FUN_00882450(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_0085c6e0(**(undefined4 **)(param_1 + 0x1c));
  return iVar1 == 1;
}



void FUN_00882470(void)

{
  FUN_00888a70();
  return;
}



int __thiscall FUN_00882480(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  
  iVar1 = FUN_00887390(param_1,param_2);
  if (iVar1 == 0) {
    *(undefined4 *)(param_1_00 + 0xc) = 1;
    return 0;
  }
  if (iVar1 == -1) {
    *(undefined4 *)(param_1_00 + 0xc) = 3;
    return 0;
  }
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  return iVar1;
}



void FUN_008824d0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00887a00(param_1,param_2,param_3);
  return;
}



void FUN_008824f0(void)

{
  FUN_00887cc0();
  return;
}



undefined4 * __thiscall FUN_00882500(undefined4 *param_1_00,undefined4 param_1)

{
  void *pvVar1;
  int *piVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb883;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00883d40(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  local_4 = 0;
  *param_1_00 = wxFileOutputStream::vftable;
  pvVar1 = operator_new(8);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (pvVar1 == (void *)0x0) {
    piVar2 = (int *)0x0;
  }
  else {
    piVar2 = (int *)FUN_00889060(param_1,1);
  }
  param_1_00[4] = piVar2;
  *(undefined *)(param_1_00 + 5) = 1;
  if (*piVar2 == -1) {
    param_1_00[3] = 2;
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined __fastcall FUN_00882590(int param_1)

{
  undefined uVar1;
  
  if (*(char *)(param_1 + 0x14) != '\0') {
    uVar1 = FUN_008871c0();
    return uVar1;
  }
  return 1;
}



bool __fastcall FUN_008825b0(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_0085c6e0(**(undefined4 **)(param_1 + 0x10));
  return iVar1 == 1;
}



void __thiscall FUN_008825d0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_00887570(param_1,param_2);
  *(uint *)(param_1_00 + 0xc) = -(uint)(*(int *)(*(int *)(param_1_00 + 0x10) + 4) != 0) & 2;
  return;
}



void FUN_00882600(void)

{
  FUN_00887cc0();
  return;
}



void FUN_00882610(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00887a00(param_1,param_2,param_3);
  return;
}



void FUN_00882630(void)

{
  FUN_009b4100();
  FUN_00887840();
  return;
}



void FUN_00882650(void)

{
  FUN_00888a70();
  return;
}



undefined4 * __thiscall FUN_00882660(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  int *piVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb853;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00883ce0(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  local_4 = 0;
  *param_1_00 = wxFFileInputStream::vftable;
  pvVar1 = operator_new(0x28);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (pvVar1 == (void *)0x0) {
    piVar2 = (int *)0x0;
  }
  else {
    piVar2 = (int *)FUN_008a0880(param_1,param_2);
  }
  param_1_00[7] = piVar2;
  *(undefined *)(param_1_00 + 8) = 1;
  if (*piVar2 == 0) {
    param_1_00[3] = 2;
  }
  ExceptionList = local_c;
  return param_1_00;
}



bool __fastcall FUN_00882700(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_0085c720(**(undefined4 **)(param_1 + 0x1c));
  return iVar1 == 1;
}



void FUN_00882720(void)

{
  FUN_008a08f0();
  return;
}



int __thiscall FUN_00882730(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_0089fd20(param_1,param_2);
  if (**(FILE ***)(param_1_00 + 0x1c) != (FILE *)0x0) {
    iVar2 = _feof(**(FILE ***)(param_1_00 + 0x1c));
    if (iVar2 == 0) goto LAB_00882766;
  }
  *(undefined4 *)(param_1_00 + 0xc) = 1;
LAB_00882766:
  if (iVar1 == -1) {
    *(undefined4 *)(param_1_00 + 0xc) = 3;
    return 0;
  }
  return iVar1;
}



void FUN_00882780(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  
  cVar1 = FUN_008a0440(param_1,param_2,param_3);
  if (cVar1 != '\0') {
    FUN_008a0690();
    return;
  }
  return;
}



void FUN_008827c0(void)

{
  FUN_008a0690();
  return;
}



undefined4 * __thiscall FUN_008827d0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  FILE **ppFVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb883;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00883d40(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  local_4 = 0;
  *param_1_00 = wxFFileOutputStream::vftable;
  pvVar1 = operator_new(0x28);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (pvVar1 == (void *)0x0) {
    ppFVar2 = (FILE **)0x0;
  }
  else {
    ppFVar2 = (FILE **)FUN_008a0880(param_1,param_2);
  }
  param_1_00[4] = ppFVar2;
  *(undefined *)(param_1_00 + 5) = 1;
  if ((*ppFVar2 != (FILE *)0x0) && (iVar3 = _ferror(*ppFVar2), iVar3 == 0)) {
    ExceptionList = local_c;
    return param_1_00;
  }
  param_1_00[3] = 2;
  ExceptionList = local_c;
  return param_1_00;
}



undefined __fastcall FUN_00882870(int param_1)

{
  undefined uVar1;
  
  if (*(char *)(param_1 + 0x14) != '\0') {
    uVar1 = FUN_0089fb50();
    return uVar1;
  }
  return 1;
}



bool __fastcall FUN_00882890(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_0085c720(**(undefined4 **)(param_1 + 0x10));
  return iVar1 == 1;
}



undefined4 __thiscall FUN_008828b0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  
  uVar1 = FUN_0089ff40(param_1,param_2);
  if (**(FILE ***)(param_1_00 + 0x10) != (FILE *)0x0) {
    iVar2 = _ferror(**(FILE ***)(param_1_00 + 0x10));
    if (iVar2 == 0) {
      *(undefined4 *)(param_1_00 + 0xc) = 0;
      return uVar1;
    }
  }
  *(undefined4 *)(param_1_00 + 0xc) = 2;
  return uVar1;
}



void FUN_00882900(void)

{
  FUN_008a0690();
  return;
}



void FUN_00882910(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  
  cVar1 = FUN_008a0440(param_1,param_2,param_3);
  if (cVar1 != '\0') {
    FUN_008a0690();
    return;
  }
  return;
}



void FUN_00882950(void)

{
  FUN_009b4100();
  FUN_008a0270();
  return;
}



void FUN_00882970(void)

{
  FUN_008a08f0();
  return;
}



void __fastcall FUN_00882980(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bce308;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxFileInputStream::vftable;
  local_4 = 0;
  if ((*(char *)(param_1 + 8) != '\0') && (iVar1 = param_1[7], iVar1 != 0)) {
    FUN_008871c0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  local_4 = 0xffffffff;
  FUN_00883d00(uVar2);
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_00882a00(int param_1)

{
  if ((*(int *)(param_1 + 0xc) == 0) && (**(int **)(param_1 + 0x1c) != -1)) {
    return 1;
  }
  return 0;
}



void __fastcall FUN_00882a20(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcb8a8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxFileOutputStream::vftable;
  local_4 = 0;
  if (*(char *)(param_1 + 5) != '\0') {
    FUN_009b4100(uVar2);
    FUN_00887840();
    iVar1 = param_1[4];
    if (iVar1 != 0) {
      FUN_008871c0();
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar1);
    }
  }
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_00882ab0(int param_1)

{
  if ((*(int *)(param_1 + 0xc) == 0) && (**(int **)(param_1 + 0x10) != -1)) {
    return 1;
  }
  return 0;
}



undefined4 __fastcall FUN_00882ad0(int param_1)

{
  if ((*(int *)(param_1 + 0xc) == 0) && (**(int **)(param_1 + 0x1c) != 0)) {
    return 1;
  }
  return 0;
}



undefined4 __fastcall FUN_00882af0(int param_1)

{
  if ((*(int *)(param_1 + 0xc) == 0) && (**(int **)(param_1 + 0x10) != 0)) {
    return 1;
  }
  return 0;
}



undefined4 __thiscall FUN_00882b10(undefined4 param_1_00,byte param_1)

{
  FUN_00882980();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00882b30(undefined4 param_1_00,byte param_1)

{
  FUN_00882a20();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00882b50(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccd9b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0089fb50(DAT_0323f878 ^ (uint)&stack0xffffffec);
  _free(*(void **)(param_1 + 0x20));
  if (7 < *(uint *)(param_1 + 0x1c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 8));
  }
  *(undefined4 *)(param_1 + 0x1c) = 7;
  *(undefined4 *)(param_1 + 0x18) = 0;
  *(undefined2 *)(param_1 + 8) = 0;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00882bd0(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcb8a8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxFFileOutputStream::vftable;
  local_4 = 0;
  if (*(char *)(param_1 + 5) != '\0') {
    FUN_009b4100(uVar2);
    FUN_008a0270();
    iVar1 = param_1[4];
    if (iVar1 != 0) {
      FUN_00882b50();
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar1);
    }
  }
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00882c60(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bce308;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxFFileInputStream::vftable;
  local_4 = 0;
  if ((*(char *)(param_1 + 8) != '\0') && (iVar1 = param_1[7], iVar1 != 0)) {
    FUN_00882b50();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  local_4 = 0xffffffff;
  FUN_00883d00(uVar2);
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00882ce0(undefined4 param_1_00,byte param_1)

{
  FUN_00882bd0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00882d00(undefined4 param_1_00,byte param_1)

{
  FUN_00882c60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00882d20(undefined4 *param_1_00,undefined4 param_1)

{
  *(undefined *)(param_1_00 + 6) = 1;
  *(undefined *)((int)param_1_00 + 0x19) = 1;
  *param_1_00 = wxStreamBuffer::vftable;
  param_1_00[3] = 0;
  param_1_00[2] = 0;
  param_1_00[1] = 0;
  param_1_00[4] = 0;
  param_1_00[5] = param_1;
  *(undefined *)((int)param_1_00 + 0x1a) = 0;
  return;
}



uint __fastcall FUN_00882d50(int param_1)

{
  uint in_EAX;
  uint uVar1;
  uint uVar2;
  
  if (*(char *)(param_1 + 0x1a) == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      in_EAX = FUN_00840480("..\\..\\src\\common\\stream.cpp",0xea,"wxStreamBuffer::FlushBuffer",
                            "m_flushable",L"can\'t flush this buffer");
    }
  }
  else {
    in_EAX = *(uint *)(param_1 + 0xc);
    uVar2 = *(uint *)(param_1 + 4);
    if (in_EAX != uVar2) {
      if ((*(int *)(param_1 + 0x14) == 0) || (*(int **)(param_1 + 0x10) == (int *)0x0)) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          uVar2 = FUN_00840480("..\\..\\src\\common\\stream.cpp",0xf2,"wxStreamBuffer::FlushBuffer",
                               "outStream",L"should have a stream in wxStreamBuffer");
          return uVar2 & 0xffffff00;
        }
      }
      else {
        uVar1 = in_EAX - uVar2;
        in_EAX = (**(code **)(**(int **)(param_1 + 0x10) + 0x40))(uVar2,uVar1);
        if (in_EAX == uVar1) {
          *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_1 + 4);
          return CONCAT31((int3)((uint)*(undefined4 *)(param_1 + 4) >> 8),1);
        }
      }
    }
  }
  return in_EAX & 0xffffff00;
}



void FUN_00882df0(void)

{
  return;
}



undefined ** FUN_00882e00(void)

{
  return &PTR_u_wxInputStream_03236b38;
}



bool __fastcall FUN_00882e10(int param_1)

{
  return *(int *)(param_1 + 0xc) != 1;
}



void * __thiscall FUN_00882e20(int param_1_00,int param_1)

{
  size_t _Size;
  void *pvVar1;
  size_t _Size_00;
  
  _Size_00 = *(int *)(param_1_00 + 0x14) - *(int *)(param_1_00 + 0x18);
  _Size = _Size_00 + param_1;
  pvVar1 = _malloc(_Size);
  if (pvVar1 == (void *)0x0) {
    return (void *)0x0;
  }
  if (*(int *)(param_1_00 + 0x10) != 0) {
    _memmove((void *)((int)pvVar1 + param_1),
             (void *)(*(int *)(param_1_00 + 0x18) + *(int *)(param_1_00 + 0x10)),_Size_00);
    _free(*(void **)(param_1_00 + 0x10));
  }
  *(void **)(param_1_00 + 0x10) = pvVar1;
  *(size_t *)(param_1_00 + 0x14) = _Size;
  *(undefined4 *)(param_1_00 + 0x18) = 0;
  return pvVar1;
}



size_t __thiscall FUN_00882e90(int param_1_00,void *param_1,uint param_2)

{
  size_t sVar1;
  uint _Size;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == (void *)0x0)) {
    FUN_00840480("..\\..\\src\\common\\stream.cpp",0x306,"wxInputStream::GetWBack",&DAT_00d2ce38,
                 L"Warning: Null pointer is about to be used");
  }
  _memset(param_1,0,param_2);
  sVar1 = *(size_t *)(param_1_00 + 0x10);
  if (sVar1 == 0) {
    return sVar1;
  }
  _Size = *(int *)(param_1_00 + 0x14) - *(int *)(param_1_00 + 0x18);
  if (param_2 < _Size) {
    _Size = param_2;
  }
  _memcpy(param_1,(void *)(*(int *)(param_1_00 + 0x18) + sVar1),_Size);
  *(int *)(param_1_00 + 0x18) = *(int *)(param_1_00 + 0x18) + _Size;
  if (*(int *)(param_1_00 + 0x18) == *(int *)(param_1_00 + 0x14)) {
    _free(*(void **)(param_1_00 + 0x10));
    *(undefined4 *)(param_1_00 + 0x10) = 0;
    *(undefined4 *)(param_1_00 + 0x14) = 0;
    *(undefined4 *)(param_1_00 + 0x18) = 0;
  }
  return _Size;
}



size_t __thiscall FUN_00882f30(int param_1_00,void *param_1,size_t param_2)

{
  void *_Dst;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == (void *)0x0)) {
    FUN_00840480("..\\..\\src\\common\\stream.cpp",0x32a,"wxInputStream::Ungetch",&DAT_00d2ce38,
                 L"Warning: Null pointer is about to be used in Ungetch()");
  }
  if ((*(int *)(param_1_00 + 0xc) != 0) && (*(int *)(param_1_00 + 0xc) != 1)) {
    return 0;
  }
  _Dst = (void *)FUN_00882e20(param_2);
  if (_Dst == (void *)0x0) {
    return 0;
  }
  if (*(int *)(param_1_00 + 0xc) == 1) {
    *(undefined4 *)(param_1_00 + 0xc) = 0;
  }
  _memcpy(_Dst,param_1,param_2);
  return param_2;
}



undefined4 __fastcall FUN_00882fb0(int *param_1)

{
  int iVar1;
  undefined4 uStack_4;
  
  uStack_4 = param_1;
  (**(code **)(*param_1 + 0x2c))((int)&uStack_4 + 3);
  iVar1 = (**(code **)(*param_1 + 0x30))();
  if (iVar1 != 0) {
    return 0;
  }
  return 0xffffffff;
}



int * __thiscall FUN_00882ff0(int *param_1_00,int param_1,int param_2)

{
  char cVar1;
  int iVar2;
  int iVar3;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_00840480("..\\..\\src\\common\\stream.cpp",0x34c,"wxInputStream::Read",&DAT_00d2ce38,
                 L"Warning: Null pointer is about to be read");
  }
  param_1_00[2] = 0;
  iVar2 = FUN_00882e90(param_1,param_2);
  param_1_00[2] = param_1_00[2] + iVar2;
  param_2 = param_2 - iVar2;
  iVar2 = iVar2 + param_1;
  while ((param_2 != 0 &&
         (((iVar2 == param_1 || (cVar1 = (**(code **)(*param_1_00 + 0x34))(), cVar1 != '\0')) &&
          (iVar3 = (**(code **)(*param_1_00 + 0x44))(iVar2,param_2), iVar3 != 0))))) {
    param_1_00[2] = param_1_00[2] + iVar3;
    param_2 = param_2 - iVar3;
    iVar2 = iVar2 + iVar3;
  }
  return param_1_00;
}



uint __fastcall FUN_00883080(int *param_1)

{
  uint uVar1;
  undefined local_5 [5];
  
  uVar1 = (**(code **)(*param_1 + 0x2c))(local_5);
  if (param_1[3] == 0) {
    uVar1 = FUN_00882f30(&stack0xfffffff4,1);
    return uVar1 & 0xffffff00;
  }
  return uVar1 & 0xffffff00;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __thiscall FUN_008830d0(int *param_1_00,int *param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined local_1004 [4096];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_1004;
  iVar4 = 0;
  piVar1 = (int *)(**(code **)(*param_1_00 + 0x2c))(local_1004,0x1000);
  iVar2 = (**(code **)(*piVar1 + 0x30))();
  while (iVar2 != 0) {
    piVar1 = (int *)(**(code **)(*param_1 + 0x28))(&stack0xffffeff4,iVar2);
    iVar3 = (**(code **)(*piVar1 + 0x34))();
    if (iVar3 != iVar2) break;
    iVar4 = iVar4 + iVar2;
    piVar1 = (int *)(**(code **)(*param_1_00 + 0x2c))(&stack0xffffeff4,0x1000);
    iVar2 = (**(code **)(*piVar1 + 0x30))();
  }
  param_1_00[2] = iVar4;
  ___security_check_cookie_4();
  return;
}



int __fastcall FUN_00883190(int *param_1)

{
  int iVar1;
  longlong lVar2;
  
  lVar2 = (**(code **)(*param_1 + 0x24))();
  iVar1 = (int)lVar2;
  if (lVar2 != -1) {
    iVar1 = iVar1 - (param_1[5] - param_1[6]);
  }
  return iVar1;
}



undefined ** FUN_008831b0(void)

{
  return &PTR_u_wxOutputStream_03236b50;
}



int * __thiscall FUN_008831c0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  
  iVar1 = (**(code **)(*param_1_00 + 0x40))(param_1,param_2);
  param_1_00[2] = iVar1;
  return param_1_00;
}



undefined4 __fastcall FUN_008831e0(undefined4 param_1)

{
  FUN_008830d0(param_1);
  return param_1;
}



void __fastcall FUN_00883200(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x00883205. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x24))();
  return;
}



void __thiscall
FUN_00883210(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  (**(code **)(*param_1_00 + 0x20))(param_1,param_2,param_3);
  return;
}



undefined ** FUN_00883230(void)

{
  return &PTR_u_wxCountingOutputStream_03236b68;
}



undefined4 __fastcall FUN_00883240(int param_1)

{
  return *(undefined4 *)(param_1 + 8);
}



void __thiscall FUN_00883250(int param_1_00,undefined4 param_1,int param_2)

{
  *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + param_2;
  if (*(uint *)(param_1_00 + 8) < *(uint *)(param_1_00 + 0x10)) {
    *(uint *)(param_1_00 + 8) = *(uint *)(param_1_00 + 0x10);
  }
  return;
}



undefined4 __fastcall FUN_00883270(int param_1)

{
  return *(undefined4 *)(param_1 + 0x10);
}



undefined ** FUN_00883280(void)

{
  return &PTR_u_wxFilterInputStream_03236b80;
}



undefined ** FUN_00883290(void)

{
  return &PTR_u_wxFilterOutputStream_03236b98;
}



undefined4 __fastcall FUN_008832a0(int param_1)

{
  undefined4 uVar1;
  
  if ((*(int *)(param_1 + 0x10) != 0) && (*(char *)(param_1 + 0x14) != '\0')) {
                    // WARNING: Could not recover jumptable at 0x008832b4. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (**(code **)(**(int **)(param_1 + 0x10) + 0x3c))();
    return uVar1;
  }
  return 1;
}



void __fastcall FUN_008832c0(int param_1)

{
  int *piVar1;
  
  if (*(int *)(param_1 + 8) != param_1) {
    piVar1 = &DAT_032bdba4;
    if (DAT_032bdba4 != param_1) {
      do {
        piVar1 = (int *)(*piVar1 + 8);
      } while (*piVar1 != param_1);
    }
    *piVar1 = *(int *)(param_1 + 8);
    *(int *)(param_1 + 8) = param_1;
  }
  return;
}



void __fastcall FUN_008832f0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x008832f8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0x24) + 0xc))();
  return;
}



int __fastcall FUN_00883300(int param_1)

{
  int iVar1;
  longlong lVar2;
  
  lVar2 = (**(code **)(**(int **)(param_1 + 0x24) + 0x18))();
  iVar1 = (int)lVar2;
  if (lVar2 != -1) {
    iVar1 = iVar1 - (*(int *)(param_1 + 0x14) - *(int *)(param_1 + 0x18));
  }
  return iVar1;
}



void __thiscall FUN_00883330(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  
  piVar1 = (int *)(**(code **)(**(int **)(param_1_00 + 0x1c) + 0x2c))(param_1,param_2);
  (**(code **)(*piVar1 + 0x30))();
  return;
}



void __thiscall
FUN_00883350(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  (**(code **)(**(int **)(param_1_00 + 0x1c) + 0x3c))(param_1,param_2,param_3);
  return;
}



void __fastcall FUN_00883370(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x00883378. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0x1c) + 0x40))();
  return;
}



void __fastcall FUN_00883380(int *param_1)

{
  (**(code **)(*param_1 + 0x38))();
                    // WARNING: Could not recover jumptable at 0x00883392. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x10))();
  return;
}



int __thiscall FUN_008833a0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 8) = 0;
  (**(code **)(**(int **)(param_1_00 + 0x18) + 8))(param_1,param_2);
  return param_1_00;
}



void __thiscall FUN_008833d0(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  (**(code **)(*param_1 + 0x38))();
  (**(code **)(*(int *)param_1[6] + 0x1c))(param_2,param_3,param_4);
  return;
}



void __fastcall FUN_00883400(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x00883408. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0x18) + 0x18))();
  return;
}



void __fastcall FUN_00883410(int param_1)

{
  FUN_00882d50();
                    // WARNING: Could not recover jumptable at 0x00883424. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0x10) + 0x38))();
  return;
}



void __thiscall FUN_00883430(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  
  piVar1 = (int *)(**(code **)(**(int **)(param_1_00 + 0x10) + 0x28))(param_1,param_2);
  (**(code **)(*piVar1 + 0x34))();
  return;
}



void __thiscall
FUN_00883450(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  (**(code **)(**(int **)(param_1_00 + 0x10) + 0x2c))(param_1,param_2,param_3);
  return;
}



void __fastcall FUN_00883470(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x00883478. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0x10) + 0x30))();
  return;
}



undefined4 * __thiscall FUN_00883480(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxStreamBuffer::vftable;
  if (*(char *)(param_1_00 + 6) != '\0') {
    _free((void *)param_1_00[1]);
    param_1_00[1] = 0;
  }
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_008834c0(int param_1)

{
  if (*(int *)(param_1 + 0x10) != 0) {
    *(undefined4 *)(*(int *)(param_1 + 0x10) + 0xc) = 0;
    *(undefined4 *)(*(int *)(param_1 + 0x10) + 8) = 0;
  }
  if ((*(int *)(param_1 + 0x14) == 0) && (*(char *)(param_1 + 0x1a) != '\0')) {
    *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_1 + 8);
    return;
  }
  *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(param_1 + 4);
  return;
}



undefined4 __fastcall FUN_008834f0(int param_1)

{
  int iVar1;
  
  if ((*(int *)(param_1 + 0x14) != 1) && (*(int **)(param_1 + 0x10) != (int *)0x0)) {
    iVar1 = (**(code **)(**(int **)(param_1 + 0x10) + 0x44))
                      (*(int *)(param_1 + 4),*(int *)(param_1 + 8) - *(int *)(param_1 + 4));
    if (iVar1 != 0) {
      *(int *)(param_1 + 8) = *(int *)(param_1 + 4) + iVar1;
      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 4);
      return 1;
    }
  }
  return 0;
}



void __thiscall FUN_00883530(int param_1_00,void *param_1,uint param_2)

{
  int iVar1;
  void *_Memory;
  void *pvVar2;
  uint uVar3;
  size_t _NewSize;
  uint _Size;
  
  iVar1 = *(int *)(param_1_00 + 0xc);
  uVar3 = *(uint *)(param_1_00 + 8) - iVar1;
  _Size = param_2;
  if (((uVar3 < param_2) && (_Size = uVar3, *(char *)(param_1_00 + 0x19) == '\0')) &&
     (_Size = param_2, *(uint *)(param_1_00 + 8) < iVar1 + param_2)) {
    _Memory = *(void **)(param_1_00 + 4);
    _NewSize = param_2 + (iVar1 - (int)_Memory);
    pvVar2 = _realloc(_Memory,_NewSize);
    *(void **)(param_1_00 + 4) = pvVar2;
    if (pvVar2 == (void *)0x0) {
      *(void **)(param_1_00 + 4) = _Memory;
      return;
    }
    *(int *)(param_1_00 + 0xc) = (int)pvVar2 + (iVar1 - (int)_Memory);
    *(size_t *)(param_1_00 + 8) = (int)pvVar2 + _NewSize;
  }
  _memcpy(*(void **)(param_1_00 + 0xc),param_1,_Size);
  *(int *)(param_1_00 + 0xc) = *(int *)(param_1_00 + 0xc) + _Size;
  return;
}



void __fastcall FUN_008835b0(int param_1)

{
  int iVar1;
  char cVar2;
  
  if ((*(int *)(param_1 + 0x14) == 0) || (*(int **)(param_1 + 0x10) == (int *)0x0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\stream.cpp",0x142,"wxStreamBuffer::PutChar","outStream",
                   L"should have a stream in wxStreamBuffer");
    }
    return;
  }
  if (*(int *)(param_1 + 4) == *(int *)(param_1 + 8)) {
    (**(code **)(**(int **)(param_1 + 0x10) + 0x40))(&stack0x00000004,1);
    return;
  }
  if ((*(int *)(param_1 + 0xc) == *(int *)(param_1 + 8)) && (*(char *)(param_1 + 0x1a) != '\0')) {
    FUN_008834f0();
  }
  if ((*(int *)(param_1 + 8) == *(int *)(param_1 + 0xc)) && (cVar2 = FUN_00882d50(), cVar2 == '\0'))
  {
    iVar1 = *(int *)(param_1 + 0x10);
    if (iVar1 == 0) {
      return;
    }
    if (*(int *)(iVar1 + 0xc) != 0) {
      return;
    }
    *(undefined4 *)(iVar1 + 0xc) = 2;
    return;
  }
  FUN_00883530(&stack0x00000004,1);
  *(undefined4 *)(*(int *)(param_1 + 0x10) + 8) = 1;
  return;
}



uint __fastcall FUN_00883670(int param_1)

{
  int iVar1;
  void *_Src;
  uint in_EAX;
  uint _Size;
  undefined4 uStack_4;
  
  uStack_4 = param_1;
  if ((*(int *)(param_1 + 0x10) == 0) ||
     (in_EAX = *(uint *)(param_1 + 8), *(uint *)(param_1 + 4) == in_EAX)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      in_EAX = FUN_00840480("..\\..\\src\\common\\stream.cpp",0x15c,"wxStreamBuffer::Peek",
                            "m_stream && HasBuffer()",
                            L"should have the stream and the buffer in wxStreamBuffer");
    }
  }
  else {
    if ((*(uint *)(param_1 + 0xc) == in_EAX) && (*(char *)(param_1 + 0x1a) != '\0')) {
      FUN_008834f0();
    }
    in_EAX = *(uint *)(param_1 + 8);
    if (in_EAX != *(uint *)(param_1 + 0xc)) {
      _Size = (uint)(in_EAX != *(uint *)(param_1 + 0xc));
      _Src = *(void **)(param_1 + 0xc);
      _memcpy((void *)((int)&uStack_4 + 3),_Src,_Size);
      iVar1 = (int)_Src + (_Size - 1);
      *(int *)(param_1 + 0xc) = iVar1;
      return CONCAT31((int3)((uint)iVar1 >> 8),uStack_4._3_1_);
    }
    iVar1 = *(int *)(param_1 + 0x10);
    if ((iVar1 != 0) && (*(int *)(iVar1 + 0xc) == in_EAX - *(uint *)(param_1 + 0xc))) {
      *(undefined4 *)(iVar1 + 0xc) = 3;
      return in_EAX & 0xffffff00;
    }
  }
  return in_EAX & 0xffffff00;
}



undefined __fastcall FUN_00883720(int param_1)

{
  void *_Src;
  int iVar1;
  uint _Size;
  undefined uVar2;
  undefined4 uStack_4;
  
  uStack_4 = param_1;
  if ((*(int *)(param_1 + 0x14) == 1) || (*(int **)(param_1 + 0x10) == (int *)0x0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\stream.cpp",0x16f,"wxStreamBuffer::GetChar","inStream",
                   L"should have a stream in wxStreamBuffer");
    }
    return 0;
  }
  if (*(int *)(param_1 + 4) == *(int *)(param_1 + 8)) {
    uVar2 = 0;
    (**(code **)(**(int **)(param_1 + 0x10) + 0x44))((int)&uStack_4 + 3);
    return uVar2;
  }
  if ((*(int *)(param_1 + 0xc) == *(int *)(param_1 + 8)) && (*(char *)(param_1 + 0x1a) != '\0')) {
    FUN_008834f0();
  }
  _Src = *(void **)(param_1 + 0xc);
  if (*(void **)(param_1 + 8) == _Src) {
    iVar1 = *(int *)(param_1 + 0x10);
    if ((iVar1 != 0) && (*(int *)(iVar1 + 0xc) == 0)) {
      *(undefined4 *)(iVar1 + 0xc) = 3;
    }
    return 0;
  }
  _Size = (uint)(*(void **)(param_1 + 8) != _Src);
  _memcpy((void *)((int)&uStack_4 + 3),_Src,_Size);
  *(uint *)(param_1 + 0xc) = (int)_Src + _Size;
  *(undefined4 *)(*(int *)(param_1 + 0x10) + 8) = 1;
  return uStack_4._3_1_;
}



int __thiscall FUN_00883800(int param_1_00,void *param_1,size_t param_2)

{
  void *_Src;
  int iVar1;
  int iVar2;
  uint _Size;
  uint uVar3;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == (void *)0x0)) {
    FUN_00840480("..\\..\\src\\common\\stream.cpp",0x189,"wxStreamBuffer::Read","buffer",
                 L"Warning: Null pointer is about to be used");
  }
  _memset(param_1,0,param_2);
  if (*(int *)(param_1_00 + 0x10) != 0) {
    *(undefined4 *)(*(int *)(param_1_00 + 0x10) + 0xc) = 0;
  }
  iVar1 = *(int *)(param_1_00 + 4);
  if (iVar1 == *(int *)(param_1_00 + 8)) {
    if ((*(int *)(param_1_00 + 0x14) == 1) || (*(int **)(param_1_00 + 0x10) == (int *)0x0)) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\stream.cpp",0x197,"wxStreamBuffer::Read","inStream",
                     L"should have a stream in wxStreamBuffer");
      }
      return 0;
    }
    iVar1 = (**(code **)(**(int **)(param_1_00 + 0x10) + 0x44))(param_1,param_2);
  }
  else {
    _Size = param_2;
    if (param_2 != 0) {
      while( true ) {
        if ((((*(int *)(param_1_00 + 0xc) == *(int *)(param_1_00 + 8)) &&
             (*(char *)(param_1_00 + 0x1a) != '\0')) && (*(int *)(param_1_00 + 0x14) != 1)) &&
           ((*(int **)(param_1_00 + 0x10) != (int *)0x0 &&
            (iVar1 = (**(code **)(**(int **)(param_1_00 + 0x10) + 0x44))
                               (iVar1,*(int *)(param_1_00 + 8) - iVar1), iVar1 != 0)))) {
          *(int *)(param_1_00 + 8) = *(int *)(param_1_00 + 4) + iVar1;
          *(int *)(param_1_00 + 0xc) = *(int *)(param_1_00 + 4);
        }
        _Src = *(void **)(param_1_00 + 0xc);
        uVar3 = *(int *)(param_1_00 + 8) - (int)_Src;
        if (_Size <= uVar3) break;
        _memcpy(param_1,_Src,uVar3);
        *(int *)(param_1_00 + 0xc) = *(int *)(param_1_00 + 0xc) + uVar3;
        _Size = _Size - uVar3;
        param_1 = (void *)((int)param_1 + uVar3);
        if (((*(int *)(param_1_00 + 0x14) == 1) || (*(int **)(param_1_00 + 0x10) == (int *)0x0)) ||
           (iVar2 = (**(code **)(**(int **)(param_1_00 + 0x10) + 0x44))
                              (*(int *)(param_1_00 + 4),
                               *(int *)(param_1_00 + 8) - *(int *)(param_1_00 + 4)), iVar2 == 0)) {
          iVar1 = *(int *)(param_1_00 + 0x10);
          if ((iVar1 != 0) && (*(int *)(iVar1 + 0xc) == 0)) {
            *(undefined4 *)(iVar1 + 0xc) = 1;
          }
          goto LAB_00883977;
        }
        iVar1 = *(int *)(param_1_00 + 4);
        *(int *)(param_1_00 + 8) = iVar1 + iVar2;
        *(int *)(param_1_00 + 0xc) = iVar1;
        if (_Size == 0) goto LAB_00883977;
      }
      uVar3 = *(int *)(param_1_00 + 8) - (int)_Src;
      if (uVar3 < _Size) {
        _Size = uVar3;
      }
      _memcpy(param_1,_Src,_Size);
      *(int *)(param_1_00 + 0xc) = *(int *)(param_1_00 + 0xc) + _Size;
      _Size = 0;
    }
LAB_00883977:
    iVar1 = param_2 - _Size;
  }
  if (*(int *)(param_1_00 + 0x10) != 0) {
    *(int *)(*(int *)(param_1_00 + 0x10) + 8) = iVar1;
  }
  return iVar1;
}



int __thiscall FUN_00883990(int param_1_00,int param_1,uint param_2)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_00840480("..\\..\\src\\common\\stream.cpp",0x1da,"wxStreamBuffer::Write","buffer",
                 L"Warning: Null pointer is about to be send");
  }
  if (*(int *)(param_1_00 + 0x10) != 0) {
    *(undefined4 *)(*(int *)(param_1_00 + 0x10) + 0xc) = 0;
  }
  if ((*(int *)(param_1_00 + 4) == *(int *)(param_1_00 + 8)) &&
     (*(char *)(param_1_00 + 0x19) != '\0')) {
    if ((*(int *)(param_1_00 + 0x14) == 0) || (*(int **)(param_1_00 + 0x10) == (int *)0x0)) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\stream.cpp",0x1e8,"wxStreamBuffer::Write","outStream",
                     L"should have a stream in wxStreamBuffer");
      }
      return 0;
    }
    iVar2 = (**(code **)(**(int **)(param_1_00 + 0x10) + 0x40))(param_1,param_2);
  }
  else {
    uVar3 = param_2;
    if (param_2 != 0) {
      do {
        uVar4 = *(int *)(param_1_00 + 8) - *(int *)(param_1_00 + 0xc);
        if ((uVar3 <= uVar4) || (*(char *)(param_1_00 + 0x19) == '\0')) {
          FUN_00883530(param_1,uVar3);
          uVar3 = 0;
          break;
        }
        FUN_00883530(param_1,uVar4);
        uVar3 = uVar3 - uVar4;
        param_1 = param_1 + uVar4;
        cVar1 = FUN_00882d50();
        if (cVar1 == '\0') {
          iVar2 = *(int *)(param_1_00 + 0x10);
          if ((iVar2 != 0) && (*(int *)(iVar2 + 0xc) == 0)) {
            *(undefined4 *)(iVar2 + 0xc) = 2;
          }
          break;
        }
        *(undefined4 *)(param_1_00 + 0xc) = *(undefined4 *)(param_1_00 + 4);
      } while (uVar3 != 0);
    }
    iVar2 = param_2 - uVar3;
  }
  if (*(int *)(param_1_00 + 0x10) != 0) {
    *(int *)(*(int *)(param_1_00 + 0x10) + 8) = iVar2;
  }
  return iVar2;
}



undefined8 __thiscall FUN_00883ab0(int param_1_00,uint param_1,int param_2,int param_3)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  bool bVar4;
  undefined8 uVar5;
  undefined4 uVar6;
  char *pcVar7;
  wchar_t *pwVar8;
  
  iVar1 = *(int *)(param_1_00 + 4);
  uVar3 = *(int *)(param_1_00 + 8) - iVar1;
  if (*(char *)(param_1_00 + 0x1a) == '\0') {
    if (param_3 != 0) {
      if (param_3 == 1) {
        uVar2 = *(int *)(param_1_00 + 0xc) - iVar1;
        bVar4 = CARRY4(uVar2,param_1);
        param_1 = uVar2 + param_1;
        param_2 = param_2 + (uint)bVar4;
      }
      else {
        if (param_3 != 2) {
          if (PTR_FUN_03235c4c == (undefined *)0x0) {
            return 0xffffffffffffffff;
          }
          pwVar8 = L"invalid seek mode";
          pcVar7 = "Assert failure";
          uVar6 = 0x25a;
          goto LAB_00883af6;
        }
        bVar4 = CARRY4(uVar3,param_1);
        param_1 = uVar3 + param_1;
        param_2 = param_2 + (uint)bVar4;
      }
    }
    if (param_2 < 0) {
      return 0xffffffffffffffff;
    }
    if (0 < param_2) {
      return 0xffffffffffffffff;
    }
    if ((-1 < param_2) && (uVar3 < param_1)) {
      return 0xffffffffffffffff;
    }
    if (param_2 != 0) {
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
        return 0xffffffffffffffff;
      }
      pwVar8 = L"huge file not supported";
      pcVar7 = "(wxFileOffset)int_diff == diff";
      uVar6 = 0x261;
LAB_00883af6:
      FUN_00840480("..\\..\\src\\common\\stream.cpp",uVar6,"wxStreamBuffer::Seek",pcVar7,pwVar8);
      return 0xffffffffffffffff;
    }
  }
  else {
    if (param_3 == 0) {
      uVar6 = 0;
LAB_00883c17:
      uVar5 = (**(code **)(**(int **)(param_1_00 + 0x10) + 0x20))(param_1,param_2,uVar6);
      FUN_008834c0();
      return uVar5;
    }
    if (param_3 != 1) {
      if (param_3 != 2) {
        return 0xffffffffffffffff;
      }
      uVar6 = 2;
      goto LAB_00883c17;
    }
    uVar2 = *(int *)(param_1_00 + 0xc) - iVar1;
    bVar4 = CARRY4(uVar2,param_1);
    param_1 = uVar2 + param_1;
    param_2 = param_2 + (uint)bVar4;
    if ((0 < param_2) || (((-1 < param_2 && (uVar3 < param_1)) || (param_2 < 0)))) {
      uVar5 = (**(code **)(**(int **)(param_1_00 + 0x10) + 0x20))
                        (param_1 - uVar3,param_2 - (uint)(param_1 < uVar3),1);
      FUN_008834c0();
      return uVar5;
    }
    if (param_2 != 0) {
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
        return 0xffffffffffffffff;
      }
      pwVar8 = L"huge file not supported";
      pcVar7 = "(wxFileOffset)int_diff == diff";
      uVar6 = 0x27c;
      goto LAB_00883af6;
    }
  }
  *(uint *)(param_1_00 + 0xc) = iVar1 + param_1;
  return CONCAT44(param_2,param_1);
}



longlong __fastcall FUN_00883c40(int param_1)

{
  uint uVar1;
  longlong lVar2;
  
  if (*(int *)(param_1 + 0x10) == 0) {
    lVar2 = 0;
  }
  else {
    lVar2 = (**(code **)(**(int **)(param_1 + 0x10) + 0x24))();
    if (lVar2 == -1) {
      return -1;
    }
  }
  lVar2 = lVar2 + (ulonglong)(uint)(*(int *)(param_1 + 0xc) - *(int *)(param_1 + 4));
  if ((*(int *)(param_1 + 0x14) == 0) && (*(char *)(param_1 + 0x1a) != '\0')) {
    uVar1 = *(int *)(param_1 + 8) - *(int *)(param_1 + 4);
    lVar2 = CONCAT44((int)((ulonglong)lVar2 >> 0x20) - (uint)((uint)lVar2 < uVar1),
                     (uint)lVar2 - uVar1);
  }
  return lVar2;
}



undefined4 __fastcall FUN_00883c90(int *param_1)

{
  longlong lVar1;
  
  lVar1 = (**(code **)(*param_1 + 0x18))();
  if (lVar1 != -1) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((int)((ulonglong)lVar1 >> 0x20) != 0)) {
      FUN_00840480("..\\..\\src\\common\\stream.cpp",0x2ba,"wxStreamBase::GetSize",
                   "len == length + size_t(0)",L"large files not supported");
    }
    return (int)lVar1;
  }
  return 0;
}



void __fastcall FUN_00883ce0(undefined4 *param_1)

{
  param_1[1] = 0;
  param_1[3] = 0;
  param_1[2] = 0;
  *param_1 = wxInputStream::vftable;
  param_1[4] = 0;
  param_1[6] = 0;
  param_1[5] = 0;
  return;
}



void __fastcall FUN_00883d00(undefined4 *param_1)

{
  *param_1 = wxInputStream::vftable;
  _free((void *)param_1[4]);
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



bool __fastcall FUN_00883d30(int param_1)

{
  return *(int *)(param_1 + 0xc) == 1;
}



void __fastcall FUN_00883d40(undefined4 *param_1)

{
  param_1[1] = 0;
  param_1[3] = 0;
  param_1[2] = 0;
  *param_1 = wxOutputStream::vftable;
  return;
}



void __fastcall FUN_00883d60(undefined4 *param_1)

{
  param_1[1] = 0;
  param_1[3] = 0;
  param_1[2] = 0;
  *param_1 = wxCountingOutputStream::vftable;
  param_1[4] = 0;
  return;
}



ulonglong __thiscall FUN_00883d80(int param_1_00,uint param_1,int param_2,int param_3)

{
  uint uVar1;
  bool bVar2;
  undefined4 uVar3;
  char *pcVar4;
  wchar_t *pwVar5;
  
  if (param_3 == 0) {
    if ((int)param_1 >> 0x1f == param_2) {
LAB_00883e4a:
      *(uint *)(param_1_00 + 0x10) = param_1;
      if (*(uint *)(param_1_00 + 8) < param_1) {
        *(uint *)(param_1_00 + 8) = param_1;
      }
      return (ulonglong)param_1;
    }
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0xffffffffffffffff;
    }
    pwVar5 = L"huge position not supported";
    pcVar4 = "(wxFileOffset)new_pos == pos";
    uVar3 = 0x438;
  }
  else if (param_3 == 1) {
    uVar1 = *(int *)(param_1_00 + 0x10) + param_1;
    bVar2 = CARRY4(*(uint *)(param_1_00 + 0x10),param_1);
    if ((uVar1 == *(uint *)(param_1_00 + 0x10) + param_1) &&
       (param_1 = uVar1, (int)uVar1 >> 0x1f == param_2 + (uint)bVar2)) goto LAB_00883e4a;
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0xffffffffffffffff;
    }
    pwVar5 = L"huge position not supported";
    pcVar4 = "(wxFileOffset)new_pos == (wxFileOffset)(m_currentPos + pos)";
    uVar3 = 0x442;
  }
  else if (param_3 == 2) {
    uVar1 = *(uint *)(param_1_00 + 8) + param_1;
    bVar2 = CARRY4(*(uint *)(param_1_00 + 8),param_1);
    param_1 = uVar1;
    if ((int)uVar1 >> 0x1f == param_2 + (uint)bVar2) goto LAB_00883e4a;
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0xffffffffffffffff;
    }
    pwVar5 = L"huge position not supported";
    pcVar4 = "(wxFileOffset)new_pos == (wxFileOffset)(m_lastcount + pos)";
    uVar3 = 0x43d;
  }
  else {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0xffffffffffffffff;
    }
    pwVar5 = L"invalid seek mode";
    pcVar4 = "Assert failure";
    uVar3 = 0x446;
  }
  FUN_00840480("..\\..\\src\\common\\stream.cpp",uVar3,"wxCountingOutputStream::OnSysSeek",pcVar4,
               pwVar5);
  return 0xffffffffffffffff;
}



void __thiscall FUN_00883ea0(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[1] = 0;
  param_1_00[3] = 0;
  param_1_00[2] = 0;
  param_1_00[4] = 0;
  param_1_00[6] = 0;
  param_1_00[5] = 0;
  *param_1_00 = wxFilterInputStream::vftable;
  param_1_00[7] = param_1;
  *(undefined *)(param_1_00 + 8) = 0;
  return;
}



void __thiscall FUN_00883ed0(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[1] = 0;
  param_1_00[3] = 0;
  param_1_00[2] = 0;
  param_1_00[4] = 0;
  param_1_00[6] = 0;
  param_1_00[5] = 0;
  *param_1_00 = wxFilterInputStream::vftable;
  param_1_00[7] = param_1;
  *(undefined *)(param_1_00 + 8) = 1;
  return;
}



void __fastcall FUN_00883f00(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bca038;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxFilterInputStream::vftable;
  local_4 = 0;
  if ((*(char *)(param_1 + 8) != '\0') && ((int *)param_1[7] != (int *)0x0)) {
    (**(code **)(*(int *)param_1[7] + 4))(1,uVar1);
  }
  local_4 = 0xffffffff;
  *param_1 = wxInputStream::vftable;
  _free((void *)param_1[4]);
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00883f90(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[1] = 0;
  param_1_00[3] = 0;
  param_1_00[2] = 0;
  *param_1_00 = wxFilterOutputStream::vftable;
  param_1_00[4] = param_1;
  *(undefined *)(param_1_00 + 5) = 0;
  return;
}



void __thiscall FUN_00883fb0(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[1] = 0;
  param_1_00[3] = 0;
  param_1_00[2] = 0;
  *param_1_00 = wxFilterOutputStream::vftable;
  param_1_00[4] = param_1;
  *(undefined *)(param_1_00 + 5) = 1;
  return;
}



void __fastcall FUN_00883fe0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxFilterOutputStream::vftable;
  local_4 = 0;
  if ((*(char *)(param_1 + 5) != '\0') && ((int *)param_1[4] != (int *)0x0)) {
    (**(code **)(*(int *)param_1[4] + 4))(1,uVar1);
  }
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00884060(undefined4 *param_1)

{
  uint uVar1;
  void *unaff_EDI;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcb8d8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxBufferedInputStream::vftable;
  iVar2 = *(int *)(param_1[9] + 8) - *(int *)(param_1[9] + 0xc);
  local_4 = 0;
  (**(code **)(*(int *)param_1[7] + 0x3c))(-iVar2,-(uint)(iVar2 != 0),1,uVar1);
  if ((undefined4 *)param_1[9] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[9])(1);
  }
  FUN_00883f00();
  ExceptionList = unaff_EDI;
  return;
}



void __fastcall FUN_008840f0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x008840f8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0x1c) + 0x1c))();
  return;
}



int __thiscall FUN_00884100(int param_1_00,int param_1,uint param_2)

{
  uint uVar1;
  int iVar2;
  
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  uVar1 = FUN_00882e90(param_1,param_2);
  *(uint *)(param_1_00 + 8) = uVar1;
  if (uVar1 < param_2) {
    iVar2 = (**(code **)(**(int **)(param_1_00 + 0x24) + 4))(param_1 + uVar1,param_2 - uVar1);
    *(uint *)(param_1_00 + 8) = iVar2 + uVar1;
  }
  return param_1_00;
}



void __fastcall FUN_00884150(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bce908;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxBufferedOutputStream::vftable;
  local_4 = 0;
  FUN_00882d50(uVar1);
  (**(code **)(*(int *)param_1[4] + 0x38))();
  if ((undefined4 *)param_1[6] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[6])(1);
  }
  local_4 = 0xffffffff;
  FUN_00883fe0();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_008841d0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x008841d8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0x10) + 0x1c))();
  return;
}



longlong __fastcall FUN_008841e0(int param_1)

{
  int iVar1;
  int iVar2;
  longlong lVar3;
  
  iVar1 = *(int *)(*(int *)(param_1 + 0x18) + 0xc);
  iVar2 = *(int *)(*(int *)(param_1 + 0x18) + 4);
  lVar3 = (**(code **)(**(int **)(param_1 + 0x10) + 0x18))();
  return lVar3 + (ulonglong)(uint)(iVar1 - iVar2);
}



void __thiscall FUN_00884200(int param_1_00,int param_1,int param_2,undefined param_3)

{
  if (*(char *)(param_1_00 + 0x18) != '\0') {
    _free(*(void **)(param_1_00 + 4));
    *(undefined4 *)(param_1_00 + 4) = 0;
  }
  *(int *)(param_1_00 + 4) = param_1;
  *(int *)(param_1_00 + 8) = param_1 + param_2;
  *(undefined *)(param_1_00 + 0x18) = param_3;
  if (*(int *)(param_1_00 + 0x10) != 0) {
    *(undefined4 *)(*(int *)(param_1_00 + 0x10) + 0xc) = 0;
    *(undefined4 *)(*(int *)(param_1_00 + 0x10) + 8) = 0;
  }
  if ((*(int *)(param_1_00 + 0x14) == 0) && (*(char *)(param_1_00 + 0x1a) != '\0')) {
    *(undefined4 *)(param_1_00 + 0xc) = *(undefined4 *)(param_1_00 + 8);
    return;
  }
  *(undefined4 *)(param_1_00 + 0xc) = *(undefined4 *)(param_1_00 + 4);
  return;
}



void __thiscall FUN_00884270(int param_1_00,size_t param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  
  if (param_1 != 0) {
    uVar2 = 1;
    pvVar1 = _malloc(param_1);
    FUN_00884200(pvVar1,param_1,uVar2);
    return;
  }
  if (*(char *)(param_1_00 + 0x18) != '\0') {
    _free(*(void **)(param_1_00 + 4));
    *(undefined4 *)(param_1_00 + 4) = 0;
  }
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  *(undefined4 *)(param_1_00 + 8) = 0;
  *(undefined4 *)(param_1_00 + 4) = 0;
  *(undefined *)(param_1_00 + 0x18) = 1;
  return;
}



undefined4 * __thiscall FUN_008842c0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxInputStream::vftable;
  _free((void *)param_1_00[4]);
  *param_1_00 = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00884330(undefined4 param_1_00,byte param_1)

{
  FUN_00883fe0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00884350(undefined4 param_1_00,byte param_1)

{
  FUN_00884060();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00884370(undefined4 param_1_00,byte param_1)

{
  FUN_00884150();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00884390(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  undefined4 *puVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcb908;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  param_1_00[3] = 0;
  param_1_00[2] = 0;
  param_1_00[4] = 0;
  param_1_00[6] = 0;
  param_1_00[5] = 0;
  param_1_00[7] = param_1;
  *(undefined *)(param_1_00 + 8) = 0;
  local_4 = 0;
  *param_1_00 = wxBufferedInputStream::vftable;
  if (param_2 == 0) {
    puVar1 = (undefined4 *)operator_new(0x1c);
    if (puVar1 == (undefined4 *)0x0) {
      puVar1 = (undefined4 *)0x0;
    }
    else {
      uVar4 = 1;
      uVar3 = 0x400;
      *puVar1 = wxStreamBuffer::vftable;
      puVar1[3] = 0;
      puVar1[2] = 0;
      puVar1[1] = 0;
      *(undefined *)(puVar1 + 6) = 1;
      *(undefined *)((int)puVar1 + 0x19) = 1;
      puVar1[4] = param_1_00;
      puVar1[5] = 0;
      *(undefined *)((int)puVar1 + 0x1a) = 1;
      pvVar2 = _malloc(0x400);
      FUN_00884200(pvVar2,uVar3,uVar4);
    }
    param_1_00[9] = puVar1;
  }
  else {
    param_1_00[9] = param_2;
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00884460(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  undefined4 *puVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcb938;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  param_1_00[3] = 0;
  param_1_00[2] = 0;
  param_1_00[4] = param_1;
  *(undefined *)(param_1_00 + 5) = 0;
  local_4 = 0;
  *param_1_00 = wxBufferedOutputStream::vftable;
  if (param_2 == 0) {
    puVar1 = (undefined4 *)operator_new(0x1c);
    if (puVar1 == (undefined4 *)0x0) {
      puVar1 = (undefined4 *)0x0;
    }
    else {
      uVar4 = 1;
      uVar3 = 0x400;
      *puVar1 = wxStreamBuffer::vftable;
      puVar1[3] = 0;
      puVar1[2] = 0;
      puVar1[1] = 0;
      *(undefined *)(puVar1 + 6) = 1;
      *(undefined *)((int)puVar1 + 0x19) = 1;
      puVar1[4] = param_1_00;
      puVar1[5] = 1;
      *(undefined *)((int)puVar1 + 0x1a) = 1;
      pvVar2 = _malloc(0x400);
      FUN_00884200(pvVar2,uVar3,uVar4);
    }
    param_1_00[6] = puVar1;
  }
  else {
    param_1_00[6] = param_2;
  }
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_00884530(int *param_1)

{
  short sVar1;
  char cVar2;
  short **ppsVar3;
  short *psVar4;
  short *psVar5;
  int unaff_retaddr;
  undefined auStack_34 [4];
  uint uStack_30;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bef238;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  ppsVar3 = (short **)(**(code **)(*param_1 + 0x10))(3,DAT_0323f878 ^ (uint)&stack0xffffffbc);
  psVar5 = *ppsVar3;
  while( true ) {
    if (psVar5 == (short *)0x0) {
      ExceptionList = pvStack_10;
      return -1;
    }
    if (psVar5 == (short *)0x0) {
      psVar5 = &DAT_00fae9c8;
    }
    uStack_30 = uStack_30 & 0xffff0000;
    uStack_1c = 7;
    uStack_20 = 0;
    psVar4 = psVar5;
    do {
      sVar1 = *psVar4;
      psVar4 = psVar4 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(psVar5,(int)psVar4 - (int)(psVar5 + 1) >> 1);
    pvStack_18 = (void *)0x0;
    puStack_8 = (undefined *)0x0;
    cVar2 = FUN_00852070(auStack_34,0);
    puStack_8 = (undefined *)0xffffffff;
    _free(pvStack_18);
    if (7 < uStack_1c) break;
    if (cVar2 != '\0') {
      psVar5 = *ppsVar3;
      if (psVar5 == (short *)0x0) {
        ExceptionList = pvStack_10;
        return *(int *)(unaff_retaddr + 0x14);
      }
      psVar4 = psVar5 + 1;
      do {
        sVar1 = *psVar5;
        psVar5 = psVar5 + 1;
      } while (sVar1 != 0);
      ExceptionList = pvStack_10;
      return *(int *)(unaff_retaddr + 0x14) - ((int)psVar5 - (int)psVar4 >> 1);
    }
    ppsVar3 = ppsVar3 + 1;
    psVar5 = *ppsVar3;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(uStack_30);
}



bool __thiscall FUN_00884650(int *param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  
  if (param_2 == 3) {
    iVar1 = FUN_00884530(param_1);
    return iVar1 != -1;
  }
  piVar2 = (int *)(**(code **)(*param_1_00 + 0x10))(param_2);
  iVar1 = *piVar2;
  while( true ) {
    if (iVar1 == 0) {
      return false;
    }
    iVar1 = FUN_008507a0(iVar1);
    if (iVar1 == 0) break;
    iVar1 = piVar2[1];
    piVar2 = piVar2 + 1;
  }
  return true;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __thiscall FUN_008846c0(int *param_1,char *param_2,char *param_3,int param_4)

{
  char cVar1;
  int *piVar2;
  char *pcVar3;
  undefined4 uVar4;
  bool bVar5;
  longlong lVar6;
  longlong lVar7;
  undefined auStack_10b0 [12];
  undefined4 uStack_10a4;
  char *pcStack_10a0;
  char *pcStack_109c;
  char *pcStack_1098;
  char *pcStack_1094;
  undefined *apuStack_1078 [26];
  char acStack_1010 [4096];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb976;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)apuStack_1078;
  ExceptionList = &local_c;
  if (param_1[3] == 1) {
    param_1[3] = 0;
  }
  lVar6 = (**(code **)(*param_1 + 0x40))();
  lVar7 = (**(code **)(*param_1 + 0x18))();
  if (param_4 == 0) {
    if ((char *)lVar6 == param_2) {
      bVar5 = (char *)((ulonglong)lVar6 >> 0x20) == param_3;
LAB_00884743:
      if (bVar5) goto LAB_0088497e;
    }
  }
  else {
    if (param_4 == 1) {
      bVar5 = ((uint)param_2 | (uint)param_3) == 0;
      goto LAB_00884743;
    }
    if (((param_4 == 2) && (lVar7 != -1)) && (lVar6 == lVar7 - CONCAT44(param_3,param_2)))
    goto LAB_0088497e;
  }
  cVar1 = (**(code **)(*param_1 + 0x1c))();
  if (((cVar1 == '\0') && (param_4 == 1)) &&
     ((-1 < (int)param_3 && ((0 < (int)param_3 || (param_2 != (char *)0x0)))))) {
    if ((-1 < (int)param_3) && ((0 < (int)param_3 || ((char *)0xfff < param_2)))) {
      do {
        pcStack_1094 = acStack_1010;
        pcStack_1098 = (char *)0x8847a5;
        piVar2 = (int *)(**(code **)(*param_1 + 0x2c))();
        pcStack_1098 = (char *)0x8847ae;
        pcVar3 = (char *)(**(code **)(*piVar2 + 0x30))();
        if (param_1[3] != 0) goto LAB_0088497e;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (pcVar3 != (char *)0x1000)) {
          pcStack_1094 = "bytes_read == (sizeof(buf)/sizeof(buf[0]))";
          pcStack_1098 = "wxInputStream::SeekI";
          pcStack_109c = (char *)0x3b3;
          pcStack_10a0 = "..\\..\\src\\common\\stream.cpp";
          uStack_10a4 = 0x8847e6;
          FUN_008402e0();
        }
        bVar5 = param_2 < pcVar3;
        param_2 = param_2 + -(int)pcVar3;
        param_3 = param_3 + -(uint)bVar5;
      } while ((0 < (int)param_3) || ((-1 < (int)param_3 && ((char *)0xfff < param_2))));
    }
    pcStack_1094 = acStack_1010;
    pcStack_1098 = (char *)0x88480e;
    piVar2 = (int *)(**(code **)(*param_1 + 0x2c))();
    pcStack_1098 = (char *)0x884817;
    pcVar3 = (char *)(**(code **)(*piVar2 + 0x30))();
    if (param_1[3] == 0) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (pcVar3 != param_2)) {
        pcStack_1094 = "bytes_read == (size_t)pos";
        pcStack_1098 = "wxInputStream::SeekI";
        pcStack_109c = (char *)0x3bb;
        pcStack_10a0 = "..\\..\\src\\common\\stream.cpp";
        uStack_10a4 = 0x884849;
        FUN_008402e0();
      }
      (**(code **)(*param_1 + 0x40))();
    }
  }
  else {
    if (param_1[4] != 0) {
      apuStack_1078[0] = auStack_10b0;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        pcStack_1094 = (char *)0x8848e8;
        FUN_0081c0f1();
        pcStack_1094 = "wxInputStream::SeekI";
        pcStack_1098 = (char *)0x3cd;
        pcStack_109c = "..\\..\\src\\common\\stream.cpp";
        pcStack_10a0 = (char *)0x6;
        uStack_4 = 0;
        uStack_10a4 = 0x884912;
        uVar4 = FUN_008423d0();
        uStack_4._0_1_ = 1;
        FUN_008854f0();
        pcStack_1098 = (char *)0x88492c;
        pcStack_1094 = (char *)uVar4;
        FUN_0083fe90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
      pcStack_1094 = (char *)0x88495d;
      _free((void *)param_1[4]);
      param_1[4] = 0;
      param_1[5] = 0;
      param_1[6] = 0;
    }
    pcStack_1094 = param_3;
    pcStack_1098 = param_2;
    pcStack_109c = (char *)0x88497e;
    (**(code **)(*param_1 + 0x20))();
  }
LAB_0088497e:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_008849b0(int param_1)

{
  char cVar1;
  void *pvStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4070;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0xc) == 1) {
    *(undefined4 *)(param_1 + 0xc) = 0;
  }
  if (*(int *)(param_1 + 0x10) != 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4 = 0;
      FUN_008423d0();
      local_4._0_1_ = 1;
      FUN_008854f0();
      FUN_0083fe90();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    _free(*(void **)(param_1 + 0x10));
    *(undefined4 *)(param_1 + 0x10) = 0;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined4 *)(param_1 + 0x18) = 0;
  }
  (**(code **)(**(int **)(param_1 + 0x24) + 0x1c))();
  ExceptionList = pvStack_18;
  return;
}



uint FUN_00884ad0(undefined param_1)

{
  int iVar1;
  undefined param_11;
  undefined *puVar2;
  undefined local_4 [4];
  
  puVar2 = local_4;
  param_11 = 0;
  if (DAT_032bd4d4 == (undefined4 *)0x0) {
    DAT_032bd4d4 = (undefined4 *)FUN_00861440();
  }
  iVar1 = (**(code **)*DAT_032bd4d4)(local_4,2,&param_1,2);
  if (iVar1 != 2) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\unichar.cpp",0x35,"wxUniChar::FromHi8bit","Assert failure",
                   "invalid multibyte character");
    }
    return 0x3f;
  }
  return (uint)puVar2 & 0xffff;
}



uint FUN_00884b40(ushort param_1)

{
  uint uVar1;
  undefined uStack_c;
  uint local_4;
  
  local_4 = (uint)param_1;
  if (DAT_032bd4d4 == (int *)0x0) {
    DAT_032bd4d4 = (int *)FUN_00861440();
  }
  uVar1 = (**(code **)(*DAT_032bd4d4 + 4))(&param_1,2);
  if (uVar1 != 2) {
    return uVar1 & 0xffffff00;
  }
  uStack_c = SUB41(&local_4,0);
  uRam00000002 = uStack_c;
  return 1;
}



undefined FUN_00884ba0(undefined4 param_1)

{
  char cVar1;
  undefined local_1;
  
  cVar1 = FUN_00884b40(param_1,&stack0xfffffffc + 3);
  if (cVar1 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\unichar.cpp",0x42,"wxUniChar::ToHi8bit","Assert failure",
                   "character cannot be converted to single byte");
    }
    return 0x3f;
  }
  return local_1;
}



void __thiscall FUN_00884bf0(int param_1_00,ushort **param_1)

{
  ushort uVar1;
  
  uVar1 = **param_1;
  while( true ) {
    if (uVar1 < 0x30) {
      return;
    }
    uVar1 = **param_1;
    if (0x39 < uVar1) break;
    *param_1 = *param_1 + 1;
    if (*(int *)(param_1_00 + 0xc) == 0) {
      **(ushort **)(param_1_00 + 8) = uVar1;
      *(int *)(param_1_00 + 8) = *(int *)(param_1_00 + 8) + 2;
    }
    else {
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + 1;
    }
    uVar1 = **param_1;
  }
  return;
}



void __thiscall FUN_00884c40(int **param_1_00,uint param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(char *)((int)*param_1_00 + 10) == '\0') {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/buffer.h",0x14c,
                   "wxCharTypeBuffer<wchar_t>::shrink","this->m_data->m_owned",
                   "cannot shrink non-owned buffer");
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      if (*(short *)(*param_1_00 + 2) != 1) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/buffer.h",0x14d,
                     "wxCharTypeBuffer<wchar_t>::shrink","this->m_data->m_ref == 1",
                     "can\'t shrink shared buffer");
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)(*param_1_00)[1] < param_1)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/buffer.h",0x14f,
                     "wxCharTypeBuffer<wchar_t>::shrink","len <= this->length()",0);
      }
    }
  }
  (*param_1_00)[1] = param_1;
  *(undefined2 *)(**param_1_00 + param_1 * 2) = 0;
  return;
}



undefined4 __thiscall FUN_00884d00(int *param_1_00,void *param_1)

{
  void *pvVar1;
  void **ppvVar2;
  void **ppvVar3;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(char *)(*param_1_00 + 10) == '\0') {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/buffer.h",0x135,
                   "wxCharTypeBuffer<wchar_t>::extend","this->m_data->m_owned",
                   "cannot extend non-owned buffer");
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(short *)(*param_1_00 + 8) != 1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/buffer.h",0x136,
                   "wxCharTypeBuffer<wchar_t>::extend","this->m_data->m_ref == 1",
                   "can\'t extend shared buffer");
    }
  }
  pvVar1 = _realloc(*(void **)*param_1_00,(int)param_1 * 2 + 2);
  if (pvVar1 == (void *)0x0) {
    return 0;
  }
  ppvVar2 = (void **)FUN_00850350();
  ppvVar3 = (void **)*param_1_00;
  if (ppvVar3 != ppvVar2) {
    *ppvVar3 = pvVar1;
    ppvVar3[1] = param_1;
    *(undefined *)(*param_1_00 + 10) = 1;
    return 1;
  }
  ppvVar3 = (void **)operator_new(0xc);
  if (ppvVar3 != (void **)0x0) {
    *ppvVar3 = pvVar1;
    ppvVar3[1] = param_1;
    *(undefined2 *)(ppvVar3 + 2) = 1;
    *(undefined *)((int)ppvVar3 + 10) = 1;
    *param_1_00 = (int)ppvVar3;
    return 1;
  }
  *param_1_00 = 0;
  return 1;
}



int __fastcall FUN_00884df0(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (7 < *(uint *)(iVar1 + 0x18)) {
    return *(int *)(iVar1 + 4) + param_1[1] * 2;
  }
  return iVar1 + 4 + param_1[1] * 2;
}



int __fastcall FUN_00884e10(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (7 < *(uint *)(iVar1 + 0x18)) {
    return *(int *)(iVar1 + 4);
  }
  return iVar1 + 4;
}



int __fastcall FUN_00884e20(int **param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *param_1;
  iVar2 = *piVar1;
  if (7 < *(uint *)(iVar2 + 0x18)) {
    return *(int *)(iVar2 + 4) + piVar1[1] * 2;
  }
  return iVar2 + 4 + piVar1[1] * 2;
}



void __fastcall FUN_00884e40(int param_1)

{
  short *psVar1;
  short sVar2;
  short *psVar3;
  int iVar4;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((*(int *)(param_1 + 0xc) == 0 || (**(int **)(param_1 + 4) != 0)))) {
    FUN_008402e0("..\\..\\src\\common\\strvararg.cpp",0x14e,
                 "wxFormatConverterBase<wchar_t>::CopyAllBefore","m_fmtOrig && m_fmt.data() == NULL"
                 ,"logic error");
  }
  psVar3 = *(short **)(param_1 + 0xc);
  if (psVar3 == (short *)0x0) {
    iVar4 = 0;
  }
  else {
    psVar1 = psVar3 + 1;
    do {
      sVar2 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar2 != 0);
    iVar4 = (int)psVar3 - (int)psVar1 >> 1;
  }
  FUN_00884d00((uint)(iVar4 * 3) >> 1);
  if (*(size_t *)(param_1 + 0x10) != 0) {
    _wcsncpy(**(wchar_t ***)(int **)(param_1 + 4),*(wchar_t **)(param_1 + 0xc),
             *(size_t *)(param_1 + 0x10));
  }
  *(int *)(param_1 + 8) = **(int **)(param_1 + 4) + *(int *)(param_1 + 0x10) * 2;
  *(undefined4 *)(param_1 + 0xc) = 0;
  return;
}



int __fastcall FUN_00884ee0(int param_1)

{
  int iVar1;
  int *piVar2;
  undefined4 uVar3;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb9b8;
  local_c = ExceptionList;
  if (**(int **)(param_1 + 8) != 0) {
    return **(int **)(param_1 + 8);
  }
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    if (7 < *(uint *)(iVar1 + 0x18)) {
      return *(int *)(iVar1 + 4);
    }
    return iVar1 + 4;
  }
  piVar2 = *(int **)(param_1 + 0x10);
  if (piVar2 == (int *)0x0) {
    ExceptionList = &local_c;
    local_10 = param_1;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (**(int **)(param_1 + 4) == 0)) {
      FUN_008402e0("..\\..\\src\\common\\strvararg.cpp",0x256,"wxFormatString::InputAsWChar",
                   "m_char",0,DAT_0323f878 ^ (uint)&stack0xffffffe8);
    }
    uVar3 = **(undefined4 **)(param_1 + 4);
    if (DAT_032bd4d4 == 0) {
      DAT_032bd4d4 = FUN_00861440();
    }
    uVar3 = FUN_00861fa0(&local_10,uVar3);
    local_4 = 0;
    FUN_008615b0(uVar3);
    local_4 = 0xffffffff;
    FUN_0083f900();
    ExceptionList = local_c;
    return **(int **)(param_1 + 8);
  }
  iVar1 = *piVar2;
  if (7 < *(uint *)(iVar1 + 0x18)) {
    return *(int *)(iVar1 + 4) + piVar2[1] * 2;
  }
  return iVar1 + 4 + piVar2[1] * 2;
}



undefined4 * __fastcall FUN_00885030(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6bb8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *param_1 = wxFormatConverterBase<wchar_t>::vftable;
  uVar2 = FUN_00850350(uVar1);
  param_1[1] = uVar2;
  local_4 = 0;
  uVar2 = FUN_00850350();
  param_1[1] = uVar2;
  param_1[3] = 0;
  param_1[2] = 0;
  param_1[4] = 0;
  ExceptionList = local_c;
  return param_1;
}



int * __thiscall FUN_008850a0(int *param_1_00,int *param_1,ushort *param_2)

{
  short *psVar1;
  ushort uVar2;
  undefined2 uVar3;
  code *pcVar4;
  int iVar5;
  ushort *puVar6;
  int local_8;
  uint local_4;
  
  local_4 = 0;
  param_1_00[3] = (int)param_2;
  uVar2 = *param_2;
  puVar6 = param_2;
  do {
    if (uVar2 == 0) {
      if (param_1_00[3] != 0) {
        FUN_0081c01c(param_1,param_1_00[3],0xffffffff);
        return param_1;
      }
      FUN_00884c40(param_1_00[2] - *(int *)param_1_00[1] >> 1);
      *param_1 = param_1_00[1];
      iVar5 = FUN_00850350();
      if (*param_1 != iVar5) {
        psVar1 = (short *)(*param_1 + 8);
        *psVar1 = *psVar1 + 1;
      }
      return param_1;
    }
    puVar6 = puVar6 + 1;
    iVar5 = 1;
    if (param_1_00[3] == 0) {
      *(ushort *)param_1_00[2] = uVar2;
      param_1_00[2] = param_1_00[2] + 2;
    }
    else {
      param_1_00[4] = param_1_00[4] + 1;
    }
    param_2 = puVar6;
    if (uVar2 == 0x25) {
      while ((((uVar2 = *puVar6, uVar2 == 0x2d || (uVar2 == 0x2b)) || (uVar2 == 0x30)) ||
             ((uVar2 == 0x20 || (uVar2 == 0x23))))) {
        puVar6 = puVar6 + 1;
        if (param_1_00[3] == 0) {
          *(ushort *)param_1_00[2] = uVar2;
          param_1_00[2] = param_1_00[2] + 2;
        }
        else {
          param_1_00[4] = param_1_00[4] + 1;
        }
      }
      param_2 = puVar6;
      if (*puVar6 == 0x2a) {
        puVar6 = puVar6 + 1;
        if (param_1_00[3] == 0) {
          *(undefined2 *)param_1_00[2] = 0x2a;
          param_1_00[2] = param_1_00[2] + 2;
        }
        else {
          param_1_00[4] = param_1_00[4] + 1;
        }
      }
      else {
        FUN_00884bf0(&param_2);
        puVar6 = param_2;
      }
      if (*puVar6 == 0x2e) {
        param_2 = puVar6 + 1;
        if (param_1_00[3] == 0) {
          *(undefined2 *)param_1_00[2] = 0x2e;
          param_1_00[2] = param_1_00[2] + 2;
        }
        else {
          param_1_00[4] = param_1_00[4] + 1;
        }
        if (*param_2 == 0x2a) {
          if (param_1_00[3] == 0) {
            *(undefined2 *)param_1_00[2] = 0x2a;
            param_1_00[2] = param_1_00[2] + 2;
            puVar6 = puVar6 + 2;
          }
          else {
            param_1_00[4] = param_1_00[4] + 1;
            puVar6 = puVar6 + 2;
          }
        }
        else {
          FUN_00884bf0(&param_2);
          puVar6 = param_2;
        }
      }
      if (*puVar6 == 0x68) {
        puVar6 = puVar6 + 1;
      }
      else if ((*puVar6 == 0x6c) && (puVar6[1] != 0x6c)) {
        iVar5 = 2;
        puVar6 = puVar6 + 1;
      }
      else {
        iVar5 = 0;
      }
      local_4 = (uint)*puVar6;
      local_8 = iVar5;
      switch(*puVar6) {
      case 0x43:
      case 99:
        pcVar4 = *(code **)(*param_1_00 + 8);
        break;
      default:
        goto switchD_0088520d_caseD_44;
      case 0x53:
      case 0x73:
        pcVar4 = *(code **)(*param_1_00 + 4);
      }
      (*pcVar4)(*puVar6,iVar5,&local_4,&local_8);
switchD_0088520d_caseD_44:
      if (((ushort)local_4 == *puVar6) && (local_8 == iVar5)) {
        if (iVar5 != 0) {
          if (param_1_00[3] == 0) {
            *(ushort *)param_1_00[2] = puVar6[-1];
            param_1_00[2] = param_1_00[2] + 2;
          }
          else {
            param_1_00[4] = param_1_00[4] + 1;
          }
        }
        if (param_1_00[3] == 0) {
          *(ushort *)param_1_00[2] = *puVar6;
          goto LAB_008852cc;
        }
        param_1_00[4] = param_1_00[4] + 1;
      }
      else {
        if (local_8 == 1) {
          if (param_1_00[3] != 0) {
            FUN_00884e40();
          }
          *(undefined2 *)param_1_00[2] = 0x68;
LAB_008852b1:
          param_1_00[2] = param_1_00[2] + 2;
        }
        else if (local_8 == 2) {
          if (param_1_00[3] != local_8 + -2) {
            FUN_00884e40();
          }
          *(undefined2 *)param_1_00[2] = 0x6c;
          goto LAB_008852b1;
        }
        uVar3 = (ushort)local_4;
        if (param_1_00[3] != 0) {
          FUN_00884e40();
        }
        *(undefined2 *)param_1_00[2] = uVar3;
LAB_008852cc:
        param_1_00[2] = param_1_00[2] + 2;
      }
      puVar6 = puVar6 + 1;
    }
    uVar2 = *puVar6;
  } while( true );
}



void __fastcall FUN_00885380(undefined4 *param_1)

{
  short *psVar1;
  void **ppvVar2;
  int iVar3;
  undefined4 uVar4;
  
  *param_1 = wxFormatConverterBase<wchar_t>::vftable;
  iVar3 = FUN_00850350();
  if (param_1[1] != iVar3) {
    psVar1 = (short *)(param_1[1] + 8);
    *psVar1 = *psVar1 + -1;
    ppvVar2 = (void **)param_1[1];
    if ((*(short *)(ppvVar2 + 2) == 0) && (ppvVar2 != (void **)0x0)) {
      if (*(char *)((int)ppvVar2 + 10) != '\0') {
        _free(*ppvVar2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar2);
    }
    uVar4 = FUN_00850350();
    param_1[1] = uVar4;
  }
  return;
}



undefined4 __thiscall FUN_008853e0(undefined4 param_1_00,byte param_1)

{
  FUN_00885380();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00885400(undefined4 param_1,undefined4 param_2,undefined2 *param_3,undefined4 *param_4)

{
  *param_3 = 0x73;
  *param_4 = 0;
  return;
}



void FUN_00885420(undefined4 param_1,undefined4 param_2,undefined2 *param_3,undefined4 *param_4)

{
  *param_3 = 99;
  *param_4 = 0;
  return;
}



void __fastcall FUN_00885440(undefined4 *param_1)

{
  short *psVar1;
  void **ppvVar2;
  int iVar3;
  undefined4 uVar4;
  
  *param_1 = wxFormatConverterBase<wchar_t>::vftable;
  iVar3 = FUN_00850350();
  if (param_1[1] != iVar3) {
    psVar1 = (short *)(param_1[1] + 8);
    *psVar1 = *psVar1 + -1;
    ppvVar2 = (void **)param_1[1];
    if ((*(short *)(ppvVar2 + 2) == 0) && (ppvVar2 != (void **)0x0)) {
      if (*(char *)((int)ppvVar2 + 10) != '\0') {
        _free(*ppvVar2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar2);
    }
    uVar4 = FUN_00850350();
    param_1[1] = uVar4;
  }
  return;
}



int __thiscall FUN_00885450(int param_1_00,int *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6cd3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 1;
  FUN_0084b140(*(undefined4 *)*param_1,((undefined4 *)*param_1)[1]);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_008854c0(int *param_1_00,undefined4 param_1)

{
  undefined *puVar1;
  
  puVar1 = (undefined *)*param_1_00;
  if ((undefined *)*param_1_00 == (undefined *)0x0) {
    puVar1 = PTR_DAT_03236318;
  }
  FUN_004325b6(puVar1);
  return param_1;
}



int __fastcall FUN_008854f0(int **param_1)

{
  undefined4 uVar1;
  int **ppiVar2;
  int *piVar3;
  undefined local_24 [4];
  undefined **local_20;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb9f0;
  local_c = ExceptionList;
  if (**param_1 == 0) {
    ExceptionList = &local_c;
    FUN_00885030(DAT_0323f878 ^ (uint)&stack0xffffffd4);
    local_20 = wxPrintfFormatConverterWchar::vftable;
    local_4 = 0;
    uVar1 = FUN_00884ee0();
    ppiVar2 = (int **)FUN_008850a0(local_24,uVar1);
    local_4._0_1_ = 1;
    if (ppiVar2 != param_1) {
      FUN_0043c1dd();
      *param_1 = *ppiVar2;
      piVar3 = (int *)FUN_00850350();
      if (*param_1 != piVar3) {
        piVar3 = *param_1 + 2;
        *(short *)piVar3 = *(short *)piVar3 + 1;
      }
    }
    local_4 = (uint)local_4._1_3_ << 8;
    thunk_FUN_0043c1dd();
    local_4 = 0xffffffff;
    FUN_00885380();
    ExceptionList = local_c;
    return **param_1;
  }
  return **param_1;
}



undefined4 FUN_008855d0(undefined4 param_1,void **param_2,undefined4 param_3)

{
  undefined4 uVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  void **ppvVar5;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcba31;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar3 = (undefined4 *)FUN_00847c00(param_3,param_2,1);
  uVar1 = *(undefined4 *)*puVar3;
  local_4 = 1;
  uVar4 = FUN_008854f0(uVar2);
  FUN_00853850(param_1,uVar4,uVar1);
  local_4 = local_4 & 0xffffff00;
  ppvVar5 = (void **)FUN_00850350();
  if (param_2 != ppvVar5) {
    *(short *)(param_2 + 2) = *(short *)(param_2 + 2) + -1;
    if (*(short *)(param_2 + 2) == 0) {
      if (*(char *)((int)param_2 + 10) != '\0') {
        _free(*param_2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_2);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_008856a0(undefined4 param_1,void **param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  void **ppvVar5;
  undefined4 local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcba71;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  puVar3 = (undefined4 *)FUN_00847c00(param_3,param_2,1);
  local_4 = 1;
  FUN_00820e3f(param_4,param_2,2);
  uVar1 = *(undefined4 *)*puVar3;
  uVar4 = FUN_008854f0(uVar2);
  FUN_00853850(param_1,uVar4,uVar1,local_14);
  local_4 = local_4 & 0xffffff00;
  ppvVar5 = (void **)FUN_00850350();
  if (param_2 != ppvVar5) {
    *(short *)(param_2 + 2) = *(short *)(param_2 + 2) + -1;
    if (*(short *)(param_2 + 2) == 0) {
      if (*(char *)((int)param_2 + 10) != '\0') {
        _free(*param_2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_2);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00885780(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  
  FUN_00820e3f(param_4,param_2,2);
  FUN_0083e8f0(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,0,param_2);
  return param_1;
}



uint __thiscall FUN_008857e0(int *param_1_00,int param_1)

{
  undefined uVar1;
  char cVar2;
  char cVar3;
  undefined *puVar4;
  bool bVar5;
  bool bVar6;
  bool bVar7;
  void *pvVar8;
  uint uVar9;
  uint uVar10;
  char *pcVar11;
  int iVar12;
  int iVar13;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  pvVar8 = ExceptionList;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbaa0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar7 = false;
  uVar10 = 1;
  iVar13 = 0;
  bVar6 = false;
  bVar5 = false;
  *(undefined *)(param_1_00 + 4) = 0;
  param_1_00[6] = param_1;
  param_1_00[5] = param_1;
  do {
    param_1_00[6] = param_1_00[6] + 1;
    puVar4 = (undefined *)param_1_00[6];
    uVar1 = *puVar4;
    switch(uVar1) {
    default:
      goto switchD_0088584c_caseD_0;
    case 0x20:
    case 0x23:
    case 0x27:
    case 0x2b:
    case 0x30:
      if ((bVar5) && (!bVar6)) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
        uVar10 = uVar10 + 1;
        bVar6 = true;
      }
LAB_0088586c:
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = uVar1;
      uVar10 = uVar10 + 1;
      break;
    case 0x24:
      uVar9 = uVar10;
      if (0 < param_1_00[2]) {
        do {
          uVar10 = uVar9;
          cVar2 = *(char *)((int)param_1_00 + uVar10 + 0x1b);
          if (cVar2 < '1') break;
          uVar9 = uVar10 - 1;
        } while (cVar2 < ':');
        *param_1_00 = param_1_00[2];
        param_1_00[2] = 0;
      }
      break;
    case 0x2a:
      if (bVar5) {
        if (!bVar6) {
          *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
          uVar10 = uVar10 + 1;
          bVar6 = true;
        }
        param_1_00[3] = -1;
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = uVar1;
        uVar10 = uVar10 + 1;
      }
      else {
        param_1_00[2] = -1;
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = uVar1;
        uVar10 = uVar10 + 1;
      }
      break;
    case 0x2d:
      if ((bVar5) && (!bVar6)) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
        uVar10 = uVar10 + 1;
        bVar6 = true;
      }
      *(undefined *)(param_1_00 + 4) = 1;
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = uVar1;
      uVar10 = uVar10 + 1;
      break;
    case 0x2e:
      if ((bVar5) && (!bVar6)) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
        uVar10 = uVar10 + 1;
      }
      bVar5 = true;
      bVar6 = false;
      param_1_00[3] = 0;
      break;
    case 0x31:
    case 0x32:
    case 0x33:
    case 0x34:
    case 0x35:
    case 0x36:
    case 0x37:
    case 0x38:
    case 0x39:
      iVar12 = 0;
      if ((bVar5) && (!bVar6)) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
        uVar10 = uVar10 + 1;
        bVar6 = true;
      }
      cVar2 = *(char *)param_1_00[6];
      while (('/' < cVar2 && (*(char *)param_1_00[6] < ':'))) {
        *(char *)(uVar10 + 0x1c + (int)param_1_00) = *(char *)param_1_00[6];
        cVar3 = *(char *)param_1_00[6];
        pcVar11 = (char *)param_1_00[6] + 1;
        uVar10 = uVar10 + 1;
        param_1_00[6] = (int)pcVar11;
        cVar2 = *pcVar11;
        iVar12 = cVar3 + -0x30 + iVar12 * 10;
      }
      if (bVar5) {
        param_1_00[6] = param_1_00[6] + -1;
        param_1_00[3] = iVar12;
      }
      else {
        param_1_00[6] = param_1_00[6] + -1;
        param_1_00[2] = iVar12;
      }
      break;
    case 0x45:
    case 0x47:
    case 0x65:
    case 0x66:
    case 0x67:
      if ((bVar5) && (!bVar6)) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
        uVar10 = uVar10 + 1;
        bVar6 = true;
      }
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = uVar1;
      uVar10 = uVar10 + 1;
      param_1_00[1] = (iVar13 == 2) + 4;
      goto LAB_00885b7f;
    case 0x49:
      if ((puVar4[1] != '6') || (puVar4[2] != '4')) goto switchD_0088584c_caseD_5a;
      param_1_00[6] = (int)(puVar4 + 2);
      iVar13 = 2;
      if ((bVar5) && (!bVar6)) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
        uVar10 = uVar10 + 1;
        bVar6 = true;
      }
      *(undefined *)((int)param_1_00 + uVar10 + 0x1c) = uVar1;
      *(undefined *)((int)param_1_00 + uVar10 + 0x1d) = 0x36;
      *(undefined *)((int)param_1_00 + uVar10 + 0x1e) = 0x34;
      uVar10 = uVar10 + 3;
      break;
    case 0x4c:
    case 0x71:
      iVar13 = 2;
      if ((!bVar5) || (bVar6)) goto LAB_0088586c;
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
      *(undefined *)(uVar10 + 0x1d + (int)param_1_00) = uVar1;
      bVar6 = true;
      uVar10 = uVar10 + 2;
      break;
    case 0x58:
    case 100:
    case 0x69:
    case 0x6f:
    case 0x75:
    case 0x78:
      if ((bVar5) && (!bVar6)) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
        uVar10 = uVar10 + 1;
        bVar6 = true;
      }
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = uVar1;
      uVar10 = uVar10 + 1;
      if (iVar13 == 0) {
        param_1_00[1] = 0;
      }
      else if (iVar13 == -1) {
        param_1_00[1] = 0;
      }
      else if (iVar13 == 1) {
        param_1_00[1] = 1;
      }
      else if (iVar13 == 2) {
        param_1_00[1] = 2;
      }
      else if (iVar13 == 3) {
        param_1_00[1] = 3;
      }
      goto LAB_00885b7f;
    case 0x5a:
    case 0x7a:
switchD_0088584c_caseD_5a:
      iVar13 = 3;
      if ((!bVar5) || (bVar6)) goto LAB_0088586c;
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
      *(undefined *)(uVar10 + 0x1d + (int)param_1_00) = uVar1;
      bVar6 = true;
      uVar10 = uVar10 + 2;
      break;
    case 99:
      if (iVar13 == -1) {
        param_1_00[1] = 7;
      }
      else {
        param_1_00[1] = 8;
      }
      goto LAB_00885b7f;
    case 0x68:
      iVar13 = -1;
      if ((!bVar5) || (bVar6)) goto LAB_0088586c;
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
      *(undefined *)(uVar10 + 0x1d + (int)param_1_00) = uVar1;
      bVar6 = true;
      uVar10 = uVar10 + 2;
      break;
    case 0x6c:
      iVar13 = (*(char *)(uVar10 + 0x1b + (int)param_1_00) == 'l') + 1;
      if ((!bVar5) || (bVar6)) goto LAB_0088586c;
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
      *(undefined *)(uVar10 + 0x1d + (int)param_1_00) = uVar1;
      bVar6 = true;
      uVar10 = uVar10 + 2;
      break;
    case 0x6e:
      if (iVar13 == 0) {
        param_1_00[1] = 0xb;
      }
      else if (iVar13 == -1) {
        param_1_00[1] = 0xc;
      }
      else if (0 < iVar13) {
        param_1_00[1] = 0xd;
      }
      goto LAB_00885b7f;
    case 0x70:
      param_1_00[1] = 6;
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = uVar1;
      uVar10 = uVar10 + 1;
      goto LAB_00885b7f;
    case 0x73:
      if (iVar13 == -1) {
        param_1_00[1] = 9;
      }
      else {
        param_1_00[1] = 10;
      }
LAB_00885b7f:
      bVar7 = true;
    }
    if (uVar10 == 0x20) {
      FUN_0043c211(&DAT_00d25fa0);
      uVar10 = FUN_00846b30(6);
      if ((char)uVar10 != '\0') {
        FUN_0081c0f1();
        local_4 = 0;
        FUN_008423d0();
        local_4._0_1_ = 1;
        FUN_008854f0();
        FUN_0083fe90();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_00842440();
        local_4 = 0xffffffff;
        uVar10 = FUN_0081b5bc();
      }
switchD_0088584c_caseD_0:
      ExceptionList = local_c;
      return uVar10 & 0xffffff00;
    }
    if (bVar7) {
      ExceptionList = pvVar8;
      return CONCAT31((int3)(uVar10 >> 8),1);
    }
  } while( true );
}



uint __thiscall FUN_00885d20(int *param_1_00,int param_1)

{
  char cVar1;
  ushort uVar2;
  ushort uVar3;
  undefined2 *puVar4;
  bool bVar5;
  bool bVar6;
  bool bVar7;
  void *pvVar8;
  uint uVar9;
  uint uVar10;
  ushort *puVar11;
  undefined uVar12;
  int iVar13;
  int iVar14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  pvVar8 = ExceptionList;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbaa0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar7 = false;
  uVar10 = 1;
  iVar13 = 0;
  bVar6 = false;
  bVar5 = false;
  *(undefined *)(param_1_00 + 4) = 0;
  param_1_00[6] = param_1;
  param_1_00[5] = param_1;
  do {
    param_1_00[6] = param_1_00[6] + 2;
    puVar4 = (undefined2 *)param_1_00[6];
    uVar12 = (undefined)*puVar4;
    switch(*puVar4) {
    default:
      goto switchD_00885d92_caseD_0;
    case 0x20:
    case 0x23:
    case 0x27:
    case 0x2b:
    case 0x30:
      iVar14 = iVar13;
      if ((bVar5) && (!bVar6)) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
        uVar10 = uVar10 + 1;
        bVar6 = true;
      }
LAB_00885db2:
      iVar13 = iVar14;
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = uVar12;
      uVar10 = uVar10 + 1;
      break;
    case 0x24:
      uVar9 = uVar10;
      if (0 < param_1_00[2]) {
        do {
          uVar10 = uVar9;
          cVar1 = *(char *)((int)param_1_00 + uVar10 + 0x1b);
          if (cVar1 < '1') break;
          uVar9 = uVar10 - 1;
        } while (cVar1 < ':');
        *param_1_00 = param_1_00[2];
        param_1_00[2] = 0;
      }
      break;
    case 0x2a:
      if (bVar5) {
        if (!bVar6) {
          *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
          uVar10 = uVar10 + 1;
          bVar6 = true;
        }
        param_1_00[3] = -1;
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = uVar12;
        uVar10 = uVar10 + 1;
      }
      else {
        param_1_00[2] = -1;
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = uVar12;
        uVar10 = uVar10 + 1;
      }
      break;
    case 0x2d:
      if ((bVar5) && (!bVar6)) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
        uVar10 = uVar10 + 1;
        bVar6 = true;
      }
      *(undefined *)(param_1_00 + 4) = 1;
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = uVar12;
      uVar10 = uVar10 + 1;
      break;
    case 0x2e:
      if ((bVar5) && (!bVar6)) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
        uVar10 = uVar10 + 1;
      }
      bVar5 = true;
      bVar6 = false;
      param_1_00[3] = 0;
      break;
    case 0x31:
    case 0x32:
    case 0x33:
    case 0x34:
    case 0x35:
    case 0x36:
    case 0x37:
    case 0x38:
    case 0x39:
      iVar14 = 0;
      if ((bVar5) && (!bVar6)) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
        uVar10 = uVar10 + 1;
        bVar6 = true;
      }
      uVar2 = *(ushort *)param_1_00[6];
      while ((0x2f < uVar2 && (*(ushort *)param_1_00[6] < 0x3a))) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = *(undefined *)(ushort *)param_1_00[6];
        uVar3 = *(ushort *)param_1_00[6];
        puVar11 = (ushort *)param_1_00[6] + 1;
        uVar10 = uVar10 + 1;
        param_1_00[6] = (int)puVar11;
        uVar2 = *puVar11;
        iVar14 = (uVar3 - 0x30) + iVar14 * 10;
      }
      if (bVar5) {
        param_1_00[6] = param_1_00[6] + -2;
        param_1_00[3] = iVar14;
      }
      else {
        param_1_00[6] = param_1_00[6] + -2;
        param_1_00[2] = iVar14;
      }
      break;
    case 0x45:
    case 0x47:
    case 0x65:
    case 0x66:
    case 0x67:
      if ((bVar5) && (!bVar6)) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
        uVar10 = uVar10 + 1;
        bVar6 = true;
      }
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = uVar12;
      uVar10 = uVar10 + 1;
      param_1_00[1] = (iVar13 == 2) + 4;
      goto LAB_008860d6;
    case 0x49:
      if ((puVar4[1] != 0x36) || (puVar4[2] != 0x34)) goto switchD_00885d92_caseD_5a;
      param_1_00[6] = (int)(puVar4 + 2);
      iVar13 = 2;
      if ((bVar5) && (!bVar6)) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
        uVar10 = uVar10 + 1;
        bVar6 = true;
      }
      *(undefined *)((int)param_1_00 + uVar10 + 0x1c) = uVar12;
      *(undefined *)((int)param_1_00 + uVar10 + 0x1d) = 0x36;
      *(undefined *)((int)param_1_00 + uVar10 + 0x1e) = 0x34;
      uVar10 = uVar10 + 3;
      break;
    case 0x4c:
    case 0x71:
      iVar13 = 2;
      iVar14 = 2;
      if ((!bVar5) || (iVar14 = iVar13, bVar6)) goto LAB_00885db2;
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
      *(undefined *)(uVar10 + 0x1d + (int)param_1_00) = uVar12;
      bVar6 = true;
      uVar10 = uVar10 + 2;
      break;
    case 0x58:
    case 100:
    case 0x69:
    case 0x6f:
    case 0x75:
    case 0x78:
      if ((bVar5) && (!bVar6)) {
        *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
        uVar10 = uVar10 + 1;
        bVar6 = true;
      }
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = uVar12;
      uVar10 = uVar10 + 1;
      if (iVar13 == 0) {
        param_1_00[1] = 0;
      }
      else if (iVar13 == -1) {
        param_1_00[1] = 0;
      }
      else if (iVar13 == 1) {
        param_1_00[1] = 1;
      }
      else if (iVar13 == 2) {
        param_1_00[1] = 2;
      }
      else if (iVar13 == 3) {
        param_1_00[1] = 3;
      }
      goto LAB_008860d6;
    case 0x5a:
    case 0x7a:
switchD_00885d92_caseD_5a:
      iVar13 = 3;
      iVar14 = iVar13;
      if ((!bVar5) || (bVar6)) goto LAB_00885db2;
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
      *(undefined *)(uVar10 + 0x1d + (int)param_1_00) = uVar12;
      bVar6 = true;
      uVar10 = uVar10 + 2;
      break;
    case 99:
      if (iVar13 == -1) {
        param_1_00[1] = 7;
      }
      else {
        param_1_00[1] = 8;
      }
      goto LAB_008860d6;
    case 0x68:
      iVar13 = -1;
      iVar14 = iVar13;
      if ((!bVar5) || (bVar6)) goto LAB_00885db2;
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
      *(undefined *)(uVar10 + 0x1d + (int)param_1_00) = uVar12;
      bVar6 = true;
      uVar10 = uVar10 + 2;
      break;
    case 0x6c:
      iVar13 = (*(char *)(uVar10 + 0x1b + (int)param_1_00) == 'l') + 1;
      iVar14 = iVar13;
      if ((!bVar5) || (bVar6)) goto LAB_00885db2;
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = 0x2e;
      *(undefined *)(uVar10 + 0x1d + (int)param_1_00) = uVar12;
      bVar6 = true;
      uVar10 = uVar10 + 2;
      break;
    case 0x6e:
      if (iVar13 == 0) {
        param_1_00[1] = 0xb;
      }
      else if (iVar13 == -1) {
        param_1_00[1] = 0xc;
      }
      else if (0 < iVar13) {
        param_1_00[1] = 0xd;
      }
      goto LAB_008860d6;
    case 0x70:
      param_1_00[1] = 6;
      *(undefined *)(uVar10 + 0x1c + (int)param_1_00) = uVar12;
      uVar10 = uVar10 + 1;
      goto LAB_008860d6;
    case 0x73:
      if (iVar13 == -1) {
        param_1_00[1] = 9;
      }
      else {
        param_1_00[1] = 10;
      }
LAB_008860d6:
      bVar7 = true;
    }
    if (uVar10 == 0x20) {
      FUN_0043c211(&DAT_00d25fa0);
      uVar10 = FUN_00846b30(6);
      if ((char)uVar10 != '\0') {
        FUN_0081c0f1();
        local_4 = 0;
        FUN_008423d0();
        local_4._0_1_ = 1;
        FUN_008854f0();
        FUN_0083fe90();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_00842440();
        local_4 = 0xffffffff;
        uVar10 = FUN_0081b5bc();
      }
switchD_00885d92_caseD_0:
      ExceptionList = local_c;
      return uVar10 & 0xffffff00;
    }
    if (bVar7) {
      ExceptionList = pvVar8;
      return CONCAT31((int3)(uVar10 >> 8),1);
    }
  } while( true );
}



int * __thiscall FUN_00886270(int *param_1_00,char *param_1)

{
  char cVar1;
  uint uVar2;
  char *pcVar3;
  undefined4 uVar4;
  int iVar5;
  int *piVar6;
  int *piVar7;
  char *pcVar8;
  int *piVar9;
  uint local_88;
  uint local_80;
  undefined local_7c [20];
  undefined local_68 [20];
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbae0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  *param_1_00 = 0;
  *(undefined *)((int)param_1_00 + 0x1005) = 0;
  *(undefined *)(param_1_00 + 0x401) = 0;
  _memset(param_1_00 + 0x3c1,0,0x100);
  cVar1 = *param_1;
  pcVar8 = param_1;
  while (cVar1 != '\0') {
    if (*pcVar8 == '%') {
      if (pcVar8[1] == '%') {
        pcVar8 = pcVar8 + 1;
      }
      else {
        piVar6 = param_1_00 + *param_1_00 * 0xf + 1;
        piVar6[2] = 0;
        *piVar6 = 0;
        piVar6[6] = 0;
        piVar6[5] = 0;
        piVar7 = piVar6 + 7;
        piVar6[3] = 0xffff;
        *(undefined *)(piVar6 + 4) = 0;
        piVar6[1] = -1;
        *piVar7 = 0;
        piVar6[8] = 0;
        piVar6[9] = 0;
        piVar6[10] = 0;
        piVar6[0xb] = 0;
        piVar6[0xc] = 0;
        piVar6[0xd] = 0;
        piVar6[0xe] = 0;
        *(undefined *)piVar7 = 0x25;
        cVar1 = FUN_008857e0(pcVar8);
        if (cVar1 != '\0') {
          pcVar8 = (char *)piVar6[6];
          pcVar3 = _strchr((char *)piVar7,0x2a);
          if (pcVar3 != (char *)0x0) {
            local_88 = 1;
            pcVar3 = _strchr(pcVar3 + 1,0x2a);
            if (pcVar3 != (char *)0x0) {
              local_88 = 2;
            }
            local_80 = 0;
            if (local_88 != 0) {
              do {
                iVar5 = *param_1_00;
                *param_1_00 = iVar5 + 1;
                if (iVar5 == 0x40) break;
                if ((*(char *)(param_1_00 + 0x401) != '\0') &&
                   (PTR_FUN_03235c4c != (undefined *)0x0)) {
                  FUN_0083fbe0(
                              "Format string \"%s\" uses both positional parameters and \'*\' but this is not currently supported by this implementation, sorry."
                              );
                  local_4 = 0;
                  uVar4 = FUN_008855d0(local_30,local_7c,param_1);
                  local_4 = CONCAT31(local_4._1_3_,1);
                  FUN_008401a0("d:\\wxWidgets-2.9.3\\include\\wx/private/wxprintf.h",0x363,
                               "wxPrintfConvSpecParser<char>::wxPrintfConvSpecParser",
                               "Assert failure",uVar4);
                  FUN_0040159c();
                  local_4 = 0xffffffff;
                  FUN_0081b5bc();
                }
                piVar7 = piVar6;
                piVar9 = param_1_00 + *param_1_00 * 0xf + 1;
                for (iVar5 = 0xf; iVar5 != 0; iVar5 = iVar5 + -1) {
                  *piVar9 = *piVar7;
                  piVar7 = piVar7 + 1;
                  piVar9 = piVar9 + 1;
                }
                piVar6[2] = 0;
                *piVar6 = 0;
                *(undefined *)(piVar6 + 4) = 0;
                piVar6[6] = 0;
                piVar6[5] = 0;
                piVar6[3] = 0xffff;
                piVar6[7] = 0;
                piVar6[8] = 0;
                piVar6[9] = 0;
                piVar6[10] = 0;
                piVar6[0xb] = 0;
                piVar6[0xc] = 0;
                piVar6[0xd] = 0;
                piVar6[0xe] = 0;
                *(undefined *)(piVar6 + 7) = 0x25;
                piVar6[1] = 0xe;
                param_1_00[*param_1_00 + 0x3c0] = (int)piVar6;
                local_80 = local_80 + 1;
                piVar6 = param_1_00 + *param_1_00 * 0xf + 1;
              } while (local_80 < local_88);
            }
          }
          if (*piVar6 == 0) {
            *piVar6 = *param_1_00;
            *(undefined *)((int)param_1_00 + 0x1005) = 1;
          }
          else {
            *piVar6 = *piVar6 + -1;
            *(undefined *)(param_1_00 + 0x401) = 1;
          }
          param_1_00[*piVar6 + 0x3c1] = (int)piVar6;
          iVar5 = *param_1_00;
          *param_1_00 = iVar5 + 1;
          if (iVar5 == 0x40) break;
        }
      }
    }
    pcVar8 = pcVar8 + 1;
    cVar1 = *pcVar8;
  }
  if ((*param_1_00 == 0x40) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_0083fbe0(
                "wxVsnprintf() currently supports only %d arguments, but format string \"%s\" defines more of them.\nYou need to change wxMAX_SVNPRINTF_ARGUMENTS and recompile if more are really needed."
                );
    local_4 = 2;
    uVar4 = FUN_008856a0(local_54,local_68,param_1,0x40,uVar2);
    local_4 = CONCAT31(local_4._1_3_,3);
    FUN_008401a0("d:\\wxWidgets-2.9.3\\include\\wx/private/wxprintf.h",0x396,
                 "wxPrintfConvSpecParser<char>::wxPrintfConvSpecParser","Assert failure",uVar4);
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_50 = local_50 & 0xffff0000;
    local_3c = 7;
    local_40 = 0;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  ExceptionList = local_c;
  return param_1_00;
}



int * __thiscall FUN_008865d0(int *param_1_00,short *param_1)

{
  short sVar1;
  char cVar2;
  uint uVar3;
  char *pcVar4;
  undefined4 uVar5;
  int iVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  short *psVar10;
  uint local_88;
  uint local_80;
  undefined local_7c [20];
  undefined local_68 [20];
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbae0;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  *param_1_00 = 0;
  *(undefined *)((int)param_1_00 + 0x1005) = 0;
  *(undefined *)(param_1_00 + 0x401) = 0;
  _memset(param_1_00 + 0x3c1,0,0x100);
  sVar1 = *param_1;
  psVar10 = param_1;
  while (sVar1 != 0) {
    if (*psVar10 == 0x25) {
      if (psVar10[1] == 0x25) {
        psVar10 = psVar10 + 1;
      }
      else {
        piVar7 = param_1_00 + *param_1_00 * 0xf + 1;
        piVar7[2] = 0;
        *piVar7 = 0;
        piVar7[6] = 0;
        piVar7[5] = 0;
        piVar8 = piVar7 + 7;
        piVar7[3] = 0xffff;
        *(undefined *)(piVar7 + 4) = 0;
        piVar7[1] = -1;
        *piVar8 = 0;
        piVar7[8] = 0;
        piVar7[9] = 0;
        piVar7[10] = 0;
        piVar7[0xb] = 0;
        piVar7[0xc] = 0;
        piVar7[0xd] = 0;
        piVar7[0xe] = 0;
        *(undefined *)piVar8 = 0x25;
        cVar2 = FUN_00885d20(psVar10);
        if (cVar2 != '\0') {
          psVar10 = (short *)piVar7[6];
          pcVar4 = _strchr((char *)piVar8,0x2a);
          if (pcVar4 != (char *)0x0) {
            local_88 = 1;
            pcVar4 = _strchr(pcVar4 + 1,0x2a);
            if (pcVar4 != (char *)0x0) {
              local_88 = 2;
            }
            local_80 = 0;
            if (local_88 != 0) {
              do {
                iVar6 = *param_1_00;
                *param_1_00 = iVar6 + 1;
                if (iVar6 == 0x40) break;
                if ((*(char *)(param_1_00 + 0x401) != '\0') &&
                   (PTR_FUN_03235c4c != (undefined *)0x0)) {
                  FUN_0083fbe0(
                              "Format string \"%s\" uses both positional parameters and \'*\' but this is not currently supported by this implementation, sorry."
                              );
                  local_4 = 0;
                  uVar5 = FUN_0083ec10(local_30,local_7c,param_1);
                  local_4 = CONCAT31(local_4._1_3_,1);
                  FUN_008401a0("d:\\wxWidgets-2.9.3\\include\\wx/private/wxprintf.h",0x363,
                               "wxPrintfConvSpecParser<wchar_t>::wxPrintfConvSpecParser",
                               "Assert failure",uVar5);
                  FUN_0040159c();
                  local_4 = 0xffffffff;
                  FUN_0081b5bc();
                }
                piVar8 = piVar7;
                piVar9 = param_1_00 + *param_1_00 * 0xf + 1;
                for (iVar6 = 0xf; iVar6 != 0; iVar6 = iVar6 + -1) {
                  *piVar9 = *piVar8;
                  piVar8 = piVar8 + 1;
                  piVar9 = piVar9 + 1;
                }
                piVar7[2] = 0;
                *piVar7 = 0;
                *(undefined *)(piVar7 + 4) = 0;
                piVar7[6] = 0;
                piVar7[5] = 0;
                piVar7[3] = 0xffff;
                piVar7[7] = 0;
                piVar7[8] = 0;
                piVar7[9] = 0;
                piVar7[10] = 0;
                piVar7[0xb] = 0;
                piVar7[0xc] = 0;
                piVar7[0xd] = 0;
                piVar7[0xe] = 0;
                *(undefined *)(piVar7 + 7) = 0x25;
                piVar7[1] = 0xe;
                param_1_00[*param_1_00 + 0x3c0] = (int)piVar7;
                local_80 = local_80 + 1;
                piVar7 = param_1_00 + *param_1_00 * 0xf + 1;
              } while (local_80 < local_88);
            }
          }
          if (*piVar7 == 0) {
            *piVar7 = *param_1_00;
            *(undefined *)((int)param_1_00 + 0x1005) = 1;
          }
          else {
            *piVar7 = *piVar7 + -1;
            *(undefined *)(param_1_00 + 0x401) = 1;
          }
          param_1_00[*piVar7 + 0x3c1] = (int)piVar7;
          iVar6 = *param_1_00;
          *param_1_00 = iVar6 + 1;
          if (iVar6 == 0x40) break;
        }
      }
    }
    psVar10 = psVar10 + 1;
    sVar1 = *psVar10;
  }
  if ((*param_1_00 == 0x40) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_0083fbe0(
                "wxVsnprintf() currently supports only %d arguments, but format string \"%s\" defines more of them.\nYou need to change wxMAX_SVNPRINTF_ARGUMENTS and recompile if more are really needed."
                );
    local_4 = 2;
    uVar5 = FUN_00885780(local_54,local_68,param_1,0x40,uVar3);
    local_4 = CONCAT31(local_4._1_3_,3);
    FUN_008401a0("d:\\wxWidgets-2.9.3\\include\\wx/private/wxprintf.h",0x396,
                 "wxPrintfConvSpecParser<wchar_t>::wxPrintfConvSpecParser","Assert failure",uVar5);
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_50 = local_50 & 0xffff0000;
    local_3c = 7;
    local_40 = 0;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  ExceptionList = local_c;
  return param_1_00;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00886930(int param_1,uint param_2)

{
  undefined4 uVar1;
  char *pcVar2;
  char *pcVar3;
  uint local_1008;
  int aiStack_108 [65];
  undefined4 uStack_4;
  
  uStack_4 = 0x88693a;
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0x8000;
    }
    pcVar3 = "empty format string not allowed here";
    pcVar2 = "format";
    uVar1 = 0x281;
  }
  else {
    FUN_00886270(param_1);
    if (local_1008 < param_2) {
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
        return 0x8000;
      }
      pcVar3 = "more arguments than format string specifiers?";
      pcVar2 = "n <= parser.nargs";
      uVar1 = 0x286;
    }
    else if (aiStack_108[param_2] == 0) {
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
        return 0x8000;
      }
      pcVar3 = "requested argument not found - invalid format string?";
      pcVar2 = "parser.pspec[n-1] != 0";
      uVar1 = 0x289;
    }
    else {
      switch(*(undefined4 *)(aiStack_108[param_2] + 4)) {
      case 0:
      case 1:
      case 3:
      case 0xe:
        return 9;
      case 2:
        return 0x20;
      case 4:
        return 0x40;
      case 5:
        return 0x80;
      case 6:
        return 2;
      case 7:
      case 8:
        return 1;
      case 9:
      case 10:
        return 6;
      case 0xb:
        return 0x200;
      case 0xc:
        return 0x400;
      case 0xd:
        return 0x800;
      }
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
        return 0x8000;
      }
      pcVar3 = "unexpected argument type";
      pcVar2 = "Assert failure";
      uVar1 = 0x2b9;
    }
  }
  FUN_008402e0("..\\..\\src\\common\\strvararg.cpp",uVar1,
               "`anonymous-namespace\'::DoGetArgumentType",pcVar2,pcVar3);
  return 0x8000;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00886ad0(int param_1,uint param_2)

{
  undefined4 uVar1;
  char *pcVar2;
  char *pcVar3;
  uint local_1008;
  int aiStack_108 [65];
  undefined4 uStack_4;
  
  uStack_4 = 0x886ada;
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0x8000;
    }
    pcVar3 = "empty format string not allowed here";
    pcVar2 = "format";
    uVar1 = 0x281;
  }
  else {
    FUN_008865d0(param_1);
    if (local_1008 < param_2) {
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
        return 0x8000;
      }
      pcVar3 = "more arguments than format string specifiers?";
      pcVar2 = "n <= parser.nargs";
      uVar1 = 0x286;
    }
    else if (aiStack_108[param_2] == 0) {
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
        return 0x8000;
      }
      pcVar3 = "requested argument not found - invalid format string?";
      pcVar2 = "parser.pspec[n-1] != 0";
      uVar1 = 0x289;
    }
    else {
      switch(*(undefined4 *)(aiStack_108[param_2] + 4)) {
      case 0:
      case 1:
      case 3:
      case 0xe:
        return 9;
      case 2:
        return 0x20;
      case 4:
        return 0x40;
      case 5:
        return 0x80;
      case 6:
        return 2;
      case 7:
      case 8:
        return 1;
      case 9:
      case 10:
        return 6;
      case 0xb:
        return 0x200;
      case 0xc:
        return 0x400;
      case 0xd:
        return 0x800;
      }
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
        return 0x8000;
      }
      pcVar3 = "unexpected argument type";
      pcVar2 = "Assert failure";
      uVar1 = 0x2b9;
    }
  }
  FUN_008402e0("..\\..\\src\\common\\strvararg.cpp",uVar1,
               "`anonymous-namespace\'::DoGetArgumentType",pcVar2,pcVar3);
  return 0x8000;
}



undefined4 __thiscall FUN_00886c70(int param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  if (**(int **)(param_1_00 + 4) != 0) {
    uVar2 = FUN_00886930(**(int **)(param_1_00 + 4),param_1);
    return uVar2;
  }
  if (**(int **)(param_1_00 + 8) != 0) {
    uVar2 = FUN_00886ad0(**(int **)(param_1_00 + 8),param_1);
    return uVar2;
  }
  iVar1 = *(int *)(param_1_00 + 0xc);
  if (iVar1 == 0) {
    if (*(int *)(param_1_00 + 0x10) != 0) {
      uVar2 = FUN_00884df0(param_1);
      uVar2 = FUN_00886ad0(uVar2);
      return uVar2;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\strvararg.cpp",0x2ca,"wxFormatString::GetArgumentType",
                   "Assert failure","unreachable code");
    }
    return 0x8000;
  }
  if (7 < *(uint *)(iVar1 + 0x18)) {
    uVar2 = FUN_00886ad0(*(undefined4 *)(iVar1 + 4),param_1);
    return uVar2;
  }
  uVar2 = FUN_00886ad0(iVar1 + 4,param_1);
  return uVar2;
}



undefined8 * __thiscall FUN_00886d30(uint *param_1_00,undefined8 *param_1)

{
  uint uVar1;
  uint uVar2;
  undefined8 uVar3;
  LARGE_INTEGER local_10;
  uint local_8;
  int local_4;
  
  if (param_1_00[4] == 0) {
    if ((DAT_032bdbc0 | DAT_032bdbc4) == 0) {
      FUN_008a6810(&local_8);
      local_10.s.HighPart = local_4;
      local_10.s.LowPart = local_8;
    }
    else {
      QueryPerformanceCounter(&local_10);
    }
    local_8 = local_10.s.LowPart - *param_1_00;
    local_4 = (local_10.s.HighPart - param_1_00[1]) - (uint)(local_10.s.LowPart < *param_1_00);
    param_1_00 = &local_8;
  }
  else {
    param_1_00 = param_1_00 + 2;
  }
  uVar1 = DAT_032bdbc0;
  uVar2 = DAT_032bdbc4;
  if ((DAT_032bdbc0 | DAT_032bdbc4) == 0) {
    uVar1 = 1000;
    uVar2 = 0;
  }
  uVar3 = __allmul(*param_1_00,param_1_00[1],1000000,0);
  uVar3 = __alldiv(uVar3,uVar1,uVar2);
  *param_1 = uVar3;
  return param_1;
}



void __thiscall FUN_00886de0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  FUN_0083e8f0(param_2,param_1,1);
  uVar1 = FUN_008854f0(param_1);
  FUN_0083fe90(param_1_00,uVar1);
  return;
}



void __fastcall FUN_00886e20(undefined4 *param_1)

{
  char cVar1;
  BOOL BVar2;
  undefined auStack_c4 [12];
  undefined4 uStack_b8;
  undefined4 uStack_b4;
  char *pcStack_b0;
  undefined4 uStack_ac;
  char *pcStack_a8;
  LARGE_INTEGER LStack_88;
  undefined *puStack_80;
  LONG LStack_7c;
  LARGE_INTEGER LStack_78;
  undefined auStack_70 [100];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbb2b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032bdbc8 == '\0') {
    FUN_0086bd90();
    local_4 = 0;
    pcStack_a8 = (char *)0x886e83;
    QueryPerformanceFrequency((LARGE_INTEGER *)&DAT_032bdbc0);
    pcStack_a8 = (undefined *)0x886e8a;
    BVar2 = QueryPerformanceCounter(&LStack_78);
    if (BVar2 == 0) {
      LStack_88.s.LowPart = (DWORD)auStack_c4;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        pcStack_a8 = (char *)0x886ec1;
        FUN_0083fbe0();
        pcStack_a8 = "wxStopWatch::DoStart";
        uStack_ac = 0x5d;
        pcStack_b0 = "..\\..\\src\\common\\stopwatch.cpp";
        uStack_b4 = 6;
        local_4._0_1_ = 1;
        uStack_b8 = 0x886ee5;
        FUN_008423d0();
        local_4._0_1_ = 2;
        pcStack_a8 = (char *)0x886ef5;
        FUN_00843700();
        pcStack_a8 = auStack_70;
        uStack_ac = 0x886f05;
        FUN_00886de0();
        local_4._0_1_ = 1;
        FUN_00842440();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_0081b5bc();
      }
      DAT_032bdbc0 = 0;
      DAT_032bdbc4 = 0;
    }
    DAT_032bdbc8 = '\x01';
    local_4 = 0xffffffff;
    FUN_0086bda0();
  }
  if ((DAT_032bdbc0 | DAT_032bdbc4) == 0) {
    pcStack_a8 = (char *)0x886f77;
    FUN_008a6810();
    LStack_88.s.HighPart = LStack_7c;
    LStack_88.s.LowPart = (DWORD)puStack_80;
  }
  else {
    pcStack_a8 = (char *)0x886f63;
    QueryPerformanceCounter(&LStack_88);
  }
  *param_1 = LStack_88.s.LowPart;
  param_1[1] = LStack_88.s.HighPart;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00886fb0(uint *param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  undefined8 uVar3;
  
  param_1_00[4] = 0;
  FUN_00886e20();
  uVar1 = DAT_032bdbc0;
  uVar2 = DAT_032bdbc4;
  if ((DAT_032bdbc0 | DAT_032bdbc4) == 0) {
    uVar1 = 1000;
    uVar2 = 0;
  }
  uVar3 = __allmul(param_1,param_1 >> 0x1f,uVar1,uVar2);
  uVar3 = __alldiv(uVar3,0xfffffc18,0xffffffff);
  uVar1 = *param_1_00;
  *param_1_00 = *param_1_00 + (uint)uVar3;
  param_1_00[1] = param_1_00[1] + (int)((ulonglong)uVar3 >> 0x20) + (uint)CARRY4(uVar1,(uint)uVar3);
  return;
}



undefined4 thunk_FUN_00855b70(int param_1)

{
  LPCWSTR lpFileName;
  DWORD DVar1;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    lpFileName = (LPCWSTR)(param_1 + 4);
  }
  else {
    lpFileName = *(LPCWSTR *)(param_1 + 4);
  }
  DVar1 = GetFileAttributesW(lpFileName);
  if ((DVar1 != 0xffffffff) && ((DVar1 & 0x10) == 0)) {
    return 1;
  }
  return 0;
}



void __thiscall FUN_00887010(int param_1_00,undefined4 param_1)

{
  char cVar1;
  int iVar2;
  undefined local_b4 [4];
  uint local_b0;
  undefined4 local_a0;
  uint local_9c;
  void *local_98;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbb7c;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_b4;
  ExceptionList = &local_c;
  FUN_00432544(param_1,0);
  local_4 = 0;
  cVar1 = FUN_00857bd0(0);
  if (cVar1 == '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_4._0_1_ = 1;
    FUN_00859fd0(0x10,local_b4,0);
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b0);
    }
  }
  iVar2 = FUN_008581b0(local_b4,0);
  local_4._0_1_ = 2;
  if (param_1_00 != iVar2) {
    FID_conflict_assign(iVar2,0,0xffffffff);
  }
  local_4._0_1_ = 0;
  _free(local_98);
  if (7 < local_9c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_b0);
  }
  iVar2 = FUN_0085be90(local_b4,param_1_00,param_1_00 + 0x48);
  local_4 = CONCAT31(local_4._1_3_,3);
  if (param_1_00 + 0x24 != iVar2) {
    FID_conflict_assign(iVar2,0,0xffffffff);
  }
  _free(local_98);
  if (7 < local_9c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_b0);
  }
  local_9c = 7;
  local_a0 = 0;
  local_b0 = local_b0 & 0xffff0000;
  local_4 = 0xffffffff;
  if (*(int *)(param_1_00 + 0x38) == 0) {
    FUN_0043250a();
  }
  else {
    FUN_0043250a();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



uint __fastcall FUN_008871c0(uint *param_1)

{
  uint uVar1;
  uint *puVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbbe1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = *param_1;
  if (uVar1 != 0xffffffff) {
    uVar1 = __close(uVar1);
    uVar1 = uVar1 & (int)uVar1 >> 0x1f;
    if (uVar1 == 0xffffffff) {
      puVar2 = (uint *)__errno();
      param_1[1] = *puVar2;
      FUN_0043c211(&DAT_00d25fa0);
      uVar1 = FUN_00846b30(1);
      if ((char)uVar1 != '\0') {
        FUN_004325b6();
        local_4 = 0;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,1);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 2;
        FUN_0043c211();
        local_4._0_1_ = 3;
        FUN_008423d0();
        local_4._0_1_ = 4;
        GetLastError();
        FUN_0084d140();
        FUN_00848820();
        local_4._0_1_ = 3;
        FUN_00842440();
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        uVar1 = FUN_0040159c();
      }
      *param_1 = 0xffffffff;
      ExceptionList = local_c;
      return uVar1 & 0xffffff00;
    }
    *param_1 = 0xffffffff;
  }
  ExceptionList = local_c;
  return CONCAT31((int3)(uVar1 >> 8),1);
}



int __thiscall FUN_00887390(int *param_1_00,void *param_1,uint param_2)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbc41;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1 == (void *)0x0) || (*param_1_00 == -1)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0();
    }
    iVar2 = 0;
  }
  else {
    iVar2 = __read(*param_1_00,param_1,param_2);
    if (iVar2 == -1) {
      piVar3 = __errno();
      param_1_00[1] = *piVar3;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_4 = 0;
        FUN_0043c211();
        local_4._0_1_ = 1;
        FUN_00820bf9();
        FUN_008433c0();
        local_4._0_1_ = 2;
        FUN_0043c211();
        local_4._0_1_ = 3;
        FUN_008423d0();
        local_4._0_1_ = 4;
        GetLastError();
        FUN_0084d140();
        FUN_00848820();
        local_4._0_1_ = 3;
        FUN_00842440();
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      iVar2 = -1;
    }
  }
  ExceptionList = local_c;
  return iVar2;
}



int __thiscall FUN_00887570(int *param_1_00,void *param_1,uint param_2)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbc41;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1 == (void *)0x0) || (*param_1_00 == -1)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0();
    }
  }
  else {
    iVar2 = __write(*param_1_00,param_1,param_2);
    if (iVar2 != -1) {
      ExceptionList = local_c;
      return iVar2;
    }
    piVar3 = __errno();
    param_1_00[1] = *piVar3;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4._0_1_ = 1;
      FUN_00820bf9();
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_0043c211();
      local_4._0_1_ = 3;
      FUN_008423d0();
      local_4._0_1_ = 4;
      GetLastError();
      FUN_0084d140();
      FUN_00848820();
      local_4._0_1_ = 3;
      FUN_00842440();
      FUN_0040159c();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  return 0;
}



bool FUN_00887740(int *param_1,void **param_2)

{
  int iVar1;
  void **ppvVar2;
  uint uVar3;
  undefined4 uVar4;
  void **ppvVar5;
  int iVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcdc60;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  uVar4 = FUN_00432413(&param_2,param_2);
  local_4 = 0;
  FUN_00432305(uVar4);
  local_4 = CONCAT31(local_4._1_3_,2);
  ppvVar5 = (void **)FUN_00850350(uVar3);
  ppvVar2 = param_2;
  if (param_2 != ppvVar5) {
    *(short *)(param_2 + 2) = *(short *)(param_2 + 2) + -1;
    if (*(short *)(param_2 + 2) == 0) {
      if (*(char *)((int)param_2 + 10) != '\0') {
        _free(*param_2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar2);
    }
    param_2 = (void **)FUN_00850350(uVar3);
  }
  if (*param_1 == 0) {
    local_4 = 0xffffffff;
    thunk_FUN_0043c1dd();
    ExceptionList = local_c;
    return false;
  }
  iVar1 = param_1[1];
  iVar6 = FUN_00887570(*param_1,iVar1);
  local_4 = 0xffffffff;
  thunk_FUN_0043c1dd();
  ExceptionList = local_c;
  return iVar6 == iVar1;
}



undefined4 __fastcall FUN_00887840(int *param_1)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  int *piVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbc41;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1 != -1) {
    iVar2 = FUN_0085c6e0();
    if (iVar2 == 1) {
      uVar3 = __commit(*param_1);
      if ((uVar3 & (int)uVar3 >> 0x1f) == 0xffffffff) {
        piVar4 = __errno();
        param_1[1] = *piVar4;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(1);
        if (cVar1 != '\0') {
          FUN_004325b6();
          local_4 = 0;
          FUN_0043c211();
          local_4._0_1_ = 1;
          FUN_00820bf9();
          FUN_008433c0();
          local_4._0_1_ = 2;
          FUN_0043c211();
          local_4._0_1_ = 3;
          FUN_008423d0();
          local_4._0_1_ = 4;
          GetLastError();
          FUN_0084d140();
          FUN_00848820();
          local_4._0_1_ = 3;
          FUN_00842440();
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,1);
          FUN_0081b5bc();
          FUN_0040159c();
          FUN_0040159c();
        }
        ExceptionList = local_c;
        return 0;
      }
    }
  }
  ExceptionList = local_c;
  return 1;
}



longlong __thiscall FUN_00887a00(int *param_1_00,uint param_1,uint param_2,int param_3)

{
  char cVar1;
  uint _Origin;
  undefined4 uVar2;
  int *piVar3;
  int iVar4;
  longlong lVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbca1;
  local_c = ExceptionList;
  _Origin = DAT_0323f878 ^ (uint)&stack0xffffff08;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 == -1)) {
    FUN_00840480();
  }
  if (((param_1 & param_2) == 0xffffffff) && (param_3 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    ExceptionList = local_c;
    return -1;
  }
  if (param_3 != 0) {
    if (param_3 == 1) {
      uVar2 = 1;
      goto LAB_00887af4;
    }
    if (param_3 == 2) {
      uVar2 = 2;
      goto LAB_00887af4;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  uVar2 = 0;
LAB_00887af4:
  lVar5 = __lseeki64(*param_1_00,CONCAT44(uVar2,param_2),_Origin);
  if (lVar5 == -1) {
    piVar3 = __errno();
    param_1_00[1] = *piVar3;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_0043c211();
      local_4._0_1_ = 3;
      FUN_008423d0();
      local_4._0_1_ = 4;
      GetLastError();
      FUN_0084d140();
      FUN_00820e3f();
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 3;
      FUN_00842440();
      FUN_0040159c();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  return lVar5;
}



longlong __fastcall FUN_00887cc0(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  uint local_c4;
  void *local_c0;
  uint local_a0;
  void *local_9c;
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbd01;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1 == -1)) {
    FUN_008402e0();
  }
  lVar4 = __telli64(*param_1);
  if (lVar4 == -1) {
    piVar2 = __errno();
    param_1[1] = *piVar2;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_0043c211();
      local_4._0_1_ = 3;
      FUN_008423d0();
      local_4._0_1_ = 4;
      GetLastError();
      FUN_0084d140();
      FUN_00820e3f();
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 3;
      FUN_00842440();
      _free(local_9c);
      if (7 < local_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      _free(local_c0);
      if (7 < local_c4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(local_64);
      if (7 < local_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  ExceptionList = local_c;
  return lVar4;
}



undefined4 FUN_00887f40(void)

{
  char cVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbdb1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008871c0();
  cVar1 = thunk_FUN_00855b70();
  if ((cVar1 != '\0') && (iVar2 = FUN_00a42654(), iVar2 != 0)) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_0043c211();
      FUN_00432231();
      local_4._0_1_ = 4;
      FUN_008423d0();
      local_4._0_1_ = 5;
      GetLastError();
      FUN_0084d140();
      local_4._0_1_ = 6;
      FUN_00848860();
      local_4._0_1_ = 3;
      FUN_00842440();
      FUN_0040159c();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
    ExceptionList = local_c;
    return 0;
  }
  cVar1 = FUN_0085f750();
  if (cVar1 == '\0') {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 7;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,8);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 9;
      FUN_0043c211();
      FUN_00432231();
      local_4._0_1_ = 0xb;
      FUN_008423d0();
      local_4._0_1_ = 0xc;
      GetLastError();
      FUN_0084d140();
      local_4._0_1_ = 0xd;
      FUN_00848860();
      local_4._0_1_ = 10;
      FUN_00842440();
      FUN_0040159c();
      local_4 = CONCAT31(local_4._1_3_,8);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = local_c;
  return 1;
}



void FUN_008882c0(void)

{
  char cVar1;
  int iVar2;
  uint local_c4;
  void *local_c0;
  uint local_a0;
  void *local_9c;
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcda6c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008871c0();
  iVar2 = FUN_00a42654();
  if (iVar2 != 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_0043c211();
      FUN_00432231();
      local_4._0_1_ = 4;
      FUN_008423d0();
      local_4._0_1_ = 5;
      GetLastError();
      FUN_0084d140();
      local_4._0_1_ = 6;
      FUN_00848860();
      local_4._0_1_ = 3;
      FUN_00842440();
      _free(local_9c);
      if (7 < local_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      _free(local_c0);
      if (7 < local_c4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(local_64);
      if (7 < local_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00888500(int *param_1_00,int param_1,char param_2)

{
  char cVar1;
  wchar_t *_Filename;
  int iVar2;
  int *piVar3;
  DWORD DVar4;
  undefined4 uVar5;
  undefined *puVar6;
  uint local_c4;
  void *local_c0;
  undefined local_b8 [4];
  uint local_b4;
  undefined4 local_a4;
  uint local_a0;
  void *local_9c;
  undefined local_94 [44];
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca57c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(uint *)(param_1 + 0x18) < 8) {
    _Filename = (wchar_t *)(param_1 + 4);
  }
  else {
    _Filename = *(wchar_t **)(param_1 + 4);
  }
  iVar2 = FID_conflict__wopen(_Filename,(-(uint)(param_2 != '\0') & 0xfffffe00) + 0x400 | 0x8101);
  if (iVar2 == -1) {
    piVar3 = __errno();
    param_1_00[1] = *piVar3;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_0043c211();
      local_4._0_1_ = 3;
      FID_conflict_assign(param_1,0,0xffffffff);
      local_4._0_1_ = 4;
      FUN_008423d0(1,"..\\..\\src\\common\\file.cpp",0xd7,"wxFile::Create",&DAT_00d25fa0);
      local_4._0_1_ = 5;
      puVar6 = local_94;
      DVar4 = GetLastError();
      FUN_0084d140(local_b8,DVar4);
      local_4._0_1_ = 6;
      FUN_00848780(puVar6);
      local_4._0_1_ = 3;
      FUN_00842440();
      _free(local_9c);
      if (7 < local_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_a0 = 7;
      local_a4 = 0;
      local_b4 = local_b4 & 0xffff0000;
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      _free(local_c0);
      if (7 < local_c4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(local_64);
      if (7 < local_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    uVar5 = 0;
  }
  else {
    FUN_008871c0();
    *param_1_00 = iVar2;
    param_1_00[1] = 0;
    uVar5 = 1;
  }
  ExceptionList = local_c;
  return uVar5;
}



undefined4 __thiscall FUN_008887a0(int *param_1_00,int param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  DWORD DVar4;
  undefined4 uVar5;
  wchar_t *_Filename;
  undefined *puVar6;
  uint local_c4;
  void *local_c0;
  undefined local_b8 [4];
  uint local_b4;
  undefined4 local_a4;
  uint local_a0;
  void *local_9c;
  undefined local_94 [44];
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc818c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = 0x8000;
  switch(param_2) {
  case 2:
    iVar2 = 0x8002;
    break;
  case 3:
    cVar1 = thunk_FUN_00855b70();
    if (cVar1 != '\0') {
      iVar2 = 0x8009;
      break;
    }
  case 1:
    iVar2 = 0x8301;
    break;
  case 4:
    iVar2 = 0x8501;
  }
  if (*(uint *)(param_1 + 0x18) < 8) {
    _Filename = (wchar_t *)(param_1 + 4);
  }
  else {
    _Filename = *(wchar_t **)(param_1 + 4);
  }
  iVar2 = FID_conflict__wopen(_Filename,iVar2);
  if (iVar2 == -1) {
    piVar3 = __errno();
    param_1_00[1] = *piVar3;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_0043c211();
      local_4._0_1_ = 3;
      FID_conflict_assign(param_1,0,0xffffffff);
      local_4._0_1_ = 4;
      FUN_008423d0(1,"..\\..\\src\\common\\file.cpp",0x10b,"wxFile::Open",&DAT_00d25fa0);
      local_4._0_1_ = 5;
      puVar6 = local_94;
      DVar4 = GetLastError();
      FUN_0084d140(local_b8,DVar4);
      local_4._0_1_ = 6;
      FUN_00848780(puVar6);
      local_4._0_1_ = 3;
      FUN_00842440();
      _free(local_9c);
      if (7 < local_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_a0 = 7;
      local_a4 = 0;
      local_b4 = local_b4 & 0xffff0000;
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      _free(local_c0);
      if (7 < local_c4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(local_64);
      if (7 < local_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    uVar5 = 0;
  }
  else {
    FUN_008871c0();
    *param_1_00 = iVar2;
    param_1_00[1] = 0;
    uVar5 = 1;
  }
  ExceptionList = local_c;
  return uVar5;
}



longlong __fastcall FUN_00888a70(int *param_1)

{
  char cVar1;
  uint _Origin;
  int *piVar2;
  int iVar3;
  longlong lVar4;
  longlong lVar5;
  uint local_194;
  void *local_190;
  uint local_170;
  void *local_16c;
  uint local_124;
  void *local_120;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbe4b;
  local_c = ExceptionList;
  _Origin = DAT_0323f878 ^ (uint)&stack0xfffffe30;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1 == -1)) {
    FUN_008402e0();
  }
  lVar4 = FUN_00887cc0();
  if (lVar4 != -1) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1 == -1)) {
      FUN_00840480();
    }
    lVar4 = __lseeki64(*param_1,0x200000000,_Origin);
    if (lVar4 == -1) {
      piVar2 = __errno();
      param_1[1] = *piVar2;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_4 = 0;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,1);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 2;
        FUN_0043c211();
        local_4._0_1_ = 3;
        FUN_008423d0();
        local_4._0_1_ = 4;
        GetLastError();
        FUN_0084d140();
        FUN_00820e3f();
        FUN_008854f0();
        FUN_0083fe90();
        local_4._0_1_ = 3;
        FUN_00842440();
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        local_4 = 0xffffffff;
        FUN_0040159c();
      }
    }
    if ((lVar4 != -1) && (lVar5 = FUN_00887a00(), lVar5 == -1)) {
      lVar4 = -1;
    }
    if (lVar4 != -1) {
      ExceptionList = local_c;
      return lVar4;
    }
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(1);
  if (cVar1 != '\0') {
    FUN_004325b6();
    local_4 = 5;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,6);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    local_4._0_1_ = 7;
    FUN_0043c211();
    local_4._0_1_ = 8;
    FUN_008423d0();
    local_4._0_1_ = 9;
    GetLastError();
    FUN_0084d140();
    FUN_00820e3f();
    FUN_008854f0();
    FUN_0083fe90();
    local_4._0_1_ = 8;
    FUN_00842440();
    _free(local_16c);
    if (7 < local_170) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = CONCAT31(local_4._1_3_,6);
    FUN_0081b5bc();
    _free(local_190);
    if (7 < local_194) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(local_120);
    if (7 < local_124) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  return lVar4;
}



int __thiscall FUN_00888f10(int param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcbe8e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x3c) = 7;
  *(undefined4 *)(param_1_00 + 0x38) = 0;
  *(undefined2 *)(param_1_00 + 0x28) = 0;
  *(undefined4 *)(param_1_00 + 0x40) = 0;
  *(undefined4 *)(param_1_00 + 0x48) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x4c) = 0;
  local_4 = 2;
  FUN_00887010(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00888fa0(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcbece;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 2;
  if (*(int *)(param_1 + 0x48) != -1) {
    FUN_008882c0(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  }
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_008871c0();
  _free(*(void **)(param_1 + 0x40));
  if (7 < *(uint *)(param_1 + 0x3c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x28));
  }
  *(undefined4 *)(param_1 + 0x3c) = 7;
  *(undefined4 *)(param_1 + 0x38) = 0;
  *(undefined2 *)(param_1 + 0x28) = 0;
  _free(*(void **)(param_1 + 0x1c));
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_00889060(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  *param_1_00 = 0xffffffff;
  param_1_00[1] = 0;
  FUN_008887a0(param_1,param_2,0x1b6);
  return param_1_00;
}



void __thiscall FUN_00889090(int param_1_00,undefined4 param_1,uint param_2)

{
  undefined4 uVar1;
  uint uVar2;
  
  *(undefined4 *)(param_1_00 + 0x14) = param_1;
  *(uint *)(param_1_00 + 8) = param_2;
  uVar1 = FUN_00823c23(-(uint)((int)((ulonglong)param_2 * 4 >> 0x20) != 0) |
                       (uint)((ulonglong)param_2 * 4));
  *(undefined4 *)(param_1_00 + 0x10) = uVar1;
  uVar2 = 0;
  if (*(int *)(param_1_00 + 8) != 0) {
    do {
      *(undefined4 *)(*(int *)(param_1_00 + 0x10) + uVar2 * 4) = 0;
      uVar2 = uVar2 + 1;
    } while (uVar2 < *(uint *)(param_1_00 + 8));
  }
  return;
}



void __thiscall FUN_008890e0(int param_1_00,undefined4 param_1,uint param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x14) != 1)) {
    FUN_008402e0("..\\..\\src\\common\\hash.cpp",0xa3,"wxHashTableBase::DoPut",
                 "m_keyType == wxKEY_INTEGER",0);
  }
  param_2 = param_2 % *(uint *)(param_1_00 + 8);
  puVar3 = (undefined4 *)operator_new(0x10);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3[2] = param_3;
    puVar3[3] = param_1_00;
    puVar3[1] = param_1;
  }
  if (*(int *)(*(int *)(param_1_00 + 0x10) + param_2 * 4) == 0) {
    *puVar3 = puVar3;
    *(undefined4 **)(*(int *)(param_1_00 + 0x10) + param_2 * 4) = puVar3;
    *(int *)(param_1_00 + 0xc) = *(int *)(param_1_00 + 0xc) + 1;
    return;
  }
  puVar1 = *(undefined4 **)(*(int *)(param_1_00 + 0x10) + param_2 * 4);
  uVar2 = *puVar1;
  *puVar1 = puVar3;
  *puVar3 = uVar2;
  *(undefined4 **)(*(int *)(param_1_00 + 0x10) + param_2 * 4) = puVar3;
  *(int *)(param_1_00 + 0xc) = *(int *)(param_1_00 + 0xc) + 1;
  return;
}



void __fastcall FUN_00889180(undefined4 *param_1)

{
  param_1[1] = 0;
  *param_1 = wxHashTableBase::vftable;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  *(undefined *)(param_1 + 6) = 0;
  return;
}



int __thiscall FUN_008891a0(int param_1_00,int param_1,uint param_2)

{
  int *piVar1;
  int *piVar2;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x14) != 1)) {
    FUN_008402e0("..\\..\\src\\common\\hash.cpp",0xb7,"wxHashTableBase::DoGet",
                 "m_keyType == wxKEY_INTEGER",0);
  }
  param_2 = param_2 % *(uint *)(param_1_00 + 8);
  if (*(int *)(*(int *)(param_1_00 + 0x10) + param_2 * 4) != 0) {
    piVar1 = **(int ***)(*(int *)(param_1_00 + 0x10) + param_2 * 4);
    piVar2 = piVar1;
    do {
      if (piVar2[1] == param_1) {
        return piVar2[2];
      }
      piVar2 = (int *)*piVar2;
    } while (piVar2 != piVar1);
  }
  return 0;
}



void FUN_00889210(int param_1)

{
  if (*(int **)(param_1 + 8) != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00889228. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(param_1 + 8) + 4))();
    return;
  }
  return;
}



void __thiscall FUN_00889230(int param_1_00,uint param_1)

{
  int *piVar1;
  
  if (param_1 < *(uint *)(param_1_00 + 8)) {
    piVar1 = (int *)(*(int *)(param_1_00 + 0x10) + param_1 * 4);
    do {
      if (*piVar1 != 0) {
        *(undefined4 *)(param_1_00 + 0x1c) =
             **(undefined4 **)(*(int *)(param_1_00 + 0x10) + param_1 * 4);
        *(uint *)(param_1_00 + 0x20) = param_1;
        return;
      }
      param_1 = param_1 + 1;
      piVar1 = piVar1 + 1;
    } while (param_1 < *(uint *)(param_1_00 + 8));
  }
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x20) = 0;
  return;
}



int __fastcall FUN_00889270(int param_1)

{
  int iVar1;
  int extraout_ECX;
  int extraout_ECX_00;
  
  if (*(int **)(param_1 + 0x1c) == (int *)0x0) {
    FUN_00889230(0);
    return *(int *)(extraout_ECX + 0x1c);
  }
  iVar1 = **(int **)(param_1 + 0x1c);
  *(int *)(param_1 + 0x1c) = iVar1;
  if (iVar1 == **(int **)(*(int *)(param_1 + 0x10) + *(int *)(param_1 + 0x20) * 4)) {
    FUN_00889230(*(int *)(param_1 + 0x20) + 1);
    iVar1 = *(int *)(extraout_ECX_00 + 0x1c);
  }
  return iVar1;
}



int __thiscall FUN_008892a0(int param_1_00,int param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x14) != 2)) {
    FUN_008402e0("..\\..\\src\\common\\hash.cpp",0xcf,"wxHashTableBase::DoGet",
                 "m_keyType == wxKEY_STRING",0);
  }
  param_2 = param_2 % *(uint *)(param_1_00 + 8);
  if (*(int *)(*(int *)(param_1_00 + 0x10) + param_2 * 4) == 0) {
    return 0;
  }
  piVar1 = **(int ***)(*(int *)(param_1_00 + 0x10) + param_2 * 4);
  piVar3 = piVar1;
  do {
    if (*(int *)(piVar3[1] + 0x14) == *(int *)(param_1 + 0x14)) {
      iVar2 = FUN_00850760(param_1);
      if (iVar2 == 0) {
        return piVar3[2];
      }
    }
    piVar3 = (int *)*piVar3;
  } while (piVar3 != piVar1);
  return 0;
}



int FUN_00889330(int param_1)

{
  ushort uVar1;
  int iVar2;
  ushort *puVar3;
  
  iVar2 = 0;
  if (*(uint *)(param_1 + 0x18) < 8) {
    puVar3 = (ushort *)(param_1 + 4);
  }
  else {
    puVar3 = *(ushort **)(param_1 + 4);
  }
  uVar1 = *puVar3;
  while (uVar1 != 0) {
    puVar3 = puVar3 + 1;
    iVar2 = iVar2 + (uint)uVar1;
    uVar1 = *puVar3;
  }
  return iVar2;
}



void __thiscall FUN_00889370(int *param_1_00,int param_1)

{
  int iVar1;
  
  *(undefined4 *)(param_1 + 0xc) = 0;
  if ((param_1_00[5] == 2) && (iVar1 = *(int *)(param_1 + 4), iVar1 != 0)) {
    _free(*(void **)(iVar1 + 0x1c));
    if (*(uint *)(iVar1 + 0x18) < 8) {
      *(undefined4 *)(iVar1 + 0x18) = 7;
      *(undefined4 *)(iVar1 + 0x14) = 0;
      *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar1);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
  }
  if (*(char *)(param_1_00 + 6) != '\0') {
    (**(code **)(*param_1_00 + 0x10))(param_1);
  }
  return;
}



void __thiscall FUN_008893e0(int param_1_00,int param_1,int *param_2,int *param_3)

{
  if (param_2 == *(int **)(*(int *)(param_1_00 + 0x10) + param_1 * 4)) {
    *(int **)(*(int *)(param_1_00 + 0x10) + param_1 * 4) = param_3;
  }
  if ((param_3 == param_2) && (param_3 == (int *)*param_2)) {
    *(undefined4 *)(*(int *)(param_1_00 + 0x10) + param_1 * 4) = 0;
    FUN_00889370(param_2);
    *(int *)(param_1_00 + 0xc) = *(int *)(param_1_00 + 0xc) + -1;
    return;
  }
  *param_3 = *param_2;
  FUN_00889370(param_2);
  *(int *)(param_1_00 + 0xc) = *(int *)(param_1_00 + 0xc) + -1;
  return;
}



void __thiscall FUN_00889440(int param_1_00,int **param_1)

{
  ushort uVar1;
  int **ppiVar2;
  int **ppiVar3;
  int *piVar4;
  int *piVar5;
  uint uVar6;
  
  piVar5 = param_1[1];
  if (*(int *)(param_1_00 + 0x14) != 1) {
    if ((uint)piVar5[6] < 8) {
      piVar4 = piVar5 + 1;
    }
    else {
      piVar4 = (int *)piVar5[1];
    }
    uVar1 = *(ushort *)piVar4;
    piVar5 = (int *)0x0;
    while (uVar1 != 0) {
      piVar4 = (int *)((int)piVar4 + 2);
      piVar5 = (int *)((int)piVar5 + (uint)uVar1);
      uVar1 = *(ushort *)piVar4;
    }
  }
  uVar6 = (uint)piVar5 % *(uint *)(param_1_00 + 8);
  if ((int **)*param_1 != param_1) {
    ppiVar2 = *(int ***)(*(int *)(param_1_00 + 0x10) + uVar6 * 4);
    piVar5 = (int *)(*(int *)(param_1_00 + 0x10) + uVar6 * 4);
    for (ppiVar3 = (int **)*ppiVar2; ppiVar3 != param_1; ppiVar3 = (int **)*ppiVar3) {
      ppiVar2 = ppiVar3;
    }
    if (param_1 == (int **)*piVar5) {
      *piVar5 = (int)ppiVar2;
    }
    if ((ppiVar2 == param_1) && (ppiVar2 == (int **)*param_1)) {
      *(undefined4 *)(*(int *)(param_1_00 + 0x10) + uVar6 * 4) = 0;
    }
    else {
      *ppiVar2 = *param_1;
    }
    FUN_00889370(param_1);
    *(int *)(param_1_00 + 0xc) = *(int *)(param_1_00 + 0xc) + -1;
    FUN_00889370(param_1);
    return;
  }
  *(undefined4 *)(*(int *)(param_1_00 + 0x10) + uVar6 * 4) = 0;
  FUN_00889370(param_1);
  return;
}



int __thiscall FUN_00889500(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbefb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 8) = param_2;
  *(undefined4 *)(param_1_00 + 0xc) = param_3;
  pvVar1 = operator_new(0x24);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    *(undefined4 *)(param_1_00 + 4) = 0;
  }
  else {
    *(undefined4 *)((int)pvVar1 + 0x18) = 7;
    *(undefined4 *)((int)pvVar1 + 0x14) = 0;
    *(undefined2 *)((int)pvVar1 + 4) = 0;
    FID_conflict_assign(param_1,0,0xffffffff);
    *(undefined4 *)((int)pvVar1 + 0x1c) = 0;
    *(void **)(param_1_00 + 4) = pvVar1;
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_008895a0(int param_1_00,undefined4 param_1,uint param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  void *pvVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbefb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x14) != 2)) {
    FUN_008402e0("..\\..\\src\\common\\hash.cpp",0xad,"wxHashTableBase::DoPut",
                 "m_keyType == wxKEY_STRING",0,DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  param_2 = param_2 % *(uint *)(param_1_00 + 8);
  pvVar3 = operator_new(0x10);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    puVar4 = (undefined4 *)FUN_00889500(param_1,param_3,param_1_00);
  }
  if (*(int *)(*(int *)(param_1_00 + 0x10) + param_2 * 4) == 0) {
    *puVar4 = puVar4;
    *(undefined4 **)(*(int *)(param_1_00 + 0x10) + param_2 * 4) = puVar4;
  }
  else {
    puVar1 = *(undefined4 **)(*(int *)(param_1_00 + 0x10) + param_2 * 4);
    uVar2 = *puVar1;
    *puVar1 = puVar4;
    *puVar4 = uVar2;
    *(undefined4 **)(*(int *)(param_1_00 + 0x10) + param_2 * 4) = puVar4;
  }
  *(int *)(param_1_00 + 0xc) = *(int *)(param_1_00 + 0xc) + 1;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00889670(int param_1_00,int param_1,uint param_2)

{
  int **ppiVar1;
  int **ppiVar2;
  int iVar3;
  int **ppiVar4;
  int **ppiVar5;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x14) != 2)) {
    FUN_008402e0("..\\..\\src\\common\\hash.cpp",0x118,"wxHashTableBase::DoDelete",
                 "m_keyType == wxKEY_STRING",0);
  }
  param_2 = param_2 % *(uint *)(param_1_00 + 8);
  if (*(int *)(*(int *)(param_1_00 + 0x10) + param_2 * 4) == 0) {
    return 0;
  }
  ppiVar5 = *(int ***)(*(int *)(param_1_00 + 0x10) + param_2 * 4);
  ppiVar1 = (int **)*ppiVar5;
  ppiVar2 = ppiVar1;
  do {
    ppiVar4 = ppiVar2;
    if (ppiVar4[1][5] == *(int *)(param_1 + 0x14)) {
      iVar3 = FUN_00850760(param_1);
      if (iVar3 == 0) {
        ppiVar4[2] = (int *)0x0;
        FUN_008893e0(param_2,ppiVar4,ppiVar5);
        if (ppiVar4[3] != (int *)0x0) {
          FUN_00889440(ppiVar4);
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(ppiVar4);
      }
    }
    ppiVar2 = (int **)*ppiVar4;
    ppiVar5 = ppiVar4;
  } while ((int **)*ppiVar4 != ppiVar1);
  return 0;
}



void __fastcall FUN_00889740(int *param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  
  uVar4 = 0;
  if (param_1[2] == 0) {
    param_1[3] = 0;
    return;
  }
  while (piVar1 = *(int **)(param_1[4] + uVar4 * 4), piVar1 == (int *)0x0) {
    uVar4 = uVar4 + 1;
    if ((uint)param_1[2] <= uVar4) {
      param_1[3] = 0;
      return;
    }
  }
  iVar2 = *piVar1;
  *(undefined4 *)(iVar2 + 0xc) = 0;
  if ((param_1[5] == 2) && (iVar3 = *(int *)(iVar2 + 4), iVar3 != 0)) {
    _free(*(void **)(iVar3 + 0x1c));
    if (*(uint *)(iVar3 + 0x18) < 8) {
      *(undefined4 *)(iVar3 + 0x18) = 7;
      *(undefined4 *)(iVar3 + 0x14) = 0;
      *(undefined2 *)(iVar3 + 4) = 0;
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar3);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(iVar3 + 4));
  }
  if (*(char *)(param_1 + 6) != '\0') {
    (**(code **)(*param_1 + 0x10))(iVar2);
  }
  if (*(int *)(iVar2 + 0xc) != 0) {
    FUN_00889440(iVar2);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar2);
}



void __fastcall FUN_00889830(int param_1)

{
  FUN_00889740();
  if (*(int *)(param_1 + 0x10) != 0) {
    FUN_00a3f66c(*(int *)(param_1 + 0x10));
    *(undefined4 *)(param_1 + 0x10) = 0;
  }
  *(undefined4 *)(param_1 + 8) = 0;
  return;
}



undefined ** FUN_00889860(void)

{
  return &PTR_u_wxConfigBase_03236c3c;
}



undefined4 FUN_00889870(undefined4 param_1)

{
  undefined4 uVar1;
  
  uVar1 = DAT_032bdbd8;
  DAT_032bdbd8 = param_1;
  return uVar1;
}



char __thiscall FUN_00889880(int *param_1_00,undefined4 param_1,undefined4 *param_2)

{
  char cVar1;
  
  if (param_2 != (undefined4 *)0x0) {
    cVar1 = (**(code **)(*param_1_00 + 0x58))(param_1,param_2);
    if (cVar1 == '\0') {
      if (*(char *)((int)param_1_00 + 9) != '\0') {
        (**(code **)(*param_1_00 + 0x6c))(param_1,param_1);
      }
      *param_2 = param_1;
    }
    return cVar1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\config.cpp",0x9f,"wxConfigBase::Read",&DAT_00d2e1c8,
                 L"wxConfig::Read(): NULL parameter");
  }
  return '\0';
}



void __fastcall FUN_00889900(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x00889912. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x6c))();
  return;
}



void __fastcall FUN_00889940(undefined4 *param_1)

{
  *param_1 = wxConfigBase::vftable;
  _free((void *)param_1[0x13]);
  if (7 < (uint)param_1[0x12]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xd]);
  }
  param_1[0x12] = 7;
  param_1[0x11] = 0;
  *(undefined2 *)(param_1 + 0xd) = 0;
  _free((void *)param_1[10]);
  if (7 < (uint)param_1[9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[4]);
  }
  param_1[9] = 7;
  param_1[8] = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



bool __thiscall FUN_008899c0(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1_00 + 0x34))(param_1);
  return cVar1 != '\0';
}



undefined __thiscall FUN_008899e0(int *param_1_00,undefined4 param_1,undefined8 param_2)

{
  undefined uVar1;
  undefined4 uVar2;
  undefined4 unaff_EBX;
  undefined local_30 [16];
  uint uStack_20;
  void *pvStack_1c;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_00853b50(local_30,param_2,0xffffffff,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_4 = 0;
  uVar1 = (**(code **)(*param_1_00 + 0x68))();
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBX,param_1,uVar2);
  }
  ExceptionList = pvStack_14;
  return uVar1;
}



void __fastcall FUN_00889a70(int **param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcbf36;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 1;
  if (*(char *)(param_1 + 0x13) != '\0') {
    (**(code **)(**param_1 + 0x10))(param_1 + 10,DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  _free(param_1[0x11]);
  if ((int *)0x7 < param_1[0x10]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xb]);
  }
  param_1[0x10] = (int *)0x7;
  param_1[0xf] = (int *)0x0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  _free(param_1[8]);
  if ((int *)0x7 < param_1[7]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[2]);
  }
  param_1[7] = (int *)0x7;
  param_1[6] = (int *)0x0;
  *(undefined2 *)(param_1 + 2) = 0;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00889b30(undefined4 param_1_00,byte param_1)

{
  FUN_00889940();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_00889b50(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  bool bVar4;
  undefined local_78 [4];
  uint local_74;
  undefined4 local_64;
  uint local_60;
  void *local_5c;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbfb6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x15c);
  local_4 = 0;
  bVar4 = pvVar2 == (void *)0x0;
  if (bVar4) {
    uVar3 = 0;
  }
  else {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 2;
    uVar3 = FUN_00841170(local_54);
    local_4 = 3;
    uVar3 = FUN_008a9900(uVar3,DAT_032bcb68 + 100,local_78,local_30,2);
  }
  if (!bVar4) {
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50,uVar1);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
  }
  if (!bVar4) {
    _free(local_5c);
    if (7 < local_60) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_74,uVar1);
    }
    local_60 = 7;
    local_64 = 0;
    local_74 = local_74 & 0xffff0000;
  }
  if (!bVar4) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 * __thiscall
FUN_00889cf0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcbff3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxConfigBase::vftable;
  param_1_00[9] = 7;
  param_1_00[8] = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[10] = 0;
  param_1_00[0x12] = 7;
  param_1_00[0x11] = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  *(undefined2 *)(param_1_00 + 0xd) = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  param_1_00[0x13] = 0;
  param_1_00[0x15] = param_5;
  *(undefined *)(param_1_00 + 2) = 1;
  *(undefined *)((int)param_1_00 + 9) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00889da0(int **param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  undefined *puVar3;
  undefined **local_64;
  undefined ***local_48;
  int **local_44;
  undefined local_34 [20];
  int local_20;
  uint uStack_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcc02e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_48;
  ExceptionList = &local_c;
  param_1_00[7] = (int *)0x7;
  param_1_00[6] = (int *)0x0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  param_1_00[8] = (int *)0x0;
  param_1_00[0x10] = (int *)0x7;
  param_1_00[0xf] = (int *)0x0;
  *(undefined2 *)(param_1_00 + 0xb) = 0;
  param_1_00[0x11] = (int *)0x0;
  local_48 = &local_64;
  *(undefined *)(param_1_00 + 0x13) = 0;
  *param_1_00 = param_1;
  local_64 = (undefined **)0x2f;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  local_44 = param_1_00;
  FUN_00852900(local_34);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (local_20 == 0) {
    if (*(int *)(param_2 + 0x14) == 0) goto LAB_00889f06;
    local_64 = (undefined **)&local_48;
    FUN_0081feb2();
    if (local_48 == (undefined ***)0x2f) {
      local_64 = (undefined **)0x889e66;
      FUN_00855e10();
    }
    if (local_20 == 0) goto LAB_00889f06;
  }
  iVar1 = (**(code **)(**param_1_00 + 0x14))();
  if (*(int *)(iVar1 + 0x14) == local_20) {
    local_64 = (undefined **)0x889e8e;
    iVar1 = FUN_00850760();
    if (iVar1 == 0) goto LAB_00889f06;
  }
  *(undefined *)(param_1_00 + 0x13) = 1;
  (**(code **)(**param_1_00 + 0x14))();
  local_64 = (undefined **)0x889eba;
  FUN_00432199();
  local_64 = (undefined **)0x889ec6;
  piVar2 = (int *)FUN_00432231();
  puVar3 = (undefined *)0x0;
  if (*(int *)(*piVar2 + 0x14) != 0) {
    local_64 = (undefined **)&local_48;
    FUN_0081feb2();
    puVar3 = (undefined *)local_48;
  }
  FUN_00432214();
  if (puVar3 != (undefined *)0x2f) {
    local_64 = (undefined **)0x1;
    FID_conflict_append();
  }
  local_64 = (undefined **)0x889f06;
  (**(code **)(**param_1_00 + 0x10))();
LAB_00889f06:
  local_64 = (undefined **)0x889f10;
  _free(local_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    local_64 = (undefined **)&UNK_00889f24;
    FUN_00a3f6a1();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00889f50(int **param_1)

{
  char cVar1;
  int **ppiVar2;
  int **ppiVar3;
  undefined auStack_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bef238;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(char *)(param_1 + 0x13) != '\0') {
    cVar1 = (**(code **)(**param_1 + 0x30))();
    while (cVar1 == '\0') {
      ppiVar2 = (int **)FUN_00852900(auStack_30);
      uStack_4 = 0;
      if (param_1 + 10 != ppiVar2) {
        FID_conflict_assign(ppiVar2);
      }
      uStack_4 = 0xffffffff;
      _free(pvStack_14);
      if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_18 = 7;
      uStack_1c = 0;
      uStack_2c = uStack_2c & 0xffff0000;
      if (param_1[0xf] == (int *)0x0) {
        if (param_1[0x10] == (int *)0x0) {
          FUN_004181eb();
        }
        ppiVar2 = param_1 + 0xb;
        ppiVar3 = ppiVar2;
        if ((int *)0x7 < param_1[0x10]) {
          ppiVar3 = (int **)*ppiVar2;
        }
        *(undefined2 *)ppiVar3 = 0x2f;
        param_1[0xf] = (int *)0x1;
        if ((int *)0x7 < param_1[0x10]) {
          ppiVar2 = (int **)*ppiVar2;
        }
        *(undefined2 *)((int)ppiVar2 + 2) = 0;
      }
      cVar1 = (**(code **)(**param_1 + 0x30))();
    }
  }
  ExceptionList = local_c;
  return;
}



int FUN_0088a080(int param_1,undefined4 param_2)

{
  uint uVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcc079;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  uVar1 = *(uint *)(param_1 + 0x14);
  do {
    if (uVar1 < 2) {
      ExceptionList = local_c;
      return param_1;
    }
    uVar1 = *(uint *)(param_1 + 0x18);
    puVar5 = (undefined4 *)(param_1 + 4);
    puVar6 = puVar5;
    if (7 < uVar1) {
      puVar6 = (undefined4 *)*puVar5;
    }
    iVar4 = *(int *)(param_1 + 0x14) * 2;
    puVar6 = (undefined4 *)(iVar4 + (int)puVar6);
    if (puVar6 == (undefined4 *)0x0) {
LAB_0088a135:
      FUN_00a3fb10(uVar2);
    }
    else {
      puVar3 = puVar5;
      if (7 < uVar1) {
        puVar3 = (undefined4 *)*puVar5;
      }
      if (puVar6 < puVar3) goto LAB_0088a135;
      puVar3 = puVar5;
      if (7 < uVar1) {
        puVar3 = (undefined4 *)*puVar5;
      }
      if ((undefined4 *)(iVar4 + (int)puVar3) < puVar6) goto LAB_0088a135;
    }
    if (param_1 != -4) {
      puVar3 = puVar5;
      if (7 < *(uint *)(param_1 + 0x18)) {
        puVar3 = (undefined4 *)*puVar5;
      }
      if ((undefined4 *)((int)puVar6 - 2U) <=
          (undefined4 *)((int)puVar3 + *(int *)(param_1 + 0x14) * 2)) {
        puVar3 = puVar5;
        if (7 < *(uint *)(param_1 + 0x18)) {
          puVar3 = (undefined4 *)*puVar5;
        }
        if (puVar3 <= (undefined4 *)((int)puVar6 - 2U)) goto LAB_0088a16f;
      }
      FUN_00a3fb10(uVar2);
    }
LAB_0088a16f:
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10(uVar2);
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((short *)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= (short *)((int)puVar6 - 2U)) {
        FUN_00a3fb10();
      }
    }
    if (*(short *)((int)puVar6 - 2U) != 0x2f) {
      ExceptionList = local_c;
      return param_1;
    }
    uVar1 = *(uint *)(param_1 + 0x18);
    puVar6 = puVar5;
    if (7 < uVar1) {
      puVar6 = (undefined4 *)*puVar5;
    }
    iVar4 = *(int *)(param_1 + 0x14) * 2;
    puVar6 = (undefined4 *)(iVar4 + (int)puVar6);
    if (puVar6 == (undefined4 *)0x0) {
LAB_0088a1e6:
      FUN_00a3fb10();
    }
    else {
      puVar3 = puVar5;
      if (7 < uVar1) {
        puVar3 = (undefined4 *)*puVar5;
      }
      if (puVar6 < puVar3) goto LAB_0088a1e6;
      puVar3 = puVar5;
      if (7 < uVar1) {
        puVar3 = (undefined4 *)*puVar5;
      }
      if ((undefined4 *)(iVar4 + (int)puVar3) < puVar6) goto LAB_0088a1e6;
    }
    if (param_1 != -4) {
      puVar3 = puVar5;
      if (7 < *(uint *)(param_1 + 0x18)) {
        puVar3 = (undefined4 *)*puVar5;
      }
      if ((undefined4 *)((int)puVar6 - 2U) <=
          (undefined4 *)((int)puVar3 + *(int *)(param_1 + 0x14) * 2)) {
        if (7 < *(uint *)(param_1 + 0x18)) {
          puVar5 = (undefined4 *)*puVar5;
        }
        if (puVar5 <= (undefined4 *)((int)puVar6 - 2U)) goto LAB_0088a221;
      }
      FUN_00a3fb10();
    }
LAB_0088a221:
    FUN_0086f8f0(local_14,param_1,(int)puVar6 - 2);
    uVar1 = *(uint *)(param_1 + 0x14);
  } while( true );
}



void __thiscall
FUN_0088a260(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint param_9;
  void *param_10;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcc0a8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840990(&param_3,param_1,2);
  FUN_00843020(param_2,param_1,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  FUN_0083fe90(param_1_00,uVar2,local_10,uVar3);
  _free(param_10);
  if (7 < param_9) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_0088a310(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5190;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  FUN_0083fe30(local_30);
  local_4 = 0;
  uVar2 = FUN_00852560(local_54,0,param_2);
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  FID_conflict_assign(uVar2,0,0xffffffff);
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50,uVar1);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_0088a3f0(int param_1,int param_2)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  uint uVar5;
  undefined auStack_bc [3];
  char local_b9;
  int local_b8;
  uint local_b4;
  undefined4 local_b0;
  undefined4 local_ac;
  uint local_a8;
  undefined4 local_a4;
  int local_a0;
  uint local_9c;
  int local_98;
  undefined4 local_94;
  undefined4 local_90;
  undefined4 local_8c;
  int local_88;
  int local_84;
  int local_80;
  int local_7c [2];
  char local_74;
  int local_70 [2];
  char local_68;
  int local_64 [2];
  char local_5c;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcc11a;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_bc;
  ExceptionList = &local_c;
  uVar4 = 0;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_b8 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  local_90 = 1;
  FUN_0081c141(*(undefined4 *)(param_2 + 0x14));
  if (*(int *)(param_2 + 0x14) != 0) {
    do {
      FUN_0081feb2(&local_a8,uVar4);
      if (local_a8 < 0x24) goto LAB_0088a84f;
      if (local_a8 < 0x26) {
        FUN_0081feb2(&local_98,uVar4);
        uVar5 = uVar4;
        if (local_98 == 0x25) {
          local_b4 = 0x25;
        }
        else if (uVar4 == *(int *)(param_2 + 0x14) - 1U) {
          local_b4 = 0;
        }
        else {
          uVar5 = uVar4 + 1;
          FUN_0081feb2(&local_88,uVar5);
          if (local_88 == 0x28) {
            local_b4 = 0x29;
          }
          else if (local_88 == 0x7b) {
            local_b4 = 0x7d;
          }
          else {
            local_b4 = 0;
            uVar5 = uVar4;
          }
        }
        uVar4 = uVar5 + 1;
        if (uVar4 < *(uint *)(param_2 + 0x14)) {
          do {
            FUN_0081feb2(&local_b0,uVar4);
            iVar2 = _iswalnum((wint_t)local_b0);
            if ((iVar2 == 0) && (FUN_0081feb2(&local_80,uVar4), local_80 != 0x5f)) break;
            uVar4 = uVar4 + 1;
          } while (uVar4 < *(uint *)(param_2 + 0x14));
        }
        FUN_00432231(local_70);
        local_4 = 1;
        FUN_00855d60(local_64,uVar5);
        uVar3 = FUN_00855d60(local_7c,1);
        local_4._0_1_ = 3;
        FUN_0088a310(uVar3,(uVar4 - uVar5) + -1);
        if ((local_74 != '\0') && (local_7c[0] != 0)) {
          _free(*(void **)(local_7c[0] + 0x1c));
          if (*(uint *)(local_7c[0] + 0x18) < 8) {
            *(undefined4 *)(local_7c[0] + 0x18) = 7;
            *(undefined4 *)(local_7c[0] + 0x14) = 0;
            *(undefined2 *)(local_7c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_7c[0]);
          }
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(*(undefined4 *)(local_7c[0] + 4));
        }
        if ((local_5c != '\0') && (local_64[0] != 0)) {
          _free(*(void **)(local_64[0] + 0x1c));
          if (*(uint *)(local_64[0] + 0x18) < 8) {
            *(undefined4 *)(local_64[0] + 0x18) = 7;
            *(undefined4 *)(local_64[0] + 0x14) = 0;
            *(undefined2 *)(local_64[0] + 4) = 0;
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_64[0]);
          }
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(*(undefined4 *)(local_64[0] + 4));
        }
        if ((local_68 != '\0') && (local_70[0] != 0)) {
          _free(*(void **)(local_70[0] + 0x1c));
          if (*(uint *)(local_70[0] + 0x18) < 8) {
            *(undefined4 *)(local_70[0] + 0x18) = 7;
            *(undefined4 *)(local_70[0] + 0x14) = 0;
            *(undefined2 *)(local_70[0] + 4) = 0;
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_70[0]);
          }
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(*(undefined4 *)(local_70[0] + 4));
        }
        local_b9 = '\0';
        local_40 = 7;
        local_44 = 0;
        local_54 = local_54 & 0xffff0000;
        local_3c = (void *)0x0;
        local_4 = CONCAT31(local_4._1_3_,8);
        cVar1 = FUN_00895070(local_34,local_58);
        if (cVar1 == '\0') {
          if ((local_b4 != 0x25) && (local_b4 != 0)) {
            FUN_0081feb2(&local_ac,uVar5 - 1);
            FID_conflict_append(1,local_ac);
          }
          FUN_0081feb2(&local_a4,uVar5);
          FID_conflict_append(1,local_a4);
          FID_conflict_append(local_34,0,0xffffffff);
        }
        else {
          FID_conflict_append(local_58,0,0xffffffff);
          local_b9 = '\x01';
        }
        uVar5 = local_b4;
        if ((local_b4 != 0) && (uVar4 != *(uint *)(param_2 + 0x14))) {
          FUN_0081feb2(&local_9c,uVar4);
          if (local_9c == (uVar5 & 0xffff)) {
            if (local_b9 == '\0') {
              FID_conflict_append(1,uVar5 & 0xffff);
            }
            uVar4 = uVar4 + 1;
          }
        }
        uVar4 = uVar4 - 1;
        _free(local_3c);
        if (7 < local_40) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_54);
        }
        local_40 = 7;
        local_44 = 0;
        local_54 = local_54 & 0xffff0000;
        local_4 = local_4 & 0xffffff00;
        _free(local_18);
        if (7 < local_1c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_30);
        }
      }
      else {
        if ((local_a8 == 0x5c) && (uVar4 != *(int *)(param_2 + 0x14) - 1U)) {
          uVar5 = uVar4 + 1;
          FUN_0081feb2(&local_84,uVar5);
          if ((local_84 != 0x25) && (FUN_0081feb2(&local_a0,uVar5), local_a0 != 0x24))
          goto LAB_0088a84f;
          FUN_0081feb2(&local_8c,uVar5);
          uVar4 = uVar5;
          uVar3 = local_8c;
        }
        else {
LAB_0088a84f:
          FUN_0081feb2(&local_94,uVar4);
          uVar3 = local_94;
        }
        FID_conflict_append(1,uVar3);
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < *(uint *)(param_2 + 0x14));
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_0088a8a0(int param_1_00,int param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd7ac1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  if (*(char *)(param_1_00 + 8) == '\0') {
    if (param_1 != param_2) {
      FID_conflict_assign(param_2,0,0xffffffff);
    }
  }
  else {
    iVar2 = FUN_0088a3f0(local_30,param_2,uVar1);
    local_4 = 1;
    if (param_1 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0088a970(int *param_1_00,undefined4 param_1,int param_2)

{
  char cVar1;
  int iVar2;
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\config.cpp",0x9e,"wxConfigBase::Read",&DAT_00d2e1c8,
                   L"wxConfig::Read(): NULL parameter",DAT_0323f878 ^ (uint)&stack0xffffffc8);
    }
  }
  else {
    cVar1 = (**(code **)(*param_1_00 + 0x54))(param_1,param_2);
    if (cVar1 != '\0') {
      iVar2 = FUN_0088a8a0(auStack_30,param_2);
      uStack_4 = 0;
      if (param_2 != iVar2) {
        FID_conflict_assign(iVar2,0,0xffffffff);
      }
      _free(pvStack_14);
      if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_2c);
      }
      ExceptionList = local_c;
      return 1;
    }
  }
  ExceptionList = local_c;
  return 0;
}



char __thiscall FUN_0088aa60(int *param_1_00,undefined4 param_1,int param_2,int param_4)

{
  char cVar1;
  int iVar2;
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9388;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\config.cpp",0x9e,"wxConfigBase::Read",&DAT_00d2e1c8,
                   L"wxConfig::Read(): NULL parameter",DAT_0323f878 ^ (uint)&stack0xffffffc0);
    }
    cVar1 = '\0';
  }
  else {
    cVar1 = (**(code **)(*param_1_00 + 0x54))(param_1,param_2);
    if (cVar1 == '\0') {
      if (*(char *)((int)param_1_00 + 9) != '\0') {
        (**(code **)(*param_1_00 + 0x68))(param_1,param_4);
      }
      if (param_2 != param_4) {
        FID_conflict_assign(param_4,0,0xffffffff);
      }
    }
    iVar2 = FUN_0088a8a0(auStack_30,param_2);
    uStack_4 = 0;
    if (param_2 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  ExceptionList = local_c;
  return cVar1;
}



void FUN_0088ab60(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6f98;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  cVar1 = FUN_0088a970(param_1,local_34);
  if (cVar1 != '\0') {
    cVar1 = FUN_00850d50(param_2);
    if (cVar1 != '\0') {
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30,uVar2);
      }
      goto LAB_0088ac35;
    }
    cVar1 = FUN_00850cb0(param_2);
    if (cVar1 != '\0') {
      FUN_0040159c();
      goto LAB_0088ac35;
    }
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30,uVar2);
  }
LAB_0088ac35:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_0088ac60(int *param_1_00,undefined4 param_1,int param_2)

{
  char cVar1;
  undefined auStack_f0 [12];
  undefined4 uStack_e4;
  char *pcStack_e0;
  undefined4 uStack_dc;
  char *pcStack_d8;
  undefined *puStack_d4;
  wchar_t *pwStack_d0;
  uint uStack_cc;
  int local_c0;
  undefined *puStack_bc;
  undefined auStack_b8 [20];
  undefined auStack_a4 [36];
  undefined auStack_80 [116];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcc181;
  local_c = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_c;
  if (param_2 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pwStack_d0 = L"wxConfig::Read(): NULL parameter";
      puStack_d4 = &DAT_00d2e1c8;
      pcStack_d8 = "wxConfigBase::DoReadBool";
      uStack_dc = 0xda;
      pcStack_e0 = "..\\..\\src\\common\\config.cpp";
      uStack_e4 = 0x88ae08;
      FUN_00840480();
    }
  }
  else {
    pwStack_d0 = (wchar_t *)&local_c0;
    puStack_d4 = (undefined *)param_1;
    pcStack_d8 = (char *)0x88acae;
    cVar1 = (**(code **)(*param_1_00 + 0x58))();
    if (cVar1 != '\0') {
      if ((local_c0 != 0) && (local_c0 != 1)) {
        puStack_bc = auStack_f0;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(2);
        if (cVar1 != '\0') {
          pwStack_d0 = (wchar_t *)PTR_DAT_03236318;
          puStack_d4 = (undefined *)0x88ad00;
          FUN_004325b6();
          pwStack_d0 = L"Invalid value %ld for a boolean key \"%s\" in config file.";
          uStack_4 = 0;
          puStack_d4 = (undefined *)0x88ad19;
          FUN_0043c211();
          pwStack_d0 = (wchar_t *)auStack_a4;
          puStack_d4 = auStack_80;
          uStack_4._0_1_ = 1;
          pcStack_d8 = (char *)0x88ad30;
          pwStack_d0 = (wchar_t *)FUN_00820bf9();
          puStack_d4 = (undefined *)0x88ad3d;
          FUN_008433c0();
          puStack_bc = auStack_f0;
          uStack_4._0_1_ = 2;
          FUN_004325a0(param_1);
          uStack_4._0_1_ = 3;
          FUN_008423d0(2,"..\\..\\src\\common\\config.cpp",0xe5,"wxConfigBase::DoReadBool",
                       &DAT_00d25fa0);
          uStack_4._0_1_ = 5;
          FUN_0088a260(auStack_b8,local_c0);
          uStack_4._0_1_ = 2;
          pwStack_d0 = L"䲍ᐤ蓆젤";
          FUN_00842440();
          uStack_4 = CONCAT31(uStack_4._1_3_,1);
          pwStack_d0 = (wchar_t *)0x88adc1;
          FUN_0081b5bc();
          pwStack_d0 = 
          L"䲍⠤짨띧菿⑼\f锏裀뀇\xeb01茬䰽⍜\x03ⅴ큨틡栀\xe1c8Ò顨틢栀Ú";
          FUN_0040159c();
          pwStack_d0 = (wchar_t *)0x88add3;
          FUN_0040159c();
        }
      }
      *(bool *)param_2 = local_c0 != 0;
      ExceptionList = local_c;
      return 1;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_0088ae30(int param_1,int param_2)

{
  short **ppsVar1;
  uint uVar2;
  char cVar3;
  short **ppsVar4;
  int iVar5;
  short **ppsVar6;
  undefined auStack_128 [4];
  undefined2 local_124;
  undefined4 local_114;
  undefined4 local_110;
  undefined *local_10c;
  undefined auStack_f0 [4];
  short **local_ec;
  int local_e8;
  undefined *local_e4;
  undefined local_e0 [4];
  uint local_dc;
  undefined4 local_cc;
  uint local_c8;
  void *local_c4;
  undefined local_bc [44];
  uint local_90;
  void *local_8c;
  undefined local_34 [4];
  undefined4 local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcc1ef;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_f0;
  ExceptionList = &local_c;
  local_e8 = param_1;
  FUN_00853f60();
  local_1c = 7;
  local_20 = 0;
  local_30 = (uint)local_30._2_2_ << 0x10;
  local_18 = (void *)0x0;
  uVar2 = *(uint *)(param_2 + 0x18);
  local_4 = 0;
  ppsVar1 = (short **)(param_2 + 4);
  local_ec = ppsVar1;
  if (7 < uVar2) {
    local_ec = (short **)*ppsVar1;
  }
  if (local_ec != (short **)0x0) {
    ppsVar4 = ppsVar1;
    if (7 < uVar2) {
      ppsVar4 = (short **)*ppsVar1;
    }
    if (ppsVar4 <= local_ec) {
      ppsVar4 = ppsVar1;
      if (7 < uVar2) {
        ppsVar4 = (short **)*ppsVar1;
      }
      if (local_ec <= (short **)((int)ppsVar4 + *(int *)(param_2 + 0x14) * 2)) goto LAB_0088aef3;
    }
  }
  FUN_00a3fb10();
LAB_0088aef3:
  do {
    uVar2 = *(uint *)(param_2 + 0x18);
    ppsVar4 = ppsVar1;
    if (7 < uVar2) {
      ppsVar4 = (short **)*ppsVar1;
    }
    iVar5 = *(int *)(param_2 + 0x14) * 2;
    ppsVar4 = (short **)((int)ppsVar4 + iVar5);
    if (ppsVar4 == (short **)0x0) {
LAB_0088af30:
      FUN_00a3fb10();
    }
    else {
      ppsVar6 = ppsVar1;
      if (7 < uVar2) {
        ppsVar6 = (short **)*ppsVar1;
      }
      if (ppsVar4 < ppsVar6) goto LAB_0088af30;
      ppsVar6 = ppsVar1;
      if (7 < uVar2) {
        ppsVar6 = (short **)*ppsVar1;
      }
      if ((short **)((int)ppsVar6 + iVar5) < ppsVar4) goto LAB_0088af30;
    }
    if ((param_2 != -4) && (param_2 == 0)) {
      FUN_00a3fb10();
    }
    if (local_ec == ppsVar4) {
LAB_0088afd2:
      local_10c = (undefined *)0x88afe3;
      iVar5 = FUN_008507a0();
      if (iVar5 != 0) {
        local_10c = (undefined *)0x88affc;
        iVar5 = FUN_008507a0();
        if (iVar5 == 0) {
          if (*(int *)(local_e8 + 4) == 0) {
            local_e4 = auStack_128;
            FUN_0043c211(&DAT_00d25fa0);
            cVar3 = FUN_00846b30(2);
            if (cVar3 != '\0') {
              local_10c = (undefined *)0x88b048;
              FUN_004325b6();
              local_4._0_1_ = 1;
              local_10c = (undefined *)0x88b05e;
              FUN_0043c211();
              local_4 = CONCAT31(local_4._1_3_,2);
              iVar5 = FUN_0084a340();
              if (iVar5 == 0) {
                local_10c = (undefined *)0x88b08c;
                FUN_0084d360();
              }
              else {
                local_10c = local_e0;
                local_110 = 0x88b080;
                FUN_0084f210();
              }
              local_10c = (undefined *)0x88b099;
              FUN_008433c0();
              local_e4 = auStack_128;
              local_110 = 7;
              local_114 = 0;
              local_4._0_1_ = 3;
              local_124 = 0;
              FID_conflict_assign(param_2,0,0xffffffff);
              local_10c = (undefined *)0x0;
              local_4._0_1_ = 4;
              FUN_008423d0(2,"..\\..\\src\\common\\config.cpp",0x20e,"wxSplitPath",&DAT_00d25fa0);
              local_4._0_1_ = 6;
              FUN_00848780(local_bc);
              local_4._0_1_ = 3;
              FUN_00842440();
              local_4._0_1_ = 2;
              FUN_0081b5bc();
              local_10c = (undefined *)0x88b13d;
              _free(local_c4);
              if (7 < local_c8) {
                    // WARNING: Subroutine does not return
                local_10c = &UNK_0088b151;
                FUN_00a3f6a1();
              }
              local_c8 = 7;
              local_cc = 0;
              local_dc = local_dc & 0xffff0000;
              local_4 = (uint)local_4._1_3_ << 8;
              local_10c = (undefined *)0x88b178;
              _free(local_8c);
              if (7 < local_90) {
                    // WARNING: Subroutine does not return
                local_10c = &UNK_0088b18c;
                FUN_00a3f6a1();
              }
            }
          }
          else {
            local_10c = (undefined *)((*(int *)(local_e8 + 4) * 0x24 + -0x24) / 0x24);
            local_110 = 0x88b1b6;
            FUN_008543e0();
          }
        }
        else {
          if (local_20 == 0) goto LAB_0088b1e0;
          local_10c = local_34;
          local_110 = 0x88b1d4;
          FUN_00854700();
        }
        FUN_00432156();
      }
LAB_0088b1e0:
      uVar2 = *(uint *)(param_2 + 0x18);
      ppsVar4 = ppsVar1;
      if (7 < uVar2) {
        ppsVar4 = (short **)*ppsVar1;
      }
      iVar5 = *(int *)(param_2 + 0x14) * 2;
      ppsVar4 = (short **)((int)ppsVar4 + iVar5);
      if (ppsVar4 == (short **)0x0) {
LAB_0088b21d:
        FUN_00a3fb10();
      }
      else {
        ppsVar6 = ppsVar1;
        if (7 < uVar2) {
          ppsVar6 = (short **)*ppsVar1;
        }
        if (ppsVar4 < ppsVar6) goto LAB_0088b21d;
        ppsVar6 = ppsVar1;
        if (7 < uVar2) {
          ppsVar6 = (short **)*ppsVar1;
        }
        if ((short **)((int)ppsVar6 + iVar5) < ppsVar4) goto LAB_0088b21d;
      }
      if ((param_2 != -4) && (param_2 == 0)) {
        FUN_00a3fb10();
      }
      if (local_ec == ppsVar4) {
        local_10c = (undefined *)0x88b27e;
        _free(local_18);
        if (7 < local_1c) {
                    // WARNING: Subroutine does not return
          local_10c = &UNK_0088b298;
          FUN_00a3f6a1();
        }
        ExceptionList = local_c;
        ___security_check_cookie_4();
        return;
      }
    }
    else {
      if (param_2 != -4) {
        if (param_2 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_2 + 0x18) < 8) {
          iVar5 = param_2 + 4;
        }
        else {
          iVar5 = *(int *)(param_2 + 4);
        }
        if ((short **)(iVar5 + *(int *)(param_2 + 0x14) * 2) <= local_ec) {
          FUN_00a3fb10();
        }
      }
      if (*(short *)local_ec == 0x2f) goto LAB_0088afd2;
      if (param_2 != -4) {
        if (param_2 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_2 + 0x18) < 8) {
          iVar5 = param_2 + 4;
        }
        else {
          iVar5 = *(int *)(param_2 + 4);
        }
        if ((short **)(iVar5 + *(int *)(param_2 + 0x14) * 2) <= local_ec) {
          FUN_00a3fb10();
        }
      }
      local_10c = (undefined *)0x1;
      local_110 = 0x88afcd;
      FID_conflict_append();
    }
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 8) {
        iVar5 = param_2 + 4;
      }
      else {
        iVar5 = *(int *)(param_2 + 4);
      }
      if ((short **)(iVar5 + *(int *)(param_2 + 0x14) * 2) <= local_ec) {
        FUN_00a3fb10();
      }
    }
    local_ec = (short **)((int)local_ec + 2);
  } while( true );
}



void __thiscall FUN_0088b2d0(int param_1_00,undefined8 param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x70) != 3)) {
    FUN_00840480("..\\..\\src\\common\\cmdline.cpp",0x77,"wxCmdLineOption::Check","type == typ",
                 L"type mismatch in wxCmdLineOption");
  }
  *(undefined *)(param_1_00 + 0x78) = 1;
  *(undefined8 *)(param_1_00 + 0x80) = param_1;
  return;
}



void __thiscall FUN_0088b320(int param_1_00,undefined4 param_1)

{
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    *(undefined4 *)(param_1_00 + 0x88) = param_1;
    *(undefined *)(param_1_00 + 0x78) = 1;
    return;
  }
  if (*(int *)(param_1_00 + 0x70) != 1) {
    FUN_00840480("..\\..\\src\\common\\cmdline.cpp",0x77,"wxCmdLineOption::Check","type == typ",
                 L"type mismatch in wxCmdLineOption");
    *(undefined4 *)(param_1_00 + 0x88) = param_1;
    *(undefined *)(param_1_00 + 0x78) = 1;
    return;
  }
  *(undefined4 *)(param_1_00 + 0x88) = param_1;
  *(undefined *)(param_1_00 + 0x78) = 1;
  return;
}



void __thiscall FUN_0088b390(int param_1_00,undefined4 *param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x70) != 2)) {
    FUN_00840480("..\\..\\src\\common\\cmdline.cpp",0x77,"wxCmdLineOption::Check","type == typ",
                 L"type mismatch in wxCmdLineOption");
  }
  *(undefined4 *)(param_1_00 + 0xb0) = *param_1;
  *(undefined4 *)(param_1_00 + 0xb4) = param_1[1];
  *(undefined *)(param_1_00 + 0x78) = 1;
  return;
}



void FUN_0088b3e0(undefined4 param_1,undefined4 param_2)

{
  FUN_00855070(param_2);
  return;
}



void __fastcall FUN_0088b400(int *param_1)

{
  int iVar1;
  uint uVar2;
  
  iVar1 = *param_1;
  uVar2 = 0;
  if (*(int *)(iVar1 + 0x60) != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar1 + 0x60) <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(iVar1 + 100) + uVar2 * 4);
      *(undefined *)(iVar1 + 0x79) = 0;
      *(undefined *)(iVar1 + 0x78) = 0;
      iVar1 = *param_1;
      uVar2 = uVar2 + 1;
    } while (uVar2 < *(uint *)(iVar1 + 0x60));
  }
  return;
}



uint __thiscall FUN_0088b460(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  
  if (*(int *)(param_1 + 0x14) != 0) {
    uVar1 = *(uint *)(param_1_00 + 0x60);
    uVar3 = 0;
    if (uVar1 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x60) <= uVar3)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        if ((*(int *)(*(int *)(*(int *)(param_1_00 + 100) + uVar3 * 4) + 0x18) ==
             *(int *)(param_1 + 0x14)) && (iVar2 = FUN_00850760(param_1), iVar2 == 0)) {
          return uVar3;
        }
        uVar3 = uVar3 + 1;
      } while (uVar3 < uVar1);
    }
  }
  return 0xffffffff;
}



uint __thiscall FUN_0088b4f0(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  
  uVar1 = *(uint *)(param_1_00 + 0x60);
  uVar3 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x60) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      if ((*(int *)(*(int *)(*(int *)(param_1_00 + 100) + uVar3 * 4) + 0x3c) ==
           *(int *)(param_1 + 0x14)) && (iVar2 = FUN_00850760(param_1), iVar2 == 0)) {
        return uVar3;
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar1);
  }
  return 0xffffffff;
}



int FUN_0088b570(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_0088b460(param_1);
  if ((iVar1 == -1) && (iVar1 = FUN_0088b4f0(param_1), iVar1 == -1)) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0;
    }
    FUN_00840480("..\\..\\src\\common\\cmdline.cpp",0x21e,"wxCmdLineParser::FoundSwitch","i != (-1)"
                 ,L"unknown switch");
    return 0;
  }
  iVar1 = FUN_009cde80(iVar1);
  if (*(char *)(iVar1 + 0x78) == '\0') {
    return 0;
  }
  return (uint)(*(char *)(iVar1 + 0x79) == '\0') * 2 + -1;
}



bool FUN_0088b5f0(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_0088b570(param_1);
  return iVar1 != 0;
}



bool __thiscall FUN_0088b610(int *param_1_00,undefined *param_1)

{
  ushort uVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  
  if (*param_1_00 != -4) {
    if (*param_1_00 == 0) {
      FUN_00a3fb10();
    }
    iVar2 = *param_1_00;
    if (*(uint *)(iVar2 + 0x18) < 8) {
      iVar4 = iVar2 + 4;
    }
    else {
      iVar4 = *(int *)(iVar2 + 4);
    }
    if ((uint)(iVar4 + *(int *)(iVar2 + 0x14) * 2) <= (uint)param_1_00[1]) {
      FUN_00a3fb10();
    }
  }
  uVar1 = *(ushort *)param_1_00[1];
  if (0x7f < uVar1) {
    cVar3 = FUN_00884b40(uVar1,param_1);
    return cVar3 != '\0';
  }
  *param_1 = (char)uVar1;
  return true;
}



char * FUN_0088b680(int param_1)

{
  char cVar1;
  int iVar2;
  char *pcVar3;
  char local_1;
  
  cVar1 = FUN_0088b610(&stack0xfffffffc + 3);
  if (cVar1 == '\0') {
    return (char *)0x0;
  }
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440();
  }
  iVar2 = FUN_00850390(DAT_032bd4d4);
  if (iVar2 == 0) {
    pcVar3 = _strchr((char *)&PTR_02bd3fc0,(int)local_1);
    return pcVar3;
  }
  pcVar3 = _strchr((char *)(*(int *)(param_1 + 4) + iVar2),(int)local_1);
  return pcVar3;
}



void __fastcall FUN_0088b6f0(int param_1)

{
  _free(*(void **)(param_1 + 0xa8));
  if (7 < *(uint *)(param_1 + 0xa4)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x90));
  }
  *(undefined4 *)(param_1 + 0xa4) = 7;
  *(undefined4 *)(param_1 + 0xa0) = 0;
  *(undefined2 *)(param_1 + 0x90) = 0;
  _free(*(void **)(param_1 + 0x68));
  if (7 < *(uint *)(param_1 + 100)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x50));
  }
  *(undefined4 *)(param_1 + 100) = 7;
  *(undefined4 *)(param_1 + 0x60) = 0;
  *(undefined2 *)(param_1 + 0x50) = 0;
  _free(*(void **)(param_1 + 0x44));
  if (7 < *(uint *)(param_1 + 0x40)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x2c));
  }
  *(undefined4 *)(param_1 + 0x40) = 7;
  *(undefined4 *)(param_1 + 0x3c) = 0;
  *(undefined2 *)(param_1 + 0x2c) = 0;
  _free(*(void **)(param_1 + 0x20));
  if (7 < *(uint *)(param_1 + 0x1c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 8));
  }
  *(undefined4 *)(param_1 + 0x18) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 7;
  *(undefined2 *)(param_1 + 8) = 0;
  return;
}



undefined4 __thiscall
FUN_0088b7c0(undefined4 param_1_00,undefined4 param_1,int param_2,undefined2 *param_3)

{
  int iVar1;
  
  if (param_2 != -4) {
    if (param_2 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(param_2 + 0x18) < 8) {
      iVar1 = param_2 + 4;
    }
    else {
      iVar1 = *(int *)(param_2 + 4);
    }
    if ((undefined2 *)(iVar1 + *(int *)(param_2 + 0x14) * 2) <= param_3) {
      FUN_00a3fb10();
    }
  }
  FUN_00412939(param_1,*param_3);
  return param_1_00;
}



undefined4
FUN_0088b820(undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4,char param_5,
            int param_6,undefined4 param_7,char param_8)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcc230;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00840a00(&param_6,param_2,2);
  FUN_00840a00(&param_3,param_2,1);
  uVar4 = FUN_008854f0(uVar3);
  uVar5 = FUN_00884e20();
  uVar5 = FUN_00884e20(uVar5);
  FUN_00853850(param_1,uVar4,uVar5);
  iVar2 = param_6;
  iVar1 = param_3;
  if ((param_5 != '\0') && (param_3 != 0)) {
    _free(*(void **)(param_3 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  if ((param_8 != '\0') && (param_6 != 0)) {
    _free(*(void **)(param_6 + 0x1c));
    if (7 < *(uint *)(iVar2 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar2 + 4));
    }
    *(undefined4 *)(iVar2 + 0x18) = 7;
    *(undefined4 *)(iVar2 + 0x14) = 0;
    *(undefined2 *)(iVar2 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall
FUN_0088b950(undefined4 param_1_00,undefined4 param_1,int param_2,undefined4 param_3,char param_4,
            int param_5,undefined4 param_6,char param_7)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8020;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00840a00(&param_5,param_1,2);
  FUN_00840a00(&param_2,param_1,1);
  uVar4 = FUN_008854f0(uVar3);
  uVar5 = FUN_00884e20();
  uVar5 = FUN_00884e20(uVar5);
  uVar4 = FUN_00853980(param_1_00,uVar4,uVar5);
  iVar2 = param_5;
  iVar1 = param_2;
  if ((param_4 != '\0') && (param_2 != 0)) {
    _free(*(void **)(param_2 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  if ((param_7 != '\0') && (param_5 != 0)) {
    _free(*(void **)(param_5 + 0x1c));
    if (7 < *(uint *)(iVar2 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar2 + 4));
    }
    *(undefined4 *)(iVar2 + 0x18) = 7;
    *(undefined4 *)(iVar2 + 0x14) = 0;
    *(undefined2 *)(iVar2 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  ExceptionList = local_c;
  return uVar4;
}



void __thiscall
FUN_0088ba80(int *param_1_00,undefined4 param_1,int param_2,undefined4 param_3,char param_4,
            int param_5,undefined4 param_7,char param_8)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcc260;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00840a00(&param_5,param_1,2);
  FUN_00840a00(&param_2,param_1,1);
  uVar4 = FUN_008854f0(uVar3);
  iVar1 = *param_1_00;
  uVar5 = FUN_00884e20();
  uVar5 = FUN_00884e20(uVar5);
  (**(code **)(iVar1 + 8))(param_1_00,uVar4,uVar5);
  iVar2 = param_5;
  iVar1 = param_2;
  if ((param_4 != '\0') && (param_2 != 0)) {
    _free(*(void **)(param_2 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  if ((param_8 != '\0') && (param_5 != 0)) {
    _free(*(void **)(param_5 + 0x1c));
    if (7 < *(uint *)(iVar2 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar2 + 4));
    }
    *(undefined4 *)(iVar2 + 0x18) = 7;
    *(undefined4 *)(iVar2 + 0x14) = 0;
    *(undefined2 *)(iVar2 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_0088bbb0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6cd3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 1;
  FUN_0088b7c0(param_3,param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_0088bc30(int param_1_00,int param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x70) != 0)) {
    FUN_00840480("..\\..\\src\\common\\cmdline.cpp",0x77,"wxCmdLineOption::Check","type == typ",
                 L"type mismatch in wxCmdLineOption");
  }
  if (param_1_00 + 0x8c != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  *(undefined *)(param_1_00 + 0x78) = 1;
  return;
}



void __fastcall FUN_0088bc80(int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = *(uint *)(param_1 + 4);
  if (uVar2 != 0) {
    uVar3 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar2 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1 + 8) + uVar3 * 4);
      if (iVar1 != 0) {
        FUN_0088b6f0();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar2 = *(uint *)(param_1 + 4);
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  return;
}



void __fastcall FUN_0088bcf0(int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = *(uint *)(param_1 + 4);
  if (uVar2 != 0) {
    uVar3 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar2 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1 + 8) + uVar3 * 4);
      if (iVar1 != 0) {
        _free(*(void **)(iVar1 + 0x1c));
        if (*(uint *)(iVar1 + 0x18) < 8) {
          *(undefined4 *)(iVar1 + 0x18) = 7;
          *(undefined4 *)(iVar1 + 0x14) = 0;
          *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(iVar1);
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
      }
      uVar2 = *(uint *)(param_1 + 4);
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  return;
}



void __thiscall FUN_0088bd80(int *param_1_00,undefined4 param_1,undefined4 param_2,uint param_3)

{
  int iVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcc28b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(*param_1_00 + 0x6c) != 0) {
    iVar1 = FUN_00a1d330(DAT_0323f878 ^ (uint)&stack0xffffffe8);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((*(byte *)(iVar1 + 0x28) & 4) != 0)) {
      FUN_00840480("..\\..\\src\\common\\cmdline.cpp",0x1f5,"wxCmdLineParser::AddParam",
                   "!(param.flags & wxCMD_LINE_PARAM_MULTIPLE)",
                   L"all parameters after the one with wxCMD_LINE_PARAM_MULTIPLE style will be ignored"
                  );
    }
    if ((((param_3 & 2) == 0) && (PTR_FUN_03235c4c != (undefined *)0x0)) &&
       ((*(byte *)(iVar1 + 0x28) & 2) != 0)) {
      FUN_00840480("..\\..\\src\\common\\cmdline.cpp",0x1fa,"wxCmdLineParser::AddParam",
                   "!(param.flags & wxCMD_LINE_PARAM_OPTIONAL)",
                   L"a required parameter can\'t follow an optional one");
    }
  }
  pvVar2 = operator_new(0x2c);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    pvVar2 = (void *)0x0;
  }
  else {
    *(undefined4 *)((int)pvVar2 + 0x18) = 7;
    *(undefined4 *)((int)pvVar2 + 0x14) = 0;
    *(undefined2 *)((int)pvVar2 + 4) = 0;
    FID_conflict_assign(param_1,0,0xffffffff);
    *(undefined4 *)((int)pvVar2 + 0x1c) = 0;
    *(undefined4 *)((int)pvVar2 + 0x24) = param_2;
    *(uint *)((int)pvVar2 + 0x28) = param_3;
  }
  local_4 = 0xffffffff;
  FUN_0086a400(pvVar2,1);
  ExceptionList = local_c;
  return;
}



void FUN_0088bea0(undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  int unaff_ESI;
  undefined local_12c [4];
  uint local_128;
  undefined4 local_118;
  uint local_114;
  void *local_110;
  undefined local_108 [4];
  undefined4 local_104;
  uint local_f0;
  void *local_ec;
  undefined local_e4 [36];
  undefined local_c0 [36];
  undefined local_9c [36];
  undefined local_78 [36];
  undefined local_54 [36];
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcc321;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffec8;
  ExceptionList = &local_c;
  *(undefined4 *)(unaff_ESI + 0x18) = 7;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined2 *)(unaff_ESI + 4) = 0;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  local_4 = 0;
  switch(param_1) {
  case 1:
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 3;
    FUN_0043c211(&DAT_00d2e5e4);
    local_4 = CONCAT31(local_4._1_3_,4);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      iVar2 = FUN_0084d360(local_e4);
    }
    else {
      iVar2 = FUN_0084f210(local_e4,local_78);
    }
    if (unaff_ESI != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    FUN_0040159c();
    FUN_0040159c();
    break;
  case 2:
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 7;
    FUN_0043c211(&DAT_00d2e5d4);
    local_4 = CONCAT31(local_4._1_3_,8);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      iVar2 = FUN_0084d360(local_9c);
    }
    else {
      iVar2 = FUN_0084f210(local_9c,local_30);
    }
    if (unaff_ESI != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    FUN_0040159c();
    FUN_0040159c();
    break;
  case 3:
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 5;
    FUN_0043c211("double");
    local_4 = CONCAT31(local_4._1_3_,6);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      iVar2 = FUN_0084d360(local_c0);
    }
    else {
      iVar2 = FUN_0084f210(local_c0,local_54);
    }
    if (unaff_ESI != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    FUN_0040159c();
    FUN_0040159c();
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\cmdline.cpp",0x514,"GetTypeName","Assert failure",
                   L"unknown option type",uVar1);
    }
  case 0:
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 1;
    FUN_0043c211(&DAT_00d2e59c);
    local_4 = CONCAT31(local_4._1_3_,2);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      iVar2 = FUN_0084d360(local_12c);
    }
    else {
      iVar2 = FUN_0084f210(local_12c,local_108);
    }
    if (unaff_ESI != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    _free(local_110);
    if (7 < local_114) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_128);
    }
    local_114 = 7;
    local_118 = 0;
    local_128 = local_128 & 0xffff0000;
    _free(local_ec);
    if (7 < local_f0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_104);
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_0088c1d0(int param_1,wchar_t *param_2,int param_3,wchar_t *param_4,wchar_t *param_5)

{
  uint uVar1;
  int iVar2;
  wchar_t *pwVar3;
  int unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcefa9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *(undefined4 *)(unaff_EBX + 0x18) = 7;
  *(undefined4 *)(unaff_EBX + 0x14) = 0;
  *(undefined2 *)(unaff_EBX + 4) = 0;
  *(undefined4 *)(unaff_EBX + 0x1c) = 0;
  local_4 = 0;
  do {
    if ((param_1 != -4) && ((param_1 == 0 || (param_1 != param_3)))) {
      FUN_00a3fb10(uVar1);
    }
    if (param_2 == param_4) {
      ExceptionList = local_c;
      return;
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10(uVar1);
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar2 = param_1 + 4;
      }
      else {
        iVar2 = *(int *)(param_1 + 4);
      }
      if ((wchar_t *)(iVar2 + *(int *)(param_1 + 0x14) * 2) <= param_2) {
        FUN_00a3fb10(uVar1);
      }
    }
    iVar2 = _iswalnum(*param_2);
    if (iVar2 == 0) {
      if (param_1 != -4) {
        if (param_1 == 0) {
          FUN_00a3fb10(uVar1);
        }
        if (*(uint *)(param_1 + 0x18) < 8) {
          iVar2 = param_1 + 4;
        }
        else {
          iVar2 = *(int *)(param_1 + 4);
        }
        if ((wchar_t *)(iVar2 + *(int *)(param_1 + 0x14) * 2) <= param_2) {
          FUN_00a3fb10();
        }
      }
      pwVar3 = _wcschr(param_5,*param_2);
      if (pwVar3 == (wchar_t *)0x0) {
        ExceptionList = local_c;
        return;
      }
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar2 = param_1 + 4;
      }
      else {
        iVar2 = *(int *)(param_1 + 4);
      }
      if ((wchar_t *)(iVar2 + *(int *)(param_1 + 0x14) * 2) <= param_2) {
        FUN_00a3fb10();
      }
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar2 = param_1 + 4;
      }
      else {
        iVar2 = *(int *)(param_1 + 4);
      }
      if ((wchar_t *)(iVar2 + *(int *)(param_1 + 0x14) * 2) <= param_2) {
        FUN_00a3fb10();
      }
    }
    FID_conflict_append(1,*param_2);
    param_2 = param_2 + 1;
  } while( true );
}



void FUN_0088c380(void)

{
  FUN_0088c1d0();
  return;
}



void FUN_0088c3d0(void)

{
  FUN_0088c1d0();
  return;
}



void FUN_0088c420(short **param_1,int param_2)

{
  short sVar1;
  bool bVar2;
  uint uVar3;
  undefined4 ****ppppuVar4;
  short **ppsVar5;
  int iVar6;
  int iVar7;
  short **ppsVar8;
  bool bVar9;
  short sVar10;
  short **ppsVar11;
  int iStack_48;
  short **local_44;
  undefined auStack_3c [4];
  undefined4 ****local_38 [2];
  undefined2 local_30;
  undefined4 uStack_28;
  uint uStack_24;
  void *local_20;
  undefined4 local_1c;
  undefined4 local_18;
  void *pvStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcc371;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&iStack_48;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  local_4 = 0;
  local_44 = param_1;
  local_38[0] = (undefined4 ****)0x0;
  FUN_00853ce0(0);
  local_38[0] = (undefined4 ****)0x1;
  local_1c = 7;
  local_20 = (void *)0x0;
  local_30 = 0;
  local_18 = 0;
  local_4 = 1;
  FUN_004181eb(0x400,0,uVar3);
  uStack_28 = 0;
  ppppuVar4 = local_38[0];
  if (uStack_24 < 8) {
    ppppuVar4 = local_38;
  }
  *(undefined2 *)ppppuVar4 = 0;
  FUN_008478e0(&iStack_48);
  uVar3 = *(uint *)(param_2 + 0x18);
  ppsVar5 = (short **)(param_2 + 4);
  ppsVar11 = ppsVar5;
  if (7 < uVar3) {
    ppsVar11 = (short **)*ppsVar5;
  }
  if (ppsVar11 != (short **)0x0) {
    ppsVar8 = ppsVar5;
    if (7 < uVar3) {
      ppsVar8 = (short **)*ppsVar5;
    }
    if (ppsVar8 <= ppsVar11) {
      if (7 < uVar3) {
        ppsVar5 = (short **)*ppsVar5;
      }
      ppsVar8 = local_44;
      iVar7 = iStack_48;
      if (ppsVar11 <= (short **)((int)ppsVar5 + *(int *)(param_2 + 0x14) * 2)) goto LAB_0088c507;
    }
  }
  FUN_00a3fb10();
  ppsVar8 = local_44;
  iVar7 = iStack_48;
LAB_0088c507:
  while( true ) {
    if ((param_2 != -4) && ((param_2 == 0 || (param_2 != iVar7)))) {
      FUN_00a3fb10();
    }
    if (ppsVar11 == ppsVar8) break;
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 8) {
        iVar6 = param_2 + 4;
      }
      else {
        iVar6 = *(int *)(param_2 + 4);
      }
      if ((short **)(iVar6 + *(int *)(param_2 + 0x14) * 2) <= ppsVar11) {
        FUN_00a3fb10();
      }
    }
    if (*(short *)ppsVar11 != 0x20) {
      if (param_2 != -4) {
        if (param_2 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_2 + 0x18) < 8) {
          iVar6 = param_2 + 4;
        }
        else {
          iVar6 = *(int *)(param_2 + 4);
        }
        if ((short **)(iVar6 + *(int *)(param_2 + 0x14) * 2) <= ppsVar11) {
          FUN_00a3fb10();
        }
      }
      if (*(short *)ppsVar11 != 9) break;
    }
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 8) {
        iVar6 = param_2 + 4;
      }
      else {
        iVar6 = *(int *)(param_2 + 4);
      }
      if ((short **)(iVar6 + *(int *)(param_2 + 0x14) * 2) <= ppsVar11) {
        FUN_00a3fb10();
      }
    }
    ppsVar11 = (short **)((int)ppsVar11 + 2);
  }
  if ((param_2 != -4) && ((param_2 == 0 || (param_2 != iVar7)))) {
    FUN_00a3fb10();
  }
  if (ppsVar11 == ppsVar8) {
    _free(local_20);
    if (uStack_24 < 8) {
      ExceptionList = pvStack_14;
      ___security_check_cookie_4();
      return;
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_38[0]);
  }
  bVar9 = false;
  bVar2 = false;
  sVar10 = 0;
  FUN_00432156();
  do {
    if ((param_2 != -4) && ((param_2 == 0 || (param_2 != iStack_48)))) {
      FUN_00a3fb10();
    }
    if (ppsVar11 == local_44) goto LAB_0088c72e;
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 8) {
        iVar7 = param_2 + 4;
      }
      else {
        iVar7 = *(int *)(param_2 + 4);
      }
      if ((short **)(iVar7 + *(int *)(param_2 + 0x14) * 2) <= ppsVar11) {
        FUN_00a3fb10();
      }
    }
    sVar1 = *(short *)ppsVar11;
    if (param_1 == (short **)0x0) {
      if (sVar1 == 0x22) {
        if (!bVar9) {
          bVar2 = !bVar2;
          goto LAB_0088c6cd;
        }
LAB_0088c6bc:
        bVar9 = false;
      }
      else {
        if ((!bVar2) && ((sVar1 == 0x20 || (sVar1 == 9)))) break;
        if ((bVar9) || (sVar1 != 0x5c)) goto LAB_0088c6bc;
        bVar9 = true;
      }
LAB_0088c6be:
      FID_conflict_append(1,sVar1);
    }
    else {
      if (bVar9) goto LAB_0088c6bc;
      if (bVar2) {
        if (sVar1 == sVar10) {
          bVar2 = false;
        }
        else {
LAB_0088c6a5:
          bVar9 = sVar1 == 0x5c;
          if (!bVar9) goto LAB_0088c6be;
        }
      }
      else {
        if ((sVar1 != 0x27) && (sVar1 != 0x22)) {
          if ((sVar1 != 0x20) && (sVar1 != 9)) goto LAB_0088c6a5;
          break;
        }
        bVar2 = true;
        sVar10 = sVar1;
      }
    }
LAB_0088c6cd:
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 8) {
        iVar7 = param_2 + 4;
      }
      else {
        iVar7 = *(int *)(param_2 + 4);
      }
      if ((short **)(iVar7 + *(int *)(param_2 + 0x14) * 2) <= ppsVar11) {
        FUN_00a3fb10();
      }
    }
    ppsVar11 = (short **)((int)ppsVar11 + 2);
  } while( true );
  if (param_2 != -4) {
    if (param_2 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(param_2 + 0x18) < 8) {
      iVar7 = param_2 + 4;
    }
    else {
      iVar7 = *(int *)(param_2 + 4);
    }
    if ((short **)(iVar7 + *(int *)(param_2 + 0x14) * 2) <= ppsVar11) {
      FUN_00a3fb10();
    }
  }
  ppsVar11 = (short **)((int)ppsVar11 + 2);
LAB_0088c72e:
  FUN_00854700(auStack_3c,1);
  ppsVar8 = local_44;
  iVar7 = iStack_48;
  goto LAB_0088c507;
}



int * __thiscall
FUN_0088c790(int *param_1_00,int param_1,int *param_2,int *param_3,int *param_4,int param_5,
            int param_6)

{
  bool bVar1;
  bool bVar2;
  int iVar3;
  undefined4 uStack_64;
  char *pcStack_60;
  char *pcStack_5c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcc3cf;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  bVar2 = false;
  param_1_00[8] = 0;
  param_1_00[0x10] = 7;
  param_1_00[0xf] = 0;
  *(undefined2 *)(param_1_00 + 0xb) = 0;
  param_1_00[0x11] = 0;
  param_1_00[0x19] = 7;
  param_1_00[0x18] = 0;
  *(undefined2 *)(param_1_00 + 0x14) = 0;
  param_1_00[0x1a] = 0;
  param_1_00[0x29] = 7;
  param_1_00[0x28] = 0;
  *(undefined2 *)(param_1_00 + 0x24) = 0;
  param_1_00[0x2a] = 0;
  local_4 = 3;
  param_1_00[0x2c] = 0;
  param_1_00[0x2d] = -0x80000000;
  if (param_1 == 3) goto LAB_0088c9bd;
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_0088c8c7:
    bVar1 = true;
  }
  else {
    if ((param_2[5] == 0) && (param_3[5] == 0)) {
      pcStack_5c = "!shrt.empty() || !lng.empty()";
      pcStack_60 = "wxCmdLineOption::wxCmdLineOption";
      uStack_64 = 0x55;
      FUN_00840480("..\\..\\src\\common\\cmdline.cpp");
    }
    if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_0088c8c7;
    pcStack_60 = (char *)&pcStack_5c;
    uStack_64 = 0x88c890;
    FUN_008478e0();
    FUN_00847890(&uStack_64);
    iVar3 = FUN_0088c380();
    bVar2 = true;
    bVar1 = false;
    if (*(int *)(iVar3 + 0x14) == param_2[5]) goto LAB_0088c8c7;
  }
  if (bVar2) {
    pcStack_5c = (char *)0x88c8e2;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      pcStack_5c = &UNK_0088c8f6;
      FUN_00a3f6a1();
    }
  }
  bVar2 = false;
  if (!bVar1) {
    pcStack_5c = "GetShortOptionName(shrt.begin(), shrt.end()).Len() == shrt.Len()";
    pcStack_60 = "wxCmdLineOption::wxCmdLineOption";
    uStack_64 = 0x5b;
    FUN_00840480("..\\..\\src\\common\\cmdline.cpp");
  }
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_0088c96c:
    bVar1 = true;
  }
  else {
    pcStack_60 = (char *)&pcStack_5c;
    uStack_64 = 0x88c938;
    FUN_008478e0();
    FUN_00847890(&uStack_64);
    iVar3 = FUN_0088c3d0();
    bVar2 = true;
    bVar1 = false;
    if (*(int *)(iVar3 + 0x14) == param_3[5]) goto LAB_0088c96c;
  }
  if (bVar2) {
    pcStack_5c = (char *)0x88c982;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      pcStack_5c = &UNK_0088c996;
      FUN_00a3f6a1();
    }
  }
  if (!bVar1) {
    pcStack_5c = "GetLongOptionName(lng.begin(), lng.end()).Len() == lng.Len()";
    pcStack_60 = "wxCmdLineOption::wxCmdLineOption";
    uStack_64 = 0x61;
    FUN_00840480("..\\..\\src\\common\\cmdline.cpp");
  }
LAB_0088c9bd:
  *param_1_00 = param_1;
  if (param_1_00 + 1 != param_2) {
    pcStack_5c = (char *)0x0;
    pcStack_60 = (char *)param_2;
    uStack_64 = 0x88c9d6;
    FID_conflict_assign();
  }
  if (param_1_00 + 10 != param_3) {
    pcStack_5c = (char *)0x0;
    pcStack_60 = (char *)param_3;
    uStack_64 = 0x88c9e9;
    FID_conflict_assign();
  }
  if (param_1_00 + 0x13 != param_4) {
    pcStack_5c = (char *)0x0;
    pcStack_60 = (char *)param_4;
    uStack_64 = 0x88c9fd;
    FID_conflict_assign();
  }
  param_1_00[0x1c] = param_5;
  param_1_00[0x1d] = param_6;
  *(undefined *)((int)param_1_00 + 0x79) = 0;
  *(undefined *)(param_1_00 + 0x1e) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_0088ca30(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0088bc80(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_0086a880();
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



void FUN_0088ca90(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0088bcf0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_0086a880();
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



int __fastcall FUN_0088caf0(int param_1)

{
  short *psVar1;
  uint uVar2;
  short *psVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcc42f;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(undefined4 *)(param_1 + 0x40) = 7;
  *(undefined4 *)(param_1 + 0x3c) = 0;
  *(undefined2 *)(param_1 + 0x2c) = 0;
  *(undefined4 *)(param_1 + 0x44) = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_00853ce0(0);
  local_4._0_1_ = 2;
  FUN_0086a600(uVar2);
  local_4._0_1_ = 3;
  FUN_0086a600();
  local_4._0_1_ = 4;
  FUN_00853ce0(0);
  local_4 = CONCAT31(local_4._1_3_,5);
  *(undefined *)(param_1 + 0x24) = 1;
  psVar1 = &DAT_00d2e7b4;
  do {
    psVar3 = psVar1;
    psVar1 = psVar3 + 1;
  } while (*psVar3 != 0);
  FID_conflict_assign(&DAT_00d2e7b4,(int)(psVar3 + -0x6973da) >> 1);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_0088cbc0(undefined4 *param_1)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x84);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    uVar3 = FUN_0088caf0(uVar1);
    *param_1 = uVar3;
    ExceptionList = local_c;
    return;
  }
  *param_1 = 0;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0088cc30(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcc484;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 4;
  FUN_00853f30(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4._0_1_ = 3;
  FUN_0088ca90();
  local_4._0_1_ = 2;
  FUN_0088ca30();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00853f30();
  _free(*(void **)(param_1 + 0x44));
  if (7 < *(uint *)(param_1 + 0x40)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x2c));
  }
  *(undefined4 *)(param_1 + 0x40) = 7;
  *(undefined4 *)(param_1 + 0x3c) = 0;
  *(undefined2 *)(param_1 + 0x2c) = 0;
  _free(*(void **)(param_1 + 0x1c));
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return;
}



void FUN_0088cd10(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  int iVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd98b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    iVar2 = FUN_0088b460(param_1);
    if (iVar2 != -1) {
      FUN_00840480("..\\..\\src\\common\\cmdline.cpp",0x1d0,"wxCmdLineParser::AddSwitch",
                   "m_data->FindOption(shortName) == wxNOT_FOUND",L"duplicate switch",uVar1);
    }
  }
  pvVar3 = operator_new(0xb8);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_0088c790(0,param_1,param_2,param_3,4,param_4);
  }
  local_4 = 0xffffffff;
  FUN_0086a400(uVar4,1);
  ExceptionList = local_c;
  return;
}



void FUN_0088cde0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  uint uVar1;
  int iVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd98b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    iVar2 = FUN_0088b460(param_1);
    if (iVar2 != -1) {
      FUN_00840480("..\\..\\src\\common\\cmdline.cpp",0x1e0,"wxCmdLineParser::AddOption",
                   "m_data->FindOption(shortName) == wxNOT_FOUND",L"duplicate option",uVar1);
    }
  }
  pvVar3 = operator_new(0xb8);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_0088c790(1,param_1,param_2,param_3,param_4,param_5);
  }
  local_4 = 0xffffffff;
  FUN_0086a400(uVar4,1);
  ExceptionList = local_c;
  return;
}



void FUN_0088ceb0(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  bool bVar3;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcc4dd;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x14) == 0)) {
    FUN_00840480("..\\..\\src\\common\\cmdline.cpp",0x206,"wxCmdLineParser::AddUsageText",
                 "!text.empty()",L"text can\'t be empty",DAT_0323f878 ^ (uint)&stack0xffffff98);
  }
  pvVar1 = operator_new(0xb8);
  local_4 = 0;
  bVar3 = pvVar1 == (void *)0x0;
  if (bVar3) {
    uVar2 = 0;
  }
  else {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 2;
    uVar2 = FUN_0088c790(3,local_54,local_30,param_1,4,0);
  }
  if (!bVar3) {
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
  }
  local_4 = 0xffffffff;
  if (!bVar3) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
  }
  FUN_0086a400(uVar2,1);
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0088d040(int *param_1_00,int param_1)

{
  short sVar1;
  ushort *puVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  short *psVar6;
  int *piVar7;
  undefined *puVar8;
  uint uVar9;
  uint uVar10;
  undefined *puVar11;
  undefined4 uVar12;
  int *piStack_1c8;
  char *pcStack_1c4;
  undefined auStack_1a8 [3];
  char local_1a5;
  undefined *local_1a4;
  uint local_1a0;
  int *local_19c;
  undefined local_198 [4];
  undefined *local_194;
  int iStack_190;
  int **local_188 [3];
  undefined *puStack_17c;
  int iStack_178;
  undefined4 local_170;
  int local_16c [6];
  uint local_154;
  void *local_150;
  int local_148;
  int local_c4;
  uint local_c0;
  undefined4 local_b0;
  uint local_ac;
  void *local_a8;
  int local_a0;
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  uint local_78;
  int local_68;
  uint local_64;
  void *local_60;
  int iStack_58;
  undefined4 local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  int local_34;
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcc5e7;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_1a8;
  ExceptionList = &local_c;
  local_170 = 0;
  local_148 = param_1;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  iVar4 = *param_1_00;
  local_4 = 1;
  local_19c = param_1_00;
  if (*(int *)(iVar4 + 0x50) == 0) {
    if (DAT_032bcb68 != 0) {
      pcStack_1c4 = (char *)0x88d0e0;
      piVar3 = (int *)FUN_00841170();
      local_4._0_1_ = 2;
      if (&local_34 != piVar3) {
        pcStack_1c4 = (char *)0x0;
        piStack_1c8 = piVar3;
        FID_conflict_assign();
      }
      local_4 = CONCAT31(local_4._1_3_,1);
      pcStack_1c4 = (char *)0x88d10e;
      _free(local_150);
      if (7 < local_154) {
                    // WARNING: Subroutine does not return
        pcStack_1c4 = &UNK_0088d12a;
        FUN_00a3f6a1();
      }
    }
  }
  else {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(iVar4 + 0x50) == 0)) {
      pcStack_1c4 = "nIndex < m_nCount";
      piStack_1c8 = (int *)0xfaeea4;
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3);
    }
    pcStack_1c4 = *(char **)(iVar4 + 0x54);
    piStack_1c8 = (int *)0x88d171;
    FUN_00432544();
    local_4._0_1_ = 3;
    pcStack_1c4 = (char *)0x88d188;
    piVar3 = (int *)FUN_00856080();
    local_4._0_1_ = 4;
    if (&local_34 != piVar3) {
      pcStack_1c4 = (char *)0x0;
      piStack_1c8 = piVar3;
      FID_conflict_assign();
    }
    pcStack_1c4 = (char *)0x88d1b3;
    _free(local_a8);
    if (7 < local_ac) {
                    // WARNING: Subroutine does not return
      pcStack_1c4 = &UNK_0088d1cd;
      FUN_00a3f6a1();
    }
    local_ac = 7;
    local_b0 = 0;
    local_c0 = local_c0 & 0xffff0000;
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_0043250a();
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_170 = 1;
  pcStack_1c4 = (char *)0x88d227;
  FUN_00853ce0();
  local_4._0_1_ = 5;
  pcStack_1c4 = (char *)0x88d239;
  FUN_00853ce0();
  local_4._0_1_ = 6;
  if (*(int *)(*param_1_00 + 0x3c) != 0) {
    piStack_1c8 = (int *)(*param_1_00 + 0x28);
    pcStack_1c4 = (char *)0x0;
    FID_conflict_append();
    pcStack_1c4 = (char *)0x1;
    piStack_1c8 = (int *)0x88d262;
    FID_conflict_append();
  }
  pcStack_1c4 = (char *)0x88d272;
  FUN_004325b6();
  local_4._0_1_ = 7;
  pcStack_1c4 = (char *)0x88d28b;
  FUN_0043c211();
  local_4 = CONCAT31(local_4._1_3_,8);
  iVar4 = FUN_0084a340();
  if (iVar4 == 0) {
    pcStack_1c4 = (char *)0x88d2bf;
    FUN_0084d360();
  }
  else {
    pcStack_1c4 = (char *)&local_c4;
    piStack_1c8 = (int *)0x88d2b0;
    FUN_0084f210();
  }
  pcStack_1c4 = (char *)0x88d2cf;
  FUN_008433c0();
  local_188[0] = &piStack_1c8;
  local_4._0_1_ = 9;
  FUN_00432231(&piStack_1c8);
  piStack_1c8 = (int *)FUN_00841a20(&local_a0,local_7c);
  pcStack_1c4 = (char *)0x0;
  local_4._0_1_ = 10;
  FID_conflict_append();
  pcStack_1c4 = (char *)0x88d325;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    pcStack_1c4 = &UNK_0088d33e;
    FUN_00a3f6a1();
  }
  local_88 = 7;
  local_8c = 0;
  local_9c = local_9c & 0xffff0000;
  local_4._0_1_ = 8;
  FUN_0081b5bc();
  pcStack_1c4 = (char *)0x88d37e;
  _free(local_a8);
  if (7 < local_ac) {
                    // WARNING: Subroutine does not return
    pcStack_1c4 = &UNK_0088d397;
    FUN_00a3f6a1();
  }
  local_ac = 7;
  local_b0 = 0;
  local_c0 = local_c0 & 0xffff0000;
  local_4 = CONCAT31(local_4._1_3_,6);
  pcStack_1c4 = (char *)0x88d3c8;
  _free(local_150);
  if (7 < local_154) {
                    // WARNING: Subroutine does not return
    pcStack_1c4 = &UNK_0088d3db;
    FUN_00a3f6a1();
  }
  if (*(int *)(*param_1_00 + 0x14) == 0) {
    local_1a0 = 0x2d;
  }
  else {
    pcStack_1c4 = (char *)local_188;
    piStack_1c8 = (int *)0x88d3fb;
    piVar3 = (int *)FUN_0081b542();
    iVar4 = *piVar3;
    puVar2 = (ushort *)piVar3[1];
    if (iVar4 != -4) {
      if (iVar4 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar4 + 0x18) < 8) {
        iVar5 = iVar4 + 4;
      }
      else {
        iVar5 = *(int *)(iVar4 + 4);
      }
      if ((ushort *)(iVar5 + *(int *)(iVar4 + 0x14) * 2) <= puVar2) {
        FUN_00a3fb10();
      }
    }
    local_1a0 = (uint)*puVar2;
    param_1_00 = local_19c;
  }
  local_1a5 = *(char *)(*param_1_00 + 0x24);
  local_188[0] = *(int ***)(*param_1_00 + 0x60);
  local_1a4 = (undefined *)0x0;
  if (local_188[0] != (int **)0x0) {
    do {
      iVar4 = *param_1_00;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(undefined **)(iVar4 + 0x60) <= local_1a4)) {
        pcStack_1c4 = "uiIndex < m_nCount";
        piStack_1c8 = (int *)0xfb202c;
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340);
      }
      piVar3 = *(int **)(*(int *)(iVar4 + 100) + (int)local_1a4 * 4);
      local_64 = 7;
      local_68 = 0;
      local_78 = local_78 & 0xffff0000;
      local_60 = (void *)0x0;
      local_88 = 7;
      local_8c = 0;
      local_9c = local_9c & 0xffff0000;
      local_84 = (void *)0x0;
      local_4._0_1_ = 0xc;
      if (*piVar3 != 3) {
        pcStack_1c4 = (char *)0x1;
        piStack_1c8 = (int *)0x88d4f8;
        FID_conflict_append();
        if ((*(byte *)(piVar3 + 0x1d) & 1) == 0) {
          pcStack_1c4 = (char *)0x1;
          piStack_1c8 = (int *)0x88d509;
          FID_conflict_append();
        }
        if ((*(byte *)(piVar3 + 0x1d) & 0x20) != 0) {
          psVar6 = &DAT_00d2e9dc;
          do {
            sVar1 = *psVar6;
            psVar6 = psVar6 + 1;
          } while (sVar1 != 0);
          pcStack_1c4 = (char *)&DAT_00d2e9dc;
          piStack_1c8 = (int *)0x88d538;
          FID_conflict_assign();
        }
        if (piVar3[6] == 0) {
          if (local_1a5 == '\0') {
            if (piVar3[0xf] == 0) goto LAB_0088d5e6;
            if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_0088d60f;
            uVar12 = 0x4a2;
LAB_0088d602:
            pcStack_1c4 = "Assert failure";
            piStack_1c8 = (int *)0xd2e938;
            FUN_00840480("..\\..\\src\\common\\cmdline.cpp",uVar12);
          }
          else if (piVar3[0xf] == 0) {
LAB_0088d5e6:
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              uVar12 = 0x4a6;
              goto LAB_0088d602;
            }
          }
          else {
            psVar6 = &DAT_00d2e9d4;
            do {
              sVar1 = *psVar6;
              psVar6 = psVar6 + 1;
            } while (sVar1 != 0);
            pcStack_1c4 = (char *)&DAT_00d2e9d4;
            piStack_1c8 = (int *)0x88d5a1;
            FUN_00473ccc();
            pcStack_1c4 = (char *)0x0;
            piStack_1c8 = piVar3 + 10;
            FID_conflict_append();
            pcStack_1c4 = (char *)0x0;
            piStack_1c8 = &local_a0;
            FID_conflict_append();
          }
        }
        else {
          pcStack_1c4 = (char *)0x1;
          piStack_1c8 = (int *)0x88d54c;
          FID_conflict_append();
          pcStack_1c4 = (char *)0x0;
          piStack_1c8 = piVar3 + 1;
          FID_conflict_append();
          pcStack_1c4 = (char *)0x0;
          piStack_1c8 = &local_a0;
          FID_conflict_append();
        }
LAB_0088d60f:
        if (piVar3[6] != 0) {
          psVar6 = &DAT_00d2e8d4;
          do {
            sVar1 = *psVar6;
            psVar6 = psVar6 + 1;
          } while (sVar1 != 0);
          pcStack_1c4 = (char *)&DAT_00d2e8d4;
          piStack_1c8 = (int *)0x88d641;
          FUN_00473ccc();
          pcStack_1c4 = (char *)0x1;
          piStack_1c8 = (int *)0x88d655;
          FID_conflict_append();
          pcStack_1c4 = (char *)0x0;
          piStack_1c8 = piVar3 + 1;
          FID_conflict_append();
        }
        if ((local_1a5 != '\0') && (piVar3[0xf] != 0)) {
          psVar6 = &DAT_00d2e8d4;
          pcStack_1c4 = (char *)psVar6;
          if (local_68 != 0) {
            psVar6 = &DAT_00d2e8cc;
            pcStack_1c4 = (char *)psVar6;
          }
          do {
            sVar1 = *psVar6;
            psVar6 = psVar6 + 1;
          } while (sVar1 != 0);
          piStack_1c8 = (int *)0x88d6b1;
          FUN_00473ccc();
          psVar6 = &DAT_00d2e9d4;
          do {
            sVar1 = *psVar6;
            psVar6 = psVar6 + 1;
          } while (sVar1 != 0);
          pcStack_1c4 = (char *)&DAT_00d2e9d4;
          piStack_1c8 = (int *)0x88d6e1;
          FUN_00473ccc();
          pcStack_1c4 = (char *)0x0;
          piStack_1c8 = piVar3 + 10;
          FID_conflict_append();
        }
        if (*piVar3 != 0) {
          local_ac = 7;
          local_b0 = 0;
          local_c0 = local_c0 & 0xffff0000;
          local_a8 = (void *)0x0;
          local_4._0_1_ = 0xd;
          pcStack_1c4 = (char *)0x88d735;
          piVar7 = (int *)FUN_0088bea0();
          pcStack_1c4 = (char *)0x1;
          local_4._0_1_ = 0xe;
          piStack_1c8 = (int *)0x88d752;
          FID_conflict_append();
          pcStack_1c4 = (char *)0x0;
          piStack_1c8 = piVar7;
          FID_conflict_append();
          pcStack_1c4 = (char *)0x1;
          piStack_1c8 = (int *)0x88d772;
          FID_conflict_append();
          local_4._0_1_ = 0xd;
          pcStack_1c4 = (char *)0x88d784;
          _free(local_150);
          if (7 < local_154) {
                    // WARNING: Subroutine does not return
            pcStack_1c4 = &UNK_0088d798;
            FUN_00a3f6a1();
          }
          pcStack_1c4 = (char *)0x1;
          piStack_1c8 = (int *)0x88d7a6;
          FID_conflict_append();
          pcStack_1c4 = (char *)0x0;
          piStack_1c8 = &local_c4;
          FID_conflict_append();
          pcStack_1c4 = (char *)0x1;
          piStack_1c8 = (int *)0x88d7da;
          FID_conflict_append();
          pcStack_1c4 = (char *)0x0;
          piStack_1c8 = &local_c4;
          FID_conflict_append();
          local_4._0_1_ = 0xc;
          pcStack_1c4 = (char *)0x88d806;
          _free(local_a8);
          if (7 < local_ac) {
                    // WARNING: Subroutine does not return
            pcStack_1c4 = &UNK_0088d820;
            FUN_00a3f6a1();
          }
        }
        if ((*(byte *)(piVar3 + 0x1d) & 1) == 0) {
          pcStack_1c4 = (char *)0x1;
          piStack_1c8 = (int *)0x88d834;
          FID_conflict_append();
        }
      }
      pcStack_1c4 = local_7c;
      piStack_1c8 = (int *)0x88d847;
      FUN_00854700();
      pcStack_1c4 = (char *)(piVar3 + 0x13);
      piStack_1c8 = (int *)0x88d856;
      FUN_00854700();
      pcStack_1c4 = (char *)0x88d863;
      _free(local_84);
      if (7 < local_88) {
                    // WARNING: Subroutine does not return
        pcStack_1c4 = &UNK_0088d881;
        FUN_00a3f6a1();
      }
      local_88 = 7;
      local_8c = 0;
      local_9c = local_9c & 0xffff0000;
      local_4 = CONCAT31(local_4._1_3_,6);
      pcStack_1c4 = (char *)0x88d8b5;
      _free(local_60);
      if (7 < local_64) {
                    // WARNING: Subroutine does not return
        pcStack_1c4 = &UNK_0088d8ce;
        FUN_00a3f6a1();
      }
      local_1a4 = local_1a4 + 1;
      param_1_00 = local_19c;
    } while (local_1a4 < local_188[0]);
  }
  uVar9 = *(uint *)(*local_19c + 0x6c);
  uVar10 = 0;
  if (uVar9 != 0) {
    do {
      iVar4 = *local_19c;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar4 + 0x6c) <= uVar10)) {
        pcStack_1c4 = "uiIndex < m_nCount";
        piStack_1c8 = (int *)0xfb202c;
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340);
      }
      piVar3 = *(int **)(*(int *)(iVar4 + 0x70) + uVar10 * 4);
      pcStack_1c4 = (char *)0x1;
      piStack_1c8 = (int *)0x88d93d;
      FID_conflict_append();
      if ((*(byte *)(piVar3 + 10) & 2) != 0) {
        pcStack_1c4 = (char *)0x1;
        piStack_1c8 = (int *)0x88d94e;
        FID_conflict_append();
      }
      pcStack_1c4 = (char *)0x0;
      piStack_1c8 = piVar3;
      FID_conflict_append();
      if ((*(byte *)(piVar3 + 10) & 4) != 0) {
        psVar6 = &DAT_00d2e8c4;
        do {
          sVar1 = *psVar6;
          psVar6 = psVar6 + 1;
        } while (sVar1 != 0);
        pcStack_1c4 = (char *)&DAT_00d2e8c4;
        piStack_1c8 = (int *)0x88d98c;
        FUN_00473ccc();
      }
      if ((*(byte *)(piVar3 + 10) & 2) != 0) {
        pcStack_1c4 = (char *)0x1;
        piStack_1c8 = (int *)0x88d99d;
        FID_conflict_append();
      }
      uVar10 = uVar10 + 1;
    } while (uVar10 < uVar9);
  }
  pcStack_1c4 = (char *)0x1;
  piStack_1c8 = (int *)0x88d9b1;
  FID_conflict_append();
  puVar11 = (undefined *)0x0;
  local_188[0] = (int **)local_194;
  if (DAT_032bcb68 == 0) {
    piVar3 = (int *)0x0;
  }
  else {
    piVar3 = (int *)FUN_00841320();
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = (uint)local_54._2_2_ << 0x10;
  local_3c = (void *)0x0;
  local_4._0_1_ = 0xf;
  if (piVar3 != (int *)0x0) {
    pcStack_1c4 = local_198;
    piStack_1c8 = local_16c;
    piVar3 = (int *)(**(code **)(*piVar3 + 0x48))();
    local_4._0_1_ = 0x10;
    if (&iStack_58 != piVar3) {
      pcStack_1c4 = (char *)0x0;
      piStack_1c8 = piVar3;
      FID_conflict_assign();
    }
    local_4._0_1_ = 0xf;
    pcStack_1c4 = (char *)0x88da47;
    _free(local_150);
    if (7 < local_154) {
                    // WARNING: Subroutine does not return
      pcStack_1c4 = &UNK_0088da5b;
      FUN_00a3f6a1();
    }
  }
  uVar9 = 0;
  local_1a0 = 0;
  puVar8 = local_194;
  uVar10 = local_1a0;
  if (local_194 != (undefined *)0x0) {
    iVar4 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (puVar8 <= puVar11)) {
        pcStack_1c4 = "nIndex < m_nCount";
        piStack_1c8 = (int *)0xfaeea4;
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3);
        puVar8 = local_194;
      }
      uVar10 = *(uint *)(iStack_190 + 0x14 + iVar4);
      if (uVar9 < uVar10) {
        uVar9 = uVar10;
      }
      puVar11 = puVar11 + 1;
      iVar4 = iVar4 + 0x24;
      uVar10 = uVar9;
    } while (puVar11 < puVar8);
  }
  local_1a0 = uVar10;
  local_1a4 = (undefined *)0x0;
  if (puVar8 != (undefined *)0x0) {
    iVar4 = 0;
    do {
      puVar11 = local_1a4;
      if ((int **)local_1a4 == local_188[0]) {
        pcStack_1c4 = (char *)0x1;
        piStack_1c8 = (int *)0x88dadf;
        FID_conflict_append();
        pcStack_1c4 = (char *)0x0;
        piStack_1c8 = &iStack_58;
        FID_conflict_append();
        puVar8 = local_194;
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (puVar8 <= puVar11)) {
        pcStack_1c4 = "nIndex < m_nCount";
        piStack_1c8 = (int *)0xfaeea4;
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3);
      }
      iVar5 = *(int *)(iStack_190 + 0x14 + iVar4);
      if (iVar5 == 0) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (puStack_17c <= puVar11)) {
          pcStack_1c4 = "nIndex < m_nCount";
          piStack_1c8 = (int *)0xfaeea4;
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3);
        }
        piStack_1c8 = (int *)(iStack_178 + iVar4);
        pcStack_1c4 = (char *)0x0;
        FID_conflict_append();
        pcStack_1c4 = (char *)0x1;
        piStack_1c8 = (int *)0x88db7a;
        FID_conflict_append();
        local_1a4 = puVar11;
      }
      else {
        local_ac = 7;
        local_b0 = 0;
        local_c0 = local_c0 & 0xffff0000;
        local_a8 = (void *)0x0;
        pcStack_1c4 = (char *)(local_1a0 - iVar5);
        local_4._0_1_ = 0x12;
        piStack_1c8 = (int *)0x88dbbf;
        FUN_00412939();
        local_4 = CONCAT31(local_4._1_3_,0x13);
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (puStack_17c <= puVar11)) {
          pcStack_1c4 = "nIndex < m_nCount";
          piStack_1c8 = (int *)0xfaeea4;
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3);
        }
        piVar3 = (int *)(iStack_178 + iVar4);
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_194 <= local_1a4)) {
          pcStack_1c4 = "nIndex < m_nCount";
          piStack_1c8 = (int *)0xfaeea4;
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3);
        }
        piStack_1c8 = (int *)(iStack_190 + iVar4);
        pcStack_1c4 = (char *)0x0;
        FID_conflict_append();
        pcStack_1c4 = (char *)0x0;
        piStack_1c8 = &local_c4;
        FID_conflict_append();
        pcStack_1c4 = (char *)0x1;
        piStack_1c8 = (int *)0x88dc5f;
        FID_conflict_append();
        pcStack_1c4 = (char *)0x0;
        piStack_1c8 = piVar3;
        FID_conflict_append();
        pcStack_1c4 = (char *)0x1;
        piStack_1c8 = (int *)0x88dc75;
        FID_conflict_append();
        local_4._0_1_ = 0xf;
        pcStack_1c4 = (char *)0x88dc8a;
        _free(local_a8);
        if (7 < local_ac) {
                    // WARNING: Subroutine does not return
          pcStack_1c4 = &UNK_0088dca4;
          FUN_00a3f6a1();
        }
      }
      local_1a4 = local_1a4 + 1;
      iVar4 = iVar4 + 0x24;
      puVar8 = local_194;
    } while (local_1a4 < local_194);
  }
  pcStack_1c4 = (char *)0x88dccc;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    pcStack_1c4 = &UNK_0088dcea;
    FUN_00a3f6a1();
  }
  local_54 = local_54 & 0xffff0000;
  local_40 = 7;
  local_44 = 0;
  local_4._0_1_ = 5;
  FUN_00853f30();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00853f30();
  pcStack_1c4 = (char *)0x88dd3c;
  _free(local_18);
  if (local_1c < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  pcStack_1c4 = &UNK_0088dd55;
  FUN_00a3f6a1();
}



void FUN_0088dd90(uint *param_1)

{
  uint *puVar1;
  uint uVar2;
  void **ppvVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  undefined local_1bc [4];
  uint local_1b8;
  undefined4 local_1a8;
  uint local_1a4;
  void *local_1a0;
  undefined local_198 [4];
  uint local_194;
  undefined4 local_184;
  uint local_180;
  void *local_17c;
  undefined local_174 [4];
  uint local_170;
  undefined4 local_160;
  uint local_15c;
  void *local_158;
  undefined local_150 [4];
  uint local_14c;
  undefined4 local_13c;
  uint local_138;
  void *local_134;
  undefined local_12c [4];
  uint local_128;
  undefined4 local_118;
  uint local_114;
  void *local_110;
  undefined local_108 [4];
  uint local_104;
  undefined4 local_f4;
  uint local_f0;
  void *local_ec;
  undefined local_e4 [4];
  uint local_e0;
  undefined4 local_d0;
  uint local_cc;
  void *local_c8;
  undefined local_c0 [4];
  uint local_bc;
  undefined4 local_ac;
  uint local_a8;
  void *local_a4;
  undefined local_9c [4];
  undefined4 local_98;
  uint local_84;
  void *local_80;
  undefined local_78 [4];
  undefined4 local_74;
  uint local_60;
  void *local_5c;
  undefined local_54 [4];
  undefined4 local_50;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcc69b;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xfffffe30;
  uVar2 = *param_1;
  ppvVar3 = &local_c;
  local_c = ExceptionList;
  while (ExceptionList = ppvVar3, uVar2 < 5) {
    switch(uVar2) {
    case 0:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0;
      FUN_0043c211(param_1[3]);
      local_4._0_1_ = 1;
      FUN_0043c211(param_1[2]);
      local_4._0_1_ = 2;
      FUN_0043c211(param_1[1]);
      local_4 = CONCAT31(local_4._1_3_,3);
      iVar5 = FUN_0084a340();
      if (iVar5 == 0) {
        uVar6 = FUN_0084d360(local_174);
      }
      else {
        uVar6 = FUN_0084f210(local_174,local_9c);
      }
      FUN_0088cd10(local_e4,local_12c,uVar6,param_1[5]);
      _free(local_c8);
      if (7 < local_cc) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_e0);
      }
      local_cc = 7;
      local_d0 = 0;
      local_e0 = local_e0 & 0xffff0000;
      _free(local_110);
      if (7 < local_114) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_128);
      }
      local_114 = 7;
      local_118 = 0;
      local_128 = local_128 & 0xffff0000;
      _free(local_158);
      if (7 < local_15c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_170);
      }
      local_15c = 7;
      local_160 = 0;
      local_170 = local_170 & 0xffff0000;
      local_4 = 0xffffffff;
      _free(local_80);
      uVar6 = local_98;
      uVar2 = local_84;
      break;
    case 1:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 4;
      FUN_0043c211(param_1[3]);
      local_4._0_1_ = 5;
      FUN_0043c211(param_1[2]);
      local_4._0_1_ = 6;
      FUN_0043c211(param_1[1]);
      local_4 = CONCAT31(local_4._1_3_,7);
      iVar5 = FUN_0084a340();
      if (iVar5 == 0) {
        uVar6 = FUN_0084d360(local_1bc);
      }
      else {
        uVar6 = FUN_0084f210(local_1bc,local_54);
      }
      FUN_0088cde0(local_108,local_c0,uVar6,param_1[4],param_1[5]);
      _free(local_ec);
      if (7 < local_f0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_104);
      }
      local_f0 = 7;
      local_f4 = 0;
      local_104 = local_104 & 0xffff0000;
      _free(local_a4);
      if (7 < local_a8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_bc);
      }
      local_a8 = 7;
      local_ac = 0;
      local_bc = local_bc & 0xffff0000;
      _free(local_1a0);
      if (7 < local_1a4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_1b8);
      }
      local_1a4 = 7;
      local_1a8 = 0;
      local_1b8 = local_1b8 & 0xffff0000;
      local_4 = 0xffffffff;
      _free(local_38);
      uVar6 = local_50;
      uVar2 = local_3c;
      break;
    case 2:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 8;
      FUN_0043c211(param_1[3]);
      local_4 = CONCAT31(local_4._1_3_,9);
      iVar5 = FUN_0084a340();
      if (iVar5 == 0) {
        uVar6 = FUN_0084d360(local_198);
      }
      else {
        uVar6 = FUN_0084f210(local_198,local_78);
      }
      FUN_0088bd80(uVar6,param_1[4],param_1[5]);
      _free(local_17c);
      if (7 < local_180) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_194);
      }
      local_180 = 7;
      local_184 = 0;
      local_194 = local_194 & 0xffff0000;
      local_4 = 0xffffffff;
      _free(local_5c);
      uVar6 = local_74;
      uVar2 = local_60;
      break;
    case 3:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 10;
      FUN_0043c211(param_1[3]);
      local_4 = CONCAT31(local_4._1_3_,0xb);
      iVar5 = FUN_0084a340();
      if (iVar5 == 0) {
        uVar6 = FUN_0084d360(local_150);
      }
      else {
        uVar6 = FUN_0084f210(local_150,local_30);
      }
      FUN_0088ceb0(uVar6);
      _free(local_134);
      if (7 < local_138) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_14c);
      }
      local_138 = 7;
      local_13c = 0;
      local_14c = local_14c & 0xffff0000;
      local_4 = 0xffffffff;
      _free(local_14);
      uVar6 = local_2c;
      uVar2 = local_18;
      break;
    case 4:
      goto switchD_0088dde0_caseD_4;
    }
    if (7 < uVar2) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uVar6);
    }
    puVar1 = param_1 + 6;
    param_1 = param_1 + 6;
    ppvVar3 = (void **)ExceptionList;
    uVar2 = *puVar1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\cmdline.cpp",0x1c1,"wxCmdLineParser::SetDesc",
                 "Assert failure",L"unknown command line entry type",uVar4);
  }
switchD_0088dde0_caseD_4:
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0088e330(int *param_1_00,char param_1)

{
  short sVar1;
  bool bVar2;
  undefined3 uVar3;
  char cVar4;
  int iVar5;
  undefined4 uVar6;
  undefined8 *puVar7;
  undefined4 *puVar8;
  int *piVar9;
  int iVar10;
  int *piVar11;
  uint uVar12;
  short *psVar13;
  undefined4 *puVar14;
  short *psVar15;
  uint uVar16;
  int iVar17;
  int *piVar18;
  undefined4 *puVar19;
  undefined *puStack_468;
  undefined4 **ppuStack_464;
  undefined4 **ppuStack_460;
  undefined4 *puStack_45c;
  char *pcStack_458;
  undefined4 **local_454;
  undefined4 *local_450;
  undefined *local_44c;
  undefined *puVar20;
  undefined auStack_434 [43];
  char local_409;
  undefined4 **local_408;
  char local_401;
  int *local_400;
  undefined4 **local_3fc;
  char local_3f7;
  char local_3f6;
  char local_3f5;
  uint local_3f4;
  undefined4 **local_3f0;
  uint local_3ec;
  undefined4 **local_3e8;
  uint local_3e4;
  undefined4 *local_3e0;
  undefined4 *local_3dc;
  undefined4 local_3d8;
  uint local_3d4;
  undefined4 local_3c4;
  uint local_3c0;
  void *local_3bc;
  undefined4 local_3b4;
  uint local_3b0;
  undefined4 local_3a0;
  uint local_39c;
  void *local_398;
  uint local_390;
  uint local_38c;
  undefined4 local_388;
  uint local_384;
  undefined4 local_374;
  uint local_370;
  void *local_36c;
  uint local_364;
  undefined4 *local_360;
  undefined4 *local_35c;
  undefined4 *local_358;
  undefined4 *local_354;
  undefined4 *local_350;
  undefined4 *local_34c;
  undefined4 local_348;
  undefined4 local_344;
  undefined4 local_33c;
  undefined4 local_338;
  undefined4 *local_330;
  undefined4 local_32c [9];
  undefined4 local_308;
  undefined4 local_304;
  undefined4 local_300;
  undefined4 local_2fc;
  undefined4 local_2f8;
  undefined4 local_2f4;
  undefined4 local_2f0;
  undefined4 local_2ec;
  undefined4 local_2e8;
  undefined4 local_2e4;
  undefined4 local_2e0;
  undefined4 local_2dc;
  undefined8 local_2d8;
  undefined local_2cc [4];
  int local_2c8 [2];
  char local_2c0;
  undefined local_2bc [36];
  undefined local_298 [36];
  undefined4 local_274 [9];
  undefined local_250 [8];
  undefined4 local_248 [2];
  undefined local_240 [8];
  undefined4 local_238 [2];
  undefined local_230 [8];
  undefined local_228 [8];
  undefined local_220 [8];
  undefined local_218 [8];
  undefined local_210 [8];
  undefined local_208 [8];
  undefined local_200 [8];
  undefined local_1f8 [8];
  undefined local_1f0 [8];
  undefined local_1e8 [8];
  undefined local_1e0 [8];
  undefined local_1d8 [8];
  undefined local_1d0 [8];
  undefined local_1c8 [36];
  undefined local_1a4 [36];
  undefined local_180 [36];
  undefined local_15c [36];
  undefined local_138 [36];
  undefined4 local_114;
  uint local_110;
  int local_100;
  uint local_fc;
  void *local_f8;
  undefined4 local_f0;
  uint local_ec;
  int local_dc;
  uint local_d8;
  void *local_d4;
  undefined4 local_cc;
  undefined4 local_c8;
  uint local_b8;
  uint local_b4;
  void *local_b0;
  uint local_a4;
  int local_94;
  uint local_90;
  void *local_8c;
  uint local_84;
  void *local_4c;
  undefined *puStack_48;
  undefined4 local_44;
  
  puStack_48 = &LAB_00bcc9ec;
  local_4c = ExceptionList;
  local_84 = DAT_0323f878 ^ (uint)auStack_434;
  ExceptionList = &local_4c;
  local_3e4 = 0;
  local_364 = *(uint *)(*param_1_00 + 0x6c);
  local_3f5 = '\x01';
  local_409 = '\x01';
  local_401 = '\0';
  local_3f6 = '\0';
  local_390 = 0;
  local_90 = 7;
  local_94 = 0;
  local_a4 = local_a4 & 0xffff0000;
  local_8c = (void *)0x0;
  local_44 = 0;
  _local_44c = CONCAT44(0x88e3d5,local_44c);
  local_400 = param_1_00;
  FUN_0088b400();
  local_b4 = 7;
  local_b8 = 0;
  local_c8 = (undefined4 *)((uint)local_c8._2_2_ << 0x10);
  local_b0 = (void *)0x0;
  local_3f4 = *(uint *)(*param_1_00 + 0x50);
  local_44 = CONCAT31(local_44._1_3_,1);
  local_3ec = 1;
  do {
    uVar12 = local_3ec;
    if (local_3f4 <= local_3ec) {
      if (local_409 != '\0') {
        local_38c = *(uint *)(*local_400 + 0x60);
        local_3f4 = 0;
        goto LAB_0088fc08;
      }
      break;
    }
    iVar5 = *local_400;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar5 + 0x50) <= local_3ec)) {
      _local_44c = 0xfaee4800faee90;
      local_450 = (undefined4 *)0xfaeea4;
      local_454 = (undefined4 **)0xb3;
      pcStack_458 = "d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h";
      puStack_45c = (undefined4 *)0x88e453;
      FUN_00840480();
    }
    local_3e8 = (undefined4 **)(uVar12 * 0x24);
    if (&local_cc != (undefined4 *)((int)local_3e8 + *(int *)(iVar5 + 0x54))) {
      _local_44c = 0xffffffff00000000;
      local_454 = (undefined4 **)0x88e47b;
      local_450 = (undefined4 *)((int)local_3e8 + *(int *)(iVar5 + 0x54));
      FID_conflict_assign();
    }
    _local_44c = 0xd2e9d40088e48c;
    iVar5 = FUN_008507a0();
    if (iVar5 == 0) {
      local_3f5 = '\0';
    }
    else {
      if ((local_3f5 == '\0') || (local_b8 < 2)) {
LAB_0088e50d:
        bVar2 = false;
      }
      else {
        _local_44c = CONCAT44(local_2c8,0x88e4bd);
        uVar6 = FUN_00432231();
        local_3e4 = local_3e4 | 1;
        _local_44c = ZEXT48(local_1e0);
        local_44 = CONCAT31(local_44._1_3_,2);
        local_450 = (undefined4 *)0x88e4e1;
        puVar14 = (undefined4 *)FUN_0081b542();
        local_2e0 = *puVar14;
        local_2dc = puVar14[1];
        _local_44c = CONCAT44(&local_2e0,uVar6);
        local_450 = (undefined4 *)0x88e502;
        iVar5 = FUN_0088b680();
        if (iVar5 == 0) goto LAB_0088e50d;
        bVar2 = true;
      }
      uVar16 = local_364;
      uVar12 = local_390;
      local_44 = 1;
      if ((((local_3e4 & 1) != 0) && (local_3e4 = local_3e4 & 0xfffffffe, local_2c0 != '\0')) &&
         (local_2c8[0] != 0)) {
        _local_44c = CONCAT44(*(void **)(local_2c8[0] + 0x1c),0x88e544);
        _free(*(void **)(local_2c8[0] + 0x1c));
        if (7 < *(uint *)(local_2c8[0] + 0x18)) {
          _local_44c = CONCAT44(*(undefined4 *)(local_2c8[0] + 4),&UNK_0088e556);
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        *(undefined4 *)(local_2c8[0] + 0x18) = 7;
        *(undefined4 *)(local_2c8[0] + 0x14) = 0;
        *(undefined2 *)(local_2c8[0] + 4) = 0;
        _local_44c = CONCAT44(local_2c8[0],&UNK_0088e573);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if (bVar2) {
        local_d8 = 7;
        local_dc = 0;
        local_ec = local_ec & 0xffff0000;
        local_d4 = (void *)0x0;
        piVar18 = (int *)0xffffffff;
        local_44._1_3_ = 0;
        uVar3 = local_44._1_3_;
        local_44._0_1_ = 3;
        local_44._1_3_ = 0;
        if (local_b8 < 3) {
LAB_0088ea95:
          local_44._1_3_ = uVar3;
          local_3f7 = '\0';
          if (local_b4 < 8) {
            puVar14 = &local_c8;
LAB_0088eab7:
            puVar8 = local_c8;
            if (local_b4 < 8) {
              puVar8 = &local_c8;
            }
            if (puVar14 < puVar8) goto LAB_0088eae3;
            puVar8 = local_c8;
            if (local_b4 < 8) {
              puVar8 = &local_c8;
            }
            if ((undefined4 *)((int)puVar8 + local_b8 * 2) < puVar14) goto LAB_0088eae3;
          }
          else {
            puVar14 = local_c8;
            if (local_c8 != (undefined4 *)0x0) goto LAB_0088eab7;
LAB_0088eae3:
            _local_44c = CONCAT44(0x88eae8,local_44c);
            FUN_00a3fb10();
          }
          local_358 = &local_cc;
          _local_44c = 0x10088eb0b;
          local_354 = puVar14;
          FUN_004226c0();
          _local_44c = CONCAT44(local_1d8,0x88eb1f);
          puVar7 = (undefined8 *)FUN_0081b397();
          _local_44c = *puVar7;
          local_408 = &local_454;
          local_454 = (undefined4 **)local_358;
          local_450 = local_354;
          pcStack_458 = (char *)0x88eb5a;
          puVar14 = (undefined4 *)FUN_0088c380();
          local_44._0_1_ = 0x11;
          if (&local_f0 != puVar14) {
            _local_44c = 0xffffffff00000000;
            local_454 = (undefined4 **)0x88eb79;
            local_450 = puVar14;
            FID_conflict_assign();
          }
          local_44._0_1_ = 3;
          _local_44c = CONCAT44(local_f8,0x88eb8e);
          _free(local_f8);
          piVar11 = local_400;
          iVar5 = local_dc;
          if (7 < local_fc) {
            _local_44c = CONCAT44(local_110,&UNK_0088eba8);
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          do {
            if (iVar5 == 0) {
              _local_44c = CONCAT44(PTR_DAT_03236318,0x88ee22);
              local_408 = (undefined4 **)piVar18;
              FUN_004325b6();
              local_44._0_1_ = 0x12;
              _local_44c = 0xd2ecdc0088ee3b;
              FUN_0043c211();
              local_44 = CONCAT31(local_44._1_3_,0x13);
              _local_44c = CONCAT44(0x88ee48,local_44c);
              iVar5 = FUN_0084a340();
              if (iVar5 == 0) {
                _local_44c = CONCAT44(&local_114,0x88ee72);
                uVar6 = FUN_0084d360();
              }
              else {
                _local_44c = CONCAT44(&local_3b4,&local_114);
                local_450 = (undefined4 *)0x88ee63;
                uVar6 = FUN_0084f210();
              }
              _local_44c = CONCAT44(uVar6,0x88ee82);
              FUN_008433c0();
              local_3fc = &local_450;
              local_454 = &local_450;
              local_44._0_1_ = 0x14;
              pcStack_458 = (char *)0x88eea0;
              FUN_00432231();
              local_454 = (undefined4 **)&local_388;
              pcStack_458 = (char *)&local_3d8;
              puStack_45c = (undefined4 *)0x88eeb2;
              local_450 = (undefined4 *)FUN_00841a20();
              _local_44c = 0xffffffff00000000;
              local_44._0_1_ = 0x15;
              local_454 = (undefined4 **)0x88eece;
              FID_conflict_append();
              _local_44c = 0xa00000001;
              local_450 = (undefined4 *)0x88eede;
              FID_conflict_append();
              _local_44c = CONCAT44(local_3bc,0x88eeeb);
              _free(local_3bc);
              if (7 < local_3c0) {
                _local_44c = CONCAT44(local_3d4,&UNK_0088ef02);
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
              local_3c0 = 7;
              local_3c4 = 0;
              local_3d4 = local_3d4 & 0xffff0000;
              local_44._0_1_ = 0x13;
              _local_44c = CONCAT44(0x88ef36,local_44c);
              FUN_0081b5bc();
              _local_44c = CONCAT44(local_f8,0x88ef43);
              _free(local_f8);
              if (7 < local_fc) {
                _local_44c = CONCAT44(local_110,&UNK_0088ef5d);
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
              local_fc = 7;
              local_100 = 0;
              local_110 = local_110 & 0xffff0000;
              local_44._0_1_ = 3;
              _local_44c = CONCAT44(local_398,0x88ef95);
              _free(local_398);
              iVar5 = 0;
              piVar9 = (int *)local_408;
              if (7 < local_39c) {
                _local_44c = CONCAT44(local_3b0,&UNK_0088efb3);
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
              break;
            }
            _local_44c = CONCAT44(iVar5,&local_114);
            local_450 = (undefined4 *)0x88ebd3;
            uVar6 = FUN_008527e0();
            local_44._0_1_ = 0x16;
            _local_44c = CONCAT44(uVar6,0x88ebe3);
            piVar18 = (int *)FUN_0088b460();
            local_44._0_1_ = 3;
            _local_44c = CONCAT44(local_f8,0x88ebfa);
            _free(local_f8);
            if (7 < local_fc) {
              _local_44c = CONCAT44(local_110,&UNK_0088ec14);
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1();
            }
            iVar5 = iVar5 + -1;
            piVar9 = piVar18;
          } while (piVar18 == (int *)0xffffffff);
          local_408 = (undefined4 **)piVar9;
          iVar17 = iVar5 + 1;
          if (piVar18 != (int *)0xffffffff) {
            if (iVar17 != local_dc) {
              _local_44c = CONCAT44(iVar17,local_32c);
              local_450 = (undefined4 *)0x88ec4d;
              puVar14 = (undefined4 *)FUN_008527e0();
              local_44._0_1_ = 0x17;
              if (&local_f0 != puVar14) {
                _local_44c = 0xffffffff00000000;
                local_454 = (undefined4 **)0x88ec6a;
                local_450 = puVar14;
                FID_conflict_assign();
              }
              local_44._0_1_ = 3;
              _local_44c = CONCAT44(0x88ec7e,local_44c);
              FUN_0040159c();
              _local_44c = CONCAT44(piVar18,0x88ec89);
              piVar9 = (int *)FUN_009cde80();
              if (*piVar9 == 0) {
                _local_44c = CONCAT44(piVar18,0x88ec9d);
                iVar10 = FUN_009cde80();
                if ((*(byte *)(iVar10 + 0x74) & 0x20) != 0) {
                  puVar20 = (undefined *)0x2d;
                  local_450 = local_238;
                  local_454 = (undefined4 **)0x88ecba;
                  local_44c = (undefined *)iVar17;
                  FUN_0081b5a8();
                  _local_44c = CONCAT44(puVar20,0x88ecc1);
                  cVar4 = FUN_0086f990();
                  if (cVar4 != '\0') {
                    iVar17 = iVar5 + 2;
                  }
                }
                _local_44c = ZEXT48(local_210);
                local_450 = (undefined4 *)0x88ecdc;
                puVar14 = (undefined4 *)FUN_0081b542();
                local_450 = (undefined4 *)*puVar14;
                _local_44c = CONCAT44(1,puVar14[1]);
                local_454 = (undefined4 **)0x88ecf1;
                FUN_0088bbb0();
                _local_44c = CONCAT44(0xffffffff,iVar17 + 1);
                local_450 = local_32c;
                local_44._0_1_ = 0x18;
                local_454 = (undefined4 **)0x88ed15;
                local_450 = (undefined4 *)FUN_00852560();
                _local_44c = 0xffffffff00000000;
                local_44._0_1_ = 0x19;
                local_454 = (undefined4 **)0x88ed2e;
                FID_conflict_append();
                local_44._0_1_ = 0x18;
                _local_44c = CONCAT44(0x88ed42,local_44c);
                FUN_0040159c();
                _local_44c = CONCAT44(&local_114,
                                      (undefined *)
                                      ((int)local_3e8 + *(int *)(*piVar11 + 0x54) + 0x24));
                local_450 = (undefined4 *)0x88ed60;
                FUN_008546b0();
                local_3f4 = local_3f4 + 1;
                _local_44c = CONCAT44(iVar17 + 1,local_32c);
                local_450 = (undefined4 *)0x88ed79;
                puVar14 = (undefined4 *)FUN_008527e0();
                local_44._0_1_ = 0x1a;
                if (&local_cc != puVar14) {
                  _local_44c = 0xffffffff00000000;
                  local_454 = (undefined4 **)0x88ed96;
                  local_450 = puVar14;
                  FID_conflict_assign();
                }
                _local_44c = CONCAT44(0x88eda2,local_44c);
                FUN_0040159c();
                goto LAB_0088eda2;
              }
            }
LAB_0088edb6:
            iVar5 = local_dc;
            if (piVar18 != (int *)0xffffffff) {
              _local_44c = CONCAT44(local_220,0x88efd6);
              piVar18 = (int *)FUN_0081b376();
              local_360 = (undefined4 *)*piVar18;
              local_35c = (undefined4 *)piVar18[1];
              _local_44c = 0x10088eff7;
              FUN_004226c0();
              local_350 = local_360;
              local_34c = local_35c;
              _local_44c = CONCAT44(iVar5,0x88f020);
              FUN_004226c0();
              puVar19 = local_34c;
              puVar8 = local_350;
              local_3e0 = local_350;
              local_3dc = local_34c;
              _local_44c = CONCAT44(local_1f8,0x88f04a);
              piVar18 = (int *)FUN_0081b397();
              local_330 = (undefined4 *)piVar18[1];
              puVar14 = (undefined4 *)*piVar18;
              if (local_3f7 != '\0') {
                _local_44c = CONCAT44(0x88f066,local_44c);
                FUN_00847800();
                puVar8 = local_3e0;
                puVar19 = local_3dc;
              }
              _local_44c = CONCAT44(local_408,0x88f081);
              piVar18 = (int *)FUN_009cde80();
              local_408 = (undefined4 **)piVar18;
              if (*piVar18 == 0) {
                if ((*(byte *)(piVar18 + 0x1d) & 0x20) == 0) {
LAB_0088f10f:
                  bVar2 = false;
                  _local_44c = CONCAT44(local_1d0,0x88f125);
                  puVar14 = (undefined4 *)FUN_0081b397();
                  local_2f8 = *puVar14;
                  local_2f4 = puVar14[1];
                  _local_44c = CONCAT44(&local_2f8,0x88f149);
                  cVar4 = FUN_008477d0();
                  if (cVar4 != '\0') {
                    _local_44c = CONCAT44(PTR_DAT_03236318,0x88f15d);
                    FUN_004325b6();
                    local_44._0_1_ = 0x1b;
                    _local_44c = 0xd2ecac0088f176;
                    FUN_0043c211();
                    _local_44c = CONCAT44(&local_3d8,&local_114);
                    local_44._0_1_ = 0x1c;
                    local_450 = (undefined4 *)0x88f190;
                    uVar6 = FUN_00820bf9();
                    _local_44c = CONCAT44(uVar6,0x88f1a0);
                    FUN_008433c0();
                    local_3fc = &local_450;
                    local_454 = &local_450;
                    local_44._0_1_ = 0x1d;
                    pcStack_458 = (char *)0x88f1be;
                    FUN_00432231();
                    local_454 = (undefined4 **)&local_388;
                    pcStack_458 = (char *)local_32c;
                    puStack_45c = (undefined4 *)0x88f1d3;
                    local_450 = (undefined4 *)FUN_00841a20();
                    _local_44c = 0xffffffff00000000;
                    local_44._0_1_ = 0x1e;
                    local_454 = (undefined4 **)0x88f1ef;
                    FID_conflict_append();
                    _local_44c = 0xa00000001;
                    local_450 = (undefined4 *)0x88f1ff;
                    FID_conflict_append();
                    _local_44c = CONCAT44(0x88f20b,local_44c);
                    FUN_0040159c();
                    local_44._0_1_ = 0x1c;
                    goto LAB_0088f329;
                  }
                }
                else {
                  _local_44c = CONCAT44(local_228,0x88f0aa);
                  puVar14 = (undefined4 *)FUN_0081b397();
                  local_2e8 = *puVar14;
                  local_2e4 = puVar14[1];
                  _local_44c = CONCAT44(&local_2e8,0x88f0ce);
                  cVar4 = FUN_008477d0();
                  if (cVar4 == '\0') goto LAB_0088f10f;
                  _local_44c = CONCAT44(local_2cc,0x88f0e3);
                  piVar11 = (int *)FUN_00847840();
                  if (*piVar11 != 0x2d) goto LAB_0088f10f;
                  bVar2 = true;
                }
                *(undefined *)(piVar18 + 0x1e) = 1;
                if (bVar2) {
                  *(undefined *)((int)piVar18 + 0x79) = 1;
                }
                if ((*(byte *)(piVar18 + 0x1d) & 8) != 0) {
                  local_401 = '\x01';
                  local_409 = '\0';
                }
              }
              else {
                if ((puVar8 != (undefined4 *)0xfffffffc) &&
                   ((puVar8 == (undefined4 *)0x0 || (puVar8 != puVar14)))) {
                  _local_44c = CONCAT44(0x88f22a,local_44c);
                  FUN_00a3fb10();
                }
                if (puVar19 == local_330) {
LAB_0088f36a:
                  uVar12 = local_3ec + 1;
                  local_3ec = uVar12;
                  if (uVar12 == local_3f4) {
                    _local_44c = CONCAT44(PTR_DAT_03236318,0x88f38f);
                    FUN_004325b6();
                    local_44._0_1_ = 0x1f;
                    _local_44c = 0xd2ec600088f3a8;
                    FUN_0043c211();
                    _local_44c = CONCAT44(local_298,local_2bc);
                    local_44._0_1_ = 0x20;
                    local_450 = (undefined4 *)0x88f3c5;
                    uVar6 = FUN_00820bf9();
                    _local_44c = CONCAT44(uVar6,0x88f3d5);
                    FUN_008433c0();
                    local_3fc = &local_450;
                    local_454 = &local_450;
                    local_44._0_1_ = 0x21;
                    pcStack_458 = (char *)0x88f3f3;
                    FUN_00432231();
                    local_454 = (undefined4 **)&local_3b4;
                    pcStack_458 = (char *)local_274;
                    puStack_45c = (undefined4 *)0x88f408;
                    local_450 = (undefined4 *)FUN_00841a20();
                    _local_44c = 0xffffffff00000000;
                    local_44._0_1_ = 0x22;
                    local_454 = (undefined4 **)0x88f424;
                    FID_conflict_append();
                    _local_44c = 0xa00000001;
                    local_450 = (undefined4 *)0x88f434;
                    FID_conflict_append();
                    _local_44c = CONCAT44(0x88f440,local_44c);
                    FUN_0040159c();
                    local_44._0_1_ = 0x20;
                    _local_44c = CONCAT44(0x88f454,local_44c);
                    FUN_0081b5bc();
                    _local_44c = CONCAT44(0x88f460,local_44c);
                    FUN_0040159c();
                    _local_44c = CONCAT44(0x88f46c,local_44c);
                    FUN_0040159c();
                    local_409 = '\0';
                  }
                  else {
                    puVar20 = local_218;
                    local_450 = (undefined4 *)0x88f491;
                    local_44c = (undefined *)uVar12;
                    thunk_FUN_004325d6();
                    _local_44c = CONCAT44(puVar20,0x88f498);
                    piVar18 = (int *)FUN_0081b376();
                    puVar8 = (undefined4 *)*piVar18;
                    puVar19 = (undefined4 *)piVar18[1];
                    puVar20 = local_1e8;
                    local_450 = (undefined4 *)0x88f4b4;
                    local_44c = (undefined *)uVar12;
                    thunk_FUN_004325d6();
                    _local_44c = CONCAT44(puVar20,0x88f4bb);
                    piVar18 = (int *)FUN_0081b397();
                    local_330 = (undefined4 *)piVar18[1];
                    puVar14 = (undefined4 *)*piVar18;
LAB_0088f4c7:
                    if (local_409 != '\0') {
                      _local_44c = CONCAT44(local_330,puVar14);
                      local_3fc = &local_454;
                      pcStack_458 = (char *)0x88f501;
                      local_454 = (undefined4 **)puVar8;
                      local_450 = puVar19;
                      FUN_00852250();
                      local_44._0_1_ = 0x27;
                      switch(local_408[0x1c]) {
                      case (undefined4 *)0x1:
                        _local_44c = CONCAT44(10,&local_38c);
                        local_450 = (undefined4 *)0x88f536;
                        cVar4 = FUN_00850950();
                        if (cVar4 == '\0') {
                          _local_44c = CONCAT44(PTR_DAT_03236318,0x88f562);
                          FUN_004325b6();
                          local_44._0_1_ = 0x28;
                          _local_44c = 0xd2ec280088f57b;
                          FUN_0043c211();
                          _local_44c = CONCAT44(local_2bc,local_298);
                          local_44._0_1_ = 0x29;
                          local_450 = (undefined4 *)0x88f598;
                          uVar6 = FUN_00820bf9();
                          _local_44c = CONCAT44(uVar6,0x88f5a8);
                          FUN_008433c0();
                          puVar20 = (undefined *)0xa;
                          local_3fc = &local_454;
                          pcStack_458 = (char *)&local_454;
                          local_44._0_1_ = 0x2a;
                          puStack_45c = (undefined4 *)0x88f5c8;
                          FUN_00432231();
                          local_3fc = &ppuStack_460;
                          ppuStack_464 = &ppuStack_460;
                          puStack_468 = (undefined *)0x88f5de;
                          FUN_00432231();
                          ppuStack_464 = (undefined4 **)&local_3b4;
                          puStack_468 = local_138;
                          local_44c = (undefined *)FUN_0088b820();
                          local_44._0_1_ = 0x2b;
                          local_450 = (undefined4 *)0x88f60b;
                          FUN_00840b30();
                          _local_44c = CONCAT44(puVar20,0x88f612);
                          FUN_0083fd50();
                          _local_44c = CONCAT44(0x88f61e,local_44c);
                          FUN_0040159c();
                          local_44._0_1_ = 0x29;
                          _local_44c = CONCAT44(0x88f632,local_44c);
                          FUN_0081b5bc();
                          _local_44c = CONCAT44(0x88f63e,local_44c);
                          FUN_0040159c();
                          _local_44c = CONCAT44(0x88f64a,local_44c);
                          FUN_0040159c();
                          local_409 = '\0';
                        }
                        else {
                          _local_44c = CONCAT44(local_38c,0x88f54b);
                          FUN_0088b320();
                        }
                        break;
                      case (undefined4 *)0x2:
                        local_348 = 0;
                        local_33c = 0;
                        local_338 = 0;
                        _local_44c = CONCAT44(&local_33c,&local_114);
                        local_344 = 0x80000000;
                        local_450 = (undefined4 *)0x88f7ca;
                        cVar4 = FUN_00871e80();
                        if (cVar4 != '\0') {
                          _local_44c = CONCAT44(local_208,0x88f7e2);
                          puVar14 = (undefined4 *)FUN_0081b397();
                          local_308 = *puVar14;
                          local_304 = puVar14[1];
                          _local_44c = CONCAT44(&local_308,0x88f809);
                          cVar4 = FUN_008477d0();
                          if (cVar4 == '\0') {
                            _local_44c = CONCAT44(&local_348,0x88f81e);
                            FUN_0088b390();
                            break;
                          }
                        }
                        _local_44c = CONCAT44(PTR_DAT_03236318,0x88f836);
                        FUN_004325b6();
                        local_44._0_1_ = 0x30;
                        _local_44c = 0xd2ebf40088f84f;
                        FUN_0043c211();
                        _local_44c = CONCAT44(local_32c,local_274);
                        local_44._0_1_ = 0x31;
                        local_450 = (undefined4 *)0x88f86c;
                        uVar6 = FUN_00820bf9();
                        _local_44c = CONCAT44(uVar6,0x88f879);
                        FUN_008433c0();
                        puVar20 = (undefined *)0xa;
                        local_3fc = &local_454;
                        pcStack_458 = (char *)&local_454;
                        local_44._0_1_ = 0x32;
                        puStack_45c = (undefined4 *)0x88f899;
                        FUN_00432231();
                        local_3fc = &ppuStack_460;
                        ppuStack_464 = &ppuStack_460;
                        puStack_468 = (undefined *)0x88f8af;
                        FUN_00432231();
                        ppuStack_464 = (undefined4 **)&local_3d8;
                        puStack_468 = local_180;
                        local_44c = (undefined *)FUN_0088b820();
                        local_44._0_1_ = 0x33;
                        local_450 = (undefined4 *)0x88f8dc;
                        FUN_00840b30();
                        _local_44c = CONCAT44(puVar20,0x88f8e3);
                        FUN_0083fd50();
                        _local_44c = CONCAT44(0x88f8ef,local_44c);
                        FUN_0040159c();
                        local_44._0_1_ = 0x31;
                        _local_44c = CONCAT44(0x88f900,local_44c);
                        FUN_0081b5bc();
                        _local_44c = CONCAT44(0x88f90c,local_44c);
                        FUN_0040159c();
                        _local_44c = CONCAT44(0x88f918,local_44c);
                        FUN_0040159c();
                        local_409 = '\0';
                        break;
                      case (undefined4 *)0x3:
                        _local_44c = CONCAT44(&local_2d8,0x88f668);
                        cVar4 = FUN_00850cb0();
                        if (cVar4 == '\0') {
                          _local_44c = CONCAT44(PTR_DAT_03236318,0x88f69a);
                          FUN_004325b6();
                          local_44._0_1_ = 0x2c;
                          _local_44c = 0xd2ec280088f6b3;
                          FUN_0043c211();
                          _local_44c = CONCAT44(local_1a4,local_1c8);
                          local_44._0_1_ = 0x2d;
                          local_450 = (undefined4 *)0x88f6d0;
                          uVar6 = FUN_00820bf9();
                          _local_44c = CONCAT44(uVar6,0x88f6e0);
                          FUN_008433c0();
                          puVar20 = (undefined *)0xa;
                          local_3fc = &local_454;
                          pcStack_458 = (char *)&local_454;
                          local_44._0_1_ = 0x2e;
                          puStack_45c = (undefined4 *)0x88f700;
                          FUN_00432231();
                          local_3fc = &ppuStack_460;
                          ppuStack_464 = &ppuStack_460;
                          puStack_468 = (undefined *)0x88f716;
                          FUN_00432231();
                          ppuStack_464 = (undefined4 **)&local_388;
                          puStack_468 = local_15c;
                          local_44c = (undefined *)FUN_0088b820();
                          local_44._0_1_ = 0x2f;
                          local_450 = (undefined4 *)0x88f743;
                          FUN_00840b30();
                          _local_44c = CONCAT44(puVar20,0x88f74a);
                          FUN_0083fd50();
                          _local_44c = CONCAT44(0x88f756,local_44c);
                          FUN_0040159c();
                          local_44._0_1_ = 0x2d;
                          _local_44c = CONCAT44(0x88f76a,local_44c);
                          FUN_0081b5bc();
                          _local_44c = CONCAT44(0x88f776,local_44c);
                          FUN_0040159c();
                          _local_44c = CONCAT44(0x88f782,local_44c);
                          FUN_0040159c();
                          local_409 = '\0';
                        }
                        else {
                          _local_44c = local_2d8;
                          local_450 = (undefined4 *)0x88f682;
                          FUN_0088b2d0();
                        }
                        break;
                      default:
                        if (PTR_FUN_03235c4c != (undefined *)0x0) {
                          _local_44c = 0xd2e5ac00fad940;
                          local_450 = (undefined4 *)0xd2ebdc;
                          local_454 = (undefined4 **)0x39d;
                          pcStack_458 = "..\\..\\src\\common\\cmdline.cpp";
                          puStack_45c = (undefined4 *)0x88f946;
                          FUN_00840480();
                        }
                      case (undefined4 *)0x0:
                        _local_44c = CONCAT44(&local_114,0x88f95a);
                        FUN_0088bc30();
                      }
                      _local_44c = CONCAT44(0x88f966,local_44c);
                      FUN_0040159c();
                    }
                  }
                }
                else {
                  _local_44c = CONCAT44(&local_3f0,0x88f245);
                  piVar18 = (int *)FUN_00847840();
                  iVar5 = *piVar18;
                  if (iVar5 == 0) goto LAB_0088f36a;
                  if ((iVar5 == 0x3a) || (iVar5 == 0x3d)) {
                    _local_44c = CONCAT44(0x88f35d,local_44c);
                    FUN_00847800();
                    puVar8 = local_3e0;
                    puVar19 = local_3dc;
                    goto LAB_0088f4c7;
                  }
                  if ((*(byte *)(local_408 + 0x1d) & 0x10) == 0) goto LAB_0088f4c7;
                  _local_44c = CONCAT44(PTR_DAT_03236318,0x88f27e);
                  FUN_004325b6();
                  local_44._0_1_ = 0x23;
                  _local_44c = 0xd2ec800088f297;
                  FUN_0043c211();
                  _local_44c = CONCAT44(&local_3d8,&local_114);
                  local_44._0_1_ = 0x24;
                  local_450 = (undefined4 *)0x88f2b1;
                  uVar6 = FUN_00820bf9();
                  _local_44c = CONCAT44(uVar6,0x88f2c1);
                  FUN_008433c0();
                  puVar20 = (undefined *)0xa;
                  local_3fc = &local_454;
                  pcStack_458 = (char *)&local_454;
                  local_44._0_1_ = 0x25;
                  puStack_45c = (undefined4 *)0x88f2e1;
                  FUN_00432231();
                  pcStack_458 = (char *)&local_388;
                  puStack_45c = local_32c;
                  ppuStack_460 = (undefined4 **)0x88f2f6;
                  local_44c = (undefined *)FUN_00841a20();
                  local_44._0_1_ = 0x26;
                  local_450 = (undefined4 *)0x88f30e;
                  FUN_00840b30();
                  _local_44c = CONCAT44(puVar20,0x88f315);
                  FUN_0083fd50();
                  _local_44c = CONCAT44(0x88f321,local_44c);
                  FUN_0040159c();
                  local_44._0_1_ = 0x24;
LAB_0088f329:
                  _local_44c = CONCAT44(0x88f335,local_44c);
                  FUN_0081b5bc();
                  _local_44c = CONCAT44(0x88f341,local_44c);
                  FUN_0040159c();
                  _local_44c = CONCAT44(0x88f34a,local_44c);
                  FUN_0040159c();
                  local_409 = '\0';
                }
              }
              local_44 = CONCAT31(local_44._1_3_,1);
              _local_44c = CONCAT44(local_d4,0x88f97b);
              _free(local_d4);
              if (7 < local_d8) {
                _local_44c = CONCAT44(local_ec,&UNK_0088f999);
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
              goto LAB_0088fbc7;
            }
          }
        }
        else {
          _local_44c = ZEXT48(local_250);
          local_450 = (undefined4 *)0x88e5d1;
          puVar14 = (undefined4 *)FUN_0081b542();
          local_300 = *puVar14;
          local_2fc = puVar14[1];
          _local_44c = 0x2d0088e5f2;
          cVar4 = FUN_00820040();
          uVar3 = local_44._1_3_;
          if (cVar4 == '\0') goto LAB_0088ea95;
          _local_44c = CONCAT44(1,local_240);
          local_450 = (undefined4 *)0x88e610;
          puVar14 = (undefined4 *)FUN_0081b542();
          local_2f0 = *puVar14;
          local_2ec = puVar14[1];
          _local_44c = 0x2d0088e631;
          cVar4 = FUN_00820040();
          uVar3 = local_44._1_3_;
          if (cVar4 == '\0') goto LAB_0088ea95;
          _local_44c = CONCAT44(2,local_230);
          local_450 = local_248;
          local_3f7 = '\x01';
          local_454 = (undefined4 **)0x88e65c;
          FUN_0081b376();
          local_450 = (undefined4 *)0x88e663;
          piVar18 = (int *)FUN_0081b063();
          puVar14 = (undefined4 *)*piVar18;
          puVar8 = (undefined4 *)piVar18[1];
          cVar4 = *(char *)(*local_400 + 0x24);
          _local_44c = CONCAT44(local_200,0x88e685);
          puVar7 = (undefined8 *)FUN_0081b397();
          _local_44c = *puVar7;
          local_3e8 = &local_454;
          pcStack_458 = (char *)0x88e6b2;
          local_454 = (undefined4 **)puVar14;
          local_450 = puVar8;
          puVar14 = (undefined4 *)FUN_0088c3d0();
          local_44._0_1_ = 4;
          if (&local_f0 != puVar14) {
            _local_44c = 0xffffffff00000000;
            local_454 = (undefined4 **)0x88e6d2;
            local_450 = puVar14;
            FID_conflict_assign();
          }
          local_44._0_1_ = 3;
          _local_44c = CONCAT44(0x88e6e6,local_44c);
          FUN_0040159c();
          if (cVar4 != '\0') {
            local_fc = 7;
            local_100 = 0;
            local_110 = local_110 & 0xffff0000;
            local_f8 = (void *)0x0;
            local_44._0_1_ = 5;
            _local_44c = CONCAT44(&local_f0,0x88e72e);
            piVar18 = (int *)FUN_0088b4f0();
            local_408 = (undefined4 **)piVar18;
            if (piVar18 == (int *)0xffffffff) {
              local_44c = local_1f0;
              puVar20 = (undefined *)0x2d;
              local_450 = (undefined4 *)0x88e753;
              FUN_0081b3d8();
              _local_44c = CONCAT44(puVar20,0x88e75a);
              cVar4 = FUN_0086f990();
              if (cVar4 == '\0') {
LAB_0088e86c:
                if (piVar18 != (int *)0xffffffff) goto LAB_0088eda2;
              }
              else {
                _local_44c = CONCAT44(local_dc + -1,0x88e777);
                FUN_00851a60();
                _local_44c = CONCAT44(&local_f0,0x88e786);
                piVar18 = (int *)FUN_0088b4f0();
                local_408 = (undefined4 **)piVar18;
                if (piVar18 != (int *)0xffffffff) {
                  _local_44c = CONCAT44(piVar18,0x88e7a0);
                  iVar5 = FUN_009cde80();
                  if ((*(byte *)(iVar5 + 0x74) & 0x20) != 0) goto LAB_0088e86c;
                  _local_44c = CONCAT44(PTR_DAT_03236318,0x88e7bd);
                  FUN_004325b6();
                  local_44._0_1_ = 6;
                  _local_44c = 0xd2ed0c0088e7d3;
                  FUN_0043c211();
                  _local_44c = CONCAT44(&local_3b4,&local_3d8);
                  local_44._0_1_ = 7;
                  local_450 = (undefined4 *)0x88e7ed;
                  uVar6 = FUN_00820bf9();
                  _local_44c = CONCAT44(uVar6,0x88e7fd);
                  FUN_008433c0();
                  local_3e8 = (undefined4 **)&puStack_468;
                  local_44._0_1_ = 8;
                  FUN_004325a0(&local_f0);
                  FUN_00855cc0(&local_388);
                  local_44._0_1_ = 7;
                  _local_44c = CONCAT44(0x88e846,local_44c);
                  FUN_0081b5bc();
                  _local_44c = CONCAT44(0x88e84f,local_44c);
                  FUN_0040159c();
                  local_44._0_1_ = 5;
                  _local_44c = CONCAT44(0x88e863,local_44c);
                  FUN_0040159c();
                  piVar18 = (int *)0xffffffff;
                  local_408 = (undefined4 **)0xffffffff;
                }
              }
              if (local_100 == 0) {
                _local_44c = CONCAT44(PTR_DAT_03236318,0x88e896);
                FUN_004325b6();
                local_44._0_1_ = 9;
                _local_44c = 0xd2ecf00088e8ac;
                FUN_0043c211();
                _local_44c = CONCAT44(&local_3b4,&local_3d8);
                local_44._0_1_ = 10;
                local_450 = (undefined4 *)0x88e8c6;
                uVar6 = FUN_00820bf9();
                _local_44c = CONCAT44(uVar6,0x88e8d6);
                FUN_008433c0();
                local_3e8 = (undefined4 **)&puStack_468;
                local_44._0_1_ = 0xb;
                FUN_004325a0(&local_f0);
                FUN_00855cc0(&local_388);
                local_44._0_1_ = 10;
                _local_44c = CONCAT44(0x88e91f,local_44c);
                FUN_0081b5bc();
                _local_44c = CONCAT44(0x88e928,local_44c);
                FUN_0040159c();
                local_44._0_1_ = 5;
                _local_44c = CONCAT44(0x88e93c,local_44c);
                FUN_0040159c();
              }
              _local_44c = 0xffffffff00000000;
              local_450 = &local_114;
              local_454 = (undefined4 **)0x88e954;
              FID_conflict_append();
              _local_44c = 0xa00000001;
              local_450 = (undefined4 *)0x88e964;
              FID_conflict_append();
            }
LAB_0088eda2:
            local_44._0_1_ = 3;
            _local_44c = CONCAT44(0x88edb6,local_44c);
            FUN_0040159c();
            goto LAB_0088edb6;
          }
          _local_44c = 0xd2e9d40088e97a;
          FUN_004325b6();
          local_44._0_1_ = 0xc;
          _local_44c = CONCAT44(&local_114,0x88e996);
          FUN_00855e60();
          local_44._0_1_ = 3;
          _local_44c = CONCAT44(0x88e9aa,local_44c);
          FUN_0040159c();
          _local_44c = CONCAT44(PTR_DAT_03236318,0x88e9b9);
          FUN_004325b6();
          local_44._0_1_ = 0xd;
          _local_44c = 0xd2ecdc0088e9d2;
          FUN_0043c211();
          _local_44c = CONCAT44(&local_3d8,&local_114);
          local_44._0_1_ = 0xe;
          local_450 = (undefined4 *)0x88e9ec;
          uVar6 = FUN_00820bf9();
          _local_44c = CONCAT44(uVar6,0x88e9fc);
          FUN_008433c0();
          local_3e8 = &local_450;
          local_454 = &local_450;
          local_44._0_1_ = 0xf;
          pcStack_458 = (char *)0x88ea1a;
          FUN_00432231();
          local_454 = (undefined4 **)&local_388;
          pcStack_458 = (char *)local_32c;
          puStack_45c = (undefined4 *)0x88ea2f;
          local_450 = (undefined4 *)FUN_00841a20();
          _local_44c = 0xffffffff00000000;
          local_44._0_1_ = 0x10;
          local_454 = (undefined4 **)0x88ea4b;
          FID_conflict_append();
          _local_44c = 0xa00000001;
          local_450 = (undefined4 *)0x88ea5b;
          FID_conflict_append();
          _local_44c = CONCAT44(0x88ea67,local_44c);
          FUN_0040159c();
          local_44._0_1_ = 0xe;
          _local_44c = CONCAT44(0x88ea7b,local_44c);
          FUN_0081b5bc();
          _local_44c = CONCAT44(0x88ea87,local_44c);
          FUN_0040159c();
          _local_44c = CONCAT44(0x88ea90,local_44c);
          FUN_0040159c();
        }
        local_409 = '\0';
        local_44 = CONCAT31(local_44._1_3_,1);
        _local_44c = CONCAT44(local_d4,0x88edd9);
        _free(local_d4);
        if (7 < local_d8) {
          _local_44c = CONCAT44(local_ec,&UNK_0088edf7);
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
      }
      else if (local_390 < local_364) {
        _local_44c = CONCAT44(local_390,0x88f9c2);
        iVar5 = FUN_009cde80();
        _local_44c = CONCAT44(1,&local_cc);
        local_450 = (undefined4 *)0x88f9dc;
        FUN_00854700();
        if ((*(byte *)(iVar5 + 0x28) & 4) == 0) {
          local_390 = uVar12 + 1;
        }
        else {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar12 != uVar16 - 1)) {
            _local_44c = 0xd2eb4000d2eb20;
            local_450 = (undefined4 *)0xd2ebdc;
            local_454 = (undefined4 **)0x3f1;
            pcStack_458 = "..\\..\\src\\common\\cmdline.cpp";
            puStack_45c = (undefined4 *)0x88fa1b;
            FUN_00840480();
          }
          local_3f6 = '\x01';
        }
      }
      else {
        _local_44c = CONCAT44(PTR_DAT_03236318,0x88fa3a);
        FUN_004325b6();
        local_44._0_1_ = 0x34;
        _local_44c = 0xd2eb040088fa53;
        FUN_0043c211();
        local_44 = CONCAT31(local_44._1_3_,0x35);
        _local_44c = CONCAT44(0x88fa60,local_44c);
        iVar5 = FUN_0084a340();
        if (iVar5 == 0) {
          _local_44c = CONCAT44(&local_114,0x88fa8c);
          uVar6 = FUN_0084d360();
        }
        else {
          _local_44c = CONCAT44(&local_3b4,&local_114);
          local_450 = (undefined4 *)0x88fa7d;
          uVar6 = FUN_0084f210();
        }
        _local_44c = CONCAT44(uVar6,0x88fa99);
        FUN_008433c0();
        local_3fc = &local_450;
        local_454 = &local_450;
        local_44._0_1_ = 0x36;
        pcStack_458 = (char *)0x88fab7;
        FUN_00432231();
        local_454 = (undefined4 **)&local_3d8;
        pcStack_458 = (char *)&local_f0;
        puStack_45c = (undefined4 *)0x88fac9;
        local_450 = (undefined4 *)FUN_00841a20();
        _local_44c = 0xffffffff00000000;
        local_44._0_1_ = 0x37;
        local_454 = (undefined4 **)0x88fae4;
        FID_conflict_append();
        _local_44c = 0xa00000001;
        local_450 = (undefined4 *)0x88faf4;
        FID_conflict_append();
        _local_44c = CONCAT44(local_d4,0x88fb01);
        _free(local_d4);
        if (7 < local_d8) {
          _local_44c = CONCAT44(local_ec,&UNK_0088fb1f);
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        local_d8 = 7;
        local_dc = 0;
        local_ec = local_ec & 0xffff0000;
        local_44._0_1_ = 0x35;
        _local_44c = CONCAT44(0x88fb50,local_44c);
        FUN_0081b5bc();
        _local_44c = CONCAT44(local_f8,0x88fb5d);
        _free(local_f8);
        if (7 < local_fc) {
          _local_44c = CONCAT44(local_110,&UNK_0088fb76);
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        local_fc = 7;
        local_100 = 0;
        local_110 = local_110 & 0xffff0000;
        local_44 = CONCAT31(local_44._1_3_,1);
        _local_44c = CONCAT44(local_398,0x88fba6);
        _free(local_398);
        if (7 < local_39c) {
          _local_44c = CONCAT44(local_3b0,&UNK_0088fbbf);
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        local_409 = '\0';
      }
    }
LAB_0088fbc7:
    local_3ec = local_3ec + 1;
  } while (local_409 != '\0');
  goto LAB_00890277;
  while( true ) {
    iVar5 = *local_400;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar5 + 0x60) <= local_3f4)) {
      _local_44c = 0xfb2018;
      local_450 = (undefined4 *)0xfb202c;
      local_454 = (undefined4 **)0x340;
      pcStack_458 = "d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h";
      puStack_45c = (undefined4 *)0x88fc45;
      FUN_008402e0();
    }
    iVar5 = *(int *)(*(int *)(iVar5 + 100) + local_3f4 * 4);
    if (((*(byte *)(iVar5 + 0x74) & 1) != 0) && (*(char *)(iVar5 + 0x78) == '\0')) {
      local_d8 = 7;
      local_dc = 0;
      local_ec = local_ec & 0xffff0000;
      local_d4 = (void *)0x0;
      local_44._0_1_ = 0x38;
      if (*(int *)(iVar5 + 0x3c) == 0) {
        local_450 = (undefined4 *)(iVar5 + 4);
        if (&local_f0 != local_450) {
          _local_44c = 0xffffffff00000000;
          local_454 = (undefined4 **)0x88fcb1;
          FID_conflict_assign();
        }
      }
      else if (*(char *)(*local_400 + 0x24) == '\0') {
        _local_44c = 0xd2629c0088fe0d;
        FUN_0081c0f1();
        local_3f0 = &local_450;
        local_454 = &local_450;
        local_44._0_1_ = 0x3c;
        pcStack_458 = (char *)0x88fe27;
        FUN_00432231();
        local_454 = (undefined4 **)&local_3d8;
        pcStack_458 = (char *)0x88fe38;
        FUN_0085cc60();
        local_44._0_1_ = 0x38;
        _local_44c = CONCAT44(0x88fe49,local_44c);
        FUN_0081b5bc();
      }
      else {
        _local_44c = CONCAT44(PTR_DAT_03236318,0x88fcd9);
        FUN_004325b6();
        local_44._0_1_ = 0x39;
        _local_44c = 0xd2eaf80088fcf2;
        FUN_0043c211();
        local_44 = CONCAT31(local_44._1_3_,0x3a);
        _local_44c = CONCAT44(0x88fcff,local_44c);
        iVar5 = FUN_0084a340();
        if (iVar5 == 0) {
          _local_44c = CONCAT44(&local_114,0x88fd29);
          uVar6 = FUN_0084d360();
        }
        else {
          _local_44c = CONCAT44(&local_3b4,&local_114);
          local_450 = (undefined4 *)0x88fd1a;
          uVar6 = FUN_0084f210();
        }
        _local_44c = CONCAT44(uVar6,0x88fd36);
        FUN_008433c0();
        local_3f0 = &local_450;
        local_454 = &local_450;
        local_44._0_1_ = 0x3b;
        pcStack_458 = (char *)0x88fd50;
        FUN_00432231();
        local_3f0 = &puStack_45c;
        ppuStack_460 = &puStack_45c;
        ppuStack_464 = (undefined4 **)0x88fd62;
        FUN_00432231();
        ppuStack_460 = (undefined4 **)&local_3d8;
        ppuStack_464 = (undefined4 **)0x88fd76;
        FUN_0088b950();
        local_44._0_1_ = 0x3a;
        _local_44c = CONCAT44(0x88fd87,local_44c);
        FUN_0081b5bc();
        _local_44c = CONCAT44(local_f8,0x88fd94);
        _free(local_f8);
        if (7 < local_fc) {
          _local_44c = CONCAT44(local_110,&UNK_0088fdad);
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        local_fc = 7;
        local_100 = 0;
        local_110 = local_110 & 0xffff0000;
        local_44._0_1_ = 0x38;
        _local_44c = CONCAT44(local_398,0x88fde1);
        _free(local_398);
        if (7 < local_39c) {
          _local_44c = CONCAT44(local_3b0,&UNK_0088fdfa);
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
      }
      psVar15 = (short *)PTR_DAT_03236318;
      if (PTR_DAT_03236318 == (undefined *)0x0) {
        psVar15 = &DAT_00fae9c8;
      }
      local_39c = 7;
      local_3a0 = 0;
      local_3b0 = local_3b0 & 0xffff0000;
      psVar13 = psVar15;
      do {
        sVar1 = *psVar13;
        psVar13 = psVar13 + 1;
      } while (sVar1 != 0);
      _local_44c = CONCAT44((int)psVar13 - (int)(psVar15 + 1) >> 1,psVar15);
      local_450 = (undefined4 *)0x88fe9d;
      FID_conflict_assign();
      local_398 = (void *)0x0;
      local_44._0_1_ = 0x3d;
      _local_44c = 0xd2eac40088febd;
      FUN_0043c211();
      local_44 = CONCAT31(local_44._1_3_,0x3e);
      _local_44c = CONCAT44(0x88feca,local_44c);
      iVar5 = FUN_0084a340();
      if (iVar5 == 0) {
        _local_44c = CONCAT44(&local_114,0x88fef4);
        uVar6 = FUN_0084d360();
      }
      else {
        _local_44c = CONCAT44(&local_3b4,&local_114);
        local_450 = (undefined4 *)0x88fee5;
        uVar6 = FUN_0084f210();
      }
      _local_44c = CONCAT44(uVar6,0x88ff01);
      FUN_008433c0();
      local_3f0 = &local_450;
      local_454 = &local_450;
      local_44._0_1_ = 0x3f;
      pcStack_458 = (char *)0x88ff1f;
      FUN_00432231();
      local_454 = (undefined4 **)&local_3d8;
      pcStack_458 = (char *)&local_388;
      puStack_45c = (undefined4 *)0x88ff31;
      local_450 = (undefined4 *)FUN_00841a20();
      _local_44c = 0xffffffff00000000;
      local_44._0_1_ = 0x40;
      local_454 = (undefined4 **)0x88ff4c;
      FID_conflict_append();
      _local_44c = 0xa00000001;
      local_450 = (undefined4 *)0x88ff5c;
      FID_conflict_append();
      _local_44c = CONCAT44(local_36c,0x88ff69);
      _free(local_36c);
      if (7 < local_370) {
        _local_44c = CONCAT44(local_384,&UNK_0088ff82);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_370 = 7;
      local_374 = 0;
      local_384 = local_384 & 0xffff0000;
      local_44._0_1_ = 0x3e;
      _local_44c = CONCAT44(0x88ffb3,local_44c);
      FUN_0081b5bc();
      _local_44c = CONCAT44(local_f8,0x88ffc0);
      _free(local_f8);
      if (7 < local_fc) {
        _local_44c = CONCAT44(local_110,&UNK_0088ffd9);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_fc = 7;
      local_100 = 0;
      local_110 = local_110 & 0xffff0000;
      _local_44c = CONCAT44(local_398,0x890001);
      _free(local_398);
      if (7 < local_39c) {
        _local_44c = CONCAT44(local_3b0,&UNK_0089001a);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_409 = '\0';
      local_44 = CONCAT31(local_44._1_3_,1);
      _local_44c = CONCAT44(local_d4,0x890037);
      _free(local_d4);
      if (7 < local_d8) {
        _local_44c = CONCAT44(local_ec,&UNK_00890050);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    local_3f4 = local_3f4 + 1;
    if (local_409 == '\0') break;
LAB_0088fc08:
    uVar12 = local_364;
    if (local_38c <= local_3f4) {
      uVar16 = local_390;
      if (local_409 != '\0') goto LAB_0089007e;
      break;
    }
  }
  goto LAB_00890277;
  while( true ) {
    _local_44c = CONCAT44(uVar16,0x890095);
    iVar5 = FUN_009cde80();
    if ((((uVar16 != uVar12 - 1) || ((*(byte *)(iVar5 + 0x28) & 4) == 0)) || (local_3f6 == '\0')) &&
       ((*(byte *)(iVar5 + 0x28) & 2) == 0)) {
      _local_44c = CONCAT44(PTR_DAT_03236318,0x8900cb);
      FUN_004325b6();
      local_44._0_1_ = 0x41;
      _local_44c = 0xd2ea94008900e4;
      FUN_0043c211();
      local_44 = CONCAT31(local_44._1_3_,0x42);
      _local_44c = CONCAT44(0x8900f1,local_44c);
      iVar5 = FUN_0084a340();
      if (iVar5 == 0) {
        _local_44c = CONCAT44(&local_114,0x89011b);
        uVar6 = FUN_0084d360();
      }
      else {
        _local_44c = CONCAT44(&local_3b4,&local_114);
        local_450 = (undefined4 *)0x89010c;
        uVar6 = FUN_0084f210();
      }
      _local_44c = CONCAT44(uVar6,0x890128);
      FUN_008433c0();
      local_3f0 = &local_450;
      local_454 = &local_450;
      local_44._0_1_ = 0x43;
      pcStack_458 = (char *)0x890141;
      FUN_00432231();
      local_454 = (undefined4 **)&local_3d8;
      pcStack_458 = (char *)&local_f0;
      puStack_45c = (undefined4 *)0x890153;
      local_450 = (undefined4 *)FUN_00841a20();
      _local_44c = 0xffffffff00000000;
      local_44._0_1_ = 0x44;
      local_454 = (undefined4 **)0x89016f;
      FID_conflict_append();
      _local_44c = 0xa00000001;
      local_450 = (undefined4 *)0x89017f;
      FID_conflict_append();
      _local_44c = CONCAT44(local_d4,0x89018c);
      _free(local_d4);
      if (7 < local_d8) {
        _local_44c = CONCAT44(local_ec,&UNK_008901a6);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_d8 = 7;
      local_dc = 0;
      local_ec = local_ec & 0xffff0000;
      local_44._0_1_ = 0x42;
      _local_44c = CONCAT44(0x8901da,local_44c);
      FUN_0081b5bc();
      _local_44c = CONCAT44(local_f8,0x8901e7);
      _free(local_f8);
      if (7 < local_fc) {
        _local_44c = CONCAT44(local_110,&UNK_00890205);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_fc = 7;
      local_100 = 0;
      local_110 = local_110 & 0xffff0000;
      local_44 = CONCAT31(local_44._1_3_,1);
      _local_44c = CONCAT44(local_398,0x89023d);
      _free(local_398);
      if (7 < local_39c) {
        _local_44c = CONCAT44(local_3b0,&UNK_00890256);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_409 = '\0';
    }
    uVar16 = uVar16 + 1;
    if (local_409 == '\0') break;
LAB_0089007e:
    if (uVar12 <= uVar16) {
      if (local_409 != '\0') goto LAB_00890408;
      break;
    }
  }
LAB_00890277:
  if ((local_94 != 0) || ((local_401 != '\0' && (param_1 != '\0')))) {
    _local_44c = CONCAT44(0x89029d,local_44c);
    iVar5 = FUN_00893190();
    if (iVar5 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        _local_44c = 0xd2ea5000fad940;
        local_450 = (undefined4 *)0xd2ebdc;
        local_454 = (undefined4 **)0x44c;
        pcStack_458 = "..\\..\\src\\common\\cmdline.cpp";
        puStack_45c = (undefined4 *)0x8903eb;
        FUN_00840480();
      }
    }
    else {
      local_fc = 7;
      local_100 = 0;
      local_110 = local_110 & 0xffff0000;
      local_f8 = (void *)0x0;
      local_44._0_1_ = 0x45;
      if (param_1 != '\0') {
        _local_44c = CONCAT44(&local_f0,0x8902e7);
        puVar14 = (undefined4 *)FUN_0088d040();
        local_44._0_1_ = 0x46;
        if (&local_114 != puVar14) {
          _local_44c = 0xffffffff00000000;
          local_454 = (undefined4 **)0x890305;
          local_450 = puVar14;
          FID_conflict_assign();
        }
        local_44._0_1_ = 0x45;
        _local_44c = CONCAT44(local_d4,0x89031a);
        _free(local_d4);
        if (7 < local_d8) {
          _local_44c = CONCAT44(local_ec,&UNK_00890334);
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
      }
      _local_44c = 0xd2ea8800890345;
      FUN_0081c0f1();
      local_3f0 = &local_450;
      local_454 = &local_450;
      local_44._0_1_ = 0x47;
      pcStack_458 = (char *)0x890363;
      FUN_00432231();
      local_3f0 = &puStack_45c;
      ppuStack_460 = &puStack_45c;
      ppuStack_464 = (undefined4 **)0x890379;
      FUN_00432231();
      ppuStack_460 = (undefined4 **)&local_3d8;
      ppuStack_464 = (undefined4 **)0x890388;
      FUN_0088ba80();
      local_44 = CONCAT31(local_44._1_3_,0x45);
      _local_44c = CONCAT44(0x890399,local_44c);
      FUN_0081b5bc();
      _local_44c = CONCAT44(local_f8,0x8903a6);
      _free(local_f8);
      if (7 < local_fc) {
        _local_44c = CONCAT44(local_110,&UNK_008903c0);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
LAB_00890408:
  _local_44c = CONCAT44(local_b0,0x890415);
  _free(local_b0);
  if (7 < local_b4) {
    _local_44c = CONCAT44(local_c8,&UNK_00890433);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_b4 = 7;
  local_b8 = 0;
  local_c8 = (undefined4 *)((uint)local_c8 & 0xffff0000);
  _local_44c = CONCAT44(local_8c,0x890463);
  _free(local_8c);
  if (7 < local_90) {
    _local_44c = CONCAT44(local_a4,&UNK_0089047c);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  ExceptionList = local_4c;
  ___security_check_cookie_4();
  return;
}



void FUN_008904c0(void)

{
  int iVar1;
  char *pcStack_60;
  char *pcStack_5c;
  undefined local_44 [24];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcca30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = FUN_00893190();
  if (iVar1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pcStack_5c = "Assert failure";
      pcStack_60 = "wxCmdLineParser::Usage";
      FUN_00840480("..\\..\\src\\common\\cmdline.cpp",0x460);
    }
    ExceptionList = local_c;
    return;
  }
  pcStack_5c = (char *)0x890504;
  FUN_0081c0f1();
  local_4 = 0;
  pcStack_5c = (char *)0x890518;
  FUN_0088d040();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00432231(&pcStack_60);
  FUN_00843870(local_44);
  pcStack_5c = (char *)0x890544;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    pcStack_5c = &UNK_00890558;
    FUN_00a3f6a1();
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  local_4 = 0xffffffff;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_008905e0(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (iVar1 != 0) {
    FUN_0088cc30();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



undefined __fastcall FUN_00890600(int param_1)

{
  return *(undefined *)(param_1 + 4);
}



bool __thiscall FUN_00890610(int param_1_00,uint param_1)

{
  return (*(uint *)(param_1_00 + 8) & param_1) != 0;
}



uint __thiscall FUN_00890620(int *param_1_00,char param_1)

{
  uint in_EAX;
  uint uVar1;
  
  if (*(char *)(param_1_00 + 1) != '\0') {
    if ((param_1 == '\0') && (PTR_FUN_03235c4c != (undefined *)0x0)) {
      in_EAX = FUN_00840480("..\\..\\src\\common\\evtloopcmn.cpp",0x4b,"wxEventLoopBase::Yield",
                            "Assert failure",L"wxYield called recursively");
    }
    return in_EAX & 0xffffff00;
  }
                    // WARNING: Could not recover jumptable at 0x00890666. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (**(code **)(*param_1_00 + 0x28))();
  return uVar1;
}



void __fastcall FUN_00890670(undefined4 *param_1)

{
  *(undefined *)(param_1 + 1) = 0;
  param_1[2] = 0x7f;
  *param_1 = wxEventLoopManual::vftable;
  param_1[3] = 0;
  *(undefined *)(param_1 + 4) = 0;
  return;
}



undefined4 * __thiscall FUN_00890690(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxEventLoopBase::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_008906b0(int *param_1_00,int param_1)

{
  code *pcVar1;
  
  if (DAT_032bdbdc == param_1_00) {
    param_1_00[3] = param_1;
    pcVar1 = *(code **)(*param_1_00 + 0x34);
    *(undefined *)(param_1_00 + 4) = 1;
    (*pcVar1)();
    (**(code **)(*param_1_00 + 0x1c))();
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\evtloopcmn.cpp",0xc6,"wxEventLoopManual::Exit","IsRunning()",
                 L"can\'t call Exit() if not running");
  }
  return;
}



void __fastcall FUN_00890710(undefined4 param_1)

{
  if (DAT_032bcb68 != (int *)0x0) {
    (**(code **)(*DAT_032bcb68 + 0x68))(param_1);
  }
  return;
}



undefined4 FUN_00890730(void)

{
  char cVar1;
  
  if (DAT_032bcb68 != (int *)0x0) {
    cVar1 = (**(code **)(*DAT_032bcb68 + 0xb0))();
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



void __fastcall FUN_00890760(int *param_1)

{
  if (DAT_032bcb68 != (int *)0x0) {
    (**(code **)(*DAT_032bcb68 + 0x98))();
  }
                    // WARNING: Could not recover jumptable at 0x0089077f. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x14))();
  return;
}



void __fastcall FUN_00890790(undefined4 *param_1)

{
  DAT_032bdbdc = *param_1;
  if (DAT_032bcb68 != (int *)0x0) {
    (**(code **)(*DAT_032bcb68 + 0x60))(DAT_032bdbdc);
  }
  return;
}



int __fastcall FUN_008907b0(int *param_1)

{
  char cVar1;
  int iVar2;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bcca58;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  if (DAT_032bdbdc == param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\evtloopcmn.cpp",0x73,"wxEventLoopManual::Run",
                   "!IsRunning()",L"can\'t reenter a message loop");
    }
    ExceptionList = local_10;
    return -1;
  }
  DAT_032bdbdc = param_1;
  if (DAT_032bcb68 != (int *)0x0) {
    (**(code **)(*DAT_032bcb68 + 0x60))(param_1);
  }
  local_8 = 1;
  do {
    (**(code **)(*param_1 + 0x38))();
    while( true ) {
      cVar1 = (**(code **)(*param_1 + 0x10))();
      if (cVar1 != '\0') break;
      cVar1 = (**(code **)(*param_1 + 0x24))();
      if ((cVar1 == '\0') || (*(char *)(param_1 + 4) != '\0')) break;
    }
    if (*(char *)(param_1 + 4) != '\0') {
      while( true ) {
        cVar1 = (**(code **)(*param_1 + 0x10))();
        if (cVar1 == '\0') break;
        FUN_00890760();
      }
      iVar2 = param_1[3];
      local_8 = 0xffffffff;
      FUN_00890790();
      ExceptionList = local_10;
      return iVar2;
    }
    cVar1 = FUN_00890760();
    if (cVar1 == '\0') {
      iVar2 = FUN_008908b0();
      return iVar2;
    }
  } while( true );
}



undefined * Catch_All_00890869(void)

{
  int *piVar1;
  char cVar2;
  int unaff_EBP;
  
  piVar1 = DAT_032bcb68;
  *(BADSPACEBASE **)(unaff_EBP + -0x10) = register0x00000010;
  *(undefined *)(unaff_EBP + -4) = 3;
  if (piVar1 != (int *)0x0) {
    cVar2 = (**(code **)(*piVar1 + 0x94))();
    if (cVar2 != '\0') {
      *(undefined4 *)(unaff_EBP + -4) = 2;
      return &DAT_00890895;
    }
  }
  (**(code **)(**(int **)(unaff_EBP + -0x14) + 0x34))();
  return &DAT_008908ad;
}



undefined4 FUN_008908b0(void)

{
  undefined4 uVar1;
  int unaff_EBP;
  int unaff_ESI;
  
  uVar1 = *(undefined4 *)(unaff_ESI + 0xc);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_00890790();
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return uVar1;
}



undefined4 Catch_All_008908d6(void)

{
  int unaff_EBP;
  
  (**(code **)(**(int **)(unaff_EBP + -0x14) + 0x34))();
  __CxxThrowException_8(0,0);
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\evtloopcmn.cpp",0x73,"wxEventLoopManual::Run","!IsRunning()",
                 L"can\'t reenter a message loop");
  }
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return 0xffffffff;
}



undefined FUN_00890930(void)

{
  return 0;
}



void __fastcall FUN_00890940(undefined4 *param_1)

{
  *param_1 = wxStackFrameBase::vftable;
  _free((void *)param_1[0x1b]);
  if (7 < (uint)param_1[0x1a]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x15]);
  }
  param_1[0x1a] = 7;
  param_1[0x19] = 0;
  *(undefined2 *)(param_1 + 0x15) = 0;
  _free((void *)param_1[0x12]);
  if (7 < (uint)param_1[0x11]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xc]);
  }
  param_1[0x11] = 7;
  param_1[0x10] = 0;
  *(undefined2 *)(param_1 + 0xc) = 0;
  _free((void *)param_1[9]);
  if (7 < (uint)param_1[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  return;
}



undefined4 __thiscall FUN_008909f0(undefined4 param_1_00,byte param_1)

{
  FUN_00890940();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_00890a10(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccaa4;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[7] = 0;
  param_1_00[8] = 7;
  *(undefined2 *)(param_1_00 + 3) = 0;
  param_1_00[9] = 0;
  param_1_00[0x11] = 7;
  param_1_00[0x10] = 0;
  *(undefined2 *)(param_1_00 + 0xc) = 0;
  param_1_00[0x12] = 0;
  param_1_00[0x1a] = 7;
  param_1_00[0x19] = 0;
  *(undefined2 *)(param_1_00 + 0x15) = 0;
  param_1_00[0x1b] = 0;
  param_1_00[1] = param_1;
  param_1_00[0x1f] = 0;
  param_1_00[0x1d] = 0;
  param_1_00[0x1e] = param_2;
  local_4 = 0;
  *param_1_00 = wxStackFrame::vftable;
  FUN_00853ce0(0);
  local_4._0_1_ = 1;
  FUN_00853ce0(0);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00853ce0(0);
  param_1_00[0x21] = param_3;
  *(undefined *)((int)param_1_00 + 0x81) = 0;
  *(undefined *)(param_1_00 + 0x20) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_00890af0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccae4;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 2;
  FUN_00853f30(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4._0_1_ = 1;
  FUN_00853f30();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00853f30();
  FUN_00890940();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00890b70(undefined4 param_1_00,byte param_1)

{
  FUN_00890af0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00890b90(int param_1)

{
  uint uVar1;
  HANDLE pvVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  undefined4 local_494;
  undefined4 local_490;
  undefined auStack_48c [4];
  undefined4 uStack_488;
  uint uStack_474;
  void *pvStack_470;
  undefined4 local_468 [20];
  undefined4 local_418;
  undefined auStack_414 [1028];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bccb0b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_494;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffb68;
  ExceptionList = &local_c;
  if (*(char *)(param_1 + 0x80) == '\0') {
    *(undefined *)(param_1 + 0x80) = 1;
    _memset(local_468,0,0x458);
    uVar4 = *(undefined4 *)(param_1 + 0x78);
    puVar7 = local_468;
    puVar6 = &local_494;
    uVar5 = 0;
    local_468[0] = 0x58;
    local_418 = 0x400;
    local_494 = 0;
    local_490 = 0;
    pvVar2 = GetCurrentProcess();
    iVar3 = (*DAT_032bddd8)(pvVar2,uVar4,uVar5,puVar6,puVar7,uVar1);
    if (iVar3 == 0) {
      FUN_008ab930(L"SymFromAddr");
    }
    else {
      iVar3 = FUN_00853800(auStack_48c,auStack_414);
      uStack_4 = 0;
      if (param_1 + 8 != iVar3) {
        FID_conflict_assign(iVar3,0,0xffffffff);
      }
      _free(pvStack_470);
      if (7 < uStack_474) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_488);
      }
      *(undefined4 *)(param_1 + 0x7c) = local_494;
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00890cd0(int param_1)

{
  uint uVar1;
  HANDLE pvVar2;
  int iVar3;
  undefined4 uVar4;
  undefined *puVar5;
  undefined4 *puVar6;
  undefined local_48 [4];
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bccb48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  if (*(char *)(param_1 + 0x81) == '\0') {
    puVar6 = &local_44;
    puVar5 = local_48;
    local_40 = 0;
    local_3c = 0;
    local_38 = 0;
    local_34 = 0;
    uVar4 = *(undefined4 *)(param_1 + 0x78);
    *(undefined *)(param_1 + 0x81) = 1;
    local_44 = 0x14;
    pvVar2 = GetCurrentProcess();
    iVar3 = (*DAT_032bddc4)(pvVar2,uVar4,puVar5,puVar6,uVar1);
    if (iVar3 != 0) {
      iVar3 = FUN_00853800(auStack_30,local_38);
      uStack_4 = 0;
      if (param_1 + 0x50 != iVar3) {
        FID_conflict_assign(iVar3,0,0xffffffff);
      }
      _free(pvStack_14);
      if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_2c);
      }
      *(undefined4 *)(param_1 + 0x74) = local_3c;
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00890db0(int param_1_00,int param_1)

{
  undefined4 uVar1;
  uint uStack_70;
  undefined local_3c [4];
  undefined4 local_38;
  uint local_24;
  void *local_20;
  int local_18;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bccb90;
  local_10 = ExceptionList;
  uStack_70 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_70;
  ExceptionList = &local_10;
  local_18 = param_1_00;
  FUN_004325b6(PTR_DAT_03236318);
  local_8 = 0;
  FUN_00854700(local_3c,1);
  local_8 = 0xffffffff;
  _free(local_20);
  if (7 < local_24) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_38);
  }
  uVar1 = FUN_00853800(local_3c,param_1 + 0x54);
  local_8 = 1;
  FUN_00854700(uVar1,1);
  _free(local_20);
  if (7 < local_24) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_38);
  }
  local_8 = 2;
  uVar1 = FUN_008acde0(local_3c,param_1,*(int *)(param_1_00 + 0x84) + *(int *)(param_1 + 0x38));
  local_8 = CONCAT31(local_8._1_3_,3);
  FUN_00854700(uVar1,1);
  _free(local_20);
  if (7 < local_24) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_38);
  }
  ExceptionList = local_10;
  return;
}



undefined4 Catch_All_00890ed5(void)

{
  int unaff_EBP;
  
  FUN_004325b6(PTR_DAT_03236318);
  *(undefined *)(unaff_EBP + -4) = 5;
  FUN_00854700(unaff_EBP + -0x5c,1);
  FUN_0040159c();
  return 0x890ec1;
}



void __fastcall FUN_00890f30(int param_1)

{
  HANDLE pvVar1;
  int iVar2;
  DWORD DVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined *puVar6;
  undefined4 *puVar7;
  undefined4 uVar8;
  undefined4 local_80;
  undefined4 local_7c;
  
  _memset(&local_80,0,0x80);
  local_80 = *(undefined4 *)(param_1 + 0x78);
  uVar8 = 0;
  puVar7 = &local_80;
  local_7c = 0;
  pvVar1 = GetCurrentProcess();
  iVar2 = (*DAT_032bdddc)(pvVar1,puVar7,uVar8);
  if (iVar2 == 0) {
    DVar3 = GetLastError();
    if (DVar3 != 0x1e7) {
      FUN_008ab930(L"SymSetContext");
      return;
    }
  }
  else {
    puVar6 = &LAB_00890f10;
    uVar5 = 0;
    uVar4 = 0;
    uVar8 = 0;
    pvVar1 = GetCurrentProcess();
    iVar2 = (*DAT_032bdde0)(pvVar1,uVar8,uVar4,uVar5,puVar6,param_1);
    if (iVar2 == 0) {
      FUN_008ab930(L"SymEnumSymbols");
    }
  }
  return;
}



undefined4 __fastcall FUN_00890fd0(int param_1)

{
  FUN_00890f30();
  return *(undefined4 *)(param_1 + 0x8c);
}



undefined4 __thiscall FUN_00890fe0(int param_1_00,uint param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 0x8c) == 0) {
    FUN_00890f30();
  }
  if (*(uint *)(param_1_00 + 0x8c) <= param_1) {
    return 0;
  }
  if (param_2 != 0) {
    iVar1 = thunk_FUN_004325d6(param_1);
    if (param_2 != iVar1) {
      FID_conflict_assign(iVar1,0,0xffffffff);
    }
  }
  if (param_3 != 0) {
    iVar1 = thunk_FUN_004325d6(param_1);
    if (param_3 != iVar1) {
      FID_conflict_assign(iVar1,0,0xffffffff);
    }
  }
  if (param_4 != 0) {
    iVar1 = thunk_FUN_004325d6(param_1);
    if (param_4 != iVar1) {
      FID_conflict_assign(iVar1,0,0xffffffff);
    }
  }
  return 1;
}



void __thiscall FUN_00891080(int *param_1_00,undefined4 *param_1,uint param_2,uint param_3)

{
  char cVar1;
  int iVar2;
  DWORD DVar3;
  uint uVar4;
  undefined4 *puVar5;
  undefined4 uStack_4f0;
  undefined *puStack_4ec;
  char *pcStack_4e8;
  undefined4 *puStack_4e4;
  char *pcStack_4e0;
  undefined *puStack_4dc;
  undefined auStack_4bc [4];
  undefined4 *local_4b8;
  undefined local_4b4 [20];
  undefined4 auStack_4a0 [2];
  undefined4 uStack_498;
  undefined4 uStack_488;
  undefined4 uStack_480;
  undefined4 uStack_47c;
  undefined4 uStack_474;
  undefined4 auStack_2f0 [45];
  undefined4 uStack_23c;
  undefined4 uStack_238;
  undefined4 uStack_22c;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00bccbdc;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_4bc;
  ExceptionList = &local_14;
  cVar1 = FUN_008ac190();
  if (cVar1 == '\0') {
    local_4b8 = &uStack_4f0;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4b8 = (undefined4 *)&stack0xfffffb28;
      puStack_4dc = &stack0xfffffb28;
      local_c = 0;
      pcStack_4e0 = (char *)0x89111f;
      FUN_008ab460();
      pcStack_4e0 = (char *)0x891126;
      FUN_00432231();
      puStack_4dc = &DAT_00d25fa0;
      pcStack_4e0 = "wxStackWalker::WalkFrom";
      puStack_4e4 = (undefined4 *)0xe0;
      pcStack_4e8 = "..\\..\\src\\msw\\stackwalk.cpp";
      puStack_4ec = (undefined *)0x6;
      local_c._0_1_ = 1;
      uStack_4f0 = 0x891150;
      FUN_008423d0();
      puStack_4dc = local_4b4;
      local_c._0_1_ = 3;
      pcStack_4e0 = (char *)0x89116c;
      FUN_00848860();
      local_c = (uint)local_c._1_3_ << 8;
      FUN_00842440();
      local_c = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  else {
    local_4b8 = (undefined4 *)GetCurrentProcess();
    puStack_4dc = (undefined *)0x8911ae;
    iVar2 = (*DAT_032bddd4)();
    if (iVar2 != 0) {
      puVar5 = auStack_2f0;
      for (iVar2 = 0xb3; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar5 = *param_1;
        param_1 = param_1 + 1;
        puVar5 = puVar5 + 1;
      }
      puStack_4dc = (undefined *)0x8911db;
      _memset(auStack_4a0,0,0xa4);
      auStack_4a0[0] = uStack_238;
      uVar4 = 0;
      uStack_498 = 3;
      uStack_47c = uStack_22c;
      uStack_474 = 3;
      uStack_488 = uStack_23c;
      uStack_480 = 3;
      if (param_3 != 0) {
        do {
          puStack_4dc = (undefined *)0x0;
          pcStack_4e0 = (char *)auStack_2f0;
          puStack_4e4 = auStack_4a0;
          pcStack_4e8 = (char *)0x891244;
          pcStack_4e8 = (char *)GetCurrentThread();
          puStack_4ec = (undefined *)local_4b8;
          uStack_4f0 = 0x14c;
          iVar2 = (*DAT_032bddb8)();
          if (iVar2 == 0) {
            DVar3 = GetLastError();
            if (DVar3 != 0) {
              FUN_008ab930();
            }
            break;
          }
          if (param_2 <= uVar4) {
            puStack_4dc = (undefined *)0x891275;
            FUN_00890a10();
            local_c = 4;
            (**(code **)(*param_1_00 + 0xc))();
            local_c = 0xffffffff;
            FUN_00890af0();
          }
          uVar4 = uVar4 + 1;
        } while (uVar4 < param_3);
      }
      iVar2 = (*DAT_032bdde8)();
      if (iVar2 != 0) goto LAB_008912e8;
    }
    FUN_008ab930();
  }
LAB_008912e8:
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void FUN_00891310(undefined4 param_1)

{
  if (DAT_032bdd88 != 0) {
    FUN_00891080(*(undefined4 *)(DAT_032bdd88 + 4),0,param_1);
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\stackwalk.cpp",0x14a,"wxStackWalker::WalkFromException",
                 "wxGlobalSEInformation",
                 L"wxStackWalker::WalkFromException() can only be called from wxApp::OnFatalException()"
                );
  }
  return;
}



void FUN_00891360(void)

{
  void *local_14;
  code *pcStack_10;
  uint local_c;
  undefined4 local_8;
  
  pcStack_10 = __except_handler4;
  local_14 = ExceptionList;
  local_c = DAT_0323f878 ^ 0x30f1550;
  ExceptionList = &local_14;
  local_8 = 0;
  RaiseException(0x1976,0,0,(ULONG_PTR *)0x0);
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_00891400(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8528;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxConvAuto::vftable;
  local_4 = 0;
  if ((*(char *)(param_1 + 4) != '\0') && ((int *)param_1[1] != (int *)0x0)) {
    (**(code **)(*(int *)param_1[1] + 0x18))(1,uVar1);
  }
  local_4 = 0xffffffff;
  FUN_008603c0();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00891470(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x00891478. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 8))();
  return;
}



undefined4 __thiscall FUN_00891480(undefined4 param_1_00,byte param_1)

{
  FUN_00891400();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined ** FUN_008914a0(void)

{
  return &PTR_u_wxFontMapperModule_03236d88;
}



undefined4 FUN_008914b0(void)

{
  return 0x51;
}



undefined4 FUN_008914c0(uint param_1)

{
  if (param_1 < 0x51) {
    return (&DAT_00d307a0)[param_1];
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\fmapbase.cpp",0x305,"wxFontMapperBase::GetEncoding",
                 "n < (sizeof(gs_encodings)/sizeof(gs_encodings[0]))",
                 L"wxFontMapper::GetEncoding(): invalid index");
  }
  return 0xffffffff;
}



undefined4 * __thiscall
FUN_00891500(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 9) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<enum wxFontEncoding>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_00891570(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x14);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxConvAuto::vftable;
    puVar1[1] = 0;
    puVar1[3] = 0xffffffff;
    *(undefined *)(puVar1 + 4) = 0;
    *(undefined *)((int)puVar1 + 0x11) = 0;
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



void FUN_008915b0(void)

{
  if (DAT_032bdbe0 != (undefined4 *)0x0) {
    (**(code **)*DAT_032bdbe0)(1);
    DAT_032bdbe0 = (undefined4 *)0x0;
  }
  return;
}



undefined4 * FUN_008915d0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxFontMapperModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __fastcall FUN_00891630(undefined4 *param_1)

{
  *param_1 = wxFontMapperBase::vftable;
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  param_1[9] = 0;
  param_1[1] = 0;
  return;
}



void __fastcall FUN_00891660(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd908b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxFontMapperBase::vftable;
  local_4 = 0;
  if ((int *)param_1[1] != (int *)0x0) {
    (**(code **)(*(int *)param_1[1] + 4))(1,uVar1);
  }
  _free((void *)param_1[9]);
  if (7 < (uint)param_1[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  ExceptionList = local_c;
  return;
}



void FUN_008916f0(void)

{
  int *piVar1;
  
  if (DAT_032bdbe0 == (undefined4 *)0x0) {
    if (DAT_032bcb68 != 0) {
      piVar1 = (int *)FUN_00841320();
      if ((piVar1 != (int *)0x0) &&
         (DAT_032bdbe0 = (undefined4 *)(**(code **)(*piVar1 + 0x10))(),
         PTR_FUN_03235c4c != (undefined *)0x0)) {
        if (DAT_032bdbe0 != (undefined4 *)0x0) {
          return;
        }
        FUN_00840480("..\\..\\src\\common\\fmapbase.cpp",0x1a5,"wxFontMapperBase::Get","sm_instance"
                     ,L"wxAppTraits::CreateFontMapper() failed");
      }
      if (DAT_032bdbe0 != (undefined4 *)0x0) {
        return;
      }
    }
    DAT_032bdbe0 = (undefined4 *)operator_new(0x2c);
    if (DAT_032bdbe0 != (undefined4 *)0x0) {
      *DAT_032bdbe0 = wxFontMapperBase::vftable;
      DAT_032bdbe0[8] = 7;
      DAT_032bdbe0[7] = 0;
      *(undefined2 *)(DAT_032bdbe0 + 3) = 0;
      DAT_032bdbe0[9] = 0;
      DAT_032bdbe0[1] = 0;
      return;
    }
    DAT_032bdbe0 = (undefined4 *)0x0;
  }
  return;
}



undefined4 FUN_008917a0(void)

{
  char cVar1;
  int *piVar2;
  
  piVar2 = (int *)FUN_008916f0();
  if (piVar2 != (int *)0x0) {
    cVar1 = (**(code **)(*piVar2 + 8))();
    if ((cVar1 != '\0') && (DAT_032bdbe0 != (undefined4 *)0x0)) {
      (**(code **)*DAT_032bdbe0)(1);
      DAT_032bdbe0 = (undefined4 *)0x0;
    }
  }
  return 1;
}



undefined4 __thiscall FUN_008917e0(undefined4 param_1_00,byte param_1)

{
  FUN_00891660();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int FUN_00891800(int param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc73c9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  FUN_0088aa60(param_2,param_1,param_3);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __fastcall FUN_00891880(undefined4 *param_1)

{
  undefined **local_b4;
  undefined4 local_b0;
  undefined4 local_ac;
  undefined4 local_a8;
  undefined local_a4;
  undefined local_a3;
  undefined4 *local_a0;
  undefined local_9c [4];
  uint local_98;
  undefined4 local_88;
  uint local_84;
  void *local_80;
  undefined local_78 [4];
  uint local_74;
  undefined4 local_64;
  uint local_60;
  void *local_5c;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bccc49;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_a0 = param_1;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  FUN_004325b6(PTR_DAT_03236318);
  local_4._0_1_ = 1;
  FUN_004325b6(PTR_DAT_03236318);
  local_4._0_1_ = 2;
  FUN_004325b6(PTR_DAT_03236318);
  local_b4 = wxConvAuto::vftable;
  local_b0 = 0;
  local_a8 = 0xffffffff;
  local_a4 = 0;
  local_a3 = 0;
  local_ac = 0;
  local_4._0_1_ = 4;
  FUN_008b6f20(local_9c,local_54,local_78,local_30,0,&local_b4);
  local_4 = CONCAT31(local_4._1_3_,6);
  FUN_00891400();
  _free(local_80);
  if (7 < local_84) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_98);
  }
  local_84 = 7;
  local_88 = 0;
  local_98 = local_98 & 0xffff0000;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_5c);
  if (7 < local_60) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_74);
  }
  local_60 = 7;
  local_64 = 0;
  local_74 = local_74 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  *param_1 = wxMemoryConfig::vftable;
  ExceptionList = local_c;
  return param_1;
}



int __fastcall FUN_00891a60(int param_1)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  int iVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  iVar4 = DAT_032bdbd8;
  if (DAT_032bdbd8 == 0) {
    if (*(int *)(param_1 + 4) == 0) {
      pvVar2 = operator_new(0x194);
      local_4 = 0;
      if (pvVar2 == (void *)0x0) {
        uVar3 = 0;
      }
      else {
        uVar3 = FUN_00891880(uVar1);
      }
      *(undefined4 *)(param_1 + 4) = uVar3;
    }
    iVar4 = *(int *)(param_1 + 4);
  }
  ExceptionList = local_c;
  return iVar4;
}



void FUN_00891ae0(int param_1,int param_2)

{
  short sVar1;
  void *pvVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  short *psVar7;
  short *psVar8;
  undefined4 local_dc;
  undefined local_d8 [4];
  uint local_d4;
  undefined4 local_c4;
  uint local_c0;
  void *local_bc;
  undefined local_b4 [4];
  uint local_b0;
  undefined4 local_a0;
  uint local_9c;
  void *local_98;
  undefined local_90 [4];
  uint local_8c;
  undefined4 local_7c;
  uint local_78;
  void *local_74;
  undefined local_6c [4];
  uint local_68;
  undefined4 local_58;
  uint local_54;
  void *local_50;
  undefined local_48 [20];
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcccbf;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_dc;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff14;
  ExceptionList = &local_c;
  local_dc = 0;
  if (param_2 != 0) {
    uVar4 = 0;
LAB_00891c02:
    if ((&DAT_00d307a0)[uVar4] != param_2) goto code_r0x00891c0f;
    psVar8 = (short *)PTR_DAT_03236318;
    if (PTR_DAT_03236318 == (undefined *)0x0) {
      psVar8 = &DAT_00fae9c8;
    }
    local_9c = 7;
    local_a0 = 0;
    local_b0 = local_b0 & 0xffff0000;
    psVar7 = psVar8;
    do {
      sVar1 = *psVar7;
      psVar7 = psVar7 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(psVar8,(int)psVar7 - (int)(psVar8 + 1) >> 1);
    local_98 = (void *)0x0;
    local_4 = 2;
    FUN_0043c211((&PTR_s_Western_European__ISO_8859_1__00d308e8)[uVar4]);
    local_4 = CONCAT31(local_4._1_3_,3);
    iVar5 = FUN_0084a340();
    if (iVar5 == 0) goto LAB_00891b7f;
    uVar6 = FUN_0084f210(local_d8,local_b4);
    goto LAB_00891b8c;
  }
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  FUN_0043c211("Default encoding");
  local_4 = CONCAT31(local_4._1_3_,1);
  iVar5 = FUN_0084a340(uVar4);
  if (iVar5 == 0) {
LAB_00891b7f:
    uVar6 = FUN_0084d360(local_d8);
  }
  else {
    uVar6 = FUN_0084f210(local_d8,local_b4);
  }
LAB_00891b8c:
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar6,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(local_bc);
  if (7 < local_c0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_d4);
  }
  local_c0 = 7;
  local_c4 = 0;
  local_d4 = local_d4 & 0xffff0000;
  _free(local_98);
  pvVar2 = ExceptionList;
  uVar4 = local_b0;
  ExceptionList = local_c;
  uVar3 = local_9c;
joined_r0x00891e79:
  local_c = ExceptionList;
  if (7 < uVar3) {
    ExceptionList = pvVar2;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uVar4);
  }
  ___security_check_cookie_4();
  return;
code_r0x00891c0f:
  uVar4 = uVar4 + 1;
  if (0x50 < uVar4) goto code_r0x00891c15;
  goto LAB_00891c02;
code_r0x00891c15:
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 4;
  psVar8 = (short *)PTR_DAT_03236318;
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    psVar8 = &DAT_00fae9c8;
  }
  local_54 = 7;
  local_68 = local_68 & 0xffff0000;
  local_58 = 0;
  psVar7 = psVar8;
  do {
    sVar1 = *psVar7;
    psVar7 = psVar7 + 1;
  } while (sVar1 != 0);
  FID_conflict_assign(psVar8,(int)psVar7 - (int)(psVar8 + 1) >> 1);
  local_50 = (void *)0x0;
  local_4._0_1_ = 5;
  FUN_0043c211("Unknown encoding (%d)");
  local_4 = CONCAT31(local_4._1_3_,6);
  iVar5 = FUN_0084a340();
  if (iVar5 == 0) {
    uVar6 = FUN_0084d360(local_90);
  }
  else {
    uVar6 = FUN_0084f210(local_90,local_6c);
  }
  FUN_008433c0(uVar6);
  local_4._0_1_ = 7;
  FUN_00891500(param_2,local_48,1);
  uVar6 = FUN_008854f0();
  FUN_00853980(local_34,uVar6,local_dc);
  local_4._0_1_ = 6;
  FUN_0081b5bc();
  _free(local_74);
  if (7 < local_78) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_8c);
  }
  local_78 = 7;
  local_7c = 0;
  local_8c = local_8c & 0xffff0000;
  local_4 = CONCAT31(local_4._1_3_,4);
  _free(local_50);
  if (7 < local_54) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_68);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(local_34,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(local_18);
  pvVar2 = ExceptionList;
  uVar4 = local_30;
  ExceptionList = local_c;
  uVar3 = local_1c;
  goto joined_r0x00891e79;
}



void FUN_00891ec0(int param_1,int param_2)

{
  short sVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  short *psVar5;
  short *psVar6;
  undefined4 local_dc;
  undefined local_d8 [4];
  uint local_d4;
  undefined4 local_c4;
  uint local_c0;
  void *local_bc;
  undefined local_b4 [4];
  uint local_b0;
  undefined4 local_a0;
  uint local_9c;
  void *local_98;
  undefined local_90 [4];
  uint local_8c;
  undefined4 local_7c;
  uint local_78;
  void *local_74;
  undefined local_6c [20];
  undefined local_58 [4];
  uint local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bccd29;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_dc;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff14;
  ExceptionList = &local_c;
  local_dc = 0;
  if (param_2 == 0) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    FUN_0043c211("default");
    local_4 = CONCAT31(local_4._1_3_,1);
    iVar3 = FUN_0084a340(uVar2);
    if (iVar3 == 0) {
      uVar4 = FUN_0084d360(local_90);
    }
    else {
      uVar4 = FUN_0084f210(local_90,local_58);
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(uVar4,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_74);
    if (7 < local_78) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_8c);
    }
    local_78 = 7;
    local_7c = 0;
    local_8c = local_8c & 0xffff0000;
    _free(local_3c);
  }
  else {
    uVar2 = 0;
    do {
      if ((&DAT_00d307a0)[uVar2] == param_2) {
        FUN_004325b6((&PTR_u_ISO_8859_1_00d30a30)[uVar2 * 9]);
        goto LAB_008921e3;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < 0x51);
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 2;
    psVar6 = (short *)PTR_DAT_03236318;
    if (PTR_DAT_03236318 == (undefined *)0x0) {
      psVar6 = &DAT_00fae9c8;
    }
    local_9c = 7;
    local_b0 = local_b0 & 0xffff0000;
    local_a0 = 0;
    psVar5 = psVar6;
    do {
      sVar1 = *psVar5;
      psVar5 = psVar5 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(psVar6,(int)psVar5 - (int)(psVar6 + 1) >> 1);
    local_98 = (void *)0x0;
    local_4._0_1_ = 3;
    FUN_0043c211("unknown-%d");
    local_4 = CONCAT31(local_4._1_3_,4);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      uVar4 = FUN_0084d360(local_d8);
    }
    else {
      uVar4 = FUN_0084f210(local_d8,local_b4);
    }
    FUN_008433c0(uVar4);
    local_4._0_1_ = 5;
    FUN_00891500(param_2,local_6c,1);
    uVar4 = FUN_008854f0();
    FUN_00853980(local_34,uVar4,local_dc);
    local_4._0_1_ = 4;
    FUN_0081b5bc();
    _free(local_bc);
    if (7 < local_c0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_d4);
    }
    local_c0 = 7;
    local_c4 = 0;
    local_d4 = local_d4 & 0xffff0000;
    local_4 = CONCAT31(local_4._1_3_,2);
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b0);
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_18);
    local_54 = local_30;
    local_40 = local_1c;
  }
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
LAB_008921e3:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00892210(void)

{
  short sVar1;
  short *psVar2;
  int iVar3;
  short *psVar4;
  short **ppsVar5;
  int local_3c;
  uint local_38;
  undefined **local_34;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bccb48;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_3c = 0;
  local_34 = &PTR_u_ISO_8859_1_00d30a30;
  local_38 = 0;
  do {
    psVar4 = (short *)*local_34;
    ppsVar5 = (short **)local_34;
    while (psVar4 != (short *)0x0) {
      psVar4 = *ppsVar5;
      if (psVar4 == (short *)0x0) {
        psVar4 = &DAT_00fae9c8;
      }
      local_2c = local_2c & 0xffff0000;
      local_18 = 7;
      local_1c = 0;
      psVar2 = psVar4;
      do {
        sVar1 = *psVar2;
        psVar2 = psVar2 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign(psVar4,(int)psVar2 - (int)(psVar4 + 1) >> 1);
      local_14 = (void *)0x0;
      local_4 = 0;
      iVar3 = FUN_00850470(local_30);
      local_4 = 0xffffffff;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
      if (iVar3 == 0) {
        ExceptionList = local_c;
        return (&DAT_00d307a0)[local_3c];
      }
      ppsVar5 = ppsVar5 + 1;
      psVar4 = *ppsVar5;
    }
    local_3c = local_3c + 1;
    local_38 = local_38 + 0x24;
    local_34 = local_34 + 9;
    if (0xb63 < local_38) {
      ExceptionList = local_c;
      return 0x58;
    }
  } while( true );
}



void __thiscall
FUN_00892350(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,int param_3,
            undefined4 param_4,char param_5)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccd68;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840a00(&param_3,param_1,2);
  FUN_00843020(param_2,param_1,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20();
  FUN_0083fe90(param_1_00,uVar3,param_2,uVar4);
  iVar1 = param_3;
  if ((param_5 != '\0') && (param_3 != 0)) {
    _free(*(void **)(param_3 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00892430(int param_1)

{
  int *piVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccd9b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if (*(char *)(param_1 + 0x28) != '\0') {
    piVar1 = (int *)FUN_00891a60(DAT_0323f878 ^ (uint)&stack0xffffffec);
    (**(code **)(*piVar1 + 0x10))(param_1 + 4);
  }
  _free(*(void **)(param_1 + 0x20));
  if (7 < *(uint *)(param_1 + 0x1c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 8));
  }
  *(undefined4 *)(param_1 + 0x1c) = 7;
  *(undefined4 *)(param_1 + 0x18) = 0;
  *(undefined2 *)(param_1 + 8) = 0;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008924c0(int param_1_00,int param_1,int param_2)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  undefined4 uVar4;
  int local_40;
  undefined auStack_3c [8];
  undefined auStack_34 [4];
  undefined4 uStack_30;
  int iStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bccdc8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_40;
  ExceptionList = &local_c;
  local_40 = param_1;
  piVar2 = (int *)FUN_00891a60(DAT_0323f878 ^ (uint)&stack0xffffffb4);
  if (piVar2 == (int *)0x0) goto LAB_00892637;
  iVar3 = (**(code **)(*piVar2 + 0x14))();
  if (param_2 != iVar3) {
    FID_conflict_assign(iVar3,0,0xffffffff);
  }
  if ((*(int *)(param_1_00 + 0x1c) == 0) && (param_1_00 != 0x3236d98)) {
    FID_conflict_assign(&DAT_03236da0,0,0xffffffff);
  }
  uStack_30 = (uint)uStack_30._2_2_ << 0x10;
  uStack_1c = 7;
  iStack_20 = 0;
  FID_conflict_assign(param_1_00 + 8,0,0xffffffff);
  pvStack_18 = (void *)0x0;
  uStack_4 = 0;
  if (iStack_20 == 0) {
LAB_008925a2:
    FID_conflict_append(1,0x2f);
  }
  else {
    uVar4 = 0x2f;
    FUN_0081b3d8(auStack_3c);
    cVar1 = FUN_0081b52b(uVar4);
    if (cVar1 != '\0') goto LAB_008925a2;
  }
  iVar3 = local_40;
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(local_40 + 0x14) != 0)) &&
     (FUN_0081feb2(&local_40,0), local_40 == 0x2f)) {
    FUN_00840480("..\\..\\src\\common\\fmapbase.cpp",0x218,"wxFontMapperBase::ChangePath",
                 "!pathNew || (pathNew[0] != wxCONFIG_PATH_SEPARATOR)",L"should be a relative path")
    ;
  }
  FID_conflict_append(iVar3,0,0xffffffff);
  (**(code **)(*piVar2 + 0x10))(auStack_34);
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_30);
  }
LAB_00892637:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_00892660(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccd9b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  param_1_00[8] = 0;
  local_4 = 0;
  *param_1_00 = param_1;
  uVar1 = FUN_008924c0(param_2,param_1_00 + 1);
  *(undefined *)(param_1_00 + 10) = uVar1;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_008926d0(void)

{
  short sVar1;
  int iVar2;
  char cVar3;
  int *piVar4;
  undefined4 *puVar5;
  undefined *puVar6;
  int iVar7;
  short *psVar8;
  wchar_t *pwVar9;
  short **ppsVar10;
  undefined4 uStack_170;
  undefined4 uStack_16c;
  char *pcStack_168;
  undefined4 uStack_164;
  char *pcStack_160;
  undefined *puStack_15c;
  undefined4 *local_138;
  undefined4 uStack_134;
  undefined4 local_130;
  undefined **ppuStack_12c;
  int iStack_128;
  char cStack_120;
  uint local_f4;
  undefined4 local_e4;
  uint local_e0;
  void *local_dc;
  int local_84;
  uint uStack_80;
  char cStack_7c;
  int iStack_70;
  uint uStack_6c;
  void *pvStack_68;
  undefined local_60 [4];
  uint local_5c;
  int local_4c;
  uint local_48;
  void *local_44;
  char local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcce9a;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_138;
  ExceptionList = &local_c;
  local_130 = 0xffffffff;
  local_48 = 7;
  local_4c = 0;
  local_5c = local_5c & 0xffff0000;
  puStack_15c = (undefined *)0x89274b;
  FID_conflict_assign();
  local_44 = (void *)0x0;
  local_4 = 0;
  FUN_004325b6();
  local_4._0_1_ = 1;
  FUN_00892660();
  local_4._0_1_ = 3;
  _free(local_dc);
  if (7 < local_e0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_e0 = 7;
  local_e4 = 0;
  local_f4 = local_f4 & 0xffff0000;
  if (local_14 == '\0') {
LAB_00892988:
    FUN_008517a0();
    FUN_008517a0();
    if (local_4c != 0) {
      puVar5 = (undefined4 *)FUN_0081b542();
      local_138 = (undefined4 *)*puVar5;
      uStack_134 = puVar5[1];
      cVar3 = FUN_00820040();
      if (cVar3 != '\0') {
        FUN_0081b3d8();
        cVar3 = FUN_00820040();
        if (cVar3 != '\0') {
          FUN_00432231();
          local_4._0_1_ = 0xc;
          puVar6 = (undefined *)FUN_0088a310();
          local_4._0_1_ = 0xd;
          if (local_60 != puVar6) {
            puStack_15c = (undefined *)0x892a4d;
            FID_conflict_assign();
          }
          FUN_0040159c();
          local_4._0_1_ = 3;
          FUN_00432214();
        }
      }
    }
    iStack_128 = 0;
    ppuStack_12c = &PTR_u_ISO_8859_1_00d30a30;
    local_138 = (undefined4 *)0x0;
    do {
      psVar8 = (short *)*ppuStack_12c;
      ppsVar10 = (short **)ppuStack_12c;
      while (psVar8 != (short *)0x0) {
        psVar8 = *ppsVar10;
        if (psVar8 == (short *)0x0) {
          psVar8 = &DAT_00fae9c8;
        }
        uStack_80 = uStack_80 & 0xffff0000;
        uStack_6c = 7;
        iStack_70 = 0;
        do {
          sVar1 = *psVar8;
          psVar8 = psVar8 + 1;
        } while (sVar1 != 0);
        FID_conflict_assign();
        pvStack_68 = (void *)0x0;
        local_4._0_1_ = 0xe;
        iVar7 = FUN_00850470();
        local_4._0_1_ = 3;
        _free(pvStack_68);
        if (7 < uStack_6c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        if (iVar7 == 0) {
          local_4 = (uint)local_4._1_3_ << 8;
          FUN_00892430();
          _free(local_44);
          if (7 < local_48) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          goto LAB_00892fdd;
        }
        ppsVar10 = ppsVar10 + 1;
        psVar8 = *ppsVar10;
      }
      iStack_128 = iStack_128 + 1;
      ppuStack_12c = (undefined **)((short **)ppuStack_12c + 9);
      local_138 = (undefined4 *)((int)local_138 + 0x24);
    } while (local_138 < (undefined *)0xb64);
    FUN_00850fc0();
    FUN_008527e0();
    local_4._0_1_ = 0xf;
    iVar7 = FUN_008507a0();
    local_4._0_1_ = 3;
    _free(pvStack_68);
    if (7 < uStack_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (iVar7 == 0) {
      FUN_00432231();
      piVar4 = (int *)FUN_00855d60();
      iVar2 = iStack_128;
      iVar7 = *piVar4;
      if (*(uint *)(iVar7 + 0x18) < 8) {
        iVar7 = iVar7 + 4;
      }
      else {
        iVar7 = *(int *)(iVar7 + 4);
      }
      pwVar9 = (wchar_t *)(iVar7 + piVar4[1] * 2);
      if ((cStack_120 != '\0') && (iStack_128 != 0)) {
        _free(*(void **)(iStack_128 + 0x1c));
        if (7 < *(uint *)(iVar2 + 0x18)) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        *(undefined4 *)(iVar2 + 0x18) = 7;
        *(undefined4 *)(iVar2 + 0x14) = 0;
        *(undefined2 *)(iVar2 + 4) = 0;
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if ((cStack_7c != '\0') && (local_84 != 0)) {
        _free(*(void **)(local_84 + 0x1c));
        if (7 < *(uint *)(local_84 + 0x18)) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        *(undefined4 *)(local_84 + 0x18) = 7;
        *(undefined4 *)(local_84 + 0x14) = 0;
        *(undefined2 *)(local_84 + 4) = 0;
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if (*pwVar9 == L'-') {
        pwVar9 = pwVar9 + 1;
      }
      puStack_15c = (undefined *)0x892d15;
      FID_conflict__swscanf(pwVar9,L"8859-%u");
    }
    else {
      FUN_008527e0();
      local_4._0_1_ = 0x10;
      iVar7 = FUN_008507a0();
      local_4._0_1_ = 3;
      _free(pvStack_68);
      if (7 < uStack_6c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if (iVar7 == 0) {
        piVar4 = (int *)FUN_00432231();
        iVar7 = *piVar4;
        if (*(uint *)(iVar7 + 0x18) < 8) {
          iVar7 = iVar7 + 4;
        }
        else {
          iVar7 = *(int *)(iVar7 + 4);
        }
        iVar2 = piVar4[1];
        FUN_00432214();
        puStack_15c = (undefined *)0x892dd8;
        FID_conflict__swscanf((wchar_t *)(iVar7 + iVar2 * 2),L"8859-%u");
      }
      else {
        FUN_008527e0();
        local_4._0_1_ = 0x11;
        iVar7 = FUN_008507a0();
        local_4._0_1_ = 3;
        _free(pvStack_68);
        if (7 < uStack_6c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        if (iVar7 != 0) {
          FUN_008527e0();
          local_4._0_1_ = 0x12;
          iVar7 = FUN_008507a0();
          _free(pvStack_68);
          if (7 < uStack_6c) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          if (iVar7 != 0) goto switchD_00892f69_caseD_363;
        }
        FUN_00432231();
        piVar4 = (int *)FUN_00855d60();
        iVar7 = *piVar4;
        if (*(uint *)(iVar7 + 0x18) < 8) {
          iVar7 = iVar7 + 4;
        }
        else {
          iVar7 = *(int *)(iVar7 + 4);
        }
        pwVar9 = (wchar_t *)(iVar7 + piVar4[1] * 2);
        FUN_00432214();
        FUN_00432214();
        if (*pwVar9 == L'-') {
          pwVar9 = pwVar9 + 1;
        }
        puStack_15c = (undefined *)0x892f31;
        iVar7 = FID_conflict__swscanf(pwVar9,L"%u");
        if (iVar7 == 1) {
          puVar6 = (undefined *)local_138;
          if (((undefined *)0x4e1 < local_138) &&
             (puVar6 = (undefined *)((int)local_138 + -0x4e2), puVar6 < (undefined *)0x8)) {
            puVar6 = (undefined *)((int)local_138 + -0x4c3);
          }
          switch(puVar6) {
          case (undefined *)0x362:
            break;
          case (undefined *)0x36a:
            break;
          case (undefined *)0x3a4:
            break;
          case (undefined *)0x3a8:
            break;
          case (undefined *)0x3b5:
            break;
          case (undefined *)0x3b6:
          }
        }
      }
    }
  }
  else {
    piVar4 = (int *)FUN_00891a60();
    puStack_15c = (undefined *)0x8927de;
    FUN_00889880();
    puVar6 = (undefined *)local_138;
    if (local_138 == (undefined4 *)0xffffffff) {
LAB_008928e2:
      FUN_004325b6();
      local_4._0_1_ = 8;
      (**(code **)(*piVar4 + 0x10))();
      local_4._0_1_ = 3;
      FUN_0040159c();
      FUN_004325b6();
      local_4._0_1_ = 9;
      puStack_15c = (undefined *)0x892943;
      FUN_00891800();
      local_4 = CONCAT31(local_4._1_3_,0xb);
      FUN_0040159c();
      if (iStack_70 != 0) {
        puStack_15c = (undefined *)0x892974;
        FID_conflict_assign();
      }
      local_4._0_1_ = 3;
      FUN_0040159c();
      goto LAB_00892988;
    }
    if (local_138 == (undefined4 *)0xfffffffe) {
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00892430();
      FUN_0040159c();
      goto LAB_00892fdd;
    }
    if (((int)local_138 < 0) || (0x58 < (int)local_138)) {
      local_138 = &uStack_170;
      FUN_0043c211(&DAT_00d25fa0);
      cVar3 = FUN_00846b30(6);
      if (cVar3 != '\0') {
        FUN_0081c0f1();
        local_138 = (undefined4 *)&stack0xfffffea8;
        puStack_15c = &stack0xfffffea8;
        pcStack_160 = (char *)0x892873;
        FUN_00432231();
        puStack_15c = &DAT_00d25fa0;
        pcStack_160 = "wxFontMapperBase::NonInteractiveCharsetToEncoding";
        uStack_164 = 0x25a;
        pcStack_168 = "..\\..\\src\\common\\fmapbase.cpp";
        uStack_16c = 6;
        local_4._0_1_ = 5;
        uStack_170 = 0x89289d;
        FUN_008423d0();
        puStack_15c = puVar6;
        pcStack_160 = (char *)&local_84;
        local_4._0_1_ = 7;
        uStack_164 = 0x8928bd;
        FUN_00892350();
        local_4._0_1_ = 4;
        FUN_00842440();
        local_4._0_1_ = 3;
        FUN_0081b5bc();
      }
      goto LAB_008928e2;
    }
  }
switchD_00892f69_caseD_363:
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00892430();
  _free(local_44);
  if (7 < local_48) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
LAB_00892fdd:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int FUN_00893080(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_008926d0(param_1);
  if (iVar1 == -2) {
    iVar1 = -1;
  }
  return iVar1;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3

char * __cdecl _setlocale(int _Category,char *_Locale)

{
  int *piVar1;
  _ptiddata p_Var2;
  void *pvVar3;
  int iVar4;
  char *pcStack_24;
  
  pcStack_24 = (char *)0x0;
  if ((uint)_Category < 6) {
    p_Var2 = __getptd();
    ___updatetlocinfo();
    p_Var2->_ownlocale = p_Var2->_ownlocale | 0x10;
    pvVar3 = __calloc_crt(0xd8,1);
    if (pvVar3 != (void *)0x0) {
      __lock(0xc);
      __copytlocinfo_nolock();
      FUN_00a44b2f();
      pcStack_24 = (char *)__setlocale_nolock(_Category);
      if (pcStack_24 == (char *)0x0) {
        ___removelocaleref(pvVar3);
        ___freetlocinfo(pvVar3);
      }
      else {
        if (_Locale != (char *)0x0) {
          iVar4 = _strcmp(_Locale,&DAT_03240090);
          if (iVar4 != 0) {
            DAT_032eb230 = 1;
          }
        }
        __lock(0xc);
        __updatetlocinfoEx_nolock();
        ___removelocaleref(pvVar3);
        if (((*(byte *)&p_Var2->_ownlocale & 2) == 0) && (((byte)DAT_03240088 & 1) == 0)) {
          __updatetlocinfoEx_nolock();
          _memcpy(&DAT_032ebaec,PTR_DAT_03240170 + 0xc,0x18);
          _sync_legacy_variables_lk();
        }
        FUN_00a44b3b();
      }
    }
    FUN_00a44b6c();
  }
  else {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    pcStack_24 = (char *)0x0;
  }
  return pcStack_24;
}



void FUN_008930b0(wchar_t *param_1,size_t param_2,int param_3,va_list param_4)

{
  wchar_t *_Format;
  
  if (*(uint *)(param_3 + 0x18) < 8) {
    _Format = (wchar_t *)(param_3 + 4);
  }
  else {
    _Format = *(wchar_t **)(param_3 + 4);
  }
  FID_conflict___vswprintf_c(param_1,param_2,_Format,param_4);
  param_1[param_2 - 1] = L'\0';
  return;
}



void FUN_008930f0(int param_1,FILE *param_2)

{
  if (7 < *(uint *)(param_1 + 0x18)) {
    _fputws(*(wchar_t **)(param_1 + 4),param_2);
    return;
  }
  _fputws((wchar_t *)(param_1 + 4),param_2);
  return;
}



int FUN_00893120(wchar_t *param_1,undefined4 param_2)

{
  undefined4 ***_Format;
  int iVar1;
  undefined4 ***local_20 [5];
  uint local_c;
  void *local_8;
  
  FUN_004325b6(param_2);
  _Format = local_20[0];
  if (local_c < 8) {
    _Format = local_20;
  }
  iVar1 = __vswprintf(param_1,(wchar_t *)_Format,&stack0x0000000c);
  _free(local_8);
  if (7 < local_c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_20[0]);
  }
  return iVar1;
}



undefined4 FUN_00893180(undefined4 param_1)

{
  undefined4 uVar1;
  
  uVar1 = DAT_032bdbe4;
  DAT_032bdbe4 = param_1;
  return uVar1;
}



void FUN_00893190(void)

{
  int *piVar1;
  
  if ((DAT_032bdbe4 == 0) && (DAT_032bcb68 != 0)) {
    piVar1 = (int *)FUN_00841320();
    DAT_032bdbe4 = (**(code **)(*piVar1 + 0xc))();
  }
  return;
}



bool __thiscall FUN_008931c0(int *param_1_00,undefined4 param_1)

{
  ushort uVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  
  if (*param_1_00 != -4) {
    if (*param_1_00 == 0) {
      FUN_00a3fb10();
    }
    iVar2 = *param_1_00;
    if (*(uint *)(iVar2 + 0x18) < 8) {
      iVar4 = iVar2 + 4;
    }
    else {
      iVar4 = *(int *)(iVar2 + 4);
    }
    if ((uint)(iVar4 + *(int *)(iVar2 + 0x14) * 2) <= (uint)param_1_00[1]) {
      FUN_00a3fb10();
    }
  }
  uVar1 = *(ushort *)param_1_00[1];
  if ((byte)param_1 < 0x80) {
    return (uint)uVar1 != (int)(char)(byte)param_1;
  }
  uVar3 = FUN_00884ad0(param_1);
  return uVar1 != uVar3;
}



void FUN_00893230(int *param_1,undefined4 param_2)

{
  uint uVar1;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined4 local_34;
  undefined2 local_30;
  uint local_20;
  void *local_1c;
  undefined4 local_18;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdcc30;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_58);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  local_1c = (void *)0x7;
  local_20 = 0;
  local_30 = 0;
  local_18 = 0;
  local_4 = 0;
  FUN_004325b6(param_2);
  local_4._0_1_ = 1;
  FUN_00852fa0(local_58,&stack0x0000000c);
  local_4 = (uint)local_4._1_3_ << 8;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  (**(code **)(*param_1 + 4))(&local_34,uVar1);
  _free(local_1c);
  if (7 < local_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_34);
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



int FUN_00893320(int param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  int local_18;
  short *local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccee9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0;
  local_10 = param_1;
  FID_conflict_assign(param_2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  if (*(int *)(param_1 + 0x14) != 0) {
    FUN_0081b397(&local_18);
    FUN_004226c0(0xffffffff);
    if (local_18 != -4) {
      if (local_18 == 0) {
        FUN_00a3fb10(uVar1);
      }
      if (*(uint *)(local_18 + 0x18) < 8) {
        iVar2 = local_18 + 4;
      }
      else {
        iVar2 = *(int *)(local_18 + 4);
      }
      if ((short *)(iVar2 + *(int *)(local_18 + 0x14) * 2) <= local_14) {
        FUN_00a3fb10(uVar1);
      }
    }
    if (*local_14 == 10) {
      ExceptionList = local_c;
      return param_1;
    }
  }
  FID_conflict_append(1,10);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00893420(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void **ppvVar3;
  undefined4 *puVar4;
  void **local_40;
  void **local_3c;
  undefined local_38 [4];
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bccf28;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_40;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  FUN_00893320(local_34,param_1);
  local_4 = 0;
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440(uVar1);
  }
  uVar2 = FUN_00432413(&local_3c,DAT_032bd4d4);
  local_4._0_1_ = 1;
  FUN_00432305(uVar2);
  local_4 = CONCAT31(local_4._1_3_,3);
  ppvVar3 = (void **)FUN_00850350();
  if (local_3c != ppvVar3) {
    *(short *)(local_3c + 2) = *(short *)(local_3c + 2) + -1;
    if (*(short *)(local_3c + 2) == 0) {
      if (*(char *)((int)local_3c + 10) != '\0') {
        _free(*local_3c);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_3c);
    }
    local_3c = (void **)FUN_00850350();
  }
  if (*local_40 == (void *)0x0) {
    puVar4 = (undefined4 *)FUN_00851e30(local_38);
    _fprintf(*(FILE **)(param_1_00 + 4),"%s",*(undefined4 *)*puVar4);
    thunk_FUN_0043c1dd();
  }
  else {
    _fprintf(*(FILE **)(param_1_00 + 4),"%s",*local_40);
  }
  _fflush(*(FILE **)(param_1_00 + 4));
  local_4 = local_4 & 0xffffff00;
  ppvVar3 = (void **)FUN_00850350();
  if (local_40 != ppvVar3) {
    *(short *)(local_40 + 2) = *(short *)(local_40 + 2) + -1;
    if (*(short *)(local_40 + 2) == 0) {
      if (*(char *)((int)local_40 + 10) != '\0') {
        _free(*local_40);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_40);
    }
    local_40 = (void **)FUN_00850350();
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008935d0(undefined4 param_1)

{
  undefined4 ***lpOutputString;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 ***local_30 [5];
  uint local_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bccf78;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_7c;
  ExceptionList = &local_c;
  FUN_00893320(local_34,param_1);
  local_4 = 0;
  FUN_004325b6(L"        ");
  local_4._0_1_ = 1;
  FUN_004325b6(&DAT_00d31a28);
  local_4._0_1_ = 2;
  FUN_00852a70(local_7c,local_58,1);
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  local_4._0_1_ = 0;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  FUN_004325b6(&DAT_00d31a20);
  local_4._0_1_ = 3;
  FUN_004325b6(&DAT_00d23e68);
  local_4 = CONCAT31(local_4._1_3_,4);
  FUN_00852a70(local_7c,local_58,1);
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  lpOutputString = local_30[0];
  if (local_1c < 8) {
    lpOutputString = local_30;
  }
  OutputDebugStringW((LPCWSTR)lpOutputString);
  _free(pvStack_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008937b0(int param_1_00,int param_1)

{
  bool bVar1;
  char cVar2;
  int *piVar3;
  undefined4 uVar4;
  undefined *puVar5;
  int iVar6;
  LPCWSTR lpText;
  undefined4 ****lpCaption;
  uint local_a4;
  undefined auStack_a0 [4];
  uint uStack_9c;
  undefined4 uStack_8c;
  uint uStack_88;
  void *pvStack_84;
  undefined auStack_7c [4];
  undefined4 uStack_78;
  uint uStack_64;
  void *pvStack_60;
  undefined auStack_58 [4];
  undefined4 uStack_54;
  uint uStack_40;
  void *pvStack_3c;
  undefined auStack_34 [4];
  undefined4 ****appppuStack_30 [4];
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bccfe2;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_a4;
  ExceptionList = &local_c;
  local_a4 = 0;
  if (DAT_032bcb68 == 0) {
    piVar3 = (int *)0x0;
LAB_0089381c:
    cVar2 = '\0';
  }
  else {
    piVar3 = (int *)FUN_00841320(DAT_0323f878 ^ (uint)&stack0xffffff4c);
    if (piVar3 == (int *)0x0) goto LAB_0089381c;
    cVar2 = (**(code **)(*piVar3 + 0x60))();
  }
  if ((*(byte *)(param_1_00 + 8) & 1) == 0) {
    if (cVar2 == '\0') {
LAB_0089385a:
      bVar1 = false;
    }
    else {
      uVar4 = FUN_00893320(auStack_7c,param_1);
      uStack_4 = 0;
      local_a4 = 1;
      cVar2 = (**(code **)(*piVar3 + 100))(uVar4);
      if (cVar2 == '\0') goto LAB_0089385a;
      bVar1 = true;
    }
    uStack_4 = 0xffffffff;
    if (((local_a4 & 1) != 0) && (_free(pvStack_60), 7 < uStack_64)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_78);
    }
    if (bVar1) goto LAB_00893a3f;
  }
  uStack_1c = 7;
  uStack_20 = 0;
  appppuStack_30[0] = (undefined4 ****)((uint)appppuStack_30[0] & 0xffff0000);
  pvStack_18 = (void *)0x0;
  uStack_4 = 1;
  if (DAT_032bcb68 == 0) {
    FUN_004325b6(PTR_DAT_03236318);
    uStack_4._0_1_ = 3;
    FUN_0043c211("Message");
    uStack_4 = CONCAT31(uStack_4._1_3_,4);
    iVar6 = FUN_0084a340();
    if (iVar6 == 0) {
      puVar5 = (undefined *)FUN_0084d360(auStack_a0);
    }
    else {
      puVar5 = (undefined *)FUN_0084f210(auStack_a0,auStack_58);
    }
    if (auStack_34 != puVar5) {
      FID_conflict_assign(puVar5,0,0xffffffff);
    }
    _free(pvStack_84);
    if (7 < uStack_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_9c);
    }
    uStack_88 = 7;
    uStack_8c = 0;
    uStack_9c = uStack_9c & 0xffff0000;
    _free(pvStack_3c);
  }
  else {
    puVar5 = (undefined *)FUN_00841240(auStack_7c);
    uStack_4 = CONCAT31(uStack_4._1_3_,2);
    if (auStack_34 != puVar5) {
      FID_conflict_assign(puVar5,0,0xffffffff);
    }
    _free(pvStack_60);
    uStack_54 = uStack_78;
    uStack_40 = uStack_64;
  }
  if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_54);
  }
  lpCaption = appppuStack_30[0];
  if (uStack_1c < 8) {
    lpCaption = appppuStack_30;
  }
  if (*(uint *)(param_1 + 0x18) < 8) {
    lpText = (LPCWSTR)(param_1 + 4);
  }
  else {
    lpText = *(LPCWSTR *)(param_1 + 4);
  }
  MessageBoxW((HWND)0x0,lpText,(LPCWSTR)lpCaption,0x40);
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(appppuStack_30[0]);
  }
LAB_00893a3f:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00893a70(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x00893a78. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x58))();
  return;
}



bool __fastcall FUN_00893a80(int param_1)

{
  return *(int *)(param_1 + 0x18) != 0;
}



void FUN_00893a90(HANDLE param_1)

{
  WaitForSingleObject(param_1,0xffffffff);
  return;
}



void FUN_00893aa0(HANDLE param_1)

{
                    // WARNING: Could not recover jumptable at 0x00893aa8. Too many branches
                    // WARNING: Treating indirect jump as call
  WaitForSingleObject(param_1,0xffffffff);
  return;
}



void __fastcall FUN_00893ab0(undefined4 *param_1)

{
  *param_1 = wxEventLoopBase::vftable;
  return;
}



undefined4 * __thiscall FUN_00893ac0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxTimerImpl::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_00893ae0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x14);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_008b7e90(uVar1);
    *puVar2 = wxConsoleEventLoop::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



int FUN_00893b40(FILE *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  wchar_t *_Format;
  undefined4 uVar2;
  int iVar3;
  uint param_9;
  void *param_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bca288;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840990(&param_3,param_2,1);
  _Format = (wchar_t *)FUN_008854f0(uVar1);
  uVar2 = FUN_00884e10();
  iVar3 = _fwprintf(param_1,_Format,uVar2);
  _free(param_10);
  if (7 < param_9) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_4);
  }
  ExceptionList = local_c;
  return iVar3;
}



bool FUN_00893be0(undefined4 param_1)

{
  int iVar1;
  undefined local_20 [20];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd018;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0083fbe0();
  local_4 = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  iVar1 = FUN_00a475e9(local_20);
  iVar1 = FUN_00893b40(iVar1 + 0x40);
  local_4 = 0xffffffff;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return iVar1 != -1;
}



uint FUN_00893ca0(uint param_1)

{
  uint uVar1;
  uint *puVar2;
  
  puVar2 = &DAT_00d31ac0;
  uVar1 = 0;
  do {
    if (param_1 < *puVar2) {
      return *puVar2;
    }
    uVar1 = uVar1 + 1;
    puVar2 = puVar2 + 1;
  } while (uVar1 < 0x1f);
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\hashmap.cpp",0x49,"_wxHashTableBase2::GetNextPrime",
                 "Assert failure",L"hash table too big?");
  }
  return 0;
}



void FUN_00893cf0(uint param_1,void *param_2,code *param_3)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  uint uVar3;
  
  uVar3 = 0;
  if (param_1 != 0) {
    do {
      puVar2 = *(undefined4 **)((int)param_2 + uVar3 * 4);
      while (puVar2 != (undefined4 *)0x0) {
        puVar1 = (undefined4 *)*puVar2;
        (*param_3)(puVar2);
        puVar2 = puVar1;
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < param_1);
  }
  _memset(param_2,0,param_1 * 4);
  return;
}



void FUN_00893d40(int param_1,uint param_2,undefined4 param_3,int param_4,code *param_5,
                 code *param_6)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  uint local_4;
  
  local_4 = 0;
  if (param_2 != 0) {
    do {
      puVar3 = *(undefined4 **)(param_1 + local_4 * 4);
      while (puVar3 != (undefined4 *)0x0) {
        iVar2 = (*param_5)(param_3,puVar3);
        puVar1 = (undefined4 *)*puVar3;
        puVar3 = (undefined4 *)(*param_6)(puVar3);
        *puVar3 = *(undefined4 *)(param_4 + iVar2 * 4);
        *(undefined4 **)(param_4 + iVar2 * 4) = puVar3;
        puVar3 = puVar1;
      }
      local_4 = local_4 + 1;
    } while (local_4 < param_2);
  }
  return;
}



int __fastcall FUN_00893db0(undefined4 param_1,ushort *param_2)

{
  ushort uVar1;
  uint uVar2;
  
  uVar2 = 0;
  uVar1 = *param_2;
  while (uVar1 != 0) {
    uVar2 = (uVar2 + uVar1) * 0x401;
    param_2 = param_2 + 1;
    uVar2 = uVar2 ^ uVar2 >> 6;
    uVar1 = *param_2;
  }
  return (uVar2 * 9 >> 0xb ^ uVar2 * 9) * 0x8001;
}



void FUN_00893df0(void)

{
  FUN_00893db0();
  return;
}



bool __thiscall FUN_00893e00(int *param_1_00,int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1_00;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *param_1)))) {
    FUN_00a3fb10();
  }
  return (uint)param_1_00[1] < (uint)param_1[1];
}



void FUN_00893e30(int *param_1,short *param_2,int *param_3)

{
  int iVar1;
  int *in_EAX;
  int iVar2;
  short *psVar3;
  int unaff_EBX;
  short *psVar4;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    iVar1 = *param_3;
    if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *in_EAX)))) {
      FUN_00a3fb10();
    }
    if ((uint)param_3[1] < (uint)in_EAX[1]) {
      FUN_00840480("..\\..\\src\\common\\tokenzr.cpp",0x32,"find_first_of","from <= end",
                   L"invalid index");
    }
  }
  iVar1 = *in_EAX;
  psVar4 = (short *)in_EAX[1];
  do {
    if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *param_3)))) {
      FUN_00a3fb10();
    }
    if (psVar4 == (short *)param_3[1]) {
      iVar1 = param_3[1];
      *param_1 = *param_3;
      param_1[1] = iVar1;
      return;
    }
    if (iVar1 != -4) {
      if (iVar1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar1 + 0x18) < 8) {
        iVar2 = iVar1 + 4;
      }
      else {
        iVar2 = *(int *)(iVar1 + 4);
      }
      if ((short *)(iVar2 + *(int *)(iVar1 + 0x14) * 2) <= psVar4) {
        FUN_00a3fb10();
      }
    }
    iVar2 = unaff_EBX;
    psVar3 = param_2;
    if (unaff_EBX != 0) {
      do {
        if (*psVar3 == *psVar4) {
          if (iVar2 != 0) {
            param_1[1] = (int)psVar4;
            *param_1 = iVar1;
            return;
          }
          break;
        }
        iVar2 = iVar2 + -1;
        psVar3 = psVar3 + 1;
      } while (iVar2 != 0);
    }
    if (iVar1 != -4) {
      if (iVar1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar1 + 0x18) < 8) {
        iVar2 = iVar1 + 4;
      }
      else {
        iVar2 = *(int *)(iVar1 + 4);
      }
      if ((short *)(iVar2 + *(int *)(iVar1 + 0x14) * 2) <= psVar4) {
        FUN_00a3fb10();
      }
    }
    psVar4 = psVar4 + 1;
  } while( true );
}



void FUN_00893f40(int *param_1,short *param_2,int *param_3)

{
  int iVar1;
  int *in_EAX;
  int iVar2;
  short *psVar3;
  int unaff_EBX;
  short *psVar4;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    iVar1 = *param_3;
    if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *in_EAX)))) {
      FUN_00a3fb10();
    }
    if ((uint)param_3[1] < (uint)in_EAX[1]) {
      FUN_00840480("..\\..\\src\\common\\tokenzr.cpp",0x42,"find_first_not_of","from <= end",
                   L"invalid index");
    }
  }
  iVar1 = *in_EAX;
  psVar4 = (short *)in_EAX[1];
  while( true ) {
    if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *param_3)))) {
      FUN_00a3fb10();
    }
    if (psVar4 == (short *)param_3[1]) {
      iVar1 = param_3[1];
      *param_1 = *param_3;
      param_1[1] = iVar1;
      return;
    }
    if (iVar1 != -4) {
      if (iVar1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar1 + 0x18) < 8) {
        iVar2 = iVar1 + 4;
      }
      else {
        iVar2 = *(int *)(iVar1 + 4);
      }
      if ((short *)(iVar2 + *(int *)(iVar1 + 0x14) * 2) <= psVar4) {
        FUN_00a3fb10();
      }
    }
    iVar2 = unaff_EBX;
    psVar3 = param_2;
    if (unaff_EBX == 0) break;
    while (*psVar3 != *psVar4) {
      iVar2 = iVar2 + -1;
      psVar3 = psVar3 + 1;
      if (iVar2 == 0) goto LAB_00893ff3;
    }
    if (iVar2 == 0) break;
    if (iVar1 != -4) {
      if (iVar1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar1 + 0x18) < 8) {
        iVar2 = iVar1 + 4;
      }
      else {
        iVar2 = *(int *)(iVar1 + 4);
      }
      if ((short *)(iVar2 + *(int *)(iVar1 + 0x14) * 2) <= psVar4) {
        FUN_00a3fb10();
      }
    }
    psVar4 = psVar4 + 1;
  }
LAB_00893ff3:
  param_1[1] = (int)psVar4;
  *param_1 = iVar1;
  return;
}



undefined4 __fastcall FUN_00894050(int param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  int *piVar4;
  undefined4 uVar5;
  undefined local_8 [8];
  
  if (*(int *)(param_1 + 0x48) == -1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\tokenzr.cpp",0xa5,"wxStringTokenizer::DoHasMoreTokens",
                   "IsOk()",L"you should call SetString() first");
    }
    return 0;
  }
  piVar1 = (int *)(param_1 + 0x30);
  piVar4 = (int *)FUN_00893f40(local_8,**(undefined4 **)(param_1 + 0x38),piVar1);
  iVar2 = *piVar4;
  if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != *piVar1)))) {
    FUN_00a3fb10();
  }
  if (piVar4[1] == *(int *)(param_1 + 0x34)) {
    switch(*(int *)(param_1 + 0x48) + 1) {
    case 0:
    case 1:
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
        return 0;
      }
      FUN_00840480("..\\..\\src\\common\\tokenzr.cpp",0xc1,"wxStringTokenizer::DoHasMoreTokens",
                   "Assert failure",L"unexpected tokenizer mode");
      return 0;
    case 2:
    case 4:
      if (*(int *)(param_1 + 0x20) != 0) {
        uVar5 = FUN_00847890(local_8);
        cVar3 = FUN_008477a0(uVar5);
        if (cVar3 != '\0') {
          return 1;
        }
      }
      break;
    case 3:
      cVar3 = FUN_00893e00(piVar1);
      if ((cVar3 != '\0') || (*(short *)(param_1 + 0x4c) != 0)) {
        return 1;
      }
      break;
    default:
      return 0;
    }
    return 0;
  }
  return 1;
}



undefined4 __fastcall FUN_00894180(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *(int *)(param_1 + 8);
  if (iVar1 == 0) {
    uVar2 = FUN_00894050();
    *(uint *)(param_1 + 8) = ((char)uVar2 == '\0') + 1;
    return uVar2;
  }
  return CONCAT31((int3)((uint)iVar1 >> 8),iVar1 == 1);
}



void __thiscall FUN_008941b0(int param_1_00,int param_1)

{
  undefined4 uVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined local_8 [8];
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x48) == -1)) {
    FUN_00840480("..\\..\\src\\common\\tokenzr.cpp",0x83,"wxStringTokenizer::Reinit","IsOk()",
                 L"you should call SetString() first");
  }
  if (param_1_00 + 0xc != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  puVar3 = (undefined4 *)FUN_0081b397(local_8);
  uVar1 = *puVar3;
  *(undefined4 *)(param_1_00 + 0x34) = puVar3[1];
  *(undefined4 *)(param_1_00 + 0x30) = uVar1;
  uVar2 = *(uint *)(param_1_00 + 0x24);
  puVar3 = (undefined4 *)(param_1_00 + 0x10);
  puVar5 = puVar3;
  if (7 < uVar2) {
    puVar5 = (undefined4 *)*puVar3;
  }
  if (puVar5 != (undefined4 *)0x0) {
    puVar4 = puVar3;
    if (7 < uVar2) {
      puVar4 = (undefined4 *)*puVar3;
    }
    if (puVar4 <= puVar5) {
      if (7 < uVar2) {
        puVar3 = (undefined4 *)*puVar3;
      }
      if (puVar5 <= (undefined4 *)((int)puVar3 + *(int *)(param_1_00 + 0x20) * 2))
      goto LAB_00894250;
    }
  }
  FUN_00a3fb10();
LAB_00894250:
  *(int *)(param_1_00 + 0x40) = param_1_00 + 0xc;
  *(undefined4 **)(param_1_00 + 0x44) = puVar5;
  *(undefined2 *)(param_1_00 + 0x4c) = 0;
  *(undefined4 *)(param_1_00 + 8) = 0;
  return;
}



int __thiscall FUN_00894270(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  undefined2 *puVar3;
  char cVar4;
  undefined2 uVar5;
  uint uVar6;
  undefined2 *puVar7;
  undefined4 *puVar8;
  int iVar9;
  undefined4 *puVar10;
  int local_1c;
  undefined2 *local_18;
  undefined2 *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcd059;
  local_c = ExceptionList;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_2 + 0x18) = 7;
  *(undefined4 *)(param_2 + 0x14) = 0;
  *(undefined2 *)(param_2 + 4) = 0;
  *(undefined4 *)(param_2 + 0x1c) = 0;
  local_4 = 0;
  do {
    if (*(int *)(param_1 + 8) == 0) {
      cVar4 = FUN_00894050(uVar6);
      *(uint *)(param_1 + 8) = (cVar4 == '\0') + 1;
    }
    else {
      cVar4 = *(int *)(param_1 + 8) == 1;
    }
    if (cVar4 == '\0') {
      ExceptionList = local_c;
      return param_2;
    }
    *(undefined4 *)(param_1 + 8) = 0;
    piVar1 = (int *)(param_1 + 0x40);
    FUN_00893e30(&local_1c,**(undefined4 **)(param_1 + 0x38),param_1 + 0x30);
    iVar2 = local_1c;
    if ((local_1c != -4) && ((local_1c == 0 || (local_1c != *(int *)(param_1 + 0x30))))) {
      FUN_00a3fb10();
    }
    puVar3 = local_18;
    if (local_18 == *(undefined2 **)(param_1 + 0x34)) {
      FUN_00428080(*piVar1,*(undefined4 *)(param_1 + 0x44),*(undefined4 *)(param_1 + 0x30),
                   *(undefined4 *)(param_1 + 0x34));
      *piVar1 = *(int *)(param_1 + 0x30);
      *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_1 + 0x34);
      uVar5 = 0;
    }
    else {
      puVar7 = local_18;
      if (*(int *)(param_1 + 0x48) == 3) {
        if (iVar2 != -4) {
          if (iVar2 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar2 + 0x18) < 8) {
            iVar9 = iVar2 + 4;
          }
          else {
            iVar9 = *(int *)(iVar2 + 4);
          }
          if ((undefined2 *)(iVar9 + *(int *)(iVar2 + 0x14) * 2) <= puVar3) {
            FUN_00a3fb10();
          }
        }
        puVar7 = puVar3 + 1;
      }
      FUN_00428080(*piVar1,*(undefined4 *)(param_1 + 0x44),iVar2,puVar7);
      local_10 = puVar3;
      if (iVar2 != -4) {
        if (iVar2 == 0) {
          FUN_00a3fb10();
        }
        puVar8 = (undefined4 *)(iVar2 + 4);
        puVar10 = puVar8;
        if (7 < *(uint *)(iVar2 + 0x18)) {
          puVar10 = (undefined4 *)*puVar8;
        }
        if (puVar3 + 1 <= (undefined2 *)((int)puVar10 + *(int *)(iVar2 + 0x14) * 2)) {
          if (7 < *(uint *)(iVar2 + 0x18)) {
            puVar8 = (undefined4 *)*puVar8;
          }
          if (puVar8 <= puVar3 + 1) goto LAB_008943f6;
        }
        FUN_00a3fb10();
      }
LAB_008943f6:
      *piVar1 = iVar2;
      *(undefined2 **)(param_1 + 0x44) = puVar3 + 1;
      if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != *(int *)(param_1 + 0x30))))) {
        FUN_00a3fb10();
      }
      if (puVar3 == *(undefined2 **)(param_1 + 0x34)) {
        uVar5 = 0;
      }
      else {
        if (iVar2 != -4) {
          if (iVar2 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar2 + 0x18) < 8) {
            iVar9 = iVar2 + 4;
          }
          else {
            iVar9 = *(int *)(iVar2 + 4);
          }
          if ((undefined2 *)(iVar9 + *(int *)(iVar2 + 0x14) * 2) <= puVar3) {
            FUN_00a3fb10();
          }
        }
        uVar5 = *puVar3;
      }
    }
    *(undefined2 *)(param_1 + 0x4c) = uVar5;
    if (*(int *)(param_1 + 0x48) != 4) {
      ExceptionList = local_c;
      return param_2;
    }
    if (*(int *)(param_2 + 0x14) != 0) {
      ExceptionList = local_c;
      return param_2;
    }
  } while( true );
}



void __thiscall FUN_00894480(int param_1_00,undefined4 param_1,void **param_2,int param_3)

{
  short *psVar1;
  void *pvVar2;
  uint uVar3;
  int *piVar4;
  int iVar5;
  void **ppvVar6;
  void **ppvVar7;
  int iVar8;
  void **ppvVar9;
  wint_t **ppwVar10;
  wint_t **ppwVar11;
  wint_t **ppwVar12;
  wint_t **ppwVar13;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  ppvVar6 = param_2;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd088;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  iVar5 = param_3;
  if (param_3 == 0) {
    piVar4 = (int *)FUN_00847890(local_14);
    ppvVar7 = (void **)*piVar4;
    ppwVar13 = (wint_t **)piVar4[1];
    do {
      pvVar2 = ppvVar6[6];
      ppwVar10 = (wint_t **)(ppvVar6 + 1);
      ppwVar11 = ppwVar10;
      if ((void *)0x7 < pvVar2) {
        ppwVar11 = (wint_t **)*ppwVar10;
      }
      ppwVar11 = (wint_t **)((int)ppvVar6[5] * 2 + (int)ppwVar11);
      if (ppwVar11 == (wint_t **)0x0) {
LAB_00894509:
        FUN_00a3fb10();
      }
      else {
        ppwVar12 = ppwVar10;
        if ((void *)0x7 < pvVar2) {
          ppwVar12 = (wint_t **)*ppwVar10;
        }
        if (ppwVar11 < ppwVar12) goto LAB_00894509;
        if ((void *)0x7 < pvVar2) {
          ppwVar10 = (wint_t **)*ppwVar10;
        }
        if ((wint_t **)((int)ppvVar6[5] * 2 + (int)ppwVar10) < ppwVar11) goto LAB_00894509;
      }
      if ((ppvVar7 != (void **)0xfffffffc) && ((ppvVar7 == (void **)0x0 || (ppvVar7 != param_2)))) {
        FUN_00a3fb10();
      }
      if (ppwVar13 == ppwVar11) goto LAB_00894599;
      if (ppvVar7 != (void **)0xfffffffc) {
        if (ppvVar7 == (void **)0x0) {
          FUN_00a3fb10();
        }
        if (ppvVar7[6] < (void *)0x8) {
          ppvVar6 = ppvVar7 + 1;
        }
        else {
          ppvVar6 = (void **)ppvVar7[1];
        }
        if ((wint_t **)((int)ppvVar6 + (int)ppvVar7[5] * 2) <= ppwVar13) {
          FUN_00a3fb10();
        }
      }
      iVar5 = _iswspace(*(wint_t *)ppwVar13);
      if (iVar5 == 0) goto LAB_00894599;
      if (ppvVar7 != (void **)0xfffffffc) {
        if (ppvVar7 == (void **)0x0) {
          FUN_00a3fb10();
        }
        if (ppvVar7[6] < (void *)0x8) {
          ppvVar6 = ppvVar7 + 1;
        }
        else {
          ppvVar6 = (void **)ppvVar7[1];
        }
        if ((wint_t **)((int)ppvVar6 + (int)ppvVar7[5] * 2) <= ppwVar13) {
          FUN_00a3fb10();
        }
      }
      ppwVar13 = (wint_t **)((int)ppwVar13 + 2);
      ppvVar6 = param_2;
    } while( true );
  }
  goto LAB_00894603;
LAB_00894599:
  pvVar2 = param_2[6];
  ppwVar11 = (wint_t **)(param_2 + 1);
  ppwVar10 = ppwVar11;
  if ((void *)0x7 < pvVar2) {
    ppwVar10 = (wint_t **)*ppwVar11;
  }
  ppwVar10 = (wint_t **)((int)param_2[5] * 2 + (int)ppwVar10);
  if (ppwVar10 == (wint_t **)0x0) {
LAB_008945d8:
    FUN_00a3fb10();
  }
  else {
    ppwVar12 = ppwVar11;
    if ((void *)0x7 < pvVar2) {
      ppwVar12 = (wint_t **)*ppwVar11;
    }
    if (ppwVar10 < ppwVar12) goto LAB_008945d8;
    if ((void *)0x7 < pvVar2) {
      ppwVar11 = (wint_t **)*ppwVar11;
    }
    if ((wint_t **)((int)param_2[5] * 2 + (int)ppwVar11) < ppwVar10) goto LAB_008945d8;
  }
  if ((ppvVar7 != (void **)0xfffffffc) && ((ppvVar7 == (void **)0x0 || (ppvVar7 != param_2)))) {
    FUN_00a3fb10();
  }
  iVar5 = (-(uint)(ppwVar13 != ppwVar10) & 0xfffffffd) + 4;
LAB_00894603:
  ppvVar6 = param_2;
  if (param_2[6] < (void *)0x8) {
    ppvVar7 = param_2 + 1;
  }
  else {
    ppvVar7 = (void **)param_2[1];
  }
  FUN_008514e0(ppvVar7,0xffffffff);
  piVar4 = (int *)(param_1_00 + 0x38);
  local_4 = 0;
  if (&param_2 != (void ***)piVar4) {
    iVar8 = FUN_00850350(uVar3);
    if (*piVar4 != iVar8) {
      psVar1 = (short *)(*piVar4 + 8);
      *psVar1 = *psVar1 + -1;
      ppvVar7 = (void **)*piVar4;
      if ((*(short *)(ppvVar7 + 2) == 0) && (ppvVar7 != (void **)0x0)) {
        if (*(char *)((int)ppvVar7 + 10) != '\0') {
          _free(*ppvVar7);
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(ppvVar7);
      }
      iVar8 = FUN_00850350(uVar3);
      *piVar4 = iVar8;
    }
    *piVar4 = (int)param_2;
    iVar8 = FUN_00850350(uVar3);
    if (*piVar4 != iVar8) {
      psVar1 = (short *)(*piVar4 + 8);
      *psVar1 = *psVar1 + 1;
    }
  }
  local_4 = 0xffffffff;
  ppvVar9 = (void **)FUN_00850350(uVar3);
  ppvVar7 = param_2;
  if (param_2 != ppvVar9) {
    *(short *)(param_2 + 2) = *(short *)(param_2 + 2) + -1;
    if (*(short *)(param_2 + 2) == 0) {
      if (*(char *)((int)param_2 + 10) != '\0') {
        _free(*param_2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar7);
    }
    param_2 = (void **)FUN_00850350(uVar3);
  }
  *(void **)(param_1_00 + 0x3c) = ppvVar6[5];
  *(int *)(param_1_00 + 0x48) = iVar5;
  FUN_008941b0(param_1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall
FUN_00894710(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcd0d6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxStringTokenizer::vftable;
  param_1_00[9] = 7;
  param_1_00[8] = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  param_1_00[10] = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  param_1_00[0xc] = 0;
  param_1_00[0xd] = 0;
  uVar2 = FUN_00850350(uVar1);
  param_1_00[0xe] = uVar2;
  local_4._0_1_ = 2;
  uVar2 = FUN_00850350();
  param_1_00[0xe] = uVar2;
  local_4 = CONCAT31(local_4._1_3_,3);
  param_1_00[0x10] = 0;
  param_1_00[0x11] = 0;
  FUN_00894480(param_1,param_2,param_3);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_008947c0(undefined4 param_1_00,byte param_1)

{
  FUN_0083fa70();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_008947e0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 local_8c;
  undefined4 local_88;
  undefined local_84 [4];
  undefined4 local_80;
  uint local_6c;
  void *local_68;
  int local_58;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcd135;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_8c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff64;
  ExceptionList = &local_c;
  local_4 = 0;
  local_88 = param_1;
  local_8c = 0;
  FUN_00853ce0(0);
  local_4 = 0;
  local_8c = 1;
  FUN_00894710(param_2,param_3,param_4);
  local_4 = 1;
  while( true ) {
    if (local_58 == 0) {
      cVar1 = FUN_00894050(uVar2);
      local_58 = (cVar1 == '\0') + 1;
    }
    else {
      cVar1 = local_58 == 1;
    }
    if (cVar1 == '\0') break;
    uVar3 = FUN_00894270(local_84);
    local_4._0_1_ = 2;
    FUN_00854700(uVar3,1);
    local_4 = CONCAT31(local_4._1_3_,1);
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_80);
    }
  }
  local_4 = local_4 & 0xffffff00;
  FUN_0083fa70();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00894920(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_0089f2d0(*param_1_00,param_1);
  return;
}



undefined4 FUN_00894940(LPWSTR param_1,DWORD param_2)

{
  BOOL BVar1;
  DWORD DVar2;
  
  DVar2 = param_2;
  BVar1 = GetUserNameW(param_1,&param_2);
  if (BVar1 == 0) {
    DVar2 = GetEnvironmentVariableW(L"username",param_1,DVar2);
    if (DVar2 == 0) {
      return 0;
    }
  }
  return 1;
}



DWORD GetCurrentProcessId(void)

{
  DWORD DVar1;
  
                    // WARNING: Could not recover jumptable at 0x00894980. Too many branches
                    // WARNING: Treating indirect jump as call
  DVar1 = GetCurrentProcessId();
  return DVar1;
}



void FUN_00894990(void)

{
  MessageBeep(0xffffffff);
  return;
}



void FUN_008949a0(void)

{
  BOOL BVar1;
  _OSVERSIONINFOW local_120;
  byte bStack_6;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_120;
  _memset(&local_120,0,0x11c);
  local_120.dwOSVersionInfoSize = 0x11c;
  BVar1 = GetVersionExW(&local_120);
  if (BVar1 != 0) {
    if (bStack_6 == 1) {
      ___security_check_cookie_4();
      return;
    }
    if ((1 < bStack_6) && (bStack_6 < 4)) {
      ___security_check_cookie_4();
      return;
    }
  }
  ___security_check_cookie_4();
  return;
}



void FUN_00894a40(DWORD *param_1,DWORD *param_2)

{
  BOOL BVar1;
  _OSVERSIONINFOW local_118;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_118;
  if (DAT_032bdbf4 == 0) {
    _memset(&local_118,0,0x114);
    local_118.dwOSVersionInfoSize = 0x114;
    BVar1 = GetVersionExW(&local_118);
    if (BVar1 == 0) {
      DAT_032bdbf4 = -1;
      goto LAB_00894aed;
    }
    DAT_032bdbf4 = 1;
    if (local_118.dwPlatformId == 1) {
      DAT_032bdbf8 = 4;
    }
    else if (local_118.dwPlatformId == 2) {
      DAT_032bdbf8 = 8;
    }
    DAT_032bdbfc = local_118.dwMajorVersion;
    DAT_032bdc00 = local_118.dwMinorVersion;
  }
  else if (DAT_032bdbf4 != 1) goto LAB_00894aed;
  if (param_1 != (DWORD *)0x0) {
    *param_1 = DAT_032bdbfc;
  }
  if (param_2 != (DWORD *)0x0) {
    *param_2 = DAT_032bdc00;
    ___security_check_cookie_4();
    return;
  }
LAB_00894aed:
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00894b40(void)

{
  int iVar1;
  int local_8;
  int local_4;
  
  iVar1 = FUN_00894a40(&local_8,&local_4);
  if (iVar1 == 4) {
    if (local_8 == 4) {
      if (local_4 == 0) {
        return 0x400;
      }
      if (local_4 == 10) {
        return 0x410;
      }
      if (local_4 == 0x5a) {
        return 0x500;
      }
    }
  }
  else if (iVar1 == 8) {
    switch(local_8) {
    case 3:
      return 0x300;
    case 4:
      return 0x400;
    case 5:
      if (local_4 == 0) {
        return 0x500;
      }
      if ((local_4 == 1) || (local_4 == 2)) {
        return 0x501;
      }
      break;
    case 6:
      return 0x600;
    }
  }
  return 0;
}



undefined4 FUN_00894bf0(undefined4 param_1)

{
  switch(param_1) {
  default:
    return 0xffffffff;
  case 1:
  case 0xf:
  case 0x21:
    return 0;
  case 0x15:
    return 0xff;
  case 0x1a:
    return 0xde;
  case 0x1b:
    return 0x80;
  case 0x1c:
    return 0x86;
  case 0x1d:
    return 0x81;
  case 0x1e:
    return 0x88;
  case 0x1f:
    return 0xee;
  case 0x20:
    return 0xcc;
  case 0x22:
    return 0xa1;
  case 0x23:
    return 0xa2;
  case 0x24:
    return 0xb1;
  case 0x25:
    return 0xb2;
  case 0x26:
    return 0xba;
  case 0xffffffff:
    return 1;
  }
}



void FUN_00894cd0(undefined4 param_1)

{
  BOOL BVar1;
  UINT CodePage;
  _cpinfo _Stack_18;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&_Stack_18;
  switch(param_1) {
  case 1:
    CodePage = 0x6faf;
    break;
  case 2:
    CodePage = 0x6fb0;
    break;
  case 3:
    CodePage = 0x6fb1;
    break;
  case 4:
    CodePage = 0x6fb2;
    break;
  case 5:
    CodePage = 0x6fb3;
    break;
  case 6:
    CodePage = 0x6fb4;
    break;
  case 7:
    CodePage = 0x6fb5;
    break;
  case 8:
    CodePage = 0x6fb6;
    break;
  case 9:
    CodePage = 0x6fb7;
    break;
  case 10:
    CodePage = 0x6fb8;
    break;
  case 0xb:
  case 0x1a:
    CodePage = 0x36a;
    break;
  default:
    goto switchD_00894cf4_caseD_c;
  case 0xd:
    CodePage = 0x6fbb;
    break;
  case 0xf:
    CodePage = 0x6fbd;
    break;
  case 0x11:
    CodePage = 0x5182;
    break;
  case 0x12:
    CodePage = 0x556a;
    break;
  case 0x15:
    CodePage = 0x1b5;
    break;
  case 0x16:
    CodePage = 0x352;
    break;
  case 0x17:
    CodePage = 0x354;
    break;
  case 0x18:
    CodePage = 0x357;
    break;
  case 0x19:
    CodePage = 0x362;
    break;
  case 0x1b:
    CodePage = 0x3a4;
    break;
  case 0x1c:
    CodePage = 0x3a8;
    break;
  case 0x1d:
    CodePage = 0x3b5;
    break;
  case 0x1e:
    CodePage = 0x3b6;
    break;
  case 0x1f:
    CodePage = 0x4e2;
    break;
  case 0x20:
    CodePage = 0x4e3;
    break;
  case 0x21:
    CodePage = 0x4e4;
    break;
  case 0x22:
    CodePage = 0x4e5;
    break;
  case 0x23:
    CodePage = 0x4e6;
    break;
  case 0x24:
    CodePage = 0x4e7;
    break;
  case 0x25:
    CodePage = 0x4e8;
    break;
  case 0x26:
    CodePage = 0x4e9;
    break;
  case 0x28:
    CodePage = 65000;
    break;
  case 0x29:
    CodePage = 0xfde9;
    break;
  case 0x2a:
    CodePage = 0x51c4;
    break;
  case 0x2f:
    CodePage = 10000;
    break;
  case 0x30:
    CodePage = 0x2711;
    break;
  case 0x31:
    CodePage = 0x2712;
    break;
  case 0x32:
    CodePage = 0x2713;
    break;
  case 0x33:
    CodePage = 0x2714;
    break;
  case 0x34:
    CodePage = 0x2715;
    break;
  case 0x35:
    CodePage = 0x2716;
    break;
  case 0x36:
    CodePage = 0x2717;
    break;
  case 0x43:
    CodePage = 0x2725;
    break;
  case 0x47:
    CodePage = 0x2718;
    break;
  case 0x4b:
    CodePage = 0x272d;
    break;
  case 0x51:
    CodePage = 0x2762;
    break;
  case 0x52:
    CodePage = 0x275f;
    break;
  case 0x53:
    CodePage = 0x2719;
    break;
  case 0x57:
    CodePage = 0xc42e;
  }
  BVar1 = IsValidCodePage(CodePage);
  if ((BVar1 != 0) && (BVar1 = GetCPInfo(CodePage,&_Stack_18), BVar1 != 0)) {
    ___security_check_cookie_4();
    return;
  }
switchD_00894cf4_caseD_c:
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00895020(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_00840d00(param_3,param_1,2);
  FUN_00840d00(param_2,param_1,1);
  uVar1 = FUN_008854f0();
  FUN_00853980(param_1_00,uVar1,param_3,param_1);
  return;
}



undefined4 FUN_00895070(int param_1,int param_2)

{
  undefined4 *lpName;
  DWORD nSize;
  undefined4 *lpName_00;
  LPWSTR *local_4;
  
  lpName_00 = (undefined4 *)(param_1 + 4);
  lpName = lpName_00;
  if (7 < *(uint *)(param_1 + 0x18)) {
    lpName = (undefined4 *)*lpName_00;
  }
  nSize = GetEnvironmentVariableW((LPCWSTR)lpName,(LPWSTR)0x0,0);
  if (nSize != 0) {
    if (param_2 != 0) {
      FUN_00852280(param_2,nSize);
      if (7 < *(uint *)(param_1 + 0x18)) {
        lpName_00 = (undefined4 *)*lpName_00;
      }
      GetEnvironmentVariableW((LPCWSTR)lpName_00,*local_4,nSize);
      FUN_00851bf0();
    }
    return 1;
  }
  return 0;
}



// WARNING: Removing unreachable block (ram,0x008951f4)

bool FUN_008950e0(void)

{
  uint uVar1;
  code *pcVar2;
  HANDLE pvVar3;
  int *piVar4;
  int local_58;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd188;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  FUN_004325b6(L"kernel32.dll");
  local_4 = 0;
  FUN_0089ed30(local_54,2);
  local_4._0_1_ = 2;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  FUN_004325b6(L"IsWow64Process");
  local_4._0_1_ = 3;
  pcVar2 = (code *)FUN_0089f2d0(0,local_30,uVar1);
  local_4 = CONCAT31(local_4._1_3_,2);
  _free(local_14);
  if (local_18 < 8) {
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    local_58 = 0;
    if (pcVar2 != (code *)0x0) {
      piVar4 = &local_58;
      pvVar3 = GetCurrentProcess();
      (*pcVar2)(pvVar3,piVar4);
    }
    ExceptionList = local_c;
    return local_58 != 0;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_2c);
}



undefined4 FUN_00895220(int param_1)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  undefined4 uVar4;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  if (param_1 != 0) {
    FUN_0043c211(param_1);
    local_4 = 0;
    piVar2 = (int *)FUN_008916f0(uVar1);
    iVar3 = (**(code **)(*piVar2 + 4))(local_30,0);
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    if (iVar3 != -1) {
      uVar4 = FUN_00894cd0(iVar3);
      ExceptionList = local_c;
      return uVar4;
    }
  }
  ExceptionList = local_c;
  return 0xffffffff;
}



void __thiscall FUN_008952d0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  FUN_00843020(param_2,param_1,1);
  uVar1 = FUN_008854f0(param_1);
  FUN_0083fe90(param_1_00,uVar1);
  return;
}



void FUN_00895310(int param_1)

{
  char cVar1;
  uint uVar2;
  BOOL BVar3;
  int iVar4;
  undefined4 uVar5;
  undefined *puVar6;
  undefined *puVar7;
  uint uVar8;
  WCHAR *pWVar9;
  uint local_654;
  int local_650;
  undefined auStack_64c [20];
  undefined auStack_638 [20];
  undefined auStack_624 [20];
  undefined auStack_610 [36];
  undefined auStack_5ec [36];
  undefined auStack_5c8 [36];
  undefined auStack_5a4 [36];
  undefined auStack_580 [36];
  undefined auStack_55c [36];
  undefined auStack_538 [36];
  undefined auStack_514 [36];
  undefined auStack_4f0 [36];
  undefined auStack_4cc [36];
  undefined auStack_4a8 [36];
  undefined auStack_484 [36];
  undefined auStack_460 [36];
  undefined auStack_43c [36];
  undefined auStack_418 [36];
  undefined auStack_3f4 [36];
  undefined auStack_3d0 [36];
  undefined auStack_3ac [36];
  undefined auStack_388 [36];
  undefined auStack_364 [36];
  undefined auStack_340 [36];
  undefined auStack_31c [36];
  undefined auStack_2f8 [36];
  undefined auStack_2d4 [36];
  undefined auStack_2b0 [36];
  undefined auStack_28c [36];
  undefined auStack_268 [36];
  undefined auStack_244 [36];
  undefined auStack_220 [36];
  undefined auStack_1fc [36];
  undefined auStack_1d8 [36];
  undefined auStack_1b4 [36];
  undefined auStack_190 [36];
  undefined auStack_16c [36];
  undefined auStack_148 [36];
  _OSVERSIONINFOW local_124;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcd436;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_654;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffff99c;
  ExceptionList = &local_c;
  uVar8 = 7;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_650 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  local_654 = 1;
  _memset(&local_124,0,0x114);
  local_124.dwOSVersionInfoSize = 0x114;
  BVar3 = GetVersionExW(&local_124);
  if (BVar3 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\utils.cpp",0x53a,"wxGetOsDescription","Assert failure",
                   L"GetVersionEx() failed",uVar2);
    }
    goto LAB_00895e26;
  }
  if (local_124.dwPlatformId == 0) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 1;
    FUN_0043c211("Win32s on Windows 3.1");
    local_4 = CONCAT31(local_4._1_3_,2);
    iVar4 = FUN_0084a340();
    if (iVar4 == 0) {
      iVar4 = FUN_0084d360(auStack_5ec);
    }
    else {
      iVar4 = FUN_0084f210(auStack_5ec,auStack_1b4);
    }
    if (param_1 != iVar4) {
      FID_conflict_assign(iVar4,0,0xffffffff);
    }
    FUN_0040159c();
    FUN_0040159c();
    goto LAB_00895e26;
  }
  if (local_124.dwPlatformId == 1) {
    if (local_124.dwMinorVersion == 0) {
      if ((local_124.szCSDVersion[1] == L'B') || (local_124.szCSDVersion[1] == L'C')) {
        FUN_004325b6(PTR_DAT_03236318);
        local_4 = 3;
        FUN_0043c211("Windows 95 OSR2");
        local_4 = CONCAT31(local_4._1_3_,4);
        uVar5 = FUN_00820bf9(auStack_244,auStack_1fc);
        FUN_0043261a(uVar5);
        FUN_0040159c();
      }
      else {
        FUN_004325b6(PTR_DAT_03236318);
        local_4 = 5;
        FUN_0043c211("Windows 95");
        local_4 = CONCAT31(local_4._1_3_,6);
        uVar5 = FUN_00820bf9(auStack_2d4,auStack_28c);
        FUN_0043261a(uVar5);
        FUN_0040159c();
      }
    }
    else if (local_124.dwMinorVersion == 10) {
      if ((local_124.szCSDVersion[1] == L'B') || (local_124.szCSDVersion[1] == L'C')) {
        FUN_004325b6(PTR_DAT_03236318);
        local_4 = 7;
        FUN_0043c211("Windows 98 SE");
        local_4 = CONCAT31(local_4._1_3_,8);
        uVar5 = FUN_00820bf9(auStack_364,auStack_31c);
        FUN_0043261a(uVar5);
        FUN_0040159c();
      }
      else {
        FUN_004325b6(PTR_DAT_03236318);
        local_4 = 9;
        FUN_0043c211("Windows 98");
        local_4 = CONCAT31(local_4._1_3_,10);
        uVar5 = FUN_00820bf9(auStack_3f4,auStack_3ac);
        FUN_0043261a(uVar5);
        FUN_0040159c();
      }
    }
    else if (local_124.dwMinorVersion == 0x5a) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xb;
      FUN_0043c211("Windows ME");
      local_4 = CONCAT31(local_4._1_3_,0xc);
      uVar5 = FUN_00820bf9(auStack_484,auStack_43c);
      FUN_0043261a(uVar5);
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xd;
      FUN_0043c211("Windows 9x (%d.%d)");
      local_4._0_1_ = 0xe;
      uVar5 = FUN_00820bf9(auStack_514,auStack_4cc);
      FUN_008433c0(uVar5);
      local_4._0_1_ = 0xf;
      FUN_00895020(auStack_638,local_124.dwMajorVersion,local_124.dwMinorVersion);
      local_4 = CONCAT31(local_4._1_3_,0xe);
      FUN_0081b5bc();
      FUN_0040159c();
    }
    local_4 = local_4 & 0xffffff00;
    FUN_0040159c();
    if (local_124.szCSDVersion[0] != L'\0') {
      pWVar9 = local_124.szCSDVersion;
      FUN_0083fd10(&DAT_00d31e28);
      FUN_0083fd10(pWVar9);
      FID_conflict_append(1,0x29);
    }
    goto LAB_00895e26;
  }
  if (local_124.dwPlatformId != 2) goto LAB_00895e26;
  if (local_124.dwMajorVersion == 5) {
    if (local_124.dwMinorVersion == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x10;
      FUN_0043c211("Windows 2000");
      local_4 = CONCAT31(local_4._1_3_,0x11);
      uVar5 = FUN_00820bf9(auStack_1d8,auStack_5c8);
      FUN_0043261a(uVar5);
      FUN_0040159c();
    }
    else {
      if (local_124.dwMinorVersion != 1) {
        if (local_124.dwMinorVersion != 2) goto LAB_008957db;
        iVar4 = FUN_008949a0();
        if (iVar4 == 1) {
          FUN_004325b6(PTR_DAT_03236318);
          local_4 = 0x12;
          FUN_0043c211("Windows Server 2003");
          local_4 = CONCAT31(local_4._1_3_,0x13);
          uVar5 = FUN_00820bf9(auStack_190,auStack_460);
          FUN_0043261a(uVar5);
          FUN_0040159c();
          goto LAB_008957ce;
        }
      }
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x14;
      FUN_0043c211("Windows XP");
      local_4 = CONCAT31(local_4._1_3_,0x15);
      uVar5 = FUN_00820bf9(auStack_2b0,auStack_418);
      FUN_0043261a(uVar5);
      FUN_0040159c();
    }
LAB_008957ce:
    local_4 = local_4 & 0xffffff00;
LAB_008957d6:
    FUN_0040159c();
  }
  else if (local_124.dwMajorVersion == 6) {
    if (local_124.dwMinorVersion == 0) {
      iVar4 = FUN_008949a0();
      if (iVar4 == 1) {
        FUN_004325b6(PTR_DAT_03236318);
        local_4 = 0x16;
        local_654 = 3;
        FUN_0043c211("Windows Server 2008");
        local_4 = 0x17;
        puVar6 = auStack_4a8;
        puVar7 = auStack_2f8;
      }
      else {
        FUN_004325b6(PTR_DAT_03236318);
        local_4 = 0x18;
        local_654 = 9;
        FUN_0043c211("Windows Vista");
        uVar8 = 0x19;
        local_4 = 0x19;
        puVar6 = auStack_4f0;
        puVar7 = auStack_220;
      }
      local_654 = uVar8;
      uVar5 = FUN_00820bf9(puVar7,puVar6);
      FUN_0043261a(uVar5);
      if ((uVar8 & 0x10) != 0) {
        uVar8 = uVar8 & 0xffffffef;
        local_654 = uVar8;
        FUN_0040159c();
      }
      if ((uVar8 & 8) != 0) {
        uVar8 = uVar8 & 0xfffffff7;
        local_654 = uVar8;
        FUN_0040159c();
      }
      if ((uVar8 & 4) != 0) {
        uVar8 = uVar8 & 0xfffffffb;
        local_654 = uVar8;
        FUN_0040159c();
      }
      local_4 = 0;
      if ((uVar8 & 2) != 0) {
        local_654 = uVar8 & 0xfffffffd;
        goto LAB_008957d6;
      }
    }
    else if (local_124.dwMinorVersion == 1) {
      iVar4 = FUN_008949a0();
      if (iVar4 == 1) {
        FUN_004325b6(PTR_DAT_03236318);
        local_4 = 0x1a;
        local_654 = 0x21;
        FUN_0043c211("Windows Server 2008 R2");
        local_4 = 0x1b;
        uVar2 = 0x61;
        puVar6 = auStack_538;
        puVar7 = auStack_340;
      }
      else {
        FUN_004325b6(PTR_DAT_03236318);
        local_4 = 0x1c;
        local_654 = 0x81;
        FUN_0043c211("Windows 7");
        local_4 = 0x1d;
        uVar2 = 0x181;
        puVar6 = auStack_580;
        puVar7 = auStack_3d0;
      }
      local_654 = uVar2;
      uVar5 = FUN_00820bf9(puVar7,puVar6);
      FUN_0043261a(uVar5);
      if ((uVar2 & 0x100) != 0) {
        uVar2 = uVar2 & 0xfffffeff;
        local_654 = uVar2;
        FUN_0040159c();
      }
      if ((char)uVar2 < '\0') {
        uVar2 = uVar2 & 0xffffff7f;
        local_654 = uVar2;
        FUN_0040159c();
      }
      if ((uVar2 & 0x40) != 0) {
        uVar2 = uVar2 & 0xffffffbf;
        local_654 = uVar2;
        FUN_0040159c();
      }
      local_4 = 0;
      if ((uVar2 & 0x20) != 0) {
        local_654 = uVar2 & 0xffffffdf;
        goto LAB_008957d6;
      }
    }
  }
LAB_008957db:
  if (*(int *)(param_1 + 0x14) == 0) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0x1e;
    FUN_0043c211("Windows NT %lu.%lu");
    local_4._0_1_ = 0x1f;
    uVar5 = FUN_00820bf9(auStack_268,auStack_388);
    FUN_008433c0(uVar5);
    local_4._0_1_ = 0x20;
    FUN_00895020(auStack_624,local_124.dwMajorVersion,local_124.dwMinorVersion);
    local_4._0_1_ = 0x1f;
    FUN_0081b5bc();
    FUN_0040159c();
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0040159c();
  }
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0x21;
  FUN_0043c211("build %lu");
  local_4 = CONCAT31(local_4._1_3_,0x22);
  iVar4 = FUN_0084a340();
  if (iVar4 == 0) {
    uVar5 = FUN_0084d360(auStack_610);
  }
  else {
    uVar5 = FUN_0084f210(auStack_610,auStack_16c);
  }
  FUN_008433c0(uVar5);
  local_4._0_1_ = 0x23;
  uVar5 = FUN_00841f90(auStack_148,auStack_64c,local_124.dwBuildNumber);
  local_4._0_1_ = 0x24;
  FUN_0083fd10(&DAT_00d31e28);
  FID_conflict_append(uVar5,0,0xffffffff);
  FUN_0040159c();
  local_4._0_1_ = 0x22;
  FUN_0081b5bc();
  FUN_0040159c();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0040159c();
  if (local_124.szCSDVersion[0] != L'\0') {
    pWVar9 = local_124.szCSDVersion;
    FUN_0083fd10(&DAT_00d2e8cc);
    FUN_0083fd10(pWVar9);
  }
  FID_conflict_append(1,0x29);
  cVar1 = FUN_008950e0();
  if (cVar1 != '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0x25;
    FUN_0043c211(", 64-bit edition");
    local_4 = CONCAT31(local_4._1_3_,0x26);
    uVar5 = FUN_00820bf9(auStack_5a4,auStack_55c);
    FID_conflict_append(uVar5,0,0xffffffff);
    FUN_0040159c();
    FUN_0040159c();
  }
LAB_00895e26:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00895e50(LPWSTR param_1,DWORD param_2)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = GetComputerNameW(param_1,&param_2);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = local_c;
  return 1;
}



void FUN_00895fa0(undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  DWORD DVar2;
  code *pcVar3;
  int iVar4;
  char *pcVar5;
  undefined4 *puVar6;
  undefined4 uVar7;
  int local_328;
  undefined uStack_322;
  undefined local_321;
  undefined4 local_320;
  undefined4 local_31c;
  undefined auStack_318 [36];
  undefined local_2f4 [4];
  uint local_2f0;
  undefined4 local_2e0;
  uint local_2dc;
  void *local_2d8;
  undefined auStack_2d0 [12];
  undefined local_2c4 [4];
  uint local_2c0;
  int local_2b0;
  uint local_2ac;
  void *local_2a8;
  undefined local_2a0 [400];
  char acStack_110 [256];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd4de;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_328;
  ExceptionList = &local_c;
  local_31c = param_1;
  if ((DAT_032bdb68 == 0) || (DVar2 = GetCurrentThreadId(), DVar2 == DAT_032bdb68)) {
    local_321 = DAT_03235e94;
    DAT_03235e94 = 0;
  }
  else {
    local_321 = FUN_00842f30(0);
  }
  local_320 = CONCAT31(local_320._1_3_,local_321);
  local_4 = 0;
  FUN_004325b6(L"ws2_32.dll");
  local_4._0_1_ = 1;
  local_328 = 0;
  FUN_0089ed30(local_2f4,8);
  local_4._0_1_ = 3;
  _free(local_2d8);
  if (7 < local_2dc) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2f0);
  }
  local_2dc = 7;
  local_2e0 = 0;
  local_2f0 = local_2f0 & 0xffff0000;
  if (local_328 != 0) {
    FUN_004325b6(L"WSAStartup");
    local_4._0_1_ = 4;
    pcVar3 = (code *)FUN_0089f060(local_2c4,0);
    local_4._0_1_ = 3;
    _free(local_2a8);
    if (7 < local_2ac) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c0);
    }
    local_2ac = 7;
    local_2b0 = 0;
    local_2c0 = local_2c0 & 0xffff0000;
    if ((pcVar3 != (code *)0x0) && (iVar4 = (*pcVar3)(0x101,local_2a0), iVar4 == 0)) {
      FUN_004325b6(L"gethostname");
      local_4._0_1_ = 5;
      pcVar3 = (code *)FUN_0089f060(auStack_318,0);
      FUN_0040159c();
      local_2ac = 7;
      local_2b0 = 0;
      local_2c0 = local_2c0 & 0xffff0000;
      local_2a8 = (void *)0x0;
      local_4._0_1_ = 6;
      uVar1 = (undefined)local_4;
      local_4._0_1_ = 6;
      if ((pcVar3 != (code *)0x0) &&
         ((iVar4 = (*pcVar3)(acStack_110,0x100), uVar1 = (undefined)local_4, iVar4 == 0 &&
          (pcVar5 = _strchr(acStack_110,0x2e), uVar1 = (undefined)local_4, pcVar5 == (char *)0x0))))
      {
        FUN_004325b6(L"gethostbyname");
        local_4._0_1_ = 7;
        pcVar3 = (code *)FUN_0089f060(auStack_318,0);
        local_4._0_1_ = 6;
        FUN_0040159c();
        uVar1 = (undefined)local_4;
        if ((pcVar3 != (code *)0x0) &&
           (iVar4 = (*pcVar3)(acStack_110), uVar1 = (undefined)local_4, iVar4 != 0)) {
          FUN_004325b6(L"gethostbyaddr");
          local_4._0_1_ = 8;
          pcVar3 = (code *)FUN_0089f060(auStack_318,0);
          local_4._0_1_ = 6;
          FUN_0040159c();
          uVar1 = (undefined)local_4;
          if ((pcVar3 != (code *)0x0) &&
             (puVar6 = (undefined4 *)(*pcVar3)(**(undefined4 **)(iVar4 + 0xc),4,2),
             uVar1 = (undefined)local_4, puVar6 != (undefined4 *)0x0)) {
            uVar7 = FUN_00853800(auStack_318,*puVar6);
            local_4._0_1_ = 9;
            FUN_0043261a(uVar7);
            local_4._0_1_ = 6;
            FUN_0040159c();
            uVar1 = (undefined)local_4;
          }
        }
      }
      local_4._0_1_ = uVar1;
      FUN_004325b6(L"WSACleanup");
      local_4._0_1_ = 10;
      pcVar3 = (code *)FUN_0089f060(auStack_318,0);
      local_4 = CONCAT31(local_4._1_3_,6);
      FUN_0040159c();
      if (pcVar3 != (code *)0x0) {
        (*pcVar3)();
      }
      if (local_2b0 != 0) {
        FUN_00432231(auStack_2d0);
        uVar7 = thunk_FUN_00432242(param_2);
        FUN_00842f70(local_31c,uVar7);
        FUN_00432214();
        FUN_0040159c();
        local_4 = local_4 & 0xffffff00;
        if (local_328 != 0) {
          FUN_0089f290(local_328);
          local_328 = 0;
        }
        local_4 = 0xffffffff;
        FUN_008192c6();
        goto LAB_008963b0;
      }
      local_4._0_1_ = 3;
      FUN_0040159c();
    }
  }
  uStack_322 = FUN_00895e50(local_31c,param_2);
  local_4 = (uint)local_4._1_3_ << 8;
  if (local_328 != 0) {
    FUN_0089f290(local_328);
    local_328 = 0;
  }
  local_4 = 0xffffffff;
  if ((DAT_032bdb68 == 0) || (DVar2 = GetCurrentThreadId(), DVar2 == DAT_032bdb68)) {
    DAT_03235e94 = (undefined)local_320;
  }
  else {
    FUN_00842f30(local_320);
  }
LAB_008963b0:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



HWND FUN_008963e0(LPCWSTR *param_1,LPCWSTR param_2,WNDPROC param_3)

{
  char cVar1;
  ATOM AVar2;
  HINSTANCE hInstance;
  HWND pHVar3;
  WNDCLASSW local_8c [3];
  
  if (((param_2 != (LPCWSTR)0x0) && (param_1 != (LPCWSTR *)0x0)) && (param_3 != (WNDPROC)0x0)) {
    if (*param_1 == (LPCWSTR)0x0) {
      local_8c[0].style = 0;
      local_8c[0].cbClsExtra = 0;
      local_8c[0].cbWndExtra = 0;
      local_8c[0].hInstance = (HINSTANCE)0x0;
      local_8c[0].hIcon = (HICON)0x0;
      local_8c[0].hCursor = (HCURSOR)0x0;
      local_8c[0].hbrBackground = (HBRUSH)0x0;
      local_8c[0].lpszMenuName = (LPCWSTR)0x0;
      local_8c[0].lpszClassName = (LPCWSTR)0x0;
      local_8c[0].lpfnWndProc = param_3;
      local_8c[0].hInstance = (HINSTANCE)FUN_008a65e0();
      local_8c[0].lpszClassName = param_2;
      AVar2 = RegisterClassW(local_8c);
      if (AVar2 == 0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 == '\0') {
          return (HWND)0x0;
        }
        FUN_0081c0f1();
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_008423d0(6,"..\\..\\src\\msw\\utils.cpp");
        FUN_00847d90();
        FUN_00842440();
        FUN_0081b5bc();
        return (HWND)0x0;
      }
      *param_1 = param_2;
    }
    hInstance = (HINSTANCE)FUN_008a65e0();
    pHVar3 = CreateWindowExW(0,*param_1,(LPCWSTR)0x0,0,0,0,0,0,(HWND)0x0,(HMENU)0x0,hInstance,
                             (LPVOID)0x0);
    if (pHVar3 == (HWND)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_008423d0(6,"..\\..\\src\\msw\\utils.cpp");
        FUN_00847d90();
        FUN_00842440();
        FUN_0081b5bc();
      }
    }
    return pHVar3;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480();
  }
  return (HWND)0x0;
}



int FUN_00896610(int param_1,HMODULE param_2)

{
  char cVar1;
  DWORD DVar2;
  LPWSTR *local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcde79;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  FUN_00852280();
  DVar2 = GetModuleFileNameW(param_2,*local_78,0x104);
  FUN_00851bf0();
  if (DVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4 = 1;
      FUN_008423d0();
      local_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4._0_1_ = 1;
      FUN_00842440();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00896790(undefined4 param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_008a65e0();
  FUN_00896610(param_1,uVar1);
  return param_1;
}



int FUN_008967c0(int param_1)

{
  wchar_t wVar1;
  wchar_t *pwVar2;
  int iVar3;
  undefined4 uVar4;
  int *piVar5;
  wchar_t *pwVar6;
  bool bVar7;
  int local_3c [2];
  char local_34;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd520;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00432156(DAT_0323f878 ^ (uint)&stack0xffffffbc);
  pwVar2 = __wgetenv(L"HOME");
  if (pwVar2 == (wchar_t *)0x0) {
    pwVar2 = __wgetenv(L"HOMEDRIVE");
    if (pwVar2 != (wchar_t *)0x0) {
      pwVar6 = pwVar2;
      do {
        wVar1 = *pwVar6;
        pwVar6 = pwVar6 + 1;
      } while (wVar1 != L'\0');
      FUN_00473ccc(pwVar2,(int)pwVar6 - (int)(pwVar2 + 1) >> 1);
    }
    pwVar2 = __wgetenv(L"HOMEPATH");
    if (pwVar2 != (wchar_t *)0x0) {
      pwVar6 = pwVar2;
      do {
        wVar1 = *pwVar6;
        pwVar6 = pwVar6 + 1;
      } while (wVar1 != L'\0');
      FUN_00473ccc(pwVar2,(int)pwVar6 - (int)(pwVar2 + 1) >> 1);
      pwVar6 = L"\\";
      do {
        wVar1 = *pwVar2;
        bVar7 = (ushort)wVar1 < (ushort)*pwVar6;
        if (wVar1 != *pwVar6) {
LAB_008968b6:
          iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
          goto LAB_008968bb;
        }
        if (wVar1 == L'\0') break;
        wVar1 = pwVar2[1];
        bVar7 = (ushort)wVar1 < (ushort)pwVar6[1];
        if (wVar1 != pwVar6[1]) goto LAB_008968b6;
        pwVar2 = pwVar2 + 2;
        pwVar6 = pwVar6 + 2;
      } while (wVar1 != L'\0');
      iVar3 = 0;
LAB_008968bb:
      if (iVar3 == 0) {
        FUN_00432156();
      }
    }
  }
  else {
    pwVar6 = pwVar2;
    do {
      wVar1 = *pwVar6;
      pwVar6 = pwVar6 + 1;
    } while (wVar1 != L'\0');
    FID_conflict_assign(pwVar2,(int)pwVar6 - (int)(pwVar2 + 1) >> 1);
  }
  if (*(int *)(param_1 + 0x14) == 0) {
    pwVar2 = __wgetenv(L"USERPROFILE");
    if (pwVar2 != (wchar_t *)0x0) {
      FUN_00432199(pwVar2);
    }
    if (*(int *)(param_1 + 0x14) == 0) {
      uVar4 = FUN_00896790(local_30);
      local_4 = 1;
      FUN_00858c30(uVar4,param_1,0,0,0);
      _free(local_14);
      goto LAB_0089694c;
    }
  }
  iVar3 = FUN_0088a3f0(local_30,param_1);
  local_4 = 0;
  if (param_1 != iVar3) {
    FID_conflict_assign(iVar3,0,0xffffffff);
  }
  _free(local_14);
LAB_0089694c:
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  piVar5 = (int *)FUN_00432231(local_3c);
  iVar3 = *piVar5;
  if (*(uint *)(iVar3 + 0x18) < 8) {
    iVar3 = iVar3 + 4;
  }
  else {
    iVar3 = *(int *)(iVar3 + 4);
  }
  if ((local_34 != '\0') && (local_3c[0] != 0)) {
    _free(*(void **)(local_3c[0] + 0x1c));
    if (7 < *(uint *)(local_3c[0] + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(local_3c[0] + 4));
    }
    *(undefined4 *)(local_3c[0] + 0x18) = 7;
    *(undefined4 *)(local_3c[0] + 0x14) = 0;
    *(undefined2 *)(local_3c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_3c[0]);
  }
  ExceptionList = local_c;
  return iVar3 + piVar5[1] * 2;
}



int FUN_008969e0(int param_1,int param_2)

{
  bool bVar1;
  bool bVar2;
  uint uVar3;
  int iVar4;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcd572;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  bVar1 = false;
  local_4 = 0;
  if (*(int *)(param_2 + 0x14) == 0) {
LAB_00896a78:
    bVar2 = true;
  }
  else {
    iVar4 = FUN_0089f6d0(local_30,uVar3);
    local_4 = 1;
    bVar1 = true;
    if (*(int *)(param_2 + 0x14) == *(int *)(iVar4 + 0x14)) {
      iVar4 = FUN_00850760(iVar4);
      if (iVar4 == 0) goto LAB_00896a78;
    }
    bVar2 = false;
  }
  local_4 = 0;
  if (bVar1) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  if (bVar2) {
    FUN_008967c0(param_1);
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_00896ae0(int param_1)

{
  if (7 < *(uint *)(param_1 + 0x18)) {
    FUN_00a4b994();
    return;
  }
  FUN_00a4b994();
  return;
}



char * FUN_00896b10(void)

{
  undefined4 *puVar1;
  char *pcVar2;
  void **ppvVar3;
  void **local_4;
  
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440();
  }
  puVar1 = (undefined4 *)FUN_00432413(&local_4,DAT_032bd4d4);
  pcVar2 = _getenv(*(char **)*puVar1);
  ppvVar3 = (void **)FUN_00850350();
  if (local_4 != ppvVar3) {
    *(short *)(local_4 + 2) = *(short *)(local_4 + 2) + -1;
    if (*(short *)(local_4 + 2) == 0) {
      if (*(char *)((int)local_4 + 10) != '\0') {
        _free(*local_4);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_4);
    }
    FUN_00850350();
  }
  return pcVar2;
}



void FUN_00896b90(int param_1,undefined4 param_2)

{
  int iVar1;
  undefined uVar2;
  uint uVar3;
  uint uVar4;
  undefined *puVar5;
  undefined4 uVar6;
  undefined local_cc [4];
  uint local_c8;
  undefined4 local_b8;
  uint local_b4;
  void *local_b0;
  undefined local_a8 [4];
  uint local_a4;
  undefined4 local_94;
  uint local_90;
  void *local_8c;
  undefined4 local_84;
  int local_80;
  undefined local_7c [4];
  undefined4 local_78;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcd61c;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_cc;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff24;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_80 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4._0_1_ = 0;
  local_4._1_3_ = 0;
  local_84 = 1;
  uVar4 = FUN_00853d10(param_2,0,0);
  if (uVar4 == 0xffffffff) {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    FID_conflict_assign(param_2,0,0xffffffff);
    local_18 = (void *)0x0;
    local_4 = 1;
    FUN_004325b6(&DAT_00fb04cc);
    local_4._0_1_ = 2;
    FUN_004325b6(&DAT_00fae798);
    local_4._0_1_ = 3;
    FUN_00852a70(local_cc,local_a8,1);
    _free(local_b0);
    if (7 < local_b4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_c8);
    }
    local_b4 = 7;
    local_b8 = 0;
    local_c8 = local_c8 & 0xffff0000;
    local_4._0_1_ = 1;
    _free(local_8c);
    if (7 < local_90) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a4);
    }
    FUN_004325b6(&DAT_00fb04cc);
    local_4._0_1_ = 4;
    FUN_004325b6(&DAT_00d32178);
    local_4._0_1_ = 5;
    FUN_00852a70(local_cc,local_a8,1);
    _free(local_b0);
    if (7 < local_b4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_c8);
    }
    local_b4 = 7;
    local_b8 = 0;
    local_c8 = local_c8 & 0xffff0000;
    _free(local_8c);
    if (7 < local_90) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a4);
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = (uint)local_54._2_2_ << 0x10;
    local_3c = (void *)0x0;
    local_4._0_1_ = 6;
    uVar2 = (undefined)local_4;
    local_4._0_1_ = 6;
    if (DAT_032bcb68 != 0) {
      puVar5 = (undefined *)FUN_00841170(local_a8);
      local_4._0_1_ = 7;
      if (local_58 != puVar5) {
        FID_conflict_assign(puVar5,0,0xffffffff);
      }
      local_4._0_1_ = 6;
      _free(local_8c);
      if (7 < local_90) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_a4);
      }
      uVar2 = (undefined)local_4;
      if (local_44 != 0) {
        uVar6 = FUN_008535a0(local_7c,&DAT_00d32170,local_58);
        local_4._0_1_ = 8;
        uVar6 = FUN_0081b5f9(local_a8,uVar6,0x5f);
        local_4._0_1_ = 9;
        uVar6 = FUN_008531f0(local_cc,uVar6,local_34);
        local_4._0_1_ = 10;
        uVar6 = FUN_00896b10(uVar6);
        FUN_0083fc60(uVar6);
        _free(local_b0);
        if (7 < local_b4) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_c8);
        }
        local_b4 = 7;
        local_b8 = 0;
        local_c8 = local_c8 & 0xffff0000;
        _free(local_8c);
        if (7 < local_90) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_a4);
        }
        local_90 = 7;
        local_94 = 0;
        local_a4 = local_a4 & 0xffff0000;
        local_4._0_1_ = 6;
        _free(local_60);
        uVar2 = (undefined)local_4;
        if (7 < local_64) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_78);
        }
      }
    }
    local_4._0_1_ = uVar2;
    if (*(int *)(param_1 + 0x14) == 0) {
      uVar6 = FUN_008535a0(local_7c,&DAT_00d32170,local_34);
      local_4._0_1_ = 0xb;
      uVar6 = FUN_00896b10(uVar6);
      FUN_0083fc60(uVar6);
      _free(local_60);
      if (7 < local_64) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_78);
      }
    }
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  else {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bdc18 <= uVar4)) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                   "nIndex < m_nCount",L"wxArrayString: index out of bounds",uVar3);
    }
    iVar1 = DAT_032bdc1c + uVar4 * 0x24;
    if (param_1 != iVar1) {
      FID_conflict_assign(iVar1,0,0xffffffff);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00897050(undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined local_24 [4];
  undefined4 local_20;
  uint local_c;
  void *local_8;
  
  iVar1 = FUN_00896b90(local_24,param_1);
  if (*(uint *)(iVar1 + 0x18) < 8) {
    iVar1 = iVar1 + 4;
  }
  else {
    iVar1 = *(int *)(iVar1 + 4);
  }
  uVar2 = FUN_00a4b994(iVar1);
  _free(local_8);
  if (7 < local_c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_20);
  }
  return uVar2;
}



bool FUN_008970b0(undefined4 param_1)

{
  int iVar1;
  undefined local_24 [4];
  undefined4 local_20;
  uint local_c;
  void *local_8;
  
  iVar1 = FUN_00896b90(local_24,param_1);
  iVar1 = *(int *)(iVar1 + 0x14);
  _free(local_8);
  if (7 < local_c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_20);
  }
  return iVar1 != 0;
}



undefined ** FUN_00897100(void)

{
  return &PTR_u_wxAnyValueTypeGlobalsManager_03237348;
}



void FUN_00897110(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bdc34;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



undefined4 * __thiscall FUN_00897140(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxAnyValueTypeGlobalsManager::vftable;
  FUN_008473a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_00897170(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxAnyValueTypeGlobalsManager::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void FUN_008971d0(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bdc4c;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_00897200(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bdc54;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



uint __thiscall FUN_00897230(int *param_1_00,uint param_1,uint param_2)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  if (param_1 == param_2) {
    return param_1;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((uVar1 = param_1_00[2] + *param_1_00 * 4, uVar1 <= param_1 || (uVar1 < param_2)))) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x17f,
                 "wxVector<class wxAnyToVariantRegistration *>::erase",
                 "first < end() && last <= end()",0);
  }
  iVar2 = param_1_00[2];
  iVar3 = (int)((*param_1_00 * 4 - param_2) + iVar2) >> 2;
  iVar4 = (int)(param_1 - iVar2) >> 2;
  iVar5 = (int)(param_2 - param_1) >> 2;
  if (iVar3 != 0) {
    _memmove((void *)(iVar2 + iVar4 * 4),(void *)(iVar2 + (iVar5 + iVar4) * 4),iVar3 * 4);
  }
  *param_1_00 = *param_1_00 - iVar5;
  return param_1_00[2] + iVar4 * 4;
}



void __thiscall FUN_008972d0(undefined4 *param_1_00,undefined4 *param_1)

{
  int *piVar1;
  bool bVar2;
  char cVar3;
  type_info *ptVar4;
  type_info *this;
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  undefined local_14 [16];
  uint local_4;
  
  piVar1 = DAT_032bdc2c;
  local_4 = DAT_0323f878 ^ (uint)local_14;
  ptVar4 = (type_info *)___RTtypeid(param_1_00[4]);
  this = (type_info *)___RTtypeid(piVar1);
  bVar2 = type_info::operator==(this,ptVar4);
  piVar1 = DAT_032bdc2c;
  if (bVar2) {
    *param_1 = *param_1_00;
    param_1[1] = param_1_00[1];
  }
  else {
    cVar3 = (**(code **)(*(int *)param_1_00[4] + 0x10))(param_1_00,DAT_032bdc2c,local_14);
    if (cVar3 == '\0') {
      ___security_check_cookie_4();
      return;
    }
    *param_1 = unaff_EDI;
    param_1[1] = unaff_ESI;
    (**(code **)(*piVar1 + 8))(&stack0xffffffe0);
  }
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00897380(undefined4 *param_1_00,undefined4 *param_1)

{
  int *piVar1;
  bool bVar2;
  char cVar3;
  type_info *ptVar4;
  type_info *this;
  undefined4 unaff_EDI;
  undefined local_14 [16];
  uint local_4;
  
  piVar1 = DAT_032bdc28;
  local_4 = DAT_0323f878 ^ (uint)local_14;
  ptVar4 = (type_info *)___RTtypeid(param_1_00[4]);
  this = (type_info *)___RTtypeid(piVar1);
  bVar2 = type_info::operator==(this,ptVar4);
  piVar1 = DAT_032bdc28;
  if (bVar2) {
    *param_1 = *param_1_00;
  }
  else {
    cVar3 = (**(code **)(*(int *)param_1_00[4] + 0x10))(param_1_00,DAT_032bdc28,local_14);
    if (cVar3 == '\0') {
      ___security_check_cookie_4();
      return;
    }
    *param_1 = unaff_EDI;
    (**(code **)(*piVar1 + 8))(&stack0xffffffe0);
  }
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00897420(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  bool bVar2;
  type_info *ptVar3;
  type_info *this;
  
  uVar1 = DAT_032bdc54;
  ptVar3 = (type_info *)___RTtypeid(param_1_00[4]);
  this = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(this,ptVar3);
  if ((!bVar2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  FUN_008bb9a0(*param_1_00 + 4);
  return param_1;
}



undefined4 * __thiscall FUN_008974a0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd65b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1_00 = wxPrivate::wxAnyValueTypeOpsGeneric<class_wxVariant>::DataHolder<class_wxVariant>::
                vftable;
  FUN_008ba510(uVar1);
  local_4 = 0;
  FUN_008bba30(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00897510(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxPrivate::wxAnyValueTypeOpsGeneric<class_wxVariant>::DataHolder<class_wxVariant>::
                vftable;
  FUN_008ba540();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00897540(int *param_1)

{
  if ((undefined4 *)*param_1 != (undefined4 *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00897556. Too many branches
                    // WARNING: Treating indirect jump as call
    (***(code ***)(undefined4 *)*param_1)();
    return;
  }
  return;
}



void FUN_00897560(undefined4 param_1,undefined4 *param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x30);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008974a0(param_1);
    *param_2 = uVar2;
    ExceptionList = local_c;
    return;
  }
  *param_2 = 0;
  ExceptionList = local_c;
  return;
}



void FUN_008975e0(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bdc2c;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_00897610(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bdc30;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_00897640(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bdc3c;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_00897670(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bdc40;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_008976a0(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bdc44;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_008976d0(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bdc34;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_00897700(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bdc38;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_00897730(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bdc48;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_00897760(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bdc28;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_00897790(int *param_1)

{
  if (*param_1 != 0) {
    FUN_0083e800();
  }
  return;
}



void FUN_008977b0(int *param_1,int *param_2)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    *param_2 = iVar1;
    return;
  }
  *param_2 = 0;
  return;
}



void FUN_008977d0(undefined *param_1,undefined *param_2)

{
  if (param_2 != (undefined *)0x0) {
    *param_2 = *param_1;
  }
  return;
}



void FUN_008977f0(undefined8 *param_1,undefined8 *param_2)

{
  if (param_2 != (undefined8 *)0x0) {
    *param_2 = *param_1;
  }
  return;
}



void FUN_00897810(undefined4 *param_1,undefined4 *param_2)

{
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *param_1;
    param_2[1] = param_1[1];
  }
  return;
}



undefined4 __fastcall FUN_00897830(int *param_1)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  
  uVar1 = ((int *)param_1[1])[1];
  uVar4 = *(uint *)(*param_1 + 4) % uVar1 + 1;
  if (uVar4 < uVar1) {
    iVar2 = *(int *)param_1[1];
    piVar3 = (int *)(iVar2 + uVar4 * 4);
    do {
      if (*piVar3 != 0) {
        return *(undefined4 *)(iVar2 + uVar4 * 4);
      }
      uVar4 = uVar4 + 1;
      piVar3 = piVar3 + 1;
    } while (uVar4 < uVar1);
  }
  return 0;
}



void __fastcall FUN_00897870(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 8);
  if (iVar1 != 0) {
    (**(code **)(**(int **)(iVar1 + 0x10) + 8))(iVar1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void FUN_00897890(int *param_1,undefined4 param_2)

{
  FUN_00897560(*param_1 + 4,param_2);
  return;
}



void FUN_008978b0(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bdc54;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void __fastcall FUN_008978e0(void **param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcd693;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00893cf0(param_1[1],*param_1,&LAB_00981b50,DAT_0323f878 ^ (uint)&stack0xffffffe8);
  param_1[2] = (void *)0x0;
  _free(param_1[6]);
  param_1[6] = (void *)0x0;
  param_1[5] = (void *)0x0;
  param_1[4] = (void *)0x0;
  local_4 = 0xffffffff;
  FUN_00893cf0(param_1[1],*param_1,&LAB_00981b50);
  param_1[2] = (void *)0x0;
  _free(*param_1);
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_00897980(int *param_1_00,int *param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int **ppiVar4;
  int *piVar5;
  undefined4 *puVar6;
  uint uVar7;
  int *local_14;
  uint uStack_10;
  undefined4 uStack_c;
  
  for (puVar6 = *(undefined4 **)(*param_1_00 + ((uint)param_1 % (uint)param_1_00[1]) * 4);
      puVar6 != (undefined4 *)0x0; puVar6 = (undefined4 *)*puVar6) {
    if ((int *)puVar6[1] == param_1) goto LAB_008979b2;
  }
  puVar6 = (undefined4 *)0x0;
LAB_008979b2:
  if (puVar6 == (undefined4 *)0x0) {
    uVar7 = param_1_00[4];
    local_14 = param_1;
    while (uVar7 != 0) {
      uVar7 = uVar7 - 1;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[4] <= uVar7)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                     "wxVector<class wxAnyToVariantRegistration *>::at","idx < m_size",0);
      }
      piVar5 = *(int **)(uVar7 * 4 + param_1_00[6]);
      uVar2 = (**(code **)(*piVar5 + 4))();
      if (uVar2 != 0) {
        iVar3 = piVar5[1];
        uStack_c = 0;
        for (puVar6 = *(undefined4 **)(*param_1_00 + (uVar2 % (uint)param_1_00[1]) * 4);
            uStack_10 = uVar2, puVar6 != (undefined4 *)0x0; puVar6 = (undefined4 *)*puVar6) {
          if (puVar6[1] == uVar2) goto LAB_00897a58;
        }
        puVar6 = (undefined4 *)FUN_00911610(&uStack_10,uVar2 % (uint)param_1_00[1]);
LAB_00897a58:
        puVar6[2] = iVar3;
        iVar3 = param_1_00[6] + uVar7 * 4;
        FUN_00897230(iVar3,iVar3 + 4);
      }
    }
    for (puVar6 = *(undefined4 **)(*param_1_00 + ((uint)param_1 % (uint)param_1_00[1]) * 4);
        puVar6 != (undefined4 *)0x0; puVar6 = (undefined4 *)*puVar6) {
      if ((int *)puVar6[1] == param_1) goto LAB_00897a9d;
    }
    puVar6 = (undefined4 *)0x0;
LAB_00897a9d:
    if (puVar6 == (undefined4 *)0x0) {
      ppiVar4 = (int **)FUN_009da970(&uStack_10);
      piVar5 = *ppiVar4;
      while( true ) {
        if (piVar5 == (int *)0x0) {
          return 0;
        }
        cVar1 = (**(code **)(*param_1 + 4))(piVar5[1]);
        if (cVar1 != '\0') break;
        piVar5 = (int *)*piVar5;
        if (piVar5 == (int *)0x0) {
          piVar5 = (int *)FUN_00897830();
        }
      }
      iVar3 = piVar5[2];
      piVar5 = (int *)FUN_009dbfa0(&local_14);
      *piVar5 = iVar3;
      return iVar3;
    }
  }
  return puVar6[2];
}



void FUN_00897b20(undefined4 param_1)

{
  void **ppvVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032bdc24 == (void **)0x0) {
    ppvVar1 = (void **)operator_new(0x1c);
    local_4 = 0;
    if (ppvVar1 == (void **)0x0) {
      DAT_032bdc24 = (void **)0x0;
    }
    else {
      pvVar2 = (void *)FUN_00893ca0(100);
      ppvVar1[1] = pvVar2;
      ppvVar1[2] = (void *)0x0;
      pvVar2 = _calloc((size_t)pvVar2,4);
      *ppvVar1 = pvVar2;
      ppvVar1[4] = (void *)0x0;
      ppvVar1[5] = (void *)0x0;
      ppvVar1[6] = (void *)0x0;
      DAT_032bdc24 = ppvVar1;
    }
  }
  FUN_00850560(&param_1);
  ExceptionList = local_c;
  return;
}



undefined4 FUN_00897bc0(int param_1)

{
  bool bVar1;
  char cVar2;
  type_info *ptVar3;
  type_info *this;
  code *pcVar4;
  int iVar5;
  undefined4 uVar6;
  uint local_40;
  int local_3c;
  undefined local_38 [44];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  iVar5 = param_1;
  uVar6 = DAT_032bdc2c;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd6b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x10) == DAT_032bdc50) {
    thunk_FUN_0083e850();
    ExceptionList = local_c;
    return 1;
  }
  ptVar3 = (type_info *)___RTtypeid(*(int *)(param_1 + 0x10),DAT_0323f878 ^ (uint)&stack0xffffffb8);
  this = (type_info *)___RTtypeid(uVar6);
  bVar1 = type_info::operator==(this,ptVar3);
  if (!bVar1) {
    pcVar4 = (code *)FUN_00897980(*(undefined4 *)(iVar5 + 0x10));
    param_1 = 0;
    if (pcVar4 == (code *)0x0) {
      cVar2 = FUN_00897380(&param_1);
      if (cVar2 == '\0') {
        cVar2 = FUN_00897200(*(undefined4 *)(iVar5 + 0x10));
        if (cVar2 == '\0') {
          ExceptionList = local_c;
          return 0;
        }
        uVar6 = FUN_00897420(local_38,0);
        local_4 = 0;
        FUN_008bba30(uVar6);
        local_4 = 0xffffffff;
        FUN_008ba540();
        ExceptionList = local_c;
        return 0;
      }
      *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
      iVar5 = param_1;
    }
    else {
      iVar5 = (*pcVar4)(iVar5);
    }
    FUN_008b8640(iVar5);
    ExceptionList = local_c;
    return 1;
  }
  local_40 = 0;
  local_3c = 0;
  cVar2 = FUN_008972d0(&local_40);
  if (cVar2 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  if (local_3c + (uint)(0x7fffffff < local_40) == 0) {
    FUN_008bbe40(local_40);
    ExceptionList = local_c;
    return 1;
  }
  FUN_008bd0a0(local_40,local_3c);
  ExceptionList = local_c;
  return 1;
}



void FUN_00897d60(void)

{
  int iVar1;
  
  iVar1 = DAT_032bdc24;
  if (DAT_032bdc24 != 0) {
    FUN_008978e0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



undefined4 * __thiscall FUN_00897d90(undefined4 *param_1_00,undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccd9b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = wxPrivate::wxAnyValueTypeOpsGeneric<class_wxString>::DataHolder<class_wxString>::
                vftable;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  param_1_00[8] = 0;
  local_4 = 0;
  if (param_1_00 + 1 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00897e00(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxPrivate::wxAnyValueTypeOpsGeneric<class_wxString>::DataHolder<class_wxString>::
                vftable;
  _free((void *)param_1_00[8]);
  if (7 < (uint)param_1_00[7]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[2]);
  }
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00897e60(undefined4 param_1,undefined4 *param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x28);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00897d90(param_1);
    *param_2 = uVar2;
    ExceptionList = local_c;
    return;
  }
  *param_2 = 0;
  ExceptionList = local_c;
  return;
}



void FUN_00897ee0(int *param_1,undefined4 param_2)

{
  FUN_00897e60(*param_1 + 4,param_2);
  return;
}



void FUN_00897f00(uint *param_1,undefined4 param_2,double *param_3)

{
  uint uVar1;
  undefined4 uVar2;
  bool bVar3;
  uint uVar4;
  type_info *ptVar5;
  type_info *ptVar6;
  uint local_44;
  uint uStack_40;
  uint local_3c;
  uint local_38;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  uVar2 = DAT_032bdc3c;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9b78;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_44;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  uVar1 = *param_1;
  uStack_40 = param_1[1];
  local_44 = uVar1;
  ptVar5 = (type_info *)___RTtypeid(param_2,uVar4);
  ptVar6 = (type_info *)___RTtypeid(uVar2);
  bVar3 = type_info::operator==(ptVar6,ptVar5);
  uVar2 = DAT_032bdc30;
  if (bVar3) {
    local_38 = uStack_40;
    local_3c = uVar1;
    FUN_008a0c90(local_34);
    local_4 = 0;
    FUN_00897e60(local_34,param_3);
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  else {
    ptVar5 = (type_info *)___RTtypeid(param_2,uVar4);
    ptVar6 = (type_info *)___RTtypeid(uVar2);
    bVar3 = type_info::operator==(ptVar6,ptVar5);
    uVar2 = DAT_032bdc38;
    if (bVar3) {
      if (((0 < (int)uStack_40) || (-1 < (int)uStack_40)) && (param_3 != (double *)0x0)) {
        *(uint *)((int)param_3 + 4) = uStack_40;
        *(uint *)param_3 = uVar1;
      }
    }
    else {
      ptVar5 = (type_info *)___RTtypeid(param_2);
      ptVar6 = (type_info *)___RTtypeid(uVar2);
      bVar3 = type_info::operator==(ptVar6,ptVar5);
      uVar2 = DAT_032bdc34;
      if (bVar3) {
        if (param_3 != (double *)0x0) {
          *param_3 = (double)CONCAT44(uStack_40,local_44);
        }
      }
      else {
        ptVar5 = (type_info *)___RTtypeid(param_2);
        ptVar6 = (type_info *)___RTtypeid(uVar2);
        bVar3 = type_info::operator==(ptVar6,ptVar5);
        if ((bVar3) && (param_3 != (double *)0x0)) {
          *(bool *)param_3 = (uVar1 | uStack_40) != 0;
        }
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008980a0(ulonglong *param_1,undefined4 param_2,double *param_3)

{
  uint uVar1;
  uint uVar2;
  ulonglong uVar3;
  bool bVar4;
  uint uVar5;
  type_info *ptVar6;
  type_info *ptVar7;
  undefined4 local_40;
  uint local_3c;
  uint uStack_38;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bddcd8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_40;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  uVar1 = *(uint *)param_1;
  uVar2 = *(uint *)((int)param_1 + 4);
  uVar3 = *param_1;
  local_40 = DAT_032bdc3c;
  ptVar6 = (type_info *)___RTtypeid(param_2,uVar5);
  ptVar7 = (type_info *)___RTtypeid(local_40);
  bVar4 = type_info::operator==(ptVar7,ptVar6);
  if (bVar4) {
    local_3c = uVar1;
    uStack_38 = uVar2;
    FUN_008a0f30(local_34);
    local_4 = 0;
    FUN_00897e60(local_34,param_3);
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  else {
    local_40 = DAT_032bdc2c;
    ptVar6 = (type_info *)___RTtypeid(param_2,uVar5);
    ptVar7 = (type_info *)___RTtypeid(local_40);
    bVar4 = type_info::operator==(ptVar7,ptVar6);
    if (bVar4) {
      if (((uVar2 < 0x7fffffff) || (uVar2 < 0x80000000)) && (param_3 != (double *)0x0)) {
        *(uint *)param_3 = uVar1;
        *(uint *)((int)param_3 + 4) = uVar2;
      }
    }
    else {
      local_40 = DAT_032bdc38;
      ptVar6 = (type_info *)___RTtypeid(param_2);
      ptVar7 = (type_info *)___RTtypeid(local_40);
      bVar4 = type_info::operator==(ptVar7,ptVar6);
      if (bVar4) {
        if (param_3 != (double *)0x0) {
          uStack_38 = uVar2 & 0x80000000;
          local_3c = 0;
          *param_3 = -(double)(((ulonglong)uVar2 & 0x80000000) << 0x20) +
                     (double)(uVar3 & 0x7fffffffffffffff);
        }
      }
      else {
        local_40 = DAT_032bdc34;
        ptVar6 = (type_info *)___RTtypeid(param_2);
        ptVar7 = (type_info *)___RTtypeid(local_40);
        bVar4 = type_info::operator==(ptVar7,ptVar6);
        if ((bVar4) && (param_3 != (double *)0x0)) {
          *(bool *)param_3 = (uVar1 | uVar2) != 0;
        }
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00898290(undefined4 param_1,undefined4 param_2,undefined8 *param_3)

{
  undefined4 uVar1;
  bool bVar2;
  char cVar3;
  undefined uVar4;
  uint uVar5;
  type_info *ptVar6;
  type_info *ptVar7;
  int iVar8;
  undefined4 local_3c;
  undefined4 uStack_38;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  uVar1 = DAT_032bdc3c;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bddc78;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3c;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  ptVar6 = (type_info *)___RTtypeid(param_2,uVar5);
  ptVar7 = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(ptVar7,ptVar6);
  uVar1 = DAT_032bdc2c;
  if (bVar2) {
    FUN_00897e60(param_1,param_3);
    goto LAB_00898487;
  }
  ptVar6 = (type_info *)___RTtypeid(param_2,uVar5);
  ptVar7 = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(ptVar7,ptVar6);
  uVar1 = DAT_032bdc30;
  if (bVar2) {
    cVar3 = FUN_00850af0(&local_3c,10);
  }
  else {
    ptVar6 = (type_info *)___RTtypeid(param_2);
    ptVar7 = (type_info *)___RTtypeid(uVar1);
    bVar2 = type_info::operator==(ptVar7,ptVar6);
    uVar1 = DAT_032bdc38;
    if (!bVar2) {
      ptVar6 = (type_info *)___RTtypeid(param_2);
      ptVar7 = (type_info *)___RTtypeid(uVar1);
      bVar2 = type_info::operator==(ptVar7,ptVar6);
      if (bVar2) {
        cVar3 = FUN_00850cb0(&local_3c);
        if ((cVar3 != '\0') && (param_3 != (undefined8 *)0x0)) {
          *param_3 = CONCAT44(uStack_38,local_3c);
        }
      }
      else {
        cVar3 = FUN_00897110(param_2);
        if (cVar3 != '\0') {
          FUN_004325a0(param_1);
          local_4 = 0;
          FUN_008510e0();
          iVar8 = FUN_008507a0(L"true");
          if (((iVar8 == 0) || (iVar8 = FUN_008507a0(&DAT_00d323d8), iVar8 == 0)) ||
             (cVar3 = FUN_008506f0(0x31,1), cVar3 != '\0')) {
            uVar4 = 1;
          }
          else {
            iVar8 = FUN_008507a0(L"false");
            if (((iVar8 != 0) && (iVar8 = FUN_008507a0(&DAT_00d323c4), iVar8 != 0)) &&
               (cVar3 = FUN_008506f0(0x30,1), cVar3 == '\0')) {
              FUN_0040159c();
              goto LAB_00898487;
            }
            uVar4 = 0;
          }
          if (param_3 != (undefined8 *)0x0) {
            *(undefined *)param_3 = uVar4;
          }
          FUN_0040159c();
        }
      }
      goto LAB_00898487;
    }
    cVar3 = FUN_00850bd0(&local_3c,10);
  }
  if ((cVar3 != '\0') && (param_3 != (undefined8 *)0x0)) {
    *(undefined4 *)param_3 = local_3c;
    *(undefined4 *)((int)param_3 + 4) = uStack_38;
  }
LAB_00898487:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008984c0(byte *param_1,undefined4 param_2,uint *param_3)

{
  byte bVar1;
  undefined4 uVar2;
  bool bVar3;
  uint uVar4;
  type_info *ptVar5;
  type_info *ptVar6;
  wchar_t *pwVar7;
  undefined local_34 [4];
  undefined2 local_30;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  uVar2 = DAT_032bdc2c;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda7e8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  bVar1 = *param_1;
  ptVar5 = (type_info *)___RTtypeid(param_2,uVar4);
  ptVar6 = (type_info *)___RTtypeid(uVar2);
  bVar3 = type_info::operator==(ptVar6,ptVar5);
  uVar2 = DAT_032bdc30;
  if (!bVar3) {
    ptVar5 = (type_info *)___RTtypeid(param_2,uVar4);
    ptVar6 = (type_info *)___RTtypeid(uVar2);
    bVar3 = type_info::operator==(ptVar6,ptVar5);
    uVar2 = DAT_032bdc3c;
    if (!bVar3) {
      ptVar5 = (type_info *)___RTtypeid(param_2);
      ptVar6 = (type_info *)___RTtypeid(uVar2);
      bVar3 = type_info::operator==(ptVar6,ptVar5);
      if (bVar3) {
        local_1c = 7;
        local_20 = 0;
        local_30 = 0;
        local_18 = 0;
        local_4 = 0;
        if (bVar1 == 0) {
          pwVar7 = L"false";
        }
        else {
          pwVar7 = L"true";
        }
        FUN_00432199(pwVar7);
        FUN_00897e60(local_34,param_3);
        FUN_0040159c();
      }
      goto LAB_008985d0;
    }
  }
  if (param_3 != (uint *)0x0) {
    *param_3 = (uint)bVar1;
    param_3[1] = 0;
  }
LAB_008985d0:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00898600(double *param_1,undefined4 param_2,undefined8 *param_3)

{
  undefined4 uVar1;
  bool bVar2;
  uint uVar3;
  type_info *ptVar4;
  type_info *ptVar5;
  undefined8 uVar6;
  double local_50;
  undefined local_48 [20];
  undefined local_34 [36];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  uVar1 = DAT_032bdc2c;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd6f0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_50;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  local_50 = *param_1;
  ptVar4 = (type_info *)___RTtypeid();
  ptVar5 = (type_info *)___RTtypeid(uVar1,ptVar4,uVar3);
  bVar2 = type_info::operator==(ptVar5,ptVar4);
  uVar1 = DAT_032bdc30;
  if (bVar2) {
    if ((local_50 < -9.223372036854776e+18 != NAN(local_50)) ||
       (9.223372036854776e+18 < local_50 != NAN(local_50))) goto LAB_0089868f;
  }
  else {
    ptVar4 = (type_info *)___RTtypeid();
    ptVar5 = (type_info *)___RTtypeid(uVar1,ptVar4,uVar3);
    bVar2 = type_info::operator==(ptVar5,ptVar4);
    uVar1 = DAT_032bdc3c;
    if (!bVar2) {
      ptVar4 = (type_info *)___RTtypeid();
      ptVar5 = (type_info *)___RTtypeid(uVar1);
      bVar2 = type_info::operator==(ptVar5,ptVar4);
      if (bVar2) {
        FUN_0081c0f1();
        local_4 = 0;
        FUN_00847a30(local_34,local_48,local_50);
        local_4 = CONCAT31(local_4._1_3_,2);
        FUN_0081b5bc();
        FUN_00897e60(local_34,param_3);
        FUN_0040159c();
      }
      goto LAB_0089868f;
    }
    if ((local_50 < 0.0 != NAN(local_50)) || (1.844674407370955e+19 < local_50 != NAN(local_50)))
    goto LAB_0089868f;
  }
  if (param_3 != (undefined8 *)0x0) {
    uVar6 = FUN_00a49786();
    *param_3 = uVar6;
  }
LAB_0089868f:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008987a0(int *param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00898290(*param_1 + 4,param_2,param_3);
  return;
}



void FUN_008987c0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf248;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  FUN_0043c211(*param_1);
  local_4 = 0;
  FUN_00898290(local_34,param_2,param_3,uVar1);
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00898870(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf248;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  FUN_004325b6(*param_1);
  local_4 = 0;
  FUN_00898290(local_34,param_2,param_3,uVar1);
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_00898920(void)

{
  return &PTR_u_wxModule_032373a0;
}



undefined4 * __thiscall
FUN_00898930(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxwxModuleListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 __fastcall FUN_008989b0(int param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  
  if (*(int *)(param_1 + 0x18) != 0) {
    iVar2 = 0;
    uVar3 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x18) <= uVar3)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      iVar1 = FUN_0083e9a0(*(int *)(param_1 + 0x1c) + iVar2);
      if (iVar1 == 0) {
        return 0;
      }
      FUN_0086a400(iVar1,1);
      uVar3 = uVar3 + 1;
      iVar2 = iVar2 + 0x24;
    } while (uVar3 < *(uint *)(param_1 + 0x18));
  }
  return 1;
}



void __thiscall
FUN_00898a30(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_0083e8f0(param_3,param_2,1);
  uVar1 = FUN_008854f0(param_2);
  FUN_0084d410(param_1_00,param_1,uVar1);
  return;
}



void FUN_00898a70(void)

{
  char cVar1;
  undefined **ppuVar2;
  int iVar3;
  undefined auStack_f0 [16];
  undefined4 uStack_e0;
  undefined4 *puStack_dc;
  undefined *puStack_d8;
  int *piStack_d4;
  int local_b8;
  int local_ac [2];
  undefined *local_a4;
  undefined local_a0 [4];
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [20];
  undefined4 local_68 [2];
  char *local_60;
  undefined4 local_5c;
  char *local_58;
  undefined *local_54;
  __time64_t local_50;
  DWORD local_48;
  undefined4 local_44;
  undefined2 local_3c;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00bcd76b;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  piStack_d4 = (int *)0x898aac;
  FUN_0083ea10();
  piStack_d4 = local_ac;
  puStack_d8 = (undefined *)0x898ab6;
  FUN_0083ea40();
  do {
    if (local_ac[0] == local_b8) {
      ExceptionList = local_14;
      return;
    }
    ppuVar2 = (undefined **)FUN_0083ea00();
    if (ppuVar2 != &PTR_u_wxModule_032373a0) {
      if (ppuVar2[3] == (undefined *)0x0) {
LAB_00898afc:
        if (ppuVar2[4] != (undefined *)0x0) {
          piStack_d4 = (int *)0x898b11;
          cVar1 = FUN_0048a047();
          if (cVar1 != '\0') goto LAB_00898b19;
        }
      }
      else {
        piStack_d4 = (int *)0x898af8;
        cVar1 = FUN_0048a047();
        if (cVar1 == '\0') goto LAB_00898afc;
LAB_00898b19:
        local_a4 = auStack_f0;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(7);
        if (cVar1 != '\0') {
          piStack_d4 = (int *)0x898b4b;
          FUN_0081c0f1();
          local_c = 0;
          piStack_d4 = (int *)0x898b60;
          FUN_004325b6();
          local_c._0_1_ = 1;
          local_68[0] = 7;
          local_60 = "..\\..\\src\\common\\module.cpp";
          local_58 = "wxModule::RegisterModules";
          local_5c = 0x3e;
          local_54 = &DAT_00d25fa0;
          piStack_d4 = (int *)0x898b92;
          local_50 = __time64((__time64_t *)0x0);
          local_48 = GetCurrentThreadId();
          local_44 = 0;
          local_28 = 7;
          local_2c = 0;
          local_3c = 0;
          local_24 = 0;
          puStack_d8 = *ppuVar2;
          piStack_d4 = (int *)local_7c;
          local_c._0_1_ = 2;
          puStack_dc = (undefined4 *)0x898bed;
          FUN_0083e8f0();
          piStack_d4 = (int *)0x898bfb;
          piStack_d4 = (int *)FUN_008854f0();
          puStack_d8 = local_a0;
          puStack_dc = local_68;
          uStack_e0 = 0x898c0b;
          FUN_0084d410();
          local_c = CONCAT31(local_c._1_3_,1);
          FUN_00842440();
          piStack_d4 = (int *)0x898c29;
          _free(local_84);
          if (7 < local_88) {
                    // WARNING: Subroutine does not return
            piStack_d4 = (int *)&UNK_00898c3d;
            FUN_00a3f6a1();
          }
          local_9c = local_9c & 0xffff0000;
          local_88 = 7;
          local_8c = 0;
          local_c = 0xffffffff;
          FUN_0081b5bc();
        }
        if ((code *)ppuVar2[2] == (code *)0x0) {
          iVar3 = 0;
        }
        else {
          iVar3 = (*(code *)ppuVar2[2])();
        }
        *(undefined4 *)(iVar3 + 0x24) = 0;
        piStack_d4 = (int *)0x898c7e;
        FUN_0086ad60();
      }
    }
    FUN_0083e7e0();
  } while( true );
}



// WARNING: Removing unreachable block (ram,0x008991e8)
// WARNING: Removing unreachable block (ram,0x0089924d)
// WARNING: Removing unreachable block (ram,0x008991ae)

undefined4 FUN_00898cb0(int *param_1,int param_2)

{
  short sVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  short *psVar7;
  uint local_144;
  uint uStack_114;
  void *pvStack_110;
  uint uStack_f0;
  void *pvStack_ec;
  uint uStack_7c;
  void *pvStack_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd845;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1[9] == 1) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(1);
    if (cVar3 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_008423d0();
      local_4._0_1_ = 3;
      (**(code **)*param_1)();
      FUN_0083e8f0();
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      _free(pvStack_110);
      if (7 < uStack_114) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(pvStack_ec);
      if (7 < uStack_f0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  else {
    param_1[9] = 1;
    cVar3 = FUN_008989b0();
    if (cVar3 != '\0') {
      uVar5 = param_1[3];
      local_144 = 0;
      if (uVar5 != 0) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar5 <= local_144)) {
            FUN_008402e0();
          }
          iVar2 = *(int *)(param_1[4] + local_144 * 4);
          for (iVar4 = *(int *)(param_2 + 0xc); iVar6 = DAT_032373c4, iVar4 != 0;
              iVar4 = *(int *)(iVar4 + 0xc)) {
            iVar6 = (**(code **)**(undefined4 **)(iVar4 + 8))();
            if (iVar6 == iVar2) goto LAB_00898fcf;
          }
          while( true ) {
            if (iVar6 == 0) {
              FUN_0043c211(&DAT_00d25fa0);
              cVar3 = FUN_00846b30(1);
              if (cVar3 == '\0') {
                ExceptionList = local_c;
                return 0;
              }
              psVar7 = (short *)PTR_DAT_03236318;
              if (PTR_DAT_03236318 == (undefined *)0x0) {
                psVar7 = &DAT_00fae9c8;
              }
              do {
                sVar1 = *psVar7;
                psVar7 = psVar7 + 1;
              } while (sVar1 != 0);
              FID_conflict_assign();
              local_4 = 4;
              FUN_0043c211();
              local_4 = CONCAT31(local_4._1_3_,5);
              iVar4 = FUN_0084a340();
              if (iVar4 == 0) {
                FUN_0084d360();
              }
              else {
                FUN_0084f210();
              }
              FUN_00850350();
              local_4._0_1_ = 6;
              FUN_00850350();
              local_4._0_1_ = 7;
              FUN_00850350();
              local_4._0_1_ = 8;
              __time64((__time64_t *)0x0);
              GetCurrentThreadId();
              local_4._0_1_ = 9;
              (**(code **)*param_1)();
              FUN_0083e8f0();
              FUN_0083e8f0();
              FUN_008854f0();
              FUN_0083fe90();
              local_4._0_1_ = 8;
              _free((void *)0x0);
              local_4 = CONCAT31(local_4._1_3_,5);
              FUN_0081b5bc();
              _free(pvStack_110);
              if (uStack_114 < 8) {
                _free((void *)0x0);
                ExceptionList = local_c;
                return 0;
              }
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1();
            }
            iVar4 = (**(code **)**(undefined4 **)(iVar6 + 8))();
            if (iVar4 == iVar2) break;
            iVar6 = *(int *)(iVar6 + 0xc);
          }
          cVar3 = FUN_00898cb0();
          if (cVar3 == '\0') {
            ExceptionList = local_c;
            return 0;
          }
LAB_00898fcf:
          uVar5 = param_1[3];
          local_144 = local_144 + 1;
        } while (local_144 < uVar5);
      }
      cVar3 = (**(code **)(*param_1 + 0x10))();
      if (cVar3 != '\0') {
        FUN_0043c211(&DAT_00d25fa0);
        cVar3 = FUN_00846b30(7);
        if (cVar3 != '\0') {
          FUN_0081c0f1();
          local_4 = 0xe;
          FUN_004325b6();
          local_4._0_1_ = 0xf;
          FUN_008423d0();
          local_4._0_1_ = 0x10;
          (**(code **)*param_1)();
          FUN_0083e8f0();
          FUN_008854f0();
          FUN_0084d410();
          local_4 = CONCAT31(local_4._1_3_,0xf);
          FUN_00842440();
          _free(pvStack_78);
          if (7 < uStack_7c) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          local_4 = 0xffffffff;
          FUN_0081b5bc();
        }
        param_1[9] = 2;
        FUN_0086ad60();
        ExceptionList = local_c;
        return 1;
      }
      FUN_0043c211(&DAT_00d25fa0);
      cVar3 = FUN_00846b30(1);
      if (cVar3 != '\0') {
        FUN_004325b6();
        local_4 = 10;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,0xb);
        iVar4 = FUN_0084a340();
        if (iVar4 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 0xc;
        FUN_008423d0();
        local_4._0_1_ = 0xd;
        (**(code **)*param_1)();
        FUN_0083e8f0();
        FUN_008854f0();
        FUN_0083fe90();
        local_4._0_1_ = 0xc;
        FUN_00842440();
        local_4 = CONCAT31(local_4._1_3_,0xb);
        FUN_0081b5bc();
        _free(pvStack_ec);
        if (7 < uStack_f0) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        _free(pvStack_110);
        if (7 < uStack_114) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
      }
    }
  }
  ExceptionList = local_c;
  return 0;
}



// WARNING: Removing unreachable block (ram,0x00899681)
// WARNING: Removing unreachable block (ram,0x008996a3)
// WARNING: Removing unreachable block (ram,0x0089965b)

void FUN_008994d0(int param_1)

{
  short sVar1;
  int iVar2;
  undefined4 *puVar3;
  int *piVar4;
  int iVar5;
  void **ppvVar6;
  char cVar7;
  short *psVar8;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd88b;
  ppvVar6 = &local_c;
  local_c = ExceptionList;
  for (iVar2 = *(int *)(param_1 + 0x10); ExceptionList = ppvVar6, iVar5 = DAT_032373c4, iVar2 != 0;
      iVar2 = *(int *)(iVar2 + 0x10)) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar7 = FUN_00846b30(7);
    if (cVar7 != '\0') {
      FUN_0081c0f1();
      psVar8 = &DAT_00d324b0;
      local_4 = 0;
      do {
        sVar1 = *psVar8;
        psVar8 = psVar8 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign();
      puVar3 = *(undefined4 **)(iVar2 + 8);
      local_4._0_1_ = 1;
      __time64((__time64_t *)0x0);
      GetCurrentThreadId();
      local_4._0_1_ = 2;
      (**(code **)*puVar3)();
      FUN_0083e8f0();
      FUN_008854f0();
      FUN_0084d410();
      local_4 = CONCAT31(local_4._1_3_,1);
      _free((void *)0x0);
      _free((void *)0x0);
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    piVar4 = *(int **)(iVar2 + 8);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar4[9] != 2)) {
      FUN_00840480();
    }
    (**(code **)(*piVar4 + 0x14))();
    piVar4[9] = 0;
    ppvVar6 = (void **)ExceptionList;
  }
  for (; iVar5 != 0; iVar5 = *(int *)(iVar5 + 0xc)) {
    if (*(int **)(iVar5 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar5 + 8) + 4))();
    }
  }
  FUN_0086b130();
  ExceptionList = local_c;
  return;
}



undefined4 FUN_00899770(void)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined **local_24 [6];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9908;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  local_24[0] = wxListBase::vftable;
  FUN_0086ad40(0);
  local_24[0] = wxModuleList::vftable;
  local_4 = 0;
  iVar1 = DAT_032373c4;
  while( true ) {
    if (iVar1 == 0) {
      FUN_0086b130();
      FUN_0086b7d0(local_24);
      local_4 = 0xffffffff;
      FUN_0086ade0();
      ExceptionList = local_c;
      return 1;
    }
    if ((*(int *)(*(int *)(iVar1 + 8) + 0x24) == 0) &&
       (cVar2 = FUN_00898cb0(*(int *)(iVar1 + 8),local_24,uVar3), cVar2 == '\0')) break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  FUN_008994d0(local_24);
  local_4 = 0xffffffff;
  FUN_0086ade0();
  ExceptionList = local_c;
  return 0;
}



void FUN_00899860(void)

{
  wchar_t *pwVar1;
  short *psVar2;
  uint uVar3;
  short *psVar4;
  wchar_t *pwVar5;
  undefined4 local_68 [2];
  undefined2 local_60;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_40;
  undefined4 local_3c;
  undefined2 local_34;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcd8b8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_68;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  local_4c = 7;
  local_50 = 0;
  local_60 = 0;
  local_48 = 0;
  local_20 = 7;
  local_24 = 0;
  local_34 = 0;
  local_1c = 0;
  local_4 = 0;
  local_68[0] = 2;
  psVar2 = &DAT_00d24034;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d24034,(int)(psVar4 + -0x69201a) >> 1);
  local_14 = 1;
  pwVar1 = L"Abkhazian";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Abkhazian",(int)(pwVar5 + -0x69a31a) >> 1);
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68,uVar3);
  local_68[0] = 3;
  psVar2 = &DAT_00d3462c;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d3462c,(int)(psVar4 + -0x69a316) >> 1);
  local_14 = 1;
  psVar2 = &DAT_00d34620;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34620,(int)(psVar4 + -0x69a310) >> 1);
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 4;
  psVar2 = &DAT_00d34614;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34614,(int)(psVar4 + -0x69a30a) >> 1);
  local_14 = 1;
  pwVar1 = L"Afrikaans";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Afrikaans",(int)(pwVar5 + -0x69a300) >> 1);
  local_40 = 0x36;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 5;
  psVar2 = &DAT_00d345f4;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d345f4,(int)(psVar4 + -0x69a2fa) >> 1);
  local_14 = 1;
  pwVar1 = L"Albanian";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Albanian",(int)(pwVar5 + -0x69a2f0) >> 1);
  local_40 = 0x1c;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 6;
  psVar2 = &DAT_00d345d8;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d345d8,(int)(psVar4 + -0x69a2ec) >> 1);
  local_14 = 1;
  pwVar1 = L"Amharic";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Amharic",(int)(pwVar5 + -0x69a2e4) >> 1);
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 7;
  psVar2 = &DAT_00d345c0;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d345c0,(int)(psVar4 + -0x69a2e0) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic",(int)(pwVar5 + -0x69a2d8) >> 1);
  local_40 = 1;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 8;
  psVar2 = &DAT_00d345a4;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d345a4,(int)(psVar4 + -0x69a2d2) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Algeria)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Algeria)",(int)(pwVar5 + -0x69a2c0) >> 1);
  local_40 = 1;
  local_3c = 5;
  FUN_00848ab0(local_68);
  local_68[0] = 9;
  psVar2 = &DAT_00d34574;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34574,(int)(psVar4 + -0x69a2ba) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Bahrain)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Bahrain)",(int)(pwVar5 + -0x69a2a8) >> 1);
  local_40 = 1;
  local_3c = 0xf;
  FUN_00848ab0(local_68);
  local_68[0] = 10;
  psVar2 = &DAT_00d34544;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34544,(int)(psVar4 + -0x69a2a2) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Egypt)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Egypt)",(int)(pwVar5 + -0x69a292) >> 1);
  local_40 = 1;
  local_3c = 3;
  FUN_00848ab0(local_68);
  local_68[0] = 0xb;
  psVar2 = &DAT_00d34518;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34518,(int)(psVar4 + -0x69a28c) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Iraq)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Iraq)",(int)(pwVar5 + -0x69a27e) >> 1);
  local_40 = 1;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0xc;
  psVar2 = &DAT_00d344f0;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d344f0,(int)(psVar4 + -0x69a278) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Jordan)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Jordan)",(int)(pwVar5 + -0x69a268) >> 1);
  local_40 = 1;
  local_3c = 0xb;
  FUN_00848ab0(local_68);
  local_68[0] = 0xd;
  psVar2 = &DAT_00d344c4;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d344c4,(int)(psVar4 + -0x69a262) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Kuwait)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Kuwait)",(int)(pwVar5 + -0x69a252) >> 1);
  local_40 = 1;
  local_3c = 0xd;
  FUN_00848ab0(local_68);
  local_68[0] = 0xe;
  psVar2 = &DAT_00d34498;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34498,(int)(psVar4 + -0x69a24c) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Lebanon)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Lebanon)",(int)(pwVar5 + -0x69a23a) >> 1);
  local_40 = 1;
  local_3c = 0xc;
  FUN_00848ab0(local_68);
  local_68[0] = 0xf;
  psVar2 = &DAT_00d34468;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34468,(int)(psVar4 + -0x69a234) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Libya)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Libya)",(int)(pwVar5 + -0x69a224) >> 1);
  local_40 = 1;
  local_3c = 4;
  FUN_00848ab0(local_68);
  local_68[0] = 0x10;
  pwVar1 = L"ar_MA";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"ar_MA",(int)(pwVar5 + -0x69a21e) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Morocco)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Morocco)",(int)(pwVar5 + -0x69a20c) >> 1);
  local_40 = 1;
  local_3c = 6;
  FUN_00848ab0(local_68);
  local_68[0] = 0x11;
  psVar2 = &DAT_00d3440c;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d3440c,(int)(psVar4 + -0x69a206) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Oman)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Oman)",(int)(pwVar5 + -0x69a1f8) >> 1);
  local_40 = 1;
  local_3c = 8;
  FUN_00848ab0(local_68);
  local_68[0] = 0x12;
  psVar2 = &DAT_00d343e4;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d343e4,(int)(psVar4 + -0x69a1f2) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Qatar)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Qatar)",(int)(pwVar5 + -0x69a1e2) >> 1);
  local_40 = 1;
  local_3c = 0x10;
  FUN_00848ab0(local_68);
  local_68[0] = 0x13;
  psVar2 = &DAT_00d343b8;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d343b8,(int)(psVar4 + -0x69a1dc) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Saudi Arabia)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Saudi Arabia)",(int)(pwVar5 + -0x69a1c6) >> 1);
  local_40 = 1;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x14;
  psVar2 = &DAT_00d34380;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34380,(int)(psVar4 + -0x69a1c0) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Sudan)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Sudan)",(int)(pwVar5 + -0x69a1b0) >> 1);
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x15;
  psVar2 = &DAT_00d34354;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34354,(int)(psVar4 + -0x69a1aa) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Syria)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Syria)",(int)(pwVar5 + -0x69a19a) >> 1);
  local_40 = 1;
  local_3c = 10;
  FUN_00848ab0(local_68);
  local_68[0] = 0x16;
  psVar2 = &DAT_00d34328;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34328,(int)(psVar4 + -0x69a194) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Tunisia)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Tunisia)",(int)(pwVar5 + -0x69a182) >> 1);
  local_40 = 1;
  local_3c = 7;
  FUN_00848ab0(local_68);
  local_68[0] = 0x17;
  psVar2 = &DAT_00d342f8;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d342f8,(int)(psVar4 + -0x69a17c) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Uae)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Uae)",(int)(pwVar5 + -0x69a16e) >> 1);
  local_40 = 1;
  local_3c = 0xe;
  FUN_00848ab0(local_68);
  local_68[0] = 0x18;
  psVar2 = &DAT_00d342d0;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d342d0,(int)(psVar4 + -0x69a168) >> 1);
  local_14 = 2;
  pwVar1 = L"Arabic (Yemen)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Arabic (Yemen)",(int)(pwVar5 + -0x69a158) >> 1);
  local_40 = 1;
  local_3c = 9;
  FUN_00848ab0(local_68);
  local_68[0] = 0x19;
  psVar2 = &DAT_00d342a8;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d342a8,(int)(psVar4 + -0x69a154) >> 1);
  local_14 = 1;
  pwVar1 = L"Armenian";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Armenian",(int)(pwVar5 + -0x69a14a) >> 1);
  local_40 = 0x2b;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x1a;
  psVar2 = &DAT_00d3428c;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d3428c,(int)(psVar4 + -0x69a146) >> 1);
  local_14 = 1;
  pwVar1 = L"Assamese";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Assamese",(int)(pwVar5 + -0x69a13c) >> 1);
  local_40 = 0x4d;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x1b;
  psVar2 = &DAT_00d34270;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34270,(int)(psVar4 + -0x69a138) >> 1);
  local_14 = 1;
  pwVar1 = L"Asturian";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Asturian",(int)(pwVar5 + -0x69a12e) >> 1);
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x1c;
  psVar2 = &DAT_00d34254;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34254,(int)(psVar4 + -0x69a12a) >> 1);
  local_14 = 1;
  pwVar1 = L"Aymara";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Aymara",(int)(pwVar5 + -0x69a122) >> 1);
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x1d;
  psVar2 = &DAT_00d3423c;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d3423c,(int)(psVar4 + -0x69a11e) >> 1);
  local_14 = 1;
  pwVar1 = L"Azeri";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Azeri",(int)(pwVar5 + -0x69a118) >> 1);
  local_40 = 0x2c;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x1e;
  psVar2 = &DAT_00d3423c;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d3423c,(int)(psVar4 + -0x69a11e) >> 1);
  local_14 = 1;
  pwVar1 = L"Azeri (Cyrillic)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Azeri (Cyrillic)",(int)(pwVar5 + -0x69a106) >> 1);
  local_40 = 0x2c;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0x1f;
  psVar2 = &DAT_00d3423c;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d3423c,(int)(psVar4 + -0x69a11e) >> 1);
  local_14 = 1;
  pwVar1 = L"Azeri (Latin)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Azeri (Latin)",(int)(pwVar5 + -0x69a0f8) >> 1);
  local_40 = 0x2c;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x20;
  psVar2 = &DAT_00d341e8;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d341e8,(int)(psVar4 + -0x69a0f4) >> 1);
  local_14 = 1;
  psVar2 = &DAT_00d341d8;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d341d8,(int)(psVar4 + -0x69a0ec) >> 1);
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x21;
  psVar2 = &DAT_00d341cc;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d341cc,(int)(psVar4 + -0x69a0e6) >> 1);
  local_14 = 1;
  pwVar1 = L"Basque";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Basque",(int)(pwVar5 + -0x69a0de) >> 1);
  local_40 = 0x2d;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x22;
  psVar2 = &DAT_00d341b0;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d341b0,(int)(psVar4 + -0x69a0d8) >> 1);
  local_14 = 1;
  pwVar1 = L"Belarusian";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Belarusian",(int)(pwVar5 + -0x69a0cc) >> 1);
  local_40 = 0x23;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x23;
  psVar2 = &DAT_00d34190;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34190,(int)(psVar4 + -0x69a0c8) >> 1);
  local_14 = 1;
  pwVar1 = L"Bengali";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Bengali",(int)(pwVar5 + -0x69a0c0) >> 1);
  local_40 = 0x45;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x24;
  psVar2 = &DAT_00d34178;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34178,(int)(psVar4 + -0x69a0bc) >> 1);
  local_14 = 1;
  pwVar1 = L"Bhutani";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Bhutani",(int)(pwVar5 + -0x69a0b4) >> 1);
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x25;
  psVar2 = &DAT_00d34160;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34160,(int)(psVar4 + -0x69a0b0) >> 1);
  local_14 = 1;
  pwVar1 = L"Bihari";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Bihari",(int)(pwVar5 + -0x69a0a8) >> 1);
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x26;
  psVar2 = &DAT_00d34148;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34148,(int)(psVar4 + -0x69a0a4) >> 1);
  local_14 = 1;
  pwVar1 = L"Bislama";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Bislama",(int)(pwVar5 + -0x69a09c) >> 1);
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x27;
  psVar2 = &DAT_00d34130;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34130,(int)(psVar4 + -0x69a098) >> 1);
  local_14 = 1;
  pwVar1 = L"Bosnian";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Bosnian",(int)(pwVar5 + -0x69a090) >> 1);
  local_40 = 0x1a;
  local_3c = 5;
  FUN_00848ab0(local_68);
  local_68[0] = 0x28;
  psVar2 = &DAT_00d34118;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34118,(int)(psVar4 + -0x69a08c) >> 1);
  local_14 = 1;
  pwVar1 = L"Breton";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Breton",(int)(pwVar5 + -0x69a084) >> 1);
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x29;
  psVar2 = &DAT_00d340fc;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d340fc,(int)(psVar4 + -0x69a07e) >> 1);
  local_14 = 1;
  pwVar1 = L"Bulgarian";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Bulgarian",(int)(pwVar5 + -0x69a074) >> 1);
  local_40 = 2;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x2a;
  psVar2 = &DAT_00d340e0;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d340e0,(int)(psVar4 + -0x69a070) >> 1);
  local_14 = 1;
  pwVar1 = L"Burmese";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Burmese",(int)(pwVar5 + -0x69a068) >> 1);
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x2b;
  psVar2 = &DAT_00d340c8;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d340c8,(int)(psVar4 + -0x69a064) >> 1);
  local_14 = 1;
  pwVar1 = L"Cambodian";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Cambodian",(int)(pwVar5 + -0x69a05a) >> 1);
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x2c;
  psVar2 = &DAT_00d340a8;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d340a8,(int)(psVar4 + -0x69a054) >> 1);
  local_14 = 1;
  pwVar1 = L"Catalan";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Catalan",(int)(pwVar5 + -0x69a04c) >> 1);
  local_40 = 3;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x2d;
  psVar2 = &DAT_00d3408c;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d3408c,(int)(psVar4 + -0x69a046) >> 1);
  local_14 = 1;
  pwVar1 = L"Chinese";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Chinese",(int)(pwVar5 + -0x69a03e) >> 1);
  local_40 = 4;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x2e;
  psVar2 = &DAT_00d34070;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d34070,(int)(psVar4 + -0x69a038) >> 1);
  local_14 = 1;
  pwVar1 = L"Chinese (Simplified)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Chinese (Simplified)",(int)(pwVar5 + -0x69a022) >> 1);
  local_40 = 4;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0x2f;
  psVar2 = &DAT_00d3408c;
  do {
    psVar4 = psVar2;
    psVar2 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00d3408c,(int)(psVar4 + -0x69a046) >> 1);
  local_14 = 1;
  pwVar1 = L"Chinese (Traditional)";
  do {
    pwVar5 = pwVar1;
    pwVar1 = pwVar5 + 1;
  } while (*pwVar5 != L'\0');
  FID_conflict_assign(L"Chinese (Traditional)",(int)(pwVar5 + -0x69a00c) >> 1);
  local_40 = 4;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x30;
  FUN_00432199(L"zh_HK");
  local_14 = 1;
  FUN_00432199(L"Chinese (Hongkong)");
  local_40 = 4;
  local_3c = 3;
  FUN_00848ab0(local_68);
  local_68[0] = 0x31;
  FUN_00432199(L"zh_MO");
  local_14 = 1;
  FUN_00432199(L"Chinese (Macau)");
  local_40 = 4;
  local_3c = 5;
  FUN_00848ab0(local_68);
  local_68[0] = 0x32;
  FUN_00432199(L"zh_SG");
  local_14 = 1;
  FUN_00432199(L"Chinese (Singapore)");
  local_40 = 4;
  local_3c = 4;
  FUN_00848ab0(local_68);
  local_68[0] = 0x33;
  FUN_00432199(&DAT_00d3408c);
  local_14 = 1;
  FUN_00432199(L"Chinese (Taiwan)");
  local_40 = 4;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x34;
  FUN_00432199(&DAT_00d33f58);
  local_14 = 1;
  FUN_00432199(L"Corsican");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x35;
  FUN_00432199(L"hr_HR");
  local_14 = 1;
  FUN_00432199(L"Croatian");
  local_40 = 0x1a;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x36;
  FUN_00432199(L"cs_CZ");
  local_14 = 1;
  FUN_00432199(L"Czech");
  local_40 = 5;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x37;
  FUN_00432199(L"da_DK");
  local_14 = 1;
  FUN_00432199(L"Danish");
  local_40 = 6;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x38;
  FUN_00432199(L"nl_NL");
  local_14 = 1;
  FUN_00432199(L"Dutch");
  local_40 = 0x13;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x39;
  FUN_00432199(L"nl_BE");
  local_14 = 1;
  FUN_00432199(L"Dutch (Belgian)");
  local_40 = 0x13;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0x3a;
  FUN_00432199(L"en_GB");
  local_14 = 1;
  FUN_00432199(L"English");
  local_40 = 9;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0x3b;
  FUN_00432199(L"en_GB");
  local_14 = 1;
  FUN_00432199(L"English (U.K.)");
  local_40 = 9;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0x3c;
  FUN_00432199(L"en_US");
  local_14 = 1;
  FUN_00432199(L"English (U.S.)");
  local_40 = 9;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x3d;
  FUN_00432199(L"en_AU");
  local_14 = 1;
  FUN_00432199(L"English (Australia)");
  local_40 = 9;
  local_3c = 3;
  FUN_00848ab0(local_68);
  local_68[0] = 0x3e;
  FUN_00432199(L"en_BZ");
  local_14 = 1;
  FUN_00432199(L"English (Belize)");
  local_40 = 9;
  local_3c = 10;
  FUN_00848ab0(local_68);
  local_68[0] = 0x3f;
  FUN_00432199(L"en_BW");
  local_14 = 1;
  FUN_00432199(L"English (Botswana)");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x40;
  FUN_00432199(L"en_CA");
  local_14 = 1;
  FUN_00432199(L"English (Canada)");
  local_40 = 9;
  local_3c = 4;
  FUN_00848ab0(local_68);
  local_68[0] = 0x41;
  FUN_00432199(L"en_CB");
  local_14 = 1;
  FUN_00432199(L"English (Caribbean)");
  local_40 = 9;
  local_3c = 9;
  FUN_00848ab0(local_68);
  local_68[0] = 0x42;
  FUN_00432199(L"en_DK");
  local_14 = 1;
  FUN_00432199(L"English (Denmark)");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x43;
  FUN_00432199(L"en_IE");
  local_14 = 1;
  FUN_00432199(L"English (Eire)");
  local_40 = 9;
  local_3c = 6;
  FUN_00848ab0(local_68);
  local_68[0] = 0x44;
  FUN_00432199(L"en_JM");
  local_14 = 1;
  FUN_00432199(L"English (Jamaica)");
  local_40 = 9;
  local_3c = 8;
  FUN_00848ab0(local_68);
  local_68[0] = 0x45;
  FUN_00432199(L"en_NZ");
  local_14 = 1;
  FUN_00432199(L"English (New Zealand)");
  local_40 = 9;
  local_3c = 5;
  FUN_00848ab0(local_68);
  local_68[0] = 0x46;
  FUN_00432199(L"en_PH");
  local_14 = 1;
  FUN_00432199(L"English (Philippines)");
  local_40 = 9;
  local_3c = 0xd;
  FUN_00848ab0(local_68);
  local_68[0] = 0x47;
  FUN_00432199(L"en_ZA");
  local_14 = 1;
  FUN_00432199(L"English (South Africa)");
  local_40 = 9;
  local_3c = 7;
  FUN_00848ab0(local_68);
  local_68[0] = 0x48;
  FUN_00432199(L"en_TT");
  local_14 = 1;
  FUN_00432199(L"English (Trinidad)");
  local_40 = 9;
  local_3c = 0xb;
  FUN_00848ab0(local_68);
  local_68[0] = 0x49;
  FUN_00432199(L"en_ZW");
  local_14 = 1;
  FUN_00432199(L"English (Zimbabwe)");
  local_40 = 9;
  local_3c = 0xc;
  FUN_00848ab0(local_68);
  local_68[0] = 0x4a;
  FUN_00432199(&DAT_00d33ba0);
  local_14 = 1;
  FUN_00432199(L"Esperanto");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x4b;
  FUN_00432199(L"et_EE");
  local_14 = 1;
  FUN_00432199(L"Estonian");
  local_40 = 0x25;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x4c;
  FUN_00432199(L"fo_FO");
  local_14 = 1;
  FUN_00432199(L"Faeroese");
  local_40 = 0x38;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x4d;
  FUN_00432199(L"fa_IR");
  local_14 = 2;
  FUN_00432199(L"Farsi");
  local_40 = 0x29;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x4e;
  FUN_00432199(&DAT_00d33b2c);
  local_14 = 1;
  FUN_00432199(L"Fiji");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x4f;
  FUN_00432199(L"fi_FI");
  local_14 = 1;
  FUN_00432199(L"Finnish");
  local_40 = 0xb;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x50;
  FUN_00432199(L"fr_FR");
  local_14 = 1;
  FUN_00432199(L"French");
  local_40 = 0xc;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x51;
  FUN_00432199(L"fr_BE");
  local_14 = 1;
  FUN_00432199(L"French (Belgian)");
  local_40 = 0xc;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0x52;
  FUN_00432199(L"fr_CA");
  local_14 = 1;
  FUN_00432199(L"French (Canadian)");
  local_40 = 0xc;
  local_3c = 3;
  FUN_00848ab0(local_68);
  local_68[0] = 0x53;
  FUN_00432199(L"fr_LU");
  local_14 = 1;
  FUN_00432199(L"French (Luxembourg)");
  local_40 = 0xc;
  local_3c = 5;
  FUN_00848ab0(local_68);
  local_68[0] = 0x54;
  FUN_00432199(L"fr_MC");
  local_14 = 1;
  FUN_00432199(L"French (Monaco)");
  local_40 = 0xc;
  local_3c = 6;
  FUN_00848ab0(local_68);
  local_68[0] = 0x55;
  FUN_00432199(L"fr_CH");
  local_14 = 1;
  FUN_00432199(L"French (Swiss)");
  local_40 = 0xc;
  local_3c = 4;
  FUN_00848ab0(local_68);
  local_68[0] = 0x56;
  FUN_00432199(&DAT_00d339f4);
  local_14 = 1;
  FUN_00432199(L"Frisian");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x57;
  FUN_00432199(L"gl_ES");
  local_14 = 1;
  FUN_00432199(L"Galician");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x58;
  FUN_00432199(L"ka_GE");
  local_14 = 1;
  FUN_00432199(L"Georgian");
  local_40 = 0x37;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x59;
  FUN_00432199(L"de_DE");
  local_14 = 1;
  FUN_00432199(L"German");
  local_40 = 7;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x5a;
  FUN_00432199(L"de_AT");
  local_14 = 1;
  FUN_00432199(L"German (Austrian)");
  local_40 = 7;
  local_3c = 3;
  FUN_00848ab0(local_68);
  local_68[0] = 0x5b;
  FUN_00432199(L"de_BE");
  local_14 = 1;
  FUN_00432199(L"German (Belgium)");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x5c;
  FUN_00432199(L"de_LI");
  local_14 = 1;
  FUN_00432199(L"German (Liechtenstein)");
  local_40 = 7;
  local_3c = 5;
  FUN_00848ab0(local_68);
  local_68[0] = 0x5d;
  FUN_00432199(L"de_LU");
  local_14 = 1;
  FUN_00432199(L"German (Luxembourg)");
  local_40 = 7;
  local_3c = 4;
  FUN_00848ab0(local_68);
  local_68[0] = 0x5e;
  FUN_00432199(L"de_CH");
  local_14 = 1;
  FUN_00432199(L"German (Swiss)");
  local_40 = 7;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0x5f;
  FUN_00432199(L"el_GR");
  local_14 = 1;
  FUN_00432199(L"Greek");
  local_40 = 8;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x60;
  FUN_00432199(L"kl_GL");
  local_14 = 1;
  FUN_00432199(L"Greenlandic");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x61;
  FUN_00432199(&DAT_00d33848);
  local_14 = 1;
  FUN_00432199(L"Guarani");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x62;
  FUN_00432199(&DAT_00d33830);
  local_14 = 1;
  FUN_00432199(L"Gujarati");
  local_40 = 0x47;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 99;
  FUN_00432199(&DAT_00d33814);
  local_14 = 1;
  FUN_00432199(L"Hausa");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 100;
  FUN_00432199(L"he_IL");
  local_14 = 2;
  FUN_00432199(L"Hebrew");
  local_40 = 0xd;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x65;
  FUN_00432199(L"hi_IN");
  local_14 = 1;
  FUN_00432199(L"Hindi");
  local_40 = 0x39;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x66;
  FUN_00432199(L"hu_HU");
  local_14 = 1;
  FUN_00432199(L"Hungarian");
  local_40 = 0xe;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x67;
  FUN_00432199(L"is_IS");
  local_14 = 1;
  FUN_00432199(L"Icelandic");
  local_40 = 0xf;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x68;
  FUN_00432199(L"id_ID");
  local_14 = 1;
  FUN_00432199(L"Indonesian");
  local_40 = 0x21;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x69;
  FUN_00432199(&DAT_00d33768);
  local_14 = 1;
  FUN_00432199(L"Interlingua");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x6a;
  FUN_00432199(&DAT_00d33748);
  local_14 = 1;
  FUN_00432199(L"Interlingue");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x6b;
  FUN_00432199(&DAT_00d33728);
  local_14 = 1;
  FUN_00432199(L"Inuktitut");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x6c;
  FUN_00432199(&DAT_00d3370c);
  local_14 = 1;
  FUN_00432199(L"Inupiak");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x6d;
  FUN_00432199(L"ga_IE");
  local_14 = 1;
  FUN_00432199(L"Irish");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x6e;
  FUN_00432199(L"it_IT");
  local_14 = 1;
  FUN_00432199(L"Italian");
  local_40 = 0x10;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x6f;
  FUN_00432199(L"it_CH");
  local_14 = 1;
  FUN_00432199(L"Italian (Swiss)");
  local_40 = 0x10;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0x70;
  FUN_00432199(L"ja_JP");
  local_14 = 1;
  FUN_00432199(L"Japanese");
  local_40 = 0x11;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x71;
  FUN_00432199(&DAT_00d33674);
  local_14 = 1;
  FUN_00432199(L"Javanese");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x72;
  FUN_00432199(&DAT_00d33658);
  local_14 = 1;
  FUN_00432199(L"Kannada");
  local_40 = 0x4b;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x73;
  FUN_00432199(&DAT_00d33640);
  local_14 = 1;
  FUN_00432199(L"Kashmiri");
  local_40 = 0x60;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x74;
  FUN_00432199(L"ks_IN");
  local_14 = 1;
  FUN_00432199(L"Kashmiri (India)");
  local_40 = 0x60;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0x75;
  FUN_00432199(&DAT_00d335f4);
  local_14 = 1;
  FUN_00432199(L"Kazakh");
  local_40 = 0x3f;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x76;
  FUN_00432199(L"kw_GB");
  local_14 = 1;
  FUN_00432199(L"Kernewek");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x77;
  FUN_00432199(&DAT_00d335bc);
  local_14 = 1;
  FUN_00432199(L"Kinyarwanda");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x78;
  FUN_00432199(&DAT_00d3359c);
  local_14 = 1;
  FUN_00432199(L"Kirghiz");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x79;
  FUN_00432199(&DAT_00d33584);
  local_14 = 1;
  FUN_00432199(L"Kirundi");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x7a;
  FUN_00432199(&DAT_00fae9c8);
  local_14 = 1;
  FUN_00432199(L"Konkani");
  local_40 = 0x57;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x7b;
  FUN_00432199(L"ko_KR");
  local_14 = 1;
  FUN_00432199(L"Korean");
  local_40 = 0x12;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x7c;
  FUN_00432199(L"ku_TR");
  local_14 = 1;
  FUN_00432199(L"Kurdish");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x7d;
  FUN_00432199(&DAT_00d33524);
  local_14 = 1;
  FUN_00432199(L"Laothian");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x7e;
  FUN_00432199(&DAT_00d33508);
  local_14 = 1;
  FUN_00432199(L"Latin");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x7f;
  FUN_00432199(L"lv_LV");
  local_14 = 1;
  FUN_00432199(L"Latvian");
  local_40 = 0x26;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x80;
  FUN_00432199(&DAT_00d334d8);
  local_14 = 1;
  FUN_00432199(L"Lingala");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x81;
  FUN_00432199(L"lt_LT");
  local_14 = 1;
  FUN_00432199(L"Lithuanian");
  local_40 = 0x27;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x82;
  FUN_00432199(L"mk_MK");
  local_14 = 1;
  FUN_00432199(L"Macedonian");
  local_40 = 0x2f;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x83;
  FUN_00432199(&DAT_00d33478);
  local_14 = 1;
  FUN_00432199(L"Malagasy");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x84;
  FUN_00432199(L"ms_MY");
  local_14 = 1;
  FUN_00432199(L"Malay");
  local_40 = 0x3e;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x85;
  FUN_00432199(&DAT_00d33444);
  local_14 = 1;
  FUN_00432199(L"Malayalam");
  local_40 = 0x4c;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x86;
  FUN_00432199(L"ms_BN");
  local_14 = 1;
  FUN_00432199(L"Malay (Brunei Darussalam)");
  local_40 = 0x3e;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0x87;
  FUN_00432199(L"ms_MY");
  local_14 = 1;
  FUN_00432199(L"Malay (Malaysia)");
  local_40 = 0x3e;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x88;
  FUN_00432199(L"mt_MT");
  local_14 = 1;
  FUN_00432199(L"Maltese");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x89;
  FUN_00432199(&DAT_00fae9c8);
  local_14 = 1;
  FUN_00432199(L"Manipuri");
  local_40 = 0x58;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x8a;
  FUN_00432199(&DAT_00d33394);
  local_14 = 1;
  FUN_00432199(L"Maori");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x8b;
  FUN_00432199(L"mr_IN");
  local_14 = 1;
  FUN_00432199(L"Marathi");
  local_40 = 0x4e;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x8c;
  FUN_00432199(&DAT_00d27680);
  local_14 = 1;
  FUN_00432199(L"Moldavian");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x8d;
  FUN_00432199(&DAT_00d33350);
  local_14 = 1;
  FUN_00432199(L"Mongolian");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x8e;
  FUN_00432199(&DAT_00d33334);
  local_14 = 1;
  FUN_00432199(L"Nauru");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x8f;
  FUN_00432199(L"ne_NP");
  local_14 = 1;
  FUN_00432199(L"Nepali");
  local_40 = 0x61;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x90;
  FUN_00432199(L"ne_IN");
  local_14 = 1;
  FUN_00432199(L"Nepali (India)");
  local_40 = 0x61;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0x91;
  FUN_00432199(L"nb_NO");
  local_14 = 1;
  FUN_00432199(L"Norwegian (Bokmal)");
  local_40 = 0x14;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x92;
  FUN_00432199(L"nn_NO");
  local_14 = 1;
  FUN_00432199(L"Norwegian (Nynorsk)");
  local_40 = 0x14;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0x93;
  FUN_00432199(&DAT_00d33270);
  local_14 = 1;
  FUN_00432199(L"Occitan");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x94;
  FUN_00432199(&DAT_00d33258);
  local_14 = 1;
  FUN_00432199(L"Oriya");
  local_40 = 0x48;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x95;
  FUN_00432199(&DAT_00d33244);
  local_14 = 1;
  FUN_00432199(L"(Afan) Oromo");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x96;
  FUN_00432199(&DAT_00d33220);
  local_14 = 1;
  FUN_00432199(L"Pashto, Pushto");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x97;
  FUN_00432199(L"pl_PL");
  local_14 = 1;
  FUN_00432199(L"Polish");
  local_40 = 0x15;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x98;
  FUN_00432199(L"pt_PT");
  local_14 = 1;
  FUN_00432199(L"Portuguese");
  local_40 = 0x16;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0x99;
  FUN_00432199(L"pt_BR");
  local_14 = 1;
  FUN_00432199(L"Portuguese (Brazilian)");
  local_40 = 0x16;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x9a;
  FUN_00432199(&DAT_00d3317c);
  local_14 = 1;
  FUN_00432199(L"Punjabi");
  local_40 = 0x46;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x9b;
  FUN_00432199(&DAT_00d33164);
  local_14 = 1;
  FUN_00432199(L"Quechua");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x9c;
  FUN_00432199(&DAT_00d3314c);
  local_14 = 1;
  FUN_00432199(L"Rhaeto-Romance");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0x9d;
  FUN_00432199(L"ro_RO");
  local_14 = 1;
  FUN_00432199(L"Romanian");
  local_40 = 0x18;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x9e;
  FUN_00432199(L"ru_RU");
  local_14 = 1;
  FUN_00432199(L"Russian");
  local_40 = 0x19;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0x9f;
  FUN_00432199(L"ru_UA");
  local_14 = 1;
  FUN_00432199(L"Russian (Ukraine)");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xa0;
  FUN_00432199(L"se_NO");
  local_14 = 1;
  FUN_00432199(L"Northern Sami");
  local_40 = 0x3b;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xa1;
  FUN_00432199(&DAT_00d33090);
  local_14 = 1;
  FUN_00432199(L"Samoan");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xa2;
  FUN_00432199(&DAT_00d33078);
  local_14 = 1;
  FUN_00432199(L"Sangho");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xa3;
  FUN_00432199(&DAT_00d33060);
  local_14 = 1;
  FUN_00432199(L"Sanskrit");
  local_40 = 0x4f;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xa4;
  FUN_00432199(&DAT_00d33044);
  local_14 = 1;
  FUN_00432199(L"Scots Gaelic");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xa5;
  FUN_00432199(L"sr_RS");
  local_14 = 1;
  FUN_00432199(L"Serbian");
  local_40 = 0x1a;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xa6;
  FUN_00432199(L"sr_RS");
  local_14 = 1;
  FUN_00432199(L"Serbian (Cyrillic)");
  local_40 = 0x1a;
  local_3c = 3;
  FUN_00848ab0(local_68);
  local_68[0] = 0xa7;
  FUN_00432199(L"sr_RS@latin");
  local_14 = 1;
  FUN_00432199(L"Serbian (Latin)");
  local_40 = 0x1a;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0xa6;
  FUN_00432199(L"sr_YU");
  local_14 = 1;
  FUN_00432199(L"Serbian (Cyrillic)");
  local_40 = 0x1a;
  local_3c = 3;
  FUN_00848ab0(local_68);
  local_68[0] = 0xa7;
  FUN_00432199(L"sr_YU@latin");
  local_14 = 1;
  FUN_00432199(L"Serbian (Latin)");
  local_40 = 0x1a;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0xa8;
  FUN_00432199(&DAT_00d32f80);
  local_14 = 1;
  FUN_00432199(L"Serbo-Croatian");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xa9;
  FUN_00432199(&DAT_00d32f58);
  local_14 = 1;
  FUN_00432199(L"Sesotho");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xaa;
  FUN_00432199(&DAT_00d32f40);
  local_14 = 1;
  FUN_00432199(L"Setswana");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xab;
  FUN_00432199(&DAT_00d32f24);
  local_14 = 1;
  FUN_00432199(L"Shona");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xac;
  FUN_00432199(&DAT_00d32f10);
  local_14 = 1;
  FUN_00432199(L"Sindhi");
  local_40 = 0x59;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xad;
  FUN_00432199(&DAT_00d32ef8);
  local_14 = 1;
  FUN_00432199(L"Sinhalese");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xae;
  FUN_00432199(&DAT_00d32edc);
  local_14 = 1;
  FUN_00432199(L"Siswati");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xaf;
  FUN_00432199(L"sk_SK");
  local_14 = 1;
  FUN_00432199(L"Slovak");
  local_40 = 0x1b;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xb0;
  FUN_00432199(L"sl_SI");
  local_14 = 1;
  FUN_00432199(L"Slovenian");
  local_40 = 0x24;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xb1;
  FUN_00432199(&DAT_00d32e88);
  local_14 = 1;
  FUN_00432199(L"Somali");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xb2;
  FUN_00432199(L"es_ES");
  local_14 = 1;
  FUN_00432199(L"Spanish");
  local_40 = 10;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xb3;
  FUN_00432199(L"es_AR");
  local_14 = 1;
  FUN_00432199(L"Spanish (Argentina)");
  local_40 = 10;
  local_3c = 0xb;
  FUN_00848ab0(local_68);
  local_68[0] = 0xb4;
  FUN_00432199(L"es_BO");
  local_14 = 1;
  FUN_00432199(L"Spanish (Bolivia)");
  local_40 = 10;
  local_3c = 0x10;
  FUN_00848ab0(local_68);
  local_68[0] = 0xb5;
  FUN_00432199(L"es_CL");
  local_14 = 1;
  FUN_00432199(L"Spanish (Chile)");
  local_40 = 10;
  local_3c = 0xd;
  FUN_00848ab0(local_68);
  local_68[0] = 0xb6;
  FUN_00432199(L"es_CO");
  local_14 = 1;
  FUN_00432199(L"Spanish (Colombia)");
  local_40 = 10;
  local_3c = 9;
  FUN_00848ab0(local_68);
  local_68[0] = 0xb7;
  FUN_00432199(L"es_CR");
  local_14 = 1;
  FUN_00432199(L"Spanish (Costa Rica)");
  local_40 = 10;
  local_3c = 5;
  FUN_00848ab0(local_68);
  local_68[0] = 0xb8;
  FUN_00432199(L"es_DO");
  local_14 = 1;
  FUN_00432199(L"Spanish (Dominican republic)");
  local_40 = 10;
  local_3c = 7;
  FUN_00848ab0(local_68);
  local_68[0] = 0xb9;
  FUN_00432199(L"es_EC");
  local_14 = 1;
  FUN_00432199(L"Spanish (Ecuador)");
  local_40 = 10;
  local_3c = 0xc;
  FUN_00848ab0(local_68);
  local_68[0] = 0xba;
  FUN_00432199(L"es_SV");
  local_14 = 1;
  FUN_00432199(L"Spanish (El Salvador)");
  local_40 = 10;
  local_3c = 0x11;
  FUN_00848ab0(local_68);
  local_68[0] = 0xbb;
  FUN_00432199(L"es_GT");
  local_14 = 1;
  FUN_00432199(L"Spanish (Guatemala)");
  local_40 = 10;
  local_3c = 4;
  FUN_00848ab0(local_68);
  local_68[0] = 0xbc;
  FUN_00432199(L"es_HN");
  local_14 = 1;
  FUN_00432199(L"Spanish (Honduras)");
  local_40 = 10;
  local_3c = 0x12;
  FUN_00848ab0(local_68);
  local_68[0] = 0xbd;
  FUN_00432199(L"es_MX");
  local_14 = 1;
  FUN_00432199(L"Spanish (Mexican)");
  local_40 = 10;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0xbe;
  FUN_00432199(L"es_ES");
  local_14 = 1;
  FUN_00432199(L"Spanish (Modern)");
  local_40 = 10;
  local_3c = 3;
  FUN_00848ab0(local_68);
  local_68[0] = 0xbf;
  FUN_00432199(L"es_NI");
  local_14 = 1;
  FUN_00432199(L"Spanish (Nicaragua)");
  local_40 = 10;
  local_3c = 0x13;
  FUN_00848ab0(local_68);
  local_68[0] = 0xc0;
  FUN_00432199(L"es_PA");
  local_14 = 1;
  FUN_00432199(L"Spanish (Panama)");
  local_40 = 10;
  local_3c = 6;
  FUN_00848ab0(local_68);
  local_68[0] = 0xc1;
  FUN_00432199(L"es_PY");
  local_14 = 1;
  FUN_00432199(L"Spanish (Paraguay)");
  local_40 = 10;
  local_3c = 0xf;
  FUN_00848ab0(local_68);
  local_68[0] = 0xc2;
  FUN_00432199(L"es_PE");
  local_14 = 1;
  FUN_00432199(L"Spanish (Peru)");
  local_40 = 10;
  local_3c = 10;
  FUN_00848ab0(local_68);
  local_68[0] = 0xc3;
  FUN_00432199(L"es_PR");
  local_14 = 1;
  FUN_00432199(L"Spanish (Puerto Rico)");
  local_40 = 10;
  local_3c = 0x14;
  FUN_00848ab0(local_68);
  local_68[0] = 0xc4;
  FUN_00432199(L"es_UY");
  local_14 = 1;
  FUN_00432199(L"Spanish (Uruguay)");
  local_40 = 10;
  local_3c = 0xe;
  FUN_00848ab0(local_68);
  local_68[0] = 0xc5;
  FUN_00432199(L"es_US");
  local_14 = 1;
  FUN_00432199(L"Spanish (U.S.)");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xc6;
  FUN_00432199(L"es_VE");
  local_14 = 1;
  FUN_00432199(L"Spanish (Venezuela)");
  local_40 = 10;
  local_3c = 8;
  FUN_00848ab0(local_68);
  local_68[0] = 199;
  FUN_00432199(&DAT_00d32a60);
  local_14 = 1;
  FUN_00432199(L"Sundanese");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 200;
  FUN_00432199(L"sw_KE");
  local_14 = 1;
  FUN_00432199(L"Swahili");
  local_40 = 0x41;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xc9;
  FUN_00432199(L"sv_SE");
  local_14 = 1;
  FUN_00432199(L"Swedish");
  local_40 = 0x1d;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xca;
  FUN_00432199(L"sv_FI");
  local_14 = 1;
  FUN_00432199(L"Swedish (Finland)");
  local_40 = 0x1d;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0xcb;
  FUN_00432199(L"tl_PH");
  local_14 = 1;
  FUN_00432199(L"Tagalog");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xcc;
  FUN_00432199(&DAT_00d329c0);
  local_14 = 1;
  FUN_00432199(L"Tajik");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xcd;
  FUN_00432199(&DAT_00d329ac);
  local_14 = 1;
  FUN_00432199(L"Tamil");
  local_40 = 0x49;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xce;
  FUN_00432199(&DAT_00d32998);
  local_14 = 1;
  FUN_00432199(L"Tatar");
  local_40 = 0x44;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xcf;
  FUN_00432199(&DAT_00d32984);
  local_14 = 1;
  FUN_00432199(L"Telugu");
  local_40 = 0x4a;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xd0;
  FUN_00432199(L"th_TH");
  local_14 = 1;
  FUN_00432199(L"Thai");
  local_40 = 0x1e;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xd1;
  FUN_00432199(&DAT_00d32954);
  local_14 = 1;
  FUN_00432199(L"Tibetan");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xd2;
  FUN_00432199(&DAT_00d3293c);
  local_14 = 1;
  FUN_00432199(L"Tigrinya");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xd3;
  FUN_00432199(&DAT_00d32920);
  local_14 = 1;
  FUN_00432199(L"Tonga");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xd4;
  FUN_00432199(&DAT_00d3290c);
  local_14 = 1;
  FUN_00432199(L"Tsonga");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xd5;
  FUN_00432199(L"tr_TR");
  local_14 = 1;
  FUN_00432199(L"Turkish");
  local_40 = 0x1f;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xd6;
  FUN_00432199(&DAT_00d328d8);
  local_14 = 1;
  FUN_00432199(L"Turkmen");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xd7;
  FUN_00432199(&DAT_00d328c0);
  local_14 = 1;
  FUN_00432199(&DAT_00d328b8);
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xd8;
  FUN_00432199(&DAT_00d328b0);
  local_14 = 1;
  FUN_00432199(L"Uighur");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xd9;
  FUN_00432199(L"uk_UA");
  local_14 = 1;
  FUN_00432199(L"Ukrainian");
  local_40 = 0x22;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xda;
  FUN_00432199(&DAT_00d32878);
  local_14 = 1;
  FUN_00432199(L"Urdu");
  local_40 = 0x20;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xdb;
  FUN_00432199(L"ur_IN");
  local_14 = 1;
  FUN_00432199(L"Urdu (India)");
  local_40 = 0x20;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0xdc;
  FUN_00432199(L"ur_PK");
  local_14 = 1;
  FUN_00432199(L"Urdu (Pakistan)");
  local_40 = 0x20;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xdd;
  FUN_00432199(&DAT_00d32810);
  local_14 = 1;
  FUN_00432199(L"Uzbek");
  local_40 = 0x43;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xde;
  FUN_00432199(&DAT_00d32810);
  local_14 = 1;
  FUN_00432199(L"Uzbek (Cyrillic)");
  local_40 = 0x43;
  local_3c = 2;
  FUN_00848ab0(local_68);
  local_68[0] = 0xdf;
  FUN_00432199(&DAT_00d32810);
  local_14 = 1;
  FUN_00432199(L"Uzbek (Latin)");
  local_40 = 0x43;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xe0;
  FUN_00432199(L"ca_ES@valencia");
  local_14 = 1;
  FUN_00432199(L"Valencian (Southern Catalan)");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xe1;
  FUN_00432199(L"vi_VN");
  local_14 = 1;
  FUN_00432199(L"Vietnamese");
  local_40 = 0x2a;
  local_3c = 1;
  FUN_00848ab0(local_68);
  local_68[0] = 0xe2;
  FUN_00432199(&DAT_00d3273c);
  local_14 = 1;
  FUN_00432199(L"Volapuk");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xe3;
  FUN_00432199(&DAT_00d32724);
  local_14 = 1;
  FUN_00432199(L"Welsh");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xe4;
  FUN_00432199(&DAT_00d32710);
  local_14 = 1;
  FUN_00432199(L"Wolof");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xe5;
  FUN_00432199(&DAT_00d326fc);
  local_14 = 1;
  FUN_00432199(L"Xhosa");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xe6;
  FUN_00432199(&DAT_00d326e8);
  local_14 = 1;
  FUN_00432199(L"Yiddish");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xe7;
  FUN_00432199(&DAT_00d326d0);
  local_14 = 1;
  FUN_00432199(L"Yoruba");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xe8;
  FUN_00432199(&DAT_00d326b8);
  local_14 = 1;
  FUN_00432199(L"Zhuang");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  local_68[0] = 0xe9;
  FUN_00432199(&DAT_00d326a0);
  local_14 = 1;
  FUN_00432199(L"Zulu");
  local_40 = 0;
  local_3c = 0;
  FUN_00848ab0(local_68);
  FUN_00847a80();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int FUN_0089dc10(void)

{
  uint uVar1;
  uint in_EAX;
  int iVar2;
  
  if (in_EAX != 0) {
    iVar2 = 0;
    uVar1 = in_EAX & 1;
    while (uVar1 == 0) {
      in_EAX = (int)in_EAX >> 1;
      iVar2 = iVar2 + 1;
      uVar1 = in_EAX & 1;
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (in_EAX != 1)) {
      FUN_00840480("..\\..\\src\\common\\platinfo.cpp",0x79,"wxGetIndexFromEnumValue","value == 1",
                   L"more than one bit set in enum value");
    }
    return iVar2;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\platinfo.cpp",0x70,"wxGetIndexFromEnumValue","value",
                 L"invalid enum value");
  }
  return -1;
}



void __fastcall FUN_0089dc90(int param_1)

{
  _free(*(void **)(param_1 + 0x88));
  if (7 < *(uint *)(param_1 + 0x84)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x70));
  }
  *(undefined4 *)(param_1 + 0x84) = 7;
  *(undefined4 *)(param_1 + 0x80) = 0;
  *(undefined2 *)(param_1 + 0x70) = 0;
  _free(*(void **)(param_1 + 100));
  if (7 < *(uint *)(param_1 + 0x60)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x4c));
  }
  *(undefined4 *)(param_1 + 0x60) = 7;
  *(undefined4 *)(param_1 + 0x5c) = 0;
  *(undefined2 *)(param_1 + 0x4c) = 0;
  _free(*(void **)(param_1 + 0x40));
  if (7 < *(uint *)(param_1 + 0x3c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x28));
  }
  *(undefined4 *)(param_1 + 0x3c) = 7;
  *(undefined4 *)(param_1 + 0x38) = 0;
  *(undefined2 *)(param_1 + 0x28) = 0;
  _free(*(void **)(param_1 + 0x1c));
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined2 *)(param_1 + 4) = 0;
  return;
}



void __fastcall FUN_0089dd60(int param_1)

{
  FUN_0089dc90();
  _free(*(void **)(param_1 + 0x4c));
  if (7 < *(uint *)(param_1 + 0x48)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x34));
  }
  *(undefined4 *)(param_1 + 0x48) = 7;
  *(undefined4 *)(param_1 + 0x44) = 0;
  *(undefined2 *)(param_1 + 0x34) = 0;
  _free(*(void **)(param_1 + 0x28));
  if (7 < *(uint *)(param_1 + 0x24)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x10));
  }
  *(undefined4 *)(param_1 + 0x24) = 7;
  *(undefined4 *)(param_1 + 0x20) = 0;
  *(undefined2 *)(param_1 + 0x10) = 0;
  return;
}



void __thiscall
FUN_0089dde0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8,undefined param_9)

{
  param_1_00[8] = 0;
  param_1_00[9] = 7;
  *(undefined2 *)(param_1_00 + 4) = 0;
  param_1_00[10] = 0;
  param_1_00[0x12] = 7;
  param_1_00[0x11] = 0;
  *(undefined2 *)(param_1_00 + 0xd) = 0;
  param_1_00[0x13] = 0;
  param_1_00[0x1b] = 7;
  param_1_00[0x1a] = 0;
  *(undefined2 *)(param_1_00 + 0x16) = 0;
  param_1_00[0x1c] = 0;
  param_1_00[0x24] = 7;
  param_1_00[0x23] = 0;
  *(undefined2 *)(param_1_00 + 0x1f) = 0;
  param_1_00[0x25] = 0;
  param_1_00[0x2d] = 7;
  param_1_00[0x2c] = 0;
  *(undefined2 *)(param_1_00 + 0x28) = 0;
  param_1_00[0x2e] = 0;
  param_1_00[0x36] = 7;
  param_1_00[0x35] = 0;
  *(undefined2 *)(param_1_00 + 0x31) = 0;
  param_1_00[0x37] = 0;
  param_1_00[0x39] = param_2;
  param_1_00[0x3a] = param_3;
  param_1_00[0x3b] = param_1;
  *(undefined *)(param_1_00 + 0x3c) = param_9;
  param_1_00[2] = param_4;
  *param_1_00 = param_5;
  param_1_00[1] = param_6;
  param_1_00[0x3e] = param_8;
  param_1_00[0x3d] = param_7;
  return;
}



void __fastcall FUN_0089dec0(int param_1)

{
  undefined uVar1;
  char cVar2;
  int *piVar3;
  undefined4 uVar4;
  int iVar5;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38 [3];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be2380;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032bcb68 != 0) {
    piVar3 = (int *)FUN_00841320(DAT_0323f878 ^ (uint)&stack0xffffffa0);
    if (piVar3 != (int *)0x0) {
      uVar4 = (**(code **)(*piVar3 + 0x3c))(param_1 + 0xe4,param_1 + 0xe8);
      *(undefined4 *)(param_1 + 0xec) = uVar4;
      uVar1 = (**(code **)(*piVar3 + 0x40))();
      *(undefined *)(param_1 + 0xf0) = uVar1;
      iVar5 = (**(code **)(*piVar3 + 0x44))(local_38);
      local_4 = 0;
      if (param_1 + 0x30 != iVar5) {
        FID_conflict_assign(iVar5,0,0xffffffff);
      }
      local_4 = 0xffffffff;
      _free(pvStack_14);
      if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_2c);
      }
      goto LAB_0089dfb9;
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\platinfo.cpp",0xb1,"wxPlatformInfo::InitForCurrentPlatform",
                 "Assert failure",L"failed to initialize wxPlatformInfo");
  }
  *(undefined4 *)(param_1 + 0xec) = 0;
  *(undefined *)(param_1 + 0xf0) = 0;
  *(undefined4 *)(param_1 + 0xe8) = 0;
  *(undefined4 *)(param_1 + 0xe4) = 0;
LAB_0089dfb9:
  uVar4 = FUN_00894a40(param_1,param_1 + 4);
  *(undefined4 *)(param_1 + 8) = uVar4;
  iVar5 = FUN_00895310(local_54);
  local_4 = 1;
  if (param_1 + 0xc != iVar5) {
    FID_conflict_assign(iVar5,0,0xffffffff);
  }
  local_4 = 0xffffffff;
  _free(local_38[0]);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  cVar2 = FUN_009cb740();
  *(uint *)(param_1 + 0xf8) = (uint)(cVar2 != '\0');
  cVar2 = FUN_008950e0();
  *(uint *)(param_1 + 0xf4) = (uint)(cVar2 != '\0');
  ExceptionList = local_c;
  return;
}



undefined * FUN_0089e060(void)

{
  if (DAT_032bdc58 == '\0') {
    FUN_0089dec0();
    DAT_032bdc58 = '\x01';
  }
  return &DAT_032bdc60;
}



void FUN_0089e080(int param_1,undefined4 param_2,char param_3)

{
  wchar_t *pwVar1;
  uint uVar2;
  wchar_t *pwVar3;
  undefined4 local_38;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdecb8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  ExceptionList = &local_c;
  local_38 = 0;
  uVar2 = FUN_0089dc10(DAT_0323f878 ^ (uint)&stack0xffffffc0);
  if (uVar2 < 0xc) {
    FUN_004325b6((&PTR_u_wxBase_00d3495c)[uVar2]);
    local_4 = 0;
    if (param_3 != '\0') {
      pwVar1 = L"/wxUniversal";
      do {
        pwVar3 = pwVar1;
        pwVar1 = pwVar3 + 1;
      } while (*pwVar3 != L'\0');
      FUN_00473ccc(L"/wxUniversal",(int)(pwVar3 + -0x69a5a8) >> 1);
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  else {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\platinfo.cpp",0x103,"wxPlatformInfo::GetPortIdName",
                   "idx < (sizeof(wxPortIdNames)/sizeof(wxPortIdNames[0]))",L"invalid port id");
    }
    FUN_004325b6(PTR_DAT_03236318);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



bool __fastcall FUN_0089e1b0(int *param_1)

{
  return *param_1 != 0;
}



void FUN_0089e1c0(int param_1,DWORD *param_2,DWORD *param_3,DWORD *param_4)

{
  int *piVar1;
  HANDLE hFindFile;
  LPCWSTR lpFileName;
  undefined local_258 [4];
  _WIN32_FIND_DATAW local_254;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_258;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((*(int *)(param_1 + 0x14) == 0 || (piVar1 = (int *)FUN_0085ca50(local_258), *piVar1 == 0x5c)))
     ) {
    FUN_00840480("..\\..\\src\\msw\\dir.cpp",0x18b,"wxGetDirectoryTimes",
                 "!dirname.empty() && dirname.Last() != wxT(\'\\\\\')",
                 L"incorrect directory name format in wxGetDirectoryTimes");
  }
  if (*(uint *)(param_1 + 0x18) < 8) {
    lpFileName = (LPCWSTR)(param_1 + 4);
  }
  else {
    lpFileName = *(LPCWSTR *)(param_1 + 4);
  }
  hFindFile = FindFirstFileW(lpFileName,&local_254);
  if (hFindFile != (HANDLE)0xffffffff) {
    *param_2 = local_254.ftLastAccessTime.dwLowDateTime;
    param_2[1] = local_254.ftLastAccessTime.dwHighDateTime;
    *param_3 = local_254.ftCreationTime.dwLowDateTime;
    param_3[1] = local_254.ftCreationTime.dwHighDateTime;
    *param_4 = local_254.ftLastWriteTime.dwLowDateTime;
    param_4[1] = local_254.ftLastWriteTime.dwHighDateTime;
    FindClose(hFindFile);
  }
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_0089e2b0(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[8] = 0;
  param_1_00[0xf] = 0;
  param_1_00[0x10] = 7;
  *(undefined2 *)(param_1_00 + 0xb) = 0;
  param_1_00[0x11] = 0;
  *param_1_00 = 0xffffffff;
  return param_1_00;
}



void FUN_0089e300(HANDLE param_1)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = FindClose(param_1);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0089e400(int *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcbf36;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 1;
  if (*param_1 != -1) {
    FUN_0089e300(*param_1,DAT_0323f878 ^ (uint)&stack0xffffffec);
    *param_1 = -1;
  }
  _free((void *)param_1[0x11]);
  if (7 < (uint)param_1[0x10]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xb]);
  }
  param_1[0x10] = 7;
  param_1[0xf] = 0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  _free((void *)param_1[8]);
  if (7 < (uint)param_1[7]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[2]);
  }
  param_1[7] = 7;
  param_1[6] = 0;
  *(undefined2 *)(param_1 + 2) = 0;
  ExceptionList = local_c;
  return;
}



// WARNING: Type propagation algorithm not settling

void __thiscall FUN_0089e4c0(HANDLE *param_1_00,undefined *param_1)

{
  short sVar1;
  bool bVar2;
  WCHAR WVar3;
  char cVar4;
  short *psVar5;
  undefined4 *******lpFileName;
  HANDLE pvVar6;
  char *pcVar7;
  BOOL BVar8;
  WCHAR *pWVar9;
  DWORD DVar10;
  uint uVar11;
  WCHAR WVar12;
  undefined4 uStack_3e0;
  undefined4 uStack_3dc;
  char *pcStack_3d8;
  undefined *puStack_3d4;
  char *pcStack_3d0;
  HANDLE **pppvStack_3cc;
  HANDLE *ppvStack_3c8;
  HANDLE **local_3a8;
  undefined4 uStack_3a4;
  char *pcStack_39c;
  undefined4 uStack_398;
  char *pcStack_394;
  undefined *puStack_390;
  __time64_t _Stack_38c;
  DWORD DStack_384;
  int iStack_380;
  undefined4 uStack_378;
  undefined4 uStack_368;
  uint uStack_364;
  void *pvStack_360;
  undefined auStack_354 [56];
  undefined auStack_31c [152];
  undefined local_284 [4];
  undefined4 *******local_280 [4];
  undefined4 local_270;
  uint local_26c;
  void *local_268;
  _WIN32_FIND_DATAW local_260;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd943;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3a8;
  ExceptionList = &local_c;
  bVar2 = false;
  local_3a8 = (HANDLE **)param_1;
  uVar11 = local_260.dwFileAttributes;
  WVar12 = local_260.cFileName[1];
  if (*param_1_00 == (HANDLE)0xffffffff) {
    ppvStack_3c8 = param_1_00 + 1;
    local_280[0] = (undefined4 *******)((uint)local_280[0] & 0xffff0000);
    local_26c = 7;
    local_270 = 0;
    pppvStack_3cc = (HANDLE **)0x89e544;
    FID_conflict_assign();
    local_268 = (void *)0x0;
    local_4 = 0;
    cVar4 = FUN_0085cac0();
    if (cVar4 == '\0') {
      ppvStack_3c8 = (HANDLE *)0x89e576;
      FID_conflict_append();
    }
    if (param_1_00[0xf] == (HANDLE)0x0) {
      psVar5 = &DAT_00d34cc0;
      do {
        sVar1 = *psVar5;
        psVar5 = psVar5 + 1;
      } while (sVar1 != 0);
      ppvStack_3c8 = (HANDLE *)0x89e5a4;
      FUN_00473ccc();
    }
    else {
      ppvStack_3c8 = param_1_00 + 10;
      pppvStack_3cc = (HANDLE **)0x89e5b9;
      FID_conflict_append();
    }
    lpFileName = local_280[0];
    if (local_26c < 8) {
      lpFileName = local_280;
    }
    ppvStack_3c8 = (HANDLE *)0x89e5e4;
    pvVar6 = FindFirstFileW((LPCWSTR)lpFileName,&local_260);
    *param_1_00 = pvVar6;
    bVar2 = true;
    local_4 = 0xffffffff;
    _free(local_268);
    if (7 < local_26c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uVar11 = local_260.dwFileAttributes;
    WVar12 = local_260.cFileName[1];
    if (*param_1_00 == (HANDLE)0xffffffff) {
      pcVar7 = (char *)GetLastError();
      if ((pcVar7 != (char *)0x2) && (pcVar7 != (char *)0x12)) {
        local_3a8 = (HANDLE **)&uStack_3e0;
        FUN_0043c211(&DAT_00d25fa0);
        cVar4 = FUN_00846b30(1);
        if (cVar4 != '\0') {
          FUN_004325b6();
          local_4 = 1;
          FUN_0043c211();
          local_4._0_1_ = 2;
          ppvStack_3c8 = (HANDLE *)0x89e6b0;
          FUN_00820bf9();
          FUN_008433c0();
          local_4._0_1_ = 3;
          FUN_0043c211();
          local_3a8 = &ppvStack_3c8;
          pppvStack_3cc = &ppvStack_3c8;
          pcStack_3d0 = (char *)0x89e6ea;
          FUN_00432231();
          pppvStack_3cc = (HANDLE **)&DAT_00d25fa0;
          pcStack_3d0 = "wxDirData::Read";
          puStack_3d4 = (undefined *)0xd3;
          pcStack_3d8 = "..\\..\\src\\msw\\dir.cpp";
          uStack_3dc = 1;
          local_4._0_1_ = 5;
          uStack_3e0 = 0x89e714;
          FUN_008423d0();
          local_4._0_1_ = 6;
          pppvStack_3cc = (HANDLE **)local_284;
          puStack_3d4 = (undefined *)0x89e72c;
          pcStack_3d0 = pcVar7;
          puStack_3d4 = (undefined *)GetLastError();
          pcStack_3d8 = auStack_31c;
          uStack_3dc = 0x89e73c;
          FUN_0084d140();
          local_4._0_1_ = 7;
          puStack_3d4 = (undefined *)0x89e74b;
          FUN_00875be0();
          local_4._0_1_ = 4;
          FUN_00842440();
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,2);
          FUN_0081b5bc();
          FUN_0040159c();
          FUN_0040159c();
        }
      }
      goto LAB_0089e85a;
    }
  }
LAB_0089e7b0:
  do {
    if (bVar2) {
      bVar2 = false;
    }
    else {
      ppvStack_3c8 = (HANDLE *)0x89e7c5;
      BVar8 = FindNextFileW(*param_1_00,&local_260);
      uVar11 = local_260.dwFileAttributes;
      WVar12 = local_260.cFileName[1];
      if (BVar8 == 0) {
        DVar10 = GetLastError();
        if (DVar10 != 0x12) {
          local_3a8 = (HANDLE **)&uStack_3e0;
          FUN_0043c211(&DAT_00d25fa0);
          cVar4 = FUN_00846b30(6);
          if (cVar4 != '\0') {
            FUN_0081c0f1();
            local_4 = 8;
            uStack_3a4 = 6;
            pcStack_39c = "..\\..\\src\\msw\\dir.cpp";
            pcStack_394 = "wxDirData::Read";
            uStack_398 = 0xee;
            puStack_390 = &DAT_00d25fa0;
            _Stack_38c = __time64((__time64_t *)0x0);
            DStack_384 = GetCurrentThreadId();
            iStack_380 = 0;
            uStack_364 = 7;
            uStack_368 = 0;
            uStack_378._0_2_ = 0;
            pvStack_360 = (void *)0x0;
            local_4._0_1_ = 9;
            GetLastError();
            ppvStack_3c8 = (HANDLE *)0x89e942;
            FUN_00843700();
            GetLastError();
            ppvStack_3c8 = (HANDLE *)0xd34c70;
            pppvStack_3cc = (HANDLE **)0xee;
            pcStack_3d0 = "..\\..\\src\\msw\\dir.cpp";
            puStack_3d4 = auStack_354;
            pcStack_3d8 = (undefined *)0x89e969;
            FUN_00847d90();
            local_4 = CONCAT31(local_4._1_3_,8);
            _free(pvStack_360);
            if (7 < uStack_364) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1();
            }
            uStack_378 = (uint)uStack_378._2_2_ << 0x10;
            uStack_364 = 7;
            uStack_368 = 0;
            if (iStack_380 != 0) {
              FUN_00841af0();
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1();
            }
            local_4 = 0xffffffff;
            FUN_0081b5bc();
          }
        }
        goto LAB_0089e85a;
      }
    }
    if (local_260.cFileName[0] == L'.') {
      WVar3 = WVar12;
      if (WVar12 == L'.') {
        WVar3 = local_260.cFileName[2];
      }
      if ((WVar3 == L'\0') && ((*(byte *)(param_1_00 + 0x13) & 8) == 0)) goto LAB_0089e7b0;
    }
    pvVar6 = param_1_00[0x13];
    if ((((((uint)pvVar6 & 1) != 0) || ((uVar11 >> 4 & 1) != 0)) &&
        ((((uint)pvVar6 & 2) != 0 || ((uVar11 >> 4 & 1) == 0)))) &&
       ((((uint)pvVar6 & 4) != 0 || ((uVar11 & 6) == 0)))) break;
  } while( true );
  pWVar9 = local_260.cFileName;
  do {
    WVar12 = *pWVar9;
    pWVar9 = pWVar9 + 1;
  } while (WVar12 != L'\0');
  ppvStack_3c8 = (HANDLE *)0x89e858;
  FID_conflict_assign();
LAB_0089e85a:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_0089e9e0(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (iVar1 != 0) {
    FUN_0089e400();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



uint __thiscall FUN_0089ea00(int *param_1_00,int param_1)

{
  uint in_EAX;
  uint uVar1;
  
  if (*param_1_00 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      in_EAX = FUN_00840480("..\\..\\src\\msw\\dir.cpp",0x173,"wxDir::GetNext","IsOpened()",
                            L"must wxDir::Open() first");
    }
  }
  else {
    if (param_1 != 0) {
      uVar1 = FUN_0089e4c0();
      return uVar1;
    }
    in_EAX = 0;
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      uVar1 = FUN_00840480("..\\..\\src\\msw\\dir.cpp",0x175,"wxDir::GetNext","filename",
                           L"bad pointer in wxDir::GetNext()");
      return uVar1 & 0xffffff00;
    }
  }
  return in_EAX & 0xffffff00;
}



undefined4 __thiscall FUN_0089ea80(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  void *pvVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd98b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar3 = *param_1_00;
  if (iVar3 != 0) {
    FUN_0089e400();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar3);
  }
  cVar1 = thunk_FUN_00857710(param_1,DAT_0323f878 ^ (uint)&stack0xffffffec);
  if (cVar1 != '\0') {
    pvVar2 = operator_new(0x50);
    local_4 = 0;
    if (pvVar2 != (void *)0x0) {
      iVar3 = FUN_0089e2b0(param_1);
      *param_1_00 = iVar3;
      ExceptionList = local_c;
      return 1;
    }
    *param_1_00 = 0;
    ExceptionList = local_c;
    return 1;
  }
  *param_1_00 = 0;
  ExceptionList = local_c;
  return 0;
}



uint __thiscall FUN_0089eb40(int **param_1_00,undefined4 param_1,int *param_2,int param_3)

{
  int *piVar1;
  uint in_EAX;
  uint uVar2;
  
  piVar1 = *param_1_00;
  if (piVar1 != (int *)0x0) {
    if (*piVar1 != -1) {
      FUN_0089e300(*piVar1);
      *piVar1 = -1;
    }
    if (*param_1_00 + 10 != param_2) {
      FID_conflict_assign(param_2,0,0xffffffff);
    }
    (*param_1_00)[0x13] = param_3;
    uVar2 = FUN_0089ea00(param_1);
    return uVar2;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    in_EAX = FUN_00840480("..\\..\\src\\msw\\dir.cpp",0x167,"wxDir::GetFirst","IsOpened()",
                          L"must wxDir::Open() first");
  }
  return in_EAX & 0xffffff00;
}



undefined4 * __thiscall FUN_0089ebd0(undefined4 *param_1_00,undefined4 param_1)

{
  *param_1_00 = 0;
  FUN_0089ea80(param_1);
  return param_1_00;
}



undefined * FUN_0089ebf0(void)

{
  return &DAT_032373f0;
}



void FUN_0089ec00(void)

{
  _locale_t *pplVar1;
  _locale_t plVar2;
  
  if (DAT_032bdd5c == (_locale_t *)0x0) {
    pplVar1 = (_locale_t *)operator_new(4);
    if (pplVar1 != (_locale_t *)0x0) {
      plVar2 = __create_locale(0,"C");
      *pplVar1 = plVar2;
      DAT_032bdd5c = pplVar1;
      return;
    }
    DAT_032bdd5c = (_locale_t *)0x0;
  }
  return;
}



undefined4 * FUN_0089ec40(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxXLocaleModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void FUN_0089eca0(void)

{
  _locale_t *pplVar1;
  
  pplVar1 = DAT_032bdd5c;
  if (DAT_032bdd5c != (_locale_t *)0x0) {
    if (*DAT_032bdd5c != (_locale_t)0x0) {
      __free_locale(*DAT_032bdd5c);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(pplVar1);
  }
  return;
}



int __thiscall FUN_0089ecd0(int *param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  
  if (*param_1_00 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\dynlib.cpp",0x84,"wxDynamicLibrary::DoGetSymbol",
                   "IsLoaded()",L"Can\'t load symbol from unloaded library");
    }
    iVar1 = 0;
  }
  else {
    iVar1 = FUN_0089f2d0(*param_1_00,param_1);
    if (param_2 != 0) {
      *(bool *)param_2 = iVar1 != 0;
      return iVar1;
    }
  }
  return iVar1;
}



void __thiscall FUN_0089ed30(int *param_1_00,char *param_1,uint param_2)

{
  char cVar1;
  int iVar2;
  int iStack_150;
  undefined4 uStack_14c;
  char *pcStack_148;
  undefined *puStack_144;
  char *pcStack_140;
  char **ppcStack_13c;
  char *pcStack_138;
  char *pcStack_134;
  char **local_118;
  undefined local_114 [36];
  undefined local_f0 [152];
  char local_58 [4];
  undefined4 local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd9ff;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_118;
  ExceptionList = &local_c;
  local_118 = (char **)param_1_00;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 != 0)) {
    pcStack_134 = "m_handle == 0";
    pcStack_138 = "wxDynamicLibrary::Load";
    ppcStack_13c = (char **)0x4b;
    pcStack_140 = "..\\..\\src\\common\\dynlib.cpp";
    puStack_144 = (undefined *)0x89ed9f;
    FUN_00840480();
  }
  pcStack_134 = (char *)0x0;
  pcStack_138 = param_1;
  local_40 = 7;
  local_44 = 0;
  local_54 = (uint)local_54._2_2_ << 0x10;
  ppcStack_13c = (char **)0x89edcf;
  FID_conflict_assign();
  local_3c = (void *)0x0;
  local_4 = 0;
  if ((param_2 & 8) == 0) {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    pcStack_134 = local_34;
    pcStack_138 = (char *)0x0;
    pcStack_140 = local_58;
    ppcStack_13c = (char **)0x0;
    local_4 = 1;
    puStack_144 = (undefined *)0x89ee2c;
    FUN_00858c30();
    if (local_20 == 0) {
      pcStack_134 = (char *)0x0;
      pcStack_138 = &DAT_0323740c;
      ppcStack_13c = (char **)0x89ee4c;
      FID_conflict_append();
    }
    local_4 = local_4 & 0xffffff00;
    pcStack_134 = (char *)0x89ee61;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      pcStack_134 = &UNK_0089ee7b;
      FUN_00a3f6a1();
    }
  }
  pcStack_134 = local_58;
  pcStack_138 = (char *)0x89ee8c;
  iVar2 = FUN_0089f3c0();
  *local_118 = (char *)iVar2;
  if ((iVar2 == 0) && ((param_2 & 0x20) == 0)) {
    local_118 = (char **)&iStack_150;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      pcStack_134 = (char *)0x89eedb;
      FUN_004325b6();
      local_4._0_1_ = 2;
      pcStack_134 = (char *)0x89eef1;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,3);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        pcStack_134 = (char *)0x89ef20;
        FUN_0084d360();
      }
      else {
        pcStack_134 = local_114;
        pcStack_138 = (char *)0x89ef14;
        FUN_0084f210();
      }
      pcStack_134 = (char *)0x89ef30;
      FUN_008433c0();
      local_4._0_1_ = 4;
      pcStack_134 = (char *)0x89ef46;
      FUN_0043c211();
      local_118 = &pcStack_138;
      ppcStack_13c = &pcStack_138;
      pcStack_140 = (char *)0x89ef5c;
      FUN_00432231();
      ppcStack_13c = (char **)&DAT_00d25fa0;
      pcStack_140 = "wxDynamicLibrary::Load";
      puStack_144 = (undefined *)0x69;
      pcStack_148 = "..\\..\\src\\common\\dynlib.cpp";
      uStack_14c = 1;
      local_4._0_1_ = 6;
      iStack_150 = 0x89ef83;
      FUN_008423d0();
      local_4._0_1_ = 7;
      ppcStack_13c = (char **)local_34;
      pcStack_140 = (char *)0x89ef9a;
      pcStack_140 = (char *)GetLastError();
      puStack_144 = local_f0;
      pcStack_148 = (char *)0x89efa7;
      FUN_0084d140();
      local_4._0_1_ = 8;
      pcStack_140 = (char *)0x89efb6;
      FUN_00848860();
      local_4._0_1_ = 5;
      FUN_00842440();
      FUN_0040159c();
      local_4 = CONCAT31(local_4._1_3_,3);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  pcStack_134 = (char *)0x89f00a;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    pcStack_134 = &UNK_0089f024;
    FUN_00a3f6a1();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int FUN_0089f060(void)

{
  char cVar1;
  int iVar2;
  int iVar3;
  uint local_c4;
  void *local_c0;
  uint local_a0;
  void *local_9c;
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcda6c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = FUN_0089ecd0();
  if (iVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = iVar2;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_0043c211();
      FUN_00432231();
      local_4._0_1_ = 4;
      FUN_008423d0();
      local_4._0_1_ = 5;
      GetLastError();
      FUN_0084d140();
      local_4._0_1_ = 6;
      FUN_00848860();
      local_4._0_1_ = 3;
      FUN_00842440();
      _free(local_9c);
      if (7 < local_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      _free(local_c0);
      if (7 < local_c4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(local_64);
      if (7 < local_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  ExceptionList = local_c;
  return iVar2;
}



void FUN_0089f290(HMODULE param_1)

{
  FreeLibrary(param_1);
  return;
}



undefined4 * __thiscall FUN_0089f2a0(undefined4 *param_1_00,undefined4 param_1)

{
  *param_1_00 = 0;
  FUN_0089ed30(param_1,0x68);
  return param_1_00;
}



void __fastcall FUN_0089f2c0(undefined4 *param_1)

{
  *param_1 = 0;
  return;
}



FARPROC FUN_0089f2d0(HMODULE param_1)

{
  undefined4 *puVar1;
  FARPROC pFVar2;
  void **ppvVar3;
  void **local_4;
  
  puVar1 = (undefined4 *)FUN_00851e30(&local_4);
  pFVar2 = GetProcAddress(param_1,*(LPCSTR *)*puVar1);
  ppvVar3 = (void **)FUN_00850350();
  if (local_4 != ppvVar3) {
    *(short *)(local_4 + 2) = *(short *)(local_4 + 2) + -1;
    if (*(short *)(local_4 + 2) == 0) {
      if (*(char *)((int)local_4 + 10) != '\0') {
        _free(*local_4);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_4);
    }
    FUN_00850350();
  }
  return pFVar2;
}



undefined4 FUN_0089f340(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_0081b5f9(local_30,param_2,0x57,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  local_4 = 0;
  uVar1 = FUN_0089f2d0(param_1,uVar1);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return uVar1;
}



void FUN_0089f3c0(int param_1,byte param_2)

{
  uint uVar1;
  HMODULE hModule;
  code *pcVar2;
  undefined4 ***pppuVar3;
  LPCWSTR lpLibFileName;
  LPWSTR lpFilename;
  DWORD nSize;
  undefined4 local_a8;
  LPWSTR *local_a4;
  undefined auStack_a0 [4];
  uint uStack_9c;
  undefined4 uStack_8c;
  uint uStack_88;
  void *pvStack_84;
  undefined auStack_7c [4];
  uint uStack_78;
  undefined4 uStack_68;
  uint uStack_64;
  void *pvStack_60;
  undefined auStack_58 [4];
  undefined4 ***local_54 [4];
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined local_4;
  undefined3 uStack_3;
  
  local_4 = 0xff;
  uStack_3 = 0xffffff;
  puStack_8 = &LAB_00bcdabe;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_a8;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff4c;
  ExceptionList = &local_c;
  if ((param_2 & 0x40) == 0) {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_40 = 7;
    local_44 = 0;
    local_54[0] = (undefined4 ***)((uint)local_54[0] & 0xffff0000);
    local_3c = (void *)0x0;
    local_4 = 1;
    uStack_3 = 0;
    FUN_00852280(local_34,0x105);
    lpFilename = *local_a4;
    nSize = 0x104;
    hModule = (HMODULE)FUN_008a65e0(lpFilename,0x104,uVar1);
    GetModuleFileNameW(hModule,lpFilename,nSize);
    FUN_00851bf0();
    FUN_00858c30(local_34,auStack_58,0,0,0);
    pcVar2 = DAT_03237408;
    if (DAT_03237408 == (code *)0xffffffff) {
      FUN_0043c211("kernel32.dll");
      local_4 = 2;
      local_a8 = 0;
      FUN_0089ed30(auStack_7c,0x68);
      local_4 = 4;
      _free(pvStack_60);
      if (7 < uStack_64) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_78);
      }
      uStack_78 = uStack_78 & 0xffff0000;
      uStack_64 = 7;
      uStack_68 = 0;
      FUN_0043c211("SetDllDirectory");
      local_4 = 5;
      pcVar2 = (code *)FUN_0089f340(local_a8,auStack_a0);
      DAT_03237408 = pcVar2;
      _free(pvStack_84);
      if (7 < uStack_88) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_9c);
      }
      uStack_88 = 7;
      uStack_8c = 0;
      uStack_9c = uStack_9c & 0xffff0000;
      local_4 = 1;
      local_a8 = 0;
    }
    if (pcVar2 != (code *)0x0) {
      pppuVar3 = local_54[0];
      if (local_40 < 8) {
        pppuVar3 = local_54;
      }
      (*pcVar2)(pppuVar3);
    }
    if (*(uint *)(param_1 + 0x18) < 8) {
      lpLibFileName = (LPCWSTR)(param_1 + 4);
    }
    else {
      lpLibFileName = *(LPCWSTR *)(param_1 + 4);
    }
    LoadLibraryW(lpLibFileName);
    if (DAT_03237408 != (code *)0x0) {
      (*DAT_03237408)(0);
    }
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54[0]);
    }
    local_40 = 7;
    local_44 = 0;
    local_54[0] = (undefined4 ***)((uint)local_54[0] & 0xffff0000);
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  else if (*(uint *)(param_1 + 0x18) < 8) {
    GetModuleHandleW((LPCWSTR)(param_1 + 4));
  }
  else {
    GetModuleHandleW(*(LPCWSTR *)(param_1 + 4));
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_0089f670(undefined4 param_1_00,byte param_1)

{
  FUN_008be0f0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int FUN_0089f690(void)

{
  int iVar1;
  
  if (DAT_03237430 == 4999) {
    DAT_03237430 = 6000;
  }
  iVar1 = DAT_03237430;
  DAT_03237430 = DAT_03237430 + 1;
  return iVar1;
}



bool __fastcall FUN_0089f6b0(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  return cVar1 == '\0';
}



int FUN_0089f6d0(int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bcdb11;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  FUN_00852280(param_1,0x100);
  local_4 = 1;
  cVar1 = FUN_00894940(*local_14,0x100,uVar2);
  local_4 = local_4 & 0xffffff00;
  FUN_00851bf0();
  if (cVar1 == '\0') {
    FUN_00432156();
  }
  ExceptionList = local_c;
  return param_1;
}



int FUN_0089f780(int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bcdb11;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  FUN_00852280(param_1,0x101);
  local_4 = 1;
  cVar1 = FUN_00895fa0(*local_14,0x101,uVar2);
  local_4 = local_4 & 0xffffff00;
  FUN_00851bf0();
  if (cVar1 == '\0') {
    FUN_00432156();
  }
  ExceptionList = local_c;
  return param_1;
}



int FUN_0089f830(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be98d9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  FUN_008967c0(param_1,uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0089f8a0(FILE **param_1_00,FILE **param_1,int param_2)

{
  char cVar1;
  FILE *pFVar2;
  int iVar3;
  DWORD DVar4;
  undefined4 uVar5;
  wchar_t *_Mode;
  undefined *puVar6;
  uint local_c4;
  void *local_c0;
  undefined local_b8 [4];
  uint local_b4;
  undefined4 local_a4;
  uint local_a0;
  void *local_9c;
  undefined local_94 [44];
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcdb6c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 != (FILE *)0x0)) {
    FUN_00840480();
  }
  if (*(uint *)(param_2 + 0x18) < 8) {
    _Mode = (wchar_t *)(param_2 + 4);
  }
  else {
    _Mode = *(wchar_t **)(param_2 + 4);
  }
  if (param_1[6] < (FILE *)0x8) {
    pFVar2 = (FILE *)(param_1 + 1);
  }
  else {
    pFVar2 = param_1[1];
  }
  pFVar2 = __wfopen((wchar_t *)pFVar2,_Mode);
  *param_1_00 = pFVar2;
  if (pFVar2 == (FILE *)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_0043c211();
      local_4._0_1_ = 3;
      FID_conflict_assign(param_1,0,0xffffffff);
      local_4._0_1_ = 4;
      FUN_008423d0(1,"..\\..\\src\\common\\ffile.cpp",0x40,"wxFFile::Open",&DAT_00d25fa0);
      local_4._0_1_ = 5;
      puVar6 = local_94;
      DVar4 = GetLastError();
      FUN_0084d140(local_b8,DVar4);
      local_4._0_1_ = 6;
      FUN_00848780(puVar6);
      local_4._0_1_ = 3;
      FUN_00842440();
      _free(local_9c);
      if (7 < local_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_a0 = 7;
      local_a4 = 0;
      local_b4 = local_b4 & 0xffff0000;
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      _free(local_c0);
      if (7 < local_c4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(local_64);
      if (7 < local_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    uVar5 = 0;
  }
  else {
    if (param_1_00 + 1 != param_1) {
      FID_conflict_assign();
    }
    uVar5 = 1;
  }
  ExceptionList = local_c;
  return uVar5;
}



undefined4 __fastcall FUN_0089fb50(FILE **param_1)

{
  char cVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcdbcc;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1 != (FILE *)0x0) {
    iVar2 = _fclose(*param_1);
    if (iVar2 != 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_4 = 0;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,1);
        iVar2 = FUN_0084a340();
        if (iVar2 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 2;
        FUN_0043c211();
        FUN_00432231();
        local_4._0_1_ = 4;
        FUN_008423d0();
        local_4._0_1_ = 5;
        GetLastError();
        FUN_0084d140();
        local_4._0_1_ = 6;
        FUN_00848860();
        local_4._0_1_ = 3;
        FUN_00842440();
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      ExceptionList = local_c;
      return 0;
    }
    *param_1 = (FILE *)0x0;
  }
  ExceptionList = local_c;
  return 1;
}



size_t __thiscall FUN_0089fd20(FILE **param_1_00,void *param_1,uint param_2)

{
  char cVar1;
  size_t sVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcdc2c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1 == (void *)0x0) || (*param_1_00 == (FILE *)0x0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    sVar2 = 0;
  }
  else {
    sVar2 = _fread(param_1,1,param_2,*param_1_00);
    if ((sVar2 < param_2) && (iVar3 = _ferror(*param_1_00), iVar3 != 0)) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_4 = 0;
        FUN_0043c211();
        local_4._0_1_ = 1;
        FUN_00820bf9();
        FUN_008433c0();
        local_4._0_1_ = 2;
        FUN_0043c211();
        FUN_00432231();
        local_4._0_1_ = 4;
        FUN_008423d0();
        local_4._0_1_ = 5;
        GetLastError();
        FUN_0084d140();
        local_4._0_1_ = 6;
        FUN_00848860();
        local_4._0_1_ = 3;
        FUN_00842440();
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
  }
  ExceptionList = local_c;
  return sVar2;
}



size_t __thiscall FUN_0089ff40(FILE **param_1_00,void *param_1,uint param_2)

{
  char cVar1;
  size_t sVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcdc2c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1 == (void *)0x0) || (*param_1_00 == (FILE *)0x0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    sVar2 = 0;
  }
  else {
    sVar2 = _fwrite(param_1,1,param_2,*param_1_00);
    if (sVar2 < param_2) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_4 = 0;
        FUN_0043c211();
        local_4._0_1_ = 1;
        FUN_00820bf9();
        FUN_008433c0();
        local_4._0_1_ = 2;
        FUN_0043c211();
        FUN_00432231();
        local_4._0_1_ = 4;
        FUN_008423d0();
        local_4._0_1_ = 5;
        GetLastError();
        FUN_0084d140();
        local_4._0_1_ = 6;
        FUN_00848860();
        local_4._0_1_ = 3;
        FUN_00842440();
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
  }
  ExceptionList = local_c;
  return sVar2;
}



bool FUN_008a0150(char **param_1,void **param_2)

{
  char cVar1;
  char *pcVar2;
  void **ppvVar3;
  uint uVar4;
  undefined4 uVar5;
  void **ppvVar6;
  char *pcVar7;
  int iVar8;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcdc60;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  uVar5 = FUN_00432413(&param_2,param_2);
  local_4 = 0;
  FUN_00432305(uVar5);
  local_4 = CONCAT31(local_4._1_3_,2);
  ppvVar6 = (void **)FUN_00850350(uVar4);
  ppvVar3 = param_2;
  if (param_2 != ppvVar6) {
    *(short *)(param_2 + 2) = *(short *)(param_2 + 2) + -1;
    if (*(short *)(param_2 + 2) == 0) {
      if (*(char *)((int)param_2 + 10) != '\0') {
        _free(*param_2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar3);
    }
    param_2 = (void **)FUN_00850350(uVar4);
  }
  pcVar2 = *param_1;
  if (pcVar2 == (char *)0x0) {
    local_4 = 0xffffffff;
    thunk_FUN_0043c1dd();
    ExceptionList = local_c;
    return false;
  }
  pcVar7 = pcVar2;
  do {
    cVar1 = *pcVar7;
    pcVar7 = pcVar7 + 1;
  } while (cVar1 != '\0');
  iVar8 = FUN_0089ff40(pcVar2,(int)pcVar7 - (int)(pcVar2 + 1));
  local_4 = 0xffffffff;
  thunk_FUN_0043c1dd();
  ExceptionList = local_c;
  return iVar8 == (int)pcVar7 - (int)(pcVar2 + 1);
}



undefined4 __fastcall FUN_008a0270(FILE **param_1)

{
  char cVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcdbcc;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1 != (FILE *)0x0) {
    iVar2 = _fflush(*param_1);
    if (iVar2 != 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_4 = 0;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,1);
        iVar2 = FUN_0084a340();
        if (iVar2 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 2;
        FUN_0043c211();
        FUN_00432231();
        local_4._0_1_ = 4;
        FUN_008423d0();
        local_4._0_1_ = 5;
        GetLastError();
        FUN_0084d140();
        local_4._0_1_ = 6;
        FUN_00848860();
        local_4._0_1_ = 3;
        FUN_00842440();
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      ExceptionList = local_c;
      return 0;
    }
  }
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall
FUN_008a0440(FILE **param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  char cVar1;
  uint _Origin;
  undefined4 uVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcdbcc;
  local_c = ExceptionList;
  _Origin = DAT_0323f878 ^ (uint)&stack0xffffff1c;
  if (*param_1_00 == (FILE *)0x0) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0;
    }
    ExceptionList = &local_c;
    FUN_00840480();
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = &local_c;
  if (param_3 != 0) {
    if (param_3 == 1) {
      uVar2 = 1;
      goto LAB_008a04bf;
    }
    if (param_3 == 2) {
      uVar2 = 2;
      goto LAB_008a04bf;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  uVar2 = 0;
LAB_008a04bf:
  iVar3 = __fseeki64(*param_1_00,CONCAT44(uVar2,param_2),_Origin);
  if (iVar3 != 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_0043c211();
      FUN_00432231();
      local_4._0_1_ = 4;
      FUN_008423d0();
      local_4._0_1_ = 5;
      GetLastError();
      FUN_0084d140();
      local_4._0_1_ = 6;
      FUN_00848860();
      local_4._0_1_ = 3;
      FUN_00842440();
      FUN_0040159c();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = local_c;
  return 1;
}



longlong __fastcall FUN_008a0690(FILE **param_1)

{
  char cVar1;
  int iVar2;
  longlong lVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcdcbc;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1 == (FILE *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    lVar3 = -1;
  }
  else {
    lVar3 = __ftelli64(*param_1);
    if (lVar3 == -1) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_4 = 0;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,1);
        iVar2 = FUN_0084a340();
        if (iVar2 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 2;
        FUN_0043c211();
        FUN_00432231();
        local_4._0_1_ = 4;
        FUN_008423d0();
        local_4._0_1_ = 5;
        GetLastError();
        FUN_0084d140();
        local_4._0_1_ = 6;
        FUN_00848860();
        local_4._0_1_ = 3;
        FUN_00842440();
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
  }
  ExceptionList = local_c;
  return lVar3;
}



undefined4 * __thiscall FUN_008a0880(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccd9b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  param_1_00[8] = 0;
  local_4 = 0;
  *param_1_00 = 0;
  FUN_0089f8a0(param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined8 __fastcall FUN_008a08f0(int *param_1)

{
  char cVar1;
  longlong lVar2;
  undefined8 uVar3;
  
  if (*param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\ffile.cpp",0xf5,"wxFFile::Length","IsOpened()",
                   L"wxFFile::Length(): file is closed!");
    }
    return 0xffffffffffffffff;
  }
  lVar2 = FUN_008a0690();
  if (lVar2 != -1) {
    cVar1 = FUN_008a0440(0,0,2);
    if (cVar1 != '\0') {
      uVar3 = FUN_008a0690();
      FUN_008a0440(lVar2,0);
      return uVar3;
    }
  }
  return 0xffffffffffffffff;
}



undefined4 __thiscall FUN_008a0990(FILE **param_1_00,int param_1)

{
  void **ppvVar1;
  char cVar2;
  size_t sVar3;
  int iVar4;
  longlong lVar5;
  undefined8 uVar6;
  void **local_e8;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcdd32;
  local_c = ExceptionList;
  if ((param_1 == 0) || (*param_1_00 == (FILE *)0x0)) {
    ppvVar1 = &local_c;
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0;
    }
  }
  else {
    ExceptionList = &local_c;
    lVar5 = FUN_008a08f0();
    if (-1 < lVar5) {
      sVar3 = FUN_008a08f0();
      uVar6 = FUN_008a08f0();
      if ((sVar3 == (size_t)uVar6) && ((int)((ulonglong)uVar6 >> 0x20) == 0)) {
        FUN_00a4becd();
        FUN_0084aa50();
        local_4 = 0;
        sVar3 = _fread(*local_e8,1,sVar3,*param_1_00);
        iVar4 = _ferror(*param_1_00);
        if (iVar4 != 0) {
          FUN_0043c211(&DAT_00d25fa0);
          cVar2 = FUN_00846b30(1);
          if (cVar2 != '\0') {
            FUN_004325b6();
            local_4._0_1_ = 1;
            FUN_0043c211();
            local_4._0_1_ = 2;
            FUN_00820bf9();
            FUN_008433c0();
            local_4._0_1_ = 3;
            FUN_0043c211();
            FUN_00432231();
            local_4._0_1_ = 5;
            FUN_008423d0();
            local_4._0_1_ = 6;
            GetLastError();
            FUN_0084d140();
            local_4._0_1_ = 7;
            FUN_00848860();
            local_4._0_1_ = 4;
            FUN_00842440();
            FUN_0040159c();
            local_4 = CONCAT31(local_4._1_3_,2);
            FUN_0081b5bc();
            FUN_0040159c();
            FUN_0040159c();
          }
          local_4 = 0xffffffff;
          thunk_FUN_0043c1dd();
          ExceptionList = local_c;
          return 0;
        }
        *(undefined *)((int)*local_e8 + sVar3) = 0;
        FUN_0084b3b0();
        local_4 = CONCAT31(local_4._1_3_,8);
        FUN_0043261a();
        FUN_0040159c();
        local_4 = 0xffffffff;
        thunk_FUN_0043c1dd();
        ExceptionList = local_c;
        return 1;
      }
    }
    ppvVar1 = (void **)ExceptionList;
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      ExceptionList = local_c;
      return 0;
    }
  }
  ExceptionList = ppvVar1;
  FUN_00840480();
  ExceptionList = local_c;
  return 0;
}



// WARNING: Removing unreachable block (ram,0x008a0d30)
// WARNING: Removing unreachable block (ram,0x008a0e10)

int __thiscall FUN_008a0c90(uint *param_1_00,int param_1)

{
  bool bVar1;
  uint uVar2;
  uint uVar3;
  uint extraout_ECX;
  uint extraout_ECX_00;
  uint uVar4;
  undefined8 uVar5;
  undefined local_40 [4];
  uint local_3c;
  undefined4 local_2c;
  uint local_28;
  void *local_24;
  undefined4 local_1c;
  uint local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bcddb1;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_10 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  uVar3 = param_1_00[1];
  uVar4 = *param_1_00;
  local_4 = 0;
  local_1c = 1;
  if (((int)uVar3 < 1) && ((int)uVar3 < 0)) {
    bVar1 = true;
    while ((uVar4 | uVar3) != 0) {
      uVar5 = __alldvrm(uVar4,uVar3,10,0);
      local_14 = (uint)((ulonglong)uVar5 >> 0x20);
      uVar4 = (uint)uVar5;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (0x7fffffff < extraout_ECX)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/longlong.h",0xb4,"wxLongLongNative::ToLong",
                     "(m_ll >= LONG_MIN) && (m_ll <= LONG_MAX)",
                     L"wxLongLong to long conversion loss of precision",uVar2);
      }
      local_28 = 7;
      local_24 = (void *)0x0;
      local_2c = 1;
      local_3c = (uint)(ushort)(0x30 - (short)extraout_ECX);
      local_4 = 3;
      FUN_00855e60(local_40);
      local_4 = local_4 & 0xffffff00;
      _free(local_24);
      uVar3 = local_14;
      if (7 < local_28) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_3c);
      }
    }
  }
  else {
    bVar1 = false;
    while ((uVar4 | uVar3) != 0) {
      uVar5 = __alldvrm(uVar4,uVar3,10,0);
      local_14 = (uint)((ulonglong)uVar5 >> 0x20);
      uVar4 = (uint)uVar5;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (0x7fffffff < extraout_ECX_00)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/longlong.h",0xb4,"wxLongLongNative::ToLong",
                     "(m_ll >= LONG_MIN) && (m_ll <= LONG_MAX)",
                     L"wxLongLong to long conversion loss of precision");
      }
      local_28 = 7;
      local_24 = (void *)0x0;
      local_2c = 1;
      local_3c = (uint)(ushort)((short)extraout_ECX_00 + 0x30);
      local_4 = 6;
      FUN_00855e60(local_40);
      local_4 = local_4 & 0xffffff00;
      _free(local_24);
      uVar3 = local_14;
      if (7 < local_28) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_3c);
      }
    }
  }
  if (*(int *)(param_1 + 0x14) == 0) {
    FUN_00855e10(0x30);
  }
  else if (bVar1) {
    FUN_00853fa0(0x2d,1);
    local_4 = 7;
    FUN_00855e60(local_40);
    _free(local_24);
    if (7 < local_28) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_3c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_008a0f30(longlong *param_1_00,int param_1)

{
  uint uVar1;
  short extraout_CX;
  int unaff_EBX;
  longlong lVar2;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bcde01;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  lVar2 = *param_1_00;
  local_4 = 0;
  do {
    if (lVar2 == 0) {
      if (*(int *)(param_1 + 0x14) == 0) {
        FUN_00855e10(0x30);
      }
      ExceptionList = local_c;
      return param_1;
    }
    lVar2 = __aulldvrm(lVar2,10,0);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (unaff_EBX != 0)) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/longlong.h",0x198,"wxULongLongNative::ToULong",
                   "m_ll <= ULONG_MAX",L"wxULongLong to long conversion loss of precision",uVar1);
    }
    local_18 = 7;
    local_14 = (void *)0x0;
    local_1c = 1;
    local_2c = (uint)(ushort)(extraout_CX + 0x30);
    local_4 = 3;
    FUN_00855e60(local_30);
    local_4 = local_4 & 0xffffff00;
    _free(local_14);
    unaff_EBX = 0;
  } while (local_18 < 8);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_2c);
}



int __fastcall FUN_008a1080(int param_1)

{
  uint uVar1;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 4) == 0)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xc0,"wxArrayString::Last","!IsEmpty()"
                 ,L"wxArrayString: index out of bounds");
  }
  uVar1 = *(uint *)(param_1 + 4) - 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 4) <= uVar1)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                 "nIndex < m_nCount",L"wxArrayString: index out of bounds");
  }
  return *(int *)(param_1 + 8) + uVar1 * 0x24;
}



undefined4 __fastcall FUN_008a1100(int *param_1)

{
  undefined4 uVar1;
  undefined4 unaff_retaddr;
  undefined4 local_30 [5];
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = (**(code **)(*param_1 + 8))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc4);
  puStack_8 = (undefined *)0x0;
  FUN_0085c420(unaff_retaddr,uVar1);
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  ExceptionList = pvStack_10;
  return unaff_retaddr;
}



// WARNING: Exceeded maximum restarts with more pending

void FUN_008a1190(IMalloc *param_1)

{
  IMalloc *pv;
  char cVar1;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  pv = param_1;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 != (IMalloc *)0x0) {
    SHGetMalloc(&param_1);
    if (param_1 != (IMalloc *)0x0) {
      (*param_1->lpVtbl->Free)(param_1,pv);
      (*param_1->lpVtbl->Release)();
      ExceptionList = pvStack_10;
      return;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_008a12d0(undefined4 *param_1)

{
  FUN_008a1190(*param_1);
  return;
}



int __thiscall FUN_008a12e0(LPCITEMIDLIST *param_1_00,int param_1)

{
  char cVar1;
  BOOL BVar2;
  LPWSTR *local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcde79;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  FUN_00852280();
  BVar2 = SHGetPathFromIDListW(*param_1_00,*local_78);
  FUN_00851bf0();
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4 = 1;
      FUN_008423d0();
      local_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4._0_1_ = 1;
      FUN_00842440();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_008a1450(void)

{
  wchar_t wVar1;
  char cVar2;
  DWORD DVar3;
  wchar_t *pwVar4;
  undefined4 uStack_118;
  undefined4 uStack_114;
  char *pcStack_110;
  undefined4 uStack_10c;
  char *pcStack_108;
  undefined **ppuStack_104;
  undefined *puStack_100;
  wchar_t *pwStack_fc;
  int local_ec;
  undefined4 local_e8;
  undefined local_e1;
  undefined local_e0 [4];
  uint local_dc;
  undefined4 local_cc;
  uint local_c8;
  void *local_c4;
  undefined local_bc [100];
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [24];
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcdf08;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_ec;
  ExceptionList = &local_c;
  pwStack_fc = L"ɪ蒍쐤";
  FUN_004325b6();
  pwStack_fc = (wchar_t *)local_34;
  local_4 = 0;
  local_ec = 0;
  puStack_100 = (undefined *)0x8a14b9;
  FUN_0089ed30();
  local_4._0_1_ = 1;
  if (local_ec == 0) {
    local_e8 = (undefined **)&uStack_118;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(7);
    if (cVar2 != '\0') {
      pwStack_fc = L"⡨퍕贀⑌옘⒄ô";
      FUN_0081c0f1();
      local_4._0_1_ = 2;
      pwStack_fc = L"\xec83謌觌⑤儘貍퀤";
      FUN_004325b6();
      local_e8 = &puStack_100;
      ppuStack_104 = &puStack_100;
      pcStack_108 = (char *)0x8a152a;
      FUN_00432231();
      ppuStack_104 = (undefined **)&DAT_00d25fa0;
      pcStack_108 = "`anonymous-namespace\'::ResolveShellFunctions";
      uStack_10c = 0x81;
      pcStack_110 = "..\\..\\src\\msw\\stdpaths.cpp";
      uStack_114 = 7;
      local_4._0_1_ = 4;
      uStack_118 = 0x8a1551;
      FUN_008423d0();
      ppuStack_104 = (undefined **)local_bc;
      pcStack_108 = local_e0;
      local_4._0_1_ = 6;
      uStack_10c = 0x8a1572;
      FUN_0084dc30();
      local_4._0_1_ = 3;
      FUN_00842440();
      pwStack_fc = L"쒃茄⑼ࠬ൲䒋ᠤ\xe850\xe100\x19쒃㌄曉䲉ᠤ䲍㠤䓇Ⱔ\a";
      _free(local_c4);
      if (7 < local_c8) {
                    // WARNING: Subroutine does not return
        pwStack_fc = (wchar_t *)&UNK_008a15a1;
        FUN_00a3f6a1();
      }
      local_dc = local_dc & 0xffff0000;
      local_c8 = 7;
      local_cc = 0;
      local_4._0_1_ = 1;
      FUN_0081b5bc();
    }
  }
  if (DAT_032bdb68 == 0) {
LAB_008a15e8:
    local_e1 = DAT_03235e94;
    DAT_03235e94 = 0;
  }
  else {
    DVar3 = GetCurrentThreadId();
    if (DVar3 == DAT_032bdb68) goto LAB_008a15e8;
    pwStack_fc = (wchar_t *)0x8a15e3;
    local_e1 = FUN_00842f30();
  }
  local_e8 = (undefined **)CONCAT31(local_e8._1_3_,local_e1);
  local_4._0_1_ = 7;
  pwStack_fc = L"坪蒍ꀤ";
  FUN_004325b6();
  pwStack_fc = (wchar_t *)local_58;
  puStack_100 = local_e0;
  local_4._0_1_ = 8;
  ppuStack_104 = (undefined **)0x8a1632;
  pwStack_fc = (wchar_t *)FUN_0081b5f9();
  local_4._0_1_ = 9;
  puStack_100 = (undefined *)0x8a1648;
  DAT_032bdd68 = FUN_0089f060();
  local_4._0_1_ = 8;
  pwStack_fc = 
  L"쒃茄⑼ࠬ൲䒋ᠤ\xe850\xe02e\x19쒃㤄栝⯝甃롹咨Ó傍昂ࢋ삃昂쬻\xf575숫\xf8d1桐咨Ó貍ꐤ"
  ;
  _free(local_c4);
  if (7 < local_c8) {
                    // WARNING: Subroutine does not return
    pwStack_fc = (wchar_t *)&UNK_008a1673;
    FUN_00a3f6a1();
  }
  if (DAT_032bdd68 == 0) {
    pwVar4 = L"SHGetSpecialFolderPath";
    do {
      wVar1 = *pwVar4;
      pwVar4 = pwVar4 + 1;
    } while (wVar1 != L'\0');
    pwStack_fc = L"SHGetSpecialFolderPath";
    puStack_100 = (undefined *)0x8a16a7;
    FID_conflict_assign();
    pwStack_fc = (wchar_t *)local_58;
    puStack_100 = local_e0;
    ppuStack_104 = (undefined **)0x8a16bb;
    pwStack_fc = (wchar_t *)FUN_0081b5f9();
    local_4._0_1_ = 10;
    puStack_100 = (undefined *)0x8a16d1;
    DAT_032bdd6c = FUN_0089f060();
    pwStack_fc = (wchar_t *)0x8a16e0;
    _free(local_c4);
    if (7 < local_c8) {
                    // WARNING: Subroutine does not return
      pwStack_fc = (wchar_t *)&UNK_008a16f4;
      FUN_00a3f6a1();
    }
  }
  DAT_032bdd70 = 1;
  pwStack_fc = L"쒃茄Ⓖ´";
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    pwStack_fc = (wchar_t *)&UNK_008a1725;
    FUN_00a3f6a1();
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  local_4 = CONCAT31(local_4._1_3_,1);
  if (DAT_032bdb68 != 0) {
    DVar3 = GetCurrentThreadId();
    if (DVar3 != DAT_032bdb68) {
      pwStack_fc = L"쒃\xeb04訉⑄ꈌ应̣䒋ࠤ鲈\xf024";
      FUN_00842f30();
      goto LAB_008a1779;
    }
  }
  DAT_03235e94 = (undefined)local_e8;
LAB_008a1779:
  local_4 = local_4 & 0xffffff00;
  if (local_ec != 0) {
    pwStack_fc = L"쒃褄⑜謈⒌Ü";
    FUN_0089f290();
    local_ec = 0;
  }
  pwStack_fc = L"쒃茄ⒼØ";
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    pwStack_fc = (wchar_t *)&UNK_008a17bc;
    FUN_00a3f6a1();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int FUN_008a17f0(int param_1,int param_2)

{
  HRESULT HVar1;
  int iVar2;
  LPITEMIDLIST local_44;
  undefined4 *local_40;
  LPITEMIDLIST pIStack_3c;
  undefined4 local_38;
  int local_34;
  undefined auStack_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcdf81;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_38 = 0;
  local_4 = 0;
  local_34 = param_1;
  if (DAT_032bdd70 == '\0') {
    FUN_008a1450(DAT_0323f878 ^ (uint)&stack0xffffffac);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  local_38 = 1;
  iVar2 = -0x7fffbffb;
  if (DAT_032bdd68 != (code *)0x0) {
    FUN_00852280(param_1,0x104);
    local_4 = 1;
    iVar2 = (*DAT_032bdd68)(0,param_2,0,0,*local_40);
    local_4 = local_4 & 0xffffff00;
    FUN_00851bf0();
    if (iVar2 == -0x7fffbffb) {
      FUN_00852280(param_1,0x104);
      local_4 = 2;
      iVar2 = (*DAT_032bdd68)(0,param_2,0,1,*local_40);
      local_4 = local_4 & 0xffffff00;
      FUN_00851bf0();
    }
    if (-1 < iVar2) {
      ExceptionList = local_c;
      return param_1;
    }
  }
  if (DAT_032bdd6c != (code *)0x0) {
    FUN_00852280(param_1,0x104);
    local_4 = 3;
    iVar2 = (*DAT_032bdd6c)(0,*local_40,param_2,0);
    local_4 = local_4 & 0xffffff00;
    FUN_00851bf0();
  }
  if ((iVar2 < 0) && (HVar1 = SHGetSpecialFolderLocation((HWND)0x0,param_2,&local_44), -1 < HVar1))
  {
    pIStack_3c = local_44;
    local_4 = 4;
    iVar2 = FUN_008a12e0(auStack_30);
    local_4._0_1_ = 5;
    if (param_1 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_008a1190(pIStack_3c);
  }
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_008a19d0(int param_1_00,int param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined local_d4 [4];
  uint local_d0;
  undefined4 local_c0;
  uint local_bc;
  void *local_b8;
  undefined local_b0 [4];
  uint local_ac;
  undefined4 local_9c;
  uint local_98;
  void *local_94;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcdfc1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x1c) == 0) {
    uVar1 = FUN_00896790(local_b0,DAT_0323f878 ^ (uint)&stack0xffffff20);
    local_4 = 0;
    FUN_00432544(uVar1,0);
    local_4._0_1_ = 1;
    iVar2 = FUN_00857de0(local_d4,1,0);
    local_4._0_1_ = 2;
    if (param_1_00 + 8 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    _free(local_b8);
    if (7 < local_bc) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_d0);
    }
    local_d0 = local_d0 & 0xffff0000;
    local_bc = 7;
    local_c0 = 0;
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0043250a();
    local_4 = 0xffffffff;
    _free(local_94);
    if (7 < local_98) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_ac);
    }
    local_98 = 7;
    local_9c = 0;
    local_ac = local_ac & 0xffff0000;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 8,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_008a1b30(undefined4 param_1)

{
  FUN_008a17f0(param_1,5);
  return param_1;
}



void __fastcall FUN_008a1b50(int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined local_fc [4];
  uint local_f8;
  undefined4 local_e8;
  uint local_e4;
  void *local_e0;
  undefined local_d8 [4];
  uint local_d4;
  undefined4 local_c4;
  uint local_c0;
  void *local_bc;
  undefined local_b4 [4];
  uint local_b0;
  undefined4 local_a0;
  uint local_9c;
  void *local_98;
  undefined local_90 [40];
  int local_68;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce027;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_fc;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffef4;
  ExceptionList = &local_c;
  uVar3 = FUN_008a19d0(local_d8);
  local_4 = 0;
  FUN_008595d0(local_90,uVar3,0,uVar2);
  local_4._0_1_ = 2;
  _free(local_bc);
  if (7 < local_c0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_d4);
  }
  local_c0 = 7;
  local_c4 = 0;
  local_d4 = local_d4 & 0xffff0000;
  if (local_68 != 0) {
    FUN_008a1080();
    FUN_00863b70(local_b4);
    local_4._0_1_ = 3;
    uVar3 = FUN_00863b70(local_fc);
    local_4._0_1_ = 4;
    cVar1 = FUN_00852fc0(uVar3);
    local_4._0_1_ = 3;
    _free(local_e0);
    if (7 < local_e4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_f8);
    }
    if (cVar1 != '\0') {
      FUN_00855a00(local_68 + -1);
      iVar4 = FUN_00857de0(local_fc,1,0);
      local_4._0_1_ = 5;
      if (param_1 + 8 != iVar4) {
        FID_conflict_assign(iVar4,0,0xffffffff);
      }
      _free(local_e0);
      if (7 < local_e4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_f8);
      }
      local_e4 = 7;
      local_e8 = 0;
      local_f8 = local_f8 & 0xffff0000;
    }
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b0);
    }
    local_9c = 7;
    local_a0 = 0;
    local_b0 = local_b0 & 0xffff0000;
  }
  local_4 = 0xffffffff;
  FUN_0043250a();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008a1d60(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_7c [4];
  undefined4 local_78;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce080;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_7c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff7c;
  ExceptionList = &local_c;
  FUN_0043c211("debug");
  local_4 = 0;
  FUN_008a1b50(local_7c);
  local_4 = 0xffffffff;
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78,uVar1);
  }
  FUN_0043c211("release");
  local_4 = 1;
  FUN_008a1b50(local_7c);
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = (uint)local_30._2_2_ << 0x10;
  local_18 = (void *)0x0;
  local_4 = 2;
  FUN_0083fc60(&DAT_00d35580);
  uVar2 = FUN_00853300(local_58,local_34,"_msw*");
  local_4 = CONCAT31(local_4._1_3_,3);
  FUN_008a1b50(uVar2);
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __fastcall FUN_008a1ef0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce0c3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0085bf00(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1 = wxStandardPaths::vftable;
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  param_1[9] = 0;
  local_4 = 1;
  FUN_008a1d60();
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_008a1f60(int param_1_00,byte param_1)

{
  _free(*(void **)(param_1_00 + 0x24));
  if (7 < *(uint *)(param_1_00 + 0x20)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
  }
  *(undefined4 *)(param_1_00 + 0x20) = 7;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined2 *)(param_1_00 + 0xc) = 0;
  FUN_0085bf10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_008a1fc0(undefined4 param_1)

{
  FUN_00896790(param_1);
  return param_1;
}



undefined4 FUN_008a1fe0(undefined4 param_1)

{
  undefined4 uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_008a17f0(local_30,0x23,DAT_0323f878 ^ (uint)&stack0xffffffc4);
  local_4 = 0;
  FUN_0085c420(param_1,uVar1);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_008a2070(undefined4 param_1)

{
  FUN_008a17f0(param_1,0x1a);
  return param_1;
}



undefined4 FUN_008a2090(undefined4 param_1)

{
  FUN_008a19d0(param_1);
  return param_1;
}



undefined4 FUN_008a20b0(undefined4 param_1)

{
  undefined4 uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_008a17f0(local_30,0x1c,DAT_0323f878 ^ (uint)&stack0xffffffc4);
  local_4 = 0;
  FUN_0085c420(param_1,uVar1);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined * __fastcall FUN_008a2140(undefined4 param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  iVar2 = 0;
  iVar1 = 0;
  do {
    if (*(int *)((int)&DAT_00d370f8 + iVar1) == param_2) {
      return (&PTR_DAT_00d370fc)[iVar2 * 2];
    }
    iVar2 = iVar2 + 1;
    iVar1 = iVar2 * 8;
  } while ((&PTR_DAT_00d370fc)[iVar2 * 2] != (undefined *)0x0);
  return (undefined *)0x0;
}



void * FUN_008a21a0(void)

{
  void *_Base;
  int iVar1;
  int unaff_EDI;
  
  _Base = (void *)FUN_00823c23(0x200);
  iVar1 = 0;
  do {
    *(char *)((int)_Base + iVar1 * 4 + 2) = (char)iVar1 + -0x80;
    *(undefined2 *)((int)_Base + iVar1 * 4) = *(undefined2 *)(unaff_EDI + iVar1 * 2);
    iVar1 = iVar1 + 1;
  } while (iVar1 < 0x80);
  _qsort(_Base,0x80,4,(_PtFuncCompare *)&LAB_008a2180);
  return _Base;
}



uint __thiscall FUN_008a21f0(int param_1_00,byte *param_1,short *param_2)

{
  byte bVar1;
  bool bVar2;
  short sVar3;
  uint in_EAX;
  undefined3 uVar6;
  undefined4 uVar4;
  uint uVar5;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(char *)(param_1_00 + 0xd) == '\0') {
      in_EAX = FUN_00840480("..\\..\\src\\common\\encconv.cpp",0xe7,"wxEncodingConverter::Convert",
                            "m_UnicodeOutput",
                            L"You cannot convert to 8-bit if output is const wchar_t*!");
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(param_1_00 + 0xc) != '\0')) {
      in_EAX = FUN_00840480("..\\..\\src\\common\\encconv.cpp",0xe8,"wxEncodingConverter::Convert",
                            "!m_UnicodeInput",
                            L"You cannot convert from unicode if input is const char*!");
    }
  }
  uVar6 = (undefined3)(in_EAX >> 8);
  if (*(char *)(param_1_00 + 0xe) == '\0') {
    if (*(int *)(param_1_00 + 8) == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        in_EAX = FUN_00840480("..\\..\\src\\common\\encconv.cpp",0xf6,"wxEncodingConverter::Convert"
                              ,"m_Table != 0",
                              L"You must call wxEncodingConverter::Init() before actually converting!"
                             );
      }
      return in_EAX & 0xffffff00;
    }
    bVar1 = *param_1;
    uVar5 = CONCAT31(uVar6,bVar1);
    bVar2 = false;
    while (bVar1 != 0) {
      sVar3 = *(short *)(*(int *)(param_1_00 + 8) + (uVar5 & 0xff) * 2);
      if ((sVar3 == 0) && ((short)(uVar5 & 0xff) != 0)) {
        sVar3 = 0x3f;
        bVar2 = true;
      }
      param_1 = param_1 + 1;
      *param_2 = sVar3;
      bVar1 = *param_1;
      uVar5 = (uint)bVar1;
      param_2 = param_2 + 1;
    }
    *param_2 = 0;
    return (uint)!bVar2;
  }
  bVar1 = *param_1;
  uVar4 = CONCAT31(uVar6,bVar1);
  while (bVar1 != 0) {
    param_1 = param_1 + 1;
    *param_2 = (short)(char)uVar4;
    bVar1 = *param_1;
    uVar4 = CONCAT31((int3)(CONCAT22((short)((uint)uVar4 >> 0x10),(short)(char)uVar4) >> 8),bVar1);
    param_2 = param_2 + 1;
  }
  *param_2 = 0;
  return CONCAT31((int3)((uint)uVar4 >> 8),1);
}



bool __thiscall FUN_008a2320(int param_1_00,ushort *param_1,undefined *param_2)

{
  ushort uVar1;
  bool bVar2;
  short sVar3;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(char *)(param_1_00 + 0xd) != '\0') {
      FUN_00840480("..\\..\\src\\common\\encconv.cpp",0x105,"wxEncodingConverter::Convert",
                   "!m_UnicodeOutput",L"You cannot convert to unicode if output is const char*!");
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(param_1_00 + 0xc) == '\0')) {
      FUN_00840480("..\\..\\src\\common\\encconv.cpp",0x106,"wxEncodingConverter::Convert",
                   "m_UnicodeInput",L"You cannot convert from 8-bit if input is const wchar_t*!");
    }
  }
  if (*(char *)(param_1_00 + 0xe) == '\0') {
    if (*(int *)(param_1_00 + 8) == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\encconv.cpp",0x114,"wxEncodingConverter::Convert",
                     "m_Table != 0",
                     L"You must call wxEncodingConverter::Init() before actually converting!");
      }
      return false;
    }
    bVar2 = false;
    uVar1 = *param_1;
    while (uVar1 != 0) {
      sVar3 = *(short *)(*(int *)(param_1_00 + 8) + (uint)uVar1 * 2);
      if ((sVar3 == 0) && (uVar1 != 0)) {
        sVar3 = 0x3f;
        bVar2 = true;
      }
      param_1 = param_1 + 1;
      *param_2 = (char)sVar3;
      param_2 = param_2 + 1;
      uVar1 = *param_1;
    }
    *param_2 = 0;
    return !bVar2;
  }
  uVar1 = *param_1;
  while (uVar1 != 0) {
    *param_2 = *(undefined *)param_1;
    param_1 = param_1 + 1;
    param_2 = param_2 + 1;
    uVar1 = *param_1;
  }
  *param_2 = 0;
  return true;
}



void __fastcall FUN_008a2440(undefined4 *param_1)

{
  param_1[1] = 0;
  *param_1 = wxEncodingConverter::vftable;
  param_1[2] = 0;
  *(undefined *)((int)param_1 + 0xd) = 0;
  *(undefined *)(param_1 + 3) = 0;
  *(undefined *)((int)param_1 + 0xe) = 0;
  return;
}



undefined4 __thiscall FUN_008a2460(int param_1_00,int param_1,int param_2,int param_4)

{
  byte *pbVar1;
  ushort *puVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  void *_Base;
  void *pvVar8;
  short sVar9;
  
  if (*(int *)(param_1_00 + 8) != 0) {
    FUN_00a3f66c(*(int *)(param_1_00 + 8));
    *(undefined4 *)(param_1_00 + 8) = 0;
  }
  iVar3 = param_2;
  if (param_1 == param_2) {
    *(undefined *)(param_1_00 + 0xe) = 1;
    return 1;
  }
  *(bool *)(param_1_00 + 0xd) = param_2 == 0x2c;
  *(undefined *)(param_1_00 + 0xe) = 0;
  if (param_1 == 0x2c) {
    iVar3 = FUN_008a2140();
    if (iVar3 != 0) {
      uVar4 = FUN_00823c23(0x20000);
      *(undefined4 *)(param_1_00 + 8) = uVar4;
      uVar5 = 0;
      do {
        *(short *)(*(int *)(param_1_00 + 8) + uVar5 * 2) = (short)uVar5;
        uVar5 = uVar5 + 1;
      } while (uVar5 < 0x80);
      uVar5 = 0x100;
      do {
        *(undefined2 *)(uVar5 + *(int *)(param_1_00 + 8)) = 0;
        uVar5 = uVar5 + 2;
      } while (uVar5 < 0x20000);
      if (param_4 == 1) {
        uVar5 = 0;
        do {
          pbVar1 = &DAT_00d36dd2 + uVar5;
          puVar2 = (ushort *)((int)&DAT_00d36dd0 + uVar5);
          uVar5 = uVar5 + 4;
          *(ushort *)(*(int *)(param_1_00 + 8) + (uint)*puVar2 * 2) = (ushort)*pbVar1;
        } while (uVar5 < 800);
      }
      uVar5 = 0;
      do {
        iVar6 = uVar5 * 2;
        sVar9 = (short)uVar5;
        uVar5 = uVar5 + 1;
        *(short *)(*(int *)(param_1_00 + 8) + (uint)*(ushort *)(iVar3 + iVar6) * 2) = sVar9 + 0x80;
      } while (uVar5 < 0x80);
      *(undefined *)(param_1_00 + 0xc) = 1;
      return 1;
    }
  }
  else {
    iVar6 = FUN_008a2140();
    if (iVar6 != 0) {
      param_2 = iVar6;
      if ((iVar3 != 0x2c) && (iVar7 = FUN_008a2140(), iVar7 == 0)) {
        return 0;
      }
      *(undefined *)(param_1_00 + 0xc) = 0;
      uVar4 = FUN_00823c23(0x200);
      *(undefined4 *)(param_1_00 + 8) = uVar4;
      uVar5 = 0;
      do {
        *(short *)(*(int *)(param_1_00 + 8) + uVar5 * 2) = (short)uVar5;
        uVar5 = uVar5 + 1;
      } while (uVar5 < 0x80);
      if (iVar3 != 0x2c) {
        _Base = (void *)FUN_008a21a0();
        sVar9 = 0;
        uVar5 = 0x100;
        do {
          param_1 = CONCAT22(param_1._2_2_,*(undefined2 *)((uVar5 - 0x100) + param_2));
          pvVar8 = _bsearch(&param_1,_Base,0x80,4,(_PtFuncCompare *)&LAB_008a2180);
          if ((pvVar8 == (void *)0x0) &&
             ((param_4 != 1 ||
              (pvVar8 = _bsearch(&param_1,&DAT_00d36dd0,200,4,(_PtFuncCompare *)&LAB_008a2180),
              pvVar8 == (void *)0x0)))) {
            *(short *)(uVar5 + *(int *)(param_1_00 + 8)) = sVar9 + 0x80;
          }
          else {
            *(ushort *)(uVar5 + *(int *)(param_1_00 + 8)) = (ushort)*(byte *)((int)pvVar8 + 2);
          }
          uVar5 = uVar5 + 2;
          sVar9 = sVar9 + 1;
        } while (uVar5 < 0x200);
        FUN_00a3f66c(_Base);
        return 1;
      }
      uVar5 = 0x100;
      do {
        *(undefined2 *)(uVar5 + *(int *)(param_1_00 + 8)) = *(undefined2 *)(iVar6 + -0x100 + uVar5);
        uVar5 = uVar5 + 2;
      } while (uVar5 < 0x200);
      return 1;
    }
  }
  return 0;
}



int FUN_008a2670(int param_1,int param_2,int param_3)

{
  undefined4 *puVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  int *piVar7;
  int *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bce0f9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar5 = 0;
  local_4 = 0;
  if (param_3 == -1) {
    param_3 = 1;
  }
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xffffffdc);
  local_4 = 0;
  local_14 = &DAT_00d371c0;
  do {
    iVar4 = 0;
    do {
      iVar3 = (&DAT_00d371c0)[(iVar4 + iVar5) * 4];
      if (iVar3 != -1) {
        puVar1 = &DAT_00d371c0 + (iVar4 + iVar5) * 4;
LAB_008a26f0:
        if (iVar3 != param_2) goto code_r0x008a26f6;
        piVar7 = &DAT_00d371c0 + (param_3 + iVar5) * 4;
        iVar4 = *piVar7;
        piVar6 = piVar7;
        while (iVar4 != -1) {
          if (iVar4 == param_2) {
            FUN_0086a400(param_2,1);
          }
          piVar2 = piVar6 + 1;
          piVar6 = piVar6 + 1;
          iVar4 = *piVar2;
        }
        iVar4 = *piVar7;
        while (iVar4 != -1) {
          piVar2 = *(int **)(param_1 + 8);
          piVar6 = piVar2 + *(int *)(param_1 + 4);
          for (; piVar2 != piVar6; piVar2 = piVar2 + 1) {
            if (*piVar2 == iVar4) goto LAB_008a2768;
          }
          FUN_0086a400(iVar4,1);
LAB_008a2768:
          piVar6 = piVar7 + 1;
          piVar7 = piVar7 + 1;
          iVar4 = *piVar6;
        }
        iVar4 = 4;
      }
LAB_008a2778:
      iVar4 = iVar4 + 1;
    } while (iVar4 < 4);
    local_14 = local_14 + 0x10;
    iVar5 = iVar5 + 4;
    if (*local_14 == -1) {
      ExceptionList = local_c;
      return param_1;
    }
  } while( true );
code_r0x008a26f6:
  iVar3 = puVar1[1];
  puVar1 = puVar1 + 1;
  if (iVar3 == -1) goto LAB_008a2778;
  goto LAB_008a26f0;
}



int FUN_008a27b0(int param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  int *piVar8;
  int *piVar9;
  int local_24;
  int *local_20;
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bce141;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xffffffcc);
  local_4 = 0;
  uVar3 = FUN_008a2670(local_18,param_2,0xffffffff);
  local_4 = 1;
  FUN_0086a9a0(uVar3);
  local_4 = local_4 & 0xffffff00;
  FUN_0086aa30();
  local_24 = 0;
  local_20 = &DAT_00d371c0;
  do {
    iVar7 = 0;
    do {
      iVar1 = iVar7 + local_24 * 4;
      iVar6 = (&DAT_00d371c0)[iVar1 * 4];
      if (iVar6 != -1) {
        puVar4 = &DAT_00d371c0 + iVar1 * 4;
LAB_008a2852:
        if (iVar6 != param_2) goto code_r0x008a2856;
        iVar7 = 4;
        piVar8 = local_20;
        do {
          iVar1 = *piVar8;
          piVar9 = piVar8;
          while (iVar1 != -1) {
            piVar5 = *(int **)(param_1 + 8);
            piVar2 = piVar5 + *(int *)(param_1 + 4);
            if (piVar5 != piVar2) {
              do {
                if (*piVar5 == *piVar9) goto LAB_008a28a7;
                piVar5 = piVar5 + 1;
              } while (piVar5 != piVar2);
            }
            FUN_0086a400(*piVar9,1);
LAB_008a28a7:
            piVar9 = piVar9 + 1;
            iVar1 = *piVar9;
          }
          piVar8 = piVar8 + 4;
          iVar7 = iVar7 + -1;
        } while (iVar7 != 0);
        iVar7 = 4;
      }
LAB_008a28c4:
      iVar7 = iVar7 + 1;
    } while (iVar7 < 4);
    local_24 = local_24 + 1;
    local_20 = &DAT_00d371c0 + local_24 * 0x10;
    if ((&DAT_00d371c0)[local_24 * 0x10] == -1) {
      ExceptionList = local_c;
      return param_1;
    }
  } while( true );
code_r0x008a2856:
  iVar6 = puVar4[1];
  puVar4 = puVar4 + 1;
  if (iVar6 == -1) goto LAB_008a28c4;
  goto LAB_008a2852;
}



undefined4 * __thiscall FUN_008a2910(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxMimeTypesManagerFactory::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_008a2930(void)

{
  operator_new(1);
  return;
}



void __fastcall FUN_008a2940(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0xc) == 0) {
    if (DAT_032bdd74 == (int *)0x0) {
      DAT_032bdd74 = (int *)operator_new(4);
      if (DAT_032bdd74 != (int *)0x0) {
        *DAT_032bdd74 = (int)wxMimeTypesManagerFactory::vftable;
        uVar1 = (**(code **)(*DAT_032bdd74 + 4))();
        *(undefined4 *)(param_1 + 0xc) = uVar1;
        return;
      }
      DAT_032bdd74 = (int *)0x0;
    }
    uVar1 = (**(code **)(*DAT_032bdd74 + 4))();
    *(undefined4 *)(param_1 + 0xc) = uVar1;
  }
  return;
}



undefined ** FUN_008a29a0(void)

{
  return &PTR_u_wxMimeTypeCmnModule_03237470;
}



undefined2 * __thiscall
FUN_008a29b0(undefined2 *param_1_00,undefined2 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 9) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<wchar_t>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



undefined4 * FUN_008a2a20(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxMimeTypeCmnModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 * __fastcall FUN_008a2a80(undefined4 *param_1)

{
  void *pvVar1;
  
  *param_1 = 0;
  pvVar1 = operator_new(0x48);
  if (pvVar1 != (void *)0x0) {
    *(undefined4 *)((int)pvVar1 + 0x14) = 0;
    *(undefined4 *)((int)pvVar1 + 0x18) = 7;
    *(undefined2 *)((int)pvVar1 + 4) = 0;
    *(undefined4 *)((int)pvVar1 + 0x1c) = 0;
    *(undefined4 *)((int)pvVar1 + 0x3c) = 7;
    *(undefined4 *)((int)pvVar1 + 0x38) = 0;
    *(undefined2 *)((int)pvVar1 + 0x28) = 0;
    *(undefined4 *)((int)pvVar1 + 0x40) = 0;
    param_1[1] = pvVar1;
    return param_1;
  }
  param_1[1] = 0;
  return param_1;
}



void FUN_008a2ad0(void)

{
  int iVar1;
  int iVar2;
  bool bVar3;
  char *local_c4;
  char **local_a8;
  uint local_a4;
  undefined local_a0 [4];
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  char local_7c [24];
  uint local_64;
  void *local_60;
  undefined local_58 [24];
  uint local_40;
  void *local_3c;
  char local_34 [20];
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce19a;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_a8;
  ExceptionList = &local_c;
  local_a4 = 0;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    local_c4 = (char *)0x2a;
    iVar1 = FUN_00850910();
    if (iVar1 != -1) {
      local_c4 = "mimeType.Find(wxT(\'*\')) == wxNOT_FOUND";
      FUN_00840480("..\\..\\src\\common\\mimecmn.cpp",0x236,"wxMimeTypesManager::IsOfType");
    }
  }
  local_a8 = &local_c4;
  local_c4 = (char *)0x2f;
  iVar1 = FUN_00852890(local_58);
  local_a8 = &local_c4;
  local_4 = 0;
  local_c4 = (char *)0x2f;
  iVar2 = FUN_00852890(local_a0);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (*(int *)(iVar2 + 0x14) == *(int *)(iVar1 + 0x14)) {
    local_c4 = (char *)0x8a2bb4;
    iVar1 = FUN_00850470();
    bVar3 = iVar1 == 0;
  }
  else {
    bVar3 = false;
  }
  local_c4 = (char *)0x8a2bc3;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    local_c4 = &UNK_008a2bdb;
    FUN_00a3f6a1();
  }
  local_88 = 7;
  local_8c = 0;
  local_9c = local_9c & 0xffff0000;
  local_4 = 0xffffffff;
  local_c4 = (char *)0x8a2c0d;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    local_c4 = &UNK_008a2c20;
    FUN_00a3f6a1();
  }
  if (!bVar3) goto LAB_008a2d3b;
  local_a8 = (char **)&stack0xffffff40;
  local_c4 = local_34;
  FUN_008529d0();
  local_4 = 2;
  local_c4 = (char *)0x8a2c63;
  iVar1 = FUN_008507a0();
  if (iVar1 == 0) {
LAB_008a2cb6:
    bVar3 = true;
  }
  else {
    local_a8 = (char **)&stack0xffffff40;
    local_c4 = local_7c;
    iVar1 = FUN_008529d0();
    local_4 = CONCAT31(local_4._1_3_,3);
    local_a4 = 1;
    if (local_20 == *(int *)(iVar1 + 0x14)) {
      local_c4 = (char *)0x8a2ca9;
      iVar1 = FUN_00850470();
      if (iVar1 == 0) goto LAB_008a2cb6;
    }
    bVar3 = false;
  }
  if ((local_a4 & 1) != 0) {
    local_c4 = (char *)0x8a2cc9;
    _free(local_60);
    if (7 < local_64) {
                    // WARNING: Subroutine does not return
      local_c4 = &UNK_008a2cdc;
      FUN_00a3f6a1();
    }
  }
  if (bVar3) {
    local_c4 = (char *)0x8a2cf0;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      local_c4 = &UNK_008a2d09;
      FUN_00a3f6a1();
    }
  }
  else {
    local_c4 = (char *)0x8a2d1d;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      local_c4 = &UNK_008a2d36;
      FUN_00a3f6a1();
    }
  }
LAB_008a2d3b:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_008a2d70(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  uint uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8b4b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008a2940(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  puVar3 = (undefined4 *)FUN_008c0190(param_1);
  if (puVar3 == (undefined4 *)0x0) {
    uVar1 = *(uint *)(param_1_00 + 4);
    uVar5 = 0;
    if (uVar1 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar5)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        cVar2 = FUN_008a2ad0(param_1,*(undefined4 *)(*(int *)(param_1_00 + 8) + uVar5 * 4));
        if (cVar2 != '\0') {
          puVar3 = (undefined4 *)operator_new(8);
          local_4 = 0;
          if (puVar3 != (undefined4 *)0x0) {
            uVar4 = FUN_009cde80(uVar5);
            *puVar3 = uVar4;
            puVar3[1] = 0;
            ExceptionList = local_c;
            return puVar3;
          }
          ExceptionList = local_c;
          return (undefined4 *)0x0;
        }
        uVar5 = uVar5 + 1;
      } while (uVar5 < uVar1);
    }
  }
  ExceptionList = local_c;
  return puVar3;
}



void __thiscall
FUN_008a2e50(int param_1_00,int param_1,int param_2,int param_3,int param_4,int *param_5)

{
  int iVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1_00 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  if (param_1_00 + 0x24 != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  if (param_1_00 + 0x48 != param_3) {
    FID_conflict_assign(param_3,0,0xffffffff);
  }
  if (param_1_00 + 0x90 != param_4) {
    FID_conflict_assign(param_4,0,0xffffffff);
  }
  iVar1 = *param_5;
  while( true ) {
    if (iVar1 == 0) {
      ExceptionList = local_c;
      return;
    }
    uVar2 = FUN_008854c0(local_30);
    local_4 = 0;
    FUN_00854700(uVar2,1);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) break;
    iVar1 = param_5[1];
    param_5 = param_5 + 1;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_2c);
}



void FUN_008a2f50(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  FUN_008a2e50(param_2,param_3,param_4,param_5,&stack0x00000018);
  return;
}



void __fastcall FUN_008a2f80(int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = *(uint *)(param_1 + 4);
  if (uVar2 != 0) {
    uVar3 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar2 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1 + 8) + uVar3 * 4);
      if (iVar1 != 0) {
        FUN_00863520();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar2 = *(uint *)(param_1 + 4);
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  return;
}



int __thiscall FUN_008a2ff0(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc8a95;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x3c) = 7;
  *(undefined4 *)(param_1_00 + 0x38) = 0;
  *(undefined2 *)(param_1_00 + 0x28) = 0;
  local_4 = 0;
  FID_conflict_assign(param_1 + 0x24,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x40) = 0;
  *(undefined4 *)(param_1_00 + 0x60) = 7;
  *(undefined4 *)(param_1_00 + 0x5c) = 0;
  local_4._0_1_ = 1;
  *(undefined2 *)(param_1_00 + 0x4c) = 0;
  FID_conflict_assign(param_1 + 0x48,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 100) = 0;
  *(undefined4 *)(param_1_00 + 0x84) = 7;
  *(undefined4 *)(param_1_00 + 0x80) = 0;
  *(undefined2 *)(param_1_00 + 0x70) = 0;
  local_4._0_1_ = 2;
  FID_conflict_assign(param_1 + 0x6c,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x88) = 0;
  *(undefined4 *)(param_1_00 + 0xa8) = 7;
  *(undefined4 *)(param_1_00 + 0xa4) = 0;
  local_4._0_1_ = 3;
  *(undefined2 *)(param_1_00 + 0x94) = 0;
  FID_conflict_assign(param_1 + 0x90,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0xac) = 0;
  *(undefined4 *)(param_1_00 + 0xcc) = 7;
  *(undefined4 *)(param_1_00 + 200) = 0;
  *(undefined2 *)(param_1_00 + 0xb8) = 0;
  local_4._0_1_ = 4;
  FID_conflict_assign(param_1 + 0xb4,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0xd0) = 0;
  local_4 = CONCAT31(local_4._1_3_,5);
  *(undefined4 *)(param_1_00 + 0xd8) = *(undefined4 *)(param_1 + 0xd8);
  FUN_00855400(param_1 + 0xdc);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_008a3150(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if (iVar1 != 0) {
    FUN_009c09f0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



undefined4 __thiscall FUN_008a3170(int *param_1_00,int param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\mimecmn.cpp",0x13d,"wxFileType::GetMimeType","mimeType",
                   L"invalid parameter in GetMimeType");
    }
    return 0;
  }
  iVar1 = *param_1_00;
  if (iVar1 != 0) {
    if (param_1 != iVar1) {
      FID_conflict_assign(iVar1,0,0xffffffff);
    }
    return 1;
  }
  uVar2 = FUN_008bf550();
  return uVar2;
}



undefined4 __thiscall FUN_008a31d0(int *param_1_00,int param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *param_1_00;
  if (iVar1 != 0) {
    if (param_1 != 0) {
      if (param_1 != iVar1 + 0xb4) {
        FID_conflict_assign(iVar1 + 0xb4,0,0xffffffff);
      }
      iVar1 = *param_1_00;
      *(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(iVar1 + 0xd8);
    }
    return CONCAT31((int3)((uint)iVar1 >> 8),1);
  }
  uVar2 = FUN_008bf870(param_1);
  return uVar2;
}



void __thiscall FUN_008a3220(int param_1_00,undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  short **ppsVar3;
  undefined4 *puVar4;
  int iVar5;
  undefined4 uVar6;
  short **ppsVar7;
  uint uVar8;
  undefined4 *local_44;
  short **local_40;
  undefined4 *local_3c;
  short **local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce1e3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_44;
  ExceptionList = &local_c;
  FUN_008a2940(DAT_0323f878 ^ (uint)&stack0xffffffac);
  uVar1 = param_1[6];
  ppsVar3 = (short **)(param_1 + 1);
  local_38 = ppsVar3;
  if (7 < uVar1) {
    local_38 = (short **)*ppsVar3;
  }
  if (local_38 == (short **)0x0) {
LAB_008a3294:
    FUN_00a3fb10();
  }
  else {
    ppsVar7 = ppsVar3;
    if (7 < uVar1) {
      ppsVar7 = (short **)*ppsVar3;
    }
    if (local_38 < ppsVar7) goto LAB_008a3294;
    if (7 < uVar1) {
      ppsVar3 = (short **)*ppsVar3;
    }
    if ((short **)((int)ppsVar3 + param_1[5] * 2) < local_38) goto LAB_008a3294;
  }
  local_3c = param_1;
  FUN_008478e0(&local_44);
  local_1c = 7;
  local_20 = 0;
  local_30 = (uint)local_30._2_2_ << 0x10;
  local_18 = (void *)0x0;
  local_4 = 0;
  if ((local_3c != (undefined4 *)0xfffffffc) &&
     ((local_3c == (undefined4 *)0x0 || (local_3c != local_44)))) {
    FUN_00a3fb10();
  }
  if (local_38 != local_40) {
    if (local_3c != (undefined4 *)0xfffffffc) {
      if (local_3c == (undefined4 *)0x0) {
        FUN_00a3fb10();
      }
      if ((uint)local_3c[6] < 8) {
        puVar4 = local_3c + 1;
      }
      else {
        puVar4 = (undefined4 *)local_3c[1];
      }
      if ((short **)((int)puVar4 + local_3c[5] * 2) <= local_38) {
        FUN_00a3fb10();
      }
    }
    if (*(short *)local_38 == 0x2e) {
      puVar4 = (undefined4 *)FUN_00847800();
      uVar6 = *puVar4;
      uVar2 = puVar4[1];
      FUN_008478e0(&local_44);
      FUN_00428080(uVar6,uVar2,local_44,local_40);
      goto LAB_008a3371;
    }
  }
  if (&local_34 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
LAB_008a3371:
  if (param_1[5] == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\mimecmn.cpp",0x27b,
                   "wxMimeTypesManager::GetFileTypeFromExtension","!ext.empty()",
                   L"extension can\'t be empty");
    }
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  else {
    local_44 = (undefined4 *)FUN_008bfd50(&local_34);
    if (local_44 == (undefined4 *)0x0) {
      uVar1 = *(uint *)(param_1_00 + 4);
      uVar8 = 0;
      if (uVar1 != 0) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar8)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          iVar5 = FUN_00853d10(param_1,1,0);
          if (iVar5 != -1) {
            puVar4 = (undefined4 *)operator_new(8);
            local_4 = CONCAT31(local_4._1_3_,1);
            if (puVar4 == (undefined4 *)0x0) {
              local_44 = (undefined4 *)0x0;
            }
            else {
              local_44 = puVar4;
              uVar6 = FUN_009cde80(uVar8);
              *puVar4 = uVar6;
              puVar4[1] = 0;
              local_44 = puVar4;
            }
            break;
          }
          uVar8 = uVar8 + 1;
        } while (uVar8 < uVar1);
      }
    }
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008a34c0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008a2f80(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_0086a880();
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008a3520(int param_1_00,undefined4 param_1,uint param_2)

{
  int iVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce226;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    pvVar2 = operator_new(0xec);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = FUN_008a2ff0(param_1);
    }
    iVar1 = *(int *)(param_1_00 + 4);
    local_4 = 0xffffffff;
    if (iVar3 != 0) {
      FUN_0086a0a0(iVar3,iVar1 * 4 >> 2,param_2);
    }
    uVar5 = 1;
    if (1 < param_2) {
      iVar3 = iVar1 * 4;
      do {
        iVar3 = iVar3 + 4;
        pvVar2 = operator_new(0xec);
        local_4 = 1;
        if (pvVar2 == (void *)0x0) {
          uVar4 = 0;
        }
        else {
          uVar4 = FUN_008a2ff0(param_1);
        }
        local_4 = 0xffffffff;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar5 + iVar1))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 *)(*(int *)(param_1_00 + 8) + iVar3) = uVar4;
        uVar5 = uVar5 + 1;
      } while (uVar5 < param_2);
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_008a3650(void)

{
  if (DAT_032bdd74 != (undefined4 *)0x0) {
    (**(code **)*DAT_032bdd74)(1);
  }
  DAT_032bdd74 = (undefined4 *)0x0;
  if (DAT_032bdd84 != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(DAT_032bdd84);
  }
  return;
}



void FUN_008a36a0(int param_1)

{
  FUN_008a2940();
  if (param_1 != 0) {
    do {
      if (*(int *)(param_1 + 0x14) == 0) {
        return;
      }
      FUN_008a3520(param_1,1);
      param_1 = param_1 + 0xec;
    } while (param_1 != 0);
  }
  return;
}



void __thiscall FUN_008a36d0(int **param_1_00,int **param_1)

{
  int *piVar1;
  
  piVar1 = *param_1;
  if (piVar1 != (int *)0x0) {
    *piVar1 = *piVar1 + 1;
    *param_1_00 = piVar1;
    return;
  }
  *param_1_00 = (int *)0x0;
  return;
}



longlong __thiscall FUN_008a36f0(int *param_1_00,uint param_1,int param_2,int param_3)

{
  uint *puVar1;
  uint uVar2;
  longlong lVar3;
  
  if (param_3 == 1) {
    puVar1 = (uint *)(param_1_00 + 8);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 + param_1;
    param_1_00[9] = param_1_00[9] + param_2 + (uint)CARRY4(uVar2,param_1);
    return *(longlong *)(param_1_00 + 8);
  }
  if (param_3 != 2) {
    param_1_00[8] = param_1;
    param_1_00[9] = param_2;
    return CONCAT44(param_2,param_1);
  }
  lVar3 = (**(code **)(*param_1_00 + 0x18))();
  if (lVar3 == -1) {
    return -1;
  }
  *(longlong *)(param_1_00 + 8) = lVar3 + CONCAT44(param_2,param_1);
  return lVar3 + CONCAT44(param_2,param_1);
}



undefined4 __thiscall
FUN_008a3760(int param_1_00,uint param_1,int param_2,int param_3,uint *param_4)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  int *piVar8;
  uint uVar9;
  bool bVar10;
  
  uVar2 = *param_4;
  *param_4 = 0;
  iVar6 = *(int *)(param_1_00 + 0x8c);
  iVar4 = param_2 + (uint)CARRY4(uVar2,param_1);
  uVar9 = *(uint *)(param_1_00 + 0x88);
  if ((iVar6 < iVar4) || ((iVar6 <= iVar4 && (uVar9 < uVar2 + param_1)))) {
    if ((iVar6 < param_2) || ((iVar6 <= param_2 && (uVar9 <= param_1)))) {
      uVar9 = 0;
      uVar7 = uVar2;
    }
    else {
      uVar9 = uVar9 - param_1;
      uVar7 = uVar2 - uVar9;
    }
  }
  else {
    uVar7 = 0;
    uVar9 = uVar2;
  }
  if ((0 < param_2) || (-1 < param_2)) {
    if (uVar9 == 0) {
LAB_008a3819:
      if (uVar7 != 0) {
        uVar9 = *param_4;
        while (uVar9 < uVar2) {
          iVar6 = (param_2 - *(int *)(param_1_00 + 0x8c)) -
                  (uint)(param_1 < *(uint *)(param_1_00 + 0x88));
          if ((-1 < iVar6) &&
             ((0 < iVar6 || (*(uint *)(param_1_00 + 0x14) <= param_1 - *(uint *)(param_1_00 + 0x88))
              ))) {
            do {
              if ((*(int *)(param_1_00 + 4) == 0) &&
                 ((*(uint *)(param_1_00 + 0x88) | *(uint *)(param_1_00 + 0x8c)) == 0))
              goto LAB_008a39d7;
              if (*(int *)(param_1_00 + 0x14) == 0) {
LAB_008a3904:
                piVar8 = *(int **)(param_1_00 + 4);
                if (piVar8 == (int *)0x0) {
LAB_008a39d7:
                  return *(undefined4 *)(param_1_00 + 8);
                }
              }
              else {
                if ((*(int *)(param_1_00 + 0x60) == 0) &&
                   (cVar3 = FUN_0085bec0(param_1_00 + 0x18,param_1_00 + 0x60,param_1_00 + 0x3c),
                   cVar3 == '\0')) {
                  return 3;
                }
                cVar3 = FUN_008a0440(*(undefined4 *)(param_1_00 + 0x88),
                                     *(undefined4 *)(param_1_00 + 0x8c),0);
                if (cVar3 == '\0') {
                  return 3;
                }
                uVar7 = FUN_0089ff40(*(undefined4 *)(param_1_00 + 0xc),
                                     *(undefined4 *)(param_1_00 + 0x14));
                piVar8 = *(int **)(param_1_00 + 4);
                puVar1 = (uint *)(param_1_00 + 0x88);
                uVar9 = *puVar1;
                *puVar1 = *puVar1 + uVar7;
                *(int *)(param_1_00 + 0x8c) =
                     *(int *)(param_1_00 + 0x8c) + (uint)CARRY4(uVar9,uVar7);
                if (uVar7 < *(uint *)(param_1_00 + 0x14)) {
                  if (piVar8 != (int *)0x0) {
                    (**(code **)(*piVar8 + 4))(1);
                    *(undefined4 *)(param_1_00 + 4) = 0;
                  }
                  if (uVar7 != 0) {
                    if (*(int *)(param_1_00 + 0xc) != 0) {
                      FUN_00a3f66c(*(int *)(param_1_00 + 0xc));
                      *(undefined4 *)(param_1_00 + 0xc) = 0;
                    }
                    *(undefined4 *)(param_1_00 + 0x14) = 0;
                  }
                  *(undefined4 *)(param_1_00 + 8) = 3;
                  return 3;
                }
                *(undefined4 *)(param_1_00 + 0x14) = 0;
                if (piVar8 == (int *)0x0) {
                  if (*(int *)(param_1_00 + 0xc) != 0) {
                    FUN_00a3f66c(*(int *)(param_1_00 + 0xc));
                    *(undefined4 *)(param_1_00 + 0xc) = 0;
                  }
                  goto LAB_008a3904;
                }
              }
              piVar8 = (int *)(**(code **)(*piVar8 + 0x2c))
                                        (*(undefined4 *)(param_1_00 + 0xc),
                                         *(undefined4 *)(param_1_00 + 0x10));
              uVar9 = (**(code **)(*piVar8 + 0x30))();
              *(uint *)(param_1_00 + 0x14) = uVar9;
              if (uVar9 < *(uint *)(param_1_00 + 0x10)) {
                piVar8 = *(int **)(param_1_00 + 4);
                iVar6 = piVar8[3];
                *(int *)(param_1_00 + 8) = iVar6;
                if (iVar6 == 0) {
                  *(undefined4 *)(param_1_00 + 8) = 1;
                }
                if (piVar8 != (int *)0x0) {
                  (**(code **)(*piVar8 + 4))(1);
                  *(undefined4 *)(param_1_00 + 4) = 0;
                }
              }
              iVar6 = (param_2 - *(int *)(param_1_00 + 0x8c)) -
                      (uint)(param_1 < *(uint *)(param_1_00 + 0x88));
            } while ((0 < iVar6) ||
                    ((-1 < iVar6 &&
                     (*(uint *)(param_1_00 + 0x14) <= param_1 - *(uint *)(param_1_00 + 0x88)))));
          }
          iVar6 = param_1 - *(int *)(param_1_00 + 0x88);
          uVar7 = uVar2 - *param_4;
          uVar9 = *(int *)(param_1_00 + 0x14) - iVar6;
          if (uVar7 <= uVar9) {
            uVar9 = uVar7;
          }
          _memcpy((void *)(*param_4 + param_3),(void *)(*(int *)(param_1_00 + 0xc) + iVar6),uVar9);
          *param_4 = *param_4 + uVar9;
          bVar10 = CARRY4(param_1,uVar9);
          param_1 = param_1 + uVar9;
          param_2 = param_2 + (uint)bVar10;
          uVar9 = *param_4;
        }
      }
      return 0;
    }
    cVar3 = FUN_008a0440(param_1,param_2,0);
    if (cVar3 != '\0') {
      uVar5 = FUN_0089fd20(param_3,uVar9);
      if (0 < (int)uVar5) {
        *param_4 = uVar5;
        bVar10 = CARRY4(param_1,uVar5);
        param_1 = param_1 + uVar5;
        param_2 = param_2 + ((int)uVar5 >> 0x1f) + (uint)bVar10;
      }
      if (uVar9 <= *param_4) goto LAB_008a3819;
    }
  }
  return 3;
}



undefined8 __fastcall FUN_008a3a20(int param_1)

{
  undefined uVar1;
  uint uVar2;
  DWORD DVar3;
  undefined8 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce258;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  if (*(int *)(param_1 + 8) == 1) {
    return CONCAT44(*(int *)(param_1 + 0x8c) +
                    (uint)CARRY4(*(uint *)(param_1 + 0x14),*(uint *)(param_1 + 0x88)),
                    *(uint *)(param_1 + 0x14) + *(uint *)(param_1 + 0x88));
  }
  ExceptionList = &local_c;
  if (DAT_032bdb68 != 0) {
    DVar3 = GetCurrentThreadId();
    if (DVar3 != DAT_032bdb68) {
      uVar1 = FUN_00842f30(0);
      goto LAB_008a3a83;
    }
  }
  uVar1 = DAT_03235e94;
  DAT_03235e94 = 0;
LAB_008a3a83:
  local_4 = 0;
  uVar4 = (**(code **)(**(int **)(param_1 + 4) + 0x18))(uVar2);
  local_4 = 0xffffffff;
  if (DAT_032bdb68 != 0) {
    DVar3 = GetCurrentThreadId();
    if (DVar3 != DAT_032bdb68) {
      FUN_00842f30(uVar1);
      ExceptionList = local_c;
      return uVar4;
    }
  }
  DAT_03235e94 = uVar1;
  ExceptionList = local_c;
  return uVar4;
}



void FUN_008a3b30(void)

{
  FUN_008a3a20();
  return;
}



undefined4 __fastcall FUN_008a3b40(int *param_1)

{
  char cVar1;
  undefined4 uVar2;
  longlong lVar3;
  undefined uStack_5;
  undefined4 uStack_4;
  
  lVar3 = (**(code **)(*param_1 + 0x18))();
  if ((lVar3 == -1) && (cVar1 = (**(code **)(*param_1 + 0x10))(), cVar1 != '\0')) {
    uStack_4 = 1;
    FUN_008a3760(0xfffffffe,0x7fffffff,&uStack_5,&uStack_4);
    uVar2 = (**(code **)(*param_1 + 0x18))();
    return uVar2;
  }
  return (int)lVar3;
}



uint __thiscall FUN_008a3bb0(int *param_1,undefined4 param_2,uint param_3)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  int iVar4;
  
  cVar3 = (**(code **)(*param_1 + 0x10))();
  if (cVar3 == '\0') {
    return 0;
  }
  iVar4 = FUN_008a3760(param_1[8],param_1[9],param_2,&param_3);
  param_1[3] = iVar4;
  puVar1 = (uint *)(param_1 + 8);
  uVar2 = *puVar1;
  *puVar1 = *puVar1 + param_3;
  param_1[9] = param_1[9] + (uint)CARRY4(uVar2,param_3);
  return param_3;
}



void __fastcall FUN_008a3bf0(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bce2a1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 2;
  if (*(int **)(param_1 + 4) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 4) + 4))(1,DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  FUN_00a3f66c(*(undefined4 *)(param_1 + 0xc));
  if (*(int *)(param_1 + 0x50) != 0) {
    FUN_0085e6c0(param_1 + 0x3c);
  }
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00882b50();
  _free(*(void **)(param_1 + 0x58));
  if (7 < *(uint *)(param_1 + 0x54)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x40));
  }
  *(undefined4 *)(param_1 + 0x54) = 7;
  *(undefined4 *)(param_1 + 0x50) = 0;
  *(undefined2 *)(param_1 + 0x40) = 0;
  _free(*(void **)(param_1 + 0x34));
  if (7 < *(uint *)(param_1 + 0x30)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x1c));
  }
  *(undefined4 *)(param_1 + 0x30) = 7;
  *(undefined4 *)(param_1 + 0x2c) = 0;
  *(undefined2 *)(param_1 + 0x1c) = 0;
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall
FUN_008a3cd0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  longlong lVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce2e1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[1] = param_1;
  param_1_00[4] = param_2;
  *param_1_00 = 1;
  param_1_00[2] = 0;
  param_1_00[3] = 0;
  param_1_00[5] = 0;
  param_1_00[0xc] = 7;
  param_1_00[0xb] = 0;
  *(undefined2 *)(param_1_00 + 7) = 0;
  FID_conflict_assign(param_3,0,0xffffffff);
  param_1_00[0xd] = 0;
  param_1_00[0x15] = 7;
  param_1_00[0x14] = 0;
  *(undefined2 *)(param_1_00 + 0x10) = 0;
  param_1_00[0x16] = 0;
  param_1_00[0x1f] = 7;
  param_1_00[0x1e] = 0;
  *(undefined2 *)(param_1_00 + 0x1a) = 0;
  param_1_00[0x20] = 0;
  param_1_00[0x18] = 0;
  param_1_00[0x22] = 0;
  param_1_00[0x23] = 0;
  local_4 = 2;
  lVar4 = (**(code **)(*(int *)param_1_00[1] + 0x18))(uVar1);
  uVar1 = (uint)lVar4;
  if (-1 < lVar4) {
    iVar3 = (int)((ulonglong)lVar4 >> 0x20) + (uint)(0xfffffffe < uVar1);
    if ((iVar3 < 1) && ((iVar3 < 0 || (uVar1 + 1 < (uint)param_1_00[4])))) {
      param_1_00[4] = uVar1 + 1;
    }
  }
  if (param_1_00[4] != 0) {
    uVar2 = FUN_00823c23(param_1_00[4]);
    param_1_00[3] = uVar2;
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_008a3de0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x90);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_008a3cd0(param_1,param_2,param_3);
  }
  *param_1_00 = uVar2;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_008a3e60(int **param_1)

{
  int *piVar1;
  
  piVar1 = *param_1;
  if ((piVar1 != (int *)0x0) && (*piVar1 = *piVar1 + -1, *piVar1 == 0)) {
    FUN_008a3bf0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(piVar1);
  }
  return;
}



undefined4 * __thiscall FUN_008a3e80(undefined4 *param_1_00,int **param_1)

{
  int *piVar1;
  
  FUN_00883ce0();
  *param_1_00 = wxBackedInputStream::vftable;
  piVar1 = *param_1;
  if (piVar1 != (int *)0x0) {
    *piVar1 = *piVar1 + 1;
    param_1_00[7] = piVar1;
    param_1_00[8] = 0;
    param_1_00[9] = 0;
    return param_1_00;
  }
  param_1_00[7] = 0;
  param_1_00[8] = 0;
  param_1_00[9] = 0;
  return param_1_00;
}



void __fastcall FUN_008a3ec0(int param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bce308;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  piVar1 = *(int **)(param_1 + 0x1c);
  local_4 = 0;
  if ((piVar1 != (int *)0x0) && (*piVar1 = *piVar1 + -1, *piVar1 == 0)) {
    FUN_008a3bf0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(piVar1);
  }
  local_4 = 0xffffffff;
  FUN_00883d00(uVar2);
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008a3f30(undefined4 param_1_00,byte param_1)

{
  FUN_008a3ec0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined ** FUN_008a3f50(void)

{
  return &PTR_u_wxURI_03237510;
}



undefined4 __fastcall FUN_008a3f60(int param_1)

{
  undefined4 uVar1;
  
  uVar1 = 1;
  if (((*(byte *)(param_1 + 0x108) & 1) != 0) && ((*(uint *)(param_1 + 0x108) >> 2 & 1) != 0)) {
    uVar1 = 0;
  }
  return uVar1;
}



undefined4 FUN_008a3f80(undefined4 param_1,undefined4 param_2)

{
  FUN_00855430(param_1,param_2,0x2f,0);
  return param_1;
}



undefined4 FUN_008a3fb0(char param_1)

{
  if ((((((param_1 != '!') && (param_1 != '$')) && (param_1 != '&')) &&
       ((param_1 != '\'' && (param_1 != '(')))) &&
      ((param_1 != ')' && ((param_1 != '*' && (param_1 != '+')))))) &&
     ((param_1 != ',' && ((param_1 != ';' && (param_1 != '=')))))) {
    return 0;
  }
  return 1;
}



uint FUN_008a3ff0(char **param_1)

{
  char cVar1;
  char *pcVar2;
  uint uVar3;
  
  pcVar2 = *param_1;
  uVar3 = 0;
  if ((byte)(*pcVar2 - 0x30U) < 10) {
    *param_1 = pcVar2 + 1;
    uVar3 = 1;
    if ((byte)(pcVar2[1] - 0x30U) < 10) {
      *param_1 = pcVar2 + 2;
      cVar1 = pcVar2[2];
      if ((((byte)(cVar1 - 0x30U) < 10) && ('1' < *pcVar2)) &&
         ((*pcVar2 != '2' || (('4' < pcVar2[1] && ((pcVar2[1] != '5' || ('5' < cVar1)))))))) {
LAB_008a4044:
        return (uint)param_1 & 0xffffff00;
      }
    }
    if ((byte)(**param_1 - 0x30U) < 10) {
      *param_1 = *param_1 + 1;
    }
    do {
      pcVar2 = *param_1;
      if ((*pcVar2 != '.') || (*param_1 = pcVar2 + 1, 9 < (byte)(pcVar2[1] - 0x30U))) break;
      *param_1 = pcVar2 + 2;
      if ((byte)(pcVar2[2] - 0x30U) < 10) {
        *param_1 = pcVar2 + 3;
        cVar1 = pcVar2[3];
        if ((((byte)(cVar1 - 0x30U) < 10) && ('1' < pcVar2[1])) &&
           ((pcVar2[1] != '2' || (('4' < pcVar2[2] && ((pcVar2[2] != '5' || ('5' < cVar1))))))))
        goto LAB_008a4044;
      }
      if ((byte)(**param_1 - 0x30U) < 10) {
        *param_1 = *param_1 + 1;
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < 4);
  }
  return (uint)(uVar3 == 4);
}



undefined4 FUN_008a40d0(char param_1)

{
  if (((((param_1 < 'a') || ('z' < param_1)) && (0x19 < (byte)(param_1 + 0xbfU))) &&
      ((9 < (byte)(param_1 - 0x30U) && (param_1 != '-')))) &&
     ((param_1 != '.' && ((param_1 != '_' && (param_1 != '~')))))) {
    return 0;
  }
  return 1;
}



undefined4 FUN_008a4110(char **param_1)

{
  char cVar1;
  char *pcVar2;
  
  *param_1 = *param_1 + 1;
  pcVar2 = *param_1;
  cVar1 = *pcVar2;
  if (((9 < (byte)(cVar1 - 0x30U)) && ((cVar1 < 'a' || ('f' < cVar1)))) &&
     ((cVar1 < 'A' || ('F' < cVar1)))) {
    return 0;
  }
  *param_1 = pcVar2 + 1;
  cVar1 = pcVar2[1];
  if ((((byte)(cVar1 - 0x30U) < 10) || (('`' < cVar1 && (cVar1 < 'g')))) ||
     (('@' < cVar1 && (cVar1 < 'G')))) {
    *param_1 = pcVar2 + 2;
    cVar1 = pcVar2[2];
    if ((((byte)(cVar1 - 0x30U) < 10) || (('`' < cVar1 && (cVar1 < 'g')))) ||
       (('@' < cVar1 && (cVar1 < 'G')))) {
      *param_1 = pcVar2 + 3;
      cVar1 = pcVar2[3];
      if ((((byte)(cVar1 - 0x30U) < 10) || (('`' < cVar1 && (cVar1 < 'g')))) ||
         (('@' < cVar1 && (cVar1 < 'G')))) {
        *param_1 = pcVar2 + 4;
      }
    }
  }
  return 1;
}



bool FUN_008a41c0(char **param_1)

{
  char cVar1;
  char *pcVar2;
  uint uVar3;
  int iVar4;
  bool bVar5;
  
  uVar3 = 0;
  do {
    cVar1 = FUN_008a4110(param_1);
    if (cVar1 == '\0') {
      *param_1 = *param_1 + -1;
      goto LAB_008a4207;
    }
  } while ((**param_1 == ':') && (uVar3 = uVar3 + 1, uVar3 < 6));
  cVar1 = FUN_008a4110(param_1);
  if (cVar1 == '\0') {
    *param_1 = *param_1 + -1;
    if (uVar3 != 0) {
      return false;
    }
    if (**param_1 == ':') {
      pcVar2 = *param_1 + 1;
      *param_1 = pcVar2;
      if (*pcVar2 != ':') {
        return false;
      }
      iVar4 = 5;
    }
    else {
      iVar4 = 6;
    }
  }
  else {
LAB_008a4207:
    pcVar2 = *param_1;
    if ((*pcVar2 != ':') || (pcVar2[1] != ':')) {
      if (uVar3 != 6) {
        return false;
      }
      do {
        *param_1 = *param_1 + -1;
      } while (**param_1 != ':');
      pcVar2 = *param_1 + 1;
      *param_1 = pcVar2;
      cVar1 = FUN_008a4110(param_1);
      if (((cVar1 != '\0') && (**param_1 == ':')) && (cVar1 = FUN_008a4110(param_1), cVar1 != '\0'))
      {
        return true;
      }
      *param_1 = pcVar2;
      cVar1 = FUN_008a3ff0(param_1);
      return cVar1 != '\0';
    }
    *param_1 = pcVar2 + 2;
    if (uVar3 < 4) {
      iVar4 = 4 - uVar3;
    }
    else {
      iVar4 = 0;
    }
  }
  bVar5 = iVar4 != 0;
  for (; iVar4 != 0; iVar4 = iVar4 + -1) {
    cVar1 = FUN_008a4110(param_1);
    if (cVar1 == '\0') {
      return false;
    }
    if (**param_1 != ':') {
      return false;
    }
  }
  if (uVar3 < 5) {
    pcVar2 = *param_1;
    cVar1 = FUN_008a4110(param_1);
    if (((cVar1 != '\0') && (**param_1 == ':')) && (cVar1 = FUN_008a4110(param_1), cVar1 != '\0')) {
      return true;
    }
    *param_1 = pcVar2;
    cVar1 = FUN_008a3ff0(param_1);
    if (cVar1 != '\0') {
      return true;
    }
    *param_1 = pcVar2;
    if (bVar5) {
      return false;
    }
  }
  if (uVar3 < 6) {
    FUN_008a4110(param_1);
  }
  return true;
}



uint FUN_008a4320(char **param_1)

{
  char cVar1;
  char *pcVar2;
  char cVar3;
  char *pcVar4;
  
  *param_1 = *param_1 + 1;
  pcVar4 = *param_1;
  if (*pcVar4 == 'v') {
    pcVar4 = pcVar4 + 1;
    *param_1 = pcVar4;
    cVar1 = *pcVar4;
    pcVar4 = (char *)CONCAT31((int3)((uint)pcVar4 >> 8),cVar1);
    if ((((byte)(cVar1 - 0x30U) < 10) || (('`' < cVar1 && (cVar1 < 'g')))) ||
       (('@' < cVar1 && (cVar1 < 'G')))) {
      do {
        do {
          *param_1 = *param_1 + 1;
          pcVar2 = *param_1;
          cVar1 = *pcVar2;
          pcVar4 = (char *)CONCAT31((int3)((uint)pcVar4 >> 8),cVar1);
        } while ((byte)(cVar1 - 0x30U) < 10);
      } while ((('`' < cVar1) && (cVar1 < 'g')) || (('@' < cVar1 && (cVar1 < 'G'))));
      if (*pcVar2 == '.') {
        *param_1 = pcVar2 + 1;
        cVar1 = pcVar2[1];
        cVar3 = FUN_008a40d0(cVar1);
        if (((cVar3 != '\0') || (pcVar4 = (char *)FUN_008a3fb0(cVar1), (char)pcVar4 != '\0')) ||
           (cVar1 == ':')) {
LAB_008a43b1:
          do {
            *param_1 = *param_1 + 1;
            cVar1 = **param_1;
            if ('`' < cVar1) {
              if (cVar1 < '{') goto LAB_008a43b1;
            }
            if ((((0x19 < (byte)(cVar1 + 0xbfU)) && (9 < (byte)(cVar1 - 0x30U))) &&
                ((((cVar1 != '-' && ((cVar1 != '.' && (cVar1 != '_')))) && (cVar1 != '~')) &&
                 ((((cVar1 != '!' && (cVar1 != '$')) && (cVar1 != '&')) &&
                  (((cVar1 != '\'' && (cVar1 != '(')) &&
                   ((cVar1 != ')' && ((cVar1 != '*' && (cVar1 != '+')))))))))))) &&
               ((cVar1 != ',' && (((cVar1 != ';' && (cVar1 != '=')) && (cVar1 != ':')))))) {
              return CONCAT31((int3)((uint)*param_1 >> 8),1);
            }
          } while( true );
        }
      }
      return (uint)pcVar4 & 0xffffff00;
    }
  }
  return (uint)pcVar4 & 0xffffff00;
}



uint FUN_008a4430(int *param_1)

{
  char cVar1;
  ushort uVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  
  if (*param_1 != -4) {
    if (*param_1 == 0) {
      FUN_00a3fb10();
    }
    iVar6 = *param_1;
    if (*(uint *)(iVar6 + 0x18) < 8) {
      iVar3 = iVar6 + 4;
    }
    else {
      iVar3 = *(int *)(iVar6 + 4);
    }
    if ((uint)(iVar3 + *(int *)(iVar6 + 0x14) * 2) <= (uint)param_1[1]) {
      FUN_00a3fb10();
    }
  }
  param_1[1] = param_1[1] + 2;
  if (*param_1 != -4) {
    if (*param_1 == 0) {
      FUN_00a3fb10();
    }
    iVar6 = *param_1;
    if (*(uint *)(iVar6 + 0x18) < 8) {
      iVar3 = iVar6 + 4;
    }
    else {
      iVar3 = *(int *)(iVar6 + 4);
    }
    if ((uint)(iVar3 + *(int *)(iVar6 + 0x14) * 2) <= (uint)param_1[1]) {
      FUN_00a3fb10();
    }
  }
  uVar2 = *(ushort *)param_1[1];
  if (0x7f < uVar2) {
    uVar2 = FUN_00884ba0(uVar2);
  }
  cVar1 = (char)uVar2;
  if ((byte)(cVar1 + 0xbfU) < 0x1a) {
    iVar6 = cVar1 + -0x37;
  }
  else if ((byte)(cVar1 + 0x9fU) < 0x1a) {
    iVar6 = cVar1 + -0x57;
  }
  else {
    if (9 < (byte)(cVar1 - 0x30U)) {
      return 0xffffffff;
    }
    iVar6 = cVar1 + -0x30;
  }
  if (iVar6 != -1) {
    if (*param_1 != -4) {
      if (*param_1 == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *param_1;
      if (*(uint *)(iVar3 + 0x18) < 8) {
        iVar4 = iVar3 + 4;
      }
      else {
        iVar4 = *(int *)(iVar3 + 4);
      }
      if ((uint)(iVar4 + *(int *)(iVar3 + 0x14) * 2) <= (uint)param_1[1]) {
        FUN_00a3fb10();
      }
    }
    param_1[1] = param_1[1] + 2;
    if (*param_1 != -4) {
      if (*param_1 == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *param_1;
      if (*(uint *)(iVar3 + 0x18) < 8) {
        iVar4 = iVar3 + 4;
      }
      else {
        iVar4 = *(int *)(iVar3 + 4);
      }
      if ((uint)(iVar4 + *(int *)(iVar3 + 0x14) * 2) <= (uint)param_1[1]) {
        FUN_00a3fb10();
      }
    }
    uVar2 = *(ushort *)param_1[1];
    if (0x7f < uVar2) {
      uVar2 = FUN_00884ba0(uVar2);
    }
    cVar1 = (char)uVar2;
    if ((byte)(cVar1 + 0xbfU) < 0x1a) {
      uVar5 = (int)cVar1 - 0x37;
    }
    else if ((byte)(cVar1 + 0x9fU) < 0x1a) {
      uVar5 = (int)cVar1 - 0x57;
    }
    else {
      if (9 < (byte)(cVar1 - 0x30U)) {
        return 0xffffffff;
      }
      uVar5 = (int)cVar1 - 0x30;
    }
    if (uVar5 != 0xffffffff) {
      return iVar6 << 4 | uVar5;
    }
  }
  return 0xffffffff;
}



void __fastcall FUN_008a45c0(undefined4 *param_1)

{
  _free((void *)param_1[0x3f]);
  if (7 < (uint)param_1[0x3e]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x39]);
  }
  param_1[0x3e] = 7;
  param_1[0x3d] = 0;
  *(undefined2 *)(param_1 + 0x39) = 0;
  _free((void *)param_1[0x36]);
  if (7 < (uint)param_1[0x35]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x30]);
  }
  param_1[0x35] = 7;
  param_1[0x34] = 0;
  *(undefined2 *)(param_1 + 0x30) = 0;
  _free((void *)param_1[0x2d]);
  if (7 < (uint)param_1[0x2c]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x27]);
  }
  param_1[0x2c] = 7;
  param_1[0x2b] = 0;
  *(undefined2 *)(param_1 + 0x27) = 0;
  _free((void *)param_1[0x24]);
  if (7 < (uint)param_1[0x23]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x1e]);
  }
  param_1[0x23] = 7;
  param_1[0x22] = 0;
  *(undefined2 *)(param_1 + 0x1e) = 0;
  _free((void *)param_1[0x1b]);
  if (7 < (uint)param_1[0x1a]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x15]);
  }
  param_1[0x1a] = 7;
  param_1[0x19] = 0;
  *(undefined2 *)(param_1 + 0x15) = 0;
  _free((void *)param_1[0x12]);
  if (7 < (uint)param_1[0x11]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xc]);
  }
  param_1[0x11] = 7;
  param_1[0x10] = 0;
  *(undefined2 *)(param_1 + 0xc) = 0;
  _free((void *)param_1[9]);
  if (7 < (uint)param_1[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



int __thiscall FUN_008a4750(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  void **ppvVar2;
  void **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bce34b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_0084b030(&local_14,param_1,param_3,param_2,uVar1);
  local_4._0_1_ = 2;
  FID_conflict_assign(*local_14,local_10);
  local_4 = CONCAT31(local_4._1_3_,1);
  ppvVar2 = (void **)FUN_00850350();
  if (local_14 != ppvVar2) {
    *(short *)(local_14 + 2) = *(short *)(local_14 + 2) + -1;
    if (*(short *)(local_14 + 2) == 0) {
      if (*(char *)((int)local_14 + 10) != '\0') {
        _free(*local_14);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_14);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_008a4830(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bce391;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_14 = wxMBConvUTF8::vftable;
  local_10 = 0;
  local_4 = 1;
  FUN_008a4750(param_2,&local_14,param_3);
  local_4 = local_4 & 0xffffff00;
  FUN_008603c0(uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_008a48c0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00852560(param_1,param_2,param_3);
  return param_1;
}



undefined4 __thiscall FUN_008a48f0(undefined4 param_1_00,byte param_1)

{
  FUN_008a45c0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



bool FUN_008a4910(int param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  bool bVar3;
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  iVar2 = FUN_0043c211(param_2);
  local_4 = 0;
  if (*(int *)(iVar2 + 0x14) == *(int *)(param_1 + 0x14)) {
    iVar2 = FUN_00850760(param_1);
    bVar3 = iVar2 == 0;
  }
  else {
    bVar3 = false;
  }
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  ExceptionList = local_c;
  return !bVar3;
}



void __fastcall FUN_008a49a0(int param_1)

{
  int iVar1;
  int iVar2;
  short sVar3;
  short *psVar4;
  
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    FUN_00432156();
  }
  else {
    psVar4 = (short *)PTR_DAT_03236318;
    do {
      sVar3 = *psVar4;
      psVar4 = psVar4 + 1;
    } while (sVar3 != 0);
    FID_conflict_assign(PTR_DAT_03236318,(int)psVar4 - (int)(PTR_DAT_03236318 + 2) >> 1);
  }
  iVar1 = param_1 + 0x50;
  if (iVar1 != param_1 + 0x74) {
    FID_conflict_assign(param_1 + 0x74,0,0xffffffff);
  }
  iVar2 = param_1 + 0x2c;
  if (iVar2 != iVar1) {
    FID_conflict_assign(iVar1,0,0xffffffff);
  }
  iVar1 = param_1 + 0xe0;
  if (iVar1 != iVar2) {
    FID_conflict_assign(iVar2,0,0xffffffff);
  }
  iVar2 = param_1 + 0xbc;
  if (iVar2 != iVar1) {
    FID_conflict_assign(iVar1,0,0xffffffff);
  }
  iVar1 = param_1 + 0x98;
  if (iVar1 != iVar2) {
    FID_conflict_assign(iVar2,0,0xffffffff);
  }
  if (param_1 + 8 != iVar1) {
    FID_conflict_assign(iVar1,0,0xffffffff);
  }
  *(undefined4 *)(param_1 + 0x108) = 0;
  *(undefined4 *)(param_1 + 0x104) = 0;
  return;
}



void FUN_008a4a70(int param_1,int param_2)

{
  short sVar1;
  uint uVar2;
  int iVar3;
  char cVar4;
  ushort uVar5;
  uint uVar6;
  ushort **ppuVar7;
  int iVar8;
  int iVar9;
  void **ppvVar10;
  int *piVar11;
  void **ppvVar12;
  ushort **ppuVar13;
  ushort **ppuVar14;
  void **local_5c;
  void **local_58;
  int local_54;
  ushort **local_50;
  undefined4 local_4c;
  int local_48;
  undefined local_34 [4];
  uint local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce3e9;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_5c;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  local_48 = param_1;
  local_4c = 0;
  FUN_0084aa50(*(undefined4 *)(param_2 + 0x14));
  uVar2 = *(uint *)(param_2 + 0x18);
  local_5c = (void **)*local_58;
  local_4 = 1;
  if (uVar2 < 8) {
    ppuVar14 = (ushort **)(param_2 + 4);
  }
  else {
    ppuVar14 = *(ushort ***)(param_2 + 4);
  }
  if (ppuVar14 != (ushort **)0x0) {
    ppuVar7 = (ushort **)(param_2 + 4);
    ppuVar13 = ppuVar7;
    if (7 < uVar2) {
      ppuVar13 = (ushort **)*ppuVar7;
    }
    if (ppuVar13 <= ppuVar14) {
      if (7 < uVar2) {
        ppuVar7 = (ushort **)*ppuVar7;
      }
      if (ppuVar14 <= (ushort **)((int)ppuVar7 + *(int *)(param_2 + 0x14) * 2)) goto LAB_008a4b15;
    }
  }
  FUN_00a3fb10(uVar6);
LAB_008a4b15:
  local_54 = param_2;
  iVar8 = param_2;
  do {
    uVar2 = *(uint *)(param_2 + 0x18);
    if (uVar2 < 8) {
      iVar9 = param_2 + 4;
    }
    else {
      iVar9 = *(int *)(param_2 + 4);
    }
    iVar3 = *(int *)(param_2 + 0x14) * 2;
    ppuVar7 = (ushort **)(iVar3 + iVar9);
    local_50 = ppuVar14;
    if (ppuVar7 == (ushort **)0x0) {
LAB_008a4b61:
      FUN_00a3fb10(uVar6);
    }
    else {
      if (uVar2 < 8) {
        ppuVar13 = (ushort **)(param_2 + 4);
      }
      else {
        ppuVar13 = *(ushort ***)(param_2 + 4);
      }
      if (ppuVar7 < ppuVar13) goto LAB_008a4b61;
      if (uVar2 < 8) {
        iVar9 = param_2 + 4;
      }
      else {
        iVar9 = *(int *)(param_2 + 4);
      }
      if ((ushort **)(iVar3 + iVar9) < ppuVar7) goto LAB_008a4b61;
    }
    if ((iVar8 != -4) && ((iVar8 == 0 || (iVar8 != param_2)))) {
      FUN_00a3fb10(uVar6);
    }
    if (ppuVar14 == ppuVar7) {
      *(undefined *)local_5c = 0;
      FUN_008a4830(local_34,*local_58,0xffffffff);
      local_4._0_1_ = 2;
      if (local_20 == 0) {
        FUN_00862e00(1);
        local_4._0_1_ = 3;
        piVar11 = (int *)FUN_008622d0(&local_5c,&local_58);
        local_4._0_1_ = 4;
        FUN_00820ebc(&local_54,*(undefined4 *)*piVar11,((undefined4 *)*piVar11)[1]);
        FID_conflict_assign(local_54,local_50);
        local_4 = CONCAT31(local_4._1_3_,3);
        ppvVar12 = (void **)FUN_00850350();
        ppvVar10 = local_5c;
        if (local_5c != ppvVar12) {
          *(short *)(local_5c + 2) = *(short *)(local_5c + 2) + -1;
          if (*(short *)(local_5c + 2) == 0) {
            if (*(char *)((int)local_5c + 10) != '\0') {
              _free(*local_5c);
            }
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(ppvVar10);
          }
          local_5c = (void **)FUN_00850350();
        }
        local_4._0_1_ = 2;
        FUN_00861510();
      }
      iVar8 = local_48;
      *(undefined4 *)(local_48 + 0x18) = 7;
      *(undefined4 *)(local_48 + 0x14) = 0;
      *(undefined2 *)(local_48 + 4) = 0;
      FID_conflict_assign(local_34,0,0xffffffff);
      *(undefined4 *)(iVar8 + 0x1c) = 0;
      local_4c = 1;
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
      local_1c = 7;
      local_20 = 0;
      local_30 = local_30 & 0xffff0000;
      local_4 = (uint)local_4._1_3_ << 8;
      ppvVar10 = (void **)FUN_00850350();
      if (local_58 == ppvVar10) goto LAB_008a4e1d;
      *(short *)(local_58 + 2) = *(short *)(local_58 + 2) + -1;
      sVar1 = *(short *)(local_58 + 2);
      ppvVar10 = local_58;
      goto LAB_008a4dfa;
    }
    if (iVar8 != -4) {
      if (iVar8 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar8 + 0x18) < 8) {
        iVar9 = iVar8 + 4;
      }
      else {
        iVar9 = *(int *)(iVar8 + 4);
      }
      if ((ushort **)(iVar9 + *(int *)(iVar8 + 0x14) * 2) <= ppuVar14) {
        FUN_00a3fb10();
      }
    }
    uVar5 = *(ushort *)ppuVar14;
    if (0x7f < uVar5) {
      uVar5 = FUN_00884ba0(uVar5);
    }
    cVar4 = (char)uVar5;
    if (cVar4 == '%') {
      iVar8 = FUN_008a4430(&local_54);
      if (iVar8 == -1) {
        *(undefined4 *)(local_48 + 0x18) = 7;
        *(undefined4 *)(local_48 + 0x14) = 0;
        *(undefined2 *)(local_48 + 4) = 0;
        *(undefined4 *)(local_48 + 0x1c) = 0;
        local_4c = 1;
        local_4 = local_4 & 0xffffff00;
        ppvVar10 = (void **)FUN_00850350();
        if (local_58 != ppvVar10) {
          *(short *)(local_58 + 2) = *(short *)(local_58 + 2) + -1;
          sVar1 = *(short *)(local_58 + 2);
          ppvVar10 = local_58;
LAB_008a4dfa:
          if (sVar1 == 0) {
            if (*(char *)((int)ppvVar10 + 10) != '\0') {
              _free(*ppvVar10);
            }
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(ppvVar10);
          }
          FUN_00850350();
        }
LAB_008a4e1d:
        ExceptionList = local_c;
        ___security_check_cookie_4();
        return;
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((iVar8 < 0 || (0xff < iVar8)))) {
        FUN_008402e0("..\\..\\src\\common\\uri.cpp",0x85,"wxURI::Unescape","n >= 0 && n <= 0xff",
                     "unexpected character value");
      }
      cVar4 = (char)iVar8;
      ppuVar14 = local_50;
      iVar8 = local_54;
    }
    *(char *)local_5c = cVar4;
    if (iVar8 != -4) {
      if (iVar8 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar8 + 0x18) < 8) {
        iVar9 = iVar8 + 4;
      }
      else {
        iVar9 = *(int *)(iVar8 + 4);
      }
      if ((ushort **)(iVar9 + *(int *)(iVar8 + 0x14) * 2) <= ppuVar14) {
        FUN_00a3fb10();
      }
    }
    ppuVar14 = (ushort **)((int)ppuVar14 + 2);
    local_5c = (void **)((int)local_5c + 1);
  } while( true );
}



void FUN_008a4e40(undefined4 param_1,byte **param_2)

{
  byte bVar1;
  byte bVar2;
  byte *pbVar3;
  int iVar4;
  undefined4 uVar5;
  
  pbVar3 = *param_2;
  bVar1 = *pbVar3;
  if (bVar1 == 0x25) {
    bVar2 = pbVar3[1];
    if (((((byte)(bVar2 - 0x30) < 10) || (('`' < (char)bVar2 && ((char)bVar2 < 'g')))) ||
        (('@' < (char)bVar2 && ((char)bVar2 < 'G')))) &&
       (((bVar2 = pbVar3[2], (byte)(bVar2 - 0x30) < 10 ||
         (('`' < (char)bVar2 && ((char)bVar2 < 'g')))) ||
        (('@' < (char)bVar2 && ((char)bVar2 < 'G')))))) {
      *param_2 = pbVar3 + 1;
      FUN_0086faf0(0x25);
      bVar1 = **param_2;
      *param_2 = *param_2 + 1;
      FUN_0086faf0(bVar1);
      bVar1 = **param_2;
      *param_2 = *param_2 + 1;
      FUN_0086faf0(bVar1);
      return;
    }
  }
  *param_2 = pbVar3 + 1;
  FID_conflict_append(1,0x25);
  bVar2 = PTR_s_0123456789abcdef_0323750c[bVar1 >> 4];
  if (bVar2 < 0x80) {
    iVar4 = (int)(char)bVar2;
  }
  else {
    iVar4 = FUN_00884ad0(bVar2);
  }
  FID_conflict_append(1,iVar4);
  bVar1 = PTR_s_0123456789abcdef_0323750c[(int)(char)bVar1 & 0xf];
  if (bVar1 < 0x80) {
    FID_conflict_append(1,(int)(char)bVar1);
    return;
  }
  uVar5 = FUN_00884ad0(bVar1);
  FID_conflict_append(1,uVar5);
  return;
}



byte * __thiscall FUN_008a4f50(int param_1_00,byte *param_1)

{
  byte bVar1;
  int iVar2;
  byte *pbVar3;
  byte *pbVar4;
  
  bVar1 = *param_1;
  if ((((char)bVar1 < 'a') || ('z' < (char)bVar1)) && (0x19 < (byte)(bVar1 + 0xbf))) {
    return param_1;
  }
  pbVar3 = param_1;
  if (0x7f < bVar1) goto LAB_008a4f89;
  iVar2 = (int)(char)bVar1;
  while( true ) {
    FID_conflict_append(1,iVar2);
    bVar1 = pbVar3[1];
    pbVar4 = pbVar3 + 1;
    if ((((((char)bVar1 < 'a') || ('z' < (char)bVar1)) &&
         ((0x19 < (byte)(bVar1 + 0xbf) && ((9 < (byte)(bVar1 - 0x30) && (bVar1 != 0x2b)))))) &&
        (bVar1 != 0x2d)) && (bVar1 != 0x2e)) break;
    pbVar3 = pbVar4;
    if (bVar1 < 0x80) {
      iVar2 = (int)(char)bVar1;
    }
    else {
LAB_008a4f89:
      iVar2 = FUN_00884ad0(bVar1);
    }
  }
  if (*pbVar4 != 0x3a) {
    FUN_00432156();
    return param_1;
  }
  *(uint *)(param_1_00 + 0x108) = *(uint *)(param_1_00 + 0x108) | 1;
  return pbVar3 + 2;
}



byte * __thiscall FUN_008a5010(int param_1_00,byte *param_1)

{
  byte bVar1;
  byte *pbVar2;
  int iVar3;
  byte *pbVar4;
  
  pbVar2 = param_1;
  bVar1 = *param_1;
  pbVar4 = param_1;
  while ((((bVar1 != 0 && (bVar1 != 0x40)) && (bVar1 != 0x2f)) &&
         ((bVar1 != 0x23 && (bVar1 != 0x3f))))) {
    if (((((char)bVar1 < 'a') || ('z' < (char)bVar1)) &&
        (((((0x19 < (byte)(bVar1 + 0xbf) && (9 < (byte)(bVar1 - 0x30))) && (bVar1 != 0x2d)) &&
          ((((bVar1 != 0x2e && (bVar1 != 0x5f)) && (bVar1 != 0x7e)) &&
           ((bVar1 != 0x21 && (bVar1 != 0x24)))))) &&
         ((((bVar1 != 0x26 && ((bVar1 != 0x27 && (bVar1 != 0x28)))) && (bVar1 != 0x29)) &&
          ((((bVar1 != 0x2a && (bVar1 != 0x2b)) && (bVar1 != 0x2c)) &&
           ((bVar1 != 0x3b && (bVar1 != 0x3d)))))))))) && (bVar1 != 0x3a)) {
      FUN_008a4e40(param_1_00 + 0x98,&param_1);
      pbVar4 = param_1;
    }
    else {
      pbVar4 = pbVar4 + 1;
      param_1 = pbVar4;
      if (bVar1 < 0x80) {
        iVar3 = (int)(char)bVar1;
      }
      else {
        iVar3 = FUN_00884ad0(bVar1);
      }
      FID_conflict_append(1,iVar3);
    }
    bVar1 = *pbVar4;
  }
  if (*pbVar4 == 0x40) {
    *(uint *)(param_1_00 + 0x108) = *(uint *)(param_1_00 + 0x108) | 2;
    return pbVar4 + 1;
  }
  FUN_00432156();
  return pbVar2;
}



byte * __thiscall FUN_008a5130(int param_1_00,byte *param_1)

{
  byte *pbVar1;
  byte bVar2;
  byte *pbVar3;
  byte *pbVar4;
  char cVar5;
  int iVar6;
  byte *pbVar7;
  
  pbVar3 = param_1;
  pbVar7 = pbVar3;
  if (*param_1 == 0x5b) {
    pbVar1 = param_1 + 1;
    param_1 = pbVar1;
    cVar5 = FUN_008a41c0(&param_1);
    pbVar4 = param_1;
    if ((cVar5 == '\0') || (*param_1 != 0x5d)) {
      param_1 = pbVar1;
      cVar5 = FUN_008a4320(&param_1);
      pbVar4 = param_1;
      if ((cVar5 != '\0') && (*param_1 == 0x5d)) {
        *(undefined4 *)(param_1_00 + 0x104) = 3;
        FUN_0084b140(pbVar1,param_1 + (-1 - (int)pbVar3));
        pbVar7 = pbVar4 + 1;
      }
    }
    else {
      *(undefined4 *)(param_1_00 + 0x104) = 2;
      FUN_0084b140(pbVar1,param_1 + (-1 - (int)pbVar3));
      pbVar7 = pbVar4 + 1;
    }
  }
  else {
    cVar5 = FUN_008a3ff0(&param_1);
    pbVar1 = param_1;
    if (cVar5 != '\0') {
      *(undefined4 *)(param_1_00 + 0x104) = 1;
      FUN_0084b140(pbVar3,(int)param_1 - (int)pbVar3);
      pbVar7 = pbVar1;
    }
  }
  if (*(int *)(param_1_00 + 0x104) == 0) {
    bVar2 = *pbVar3;
    pbVar7 = pbVar3;
    param_1 = pbVar3;
    while ((((bVar2 != 0 && (bVar2 = *pbVar7, bVar2 != 0x2f)) && (bVar2 != 0x3a)) &&
           ((bVar2 != 0x23 && (bVar2 != 0x3f))))) {
      if (((((((char)bVar2 < 'a') || ('z' < (char)bVar2)) &&
            (((0x19 < (byte)(bVar2 + 0xbf) && (9 < (byte)(bVar2 - 0x30))) && (bVar2 != 0x2d)))) &&
           ((((bVar2 != 0x2e && (bVar2 != 0x5f)) && (bVar2 != 0x7e)) &&
            ((bVar2 != 0x21 && (bVar2 != 0x24)))))) &&
          ((bVar2 != 0x26 && ((bVar2 != 0x27 && (bVar2 != 0x28)))))) &&
         ((bVar2 != 0x29 &&
          ((((bVar2 != 0x2a && (bVar2 != 0x2b)) && (bVar2 != 0x2c)) &&
           ((bVar2 != 0x3b && (bVar2 != 0x3d)))))))) {
        FUN_008a4e40(param_1_00 + 0xbc,&param_1);
        pbVar7 = param_1;
      }
      else {
        pbVar7 = pbVar7 + 1;
        param_1 = pbVar7;
        if (bVar2 < 0x80) {
          iVar6 = (int)(char)bVar2;
        }
        else {
          iVar6 = FUN_00884ad0(bVar2);
        }
        FID_conflict_append(1,iVar6);
      }
      bVar2 = *pbVar7;
    }
  }
  *(uint *)(param_1_00 + 0x108) = *(uint *)(param_1_00 + 0x108) | 4;
  return pbVar7;
}



char * __thiscall FUN_008a52f0(int param_1_00,char *param_1)

{
  byte bVar1;
  undefined4 uVar2;
  
  if (*param_1 == ':') {
    while( true ) {
      bVar1 = param_1[1];
      param_1 = param_1 + 1;
      if (9 < (byte)(bVar1 - 0x30)) break;
      if (bVar1 < 0x80) {
        FID_conflict_append(1,(int)(char)bVar1);
      }
      else {
        uVar2 = FUN_00884ad0(bVar1);
        FID_conflict_append(1,uVar2);
      }
    }
    *(uint *)(param_1_00 + 0x108) = *(uint *)(param_1_00 + 0x108) | 8;
  }
  return param_1;
}



byte * __thiscall FUN_008a5360(int param_1_00,byte *param_1)

{
  byte bVar1;
  byte *pbVar2;
  int iVar3;
  byte *pbVar4;
  
  if (*param_1 == 0x3f) {
    bVar1 = param_1[1];
    pbVar4 = param_1 + 1;
    pbVar2 = param_1 + 1;
    while ((param_1 = pbVar4, bVar1 != 0 && (bVar1 != 0x23))) {
      if ((((((((char)bVar1 < 'a') || ('z' < (char)bVar1)) &&
             (((0x19 < (byte)(bVar1 + 0xbf) && (9 < (byte)(bVar1 - 0x30))) && (bVar1 != 0x2d)))) &&
            (((bVar1 != 0x2e && (bVar1 != 0x5f)) && (bVar1 != 0x7e)))) &&
           (((bVar1 != 0x21 && (bVar1 != 0x24)) &&
            ((bVar1 != 0x26 && (((bVar1 != 0x27 && (bVar1 != 0x28)) && (bVar1 != 0x29)))))))) &&
          ((bVar1 != 0x2a && (bVar1 != 0x2b)))) &&
         ((bVar1 != 0x2c &&
          (((bVar1 != 0x3b && (bVar1 != 0x3d)) &&
           ((bVar1 != 0x3a && (((bVar1 != 0x40 && (bVar1 != 0x2f)) && (bVar1 != 0x3f)))))))))) {
        param_1 = pbVar2;
        FUN_008a4e40(param_1_00 + 0x50,&param_1);
        pbVar4 = param_1;
      }
      else {
        pbVar4 = param_1 + 1;
        param_1 = pbVar4;
        if (bVar1 < 0x80) {
          iVar3 = (int)(char)bVar1;
        }
        else {
          iVar3 = FUN_00884ad0(bVar1);
        }
        FID_conflict_append(1,iVar3);
      }
      bVar1 = *pbVar4;
      pbVar2 = param_1;
    }
    *(uint *)(param_1_00 + 0x108) = *(uint *)(param_1_00 + 0x108) | 0x20;
  }
  return param_1;
}



byte * __thiscall FUN_008a5450(int param_1_00,byte *param_1)

{
  byte bVar1;
  int iVar2;
  byte *pbVar3;
  
  pbVar3 = param_1;
  if (*param_1 == 0x23) {
    bVar1 = param_1[1];
    pbVar3 = param_1 + 1;
    if (bVar1 != 0) {
      param_1 = pbVar3;
      do {
        if (((((((char)bVar1 < 'a') || ('z' < (char)bVar1)) && (0x19 < (byte)(bVar1 + 0xbf))) &&
             (((9 < (byte)(bVar1 - 0x30) && (bVar1 != 0x2d)) &&
              ((bVar1 != 0x2e && ((bVar1 != 0x5f && (bVar1 != 0x7e)))))))) &&
            ((bVar1 != 0x21 &&
             ((((((bVar1 != 0x24 && (bVar1 != 0x26)) && (bVar1 != 0x27)) &&
                ((bVar1 != 0x28 && (bVar1 != 0x29)))) &&
               ((bVar1 != 0x2a && ((bVar1 != 0x2b && (bVar1 != 0x2c)))))) && (bVar1 != 0x3b)))))) &&
           ((((bVar1 != 0x3d && (bVar1 != 0x3a)) && (bVar1 != 0x40)) &&
            ((bVar1 != 0x2f && (bVar1 != 0x3f)))))) {
          FUN_008a4e40(param_1_00 + 0x74,&param_1);
          pbVar3 = param_1;
        }
        else {
          pbVar3 = pbVar3 + 1;
          param_1 = pbVar3;
          if (bVar1 < 0x80) {
            iVar2 = (int)(char)bVar1;
          }
          else {
            iVar2 = FUN_00884ad0(bVar1);
          }
          FID_conflict_append(1,iVar2);
        }
        bVar1 = *pbVar3;
      } while (bVar1 != 0);
    }
    *(uint *)(param_1_00 + 0x108) = *(uint *)(param_1_00 + 0x108) | 0x40;
  }
  return pbVar3;
}



void __thiscall FUN_008a5540(int param_1_00,int param_1,byte param_2)

{
  char cVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined local_58 [8];
  undefined local_50 [4];
  int local_4c;
  undefined local_40 [4];
  int local_3c;
  int local_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce458;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     (((*(byte *)(param_1 + 0x108) & 1) == 0 || ((*(uint *)(param_1 + 0x108) >> 2 & 1) == 0)))) {
    FUN_008402e0("..\\..\\src\\common\\uri.cpp",0x28f,"wxURI::Resolve","!base.IsReference()",
                 "wxURI to inherit from must not be a reference!",
                 DAT_0323f878 ^ (uint)&stack0xffffff9c);
  }
  if ((param_2 & 1) == 0) {
    if ((*(byte *)(param_1_00 + 0x108) & 1) == 0) goto LAB_008a55f5;
    if ((((*(byte *)(param_1 + 0x108) & 1) != 0) &&
        (*(int *)(param_1_00 + 0x1c) == *(int *)(param_1 + 0x1c))) &&
       (iVar2 = FUN_00850760(param_1 + 8), iVar2 == 0)) {
      *(int *)(param_1_00 + 0x108) = *(int *)(param_1_00 + 0x108) + -1;
    }
  }
  if ((*(byte *)(param_1_00 + 0x108) & 1) != 0) {
    ExceptionList = local_c;
    return;
  }
LAB_008a55f5:
  if (param_1_00 + 8 != param_1 + 8) {
    FID_conflict_assign(param_1 + 8,0,0xffffffff);
  }
  *(uint *)(param_1_00 + 0x108) = *(uint *)(param_1_00 + 0x108) | 1;
  if ((*(uint *)(param_1_00 + 0x108) >> 2 & 1) == 0) {
    if ((*(uint *)(param_1 + 0x108) >> 1 & 1) != 0) {
      if (param_1_00 + 0x98 != param_1 + 0x98) {
        FID_conflict_assign(param_1 + 0x98,0,0xffffffff);
      }
      *(uint *)(param_1_00 + 0x108) = *(uint *)(param_1_00 + 0x108) | 2;
    }
    if (param_1_00 + 0xbc != param_1 + 0xbc) {
      FID_conflict_assign(param_1 + 0xbc,0,0xffffffff);
    }
    uVar4 = *(undefined4 *)(param_1 + 0x104);
    *(uint *)(param_1_00 + 0x108) = *(uint *)(param_1_00 + 0x108) | 4;
    *(undefined4 *)(param_1_00 + 0x104) = uVar4;
    if ((*(uint *)(param_1 + 0x108) >> 3 & 1) != 0) {
      if (param_1_00 + 0xe0 != param_1 + 0xe0) {
        FID_conflict_assign(param_1 + 0xe0,0,0xffffffff);
      }
      *(uint *)(param_1_00 + 0x108) = *(uint *)(param_1_00 + 0x108) | 8;
    }
    if ((*(uint *)(param_1_00 + 0x108) >> 4 & 1) == 0) {
      if (param_1_00 + 0x2c != param_1 + 0x2c) {
        FID_conflict_assign(param_1 + 0x2c,0,0xffffffff);
      }
      *(uint *)(param_1_00 + 0x108) = *(uint *)(param_1_00 + 0x108) | 0x10;
      if ((*(uint *)(param_1_00 + 0x108) >> 5 & 1) == 0) {
        if (param_1_00 + 0x50 != param_1 + 0x50) {
          FID_conflict_assign(param_1 + 0x50,0,0xffffffff);
        }
        *(uint *)(param_1_00 + 0x108) = *(uint *)(param_1_00 + 0x108) | 0x20;
        ExceptionList = local_c;
        return;
      }
    }
    else {
      if (*(int *)(param_1_00 + 0x40) != 0) {
        uVar4 = 0x2f;
        FUN_0081b5a8(local_58,0);
        cVar1 = FUN_008931c0(uVar4);
        if (cVar1 == '\0') {
          ExceptionList = local_c;
          return;
        }
      }
      FUN_008a3f80(local_40,param_1_00 + 0x2c);
      local_4 = 0;
      FUN_008a3f80(local_50,param_1 + 0x2c);
      local_4._0_1_ = 1;
      if (local_4c != 0) {
        FUN_008543e0(local_4c + -1,1);
      }
      if (local_3c == 0) {
        FUN_0043c211(&PTR_02bd3fc0);
        local_4._0_1_ = 2;
        FUN_00854700(local_30,1);
        local_4._0_1_ = 1;
        FUN_0040159c();
      }
      iVar2 = local_38 + local_3c * 0x24;
      for (iVar3 = local_38; iVar3 != iVar2; iVar3 = iVar3 + 0x24) {
        if ((*(int *)(iVar3 + 0x14) == 0) ||
           (cVar1 = FUN_00855fb0(iVar3,&DAT_00fae794), cVar1 != '\0')) {
          if (iVar3 == iVar2 + -0x24) {
            FUN_0043c211(&PTR_02bd3fc0);
            local_4._0_1_ = 3;
LAB_008a589b:
            FUN_00854700(local_30,1);
            local_4._0_1_ = 1;
            FUN_0040159c();
          }
        }
        else {
          cVar1 = FUN_00855fb0(iVar3,&DAT_00d2814c);
          if (cVar1 == '\0') {
            if (local_4c == 0) {
              FUN_0043c211(&PTR_02bd3fc0);
              local_4._0_1_ = 5;
              FUN_00854700(local_30,1);
              local_4._0_1_ = 1;
              FUN_0040159c();
            }
            FUN_00854700(iVar3,1);
          }
          else if ((local_4c != 0) && (FUN_008543e0(local_4c + -1,1), iVar3 == iVar2 + -0x24)) {
            FUN_0043c211(&PTR_02bd3fc0);
            local_4._0_1_ = 4;
            goto LAB_008a589b;
          }
        }
      }
      iVar2 = FUN_008547f0(local_30,local_50,0x2f,0);
      local_4._0_1_ = 6;
      if (param_1_00 + 0x2c != iVar2) {
        FID_conflict_assign(iVar2,0,0xffffffff);
      }
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
      local_18 = 7;
      local_1c = 0;
      local_2c = local_2c & 0xffff0000;
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00853f30();
      local_4 = 0xffffffff;
      FUN_00853f30();
    }
  }
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_008a5960(int param_1_00,int param_1,code *param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_5c [4];
  uint local_58;
  undefined4 uStack_48;
  uint local_44;
  void *local_40;
  undefined local_38 [4];
  undefined4 uStack_34;
  uint uStack_20;
  void *pvStack_1c;
  undefined4 local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bce4e9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_10 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  local_14 = 1;
  if ((*(byte *)(param_1_00 + 0x108) & 1) != 0) {
    uVar2 = FUN_00853300(local_5c,param_1_00 + 8,&DAT_00d37a38,uVar1);
    local_4 = 1;
    FID_conflict_append(uVar2,0,0xffffffff);
    local_4 = local_4 & 0xffffff00;
    _free(local_40);
    if (7 < local_44) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_58);
    }
  }
  if ((*(uint *)(param_1_00 + 0x108) >> 2 & 1) != 0) {
    FUN_0084b060(&DAT_00d37a34);
    if ((*(uint *)(param_1_00 + 0x108) >> 1 & 1) != 0) {
      uVar2 = (*param_2)(local_38,param_1_00 + 0x98);
      local_4 = 2;
      uVar2 = FUN_00853300(local_5c,uVar2,&DAT_00d37a30);
      local_4._0_1_ = 3;
      FID_conflict_append(uVar2,0,0xffffffff);
      _free(local_40);
      if (7 < local_44) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_58);
      }
      local_44 = 7;
      uStack_48 = 0;
      local_58 = local_58 & 0xffff0000;
      local_4 = (uint)local_4._1_3_ << 8;
      _free(pvStack_1c);
      if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_34);
      }
    }
    if (*(int *)(param_1_00 + 0x104) == 0) {
      uVar2 = (*param_2)(local_38,param_1_00 + 0xbc);
      local_4 = 4;
      FID_conflict_append(uVar2,0,0xffffffff);
      local_4 = local_4 & 0xffffff00;
      _free(pvStack_1c);
      if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_34);
      }
    }
    else {
      FID_conflict_append(param_1_00 + 0xbc,0,0xffffffff);
    }
    if ((*(uint *)(param_1_00 + 0x108) >> 3 & 1) != 0) {
      uVar2 = FUN_008534d0(local_38,&DAT_00d37a38,param_1_00 + 0xe0);
      local_4 = 5;
      FID_conflict_append(uVar2,0,0xffffffff);
      local_4 = local_4 & 0xffffff00;
      _free(pvStack_1c);
      if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_34);
      }
    }
  }
  uVar2 = (*param_2)(local_38,param_1_00 + 0x2c);
  local_4 = 6;
  FID_conflict_append(uVar2,0,0xffffffff);
  local_4 = local_4 & 0xffffff00;
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_34);
  }
  if ((*(uint *)(param_1_00 + 0x108) >> 5 & 1) != 0) {
    uVar2 = (*param_2)(local_38,param_1_00 + 0x50);
    local_4 = 7;
    uVar2 = FUN_008534d0(local_5c,&DAT_00d24af0,uVar2);
    local_4._0_1_ = 8;
    FID_conflict_append(uVar2,0,0xffffffff);
    _free(local_40);
    if (7 < local_44) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_58);
    }
    local_44 = 7;
    uStack_48 = 0;
    local_58 = local_58 & 0xffff0000;
    local_4 = (uint)local_4._1_3_ << 8;
    _free(pvStack_1c);
    if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_34);
    }
  }
  if ((*(uint *)(param_1_00 + 0x108) >> 6 & 1) != 0) {
    uVar2 = (*param_2)(local_38,param_1_00 + 0x74);
    local_4 = 9;
    uVar2 = FUN_008534d0(local_5c,&DAT_00d37a2c,uVar2);
    local_4 = CONCAT31(local_4._1_3_,10);
    FID_conflict_append(uVar2,0,0xffffffff);
    _free(local_40);
    if (7 < local_44) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_58);
    }
    local_44 = 7;
    uStack_48 = 0;
    local_58 = local_58 & 0xffff0000;
    _free(pvStack_1c);
    if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_34);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



char * __thiscall FUN_008a5d40(int param_1_00,char *param_1)

{
  char cVar1;
  undefined4 uVar2;
  char *pcVar3;
  
  if ((*param_1 == '/') && (param_1[1] == '/')) {
    param_1 = param_1 + 2;
    cVar1 = FUN_008a4910(param_1_00 + 8,&DAT_00d1fa70);
    if (cVar1 != '\0') {
      uVar2 = FUN_008a5010(param_1);
      uVar2 = FUN_008a5130(uVar2);
      pcVar3 = (char *)FUN_008a52f0(uVar2);
      return pcVar3;
    }
  }
  return param_1;
}



// WARNING: Removing unreachable block (ram,0x008a5e12)

void __thiscall FUN_008a5d90(int param_1_00,byte *param_1)

{
  byte bVar1;
  bool bVar2;
  int iVar3;
  void **ppvVar4;
  char cVar5;
  uint uVar6;
  undefined4 uVar7;
  undefined auStack_78 [3];
  char local_75;
  byte *local_74;
  undefined4 local_70;
  int local_6c;
  undefined local_68 [4];
  int local_64;
  int local_60;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce538;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_78;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  bVar1 = *param_1;
  local_74 = param_1;
  local_6c = param_1_00;
  if (((bVar1 != 0) && (bVar1 != 0x23)) && (bVar1 != 0x3f)) {
    local_75 = bVar1 == 0x2f;
    ppvVar4 = &local_c;
    if ((bool)local_75) {
      param_1 = param_1 + 1;
      local_70 = CONCAT31(local_70._1_3_,0x2f);
      local_4 = 0xffffffff;
      puStack_8 = &LAB_00bce538;
      ExceptionList = &local_c;
      local_74 = param_1;
      FID_conflict_append(1,0x2f);
      ppvVar4 = (void **)ExceptionList;
    }
    ExceptionList = ppvVar4;
    FUN_00853ce0(0);
    local_1c = 7;
    local_20 = 0;
    local_30 = (uint)local_30._2_2_ << 0x10;
    local_18 = (void *)0x0;
    local_4._0_1_ = 1;
    local_4._1_3_ = 0;
LAB_008a5e60:
    while (((bVar1 = *param_1, bVar1 != 0 && (bVar1 != 0x23)) && (bVar1 != 0x3f))) {
      bVar2 = false;
      if (bVar1 == 0x2f) goto LAB_008a5f42;
      if ((((((char)bVar1 < 'a') || ('z' < (char)bVar1)) &&
           (((0x19 < (byte)(bVar1 + 0xbf) &&
             ((((9 < (byte)(bVar1 - 0x30) && (bVar1 != 0x2d)) && (bVar1 != 0x2e)) &&
              ((bVar1 != 0x5f && (bVar1 != 0x7e)))))) && (bVar1 != 0x21)))) &&
          ((bVar1 != 0x24 && (bVar1 != 0x26)))) &&
         ((((bVar1 != 0x27 && (((bVar1 != 0x28 && (bVar1 != 0x29)) && (bVar1 != 0x2a)))) &&
           ((((bVar1 != 0x2b && (bVar1 != 0x2c)) && (bVar1 != 0x3b)) &&
            ((bVar1 != 0x3d && (bVar1 != 0x3a)))))) && (bVar1 != 0x40)))) {
        FUN_008a4e40(local_34,&local_74);
        param_1 = local_74;
      }
      else {
        param_1 = param_1 + 1;
        local_70 = CONCAT31(local_70._1_3_,bVar1);
        local_74 = param_1;
        if (bVar1 < 0x80) {
          FID_conflict_append(1,(int)(char)bVar1);
        }
        else {
          uVar7 = FUN_00884ad0(local_70,uVar6);
          FID_conflict_append(1,uVar7);
        }
      }
    }
    bVar2 = true;
LAB_008a5f42:
    cVar5 = FUN_00855fb0(local_34,&DAT_00d2814c);
    if (cVar5 == '\0') {
      cVar5 = FUN_00855fb0(local_34,&DAT_00fae794);
      if (cVar5 == '\0') {
        FUN_00854700(local_34,1);
        goto LAB_008a60af;
      }
      if (bVar2) {
        FUN_0043c211(&PTR_02bd3fc0);
        local_4._0_1_ = 3;
        FUN_00854700(local_58,1);
        local_4._0_1_ = 1;
        _free(local_3c);
        if (7 < local_40) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_54);
        }
        goto LAB_008a60af;
      }
    }
    else {
      if ((local_64 == 0) ||
         (cVar5 = FUN_008a4910(local_60 + -0x24 + local_64 * 0x24,&DAT_00d2814c), cVar5 == '\0')) {
        if (local_75 == '\0') {
          FUN_0043c211(&DAT_00d2814c);
          local_4._0_1_ = 2;
          FUN_00854700(local_58,1);
          local_4._0_1_ = 1;
          _free(local_3c);
          if (7 < local_40) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_54);
          }
        }
      }
      else {
        FUN_008543e0(local_64 + -1,1);
      }
LAB_008a60af:
      if (bVar2) goto LAB_008a60c6;
    }
    FUN_00432156();
    param_1 = param_1 + 1;
    local_74 = param_1;
    goto LAB_008a5e60;
  }
LAB_008a6174:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
LAB_008a60c6:
  uVar7 = FUN_008547f0(local_58,local_68,0x2f,0);
  iVar3 = local_6c;
  local_4 = CONCAT31(local_4._1_3_,4);
  FID_conflict_append(uVar7,0,0xffffffff);
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  *(uint *)(iVar3 + 0x108) = *(uint *)(iVar3 + 0x108) | 0x10;
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_4 = 0xffffffff;
  FUN_00853f30();
  goto LAB_008a6174;
}



undefined4 FUN_008a61a0(undefined4 param_1)

{
  int iVar1;
  char *pcVar2;
  
  iVar1 = FUN_008a4f50(param_1);
  if (iVar1 != 0) {
    iVar1 = FUN_008a5d40(iVar1);
    if (iVar1 != 0) {
      iVar1 = FUN_008a5d90(iVar1);
      if (iVar1 != 0) {
        iVar1 = FUN_008a5360(iVar1);
        if (iVar1 != 0) {
          pcVar2 = (char *)FUN_008a5450(iVar1);
          if ((pcVar2 != (char *)0x0) && (*pcVar2 == '\0')) {
            return 1;
          }
        }
      }
    }
  }
  return 0;
}



undefined __thiscall FUN_008a6200(int param_1_00,void **param_1)

{
  void **ppvVar1;
  undefined uVar2;
  undefined4 *puVar3;
  void **ppvVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce568;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x108) != 0) {
    FUN_008a49a0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  puVar3 = (undefined4 *)FUN_0081d19a(&param_1);
  local_4 = 0;
  uVar2 = FUN_008a61a0(*(undefined4 *)*puVar3);
  local_4 = 0xffffffff;
  ppvVar4 = (void **)FUN_00850350();
  ppvVar1 = param_1;
  if (param_1 != ppvVar4) {
    *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + -1;
    if (*(short *)(param_1 + 2) == 0) {
      if (*(char *)((int)param_1 + 10) != '\0') {
        _free(*param_1);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar1);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return uVar2;
}



undefined4 * __thiscall FUN_008a62c0(undefined4 *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bce5ee;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxURI::vftable;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  param_1_00[9] = 0;
  param_1_00[0x11] = 7;
  param_1_00[0x10] = 0;
  *(undefined2 *)(param_1_00 + 0xc) = 0;
  param_1_00[0x12] = 0;
  param_1_00[0x1a] = 7;
  param_1_00[0x19] = 0;
  *(undefined2 *)(param_1_00 + 0x15) = 0;
  param_1_00[0x1b] = 0;
  param_1_00[0x23] = 7;
  param_1_00[0x22] = 0;
  *(undefined2 *)(param_1_00 + 0x1e) = 0;
  param_1_00[0x24] = 0;
  param_1_00[0x2c] = 7;
  param_1_00[0x2b] = 0;
  *(undefined2 *)(param_1_00 + 0x27) = 0;
  param_1_00[0x2d] = 0;
  param_1_00[0x35] = 7;
  param_1_00[0x34] = 0;
  *(undefined2 *)(param_1_00 + 0x30) = 0;
  param_1_00[0x36] = 0;
  param_1_00[0x3e] = 7;
  param_1_00[0x3d] = 0;
  *(undefined2 *)(param_1_00 + 0x39) = 0;
  param_1_00[0x3f] = 0;
  param_1_00[0x41] = 0;
  param_1_00[0x42] = 0;
  local_4 = 7;
  FUN_008a6200(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



int FUN_008a63c0(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  char cVar2;
  
  iVar1 = DAT_032bdd94;
  if (DAT_032bdd94 == 0) {
    FUN_008c0470();
    iVar1 = DAT_032bdd94;
  }
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    cVar2 = FUN_00884650(param_1,param_2);
    if (cVar2 != '\0') break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  return iVar1;
}



void __thiscall FUN_008a6410(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[1] = param_1;
  *param_1_00 = wxTimerImpl::vftable;
  param_1_00[2] = 0;
  param_1_00[3] = 0xffffffff;
  param_1_00[4] = 0;
  *(undefined *)(param_1_00 + 5) = 0;
  return;
}



void __thiscall FUN_008a6440(int param_1_00,undefined4 param_1,int param_2)

{
  *(undefined4 *)(param_1_00 + 8) = param_1;
  if (param_2 == -1) {
    param_2 = FUN_0089f690();
  }
  *(int *)(param_1_00 + 0xc) = param_2;
  return;
}



undefined4 __thiscall FUN_008a6460(int *param_1,int param_2,undefined param_3)

{
  char cVar1;
  DWORD DVar2;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bdb68 != 0)) {
    DVar2 = GetCurrentThreadId();
    if (DVar2 != DAT_032bdb68) {
      FUN_00840480("..\\..\\src\\common\\timerimpl.cpp",0x3d,"wxTimerImpl::Start",
                   "wxThread::IsMain()",L"timer can only be started from the main thread");
    }
  }
  cVar1 = (**(code **)(*param_1 + 0xc))();
  if (cVar1 != '\0') {
    (**(code **)(*param_1 + 8))();
  }
  if (param_2 != -1) {
    param_1[4] = param_2;
    *(undefined *)(param_1 + 5) = param_3;
    return 1;
  }
  *(undefined *)(param_1 + 5) = param_3;
  return 1;
}



undefined4 * __thiscall FUN_008a64e0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2968;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = DAT_032bdb64;
  uVar1 = FUN_0086bb20(DAT_032bdb64,DAT_0323f878 ^ (uint)&stack0xffffffe8);
  FUN_00845a20(uVar1,uVar2);
  local_4 = 0;
  *param_1_00 = wxTimerEvent::vftable;
  param_1_00[10] = param_1;
  uVar2 = FUN_0086b9a0();
  param_1_00[2] = uVar2;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_008a6560(int param_1)

{
  uint uVar1;
  undefined **local_38 [11];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd68e8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_008a64e0(*(undefined4 *)(param_1 + 4));
  local_4 = 0;
  FUN_00845dc0(local_38);
  local_4 = 0xffffffff;
  local_38[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 FUN_008a65e0(void)

{
  return DAT_032bdd90;
}



void FUN_008a65f0(undefined4 param_1)

{
  DAT_032bdd90 = param_1;
  return;
}



undefined4 FUN_008a6600(undefined4 param_1)

{
  void *local_14;
  code *pcStack_10;
  uint local_c;
  undefined4 local_8;
  
  pcStack_10 = __except_handler4;
  local_14 = ExceptionList;
  local_c = DAT_0323f878 ^ 0x30f2a80;
  if ((DAT_032bdd8c != '\0') && (DAT_032bcb68 != (int *)0x0)) {
    DAT_032bdd88 = param_1;
    local_8 = 0;
    ExceptionList = &local_14;
    (**(code **)(*DAT_032bcb68 + 0x70))();
    DAT_032bdd88 = 0;
    ExceptionList = local_14;
    return 1;
  }
  return 0;
}



void FUN_008a6700(undefined4 param_1,undefined4 param_2)

{
  void *local_14;
  code *pcStack_10;
  uint local_c;
  undefined4 local_8;
  
  local_8 = 0xfffffffe;
  pcStack_10 = __except_handler4;
  local_14 = ExceptionList;
  local_c = DAT_0323f878 ^ 0x30f2aa0;
  ExceptionList = &local_14;
  FUN_00a492bd(&LAB_008a66b0);
  local_8 = 0;
  FUN_008c0bd0(param_1,param_2);
  ExceptionList = local_14;
  return;
}



long FUN_008a6790(void)

{
  long local_4;
  
  __tzset();
  __get_timezone(&local_4);
  return local_4;
}



void FUN_008a67b0(__time64_t *param_1,int *param_2)

{
  tm *ptVar1;
  int iVar2;
  
  ptVar1 = __localtime64(param_1);
  if (ptVar1 == (tm *)0x0) {
    return;
  }
  for (iVar2 = 9; iVar2 != 0; iVar2 = iVar2 + -1) {
    *param_2 = ptVar1->tm_sec;
    ptVar1 = (tm *)&ptVar1->tm_min;
    param_2 = param_2 + 1;
  }
  return;
}



void FUN_008a67e0(__time64_t *param_1,int *param_2)

{
  tm *ptVar1;
  int iVar2;
  
  ptVar1 = __gmtime64(param_1);
  if (ptVar1 == (tm *)0x0) {
    return;
  }
  ptVar1 = __gmtime64(param_1);
  for (iVar2 = 9; iVar2 != 0; iVar2 = iVar2 + -1) {
    *param_2 = ptVar1->tm_sec;
    ptVar1 = (tm *)&ptVar1->tm_min;
    param_2 = param_2 + 1;
  }
  return;
}



uint * FUN_008a6810(uint *param_1)

{
  uint uVar1;
  undefined8 uVar2;
  _FILETIME local_8;
  
  GetSystemTimeAsFileTime(&local_8);
  *param_1 = 0;
  *param_1 = *param_1 | local_8.dwLowDateTime;
  uVar2 = __alldiv(*param_1,local_8.dwHighDateTime,10000,0);
  *param_1 = (uint)uVar2;
  uVar1 = *param_1;
  *param_1 = *param_1 + 0xcf499800;
  param_1[1] = (uint)((ulonglong)uVar2 >> 0x20);
  param_1[1] = (param_1[1] - 0xa98) + (uint)(0x30b667ff < uVar1);
  return param_1;
}



void FUN_008a6860(int *param_1)

{
  uint uVar1;
  undefined8 uVar2;
  int local_c;
  _FILETIME local_8;
  
  __tzset();
  __get_timezone(&local_c);
  GetSystemTimeAsFileTime(&local_8);
  uVar2 = __alldiv(local_8.dwLowDateTime,local_8.dwHighDateTime,10000,0);
  uVar1 = (uint)uVar2 + local_c * -1000;
  param_1[1] = ((((int)((ulonglong)uVar2 >> 0x20) - (local_c * 1000 >> 0x1f)) -
                (uint)((uint)uVar2 < (uint)(local_c * 1000))) + -0xa97) - (uint)(uVar1 < 0x30b66800)
  ;
  *param_1 = uVar1 + 0xcf499800;
  return;
}



undefined4 * __thiscall FUN_008a68d0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_00883ea0(param_1);
  *param_1_00 = wxArchiveInputStream::vftable;
  param_1_00[9] = param_2;
  return param_1_00;
}



undefined4 * __thiscall FUN_008a68f0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_00883ed0(param_1);
  *param_1_00 = wxArchiveInputStream::vftable;
  param_1_00[9] = param_2;
  return param_1_00;
}



undefined4 * __thiscall FUN_008a6910(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_00883f90(param_1);
  *param_1_00 = wxArchiveOutputStream::vftable;
  param_1_00[6] = param_2;
  return param_1_00;
}



undefined4 * __thiscall FUN_008a6930(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_00883fb0(param_1);
  *param_1_00 = wxArchiveOutputStream::vftable;
  param_1_00[6] = param_2;
  return param_1_00;
}



void __fastcall FUN_008a6950(int param_1)

{
  int *piVar1;
  
  if (*(int *)(param_1 + 0xc) != param_1) {
    piVar1 = &DAT_032bdd94;
    if (DAT_032bdd94 != param_1) {
      do {
        piVar1 = (int *)(*piVar1 + 0xc);
      } while (*piVar1 != param_1);
    }
    *piVar1 = *(int *)(param_1 + 0xc);
    *(int *)(param_1 + 0xc) = param_1;
  }
  return;
}



undefined ** FUN_008a6980(void)

{
  return &PTR_u_wxZlibClassFactory_032375fc;
}



undefined ** FUN_008a6990(int param_1)

{
  if (param_1 == 1) {
    return &PTR_u_application_x_deflate_03237558;
  }
  if (param_1 != 2) {
    return (undefined **)&DAT_032bdd98;
  }
  return &PTR_u_deflate_03237560;
}



undefined ** FUN_008a69c0(void)

{
  return &PTR_u_wxGzipClassFactory_03237614;
}



undefined ** FUN_008a69d0(undefined4 param_1)

{
  switch(param_1) {
  case 0:
    return &PTR_u_gzip_03237588;
  case 1:
    return &PTR_u_application_gzip_0323757c;
  case 2:
    return &PTR_u_gzip_03237574;
  case 3:
    return &PTR_DAT_03237568;
  default:
    return (undefined **)&DAT_032bdd9c;
  }
}



void __fastcall FUN_008a6a20(undefined4 *param_1)

{
  *param_1 = wxZlibInputStream::vftable;
  FUN_008efcd0(param_1[0xb]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[0xb]);
}



undefined4 FUN_008a6a50(void)

{
  char *pcVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  
  iVar4 = 0x2e;
  pcVar1 = (char *)FUN_008efd20();
  pcVar1 = _strchr(pcVar1,iVar4);
  uVar2 = FUN_008efd20();
  iVar4 = FUN_00a4ca1a(uVar2);
  if (pcVar1 == (char *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_00a4ca1a(pcVar1 + 1);
  }
  if ((iVar4 < 2) && ((iVar4 != 1 || (iVar3 < 2)))) {
    return 0;
  }
  return 1;
}



void __fastcall FUN_008a6aa0(undefined4 *param_1)

{
  *param_1 = wxZlibInputStream::vftable;
  FUN_008efcd0(param_1[0xb]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[0xb]);
}



undefined4 __fastcall FUN_008a6af0(int *param_1)

{
  char cVar1;
  
  (**(code **)(*param_1 + 0x44))(1);
  FUN_008ed420(param_1[8]);
  if (param_1[8] != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[8]);
  }
  if (param_1[7] != 0) {
    FUN_00a3f66c(param_1[7]);
    param_1[7] = 0;
  }
  cVar1 = FUN_008832a0();
  if (cVar1 != '\0') {
    cVar1 = (**(code **)(*param_1 + 0x10))();
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



undefined4 * __fastcall FUN_008a6b60(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1[1] = 0;
  param_1[2] = param_1;
  local_4 = 0;
  *param_1 = wxZlibClassFactory::vftable;
  if (param_1 == (undefined4 *)&DAT_032bdda0) {
    FUN_008832c0(uVar1);
    puRam032bdda8 = DAT_032bdba4;
    DAT_032bdba4 = &DAT_032bdda0;
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __fastcall FUN_008a6bd0(undefined4 *param_1)

{
  char cVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1[1] = 0;
  param_1[2] = param_1;
  local_4 = 0;
  *param_1 = wxGzipClassFactory::vftable;
  if (param_1 == (undefined4 *)&DAT_032bddac) {
    cVar1 = FUN_008a6a50(uVar2);
    if (cVar1 != '\0') {
      FUN_008832c0();
      puRam032bddb4 = DAT_032bdba4;
      DAT_032bdba4 = &DAT_032bddac;
    }
  }
  ExceptionList = local_c;
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0xc);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_008a6b60(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0xc);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_008a6bd0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_008a6d30(int param_1)

{
  _free(*(void **)(param_1 + 100));
  if (7 < *(uint *)(param_1 + 0x60)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x4c));
  }
  *(undefined4 *)(param_1 + 0x60) = 7;
  *(undefined4 *)(param_1 + 0x5c) = 0;
  *(undefined2 *)(param_1 + 0x4c) = 0;
  _free(*(void **)(param_1 + 0x40));
  if (7 < *(uint *)(param_1 + 0x3c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x28));
  }
  *(undefined4 *)(param_1 + 0x3c) = 7;
  *(undefined4 *)(param_1 + 0x38) = 0;
  *(undefined2 *)(param_1 + 0x28) = 0;
  _free(*(void **)(param_1 + 0x1c));
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  return;
}



int __thiscall
FUN_008a6dd0(int param_1_00,int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            int param_5,int param_6)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bce62e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x3c) = 7;
  *(undefined4 *)(param_1_00 + 0x38) = 0;
  *(undefined2 *)(param_1_00 + 0x28) = 0;
  *(undefined4 *)(param_1_00 + 0x40) = 0;
  *(undefined4 *)(param_1_00 + 0x60) = 7;
  *(undefined4 *)(param_1_00 + 0x5c) = 0;
  *(undefined2 *)(param_1_00 + 0x4c) = 0;
  *(undefined4 *)(param_1_00 + 100) = 0;
  local_4 = 2;
  if (param_1_00 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  *(undefined4 *)(param_1_00 + 0x74) = param_4;
  *(undefined4 *)(param_1_00 + 0x6c) = param_2;
  *(undefined4 *)(param_1_00 + 0x70) = param_3;
  if (param_1_00 + 0x24 != param_5) {
    FID_conflict_assign(param_5,0,0xffffffff);
  }
  if (param_1_00 + 0x48 != param_6) {
    FID_conflict_assign(param_6,0,0xffffffff);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_008a6eb0(int param_1,int param_2)

{
  char cVar1;
  undefined4 uVar2;
  void *_Dst;
  int iVar3;
  uint uStack_14c;
  void *pvStack_148;
  uint uStack_100;
  void *pvStack_fc;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bce6a5;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x2c) = 0;
  uVar2 = FUN_00823c23();
  *(undefined4 *)(param_1 + 0x28) = uVar2;
  *(undefined4 *)(param_1 + 0x24) = 0x4000;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined4 *)(param_1 + 0x34) = 0;
  if (((param_2 == 2) || (param_2 == 3)) && (cVar1 = FUN_008a6a50(), cVar1 == '\0')) {
    if (param_2 != 3) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        uStack_4 = 0;
        FUN_0043c211();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        uStack_4._0_1_ = 2;
        FUN_008423d0();
        uStack_4._0_1_ = 3;
        FUN_008854f0();
        FUN_0083fe90();
        uStack_4._0_1_ = 2;
        FUN_00842440();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      goto LAB_008a722d;
    }
    param_2 = 1;
  }
  if (*(int *)(param_1 + 0x28) != 0) {
    _Dst = operator_new(0x38);
    *(void **)(param_1 + 0x2c) = _Dst;
    if (_Dst != (void *)0x0) {
      _memset(_Dst,0,0x38);
      switch(param_2) {
      case 0:
        break;
      case 1:
        break;
      case 2:
        break;
      case 3:
        break;
      default:
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480();
        }
      }
      iVar3 = FUN_008ee5e0();
      if (iVar3 == 0) {
        ExceptionList = local_c;
        return;
      }
    }
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(1);
  if (cVar1 != '\0') {
    FUN_004325b6();
    uStack_4 = 4;
    FUN_0043c211();
    uStack_4 = CONCAT31(uStack_4._1_3_,5);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    uStack_4._0_1_ = 6;
    FUN_008423d0();
    uStack_4._0_1_ = 7;
    FUN_008854f0();
    FUN_0083fe90();
    uStack_4._0_1_ = 6;
    FUN_00842440();
    uStack_4 = CONCAT31(uStack_4._1_3_,5);
    FUN_0081b5bc();
    _free(pvStack_148);
    if (7 < uStack_14c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(pvStack_fc);
    if (7 < uStack_100) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
LAB_008a722d:
  *(undefined4 *)(param_1 + 0xc) = 3;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008a7260(int *param_1,undefined4 param_2,int param_3)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  undefined4 uVar4;
  uint uVar5;
  int iVar6;
  undefined4 uStack_248;
  undefined4 uStack_244;
  char *pcStack_240;
  undefined4 uStack_23c;
  char *pcStack_238;
  char *pcStack_234;
  char *pcStack_230;
  char *pcStack_22c;
  wchar_t *pwStack_228;
  uint uStack_224;
  char **ppcStack_210;
  undefined auStack_20c [20];
  char acStack_1f8 [20];
  undefined auStack_1e4 [20];
  undefined auStack_1d0 [36];
  undefined auStack_1ac [36];
  undefined auStack_188 [36];
  undefined auStack_164 [36];
  undefined auStack_140 [36];
  undefined auStack_11c [36];
  char acStack_f8 [216];
  int iStack_20;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bce767;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&ppcStack_210;
  uStack_224 = DAT_0323f878 ^ (uint)&stack0xfffffde0;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((param_1[0xb] == 0 || (param_1[10] == 0)))) {
    pwStack_228 = L"Inflate stream not open";
    pcStack_22c = "m_inflate && m_z_buffer";
    pcStack_230 = "wxZlibInputStream::OnSysRead";
    pcStack_234 = (char *)0xc0;
    pcStack_238 = "..\\..\\src\\common\\zstream.cpp";
    uStack_23c = 0x8a72cf;
    FUN_00840480();
  }
  if ((param_1[0xb] == 0) || (param_1[10] == 0)) {
    param_1[3] = 3;
  }
  pwStack_228 = L"삄萏Г";
  cVar3 = (**(code **)(*param_1 + 0x10))();
  if ((cVar3 == '\0') || (param_3 == 0)) goto LAB_008a7709;
  *(undefined4 *)(param_1[0xb] + 0xc) = param_2;
  iVar6 = 0;
  *(int *)(param_1[0xb] + 0x10) = param_3;
  do {
    if (*(int *)(param_1[0xb] + 0x10) == 0) break;
    if (*(int *)(param_1[0xb] + 4) == 0) {
      pwStack_228 = 
      L"삄⩴䚋謤ᱎᆋ劋倬䚋倨틿䚋謬⡎ࢉ事謜謑あ탿事褬с嚋匬\xe852瑖\x04\xf88b쒃㬈瓽莨ﯿ萏ɳ"
      ;
      cVar3 = (**(code **)(*(int *)param_1[7] + 0x10))();
      if (cVar3 != '\0') {
        pwStack_228 = (wchar_t *)param_1[9];
        pcStack_22c = (char *)param_1[10];
        pcStack_230 = (char *)0x8a7348;
        (**(code **)(*(int *)param_1[7] + 0x2c))();
        *(int *)param_1[0xb] = param_1[10];
        pcStack_230 = (char *)0x8a735a;
        uVar4 = (**(code **)(*(int *)param_1[7] + 0x30))();
        *(undefined4 *)(param_1[0xb] + 4) = uVar4;
      }
    }
    pcStack_22c = (char *)param_1[0xb];
    pwStack_228 = (wchar_t *)0x2;
    pcStack_230 = (char *)0x8a736a;
    iVar6 = FUN_008ee7c0();
  } while (iVar6 == 0);
  if (iVar6 == -5) {
    param_1[3] = 3;
    pwStack_228 = L"삄萏ê";
    cVar3 = (**(code **)(*(int *)param_1[7] + 0x38))();
    if (cVar3 != '\0') {
      ppcStack_210 = (char **)&uStack_248;
      FUN_0043c211(&DAT_00d25fa0);
      cVar3 = FUN_00846b30(1);
      if (cVar3 != '\0') {
        pwStack_228 = (wchar_t *)PTR_DAT_03236318;
        pcStack_22c = (char *)0x8a7640;
        FUN_004325b6();
        pwStack_228 = L"Can\'t read inflate stream: unexpected EOF in underlying stream.";
        uStack_4 = 0;
        pcStack_22c = (char *)0x8a7655;
        FUN_0043c211();
        pwStack_228 = (wchar_t *)auStack_164;
        pcStack_22c = auStack_1ac;
        uStack_4._0_1_ = 1;
        pcStack_230 = (char *)0x8a766f;
        pwStack_228 = (wchar_t *)FUN_00820bf9();
        pcStack_22c = (char *)0x8a767c;
        FUN_008433c0();
        pwStack_228 = (wchar_t *)&DAT_00d25fa0;
        pcStack_22c = "wxZlibInputStream::OnSysRead";
        pcStack_230 = (char *)0xed;
        pcStack_234 = "..\\..\\src\\common\\zstream.cpp";
        pcStack_238 = (char *)0x1;
        uStack_4._0_1_ = 2;
        uStack_23c = 0x8a76a5;
        FUN_008423d0();
        pwStack_228 = (wchar_t *)auStack_1e4;
        uStack_4._0_1_ = 3;
        pcStack_22c = (char *)0x8a76b9;
        FUN_00840b80();
        uStack_4._0_1_ = 2;
        pwStack_228 = (wchar_t *)0x8a76cc;
        FUN_00842440();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        pwStack_228 = L"䲍砤뛨떞跿⒌À";
        FUN_0081b5bc();
        pwStack_228 = L"貍쀤";
        FUN_0040159c();
        goto LAB_008a76ed;
      }
    }
  }
  else if (iVar6 != 0) {
    if (iVar6 == 1) {
      if (*(int *)(param_1[0xb] + 0x10) != 0) {
        if (*(int *)(param_1[0xb] + 4) != 0) {
          *(undefined4 *)(param_1[7] + 0xc) = 0;
          pwStack_228 = (wchar_t *)((char **)param_1[0xb])[1];
          pcStack_22c = *(char **)param_1[0xb];
          pcStack_230 = (char *)0x8a75ca;
          FUN_00882f30();
          *(undefined4 *)(param_1[0xb] + 4) = 0;
        }
        param_1[3] = 1;
        uVar5 = param_3 - *(int *)(param_1[0xb] + 0x10);
        puVar1 = (uint *)(param_1 + 0xc);
        uVar2 = *puVar1;
        *puVar1 = *puVar1 + uVar5;
        param_1[0xd] = param_1[0xd] + (uint)CARRY4(uVar2,uVar5);
        goto LAB_008a7709;
      }
    }
    else {
      pcStack_22c = *(char **)(param_1[0xb] + 0x18);
      pwStack_228 = (wchar_t *)DAT_032bd50c;
      pcStack_230 = (char *)0x8a73a6;
      FUN_0084b3b0();
      uStack_4 = 4;
      if (iStack_20 == 0) {
        pwStack_228 = (wchar_t *)PTR_DAT_03236318;
        pcStack_22c = (char *)0x8a73cd;
        FUN_004325b6();
        pwStack_228 = L"zlib error %d";
        uStack_4._0_1_ = 5;
        pcStack_22c = (char *)0x8a73e6;
        FUN_0043c211();
        pwStack_228 = (wchar_t *)auStack_1d0;
        pcStack_22c = auStack_188;
        uStack_4._0_1_ = 6;
        pcStack_230 = (char *)0x8a7401;
        pwStack_228 = (wchar_t *)FUN_00820bf9();
        pcStack_22c = (char *)0x8a740e;
        FUN_008433c0();
        pcStack_22c = auStack_20c;
        pcStack_230 = acStack_f8;
        uStack_4._0_1_ = 7;
        pcStack_234 = (char *)0x8a7429;
        pwStack_228 = (wchar_t *)iVar6;
        pwStack_228 = (wchar_t *)FUN_00821558();
        uStack_4._0_1_ = 8;
        pcStack_22c = (char *)0x8a7441;
        FUN_0043261a();
        pwStack_228 = L"䲍ᠤ鲈․\x02\xe800䅟\xfff7貍鰤";
        FUN_0040159c();
        uStack_4._0_1_ = 6;
        pwStack_228 = L"貍鰤";
        FUN_0081b5bc();
        pwStack_228 = 
        L"䲍吤蓆․\x02Ѐ⋨떡菿⓬첋撉㠤ꁨ퉟\xe800䶄ﾹŪ鳨臨菿⣄삄萏ï";
        FUN_0040159c();
        uStack_4 = CONCAT31(uStack_4._1_3_,4);
        pwStack_228 = L"\xec83謤觌⑤核徠Ò蓨륍櫿\xe801\xf69c\xfff9쒃萨࿀\xef84";
        FUN_0040159c();
      }
      ppcStack_210 = (char **)&uStack_248;
      FUN_0043c211(&DAT_00d25fa0);
      cVar3 = FUN_00846b30(1);
      if (cVar3 != '\0') {
        pwStack_228 = (wchar_t *)PTR_DAT_03236318;
        pcStack_22c = (char *)0x8a74b2;
        FUN_004325b6();
        pwStack_228 = L"Can\'t read from inflate stream: %s";
        uStack_4._0_1_ = 9;
        pcStack_22c = (char *)0x8a74cb;
        FUN_0043c211();
        pwStack_228 = (wchar_t *)auStack_11c;
        pcStack_22c = auStack_140;
        uStack_4._0_1_ = 10;
        pcStack_230 = (char *)0x8a74e9;
        pwStack_228 = (wchar_t *)FUN_00820bf9();
        pcStack_22c = (char *)0x8a74f6;
        FUN_008433c0();
        ppcStack_210 = &pcStack_230;
        pcStack_234 = (char *)&pcStack_230;
        pcStack_238 = (char *)0x8a750c;
        FUN_00432231();
        pcStack_234 = &DAT_00d25fa0;
        pcStack_238 = "wxZlibInputStream::OnSysRead";
        uStack_23c = 0xf5;
        pcStack_240 = "..\\..\\src\\common\\zstream.cpp";
        uStack_244 = 1;
        uStack_4._0_1_ = 0xc;
        uStack_248 = 0x8a7536;
        FUN_008423d0();
        pcStack_234 = acStack_1f8;
        uStack_4._0_1_ = 0xe;
        pcStack_238 = (char *)0x8a7552;
        FUN_00848860();
        uStack_4._0_1_ = 0xb;
        pwStack_228 = L"䲍Ⱔ鲈․\x02\xe800䁆\xfff7貍\xe424";
        FUN_00842440();
        uStack_4 = CONCAT31(uStack_4._1_3_,10);
        pwStack_228 = L"貍\xe424";
        FUN_0081b5bc();
        pwStack_228 = L"貍ࠤ\x01\xe800ꀎﾵ䛇̌";
        FUN_0040159c();
        pwStack_228 = L"䛇̌";
        FUN_0040159c();
      }
      param_1[3] = 3;
LAB_008a76ed:
      pwStack_228 = L"嚋謬⒄Ȭ";
      FUN_0040159c();
    }
  }
  uVar5 = param_3 - *(int *)(param_1[0xb] + 0x10);
  puVar1 = (uint *)(param_1 + 0xc);
  uVar2 = *puVar1;
  *puVar1 = *puVar1 + uVar5;
  param_1[0xd] = param_1[0xd] + (uint)CARRY4(uVar2,uVar5);
LAB_008a7709:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008a7740(int param_1,int param_2,int param_3)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  void *_Dst;
  uint uStack_14c;
  void *pvStack_148;
  uint uStack_100;
  void *pvStack_fc;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bce7f5;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x20) = 0;
  uVar2 = FUN_00823c23();
  *(undefined4 *)(param_1 + 0x1c) = uVar2;
  *(undefined4 *)(param_1 + 0x18) = 0x4000;
  *(undefined4 *)(param_1 + 0x28) = 0;
  *(undefined4 *)(param_1 + 0x2c) = 0;
  if (((param_2 != -1) && (PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((param_2 < 0 || (9 < param_2)))) {
    FUN_00840480();
  }
  if ((param_3 == 2) && (cVar1 = FUN_008a6a50(), cVar1 == '\0')) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_008423d0();
      uStack_4._0_1_ = 3;
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4._0_1_ = 2;
      FUN_00842440();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  else {
    if (*(int *)(param_1 + 0x1c) != 0) {
      _Dst = operator_new(0x38);
      *(void **)(param_1 + 0x20) = _Dst;
      if (_Dst != (void *)0x0) {
        _memset(_Dst,0,0x38);
        *(undefined4 *)(*(int *)(param_1 + 0x20) + 0xc) = *(undefined4 *)(param_1 + 0x1c);
        *(undefined4 *)(*(int *)(param_1 + 0x20) + 0x10) = *(undefined4 *)(param_1 + 0x18);
        if ((((param_3 != 0) && (param_3 != 1)) && (param_3 != 2)) &&
           (PTR_FUN_03235c4c != (undefined *)0x0)) {
          FUN_00840480();
        }
        iVar3 = FUN_008ee330();
        if (iVar3 == 0) {
          ExceptionList = local_c;
          return;
        }
      }
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      uStack_4 = 4;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,5);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 6;
      FUN_008423d0();
      uStack_4._0_1_ = 7;
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4._0_1_ = 6;
      FUN_00842440();
      uStack_4 = CONCAT31(uStack_4._1_3_,5);
      FUN_0081b5bc();
      _free(pvStack_148);
      if (7 < uStack_14c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(pvStack_fc);
      if (7 < uStack_100) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  *(undefined4 *)(param_1 + 0xc) = 2;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_008a7b40(int *param_1)

{
  int iVar1;
  bool bVar2;
  char cVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1[8] == 0) || (param_1[7] == 0)) {
    param_1[3] = 2;
  }
  cVar3 = (**(code **)(*param_1 + 0x10))();
  if (cVar3 == '\0') {
    ExceptionList = local_c;
    return;
  }
  iVar4 = 0;
  do {
    bVar2 = false;
    while( true ) {
      if ((iVar4 != 0) && (iVar4 != 1)) {
        ExceptionList = local_c;
        return;
      }
      iVar4 = param_1[6];
      iVar1 = *(int *)(param_1[8] + 0x10);
      if (iVar4 != iVar1) {
        piVar5 = (int *)(**(code **)(*(int *)param_1[4] + 0x28))();
        iVar6 = (**(code **)(*piVar5 + 0x34))();
        if (iVar6 != iVar4 - iVar1) {
          param_1[3] = 2;
          FUN_0043c211(&DAT_00d25fa0);
          cVar3 = FUN_00846b30(6);
          if (cVar3 == '\0') {
            ExceptionList = local_c;
            return;
          }
          FUN_0081c0f1();
          uStack_4 = 0;
          FUN_008423d0();
          uStack_4._0_1_ = 1;
          FUN_008854f0();
          FUN_0083fe90();
          uStack_4 = (uint)uStack_4._1_3_ << 8;
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
          ExceptionList = local_c;
          return;
        }
        *(int *)(param_1[8] + 0xc) = param_1[7];
        *(int *)(param_1[8] + 0x10) = param_1[6];
      }
      if (bVar2) {
        ExceptionList = local_c;
        return;
      }
      iVar4 = FUN_008ecc40();
      if ((*(int *)(param_1[8] + 0x10) == 0) && (iVar4 != 1)) break;
      bVar2 = true;
    }
  } while( true );
}



void __thiscall FUN_008a7cc0(int *param_1,undefined4 param_2,int param_3)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  int iVar4;
  char *pcVar5;
  uint uVar6;
  int iVar7;
  undefined4 uStack_18c;
  undefined4 uStack_188;
  char *pcStack_184;
  undefined4 uStack_180;
  char *pcStack_17c;
  char *pcStack_178;
  char *pcStack_174;
  char *pcStack_170;
  wchar_t *pwStack_16c;
  uint uStack_168;
  char **ppcStack_158;
  char acStack_154 [20];
  char acStack_140 [36];
  undefined auStack_11c [36];
  char acStack_f8 [196];
  char acStack_34 [20];
  int iStack_20;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bce8a1;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&ppcStack_158;
  uStack_168 = DAT_0323f878 ^ (uint)&stack0xfffffe9c;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((param_1[8] == 0 || (param_1[7] == 0)))) {
    pwStack_16c = L"Deflate stream not open";
    pcStack_170 = "m_deflate && m_z_buffer";
    pcStack_174 = "wxZlibOutputStream::OnSysWrite";
    pcStack_178 = (char *)0x180;
    pcStack_17c = "..\\..\\src\\common\\zstream.cpp";
    uStack_180 = 0x8a7d2f;
    FUN_00840480();
  }
  if ((param_1[8] == 0) || (param_1[7] == 0)) {
    param_1[3] = 2;
  }
  pwStack_16c = L"삄萏͍";
  cVar3 = (**(code **)(*param_1 + 0x10))();
  if ((cVar3 != '\0') && (param_3 != 0)) {
    *(undefined4 *)param_1[8] = param_2;
    iVar7 = 0;
    *(int *)(param_1[8] + 4) = param_3;
    do {
      if (*(int *)(param_1[8] + 4) == 0) {
LAB_008a7e7e:
        if (iVar7 == 0) goto LAB_008a8092;
        break;
      }
      if (*(int *)(param_1[8] + 0x10) == 0) {
        pwStack_16c = (wchar_t *)param_1[6];
        pcStack_170 = (char *)param_1[7];
        pcStack_174 = (char *)0x8a7da5;
        (**(code **)(*(int *)param_1[4] + 0x28))();
        pcStack_174 = (char *)0x8a7daf;
        iVar4 = (**(code **)(*(int *)param_1[4] + 0x34))();
        if (iVar4 != param_1[6]) {
          ppcStack_158 = (char **)&uStack_18c;
          param_1[3] = 2;
          FUN_0043c211(&DAT_00d25fa0);
          cVar3 = FUN_00846b30(6);
          if (cVar3 != '\0') {
            pwStack_16c = L"wxZlibOutputStream: Error writing to underlying stream";
            pcStack_170 = (char *)0x8a7e15;
            FUN_0081c0f1();
            pwStack_16c = (wchar_t *)&DAT_00d25fa0;
            pcStack_170 = "wxZlibOutputStream::OnSysWrite";
            pcStack_174 = (char *)0x194;
            pcStack_178 = "..\\..\\src\\common\\zstream.cpp";
            pcStack_17c = (char *)0x6;
            uStack_4 = 0;
            uStack_180 = 0x8a7e42;
            FUN_008423d0();
            pwStack_16c = (wchar_t *)acStack_154;
            uStack_4._0_1_ = 1;
            pcStack_170 = (char *)0x8a7e56;
            FUN_00840b80();
            uStack_4 = (uint)uStack_4._1_3_ << 8;
            pwStack_16c = L"䲍ᐤ蓇搤\x01＀\xffff\xe8ff㜾\xfff7ﾅ萏Ȍ";
            FUN_00842440();
            uStack_4 = 0xffffffff;
            pwStack_16c = L"ﾅ萏Ȍ";
            FUN_0081b5bc();
          }
          goto LAB_008a7e7e;
        }
        *(int *)(param_1[8] + 0xc) = param_1[7];
        *(int *)(param_1[8] + 0x10) = param_1[6];
      }
      pcStack_170 = (char *)param_1[8];
      pwStack_16c = (wchar_t *)0x0;
      pcStack_174 = (char *)0x8a7dd1;
      iVar7 = FUN_008ecc40();
    } while (iVar7 == 0);
    param_1[3] = 2;
    pcStack_170 = *(char **)(param_1[8] + 0x18);
    pwStack_16c = (wchar_t *)DAT_032bd50c;
    pcStack_174 = (char *)0x8a7ea7;
    FUN_0084b3b0();
    uStack_4 = 2;
    if (iStack_20 == 0) {
      pwStack_16c = (wchar_t *)PTR_DAT_03236318;
      pcStack_170 = (char *)0x8a7ed0;
      FUN_004325b6();
      pwStack_16c = L"zlib error %d";
      uStack_4._0_1_ = 3;
      pcStack_170 = (char *)0x8a7ee6;
      FUN_0043c211();
      pwStack_16c = (wchar_t *)auStack_11c;
      pcStack_170 = acStack_140;
      uStack_4._0_1_ = 4;
      pcStack_174 = (char *)0x8a7efe;
      pwStack_16c = (wchar_t *)FUN_00820bf9();
      pcStack_170 = (char *)0x8a7f0b;
      FUN_008433c0();
      pcStack_170 = acStack_154;
      pcStack_174 = acStack_f8;
      uStack_4._0_1_ = 5;
      pcStack_178 = (char *)0x8a7f23;
      pwStack_16c = (wchar_t *)iVar7;
      pcVar5 = (char *)FUN_00821558();
      uStack_4._0_1_ = 6;
      if (acStack_34 != pcVar5) {
        pwStack_16c = (wchar_t *)0xffffffff;
        pcStack_170 = (char *)0x0;
        pcStack_178 = (char *)0x8a7f43;
        pcStack_174 = pcVar5;
        FID_conflict_assign();
      }
      pwStack_16c = L"䲍ᐤ鲈搤\x01\xe800㙠\xfff7䲍⠤㟨떖跿⑌왌⒄Ť";
      FUN_0040159c();
      uStack_4._0_1_ = 4;
      pwStack_16c = L"䲍⠤㟨떖跿⑌왌⒄Ť";
      FUN_0081b5bc();
      pwStack_16c = L"䲍䰤蓆搤\x01Ȁ⛨떖诿⒜Ű";
      FUN_0040159c();
      uStack_4 = CONCAT31(uStack_4._1_3_,2);
      pwStack_16c = L"鲋瀤\x01茀⓬첋撉㐤ꁨ퉟\xe800䊁ﾹŪ駨匿菿⣄삄萏ä";
      FUN_0040159c();
    }
    ppcStack_158 = (char **)&uStack_18c;
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(1);
    if (cVar3 != '\0') {
      pwStack_16c = (wchar_t *)PTR_DAT_03236318;
      pcStack_170 = (char *)0x8a7fb2;
      FUN_004325b6();
      pwStack_16c = L"Can\'t write to deflate stream: %s";
      uStack_4._0_1_ = 7;
      pcStack_170 = (char *)0x8a7fc8;
      FUN_0043c211();
      pwStack_16c = (wchar_t *)acStack_f8;
      pcStack_170 = auStack_11c;
      uStack_4._0_1_ = 8;
      pcStack_174 = (char *)0x8a7fe0;
      pwStack_16c = (wchar_t *)FUN_00820bf9();
      pcStack_170 = (char *)0x8a7fed;
      FUN_008433c0();
      ppcStack_158 = &pcStack_174;
      pcStack_178 = (char *)&pcStack_174;
      pcStack_17c = (char *)0x8a8003;
      FUN_00432231();
      pcStack_178 = &DAT_00d25fa0;
      pcStack_17c = "wxZlibOutputStream::OnSysWrite";
      uStack_180 = 0x1a4;
      pcStack_184 = "..\\..\\src\\common\\zstream.cpp";
      uStack_188 = 1;
      uStack_4._0_1_ = 10;
      uStack_18c = 0x8a802d;
      FUN_008423d0();
      pcStack_178 = acStack_140;
      uStack_4._0_1_ = 0xc;
      pcStack_17c = (char *)0x8a8049;
      FUN_00848860();
      uStack_4._0_1_ = 9;
      pwStack_16c = 
      L"䲍⠤鲈搤\x01\xe800㕏\xfff7䲍䰤⛨떕跿⑌\xe870锝ﾵ鲋瀤\x01贀⒌Ĵ";
      FUN_00842440();
      uStack_4 = CONCAT31(uStack_4._1_3_,8);
      pwStack_16c = L"䲍䰤⛨떕跿⑌\xe870锝ﾵ鲋瀤\x01贀⒌Ĵ";
      FUN_0081b5bc();
      pwStack_16c = L"䲍瀤ᷨ떕诿⒜Ű";
      FUN_0040159c();
      pwStack_16c = L"鲋瀤\x01贀⒌Ĵ";
      FUN_0040159c();
    }
    pwStack_16c = L"嚋⬠њ币謨菃ⱖ\xeb00㌂诀⒌Ŝ";
    FUN_0040159c();
LAB_008a8092:
    uVar6 = param_3 - *(int *)(param_1[8] + 4);
    puVar1 = (uint *)(param_1 + 10);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 + uVar6;
    param_1[0xb] = param_1[0xb] + (uint)CARRY4(uVar2,uVar6);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_008a80d0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce8d8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00883ea0(param_1);
  local_4 = 0;
  *param_1_00 = wxZlibInputStream::vftable;
  FUN_008a6eb0(param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_008a8140(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce8d8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00883ed0(param_1);
  local_4 = 0;
  *param_1_00 = wxZlibInputStream::vftable;
  FUN_008a6eb0(param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_008a81b0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce908;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00883f90(param_1);
  local_4 = 0;
  *param_1_00 = wxZlibOutputStream::vftable;
  FUN_008a7740(param_2,param_3);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_008a8220(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce908;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00883fb0(param_1);
  local_4 = 0;
  *param_1_00 = wxZlibOutputStream::vftable;
  FUN_008a7740(param_2,param_3);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_008a8290(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x30);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008a81b0(param_1,0xffffffff,1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_008a8310(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x38);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008a80d0(param_1,3);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_008a8380(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x38);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008a8140(param_1,3);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_008a83f0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x30);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008a8220(param_1,0xffffffff,1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_008a8470(undefined4 *param_1_00,undefined4 param_1,int *param_2)

{
  undefined4 uVar1;
  
  *param_1_00 = param_1;
  *(undefined *)(param_1_00 + 1) = 0;
  uVar1 = (**(code **)(*param_2 + 0x14))();
  param_1_00[2] = uVar1;
  return param_1_00;
}



void __fastcall FUN_008a84a0(int param_1)

{
  if (*(int **)(param_1 + 8) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 8) + 0x18))(1);
  }
  return;
}



void __thiscall FUN_008a84c0(int **param_1_00,uint param_1)

{
  if (*(char *)(param_1_00 + 1) != '\0') {
    param_1 = (param_1 & 0xff0000 | param_1 >> 0x10) >> 8 |
              (param_1 & 0xff00 | param_1 << 0x10) << 8;
    (**(code **)(**param_1_00 + 0x28))(&param_1,4);
    return;
  }
  (**(code **)(**param_1_00 + 0x28))(&param_1,4);
  return;
}



void __thiscall FUN_008a8520(int **param_1_00,ushort param_1)

{
  if (*(char *)(param_1_00 + 1) != '\0') {
    _param_1 = (uint)(ushort)(param_1 << 8 | param_1 >> 8);
    (**(code **)(**param_1_00 + 0x28))(&param_1,2);
    return;
  }
  _param_1 = (uint)param_1;
  (**(code **)(**param_1_00 + 0x28))(&param_1,2);
  return;
}



int ** __thiscall FUN_008a8570(int **param_1_00,undefined param_1)

{
  (**(code **)(**param_1_00 + 0x28))(&param_1,1);
  return param_1_00;
}



int ** __thiscall FUN_008a85a0(int **param_1_00,ushort param_1)

{
  if (*(char *)(param_1_00 + 1) == '\0') {
    _param_1 = (uint)param_1;
  }
  else {
    _param_1 = (uint)(ushort)(param_1 << 8 | param_1 >> 8);
  }
  (**(code **)(**param_1_00 + 0x28))(&param_1,2);
  return param_1_00;
}



undefined4 __thiscall FUN_008a85e0(undefined4 param_1_00,undefined4 param_1)

{
  FUN_008a84c0(param_1);
  return param_1_00;
}



undefined2 * FUN_008a8600(undefined4 param_1)

{
  switch(param_1) {
  case 0:
    goto switchD_008a8609_caseD_0;
  case 1:
    return &DAT_00d23e68;
  case 2:
    return &DAT_00d31a20;
  case 3:
    return (undefined2 *)&DAT_00d38164;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\textbuf.cpp",0x3c,"wxTextBuffer::GetEOL","Assert failure",
                   L"bad buffer type in wxTextBuffer::GetEOL.");
    }
switchD_008a8609_caseD_0:
    return (undefined2 *)PTR_DAT_03236318;
  }
}



undefined __fastcall FUN_008a8660(int *param_1)

{
  char cVar1;
  undefined uVar2;
  undefined4 unaff_ESI;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[6] == 0)) {
    FUN_008402e0("..\\..\\src\\common\\textbuf.cpp",0xc2,"wxTextBuffer::Open",
                 "!m_strBufferName.empty()",0);
  }
  cVar1 = (**(code **)(*param_1 + 8))(param_1 + 1,0);
  if (cVar1 == '\0') {
    return 0;
  }
  uVar2 = (**(code **)(*param_1 + 0x10))(unaff_ESI);
  *(undefined *)(param_1 + 0x12) = uVar2;
  (**(code **)(*param_1 + 0xc))();
  return *(undefined *)(param_1 + 0x12);
}



void __fastcall FUN_008a86d0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bce946;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxTextBuffer::vftable;
  local_4 = 1;
  FUN_00853f30(uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_0086aa30();
  _free((void *)param_1[8]);
  if (7 < (uint)param_1[7]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[2]);
  }
  param_1[7] = 7;
  param_1[6] = 0;
  *(undefined2 *)(param_1 + 2) = 0;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008a8760(undefined4 param_1_00,byte param_1)

{
  FUN_008a86d0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_008a8780(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce986;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *param_1_00 = wxTextBuffer::vftable;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[8] = 0;
  local_4 = 0;
  FUN_0086a600(uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00853ce0(0);
  param_1_00[0x11] = 0;
  *(undefined *)(param_1_00 + 0x12) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_008a8810(int param_1,int param_2,int param_3)

{
  short sVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  short **ppsVar5;
  short **ppsVar6;
  short **ppsVar7;
  undefined4 local_68;
  int local_64;
  short **local_60;
  int local_5c;
  undefined local_58 [4];
  undefined4 local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce9c0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_68;
  ExceptionList = &local_c;
  local_5c = param_1;
  local_68 = 0;
  if (param_3 == 0) {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(param_2,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
  }
  else {
    if (*(int *)(param_2 + 0x14) != 0) {
      uVar3 = FUN_008a8600(param_3,DAT_0323f878 ^ (uint)&stack0xffffff88);
      FUN_004325b6(uVar3);
      local_40 = 7;
      local_44 = 0;
      local_54 = (uint)local_54._2_2_ << 0x10;
      local_3c = (void *)0x0;
      local_4 = 1;
      FUN_0081c141(*(undefined4 *)(param_2 + 0x14));
      local_68 = 0;
      FUN_00847890(&local_64);
      do {
        uVar2 = *(uint *)(param_2 + 0x18);
        ppsVar5 = (short **)(param_2 + 4);
        ppsVar6 = ppsVar5;
        if (7 < uVar2) {
          ppsVar6 = (short **)*ppsVar5;
        }
        iVar4 = *(int *)(param_2 + 0x14) * 2;
        ppsVar6 = (short **)(iVar4 + (int)ppsVar6);
        if (ppsVar6 == (short **)0x0) {
LAB_008a893d:
          FUN_00a3fb10();
        }
        else {
          ppsVar7 = ppsVar5;
          if (7 < uVar2) {
            ppsVar7 = (short **)*ppsVar5;
          }
          if (ppsVar6 < ppsVar7) goto LAB_008a893d;
          if (7 < uVar2) {
            ppsVar5 = (short **)*ppsVar5;
          }
          if ((short **)(iVar4 + (int)ppsVar5) < ppsVar6) goto LAB_008a893d;
        }
        if ((local_64 != -4) && ((local_64 == 0 || (local_64 != param_2)))) {
          FUN_00a3fb10();
        }
        ppsVar5 = local_60;
        if (local_60 == ppsVar6) goto LAB_008a8a40;
        if (local_64 != -4) {
          if (local_64 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(local_64 + 0x18) < 8) {
            iVar4 = local_64 + 4;
          }
          else {
            iVar4 = *(int *)(local_64 + 4);
          }
          if ((short **)(iVar4 + *(int *)(local_64 + 0x14) * 2) <= ppsVar5) {
            FUN_00a3fb10();
          }
        }
        sVar1 = *(short *)ppsVar5;
        if (sVar1 == 10) {
          FID_conflict_append(local_34,0,0xffffffff);
          local_68 = 0;
        }
        else if (sVar1 == 0xd) {
          if ((short)local_68 == 0xd) {
            FID_conflict_append(local_34,0,0xffffffff);
          }
          else {
            local_68 = 0xd;
          }
        }
        else {
          if ((short)local_68 == 0xd) {
            FID_conflict_append(local_34,0,0xffffffff);
            local_68 = 0;
          }
          FID_conflict_append(1,sVar1);
        }
        if (local_64 != -4) {
          if (local_64 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(local_64 + 0x18) < 8) {
            iVar4 = local_64 + 4;
          }
          else {
            iVar4 = *(int *)(local_64 + 4);
          }
          if ((short **)(iVar4 + *(int *)(local_64 + 0x14) * 2) <= ppsVar5) {
            FUN_00a3fb10();
          }
        }
        local_60 = (short **)((int)ppsVar5 + 2);
      } while( true );
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(param_2,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
  }
LAB_008a8ad5:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
LAB_008a8a40:
  if ((short)local_68 != 0) {
    FID_conflict_append(local_34,0,0xffffffff);
  }
  iVar4 = local_5c;
  *(undefined4 *)(local_5c + 0x18) = 7;
  *(undefined4 *)(local_5c + 0x14) = 0;
  *(undefined2 *)(local_5c + 4) = 0;
  FID_conflict_assign(local_58,0,0xffffffff);
  *(undefined4 *)(iVar4 + 0x1c) = 0;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  goto LAB_008a8ad5;
}



int __fastcall FUN_008a8b00(int param_1)

{
  if (*(int *)(param_1 + 0x90) == 0) {
    FUN_00875e70(1);
  }
  return param_1 + 0x90;
}



undefined4 FUN_008a8b20(int *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  
  if (*param_1 != 0) {
    cVar1 = FUN_00876d80(param_2);
    if (cVar1 != '\0') {
      cVar1 = FUN_008789e0(param_2,param_3,0);
      if (cVar1 != '\0') {
        return 1;
      }
    }
  }
  return 0;
}



undefined4 FUN_008a8b60(int *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  
  if (*param_1 != 0) {
    cVar1 = FUN_00876d80(param_2);
    if (cVar1 != '\0') {
      cVar1 = FUN_00878780(param_2,param_3);
      if (cVar1 != '\0') {
        return 1;
      }
    }
  }
  return 0;
}



undefined4 FUN_008a8ba0(int *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  
  if (*param_1 != 0) {
    cVar1 = FUN_00876d80(param_2);
    if (cVar1 != '\0') {
      cVar1 = FUN_00877730(param_2,param_3);
      if (cVar1 != '\0') {
        return 1;
      }
    }
  }
  return 0;
}



undefined ** FUN_008a8be0(void)

{
  return &PTR_u_wxRegConfig_03237688;
}



void __thiscall FUN_008a8bf0(int *param_1_00,undefined4 param_1,undefined4 *param_2)

{
  *param_2 = 0;
                    // WARNING: Could not recover jumptable at 0x008a8c03. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1_00 + 0x1c))();
  return;
}



undefined __thiscall FUN_008a8c10(int param_1_00,undefined4 param_1,uint *param_2)

{
  char cVar1;
  undefined uVar2;
  
  if ((*(int *)(param_1_00 + 0x100) != 0) && ((*param_2 & 0x8000) == 0)) {
    cVar1 = FUN_00876550(param_1,param_2);
    if (cVar1 != '\0') {
      do {
        cVar1 = FUN_008752b0();
        if (cVar1 == '\0') {
          return 1;
        }
        if (*(int *)(param_1_00 + 0x90) == 0) {
          FUN_00875e70(1);
        }
        cVar1 = FUN_00876ee0(param_1);
        if (cVar1 == '\0') {
          return 1;
        }
        cVar1 = FUN_00876550(param_1,param_2);
      } while (cVar1 != '\0');
    }
    *param_2 = *param_2 | 0x8000;
  }
  cVar1 = FUN_008752b0();
  if (cVar1 == '\0') {
    return 0;
  }
  *param_2 = *param_2 & 0xffff7fff;
  if (*(int *)(param_1_00 + 0x90) == 0) {
    FUN_00875e70(1);
  }
  uVar2 = FUN_00876550(param_1,param_2);
  *param_2 = *param_2 | 0x8000;
  return uVar2;
}



undefined __thiscall FUN_008a8ce0(int param_1_00,undefined4 param_1,uint *param_2)

{
  char cVar1;
  undefined uVar2;
  
  if ((*(int *)(param_1_00 + 0x100) != 0) && ((*param_2 & 0x8000) == 0)) {
    cVar1 = FUN_008762c0(param_1,param_2);
    if (cVar1 != '\0') {
      do {
        cVar1 = FUN_008752b0();
        if (cVar1 == '\0') {
          return 1;
        }
        if (*(int *)(param_1_00 + 0x90) == 0) {
          FUN_00875e70(1);
        }
        cVar1 = FUN_00876d80(param_1);
        if (cVar1 == '\0') {
          return 1;
        }
        cVar1 = FUN_008762c0(param_1,param_2);
      } while (cVar1 != '\0');
    }
    *param_2 = *param_2 | 0x8000;
  }
  cVar1 = FUN_008752b0();
  if (cVar1 == '\0') {
    return 0;
  }
  *param_2 = *param_2 & 0xffff7fff;
  if (*(int *)(param_1_00 + 0x90) == 0) {
    FUN_00875e70(1);
  }
  uVar2 = FUN_008762c0(param_1,param_2);
  *param_2 = *param_2 | 0x8000;
  return uVar2;
}



uint __thiscall FUN_008a8db0(int *param_1_00,undefined4 param_1)

{
  uint uVar1;
  
  uVar1 = (**(code **)(*param_1_00 + 0x34))(param_1);
  if ((char)uVar1 == '\0') {
    return uVar1;
  }
  uVar1 = (**(code **)(*param_1_00 + 0x34))(param_1);
  if ((char)uVar1 != '\0') {
    return uVar1 & 0xffffff00;
  }
  uVar1 = FUN_0087a0a0(param_1,param_1);
  return uVar1;
}



undefined __thiscall FUN_008a8e00(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined uVar2;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bce9f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1_00 + 0x30))(param_1,DAT_0323f878 ^ (uint)&stack0xffffffb0);
  if (cVar1 != '\0') {
    cVar1 = (**(code **)(*param_1_00 + 0x30))(param_1);
    if (cVar1 == '\0') {
      FUN_00875970(param_1_00 + 0x24,param_1);
      puStack_8 = (undefined *)0x0;
      uVar2 = FUN_0087a480(param_1);
      puStack_8 = (undefined *)0xffffffff;
      FUN_008767d0();
      ExceptionList = pvStack_10;
      return uVar2;
    }
  }
  ExceptionList = pvStack_10;
  return 0;
}



void __fastcall FUN_008a8eb0(int param_1)

{
  char cVar1;
  
  FUN_008760c0();
  FUN_008760c0();
  cVar1 = FUN_00877c60();
  if ((cVar1 != '\0') && (*(int *)(param_1 + 200) != 0)) {
    FUN_00877c60();
    return;
  }
  return;
}



void __fastcall FUN_008a8ef0(int param_1)

{
  short *psVar1;
  void **ppvVar2;
  int iVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcea28;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(param_1 + 0xc) == '\0')) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/string.h",0xf11,
                 "wxStringTypeBufferLengthBase<wchar_t>::~wxStringTypeBufferLengthBase",
                 "this->m_lenSet","forgot to call SetLength()",DAT_0323f878 ^ (uint)&stack0xffffffe8
                );
  }
  local_4 = 0xffffffff;
  iVar3 = FUN_00850350();
  if (*(int *)(param_1 + 4) != iVar3) {
    psVar1 = (short *)(*(int *)(param_1 + 4) + 8);
    *psVar1 = *psVar1 + -1;
    ppvVar2 = *(void ***)(param_1 + 4);
    if ((*(short *)(ppvVar2 + 2) == 0) && (ppvVar2 != (void **)0x0)) {
      if (*(char *)((int)ppvVar2 + 10) != '\0') {
        _free(*ppvVar2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar2);
    }
    uVar4 = FUN_00850350();
    *(undefined4 *)(param_1 + 4) = uVar4;
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_008a8fb0(int *param_1)

{
  char cVar1;
  undefined4 local_38;
  undefined local_34 [4];
  undefined2 local_30;
  uint uStack_24;
  void *local_20;
  undefined4 local_1c;
  undefined4 local_18;
  void *pvStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdecb8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = (void *)0x0;
  local_30 = 0;
  local_18 = 0;
  local_4 = 0;
  cVar1 = (**(code **)(*param_1 + 0x20))(local_34,&local_38,DAT_0323f878 ^ (uint)&stack0xffffffc0);
  while (cVar1 != '\0') {
    cVar1 = (**(code **)(*param_1 + 0x24))(&stack0xffffffc4,&stack0xffffffc0);
  }
  _free(local_20);
  if (uStack_24 < 8) {
    ExceptionList = pvStack_14;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_38);
}



void __fastcall FUN_008a9070(int *param_1)

{
  char cVar1;
  undefined4 local_38;
  undefined local_34 [4];
  undefined2 local_30;
  uint uStack_24;
  void *local_20;
  undefined4 local_1c;
  undefined4 local_18;
  void *pvStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdecb8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = (void *)0x0;
  local_30 = 0;
  local_18 = 0;
  local_4 = 0;
  cVar1 = (**(code **)(*param_1 + 0x18))(local_34,&local_38,DAT_0323f878 ^ (uint)&stack0xffffffc0);
  while (cVar1 != '\0') {
    cVar1 = (**(code **)(*param_1 + 0x1c))(&stack0xffffffc4,&stack0xffffffc0);
  }
  _free(local_20);
  if (uStack_24 < 8) {
    ExceptionList = pvStack_14;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_38);
}



void __thiscall FUN_008a9130(int param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_84 [4];
  uint local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  undefined local_5c [76];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcea63;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_84;
  ExceptionList = &local_c;
  uVar2 = FUN_0088a080(local_84,param_1,DAT_0323f878 ^ (uint)&stack0xffffff78);
  local_4 = 0;
  FUN_00889da0(param_1_00,uVar2);
  local_4 = CONCAT31(local_4._1_3_,2);
  _free(local_68);
  if (7 < local_6c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_80);
  }
  local_6c = 7;
  local_70 = 0;
  local_80 = local_80 & 0xffff0000;
  cVar1 = FUN_008752b0();
  if (cVar1 != '\0') {
    if (*(int *)(param_1_00 + 0x90) == 0) {
      FUN_00875e70(1);
    }
    cVar1 = FUN_00878460(local_5c);
    if (cVar1 == '\0') {
      local_4 = 0xffffffff;
      FUN_00889a70();
      goto LAB_008a9231;
    }
    FUN_00889f50();
  }
  local_4 = 0xffffffff;
  FUN_00889a70();
LAB_008a9231:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008a9260(int param_1_00,uint param_1)

{
  uint uVar1;
  char cVar2;
  
  uVar1 = *(uint *)(param_1_00 + 0x1c);
  if ((uVar1 <= param_1) && (*(uint *)(param_1_00 + 0x20) != param_1)) {
    cVar2 = FUN_004182d2(param_1,1);
    if (cVar2 != '\0') {
      *(uint *)(param_1_00 + 0x1c) = uVar1;
      if (7 < *(uint *)(param_1_00 + 0x20)) {
        *(undefined2 *)(*(int *)(param_1_00 + 0xc) + uVar1 * 2) = 0;
        return;
      }
      *(undefined2 *)(param_1_00 + 0xc + uVar1 * 2) = 0;
    }
  }
  return;
}



void __fastcall FUN_008a92b0(int param_1)

{
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcea98;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00820ebc(&local_14,**(undefined4 **)(param_1 + 4),*(undefined4 *)(param_1 + 8),
               DAT_0323f878 ^ (uint)&stack0xffffffe0);
  FID_conflict_assign(local_14,local_10);
  local_4 = 0xffffffff;
  FUN_008a8ef0();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008a9330(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined auStack_88 [3];
  undefined local_85;
  undefined local_84 [4];
  undefined4 local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  undefined local_5c [76];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcead3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_88;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff6c;
  ExceptionList = &local_c;
  FUN_00889da0(param_1_00,param_1);
  local_4 = 0;
  local_6c = 7;
  local_70 = 0;
  local_80 = (uint)local_80._2_2_ << 0x10;
  FID_conflict_assign(local_5c,0,0xffffffff);
  local_68 = (void *)0x0;
  local_4 = CONCAT31(local_4._1_3_,1);
  cVar1 = FUN_008752b0(uVar2);
  if (cVar1 == '\0') {
LAB_008a93df:
    cVar1 = FUN_00876ee0(local_84);
    local_85 = 0;
    if (cVar1 == '\0') goto LAB_008a93fc;
  }
  else {
    if (*(int *)(param_1_00 + 0x90) == 0) {
      FUN_00875e70(1);
    }
    cVar1 = FUN_00876ee0(local_84);
    if (cVar1 == '\0') goto LAB_008a93df;
  }
  local_85 = 1;
LAB_008a93fc:
  _free(local_68);
  if (7 < local_6c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_80);
  }
  local_6c = 7;
  local_70 = 0;
  local_80 = local_80 & 0xffff0000;
  local_4 = 0xffffffff;
  FUN_00889a70();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008a9470(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined auStack_88 [3];
  undefined local_85;
  undefined local_84 [4];
  undefined4 local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  undefined local_5c [76];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcead3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_88;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff6c;
  ExceptionList = &local_c;
  FUN_00889da0(param_1_00,param_1);
  local_4 = 0;
  local_6c = 7;
  local_70 = 0;
  local_80 = (uint)local_80._2_2_ << 0x10;
  FID_conflict_assign(local_5c,0,0xffffffff);
  local_68 = (void *)0x0;
  local_4 = CONCAT31(local_4._1_3_,1);
  cVar1 = FUN_008752b0(uVar2);
  if (cVar1 == '\0') {
LAB_008a951f:
    cVar1 = FUN_00876d80(local_84);
    local_85 = 0;
    if (cVar1 == '\0') goto LAB_008a953c;
  }
  else {
    if (*(int *)(param_1_00 + 0x90) == 0) {
      FUN_00875e70(1);
    }
    cVar1 = FUN_00876d80(local_84);
    if (cVar1 == '\0') goto LAB_008a951f;
  }
  local_85 = 1;
LAB_008a953c:
  _free(local_68);
  if (7 < local_6c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_80);
  }
  local_6c = 7;
  local_70 = 0;
  local_80 = local_80 & 0xffff0000;
  local_4 = 0xffffffff;
  FUN_00889a70();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008a95b0(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined local_84 [4];
  undefined4 local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  undefined local_5c [76];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bceb23;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_84;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff70;
  ExceptionList = &local_c;
  FUN_00889da0(param_1_00,param_1);
  local_4 = 0;
  local_6c = 7;
  local_70 = 0;
  local_80 = (uint)local_80._2_2_ << 0x10;
  FID_conflict_assign(local_5c,0,0xffffffff);
  local_68 = (void *)0x0;
  local_4 = CONCAT31(local_4._1_3_,1);
  cVar1 = FUN_008752b0(uVar2);
  if (cVar1 == '\0') {
LAB_008a9668:
    cVar1 = FUN_00876d80(local_84);
    if (cVar1 == '\0') {
      _free(local_68);
      if (7 < local_6c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_80);
      }
      local_80 = local_80 & 0xffff0000;
      local_6c = 7;
      local_70 = 0;
      local_4 = 0xffffffff;
      FUN_00889a70();
      goto LAB_008a972d;
    }
  }
  else {
    if (*(int *)(param_1_00 + 0x90) == 0) {
      FUN_00875e70(1);
    }
    cVar1 = FUN_00876d80(local_84);
    if (cVar1 == '\0') goto LAB_008a9668;
  }
  FUN_00877c40(local_84);
  _free(local_68);
  if (7 < local_6c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_80);
  }
  local_80 = local_80 & 0xffff0000;
  local_6c = 7;
  local_70 = 0;
  local_4 = 0xffffffff;
  FUN_00889a70();
LAB_008a972d:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008a9760(int *param_1_00,undefined *param_1,char param_2)

{
  char cVar1;
  undefined *puVar2;
  undefined *local_c0;
  uint uStack_bc;
  undefined **local_ac;
  undefined auStack_a8 [36];
  undefined local_84 [40];
  undefined local_5c [76];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bceb7e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_ac;
  uStack_bc = DAT_0323f878 ^ (uint)&stack0xffffff48;
  ExceptionList = &local_c;
  local_c0 = param_1;
  FUN_00889da0(param_1_00);
  local_4 = 0;
  local_c0 = (undefined *)0x8a97c6;
  cVar1 = FUN_008752b0();
  if (cVar1 != '\0') {
    local_c0 = local_5c;
    cVar1 = FUN_00876b70();
    if (cVar1 == '\0') {
      local_4 = 0xffffffff;
      local_c0 = (undefined *)0x8a97f2;
      FUN_00889a70();
      goto LAB_008a98d0;
    }
    if (param_2 != '\0') {
      local_c0 = (undefined *)0x8a980e;
      cVar1 = FUN_00878640();
      if (cVar1 == '\0') {
        local_c0 = (undefined *)0x8a981d;
        cVar1 = FUN_00878500();
        if (cVar1 == '\0') {
          local_ac = &local_c0;
          local_c0 = (undefined *)0x2f;
          puVar2 = local_84;
          (**(code **)(*param_1_00 + 0x14))(puVar2);
          FUN_00852730(puVar2);
          local_c0 = &DAT_00d240e0;
          local_4._0_1_ = 1;
          FUN_004325b6();
          local_c0 = auStack_a8;
          local_4._0_1_ = 2;
          (**(code **)(*param_1_00 + 0x10))();
          local_4 = CONCAT31(local_4._1_3_,1);
          local_c0 = (undefined *)0x8a9884;
          FUN_0040159c();
          local_c0 = local_84;
          FUN_008a8b00();
          FUN_00878460();
          local_c0 = (undefined *)0x8a98a2;
          FUN_0040159c();
          local_4 = 0xffffffff;
          local_c0 = (undefined *)0x8a98b6;
          FUN_00889a70();
          goto LAB_008a98d0;
        }
      }
    }
  }
  local_4 = 0xffffffff;
  local_c0 = (undefined *)0x8a98ce;
  FUN_00889a70();
LAB_008a98d0:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_008a9900(undefined4 *param_1_00,int param_1,undefined *param_2,undefined *param_3,
            undefined *param_4,uint param_5)

{
  uint uVar1;
  undefined uVar2;
  undefined4 uVar3;
  undefined *puVar4;
  DWORD DVar5;
  undefined4 *puVar6;
  undefined4 local_b0;
  undefined local_a9;
  undefined local_a8 [4];
  uint local_a4;
  undefined4 local_94;
  uint local_90;
  void *local_8c;
  int local_84;
  undefined local_80 [4];
  undefined4 local_7c;
  uint local_68;
  void *local_64;
  undefined4 *local_5c;
  undefined local_58 [4];
  undefined4 local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcec5a;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_b0;
  ExceptionList = &local_c;
  local_b0 = param_4;
  local_84 = param_1;
  local_5c = param_1_00;
  FUN_00889cf0(param_1,param_2,param_3,param_4,param_5);
  local_4 = 0;
  *param_1_00 = wxRegConfig::vftable;
  FUN_008752d0(0);
  local_4._0_1_ = 1;
  FUN_008752d0(0);
  local_4._0_1_ = 2;
  FUN_008752d0(0);
  local_4._0_1_ = 3;
  FUN_008752d0(0);
  param_1_00[0x54] = 7;
  param_1_00[0x53] = 0;
  *(undefined2 *)(param_1_00 + 0x4f) = 0;
  param_1_00[0x55] = 0;
  local_40 = 7;
  local_44 = 0;
  local_54 = (uint)local_54._2_2_ << 0x10;
  local_3c = (void *)0x0;
  param_5 = param_5 >> 1;
  local_4._0_1_ = 6;
  uVar2 = (undefined)local_4;
  local_4._0_1_ = 6;
  if ((*(int *)(param_3 + 0x14) == 0) ||
     ((*(int *)(local_b0 + 0x14) == 0 && (uVar2 = (undefined)local_4, (param_5 & 1) != 0)))) {
    if (*(int *)(param_2 + 0x14) == 0) {
      if ((DAT_032bcb68 != 0) && (param_2 = (undefined *)(DAT_032bcb68 + 100), local_58 != param_2))
      {
LAB_008a9a63:
        FID_conflict_assign(param_2,0,0xffffffff);
        if (local_44 != 0) {
          FID_conflict_append(1,0x5c);
        }
      }
    }
    else if (local_58 != param_2) goto LAB_008a9a63;
    if (*(int *)(local_84 + 0x14) == 0) {
      if (DAT_032bcb68 == 0) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\msw\\regconf.cpp",0x68,"wxRegConfig::wxRegConfig",
                       "static_cast<wxAppConsole*>(wxAppConsole::GetInstance())",
                       L"No application name in wxRegConfig ctor!");
        }
        FUN_0040159c();
        goto LAB_008a9f37;
      }
      uVar3 = FUN_00841170(local_80);
      local_4._0_1_ = 7;
      FID_conflict_append(uVar3,0,0xffffffff);
      local_4._0_1_ = 6;
      FUN_0040159c();
      uVar2 = (undefined)local_4;
    }
    else {
      FID_conflict_append(local_84,0,0xffffffff);
      uVar2 = (undefined)local_4;
    }
  }
  local_4._0_1_ = uVar2;
  if (*(int *)(param_3 + 0x14) == 0) {
    param_3 = local_58;
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  FID_conflict_assign(param_3,0,0xffffffff);
  local_18 = (void *)0x0;
  uVar1 = param_1_00[0x1d];
  local_4 = CONCAT31(local_4._1_3_,8);
  if ((uVar1 < 0x201) && (param_1_00[0x1e] != 0x200)) {
    if ((uint)param_1_00[0x1e] < 0x200) {
      FUN_004181eb(0x200,uVar1);
    }
    param_1_00[0x1d] = uVar1;
    if ((uint)param_1_00[0x1e] < 8) {
      puVar6 = param_1_00 + 0x19;
    }
    else {
      puVar6 = (undefined4 *)param_1_00[0x19];
    }
    *(undefined2 *)((int)puVar6 + uVar1 * 2) = 0;
  }
  uVar1 = param_1_00[0x2b];
  if ((uVar1 < 0x201) && (param_1_00[0x2c] != 0x200)) {
    if ((uint)param_1_00[0x2c] < 0x200) {
      FUN_004181eb(0x200,uVar1);
    }
    param_1_00[0x2b] = uVar1;
    if ((uint)param_1_00[0x2c] < 8) {
      puVar6 = param_1_00 + 0x27;
    }
    else {
      puVar6 = (undefined4 *)param_1_00[0x27];
    }
    *(undefined2 *)((int)puVar6 + uVar1 * 2) = 0;
  }
  uVar3 = FUN_004325b6(L"Software\\");
  local_4._0_1_ = 9;
  uVar3 = FUN_008531f0(local_a8,uVar3,local_34);
  local_4._0_1_ = 10;
  FUN_00876890(1,uVar3);
  _free(local_8c);
  if (7 < local_90) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_a4);
  }
  local_90 = 7;
  local_94 = 0;
  local_a4 = local_a4 & 0xffff0000;
  local_4._0_1_ = 8;
  _free(local_64);
  if (7 < local_68) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_7c);
  }
  FUN_004325b6(PTR_DAT_03236318);
  local_4._0_1_ = 0xb;
  FUN_008768d0(param_1_00 + 0x16,local_a8);
  local_4._0_1_ = 8;
  _free(local_8c);
  if (7 < local_90) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_a4);
  }
  if ((param_5 & 1) != 0) {
    if (*(int *)(local_b0 + 0x14) == 0) {
      puVar4 = local_58;
LAB_008a9cf5:
      FID_conflict_assign(puVar4,0,0xffffffff);
    }
    else {
      puVar4 = local_b0;
      if (local_34 != local_b0) goto LAB_008a9cf5;
    }
    FUN_008a9260(0x200);
    FUN_008a9260(0x200);
    uVar3 = FUN_004325b6(L"Software\\");
    local_4._0_1_ = 0xc;
    uVar3 = FUN_008531f0(local_a8,uVar3,local_34);
    local_4._0_1_ = 0xd;
    FUN_00876890(2,uVar3);
    _free(local_8c);
    if (7 < local_90) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a4);
    }
    local_90 = 7;
    local_94 = 0;
    local_a4 = local_a4 & 0xffff0000;
    local_4._0_1_ = 8;
    _free(local_64);
    if (7 < local_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_7c);
    }
    FUN_004325b6(PTR_DAT_03236318);
    local_4._0_1_ = 0xe;
    FUN_008768d0(param_1_00 + 0x32,local_a8);
    local_4._0_1_ = 8;
    _free(local_8c);
    if (7 < local_90) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a4);
    }
  }
  FUN_00875e70(1);
  FUN_00876940(1);
  uVar2 = DAT_03235e94;
  if ((param_5 & 1) != 0) {
    if ((DAT_032bdb68 == 0) || (DVar5 = GetCurrentThreadId(), DVar5 == DAT_032bdb68)) {
      uVar2 = DAT_03235e94;
      DAT_03235e94 = 0;
    }
    else {
      uVar2 = FUN_00842f30(0);
    }
    local_b0 = (undefined *)CONCAT31(local_b0._1_3_,uVar2);
    local_4._0_1_ = 0xf;
    local_a9 = uVar2;
    FUN_00876940(0);
    FUN_00876940(0);
    local_4._0_1_ = 8;
    if ((DAT_032bdb68 != 0) && (DVar5 = GetCurrentThreadId(), DVar5 != DAT_032bdb68)) {
      FUN_00842f30(local_b0);
      uVar2 = DAT_03235e94;
    }
  }
  DAT_03235e94 = uVar2;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
LAB_008a9f37:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int __fastcall FUN_008a9f70(int param_1)

{
  return param_1 + 0x138;
}



void __fastcall FUN_008a9f80(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcecbf;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxRegConfig::vftable;
  local_4 = 3;
  _free((void *)param_1[0x55]);
  if (7 < (uint)param_1[0x54]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x4f]);
  }
  param_1[0x54] = 7;
  param_1[0x53] = 0;
  *(undefined2 *)(param_1 + 0x4f) = 0;
  FUN_008767d0(uVar1);
  local_4._0_1_ = 2;
  FUN_008767d0();
  local_4._0_1_ = 1;
  FUN_008767d0();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_008767d0();
  local_4 = 0xffffffff;
  FUN_00889940();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008aa060(undefined4 param_1_00,byte param_1)

{
  FUN_008a9f80();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall
FUN_008aa080(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  undefined *puVar2;
  char cVar3;
  undefined uVar4;
  short sVar5;
  int iVar6;
  int *piVar7;
  short *psVar8;
  DWORD DVar9;
  int iVar10;
  short *psVar11;
  short *psVar12;
  short *psVar13;
  undefined4 uStack_19c;
  undefined4 uStack_198;
  char *pcStack_194;
  undefined4 uStack_190;
  char *pcStack_18c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **ppbStack_188;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbStack_184;
  char *pcStack_180;
  undefined4 local_164;
  int local_160;
  int local_15c;
  undefined local_155;
  short **local_150;
  int local_14c;
  undefined local_148;
  short *local_144;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **local_140 [2];
  char local_138;
  undefined local_128 [20];
  undefined local_114 [152];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_7c [4];
  uint local_78;
  int local_68;
  uint local_64;
  void *local_60;
  uint local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bced45;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_164;
  ExceptionList = &local_c;
  pcStack_180 = (char *)0x0;
  pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           (param_1_00 + 0x138);
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  ppbStack_188 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                 0x8aa0fc;
  pbStack_184 = pbVar1;
  local_15c = param_1_00;
  FID_conflict_assign();
  local_3c = (void *)0x0;
  local_4 = 0;
  if (*(int *)(param_1 + 0x14) == 0) {
    pcStack_180 = (char *)0x8aa118;
    FUN_00855e10();
  }
  else {
    local_64 = 7;
    local_68 = 0;
    local_78 = local_78 & 0xffff0000;
    local_60 = (void *)0x0;
    pcStack_180 = (char *)&local_164;
    local_4 = 1;
    pbStack_184 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  0x8aa158;
    FUN_0081feb2();
    if (local_164 == (short *)0x2f) {
      if (local_7c != param_1) {
        pcStack_180 = (char *)0x0;
        pbStack_184 = param_1;
        ppbStack_188 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        **)0x8aa175;
        FID_conflict_assign();
      }
    }
    else {
      pcStack_180 = (char *)0x8aa18d;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
                (local_7c,*(int *)(param_1_00 + 0x14c) * 2);
      pcStack_180 = (char *)0x0;
      ppbStack_188 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      **)0x8aa19d;
      pbStack_184 = pbVar1;
      FID_conflict_append();
      if (local_68 == 0) {
LAB_008aa1c4:
        pcStack_180 = (char *)0x1;
        pbStack_184 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       *)0x8aa1d4;
        FID_conflict_append();
      }
      else {
        pcStack_180 = (char *)local_140;
        pbStack_184 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       *)0x8aa1b9;
        FUN_0081b3d8();
        pcStack_180 = (char *)0x8aa1c0;
        cVar3 = FUN_0081b52b();
        if (cVar3 != '\0') goto LAB_008aa1c4;
      }
      pcStack_180 = (char *)0x0;
      pbStack_184 = param_1;
      ppbStack_188 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      **)0x8aa1e4;
      FID_conflict_append();
    }
    local_160 = 0;
    iVar10 = -1;
    pcStack_180 = (char *)0x8aa1fc;
    piVar7 = (int *)FUN_00432231();
    iVar6 = *piVar7;
    if (*(uint *)(iVar6 + 0x18) < 8) {
      iVar6 = iVar6 + 4;
    }
    else {
      iVar6 = *(int *)(iVar6 + 4);
    }
    psVar13 = (short *)(iVar6 + piVar7[1] * 2);
    FUN_00432214();
    local_144 = psVar13 + local_68;
    pbStack_184 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  0x8aa234;
    pcStack_180 = (char *)pbVar1;
    FUN_00852280();
    local_14c = 0;
    local_148 = 0;
    psVar8 = *local_150;
    local_4._0_1_ = 2;
    psVar12 = psVar8;
    if (psVar13 < local_144) {
      local_164 = psVar13 + 3;
      psVar11 = local_144;
      do {
        sVar5 = *psVar13;
        if (sVar5 == 0x2f) {
          if (((psVar13[1] == 0x2e) && (psVar13[2] == 0x2e)) &&
             ((local_164 == psVar11 || (*local_164 == 0x2f)))) {
            if (local_160 == 0) {
              local_140[0] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                              **)&uStack_19c;
              FUN_0043c211(&DAT_00d25fa0);
              cVar3 = FUN_00846b30(2);
              if (cVar3 != '\0') {
                pcStack_180 = (char *)0x8aa2e6;
                FUN_004325b6();
                local_4._0_1_ = 3;
                pcStack_180 = (char *)0x8aa2fc;
                FUN_0043c211();
                pcStack_180 = local_114;
                local_4._0_1_ = 4;
                pbStack_184 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                               *)0x8aa316;
                FUN_00820bf9();
                pcStack_180 = (char *)0x8aa323;
                FUN_008433c0();
                local_140[0] = &pbStack_184;
                ppbStack_188 = &pbStack_184;
                pcStack_18c = (char *)0x8aa339;
                FUN_00432231();
                ppbStack_188 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                                **)&DAT_00d25fa0;
                pcStack_18c = "wxRegConfig::SetPath";
                uStack_190 = 0x103;
                pcStack_194 = "..\\..\\src\\msw\\regconf.cpp";
                uStack_198 = 2;
                local_4._0_1_ = 6;
                uStack_19c = 0x8aa363;
                FUN_008423d0();
                ppbStack_188 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                                **)local_128;
                local_4._0_1_ = 8;
                pcStack_18c = (char *)0x8aa37f;
                FUN_00848860();
                local_4._0_1_ = 5;
                FUN_00842440();
                local_4._0_1_ = 4;
                FUN_0081b5bc();
                FUN_0040159c();
                local_4._0_1_ = 2;
                FUN_0040159c();
                psVar13 = psVar13 + 2;
                local_164 = local_164 + 2;
                psVar11 = local_144;
                goto LAB_008aa45d;
              }
            }
            else {
              if (iVar10 == -1) {
                psVar12 = psVar12 + -1;
                sVar5 = *psVar12;
                while (sVar5 != 0x2f) {
                  psVar12 = psVar12 + -1;
                  sVar5 = *psVar12;
                }
              }
              else {
                psVar12 = psVar8 + iVar10;
                iVar10 = -1;
              }
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*psVar12 != 0x2f)) {
                pcStack_180 = "*dst == wxCONFIG_PATH_SEPARATOR";
                pbStack_184 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                               *)0xd383e4;
                ppbStack_188 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                                **)0x121;
                pcStack_18c = "..\\..\\src\\msw\\regconf.cpp";
                uStack_190 = 0x8aa421;
                FUN_00840480();
              }
              psVar12 = psVar12 + -1;
              local_160 = local_160 + -1;
            }
            psVar13 = psVar13 + 2;
            local_164 = local_164 + 2;
            psVar11 = local_144;
          }
          else {
            if ((psVar12 == psVar8) || (psVar12[-1] != 0x2f)) {
              iVar10 = (int)psVar12 - (int)psVar8 >> 1;
              local_160 = local_160 + 1;
              sVar5 = 0x2f;
              goto LAB_008aa45a;
            }
            psVar12 = psVar12 + -1;
          }
        }
        else {
LAB_008aa45a:
          *psVar12 = sVar5;
        }
LAB_008aa45d:
        psVar13 = psVar13 + 1;
        local_164 = local_164 + 1;
        psVar12 = psVar12 + 1;
      } while (psVar13 < psVar11);
    }
    if ((psVar12[-1] == 0x2f) && (psVar12 != psVar8 + 1)) {
      psVar12 = psVar12 + -1;
    }
    *psVar12 = 0;
    local_14c = (int)psVar12 - (int)psVar8 >> 1;
    local_148 = 1;
    local_4._0_1_ = 1;
    FUN_008a92b0();
    local_4 = (uint)local_4._1_3_ << 8;
    pcStack_180 = (char *)0x8aa4bb;
    _free(local_60);
    param_1_00 = local_15c;
    if (7 < local_64) {
                    // WARNING: Subroutine does not return
      pcStack_180 = &UNK_008aa4d9;
      FUN_00a3f6a1();
    }
  }
  if (*(int *)(param_1_00 + 0x14c) == local_44) {
    pcStack_180 = (char *)0x8aa506;
    iVar6 = FUN_00850760();
    if (iVar6 == 0) goto LAB_008aa716;
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  iVar6 = *(int *)(param_1_00 + 0x14c);
  local_4 = CONCAT31(local_4._1_3_,9);
  if (iVar6 != 0) {
    pcStack_180 = (char *)0x8aa558;
    piVar7 = (int *)FUN_00432231();
    puVar2 = (undefined *)local_140[0];
    iVar10 = *piVar7;
    if (*(uint *)(iVar10 + 0x18) < 8) {
      iVar10 = iVar10 + 4;
    }
    else {
      iVar10 = *(int *)(iVar10 + 4);
    }
    psVar13 = (short *)(iVar10 + piVar7[1] * 2);
    if ((local_138 != '\0') &&
       (param_1_00 = local_15c,
       local_140[0] !=
       (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)0x0)) {
      pcStack_180 = (char *)0x8aa585;
      _free(*(void **)((int)local_140[0] + 0x1c));
      if (*(uint *)(puVar2 + 0x18) < 8) {
        *(undefined4 *)(puVar2 + 0x18) = 7;
        *(undefined4 *)(puVar2 + 0x14) = 0;
        *(undefined2 *)(puVar2 + 4) = 0;
                    // WARNING: Subroutine does not return
        pcStack_180 = &UNK_008aa5b3;
        FUN_00a3f6a1();
      }
                    // WARNING: Subroutine does not return
      pcStack_180 = &UNK_008aa596;
      FUN_00a3f6a1();
    }
    pcStack_180 = local_34;
    pbStack_184 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  0x8aa5cc;
    FUN_00852280();
    psVar12 = psVar13 + iVar6;
    psVar8 = *local_150;
    for (; psVar13 < psVar12; psVar13 = psVar13 + 1) {
      sVar5 = *psVar13;
      if (sVar5 == 0x2f) {
        sVar5 = 0x5c;
      }
      *psVar8 = sVar5;
      psVar8 = psVar8 + 1;
    }
    local_148 = 1;
    local_14c = iVar6;
    FUN_008a92b0();
  }
  pcStack_180 = (char *)(param_1_00 + 0x58);
  pbStack_184 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                0x8aa62a;
  FUN_008768d0();
  uVar4 = DAT_03235e94;
  if ((*(byte *)(param_1_00 + 0x54) & 2) != 0) {
    pcStack_180 = (char *)(param_1_00 + 200);
    pbStack_184 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  0x8aa650;
    FUN_008768d0();
    if ((DAT_032bdb68 == 0) || (DVar9 = GetCurrentThreadId(), DVar9 == DAT_032bdb68)) {
      uVar4 = DAT_03235e94;
      DAT_03235e94 = 0;
    }
    else {
      pcStack_180 = (char *)0x8aa66d;
      uVar4 = FUN_00842f30();
    }
    local_164 = (short *)CONCAT31(local_164._1_3_,uVar4);
    local_4._0_1_ = 10;
    pcStack_180 = (char *)0x8aa69a;
    local_155 = uVar4;
    FUN_00876940();
    local_4 = CONCAT31(local_4._1_3_,9);
    if ((DAT_032bdb68 != 0) && (DVar9 = GetCurrentThreadId(), DVar9 != DAT_032bdb68)) {
      pcStack_180 = (char *)0x8aa6c2;
      FUN_00842f30();
      uVar4 = DAT_03235e94;
    }
  }
  DAT_03235e94 = uVar4;
  pcStack_180 = (char *)0x8aa6da;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    pcStack_180 = &UNK_008aa6f3;
    FUN_00a3f6a1();
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
LAB_008aa716:
  pcStack_180 = (char *)0x8aa723;
  _free(local_3c);
  if (local_40 < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  pcStack_180 = &UNK_008aa73c;
  FUN_00a3f6a1();
}



void __thiscall FUN_008aa770(undefined **param_1_00,undefined4 param_1,int param_2)

{
  bool bVar1;
  char cVar2;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  char *pcStack_f8;
  undefined4 uStack_f4;
  char *pcStack_f0;
  undefined ***pppuStack_ec;
  undefined **ppuStack_e8;
  undefined **ppuStack_e4;
  wchar_t *pwStack_e0;
  uint uStack_dc;
  undefined ***local_c8;
  undefined local_c4 [104];
  undefined *local_5c [5];
  int local_48;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bceda9;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_c8;
  uStack_dc = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_c;
  if (param_2 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pwStack_e0 = L"wxRegConfig::Read(): NULL param";
      ppuStack_e4 = (undefined **)&DAT_00d383fc;
      ppuStack_e8 = (undefined **)0xd38448;
      pppuStack_ec = (undefined ***)0x22f;
      pcStack_f0 = "..\\..\\src\\msw\\regconf.cpp";
      uStack_f4 = 0x8aa9b7;
      FUN_00840480();
    }
    goto LAB_008aa9bc;
  }
  pwStack_e0 = (wchar_t *)param_1;
  ppuStack_e8 = (undefined **)0x8aa7d1;
  ppuStack_e4 = param_1_00;
  FUN_00889da0();
  local_4 = 0;
  bVar1 = true;
  if (local_48 == 0) {
LAB_008aa925:
    pwStack_e0 = L"삄⑴㾃甀樉謁\xe8cf딬￼赕⒄\x84";
    cVar2 = FUN_008752b0();
    if (cVar2 != '\0') {
      if (param_1_00[0x24] == (undefined *)0x0) {
        pwStack_e0 = (wchar_t *)0x1;
        ppuStack_e4 = (undefined **)0x8aa944;
        FUN_00875e70();
      }
      pwStack_e0 = (wchar_t *)param_2;
      ppuStack_e4 = local_5c;
      pppuStack_ec = (undefined ***)0x8aa953;
      ppuStack_e8 = param_1_00 + 0x24;
      cVar2 = FUN_008a8b20();
      if (cVar2 != '\0') goto LAB_008aa908;
    }
    if (bVar1) {
      pwStack_e0 = (wchar_t *)param_2;
      ppuStack_e4 = local_5c;
      ppuStack_e8 = param_1_00 + 0x40;
      pppuStack_ec = (undefined ***)0x8aa973;
      cVar2 = FUN_008a8b20();
      if (cVar2 != '\0') goto LAB_008aa908;
    }
    local_4 = 0xffffffff;
    pwStack_e0 = L"⫫㶃屌̣琀校萈Óﱨ펃栀葈Ó⽨\x02栀艀Ó짨讀菿ᓄ쀲貋퀤";
    FUN_00889a70();
  }
  else {
    pwStack_e0 = (wchar_t *)0x0;
    ppuStack_e4 = (undefined **)&local_c8;
    ppuStack_e8 = (undefined **)0x8aa7ff;
    FUN_0081feb2();
    if (local_c8 != (undefined ***)0x21) goto LAB_008aa925;
    pwStack_e0 = (wchar_t *)param_2;
    ppuStack_e4 = local_5c;
    ppuStack_e8 = param_1_00 + 0x40;
    pppuStack_ec = (undefined ***)0x8aa81f;
    cVar2 = FUN_008a8b20();
    if (cVar2 == '\0') {
      bVar1 = false;
      goto LAB_008aa925;
    }
    pwStack_e0 = L"삄萏Ë";
    cVar2 = FUN_008752b0();
    if (cVar2 != '\0') {
      pwStack_e0 = (wchar_t *)local_5c;
      ppuStack_e4 = (undefined **)0x8aa84c;
      FUN_008a8b00();
      ppuStack_e4 = (undefined **)0x8aa853;
      cVar2 = FUN_00876d80();
      if (cVar2 != '\0') {
        local_c8 = (undefined ***)&uStack_100;
        FUN_0043c211(&DAT_00d25fa0);
        cVar2 = FUN_00846b30(2);
        if (cVar2 != '\0') {
          pwStack_e0 = L"User value for immutable key \'%s\' ignored.";
          ppuStack_e4 = (undefined **)0x8aa88e;
          FUN_0081c0f1();
          local_c8 = &ppuStack_e8;
          pppuStack_ec = &ppuStack_e8;
          pcStack_f0 = (char *)0x8aa8a4;
          FUN_00432231();
          pppuStack_ec = (undefined ***)&DAT_00d25fa0;
          pcStack_f0 = "wxRegConfig::DoReadString";
          uStack_f4 = 0x23a;
          pcStack_f8 = "..\\..\\src\\msw\\regconf.cpp";
          uStack_fc = 2;
          local_4._0_1_ = 2;
          uStack_100 = 0x8aa8cb;
          FUN_008423d0();
          pppuStack_ec = (undefined ***)local_c4;
          local_4._0_1_ = 4;
          pcStack_f0 = (char *)0x8aa8e7;
          FUN_00848860();
          local_4._0_1_ = 1;
          pwStack_e0 = (wchar_t *)0x8aa8f7;
          FUN_00842440();
          local_4 = (uint)local_4._1_3_ << 8;
          pwStack_e0 = (wchar_t *)0x8aa908;
          FUN_0081b5bc();
        }
      }
    }
LAB_008aa908:
    local_4 = 0xffffffff;
    pwStack_e0 = L"ư駩";
    FUN_00889a70();
  }
LAB_008aa9bc:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008aa9f0(undefined **param_1_00,undefined4 param_1,int param_2)

{
  bool bVar1;
  char cVar2;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  char *pcStack_f8;
  undefined4 uStack_f4;
  char *pcStack_f0;
  undefined ***pppuStack_ec;
  undefined **ppuStack_e8;
  char *pcStack_e4;
  wchar_t *pwStack_e0;
  uint uStack_dc;
  undefined ***local_c8;
  undefined local_c4 [104];
  undefined *local_5c [5];
  int local_48;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bceda9;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_c8;
  uStack_dc = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_c;
  if (param_2 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pwStack_e0 = L"wxRegConfig::Read(): NULL param";
      pcStack_e4 = "plResult";
      ppuStack_e8 = (undefined **)0xd384cc;
      pppuStack_ec = (undefined ***)0x254;
      pcStack_f0 = "..\\..\\src\\msw\\regconf.cpp";
      uStack_f4 = 0x8aac59;
      FUN_00840480();
    }
    goto LAB_008aac5e;
  }
  pwStack_e0 = (wchar_t *)param_1;
  ppuStack_e8 = (undefined **)0x8aaa51;
  pcStack_e4 = (char *)param_1_00;
  FUN_00889da0();
  local_4 = 0;
  bVar1 = true;
  if (local_48 == 0) {
LAB_008aabc7:
    pwStack_e0 = L"삄⑴㾃甀樉謁\xe8cf늊￼赕⒄\x84";
    cVar2 = FUN_008752b0();
    if (cVar2 != '\0') {
      if (param_1_00[0x24] == (undefined *)0x0) {
        pwStack_e0 = (wchar_t *)0x1;
        pcStack_e4 = (char *)0x8aabe6;
        FUN_00875e70();
      }
      pwStack_e0 = (wchar_t *)param_2;
      pcStack_e4 = (char *)local_5c;
      pppuStack_ec = (undefined ***)0x8aabf5;
      ppuStack_e8 = param_1_00 + 0x24;
      cVar2 = FUN_008a8b60();
      if (cVar2 != '\0') goto LAB_008aabaa;
    }
    if (bVar1) {
      pwStack_e0 = (wchar_t *)param_2;
      pcStack_e4 = (char *)local_5c;
      ppuStack_e8 = param_1_00 + 0x40;
      pppuStack_ec = (undefined ***)0x8aac15;
      cVar2 = FUN_008a8b60();
      if (cVar2 != '\0') goto LAB_008aabaa;
    }
    local_4 = 0xffffffff;
    pwStack_e0 = L"⫫㶃屌̣琀校萈Ó쁨펄栀蓌Ó周\x02栀艀Ó⟨菱菿ᓄ쀲貋퀤";
    FUN_00889a70();
  }
  else {
    pwStack_e0 = (wchar_t *)0x0;
    pcStack_e4 = (char *)&local_c8;
    ppuStack_e8 = (undefined **)0x8aaa7f;
    FUN_0081feb2();
    if (local_c8 != (undefined ***)0x21) goto LAB_008aabc7;
    if (param_1_00[0x40] == (undefined *)0x0) {
LAB_008aabc5:
      bVar1 = false;
      goto LAB_008aabc7;
    }
    pwStack_e0 = (wchar_t *)local_5c;
    pcStack_e4 = (char *)0x8aaaac;
    cVar2 = FUN_00876d80();
    if (cVar2 == '\0') goto LAB_008aabc5;
    pwStack_e0 = (wchar_t *)param_2;
    pcStack_e4 = (char *)local_5c;
    ppuStack_e8 = (undefined **)0x8aaac4;
    cVar2 = FUN_00878780();
    if (cVar2 == '\0') goto LAB_008aabc5;
    pwStack_e0 = L"삄萏Ë";
    cVar2 = FUN_008752b0();
    if (cVar2 != '\0') {
      pwStack_e0 = (wchar_t *)local_5c;
      pcStack_e4 = (char *)0x8aaaee;
      FUN_008a8b00();
      pcStack_e4 = (char *)0x8aaaf5;
      cVar2 = FUN_00876d80();
      if (cVar2 != '\0') {
        local_c8 = (undefined ***)&uStack_100;
        FUN_0043c211(&DAT_00d25fa0);
        cVar2 = FUN_00846b30(2);
        if (cVar2 != '\0') {
          pwStack_e0 = L"User value for immutable key \'%s\' ignored.";
          pcStack_e4 = (char *)0x8aab30;
          FUN_0081c0f1();
          local_c8 = &ppuStack_e8;
          pppuStack_ec = &ppuStack_e8;
          pcStack_f0 = (char *)0x8aab46;
          FUN_00432231();
          pppuStack_ec = (undefined ***)&DAT_00d25fa0;
          pcStack_f0 = "wxRegConfig::DoReadLong";
          uStack_f4 = 0x25f;
          pcStack_f8 = "..\\..\\src\\msw\\regconf.cpp";
          uStack_fc = 2;
          local_4._0_1_ = 2;
          uStack_100 = 0x8aab6d;
          FUN_008423d0();
          pppuStack_ec = (undefined ***)local_c4;
          local_4._0_1_ = 4;
          pcStack_f0 = (char *)0x8aab89;
          FUN_00848860();
          local_4._0_1_ = 1;
          pwStack_e0 = (wchar_t *)0x8aab99;
          FUN_00842440();
          local_4 = (uint)local_4._1_3_ << 8;
          pwStack_e0 = (wchar_t *)0x8aabaa;
          FUN_0081b5bc();
        }
      }
    }
LAB_008aabaa:
    local_4 = 0xffffffff;
    pwStack_e0 = L"ư駩";
    FUN_00889a70();
  }
LAB_008aac5e:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008aac90(undefined **param_1_00,undefined4 param_1,int param_2)

{
  bool bVar1;
  char cVar2;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  char *pcStack_f8;
  undefined4 uStack_f4;
  char *pcStack_f0;
  undefined ***pppuStack_ec;
  undefined **ppuStack_e8;
  undefined **ppuStack_e4;
  wchar_t *pwStack_e0;
  uint uStack_dc;
  undefined ***local_c8;
  undefined local_c4 [104];
  undefined *local_5c [5];
  int local_48;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bceda9;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_c8;
  uStack_dc = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_c;
  if (param_2 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pwStack_e0 = L"wxRegConfig::Read(): NULL param";
      ppuStack_e4 = (undefined **)&DAT_00d2ce38;
      ppuStack_e8 = (undefined **)0xd384e4;
      pppuStack_ec = (undefined ***)0x276;
      pcStack_f0 = "..\\..\\src\\msw\\regconf.cpp";
      uStack_f4 = 0x8aaef9;
      FUN_00840480();
    }
    goto LAB_008aaefe;
  }
  pwStack_e0 = (wchar_t *)param_1;
  ppuStack_e8 = (undefined **)0x8aacf1;
  ppuStack_e4 = param_1_00;
  FUN_00889da0();
  local_4 = 0;
  bVar1 = true;
  if (local_48 == 0) {
LAB_008aae67:
    pwStack_e0 = L"삄⑴㾃甀樉謁\xe8cf꿪￼赕⒄\x84";
    cVar2 = FUN_008752b0();
    if (cVar2 != '\0') {
      if (param_1_00[0x24] == (undefined *)0x0) {
        pwStack_e0 = (wchar_t *)0x1;
        ppuStack_e4 = (undefined **)0x8aae86;
        FUN_00875e70();
      }
      pwStack_e0 = (wchar_t *)param_2;
      ppuStack_e4 = local_5c;
      pppuStack_ec = (undefined ***)0x8aae95;
      ppuStack_e8 = param_1_00 + 0x24;
      cVar2 = FUN_008a8ba0();
      if (cVar2 != '\0') goto LAB_008aae4a;
    }
    if (bVar1) {
      pwStack_e0 = (wchar_t *)param_2;
      ppuStack_e4 = local_5c;
      ppuStack_e8 = param_1_00 + 0x40;
      pppuStack_ec = (undefined ***)0x8aaeb5;
      cVar2 = FUN_008a8ba0();
      if (cVar2 != '\0') goto LAB_008aae4a;
    }
    local_4 = 0xffffffff;
    pwStack_e0 = L"⫫㶃屌̣琀校萈Ó㡨틎栀蓤Ó癨\x02栀艀Ó蟨凌菿ᓄ쀲貋퀤";
    FUN_00889a70();
  }
  else {
    pwStack_e0 = (wchar_t *)0x0;
    ppuStack_e4 = (undefined **)&local_c8;
    ppuStack_e8 = (undefined **)0x8aad1f;
    FUN_0081feb2();
    if (local_c8 != (undefined ***)0x21) goto LAB_008aae67;
    if (param_1_00[0x40] == (undefined *)0x0) {
LAB_008aae65:
      bVar1 = false;
      goto LAB_008aae67;
    }
    pwStack_e0 = (wchar_t *)local_5c;
    ppuStack_e4 = (undefined **)0x8aad4c;
    cVar2 = FUN_00876d80();
    if (cVar2 == '\0') goto LAB_008aae65;
    pwStack_e0 = (wchar_t *)param_2;
    ppuStack_e4 = local_5c;
    ppuStack_e8 = (undefined **)0x8aad64;
    cVar2 = FUN_00877730();
    if (cVar2 == '\0') goto LAB_008aae65;
    pwStack_e0 = L"삄萏Ë";
    cVar2 = FUN_008752b0();
    if (cVar2 != '\0') {
      pwStack_e0 = (wchar_t *)local_5c;
      ppuStack_e4 = (undefined **)0x8aad8e;
      FUN_008a8b00();
      ppuStack_e4 = (undefined **)0x8aad95;
      cVar2 = FUN_00876d80();
      if (cVar2 != '\0') {
        local_c8 = (undefined ***)&uStack_100;
        FUN_0043c211(&DAT_00d25fa0);
        cVar2 = FUN_00846b30(2);
        if (cVar2 != '\0') {
          pwStack_e0 = L"User value for immutable key \'%s\' ignored.";
          ppuStack_e4 = (undefined **)0x8aadd0;
          FUN_0081c0f1();
          local_c8 = &ppuStack_e8;
          pppuStack_ec = &ppuStack_e8;
          pcStack_f0 = (char *)0x8aade6;
          FUN_00432231();
          pppuStack_ec = (undefined ***)&DAT_00d25fa0;
          pcStack_f0 = "wxRegConfig::DoReadBinary";
          uStack_f4 = 0x281;
          pcStack_f8 = "..\\..\\src\\msw\\regconf.cpp";
          uStack_fc = 2;
          local_4._0_1_ = 2;
          uStack_100 = 0x8aae0d;
          FUN_008423d0();
          pppuStack_ec = (undefined ***)local_c4;
          local_4._0_1_ = 4;
          pcStack_f0 = (char *)0x8aae29;
          FUN_00848860();
          local_4._0_1_ = 1;
          pwStack_e0 = (wchar_t *)0x8aae39;
          FUN_00842440();
          local_4 = (uint)local_4._1_3_ << 8;
          pwStack_e0 = (wchar_t *)0x8aae4a;
          FUN_0081b5bc();
        }
      }
    }
LAB_008aae4a:
    local_4 = 0xffffffff;
    pwStack_e0 = L"ư駩";
    FUN_00889a70();
  }
LAB_008aaefe:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008aaf30(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uStack_fc;
  undefined4 uStack_f8;
  char *pcStack_f4;
  undefined4 uStack_f0;
  char *pcStack_ec;
  undefined4 *puStack_e8;
  undefined4 uStack_e4;
  undefined **ppuStack_e0;
  wchar_t *pwStack_dc;
  uint uStack_d8;
  undefined4 *local_c8;
  undefined local_c4 [104];
  undefined *local_5c [5];
  int local_48;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcee69;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_c8;
  uStack_d8 = DAT_0323f878 ^ (uint)&stack0xffffff2c;
  ExceptionList = &local_c;
  pwStack_dc = (wchar_t *)param_1;
  uStack_e4 = 0x8aaf88;
  ppuStack_e0 = (undefined **)param_1_00;
  FUN_00889da0();
  local_4 = 0;
  if (local_48 != 0) {
    pwStack_dc = (wchar_t *)0x0;
    ppuStack_e0 = (undefined **)&local_c8;
    uStack_e4 = 0x8aafb0;
    FUN_0081feb2();
    if (local_c8 == (undefined4 *)0x21) {
      local_c8 = &uStack_fc;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        pwStack_dc = L"Can\'t change immutable entry \'%s\'.";
        ppuStack_e0 = (undefined **)0x8aafee;
        FUN_0081c0f1();
        local_c8 = &uStack_e4;
        puStack_e8 = &uStack_e4;
        pcStack_ec = (char *)0x8ab004;
        FUN_00432231();
        puStack_e8 = (undefined4 *)&DAT_00d25fa0;
        pcStack_ec = "wxRegConfig::DoWriteString";
        uStack_f0 = 0x29b;
        pcStack_f4 = "..\\..\\src\\msw\\regconf.cpp";
        uStack_f8 = 1;
        local_4._0_1_ = 2;
        uStack_fc = 0x8ab02b;
        FUN_008423d0();
        puStack_e8 = (undefined4 *)local_c4;
        local_4._0_1_ = 4;
        pcStack_ec = (char *)0x8ab047;
        FUN_00848860();
        local_4._0_1_ = 1;
        pwStack_dc = L"䲍ᐤ鲈퐤";
        FUN_00842440();
        local_4 = (uint)local_4._1_3_ << 8;
        pwStack_dc = L"䲍砤蓇퐤";
        FUN_0081b5bc();
      }
      local_4 = 0xffffffff;
      pwStack_dc = L"쀲㯫욁\x90";
      FUN_00889a70();
      goto LAB_008ab0bb;
    }
  }
  if (*(int *)(param_1_00 + 0x90) == 0) {
    pwStack_dc = (wchar_t *)0x1;
    ppuStack_e0 = (undefined **)0x8ab093;
    FUN_00875e70();
  }
  pwStack_dc = (wchar_t *)param_2;
  ppuStack_e0 = local_5c;
  uStack_e4 = 0x8ab0a3;
  FUN_008779b0();
  local_4 = 0xffffffff;
  pwStack_dc = L"쎊貋찤";
  FUN_00889a70();
LAB_008ab0bb:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008ab0f0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uStack_f8;
  undefined4 uStack_f4;
  char *pcStack_f0;
  undefined4 uStack_ec;
  char *pcStack_e8;
  undefined4 *puStack_e4;
  undefined4 uStack_e0;
  undefined **ppuStack_dc;
  wchar_t *pwStack_d8;
  uint uStack_d4;
  undefined4 *local_c8;
  undefined local_c4 [104];
  undefined *local_5c [5];
  int local_48;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcee09;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_c8;
  uStack_d4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_c;
  pwStack_d8 = (wchar_t *)param_1;
  uStack_e0 = 0x8ab13d;
  ppuStack_dc = (undefined **)param_1_00;
  FUN_00889da0();
  local_4 = 0;
  if (local_48 != 0) {
    pwStack_d8 = (wchar_t *)0x0;
    ppuStack_dc = (undefined **)&local_c8;
    uStack_e0 = 0x8ab165;
    FUN_0081feb2();
    if (local_c8 == (undefined4 *)0x21) {
      local_c8 = &uStack_f8;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        pwStack_d8 = L"Can\'t change immutable entry \'%s\'.";
        ppuStack_dc = (undefined **)0x8ab1a3;
        FUN_0081c0f1();
        local_c8 = &uStack_e0;
        puStack_e4 = &uStack_e0;
        pcStack_e8 = (char *)0x8ab1b9;
        FUN_00432231();
        puStack_e4 = (undefined4 *)&DAT_00d25fa0;
        pcStack_e8 = "wxRegConfig::DoWriteLong";
        uStack_ec = 0x2a7;
        pcStack_f0 = "..\\..\\src\\msw\\regconf.cpp";
        uStack_f4 = 1;
        local_4._0_1_ = 2;
        uStack_f8 = 0x8ab1e0;
        FUN_008423d0();
        puStack_e4 = (undefined4 *)local_c4;
        local_4._0_1_ = 4;
        pcStack_e8 = (char *)0x8ab1fc;
        FUN_00848860();
        local_4._0_1_ = 1;
        pwStack_d8 = L"䲍ဤ鲈퀤";
        FUN_00842440();
        local_4 = (uint)local_4._1_3_ << 8;
        pwStack_d8 = L"䲍琤蓇퀤";
        FUN_0081b5bc();
      }
      local_4 = 0xffffffff;
      pwStack_d8 = L"쀲㿫욁\x90";
      FUN_00889a70();
      goto LAB_008ab274;
    }
  }
  if (*(int *)(param_1_00 + 0x90) == 0) {
    pwStack_d8 = (wchar_t *)0x1;
    ppuStack_dc = (undefined **)0x8ab248;
    FUN_00875e70();
  }
  pwStack_d8 = (wchar_t *)param_2;
  ppuStack_dc = local_5c;
  uStack_e0 = 0x8ab25c;
  FUN_00877240();
  local_4 = 0xffffffff;
  pwStack_d8 = L"쎊貋젤";
  FUN_00889a70();
LAB_008ab274:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008ab2a0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uStack_fc;
  undefined4 uStack_f8;
  char *pcStack_f4;
  undefined4 uStack_f0;
  char *pcStack_ec;
  undefined4 *puStack_e8;
  undefined4 uStack_e4;
  undefined **ppuStack_e0;
  wchar_t *pwStack_dc;
  uint uStack_d8;
  undefined4 *local_c8;
  undefined local_c4 [104];
  undefined *local_5c [5];
  int local_48;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcee69;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_c8;
  uStack_d8 = DAT_0323f878 ^ (uint)&stack0xffffff2c;
  ExceptionList = &local_c;
  pwStack_dc = (wchar_t *)param_1;
  uStack_e4 = 0x8ab2f8;
  ppuStack_e0 = (undefined **)param_1_00;
  FUN_00889da0();
  local_4 = 0;
  if (local_48 != 0) {
    pwStack_dc = (wchar_t *)0x0;
    ppuStack_e0 = (undefined **)&local_c8;
    uStack_e4 = 0x8ab320;
    FUN_0081feb2();
    if (local_c8 == (undefined4 *)0x21) {
      local_c8 = &uStack_fc;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        pwStack_dc = L"Can\'t change immutable entry \'%s\'.";
        ppuStack_e0 = (undefined **)0x8ab35e;
        FUN_0081c0f1();
        local_c8 = &uStack_e4;
        puStack_e8 = &uStack_e4;
        pcStack_ec = (char *)0x8ab374;
        FUN_00432231();
        puStack_e8 = (undefined4 *)&DAT_00d25fa0;
        pcStack_ec = "wxRegConfig::DoWriteBinary";
        uStack_f0 = 0x2b3;
        pcStack_f4 = "..\\..\\src\\msw\\regconf.cpp";
        uStack_f8 = 1;
        local_4._0_1_ = 2;
        uStack_fc = 0x8ab39b;
        FUN_008423d0();
        puStack_e8 = (undefined4 *)local_c4;
        local_4._0_1_ = 4;
        pcStack_ec = (char *)0x8ab3b7;
        FUN_00848860();
        local_4._0_1_ = 1;
        pwStack_dc = L"䲍ᐤ鲈퐤";
        FUN_00842440();
        local_4 = (uint)local_4._1_3_ << 8;
        pwStack_dc = L"䲍砤蓇퐤";
        FUN_0081b5bc();
      }
      local_4 = 0xffffffff;
      pwStack_dc = L"쀲㯫욁\x90";
      FUN_00889a70();
      goto LAB_008ab42b;
    }
  }
  if (*(int *)(param_1_00 + 0x90) == 0) {
    pwStack_dc = (wchar_t *)0x1;
    ppuStack_e0 = (undefined **)0x8ab403;
    FUN_00875e70();
  }
  pwStack_dc = (wchar_t *)param_2;
  ppuStack_e0 = local_5c;
  uStack_e4 = 0x8ab413;
  FUN_008774b0();
  local_4 = 0xffffffff;
  pwStack_dc = L"쎊貋찤";
  FUN_00889a70();
LAB_008ab42b:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined * FUN_008ab460(void)

{
  return &DAT_032376a4;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

bool FUN_008ab470(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int in_EAX;
  int iVar4;
  
  uVar1 = *(undefined4 *)(in_EAX + 0x24);
  uVar2 = *(undefined4 *)(in_EAX + 4);
  uVar3 = *(undefined4 *)(in_EAX + 0x20);
  if ((_DAT_032bddf4 & 1) == 0) {
    _DAT_032bddf4 = _DAT_032bddf4 | 1;
    DAT_032bddf0 = GetCurrentProcess();
  }
  iVar4 = (*DAT_032bdde4)(DAT_032bddf0,uVar3,uVar1,uVar2,param_1,param_2);
  return iVar4 != 0;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

uint FUN_008ab4c0(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int in_EAX;
  int iVar3;
  uint uVar4;
  undefined local_4 [4];
  
  uVar1 = *(undefined4 *)(in_EAX + 0x24);
  uVar4 = *(uint *)(in_EAX + 4);
  uVar2 = *(undefined4 *)(in_EAX + 0x20);
  if ((_DAT_032bddf4 & 1) == 0) {
    _DAT_032bddf4 = _DAT_032bddf4 | 1;
    DAT_032bddf0 = GetCurrentProcess();
  }
  iVar3 = (*DAT_032bdde4)(DAT_032bddf0,uVar2,uVar1,uVar4,5,local_4);
  return -(uint)(iVar3 != 0) & uVar4;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

int FUN_008ab520(int param_1,void **param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  void **lp;
  int iVar4;
  BOOL BVar5;
  int iVar6;
  int local_8;
  uint uStack_4;
  
  local_8 = 0;
  while( true ) {
    uVar1 = *(undefined4 *)(param_1 + 4);
    uVar2 = *(undefined4 *)(param_1 + 0x20);
    uVar3 = *(undefined4 *)(param_1 + 0x24);
    if ((_DAT_032bddf4 & 1) == 0) {
      _DAT_032bddf4 = _DAT_032bddf4 | 1;
      DAT_032bddf0 = GetCurrentProcess();
    }
    iVar6 = 0;
    iVar4 = (*DAT_032bdde4)(DAT_032bddf0,uVar2,uVar3,uVar1,0,&local_8);
    if ((iVar4 == 0) || (iVar6 != 0xe)) {
      return iVar6;
    }
    uVar1 = *(undefined4 *)(param_1 + 4);
    uVar2 = *(undefined4 *)(param_1 + 0x20);
    uVar3 = *(undefined4 *)(param_1 + 0x24);
    if ((_DAT_032bddf4 & 1) == 0) {
      _DAT_032bddf4 = _DAT_032bddf4 | 1;
      DAT_032bddf0 = GetCurrentProcess();
    }
    iVar4 = (*DAT_032bdde4)(DAT_032bddf0,uVar2,uVar3,uVar1,4,&stack0xffffffec);
    if (iVar4 == 0) break;
    if (param_1 == *(int *)(param_1 + 4)) {
      return local_8;
    }
    *(int *)(param_1 + 4) = param_1;
    if ((param_2 != (void **)0x0) && (*param_2 != (void *)0x0)) {
      uVar1 = *(undefined4 *)(param_1 + 0x20);
      uVar2 = *(undefined4 *)(param_1 + 0x24);
      if ((_DAT_032bddf4 & 1) == 0) {
        _DAT_032bddf4 = _DAT_032bddf4 | 1;
        DAT_032bddf0 = GetCurrentProcess();
      }
      iVar4 = (*DAT_032bdde4)(DAT_032bddf0,uVar1,uVar2,param_1,5,&uStack_4);
      if ((-(uint)(iVar4 != 0) & uStack_4) != 2) {
        lp = (void **)*param_2;
        BVar5 = IsBadReadPtr(lp,4);
        if (BVar5 != 0) {
          return local_8;
        }
        *param_2 = *lp;
      }
    }
  }
  return local_8;
}



undefined4 * __thiscall
FUN_008ab670(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,int param_3,
            undefined4 param_4)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  param_1_00[1] = param_2;
  if (((param_3 != 0) && (uVar1 = FUN_00886c70(param_4), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 0x20) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<__int64>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_008ab6e0(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 0x40) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<float>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



void __thiscall FUN_008ab750(undefined4 param_1_00,uint param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  FUN_0086f710(param_2,param_1,1);
  uVar1 = FUN_008854f0();
  FUN_00853980(param_1_00,uVar1,param_1 & 0xffff);
  return;
}



void __thiscall FUN_008ab790(undefined4 param_1_00,float param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  FUN_008ab6e0(param_2,param_1,1);
  uVar1 = FUN_008854f0();
  FUN_00853980(param_1_00,uVar1,(double)param_1);
  return;
}



void __thiscall FUN_008ab7d0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  FUN_00840d00(param_2,param_1,1);
  uVar1 = FUN_008854f0();
  FUN_00853980(param_1_00,uVar1,param_1);
  return;
}



void __thiscall FUN_008ab810(undefined4 param_1_00,undefined4 param_1,undefined8 param_2)

{
  undefined4 uVar1;
  
  FUN_00847420(param_2,param_1,1);
  uVar1 = FUN_008854f0();
  FUN_00853980(param_1_00,uVar1,param_2);
  return;
}



void __thiscall
FUN_008ab850(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_008ab670(param_2,param_3,param_1,1);
  uVar1 = FUN_008854f0();
  FUN_00853980(param_1_00,uVar1,param_2,param_3);
  return;
}



void __thiscall FUN_008ab890(undefined4 param_1_00,uint param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  FUN_0081af70(param_2,param_1,1);
  uVar1 = FUN_008854f0();
  FUN_00853980(param_1_00,uVar1,param_1 & 0xff);
  return;
}



undefined4 FUN_008ab8d0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  
  FUN_0083e8f0(param_4,param_2,2);
  FUN_0083e8f0(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,0,param_2);
  return param_1;
}



void FUN_008ab930(undefined4 param_1)

{
  uint uVar1;
  DWORD DVar2;
  undefined4 uVar3;
  int iVar4;
  LPCWSTR lpOutputString;
  undefined local_44 [20];
  undefined auStack_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bceea8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_44;
  ExceptionList = &local_c;
  FUN_0081c0f1(L"dbghelp: %s() failed: %s\r\n");
  local_4 = 0;
  DVar2 = GetLastError();
  uVar3 = FUN_00843700(DVar2,uVar1);
  iVar4 = FUN_008ab8d0(auStack_30,local_44,param_1,uVar3);
  if (*(uint *)(iVar4 + 0x18) < 8) {
    lpOutputString = (LPCWSTR)(iVar4 + 4);
  }
  else {
    lpOutputString = *(LPCWSTR *)(iVar4 + 4);
  }
  OutputDebugStringW(lpOutputString);
  _free(pvStack_14);
  if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c);
  }
  uStack_18 = 7;
  uStack_1c = 0;
  uStack_2c = uStack_2c & 0xffff0000;
  local_4 = 0xffffffff;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return;
}



undefined4 FUN_008aba00(void)

{
  wchar_t *pwVar1;
  uint uVar2;
  wchar_t *pwVar3;
  undefined local_54 [4];
  undefined4 local_50;
  uint local_3c;
  void *local_38;
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcef40;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  FUN_004325b6(L"StackWalk");
  local_4 = 0;
  DAT_032bddb8 = FUN_0089f060(local_54,0);
  local_4 = 0xffffffff;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50,uVar2);
  }
  if (DAT_032bddb8 == 0) {
    pwVar1 = L"Function StackWalk() not found.\n";
    do {
      pwVar3 = pwVar1;
      pwVar1 = pwVar3 + 1;
    } while (*pwVar3 != L'\0');
    FUN_00473ccc(L"Function StackWalk() not found.\n",(int)(pwVar3 + -0x69c5b4) >> 1);
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6(L"SymFunctionTableAccess");
  local_4 = 1;
  DAT_032bddbc = FUN_0089f060(local_54,0);
  local_4 = 0xffffffff;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  if (DAT_032bddbc == 0) {
    pwVar1 = L"Function SymFunctionTableAccess() not found.\n";
    do {
      pwVar3 = pwVar1;
      pwVar1 = pwVar3 + 1;
    } while (*pwVar3 != L'\0');
    FUN_00473ccc(L"Function SymFunctionTableAccess() not found.\n",(int)(pwVar3 + -0x69c56c) >> 1);
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6(L"SymGetModuleBase");
  local_4 = 2;
  DAT_032bddc0 = FUN_0089f060(local_54,0);
  local_4 = 0xffffffff;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  if (DAT_032bddc0 == 0) {
    FUN_00473d8f(L"Function SymGetModuleBase() not found.\n");
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6(L"SymGetLineFromAddr");
  local_4 = 3;
  DAT_032bddc4 = FUN_0089f060(local_54,0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  if (DAT_032bddc4 == 0) {
    FUN_00473d8f(L"Function SymGetLineFromAddr() not found.\n");
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6(L"EnumerateLoadedModules");
  local_4 = 4;
  DAT_032bddc8 = FUN_0089f060(local_54,0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  if (DAT_032bddc8 == 0) {
    FUN_00473d8f(L"Function EnumerateLoadedModules() not found.\n");
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6(L"SymGetOptions");
  local_4 = 5;
  DAT_032bddcc = FUN_0089f060(local_54,0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  if (DAT_032bddcc == 0) {
    FUN_00473d8f(L"Function SymGetOptions() not found.\n");
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6(L"SymSetOptions");
  local_4 = 6;
  DAT_032bddd0 = FUN_0089f060(local_54,0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  if (DAT_032bddd0 == 0) {
    FUN_00473d8f(L"Function SymSetOptions() not found.\n");
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6(L"SymInitialize");
  local_4 = 7;
  DAT_032bddd4 = FUN_0089f060(local_54,0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  if (DAT_032bddd4 == 0) {
    FUN_00473d8f(L"Function SymInitialize() not found.\n");
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6(L"SymFromAddr");
  local_4 = 8;
  DAT_032bddd8 = FUN_0089f060(local_54,0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  if (DAT_032bddd8 == 0) {
    FUN_00473d8f(L"Function SymFromAddr() not found.\n");
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6(L"SymSetContext");
  local_4 = 9;
  DAT_032bdddc = FUN_0089f060(local_54,0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  if (DAT_032bdddc == 0) {
    FUN_00473d8f(L"Function SymSetContext() not found.\n");
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6(L"SymEnumSymbols");
  local_4 = 10;
  DAT_032bdde0 = FUN_0089f060(local_54,0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  if (DAT_032bdde0 == 0) {
    FUN_00473d8f(L"Function SymEnumSymbols() not found.\n");
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6(L"SymGetTypeInfo");
  local_4 = 0xb;
  DAT_032bdde4 = FUN_0089f060(local_54,0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  if (DAT_032bdde4 == 0) {
    FUN_00473d8f(L"Function SymGetTypeInfo() not found.\n");
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6(L"SymCleanup");
  local_4 = 0xc;
  DAT_032bdde8 = FUN_0089f060(local_54,0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  if (DAT_032bdde8 == 0) {
    FUN_00473d8f(L"Function SymCleanup() not found.\n");
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6(L"MiniDumpWriteDump");
  local_4 = 0xd;
  DAT_032bddec = FUN_0089f060(local_30,0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  if (DAT_032bddec == 0) {
    FUN_00473d8f(L"Function MiniDumpWriteDump() not found.\n");
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = local_c;
  return 1;
}



// WARNING: Removing unreachable block (ram,0x008ac0b5)
// WARNING: Removing unreachable block (ram,0x008ac0c2)
// WARNING: Removing unreachable block (ram,0x008ac0e7)
// WARNING: Removing unreachable block (ram,0x008ac0f0)
// WARNING: Removing unreachable block (ram,0x008ac0fb)
// WARNING: Removing unreachable block (ram,0x008ac166)

undefined4 FUN_008ac020(void)

{
  wchar_t *pwVar1;
  wchar_t *pwVar2;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcef70;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_004325b6(L"dbghelp.dll");
  local_4 = 0;
  FUN_0089ed30(local_30,8);
  local_4 = CONCAT31(local_4._1_3_,2);
  _free(local_14);
  if (local_18 < 8) {
    local_2c = local_2c & 0xffff0000;
    pwVar1 = 
    L"Please install dbghelp.dll available free of charge from Microsoft to get more detailed crash information!"
    ;
    do {
      pwVar2 = pwVar1;
      pwVar1 = pwVar2 + 1;
    } while (*pwVar2 != L'\0');
    local_18 = 7;
    local_1c = 0;
    FUN_00473ccc(L"Please install dbghelp.dll available free of charge from Microsoft to get more detailed crash information!"
                 ,(int)(pwVar2 + -0x69c62c) >> 1);
    pwVar1 = L"\nLatest dbghelp.dll is available at http://www.microsoft.com/whdc/ddk/debugging/\n";
    do {
      pwVar2 = pwVar1;
      pwVar1 = pwVar2 + 1;
    } while (*pwVar2 != L'\0');
    FUN_00473ccc(L"\nLatest dbghelp.dll is available at http://www.microsoft.com/whdc/ddk/debugging/\n"
                 ,(int)(pwVar2 + -0x69c5d8) >> 1);
    ExceptionList = local_c;
    return 0;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_2c);
}



undefined4 FUN_008ac190(void)

{
  uint uVar1;
  
  if (DAT_032376a0 == 0xffffffff) {
    uVar1 = FUN_008ac020();
    DAT_032376a0 = uVar1 & 0xff;
  }
  return CONCAT31((int3)(DAT_032376a0 >> 8),DAT_032376a0 != 0);
}



int FUN_008ac1c0(int param_1,int param_2)

{
  short sVar1;
  uint uVar2;
  HANDLE pvVar3;
  int iVar4;
  short *psVar5;
  void *unaff_EDI;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  short *hMem;
  undefined *puVar9;
  undefined local_18 [4];
  undefined4 local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcefa9;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_10 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  uVar8 = *(undefined4 *)(param_2 + 4);
  puVar9 = local_18;
  uVar7 = *(undefined4 *)(param_2 + 0x24);
  uVar6 = *(undefined4 *)(param_2 + 0x20);
  hMem = (short *)0x1;
  local_4 = 0;
  local_14 = 1;
  pvVar3 = GetCurrentProcess();
  iVar4 = (*DAT_032bdde4)(pvVar3,uVar6,uVar7,uVar8,hMem,puVar9,uVar2);
  if (iVar4 != 0) {
    if (hMem == (short *)0x0) {
      FUN_00432156();
    }
    else {
      psVar5 = hMem;
      do {
        sVar1 = *psVar5;
        psVar5 = psVar5 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign(hMem,(int)psVar5 - (int)(hMem + 1) >> 1);
    }
    LocalFree(hMem);
  }
  ExceptionList = unaff_EDI;
  return param_1;
}



void FUN_008ac2a0(int param_1,int param_2,UINT_PTR param_3,int param_4,undefined8 *param_5)

{
  BOOL BVar1;
  uint uVar2;
  LPCSTR lpsz;
  undefined auStack_4c [20];
  undefined4 local_38;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_34 [4];
  uint uStack_30;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf008;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_4c;
  ExceptionList = &local_c;
  local_38 = 0;
  if (param_5 == (undefined8 *)0x0) {
    FUN_004325b6();
    goto LAB_008ac54e;
  }
  BVar1 = IsBadReadPtr(param_5,param_3);
  if (BVar1 != 0) {
    FUN_004325b6();
    goto LAB_008ac54e;
  }
  uStack_1c = 7;
  uStack_20 = 0;
  uStack_30 = uStack_30 & 0xffff0000;
  pvStack_18 = (void *)0x0;
  uStack_4 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
            (abStack_34,0x100);
  if ((param_3 == 1) && (param_4 == 0)) {
    local_38 = CONCAT31(local_38._1_3_,*(undefined *)param_5);
    if (param_2 != 10) {
      FUN_0081c0f1();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_008ab890(auStack_4c,local_38);
      goto LAB_008ac4fe;
    }
    FUN_00432199();
  }
  else {
    if ((param_3 == 2) && (param_4 == 0)) {
      FUN_0081c0f1();
      uStack_4 = CONCAT31(uStack_4._1_3_,2);
      FUN_008ab750(auStack_4c,*(undefined2 *)param_5);
    }
    else if ((param_3 == 4) && (param_4 == 0)) {
      if (param_2 == 8) {
        FUN_0081c0f1();
        uStack_4 = CONCAT31(uStack_4._1_3_,3);
        FUN_008ab790(auStack_4c,*(undefined4 *)param_5);
      }
      else {
        if (param_2 == 2) {
          lpsz = *(LPCSTR *)param_5;
          BVar1 = IsBadStringPtrA(lpsz,0x40);
          if (BVar1 == 0) {
            FID_conflict_append(1,0x22);
            uVar2 = 0;
            do {
              if (*lpsz == '\0') break;
              FUN_0086faf0();
              uVar2 = uVar2 + 1;
              lpsz = lpsz + 1;
            } while (uVar2 < 0x40);
            FID_conflict_append(1,0x22);
            goto LAB_008ac50b;
          }
        }
        FUN_0081c0f1();
        uStack_4 = CONCAT31(uStack_4._1_3_,4);
        FUN_008ab7d0(auStack_4c,*(undefined4 *)param_5);
      }
    }
    else {
      if ((param_3 != 8) || (param_4 != 0)) goto LAB_008ac50b;
      if (param_2 == 8) {
        FUN_0081c0f1();
        uStack_4 = CONCAT31(uStack_4._1_3_,5);
        FUN_008ab810(auStack_4c,*param_5);
      }
      else {
        FUN_0083fbe0();
        uStack_4 = CONCAT31(uStack_4._1_3_,6);
        FUN_008ab850(auStack_4c,*(undefined4 *)param_5,*(undefined4 *)((int)param_5 + 4));
      }
    }
LAB_008ac4fe:
    uStack_4 = uStack_4 & 0xffffff00;
    FUN_0081b5bc();
  }
LAB_008ac50b:
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(abStack_34,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
LAB_008ac54e:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008ac570(int param_1,undefined4 *param_2,int param_3,uint param_4)

{
  void *pvVar1;
  char cVar2;
  undefined *puVar3;
  undefined4 uVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *local_180;
  int local_17c;
  int local_178;
  int local_174;
  int local_170;
  undefined4 local_16c;
  undefined4 local_168;
  undefined local_164 [36];
  undefined local_140 [36];
  undefined local_11c [36];
  undefined local_f8 [36];
  undefined local_d4 [36];
  undefined local_b0 [36];
  undefined local_8c [4];
  uint local_88;
  int local_78;
  uint local_74;
  void *local_70;
  undefined4 local_68;
  undefined local_64 [84];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf09e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_180;
  ExceptionList = &local_c;
  local_170 = 0;
  local_180 = param_2;
  local_74 = 7;
  local_78 = 0;
  local_88 = local_88 & 0xffff0000;
  local_70 = (void *)0x0;
  local_4 = 0;
  if (param_4 < 0x15) {
    local_178 = 0;
    cVar2 = FUN_008ab470(0,&local_178,DAT_0323f878 ^ (uint)&stack0xfffffe70);
    if (cVar2 == '\0') {
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(local_8c,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      _free(local_70);
      pvVar1 = ExceptionList;
      ExceptionList = local_c;
      goto joined_r0x008ac65c;
    }
    if (local_178 != 7) {
      if ((local_178 != 0xb) && (local_178 != 0x12)) goto LAB_008ac86b;
      puVar3 = (undefined *)FUN_008ac9d0(local_d4,param_2,param_3,param_4);
      local_4 = CONCAT31(local_4._1_3_,1);
      if (local_8c != puVar3) {
        FID_conflict_assign(puVar3,0,0xffffffff);
      }
LAB_008ac85f:
      local_4 = local_4 & 0xffffff00;
      FUN_0040159c();
      goto LAB_008ac86b;
    }
    if (param_3 == 0) {
      FUN_00432199(L"NULL");
      goto LAB_008ac7e3;
    }
    cVar2 = FUN_008ab470(8,&local_170);
    if ((cVar2 == '\0') || (local_170 != 7)) {
LAB_008ac86b:
      if (local_78 != 0) {
        uVar4 = FUN_00853fa0(9,param_4 + 1);
        local_4._0_1_ = 7;
        uVar4 = FUN_008531f0(local_140,uVar4,local_8c);
        local_4._0_1_ = 8;
        puVar3 = (undefined *)FUN_0081b5f9(local_164,uVar4,10);
        local_4._0_1_ = 9;
        if (local_8c != puVar3) {
          FID_conflict_assign(puVar3,0,0xffffffff);
        }
        FUN_0040159c();
        FUN_0040159c();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_0040159c();
      }
    }
    else {
      local_174 = 0;
      cVar2 = FUN_008ab470(10,&local_174);
      if (cVar2 == '\0') goto LAB_008ac86b;
      local_17c = param_3 + local_174;
      puVar6 = &local_68;
      for (iVar5 = 0x16; iVar5 != 0; iVar5 = iVar5 + -1) {
        *puVar6 = *param_2;
        param_2 = param_2 + 1;
        puVar6 = puVar6 + 1;
      }
      cVar2 = FUN_008ab470(4,local_64);
      if (cVar2 == '\0') goto LAB_008ac86b;
      FUN_008ab470(2,&local_16c);
      iVar5 = FUN_008ab520(&local_68,&local_17c);
      if (iVar5 == 0xb) {
LAB_008ac792:
        uVar4 = FUN_008ac9d0(local_b0,&local_68,local_17c,param_4);
        local_4 = CONCAT31(local_4._1_3_,3);
        FUN_0043261a(uVar4);
LAB_008ac7d3:
        local_4 = local_4 & 0xffffff00;
        FUN_0040159c();
        param_2 = local_180;
      }
      else if (iVar5 == 0x10) {
        iVar5 = FUN_008ab4c0();
        param_2 = local_180;
        if (iVar5 != 0) {
          uVar4 = FUN_008ac2a0(local_f8,iVar5,local_16c,local_168,local_17c);
          local_4 = CONCAT31(local_4._1_3_,2);
          FUN_0043261a(uVar4);
          goto LAB_008ac7d3;
        }
      }
      else {
        param_2 = local_180;
        if (iVar5 == 0x12) goto LAB_008ac792;
      }
LAB_008ac7e3:
      if (local_78 != 0) {
        uVar4 = FUN_008ac1c0(local_164,param_2);
        local_4._0_1_ = 4;
        uVar4 = FUN_008533d0(local_140,uVar4,&DAT_00d38ee8);
        local_4._0_1_ = 5;
        uVar4 = FUN_008531f0(local_11c,uVar4,local_8c);
        local_4 = CONCAT31(local_4._1_3_,6);
        FUN_0043261a(uVar4);
        FUN_0040159c();
        FUN_0040159c();
        goto LAB_008ac85f;
      }
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
  }
  else {
    *(undefined4 *)(param_1 + 0x18) = 7;
  }
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(local_8c,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(local_70);
  pvVar1 = ExceptionList;
  ExceptionList = local_c;
joined_r0x008ac65c:
  local_c = ExceptionList;
  if (7 < local_74) {
    ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_88);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_008ac9d0(int param_1,int param_2,undefined4 param_3,uint param_4)

{
  uint uVar1;
  undefined4 uVar2;
  char cVar3;
  undefined4 *******pppppppuVar4;
  undefined *puVar5;
  uint *_Memory;
  int iVar6;
  undefined4 uVar7;
  uint uStack_cc;
  uint *puStack_c8;
  uint uStack_c4;
  uint *local_c0;
  int local_bc;
  int iStack_b8;
  undefined4 local_b4;
  undefined auStack_b0 [4];
  uint uStack_ac;
  undefined4 uStack_9c;
  uint uStack_98;
  void *pvStack_94;
  undefined local_8c [4];
  undefined4 *******local_88 [4];
  undefined4 local_78;
  uint local_74;
  void *local_70;
  undefined auStack_68 [4];
  uint uStack_64;
  undefined4 uStack_48;
  undefined4 uStack_44;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf0fc;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&uStack_cc;
  ExceptionList = &local_c;
  local_b4 = param_3;
  local_bc = param_2;
  local_c0 = (uint *)0x0;
  local_74 = 7;
  local_78 = 0;
  local_88[0] = (undefined4 *******)((uint)local_88[0] & 0xffff0000);
  local_70 = (void *)0x0;
  local_4 = 0;
  if (param_4 < 0xb) {
    FUN_004181eb(0x200,0,DAT_0323f878 ^ (uint)&stack0xffffff24);
    local_78 = 0;
    pppppppuVar4 = local_88[0];
    if (local_74 < 8) {
      pppppppuVar4 = local_88;
    }
    *(undefined2 *)pppppppuVar4 = 0;
    puVar5 = (undefined *)FUN_008ac1c0(auStack_b0,param_2);
    local_4._0_1_ = 1;
    if (local_8c != puVar5) {
      FID_conflict_assign(puVar5,0,0xffffffff);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    _free(pvStack_94);
    if (7 < uStack_98) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_ac);
    }
    uStack_cc = 0;
    FUN_008ab470(0xd,&uStack_cc);
    _Memory = (uint *)_malloc(uStack_cc * 4 + 8);
    local_c0 = _Memory;
    if (_Memory == (uint *)0x0) {
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(local_8c,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      _free(local_70);
    }
    else {
      *_Memory = uStack_cc;
      _Memory[1] = 0;
      cVar3 = FUN_008ab470(7,_Memory);
      if (cVar3 == '\0') {
        _free(_Memory);
        FUN_004325a0(local_8c);
        FUN_0040159c();
        goto LAB_008acdaa;
      }
      FUN_0083fd10(&DAT_00d38efc);
      _memset(auStack_68,0,0x58);
      uStack_48 = *(undefined4 *)(param_2 + 0x20);
      uStack_44 = *(undefined4 *)(param_2 + 0x24);
      uStack_c4 = 0;
      if (uStack_cc != 0) {
        puStack_c8 = _Memory + 2;
        do {
          uVar2 = uStack_44;
          uVar7 = uStack_48;
          uVar1 = *puStack_c8;
          uStack_64 = uVar1;
          if ((_DAT_032bddf4 & 1) == 0) {
            _DAT_032bddf4 = _DAT_032bddf4 | 1;
            DAT_032bddf0 = GetCurrentProcess();
          }
          iVar6 = (*DAT_032bdde4)(DAT_032bddf0,uVar7,uVar2,uVar1,0x13,&iStack_b8);
          if (((iVar6 == 0) || (iStack_b8 == 0)) && (uStack_64 != *(uint *)(local_bc + 4))) {
            uVar7 = FUN_008ac570(auStack_b0,auStack_68,local_b4,param_4 + 1);
            local_4._0_1_ = 2;
            FID_conflict_append(uVar7,0,0xffffffff);
            local_4 = (uint)local_4._1_3_ << 8;
            _free(pvStack_94);
            if (7 < uStack_98) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1(uStack_ac);
            }
            uStack_98 = 7;
            uStack_9c = 0;
            uStack_ac = uStack_ac & 0xffff0000;
          }
          puStack_c8 = puStack_c8 + 1;
          uStack_c4 = uStack_c4 + 1;
          _Memory = local_c0;
        } while (uStack_c4 < uStack_cc);
      }
      _free(_Memory);
      uVar7 = FUN_00853fa0(9,param_4 + 1);
      local_4._0_1_ = 3;
      FID_conflict_append(uVar7,0,0xffffffff);
      FID_conflict_append(1,0x7d);
      local_4 = (uint)local_4._1_3_ << 8;
      _free(pvStack_94);
      if (7 < uStack_98) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_ac);
      }
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(local_8c,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      _free(local_70);
    }
  }
  else {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_8c,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_70);
  }
  if (7 < local_74) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_88[0]);
  }
LAB_008acdaa:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008acde0(int param_1,undefined4 *param_2,undefined4 param_3)

{
  uint uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 local_bc;
  undefined4 local_b8;
  int local_b4;
  undefined local_b0 [4];
  undefined4 local_ac;
  uint local_98;
  void *local_94;
  undefined local_8c [36];
  undefined4 local_68 [22];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf168;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_bc;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff34;
  ExceptionList = &local_c;
  local_bc = param_3;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_b4 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  local_b8 = 1;
  puVar3 = param_2;
  puVar4 = local_68;
  for (iVar2 = 0x16; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar4 = *puVar3;
    puVar3 = puVar3 + 1;
    puVar4 = puVar4 + 1;
  }
  iVar2 = FUN_008ab520(local_68,&local_bc,uVar1);
  if (iVar2 == 0xb) {
    iVar2 = FUN_008ac9d0(local_b0,local_68,local_bc,0);
    local_4 = 1;
    if (param_1 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    _free(local_94);
    if (7 < local_98) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_ac);
    }
  }
  else if (iVar2 == 0x10) {
    iVar2 = FUN_008ab4c0();
    if (iVar2 != 0) {
      iVar2 = FUN_008ac2a0(local_8c,iVar2,param_2[7],0,local_bc);
      local_4 = 2;
      if (param_1 != iVar2) {
        FID_conflict_assign(iVar2,0,0xffffffff);
      }
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



uint FUN_008acf60(char *param_1,int param_2)

{
  char cVar1;
  
  switch(param_2) {
  case 0:
    return 0xffffffff;
  case 1:
    cVar1 = *param_1;
    if ((((cVar1 == '\0') || (cVar1 == -1)) || (cVar1 == -2)) || (cVar1 == -0x11)) {
      return 0xffffffff;
    }
    break;
  case 2:
  case 3:
    cVar1 = *param_1;
    if ((cVar1 == -0x11) && (param_1[1] == -0x45)) {
      if (param_2 != 3) {
        return 0xffffffff;
      }
      return (param_1[2] != -0x41) - 1 & 5;
    }
    if ((cVar1 == -2) && (param_1[1] == -1)) {
      return 3;
    }
    if ((cVar1 != -1) || (param_1[1] != -2)) {
      if (cVar1 != '\0') {
        return 0;
      }
      if (param_1[1] != '\0') {
        return 0;
      }
      if ((param_2 == 3) && (param_1[2] != -2)) {
        return 0;
      }
      return 0xffffffff;
    }
    if (param_2 != 3) {
      return 0xffffffff;
    }
    if (param_1[2] == '\0') {
      return 0xffffffff;
    }
    return 4;
  default:
    cVar1 = *param_1;
    if (((cVar1 == -0x11) && (param_1[1] == -0x45)) && (param_1[2] == -0x41)) {
      return 5;
    }
    if (((cVar1 == '\0') && (param_1[1] == '\0')) && ((param_1[2] == -2 && (param_1[3] == -1)))) {
      return 1;
    }
    if (((cVar1 == -1) && (param_1[1] == -2)) && ((param_1[2] == '\0' && (param_1[3] == '\0')))) {
      return 2;
    }
    if ((cVar1 == -2) && (param_1[1] == -1)) {
      return 3;
    }
    if ((cVar1 == -1) && (param_1[1] == -2)) {
      return 4;
    }
  }
  return 0;
}



void __thiscall FUN_008ad0a0(int param_1_00,int *param_1,int *param_2)

{
  int iVar1;
  
  switch(*(undefined4 *)(param_1_00 + 0xc)) {
  case 0:
    iVar1 = 0;
    break;
  case 1:
  case 2:
    iVar1 = 4;
    break;
  case 3:
  case 4:
    iVar1 = 2;
    break;
  case 5:
    iVar1 = 3;
    break;
  case 0xffffffff:
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    FUN_008402e0("..\\..\\src\\common\\convauto.cpp",0xe4,"wxConvAuto::SkipBOM","Assert failure",
                 "shouldn\'t be called for this BOM type");
    return;
  default:
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    FUN_008402e0("..\\..\\src\\common\\convauto.cpp",0xfa,"wxConvAuto::SkipBOM","Assert failure",
                 "unknown BOM type");
    return;
  }
  *param_1 = *param_1 + iVar1;
  if (*param_2 == -1) {
    return;
  }
  *param_2 = *param_2 - iVar1;
  return;
}



void __fastcall FUN_008ad160(int param_1)

{
  int iVar1;
  
  if (DAT_032bd4d8 == 0) {
    DAT_032bd4d8 = FUN_00861480();
  }
  iVar1 = DAT_032bd4d8;
  *(undefined *)(param_1 + 0x10) = 0;
  *(int *)(param_1 + 4) = iVar1;
  return;
}



void __fastcall FUN_008ad180(int param_1)

{
  if (*(int *)(param_1 + 4) == 0) {
    if (DAT_032bd4d8 == 0) {
      DAT_032bd4d8 = FUN_00861480();
    }
    *(int *)(param_1 + 4) = DAT_032bd4d8;
    *(undefined *)(param_1 + 0x10) = 0;
  }
                    // WARNING: Could not recover jumptable at 0x008ad1ac. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 4))();
  return;
}



void __thiscall FUN_008ad1b0(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  char *pcVar3;
  
  *(undefined *)(param_1_00 + 0x11) = 0;
  switch(param_1) {
  case 0:
    goto switchD_008ad1c5_caseD_0;
  case 1:
    puVar1 = (undefined4 *)operator_new(4);
    if (puVar1 != (undefined4 *)0x0) {
      *puVar1 = wxMBConvUTF32BE::vftable;
      *(undefined4 **)(param_1_00 + 4) = puVar1;
      *(undefined *)(param_1_00 + 0x10) = 1;
      goto switchD_008ad1c5_caseD_0;
    }
    break;
  case 2:
    puVar1 = (undefined4 *)operator_new(4);
    if (puVar1 != (undefined4 *)0x0) {
      *puVar1 = wxMBConvUTF32LE::vftable;
      *(undefined4 **)(param_1_00 + 4) = puVar1;
      *(undefined *)(param_1_00 + 0x10) = 1;
      goto switchD_008ad1c5_caseD_0;
    }
    break;
  case 3:
    puVar1 = (undefined4 *)operator_new(4);
    if (puVar1 != (undefined4 *)0x0) {
      *puVar1 = wxMBConvUTF16BE::vftable;
      *(undefined4 **)(param_1_00 + 4) = puVar1;
      *(undefined *)(param_1_00 + 0x10) = 1;
      goto switchD_008ad1c5_caseD_0;
    }
    break;
  case 4:
    puVar1 = (undefined4 *)operator_new(4);
    if (puVar1 != (undefined4 *)0x0) {
      *puVar1 = wxMBConvUTF16LE::vftable;
      *(undefined4 **)(param_1_00 + 4) = puVar1;
      *(undefined *)(param_1_00 + 0x10) = 1;
      goto switchD_008ad1c5_caseD_0;
    }
    break;
  case 5:
    FUN_008ad160();
    goto switchD_008ad1c5_caseD_0;
  case 0xffffffff:
    if (PTR_FUN_03235c4c == (undefined *)0x0) goto switchD_008ad1c5_caseD_0;
    pcVar3 = "shouldn\'t be called for this BOM type";
    uVar2 = 0xb1;
    goto LAB_008ad29b;
  default:
    if (PTR_FUN_03235c4c == (undefined *)0x0) goto switchD_008ad1c5_caseD_0;
    pcVar3 = "unknown BOM type";
    uVar2 = 0xd1;
LAB_008ad29b:
    FUN_008402e0("..\\..\\src\\common\\convauto.cpp",uVar2,"wxConvAuto::InitFromBOM",
                 "Assert failure",pcVar3);
    goto switchD_008ad1c5_caseD_0;
  }
  *(undefined4 *)(param_1_00 + 4) = 0;
  *(undefined *)(param_1_00 + 0x10) = 1;
switchD_008ad1c5_caseD_0:
  if (*(int *)(param_1_00 + 4) == 0) {
    if (DAT_032bd4d8 == 0) {
      DAT_032bd4d8 = FUN_00861480();
    }
    *(int *)(param_1_00 + 4) = DAT_032bd4d8;
    *(undefined *)(param_1_00 + 0x10) = 0;
    *(undefined *)(param_1_00 + 0x11) = 1;
  }
  return;
}



int __thiscall FUN_008ad2f0(int param_1_00,int param_1,undefined4 param_2,char *param_3,int param_4)

{
  char cVar1;
  char *pcVar2;
  int iVar3;
  undefined4 *puVar4;
  char *pcVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  pcVar5 = param_3;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf1ab;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 4) == 0) {
    iVar3 = param_4;
    if (param_4 == -1) {
      pcVar2 = param_3;
      do {
        cVar1 = *pcVar2;
        pcVar2 = pcVar2 + 1;
      } while (cVar1 != '\0');
      iVar3 = (int)pcVar2 - (int)(param_3 + 1);
    }
    iVar3 = FUN_008acf60(param_3,iVar3,DAT_0323f878 ^ (uint)&stack0xffffffe4);
    *(int *)(param_1_00 + 0xc) = iVar3;
    if (iVar3 == -1) {
      ExceptionList = local_c;
      return -1;
    }
    FUN_008ad1b0(iVar3);
  }
  if ((*(char *)(param_1_00 + 0x11) == '\0') &&
     (FUN_008ad0a0(&param_3,&param_4), pcVar5 = param_3, param_4 == 0)) {
    ExceptionList = local_c;
    return -1;
  }
  iVar3 = (**(code **)**(undefined4 **)(param_1_00 + 4))(param_1,param_2,pcVar5,param_4);
  if (iVar3 == -1) {
    if (*(int *)(param_1_00 + 0xc) != 0) {
      ExceptionList = local_c;
      return -1;
    }
    if (*(int *)(param_1_00 + 8) == 0x58) {
      ExceptionList = local_c;
      return -1;
    }
    if ((*(char *)(param_1_00 + 0x10) != '\0') && (*(int **)(param_1_00 + 4) != (int *)0x0)) {
      (**(code **)(**(int **)(param_1_00 + 4) + 0x18))(1);
    }
    param_3 = (char *)operator_new(0x10);
    uStack_4 = 0;
    if (param_3 == (char *)0x0) {
      puVar4 = (undefined4 *)0x0;
    }
    else {
      iVar3 = *(int *)(param_1_00 + 8);
      if (*(int *)(param_1_00 + 8) == 0) {
        iVar3 = DAT_032376c8;
      }
      puVar4 = (undefined4 *)FUN_00862e00(iVar3);
    }
    *(undefined4 **)(param_1_00 + 4) = puVar4;
    *(undefined *)(param_1_00 + 0x10) = 1;
    uStack_4 = 0xffffffff;
    iVar3 = (**(code **)*puVar4)(param_1,param_2,pcVar5,param_4);
    if (iVar3 == -1) {
      ExceptionList = local_c;
      return -1;
    }
  }
  if (param_1 == 0) {
    ExceptionList = local_c;
    return iVar3;
  }
  if (*(char *)(param_1_00 + 0x11) == '\0') {
    *(undefined *)(param_1_00 + 0x11) = 1;
    ExceptionList = local_c;
    return iVar3;
  }
  ExceptionList = local_c;
  return iVar3;
}



void FUN_008ad450(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf1d8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008871c0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  FUN_008a86d0();
  ExceptionList = local_c;
  return;
}



undefined ** FUN_008ad4b0(void)

{
  return &PTR_u_wxFileConfig_032376cc;
}



int __fastcall FUN_008ad4c0(int param_1)

{
  return param_1 + 0x160;
}



void __thiscall FUN_008ad4d0(int *param_1_00,undefined4 param_1,undefined4 *param_2)

{
  *param_2 = 0;
                    // WARNING: Could not recover jumptable at 0x008ad4e3. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1_00 + 0x24))();
  return;
}



void __fastcall thunk_FUN_0086aa30(int param_1)

{
  if (*(int *)(param_1 + 8) != 0) {
    FUN_00a3f66c(*(int *)(param_1 + 8));
    *(undefined4 *)(param_1 + 8) = 0;
  }
  return;
}



void __thiscall FUN_008ad500(int param_1_00,int param_1)

{
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    *(int *)(param_1_00 + 0x4c) = param_1;
    return;
  }
  if (*(int *)(param_1_00 + 4) != 0) {
    if (*(int *)(param_1_00 + 0x4c) != 0) {
      if (param_1 != 0) {
        FUN_00840480("..\\..\\src\\common\\fileconf.cpp",0x566,"wxFileConfigGroup::SetLine",
                     "!m_pParent || !m_pLine || !pLine",L"changing line for a non-root group?");
      }
      *(int *)(param_1_00 + 0x4c) = param_1;
      return;
    }
    *(int *)(param_1_00 + 0x4c) = param_1;
    return;
  }
  *(int *)(param_1_00 + 0x4c) = param_1;
  return;
}



int __fastcall FUN_008ad570(int param_1)

{
  int iVar1;
  
  if (*(int *)(param_1 + 0x54) != 0) {
    iVar1 = FUN_008ad570();
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar1 == 0)) {
      FUN_00840480("..\\..\\src\\common\\fileconf.cpp",0x5bd,"wxFileConfigGroup::GetLastGroupLine",
                   "pLine",L"last group must have !NULL associated line");
    }
    return iVar1;
  }
  iVar1 = FUN_008b34c0();
  return iVar1;
}



void __thiscall FUN_008ad5c0(int param_1_00,int param_1)

{
  *(int *)(param_1_00 + 0x50) = param_1;
  if (*(int *)(param_1_00 + 0x4c) == 0) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 4) != 0)) {
      FUN_00840480("..\\..\\src\\common\\fileconf.cpp",0x5e5,"wxFileConfigGroup::SetLastEntry",
                   "!m_pParent",L"unexpected for non root group");
    }
    *(undefined4 *)(param_1_00 + 0x4c) = *(undefined4 *)(param_1 + 0x54);
  }
  return;
}



void FUN_008ad650(undefined4 param_1,undefined4 param_2)

{
  FUN_00854700(param_1,1);
  FUN_0086a400(param_2,1);
  return;
}



int __thiscall FUN_008ad680(int *param_1_00,char param_1)

{
  int iVar1;
  uint uVar2;
  code *pcVar3;
  int iVar4;
  uint uVar5;
  int local_4;
  
  iVar1 = param_1_00[0x62];
  local_4 = *(int *)(iVar1 + 0xc);
  if (param_1 != '\0') {
    uVar2 = *(uint *)(iVar1 + 0x1c);
    uVar5 = 0;
    if (uVar2 != 0) {
      do {
        iVar4 = param_1_00[0x62];
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar4 + 0x1c) <= uVar5)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        pcVar3 = *(code **)(*param_1_00 + 0x28);
        param_1_00[0x62] = *(int *)(*(int *)(iVar4 + 0x20) + uVar5 * 4);
        iVar4 = (*pcVar3)(1);
        local_4 = local_4 + iVar4;
        uVar5 = uVar5 + 1;
        param_1_00[0x62] = iVar1;
      } while (uVar5 < uVar2);
    }
  }
  return local_4;
}



uint __thiscall FUN_008ad720(int *param_1_00,char param_1)

{
  int iVar1;
  uint uVar2;
  code *pcVar3;
  int iVar4;
  uint uVar5;
  uint local_8;
  
  iVar1 = param_1_00[0x62];
  uVar2 = *(uint *)(iVar1 + 0x1c);
  local_8 = uVar2;
  if ((param_1 != '\0') && (uVar5 = 0, uVar2 != 0)) {
    do {
      iVar4 = param_1_00[0x62];
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar4 + 0x1c) <= uVar5)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      pcVar3 = *(code **)(*param_1_00 + 0x2c);
      param_1_00[0x62] = *(int *)(*(int *)(iVar4 + 0x20) + uVar5 * 4);
      iVar4 = (*pcVar3)(1);
      local_8 = local_8 + iVar4;
      uVar5 = uVar5 + 1;
      param_1_00[0x62] = iVar1;
    } while (uVar5 < uVar2);
  }
  return local_8;
}



undefined4 __thiscall FUN_008ad7c0(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint local_4;
  
  local_4 = 0;
  uVar3 = *(uint *)(param_1_00 + 0xc);
  if (*(uint *)(param_1_00 + 0xc) != 0) {
    do {
      uVar4 = uVar3 + local_4 >> 1;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0xc) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      uVar1 = *(undefined4 *)(*(int *)(param_1_00 + 0x10) + uVar4 * 4);
      iVar2 = FUN_00850470(param_1);
      if (iVar2 < 1) {
        if (-1 < iVar2) {
          return uVar1;
        }
        local_4 = uVar4 + 1;
        uVar4 = uVar3;
      }
      uVar3 = uVar4;
    } while (local_4 < uVar4);
  }
  return 0;
}



undefined4 __thiscall FUN_008ad850(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint local_4;
  
  local_4 = 0;
  uVar3 = *(uint *)(param_1_00 + 0x1c);
  if (*(uint *)(param_1_00 + 0x1c) != 0) {
    do {
      uVar4 = uVar3 + local_4 >> 1;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x1c) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      uVar1 = *(undefined4 *)(*(int *)(param_1_00 + 0x20) + uVar4 * 4);
      iVar2 = FUN_00850470(param_1);
      if (iVar2 < 1) {
        if (-1 < iVar2) {
          return uVar1;
        }
        local_4 = uVar4 + 1;
        uVar4 = uVar3;
      }
      uVar3 = uVar4;
    } while (local_4 < uVar4);
  }
  return 0;
}



void __thiscall FUN_008ad8e0(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_0086a520(param_1,*(undefined4 *)(param_1_00 + 0xc));
  if (iVar1 != -1) {
    FUN_0086a1e0(iVar1 * 4 >> 2,1);
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\fileconf.cpp",0x66,"ArrayEntries::Remove","iIndex != (-1)",
                 "removing inexistent element in wxArray::Remove");
  }
  return;
}



void __thiscall FUN_008ad940(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_0086a520(param_1,*(undefined4 *)(param_1_00 + 0xc));
  if (iVar1 != -1) {
    FUN_0086a1e0(iVar1 * 4 >> 2,1);
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\fileconf.cpp",0x67,"ArrayGroups::Remove","iIndex != (-1)",
                 "removing inexistent element in wxArray::Remove");
  }
  return;
}



undefined4 FUN_008ad9a0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined4 *puVar2;
  void **ppvVar3;
  void **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf221;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_10 = 0;
  puVar2 = (undefined4 *)FUN_00851e30(&local_14);
  local_4 = 1;
  FUN_008c0fd0(param_1,*(undefined4 *)*puVar2,0xffffffff,param_3,param_4,uVar1);
  local_10 = 1;
  local_4 = local_4 & 0xffffff00;
  ppvVar3 = (void **)FUN_00850350();
  if (local_14 != ppvVar3) {
    *(short *)(local_14 + 2) = *(short *)(local_14 + 2) + -1;
    if (*(short *)(local_14 + 2) == 0) {
      if (*(char *)((int)local_14 + 10) != '\0') {
        _free(*local_14);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_14);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_008ada70(undefined4 param_1)

{
  int *piVar1;
  
  piVar1 = (int *)FUN_0085bf20();
  (**(code **)(*piVar1 + 4))(param_1);
  return param_1;
}



void FUN_008adaa0(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf248;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  cVar1 = FUN_0088a970(param_1,local_34);
  if (cVar1 == '\0') {
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30,uVar2);
    }
  }
  else {
    FUN_008517a0(1);
    FUN_00850950(param_2,10);
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30,uVar2);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008adb90(undefined4 param_1,int *param_2)

{
  void **ppvVar1;
  void **ppvVar2;
  int iVar3;
  char cVar4;
  int *piVar5;
  void **local_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7f38;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  ExceptionList = &local_c;
  if (param_2 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\fileconf.cpp",0x398,"wxFileConfig::DoReadBinary",
                   &DAT_00d2ce38,L"NULL buffer",DAT_0323f878 ^ (uint)&stack0xffffffbc);
    }
  }
  else {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 0;
    cVar4 = FUN_0088a970(param_1,local_34);
    if (cVar4 == '\0') {
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
    }
    else {
      piVar5 = (int *)FUN_008ad9a0(&local_38,local_34,0,0);
      if (piVar5 != param_2) {
        ppvVar2 = (void **)*param_2;
        ppvVar1 = ppvVar2 + 3;
        *ppvVar1 = (void *)((int)*ppvVar1 + -1);
        if (*ppvVar1 == (void *)0x0) {
          _free(*ppvVar2);
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(ppvVar2);
        }
        iVar3 = *piVar5;
        *param_2 = iVar3;
        piVar5 = (int *)(iVar3 + 0xc);
        *piVar5 = *piVar5 + 1;
      }
      local_38[3] = (void *)((int)local_38[3] + -1);
      if (local_38[3] == (void *)0x0) {
        _free(*local_38);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_38);
      }
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_008add00(int param_1)

{
  _free(*(void **)(param_1 + 0x44));
  if (7 < *(uint *)(param_1 + 0x40)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x2c));
  }
  *(undefined4 *)(param_1 + 0x40) = 7;
  *(undefined4 *)(param_1 + 0x3c) = 0;
  *(undefined2 *)(param_1 + 0x2c) = 0;
  _free(*(void **)(param_1 + 0x20));
  if (7 < *(uint *)(param_1 + 0x1c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 8));
  }
  *(undefined4 *)(param_1 + 0x1c) = 7;
  *(undefined4 *)(param_1 + 0x18) = 0;
  *(undefined2 *)(param_1 + 8) = 0;
  return;
}



undefined4 __thiscall FUN_008add70(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  
  iVar1 = *param_1_00;
  if (*(uint *)(iVar1 + 0x18) < 8) {
    iVar1 = iVar1 + 4;
  }
  else {
    iVar1 = *(int *)(iVar1 + 4);
  }
  FUN_0081c01c(param_1,iVar1 + param_1_00[1] * 2,0xffffffff);
  return param_1;
}



int __thiscall FUN_008addb0(int param_1_00,int param_1,int param_2)

{
  uint uVar1;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf283;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 1;
  FUN_00820ebc(&local_14,param_1,param_2 - param_1 >> 1,uVar1);
  FID_conflict_assign(local_14,local_10);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_008ade40(undefined4 param_1_00,void **param_1)

{
  void **ppvVar1;
  uint uVar2;
  undefined4 uVar3;
  void **ppvVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf2b0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  uVar3 = FUN_008add70(&param_1);
  local_4 = 0;
  FUN_00851700(uVar3);
  local_4 = CONCAT31(local_4._1_3_,2);
  ppvVar4 = (void **)FUN_00850350(uVar2);
  ppvVar1 = param_1;
  if (param_1 != ppvVar4) {
    *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + -1;
    if (*(short *)(param_1 + 2) == 0) {
      if (*(char *)((int)param_1 + 10) != '\0') {
        _free(*param_1);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar1);
    }
    FUN_00850350(uVar2);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined __thiscall FUN_008adef0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined local_44 [16];
  uint uStack_34;
  undefined local_30 [12];
  undefined4 uStack_24;
  uint uStack_20;
  void *pvStack_1c;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6ca0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  FUN_0081c0f1(&DAT_00d39198);
  local_4 = 0;
  uVar3 = FUN_0084aae0(local_30,local_44,param_2,uVar2);
  local_4 = CONCAT31(local_4._1_3_,1);
  uVar1 = (**(code **)(*param_1_00 + 0x68))(param_1,uVar3);
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_34);
  }
  uStack_20 = 7;
  uStack_24 = 0;
  uStack_34 = uStack_34 & 0xffff0000;
  local_c = (void *)0xffffffff;
  FUN_0081b5bc();
  ExceptionList = pvStack_14;
  return uVar1;
}



undefined4 FUN_008adfc0(undefined4 param_1,undefined4 param_2,void **param_3)

{
  int iVar1;
  void **ppvVar2;
  uint uVar3;
  void **ppvVar4;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  ppvVar2 = param_3;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf2f1;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  iVar1 = ((uint)((ulonglong)((int)param_3 + 2) * 0xaaaaaaab >> 0x20) & 0xfffffffe) * 2;
  FUN_0084aa50(iVar1);
  local_4 = 1;
  FUN_008c0cd0(*param_3,iVar1,param_2,ppvVar2,uVar3);
  FUN_00885450(&param_3);
  local_4 = local_4 & 0xffffff00;
  ppvVar4 = (void **)FUN_00850350();
  ppvVar2 = param_3;
  if (param_3 != ppvVar4) {
    *(short *)(param_3 + 2) = *(short *)(param_3 + 2) + -1;
    if (*(short *)(param_3 + 2) == 0) {
      if (*(char *)((int)param_3 + 10) != '\0') {
        _free(*param_3);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar2);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_008ae0a0(undefined4 param_1,int *param_2)

{
  FUN_008adfc0(param_1,*(undefined4 *)*param_2,((undefined4 *)*param_2)[2]);
  return param_1;
}



int __thiscall FUN_008ae0d0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x24) = param_2;
  *(undefined4 *)(param_1_00 + 0x28) = 0;
  return param_1_00;
}



void FUN_008ae120(void)

{
  uint uVar1;
  int unaff_ESI;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5328;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_30;
  ExceptionList = &local_c;
  if (*(char *)(unaff_ESI + 0x7d) == '\0') {
    FUN_004325b6(&DAT_00d391a0);
    local_4 = 0;
    if ((undefined *)(unaff_ESI + 0x58) != local_30) {
      FID_conflict_assign(local_30,0,0xffffffff);
    }
    *(bool *)(unaff_ESI + 0x7d) = *(int *)(unaff_ESI + 0x6c) != 0;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar1);
    }
  }
  ExceptionList = local_c;
  return;
}



int FUN_008ae1c0(undefined4 param_1,byte param_2)

{
  int *piVar1;
  undefined4 uVar2;
  bool bVar3;
  int unaff_retaddr;
  uint local_54 [4];
  undefined4 uStack_44;
  uint uStack_40;
  void *pvStack_3c;
  undefined4 local_30 [5];
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be2532;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  piVar1 = (int *)FUN_0085bf20(DAT_0323f878 ^ (uint)&stack0xffffff9c);
  bVar3 = (param_2 & 0x10) == 0;
  if (bVar3) {
    uVar2 = (**(code **)(*piVar1 + 8))(local_54);
  }
  else {
    uVar2 = (**(code **)(*piVar1 + 0x14))(local_30);
  }
  puStack_8 = (undefined *)(uint)bVar3;
  *(undefined4 *)(unaff_retaddr + 0x18) = 7;
  *(undefined4 *)(unaff_retaddr + 0x14) = 0;
  *(undefined2 *)(unaff_retaddr + 4) = 0;
  FID_conflict_assign(uVar2,0,0xffffffff);
  *(undefined4 *)(unaff_retaddr + 0x1c) = 0;
  if (bVar3) {
    _free(pvStack_3c);
    if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54[0]);
    }
    uStack_40 = 7;
    uStack_44 = 0;
    local_54[0] = local_54[0] & 0xffff0000;
  }
  if (!bVar3) {
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30[0]);
    }
  }
  ExceptionList = pvStack_10;
  return unaff_retaddr;
}



undefined4 FUN_008ae2d0(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bcf331;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  uVar1 = FUN_008ada70(local_30,DAT_0323f878 ^ (uint)&stack0xffffffbc);
  local_4 = 1;
  FUN_00432475(uVar1,param_2,0);
  local_4 = local_4 & 0xffffff00;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  FUN_008ae120();
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_008ae390(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bcf331;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  uVar1 = FUN_008ae1c0(local_30,param_3,DAT_0323f878 ^ (uint)&stack0xffffffbc);
  local_4 = 1;
  FUN_00432475(uVar1,param_2,0);
  local_4 = local_4 & 0xffffff00;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  FUN_008ae120();
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_008ae450(int param_1_00,int param_1,uint *param_2)

{
  uint uVar1;
  int iVar2;
  
  uVar1 = *param_2;
  if (uVar1 < *(uint *)(*(int *)(param_1_00 + 0x188) + 0x1c)) {
    *param_2 = uVar1 + 1;
    iVar2 = *(int *)(param_1_00 + 0x188);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 0x1c) <= uVar1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    iVar2 = *(int *)(*(int *)(iVar2 + 0x20) + uVar1 * 4) + 0x28;
    if (param_1 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    return 1;
  }
  return 0;
}



undefined4 __thiscall FUN_008ae4d0(int param_1_00,int param_1,uint *param_2)

{
  uint uVar1;
  int iVar2;
  
  uVar1 = *param_2;
  if (uVar1 < *(uint *)(*(int *)(param_1_00 + 0x188) + 0xc)) {
    *param_2 = uVar1 + 1;
    iVar2 = *(int *)(param_1_00 + 0x188);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 0xc) <= uVar1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    iVar2 = *(int *)(*(int *)(iVar2 + 0x10) + uVar1 * 4) + 4;
    if (param_1 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    return 1;
  }
  return 0;
}



void __thiscall FUN_008ae550(undefined4 param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  undefined local_60 [4];
  undefined local_5c [76];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf358;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_60;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  FUN_00889da0(param_1_00,param_1);
  local_4 = 0;
  iVar2 = FUN_008ad7c0(local_5c);
  if (iVar2 == 0) {
    local_4 = 0xffffffff;
    FUN_00889a70(uVar1);
  }
  else {
    if (param_2 != iVar2 + 0x28) {
      FID_conflict_assign(iVar2 + 0x28,0,0xffffffff);
    }
    local_4 = 0xffffffff;
    FUN_00889a70(uVar1);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined __thiscall FUN_008ae610(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  undefined4 uVar2;
  undefined4 unaff_EBX;
  undefined local_30 [16];
  uint uStack_20;
  void *pvStack_1c;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_008ae0a0(local_30,param_2,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_4 = 0;
  uVar1 = (**(code **)(*param_1_00 + 0x68))(param_1,uVar2);
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBX);
  }
  ExceptionList = pvStack_14;
  return uVar1;
}



undefined4 * __thiscall
FUN_008ae6a0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf396;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  param_1_00[5] = &LAB_008ad610;
  local_4 = 0;
  FUN_0086a600();
  param_1_00[9] = &LAB_008ad630;
  param_1_00[0x10] = 7;
  param_1_00[0xf] = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  *(undefined2 *)(param_1_00 + 0xb) = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  param_1_00[0x11] = 0;
  param_1_00[1] = param_1;
  *param_1_00 = param_3;
  param_1_00[0x13] = 0;
  param_1_00[0x14] = 0;
  param_1_00[0x15] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_008ae750(int param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bcf3e1;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  uVar1 = *(uint *)(param_1 + 0xc);
  uVar4 = 0;
  local_4 = 2;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0xc) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0,uVar3);
      }
      iVar2 = *(int *)(*(int *)(param_1 + 0x10) + uVar4 * 4);
      if (iVar2 != 0) {
        FUN_008add00();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar2);
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  uVar1 = *(uint *)(param_1 + 0x1c);
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x1c) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0,uVar3);
      }
      iVar2 = *(int *)(*(int *)(param_1 + 0x20) + uVar4 * 4);
      if (iVar2 != 0) {
        FUN_008ae750();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar2);
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  _free(*(void **)(param_1 + 0x44));
  if (7 < *(uint *)(param_1 + 0x40)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x2c));
  }
  *(undefined4 *)(param_1 + 0x40) = 7;
  *(undefined4 *)(param_1 + 0x3c) = 0;
  *(undefined2 *)(param_1 + 0x2c) = 0;
  local_4 = local_4 & 0xffffff00;
  FUN_0086aa30();
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_008ae890(int param_1_00,int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined local_78 [4];
  uint local_74;
  undefined4 local_64;
  uint local_60;
  void *local_5c;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf431;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  if (*(int *)(param_1_00 + 4) != 0) {
    uVar2 = FUN_008ae890(local_30);
    local_4 = 1;
    uVar2 = FUN_0081b5f9(local_54,uVar2,0x2f,uVar1);
    local_4._0_1_ = 2;
    iVar3 = FUN_008531f0(local_78,uVar2,param_1_00 + 0x28);
    local_4 = CONCAT31(local_4._1_3_,3);
    if (param_1 != iVar3) {
      FID_conflict_assign(iVar3,0,0xffffffff);
    }
    _free(local_5c);
    if (7 < local_60) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_74);
    }
    local_60 = 7;
    local_64 = 0;
    local_74 = local_74 & 0xffff0000;
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_008aea00(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd98b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    iVar2 = FUN_008ad850(param_1);
    if (iVar2 != 0) {
      FUN_008402e0("..\\..\\src\\common\\fileconf.cpp",0x671,"wxFileConfigGroup::AddSubgroup",
                   "FindSubgroup(strName) == 0",0,uVar1);
    }
  }
  pvVar3 = operator_new(0x58);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_008ae6a0(param_1_00,param_1,*param_1_00);
  }
  local_4 = 0xffffffff;
  FUN_0086a850(uVar4,param_1_00[9]);
  ExceptionList = local_c;
  return uVar4;
}



undefined4 * __thiscall
FUN_008aeab0(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  iVar1 = param_2;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf466;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  param_1_00[8] = 0;
  param_1_00[0x10] = 7;
  param_1_00[0xf] = 0;
  *(undefined2 *)(param_1_00 + 0xb) = 0;
  param_1_00[0x11] = 0;
  local_4 = 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(iVar1 + 0x14) == 0)) {
    FUN_008402e0("..\\..\\src\\common\\fileconf.cpp",0x734,"wxFileConfigEntry::wxFileConfigEntry",
                 "!strName.empty()",0,uVar2);
  }
  *(byte *)(param_1_00 + 0x13) = *(byte *)(param_1_00 + 0x13) & 0xfd;
  *param_1_00 = param_1;
  param_1_00[0x14] = param_3;
  param_1_00[0x15] = 0;
  FUN_0081feb2(&param_2,0);
  *(byte *)(param_1_00 + 0x13) =
       *(byte *)(param_1_00 + 0x13) ^ (param_2 == 0x21 ^ *(byte *)(param_1_00 + 0x13)) & 1;
  if ((*(byte *)(param_1_00 + 0x13) & 1) != 0) {
    FID_conflict_erase(0,1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_008aebb0(void)

{
  int iVar1;
  int unaff_EBX;
  uint uVar2;
  undefined4 uVar3;
  int unaff_EDI;
  undefined auStack_40 [3];
  char local_3d;
  int local_3c;
  undefined4 local_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf498;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_40;
  ExceptionList = &local_c;
  local_38 = 0;
  if (*(int *)(unaff_EDI + 0x14) == 0) {
    *(undefined4 *)(unaff_EBX + 0x18) = 7;
    *(undefined4 *)(unaff_EBX + 0x14) = 0;
    *(undefined2 *)(unaff_EBX + 4) = 0;
    FID_conflict_assign(unaff_EDI,0,0xffffffff);
    *(undefined4 *)(unaff_EBX + 0x1c) = 0;
  }
  else {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 0;
    FUN_0081c141(*(int *)(unaff_EDI + 0x14));
    FUN_0081feb2(&local_3c,0);
    iVar1 = _iswspace((wint_t)local_3c);
    if ((iVar1 == 0) && (FUN_0081feb2(&local_3c,0), local_3c != 0x22)) {
      local_3d = '\0';
    }
    else {
      local_3d = '\x01';
      FID_conflict_append(1,0x22);
    }
    uVar2 = 0;
    if (*(int *)(unaff_EDI + 0x14) != 0) {
      do {
        FUN_0081feb2(&local_3c,uVar2);
        switch(local_3c) {
        case 9:
          uVar3 = 0x74;
          break;
        case 10:
          uVar3 = 0x6e;
          break;
        default:
switchD_008aecb0_caseD_b:
          FUN_0081feb2(&local_38,uVar2);
          FID_conflict_append(1,local_38);
          goto LAB_008aed1c;
        case 0xd:
          uVar3 = 0x72;
          break;
        case 0x22:
          if (local_3d == '\0') goto switchD_008aecb0_caseD_b;
          uVar3 = 0x22;
          break;
        case 0x5c:
          uVar3 = 0x5c;
        }
        FID_conflict_append(1,0x5c);
        FID_conflict_append(1,uVar3);
LAB_008aed1c:
        uVar2 = uVar2 + 1;
      } while (uVar2 < *(uint *)(unaff_EDI + 0x14));
    }
    if (local_3d != '\0') {
      FID_conflict_append(1,0x22);
    }
    *(undefined4 *)(unaff_EBX + 0x18) = 7;
    *(undefined4 *)(unaff_EBX + 0x14) = 0;
    *(undefined2 *)(unaff_EBX + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(unaff_EBX + 0x1c) = 0;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_008aee10(int param_1)

{
  short sVar1;
  uint uVar2;
  int *piVar3;
  int iVar4;
  int unaff_ESI;
  short *psVar5;
  int local_18 [2];
  char local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf4d9;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  *(undefined4 *)(unaff_ESI + 0x18) = 7;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined2 *)(unaff_ESI + 4) = 0;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  local_4 = 0;
  FUN_0081c141(*(undefined4 *)(param_1 + 0x14));
  piVar3 = (int *)FUN_00432231(local_18);
  iVar4 = *piVar3;
  if (*(uint *)(iVar4 + 0x18) < 8) {
    iVar4 = iVar4 + 4;
  }
  else {
    iVar4 = *(int *)(iVar4 + 4);
  }
  psVar5 = (short *)(iVar4 + piVar3[1] * 2);
  if ((local_10 != '\0') && (local_18[0] != 0)) {
    _free(*(void **)(local_18[0] + 0x1c));
    if (*(uint *)(local_18[0] + 0x18) < 8) {
      *(undefined4 *)(local_18[0] + 0x18) = 7;
      *(undefined4 *)(local_18[0] + 0x14) = 0;
      *(undefined2 *)(local_18[0] + 4) = 0;
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_18[0],uVar2);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(local_18[0] + 4),uVar2);
  }
  sVar1 = *psVar5;
  do {
    if (sVar1 == 0) {
      ExceptionList = local_c;
      return;
    }
    if (sVar1 == 0x5c) {
      sVar1 = psVar5[1];
      psVar5 = psVar5 + 1;
      if (sVar1 == 0) {
        ExceptionList = local_c;
        return;
      }
    }
    FID_conflict_append(1,sVar1);
    sVar1 = psVar5[1];
    psVar5 = psVar5 + 1;
  } while( true );
}



void __fastcall FUN_008aef20(int param_1)

{
  wchar_t _Ch;
  uint uVar1;
  int *piVar2;
  int iVar3;
  wchar_t *pwVar4;
  wchar_t *pwVar5;
  int unaff_ESI;
  int local_18 [2];
  char local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf4d9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  *(undefined4 *)(unaff_ESI + 0x18) = 7;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined2 *)(unaff_ESI + 4) = 0;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  local_4 = 0;
  FUN_0081c141(*(undefined4 *)(param_1 + 0x14));
  piVar2 = (int *)FUN_00432231(local_18);
  iVar3 = *piVar2;
  if (*(uint *)(iVar3 + 0x18) < 8) {
    iVar3 = iVar3 + 4;
  }
  else {
    iVar3 = *(int *)(iVar3 + 4);
  }
  pwVar5 = (wchar_t *)(iVar3 + piVar2[1] * 2);
  if ((local_10 != '\0') && (local_18[0] != 0)) {
    _free(*(void **)(local_18[0] + 0x1c));
    if (7 < *(uint *)(local_18[0] + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(local_18[0] + 4),uVar1);
    }
    *(undefined4 *)(local_18[0] + 0x18) = 7;
    *(undefined4 *)(local_18[0] + 0x14) = 0;
    *(undefined2 *)(local_18[0] + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_18[0],uVar1);
  }
  _Ch = *pwVar5;
  while (_Ch != L'\0') {
    iVar3 = _iswalnum(_Ch);
    if ((iVar3 == 0) && (pwVar4 = _wcschr(L"@_/-!.*%",_Ch), pwVar4 == (wchar_t *)0x0)) {
      FID_conflict_append(1,0x5c);
    }
    FID_conflict_append(1,_Ch);
    pwVar4 = pwVar5 + 1;
    pwVar5 = pwVar5 + 1;
    _Ch = *pwVar4;
  }
  ExceptionList = local_c;
  return;
}



void FUN_008af050(void)

{
  int in_EAX;
  int unaff_ESI;
  
  if ((*(int *)(in_EAX + 0x14) == 0) && (DAT_032bcb68 != 0)) {
    FUN_00841170(unaff_ESI);
    return;
  }
  *(undefined4 *)(unaff_ESI + 0x18) = 7;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined2 *)(unaff_ESI + 4) = 0;
  FID_conflict_assign(in_EAX,0,0xffffffff);
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  return;
}



void __thiscall
FUN_008af0a0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint param_8;
  void *param_9;
  undefined4 param_11;
  undefined4 param_12;
  undefined2 local_16;
  undefined4 local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf508;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0081a07d(param_12,param_1,3);
  FUN_008a29b0(param_11,param_1,2);
  FUN_00840990(&param_2,param_1,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10(local_16,local_14);
  FUN_0083fe90(param_1_00,uVar2,uVar3);
  _free(param_9);
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_008af160(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint param_8;
  void *param_9;
  undefined4 param_11;
  undefined4 param_12;
  undefined4 local_18;
  undefined4 local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf508;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0083e8f0(param_12,param_1,3);
  FUN_0081a07d(param_11,param_1,2);
  FUN_00840990(&param_2,param_1,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10(local_18,local_14);
  FUN_0083fe90(param_1_00,uVar2,uVar3);
  _free(param_9);
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_008af220(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint param_8;
  void *param_9;
  undefined4 param_11;
  undefined4 local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf538;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0081a07d(param_11,param_1,2);
  FUN_00840990(&param_2,param_1,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10(local_14);
  FUN_0083fe90(param_1_00,uVar2,uVar3);
  _free(param_9);
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_008af2d0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,uint param_3)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 param_7;
  uint param_8;
  void *param_9;
  undefined4 param_11;
  int param_12;
  char param_13;
  undefined4 local_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf570;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00840a00(&stack0x00000030,param_1,3);
  FUN_0081a07d(param_11,param_1,2);
  FUN_00840990(&param_2,param_1,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20();
  uVar4 = FUN_00884e10(local_18,uVar4);
  FUN_0083fe90(param_1_00,uVar3,uVar4);
  _free(param_9);
  iVar1 = param_12;
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  param_8 = 7;
  param_7 = 0;
  param_3 = param_3 & 0xffff0000;
  if ((param_13 != '\0') && (param_12 != 0)) {
    _free(*(void **)(param_12 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_008af400(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,uint param_3)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 param_7;
  uint param_8;
  void *param_9;
  undefined4 param_11;
  int param_12;
  char param_13;
  undefined4 param_14;
  undefined4 local_18;
  undefined4 local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf5a0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00820e3f(param_14,param_1,4);
  FUN_00840a00(&stack0x00000030,param_1,3);
  FUN_00820e3f(param_11,param_1,2);
  FUN_00840990(&param_2,param_1,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20(local_14);
  uVar4 = FUN_00884e10(local_18,uVar4);
  FUN_0083fe90(param_1_00,uVar3,uVar4);
  _free(param_9);
  iVar1 = param_12;
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  param_8 = 7;
  param_7 = 0;
  param_3 = param_3 & 0xffff0000;
  if ((param_13 != '\0') && (param_12 != 0)) {
    _free(*(void **)(param_12 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008af540(undefined4 param_1_00,uint param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  FUN_008a29b0(param_2,param_1,1);
  uVar1 = FUN_008854f0(param_1 & 0xffff);
  FUN_0083fe90(param_1_00,uVar1);
  return;
}



void __thiscall
FUN_008af580(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,int param_3,
            undefined4 param_4,char param_5)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccd68;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840a00(&param_3,param_1,2);
  FUN_00820e3f(param_2,param_1,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20();
  FUN_0083fe90(param_1_00,uVar3,param_2,uVar4);
  iVar1 = param_3;
  if ((param_5 != '\0') && (param_3 != 0)) {
    _free(*(void **)(param_3 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008af660(int param_1_00,int param_1,char param_2)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  undefined local_48 [4];
  uint local_44;
  int local_40;
  int local_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf5d0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_48;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  FUN_00853ce0(0);
  local_4 = 0;
  if (*(int *)(param_1 + 0x14) == 0) {
    FUN_00432156();
    *(undefined4 *)(param_1_00 + 0x188) = *(undefined4 *)(param_1_00 + 0x184);
  }
  else {
    FUN_0081feb2(&local_38,0);
    if (local_38 == 0x2f) {
      FUN_0088ae30(local_48,param_1,uVar1);
    }
    else {
      local_30 = local_30 & 0xffff0000;
      local_1c = 7;
      local_20 = 0;
      FID_conflict_assign(param_1_00 + 0x160,0,0xffffffff);
      local_18 = (void *)0x0;
      local_4._0_1_ = 1;
      FID_conflict_append(1,0x2f);
      FID_conflict_append(param_1,0,0xffffffff);
      FUN_0088ae30(local_48,local_34);
      local_4 = (uint)local_4._1_3_ << 8;
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
      local_1c = 7;
      local_20 = 0;
      local_30 = local_30 & 0xffff0000;
    }
    uVar1 = 0;
    *(undefined4 *)(param_1_00 + 0x188) = *(undefined4 *)(param_1_00 + 0x184);
    if (local_44 != 0) {
      iVar3 = 0;
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_44 <= uVar1)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                       "nIndex < m_nCount",L"wxArrayString: index out of bounds");
        }
        iVar2 = FUN_008ad850(iVar3 + local_40);
        if (iVar2 == 0) {
          if (param_2 == '\0') {
            local_4 = 0xffffffff;
            FUN_00853f30();
            goto LAB_008af8c8;
          }
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_44 <= uVar1)) {
            FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                         "nIndex < m_nCount",L"wxArrayString: index out of bounds");
          }
          iVar2 = FUN_008aea00(local_40 + iVar3);
        }
        *(int *)(param_1_00 + 0x188) = iVar2;
        uVar1 = uVar1 + 1;
        iVar3 = iVar3 + 0x24;
      } while (uVar1 < local_44);
    }
    iVar3 = 0;
    FUN_00432156();
    uVar1 = 0;
    if (local_44 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_44 <= uVar1)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                       "nIndex < m_nCount",L"wxArrayString: index out of bounds");
        }
        iVar2 = iVar3 + local_40;
        FID_conflict_append(1,0x2f);
        FID_conflict_append(iVar2,0,0xffffffff);
        uVar1 = uVar1 + 1;
        iVar3 = iVar3 + 0x24;
      } while (uVar1 < local_44);
    }
  }
  local_4 = 0xffffffff;
  FUN_00853f30();
LAB_008af8c8:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008af900(undefined4 param_1)

{
  FUN_008af660(param_1,1);
  return;
}



void __thiscall FUN_008af910(int *param_1_00,int param_1)

{
  undefined4 uVar1;
  undefined auStack_34 [4];
  uint uStack_30;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf248;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_34;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x14) != 0) {
    uVar1 = (**(code **)(*param_1_00 + 0x14))(DAT_0323f878 ^ (uint)&stack0xffffffc0);
    uStack_30 = uStack_30 & 0xffff0000;
    uStack_1c = 7;
    uStack_20 = 0;
    FID_conflict_assign(uVar1,0,0xffffffff);
    pvStack_18 = (void *)0x0;
    uStack_4 = 0;
    FUN_008af660(param_1,0);
    (**(code **)(*param_1_00 + 0x10))(auStack_34);
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_008af9e0(int *param_1)

{
  char cVar1;
  int *piVar2;
  undefined4 ***pppuVar3;
  undefined *puVar4;
  bool bVar5;
  undefined **local_ac;
  undefined auStack_90 [3];
  char local_8d;
  undefined ***local_8c [4];
  undefined *local_7c [6];
  uint uStack_64;
  void *pvStack_60;
  undefined auStack_58 [4];
  undefined4 local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined *local_34;
  undefined4 ***local_30 [4];
  int local_20;
  uint local_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf618;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_90;
  ExceptionList = &local_c;
  bVar5 = false;
  local_8c[0] = &local_ac;
  local_ac = (undefined **)0x2f;
  FUN_00852900(&local_34);
  local_4 = 0;
  if (local_20 == 0) {
    local_ac = (undefined **)0x8afa60;
    piVar2 = (int *)FUN_00432231();
    bVar5 = true;
    if (*(int *)(*piVar2 + 0x14) == 0) goto LAB_008afa86;
    local_ac = (undefined **)local_8c;
    FUN_0081feb2();
    local_8d = '\x01';
    if (local_8c[0] != (undefined ***)0x2f) goto LAB_008afa86;
  }
  else {
LAB_008afa86:
    local_8d = '\0';
  }
  if (bVar5) {
    FUN_00432214();
  }
  if (local_8d != '\0') {
    if (local_1c == 0) {
      local_ac = (undefined **)0x1;
      FUN_004181eb();
    }
    pppuVar3 = local_30[0];
    if (local_1c < 8) {
      pppuVar3 = local_30;
    }
    *(undefined2 *)pppuVar3 = 0x2f;
    local_20 = 1;
    if (local_1c < 8) {
      local_30[0] = local_30;
    }
    *(undefined2 *)((int)local_30[0] + 2) = 0;
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = (uint)local_54._2_2_ << 0x10;
  local_3c = (void *)0x0;
  local_4._0_1_ = 1;
  if (local_20 != 0) {
    puVar4 = (undefined *)(**(code **)(*param_1 + 0x14))();
    if (auStack_58 != puVar4) {
      local_ac = (undefined **)0x0;
      FID_conflict_assign(puVar4);
    }
    if (local_44 == 0) {
      local_ac = (undefined **)0x8afb55;
      FUN_00855e10();
    }
    local_ac = &local_34;
    cVar1 = FUN_008af660();
    if (cVar1 == '\0') {
      local_ac = (undefined **)0x8afb70;
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        local_ac = (undefined **)&UNK_008afb83;
        FUN_00a3f6a1();
      }
      local_40 = 7;
      local_44 = 0;
      local_54 = local_54 & 0xffff0000;
      local_ac = (undefined **)0x8afba6;
      _free(pvStack_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        local_ac = (undefined **)&UNK_008afbbc;
        FUN_00a3f6a1();
      }
      goto LAB_008afc94;
    }
  }
  local_8c[0] = (undefined ***)&stack0xffffff58;
  local_ac = local_7c;
  FUN_00852730();
  local_4._0_1_ = 2;
  local_ac = (undefined **)0x8afbf3;
  FUN_008ad7c0();
  local_4._0_1_ = 1;
  local_ac = (undefined **)0x8afc0a;
  _free(pvStack_60);
  if (7 < uStack_64) {
                    // WARNING: Subroutine does not return
    local_ac = (undefined **)&UNK_008afc1d;
    FUN_00a3f6a1();
  }
  if (local_44 != 0) {
    local_ac = (undefined **)0x8afc35;
    (**(code **)(*param_1 + 0x10))();
  }
  local_ac = (undefined **)0x8afc3f;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    local_ac = (undefined **)&UNK_008afc52;
    FUN_00a3f6a1();
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  local_ac = (undefined **)0x8afc79;
  _free(pvStack_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    local_ac = (undefined **)&UNK_008afc8f;
    FUN_00a3f6a1();
  }
LAB_008afc94:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_008afcc0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd98b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    iVar2 = FUN_008ad7c0(param_1);
    if (iVar2 != 0) {
      FUN_008402e0("..\\..\\src\\common\\fileconf.cpp",0x666,"wxFileConfigGroup::AddEntry",
                   "FindEntry(strName) == 0",0,uVar1);
    }
  }
  pvVar3 = operator_new(0x58);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_008aeab0(param_1_00,param_1,param_2);
  }
  local_4 = 0xffffffff;
  FUN_0086a850(uVar4,*(undefined4 *)(param_1_00 + 0x14));
  ExceptionList = local_c;
  return uVar4;
}



void __fastcall FUN_008afd80(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x184);
  if (iVar1 != 0) {
    FUN_008ae750();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  iVar1 = *(int *)(param_1 + 0x58);
  if (iVar1 != 0) {
    _free(*(void **)(iVar1 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __fastcall FUN_008afdf0(int param_1)

{
  short sVar1;
  bool bVar2;
  char cVar3;
  int iVar4;
  undefined *puVar5;
  short *psVar6;
  undefined4 uVar7;
  bool bVar8;
  undefined auStack_1b4 [12];
  undefined4 uStack_1a8;
  undefined4 uStack_1a4;
  char *pcStack_1a0;
  int iStack_19c;
  char *pcStack_198;
  undefined *local_17c [6];
  undefined local_164 [4];
  uint local_160;
  undefined4 local_150;
  uint local_14c;
  void *local_148;
  undefined local_140 [24];
  uint local_128;
  void *local_124;
  undefined local_11c [152];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_84 [4];
  uint local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  int local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf6f2;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_17c;
  ExceptionList = &local_c;
  bVar8 = false;
  local_17c[0] = (undefined *)0x0;
  if (*(char *)(param_1 + 400) == '\0') {
LAB_008afe59:
    bVar2 = true;
  }
  else {
    pcStack_198 = local_140;
    iStack_19c = 0x8afe4d;
    iVar4 = FUN_008581b0();
    bVar8 = true;
    if (*(int *)(iVar4 + 0x14) == 0) goto LAB_008afe59;
    bVar2 = false;
  }
  if (bVar8) {
    pcStack_198 = (undefined *)0x8afe6a;
    _free(local_124);
    if (7 < local_128) {
                    // WARNING: Subroutine does not return
      pcStack_198 = &UNK_008afe7e;
      FUN_00a3f6a1();
    }
  }
  if (!bVar2) {
    pcStack_198 = local_164;
    iStack_19c = 0x8afe97;
    FUN_008581b0();
    local_4 = 0;
    pcStack_198 = (char *)0x8afeab;
    FUN_00888f10();
    local_4._0_1_ = 2;
    pcStack_198 = (undefined *)0x8afebd;
    _free(local_148);
    if (7 < local_14c) {
                    // WARNING: Subroutine does not return
      pcStack_198 = &UNK_008afed1;
      FUN_00a3f6a1();
    }
    local_14c = 7;
    local_150 = 0;
    local_160 = local_160 & 0xffff0000;
    if (local_18 == -1) {
      local_17c[0] = auStack_1b4;
      FUN_0043c211(&DAT_00d25fa0);
      cVar3 = FUN_00846b30(1);
      if (cVar3 != '\0') {
        pcStack_198 = (char *)0x8aff2b;
        FUN_004325b6();
        local_4._0_1_ = 3;
        pcStack_198 = (char *)0x8aff41;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,4);
        iVar4 = FUN_0084a340();
        if (iVar4 == 0) {
          pcStack_198 = (char *)0x8aff6f;
          FUN_0084d360();
        }
        else {
          pcStack_198 = local_140;
          iStack_19c = 0x8aff63;
          FUN_0084f210();
        }
        pcStack_198 = (char *)0x8aff7c;
        FUN_008433c0();
        pcStack_198 = "wxFileConfig::Flush";
        iStack_19c = 0x3fa;
        pcStack_1a0 = "..\\..\\src\\common\\fileconf.cpp";
        uStack_1a4 = 1;
        local_4._0_1_ = 5;
        uStack_1a8 = 0x8affa7;
        puVar5 = (undefined *)FUN_008423d0();
        local_4._0_1_ = 6;
        FUN_008854f0();
        iStack_19c = 0x8affc1;
        pcStack_198 = puVar5;
        FUN_0083fe90();
        local_4._0_1_ = 5;
        FUN_00842440();
        local_4 = CONCAT31(local_4._1_3_,4);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
    else {
      local_6c = 7;
      local_70 = 0;
      local_80 = local_80 & 0xffff0000;
      local_68 = (void *)0x0;
      local_4 = CONCAT31(local_4._1_3_,7);
      pcStack_198 = (char *)0x8b0050;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
                (local_84,0x1000);
      for (iVar4 = *(int *)(param_1 + 0x58); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0x24)) {
        pcStack_198 = (char *)0x0;
        pcStack_1a0 = (char *)0x8b0067;
        iStack_19c = iVar4;
        FID_conflict_append();
        pcStack_198 = (char *)0x8b0073;
        psVar6 = (short *)FUN_008a8600();
        pcStack_198 = (char *)psVar6;
        if (psVar6 == (short *)0x0) {
          psVar6 = &DAT_00fae9c8;
          pcStack_198 = (char *)psVar6;
        }
        do {
          sVar1 = *psVar6;
          psVar6 = psVar6 + 1;
        } while (sVar1 != 0);
        iStack_19c = 0x8b00a3;
        FUN_00473ccc();
      }
      pcStack_198 = (char *)local_84;
      iStack_19c = 0x8b00c7;
      cVar3 = FUN_00887740();
      if (cVar3 == '\0') {
        local_17c[0] = auStack_1b4;
        FUN_0043c211(&DAT_00d25fa0);
        cVar3 = FUN_00846b30(1);
        if (cVar3 != '\0') {
          pcStack_198 = (char *)0x8b0103;
          FUN_004325b6();
          local_4._0_1_ = 8;
          pcStack_198 = (char *)0x8b0119;
          FUN_0043c211();
          local_4 = CONCAT31(local_4._1_3_,9);
          iVar4 = FUN_0084a340();
          if (iVar4 == 0) {
            pcStack_198 = (char *)0x8b0147;
            FUN_0084d360();
          }
          else {
            pcStack_198 = local_164;
            iStack_19c = 0x8b013b;
            FUN_0084f210();
          }
          pcStack_198 = (char *)0x8b0154;
          FUN_008433c0();
          pcStack_198 = "wxFileConfig::Flush";
          iStack_19c = 0x408;
          pcStack_1a0 = "..\\..\\src\\common\\fileconf.cpp";
          uStack_1a4 = 1;
          local_4._0_1_ = 10;
          uStack_1a8 = 0x8b017f;
          uVar7 = FUN_008423d0();
          local_4._0_1_ = 0xb;
          FUN_008854f0();
          iStack_19c = 0x8b0199;
          pcStack_198 = (char *)uVar7;
          FUN_0083fe90();
          local_4._0_1_ = 10;
          FUN_00842440();
          local_4 = CONCAT31(local_4._1_3_,9);
          FUN_0081b5bc();
          pcStack_198 = (char *)0x8b01ca;
          _free(local_148);
          if (7 < local_14c) {
                    // WARNING: Subroutine does not return
            pcStack_198 = &UNK_008b01e2;
            FUN_00a3f6a1();
          }
          local_14c = 7;
          local_150 = 0;
          local_160 = local_160 & 0xffff0000;
          pcStack_198 = (char *)0x8b0202;
          _free(local_124);
          if (7 < local_128) {
                    // WARNING: Subroutine does not return
            pcStack_198 = &UNK_008b0215;
            FUN_00a3f6a1();
          }
        }
        pcStack_198 = (undefined *)0x8b0231;
        _free(local_68);
        if (7 < local_6c) {
                    // WARNING: Subroutine does not return
          pcStack_198 = &UNK_008b024a;
          FUN_00a3f6a1();
        }
        local_6c = 7;
        local_70 = 0;
        local_80 = local_80 & 0xffff0000;
      }
      else {
        cVar3 = FUN_00887f40();
        if (cVar3 != '\0') {
          *(undefined *)(param_1 + 400) = 0;
          pcStack_198 = (undefined *)0x8b03ea;
          _free(local_68);
          if (7 < local_6c) {
                    // WARNING: Subroutine does not return
            pcStack_198 = &UNK_008b0404;
            FUN_00a3f6a1();
          }
          local_6c = 7;
          local_70 = 0;
          local_80 = local_80 & 0xffff0000;
          local_4 = 0xffffffff;
          FUN_00888fa0();
          goto LAB_008b0438;
        }
        local_17c[0] = auStack_1b4;
        FUN_0043c211(&DAT_00d25fa0);
        cVar3 = FUN_00846b30(1);
        if (cVar3 != '\0') {
          pcStack_198 = (char *)0x8b02b5;
          FUN_004325b6();
          local_4._0_1_ = 0xc;
          pcStack_198 = (char *)0x8b02cb;
          FUN_0043c211();
          local_4 = CONCAT31(local_4._1_3_,0xd);
          iVar4 = FUN_0084a340();
          if (iVar4 == 0) {
            pcStack_198 = (char *)0x8b02fc;
            FUN_0084d360();
          }
          else {
            pcStack_198 = local_11c;
            iStack_19c = 0x8b02f0;
            FUN_0084f210();
          }
          pcStack_198 = (char *)0x8b0309;
          FUN_008433c0();
          pcStack_198 = "wxFileConfig::Flush";
          iStack_19c = 0x40e;
          pcStack_1a0 = "..\\..\\src\\common\\fileconf.cpp";
          uStack_1a4 = 1;
          local_4._0_1_ = 0xe;
          uStack_1a8 = 0x8b0334;
          uVar7 = FUN_008423d0();
          local_4._0_1_ = 0xf;
          FUN_008854f0();
          iStack_19c = 0x8b034e;
          pcStack_198 = (char *)uVar7;
          FUN_0083fe90();
          local_4._0_1_ = 0xe;
          FUN_00842440();
          local_4 = CONCAT31(local_4._1_3_,0xd);
          FUN_0081b5bc();
          FUN_0040159c();
          FUN_0040159c();
        }
        pcStack_198 = (undefined *)0x8b039c;
        _free(local_68);
        if (7 < local_6c) {
                    // WARNING: Subroutine does not return
          pcStack_198 = &UNK_008b03b6;
          FUN_00a3f6a1();
        }
        local_6c = 7;
        local_70 = 0;
        local_80 = local_80 & 0xffff0000;
      }
    }
    local_4 = 0xffffffff;
    FUN_00888fa0();
  }
LAB_008b0438:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008b0470(undefined *param_1_00,int *param_1,undefined4 param_2)

{
  short sVar1;
  char **ppcVar2;
  char cVar3;
  short *psVar4;
  void **ppvVar5;
  char *pcVar6;
  int *piVar7;
  char **ppcVar8;
  int iVar9;
  undefined auStack_12c [20];
  undefined4 uStack_118;
  void **local_f4;
  undefined *local_f0;
  char **local_ec;
  undefined4 local_e8;
  int *local_e4;
  undefined4 uStack_e0;
  char *pcStack_d8;
  undefined4 uStack_d4;
  char *pcStack_d0;
  undefined *puStack_cc;
  __time64_t _Stack_c8;
  DWORD DStack_c0;
  int iStack_bc;
  undefined4 uStack_b4;
  undefined4 uStack_a4;
  uint uStack_a0;
  void *pvStack_9c;
  uint uStack_8c;
  undefined4 uStack_7c;
  uint uStack_78;
  void *pvStack_74;
  uint uStack_68;
  undefined4 uStack_58;
  uint uStack_54;
  void *pvStack_50;
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf76f;
  local_10 = DAT_0323f878 ^ (uint)&local_f4;
  iVar9 = *(int *)(param_1_00 + 0x58);
  ppvVar5 = &local_c;
  local_f0 = param_1_00;
  local_c = ExceptionList;
  local_e4 = param_1;
  local_e8 = param_2;
  do {
    ExceptionList = ppvVar5;
    if (iVar9 == 0) {
      local_f0[400] = 0;
LAB_008b0696:
      ExceptionList = local_c;
      ___security_check_cookie_4();
      return;
    }
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    uStack_118 = 0x8b04fe;
    FID_conflict_assign();
    local_18 = (void *)0x0;
    local_4 = 0;
    psVar4 = (short *)FUN_008a8600();
    if (psVar4 == (short *)0x0) {
      psVar4 = &DAT_00fae9c8;
    }
    do {
      sVar1 = *psVar4;
      psVar4 = psVar4 + 1;
    } while (sVar1 != 0);
    FUN_00473ccc();
    FUN_00432413();
    local_4._0_1_ = 1;
    local_ec = (char **)FUN_00850350();
    local_4._0_1_ = 2;
    FUN_00432299();
    local_4 = CONCAT31(local_4._1_3_,4);
    ppvVar5 = (void **)FUN_00850350();
    if (local_f4 != ppvVar5) {
      *(short *)(local_f4 + 2) = *(short *)(local_f4 + 2) + -1;
      if (*(short *)(local_f4 + 2) == 0) {
        if (*(char *)((int)local_f4 + 10) != '\0') {
          _free(*local_f4);
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_f4 = (void **)FUN_00850350();
    }
    ppcVar2 = local_ec;
    pcVar6 = *local_ec;
    do {
      cVar3 = *pcVar6;
      pcVar6 = pcVar6 + 1;
    } while (cVar3 != '\0');
    piVar7 = (int *)(**(code **)(*local_e4 + 0x28))();
    cVar3 = (**(code **)(*piVar7 + 0x10))();
    if (cVar3 == '\0') {
      local_f0 = auStack_12c;
      FUN_0043c211(&DAT_00d25fa0);
      cVar3 = FUN_00846b30(1);
      if (cVar3 != '\0') {
        psVar4 = (short *)PTR_DAT_03236318;
        if (PTR_DAT_03236318 == (undefined *)0x0) {
          psVar4 = &DAT_00fae9c8;
        }
        uStack_68 = uStack_68 & 0xffff0000;
        uStack_54 = 7;
        uStack_58 = 0;
        do {
          sVar1 = *psVar4;
          psVar4 = psVar4 + 1;
        } while (sVar1 != 0);
        FID_conflict_assign();
        pvStack_50 = (void *)0x0;
        local_4._0_1_ = 5;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,6);
        iVar9 = FUN_0084a340();
        if (iVar9 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 7;
        uStack_e0 = 1;
        pcStack_d8 = "..\\..\\src\\common\\fileconf.cpp";
        pcStack_d0 = "wxFileConfig::Save";
        uStack_d4 = 0x429;
        puStack_cc = &DAT_00d25fa0;
        _Stack_c8 = __time64((__time64_t *)0x0);
        DStack_c0 = GetCurrentThreadId();
        iStack_bc = 0;
        uStack_a0 = 7;
        uStack_a4 = 0;
        uStack_b4._0_2_ = 0;
        pvStack_9c = (void *)0x0;
        local_4._0_1_ = 8;
        FUN_008854f0();
        FUN_0083fe90();
        local_4._0_1_ = 7;
        uStack_118 = 0x8b0826;
        _free(pvStack_9c);
        if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        uStack_a4 = 0;
        uStack_a0 = 7;
        uStack_b4 = (uint)uStack_b4._2_2_ << 0x10;
        if (iStack_bc != 0) {
          FUN_00841af0();
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        local_4 = CONCAT31(local_4._1_3_,6);
        FUN_0081b5bc();
        _free(pvStack_74);
        if (7 < uStack_78) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        uStack_78 = 7;
        uStack_7c = 0;
        uStack_8c = uStack_8c & 0xffff0000;
        _free(pvStack_50);
        if (7 < uStack_54) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
      }
      local_4 = local_4 & 0xffffff00;
      ppcVar8 = (char **)FUN_00850350();
      if (ppcVar2 != ppcVar8) {
        *(short *)(ppcVar2 + 2) = *(short *)(ppcVar2 + 2) + -1;
        if (*(short *)(ppcVar2 + 2) == 0) {
          if (*(char *)((int)ppcVar2 + 10) != '\0') {
            _free(*ppcVar2);
          }
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        FUN_00850350();
      }
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      goto LAB_008b0696;
    }
    local_4 = local_4 & 0xffffff00;
    ppcVar8 = (char **)FUN_00850350();
    if (ppcVar2 != ppcVar8) {
      *(short *)(ppcVar2 + 2) = *(short *)(ppcVar2 + 2) + -1;
      if (*(short *)(ppcVar2 + 2) == 0) {
        if (*(char *)((int)ppcVar2 + 10) != '\0') {
          _free(*ppcVar2);
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      FUN_00850350();
    }
    local_4 = 0xffffffff;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    iVar9 = *(int *)(iVar9 + 0x24);
    ppvVar5 = (void **)ExceptionList;
  } while( true );
}



// WARNING: Removing unreachable block (ram,0x008b08de)
// WARNING: Removing unreachable block (ram,0x008b085e)
// WARNING: Removing unreachable block (ram,0x008b0834)

void FUN_008b06c0(void)

{
  short sVar1;
  char cVar2;
  int iVar3;
  void **ppvVar4;
  short *psVar5;
  undefined *unaff_EBX;
  void **unaff_ESI;
  undefined *param_6;
  uint param_26;
  void *param_27;
  uint param_35;
  void *param_36;
  void *in_stack_000000fc;
  undefined auStack_24 [20];
  undefined4 uStack_10;
  
  param_6 = auStack_24;
  FUN_0043c211(&DAT_00d25fa0);
  cVar2 = FUN_00846b30(1);
  if (cVar2 != '\0') {
    psVar5 = (short *)PTR_DAT_03236318;
    if (PTR_DAT_03236318 == unaff_EBX) {
      psVar5 = &DAT_00fae9c8;
    }
    do {
      sVar1 = *psVar5;
      psVar5 = psVar5 + 1;
    } while (sVar1 != (short)unaff_EBX);
    FID_conflict_assign();
    FUN_0043c211();
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    __time64((__time64_t *)0x0);
    GetCurrentThreadId();
    FUN_008854f0();
    FUN_0083fe90();
    uStack_10 = 0x8b0826;
    _free((void *)0x0);
    FUN_0081b5bc();
    _free(param_27);
    if (7 < param_26) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(unaff_EBX);
    unaff_EBX = (undefined *)0x0;
  }
  ppvVar4 = (void **)FUN_00850350();
  if (unaff_ESI != ppvVar4) {
    *(short *)(unaff_ESI + 2) = *(short *)(unaff_ESI + 2) + -1;
    if (*(short *)(unaff_ESI + 2) == (short)unaff_EBX) {
      if (*(char *)((int)unaff_ESI + 10) != '\0') {
        _free(*unaff_ESI);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    FUN_00850350();
  }
  _free(param_36);
  if (param_35 < 8) {
    ExceptionList = in_stack_000000fc;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



void __thiscall FUN_008b0970(int *param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  undefined4 uStack_110;
  char *pcStack_10c;
  char **ppcStack_108;
  char *pcStack_104;
  char *pcStack_100;
  undefined local_e0 [4];
  uint local_dc;
  undefined4 local_cc;
  uint local_c8;
  void *local_c4;
  undefined4 *local_bc;
  uint local_b4;
  undefined4 local_a4;
  uint local_a0;
  void *local_9c;
  uint local_90;
  undefined4 local_80;
  uint local_7c;
  void *local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf7e7;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1_00[0x15] != 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(2);
    if (cVar1 != '\0') {
      pcStack_100 = (char *)0x8b09de;
      FUN_004325b6();
      local_4 = 0;
      pcStack_100 = (char *)0x8b09f3;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        pcStack_100 = (char *)0x8b0a21;
        FUN_0084d360();
      }
      else {
        pcStack_100 = local_e0;
        pcStack_104 = (char *)0x8b0a15;
        FUN_0084f210();
      }
      pcStack_100 = (char *)0x8b0a31;
      FUN_008433c0();
      local_4._0_1_ = 2;
      pcStack_100 = (char *)0x8b0a45;
      FUN_008ae890();
      ppcStack_108 = &pcStack_104;
      pcStack_10c = (char *)0x8b0a56;
      FUN_00432231();
      local_bc = &uStack_110;
      FUN_00432231();
      local_4._0_1_ = 5;
      FUN_008423d0(2,"..\\..\\src\\common\\fileconf.cpp");
      local_4._0_1_ = 7;
      FUN_0085def0();
      local_4._0_1_ = 3;
      FUN_00842440();
      pcStack_100 = (char *)0x8b0ad6;
      _free(local_78);
      if (7 < local_7c) {
                    // WARNING: Subroutine does not return
        pcStack_100 = &UNK_008b0aee;
        FUN_00a3f6a1();
      }
      local_90 = local_90 & 0xffff0000;
      local_7c = 7;
      local_80 = 0;
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      pcStack_100 = (char *)0x8b0b1e;
      _free(local_c4);
      if (7 < local_c8) {
                    // WARNING: Subroutine does not return
        pcStack_100 = &UNK_008b0b31;
        FUN_00a3f6a1();
      }
      local_c8 = 7;
      local_cc = 0;
      local_dc = local_dc & 0xffff0000;
      local_4 = 0xffffffff;
      pcStack_100 = (char *)0x8b0b58;
      _free(local_9c);
      if (7 < local_a0) {
                    // WARNING: Subroutine does not return
        pcStack_100 = &UNK_008b0b6b;
        FUN_00a3f6a1();
      }
      local_a0 = 7;
      local_a4 = 0;
      local_b4 = local_b4 & 0xffff0000;
    }
  }
  iVar2 = *param_1_00;
  param_1_00[0x15] = param_1;
  *(int **)(iVar2 + 0x50) = param_1_00;
  if (*(int *)(iVar2 + 0x4c) == 0) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(iVar2 + 4) != 0)) {
      pcStack_100 = "!m_pParent";
      pcStack_104 = "wxFileConfigGroup::SetLastEntry";
      ppcStack_108 = (char **)0x5e5;
      pcStack_10c = "..\\..\\src\\common\\fileconf.cpp";
      uStack_110 = 0x8b0bbc;
      FUN_00840480();
    }
    *(int *)(iVar2 + 0x4c) = param_1_00[0x15];
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_008b0bf0(int param_1)

{
  short *psVar1;
  void *pvVar2;
  char cVar3;
  undefined4 *****pppppuVar4;
  int iVar5;
  int *piVar6;
  int iVar7;
  int unaff_EBX;
  short *psVar8;
  undefined4 uStack_140;
  undefined4 uStack_13c;
  char *pcStack_138;
  undefined4 uStack_134;
  char *pcStack_130;
  undefined **ppuStack_12c;
  undefined *puStack_128;
  undefined *puStack_124;
  undefined auStack_10c [3];
  char local_109;
  undefined **local_108;
  int local_104;
  short *local_100;
  int local_fc;
  short *local_f8;
  int local_f4;
  int local_f0;
  short *local_ec;
  undefined local_e8 [4];
  uint local_e4;
  undefined4 local_d4;
  uint local_d0;
  void *local_cc;
  undefined local_c4 [20];
  undefined local_b0 [24];
  uint local_98;
  void *local_94;
  undefined local_8c [88];
  undefined local_34 [4];
  undefined4 *****local_30 [4];
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf886;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_10c;
  ExceptionList = &local_c;
  local_108 = (undefined **)0x0;
  local_1c = 7;
  local_20 = 0;
  local_30[0] = (undefined4 *****)((uint)local_30[0] & 0xffff0000);
  local_18 = (void *)0x0;
  puStack_124 = *(undefined **)(unaff_EBX + 0x14);
  local_4 = 0;
  local_f4 = param_1;
  if (puStack_124 != (undefined *)0x0) {
    if (puStack_124 != (undefined *)0x7) {
      puStack_128 = (undefined *)0x8b0cc7;
      cVar3 = FUN_004182d2();
      if (cVar3 != '\0') {
        local_20 = 0;
        pppppuVar4 = local_30[0];
        if (local_1c < 8) {
          pppppuVar4 = local_30;
        }
        *(undefined2 *)pppppuVar4 = 0;
      }
    }
    puStack_124 = (undefined *)0x8b0cfb;
    FUN_00847890();
    psVar8 = local_100;
    iVar7 = local_104;
    if (local_104 != -4) {
      if (local_104 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar7 + 0x18) < 8) {
        iVar5 = iVar7 + 4;
      }
      else {
        iVar5 = *(int *)(iVar7 + 4);
      }
      if ((short *)(iVar5 + *(int *)(iVar7 + 0x14) * 2) <= psVar8) {
        FUN_00a3fb10();
      }
    }
    local_109 = *psVar8 == 0x22;
    if ((bool)local_109) {
      FUN_00847800();
      psVar8 = local_100;
      iVar7 = local_104;
    }
    puStack_124 = (undefined *)0x8b0d5d;
    FUN_008478e0();
    do {
      if ((iVar7 != -4) && ((iVar7 == 0 || (iVar7 != local_fc)))) {
        FUN_00a3fb10();
      }
      if (psVar8 == local_f8) goto LAB_008b11f1;
      if (iVar7 != -4) {
        if (iVar7 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar7 + 0x18) < 8) {
          iVar5 = iVar7 + 4;
        }
        else {
          iVar5 = *(int *)(iVar7 + 4);
        }
        if ((short *)(iVar5 + *(int *)(iVar7 + 0x14) * 2) <= psVar8) {
          FUN_00a3fb10();
        }
      }
      if (*psVar8 == 0x5c) {
        if (iVar7 != -4) {
          if (iVar7 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar7 + 0x18) < 8) {
            iVar5 = iVar7 + 4;
          }
          else {
            iVar5 = *(int *)(iVar7 + 4);
          }
          if ((short *)(iVar5 + *(int *)(iVar7 + 0x14) * 2) <= psVar8) {
            FUN_00a3fb10();
          }
        }
        psVar8 = psVar8 + 1;
        if ((iVar7 != -4) && ((iVar7 == 0 || (iVar7 != local_fc)))) {
          FUN_00a3fb10();
        }
        if (psVar8 == local_f8) goto LAB_008b1087;
        if (iVar7 != -4) {
          if (iVar7 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar7 + 0x18) < 8) {
            iVar5 = iVar7 + 4;
          }
          else {
            iVar5 = *(int *)(iVar7 + 4);
          }
          if ((short *)(iVar5 + *(int *)(iVar7 + 0x14) * 2) <= psVar8) {
            FUN_00a3fb10();
          }
        }
        switch(*psVar8) {
        case 0x22:
          break;
        default:
          goto switchD_008b0e44_caseD_23;
        case 0x5c:
          break;
        case 0x6e:
          break;
        case 0x72:
          break;
        case 0x74:
        }
LAB_008b103e:
        puStack_124 = (undefined *)0x1;
        puStack_128 = (undefined *)0x8b104c;
        FID_conflict_append();
      }
      else {
        if (iVar7 != -4) {
          if (iVar7 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar7 + 0x18) < 8) {
            iVar5 = iVar7 + 4;
          }
          else {
            iVar5 = *(int *)(iVar7 + 4);
          }
          if ((short *)(iVar5 + *(int *)(iVar7 + 0x14) * 2) <= psVar8) {
            FUN_00a3fb10();
          }
        }
        if ((*psVar8 != 0x22) || (local_109 == '\0')) {
          if (iVar7 != -4) {
            if (iVar7 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(iVar7 + 0x18) < 8) {
              iVar5 = iVar7 + 4;
            }
            else {
              iVar5 = *(int *)(iVar7 + 4);
            }
            if ((short *)(iVar5 + *(int *)(iVar7 + 0x14) * 2) <= psVar8) {
              FUN_00a3fb10();
            }
          }
          goto LAB_008b103e;
        }
        local_ec = local_f8;
        local_f0 = local_fc;
        puStack_124 = (undefined *)0x8b0ecc;
        piVar6 = (int *)FUN_004226c0();
        psVar1 = (short *)piVar6[1];
        if ((iVar7 != -4) && ((iVar7 == 0 || (iVar7 != *piVar6)))) {
          FUN_00a3fb10();
        }
        if (psVar8 != psVar1) {
          local_108 = (undefined **)&uStack_140;
          FUN_0043c211(&DAT_00d25fa0);
          cVar3 = FUN_00846b30(2);
          if (cVar3 != '\0') {
            puStack_124 = (undefined *)0x8b0f20;
            FUN_004325b6();
            local_4._0_1_ = 7;
            puStack_124 = (undefined *)0x8b0f36;
            FUN_0043c211();
            puStack_124 = local_b0;
            local_4._0_1_ = 8;
            puStack_128 = (undefined *)0x8b0f4d;
            FUN_00820bf9();
            puStack_124 = (undefined *)0x8b0f5a;
            FUN_008433c0();
            local_108 = &puStack_128;
            ppuStack_12c = &puStack_128;
            pcStack_130 = (char *)0x8b0f6b;
            FUN_00432231();
            ppuStack_12c = (undefined **)&DAT_00d25fa0;
            pcStack_130 = "FilterInValue";
            uStack_134 = 0x7da;
            pcStack_138 = "..\\..\\src\\common\\fileconf.cpp";
            uStack_13c = 2;
            local_4._0_1_ = 10;
            uStack_140 = 0x8b0f95;
            FUN_008423d0();
            local_4._0_1_ = 0xb;
            ppuStack_12c = (undefined **)local_8c;
            pcStack_130 = (char *)0x8b0fae;
            ppuStack_12c = (undefined **)FUN_00847890();
            pcStack_130 = (char *)0x8b0fb8;
            ppuStack_12c = (undefined **)FUN_0086f7f0();
            pcStack_130 = local_c4;
            local_4._0_1_ = 0xc;
            uStack_134 = 0x8b0fcd;
            FUN_008af580();
            local_4._0_1_ = 9;
            FUN_00842440();
            local_4._0_1_ = 8;
            FUN_0081b5bc();
            FUN_0040159c();
            local_4 = (uint)local_4._1_3_ << 8;
            FUN_0040159c();
          }
        }
      }
switchD_008b0e44_caseD_23:
      if (iVar7 != -4) {
        if (iVar7 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar7 + 0x18) < 8) {
          iVar5 = iVar7 + 4;
        }
        else {
          iVar5 = *(int *)(iVar7 + 4);
        }
        if ((short *)(iVar5 + *(int *)(iVar7 + 0x14) * 2) <= psVar8) {
          FUN_00a3fb10();
        }
      }
      psVar8 = psVar8 + 1;
      param_1 = local_f4;
      local_100 = psVar8;
    } while( true );
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puStack_124 = (undefined *)0x0;
  puStack_128 = local_34;
  *(undefined2 *)(param_1 + 4) = 0;
  ppuStack_12c = (undefined **)0x8b0c86;
  FID_conflict_assign();
  *(undefined4 *)(param_1 + 0x1c) = 0;
  puStack_124 = (undefined *)0x8b0c96;
  _free(local_18);
  pvVar2 = ExceptionList;
  ExceptionList = local_c;
joined_r0x008b1230:
  local_c = ExceptionList;
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    puStack_124 = &UNK_008b123f;
    ExceptionList = pvVar2;
    FUN_00a3f6a1();
  }
  ___security_check_cookie_4();
  return;
LAB_008b1087:
  local_108 = (undefined **)&uStack_140;
  FUN_0043c211(&DAT_00d25fa0);
  cVar3 = FUN_00846b30(2);
  if (cVar3 != '\0') {
    puStack_124 = (undefined *)0x8b10bb;
    FUN_004325b6();
    local_4._0_1_ = 1;
    puStack_124 = (undefined *)0x8b10d1;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,2);
    iVar7 = FUN_0084a340();
    if (iVar7 == 0) {
      puStack_124 = (undefined *)0x8b10ff;
      FUN_0084d360();
    }
    else {
      puStack_124 = local_e8;
      puStack_128 = (undefined *)0x8b10f3;
      FUN_0084f210();
    }
    puStack_124 = (undefined *)0x8b110c;
    FUN_008433c0();
    local_108 = &puStack_128;
    ppuStack_12c = &puStack_128;
    pcStack_130 = (char *)0x8b111d;
    FUN_00432231();
    ppuStack_12c = (undefined **)&DAT_00d25fa0;
    pcStack_130 = "FilterInValue";
    uStack_134 = 0x7b7;
    pcStack_138 = "..\\..\\src\\common\\fileconf.cpp";
    uStack_13c = 2;
    local_4._0_1_ = 4;
    uStack_140 = 0x8b1147;
    FUN_008423d0();
    ppuStack_12c = (undefined **)local_c4;
    local_4._0_1_ = 6;
    pcStack_130 = (undefined *)0x8b1163;
    FUN_00848860();
    local_4._0_1_ = 3;
    FUN_00842440();
    local_4._0_1_ = 2;
    FUN_0081b5bc();
    puStack_124 = (undefined *)0x8b1192;
    _free(local_cc);
    if (7 < local_d0) {
                    // WARNING: Subroutine does not return
      puStack_124 = &UNK_008b11aa;
      FUN_00a3f6a1();
    }
    local_d0 = 7;
    local_d4 = 0;
    local_e4 = local_e4 & 0xffff0000;
    local_4 = (uint)local_4._1_3_ << 8;
    puStack_124 = (undefined *)0x8b11d8;
    _free(local_94);
    if (7 < local_98) {
                    // WARNING: Subroutine does not return
      puStack_124 = &UNK_008b11ee;
      FUN_00a3f6a1();
    }
  }
LAB_008b11f1:
  puStack_124 = (undefined *)0x0;
  puStack_128 = local_34;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  ppuStack_12c = (undefined **)0x8b1215;
  FID_conflict_assign();
  *(undefined4 *)(param_1 + 0x1c) = 0;
  puStack_124 = (undefined *)0x8b1225;
  _free(local_18);
  pvVar2 = ExceptionList;
  ExceptionList = local_c;
  goto joined_r0x008b1230;
}



void __thiscall
FUN_008b12e0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,int param_3,
            undefined4 param_4,char param_5,int param_6,undefined4 param_7,char param_8,int param_9,
            undefined4 param_10,char param_11)

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf8d8;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 2;
  FUN_00840a00(&param_9,param_2,3);
  FUN_00840a00(&param_6,param_2,2);
  FUN_00840a00(&param_3,param_2,1);
  uVar5 = FUN_008854f0(uVar4);
  uVar6 = FUN_00884e20();
  uVar6 = FUN_00884e20(uVar6);
  uVar6 = FUN_00884e20(uVar6);
  FUN_0084d410(param_1_00,param_1,uVar5,uVar6);
  iVar3 = param_9;
  iVar2 = param_6;
  iVar1 = param_3;
  if ((param_5 != '\0') && (param_3 != 0)) {
    _free(*(void **)(param_3 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  if ((param_8 != '\0') && (param_6 != 0)) {
    _free(*(void **)(param_6 + 0x1c));
    if (7 < *(uint *)(iVar2 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar2 + 4));
    }
    *(undefined4 *)(iVar2 + 0x18) = 7;
    *(undefined4 *)(iVar2 + 0x14) = 0;
    *(undefined2 *)(iVar2 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  if ((param_11 != '\0') && (param_9 != 0)) {
    _free(*(void **)(param_9 + 0x1c));
    if (7 < *(uint *)(iVar3 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar3 + 4));
    }
    *(undefined4 *)(iVar3 + 0x18) = 7;
    *(undefined4 *)(iVar3 + 0x14) = 0;
    *(undefined2 *)(iVar3 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar3);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_008b1470(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,int param_3,
            undefined4 param_4,char param_5,undefined4 param_6)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccd68;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0083e8f0(param_6,param_2,2);
  FUN_00840a00(&param_3,param_2,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20(param_2);
  FUN_0084d410(param_1_00,param_1,uVar3,uVar4);
  iVar1 = param_3;
  if ((param_5 != '\0') && (param_3 != 0)) {
    _free(*(void **)(param_3 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_008b1550(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,int param_3,
            undefined4 param_4,char param_5,int param_6,undefined4 param_7,char param_8)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcc230;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00840a00(&param_6,param_2,2);
  FUN_00840a00(&param_3,param_2,1);
  uVar4 = FUN_008854f0(uVar3);
  uVar5 = FUN_00884e20();
  uVar5 = FUN_00884e20(uVar5);
  FUN_0084d410(param_1_00,param_1,uVar4,uVar5);
  iVar2 = param_6;
  iVar1 = param_3;
  if ((param_5 != '\0') && (param_3 != 0)) {
    _free(*(void **)(param_3 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  if ((param_8 != '\0') && (param_6 != 0)) {
    _free(*(void **)(param_6 + 0x1c));
    if (7 < *(uint *)(iVar2 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar2 + 4));
    }
    *(undefined4 *)(iVar2 + 0x18) = 7;
    *(undefined4 *)(iVar2 + 0x14) = 0;
    *(undefined2 *)(iVar2 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_008b1680(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  undefined4 uVar1;
  
  FUN_00840920(param_5,param_2,3);
  FUN_00840920(param_4,param_2,2);
  FUN_00840920(param_3,param_2,1);
  uVar1 = FUN_008854f0(param_4,param_5,param_2);
  FUN_0084d410(param_1_00,param_1,uVar1);
  return;
}



void __thiscall
FUN_008b16f0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_00840d00(param_3,param_2,1);
  uVar1 = FUN_008854f0(param_2);
  FUN_0084d410(param_1_00,param_1,uVar1);
  return;
}



void __fastcall FUN_008b1730(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf92f;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxFileConfig::vftable;
  local_4 = 3;
  FUN_008afdf0(0);
  FUN_008afd80(uVar1);
  if ((int *)param_1[99] != (int *)0x0) {
    (**(code **)(*(int *)param_1[99] + 0x18))(1);
  }
  _free((void *)param_1[0x5f]);
  if (7 < (uint)param_1[0x5e]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x59]);
  }
  param_1[0x5e] = 7;
  param_1[0x5d] = 0;
  *(undefined2 *)(param_1 + 0x59) = 0;
  local_4._0_1_ = 1;
  FUN_0043250a();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0043250a();
  local_4 = 0xffffffff;
  FUN_00889940();
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_008b1810(int param_1)

{
  char cVar1;
  void *pvVar2;
  undefined4 uVar3;
  bool bVar4;
  uint local_110;
  void *local_10c;
  uint local_cc;
  void *local_c8;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcfa93;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    FUN_00432231();
    local_4._0_1_ = 2;
    FUN_008423d0();
    local_4._0_1_ = 4;
    FUN_0084dc30();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    _free(local_10c);
    if (7 < local_110) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_110 = 7;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    bVar4 = *(int *)(param_1 + 0x58) != 0;
    if (bVar4) {
      FUN_00432231();
      local_4 = 5;
    }
    FUN_0081c0f1();
    local_4 = 6;
    FUN_004325b6();
    local_4._0_1_ = 7;
    FUN_008423d0();
    local_4._0_1_ = 8;
    FUN_0083e8f0();
    FUN_008854f0();
    FUN_0084d410();
    local_4._0_1_ = 7;
    FUN_00842440();
    _free(local_10c);
    if (7 < local_110) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_110 = 7;
    local_4 = CONCAT31(local_4._1_3_,5);
    FUN_0081b5bc();
    local_4 = 0xffffffff;
    if (bVar4) {
      FUN_00432214();
    }
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    bVar4 = *(int *)(param_1 + 0x5c) != 0;
    if (bVar4) {
      FUN_00432231();
      local_4 = 9;
    }
    FUN_0081c0f1();
    local_4 = 10;
    FUN_004325b6();
    local_4._0_1_ = 0xb;
    FUN_008423d0();
    local_4._0_1_ = 0xc;
    FUN_0083e8f0();
    FUN_008854f0();
    FUN_0084d410();
    local_4._0_1_ = 0xb;
    FUN_00842440();
    _free(local_10c);
    if (7 < local_110) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_110 = 7;
    local_4 = CONCAT31(local_4._1_3_,9);
    FUN_0081b5bc();
    local_4 = 0xffffffff;
    if (bVar4) {
      FUN_00432214();
    }
  }
  pvVar2 = operator_new(0x2c);
  local_4 = 0xd;
  if (pvVar2 == (void *)0x0) {
    pvVar2 = (void *)0x0;
  }
  else {
    *(undefined4 *)((int)pvVar2 + 0x18) = 7;
    *(undefined4 *)((int)pvVar2 + 0x14) = 0;
    *(undefined2 *)((int)pvVar2 + 4) = 0;
    FID_conflict_assign();
    *(undefined4 *)((int)pvVar2 + 0x1c) = 0;
    *(undefined4 *)((int)pvVar2 + 0x24) = 0;
    *(undefined4 *)((int)pvVar2 + 0x28) = 0;
  }
  local_4 = 0xffffffff;
  if (*(int *)(param_1 + 0x5c) == 0) {
    *(void **)(param_1 + 0x58) = pvVar2;
  }
  else {
    *(void **)(*(int *)(param_1 + 0x5c) + 0x24) = pvVar2;
    *(undefined4 *)((int)pvVar2 + 0x28) = *(undefined4 *)(param_1 + 0x5c);
  }
  *(void **)(param_1 + 0x5c) = pvVar2;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    bVar4 = *(int *)(param_1 + 0x58) != 0;
    if (bVar4) {
      FUN_00432231();
      local_4 = 0xe;
    }
    FUN_0081c0f1();
    local_4 = 0xf;
    FUN_004325b6();
    local_4._0_1_ = 0x10;
    FUN_008423d0();
    local_4._0_1_ = 0x11;
    FUN_0083e8f0();
    FUN_008854f0();
    FUN_0084d410();
    local_4._0_1_ = 0x10;
    FUN_00842440();
    _free(local_10c);
    if (7 < local_110) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = CONCAT31(local_4._1_3_,0xe);
    FUN_0081b5bc();
    local_4 = 0xffffffff;
    if (bVar4) {
      FUN_00432214();
    }
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 == '\0') {
    uVar3 = *(undefined4 *)(param_1 + 0x5c);
  }
  else {
    bVar4 = *(int *)(param_1 + 0x5c) != 0;
    if (bVar4) {
      FUN_00432231();
      local_4 = 0x12;
    }
    FUN_0081c0f1();
    local_4 = 0x13;
    FUN_004325b6();
    local_4._0_1_ = 0x14;
    FUN_008423d0();
    local_4._0_1_ = 0x15;
    FUN_0083e8f0();
    FUN_008854f0();
    FUN_0084d410();
    local_4._0_1_ = 0x14;
    FUN_00842440();
    _free(local_c8);
    if (7 < local_cc) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = CONCAT31(local_4._1_3_,0x12);
    FUN_0081b5bc();
    if (bVar4) {
      FUN_00432214();
      uVar3 = *(undefined4 *)(param_1 + 0x5c);
    }
    else {
      uVar3 = *(undefined4 *)(param_1 + 0x5c);
    }
  }
  ExceptionList = local_c;
  return uVar3;
}



int __thiscall FUN_008b1fd0(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  int iVar3;
  void *pvVar4;
  bool bVar5;
  uint local_88;
  void *local_84;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcfbfb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar2 = FUN_00846b30(7);
  if (cVar2 != '\0') {
    if (param_2 != 0) {
      FUN_00432231();
      local_4 = 0;
    }
    FUN_0081c0f1();
    local_4 = 1;
    FUN_004325b6();
    FUN_00432231();
    local_4._0_1_ = 3;
    FUN_008423d0();
    local_4._0_1_ = 5;
    FUN_008b1470();
    local_4._0_1_ = 2;
    FUN_00842440();
    _free(local_84);
    if (7 < local_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_88 = 7;
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0081b5bc();
    local_4 = 0xffffffff;
    if (param_2 != 0) {
      FUN_00432214();
    }
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar2 = FUN_00846b30(7);
  if (cVar2 != '\0') {
    bVar5 = *(int *)(param_1_00 + 0x58) != 0;
    if (bVar5) {
      FUN_00432231();
      local_4 = 6;
    }
    FUN_0081c0f1();
    local_4 = 7;
    FUN_004325b6();
    local_4._0_1_ = 8;
    FUN_008423d0();
    local_4._0_1_ = 9;
    FUN_0083e8f0();
    FUN_008854f0();
    FUN_0084d410();
    local_4._0_1_ = 8;
    FUN_00842440();
    _free(local_84);
    if (7 < local_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_88 = 7;
    local_4 = CONCAT31(local_4._1_3_,6);
    FUN_0081b5bc();
    local_4 = 0xffffffff;
    if (bVar5) {
      FUN_00432214();
    }
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar2 = FUN_00846b30(7);
  if (cVar2 != '\0') {
    bVar5 = *(int *)(param_1_00 + 0x5c) != 0;
    if (bVar5) {
      FUN_00432231();
      local_4 = 10;
    }
    FUN_0081c0f1();
    local_4 = 0xb;
    FUN_004325b6();
    local_4._0_1_ = 0xc;
    FUN_008423d0();
    local_4._0_1_ = 0xd;
    FUN_0083e8f0();
    FUN_008854f0();
    FUN_0084d410();
    local_4._0_1_ = 0xc;
    FUN_00842440();
    _free(local_84);
    if (7 < local_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_88 = 7;
    local_4 = CONCAT31(local_4._1_3_,10);
    FUN_0081b5bc();
    local_4 = 0xffffffff;
    if (bVar5) {
      FUN_00432214();
    }
  }
  if (param_2 == *(int *)(param_1_00 + 0x5c)) {
    iVar3 = FUN_008b1810();
  }
  else {
    pvVar4 = operator_new(0x2c);
    local_4 = 0xe;
    if (pvVar4 == (void *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = FUN_008ae0d0();
    }
    local_4 = 0xffffffff;
    if (param_2 == 0) {
      *(undefined4 *)(iVar3 + 0x24) = *(undefined4 *)(param_1_00 + 0x58);
      *(int *)(*(int *)(param_1_00 + 0x58) + 0x28) = iVar3;
      *(int *)(param_1_00 + 0x58) = iVar3;
    }
    else {
      iVar1 = *(int *)(param_2 + 0x24);
      *(int *)(iVar3 + 0x24) = iVar1;
      *(int *)(iVar3 + 0x28) = param_2;
      *(int *)(iVar1 + 0x28) = iVar3;
      *(int *)(param_2 + 0x24) = iVar3;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(7);
    if (cVar2 != '\0') {
      bVar5 = *(int *)(param_1_00 + 0x58) != 0;
      if (bVar5) {
        FUN_00432231();
        local_4 = 0xf;
      }
      FUN_0081c0f1();
      local_4 = 0x10;
      FUN_004325b6();
      local_4._0_1_ = 0x11;
      FUN_008423d0();
      local_4._0_1_ = 0x12;
      FUN_0083e8f0();
      FUN_008854f0();
      FUN_0084d410();
      local_4._0_1_ = 0x11;
      FUN_00842440();
      _free(local_84);
      if (7 < local_88) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_88 = 7;
      local_4 = CONCAT31(local_4._1_3_,0xf);
      FUN_0081b5bc();
      local_4 = 0xffffffff;
      if (bVar5) {
        FUN_00432214();
      }
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(7);
    if (cVar2 != '\0') {
      bVar5 = *(int *)(param_1_00 + 0x5c) != 0;
      if (bVar5) {
        FUN_00432231();
        local_4 = 0x13;
      }
      FUN_0081c0f1();
      local_4 = 0x14;
      FUN_004325b6();
      local_4._0_1_ = 0x15;
      FUN_008423d0();
      local_4._0_1_ = 0x16;
      FUN_0083e8f0();
      FUN_008854f0();
      FUN_0084d410();
      local_4._0_1_ = 0x15;
      FUN_00842440();
      _free(local_84);
      if (7 < local_88) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_4 = CONCAT31(local_4._1_3_,0x13);
      FUN_0081b5bc();
      if (bVar5) {
        FUN_00432214();
      }
    }
  }
  ExceptionList = local_c;
  return iVar3;
}



void __thiscall FUN_008b27d0(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  char cVar3;
  bool bVar4;
  uint local_110;
  void *local_10c;
  uint local_cc;
  void *local_c8;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcfd55;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar3 = FUN_00846b30(7);
  if (cVar3 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    FUN_00432231();
    local_4._0_1_ = 2;
    FUN_008423d0();
    local_4._0_1_ = 4;
    FUN_0084dc30();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    _free(local_10c);
    if (7 < local_110) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_110 = 7;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar3 = FUN_00846b30(7);
  if (cVar3 != '\0') {
    bVar4 = *(int *)(param_1_00 + 0x58) != 0;
    if (bVar4) {
      FUN_00432231();
      local_4 = 5;
    }
    FUN_0081c0f1();
    local_4 = 6;
    FUN_004325b6();
    local_4._0_1_ = 7;
    FUN_008423d0();
    local_4._0_1_ = 8;
    FUN_0083e8f0();
    FUN_008854f0();
    FUN_0084d410();
    local_4._0_1_ = 7;
    FUN_00842440();
    _free(local_10c);
    if (7 < local_110) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_110 = 7;
    local_4 = CONCAT31(local_4._1_3_,5);
    FUN_0081b5bc();
    local_4 = 0xffffffff;
    if (bVar4) {
      FUN_00432214();
    }
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar3 = FUN_00846b30(7);
  if (cVar3 != '\0') {
    bVar4 = *(int *)(param_1_00 + 0x5c) != 0;
    if (bVar4) {
      FUN_00432231();
      local_4 = 9;
    }
    FUN_0081c0f1();
    local_4 = 10;
    FUN_004325b6();
    local_4._0_1_ = 0xb;
    FUN_008423d0();
    local_4._0_1_ = 0xc;
    FUN_0083e8f0();
    FUN_008854f0();
    FUN_0084d410();
    local_4._0_1_ = 0xb;
    FUN_00842440();
    _free(local_10c);
    if (7 < local_110) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_110 = 7;
    local_4 = CONCAT31(local_4._1_3_,9);
    FUN_0081b5bc();
    local_4 = 0xffffffff;
    if (bVar4) {
      FUN_00432214();
    }
  }
  iVar1 = *(int *)(param_1 + 0x28);
  iVar2 = *(int *)(param_1 + 0x24);
  if (iVar1 == 0) {
    *(int *)(param_1_00 + 0x58) = iVar2;
  }
  else {
    *(int *)(iVar1 + 0x24) = iVar2;
  }
  if (iVar2 == 0) {
    *(int *)(param_1_00 + 0x5c) = iVar1;
  }
  else {
    *(int *)(iVar2 + 0x28) = iVar1;
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar3 = FUN_00846b30(7);
  if (cVar3 != '\0') {
    bVar4 = *(int *)(param_1_00 + 0x58) != 0;
    if (bVar4) {
      FUN_00432231();
      local_4 = 0xd;
    }
    FUN_0081c0f1();
    local_4 = 0xe;
    FUN_004325b6();
    local_4._0_1_ = 0xf;
    FUN_008423d0();
    local_4._0_1_ = 0x10;
    FUN_0083e8f0();
    FUN_008854f0();
    FUN_0084d410();
    local_4._0_1_ = 0xf;
    FUN_00842440();
    _free(local_10c);
    if (7 < local_110) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = CONCAT31(local_4._1_3_,0xd);
    FUN_0081b5bc();
    local_4 = 0xffffffff;
    if (bVar4) {
      FUN_00432214();
    }
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar3 = FUN_00846b30(7);
  if (cVar3 != '\0') {
    bVar4 = *(int *)(param_1_00 + 0x5c) != 0;
    if (bVar4) {
      FUN_00432231();
      local_4 = 0x11;
    }
    FUN_0081c0f1();
    local_4 = 0x12;
    FUN_004325b6();
    local_4._0_1_ = 0x13;
    FUN_008423d0();
    local_4._0_1_ = 0x14;
    FUN_0083e8f0();
    FUN_008854f0();
    FUN_0084d410();
    local_4._0_1_ = 0x13;
    FUN_00842440();
    _free(local_c8);
    if (7 < local_cc) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = CONCAT31(local_4._1_3_,0x11);
    FUN_0081b5bc();
    if (bVar4) {
      FUN_00432214();
    }
  }
  _free(*(void **)(param_1 + 0x1c));
  if (*(uint *)(param_1 + 0x18) < 8) {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



void __fastcall FUN_008b2f70(int param_1)

{
  short sVar1;
  undefined *puVar2;
  char cVar3;
  undefined4 uVar4;
  short *psVar5;
  undefined4 uStack_180;
  undefined4 uStack_17c;
  char *pcStack_178;
  undefined4 uStack_174;
  char *pcStack_170;
  char *pcStack_16c;
  undefined4 uStack_168;
  char *pcStack_164;
  undefined4 *local_148;
  undefined local_144 [4];
  uint local_140;
  undefined4 local_130;
  uint local_12c;
  void *local_128;
  undefined4 *local_120;
  undefined local_11c [24];
  uint local_104;
  undefined4 local_f4;
  uint local_f0;
  void *local_ec;
  uint local_e0;
  undefined4 local_d0;
  uint local_cc;
  void *local_c8;
  undefined local_b4 [36];
  uint local_90;
  void *local_8c;
  undefined local_34 [4];
  undefined4 local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcfe38;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_148;
  ExceptionList = &local_c;
  local_148 = &uStack_180;
  FUN_0043c211(&DAT_00d25fa0);
  cVar3 = FUN_00846b30(7);
  if (cVar3 != '\0') {
    pcStack_164 = (char *)0x8b2fe6;
    FUN_0081c0f1();
    local_4 = 0;
    pcStack_164 = (char *)0x8b2ffb;
    FUN_004325b6();
    local_148 = &uStack_168;
    pcStack_16c = (char *)&uStack_168;
    pcStack_170 = (char *)0x8b300d;
    FUN_00432231();
    pcStack_16c = &DAT_00d25fa0;
    pcStack_170 = "wxFileConfigGroup::GetGroupLine";
    uStack_174 = 0x58f;
    pcStack_178 = "..\\..\\src\\common\\fileconf.cpp";
    uStack_17c = 7;
    local_4._0_1_ = 2;
    uStack_180 = 0x8b3036;
    FUN_008423d0();
    pcStack_16c = local_11c;
    pcStack_170 = local_144;
    local_4._0_1_ = 4;
    uStack_174 = 0x8b3057;
    FUN_0084dc30();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    pcStack_164 = (char *)0x8b3075;
    _free(local_128);
    if (7 < local_12c) {
                    // WARNING: Subroutine does not return
      pcStack_164 = &UNK_008b3089;
      FUN_00a3f6a1();
    }
    local_12c = 7;
    local_130 = 0;
    local_140 = local_140 & 0xffff0000;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  if (*(int *)(param_1 + 0x4c) == 0) {
    local_148 = &uStack_180;
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(7);
    if (cVar3 != '\0') {
      pcStack_164 = (char *)0x8b30ea;
      FUN_0081c0f1();
      local_4 = 5;
      pcStack_164 = (char *)0x8b3103;
      FUN_004325b6();
      pcStack_164 = "wxFileConfigGroup::GetGroupLine";
      uStack_168 = 0x595;
      pcStack_16c = "..\\..\\src\\common\\fileconf.cpp";
      pcStack_170 = (undefined *)0x7;
      local_4._0_1_ = 6;
      uStack_174 = 0x8b312c;
      uVar4 = FUN_008423d0();
      local_4._0_1_ = 7;
      FUN_008854f0();
      pcStack_164 = local_144;
      pcStack_16c = (undefined *)0x8b314b;
      uStack_168 = uVar4;
      FUN_0084d410();
      local_4 = CONCAT31(local_4._1_3_,6);
      FUN_00842440();
      pcStack_164 = (char *)0x8b316c;
      _free(local_128);
      if (7 < local_12c) {
                    // WARNING: Subroutine does not return
        pcStack_164 = &UNK_008b3180;
        FUN_00a3f6a1();
      }
      local_12c = 7;
      local_130 = 0;
      local_140 = local_140 & 0xffff0000;
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    local_148 = *(undefined4 **)(param_1 + 4);
    if (local_148 != (undefined4 *)0x0) {
      local_120 = &uStack_180;
      FUN_0043c211(&DAT_00d25fa0);
      cVar3 = FUN_00846b30(7);
      if (cVar3 != '\0') {
        pcStack_164 = (char *)0x8b31e7;
        FUN_0081c0f1();
        local_4 = 8;
        pcStack_164 = (char *)0x8b3200;
        FUN_004325b6();
        local_120 = &uStack_168;
        pcStack_16c = (char *)&uStack_168;
        pcStack_170 = (char *)0x8b3212;
        FUN_00432231();
        pcStack_16c = &DAT_00d25fa0;
        pcStack_170 = "wxFileConfigGroup::GetGroupLine";
        uStack_174 = 0x59d;
        pcStack_178 = "..\\..\\src\\common\\fileconf.cpp";
        uStack_17c = 7;
        local_4._0_1_ = 10;
        uStack_180 = 0x8b323b;
        FUN_008423d0();
        pcStack_16c = local_11c;
        pcStack_170 = local_144;
        local_4._0_1_ = 0xc;
        uStack_174 = 0x8b325c;
        FUN_0084dc30();
        local_4 = CONCAT31(local_4._1_3_,9);
        FUN_00842440();
        FUN_0040159c();
        local_4 = 0xffffffff;
        FUN_0081b5bc();
      }
      local_1c = 7;
      local_20 = 0;
      local_30 = (uint)local_30._2_2_ << 0x10;
      local_18 = (void *)0x0;
      local_4 = 0xd;
      pcStack_164 = (char *)0x8b32c6;
      FUN_008ae890();
      pcStack_164 = (char *)0x8b32d5;
      FUN_00432231();
      pcStack_164 = local_b4;
      uStack_168 = 0x8b32e6;
      FUN_00855d60();
      local_4._0_1_ = 0x10;
      pcStack_164 = (char *)0x8b32f8;
      FUN_00840a70();
      local_4._0_1_ = 0x11;
      uVar4 = FUN_008aef20();
      psVar5 = &DAT_00d395cc;
      local_4._0_1_ = 0x12;
      do {
        sVar1 = *psVar5;
        psVar5 = psVar5 + 1;
      } while (sVar1 != 0);
      pcStack_164 = (char *)&DAT_00d395cc;
      uStack_168 = 0x8b3341;
      FUN_00473ccc();
      pcStack_164 = (char *)0x0;
      pcStack_16c = (undefined *)0x8b3351;
      uStack_168 = uVar4;
      FID_conflict_append();
      psVar5 = &DAT_00d395c8;
      do {
        sVar1 = *psVar5;
        psVar5 = psVar5 + 1;
      } while (sVar1 != 0);
      pcStack_164 = (char *)&DAT_00d395c8;
      uStack_168 = 0x8b3381;
      FUN_00473ccc();
      pcStack_164 = (char *)0x8b338e;
      _free(local_c8);
      if (7 < local_cc) {
                    // WARNING: Subroutine does not return
        pcStack_164 = &UNK_008b33a9;
        FUN_00a3f6a1();
      }
      local_cc = 7;
      local_d0 = 0;
      local_e0 = local_e0 & 0xffff0000;
      pcStack_164 = (char *)0x8b33ce;
      _free(local_ec);
      if (7 < local_f0) {
                    // WARNING: Subroutine does not return
        pcStack_164 = &UNK_008b33e1;
        FUN_00a3f6a1();
      }
      local_f0 = 7;
      local_f4 = 0;
      local_104 = local_104 & 0xffff0000;
      FUN_00432214();
      FUN_00432214();
      local_4 = CONCAT31(local_4._1_3_,0xd);
      pcStack_164 = (char *)0x8b3420;
      _free(local_8c);
      puVar2 = (undefined *)local_148;
      if (7 < local_90) {
                    // WARNING: Subroutine does not return
        pcStack_164 = &UNK_008b3439;
        FUN_00a3f6a1();
      }
      FUN_008ad570();
      pcStack_164 = local_34;
      uStack_168 = 0x8b3457;
      uVar4 = FUN_008b1fd0();
      *(undefined4 *)(param_1 + 0x4c) = uVar4;
      *(int *)(puVar2 + 0x54) = param_1;
      pcStack_164 = (char *)0x8b346a;
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        pcStack_164 = &UNK_008b3483;
        FUN_00a3f6a1();
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int __fastcall FUN_008b34c0(int param_1)

{
  char cVar1;
  int iVar2;
  uint local_7c;
  void *local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcfe96;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    FUN_00432231();
    local_4._0_1_ = 2;
    FUN_008423d0();
    local_4._0_1_ = 4;
    FUN_0084dc30();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    _free(local_78);
    if (7 < local_7c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  if (*(int *)(param_1 + 0x50) != 0) {
    iVar2 = *(int *)(*(int *)(param_1 + 0x50) + 0x54);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar2 == 0)) {
      FUN_00840480();
    }
    ExceptionList = local_c;
    return iVar2;
  }
  iVar2 = FUN_008b2f70();
  ExceptionList = local_c;
  return iVar2;
}



void __fastcall FUN_008b3660(int param_1)

{
  uint uVar1;
  char *pcVar2;
  char *pcVar3;
  uint uVar4;
  char *pcStack_94;
  char *pcStack_90;
  undefined local_68 [20];
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcfee0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pcVar2 = (char *)FUN_008b2f70();
  if (pcVar2 == (char *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pcStack_90 = &DAT_00d39798;
      pcStack_94 = "wxFileConfigGroup::UpdateGroupAndSubgroupsLines";
      FUN_00840480("..\\..\\src\\common\\fileconf.cpp",0x5f4);
    }
  }
  else {
    pcStack_90 = (char *)0x8b36a5;
    FUN_0081c0f1();
    local_4 = 0;
    pcStack_90 = (char *)0x8b36bc;
    FUN_008ae890();
    pcStack_90 = (char *)0x8b36c8;
    FUN_00432231();
    local_4._0_1_ = 2;
    FUN_00855d60(&pcStack_94,1);
    pcVar3 = (char *)FUN_00841a20(local_54,local_68);
    local_4 = CONCAT31(local_4._1_3_,3);
    if (pcVar2 != pcVar3) {
      pcStack_90 = (char *)0x0;
      pcStack_94 = pcVar3;
      FID_conflict_assign();
    }
    pcStack_90 = (char *)0x8b3717;
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      pcStack_90 = &UNK_008b372f;
      FUN_00a3f6a1();
    }
    local_50 = local_50 & 0xffff0000;
    local_3c = 7;
    local_40 = 0;
    FUN_00432214();
    pcStack_90 = (char *)0x8b375d;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      pcStack_90 = &UNK_008b3770;
      FUN_00a3f6a1();
    }
    local_2c = local_2c & 0xffff0000;
    local_18 = 7;
    local_1c = 0;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
    uVar1 = *(uint *)(param_1 + 0x1c);
    uVar4 = 0;
    if (uVar1 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x1c) <= uVar4)) {
          pcStack_90 = "uiIndex < m_nCount";
          pcStack_94 = "wxBaseArrayPtrVoid::Item";
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340);
        }
        FUN_008b3660();
        uVar4 = uVar4 + 1;
      } while (uVar4 < uVar1);
      ExceptionList = local_c;
      return;
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008b3830(int param_1_00,int param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\fileconf.cpp",0x604,"wxFileConfigGroup::Rename","m_pParent"
                   ,L"the root group can\'t be renamed");
      return;
    }
  }
  else if ((*(int *)(param_1 + 0x14) != *(int *)(param_1_00 + 0x3c)) ||
          (iVar1 = FUN_00850760(param_1_00 + 0x28), iVar1 != 0)) {
    FUN_008ad940(param_1_00);
    if (param_1_00 + 0x28 != param_1) {
      FID_conflict_assign(param_1,0,0xffffffff);
    }
    FUN_0086a850(param_1_00,*(undefined4 *)(*(int *)(param_1_00 + 4) + 0x24));
    FUN_008b3660();
  }
  return;
}



uint __thiscall FUN_008b38d0(int param_1_00,int param_1)

{
  wchar_t wVar1;
  int iVar2;
  char cVar3;
  int *piVar4;
  wchar_t *pwVar5;
  uint uVar6;
  int iVar7;
  undefined4 *puVar8;
  uint uVar9;
  undefined4 *puVar10;
  undefined4 uStack_168;
  char *pcStack_164;
  undefined4 *puStack_15c;
  undefined4 *puStack_150;
  wchar_t *pwStack_14c;
  undefined4 local_128;
  uint local_124;
  undefined4 local_114;
  uint local_110;
  void *local_10c;
  uint local_104;
  int local_100;
  undefined4 **local_fc;
  undefined local_f8 [20];
  undefined4 local_e4 [2];
  char *local_dc;
  undefined4 local_d8;
  char *local_d4;
  undefined *local_d0;
  __time64_t local_cc;
  DWORD local_c4;
  int local_c0;
  uint local_b8;
  undefined4 local_a8;
  uint local_a4;
  void *local_a0;
  undefined4 local_94;
  uint local_90;
  undefined4 local_80;
  uint local_7c;
  void *local_78;
  int local_70;
  char local_68;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd00cf;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_104 = 0;
  local_100 = param_1_00;
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pwStack_14c = L"pGroup";
      puStack_150 = (undefined4 *)0xd39aa4;
      puStack_15c = (undefined4 *)0x8b4a37;
      ExceptionList = (void *)FUN_00840480();
    }
    uVar6 = (uint)ExceptionList & 0xffffff00;
    ExceptionList = local_c;
    return uVar6;
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar3 = FUN_00846b30(7);
  if (cVar3 != '\0') {
    pwStack_14c = L"쑨펔贀⑌褠⒜ń";
    FUN_0081c0f1();
    local_4 = 0;
    pwStack_14c = 
    L"\xec83謌规⑤倠侍\xe828\xe8bbﾷ\xec83謌觌⑤儰亍\xe828\xe8a9ﾷꁨ퉟栀骤Ó酨\x06栀辠Ó赕⒌\x8c"
    ;
    FUN_004325b6();
    FUN_00432231();
    pcStack_164 = (char *)0x8b3988;
    FUN_00432231();
    pcStack_164 = "wxFileConfigGroup::DeleteSubgroup";
    uStack_168 = 0x691;
    local_4._0_1_ = 3;
    FUN_008423d0(7,"..\\..\\src\\common\\fileconf.cpp");
    pcStack_164 = (char *)&local_128;
    local_4._0_1_ = 5;
    uStack_168 = 0x8b39d2;
    FUN_008b1550();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    pwStack_14c = 
    L"쒃茄⑼࠴൲䒋․\xe850베\x18쒃㌄曉䲉․䲍䰤沉㐤岉〤蓇䀤\x01＀\xffff\xe8ff箕\xfff6\xec83謤觌⑤核徠Òퟨ뢇嗿\xf0e8擄菿⣄쌺萏ä"
    ;
    _free(local_10c);
    if (7 < local_110) {
                    // WARNING: Subroutine does not return
      pwStack_14c = (wchar_t *)&UNK_008b3a01;
      FUN_00a3f6a1();
    }
    local_124 = local_124 & 0xffff0000;
    local_110 = 7;
    local_114 = 0;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar3 = FUN_00846b30(7);
  if (cVar3 != '\0') {
    if (*(int *)(param_1_00 + 0x4c) == 0) {
      puVar8 = (undefined4 *)0x0;
    }
    else {
      puVar8 = *(undefined4 **)(*(int *)(param_1_00 + 0x4c) + 0x28);
    }
    pwStack_14c = L"쑨펔贀⑌유⒄ń";
    FUN_0081c0f1();
    local_4 = 6;
    pwStack_14c = L"ꁨ퉟栀骤Ó陨\x06栀辠Ó赕⑌왴⒄Ŕ";
    FUN_004325b6();
    pwStack_14c = L"wxFileConfigGroup::DeleteSubgroup";
    puStack_150 = (undefined4 *)0x696;
    local_4._0_1_ = 7;
    puStack_15c = (undefined4 *)0x8b3ab7;
    FUN_008423d0();
    pwStack_14c = *(wchar_t **)(param_1_00 + 0x4c);
    local_4._0_1_ = 8;
    puStack_15c = (undefined4 *)0x8b3ada;
    puStack_150 = puVar8;
    FUN_008b1680();
    local_4 = CONCAT31(local_4._1_3_,7);
    FUN_00842440();
    pwStack_14c = 
    L"쒃茄⑼࠴൲䲋․\xe851뮘\x18쒃㌄跒⑌襌⑬褴⑜昰咉․蓇䀤\x01＀\xffff\xe8ff窍\xfff6\xec83謤觌⑤核徠Ò쿨뢆嗿\xe8e8勞菿⣄쌺萏š"
    ;
    _free(local_10c);
    if (7 < local_110) {
                    // WARNING: Subroutine does not return
      pwStack_14c = (wchar_t *)&UNK_008b3b09;
      FUN_00a3f6a1();
    }
    local_110 = 7;
    local_114 = 0;
    local_124 = local_124 & 0xffff0000;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar3 = FUN_00846b30(7);
  if (cVar3 != '\0') {
    puVar8 = (undefined4 *)PTR_DAT_03236318;
    if (*(int *)(local_100 + 0x4c) != 0) {
      pwStack_14c = L"ࢋ禃࠘蓇䀤\x01ऀ";
      piVar4 = (int *)FUN_00432231();
      iVar7 = *piVar4;
      local_4 = 9;
      local_104 = 1;
      if (*(uint *)(iVar7 + 0x18) < 8) {
        puVar8 = (undefined4 *)(iVar7 + 4 + piVar4[1] * 2);
      }
      else {
        puVar8 = (undefined4 *)(*(int *)(iVar7 + 4) + piVar4[1] * 2);
      }
    }
    pwStack_14c = L"쑨펔贀⒌´";
    FUN_0081c0f1();
    local_4 = 10;
    pwStack_14c = L"ꁨ퉟栀骤Ó魨\x06栀辠Ó赕⑌왴⒄Ŕ";
    FUN_004325b6();
    pwStack_14c = L"wxFileConfigGroup::DeleteSubgroup";
    puStack_150 = (undefined4 *)0x69b;
    local_4._0_1_ = 0xb;
    puStack_15c = (undefined4 *)0x8b3bf2;
    FUN_008423d0();
    pwStack_14c = (wchar_t *)local_f8;
    local_4._0_1_ = 0xc;
    puStack_150 = puVar8;
    FUN_0083e8f0();
    pwStack_14c = L"赐⒄¸";
    pwStack_14c = (wchar_t *)FUN_008854f0();
    puStack_150 = &local_94;
    FUN_0084d410();
    local_4._0_1_ = 0xb;
    FUN_00842440();
    pwStack_14c = L"쒃茄ⒼÈ";
    _free(local_78);
    if (7 < local_7c) {
                    // WARNING: Subroutine does not return
      pwStack_14c = (wchar_t *)&UNK_008b3c65;
      FUN_00a3f6a1();
    }
    local_7c = 7;
    local_80 = 0;
    local_90 = local_90 & 0xffff0000;
    local_4 = CONCAT31(local_4._1_3_,9);
    FUN_0081b5bc();
    local_4 = 0xffffffff;
    if ((local_104 & 1) != 0) {
      local_104 = local_104 & 0xfffffffe;
      FUN_00432214();
    }
  }
  puVar8 = *(undefined4 **)(param_1 + 0xc);
  FUN_0043c211(&DAT_00d25fa0);
  cVar3 = FUN_00846b30(7);
  if (cVar3 != '\0') {
    pwStack_14c = L"쑨펔贀⑌유⒄ń";
    FUN_0081c0f1();
    local_4 = 0xd;
    pwStack_14c = L"ꁨ퉟栀骤Óꍨ\x06栀辠Ó赕⑌왴⒄Ŕ";
    FUN_004325b6();
    pwStack_14c = L"wxFileConfigGroup::DeleteSubgroup";
    puStack_150 = (undefined4 *)0x6a3;
    local_4._0_1_ = 0xe;
    puStack_15c = (undefined4 *)0x8b3d33;
    FUN_008423d0();
    pwStack_14c = (wchar_t *)local_f8;
    local_4._0_1_ = 0xf;
    puStack_150 = puVar8;
    FUN_00840d00();
    pwStack_14c = L"赐⑌儤\xe856隨\xfff9쒃贐⑌왠⒄ŀ";
    pwStack_14c = (wchar_t *)FUN_008854f0();
    puStack_150 = &local_128;
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,0xe);
    FUN_00842440();
    pwStack_14c = 
    L"쒃茄⑼࠴൲䒋․\xe850뤇\x18쒃㌄曉䲉․䲍䰤沉㐤岉〤蓇䀤\x01＀\xffff\xe8ff矼\xfff6Ｓ尹ᠤ蘏Ƴ"
    ;
    _free(local_10c);
    if (7 < local_110) {
                    // WARNING: Subroutine does not return
      pwStack_14c = (wchar_t *)&UNK_008b3d9a;
      FUN_00a3f6a1();
    }
    local_124 = local_124 & 0xffff0000;
    local_110 = 7;
    local_114 = 0;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  puVar10 = (undefined4 *)0x0;
  if (puVar8 != (undefined4 *)0x0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(undefined4 **)(param_1 + 0xc) <= puVar10)) {
        pwStack_14c = L"uiIndex < m_nCount";
        puStack_150 = (undefined4 *)0xfb202c;
        puStack_15c = (undefined4 *)0x8b3dfe;
        FUN_008402e0();
      }
      if (*(int *)(*(int *)(*(int *)(param_1 + 0x10) + (int)puVar10 * 4) + 0x54) != 0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar3 = FUN_00846b30(7);
        if (cVar3 != '\0') {
          pwStack_14c = L"쑨펔贀⑌유⒄ń";
          FUN_0081c0f1();
          local_4 = 0x10;
          pwStack_14c = L"\xec83謌规⑤倠캋볨럣叿蓆値\x01ሀ沉瀤䓇砤辠Ó蓇耤";
          FUN_004325b6();
          FUN_00432231();
          local_4._0_1_ = 0x12;
          local_e4[0] = 7;
          local_dc = "..\\..\\src\\common\\fileconf.cpp";
          local_d4 = "wxFileConfigGroup::DeleteSubgroup";
          local_d8 = 0x6ac;
          local_d0 = &DAT_00d25fa0;
          local_cc = __time64((__time64_t *)0x0);
          local_c4 = GetCurrentThreadId();
          local_c0 = 0;
          local_a4 = 7;
          local_a8 = 0;
          local_b8 = local_b8 & 0xffff0000;
          local_a0 = (void *)0x0;
          local_4._0_1_ = 0x14;
          puStack_15c = (undefined4 *)0x8b3f13;
          FUN_0084dc30();
          local_4 = CONCAT31(local_4._1_3_,0x11);
          FUN_00842440();
          pwStack_14c = 
          L"쒃茄⑼࠴൲咋․\xe852띟\x18쒃㌄跀⑌襌⑬褴⑜昰䒉․蓇䀤\x01＀\xffff\xe8ff癔\xfff6䲋䐤ঋ\xe856\xe85c\xffff㭇⑼༘冂\xfffe诿Ⓖň"
          ;
          _free(local_10c);
          if (7 < local_110) {
                    // WARNING: Subroutine does not return
            pwStack_14c = (wchar_t *)&UNK_008b3f42;
            FUN_00a3f6a1();
          }
          local_110 = 7;
          local_114 = 0;
          local_124 = local_124 & 0xffff0000;
          local_4 = 0xffffffff;
          FUN_0081b5bc();
        }
        pwStack_14c = L"㭇⑼༘冂\xfffe诿Ⓖň";
        FUN_008b27d0();
      }
      puVar10 = (undefined4 *)((int)puVar10 + 1);
    } while (puVar10 < puVar8);
  }
  puVar8 = *(undefined4 **)(param_1 + 0x1c);
  FUN_0043c211(&DAT_00d25fa0);
  cVar3 = FUN_00846b30(7);
  if (cVar3 != '\0') {
    pwStack_14c = L"툳쒸펔昀咉․蓇䀤\x01ᔀ";
    FUN_0081c0f1();
    pwVar5 = L"fileconf";
    local_124 = local_124 & 0xffff0000;
    local_4 = 0x15;
    local_110 = 7;
    local_114 = 0;
    do {
      wVar1 = *pwVar5;
      pwVar5 = pwVar5 + 1;
    } while (wVar1 != L'\0');
    pwStack_14c = L"fileconf";
    puStack_150 = (undefined4 *)0x8b3ffe;
    FID_conflict_assign();
    local_10c = (void *)0x0;
    local_4._0_1_ = 0x16;
    local_e4[0] = 7;
    local_dc = "..\\..\\src\\common\\fileconf.cpp";
    local_d4 = "wxFileConfigGroup::DeleteSubgroup";
    local_d8 = 0x6b6;
    local_d0 = &DAT_00d25fa0;
    pwStack_14c = L"쒃褄⑄襸⑔\xe87c絬\xfffb蒉耤";
    local_cc = __time64((__time64_t *)0x0);
    local_c4 = GetCurrentThreadId();
    local_c0 = 0;
    local_a4 = 7;
    local_a8 = 0;
    local_b8 = local_b8 & 0xffff0000;
    local_a0 = (void *)0x0;
    pwStack_14c = (wchar_t *)local_f8;
    local_4._0_1_ = 0x17;
    puStack_150 = puVar8;
    FUN_00840d00();
    pwStack_14c = L"赐⑄値䲍氤\xe851鍨\xfff9钋됤";
    pwStack_14c = (wchar_t *)FUN_008854f0();
    puStack_150 = &local_128;
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,0x16);
    puStack_15c = (undefined4 *)0x8b40bd;
    _free(local_a0);
    if (7 < local_a4) {
                    // WARNING: Subroutine does not return
      pwStack_14c = (wchar_t *)&UNK_008b40d7;
      FUN_00a3f6a1();
    }
    local_b8 = local_b8 & 0xffff0000;
    local_a4 = 7;
    local_a8 = 0;
    if (local_c0 != 0) {
      FUN_00841af0();
                    // WARNING: Subroutine does not return
      pwStack_14c = (wchar_t *)&UNK_008b410a;
      FUN_00a3f6a1();
    }
    pwStack_14c = 
    L"쒃茄⑼࠴൲䒋․\xe850땶\x18쒃㌄曉䲉․䲍䰤沉㐤岉〤蓇䀤\x01＀\xffff\xe8ff瑫\xfff6벋䠤\x01㬀盳赀⑤㤀䰝⍜球㤢ᱟᵷ桓‘ûⱨﬠ栀̀"
    ;
    _free(local_10c);
    if (7 < local_110) {
                    // WARNING: Subroutine does not return
      pwStack_14c = (wchar_t *)&UNK_008b412b;
      FUN_00a3f6a1();
    }
    local_124 = local_124 & 0xffff0000;
    local_110 = 7;
    local_114 = 0;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  for (; puVar8 != (undefined4 *)0x0; puVar8 = (undefined4 *)((int)puVar8 + -1)) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x1c) == 0)) {
      pwStack_14c = L"uiIndex < m_nCount";
      puStack_150 = (undefined4 *)0xfb202c;
      puStack_15c = (undefined4 *)0x8b4187;
      FUN_008402e0();
    }
    pwStack_14c = 
    L"\xee83甁评䱷\xec83褤⑴謸㯌࿳\xe784\x06褀⑤格徠Ò叨뢀嗿注朗菿⣄쌺萏ǉ";
    FUN_008b38d0();
  }
  iVar7 = *(int *)(param_1 + 0x4c);
  local_fc = (undefined4 **)&uStack_168;
  if (iVar7 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(7);
    if (cVar3 != '\0') {
      pwStack_14c = L"툳쒸펔昀钉됤";
      FUN_0081c0f1();
      pwVar5 = L"fileconf";
      local_90 = local_90 & 0xffff0000;
      local_4 = 0x27;
      local_7c = 7;
      local_80 = 0;
      do {
        wVar1 = *pwVar5;
        pwVar5 = pwVar5 + 1;
      } while (wVar1 != L'\0');
      pwStack_14c = L"fileconf";
      puStack_150 = (undefined4 *)0x8b4913;
      FID_conflict_assign();
      local_78 = (void *)0x0;
      local_fc = &puStack_150;
      FUN_00432231();
      puStack_15c = (undefined4 *)0x6f2;
      pcStack_164 = (char *)0x7;
      local_4._0_1_ = 0x29;
      uStack_168 = 0x8b4955;
      FUN_008423d0();
      local_4._0_1_ = 0x2b;
      puStack_15c = (undefined4 *)0x8b497c;
      FUN_0084dc30();
      local_4 = CONCAT31(local_4._1_3_,0x28);
      FUN_00842440();
      pwStack_14c = L"쒃茄ⒼÈ";
      _free(local_78);
      if (7 < local_7c) {
                    // WARNING: Subroutine does not return
        pwStack_14c = (wchar_t *)&UNK_008b49b7;
        FUN_00a3f6a1();
      }
      local_7c = 7;
      local_80 = 0;
      local_90 = local_90 & 0xffff0000;
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  else {
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(7);
    if (cVar3 != '\0') {
      pwStack_14c = L"줳쒸펔윀⒄ŀ";
      FUN_0081c0f1();
      pwVar5 = L"fileconf";
      local_4 = 0x18;
      local_110 = 7;
      local_114 = 0;
      local_124 = local_124 & 0xffff0000;
      do {
        wVar1 = *pwVar5;
        pwVar5 = pwVar5 + 1;
      } while (wVar1 != L'\0');
      pwStack_14c = L"fileconf";
      puStack_150 = (undefined4 *)0x8b421e;
      FID_conflict_assign();
      local_10c = (void *)0x0;
      FUN_00432231();
      local_fc = &puStack_15c;
      pcStack_164 = (char *)0x8b4245;
      FUN_00432231();
      local_4._0_1_ = 0x1b;
      local_e4[0] = 7;
      local_dc = "..\\..\\src\\common\\fileconf.cpp";
      local_d4 = "wxFileConfigGroup::DeleteSubgroup";
      local_d8 = 0x6c2;
      local_d0 = &DAT_00d25fa0;
      pcStack_164 = (char *)0x8b4283;
      local_cc = __time64((__time64_t *)0x0);
      local_c4 = GetCurrentThreadId();
      local_c0 = 0;
      local_a4 = 7;
      local_a8 = 0;
      local_b8 = local_b8 & 0xffff0000;
      local_a0 = (void *)0x0;
      pcStack_164 = (char *)&local_128;
      local_4._0_1_ = 0x1d;
      uStack_168 = 0x8b42ec;
      FUN_008b1550();
      local_4 = CONCAT31(local_4._1_3_,0x19);
      pwStack_14c = L"ࢿ";
      _free(local_a0);
      if (7 < local_a4) {
                    // WARNING: Subroutine does not return
        pwStack_14c = (wchar_t *)&UNK_008b431f;
        FUN_00a3f6a1();
      }
      local_a4 = 7;
      local_a8 = 0;
      local_b8 = local_b8 & 0xffff0000;
      if (local_c0 != 0) {
        FUN_00841af0();
                    // WARNING: Subroutine does not return
        pwStack_14c = (wchar_t *)&UNK_008b4352;
        FUN_00a3f6a1();
      }
      pwStack_14c = L"쒃㤄⑼爴謍⑔删⿨ᢳ茀ӄ쀳䲍䰤沉㐤岉〤襦⑄유⒄ŀ";
      _free(local_10c);
      if (7 < local_110) {
                    // WARNING: Subroutine does not return
        pwStack_14c = (wchar_t *)&UNK_008b4372;
        FUN_00a3f6a1();
      }
      local_110 = 7;
      local_114 = 0;
      local_124 = local_124 & 0xffff0000;
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    local_fc = (undefined4 **)&uStack_168;
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(7);
    iVar2 = local_100;
    if (cVar3 != '\0') {
      if (*(int *)(local_100 + 0x4c) != 0) {
        pwStack_14c = L"ࢋ䲃䀤茂᡹윈⒄ŀ";
        FUN_00432231();
        local_104 = local_104 | 2;
        local_4 = 0x1e;
      }
      pwStack_14c = L"줳쒸펔윀⒄ŀ";
      FUN_0081c0f1();
      pwVar5 = L"fileconf";
      local_4 = 0x1f;
      local_110 = 7;
      local_114 = 0;
      local_124 = local_124 & 0xffff0000;
      do {
        wVar1 = *pwVar5;
        pwVar5 = pwVar5 + 1;
      } while (wVar1 != L'\0');
      pwStack_14c = L"fileconf";
      puStack_150 = (undefined4 *)0x8b445e;
      FID_conflict_assign();
      local_10c = (void *)0x0;
      local_fc = (undefined4 **)&stack0xfffffeac;
      puStack_15c = (undefined4 *)0x8b4475;
      FUN_00432231();
      local_4._0_1_ = 0x21;
      local_e4[0] = 7;
      local_dc = "..\\..\\src\\common\\fileconf.cpp";
      local_d4 = "wxFileConfigGroup::DeleteSubgroup";
      local_d8 = 0x6c6;
      local_d0 = &DAT_00d25fa0;
      puStack_15c = (undefined4 *)0x8b44b0;
      local_cc = __time64((__time64_t *)0x0);
      local_c4 = GetCurrentThreadId();
      local_c0 = 0;
      local_a4 = 7;
      local_a8 = 0;
      local_b8 = local_b8 & 0xffff0000;
      local_a0 = (void *)0x0;
      puStack_15c = &local_128;
      local_4._0_1_ = 0x23;
      FUN_008b1470();
      local_4._0_1_ = 0x20;
      pwStack_14c = L"쒃茄Ⓖ\xa0";
      _free(local_a0);
      if (7 < local_a4) {
                    // WARNING: Subroutine does not return
        pwStack_14c = (wchar_t *)&UNK_008b4545;
        FUN_00a3f6a1();
      }
      local_a4 = 7;
      local_a8 = 0;
      local_b8 = local_b8 & 0xffff0000;
      if (local_c0 != 0) {
        FUN_00841af0();
                    // WARNING: Subroutine does not return
        pwStack_14c = (wchar_t *)&UNK_008b4578;
        FUN_00a3f6a1();
      }
      pwStack_14c = 
      L"쒃茄⑼࠴൲䲋․\xe851너\x18쒃㌄跒⑌襌⑬褴⑜昰咉․蓆䀤\x01Ḁè\xf670\xf6ff⑄ɀ蓇䀤\x01＀\xffff瓿㡇⒜Ü"
      ;
      _free(local_10c);
      if (7 < local_110) {
                    // WARNING: Subroutine does not return
        pwStack_14c = (wchar_t *)&UNK_008b4599;
        FUN_00a3f6a1();
      }
      local_110 = 7;
      local_114 = 0;
      local_124 = local_124 & 0xffff0000;
      local_4 = CONCAT31(local_4._1_3_,0x1e);
      FUN_0081b5bc();
      local_4 = 0xffffffff;
      if ((((local_104 & 2) != 0) && (local_68 != '\0')) && (local_70 != 0)) {
        pwStack_14c = 
        L"쒃茄᡾爈謌ц\xe850낤\x18쒃㌄觉ᡮ庉嘔襦ю迨ᢰ茀ӄ钋䠤\x01㬀呗蔏ɡ";
        _free(*(void **)(local_70 + 0x1c));
        if (7 < *(uint *)(local_70 + 0x18)) {
                    // WARNING: Subroutine does not return
          pwStack_14c = (wchar_t *)&UNK_008b45fd;
          FUN_00a3f6a1();
        }
        *(undefined4 *)(local_70 + 0x18) = 7;
        *(undefined4 *)(local_70 + 0x14) = 0;
        *(undefined2 *)(local_70 + 4) = 0;
                    // WARNING: Subroutine does not return
        pwStack_14c = (wchar_t *)&UNK_008b4612;
        FUN_00a3f6a1();
      }
    }
    if (param_1 == *(int *)(iVar2 + 0x54)) {
      local_fc = (undefined4 **)&uStack_168;
      FUN_0043c211(&DAT_00d25fa0);
      cVar3 = FUN_00846b30(7);
      if (cVar3 != '\0') {
        pwStack_14c = L"쀳襦⑄렠铄Ó蓇䀤\x01␀";
        FUN_0081c0f1();
        local_124 = local_124 & 0xffff0000;
        pwVar5 = L"fileconf";
        local_4 = 0x24;
        local_110 = 7;
        local_114 = 0;
        do {
          wVar1 = *pwVar5;
          pwVar5 = pwVar5 + 1;
        } while (wVar1 != L'\0');
        pwStack_14c = L"fileconf";
        puStack_150 = (undefined4 *)0x8b469e;
        FID_conflict_assign();
        local_10c = (void *)0x0;
        local_4._0_1_ = 0x25;
        local_e4[0] = 7;
        local_dc = "..\\..\\src\\common\\fileconf.cpp";
        local_d4 = "wxFileConfigGroup::DeleteSubgroup";
        local_d8 = 0x6d0;
        local_d0 = &DAT_00d25fa0;
        pwStack_14c = L"쒃褄⑄襸⑔\xe87c盌\xfffb줳蒉耤";
        local_cc = __time64((__time64_t *)0x0);
        local_c4 = GetCurrentThreadId();
        local_c0 = 0;
        local_a4 = 7;
        local_a8 = 0;
        local_b8 = local_b8 & 0xffff0000;
        local_a0 = (void *)0x0;
        local_4._0_1_ = 0x26;
        FUN_008854f0();
        pwStack_14c = (wchar_t *)&local_128;
        puStack_150 = local_e4;
        FUN_0084d410();
        local_4 = CONCAT31(local_4._1_3_,0x25);
        _free(local_a0);
        if (7 < local_a4) {
                    // WARNING: Subroutine does not return
          pwStack_14c = (wchar_t *)&UNK_008b4761;
          FUN_00a3f6a1();
        }
        local_a4 = 7;
        local_a8 = 0;
        local_b8 = local_b8 & 0xffff0000;
        if (local_c0 != 0) {
          FUN_00841af0();
                    // WARNING: Subroutine does not return
          pwStack_14c = (wchar_t *)&UNK_008b4794;
          FUN_00a3f6a1();
        }
        pwStack_14c = 
        L"쒃茄⑼࠴൲咋․\xe852껬\x18쒃㌄跀⑌襌⑬褴⑜昰䒉․蓇䀤\x01＀\xffff\xe8ff淡\xfff6咋ᐤ例褜呟檋褨⑌㬘࿫銄"
        ;
        _free(local_10c);
        if (7 < local_110) {
                    // WARNING: Subroutine does not return
          pwStack_14c = (wchar_t *)&UNK_008b47b5;
          FUN_00a3f6a1();
        }
        local_110 = 7;
        local_114 = 0;
        local_124 = local_124 & 0xffff0000;
        local_4 = 0xffffffff;
        FUN_0081b5bc();
      }
      uVar6 = *(uint *)(iVar2 + 0x1c);
      *(undefined4 *)(iVar2 + 0x54) = 0;
      iVar7 = *(int *)(iVar7 + 0x28);
      if (iVar7 != 0) {
        while (*(int *)(iVar2 + 0x54) == 0) {
          uVar9 = 0;
          if (uVar6 != 0) {
            do {
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 0x1c) <= uVar9)) {
                pwStack_14c = L"uiIndex < m_nCount";
                puStack_150 = (undefined4 *)0xfb202c;
                puStack_15c = (undefined4 *)0x8b482c;
                FUN_008402e0();
              }
              if (*(int *)(*(int *)(*(int *)(iVar2 + 0x20) + uVar9 * 4) + 0x4c) == iVar7) {
                if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 0x1c) <= uVar9)) {
                  pwStack_14c = L"uiIndex < m_nCount";
                  puStack_150 = (undefined4 *)0xfb202c;
                  puStack_15c = (undefined4 *)0x8b486a;
                  FUN_008402e0();
                }
                *(undefined4 *)(iVar2 + 0x54) = *(undefined4 *)(*(int *)(iVar2 + 0x20) + uVar9 * 4);
                break;
              }
              uVar9 = uVar9 + 1;
            } while (uVar9 < uVar6);
          }
          if ((iVar7 == *(int *)(iVar2 + 0x4c)) || (iVar7 = *(int *)(iVar7 + 0x28), iVar7 == 0))
          break;
        }
      }
    }
    pwStack_14c = L"囩\x01褀⑤桬徠Ò注롹嗿藨濫菿⣄쌺萏ĳ";
    FUN_008b27d0();
  }
  pwStack_14c = L"캋䳨ﾝ囿韨᢬茀ӄư⯫ᴹ屌̣ⅴ聨페栀顸Óꑨ펚栀ڏ";
  FUN_008ad940();
  FUN_008ae750();
                    // WARNING: Subroutine does not return
  pwStack_14c = (wchar_t *)&UNK_008b4a0a;
  FUN_00a3f6a1();
}



undefined4 __thiscall FUN_008b4a60(int param_1_00,undefined4 param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  undefined4 *puVar5;
  uint uVar6;
  undefined4 local_c;
  
  iVar4 = FUN_008ad7c0(param_1);
  if (iVar4 == 0) {
    return 0;
  }
  iVar1 = *(int *)(iVar4 + 0x54);
  if (iVar1 != 0) {
    if (iVar4 == *(int *)(param_1_00 + 0x50)) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x4c) == 0)) {
        FUN_008402e0("..\\..\\src\\common\\fileconf.cpp",0x70c,"wxFileConfigGroup::DeleteEntry",
                     "m_pLine != 0",0);
      }
      iVar2 = *(int *)(*(int *)(*(int *)(param_1_00 + 0x50) + 0x54) + 0x28);
      uVar3 = *(uint *)(param_1_00 + 0xc);
      uVar6 = 0;
      local_c = 0;
      if (uVar3 != 0) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0xc) <= uVar6)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          if (*(int *)(*(int *)(*(int *)(param_1_00 + 0x10) + uVar6 * 4) + 0x54) == iVar2) {
            puVar5 = (undefined4 *)FUN_00a142b0(uVar6);
            local_c = *puVar5;
            break;
          }
          uVar6 = uVar6 + 1;
        } while (uVar6 < uVar3);
      }
      *(undefined4 *)(param_1_00 + 0x50) = local_c;
    }
    FUN_008b27d0(iVar1);
  }
  FUN_008ad8e0(iVar4);
  FUN_008add00();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar4);
}



void __thiscall FUN_008b4b80(int **param_1_00,int **param_1,char param_2)

{
  char cVar1;
  int iVar2;
  int **ppiVar3;
  int *piVar4;
  undefined4 uStack_164;
  undefined4 uStack_160;
  char *pcStack_15c;
  undefined4 uStack_158;
  char *pcStack_154;
  int ***pppiStack_150;
  int **ppiStack_14c;
  int **ppiStack_148;
  int ***local_12c;
  undefined local_128 [56];
  undefined local_f0 [60];
  uint local_b4;
  void *local_b0;
  int *local_58;
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  int *local_34;
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd014d;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_12c;
  ExceptionList = &local_c;
  if ((param_2 == '\0') || ((*(byte *)(param_1_00 + 0x13) & 1) == 0)) {
    if (((*(byte *)(param_1_00 + 0x13) & 2) != 0) && (param_1[5] == param_1_00[0xf])) {
      ppiStack_148 = (int **)0x8b4d0e;
      iVar2 = FUN_00850760();
      if (iVar2 == 0) goto LAB_008b4f1c;
    }
    *(byte *)(param_1_00 + 0x13) = *(byte *)(param_1_00 + 0x13) | 2;
    if (param_1_00 + 10 != param_1) {
      ppiStack_148 = (int **)0x0;
      ppiStack_14c = param_1;
      pppiStack_150 = (int ***)0x8b4d2f;
      FID_conflict_assign();
    }
    if (param_2 != '\0') {
      local_1c = 7;
      local_20 = 0;
      local_30 = local_30 & 0xffff0000;
      local_18 = (void *)0x0;
      local_4 = 6;
      if ((*(uint *)(**param_1_00 + 0x54) & 8) == 0) {
        ppiVar3 = (int **)FUN_008aebb0();
        local_4 = CONCAT31(local_4._1_3_,7);
        if (&local_34 != ppiVar3) {
          ppiStack_148 = (int **)0x0;
          pppiStack_150 = (int ***)0x8b4db4;
          ppiStack_14c = ppiVar3;
          FID_conflict_assign();
        }
        FUN_0040159c();
      }
      else if (&local_34 != param_1) {
        ppiStack_148 = (int **)0x0;
        ppiStack_14c = param_1;
        pppiStack_150 = (int ***)0x8b4d8a;
        FID_conflict_assign();
      }
      local_40 = 7;
      local_44 = 0;
      local_54 = local_54 & 0xffff0000;
      local_3c = (void *)0x0;
      local_4._0_1_ = 8;
      ppiStack_14c = (int **)FUN_008aef20();
      ppiStack_148 = (int **)0x0;
      local_4._0_1_ = 9;
      pppiStack_150 = (int ***)0x8b4e0e;
      FID_conflict_append();
      ppiStack_148 = (int **)0x1;
      ppiStack_14c = (int **)0x8b4e1e;
      FID_conflict_append();
      ppiStack_148 = (int **)0x0;
      ppiStack_14c = &local_34;
      pppiStack_150 = (int ***)0x8b4e35;
      FID_conflict_append();
      local_4 = CONCAT31(local_4._1_3_,8);
      ppiStack_148 = (int **)0x8b4e4a;
      _free(local_b0);
      if (7 < local_b4) {
                    // WARNING: Subroutine does not return
        ppiStack_148 = (int **)&UNK_008b4e65;
        FUN_00a3f6a1();
      }
      if ((int **)param_1_00[0x15] == (int **)0x0) {
        FUN_008b34c0();
        ppiStack_148 = &local_58;
        ppiStack_14c = (int **)0x8b4ea2;
        piVar4 = (int *)FUN_008b1fd0();
        param_1_00[0x15] = piVar4;
        ppiStack_148 = (int **)0x8b4eae;
        FUN_008ad5c0();
      }
      else if ((int **)param_1_00[0x15] != &local_58) {
        ppiStack_148 = (int **)0x0;
        pppiStack_150 = (int ***)0x8b4e85;
        ppiStack_14c = &local_58;
        FID_conflict_assign();
      }
      ppiStack_148 = (int **)0x8b4ebb;
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        ppiStack_148 = (int **)&UNK_008b4ed4;
        FUN_00a3f6a1();
      }
      local_40 = 7;
      local_44 = 0;
      local_54 = local_54 & 0xffff0000;
      ppiStack_148 = (int **)0x8b4f00;
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        ppiStack_148 = (int **)&UNK_008b4f19;
        FUN_00a3f6a1();
      }
    }
  }
  else {
    local_12c = (int ***)&uStack_164;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(2);
    if (cVar1 != '\0') {
      ppiStack_148 = (int **)0x8b4c11;
      FUN_004325b6();
      local_4 = 0;
      ppiStack_148 = (int **)0x8b4c26;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        ppiStack_148 = (int **)0x8b4c54;
        FUN_0084d360();
      }
      else {
        ppiStack_148 = (int **)local_f0;
        ppiStack_14c = (int **)0x8b4c48;
        FUN_0084f210();
      }
      ppiStack_148 = (int **)0x8b4c61;
      FUN_008433c0();
      local_12c = &ppiStack_14c;
      pppiStack_150 = &ppiStack_14c;
      pcStack_154 = (char *)0x8b4c73;
      FUN_00432231();
      pppiStack_150 = (int ***)&DAT_00d25fa0;
      pcStack_154 = "wxFileConfigEntry::SetValue";
      uStack_158 = 0x756;
      pcStack_15c = "..\\..\\src\\common\\fileconf.cpp";
      uStack_160 = 2;
      local_4._0_1_ = 3;
      uStack_164 = 0x8b4c9d;
      FUN_008423d0();
      pppiStack_150 = (int ***)local_128;
      local_4._0_1_ = 5;
      pcStack_154 = (char *)0x8b4cb9;
      FUN_00848860();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
LAB_008b4f1c:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_008b4f50(undefined4 param_1_00,byte param_1)

{
  FUN_008b1730();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_008b4f70(int *param_1_00,int param_1,char param_2)

{
  wint_t *pwVar1;
  short sVar2;
  bool bVar3;
  int *piVar4;
  uint uVar5;
  char cVar6;
  wint_t wVar7;
  int iVar8;
  char *pcVar9;
  wint_t **ppwVar10;
  short *psVar11;
  int iVar12;
  wint_t *pwVar13;
  wint_t *pwVar14;
  char *pcStack_1c0;
  char *pcStack_1bc;
  char *pcStack_1b4;
  undefined *local_1b0;
  undefined2 local_1ac [6];
  undefined4 local_1a0;
  char *local_19c;
  char **local_198;
  char *local_194;
  char *pcStack_190;
  wint_t **local_174;
  uint local_170;
  char **local_16c;
  int local_168;
  undefined local_164 [4];
  uint local_160;
  undefined4 local_150;
  uint local_14c;
  void *local_148;
  int *local_140;
  undefined local_13c [4];
  uint local_138;
  undefined4 local_128;
  uint local_124;
  void *local_120;
  char **local_118;
  char local_114 [20];
  uint local_100;
  undefined4 local_fc;
  char *pcStack_f4;
  undefined4 uStack_f0;
  char *pcStack_ec;
  undefined *puStack_e8;
  __time64_t _Stack_e4;
  DWORD DStack_dc;
  int iStack_d8;
  uint uStack_d0;
  undefined4 uStack_c0;
  uint uStack_bc;
  void *pvStack_b8;
  int local_ac;
  char local_a4;
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  char local_34 [20];
  int local_20;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd030e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_174;
  ExceptionList = &local_c;
  local_100 = *(uint *)(param_1 + 0x38);
  local_168 = param_1;
  local_170 = 0;
  local_140 = param_1_00;
  if (local_100 != 0) {
    do {
      iVar8 = local_168;
      uVar5 = local_170;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(local_168 + 0x38) <= local_170)) {
        pcStack_190 = "nIndex < m_nCount";
        local_194 = "wxArrayString::Item";
        local_198 = (char **)0xb3;
        local_19c = "d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h";
        local_1a0 = 0x8b5013;
        FUN_00840480();
      }
      local_194 = (char *)(*(int *)(iVar8 + 0x3c) + uVar5 * 0x24);
      pcStack_190 = (char *)0x0;
      local_64 = 7;
      local_68 = 0;
      local_78 = local_78 & 0xffff0000;
      local_198 = (char **)0x8b504c;
      FID_conflict_assign();
      local_60 = (void *)0x0;
      local_4 = 0;
      pcStack_190 = (char *)0x8b506e;
      FUN_00432231();
      local_4._0_1_ = 1;
      pcStack_190 = (char *)0x8b5080;
      FUN_008ade40();
      local_4 = CONCAT31(local_4._1_3_,3);
      if ((local_a4 != '\0') && (local_ac != 0)) {
        pcStack_190 = (char *)0x8b50a5;
        _free(*(void **)(local_ac + 0x1c));
        if (*(uint *)(local_ac + 0x18) < 8) {
          *(undefined4 *)(local_ac + 0x18) = 7;
          *(undefined4 *)(local_ac + 0x14) = 0;
          *(undefined2 *)(local_ac + 4) = 0;
                    // WARNING: Subroutine does not return
          pcStack_190 = &UNK_008b50cc;
          FUN_00a3f6a1();
        }
                    // WARNING: Subroutine does not return
        pcStack_190 = &UNK_008b50b7;
        FUN_00a3f6a1();
      }
      if (param_2 != '\0') {
        pcStack_190 = (char *)0x8b50e9;
        FUN_008b1810();
      }
      pwVar13 = *local_174;
      pcStack_190 = (char *)0x8b50f8;
      iVar8 = _iswspace(*pwVar13);
      while (iVar8 != 0) {
        pwVar14 = pwVar13 + 1;
        pwVar13 = pwVar13 + 1;
        pcStack_190 = (char *)0x8b510d;
        iVar8 = _iswspace(*pwVar14);
      }
      wVar7 = *pwVar13;
      local_4._1_3_ = (uint3)(local_4 >> 8);
      if (((wVar7 == 0) || (wVar7 == 0x3b)) || (wVar7 == 0x23)) {
        local_4 = (uint)local_4._1_3_ << 8;
        ppwVar10 = (wint_t **)FUN_00850350();
        if (local_174 != ppwVar10) {
          *(short *)(local_174 + 2) = *(short *)(local_174 + 2) + -1;
          if (*(short *)(local_174 + 2) == 0) {
            if (*(char *)((int)local_174 + 10) != '\0') {
              pcStack_190 = (char *)0x8b5e9e;
              _free(*local_174);
            }
                    // WARNING: Subroutine does not return
            pcStack_190 = &UNK_008b5ea7;
            FUN_00a3f6a1();
          }
          local_174 = (wint_t **)FUN_00850350();
        }
        local_4 = 0xffffffff;
        pcStack_190 = (char *)0x8b5ecb;
        _free(local_60);
joined_r0x008b5ed6:
        if (7 < local_64) {
                    // WARNING: Subroutine does not return
          pcStack_190 = &UNK_008b5ee5;
          FUN_00a3f6a1();
        }
      }
      else {
        pwVar14 = pwVar13;
        if (wVar7 == 0x5b) {
          pwVar13 = pwVar13 + 1;
          wVar7 = *pwVar13;
          pwVar14 = pwVar13;
          while (wVar7 != 0x5d) {
            if (wVar7 == 0x5c) {
              pwVar14 = pwVar14 + 1;
            }
            if ((*pwVar14 == 10) || (*pwVar14 == 0)) {
              if (*pwVar14 != 0x5d) {
                local_16c = (char **)local_1ac;
                local_1b0 = &DAT_00d25fa0;
                pcStack_1b4 = (char *)0x8b52e2;
                FUN_0043c211();
                local_1b0 = (undefined *)0x1;
                pcStack_1b4 = (char *)0x8b52e9;
                cVar6 = FUN_00846b30();
                if (cVar6 != '\0') {
                  pcStack_190 = (char *)0x8b5304;
                  FUN_004325b6();
                  local_4._0_1_ = 4;
                  pcStack_190 = (char *)0x8b531a;
                  FUN_0043c211();
                  local_4 = CONCAT31(local_4._1_3_,5);
                  iVar8 = FUN_0084a340();
                  if (iVar8 == 0) {
                    pcStack_190 = (char *)0x8b5348;
                    FUN_0084d360();
                  }
                  else {
                    pcStack_190 = local_13c;
                    local_194 = (char *)0x8b533c;
                    FUN_0084f210();
                  }
                  pcStack_190 = (char *)0x8b5355;
                  FUN_008433c0();
                  pcStack_190 = (char *)(uint)*pwVar14;
                  local_16c = &pcStack_1b4;
                  pcStack_1c0 = (char *)(local_168 + 4);
                  local_19c = (char *)0x7;
                  local_1a0 = 0;
                  pcStack_1bc = (char *)0x0;
                  local_1b0 = (undefined *)((uint)local_1b0 & 0xffff0000);
                  local_4._0_1_ = 6;
                  FID_conflict_assign();
                  local_198 = (char **)0x0;
                  pcStack_1bc = "wxFileConfig::Parse";
                  pcStack_1c0 = (char *)0x23f;
                  local_4._0_1_ = 7;
                  FUN_008423d0(1,"..\\..\\src\\common\\fileconf.cpp");
                  local_4._0_1_ = 9;
                  pcStack_1bc = (char *)0x8b53da;
                  FUN_008af0a0();
                  local_4._0_1_ = 6;
                  FUN_00842440();
                  local_4 = CONCAT31(local_4._1_3_,5);
                  FUN_0081b5bc();
                  pcStack_190 = (char *)0x8b5409;
                  _free(local_120);
                  if (7 < local_124) {
                    // WARNING: Subroutine does not return
                    pcStack_190 = &UNK_008b541d;
                    FUN_00a3f6a1();
                  }
                  local_124 = 7;
                  local_128 = 0;
                  local_138 = local_138 & 0xffff0000;
                  pcStack_190 = (char *)0x8b5439;
                  _free(local_148);
                  if (7 < local_14c) {
                    // WARNING: Subroutine does not return
                    pcStack_190 = &UNK_008b544d;
                    FUN_00a3f6a1();
                  }
                }
                local_4 = local_4 & 0xffffff00;
                ppwVar10 = (wint_t **)FUN_00850350();
                if (local_174 != ppwVar10) {
                  *(short *)(local_174 + 2) = *(short *)(local_174 + 2) + -1;
                  if (*(short *)(local_174 + 2) == 0) {
                    if (*(char *)((int)local_174 + 10) != '\0') {
                      pcStack_190 = (char *)0x8b5486;
                      _free(*local_174);
                    }
                    // WARNING: Subroutine does not return
                    pcStack_190 = &UNK_008b548f;
                    FUN_00a3f6a1();
                  }
                  local_174 = (wint_t **)FUN_00850350();
                }
                goto LAB_008b549b;
              }
              break;
            }
            pwVar1 = pwVar14 + 1;
            pwVar14 = pwVar14 + 1;
            wVar7 = *pwVar1;
          }
          local_88 = 7;
          local_8c = 0;
          local_9c = local_9c & 0xffff0000;
          local_84 = (void *)0x0;
          local_4._0_1_ = 10;
          local_194 = (char *)0x8b51b4;
          pcStack_190 = (char *)pwVar13;
          FUN_00852140();
          local_4._0_1_ = 0xb;
          pcVar9 = (char *)FUN_008aee10();
          pcStack_190 = (char *)0x1;
          local_4._0_1_ = 0xc;
          local_194 = (char *)0x8b51e1;
          FID_conflict_append();
          pcStack_190 = (char *)0x0;
          local_198 = (char **)0x8b51f1;
          local_194 = pcVar9;
          FID_conflict_append();
          pcStack_190 = (char *)0x8b51fb;
          _free(local_148);
          if (7 < local_14c) {
                    // WARNING: Subroutine does not return
            pcStack_190 = &UNK_008b520f;
            FUN_00a3f6a1();
          }
          local_14c = 7;
          local_150 = 0;
          local_160 = local_160 & 0xffff0000;
          local_4._0_1_ = 10;
          pcStack_190 = (char *)0x8b5233;
          _free(local_120);
          piVar4 = local_140;
          if (7 < local_124) {
                    // WARNING: Subroutine does not return
            pcStack_190 = &UNK_008b5247;
            FUN_00a3f6a1();
          }
          pcStack_190 = (char *)0x8b525f;
          (**(code **)(*local_140 + 0x10))();
          if (param_2 != '\0') {
            iVar8 = piVar4[0x62];
            if (*(int *)(iVar8 + 4) != 0) {
              *(int *)(*(int *)(iVar8 + 4) + 0x54) = iVar8;
            }
            pcStack_190 = (char *)0x8b5288;
            FUN_008ad500();
          }
          wVar7 = pwVar14[1];
          bVar3 = true;
          while ((wVar7 != 0 && (bVar3))) {
            switch(wVar7) {
            default:
              local_16c = (char **)local_1ac;
              local_1b0 = &DAT_00d25fa0;
              pcStack_1b4 = (char *)0x8b54e4;
              FUN_0043c211();
              local_1b0 = (undefined *)0x2;
              pcStack_1b4 = (char *)0x8b54eb;
              cVar6 = FUN_00846b30();
              if (cVar6 != '\0') {
                pcStack_190 = PTR_DAT_03236318;
                if (PTR_DAT_03236318 == (undefined *)0x0) {
                  pcStack_190 = (char *)&DAT_00fae9c8;
                }
                local_160 = local_160 & 0xffff0000;
                local_14c = 7;
                local_150 = 0;
                psVar11 = (short *)pcStack_190;
                do {
                  sVar2 = *psVar11;
                  psVar11 = psVar11 + 1;
                } while (sVar2 != 0);
                local_194 = (char *)0x8b553a;
                FID_conflict_assign();
                local_148 = (void *)0x0;
                local_4._0_1_ = 0xd;
                pcStack_190 = (char *)0x8b5554;
                FUN_0043c211();
                local_4 = CONCAT31(local_4._1_3_,0xe);
                iVar8 = FUN_0084a340();
                if (iVar8 == 0) {
                  pcStack_190 = (char *)0x8b5582;
                  FUN_0084d360();
                }
                else {
                  pcStack_190 = local_13c;
                  local_194 = (char *)0x8b5576;
                  FUN_0084f210();
                }
                pcStack_190 = (char *)0x8b558f;
                FUN_008433c0();
                pcStack_190 = (char *)(local_170 + 1);
                local_16c = &pcStack_1b4;
                pcStack_1c0 = (char *)(local_168 + 4);
                pcStack_1bc = (char *)0x0;
                local_19c = (char *)0x7;
                local_1a0 = 0;
                local_4._0_1_ = 0xf;
                local_1b0 = (undefined *)((uint)local_1b0 & 0xffff0000);
                FID_conflict_assign();
                local_198 = (char **)0x0;
                local_4._0_1_ = 0x10;
                local_fc = 2;
                pcStack_f4 = "..\\..\\src\\common\\fileconf.cpp";
                pcStack_ec = "wxFileConfig::Parse";
                uStack_f0 = 0x263;
                puStack_e8 = &DAT_00d25fa0;
                pcStack_1bc = (char *)0x8b560d;
                _Stack_e4 = __time64((__time64_t *)0x0);
                DStack_dc = GetCurrentThreadId();
                iStack_d8 = 0;
                uStack_bc = 7;
                uStack_c0 = 0;
                uStack_d0 = uStack_d0 & 0xffff0000;
                pvStack_b8 = (void *)0x0;
                local_4._0_1_ = 0x12;
                pcStack_1bc = (char *)0x8b5674;
                FUN_008af160();
                local_4._0_1_ = 0xf;
                pcStack_190 = (char *)0x8b5689;
                _free(pvStack_b8);
                if (7 < uStack_bc) {
                    // WARNING: Subroutine does not return
                  pcStack_190 = &UNK_008b56a3;
                  FUN_00a3f6a1();
                }
                uStack_d0 = uStack_d0 & 0xffff0000;
                uStack_bc = 7;
                uStack_c0 = 0;
                if (iStack_d8 != 0) {
                  FUN_00841af0();
                    // WARNING: Subroutine does not return
                  pcStack_190 = &UNK_008b56d6;
                  FUN_00a3f6a1();
                }
                local_4._0_1_ = 0xe;
                FUN_0081b5bc();
                pcStack_190 = (char *)0x8b56f4;
                _free(local_120);
                if (7 < local_124) {
                    // WARNING: Subroutine does not return
                  pcStack_190 = &UNK_008b570c;
                  FUN_00a3f6a1();
                }
                local_124 = 7;
                local_128 = 0;
                local_138 = local_138 & 0xffff0000;
                local_4._0_1_ = 10;
                pcStack_190 = (char *)0x8b5730;
                _free(local_148);
                if (7 < local_14c) {
                    // WARNING: Subroutine does not return
                  pcStack_190 = &UNK_008b5743;
                  FUN_00a3f6a1();
                }
              }
            case 0x23:
            case 0x3b:
              bVar3 = false;
            case 9:
            case 0x20:
              wVar7 = pwVar14[2];
              pwVar14 = pwVar14 + 1;
            }
          }
          pcStack_190 = (char *)0x8b5765;
          _free(local_84);
          if (7 < local_88) {
                    // WARNING: Subroutine does not return
            pcStack_190 = &UNK_008b5783;
            FUN_00a3f6a1();
          }
LAB_008b5e53:
          local_4 = (uint)local_4._1_3_ << 8;
          FUN_0083f900();
LAB_008b549b:
          local_4 = 0xffffffff;
          pcStack_190 = (char *)0x8b54b3;
          _free(local_60);
          goto joined_r0x008b5ed6;
        }
        do {
          if ((wVar7 == 0x3d) || ((wVar7 == 0x5c && (pwVar14 = pwVar14 + 1, *pwVar14 == 0)))) break;
          wVar7 = pwVar14[1];
          pwVar14 = pwVar14 + 1;
        } while (wVar7 != 0);
        local_194 = (char *)0x8b57cb;
        pcStack_190 = (char *)pwVar13;
        FUN_008addb0();
        local_4._0_1_ = 0x13;
        pcStack_190 = (char *)0x8b57dc;
        FUN_008517a0();
        FUN_008aee10();
        local_4._0_1_ = 0x15;
        pcStack_190 = (char *)0x8b57fc;
        _free(local_120);
        if (7 < local_124) {
                    // WARNING: Subroutine does not return
          pcStack_190 = &UNK_008b5810;
          FUN_00a3f6a1();
        }
        local_124 = 7;
        local_128 = 0;
        local_138 = local_138 & 0xffff0000;
        pcStack_190 = (char *)0x8b582b;
        iVar8 = _iswspace(*pwVar14);
        piVar4 = local_140;
        while (local_140 = piVar4, iVar8 != 0) {
          pwVar13 = pwVar14 + 1;
          pwVar14 = pwVar14 + 1;
          pcStack_190 = (char *)0x8b583f;
          iVar8 = _iswspace(*pwVar13);
          piVar4 = local_140;
        }
        pwVar13 = pwVar14 + 1;
        if (*pwVar14 != 0x3d) {
          local_16c = (char **)local_1ac;
          local_1b0 = &DAT_00d25fa0;
          pcStack_1b4 = (char *)0x8b5869;
          FUN_0043c211();
          local_1b0 = (undefined *)0x1;
          pcStack_1b4 = (char *)0x8b5870;
          cVar6 = FUN_00846b30();
          if (cVar6 != '\0') {
            pcStack_190 = (char *)0x8b588e;
            FUN_004325b6();
            local_4._0_1_ = 0x16;
            pcStack_190 = (char *)0x8b58a4;
            FUN_0043c211();
            local_4 = CONCAT31(local_4._1_3_,0x17);
            iVar8 = FUN_0084a340();
            if (iVar8 == 0) {
              pcStack_190 = (char *)0x8b58d5;
              FUN_0084d360();
            }
            else {
              pcStack_190 = local_164;
              local_194 = (char *)0x8b58c9;
              FUN_0084f210();
            }
            pcStack_190 = (char *)0x8b58e2;
            FUN_008433c0();
            local_16c = &local_1b0;
            pcStack_1b4 = (char *)0xffffffff;
            pcStack_1bc = (char *)(local_168 + 4);
            local_198 = (char **)0x7;
            local_19c = (char *)0x0;
            local_1ac[0] = 0;
            local_4._0_1_ = 0x18;
            pcStack_1c0 = (char *)0x8b5917;
            FID_conflict_assign();
            local_194 = (char *)0x0;
            pcStack_1b4 = "wx";
            pcStack_1bc = (char *)0x280;
            pcStack_1c0 = "..\\..\\src\\common\\fileconf.cpp";
            local_4._0_1_ = 0x19;
            FUN_008423d0(1);
            pcStack_1b4 = local_114;
            local_4._0_1_ = 0x1b;
            FUN_008af220();
            local_4._0_1_ = 0x18;
            FUN_00842440();
            local_4._0_1_ = 0x17;
            FUN_0081b5bc();
            pcStack_190 = (char *)0x8b5992;
            _free(local_148);
            if (7 < local_14c) {
                    // WARNING: Subroutine does not return
              pcStack_190 = &UNK_008b59aa;
              FUN_00a3f6a1();
            }
            local_14c = 7;
            local_150 = 0;
            local_160 = local_160 & 0xffff0000;
            pcStack_190 = (char *)0x8b59c9;
            _free(local_84);
            if (7 < local_88) {
                    // WARNING: Subroutine does not return
              pcStack_190 = &UNK_008b59e6;
              FUN_00a3f6a1();
            }
          }
LAB_008b5e11:
          pcStack_190 = (char *)0x8b5e1e;
          _free(local_3c);
          if (7 < local_40) {
                    // WARNING: Subroutine does not return
            pcStack_190 = &UNK_008b5e38;
            FUN_00a3f6a1();
          }
          local_40 = 7;
          local_44 = 0;
          local_54 = local_54 & 0xffff0000;
          goto LAB_008b5e53;
        }
        pcStack_190 = (char *)0x8b5a05;
        iVar8 = FUN_008ad7c0();
        if (iVar8 == 0) {
          pcStack_190 = local_58;
          local_194 = (char *)0x8b5a23;
          iVar8 = FUN_008afcc0();
LAB_008b5d12:
          if (param_2 != '\0') {
            pcStack_190 = (char *)0x8b5d26;
            FUN_008b0970();
          }
          pcStack_190 = (char *)0x8b5d2f;
          iVar12 = _iswspace(*pwVar13);
          while (iVar12 != 0) {
            pwVar14 = pwVar13 + 1;
            pwVar13 = pwVar13 + 1;
            pcStack_190 = (char *)0x8b5d43;
            iVar12 = _iswspace(*pwVar14);
          }
          pcStack_190 = (char *)0x8b5d57;
          FUN_004325b6();
          local_4._0_1_ = 0x2a;
          if ((*(byte *)(piVar4 + 0x15) & 8) == 0) {
            pcVar9 = (char *)FUN_008b0bf0();
            local_4._0_1_ = 0x2b;
            if (local_34 != pcVar9) {
              pcStack_190 = (char *)0x0;
              local_198 = (char **)0x8b5d8d;
              local_194 = pcVar9;
              FID_conflict_assign();
            }
            local_4._0_1_ = 0x2a;
            pcStack_190 = (char *)0x8b5d9f;
            _free(local_148);
            if (7 < local_14c) {
                    // WARNING: Subroutine does not return
              pcStack_190 = &UNK_008b5db3;
              FUN_00a3f6a1();
            }
          }
          if (((*(byte *)(iVar8 + 0x4c) & 2) == 0) || (local_20 != *(int *)(iVar8 + 0x3c))) {
LAB_008b5de3:
            *(byte *)(iVar8 + 0x4c) = *(byte *)(iVar8 + 0x4c) | 2;
            if ((char *)(iVar8 + 0x28) != local_34) {
              pcStack_190 = (char *)0x0;
              local_198 = (char **)0x8b5e00;
              local_194 = local_34;
              FID_conflict_assign();
            }
          }
          else {
            pcStack_190 = (char *)0x8b5dda;
            iVar12 = FUN_00850760();
            if (iVar12 != 0) goto LAB_008b5de3;
          }
          FUN_0040159c();
          goto LAB_008b5e11;
        }
        if (param_2 == '\0') {
LAB_008b5bb7:
          local_118 = (char **)local_1ac;
          local_1b0 = &DAT_00d25fa0;
          pcStack_1b4 = (char *)0x8b5bcd;
          FUN_0043c211();
          local_1b0 = (undefined *)0x2;
          pcStack_1b4 = (char *)0x8b5bd4;
          cVar6 = FUN_00846b30();
          if (cVar6 != '\0') {
            pcStack_190 = (char *)0x8b5bf2;
            FUN_004325b6();
            local_4._0_1_ = 0x23;
            pcStack_190 = (char *)0x8b5c08;
            FUN_0043c211();
            local_4 = CONCAT31(local_4._1_3_,0x24);
            iVar12 = FUN_0084a340();
            if (iVar12 == 0) {
              pcStack_190 = (char *)0x8b5c39;
              FUN_0084d360();
            }
            else {
              pcStack_190 = local_164;
              local_194 = (char *)0x8b5c2d;
              FUN_0084f210();
            }
            pcStack_190 = (char *)0x8b5c46;
            FUN_008433c0();
            local_118 = (char **)&local_198;
            local_19c = (char *)&local_198;
            local_1a0 = 0x8b5c63;
            FUN_00432231();
            local_19c = (char *)(local_170 + 1);
            local_16c = &pcStack_1c0;
            local_4._0_1_ = 0x26;
            FUN_004325a0(local_168 + 4);
            local_4._0_1_ = 0x27;
            FUN_008423d0(2,"..\\..\\src\\common\\fileconf.cpp",0x297,"wxFileConfig::Parse",
                         &DAT_00d25fa0);
            local_4._0_1_ = 0x29;
            FUN_008af400(local_114);
            local_4._0_1_ = 0x25;
            FUN_00842440();
            local_4._0_1_ = 0x24;
            FUN_0081b5bc();
            FUN_0040159c();
            local_4._0_1_ = 0x15;
            FUN_0040159c();
          }
          goto LAB_008b5d12;
        }
        if ((*(byte *)(iVar8 + 0x4c) & 1) == 0) {
          if (*(int *)(iVar8 + 0x54) == 0) goto LAB_008b5d12;
          goto LAB_008b5bb7;
        }
        local_16c = (char **)local_1ac;
        local_1b0 = &DAT_00d25fa0;
        pcStack_1b4 = (char *)0x8b5a54;
        FUN_0043c211();
        local_1b0 = (undefined *)0x2;
        pcStack_1b4 = (char *)0x8b5a5b;
        cVar6 = FUN_00846b30();
        if (cVar6 != '\0') {
          pcStack_190 = (char *)0x8b5a79;
          FUN_004325b6();
          local_4._0_1_ = 0x1c;
          pcStack_190 = (char *)0x8b5a8f;
          FUN_0043c211();
          pcStack_190 = local_164;
          local_4._0_1_ = 0x1d;
          local_194 = (char *)0x8b5aa9;
          FUN_00820bf9();
          pcStack_190 = (char *)0x8b5ab6;
          FUN_008433c0();
          local_16c = &local_194;
          local_198 = &local_194;
          local_19c = (char *)0x8b5acc;
          FUN_00432231();
          local_198 = (char **)(local_170 + 1);
          local_118 = &pcStack_1bc;
          pcStack_1c0 = (char *)(local_168 + 4);
          local_4._0_1_ = 0x1f;
          FUN_004325a0();
          pcStack_1c0 = "wx";
          local_4._0_1_ = 0x20;
          FUN_008423d0(2,"..\\..\\src\\common\\fileconf.cpp",0x28d,"wxFileConfig::Parse");
          pcStack_1c0 = local_114;
          local_4._0_1_ = 0x22;
          FUN_008af2d0();
          local_4._0_1_ = 0x1e;
          FUN_00842440();
          local_4._0_1_ = 0x1d;
          FUN_0081b5bc();
          FUN_0040159c();
          FUN_0040159c();
        }
        FUN_0040159c();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_0083f900();
        local_4 = 0xffffffff;
        FUN_0040159c();
      }
      local_170 = local_170 + 1;
    } while (local_170 < local_100);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008b5f70(int *param_1_00,undefined4 param_1,int param_2)

{
  short *psVar1;
  char cVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  undefined4 uStack_178;
  undefined4 uStack_174;
  char *pcStack_170;
  undefined4 uStack_16c;
  char *pcStack_168;
  char *pcStack_164;
  char *pcStack_160;
  char *pcStack_15c;
  char **appcStack_140 [2];
  char local_138 [20];
  char local_124 [4];
  uint uStack_120;
  undefined4 uStack_110;
  uint uStack_10c;
  void *pvStack_108;
  char **local_100;
  char acStack_fc [36];
  undefined4 *puStack_d8;
  undefined local_84 [4];
  undefined4 local_80;
  int local_70;
  uint local_6c;
  void *local_68;
  char local_5c [76];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0445;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)appcStack_140;
  ExceptionList = &local_c;
  pcStack_160 = (char *)0x8b5fc9;
  pcStack_15c = (char *)param_1_00;
  FUN_00889da0();
  pcStack_15c = (char *)0x0;
  pcStack_160 = local_5c;
  local_4 = 0;
  local_6c = 7;
  local_70 = 0;
  local_80 = (uint)local_80._2_2_ << 0x10;
  pcStack_164 = (char *)0x8b6005;
  FID_conflict_assign();
  local_68 = (void *)0x0;
  local_100 = (char **)&uStack_178;
  local_4._0_1_ = 1;
  FUN_0043c211(&DAT_00d25fa0);
  cVar2 = FUN_00846b30(7);
  if (cVar2 != '\0') {
    pcStack_15c = (char *)0x8b6047;
    FUN_0081c0f1();
    local_4._0_1_ = 2;
    pcStack_15c = (char *)0x8b605d;
    FUN_004325b6();
    local_100 = &pcStack_160;
    pcStack_164 = (char *)&pcStack_160;
    local_4._0_1_ = 3;
    pcStack_168 = (char *)0x8b6079;
    (**(code **)(*param_1_00 + 0x14))();
    pcStack_168 = (char *)0x8b6080;
    FUN_00432231();
    puStack_d8 = &uStack_16c;
    pcStack_170 = (char *)&uStack_16c;
    uStack_174 = 0x8b6094;
    FUN_00432231();
    appcStack_140[0] = (char **)&uStack_178;
    FUN_00432231(&uStack_178);
    local_4._0_1_ = 6;
    FUN_008423d0(7,"..\\..\\src\\common\\fileconf.cpp",0x3a9,"wxFileConfig::DoWriteString",
                 &DAT_00d25fa0);
    local_4._0_1_ = 8;
    FUN_008b12e0(local_124,local_138);
    local_4._0_1_ = 3;
    FUN_00842440();
    pcStack_15c = (char *)0x8b6112;
    _free(pvStack_108);
    if (7 < uStack_10c) {
                    // WARNING: Subroutine does not return
      pcStack_15c = &UNK_008b6126;
      FUN_00a3f6a1();
    }
    uStack_120 = uStack_120 & 0xffff0000;
    uStack_10c = 7;
    uStack_110 = 0;
    local_4._0_1_ = 1;
    FUN_0081b5bc();
  }
  if (local_70 == 0) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_2 + 0x14) != 0)) {
      pcStack_15c = "szValue.empty()";
      pcStack_160 = "wxFileConfig::DoWriteString";
      pcStack_164 = (char *)0x3b3;
      pcStack_168 = "..\\..\\src\\common\\fileconf.cpp";
      uStack_16c = 0x8b6185;
      FUN_00840480();
    }
    appcStack_140[0] = (char **)&uStack_178;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(7);
    if (cVar2 != '\0') {
      pcStack_15c = (char *)0x8b61bb;
      FUN_0081c0f1();
      local_4._0_1_ = 9;
      pcStack_15c = (char *)0x8b61d1;
      FUN_004325b6();
      appcStack_140[0] = &pcStack_160;
      pcStack_164 = (char *)&pcStack_160;
      pcStack_168 = (char *)0x8b61e9;
      FUN_00432231();
      pcStack_164 = &DAT_00d25fa0;
      pcStack_168 = "wxFileConfig::DoWriteString";
      uStack_16c = 0x3b7;
      pcStack_170 = "..\\..\\src\\common\\fileconf.cpp";
      uStack_174 = 7;
      local_4._0_1_ = 0xb;
      uStack_178 = 0x8b6213;
      FUN_008423d0();
      pcStack_164 = local_138;
      pcStack_168 = local_124;
      local_4._0_1_ = 0xd;
      uStack_16c = 0x8b6234;
      FUN_0084dc30();
      local_4._0_1_ = 10;
      FUN_00842440();
      pcStack_15c = (char *)0x8b6252;
      _free(pvStack_108);
      if (7 < uStack_10c) {
                    // WARNING: Subroutine does not return
        pcStack_15c = &UNK_008b6266;
        FUN_00a3f6a1();
      }
      uStack_10c = 7;
      uStack_110 = 0;
      uStack_120 = uStack_120 & 0xffff0000;
      local_4._0_1_ = 1;
      FUN_0081b5bc();
    }
    *(undefined *)(param_1_00 + 100) = 1;
    FUN_008b2f70();
  }
  else {
    pcStack_15c = (char *)appcStack_140;
    pcStack_160 = (char *)0x8b62b6;
    piVar3 = (int *)FUN_0081b542();
    iVar5 = *piVar3;
    psVar1 = (short *)piVar3[1];
    if (iVar5 != -4) {
      if (iVar5 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar5 + 0x18) < 8) {
        iVar4 = iVar5 + 4;
      }
      else {
        iVar4 = *(int *)(iVar5 + 4);
      }
      if ((short *)(iVar4 + *(int *)(iVar5 + 0x14) * 2) <= psVar1) {
        FUN_00a3fb10();
      }
    }
    if (*psVar1 == 0x21) {
      appcStack_140[0] = (char **)&uStack_178;
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(1);
      if (cVar2 != '\0') {
        pcStack_15c = (char *)0x8b6326;
        FUN_004325b6();
        local_4._0_1_ = 0xe;
        pcStack_15c = (char *)0x8b633c;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,0xf);
        iVar5 = FUN_0084a340();
        if (iVar5 == 0) {
          pcStack_15c = (char *)0x8b636a;
          FUN_0084d360();
        }
        else {
          pcStack_15c = local_124;
          pcStack_160 = (char *)0x8b635e;
          FUN_0084f210();
        }
        pcStack_15c = (char *)0x8b6377;
        FUN_008433c0();
        pcStack_15c = "wxFileConfig::DoWriteString";
        pcStack_160 = (char *)0x3c6;
        pcStack_164 = "..\\..\\src\\common\\fileconf.cpp";
        pcStack_168 = (char *)0x1;
        local_4._0_1_ = 0x10;
        uStack_16c = 0x8b63a2;
        FUN_008423d0();
        pcStack_15c = local_138;
        local_4._0_1_ = 0x11;
        pcStack_160 = (char *)0x8b63b8;
        FUN_008af540();
        local_4._0_1_ = 0x10;
        FUN_00842440();
        local_4._0_1_ = 0xf;
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      pcStack_15c = (char *)0x8b63fb;
      _free(local_68);
      if (7 < local_6c) {
                    // WARNING: Subroutine does not return
        pcStack_15c = &UNK_008b6415;
        FUN_00a3f6a1();
      }
      local_80 = local_80 & 0xffff0000;
      local_6c = 7;
      local_70 = 0;
      local_4 = 0xffffffff;
      FUN_00889a70();
      goto LAB_008b66a7;
    }
    pcStack_15c = (undefined *)0x8b6469;
    iVar5 = FUN_008ad7c0();
    if (iVar5 == 0) {
      appcStack_140[0] = (char **)&uStack_178;
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(7);
      if (cVar2 != '\0') {
        pcStack_15c = (char *)0x8b64a6;
        FUN_0081c0f1();
        local_4._0_1_ = 0x12;
        pcStack_15c = (char *)0x8b64bc;
        FUN_004325b6();
        appcStack_140[0] = &pcStack_160;
        pcStack_164 = (char *)&pcStack_160;
        pcStack_168 = (char *)0x8b64d2;
        FUN_00432231();
        pcStack_164 = &DAT_00d25fa0;
        pcStack_168 = "wxFileConfig::DoWriteString";
        uStack_16c = 0x3cf;
        pcStack_170 = "..\\..\\src\\common\\fileconf.cpp";
        uStack_174 = 7;
        local_4._0_1_ = 0x14;
        uStack_178 = 0x8b64fc;
        FUN_008423d0();
        pcStack_164 = local_138;
        pcStack_168 = acStack_fc;
        local_4._0_1_ = 0x16;
        uStack_16c = 0x8b651d;
        FUN_0084dc30();
        local_4._0_1_ = 0x13;
        FUN_00842440();
        FUN_0040159c();
        local_4._0_1_ = 1;
        FUN_0081b5bc();
      }
      pcStack_15c = local_84;
      pcStack_160 = (char *)0x8b6560;
      FUN_008afcc0();
    }
    appcStack_140[0] = (char **)&uStack_178;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(7);
    if (cVar2 != '\0') {
      pcStack_15c = (char *)0x8b6595;
      FUN_0081c0f1();
      local_4._0_1_ = 0x17;
      pcStack_15c = (char *)0x8b65ab;
      FUN_004325b6();
      appcStack_140[0] = &pcStack_160;
      pcStack_164 = (char *)&pcStack_160;
      pcStack_168 = (char *)0x8b65bc;
      FUN_00432231();
      pcStack_164 = &DAT_00d25fa0;
      pcStack_168 = "wxFileConfig::DoWriteString";
      uStack_16c = 0x3d5;
      pcStack_170 = "..\\..\\src\\common\\fileconf.cpp";
      uStack_174 = 7;
      local_4._0_1_ = 0x19;
      uStack_178 = 0x8b65e6;
      FUN_008423d0();
      pcStack_164 = local_138;
      pcStack_168 = acStack_fc;
      local_4._0_1_ = 0x1b;
      uStack_16c = 0x8b6607;
      FUN_0084dc30();
      local_4._0_1_ = 0x18;
      FUN_00842440();
      FUN_0040159c();
      local_4._0_1_ = 1;
      FUN_0081b5bc();
    }
    pcStack_15c = (char *)param_2;
    pcStack_160 = (char *)0x8b663f;
    FUN_008b4b80();
    *(undefined *)(param_1_00 + 100) = 1;
  }
  pcStack_15c = (char *)0x8b6655;
  _free(local_68);
  if (7 < local_6c) {
                    // WARNING: Subroutine does not return
    pcStack_15c = &UNK_008b666f;
    FUN_00a3f6a1();
  }
  local_80 = local_80 & 0xffff0000;
  local_6c = 7;
  local_70 = 0;
  local_4 = 0xffffffff;
  FUN_00889a70();
LAB_008b66a7:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008b66e0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  int iVar3;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_34 [4];
  undefined2 local_30;
  int local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0488;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3c;
  ExceptionList = &local_c;
  local_3c = param_2;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    local_38 = 0x2f;
    iVar2 = FUN_00420f3f(&local_38,0,1);
    if (iVar2 != -1) {
      FUN_00840480("..\\..\\src\\common\\fileconf.cpp",0x43e,"wxFileConfig::RenameEntry",
                   "oldName.find(wxCONFIG_PATH_SEPARATOR) == wxString::npos",
                   L"RenameEntry(): paths are not supported");
    }
  }
  iVar2 = FUN_008ad7c0(param_1);
  if ((iVar2 != 0) && (iVar3 = FUN_008ad7c0(local_3c), iVar3 == 0)) {
    local_1c = 7;
    local_30 = 0;
    local_20 = iVar3;
    FID_conflict_assign(iVar2 + 0x28,0,0xffffffff);
    local_18 = 0;
    local_4 = 0;
    cVar1 = FUN_008b4a60(param_1);
    if (cVar1 == '\0') {
      FUN_0040159c();
    }
    else {
      *(undefined *)(param_1_00 + 400) = 1;
      FUN_008afcc0(local_3c,0xffffffff);
      FUN_008b4b80(local_34,1);
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_008b6830(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  
  iVar1 = FUN_008ad850(param_1);
  if (iVar1 == 0) {
    return 0;
  }
  iVar1 = FUN_008ad850(param_2);
  if (iVar1 != 0) {
    return 0;
  }
  FUN_008b3830(param_2);
  *(undefined *)(param_1_00 + 400) = 1;
  return 1;
}



undefined4 FUN_008b6890(undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_008ad850(param_1);
  if (iVar1 != 0) {
    uVar2 = FUN_008b38d0(iVar1);
    return uVar2;
  }
  return 0;
}



void __fastcall FUN_008b68c0(int param_1)

{
  char cVar1;
  undefined4 uVar2;
  bool bVar3;
  undefined4 uStack_1ec;
  undefined4 uStack_1e8;
  char *pcStack_1e4;
  undefined4 uStack_1e0;
  char *pcStack_1dc;
  undefined4 *puStack_1d8;
  undefined4 uStack_1d4;
  undefined *puStack_1d0;
  undefined4 *local_1b4;
  undefined local_1b0 [4];
  uint local_1ac;
  undefined4 local_19c;
  uint local_198;
  void *local_194;
  undefined4 local_18c;
  undefined local_188 [20];
  undefined local_174 [36];
  undefined local_150 [116];
  undefined local_dc [36];
  undefined local_b8 [84];
  undefined local_64 [84];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd05c4;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_1b4;
  ExceptionList = &local_c;
  local_18c = 0;
  puStack_1d0 = (undefined *)0x8b690c;
  local_1b4 = (undefined4 *)operator_new(0x58);
  local_4 = 0;
  bVar3 = local_1b4 == (undefined4 *)0x0;
  if (bVar3) {
    uVar2 = 0;
  }
  else {
    puStack_1d0 = (undefined *)0x8b692f;
    FUN_004325b6();
    puStack_1d0 = local_1b0;
    uStack_1d4 = 0;
    local_4 = CONCAT31(local_4._1_3_,1);
    local_18c = 1;
    puStack_1d8 = (undefined4 *)0x8b694e;
    uVar2 = FUN_008ae6a0();
  }
  *(undefined4 *)(param_1 + 0x184) = uVar2;
  *(undefined4 *)(param_1 + 0x188) = uVar2;
  local_4 = 0xffffffff;
  if (!bVar3) {
    puStack_1d0 = (undefined *)0x8b6978;
    _free(local_194);
    if (7 < local_198) {
                    // WARNING: Subroutine does not return
      puStack_1d0 = &UNK_008b698c;
      FUN_00a3f6a1();
    }
  }
  *(undefined4 *)(param_1 + 0x5c) = 0;
  *(undefined4 *)(param_1 + 0x58) = 0;
  if ((((*(int *)(param_1 + 0x108) != 0) || (*(int *)(param_1 + 0x128) != 0)) ||
      (*(char *)(param_1 + 0x15c) == '\0')) ||
     ((*(int *)(param_1 + 0x14c) != 0 || (*(char *)(param_1 + 0x15d) != '\0')))) {
    cVar1 = FUN_00859650();
    if (cVar1 != '\0') {
      puStack_1d0 = local_1b0;
      uStack_1d4 = 0x8b69dd;
      FUN_008581b0();
      local_4 = 3;
      puStack_1d0 = (undefined *)0x8b69f5;
      FUN_008c1110();
      local_4._0_1_ = 5;
      puStack_1d0 = (undefined *)0x8b6a07;
      _free(local_194);
      if (7 < local_198) {
                    // WARNING: Subroutine does not return
        puStack_1d0 = &UNK_008b6a1b;
        FUN_00a3f6a1();
      }
      local_1ac = local_1ac & 0xffff0000;
      local_198 = 7;
      local_19c = 0;
      puStack_1d0 = (undefined *)0x8b6a40;
      cVar1 = FUN_008a8660();
      if (cVar1 == '\0') {
        local_1b4 = &uStack_1ec;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(2);
        if (cVar1 != '\0') {
          puStack_1d0 = (undefined *)0x8b6aa5;
          FUN_004325b6();
          local_4._0_1_ = 6;
          puStack_1d0 = (undefined *)0x8b6abe;
          FUN_0043c211();
          puStack_1d0 = local_dc;
          local_4._0_1_ = 7;
          uStack_1d4 = 0x8b6ad7;
          FUN_00820bf9();
          puStack_1d0 = (undefined *)0x8b6ae4;
          FUN_008433c0();
          puStack_1d0 = local_150;
          local_4._0_1_ = 8;
          uStack_1d4 = 0x8b6af9;
          FUN_008581b0();
          local_1b4 = &uStack_1d4;
          puStack_1d8 = &uStack_1d4;
          pcStack_1dc = (char *)0x8b6b0a;
          FUN_00432231();
          puStack_1d8 = (undefined4 *)&DAT_00d25fa0;
          pcStack_1dc = "wxFileConfig::Init";
          uStack_1e0 = 0x160;
          pcStack_1e4 = "..\\..\\src\\common\\fileconf.cpp";
          uStack_1e8 = 2;
          local_4._0_1_ = 10;
          uStack_1ec = 0x8b6b34;
          FUN_008423d0();
          puStack_1d8 = (undefined4 *)local_188;
          local_4._0_1_ = 0xc;
          pcStack_1dc = (char *)0x8b6b50;
          FUN_00848860();
          local_4._0_1_ = 9;
          FUN_00842440();
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,7);
          FUN_0081b5bc();
          FUN_0040159c();
          FUN_0040159c();
        }
      }
      else {
        puStack_1d0 = local_b8;
        uStack_1d4 = 0x8b6a54;
        FUN_008b4f70();
        FUN_00432156();
        *(undefined4 *)(param_1 + 0x188) = *(undefined4 *)(param_1 + 0x184);
      }
      local_4 = 0xffffffff;
      FUN_008ad450();
    }
  }
  if (((*(int *)(param_1 + 0x88) != 0) || (*(int *)(param_1 + 0xa8) != 0)) ||
     ((*(char *)(param_1 + 0xdc) == '\0' ||
      ((*(int *)(param_1 + 0xcc) != 0 || (*(char *)(param_1 + 0xdd) != '\0')))))) {
    cVar1 = FUN_00859650();
    if (cVar1 != '\0') {
      puStack_1d0 = local_1b0;
      uStack_1d4 = 0x8b6bea;
      FUN_008581b0();
      local_4 = 0xd;
      puStack_1d0 = (undefined *)0x8b6c02;
      FUN_008c1110();
      local_4._0_1_ = 0xf;
      puStack_1d0 = (undefined *)0x8b6c14;
      _free(local_194);
      if (7 < local_198) {
                    // WARNING: Subroutine does not return
        puStack_1d0 = &UNK_008b6c28;
        FUN_00a3f6a1();
      }
      local_198 = 7;
      local_19c = 0;
      local_1ac = local_1ac & 0xffff0000;
      puStack_1d0 = (undefined *)0x8b6c4d;
      cVar1 = FUN_008a8660();
      if (cVar1 == '\0') {
        puStack_1d0 = local_dc;
        uStack_1d4 = 0x8b6c8e;
        FUN_008581b0();
        local_1b4 = &uStack_1ec;
        local_4._0_1_ = 0x10;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(2);
        if (cVar1 != '\0') {
          puStack_1d0 = (undefined *)0x8b6ccc;
          FUN_004325b6();
          local_4._0_1_ = 0x11;
          puStack_1d0 = (undefined *)0x8b6ce2;
          FUN_0043c211();
          puStack_1d0 = local_174;
          local_4._0_1_ = 0x12;
          uStack_1d4 = 0x8b6cf9;
          FUN_00820bf9();
          puStack_1d0 = (undefined *)0x8b6d06;
          FUN_008433c0();
          local_1b4 = &uStack_1d4;
          puStack_1d8 = &uStack_1d4;
          pcStack_1dc = (char *)0x8b6d1c;
          FUN_00432231();
          puStack_1d8 = (undefined4 *)&DAT_00d25fa0;
          pcStack_1dc = "wxFileConfig::Init";
          uStack_1e0 = 0x170;
          pcStack_1e4 = "..\\..\\src\\common\\fileconf.cpp";
          uStack_1e8 = 2;
          local_4._0_1_ = 0x14;
          uStack_1ec = 0x8b6d46;
          FUN_008423d0();
          puStack_1d8 = (undefined4 *)local_188;
          local_4._0_1_ = 0x16;
          pcStack_1dc = (char *)0x8b6d62;
          FUN_00848860();
          local_4._0_1_ = 0x13;
          FUN_00842440();
          local_4._0_1_ = 0x12;
          FUN_0081b5bc();
          FUN_0040159c();
          local_4._0_1_ = 0x10;
          FUN_0040159c();
        }
        cVar1 = FUN_00859650();
        if (cVar1 != '\0') {
          local_1b4 = &uStack_1ec;
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(2);
          if (cVar1 != '\0') {
            puStack_1d0 = (undefined *)0x8b6de4;
            FUN_004325b6();
            local_4._0_1_ = 0x17;
            puStack_1d0 = (undefined *)0x8b6dfa;
            FUN_0043c211();
            puStack_1d0 = local_174;
            local_4._0_1_ = 0x18;
            uStack_1d4 = 0x8b6e11;
            FUN_00820bf9();
            puStack_1d0 = (undefined *)0x8b6e1e;
            FUN_008433c0();
            local_1b4 = &uStack_1d4;
            puStack_1d8 = &uStack_1d4;
            pcStack_1dc = (char *)0x8b6e34;
            FUN_00432231();
            puStack_1d8 = (undefined4 *)&DAT_00d25fa0;
            pcStack_1dc = "wxFileConfig::Init";
            uStack_1e0 = 0x175;
            pcStack_1e4 = "..\\..\\src\\common\\fileconf.cpp";
            uStack_1e8 = 2;
            local_4._0_1_ = 0x1a;
            uStack_1ec = 0x8b6e5e;
            FUN_008423d0();
            puStack_1d8 = (undefined4 *)local_188;
            local_4._0_1_ = 0x1c;
            pcStack_1dc = (char *)0x8b6e7a;
            FUN_00848860();
            local_4._0_1_ = 0x19;
            FUN_00842440();
            local_4._0_1_ = 0x18;
            FUN_0081b5bc();
            FUN_0040159c();
            local_4._0_1_ = 0x10;
            FUN_0040159c();
          }
          FUN_00856240();
        }
        FUN_0040159c();
      }
      else {
        puStack_1d0 = local_64;
        uStack_1d4 = 0x8b6c62;
        FUN_008b4f70();
        FUN_00432156();
        *(undefined4 *)(param_1 + 0x188) = *(undefined4 *)(param_1 + 0x184);
      }
      local_4 = 0xffffffff;
      FUN_008ad450();
    }
  }
  *(undefined *)(param_1 + 400) = 0;
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall
FUN_008b6f20(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,uint param_5,int *param_6)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined local_d8 [4];
  uint local_d4;
  undefined4 local_c4;
  uint local_c0;
  void *local_bc;
  undefined4 *local_b4;
  undefined auStack_b0 [4];
  undefined4 uStack_ac;
  uint uStack_98;
  void *pvStack_94;
  undefined auStack_8c [128];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0688;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_b4 = param_1_00;
  uVar1 = FUN_008af050(DAT_0323f878 ^ (uint)&stack0xffffff18);
  local_4 = 0;
  FUN_00889cf0(uVar1,param_2,param_3,param_4,param_5);
  local_4._0_1_ = 2;
  _free(local_bc);
  if (7 < local_c0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_d4);
  }
  local_c4 = 0;
  local_c0 = 7;
  local_d4 = local_d4 & 0xffff0000;
  *param_1_00 = wxFileConfig::vftable;
  FUN_00432544(param_3,0);
  local_4._0_1_ = 3;
  FUN_00432544(param_4,0);
  param_1_00[0x5e] = 7;
  param_1_00[0x5d] = 0;
  *(undefined2 *)(param_1_00 + 0x59) = 0;
  param_1_00[0x5f] = 0;
  local_4._0_1_ = 5;
  uVar1 = (**(code **)(*param_6 + 0x14))();
  param_1_00[99] = uVar1;
  if ((((param_1_00[0x22] == 0) && (param_1_00[0x2a] == 0)) &&
      (*(char *)(param_1_00 + 0x37) != '\0')) &&
     (((param_1_00[0x33] == 0 && (*(char *)((int)param_1_00 + 0xdd) == '\0')) &&
      ((param_5 & 1) != 0)))) {
    uVar1 = FUN_008d1d80(local_d8);
    local_4._0_1_ = 6;
    puVar2 = (undefined4 *)FUN_008ae390(auStack_8c,uVar1,param_5);
    local_4._0_1_ = 7;
    if (param_1_00 + 0x18 != puVar2) {
      FUN_00856100(puVar2);
    }
    local_4._0_1_ = 6;
    FUN_0043250a();
    local_4._0_1_ = 5;
    _free(local_bc);
    if (7 < local_c0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_d4);
    }
  }
  if (((param_1_00[0x42] == 0) && (param_1_00[0x4a] == 0)) &&
     ((*(char *)(param_1_00 + 0x57) != '\0' &&
      (((param_1_00[0x53] == 0 && (*(char *)((int)param_1_00 + 0x15d) == '\0')) &&
       ((param_5 & 2) != 0)))))) {
    uVar1 = FUN_008d1d80(local_d8);
    local_4._0_1_ = 8;
    puVar2 = (undefined4 *)FUN_008ae2d0(auStack_8c,uVar1);
    local_4._0_1_ = 9;
    if (param_1_00 + 0x38 != puVar2) {
      FUN_00856100(puVar2);
    }
    local_4._0_1_ = 8;
    FUN_0043250a();
    local_4._0_1_ = 5;
    _free(local_bc);
    if (7 < local_c0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_d4);
    }
  }
  if (((param_1_00[0x22] != 0) || (param_1_00[0x2a] != 0)) ||
     ((*(char *)(param_1_00 + 0x37) == '\0' ||
      ((param_1_00[0x33] != 0 || (*(char *)((int)param_1_00 + 0xdd) != '\0')))))) {
    param_1_00[0x15] = param_1_00[0x15] | 1;
  }
  if ((((param_1_00[0x42] != 0) || (param_1_00[0x4a] != 0)) ||
      (*(char *)(param_1_00 + 0x57) == '\0')) ||
     ((param_1_00[0x53] != 0 || (*(char *)((int)param_1_00 + 0x15d) != '\0')))) {
    param_1_00[0x15] = param_1_00[0x15] | 2;
  }
  if ((param_5 & 4) == 0) {
    if (((param_1_00[0x22] != 0) || (param_1_00[0x2a] != 0)) ||
       ((*(char *)(param_1_00 + 0x37) == '\0' ||
        ((param_1_00[0x33] != 0 || (*(char *)((int)param_1_00 + 0xdd) != '\0')))))) {
      uVar1 = FUN_008ae1c0(local_d8,param_5);
      local_4._0_1_ = 10;
      FUN_00859fd0(0x16,uVar1,0);
      local_4._0_1_ = 5;
      _free(local_bc);
      if (7 < local_c0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_d4);
      }
    }
    if ((((param_1_00[0x42] != 0) || (param_1_00[0x4a] != 0)) ||
        (*(char *)(param_1_00 + 0x57) == '\0')) ||
       ((param_1_00[0x53] != 0 || (*(char *)((int)param_1_00 + 0x15d) != '\0')))) {
      uVar1 = FUN_008ada70(auStack_b0);
      local_4._0_1_ = 0xb;
      FUN_00859fd0(0x16,uVar1,0);
      local_4._0_1_ = 5;
      _free(pvStack_94);
      if (7 < uStack_98) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_ac);
      }
    }
  }
  FUN_008b68c0();
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_008b72f0(int *param_1_00,undefined4 param_1,char param_2)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined local_84 [40];
  undefined local_5c [76];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd06c3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_84;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  FUN_00889da0(param_1_00,param_1);
  local_4 = 0;
  cVar2 = FUN_008b4a60(local_5c);
  if (cVar2 == '\0') {
    local_4 = 0xffffffff;
    FUN_00889a70();
  }
  else {
    *(undefined *)(param_1_00 + 100) = 1;
    if ((((param_2 != '\0') && (iVar1 = param_1_00[0x62], *(int *)(iVar1 + 0xc) == 0)) &&
        (*(int *)(iVar1 + 0x1c) == 0)) && (iVar1 != param_1_00[0x61])) {
      FUN_004325b6(&DAT_00d240e0);
      local_4._0_1_ = 1;
      (**(code **)(*param_1_00 + 0x10))(local_84,uVar3);
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
      FUN_008b6890(iVar1 + 0x28);
    }
    local_4 = 0xffffffff;
    FUN_00889a70();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008b7420(int param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  undefined local_84 [4];
  uint local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  undefined local_5c [76];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0703;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_84;
  ExceptionList = &local_c;
  uVar2 = FUN_0088a080(local_84,param_1,DAT_0323f878 ^ (uint)&stack0xffffff74);
  local_4 = 0;
  FUN_00889da0(param_1_00,uVar2);
  local_4 = CONCAT31(local_4._1_3_,2);
  _free(local_68);
  if (7 < local_6c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_80);
  }
  local_6c = 7;
  local_70 = 0;
  local_80 = local_80 & 0xffff0000;
  iVar3 = FUN_008ad850(local_5c);
  if (iVar3 != 0) {
    cVar1 = FUN_008b38d0(iVar3);
    if (cVar1 != '\0') {
      FUN_00889f50();
      *(undefined *)(param_1_00 + 400) = 1;
      local_4 = 0xffffffff;
      FUN_00889a70();
      goto LAB_008b7520;
    }
  }
  local_4 = 0xffffffff;
  FUN_00889a70();
LAB_008b7520:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __fastcall FUN_008b7550(int param_1)

{
  bool bVar1;
  char cVar2;
  int iVar3;
  bool bVar4;
  uint local_d4;
  void *local_d0;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0799;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar4 = false;
  FUN_008afd80();
  if ((((*(int *)(param_1 + 0x88) == 0) && (*(int *)(param_1 + 0xa8) == 0)) &&
      (*(char *)(param_1 + 0xdc) != '\0')) &&
     ((*(int *)(param_1 + 0xcc) == 0 && (*(char *)(param_1 + 0xdd) == '\0')))) goto LAB_008b77a8;
  cVar2 = FUN_00859650();
  if (cVar2 == '\0') {
LAB_008b75ec:
    bVar1 = false;
  }
  else {
    FUN_008581b0();
    bVar4 = true;
    local_4 = 0;
    cVar2 = FUN_0085e6c0();
    bVar1 = true;
    if (cVar2 != '\0') goto LAB_008b75ec;
  }
  local_4 = 0xffffffff;
  if ((bVar4) && (_free(local_d0), 7 < local_d4)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (bVar1) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 != '\0') {
      FUN_004325b6();
      local_4 = 1;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,2);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 3;
      FUN_0043c211();
      local_4._0_1_ = 4;
      FUN_008581b0();
      FUN_00432231();
      local_4._0_1_ = 6;
      FUN_008423d0();
      local_4._0_1_ = 7;
      GetLastError();
      FUN_0084d140();
      local_4._0_1_ = 8;
      FUN_00848860();
      local_4._0_1_ = 5;
      FUN_00842440();
      FUN_0040159c();
      FUN_0040159c();
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
    ExceptionList = local_c;
    return 0;
  }
LAB_008b77a8:
  FUN_008b68c0();
  ExceptionList = local_c;
  return 1;
}



undefined ** FUN_008b77d0(void)

{
  return &PTR_u_wxTimerHiddenWindowModule_03237710;
}



void FUN_008b77e0(int *param_1)

{
  char cVar1;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    cVar1 = (**(code **)(*param_1 + 0xc))();
    if (cVar1 == '\0') {
      FUN_00840480("..\\..\\src\\msw\\timer.cpp",0x9c,"wxProcessTimer","timer.IsRunning()",
                   L"bogus timer id");
    }
  }
  if (*(char *)(param_1 + 5) != '\0') {
    (**(code **)(*param_1 + 8))();
  }
                    // WARNING: Could not recover jumptable at 0x008b7833. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x10))();
  return;
}



undefined4 * FUN_008b7860(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxTimerHiddenWindowModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * FUN_008b78c0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd07ce;
  local_c = ExceptionList;
  if ((DAT_032bde10 & 1) == 0) {
    DAT_032bde10 = DAT_032bde10 | 1;
    local_4 = 0;
    ExceptionList = &local_c;
    DAT_032bde04 = FUN_00893ca0(100,DAT_0323f878 ^ (uint)&local_c);
    _DAT_032bde08 = 0;
    DAT_032bde00 = _calloc(DAT_032bde04,4);
    _atexit((_func_4879 *)&LAB_00c76dd0);
  }
  ExceptionList = local_c;
  return &DAT_032bde00;
}



uint FUN_008b7940(undefined4 param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  
  do {
    if (DAT_032bde14 != 0) {
      FUN_008b78c0();
      piVar1 = (int *)FUN_008b78c0();
      puVar2 = *(undefined4 **)(*piVar1 + (DAT_032bde14 % (uint)piVar1[1]) * 4);
      while( true ) {
        if (puVar2 == (undefined4 *)0x0) {
          puVar2 = &DAT_032bde14;
          FUN_008b78c0(&DAT_032bde14);
          puVar2 = (undefined4 *)FUN_009dbfa0(puVar2);
          *puVar2 = param_1;
          return DAT_032bde14;
        }
        if (puVar2[1] == DAT_032bde14) break;
        puVar2 = (undefined4 *)*puVar2;
      }
    }
    DAT_032bde14 = DAT_032bde14 + 1;
  } while( true );
}



LRESULT FUN_008b79b0(HWND param_1,UINT param_2,uint param_3,LPARAM param_4)

{
  int *piVar1;
  LRESULT LVar2;
  undefined4 *puVar3;
  
  if (param_2 == 0x113) {
    piVar1 = (int *)FUN_008b78c0();
    for (puVar3 = *(undefined4 **)(*piVar1 + (param_3 % (uint)piVar1[1]) * 4);
        puVar3 != (undefined4 *)0x0; puVar3 = (undefined4 *)*puVar3) {
      if (puVar3[1] == param_3) goto LAB_008b79ed;
    }
    puVar3 = (undefined4 *)0x0;
LAB_008b79ed:
    FUN_008b78c0();
    if (puVar3 != (undefined4 *)0x0) {
      FUN_008b77e0(puVar3[2]);
      return 0;
    }
  }
  LVar2 = DefWindowProcW(param_1,param_2,param_3,param_4);
  return LVar2;
}



void __fastcall FUN_008b7a30(int param_1)

{
  if (DAT_032bddf8 == (HWND)0x0) {
    DAT_032bddf8 = (HWND)FUN_008963e0(&DAT_032bddfc,PTR_u_wxTimerHiddenWindow_0323770c,FUN_008b79b0)
    ;
  }
  KillTimer(DAT_032bddf8,*(UINT_PTR *)(param_1 + 0x18));
  FUN_008b78c0();
  FUN_009115c0((undefined4 *)(param_1 + 0x18));
  *(undefined4 *)(param_1 + 0x18) = 0;
  return;
}



undefined4 __fastcall FUN_008b7a80(int param_1)

{
  char cVar1;
  undefined4 uVar2;
  UINT_PTR UVar3;
  int iVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7981;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_008a6460();
  if (cVar1 != '\0') {
    uVar2 = FUN_008b7940();
    *(undefined4 *)(param_1 + 0x18) = uVar2;
    if (DAT_032bddf8 == (HWND)0x0) {
      DAT_032bddf8 = (HWND)FUN_008963e0();
    }
    UVar3 = SetTimer(DAT_032bddf8,*(UINT_PTR *)(param_1 + 0x18),*(UINT *)(param_1 + 0x10),
                     (TIMERPROC)0x0);
    if (UVar3 != 0) {
      ExceptionList = local_c;
      return 1;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_0043c211();
      uStack_4._0_1_ = 3;
      FUN_008423d0();
      uStack_4._0_1_ = 4;
      GetLastError();
      FUN_0084d140();
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4._0_1_ = 3;
      FUN_00842440();
      FUN_0040159c();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_008b7c70(void)

{
  char cVar1;
  BOOL BVar2;
  HINSTANCE hInstance;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd86c9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032bddf8 != (HWND)0x0) {
    BVar2 = DestroyWindow(DAT_032bddf8);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    DAT_032bddf8 = (HWND)0x0;
  }
  if (DAT_032bddfc != (LPCWSTR)0x0) {
    hInstance = (HINSTANCE)FUN_008a65e0();
    BVar2 = UnregisterClassW(DAT_032bddfc,hInstance);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 2;
        FUN_008423d0();
        uStack_4._0_1_ = 3;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = CONCAT31(uStack_4._1_3_,2);
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    DAT_032bddfc = (LPCWSTR)0x0;
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_008b7e90(undefined4 *param_1)

{
  FUN_00890670();
  *(undefined *)(param_1 + 4) = 0;
  param_1[3] = 0;
  *param_1 = wxMSWEventLoopBase::vftable;
  return param_1;
}



bool FUN_008b7eb0(void)

{
  BOOL BVar1;
  tagMSG local_1c;
  
  BVar1 = PeekMessageW(&local_1c,(HWND)0x0,0,0,0);
  return BVar1 != 0;
}



void thunk_FUN_0086c4e0(void)

{
  char cVar1;
  BOOL BVar2;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  BVar2 = PostThreadMessageW(DAT_032bdb68,0,0,0);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = pvStack_c;
  return;
}



LRESULT DispatchMessageW(MSG *lpMsg)

{
  LRESULT LVar1;
  
                    // WARNING: Could not recover jumptable at 0x008b7ee0. Too many branches
                    // WARNING: Treating indirect jump as call
  LVar1 = DispatchMessageW(lpMsg);
  return LVar1;
}



void __thiscall FUN_008b7ef0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  FUN_00840d00(param_2,param_1,1);
  uVar1 = FUN_008854f0(param_1);
  FUN_0083fe90(param_1_00,uVar1);
  return;
}



undefined4 FUN_008b7f30(LPMSG param_1)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = GetMessageW(param_1,(HWND)0x0,0,0);
  if (BVar2 != 0) {
    if (BVar2 != -1) {
      ExceptionList = local_c;
      return 1;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return 0;
}



uint FUN_008b8050(LPMSG param_1,DWORD param_2)

{
  char cVar1;
  BOOL BVar2;
  DWORD DVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = PeekMessageW(param_1,(HWND)0x0,0,0,1);
  if (BVar2 == 0) {
    DVar3 = MsgWaitForMultipleObjects(0,(HANDLE *)0x0,0,param_2,0x4ff);
    if (DVar3 == 0) {
      BVar2 = PeekMessageW(param_1,(HWND)0x0,0,0,1);
      if (BVar2 != 0) goto LAB_008b8179;
    }
    else if (DVar3 != 0x102) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0083fbe0();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        FUN_008b7ef0();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    ExceptionList = local_c;
    return 0xffffffff;
  }
LAB_008b8179:
  ExceptionList = local_c;
  return (uint)(param_1->message != 0x12);
}



uint __fastcall FUN_008b81a0(int *param_1)

{
  uint uVar1;
  undefined local_1c [28];
  
  uVar1 = FUN_008b7f30(local_1c);
  if ((char)uVar1 == '\0') {
    return uVar1;
  }
  (**(code **)(*param_1 + 0x3c))(local_1c);
  return (uint)(*(char *)(param_1 + 4) == '\0');
}



uint __thiscall FUN_008b81e0(int *param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined local_1c [28];
  
  uVar1 = FUN_008b8050(local_1c,param_1);
  if (uVar1 == 1) {
    (**(code **)(*param_1_00 + 0x3c))(local_1c);
    uVar1 = (uint)(*(char *)(param_1_00 + 4) == '\0');
  }
  return uVar1;
}



undefined ** FUN_008b8220(void)

{
  return &PTR_u_wxExecuteModule_0323772c;
}



undefined4 * FUN_008b8230(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxExecuteModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_008b8290(void)

{
  uint nCount;
  char cVar1;
  BOOL BVar2;
  DWORD DVar3;
  HINSTANCE hInstance;
  uint uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd082f;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032bde1c != (HANDLE)0x0) {
    BVar2 = SetEvent(DAT_032bde1c);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        FUN_008854f0();
        FUN_0083fe90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    CloseHandle(DAT_032bde1c);
    nCount = DAT_032bde20;
    DAT_032bde1c = (HANDLE)0x0;
    if (DAT_032bde20 != 0) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bde20 == 0)) {
        FUN_008402e0();
      }
      DVar3 = WaitForMultipleObjects(nCount,DAT_032bde28,1,3000);
      if (DVar3 == 0x102) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 2;
          FUN_008423d0();
          uStack_4._0_1_ = 3;
          FUN_008854f0();
          FUN_0083fe90();
          uStack_4 = CONCAT31(uStack_4._1_3_,2);
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      uVar4 = 0;
      if (nCount != 0) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bde20 <= uVar4)) {
            FUN_008402e0();
          }
          CloseHandle(DAT_032bde28[uVar4]);
          uVar4 = uVar4 + 1;
        } while (uVar4 < nCount);
      }
      _free(DAT_032bde28);
      DAT_032bde28 = (HANDLE *)0x0;
      _DAT_032bde24 = 0;
      DAT_032bde20 = 0;
    }
  }
  if (DAT_032bde18 != 0) {
    hInstance = (HINSTANCE)FUN_008a65e0();
    BVar2 = UnregisterClassW((LPCWSTR)PTR_u__wxExecute_Internal_Class_03237728,hInstance);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 4;
        FUN_008423d0();
        uStack_4._0_1_ = 5;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = CONCAT31(uStack_4._1_3_,4);
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    DAT_032bde18 = 0;
  }
  ExceptionList = local_c;
  return;
}



undefined ** FUN_008b85f0(void)

{
  return &PTR_u_wxVariant_03237f48;
}



undefined4 FUN_008b8600(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\variant.cpp",0x6b,"wxVariant::CreateRefData","Assert failure"
                 ,"wxVariant::CreateRefData() cannot be implemented");
  }
  return 0;
}



void FUN_008b8630(int *param_1)

{
  (**(code **)(*param_1 + 0x20))();
  return;
}



void __thiscall FUN_008b8640(int param_1_00,undefined4 param_1)

{
  FUN_0083e850();
  *(undefined4 *)(param_1_00 + 4) = param_1;
  return;
}



undefined4 * __thiscall FUN_008b8660(undefined4 *param_1_00,undefined4 param_1)

{
  *param_1_00 = wxAnyToVariantRegistration::vftable;
  param_1_00[1] = param_1;
  FUN_00897b20(param_1_00);
  return param_1_00;
}



void __fastcall FUN_008b8680(undefined4 *param_1)

{
  *param_1 = wxAnyToVariantRegistration::vftable;
  return;
}



undefined FUN_008b8690(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x269,"wxVariantDataBool::Read","Assert failure"
                 ,L"Unimplemented");
  }
  return 0;
}



undefined FUN_008b86c0(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x2f3,"wxVariantDataChar::Read","Assert failure"
                 ,L"Unimplemented");
  }
  return 0;
}



void __fastcall FUN_008b86f0(int param_1)

{
  if (*(int *)(param_1 + 8) != 0) {
                    // WARNING: Could not recover jumptable at 0x008b86fe. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)**(undefined4 **)(param_1 + 8))();
    return;
  }
  return;
}



undefined FUN_008b8710(void)

{
  return 0;
}



undefined FUN_008b8720(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x673,"wxVariantDataLongLong::Read",
                 "Assert failure",L"Unimplemented");
  }
  return 0;
}



undefined FUN_008b8750(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x73b,"wxVariantDataULongLong::Read",
                 "Assert failure",L"Unimplemented");
  }
  return 0;
}



undefined FUN_008b8780(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x832,"wxVariantDataList::Read","Assert failure"
                 ,L"Unimplemented");
  }
  return 0;
}



undefined FUN_008b87b0(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x83a,"wxVariantDataList::Read","Assert failure"
                 ,L"Unimplemented");
  }
  return 0;
}



undefined4 * __thiscall FUN_008b87e0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxAnyToVariantRegistration::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_008b8800(undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd0861;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if (param_2 != 0) {
    FUN_00855400(param_1);
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall
FUN_008b8860(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxwxVariantListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __thiscall FUN_008b88e0(undefined4 *param_1_00,int param_1)

{
  undefined4 uVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0888;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  uVar1 = *(undefined4 *)(param_1 + 0x14);
  *param_1_00 = wxListBase::vftable;
  FUN_0086ad40(uVar1);
  local_4 = 0;
  *param_1_00 = wxAnyList::vftable;
  FUN_0086b130(uVar2);
  FUN_0086b7d0(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_008b8950(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxwxAnyListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __thiscall
FUN_008b89d0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,int param_3,
            undefined4 param_4)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  param_1_00[1] = param_2;
  if (((param_3 != 0) && (uVar1 = FUN_00886c70(param_4), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 0x20) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<unsigned __int64>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_008b8a40(int param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0xc);
  if (puVar2 != (undefined4 *)0x0) {
    uVar1 = *(undefined4 *)(param_1 + 8);
    puVar2[1] = 1;
    *puVar2 = wxVariantDataLong::vftable;
    puVar2[2] = uVar1;
    return puVar2;
  }
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_008b8a70(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined **local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10;
  undefined local_f;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd08c0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_20 = wxConvAuto::vftable;
  local_1c = 0;
  local_14 = 0xffffffff;
  local_10 = 0;
  local_f = 0;
  local_18 = 0;
  local_4 = 0;
  FUN_008be4b0(param_1,0,&local_20);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00891400(uVar1);
  FUN_008be650(*(undefined4 *)(param_1_00 + 8));
  local_4 = 0xffffffff;
  FUN_008be4f0();
  ExceptionList = local_c;
  return 1;
}



undefined4 * __fastcall FUN_008b8b20(int param_1)

{
  undefined8 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 != (undefined4 *)0x0) {
    uVar1 = *(undefined8 *)(param_1 + 8);
    puVar2[1] = 1;
    *(undefined8 *)(puVar2 + 2) = uVar1;
    *puVar2 = wxVariantDoubleData::vftable;
    return puVar2;
  }
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_008b8b50(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined **local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10;
  undefined local_f;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd08c0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_20 = wxConvAuto::vftable;
  local_1c = 0;
  local_14 = 0xffffffff;
  local_10 = 0;
  local_f = 0;
  local_18 = 0;
  local_4 = 0;
  FUN_008be4b0(param_1,0,&local_20);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00891400(uVar1);
  FUN_008be830(*(undefined8 *)(param_1_00 + 8));
  local_4 = 0xffffffff;
  FUN_008be4f0();
  ExceptionList = local_c;
  return 1;
}



undefined4 * __fastcall FUN_008b8c00(int param_1)

{
  undefined uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0xc);
  if (puVar2 != (undefined4 *)0x0) {
    uVar1 = *(undefined *)(param_1 + 8);
    puVar2[1] = 1;
    *puVar2 = wxVariantDataBool::vftable;
    *(undefined *)(puVar2 + 2) = uVar1;
    return puVar2;
  }
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_008b8c30(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined **local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10;
  undefined local_f;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd08c0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_20 = wxConvAuto::vftable;
  local_1c = 0;
  local_14 = 0xffffffff;
  local_10 = 0;
  local_f = 0;
  local_18 = 0;
  local_4 = 0;
  FUN_008be4b0(param_1,0,&local_20);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00891400(uVar1);
  FUN_008be740(*(undefined *)(param_1_00 + 8));
  local_4 = 0xffffffff;
  FUN_008be4f0();
  ExceptionList = local_c;
  return 1;
}



undefined4 * __fastcall FUN_008b8ce0(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0xc);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar1 = puVar2 + 2;
    puVar2[1] = 1;
    *puVar2 = wxVariantDataChar::vftable;
    *puVar1 = 0;
    if ((undefined4 *)(param_1 + 8) != puVar1) {
      *puVar1 = *(undefined4 *)(param_1 + 8);
      return puVar2;
    }
  }
  return puVar2;
}



undefined4 __thiscall FUN_008b8d20(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined **local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10;
  undefined local_f;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd08c0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_20 = wxConvAuto::vftable;
  local_1c = 0;
  local_14 = 0xffffffff;
  local_10 = 0;
  local_f = 0;
  local_18 = 0;
  local_4 = 0;
  FUN_008be4b0(param_1,0,&local_20);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00891400(uVar1);
  FUN_008bef60(*(undefined2 *)(param_1_00 + 8));
  local_4 = 0xffffffff;
  FUN_008be4f0();
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_008b8dd0(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined **local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10;
  undefined local_f;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd08c0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_20 = wxConvAuto::vftable;
  local_1c = 0;
  local_14 = 0xffffffff;
  local_10 = 0;
  local_f = 0;
  local_18 = 0;
  local_4 = 0;
  FUN_008be4b0(param_1,0,&local_20);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00891400(uVar1);
  FUN_008bed50(param_1_00 + 8);
  local_4 = 0xffffffff;
  FUN_008be4f0();
  ExceptionList = local_c;
  return 1;
}



undefined4 * __fastcall FUN_008b8e80(int param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0xc);
  if (puVar2 != (undefined4 *)0x0) {
    uVar1 = *(undefined4 *)(param_1 + 8);
    puVar2[1] = 1;
    *puVar2 = wxVariantDataWxObjectPtr::vftable;
    puVar2[2] = uVar1;
    return puVar2;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_008b8eb0(int param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0xc);
  if (puVar2 != (undefined4 *)0x0) {
    uVar1 = *(undefined4 *)(param_1 + 8);
    puVar2[1] = 1;
    *puVar2 = wxVariantDataVoidPtr::vftable;
    puVar2[2] = uVar1;
    return puVar2;
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_008b8ee0(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 1;
    *puVar1 = wxVariantDataDateTime::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0x80000000;
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    puVar1[3] = *(undefined4 *)(param_1 + 0xc);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * __thiscall FUN_008b8f20(undefined4 *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd08f3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  local_4 = 0;
  *param_1_00 = wxVariantDataArrayString::vftable;
  FUN_00853ce0(0);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00855070(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_008b8fa0(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x18);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008b8f20(param_1 + 8);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_008b9010(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd0918;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00853f30(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_008b9060(int param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 != (undefined4 *)0x0) {
    uVar1 = *(undefined4 *)(param_1 + 8);
    puVar2[3] = *(undefined4 *)(param_1 + 0xc);
    puVar2[1] = 1;
    *puVar2 = wxVariantDataLongLong::vftable;
    puVar2[2] = uVar1;
    return puVar2;
  }
  return (undefined4 *)0x0;
}



undefined __fastcall FUN_008b90a0(int param_1)

{
  char cVar1;
  undefined4 local_8;
  undefined4 local_4;
  
  cVar1 = FUN_00850af0(&local_8,10);
  if (cVar1 == '\0') {
    return 0;
  }
  *(undefined4 *)(param_1 + 8) = local_8;
  *(undefined4 *)(param_1 + 0xc) = local_4;
  return 1;
}



undefined4 * __fastcall FUN_008b90e0(int param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 != (undefined4 *)0x0) {
    uVar1 = *(undefined4 *)(param_1 + 8);
    puVar2[3] = *(undefined4 *)(param_1 + 0xc);
    puVar2[1] = 1;
    *puVar2 = wxVariantDataULongLong::vftable;
    puVar2[2] = uVar1;
    return puVar2;
  }
  return (undefined4 *)0x0;
}



undefined __fastcall FUN_008b9120(int param_1)

{
  char cVar1;
  undefined4 local_8;
  undefined4 local_4;
  
  cVar1 = FUN_00850bd0(&local_8,10);
  if (cVar1 == '\0') {
    return 0;
  }
  *(undefined4 *)(param_1 + 8) = local_8;
  *(undefined4 *)(param_1 + 0xc) = local_4;
  return 1;
}



void __fastcall FUN_008b9160(int param_1)

{
  int iVar1;
  
  for (iVar1 = *(int *)(param_1 + 0x14); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if (*(int **)(iVar1 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
    }
  }
  FUN_0086b130();
  return;
}



undefined4 FUN_008b91a0(void)

{
  return DAT_032bdc38;
}



undefined4 FUN_008b91b0(void)

{
  return DAT_032bdc34;
}



undefined4 FUN_008b91c0(void)

{
  return DAT_032bdc3c;
}



undefined4 FUN_008b91d0(void)

{
  return DAT_032bdc40;
}



undefined4 FUN_008b91e0(void)

{
  return DAT_032bdc44;
}



undefined4 FUN_008b91f0(void)

{
  return DAT_032bdc48;
}



undefined4 FUN_008b9200(void)

{
  return DAT_032bdc2c;
}



undefined4 FUN_008b9210(void)

{
  return DAT_032bdc30;
}



undefined4 * __thiscall FUN_008b9220(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd094b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  puVar1 = param_1_00 + 1;
  *param_1_00 = wxPrivate::wxAnyValueTypeOpsGeneric<class_wxAnyList>::DataHolder<class_wxAnyList>::
                vftable;
  *puVar1 = wxListBase::vftable;
  FUN_0086ad40(0);
  *puVar1 = wxAnyList::vftable;
  local_4 = 0;
  if (param_1 != puVar1) {
    FUN_0086b130(uVar2);
    FUN_0086b7d0(param_1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_008b92a0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxPrivate::wxAnyValueTypeOpsGeneric<class_wxAnyList>::DataHolder<class_wxAnyList>::
                vftable;
  FUN_0086ade0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



float10 __fastcall FUN_008b92d0(double *param_1)

{
  undefined4 uVar1;
  bool bVar2;
  type_info *ptVar3;
  type_info *this;
  
  uVar1 = DAT_032bdc38;
  ptVar3 = (type_info *)___RTtypeid(*(undefined4 *)(param_1 + 2));
  this = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(this,ptVar3);
  if ((!bVar2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  return (float10)*param_1;
}



void __thiscall FUN_008b9330(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  bool bVar2;
  type_info *ptVar3;
  type_info *this;
  
  uVar1 = DAT_032bde3c;
  ptVar3 = (type_info *)___RTtypeid(param_1_00[4]);
  this = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(this,ptVar3);
  if ((!bVar2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  *param_1 = *param_1_00;
  return;
}



undefined4 __fastcall FUN_008b93a0(undefined4 *param_1)

{
  undefined4 uVar1;
  bool bVar2;
  type_info *ptVar3;
  type_info *this;
  
  uVar1 = DAT_032bde38;
  ptVar3 = (type_info *)___RTtypeid(param_1[4]);
  this = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(this,ptVar3);
  if ((!bVar2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  return *param_1;
}



undefined4 __fastcall FUN_008b9400(undefined4 *param_1)

{
  undefined4 uVar1;
  bool bVar2;
  type_info *ptVar3;
  type_info *this;
  
  uVar1 = DAT_032bde34;
  ptVar3 = (type_info *)___RTtypeid(param_1[4]);
  this = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(this,ptVar3);
  if ((!bVar2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  return *param_1;
}



undefined4 __thiscall FUN_008b9460(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  bool bVar2;
  type_info *ptVar3;
  type_info *this;
  
  uVar1 = DAT_032bde30;
  ptVar3 = (type_info *)___RTtypeid(*(undefined4 *)(param_1_00 + 0x10));
  this = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(this,ptVar3);
  if ((!bVar2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  FUN_00855400(param_1_00);
  return param_1;
}



undefined8 __fastcall FUN_008b94e0(undefined8 *param_1)

{
  undefined4 uVar1;
  bool bVar2;
  type_info *ptVar3;
  type_info *this;
  
  uVar1 = DAT_032bdc2c;
  ptVar3 = (type_info *)___RTtypeid(*(undefined4 *)(param_1 + 2));
  this = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(this,ptVar3);
  if ((!bVar2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  return *param_1;
}



undefined8 __fastcall FUN_008b9540(undefined8 *param_1)

{
  undefined4 uVar1;
  bool bVar2;
  type_info *ptVar3;
  type_info *this;
  
  uVar1 = DAT_032bdc30;
  ptVar3 = (type_info *)___RTtypeid(*(undefined4 *)(param_1 + 2));
  this = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(this,ptVar3);
  if ((!bVar2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  return *param_1;
}



undefined4 __thiscall FUN_008b95a0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  bool bVar2;
  type_info *ptVar3;
  type_info *this;
  
  uVar1 = DAT_032bde2c;
  ptVar3 = (type_info *)___RTtypeid(param_1_00[4]);
  this = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(this,ptVar3);
  if ((!bVar2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  FUN_008b88e0(*param_1_00 + 4);
  return param_1;
}



void FUN_008b9620(undefined4 *param_1,undefined4 *param_2)

{
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *param_1;
  }
  return;
}



void FUN_008b9640(undefined4 param_1,undefined4 param_2)

{
  FUN_008b8800(param_1,param_2);
  return;
}



undefined4 __thiscall FUN_008b9660(int param_1_00,int *param_1)

{
  int iVar1;
  
  (**(code **)(*(int *)param_1[4] + 8))(param_1);
  param_1[4] = DAT_032bdc2c;
  iVar1 = *(int *)(param_1_00 + 8);
  *param_1 = iVar1;
  param_1[1] = iVar1 >> 0x1f;
  return CONCAT31((int3)((uint)iVar1 >> 8),1);
}



undefined4 __thiscall FUN_008b9690(int param_1_00,undefined8 *param_1)

{
  undefined4 uVar1;
  
  (**(code **)(**(int **)(param_1 + 2) + 8))(param_1);
  uVar1 = DAT_032bdc38;
  *param_1 = *(undefined8 *)(param_1_00 + 8);
  *(undefined4 *)(param_1 + 2) = uVar1;
  return 1;
}



undefined4 * FUN_008b96c0(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  float10 fVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    fVar3 = (float10)FUN_008b92d0(0);
    *(double *)(puVar1 + 2) = (double)fVar3;
    puVar1[1] = 1;
    *puVar1 = wxVariantDoubleData::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 __thiscall FUN_008b9730(int param_1_00,undefined4 *param_1)

{
  (**(code **)(*(int *)param_1[4] + 8))(param_1);
  param_1[4] = DAT_032bde3c;
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  return 1;
}



undefined4 * FUN_008b9760(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined local_10 [4];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd097b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0xc);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    puVar3 = (undefined4 *)FUN_008b9330(local_10,0);
    puVar1 = puVar2 + 2;
    puVar2[1] = 1;
    *puVar2 = wxVariantDataChar::vftable;
    *puVar1 = 0;
    if (puVar3 != puVar1) {
      *puVar1 = *puVar3;
    }
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_008b9800(int param_1_00,undefined4 *param_1)

{
  (**(code **)(*(int *)param_1[4] + 8))(param_1);
  param_1[4] = DAT_032bde38;
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  return 1;
}



undefined4 * FUN_008b9830(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0xc);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    uVar2 = FUN_008b93a0(0);
    puVar1[2] = uVar2;
    puVar1[1] = 1;
    *puVar1 = wxVariantDataWxObjectPtr::vftable;
    puVar3 = puVar1;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 __thiscall FUN_008b98a0(int param_1_00,undefined4 *param_1)

{
  (**(code **)(*(int *)param_1[4] + 8))(param_1);
  param_1[4] = DAT_032bde34;
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  return 1;
}



undefined4 * FUN_008b98d0(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0xc);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    uVar2 = FUN_008b9400(0);
    puVar1[2] = uVar2;
    puVar1[1] = 1;
    *puVar1 = wxVariantDataVoidPtr::vftable;
    puVar3 = puVar1;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 __thiscall FUN_008b9940(undefined4 param_1_00,byte param_1)

{
  FUN_008b9010();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_008b9960(int param_1_00,int param_1)

{
  (**(code **)(**(int **)(param_1 + 0x10) + 8))(param_1);
  *(undefined4 *)(param_1 + 0x10) = DAT_032bde30;
  FUN_008b8800(param_1_00 + 8,param_1);
  return 1;
}



undefined4 FUN_008b9990(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined local_1c [16];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd09c4;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x18);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_008b9460(local_1c,0);
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar3 = FUN_008b8f20(uVar3);
  }
  local_4 = 0xffffffff;
  if (pvVar2 != (void *)0x0) {
    FUN_00853f30(uVar1);
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 * __thiscall FUN_008b9a30(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxRefCounter::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_008b9a50(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar1 = *(undefined4 *)(param_1_00 + 0xc);
  uVar2 = *(undefined4 *)(param_1_00 + 8);
  (**(code **)(*(int *)param_1[4] + 8))(param_1);
  param_1[4] = DAT_032bdc2c;
  *param_1 = uVar2;
  param_1[1] = uVar1;
  return 1;
}



undefined4 * FUN_008b9a80(void)

{
  undefined4 *puVar1;
  undefined8 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    uVar2 = FUN_008b94e0(0);
    puVar1[1] = 1;
    *puVar1 = wxVariantDataLongLong::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    *(undefined8 *)(puVar1 + 2) = uVar2;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_008b9b10(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined **local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10;
  undefined local_f;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd08c0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_20 = wxConvAuto::vftable;
  local_1c = 0;
  local_14 = 0xffffffff;
  local_10 = 0;
  local_f = 0;
  local_18 = 0;
  local_4 = 0;
  FUN_008be4b0(param_1,0,&local_20);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00891400(uVar1);
  FUN_008be650(*(undefined4 *)(param_1_00 + 8));
  uVar2 = __allshr();
  FUN_008be650(uVar2);
  local_4 = 0xffffffff;
  FUN_008be4f0();
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_008b9bd0(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar1 = *(undefined4 *)(param_1_00 + 0xc);
  uVar2 = *(undefined4 *)(param_1_00 + 8);
  (**(code **)(*(int *)param_1[4] + 8))(param_1);
  param_1[4] = DAT_032bdc30;
  *param_1 = uVar2;
  param_1[1] = uVar1;
  return 1;
}



undefined4 * FUN_008b9c00(void)

{
  undefined4 *puVar1;
  undefined8 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    uVar2 = FUN_008b9540(0);
    puVar1[1] = 1;
    *puVar1 = wxVariantDataULongLong::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0;
    *(undefined8 *)(puVar1 + 2) = uVar2;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_008b9c90(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined **local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10;
  undefined local_f;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd08c0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_20 = wxConvAuto::vftable;
  local_1c = 0;
  local_14 = 0xffffffff;
  local_10 = 0;
  local_f = 0;
  local_18 = 0;
  local_4 = 0;
  FUN_008be4b0(param_1,0,&local_20);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00891400(uVar1);
  FUN_008be650(*(undefined4 *)(param_1_00 + 8));
  uVar2 = __aullshr();
  FUN_008be650(uVar2);
  local_4 = 0xffffffff;
  FUN_008be4f0();
  ExceptionList = local_c;
  return 1;
}



void __fastcall FUN_008b9d50(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd09f3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxVariantDataList::vftable;
  local_4 = 1;
  FUN_008b9160(uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_0086ade0();
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 FUN_008b9db0(void)

{
  return DAT_032bde3c;
}



undefined4 FUN_008b9dc0(void)

{
  return DAT_032bde38;
}



undefined4 FUN_008b9dd0(void)

{
  return DAT_032bde34;
}



undefined4 FUN_008b9de0(void)

{
  return DAT_032bde30;
}



undefined4 FUN_008b9df0(void)

{
  return DAT_032bde2c;
}



void FUN_008b9e00(void)

{
  FUN_00853f30();
  return;
}



void FUN_008b9e10(undefined4 param_1,undefined4 *param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x1c);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008b9220(param_1);
    *param_2 = uVar2;
    ExceptionList = local_c;
    return;
  }
  *param_2 = 0;
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_008b9e90(undefined *param_1)

{
  undefined4 uVar1;
  bool bVar2;
  type_info *ptVar3;
  type_info *this;
  undefined3 extraout_var;
  undefined3 extraout_var_00;
  undefined3 uVar4;
  
  uVar1 = DAT_032bdc34;
  ptVar3 = (type_info *)___RTtypeid(*(undefined4 *)(param_1 + 0x10));
  this = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(this,ptVar3);
  uVar4 = extraout_var;
  if ((!bVar2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
    uVar4 = extraout_var_00;
  }
  return CONCAT31(uVar4,*param_1);
}



undefined4 __fastcall FUN_008b9ef0(undefined4 *param_1)

{
  undefined4 uVar1;
  bool bVar2;
  type_info *ptVar3;
  type_info *this;
  
  uVar1 = DAT_032bdc40;
  ptVar3 = (type_info *)___RTtypeid(param_1[4]);
  this = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(this,ptVar3);
  if ((!bVar2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  return *param_1;
}



undefined4 __fastcall FUN_008b9f50(undefined4 *param_1)

{
  undefined4 uVar1;
  bool bVar2;
  type_info *ptVar3;
  type_info *this;
  
  uVar1 = DAT_032bdc44;
  ptVar3 = (type_info *)___RTtypeid(param_1[4]);
  this = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(this,ptVar3);
  if ((!bVar2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  return *param_1;
}



void __thiscall FUN_008b9fb0(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  bool bVar2;
  type_info *ptVar3;
  type_info *this;
  
  uVar1 = DAT_032bdc48;
  ptVar3 = (type_info *)___RTtypeid(param_1_00[4]);
  this = (type_info *)___RTtypeid(uVar1);
  bVar2 = type_info::operator==(this,ptVar3);
  if ((!bVar2) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  uVar1 = param_1_00[1];
  *param_1 = *param_1_00;
  param_1[1] = uVar1;
  return;
}



void FUN_008ba020(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bde3c;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_008ba050(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bde38;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_008ba080(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bde34;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_008ba0b0(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bde30;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



undefined4 * __thiscall FUN_008ba0e0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxAnyValueType::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_008ba100(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bde2c;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



undefined4 __thiscall FUN_008ba130(int param_1_00,int param_1)

{
  undefined4 uVar1;
  
  if (7 < *(uint *)(param_1 + 0x18)) {
    uVar1 = FUN_00a4b97e(*(undefined4 *)(param_1 + 4));
    *(undefined4 *)(param_1_00 + 8) = uVar1;
    return 1;
  }
  uVar1 = FUN_00a4b97e(param_1 + 4);
  *(undefined4 *)(param_1_00 + 8) = uVar1;
  return 1;
}



undefined4 __thiscall FUN_008ba170(int param_1_00,undefined *param_1)

{
  (**(code **)(**(int **)(param_1 + 0x10) + 8))(param_1);
  *(undefined4 *)(param_1 + 0x10) = DAT_032bdc34;
  *param_1 = *(undefined *)(param_1_00 + 8);
  return 1;
}



undefined4 * FUN_008ba1a0(void)

{
  undefined uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0xc);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    uVar1 = FUN_008b9e90(0);
    *(undefined *)(puVar2 + 2) = uVar1;
    puVar2[1] = 1;
    *puVar2 = wxVariantDataBool::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 __thiscall FUN_008ba210(int param_1_00,int param_1)

{
  int iVar1;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    param_1 = param_1 + 4;
  }
  else {
    param_1 = *(int *)(param_1 + 4);
  }
  iVar1 = FUN_00a4b97e(param_1);
  *(bool *)(param_1_00 + 8) = iVar1 != 0;
  return 1;
}



undefined4 __thiscall FUN_008ba240(int param_1_00,undefined4 *param_1)

{
  (**(code **)(*(int *)param_1[4] + 8))(param_1);
  param_1[4] = DAT_032bdc48;
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  param_1[1] = *(undefined4 *)(param_1_00 + 0xc);
  return 1;
}



undefined4 * FUN_008ba270(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a1b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    puVar2 = (undefined4 *)FUN_008b9fb0(local_14,0);
    puVar1[1] = 1;
    *puVar1 = wxVariantDataDateTime::vftable;
    puVar1[2] = 0;
    puVar1[3] = 0x80000000;
    puVar1[2] = *puVar2;
    puVar1[3] = puVar2[1];
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_008ba310(undefined4 param_1_00,byte param_1)

{
  FUN_008b9d50();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_008ba330(int *param_1,undefined4 param_2)

{
  FUN_008b9e10(*param_1 + 4,param_2);
  return;
}



undefined4 __thiscall FUN_008ba350(int param_1_00,undefined4 param_1)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  int local_10;
  int local_c;
  undefined local_8 [8];
  
  iVar2 = FUN_008507a0(L"Invalid");
  if (iVar2 == 0) {
    *(undefined4 *)(param_1_00 + 8) = DAT_032365a0;
    *(undefined4 *)(param_1_00 + 0xc) = DAT_032365a4;
    return 1;
  }
  local_10 = 0;
  local_c = 0;
  cVar1 = FUN_008745e0(param_1,&local_10);
  if (cVar1 != '\0') {
    piVar3 = (int *)FUN_0081b397(local_8);
    iVar2 = piVar3[1];
    if ((local_10 != -4) && ((local_10 == 0 || (local_10 != *piVar3)))) {
      FUN_00a3fb10();
    }
    if (local_c == iVar2) {
      return 1;
    }
  }
  return 0;
}



undefined4 __thiscall FUN_008ba3f0(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  char cVar4;
  uint uVar5;
  int **ppiVar6;
  int **local_28;
  undefined **local_24;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a53;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  local_24 = wxListBase::vftable;
  FUN_0086ad40(0);
  local_24 = wxAnyList::vftable;
  iVar1 = *(int *)(param_1_00 + 0x14);
  local_4 = 0;
  for (; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    iVar2 = *(int *)(iVar1 + 8);
    ppiVar6 = (int **)operator_new(0x18);
    local_4._0_1_ = 1;
    local_28 = ppiVar6;
    if (ppiVar6 == (int **)0x0) {
      ppiVar6 = (int **)0x0;
    }
    else {
      ppiVar6[4] = DAT_032bdc50;
      piVar3 = *(int **)(iVar2 + 4);
      if ((piVar3 == (int *)0x0) ||
         (cVar4 = (**(code **)(*piVar3 + 0x24))(ppiVar6,uVar5), cVar4 == '\0')) {
        (**(code **)(*ppiVar6[4] + 8))(ppiVar6);
        if (*(int *)(iVar2 + 4) == 0) {
          ppiVar6[4] = DAT_032bdc50;
        }
        else {
          ppiVar6[4] = DAT_032bdc28;
          piVar3[1] = piVar3[1] + 1;
          *ppiVar6 = piVar3;
        }
      }
    }
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0086ad60(ppiVar6);
  }
  (**(code **)(**(int **)(param_1 + 0x10) + 8))(param_1);
  *(undefined4 *)(param_1 + 0x10) = DAT_032bde2c;
  FUN_008b9e10(&local_28,param_1);
  puStack_8 = (undefined *)0xffffffff;
  FUN_0086ade0();
  ExceptionList = pvStack_10;
  return 1;
}



void __fastcall FUN_008ba510(undefined4 *param_1)

{
  param_1[1] = 0;
  *param_1 = wxVariant::vftable;
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  param_1[9] = 0;
  return;
}



void __fastcall FUN_008ba540(undefined4 *param_1)

{
  *param_1 = wxVariant::vftable;
  _free((void *)param_1[9]);
  if (7 < (uint)param_1[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined4 __thiscall FUN_008ba590(int param_1_00,int *param_1)

{
  bool bVar1;
  int iVar2;
  bool bVar3;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar3 = false;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    (**(code **)(*param_1 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    local_4 = 0;
    bVar3 = true;
    iVar2 = FUN_008507a0(L"long");
    bVar1 = false;
    if (iVar2 != 0) goto LAB_008ba5ff;
  }
  bVar1 = true;
LAB_008ba5ff:
  local_4 = 0xffffffff;
  if (bVar3) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar1) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x12a,"wxVariantDataLong::Eq",
                 "(data.GetType() == wxT(\"long\"))",L"wxVariantDataLong::Eq: argument mismatch");
  }
  ExceptionList = local_c;
  return CONCAT31((int3)((uint)param_1[2] >> 8),param_1[2] == *(int *)(param_1_00 + 8));
}



undefined4 __thiscall FUN_008ba690(int param_1_00,int *param_1)

{
  bool bVar1;
  int iVar2;
  bool bVar3;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar3 = false;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    (**(code **)(*param_1 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    local_4 = 0;
    bVar3 = true;
    iVar2 = FUN_008507a0(L"double");
    bVar1 = false;
    if (iVar2 != 0) goto LAB_008ba6ff;
  }
  bVar1 = true;
LAB_008ba6ff:
  local_4 = 0xffffffff;
  if (bVar3) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar1) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x1c3,"wxVariantDoubleData::Eq",
                 "(data.GetType() == wxT(\"double\"))",L"wxVariantDoubleData::Eq: argument mismatch"
                );
  }
  if ((NAN(*(double *)(param_1_00 + 8)) || NAN(*(double *)(param_1 + 2))) !=
      (*(double *)(param_1_00 + 8) == *(double *)(param_1 + 2))) {
    ExceptionList = local_c;
    return 1;
  }
  ExceptionList = local_c;
  return 0;
}



bool __thiscall FUN_008ba7b0(int param_1_00,int *param_1)

{
  bool bVar1;
  int iVar2;
  bool bVar3;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar3 = false;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    (**(code **)(*param_1 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    local_4 = 0;
    bVar3 = true;
    iVar2 = FUN_008507a0(L"bool");
    bVar1 = false;
    if (iVar2 != 0) goto LAB_008ba81f;
  }
  bVar1 = true;
LAB_008ba81f:
  local_4 = 0xffffffff;
  if (bVar3) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar1) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x24f,"wxVariantDataBool::Eq",
                 "(data.GetType() == wxT(\"bool\"))",L"wxVariantDataBool::Eq: argument mismatch");
  }
  ExceptionList = local_c;
  return *(char *)(param_1 + 2) == *(char *)(param_1_00 + 8);
}



undefined4 __thiscall FUN_008ba8b0(int param_1_00,int *param_1)

{
  bool bVar1;
  int iVar2;
  bool bVar3;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar3 = false;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    (**(code **)(*param_1 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    local_4 = 0;
    bVar3 = true;
    iVar2 = FUN_008507a0(L"char");
    bVar1 = false;
    if (iVar2 != 0) goto LAB_008ba91f;
  }
  bVar1 = true;
LAB_008ba91f:
  local_4 = 0xffffffff;
  if (bVar3) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar1) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x2db,"wxVariantDataChar::Eq",
                 "(data.GetType() == wxT(\"char\"))",L"wxVariantDataChar::Eq: argument mismatch");
  }
  ExceptionList = local_c;
  return CONCAT31((int3)((uint)param_1[2] >> 8),param_1[2] == *(int *)(param_1_00 + 8));
}



undefined4 __fastcall FUN_008ba9b0(int param_1)

{
  ushort uVar1;
  int iVar2;
  ushort *puVar3;
  int *piVar4;
  int iVar5;
  undefined local_8 [8];
  
  piVar4 = (int *)FUN_0081b542(local_8,0);
  iVar2 = *piVar4;
  puVar3 = (ushort *)piVar4[1];
  if (iVar2 != -4) {
    if (iVar2 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(iVar2 + 0x18) < 8) {
      iVar5 = iVar2 + 4;
    }
    else {
      iVar5 = *(int *)(iVar2 + 4);
    }
    if ((ushort *)(iVar5 + *(int *)(iVar2 + 0x14) * 2) <= puVar3) {
      FUN_00a3fb10();
    }
  }
  uVar1 = *puVar3;
  *(uint *)(param_1 + 8) = (uint)uVar1;
  return CONCAT31((uint3)(byte)(uVar1 >> 8),1);
}



bool __thiscall FUN_008baa10(int param_1_00,int *param_1)

{
  bool bVar1;
  int iVar2;
  bool bVar3;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar3 = false;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    (**(code **)(*param_1 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    local_4 = 0;
    bVar3 = true;
    iVar2 = FUN_008507a0(L"string");
    bVar1 = false;
    if (iVar2 != 0) goto LAB_008baa7f;
  }
  bVar1 = true;
LAB_008baa7f:
  local_4 = 0xffffffff;
  if (bVar3) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar1) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x38a,"wxVariantDataString::Eq",
                 "(data.GetType() == wxT(\"string\"))",L"wxVariantDataString::Eq: argument mismatch"
                );
  }
  if (param_1[7] != *(int *)(param_1_00 + 0x1c)) {
    ExceptionList = local_c;
    return false;
  }
  iVar2 = FUN_00850760(param_1_00 + 8);
  ExceptionList = local_c;
  return iVar2 == 0;
}



undefined4 __thiscall FUN_008bab40(int *param_1_00,int *param_1)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  int iVar4;
  int iVar5;
  undefined4 local_58 [2];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0ae2;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar2 = false;
  bVar1 = false;
  local_58[0] = 0;
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_008babd4:
    bVar3 = true;
  }
  else {
    iVar4 = (**(code **)(*param_1_00 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffff98);
    puStack_8 = (undefined *)0x0;
    iVar5 = (**(code **)(*param_1 + 0x18))(local_58);
    uStack_4 = 1;
    bVar2 = true;
    bVar1 = true;
    local_58[0] = 3;
    if (*(int *)(iVar5 + 0x14) == *(int *)(iVar4 + 0x14)) {
      iVar4 = FUN_00850760(iVar4);
      if (iVar4 == 0) goto LAB_008babd4;
    }
    bVar3 = false;
  }
  if (bVar1) {
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
  }
  uStack_4 = 0xffffffff;
  if (bVar2) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar3) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x437,"wxVariantDataWxObjectPtr::Eq",
                 "data.GetType() == GetType()",L"wxVariantDataWxObjectPtr::Eq: argument mismatch");
  }
  ExceptionList = local_c;
  return CONCAT31((int3)((uint)param_1[2] >> 8),param_1[2] == param_1_00[2]);
}



undefined4 __thiscall FUN_008bacb0(int param_1_00,int *param_1)

{
  bool bVar1;
  int iVar2;
  bool bVar3;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar3 = false;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    (**(code **)(*param_1 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    local_4 = 0;
    bVar3 = true;
    iVar2 = FUN_008507a0(L"void*");
    bVar1 = false;
    if (iVar2 != 0) goto LAB_008bad1f;
  }
  bVar1 = true;
LAB_008bad1f:
  local_4 = 0xffffffff;
  if (bVar3) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar1) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x4b1,"wxVariantDataVoidPtr::Eq",
                 "data.GetType() == wxT(\"void*\")",L"wxVariantDataVoidPtr::Eq: argument mismatch");
  }
  ExceptionList = local_c;
  return CONCAT31((int3)((uint)param_1[2] >> 8),param_1[2] == *(int *)(param_1_00 + 8));
}



void __thiscall FUN_008badb0(int param_1_00,int *param_1)

{
  bool bVar1;
  int iVar2;
  bool bVar3;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar3 = false;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    (**(code **)(*param_1 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    local_4 = 0;
    bVar3 = true;
    iVar2 = FUN_008507a0(L"datetime");
    bVar1 = false;
    if (iVar2 != 0) goto LAB_008bae1f;
  }
  bVar1 = true;
LAB_008bae1f:
  local_4 = 0xffffffff;
  if (bVar3) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar1) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x524,"wxVariantDataDateTime::Eq",
                 "(data.GetType() == wxT(\"datetime\"))",
                 L"wxVariantDataDateTime::Eq: argument mismatch");
  }
  FUN_0086d0b0(param_1_00 + 8);
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008baeb0(int *param_1_00,int *param_1)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  int iVar4;
  int iVar5;
  undefined4 local_58 [2];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0ae2;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar2 = false;
  bVar1 = false;
  local_58[0] = 0;
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_008baf44:
    bVar3 = true;
  }
  else {
    iVar4 = (**(code **)(*param_1_00 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffff98);
    puStack_8 = (undefined *)0x0;
    iVar5 = (**(code **)(*param_1 + 0x18))(local_58);
    uStack_4 = 1;
    bVar2 = true;
    bVar1 = true;
    local_58[0] = 3;
    if (*(int *)(iVar5 + 0x14) == *(int *)(iVar4 + 0x14)) {
      iVar4 = FUN_00850760(iVar4);
      if (iVar4 == 0) goto LAB_008baf44;
    }
    bVar3 = false;
  }
  if (bVar1) {
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
  }
  uStack_4 = 0xffffffff;
  if (bVar2) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar3) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x5a9,"wxVariantDataArrayString::Eq",
                 "data.GetType() == GetType()",L"wxVariantDataArrayString::Eq: argument mismatch");
  }
  FUN_00853e60(param_1_00 + 2);
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008bb020(int param_1_00,int *param_1)

{
  bool bVar1;
  int iVar2;
  bool bVar3;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar3 = false;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    (**(code **)(*param_1 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    local_4 = 0;
    bVar3 = true;
    iVar2 = FUN_008507a0(L"longlong");
    bVar1 = false;
    if (iVar2 != 0) goto LAB_008bb08f;
  }
  bVar1 = true;
LAB_008bb08f:
  local_4 = 0xffffffff;
  if (bVar3) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar1) {
    FUN_008402e0("..\\..\\src\\common\\variant.cpp",0x655,"wxVariantDataLongLong::Eq",
                 "(data.GetType() == wxS(\"longlong\"))",
                 "wxVariantDataLongLong::Eq: argument mismatch");
  }
  if ((param_1[2] == *(int *)(param_1_00 + 8)) && (param_1[3] == *(int *)(param_1_00 + 0xc))) {
    ExceptionList = local_c;
    return 1;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_008bb140(int param_1_00,int *param_1)

{
  bool bVar1;
  int iVar2;
  bool bVar3;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar3 = false;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    (**(code **)(*param_1 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    local_4 = 0;
    bVar3 = true;
    iVar2 = FUN_008507a0(L"ulonglong");
    bVar1 = false;
    if (iVar2 != 0) goto LAB_008bb1af;
  }
  bVar1 = true;
LAB_008bb1af:
  local_4 = 0xffffffff;
  if (bVar3) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar1) {
    FUN_008402e0("..\\..\\src\\common\\variant.cpp",0x71d,"wxVariantDataULongLong::Eq",
                 "(data.GetType() == wxS(\"ulonglong\"))",
                 "wxVariantDataULongLong::Eq: argument mismatch");
  }
  if ((param_1[2] == *(int *)(param_1_00 + 8)) && (param_1[3] == *(int *)(param_1_00 + 0xc))) {
    ExceptionList = local_c;
    return 1;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_008bb290(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxVariant::vftable;
  _free((void *)param_1_00[9]);
  if (7 < (uint)param_1_00[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[3]);
  }
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  *param_1_00 = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_008bb2f0(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 local_24;
  undefined local_20 [20];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0b08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  FUN_0081c0f1(&DAT_00d39198);
  local_4 = 0;
  FUN_00843020(*(undefined4 *)(param_1_00 + 8),local_20,1);
  uVar2 = FUN_008854f0(uVar1);
  FUN_00853980(param_1,uVar2,local_24);
  local_4 = 0xffffffff;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_008bb390(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined8 local_28;
  undefined local_20 [20];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd018;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  FUN_0081c0f1();
  local_4 = 0;
  FUN_00847420(*(undefined8 *)(param_1_00 + 8),local_20,1);
  uVar2 = FUN_008854f0(uVar1);
  FUN_00853980(param_1,uVar2,local_28);
  local_4 = 0xffffffff;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_008bb430(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 local_24;
  undefined local_20 [20];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0b08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  FUN_0081c0f1(&DAT_00d2b618);
  local_4 = 0;
  FUN_00820e3f(*(undefined *)(param_1_00 + 8),local_20,1);
  uVar2 = FUN_008854f0(uVar1);
  FUN_00853980(param_1,uVar2,local_24);
  local_4 = 0xffffffff;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_008bb4d0(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 local_24;
  undefined local_20 [20];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0b08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  FUN_0081c0f1(&DAT_00d260a8);
  local_4 = 0;
  FUN_00840920(*(undefined4 *)(param_1_00 + 8),local_20,1);
  uVar2 = FUN_008854f0(uVar1);
  FUN_00853980(param_1,uVar2,local_24);
  local_4 = 0xffffffff;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_008bb570(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 local_28;
  undefined4 local_24;
  undefined local_20 [20];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd018;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  FUN_0081c0f1(L"%lld");
  local_4 = 0;
  FUN_008ab670(*(undefined4 *)(param_1_00 + 8),*(undefined4 *)(param_1_00 + 0xc),local_20,1);
  uVar2 = FUN_008854f0(uVar1);
  FUN_00853980(param_1,uVar2,local_28,local_24);
  local_4 = 0xffffffff;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_008bb610(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 local_28;
  undefined4 local_24;
  undefined local_20 [20];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd018;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  FUN_0081c0f1(L"%llu");
  local_4 = 0;
  FUN_008b89d0(*(undefined4 *)(param_1_00 + 8),*(undefined4 *)(param_1_00 + 0xc),local_20,1);
  uVar2 = FUN_008854f0(uVar1);
  FUN_00853980(param_1,uVar2,local_28,local_24);
  local_4 = 0xffffffff;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return 1;
}



void __thiscall
FUN_008bb6b0(undefined4 param_1_00,undefined4 param_1,int param_2,undefined4 param_3,char param_4,
            undefined4 param_5)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7df8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840920(param_5,param_1,2);
  FUN_00840a00(&param_2,param_1,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20(param_1);
  FUN_00853980(param_1_00,uVar3,uVar4);
  iVar1 = param_2;
  if ((param_4 != '\0') && (param_2 != 0)) {
    _free(*(void **)(param_2 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



float10 FUN_008bb790(void)

{
  undefined4 *puVar1;
  void **ppvVar2;
  void **local_c;
  double local_8;
  
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440();
  }
  puVar1 = (undefined4 *)FUN_00432413(&local_c,DAT_032bd4d4);
  local_8 = _atof(*(char **)*puVar1);
  ppvVar2 = (void **)FUN_00850350();
  if (local_c != ppvVar2) {
    *(short *)(local_c + 2) = *(short *)(local_c + 2) + -1;
    if (*(short *)(local_c + 2) == 0) {
      if (*(char *)((int)local_c + 10) != '\0') {
        _free(*local_c);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_c);
    }
    FUN_00850350();
  }
  return (float10)local_8;
}



void __thiscall FUN_008bb810(int *param_1_00,undefined *param_1)

{
  int *piVar1;
  bool bVar2;
  char cVar3;
  type_info *ptVar4;
  type_info *this;
  undefined auStack_68 [4];
  uint uStack_64;
  undefined4 uStack_54;
  uint uStack_50;
  void *pvStack_4c;
  undefined local_44 [4];
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  void *local_28;
  int local_20 [4];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  piVar1 = DAT_032bdc3c;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0b40;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_68;
  ExceptionList = &local_c;
  ptVar4 = (type_info *)___RTtypeid(param_1_00[4],DAT_0323f878 ^ (uint)&stack0xffffff8c);
  this = (type_info *)___RTtypeid(piVar1);
  bVar2 = type_info::operator==(this,ptVar4);
  piVar1 = DAT_032bdc3c;
  if (bVar2) {
    local_40 = local_40 & 0xffff0000;
    local_2c = 7;
    local_30 = 0;
    FID_conflict_assign(*param_1_00 + 4,0,0xffffffff);
    local_28 = (void *)0x0;
    local_4 = 1;
    if (param_1 != local_44) {
      FID_conflict_assign(local_44,0,0xffffffff);
    }
    _free(local_28);
    if (7 < local_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_40);
    }
  }
  else {
    cVar3 = (**(code **)(*(int *)param_1_00[4] + 0x10))(param_1_00,DAT_032bdc3c,local_20);
    if (cVar3 != '\0') {
      uStack_64 = uStack_64 & 0xffff0000;
      uStack_50 = 7;
      uStack_54 = 0;
      FID_conflict_assign(local_20[0] + 4,0,0xffffffff);
      pvStack_4c = (void *)0x0;
      local_4 = 0;
      if (param_1 != auStack_68) {
        FID_conflict_assign(auStack_68,0,0xffffffff);
      }
      local_4 = 0xffffffff;
      _free(pvStack_4c);
      if (7 < uStack_50) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_64);
      }
      (**(code **)(*piVar1 + 8))(local_20);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_008bb9a0(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc9753;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxVariant::vftable;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  param_1_00[9] = 0;
  local_4 = 1;
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0083ea60(param_1);
  }
  if (param_1_00 + 2 != (undefined4 *)(param_1 + 8)) {
    FID_conflict_assign((undefined4 *)(param_1 + 8),0,0xffffffff);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_008bba30(int param_1_00,int param_1)

{
  FUN_0083ea60(param_1);
  if (param_1_00 + 8 != param_1 + 8) {
    FID_conflict_assign(param_1 + 8,0,0xffffffff);
  }
  return;
}



void __thiscall FUN_008bba60(int param_1_00,int param_1)

{
  char cVar1;
  undefined4 local_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdecb8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  ExceptionList = &local_c;
  local_38 = 0;
  if (*(int **)(param_1_00 + 4) != (int *)0x0) {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 0;
    cVar1 = (**(code **)(**(int **)(param_1_00 + 4) + 8))
                      (local_34,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    if (cVar1 != '\0') {
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(local_34,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
      goto LAB_008bbb5f;
    }
    local_4 = 0xffffffff;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
  }
  FUN_004325b6(PTR_DAT_03236318);
LAB_008bbb5f:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_008bbb80(int param_1_00,undefined4 param_1)

{
  if (*(int **)(param_1_00 + 4) == (int *)0x0) {
    FUN_004325b6(L"null");
    return param_1;
  }
  (**(code **)(**(int **)(param_1_00 + 4) + 0x18))(param_1);
  return param_1;
}



void __thiscall FUN_008bbbc0(undefined4 *param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *local_40;
  undefined **local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined2 local_30;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd0b8b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_40;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxVariant::vftable;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  param_1_00[9] = 0;
  local_1c = 7;
  local_38 = 0;
  local_3c = wxVariant::vftable;
  local_20 = 0;
  local_30 = 0;
  local_18 = 0;
  local_4 = 2;
  local_40 = param_1_00;
  cVar1 = FUN_00897bc0(param_1,&local_3c,uVar2);
  if (cVar1 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\variant.cpp",0xdb,"wxVariant::wxVariant","Assert failure",
                   "wxAny of this type cannot be converted to wxVariant");
    }
  }
  else {
    FUN_0083ea60(&local_3c);
    if (param_1_00 + 2 != &local_34) {
      FID_conflict_assign(&local_34,0,0xffffffff);
    }
  }
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_008ba540();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_008bbce0(undefined4 param_1)

{
  FUN_004325b6(L"long");
  return param_1;
}



void __thiscall FUN_008bbd10(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined **local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined4 local_74;
  undefined local_70;
  undefined local_6f;
  undefined local_6c [4];
  uint local_68;
  undefined4 local_58;
  uint local_54;
  void *local_50;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0bd8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d34ff8);
  local_80 = wxConvAuto::vftable;
  local_7c = 0;
  local_74 = 0xffffffff;
  local_70 = 0;
  local_6f = 0;
  local_78 = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_008be9c0(param_1,local_6c,&local_80);
  local_4._0_1_ = 3;
  FUN_00891400(uVar1);
  local_4 = CONCAT31(local_4._1_3_,4);
  _free(local_50);
  if (7 < local_54) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_68);
  }
  local_68 = local_68 & 0xffff0000;
  local_54 = 7;
  local_58 = 0;
  uVar2 = FUN_008bf320(10);
  *(undefined4 *)(param_1_00 + 8) = uVar2;
  local_4 = 0xffffffff;
  FUN_008be5c0();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008bbe40(int param_1_00,undefined4 param_1)

{
  bool bVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaad9;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_008bbb80(local_30);
  local_4 = 0;
  iVar3 = FUN_008507a0(L"long");
  if ((iVar3 == 0) && (*(int *)(*(int *)(param_1_00 + 4) + 4) == 1)) {
    bVar1 = true;
  }
  else {
    bVar1 = false;
  }
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  if (bVar1) {
    *(undefined4 *)(*(int *)(param_1_00 + 4) + 8) = param_1;
    ExceptionList = local_c;
    return;
  }
  FUN_0083e850(uVar2);
  puVar4 = (undefined4 *)operator_new(0xc);
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    puVar4[1] = 1;
    *puVar4 = wxVariantDataLong::vftable;
    puVar4[2] = param_1;
  }
  *(undefined4 **)(param_1_00 + 4) = puVar4;
  ExceptionList = local_c;
  return;
}



undefined4 FUN_008bbf50(undefined4 param_1)

{
  FUN_004325b6(L"double");
  return param_1;
}



void __thiscall FUN_008bbf80(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  float10 fVar2;
  float local_84;
  undefined **local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined4 local_74;
  undefined local_70;
  undefined local_6f;
  undefined local_6c [4];
  uint local_68;
  undefined4 local_58;
  uint local_54;
  void *local_50;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0c28;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_84;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff70;
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d34ff8);
  local_80 = wxConvAuto::vftable;
  local_7c = 0;
  local_74 = 0xffffffff;
  local_70 = 0;
  local_6f = 0;
  local_78 = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_008be9c0(param_1,local_6c,&local_80);
  local_4._0_1_ = 3;
  FUN_00891400(uVar1);
  local_4 = CONCAT31(local_4._1_3_,4);
  _free(local_50);
  if (7 < local_54) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_68);
  }
  local_68 = local_68 & 0xffff0000;
  local_54 = 7;
  local_58 = 0;
  fVar2 = (float10)FUN_008bf460();
  local_84 = (float)fVar2;
  *(double *)(param_1_00 + 8) = (double)local_84;
  local_4 = 0xffffffff;
  FUN_008be5c0();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_008bc0b0(int param_1_00,undefined4 param_1)

{
  float10 extraout_ST0;
  
  FUN_008bb790(param_1);
  *(double *)(param_1_00 + 8) = (double)extraout_ST0;
  return 1;
}



undefined4 FUN_008bc0d0(undefined4 param_1)

{
  FUN_004325b6(L"bool");
  return param_1;
}



void __thiscall FUN_008bc100(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined **local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined4 local_74;
  undefined local_70;
  undefined local_6f;
  undefined local_6c [4];
  uint local_68;
  undefined4 local_58;
  uint local_54;
  void *local_50;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0bd8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d34ff8);
  local_80 = wxConvAuto::vftable;
  local_7c = 0;
  local_74 = 0xffffffff;
  local_70 = 0;
  local_6f = 0;
  local_78 = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_008be9c0(param_1,local_6c,&local_80);
  local_4._0_1_ = 3;
  FUN_00891400(uVar2);
  local_4 = CONCAT31(local_4._1_3_,4);
  _free(local_50);
  if (7 < local_54) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_68);
  }
  local_68 = local_68 & 0xffff0000;
  local_54 = 7;
  local_58 = 0;
  cVar1 = thunk_FUN_008bf320(10);
  *(bool *)(param_1_00 + 8) = cVar1 != '\0';
  local_4 = 0xffffffff;
  FUN_008be5c0();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_008bc230(undefined4 param_1)

{
  FUN_004325b6(L"char");
  return param_1;
}



undefined4 __thiscall FUN_008bc260(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5328;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_30;
  ExceptionList = &local_c;
  uVar2 = FUN_008520d0(*(undefined4 *)(param_1_00 + 8),1);
  local_4 = 0;
  FUN_00853aa0(param_1,uVar2,uVar1);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_008bc2e0(int param_1_00,int param_1)

{
  undefined4 uVar1;
  int *piVar2;
  int *piVar3;
  
  uVar1 = *(undefined4 *)(param_1_00 + 8);
  if (*(int *)(param_1 + 0x18) == 0) {
    FUN_004181eb(1,*(undefined4 *)(param_1 + 0x14));
  }
  piVar2 = (int *)(param_1 + 4);
  piVar3 = piVar2;
  if (7 < *(uint *)(param_1 + 0x18)) {
    piVar3 = (int *)*piVar2;
  }
  *(short *)piVar3 = (short)uVar1;
  *(undefined4 *)(param_1 + 0x14) = 1;
  if (7 < *(uint *)(param_1 + 0x18)) {
    piVar2 = (int *)*piVar2;
  }
  *(undefined2 *)((int)piVar2 + 2) = 0;
  return CONCAT31((int3)((uint)piVar2 >> 8),1);
}



void __thiscall FUN_008bc330(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  ushort local_84 [2];
  undefined **local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined4 local_74;
  undefined local_70;
  undefined local_6f;
  undefined local_6c [4];
  uint local_68;
  undefined4 local_58;
  uint local_54;
  void *local_50;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0c28;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_84;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff70;
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d34ff8);
  local_80 = wxConvAuto::vftable;
  local_7c = 0;
  local_74 = 0xffffffff;
  local_70 = 0;
  local_6f = 0;
  local_78 = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_008be9c0(param_1,local_6c,&local_80);
  local_4._0_1_ = 3;
  FUN_00891400(uVar1);
  local_4 = CONCAT31(local_4._1_3_,4);
  _free(local_50);
  if (7 < local_54) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_68);
  }
  local_68 = local_68 & 0xffff0000;
  local_54 = 7;
  local_58 = 0;
  FUN_008be560(local_84);
  *(uint *)(param_1_00 + 8) = (uint)local_84[0];
  local_4 = 0xffffffff;
  FUN_008be5c0();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_008bc460(undefined4 *param_1_00,undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd0c73;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  *param_1_00 = wxVariantDataString::vftable;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  param_1_00[9] = 0;
  local_4 = 1;
  if (param_1_00 + 2 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_008bc4e0(undefined4 *param_1_00,byte param_1)

{
  _free((void *)param_1_00[9]);
  if (7 < (uint)param_1_00[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[3]);
  }
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  *param_1_00 = wxRefCounter::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_008bc540(undefined4 param_1)

{
  FUN_004325b6(L"string");
  return param_1;
}



undefined4 __fastcall FUN_008bc570(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x2c);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008bc460(param_1 + 8);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_008bc5e0(void)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6884;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x2c);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_008b9ef0(0);
    FUN_0043c211(uVar2);
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar2 = FUN_008bc460(local_30);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return uVar2;
}



undefined4 FUN_008bc6a0(void)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6884;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x2c);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_008b9f50(0);
    FUN_004325b6(uVar2);
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar2 = FUN_008bc460(local_30);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return uVar2;
}



undefined4 __thiscall FUN_008bc760(int param_1_00,int param_1)

{
  if (param_1 != param_1_00 + 8) {
    FID_conflict_assign(param_1_00 + 8,0,0xffffffff);
  }
  return 1;
}



void __thiscall FUN_008bc780(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  undefined **local_a4;
  undefined4 local_a0;
  undefined4 local_9c;
  undefined4 local_98;
  undefined local_94;
  undefined local_93;
  undefined local_90 [4];
  uint local_8c;
  undefined4 local_7c;
  uint local_78;
  void *local_74;
  undefined local_6c [4];
  uint local_68;
  undefined4 local_58;
  uint local_54;
  void *local_50;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0cb6;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_a4;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff50;
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d34ff8);
  local_a4 = wxConvAuto::vftable;
  local_a0 = 0;
  local_98 = 0xffffffff;
  local_94 = 0;
  local_93 = 0;
  local_9c = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_008be9c0(param_1,local_90,&local_a4);
  local_4._0_1_ = 3;
  FUN_00891400(uVar1);
  local_4._0_1_ = 4;
  _free(local_74);
  if (7 < local_78) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_8c);
  }
  local_8c = local_8c & 0xffff0000;
  local_78 = 7;
  local_7c = 0;
  iVar2 = FUN_008bea60(local_6c);
  local_4 = CONCAT31(local_4._1_3_,5);
  if (param_1_00 + 8 != iVar2) {
    FID_conflict_assign(iVar2,0,0xffffffff);
  }
  _free(local_50);
  if (7 < local_54) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_68);
  }
  local_54 = 7;
  local_58 = 0;
  local_68 = local_68 & 0xffff0000;
  local_4 = 0xffffffff;
  FUN_008be5c0();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_008bc900(int param_1_00,int param_1)

{
  if (param_1_00 + 8 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  return 1;
}



undefined4 __thiscall FUN_008bc920(int param_1_00,undefined4 param_1)

{
  short sVar1;
  short *psVar2;
  uint uVar3;
  short **ppsVar4;
  short *psVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6ec9;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_004325b6(L"wxObject*");
  local_4 = 0;
  if (*(int *)(param_1_00 + 8) != 0) {
    ppsVar4 = (short **)(**(code **)**(undefined4 **)(param_1_00 + 8))(uVar3);
    psVar2 = *ppsVar4;
    if (psVar2 == (short *)0x0) {
      FUN_00432156();
    }
    else {
      psVar5 = psVar2;
      do {
        sVar1 = *psVar5;
        psVar5 = psVar5 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign(psVar2,(int)psVar5 - (int)(psVar2 + 1) >> 1);
    }
    psVar2 = &DAT_00fae700;
    do {
      psVar5 = psVar2;
      psVar2 = psVar5 + 1;
    } while (*psVar5 != 0);
    FUN_00473ccc(&DAT_00fae700,(int)(psVar5 + -0x7d7380) >> 1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_008bca00(int *param_1)

{
  undefined auStack_64 [8];
  undefined *puStack_5c;
  undefined auStack_48 [24];
  uint local_30;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bd6ca0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0081c0f1();
  local_4 = 0;
  puStack_5c = (undefined *)0x8bca4e;
  (**(code **)(*param_1 + 0x18))();
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
  FUN_00432231(auStack_64);
  FUN_008bb6b0(auStack_48);
  puStack_5c = (undefined *)0x8bca7c;
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    puStack_5c = &UNK_008bca90;
    FUN_00a3f6a1();
  }
  uStack_1c = 7;
  uStack_20 = 0;
  local_30 = local_30 & 0xffff0000;
  uStack_8 = (undefined *)0xffffffff;
  FUN_0081b5bc();
  ExceptionList = pvStack_10;
  return 1;
}



undefined4 FUN_008bcad0(undefined4 param_1)

{
  FUN_004325b6(L"void*");
  return param_1;
}



undefined4 FUN_008bcb00(undefined4 param_1)

{
  FUN_004325b6(L"datetime");
  return param_1;
}



void __thiscall FUN_008bcb30(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int unaff_EBX;
  undefined auStack_40 [4];
  char cStack_3c;
  undefined4 local_34;
  undefined2 local_30;
  uint local_20;
  void *local_1c;
  undefined4 local_18;
  void *local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  uStack_8 = &LAB_00bd1060;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)auStack_40);
  ExceptionList = &local_c;
  local_1c = (void *)0x7;
  local_20 = 0;
  local_30 = 0;
  local_18 = 0;
  local_4 = 0;
  (**(code **)(*param_1_00 + 8))(&local_34,DAT_0323f878 ^ (uint)&stack0xffffffb8);
  uVar1 = FUN_00432231(&stack0xffffffbc);
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
  FUN_00853a10(param_1,uVar1);
  if ((cStack_3c != '\0') && (unaff_EBX != 0)) {
    _free(*(void **)(unaff_EBX + 0x1c));
    if (7 < *(uint *)(unaff_EBX + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(unaff_EBX + 4));
    }
    *(undefined4 *)(unaff_EBX + 0x18) = 7;
    *(undefined4 *)(unaff_EBX + 0x14) = 0;
    *(undefined2 *)(unaff_EBX + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBX);
  }
  _free(local_1c);
  if (7 < local_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_34);
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_008bcc40(int param_1_00,int param_1)

{
  wchar_t *pwVar1;
  int iVar2;
  wchar_t *pwVar3;
  undefined local_58 [4];
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5190;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*(int *)(param_1_00 + 8) == DAT_032365a0) && (*(int *)(param_1_00 + 0xc) == DAT_032365a4)) {
    pwVar1 = L"Invalid";
    do {
      pwVar3 = pwVar1;
      pwVar1 = pwVar3 + 1;
    } while (*pwVar3 != L'\0');
    FID_conflict_assign(L"Invalid",(int)(pwVar3 + -0x69d474) >> 1);
  }
  else {
    FUN_0086c940(0);
    FUN_0043c211(&DAT_00d2a438);
    local_4 = 0;
    iVar2 = FUN_00872a30(local_54,local_30,local_58);
    local_4 = CONCAT31(local_4._1_3_,1);
    if (param_1 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return 1;
}



undefined4 FUN_008bcd90(undefined4 param_1)

{
  FUN_004325b6(L"arrstring");
  return param_1;
}



void FUN_008bcdc0(undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined local_a8 [4];
  uint local_a4;
  undefined4 local_94;
  uint local_90;
  void *local_8c;
  undefined local_84 [4];
  uint local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0d0e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_a8;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff50;
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d27220);
  local_4 = 0;
  FUN_00894710(param_1,local_a8,0);
  local_4 = CONCAT31(local_4._1_3_,2);
  _free(local_8c);
  if (7 < local_90) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_a4);
  }
  local_90 = 7;
  local_94 = 0;
  local_a4 = local_a4 & 0xffff0000;
  cVar1 = FUN_00894180(uVar2);
  while( true ) {
    if (cVar1 == '\0') {
      local_4 = 0xffffffff;
      FUN_0083fa70();
      ExceptionList = local_c;
      ___security_check_cookie_4();
      return;
    }
    uVar3 = FUN_00894270(local_84);
    local_4._0_1_ = 3;
    FUN_00854700(uVar3,1);
    local_4 = CONCAT31(local_4._1_3_,2);
    _free(local_68);
    if (7 < local_6c) break;
    local_80 = local_80 & 0xffff0000;
    local_6c = 7;
    local_70 = 0;
    cVar1 = FUN_00894180();
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_80);
}



undefined4 FUN_008bcf30(undefined4 param_1)

{
  FUN_004325b6(L"longlong");
  return param_1;
}



void __thiscall FUN_008bcf60(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined **local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined4 local_74;
  undefined local_70;
  undefined local_6f;
  undefined local_6c [4];
  uint local_68;
  undefined4 local_58;
  uint local_54;
  void *local_50;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0bd8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d34ff8);
  local_80 = wxConvAuto::vftable;
  local_7c = 0;
  local_74 = 0xffffffff;
  local_70 = 0;
  local_6f = 0;
  local_78 = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_008be9c0(param_1,local_6c,&local_80);
  local_4._0_1_ = 3;
  FUN_00891400(uVar1);
  local_4 = CONCAT31(local_4._1_3_,4);
  _free(local_50);
  if (7 < local_54) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_68);
  }
  local_68 = local_68 & 0xffff0000;
  local_54 = 7;
  local_58 = 0;
  uVar2 = FUN_008bf320(10);
  uVar3 = FUN_008bf320(10);
  *(undefined4 *)(param_1_00 + 8) = uVar2;
  *(undefined4 *)(param_1_00 + 0xc) = uVar3;
  local_4 = 0xffffffff;
  FUN_008be5c0();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008bd0a0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  bool bVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  FUN_008bbb80(local_30);
  local_4 = 0;
  iVar3 = FUN_008507a0(L"longlong");
  if ((iVar3 != 0) || (bVar1 = true, *(int *)(*(int *)(param_1_00 + 4) + 4) != 1)) {
    bVar1 = false;
  }
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  if (bVar1) {
    iVar3 = *(int *)(param_1_00 + 4);
    *(undefined4 *)(iVar3 + 8) = param_1;
    *(undefined4 *)(iVar3 + 0xc) = param_2;
    ExceptionList = local_c;
    return;
  }
  FUN_0083e850(uVar2);
  puVar4 = (undefined4 *)operator_new(0x10);
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    puVar4[1] = 1;
    *puVar4 = wxVariantDataLongLong::vftable;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[2] = param_1;
    puVar4[3] = param_2;
  }
  *(undefined4 **)(param_1_00 + 4) = puVar4;
  ExceptionList = local_c;
  return;
}



undefined4 FUN_008bd1c0(undefined4 param_1)

{
  FUN_004325b6(L"ulonglong");
  return param_1;
}



void __thiscall FUN_008bd1f0(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined **local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined4 local_74;
  undefined local_70;
  undefined local_6f;
  undefined local_6c [4];
  uint local_68;
  undefined4 local_58;
  uint local_54;
  void *local_50;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0bd8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d34ff8);
  local_80 = wxConvAuto::vftable;
  local_7c = 0;
  local_74 = 0xffffffff;
  local_70 = 0;
  local_6f = 0;
  local_78 = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_008be9c0(param_1,local_6c,&local_80);
  local_4._0_1_ = 3;
  FUN_00891400(uVar1);
  local_4 = CONCAT31(local_4._1_3_,4);
  _free(local_50);
  if (7 < local_54) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_68);
  }
  local_68 = local_68 & 0xffff0000;
  local_54 = 7;
  local_58 = 0;
  uVar2 = FUN_008bf320(10);
  uVar3 = FUN_008bf320(10);
  *(undefined4 *)(param_1_00 + 8) = uVar2;
  *(undefined4 *)(param_1_00 + 0xc) = uVar3;
  local_4 = 0xffffffff;
  FUN_008be5c0();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_008bd330(undefined4 param_1)

{
  FUN_004325b6(L"list");
  return param_1;
}



void FUN_008bd360(int param_1)

{
  int iVar1;
  void *pvVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc57ab;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008b9160(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  for (iVar1 = *(int *)(param_1 + 0xc); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    uVar3 = *(undefined4 *)(iVar1 + 8);
    pvVar2 = operator_new(0x2c);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = FUN_008bb9a0(uVar3);
    }
    local_4 = 0xffffffff;
    FUN_0086ad60(uVar3);
  }
  ExceptionList = local_c;
  return;
}



int FUN_008bd400(int param_1)

{
  char cVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6ec9;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  cVar1 = FUN_008bb810(param_1);
  if ((cVar1 == '\0') && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3db,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type",uVar2);
  }
  ExceptionList = local_c;
  return param_1;
}



uint __thiscall FUN_008bd4a0(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  bool bVar5;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2000;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  if (*(int *)(param_1_00 + 4) == 0) {
    bVar5 = *(int *)(param_1 + 4) == 0;
  }
  else {
    bVar5 = *(int *)(param_1 + 4) == 0;
    if (!bVar5) {
      ExceptionList = &local_c;
      iVar3 = FUN_008bbb80(local_30);
      local_4 = 0;
      uVar4 = FUN_008bbb80(local_54);
      local_4 = CONCAT31(local_4._1_3_,1);
      if (*(int *)(uVar4 + 0x14) == *(int *)(iVar3 + 0x14)) {
        iVar3 = FUN_00850760(iVar3);
        uVar4 = CONCAT31((int3)((uint)iVar3 >> 8),iVar3 == 0);
      }
      else {
        uVar4 = uVar4 & 0xffffff00;
      }
      cVar1 = (char)uVar4;
      _free(local_38);
      if (7 < local_3c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_50,uVar2);
      }
      local_3c = 7;
      local_40 = 0;
      local_50 = local_50 & 0xffff0000;
      local_4 = 0xffffffff;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
      local_18 = 7;
      local_1c = 0;
      local_2c = local_2c & 0xffff0000;
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return uVar4 & 0xffffff00;
      }
      uVar2 = (**(code **)(**(int **)(param_1_00 + 4) + 4))(*(undefined4 *)(param_1 + 4));
      ExceptionList = local_c;
      return uVar2;
    }
  }
  return (uint)((*(int *)(param_1_00 + 4) == 0) == bVar5);
}



undefined4 FUN_008bd5f0(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6884;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x2c);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_008bd400(local_30,0);
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar3 = FUN_008bc460(uVar3);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar1);
    }
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 __fastcall FUN_008bd6a0(int param_1)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  
  uVar1 = *(uint *)(param_1 + 0xc);
  uVar2 = 0;
  if (uVar1 != 0) {
    iVar3 = 0;
    do {
      if (uVar2 != 0) {
        FID_conflict_append(1,0x3b);
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0xc) <= uVar2)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      FID_conflict_append(*(int *)(param_1 + 0x10) + iVar3,0,0xffffffff);
      uVar2 = uVar2 + 1;
      iVar3 = iVar3 + 0x24;
    } while (uVar2 < uVar1);
  }
  return 1;
}



undefined4 * __thiscall FUN_008bd730(undefined4 *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd0d53;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  *param_1_00 = wxVariantDataList::vftable;
  local_4 = 0;
  param_1_00[2] = wxListBase::vftable;
  FUN_0086ad40(0);
  param_1_00[2] = wxVariantList::vftable;
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_008bd360(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_008bd7b0(int param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  bool bVar3;
  char cVar4;
  int iVar5;
  bool bVar6;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar6 = false;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    (**(code **)(*param_1 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    local_4 = 0;
    bVar6 = true;
    iVar5 = FUN_008507a0(L"list");
    bVar3 = false;
    if (iVar5 != 0) goto LAB_008bd81f;
  }
  bVar3 = true;
LAB_008bd81f:
  local_4 = 0xffffffff;
  if (bVar6) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar3) {
    FUN_00840480("..\\..\\src\\common\\variant.cpp",0x802,"wxVariantDataList::Eq",
                 "(data.GetType() == wxT(\"list\"))",L"wxVariantDataList::Eq: argument mismatch");
  }
  iVar5 = *(int *)(param_1_00 + 0x14);
  for (iVar1 = param_1[5]; (iVar2 = iVar1, iVar5 != 0 && (iVar2 = iVar5, iVar1 != 0));
      iVar1 = *(int *)(iVar1 + 0xc)) {
    cVar4 = FUN_008bd4a0(*(undefined4 *)(iVar1 + 8));
    if (cVar4 == '\0') {
      ExceptionList = local_c;
      return 0;
    }
    iVar5 = *(int *)(iVar5 + 0xc);
  }
  if (iVar2 != 0) {
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = local_c;
  return 1;
}



void __fastcall FUN_008bd8f0(int param_1)

{
  short sVar1;
  int iVar2;
  short *psVar3;
  short *psVar4;
  undefined4 uVar5;
  int local_5c;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0d80;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_5c;
  ExceptionList = &local_c;
  local_5c = param_1;
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    FUN_00432156(DAT_0323f878 ^ (uint)&stack0xffffff94);
  }
  else {
    psVar3 = (short *)PTR_DAT_03236318;
    do {
      sVar1 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(PTR_DAT_03236318,(int)psVar3 - (int)(PTR_DAT_03236318 + 2) >> 1);
  }
  iVar2 = *(int *)(param_1 + 0x14);
  while( true ) {
    if (iVar2 == 0) {
      ExceptionList = local_c;
      ___security_check_cookie_4();
      return;
    }
    if (iVar2 != *(int *)(local_5c + 0x14)) {
      psVar3 = &DAT_00d1fc10;
      do {
        psVar4 = psVar3;
        psVar3 = psVar4 + 1;
      } while (*psVar4 != 0);
      FUN_00473ccc(&DAT_00d1fc10,(int)(psVar4 + -0x68fe08) >> 1);
    }
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 0;
    uVar5 = FUN_008bba60(local_58);
    local_4 = CONCAT31(local_4._1_3_,1);
    FID_conflict_append(uVar5,0,0xffffffff);
    _free(local_3c);
    if (7 < local_40) break;
    iVar2 = *(int *)(iVar2 + 0xc);
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    local_4 = 0xffffffff;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_54);
}



undefined4 __fastcall FUN_008bda70(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x20);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008bd730(param_1 + 8);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_008bdae0(void)

{
  int iVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined **local_3c [6];
  undefined local_24 [12];
  int local_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0dd6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008b95a0(local_24,0);
  local_4 = 0;
  local_3c[0] = wxListBase::vftable;
  FUN_0086ad40(0);
  local_3c[0] = wxVariantList::vftable;
  local_4._0_1_ = 1;
  for (iVar1 = local_18; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    uVar3 = *(undefined4 *)(iVar1 + 8);
    pvVar2 = operator_new(0x2c);
    local_4._0_1_ = 2;
    if (pvVar2 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = FUN_008bbbc0(uVar3);
    }
    local_4._0_1_ = 1;
    FUN_0086ad60(uVar3);
  }
  pvVar2 = operator_new(0x20);
  local_4._0_1_ = 3;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_008bd730(local_3c);
  }
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0086ade0();
  local_4 = 0xffffffff;
  FUN_0086ade0();
  ExceptionList = local_c;
  return uVar3;
}



undefined4 __thiscall FUN_008bdbe0(int param_1_00,int param_1)

{
  (**(code **)(**(int **)(param_1 + 0x10) + 8))(param_1);
  *(undefined4 *)(param_1 + 0x10) = DAT_032bdc3c;
  FUN_00897e60(param_1_00 + 8,param_1);
  return 1;
}



int * __thiscall FUN_008bdc10(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  uint uVar4;
  uint uStack_48;
  undefined local_38 [4];
  undefined4 local_34;
  undefined4 local_2c;
  int *local_28;
  char local_24;
  locale local_20 [4];
  uint local_1c;
  int *local_18;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bd0e10;
  local_10 = ExceptionList;
  uStack_48 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_48;
  ExceptionList = &local_10;
  local_1c = 0;
  local_18 = param_1_00;
  FUN_00441871(param_1_00,0);
  local_8 = 0;
  if (local_24 != '\0') {
    uVar2 = FUN_00417498(local_20);
    local_8._0_1_ = 1;
    piVar3 = (int *)FUN_00440e5e(uVar2);
    std::locale::~locale(local_20);
    iVar1 = *(int *)(*(int *)(*param_1_00 + 4) + 0x28 + (int)param_1_00);
    local_2c = CONCAT31(local_2c._1_3_,1);
    local_34 = CONCAT31(local_34._1_3_,iVar1 == 0);
    local_8 = CONCAT31(local_8._1_3_,2);
    (**(code **)(*piVar3 + 0x20))
              (local_38,iVar1,local_34,0,local_2c,*(int *)(*param_1_00 + 4) + (int)param_1_00,
               &local_1c,param_1);
  }
  local_8 = 0;
  if (local_1c != 0) {
    uVar4 = *(uint *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 8) | local_1c;
    if (*(int *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 0x28) == 0) {
      uVar4 = uVar4 | 4;
    }
    FUN_00417a55(uVar4,0);
  }
  local_8 = 0xffffffff;
  if (*(int *)(*(int *)(*local_28 + 4) + 0x28 + (int)local_28) != 0) {
    FUN_00823c6d();
  }
  ExceptionList = local_10;
  return param_1_00;
}



undefined * Catch_All_008bdd1c(void)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  undefined *puVar4;
  uint uVar5;
  int unaff_EBP;
  
  piVar1 = *(int **)(unaff_EBP + -0x14);
  iVar2 = *(int *)(*piVar1 + 4);
  uVar5 = *(uint *)((int)piVar1 + iVar2 + 8) & 0x17 | 4;
  *(uint *)((int)piVar1 + iVar2 + 8) = uVar5;
  if ((*(uint *)((int)piVar1 + iVar2 + 0xc) & uVar5) == 0) {
    *(undefined4 *)(unaff_EBP + -4) = 0;
    return &DAT_008bdd4d;
  }
  __CxxThrowException_8(0,0);
  pcVar3 = (code *)swi(3);
  puVar4 = (undefined *)(*pcVar3)();
  return puVar4;
}



int * __thiscall FUN_008bdd60(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  uint uVar4;
  uint uStack_48;
  undefined local_38 [4];
  undefined4 local_34;
  undefined4 local_2c;
  int *local_28;
  char local_24;
  locale local_20 [4];
  uint local_1c;
  int *local_18;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bd0e40;
  local_10 = ExceptionList;
  uStack_48 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_48;
  ExceptionList = &local_10;
  local_1c = 0;
  local_18 = param_1_00;
  FUN_00441871(param_1_00,0);
  local_8 = 0;
  if (local_24 != '\0') {
    uVar2 = FUN_00417498(local_20);
    local_8._0_1_ = 1;
    piVar3 = (int *)FUN_00440e5e(uVar2);
    std::locale::~locale(local_20);
    iVar1 = *(int *)(*(int *)(*param_1_00 + 4) + 0x28 + (int)param_1_00);
    local_2c = CONCAT31(local_2c._1_3_,1);
    local_34 = CONCAT31(local_34._1_3_,iVar1 == 0);
    local_8 = CONCAT31(local_8._1_3_,2);
    (**(code **)(*piVar3 + 0xc))
              (local_38,iVar1,local_34,0,local_2c,*(int *)(*param_1_00 + 4) + (int)param_1_00,
               &local_1c,param_1);
  }
  local_8 = 0;
  if (local_1c != 0) {
    uVar4 = *(uint *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 8) | local_1c;
    if (*(int *)((int)param_1_00 + *(int *)(*param_1_00 + 4) + 0x28) == 0) {
      uVar4 = uVar4 | 4;
    }
    FUN_00417a55(uVar4,0);
  }
  local_8 = 0xffffffff;
  if (*(int *)(*(int *)(*local_28 + 4) + 0x28 + (int)local_28) != 0) {
    FUN_00823c6d();
  }
  ExceptionList = local_10;
  return param_1_00;
}



undefined * Catch_All_008bde6c(void)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  undefined *puVar4;
  uint uVar5;
  int unaff_EBP;
  
  piVar1 = *(int **)(unaff_EBP + -0x14);
  iVar2 = *(int *)(*piVar1 + 4);
  uVar5 = *(uint *)((int)piVar1 + iVar2 + 8) & 0x17 | 4;
  *(uint *)((int)piVar1 + iVar2 + 8) = uVar5;
  if ((*(uint *)((int)piVar1 + iVar2 + 0xc) & uVar5) == 0) {
    *(undefined4 *)(unaff_EBP + -4) = 0;
    return &DAT_008bde9d;
  }
  __CxxThrowException_8(0,0);
  pcVar3 = (code *)swi(3);
  puVar4 = (undefined *)(*pcVar3)();
  return puVar4;
}



undefined __fastcall FUN_008bdeb0(int param_1)

{
  FUN_008bdc10(param_1 + 8);
  return 1;
}



undefined __fastcall FUN_008bded0(int param_1)

{
  FUN_008bdd60(param_1 + 8);
  return 1;
}



void __thiscall FUN_008bdef0(int *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void **ppvVar2;
  void **unaff_EBX;
  undefined auStack_38 [4];
  undefined4 local_34;
  undefined2 local_30;
  uint local_20;
  void *local_1c;
  undefined4 local_18;
  void *local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  uStack_8 = &LAB_00bd0e70;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)auStack_38);
  ExceptionList = &local_c;
  local_1c = (void *)0x7;
  local_20 = 0;
  local_30 = 0;
  local_18 = 0;
  local_4 = 0;
  (**(code **)(*param_1_00 + 8))(&local_34,DAT_0323f878 ^ (uint)&stack0xffffffc0);
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440();
  }
  puVar1 = (undefined4 *)FUN_00432413(&stack0xffffffc4,DAT_032bd4d4);
  uStack_8._0_1_ = 1;
  FUN_004f48b2(param_1,*(undefined4 *)*puVar1);
  uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
  ppvVar2 = (void **)FUN_00850350();
  if (unaff_EBX != ppvVar2) {
    *(short *)(unaff_EBX + 2) = *(short *)(unaff_EBX + 2) + -1;
    if (*(short *)(unaff_EBX + 2) == 0) {
      if (*(char *)((int)unaff_EBX + 10) != '\0') {
        _free(*unaff_EBX);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(unaff_EBX);
    }
    FUN_00850350();
  }
  _free(local_1c);
  if (7 < local_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_34);
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_008be010(undefined4 param_1)

{
  undefined4 *puVar1;
  void **ppvVar2;
  void **local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0ea8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440(DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  puVar1 = (undefined4 *)FUN_00432413(&local_10,DAT_032bd4d4);
  local_4 = 0;
  FUN_004f48b2(param_1,*(undefined4 *)*puVar1);
  local_4 = 0xffffffff;
  ppvVar2 = (void **)FUN_00850350();
  if (local_10 != ppvVar2) {
    *(short *)(local_10 + 2) = *(short *)(local_10 + 2) + -1;
    if (*(short *)(local_10 + 2) == 0) {
      if (*(char *)((int)local_10 + 10) != '\0') {
        _free(*local_10);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_10);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return 1;
}



undefined * FUN_008be0d0(void)

{
  return &DAT_03237fe8;
}



undefined ** FUN_008be0e0(void)

{
  return &PTR_u_wxProcessEvent_03238000;
}



void __fastcall FUN_008be0f0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc98b8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxProcess::vftable;
  local_4 = 0;
  if ((int *)param_1[0x12] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x12] + 4))(1,uVar1);
  }
  if ((int *)param_1[0x13] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x13] + 4))(1);
  }
  if ((int *)param_1[0x14] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x14] + 4))(1);
  }
  local_4 = 0xffffffff;
  FUN_00846530();
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_008be180(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0ee3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x58);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00845b70(uVar1);
    *puVar2 = wxProcess::vftable;
    puVar2[0x10] = 0xffffffff;
    puVar2[0x11] = 0;
    *(undefined *)(puVar2 + 0x15) = 0;
    puVar2[0x12] = 0;
    puVar2[0x13] = 0;
    puVar2[0x14] = 0;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_008be210(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x30);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bd44c);
    *puVar1 = wxProcessEvent::vftable;
    puVar1[3] = DAT_032bde40;
    puVar1[10] = 0;
    puVar1[0xb] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __thiscall FUN_008be2a0(int *param_1_00,undefined4 param_1,void *param_2)

{
  char cVar1;
  uint uVar2;
  undefined **local_3c [3];
  undefined4 local_30;
  undefined4 local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0f08;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  FUN_00845a20(param_1_00[0x10],DAT_032bd44c);
  local_3c[0] = wxProcessEvent::vftable;
  local_30 = DAT_032bde40;
  local_14 = param_1;
  local_10 = param_2;
  local_4 = 0;
  cVar1 = (**(code **)(*param_1_00 + 0x18))(local_3c,uVar2);
  if (cVar1 == '\0') {
    (**(code **)(*param_1_00 + 4))(1);
  }
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  ExceptionList = local_10;
  return;
}



undefined4 * __fastcall FUN_008be350(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x30);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxProcessEvent::vftable;
    puVar1[10] = *(undefined4 *)(param_1 + 0x28);
    puVar1[0xb] = *(undefined4 *)(param_1 + 0x2c);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __fastcall FUN_008be3c0(int param_1)

{
  undefined4 *puVar1;
  char cVar2;
  int iVar3;
  
  iVar3 = 0;
  puVar1 = (undefined4 *)(param_1 + 0x28);
  cVar2 = *(char *)(param_1 + 0x28);
  while (cVar2 != '\0') {
    iVar3 = iVar3 + 1;
    cVar2 = *(char *)((int)puVar1 + iVar3);
  }
  FUN_00882f30(puVar1,iVar3);
  *puVar1 = 0;
  *(undefined4 *)(param_1 + 0x2c) = 0;
  *(undefined2 *)(param_1 + 0x30) = 0;
  return;
}



uint __fastcall FUN_008be3f0(int **param_1)

{
  int **ppiVar1;
  undefined uVar2;
  int iVar3;
  uint uVar4;
  int **ppiStack_4;
  
  ppiVar1 = param_1 + 10;
  *ppiVar1 = (int *)0x0;
  param_1[0xb] = (int *)0x0;
  *(undefined2 *)(param_1 + 0xc) = 0;
  uVar4 = 0;
  ppiStack_4 = param_1;
  do {
    uVar2 = FUN_00882fb0();
    *(undefined *)((int)ppiVar1 + uVar4) = uVar2;
    iVar3 = (**(code **)(**param_1 + 0x30))();
    if (iVar3 == 0) {
      return 4;
    }
    uVar4 = uVar4 + 1;
    iVar3 = (**(code **)*param_1[0xd])(&ppiStack_4,2,ppiVar1,uVar4);
    if (iVar3 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_008402e0("..\\..\\src\\common\\txtstrm.cpp",0x53,"wxTextInputStream::NextChar",
                     "Assert failure","ToWChar() can\'t return 0 for non-empty input");
      }
    }
    else {
      if (iVar3 == 1) {
LAB_008be469:
        return (uint)ppiStack_4 & 0xffff;
      }
      if (iVar3 != -1) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_008402e0("..\\..\\src\\common\\txtstrm.cpp",0x5f,"wxTextInputStream::NextChar",
                       "Assert failure","unexpected decoding result");
        }
        goto LAB_008be469;
      }
    }
    if (8 < uVar4) {
      return 4;
    }
  } while( true );
}



undefined4 * __thiscall
FUN_008be4b0(undefined4 *param_1_00,undefined4 param_1,int param_2,int *param_3)

{
  undefined4 uVar1;
  
  param_1_00[1] = param_1;
  *param_1_00 = wxTextOutputStream::vftable;
  uVar1 = (**(code **)(*param_3 + 0x14))();
  param_1_00[3] = uVar1;
  param_1_00[2] = param_2;
  if (param_2 == 0) {
    param_1_00[2] = 3;
  }
  return param_1_00;
}



void __fastcall FUN_008be4f0(undefined4 *param_1)

{
  *param_1 = wxTextOutputStream::vftable;
  if ((int *)param_1[3] != (int *)0x0) {
    (**(code **)(*(int *)param_1[3] + 0x18))(1);
  }
  return;
}



short FUN_008be510(void)

{
  short sVar1;
  int iVar2;
  
  sVar1 = FUN_008be3f0();
  while( true ) {
    if (sVar1 == 4) {
      return 0;
    }
    if (((sVar1 != 10) && (sVar1 != 0xd)) && (iVar2 = FUN_00850910(sVar1,0), iVar2 < 0)) break;
    sVar1 = FUN_008be3f0();
  }
  return sVar1;
}



undefined4 __thiscall FUN_008be560(undefined4 param_1_00,short *param_1)

{
  short sVar1;
  
  sVar1 = FUN_008be3f0();
  if (sVar1 != 4) {
    *param_1 = sVar1;
    return param_1_00;
  }
  *param_1 = 0;
  return param_1_00;
}



undefined4 * __thiscall FUN_008be590(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxTextOutputStream::vftable;
  if ((int *)param_1_00[3] != (int *)0x0) {
    (**(code **)(*(int *)param_1_00[3] + 0x18))(1);
  }
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_008be5c0(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccd9b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if (*(int **)(param_1 + 0x34) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x34) + 0x18))(1,DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  _free(*(void **)(param_1 + 0x20));
  if (7 < *(uint *)(param_1 + 0x1c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 8));
  }
  *(undefined4 *)(param_1 + 0x1c) = 7;
  *(undefined4 *)(param_1 + 0x18) = 0;
  *(undefined2 *)(param_1 + 8) = 0;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008be650(int *param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 local_4c;
  undefined local_48 [20];
  undefined4 local_34;
  undefined2 local_30;
  uint local_20;
  void *local_1c;
  undefined4 local_18;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd0f40;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&local_4c);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  local_1c = (void *)0x7;
  local_20 = 0;
  local_30 = 0;
  local_18 = 0;
  local_4 = 0;
  FUN_0081c0f1(&DAT_00d25f74);
  local_4._0_1_ = 1;
  FUN_0081a07d(param_1,local_48,1);
  uVar2 = FUN_008854f0(uVar1);
  FUN_00853980(&local_34,uVar2,local_4c);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0081b5bc();
  (**(code **)(*param_1_00 + 8))(&local_34);
  _free(local_1c);
  if (7 < local_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_34);
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008be740(int *param_1_00,undefined param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 local_4c;
  undefined local_48 [20];
  undefined4 local_34;
  undefined2 local_30;
  uint local_20;
  void *local_1c;
  undefined4 local_18;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd0f40;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&local_4c);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  local_1c = (void *)0x7;
  local_20 = 0;
  local_30 = 0;
  local_18 = 0;
  local_4 = 0;
  FUN_0081c0f1(&DAT_00d25f74);
  local_4._0_1_ = 1;
  FUN_0081a07d(param_1,local_48,1);
  uVar2 = FUN_008854f0(uVar1);
  FUN_00853980(&local_34,uVar2,local_4c);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0081b5bc();
  (**(code **)(*param_1_00 + 8))(&local_34);
  _free(local_1c);
  if (7 < local_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_34);
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008be830(int *param_1_00,undefined8 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined8 local_50;
  undefined local_48 [20];
  undefined4 local_34;
  undefined2 local_30;
  uint local_20;
  void *local_1c;
  undefined4 local_18;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd0f80;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&local_50);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  local_1c = (void *)0x7;
  local_20 = 0;
  local_30 = 0;
  local_18 = 0;
  local_4 = 0;
  FUN_0081c0f1();
  local_4._0_1_ = 1;
  FUN_00847420(param_1,local_48,1);
  uVar2 = FUN_008854f0(uVar1);
  FUN_00853980(&local_34,uVar2,local_50);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0081b5bc();
  (**(code **)(*param_1_00 + 8))();
  _free(local_1c);
  if (7 < local_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_34);
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_008be930(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf283;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 1;
  FUN_00820ebc(&local_14,param_1,param_3,uVar1);
  FID_conflict_assign(local_14,local_10);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_008be9c0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,int *param_3)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc556b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  param_1_00[8] = 0;
  local_4 = 0;
  uVar2 = (**(code **)(*param_3 + 0x14))(uVar1);
  param_1_00[0xd] = uVar2;
  param_1_00[10] = 0;
  param_1_00[0xb] = 0;
  *(undefined2 *)(param_1_00 + 0xc) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_008bea60(int **param_1_00,int param_1)

{
  int **ppiVar1;
  char cVar2;
  short sVar3;
  uint uVar4;
  int iVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcefa9;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  cVar2 = (**(code **)(**param_1_00 + 0x38))(uVar4);
  while( true ) {
    if (cVar2 != '\0') {
      ExceptionList = local_c;
      return param_1;
    }
    sVar3 = FUN_008be3f0();
    if (sVar3 == 4) {
      ExceptionList = local_c;
      return param_1;
    }
    if (sVar3 == 10) {
      ExceptionList = local_c;
      return param_1;
    }
    if (sVar3 == 0xd) break;
    FID_conflict_append(1,sVar3);
    cVar2 = (**(code **)(**param_1_00 + 0x38))();
  }
  sVar3 = FUN_008be3f0();
  if ((sVar3 != 4) && (sVar3 != 10)) {
    ppiVar1 = param_1_00 + 10;
    iVar5 = 0;
    cVar2 = *(char *)ppiVar1;
    while (cVar2 != '\0') {
      iVar5 = iVar5 + 1;
      cVar2 = *(char *)((int)ppiVar1 + iVar5);
    }
    FUN_00882f30(ppiVar1,iVar5);
    *ppiVar1 = (int *)0x0;
    param_1_00[0xb] = (int *)0x0;
    *(undefined2 *)(param_1_00 + 0xc) = 0;
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_008beb60(int **param_1_00,int param_1)

{
  void *pvVar1;
  char cVar2;
  short sVar3;
  int iVar4;
  undefined4 local_38;
  undefined auStack_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6d58;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  ExceptionList = &local_c;
  local_38 = 0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  cVar2 = (**(code **)(**param_1_00 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffb8);
  if (cVar2 == '\0') {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(auStack_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  else {
    sVar3 = FUN_008be510();
    if (sVar3 == 0) {
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(auStack_34,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      _free(local_18);
      pvVar1 = ExceptionList;
      ExceptionList = local_c;
    }
    else {
      FID_conflict_append(1,sVar3);
      cVar2 = (**(code **)(**param_1_00 + 0x38))();
      while( true ) {
        if ((((cVar2 != '\0') || (sVar3 = FUN_008be3f0(), sVar3 == 4)) ||
            (iVar4 = FUN_00850910(sVar3,0), -1 < iVar4)) || (sVar3 == 10)) goto LAB_008becdc;
        if (sVar3 == 0xd) break;
        FID_conflict_append(1,sVar3);
        cVar2 = (**(code **)(**param_1_00 + 0x38))();
      }
      sVar3 = FUN_008be3f0();
      if ((sVar3 != 4) && (sVar3 != 10)) {
        FUN_008be3c0();
      }
LAB_008becdc:
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(auStack_34,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      _free(local_18);
      pvVar1 = ExceptionList;
      ExceptionList = local_c;
    }
  }
  local_c = ExceptionList;
  if (7 < local_1c) {
    ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008bed50(int param_1_00,int param_1)

{
  int iVar1;
  short *psVar2;
  char cVar3;
  uint uVar4;
  uint uVar5;
  undefined4 ****ppppuVar6;
  void **ppvVar7;
  short *psVar8;
  void **unaff_EBX;
  uint uVar9;
  uint local_40;
  undefined4 *local_3c;
  uint local_38 [2];
  undefined4 ****local_30 [3];
  uint uStack_24;
  void *local_20;
  uint local_1c;
  undefined4 local_18;
  void *pvStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd0fc0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_40;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  local_40 = *(uint *)(param_1 + 0x14);
  uVar9 = 0;
  local_1c = 7;
  local_20 = (void *)0x0;
  local_30[0] = (undefined4 ****)((uint)local_30[0] & 0xffff0000);
  local_18 = 0;
  local_4 = 0;
  if ((local_40 != 7) && (cVar3 = FUN_004182d2(local_40,1), cVar3 != '\0')) {
    local_20 = (void *)0x0;
    ppppuVar6 = local_30[0];
    if (local_1c < 8) {
      ppppuVar6 = local_30;
    }
    *(undefined2 *)ppppuVar6 = 0;
  }
  if (local_40 != 0) {
    do {
      FUN_0081feb2(local_38,uVar9);
      uVar5 = local_38[0];
      if (((short)local_38[0] == 10) && (iVar1 = *(int *)(param_1_00 + 8), iVar1 != 1)) {
        if (iVar1 == 2) {
          uVar5 = 0xd;
          goto LAB_008bee40;
        }
        if (iVar1 != 3) {
          if (PTR_FUN_03235c4c != (undefined *)0x0) {
            FUN_00840480("..\\..\\src\\common\\txtstrm.cpp",0x1a6,"wxTextOutputStream::WriteString",
                         "Assert failure",L"unknown EOL mode in wxTextOutputStream");
          }
          goto LAB_008bee3c;
        }
        psVar2 = &DAT_00d31a20;
        do {
          psVar8 = psVar2;
          psVar2 = psVar8 + 1;
        } while (*psVar8 != 0);
        FUN_00473ccc(&DAT_00d31a20,(int)(psVar8 + -0x698d10) >> 1);
      }
      else {
LAB_008bee3c:
        uVar5 = uVar5 & 0xffff;
LAB_008bee40:
        FID_conflict_append(1,uVar5);
      }
      uVar9 = uVar9 + 1;
    } while (uVar9 < local_40);
  }
  ppppuVar6 = local_30[0];
  if (local_1c < 8) {
    ppppuVar6 = local_30;
  }
  FUN_008621a0(&local_3c,ppppuVar6,local_20,&local_40);
  local_4 = CONCAT31(local_4._1_3_,1);
  (**(code **)(**(int **)(param_1_00 + 4) + 0x28))(*local_3c,local_40,uVar4);
  local_c = (void *)((uint)local_c & 0xffffff00);
  ppvVar7 = (void **)FUN_00850350();
  if (unaff_EBX != ppvVar7) {
    *(short *)(unaff_EBX + 2) = *(short *)(unaff_EBX + 2) + -1;
    if (*(short *)(unaff_EBX + 2) == 0) {
      if (*(char *)((int)unaff_EBX + 10) != '\0') {
        _free(*unaff_EBX);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(unaff_EBX);
    }
    FUN_00850350();
  }
  _free(local_20);
  if (uStack_24 < 8) {
    ExceptionList = pvStack_14;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_38[0]);
}



int * __fastcall FUN_008bef60(int *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 local_30;
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  uVar2 = FUN_008be930(&stack0x00000004,param_1[3],1);
  local_4 = 0;
  (**(code **)(*param_1 + 8))(uVar2,uVar1);
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = pvStack_10;
  return param_1;
}



ulong FUN_008beff0(int param_1,int param_2,int param_3)

{
  uint uVar1;
  ulong uVar2;
  int iVar3;
  int iVar4;
  undefined **_Str;
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0ff8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    iVar3 = FUN_00432231(local_18);
    local_4 = 0;
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/wxcrt.h",0x34d,
                   "wxStrtoxCharType<int>::AsPointer","p == 0","passing non-NULL int is invalid",
                   uVar1);
    }
    if (DAT_032bd4d4 == 0) {
      DAT_032bd4d4 = FUN_00861440();
    }
    iVar4 = FUN_00850390(DAT_032bd4d4);
    if (iVar4 == 0) {
      _Str = &PTR_02bd3fc0;
    }
    else {
      _Str = (undefined **)(*(int *)(iVar3 + 4) + iVar4);
    }
    uVar2 = _strtoul((char *)_Str,(char **)0x0,param_3);
    FUN_00432214();
    ExceptionList = local_c;
    return uVar2;
  }
  if (7 < *(uint *)(param_1 + 0x18)) {
    uVar2 = _wcstoul(*(wchar_t **)(param_1 + 4),(wchar_t **)0x0,param_3);
    ExceptionList = local_c;
    return uVar2;
  }
  uVar2 = _wcstoul((wchar_t *)(param_1 + 4),(wchar_t **)0x0,param_3);
  ExceptionList = local_c;
  return uVar2;
}



float10 FUN_008bf110(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  undefined **ppuVar3;
  float10 fVar4;
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1028;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    iVar1 = FUN_00432231(local_18);
    local_4 = 0;
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/wxcrt.h",0x34d,
                   "wxStrtoxCharType<int>::AsPointer","p == 0","passing non-NULL int is invalid");
    }
    if (DAT_032bd4d4 == 0) {
      DAT_032bd4d4 = FUN_00861440();
    }
    iVar2 = FUN_00850390(DAT_032bd4d4);
    if (iVar2 == 0) {
      ppuVar3 = &PTR_02bd3fc0;
    }
    else {
      ppuVar3 = (undefined **)(*(int *)(iVar1 + 4) + iVar2);
    }
    fVar4 = (float10)FUN_00a467d3(ppuVar3,0);
    FUN_00432214();
    ExceptionList = local_c;
    return (float10)(double)fVar4;
  }
  if (7 < *(uint *)(param_1 + 0x18)) {
    fVar4 = (float10)FUN_00a47f1d(*(undefined4 *)(param_1 + 4),0,
                                  DAT_0323f878 ^ (uint)&stack0xffffffdc);
    ExceptionList = local_c;
    return fVar4;
  }
  fVar4 = (float10)FUN_00a47f1d(param_1 + 4,0,DAT_0323f878 ^ (uint)&stack0xffffffdc);
  ExceptionList = local_c;
  return fVar4;
}



undefined4 FUN_008bf220(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  uVar2 = FUN_0083fe30(local_30);
  local_4 = 0;
  uVar2 = FUN_008beff0(uVar2,param_2,param_3,uVar1);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return uVar2;
}



float10 FUN_008bf2a0(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  float10 fVar3;
  double local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_38;
  ExceptionList = &local_c;
  uVar2 = FUN_0083fe30(local_30);
  local_4 = 0;
  fVar3 = (float10)FUN_008bf110(uVar2,param_2,uVar1);
  local_38 = (double)fVar3;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return (float10)local_38;
}



void __thiscall FUN_008bf320(int **param_1_00,int param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined auStack_40 [12];
  undefined auStack_34 [4];
  undefined4 uStack_30;
  int iStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1060;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_40;
  ExceptionList = &local_c;
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 != 0)) &&
     ((param_1 < 2 || (0x24 < param_1)))) {
    FUN_00840480("..\\..\\src\\common\\txtstrm.cpp",0x98,"wxTextInputStream::Read32",
                 "!base || (base > 1 && base <= 36)",L"invalid base",
                 DAT_0323f878 ^ (uint)&stack0xffffffb8);
  }
  cVar1 = (**(code **)(**param_1_00 + 0x10))();
  if (cVar1 != '\0') {
    FUN_008beb60(auStack_34);
    uStack_4 = 0;
    if (iStack_20 == 0) {
      _free(pvStack_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
    }
    else {
      uVar2 = FUN_00432231(auStack_40);
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_008bf220(uVar2,0,param_1);
      FUN_00432214();
      _free(pvStack_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall thunk_FUN_008bf320(int **param_1_00,int param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined auStack_40 [12];
  undefined auStack_34 [4];
  undefined4 uStack_30;
  int iStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint uStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1060;
  pvStack_c = ExceptionList;
  uStack_10 = DAT_0323f878 ^ (uint)auStack_40;
  ExceptionList = &pvStack_c;
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 != 0)) &&
     ((param_1 < 2 || (0x24 < param_1)))) {
    FUN_00840480("..\\..\\src\\common\\txtstrm.cpp",0x98,"wxTextInputStream::Read32",
                 "!base || (base > 1 && base <= 36)",L"invalid base",
                 DAT_0323f878 ^ (uint)&stack0xffffffb8);
  }
  cVar1 = (**(code **)(**param_1_00 + 0x10))();
  if (cVar1 != '\0') {
    FUN_008beb60(auStack_34);
    uStack_4 = 0;
    if (iStack_20 == 0) {
      _free(pvStack_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
    }
    else {
      uVar2 = FUN_00432231(auStack_40);
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_008bf220(uVar2,0,param_1);
      FUN_00432214();
      _free(pvStack_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
    }
  }
  ExceptionList = pvStack_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_008bf460(int **param_1)

{
  char cVar1;
  undefined4 uVar2;
  float10 fVar3;
  double dStack_48;
  undefined auStack_40 [12];
  undefined auStack_34 [4];
  undefined4 uStack_30;
  int iStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd10a0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&dStack_48;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(**param_1 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffb4);
  if (cVar1 != '\0') {
    FUN_008beb60(auStack_34);
    uStack_4 = 0;
    if (iStack_20 == 0) {
      _free(pvStack_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
    }
    else {
      uVar2 = FUN_00432231(auStack_40);
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      fVar3 = (float10)FUN_008bf2a0(uVar2,0);
      dStack_48 = (double)fVar3;
      FUN_00432214();
      _free(pvStack_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008bf550(int param_1_00,undefined4 param_1)

{
  char cVar1;
  DWORD DVar2;
  undefined auStack_78 [3];
  undefined4 local_75;
  undefined local_71;
  uint local_70;
  undefined local_6c [4];
  uint local_68;
  undefined4 local_58;
  uint local_54;
  void *local_50;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd10f9;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_78;
  ExceptionList = &local_c;
  local_70 = 0;
  if ((DAT_032bdb68 == 0) || (DVar2 = GetCurrentThreadId(), DVar2 == DAT_032bdb68)) {
    local_71 = DAT_03235e94;
    DAT_03235e94 = 0;
  }
  else {
    local_71 = FUN_00842f30(0);
  }
  local_75 = CONCAT31(local_75._1_3_,local_71);
  local_4 = 0;
  FUN_008757d0(0,param_1_00 + 0x24,0);
  local_4._0_1_ = 1;
  cVar1 = FUN_00876940(0);
  if (cVar1 != '\0') {
    FUN_004325b6(L"Content Type");
    local_4 = CONCAT31(local_4._1_3_,2);
    local_70 = 1;
    FUN_008789e0(local_6c,param_1,0);
  }
  local_4 = 1;
  if ((local_70 & 1) != 0) {
    _free(local_50);
    if (7 < local_54) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_68);
    }
    local_54 = 7;
    local_58 = 0;
    local_68 = local_68 & 0xffff0000;
  }
  local_4 = local_4 & 0xffffff00;
  FUN_008767d0();
  local_4 = 0xffffffff;
  if ((DAT_032bdb68 == 0) || (DVar2 = GetCurrentThreadId(), DVar2 == DAT_032bdb68)) {
    DAT_03235e94 = (undefined)local_75;
  }
  else {
    FUN_00842f30(local_75);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008bf6f0(int param_1_00,int param_1,undefined *param_2)

{
  undefined4 uVar1;
  int iVar2;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [24];
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  iVar2 = (int)param_2;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beff10;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)((int)param_2 + 0x14) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\mimetype.cpp",0x71,"wxFileTypeImpl::Init","!ext.empty()");
    }
  }
  else {
    FUN_0081feb2(&param_2);
    if (param_2 != (undefined *)0x2e) {
      FUN_00855e10();
    }
    FID_conflict_append(iVar2,0);
    if (param_1_00 != param_1) {
      FID_conflict_assign(param_1,0);
    }
    if (*(int *)(param_1 + 0x14) == 0) {
      param_2 = &stack0xffffff98;
      uVar1 = FUN_008529d0(local_30);
      local_4 = 0;
      iVar2 = FUN_008533d0(local_54,uVar1);
      local_4 = CONCAT31(local_4._1_3_,1);
      if (param_1_00 != iVar2) {
        FID_conflict_assign(iVar2,0);
      }
      _free(local_38);
      if (7 < local_3c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_3c = 7;
      local_40 = 0;
      local_50 = local_50 & 0xffff0000;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008bf870(undefined4 param_1_00,int param_1)

{
  wchar_t wVar1;
  char cVar2;
  wchar_t *pwVar3;
  DWORD DVar4;
  int iVar5;
  undefined4 uVar6;
  wchar_t *local_124;
  undefined auStack_108 [2];
  char local_106;
  undefined4 local_105;
  undefined local_101;
  wchar_t **local_100;
  wchar_t local_fc [18];
  wchar_t local_d8 [2];
  uint local_d4;
  undefined4 local_c4;
  uint local_c0;
  void *local_bc;
  undefined local_b4 [4];
  uint local_b0;
  int local_a0;
  uint local_9c;
  void *local_98;
  wchar_t local_90 [2];
  uint local_8c;
  undefined4 local_7c;
  uint local_78;
  void *local_74;
  wchar_t local_6c [2];
  uint local_68;
  undefined4 local_58;
  uint local_54;
  void *local_50;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd1182;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_108;
  ExceptionList = &local_c;
  local_78 = 7;
  local_7c = 0;
  local_8c = local_8c & 0xffff0000;
  local_74 = (void *)0x0;
  local_124 = (wchar_t *)0x0;
  local_4 = 0;
  FID_conflict_append(param_1_00);
  pwVar3 = L"\\DefaultIcon";
  do {
    wVar1 = *pwVar3;
    pwVar3 = pwVar3 + 1;
  } while (wVar1 != L'\0');
  local_124 = L"\\DefaultIcon";
  FUN_00473ccc();
  if ((DAT_032bdb68 == 0) || (DVar4 = GetCurrentThreadId(), DVar4 == DAT_032bdb68)) {
    local_101 = DAT_03235e94;
    DAT_03235e94 = 0;
  }
  else {
    local_124 = L"쒃\xeb04ꀋ应̣ᶈ应̣좊䒈ᜤ䲈ᬤ赓⒔\x90";
    local_101 = FUN_00842f30();
  }
  local_105 = CONCAT31(local_105._1_3_,local_101);
  local_124 = local_90;
  local_4._0_1_ = 1;
  FUN_008757d0(0);
  local_4._0_1_ = 2;
  local_124 = L"ࢿ";
  cVar2 = FUN_00876940();
  if (cVar2 != '\0') {
    local_c0 = 7;
    local_c4 = 0;
    local_d4 = local_d4 & 0xffff0000;
    local_bc = (void *)0x0;
    local_4._0_1_ = 3;
    local_124 = L"赓⑔剈䒍瀤赐⒌à";
    FUN_004325b6();
    local_124 = local_d8;
    local_4._0_1_ = 4;
    local_106 = FUN_008789e0(local_b4);
    local_4._0_1_ = 3;
    local_124 = L"쒃㤄Ⓖ\x80";
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      local_124 = L"쒃㠄⑜༖\xf184\x01匀譑쟄Ⰰ";
      FUN_00a3f6a1();
    }
    if (local_106 != '\0') {
      local_100 = &local_124;
      local_124 = (wchar_t *)0x2c;
      FUN_00852900(local_b4);
      local_100 = (wchar_t **)&stack0xfffffee0;
      local_124 = local_6c;
      local_4._0_1_ = 5;
      FUN_00852730();
      local_4._0_1_ = 6;
      if (local_a0 == 0) {
        local_124 = (wchar_t *)0x0;
        FID_conflict_assign(local_6c);
        local_124 = 
        L"\xf33b啴䒍栤赐⑌儤嗨ﲩ菿ࣄ蓆ᠤ\x01܀\xf03b୴ｪ偓캋賨떈跿⑌\xe820᫞ﾴ蒋됤"
        ;
        FUN_00432199();
      }
      if (param_1 != 0) {
        local_124 = local_fc;
        iVar5 = FUN_0088a3f0();
        local_4._0_1_ = 7;
        if (param_1 != iVar5) {
          local_124 = (wchar_t *)0x0;
          FID_conflict_assign(iVar5);
        }
        FUN_0040159c();
        local_124 = L"쒃褄⑆钋찤";
        uVar6 = FUN_00a4b994();
        *(undefined4 *)(param_1 + 0x24) = uVar6;
      }
      local_124 = L"쒃㤄ⒼÈ";
      _free(local_50);
      if (7 < local_54) {
                    // WARNING: Subroutine does not return
        local_124 = L"쒃謄⒔\x84";
        FUN_00a3f6a1();
      }
      local_54 = 7;
      local_58 = 0;
      local_68 = local_68 & 0xffff0000;
      local_124 = L"쒃㤄Ⓖ\x80";
      _free(local_98);
      if (7 < local_9c) {
                    // WARNING: Subroutine does not return
        local_124 = L"쒃謄⑔㍠勉겉萤";
        FUN_00a3f6a1();
      }
      local_9c = 7;
      local_a0 = 0;
      local_b0 = local_b0 & 0xffff0000;
      local_124 = L"쒃㤄⑼牜謍⑄偈⟨៻茀ӄ줳襦⑌赈⒌Ô";
      _free(local_bc);
      if (7 < local_c0) {
                    // WARNING: Subroutine does not return
        local_124 = L"쒃㌄曉䲉䠤貍퐤";
        FUN_00a3f6a1();
      }
      local_d4 = local_d4 & 0xffff0000;
      local_c0 = 7;
      local_c4 = 0;
      local_4._0_1_ = 1;
      FUN_008767d0();
      local_4 = (uint)local_4._1_3_ << 8;
      if ((DAT_032bdb68 == 0) || (DVar4 = GetCurrentThreadId(), DVar4 == DAT_032bdb68)) {
        DAT_03235e94 = (undefined)local_105;
      }
      else {
        local_124 = L"쒃\xeb04訉⑄ꈗ应̣貋ꠤ";
        FUN_00842f30();
      }
      local_124 = L"쒃㤄Ⓖ¤";
      _free(local_74);
      if (7 < local_78) {
                    // WARNING: Subroutine does not return
        local_124 = L"쒃뀄\xe901\x93";
        FUN_00a3f6a1();
      }
      goto LAB_008bfc97;
    }
    local_124 = L"쒃㤄⑼牜謍⑌先胨៺茀ӄ貍퐤";
    _free(local_bc);
    if (7 < local_c0) {
                    // WARNING: Subroutine does not return
      local_124 = L"쒃贄⒌Ô";
      FUN_00a3f6a1();
    }
  }
  local_4._0_1_ = 1;
  FUN_008767d0();
  local_4 = (uint)local_4._1_3_ << 8;
  if ((DAT_032bdb68 == 0) || (DVar4 = GetCurrentThreadId(), DVar4 == DAT_032bdb68)) {
    DAT_03235e94 = (undefined)local_105;
  }
  else {
    local_124 = L"쒃\xeb04訉⑄ꈗ应̣貋ꠤ";
    FUN_00842f30();
  }
  local_124 = L"쒃㤄Ⓖ¤";
  _free(local_74);
  if (7 < local_78) {
                    // WARNING: Subroutine does not return
    local_124 = L"쒃㈄诀⒌Đ";
    FUN_00a3f6a1();
  }
LAB_008bfc97:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_008bfcd0(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(8);
  uVar3 = 0;
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    uVar3 = FUN_008a2a80(uVar1);
  }
  local_4 = 0xffffffff;
  FUN_008bf6f0(param_1,param_2);
  ExceptionList = local_c;
  return uVar3;
}



void FUN_008bfd50(undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 ****ppppuVar3;
  DWORD DVar4;
  undefined4 local_bc;
  char local_b6;
  undefined local_b5;
  undefined local_b4 [4];
  uint local_b0;
  undefined4 local_a0;
  uint local_9c;
  void *local_98;
  undefined local_90 [4];
  undefined4 ****local_8c [4];
  undefined4 local_7c;
  uint local_78;
  void *local_74;
  undefined local_6c [4];
  undefined4 local_68;
  undefined4 local_58;
  uint local_54;
  void *local_50;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd11ec;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_bc;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff34;
  ExceptionList = &local_c;
  local_78 = 7;
  local_7c = 0;
  local_8c[0] = (undefined4 ****)((uint)local_8c[0] & 0xffff0000);
  local_74 = (void *)0x0;
  local_4 = 0;
  FUN_0081feb2(&local_bc,0);
  if (local_bc != 0x2e) {
    if (local_78 == 0) {
      FUN_004181eb(1,local_7c,uVar2);
    }
    ppppuVar3 = local_8c[0];
    if (local_78 < 8) {
      ppppuVar3 = local_8c;
    }
    *(undefined2 *)ppppuVar3 = 0x2e;
    local_7c = 1;
    ppppuVar3 = local_8c[0];
    if (local_78 < 8) {
      ppppuVar3 = local_8c;
    }
    *(undefined2 *)((int)ppppuVar3 + 2) = 0;
  }
  FID_conflict_append(param_1,0,0xffffffff);
  if ((DAT_032bdb68 == 0) || (DVar4 = GetCurrentThreadId(), DVar4 == DAT_032bdb68)) {
    local_b5 = DAT_03235e94;
    DAT_03235e94 = 0;
  }
  else {
    local_b5 = FUN_00842f30(0);
  }
  local_bc = CONCAT31(local_bc._1_3_,local_b5);
  local_54 = 7;
  local_58 = 0;
  local_68 = (uint)local_68._2_2_ << 0x10;
  local_50 = (void *)0x0;
  local_4._0_1_ = 2;
  FUN_008757d0(0,local_90,0);
  local_4._0_1_ = 3;
  cVar1 = FUN_00876940(0);
  if (cVar1 == '\0') {
    local_4._0_1_ = 2;
    FUN_008767d0();
    _free(local_50);
    if (7 < local_54) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_68);
    }
    local_54 = 7;
    local_58 = 0;
    local_68 = local_68 & 0xffff0000;
    local_4 = (uint)local_4._1_3_ << 8;
    if ((DAT_032bdb68 == 0) || (DVar4 = GetCurrentThreadId(), DVar4 == DAT_032bdb68)) {
      DAT_03235e94 = (undefined)local_bc;
    }
    else {
      FUN_00842f30(local_bc);
    }
    _free(local_74);
    if (7 < local_78) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_8c[0]);
    }
  }
  else {
    FUN_004325b6(PTR_DAT_03236318);
    local_4._0_1_ = 4;
    local_b6 = FUN_008789e0(local_b4,local_6c,0);
    local_4._0_1_ = 3;
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b0);
    }
    if (local_b6 == '\0') {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 5;
      FUN_008bfcd0(local_b4,param_1);
      _free(local_98);
      if (7 < local_9c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_b0);
      }
      local_9c = 7;
      local_a0 = 0;
      local_b0 = local_b0 & 0xffff0000;
      local_4._0_1_ = 2;
      FUN_008767d0();
      _free(local_50);
      if (7 < local_54) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_68);
      }
      local_54 = 7;
      local_58 = 0;
      local_68 = local_68 & 0xffff0000;
      local_4 = (uint)local_4._1_3_ << 8;
      if ((DAT_032bdb68 == 0) || (DVar4 = GetCurrentThreadId(), DVar4 == DAT_032bdb68)) {
        DAT_03235e94 = (undefined)local_bc;
      }
      else {
        FUN_00842f30(local_bc);
      }
      _free(local_74);
    }
    else {
      FUN_008bfcd0(local_6c,param_1);
      local_4._0_1_ = 2;
      FUN_008767d0();
      _free(local_50);
      if (7 < local_54) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_68);
      }
      local_54 = 7;
      local_58 = 0;
      local_68 = local_68 & 0xffff0000;
      local_4 = (uint)local_4._1_3_ << 8;
      if ((DAT_032bdb68 == 0) || (DVar4 = GetCurrentThreadId(), DVar4 == DAT_032bdb68)) {
        DAT_03235e94 = (undefined)local_bc;
      }
      else {
        FUN_00842f30(local_bc);
      }
      _free(local_74);
    }
    if (7 < local_78) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_8c[0]);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008c0190(undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  DWORD DVar3;
  undefined auStack_c0 [2];
  char local_be;
  undefined4 local_bd;
  undefined local_b9;
  undefined local_b4 [4];
  undefined4 local_b0;
  uint local_9c;
  void *local_98;
  undefined local_90 [4];
  undefined4 local_8c;
  undefined4 local_7c;
  uint local_78;
  void *local_74;
  undefined local_6c [4];
  undefined4 local_68;
  uint local_54;
  void *local_50;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1251;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_c0;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff34;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_u_MIME_Database_Content_Type__0323803c);
  local_4 = 0;
  FID_conflict_append(param_1,0,0xffffffff);
  if ((DAT_032bdb68 == 0) || (DVar3 = GetCurrentThreadId(), DVar3 == DAT_032bdb68)) {
    local_b9 = DAT_03235e94;
    DAT_03235e94 = 0;
  }
  else {
    local_b9 = FUN_00842f30(0,uVar2);
  }
  local_bd = CONCAT31(local_bd._1_3_,local_b9);
  local_78 = 7;
  local_7c = 0;
  local_8c = (uint)local_8c._2_2_ << 0x10;
  local_74 = (void *)0x0;
  local_4._0_1_ = 2;
  FUN_008757d0(0,local_6c,0);
  local_4._0_1_ = 3;
  cVar1 = FUN_00876940(0);
  if (cVar1 != '\0') {
    FUN_004325b6(L"Extension");
    local_4._0_1_ = 4;
    local_be = FUN_008789e0(local_b4,local_90,0);
    local_4._0_1_ = 3;
    _free(local_98);
    if (7 < local_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b0);
    }
    if (local_be != '\0') {
      FUN_008bfd50(local_90);
      local_4._0_1_ = 2;
      FUN_008767d0();
      _free(local_74);
      if (7 < local_78) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_8c);
      }
      local_78 = 7;
      local_7c = 0;
      local_8c = local_8c & 0xffff0000;
      local_4 = (uint)local_4._1_3_ << 8;
      if ((DAT_032bdb68 == 0) || (DVar3 = GetCurrentThreadId(), DVar3 == DAT_032bdb68)) {
        DAT_03235e94 = (undefined)local_bd;
      }
      else {
        FUN_00842f30(local_bd);
      }
      _free(local_50);
      if (7 < local_54) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_68);
      }
      goto LAB_008c043d;
    }
  }
  local_4._0_1_ = 2;
  FUN_008767d0();
  _free(local_74);
  if (7 < local_78) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_8c);
  }
  local_78 = 7;
  local_7c = 0;
  local_8c = local_8c & 0xffff0000;
  local_4 = (uint)local_4._1_3_ << 8;
  if ((DAT_032bdb68 == 0) || (DVar3 = GetCurrentThreadId(), DVar3 == DAT_032bdb68)) {
    DAT_03235e94 = (undefined)local_bd;
  }
  else {
    FUN_00842f30(local_bd);
  }
  _free(local_50);
  if (7 < local_54) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_68);
  }
LAB_008c043d:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008c0470(void)

{
  FUN_0087b490();
  FUN_0083e850(wxObject::vftable);
  FUN_008c5490();
  FUN_0083e850(wxObject::vftable);
  return;
}



void __thiscall FUN_008c04b0(int **param_1_00,int *param_1)

{
  if (*param_1_00 != param_1) {
    if (*param_1_00 != (int *)0x0) {
      (**(code **)(**param_1_00 + 4))(1);
    }
    *param_1_00 = param_1;
  }
  return;
}



void __fastcall FUN_008c04e0(int **param_1)

{
  if (*param_1 != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x008c04eb. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**param_1 + 0x6c))();
    return;
  }
  return;
}



undefined4 FUN_008c04f0(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\init.cpp",0x44,"wxDummyConsoleApp::OnRun","Assert failure",
                 L"unreachable code");
  }
  return 0;
}



void __fastcall FUN_008c0520(int **param_1)

{
  if (*param_1 != (int *)0x0) {
    DAT_032bcb68 = 0;
  }
  if (*param_1 != (int *)0x0) {
    (**(code **)(**param_1 + 4))(1);
  }
  return;
}



void FUN_008c0550(void)

{
  int iVar1;
  
  if (DAT_032bde68 != 0) {
    iVar1 = 0;
    if (0 < DAT_032bde64) {
      do {
        _free(*(void **)(DAT_032bde68 + iVar1 * 4));
        iVar1 = iVar1 + 1;
      } while (iVar1 < DAT_032bde64);
    }
    if (DAT_032bde68 != 0) {
      FUN_00a3f66c(DAT_032bde68);
      DAT_032bde68 = 0;
    }
    DAT_032bde64 = 0;
  }
  return;
}



void FUN_008c05b0(void)

{
  int *piVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)FUN_00842ed0(0);
  if (puVar2 != (undefined4 *)0x0) {
    (**(code **)*puVar2)(1);
  }
  if (DAT_032bcb68 != (int *)0x0) {
    (**(code **)(*DAT_032bcb68 + 0x6c))();
    piVar1 = DAT_032bcb68;
    DAT_032bcb68 = (int *)0x0;
    if (piVar1 != (int *)0x0) {
      (**(code **)(*piVar1 + 4))(1);
    }
  }
  FUN_008994d0(&PTR_vftable_032373b8);
  FUN_008c0550();
  puVar2 = (undefined4 *)FUN_00893180(0);
  if (puVar2 != (undefined4 *)0x0) {
    (**(code **)*puVar2)(1);
  }
  puVar2 = (undefined4 *)FUN_00842ed0(0);
  if (puVar2 != (undefined4 *)0x0) {
    (**(code **)*puVar2)(1);
  }
  return;
}



void FUN_008c0640(void)

{
                    // WARNING: Could not recover jumptable at 0x008c064b. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*DAT_032bcb68 + 100))();
  return;
}



void FUN_008c0650(void)

{
  undefined *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1288;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_10 = &DAT_032bde48;
  FUN_0086bd90(DAT_0323f878 ^ (uint)&local_10);
  DAT_032bde60 = DAT_032bde60 + -1;
  local_4 = 0;
  if (DAT_032bde60 == 0) {
    FUN_008c05b0();
  }
  local_4 = 0xffffffff;
  FUN_0086bda0();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_008c06c0(char *param_1)

{
  if (*param_1 != '\0') {
    FUN_008c0650();
    return;
  }
  return;
}



undefined4 __thiscall FUN_008c06d0(undefined4 param_1_00,short **param_1)

{
  short sVar1;
  short *psVar2;
  short *psVar3;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9388;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0083f720(DAT_0323f878 ^ (uint)&stack0xffffffc0);
  FUN_00853f60();
  if (param_1 != (short **)0x0) {
    psVar2 = *param_1;
    while (psVar2 != (short *)0x0) {
      local_2c = local_2c & 0xffff0000;
      local_18 = 7;
      local_1c = 0;
      psVar3 = psVar2;
      do {
        sVar1 = *psVar3;
        psVar3 = psVar3 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign(psVar2,(int)psVar3 - (int)(psVar2 + 1) >> 1);
      local_14 = (void *)0x0;
      local_4 = 0;
      param_1 = param_1 + 1;
      FUN_00854700(local_30,1);
      local_4 = 0xffffffff;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
      psVar2 = *param_1;
    }
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_008c07b0(void)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  undefined auStack_e8 [12];
  undefined4 uStack_dc;
  undefined4 uStack_d8;
  char *pcStack_d4;
  undefined4 uStack_d0;
  char *pcStack_cc;
  undefined local_bc [4];
  uint local_b8;
  undefined4 local_a8;
  uint local_a4;
  void *local_a0;
  undefined *local_98;
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd12d6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00898a70();
  cVar1 = FUN_00899770();
  if (cVar1 != '\0') {
    ExceptionList = local_c;
    return 1;
  }
  local_98 = auStack_e8;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(1);
  if (cVar1 != '\0') {
    pcStack_cc = (char *)0x8c0820;
    FUN_004325b6();
    local_4 = 0;
    pcStack_cc = (char *)0x8c0839;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,1);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      pcStack_cc = (char *)0x8c0867;
      FUN_0084d360();
    }
    else {
      pcStack_cc = local_bc;
      uStack_d0 = 0x8c085b;
      FUN_0084f210();
    }
    pcStack_cc = (char *)0x8c0874;
    FUN_008433c0();
    pcStack_cc = "DoCommonPostInit";
    uStack_d0 = 0x105;
    pcStack_d4 = "..\\..\\src\\common\\init.cpp";
    uStack_d8 = 1;
    local_4._0_1_ = 2;
    uStack_dc = 0x8c089b;
    uVar3 = FUN_008423d0();
    local_4._0_1_ = 3;
    FUN_008854f0();
    uStack_d0 = 0x8c08b5;
    pcStack_cc = (char *)uVar3;
    FUN_0083fe90();
    local_4._0_1_ = 2;
    FUN_00842440();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_0081b5bc();
    pcStack_cc = (char *)0x8c08e4;
    _free(local_a0);
    if (7 < local_a4) {
                    // WARNING: Subroutine does not return
      pcStack_cc = &UNK_008c08fc;
      FUN_00a3f6a1();
    }
    local_a4 = 7;
    local_a8 = 0;
    local_b8 = local_b8 & 0xffff0000;
    pcStack_cc = (char *)0x8c0920;
    _free(local_64);
    if (7 < local_68) {
                    // WARNING: Subroutine does not return
      pcStack_cc = &UNK_008c0933;
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_008c0970(int *param_1,undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  HMODULE pHVar4;
  int *piVar5;
  undefined4 *puVar6;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd131b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00842f00(DAT_0323f878 ^ (uint)&stack0xffffffdc);
  FUN_00844610();
  iVar3 = FUN_008a65e0();
  if (iVar3 == 0) {
    pHVar4 = GetModuleHandleW((LPCWSTR)0x0);
    FUN_008a65f0(pHVar4);
  }
  piVar1 = DAT_032bcb68;
  local_4 = 0;
  if (DAT_032bcb68 == (int *)0x0) {
    if (DAT_032bcb6c != (code *)0x0) {
      piVar5 = (int *)(*DAT_032bcb6c)();
      FUN_008c04b0(piVar5);
      DAT_032bcb68 = piVar5;
    }
    piVar5 = (int *)operator_new(0x154);
    local_4._0_1_ = 1;
    if (piVar5 == (int *)0x0) {
      piVar5 = (int *)0x0;
    }
    else {
      FUN_00840db0();
      *piVar5 = (int)wxDummyConsoleApp::vftable;
      piVar5[0x10] = (int)wxDummyConsoleApp::vftable;
    }
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_008c04b0(piVar5);
    DAT_032bcb68 = piVar5;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar1 == (int *)0x0)) {
    FUN_008402e0("..\\..\\src\\common\\init.cpp",0x4c,"wxAppPtrBase::operator ->","m_ptr != 0",0);
  }
  cVar2 = (**(code **)(*piVar1 + 0x50))(param_1,param_2);
  if (cVar2 != '\0') {
    piVar1[0x12] = *param_1;
    FUN_008c06d0(param_2);
    local_c._0_1_ = 2;
    cVar2 = FUN_008c07b0();
    if (cVar2 != '\0') {
      puVar6 = (undefined4 *)FUN_00842ed0(0);
      if (puVar6 != (undefined4 *)0x0) {
        (**(code **)*puVar6)(1);
      }
      local_c = (void *)0xffffffff;
      FUN_008c0520();
      ExceptionList = piVar1;
      return 1;
    }
    local_c = (void *)((uint)local_c._1_3_ << 8);
    (**(code **)(*piVar1 + 0x6c))();
  }
  local_c = (void *)0xffffffff;
  FUN_008c0520();
  ExceptionList = piVar1;
  return 0;
}



undefined FUN_008c0b20(undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1348;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0086bd90(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  if (DAT_032bde60 != 0) {
    local_4 = 0xffffffff;
    DAT_032bde60 = DAT_032bde60 + 1;
    FUN_0086bda0();
    ExceptionList = local_c;
    return 1;
  }
  DAT_032bde60 = DAT_032bde60 + 1;
  uVar1 = FUN_008c0970(&param_1,param_2);
  local_4 = 0xffffffff;
  FUN_0086bda0();
  ExceptionList = local_c;
  return uVar1;
}



undefined4 FUN_008c0bd0(undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bd137d;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  cVar1 = FUN_008c0b20(*param_1,param_2);
  local_8 = 0;
  if (cVar1 == '\0') {
    puVar2 = (undefined4 *)FUN_00842ed0(0);
    if (puVar2 != (undefined4 *)0x0) {
      (**(code **)*puVar2)(1);
    }
  }
  else {
    local_8._0_1_ = 1;
    local_8._1_3_ = 0;
    cVar1 = (**(code **)(*DAT_032bcb68 + 0x54))();
    if (cVar1 != '\0') {
      local_8._0_1_ = 2;
      uVar3 = (**(code **)(*DAT_032bcb68 + 0x5c))();
      local_8 = CONCAT31(local_8._1_3_,1);
      (**(code **)(*DAT_032bcb68 + 100))();
      local_8 = 0xffffffff;
      FUN_008c0650();
      ExceptionList = local_10;
      return uVar3;
    }
    local_8 = 0xffffffff;
    FUN_008c0650();
  }
  ExceptionList = local_10;
  return 0xffffffff;
}



undefined4 Catch_All_008c0c90(void)

{
  (**(code **)(*DAT_032bcb68 + 0x90))();
  return 0x8c0ca6;
}



uint FUN_008c0cd0(char *param_1,uint param_2,byte *param_3,uint param_4)

{
  byte bVar1;
  uint uVar2;
  
  if (param_3 == (byte *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\base64.cpp",0x17,"wxBase64Encode",&DAT_00d3b5dc,
                   L"NULL input buffer");
    }
    return 0xffffffff;
  }
  uVar2 = 0;
  if (2 < param_4) {
    do {
      uVar2 = uVar2 + 4;
      if (param_1 != (char *)0x0) {
        if (param_2 < uVar2) {
          return 0xffffffff;
        }
        *param_1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[*param_3 >> 2]
        ;
        param_1[1] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                     [(*param_3 & 3) << 4 | (uint)(param_3[1] >> 4)];
        param_1[2] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                     [(param_3[1] & 0xf) * 4 | (uint)(param_3[2] >> 6)];
        param_1[3] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                     [param_3[2] & 0x3f];
        param_1 = param_1 + 4;
      }
      param_4 = param_4 - 3;
      param_3 = param_3 + 3;
    } while (2 < param_4);
  }
  if ((param_4 != 0) && (uVar2 = uVar2 + 4, param_1 != (char *)0x0)) {
    if (param_2 < uVar2) {
      return 0xffffffff;
    }
    if (param_4 == 2) {
      bVar1 = param_3[1];
    }
    else {
      bVar1 = 0;
    }
    *param_1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[*param_3 >> 2];
    param_1[1] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                 [(*param_3 & 3) << 4 | (uint)(bVar1 >> 4)];
    if (param_4 == 2) {
      param_1[2] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                   [(bVar1 & 0xf) * 4];
      param_1[3] = '=';
      return uVar2;
    }
    param_1[2] = '=';
    param_1[3] = '=';
  }
  return uVar2;
}



uint FUN_008c0e10(byte *param_1,uint param_2,byte *param_3,int param_4,int param_5,byte **param_6)

{
  byte bVar1;
  char cVar2;
  uint3 uVar3;
  bool bVar4;
  byte *pbVar5;
  int iVar6;
  int iVar7;
  byte *pbVar8;
  char local_9;
  undefined4 local_8;
  uint local_4;
  
  if (param_3 == (byte *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\base64.cpp",0x4c,"wxBase64Decode",&DAT_00d3b65c,
                   L"NULL input buffer");
    }
    return 0xffffffff;
  }
  local_4 = 0;
  if (param_4 == -1) {
    pbVar5 = param_3;
    do {
      bVar1 = *pbVar5;
      pbVar5 = pbVar5 + 1;
    } while (bVar1 != 0);
    param_4 = (int)pbVar5 - (int)(param_3 + 1);
  }
  iVar7 = 0;
  bVar4 = false;
  if (param_4 != 0) {
    iVar6 = 0;
    pbVar5 = param_3;
    do {
      cVar2 = (&DAT_00d3b660)[*pbVar5];
      if (cVar2 == -0x38) {
        if (param_5 != 1) goto LAB_008c0f76;
      }
      else if (cVar2 == -0x37) {
LAB_008c0f76:
        if (param_5 != 2) {
          iVar6 = -1;
          param_4 = 1;
        }
      }
      else {
        if (cVar2 == -0x36) {
          bVar4 = true;
          if (iVar6 == 3) {
            iVar7 = 1;
            local_8 = local_8 & 0xffffff;
          }
          else {
            if (((iVar6 != 2) || (param_4 = param_4 + -1, param_4 == 0)) ||
               (pbVar5 = pbVar5 + 1, *pbVar5 != 0x3d)) goto LAB_008c0e91;
            uVar3 = (uint3)local_8;
            local_8 = (uint)(uVar3 & 0xffff);
            iVar7 = 2;
          }
        }
        else {
          if (bVar4) {
LAB_008c0e91:
            iVar6 = -1;
            param_4 = 1;
            goto LAB_008c0efb;
          }
          *(char *)((int)&local_8 + iVar6) = cVar2;
          iVar6 = iVar6 + 1;
          if (iVar6 != 4) goto LAB_008c0efb;
        }
        local_4 = local_4 + (3 - iVar7);
        pbVar8 = param_1;
        if (param_1 != (byte *)0x0) {
          if (param_2 < local_4) {
            return 0xffffffff;
          }
          *param_1 = local_8._1_1_ >> 4 | (char)local_8 * '\x04';
          pbVar8 = param_1 + 1;
          if (iVar7 != 2) {
            *pbVar8 = local_8._2_1_ >> 2 | local_8._1_1_ << 4;
            pbVar8 = param_1 + 2;
            if (iVar7 == 0) {
              pbVar8 = param_1 + 3;
              param_1[2] = local_8._2_1_ << 6 | local_8._3_1_;
            }
          }
        }
        iVar6 = 0;
        param_1 = pbVar8;
      }
LAB_008c0efb:
      pbVar5 = pbVar5 + 1;
      param_4 = param_4 + -1;
    } while (param_4 != 0);
    if (iVar6 != 0) {
      if (param_6 != (byte **)0x0) {
        *param_6 = pbVar5 + (-1 - (int)param_3);
      }
      return 0xffffffff;
    }
  }
  return local_4;
}



undefined4 *
FUN_008c0fd0(undefined4 *param_1,char *param_2,int param_3,undefined4 param_4,undefined4 param_5)

{
  void **ppvVar1;
  char cVar2;
  uint uVar3;
  void **ppvVar4;
  void *pvVar5;
  char *pcVar6;
  undefined4 uVar7;
  int iVar8;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd13a8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  ppvVar4 = (void **)operator_new(0x10);
  if (ppvVar4 == (void **)0x0) {
    ppvVar4 = (void **)0x0;
  }
  else {
    pvVar5 = _malloc(0x400);
    *ppvVar4 = pvVar5;
    ppvVar4[1] = (void *)0x400;
    ppvVar4[2] = (void *)0x0;
    ppvVar4[3] = (void *)0x0;
  }
  ppvVar4[3] = (void *)((int)ppvVar4[3] + 1);
  local_4 = 0;
  if (param_2 == (char *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\base64.cpp",0xe2,"wxBase64Decode",&DAT_00d3b65c,
                   L"NULL input buffer",uVar3);
    }
    ppvVar4[3] = (void *)((int)ppvVar4[3] + 1);
    ppvVar1 = ppvVar4 + 3;
    *ppvVar1 = (void *)((int)*ppvVar1 + -1);
    pvVar5 = *ppvVar1;
    *param_1 = ppvVar4;
    if (pvVar5 != (void *)0x0) {
      ExceptionList = local_c;
      return param_1;
    }
    pvVar5 = *ppvVar4;
  }
  else {
    if (param_3 == -1) {
      pcVar6 = param_2;
      do {
        cVar2 = *pcVar6;
        pcVar6 = pcVar6 + 1;
      } while (cVar2 != '\0');
      param_3 = (int)pcVar6 - (int)(param_2 + 1);
    }
    uVar3 = (uint)(param_3 * 3) >> 2;
    uVar7 = FUN_0084a2f0(uVar3);
    iVar8 = FUN_008c0e10(uVar7,uVar3,param_2,param_3,param_4,param_5);
    if (iVar8 == -1) {
      iVar8 = 0;
    }
    FUN_0084a290(iVar8);
    ppvVar4[3] = (void *)((int)ppvVar4[3] + 1);
    ppvVar1 = ppvVar4 + 3;
    *ppvVar1 = (void *)((int)*ppvVar1 + -1);
    pvVar5 = *ppvVar1;
    *param_1 = ppvVar4;
    if (pvVar5 != (void *)0x0) {
      ExceptionList = local_c;
      return param_1;
    }
    pvVar5 = *ppvVar4;
  }
  _free(pvVar5);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(ppvVar4);
}



undefined4 * __thiscall FUN_008c1110(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_008a8780(param_1);
  *param_1_00 = wxTextFile::vftable;
  param_1_00[0x13] = 0xffffffff;
  param_1_00[0x14] = 0;
  return param_1_00;
}



void __fastcall FUN_008c1140(int param_1)

{
  thunk_FUN_00855b70(param_1 + 4);
  return;
}



void FUN_008c1150(void)

{
  FUN_008871c0();
  return;
}



undefined4 __thiscall FUN_008c1160(undefined4 param_1_00,byte param_1)

{
  FUN_008ad450();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_008c1180(int *param_1_00,void *param_1)

{
  void *pvVar1;
  void **ppvVar2;
  void **ppvVar3;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(char *)(*param_1_00 + 10) == '\0') {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/buffer.h",0x135,
                   "wxCharTypeBuffer<char>::extend","this->m_data->m_owned",
                   "cannot extend non-owned buffer");
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(short *)(*param_1_00 + 8) != 1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/buffer.h",0x136,
                   "wxCharTypeBuffer<char>::extend","this->m_data->m_ref == 1",
                   "can\'t extend shared buffer");
    }
  }
  pvVar1 = _realloc(*(void **)*param_1_00,(int)param_1 + 1);
  if (pvVar1 == (void *)0x0) {
    return 0;
  }
  ppvVar2 = (void **)FUN_00850350();
  ppvVar3 = (void **)*param_1_00;
  if (ppvVar3 != ppvVar2) {
    *ppvVar3 = pvVar1;
    ppvVar3[1] = param_1;
    *(undefined *)(*param_1_00 + 10) = 1;
    return 1;
  }
  ppvVar3 = (void **)operator_new(0xc);
  if (ppvVar3 != (void **)0x0) {
    *ppvVar3 = pvVar1;
    ppvVar3[1] = param_1;
    *(undefined2 *)(ppvVar3 + 2) = 1;
    *(undefined *)((int)ppvVar3 + 10) = 1;
    *param_1_00 = (int)ppvVar3;
    return 1;
  }
  *param_1_00 = 0;
  return 1;
}



undefined FUN_008c1260(undefined4 param_1,int param_2)

{
  undefined uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int local_3c [2];
  char local_34;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd13e0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    if (param_2 == 1) {
      uVar3 = 1;
      goto LAB_008c12c3;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\textfile.cpp",0x43,"wxTextFile::OnOpen","Assert failure",
                   L"unknown open mode in wxTextFile::Open",DAT_0323f878 ^ (uint)&stack0xffffffb8);
    }
  }
  uVar3 = 0;
LAB_008c12c3:
  uVar2 = FUN_00432231(local_3c);
  local_4 = 0;
  FUN_00840a70(uVar2);
  local_4 = CONCAT31(local_4._1_3_,1);
  uVar1 = FUN_008887a0(local_30,uVar3,0x1b6);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  if ((local_34 != '\0') && (local_3c[0] != 0)) {
    _free(*(void **)(local_3c[0] + 0x1c));
    if (7 < *(uint *)(local_3c[0] + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(local_3c[0] + 4));
    }
    *(undefined4 *)(local_3c[0] + 0x18) = 7;
    *(undefined4 *)(local_3c[0] + 0x14) = 0;
    *(undefined2 *)(local_3c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_3c[0]);
  }
  ExceptionList = local_c;
  return uVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __thiscall FUN_008c13b0(int param_1_00,int *param_1)

{
  int *piVar1;
  char cVar2;
  DWORD DVar3;
  int iVar4;
  size_t _Size;
  int **ppiVar5;
  int *piVar6;
  void **ppvVar7;
  void *pvVar8;
  int *piVar9;
  int *piVar10;
  longlong lVar11;
  int aiStack_11ec [3];
  undefined4 uStack_11e0;
  char *pcStack_11dc;
  int *local_11d8;
  void **local_11b4;
  undefined4 local_11b0;
  int *local_11ac;
  int *local_11a8;
  int *local_11a4;
  int **local_11a0;
  int *local_119c;
  int *local_1198;
  int *local_1194;
  undefined local_118d;
  undefined local_118c [4];
  uint local_1188;
  undefined4 local_1178;
  uint local_1174;
  void *local_1170;
  int *local_1168;
  int *local_1164;
  int *local_1160;
  int *local_115c;
  int *local_114c;
  undefined4 local_112c;
  uint local_1030;
  int local_1020;
  uint local_101c;
  void *local_1018;
  undefined local_1010 [4096];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd14b0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_11b4;
  ExceptionList = &local_c;
  local_11a0 = (int **)param_1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x4c) == -1)) {
    local_11d8 = (int *)0x5c;
    pcStack_11dc = "..\\..\\src\\common\\textfile.cpp";
    uStack_11e0 = 0x8c1427;
    FUN_00840480();
  }
  local_11ac = (int *)0x0;
  local_11b4 = (void **)FUN_00850350();
  local_4 = 0;
  local_11b4 = (void **)FUN_00850350();
  local_4 = 1;
  if ((DAT_032bdb68 == 0) || (DVar3 = GetCurrentThreadId(), DVar3 == DAT_032bdb68)) {
    local_118d = DAT_03235e94;
    DAT_03235e94 = 0;
  }
  else {
    local_118d = FUN_00842f30();
  }
  local_11b0 = CONCAT31(local_11b0._1_3_,local_118d);
  local_4._0_1_ = 2;
  lVar11 = FUN_00888a70();
  piVar9 = (int *)lVar11;
  local_4 = CONCAT31(local_4._1_3_,1);
  local_1198 = piVar9;
  if ((DAT_032bdb68 == 0) || (DVar3 = GetCurrentThreadId(), DVar3 == DAT_032bdb68)) {
    DAT_03235e94 = (undefined)local_11b0;
  }
  else {
    FUN_00842f30();
  }
  if ((lVar11 == -1) || (lVar11 == 0)) {
    _Size = FUN_00887390();
    while (_Size != 0xffffffff) {
      if (_Size == 0) {
        if (local_11ac != (int *)0x0) goto LAB_008c15ad;
        local_4 = 0xffffffff;
        thunk_FUN_0043c1dd();
        goto LAB_008c1723;
      }
      piVar9 = (int *)(_Size + (int)local_11ac);
      cVar2 = FUN_008c1180();
      if (cVar2 == '\0') break;
      local_11d8 = (int *)0x8c179c;
      _memcpy((void *)((int)*local_11b4 + (int)local_11ac),local_1010,_Size);
      local_11ac = piVar9;
      _Size = FUN_00887390();
    }
  }
  else {
    local_11ac = piVar9;
    cVar2 = FUN_008c1180();
    if (cVar2 != '\0') {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (lVar11 = FUN_00887cc0(), lVar11 != 0)) {
        local_11d8 = (int *)0x7f;
        pcStack_11dc = "..\\..\\src\\common\\textfile.cpp";
        uStack_11e0 = 0x8c1534;
        FUN_00840480();
      }
      pvVar8 = *local_11b4;
      for (piVar9 = local_1198; piVar9 != (int *)0x0; piVar9 = (int *)((int)piVar9 - iVar4)) {
        iVar4 = FUN_00887390();
        if (iVar4 == -1) goto LAB_008c170d;
        if (iVar4 == 0) break;
        pvVar8 = (void *)((int)pvVar8 + iVar4);
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
         (((int *)((int)pvVar8 - (int)*local_11b4) != local_1198 ||
          ((int)(int *)((int)pvVar8 - (int)*local_11b4) < 0)))) {
        local_11d8 = (int *)0x9f;
        pcStack_11dc = "..\\..\\src\\common\\textfile.cpp";
        uStack_11e0 = 0x8c15aa;
        FUN_00840480();
      }
LAB_008c15ad:
      piVar9 = local_11ac;
      local_11d8 = (int *)0x8c15ca;
      FUN_008a4750();
      local_4._0_1_ = 3;
      if ((piVar9 < (int *)0x5) || (local_1020 != 0)) {
        FUN_0083f900();
        local_11b0 = 0;
        FUN_00847890();
        FUN_008478e0();
        piVar1 = (int *)local_11a0;
        local_11a8 = (int *)local_11a0;
        local_11a4 = local_119c;
        piVar9 = local_119c;
        piVar10 = (int *)local_11a0;
        while( true ) {
          if ((piVar1 != (int *)0xfffffffc) && ((piVar1 == (int *)0x0 || (piVar1 != local_1198)))) {
            FUN_00a3fb10();
          }
          if (local_11a4 == local_1194) break;
          if (piVar1 != (int *)0xfffffffc) {
            if (piVar1 == (int *)0x0) {
              FUN_00a3fb10();
            }
            if ((uint)piVar1[6] < 8) {
              piVar6 = piVar1 + 1;
            }
            else {
              piVar6 = (int *)piVar1[1];
            }
            if ((int *)((int)piVar6 + piVar1[5] * 2) <= local_11a4) {
              FUN_00a3fb10();
            }
          }
          local_11ac = (int *)(uint)*(ushort *)local_11a4;
          if (local_11ac == (int *)0xa) {
            if ((short)local_11b0 == 0xd) {
              local_1168 = piVar1;
              local_1164 = local_11a4;
              ppiVar5 = (int **)FUN_004226c0();
              piVar6 = *ppiVar5;
              local_114c = ppiVar5[1];
              if ((piVar6 != (int *)0xfffffffc) && ((piVar6 == (int *)0x0 || (piVar6 != piVar10))))
              {
                FUN_00a3fb10();
              }
              if (local_114c < piVar9) {
                FUN_004325b6();
                local_4._0_1_ = 0xb;
                FUN_00854700();
                FUN_0086a400();
                local_4._0_1_ = 3;
                FUN_0040159c();
              }
              else {
                FUN_0085c830();
                pcStack_11dc = (char *)0x8c1a52;
                local_11d8 = piVar10;
                FUN_00427fd0();
                local_112c = 0;
                local_4._0_1_ = 10;
                FUN_00854700();
                FUN_0086a400();
                local_4._0_1_ = 3;
                FUN_0040159c();
              }
            }
            else {
              pcStack_11dc = (char *)0x8c1af8;
              local_11d8 = piVar10;
              FUN_00427fd0();
              local_1170 = (void *)0x0;
              local_4._0_1_ = 0xc;
              FUN_00854700();
              FUN_0086a400();
              local_4._0_1_ = 3;
              _free(local_1170);
              if (7 < local_1174) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
              local_1174 = 7;
              local_1178 = 0;
              local_1188 = local_1188 & 0xffff0000;
            }
            local_1160 = piVar1;
            local_115c = local_11a4;
            ppiVar5 = (int **)FUN_004226c0();
LAB_008c1b7a:
            piVar9 = ppiVar5[1];
            piVar10 = *ppiVar5;
          }
          else if (local_11ac == (int *)0xd) {
            if ((short)local_11b0 == 0xd) {
              FUN_004325b6();
              local_4._0_1_ = 0xd;
              FUN_00854700();
              FUN_0086a400();
              local_4._0_1_ = 3;
              FUN_0040159c();
              ppiVar5 = (int **)FUN_0086f8b0();
              goto LAB_008c1b7a;
            }
          }
          else if ((short)local_11b0 == 0xd) {
            local_11a0 = (int **)FUN_0085c830();
            piVar6 = *local_11a0;
            if ((piVar6 != (int *)0xfffffffc) && ((piVar6 == (int *)0x0 || (piVar6 != piVar10)))) {
              FUN_00a3fb10();
            }
            if (local_11a0[1] < piVar9) {
              FUN_004325b6();
              local_4 = CONCAT31(local_4._1_3_,0xf);
              FUN_008ad650();
            }
            else {
              local_11a0 = (int **)&stack0xffffee30;
              local_11d8 = (int *)&stack0xffffee30;
              pcStack_11dc = (char *)0x8c18f7;
              FUN_0085c830();
              local_11a0 = &local_11d8;
              pcStack_11dc = (char *)0x8c1911;
              local_11d8 = piVar10;
              FUN_00852250();
              local_4 = CONCAT31(local_4._1_3_,0xe);
              FUN_008ad650();
            }
            local_4._0_1_ = 3;
            FUN_0040159c();
            piVar9 = local_11a4;
            piVar10 = piVar1;
          }
          local_11b0 = (uint)local_11ac & 0xffff;
          if (piVar1 != (int *)0xfffffffc) {
            if (piVar1 == (int *)0x0) {
              FUN_00a3fb10();
            }
            if ((uint)piVar1[6] < 8) {
              piVar6 = piVar1 + 1;
            }
            else {
              piVar6 = (int *)piVar1[1];
            }
            if ((int *)((int)piVar6 + piVar1[5] * 2) <= local_11a4) {
              FUN_00a3fb10();
            }
          }
          local_11a4 = (int *)((int)local_11a4 + 2);
        }
        if ((piVar10 != (int *)0xfffffffc) && ((piVar10 == (int *)0x0 || (piVar10 != local_1198))))
        {
          FUN_00a3fb10();
        }
        if (piVar9 != local_1194) {
          pcStack_11dc = (char *)0x8c1bee;
          local_11d8 = piVar10;
          FUN_00427fd0();
          local_1170 = (void *)0x0;
          local_4._0_1_ = 0x10;
          FUN_00854700();
          FUN_0086a400();
          _free(local_1170);
          if (7 < local_1174) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          local_1174 = 7;
          local_1178 = 0;
          local_1188 = local_1188 & 0xffff0000;
        }
        _free(local_1018);
        if (7 < local_101c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        local_101c = 7;
        local_1020 = 0;
        local_1030 = local_1030 & 0xffff0000;
        local_4 = 0xffffffff;
        ppvVar7 = (void **)FUN_00850350();
        if (local_11b4 != ppvVar7) {
          *(short *)(local_11b4 + 2) = *(short *)(local_11b4 + 2) + -1;
          if (*(short *)(local_11b4 + 2) == 0) {
            if (*(char *)((int)local_11b4 + 10) != '\0') {
              _free(*local_11b4);
            }
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          FUN_00850350();
        }
        goto LAB_008c1723;
      }
      local_11a0 = (int **)aiStack_11ec;
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(1);
      if (cVar2 != '\0') {
        FUN_004325b6();
        local_4._0_1_ = 4;
        FUN_0043c211();
        local_4._0_1_ = 5;
        FUN_00820bf9();
        FUN_008433c0();
        local_11a0 = (int **)aiStack_11ec;
        local_4._0_1_ = 6;
        FUN_004325a0(param_1_00 + 4);
        local_4._0_1_ = 7;
        FUN_008423d0(1,"..\\..\\src\\common\\textfile.cpp",0xc9,"wxTextFile::OnRead",&DAT_00d25fa0);
        local_4._0_1_ = 9;
        FUN_00848780(local_118c);
        local_4._0_1_ = 6;
        FUN_00842440();
        local_4._0_1_ = 5;
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      FUN_0040159c();
    }
  }
LAB_008c170d:
  local_4 = 0xffffffff;
  thunk_FUN_0043c1dd();
LAB_008c1723:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008c1cf0(int param_1_00,int param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  undefined *puVar3;
  char *pcVar4;
  undefined4 uStack_1f4;
  undefined4 uStack_1f0;
  char *pcStack_1ec;
  undefined4 uStack_1e8;
  char *pcStack_1e4;
  char **ppcStack_1e0;
  char *pcStack_1dc;
  char *pcStack_1d8;
  char **local_1bc;
  int local_1b8;
  undefined4 local_1b4;
  undefined local_1b0 [4];
  uint local_1ac;
  undefined4 local_19c;
  uint local_198;
  void *local_194;
  undefined local_18c [4];
  uint local_188;
  undefined4 local_178;
  uint local_174;
  void *local_170;
  undefined local_168 [44];
  uint local_13c;
  void *local_138;
  int local_98;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd154e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_1bc;
  ExceptionList = &local_c;
  puVar3 = (undefined *)0x0;
  pcStack_1d8 = (char *)(param_1_00 + 4);
  local_1b4 = param_2;
  pcStack_1dc = (char *)0x8c1d4b;
  FUN_00432544();
  local_4 = 0;
  pcStack_1d8 = (char *)0x8c1d5f;
  cVar1 = FUN_00857bd0();
  if (cVar1 == '\0') {
    pcStack_1d8 = (char *)0x8c1d73;
    FUN_004325b6();
    pcStack_1d8 = local_18c;
    pcStack_1dc = (char *)0x37;
    local_4._0_1_ = 1;
    ppcStack_1e0 = (char **)0x8c1d8f;
    FUN_00859fd0();
    local_4 = (uint)local_4._1_3_ << 8;
    pcStack_1d8 = (char *)0x8c1da0;
    _free(local_170);
    if (7 < local_174) {
                    // WARNING: Subroutine does not return
      pcStack_1d8 = &UNK_008c1db8;
      FUN_00a3f6a1();
    }
  }
  pcStack_1d8 = local_18c;
  pcStack_1dc = (char *)0x8c1dd4;
  FUN_008581b0();
  local_4._0_1_ = 2;
  pcStack_1d8 = (char *)0x8c1de9;
  FUN_00888f10();
  local_4._0_1_ = 4;
  pcStack_1d8 = (char *)0x8c1dfb;
  _free(local_170);
  if (local_174 < 8) {
    local_174 = 7;
    local_178 = 0;
    local_188 = local_188 & 0xffff0000;
    if (local_98 == -1) {
      local_1bc = (char **)&uStack_1f4;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        pcStack_1d8 = (char *)0x8c1e69;
        FUN_004325b6();
        local_4._0_1_ = 5;
        pcStack_1d8 = (char *)0x8c1e7f;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,6);
        iVar2 = FUN_0084a340();
        if (iVar2 == 0) {
          pcStack_1d8 = (char *)0x8c1eae;
          FUN_0084d360();
        }
        else {
          pcStack_1d8 = local_1b0;
          pcStack_1dc = (char *)0x8c1ea2;
          FUN_0084f210();
        }
        pcStack_1d8 = (char *)0x8c1ebb;
        FUN_008433c0();
        local_1bc = &pcStack_1dc;
        ppcStack_1e0 = &pcStack_1dc;
        pcStack_1e4 = (char *)0x8c1ecc;
        FUN_00432231();
        ppcStack_1e0 = (char **)&DAT_00d25fa0;
        pcStack_1e4 = "wxTextFile::OnWrite";
        uStack_1e8 = 300;
        pcStack_1ec = "..\\..\\src\\common\\textfile.cpp";
        uStack_1f0 = 1;
        local_4._0_1_ = 8;
        uStack_1f4 = 0x8c1ef6;
        FUN_008423d0();
        ppcStack_1e0 = (char **)local_168;
        local_4._0_1_ = 10;
        pcStack_1e4 = (char *)0x8c1f12;
        FUN_00848860();
        local_4._0_1_ = 7;
        FUN_00842440();
        local_4._0_1_ = 6;
        FUN_0081b5bc();
        pcStack_1d8 = (char *)0x8c1f40;
        _free(local_194);
        if (7 < local_198) {
                    // WARNING: Subroutine does not return
          pcStack_1d8 = &UNK_008c1f53;
          FUN_00a3f6a1();
        }
        local_198 = 7;
        local_19c = 0;
        local_1ac = local_1ac & 0xffff0000;
        pcStack_1d8 = (char *)0x8c1f7a;
        _free(local_138);
        if (7 < local_13c) {
                    // WARNING: Subroutine does not return
          pcStack_1d8 = &UNK_008c1f93;
          FUN_00a3f6a1();
        }
      }
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00888fa0();
      local_4 = 0xffffffff;
      FUN_0043250a();
    }
    else {
      local_1bc = *(char ***)(param_1_00 + 0x38);
      if (local_1bc != (char **)0x0) {
        local_1b8 = 0;
        do {
          if (((param_1 == 0) && (PTR_FUN_03235c4c != (undefined *)0x0)) &&
             (*(undefined **)(param_1_00 + 0x2c) <= puVar3)) {
            pcStack_1d8 = "uiIndex < m_nCount";
            pcStack_1dc = "wxBaseArrayInt::Item";
            ppcStack_1e0 = (char **)0x343;
            pcStack_1e4 = "d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h";
            uStack_1e8 = 0x8c200d;
            FUN_008402e0();
          }
          if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
             (*(undefined **)(param_1_00 + 0x38) <= puVar3)) {
            pcStack_1d8 = "nIndex < m_nCount";
            pcStack_1dc = "wxArrayString::Item";
            ppcStack_1e0 = (char **)0xb3;
            pcStack_1e4 = "d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h";
            uStack_1e8 = 0x8c2046;
            FUN_00840480();
          }
          pcVar4 = (char *)(*(int *)(param_1_00 + 0x3c) + local_1b8);
          pcStack_1d8 = (char *)0x8c2056;
          pcStack_1d8 = (char *)FUN_008a8600();
          ppcStack_1e0 = (char **)local_1b0;
          pcStack_1e4 = (char *)0x8c2062;
          pcStack_1dc = pcVar4;
          pcStack_1d8 = (char *)FUN_008533d0();
          local_4._0_1_ = 0xb;
          pcStack_1dc = (char *)0x8c207f;
          FUN_00887740();
          local_4._0_1_ = 4;
          pcStack_1d8 = (char *)0x8c2091;
          _free(local_194);
          if (7 < local_198) {
                    // WARNING: Subroutine does not return
            pcStack_1d8 = &UNK_008c20a5;
            FUN_00a3f6a1();
          }
          local_1b8 = local_1b8 + 0x24;
          puVar3 = puVar3 + 1;
          local_198 = 7;
          local_19c = 0;
          local_1ac = local_1ac & 0xffff0000;
        } while (puVar3 < local_1bc);
      }
      FUN_00887f40();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00888fa0();
      local_4 = 0xffffffff;
      FUN_0043250a();
    }
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  pcStack_1d8 = &UNK_008c1e0e;
  FUN_00a3f6a1();
}



undefined ** FUN_008c2140(void)

{
  return &PTR_u_wxDDEServer_0323824c;
}



undefined ** FUN_008c2150(void)

{
  return &PTR_u_wxDDEClient_03238264;
}



undefined ** FUN_008c2160(void)

{
  return &PTR_u_wxDDEConnection_0323827c;
}



undefined ** FUN_008c2170(void)

{
  return &PTR_u_wxDDEModule_03238294;
}



undefined4 * __thiscall
FUN_008c2180(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxwxDDEClientListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __thiscall
FUN_008c2200(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxwxDDEServerListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __thiscall
FUN_008c2280(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxwxDDEConnectionListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __fastcall FUN_008c2300(int param_1)

{
  if (*(int **)(param_1 + 8) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 8) + 4))(1);
  }
  return;
}



undefined4 * FUN_008c2320(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxDDEModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __fastcall FUN_008c2380(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd1593;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxDDEClient::vftable;
  local_4 = 1;
  FUN_0086b0c0(param_1);
  iVar1 = param_1[6];
  while (iVar1 != 0) {
    if (*(int **)(iVar1 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar1 + 8) + 4))(1,uVar2);
    }
    iVar1 = param_1[6];
  }
  local_4 = local_4 & 0xffffff00;
  FUN_0086ade0();
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void FUN_008c2420(void)

{
  HSZ in_EAX;
  BOOL BVar1;
  
  BVar1 = DdeFreeStringHandle(DAT_032be078,in_EAX);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (BVar1 == 0)) {
    FUN_00840480("..\\..\\src\\msw\\dde.cpp",0x448,"DDEFreeString",&DAT_00d2428c,
                 L"Failed to free DDE string handle");
  }
  return;
}



void FUN_008c2470(void)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int unaff_EDI;
  
  iVar4 = 0;
  iVar5 = DAT_03238240;
  if (DAT_03238240 != 0) {
    do {
      if (iVar4 != 0) {
        return;
      }
      iVar2 = *(int *)(*(int *)(iVar5 + 8) + 0x3c);
      iVar3 = 0;
      while ((iVar4 = iVar3, iVar2 != 0 && (iVar4 == 0))) {
        iVar3 = *(int *)(iVar2 + 8);
        if (*(int *)(*(int *)(iVar2 + 8) + 0x40) != unaff_EDI) {
          iVar2 = *(int *)(iVar2 + 0xc);
          iVar3 = iVar4;
        }
      }
      piVar1 = (int *)(iVar5 + 0xc);
      iVar5 = *piVar1;
    } while (*piVar1 != 0);
    if (iVar4 != 0) {
      return;
    }
  }
  iVar5 = DAT_03238228;
  if (DAT_03238228 != 0) {
    do {
      if (iVar4 != 0) {
        return;
      }
      iVar2 = *(int *)(*(int *)(iVar5 + 8) + 0x18);
      iVar3 = 0;
      while ((iVar4 = iVar3, iVar2 != 0 && (iVar4 == 0))) {
        iVar3 = *(int *)(iVar2 + 8);
        if (*(int *)(*(int *)(iVar2 + 8) + 0x40) != unaff_EDI) {
          iVar2 = *(int *)(iVar2 + 0xc);
          iVar3 = iVar4;
        }
      }
      piVar1 = (int *)(iVar5 + 0xc);
      iVar5 = *piVar1;
    } while (*piVar1 != 0);
  }
  return;
}



void FUN_008c2500(void)

{
  int iVar1;
  bool bVar2;
  int iVar3;
  int unaff_EDI;
  
  bVar2 = false;
  iVar3 = DAT_03238240;
  iVar1 = DAT_03238228;
  if (DAT_03238240 != 0) {
    do {
      if (bVar2) {
        return;
      }
      for (iVar1 = *(int *)(*(int *)(iVar3 + 8) + 0x3c); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc))
      {
        if (*(int *)(*(int *)(iVar1 + 8) + 0x40) == unaff_EDI) {
          FUN_0086b060(iVar1);
          bVar2 = true;
          goto LAB_008c2531;
        }
      }
      bVar2 = false;
LAB_008c2531:
      iVar3 = *(int *)(iVar3 + 0xc);
    } while (iVar3 != 0);
    iVar1 = DAT_03238228;
    if (bVar2) {
      return;
    }
  }
  do {
    if ((iVar1 == 0) || (bVar2)) {
      return;
    }
    for (iVar3 = *(int *)(*(int *)(iVar1 + 8) + 0x18); iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {
      if (*(int *)(*(int *)(iVar3 + 8) + 0x40) == unaff_EDI) {
        FUN_0086b060(iVar3);
        bVar2 = true;
        goto LAB_008c2565;
      }
    }
    bVar2 = false;
LAB_008c2565:
    iVar1 = *(int *)(iVar1 + 0xc);
  } while( true );
}



int FUN_008c2590(void)

{
  int iVar1;
  int unaff_EBX;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar2 = 0;
  iVar3 = iVar2;
  iVar4 = DAT_03238240;
  if (DAT_03238240 != 0) {
    do {
      if (iVar2 != 0) {
        return iVar2;
      }
      iVar3 = *(int *)(iVar4 + 8);
      if ((*(int *)(iVar3 + 0x20) != *(int *)(unaff_EBX + 0x14)) ||
         (iVar1 = FUN_00850760(unaff_EBX), iVar1 != 0)) {
        iVar4 = *(int *)(iVar4 + 0xc);
        iVar3 = iVar2;
      }
      iVar2 = iVar3;
    } while (iVar4 != 0);
  }
  return iVar3;
}



undefined4 __thiscall FUN_008c25e0(undefined4 param_1_00,byte param_1)

{
  FUN_008c2380();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined FUN_008c2600(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/ipcbase.h",0x89,"wxConnectionBase::OnExec",
                 "Assert failure",
                 "This method shouldn\'t be called, if it is, it probably means that you didn\'t update your old code overriding OnExecute() to use the new parameter types (\"const void *\" instead of \"wxChar *\" and \"size_t\" instead of \"int\"), you must do it or your code wouldn\'t be executed at all!"
                );
  }
  return 0;
}



undefined4 FUN_008c2630(undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  *param_3 = 0;
  return 0;
}



undefined4 __fastcall FUN_008c2640(int *param_1)

{
  if (param_1 != (int *)0x0) {
    (**(code **)(*param_1 + 4))(1);
  }
  return 1;
}



undefined __thiscall
FUN_008c2650(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined uVar1;
  undefined4 uVar2;
  undefined4 unaff_EBX;
  undefined local_30 [16];
  uint uStack_20;
  void *pvStack_1c;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_008cbb50(local_30,param_2,param_3,param_4,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_4 = 0;
  uVar1 = (**(code **)(*param_1_00 + 0x20))(param_1,uVar2);
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBX);
  }
  ExceptionList = pvStack_14;
  return uVar1;
}



undefined4 * FUN_008c26f0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x50);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_008cbac0(uVar1);
    *puVar2 = wxDDEConnection::vftable;
    puVar2[0xb] = 7;
    puVar2[10] = 0;
    *(undefined2 *)(puVar2 + 6) = 0;
    puVar2[0xc] = 0;
    puVar2[0x10] = 0;
    puVar2[0x11] = 0;
    puVar2[0xe] = 0;
    puVar2[0xf] = 0;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_008c2790(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x50);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_008cbac0(uVar1);
    *puVar2 = wxDDEConnection::vftable;
    puVar2[0xb] = 7;
    puVar2[10] = 0;
    *(undefined2 *)(puVar2 + 6) = 0;
    puVar2[0xc] = 0;
    puVar2[0x10] = 0;
    puVar2[0x11] = 0;
    puVar2[0xe] = 0;
    puVar2[0xf] = 0;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_008c2830(void)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((DAT_03238238 != 0 || (DAT_03238220 != 0)))) {
    FUN_00840480("..\\..\\src\\msw\\dde.cpp",0xb1,"wxDDECleanUp",
                 "wxDDEServerObjects.empty() && wxDDEClientObjects.empty()",
                 L"all DDE objects should be deleted by now");
  }
  FUN_00893cf0(DAT_032be088,DAT_032be084,FUN_009e7620);
  _DAT_032be08c = 0;
  if (DAT_032be078 != 0) {
    DdeUninitialize(DAT_032be078);
    DAT_032be078 = 0;
  }
  return;
}



void FUN_008c28b0(void)

{
  uint uVar1;
  int unaff_ESI;
  HSZ unaff_EDI;
  undefined4 local_1c [2];
  LPWSTR *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd15c9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_1c;
  ExceptionList = &local_c;
  *(undefined4 *)(unaff_ESI + 0x18) = 7;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined2 *)(unaff_ESI + 4) = 0;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  local_4 = 0;
  local_1c[0] = 1;
  FUN_00852280(unaff_ESI,0x100);
  DdeQueryStringW(DAT_032be078,unaff_EDI,*local_14,0x100,0x4b0);
  FUN_00851bf0(uVar1);
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_008c2950(uint param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  int unaff_ESI;
  undefined local_5c4 [4];
  uint local_5c0;
  undefined4 local_5b0;
  uint local_5ac;
  void *local_5a8;
  undefined local_5a0 [4];
  uint local_59c;
  undefined4 local_58c;
  uint local_588;
  void *local_584;
  undefined local_578 [20];
  undefined local_564 [4];
  undefined4 local_560;
  uint local_54c;
  void *local_548;
  undefined local_540 [4];
  undefined4 local_53c;
  uint local_528;
  void *local_524;
  undefined local_51c [36];
  undefined local_4f8 [36];
  undefined local_4d4 [36];
  undefined local_4b0 [36];
  undefined local_48c [36];
  undefined local_468 [36];
  undefined local_444 [36];
  undefined local_420 [36];
  undefined local_3fc [36];
  undefined local_3d8 [36];
  undefined local_3b4 [36];
  undefined local_390 [36];
  undefined local_36c [36];
  undefined local_348 [36];
  undefined local_324 [36];
  undefined local_300 [36];
  undefined local_2dc [36];
  undefined local_2b8 [36];
  undefined local_294 [36];
  undefined local_270 [36];
  undefined local_24c [36];
  undefined local_228 [36];
  undefined local_204 [36];
  undefined local_1e0 [36];
  undefined local_1bc [36];
  undefined local_198 [36];
  undefined local_174 [36];
  undefined local_150 [36];
  undefined local_12c [36];
  undefined local_108 [36];
  undefined local_e4 [36];
  undefined local_c0 [36];
  undefined local_9c [36];
  undefined local_78 [36];
  undefined local_54 [36];
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd17cc;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffa2c;
  ExceptionList = &local_c;
  *(undefined4 *)(unaff_ESI + 0x18) = 7;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined2 *)(unaff_ESI + 4) = 0;
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  local_4 = 0;
  if (param_1 < 0x4001) {
    if (param_1 == 0x4000) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 3;
      FUN_0043c211("a request for a synchronous advise transaction has timed out.");
      local_4 = CONCAT31(local_4._1_3_,4);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        iVar2 = FUN_0084d360(local_5c4);
      }
      else {
        iVar2 = FUN_0084f210(local_5c4,local_564);
      }
      if (unaff_ESI != iVar2) {
        FID_conflict_assign(iVar2,0,0xffffffff);
      }
      _free(local_5a8);
      if (7 < local_5ac) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_5c0);
      }
      local_5ac = 7;
      local_5b0 = 0;
      local_5c0 = local_5c0 & 0xffff0000;
      _free(local_548);
      if (local_54c < 8) {
        ExceptionList = local_c;
        return;
      }
      goto LAB_008c33dc;
    }
    if (param_1 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 1;
      FUN_0043c211("no DDE error.");
      local_4 = CONCAT31(local_4._1_3_,2);
      iVar2 = FUN_0084a340(uVar1);
      if (iVar2 == 0) {
        iVar2 = FUN_0084d360(local_51c);
      }
      else {
        iVar2 = FUN_0084f210(local_51c,local_324);
      }
      if (unaff_ESI != iVar2) {
        FID_conflict_assign(iVar2,0,0xffffffff);
      }
      FUN_0040159c();
      FUN_0040159c();
      ExceptionList = local_c;
      return;
    }
switchD_008c2b2e_caseD_11:
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0x27;
    FUN_0043c211("Unknown DDE error %08x");
    local_4 = CONCAT31(local_4._1_3_,0x28);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      uVar3 = FUN_0084d360(local_5a0);
    }
    else {
      uVar3 = FUN_0084f210(local_5a0,local_540);
    }
    FUN_008433c0(uVar3);
    local_4._0_1_ = 0x29;
    FUN_0081a07d(param_1,local_578,1);
    FUN_008854f0();
    FUN_00853980();
    local_4 = CONCAT31(local_4._1_3_,0x28);
    FUN_0081b5bc();
    _free(local_584);
    if (7 < local_588) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_59c);
    }
    local_588 = 7;
    local_58c = 0;
    local_59c = local_59c & 0xffff0000;
    _free(local_524);
    local_560 = local_53c;
    if (7 < local_528) {
LAB_008c33dc:
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_560);
    }
  }
  else {
    switch(param_1) {
    case 0x4001:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 5;
      FUN_0043c211("the response to the transaction caused the DDE_FBUSY bit to be set.");
      local_4 = CONCAT31(local_4._1_3_,6);
      uVar3 = FUN_00820bf9(local_54,local_48c);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x4002:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 7;
      FUN_0043c211("a request for a synchronous data transaction has timed out.");
      local_4 = CONCAT31(local_4._1_3_,8);
      uVar3 = FUN_00820bf9(local_24c,local_444);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x4003:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 9;
      FUN_0043c211(
                  "a DDEML function was called without first calling the DdeInitialize function,\nor an invalid instance identifier\nwas passed to a DDEML function."
                  );
      local_4 = CONCAT31(local_4._1_3_,10);
      uVar3 = FUN_00820bf9(local_12c,local_3fc);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x4004:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xb;
      FUN_0043c211(
                  "an application initialized as APPCLASS_MONITOR has\nattempted to perform a DDE transaction,\nor an application initialized as APPCMD_CLIENTONLY has \nattempted to perform server transactions."
                  );
      local_4 = CONCAT31(local_4._1_3_,0xc);
      uVar3 = FUN_00820bf9(local_204,local_3b4);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x4005:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xd;
      FUN_0043c211("a request for a synchronous execute transaction has timed out.");
      local_4 = CONCAT31(local_4._1_3_,0xe);
      uVar3 = FUN_00820bf9(local_9c,local_36c);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x4006:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xf;
      FUN_0043c211("a parameter failed to be validated by the DDEML.");
      local_4 = CONCAT31(local_4._1_3_,0x10);
      uVar3 = FUN_00820bf9(local_1bc,local_4f8);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x4007:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x11;
      FUN_0043c211("a DDEML application has created a prolonged race condition.");
      local_4 = CONCAT31(local_4._1_3_,0x12);
      uVar3 = FUN_00820bf9(local_e4,local_2dc);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x4008:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x13;
      FUN_0043c211("a memory allocation failed.");
      local_4 = CONCAT31(local_4._1_3_,0x14);
      uVar3 = FUN_00820bf9(local_174,local_294);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x4009:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x17;
      FUN_0043c211("a transaction failed.");
      local_4 = CONCAT31(local_4._1_3_,0x18);
      uVar3 = FUN_00820bf9(local_468,local_420);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x400a:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x15;
      FUN_0043c211("a client\'s attempt to establish a conversation has failed.");
      local_4 = CONCAT31(local_4._1_3_,0x16);
      uVar3 = FUN_00820bf9(local_4d4,local_4b0);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x400b:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x19;
      FUN_0043c211("a request for a synchronous poke transaction has timed out.");
      local_4 = CONCAT31(local_4._1_3_,0x1a);
      uVar3 = FUN_00820bf9(local_3d8,local_390);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x400c:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x1b;
      FUN_0043c211("an internal call to the PostMessage function has failed. ");
      local_4 = CONCAT31(local_4._1_3_,0x1c);
      uVar3 = FUN_00820bf9(local_348,local_300);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x400d:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x1d;
      FUN_0043c211("reentrancy problem.");
      local_4 = CONCAT31(local_4._1_3_,0x1e);
      uVar3 = FUN_00820bf9(local_2b8,local_270);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x400e:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x1f;
      FUN_0043c211(
                  "a server-side transaction was attempted on a conversation\nthat was terminated by the client, or the server\nterminated before completing a transaction."
                  );
      local_4 = CONCAT31(local_4._1_3_,0x20);
      uVar3 = FUN_00820bf9(local_228,local_1e0);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x400f:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x21;
      FUN_0043c211("an internal error has occurred in the DDEML.");
      local_4 = CONCAT31(local_4._1_3_,0x22);
      uVar3 = FUN_00820bf9(local_198,local_150);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x4010:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x23;
      FUN_0043c211("a request to end an advise transaction has timed out.");
      local_4 = CONCAT31(local_4._1_3_,0x24);
      uVar3 = FUN_00820bf9(local_108,local_c0);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    case 0x4011:
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x25;
      FUN_0043c211(
                  "an invalid transaction identifier was passed to a DDEML function.\nOnce the application has returned from an XTYP_XACT_COMPLETE callback,\nthe transaction identifier for that callback is no longer valid."
                  );
      local_4 = CONCAT31(local_4._1_3_,0x26);
      uVar3 = FUN_00820bf9(local_78,local_30);
      FUN_0043261a(uVar3);
      FUN_0040159c();
      FUN_0040159c();
      break;
    default:
      goto switchD_008c2b2e_caseD_11;
    }
  }
  ExceptionList = local_c;
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void thunk_FUN_008c2830(void)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((DAT_03238238 != 0 || (DAT_03238220 != 0)))) {
    FUN_00840480("..\\..\\src\\msw\\dde.cpp",0xb1,"wxDDECleanUp",
                 "wxDDEServerObjects.empty() && wxDDEClientObjects.empty()",
                 L"all DDE objects should be deleted by now");
  }
  FUN_00893cf0(DAT_032be088,DAT_032be084,FUN_009e7620);
  _DAT_032be08c = 0;
  if (DAT_032be078 != 0) {
    DdeUninitialize(DAT_032be078);
    DAT_032be078 = 0;
  }
  return;
}



void FUN_008c3460(ushort param_1,ushort param_2,undefined4 param_3,undefined4 param_4,HSZ param_5,
                 HDDEDATA param_6)

{
  short sVar1;
  char cVar2;
  int *piVar3;
  int iVar4;
  DWORD DVar5;
  LPBYTE pBVar6;
  short *pSrc;
  short *psVar7;
  uint wFmt;
  char *local_54;
  HSZ local_50;
  undefined local_4c [36];
  undefined local_28 [36];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_54;
  local_50 = param_5;
  if (param_1 < 0x4051) {
    if (param_1 == 0x4050) {
      piVar3 = (int *)FUN_008c2470();
      if (piVar3 != (int *)0x0) {
        DVar5 = DdeGetData(param_6,(LPBYTE)0x0,0,0);
        pBVar6 = (LPBYTE)FUN_008cba80(DVar5);
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (pBVar6 == (LPBYTE)0x0)) {
          FUN_00840480("..\\..\\src\\msw\\dde.cpp",0x353,"_DDECallback","data != NULL",
                       L"Buffer too small in _DDECallback (XTYP_EXECUTE)");
        }
        DdeGetData(param_6,pBVar6,DVar5,0);
        DdeFreeDataHandle(param_6);
        cVar2 = (**(code **)(*piVar3 + 0x24))(piVar3 + 5,pBVar6,DVar5,0xd);
        if (cVar2 != '\0') {
          ___security_check_cookie_4();
          return;
        }
      }
      goto LAB_008c355c;
    }
    if (param_1 < 0x2023) {
      if (param_1 == 0x2022) {
        iVar4 = FUN_008c2470();
        if ((iVar4 != 0) && (*(LPBYTE *)(iVar4 + 0x44) != (LPBYTE)0x0)) {
          DdeCreateDataHandle(DAT_032be078,*(LPBYTE *)(iVar4 + 0x44),*(DWORD *)(iVar4 + 0x48),0,
                              param_5,*(UINT *)(iVar4 + 0x4c),0);
          *(undefined4 *)(iVar4 + 0x44) = 0;
          ___security_check_cookie_4();
          return;
        }
        goto LAB_008c355c;
      }
      if (param_1 == 0x1030) {
        piVar3 = (int *)FUN_008c2470();
        if (piVar3 != (int *)0x0) {
          FUN_008c28b0();
          (**(code **)(*piVar3 + 0x30))(piVar3 + 5,local_4c);
          FUN_0040159c();
          ___security_check_cookie_4();
          return;
        }
        goto LAB_008c355c;
      }
      if (param_1 != 0x1062) goto LAB_008c355c;
      FUN_008c28b0();
      FUN_008c28b0();
      piVar3 = (int *)FUN_008c2590();
      if ((piVar3 != (int *)0x0) && (iVar4 = (**(code **)(*piVar3 + 0x14))(local_28), iVar4 != 0)) {
        *(int **)(iVar4 + 0x38) = piVar3;
        FUN_0086ad60(iVar4);
        *(undefined4 *)(iVar4 + 0x40) = 0;
        FUN_0043261a(local_28);
        DAT_032be07c = iVar4;
        FUN_0040159c();
        FUN_0040159c();
        ___security_check_cookie_4();
        return;
      }
      FUN_0040159c();
    }
    else if (param_1 == 0x20b0) {
      piVar3 = (int *)FUN_008c2470();
      if (piVar3 == (int *)0x0) goto LAB_008c355c;
      FUN_008c28b0();
      wFmt = (uint)param_2;
      local_54 = (char *)0xffffffff;
      pSrc = (short *)(**(code **)(*piVar3 + 0x28))(piVar3 + 5,local_4c,&local_54,wFmt);
      if (pSrc != (short *)0x0) {
        if (local_54 != (char *)0xffffffff) goto LAB_008c375f;
        if (wFmt != 1) {
          if (wFmt == 0xd) {
            psVar7 = pSrc;
            do {
              sVar1 = *psVar7;
              psVar7 = psVar7 + 1;
            } while (sVar1 != 0);
            local_54 = (char *)(((int)psVar7 - (int)(pSrc + 1) >> 1) * 2 + 2);
            goto LAB_008c375f;
          }
          if (wFmt != 0x11) {
            local_54 = (char *)0x0;
            goto LAB_008c375f;
          }
        }
        psVar7 = pSrc;
        do {
          cVar2 = *(char *)psVar7;
          psVar7 = (short *)((int)psVar7 + 1);
        } while (cVar2 != '\0');
        local_54 = (char *)((int)psVar7 + (1 - ((int)pSrc + 1)));
LAB_008c375f:
        DdeCreateDataHandle(DAT_032be078,(LPBYTE)pSrc,(DWORD)local_54,0,local_50,wFmt,0);
        FUN_0040159c();
        ___security_check_cookie_4();
        return;
      }
    }
    else {
      if ((param_1 != 0x4010) || (piVar3 = (int *)FUN_008c2470(), piVar3 == (int *)0x0))
      goto LAB_008c355c;
      FUN_008c28b0();
      DVar5 = DdeGetData(param_6,(LPBYTE)0x0,0,0);
      pBVar6 = (LPBYTE)FUN_008cba80(DVar5);
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (pBVar6 == (LPBYTE)0x0)) {
        FUN_00840480("..\\..\\src\\msw\\dde.cpp",0x3fb,"_DDECallback","data != NULL",
                     L"Buffer too small in _DDECallback (XTYP_ADVDATA)");
      }
      DdeGetData(param_6,pBVar6,DVar5,0);
      DdeFreeDataHandle(param_6);
      cVar2 = (**(code **)(*piVar3 + 0x38))(piVar3 + 5,local_4c,pBVar6,DVar5,param_2);
      if (cVar2 != '\0') {
        FUN_0040159c();
        ___security_check_cookie_4();
        return;
      }
    }
    FUN_0040159c();
  }
  else if (param_1 < 0x8073) {
    if (param_1 == 0x8072) {
      if (DAT_032be07c != 0) {
        *(undefined4 *)(DAT_032be07c + 0x40) = param_3;
        DAT_032be07c = 0;
        ___security_check_cookie_4();
        return;
      }
    }
    else if (param_1 == 0x4090) {
      piVar3 = (int *)FUN_008c2470();
      if (piVar3 != (int *)0x0) {
        FUN_008c28b0();
        DVar5 = DdeGetData(param_6,(LPBYTE)0x0,0,0);
        pBVar6 = (LPBYTE)FUN_008cba80(DVar5);
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (pBVar6 == (LPBYTE)0x0)) {
          FUN_00840480("..\\..\\src\\msw\\dde.cpp",0x3a4,"_DDECallback","data != NULL",
                       L"Buffer too small in _DDECallback (XTYP_POKE)");
        }
        DdeGetData(param_6,pBVar6,DVar5,0);
        DdeFreeDataHandle(param_6);
        (**(code **)(*piVar3 + 0x2c))(piVar3 + 5,local_4c,pBVar6,DVar5,param_2);
        FUN_0040159c();
        ___security_check_cookie_4();
        return;
      }
    }
    else if ((param_1 == 0x8040) && (piVar3 = (int *)FUN_008c2470(), piVar3 != (int *)0x0)) {
      FUN_008c28b0();
      (**(code **)(*piVar3 + 0x34))(piVar3 + 5,local_4c);
      FUN_0040159c();
      ___security_check_cookie_4();
      return;
    }
  }
  else if ((param_1 == 0x80c2) && (piVar3 = (int *)FUN_008c2470(), piVar3 != (int *)0x0)) {
    *(undefined *)((int)piVar3 + 0x11) = 0;
    cVar2 = (**(code **)(*piVar3 + 0x3c))();
    if (cVar2 != '\0') {
      FUN_008c2500();
      ___security_check_cookie_4();
      return;
    }
  }
LAB_008c355c:
  ___security_check_cookie_4();
  return;
}



int FUN_008c39e0(undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd17f8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  FID_conflict_assign(param_1,0,0xffffffff);
  local_18 = (void *)0x0;
  local_10 = 0;
  local_4 = 0;
  iVar2 = FUN_008f8f60(local_34,&param_1);
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30,uVar1);
  }
  ExceptionList = local_c;
  return iVar2 + 0x28;
}



void __fastcall FUN_008c3a90(int param_1)

{
  char cVar1;
  uint local_c4;
  void *local_c0;
  uint local_a0;
  void *local_9c;
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1851;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == 0) {
    DdeGetLastError(DAT_032be078);
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(1);
  if (cVar1 != '\0') {
    FUN_008c2950();
    local_4 = 0;
    FUN_008533d0();
    local_4._0_1_ = 1;
    FUN_008531f0();
    local_4._0_1_ = 2;
    FUN_008433c0();
    local_4._0_1_ = 3;
    FUN_008423d0();
    local_4._0_1_ = 4;
    FUN_008854f0();
    FUN_0083fe90();
    local_4._0_1_ = 3;
    FUN_00842440();
    local_4 = CONCAT31(local_4._1_3_,2);
    FUN_0081b5bc();
    _free(local_c0);
    if (7 < local_c4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(local_9c);
    if (7 < local_a0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(local_64);
    if (7 < local_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_008c3c70(void)

{
  uint uVar1;
  UINT UVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  if (DAT_032be080 == '\0') {
    UVar2 = DdeInitializeW(&DAT_032be078,FUN_008c3460,0,0);
    if (UVar2 == 0) {
      DAT_032be080 = '\x01';
    }
    else {
      FUN_004325b6(L"Failed to initialize DDE");
      local_4 = 0;
      FUN_008c3a90(local_30,uVar1);
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_008c3d30(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd18ce;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1[1] = 0;
  *param_1 = wxDDEServer::vftable;
  param_1[9] = 7;
  param_1[8] = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  param_1[10] = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  param_1[0xc] = wxListBase::vftable;
  FUN_0086ad40(0);
  param_1[0xc] = wxDDEConnectionList::vftable;
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_008c3c70(uVar1);
  FUN_0086ad60(param_1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __fastcall FUN_008c3dc0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd1903;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1[1] = 0;
  *param_1 = wxDDEClient::vftable;
  local_4 = 0;
  param_1[3] = wxListBase::vftable;
  FUN_0086ad40(0);
  param_1[3] = wxDDEConnectionList::vftable;
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_008c3c70(uVar1);
  FUN_0086ad60(param_1);
  ExceptionList = local_c;
  return param_1;
}



bool __fastcall FUN_008c3e40(int param_1)

{
  BOOL BVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  if (*(char *)(param_1 + 0x11) == '\0') {
    return true;
  }
  ExceptionList = &local_c;
  FUN_008c2500(DAT_0323f878 ^ (uint)&stack0xffffffc4);
  BVar1 = DdeDisconnect(*(HCONV *)(param_1 + 0x40));
  if (BVar1 == 0) {
    FUN_004325b6(L"Failed to disconnect from DDE server gracefully");
    local_4 = 0;
    FUN_008c3a90(local_30);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  *(undefined *)(param_1 + 0x11) = 0;
  ExceptionList = local_c;
  return BVar1 != 0;
}



bool __thiscall FUN_008c3f00(int param_1_00,LPBYTE param_1,DWORD param_2,int param_3)

{
  void **ppvVar1;
  void **ppvVar2;
  void *pvVar3;
  undefined4 *puVar4;
  int iVar5;
  LPBYTE pData;
  HDDEDATA pHVar6;
  DWORD cbData;
  DWORD local_34;
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1930;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (((param_3 != 1) && (param_3 != 0x11)) && (param_3 != 0xd)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\dde.cpp",0x22c,"wxDDEConnection::DoExecute",
                   "format == wxIPC_TEXT || format == wxIPC_UTF8TEXT || format == wxIPC_UNICODETEXT"
                   ,L"wxDDEServer::Execute() supports only text data",
                   DAT_0323f878 ^ (uint)&stack0xffffffb8);
    }
    ExceptionList = local_c;
    return false;
  }
  ppvVar2 = (void **)operator_new(0x10);
  if (ppvVar2 == (void **)0x0) {
    ppvVar2 = (void **)0x0;
  }
  else {
    pvVar3 = _malloc(0x400);
    *ppvVar2 = pvVar3;
    ppvVar2[1] = (void *)0x400;
    ppvVar2[2] = (void *)0x0;
    ppvVar2[3] = (void *)0x0;
  }
  ppvVar2[3] = (void *)((int)ppvVar2[3] + 1);
  local_4 = 0;
  if (param_3 == 1) {
    puVar4 = DAT_032bd4d4;
    if (DAT_032bd4d4 == (undefined4 *)0x0) {
      puVar4 = (undefined4 *)FUN_00861440();
      DAT_032bd4d4 = puVar4;
    }
  }
  else {
    pData = param_1;
    cbData = param_2;
    if (param_3 != 0x11) goto LAB_008c4079;
    puVar4 = DAT_032bd4d8;
    if (DAT_032bd4d8 == (undefined4 *)0x0) {
      puVar4 = (undefined4 *)FUN_00861480();
      DAT_032bd4d8 = puVar4;
    }
  }
  pData = (LPBYTE)0x0;
  cbData = 0;
  if (puVar4 == (undefined4 *)0x0) {
LAB_008c4079:
    pHVar6 = DdeClientTransaction
                       (pData,cbData,*(HCONV *)(param_1_00 + 0x40),(HSZ)0x0,0,0x4050,5000,&local_34)
    ;
    if (pHVar6 == (HDDEDATA)0x0) {
      FUN_004325b6(L"DDE execute request failed");
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_008c3a90(auStack_30);
      _free(pvStack_14);
      if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_2c);
      }
    }
    ppvVar1 = ppvVar2 + 3;
    *ppvVar1 = (void *)((int)*ppvVar1 + -1);
    if (*ppvVar1 != (void *)0x0) {
      ExceptionList = local_c;
      return pHVar6 != (HDDEDATA)0x0;
    }
    _free(*ppvVar2);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(ppvVar2);
  }
  iVar5 = (**(code **)*puVar4)(0,0,param_1,param_2);
  if (iVar5 == -1) {
    ppvVar1 = ppvVar2 + 3;
    *ppvVar1 = (void *)((int)*ppvVar1 + -1);
    if (*ppvVar1 == (void *)0x0) {
      pvVar3 = *ppvVar2;
LAB_008c3ff5:
      _free(pvVar3);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar2);
    }
  }
  else {
    pData = (LPBYTE)FUN_0084a2f0(iVar5 * 2);
    if (pData != (LPBYTE)0x0) {
      iVar5 = (**(code **)*puVar4)(pData,iVar5,param_1,param_2);
      if (iVar5 == -1) {
        FUN_0084a440();
        ExceptionList = local_c;
        return false;
      }
      cbData = iVar5 * 2;
      goto LAB_008c4079;
    }
    ppvVar1 = ppvVar2 + 3;
    *ppvVar1 = (void *)((int)*ppvVar1 + -1);
    if (*ppvVar1 == (void *)0x0) {
      pvVar3 = *ppvVar2;
      goto LAB_008c3ff5;
    }
  }
  ExceptionList = local_c;
  return false;
}



HSZ __fastcall FUN_008c4120(int param_1)

{
  LPCWSTR psz;
  HSZ pHVar1;
  int iVar2;
  undefined4 uVar3;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = (HSZ)0xffffffff;
  puStack_8 = &LAB_00bd1960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032be078 == 0)) {
    FUN_00840480("..\\..\\src\\msw\\dde.cpp",0x42d,"DDEAtomFromString","DDEIdInst",
                 L"DDE not initialized",DAT_0323f878 ^ (uint)&stack0xffffffa8);
  }
  if (*(uint *)(param_1 + 0x18) < 8) {
    psz = (LPCWSTR)(param_1 + 4);
  }
  else {
    psz = *(LPCWSTR *)(param_1 + 4);
  }
  pHVar1 = DdeCreateStringHandleW(DAT_032be078,psz,0x4b0);
  if (pHVar1 == (HSZ)0x0) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = pHVar1;
    FUN_0043c211("Failed to create DDE string");
    local_4 = (HSZ)CONCAT31(local_4._1_3_,1);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      uVar3 = FUN_0084d360(local_54);
    }
    else {
      uVar3 = FUN_0084f210(local_54,local_30);
    }
    FUN_008c3a90(uVar3);
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return pHVar1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x48);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_008c3d30(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Single Match
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

CNoTrackObject * __cdecl CProcessLocal<class_CControlSiteFactoryMgr>::CreateObject(void)

{
  uint uVar1;
  CNoTrackObject *pCVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x24);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    pCVar2 = (CNoTrackObject *)FUN_008c3dc0(uVar1);
    ExceptionList = local_c;
    return pCVar2;
  }
  ExceptionList = local_c;
  return (CNoTrackObject *)0x0;
}



undefined4 __thiscall FUN_008c4350(int param_1_00,int param_1)

{
  HSZ hsz1;
  HDDEDATA pHVar1;
  int iVar2;
  undefined4 uVar3;
  BOOL BVar4;
  undefined3 uVar5;
  undefined3 extraout_var;
  uint local_74;
  void *local_70;
  uint local_50;
  void *local_4c;
  undefined local_44 [4];
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  void *local_28;
  undefined local_20 [20];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd19a3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1_00 + 0xc != param_1) {
    FID_conflict_assign();
  }
  hsz1 = (HSZ)FUN_008c4120();
  if (hsz1 == (HSZ)0x0) {
    uVar3 = 0;
  }
  else {
    pHVar1 = DdeNameService(DAT_032be078,hsz1,(HSZ)0x0,1);
    if (pHVar1 == (HDDEDATA)0x0) {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_00432231(&stack0xffffff4c);
      uVar3 = FUN_00841a20(local_44,local_20);
      local_4._0_1_ = 3;
      FUN_008c3a90(uVar3);
      _free(local_28);
      if (7 < local_2c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_2c = 7;
      local_30 = 0;
      local_40 = local_40 & 0xffff0000;
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      _free(local_70);
      if (7 < local_74) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_4 = 0xffffffff;
      _free(local_4c);
      if (7 < local_50) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    BVar4 = DdeFreeStringHandle(DAT_032be078,hsz1);
    uVar5 = (undefined3)((uint)BVar4 >> 8);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (BVar4 == 0)) {
      FUN_00840480("..\\..\\src\\msw\\dde.cpp",0x448);
      uVar5 = extraout_var;
    }
    uVar3 = CONCAT31(uVar5,pHVar1 != (HDDEDATA)0x0);
  }
  ExceptionList = local_c;
  return uVar3;
}



void __fastcall FUN_008c4590(undefined4 *param_1)

{
  int **ppiVar1;
  HSZ hsz1;
  HDDEDATA pHVar2;
  int iVar3;
  undefined4 uVar4;
  undefined local_8c [92];
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd1a1a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = wxDDEServer::vftable;
  local_4 = 2;
  if ((param_1[8] != 0) && (hsz1 = (HSZ)FUN_008c4120(), hsz1 != (HSZ)0x0)) {
    pHVar2 = DdeNameService(DAT_032be078,hsz1,(HSZ)0x0,2);
    if (pHVar2 == (HDDEDATA)0x0) {
      FUN_004325b6();
      local_4._0_1_ = 3;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,4);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 5;
      FUN_00432231(&stack0xffffff4c);
      uVar4 = FUN_00841a20(local_30,local_8c);
      local_4._0_1_ = 6;
      FUN_008c3a90(uVar4);
      FUN_0040159c();
      local_4._0_1_ = 4;
      FUN_0081b5bc();
      FUN_0040159c();
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_0040159c();
    }
    FUN_008c2420();
  }
  FUN_0086b0c0();
  iVar3 = param_1[0xf];
  while (iVar3 != 0) {
    ppiVar1 = (int **)(iVar3 + 8);
    iVar3 = *(int *)(iVar3 + 0xc);
    (**(code **)(**ppiVar1 + 0x3c))();
  }
  iVar3 = param_1[0xf];
  while (iVar3 != 0) {
    ppiVar1 = (int **)(iVar3 + 8);
    iVar3 = *(int *)(iVar3 + 0xc);
    if (*ppiVar1 != (int *)0x0) {
      (**(code **)(**ppiVar1 + 4))();
    }
  }
  local_4._1_3_ = (undefined3)((uint)local_4 >> 8);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0086ade0();
  _free((void *)param_1[10]);
  if (7 < (uint)param_1[9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  param_1[9] = 7;
  param_1[8] = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_008c47a0(int *param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  HSZ hszService;
  HSZ hszTopic;
  HCONV pHVar1;
  int iVar2;
  undefined4 uVar3;
  undefined auStack_bc [4];
  undefined4 uStack_b8;
  undefined local_8c [92];
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1a63;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  hszService = (HSZ)FUN_008c4120();
  if (hszService != (HSZ)0x0) {
    hszTopic = (HSZ)FUN_008c4120();
    if (hszTopic == (HSZ)0x0) {
      FUN_008c2420();
    }
    else {
      uStack_b8 = 0x8c482b;
      pHVar1 = DdeConnect(DAT_032be078,hszService,hszTopic,(PCONVCONTEXT)0x0);
      FUN_008c2420();
      FUN_008c2420();
      if (pHVar1 == (HCONV)0x0) {
        FUN_004325b6();
        local_4 = 0;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,1);
        iVar2 = FUN_0084a340();
        if (iVar2 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 2;
        uStack_b8 = 0x8c48bf;
        FUN_00432231();
        FUN_00432231(auStack_bc);
        uVar3 = FUN_0088b820(local_30,local_8c);
        local_4._0_1_ = 3;
        FUN_008c3a90(uVar3);
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      else {
        iVar2 = (**(code **)(*param_1_00 + 0x18))();
        if (iVar2 != 0) {
          *(HCONV *)(iVar2 + 0x40) = pHVar1;
          if (iVar2 + 0x14 != param_3) {
            FID_conflict_assign();
          }
          *(int **)(iVar2 + 0x3c) = param_1_00;
          FUN_0086ad60();
          ExceptionList = local_c;
          return iVar2;
        }
      }
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_008c4970(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd1aa3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxDDEConnection::vftable;
  local_4 = 1;
  FUN_008c3e40(uVar1);
  FUN_0086b0c0(param_1);
  _free((void *)param_1[0xc]);
  if (7 < (uint)param_1[0xb]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[6]);
  }
  param_1[0xb] = 7;
  param_1[10] = 0;
  *(undefined2 *)(param_1 + 6) = 0;
  local_4 = 0xffffffff;
  FUN_008cbae0();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008c4a20(undefined4 param_1_00,byte param_1)

{
  FUN_008c4590();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_008c4a40(undefined4 param_1_00,byte param_1)

{
  FUN_008c4970();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



LPBYTE __thiscall FUN_008c4a60(int param_1_00,DWORD param_1,DWORD *param_2,UINT param_3)

{
  uint uVar1;
  int iVar2;
  HSZ hszItem;
  HSZ *ppHVar3;
  HDDEDATA hData;
  DWORD DVar4;
  LPBYTE pDst;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  HDDEDATA local_4;
  
  DVar4 = param_1;
  local_4 = (HDDEDATA)0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  iVar2 = FUN_00970c40(param_1);
  if (iVar2 == 0) {
    hszItem = (HSZ)FUN_008c4120(uVar1);
    ppHVar3 = (HSZ *)FUN_008c39e0(DVar4);
    *ppHVar3 = hszItem;
  }
  else {
    hszItem = *(HSZ *)(iVar2 + 0x28);
  }
  hData = DdeClientTransaction
                    ((LPBYTE)0x0,0,*(HCONV *)(param_1_00 + 0x40),hszItem,param_3,0x20b0,5000,
                     &param_1);
  if (hData == (HDDEDATA)0x0) {
    FUN_004325b6(L"DDE data request failed");
    local_4 = hData;
    FUN_008c3a90(local_30);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    ExceptionList = local_c;
    return (LPBYTE)0x0;
  }
  DVar4 = DdeGetData(hData,(LPBYTE)0x0,0,0);
  pDst = (LPBYTE)FUN_008cba80(DVar4);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (pDst == (LPBYTE)0x0)) {
    FUN_00840480("..\\..\\src\\msw\\dde.cpp",0x2ac,"wxDDEConnection::Request","data != NULL",
                 L"Buffer too small in wxDDEConnection::Request");
  }
  DdeGetData(hData,pDst,DVar4,0);
  DdeFreeDataHandle(hData);
  if (param_2 != (DWORD *)0x0) {
    *param_2 = DVar4;
  }
  ExceptionList = local_c;
  return pDst;
}



bool __thiscall FUN_008c4bb0(int param_1_00,DWORD param_1,LPBYTE param_2,DWORD param_3,UINT param_4)

{
  DWORD DVar1;
  uint uVar2;
  int iVar3;
  HSZ hszItem;
  HSZ *ppHVar4;
  HDDEDATA pHVar5;
  undefined4 uVar6;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  DVar1 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beff10;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  iVar3 = FUN_00970c40(param_1);
  if (iVar3 == 0) {
    hszItem = (HSZ)FUN_008c4120(uVar2);
    ppHVar4 = (HSZ *)FUN_008c39e0(DVar1);
    *ppHVar4 = hszItem;
  }
  else {
    hszItem = *(HSZ *)(iVar3 + 0x28);
  }
  pHVar5 = DdeClientTransaction
                     (param_2,param_3,*(HCONV *)(param_1_00 + 0x40),hszItem,param_4,0x4090,5000,
                      &param_1);
  if (pHVar5 == (HDDEDATA)0x0) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    FUN_0043c211("DDE poke request failed");
    local_4 = CONCAT31(local_4._1_3_,1);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      uVar6 = FUN_0084d360(local_54);
    }
    else {
      uVar6 = FUN_0084f210(local_54,local_30);
    }
    FUN_008c3a90(uVar6);
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return pHVar5 != (HDDEDATA)0x0;
}



bool __thiscall FUN_008c4d10(int param_1_00,DWORD param_1)

{
  DWORD DVar1;
  uint uVar2;
  int iVar3;
  HSZ hszItem;
  HSZ *ppHVar4;
  HDDEDATA pHVar5;
  undefined4 uVar6;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  DVar1 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beff10;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  iVar3 = FUN_00970c40(param_1);
  if (iVar3 == 0) {
    hszItem = (HSZ)FUN_008c4120(uVar2);
    ppHVar4 = (HSZ *)FUN_008c39e0(DVar1);
    *ppHVar4 = hszItem;
  }
  else {
    hszItem = *(HSZ *)(iVar3 + 0x28);
  }
  pHVar5 = DdeClientTransaction
                     ((LPBYTE)0x0,0,*(HCONV *)(param_1_00 + 0x40),hszItem,1,0x1030,5000,&param_1);
  if (pHVar5 == (HDDEDATA)0x0) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    FUN_0043c211("Failed to establish an advise loop with DDE server");
    local_4 = CONCAT31(local_4._1_3_,1);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      uVar6 = FUN_0084d360(local_54);
    }
    else {
      uVar6 = FUN_0084f210(local_54,local_30);
    }
    FUN_008c3a90(uVar6);
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return pHVar5 != (HDDEDATA)0x0;
}



bool __thiscall FUN_008c4e70(int param_1_00,DWORD param_1)

{
  DWORD DVar1;
  uint uVar2;
  int iVar3;
  HSZ hszItem;
  HSZ *ppHVar4;
  HDDEDATA pHVar5;
  undefined4 uVar6;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  DVar1 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beff10;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  iVar3 = FUN_00970c40(param_1);
  if (iVar3 == 0) {
    hszItem = (HSZ)FUN_008c4120(uVar2);
    ppHVar4 = (HSZ *)FUN_008c39e0(DVar1);
    *ppHVar4 = hszItem;
  }
  else {
    hszItem = *(HSZ *)(iVar3 + 0x28);
  }
  pHVar5 = DdeClientTransaction
                     ((LPBYTE)0x0,0,*(HCONV *)(param_1_00 + 0x40),hszItem,1,0x8040,5000,&param_1);
  if (pHVar5 == (HDDEDATA)0x0) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    FUN_0043c211("Failed to terminate the advise loop with DDE server");
    local_4 = CONCAT31(local_4._1_3_,1);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      uVar6 = FUN_0084d360(local_54);
    }
    else {
      uVar6 = FUN_0084f210(local_54,local_30);
    }
    FUN_008c3a90(uVar6);
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return pHVar5 != (HDDEDATA)0x0;
}



bool __thiscall
FUN_008c4fe0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  uint uVar1;
  int iVar2;
  HSZ hszItem;
  HSZ hszTopic;
  HSZ *ppHVar3;
  BOOL BVar4;
  undefined4 uVar5;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2000;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  iVar2 = FUN_00970c40(param_1);
  if (iVar2 == 0) {
    hszItem = (HSZ)FUN_008c4120(uVar1);
    ppHVar3 = (HSZ *)FUN_008c39e0(param_1);
    *ppHVar3 = hszItem;
  }
  else {
    hszItem = *(HSZ *)(iVar2 + 0x28);
  }
  iVar2 = FUN_00970c40(param_1_00 + 0x14);
  if (iVar2 == 0) {
    hszTopic = (HSZ)FUN_008c4120(uVar1);
    ppHVar3 = (HSZ *)FUN_008c39e0(param_1_00 + 0x14);
    *ppHVar3 = hszTopic;
  }
  else {
    hszTopic = *(HSZ *)(iVar2 + 0x28);
  }
  *(undefined4 *)(param_1_00 + 0x44) = param_2;
  *(undefined4 *)(param_1_00 + 0x48) = param_3;
  if (param_4 == 0x14) {
    param_4 = 1;
  }
  *(int *)(param_1_00 + 0x4c) = param_4;
  BVar4 = DdePostAdvise(DAT_032be078,hszTopic,hszItem);
  if (BVar4 == 0) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    FUN_0043c211("Failed to send DDE advise notification");
    local_4 = CONCAT31(local_4._1_3_,1);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      uVar5 = FUN_0084d360(local_54);
    }
    else {
      uVar5 = FUN_0084f210(local_54,local_30);
    }
    FUN_008c3a90(uVar5);
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return BVar4 != 0;
}



undefined ** FUN_008c5170(void)

{
  return &PTR_u_wxTarEntry_032382bc;
}



undefined ** FUN_008c5180(void)

{
  return &PTR_u_wxTarClassFactory_032382d4;
}



undefined ** FUN_008c5190(int param_1)

{
  if (param_1 == 0) {
    return &PTR_DAT_032382ec;
  }
  if (param_1 != 1) {
    if (param_1 != 3) {
      return (undefined **)&DAT_032be094;
    }
    return &PTR_u__tar_032382fc;
  }
  return &PTR_u_application_x_tar_032382f4;
}



uint __thiscall FUN_008c51d0(int param_1_00,int param_1)

{
  byte *pbVar1;
  uint uVar2;
  byte *pbVar3;
  byte *pbVar4;
  int iVar5;
  int iVar6;
  
  pbVar3 = (byte *)(param_1_00 + (&DAT_00d3c914)[param_1 * 2] + param_1);
  pbVar4 = pbVar3 + ((&DAT_00d3c91c)[param_1 * 2] - (&DAT_00d3c914)[param_1 * 2]);
  iVar6 = 0;
  iVar5 = 0;
  uVar2 = 0;
  if (pbVar3 < pbVar4) {
    if (1 < (int)pbVar4 - (int)pbVar3) {
      do {
        iVar6 = iVar6 + (uint)*pbVar3;
        pbVar1 = pbVar3 + 1;
        pbVar3 = pbVar3 + 2;
        iVar5 = iVar5 + (uint)*pbVar1;
      } while ((int)pbVar3 < (int)(pbVar4 + -1));
    }
    if (pbVar3 < pbVar4) {
      uVar2 = (uint)*pbVar3;
    }
    uVar2 = uVar2 + iVar5 + iVar6;
  }
  return uVar2;
}



void __thiscall FUN_008c5230(int param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  bool bVar6;
  
  bVar6 = true;
  iVar5 = 0;
  do {
    if (!bVar6) {
      return;
    }
    piVar3 = (int *)(**(code **)(*param_1 + 0x2c))
                              ((&DAT_00d3c914)[iVar5 * 2] + iVar5 + param_1_00,
                               (&DAT_00d3c91c)[iVar5 * 2] - (&DAT_00d3c914)[iVar5 * 2]);
    iVar1 = (&DAT_00d3c91c)[iVar5 * 2];
    iVar2 = (&DAT_00d3c914)[iVar5 * 2];
    iVar4 = (**(code **)(*piVar3 + 0x30))();
    bVar6 = iVar4 == iVar1 - iVar2;
    iVar5 = iVar5 + 1;
  } while (iVar5 < 0x11);
  return;
}



bool __thiscall FUN_008c5290(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  
  piVar3 = (int *)(**(code **)(*param_1 + 0x28))
                            (param_2 + (&DAT_00d3c914)[param_2 * 2] + param_1_00,
                             (&DAT_00d3c91c)[param_2 * 2] - (&DAT_00d3c914)[param_2 * 2]);
  iVar1 = (&DAT_00d3c91c)[param_2 * 2];
  iVar2 = (&DAT_00d3c914)[param_2 * 2];
  iVar4 = (**(code **)(*piVar3 + 0x34))();
  return iVar4 == iVar1 - iVar2;
}



undefined8 __thiscall FUN_008c52f0(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  char *pcVar4;
  uint uVar5;
  
  pcVar4 = (char *)((&DAT_00d3c914)[param_1 * 2] + param_1 + param_1_00);
  uVar5 = 0;
  uVar3 = 0;
  cVar1 = *pcVar4;
  while (cVar1 == ' ') {
    pcVar4 = pcVar4 + 1;
    cVar1 = *pcVar4;
  }
  cVar1 = *pcVar4;
  while (('/' < cVar1 && (cVar1 < '8'))) {
    uVar2 = uVar5 >> 0x1d;
    uVar5 = (int)cVar1 - 0x30U | uVar5 * 8;
    pcVar4 = pcVar4 + 1;
    uVar3 = (int)((int)cVar1 - 0x30U) >> 0x1f | uVar3 << 3 | uVar2;
    cVar1 = *pcVar4;
  }
  return CONCAT44(uVar3,uVar5);
}



undefined4 __thiscall FUN_008c5350(int param_1_00,int param_1,undefined4 param_2,undefined4 param_3)

{
  char *pcVar1;
  char *pcVar2;
  longlong lVar3;
  
  lVar3 = CONCAT44(param_3,param_2);
  pcVar2 = (char *)((&DAT_00d3c914)[param_1 * 2] + param_1 + param_1_00);
  pcVar1 = pcVar2 + ((&DAT_00d3c91c)[param_1 * 2] - (&DAT_00d3c914)[param_1 * 2]) + -1;
  *pcVar1 = '\0';
  while (pcVar2 < pcVar1) {
    pcVar1 = pcVar1 + -1;
    *pcVar1 = ((byte)param_2 & 7) + 0x30;
    lVar3 = __allshr();
    param_2 = (undefined4)lVar3;
  }
  if (lVar3 == 0) {
    return 1;
  }
  return 0;
}



bool __fastcall FUN_008c53b0(int param_1)

{
  return *(int *)(param_1 + 0x68) == 0x35;
}



void __thiscall FUN_008c53c0(int param_1_00,char param_1)

{
  if (param_1 != '\0') {
    *(undefined4 *)(param_1_00 + 0x68) = 0x35;
    return;
  }
  if (*(int *)(param_1_00 + 0x68) == 0x35) {
    *(undefined4 *)(param_1_00 + 0x68) = 0x30;
  }
  return;
}



void __thiscall FUN_008c53f0(int param_1_00,char param_1)

{
  if (param_1 != '\0') {
    *(uint *)(param_1_00 + 0x30) = *(uint *)(param_1_00 + 0x30) & 0xffffff6d;
    return;
  }
  *(uint *)(param_1_00 + 0x30) = *(uint *)(param_1_00 + 0x30) | 0x80;
  return;
}



void __fastcall FUN_008c5410(int **param_1)

{
  if (*param_1 != (int *)0x0) {
    (**(code **)(**param_1 + 4))(1);
  }
  return;
}



undefined4 __thiscall FUN_008c5430(int *param_1_00,int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1_00 + 0x48))(param_1);
  if (cVar1 != '\0') {
    FUN_008831e0(param_1);
  }
  cVar1 = (**(code **)(*param_1_00 + 0x10))();
  if (cVar1 != '\0') {
    cVar1 = (**(code **)(*param_1 + 0x38))();
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



void __fastcall FUN_008c5480(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x008c5488. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0x10) + 0x38))();
  return;
}



undefined4 * __fastcall FUN_008c5490(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = param_1;
  local_4 = 0;
  *param_1 = wxTarClassFactory::vftable;
  if (param_1 == (undefined4 *)&DAT_032be0c4) {
    FUN_008a6950(uVar1);
    puRam032be0d0 = DAT_032bdd94;
    DAT_032bdd94 = &DAT_032be0c4;
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_008c5500(int param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  bool bVar6;
  
  bVar6 = true;
  iVar5 = 0;
  do {
    if (!bVar6) {
      return;
    }
    piVar3 = (int *)(**(code **)(*param_1 + 0x28))
                              ((&DAT_00d3c914)[iVar5 * 2] + iVar5 + param_1_00,
                               (&DAT_00d3c91c)[iVar5 * 2] - (&DAT_00d3c914)[iVar5 * 2]);
    iVar1 = (&DAT_00d3c91c)[iVar5 * 2];
    iVar2 = (&DAT_00d3c914)[iVar5 * 2];
    iVar4 = (**(code **)(*piVar3 + 0x34))();
    bVar6 = iVar4 == iVar1 - iVar2;
    iVar5 = iVar5 + 1;
  } while (iVar5 < 0x11);
  return;
}



void __fastcall FUN_008c5560(int param_1)

{
  void *_Dst;
  
  *(undefined4 *)(param_1 + 0x28) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x2c) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined4 *)(param_1 + 0x34) = 0;
  *(undefined4 *)(param_1 + 0x38) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x3c) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x40) = 0;
  *(undefined4 *)(param_1 + 0x44) = 2;
  _Dst = operator_new(0x211);
  if (_Dst == (void *)0x0) {
    _Dst = (void *)0x0;
  }
  else {
    _memset(_Dst,0,0x211);
  }
  *(void **)(param_1 + 0x48) = _Dst;
  *(undefined4 *)(param_1 + 0x4c) = 0;
  *(undefined4 *)(param_1 + 0x50) = 0;
  *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(*(int *)(param_1 + 0x1c) + 0xc);
  return;
}



undefined4 __thiscall FUN_008c55d0(int param_1_00,int *param_1)

{
  char cVar1;
  longlong lVar2;
  longlong lVar3;
  undefined8 uVar4;
  
  lVar2 = (**(code **)(*param_1 + 0x18))();
  if (((*(int *)(param_1_00 + 0xc) != 3) &&
      (cVar1 = (**(code **)(**(int **)(param_1_00 + 0x1c) + 0x1c))(), cVar1 != '\0')) &&
     (lVar3 = (**(code **)(**(int **)(param_1_00 + 0x1c) + 0x3c))(lVar2,0), lVar2 == lVar3)) {
    *(longlong *)(param_1_00 + 0x30) = lVar2;
    if (param_1[0x1a] - 0x33U < 4) {
      uVar4 = 0;
    }
    else {
      uVar4 = (**(code **)(*param_1 + 0x14))();
    }
    *(undefined8 *)(param_1_00 + 0x38) = uVar4;
    *(undefined4 *)(param_1_00 + 0x28) = 0;
    *(undefined4 *)(param_1_00 + 0x2c) = 0;
    *(undefined4 *)(param_1_00 + 0xc) = 0;
    return 1;
  }
  *(undefined4 *)(param_1_00 + 0xc) = 3;
  return 0;
}



void __thiscall FUN_008c5660(int param_1_00,int param_1)

{
  undefined4 uVar1;
  void *_Dst;
  
  *(undefined4 *)(param_1_00 + 0x20) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x24) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x28) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x2c) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x30) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x34) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x38) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x3c) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x40) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x44) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x48) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x4c) = 0xffffffff;
  *(bool *)(param_1_00 + 0x58) = param_1 == 1;
  *(undefined4 *)(param_1_00 + 0x50) = 0;
  *(undefined4 *)(param_1_00 + 0x54) = 0;
  *(uint *)(param_1_00 + 0x5c) = (-(uint)(param_1 == 1) & 0xfffffff6) + 0x14;
  *(undefined4 *)(param_1_00 + 0x60) = 0;
  *(undefined *)(param_1_00 + 100) = 0;
  _Dst = operator_new(0x211);
  if (_Dst == (void *)0x0) {
    _Dst = (void *)0x0;
  }
  else {
    _memset(_Dst,0,0x211);
  }
  *(void **)(param_1_00 + 0x68) = _Dst;
  *(undefined4 *)(param_1_00 + 0x6c) = 0;
  *(undefined4 *)(param_1_00 + 0x70) = 0;
  *(undefined4 *)(param_1_00 + 0x74) = 0;
  uVar1 = *(undefined4 *)(*(int *)(param_1_00 + 0x10) + 0xc);
  *(undefined *)(param_1_00 + 0x9c) = 0;
  *(undefined4 *)(param_1_00 + 0xc) = uVar1;
  return;
}



uint __fastcall FUN_008c5700(int *param_1)

{
  code *UNRECOVERED_JUMPTABLE;
  uint uVar1;
  uint uVar2;
  int iVar3;
  undefined8 uVar4;
  
  uVar1 = (**(code **)(*param_1 + 0x58))();
  if (((char)uVar1 != '\0') &&
     (((param_1[0x14] | param_1[0x15]) != 0 || (uVar1 = 0, *(char *)(param_1 + 0x27) == '\0')))) {
    _memset((void *)param_1[0x1a],0,0x211);
    uVar1 = param_1[0x14];
    uVar2 = param_1[0x17] * 0x200;
    iVar3 = (int)uVar2 >> 0x1f;
    uVar4 = __alldiv(uVar1 + uVar2 + 0x3ff,
                     param_1[0x15] + iVar3 + (uint)CARRY4(uVar1,uVar2) +
                     (uint)(0xfffffc00 < uVar1 + uVar2),uVar2,iVar3);
    uVar4 = __allmul(uVar4,uVar2,iVar3);
    for (iVar3 = __alldiv((uint)uVar4 - uVar1,
                          ((int)((ulonglong)uVar4 >> 0x20) - param_1[0x15]) -
                          (uint)((uint)uVar4 < uVar1),0x200,0); iVar3 != 0; iVar3 = iVar3 + -1) {
      (**(code **)(*(int *)param_1[4] + 0x28))(param_1[0x1a],0x200);
    }
    param_1[0x14] = 0;
    param_1[0x15] = 0;
    param_1[0x12] = -1;
    param_1[0x13] = -1;
    param_1[3] = *(int *)(param_1[4] + 0xc);
    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x10);
    *(undefined *)(param_1 + 0x27) = 1;
                    // WARNING: Could not recover jumptable at 0x008c57ca. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (*UNRECOVERED_JUMPTABLE)();
    return uVar1;
  }
  return uVar1 & 0xffffff00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x10);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_008c5490(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_008c5840(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1ac8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_008a68d0(param_1,param_2);
  local_4 = 0;
  *param_1_00 = wxTarInputStream::vftable;
  FUN_008c5560(uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined8 __fastcall FUN_008c58b0(int param_1)

{
  return *(undefined8 *)(param_1 + 0x38);
}



undefined4 * __thiscall FUN_008c58c0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1ac8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_008a68f0(param_1,param_2);
  local_4 = 0;
  *param_1_00 = wxTarInputStream::vftable;
  FUN_008c5560(uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



uint FUN_008c5930(int param_1)

{
  uint in_EAX;
  uint uVar1;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    in_EAX = FUN_0048a085(param_1,&PTR_u_wxTarEntry_032382bc);
    if (in_EAX == 0) {
      in_EAX = FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/object.h",0xa1,"wxCheckCast",
                            "wxDynamicCast(ptr, T)","wxStaticCast() used incorrectly");
    }
  }
  if (param_1 != 0) {
    uVar1 = FUN_008c55d0(param_1);
    return uVar1;
  }
  return in_EAX & 0xffffff00;
}



int * __thiscall FUN_008c5990(int *param_1_00,int param_1)

{
  int **ppiVar1;
  uint uVar2;
  int iVar3;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    iVar3 = param_1 + 4;
  }
  else {
    iVar3 = *(int *)(param_1 + 4);
  }
  uVar2 = FUN_00893df0(iVar3);
  ppiVar1 = (int **)(*param_1_00 + (uVar2 % (uint)param_1_00[1]) * 4);
  iVar3 = (int)*ppiVar1;
  while( true ) {
    if (iVar3 == 0) {
      return (int *)0x0;
    }
    if ((*(int *)(iVar3 + 0x18) == *(int *)(param_1 + 0x14)) &&
       (iVar3 = FUN_00850760(param_1), iVar3 == 0)) break;
    ppiVar1 = (int **)*ppiVar1;
    iVar3 = (int)*ppiVar1;
  }
  return (int *)ppiVar1;
}



undefined4 __thiscall FUN_008c59f0(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x58);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_008c5840(param_1,iVar3);
    ExceptionList = local_c;
    return uVar4;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_008c5a90(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x58);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_008c58c0(param_1,iVar3);
    ExceptionList = local_c;
    return uVar4;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall thunk_FUN_008c59f0(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &pvStack_c;
  pvVar2 = operator_new(0x58);
  uStack_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_008c5840(param_1,iVar3);
    ExceptionList = pvStack_c;
    return uVar4;
  }
  ExceptionList = pvStack_c;
  return 0;
}



undefined4 __thiscall thunk_FUN_008c5a90(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &pvStack_c;
  pvVar2 = operator_new(0x58);
  uStack_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_008c58c0(param_1,iVar3);
    ExceptionList = pvStack_c;
    return uVar4;
  }
  ExceptionList = pvStack_c;
  return 0;
}



void __fastcall FUN_008c5b50(undefined4 *param_1)

{
  *param_1 = wxTarEntry::vftable;
  _free((void *)param_1[0x34]);
  if (7 < (uint)param_1[0x33]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x2e]);
  }
  param_1[0x33] = 7;
  param_1[0x32] = 0;
  *(undefined2 *)(param_1 + 0x2e) = 0;
  _free((void *)param_1[0x2b]);
  if (7 < (uint)param_1[0x2a]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x25]);
  }
  param_1[0x2a] = 7;
  param_1[0x29] = 0;
  *(undefined2 *)(param_1 + 0x25) = 0;
  _free((void *)param_1[0x22]);
  if (7 < (uint)param_1[0x21]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x1c]);
  }
  param_1[0x21] = 7;
  param_1[0x20] = 0;
  *(undefined2 *)(param_1 + 0x1c) = 0;
  _free((void *)param_1[10]);
  if (7 < (uint)param_1[9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[4]);
  }
  param_1[9] = 7;
  param_1[8] = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined8 __fastcall FUN_008c5c50(int param_1)

{
  return *(undefined8 *)(param_1 + 0x40);
}



undefined8 __fastcall FUN_008c5c60(int param_1)

{
  return *(undefined8 *)(param_1 + 0x48);
}



void __thiscall FUN_008c5c70(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *(undefined4 *)(param_1_00 + 0x54);
  *param_1 = *(undefined4 *)(param_1_00 + 0x50);
  param_1[1] = uVar1;
  return;
}



bool __fastcall FUN_008c5c90(int param_1)

{
  return (*(byte *)(param_1 + 0x30) & 0x92) == 0;
}



void __thiscall FUN_008c5ca0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 0x40) = param_1;
  *(undefined4 *)(param_1_00 + 0x44) = param_2;
  return;
}



void __thiscall FUN_008c5cc0(int param_1_00,undefined4 *param_1)

{
  *(undefined4 *)(param_1_00 + 0x50) = *param_1;
  *(undefined4 *)(param_1_00 + 0x54) = param_1[1];
  return;
}



void __thiscall FUN_008c5ce0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 0x48) = param_1;
  *(undefined4 *)(param_1_00 + 0x4c) = param_2;
  return;
}



// WARNING: Removing unreachable block (ram,0x008c5e1e)
// WARNING: Removing unreachable block (ram,0x008c5e36)

undefined * __fastcall FUN_008c5d00(int *param_1)

{
  uint *puVar1;
  code *pcVar2;
  longlong lVar3;
  undefined8 uVar4;
  char cVar5;
  int *piVar6;
  uint uVar7;
  undefined *puVar8;
  uint uVar9;
  int iVar10;
  int iVar11;
  longlong lVar12;
  longlong lVar13;
  undefined auStack_100 [180];
  undefined4 uStack_4c;
  undefined auStack_48 [8];
  undefined4 uStack_40;
  uint uStack_3c;
  uint uStack_38;
  undefined4 *puStack_20;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1b00;
  local_c = ExceptionList;
  uStack_38 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  if (param_1[3] == 3) {
    return auStack_100;
  }
  lVar3 = *(longlong *)(param_1 + 10);
  if ((param_1[10] & param_1[0xb]) == 0xffffffff) {
    return (undefined *)0xffffff01;
  }
  uStack_3c = 0;
  auStack_48._0_4_ = param_1[0xe] + 0x1ff;
  uStack_40 = 0x200;
  auStack_48._4_4_ = param_1[0xf] + (uint)(0xfffffe00 < (uint)param_1[0xe]);
  uStack_4c = 0x8c5d87;
  ExceptionList = &local_c;
  auStack_48 = (undefined  [8])__alldiv();
  uStack_3c = 0;
  uStack_40 = 0x200;
  uStack_4c = 0x8c5d95;
  lVar12 = __allmul();
  lVar3 = lVar12 - lVar3;
  if (lVar3 != 0) {
    uStack_3c = 0x8c5db9;
    cVar5 = (**(code **)(*(int *)param_1[7] + 0x1c))();
    if (cVar5 != '\0') {
      uStack_3c = 0x8c5dc6;
      FUN_008192b5();
      uStack_3c = 1;
      uStack_4 = 0;
      auStack_48._0_4_ = 0x8c5ddc;
      unique0x1000024c = lVar3;
      lVar13 = (**(code **)(*(int *)param_1[7] + 0x3c))();
      if (lVar13 != -1) {
        lVar3 = 0;
      }
      uStack_4 = 0xffffffff;
      uStack_3c = 0x8c5df8;
      FUN_008192c6();
    }
    if (lVar3 != 0) {
      uStack_3c = 0x2000;
      uStack_40 = 0x8c5e10;
      FUN_0084aa50();
      uStack_4 = 1;
      uVar4 = auStack_48;
      if (0 < lVar3) {
        while( true ) {
          uVar9 = (uint)lVar3;
          uStack_3c = 0x8c5e2c;
          cVar5 = (**(code **)(*(int *)param_1[7] + 0x10))();
          uVar4 = auStack_48;
          if (cVar5 == '\0') break;
          uStack_3c = uVar9;
          if (0x2000 < lVar3) {
            uStack_3c = 0x2000;
          }
          uStack_40 = *puStack_20;
          auStack_48._4_4_ = 0x8c5e65;
          piVar6 = (int *)(**(code **)(*(int *)param_1[7] + 0x2c))();
          auStack_48._4_4_ = 0x8c5e6e;
          uVar7 = (**(code **)(*piVar6 + 0x30))();
          iVar10 = uVar9 - uVar7;
          iVar11 = (int)((ulonglong)lVar3 >> 0x20) - (uint)(uVar9 < uVar7);
          lVar3 = CONCAT44(iVar11,iVar10);
          if ((iVar11 < 1) &&
             ((uVar4 = CONCAT44(auStack_48._4_4_,auStack_48._0_4_), iVar11 < 0 ||
              (uVar4 = auStack_48, lVar3 = CONCAT44(iVar11,iVar10), iVar10 == 0)))) break;
        }
      }
      uStack_4 = 0xffffffff;
      uStack_3c = 0x8c5e8e;
      auStack_48 = (undefined  [8])uVar4;
      thunk_FUN_0043c1dd();
    }
  }
  puVar1 = (uint *)(param_1 + 0xc);
  uVar9 = *puVar1;
  *puVar1 = *puVar1 + (uint)lVar12;
  param_1[10] = -1;
  param_1[0xb] = -1;
  param_1[0xd] = param_1[0xd] + (int)((ulonglong)lVar12 >> 0x20) + (uint)CARRY4(uVar9,(uint)lVar12);
  pcVar2 = *(code **)(*param_1 + 0x10);
  param_1[3] = *(int *)(param_1[7] + 0xc);
  uStack_3c = 0x8c5eb7;
  puVar8 = (undefined *)(*pcVar2)();
  ExceptionList = local_c;
  return puVar8;
}



undefined4 * __thiscall
FUN_008c5ed0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1b33;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008a6910(param_1,param_3);
  *param_1_00 = wxTarOutputStream::vftable;
  param_1_00[0x24] = 7;
  param_1_00[0x23] = 0;
  *(undefined2 *)(param_1_00 + 0x1f) = 0;
  param_1_00[0x25] = 0;
  local_4 = 1;
  FUN_008c5660(param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined8 __fastcall FUN_008c5f60(int param_1)

{
  return *(undefined8 *)(param_1 + 0x20);
}



undefined4 * __thiscall
FUN_008c5f70(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1b33;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008a6930(param_1,param_3);
  *param_1_00 = wxTarOutputStream::vftable;
  param_1_00[0x24] = 7;
  param_1_00[0x23] = 0;
  *(undefined2 *)(param_1_00 + 0x1f) = 0;
  param_1_00[0x25] = 0;
  local_4 = 1;
  FUN_008c5660(param_2);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_008c6000(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd1b33;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxTarOutputStream::vftable;
  local_4 = 1;
  FUN_008c5700(uVar1);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[0x1a]);
}



short * FUN_008c60c0(short *param_1)

{
  short sVar1;
  undefined4 *puVar2;
  void **ppvVar3;
  short *psVar4;
  short *psVar5;
  void **local_4;
  
  puVar2 = (undefined4 *)FUN_008add70(&local_4);
  psVar4 = *(short **)*puVar2;
  psVar5 = param_1;
  do {
    sVar1 = *psVar4;
    *psVar5 = sVar1;
    psVar4 = psVar4 + 1;
    psVar5 = psVar5 + 1;
  } while (sVar1 != 0);
  ppvVar3 = (void **)FUN_00850350();
  if (local_4 != ppvVar3) {
    *(short *)(local_4 + 2) = *(short *)(local_4 + 2) + -1;
    if (*(short *)(local_4 + 2) == 0) {
      if (*(char *)((int)local_4 + 10) != '\0') {
        _free(*local_4);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_4);
    }
    FUN_00850350();
  }
  return param_1;
}



undefined4 __thiscall FUN_008c6140(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xa0);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_008c5ed0(param_1,1,iVar3);
    ExceptionList = local_c;
    return uVar4;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_008c61e0(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xa0);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_008c5f70(param_1,1,iVar3);
    ExceptionList = local_c;
    return uVar4;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall thunk_FUN_008c6140(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &pvStack_c;
  pvVar2 = operator_new(0xa0);
  uStack_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_008c5ed0(param_1,1,iVar3);
    ExceptionList = pvStack_c;
    return uVar4;
  }
  ExceptionList = pvStack_c;
  return 0;
}



undefined4 __thiscall thunk_FUN_008c61e0(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &pvStack_c;
  pvVar2 = operator_new(0xa0);
  uStack_4 = 0;
  if (pvVar2 != (void *)0x0) {
    iVar3 = *(int *)(param_1_00 + 8);
    if ((*(int *)(param_1_00 + 8) == 0) && (iVar3 = DAT_032bd4e0, DAT_032bd4e0 == 0)) {
      iVar3 = FUN_00862fb0(uVar1);
      DAT_032bd4e0 = iVar3;
    }
    uVar4 = FUN_008c5f70(param_1,1,iVar3);
    ExceptionList = pvStack_c;
    return uVar4;
  }
  ExceptionList = pvStack_c;
  return 0;
}



undefined4 __thiscall FUN_008c62a0(undefined4 param_1_00,byte param_1)

{
  FUN_008c5b50();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_008c62c0(undefined4 param_1,byte param_2)

{
  FUN_008c6000();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



int __thiscall FUN_008c62e0(int param_1_00,short *param_1)

{
  short sVar1;
  short *psVar2;
  
  if (param_1 == (short *)0x0) {
    param_1 = &DAT_00fae9c8;
  }
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  psVar2 = param_1;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  FID_conflict_assign(param_1,(int)psVar2 - (int)(param_1 + 1) >> 1);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  return param_1_00;
}



int __thiscall FUN_008c6340(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x6c,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int __thiscall FUN_008c6380(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x90,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int __thiscall FUN_008c63d0(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0xb4,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int __thiscall FUN_008c6420(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4d08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x3c) = 7;
  *(undefined4 *)(param_1_00 + 0x38) = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 0x28) = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x40) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_008c64b0(int param_1)

{
  if (param_1 != 0) {
    FUN_009c09f0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



undefined4 __thiscall FUN_008c64d0(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  int *piVar2;
  
  piVar2 = (int *)FUN_008c5990(param_1);
  if (piVar2 == (int *)0x0) {
    return 0;
  }
  *(int *)(param_1_00 + 8) = *(int *)(param_1_00 + 8) + -1;
  piVar1 = (int *)*piVar2;
  if (piVar1 != (int *)0x0) {
    FUN_009c09f0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(piVar1);
  }
  *piVar2 = *piVar1;
  return 1;
}



undefined FUN_008c6520(char **param_1,char **param_2)

{
  char cVar1;
  char *pcVar2;
  bool bVar3;
  bool bVar4;
  uint uVar5;
  undefined4 uVar6;
  void **ppvVar7;
  char **ppcVar8;
  char *pcVar9;
  ushort uVar10;
  undefined uVar11;
  char *pcVar12;
  uint uVar13;
  void **local_18;
  ushort local_14 [2];
  char *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1b68;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  bVar4 = false;
  uVar6 = FUN_00432413(&local_18,param_2);
  local_4 = 0;
  FUN_00432305(uVar6);
  local_4 = CONCAT31(local_4._1_3_,2);
  ppvVar7 = (void **)FUN_00850350(uVar5);
  if (local_18 != ppvVar7) {
    *(short *)(local_18 + 2) = *(short *)(local_18 + 2) + -1;
    if (*(short *)(local_18 + 2) == 0) {
      if (*(char *)((int)local_18 + 10) != '\0') {
        _free(*local_18);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_18);
    }
    local_18 = (void **)FUN_00850350(uVar5);
  }
  if (*param_2 == (char *)0x0) {
    pcVar2 = param_1[5];
    bVar4 = true;
    FUN_0084aa50(pcVar2);
    pcVar12 = (char *)0x0;
    local_4 = CONCAT31(local_4._1_3_,3);
    if (pcVar2 != (char *)0x0) {
      do {
        FUN_0081feb2(local_14,pcVar12);
        uVar10 = 0x5f;
        if ((local_14[0] & 0xff80) == 0) {
          uVar10 = local_14[0];
        }
        (*param_1)[(int)pcVar12] = (char)uVar10;
        pcVar12 = pcVar12 + 1;
      } while (pcVar12 < pcVar2);
    }
    ppcVar8 = (char **)FUN_00850350();
    if (param_2 != ppcVar8) {
      *(short *)(param_2 + 2) = *(short *)(param_2 + 2) + -1;
      if (*(short *)(param_2 + 2) == 0) {
        if (*(char *)((int)param_2 + 10) != '\0') {
          _free(*param_2);
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(param_2);
      }
      FUN_00850350();
    }
    param_2 = param_1;
    ppcVar8 = (char **)FUN_00850350();
    if (param_1 != ppcVar8) {
      *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1;
    }
    local_4 = CONCAT31(local_4._1_3_,2);
    ppcVar8 = (char **)FUN_00850350();
    if (param_1 != ppcVar8) {
      *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + -1;
      if (*(short *)(param_1 + 2) == 0) {
        if (*(char *)((int)param_1 + 10) != '\0') {
          _free(*param_1);
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(param_1);
      }
      FUN_00850350();
    }
  }
  pcVar2 = *param_2;
  pcVar12 = pcVar2;
  do {
    cVar1 = *pcVar12;
    pcVar12 = pcVar12 + 1;
  } while (cVar1 != '\0');
  uVar5 = 0;
  while ((uVar13 = uVar5, 0x9a < uVar13 || ((char *)0x64 < pcVar12 + (-uVar13 - (int)(pcVar2 + 1))))
        ) {
    bVar3 = false;
    pcVar9 = _strchr(pcVar2 + uVar13,0x2f);
    if ((pcVar9 == (char *)0x0) ||
       (uVar5 = ((int)pcVar9 - (int)pcVar2) + 1, 0x9b < (uint)((int)pcVar9 - (int)pcVar2)))
    goto LAB_008c6719;
  }
  bVar3 = true;
LAB_008c6719:
  _strncpy(local_10,pcVar2 + uVar13,100);
  if (uVar13 != 0) {
    _strncpy(local_10 + 0x168,pcVar2,uVar13 - 1);
  }
  if ((!bVar3) || (bVar4)) {
    uVar11 = 0;
  }
  else {
    uVar11 = 1;
  }
  local_4 = 0xffffffff;
  ppcVar8 = (char **)FUN_00850350();
  if (param_2 != ppcVar8) {
    *(short *)(param_2 + 2) = *(short *)(param_2 + 2) + -1;
    if (*(short *)(param_2 + 2) == 0) {
      if (*(char *)((int)param_2 + 10) != '\0') {
        _free(*param_2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_2);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return uVar11;
}



void __fastcall FUN_008c67c0(undefined4 *param_1)

{
  longlong lVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int aiStack_ac [2];
  char cStack_a4;
  undefined local_a0 [4];
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined4 local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 uStack_30;
  int local_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1bc9;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)aiStack_ac;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff44;
  ExceptionList = &local_c;
  *param_1 = 0;
  param_1[1] = 0;
  FUN_0089f6d0(local_34,uVar2);
  local_4 = 0;
  FUN_004325b6(PTR_DAT_03236318);
  local_4._0_1_ = 1;
  FUN_0043c211("unknown");
  local_4 = CONCAT31(local_4._1_3_,2);
  iVar3 = FUN_0084a340();
  if (iVar3 == 0) {
    uVar4 = FUN_0084d360(local_a0);
  }
  else {
    uVar4 = FUN_0084f210(local_a0,local_7c);
  }
  local_54 = (uint)local_54._2_2_ << 0x10;
  local_40 = 7;
  local_44 = 0;
  FID_conflict_assign(uVar4,0,0xffffffff);
  local_3c = (void *)0x0;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_9c);
  }
  local_88 = 7;
  local_8c = 0;
  local_9c = local_9c & 0xffff0000;
  local_4._0_1_ = 5;
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  lVar1 = (ulonglong)(local_20 + 1) * 2;
  local_78 = local_78 & 0xffff0000;
  local_64 = 7;
  local_68 = 0;
  uVar4 = FUN_00823c23(-(uint)((int)((ulonglong)lVar1 >> 0x20) != 0) | (uint)lVar1);
  param_1[2] = uVar4;
  uVar5 = FUN_00432231(aiStack_ac);
  local_4._0_1_ = 6;
  FUN_008c60c0(uVar4,uVar5);
  local_4._0_1_ = 5;
  if ((cStack_a4 != '\0') && (aiStack_ac[0] != 0)) {
    _free(*(void **)(aiStack_ac[0] + 0x1c));
    if (7 < *(uint *)(aiStack_ac[0] + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(aiStack_ac[0] + 4));
    }
    *(undefined4 *)(aiStack_ac[0] + 0x18) = 7;
    *(undefined4 *)(aiStack_ac[0] + 0x14) = 0;
    *(undefined2 *)(aiStack_ac[0] + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(aiStack_ac[0]);
  }
  lVar1 = (ulonglong)(local_44 + 1) * 2;
  uVar4 = FUN_00823c23(-(uint)((int)((ulonglong)lVar1 >> 0x20) != 0) | (uint)lVar1);
  param_1[3] = uVar4;
  uVar5 = FUN_00432231(aiStack_ac);
  local_4 = CONCAT31(local_4._1_3_,7);
  FUN_008c60c0(uVar4,uVar5);
  if ((cStack_a4 != '\0') && (aiStack_ac[0] != 0)) {
    _free(*(void **)(aiStack_ac[0] + 0x1c));
    if (7 < *(uint *)(aiStack_ac[0] + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(aiStack_ac[0] + 4));
    }
    *(undefined4 *)(aiStack_ac[0] + 0x18) = 7;
    *(undefined4 *)(aiStack_ac[0] + 0x14) = 0;
    *(undefined2 *)(aiStack_ac[0] + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(aiStack_ac[0]);
  }
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined * FUN_008c6ac0(void)

{
  uint uVar1;
  undefined *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd1c24;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  if ((DAT_032be0c0 & 1) == 0) {
    DAT_032be0c0 = DAT_032be0c0 | 1;
    local_4 = 0;
    FUN_0086bd70(0);
    _atexit((_func_4879 *)&LAB_00c77150);
  }
  local_4 = 0xffffffff;
  local_10 = &DAT_032be0a8;
  FUN_0086bd90(uVar1);
  if ((DAT_032be0c0 & 2) == 0) {
    DAT_032be0c0 = DAT_032be0c0 | 2;
    local_4 = 2;
    FUN_008c67c0();
    _atexit((_func_4879 *)&LAB_00c77130);
  }
  local_4 = 0xffffffff;
  FUN_0086bda0();
  ExceptionList = local_c;
  return &DAT_032be098;
}



undefined4 * __thiscall FUN_008c6b90(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd1c6c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  param_1_00[2] = 0;
  *param_1_00 = wxTarEntry::vftable;
  param_1_00[9] = 7;
  param_1_00[8] = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  local_4 = 0;
  FID_conflict_assign(param_1 + 0xc,0,0xffffffff);
  param_1_00[10] = 0;
  param_1_00[0xc] = *(undefined4 *)(param_1 + 0x30);
  *(undefined *)(param_1_00 + 0xd) = *(undefined *)(param_1 + 0x34);
  param_1_00[0xe] = *(undefined4 *)(param_1 + 0x38);
  param_1_00[0xf] = *(undefined4 *)(param_1 + 0x3c);
  param_1_00[0x10] = *(undefined4 *)(param_1 + 0x40);
  param_1_00[0x11] = *(undefined4 *)(param_1 + 0x44);
  param_1_00[0x12] = *(undefined4 *)(param_1 + 0x48);
  param_1_00[0x13] = *(undefined4 *)(param_1 + 0x4c);
  param_1_00[0x14] = *(undefined4 *)(param_1 + 0x50);
  param_1_00[0x15] = *(undefined4 *)(param_1 + 0x54);
  param_1_00[0x16] = *(undefined4 *)(param_1 + 0x58);
  param_1_00[0x17] = *(undefined4 *)(param_1 + 0x5c);
  param_1_00[0x18] = *(undefined4 *)(param_1 + 0x60);
  param_1_00[0x19] = *(undefined4 *)(param_1 + 100);
  param_1_00[0x1a] = *(undefined4 *)(param_1 + 0x68);
  param_1_00[0x21] = 7;
  param_1_00[0x20] = 0;
  local_4._0_1_ = 1;
  *(undefined2 *)(param_1_00 + 0x1c) = 0;
  FID_conflict_assign(param_1 + 0x6c,0,0xffffffff);
  param_1_00[0x22] = 0;
  param_1_00[0x2a] = 7;
  param_1_00[0x29] = 0;
  *(undefined2 *)(param_1_00 + 0x25) = 0;
  local_4._0_1_ = 2;
  FID_conflict_assign(param_1 + 0x90,0,0xffffffff);
  param_1_00[0x2b] = 0;
  local_4 = CONCAT31(local_4._1_3_,3);
  param_1_00[0x33] = 7;
  param_1_00[0x32] = 0;
  *(undefined2 *)(param_1_00 + 0x2e) = 0;
  FID_conflict_assign(param_1 + 0xb4,0,0xffffffff);
  param_1_00[0x34] = 0;
  param_1_00[0x36] = *(undefined4 *)(param_1 + 0xd8);
  param_1_00[0x37] = *(undefined4 *)(param_1 + 0xdc);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_008c6d10(int *param_1_00,int param_1,undefined4 param_3)

{
  short *psVar1;
  undefined2 *puVar2;
  char cVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  uint uVar7;
  bool bVar8;
  undefined auStack_118 [3];
  char cStack_115;
  undefined4 local_114;
  int local_110;
  undefined auStack_10c [8];
  undefined auStack_104 [8];
  undefined auStack_fc [36];
  undefined auStack_d8 [36];
  undefined auStack_b4 [4];
  uint uStack_b0;
  uint uStack_a0;
  uint uStack_9c;
  void *pvStack_98;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  uint uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1d0c;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_118;
  ExceptionList = &local_c;
  local_114 = 0;
  local_110 = param_1;
  cVar3 = (**(code **)(*param_1_00 + 0x1c))(DAT_0323f878 ^ (uint)&stack0xfffffed8);
  if ((cVar3 == '\0') || (cStack_115 = '\x01', param_1_00[8] == 0)) {
    cStack_115 = '\0';
  }
  iVar4 = FUN_00855a20(param_3);
  if (iVar4 == 1) {
    bVar8 = cStack_115 == '\0';
    if (bVar8) {
      param_1_00 = param_1_00 + 3;
    }
    else {
      param_1_00 = (int *)FUN_008533d0(auStack_d8,param_1_00 + 3,&DAT_03057848);
      uStack_4 = 4;
      local_114 = 4;
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(param_1_00,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    if (!bVar8) {
      FUN_0040159c();
    }
  }
  else if (iVar4 == 3) {
    bVar8 = cStack_115 == '\0';
    if (bVar8) {
      param_1_00 = param_1_00 + 3;
    }
    else {
      param_1_00 = (int *)FUN_008533d0(auStack_fc,param_1_00 + 3,&DAT_0305784c);
      uStack_4 = 1;
      local_114 = 1;
    }
    uStack_b0 = uStack_b0 & 0xffff0000;
    uStack_9c = 7;
    uStack_a0 = 0;
    FID_conflict_assign(param_1_00,0,0xffffffff);
    pvStack_98 = (void *)0x0;
    uStack_4 = 3;
    if (!bVar8) {
      local_114 = 0;
      FUN_0040159c();
    }
    uVar7 = 0;
    if (uStack_a0 != 0) {
      do {
        piVar5 = (int *)FUN_0081b542(auStack_104,uVar7);
        iVar4 = *piVar5;
        psVar1 = (short *)piVar5[1];
        if (iVar4 != -4) {
          if (iVar4 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar4 + 0x18) < 8) {
            iVar6 = iVar4 + 4;
          }
          else {
            iVar6 = *(int *)(iVar4 + 4);
          }
          if ((short *)(iVar6 + *(int *)(iVar4 + 0x14) * 2) <= psVar1) {
            FUN_00a3fb10();
          }
        }
        if (*psVar1 == 0x2f) {
          piVar5 = (int *)FUN_0081b542(auStack_10c,uVar7);
          iVar4 = *piVar5;
          puVar2 = (undefined2 *)piVar5[1];
          if (iVar4 != -4) {
            if (iVar4 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(iVar4 + 0x18) < 8) {
              iVar6 = iVar4 + 4;
            }
            else {
              iVar6 = *(int *)(iVar4 + 4);
            }
            if ((undefined2 *)(iVar6 + *(int *)(iVar4 + 0x14) * 2) <= puVar2) {
              FUN_00a3fb10();
            }
          }
          *puVar2 = 0x5c;
        }
        uVar7 = uVar7 + 1;
      } while (uVar7 < uStack_a0);
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(auStack_b4,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(pvStack_98);
    if (7 < uStack_9c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_b0);
    }
  }
  else {
    FUN_00432caa();
    uStack_4 = 5;
    if (cStack_115 == '\0') {
      FUN_00858e70(param_1_00 + 3,1);
    }
    else {
      FUN_00859540(param_1_00 + 3,1);
    }
    FUN_008581b0(param_1,param_3);
    local_114 = 2;
    uStack_4 = uStack_4 & 0xffffff00;
    FUN_0043250a();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_008c7010(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  if (*(int *)(param_1_00 + 0x4c) == 0) {
LAB_008c7083:
    if (*(int *)(param_1_00 + 0x50) == 0) {
LAB_008c70b7:
      FUN_004325b6(PTR_DAT_03236318);
      return param_1;
    }
    iVar1 = FUN_00970c40(param_2);
    if (iVar1 == 0) goto LAB_008c70b7;
    uVar2 = *(undefined4 *)(param_1_00 + 0x24);
    if (DAT_032bd4d8 == 0) {
      DAT_032bd4d8 = FUN_00861480();
    }
    if (7 < *(uint *)(iVar1 + 0x40)) {
      iVar1 = *(int *)(iVar1 + 0x2c);
      goto LAB_008c706d;
    }
  }
  else {
    iVar1 = FUN_00970c40(param_2);
    if (iVar1 == 0) goto LAB_008c7083;
    uVar2 = *(undefined4 *)(param_1_00 + 0x24);
    if (DAT_032bd4d8 == 0) {
      DAT_032bd4d8 = FUN_00861480();
    }
    if (7 < *(uint *)(iVar1 + 0x40)) {
      FUN_008c62e0(*(undefined4 *)(iVar1 + 0x2c),uVar2);
      return param_1;
    }
  }
  iVar1 = iVar1 + 0x2c;
LAB_008c706d:
  FUN_008c62e0(iVar1,uVar2);
  return param_1;
}



void __thiscall FUN_008c70e0(int param_1_00,int param_1)

{
  void *pvVar1;
  undefined *puVar2;
  int iVar3;
  char *pcVar4;
  undefined4 uVar5;
  bool bVar6;
  undefined auStack_a8 [3];
  char local_a5;
  undefined4 local_a4;
  undefined local_a0 [4];
  undefined4 local_9c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd1dc6;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_a8;
  ExceptionList = &local_c;
  local_a4 = 0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  FUN_004325b6(L"path");
  local_4._0_1_ = 1;
  puVar2 = (undefined *)FUN_008c7010(local_7c,local_a0);
  local_4._0_1_ = 2;
  if (local_34 != puVar2) {
    FID_conflict_assign(puVar2,0,0xffffffff);
  }
  iVar3 = FUN_008507a0(PTR_DAT_03236318);
  local_a5 = iVar3 != 0;
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  local_4._0_1_ = 0;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_9c);
  }
  if (local_a5 == '\0') {
    puVar2 = (undefined *)
             FUN_0084b3b0(*(undefined4 *)(param_1_00 + 0x48),*(undefined4 *)(param_1_00 + 0x24));
    local_4._0_1_ = 3;
    if (local_34 != puVar2) {
      FID_conflict_assign(puVar2,0,0xffffffff);
    }
    local_4._0_1_ = 0;
    _free(local_84);
    if (7 < local_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_9c);
    }
    if (*(int *)(param_1_00 + 0x44) == 2) {
      pcVar4 = (char *)(*(int *)(param_1_00 + 0x48) + 0x168);
      bVar6 = *pcVar4 == '\0';
      if (bVar6) {
        puVar2 = local_34;
      }
      else {
        uVar5 = FUN_0084b3b0(pcVar4,*(undefined4 *)(param_1_00 + 0x24));
        local_4 = CONCAT31(local_4._1_3_,4);
        local_a4 = 2;
        uVar5 = FUN_008533d0(local_7c,uVar5,&DAT_03057848);
        local_4 = 5;
        local_a4 = 6;
        puVar2 = (undefined *)FUN_008531f0(local_a0,uVar5,local_34);
        local_4._0_1_ = 6;
        local_4._1_3_ = 0;
        local_a4 = 0xe;
      }
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(puVar2,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      if (!bVar6) {
        FUN_0040159c();
        FUN_0040159c();
        FUN_0040159c();
      }
      _free(local_18);
      pvVar1 = ExceptionList;
      ExceptionList = local_c;
    }
    else {
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(local_34,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      _free(local_18);
      pvVar1 = ExceptionList;
      ExceptionList = local_c;
    }
  }
  else {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  local_c = ExceptionList;
  if (local_1c < 8) {
    ___security_check_cookie_4();
    return;
  }
  ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_30);
}



void FUN_008c7440(undefined8 *param_1,undefined4 param_2)

{
  void *pvVar1;
  uint uVar2;
  undefined *puVar3;
  int iVar4;
  undefined8 uVar5;
  undefined auStack_5c [3];
  char local_59;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd0d80;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_5c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  puVar3 = (undefined *)FUN_008c7010(local_58,param_2);
  local_4._0_1_ = 1;
  if (local_34 != puVar3) {
    FID_conflict_assign(puVar3,0,0xffffffff);
  }
  iVar4 = FUN_008507a0(PTR_DAT_03236318);
  local_59 = iVar4 != 0;
  local_4 = (uint)local_4._1_3_ << 8;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  if (local_59 == '\0') {
    iVar4 = FUN_008507a0(L"mtime");
    if (iVar4 == 0) {
      uVar5 = FUN_008c52f0(5);
      uVar5 = __allmul(uVar5,1000,0);
      *param_1 = uVar5;
      _free(local_18);
      pvVar1 = ExceptionList;
      ExceptionList = local_c;
    }
    else {
      *(undefined4 *)param_1 = 0;
      *(undefined4 *)((int)param_1 + 4) = 0x80000000;
      _free(local_18);
      pvVar1 = ExceptionList;
      ExceptionList = local_c;
    }
  }
  else {
    FUN_008bb790(local_34,uVar2);
    uVar5 = FUN_00a49786();
    *param_1 = uVar5;
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  local_c = ExceptionList;
  if (local_1c < 8) {
    ___security_check_cookie_4();
    return;
  }
  ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_30);
}



void FUN_008c75d0(int param_1)

{
  ushort uVar1;
  undefined *puVar2;
  int iVar3;
  int *piVar4;
  undefined4 ****ppppuVar5;
  undefined4 ****ppppuVar6;
  undefined *puVar7;
  undefined4 ****ppppuVar8;
  longlong lVar9;
  undefined8 local_8c;
  undefined local_84 [4];
  uint local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  undefined local_60 [4];
  undefined4 local_5c;
  uint local_48;
  void *local_44;
  undefined local_3c [8];
  undefined local_34 [4];
  undefined4 ****local_30 [4];
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd1e1b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_8c;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30[0] = (undefined4 ****)((uint)local_30[0] & 0xffff0000);
  local_18 = (void *)0x0;
  local_4 = 0;
  FUN_004325b6((&PTR_u_name_00d3c910)[param_1 * 2]);
  local_4._0_1_ = 1;
  puVar2 = (undefined *)FUN_008c7010(local_84,local_60);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (local_34 != puVar2) {
    FID_conflict_assign(puVar2,0,0xffffffff);
  }
  iVar3 = FUN_008507a0(PTR_DAT_03236318);
  _free(local_68);
  if (7 < local_6c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_80);
  }
  local_6c = 7;
  local_70 = 0;
  local_80 = local_80 & 0xffff0000;
  _free(local_44);
  if (7 < local_48) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_5c);
  }
  if (iVar3 == 0) {
    FUN_008c52f0(param_1);
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30[0]);
    }
  }
  else {
    local_8c._0_4_ = 0;
    local_8c._4_4_ = 0;
    piVar4 = (int *)FUN_0081b376(local_3c);
    puVar2 = (undefined *)*piVar4;
    ppppuVar8 = (undefined4 ****)piVar4[1];
    while( true ) {
      if (puVar2 != (undefined *)0xfffffffc) {
        if (puVar2 == (undefined *)0x0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(puVar2 + 0x18) < 8) {
          puVar7 = puVar2 + 4;
        }
        else {
          puVar7 = *(undefined **)(puVar2 + 4);
        }
        if (puVar7 + *(int *)(puVar2 + 0x14) * 2 <= ppppuVar8) {
          FUN_00a3fb10();
        }
      }
      if (*(ushort *)ppppuVar8 != 0x20) break;
      ppppuVar5 = local_30[0];
      if (local_1c < 8) {
        ppppuVar5 = local_30;
      }
      ppppuVar5 = (undefined4 ****)((int)ppppuVar5 + local_20 * 2);
      if (ppppuVar5 == (undefined4 ****)0x0) {
LAB_008c778f:
        FUN_00a3fb10();
      }
      else {
        ppppuVar6 = local_30[0];
        if (local_1c < 8) {
          ppppuVar6 = local_30;
        }
        if (ppppuVar5 < ppppuVar6) goto LAB_008c778f;
        ppppuVar6 = local_30[0];
        if (local_1c < 8) {
          ppppuVar6 = local_30;
        }
        if ((undefined4 ****)((int)ppppuVar6 + local_20 * 2) < ppppuVar5) goto LAB_008c778f;
      }
      if ((puVar2 != (undefined *)0xfffffffc) &&
         ((puVar2 == (undefined *)0x0 || (puVar2 != local_34)))) {
        FUN_00a3fb10();
      }
      if (ppppuVar8 == ppppuVar5) break;
      if (puVar2 != (undefined *)0xfffffffc) {
        if (puVar2 == (undefined *)0x0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(puVar2 + 0x18) < 8) {
          puVar7 = puVar2 + 4;
        }
        else {
          puVar7 = *(undefined **)(puVar2 + 4);
        }
        if (puVar7 + *(int *)(puVar2 + 0x14) * 2 <= ppppuVar8) {
          FUN_00a3fb10();
        }
      }
      ppppuVar8 = (undefined4 ****)((int)ppppuVar8 + 2);
    }
    while( true ) {
      if (puVar2 != (undefined *)0xfffffffc) {
        if (puVar2 == (undefined *)0x0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(puVar2 + 0x18) < 8) {
          puVar7 = puVar2 + 4;
        }
        else {
          puVar7 = *(undefined **)(puVar2 + 4);
        }
        if (puVar7 + *(int *)(puVar2 + 0x14) * 2 <= ppppuVar8) {
          FUN_00a3fb10();
        }
      }
      iVar3 = _isdigit((uint)*(ushort *)ppppuVar8);
      if (iVar3 == 0) break;
      if (puVar2 != (undefined *)0xfffffffc) {
        if (puVar2 == (undefined *)0x0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(puVar2 + 0x18) < 8) {
          puVar7 = puVar2 + 4;
        }
        else {
          puVar7 = *(undefined **)(puVar2 + 4);
        }
        if (puVar7 + *(int *)(puVar2 + 0x14) * 2 <= ppppuVar8) {
          FUN_00a3fb10();
        }
      }
      if (puVar2 != (undefined *)0xfffffffc) {
        if (puVar2 == (undefined *)0x0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(puVar2 + 0x18) < 8) {
          puVar7 = puVar2 + 4;
        }
        else {
          puVar7 = *(undefined **)(puVar2 + 4);
        }
        if (puVar7 + *(int *)(puVar2 + 0x14) * 2 <= ppppuVar8) {
          FUN_00a3fb10();
        }
      }
      uVar1 = *(ushort *)ppppuVar8;
      lVar9 = __allmul(local_8c,10,0);
      local_8c = lVar9 + (int)(uVar1 - 0x30);
      ppppuVar8 = (undefined4 ****)((int)ppppuVar8 + 2);
    }
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30[0]);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008c7940(int param_1_00,int param_1,int param_2)

{
  void *pvVar1;
  undefined *puVar2;
  int iVar3;
  undefined auStack_84 [3];
  char local_81;
  undefined4 local_80;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd1e68;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_84;
  ExceptionList = &local_c;
  local_80 = 0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  FUN_004325b6((&PTR_u_name_00d3c910)[param_2 * 2]);
  local_4._0_1_ = 1;
  puVar2 = (undefined *)FUN_008c7010(local_7c,local_58);
  local_4._0_1_ = 2;
  if (local_34 != puVar2) {
    FID_conflict_assign(puVar2,0,0xffffffff);
  }
  iVar3 = FUN_008507a0(PTR_DAT_03236318);
  local_81 = iVar3 != 0;
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  local_4 = (uint)local_4._1_3_ << 8;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  if (local_81 == '\0') {
    FUN_0084b3b0((&DAT_00d3c914)[param_2 * 2] + *(int *)(param_1_00 + 0x48) + param_2,
                 *(undefined4 *)(param_1_00 + 0x24));
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  else {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  local_c = ExceptionList;
  if (7 < local_1c) {
    ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_008c7b10(undefined4 param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_44 [20];
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca1c0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  FUN_0081c0f1(&DAT_00d3b284);
  local_4 = 0;
  uVar2 = FUN_00841f90(local_30,local_44,param_1,uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  FID_conflict_append(uVar2,0,0xffffffff);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  local_4 = 0xffffffff;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_008c7be0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xe0);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008c6b90(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __fastcall thunk_FUN_008c7be0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  pvVar1 = operator_new(0xe0);
  uStack_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008c6b90(param_1);
    ExceptionList = pvStack_c;
    return uVar2;
  }
  ExceptionList = pvStack_c;
  return 0;
}



undefined4 * __thiscall FUN_008c7c60(int *param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  float fVar2;
  float fVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar4 = (undefined4 *)operator_new(0x4c);
  local_4 = 0;
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    *puVar4 = 0;
    FUN_008fa5f0(param_1);
  }
  *puVar4 = *(undefined4 *)(*param_1_00 + param_2 * 4);
  *(undefined4 **)(*param_1_00 + param_2 * 4) = puVar4;
  param_1_00[2] = param_1_00[2] + 1;
  iVar1 = param_1_00[1];
  fVar2 = (float)param_1_00[2];
  local_4 = 0xffffffff;
  if (param_1_00[2] < 0) {
    fVar2 = fVar2 + 4.294967e+09;
  }
  fVar3 = (float)iVar1;
  if (iVar1 < 0) {
    fVar3 = fVar3 + 4.294967e+09;
  }
  if (0.85 <= fVar2 / fVar3) {
    FUN_00b28480(iVar1);
  }
  ExceptionList = local_c;
  return puVar4;
}



void __thiscall FUN_008c7d30(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  piVar1 = (int *)FUN_0087d6d0(local_30,param_1,param_2,&param_2,
                               DAT_0323f878 ^ (uint)&stack0xffffffcc);
  local_4 = 0;
  if (param_1_00 + 3 != piVar1) {
    FID_conflict_assign(piVar1,0,0xffffffff);
  }
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_2c = local_2c & 0xffff0000;
  local_18 = 7;
  local_1c = 0;
  (**(code **)(*param_1_00 + 0x38))(param_2);
  ExceptionList = pvStack_10;
  return;
}



void FUN_008c7df0(int param_1,int param_2,int param_3)

{
  short sVar1;
  char cVar2;
  short *psVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  undefined **ppuVar7;
  undefined **local_a8;
  undefined ***local_8c;
  undefined4 local_88;
  undefined4 local_84;
  int local_80;
  undefined local_7c [24];
  uint local_64;
  void *local_60;
  undefined *local_58;
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [20];
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd1edf;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_8c;
  ExceptionList = &local_c;
  local_8c = &local_a8;
  local_84 = 0;
  local_a8 = (undefined **)0x2f;
  local_4 = 0;
  local_80 = param_1;
  FUN_00852900(local_34);
  local_8c = (undefined ***)&stack0xffffff5c;
  local_a8 = &local_58;
  local_4 = 1;
  FUN_00852730();
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined4 *)(param_1 + 0x18) = 7;
  puVar6 = (undefined4 *)(param_1 + 4);
  *(undefined2 *)puVar6 = 0;
  local_4 = CONCAT31(local_4._1_3_,2);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_84 = 1;
  if (local_20 == 0) {
    psVar3 = &DAT_00fae798;
    do {
      sVar1 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar1 != 0);
    local_a8 = (undefined **)&DAT_00fae798;
    FID_conflict_assign();
  }
  local_a8 = (undefined **)(*(int *)(param_3 + 0x14) + 0x10 + *(int *)(param_2 + 0x14));
  ppuVar7 = *(undefined ***)(param_1 + 0x14);
  if (((ppuVar7 <= local_a8) && (*(undefined ***)(param_1 + 0x18) != local_a8)) &&
     (cVar2 = FUN_004182d2(), cVar2 != '\0')) {
    *(undefined ***)(param_1 + 0x14) = ppuVar7;
    if (7 < *(uint *)(param_1 + 0x18)) {
      puVar6 = (undefined4 *)*puVar6;
    }
    *(undefined2 *)((int)puVar6 + (int)ppuVar7 * 2) = 0;
  }
  ppuVar7 = (undefined **)0x0;
  local_88 = 0x25;
  while ((local_a8 = ppuVar7, iVar4 = FUN_00420f3f(&local_88), iVar4 != -1 &&
         (iVar4 + 1U < *(uint *)(param_2 + 0x14)))) {
    local_a8 = ppuVar7;
    uVar5 = FUN_0084c0c0(local_7c);
    local_a8 = (undefined **)0x0;
    local_4._0_1_ = 3;
    FID_conflict_append(uVar5);
    local_4 = CONCAT31(local_4._1_3_,2);
    local_a8 = (undefined **)0x8c7f85;
    _free(local_60);
    if (7 < local_64) {
                    // WARNING: Subroutine does not return
      local_a8 = (undefined **)&UNK_008c7f99;
      FUN_00a3f6a1();
    }
    local_a8 = (undefined **)&local_8c;
    FUN_0081feb2();
    switch(local_8c) {
    case (undefined ***)0x25:
      psVar3 = &DAT_00d3cb84;
      do {
        sVar1 = *psVar3;
        psVar3 = psVar3 + 1;
      } while (sVar1 != 0);
      local_a8 = (undefined **)&DAT_00d3cb84;
      FUN_00473ccc();
    default:
      ppuVar7 = (undefined **)(iVar4 + 2);
      break;
    case (undefined ***)0x64:
      local_a8 = (undefined **)0x0;
      FID_conflict_append(local_34);
      ppuVar7 = (undefined **)(iVar4 + 2);
      break;
    case (undefined ***)0x66:
      local_a8 = (undefined **)0x0;
      FID_conflict_append(&local_58);
      ppuVar7 = (undefined **)(iVar4 + 2);
      break;
    case (undefined ***)0x70:
      GetCurrentProcessId();
      local_a8 = (undefined **)0x8c8003;
      FUN_008c7b10();
      ppuVar7 = (undefined **)(iVar4 + 2);
    }
  }
  local_a8 = ppuVar7;
  uVar5 = FUN_0084c0c0(local_7c);
  local_a8 = (undefined **)0x0;
  local_4 = CONCAT31(local_4._1_3_,4);
  FID_conflict_append(uVar5);
  local_a8 = (undefined **)0x8c8063;
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    local_a8 = (undefined **)&UNK_008c807b;
    FUN_00a3f6a1();
  }
  local_a8 = (undefined **)0x8c8088;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    local_a8 = (undefined **)&UNK_008c809b;
    FUN_00a3f6a1();
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  local_a8 = (undefined **)0x8c80c2;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    local_a8 = (undefined **)&UNK_008c80d8;
    FUN_00a3f6a1();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008c8170(int param_1_00,undefined4 param_1)

{
  char *pcVar1;
  char cVar2;
  short *psVar3;
  uint uVar4;
  undefined4 uVar5;
  char *pcVar6;
  char *pcVar7;
  char *pcVar8;
  int iVar9;
  undefined *puVar10;
  short *psVar11;
  char **local_40;
  char **local_3c;
  undefined local_38 [4];
  undefined local_34 [4];
  char local_30 [32];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1f30;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_40;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  if (*(char *)(param_1_00 + 0x58) == '\0') {
    if (*(int *)(param_1_00 + 0x8c) != 0) {
      psVar3 = &DAT_00d2e8cc;
      do {
        psVar11 = psVar3;
        psVar3 = psVar11 + 1;
      } while (*psVar11 != 0);
      FUN_00473ccc(&DAT_00d2e8cc,(int)(psVar11 + -0x697466) >> 1);
    }
    FID_conflict_append(param_1,0,0xffffffff);
  }
  else {
    uVar5 = FUN_0081d19a(local_38);
    local_4 = 0;
    FUN_00432305(uVar5);
    local_4._0_1_ = 2;
    thunk_FUN_0043c1dd(uVar4);
    uVar5 = FUN_0081d19a(local_34);
    local_4._0_1_ = 3;
    FUN_00432305(uVar5);
    local_4 = CONCAT31(local_4._1_3_,5);
    thunk_FUN_0043c1dd();
    pcVar6 = *local_40;
    pcVar8 = pcVar6 + 1;
    do {
      cVar2 = *pcVar6;
      pcVar6 = pcVar6 + 1;
    } while (cVar2 != '\0');
    pcVar7 = *local_3c;
    pcVar1 = pcVar7 + 1;
    do {
      cVar2 = *pcVar7;
      pcVar7 = pcVar7 + 1;
    } while (cVar2 != '\0');
    pcVar6 = pcVar6 + (int)(pcVar7 + ((5 - (int)pcVar1) - (int)pcVar8));
    _sprintf(local_30,"%lu",pcVar6);
    pcVar8 = local_30;
    do {
      cVar2 = *pcVar8;
      pcVar8 = pcVar8 + 1;
    } while (cVar2 != '\0');
    uVar4 = (int)pcVar8 - (int)(local_30 + 1);
    if (uVar4 != 2) {
      pcVar6 = pcVar6 + (uVar4 - 2);
      _sprintf(local_30,"%lu",pcVar6);
      pcVar8 = local_30;
      do {
        cVar2 = *pcVar8;
        pcVar8 = pcVar8 + 1;
      } while (cVar2 != '\0');
      if (uVar4 < (uint)((int)pcVar8 - (int)(local_30 + 1))) {
        pcVar6 = pcVar6 + 1;
        _sprintf(local_30,"%lu",pcVar6);
      }
    }
    pcVar8 = *(char **)(param_1_00 + 0x74);
    if (pcVar8 < pcVar6) {
      iVar9 = __alldiv(pcVar6 + 0x1ff,(char *)0xfffffe00 < pcVar6,0x200,0);
      uVar4 = (int)pcVar8 * 2;
      *(uint *)(param_1_00 + 0x74) = uVar4;
      if (uVar4 < (uint)(iVar9 * 0x200)) {
        *(int *)(param_1_00 + 0x74) = iVar9 * 0x200;
      }
      pcVar8 = *(char **)(param_1_00 + 0x70);
      puVar10 = (undefined *)FUN_00823c23(*(undefined4 *)(param_1_00 + 0x74));
      *(undefined **)(param_1_00 + 0x70) = puVar10;
      if (pcVar8 != (char *)0x0) {
        pcVar6 = pcVar8;
        do {
          cVar2 = *pcVar6;
          pcVar6[(int)puVar10 - (int)pcVar8] = cVar2;
          pcVar6 = pcVar6 + 1;
        } while (cVar2 != '\0');
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pcVar8);
      }
      *puVar10 = 0;
    }
    pcVar8 = _strchr(*(char **)(param_1_00 + 0x70),0);
    _sprintf(pcVar8,"%s %s=%s\n",local_30,*local_3c,*local_40);
    local_4 = CONCAT31(local_4._1_3_,2);
    thunk_FUN_0043c1dd();
    local_4 = 0xffffffff;
    thunk_FUN_0043c1dd();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_008c83b0(int *param_1_00,int param_1,undefined *param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    iVar3 = param_1 + 4;
  }
  else {
    iVar3 = *(int *)(param_1 + 4);
  }
  uVar2 = FUN_00893df0(iVar3);
  uVar1 = param_1_00[1];
  puVar4 = *(undefined4 **)(*param_1_00 + (uVar2 % uVar1) * 4);
  while( true ) {
    if (puVar4 == (undefined4 *)0x0) {
      *param_2 = 1;
      puVar4 = (undefined4 *)FUN_008c7c60(param_1,uVar2 % uVar1);
      return puVar4;
    }
    if ((puVar4[6] == *(int *)(param_1 + 0x14)) && (iVar3 = FUN_00850760(param_1), iVar3 == 0))
    break;
    puVar4 = (undefined4 *)*puVar4;
  }
  *param_2 = 0;
  return puVar4;
}



int FUN_008c8430(undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined local_78 [4];
  uint local_74;
  undefined4 local_64;
  uint local_60;
  void *local_5c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd1f70;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff84;
  ExceptionList = &local_c;
  local_60 = 7;
  local_64 = 0;
  local_74 = local_74 & 0xffff0000;
  local_5c = (void *)0x0;
  local_4 = 0;
  uVar2 = FUN_008c6420(param_1,local_78);
  local_4 = CONCAT31(local_4._1_3_,1);
  iVar3 = FUN_008c83b0(uVar2,&param_1);
  FUN_009c09f0(uVar1);
  _free(local_5c);
  if (7 < local_60) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_74);
  }
  ExceptionList = local_c;
  return iVar3 + 0x28;
}



undefined4 * __thiscall
FUN_008c84f0(undefined4 *param_1_00,int param_1,undefined4 *param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd1fca;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  param_1_00[2] = 0;
  *param_1_00 = wxTarEntry::vftable;
  param_1_00[9] = 7;
  param_1_00[8] = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  param_1_00[10] = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  param_1_00[0xc] = 0x1a4;
  *(undefined *)(param_1_00 + 0xd) = 0;
  puVar3 = (undefined4 *)FUN_008c6ac0(uVar2);
  param_1_00[0xe] = *puVar3;
  iVar4 = FUN_008c6ac0();
  uVar1 = *(undefined4 *)(iVar4 + 4);
  param_1_00[0x10] = param_3;
  param_1_00[0x11] = param_4;
  param_1_00[0xf] = uVar1;
  param_1_00[0x12] = 0xffffffff;
  param_1_00[0x13] = 0xffffffff;
  param_1_00[0x14] = *param_2;
  param_1_00[0x15] = param_2[1];
  param_1_00[0x16] = 0;
  param_1_00[0x17] = 0x80000000;
  param_1_00[0x18] = 0;
  param_1_00[0x19] = 0x80000000;
  param_1_00[0x1a] = 0x30;
  param_1_00[0x21] = 7;
  param_1_00[0x20] = 0;
  *(undefined2 *)(param_1_00 + 0x1c) = 0;
  param_1_00[0x22] = 0;
  local_4._0_1_ = 2;
  iVar4 = FUN_008c6ac0();
  FUN_004325b6(*(undefined4 *)(iVar4 + 8));
  local_4._0_1_ = 3;
  iVar4 = FUN_008c6ac0();
  FUN_004325b6(*(undefined4 *)(iVar4 + 0xc));
  param_1_00[0x36] = 0xffffffff;
  param_1_00[0x37] = 0xffffffff;
  local_4 = CONCAT31(local_4._1_3_,4);
  if (*(int *)(param_1 + 0x14) != 0) {
    FUN_008c7d30(param_1,0);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_008c8630(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  cVar1 = FUN_008c6520(param_1,*(undefined4 *)(param_1_00 + 0x18));
  if (cVar1 != '\0') {
    if (*(char *)(param_1_00 + 0x58) == '\0') {
      ExceptionList = local_c;
      return;
    }
    cVar1 = FUN_008507e0(uVar2);
    if (cVar1 != '\0') {
      ExceptionList = local_c;
      return;
    }
  }
  FUN_004325b6(L"path");
  local_4 = 0;
  FUN_008c8170(local_30,param_1);
  _free(local_14);
  if (local_18 < 8) {
    ExceptionList = local_c;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_2c);
}



undefined4 FUN_008c86e0(int param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2000;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_008c5350(param_1,param_2,param_3);
  if (cVar1 == '\0') {
    FUN_004325b6((&PTR_u_name_00d3c910)[param_1 * 2]);
    local_4 = 0;
    uVar2 = FUN_008a0c90(local_54);
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_008c8170(local_30,uVar2);
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    uVar2 = 0;
  }
  else {
    uVar2 = 1;
  }
  ExceptionList = local_c;
  return uVar2;
}



void __thiscall FUN_008c87e0(int param_1_00,int param_1,void **param_2)

{
  void **ppvVar1;
  void **ppvVar2;
  uint uVar3;
  undefined4 *puVar4;
  void **ppvVar5;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  ppvVar1 = param_2;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9388;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  puVar4 = (undefined4 *)FUN_00432413(&param_2,*(undefined4 *)(param_1_00 + 0x18));
  _strncpy((char *)(*(int *)(param_1_00 + 0x68) + (&DAT_00d3c914)[param_1 * 2] + param_1),
           *(char **)*puVar4,(&DAT_00d3c91c)[param_1 * 2] - (&DAT_00d3c914)[param_1 * 2]);
  ppvVar5 = (void **)FUN_00850350(uVar3);
  ppvVar2 = param_2;
  if (param_2 != ppvVar5) {
    *(short *)(param_2 + 2) = *(short *)(param_2 + 2) + -1;
    if (*(short *)(param_2 + 2) == 0) {
      if (*(char *)((int)param_2 + 10) != '\0') {
        _free(*param_2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar2);
    }
    FUN_00850350(uVar3);
  }
  if ((void *)((&DAT_00d3c91c)[param_1 * 2] - (&DAT_00d3c914)[param_1 * 2]) < ppvVar1[5]) {
    FUN_004325b6((&PTR_u_name_00d3c910)[param_1 * 2]);
    local_4 = 0;
    FUN_008c8170(local_30,ppvVar1);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return;
}



// WARNING: Removing unreachable block (ram,0x008c89c7)
// WARNING: Removing unreachable block (ram,0x008c89d5)

void __thiscall FUN_008c8900(undefined4 param_1_00,undefined4 param_1,int *param_2)

{
  char cVar1;
  uint *puVar2;
  int iVar3;
  undefined4 uVar4;
  undefined *puVar5;
  longlong lVar6;
  undefined auStack_134 [60];
  uint local_f8;
  uint uStack_f4;
  uint local_f0;
  uint local_ec;
  undefined4 local_e4;
  undefined4 local_e0;
  undefined local_dc [24];
  uint local_c4;
  void *local_c0;
  undefined local_b0 [8];
  undefined local_a8 [4];
  uint local_a4;
  undefined4 local_94;
  uint local_90;
  void *local_8c;
  uint local_84;
  void *local_4c;
  undefined *puStack_48;
  undefined4 local_44;
  
  local_44 = -1;
  puStack_48 = &LAB_00bd203e;
  local_4c = ExceptionList;
  local_84 = DAT_0323f878 ^ (uint)auStack_134;
  ExceptionList = &local_4c;
  local_e0 = param_1_00;
  local_e4 = param_1;
  if ((*param_2 == DAT_032365a0) && (param_2[1] == DAT_032365a4)) {
    local_f8 = 0;
    uStack_f4 = 0;
    puVar2 = &local_f8;
  }
  else {
    puVar2 = (uint *)FUN_0086cab0();
  }
  local_f0 = *puVar2;
  local_ec = puVar2[1];
  lVar6 = __alldiv(*puVar2,local_ec,1000,0);
  iVar3 = FUN_008507a0();
  if ((((iVar3 != 0) || (cVar1 = FUN_008c5350(), cVar1 == '\0')) || (lVar6 < 1)) ||
     (0x7ffffffe < lVar6)) {
    local_90 = 7;
    local_94 = 0;
    local_a4 = local_a4 & 0xffff0000;
    local_8c = (void *)0x0;
    local_44 = 0;
    if (((((int)local_ec < -1) || ((0x7fffffff < local_ec && (local_f0 < 0x80000000)))) ||
        (0 < (int)local_ec)) || ((-1 < (int)local_ec && (0x7fffffff < local_f0)))) {
      puVar5 = (undefined *)FUN_008a0c90();
      local_44._0_1_ = 2;
      if (local_a8 != puVar5) {
        FID_conflict_assign();
      }
      local_44 = (uint)local_44._1_3_ << 8;
      _free(local_c0);
      if (7 < local_c4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      puVar2 = (uint *)FUN_0081b397();
      local_f8 = *puVar2;
      uStack_f4 = puVar2[1];
      FUN_004226c0();
      FUN_0046d56b(local_b0,local_f8,uStack_f4,0x2e);
    }
    else {
      FUN_0081c0f1();
      local_44._0_1_ = 1;
      local_f8 = FUN_0081a105();
      FUN_00847420((double)local_f8 / 1000.0,local_dc,1);
      uVar4 = FUN_008854f0();
      FUN_00853980(local_a8,uVar4,CONCAT44(uStack_f4,local_f8));
      local_44 = (uint)local_44._1_3_ << 8;
      FUN_0081b5bc();
    }
    FUN_008c8170(local_e4,local_a8);
    _free(local_8c);
    if (7 < local_90) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_4c;
  ___security_check_cookie_4();
  return;
}



undefined4 thunk_FUN_008c8be0(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined auStack_54 [4];
  undefined4 uStack_50;
  uint uStack_3c;
  void *pvStack_38;
  undefined auStack_30 [36];
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb334;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &pvStack_c;
  pvVar2 = operator_new(0xe0);
  uStack_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    FUN_004325b6(PTR_DAT_03236318);
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    uVar3 = FUN_0086cc50(auStack_30,uVar1);
    uStack_5c = 0;
    uStack_58 = 0;
    FUN_0086cca0(uVar3);
    uVar3 = FUN_008c84f0(auStack_54,&uStack_5c,0xffffffff,0xffffffff);
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
  }
  ExceptionList = pvStack_c;
  return uVar3;
}



undefined4 FUN_008c8be0(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 local_5c;
  undefined4 local_58;
  undefined local_54 [4];
  undefined4 local_50;
  uint local_3c;
  void *local_38;
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb334;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xe0);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar3 = FUN_0086cc50(local_30,uVar1);
    local_5c = 0;
    local_58 = 0;
    FUN_0086cca0(uVar3);
    uVar3 = FUN_008c84f0(local_54,&local_5c,0xffffffff,0xffffffff);
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
  }
  ExceptionList = local_c;
  return uVar3;
}



void __fastcall FUN_008c8cc0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2078;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxTarInputStream::vftable;
  local_4 = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[0x12],uVar1);
}



undefined4 __thiscall FUN_008c8d90(undefined4 param_1,byte param_2)

{
  FUN_008c8cc0();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



// WARNING: Type propagation algorithm not settling

void __thiscall FUN_008c8db0(int param_1_00,void **param_1)

{
  uint *puVar1;
  byte *pbVar2;
  uint uVar3;
  short sVar4;
  bool bVar5;
  char cVar6;
  void **ppvVar7;
  void *pvVar8;
  int iVar9;
  int *piVar10;
  short *psVar11;
  void **unaff_EBX;
  char *pcVar12;
  char *pcVar13;
  void **ppvVar14;
  char *pcVar15;
  void *apvStack_124 [5];
  undefined4 uStack_110;
  void **ppvStack_e4;
  void **local_e0;
  void **local_dc;
  void **local_d4;
  void **local_d0;
  void **local_c8;
  undefined4 uStack_c4;
  char *pcStack_bc;
  undefined4 uStack_b8;
  char *pcStack_b4;
  undefined *puStack_b0;
  __time64_t _Stack_ac;
  DWORD DStack_a4;
  int iStack_a0;
  undefined4 uStack_98;
  undefined4 uStack_88;
  uint uStack_84;
  void *pvStack_80;
  uint uStack_5c;
  undefined4 uStack_4c;
  uint uStack_48;
  void *pvStack_44;
  uint uStack_38;
  int iStack_28;
  uint uStack_24;
  void *pvStack_20;
  void *pvStack_14;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2102;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&ppvStack_e4;
  ExceptionList = &local_c;
  local_d0 = param_1;
  if (*param_1 == (void *)0x0) {
    ppvVar7 = (void **)operator_new(0x10);
    local_4 = 0;
    local_d4 = ppvVar7;
    if (ppvVar7 == (void **)0x0) {
      ppvVar7 = (void **)0x0;
    }
    else {
      pvVar8 = (void *)FUN_00893ca0();
      ppvVar7[1] = pvVar8;
      ppvVar7[2] = (void *)0x0;
      pvVar8 = _calloc((size_t)pvVar8,4);
      *ppvVar7 = pvVar8;
    }
    *param_1 = ppvVar7;
  }
  local_4 = 0xffffffff;
  ppvVar7 = (void **)FUN_008c52f0();
  local_dc = ppvVar7;
  iVar9 = __alldiv();
  local_c8 = (void **)(iVar9 << 9);
  FUN_0084aa50();
  local_4 = 1;
  piVar10 = (int *)(**(code **)(**(int **)(param_1_00 + 0x1c) + 0x2c))();
  local_dc = (void **)(**(code **)(*piVar10 + 0x30))();
  if (local_dc < ppvVar7) {
    ppvVar7 = local_dc;
    ppvStack_e4 = local_dc;
  }
  *(char *)((int)*unaff_EBX + (int)ppvVar7) = '\0';
  puVar1 = (uint *)(param_1_00 + 0x30);
  uVar3 = *puVar1;
  *puVar1 = *puVar1 + (int)local_dc;
  bVar5 = true;
  local_e0 = (void **)0x0;
  *(int *)(param_1_00 + 0x34) = *(int *)(param_1_00 + 0x34) + (uint)CARRY4(uVar3,(uint)local_dc);
  ppvVar14 = (void **)(iVar9 << 9);
  if (ppvVar7 == (void **)0x0) {
LAB_008c90b3:
    if (ppvVar14 == local_dc) {
      local_c = (void *)0xffffffff;
      ppvVar7 = (void **)FUN_00850350();
      if (unaff_EBX != ppvVar7) {
        *(short *)(unaff_EBX + 2) = *(short *)(unaff_EBX + 2) + -1;
        if (*(short *)(unaff_EBX + 2) == 0) {
          if (*(char *)((int)unaff_EBX + 10) != '\0') {
            _free(*unaff_EBX);
          }
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        FUN_00850350();
      }
      goto LAB_008c93a3;
    }
  }
  else {
    do {
      pcVar15 = (char *)0x0;
      if (!bVar5) goto LAB_008c910c;
      pcVar12 = (char *)((int)*unaff_EBX + (int)local_e0);
      iVar9 = _isdigit((uint)*(byte *)((int)*unaff_EBX + (int)local_e0));
      pcVar13 = pcVar12;
      while (iVar9 != 0) {
        cVar6 = *pcVar13;
        pbVar2 = (byte *)(pcVar13 + 1);
        pcVar13 = pcVar13 + 1;
        pcVar15 = (char *)(cVar6 + -0x30 + (int)pcVar15 * 10);
        iVar9 = _isdigit((uint)*pbVar2);
      }
      local_c8 = (void **)(pcVar15 + (int)local_e0);
      if (ppvStack_e4 < local_c8) break;
      if (((pcVar15 < pcVar13 + (3 - (int)pcVar12)) || (*pcVar13 != ' ')) ||
         (pcVar12[(int)(pcVar15 + -1)] != '\n')) {
LAB_008c9085:
        bVar5 = false;
      }
      else {
        pcVar13 = pcVar13 + 1;
        pcVar12[(int)(pcVar15 + -1)] = '\0';
        if (*pcVar13 == '\0') goto LAB_008c9085;
        do {
          if (*pcVar13 == '=') break;
          pcVar13 = pcVar13 + 1;
        } while (*pcVar13 != '\0');
        if (*pcVar13 == '\0') goto LAB_008c9085;
        *pcVar13 = '\0';
        if (DAT_032bd4d8 == 0) {
          DAT_032bd4d8 = FUN_00861480();
        }
        FUN_00861fa0();
        local_c._0_1_ = 2;
        FUN_008c62e0();
        local_c = (void *)CONCAT31(local_c._1_3_,4);
        FUN_0083f900();
        if (DAT_032bd4d8 == 0) {
          DAT_032bd4d8 = FUN_00861480();
        }
        FUN_00861fa0();
        local_c._0_1_ = 5;
        FUN_008c62e0();
        local_c = (void *)CONCAT31(local_c._1_3_,7);
        FUN_0083f900();
        if (iStack_28 == 0) {
          FUN_008c64d0();
        }
        else {
          FUN_008c8430();
          FUN_0043261a();
        }
        FUN_0040159c();
        local_c = (void *)CONCAT31(local_c._1_3_,1);
        FUN_0040159c();
      }
      local_e0 = local_c8;
    } while (local_c8 < ppvStack_e4);
    if ((bVar5) && (ppvVar14 = local_d0, ppvStack_e4 <= local_e0)) goto LAB_008c90b3;
  }
LAB_008c910c:
  local_dc = apvStack_124;
  FUN_0043c211(&DAT_00d25fa0);
  cVar6 = FUN_00846b30(2);
  if (cVar6 != '\0') {
    psVar11 = (short *)PTR_DAT_03236318;
    if (PTR_DAT_03236318 == (undefined *)0x0) {
      psVar11 = &DAT_00fae9c8;
    }
    uStack_48 = 7;
    uStack_4c = 0;
    uStack_5c = uStack_5c & 0xffff0000;
    do {
      sVar4 = *psVar11;
      psVar11 = psVar11 + 1;
    } while (sVar4 != 0);
    FID_conflict_assign();
    pvStack_44 = (void *)0x0;
    local_c._0_1_ = 8;
    FUN_0043c211();
    local_c = (void *)CONCAT31(local_c._1_3_,9);
    iVar9 = FUN_0084a340();
    if (iVar9 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    local_c._0_1_ = 10;
    uStack_c4 = 2;
    pcStack_bc = "..\\..\\src\\common\\tarstrm.cpp";
    pcStack_b4 = "wxTarInputStream::ReadExtendedHeader";
    uStack_b8 = 0x3e2;
    puStack_b0 = &DAT_00d25fa0;
    _Stack_ac = __time64((__time64_t *)0x0);
    DStack_a4 = GetCurrentThreadId();
    iStack_a0 = 0;
    uStack_84 = 7;
    uStack_88 = 0;
    uStack_98._0_2_ = 0;
    pvStack_80 = (void *)0x0;
    local_c._0_1_ = 0xb;
    FUN_008854f0();
    FUN_0083fe90();
    local_c._0_1_ = 10;
    uStack_110 = 0x8c9282;
    _free(pvStack_80);
    if (7 < uStack_84) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_98 = (uint)uStack_98._2_2_ << 0x10;
    uStack_84 = 7;
    uStack_88 = 0;
    if (iStack_a0 != 0) {
      FUN_00841af0();
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_c = (void *)CONCAT31(local_c._1_3_,9);
    FUN_0081b5bc();
    _free(pvStack_20);
    if (7 < uStack_24) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_24 = 7;
    iStack_28 = 0;
    uStack_38 = uStack_38 & 0xffff0000;
    _free(pvStack_44);
    if (7 < uStack_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_48 = 7;
    uStack_4c = 0;
    uStack_5c = uStack_5c & 0xffff0000;
  }
  local_c = (void *)0xffffffff;
  ppvVar7 = (void **)FUN_00850350();
  if (unaff_EBX != ppvVar7) {
    *(short *)(unaff_EBX + 2) = *(short *)(unaff_EBX + 2) + -1;
    if (*(short *)(unaff_EBX + 2) == 0) {
      if (*(char *)((int)unaff_EBX + 10) != '\0') {
        _free(*unaff_EBX);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    FUN_00850350();
  }
LAB_008c93a3:
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



undefined8 __thiscall FUN_008c93d0(int *param_1,uint param_2,int param_3,int param_4)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  bool bVar4;
  longlong lVar5;
  undefined auStack_f4 [12];
  undefined4 uStack_e8;
  undefined4 uStack_e4;
  char *pcStack_e0;
  int iStack_dc;
  char *pcStack_d8;
  undefined local_bc [4];
  uint local_b8;
  undefined4 local_a8;
  uint local_a4;
  void *local_a0;
  undefined *local_98;
  uint local_90;
  undefined4 local_80;
  uint local_7c;
  void *local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2316;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1[10] & param_1[0xb]) == 0xffffffff) {
    local_98 = auStack_f4;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      pcStack_d8 = (char *)0x8c9443;
      FUN_004325b6();
      local_4 = 0;
      pcStack_d8 = (char *)0x8c945a;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        pcStack_d8 = (char *)0x8c9488;
        FUN_0084d360();
      }
      else {
        pcStack_d8 = local_bc;
        iStack_dc = 0x8c947c;
        FUN_0084f210();
      }
      pcStack_d8 = (char *)0x8c9495;
      FUN_008433c0();
      pcStack_d8 = "wxTarInputStream::OnSysSeek";
      iStack_dc = 0x3ec;
      pcStack_e0 = "..\\..\\src\\common\\tarstrm.cpp";
      uStack_e4 = 1;
      local_4._0_1_ = 2;
      uStack_e8 = 0x8c94c0;
      uVar3 = FUN_008423d0();
      local_4._0_1_ = 3;
      FUN_008854f0();
      iStack_dc = 0x8c94da;
      pcStack_d8 = (char *)uVar3;
      FUN_0083fe90();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      pcStack_d8 = (char *)0x8c9508;
      _free(local_a0);
      if (7 < local_a4) {
                    // WARNING: Subroutine does not return
        pcStack_d8 = &UNK_008c9520;
        FUN_00a3f6a1();
      }
      local_a4 = 7;
      local_a8 = 0;
      local_b8 = local_b8 & 0xffff0000;
      local_4 = 0xffffffff;
      pcStack_d8 = (char *)0x8c954c;
      _free(local_78);
      if (7 < local_7c) {
                    // WARNING: Subroutine does not return
        pcStack_d8 = &UNK_008c955f;
        FUN_00a3f6a1();
      }
      local_7c = 7;
      local_80 = 0;
      local_90 = local_90 & 0xffff0000;
    }
    param_1[3] = 3;
  }
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    if (param_4 == 1) {
      bVar4 = CARRY4(param_2,param_1[10]);
      param_2 = param_2 + param_1[10];
      param_3 = param_3 + param_1[0xb] + (uint)bVar4;
    }
    else if (param_4 == 2) {
      bVar4 = CARRY4(param_2,param_1[0xe]);
      param_2 = param_2 + param_1[0xe];
      param_3 = param_3 + param_1[0xf] + (uint)bVar4;
    }
    if (-1 < param_3) {
      iStack_dc = param_1[0xc] + param_2;
      pcStack_d8 = (char *)(param_1[0xd] + param_3 + (uint)CARRY4(param_1[0xc],param_2));
      pcStack_e0 = (char *)0x8c95dc;
      lVar5 = (**(code **)(*(int *)param_1[7] + 0x3c))();
      if (lVar5 != -1) {
        param_1[10] = param_2;
        param_1[0xb] = param_3;
        goto LAB_008c95f4;
      }
    }
  }
  param_2 = 0xffffffff;
  param_3 = -1;
LAB_008c95f4:
  ExceptionList = local_c;
  return CONCAT44(param_3,param_2);
}



uint __thiscall FUN_008c9610(int *param_1,undefined4 param_2,int param_3)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  int iVar4;
  int *piVar5;
  uint uVar6;
  uint local_14c;
  void *local_148;
  uint local_100;
  void *local_fc;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2185;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1[10] & param_1[0xb]) == 0xffffffff) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(1);
    if (cVar3 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_008423d0();
      local_4._0_1_ = 3;
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      _free(local_148);
      if (7 < local_14c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_4 = 0xffffffff;
      _free(local_fc);
      if (7 < local_100) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    param_1[3] = 3;
  }
  cVar3 = (**(code **)(*param_1 + 0x10))();
  if ((cVar3 == '\0') || (param_3 == 0)) {
    uVar6 = 0;
  }
  else {
    piVar5 = (int *)(**(code **)(*(int *)param_1[7] + 0x2c))();
    uVar6 = (**(code **)(*piVar5 + 0x30))();
    puVar1 = (uint *)(param_1 + 10);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 + uVar6;
    param_1[0xb] = param_1[0xb] + (uint)CARRY4(uVar2,uVar6);
    if ((param_1[0xb] < param_1[0xf]) ||
       ((param_1[0xb] <= param_1[0xf] && ((uint)param_1[10] < (uint)param_1[0xe])))) {
      cVar3 = (**(code **)(*(int *)param_1[7] + 0x10))();
      if (cVar3 == '\0') {
        cVar3 = (**(code **)(*(int *)param_1[7] + 0x38))();
        if (cVar3 != '\0') {
          FUN_0043c211(&DAT_00d25fa0);
          cVar3 = FUN_00846b30(1);
          if (cVar3 != '\0') {
            FUN_004325b6();
            local_4 = 4;
            FUN_0043c211();
            local_4._0_1_ = 5;
            FUN_00820bf9();
            FUN_008433c0();
            local_4._0_1_ = 6;
            FUN_008423d0();
            local_4._0_1_ = 7;
            FUN_00840b80();
            local_4._0_1_ = 6;
            FUN_00842440();
            local_4 = CONCAT31(local_4._1_3_,5);
            FUN_0081b5bc();
            FUN_0040159c();
            FUN_0040159c();
          }
        }
        param_1[3] = 3;
      }
    }
    else {
      param_1[3] = 1;
    }
  }
  ExceptionList = local_c;
  return uVar6;
}



void __thiscall FUN_008c9990(int *param_1_00,int *param_1)

{
  uint *puVar1;
  byte *pbVar2;
  code *pcVar3;
  char cVar4;
  char *pcVar5;
  uint uVar6;
  int iVar7;
  void *_Dst;
  char *pcVar8;
  char *pcVar9;
  char *pcVar10;
  int iVar11;
  char *pcVar12;
  uint uVar13;
  longlong lVar14;
  uint uStack_14c;
  void *pvStack_148;
  uint uStack_144;
  void *pvStack_140;
  void *pvStack_13c;
  uint uStack_128;
  void *pvStack_124;
  uint uStack_120;
  void *pvStack_11c;
  uint uStack_fc;
  uint uStack_f4;
  void *pvStack_f0;
  uint uStack_d0;
  void *pvStack_cc;
  uint uStack_ac;
  void *pvStack_a8;
  uint uStack_88;
  void *pvStack_84;
  void *pvStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2265;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  _memset((void *)param_1_00[0x1a],0,0x211);
  (**(code **)(*param_1 + 0x2c))();
  local_c = (void *)0x0;
  FUN_008c8630();
  local_c = (void *)0xffffffff;
  _free(pvStack_13c);
  if ((void *)0x7 < pvStack_140) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (*(char *)(param_1 + 0xd) == '\0') {
    (**(code **)(*param_1 + 0x1c))();
  }
  FUN_008c86e0();
  FUN_008c86e0();
  FUN_008c86e0();
  lVar14 = (**(code **)(*param_1 + 0x14))();
  if (lVar14 == -1) {
    (**(code **)(*param_1 + 0x34))();
  }
  (**(code **)(*param_1 + 0x14))();
  cVar4 = FUN_008c86e0();
  *(bool *)(param_1_00 + 0x19) = cVar4 == '\0';
  FUN_004325b6();
  local_c = (void *)0x1;
  (**(code **)(*param_1 + 0x10))();
  FUN_008c8900();
  _free(pvStack_f0);
  if (7 < uStack_f4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if ((param_1[0x16] != DAT_032365a0) || (param_1[0x17] != DAT_032365a4)) {
    FUN_004325b6();
    FUN_008c8900();
    _free(pvStack_11c);
    if (7 < uStack_120) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    pvStack_124 = (void *)0x0;
  }
  if ((param_1[0x18] != DAT_032365a0) || (param_1[0x19] != DAT_032365a4)) {
    FUN_004325b6();
    FUN_008c8900();
    _free(pvStack_140);
    if (7 < uStack_144) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_144 = 7;
    pvStack_148 = (void *)0x0;
  }
  pcVar10 = PTR_s_ustar_032382ac;
  *(char *)(param_1_00[0x1a] + 0xa3) = (char)param_1[0x1a];
  pcVar5 = (char *)(param_1_00[0x1a] + 0x10a);
  do {
    cVar4 = *pcVar10;
    *pcVar5 = cVar4;
    pcVar10 = pcVar10 + 1;
    pcVar5 = pcVar5 + 1;
  } while (cVar4 != '\0');
  pcVar5 = (char *)(param_1_00[0x1a] + 0x111);
  pcVar10 = PTR_DAT_032382b0;
  do {
    cVar4 = *pcVar10;
    *pcVar5 = cVar4;
    pcVar10 = pcVar10 + 1;
    pcVar5 = pcVar5 + 1;
  } while (cVar4 != '\0');
  FUN_008c6340();
  FUN_008c87e0();
  _free(pvStack_140);
  if (uStack_144 < 8) {
    FUN_008c6380();
    FUN_008c87e0();
    _free(pvStack_140);
    if (7 < uStack_144) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    FUN_008c63d0();
    FUN_008c87e0();
    _free(pvStack_140);
    if (7 < uStack_144) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (param_1[0x36] != -1) {
      FUN_008c86e0();
    }
    if (param_1[0x37] != -1) {
      FUN_008c86e0();
    }
    iVar7 = param_1_00[0x1a];
    *(undefined4 *)(iVar7 + 0x9a) = 0x20202020;
    *(undefined4 *)(iVar7 + 0x9e) = 0x20202020;
    iVar11 = 0;
    uVar6 = 0;
    do {
      pbVar2 = (byte *)(uVar6 + iVar7);
      uVar6 = uVar6 + 1;
      iVar11 = iVar11 + (uint)*pbVar2;
    } while (uVar6 < 0x211);
    param_1_00[0x18] = iVar11;
    FUN_008c5350();
    if (*(char *)(param_1_00 + 0x19) == '\0') {
      iVar7 = FUN_008c51d0();
      param_1_00[0x18] = param_1_00[0x18] - iVar7;
    }
    if (((char *)param_1_00[0x1c] != (char *)0x0) && (*(char *)param_1_00[0x1c] != '\0')) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(param_1_00 + 0x16) == '\0')) {
        FUN_008402e0();
      }
      if (param_1_00[0x1b] == 0) {
        _Dst = operator_new(0x211);
        if (_Dst == (void *)0x0) {
          _Dst = (void *)0x0;
        }
        else {
          _memset(_Dst,0,0x211);
        }
        param_1_00[0x1b] = (int)_Dst;
      }
      _memset((void *)param_1_00[0x1b],0,0x211);
      FUN_004325b6();
      (**(code **)(*param_1 + 0x2c))();
      FUN_008c7df0();
      FUN_008c6520();
      _free(pvStack_148);
      if (7 < uStack_14c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(pvStack_124);
      if (7 < uStack_128) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      pvStack_18 = (void *)0xffffffff;
      _free((void *)0x0);
      if (7 < uStack_fc) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      FUN_008c5350();
      pcVar10 = (char *)(param_1_00[0x1a] + 0x6e);
      pcVar5 = (char *)(param_1_00[0x1b] + 0x6e);
      do {
        cVar4 = *pcVar10;
        *pcVar5 = cVar4;
        pcVar10 = pcVar10 + 1;
        pcVar5 = pcVar5 + 1;
      } while (cVar4 != '\0');
      pcVar10 = (char *)(param_1_00[0x1a] + 0x77);
      pcVar5 = (char *)(param_1_00[0x1b] + 0x77);
      do {
        cVar4 = *pcVar10;
        *pcVar5 = cVar4;
        pcVar10 = pcVar10 + 1;
        pcVar5 = pcVar5 + 1;
      } while (cVar4 != '\0');
      pcVar5 = (char *)param_1_00[0x1c];
      pcVar10 = pcVar5 + 1;
      do {
        cVar4 = *pcVar5;
        pcVar5 = pcVar5 + 1;
      } while (cVar4 != '\0');
      FUN_008c5350();
      pcVar8 = (char *)(param_1_00[0x1a] + 0x8d);
      pcVar9 = (char *)(param_1_00[0x1b] + 0x8d);
      do {
        cVar4 = *pcVar8;
        *pcVar9 = cVar4;
        pcVar12 = PTR_s_ustar_032382ac;
        pcVar8 = pcVar8 + 1;
        pcVar9 = pcVar9 + 1;
      } while (cVar4 != '\0');
      *(undefined *)(param_1_00[0x1b] + 0xa3) = 0x78;
      pcVar8 = (char *)(param_1_00[0x1b] + 0x10a);
      do {
        cVar4 = *pcVar12;
        *pcVar8 = cVar4;
        pcVar12 = pcVar12 + 1;
        pcVar8 = pcVar8 + 1;
      } while (cVar4 != '\0');
      pcVar9 = (char *)(param_1_00[0x1b] + 0x111);
      pcVar8 = PTR_DAT_032382b0;
      do {
        cVar4 = *pcVar8;
        *pcVar9 = cVar4;
        pcVar8 = pcVar8 + 1;
        pcVar9 = pcVar9 + 1;
      } while (cVar4 != '\0');
      pcVar8 = (char *)(param_1_00[0x1a] + 0x114);
      pcVar9 = (char *)(param_1_00[0x1b] + 0x114);
      do {
        cVar4 = *pcVar8;
        *pcVar9 = cVar4;
        pcVar8 = pcVar8 + 1;
        pcVar9 = pcVar9 + 1;
      } while (cVar4 != '\0');
      pcVar8 = (char *)(param_1_00[0x1a] + 0x135);
      pcVar9 = (char *)(param_1_00[0x1b] + 0x135);
      do {
        cVar4 = *pcVar8;
        *pcVar9 = cVar4;
        pcVar8 = pcVar8 + 1;
        pcVar9 = pcVar9 + 1;
      } while (cVar4 != '\0');
      iVar7 = param_1_00[0x1b];
      *(undefined4 *)(iVar7 + 0x9a) = 0x20202020;
      *(undefined4 *)(iVar7 + 0x9e) = 0x20202020;
      uVar6 = 0;
      do {
        uVar6 = uVar6 + 1;
      } while (uVar6 < 0x211);
      FUN_008c5350();
      FUN_008c5500();
      puVar1 = (uint *)(param_1_00 + 0x14);
      uVar6 = *puVar1;
      *puVar1 = *puVar1 + 0x200;
      param_1_00[0x15] = param_1_00[0x15] + (uint)(0xfffffdff < uVar6);
      iVar7 = __alldiv();
      uVar13 = iVar7 * 0x200;
      _memset((void *)(param_1_00[0x1c] + ((int)pcVar5 - (int)pcVar10)),0,
              uVar13 - ((int)pcVar5 - (int)pcVar10));
      (**(code **)(*(int *)param_1_00[4] + 0x28))();
      puVar1 = (uint *)(param_1_00 + 0x14);
      uVar6 = *puVar1;
      *puVar1 = *puVar1 + uVar13;
      param_1_00[0x15] = param_1_00[0x15] + (uint)CARRY4(uVar6,uVar13);
      *(undefined *)param_1_00[0x1c] = 0;
      uVar6 = param_1_00[0x12];
      if ((uVar6 & param_1_00[0x13]) != 0xffffffff) {
        param_1_00[0xe] = uVar6 + param_1_00[0x14];
        param_1_00[0xf] = param_1_00[0x13] + param_1_00[0x15] + (uint)CARRY4(uVar6,param_1_00[0x14])
        ;
      }
    }
    if (param_1_00[0x23] != 0) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(param_1_00 + 0x16) != '\0')) {
        FUN_008402e0();
      }
      FUN_0043c211(&DAT_00d25fa0);
      cVar4 = FUN_00846b30(2);
      if (cVar4 != '\0') {
        FUN_004325b6();
        FUN_0043c211();
        iVar7 = FUN_0084a340();
        if (iVar7 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        (**(code **)(*param_1 + 0x2c))();
        FUN_00432231();
        FUN_00432231();
        FUN_008423d0(2,"..\\..\\src\\common\\tarstrm.cpp");
        FUN_0085def0();
        FUN_00842440();
        _free(pvStack_84);
        if (7 < uStack_88) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        FUN_0081b5bc();
        _free(pvStack_cc);
        if (7 < uStack_d0) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        _free(pvStack_a8);
        if (7 < uStack_ac) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
      }
      FUN_00432156();
    }
    FUN_008c5500();
    puVar1 = (uint *)(param_1_00 + 0x14);
    uVar6 = *puVar1;
    *puVar1 = *puVar1 + 0x200;
    param_1_00[0x15] = param_1_00[0x15] + (uint)(0xfffffdff < uVar6);
    pcVar3 = *(code **)(*param_1_00 + 0x10);
    param_1_00[3] = *(int *)(param_1_00[4] + 0xc);
    (*pcVar3)();
    ExceptionList = pvStack_18;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



uint __fastcall FUN_008ca3b0(int param_1)

{
  uint uVar1;
  char cVar2;
  int iVar3;
  void *pvVar4;
  longlong lVar5;
  longlong lVar6;
  uint uStack_a0;
  void *pvStack_9c;
  uint uStack_68;
  void *pvStack_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd22c1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  lVar6 = -1;
  if (((*(char *)(param_1 + 100) == '\0') &&
      ((*(uint *)(param_1 + 0x38) & *(uint *)(param_1 + 0x3c)) != 0xffffffff)) &&
     (cVar2 = (**(code **)(**(int **)(param_1 + 0x10) + 0x1c))(), cVar2 != '\0')) {
    FUN_008192b5();
    uStack_4 = 0;
    lVar5 = (**(code **)(**(int **)(param_1 + 0x10) + 0x30))();
    if (lVar5 != -1) {
      lVar6 = (**(code **)(**(int **)(param_1 + 0x10) + 0x2c))();
    }
    uStack_4 = 0xffffffff;
    FUN_008192c6();
    if ((lVar6 != -1) && (cVar2 = FUN_008c5350(), cVar2 != '\0')) {
      iVar3 = FUN_008c51d0();
      *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + iVar3;
      FUN_008c5350();
      uVar1 = *(uint *)(param_1 + 0x38);
      iVar3 = *(int *)(param_1 + 0x3c);
      cVar2 = FUN_008c5290();
      if (((cVar2 != '\0') &&
          ((lVar6 = (**(code **)(**(int **)(param_1 + 0x10) + 0x2c))(),
           lVar6 == CONCAT44(iVar3 + (uint)(0xffffff6b < uVar1),uVar1 + 0x94) &&
           (cVar2 = FUN_008c5290(), cVar2 != '\0')))) &&
         (lVar6 = (**(code **)(**(int **)(param_1 + 0x10) + 0x2c))(), lVar6 == lVar5)) {
        ExceptionList = local_c;
        return 1;
      }
      ExceptionList = local_c;
      return 0;
    }
  }
  FUN_0043c211(&DAT_00d25fa0);
  pvVar4 = (void *)FUN_00846b30(1);
  if ((char)pvVar4 != '\0') {
    FUN_004325b6();
    uStack_4 = 1;
    FUN_0043c211();
    uStack_4 = CONCAT31(uStack_4._1_3_,2);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    uStack_4._0_1_ = 3;
    FUN_008423d0();
    uStack_4._0_1_ = 4;
    FUN_008854f0();
    FUN_0083fe90();
    uStack_4._0_1_ = 3;
    FUN_00842440();
    uStack_4 = CONCAT31(uStack_4._1_3_,2);
    FUN_0081b5bc();
    _free(pvStack_9c);
    if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(pvStack_64);
    pvVar4 = pvStack_64;
    if (7 < uStack_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  *(undefined4 *)(param_1 + 0xc) = 2;
  ExceptionList = local_c;
  return (uint)pvVar4 & 0xffffff00;
}



undefined8 __thiscall FUN_008ca6a0(int *param_1,uint param_2,int param_3,int param_4)

{
  uint uVar1;
  char cVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  bool bVar6;
  longlong lVar7;
  undefined auStack_f4 [12];
  undefined4 uStack_e8;
  undefined4 uStack_e4;
  char *pcStack_e0;
  int iStack_dc;
  char *pcStack_d8;
  undefined local_bc [4];
  uint local_b8;
  undefined4 local_a8;
  uint local_a4;
  void *local_a0;
  undefined *local_98;
  uint local_90;
  undefined4 local_80;
  uint local_7c;
  void *local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2316;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1[8] & param_1[9]) == 0xffffffff) {
    local_98 = auStack_f4;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 != '\0') {
      pcStack_d8 = (char *)0x8ca718;
      FUN_004325b6();
      local_4 = 0;
      pcStack_d8 = (char *)0x8ca731;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        pcStack_d8 = (char *)0x8ca75f;
        FUN_0084d360();
      }
      else {
        pcStack_d8 = local_bc;
        iStack_dc = 0x8ca753;
        FUN_0084f210();
      }
      pcStack_d8 = (char *)0x8ca76c;
      FUN_008433c0();
      pcStack_d8 = "wxTarOutputStream::OnSysSeek";
      iStack_dc = 0x5e4;
      pcStack_e0 = "..\\..\\src\\common\\tarstrm.cpp";
      uStack_e4 = 1;
      local_4._0_1_ = 2;
      uStack_e8 = 0x8ca795;
      uVar4 = FUN_008423d0();
      local_4._0_1_ = 3;
      FUN_008854f0();
      iStack_dc = 0x8ca7af;
      pcStack_d8 = (char *)uVar4;
      FUN_0083fe90();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      pcStack_d8 = (char *)0x8ca7dd;
      _free(local_a0);
      if (7 < local_a4) {
                    // WARNING: Subroutine does not return
        pcStack_d8 = &UNK_008ca7f5;
        FUN_00a3f6a1();
      }
      local_a4 = 7;
      local_a8 = 0;
      local_b8 = local_b8 & 0xffff0000;
      local_4 = 0xffffffff;
      pcStack_d8 = (char *)0x8ca825;
      _free(local_78);
      if (7 < local_7c) {
                    // WARNING: Subroutine does not return
        pcStack_d8 = &UNK_008ca838;
        FUN_00a3f6a1();
      }
      local_7c = 7;
      local_80 = 0;
      local_90 = local_90 & 0xffff0000;
    }
    param_1[3] = 2;
  }
  cVar2 = (**(code **)(*param_1 + 0x10))();
  if (cVar2 != '\0') {
    uVar1 = param_1[0x10];
    if ((uVar1 & param_1[0x11]) != 0xffffffff) {
      if (param_4 == 1) {
        uVar5 = param_1[8];
        iVar3 = param_1[9];
LAB_008ca89e:
        bVar6 = CARRY4(param_2,uVar5);
        param_2 = param_2 + uVar5;
        param_3 = param_3 + iVar3 + (uint)bVar6;
      }
      else if (param_4 == 2) {
        uVar5 = param_1[10];
        iVar3 = param_1[0xb];
        goto LAB_008ca89e;
      }
      if (-1 < param_3) {
        iStack_dc = uVar1 + param_2;
        pcStack_d8 = (char *)(param_1[0x11] + param_3 + (uint)CARRY4(uVar1,param_2));
        pcStack_e0 = (char *)0x8ca8bc;
        lVar7 = (**(code **)(*(int *)param_1[4] + 0x2c))();
        if (lVar7 != -1) {
          param_1[8] = param_2;
          param_1[9] = param_3;
          goto LAB_008ca8d4;
        }
      }
    }
  }
  param_2 = 0xffffffff;
  param_3 = -1;
LAB_008ca8d4:
  ExceptionList = local_c;
  return CONCAT44(param_3,param_2);
}



uint __thiscall FUN_008ca8f0(int *param_1,undefined4 param_2,uint param_3)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  int iVar4;
  undefined4 uVar5;
  int *piVar6;
  uint uVar7;
  undefined auStack_ec [12];
  undefined4 uStack_e0;
  undefined4 uStack_dc;
  char *pcStack_d8;
  undefined4 uStack_d4;
  char *pcStack_d0;
  undefined local_bc [4];
  uint local_b8;
  undefined4 local_a8;
  uint local_a4;
  void *local_a0;
  undefined *local_98;
  uint local_90;
  undefined4 local_80;
  uint local_7c;
  void *local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2366;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1[8] & param_1[9]) == 0xffffffff) {
    local_98 = auStack_ec;
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(1);
    if (cVar3 != '\0') {
      pcStack_d0 = (char *)0x8ca961;
      FUN_004325b6();
      local_4 = 0;
      pcStack_d0 = (char *)0x8ca97a;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        pcStack_d0 = (char *)0x8ca9a8;
        FUN_0084d360();
      }
      else {
        pcStack_d0 = local_bc;
        uStack_d4 = 0x8ca99c;
        FUN_0084f210();
      }
      pcStack_d0 = (char *)0x8ca9b5;
      FUN_008433c0();
      pcStack_d0 = "wxTarOutputStream::OnSysWrite";
      uStack_d4 = 0x5fa;
      pcStack_d8 = "..\\..\\src\\common\\tarstrm.cpp";
      uStack_dc = 1;
      local_4._0_1_ = 2;
      uStack_e0 = 0x8ca9df;
      uVar5 = FUN_008423d0();
      local_4._0_1_ = 3;
      FUN_008854f0();
      uStack_d4 = 0x8ca9f9;
      pcStack_d0 = (char *)uVar5;
      FUN_0083fe90();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      pcStack_d0 = (char *)0x8caa28;
      _free(local_a0);
      if (7 < local_a4) {
                    // WARNING: Subroutine does not return
        pcStack_d0 = &UNK_008caa40;
        FUN_00a3f6a1();
      }
      local_a4 = 7;
      local_a8 = 0;
      local_b8 = local_b8 & 0xffff0000;
      local_4 = 0xffffffff;
      pcStack_d0 = (char *)0x8caa6f;
      _free(local_78);
      if (7 < local_7c) {
                    // WARNING: Subroutine does not return
        pcStack_d0 = &UNK_008caa82;
        FUN_00a3f6a1();
      }
      local_7c = 7;
      local_80 = 0;
      local_90 = local_90 & 0xffff0000;
    }
    param_1[3] = 2;
  }
  cVar3 = (**(code **)(*param_1 + 0x10))();
  if ((cVar3 == '\0') || (param_3 == 0)) {
    uVar7 = 0;
  }
  else {
    pcStack_d0 = (char *)param_2;
    uStack_d4 = 0x8caace;
    piVar6 = (int *)(**(code **)(*(int *)param_1[4] + 0x28))();
    uStack_d4 = 0x8caad7;
    uVar7 = (**(code **)(*piVar6 + 0x34))();
    puVar1 = (uint *)(param_1 + 8);
    uVar2 = *puVar1;
    *puVar1 = *puVar1 + uVar7;
    param_1[9] = param_1[9] + (uint)CARRY4(uVar2,uVar7);
    iVar4 = param_1[9];
    if ((param_1[0xb] <= iVar4) &&
       ((param_1[0xb] < iVar4 || ((uint)param_1[10] < (uint)param_1[8])))) {
      param_1[10] = param_1[8];
      param_1[0xb] = iVar4;
    }
    if (uVar7 != param_3) {
      param_1[3] = 2;
    }
  }
  ExceptionList = local_c;
  return uVar7;
}



// WARNING: Removing unreachable block (ram,0x008cad0f)
// WARNING: Removing unreachable block (ram,0x008cad9b)
// WARNING: Removing unreachable block (ram,0x008cace9)

undefined4 __fastcall FUN_008cab20(int *param_1)

{
  uint *puVar1;
  char *pcVar2;
  byte bVar3;
  short sVar4;
  char cVar5;
  int iVar6;
  uint uVar7;
  byte *pbVar8;
  byte *pbVar9;
  undefined4 uVar10;
  int extraout_ECX;
  byte *pbVar11;
  short *psVar12;
  int iVar13;
  int iVar14;
  bool bVar15;
  uint uStack_d8;
  void *pvStack_d4;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd23e2;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar5 = (**(code **)(*param_1 + 0x4c))();
  if (cVar5 == '\0') {
LAB_008cb071:
    uVar10 = 3;
  }
  else {
LAB_008cab61:
    FUN_008c5230();
    cVar5 = (**(code **)(*(int *)param_1[7] + 0x38))();
    if (cVar5 != '\0') {
      FUN_0043c211(&DAT_00d25fa0);
      cVar5 = FUN_00846b30(1);
      if (cVar5 != '\0') {
        psVar12 = (short *)PTR_DAT_03236318;
        if (PTR_DAT_03236318 == (undefined *)0x0) {
          psVar12 = &DAT_00fae9c8;
        }
        do {
          sVar4 = *psVar12;
          psVar12 = psVar12 + 1;
        } while (sVar4 != 0);
        FID_conflict_assign();
        uStack_4 = 0;
        FUN_0043c211();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        iVar6 = FUN_0084a340();
        if (iVar6 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        uStack_4._0_1_ = 2;
        __time64((__time64_t *)0x0);
        GetCurrentThreadId();
        uStack_4._0_1_ = 3;
        FUN_008854f0();
        FUN_0083fe90();
        uStack_4._0_1_ = 2;
        _free((void *)0x0);
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        FUN_0081b5bc();
        _free(pvStack_d4);
        if (7 < uStack_d8) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        uStack_d8 = 7;
        uStack_4 = 0xffffffff;
        _free((void *)0x0);
      }
    }
    cVar5 = (**(code **)(*(int *)param_1[7] + 0x10))();
    if (cVar5 == '\0') goto LAB_008cb071;
    puVar1 = (uint *)(param_1 + 0xc);
    uVar7 = *puVar1;
    *puVar1 = *puVar1 + 0x200;
    param_1[0xd] = param_1[0xd] + (uint)(0xfffffdff < uVar7);
    uVar7 = 0;
    while (*(char *)(param_1[0x12] + uVar7) == '\0') {
      uVar7 = uVar7 + 1;
      if (0x210 < uVar7) {
        ExceptionList = local_c;
        return 1;
      }
    }
    iVar6 = FUN_008c52f0();
    if (param_1[0x10] == 2) {
LAB_008cae3a:
      iVar13 = param_1[0x12];
      *(undefined4 *)(iVar13 + 0x9a) = 0x20202020;
      *(undefined4 *)(iVar13 + 0x9e) = 0x20202020;
      iVar14 = 0;
      uVar7 = 0;
      do {
        pcVar2 = (char *)(uVar7 + iVar13);
        uVar7 = uVar7 + 1;
        iVar14 = iVar14 + *pcVar2;
      } while (uVar7 < 0x211);
      bVar15 = iVar6 == iVar14;
    }
    else {
      *(undefined4 *)(extraout_ECX + 0x9a) = 0x20202020;
      *(undefined4 *)(extraout_ECX + 0x9e) = 0x20202020;
      iVar13 = 0;
      uVar7 = 0;
      do {
        pbVar9 = (byte *)(uVar7 + extraout_ECX);
        uVar7 = uVar7 + 1;
        iVar13 = iVar13 + (uint)*pbVar9;
      } while (uVar7 < 0x211);
      bVar15 = iVar6 == iVar13;
      if (param_1[0x10] == 0) {
        param_1[0x10] = !bVar15 + 1;
      }
      if (param_1[0x10] == 2) goto LAB_008cae3a;
    }
    if (!bVar15) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar5 = FUN_00846b30(1);
      if (cVar5 != '\0') {
        FUN_004325b6();
        uStack_4 = 4;
        FUN_0043c211();
        uStack_4._0_1_ = 5;
        FUN_00820bf9();
        FUN_008433c0();
        uStack_4._0_1_ = 6;
        FUN_008423d0();
        uStack_4._0_1_ = 7;
        FUN_008854f0();
        FUN_0083fe90();
        uStack_4._0_1_ = 6;
        FUN_00842440();
        uStack_4 = CONCAT31(uStack_4._1_3_,5);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      goto LAB_008cb071;
    }
    iVar6 = param_1[0x12];
    pbVar9 = (byte *)(iVar6 + 0x10a);
    pbVar8 = pbVar9;
    pbVar11 = PTR_s_ustar_032382ac;
    do {
      bVar3 = *pbVar8;
      bVar15 = bVar3 < *pbVar11;
      if (bVar3 != *pbVar11) {
LAB_008caea0:
        iVar13 = (1 - (uint)bVar15) - (uint)(bVar15 != 0);
        goto LAB_008caea5;
      }
      if (bVar3 == 0) break;
      bVar3 = pbVar8[1];
      bVar15 = bVar3 < pbVar11[1];
      if (bVar3 != pbVar11[1]) goto LAB_008caea0;
      pbVar8 = pbVar8 + 2;
      pbVar11 = pbVar11 + 2;
    } while (bVar3 != 0);
    iVar13 = 0;
LAB_008caea5:
    pbVar8 = PTR_s_ustar_032382b4;
    if (iVar13 == 0) {
      param_1[0x11] = 2;
    }
    else {
      do {
        bVar3 = *pbVar9;
        bVar15 = bVar3 < *pbVar8;
        if (bVar3 != *pbVar8) {
LAB_008caee0:
          iVar13 = (1 - (uint)bVar15) - (uint)(bVar15 != 0);
          goto LAB_008caee5;
        }
        if (bVar3 == 0) break;
        bVar3 = pbVar9[1];
        bVar15 = bVar3 < pbVar8[1];
        if (bVar3 != pbVar8[1]) goto LAB_008caee0;
        pbVar9 = pbVar9 + 2;
        pbVar8 = pbVar8 + 2;
      } while (bVar3 != 0);
      iVar13 = 0;
LAB_008caee5:
      if (iVar13 == 0) {
        pbVar9 = (byte *)(iVar6 + 0x111);
        pbVar8 = PTR_DAT_032382b8;
        do {
          bVar3 = *pbVar9;
          bVar15 = bVar3 < *pbVar8;
          if (bVar3 != *pbVar8) {
LAB_008caf15:
            iVar13 = (1 - (uint)bVar15) - (uint)(bVar15 != 0);
            goto LAB_008caf1a;
          }
          if (bVar3 == 0) break;
          bVar3 = pbVar9[1];
          bVar15 = bVar3 < pbVar8[1];
          if (bVar3 != pbVar8[1]) goto LAB_008caf15;
          pbVar9 = pbVar9 + 2;
          pbVar8 = pbVar8 + 2;
        } while (bVar3 != 0);
        iVar13 = 0;
LAB_008caf1a:
        if (iVar13 == 0) {
          param_1[0x11] = 1;
          goto LAB_008caf2a;
        }
      }
      param_1[0x11] = 0;
    }
LAB_008caf2a:
    if (param_1[0x11] == 2) {
      if (*(char *)(iVar6 + 0xa3) == 'g') {
        FUN_008c8db0();
      }
      else {
        if (*(char *)(iVar6 + 0xa3) != 'x') goto LAB_008cb078;
        FUN_008c8db0();
      }
      goto LAB_008cab61;
    }
LAB_008cb078:
    uVar10 = 0;
  }
  ExceptionList = local_c;
  return uVar10;
}



void __thiscall FUN_008cb0a0(int *param_1_00,int *param_1)

{
  uint uVar1;
  char cVar2;
  DWORD DVar3;
  char *pcVar4;
  undefined8 uVar5;
  int *local_1c;
  undefined4 uStack_18;
  undefined uStack_14;
  undefined uStack_13;
  undefined uStack_12;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2420;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_1c;
  ExceptionList = &local_c;
  local_1c = param_1;
  local_4 = 0;
  cVar2 = (**(code **)(*param_1_00 + 0x58))(DAT_0323f878 ^ (uint)&stack0xffffffd4);
  if (cVar2 == '\0') {
    local_4 = 0xffffffff;
    if (param_1 != (int *)0x0) {
      (**(code **)(*param_1 + 4))(1);
    }
  }
  else {
    if ((param_1_00[0x14] | param_1_00[0x15]) == 0) {
      FUN_008192b5();
      local_4._0_1_ = 1;
      uVar5 = (**(code **)(*(int *)param_1_00[4] + 0x30))();
      *(undefined8 *)(param_1_00 + 0x12) = uVar5;
      local_4 = (uint)local_4._1_3_ << 8;
      if ((DAT_032bdb68 == 0) || (DVar3 = GetCurrentThreadId(), DVar3 == DAT_032bdb68)) {
        DAT_03235e94 = (undefined)uStack_18;
      }
      else {
        FUN_00842f30(uStack_18);
      }
    }
    uVar1 = param_1_00[0x12];
    if ((uVar1 & param_1_00[0x13]) != 0xffffffff) {
      param_1_00[0xe] = uVar1 + param_1_00[0x14];
      param_1_00[0xf] = param_1_00[0x13] + param_1_00[0x15] + (uint)CARRY4(uVar1,param_1_00[0x14]);
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == (int *)0x0)) {
      FUN_008402e0("..\\..\\src\\common\\tarstrm.cpp",0x285,"wxTarEntryPtr_::operator *",
                   "m_ptr != 0",0);
    }
    cVar2 = FUN_008c9990(param_1);
    if (cVar2 != '\0') {
      param_1_00[8] = 0;
      param_1_00[9] = 0;
      param_1_00[10] = 0;
      param_1_00[0xb] = 0;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == (int *)0x0)) {
        FUN_008402e0("..\\..\\src\\common\\tarstrm.cpp",0x285,"wxTarEntryPtr_::operator *",
                     "m_ptr != 0",0);
      }
      if (param_1[0x1a] - 0x33U < 4) {
        uVar5 = 0;
      }
      else {
        uVar5 = (**(code **)(*param_1 + 0x14))();
      }
      uVar1 = param_1_00[0x12];
      *(undefined8 *)(param_1_00 + 0xc) = uVar5;
      if ((uVar1 & param_1_00[0x13]) != 0xffffffff) {
        param_1_00[0x10] = uVar1 + param_1_00[0x14];
        param_1_00[0x11] =
             param_1_00[0x13] + param_1_00[0x15] + (uint)CARRY4(uVar1,param_1_00[0x14]);
      }
      uStack_18 = 0x34333231;
      uStack_14 = 0x35;
      uStack_13 = 0x36;
      uStack_12 = 0;
      if (((*(char *)(param_1_00 + 0x16) == '\0') || (param_1[0x1a] != 0x31)) &&
         (pcVar4 = _strchr((char *)&uStack_18,param_1[0x1a]), pcVar4 != (char *)0x0)) {
        (**(code **)(*param_1_00 + 0x58))();
      }
    }
    (**(code **)(*param_1_00 + 0x10))();
    local_4 = 0xffffffff;
    if (param_1 != (int *)0x0) {
      (**(code **)(*param_1 + 4))(1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008cb2d0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xe0);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_008c84f0(param_1,param_2,param_3,param_4);
  }
  local_4 = 0xffffffff;
  FUN_008cb0a0(uVar2);
  ExceptionList = local_c;
  return;
}



void FUN_008cb360(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *pvVar2;
  int *piVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xe0);
  piVar3 = (int *)0x0;
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    piVar3 = (int *)FUN_008c84f0(param_1,param_2,0xffffffff,0xffffffff);
  }
  local_4 = 0xffffffff;
  (**(code **)(*piVar3 + 0x38))(1,uVar1);
  FUN_008cb0a0(piVar3);
  ExceptionList = pvVar2;
  return;
}



void FUN_008cb3f0(undefined4 param_1)

{
  int iVar1;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    iVar1 = FUN_0048a085(param_1,&PTR_u_wxTarEntry_032382bc);
    if (iVar1 == 0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/object.h",0xa1,"wxCheckCast",
                   "wxDynamicCast(ptr, T)","wxStaticCast() used incorrectly");
    }
  }
  FUN_008cb0a0(param_1);
  return;
}



// WARNING: Removing unreachable block (ram,0x008cb52a)

undefined4 __fastcall FUN_008cb450(int *param_1)

{
  uint *puVar1;
  uint uVar2;
  code *UNRECOVERED_JUMPTABLE;
  longlong lVar3;
  char cVar4;
  uint uVar5;
  undefined4 uVar6;
  undefined8 uVar7;
  longlong lVar8;
  
  uVar2 = param_1[9];
  if ((param_1[8] & uVar2) != 0xffffffff) {
    if (((int)uVar2 <= param_1[0xb]) &&
       (((int)uVar2 < param_1[0xb] || ((uint)param_1[8] < (uint)param_1[10])))) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
         (cVar4 = (**(code **)(*(int *)param_1[4] + 0x1c))(), cVar4 == '\0')) {
        FUN_008402e0("..\\..\\src\\common\\tarstrm.cpp",0x4a2,"wxTarOutputStream::CloseEntry",
                     "m_parent_o_stream->IsSeekable()",0);
      }
      (**(code **)(*(int *)param_1[4] + 0x2c))
                (param_1[0x10] + param_1[10],
                 param_1[0x11] + param_1[0xb] + (uint)CARRY4(param_1[0x10],param_1[10]),0);
      param_1[3] = *(int *)(param_1[4] + 0xc);
      param_1[8] = param_1[10];
      param_1[9] = param_1[0xb];
    }
    cVar4 = (**(code **)(*param_1 + 0x10))();
    if (cVar4 != '\0') {
      uVar2 = param_1[8];
      lVar3 = *(longlong *)(param_1 + 8);
      uVar7 = __alldiv(uVar2 + 0x1ff,param_1[9] + (uint)(0xfffffe00 < uVar2),0x200,0);
      lVar8 = __allmul(uVar7,0x200,0);
      uVar5 = (uint)lVar8;
      if (lVar3 < lVar8) {
        _memset((void *)param_1[0x1a],0,uVar5 - uVar2);
        (**(code **)(*(int *)param_1[4] + 0x28))(param_1[0x1a],uVar5 - param_1[8]);
        param_1[3] = *(int *)(param_1[4] + 0xc);
      }
      puVar1 = (uint *)(param_1 + 0x14);
      uVar2 = *puVar1;
      *puVar1 = *puVar1 + uVar5;
      param_1[0x15] = param_1[0x15] + (int)((ulonglong)lVar8 >> 0x20) + (uint)CARRY4(uVar2,uVar5);
    }
    cVar4 = (**(code **)(*param_1 + 0x10))();
    if ((cVar4 != '\0') && ((param_1[8] != param_1[0xc] || (param_1[9] != param_1[0xd])))) {
      FUN_008ca3b0();
    }
    UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x10);
    param_1[8] = -1;
    param_1[9] = -1;
    param_1[10] = -1;
    param_1[0xb] = -1;
    param_1[0xc] = -1;
    param_1[0xd] = -1;
    param_1[0xe] = -1;
    param_1[0xf] = -1;
    param_1[0x10] = -1;
    param_1[0x11] = -1;
                    // WARNING: Could not recover jumptable at 0x008cb5bb. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar6 = (*UNRECOVERED_JUMPTABLE)();
    return uVar6;
  }
  return CONCAT31((int3)(uVar2 >> 8),1);
}



int * __fastcall FUN_008cb5c0(int *param_1)

{
  undefined4 *puVar1;
  char cVar2;
  int iVar3;
  void *pvVar4;
  undefined4 uVar5;
  int *piVar6;
  uint uVar7;
  int *piVar8;
  undefined8 uVar9;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined auStack_54 [4];
  uint uStack_50;
  undefined4 uStack_48;
  undefined auStack_44 [4];
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  uint uStack_34;
  void *pvStack_30;
  uint uStack_2c;
  void *pvStack_28;
  undefined uStack_20;
  undefined uStack_18;
  undefined uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd24b4;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar3 = FUN_008cab20(DAT_0323f878 ^ (uint)&stack0xffffff84);
  param_1[3] = iVar3;
  cVar2 = (**(code **)(*param_1 + 0x10))();
  if (cVar2 == '\0') {
    ExceptionList = local_c;
    return (int *)0x0;
  }
  pvVar4 = operator_new(0xe0);
  uStack_4 = 0;
  if (pvVar4 == (void *)0x0) {
    piVar6 = (int *)0x0;
  }
  else {
    FUN_004325b6(PTR_DAT_03236318);
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    uVar5 = FUN_0086cc50(&pvStack_30);
    uStack_5c = 0;
    uStack_58 = 0;
    FUN_0086cca0(uVar5);
    piVar6 = (int *)FUN_008c84f0(auStack_54,&uStack_5c,0xffffffff,0xffffffff);
  }
  uStack_4 = 4;
  if (pvVar4 != (void *)0x0) {
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar6 == (int *)0x0)) {
    FUN_008402e0("..\\..\\src\\common\\tarstrm.cpp",0x285,"wxTarEntryPtr_::operator ->","m_ptr != 0"
                 ,0);
  }
  uVar7 = FUN_008c75d0(1);
  piVar6[0xc] = uVar7 & 0xfff;
  *(undefined *)(piVar6 + 0xd) = 1;
  iVar3 = FUN_008c75d0(2);
  piVar6[0xe] = iVar3;
  iVar3 = FUN_008c75d0(2);
  piVar6[0xf] = iVar3;
  iVar3 = *piVar6;
  uVar9 = FUN_008c75d0(4);
  cVar2 = (char)((ulonglong)uVar9 >> 0x18);
  (**(code **)(iVar3 + 0x34))(uVar9);
  (**(code **)(*piVar6 + 0x48))(param_1[0xc],param_1[0xd]);
  FUN_004325b6(L"mtime");
  iVar3 = *piVar6;
  uStack_14 = 5;
  uVar5 = FUN_008c7440(&stack0xffffff88,&uStack_40);
  (**(code **)(iVar3 + 0x30))(uVar5);
  uStack_18 = 4;
  _free(pvStack_28);
  if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_40);
  }
  FUN_004325b6(L"atime");
  uStack_18 = 6;
  piVar8 = (int *)FUN_008c7440(&stack0xffffff84,auStack_44);
  piVar6[0x16] = *piVar8;
  piVar6[0x17] = piVar8[1];
  uStack_18 = 4;
  _free(pvStack_28);
  if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_40);
  }
  FUN_004325b6(L"ctime");
  uStack_18 = 7;
  piVar8 = (int *)FUN_008c7440(&stack0xffffff84,auStack_44);
  piVar6[0x18] = *piVar8;
  piVar6[0x19] = piVar8[1];
  uStack_18 = 4;
  _free(pvStack_28);
  if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_40);
  }
  piVar6[0x1a] = (int)*(char *)(param_1[0x12] + 0xa3);
  (**(code **)(*piVar6 + 0x1c))();
  piVar8 = (int *)FUN_008c7940(auStack_44,8);
  uStack_18 = 8;
  if (piVar6 + 0x1b != piVar8) {
    FID_conflict_assign(piVar8,0,0xffffffff);
  }
  uStack_18 = 4;
  _free(pvStack_28);
  if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_40);
  }
  if (param_1[0x11] != 0) {
    piVar8 = (int *)FUN_008c7940(auStack_44,0xb);
    uStack_18 = 9;
    if (piVar6 + 0x24 != piVar8) {
      FID_conflict_assign(piVar8,0,0xffffffff);
    }
    uStack_18 = 4;
    _free(pvStack_28);
    if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_40);
    }
    piVar8 = (int *)FUN_008c7940(auStack_44,0xc);
    uStack_18 = 10;
    if (piVar6 + 0x2d != piVar8) {
      FID_conflict_assign(piVar8,0,0xffffffff);
    }
    uStack_18 = 4;
    _free(pvStack_28);
    if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_40);
    }
    iVar3 = FUN_008c75d0(0xd);
    piVar6[0x36] = iVar3;
    iVar3 = FUN_008c75d0(0xe);
    piVar6[0x37] = iVar3;
  }
  uVar5 = FUN_008c70e0(auStack_44);
  uStack_18 = 0xb;
  (**(code **)(*piVar6 + 0x40))(uVar5,1);
  uStack_20 = 4;
  _free(pvStack_30);
  if (7 < uStack_34) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_48);
  }
  if (cVar2 != '\0') {
    (**(code **)(*piVar6 + 0x38))(1);
  }
  puVar1 = (undefined4 *)param_1[0x13];
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00893cf0(puVar1[1],*puVar1,FUN_008c64b0);
    puVar1[2] = 0;
  }
  if (piVar6[0x1a] - 0x33U < 4) {
    uVar9 = 0;
  }
  else {
    uVar9 = (**(code **)(*piVar6 + 0x14))();
  }
  *(undefined8 *)(param_1 + 0xe) = uVar9;
  param_1[10] = 0;
  param_1[0xb] = 0;
  ExceptionList = pvStack_28;
  return piVar6;
}



int * __fastcall thunk_FUN_008cb5c0(int *param_1)

{
  undefined4 *puVar1;
  char cVar2;
  int iVar3;
  void *pvVar4;
  undefined4 uVar5;
  int *piVar6;
  uint uVar7;
  int *piVar8;
  undefined8 uVar9;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined auStack_54 [4];
  uint uStack_50;
  undefined4 uStack_48;
  undefined auStack_44 [4];
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  uint uStack_34;
  void *pvStack_30;
  uint uStack_2c;
  void *pvStack_28;
  undefined uStack_20;
  undefined uStack_18;
  undefined uStack_14;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd24b4;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  iVar3 = FUN_008cab20(DAT_0323f878 ^ (uint)&stack0xffffff84);
  param_1[3] = iVar3;
  cVar2 = (**(code **)(*param_1 + 0x10))();
  if (cVar2 == '\0') {
    ExceptionList = pvStack_c;
    return (int *)0x0;
  }
  pvVar4 = operator_new(0xe0);
  uStack_4 = 0;
  if (pvVar4 == (void *)0x0) {
    piVar6 = (int *)0x0;
  }
  else {
    FUN_004325b6(PTR_DAT_03236318);
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    uVar5 = FUN_0086cc50(&pvStack_30);
    uStack_5c = 0;
    uStack_58 = 0;
    FUN_0086cca0(uVar5);
    piVar6 = (int *)FUN_008c84f0(auStack_54,&uStack_5c,0xffffffff,0xffffffff);
  }
  uStack_4 = 4;
  if (pvVar4 != (void *)0x0) {
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar6 == (int *)0x0)) {
    FUN_008402e0("..\\..\\src\\common\\tarstrm.cpp",0x285,"wxTarEntryPtr_::operator ->","m_ptr != 0"
                 ,0);
  }
  uVar7 = FUN_008c75d0(1);
  piVar6[0xc] = uVar7 & 0xfff;
  *(undefined *)(piVar6 + 0xd) = 1;
  iVar3 = FUN_008c75d0(2);
  piVar6[0xe] = iVar3;
  iVar3 = FUN_008c75d0(2);
  piVar6[0xf] = iVar3;
  iVar3 = *piVar6;
  uVar9 = FUN_008c75d0(4);
  cVar2 = (char)((ulonglong)uVar9 >> 0x18);
  (**(code **)(iVar3 + 0x34))(uVar9);
  (**(code **)(*piVar6 + 0x48))(param_1[0xc],param_1[0xd]);
  FUN_004325b6(L"mtime");
  iVar3 = *piVar6;
  uStack_14 = 5;
  uVar5 = FUN_008c7440(&stack0xffffff88,&uStack_40);
  (**(code **)(iVar3 + 0x30))(uVar5);
  uStack_18 = 4;
  _free(pvStack_28);
  if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_40);
  }
  FUN_004325b6(L"atime");
  uStack_18 = 6;
  piVar8 = (int *)FUN_008c7440(&stack0xffffff84,auStack_44);
  piVar6[0x16] = *piVar8;
  piVar6[0x17] = piVar8[1];
  uStack_18 = 4;
  _free(pvStack_28);
  if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_40);
  }
  FUN_004325b6(L"ctime");
  uStack_18 = 7;
  piVar8 = (int *)FUN_008c7440(&stack0xffffff84,auStack_44);
  piVar6[0x18] = *piVar8;
  piVar6[0x19] = piVar8[1];
  uStack_18 = 4;
  _free(pvStack_28);
  if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_40);
  }
  piVar6[0x1a] = (int)*(char *)(param_1[0x12] + 0xa3);
  (**(code **)(*piVar6 + 0x1c))();
  piVar8 = (int *)FUN_008c7940(auStack_44,8);
  uStack_18 = 8;
  if (piVar6 + 0x1b != piVar8) {
    FID_conflict_assign(piVar8,0,0xffffffff);
  }
  uStack_18 = 4;
  _free(pvStack_28);
  if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_40);
  }
  if (param_1[0x11] != 0) {
    piVar8 = (int *)FUN_008c7940(auStack_44,0xb);
    uStack_18 = 9;
    if (piVar6 + 0x24 != piVar8) {
      FID_conflict_assign(piVar8,0,0xffffffff);
    }
    uStack_18 = 4;
    _free(pvStack_28);
    if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_40);
    }
    piVar8 = (int *)FUN_008c7940(auStack_44,0xc);
    uStack_18 = 10;
    if (piVar6 + 0x2d != piVar8) {
      FID_conflict_assign(piVar8,0,0xffffffff);
    }
    uStack_18 = 4;
    _free(pvStack_28);
    if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_40);
    }
    iVar3 = FUN_008c75d0(0xd);
    piVar6[0x36] = iVar3;
    iVar3 = FUN_008c75d0(0xe);
    piVar6[0x37] = iVar3;
  }
  uVar5 = FUN_008c70e0(auStack_44);
  uStack_18 = 0xb;
  (**(code **)(*piVar6 + 0x40))(uVar5,1);
  uStack_20 = 4;
  _free(pvStack_30);
  if (7 < uStack_34) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_48);
  }
  if (cVar2 != '\0') {
    (**(code **)(*piVar6 + 0x38))(1);
  }
  puVar1 = (undefined4 *)param_1[0x13];
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00893cf0(puVar1[1],*puVar1,FUN_008c64b0);
    puVar1[2] = 0;
  }
  if (piVar6[0x1a] - 0x33U < 4) {
    uVar9 = 0;
  }
  else {
    uVar9 = (**(code **)(*piVar6 + 0x14))();
  }
  *(undefined8 *)(param_1 + 0xe) = uVar9;
  param_1[10] = 0;
  param_1[0xb] = 0;
  ExceptionList = pvStack_28;
  return piVar6;
}



undefined ** FUN_008cba70(void)

{
  return &PTR_u_wxConnectionBase_032383b0;
}



undefined4 __thiscall FUN_008cba80(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  
  if (param_1 <= *(uint *)(param_1_00 + 0xc)) {
    return *(undefined4 *)(param_1_00 + 8);
  }
  if (*(char *)(param_1_00 + 0x10) != '\0') {
    FUN_00a3f66c(*(undefined4 *)(param_1_00 + 8));
    uVar1 = FUN_00823c23(param_1);
    *(uint *)(param_1_00 + 0xc) = param_1;
    *(undefined4 *)(param_1_00 + 8) = uVar1;
    return uVar1;
  }
  return 0;
}



void __fastcall FUN_008cbac0(undefined4 *param_1)

{
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  *param_1 = wxConnectionBase::vftable;
  *(undefined *)(param_1 + 4) = 1;
  *(undefined *)((int)param_1 + 0x11) = 1;
  return;
}



void __fastcall FUN_008cbae0(undefined4 *param_1)

{
  *param_1 = wxConnectionBase::vftable;
  if (*(char *)(param_1 + 4) != '\0') {
    FUN_00a3f66c(param_1[2]);
  }
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined4 * __thiscall FUN_008cbb10(undefined4 *param_1,byte param_2)

{
  *param_1 = wxConnectionBase::vftable;
  if (*(char *)(param_1 + 4) != '\0') {
    FUN_00a3f66c(param_1[2]);
  }
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



int FUN_008cbb50(int param_1,undefined4 param_2,uint param_3,int param_4)

{
  void *pvVar1;
  uint uVar2;
  int iVar3;
  undefined local_78 [4];
  undefined4 local_74;
  uint local_60;
  void *local_5c;
  undefined4 local_50;
  uint local_3c;
  void *local_38;
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  pvVar1 = ExceptionList;
  puStack_8 = &LAB_00bd2501;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  if (param_4 == 1) {
    if (param_3 != 0) {
      param_3 = param_3 - 1;
    }
    iVar3 = FUN_0084b490(param_2,param_3);
    local_4 = 1;
    if (param_1 != iVar3) {
      FID_conflict_assign(iVar3,0,0xffffffff);
    }
    _free(local_14);
    local_74 = local_2c;
  }
  else {
    if (param_4 != 0xd) {
      if (param_4 != 0x11) {
        if (PTR_FUN_03235c4c == (undefined *)0x0) {
          ExceptionList = pvVar1;
          return param_1;
        }
        FUN_008402e0("..\\..\\src\\common\\ipcbase.cpp",0x6d,"wxConnectionBase::GetTextFromData",
                     "Assert failure","non-string IPC format in GetTextFromData()",uVar2);
        ExceptionList = local_c;
        return param_1;
      }
      if (param_3 != 0) {
        param_3 = param_3 - 1;
      }
      iVar3 = FUN_008a4830(local_78,param_2,param_3);
      local_4 = 3;
      if (param_1 != iVar3) {
        FID_conflict_assign(iVar3,0,0xffffffff);
      }
      _free(local_5c);
      if (local_60 < 8) {
        ExceptionList = local_c;
        return param_1;
      }
      goto LAB_008cbd1b;
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((param_3 & 1) != 0)) {
      FUN_008402e0("..\\..\\src\\common\\ipcbase.cpp",0x5a,"wxConnectionBase::GetTextFromData",
                   "!(size % sizeof(wchar_t))","invalid buffer size",uVar2);
    }
    if (param_3 != 0) {
      param_3 = (param_3 >> 1) - 1;
    }
    iVar3 = FUN_00852140(param_2,param_3);
    local_4 = 2;
    if (param_1 != iVar3) {
      FID_conflict_assign(iVar3,0,0xffffffff);
    }
    _free(local_38);
    local_74 = local_50;
    local_18 = local_3c;
  }
  if (local_18 < 8) {
    ExceptionList = local_c;
    return param_1;
  }
LAB_008cbd1b:
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_74);
}



void __fastcall FUN_008cbd40(int param_1)

{
  _free(*(void **)(param_1 + 4));
  return;
}



undefined * FUN_008cbd50(void)

{
  return &DAT_032384ec;
}



undefined ** FUN_008cbd60(void)

{
  return &PTR_u_wxSocketServer_03238504;
}



undefined ** FUN_008cbd70(void)

{
  return &PTR_u_wxSocketClient_0323851c;
}



undefined ** FUN_008cbd80(void)

{
  return &PTR_u_wxSocketEvent_0323854c;
}



void __fastcall FUN_008cbd90(int *param_1)

{
  int *piVar1;
  
  *(undefined *)(*param_1 + 0x16) = 0;
  piVar1 = *(int **)(*param_1 + 8);
  if ((piVar1 != (int *)0x0) && (piVar1[1] != -1)) {
    (**(code **)(*piVar1 + 8))(1);
  }
  return;
}



void __fastcall FUN_008cbdb0(int *param_1)

{
  int *piVar1;
  
  *(undefined *)(*param_1 + 0x17) = 0;
  piVar1 = *(int **)(*param_1 + 8);
  if ((piVar1 != (int *)0x0) && (piVar1[1] != -1)) {
    (**(code **)(*piVar1 + 8))(2);
  }
  return;
}



void __fastcall FUN_008cbdd0(int *param_1)

{
  int *local_4;
  
  local_4 = param_1;
  if (*(char *)((int)param_1 + 0x2e) != '\0') {
    local_4 = (int *)0x1;
    setsockopt(param_1[1],0xffff,4,(char *)&local_4,4);
  }
  if (*(char *)((int)param_1 + 0x2f) != '\0') {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(param_1 + 0xb) != '\0')) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x164,"wxSocketImpl::PostCreation","!m_stream",
                   "broadcasting is for datagram sockets only");
    }
    local_4 = (int *)0x1;
    setsockopt(param_1[1],0xffff,0x20,(char *)&local_4,4);
  }
  if (-1 < (int)(int *)param_1[2]) {
    local_4 = (int *)param_1[2];
    setsockopt(param_1[1],0xffff,0x1002,(char *)&local_4,4);
  }
  if (-1 < (int)(int *)param_1[3]) {
    local_4 = (int *)param_1[3];
    setsockopt(param_1[1],0xffff,0x1001,(char *)&local_4,4);
  }
                    // WARNING: Could not recover jumptable at 0x008cbea3. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x10))();
  return;
}



int __thiscall FUN_008cbeb0(int param_1_00,char *param_1,int param_2)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 0x1c) == 0) {
    *(undefined4 *)(param_1_00 + 0x28) = 3;
    return -1;
  }
  iVar1 = sendto(*(SOCKET *)(param_1_00 + 4),param_1,param_2,0,*(sockaddr **)(param_1_00 + 0x20),
                 *(int *)(param_1_00 + 0x24));
  return iVar1;
}



int __thiscall FUN_008cbef0(int *param_1_00,char *param_1,int param_2)

{
  int iVar1;
  
  if ((param_1_00[1] == 0xffffffff) || (*(char *)(param_1_00 + 0xf) != '\0')) {
    param_1_00[10] = 4;
    return -1;
  }
  if (*(char *)(param_1_00 + 0xb) == '\0') {
    iVar1 = FUN_008cbeb0(param_1,param_2);
  }
  else {
    iVar1 = send(param_1_00[1],param_1,param_2,0);
  }
  if (iVar1 == -1) {
    iVar1 = (**(code **)(*param_1_00 + 4))();
    param_1_00[10] = iVar1;
    return -1;
  }
  param_1_00[10] = 0;
  return iVar1;
}



undefined4 __fastcall FUN_008cbf70(int param_1)

{
  return *(undefined4 *)(*(int *)(param_1 + 8) + 0x28);
}



uint __thiscall FUN_008cbf80(int param_1_00,uint param_1,long *param_2)

{
  SOCKET SVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  fd_set *readfds;
  fd_set *writefds;
  timeval local_31c;
  int local_314;
  int local_310;
  fd_set local_30c;
  fd_set local_208;
  fd_set local_104;
  
  SVar1 = *(SOCKET *)(param_1_00 + 4);
  if (SVar1 == 0xffffffff) {
    return param_1 & 8;
  }
  if (param_2 == (long *)0x0) {
    local_31c.tv_usec = 0;
    local_31c.tv_sec = 0;
  }
  else {
    local_31c.tv_sec = *param_2;
    local_31c.tv_usec = param_2[1];
  }
  readfds = (fd_set *)0x0;
  writefds = (fd_set *)0x0;
  if ((param_1 & 1) != 0) {
    readfds = &local_208;
  }
  if ((param_1 & 2) != 0) {
    writefds = &local_104;
  }
  if ((param_1 & 4) == 0) {
LAB_008cc005:
    if (readfds == (fd_set *)0x0) goto LAB_008cc010;
  }
  else {
    if (*(char *)(param_1_00 + 0x3c) == '\0') {
      writefds = &local_104;
      goto LAB_008cc005;
    }
    readfds = &local_208;
  }
  readfds->fd_count = 0;
  readfds->fd_array[0] = SVar1;
  readfds->fd_count = readfds->fd_count + 1;
LAB_008cc010:
  if (writefds != (fd_set *)0x0) {
    SVar1 = *(SOCKET *)(param_1_00 + 4);
    writefds->fd_count = 0;
    writefds->fd_array[0] = SVar1;
    writefds->fd_count = writefds->fd_count + 1;
  }
  local_30c.fd_array[0] = *(SOCKET *)(param_1_00 + 4);
  local_30c.fd_count = 1;
  iVar2 = select(local_30c.fd_array[0] + 1,readfds,writefds,&local_30c,&local_31c);
  if (iVar2 != -1) {
    iVar3 = __WSAFDIsSet(*(SOCKET *)(param_1_00 + 4),&local_30c);
    if (iVar3 == 0) {
      if (iVar2 == 0) {
        return 0;
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar2 != 1)) {
        FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x541,"wxSocketImpl::Select","rc == 1",
                     "unexpected select() return value");
      }
      uVar4 = 0;
      if (readfds != (fd_set *)0x0) {
        iVar2 = __WSAFDIsSet(*(SOCKET *)(param_1_00 + 4),readfds);
        if (iVar2 != 0) {
          uVar4 = 1;
        }
      }
      if (writefds != (fd_set *)0x0) {
        iVar2 = __WSAFDIsSet(*(SOCKET *)(param_1_00 + 4),writefds);
        if (iVar2 != 0) {
          if ((*(char *)(param_1_00 + 0x2d) != '\0') && (*(char *)(param_1_00 + 0x3c) == '\0')) {
            local_310 = 4;
            *(undefined *)(param_1_00 + 0x2d) = 0;
            getsockopt(*(SOCKET *)(param_1_00 + 4),0xffff,0x1007,(char *)&local_314,&local_310);
            if (local_314 != 0) {
              return param_1 & 8;
            }
            return (uVar4 | 4) & param_1;
          }
          uVar4 = uVar4 | 2;
        }
      }
      return uVar4 & param_1;
    }
  }
  *(undefined *)(param_1_00 + 0x2d) = 0;
  return param_1 & 8;
}



undefined4 __fastcall FUN_008cc180(int param_1)

{
  int *piVar1;
  
  if (*(int *)(param_1 + 8) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x60d,"wxSocketBase::GetPeer","m_impl",
                   "invalid socket");
    }
  }
  else {
    piVar1 = (int *)(*(int *)(param_1 + 8) + 0x1c);
    if (*piVar1 != 0) {
      FUN_008cf950(piVar1);
      return 1;
    }
  }
  return 0;
}



int __thiscall FUN_008cc1d0(int param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  
  iVar1 = *(int *)(param_1_00 + 8);
  *(int *)(param_1_00 + 0x20) = param_1;
  if (iVar1 != 0) {
    uVar2 = param_1 * 1000;
    param_1 = param_1 * 0x38;
    *(uint *)(iVar1 + 0x34) = uVar2 / 1000;
    *(uint *)(iVar1 + 0x38) = (uVar2 % 1000) * 1000;
  }
  return param_1;
}



void __thiscall FUN_008cc210(int param_1_00,uint param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (((param_1 & 1) != 0) && ((param_1 & 6) != 0)) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x65e,"wxSocketBase::SetFlags",
                   "!(flags & wxSOCKET_NOWAIT) || !(flags & (wxSOCKET_WAITALL | wxSOCKET_BLOCK))",
                   "Using wxSOCKET_WAITALL or wxSOCKET_BLOCK with wxSOCKET_NOWAIT doesn\'t make sense"
                  );
    }
    *(uint *)(param_1_00 + 0x10) = param_1;
    return;
  }
  *(uint *)(param_1_00 + 0x10) = param_1;
  return;
}



void __thiscall FUN_008cc260(int param_1_00,undefined param_1)

{
  *(undefined *)(param_1_00 + 0x88) = param_1;
  return;
}



void __thiscall FUN_008cc270(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x8c) = param_1;
  return;
}



void __thiscall FUN_008cc280(int param_1_00,void *param_1,size_t param_2)

{
  void *pvVar1;
  
  if (param_2 != 0) {
    if (*(int *)(param_1_00 + 0x70) == 0) {
      pvVar1 = _malloc(param_2);
      *(void **)(param_1_00 + 0x70) = pvVar1;
    }
    else {
      pvVar1 = _malloc(*(int *)(param_1_00 + 0x74) + param_2);
      _memcpy((void *)((int)pvVar1 + param_2),*(void **)(param_1_00 + 0x70),
              *(size_t *)(param_1_00 + 0x74));
      _free(*(void **)(param_1_00 + 0x70));
      *(void **)(param_1_00 + 0x70) = pvVar1;
    }
    *(int *)(param_1_00 + 0x74) = *(int *)(param_1_00 + 0x74) + param_2;
    _memcpy(*(void **)(param_1_00 + 0x70),param_1,param_2);
  }
  return;
}



size_t __thiscall FUN_008cc2f0(int param_1_00,void *param_1,uint param_2,char param_3)

{
  uint uVar1;
  
  if (param_1 == (void *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x6d3,"wxSocketBase::GetPushback","buffer",
                   "NULL buffer");
    }
  }
  else if (*(int *)(param_1_00 + 0x74) != 0) {
    uVar1 = *(int *)(param_1_00 + 0x74) - *(int *)(param_1_00 + 0x78);
    if (uVar1 < param_2) {
      param_2 = uVar1;
    }
    _memcpy(param_1,(void *)(*(int *)(param_1_00 + 0x70) + *(int *)(param_1_00 + 0x78)),param_2);
    if ((param_3 == '\0') &&
       (*(int *)(param_1_00 + 0x78) = *(int *)(param_1_00 + 0x78) + param_2,
       *(int *)(param_1_00 + 0x74) == *(int *)(param_1_00 + 0x78))) {
      _free(*(void **)(param_1_00 + 0x70));
      *(undefined4 *)(param_1_00 + 0x70) = 0;
      *(undefined4 *)(param_1_00 + 0x74) = 0;
      *(undefined4 *)(param_1_00 + 0x78) = 0;
    }
    return param_2;
  }
  return 0;
}



void __thiscall FUN_008cc390(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  (**(code **)(*param_1_00 + 0x28))(param_1,0,param_2);
  return;
}



undefined ** FUN_008cc3b0(void)

{
  return &PTR_u_wxSocketModule_03238564;
}



undefined4 FUN_008cc3c0(void)

{
  return 4;
}



undefined4 * __thiscall FUN_008cc3d0(undefined4 *param_1_00,short *param_1,size_t param_2)

{
  void *_Dst;
  
  if (*param_1 != 2) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/private/sckaddr.h",0x7c,
                   "wxSockAddressImpl::wxSockAddressImpl","Assert failure",
                   "unsupported socket address family");
    }
    *param_1_00 = 0;
    param_1_00[1] = 0;
    param_1_00[2] = 0;
    return param_1_00;
  }
  *param_1_00 = 2;
  _Dst = _calloc(1,param_2);
  param_1_00[1] = _Dst;
  param_1_00[2] = param_2;
  _memcpy(_Dst,param_1,param_2);
  return param_1_00;
}



undefined4 * __thiscall FUN_008cc450(undefined4 *param_1_00,undefined4 *param_1)

{
  void *_Src;
  size_t _Size;
  void *_Dst;
  
  if (param_1_00 != param_1) {
    _free((void *)param_1_00[1]);
    *param_1_00 = *param_1;
    _Src = (void *)param_1[1];
    if (_Src != (void *)0x0) {
      _Size = param_1[2];
      _Dst = _calloc(1,_Size);
      param_1_00[1] = _Dst;
      param_1_00[2] = _Size;
      _memcpy(_Dst,_Src,_Size);
      return param_1_00;
    }
    param_1_00[1] = 0;
    param_1_00[2] = 0;
  }
  return param_1_00;
}



undefined4 * FUN_008cc4b0(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x30);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032be0e0);
    *puVar1 = wxSocketEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __fastcall FUN_008cc520(int param_1)

{
  FUN_008cc210(*(undefined4 *)(param_1 + 4));
  return;
}



void FUN_008cc530(void)

{
  DWORD DVar1;
  int *piVar2;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (DAT_032be0d4 != 0) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x110,"wxSocketManager::Init","!ms_manager",
                   "shouldn\'t be initialized twice");
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bdb68 != 0)) {
      DVar1 = GetCurrentThreadId();
      if (DVar1 != DAT_032bdb68) {
        FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x123,"wxSocketManager::Init",
                     "wxIsMainThread()","sockets must be initialized from the main thread");
      }
    }
  }
  if (DAT_032bcb68 != 0) {
    piVar2 = (int *)FUN_00841320();
    DAT_032be0d4 = (**(code **)(*piVar2 + 0x28))();
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x126,"wxSocketManager::Init",&DAT_00d3d2f4,
                 "sockets can\'t be initialized without wxApp");
  }
  return;
}



undefined4 * __thiscall FUN_008cc5f0(undefined4 *param_1_00,int param_1)

{
  uint uVar1;
  
  *param_1_00 = wxSocketImpl::vftable;
  param_1_00[4] = 0;
  param_1_00[5] = 0;
  param_1_00[6] = 0;
  param_1_00[7] = 0;
  param_1_00[8] = 0;
  param_1_00[9] = 0;
  param_1_00[0x10] = param_1;
  param_1_00[10] = 0;
  *(undefined *)(param_1_00 + 0xf) = 0;
  param_1_00[1] = 0xffffffff;
  *(undefined *)(param_1_00 + 0xb) = 1;
  uVar1 = *(int *)(param_1 + 0x20) * 1000;
  param_1_00[0xd] = uVar1 / 1000;
  param_1_00[0xe] = (uVar1 % 1000) * 1000;
  *(undefined *)((int)param_1_00 + 0x2d) = 0;
  *(undefined *)((int)param_1_00 + 0x2e) = 0;
  *(undefined *)((int)param_1_00 + 0x2f) = 0;
  *(undefined *)(param_1_00 + 0xc) = 1;
  param_1_00[2] = 0xffffffff;
  param_1_00[3] = 0xffffffff;
  return param_1_00;
}



void __fastcall FUN_008cc670(int *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2536;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = (int)wxSocketImpl::vftable;
  local_4 = 1;
  if (param_1[1] != 0xffffffff) {
    shutdown(param_1[1],1);
    if (param_1[1] != -1) {
      (**(code **)(*param_1 + 0xc))(uVar1);
      param_1[1] = -1;
    }
  }
  _free((void *)param_1[8]);
  _free((void *)param_1[5]);
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_008cc700(int *param_1)

{
  int iVar1;
  int *local_4;
  
  if (param_1[4] == 0) {
    local_4 = param_1;
    if (param_1[7] == 2) {
      FUN_008cf660();
    }
    else if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/private/sckaddr.h",0xbf,
                   "wxSockAddressImpl::Create","Assert failure","unsupported socket address family")
      ;
    }
  }
  local_4 = (int *)param_1[6];
  iVar1 = getsockname(param_1[1],(sockaddr *)param_1[5],(int *)&local_4);
  if (iVar1 != 0) {
    if (param_1[1] != -1) {
      (**(code **)(*param_1 + 0xc))();
      param_1[1] = -1;
    }
    param_1[10] = 2;
    return 2;
  }
  return 0;
}



int __fastcall FUN_008cc790(int *param_1)

{
  SOCKET SVar1;
  int iVar2;
  
  if (param_1[1] == -1) {
    if (param_1[4] == 0) {
      param_1[10] = 3;
      return param_1[10];
    }
    *(undefined *)(param_1 + 0xf) = 1;
    *(undefined *)(param_1 + 0xb) = 1;
    SVar1 = socket(param_1[4],1,0);
    param_1[1] = SVar1;
    if (SVar1 == 0xffffffff) {
      param_1[10] = 2;
      return 2;
    }
    FUN_008cbdd0();
    iVar2 = bind(param_1[1],(sockaddr *)param_1[5],param_1[6]);
    if (iVar2 != 0) {
      param_1[10] = 2;
    }
    if (param_1[10] == 0) {
      iVar2 = listen(param_1[1],5);
      if (iVar2 != 0) {
        param_1[10] = 2;
      }
      if (param_1[10] == 0) {
        iVar2 = FUN_008cc700();
        return iVar2;
      }
    }
    if (param_1[1] != -1) {
      (**(code **)(*param_1 + 0xc))();
      param_1[1] = -1;
      return param_1[10];
    }
  }
  else {
    param_1[10] = 4;
  }
  return param_1[10];
}



int __thiscall FUN_008cc850(int *param_1,char param_2)

{
  SOCKET SVar1;
  int iVar2;
  
  if (param_1[1] != -1) {
    param_1[10] = 4;
    return param_1[10];
  }
  if (param_1[7] == 0) {
    param_1[10] = 3;
    return param_1[10];
  }
  SVar1 = socket(param_1[7],1,0);
  param_1[1] = SVar1;
  if (SVar1 != 0xffffffff) {
    FUN_008cbdd0();
    if (param_1[4] != 0) {
      iVar2 = bind(param_1[1],(sockaddr *)param_1[5],param_1[6]);
      if (iVar2 != 0) {
        if (param_1[1] != -1) {
          (**(code **)(*param_1 + 0xc))();
          param_1[1] = -1;
        }
        goto LAB_008cc8c6;
      }
    }
    iVar2 = connect(param_1[1],(sockaddr *)param_1[8],param_1[9]);
    if (iVar2 == -1) {
      iVar2 = (**(code **)(*param_1 + 4))();
      if ((iVar2 == 7) && (*(undefined *)((int)param_1 + 0x2d) = 1, param_2 != '\0')) {
        iVar2 = FUN_008cbf80(4,param_1 + 0xd);
        iVar2 = (-(uint)(iVar2 != 0) & 0xfffffff8) + 8;
        *(undefined *)((int)param_1 + 0x2d) = 0;
      }
      param_1[10] = iVar2;
      return iVar2;
    }
    param_1[10] = 0;
    return param_1[10];
  }
LAB_008cc8c6:
  param_1[10] = 2;
  return 2;
}



undefined4 __thiscall FUN_008cc940(int param_1_00,int *param_1)

{
  if ((*(int *)(param_1_00 + 4) != -1) && (*(char *)(param_1_00 + 0x3c) == '\0')) {
    *(undefined4 *)(param_1_00 + 0x28) = 4;
    return 4;
  }
  if (*param_1 == 0) {
    *(undefined4 *)(param_1_00 + 0x28) = 3;
    return 3;
  }
  FUN_008cc450(param_1);
  return 0;
}



void __thiscall FUN_008cc980(int param_1_00,char *param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  int local_24 [2];
  void *local_1c;
  sockaddr local_14;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_24;
  local_24[0] = 0x10;
  iVar1 = recvfrom(*(SOCKET *)(param_1_00 + 4),param_1,param_2,0,&local_14,local_24);
  if (iVar1 != -1) {
    uVar2 = FUN_008cc3d0(&local_14,local_24[0]);
    FUN_008cc450(uVar2);
    _free(local_1c);
    if (*(int *)(param_1_00 + 0x1c) != 0) {
      ___security_check_cookie_4();
      return;
    }
  }
  ___security_check_cookie_4();
  return;
}



bool FUN_008cca20(void)

{
  DWORD DVar1;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bdb68 != 0)) {
    DVar1 = GetCurrentThreadId();
    if (DVar1 != DAT_032bdb68) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x2fe,"wxSocketBase::IsInitialized",
                   "wxIsMainThread()","unsafe to call from other threads");
    }
  }
  return DAT_032be0d8 != 0;
}



undefined4 __fastcall FUN_008cca70(int *param_1)

{
  code *pcVar1;
  
  pcVar1 = *(code **)(*param_1 + 0x1c);
  *(undefined *)((int)param_1 + 0x3d) = 1;
  (*pcVar1)();
  *(undefined *)(param_1 + 0x22) = 0;
  if (DAT_032bcb68 != 0) {
    FUN_0083f5d0(param_1);
    return 1;
  }
  (**(code **)(*param_1 + 4))(1);
  return 1;
}



undefined4 __fastcall FUN_008ccab0(int param_1)

{
  int *piVar1;
  
  piVar1 = *(int **)(param_1 + 8);
  *(undefined *)(param_1 + 0x3c) = 1;
  if ((piVar1 != (int *)0x0) && (piVar1[1] != 0xffffffff)) {
    shutdown(piVar1[1],1);
    if (piVar1[1] != -1) {
      (**(code **)(*piVar1 + 0xc))();
      piVar1[1] = -1;
    }
  }
  *(undefined *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 0x15) = 0;
  return 1;
}



undefined __fastcall FUN_008ccb00(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 8);
  if (iVar1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x61a,"wxSocketBase::GetLocal","m_impl",
                   "invalid socket");
    }
    return 0;
  }
  if (*(int *)(iVar1 + 0x10) == 0) {
    FUN_008cc700();
    if (*(int *)(iVar1 + 0x10) == 0) {
      return 0;
    }
  }
  FUN_008cf950((int *)(iVar1 + 0x10));
  return 1;
}



void __fastcall FUN_008ccb60(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    *puVar1 = wxSocketState::vftable;
  }
  puVar1[2] = *(undefined4 *)(param_1 + 0x10);
  *(undefined *)(puVar1 + 4) = *(undefined *)(param_1 + 0x88);
  puVar1[3] = *(undefined4 *)(param_1 + 0x8c);
  puVar1[5] = *(undefined4 *)(param_1 + 0x84);
  FUN_0086ad60(puVar1);
  return;
}



void __fastcall FUN_008ccbb0(int param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *(int *)(param_1 + 0x34);
  if (iVar1 != 0) {
    piVar2 = *(int **)(iVar1 + 8);
    *(int *)(param_1 + 0x10) = piVar2[2];
    *(undefined *)(param_1 + 0x88) = *(undefined *)(piVar2 + 4);
    *(int *)(param_1 + 0x8c) = piVar2[3];
    *(int *)(param_1 + 0x84) = piVar2[5];
    FUN_0086b060(iVar1);
    (**(code **)(*piVar2 + 4))(1);
  }
  return;
}



void __thiscall FUN_008ccc00(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined **local_3c [2];
  int local_34;
  int local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2568;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = 0;
  switch(param_1) {
  case 0:
    uVar2 = 1;
    break;
  case 1:
    uVar2 = 2;
    break;
  case 2:
    *(undefined *)(param_1_00 + 0x14) = 1;
    *(undefined *)(param_1_00 + 0x15) = 0;
    uVar2 = 4;
    *(undefined4 *)(*(int *)(param_1_00 + 8) + 0x28) = 0;
    break;
  case 3:
    uVar2 = 8;
    *(undefined *)(param_1_00 + 0x14) = 0;
    *(undefined *)(param_1_00 + 0x18) = 1;
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x68b,"wxSocketBase::OnRequest",
                   "Assert failure","unknown wxSocket notification",
                   DAT_0323f878 ^ (uint)&stack0xffffffb4);
    }
  }
  *(uint *)(param_1_00 + 0x90) = *(uint *)(param_1_00 + 0x90) | uVar2;
  if (*(char *)(param_1_00 + 0x88) == '\0') {
    ExceptionList = local_c;
    return;
  }
  if ((*(uint *)(param_1_00 + 0x8c) & uVar2) == 0) {
    ExceptionList = local_c;
    return;
  }
  if (*(int *)(param_1_00 + 0x80) == 0) {
    ExceptionList = local_c;
    return;
  }
  if (param_1 == 0) {
    cVar1 = *(char *)(param_1_00 + 0x16);
  }
  else {
    if (param_1 != 1) goto LAB_008ccccb;
    cVar1 = *(char *)(param_1_00 + 0x17);
  }
  if (cVar1 != '\0') {
    ExceptionList = local_c;
    return;
  }
LAB_008ccccb:
  FUN_00845a20(*(undefined4 *)(param_1_00 + 0x7c),DAT_032be0e0);
  local_3c[0] = wxSocketEvent::vftable;
  local_10 = *(undefined4 *)(param_1_00 + 0x84);
  local_14 = param_1;
  local_4 = 0;
  local_34 = param_1_00;
  (**(code **)(**(int **)(param_1_00 + 0x80) + 0x20))(local_3c);
  local_4 = 0xffffffff;
  local_3c[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_008ccd50(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x30);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxSocketEvent::vftable;
    puVar1[10] = *(undefined4 *)(param_1 + 0x28);
    puVar1[0xb] = *(undefined4 *)(param_1 + 0x2c);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 __thiscall FUN_008ccdc0(undefined4 param_1_00,byte param_1)

{
  FUN_008cc670();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_008ccde0(int *param_1_00,undefined4 param_1)

{
  SOCKET SVar1;
  int *piVar2;
  undefined4 uVar3;
  undefined4 unaff_EBX;
  int local_24;
  void *pvStack_20;
  undefined auStack_18 [4];
  sockaddr local_14;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_24;
  local_24 = 0x10;
  SVar1 = accept(param_1_00[1],&local_14,&local_24);
  (**(code **)(*param_1_00 + 8))(1);
  if (SVar1 != 0xffffffff) {
    if (DAT_032be0d4 == (int *)0x0) {
      FUN_008cc530();
      if (DAT_032be0d4 == (int *)0x0) goto LAB_008cce24;
    }
    piVar2 = (int *)(**(code **)(*DAT_032be0d4 + 8))(param_1);
    if (piVar2 != (int *)0x0) {
      piVar2[1] = SVar1;
      uVar3 = FUN_008cc3d0(auStack_18,unaff_EBX);
      FUN_008cc450(uVar3);
      _free(pvStack_20);
      (**(code **)(*piVar2 + 0x10))();
      ___security_check_cookie_4();
      return;
    }
  }
LAB_008cce24:
  ___security_check_cookie_4();
  return;
}



void FUN_008cceb0(void)

{
  FUN_008ccc00();
  return;
}



int __thiscall FUN_008ccec0(int *param_1_00,char *param_1,int param_2)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  undefined **local_3c [2];
  int local_34;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2598;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  iVar3 = recv(param_1_00[1],param_1,param_2,0);
  if (iVar3 == 0) {
    iVar1 = param_1_00[0x10];
    *(undefined *)((int)param_1_00 + 0x2d) = 0;
    *(undefined *)(iVar1 + 0x14) = 0;
    *(uint *)(iVar1 + 0x90) = *(uint *)(iVar1 + 0x90) | 8;
    *(undefined *)(iVar1 + 0x18) = 1;
    if (((*(char *)(iVar1 + 0x88) != '\0') && ((*(byte *)(iVar1 + 0x8c) & 8) != 0)) &&
       (*(int *)(iVar1 + 0x80) != 0)) {
      FUN_00845a20(*(undefined4 *)(iVar1 + 0x7c),DAT_032be0e0);
      local_3c[0] = wxSocketEvent::vftable;
      local_10 = *(undefined4 *)(iVar1 + 0x84);
      local_14 = 3;
      local_4 = 0;
      local_34 = iVar1;
      (**(code **)(**(int **)(iVar1 + 0x80) + 0x20))(local_3c,uVar2);
      local_4 = 0xffffffff;
      local_3c[0] = wxObject::vftable;
      FUN_0083e850();
    }
    if (param_1_00[1] != 0xffffffff) {
      shutdown(param_1_00[1],1);
      if (param_1_00[1] != -1) {
        (**(code **)(*param_1_00 + 0xc))();
        param_1_00[1] = -1;
      }
      ExceptionList = local_c;
      return 0;
    }
  }
  ExceptionList = local_c;
  return iVar3;
}



int __thiscall FUN_008cd000(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  
  if ((param_1_00[1] == -1) || (*(char *)(param_1_00 + 0xf) != '\0')) {
    param_1_00[10] = 4;
    return -1;
  }
  if (*(char *)(param_1_00 + 0xb) == '\0') {
    iVar1 = FUN_008cc980(param_1,param_2);
  }
  else {
    iVar1 = FUN_008ccec0(param_1,param_2);
  }
  if (iVar1 == -1) {
    iVar1 = (**(code **)(*param_1_00 + 4))();
    param_1_00[10] = iVar1;
    return -1;
  }
  param_1_00[10] = 0;
  return iVar1;
}



uint FUN_008cd070(void)

{
  uint uVar1;
  
  if (DAT_032bdb68 != 0) {
    uVar1 = GetCurrentThreadId();
    if (uVar1 != DAT_032bdb68) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        uVar1 = FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x306,"wxSocketBase::Initialize",
                             "wxIsMainThread()","must be called from the main thread");
      }
      goto LAB_008cd0e8;
    }
  }
  if (DAT_032be0d8 == 0) {
    if (DAT_032be0d4 == (undefined4 *)0x0) {
      uVar1 = FUN_008cc530();
      if (DAT_032be0d4 == (undefined4 *)0x0) goto LAB_008cd0e8;
    }
    uVar1 = (**(code **)*DAT_032be0d4)();
    if ((char)uVar1 == '\0') {
LAB_008cd0e8:
      return uVar1 & 0xffffff00;
    }
  }
  DAT_032be0d8 = DAT_032be0d8 + 1;
  return 1;
}



void FUN_008cd0f0(void)

{
  DWORD DVar1;
  
  if ((DAT_032bdb68 != 0) && (DVar1 = GetCurrentThreadId(), DVar1 != DAT_032bdb68)) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x316,"wxSocketBase::Shutdown","wxIsMainThread()"
                 ,"must be called from the main thread");
    return;
  }
  if (DAT_032be0d8 < 1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x318,"wxSocketBase::Shutdown",
                   "gs_socketInitCount > 0","too many calls to Shutdown()");
      return;
    }
  }
  else {
    DAT_032be0d8 = DAT_032be0d8 + -1;
    if (DAT_032be0d8 == 0) {
      if ((DAT_032be0d4 == (int *)0x0) && (FUN_008cc530(), DAT_032be0d4 == (int *)0x0)) {
        if (PTR_FUN_03235c4c == (undefined *)0x0) {
          return;
        }
        FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x31d,"wxSocketBase::Shutdown","manager",
                     "should have a socket manager");
        return;
      }
                    // WARNING: Could not recover jumptable at 0x008cd13e. Too many branches
                    // WARNING: Treating indirect jump as call
      (**(code **)(*DAT_032be0d4 + 4))();
      return;
    }
  }
  return;
}



undefined4 __thiscall FUN_008cd1d0(int param_1_00,uint param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  bool bVar3;
  uint *puVar4;
  DWORD DVar5;
  uint uVar6;
  int *unaff_EBP;
  uint uVar7;
  undefined4 uVar8;
  uint local_1c;
  uint local_14;
  int local_10;
  undefined auStack_c [12];
  
  iVar1 = *(int *)(param_1_00 + 8);
  if (iVar1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x56f,"wxSocketBase::DoWait","m_impl",
                   "can\'t wait on invalid socket");
    }
  }
  else if ((((*(char *)(iVar1 + 0x3c) != '\0') || (*(char *)(iVar1 + 0x2c) == '\0')) ||
           (*(char *)(param_1_00 + 0x14) != '\0')) || (*(char *)(param_1_00 + 0x15) != '\0')) {
    *(undefined *)(param_1_00 + 0x3c) = 0;
    puVar4 = (uint *)FUN_008a6860(&local_10);
    uVar2 = *puVar4;
    local_14 = ((int)param_1 >> 0x1f) + puVar4[1] + (uint)CARRY4(param_1,*puVar4);
    if (((*(byte *)(param_1_00 + 0x10) & 4) == 0) &&
       ((DAT_032bdb68 == 0 || (DVar5 = GetCurrentThreadId(), DVar5 == DAT_032bdb68)))) {
      local_1c = DAT_032bdbdc;
    }
    else {
      local_1c = 0;
    }
    (**(code **)(**(int **)(param_1_00 + 8) + 8))(param_2 & 3);
    uVar8 = 0;
    bVar3 = true;
    uVar6 = param_1 + uVar2;
    if (*(char *)(param_1_00 + 0x3c) == '\0') {
      while( true ) {
        puVar4 = (uint *)FUN_008a6860(auStack_c);
        uVar7 = uVar6 - *puVar4;
        uVar6 = ((param_1 + uVar2) - puVar4[1]) - (uint)(uVar6 < *puVar4);
        if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
           ((((int)uVar6 < -1 || ((0x7fffffff < uVar6 && (uVar7 < 0x80000000)))) ||
            ((-1 < (int)uVar6 && ((0 < (int)uVar6 || (0x7fffffff < uVar7)))))))) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/longlong.h",0xb4,"wxLongLongNative::ToLong"
                       ,"(m_ll >= LONG_MIN) && (m_ll <= LONG_MAX)",
                       L"wxLongLong to long conversion loss of precision");
        }
        if ((int)uVar7 < 0) {
          if (!bVar3) {
            return 0;
          }
          uVar7 = 0;
        }
        if (unaff_EBP == (int *)0x0) {
          local_14 = uVar7 / 1000;
          local_10 = (uVar7 % 1000) * 1000;
          uVar6 = FUN_008cbf80(param_1 | 8,&local_14);
        }
        else {
          *(undefined4 *)(param_1_00 + 0x90) = 0;
          (**(code **)(*unaff_EBP + 0x18))(uVar7);
          uVar6 = *(uint *)(param_1_00 + 0x90);
        }
        if ((uVar6 & 8) != 0) {
          *(undefined *)(param_1_00 + 0x14) = 0;
          *(undefined *)(param_1_00 + 0x15) = 0;
          return 0xffffffff;
        }
        if ((uVar6 & param_1 & 4) != 0) break;
        if ((uVar6 & param_1 & 3) != 0) goto LAB_008cd394;
        bVar3 = false;
        uVar6 = local_1c;
        if (*(char *)(param_1_00 + 0x3c) != '\0') {
          return 0;
        }
      }
      *(undefined *)(param_1_00 + 0x14) = 1;
      *(undefined *)(param_1_00 + 0x15) = 0;
LAB_008cd394:
      uVar8 = 1;
    }
    return uVar8;
  }
  return 0xffffffff;
}



undefined4 __thiscall FUN_008cd3e0(int param_1_00,int param_1,char param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *(int *)(param_1_00 + 8);
  if (((iVar1 == 0) || (*(int *)(iVar1 + 4) == -1)) || (*(char *)(iVar1 + 0x3c) == '\0')) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x724,"wxSocketServer::AcceptWith",
                   "Assert failure","can only be called for a valid server socket");
    }
    *(undefined4 *)(*(int *)(param_1_00 + 8) + 0x28) = 4;
    return 0;
  }
  if (param_2 != '\0') {
    iVar1 = FUN_008cbf80(1,iVar1 + 0x34);
    if (iVar1 == 0) {
      *(undefined4 *)(*(int *)(param_1_00 + 8) + 0x28) = 8;
      return 0;
    }
  }
  iVar1 = FUN_008ccde0(param_1);
  *(int *)(param_1 + 8) = iVar1;
  if (iVar1 == 0) {
    uVar2 = (**(code **)(**(int **)(param_1_00 + 8) + 4))();
    *(undefined4 *)(*(int *)(param_1_00 + 8) + 0x28) = uVar2;
    return 0;
  }
  *(undefined4 *)(param_1 + 0xc) = 3;
  *(undefined *)(param_1 + 0x14) = 1;
  return 1;
}



uint __thiscall FUN_008cd4a0(int *param_1,int param_2,int *param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  
  if (param_1[2] != 0) {
    (**(code **)(*param_1 + 0x1c))();
    if ((undefined4 *)param_1[2] != (undefined4 *)0x0) {
      (***(code ***)(undefined4 *)param_1[2])(1);
    }
  }
  *(undefined *)(param_1 + 5) = 0;
  *(undefined *)((int)param_1 + 0x15) = 0;
  if (DAT_032be0d4 == (int *)0x0) {
    FUN_008cc530();
    if (DAT_032be0d4 == (int *)0x0) {
      iVar2 = 0;
      goto LAB_008cd4ec;
    }
  }
  iVar2 = (**(code **)(*DAT_032be0d4 + 8))(param_1);
LAB_008cd4ec:
  param_1[2] = iVar2;
  if (iVar2 == 0) {
    return 0;
  }
  if ((*(byte *)(param_1 + 4) & 8) != 0) {
    *(undefined *)(iVar2 + 0x2e) = 1;
  }
  if ((*(byte *)(param_1 + 4) & 0x10) != 0) {
    *(undefined *)(param_1[2] + 0x2f) = 1;
  }
  if ((*(byte *)(param_1 + 4) & 0x20) != 0) {
    *(undefined *)(param_1[2] + 0x30) = 0;
  }
  if ((param_3 != (int *)0x0) ||
     ((*(int *)param_1[0x12] != 0 && (param_3 = param_1 + 0x10, param_3 != (int *)0x0)))) {
    FUN_008cc940(param_3[2]);
  }
  iVar2 = param_1[0x26];
  iVar1 = param_1[2];
  *(int *)(iVar1 + 8) = param_1[0x25];
  *(int *)(iVar1 + 0xc) = iVar2;
  if (**(int **)(param_2 + 8) == 0) {
    *(undefined4 *)(param_1[2] + 0x28) = 3;
  }
  else {
    FUN_008cc450(*(int **)(param_2 + 8));
  }
  uVar3 = FUN_008cc850(param_4);
  if (uVar3 != 0) {
    if (uVar3 == 7) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((char)param_4 != '\0')) {
        uVar3 = FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x7b9,"wxSocketClient::DoConnect",
                             "!wait","shouldn\'t get this for blocking connect");
      }
      *(undefined *)((int)param_1 + 0x15) = 1;
    }
    return uVar3 & 0xffffff00;
  }
  *(undefined *)(param_1 + 5) = 1;
  return 1;
}



void FUN_008cd5d0(void)

{
  char cVar1;
  
  cVar1 = FUN_008cca20();
  if (cVar1 != '\0') {
    FUN_008cd0f0();
    return;
  }
  return;
}



undefined4 * FUN_008cd5e0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxSocketModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



int __thiscall FUN_008cd640(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x3b9,"wxSocketBase::DoRead","m_impl",
                   "socket must be valid");
    }
    return 0;
  }
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x3bd,"wxSocketBase::DoRead","buffer",
                   "NULL buffer");
    }
    return 0;
  }
  iVar1 = FUN_008cc2f0(param_1,param_2,0);
  param_2 = param_2 - iVar1;
  param_1 = iVar1 + param_1;
  if (param_2 != 0) {
    while ((*(char *)(*(int *)(param_1_00 + 8) + 0x2c) == '\0' ||
           (*(char *)(param_1_00 + 0x14) != '\0'))) {
      iVar2 = FUN_008cd000(param_1,param_2);
      if (iVar2 == -1) {
        iVar2 = (**(code **)(**(int **)(param_1_00 + 8) + 4))();
        if (iVar2 != 7) {
          *(undefined4 *)(*(int *)(param_1_00 + 8) + 0x28) = 2;
          return iVar1;
        }
        if ((*(byte *)(param_1_00 + 0x10) & 1) != 0) {
          *(undefined4 *)(*(int *)(param_1_00 + 8) + 0x28) = 0;
          return iVar1;
        }
        iVar2 = FUN_008cd1d0(*(int *)(param_1_00 + 0x20) * 1000,1);
        if (iVar2 == 0) {
          *(undefined4 *)(*(int *)(param_1_00 + 8) + 0x28) = 8;
          return iVar1;
        }
      }
      else {
        if (iVar2 == 0) break;
        iVar1 = iVar1 + iVar2;
        if ((*(byte *)(param_1_00 + 0x10) & 2) == 0) {
          return iVar1;
        }
        param_2 = param_2 - iVar2;
        param_1 = param_1 + iVar2;
      }
      if (param_2 == 0) {
        return iVar1;
      }
    }
    *(undefined *)(param_1_00 + 0x18) = 1;
    if (((*(byte *)(param_1_00 + 0x10) & 2) != 0) || (iVar1 == 0)) {
      *(undefined4 *)(*(int *)(param_1_00 + 8) + 0x28) = 2;
    }
  }
  return iVar1;
}



int __thiscall FUN_008cd7a0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int *piVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd25d0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(param_1_00 + 0x16) != '\0')) {
    FUN_008402e0("..\\..\\src\\common\\socket.cpp",0xcf,"wxSocketReadGuard::wxSocketReadGuard",
                 "!m_socket->m_reading","read reentrancy?",DAT_0323f878 ^ (uint)&stack0xffffffdc);
  }
  *(undefined *)(param_1_00 + 0x16) = 1;
  uVar1 = *(undefined4 *)(param_1_00 + 0x10);
  local_4 = 0;
  FUN_008cc210(1);
  local_4._0_1_ = 1;
  uVar3 = FUN_008cd640(param_1,param_2);
  *(undefined4 *)(param_1_00 + 0x1c) = uVar3;
  FUN_008cc280(param_1,uVar3);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_008cc210(uVar1);
  *(undefined *)(param_1_00 + 0x16) = 0;
  piVar2 = *(int **)(param_1_00 + 8);
  local_4 = 0xffffffff;
  if ((piVar2 != (int *)0x0) && (piVar2[1] != -1)) {
    (**(code **)(*piVar2 + 8))(1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_008cd890(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  if (*(int *)(param_1_00 + 8) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x474,"wxSocketBase::DoWrite","m_impl",
                   "socket must be valid");
    }
    return 0;
  }
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\socket.cpp",0x477,"wxSocketBase::DoWrite","buffer",
                   "NULL buffer");
    }
    return 0;
  }
  iVar2 = 0;
  if (param_2 != 0) {
    while ((*(char *)(*(int *)(param_1_00 + 8) + 0x2c) == '\0' ||
           (*(char *)(param_1_00 + 0x14) != '\0'))) {
      iVar1 = FUN_008cbef0(param_1,param_2);
      if (iVar1 == -1) {
        iVar1 = (**(code **)(**(int **)(param_1_00 + 8) + 4))();
        if (iVar1 != 7) {
          *(undefined4 *)(*(int *)(param_1_00 + 8) + 0x28) = 2;
          return iVar2;
        }
        if ((*(byte *)(param_1_00 + 0x10) & 1) != 0) {
          return iVar2;
        }
        iVar1 = FUN_008cd1d0(*(int *)(param_1_00 + 0x20) * 1000,2);
        if (iVar1 == 0) {
          *(undefined4 *)(*(int *)(param_1_00 + 8) + 0x28) = 8;
          return iVar2;
        }
      }
      else {
        iVar2 = iVar2 + iVar1;
        if ((*(byte *)(param_1_00 + 0x10) & 2) == 0) {
          return iVar2;
        }
        param_2 = param_2 - iVar1;
        param_1 = param_1 + iVar1;
      }
      if (param_2 == 0) {
        return iVar2;
      }
    }
    if (((*(byte *)(param_1_00 + 0x10) & 2) != 0) || (iVar2 == 0)) {
      *(undefined4 *)(*(int *)(param_1_00 + 8) + 0x28) = 2;
      return iVar2;
    }
  }
  return iVar2;
}



bool __thiscall FUN_008cd9d0(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 0x70) == 0) {
    iVar1 = FUN_008cbf80(1,0);
    if (iVar1 == 0) {
      if (param_1 == -1) {
        iVar1 = FUN_008cd1d0(*(int *)(param_1_00 + 0x20) * 1000,1);
        return iVar1 != 0;
      }
      iVar1 = FUN_008cd1d0(param_1 * 1000 + param_2,1);
      return iVar1 != 0;
    }
  }
  return true;
}



bool __thiscall FUN_008cda40(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  
  if (param_1 == -1) {
    iVar1 = FUN_008cd1d0(*(int *)(param_1_00 + 0x20) * 1000,4);
    return iVar1 == 1;
  }
  iVar1 = FUN_008cd1d0(param_1 * 1000 + param_2,4);
  return iVar1 == 1;
}



int __thiscall FUN_008cda80(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd25f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(param_1_00 + 0x16) != '\0')) {
    FUN_008402e0("..\\..\\src\\common\\socket.cpp",0xcf,"wxSocketReadGuard::wxSocketReadGuard",
                 "!m_socket->m_reading","read reentrancy?",DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  *(undefined *)(param_1_00 + 0x16) = 1;
  local_4 = 0;
  uVar2 = FUN_008cd640(param_1,param_2);
  *(undefined4 *)(param_1_00 + 0x1c) = uVar2;
  *(undefined *)(param_1_00 + 0x16) = 0;
  piVar1 = *(int **)(param_1_00 + 8);
  local_4 = 0xffffffff;
  if ((piVar1 != (int *)0x0) && (piVar1[1] != -1)) {
    (**(code **)(*piVar1 + 8))(1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_008cdb30(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2628;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(param_1_00 + 0x17) != '\0')) {
    FUN_008402e0("..\\..\\src\\common\\socket.cpp",0xeb,"wxSocketWriteGuard::wxSocketWriteGuard",
                 "!m_socket->m_writing","write reentrancy?",DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  *(undefined *)(param_1_00 + 0x17) = 1;
  local_4 = 0;
  uVar2 = FUN_008cd890(param_1,param_2);
  *(undefined4 *)(param_1_00 + 0x1c) = uVar2;
  *(undefined *)(param_1_00 + 0x17) = 0;
  piVar1 = *(int **)(param_1_00 + 8);
  local_4 = 0xffffffff;
  if ((piVar1 != (int *)0x0) && (piVar1[1] != -1)) {
    (**(code **)(*piVar1 + 8))(2);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_008cdbe0(int param_1)

{
  _free(*(void **)(param_1 + 0x28));
  if (7 < *(uint *)(param_1 + 0x24)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x10));
  }
  *(undefined4 *)(param_1 + 0x24) = 7;
  *(undefined4 *)(param_1 + 0x20) = 0;
  *(undefined2 *)(param_1 + 0x10) = 0;
  FUN_008cf910();
  return;
}



void __fastcall FUN_008cdc20(undefined4 *param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd266e;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *param_1 = wxSocketBase::vftable;
  local_4 = 2;
  if (*(char *)((int)param_1 + 0x3d) == '\0') {
    piVar1 = (int *)param_1[2];
    *(undefined *)(param_1 + 0xf) = 1;
    if ((piVar1 != (int *)0x0) && (piVar1[1] != 0xffffffff)) {
      shutdown(piVar1[1],1);
      if (piVar1[1] != -1) {
        (**(code **)(*piVar1 + 0xc))();
        piVar1[1] = -1;
      }
    }
    *(undefined *)(param_1 + 5) = 0;
    *(undefined *)((int)param_1 + 0x15) = 0;
  }
  if ((undefined4 *)param_1[2] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[2])(1,uVar2);
  }
  _free((void *)param_1[0x1c]);
  local_4._0_1_ = 1;
  _free((void *)param_1[0x1a]);
  if (7 < (uint)param_1[0x19]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x14]);
  }
  param_1[0x19] = 7;
  param_1[0x18] = 0;
  *(undefined2 *)(param_1 + 0x14) = 0;
  FUN_008cf910();
  local_4 = (uint)local_4._1_3_ << 8;
  param_1[9] = wxList::vftable;
  FUN_0086ade0();
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_008cdd30(int param_1_00,byte param_1)

{
  _free(*(void **)(param_1_00 + 0x28));
  if (7 < *(uint *)(param_1_00 + 0x24)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0x10));
  }
  *(undefined4 *)(param_1_00 + 0x24) = 7;
  *(undefined4 *)(param_1_00 + 0x20) = 0;
  *(undefined2 *)(param_1_00 + 0x10) = 0;
  FUN_008cf910();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_008cdd90(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2698;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008cf870(param_1);
  *param_1_00 = wxIPaddress::vftable;
  param_1_00[9] = 7;
  param_1_00[8] = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  local_4 = 0;
  FID_conflict_assign(param_1 + 0xc,0,0xffffffff);
  param_1_00[10] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __fastcall FUN_008cde20(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x30);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_008cdd90(param_1);
    *puVar1 = wxIPV4address::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 __thiscall FUN_008cde90(int param_1_00,int param_1)

{
  FUN_008cf9a0(param_1);
  if (param_1_00 + 0x4c != param_1 + 0xc) {
    FID_conflict_assign(param_1 + 0xc,0,0xffffffff);
  }
  return 1;
}



void __fastcall FUN_008cdec0(int param_1)

{
  char cVar1;
  DWORD DVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcb376;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 8) = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined *)(param_1 + 0x18) = 0;
  *(undefined *)(param_1 + 0x17) = 0;
  *(undefined *)(param_1 + 0x16) = 0;
  *(undefined *)(param_1 + 0x15) = 0;
  *(undefined *)(param_1 + 0x14) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(undefined4 *)(param_1 + 0x20) = 600;
  *(undefined *)(param_1 + 0x3d) = 0;
  *(undefined4 *)(param_1 + 0x70) = 0;
  *(undefined4 *)(param_1 + 0x74) = 0;
  *(undefined4 *)(param_1 + 0x78) = 0;
  *(undefined4 *)(param_1 + 0x7c) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x80) = 0;
  *(undefined4 *)(param_1 + 0x84) = 0;
  *(undefined *)(param_1 + 0x88) = 0;
  *(undefined4 *)(param_1 + 0x90) = 0;
  *(undefined4 *)(param_1 + 0x8c) = 0;
  if ((DAT_032bdb68 != 0) && (DVar2 = GetCurrentThreadId(), DVar2 != DAT_032bdb68)) {
    ExceptionList = local_c;
    return;
  }
  cVar1 = FUN_008cd070();
  if (cVar1 == '\0') {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_008423d0();
      local_4._0_1_ = 3;
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_008ce080(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd266e;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = wxSocketBase::vftable;
  FUN_0086b270(0);
  local_4._0_1_ = 1;
  FUN_008cf7e0(uVar1);
  param_1[0x19] = 7;
  param_1[0x18] = 0;
  *(undefined2 *)(param_1 + 0x14) = 0;
  param_1[0x1a] = 0;
  param_1[0x10] = wxIPV4address::vftable;
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_008cdec0();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_008ce110(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd266e;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxSocketBase::vftable;
  FUN_0086b270(0);
  local_4._0_1_ = 1;
  FUN_008cf7e0(uVar1);
  param_1_00[0x19] = 7;
  param_1_00[0x18] = 0;
  *(undefined2 *)(param_1_00 + 0x14) = 0;
  param_1_00[0x1a] = 0;
  param_1_00[0x10] = wxIPV4address::vftable;
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_008cdec0();
  FUN_008cc210(param_1);
  param_1_00[3] = param_2;
  ExceptionList = local_c;
  return param_1_00;
}



int * __thiscall FUN_008ce1b0(int param_1_00,undefined4 param_1)

{
  code *pcVar1;
  char cVar2;
  uint uVar3;
  void *pvVar4;
  int *piVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar4 = operator_new(0x94);
  local_4 = 0;
  if (pvVar4 == (void *)0x0) {
    piVar5 = (int *)0x0;
  }
  else {
    piVar5 = (int *)FUN_008ce080(uVar3);
  }
  local_4 = 0xffffffff;
  FUN_008cc210(*(undefined4 *)(param_1_00 + 0x10));
  cVar2 = FUN_008cd3e0(piVar5,param_1);
  if (cVar2 == '\0') {
    pcVar1 = *(code **)(*piVar5 + 0x1c);
    *(undefined *)((int)piVar5 + 0x3d) = 1;
    (*pcVar1)();
    *(undefined *)(piVar5 + 0x22) = 0;
    if (DAT_032bcb68 != 0) {
      FUN_0083f5d0(piVar5);
      ExceptionList = local_c;
      return (int *)0x0;
    }
    (**(code **)(*piVar5 + 4))(1);
    ExceptionList = pvVar4;
    return (int *)0x0;
  }
  ExceptionList = local_c;
  return piVar5;
}



undefined4 * __thiscall FUN_008ce2a0(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_008ce110(param_1,1);
  param_1_00[0x26] = 0xffffffff;
  param_1_00[0x25] = 0xffffffff;
  *param_1_00 = wxSocketClient::vftable;
  return param_1_00;
}



void __fastcall thunk_FUN_008cdc20(undefined4 *param_1)

{
  int *piVar1;
  uint uVar2;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bd266e;
  pvStack_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &pvStack_c;
  *param_1 = wxSocketBase::vftable;
  uStack_4 = 2;
  if (*(char *)((int)param_1 + 0x3d) == '\0') {
    piVar1 = (int *)param_1[2];
    *(undefined *)(param_1 + 0xf) = 1;
    if ((piVar1 != (int *)0x0) && (piVar1[1] != 0xffffffff)) {
      shutdown(piVar1[1],1);
      if (piVar1[1] != -1) {
        (**(code **)(*piVar1 + 0xc))();
        piVar1[1] = -1;
      }
    }
    *(undefined *)(param_1 + 5) = 0;
    *(undefined *)((int)param_1 + 0x15) = 0;
  }
  if ((undefined4 *)param_1[2] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[2])(1,uVar2);
  }
  _free((void *)param_1[0x1c]);
  uStack_4._0_1_ = 1;
  _free((void *)param_1[0x1a]);
  if (7 < (uint)param_1[0x19]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x14]);
  }
  param_1[0x19] = 7;
  param_1[0x18] = 0;
  *(undefined2 *)(param_1 + 0x14) = 0;
  FUN_008cf910();
  uStack_4 = (uint)uStack_4._1_3_ << 8;
  param_1[9] = wxList::vftable;
  FUN_0086ade0();
  uStack_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_c;
  return;
}



void __thiscall
FUN_008ce2e0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_0081a07d(param_3,param_2,1);
  uVar1 = FUN_008854f0(param_2);
  FUN_0084d410(param_1_00,param_1,uVar1);
  return;
}



undefined4 * __thiscall FUN_008ce320(undefined4 *param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  uint local_80;
  void *local_7c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2734;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008ce110();
  local_4 = 0;
  *param_1_00 = wxSocketServer::vftable;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    FUN_0081c0f1();
    local_4._0_1_ = 1;
    FUN_004325b6();
    local_4._0_1_ = 2;
    FUN_008423d0();
    local_4._0_1_ = 3;
    FUN_008854f0();
    FUN_0084d410();
    local_4._0_1_ = 2;
    FUN_00842440();
    _free(local_7c);
    if (7 < local_80) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = (uint)local_4._1_3_ << 8;
    local_80 = 7;
    FUN_0081b5bc();
  }
  if ((DAT_032be0d4 == (int *)0x0) && (FUN_008cc530(), DAT_032be0d4 == (int *)0x0)) {
    iVar2 = 0;
  }
  else {
    iVar2 = (**(code **)(*DAT_032be0d4 + 8))();
  }
  param_1_00[2] = iVar2;
  if (iVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(7);
    if (cVar1 == '\0') {
      ExceptionList = local_c;
      return param_1_00;
    }
    FUN_0081c0f1();
    local_4._0_1_ = 4;
    FUN_004325b6();
    local_4._0_1_ = 5;
    FUN_008423d0();
    local_4._0_1_ = 6;
    FUN_008854f0();
    FUN_0084d410();
    local_4._0_1_ = 5;
    FUN_00842440();
    _free(local_7c);
    if (7 < local_80) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  else {
    if ((*(int *)(iVar2 + 4) == -1) || (*(char *)(iVar2 + 0x3c) != '\0')) {
      if (**(int **)(param_1 + 8) == 0) {
        *(undefined4 *)(iVar2 + 0x28) = 3;
      }
      else {
        FUN_008cc450();
      }
    }
    else {
      *(undefined4 *)(iVar2 + 0x28) = 4;
    }
    if ((*(byte *)(param_1_00 + 4) & 8) != 0) {
      *(undefined *)(param_1_00[2] + 0x2e) = 1;
    }
    if ((*(byte *)(param_1_00 + 4) & 0x10) != 0) {
      *(undefined *)(param_1_00[2] + 0x2f) = 1;
    }
    if ((*(byte *)(param_1_00 + 4) & 0x20) != 0) {
      *(undefined *)(param_1_00[2] + 0x30) = 0;
    }
    iVar2 = FUN_008cc790();
    if (iVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(7);
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return param_1_00;
      }
      FUN_0081c0f1();
      local_4._0_1_ = 10;
      FUN_004325b6();
      local_4._0_1_ = 0xb;
      FUN_008423d0();
      local_4._0_1_ = 0xc;
      FUN_008ce2e0();
      local_4._0_1_ = 0xb;
    }
    else {
      if ((undefined4 *)param_1_00[2] != (undefined4 *)0x0) {
        (***(code ***)(undefined4 *)param_1_00[2])();
        param_1_00[2] = 0;
      }
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(7);
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return param_1_00;
      }
      FUN_0081c0f1();
      local_4._0_1_ = 7;
      FUN_004325b6();
      local_4._0_1_ = 8;
      FUN_008423d0();
      local_4._0_1_ = 9;
      FUN_008854f0();
      FUN_0084d410();
      local_4._0_1_ = 8;
    }
    FUN_00842440();
    FUN_0040159c();
  }
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_008ce770(undefined4 param_1_00,byte param_1)

{
  FUN_008cdc20();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined ** FUN_008ce790(void)

{
  return &PTR_u_wxFileSystemInternetModule_032385d4;
}



void __fastcall FUN_008ce7a0(int param_1)

{
  int *piVar1;
  
  piVar1 = (int *)FUN_00863200(*(undefined4 *)(param_1 + 0x28));
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(1);
  }
  return;
}



undefined4 * FUN_008ce7c0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxFileSystemInternetModule::vftable;
    puVar2[10] = 0;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 __fastcall FUN_008ce840(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(8);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = &wxInternetFSHandler::vftable;
    *(undefined4 **)(param_1 + 0x28) = puVar1;
    FUN_008631c0(puVar1);
    return 1;
  }
  *(undefined4 *)(param_1 + 0x28) = 0;
  FUN_008631c0(0);
  return 1;
}



undefined4 * __thiscall FUN_008ce880(undefined4 *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2768;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008823c0(param_1);
  *param_1_00 = wxTemporaryFileInputStream::vftable;
  param_1_00[0xf] = 7;
  param_1_00[0xe] = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 10) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[0x10] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_008ce910(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd27a3;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxTemporaryFileInputStream::vftable;
  local_4 = 1;
  if (*(char *)(param_1 + 8) != '\0') {
    iVar1 = param_1[7];
    if (iVar1 != 0) {
      FUN_008871c0();
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar1);
    }
    *(undefined *)(param_1 + 8) = 0;
  }
  FUN_0085e6c0(param_1 + 9,uVar2);
  _free((void *)param_1[0x10]);
  if (7 < (uint)param_1[0xf]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[10]);
  }
  param_1[0xf] = 7;
  param_1[0xe] = 0;
  *(undefined2 *)(param_1 + 10) = 0;
  local_4 = 0xffffffff;
  FUN_00882980();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008ce9d0(undefined4 param_1_00,byte param_1)

{
  FUN_008ce910();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_008ce9f0(void)

{
  int iVar1;
  int unaff_ESI;
  undefined **local_58;
  undefined ***local_3c;
  undefined *local_38 [6];
  uint local_20;
  void *local_1c;
  undefined4 local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd2809;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_3c = &local_58;
  local_14 = 0;
  local_4 = 0;
  local_58 = (undefined **)0x23;
  FUN_00852900(unaff_ESI);
  local_3c = (undefined ***)&stack0xffffffac;
  local_58 = local_38;
  local_4 = 0;
  local_14 = 1;
  if (*(int *)(unaff_ESI + 0x14) == 0) {
    local_3c = (undefined ***)&stack0xffffffac;
    iVar1 = FUN_008529d0();
    local_4 = 1;
  }
  else {
    iVar1 = FUN_008529d0();
    local_4 = 2;
  }
  if (unaff_ESI != iVar1) {
    local_58 = (undefined **)0x0;
    FID_conflict_assign(iVar1);
  }
  local_4 = local_4 & 0xffffff00;
  local_58 = (undefined **)0x8cea97;
  _free(local_1c);
  if (7 < local_20) {
                    // WARNING: Subroutine does not return
    local_58 = (undefined **)&UNK_008ceaaf;
    FUN_00a3f6a1();
  }
  local_58 = local_38;
  FUN_008527e0();
  local_4 = 3;
  local_58 = (undefined **)0x8cead5;
  iVar1 = FUN_008507a0();
  local_4 = 0;
  local_58 = (undefined **)0x8ceaf3;
  _free(local_1c);
  if (7 < local_20) {
                    // WARNING: Subroutine does not return
    local_58 = (undefined **)&UNK_008ceb06;
    FUN_00a3f6a1();
  }
  if (iVar1 != 0) {
    local_58 = (undefined **)&local_3c;
    FUN_0081feb2();
    if (local_3c == (undefined ***)0x2f) {
      local_58 = (undefined **)&DAT_03057848;
      iVar1 = FUN_008535a0(local_38);
      local_4 = 6;
    }
    else {
      local_58 = (undefined **)&DAT_00d29138;
      iVar1 = FUN_008535a0(local_38);
      local_4 = 5;
    }
    if (unaff_ESI != iVar1) {
      local_58 = (undefined **)0x0;
      FID_conflict_assign(iVar1);
    }
    local_4 = local_4 & 0xffffff00;
    local_58 = (undefined **)0x8ceb73;
    _free(local_1c);
    if (7 < local_20) {
                    // WARNING: Subroutine does not return
      local_58 = (undefined **)&UNK_008ceb86;
      FUN_00a3f6a1();
    }
  }
  local_58 = (undefined **)0x2;
  FUN_00852560(local_38);
  local_58 = (undefined **)0x2f;
  local_4 = 7;
  iVar1 = FUN_00850910();
  local_4 = local_4 & 0xffffff00;
  local_58 = (undefined **)0x8cebca;
  _free(local_1c);
  if (7 < local_20) {
                    // WARNING: Subroutine does not return
    local_58 = (undefined **)&UNK_008cebdd;
    FUN_00a3f6a1();
  }
  if (iVar1 == -1) {
    local_58 = (undefined **)0x1;
    FID_conflict_append();
  }
  ExceptionList = local_c;
  return;
}



void FUN_008cec10(undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined local_1e4 [4];
  uint local_1e0;
  undefined4 local_1d0;
  uint local_1cc;
  void *local_1c8;
  undefined local_1c0 [4];
  uint local_1bc;
  undefined4 local_1ac;
  uint local_1a8;
  void *local_1a4;
  undefined4 local_198;
  uint local_184;
  void *local_180;
  undefined local_178 [4];
  undefined4 local_174;
  uint local_160;
  void *local_15c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd285c;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_1e4;
  ExceptionList = &local_c;
  FUN_00863e80(local_178,param_1,DAT_0323f878 ^ (uint)&stack0xfffffe14);
  local_4 = 0;
  iVar1 = FUN_008507a0(L"http");
  if ((iVar1 == 0) || (iVar1 = FUN_008507a0(&DAT_00d3d98c), iVar1 == 0)) {
    uVar2 = FUN_008ce9f0();
    local_4._0_1_ = 1;
    uVar3 = FUN_008533d0(local_1e4,local_178,&DAT_00d293f4);
    local_4._0_1_ = 2;
    uVar2 = FUN_008531f0(local_1c0,uVar3,uVar2);
    local_4._0_1_ = 3;
    FUN_008d15d0(uVar2);
    _free(local_1a4);
    if (7 < local_1a8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_1bc);
    }
    local_1a8 = 7;
    local_1ac = 0;
    local_1bc = local_1bc & 0xffff0000;
    _free(local_1c8);
    if (7 < local_1cc) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_1e0);
    }
    local_1cc = 7;
    local_1d0 = 0;
    local_1e0 = local_1e0 & 0xffff0000;
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_180);
    if (7 < local_184) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_198);
    }
    FUN_008d0a30();
    _free(local_15c);
    if (7 < local_160) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_174);
    }
  }
  else {
    _free(local_15c);
    if (7 < local_160) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_174);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008cee10(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined4 *puVar4;
  bool bVar5;
  undefined4 uVar6;
  void *local_284;
  void *pvStack_280;
  undefined auStack_27c [4];
  uint uStack_278;
  undefined4 uStack_268;
  uint uStack_264;
  void *pvStack_260;
  undefined local_258 [4];
  uint local_254;
  undefined4 local_244;
  uint local_240;
  void *local_23c;
  undefined local_234 [4];
  uint local_230;
  undefined4 local_220;
  uint local_21c;
  void *local_218;
  uint local_20c;
  undefined4 local_1fc;
  uint local_1f8;
  void *local_1f4;
  undefined auStack_1ec [36];
  undefined auStack_1c8 [8];
  undefined local_1c0 [4];
  uint uStack_1bc;
  undefined4 uStack_1ac;
  uint uStack_1a8;
  void *pvStack_1a4;
  undefined auStack_19c [4];
  uint uStack_198;
  undefined4 uStack_188;
  uint uStack_184;
  void *pvStack_180;
  undefined local_178 [4];
  undefined4 uStack_174;
  uint uStack_160;
  void *pvStack_15c;
  int *local_3c;
  int local_38;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2931;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_284;
  ExceptionList = &local_c;
  bVar5 = false;
  uVar6 = 0;
  local_284 = (void *)0x0;
  uVar1 = FUN_008ce9f0(DAT_0323f878 ^ (uint)&stack0xfffffd6c);
  local_4 = 0;
  uVar2 = FUN_00863e80(local_258,param_2);
  local_4._0_1_ = 1;
  uVar2 = FUN_008533d0(local_234,uVar2,&DAT_00d293f4);
  local_4._0_1_ = 2;
  FUN_008531f0(local_178,uVar2,uVar1);
  _free(local_218);
  if (7 < local_21c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_230);
  }
  local_21c = 7;
  local_220 = 0;
  local_230 = local_230 & 0xffff0000;
  _free(local_23c);
  if (7 < local_240) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_254);
  }
  local_240 = 7;
  local_244 = 0;
  local_254 = local_254 & 0xffff0000;
  local_4._0_1_ = 6;
  _free(local_1f4);
  if (7 < local_1f8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_20c);
  }
  local_1f8 = 7;
  local_1fc = 0;
  local_20c = local_20c & 0xffff0000;
  FUN_008d15d0(local_178);
  local_4._0_1_ = 7;
  if (local_38 == 0) {
    piVar3 = (int *)FUN_008d1150();
    (**(code **)(*local_3c + 0x3c))(local_1c0);
    local_4._0_1_ = 8;
    if (piVar3 != (int *)0x0) {
      FUN_004325b6(L"wxhtml");
      local_4._0_1_ = 9;
      FUN_0085be30(auStack_19c,auStack_27c);
      local_4._0_1_ = 0xb;
      _free(pvStack_260);
      if (7 < uStack_264) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_278);
      }
      uStack_278 = uStack_278 & 0xffff0000;
      uStack_264 = 7;
      uStack_268 = 0;
      FUN_00882500(auStack_19c);
      local_4._0_1_ = 0xc;
      FUN_008830d0(auStack_1ec);
      local_4._0_1_ = 0xb;
      FUN_00882a20();
      (**(code **)(*piVar3 + 4))(1);
      pvStack_280 = operator_new(0x80);
      local_4._0_1_ = 0xd;
      if (pvStack_280 != (void *)0x0) {
        local_284 = operator_new(0x48);
        local_4._0_1_ = 0xe;
        if (local_284 != (void *)0x0) {
          uVar6 = FUN_008ce880(auStack_19c);
        }
        local_4._0_1_ = 0xd;
        uVar1 = FUN_008641f0(auStack_1ec,param_2);
        bVar5 = true;
        local_4 = CONCAT31(local_4._1_3_,0xf);
        local_284 = (void *)0x1;
        puVar4 = (undefined4 *)FUN_00455539(auStack_1c8);
        FUN_00863c30(uVar6,local_178,local_1c0,uVar1,*puVar4,puVar4[1]);
      }
      local_4 = 0xb;
      if (bVar5) {
        FUN_0040159c();
      }
      _free(pvStack_180);
      if (7 < uStack_184) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_198);
      }
      uStack_184 = 7;
      uStack_188 = 0;
      uStack_198 = uStack_198 & 0xffff0000;
      _free(pvStack_1a4);
      if (7 < uStack_1a8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_1bc);
      }
      uStack_1bc = uStack_1bc & 0xffff0000;
      uStack_1a8 = 7;
      uStack_1ac = 0;
      local_4 = CONCAT31(local_4._1_3_,6);
      FUN_008d0a30();
      _free(pvStack_15c);
      if (7 < uStack_160) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_174);
      }
      goto LAB_008cf277;
    }
    _free(pvStack_1a4);
    if (7 < uStack_1a8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_1bc);
    }
  }
  local_4 = CONCAT31(local_4._1_3_,6);
  FUN_008d0a30();
  _free(pvStack_15c);
  if (7 < uStack_160) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_174);
  }
LAB_008cf277:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_008cf2b0(void)

{
  return &PTR_u_wxSockAddress_032385ec;
}



undefined ** FUN_008cf2c0(void)

{
  return &PTR_u_wxIPaddress_03238604;
}



undefined ** FUN_008cf2d0(void)

{
  return &PTR_u_wxIPV4address_0323861c;
}



char ** FUN_008cf2e0(char **param_1,char **param_2,char *param_3,int param_4,undefined4 *param_5)

{
  char **ppcVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  void **ppvVar5;
  void *pvVar6;
  char **ppcVar7;
  size_t _Size;
  char **ppcVar8;
  char *pcVar9;
  size_t _Size_00;
  uint uVar10;
  char *pcVar11;
  void **local_c;
  
  *param_1 = *param_2;
  param_1[1] = param_2[1];
  param_1[2] = param_2[2];
  param_1[3] = param_2[3];
  pcVar11 = *param_1;
  pcVar9 = pcVar11;
  do {
    cVar3 = *pcVar9;
    pcVar9 = pcVar9 + 1;
  } while (cVar3 != '\0');
  _Size_00 = (int)pcVar9 - (int)(pcVar11 + 1);
  if (param_4 < (int)_Size_00) {
    *param_5 = 0xc;
    return (char **)0x0;
  }
  _memcpy(param_3,pcVar11,_Size_00);
  param_3[_Size_00] = '\0';
  _Size = (size_t)*(short *)((int)param_1 + 10);
  uVar10 = _Size_00 + 1;
  uVar4 = 4 - (uVar10 & 3);
  *param_1 = param_3;
  if (uVar4 < 4) {
    uVar10 = uVar10 + uVar4;
  }
  local_c = (void **)param_1[3];
  ppcVar1 = (char **)(param_3 + uVar10);
  pvVar6 = *local_c;
  ppvVar5 = local_c;
  while (pvVar6 != (void *)0x0) {
    ppvVar5 = ppvVar5 + 1;
    uVar10 = uVar10 + 4;
    pvVar6 = *ppvVar5;
  }
  pvVar6 = *local_c;
  param_2 = ppcVar1;
  if (pvVar6 != (void *)0x0) {
    pcVar11 = param_3 + uVar10;
    do {
      if (param_4 < (int)(pcVar11 + (_Size - (int)param_3))) goto LAB_008cf492;
      _memcpy(pcVar11,pvVar6,_Size);
      local_c = local_c + 1;
      *param_2 = pcVar11;
      pvVar6 = *local_c;
      param_2 = param_2 + 1;
      uVar10 = uVar10 + _Size;
      pcVar11 = pcVar11 + _Size;
    } while (pvVar6 != (void *)0x0);
  }
  param_2[1] = (char *)0x0;
  param_1[3] = (char *)ppcVar1;
  uVar4 = 4 - (uVar10 & 3);
  if (uVar4 < 4) {
    uVar10 = uVar10 + uVar4;
  }
  ppcVar8 = (char **)param_1[1];
  ppcVar1 = (char **)(param_3 + uVar10);
  pcVar11 = *ppcVar8;
  ppcVar7 = ppcVar8;
  while (pcVar11 != (char *)0x0) {
    ppcVar7 = ppcVar7 + 1;
    uVar10 = uVar10 + 4;
    pcVar11 = *ppcVar7;
  }
  pcVar11 = *ppcVar8;
  ppcVar7 = ppcVar1;
  while( true ) {
    if (pcVar11 == (char *)0x0) {
      ppcVar7[1] = (char *)0x0;
      param_1[1] = (char *)ppcVar1;
      return param_1;
    }
    pcVar9 = pcVar11;
    do {
      cVar3 = *pcVar9;
      pcVar9 = pcVar9 + 1;
    } while (cVar3 != '\0');
    iVar2 = uVar10 + ((int)pcVar9 - (int)(pcVar11 + 1));
    if (param_4 <= iVar2) break;
    _memcpy(param_3 + uVar10,pcVar11,(int)pcVar9 - (int)(pcVar11 + 1));
    param_3[iVar2] = '\0';
    *ppcVar7 = param_3 + uVar10;
    pcVar11 = ppcVar8[1];
    ppcVar8 = ppcVar8 + 1;
    ppcVar7 = ppcVar7 + 1;
    uVar10 = iVar2 + 1;
  }
LAB_008cf492:
  *param_5 = 0xc;
  return (char **)0x0;
}



char ** FUN_008cf4b0(char **param_1,char **param_2,char *param_3,int param_4)

{
  int iVar1;
  char **ppcVar2;
  char cVar3;
  char *pcVar4;
  uint uVar5;
  uint uVar6;
  char **ppcVar7;
  char **ppcVar8;
  char *pcVar9;
  size_t _Size;
  
  *param_1 = *param_2;
  param_1[1] = param_2[1];
  param_1[2] = param_2[2];
  param_1[3] = param_2[3];
  pcVar4 = *param_1;
  pcVar9 = pcVar4;
  do {
    cVar3 = *pcVar9;
    pcVar9 = pcVar9 + 1;
  } while (cVar3 != '\0');
  _Size = (int)pcVar9 - (int)(pcVar4 + 1);
  if ((int)_Size < param_4) {
    _memcpy(param_3,pcVar4,_Size);
    param_3[_Size] = '\0';
    pcVar4 = param_1[3];
    *param_1 = param_3;
    pcVar9 = pcVar4;
    do {
      cVar3 = *pcVar9;
      pcVar9 = pcVar9 + 1;
    } while (cVar3 != '\0');
    iVar1 = ((int)pcVar9 - (int)(pcVar4 + 1)) + _Size + 1;
    if (iVar1 < param_4) {
      _memcpy(param_3 + _Size + 1,pcVar4,(int)pcVar9 - (int)(pcVar4 + 1));
      uVar5 = iVar1 + 1;
      uVar6 = 4 - (uVar5 & 3);
      param_3[iVar1] = '\0';
      param_1[3] = param_3 + _Size + 1;
      if (uVar6 < 4) {
        uVar5 = uVar5 + uVar6;
      }
      ppcVar8 = (char **)param_1[1];
      ppcVar2 = (char **)(param_3 + uVar5);
      pcVar4 = *ppcVar8;
      ppcVar7 = ppcVar8;
      while (pcVar4 != (char *)0x0) {
        ppcVar7 = ppcVar7 + 1;
        uVar5 = uVar5 + 4;
        pcVar4 = *ppcVar7;
      }
      pcVar4 = *ppcVar8;
      ppcVar7 = ppcVar2;
      while( true ) {
        if (pcVar4 == (char *)0x0) {
          ppcVar7[1] = (char *)0x0;
          param_1[1] = (char *)ppcVar2;
          return param_1;
        }
        pcVar9 = pcVar4;
        do {
          cVar3 = *pcVar9;
          pcVar9 = pcVar9 + 1;
        } while (cVar3 != '\0');
        iVar1 = uVar5 + ((int)pcVar9 - (int)(pcVar4 + 1));
        if (param_4 <= iVar1) break;
        _memcpy(param_3 + uVar5,pcVar4,(int)pcVar9 - (int)(pcVar4 + 1));
        ppcVar8 = ppcVar8 + 1;
        param_3[iVar1] = '\0';
        *ppcVar7 = param_3 + uVar5;
        pcVar4 = *ppcVar8;
        ppcVar7 = ppcVar7 + 1;
        uVar5 = iVar1 + 1;
      }
    }
    return (char **)0x0;
  }
  return (char **)0x0;
}



undefined4 * __thiscall FUN_008cf610(undefined4 *param_1_00,undefined4 *param_1)

{
  void *_Src;
  size_t _Size;
  void *_Dst;
  
  *param_1_00 = *param_1;
  _Src = (void *)param_1[1];
  if (_Src != (void *)0x0) {
    _Size = param_1[2];
    _Dst = _calloc(1,_Size);
    param_1_00[1] = _Dst;
    param_1_00[2] = _Size;
    _memcpy(_Dst,_Src,_Size);
    return param_1_00;
  }
  param_1_00[1] = 0;
  param_1_00[2] = 0;
  return param_1_00;
}



void __fastcall FUN_008cf660(int *param_1)

{
  undefined2 *puVar1;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1 != 0)) {
    FUN_008402e0("..\\..\\src\\common\\sckaddr.cpp",0x1fa,"wxSockAddressImpl::CreateINET",
                 "Is(FAMILY_UNSPEC)","recreating address as different type?");
  }
  *param_1 = 2;
  puVar1 = (undefined2 *)_calloc(1,0x10);
  param_1[1] = (int)puVar1;
  param_1[2] = 0x10;
  *puVar1 = 2;
  return;
}



undefined4 __thiscall FUN_008cf6c0(int *param_1_00,u_long *param_1)

{
  u_long uVar1;
  
  if (*param_1_00 == 2) {
    if (param_1_00[1] != 0) {
      uVar1 = ntohl(*(u_long *)(param_1_00[1] + 4));
      *param_1 = uVar1;
      return 1;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/private/sckaddr.h",0x10d,"wxSockAddressImpl::Get"
                 ,"static_cast<int>(m_family) == AddressFamily<T>::value",
                 "socket address family mismatch");
    return 0;
  }
  return 0;
}



undefined4 __thiscall FUN_008cf720(int *param_1_00,u_long param_1)

{
  int iVar1;
  u_long uVar2;
  
  if (*param_1_00 == 2) {
    iVar1 = param_1_00[1];
    if (iVar1 != 0) {
      uVar2 = htonl(param_1);
      *(u_long *)(iVar1 + 4) = uVar2;
      return 1;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/private/sckaddr.h",0x10d,"wxSockAddressImpl::Get"
                 ,"static_cast<int>(m_family) == AddressFamily<T>::value",
                 "socket address family mismatch");
    return 0;
  }
  return 0;
}



uint __thiscall FUN_008cf780(int *param_1_00,u_short param_1)

{
  int iVar1;
  u_short uVar2;
  uint in_EAX;
  uint uVar3;
  undefined2 extraout_var;
  
  if (*param_1_00 == 2) {
    iVar1 = param_1_00[1];
    if (iVar1 != 0) {
      uVar2 = htons(param_1);
      *(u_short *)(iVar1 + 2) = uVar2;
      return CONCAT31((int3)(CONCAT22(extraout_var,uVar2) >> 8),1);
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar3 = FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/private/sckaddr.h",0x10d,
                         "wxSockAddressImpl::Get",
                         "static_cast<int>(m_family) == AddressFamily<T>::value",
                         "socket address family mismatch");
    return uVar3 & 0xffffff00;
  }
  return in_EAX & 0xffffff00;
}



undefined4 * __fastcall FUN_008cf7e0(undefined4 *param_1)

{
  char cVar1;
  uint uVar2;
  DWORD DVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2968;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1[1] = 0;
  *param_1 = wxSockAddress::vftable;
  local_4 = 0;
  if (DAT_032bdb68 != 0) {
    DVar3 = GetCurrentThreadId();
    if (DVar3 != DAT_032bdb68) goto LAB_008cf83b;
  }
  cVar1 = FUN_008cca20(uVar2);
  if (cVar1 == '\0') {
    FUN_008cd070();
  }
LAB_008cf83b:
  puVar4 = (undefined4 *)operator_new(0xc);
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    *puVar4 = 0;
    puVar4[1] = 0;
    puVar4[2] = 0;
  }
  param_1[2] = puVar4;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_008cf870(undefined4 *param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  DWORD DVar3;
  void *pvVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxSockAddress::vftable;
  local_4 = 0;
  if (DAT_032bdb68 != 0) {
    DVar3 = GetCurrentThreadId();
    if (DVar3 != DAT_032bdb68) goto LAB_008cf8d1;
  }
  cVar1 = FUN_008cca20(uVar2);
  if (cVar1 == '\0') {
    FUN_008cd070();
  }
LAB_008cf8d1:
  pvVar4 = operator_new(0xc);
  if (pvVar4 == (void *)0x0) {
    uVar5 = 0;
  }
  else {
    uVar5 = FUN_008cf610(*(undefined4 *)(param_1 + 8));
  }
  param_1_00[2] = uVar5;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_008cf910(undefined4 *param_1)

{
  int iVar1;
  
  iVar1 = param_1[2];
  *param_1 = wxSockAddress::vftable;
  if (iVar1 != 0) {
    _free(*(void **)(iVar1 + 4));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



void __thiscall FUN_008cf950(int param_1_00,int param_1)

{
  int iVar1;
  void *pvVar2;
  undefined4 uVar3;
  
  iVar1 = *(int *)(param_1_00 + 8);
  if (param_1 != iVar1) {
    if (iVar1 != 0) {
      _free(*(void **)(iVar1 + 4));
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar1);
    }
    pvVar2 = operator_new(0xc);
    if (pvVar2 != (void *)0x0) {
      uVar3 = FUN_008cf610(param_1);
      *(undefined4 *)(param_1_00 + 8) = uVar3;
      return;
    }
    *(undefined4 *)(param_1_00 + 8) = 0;
  }
  return;
}



undefined4 __thiscall FUN_008cf9a0(undefined4 param_1_00,int param_1)

{
  FUN_008cf950(*(undefined4 *)(param_1 + 8));
  return param_1_00;
}



void __fastcall FUN_008cf9c0(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 8);
  _free((void *)puVar1[1]);
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[2] = 0;
  return;
}



undefined4 * __thiscall FUN_008cf9f0(undefined4 *param_1_00,byte param_1)

{
  int iVar1;
  
  iVar1 = param_1_00[2];
  *param_1_00 = wxSockAddress::vftable;
  if (iVar1 != 0) {
    _free(*(void **)(iVar1 + 4));
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  *param_1_00 = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_008cfa40(int param_1)

{
  if (**(int **)(param_1 + 8) == 0) {
    FUN_008cf660();
  }
  FUN_008cf780();
  return;
}



u_short __fastcall FUN_008cfa60(int param_1)

{
  int iVar1;
  u_short uVar2;
  
  if (**(int **)(param_1 + 8) == 0) {
    FUN_008cf660();
  }
  if (**(int **)(param_1 + 8) == 2) {
    iVar1 = (*(int **)(param_1 + 8))[1];
    if (iVar1 != 0) {
      uVar2 = ntohs(*(u_short *)(iVar1 + 2));
      return uVar2;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/private/sckaddr.h",0x10d,"wxSockAddressImpl::Get"
                 ,"static_cast<int>(m_family) == AddressFamily<T>::value",
                 "socket address family mismatch");
    return 0;
  }
  return 0;
}



void __fastcall FUN_008cfac0(int param_1)

{
  if (**(int **)(param_1 + 8) == 0) {
    FUN_008cf660();
  }
  FUN_008cf720(0);
  return;
}



undefined4 * FUN_008cfae0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x30);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_008cf7e0(uVar1);
    puVar2[9] = 7;
    puVar2[8] = 0;
    *(undefined2 *)(puVar2 + 4) = 0;
    puVar2[10] = 0;
    *puVar2 = wxIPV4address::vftable;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4
FUN_008cfb70(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  undefined4 uVar1;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_0081a07d(param_6,param_2,4);
  FUN_0081a07d(param_5,param_2,3);
  FUN_0081a07d(param_4,param_2,2);
  FUN_0081a07d(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,0,local_8,local_c,param_2);
  return param_1;
}



void __thiscall FUN_008cfc00(int *param_1_00,int param_1)

{
  hostent *phVar1;
  int iVar2;
  undefined4 local_418;
  undefined4 local_414 [4];
  undefined local_404 [1024];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_418;
  local_418 = 0;
  if (*param_1_00 == 2) {
    if (param_1_00[1] != 0) {
      phVar1 = gethostbyaddr((char *)(param_1_00[1] + 4),4,2);
      WSAGetLastError();
      if ((phVar1 == (hostent *)0x0) ||
         (iVar2 = FUN_008cf2e0(local_414,phVar1,local_404,0x400,&local_418), iVar2 == 0)) {
        *(undefined4 *)(param_1 + 0x18) = 7;
        *(undefined4 *)(param_1 + 0x14) = 0;
        *(undefined2 *)(param_1 + 4) = 0;
        *(undefined4 *)(param_1 + 0x1c) = 0;
      }
      else {
        FUN_008a4830(param_1,local_414[0],0xffffffff);
      }
      goto LAB_008cfcd9;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/private/sckaddr.h",0x10d,"wxSockAddressImpl::Get"
                 ,"static_cast<int>(m_family) == AddressFamily<T>::value",
                 "socket address family mismatch");
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
LAB_008cfcd9:
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_008cfd00(int param_1_00,undefined4 param_1)

{
  if (**(int **)(param_1_00 + 8) == 0) {
    FUN_008cf660();
  }
  FUN_008cfc00(param_1);
  return param_1;
}



int __thiscall FUN_008cfd30(int param_1_00,int param_1)

{
  char cVar1;
  uint local_28;
  undefined4 local_24;
  undefined local_20 [20];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd29b1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_24 = 0;
  if (**(int **)(param_1_00 + 8) == 0) {
    FUN_008cf660(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  }
  cVar1 = FUN_008cf6c0(&local_28);
  if (cVar1 == '\0') {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    *(undefined4 *)(param_1 + 0x1c) = 0;
    ExceptionList = local_c;
    return param_1;
  }
  FUN_0083fbe0("%u.%u.%u.%u");
  local_4 = 1;
  FUN_008cfb70(param_1,local_20,local_28 >> 0x18,local_28 >> 0x10 & 0xff,local_28 >> 8 & 0xff,
               local_28 & 0xff);
  local_24 = 1;
  local_4 = local_4 & 0xffffff00;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_008cfe20(undefined4 param_1)

{
  FUN_008cfd00(param_1);
  return param_1;
}



undefined4 __thiscall FUN_008cfe40(int param_1_00,undefined4 param_1)

{
  char cVar1;
  int iVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (**(int **)(param_1_00 + 8) == 0) {
    FUN_008cf660(DAT_0323f878 ^ (uint)&stack0xffffffcc);
  }
  cVar1 = FUN_008cf720(param_1);
  if (cVar1 == '\0') {
    FUN_00432156();
    ExceptionList = local_c;
    return 0;
  }
  iVar2 = FUN_008cfe20(local_30);
  local_4 = 0;
  if (param_1_00 + 0xc != iVar2) {
    FID_conflict_assign(iVar2,0,0xffffffff);
  }
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return 1;
}



undefined __fastcall FUN_008cff00(int *param_1)

{
  bool bVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined local_59;
  undefined local_54 [4];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be2532;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  uVar4 = FUN_008cfe20(local_30);
  bVar1 = false;
  local_4 = 0;
  cVar2 = FUN_00855fb0(uVar4,"localhost",uVar3);
  if (cVar2 == '\0') {
    uVar4 = (**(code **)(*param_1 + 0x20))(local_54);
    local_4 = 1;
    bVar1 = true;
    cVar2 = FUN_00855fb0(uVar4,"127.0.0.1",uVar3);
    local_59 = 0;
    if (cVar2 == '\0') goto LAB_008cff93;
  }
  local_59 = 1;
LAB_008cff93:
  if (bVar1) {
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
  }
  _free(pvStack_14);
  if (uStack_18 < 8) {
    ExceptionList = local_c;
    return local_59;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(uStack_2c);
}



void FUN_008d0020(undefined4 param_1,char *param_2)

{
  char cVar1;
  u_short uVar2;
  undefined4 *puVar3;
  servent *psVar4;
  uint local_41c;
  undefined local_418 [4];
  undefined local_414 [8];
  u_short local_40c;
  undefined local_404 [1024];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_41c;
  cVar1 = FUN_00850a20(&local_41c,10);
  if (cVar1 == '\0') {
    puVar3 = (undefined4 *)FUN_0081d19a(local_418);
    psVar4 = getservbyname(*(char **)*puVar3,param_2);
    if (psVar4 != (servent *)0x0) {
      psVar4 = (servent *)FUN_008cf4b0(local_414,psVar4,local_404,0x400);
    }
    thunk_FUN_0043c1dd();
    if (psVar4 == (servent *)0x0) goto LAB_008d00c5;
    uVar2 = ntohs(local_40c);
    local_41c = (uint)uVar2;
  }
  else if (0xffff < local_41c) goto LAB_008d00c5;
  FUN_008cf780(local_41c);
LAB_008d00c5:
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_008d00e0(int *param_1)

{
  int iVar1;
  ulong uVar2;
  hostent *phVar3;
  int iVar4;
  char **local_428;
  undefined local_424 [4];
  undefined local_420 [12];
  undefined4 *local_414;
  undefined local_410 [1024];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd29db;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_428;
  ExceptionList = &local_c;
  if (*param_1 == 2) {
    iVar1 = param_1[1];
    if (iVar1 != 0) {
      FUN_0081d19a(&local_428);
      uVar2 = inet_addr(*local_428);
      *(ulong *)(iVar1 + 4) = uVar2;
      if (uVar2 == 0xffffffff) {
        phVar3 = gethostbyname(*local_428);
        WSAGetLastError();
        if ((phVar3 == (hostent *)0x0) ||
           (iVar4 = FUN_008cf2e0(local_420,phVar3,local_410,0x400,local_424), iVar4 == 0)) {
          local_4 = 0xffffffff;
          thunk_FUN_0043c1dd();
          goto LAB_008d01ef;
        }
        *(undefined4 *)(iVar1 + 4) = *(undefined4 *)*local_414;
      }
      local_4 = 0xffffffff;
      thunk_FUN_0043c1dd();
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/private/sckaddr.h",0x10d,"wxSockAddressImpl::Get"
                 ,"static_cast<int>(m_family) == AddressFamily<T>::value",
                 "socket address family mismatch",DAT_0323f878 ^ (uint)&stack0xfffffbd0);
  }
LAB_008d01ef:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008d0220(int param_1_00,undefined4 param_1)

{
  if (**(int **)(param_1_00 + 8) == 0) {
    FUN_008cf660();
  }
  FUN_008d0020(param_1,&DAT_00d3db18);
  return;
}



undefined __thiscall FUN_008d0250(int param_1_00,int param_1)

{
  undefined uVar1;
  
  if (*(int *)(param_1 + 0x14) != 0) {
    if (param_1_00 + 0xc != param_1) {
      FID_conflict_assign(param_1,0,0xffffffff);
    }
    if (**(int **)(param_1_00 + 8) == 0) {
      FUN_008cf660();
    }
    uVar1 = FUN_008d00e0(param_1);
    return uVar1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\sckaddr.cpp",0x327,"wxIPaddress::Hostname","!name.empty()",
                 "empty host name is invalid");
  }
  return 0;
}



undefined4 * __thiscall FUN_008d02c0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxSocketManager::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_008d02e0(void)

{
  HINSTANCE hInstance;
  
  DestroyWindow(DAT_032be0ec);
  hInstance = (HINSTANCE)FUN_008a65e0();
  UnregisterClassW(L"_wxSocket_Internal_Window_Class",hInstance);
  WSACleanup();
  if (DAT_032bf10c != 0) {
    FUN_0089f290(DAT_032bf10c);
    DAT_032bf10c = 0;
  }
  return;
}



void FUN_008d0320(int param_1)

{
  if (*(int *)(param_1 + 4) != -1) {
    (*DAT_032bf0f0)(*(int *)(param_1 + 4),DAT_032be0ec,*(undefined4 *)(param_1 + 0x44),
                    (-(uint)(*(char *)(param_1 + 0x3c) != '\0') & 0xffffffd5) + 0x33);
  }
  return;
}



void FUN_008d0350(int param_1)

{
  if (*(int *)(param_1 + 4) != -1) {
    (*DAT_032bf0f0)(*(int *)(param_1 + 4),DAT_032be0ec,*(undefined4 *)(param_1 + 0x44),0);
  }
  return;
}



void __fastcall FUN_008d0380(int param_1)

{
  if (DAT_032be0d4 == (int *)0x0) {
    FUN_008cc530();
  }
  (**(code **)(*DAT_032be0d4 + 0x10))(param_1,3);
  closesocket(*(SOCKET *)(param_1 + 4));
  return;
}



undefined4 FUN_008d03b0(void)

{
  int iVar1;
  
  iVar1 = WSAGetLastError();
  if (iVar1 == 0) {
    return 0;
  }
  if (iVar1 != 0x2733) {
    if (iVar1 != 0x2736) {
      return 2;
    }
    return 4;
  }
  return 7;
}



undefined4 * __thiscall FUN_008d03e0(undefined4 *param_1_00,undefined4 param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2a20;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_008cc5f0(param_1);
  local_4 = 0;
  *param_1_00 = wxSocketImplMSW::vftable;
  FUN_0086bd90(uVar2);
  iVar1 = (&DAT_032be0f0)[DAT_032be0e8];
  uVar2 = DAT_032be0e8;
  do {
    if (iVar1 == 0) {
      DAT_032be0e8 = uVar2 + 1 & 0x800003ff;
      (&DAT_032be0f0)[uVar2] = param_1_00;
      if ((int)DAT_032be0e8 < 0) {
        DAT_032be0e8 = (DAT_032be0e8 - 1 | 0xfffffc00) + 1;
      }
      param_1_00[0x11] = uVar2 + 0x400;
LAB_008d0484:
      local_4 = local_4 & 0xffffff00;
      FUN_0086bda0();
      ExceptionList = local_c;
      return param_1_00;
    }
    uVar2 = uVar2 + 1 & 0x800003ff;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffc00) + 1;
    }
    if (uVar2 == DAT_032be0e8) {
      param_1_00[0x11] = 0;
      goto LAB_008d0484;
    }
    iVar1 = (&DAT_032be0f0)[uVar2];
  } while( true );
}



void FUN_008d04b0(void)

{
  return;
}



void __fastcall FUN_008d04c0(undefined4 param_1)

{
  if (DAT_032be0d4 == (int *)0x0) {
    FUN_008cc530();
  }
  (**(code **)(*DAT_032be0d4 + 0xc))(param_1,3);
  return;
}



void __fastcall FUN_008d04f0(undefined4 *param_1)

{
  uint uVar1;
  BOOL BVar2;
  tagMSG local_28;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2a48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  *param_1 = wxSocketImplMSW::vftable;
  local_4 = 0;
  FUN_0086bd90(uVar1);
  if (param_1[0x11] != 0) {
    do {
      BVar2 = PeekMessageW(&local_28,DAT_032be0ec,param_1[0x11],param_1[0x11],1);
    } while (BVar2 != 0);
    *(undefined4 *)(&DAT_032bd0f0 + param_1[0x11] * 4) = 0;
  }
  FUN_0086bda0();
  local_4 = 0xffffffff;
  FUN_008cc670();
  ExceptionList = local_c;
  return;
}



LRESULT FUN_008d0590(HWND param_1,UINT param_2,WPARAM param_3,uint param_4)

{
  char cVar1;
  int iVar2;
  LRESULT LVar3;
  timeval local_11c;
  undefined *local_114;
  fd_set local_110;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2a7b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (0x3ff < param_2 - 0x400) {
    LVar3 = DefWindowProcW(param_1,param_2,param_3,param_4);
    ExceptionList = local_c;
    return LVar3;
  }
  local_114 = &DAT_032bf0f4;
  FUN_0086bd90(DAT_0323f878 ^ (uint)&stack0xfffffed8);
  iVar2 = *(int *)(&DAT_032bd0f0 + param_2 * 4);
  cVar1 = '\0';
  local_4 = 0;
  if (iVar2 == 0) {
    local_4 = 0xffffffff;
    FUN_0086bda0();
    ExceptionList = local_c;
    return 0;
  }
  if (*(WPARAM *)(iVar2 + 4) == 0xffffffff) goto LAB_008d06a7;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(WPARAM *)(iVar2 + 4) != param_3)) {
    FUN_008402e0("..\\..\\src\\msw\\sockmsw.cpp",0x150,"wxSocket_Internal_WinProc",
                 "socket->m_fd == (SOCKET)wParam","mismatch between message and socket?");
  }
  switch(param_4 & 0xffff) {
  case 1:
    local_110.fd_array[0] = *(SOCKET *)(iVar2 + 4);
    local_11c.tv_sec = 0;
    local_11c.tv_usec = 0;
    local_110.fd_count = 1;
    iVar2 = select(local_110.fd_array[0] + 1,&local_110,(fd_set *)0x0,(fd_set *)0x0,&local_11c);
    if (iVar2 == 1) break;
    goto LAB_008d06a7;
  case 2:
    cVar1 = '\x01';
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\msw\\sockmsw.cpp",0x17a,"wxSocket_Internal_WinProc",
                   "Assert failure","unexpected socket notification");
    }
LAB_008d06a7:
    local_4 = 0xffffffff;
    FUN_0086bda0();
    ExceptionList = local_c;
    return 0;
  case 8:
    cVar1 = '\x02';
    break;
  case 0x10:
    cVar1 = (param_4 >> 0x10 != 0) + '\x02';
    break;
  case 0x20:
    cVar1 = '\x03';
  }
  local_4 = 0xffffffff;
  FUN_0086bda0();
  FUN_008cceb0(cVar1);
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_008d07a0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x48);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008d03e0(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_008d0810(undefined4 param_1_00,byte param_1)

{
  FUN_008d04f0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_008d0830(void)

{
  wchar_t *pwVar1;
  wchar_t *pwVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined local_1e8 [4];
  uint local_1e4;
  undefined4 local_1d4;
  uint local_1d0;
  void *local_1cc;
  undefined local_1c4 [4];
  undefined4 local_1c0;
  uint local_1ac;
  void *local_1a8;
  WSADATA local_1a0;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2ab6;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_1e8;
  ExceptionList = &local_c;
  DAT_032be0ec = FUN_008963e0(&DAT_032bf11c,L"_wxSocket_Internal_Window_Class",FUN_008d0590,
                              DAT_0323f878 ^ (uint)&stack0xfffffe10);
  if (DAT_032be0ec != 0) {
    puVar4 = &DAT_032be0f0;
    for (iVar3 = 0x400; iVar3 != 0; iVar3 = iVar3 + -1) {
      *puVar4 = 0;
      puVar4 = puVar4 + 1;
    }
    local_1e4 = local_1e4 & 0xffff0000;
    DAT_032be0e8 = 0;
    local_1d0 = 7;
    local_1d4 = 0;
    pwVar1 = L"wsock32.dll";
    do {
      pwVar2 = pwVar1;
      pwVar1 = pwVar2 + 1;
    } while (*pwVar2 != L'\0');
    FID_conflict_assign(L"wsock32.dll",(int)(pwVar2 + -0x69ee7a) >> 1);
    local_1cc = (void *)0x0;
    local_4 = 0;
    FUN_0089ed30(local_1e8,0x28);
    local_4 = 0xffffffff;
    _free(local_1cc);
    if (7 < local_1d0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_1e4);
    }
    if (DAT_032bf10c != 0) {
      FUN_0043c211("WSAAsyncSelect");
      local_4 = 1;
      DAT_032bf0f0 = FUN_0089f2d0(DAT_032bf10c,local_1c4);
      _free(local_1a8);
      if (7 < local_1ac) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_1c0);
      }
      if (DAT_032bf0f0 != 0) {
        WSAStartup(0x101,&local_1a0);
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined * FUN_008d09d0(void)

{
  return &DAT_032386c8;
}



undefined ** FUN_008d09e0(void)

{
  return &PTR_u_wxURLModule_032386e0;
}



void FUN_008d09f0(void)

{
  wchar_t *pwVar1;
  
  pwVar1 = __wgetenv(L"HTTP_PROXY");
  if (pwVar1 != (wchar_t *)0x0) {
    DAT_032bf128 = 1;
  }
  return;
}



void FUN_008d0a10(void)

{
  if (DAT_032bf124 != (int *)0x0) {
    (**(code **)(*DAT_032bf124 + 4))(1);
    DAT_032bf124 = (int *)0x0;
  }
  return;
}



void __fastcall FUN_008d0a30(undefined4 *param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2b06;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxURL::vftable;
  local_4 = 1;
  if ((*(char *)(param_1 + 0x44) == '\0') && (param_1[0x46] != 0)) {
    FUN_008cca70(uVar2);
    param_1[0x46] = 0;
  }
  piVar1 = (int *)param_1[0x43];
  if ((piVar1 != (int *)0x0) && (piVar1 != DAT_032bf124)) {
    (**(code **)(*piVar1 + 4))(1);
  }
  _free((void *)param_1[0x4f]);
  if (7 < (uint)param_1[0x4e]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x49]);
  }
  param_1[0x4e] = 7;
  param_1[0x4d] = 0;
  *(undefined2 *)(param_1 + 0x49) = 0;
  local_4 = 0xffffffff;
  FUN_008a45c0();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008d0b10(undefined4 param_1_00,byte param_1)

{
  FUN_008d0a30();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_008d0b30(int param_1)

{
  int *piVar1;
  code *pcVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  
  iVar5 = DAT_032bf120;
  if (DAT_032bf120 != 0) {
    do {
      if (*(int *)(param_1 + 0x1c) == *(int *)(iVar5 + 0x20)) {
        iVar3 = FUN_00850760(iVar5 + 0xc);
        if (iVar3 == 0) {
          if ((*(int *)(param_1 + 0xf4) == 0) && (param_1 + 0xe0 != iVar5 + 0x54)) {
            FID_conflict_assign(iVar5 + 0x54,0,0xffffffff);
          }
          *(int *)(param_1 + 0x114) = iVar5;
          pcVar2 = *(code **)(*(int *)(iVar5 + 0x78) + 8);
          if (pcVar2 == (code *)0x0) {
            *(undefined4 *)(param_1 + 0x118) = 0;
            return 1;
          }
          uVar4 = (*pcVar2)();
          *(undefined4 *)(param_1 + 0x118) = uVar4;
          return 1;
        }
      }
      piVar1 = (int *)(iVar5 + 8);
      iVar5 = *piVar1;
    } while (*piVar1 != 0);
  }
  return 0;
}



void FUN_008d0bc0(int param_1)

{
  char cVar1;
  int iVar2;
  void *local_b0 [2];
  uint local_a8;
  int local_98;
  uint local_94;
  void *local_90;
  undefined **local_88 [4];
  undefined2 local_78;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined local_58 [36];
  undefined local_34 [36];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2b64;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_b0;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x14) == 0) {
    if ((DAT_032bf124 != (int *)0x0) &&
       ((**(code **)(*DAT_032bf124 + 0x1c))(DAT_0323f878 ^ (uint)&stack0xffffff48),
       DAT_032bf124 != (int *)0x0)) {
      (**(code **)(*DAT_032bf124 + 4))(1);
      DAT_032bf124 = (int *)0x0;
    }
  }
  else {
    local_a8 = local_a8 & 0xffff0000;
    local_94 = 7;
    local_98 = 0;
    FID_conflict_assign(param_1,0,0xffffffff);
    local_90 = (void *)0x0;
    local_4 = 0;
    iVar2 = FUN_00850910(0x3a,0);
    if (iVar2 == -1) {
      _free(local_90);
      if (7 < local_94) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_a8);
      }
    }
    else {
      FUN_008a48c0(local_34,0,iVar2);
      local_4._0_1_ = 1;
      FUN_008a48c0(local_58,iVar2 + 1,local_98 - iVar2);
      local_4._0_1_ = 2;
      FUN_008cf7e0();
      local_64 = 7;
      local_68 = 0;
      local_78 = 0;
      local_60 = 0;
      local_88[0] = wxIPV4address::vftable;
      local_4._0_1_ = 3;
      cVar1 = FUN_008d0250(local_34);
      if ((cVar1 != '\0') && (cVar1 = FUN_008d0220(local_58), cVar1 != '\0')) {
        if (DAT_032bf124 == (int *)0x0) {
          local_b0[0] = operator_new(0x140);
          local_4._0_1_ = 4;
          if (local_b0[0] == (void *)0x0) {
            DAT_032bf124 = (int *)0x0;
          }
          else {
            DAT_032bf124 = (int *)FUN_008d20f0();
          }
          local_4._0_1_ = 3;
        }
        else {
          (**(code **)(*DAT_032bf124 + 0x1c))();
        }
        (**(code **)(*DAT_032bf124 + 0x24))(local_88,1);
      }
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_008cdbe0();
      FUN_0040159c();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __fastcall FUN_008d0df0(undefined4 *param_1)

{
  int iVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2bb0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00847330(DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_4 = 0;
  *param_1 = wxURLModule::vftable;
  FUN_004325b6(L"wxSocketModule");
  local_4 = CONCAT31(local_4._1_3_,1);
  iVar1 = FUN_0083e9a0(local_30);
  if (iVar1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/module.h",0x48,"wxModule::AddDependency",
                   &DAT_00d3dd24,L"NULL module dependency");
    }
  }
  else {
    FUN_0086a400(iVar1,1);
  }
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_008d0ec0(int param_1_00,int param_1)

{
  uint uVar1;
  wchar_t *pwVar2;
  bool bVar3;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x118) = 0;
  *(undefined4 *)(param_1_00 + 0x11c) = 0;
  if (param_1_00 + 0x120 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  if (DAT_032bf128 != '\0') {
    bVar3 = DAT_032bf124 == 0;
    if (!bVar3) goto LAB_008d0f76;
    pwVar2 = __wgetenv(L"HTTP_PROXY");
    FUN_004325b6(pwVar2);
    local_4 = 0;
    FUN_008d0bc0(local_30,uVar1);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    bVar3 = DAT_032bf124 == 0;
    if (!bVar3) goto LAB_008d0f76;
    DAT_032bf128 = '\0';
  }
  bVar3 = DAT_032bf124 == 0;
LAB_008d0f76:
  *(bool *)(param_1_00 + 0x110) = !bVar3;
  *(int *)(param_1_00 + 0x10c) = DAT_032bf124;
  ExceptionList = local_c;
  return;
}



undefined __fastcall FUN_008d0fa0(int param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  undefined4 uVar4;
  undefined local_78 [4];
  undefined4 local_74;
  uint local_60;
  void *local_5c;
  undefined local_54 [36];
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2be8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x118) == 0) {
    if ((*(byte *)(param_1 + 0x108) & 1) != 0) {
      cVar2 = FUN_008d0b30(DAT_0323f878 ^ (uint)&stack0xffffff80);
      if (cVar2 == '\0') {
        *(undefined4 *)(param_1 + 0x11c) = 2;
        ExceptionList = local_c;
        return 0;
      }
      if ((*(char *)(*(int *)(param_1 + 0x114) + 0x7c) == '\0') ||
         ((*(uint *)(param_1 + 0x108) >> 2 & 1) != 0)) goto LAB_008d1036;
    }
    *(undefined4 *)(param_1 + 0x11c) = 1;
    ExceptionList = local_c;
    return 0;
  }
LAB_008d1036:
  if (*(char *)(param_1 + 0x110) != '\0') {
    iVar3 = FUN_008533d0(local_78,param_1 + 8,&DAT_00d293f4);
    iVar1 = param_1 + 0x120;
    local_4 = 0;
    if (iVar1 != iVar3) {
      FID_conflict_assign(iVar3,0,0xffffffff);
    }
    local_4 = 0xffffffff;
    _free(local_5c);
    if (7 < local_60) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_74);
    }
    if (*(char *)(*(int *)(param_1 + 0x114) + 0x7c) != '\0') {
      uVar4 = FUN_008533d0(local_30,iVar1,&DAT_00d29138);
      local_4 = 1;
      iVar3 = FUN_008531f0(local_54,uVar4,param_1 + 0xbc);
      local_4 = CONCAT31(local_4._1_3_,2);
      if (iVar1 != iVar3) {
        FID_conflict_assign(iVar3,0,0xffffffff);
      }
      FUN_0040159c();
      local_4 = 0xffffffff;
      FUN_0040159c();
    }
    if (*(int *)(param_1 + 0x118) != 0) {
      FUN_008cca70();
    }
    *(undefined4 *)(param_1 + 0x118) = *(undefined4 *)(param_1 + 0x10c);
  }
  *(undefined4 *)(param_1 + 0x11c) = 0;
  ExceptionList = local_c;
  return 1;
}



void __fastcall FUN_008d1150(int param_1)

{
  short *psVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  short *psVar6;
  undefined4 uVar7;
  undefined4 local_d4;
  undefined local_d0 [36];
  undefined local_ac [36];
  undefined auStack_88 [36];
  undefined auStack_64 [4];
  undefined2 local_60;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined **local_40 [4];
  undefined2 local_30;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2c6d;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_d4;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff1c;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x118) == 0) {
    *(undefined4 *)(param_1 + 0x11c) = 2;
    goto LAB_008d1535;
  }
  *(undefined4 *)(param_1 + 0x11c) = 0;
  if ((*(uint *)(param_1 + 0x108) >> 1 & 1) != 0) {
    local_d4 = 0x3a;
    iVar4 = FUN_00420f3f(&local_d4,0,1);
    if (iVar4 == -1) {
      iVar4 = FUN_008a4a70(local_d0,param_1 + 0x98);
      local_4 = 0;
      if (*(int *)(param_1 + 0x118) + 0xa0 != iVar4) {
        FID_conflict_assign(iVar4,0,0xffffffff);
      }
    }
    else {
      uVar7 = FUN_008a48c0(local_ac,0,iVar4);
      local_4 = 1;
      iVar5 = FUN_008a4a70(local_d0,uVar7);
      local_4 = CONCAT31(local_4._1_3_,2);
      if (*(int *)(param_1 + 0x118) + 0xa0 != iVar5) {
        FID_conflict_assign(iVar5,0,0xffffffff);
      }
      FUN_0040159c();
      local_4 = 0xffffffff;
      FUN_0040159c();
      uVar7 = FUN_008a48c0(local_d0,iVar4 + 1,*(int *)(param_1 + 0xac) + 1);
      local_4 = 3;
      iVar4 = FUN_008a4a70(local_ac,uVar7);
      local_4 = CONCAT31(local_4._1_3_,4);
      if (*(int *)(param_1 + 0x118) + 0xc4 != iVar4) {
        FID_conflict_assign(iVar4,0,0xffffffff);
      }
      FUN_0040159c();
    }
    local_4 = 0xffffffff;
    FUN_0040159c();
  }
  FUN_008cf7e0(uVar3);
  local_1c = 7;
  local_20 = 0;
  local_30 = 0;
  local_18 = 0;
  local_40[0] = wxIPV4address::vftable;
  local_4 = 5;
  if ((*(char *)(param_1 + 0x110) == '\0') && (*(char *)(*(int *)(param_1 + 0x114) + 0x7c) != '\0'))
  {
    cVar2 = FUN_008d0250(param_1 + 0xbc);
    if (cVar2 == '\0') {
      *(undefined4 *)(param_1 + 0x11c) = 3;
    }
    else {
      FUN_008d0220(param_1 + 0xe0);
      cVar2 = (**(code **)(**(int **)(param_1 + 0x118) + 0x24))(local_40,1);
      if (cVar2 != '\0') goto LAB_008d13c1;
      *(undefined4 *)(param_1 + 0x11c) = 5;
    }
  }
  else {
LAB_008d13c1:
    local_4c = 7;
    local_50 = 0;
    local_60 = 0;
    local_48 = 0;
    local_4 = CONCAT31(local_4._1_3_,6);
    if (*(char *)(param_1 + 0x110) != '\0') {
      FID_conflict_append(param_1 + 0x120,0,0xffffffff);
    }
    if (*(int *)(param_1 + 0x40) == 0) {
      psVar1 = &DAT_03057848;
      do {
        psVar6 = psVar1;
        psVar1 = psVar6 + 1;
      } while (*psVar6 != 0);
      FUN_00473ccc(&DAT_03057848,(int)(psVar6 + -0x182bc24) >> 1);
    }
    else {
      FID_conflict_append(param_1 + 0x2c,0,0xffffffff);
    }
    if ((*(uint *)(param_1 + 0x108) >> 5 & 1) != 0) {
      uVar7 = FUN_008535a0(local_ac,&DAT_00faece0,param_1 + 0x50);
      local_4._0_1_ = 7;
      FID_conflict_append(uVar7,0,0xffffffff);
      local_4 = CONCAT31(local_4._1_3_,6);
      FUN_0040159c();
    }
    if ((*(uint *)(param_1 + 0x108) >> 6 & 1) != 0) {
      uVar7 = FUN_008535a0(auStack_88,&DAT_030585e0,param_1 + 0x74);
      local_4._0_1_ = 8;
      FID_conflict_append(uVar7,0,0xffffffff);
      local_4 = CONCAT31(local_4._1_3_,6);
      FUN_0040159c();
    }
    iVar4 = (**(code **)(**(int **)(param_1 + 0x118) + 0x38))(auStack_64);
    if (iVar4 != 0) {
      FUN_0040159c();
      local_4 = 0xffffffff;
      FUN_008cdbe0();
      goto LAB_008d1535;
    }
    *(undefined4 *)(param_1 + 0x11c) = 6;
    FUN_0040159c();
  }
  local_4 = 0xffffffff;
  FUN_008cdbe0();
LAB_008d1535:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

CNoTrackObject * __cdecl CProcessLocal<class__AFX_EDIT_STATE>::CreateObject(void)

{
  uint uVar1;
  CNoTrackObject *pCVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x28);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    pCVar2 = (CNoTrackObject *)FUN_008d0df0(uVar1);
    ExceptionList = local_c;
    return pCVar2;
  }
  ExceptionList = local_c;
  return (CNoTrackObject *)0x0;
}



undefined4 * __thiscall FUN_008d15d0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2cb6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_008a62c0(param_1);
  *param_1_00 = wxURL::vftable;
  param_1_00[0x4e] = 7;
  param_1_00[0x4d] = 0;
  *(undefined2 *)(param_1_00 + 0x49) = 0;
  param_1_00[0x4f] = 0;
  local_4 = 1;
  FUN_008d0ec0(param_1);
  FUN_008d0fa0(uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined * FUN_008d1660(void)

{
  return &DAT_032386fc;
}



void FUN_008d1670(void)

{
  undefined4 param_2;
  
  param_2 = 1;
  FUN_008cc390();
  return;
}



undefined4 __fastcall FUN_008d1680(int param_1)

{
  return *(undefined4 *)(param_1 + 0xe8);
}



void __fastcall FUN_008d1690(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x008d1695. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x44))();
  return;
}



undefined4 * FUN_008d16a0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0xf0);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_008d6990(uVar1);
    *puVar2 = wxFileProto::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 * __thiscall FUN_008d1700(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxFileProto::vftable;
  FUN_008d6a40();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_008d1730(undefined4 *param_1)

{
  _free((void *)param_1[0x1c]);
  if (7 < (uint)param_1[0x1b]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x16]);
  }
  param_1[0x1b] = 7;
  param_1[0x1a] = 0;
  *(undefined2 *)(param_1 + 0x16) = 0;
  _free((void *)param_1[0x13]);
  if (7 < (uint)param_1[0x12]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xd]);
  }
  param_1[0x12] = 7;
  param_1[0x11] = 0;
  *(undefined2 *)(param_1 + 0xd) = 0;
  _free((void *)param_1[10]);
  if (7 < (uint)param_1[9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[4]);
  }
  param_1[9] = 7;
  param_1[8] = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



int * __thiscall FUN_008d17e0(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  int *piVar5;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2d04;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  pvVar3 = operator_new(0x24);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    piVar5 = (int *)0x0;
  }
  else {
    uVar4 = FUN_008a4a70(local_30,param_1,uVar2);
    local_4 = CONCAT31(local_4._1_3_,1);
    piVar5 = (int *)FUN_008823c0(uVar4);
  }
  local_4 = 0xffffffff;
  if (pvVar3 != (void *)0x0) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
  }
  cVar1 = (**(code **)(*piVar5 + 0x10))();
  if (cVar1 != '\0') {
    *(undefined4 *)(param_1_00 + 0xe8) = 0;
    ExceptionList = local_c;
    return piVar5;
  }
  *(undefined4 *)(param_1_00 + 0xe8) = 6;
  (**(code **)(*piVar5 + 4))(1);
  ExceptionList = pvStack_10;
  return (int *)0x0;
}



undefined ** FUN_008d1900(void)

{
  return &PTR_u_wxHTTP_03238750;
}



undefined4 __fastcall thunk_FUN_008ccab0(int param_1)

{
  int *piVar1;
  
  piVar1 = *(int **)(param_1 + 8);
  *(undefined *)(param_1 + 0x3c) = 1;
  if ((piVar1 != (int *)0x0) && (piVar1[1] != 0xffffffff)) {
    shutdown(piVar1[1],1);
    if (piVar1[1] != -1) {
      (**(code **)(*piVar1 + 0xc))();
      piVar1[1] = -1;
    }
  }
  *(undefined *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 0x15) = 0;
  return 1;
}



undefined4 * __thiscall FUN_008d1920(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_008d6ea0(param_1);
  param_1_00[8] = param_1;
  *param_1_00 = wxHTTPStream::vftable;
  return param_1_00;
}



void FUN_008d1940(void)

{
  return;
}



undefined4 __fastcall FUN_008d1950(int param_1)

{
  return *(undefined4 *)(param_1 + 0x24);
}



void __fastcall FUN_008d1960(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd33d8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxHTTPStream::vftable;
  local_4 = 0;
  (**(code **)(*(int *)param_1[8] + 0x34))(uVar1);
  local_4 = 0xffffffff;
  FUN_008d6ec0();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008d19c0(undefined4 param_1_00,byte param_1)

{
  FUN_008d1960();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_008d19e0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  
  if (*(uint *)(param_1_00 + 0x24) <= *(uint *)(param_1_00 + 0x28)) {
    *(undefined4 *)(param_1_00 + 0xc) = 1;
    return 0;
  }
  iVar1 = FUN_008d6ed0(param_1,param_2);
  *(int *)(param_1_00 + 0x28) = *(int *)(param_1_00 + 0x28) + iVar1;
  if ((*(int *)(param_1_00 + 0x24) == -1) && (*(int *)(param_1_00 + 0xc) == 3)) {
    *(undefined4 *)(param_1_00 + 0xc) = 1;
  }
  return iVar1;
}



byte * __thiscall FUN_008d1a30(byte *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  byte bVar1;
  uint uVar2;
  int iVar3;
  
  if (param_2 != 0) {
    uVar2 = FUN_00886c70(param_3);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uVar2 & 9) != uVar2)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x303,
                   "wxArgNormalizerNarrowChar<char>::wxArgNormalizerNarrowChar",
                   "(argtype & (wxFormatString::Arg_Char | wxFormatString::Arg_Int)) == argtype",
                   "format specifier doesn\'t match argument type");
    }
    iVar3 = FUN_00886c70(param_3);
    if (iVar3 != 1) {
      *param_1_00 = (byte)param_1;
      return param_1_00;
    }
  }
  if (0x7f < (byte)param_1) {
    bVar1 = FUN_00884ad0(param_1);
    *param_1_00 = bVar1;
    return param_1_00;
  }
  *param_1_00 = (byte)param_1;
  return param_1_00;
}



int ** __thiscall FUN_008d1ad0(int param_1_00,int **param_1)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  
  uVar1 = 0;
  iVar3 = *(int *)(param_1_00 + 0x100);
  if (*(uint *)(param_1_00 + 0x104) != 0) {
    do {
      if (*(int *)(iVar3 + uVar1 * 4) != 0) {
        piVar2 = *(int **)(iVar3 + uVar1 * 4);
        goto LAB_008d1aef;
      }
      uVar1 = uVar1 + 1;
    } while (uVar1 < *(uint *)(param_1_00 + 0x104));
  }
  piVar2 = (int *)0x0;
LAB_008d1aef:
  *param_1 = piVar2;
  param_1[1] = (int *)(param_1_00 + 0x100);
  if (piVar2 == (int *)0x0) {
    return param_1;
  }
  do {
    iVar3 = FUN_00850470(*param_1 + 1);
    if (iVar3 == 0) {
      return param_1;
    }
    piVar2 = (int *)**param_1;
    if (piVar2 == (int *)0x0) {
      piVar2 = (int *)FUN_009e74b0();
    }
    *param_1 = piVar2;
  } while (piVar2 != (int *)0x0);
  return param_1;
}



undefined4 FUN_008d1b40(undefined4 param_1)

{
  FUN_00894270(param_1);
  return param_1;
}



undefined4 FUN_008d1b60(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  char local_5;
  
  FUN_008d1a30(param_4,param_2,2);
  FUN_008d1a30(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,(int)local_5,(int)(char)param_2);
  return param_1;
}



undefined4 FUN_008d1bc0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_008d1a30(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,(int)(char)param_2);
  return param_1;
}



undefined4 * __fastcall FUN_008d1c00(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2d3b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  param_1[1] = 0;
  *param_1 = wxStringTokenizer::vftable;
  param_1[9] = 7;
  param_1[8] = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  param_1[10] = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  uVar2 = FUN_00850350(uVar1);
  param_1[0xe] = uVar2;
  local_4 = CONCAT31(local_4._1_3_,2);
  uVar2 = FUN_00850350();
  param_1[0xe] = uVar2;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0xffffffff;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall
FUN_008d1ca0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,int param_3,
            undefined4 param_4,char param_5)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccd68;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840a00(&param_3,param_1,2);
  FUN_0083e8f0(param_2,param_1,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20();
  FUN_00853980(param_1_00,uVar3,param_2,uVar4);
  iVar1 = param_3;
  if ((param_5 != '\0') && (param_3 != 0)) {
    _free(*(void **)(param_3 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_008d1d80(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0xc,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int FUN_008d1dc0(int param_1,undefined4 param_2)

{
  uint uVar1;
  undefined *puVar2;
  int local_38 [2];
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2d79;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  FUN_008d1ad0(local_38,param_2);
  if (local_38[0] != 0) {
    puVar2 = (undefined *)(local_38[0] + 0x28);
  }
  else {
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    local_14 = (void *)0x0;
    puVar2 = local_30;
    local_4 = 0;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(puVar2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if (local_38[0] == 0) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar1);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_008d1e90(int param_1)

{
  char cVar1;
  int iVar2;
  char **ppcVar3;
  uint uVar4;
  int *piVar5;
  void **ppvVar6;
  char *pcVar7;
  char **ppcVar8;
  uint uVar9;
  char *pcStack_80;
  undefined4 uStack_7c;
  char **ppcStack_78;
  char *pcStack_74;
  void ***pppvStack_70;
  char **local_54;
  void **local_50;
  int local_4c;
  undefined local_48 [24];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2dc8;
  local_10 = DAT_0323f878 ^ (uint)&local_54;
  uVar4 = 0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  ppvVar6 = &local_c;
  local_4c = param_1;
  local_c = ExceptionList;
  if (*(uint *)(param_1 + 0x104) != 0) {
    do {
      if (*(int *)(*(int *)(param_1 + 0x100) + uVar4 * 4) != 0) {
        piVar5 = *(int **)(*(int *)(param_1 + 0x100) + uVar4 * 4);
        goto joined_r0x008d1f07;
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < *(uint *)(param_1 + 0x104));
  }
  piVar5 = (int *)0x0;
joined_r0x008d1f07:
  do {
    do {
      ExceptionList = ppvVar6;
      if (piVar5 == (int *)0x0) {
        pppvStack_70 = (void ***)0x8d20b4;
        _free(local_18);
        if (local_1c < 8) {
          ExceptionList = local_c;
          ___security_check_cookie_4();
          return;
        }
                    // WARNING: Subroutine does not return
        pppvStack_70 = (void ***)&UNK_008d20c8;
        FUN_00a3f6a1();
      }
      pppvStack_70 = (void ***)0x8d1f1b;
      FUN_0081c0f1();
      local_54 = &pcStack_74;
      ppcStack_78 = &pcStack_74;
      local_4._0_1_ = 1;
      uStack_7c = 0x8d1f35;
      FUN_00432231();
      local_54 = &pcStack_80;
      FUN_00432231(&pcStack_80);
      FUN_0088b950(local_48);
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0081b5bc();
      if (DAT_032bd4d4 == 0) {
        DAT_032bd4d4 = FUN_00861440();
      }
      pppvStack_70 = &local_50;
      pcStack_74 = (char *)0x8d1f84;
      FUN_00432413();
      local_4._0_1_ = 2;
      local_54 = (char **)FUN_00850350();
      local_4._0_1_ = 3;
      pppvStack_70 = (void ***)0x8d1fa3;
      FUN_00432299();
      local_4 = CONCAT31(local_4._1_3_,5);
      ppvVar6 = (void **)FUN_00850350();
      if (local_50 != ppvVar6) {
        *(short *)(local_50 + 2) = *(short *)(local_50 + 2) + -1;
        if (*(short *)(local_50 + 2) == 0) {
          if (*(char *)((int)local_50 + 10) != '\0') {
            pppvStack_70 = (void ***)0x8d1fd9;
            _free(*local_50);
          }
                    // WARNING: Subroutine does not return
          pppvStack_70 = (void ***)&UNK_008d1fe2;
          FUN_00a3f6a1();
        }
        local_50 = (void **)FUN_00850350();
      }
      iVar2 = local_4c;
      ppcVar3 = local_54;
      pppvStack_70 = (void ***)*local_54;
      pcVar7 = (char *)pppvStack_70;
      do {
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + 1;
      } while (cVar1 != '\0');
      pcStack_74 = (char *)0x8d2016;
      FUN_008cdb30();
      local_4 = local_4 & 0xffffff00;
      ppcVar8 = (char **)FUN_00850350();
      if (ppcVar3 != ppcVar8) {
        *(short *)(ppcVar3 + 2) = *(short *)(ppcVar3 + 2) + -1;
        if (*(short *)(ppcVar3 + 2) == 0) {
          if (*(char *)((int)ppcVar3 + 10) != '\0') {
            pppvStack_70 = (void ***)0x8d2043;
            _free(*ppcVar3);
          }
                    // WARNING: Subroutine does not return
          pppvStack_70 = (void ***)&UNK_008d204c;
          FUN_00a3f6a1();
        }
        FUN_00850350();
      }
      piVar5 = (int *)*piVar5;
      ppvVar6 = (void **)ExceptionList;
    } while (piVar5 != (int *)0x0);
    pppvStack_70 = (void ***)0x8d2076;
    uVar9 = FUN_00893df0();
    uVar4 = *(uint *)(iVar2 + 0x104);
    uVar9 = uVar9 % uVar4 + 1;
    ppvVar6 = (void **)ExceptionList;
    if (uVar9 < uVar4) {
      iVar2 = *(int *)(iVar2 + 0x100);
      piVar5 = (int *)(iVar2 + uVar9 * 4);
      do {
        if (*piVar5 != 0) {
          piVar5 = *(int **)(iVar2 + uVar9 * 4);
          goto joined_r0x008d1f07;
        }
        uVar9 = uVar9 + 1;
        piVar5 = piVar5 + 1;
      } while (uVar9 < uVar4);
    }
    piVar5 = (int *)0x0;
  } while( true );
}



undefined4 * __fastcall FUN_008d20f0(undefined4 *param_1)

{
  short sVar1;
  size_t sVar2;
  void *pvVar3;
  short *psVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2e22;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008d6990(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  local_4 = 0;
  *param_1 = wxHTTP::vftable;
  sVar2 = FUN_00893ca0(100);
  param_1[0x3d] = sVar2;
  param_1[0x3e] = 0;
  pvVar3 = _calloc(sVar2,4);
  param_1[0x3c] = pvVar3;
  local_4._0_1_ = 1;
  sVar2 = FUN_00893ca0(100);
  param_1[0x41] = sVar2;
  param_1[0x42] = 0;
  pvVar3 = _calloc(sVar2,4);
  param_1[0x40] = pvVar3;
  param_1[0x4c] = 7;
  param_1[0x4b] = 0;
  *(undefined2 *)(param_1 + 0x47) = 0;
  param_1[0x4d] = 0;
  param_1[0x45] = 0;
  *(undefined *)(param_1 + 0x44) = 0;
  *(undefined *)((int)param_1 + 0x111) = 0;
  local_4 = CONCAT31(local_4._1_3_,3);
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    FUN_00432156();
  }
  else {
    psVar4 = (short *)PTR_DAT_03236318;
    do {
      sVar1 = *psVar4;
      psVar4 = psVar4 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(PTR_DAT_03236318,(int)psVar4 - (int)(PTR_DAT_03236318 + 2) >> 1);
  }
  param_1[0x4f] = 0;
  FUN_008cc270(8);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_008d2200(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2e72;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxHTTP::vftable;
  local_4 = 3;
  FUN_00893cf0(param_1[0x41],param_1[0x40],FUN_008c64b0,uVar1);
  param_1[0x42] = 0;
  if ((int *)param_1[0x45] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x45] + 4))(1);
  }
  _free((void *)param_1[0x4d]);
  if (7 < (uint)param_1[0x4c]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x47]);
  }
  param_1[0x4c] = 7;
  param_1[0x4b] = 0;
  *(undefined2 *)(param_1 + 0x47) = 0;
  local_4._0_1_ = 1;
  FUN_00893cf0(param_1[0x41],param_1[0x40],FUN_008c64b0,uVar1);
  param_1[0x42] = 0;
  _free((void *)param_1[0x40]);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00893cf0(param_1[0x3d],param_1[0x3c],FUN_008c64b0);
  param_1[0x3e] = 0;
  _free((void *)param_1[0x3c]);
  local_4 = 0xffffffff;
  FUN_008d6a40();
  ExceptionList = local_c;
  return;
}



undefined4 FUN_008d2330(undefined4 param_1)

{
  uint uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_004325b6(L"Content-Type");
  local_4 = 0;
  FUN_008d1dc0(param_1,local_30);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_008d23c0(int param_1)

{
  short sVar1;
  int *piVar2;
  short *psVar3;
  int iVar4;
  uint uVar5;
  ushort *puVar6;
  undefined auStack_bc [4];
  undefined4 uStack_b8;
  undefined **ppuStack_b4;
  undefined *puStack_b0;
  undefined2 *puStack_ac;
  uint local_90;
  undefined **local_8c;
  undefined local_88 [4];
  uint local_84;
  undefined4 local_74;
  uint local_70;
  void *local_6c;
  undefined local_64 [20];
  undefined4 local_50;
  int local_4c [2];
  char local_44;
  int local_38;
  uint local_30;
  uint local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2f20;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_90;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_38 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_50 = 1;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 1;
  puStack_ac = (undefined2 *)0x8d2461;
  FUN_0081c0f1();
  local_4._0_1_ = 2;
  FUN_008854f0();
  puStack_ac = (undefined2 *)param_1;
  puStack_b0 = (undefined *)0x8d2479;
  FUN_00853980();
  local_4._0_1_ = 1;
  FUN_0081b5bc();
  puStack_ac = (undefined2 *)0x8d249b;
  FUN_0081c0f1();
  local_8c = &puStack_b0;
  ppuStack_b4 = &puStack_b0;
  local_4._0_1_ = 3;
  uStack_b8 = 0x8d24b4;
  FUN_00432231();
  local_8c = (undefined **)auStack_bc;
  FUN_00432231(auStack_bc);
  FUN_0088b950(local_4c);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0081b5bc();
  uVar5 = local_20;
  local_90 = local_20;
  puStack_ac = (undefined2 *)0x8d2505;
  piVar2 = (int *)FUN_00432231();
  iVar4 = *piVar2;
  if (*(uint *)(iVar4 + 0x18) < 8) {
    iVar4 = iVar4 + 4;
  }
  else {
    iVar4 = *(int *)(iVar4 + 4);
  }
  puVar6 = (ushort *)(iVar4 + piVar2[1] * 2);
  if ((local_44 != '\0') && (uVar5 = local_90, local_4c[0] != 0)) {
    puStack_ac = (undefined2 *)0x8d2532;
    _free(*(void **)(local_4c[0] + 0x1c));
    if (*(uint *)(local_4c[0] + 0x18) < 8) {
      *(undefined4 *)(local_4c[0] + 0x18) = 7;
      *(undefined4 *)(local_4c[0] + 0x14) = 0;
      *(undefined2 *)(local_4c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
      puStack_ac = (undefined2 *)&UNK_008d255d;
      FUN_00a3f6a1();
    }
                    // WARNING: Subroutine does not return
    puStack_ac = (undefined2 *)&UNK_008d2544;
    FUN_00a3f6a1();
  }
  if (2 < uVar5) {
    local_8c = (undefined **)(uVar5 / 3);
    do {
      puStack_ac = (undefined2 *)0x8d2588;
      FUN_0081c0f1();
      puStack_ac = (undefined2 *)
                   (uint)(byte)PTR_s_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef_032387c0[*puVar6 >> 2 & 0x3f];
      puStack_b0 = local_64;
      ppuStack_b4 = (undefined **)local_88;
      local_4._0_1_ = 4;
      uStack_b8 = 0x8d25cc;
      puStack_b0 = (undefined *)FUN_008d1b60();
      puStack_ac = (undefined2 *)0x0;
      local_4._0_1_ = 5;
      ppuStack_b4 = (undefined **)0x8d25e2;
      FID_conflict_append();
      puStack_ac = (undefined2 *)0x8d25ec;
      _free(local_6c);
      if (7 < local_70) {
                    // WARNING: Subroutine does not return
        puStack_ac = (undefined2 *)&UNK_008d2604;
        FUN_00a3f6a1();
      }
      local_70 = 7;
      local_74 = 0;
      local_84 = local_84 & 0xffff0000;
      local_4._0_1_ = 1;
      FUN_0081b5bc();
      puStack_ac = (undefined2 *)0x8d2639;
      FUN_0081c0f1();
      puStack_ac = (undefined2 *)
                   (uint)(byte)PTR_s_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef_032387c0
                               [(puVar6[1] & 0xf) * 4 | puVar6[2] >> 6 & 3];
      puStack_b0 = local_64;
      ppuStack_b4 = (undefined **)local_88;
      local_4._0_1_ = 6;
      uStack_b8 = 0x8d267c;
      puStack_b0 = (undefined *)FUN_008d1b60();
      puStack_ac = (undefined2 *)0x0;
      local_4._0_1_ = 7;
      ppuStack_b4 = (undefined **)0x8d2692;
      FID_conflict_append();
      puStack_ac = (undefined2 *)0x8d269c;
      _free(local_6c);
      if (7 < local_70) {
                    // WARNING: Subroutine does not return
        puStack_ac = (undefined2 *)&UNK_008d26af;
        FUN_00a3f6a1();
      }
      local_70 = 7;
      local_74 = 0;
      local_84 = local_84 & 0xffff0000;
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      uVar5 = local_90 - 3;
      puVar6 = puVar6 + 3;
      local_8c = (undefined **)((int)local_8c - 1);
      local_90 = uVar5;
    } while (local_8c != (undefined **)0x0);
    local_8c = (undefined **)0x0;
  }
  if (uVar5 != 0) {
    puStack_ac = (undefined2 *)0x8d2703;
    FUN_0081c0f1();
    puStack_ac = (undefined2 *)local_64;
    puStack_b0 = local_88;
    local_4._0_1_ = 8;
    ppuStack_b4 = (undefined **)0x8d272e;
    puStack_b0 = (undefined *)FUN_008d1bc0();
    puStack_ac = (undefined2 *)0x0;
    local_4._0_1_ = 9;
    ppuStack_b4 = (undefined **)0x8d2744;
    FID_conflict_append();
    puStack_ac = (undefined2 *)0x8d274e;
    _free(local_6c);
    if (7 < local_70) {
                    // WARNING: Subroutine does not return
      puStack_ac = (undefined2 *)&UNK_008d2762;
      FUN_00a3f6a1();
    }
    local_84 = local_84 & 0xffff0000;
    local_70 = 7;
    local_74 = 0;
    local_4._0_1_ = 1;
    FUN_0081b5bc();
    if (uVar5 == 1) {
      puStack_ac = (undefined2 *)0x8d279c;
      FUN_0081c0f1();
      puStack_ac = (undefined2 *)local_64;
      puStack_b0 = local_88;
      local_4._0_1_ = 10;
      ppuStack_b4 = (undefined **)0x8d27c6;
      puStack_b0 = (undefined *)FUN_008d1bc0();
      puStack_ac = (undefined2 *)0x0;
      local_4 = CONCAT31(local_4._1_3_,0xb);
      ppuStack_b4 = (undefined **)0x8d27dc;
      FID_conflict_append();
      puStack_ac = (undefined2 *)0x8d27e6;
      _free(local_6c);
      if (7 < local_70) {
                    // WARNING: Subroutine does not return
        puStack_ac = (undefined2 *)&UNK_008d27fa;
        FUN_00a3f6a1();
      }
    }
    else {
      puStack_ac = (undefined2 *)0x8d2813;
      FUN_0081c0f1();
      puStack_ac = (undefined2 *)
                   (uint)(byte)PTR_s_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef_032387c0
                               [(*puVar6 & 3) << 4 | puVar6[1] >> 4 & 0xf];
      puStack_b0 = local_64;
      ppuStack_b4 = (undefined **)local_88;
      local_4._0_1_ = 0xc;
      uStack_b8 = 0x8d2854;
      puStack_b0 = (undefined *)FUN_008d1b60();
      puStack_ac = (undefined2 *)0x0;
      local_4 = CONCAT31(local_4._1_3_,0xd);
      ppuStack_b4 = (undefined **)0x8d286a;
      FID_conflict_append();
      puStack_ac = (undefined2 *)0x8d2874;
      _free(local_6c);
      if (7 < local_70) {
                    // WARNING: Subroutine does not return
        puStack_ac = (undefined2 *)&UNK_008d2888;
        FUN_00a3f6a1();
      }
    }
    local_84 = local_84 & 0xffff0000;
    local_70 = 7;
    local_74 = 0;
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_0081b5bc();
    psVar3 = &DAT_00d1fcac;
    do {
      sVar1 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar1 != 0);
    puStack_ac = &DAT_00d1fcac;
    puStack_b0 = (undefined *)0x8d28d3;
    FUN_00473ccc();
  }
  puStack_ac = (undefined2 *)0x8d28e0;
  _free(local_18);
  if (local_1c < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  puStack_ac = (undefined2 *)&UNK_008d28f7;
  FUN_00a3f6a1();
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x140);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_008d20f0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_008d29a0(undefined4 param_1_00,byte param_1)

{
  FUN_008d2200();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_008d29c0(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  int local_8 [2];
  
  if (*(char *)(param_1_00 + 0x110) != '\0') {
    FUN_00893cf0(*(undefined4 *)(param_1_00 + 0x104),*(undefined4 *)(param_1_00 + 0x100),
                 FUN_008c64b0);
    *(undefined4 *)(param_1_00 + 0x108) = 0;
    *(undefined *)(param_1_00 + 0x110) = 0;
  }
  FUN_008d1ad0(local_8,param_1);
  if (local_8[0] == 0) {
    iVar1 = FUN_008c8430(param_1);
    if (iVar1 != param_2) {
      FID_conflict_assign(param_2,0,0xffffffff);
    }
  }
  else if (local_8[0] + 0x28 != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
    return;
  }
  return;
}



void __fastcall FUN_008d2a60(undefined *param_1)

{
  int iVar1;
  undefined *puVar2;
  int iVar3;
  undefined *local_1cc;
  undefined auStack_1b0 [3];
  char local_1ad;
  undefined **local_1ac;
  undefined *local_1a8;
  undefined local_1a4 [4];
  uint local_1a0;
  undefined4 local_190;
  uint local_18c;
  void *local_188;
  undefined local_180 [4];
  uint local_17c;
  undefined4 local_16c;
  uint local_168;
  void *local_164;
  undefined local_15c [4];
  uint local_158;
  undefined4 local_148;
  uint local_144;
  void *local_140;
  undefined local_138 [4];
  uint local_134;
  undefined4 local_124;
  uint local_120;
  void *local_11c;
  undefined local_114 [4];
  uint local_110;
  undefined4 local_100;
  uint local_fc;
  void *local_f8;
  undefined local_f0 [4];
  uint local_ec;
  int local_dc;
  uint local_d8;
  void *local_d4;
  undefined local_cc [4];
  uint local_c8;
  undefined4 local_b8;
  uint local_b4;
  void *local_b0;
  undefined local_a8 [24];
  uint local_90;
  void *local_8c;
  undefined local_84 [24];
  uint local_6c;
  void *local_68;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2ff2;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_1b0;
  ExceptionList = &local_c;
  local_d8 = 7;
  local_dc = 0;
  local_ec = local_ec & 0xffff0000;
  local_d4 = (void *)0x0;
  local_4 = 0;
  local_1a8 = param_1;
  FUN_008d1c00();
  local_1cc = *(undefined **)(param_1 + 0x100);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00893cf0(*(undefined4 *)(param_1 + 0x104));
  *(undefined4 *)(param_1 + 0x108) = 0;
  FUN_00893cf0(*(undefined4 *)(param_1 + 0xf4),*(undefined4 *)(param_1 + 0xf0),FUN_008c64b0);
  *(undefined4 *)(param_1 + 0xf8) = 0;
  param_1[0x110] = 1;
  iVar1 = FUN_008d6c10(param_1,local_f0);
  *(int *)(param_1 + 0xe8) = iVar1;
  do {
    if (iVar1 != 0) {
      local_4 = local_4 & 0xffffff00;
      FUN_0083fa70();
      local_1cc = (undefined *)0x8d306f;
      _free(local_d4);
      if (7 < local_d8) {
                    // WARNING: Subroutine does not return
        local_1cc = &UNK_008d3089;
        FUN_00a3f6a1();
      }
LAB_008d30cf:
      ExceptionList = local_c;
      ___security_check_cookie_4();
      return;
    }
    if (local_dc == 0) {
      local_4 = local_4 & 0xffffff00;
      FUN_0083fa70();
      local_1cc = (undefined *)0x8d30b0;
      _free(local_d4);
      if (7 < local_d8) {
                    // WARNING: Subroutine does not return
        local_1cc = &UNK_008d30ca;
        FUN_00a3f6a1();
      }
      goto LAB_008d30cf;
    }
    local_1ac = &local_1cc;
    local_1cc = (undefined *)0x3a;
    FUN_00852890(local_84);
    local_4._0_1_ = 2;
    local_1cc = (undefined *)0x8d2b95;
    FUN_0043c211();
    local_4._0_1_ = 3;
    local_1cc = (undefined *)0x8d2bae;
    iVar1 = FUN_00850470();
    local_1ad = iVar1 == 0;
    local_4._0_1_ = 2;
    local_1cc = (undefined *)0x8d2bc7;
    _free(local_188);
    if (7 < local_18c) {
                    // WARNING: Subroutine does not return
      local_1cc = &UNK_008d2bdf;
      FUN_00a3f6a1();
    }
    local_1ac = (undefined **)&stack0xfffffe38;
    if (local_1ad == '\0') {
      local_1cc = local_a8;
      FUN_008529d0();
      local_1cc = local_1a4;
      local_4._0_1_ = 0x12;
      iVar1 = FUN_00852de0();
      local_4 = CONCAT31(local_4._1_3_,0x13);
      local_1cc = (undefined *)0x8d2f90;
      iVar3 = FUN_008c8430();
      if (iVar3 != iVar1) {
        local_1cc = (undefined *)0x0;
        FID_conflict_assign(iVar1);
      }
      local_1cc = (undefined *)0x8d2fa9;
      _free(local_188);
      if (7 < local_18c) {
                    // WARNING: Subroutine does not return
        local_1cc = &UNK_008d2fbc;
        FUN_00a3f6a1();
      }
      local_18c = 7;
      local_190 = 0;
      local_1a0 = local_1a0 & 0xffff0000;
      local_1cc = (undefined *)0x8d2fdf;
      _free(local_8c);
    }
    else {
      local_1cc = local_180;
      local_1ac = (undefined **)&stack0xfffffe38;
      FUN_008529d0();
      local_1cc = local_15c;
      local_4._0_1_ = 4;
      FUN_00852de0();
      local_1ac = &local_1cc;
      local_1cc = (undefined *)0x3d;
      local_4._0_1_ = 5;
      FUN_00852890(local_a8);
      local_1cc = (undefined *)0x8d2c52;
      _free(local_140);
      if (7 < local_144) {
                    // WARNING: Subroutine does not return
        local_1cc = &UNK_008d2c68;
        FUN_00a3f6a1();
      }
      local_144 = 7;
      local_148 = 0;
      local_158 = local_158 & 0xffff0000;
      local_4._0_1_ = 8;
      local_1cc = (undefined *)0x8d2c93;
      _free(local_164);
      if (7 < local_168) {
                    // WARNING: Subroutine does not return
        local_1cc = &UNK_008d2ca6;
        FUN_00a3f6a1();
      }
      local_1ac = (undefined **)&stack0xfffffe38;
      local_1cc = local_1a4;
      local_17c = local_17c & 0xffff0000;
      local_168 = 7;
      local_16c = 0;
      FUN_008529d0();
      local_1cc = local_138;
      local_4._0_1_ = 9;
      FUN_00852de0();
      local_1ac = (undefined **)&stack0xfffffe38;
      local_1cc = local_114;
      local_4._0_1_ = 10;
      FUN_008529d0();
      local_1ac = &local_1cc;
      local_1cc = (undefined *)0x3b;
      local_4._0_1_ = 0xb;
      FUN_00852890(local_cc);
      local_1cc = (undefined *)0x8d2d49;
      _free(local_f8);
      if (7 < local_fc) {
                    // WARNING: Subroutine does not return
        local_1cc = &UNK_008d2d62;
        FUN_00a3f6a1();
      }
      local_fc = 7;
      local_100 = 0;
      local_110 = local_110 & 0xffff0000;
      local_1cc = (undefined *)0x8d2d8e;
      _free(local_11c);
      if (7 < local_120) {
                    // WARNING: Subroutine does not return
        local_1cc = &UNK_008d2da7;
        FUN_00a3f6a1();
      }
      local_120 = 7;
      local_124 = 0;
      local_134 = local_134 & 0xffff0000;
      local_4 = CONCAT31(local_4._1_3_,0xf);
      local_1cc = (undefined *)0x8d2dd8;
      _free(local_188);
      if (7 < local_18c) {
                    // WARNING: Subroutine does not return
        local_1cc = &UNK_008d2deb;
        FUN_00a3f6a1();
      }
      local_1a0 = local_1a0 & 0xffff0000;
      local_18c = 7;
      local_190 = 0;
      local_1cc = (undefined *)0x8d2e14;
      puVar2 = (undefined *)FUN_008c8430();
      if (puVar2 != local_cc) {
        local_1cc = (undefined *)0x0;
        FID_conflict_assign(local_cc);
      }
      local_1ac = (undefined **)&stack0xfffffe38;
      local_1cc = local_15c;
      FUN_008529d0();
      local_1cc = local_180;
      local_4._0_1_ = 0x10;
      iVar1 = FUN_00852de0();
      local_4 = CONCAT31(local_4._1_3_,0x11);
      local_1cc = (undefined *)0x8d2e79;
      iVar3 = FUN_008c8430();
      if (iVar3 != iVar1) {
        local_1cc = (undefined *)0x0;
        FID_conflict_assign(iVar1);
      }
      local_1cc = (undefined *)0x8d2e92;
      _free(local_164);
      if (7 < local_168) {
                    // WARNING: Subroutine does not return
        local_1cc = &UNK_008d2ea5;
        FUN_00a3f6a1();
      }
      local_168 = 7;
      local_16c = 0;
      local_17c = local_17c & 0xffff0000;
      local_1cc = (undefined *)0x8d2ec9;
      _free(local_140);
      if (7 < local_144) {
                    // WARNING: Subroutine does not return
        local_1cc = &UNK_008d2edf;
        FUN_00a3f6a1();
      }
      local_1cc = (undefined *)0x8d2eef;
      _free(local_b0);
      if (7 < local_b4) {
                    // WARNING: Subroutine does not return
        local_1cc = &UNK_008d2f08;
        FUN_00a3f6a1();
      }
      local_b4 = 7;
      local_b8 = 0;
      local_c8 = local_c8 & 0xffff0000;
      local_1cc = (undefined *)0x8d2f30;
      _free(local_8c);
    }
    if (7 < local_90) {
                    // WARNING: Subroutine does not return
      local_1cc = &UNK_008d2ff8;
      FUN_00a3f6a1();
    }
    local_4._1_3_ = (undefined3)(local_4 >> 8);
    local_4 = CONCAT31(local_4._1_3_,1);
    local_1cc = (undefined *)0x8d3010;
    _free(local_68);
    puVar2 = local_1a8;
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      local_1cc = &UNK_008d3029;
      FUN_00a3f6a1();
    }
    local_1cc = local_1a8;
    iVar1 = FUN_008d6c10();
    *(int *)(puVar2 + 0xe8) = iVar1;
  } while( true );
}



void __thiscall FUN_008d3100(int *param_1_00,undefined4 param_1,uint param_2)

{
  char cVar1;
  undefined4 *puVar2;
  short sVar3;
  undefined4 local_84;
  undefined4 *local_80;
  undefined local_7c [4];
  undefined4 local_78;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3043;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_84;
  ExceptionList = &local_c;
  local_84 = param_1;
  if (param_1_00[0x45] != 0) {
    if ((int *)param_1_00[0x45] != (int *)0x0) {
      (**(code **)(*(int *)param_1_00[0x45] + 4))(1,DAT_0323f878 ^ (uint)&stack0xffffff6c);
      param_1_00[0x45] = 0;
    }
    (**(code **)(*param_1_00 + 0x1c))();
  }
  puVar2 = (undefined4 *)operator_new(0x30);
  local_4 = 0;
  local_80 = puVar2;
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_008cf7e0();
    puVar2[9] = 7;
    puVar2[8] = 0;
    *(undefined2 *)(puVar2 + 4) = 0;
    puVar2[10] = 0;
    *puVar2 = wxIPV4address::vftable;
  }
  local_4 = 0xffffffff;
  param_1_00[0x45] = (int)puVar2;
  cVar1 = FUN_008d0250(param_1);
  if (cVar1 == '\0') {
    if ((int *)param_1_00[0x45] != (int *)0x0) {
      (**(code **)(*(int *)param_1_00[0x45] + 4))(1);
      param_1_00[0x45] = 0;
    }
    param_1_00[0x3a] = 1;
  }
  else {
    sVar3 = (short)param_2;
    if (sVar3 == 0) {
      FUN_004325b6(L"http");
      local_4 = 1;
      cVar1 = FUN_008d0220(local_58);
      local_4 = 0xffffffff;
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_54);
      }
      if (cVar1 == '\0') {
        FUN_008cfa40(0x50);
      }
    }
    else {
      FUN_008cfa40(param_2);
    }
    local_30 = (uint)local_30._2_2_ << 0x10;
    local_1c = 7;
    local_20 = 0;
    FID_conflict_assign(local_84,0,0xffffffff);
    local_18 = (void *)0x0;
    local_4 = 2;
    if ((sVar3 != 0) && (sVar3 != 0x50)) {
      param_2 = param_2 & 0xffff;
      FUN_0083fd10(&DAT_00d293f4);
      FUN_008758a0(param_2);
    }
    FUN_004325b6(L"Host");
    local_4 = CONCAT31(local_4._1_3_,3);
    FUN_008d29c0(local_7c,local_34);
    _free(local_60);
    if (7 < local_64) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_78);
    }
    param_1_00[0x3a] = 0;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008d3370(int *param_1_00,int *param_1)

{
  char cVar1;
  ushort uVar2;
  int iVar3;
  undefined **ppuVar4;
  uint uVar5;
  undefined auStack_58 [4];
  undefined4 uStack_54;
  uint uStack_40;
  void *pvStack_3c;
  undefined auStack_34 [4];
  undefined4 uStack_30;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3090;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_58;
  ExceptionList = &local_c;
  if ((int *)param_1_00[0x45] != (int *)0x0) {
    (**(code **)(*(int *)param_1_00[0x45] + 4))(1,DAT_0323f878 ^ (uint)&stack0xffffff98);
    (**(code **)(*param_1_00 + 0x1c))();
  }
  iVar3 = (**(code **)(*param_1 + 0x18))();
  param_1_00[0x45] = iVar3;
  ppuVar4 = (undefined **)(**(code **)*param_1)();
  if (ppuVar4 != &PTR_u_wxIPV4address_0323861c) {
    if (ppuVar4[3] != (undefined *)0x0) {
      cVar1 = FUN_0048a047(&PTR_u_wxIPV4address_0323861c);
      if (cVar1 != '\0') goto LAB_008d3419;
    }
    if (ppuVar4[4] == (undefined *)0x0) goto LAB_008d34c0;
    cVar1 = FUN_0048a047(&PTR_u_wxIPV4address_0323861c);
    if (cVar1 == '\0') goto LAB_008d34c0;
  }
LAB_008d3419:
  FUN_008d1d80(auStack_34);
  uStack_4 = 0;
  uVar2 = FUN_008cfa60();
  uVar5 = (uint)uVar2;
  if ((uVar2 != 0) && (uVar2 != 0x50)) {
    FUN_0083fd10(&DAT_00d293f4);
    FUN_008758a0(uVar5);
  }
  FUN_004325b6(L"Host");
  uStack_4 = CONCAT31(uStack_4._1_3_,1);
  FUN_008d29c0(auStack_58,auStack_34);
  _free(pvStack_3c);
  if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_54);
  }
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_30);
  }
LAB_008d34c0:
  param_1_00[0x3a] = 0;
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008d34f0(int param_1_00,undefined4 *param_1,int param_2)

{
  char cVar1;
  short sVar2;
  int iVar3;
  DWORD DVar4;
  void **ppvVar5;
  char *pcVar6;
  short *psVar7;
  undefined4 ***pppuVar8;
  undefined4 uVar9;
  undefined4 *puVar10;
  undefined4 ****ppppuStack_1a8;
  void ***pppvStack_1a4;
  void **local_188;
  char **local_184;
  undefined local_180 [4];
  undefined4 ****local_17c [4];
  undefined4 local_16c;
  uint local_168;
  void *local_164;
  undefined4 **local_15c;
  uint local_158;
  undefined4 local_148;
  uint local_144;
  void *local_140;
  undefined4 *local_138 [2];
  undefined4 ****local_130;
  undefined4 local_12c;
  undefined4 *local_128 [9];
  undefined local_104 [20];
  undefined4 **local_f0 [9];
  undefined4 **local_cc;
  undefined4 local_c8;
  undefined4 local_b8;
  uint local_b4;
  void *local_b0;
  undefined4 **local_a8;
  undefined4 local_a4;
  undefined4 local_94;
  undefined4 local_90;
  undefined4 local_8c;
  undefined4 local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd31ba;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_188;
  ExceptionList = &local_c;
  local_138[0] = param_1;
  if (param_2 == 0) {
    local_188 = (void **)&DAT_00d3e024;
  }
  else {
    if (param_2 != 1) goto LAB_008d3e9f;
    local_188 = (void **)&DAT_00d3e02c;
    pppvStack_1a4 = (void ***)0x8d3568;
    FUN_004325b6();
    pppvStack_1a4 = &local_15c;
    local_4 = 0;
    ppppuStack_1a8 = (undefined4 ****)0x8d3580;
    iVar3 = FUN_008d1dc0();
    iVar3 = *(int *)(iVar3 + 0x14);
    pppvStack_1a4 = (void ***)0x8d3590;
    _free(local_140);
    if (7 < local_144) {
                    // WARNING: Subroutine does not return
      pppvStack_1a4 = (void ***)&UNK_008d35a8;
      FUN_00a3f6a1();
    }
    local_144 = 7;
    local_148 = 0;
    local_158 = local_158 & 0xffff0000;
    local_4 = 0xffffffff;
    pppvStack_1a4 = (void ***)0x8d35d3;
    _free(local_164);
    if (7 < local_168) {
                    // WARNING: Subroutine does not return
      pppvStack_1a4 = (void ***)&UNK_008d35e6;
      FUN_00a3f6a1();
    }
    local_168 = 7;
    local_16c = 0;
    local_17c[0] = (undefined4 ****)((uint)local_17c[0] & 0xffff0000);
    if (iVar3 == 0) {
      pppvStack_1a4 = (void ***)0x8d3615;
      FUN_0081c0f1();
      local_4 = 1;
      pppvStack_1a4 = (void ***)0x8d362e;
      FUN_004325b6();
      pppvStack_1a4 = (void ***)local_104;
      ppppuStack_1a8 = (undefined4 ****)local_f0;
      local_4._0_1_ = 2;
      FUN_00841f90();
      pppvStack_1a4 = (void ***)local_128;
      local_4 = CONCAT31(local_4._1_3_,3);
      ppppuStack_1a8 = (undefined4 ****)0x8d366a;
      FUN_008d29c0();
      FUN_0040159c();
      FUN_0040159c();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  *(undefined4 *)(param_1_00 + 0x13c) = 0;
  pppvStack_1a4 = (void ***)0x8d36b9;
  FUN_004325b6();
  pppvStack_1a4 = &local_15c;
  local_4 = 4;
  ppppuStack_1a8 = (undefined4 ****)0x8d36d5;
  iVar3 = FUN_008d1dc0();
  iVar3 = *(int *)(iVar3 + 0x14);
  pppvStack_1a4 = (void ***)0x8d36e5;
  _free(local_140);
  if (7 < local_144) {
                    // WARNING: Subroutine does not return
    pppvStack_1a4 = (void ***)&UNK_008d36f8;
    FUN_00a3f6a1();
  }
  local_144 = 7;
  local_148 = 0;
  local_158 = local_158 & 0xffff0000;
  local_4 = 0xffffffff;
  pppvStack_1a4 = (void ***)0x8d3723;
  _free(local_164);
  if (7 < local_168) {
                    // WARNING: Subroutine does not return
    pppvStack_1a4 = (void ***)&UNK_008d3736;
    FUN_00a3f6a1();
  }
  if (iVar3 == 0) {
    pppvStack_1a4 = (void ***)0x8d374f;
    FUN_004325b6();
    local_4 = 5;
    pppvStack_1a4 = (void ***)0x8d3768;
    FUN_004325b6();
    pppvStack_1a4 = (void ***)local_180;
    local_4 = CONCAT31(local_4._1_3_,6);
    ppppuStack_1a8 = (undefined4 ****)0x8d3781;
    FUN_008d29c0();
    pppvStack_1a4 = (void ***)0x8d378b;
    _free(local_164);
    if (7 < local_168) {
                    // WARNING: Subroutine does not return
      pppvStack_1a4 = (void ***)&UNK_008d379e;
      FUN_00a3f6a1();
    }
    local_168 = 7;
    local_16c = 0;
    local_17c[0] = (undefined4 ****)((uint)local_17c[0] & 0xffff0000);
    local_4 = 0xffffffff;
    pppvStack_1a4 = (void ***)0x8d37ca;
    _free(local_140);
    if (7 < local_144) {
                    // WARNING: Subroutine does not return
      pppvStack_1a4 = (void ***)&UNK_008d37dd;
      FUN_00a3f6a1();
    }
  }
  if ((*(int *)(param_1_00 + 0xb4) != 0) || (*(int *)(param_1_00 + 0xd8) != 0)) {
    pppvStack_1a4 = (void ***)0x8d3809;
    FUN_004325b6();
    pppvStack_1a4 = (void ***)(param_1_00 + 0xa0);
    ppppuStack_1a8 = (undefined4 ****)&local_15c;
    local_4 = 7;
    FUN_008d23c0();
    pppvStack_1a4 = (void ***)local_180;
    local_4 = CONCAT31(local_4._1_3_,8);
    ppppuStack_1a8 = (undefined4 ****)0x8d383f;
    FUN_008d29c0();
    pppvStack_1a4 = (void ***)0x8d3849;
    _free(local_140);
    if (7 < local_144) {
                    // WARNING: Subroutine does not return
      pppvStack_1a4 = (void ***)&UNK_008d385c;
      FUN_00a3f6a1();
    }
    local_144 = 7;
    local_148 = 0;
    local_158 = local_158 & 0xffff0000;
    local_4 = 0xffffffff;
    pppvStack_1a4 = (void ***)0x8d3883;
    _free(local_164);
    if (7 < local_168) {
                    // WARNING: Subroutine does not return
      pppvStack_1a4 = (void ***)&UNK_008d3896;
      FUN_00a3f6a1();
    }
  }
  FUN_008ccb60();
  if ((DAT_032bdb68 == 0) || (DVar4 = GetCurrentThreadId(), DVar4 == DAT_032bdb68)) {
    FUN_0083f560();
  }
  pppvStack_1a4 = (void ***)0x8d38cf;
  FUN_008cc210();
  pppvStack_1a4 = (void ***)0x8d38d7;
  FUN_008cc260();
  local_6c = 7;
  local_70 = 0;
  local_80 = (uint)local_80._2_2_ << 0x10;
  local_68 = (void *)0x0;
  local_4 = 9;
  pppvStack_1a4 = (void ***)0x8d3912;
  FUN_0081c0f1();
  local_130 = &ppppuStack_1a8;
  local_4._0_1_ = 10;
  FUN_00432231(&ppppuStack_1a8);
  FUN_008d1ca0(local_104,local_188);
  local_4 = CONCAT31(local_4._1_3_,9);
  FUN_0081b5bc();
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440();
  }
  pppvStack_1a4 = &local_188;
  ppppuStack_1a8 = (undefined4 ****)0x8d397f;
  FUN_00432413();
  local_4._0_1_ = 0xb;
  pppvStack_1a4 = (void ***)0x8d3991;
  FUN_00432305();
  local_4 = CONCAT31(local_4._1_3_,0xd);
  ppvVar5 = (void **)FUN_00850350();
  if (local_188 != ppvVar5) {
    *(short *)(local_188 + 2) = *(short *)(local_188 + 2) + -1;
    if (*(short *)(local_188 + 2) == 0) {
      if (*(char *)((int)local_188 + 10) != '\0') {
        pppvStack_1a4 = (void ***)0x8d39ca;
        _free(*local_188);
      }
                    // WARNING: Subroutine does not return
      pppvStack_1a4 = (void ***)&UNK_008d39d3;
      FUN_00a3f6a1();
    }
    local_188 = (void **)FUN_00850350();
  }
  pppvStack_1a4 = (void ***)*local_184;
  pcVar6 = (char *)pppvStack_1a4;
  do {
    cVar1 = *pcVar6;
    pcVar6 = pcVar6 + 1;
  } while (cVar1 != '\0');
  ppppuStack_1a8 = (undefined4 ****)0x8d3a02;
  FUN_008cdb30();
  FUN_008d1e90();
  pppvStack_1a4 = (void ***)&DAT_00d3dfac;
  ppppuStack_1a8 = (undefined4 ****)0x8d3a17;
  FUN_008cdb30();
  if (param_2 == 1) {
    pppvStack_1a4 = (void ***)0x8d3a33;
    FUN_00869e00();
    pppvStack_1a4 = (void ***)*local_138[0];
    local_4._0_1_ = 0xe;
    ppppuStack_1a8 = (undefined4 ****)0x8d3a4d;
    FUN_008cdb30();
    local_4 = CONCAT31(local_4._1_3_,0xd);
    thunk_FUN_0043c1dd();
    psVar7 = (short *)PTR_DAT_03236318;
    if (PTR_DAT_03236318 == (undefined *)0x0) {
      FUN_00432156();
    }
    else {
      do {
        sVar2 = *psVar7;
        psVar7 = psVar7 + 1;
      } while (sVar2 != 0);
      pppvStack_1a4 = (void ***)PTR_DAT_03236318;
      ppppuStack_1a8 = (undefined4 ****)0x8d3a88;
      FID_conflict_assign();
    }
  }
  local_b4 = 7;
  local_b8 = 0;
  local_c8 = (uint)local_c8._2_2_ << 0x10;
  local_b0 = (void *)0x0;
  local_4._0_1_ = 0xf;
  ppppuStack_1a8 = (undefined4 ****)0x8d3acb;
  pppvStack_1a4 = (void ***)param_1_00;
  iVar3 = FUN_008d6c10();
  *(int *)(param_1_00 + 0xe8) = iVar3;
  if (iVar3 == 0) {
    pppvStack_1a4 = (void ***)0x8d3b78;
    FUN_004325b6();
    ppppuStack_1a8 = local_17c[0];
    if (local_168 < 8) {
      ppppuStack_1a8 = local_17c;
    }
    pppvStack_1a4 = (void ***)0x0;
    iVar3 = FUN_00420f3f();
    if (iVar3 == -1) {
      iVar3 = -1;
    }
    pppvStack_1a4 = (void ***)0x8d3bb5;
    _free(local_164);
    if (7 < local_168) {
                    // WARNING: Subroutine does not return
      pppvStack_1a4 = (void ***)&UNK_008d3bc9;
      FUN_00a3f6a1();
    }
    if (iVar3 == -1) {
      *(undefined4 *)(param_1_00 + 0xe8) = 0;
      pppvStack_1a4 = (void ***)0x8d3be8;
      FUN_004325b6();
      local_4._0_1_ = 0x10;
      pppvStack_1a4 = (void ***)0x8d3bfe;
      FUN_004325b6();
      pppvStack_1a4 = (void ***)local_128;
      local_4._0_1_ = 0x11;
      ppppuStack_1a8 = (undefined4 ****)0x8d3c17;
      FUN_008d29c0();
      FUN_0040159c();
      local_4._0_1_ = 0xf;
      FUN_0040159c();
      pppvStack_1a4 = (void ***)0x8d3c3f;
      FUN_004325b6();
      local_4._0_1_ = 0x12;
      pppvStack_1a4 = (void ***)0x8d3c55;
      FUN_004325b6();
      pppvStack_1a4 = (void ***)local_128;
      local_4._0_1_ = 0x13;
      ppppuStack_1a8 = (undefined4 ****)0x8d3c6e;
      FUN_008d29c0();
      FUN_0040159c();
      local_4._0_1_ = 0xf;
      FUN_0040159c();
      FUN_008ccbb0();
      FUN_0040159c();
      local_4 = CONCAT31(local_4._1_3_,9);
      thunk_FUN_0043c1dd();
      FUN_0040159c();
    }
    else {
      pppvStack_1a4 = (void ***)0x20;
      ppppuStack_1a8 = (undefined4 ****)0x8d3ccc;
      FUN_00853fa0();
      pppvStack_1a4 = (void ***)local_128;
      ppppuStack_1a8 = (undefined4 ****)&local_cc;
      local_4._0_1_ = 0x14;
      FUN_00894710();
      FUN_0040159c();
      local_90 = 7;
      local_94 = 0;
      local_a4 = (uint)local_a4._2_2_ << 0x10;
      local_8c = 0;
      local_4._0_1_ = 0x17;
      pppvStack_1a4 = (void ***)0x8d3d33;
      FUN_008d1b40();
      FUN_0040159c();
      pppvStack_1a4 = (void ***)0x8d3d53;
      pppuVar8 = (undefined4 ***)FUN_008d1b40();
      local_4._0_1_ = 0x18;
      if (&local_a8 != pppuVar8) {
        pppvStack_1a4 = (void ***)0x0;
        ppppuStack_1a8 = (undefined4 ****)pppuVar8;
        FID_conflict_assign();
      }
      local_4._0_1_ = 0x17;
      FUN_0040159c();
      pppvStack_1a4 = (void ***)0x8d3da0;
      uVar9 = FUN_00a4b994();
      pppvStack_1a4 = (void ***)local_138;
      *(undefined4 *)(param_1_00 + 0x13c) = uVar9;
      ppppuStack_1a8 = (undefined4 ****)0x8d3dbb;
      puVar10 = (undefined4 *)FUN_0081b542();
      local_130 = (undefined4 ****)*puVar10;
      local_12c = puVar10[1];
      iVar3 = FUN_00863370();
      if (((iVar3 == 0x31) || (iVar3 == 0x32)) || (iVar3 == 0x33)) {
        *(undefined4 *)(param_1_00 + 0xe8) = 0;
        FUN_008d2a60();
        FUN_008ccbb0();
        FUN_0040159c();
        local_4._0_1_ = 0xf;
        FUN_0083fa70();
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,9);
        thunk_FUN_0043c1dd();
        FUN_0040159c();
      }
      else {
        *(undefined4 *)(param_1_00 + 0xe8) = 6;
        FUN_008ccbb0();
        FUN_0040159c();
        local_4._0_1_ = 0xf;
        FUN_0083fa70();
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,9);
        thunk_FUN_0043c1dd();
        FUN_0040159c();
      }
    }
  }
  else {
    FUN_008ccbb0();
    pppvStack_1a4 = (void ***)0x8d3af0;
    _free(local_b0);
    if (7 < local_b4) {
                    // WARNING: Subroutine does not return
      pppvStack_1a4 = (void ***)&UNK_008d3b0e;
      FUN_00a3f6a1();
    }
    local_c8 = local_c8 & 0xffff0000;
    local_b4 = 7;
    local_b8 = 0;
    local_4 = CONCAT31(local_4._1_3_,9);
    thunk_FUN_0043c1dd();
    pppvStack_1a4 = (void ***)0x8d3b47;
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      pppvStack_1a4 = (void ***)&UNK_008d3b60;
      FUN_00a3f6a1();
    }
  }
LAB_008d3e9f:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008d3ed0(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined auStack_84 [3];
  char local_81;
  void *local_80;
  undefined local_7c [36];
  undefined local_58 [40];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined local_4;
  undefined3 uStack_3;
  
  puStack_8 = &LAB_00bd3213;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_84;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff70;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  uStack_3 = 0;
  *(undefined4 *)(param_1_00 + 0xe8) = 3;
  if (*(int *)(param_1_00 + 0x114) == 0) {
    _free((void *)0x0);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  else {
    cVar1 = FUN_008cc390(*(int *)(param_1_00 + 0x114),1);
    if (cVar1 == '\0') {
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
    }
    else {
      cVar1 = FUN_008d34f0(param_1,*(int *)(param_1_00 + 300) != 0);
      if (cVar1 == '\0') {
        FUN_0040159c(uVar2);
      }
      else {
        local_80 = operator_new(0x2c);
        local_4 = 1;
        if (local_80 == (void *)0x0) {
          iVar3 = 0;
        }
        else {
          iVar3 = FUN_008d1920(param_1_00);
        }
        local_4 = 0;
        FUN_004325b6(L"Content-Length");
        local_4 = 2;
        iVar4 = FUN_008d1dc0(local_58,local_7c);
        local_81 = *(int *)(iVar4 + 0x14) != 0;
        FUN_0040159c();
        local_4 = 0;
        FUN_0040159c();
        if (local_81 == '\0') {
          *(undefined4 *)(iVar3 + 0x24) = 0xffffffff;
        }
        else {
          FUN_004325b6(L"Content-Length");
          local_4 = 3;
          uVar5 = FUN_008d1dc0(local_58,local_7c);
          uVar5 = FUN_00896ae0(uVar5);
          *(undefined4 *)(iVar3 + 0x24) = uVar5;
          FUN_0040159c();
          local_4 = 0;
          FUN_0040159c();
        }
        *(undefined4 *)(iVar3 + 0x28) = 0;
        FUN_008cc260(0);
        FUN_008cc210(6);
        *(undefined4 *)(param_1_00 + 0xe8) = 0;
        FUN_0040159c();
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_008d40f0(void)

{
  return &PTR_u_wxFTP_032387c8;
}



undefined4 * __thiscall FUN_008d4100(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_008d6ea0(param_2);
  *param_1_00 = wxInputFTPStream::vftable;
  param_1_00[8] = param_1;
  return param_1_00;
}



void __fastcall FUN_008d4120(int *param_1)

{
  int iVar1;
  int iVar2;
  
  if (*param_1 != -4) {
    if (*param_1 == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *param_1;
    if (*(uint *)(iVar1 + 0x18) < 8) {
      iVar2 = iVar1 + 4;
    }
    else {
      iVar2 = *(int *)(iVar1 + 4);
    }
    if ((uint)(iVar2 + *(int *)(iVar1 + 0x14) * 2) <= (uint)param_1[1]) {
      FUN_00a3fb10();
    }
  }
  if (0x7f < *(ushort *)param_1[1]) {
    FUN_00884ba0(*(ushort *)param_1[1]);
  }
  return;
}



int FUN_008d4170(undefined4 param_1,wchar_t *param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  int iVar2;
  void **ppvVar3;
  void **local_4;
  
  puVar1 = (undefined4 *)FUN_008add70(&local_4);
  iVar2 = FID_conflict__swscanf(*(wchar_t **)*puVar1,param_2,param_3);
  ppvVar3 = (void **)FUN_00850350();
  if (local_4 != ppvVar3) {
    *(short *)(local_4 + 2) = *(short *)(local_4 + 2) + -1;
    if (*(short *)(local_4 + 2) == 0) {
      if (*(char *)((int)local_4 + 10) != '\0') {
        _free(*local_4);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_4);
    }
    FUN_00850350();
  }
  return iVar2;
}



// WARNING: Removing unreachable block (ram,0x008d4282)

int __thiscall FUN_008d41f0(undefined4 param_1_00,int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FID_conflict_assign(param_1_00,0,0xffffffff);
  local_4 = 0;
  uVar2 = FUN_00850fc0(uVar1);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free((void *)0x0);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_008d42b0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined auStack_68 [3];
  char local_65;
  undefined local_64 [4];
  uint local_60;
  undefined4 local_50;
  uint local_4c;
  void *local_48;
  undefined **local_40 [2];
  uint uStack_38;
  undefined2 local_30;
  undefined4 uStack_28;
  uint uStack_24;
  void *local_20;
  undefined4 local_1c;
  undefined4 local_18;
  void *pvStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3260;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_68;
  ExceptionList = &local_c;
  FUN_008cf7e0(DAT_0323f878 ^ (uint)&stack0xffffff8c);
  local_1c = 7;
  local_20 = (void *)0x0;
  local_30 = 0;
  local_18 = 0;
  local_40[0] = wxIPV4address::vftable;
  local_4 = 0;
  FUN_008d0250(param_1);
  if ((short)param_2 == 0) {
    FUN_004325b6(&DAT_00d3d98c);
    local_4._0_1_ = 1;
    cVar1 = FUN_008d0220(local_64);
    local_65 = cVar1 == '\0';
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_48);
    if (7 < local_4c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_60);
    }
    local_4c = 7;
    local_50 = 0;
    local_60 = local_60 & 0xffff0000;
    if (local_65 == '\0') goto LAB_008d43a1;
    param_2 = 0x15;
  }
  FUN_008cfa40(param_2);
LAB_008d43a1:
  (**(code **)(*param_1_00 + 0x24))(local_40,1);
  local_c = (void *)0xffffffff;
  _free(local_20);
  if (uStack_24 < 8) {
    uStack_24 = 7;
    uStack_28 = 0;
    uStack_38 = uStack_38 & 0xffff0000;
    FUN_008cf910();
    ExceptionList = pvStack_14;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(uStack_38);
}



undefined4 * __fastcall FUN_008d4420(undefined4 *param_1)

{
  wchar_t *pwVar1;
  wchar_t *pwVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd32b6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008d6990(DAT_0323f878 ^ (uint)&stack0xffffff98);
  *param_1 = wxFTP::vftable;
  param_1[0x42] = 7;
  param_1[0x41] = 0;
  *(undefined2 *)(param_1 + 0x3d) = 0;
  param_1[0x43] = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  *(undefined *)(param_1 + 0x45) = 0;
  param_1[0x46] = 0;
  pwVar1 = L"anonymous";
  do {
    pwVar2 = pwVar1;
    pwVar1 = pwVar2 + 1;
  } while (*pwVar2 != L'\0');
  FID_conflict_assign(L"anonymous",(int)(pwVar2 + -0x69f084) >> 1);
  uVar3 = FUN_0089f780(local_30);
  local_4._0_1_ = 2;
  uVar4 = FUN_0089f6d0(local_54);
  local_4._0_1_ = 3;
  FID_conflict_append(uVar4,0,0xffffffff);
  FID_conflict_append(1,0x40);
  FID_conflict_append(uVar3,0,0xffffffff);
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  local_4 = CONCAT31(local_4._1_3_,1);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  FUN_008cc270(0);
  FUN_008cc210(1);
  *(undefined *)(param_1 + 0x47) = 1;
  *(undefined *)((int)param_1 + 0x11d) = 0;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_008d45a0(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0x48))(param_1,0);
  return;
}



undefined4 FUN_008d45c0(undefined4 param_1,int *param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 local_94;
  uint uStack_90;
  undefined4 uStack_80;
  uint uStack_7c;
  void *pvStack_78;
  undefined auStack_70 [4];
  uint uStack_6c;
  undefined4 uStack_5c;
  uint uStack_58;
  void *pvStack_54;
  undefined4 local_48;
  uint uStack_44;
  undefined4 uStack_34;
  uint uStack_30;
  void *pvStack_2c;
  undefined auStack_24 [20];
  void *pvStack_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  uStack_8 = &LAB_00bd3335;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_94 = 0;
  local_4 = 0;
  local_48 = param_1;
  (**(code **)(*param_2 + 0x20))(param_1,DAT_0323f878 ^ (uint)&stack0xffffff5c);
  uStack_8 = (undefined *)0x0;
  uVar1 = FUN_008cfa60();
  FUN_004325b6(&DAT_00d3e174);
  uStack_8 = (undefined *)0x1;
  FUN_004325b6(&DAT_00fae798);
  uStack_8._0_1_ = 2;
  FUN_00852a70(auStack_70,&local_94,1);
  _free(pvStack_54);
  if (7 < uStack_58) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_6c);
  }
  uStack_58 = 7;
  uStack_5c = 0;
  uStack_6c = uStack_6c & 0xffff0000;
  uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
  _free(pvStack_78);
  if (7 < uStack_7c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_90);
  }
  FUN_0081c0f1(&DAT_00d2b618);
  uStack_8 = (undefined *)0x3;
  FUN_0081c0f1(&DAT_00d2b618);
  uStack_8._0_1_ = 4;
  uVar2 = FUN_00821558(&local_94,auStack_70,uVar1 & 0xff);
  uStack_8._0_1_ = 5;
  uVar3 = FUN_00821558(&local_48,auStack_24,(int)(uVar1 & 0xffff) >> 8);
  uStack_8._0_1_ = 6;
  FID_conflict_append(1,0x2c);
  FID_conflict_append(uVar3,0,0xffffffff);
  FID_conflict_append(1,0x2c);
  FID_conflict_append(uVar2,0,0xffffffff);
  _free(pvStack_2c);
  if (7 < uStack_30) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_44);
  }
  uStack_30 = 7;
  uStack_34 = 0;
  uStack_44 = uStack_44 & 0xffff0000;
  _free(pvStack_78);
  if (7 < uStack_7c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_90);
  }
  uStack_7c = 7;
  uStack_80 = 0;
  uStack_90 = uStack_90 & 0xffff0000;
  uStack_8._0_1_ = 3;
  FUN_0081b5bc();
  uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
  FUN_0081b5bc();
  ExceptionList = pvStack_10;
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x120);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_008d4420(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



int * __thiscall FUN_008d48a0(int param_1_00,int *param_1)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd766;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  piVar3 = param_1;
  if (*(char *)(param_1_00 + 0x11c) == '\0') {
    cVar1 = FUN_008cda40();
    if (cVar1 == '\0') {
      *(undefined4 *)(param_1_00 + 0xe8) = 3;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_4 = 0;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,1);
        iVar2 = FUN_0084a340();
        if (iVar2 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 2;
        FUN_008423d0();
        local_4._0_1_ = 3;
        FUN_008854f0();
        FUN_0083fe90();
        local_4._0_1_ = 2;
        FUN_00842440();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        local_4 = 0xffffffff;
        FUN_0040159c();
      }
      if (param_1 != (int *)0x0) {
        (**(code **)(*param_1 + 4))();
        piVar3 = (int *)0x0;
      }
    }
    else {
      *(undefined4 *)(param_1_00 + 0xe8) = 0;
      piVar3 = (int *)FUN_008ce1b0();
      if (param_1 != (int *)0x0) {
        (**(code **)(*param_1 + 4))();
      }
    }
  }
  ExceptionList = local_c;
  return piVar3;
}



void __fastcall FUN_008d4a70(undefined *param_1)

{
  char cVar1;
  int iVar2;
  undefined *puVar3;
  undefined4 *puVar4;
  undefined4 uStack_114;
  undefined4 uStack_110;
  char *pcStack_10c;
  undefined4 uStack_108;
  char *pcStack_104;
  undefined **ppuStack_100;
  undefined *puStack_fc;
  undefined **ppuStack_f8;
  undefined uStack_e0;
  char local_df;
  char local_de;
  char local_dd;
  undefined **local_dc;
  undefined4 local_d8;
  undefined local_d4 [32];
  uint local_b4;
  void *local_b0;
  undefined local_58 [4];
  uint local_54;
  uint local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined2 local_30;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3399;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&uStack_e0;
  ExceptionList = &local_c;
  if (param_1[0x11d] == '\0') {
    local_1c = 7;
    local_20 = 0;
    local_30 = 0;
    local_18 = 0;
    local_4 = 0;
    FUN_00432156();
    local_df = '\0';
    local_de = '\x01';
    local_dd = '\0';
    do {
      if (local_df != '\0') goto LAB_008d4c96;
      local_40 = 7;
      local_44 = 0;
      local_54 = local_54 & 0xffff0000;
      local_3c = (void *)0x0;
      local_4 = CONCAT31(local_4._1_3_,1);
      puStack_fc = (undefined *)0x8d4b41;
      ppuStack_f8 = (undefined **)param_1;
      iVar2 = FUN_008d6c10();
      *(int *)(param_1 + 0xe8) = iVar2;
      if (iVar2 != 0) {
        param_1[0x11d] = 1;
        FUN_0040159c();
        FUN_0040159c();
        goto LAB_008d4dc2;
      }
      ppuStack_f8 = (undefined **)0x8d4b61;
      FUN_008d6970();
      if (*(int *)(param_1 + 0x104) != 0) {
        ppuStack_f8 = (undefined **)0x1;
        puStack_fc = (undefined *)0x8d4b74;
        FID_conflict_append();
      }
      ppuStack_f8 = (undefined **)0x0;
      puStack_fc = local_58;
      ppuStack_100 = (undefined **)0x8d4b86;
      FID_conflict_append();
      if (local_44 < 4) {
        if (local_de != '\0') {
          local_df = '\x01';
        }
      }
      else {
        ppuStack_f8 = (undefined **)&local_dc;
        puStack_fc = (undefined *)0x8d4bb7;
        FUN_0081feb2();
        if (local_de == '\0') {
          ppuStack_f8 = (undefined **)0x3;
          puStack_fc = (undefined *)0x0;
          ppuStack_100 = (undefined **)0x8d4c40;
          iVar2 = FUN_00850f70();
          if ((iVar2 == 0) && ((short)local_dc == 0x20)) goto LAB_008d4c4c;
        }
        else {
          ppuStack_f8 = (undefined **)local_58;
          puStack_fc = (undefined *)0x8d4bd0;
          puVar3 = (undefined *)FUN_0086fa80();
          local_4 = CONCAT31(local_4._1_3_,2);
          if (local_34 != puVar3) {
            ppuStack_f8 = (undefined **)0x0;
            ppuStack_100 = (undefined **)0x8d4bec;
            puStack_fc = puVar3;
            FID_conflict_assign();
          }
          ppuStack_f8 = (undefined **)0x8d4bf6;
          _free(local_b0);
          if (7 < local_b4) {
                    // WARNING: Subroutine does not return
            ppuStack_f8 = (undefined **)&UNK_008d4c0a;
            FUN_00a3f6a1();
          }
          if (((uint)local_dc & 0xffff) == 0x20) {
LAB_008d4c4c:
            local_dd = '\x01';
          }
          else if (((uint)local_dc & 0xffff) == 0x2d) {
            local_de = '\0';
          }
          else {
            local_df = '\x01';
          }
        }
      }
      local_4 = local_4 & 0xffffff00;
      ppuStack_f8 = (undefined **)0x8d4c65;
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        ppuStack_f8 = (undefined **)&UNK_008d4c7f;
        FUN_00a3f6a1();
      }
    } while (local_dd == '\0');
    if (local_df == '\0') {
      ppuStack_f8 = (undefined **)local_d4;
      *(undefined4 *)(param_1 + 0xe8) = 0;
      puStack_fc = (undefined *)0x8d4d9c;
      puVar4 = (undefined4 *)FUN_0081b542();
      local_dc = (undefined **)*puVar4;
      local_d8 = puVar4[1];
      FUN_008d4120();
      FUN_0040159c();
    }
    else {
LAB_008d4c96:
      local_dc = (undefined **)&uStack_114;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        ppuStack_f8 = (undefined **)0x8d4ccc;
        FUN_0081c0f1();
        local_dc = &puStack_fc;
        ppuStack_100 = &puStack_fc;
        pcStack_104 = (char *)0x8d4cdd;
        FUN_00432231();
        ppuStack_100 = (undefined **)&DAT_00d25fa0;
        pcStack_104 = "wxFTP::GetResult";
        uStack_108 = 0x16b;
        pcStack_10c = "..\\..\\src\\common\\ftp.cpp";
        uStack_110 = 6;
        local_4._0_1_ = 4;
        uStack_114 = 0x8d4d04;
        FUN_008423d0();
        ppuStack_100 = (undefined **)local_58;
        local_4._0_1_ = 6;
        pcStack_104 = (char *)0x8d4d23;
        FUN_00848860();
        local_4._0_1_ = 3;
        FUN_00842440();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_0081b5bc();
      }
      *(undefined4 *)(param_1 + 0xe8) = 2;
      FUN_0040159c();
    }
  }
LAB_008d4dc2:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_008d4df0(undefined4 *param_1)

{
  char cVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd33d8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxInputFTPStream::vftable;
  local_4 = 0;
  if ((int *)param_1[7] != (int *)0x0) {
    (**(code **)(*(int *)param_1[7] + 4))(1,uVar2);
  }
  cVar1 = FUN_008d4a70();
  if (cVar1 == '2') {
    *(undefined *)(param_1[8] + 0x114) = 0;
  }
  else if (cVar1 == '\0') {
    (**(code **)(*(int *)param_1[8] + 0x34))();
    (**(code **)(*(int *)param_1[8] + 0x1c))();
  }
  local_4 = 0xffffffff;
  FUN_008d6ec0();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008d4e90(undefined4 param_1_00,byte param_1)

{
  FUN_008d4df0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_008d4eb0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd3408;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxOutputFTPStream::vftable;
  local_4 = 0;
  if (param_1[3] == 0) {
    if ((int *)param_1[4] != (int *)0x0) {
      (**(code **)(*(int *)param_1[4] + 4))(1);
    }
    FUN_008d4a70();
    *(undefined *)(param_1[5] + 0x114) = 0;
  }
  else {
    (**(code **)(*(int *)param_1[5] + 0x34))(uVar1);
    if ((int *)param_1[4] != (int *)0x0) {
      (**(code **)(*(int *)param_1[4] + 4))(1);
    }
  }
  local_4 = 0xffffffff;
  FUN_008d6e40();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008d4f50(undefined4 param_1_00,byte param_1)

{
  FUN_008d4eb0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_008d4f70(int param_1_00,undefined *param_1)

{
  char cVar1;
  char *pcVar2;
  undefined4 uVar3;
  char *pcVar4;
  int iVar5;
  undefined auStack_d0 [3];
  char local_cd;
  char **local_cc;
  undefined local_c8 [4];
  undefined local_c4 [4];
  undefined4 local_c0;
  uint local_ac;
  void *local_a8;
  undefined local_a0 [4];
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00bd347f;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_d0;
  ExceptionList = &local_c;
  if (*(char *)(param_1_00 + 0x114) == '\0') {
    FUN_008533d0(local_34,param_1,&DAT_00d31a20,DAT_0323f878 ^ (uint)&stack0xffffff20);
    local_4 = 0;
    if (DAT_032bd4d4 == 0) {
      DAT_032bd4d4 = FUN_00861440();
    }
    uVar3 = FUN_00432413(local_c8,DAT_032bd4d4);
    local_4._0_1_ = 1;
    FUN_00432305(uVar3);
    local_4._0_1_ = 3;
    thunk_FUN_0043c1dd();
    pcVar2 = *local_cc;
    pcVar4 = pcVar2;
    do {
      cVar1 = *pcVar4;
      pcVar4 = pcVar4 + 1;
    } while (cVar1 != '\0');
    FUN_008cdb30(pcVar2,(int)pcVar4 - (int)(pcVar2 + 1));
    iVar5 = FUN_008cbf70();
    if (iVar5 == 0) {
      local_64 = 7;
      local_68 = 0;
      local_78 = local_78 & 0xffff0000;
      local_60 = (void *)0x0;
      local_40 = 7;
      local_44 = 0;
      local_54 = local_54 & 0xffff0000;
      local_3c = (void *)0x0;
      local_4._0_1_ = 5;
      FUN_004325b6(L"PASS ");
      local_4._0_1_ = 6;
      FUN_008d41f0(local_a0);
      local_4._0_1_ = 7;
      local_cd = FUN_00852010(local_c4,local_58);
      _free(local_84);
      if (7 < local_88) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_9c);
      }
      local_88 = 7;
      local_8c = 0;
      local_9c = local_9c & 0xffff0000;
      local_4._0_1_ = 5;
      _free(local_a8);
      if (7 < local_ac) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_c0);
      }
      if (local_cd == '\0') {
        if (local_7c != param_1) {
          FID_conflict_assign(param_1,0,0xffffffff);
        }
      }
      else {
        uVar3 = FUN_00853fa0(0x2a,local_44);
        local_4._0_1_ = 8;
        FUN_0083fd10(L"PASS ");
        FID_conflict_append(uVar3,0,0xffffffff);
        local_4._0_1_ = 5;
        FUN_0040159c();
      }
      FUN_008d6950(local_7c);
      *(undefined4 *)(param_1_00 + 0xe8) = 0;
      local_cd = FUN_008d4a70();
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_54);
      }
      local_40 = 7;
      local_44 = 0;
      local_54 = local_54 & 0xffff0000;
      _free(local_60);
      if (7 < local_64) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_78);
      }
      local_64 = 7;
      local_68 = 0;
      local_78 = local_78 & 0xffff0000;
      local_4 = (uint)local_4._1_3_ << 8;
      thunk_FUN_0043c1dd();
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
    }
    else {
      *(undefined4 *)(param_1_00 + 0xe8) = 1;
      local_4 = (uint)local_4._1_3_ << 8;
      thunk_FUN_0043c1dd();
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
    }
  }
  else {
    *(undefined4 *)(param_1_00 + 0xe8) = 9;
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008d5300(int *param_1_00,undefined4 param_1)

{
  code *pcVar1;
  char cVar2;
  undefined4 uStack_64;
  undefined4 uStack_60;
  wchar_t *pwStack_5c;
  uint uStack_58;
  undefined4 *local_4c;
  undefined local_48 [20];
  undefined local_34 [4];
  undefined2 local_30;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4._0_1_ = 0xff;
  local_4._1_3_ = 0xffffff;
  puStack_8 = &LAB_00bd34c8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_4c;
  uStack_58 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  pwStack_5c = (wchar_t *)0x1;
  uStack_60 = param_1;
  uStack_64 = 0x8d533e;
  cVar2 = FUN_008cc390();
  if (cVar2 == '\0') {
    param_1_00[0x3a] = 1;
    goto LAB_008d547d;
  }
  if (param_1_00[0x2d] == 0) {
    param_1_00[0x3a] = 3;
    goto LAB_008d547d;
  }
  pwStack_5c = L"㈼ၴڋ傋謜ￎ㋒\xe9c0ö";
  cVar2 = FUN_008d4a70();
  if (cVar2 != '2') {
    pwStack_5c = L"쀲\xf6e9";
    (**(code **)(*param_1_00 + 0x1c))();
    goto LAB_008d547d;
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = 0;
  local_18 = 0;
  pwStack_5c = L"USER %s";
  local_4 = 0;
  uStack_60 = 0x8d53b0;
  FUN_0081c0f1();
  local_4c = &uStack_64;
  local_4._0_1_ = 1;
  FUN_00432231(&uStack_64);
  FUN_0085cc60(local_48);
  local_4._0_1_ = 0;
  pwStack_5c = L"䒍␤譐\xe8ceﭿ\xffff㈼睴㌼⁴ᚋ䊋謜쟎\xe886";
  FUN_0081b5bc();
  pwStack_5c = (wchar_t *)local_34;
  uStack_60 = 0x8d53f1;
  cVar2 = FUN_008d4f70();
  if (cVar2 == '2') {
LAB_008d546c:
    param_1_00[0x3a] = 0;
    pwStack_5c = L"ư䲋䰤襤\r";
    FUN_0040159c();
  }
  else {
    if (cVar2 == '3') {
      pwStack_5c = L"PASS %s";
      uStack_60 = 0x8d5427;
      FUN_0081c0f1();
      local_4c = &uStack_64;
      local_4._0_1_ = 2;
      FUN_00432231(&uStack_64);
      FUN_0085cc60(local_48);
      local_4._0_1_ = 0;
      pwStack_5c = L"䒍␤譐\xe8ce﬈\xffff㈼赵䲍␤麉è";
      FUN_0081b5bc();
      pwStack_5c = (wchar_t *)local_34;
      uStack_60 = 0x8d5468;
      cVar2 = FUN_008d4f70();
      if (cVar2 == '2') goto LAB_008d546c;
    }
    pcVar1 = *(code **)(*param_1_00 + 0x1c);
    param_1_00[0x3a] = 3;
    pwStack_5c = L"䲍␤蟨닁㋿\xebc0桤\xe270Ó䲍ᐤ쫨\xf46c菿೬첋撉ᠤ赑쒎";
    (*pcVar1)();
    pwStack_5c = L"쀲擫灨폢贀⑌\xe814泊\xfff4\xec83謌觌⑤儘躍Ä";
    FUN_0040159c();
  }
LAB_008d547d:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined * __fastcall FUN_008d54a0(int param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined *puVar3;
  undefined auStackY_100 [44];
  undefined4 uStackY_d4;
  undefined *puStackY_d0;
  undefined4 uStackY_c0;
  undefined4 uStackY_bc;
  char *pcStackY_b8;
  undefined4 uStackY_b4;
  char *pcStackY_b0;
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd350b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(char *)(param_1 + 0x114) == '\0') {
    if (*(char *)(param_1 + 0x14) != '\0') {
      pcStackY_b0 = (char *)0x8d5500;
      FUN_004325b6();
      local_4 = 0;
      pcStackY_b0 = (char *)0x8d5517;
      cVar1 = FUN_008d4f70();
      local_4 = 0xffffffff;
      pcStackY_b0 = (char *)0x8d5531;
      _free(local_64);
      if (7 < local_68) {
                    // WARNING: Subroutine does not return
        pcStackY_b0 = &UNK_008d5545;
        FUN_00a3f6a1();
      }
      if (cVar1 != '2') {
        puStackY_d0 = &DAT_00d25fa0;
        *(undefined4 *)(param_1 + 0xe8) = 3;
        uStackY_d4 = 0x8d556d;
        FUN_0043c211();
        puStackY_d0 = (undefined *)0x6;
        uStackY_d4 = 0x8d5574;
        cVar1 = FUN_00846b30();
        if (cVar1 != '\0') {
          pcStackY_b0 = (char *)0x8d5589;
          FUN_0081c0f1();
          pcStackY_b0 = "wxFTP::Close";
          uStackY_b4 = 0xb8;
          pcStackY_b8 = "..\\..\\src\\common\\ftp.cpp";
          uStackY_bc = 6;
          local_4 = 1;
          uStackY_c0 = 0x8d55b4;
          uVar2 = FUN_008423d0();
          local_4._0_1_ = 2;
          FUN_008854f0();
          uStackY_b4 = 0x8d55ce;
          pcStackY_b0 = (char *)uVar2;
          FUN_0083fe90();
          local_4 = CONCAT31(local_4._1_3_,1);
          FUN_00842440();
          local_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
    }
    puVar3 = (undefined *)FUN_008ccab0();
  }
  else {
    *(undefined4 *)(param_1 + 0xe8) = 9;
    puVar3 = auStackY_100;
  }
  ExceptionList = local_c;
  return puVar3;
}



bool __fastcall FUN_008d5620(int param_1)

{
  char cVar1;
  uint uVar2;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  if (*(char *)(param_1 + 0x114) == '\0') {
    return true;
  }
  ExceptionList = &local_c;
  *(undefined *)(param_1 + 0x114) = 0;
  FUN_004325b6(L"ABOR");
  local_4 = 0;
  cVar1 = FUN_008d4f70(local_30);
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  if (cVar1 != '4') {
    ExceptionList = local_c;
    return false;
  }
  cVar1 = FUN_008d4a70(uVar2);
  ExceptionList = local_c;
  return cVar1 == '2';
}



void __thiscall FUN_008d5710(int param_1_00,undefined4 param_1,int param_2)

{
  char cVar1;
  undefined4 uStack_cc;
  undefined4 uStack_c8;
  char *pcStack_c4;
  undefined4 uStack_c0;
  char *pcStack_bc;
  int *piStack_b8;
  int iStack_b4;
  undefined *puStack_b0;
  int *local_9c;
  undefined local_98 [124];
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3559;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_9c;
  ExceptionList = &local_c;
  puStack_b0 = (undefined *)0x8d5763;
  FUN_004325b6();
  local_4 = 0;
  if (*(int *)(param_2 + 0x14) != 0) {
    puStack_b0 = (undefined *)0x1;
    iStack_b4 = 0x8d5781;
    FID_conflict_append();
    puStack_b0 = (undefined *)0x0;
    iStack_b4 = param_2;
    piStack_b8 = (int *)0x8d5792;
    FID_conflict_append();
  }
  puStack_b0 = (undefined *)0x8d579e;
  cVar1 = FUN_008d4f70();
  if (cVar1 == '2') {
    *(undefined4 *)(param_1_00 + 0xe8) = 0;
    puStack_b0 = (undefined *)0x8d58a0;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      puStack_b0 = &UNK_008d58b7;
      FUN_00a3f6a1();
    }
  }
  else {
    local_9c = &uStack_cc;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      puStack_b0 = (undefined *)0x8d57d9;
      FUN_0081c0f1();
      local_9c = &iStack_b4;
      piStack_b8 = &iStack_b4;
      pcStack_bc = (char *)0x8d57ef;
      FUN_00432231();
      piStack_b8 = (int *)&DAT_00d25fa0;
      pcStack_bc = "wxFTP::DoSimpleCommand";
      uStack_c0 = 0x1ae;
      pcStack_c4 = "..\\..\\src\\common\\ftp.cpp";
      uStack_c8 = 6;
      local_4._0_1_ = 2;
      uStack_cc = 0x8d5816;
      FUN_008423d0();
      piStack_b8 = (int *)local_98;
      local_4._0_1_ = 4;
      pcStack_bc = (char *)0x8d5832;
      FUN_00848860();
      local_4._0_1_ = 1;
      FUN_00842440();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0081b5bc();
    }
    *(undefined4 *)(param_1_00 + 0xe8) = 1;
    puStack_b0 = (undefined *)0x8d586b;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      puStack_b0 = &UNK_008d5882;
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_008d58f0(int *param_1)

{
  char cVar1;
  void *pvVar2;
  int *piVar3;
  int iVar4;
  undefined auStack_144 [176];
  undefined **local_94;
  uint uStack_8c;
  undefined2 local_84;
  undefined4 uStack_7c;
  uint uStack_78;
  void *local_74;
  undefined4 local_70;
  uint local_6c;
  uint uStack_68;
  undefined4 uStack_5c;
  uint uStack_58;
  void *pvStack_54;
  void *pvStack_50;
  undefined **local_40;
  uint uStack_38;
  undefined2 local_30;
  undefined4 uStack_28;
  uint uStack_24;
  void *local_20;
  undefined4 local_1c;
  undefined4 local_18;
  void *pvStack_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bd35e5;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_144;
  ExceptionList = &local_c;
  FUN_008cf7e0();
  local_70 = 7;
  local_74 = (void *)0x0;
  local_84 = 0;
  local_6c = 0;
  local_94 = wxIPV4address::vftable;
  local_4 = 0;
  FUN_008cf7e0();
  local_1c = 7;
  local_20 = (void *)0x0;
  local_30 = 0;
  local_18 = 0;
  local_40 = wxIPV4address::vftable;
  local_4 = CONCAT31(local_4._1_3_,1);
  (**(code **)(*param_1 + 0x10))();
  FUN_008cfac0();
  FUN_008cfa40();
  pvVar2 = operator_new(0x94);
  uStack_8._0_1_ = 2;
  if (pvVar2 == (void *)0x0) {
    piVar3 = (int *)0x0;
  }
  else {
    piVar3 = (int *)FUN_008ce320();
  }
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
  if (piVar3[2] == 0) {
    param_1[0x3a] = 2;
    (**(code **)(*piVar3 + 4))();
    local_c = (void *)((uint)local_c & 0xffffff00);
    _free(local_20);
    if (7 < uStack_24) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_24 = 7;
    uStack_28 = 0;
    uStack_38 = uStack_38 & 0xffff0000;
    FUN_008cf910();
    local_c._0_1_ = 0xff;
    local_c._1_3_ = 0xffffff;
    _free(local_74);
    if (7 < uStack_78) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_78 = 7;
    uStack_7c = 0;
    uStack_8c = uStack_8c & 0xffff0000;
    FUN_008cf910();
  }
  else {
    (**(code **)(*piVar3 + 0x10))();
    FUN_008d45c0();
    local_c._0_1_ = 3;
    cVar1 = FUN_008d5710();
    if (cVar1 == '\0') {
      param_1[0x3a] = 2;
      (**(code **)(*piVar3 + 4))();
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_10._0_1_ = 4;
        FUN_0043c211();
        local_10 = CONCAT31(local_10._1_3_,5);
        iVar4 = FUN_0084a340();
        if (iVar4 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_10._0_1_ = 6;
        FUN_008423d0();
        local_10._0_1_ = 7;
        FUN_008854f0();
        FUN_0083fe90();
        local_10._0_1_ = 6;
        FUN_00842440();
        local_10 = CONCAT31(local_10._1_3_,5);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      _free(pvStack_54);
      if (7 < uStack_58) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_58 = 7;
      uStack_5c = 0;
      local_6c = local_6c & 0xffff0000;
      local_10 = local_10 & 0xffffff00;
      FUN_008cdbe0();
      local_10 = 0xffffffff;
      FUN_008cdbe0();
    }
    else {
      param_1[0x3a] = 0;
      FUN_008cc260();
      _free(pvStack_50);
      if ((void *)0x7 < pvStack_54) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      pvStack_54 = (void *)0x7;
      uStack_58 = 0;
      uStack_68 = uStack_68 & 0xffff0000;
      local_c = (void *)((uint)local_c._1_3_ << 8);
      FUN_008cdbe0();
      local_c._0_1_ = 0xff;
      local_c._1_3_ = 0xffffff;
      FUN_008cdbe0();
    }
  }
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_008d5d70(int param_1)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  undefined4 uStack_164;
  undefined4 *local_12c [8];
  uint local_10c;
  undefined4 local_fc;
  uint local_f8;
  void *local_f4;
  uint local_c0;
  void *local_bc;
  undefined **local_64;
  undefined2 local_54;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 ***local_30 [5];
  uint local_1c;
  undefined4 local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3675;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_12c;
  ExceptionList = &local_c;
  FUN_004325b6();
  local_4 = 0;
  cVar1 = FUN_008d5710();
  local_4 = 0xffffffff;
  _free(local_f4);
  if (7 < local_f8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (cVar1 == '\0') {
    local_12c[0] = &uStack_164;
    *(undefined4 *)(param_1 + 0xe8) = 2;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4 = 1;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,2);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 3;
      FUN_008423d0();
      local_4._0_1_ = 4;
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 3;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_0081b5bc();
      _free(local_f4);
      if (7 < local_f8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_f8 = 7;
      local_fc = 0;
      local_10c = local_10c & 0xffff0000;
      _free(local_bc);
      if (7 < local_c0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  else {
    local_12c[0] = (undefined4 *)0x28;
    iVar2 = FUN_00420f3f();
    if (iVar2 != -1) {
      local_12c[0] = (undefined4 *)0x29;
      iVar2 = FUN_00420f3f();
      if (iVar2 != -1) {
        FUN_008521d0();
        local_4 = 5;
        if (local_1c < 8) {
          local_30[0] = local_30;
        }
        uStack_164 = 0x8d602d;
        FID_conflict__swscanf((wchar_t *)local_30[0],L"%d,%d,%d,%d,%d,%d");
        FUN_008cf7e0();
        local_40 = 7;
        local_44 = 0;
        local_54 = 0;
        local_3c = 0;
        local_64 = wxIPV4address::vftable;
        local_4._0_1_ = 6;
        FUN_008cfe40();
        FUN_008cfa40();
        local_12c[0] = (undefined4 *)operator_new(0x9c);
        local_4._0_1_ = 7;
        if (local_12c[0] == (undefined4 *)0x0) {
          piVar3 = (int *)0x0;
        }
        else {
          piVar3 = (int *)FUN_008ce2a0();
        }
        local_4 = CONCAT31(local_4._1_3_,6);
        cVar1 = (**(code **)(*piVar3 + 0x24))();
        if (cVar1 == '\0') {
          *(undefined4 *)(param_1 + 0xe8) = 3;
          (**(code **)(*piVar3 + 4))();
          local_10 = CONCAT31(local_10._1_3_,5);
          FUN_008cdbe0();
          FUN_0040159c();
        }
        else {
          FUN_008cc260();
          *(undefined4 *)(param_1 + 0xe8) = 0;
          local_c = (void *)CONCAT31(local_c._1_3_,5);
          FUN_008cdbe0();
          FUN_0040159c();
        }
        goto LAB_008d616d;
      }
    }
    *(undefined4 *)(param_1 + 0xe8) = 2;
  }
LAB_008d616d:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_008d61a0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd36c6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxFTP::vftable;
  local_4 = 1;
  if (*(char *)(param_1 + 0x45) != '\0') {
    FUN_008d5620(uVar1);
  }
  FUN_008d54a0();
  _free((void *)param_1[0x43]);
  if (7 < (uint)param_1[0x42]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x3d]);
  }
  param_1[0x42] = 7;
  param_1[0x41] = 0;
  *(undefined2 *)(param_1 + 0x3d) = 0;
  local_4 = 0xffffffff;
  FUN_008d6a40();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008d6250(int param_1_00,uint param_1)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  uint uVar4;
  undefined auStack_1b0 [12];
  undefined4 uStack_1a4;
  char *pcStack_1a0;
  undefined4 uStack_19c;
  char *pcStack_198;
  wchar_t *pwStack_194;
  uint local_178;
  undefined *local_174;
  undefined local_170 [20];
  undefined local_15c [108];
  undefined local_f0 [36];
  undefined local_cc [156];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd37b7;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_178;
  ExceptionList = &local_c;
  local_178 = 0;
  if (param_1 != *(uint *)(param_1_00 + 0x118)) {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 0;
    if (((param_1 != 1) && (param_1 != 2)) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
      pwStack_194 = L"Assert failure";
      pcStack_198 = "wxFTP::SetTransferMode";
      uStack_19c = 0x189;
      pcStack_1a0 = "..\\..\\src\\common\\ftp.cpp";
      uStack_1a4 = 0x8d6302;
      FUN_00840480();
    }
    pwStack_194 = L"貍堤\x01儀屨폤謀\xe8cf\xf3e5\xffff삄蔏Ȼ";
    FUN_00855e10();
    pwStack_194 = L"TYPE";
    pcStack_198 = (char *)0x8d632b;
    cVar1 = FUN_008d5710();
    if (cVar1 == '\0') {
      local_174 = auStack_1b0;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        if (param_1 == 1) {
          pwStack_194 = L"周폤贀⒌\xa0";
          FUN_004325b6();
          local_4 = CONCAT31(local_4._1_3_,1);
          local_178 = param_1;
          pwStack_194 = L"蓇蠤\x01Ȁ";
          FUN_0043c211();
          local_4 = 2;
          uVar4 = 3;
          pwStack_194 = (wchar_t *)local_f0;
        }
        else {
          pwStack_194 = L"Ҿ";
          FUN_004325b6();
          local_4 = 3;
          local_178 = 4;
          pwStack_194 = L"뒉蠤\x01贀࡞䒍砤貍쀤";
          FUN_0043c211();
          local_4 = 4;
          uVar4 = 0xc;
          pwStack_194 = (wchar_t *)local_cc;
        }
        pcStack_198 = (char *)0x8d63f9;
        local_178 = uVar4;
        uVar2 = FUN_00820bf9();
        pwStack_194 = L"⑨폤贀⑌윴⒄ƌ";
        FUN_004325b6();
        local_4 = 5;
        pwStack_194 = 
        L"蓆蠤\x01؀೨\xf73f㯿瓅贓⑌兔咍㐤譒\xe8c8跇\xfff7෫䒍〤\xe850漋\xfff7쒃倄䲍․廨\xf6cf菿⓬첋撉㰤왖⒄ư"
        ;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,6);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          pwStack_194 = L"쒃倄䲍․廨\xf6cf菿⓬첋撉㰤왖⒄ư";
          FUN_0084d360();
        }
        else {
          pwStack_194 = (wchar_t *)local_15c;
          pcStack_198 = (char *)0x8d6449;
          FUN_0084f210();
        }
        pwStack_194 = L"\xec83謤觌⑤嘼蓆뀤\x01܀⟨뗁棿徠Ò桨폤栀Ɨ";
        FUN_008433c0();
        local_174 = auStack_1b0;
        local_4._0_1_ = 7;
        FUN_004325a0(uVar2);
        local_4._0_1_ = 8;
        FUN_008423d0(1,"..\\..\\src\\common\\ftp.cpp",0x197,"wxFTP::SetTransferMode",&DAT_00d25fa0);
        local_4._0_1_ = 10;
        FUN_00848780(local_170);
        local_4._0_1_ = 7;
        FUN_00842440();
        local_4 = CONCAT31(local_4._1_3_,6);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
        if ((uVar4 & 8) != 0) {
          uVar4 = uVar4 & 0xfffffff7;
          FUN_0040159c();
        }
        if ((uVar4 & 4) != 0) {
          uVar4 = uVar4 & 0xfffffffb;
          FUN_0040159c();
        }
        if ((uVar4 & 2) != 0) {
          uVar4 = uVar4 & 0xfffffffd;
          FUN_0040159c();
        }
        if ((uVar4 & 1) != 0) {
          FUN_0040159c();
        }
      }
      pwStack_194 = L"쒃茄ⒼŰ";
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        pwStack_194 = (wchar_t *)&UNK_008d6567;
        FUN_00a3f6a1();
      }
    }
    else {
      *(uint *)(param_1_00 + 0x118) = param_1;
      pwStack_194 = L"쒃茄ⒼŰ";
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        pwStack_194 = (wchar_t *)&UNK_008d659b;
        FUN_00a3f6a1();
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008d65d0(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  int iVar5;
  void *pvStack_5c;
  undefined auStack_58 [4];
  uint uStack_54;
  undefined4 uStack_44;
  uint uStack_40;
  void *pvStack_3c;
  undefined auStack_34 [36];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4._0_1_ = 0xff;
  uStack_4._1_3_ = 0xffffff;
  puStack_8 = &LAB_00bd380b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&pvStack_5c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  if ((*(int *)(param_1_00 + 0x118) == 0) && (cVar1 = FUN_008d6250(2), cVar1 == '\0')) {
    *(undefined4 *)(param_1_00 + 0xe8) = 3;
  }
  else {
    if (*(char *)(param_1_00 + 0x11c) == '\0') {
      piVar3 = (int *)FUN_008d58f0(uVar2);
    }
    else {
      piVar3 = (int *)FUN_008d5d70();
    }
    if (piVar3 == (int *)0x0) {
      *(undefined *)(param_1_00 + 0x11d) = 1;
      *(undefined4 *)(param_1_00 + 0xe8) = 1;
    }
    else {
      (**(code **)(*piVar3 + 0x20))(*(undefined4 *)(param_1_00 + 0x9c));
      uVar4 = FUN_008a4a70(auStack_58,param_1);
      uStack_4 = 0;
      FUN_008535a0(auStack_34,L"RETR ",uVar4);
      uStack_4._0_1_ = 2;
      _free(pvStack_3c);
      if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_54);
      }
      uStack_54 = uStack_54 & 0xffff0000;
      uStack_40 = 7;
      uStack_44 = 0;
      cVar1 = FUN_008d4f70(auStack_34);
      if (cVar1 == '1') {
        iVar5 = FUN_008d48a0(piVar3);
        if (iVar5 != 0) {
          FUN_008cc210(2);
          *(undefined *)(param_1_00 + 0x114) = 1;
          pvStack_5c = operator_new(0x24);
          uStack_4._0_1_ = 3;
          if (pvStack_5c != (void *)0x0) {
            FUN_008d4100(param_1_00,iVar5);
          }
          *(undefined4 *)(param_1_00 + 0xe8) = 0;
          FUN_0040159c();
          goto LAB_008d6754;
        }
        *(undefined4 *)(param_1_00 + 0xe8) = 3;
      }
      FUN_0040159c();
    }
  }
LAB_008d6754:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_008d6780(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  undefined4 *local_38;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3853;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  if ((*(int *)(param_1_00 + 0x118) == 0) && (cVar1 = FUN_008d6250(2), cVar1 == '\0')) {
    *(undefined4 *)(param_1_00 + 0xe8) = 3;
  }
  else {
    if (*(char *)(param_1_00 + 0x11c) == '\0') {
      piVar3 = (int *)FUN_008d58f0(uVar2);
    }
    else {
      piVar3 = (int *)FUN_008d5d70();
    }
    if (piVar3 == (int *)0x0) {
      *(undefined *)(param_1_00 + 0x11d) = 1;
    }
    else {
      (**(code **)(*piVar3 + 0x20))(*(undefined4 *)(param_1_00 + 0x9c));
    }
    FUN_008535a0(local_34,L"STOR ",param_1);
    local_4 = 0;
    cVar1 = FUN_008d4f70(local_34);
    if (cVar1 == '1') {
      uVar4 = FUN_008d48a0(piVar3);
      *(undefined *)(param_1_00 + 0x114) = 1;
      *(undefined4 *)(param_1_00 + 0xe8) = 0;
      puVar5 = (undefined4 *)operator_new(0x18);
      local_4 = CONCAT31(local_4._1_3_,1);
      local_38 = puVar5;
      if (puVar5 != (undefined4 *)0x0) {
        FUN_008d6e20(uVar4);
        *puVar5 = wxOutputFTPStream::vftable;
        puVar5[5] = param_1_00;
      }
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
    }
    else {
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_008d68f0(undefined4 param_1_00,byte param_1)

{
  FUN_008d61a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined * FUN_008d6910(void)

{
  return &DAT_03238874;
}



undefined ** FUN_008d6920(void)

{
  return &PTR_u_wxProtocol_0323888c;
}



void __thiscall FUN_008d6930(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x9c) = param_1;
  FUN_008cc1d0();
  return;
}



void __fastcall FUN_008d6950(int param_1)

{
  if (*(int *)(param_1 + 0xec) != 0) {
                    // WARNING: Could not recover jumptable at 0x008d6964. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(param_1 + 0xec) + 4))();
    return;
  }
  return;
}



void __fastcall FUN_008d6970(int param_1)

{
  if (*(int *)(param_1 + 0xec) != 0) {
                    // WARNING: Could not recover jumptable at 0x008d6984. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(param_1 + 0xec) + 8))();
    return;
  }
  return;
}



undefined4 * __fastcall FUN_008d6990(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd38a4;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008ce2a0(0);
  *param_1 = wxProtocol::vftable;
  param_1[0x2e] = 7;
  param_1[0x2d] = 0;
  *(undefined2 *)(param_1 + 0x29) = 0;
  param_1[0x2f] = 0;
  param_1[0x37] = 7;
  param_1[0x36] = 0;
  *(undefined2 *)(param_1 + 0x32) = 0;
  param_1[0x38] = 0;
  local_4 = 2;
  param_1[0x3a] = 0;
  param_1[0x3b] = 0;
  param_1[0x27] = 0x3c;
  FUN_008cc1d0(0x3c);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_008d6a40(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd38e4;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxProtocol::vftable;
  local_4 = 2;
  if ((undefined4 *)param_1[0x3b] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x3b])(1,uVar1);
  }
  _free((void *)param_1[0x38]);
  if (7 < (uint)param_1[0x37]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x32]);
  }
  param_1[0x37] = 7;
  param_1[0x36] = 0;
  *(undefined2 *)(param_1 + 0x32) = 0;
  _free((void *)param_1[0x2f]);
  if (7 < (uint)param_1[0x2e]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x29]);
  }
  param_1[0x2e] = 7;
  param_1[0x2d] = 0;
  *(undefined2 *)(param_1 + 0x29) = 0;
  local_4 = 0xffffffff;
  FUN_008cdc20();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008d6b30(undefined4 param_1_00,byte param_1)

{
  FUN_008d6a40();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_008d6b50(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined param_3,
            undefined4 param_4)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd391e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxProtoInfo::vftable;
  FUN_004325b6(param_1);
  param_1_00[0x12] = 7;
  param_1_00[0x11] = 0;
  *(undefined2 *)(param_1_00 + 0xd) = 0;
  param_1_00[0x13] = 0;
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_004325b6(param_2);
  param_1_00[0x1e] = param_4;
  *(undefined *)(param_1_00 + 0x1f) = param_3;
  param_1_00[2] = DAT_032bf120;
  DAT_032bf120 = param_1_00;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_008d6bf0(undefined4 param_1_00,byte param_1)

{
  FUN_008d1730();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_008d6c10(int param_1,int param_2)

{
  char *_Str;
  char cVar1;
  int iVar2;
  char *pcVar3;
  int *piVar4;
  undefined4 uVar5;
  int iVar6;
  char *pcVar7;
  char **local_3c;
  undefined local_38 [8];
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3950;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00432156(DAT_0323f878 ^ (uint)&stack0xffffffb4);
  FUN_0084aa50(0xfff);
  _Str = *local_3c;
  local_4 = 0;
  cVar1 = FUN_008cd9d0(0xffffffff,0);
  while (cVar1 != '\0') {
    FUN_008cd7a0(_Str,0xfff);
    pcVar7 = *(char **)(param_1 + 0x1c);
    if ((pcVar7 == (char *)0x0) && (iVar2 = FUN_008cbf70(), iVar2 != 0)) break;
    _Str[(int)pcVar7] = '\0';
    pcVar3 = _strchr(_Str,10);
    if (pcVar3 != (char *)0x0) {
      if (pcVar3 == _Str) {
        if (*(int *)(param_2 + 0x14) == 0) {
LAB_008d6d00:
          pcVar3 = (char *)0x0;
        }
        else {
          piVar4 = (int *)FUN_0081b3d8(local_38);
          if (*piVar4 != -4) {
            if (*piVar4 == 0) {
              FUN_00a3fb10();
            }
            iVar2 = *piVar4;
            if (*(uint *)(iVar2 + 0x18) < 8) {
              iVar6 = iVar2 + 4;
            }
            else {
              iVar6 = *(int *)(iVar2 + 4);
            }
            if ((uint)(iVar6 + *(int *)(iVar2 + 0x14) * 2) <= (uint)piVar4[1]) {
              FUN_00a3fb10();
            }
          }
          if (*(short *)piVar4[1] != 0xd) goto LAB_008d6d00;
        }
        pcVar7 = (char *)0x1;
      }
      else {
        pcVar7 = pcVar3 + (1 - (int)_Str);
        if (pcVar3[-1] != '\r') {
          pcVar3 = (char *)0x0;
        }
      }
    }
    FUN_008cda80(_Str,pcVar7);
    if (*(char **)(param_1 + 0x1c) != pcVar7) break;
    _Str[(int)pcVar7] = '\0';
    uVar5 = FUN_00853800(local_30,_Str);
    local_4._0_1_ = 1;
    FID_conflict_append(uVar5,0,0xffffffff);
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    if (pcVar3 != (char *)0x0) {
      FUN_00851a60(*(int *)(param_2 + 0x14) + -2);
      local_4 = 0xffffffff;
      thunk_FUN_0043c1dd();
      ExceptionList = local_c;
      return 0;
    }
    cVar1 = FUN_008cd9d0(0xffffffff,0);
  }
  local_4 = 0xffffffff;
  thunk_FUN_0043c1dd();
  ExceptionList = local_c;
  return 1;
}



void __thiscall FUN_008d6e00(undefined4 param_1_00,undefined4 param_1)

{
  FUN_008d6c10(param_1_00,param_1);
  return;
}



undefined4 * __thiscall FUN_008d6e20(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00883d40();
  param_1_00[4] = param_1;
  *param_1_00 = wxSocketOutputStream::vftable;
  return param_1_00;
}



void __fastcall FUN_008d6e40(undefined4 *param_1)

{
  *param_1 = wxSocketOutputStream::vftable;
  FUN_008f7630();
  return;
}



undefined4 __thiscall FUN_008d6e50(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  
  iVar2 = FUN_008cdb30(param_1,param_2);
  uVar1 = *(undefined4 *)(iVar2 + 0x1c);
  iVar2 = FUN_008cbf70();
  if (iVar2 != 0) {
    *(uint *)(param_1_00 + 0xc) = (*(char *)(*(int *)(param_1_00 + 0x10) + 0x18) == '\0') + 1;
    return uVar1;
  }
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  return uVar1;
}



undefined4 * __thiscall FUN_008d6ea0(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00883ce0();
  param_1_00[7] = param_1;
  *param_1_00 = wxSocketInputStream::vftable;
  return param_1_00;
}



void __fastcall FUN_008d6ec0(undefined4 *param_1)

{
  *param_1 = wxSocketInputStream::vftable;
  FUN_00883d00();
  return;
}



undefined4 __thiscall FUN_008d6ed0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  
  iVar2 = FUN_008cda80(param_1,param_2);
  uVar1 = *(undefined4 *)(iVar2 + 0x1c);
  iVar2 = FUN_008cbf70();
  if (iVar2 != 0) {
    *(uint *)(param_1_00 + 0xc) =
         (uint)(*(char *)(*(int *)(param_1_00 + 0x1c) + 0x18) == '\0') * 2 + 1;
    return uVar1;
  }
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  return uVar1;
}



undefined4 * __thiscall FUN_008d6f20(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxSocketOutputStream::vftable;
  FUN_008f7630();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_008d6f50(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxSocketInputStream::vftable;
  FUN_00883d00();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined ** FUN_008d6f80(void)

{
  return &PTR_u_wxXmlDocument_032388dc;
}



void __thiscall FUN_008d6f90(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = *(int *)(param_1_00 + 0x58);
  if (iVar1 != 0) {
    iVar2 = *(int *)(iVar1 + 0x5c);
    while (iVar2 != 0) {
      iVar1 = *(int *)(iVar1 + 0x5c);
      iVar2 = *(int *)(iVar1 + 0x5c);
    }
    *(int *)(iVar1 + 0x5c) = param_1;
    *(undefined4 *)(param_1 + 0x5c) = 0;
    *(int *)(param_1 + 0x54) = param_1_00;
    return;
  }
  *(int *)(param_1_00 + 0x58) = param_1;
  *(undefined4 *)(param_1 + 0x5c) = 0;
  *(int *)(param_1 + 0x54) = param_1_00;
  return;
}



uint __thiscall FUN_008d6fd0(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  uint in_EAX;
  uint uVar3;
  
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      uVar3 = FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0xc9,"wxXmlNode::InsertChild","child",
                           "cannot insert a NULL node!");
      return uVar3 & 0xffffff00;
    }
LAB_008d70f8:
    return in_EAX & 0xffffff00;
  }
  if (*(int *)(param_1 + 0x54) != 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      in_EAX = FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0xca,"wxXmlNode::InsertChild",
                            "child->m_parent == 0","node already has a parent");
    }
    goto LAB_008d70f8;
  }
  if (*(int *)(param_1 + 0x5c) != 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      uVar3 = FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0xcb,"wxXmlNode::InsertChild",
                           "child->m_next == 0","node already has m_next");
      return uVar3 & 0xffffff00;
    }
    goto LAB_008d70f8;
  }
  if (param_2 == 0) {
    param_2 = *(int *)(param_1_00 + 0x58);
  }
  else if (*(int *)(param_2 + 0x54) != param_1_00) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      in_EAX = FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0xce,"wxXmlNode::InsertChild",
                            "followingNode == 0 || followingNode->GetParent() == this",
                            "wxXmlNode::InsertChild - followingNode has incorrect parent");
    }
    goto LAB_008d7029;
  }
  iVar1 = *(int *)(param_1_00 + 0x58);
  if (iVar1 == param_2) {
    *(int *)(param_1 + 0x5c) = iVar1;
    *(int *)(param_1_00 + 0x58) = param_1;
    *(int *)(param_1 + 0x54) = param_1_00;
    return CONCAT31((int3)((uint)iVar1 >> 8),1);
  }
  while (iVar2 = iVar1, iVar2 != 0) {
    iVar1 = *(int *)(iVar2 + 0x5c);
    if (*(int *)(iVar2 + 0x5c) == param_2) {
      *(int *)(param_1 + 0x5c) = param_2;
      *(int *)(iVar2 + 0x5c) = param_1;
      *(int *)(param_1 + 0x54) = param_1_00;
      return CONCAT31((int3)((uint)iVar2 >> 8),1);
    }
  }
  in_EAX = 0;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar3 = FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0xe1,"wxXmlNode::InsertChild","Assert failure",
                         "followingNode has this node as parent, but couldn\'t be found among children"
                        );
    return uVar3 & 0xffffff00;
  }
LAB_008d7029:
  return in_EAX & 0xffffff00;
}



undefined4 __thiscall FUN_008d7130(int param_1_00,int param_1,int param_2)

{
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0xf0,"wxXmlNode::InsertChildAfter","child",
                   "cannot insert a NULL node!");
    }
  }
  else if (*(int *)(param_1 + 0x54) == 0) {
    if (*(int *)(param_1 + 0x5c) == 0) {
      if (param_2 == 0) {
        if (*(int *)(param_1_00 + 0x58) == 0) {
          *(undefined4 *)(param_1 + 0x5c) = 0;
          *(int *)(param_1_00 + 0x58) = param_1;
          *(int *)(param_1 + 0x54) = param_1_00;
          return 1;
        }
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0xfe,"wxXmlNode::InsertChildAfter",
                       "m_children == 0",
                       "NULL precedingNode only makes sense when there are no children");
          return 0;
        }
      }
      else {
        if (*(int *)(param_2 + 0x54) == param_1_00) {
          *(undefined4 *)(param_1 + 0x5c) = *(undefined4 *)(param_2 + 0x5c);
          *(int *)(param_2 + 0x5c) = param_1;
          *(int *)(param_1 + 0x54) = param_1_00;
          return 1;
        }
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0xf4,"wxXmlNode::InsertChildAfter",
                       "precedingNode == 0 || precedingNode->m_parent == this",
                       "precedingNode has wrong parent");
          return 0;
        }
      }
    }
    else if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0xf2,"wxXmlNode::InsertChildAfter",
                   "child->m_next == 0","node already has m_next");
      return 0;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0xf1,"wxXmlNode::InsertChildAfter",
                 "child->m_parent == 0","node already has a parent");
    return 0;
  }
  return 0;
}



uint __thiscall FUN_008d7280(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  
  uVar4 = *(uint *)(param_1_00 + 0x58);
  if (uVar4 != 0) {
    if (uVar4 == param_1) {
      uVar1 = *(undefined4 *)(param_1 + 0x5c);
      *(undefined4 *)(param_1_00 + 0x58) = uVar1;
      *(undefined4 *)(param_1 + 0x54) = 0;
      *(undefined4 *)(param_1 + 0x5c) = 0;
      return CONCAT31((int3)((uint)uVar1 >> 8),1);
    }
    iVar2 = *(int *)(uVar4 + 0x5c);
    while (iVar2 != 0) {
      uVar3 = *(uint *)(uVar4 + 0x5c);
      if (uVar3 == param_1) {
        *(undefined4 *)(uVar4 + 0x5c) = *(undefined4 *)(param_1 + 0x5c);
        *(undefined4 *)(param_1 + 0x54) = 0;
        *(undefined4 *)(param_1 + 0x5c) = 0;
        return CONCAT31((int3)(uVar4 >> 8),1);
      }
      uVar4 = uVar3;
      iVar2 = *(int *)(uVar3 + 0x5c);
    }
  }
  return uVar4 & 0xffffff00;
}



undefined __thiscall
FUN_008d72e0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined uVar2;
  uint uVar3;
  undefined local_30 [24];
  void *pvStack_18;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3978;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  FUN_008823c0(param_1);
  local_4 = 0;
  cVar1 = FUN_00882a00(uVar3);
  if (cVar1 == '\0') {
    local_4 = 0xffffffff;
    FUN_00882980();
    ExceptionList = local_c;
    return 0;
  }
  uVar2 = (**(code **)(*param_1_00 + 0x10))(local_30,param_2,param_3);
  uStack_10 = 0xffffffff;
  FUN_00882980();
  ExceptionList = pvStack_18;
  return uVar2;
}



undefined __thiscall FUN_008d73a0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined uVar2;
  uint uVar3;
  undefined local_24 [16];
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd39a8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  FUN_00882500(param_1);
  local_4 = 0;
  cVar1 = FUN_00882ab0(uVar3);
  if (cVar1 == '\0') {
    local_4 = 0xffffffff;
    FUN_00882a20();
    ExceptionList = local_c;
    return 0;
  }
  uVar2 = (**(code **)(*param_1_00 + 0x18))(local_24,param_2);
  local_c = (void *)0xffffffff;
  FUN_00882a20();
  ExceptionList = pvStack_14;
  return uVar2;
}



void __fastcall FUN_008d7450(int param_1)

{
  int iVar1;
  
  if (*(int *)(param_1 + 0x50) != 0) {
    for (iVar1 = *(int *)(*(int *)(param_1 + 0x50) + 0x58);
        (iVar1 != 0 && (*(int *)(iVar1 + 4) != 1)); iVar1 = *(int *)(iVar1 + 0x5c)) {
    }
  }
  return;
}



void __fastcall FUN_008d74a0(int **param_1)

{
  if (*param_1 != (int *)0x0) {
    (**(code **)(**param_1 + 0x18))(1);
  }
  return;
}



void __thiscall FUN_008d74c0(int **param_1_00,int *param_1)

{
  if (param_1 != *param_1_00) {
    if (*param_1_00 != (int *)0x0) {
      (**(code **)(**param_1_00 + 0x18))(1);
    }
    *param_1_00 = param_1;
  }
  return;
}



void __thiscall FUN_008d74f0(int param_1_00,undefined4 param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = *(int *)(param_1_00 + 0x50);
  if (iVar1 != 0) {
    iVar2 = *(int *)(iVar1 + 0x4c);
    while (iVar2 != 0) {
      iVar1 = *(int *)(iVar1 + 0x4c);
      iVar2 = *(int *)(iVar1 + 0x4c);
    }
    *(undefined4 *)(iVar1 + 0x4c) = param_1;
    return;
  }
  *(undefined4 *)(param_1_00 + 0x50) = param_1;
  return;
}



undefined4 __thiscall FUN_008d7520(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  
  if (*(int *)(param_1_00 + 0x50) == 0) {
    return 0;
  }
  if (*(int *)(*(int *)(param_1_00 + 0x50) + 0x18) == *(int *)(param_1 + 0x14)) {
    iVar1 = FUN_00850760(param_1);
    if (iVar1 == 0) {
      puVar3 = *(undefined4 **)(param_1_00 + 0x50);
      *(undefined4 *)(param_1_00 + 0x50) = puVar3[0x13];
LAB_008d7599:
      puVar3[0x13] = 0;
      (**(code **)*puVar3)(1);
      return 1;
    }
  }
  iVar1 = *(int *)(param_1_00 + 0x50);
  iVar2 = *(int *)(iVar1 + 0x4c);
  do {
    if (iVar2 == 0) {
      return 0;
    }
    if (*(int *)(*(int *)(iVar1 + 0x4c) + 0x18) == *(int *)(param_1 + 0x14)) {
      iVar2 = FUN_00850760(param_1);
      if (iVar2 == 0) {
        puVar3 = *(undefined4 **)(iVar1 + 0x4c);
        *(undefined4 *)(iVar1 + 0x4c) = puVar3[0x13];
        goto LAB_008d7599;
      }
    }
    iVar1 = *(int *)(iVar1 + 0x4c);
    iVar2 = *(int *)(iVar1 + 0x4c);
  } while( true );
}



undefined4 __thiscall thunk_FUN_008d7520(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  
  if (*(int *)(param_1_00 + 0x50) == 0) {
    return 0;
  }
  if (*(int *)(*(int *)(param_1_00 + 0x50) + 0x18) == *(int *)(param_1 + 0x14)) {
    iVar1 = FUN_00850760(param_1);
    if (iVar1 == 0) {
      puVar3 = *(undefined4 **)(param_1_00 + 0x50);
      *(undefined4 *)(param_1_00 + 0x50) = puVar3[0x13];
LAB_008d7599:
      puVar3[0x13] = 0;
      (**(code **)*puVar3)(1);
      return 1;
    }
  }
  iVar1 = *(int *)(param_1_00 + 0x50);
  iVar2 = *(int *)(iVar1 + 0x4c);
  do {
    if (iVar2 == 0) {
      return 0;
    }
    if (*(int *)(*(int *)(iVar1 + 0x4c) + 0x18) == *(int *)(param_1 + 0x14)) {
      iVar2 = FUN_00850760(param_1);
      if (iVar2 == 0) {
        puVar3 = *(undefined4 **)(iVar1 + 0x4c);
        *(undefined4 *)(iVar1 + 0x4c) = puVar3[0x13];
        goto LAB_008d7599;
      }
    }
    iVar1 = *(int *)(iVar1 + 0x4c);
    iVar2 = *(int *)(iVar1 + 0x4c);
  } while( true );
}



undefined4 FUN_008d75c0(int param_1)

{
  short **ppsVar1;
  short sVar2;
  uint uVar3;
  short **ppsVar4;
  int iVar5;
  short **ppsVar6;
  short **ppsVar7;
  
  uVar3 = *(uint *)(param_1 + 0x18);
  ppsVar1 = (short **)(param_1 + 4);
  ppsVar7 = ppsVar1;
  if (7 < uVar3) {
    ppsVar7 = (short **)*ppsVar1;
  }
  if (ppsVar7 != (short **)0x0) {
    ppsVar4 = ppsVar1;
    if (7 < uVar3) {
      ppsVar4 = (short **)*ppsVar1;
    }
    if (ppsVar4 <= ppsVar7) {
      ppsVar4 = ppsVar1;
      if (7 < uVar3) {
        ppsVar4 = (short **)*ppsVar1;
      }
      if (ppsVar7 <= (short **)((int)ppsVar4 + *(int *)(param_1 + 0x14) * 2)) goto LAB_008d7608;
    }
  }
  FUN_00a3fb10();
LAB_008d7608:
  do {
    uVar3 = *(uint *)(param_1 + 0x18);
    ppsVar4 = ppsVar1;
    if (7 < uVar3) {
      ppsVar4 = (short **)*ppsVar1;
    }
    iVar5 = *(int *)(param_1 + 0x14) * 2;
    ppsVar4 = (short **)(iVar5 + (int)ppsVar4);
    if (ppsVar4 == (short **)0x0) {
LAB_008d7644:
      FUN_00a3fb10();
    }
    else {
      ppsVar6 = ppsVar1;
      if (7 < uVar3) {
        ppsVar6 = (short **)*ppsVar1;
      }
      if (ppsVar4 < ppsVar6) goto LAB_008d7644;
      ppsVar6 = ppsVar1;
      if (7 < uVar3) {
        ppsVar6 = (short **)*ppsVar1;
      }
      if ((short **)(iVar5 + (int)ppsVar6) < ppsVar4) goto LAB_008d7644;
    }
    if ((param_1 != -4) && (param_1 == 0)) {
      FUN_00a3fb10();
    }
    if (ppsVar7 == ppsVar4) {
      return 1;
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar5 = param_1 + 4;
      }
      else {
        iVar5 = *(int *)(param_1 + 4);
      }
      if ((short **)(iVar5 + *(int *)(param_1 + 0x14) * 2) <= ppsVar7) {
        FUN_00a3fb10();
      }
    }
    sVar2 = *(short *)ppsVar7;
    if ((((sVar2 != 0x20) && (sVar2 != 9)) && (sVar2 != 10)) && (sVar2 != 0xd)) {
      return 0;
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar5 = param_1 + 4;
      }
      else {
        iVar5 = *(int *)(param_1 + 4);
      }
      if ((short **)(iVar5 + *(int *)(param_1 + 0x14) * 2) <= ppsVar7) {
        FUN_00a3fb10();
      }
    }
    ppsVar7 = (short **)((int)ppsVar7 + 2);
  } while( true );
}



void __fastcall FUN_008d76f0(undefined4 *param_1)

{
  undefined4 *puVar1;
  code **ppcVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_c = ExceptionList;
  puStack_8 = &LAB_00bd39e6;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxXmlNode::vftable;
  puVar1 = (undefined4 *)param_1[0x16];
  local_4 = 1;
  while (puVar1 != (undefined4 *)0x0) {
    ppcVar2 = (code **)*puVar1;
    puVar1 = (undefined4 *)puVar1[0x17];
    (**ppcVar2)(1,uVar3);
  }
  puVar1 = (undefined4 *)param_1[0x14];
  while (puVar1 != (undefined4 *)0x0) {
    ppcVar2 = (code **)*puVar1;
    puVar1 = (undefined4 *)puVar1[0x13];
    (**ppcVar2)(1);
  }
  _free((void *)param_1[0x12]);
  if ((uint)param_1[0x11] < 8) {
    param_1[0x11] = 7;
    param_1[0x10] = 0;
    *(undefined2 *)(param_1 + 0xc) = 0;
    _free((void *)param_1[9]);
    if ((uint)param_1[8] < 8) {
      param_1[8] = 7;
      param_1[7] = 0;
      *(undefined2 *)(param_1 + 3) = 0;
      ExceptionList = local_c;
      return;
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[0xc]);
}



void __fastcall FUN_008d77d0(int param_1)

{
  _free(*(void **)(param_1 + 0x54));
  if (7 < *(uint *)(param_1 + 0x50)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x3c));
  }
  *(undefined4 *)(param_1 + 0x50) = 7;
  *(undefined4 *)(param_1 + 0x4c) = 0;
  *(undefined2 *)(param_1 + 0x3c) = 0;
  _free(*(void **)(param_1 + 0x30));
  if (7 < *(uint *)(param_1 + 0x2c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x18));
  }
  *(undefined4 *)(param_1 + 0x2c) = 7;
  *(undefined4 *)(param_1 + 0x28) = 0;
  *(undefined2 *)(param_1 + 0x18) = 0;
  return;
}



undefined4 __thiscall FUN_008d7840(undefined4 param_1_00,byte param_1)

{
  FUN_008d76f0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_008d7860(int param_1_00,undefined4 param_1,undefined2 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6cd3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 1;
  FUN_00412939(param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



int FUN_008d78d0(int param_1,char *param_2,undefined4 param_3)

{
  uint uVar1;
  undefined **local_1c;
  undefined4 local_18;
  undefined4 local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd3a31;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  local_14 = 0;
  local_10 = param_1;
  local_1c = wxMBConvUTF8::vftable;
  local_18 = 0;
  local_4 = 1;
  FUN_008a4750(param_2,&local_1c,param_3);
  local_14 = 1;
  local_4 = local_4 & 0xffffff00;
  FUN_008603c0(uVar1);
  if ((((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 != (char *)0x0)) && (*param_2 != '\0'))
     && (*(int *)(param_1 + 0x14) == 0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/string.h",0x6fc,"wxString::FromUTF8Unchecked",
                 "!utf8 || !*utf8 || !s.empty()","string must be valid UTF-8");
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall
FUN_008d79a0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc565b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = wxXmlAttribute::vftable;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[8] = 0;
  param_1_00[0x10] = 7;
  param_1_00[0xf] = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 0xb) = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  param_1_00[0x11] = 0;
  param_1_00[0x13] = param_3;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_008d7a40(undefined4 *param_1)

{
  *param_1 = wxXmlAttribute::vftable;
  _free((void *)param_1[0x11]);
  if (7 < (uint)param_1[0x10]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xb]);
  }
  param_1[0x10] = 7;
  param_1[0xf] = 0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  _free((void *)param_1[8]);
  if (7 < (uint)param_1[7]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[2]);
  }
  param_1[7] = 7;
  param_1[6] = 0;
  *(undefined2 *)(param_1 + 2) = 0;
  return;
}



undefined4 __thiscall FUN_008d7ab0(undefined4 param_1_00,byte param_1)

{
  FUN_008d7a40();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_008d7ad0(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3a66;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *param_1_00 = wxXmlNode::vftable;
  param_1_00[1] = param_1;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  param_1_00[9] = 0;
  param_1_00[0x11] = 7;
  param_1_00[0x10] = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 0xc) = 0;
  FID_conflict_assign(param_3,0,0xffffffff);
  param_1_00[0x12] = 0;
  param_1_00[0x14] = 0;
  param_1_00[0x15] = 0;
  param_1_00[0x16] = 0;
  param_1_00[0x17] = 0;
  param_1_00[0x18] = param_4;
  *(undefined *)(param_1_00 + 0x19) = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 1)) && (*(int *)(param_3 + 0x14) != 0))
  {
    FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0x53,"wxXmlNode::wxXmlNode",
                 "type != wxXML_ELEMENT_NODE || content.empty()","element nodes can\'t have content"
                 ,uVar1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_008d7bc0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar3 = operator_new(0x50);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_008d79a0(param_1,param_2,0);
  }
  iVar1 = *(int *)(param_1_00 + 0x50);
  if (iVar1 == 0) {
    *(undefined4 *)(param_1_00 + 0x50) = uVar4;
    ExceptionList = local_c;
    return;
  }
  iVar2 = *(int *)(iVar1 + 0x4c);
  while (iVar2 != 0) {
    iVar1 = *(int *)(iVar1 + 0x4c);
    iVar2 = *(int *)(iVar1 + 0x4c);
  }
  *(undefined4 *)(iVar1 + 0x4c) = uVar4;
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_008d7c60(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 0x58);
  while( true ) {
    if (iVar1 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      return param_1;
    }
    if ((*(int *)(iVar1 + 4) == 3) || (*(int *)(iVar1 + 4) == 4)) break;
    iVar1 = *(int *)(iVar1 + 0x5c);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(iVar1 + 0x2c,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



void FUN_008d7ce0(void)

{
  FUN_008d78d0();
  return;
}



void FUN_008d7f40(undefined4 *param_1)

{
  char cVar1;
  int iVar2;
  void *pvVar3;
  undefined4 uVar4;
  undefined4 local_50;
  undefined local_4c [4];
  undefined4 local_48;
  uint local_34;
  void *local_30;
  undefined local_28 [4];
  undefined4 local_24;
  uint local_10;
  void *local_c;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_50;
  local_50 = 0;
  FUN_008d7ce0();
  if (param_1[4] == 0) {
    if ((*(char *)(param_1 + 0x17) == '\0') || (cVar1 = FUN_008d75c0(local_28), cVar1 == '\0')) {
      pvVar3 = operator_new(0x68);
      if (pvVar3 == (void *)0x0) {
        uVar4 = 0;
      }
      else {
        FUN_004325b6(L"text");
        uVar4 = FUN_008da260(*param_1);
        uVar4 = FUN_008d7ad0(3,local_4c,local_28,uVar4);
        FUN_0040159c();
      }
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        if ((param_1[3] != 0) && (*(int *)(param_1[3] + 0x5c) != 0)) {
          FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0x2aa,"TextHnd",
                       "ctx->lastChild == 0 || ctx->lastChild->GetNext() == 0",0);
        }
        if (((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[3] != 0)) &&
           (*(int *)(param_1[3] + 0x54) != param_1[2])) {
          FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0x2aa,"TextHnd",
                       "ctx->lastChild == 0 || ctx->lastChild->GetParent() == ctx->node",0);
        }
      }
      (**(code **)(*(int *)param_1[2] + 0xc))(uVar4,param_1[3]);
      param_1[4] = uVar4;
      param_1[3] = uVar4;
    }
  }
  else {
    iVar2 = FUN_008531f0(local_4c,param_1[4] + 0x2c,local_28);
    if (param_1[4] + 0x2c != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    _free(local_30);
    if (7 < local_34) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_48);
    }
  }
  _free(local_c);
  if (local_10 < 8) {
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_24);
}



void FUN_008d80f0(undefined4 *param_1)

{
  undefined4 *puVar1;
  void *pvVar2;
  undefined4 uVar3;
  bool bVar4;
  undefined local_48 [4];
  uint local_44;
  undefined4 local_34;
  uint local_30;
  void *local_2c;
  undefined local_24 [4];
  uint local_20;
  undefined4 local_10;
  uint local_c;
  void *local_8;
  undefined4 uStack_4;
  
  puVar1 = param_1;
  pvVar2 = operator_new(0x68);
  bVar4 = pvVar2 == (void *)0x0;
  if (bVar4) {
    param_1 = (undefined4 *)0x0;
  }
  else {
    FUN_004325b6(&DAT_00fae9c8);
    FUN_004325b6(L"cdata");
    uVar3 = FUN_008da260(*param_1);
    param_1 = (undefined4 *)FUN_008d7ad0(4,local_48,local_24,uVar3);
  }
  if (!bVar4) {
    _free(local_2c);
    if (7 < local_30) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_44);
    }
    local_30 = 7;
    local_34 = 0;
    local_44 = local_44 & 0xffff0000;
  }
  if (!bVar4) {
    _free(local_8);
    if (7 < local_c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_20);
    }
    local_c = 7;
    local_10 = 0;
    local_20 = local_20 & 0xffff0000;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if ((puVar1[3] != 0) && (*(int *)(puVar1[3] + 0x5c) != 0)) {
      FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0x2b9,"StartCdataHnd",
                   "ctx->lastChild == 0 || ctx->lastChild->GetNext() == 0",0);
    }
    if (((PTR_FUN_03235c4c != (undefined *)0x0) && (puVar1[3] != 0)) &&
       (*(int *)(puVar1[3] + 0x54) != puVar1[2])) {
      FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0x2b9,"StartCdataHnd",
                   "ctx->lastChild == 0 || ctx->lastChild->GetParent() == ctx->node",0);
    }
  }
  (**(code **)(*(int *)puVar1[2] + 0xc))(param_1,puVar1[3]);
  puVar1[4] = uStack_4;
  puVar1[3] = uStack_4;
  return;
}



void FUN_008d8270(undefined4 *param_1)

{
  undefined4 *puVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  bool bVar5;
  undefined local_48 [4];
  uint local_44;
  undefined4 local_34;
  uint local_30;
  void *local_2c;
  uint local_20;
  undefined4 local_10;
  uint local_c;
  void *local_8;
  undefined4 uStack_4;
  
  puVar1 = param_1;
  pvVar2 = operator_new(0x68);
  bVar5 = pvVar2 == (void *)0x0;
  if (bVar5) {
    param_1 = (undefined4 *)0x0;
  }
  else {
    FUN_004325b6(L"comment");
    uVar3 = FUN_008da260(*param_1);
    uVar4 = FUN_008d7ce0(uVar3);
    param_1 = (undefined4 *)FUN_008d7ad0(8,local_48,uVar4,uVar3);
  }
  if (!bVar5) {
    _free(local_8);
    if (7 < local_c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_20);
    }
    local_c = 7;
    local_10 = 0;
    local_20 = local_20 & 0xffff0000;
  }
  if (!bVar5) {
    _free(local_2c);
    if (7 < local_30) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_44);
    }
    local_30 = 7;
    local_34 = 0;
    local_44 = local_44 & 0xffff0000;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if ((puVar1[3] != 0) && (*(int *)(puVar1[3] + 0x5c) != 0)) {
      FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0x2d2,"CommentHnd",
                   "ctx->lastChild == 0 || ctx->lastChild->GetNext() == 0",0);
    }
    if (((PTR_FUN_03235c4c != (undefined *)0x0) && (puVar1[3] != 0)) &&
       (*(int *)(puVar1[3] + 0x54) != puVar1[2])) {
      FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0x2d2,"CommentHnd",
                   "ctx->lastChild == 0 || ctx->lastChild->GetParent() == ctx->node",0);
    }
  }
  (**(code **)(*(int *)puVar1[2] + 0xc))(param_1,puVar1[3]);
  puVar1[4] = 0;
  puVar1[3] = uStack_4;
  return;
}



void FUN_008d83e0(undefined4 *param_1)

{
  undefined4 *puVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  bool bVar6;
  undefined4 local_44;
  uint local_30;
  void *local_2c;
  undefined4 local_20;
  uint local_c;
  void *local_8;
  undefined4 uStack_4;
  
  puVar1 = param_1;
  pvVar2 = operator_new(0x68);
  bVar6 = pvVar2 == (void *)0x0;
  if (bVar6) {
    param_1 = (undefined4 *)0x0;
  }
  else {
    uVar3 = FUN_008da260(*param_1);
    uVar4 = FUN_008d7ce0(uVar3);
    uVar5 = FUN_008d7ce0(uVar4);
    param_1 = (undefined4 *)FUN_008d7ad0(7,uVar5,uVar4,uVar3);
  }
  if ((!bVar6) && (_free(local_2c), 7 < local_30)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_44);
  }
  if ((!bVar6) && (_free(local_8), 7 < local_c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_20);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if ((puVar1[3] != 0) && (*(int *)(puVar1[3] + 0x5c) != 0)) {
      FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0x2e1,"PIHnd",
                   "ctx->lastChild == 0 || ctx->lastChild->GetNext() == 0",0);
    }
    if (((PTR_FUN_03235c4c != (undefined *)0x0) && (puVar1[3] != 0)) &&
       (*(int *)(puVar1[3] + 0x54) != puVar1[2])) {
      FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0x2e1,"PIHnd",
                   "ctx->lastChild == 0 || ctx->lastChild->GetParent() == ctx->node",0);
    }
  }
  (**(code **)(*(int *)puVar1[2] + 0xc))(param_1,puVar1[3]);
  puVar1[4] = 0;
  puVar1[3] = uStack_4;
  return;
}



void FUN_008d86b0(undefined4 param_1,undefined4 param_2,uint *param_3)

{
  int iVar1;
  uint uVar2;
  uint *puVar3;
  char local_50;
  undefined local_4f;
  undefined local_3c [4];
  undefined4 local_38;
  uint local_24;
  void *local_20;
  ushort local_18 [10];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_50;
  FUN_0043c211(param_2);
  FUN_00862d20(local_3c);
  _free(local_20);
  if (7 < local_24) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_38);
  }
  local_4f = 0;
  *param_3 = 0;
  uVar2 = 0;
  puVar3 = param_3;
  do {
    puVar3 = puVar3 + 1;
    local_50 = (char)uVar2 + '\x01';
    iVar1 = FUN_0085fb70(local_18,&local_50,2);
    if (iVar1 == -1) {
      *puVar3 = 0xffffffff;
    }
    *puVar3 = (uint)local_18[0];
    uVar2 = uVar2 + 1;
  } while (uVar2 < 0xff);
  param_3[0x100] = 0;
  param_3[0x101] = 0;
  param_3[0x102] = 0;
  FUN_00861510();
  ___security_check_cookie_4();
  return;
}



undefined FUN_008d8790(int *param_1,undefined4 *param_2,undefined4 param_3,int param_4)

{
  undefined uVar1;
  int iVar2;
  void *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3a98;
  local_c = ExceptionList;
  if (param_2[5] == 0) {
    return 1;
  }
  iVar2 = param_4;
  ExceptionList = &local_c;
  if ((param_4 == 0) && (iVar2 = DAT_032bd4d8, DAT_032bd4d8 == 0)) {
    iVar2 = FUN_00861480(DAT_0323f878 ^ (uint)&stack0xffffffec);
    DAT_032bd4d8 = iVar2;
  }
  FUN_00432413(&param_2,iVar2);
  local_4 = 0;
  if (param_2[1] == 0) {
    local_4 = 0xffffffff;
    thunk_FUN_0043c1dd();
    ExceptionList = local_c;
    return 0;
  }
  (**(code **)(*param_1 + 0x28))(*param_2,param_2[1]);
  uVar1 = (**(code **)(*param_1 + 0x10))();
  local_c = (void *)0xffffffff;
  thunk_FUN_0043c1dd();
  ExceptionList = unaff_ESI;
  return uVar1;
}



void FUN_008d8880(undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5)

{
  short sVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  short *psVar5;
  char cVar6;
  uint uVar7;
  undefined4 *****pppppuVar8;
  short **ppsVar9;
  short *psVar10;
  int iVar11;
  short **ppsVar12;
  undefined4 *puVar13;
  short **ppsVar14;
  int local_88;
  undefined4 local_84;
  undefined4 local_80;
  undefined local_7c [4];
  undefined4 local_78;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 *****local_30 [4];
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd3ad8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_88;
  uVar7 = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  local_84 = param_1;
  local_88 = param_2;
  local_80 = param_4;
  local_1c = 7;
  local_20 = 0;
  local_30[0] = (undefined4 *****)((uint)local_30[0] & 0xffff0000);
  local_18 = (void *)0x0;
  local_4 = 0;
  if ((*(int *)(param_2 + 0x14) != 7) &&
     (cVar6 = FUN_004182d2(*(int *)(param_2 + 0x14),1), cVar6 != '\0')) {
    local_20 = 0;
    pppppuVar8 = local_30[0];
    if (local_1c < 8) {
      pppppuVar8 = local_30;
    }
    *(undefined2 *)pppppuVar8 = 0;
  }
  uVar2 = *(uint *)(param_2 + 0x18);
  ppsVar9 = (short **)(param_2 + 4);
  ppsVar14 = ppsVar9;
  if (7 < uVar2) {
    ppsVar14 = (short **)*ppsVar9;
  }
  if (ppsVar14 != (short **)0x0) {
    ppsVar12 = ppsVar9;
    if (7 < uVar2) {
      ppsVar12 = (short **)*ppsVar9;
    }
    if (ppsVar12 <= ppsVar14) {
      if (7 < uVar2) {
        ppsVar9 = (short **)*ppsVar9;
      }
      if (ppsVar14 <= (short **)((int)ppsVar9 + *(int *)(param_2 + 0x14) * 2)) goto LAB_008d8970;
    }
  }
  FUN_00a3fb10(uVar7);
LAB_008d8970:
  do {
    uVar2 = *(uint *)(local_88 + 0x18);
    if (uVar2 < 8) {
      iVar11 = local_88 + 4;
    }
    else {
      iVar11 = *(int *)(local_88 + 4);
    }
    iVar3 = *(int *)(local_88 + 0x14) * 2;
    ppsVar9 = (short **)(iVar3 + iVar11);
    if (ppsVar9 == (short **)0x0) {
LAB_008d89b6:
      FUN_00a3fb10(uVar7);
    }
    else {
      ppsVar12 = (short **)(local_88 + 4);
      if (7 < uVar2) {
        ppsVar12 = (short **)*ppsVar12;
      }
      if (ppsVar9 < ppsVar12) goto LAB_008d89b6;
      puVar13 = (undefined4 *)(local_88 + 4);
      if (7 < uVar2) {
        puVar13 = (undefined4 *)*puVar13;
      }
      if ((short **)(iVar3 + (int)puVar13) < ppsVar9) goto LAB_008d89b6;
    }
    if ((param_2 != -4) && ((param_2 == 0 || (param_2 != local_88)))) {
      FUN_00a3fb10(uVar7);
    }
    if (ppsVar14 == ppsVar9) {
      FUN_008d8790(local_84,local_34,param_3,local_80);
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30[0]);
      }
      ExceptionList = local_c;
      ___security_check_cookie_4();
      return;
    }
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 8) {
        iVar11 = param_2 + 4;
      }
      else {
        iVar11 = *(int *)(param_2 + 4);
      }
      if ((short **)(iVar11 + *(int *)(param_2 + 0x14) * 2) <= ppsVar14) {
        FUN_00a3fb10();
      }
    }
    sVar1 = *(short *)ppsVar14;
    switch(sVar1) {
    case 0xd:
      psVar5 = &DAT_00d3ea74;
      do {
        psVar10 = psVar5;
        psVar5 = psVar10 + 1;
      } while (*psVar10 != 0);
      FUN_00473ccc(&DAT_00d3ea74,(int)(psVar10 + -0x69f53a) >> 1);
      break;
    default:
      if (param_5 == 1) {
        if (sVar1 == 9) {
          psVar5 = &DAT_00d3ea5c;
          do {
            psVar10 = psVar5;
            psVar5 = psVar10 + 1;
          } while (*psVar10 != 0);
          FUN_00473ccc(&DAT_00d3ea5c,(int)(psVar10 + -0x69f52e) >> 1);
        }
        else if (sVar1 == 10) {
          psVar5 = &DAT_00d3ea68;
          do {
            psVar10 = psVar5;
            psVar5 = psVar10 + 1;
          } while (*psVar10 != 0);
          FUN_00473ccc(&DAT_00d3ea68,(int)(psVar10 + -0x69f534) >> 1);
        }
        else {
          if (sVar1 != 0x22) {
            FUN_00853fa0(sVar1,1);
            local_4._0_1_ = 1;
            FID_conflict_append(local_58,0,0xffffffff);
            local_4 = (uint)local_4._1_3_ << 8;
            _free(local_3c);
            uVar4 = local_54;
            uVar2 = local_40;
            goto joined_r0x008d8c1e;
          }
          psVar5 = &DAT_00d247ec;
          do {
            psVar10 = psVar5;
            psVar5 = psVar10 + 1;
          } while (*psVar10 != 0);
          FUN_00473ccc(&DAT_00d247ec,(int)(psVar10 + -0x6923f6) >> 1);
        }
      }
      else {
        FUN_00853fa0(sVar1,1);
        local_4._0_1_ = 2;
        FID_conflict_append(local_7c,0,0xffffffff);
        local_4 = (uint)local_4._1_3_ << 8;
        _free(local_60);
        uVar4 = local_78;
        uVar2 = local_64;
joined_r0x008d8c1e:
        if (7 < uVar2) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uVar4);
        }
      }
      break;
    case 0x26:
      psVar5 = &DAT_00d247fc;
      do {
        psVar10 = psVar5;
        psVar5 = psVar10 + 1;
      } while (*psVar10 != 0);
      FUN_00473ccc(&DAT_00d247fc,(int)(psVar10 + -0x6923fe) >> 1);
      break;
    case 0x3c:
      psVar5 = &DAT_00d24814;
      do {
        psVar10 = psVar5;
        psVar5 = psVar10 + 1;
      } while (*psVar10 != 0);
      FUN_00473ccc(&DAT_00d24814,(int)(psVar10 + -0x69240a) >> 1);
      break;
    case 0x3e:
      psVar5 = &DAT_00d24808;
      do {
        psVar10 = psVar5;
        psVar5 = psVar10 + 1;
      } while (*psVar10 != 0);
      FUN_00473ccc(&DAT_00d24808,(int)(psVar10 + -0x692404) >> 1);
    }
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 8) {
        iVar11 = param_2 + 4;
      }
      else {
        iVar11 = *(int *)(param_2 + 4);
      }
      if ((short **)(iVar11 + *(int *)(param_2 + 0x14) * 2) <= ppsVar14) {
        FUN_00a3fb10();
      }
    }
    ppsVar14 = (short **)((int)ppsVar14 + 2);
  } while( true );
}



void __thiscall
FUN_008d8d20(undefined4 param_1_00,undefined4 param_1,int param_2,undefined4 param_3,char param_4,
            undefined4 param_5)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc7df8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00820e3f(param_5,param_1,2);
  FUN_00840a00(&param_2,param_1,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20(param_1);
  FUN_0083fe90(param_1_00,uVar3,uVar4);
  iVar1 = param_2;
  if ((param_4 != '\0') && (param_2 != 0)) {
    _free(*(void **)(param_2 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall thunk_FUN_008d7bc0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  pvVar3 = operator_new(0x50);
  uStack_4 = 0;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_008d79a0(param_1,param_2,0);
  }
  iVar1 = *(int *)(param_1_00 + 0x50);
  if (iVar1 == 0) {
    *(undefined4 *)(param_1_00 + 0x50) = uVar4;
    ExceptionList = pvStack_c;
    return;
  }
  iVar2 = *(int *)(iVar1 + 0x4c);
  while (iVar2 != 0) {
    iVar1 = *(int *)(iVar1 + 0x4c);
    iVar2 = *(int *)(iVar1 + 0x4c);
  }
  *(undefined4 *)(iVar1 + 0x4c) = uVar4;
  ExceptionList = pvStack_c;
  return;
}



void FUN_008d8e10(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc7580;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_58;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d23e68);
  local_4 = 0;
  uVar2 = FUN_008d7860(param_2,0x20);
  local_4._0_1_ = 1;
  FID_conflict_append(uVar2,0,0xffffffff);
  local_4 = (uint)local_4._1_3_ << 8;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  FUN_008d8790(param_1,local_34,param_3,param_4,uVar1);
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined FUN_008d8f00(int *param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5,
                      int param_6)

{
  int iVar1;
  bool bVar2;
  bool bVar3;
  int iVar4;
  int iVar5;
  undefined uVar6;
  char cVar7;
  undefined4 uVar8;
  undefined local_234 [4];
  uint local_230;
  undefined4 local_220;
  uint local_21c;
  void *local_218;
  undefined local_210 [12];
  undefined local_204 [4];
  undefined4 local_200;
  uint local_1ec;
  void *local_1e8;
  undefined local_1e0 [36];
  undefined local_1bc [36];
  undefined local_198 [36];
  undefined local_174 [36];
  undefined local_150 [36];
  undefined local_12c [36];
  undefined local_108 [36];
  undefined local_e4 [36];
  undefined local_c0 [36];
  undefined local_9c [36];
  undefined local_78 [36];
  undefined local_54 [36];
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3d00;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  switch(*(undefined4 *)(param_2 + 4)) {
  case 1:
    FUN_004325b6(&DAT_00d25004);
    local_4 = 3;
    cVar7 = FUN_008d8790(param_1,local_174,param_4,param_5);
    if (cVar7 == '\0') {
LAB_008d9102:
      bVar3 = false;
    }
    else {
      cVar7 = FUN_008d8790(param_1,param_2 + 8,param_4,param_5);
      bVar3 = true;
      if (cVar7 == '\0') goto LAB_008d9102;
    }
    bVar2 = false;
    local_4 = 0xffffffff;
    FUN_0040159c();
    if (bVar3) {
      iVar1 = *(int *)(param_2 + 0x50);
      while ((iVar1 != 0 && (bVar3))) {
        uVar8 = FUN_008535a0(local_30,&DAT_00d1fc10,iVar1 + 4);
        local_4 = 4;
        uVar8 = FUN_008533d0(local_54,uVar8,&DAT_00d3eae8);
        local_4 = 5;
        cVar7 = FUN_008d8790(param_1,uVar8,param_4,param_5);
        if ((cVar7 == '\0') ||
           (cVar7 = FUN_008d8880(param_1,iVar1 + 0x28,param_4,param_5,1), cVar7 == '\0')) {
LAB_008d920e:
          bVar3 = false;
        }
        else {
          FUN_004325b6(&DAT_00d25000);
          bVar2 = true;
          local_4 = 6;
          cVar7 = FUN_008d8790(param_1,local_1e0,param_4,param_5);
          bVar3 = true;
          if (cVar7 == '\0') goto LAB_008d920e;
        }
        if (bVar2) {
          bVar2 = false;
          FUN_0040159c();
        }
        FUN_0040159c();
        local_4 = 0xffffffff;
        FUN_0040159c();
        iVar1 = *(int *)(iVar1 + 0x4c);
      }
    }
    if (*(int *)(param_2 + 0x58) == 0) {
      FUN_004325b6(&DAT_00d3ead8);
      local_4 = 10;
      uVar6 = FUN_008d8790(param_1,local_9c,param_4,param_5);
      FUN_0040159c();
      ExceptionList = local_c;
      return uVar6;
    }
    FUN_004325b6(&DAT_00d24fcc);
    local_4 = 7;
    cVar7 = FUN_008d8790(param_1,local_12c,param_4,param_5);
    local_4 = 0xffffffff;
    FUN_0040159c();
    iVar5 = *(int *)(param_2 + 0x58);
    iVar1 = 0;
    while (iVar4 = iVar5, iVar4 != 0) {
      if (cVar7 == '\0') {
        ExceptionList = local_c;
        return 0;
      }
      if ((-1 < param_6) && (*(int *)(iVar4 + 4) != 3)) {
        cVar7 = FUN_008d8e10(param_1,param_3 + param_6,param_4,param_5);
      }
      if (cVar7 != '\0') {
        cVar7 = FUN_008d8f00(param_1,iVar4,param_3 + param_6,param_4,param_5,param_6);
      }
      iVar1 = iVar4;
      iVar5 = *(int *)(iVar4 + 0x5c);
    }
    if (cVar7 == '\0') {
      ExceptionList = local_c;
      return 0;
    }
    if (((-1 < param_6) && (iVar1 != 0)) && (*(int *)(iVar1 + 4) != 3)) {
      cVar7 = FUN_008d8e10(param_1,param_3,param_4,param_5);
    }
    if (cVar7 == '\0') {
      ExceptionList = local_c;
      return 0;
    }
    FUN_004325b6(&DAT_00d3eae0);
    bVar3 = false;
    local_4 = 8;
    cVar7 = FUN_008d8790(param_1,local_204,param_4,param_5);
    if ((cVar7 == '\0') ||
       (cVar7 = FUN_008d8790(param_1,param_2 + 8,param_4,param_5), cVar7 == '\0')) {
LAB_008d941b:
      uVar6 = 0;
    }
    else {
      FUN_004325b6(&DAT_00d24fcc);
      bVar3 = true;
      local_4 = 9;
      cVar7 = FUN_008d8790(param_1,local_234,param_4,param_5);
      if (cVar7 == '\0') goto LAB_008d941b;
      uVar6 = 1;
    }
    if (bVar3) {
      _free(local_218);
      if (7 < local_21c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_230);
      }
      local_21c = 7;
      local_220 = 0;
      local_230 = local_230 & 0xffff0000;
    }
    _free(local_1e8);
    if (7 < local_1ec) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_200);
    }
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\xml\\xml.cpp",0x448,"`anonymous-namespace\'::OutputNode",
                   "Assert failure","unsupported node type");
    }
    uVar6 = 0;
    break;
  case 3:
    if (*(char *)(param_2 + 100) == '\0') {
      uVar6 = FUN_008d8880(param_1,param_2 + 0x2c,param_4,param_5,0,
                           DAT_0323f878 ^ (uint)&stack0xfffffdb0);
    }
    else {
      FUN_00432231(local_210);
      iVar1 = *param_1;
      local_4 = 2;
      uVar8 = FUN_00875210(*(undefined4 *)(param_2 + 0x40));
      (**(code **)(iVar1 + 0x28))(uVar8);
      FUN_00432214();
      uVar6 = 1;
    }
    break;
  case 4:
    FUN_004325b6(L"<![CDATA[");
    local_4 = 0;
    bVar3 = false;
    cVar7 = FUN_008d8790(param_1,local_e4,param_4,param_5);
    if ((cVar7 == '\0') ||
       (cVar7 = FUN_008d8790(param_1,param_2 + 0x2c,param_4,param_5), cVar7 == '\0')) {
LAB_008d8fec:
      uVar6 = 0;
    }
    else {
      FUN_004325b6(&DAT_00d3eaf0);
      local_4 = 1;
      bVar3 = true;
      cVar7 = FUN_008d8790(param_1,local_78,param_4,param_5);
      if (cVar7 == '\0') goto LAB_008d8fec;
      uVar6 = 1;
    }
    if (bVar3) {
      FUN_0040159c();
    }
    FUN_0040159c();
    break;
  case 7:
    FUN_004325b6(&DAT_00d3eabc);
    local_4 = 0xd;
    bVar2 = false;
    bVar3 = false;
    cVar7 = FUN_008d8790(param_1,local_c0,param_4,param_5);
    if ((cVar7 == '\0') ||
       (cVar7 = FUN_008d8790(param_1,param_2 + 8,param_4,param_5), cVar7 == '\0')) {
LAB_008d96b2:
      uVar6 = 0;
    }
    else {
      FUN_004325b6(&DAT_00d1fc10);
      local_4 = 0xe;
      bVar2 = false;
      bVar3 = true;
      cVar7 = FUN_008d8790(param_1,local_108,param_4,param_5);
      if ((cVar7 == '\0') ||
         (cVar7 = FUN_008d8790(param_1,param_2 + 0x2c,param_4,param_5), cVar7 == '\0'))
      goto LAB_008d96b2;
      FUN_004325b6(&DAT_00d24ff8);
      local_4 = 0xf;
      bVar2 = true;
      bVar3 = true;
      cVar7 = FUN_008d8790(param_1,local_150,param_4,param_5);
      if (cVar7 == '\0') goto LAB_008d96b2;
      uVar6 = 1;
    }
    if (bVar2) {
      FUN_0040159c();
    }
    if (bVar3) {
      FUN_0040159c();
    }
    FUN_0040159c();
    break;
  case 8:
    FUN_004325b6(L"<!--");
    local_4 = 0xb;
    bVar3 = false;
    cVar7 = FUN_008d8790(param_1,local_198,param_4,param_5);
    if ((cVar7 == '\0') ||
       (cVar7 = FUN_008d8790(param_1,param_2 + 0x2c,param_4,param_5), cVar7 == '\0')) {
LAB_008d957d:
      uVar6 = 0;
    }
    else {
      FUN_004325b6(&DAT_00d3eac4);
      local_4 = 0xc;
      bVar3 = true;
      cVar7 = FUN_008d8790(param_1,local_1bc,param_4,param_5);
      if (cVar7 == '\0') goto LAB_008d957d;
      uVar6 = 1;
    }
    if (bVar3) {
      FUN_0040159c();
    }
    FUN_0040159c();
  }
  ExceptionList = local_c;
  return uVar6;
}



void __thiscall FUN_008d9770(int param_1_00,undefined4 param_1)

{
  short sVar1;
  int iVar2;
  int *piVar3;
  char cVar4;
  short *psVar5;
  undefined auStack_e0 [4];
  undefined2 local_dc;
  undefined4 local_cc;
  int local_c8;
  undefined4 local_c4;
  undefined4 uStack_c0;
  undefined auStack_bc [4];
  undefined2 local_b8;
  undefined4 uStack_b4;
  undefined4 uStack_b0;
  int iStack_ac;
  undefined4 local_a8;
  undefined *local_a4;
  int *local_a0;
  undefined auStack_84 [3];
  char local_81;
  uint local_80;
  int *local_7c;
  undefined *local_78;
  undefined *local_74;
  undefined local_70 [4];
  uint local_6c;
  undefined4 local_5c;
  uint local_58;
  void *local_54;
  undefined4 local_4c;
  undefined local_48 [20];
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3d7c;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_84;
  ExceptionList = &local_c;
  local_80 = 0;
  if (*(int *)(param_1_00 + 0x50) != 0) {
    for (iVar2 = *(int *)(*(int *)(param_1_00 + 0x50) + 0x58); iVar2 != 0;
        iVar2 = *(int *)(iVar2 + 0x5c)) {
      if (*(int *)(iVar2 + 4) == 1) {
        local_4c = 0;
        local_7c = (int *)0x0;
        local_4._0_1_ = 1;
        local_4._1_3_ = 0;
        local_a0 = (int *)0x8d97f4;
        local_78 = (undefined *)operator_new(0x10);
        local_4._0_1_ = 2;
        if (local_78 != (undefined *)0x0) {
          local_a0 = (int *)0x8d9812;
          FUN_00862d20();
        }
        local_4._0_1_ = 1;
        local_a0 = (int *)0x8d9828;
        FUN_008d74c0();
        local_a0 = (int *)0x8d9836;
        FUN_0081c0f1();
        local_78 = auStack_bc;
        uStack_c0 = 0xffffffff;
        local_c8 = param_1_00 + 0x2c;
        local_c4 = 0;
        local_a4 = (undefined *)0x7;
        local_a8 = 0;
        local_4._0_1_ = 3;
        local_b8 = 0;
        local_cc = 0x8d9865;
        FID_conflict_assign();
        local_a0 = (int *)0x0;
        local_74 = auStack_e0;
        local_c8 = 7;
        local_cc = 0;
        local_dc = 0;
        local_4._0_1_ = 4;
        FID_conflict_assign(param_1_00 + 8,0,0xffffffff);
        local_c4 = 0;
        local_4._0_1_ = 3;
        FUN_0084af30(local_34,local_48);
        local_4 = CONCAT31(local_4._1_3_,6);
        FUN_0081b5bc();
        piVar3 = local_7c;
        local_a0 = (int *)0x0;
        local_a4 = local_34;
        local_a8 = param_1;
        iStack_ac = 0x8d98dc;
        local_81 = FUN_008d8790();
        iVar2 = *(int *)(param_1_00 + 0x50);
        if (iVar2 != 0) {
          iVar2 = *(int *)(iVar2 + 0x58);
        }
        goto joined_r0x008d98ef;
      }
    }
  }
LAB_008d9a1b:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
joined_r0x008d98ef:
  if ((local_81 == '\0') || (iVar2 == 0)) goto LAB_008d99c2;
  local_a0 = piVar3;
  local_a4 = (undefined *)0x0;
  local_a8 = 0;
  uStack_b0 = param_1;
  uStack_b4 = 0x8d990f;
  iStack_ac = iVar2;
  cVar4 = FUN_008d8f00();
  if (cVar4 == '\0') {
LAB_008d9979:
    local_81 = '\0';
  }
  else {
    local_6c = local_6c & 0xffff0000;
    psVar5 = &DAT_00d23e68;
    local_58 = 7;
    local_5c = 0;
    do {
      sVar1 = *psVar5;
      psVar5 = psVar5 + 1;
    } while (sVar1 != 0);
    local_a0 = (int *)&DAT_00d23e68;
    local_a4 = (undefined *)0x8d994f;
    FID_conflict_assign();
    local_54 = (void *)0x0;
    local_80 = local_80 | 1;
    local_a0 = (int *)0x0;
    local_a4 = local_70;
    local_a8 = param_1;
    local_4 = CONCAT31(local_4._1_3_,7);
    iStack_ac = 0x8d996d;
    cVar4 = FUN_008d8790();
    local_81 = '\x01';
    if (cVar4 == '\0') goto LAB_008d9979;
  }
  local_4 = 6;
  if ((local_80 & 1) != 0) {
    local_80 = local_80 & 0xfffffffe;
    local_a0 = (int *)0x8d999e;
    _free(local_54);
    if (7 < local_58) {
                    // WARNING: Subroutine does not return
      local_a0 = (int *)&UNK_008d99b2;
      FUN_00a3f6a1();
    }
  }
  iVar2 = *(int *)(iVar2 + 0x5c);
  goto joined_r0x008d98ef;
LAB_008d99c2:
  local_a0 = (int *)0x8d99cf;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    local_a0 = (int *)&UNK_008d99e3;
    FUN_00a3f6a1();
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_4 = local_4 & 0xffffff00;
  if (piVar3 != (int *)0x0) {
    local_a0 = (int *)0x8d9a0f;
    (**(code **)(*piVar3 + 0x18))();
  }
  goto LAB_008d9a1b;
}



void FUN_008d9a50(int *param_1,undefined4 param_2,byte param_3)

{
  short sVar1;
  char cVar2;
  undefined *puVar3;
  undefined4 *puVar4;
  short *psVar5;
  int *piVar6;
  uint uVar7;
  int iVar8;
  code *pcStack_5d0;
  char *pcStack_5cc;
  undefined *puStack_5c8;
  code *pcStack_5c4;
  undefined **ppuStack_5c0;
  undefined *puStack_5bc;
  undefined *puStack_5b8;
  undefined auStack_598 [2];
  undefined local_596;
  char cStack_595;
  uint local_594;
  int local_590;
  code **local_58c;
  uint uStack_584;
  undefined4 uStack_574;
  uint uStack_570;
  void *pvStack_56c;
  undefined local_564 [4];
  uint local_560;
  undefined4 local_550;
  uint local_54c;
  void *local_548;
  uint local_53c;
  undefined4 local_52c;
  uint local_528;
  void *local_524;
  undefined auStack_51c [44];
  uint uStack_4f0;
  void *pvStack_4ec;
  undefined *local_494;
  undefined4 local_490;
  undefined4 *local_48c;
  undefined4 local_488;
  undefined4 local_484;
  undefined local_480 [4];
  undefined2 local_47c;
  int local_46c;
  undefined4 local_468;
  undefined4 local_464;
  undefined auStack_45c [4];
  undefined2 local_458;
  int local_448;
  undefined4 local_444;
  undefined4 local_440;
  byte local_438;
  uint uStack_41c;
  void *pvStack_418;
  undefined local_410 [1024];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd3e4f;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_598;
  ExceptionList = &local_c;
  local_594 = 0;
  local_490 = 0;
  local_48c = (undefined4 *)0x0;
  local_488 = 0;
  local_484 = 0;
  local_468 = 7;
  local_46c = 0;
  local_47c = 0;
  local_464 = 0;
  local_444 = 7;
  local_448 = 0;
  local_458 = 0;
  local_440 = 0;
  local_438 = 0;
  local_4 = 0;
  puVar3 = (undefined *)FUN_008ddd70();
  puStack_5b8 = (undefined *)0x8d9b18;
  local_58c = (code **)operator_new(0x68);
  local_4._0_1_ = 1;
  if (local_58c == (code **)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    FUN_004325b6();
    local_4 = CONCAT31(local_4._1_3_,2);
    local_594 = 1;
    FUN_004325b6();
    local_4._0_1_ = 3;
    local_4._1_3_ = 0;
    local_594 = 3;
    puStack_5b8 = local_564;
    puStack_5bc = (undefined *)0x9;
    ppuStack_5c0 = (undefined **)0x8d9b81;
    puVar4 = (undefined4 *)FUN_008d7ad0();
  }
  if ((local_594 & 2) != 0) {
    local_594 = local_594 & 0xfffffffd;
    _free(local_548);
    if (7 < local_54c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_54c = 7;
    local_550 = 0;
    local_560 = local_560 & 0xffff0000;
  }
  local_4 = 0;
  if ((local_594 & 1) != 0) {
    _free(local_524);
    if (7 < local_528) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_528 = 7;
    local_52c = 0;
    local_53c = local_53c & 0xffff0000;
  }
  psVar5 = &DAT_00d2f730;
  do {
    sVar1 = *psVar5;
    psVar5 = psVar5 + 1;
  } while (sVar1 != 0);
  puStack_5b8 = (undefined *)0x8d9c41;
  FID_conflict_assign();
  local_438 = ~param_3 & 1;
  local_490 = 0;
  puStack_5b8 = (undefined *)0x8d9c77;
  local_494 = puVar3;
  local_48c = puVar4;
  FUN_008da080();
  puStack_5b8 = &LAB_008d7470;
  puStack_5bc = &LAB_008d7d00;
  pcStack_5c4 = (code *)0x8d9c87;
  ppuStack_5c0 = (undefined **)puVar3;
  FUN_008da0a0();
  pcStack_5c4 = FUN_008d7f40;
  pcStack_5cc = (char *)0x8d9c92;
  puStack_5c8 = puVar3;
  FUN_008da0c0();
  pcStack_5cc = &LAB_008d7490;
  pcStack_5d0 = FUN_008d80f0;
  FUN_008da0f0(puVar3);
  FUN_008da0e0(puVar3,FUN_008d8270);
  FUN_008da0d0(puVar3,FUN_008d83e0);
  FUN_008da110(puVar3,&LAB_008d8550);
  puStack_5bc = (undefined *)0x8d9cd2;
  puStack_5b8 = puVar3;
  FUN_008da130();
  local_596 = 1;
  do {
    puStack_5b8 = (undefined *)0x8d9cf7;
    piVar6 = (int *)(**(code **)(*param_1 + 0x2c))();
    puStack_5b8 = (undefined *)0x8d9d00;
    uVar7 = (**(code **)(*piVar6 + 0x30))();
    cStack_595 = uVar7 < 0x400;
    puStack_5b8 = local_410;
    ppuStack_5c0 = (undefined **)0x8d9d1f;
    puStack_5bc = puVar3;
    iVar8 = FUN_008dbf60();
    if (iVar8 == 0) {
      puStack_5b8 = (undefined *)0x8d9d9a;
      puStack_5b8 = (undefined *)FUN_008da650();
      puStack_5bc = (undefined *)0x8d9da0;
      FUN_008da2b0();
      puStack_5b8 = (undefined *)0x8d9db0;
      FUN_0084b3b0();
      local_58c = &pcStack_5d0;
      local_4._0_1_ = 6;
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(1);
      if (cVar2 != '\0') {
        FUN_004325b6();
        local_4._0_1_ = 7;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,8);
        iVar8 = FUN_0084a340();
        if (iVar8 == 0) {
          FUN_0084d360();
        }
        else {
          puStack_5b8 = (undefined *)0x8d9e2b;
          FUN_0084f210();
        }
        FUN_008433c0();
        FUN_008da260();
        local_58c = (code **)&puStack_5bc;
        ppuStack_5c0 = &puStack_5bc;
        pcStack_5c4 = (code *)0x8d9e67;
        FUN_00432231();
        ppuStack_5c0 = (undefined **)&DAT_00d25fa0;
        pcStack_5c4 = (code *)0xd3eb58;
        puStack_5c8 = (undefined *)0x345;
        pcStack_5cc = "..\\..\\src\\xml\\xml.cpp";
        pcStack_5d0 = (code *)0x1;
        local_4._0_1_ = 10;
        FUN_008423d0();
        ppuStack_5c0 = (undefined **)auStack_51c;
        local_4._0_1_ = 0xc;
        pcStack_5c4 = (code *)0x8d9eb0;
        FUN_008d8d20();
        local_4._0_1_ = 9;
        FUN_00842440();
        local_4._0_1_ = 8;
        FUN_0081b5bc();
        _free(pvStack_56c);
        if (7 < uStack_570) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        uStack_570 = 7;
        uStack_574 = 0;
        uStack_584 = uStack_584 & 0xffff0000;
        _free(pvStack_4ec);
        if (7 < uStack_4f0) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
      }
      local_596 = 0;
      local_4 = (uint)local_4._1_3_ << 8;
      _free(pvStack_418);
      if (7 < uStack_41c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if (puVar4 != (undefined4 *)0x0) {
        (**(code **)*puVar4)();
      }
      goto LAB_008d9f82;
    }
  } while (cStack_595 == '\0');
  if ((local_448 != 0) && ((undefined *)(local_590 + 8) != auStack_45c)) {
    puStack_5bc = (undefined *)0x8d9d52;
    puStack_5b8 = auStack_45c;
    FID_conflict_assign();
  }
  if ((local_46c != 0) && ((undefined *)(local_590 + 0x2c) != local_480)) {
    puStack_5bc = (undefined *)0x8d9d74;
    puStack_5b8 = local_480;
    FID_conflict_assign();
  }
  if (*(undefined4 **)(local_590 + 0x50) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(local_590 + 0x50))();
    *(undefined4 *)(local_590 + 0x50) = 0;
  }
  *(undefined4 **)(local_590 + 0x50) = puVar4;
LAB_008d9f82:
  FUN_008dbd60();
  FUN_008d77d0();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_008d9fd0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc89ce;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxXmlDocument::vftable;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  param_1_00[9] = 0;
  param_1_00[0x11] = 7;
  param_1_00[0x10] = 0;
  *(undefined2 *)(param_1_00 + 0xc) = 0;
  param_1_00[0x12] = 0;
  local_4 = 2;
  param_1_00[0x14] = 0;
  cVar1 = FUN_008d9a50(param_1,param_2,0);
  if ((cVar1 == '\0') && ((undefined4 *)param_1_00[0x14] != (undefined4 *)0x0)) {
    (***(code ***)(undefined4 *)param_1_00[0x14])(1,uVar2);
    param_1_00[0x14] = 0;
  }
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_008da080(int *param_1,int param_2)

{
  if (param_1[1] == *param_1) {
    *param_1 = param_2;
    param_1[1] = param_2;
    return;
  }
  *param_1 = param_2;
  return;
}



void FUN_008da0a0(int param_1,undefined4 param_2,undefined4 param_3)

{
  *(undefined4 *)(param_1 + 0x34) = param_2;
  *(undefined4 *)(param_1 + 0x38) = param_3;
  return;
}



void FUN_008da0c0(int param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1 + 0x3c) = param_2;
  return;
}



void FUN_008da0d0(int param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1 + 0x40) = param_2;
  return;
}



void FUN_008da0e0(int param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1 + 0x44) = param_2;
  return;
}



void FUN_008da0f0(int param_1,undefined4 param_2,undefined4 param_3)

{
  *(undefined4 *)(param_1 + 0x48) = param_2;
  *(undefined4 *)(param_1 + 0x4c) = param_3;
  return;
}



void FUN_008da110(int param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1 + 0x50) = param_2;
  *(undefined *)(param_1 + 0x130) = 0;
  return;
}



void FUN_008da130(int param_1,undefined4 param_2,undefined4 param_3)

{
  *(undefined4 *)(param_1 + 0x7c) = param_2;
  *(undefined4 *)(param_1 + 0xf8) = param_3;
  return;
}



undefined4 FUN_008da150(int param_1,int param_2)

{
  int iVar1;
  void *pvVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  
  if (*(int *)(param_1 + 0x20) - *(int *)(param_1 + 0x1c) < param_2) {
    iVar6 = *(int *)(param_1 + 0x18);
    pvVar2 = *(void **)(param_1 + 8);
    iVar5 = *(int *)(param_1 + 0x1c) - iVar6;
    iVar1 = iVar6 - (int)pvVar2;
    iVar3 = iVar1;
    if (0x400 < iVar1) {
      iVar3 = 0x400;
    }
    iVar4 = iVar5 + param_2 + iVar3;
    if (*(int *)(param_1 + 0x20) - (int)pvVar2 < iVar4) {
      iVar6 = *(int *)(param_1 + 0x20) - iVar6;
      if (iVar6 == 0) {
        iVar6 = 0x400;
      }
      do {
        iVar6 = iVar6 * 2;
      } while (iVar6 < iVar4);
      pvVar2 = (void *)(**(code **)(param_1 + 0xc))(iVar6);
      if (pvVar2 == (void *)0x0) {
        *(undefined4 *)(param_1 + 0x11c) = 1;
        return 0;
      }
      iVar3 = *(int *)(param_1 + 0x18);
      *(void **)(param_1 + 0x20) = (void *)((int)pvVar2 + iVar6);
      if (iVar3 != 0) {
        iVar6 = iVar3 - *(int *)(param_1 + 8);
        if (0x400 < iVar6) {
          iVar6 = 0x400;
        }
        _memcpy(pvVar2,(void *)(iVar3 - iVar6),(*(int *)(param_1 + 0x1c) - iVar3) + iVar6);
        (**(code **)(param_1 + 0x14))(*(undefined4 *)(param_1 + 8));
        *(int *)(param_1 + 0x1c) =
             (int)pvVar2 + *(int *)(param_1 + 0x1c) + (iVar6 - *(int *)(param_1 + 0x18));
        *(int *)(param_1 + 0x18) = iVar6 + (int)pvVar2;
        *(void **)(param_1 + 8) = pvVar2;
        return *(undefined4 *)(param_1 + 0x1c);
      }
      *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + (int)pvVar2;
      *(void **)(param_1 + 0x18) = pvVar2;
      *(void **)(param_1 + 8) = pvVar2;
    }
    else if (iVar3 < iVar1) {
      iVar1 = iVar1 - iVar3;
      _memmove(pvVar2,(void *)((int)pvVar2 + iVar1),iVar5 + iVar3);
      *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) - iVar1;
      *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) - iVar1;
      return *(undefined4 *)(param_1 + 0x1c);
    }
  }
  return *(undefined4 *)(param_1 + 0x1c);
}



int FUN_008da260(int param_1)

{
  if (*(int *)(param_1 + 0x120) != 0) {
    (**(code **)(*(int *)(param_1 + 0x90) + 0x34))
              (*(int *)(param_1 + 0x90),*(undefined4 *)(param_1 + 0x128),*(int *)(param_1 + 0x120),
               param_1 + 0x188);
    *(undefined4 *)(param_1 + 0x128) = *(undefined4 *)(param_1 + 0x120);
  }
  return *(int *)(param_1 + 0x188) + 1;
}



undefined4 FUN_008da2b0(uint param_1)

{
  if ((0 < (int)param_1) && (param_1 < 0x1b)) {
    return *(undefined4 *)(&DAT_032388f8 + param_1 * 4);
  }
  return 0;
}



undefined4 FUN_008da2d0(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  void *_Dst;
  int iVar4;
  
  puVar1 = *(undefined4 **)(param_1 + 0x168);
  while( true ) {
    if (puVar1 == (undefined4 *)0x0) {
      return 1;
    }
    iVar2 = puVar1[9];
    iVar4 = puVar1[6] + 1;
    _Dst = (void *)(iVar2 + iVar4);
    if ((void *)puVar1[1] == _Dst) break;
    iVar3 = puVar1[2] + iVar4;
    if (puVar1[10] - iVar2 < iVar3) {
      iVar2 = (**(code **)(param_1 + 0x10))(iVar2,iVar3);
      if (iVar2 == 0) {
        return 0;
      }
      if (puVar1[3] == puVar1[9]) {
        puVar1[3] = iVar2;
      }
      if (puVar1[4] != 0) {
        puVar1[4] = (puVar1[4] - puVar1[9]) + iVar2;
      }
      puVar1[9] = iVar2;
      puVar1[10] = iVar2 + iVar3;
      _Dst = (void *)(iVar2 + iVar4);
    }
    _memcpy(_Dst,(void *)puVar1[1],puVar1[2]);
    puVar1[1] = _Dst;
    puVar1 = (undefined4 *)*puVar1;
  }
  return 1;
}



uint FUN_008da360(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  uint uVar2;
  
  uVar2 = FUN_008dddc0(param_1,1,*(undefined4 *)(param_1 + 0x90),param_2,param_3,param_4);
  if (uVar2 == 0) {
    cVar1 = FUN_008da2d0(param_1);
    uVar2 = (uint)(cVar1 == '\0');
  }
  return uVar2;
}



undefined4 FUN_008da3a0(int *param_1,int *param_2,char *param_3,int **param_4)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  int unaff_EBX;
  int *_Size;
  
  cVar1 = *param_3;
  if ((cVar1 == '\0') && (*param_1 != 0)) {
    return 2;
  }
  _Size = (int *)0x0;
  while (cVar1 != '\0') {
    _Size = (int *)((int)_Size + 1);
    cVar1 = *(char *)((int)_Size + (int)param_3);
  }
  if (*(char *)(unaff_EBX + 0x1c8) != '\0') {
    _Size = (int *)((int)_Size + 1);
  }
  ppiVar3 = *(int ***)(unaff_EBX + 0x174);
  if (ppiVar3 != (int **)0x0) {
    if ((int)ppiVar3[6] < (int)_Size) {
      piVar2 = (int *)(**(code **)(unaff_EBX + 0x10))(ppiVar3[4],_Size + 6);
      if (piVar2 == (int *)0x0) {
        return 1;
      }
      ppiVar3[6] = _Size + 6;
      ppiVar3[4] = piVar2;
    }
    *(int **)(unaff_EBX + 0x174) = ppiVar3[1];
LAB_008da451:
    ppiVar3[5] = _Size;
    _memcpy(ppiVar3[4],param_3,(size_t)_Size);
    if (*(char *)(unaff_EBX + 0x1c8) != '\0') {
      *(char *)((int)ppiVar3[4] + -1 + (int)_Size) = *(char *)(unaff_EBX + 0x1c8);
    }
    *ppiVar3 = param_1;
    ppiVar3[3] = param_2;
    ppiVar3[2] = (int *)param_1[1];
    if ((*param_3 == '\0') && (param_1 == (int *)(*(int *)(unaff_EBX + 0x160) + 0x98))) {
      param_1[1] = 0;
    }
    else {
      param_1[1] = (int)ppiVar3;
    }
    ppiVar3[1] = *param_4;
    *param_4 = (int *)ppiVar3;
    if (*(code **)(unaff_EBX + 100) != (code *)0x0) {
      (**(code **)(unaff_EBX + 100))
                (*(undefined4 *)(unaff_EBX + 4),*param_1,-(uint)(param_1[1] != 0) & (uint)param_3);
    }
    return 0;
  }
  ppiVar3 = (int **)(**(code **)(unaff_EBX + 0xc))(0x1c);
  if (ppiVar3 != (int **)0x0) {
    piVar2 = (int *)(**(code **)(unaff_EBX + 0xc))(_Size + 6);
    ppiVar3[4] = piVar2;
    if (piVar2 != (int *)0x0) {
      ppiVar3[6] = _Size + 6;
      goto LAB_008da451;
    }
    (**(code **)(unaff_EBX + 0x14))(ppiVar3);
  }
  return 1;
}



undefined4 FUN_008da4e0(undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  code *pcVar3;
  int unaff_ESI;
  undefined4 *puVar4;
  undefined4 local_418 [256];
  undefined4 local_18;
  undefined4 local_14;
  code *local_10;
  
  pcVar3 = *(code **)(unaff_ESI + 0x7c);
  if (pcVar3 != (code *)0x0) {
    puVar4 = local_418;
    for (iVar2 = 0x100; iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar4 = 0xffffffff;
      puVar4 = puVar4 + 1;
    }
    local_14 = 0;
    local_18 = 0;
    local_10 = (code *)0x0;
    iVar2 = (*pcVar3)(*(undefined4 *)(unaff_ESI + 0xf8),param_1,local_418);
    if (iVar2 != 0) {
      uVar1 = FUN_008ea140();
      iVar2 = (**(code **)(unaff_ESI + 0xc))(uVar1);
      *(int *)(unaff_ESI + 0xf0) = iVar2;
      if (iVar2 == 0) {
        if (local_10 != (code *)0x0) {
          (*local_10)(local_18);
        }
        return 1;
      }
      pcVar3 = (code *)&LAB_008eac20;
      if (*(char *)(unaff_ESI + 0xec) == '\0') {
        pcVar3 = FUN_008ea390;
      }
      iVar2 = (*pcVar3)(iVar2,local_418,local_14,local_18);
      if (iVar2 != 0) {
        *(int *)(unaff_ESI + 0x90) = iVar2;
        *(undefined4 *)(unaff_ESI + 0xf4) = local_18;
        *(code **)(unaff_ESI + 0xfc) = local_10;
        return 0;
      }
    }
    if (local_10 != (code *)0x0) {
      (*local_10)(local_18);
    }
  }
  return 0x12;
}



void FUN_008da600(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  
  uVar2 = param_3;
  uVar1 = param_2;
  uVar3 = (***(code ***)(param_1 + 0x90))(*(code ***)(param_1 + 0x90),param_2,param_3,&param_2);
  FUN_008deaa0(param_1,*(undefined4 *)(param_1 + 0x90),uVar1,uVar2,uVar3,param_2,param_4);
  return;
}



undefined4 FUN_008da650(int param_1)

{
  return *(undefined4 *)(param_1 + 0x11c);
}



void FUN_008da660(void)

{
  char *in_EAX;
  char cVar1;
  char *pcVar2;
  
  cVar1 = *in_EAX;
  if (cVar1 != '\0') {
    while (pcVar2 = in_EAX, cVar1 != '\r') {
      cVar1 = in_EAX[1];
      in_EAX = in_EAX + 1;
      if (cVar1 == '\0') {
        return;
      }
    }
    do {
      if (*in_EAX == '\r') {
        *pcVar2 = '\n';
        in_EAX = in_EAX + 1;
        if (*in_EAX == '\n') goto LAB_008da68c;
      }
      else {
        *pcVar2 = *in_EAX;
LAB_008da68c:
        in_EAX = in_EAX + 1;
      }
      pcVar2 = pcVar2 + 1;
    } while (*in_EAX != '\0');
    *pcVar2 = '\0';
  }
  return;
}



void FUN_008da6a0(int param_1)

{
  int iVar1;
  int in_EAX;
  int unaff_EBX;
  int *piVar2;
  int unaff_ESI;
  int *local_8;
  
  if (*(char *)(unaff_EBX + 0x48) == '\0') {
    if (unaff_EBX == *(int *)(unaff_ESI + 0x90)) {
      local_8 = (int *)(unaff_ESI + 0x124);
      piVar2 = (int *)(unaff_ESI + 0x120);
    }
    else {
      piVar2 = *(int **)(unaff_ESI + 300);
      local_8 = piVar2 + 1;
    }
    do {
      iVar1 = *(int *)(unaff_ESI + 0x2c);
      (**(code **)(unaff_EBX + 0x3c))();
      *local_8 = param_1;
      (**(code **)(unaff_ESI + 0x50))
                (*(undefined4 *)(unaff_ESI + 4),*(int *)(unaff_ESI + 0x2c),
                 iVar1 - *(int *)(unaff_ESI + 0x2c));
      *piVar2 = param_1;
    } while (param_1 != in_EAX);
    return;
  }
  (**(code **)(unaff_ESI + 0x50))(*(undefined4 *)(unaff_ESI + 4),param_1,in_EAX - param_1);
  return;
}



undefined4 __fastcall
FUN_008da740(undefined4 param_1_00,char param_2_00,int param_1,char param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int unaff_EBX;
  int unaff_ESI;
  
  if ((param_3 != 0) || (param_2_00 != '\0')) {
    iVar1 = 0;
    if (0 < *(int *)(unaff_ESI + 0xc)) {
      piVar3 = *(int **)(unaff_ESI + 0x14);
      do {
        if (param_1 == *piVar3) {
          return 1;
        }
        iVar1 = iVar1 + 1;
        piVar3 = piVar3 + 3;
      } while (iVar1 < *(int *)(unaff_ESI + 0xc));
    }
    if (((param_2_00 != '\0') && (*(int *)(unaff_ESI + 8) == 0)) && (*(char *)(param_1 + 9) == '\0')
       ) {
      *(int *)(unaff_ESI + 8) = param_1;
    }
  }
  iVar1 = *(int *)(unaff_ESI + 0x10);
  if (*(int *)(unaff_ESI + 0xc) == iVar1) {
    if (iVar1 == 0) {
      *(undefined4 *)(unaff_ESI + 0x10) = 8;
      iVar1 = (**(code **)(unaff_EBX + 0xc))(0x60);
      *(int *)(unaff_ESI + 0x14) = iVar1;
      if (iVar1 != 0) goto LAB_008da7d2;
    }
    else {
      iVar2 = (**(code **)(unaff_EBX + 0x10))(*(undefined4 *)(unaff_ESI + 0x14),iVar1 * 0x18);
      if (iVar2 != 0) {
        *(int *)(unaff_ESI + 0x10) = iVar1 * 2;
        *(int *)(unaff_ESI + 0x14) = iVar2;
        goto LAB_008da7d2;
      }
    }
    return 0;
  }
LAB_008da7d2:
  piVar3 = (int *)(*(int *)(unaff_ESI + 0x14) + *(int *)(unaff_ESI + 0xc) * 0xc);
  piVar3[2] = param_3;
  *piVar3 = param_1;
  *(char *)(piVar3 + 1) = param_2;
  if (param_2 == '\0') {
    *(undefined *)(param_1 + 8) = 1;
  }
  *(int *)(unaff_ESI + 0xc) = *(int *)(unaff_ESI + 0xc) + 1;
  return 1;
}



void FUN_008da810(void)

{
  char cVar1;
  char *pcVar2;
  char *pcVar3;
  char *unaff_ESI;
  
  pcVar2 = unaff_ESI;
  pcVar3 = unaff_ESI;
  if (*unaff_ESI != '\0') {
    do {
      cVar1 = *pcVar3;
      if (((cVar1 == '\n') || (cVar1 == '\r')) || (cVar1 == ' ')) {
        if ((pcVar2 != unaff_ESI) && (pcVar2[-1] != ' ')) {
          *pcVar2 = ' ';
          goto LAB_008da842;
        }
      }
      else {
        *pcVar2 = cVar1;
LAB_008da842:
        pcVar2 = pcVar2 + 1;
      }
      pcVar3 = pcVar3 + 1;
    } while (*pcVar3 != '\0');
    if ((pcVar2 != unaff_ESI) && (pcVar2[-1] == ' ')) {
      pcVar2[-1] = '\0';
      return;
    }
  }
  *pcVar2 = '\0';
  return;
}



int __fastcall FUN_008da860(undefined4 param_1,byte *param_2)

{
  byte *pbVar1;
  byte bVar2;
  int iVar3;
  
  iVar3 = 0;
  bVar2 = *param_2;
  while (bVar2 != 0) {
    pbVar1 = param_2 + 1;
    param_2 = param_2 + 1;
    iVar3 = (uint)bVar2 + iVar3 * 0x21;
    bVar2 = *pbVar1;
  }
  return iVar3;
}



undefined4 FUN_008da890(byte *param_1,size_t param_2)

{
  void **ppvVar1;
  byte bVar2;
  byte bVar3;
  byte **ppbVar4;
  int iVar5;
  void *pvVar6;
  void *pvVar7;
  uint uVar8;
  byte *pbVar9;
  void *_Dst;
  uint uVar10;
  undefined4 uVar11;
  byte *pbVar12;
  uint uVar13;
  void **unaff_EDI;
  void *pvStack_8;
  
  if (unaff_EDI[1] == (void *)0x0) {
    if (param_2 == 0) {
      return 0;
    }
                    // WARNING: Load size is inaccurate
    pvVar7 = (void *)(**unaff_EDI[4])(0x100);
    *unaff_EDI = pvVar7;
    if (pvVar7 == (void *)0x0) {
      return 0;
    }
    _memset(pvVar7,0,0x100);
    unaff_EDI[1] = (void *)0x40;
    unaff_EDI[3] = (void *)0x20;
    uVar8 = FUN_008da860();
    uVar8 = uVar8 & 0x3f;
  }
  else {
    uVar13 = 0;
    bVar2 = *param_1;
    bVar3 = bVar2;
    pbVar12 = param_1;
    while (bVar3 != 0) {
      uVar13 = uVar13 * 0x21 + (uint)bVar3;
      pbVar9 = pbVar12 + 1;
      pbVar12 = pbVar12 + 1;
      bVar3 = *pbVar9;
    }
    uVar8 = (int)unaff_EDI[1] - 1U & uVar13;
    pvVar7 = *unaff_EDI;
    iVar5 = *(int *)((int)pvVar7 + uVar8 * 4);
    while (iVar5 != 0) {
      pbVar12 = **(byte ***)((int)pvVar7 + uVar8 * 4);
      if (bVar2 == *pbVar12) {
        pbVar9 = pbVar12;
        bVar3 = bVar2;
        do {
          if (bVar3 == 0) {
            return *(undefined4 *)((int)pvVar7 + uVar8 * 4);
          }
          bVar3 = pbVar9[(int)(param_1 + (1 - (int)pbVar12))];
          pbVar9 = pbVar9 + 1;
        } while (bVar3 == *pbVar9);
      }
      uVar10 = (int)unaff_EDI[1] - 1U;
      if (uVar8 != 0) {
        uVar10 = uVar8 - 1;
      }
      uVar8 = uVar10;
      iVar5 = *(int *)((int)pvVar7 + uVar10 * 4);
    }
    if (param_2 == 0) {
      return 0;
    }
    if (unaff_EDI[2] == unaff_EDI[3]) {
      pvVar7 = unaff_EDI[1];
      pvVar6 = (void *)((int)pvVar7 * 2);
                    // WARNING: Load size is inaccurate
      _Dst = (void *)(**unaff_EDI[4])((int)pvVar7 << 3);
      if (_Dst == (void *)0x0) {
        return 0;
      }
      _memset(_Dst,0,(int)pvVar7 << 3);
      pvStack_8 = (void *)0x0;
      if (unaff_EDI[1] != (void *)0x0) {
        do {
          if (*(int *)((int)*unaff_EDI + (int)pvStack_8 * 4) != 0) {
            ppbVar4 = *(byte ***)((int)*unaff_EDI + (int)pvStack_8 * 4);
            pbVar12 = *ppbVar4;
            uVar8 = 0;
            bVar2 = *pbVar12;
            while (bVar2 != 0) {
              uVar8 = uVar8 * 0x21 + (uint)bVar2;
              pbVar9 = pbVar12 + 1;
              pbVar12 = pbVar12 + 1;
              bVar2 = *pbVar9;
            }
            uVar8 = (int)pvVar6 - 1U & uVar8;
            iVar5 = *(int *)((int)_Dst + uVar8 * 4);
            while (iVar5 != 0) {
              uVar10 = (int)pvVar6 - 1U;
              if (uVar8 != 0) {
                uVar10 = uVar8 - 1;
              }
              uVar8 = uVar10;
              iVar5 = *(int *)((int)_Dst + uVar10 * 4);
            }
            *(byte ***)((int)_Dst + uVar8 * 4) = ppbVar4;
          }
          pvStack_8 = (void *)((int)pvStack_8 + 1);
        } while (pvStack_8 < unaff_EDI[1]);
      }
      (**(code **)((int)unaff_EDI[4] + 8))(*unaff_EDI);
      uVar8 = (int)pvVar6 - 1U & uVar13;
      *unaff_EDI = _Dst;
      unaff_EDI[1] = pvVar6;
      unaff_EDI[3] = (void *)((uint)pvVar7 & 0x7fffffff);
      iVar5 = *(int *)((int)_Dst + uVar8 * 4);
      while (iVar5 != 0) {
        uVar13 = (int)pvVar6 - 1U;
        if (uVar8 != 0) {
          uVar13 = uVar8 - 1;
        }
        uVar8 = uVar13;
        iVar5 = *(int *)((int)_Dst + uVar13 * 4);
      }
    }
  }
                    // WARNING: Load size is inaccurate
  uVar11 = (**unaff_EDI[4])(param_2);
  *(undefined4 *)((int)*unaff_EDI + uVar8 * 4) = uVar11;
  ppvVar1 = (void **)((int)*unaff_EDI + uVar8 * 4);
  if (*ppvVar1 == (void *)0x0) {
    return 0;
  }
  _memset(*ppvVar1,0,param_2);
  **(byte ***)((int)*unaff_EDI + uVar8 * 4) = param_1;
  unaff_EDI[2] = (void *)((int)unaff_EDI[2] + 1);
  return *(undefined4 *)((int)*unaff_EDI + uVar8 * 4);
}



void FUN_008daac0(void)

{
  int iVar1;
  int *unaff_ESI;
  uint uVar2;
  
  uVar2 = 0;
  if (unaff_ESI[1] != 0) {
    do {
      iVar1 = *(int *)(*unaff_ESI + uVar2 * 4);
      if (iVar1 != 0) {
        (**(code **)(unaff_ESI[4] + 8))(iVar1);
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < (uint)unaff_ESI[1]);
  }
  if (*unaff_ESI != 0) {
    (**(code **)(unaff_ESI[4] + 8))(*unaff_ESI);
  }
  return;
}



void __fastcall FUN_008dab00(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  puVar1 = (undefined4 *)*param_1;
  if (param_1[1] == 0) {
    param_1[1] = puVar1;
  }
  else {
    while (puVar1 != (undefined4 *)0x0) {
      puVar2 = (undefined4 *)*puVar1;
      *puVar1 = param_1[1];
      param_1[1] = puVar1;
      puVar1 = puVar2;
    }
  }
  *param_1 = 0;
  param_1[4] = 0;
  param_1[3] = 0;
  param_1[2] = 0;
  return;
}



uint FUN_008dab40(void)

{
  int iVar1;
  int *piVar2;
  int **ppiVar3;
  int *piVar4;
  int **unaff_ESI;
  
  ppiVar3 = (int **)unaff_ESI[1];
  if (ppiVar3 != (int **)0x0) {
    if (unaff_ESI[4] == (int *)0x0) {
      *unaff_ESI = (int *)ppiVar3;
      unaff_ESI[1] = *ppiVar3;
      **unaff_ESI = 0;
      piVar4 = *unaff_ESI + 2;
      unaff_ESI[4] = piVar4;
      iVar1 = (*unaff_ESI)[1];
      unaff_ESI[3] = piVar4;
      unaff_ESI[2] = (int *)(iVar1 + (int)piVar4);
      return CONCAT31((int3)((uint)piVar4 >> 8),1);
    }
    if ((int)unaff_ESI[2] - (int)unaff_ESI[4] < (int)ppiVar3[1]) {
      piVar4 = *ppiVar3;
      *ppiVar3 = *unaff_ESI;
      *unaff_ESI = unaff_ESI[1];
      unaff_ESI[1] = piVar4;
      _memcpy(*unaff_ESI + 2,unaff_ESI[4],(int)unaff_ESI[2] - (int)unaff_ESI[4]);
      piVar4 = *unaff_ESI;
      unaff_ESI[3] = (int *)((int)unaff_ESI[3] + (int)piVar4 + (8 - (int)unaff_ESI[4]));
      unaff_ESI[4] = piVar4 + 2;
      unaff_ESI[2] = (int *)(piVar4[1] + (int)(piVar4 + 2));
      return CONCAT31((int3)((uint)piVar4 >> 8),1);
    }
  }
  piVar4 = *unaff_ESI;
  if ((piVar4 == (int *)0x0) || (unaff_ESI[4] != piVar4 + 2)) {
    piVar4 = (int *)0x400;
    if (0x3ff < (int)unaff_ESI[2] - (int)unaff_ESI[4]) {
      piVar4 = (int *)(((int)unaff_ESI[2] - (int)unaff_ESI[4]) * 2);
    }
    ppiVar3 = (int **)(*(code *)*unaff_ESI[5])(piVar4 + 2);
    if (ppiVar3 != (int **)0x0) {
      ppiVar3[1] = piVar4;
      *ppiVar3 = *unaff_ESI;
      piVar2 = unaff_ESI[4];
      *unaff_ESI = (int *)ppiVar3;
      if (unaff_ESI[3] != piVar2) {
        _memcpy(ppiVar3 + 2,piVar2,(int)unaff_ESI[3] - (int)piVar2);
      }
      unaff_ESI[3] = (int *)((int)unaff_ESI[3] + (int)ppiVar3 + (8 - (int)unaff_ESI[4]));
      unaff_ESI[2] = (int *)((int)(ppiVar3 + 2) + (int)piVar4);
      unaff_ESI[4] = (int *)(ppiVar3 + 2);
      return CONCAT31((int3)((uint)(int *)((int)(ppiVar3 + 2) + (int)piVar4) >> 8),1);
    }
  }
  else {
    piVar2 = (int *)(((int)unaff_ESI[2] - (int)unaff_ESI[4]) * 2);
    ppiVar3 = (int **)(*(code *)unaff_ESI[5][1])(piVar4,piVar2 + 2);
    *unaff_ESI = (int *)ppiVar3;
    if (ppiVar3 != (int **)0x0) {
      ppiVar3[1] = piVar2;
      piVar4 = *unaff_ESI + 2;
      unaff_ESI[3] = (int *)((int)unaff_ESI[3] + (int)*unaff_ESI + (8 - (int)unaff_ESI[4]));
      unaff_ESI[4] = piVar4;
      piVar4 = (int *)((int)piVar4 + (int)piVar2);
      unaff_ESI[2] = piVar4;
      return CONCAT31((int3)((uint)piVar4 >> 8),1);
    }
  }
  return (uint)ppiVar3 & 0xffffff00;
}



int FUN_008dac80(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int in_EAX;
  undefined4 *puVar4;
  int iVar5;
  
  iVar1 = *(int *)(in_EAX + 0x160);
  if (*(int *)(iVar1 + 0xb8) == 0) {
    puVar4 = (undefined4 *)(**(code **)(in_EAX + 0xc))(*(int *)(in_EAX + 0x1c4) * 4);
    *(undefined4 **)(iVar1 + 0xb8) = puVar4;
    if (puVar4 == (undefined4 *)0x0) {
      return -1;
    }
    *puVar4 = 0;
  }
  if (*(uint *)(iVar1 + 0xac) <= *(uint *)(iVar1 + 0xb0)) {
    if (*(int *)(iVar1 + 0xa4) == 0) {
      iVar5 = (**(code **)(in_EAX + 0xc))(0x380);
      if (iVar5 == 0) {
        return -1;
      }
      *(undefined4 *)(iVar1 + 0xac) = 0x20;
    }
    else {
      iVar5 = (**(code **)(in_EAX + 0x10))(*(int *)(iVar1 + 0xa4),*(uint *)(iVar1 + 0xac) * 0x38);
      if (iVar5 == 0) {
        return -1;
      }
      *(int *)(iVar1 + 0xac) = *(int *)(iVar1 + 0xac) * 2;
    }
    *(int *)(iVar1 + 0xa4) = iVar5;
  }
  iVar2 = *(int *)(iVar1 + 0xb0);
  iVar3 = *(int *)(iVar1 + 0xa4);
  *(int *)(iVar1 + 0xb0) = iVar2 + 1;
  iVar5 = iVar3 + iVar2 * 0x1c;
  if (*(int *)(iVar1 + 0xb4) != 0) {
    iVar1 = iVar3 + *(int *)(*(int *)(iVar1 + 0xb8) + -4 + *(int *)(iVar1 + 0xb4) * 4) * 0x1c;
    if (*(int *)(iVar1 + 0x10) != 0) {
      *(int *)(iVar3 + 0x18 + *(int *)(iVar1 + 0x10) * 0x1c) = iVar2;
    }
    if (*(int *)(iVar1 + 0x14) == 0) {
      *(int *)(iVar1 + 0xc) = iVar2;
    }
    *(int *)(iVar1 + 0x10) = iVar2;
    *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + 1;
  }
  *(undefined4 *)(iVar5 + 0x18) = 0;
  *(undefined4 *)(iVar5 + 0x14) = 0;
  *(undefined4 *)(iVar5 + 0x10) = 0;
  *(undefined4 *)(iVar5 + 0xc) = 0;
  return iVar2;
}



void FUN_008dada0(int param_1,int param_2,int *param_3,int *param_4,char **param_5)

{
  char *pcVar1;
  char cVar2;
  int iVar3;
  char *pcVar4;
  uint uVar5;
  int iVar6;
  
  iVar3 = *(int *)(param_1 + 0x160);
  param_2 = param_2 * 0x1c;
  *param_3 = *(int *)(param_2 + *(int *)(iVar3 + 0xa4));
  param_3[1] = *(int *)(*(int *)(iVar3 + 0xa4) + 4 + param_2);
  if (*param_3 == 4) {
    param_3[2] = (int)*param_5;
    pcVar4 = *(char **)(*(int *)(iVar3 + 0xa4) + 8 + param_2);
    **param_5 = *pcVar4;
    *param_5 = *param_5 + 1;
    cVar2 = *pcVar4;
    while (cVar2 != '\0') {
      pcVar1 = pcVar4 + 1;
      pcVar4 = pcVar4 + 1;
      **param_5 = *pcVar1;
      *param_5 = *param_5 + 1;
      cVar2 = *pcVar4;
    }
    param_3[3] = 0;
    param_3[4] = 0;
    return;
  }
  param_3[3] = *(int *)(*(int *)(iVar3 + 0xa4) + 0x14 + param_2);
  param_3[4] = *param_4;
  *param_4 = *param_4 + param_3[3] * 0x14;
  uVar5 = 0;
  iVar6 = *(int *)(*(int *)(iVar3 + 0xa4) + 0xc + param_2);
  if (param_3[3] != 0) {
    param_2 = 0;
    do {
      FUN_008dada0(param_1,iVar6,param_3[4] + param_2,param_4,param_5);
      param_2 = param_2 + 0x14;
      uVar5 = uVar5 + 1;
      iVar6 = *(int *)(*(int *)(iVar3 + 0xa4) + 0x18 + iVar6 * 0x1c);
    } while (uVar5 < (uint)param_3[3]);
  }
  param_3[2] = 0;
  return;
}



int FUN_008daeb0(void)

{
  int iVar1;
  int unaff_EBX;
  
  iVar1 = (**(code **)(unaff_EBX + 0xc))
                    (*(int *)(*(int *)(unaff_EBX + 0x160) + 0xa8) +
                     *(int *)(*(int *)(unaff_EBX + 0x160) + 0xb0) * 0x14);
  if (iVar1 == 0) {
    return 0;
  }
  FUN_008dada0();
  return iVar1;
}



undefined4 FUN_008daf20(int param_1,int param_2,int param_3)

{
  undefined4 *puVar1;
  int iVar2;
  
  *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + param_2;
  *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + param_2;
  puVar1 = (undefined4 *)(param_1 + 0x18);
  *(undefined4 *)(param_1 + 0x128) = *(undefined4 *)(param_1 + 0x18);
  *(undefined4 *)(param_1 + 0x28) = *(undefined4 *)(param_1 + 0x1c);
  iVar2 = (**(code **)(param_1 + 0x118))
                    (param_1,*(undefined4 *)(param_1 + 0x18),*(undefined4 *)(param_1 + 0x1c),
                     ~-(uint)(param_3 != 0) & (uint)puVar1);
  *(int *)(param_1 + 0x11c) = iVar2;
  if (iVar2 == 0) {
    if (param_3 == 0) {
      (**(code **)(*(int *)(param_1 + 0x90) + 0x34))
                (*(int *)(param_1 + 0x90),*(undefined4 *)(param_1 + 0x128),*puVar1,param_1 + 0x188);
      *(undefined4 *)(param_1 + 0x128) = *puVar1;
    }
    return 1;
  }
  *(undefined4 *)(param_1 + 0x124) = *(undefined4 *)(param_1 + 0x120);
  *(code **)(param_1 + 0x118) = FUN_008da650;
  return 0;
}



undefined4 __thiscall FUN_008dafc0(int param_1_00,int *param_1,undefined4 param_2,int *param_4)

{
  int in_EAX;
  int iVar1;
  int *piVar2;
  int *piVar3;
  undefined uStack_d;
  int local_c;
  int local_8;
  int iStack_4;
  
  local_8 = *param_1;
  if (in_EAX == *(int *)(param_1_00 + 0x90)) {
    piVar2 = (int *)(param_1_00 + 0x120);
    *piVar2 = local_8;
    piVar3 = (int *)(param_1_00 + 0x124);
  }
  else {
    piVar2 = *(int **)(param_1_00 + 300);
    piVar3 = piVar2 + 1;
  }
  *piVar2 = local_8;
  *param_1 = 0;
  iVar1 = (**(code **)(in_EAX + 8))();
  *piVar3 = local_c;
  while (iVar1 + 4U < 0x2d) {
    switch(iVar1 + 4U) {
    case 0:
      *piVar2 = local_c;
      return 4;
    case 6:
      if (*(code **)(param_1_00 + 0x3c) == (code *)0x0) {
        iVar1 = *(int *)(param_1_00 + 0x50);
joined_r0x008db063:
        if (iVar1 != 0) {
          FUN_008da6a0(local_8);
        }
      }
      else if (*(char *)(in_EAX + 0x48) == '\0') {
        iStack_4 = *(int *)(param_1_00 + 0x2c);
        (**(code **)(in_EAX + 0x3c))();
        *piVar3 = local_c;
        (**(code **)(param_1_00 + 0x3c))
                  (*(undefined4 *)(param_1_00 + 4),*(int *)(param_1_00 + 0x2c),
                   iStack_4 - *(int *)(param_1_00 + 0x2c));
        if (local_8 != local_c) {
          do {
            *piVar2 = local_8;
            iStack_4 = *(int *)(param_1_00 + 0x2c);
            (**(code **)(in_EAX + 0x3c))();
            *piVar3 = local_c;
            (**(code **)(param_1_00 + 0x3c))
                      (*(undefined4 *)(param_1_00 + 4),*(int *)(param_1_00 + 0x2c),
                       iStack_4 - *(int *)(param_1_00 + 0x2c));
          } while (local_8 != local_c);
        }
      }
      else {
        (**(code **)(param_1_00 + 0x3c))(*(undefined4 *)(param_1_00 + 4),local_8,local_c - local_8);
      }
      break;
    case 7:
      if (*(code **)(param_1_00 + 0x3c) == (code *)0x0) {
        iVar1 = *(int *)(param_1_00 + 0x50);
        goto joined_r0x008db063;
      }
      uStack_d = 10;
      (**(code **)(param_1_00 + 0x3c))(*(undefined4 *)(param_1_00 + 4),&uStack_d,1);
      break;
    case 0x28:
      if (*(code **)(param_1_00 + 0x4c) != (code *)0x0) {
        (**(code **)(param_1_00 + 0x4c))(*(undefined4 *)(param_1_00 + 4));
        *param_1 = local_c;
        return 0;
      }
      if (*(int *)(param_1_00 + 0x50) != 0) {
        FUN_008da6a0(local_8);
      }
      *param_1 = local_c;
      return 0;
    case 0xfffffffc:
    case 0xffffffff:
                    // WARNING: This code block may not be properly labeled as switch case
      if (param_4 != (int *)0x0) {
        *param_4 = local_8;
        return 0;
      }
      return 0x14;
    default:
      goto switchD_008db037_caseD_fffffffd;
    case 0xfffffffe:
                    // WARNING: This code block may not be properly labeled as switch case
      if (param_4 != (int *)0x0) {
        *param_4 = local_8;
        return 0;
      }
      return 6;
    }
    *piVar2 = local_c;
    local_8 = local_c;
    iVar1 = (**(code **)(in_EAX + 8))();
    *piVar3 = local_c;
  }
switchD_008db037_caseD_fffffffd:
                    // WARNING: This code block may not be properly labeled as switch case
  *piVar2 = local_c;
  return 0x17;
}



undefined4 FUN_008db280(int param_1,int *param_2,undefined4 param_3,int *param_4)

{
  int iVar1;
  int in_EAX;
  undefined4 uVar2;
  int *piVar3;
  int *local_4;
  
  iVar1 = *param_2;
  if (in_EAX == *(int *)(param_1 + 0x90)) {
    piVar3 = (int *)(param_1 + 0x120);
    local_4 = (int *)(param_1 + 0x124);
    *piVar3 = iVar1;
  }
  else {
    piVar3 = *(int **)(param_1 + 300);
    local_4 = piVar3 + 1;
  }
  *piVar3 = iVar1;
  *param_2 = 0;
  uVar2 = (**(code **)(in_EAX + 0xc))();
  *local_4 = param_1;
  switch(uVar2) {
  case 0:
    *piVar3 = param_1;
    return 4;
  case 0x2a:
    if (*(int *)(param_1 + 0x50) != 0) {
      FUN_008da6a0(iVar1);
    }
    *param_2 = param_1;
    return 0;
  case 0xfffffffc:
  case 0xffffffff:
    if (param_4 == (int *)0x0) {
      return 2;
    }
    break;
  default:
    *piVar3 = param_1;
    return 0x17;
  case 0xfffffffe:
    if (param_4 == (int *)0x0) {
      return 6;
    }
  }
  *param_4 = iVar1;
  return 0;
}



void FUN_008db3c0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 *puVar1;
  code **ppcVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  code *pcVar6;
  int iVar7;
  undefined4 uVar8;
  
  iVar3 = param_1;
  pcVar6 = FUN_008eaa90;
  if (*(char *)(param_1 + 0xec) == '\0') {
    pcVar6 = FUN_008ea890;
  }
  puVar1 = (undefined4 *)(param_1 + 0x90);
  iVar7 = (*pcVar6)(param_1 + 0x94,puVar1,*(undefined4 *)(param_1 + 0xe8));
  if ((iVar7 == 0) && (iVar7 = FUN_008da4e0(*(undefined4 *)(iVar3 + 0xe8)), iVar7 != 0)) {
    return;
  }
  uVar5 = param_3;
  uVar4 = param_2;
  ppcVar2 = (code **)*puVar1;
  *(code **)(iVar3 + 0x118) = FUN_008da600;
  param_1 = param_2;
  uVar8 = (**ppcVar2)(ppcVar2,param_2,param_3,&param_1);
  FUN_008deaa0(iVar3,*puVar1,uVar4,uVar5,uVar8,param_1,param_4);
  return;
}



undefined4 FUN_008db450(char **param_1)

{
  int iVar1;
  char cVar2;
  int in_EAX;
  int *piVar3;
  char *pcVar4;
  char *pcVar5;
  
  iVar1 = *(int *)(in_EAX + 0x160);
  pcVar4 = *param_1;
  cVar2 = *pcVar4;
  do {
    if (cVar2 == '\0') {
      return 1;
    }
    if (cVar2 == ':') {
      for (pcVar5 = *param_1; pcVar5 != pcVar4; pcVar5 = pcVar5 + 1) {
        if ((*(int *)(iVar1 + 0x5c) == *(int *)(iVar1 + 0x58)) &&
           (cVar2 = FUN_008dab40(), cVar2 == '\0')) {
          return 0;
        }
        **(char **)(iVar1 + 0x5c) = *pcVar5;
        *(int *)(iVar1 + 0x5c) = *(int *)(iVar1 + 0x5c) + 1;
      }
      if ((*(int *)(iVar1 + 0x5c) == *(int *)(iVar1 + 0x58)) &&
         (cVar2 = FUN_008dab40(), cVar2 == '\0')) {
        return 0;
      }
      **(undefined **)(iVar1 + 0x5c) = 0;
      *(int *)(iVar1 + 0x5c) = *(int *)(iVar1 + 0x5c) + 1;
      piVar3 = (int *)FUN_008da890(*(undefined4 *)(iVar1 + 0x60),8);
      if (piVar3 == (int *)0x0) {
        return 0;
      }
      if (*piVar3 == *(int *)(iVar1 + 0x60)) {
        *(undefined4 *)(iVar1 + 0x60) = *(undefined4 *)(iVar1 + 0x5c);
      }
      else {
        *(int *)(iVar1 + 0x5c) = *(int *)(iVar1 + 0x60);
      }
      param_1[1] = (char *)piVar3;
    }
    cVar2 = pcVar4[1];
    pcVar4 = pcVar4 + 1;
  } while( true );
}



undefined4 FUN_008db510(void)

{
  undefined4 *puVar1;
  char **ppcVar2;
  bool bVar3;
  char cVar4;
  int iVar5;
  undefined4 *puVar6;
  int iVar7;
  undefined4 *puVar8;
  int iVar9;
  char *pcVar10;
  int unaff_EDI;
  
  puVar1 = *(undefined4 **)(unaff_EDI + 0x160);
  bVar3 = false;
  if (puVar1[0x27] != 0) {
    if ((*(int *)(unaff_EDI + 0x19c) == *(int *)(unaff_EDI + 0x198)) &&
       (cVar4 = FUN_008dab40(), cVar4 == '\0')) {
      return 0;
    }
    **(undefined **)(unaff_EDI + 0x19c) = 0x3d;
    *(int *)(unaff_EDI + 0x19c) = *(int *)(unaff_EDI + 0x19c) + 1;
    iVar5 = *(int *)(unaff_EDI + 0x19c);
    iVar9 = *(int *)(puVar1[0x27] + 0x14);
    if (*(char *)(unaff_EDI + 0x1c8) != '\0') {
      iVar9 = iVar9 + -1;
    }
    iVar7 = 0;
    if (0 < iVar9) {
      do {
        if ((iVar5 == *(int *)(unaff_EDI + 0x198)) && (cVar4 = FUN_008dab40(), cVar4 == '\0')) {
          return 0;
        }
        **(undefined **)(unaff_EDI + 0x19c) = *(undefined *)(iVar7 + *(int *)(puVar1[0x27] + 0x10));
        *(int *)(unaff_EDI + 0x19c) = *(int *)(unaff_EDI + 0x19c) + 1;
        iVar5 = *(int *)(unaff_EDI + 0x19c);
        iVar7 = iVar7 + 1;
      } while (iVar7 < iVar9);
    }
    bVar3 = true;
  }
  puVar6 = (undefined4 *)puVar1[0xf];
  puVar8 = puVar6 + puVar1[0x10];
  while (puVar6 != puVar8) {
    while( true ) {
      ppcVar2 = (char **)*puVar6;
      puVar6 = puVar6 + 1;
      if (ppcVar2 != (char **)0x0) break;
      if (puVar6 == puVar8) goto LAB_008db5f1;
    }
    if (ppcVar2[1] != (char *)0x0) {
      if (bVar3) {
        if ((*(int *)(unaff_EDI + 0x19c) == *(int *)(unaff_EDI + 0x198)) &&
           (cVar4 = FUN_008dab40(), cVar4 == '\0')) {
          return 0;
        }
        **(undefined **)(unaff_EDI + 0x19c) = 0xc;
        *(int *)(unaff_EDI + 0x19c) = *(int *)(unaff_EDI + 0x19c) + 1;
      }
      pcVar10 = *ppcVar2;
      cVar4 = *pcVar10;
      while (cVar4 != '\0') {
        if ((*(int *)(unaff_EDI + 0x19c) == *(int *)(unaff_EDI + 0x198)) &&
           (cVar4 = FUN_008dab40(), cVar4 == '\0')) {
          return 0;
        }
        **(char **)(unaff_EDI + 0x19c) = *pcVar10;
        *(int *)(unaff_EDI + 0x19c) = *(int *)(unaff_EDI + 0x19c) + 1;
        pcVar10 = pcVar10 + 1;
        cVar4 = *pcVar10;
      }
      if ((*(int *)(unaff_EDI + 0x19c) == *(int *)(unaff_EDI + 0x198)) &&
         (cVar4 = FUN_008dab40(), cVar4 == '\0')) {
        return 0;
      }
      **(undefined **)(unaff_EDI + 0x19c) = 0x3d;
      *(int *)(unaff_EDI + 0x19c) = *(int *)(unaff_EDI + 0x19c) + 1;
      iVar9 = *(int *)(ppcVar2[1] + 0x14);
      iVar5 = *(int *)(unaff_EDI + 0x19c);
      if (*(char *)(unaff_EDI + 0x1c8) != '\0') {
        iVar9 = iVar9 + -1;
      }
      iVar7 = 0;
      if (0 < iVar9) {
        do {
          if ((iVar5 == *(int *)(unaff_EDI + 0x198)) && (cVar4 = FUN_008dab40(), cVar4 == '\0')) {
            return 0;
          }
          **(undefined **)(unaff_EDI + 0x19c) = *(undefined *)(*(int *)(ppcVar2[1] + 0x10) + iVar7);
          *(int *)(unaff_EDI + 0x19c) = *(int *)(unaff_EDI + 0x19c) + 1;
          iVar5 = *(int *)(unaff_EDI + 0x19c);
          iVar7 = iVar7 + 1;
        } while (iVar7 < iVar9);
      }
      bVar3 = true;
    }
  }
LAB_008db5f1:
  puVar8 = (undefined4 *)*puVar1;
  puVar1 = puVar8 + puVar1[1];
  while (puVar8 != puVar1) {
    while( true ) {
      ppcVar2 = (char **)*puVar8;
      puVar8 = puVar8 + 1;
      if (ppcVar2 != (char **)0x0) break;
      if (puVar8 == puVar1) goto LAB_008db618;
    }
    if (*(char *)(ppcVar2 + 7) != '\0') {
      if (bVar3) {
        if ((*(int *)(unaff_EDI + 0x19c) == *(int *)(unaff_EDI + 0x198)) &&
           (cVar4 = FUN_008dab40(), cVar4 == '\0')) {
          return 0;
        }
        **(undefined **)(unaff_EDI + 0x19c) = 0xc;
        *(int *)(unaff_EDI + 0x19c) = *(int *)(unaff_EDI + 0x19c) + 1;
      }
      pcVar10 = *ppcVar2;
      cVar4 = *pcVar10;
      while (cVar4 != '\0') {
        if ((*(int *)(unaff_EDI + 0x19c) == *(int *)(unaff_EDI + 0x198)) &&
           (cVar4 = FUN_008dab40(), cVar4 == '\0')) {
          return 0;
        }
        **(char **)(unaff_EDI + 0x19c) = *pcVar10;
        *(int *)(unaff_EDI + 0x19c) = *(int *)(unaff_EDI + 0x19c) + 1;
        pcVar10 = pcVar10 + 1;
        cVar4 = *pcVar10;
      }
      bVar3 = true;
    }
  }
LAB_008db618:
  if ((*(int *)(unaff_EDI + 0x19c) == *(int *)(unaff_EDI + 0x198)) &&
     (cVar4 = FUN_008dab40(), cVar4 == '\0')) {
    return 0;
  }
  **(undefined **)(unaff_EDI + 0x19c) = 0;
  *(int *)(unaff_EDI + 0x19c) = *(int *)(unaff_EDI + 0x19c) + 1;
  return *(undefined4 *)(unaff_EDI + 0x1a0);
}



undefined4 * FUN_008db820(void)

{
  undefined4 *puVar1;
  code **unaff_ESI;
  
  puVar1 = (undefined4 *)(**unaff_ESI)(0xbc);
  if (puVar1 == (undefined4 *)0x0) {
    return (undefined4 *)0x0;
  }
  puVar1[0x14] = 0;
  puVar1[0x15] = 0;
  puVar1[0x18] = 0;
  puVar1[0x17] = 0;
  puVar1[0x16] = 0;
  puVar1[0x19] = unaff_ESI;
  puVar1[0x1a] = 0;
  puVar1[0x1b] = 0;
  puVar1[0x1e] = 0;
  puVar1[0x1d] = 0;
  puVar1[0x1c] = 0;
  puVar1[0x1f] = unaff_ESI;
  puVar1[1] = 0;
  puVar1[3] = 0;
  puVar1[2] = 0;
  *puVar1 = 0;
  puVar1[4] = unaff_ESI;
  puVar1[6] = 0;
  puVar1[8] = 0;
  puVar1[7] = 0;
  puVar1[5] = 0;
  puVar1[9] = unaff_ESI;
  puVar1[0xb] = 0;
  puVar1[0xd] = 0;
  puVar1[0xc] = 0;
  puVar1[10] = 0;
  puVar1[0xe] = unaff_ESI;
  puVar1[0x10] = 0;
  puVar1[0x12] = 0;
  puVar1[0x11] = 0;
  puVar1[0xf] = 0;
  puVar1[0x13] = unaff_ESI;
  *(undefined *)((int)puVar1 + 0x83) = 0;
  puVar1[0x22] = 0;
  puVar1[0x24] = 0;
  puVar1[0x23] = 0;
  puVar1[0x21] = 0;
  puVar1[0x25] = unaff_ESI;
  puVar1[0x26] = 0;
  puVar1[0x27] = 0;
  *(undefined *)(puVar1 + 0x28) = 0;
  puVar1[0x2e] = 0;
  puVar1[0x29] = 0;
  puVar1[0x2d] = 0;
  puVar1[0x2b] = 0;
  puVar1[0x2c] = 0;
  puVar1[0x2a] = 0;
  *(undefined *)(puVar1 + 0x20) = 1;
  *(undefined *)((int)puVar1 + 0x81) = 0;
  *(undefined *)((int)puVar1 + 0x82) = 0;
  return puVar1;
}



void FUN_008db910(char param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  int *piVar5;
  int unaff_EDI;
  
  piVar5 = *(int **)(unaff_EDI + 0x14);
  piVar1 = piVar5 + *(int *)(unaff_EDI + 0x18);
  while (piVar5 != piVar1) {
    while( true ) {
      iVar2 = *piVar5;
      piVar5 = piVar5 + 1;
      if (iVar2 != 0) break;
      if (piVar5 == piVar1) goto LAB_008db935;
    }
    if (*(int *)(iVar2 + 0x10) != 0) {
      (**(code **)(param_2 + 8))(*(undefined4 *)(iVar2 + 0x14));
    }
  }
LAB_008db935:
  FUN_008daac0();
  FUN_008daac0();
  FUN_008daac0();
  FUN_008daac0();
  FUN_008daac0();
  puVar4 = *(undefined4 **)(unaff_EDI + 0x50);
  while (puVar4 != (undefined4 *)0x0) {
    puVar3 = (undefined4 *)*puVar4;
    (**(code **)(*(int *)(unaff_EDI + 100) + 8))(puVar4);
    puVar4 = puVar3;
  }
  puVar4 = *(undefined4 **)(unaff_EDI + 0x54);
  while (puVar4 != (undefined4 *)0x0) {
    puVar3 = (undefined4 *)*puVar4;
    (**(code **)(*(int *)(unaff_EDI + 100) + 8))(puVar4);
    puVar4 = puVar3;
  }
  puVar4 = *(undefined4 **)(unaff_EDI + 0x68);
  while (puVar4 != (undefined4 *)0x0) {
    puVar3 = (undefined4 *)*puVar4;
    (**(code **)(*(int *)(unaff_EDI + 0x7c) + 8))(puVar4);
    puVar4 = puVar3;
  }
  puVar4 = *(undefined4 **)(unaff_EDI + 0x6c);
  while (puVar4 != (undefined4 *)0x0) {
    puVar3 = (undefined4 *)*puVar4;
    (**(code **)(*(int *)(unaff_EDI + 0x7c) + 8))(puVar4);
    puVar4 = puVar3;
  }
  if (param_1 != '\0') {
    if (*(int *)(unaff_EDI + 0xb8) != 0) {
      (**(code **)(param_2 + 8))(*(int *)(unaff_EDI + 0xb8));
    }
    if (*(int *)(unaff_EDI + 0xa4) != 0) {
      (**(code **)(param_2 + 8))(*(int *)(unaff_EDI + 0xa4));
    }
  }
  (**(code **)(param_2 + 8))();
  return;
}



undefined4 FUN_008dba40(int param_1)

{
  char cVar1;
  int in_EAX;
  int unaff_EBX;
  int unaff_EDI;
  
  if ((*(int *)(in_EAX + 0xc) != 0) || (cVar1 = FUN_008dab40(), cVar1 != '\0')) {
    (**(code **)(unaff_EBX + 0x3c))();
    while( true ) {
      if (param_1 == unaff_EDI) {
        return *(undefined4 *)(in_EAX + 0x10);
      }
      cVar1 = FUN_008dab40();
      if (cVar1 == '\0') break;
      (**(code **)(unaff_EBX + 0x3c))();
    }
  }
  return 0;
}



undefined4 __fastcall FUN_008dbaa0(int param_1)

{
  undefined4 uVar1;
  char cVar2;
  char *in_EAX;
  
  do {
    if (*(int *)(param_1 + 0xc) == *(int *)(param_1 + 8)) {
      cVar2 = FUN_008dab40();
      if (cVar2 == '\0') {
        return 0;
      }
    }
    **(char **)(param_1 + 0xc) = *in_EAX;
    *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
    cVar2 = *in_EAX;
    in_EAX = in_EAX + 1;
  } while (cVar2 != '\0');
  uVar1 = *(undefined4 *)(param_1 + 0x10);
  *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(param_1 + 0xc);
  return uVar1;
}



undefined4 __fastcall FUN_008dbae0(int param_1)

{
  char cVar1;
  char *in_EAX;
  
  cVar1 = *in_EAX;
  while( true ) {
    if (cVar1 == '\0') {
      return *(undefined4 *)(param_1 + 0x10);
    }
    if ((*(int *)(param_1 + 0xc) == *(int *)(param_1 + 8)) &&
       (cVar1 = FUN_008dab40(), cVar1 == '\0')) break;
    **(char **)(param_1 + 0xc) = *in_EAX;
    *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
    in_EAX = in_EAX + 1;
    cVar1 = *in_EAX;
  }
  return 0;
}



undefined4 __fastcall FUN_008dbb20(int param_1)

{
  char cVar1;
  int iVar2;
  
  iVar2 = FUN_008dba40();
  if (iVar2 == 0) {
    return 0;
  }
  if ((*(int *)(param_1 + 0xc) == *(int *)(param_1 + 8)) && (cVar1 = FUN_008dab40(), cVar1 == '\0'))
  {
    return 0;
  }
  **(undefined **)(param_1 + 0xc) = 0;
  *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
  return *(undefined4 *)(param_1 + 0x10);
}



int * __thiscall FUN_008dbb60(undefined4 param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  
  iVar4 = *(int *)(param_1 + 0x160);
  iVar2 = FUN_008dba40(param_1_00);
  if (iVar2 != 0) {
    if ((*(int *)(iVar4 + 0x5c) == *(int *)(iVar4 + 0x58)) &&
       (cVar1 = FUN_008dab40(), cVar1 == '\0')) {
      return (int *)0x0;
    }
    **(undefined **)(iVar4 + 0x5c) = 0;
    *(int *)(iVar4 + 0x5c) = *(int *)(iVar4 + 0x5c) + 1;
    iVar2 = *(int *)(iVar4 + 0x60);
    if ((iVar2 != 0) && (piVar3 = (int *)FUN_008da890(iVar2,0x18), piVar3 != (int *)0x0)) {
      if (*piVar3 != iVar2) {
        *(undefined4 *)(iVar4 + 0x5c) = *(undefined4 *)(iVar4 + 0x60);
        return piVar3;
      }
      *(undefined4 *)(iVar4 + 0x60) = *(undefined4 *)(iVar4 + 0x5c);
      iVar4 = FUN_008db450(piVar3);
      if (iVar4 != 0) {
        return piVar3;
      }
    }
  }
  return (int *)0x0;
}



void FUN_008dbbf0(void)

{
  undefined4 uVar1;
  undefined4 *unaff_ESI;
  int unaff_EDI;
  
  unaff_ESI[0x46] = FUN_008db3c0;
  FUN_008ec8a0(unaff_ESI + 0x40);
  if (unaff_EDI == 0) {
    uVar1 = 0;
  }
  else {
    uVar1 = FUN_008dbaa0();
  }
  unaff_ESI[0x3a] = uVar1;
  unaff_ESI[0x59] = 0;
  FUN_008ea890(unaff_ESI + 0x25,unaff_ESI + 0x24,0);
  unaff_ESI[6] = unaff_ESI[2];
  unaff_ESI[7] = unaff_ESI[2];
  *unaff_ESI = 0;
  unaff_ESI[1] = 0;
  unaff_ESI[0xd] = 0;
  unaff_ESI[0xe] = 0;
  unaff_ESI[0xf] = 0;
  unaff_ESI[0x10] = 0;
  unaff_ESI[0x11] = 0;
  unaff_ESI[0x12] = 0;
  unaff_ESI[0x13] = 0;
  unaff_ESI[0x14] = 0;
  unaff_ESI[0x15] = 0;
  unaff_ESI[0x16] = 0;
  unaff_ESI[0x17] = 0;
  unaff_ESI[0x18] = 0;
  unaff_ESI[0x19] = 0;
  unaff_ESI[0x1a] = 0;
  unaff_ESI[0x1b] = 0;
  unaff_ESI[0x1c] = 0;
  unaff_ESI[0x1e] = 0;
  unaff_ESI[0x20] = 0;
  unaff_ESI[0x21] = 0;
  unaff_ESI[0x22] = 0;
  unaff_ESI[0x23] = 0;
  unaff_ESI[9] = 0;
  unaff_ESI[10] = 0;
  unaff_ESI[0x55] = 0;
  unaff_ESI[0x56] = 0;
  unaff_ESI[0x4e] = 0;
  unaff_ESI[0x4f] = 0;
  unaff_ESI[0x50] = 0;
  unaff_ESI[0x51] = 0;
  unaff_ESI[0x52] = 0;
  unaff_ESI[0x53] = 0;
  unaff_ESI[0x54] = 0;
  *(undefined *)(unaff_ESI + 0x57) = 0;
  *(undefined *)((int)unaff_ESI + 0x15d) = 0;
  unaff_ESI[0x1d] = unaff_ESI;
  unaff_ESI[0x62] = 0;
  unaff_ESI[99] = 0;
  unaff_ESI[0x47] = 0;
  unaff_ESI[0x48] = 0;
  unaff_ESI[0x49] = 0;
  unaff_ESI[0x4a] = 0;
  unaff_ESI[0x4b] = 0;
  unaff_ESI[0x4d] = 0;
  unaff_ESI[0x5a] = 0;
  unaff_ESI[0x5c] = 0;
  unaff_ESI[0x5f] = 0;
  unaff_ESI[0x3c] = 0;
  unaff_ESI[0x3f] = 0;
  unaff_ESI[0x3d] = 0;
  unaff_ESI[0x73] = 0;
  *(undefined *)(unaff_ESI + 0x74) = 0;
  *(undefined *)((int)unaff_ESI + 0x1d1) = 0;
  unaff_ESI[0x75] = 0;
  *(undefined *)(unaff_ESI + 0x4c) = 1;
  return;
}



void FUN_008dbd60(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  
  do {
    if (*(int *)(param_1 + 0x168) == 0) {
      if (*(int *)(param_1 + 0x16c) == 0) {
        iVar4 = *(int *)(param_1 + 0x174);
        while (iVar4 != 0) {
          iVar2 = *(int *)(iVar4 + 4);
          (**(code **)(param_1 + 0x14))(*(undefined4 *)(iVar4 + 0x10));
          (**(code **)(param_1 + 0x14))(iVar4);
          iVar4 = iVar2;
        }
        iVar4 = *(int *)(param_1 + 0x170);
        while (iVar4 != 0) {
          iVar2 = *(int *)(iVar4 + 4);
          (**(code **)(param_1 + 0x14))(*(undefined4 *)(iVar4 + 0x10));
          (**(code **)(param_1 + 0x14))(iVar4);
          iVar4 = iVar2;
        }
        puVar1 = *(undefined4 **)(param_1 + 400);
        while (puVar1 != (undefined4 *)0x0) {
          puVar3 = (undefined4 *)*puVar1;
          (**(code **)(*(int *)(param_1 + 0x1a4) + 8))(puVar1);
          puVar1 = puVar3;
        }
        puVar1 = *(undefined4 **)(param_1 + 0x194);
        while (puVar1 != (undefined4 *)0x0) {
          puVar3 = (undefined4 *)*puVar1;
          (**(code **)(*(int *)(param_1 + 0x1a4) + 8))(puVar1);
          puVar1 = puVar3;
        }
        puVar1 = *(undefined4 **)(param_1 + 0x1a8);
        while (puVar1 != (undefined4 *)0x0) {
          puVar3 = (undefined4 *)*puVar1;
          (**(code **)(*(int *)(param_1 + 0x1bc) + 8))(puVar1);
          puVar1 = puVar3;
        }
        puVar1 = *(undefined4 **)(param_1 + 0x1ac);
        while (puVar1 != (undefined4 *)0x0) {
          puVar3 = (undefined4 *)*puVar1;
          (**(code **)(*(int *)(param_1 + 0x1bc) + 8))(puVar1);
          puVar1 = puVar3;
        }
        if ((*(char *)(param_1 + 0x1d0) == '\0') && (*(int *)(param_1 + 0x160) != 0)) {
          FUN_008db910(*(int *)(param_1 + 0x1cc) == 0,param_1 + 0xc);
        }
        (**(code **)(param_1 + 0x14))(*(undefined4 *)(param_1 + 0x184));
        if (*(int *)(param_1 + 0x1c0) != 0) {
          (**(code **)(param_1 + 0x14))(*(int *)(param_1 + 0x1c0));
        }
        if (*(int *)(param_1 + 8) != 0) {
          (**(code **)(param_1 + 0x14))(*(int *)(param_1 + 8));
        }
        (**(code **)(param_1 + 0x14))(*(undefined4 *)(param_1 + 0x2c));
        if (*(int *)(param_1 + 0xf0) != 0) {
          (**(code **)(param_1 + 0x14))(*(int *)(param_1 + 0xf0));
        }
        if (*(code **)(param_1 + 0xfc) != (code *)0x0) {
          (**(code **)(param_1 + 0xfc))(*(undefined4 *)(param_1 + 0xf4));
        }
        (**(code **)(param_1 + 0x14))(param_1);
        return;
      }
      *(int *)(param_1 + 0x168) = *(int *)(param_1 + 0x16c);
      *(undefined4 *)(param_1 + 0x16c) = 0;
    }
    puVar1 = *(undefined4 **)(param_1 + 0x168);
    *(undefined4 *)(param_1 + 0x168) = *puVar1;
    (**(code **)(param_1 + 0x14))(puVar1[9]);
    iVar4 = puVar1[0xb];
    while (iVar4 != 0) {
      iVar2 = *(int *)(iVar4 + 4);
      (**(code **)(param_1 + 0x14))(*(undefined4 *)(iVar4 + 0x10));
      (**(code **)(param_1 + 0x14))(iVar4);
      iVar4 = iVar2;
    }
    (**(code **)(param_1 + 0x14))(puVar1);
  } while( true );
}



undefined4 FUN_008dbf60(int param_1,void *param_2,size_t param_3,int param_4)

{
  int iVar1;
  void *_Dst;
  undefined4 uVar2;
  
  if (param_3 != 0) {
    _Dst = (void *)FUN_008da150(param_1,param_3);
    if (_Dst == (void *)0x0) {
      return 0;
    }
    _memcpy(_Dst,param_2,param_3);
    uVar2 = FUN_008daf20(param_1,param_3,param_4);
    return uVar2;
  }
  if (param_4 != 0) {
    *(undefined4 *)(param_1 + 0x128) = *(undefined4 *)(param_1 + 0x18);
    *(undefined4 *)(param_1 + 0x28) = *(undefined4 *)(param_1 + 0x1c);
    iVar1 = (**(code **)(param_1 + 0x118))
                      (param_1,*(undefined4 *)(param_1 + 0x18),*(undefined4 *)(param_1 + 0x1c),0);
    *(int *)(param_1 + 0x11c) = iVar1;
    if (iVar1 != 0) {
      *(undefined4 *)(param_1 + 0x124) = *(undefined4 *)(param_1 + 0x120);
      *(code **)(param_1 + 0x118) = FUN_008da650;
      return 0;
    }
  }
  return 1;
}



uint FUN_008dc000(int param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  char cVar3;
  uint uVar4;
  
  uVar2 = param_4;
  uVar1 = param_3;
  uVar4 = FUN_008dafc0(&param_2,param_3,param_4);
  if (param_2 != 0) {
    if (*(int *)(param_1 + 0x1cc) != 0) {
      *(code **)(param_1 + 0x118) = FUN_008da360;
      uVar4 = FUN_008da360(param_1);
      return uVar4;
    }
    *(code **)(param_1 + 0x118) = FUN_008dea60;
    uVar4 = FUN_008dddc0(param_1,0,*(undefined4 *)(param_1 + 0x90),param_2,uVar1,uVar2);
    if (uVar4 == 0) {
      cVar3 = FUN_008da2d0(param_1);
      uVar4 = (uint)(cVar3 == '\0');
    }
  }
  return uVar4;
}



void FUN_008dc090(int param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  uVar3 = param_4;
  uVar2 = param_3;
  FUN_008db280(param_1,&param_2,param_3,param_4);
  iVar1 = param_2;
  if (param_2 != 0) {
    *(code **)(param_1 + 0x118) = FUN_008da600;
    uVar4 = (***(code ***)(param_1 + 0x90))(*(code ***)(param_1 + 0x90),param_2,uVar2,&param_2);
    FUN_008deaa0(param_1,*(undefined4 *)(param_1 + 0x90),iVar1,uVar2,uVar4,param_2,uVar3);
  }
  return;
}



// WARNING: Removing unreachable block (ram,0x008dc2c8)
// WARNING: Removing unreachable block (ram,0x008dc2cc)
// WARNING: Removing unreachable block (ram,0x008dc2ff)
// WARNING: Removing unreachable block (ram,0x008dc31a)
// WARNING: Removing unreachable block (ram,0x008dc324)
// WARNING: Removing unreachable block (ram,0x008dc1bf)
// WARNING: Removing unreachable block (ram,0x008dc1fb)
// WARNING: Removing unreachable block (ram,0x008dc191)
// WARNING: Removing unreachable block (ram,0x008dc1a5)
// WARNING: Removing unreachable block (ram,0x008dc20f)
// WARNING: Removing unreachable block (ram,0x008dc1ee)
// WARNING: Removing unreachable block (ram,0x008dc276)
// WARNING: Removing unreachable block (ram,0x008dc284)
// WARNING: Removing unreachable block (ram,0x008dc29b)
// WARNING: Removing unreachable block (ram,0x008dc2ab)

undefined4 __fastcall FUN_008dc100(undefined4 param_1_00,int param_2,undefined4 param_1)

{
  code *pcVar1;
  int iVar2;
  
  pcVar1 = FUN_008eabe0;
  if (*(char *)(param_2 + 0xec) == '\0') {
    pcVar1 = FUN_008ea9e0;
  }
  iVar2 = (*pcVar1)(param_1_00,*(undefined4 *)(param_2 + 0x90),param_1);
  if (iVar2 != 0) {
    if (*(int *)(param_2 + 0x8c) == 0) {
      if (*(int *)(param_2 + 0x50) != 0) {
        FUN_008da6a0(param_1);
      }
    }
    else {
      (**(code **)(param_2 + 0x8c))(*(undefined4 *)(param_2 + 4),0,0,0xffffffff);
    }
    return 0;
  }
  return 2;
}



int FUN_008dc330(int param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,
                int param_6)

{
  char cVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  bool bVar5;
  int local_c;
  undefined auStack_8 [4];
  int local_4;
  
  local_4 = *(int *)(param_1 + 0x160);
  iVar3 = (**(code **)(param_2 + 0x10))(param_2,param_4,param_5,&local_c);
  while (iVar3 + 4U < 0x2c) {
    switch(iVar3 + 4U) {
    case 0:
      if (param_2 == *(int *)(param_1 + 0x90)) {
        *(int *)(param_1 + 0x120) = local_c;
      }
      return 4;
    case 6:
      iVar3 = FUN_008dba40(param_4);
      if (iVar3 == 0) {
        return 1;
      }
      break;
    case 9:
      cVar1 = (**(code **)(param_2 + 0x30))
                        (param_2,*(int *)(param_2 + 0x44) + param_4,
                         local_c - *(int *)(param_2 + 0x44));
      if (cVar1 == '\0') {
        iVar3 = FUN_008dba40(*(int *)(param_2 + 0x44) + param_4);
        if (iVar3 == 0) {
          return 1;
        }
        if ((*(int *)(param_1 + 0x1b4) == *(int *)(param_1 + 0x1b0)) &&
           (cVar1 = FUN_008dab40(), cVar1 == '\0')) {
          return 1;
        }
        iVar3 = local_4;
        **(undefined **)(param_1 + 0x1b4) = 0;
        *(int *)(param_1 + 0x1b4) = *(int *)(param_1 + 0x1b4) + 1;
        if (*(int *)(param_1 + 0x1b8) == 0) {
          return 1;
        }
        iVar4 = FUN_008da890(*(int *)(param_1 + 0x1b8),0);
        *(undefined4 *)(param_1 + 0x1b4) = *(undefined4 *)(param_1 + 0x1b8);
        if (param_6 == iVar3 + 0x50) {
          if (*(int *)(param_1 + 0x110) != 0) {
            if (*(char *)(iVar3 + 0x82) == '\0') {
              bVar5 = *(char *)(iVar3 + 0x81) == '\0';
            }
            else {
              bVar5 = *(int *)(param_1 + 300) == 0;
            }
            if (bVar5) goto LAB_008dc5a1;
          }
LAB_008dc55b:
          if (iVar4 == 0) {
            if ((param_6 == param_1 + 400) && (*(int *)(param_1 + 0x50) != 0)) {
              FUN_008da6a0(param_4);
            }
            break;
          }
        }
        else {
          if ((*(char *)(iVar3 + 0x81) != '\0') && (*(char *)(iVar3 + 0x82) == '\0'))
          goto LAB_008dc55b;
LAB_008dc5a1:
          if (iVar4 == 0) {
            return 0xb;
          }
          if (*(char *)(iVar4 + 0x1e) == '\0') {
            return 0x18;
          }
        }
        if (*(char *)(iVar4 + 0x1c) != '\0') {
          if (param_2 == *(int *)(param_1 + 0x90)) {
            *(int *)(param_1 + 0x120) = param_4;
          }
          return 0xc;
        }
        if (*(int *)(iVar4 + 0x18) != 0) {
          if (param_2 == *(int *)(param_1 + 0x90)) {
            *(int *)(param_1 + 0x120) = param_4;
          }
          return 0xf;
        }
        iVar3 = *(int *)(iVar4 + 4);
        if (iVar3 == 0) {
          if (param_2 == *(int *)(param_1 + 0x90)) {
            *(int *)(param_1 + 0x120) = param_4;
          }
          return 0x10;
        }
        *(undefined *)(iVar4 + 0x1c) = 1;
        iVar3 = FUN_008dc330(param_1,*(undefined4 *)(param_1 + 0xe4),param_3,iVar3,
                             *(int *)(iVar4 + 8) + iVar3,param_6);
        *(undefined *)(iVar4 + 0x1c) = 0;
        if (iVar3 != 0) {
          return iVar3;
        }
      }
      else {
        if ((*(int *)(param_6 + 0xc) == *(int *)(param_6 + 8)) &&
           (cVar2 = FUN_008dab40(), cVar2 == '\0')) {
          return 1;
        }
        **(char **)(param_6 + 0xc) = cVar1;
        *(int *)(param_6 + 0xc) = *(int *)(param_6 + 0xc) + 1;
      }
      break;
    case 10:
      iVar3 = (**(code **)(param_2 + 0x2c))(param_2,param_4);
      if (iVar3 < 0) {
LAB_008dc693:
        if (param_2 == *(int *)(param_1 + 0x90)) {
          *(int *)(param_1 + 0x120) = param_4;
        }
        return 0xe;
      }
      if ((((char)param_3 != '\0') || (iVar3 != 0x20)) ||
         ((*(int *)(param_6 + 0xc) != *(int *)(param_6 + 0x10) &&
          (*(char *)(*(int *)(param_6 + 0xc) + -1) != ' ')))) {
        iVar3 = FUN_008ea080(iVar3,auStack_8);
        if (iVar3 == 0) goto LAB_008dc693;
        iVar4 = 0;
        if (0 < iVar3) {
          do {
            if ((*(int *)(param_6 + 0xc) == *(int *)(param_6 + 8)) &&
               (cVar1 = FUN_008dab40(), cVar1 == '\0')) {
              return 1;
            }
            **(undefined **)(param_6 + 0xc) = auStack_8[iVar4];
            *(int *)(param_6 + 0xc) = *(int *)(param_6 + 0xc) + 1;
            iVar4 = iVar4 + 1;
          } while (iVar4 < iVar3);
        }
      }
      break;
    case 0xfffffffc:
                    // WARNING: This code block may not be properly labeled as switch case
      return 0;
    case 0xfffffffd:
                    // WARNING: This code block may not be properly labeled as switch case
      local_c = *(int *)(param_2 + 0x44) + param_4;
    case 7:
    case 0x27:
      if (((char)param_3 != '\0') ||
         ((*(int *)(param_6 + 0xc) != *(int *)(param_6 + 0x10) &&
          (*(char *)(*(int *)(param_6 + 0xc) + -1) != ' ')))) {
        if ((*(int *)(param_6 + 0xc) == *(int *)(param_6 + 8)) &&
           (cVar1 = FUN_008dab40(), cVar1 == '\0')) {
          return 1;
        }
        **(undefined **)(param_6 + 0xc) = 0x20;
        *(int *)(param_6 + 0xc) = *(int *)(param_6 + 0xc) + 1;
      }
      break;
    default:
      goto switchD_008dc378_caseD_fffffffe;
    case 0xffffffff:
                    // WARNING: This code block may not be properly labeled as switch case
      if (param_2 == *(int *)(param_1 + 0x90)) {
        *(int *)(param_1 + 0x120) = param_4;
      }
      return 4;
    }
    param_4 = local_c;
    iVar3 = (**(code **)(param_2 + 0x10))(param_2,local_c,param_5,&local_c);
  }
switchD_008dc378_caseD_fffffffe:
                    // WARNING: This code block may not be properly labeled as switch case
  if (param_2 == *(int *)(param_1 + 0x90)) {
    *(int *)(param_1 + 0x120) = param_4;
  }
  return 0x17;
}



int FUN_008dc770(int param_1,int param_2,int param_3,undefined4 param_4)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int local_14;
  int local_10;
  int iStack_c;
  undefined auStack_8 [4];
  undefined4 local_4;
  
  iVar2 = param_1;
  local_4 = *(undefined4 *)(param_1 + 0x114);
  iVar5 = *(int *)(param_1 + 0x160);
  *(undefined4 *)(param_1 + 0x114) = 1;
  local_10 = iVar5;
  if ((*(int *)(iVar5 + 0x68) == 0) && (cVar3 = FUN_008dab40(), cVar3 == '\0')) {
    return 1;
  }
  iVar4 = (**(code **)(param_2 + 0x14))(param_2,param_3,param_4,&local_14);
  while (iVar4 + 4U < 0x21) {
    switch((&switchD_008dc7f7::switchdataD_008dcba8)
           [(&switchD_008dc7f7::switchdataD_008dcbcc)[iVar4 + 4U]]) {
    case (undefined *)0x8dc7fe:
      if ((*(char *)(param_1 + 0x1d0) == '\0') && (param_2 == *(int *)(param_1 + 0x90))) {
        *(int *)(param_1 + 0x120) = param_3;
        *(undefined4 *)(param_1 + 0x114) = local_4;
        return 10;
      }
      iVar5 = FUN_008dba40(*(int *)(param_2 + 0x44) + param_3);
      if ((iVar5 == 0) ||
         ((*(int *)(param_1 + 0x19c) == *(int *)(param_1 + 0x198) &&
          (cVar3 = FUN_008dab40(), cVar3 == '\0')))) goto LAB_008dc97e;
      iVar5 = local_10;
      **(undefined **)(param_1 + 0x19c) = 0;
      *(int *)(param_1 + 0x19c) = *(int *)(param_1 + 0x19c) + 1;
      if (*(int *)(param_1 + 0x1a0) == 0) goto LAB_008dc97e;
      iVar4 = FUN_008da890(*(int *)(param_1 + 0x1a0),0);
      *(undefined4 *)(param_1 + 0x19c) = *(undefined4 *)(param_1 + 0x1a0);
      if (iVar4 == 0) {
        *(undefined *)(iVar5 + 0x80) = *(undefined *)(iVar5 + 0x82);
        *(undefined4 *)(param_1 + 0x114) = local_4;
        return 0;
      }
      if (*(char *)(iVar4 + 0x1c) != '\0') {
        if (param_2 == *(int *)(param_1 + 0x90)) {
          *(int *)(param_1 + 0x120) = param_3;
        }
        *(undefined4 *)(param_1 + 0x114) = local_4;
        return 0xc;
      }
      if (*(int *)(iVar4 + 0xc) == 0) {
        *(undefined *)(iVar4 + 0x1c) = 1;
        iVar5 = FUN_008dc770(param_1,*(undefined4 *)(param_1 + 0xe4),*(int *)(iVar4 + 4),
                             *(int *)(iVar4 + 8) + *(int *)(iVar4 + 4));
        *(undefined *)(iVar4 + 0x1c) = 0;
        if (iVar5 != 0) goto LAB_008dcb8f;
      }
      else if (*(int *)(param_1 + 0x70) == 0) {
        *(undefined *)(iVar5 + 0x80) = *(undefined *)(iVar5 + 0x82);
      }
      else {
        *(undefined *)(iVar5 + 0x83) = 0;
        *(undefined *)(iVar4 + 0x1c) = 1;
        iVar6 = (**(code **)(param_1 + 0x70))
                          (*(undefined4 *)(param_1 + 0x74),0,*(undefined4 *)(iVar4 + 0x10),
                           *(undefined4 *)(iVar4 + 0xc),*(undefined4 *)(iVar4 + 0x14));
        *(undefined *)(iVar4 + 0x1c) = 0;
        if (iVar6 == 0) {
          *(undefined4 *)(param_1 + 0x114) = local_4;
          return 0x15;
        }
        if (*(char *)(iVar5 + 0x83) == '\0') {
          *(undefined *)(iVar5 + 0x80) = *(undefined *)(iVar5 + 0x82);
        }
      }
      break;
    case (undefined *)0x8dc962:
      iVar5 = FUN_008dba40(param_3);
      if (iVar5 == 0) goto LAB_008dc97e;
      break;
    case (undefined *)0x8dc99c:
      local_14 = *(int *)(param_2 + 0x44) + param_3;
    case (undefined *)0x8dc9a5:
      if ((*(int *)(iVar5 + 0x70) == *(int *)(iVar5 + 0x74)) &&
         (cVar3 = FUN_008dab40(), cVar3 == '\0')) {
LAB_008dc97e:
        *(undefined4 *)(param_1 + 0x114) = local_4;
        return 1;
      }
      **(undefined **)(iVar5 + 0x74) = 10;
      *(int *)(iVar5 + 0x74) = *(int *)(iVar5 + 0x74) + 1;
      break;
    case (undefined *)0x8dc9cb:
      iVar5 = (**(code **)(param_2 + 0x2c))(param_2,param_3);
      if ((iVar5 < 0) || (iVar5 = FUN_008ea080(iVar5,auStack_8), iVar5 == 0)) {
        if (param_2 == *(int *)(param_1 + 0x90)) {
          *(int *)(param_1 + 0x120) = param_3;
        }
        *(undefined4 *)(param_1 + 0x114) = local_4;
        return 0xe;
      }
      iVar4 = 0;
      iStack_c = iVar5;
      if (0 < iVar5) {
        do {
          iVar6 = local_10;
          if ((*(int *)(local_10 + 0x70) == *(int *)(local_10 + 0x74)) &&
             (cVar3 = FUN_008dab40(), iVar5 = iStack_c, cVar3 == '\0')) goto LAB_008dc97e;
          **(undefined **)(iVar6 + 0x74) = auStack_8[iVar4];
          piVar1 = (int *)(iVar6 + 0x74);
          *piVar1 = *piVar1 + 1;
          iVar4 = iVar4 + 1;
        } while (iVar4 < iVar5);
      }
      break;
    case (undefined *)0x8dcad3:
      *(undefined4 *)(param_1 + 0x114) = local_4;
      return 0;
    case (undefined *)0x8dcb1d:
      if (param_2 == *(int *)(param_1 + 0x90)) {
        *(int *)(param_1 + 0x120) = param_3;
      }
      *(undefined4 *)(param_1 + 0x114) = local_4;
      return 4;
    case (undefined *)0x8dcb49:
      if (param_2 == *(int *)(param_1 + 0x90)) {
        *(int *)(param_1 + 0x120) = local_14;
      }
      *(undefined4 *)(param_1 + 0x114) = local_4;
      return 4;
    case (undefined *)0x8dcb79:
      goto switchD_008dc7f7_caseD_8dcb79;
    }
    param_3 = local_14;
    iVar4 = (**(code **)(param_2 + 0x14))(param_2,local_14,param_4,&local_14);
    iVar5 = local_10;
  }
switchD_008dc7f7_caseD_8dcb79:
  if (param_2 == *(int *)(param_1 + 0x90)) {
    *(int *)(param_1 + 0x120) = param_3;
  }
  param_1 = 0x17;
  iVar5 = param_1;
LAB_008dcb8f:
  param_1 = iVar5;
  *(undefined4 *)(iVar2 + 0x114) = local_4;
  return param_1;
}



undefined4 __thiscall FUN_008dcbf0(int param_1_00,int param_1,int param_2)

{
  char cVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  
  if (*(int *)(param_1 + 0x40) == 0) {
    if (*(int *)(param_1 + 0x50) != 0) {
      FUN_008da6a0(param_2);
    }
    return 1;
  }
  param_2 = param_2 + *(int *)(param_1_00 + 0x44) * 2;
  iVar2 = (**(code **)(param_1_00 + 0x20))(param_1_00,param_2);
  iVar3 = FUN_008dba40(param_2);
  if (iVar3 != 0) {
    if ((*(int *)(param_1 + 0x19c) == *(int *)(param_1 + 0x198)) &&
       (cVar1 = FUN_008dab40(), cVar1 == '\0')) {
      return 0;
    }
    **(undefined **)(param_1 + 0x19c) = 0;
    iVar3 = *(int *)(param_1 + 0x1a0);
    *(int *)(param_1 + 0x19c) = *(int *)(param_1 + 0x19c) + 1;
    if (iVar3 != 0) {
      *(undefined4 *)(param_1 + 0x1a0) = *(undefined4 *)(param_1 + 0x19c);
      uVar4 = (**(code **)(param_1_00 + 0x24))(param_1_00,iVar2 + param_2);
      iVar2 = FUN_008dba40(uVar4);
      if (iVar2 != 0) {
        if ((*(int *)(param_1 + 0x19c) == *(int *)(param_1 + 0x198)) &&
           (cVar1 = FUN_008dab40(), cVar1 == '\0')) {
          return 0;
        }
        **(undefined **)(param_1 + 0x19c) = 0;
        iVar2 = *(int *)(param_1 + 0x1a0);
        *(int *)(param_1 + 0x19c) = *(int *)(param_1 + 0x19c) + 1;
        if (iVar2 != 0) {
          FUN_008da660();
          (**(code **)(param_1 + 0x40))(*(undefined4 *)(param_1 + 4),iVar3,iVar2);
          FUN_008dab00();
          return 1;
        }
      }
    }
  }
  return 0;
}



undefined4 __fastcall FUN_008dcd00(int param_1_00,int param_2,int param_1)

{
  char cVar1;
  int iVar2;
  
  if (*(int *)(param_1 + 0x44) == 0) {
    if (*(int *)(param_1 + 0x50) != 0) {
      FUN_008da6a0(param_2);
    }
    return 1;
  }
  iVar2 = FUN_008dba40(param_2 + *(int *)(param_1_00 + 0x44) * 4);
  if (iVar2 != 0) {
    if ((*(int *)(param_1 + 0x19c) == *(int *)(param_1 + 0x198)) &&
       (cVar1 = FUN_008dab40(), cVar1 == '\0')) {
      return 0;
    }
    **(undefined **)(param_1 + 0x19c) = 0;
    iVar2 = *(int *)(param_1 + 0x1a0);
    *(int *)(param_1 + 0x19c) = *(int *)(param_1 + 0x19c) + 1;
    if (iVar2 != 0) {
      FUN_008da660();
      (**(code **)(param_1 + 0x44))(*(undefined4 *)(param_1 + 4),iVar2);
      FUN_008dab00();
      return 1;
    }
  }
  return 0;
}



char ** FUN_008dcda0(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  char cVar2;
  int iVar3;
  char **ppcVar4;
  int *piVar5;
  char *pcVar6;
  int iVar7;
  
  iVar1 = *(int *)(param_1 + 0x160);
  if ((*(int *)(iVar1 + 0x5c) == *(int *)(iVar1 + 0x58)) && (cVar2 = FUN_008dab40(), cVar2 == '\0'))
  {
    return (char **)0x0;
  }
  **(undefined **)(iVar1 + 0x5c) = 0;
  *(int *)(iVar1 + 0x5c) = *(int *)(iVar1 + 0x5c) + 1;
  iVar3 = FUN_008dba40(param_3);
  if ((iVar3 != 0) &&
     ((*(int *)(iVar1 + 0x5c) != *(int *)(iVar1 + 0x58) || (cVar2 = FUN_008dab40(), cVar2 != '\0')))
     ) {
    **(undefined **)(iVar1 + 0x5c) = 0;
    iVar3 = *(int *)(iVar1 + 0x60);
    *(int *)(iVar1 + 0x5c) = *(int *)(iVar1 + 0x5c) + 1;
    if (iVar3 != 0) {
      pcVar6 = (char *)(iVar3 + 1);
      ppcVar4 = (char **)FUN_008da890(pcVar6,0xc);
      if (ppcVar4 != (char **)0x0) {
        if (*ppcVar4 != pcVar6) {
          *(undefined4 *)(iVar1 + 0x5c) = *(undefined4 *)(iVar1 + 0x60);
          return ppcVar4;
        }
        *(undefined4 *)(iVar1 + 0x60) = *(undefined4 *)(iVar1 + 0x5c);
        if (*(char *)(param_1 + 0xec) != '\0') {
          cVar2 = *pcVar6;
          if ((((cVar2 == 'x') && (*(char *)(iVar3 + 2) == 'm')) && (*(char *)(iVar3 + 3) == 'l'))
             && ((*(char *)(iVar3 + 4) == 'n' && (*(char *)(iVar3 + 5) == 's')))) {
            if (*(char *)(iVar3 + 6) == '\0') {
              ppcVar4[1] = (char *)(iVar1 + 0x98);
              *(undefined *)((int)ppcVar4 + 9) = 1;
              return ppcVar4;
            }
            if (*(char *)(iVar3 + 6) == ':') {
              pcVar6 = (char *)FUN_008da890(iVar3 + 7,8);
              ppcVar4[1] = pcVar6;
              *(undefined *)((int)ppcVar4 + 9) = 1;
              return ppcVar4;
            }
          }
          iVar3 = 0;
          if (cVar2 != '\0') {
            while (cVar2 != ':') {
              cVar2 = pcVar6[iVar3 + 1];
              iVar3 = iVar3 + 1;
              if (cVar2 == '\0') {
                return ppcVar4;
              }
            }
            iVar7 = 0;
            if (0 < iVar3) {
              do {
                if ((*(int *)(iVar1 + 0x5c) == *(int *)(iVar1 + 0x58)) &&
                   (cVar2 = FUN_008dab40(), cVar2 == '\0')) {
                  return (char **)0x0;
                }
                **(char **)(iVar1 + 0x5c) = pcVar6[iVar7];
                *(int *)(iVar1 + 0x5c) = *(int *)(iVar1 + 0x5c) + 1;
                iVar7 = iVar7 + 1;
              } while (iVar7 < iVar3);
            }
            if ((*(int *)(iVar1 + 0x5c) == *(int *)(iVar1 + 0x58)) &&
               (cVar2 = FUN_008dab40(), cVar2 == '\0')) {
              return (char **)0x0;
            }
            **(undefined **)(iVar1 + 0x5c) = 0;
            *(int *)(iVar1 + 0x5c) = *(int *)(iVar1 + 0x5c) + 1;
            piVar5 = (int *)FUN_008da890(*(undefined4 *)(iVar1 + 0x60),8);
            ppcVar4[1] = (char *)piVar5;
            if (*piVar5 == *(int *)(iVar1 + 0x60)) {
              *(undefined4 *)(iVar1 + 0x60) = *(undefined4 *)(iVar1 + 0x5c);
              return ppcVar4;
            }
            *(int *)(iVar1 + 0x5c) = *(int *)(iVar1 + 0x60);
          }
        }
        return ppcVar4;
      }
    }
  }
  return (char **)0x0;
}



undefined4 __fastcall FUN_008dcf90(int param_1)

{
  int iVar1;
  char *pcVar2;
  char cVar3;
  char *in_EAX;
  int iVar4;
  int *piVar5;
  char *pcVar6;
  char *local_8;
  
  cVar3 = *in_EAX;
  iVar1 = *(int *)(param_1 + 0x160);
  pcVar6 = in_EAX;
  local_8 = in_EAX;
  do {
    if (cVar3 == '\0') {
      return 1;
    }
    cVar3 = *in_EAX;
    if ((cVar3 == '\f') || (cVar3 == '\0')) {
      if ((*(int *)(param_1 + 0x19c) == *(int *)(param_1 + 0x198)) &&
         (cVar3 = FUN_008dab40(), cVar3 == '\0')) {
        return 0;
      }
      **(undefined **)(param_1 + 0x19c) = 0;
      *(int *)(param_1 + 0x19c) = *(int *)(param_1 + 0x19c) + 1;
      iVar4 = FUN_008da890(*(undefined4 *)(param_1 + 0x1a0),0);
      if (iVar4 != 0) {
        *(undefined *)(iVar4 + 0x1c) = 1;
      }
      if (*in_EAX != '\0') {
        in_EAX = in_EAX + 1;
        local_8 = in_EAX;
      }
      *(undefined4 *)(param_1 + 0x19c) = *(undefined4 *)(param_1 + 0x1a0);
      pcVar6 = in_EAX;
    }
    else if (cVar3 == '=') {
      if (*(int *)(param_1 + 0x19c) == *(int *)(param_1 + 0x1a0)) {
        piVar5 = (int *)(iVar1 + 0x98);
      }
      else {
        if ((*(int *)(param_1 + 0x19c) == *(int *)(param_1 + 0x198)) &&
           (cVar3 = FUN_008dab40(), cVar3 == '\0')) {
          return 0;
        }
        **(undefined **)(param_1 + 0x19c) = 0;
        *(int *)(param_1 + 0x19c) = *(int *)(param_1 + 0x19c) + 1;
        piVar5 = (int *)FUN_008da890(*(undefined4 *)(param_1 + 0x1a0),8);
        if (piVar5 == (int *)0x0) {
          return 0;
        }
        if (*piVar5 == *(int *)(param_1 + 0x1a0)) {
          iVar4 = FUN_008dbaa0();
          *piVar5 = iVar4;
          if (iVar4 == 0) {
            return 0;
          }
        }
        *(undefined4 *)(param_1 + 0x19c) = *(undefined4 *)(param_1 + 0x1a0);
      }
      cVar3 = local_8[1];
      pcVar2 = local_8;
      while ((in_EAX = pcVar2 + 1, cVar3 != '\f' && (cVar3 != '\0'))) {
        if ((*(int *)(param_1 + 0x19c) == *(int *)(param_1 + 0x198)) &&
           (cVar3 = FUN_008dab40(), cVar3 == '\0')) {
          return 0;
        }
        **(char **)(param_1 + 0x19c) = *in_EAX;
        *(int *)(param_1 + 0x19c) = *(int *)(param_1 + 0x19c) + 1;
        cVar3 = pcVar2[2];
        pcVar2 = in_EAX;
      }
      if ((*(int *)(param_1 + 0x19c) == *(int *)(param_1 + 0x198)) &&
         (cVar3 = FUN_008dab40(), cVar3 == '\0')) {
        return 0;
      }
      **(undefined **)(param_1 + 0x19c) = 0;
      *(int *)(param_1 + 0x19c) = *(int *)(param_1 + 0x19c) + 1;
      iVar4 = FUN_008da3a0(piVar5,0,*(undefined4 *)(param_1 + 0x1a0),param_1 + 0x170);
      if (iVar4 != 0) {
        return 0;
      }
      *(undefined4 *)(param_1 + 0x19c) = *(undefined4 *)(param_1 + 0x1a0);
      pcVar6 = in_EAX;
      local_8 = in_EAX;
      if (*in_EAX != '\0') {
        in_EAX = pcVar2 + 2;
        pcVar6 = in_EAX;
        local_8 = in_EAX;
      }
    }
    else {
      if ((*(int *)(param_1 + 0x19c) == *(int *)(param_1 + 0x198)) &&
         (cVar3 = FUN_008dab40(), cVar3 == '\0')) {
        return 0;
      }
      **(char **)(param_1 + 0x19c) = *in_EAX;
      *(int *)(param_1 + 0x19c) = *(int *)(param_1 + 0x19c) + 1;
      in_EAX = in_EAX + 1;
      local_8 = in_EAX;
    }
    cVar3 = *pcVar6;
  } while( true );
}



void * FUN_008dd1e0(int param_1,undefined *param_2,int param_3)

{
  code *pcVar1;
  code **in_EAX;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  code **ppcVar5;
  
  if (in_EAX == (code **)0x0) {
    pvVar2 = _malloc(0x1d8);
    if (pvVar2 == (void *)0x0) {
      return (void *)0x0;
    }
    ppcVar5 = (code **)((int)pvVar2 + 0xc);
    *ppcVar5 = _malloc;
    *(code **)((int)pvVar2 + 0x10) = _realloc;
    *(code **)((int)pvVar2 + 0x14) = _free;
  }
  else {
    pvVar2 = (void *)(**in_EAX)();
    if (pvVar2 == (void *)0x0) {
      return (void *)0x0;
    }
    ppcVar5 = (code **)((int)pvVar2 + 0xc);
    *ppcVar5 = *in_EAX;
    *(code **)((int)pvVar2 + 0x10) = in_EAX[1];
    *(code **)((int)pvVar2 + 0x14) = in_EAX[2];
  }
  pcVar1 = *ppcVar5;
  *(undefined4 *)((int)pvVar2 + 8) = 0;
  *(undefined4 *)((int)pvVar2 + 0x20) = 0;
  *(undefined4 *)((int)pvVar2 + 0x178) = 0x10;
  iVar3 = (*pcVar1)(0x100);
  *(int *)((int)pvVar2 + 0x184) = iVar3;
  if (iVar3 == 0) {
    (**(code **)((int)pvVar2 + 0x14))(pvVar2);
    return (void *)0x0;
  }
  iVar3 = (**ppcVar5)(0x400);
  *(int *)((int)pvVar2 + 0x2c) = iVar3;
  if (iVar3 == 0) {
    (**(code **)((int)pvVar2 + 0x14))(*(undefined4 *)((int)pvVar2 + 0x184));
    (**(code **)((int)pvVar2 + 0x14))(pvVar2);
    return (void *)0x0;
  }
  *(int *)((int)pvVar2 + 0x30) = iVar3 + 0x400;
  if (param_3 == 0) {
    iVar3 = FUN_008db820();
    *(int *)((int)pvVar2 + 0x160) = iVar3;
    if (iVar3 == 0) {
      (**(code **)((int)pvVar2 + 0x14))(*(undefined4 *)((int)pvVar2 + 0x2c));
      (**(code **)((int)pvVar2 + 0x14))(*(undefined4 *)((int)pvVar2 + 0x184));
      (**(code **)((int)pvVar2 + 0x14))(pvVar2);
      return (void *)0x0;
    }
  }
  else {
    *(int *)((int)pvVar2 + 0x160) = param_3;
  }
  *(undefined4 *)((int)pvVar2 + 0x174) = 0;
  *(undefined4 *)((int)pvVar2 + 0x16c) = 0;
  *(undefined4 *)((int)pvVar2 + 0x1c4) = 0;
  *(undefined4 *)((int)pvVar2 + 0x1c0) = 0;
  *(undefined4 *)((int)pvVar2 + 0x7c) = 0;
  *(undefined4 *)((int)pvVar2 + 0xf8) = 0;
  *(undefined *)((int)pvVar2 + 0x1c8) = 0x21;
  *(undefined *)((int)pvVar2 + 0xec) = 0;
  *(undefined *)((int)pvVar2 + 0xed) = 0;
  *(code ***)((int)pvVar2 + 0x1a4) = ppcVar5;
  *(undefined4 *)((int)pvVar2 + 400) = 0;
  *(undefined4 *)((int)pvVar2 + 0x194) = 0;
  *(undefined4 *)((int)pvVar2 + 0x1a0) = 0;
  *(undefined4 *)((int)pvVar2 + 0x19c) = 0;
  *(undefined4 *)((int)pvVar2 + 0x198) = 0;
  *(code ***)((int)pvVar2 + 0x1bc) = ppcVar5;
  *(undefined4 *)((int)pvVar2 + 0x1a8) = 0;
  *(undefined4 *)((int)pvVar2 + 0x1ac) = 0;
  *(undefined4 *)((int)pvVar2 + 0x1b8) = 0;
  *(undefined4 *)((int)pvVar2 + 0x1b4) = 0;
  *(undefined4 *)((int)pvVar2 + 0x1b0) = 0;
  FUN_008dbbf0();
  if ((param_1 != 0) && (*(int *)((int)pvVar2 + 0xe8) == 0)) {
    FUN_008dbd60(pvVar2);
    return (void *)0x0;
  }
  if (param_2 == (undefined *)0x0) {
    uVar4 = FUN_008ea820();
    *(undefined4 *)((int)pvVar2 + 0xe4) = uVar4;
    return pvVar2;
  }
  *(undefined *)((int)pvVar2 + 0xec) = 1;
  uVar4 = FUN_008eaa20();
  *(undefined4 *)((int)pvVar2 + 0xe4) = uVar4;
  *(undefined *)((int)pvVar2 + 0x1c8) = *param_2;
  return pvVar2;
}



undefined4 FUN_008dd3e0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  undefined4 uVar6;
  
  uVar4 = param_3;
  uVar2 = param_2;
  iVar3 = param_1;
  puVar1 = (undefined4 *)(param_1 + 0x90);
  *(code **)(param_1 + 0x118) = FUN_008dd3e0;
  *(undefined4 *)(param_1 + 0x120) = param_2;
  param_1 = 0;
  iVar5 = (**(code **)*puVar1)((code **)*puVar1,param_2,param_3,&param_1);
  *(int *)(iVar3 + 0x124) = param_1;
joined_r0x008dd42f:
  if (0x1e < iVar5 + 0xfU) {
switchD_008dd447_caseD_fffffff2:
                    // WARNING: This code block may not be properly labeled as switch case
    return 9;
  }
  switch(iVar5 + 0xfU) {
  case 0:
    *(int *)(iVar3 + 0x120) = param_1;
    return 4;
  case 0xb:
    iVar5 = FUN_008dcbf0(iVar3,uVar2,param_1);
    goto LAB_008dd489;
  case 0xd:
    iVar5 = FUN_008dcd00(iVar3);
LAB_008dd489:
    uVar6 = param_1;
    if (iVar5 == 0) {
      return 1;
    }
LAB_008dd495:
    *(undefined4 *)(iVar3 + 0x120) = uVar6;
    param_1 = 0;
    iVar5 = (***(code ***)(iVar3 + 0x90))(*(code ***)(iVar3 + 0x90),uVar6,uVar4,&param_1);
    *(int *)(iVar3 + 0x124) = param_1;
    uVar2 = uVar6;
    goto joined_r0x008dd42f;
  case 0xf:
    uVar6 = param_1;
    if (*(int *)(iVar3 + 0x50) != 0) {
      FUN_008da6a0(uVar2);
      uVar6 = param_1;
    }
    goto LAB_008dd495;
  case 0xfffffff1:
                    // WARNING: This code block may not be properly labeled as switch case
    if (*(int *)(iVar3 + 0x50) != 0) {
      *(int *)(iVar3 + 0x124) = param_1;
      FUN_008da6a0(uVar2);
    }
    if (param_4 != (undefined4 *)0x0) {
      *param_4 = param_1;
    }
    return 0;
  default:
    goto switchD_008dd447_caseD_fffffff2;
  case 0xfffffffc:
                    // WARNING: This code block may not be properly labeled as switch case
    if (param_4 == (undefined4 *)0x0) {
      return 0;
    }
    break;
  case 0xfffffffe:
                    // WARNING: This code block may not be properly labeled as switch case
    if (param_4 == (undefined4 *)0x0) {
      return 6;
    }
    break;
  case 0xffffffff:
                    // WARNING: This code block may not be properly labeled as switch case
    if (param_4 == (undefined4 *)0x0) {
      return 5;
    }
  }
  *param_4 = uVar2;
  return 0;
}



int FUN_008dd5a0(undefined4 param_1,undefined4 param_2,int param_3)

{
  char cVar1;
  int iVar2;
  char *pcVar3;
  char unaff_BL;
  
  iVar2 = FUN_008dc330(param_1,param_2);
  if (iVar2 == 0) {
    if (((unaff_BL == '\0') && (*(int *)(param_3 + 0xc) != *(int *)(param_3 + 0x10))) &&
       (pcVar3 = (char *)(*(int *)(param_3 + 0xc) + -1), *pcVar3 == ' ')) {
      *(char **)(param_3 + 0xc) = pcVar3;
    }
    if (*(int *)(param_3 + 0xc) == *(int *)(param_3 + 8)) {
      cVar1 = FUN_008dab40();
      if (cVar1 == '\0') {
        return 1;
      }
    }
    **(undefined **)(param_3 + 0xc) = 0;
    *(int *)(param_3 + 0xc) = *(int *)(param_3 + 0xc) + 1;
    iVar2 = 0;
  }
  return iVar2;
}



int FUN_008dd600(int param_1,int param_2,undefined4 param_3,int **param_4,int *param_5)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  char cVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int *piVar10;
  char *pcVar11;
  int **ppiVar12;
  int *piVar13;
  int iVar14;
  int iVar15;
  size_t sVar16;
  size_t _Size;
  void *_Dst;
  int iStack_24;
  int local_20;
  int local_1c;
  int iStack_14;
  int iStack_10;
  int *local_c;
  
  iVar4 = param_1;
  iVar1 = *(int *)(param_1 + 0x160);
  iVar15 = 0;
  param_1 = 0;
  local_20 = 0;
  local_1c = FUN_008da890(*param_4,0);
  if ((local_1c == 0) &&
     (((iVar6 = FUN_008dbaa0(), iVar6 == 0 || (local_1c = FUN_008da890(iVar6,0x18), local_1c == 0))
      || ((*(char *)(iVar4 + 0xec) != '\0' && (iVar6 = FUN_008db450(local_1c), iVar6 == 0)))))) {
    return 1;
  }
  iVar6 = *(int *)(local_1c + 0xc);
  iVar7 = (**(code **)(param_2 + 0x28))
                    (param_2,param_3,*(undefined4 *)(iVar4 + 0x178),*(undefined4 *)(iVar4 + 0x184));
  iVar2 = *(int *)(iVar4 + 0x178);
  if (iVar2 < iVar7 + iVar6) {
    iVar8 = iVar7 + iVar6 + 0x10;
    *(int *)(iVar4 + 0x178) = iVar8;
    iVar8 = (**(code **)(iVar4 + 0x10))(*(undefined4 *)(iVar4 + 0x184),iVar8 * 0x10);
    if (iVar8 == 0) {
      return 1;
    }
    *(int *)(iVar4 + 0x184) = iVar8;
    if (iVar2 < iVar7) {
      (**(code **)(param_2 + 0x28))(param_2,param_3,iVar7,iVar8);
    }
  }
  iVar2 = *(int *)(iVar4 + 0x184);
  iStack_24 = 0;
  if (0 < iVar7) {
    iStack_14 = 0;
    do {
      iVar8 = *(int *)(iStack_14 + *(int *)(iVar4 + 0x184));
      iVar9 = (**(code **)(param_2 + 0x20))
                        (param_2,*(undefined4 *)(*(int *)(iVar4 + 0x184) + iStack_14));
      piVar10 = (int *)FUN_008dcda0(iVar4,param_2,iVar8,iVar9 + iVar8);
      if (piVar10 == (int *)0x0) {
        return 1;
      }
      if (*(char *)(*piVar10 + -1) != '\0') {
        if (param_2 == *(int *)(iVar4 + 0x90)) {
          *(undefined4 *)(iVar4 + 0x120) =
               *(undefined4 *)(iStack_24 * 0x10 + *(int *)(iVar4 + 0x184));
        }
        return 8;
      }
      *(undefined *)(*piVar10 + -1) = 1;
      *(int *)(iVar2 + iVar15 * 4) = *piVar10;
      iVar9 = iVar15 + 1;
      iVar8 = *(int *)(iVar4 + 0x184) + iStack_14;
      if (*(char *)(*(int *)(iVar4 + 0x184) + 0xc + iStack_14) == '\0') {
        cVar5 = '\x01';
        if ((*(char *)(piVar10 + 2) != '\0') && (iVar14 = 0, 0 < iVar6)) {
          ppiVar12 = *(int ***)(local_1c + 0x14);
          do {
            if (piVar10 == *ppiVar12) {
              cVar5 = *(char *)(*(int ***)(local_1c + 0x14) + iVar14 * 3 + 1);
              break;
            }
            iVar14 = iVar14 + 1;
            ppiVar12 = ppiVar12 + 3;
          } while (iVar14 < iVar6);
        }
        iVar8 = FUN_008dc330(iVar4,param_2,cVar5,*(undefined4 *)(iVar8 + 4),
                             *(undefined4 *)(iVar8 + 8),iVar4 + 400);
        if (iVar8 != 0) {
          return iVar8;
        }
        if (((cVar5 == '\0') && (*(int *)(iVar4 + 0x19c) != *(int *)(iVar4 + 0x1a0))) &&
           (pcVar11 = (char *)(*(int *)(iVar4 + 0x19c) + -1), *pcVar11 == ' ')) {
          *(char **)(iVar4 + 0x19c) = pcVar11;
        }
        if ((*(int *)(iVar4 + 0x19c) == *(int *)(iVar4 + 0x198)) &&
           (cVar5 = FUN_008dab40(), cVar5 == '\0')) {
          return 1;
        }
        **(undefined **)(iVar4 + 0x19c) = 0;
        *(int *)(iVar4 + 0x19c) = *(int *)(iVar4 + 0x19c) + 1;
        *(undefined4 *)(iVar2 + iVar9 * 4) = *(undefined4 *)(iVar4 + 0x1a0);
        *(undefined4 *)(iVar4 + 0x1a0) = *(undefined4 *)(iVar4 + 0x19c);
      }
      else {
        iVar8 = FUN_008dba40(*(undefined4 *)(iVar8 + 4));
        if (iVar8 == 0) {
          iVar8 = 0;
        }
        else if ((*(int *)(iVar4 + 0x19c) == *(int *)(iVar4 + 0x198)) &&
                (cVar5 = FUN_008dab40(), cVar5 == '\0')) {
          iVar8 = 0;
        }
        else {
          **(undefined **)(iVar4 + 0x19c) = 0;
          *(int *)(iVar4 + 0x19c) = *(int *)(iVar4 + 0x19c) + 1;
          iVar8 = *(int *)(iVar4 + 0x1a0);
        }
        *(int *)(iVar2 + iVar9 * 4) = iVar8;
        if (iVar8 == 0) {
          return 1;
        }
        *(undefined4 *)(iVar4 + 0x1a0) = *(undefined4 *)(iVar4 + 0x19c);
      }
      if (piVar10[1] == 0) {
LAB_008dd905:
        iVar15 = iVar15 + 2;
      }
      else {
        if (*(char *)((int)piVar10 + 9) == '\0') {
          local_20 = local_20 + 1;
          *(undefined *)(*piVar10 + -1) = 2;
          goto LAB_008dd905;
        }
        iVar8 = FUN_008da3a0(piVar10[1],piVar10,*(undefined4 *)(iVar2 + iVar9 * 4),param_5);
        if (iVar8 != 0) {
          return iVar8;
        }
      }
      iStack_14 = iStack_14 + 0x10;
      iStack_24 = iStack_24 + 1;
      param_1 = iVar15;
    } while (iStack_24 < iVar7);
  }
  *(int *)(iVar4 + 0x17c) = param_1;
  piVar10 = *(int **)(local_1c + 8);
  if ((piVar10 == (int *)0x0) || (*(char *)(*piVar10 + -1) == '\0')) {
    *(undefined4 *)(iVar4 + 0x180) = 0xffffffff;
  }
  else {
    iVar15 = 0;
    if (0 < param_1) {
      do {
        if (*(int *)(iVar2 + iVar15 * 4) == *piVar10) {
          *(int *)(iVar4 + 0x180) = iVar15;
          break;
        }
        iVar15 = iVar15 + 2;
      } while (iVar15 < param_1);
    }
  }
  iStack_24 = 0;
  iVar15 = param_1;
  if (0 < iVar6) {
    iStack_10 = 0;
    do {
      ppiVar12 = (int **)(*(int *)(local_1c + 0x14) + iStack_10);
      piVar10 = *ppiVar12;
      iVar7 = *piVar10;
      if ((*(char *)(iVar7 + -1) == '\0') && (ppiVar12[2] != (int *)0x0)) {
        if (piVar10[1] == 0) {
          *(undefined *)(iVar7 + -1) = 1;
        }
        else {
          if (*(char *)((int)piVar10 + 9) != '\0') {
            iVar7 = FUN_008da3a0(piVar10[1],piVar10,ppiVar12[2],param_5);
            iVar15 = param_1;
            if (iVar7 != 0) {
              return iVar7;
            }
            goto LAB_008dda26;
          }
          local_20 = local_20 + 1;
          *(undefined *)(iVar7 + -1) = 2;
        }
        *(int *)(iVar2 + iVar15 * 4) = **ppiVar12;
        *(int **)(iVar2 + (iVar15 + 1) * 4) = ppiVar12[2];
        param_1 = iVar15 + 2;
        iVar15 = param_1;
      }
LAB_008dda26:
      iStack_10 = iStack_10 + 0xc;
      iStack_24 = iStack_24 + 1;
    } while (iStack_24 < iVar6);
  }
  *(undefined4 *)(iVar2 + iVar15 * 4) = 0;
  iStack_24 = 0;
  iVar6 = 0;
  if (local_20 == 0) {
joined_r0x008ddbd8:
    for (; iVar6 < iVar15; iVar6 = iVar6 + 2) {
      *(undefined *)(*(int *)(iVar2 + iVar6 * 4) + -1) = 0;
    }
  }
  else if (0 < iVar15) {
    do {
      iVar6 = *(int *)(iVar2 + iStack_24 * 4);
      cVar5 = *(char *)(iVar6 + -1);
      *(undefined *)(iVar6 + -1) = 0;
      if (cVar5 == '\x02') {
        iVar6 = FUN_008da890(*(undefined4 *)(iVar2 + iStack_24 * 4),0);
        puVar3 = *(undefined4 **)(*(int *)(iVar6 + 4) + 4);
        if (puVar3 != (undefined4 *)0x0) {
          pcVar11 = *(char **)(iVar2 + iStack_24 * 4);
          iVar15 = 0;
          if (0 < (int)puVar3[5]) {
            do {
              if ((*(int *)(iVar4 + 0x19c) == *(int *)(iVar4 + 0x198)) &&
                 (cVar5 = FUN_008dab40(), cVar5 == '\0')) {
                return 1;
              }
              **(undefined **)(iVar4 + 0x19c) = *(undefined *)(iVar15 + puVar3[4]);
              *(int *)(iVar4 + 0x19c) = *(int *)(iVar4 + 0x19c) + 1;
              iVar15 = iVar15 + 1;
            } while (iVar15 < (int)puVar3[5]);
          }
          do {
            cVar5 = *pcVar11;
            pcVar11 = pcVar11 + 1;
          } while (cVar5 != ':');
          do {
            if ((*(int *)(iVar4 + 0x19c) == *(int *)(iVar4 + 0x198)) &&
               (cVar5 = FUN_008dab40(), cVar5 == '\0')) {
              return 1;
            }
            **(char **)(iVar4 + 0x19c) = *pcVar11;
            *(int *)(iVar4 + 0x19c) = *(int *)(iVar4 + 0x19c) + 1;
            cVar5 = *pcVar11;
            pcVar11 = pcVar11 + 1;
          } while (cVar5 != '\0');
          if (*(char *)(iVar4 + 0xed) != '\0') {
            *(undefined *)(*(int *)(iVar4 + 0x19c) + -1) = *(undefined *)(iVar4 + 0x1c8);
            pcVar11 = *(char **)*puVar3;
            do {
              if ((*(int *)(iVar4 + 0x19c) == *(int *)(iVar4 + 0x198)) &&
                 (cVar5 = FUN_008dab40(), cVar5 == '\0')) {
                return 1;
              }
              **(char **)(iVar4 + 0x19c) = *pcVar11;
              *(int *)(iVar4 + 0x19c) = *(int *)(iVar4 + 0x19c) + 1;
              cVar5 = *pcVar11;
              pcVar11 = pcVar11 + 1;
            } while (cVar5 != '\0');
          }
          *(undefined4 *)(iVar2 + iStack_24 * 4) = *(undefined4 *)(iVar4 + 0x1a0);
          *(undefined4 *)(iVar4 + 0x1a0) = *(undefined4 *)(iVar4 + 0x19c);
          iVar15 = param_1;
        }
        local_20 = local_20 + -1;
        iVar6 = iStack_24;
        if (local_20 == 0) goto joined_r0x008ddbd8;
      }
      iStack_24 = iStack_24 + 2;
    } while (iStack_24 < iVar15);
  }
  for (iVar15 = *param_5; iVar15 != 0; iVar15 = *(int *)(iVar15 + 4)) {
    *(undefined *)(**(int **)(iVar15 + 0xc) + -1) = 0;
  }
  if (*(int *)(local_1c + 4) == 0) {
    ppiVar12 = *(int ***)(iVar1 + 0x9c);
    if (ppiVar12 == (int **)0x0) {
      return 0;
    }
    piVar10 = *param_4;
  }
  else {
    ppiVar12 = *(int ***)(*(int *)(local_1c + 4) + 4);
    if (ppiVar12 == (int **)0x0) {
      return 0;
    }
    piVar10 = *param_4;
    do {
      cVar5 = *(char *)piVar10;
      piVar10 = (int *)((int)piVar10 + 1);
    } while (cVar5 != ':');
  }
  piVar13 = (int *)0x0;
  local_c = (int *)0x0;
  if (((*(char *)(iVar4 + 0xec) != '\0') && (*(char *)(iVar4 + 0xed) != '\0')) && (**ppiVar12 != 0))
  {
    do {
      pcVar11 = (char *)(**ppiVar12 + (int)piVar13);
      piVar13 = (int *)((int)piVar13 + 1);
      local_c = piVar13;
    } while (*pcVar11 != '\0');
  }
  param_4[1] = piVar10;
  param_4[4] = ppiVar12[5];
  param_4[2] = (int *)**ppiVar12;
  param_4[5] = local_c;
  _Size = 0;
  do {
    sVar16 = _Size;
    _Size = sVar16 + 1;
  } while (*(char *)((int)piVar10 + sVar16) != '\0');
  pcVar11 = (char *)((int)local_c + _Size) + (int)ppiVar12[5];
  if ((int)ppiVar12[6] < (int)pcVar11) {
    piVar13 = (int *)(**(code **)(iVar4 + 0xc))(pcVar11 + 0x18);
    if (piVar13 == (int *)0x0) {
      return 1;
    }
    ppiVar12[6] = (int *)(pcVar11 + 0x18);
    _memcpy(piVar13,ppiVar12[4],(size_t)ppiVar12[5]);
    for (puVar3 = *(undefined4 **)(iVar4 + 0x168); puVar3 != (undefined4 *)0x0;
        puVar3 = (undefined4 *)*puVar3) {
      if ((int *)puVar3[3] == ppiVar12[4]) {
        puVar3[3] = piVar13;
      }
    }
    (**(code **)(iVar4 + 0x14))(ppiVar12[4]);
    ppiVar12[4] = piVar13;
  }
  _Dst = (void *)((int)ppiVar12[5] + (int)ppiVar12[4]);
  _memcpy(_Dst,piVar10,_Size);
  if (local_c != (int *)0x0) {
    if (*(char *)(iVar4 + 0x1c8) != '\0') {
      *(char *)((int)_Dst + sVar16) = *(char *)(iVar4 + 0x1c8);
    }
    _memcpy((void *)((int)_Dst + _Size),(void *)**ppiVar12,(size_t)local_c);
  }
  *param_4 = ppiVar12[4];
  return 0;
}



int FUN_008ddd70(undefined4 param_1)

{
  char cVar1;
  int iVar2;
  
  iVar2 = FUN_008dd1e0(param_1,0,0);
  if ((iVar2 != 0) && (*(char *)(iVar2 + 0xec) != '\0')) {
    cVar1 = FUN_008dcf90();
    if (cVar1 == '\0') {
      FUN_008dbd60(iVar2);
      return 0;
    }
  }
  return iVar2;
}



uint FUN_008dddc0(int param_1,int param_2,int *param_3,int *param_4,int *param_5,int **param_6)

{
  undefined4 *puVar1;
  int iVar2;
  int *piVar3;
  int **ppiVar4;
  int **ppiVar5;
  char cVar6;
  undefined4 uVar7;
  undefined4 *puVar8;
  uint uVar9;
  char *pcVar10;
  int iVar11;
  char *pcVar12;
  int *piVar13;
  int *piVar14;
  int *local_4c;
  int **local_48;
  undefined *puStack_44;
  int **local_40;
  int local_3c;
  int *piStack_38;
  int iStack_34;
  undefined4 *puStack_30;
  undefined auStack_2c [4];
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 *puStack_1c;
  int aiStack_18 [6];
  
  piVar3 = param_3;
  iVar2 = param_1;
  local_3c = *(int *)(param_1 + 0x160);
  if (param_3 == *(int **)(param_1 + 0x90)) {
    local_48 = (int **)(param_1 + 0x120);
    local_40 = (int **)(param_1 + 0x124);
  }
  else {
    local_48 = *(int ***)(param_1 + 300);
    local_40 = local_48 + 1;
  }
  *local_48 = param_4;
LAB_008dde14:
  ppiVar4 = local_40;
  piVar14 = param_5;
  local_4c = param_4;
  uVar7 = (*(code *)piVar3[1])(piVar3,param_4,param_5,&local_4c);
  *ppiVar4 = local_4c;
  switch(uVar7) {
  case 0:
    *local_48 = local_4c;
    return 4;
  case 1:
  case 2:
    puVar8 = *(undefined4 **)(iVar2 + 0x16c);
    if (puVar8 == (undefined4 *)0x0) {
      puVar8 = (undefined4 *)(**(code **)(iVar2 + 0xc))(0x30);
      if (puVar8 == (undefined4 *)0x0) {
        return 1;
      }
      iVar11 = (**(code **)(iVar2 + 0xc))(0x20);
      puVar8[9] = iVar11;
      if (iVar11 == 0) {
        (**(code **)(iVar2 + 0x14))(puVar8);
        return 1;
      }
      puVar8[10] = iVar11 + 0x20;
    }
    else {
      *(undefined4 *)(iVar2 + 0x16c) = *puVar8;
    }
    puVar8[0xb] = 0;
    puStack_30 = puVar8 + 0xb;
    *puVar8 = *(undefined4 *)(iVar2 + 0x168);
    *(undefined4 **)(iVar2 + 0x168) = puVar8;
    puVar8[4] = 0;
    puVar8[5] = 0;
    iVar11 = piVar3[0x11];
    puVar8[1] = iVar11 + (int)param_4;
    uVar7 = (*(code *)piVar3[8])(piVar3,iVar11 + (int)param_4);
    puVar8[2] = uVar7;
    *(int *)(iVar2 + 0x134) = *(int *)(iVar2 + 0x134) + 1;
    param_3 = (int *)puVar8[1];
    piVar14 = (int *)(puVar8[2] + (int)param_3);
    puStack_44 = (undefined *)puVar8[9];
    (*(code *)piVar3[0xf])(piVar3,&param_3,piVar14,&puStack_44,puVar8[10] + -1);
    piStack_38 = (int *)(puStack_44 + -puVar8[9]);
    while (param_3 != piVar14) {
      iStack_34 = (puVar8[10] - puVar8[9]) * 2;
      iVar11 = (**(code **)(iVar2 + 0x10))(puVar8[9],iStack_34);
      if (iVar11 == 0) {
        return 1;
      }
      puVar8[9] = iVar11;
      puVar8[10] = iVar11 + iStack_34;
      puStack_44 = (undefined *)(iVar11 + (int)piStack_38);
      (*(code *)piVar3[0xf])(piVar3,&param_3,piVar14,&puStack_44,puVar8[10] + -1);
      piStack_38 = (int *)(puStack_44 + -puVar8[9]);
    }
    puVar8[6] = piStack_38;
    puVar1 = puVar8 + 3;
    *puVar1 = puVar8[9];
    *puStack_44 = 0;
    uVar9 = FUN_008dd600(iVar2,piVar3,param_4,puVar1,puStack_30);
    if (uVar9 != 0) {
      return uVar9;
    }
    if (*(code **)(iVar2 + 0x34) == (code *)0x0) {
      if (*(int *)(iVar2 + 0x50) != 0) {
        FUN_008da6a0(param_4);
      }
      FUN_008dab00();
      param_4 = local_4c;
      *local_48 = local_4c;
    }
    else {
      (**(code **)(iVar2 + 0x34))(*(undefined4 *)(iVar2 + 4),*puVar1,*(undefined4 *)(iVar2 + 0x184))
      ;
      FUN_008dab00();
      param_4 = local_4c;
      *local_48 = local_4c;
    }
    goto LAB_008dde14;
  case 3:
  case 4:
    iVar11 = piVar3[0x11] + (int)param_4;
    piStack_38 = (int *)0x0;
    param_3 = (int *)CONCAT31(param_3._1_3_,1);
    (*(code *)piVar3[8])(piVar3,iVar11);
    iVar11 = FUN_008dba40(iVar11);
    if (iVar11 != 0) {
      if ((*(int *)(iVar2 + 0x19c) == *(int *)(iVar2 + 0x198)) &&
         (cVar6 = FUN_008dab40(), cVar6 == '\0')) {
        iVar11 = 0;
      }
      else {
        **(undefined **)(iVar2 + 0x19c) = 0;
        *(int *)(iVar2 + 0x19c) = *(int *)(iVar2 + 0x19c) + 1;
        iVar11 = *(int *)(iVar2 + 0x1a0);
      }
    }
    if (iVar11 == 0) {
      return 1;
    }
    *(undefined4 *)(iVar2 + 0x1a0) = *(undefined4 *)(iVar2 + 0x19c);
    aiStack_18[0] = iVar11;
    uVar9 = FUN_008dd600(iVar2,piVar3,param_4,aiStack_18,&piStack_38);
    iVar11 = aiStack_18[0];
    if (uVar9 != 0) {
      return uVar9;
    }
    *(undefined4 *)(iVar2 + 0x1a0) = *(undefined4 *)(iVar2 + 0x19c);
    if (*(code **)(iVar2 + 0x34) == (code *)0x0) {
      cVar6 = (char)param_3;
    }
    else {
      (**(code **)(iVar2 + 0x34))
                (*(undefined4 *)(iVar2 + 4),aiStack_18[0],*(undefined4 *)(iVar2 + 0x184));
      cVar6 = '\0';
    }
    if (*(int *)(iVar2 + 0x38) == 0) {
      if ((cVar6 != '\0') && (*(int *)(iVar2 + 0x50) != 0)) {
        FUN_008da6a0(param_4);
      }
    }
    else {
      if (*(int *)(iVar2 + 0x34) != 0) {
        *local_48 = *local_40;
      }
      (**(code **)(iVar2 + 0x38))(*(undefined4 *)(iVar2 + 4),iVar11);
    }
    FUN_008dab00();
    piVar14 = piStack_38;
    while (piVar14 != (int *)0x0) {
      if (*(code **)(iVar2 + 0x68) != (code *)0x0) {
        (**(code **)(iVar2 + 0x68))(*(undefined4 *)(iVar2 + 4),*(undefined4 *)*piVar14);
      }
      piVar13 = (int *)piVar14[1];
      piVar14[1] = (int)*(int **)(iVar2 + 0x174);
      *(int **)(iVar2 + 0x174) = piVar14;
      *(int *)(*piVar14 + 4) = piVar14[2];
      piVar14 = piVar13;
    }
    if (*(int *)(iVar2 + 0x134) == 0) {
LAB_008de3a9:
      uVar9 = FUN_008dd3e0(iVar2,local_4c,param_5,param_6);
      return uVar9;
    }
    break;
  case 5:
    if (*(int *)(iVar2 + 0x134) == param_2) {
      return 0xd;
    }
    puVar8 = *(undefined4 **)(iVar2 + 0x168);
    *(undefined4 *)(iVar2 + 0x168) = *puVar8;
    *puVar8 = *(undefined4 *)(iVar2 + 0x16c);
    *(undefined4 **)(iVar2 + 0x16c) = puVar8;
    param_3 = (int *)((int)param_4 + piVar3[0x11] * 2);
    uVar9 = (*(code *)piVar3[8])(piVar3,param_3);
    if (uVar9 == puVar8[2]) {
      piVar14 = (int *)puVar8[1];
      piVar13 = param_3;
      for (; 3 < uVar9; uVar9 = uVar9 - 4) {
        if (*piVar14 != *piVar13) goto LAB_008de91f;
        piVar13 = piVar13 + 1;
        piVar14 = piVar14 + 1;
      }
      if ((uVar9 == 0) ||
         ((*(char *)piVar13 == *(char *)piVar14 &&
          ((uVar9 < 2 ||
           ((*(char *)((int)piVar13 + 1) == *(char *)((int)piVar14 + 1) &&
            ((uVar9 < 3 || (*(char *)((int)piVar13 + 2) == *(char *)((int)piVar14 + 2))))))))))) {
        *(int *)(iVar2 + 0x134) = *(int *)(iVar2 + 0x134) + -1;
        if (*(int *)(iVar2 + 0x38) == 0) {
          if (*(int *)(iVar2 + 0x50) != 0) {
            FUN_008da6a0(param_4);
          }
        }
        else {
          pcVar12 = (char *)puVar8[4];
          if ((*(char *)(iVar2 + 0xec) != '\0') && (pcVar12 != (char *)0x0)) {
            pcVar10 = (char *)(puVar8[7] + puVar8[3]);
            cVar6 = *pcVar12;
            while (cVar6 != '\0') {
              pcVar12 = pcVar12 + 1;
              *pcVar10 = cVar6;
              pcVar10 = pcVar10 + 1;
              cVar6 = *pcVar12;
            }
            pcVar12 = (char *)puVar8[5];
            if ((*(char *)(iVar2 + 0xed) != '\0') && (pcVar12 != (char *)0x0)) {
              *pcVar10 = *(char *)(iVar2 + 0x1c8);
              cVar6 = *pcVar12;
              while (pcVar10 = pcVar10 + 1, cVar6 != '\0') {
                pcVar12 = pcVar12 + 1;
                *pcVar10 = cVar6;
                cVar6 = *pcVar12;
              }
            }
            *pcVar10 = '\0';
          }
          (**(code **)(iVar2 + 0x38))(*(undefined4 *)(iVar2 + 4),puVar8[3]);
        }
        iVar11 = puVar8[0xb];
        while (iVar11 != 0) {
          piVar14 = (int *)puVar8[0xb];
          if (*(code **)(iVar2 + 0x68) != (code *)0x0) {
            (**(code **)(iVar2 + 0x68))(*(undefined4 *)(iVar2 + 4),*(undefined4 *)*piVar14);
          }
          puVar8[0xb] = *(undefined4 *)(puVar8[0xb] + 4);
          piVar14[1] = *(int *)(iVar2 + 0x174);
          *(int **)(iVar2 + 0x174) = piVar14;
          *(int *)(*piVar14 + 4) = piVar14[2];
          iVar11 = puVar8[0xb];
        }
        if (*(int *)(iVar2 + 0x134) == 0) goto LAB_008de3a9;
        *local_48 = local_4c;
        param_4 = local_4c;
        goto LAB_008dde14;
      }
    }
LAB_008de91f:
    *local_48 = param_3;
    return 7;
  case 6:
    if (*(code **)(iVar2 + 0x3c) == (code *)0x0) goto switchD_008dde42_caseD_13;
    if (*(char *)(piVar3 + 0x12) != '\0') {
      (**(code **)(iVar2 + 0x3c))(*(undefined4 *)(iVar2 + 4),param_4,(int)local_4c - (int)param_4);
      param_4 = local_4c;
      *local_48 = local_4c;
      goto LAB_008dde14;
    }
    param_3 = *(int **)(iVar2 + 0x2c);
    (*(code *)piVar3[0xf])(piVar3,&param_4,local_4c,&param_3,*(undefined4 *)(iVar2 + 0x30));
    *ppiVar4 = param_4;
    (**(code **)(iVar2 + 0x3c))
              (*(undefined4 *)(iVar2 + 4),*(int *)(iVar2 + 0x2c),
               (int)param_3 - *(int *)(iVar2 + 0x2c));
    ppiVar5 = local_40;
    ppiVar4 = local_48;
    if (param_4 != local_4c) {
      do {
        *ppiVar4 = param_4;
        param_3 = *(int **)(iVar2 + 0x2c);
        (*(code *)piVar3[0xf])(piVar3,&param_4,local_4c,&param_3,*(undefined4 *)(iVar2 + 0x30));
        *ppiVar5 = param_4;
        (**(code **)(iVar2 + 0x3c))
                  (*(undefined4 *)(iVar2 + 4),*(int *)(iVar2 + 0x2c),
                   (int)param_3 - *(int *)(iVar2 + 0x2c));
      } while (param_4 != local_4c);
      param_4 = local_4c;
      *local_48 = local_4c;
      goto LAB_008dde14;
    }
    break;
  case 7:
    if (*(code **)(iVar2 + 0x3c) == (code *)0x0) {
      iVar11 = *(int *)(iVar2 + 0x50);
      goto joined_r0x008dde96;
    }
    param_3 = (int *)CONCAT31(param_3._1_3_,10);
    (**(code **)(iVar2 + 0x3c))(*(undefined4 *)(iVar2 + 4),&param_3,1);
    param_4 = local_4c;
    *local_48 = local_4c;
    goto LAB_008dde14;
  case 8:
    if (*(code **)(iVar2 + 0x48) == (code *)0x0) {
      if (*(int *)(iVar2 + 0x50) != 0) {
        FUN_008da6a0(param_4);
        piVar14 = param_5;
      }
    }
    else {
      (**(code **)(iVar2 + 0x48))(*(undefined4 *)(iVar2 + 4));
    }
    uVar9 = FUN_008dafc0(&local_4c,piVar14,param_6);
    if (local_4c == (int *)0x0) {
      *(code **)(iVar2 + 0x118) = FUN_008dc000;
      return uVar9;
    }
    break;
  case 9:
    cVar6 = (*(code *)piVar3[0xc])(piVar3,piVar3[0x11] + (int)param_4,(int)local_4c - piVar3[0x11]);
    param_1 = CONCAT31(param_1._1_3_,cVar6);
    if (cVar6 == '\0') {
      param_3 = (int *)FUN_008dbb20();
      iVar11 = local_3c;
      if (param_3 == (int *)0x0) {
        return 1;
      }
      puVar8 = (undefined4 *)FUN_008da890(param_3,0);
      *(undefined4 *)(iVar11 + 0x5c) = *(undefined4 *)(iVar11 + 0x60);
      if ((*(char *)(iVar11 + 0x81) == '\0') || (*(char *)(iVar11 + 0x82) != '\0')) {
        if (puVar8 == (undefined4 *)0x0) {
          return 0xb;
        }
        if (*(char *)((int)puVar8 + 0x1e) == '\0') {
          return 0x18;
        }
      }
      else if (puVar8 == (undefined4 *)0x0) {
        if (*(code **)(iVar2 + 0x78) == (code *)0x0) goto LAB_008dde92;
        (**(code **)(iVar2 + 0x78))(*(undefined4 *)(iVar2 + 4),param_3,0);
        param_4 = local_4c;
        *local_48 = local_4c;
        goto LAB_008dde14;
      }
      if (*(char *)(puVar8 + 7) != '\0') {
        return 0xc;
      }
      if (puVar8[6] != 0) {
        return 0xf;
      }
      if (puVar8[1] == 0) {
        if (*(int *)(iVar2 + 0x70) != 0) {
          *(undefined *)(puVar8 + 7) = 1;
          iVar11 = FUN_008db510();
          *(undefined *)(puVar8 + 7) = 0;
          if (iVar11 == 0) {
            return 1;
          }
          iVar11 = (**(code **)(iVar2 + 0x70))
                             (*(undefined4 *)(iVar2 + 0x74),iVar11,puVar8[4],puVar8[3],puVar8[5]);
          if (iVar11 == 0) {
            return 0x15;
          }
          *(undefined4 *)(iVar2 + 0x19c) = *(undefined4 *)(iVar2 + 0x1a0);
          param_4 = local_4c;
          *local_48 = local_4c;
          goto LAB_008dde14;
        }
      }
      else {
        if (*(char *)(iVar2 + 0x130) != '\0') {
          *(undefined *)(puVar8 + 7) = 1;
          uStack_20 = *(undefined4 *)(iVar2 + 300);
          *(undefined4 **)(iVar2 + 300) = &uStack_28;
          uStack_28 = 0;
          uStack_24 = 0;
          puStack_1c = puVar8;
          uVar9 = FUN_008dddc0(iVar2,*(undefined4 *)(iVar2 + 0x134),*(undefined4 *)(iVar2 + 0xe4),
                               puVar8[1],puVar8[2] + puVar8[1],0);
          *(undefined *)(puVar8 + 7) = 0;
          *(undefined4 *)(iVar2 + 300) = uStack_20;
          if (uVar9 != 0) {
            return uVar9;
          }
          param_4 = local_4c;
          *local_48 = local_4c;
          goto LAB_008dde14;
        }
        if (*(code **)(iVar2 + 0x78) != (code *)0x0) {
          (**(code **)(iVar2 + 0x78))(*(undefined4 *)(iVar2 + 4),*puVar8,0);
          param_4 = local_4c;
          *local_48 = local_4c;
          goto LAB_008dde14;
        }
      }
    }
    else if (*(code **)(iVar2 + 0x3c) != (code *)0x0) {
      (**(code **)(iVar2 + 0x3c))(*(undefined4 *)(iVar2 + 4),&param_1,1);
      param_4 = local_4c;
      *local_48 = local_4c;
      goto LAB_008dde14;
    }
LAB_008dde92:
    iVar11 = *(int *)(iVar2 + 0x50);
    goto joined_r0x008dde96;
  case 10:
    iVar11 = (*(code *)piVar3[0xb])(piVar3,param_4);
    if (iVar11 < 0) {
      return 0xe;
    }
    if (*(int *)(iVar2 + 0x3c) == 0) {
      if (*(int *)(iVar2 + 0x50) == 0) break;
      goto LAB_008de7c7;
    }
    uVar7 = FUN_008ea080(iVar11,auStack_2c);
    (**(code **)(iVar2 + 0x3c))(*(undefined4 *)(iVar2 + 4),auStack_2c,uVar7);
    param_4 = local_4c;
    *local_48 = local_4c;
    goto LAB_008dde14;
  case 0xb:
    iVar11 = FUN_008dcbf0(iVar2,param_4,local_4c);
    if (iVar11 == 0) {
      return 1;
    }
    break;
  case 0xc:
    return 0x11;
  case 0xd:
    goto switchD_008dde42_caseD_d;
  case 0xfffffffb:
    if (param_6 == (int **)0x0) {
      if (*(code **)(iVar2 + 0x3c) == (code *)0x0) {
        if (*(int *)(iVar2 + 0x50) != 0) {
          FUN_008da6a0(param_4);
          piVar14 = param_5;
        }
      }
      else if (*(char *)(piVar3 + 0x12) == '\0') {
        param_1 = *(int *)(iVar2 + 0x2c);
        (*(code *)piVar3[0xf])(piVar3,&param_4,piVar14,&param_1,*(undefined4 *)(iVar2 + 0x30));
        (**(code **)(iVar2 + 0x3c))
                  (*(undefined4 *)(iVar2 + 4),*(int *)(iVar2 + 0x2c),
                   param_1 - *(int *)(iVar2 + 0x2c));
      }
      else {
        (**(code **)(iVar2 + 0x3c))(*(undefined4 *)(iVar2 + 4),param_4,(int)piVar14 - (int)param_4);
      }
      if (param_2 == 0) {
        *local_48 = piVar14;
        return 3;
      }
      if (*(int *)(iVar2 + 0x134) != param_2) {
        *local_48 = piVar14;
        return 0xd;
      }
      return 0;
    }
LAB_008de854:
    *param_6 = param_4;
    return 0;
  case 0xfffffffc:
    if (param_6 == (int **)0x0) {
      if (param_2 < 1) {
        return 3;
      }
      goto LAB_008de870;
    }
    goto LAB_008de854;
  case 0xfffffffd:
    if (param_6 != (int **)0x0) goto LAB_008de7f0;
    *ppiVar4 = piVar14;
    if (*(code **)(iVar2 + 0x3c) == (code *)0x0) {
      if (*(int *)(iVar2 + 0x50) != 0) {
        FUN_008da6a0(param_4);
      }
    }
    else {
      param_1 = CONCAT31(param_1._1_3_,10);
      (**(code **)(iVar2 + 0x3c))(*(undefined4 *)(iVar2 + 4),&param_1,1);
    }
    if (param_2 == 0) {
      return 3;
    }
LAB_008de870:
    return -(uint)(*(int *)(iVar2 + 0x134) != param_2) & 0xd;
  case 0xfffffffe:
    if (param_6 == (int **)0x0) {
      return 6;
    }
LAB_008de7f0:
    *param_6 = param_4;
    return 0;
  case 0xffffffff:
    if (param_6 == (int **)0x0) {
      return 5;
    }
    goto LAB_008de854;
  default:
switchD_008dde42_caseD_13:
    iVar11 = *(int *)(iVar2 + 0x50);
joined_r0x008dde96:
    if (iVar11 != 0) {
LAB_008de7c7:
      FUN_008da6a0(param_4);
    }
  }
  *local_48 = local_4c;
  param_4 = local_4c;
  goto LAB_008dde14;
switchD_008dde42_caseD_d:
  iVar11 = FUN_008dcd00(iVar2);
  if (iVar11 == 0) {
    return 1;
  }
  param_4 = local_4c;
  *local_48 = local_4c;
  goto LAB_008dde14;
}



uint FUN_008dea60(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  uint uVar2;
  
  uVar2 = FUN_008dddc0(param_1,0,*(undefined4 *)(param_1 + 0x90),param_2,param_3,param_4);
  if (uVar2 == 0) {
    cVar1 = FUN_008da2d0(param_1);
    uVar2 = (uint)(cVar1 == '\0');
  }
  return uVar2;
}



// WARNING: Type propagation algorithm not settling

int FUN_008deaa0(int param_1,code **param_2,int param_3,int param_4,int param_5,int param_6,
                int *param_7)

{
  undefined4 *puVar1;
  uint uVar2;
  int iVar3;
  char cVar4;
  undefined uVar5;
  int iVar6;
  char *pcVar7;
  int iVar8;
  int iVar9;
  int *piVar10;
  int iVar11;
  undefined4 uVar12;
  code **ppcVar13;
  bool bVar14;
  int *local_c;
  int *local_4;
  
  iVar3 = param_1;
  iVar11 = *(int *)(param_1 + 0x160);
  ppcVar13 = param_2;
  if (param_2 == *(code ***)(param_1 + 0x90)) {
    local_4 = (int *)(param_1 + 0x120);
    local_c = (int *)(param_1 + 0x124);
  }
  else {
    local_4 = *(int **)(param_1 + 300);
    local_c = local_4 + 1;
  }
  do {
    *local_4 = param_3;
    bVar14 = true;
    *local_c = param_6;
    if (param_5 < 1) {
      if ((param_7 != (int *)0x0) && (param_5 != 0)) {
        *param_7 = param_3;
        return 0;
      }
      switch(param_5) {
      case 0:
        *local_4 = param_6;
        return 4;
      case -4:
        if (ppcVar13 != *(code ***)(iVar3 + 0x90)) {
          return 0;
        }
        if (*(char *)(iVar3 + 0x1d0) == '\0') {
          return 3;
        }
        iVar11 = (**(code **)(iVar3 + 0x100))(iVar3 + 0x100,0xfffffffc,param_4,param_4,ppcVar13);
        return (-(uint)(iVar11 != -1) & 0xfffffffe) + 2;
      default:
        param_5 = -param_5;
        param_6 = param_4;
        break;
      case -2:
        return 6;
      case -1:
        return 5;
      }
    }
    iVar6 = (**(code **)(iVar3 + 0x100))((code **)(iVar3 + 0x100),param_5,param_3,param_6,ppcVar13);
    switch(iVar6) {
    case 0:
      if (param_5 != 0xe) goto switchD_008deb56_caseD_3e;
      break;
    case 1:
      iVar6 = FUN_008dc100(param_3);
      if (iVar6 != 0) {
        return iVar6;
      }
      param_2 = *(code ***)(iVar3 + 0x90);
      ppcVar13 = param_2;
      break;
    case 2:
      if (((*(char *)(iVar3 + 0x1d1) != '\0') &&
          (*(undefined *)(iVar11 + 0x81) = 1, *(int *)(iVar3 + 0x1d4) != 0)) &&
         (*(int *)(iVar3 + 0x70) != 0)) {
        iVar6 = FUN_008da890(&DAT_00d3ef44,0x20);
        if (iVar6 == 0) {
          return 1;
        }
        *(undefined4 *)(iVar6 + 0x10) = *(undefined4 *)(iVar3 + 0x164);
        *(undefined *)(iVar11 + 0x83) = 0;
        iVar6 = (**(code **)(iVar3 + 0x70))
                          (*(undefined4 *)(iVar3 + 0x74),0,*(undefined4 *)(iVar6 + 0x10),
                           *(undefined4 *)(iVar6 + 0xc),*(undefined4 *)(iVar6 + 0x14));
        if (iVar6 == 0) {
          return 0x15;
        }
        if (((*(char *)(iVar11 + 0x83) != '\0') && (*(char *)(iVar11 + 0x82) == '\0')) &&
           ((*(code **)(iVar3 + 0x6c) != (code *)0x0 &&
            (iVar11 = (**(code **)(iVar3 + 0x6c))(*(undefined4 *)(iVar3 + 4)), iVar11 == 0)))) {
          return 0x16;
        }
      }
      *(code **)(iVar3 + 0x118) = FUN_008dea60;
      iVar11 = FUN_008dea60(iVar3,param_3,param_4,param_7);
      return iVar11;
    case 3:
      iVar6 = *(int *)(iVar3 + 0x54);
      goto joined_r0x008dfeff;
    case 4:
      if (*(int *)(iVar3 + 0x54) != 0) {
        iVar6 = FUN_008dbb20();
        *(int *)(iVar3 + 0x13c) = iVar6;
        if (iVar6 == 0) {
          return 1;
        }
        *(undefined4 *)(iVar3 + 0x1a0) = *(undefined4 *)(iVar3 + 0x19c);
        *(undefined4 *)(iVar3 + 0x144) = 0;
        bVar14 = false;
      }
      *(undefined4 *)(iVar3 + 0x140) = 0;
      goto LAB_008ded37;
    case 5:
      *(undefined *)(iVar3 + 0x1d1) = 0;
      *(undefined *)(iVar11 + 0x81) = 1;
      if (*(int *)(iVar3 + 0x54) == 0) {
        *(undefined **)(iVar3 + 0x140) = &DAT_00d3ef44;
      }
      else {
        iVar6 = FUN_008dbb20();
        *(int *)(iVar3 + 0x140) = iVar6;
        if (iVar6 == 0) {
          return 1;
        }
        *(undefined4 *)(iVar3 + 0x1a0) = *(undefined4 *)(iVar3 + 0x19c);
        bVar14 = false;
      }
      if (((*(char *)(iVar11 + 0x82) == '\0') && (*(int *)(iVar3 + 0x1d4) == 0)) &&
         ((*(code **)(iVar3 + 0x6c) != (code *)0x0 &&
          (iVar6 = (**(code **)(iVar3 + 0x6c))(*(undefined4 *)(iVar3 + 4)), iVar6 == 0)))) {
        return 0x16;
      }
      if (*(int *)(iVar3 + 0x138) == 0) {
        iVar6 = FUN_008da890(&DAT_00d3ef44,0x20);
        *(int *)(iVar3 + 0x138) = iVar6;
        if (iVar6 == 0) {
          return 1;
        }
        *(undefined4 *)(iVar6 + 0x14) = 0;
      }
    case 0xd:
      if ((*(char *)(iVar11 + 0x80) != '\0') && (*(int *)(iVar3 + 0x138) != 0)) {
        uVar12 = FUN_008dbb20();
        *(undefined4 *)(*(int *)(iVar3 + 0x138) + 0xc) = uVar12;
        if (*(int *)(*(int *)(iVar3 + 0x138) + 0xc) == 0) {
          return 1;
        }
        *(undefined4 *)(*(int *)(iVar3 + 0x138) + 0x10) = *(undefined4 *)(iVar3 + 0x164);
        *(undefined4 *)(iVar11 + 0x60) = *(undefined4 *)(iVar11 + 0x5c);
LAB_008ded2e:
        ppcVar13 = param_2;
        if (*(int *)(iVar3 + 0x88) != 0) break;
      }
      goto LAB_008ded37;
    case 6:
      *(undefined *)(iVar3 + 0x1d1) = 0;
      *(undefined *)(iVar11 + 0x81) = 1;
      if (*(int *)(iVar3 + 0x54) != 0) {
        iVar6 = FUN_008dbb20();
        *(int *)(iVar3 + 0x144) = iVar6;
        if (iVar6 == 0) {
          return 1;
        }
        *(undefined4 *)(iVar3 + 0x1a0) = *(undefined4 *)(iVar3 + 0x19c);
        bVar14 = false;
        ppcVar13 = param_2;
      }
      iVar6 = FUN_008da890(&DAT_00d3ef44,0x20);
      *(int *)(iVar3 + 0x138) = iVar6;
      if (iVar6 == 0) {
        return 1;
      }
    case 0xe:
      iVar6 = (*ppcVar13[0xe])(ppcVar13,param_3,param_6,local_4);
      if (iVar6 == 0) {
        return 2;
      }
      if ((*(char *)(iVar11 + 0x80) == '\0') || (*(int *)(iVar3 + 0x138) == 0)) goto LAB_008ded37;
      iVar6 = FUN_008dbb20();
      if (iVar6 == 0) {
        return 1;
      }
      FUN_008da810();
      *(int *)(*(int *)(iVar3 + 0x138) + 0x14) = iVar6;
      *(undefined4 *)(iVar11 + 0x60) = *(undefined4 *)(iVar11 + 0x5c);
      goto LAB_008ded2e;
    case 7:
      if (*(code **)(iVar3 + 0x54) == (code *)0x0) goto switchD_008deb56_caseD_3e;
      (**(code **)(iVar3 + 0x54))
                (*(undefined4 *)(iVar3 + 4),*(undefined4 *)(iVar3 + 0x13c),
                 *(undefined4 *)(iVar3 + 0x140),*(undefined4 *)(iVar3 + 0x144),1);
      *(undefined4 *)(iVar3 + 0x13c) = 0;
      FUN_008dab00();
      break;
    case 8:
      iVar6 = *(int *)(iVar3 + 0x13c);
      if (iVar6 != 0) {
        (**(code **)(iVar3 + 0x54))
                  (*(undefined4 *)(iVar3 + 4),iVar6,*(undefined4 *)(iVar3 + 0x140),
                   *(undefined4 *)(iVar3 + 0x144),0);
        FUN_008dab00();
      }
      bVar14 = iVar6 == 0;
      if ((*(int *)(iVar3 + 0x140) != 0) || (*(char *)(iVar3 + 0x1d1) != '\0')) {
        *(undefined *)(iVar11 + 0x81) = 1;
        if ((*(int *)(iVar3 + 0x1d4) != 0) && (*(int *)(iVar3 + 0x70) != 0)) {
          iVar6 = FUN_008da890(&DAT_00d3ef44,0x20);
          if (iVar6 == 0) {
            return 1;
          }
          if (*(char *)(iVar3 + 0x1d1) != '\0') {
            *(undefined4 *)(iVar6 + 0x10) = *(undefined4 *)(iVar3 + 0x164);
          }
          *(undefined *)(iVar11 + 0x83) = 0;
          iVar6 = (**(code **)(iVar3 + 0x70))
                            (*(undefined4 *)(iVar3 + 0x74),0,*(undefined4 *)(iVar6 + 0x10),
                             *(undefined4 *)(iVar6 + 0xc),*(undefined4 *)(iVar6 + 0x14));
          if (iVar6 == 0) {
            return 0x15;
          }
          if ((((*(char *)(iVar11 + 0x83) != '\0') && (*(char *)(iVar11 + 0x82) == '\0')) &&
              (*(code **)(iVar3 + 0x6c) != (code *)0x0)) &&
             (iVar6 = (**(code **)(iVar3 + 0x6c))(*(undefined4 *)(iVar3 + 4)), iVar6 == 0)) {
            return 0x16;
          }
        }
        *(undefined *)(iVar3 + 0x1d1) = 0;
      }
      if (*(code **)(iVar3 + 0x58) == (code *)0x0) goto LAB_008ded37;
      (**(code **)(iVar3 + 0x58))(*(undefined4 *)(iVar3 + 4));
      break;
    case 9:
      iVar6 = (*ppcVar13[0xc])(ppcVar13,param_3,param_6);
      if (iVar6 == 0) {
        if (*(char *)(iVar11 + 0x80) == '\0') goto LAB_008df651;
        iVar6 = FUN_008dbb20();
        if (iVar6 == 0) {
          return 1;
        }
        piVar10 = (int *)FUN_008da890(iVar6,0x20);
        *(int **)(iVar3 + 0x138) = piVar10;
        if (piVar10 == (int *)0x0) {
          return 1;
        }
        if (*piVar10 == iVar6) {
          *(undefined4 *)(iVar11 + 0x60) = *(undefined4 *)(iVar11 + 0x5c);
          *(undefined4 *)(*(int *)(iVar3 + 0x138) + 0x14) = 0;
          *(undefined *)(*(int *)(iVar3 + 0x138) + 0x1d) = 0;
          if ((*(int *)(iVar3 + 0x1cc) != 0) || (*(int *)(iVar3 + 300) != 0)) goto LAB_008df6ec;
          uVar5 = 1;
          goto LAB_008df6ee;
        }
        *(undefined4 *)(iVar11 + 0x5c) = *(undefined4 *)(iVar11 + 0x60);
        *(undefined4 *)(iVar3 + 0x138) = 0;
      }
      else {
        *(undefined4 *)(iVar3 + 0x138) = 0;
      }
    default:
switchD_008deb56_caseD_3e:
      ppcVar13 = param_2;
      if (*(int *)(iVar3 + 0x50) != 0) {
        FUN_008da6a0(param_3);
      }
      break;
    case 10:
      if (*(char *)(iVar11 + 0x80) == '\0') {
LAB_008df651:
        *(undefined4 *)(iVar11 + 0x5c) = *(undefined4 *)(iVar11 + 0x60);
        *(undefined4 *)(iVar3 + 0x138) = 0;
      }
      else {
        iVar6 = FUN_008dbb20();
        if (iVar6 == 0) {
          return 1;
        }
        piVar10 = (int *)FUN_008da890(iVar6,0x20);
        *(int **)(iVar3 + 0x138) = piVar10;
        if (piVar10 == (int *)0x0) {
          return 1;
        }
        if (*piVar10 == iVar6) {
          *(undefined4 *)(iVar11 + 0x60) = *(undefined4 *)(iVar11 + 0x5c);
          *(undefined4 *)(*(int *)(iVar3 + 0x138) + 0x14) = 0;
          uVar5 = 1;
          *(undefined *)(*(int *)(iVar3 + 0x138) + 0x1d) = 1;
          if ((*(int *)(iVar3 + 0x1cc) != 0) || (*(int *)(iVar3 + 300) != 0)) {
LAB_008df6ec:
            uVar5 = 0;
          }
LAB_008df6ee:
          *(undefined *)(*(int *)(iVar3 + 0x138) + 0x1e) = uVar5;
          iVar6 = *(int *)(iVar3 + 0x88);
          ppcVar13 = param_2;
          goto joined_r0x008df9de;
        }
        *(undefined4 *)(iVar11 + 0x5c) = *(undefined4 *)(iVar11 + 0x60);
        *(undefined4 *)(iVar3 + 0x138) = 0;
      }
      goto switchD_008deb56_caseD_3e;
    case 0xb:
      if (*(char *)(iVar11 + 0x80) != '\0') {
        iVar6 = *(int *)(iVar3 + 0x88);
        goto joined_r0x008dfeff;
      }
      goto switchD_008deb56_caseD_3e;
    case 0xc:
      if (*(char *)(iVar11 + 0x80) != '\0') {
        iVar6 = FUN_008dc770(iVar3,ppcVar13,ppcVar13[0x11] + param_3,param_6 - (int)ppcVar13[0x11]);
        if (*(int *)(iVar3 + 0x138) == 0) {
          *(undefined4 *)(iVar11 + 0x74) = *(undefined4 *)(iVar11 + 0x78);
        }
        else {
          *(undefined4 *)(*(int *)(iVar3 + 0x138) + 4) = *(undefined4 *)(iVar11 + 0x78);
          *(int *)(*(int *)(iVar3 + 0x138) + 8) = *(int *)(iVar11 + 0x74) - *(int *)(iVar11 + 0x78);
          *(undefined4 *)(iVar11 + 0x78) = *(undefined4 *)(iVar11 + 0x74);
          if (*(int *)(iVar3 + 0x88) != 0) {
            *local_c = param_3;
            puVar1 = *(undefined4 **)(iVar3 + 0x138);
            (**(code **)(iVar3 + 0x88))
                      (*(undefined4 *)(iVar3 + 4),*puVar1,*(undefined *)((int)puVar1 + 0x1d),
                       puVar1[1],puVar1[2],*(undefined4 *)(iVar3 + 0x164),0,0,0);
            bVar14 = false;
          }
        }
        if (iVar6 != 0) {
          return iVar6;
        }
        goto LAB_008ded37;
      }
      goto switchD_008deb56_caseD_3e;
    case 0xf:
      if (((*(char *)(iVar11 + 0x80) == '\0') || (*(int *)(iVar3 + 0x138) == 0)) ||
         (*(int *)(iVar3 + 0x88) == 0)) goto switchD_008deb56_caseD_3e;
      *local_c = param_3;
      puVar1 = *(undefined4 **)(iVar3 + 0x138);
      (**(code **)(iVar3 + 0x88))
                (*(undefined4 *)(iVar3 + 4),*puVar1,*(undefined *)((int)puVar1 + 0x1d),0,0,puVar1[4]
                 ,puVar1[3],puVar1[5],0);
      break;
    case 0x10:
      if ((*(char *)(iVar11 + 0x80) == '\0') || (*(int *)(iVar3 + 0x138) == 0))
      goto switchD_008deb56_caseD_3e;
      uVar12 = FUN_008dbb20();
      *(undefined4 *)(*(int *)(iVar3 + 0x138) + 0x18) = uVar12;
      if (*(int *)(*(int *)(iVar3 + 0x138) + 0x18) == 0) {
        return 1;
      }
      *(undefined4 *)(iVar11 + 0x60) = *(undefined4 *)(iVar11 + 0x5c);
      if (*(int *)(iVar3 + 0x5c) == 0) {
        if (*(int *)(iVar3 + 0x88) == 0) goto switchD_008deb56_caseD_3e;
        *local_c = param_3;
        puVar1 = *(undefined4 **)(iVar3 + 0x138);
        (**(code **)(iVar3 + 0x88))
                  (*(undefined4 *)(iVar3 + 4),*puVar1,0,0,0,puVar1[4],puVar1[3],puVar1[5],puVar1[6])
        ;
        ppcVar13 = param_2;
      }
      else {
        *local_c = param_3;
        puVar1 = *(undefined4 **)(iVar3 + 0x138);
        (**(code **)(iVar3 + 0x5c))
                  (*(undefined4 *)(iVar3 + 4),*puVar1,puVar1[4],puVar1[3],puVar1[5],puVar1[6]);
        ppcVar13 = param_2;
      }
      break;
    case 0x11:
      iVar6 = *(int *)(iVar3 + 0x60);
joined_r0x008dfeff:
      if (iVar6 == 0) goto switchD_008deb56_caseD_3e;
      break;
    case 0x12:
      *(undefined4 *)(iVar3 + 0x150) = 0;
      *(undefined4 *)(iVar3 + 0x14c) = 0;
      if (*(int *)(iVar3 + 0x60) == 0) goto switchD_008deb56_caseD_3e;
      iVar6 = FUN_008dbb20();
      *(int *)(iVar3 + 0x14c) = iVar6;
      if (iVar6 == 0) {
        return 1;
      }
      *(undefined4 *)(iVar3 + 0x1a0) = *(undefined4 *)(iVar3 + 0x19c);
      ppcVar13 = param_2;
      break;
    case 0x13:
      if ((*(int *)(iVar3 + 0x14c) != 0) && (*(int *)(iVar3 + 0x60) != 0)) {
        iVar6 = FUN_008dbb20();
        if (iVar6 == 0) {
          return 1;
        }
        *local_c = param_3;
        (**(code **)(iVar3 + 0x60))
                  (*(undefined4 *)(iVar3 + 4),*(undefined4 *)(iVar3 + 0x14c),
                   *(undefined4 *)(iVar3 + 0x164),iVar6,*(undefined4 *)(iVar3 + 0x150));
LAB_008df814:
        bVar14 = false;
      }
      goto LAB_008df81c;
    case 0x14:
      if ((*(int *)(iVar3 + 0x150) != 0) && (*(int *)(iVar3 + 0x60) != 0)) {
        *local_c = param_3;
        (**(code **)(iVar3 + 0x60))
                  (*(undefined4 *)(iVar3 + 4),*(undefined4 *)(iVar3 + 0x14c),
                   *(undefined4 *)(iVar3 + 0x164),0,*(undefined4 *)(iVar3 + 0x150));
        goto LAB_008df814;
      }
LAB_008df81c:
      FUN_008dab00();
      goto LAB_008ded37;
    case 0x15:
      iVar6 = (*ppcVar13[0xe])(ppcVar13,param_3,param_6,local_4);
      if (iVar6 == 0) {
        return 2;
      }
      if (*(int *)(iVar3 + 0x14c) == 0) goto switchD_008deb56_caseD_3e;
      iVar6 = FUN_008dbb20();
      if (iVar6 == 0) {
        return 1;
      }
      FUN_008da810();
      *(int *)(iVar3 + 0x150) = iVar6;
      *(undefined4 *)(iVar3 + 0x1a0) = *(undefined4 *)(iVar3 + 0x19c);
      ppcVar13 = param_2;
      break;
    case 0x16:
      iVar6 = FUN_008dcda0(iVar3,ppcVar13,param_3,param_6);
      *(int *)(iVar3 + 0x158) = iVar6;
      if (iVar6 == 0) {
        return 1;
      }
      *(undefined *)(iVar3 + 0x15c) = 0;
      *(undefined4 *)(iVar3 + 0x148) = 0;
      *(undefined *)(iVar3 + 0x15d) = 0;
      goto switchD_008deb56_caseD_21;
    case 0x17:
      *(undefined *)(iVar3 + 0x15c) = 1;
      *(char **)(iVar3 + 0x148) = "CDATA";
      goto switchD_008deb56_caseD_21;
    case 0x18:
      *(undefined *)(iVar3 + 0x15d) = 1;
      *(undefined **)(iVar3 + 0x148) = &DAT_00d3ef50;
      goto switchD_008deb56_caseD_21;
    case 0x19:
      *(char **)(iVar3 + 0x148) = "IDREF";
      goto switchD_008deb56_caseD_21;
    case 0x1a:
      *(char **)(iVar3 + 0x148) = "IDREFS";
      goto switchD_008deb56_caseD_21;
    case 0x1b:
      *(char **)(iVar3 + 0x148) = "ENTITY";
      goto switchD_008deb56_caseD_21;
    case 0x1c:
      *(char **)(iVar3 + 0x148) = "ENTITIES";
      goto switchD_008deb56_caseD_21;
    case 0x1d:
      *(char **)(iVar3 + 0x148) = "NMTOKEN";
      goto switchD_008deb56_caseD_21;
    case 0x1e:
      *(char **)(iVar3 + 0x148) = "NMTOKENS";
      goto switchD_008deb56_caseD_21;
    case 0x1f:
    case 0x20:
      if ((*(char *)(iVar11 + 0x80) == '\0') || (*(int *)(iVar3 + 0x84) == 0))
      goto switchD_008deb56_caseD_3e;
      iVar6 = FUN_008dbae0();
      if (iVar6 == 0) {
        return 1;
      }
      iVar6 = FUN_008dba40(param_3);
      if (iVar6 == 0) {
        return 1;
      }
      *(undefined4 *)(iVar3 + 0x148) = *(undefined4 *)(iVar3 + 0x1a0);
      ppcVar13 = param_2;
      break;
    case 0x21:
      goto switchD_008deb56_caseD_21;
    case 0x22:
      iVar6 = FUN_008dbb60(iVar3);
      *(int *)(iVar3 + 0x154) = iVar6;
      ppcVar13 = param_2;
      if (iVar6 == 0) {
        return 1;
      }
switchD_008deb56_caseD_21:
      if (*(char *)(iVar11 + 0x80) != '\0') {
        iVar6 = *(int *)(iVar3 + 0x84);
joined_r0x008df9de:
        if (iVar6 != 0) break;
      }
      goto switchD_008deb56_caseD_3e;
    case 0x23:
    case 0x24:
      if (*(char *)(iVar11 + 0x80) != '\0') {
        iVar8 = FUN_008da740(*(undefined4 *)(iVar3 + 0x158),*(undefined *)(iVar3 + 0x15c),0);
        if (iVar8 == 0) {
          return 1;
        }
        if ((*(int *)(iVar3 + 0x84) != 0) &&
           (pcVar7 = *(char **)(iVar3 + 0x148), pcVar7 != (char *)0x0)) {
          if ((*pcVar7 == '(') || ((*pcVar7 == 'N' && (pcVar7[1] == 'O')))) {
            if ((*(int *)(iVar3 + 0x19c) == *(int *)(iVar3 + 0x198)) &&
               (cVar4 = FUN_008dab40(), cVar4 == '\0')) {
              return 1;
            }
            **(undefined **)(iVar3 + 0x19c) = 0x29;
            *(int *)(iVar3 + 0x19c) = *(int *)(iVar3 + 0x19c) + 1;
            if ((*(int *)(iVar3 + 0x19c) == *(int *)(iVar3 + 0x198)) &&
               (cVar4 = FUN_008dab40(), cVar4 == '\0')) {
              return 1;
            }
            **(undefined **)(iVar3 + 0x19c) = 0;
            *(int *)(iVar3 + 0x19c) = *(int *)(iVar3 + 0x19c) + 1;
            *(undefined4 *)(iVar3 + 0x148) = *(undefined4 *)(iVar3 + 0x1a0);
            *(undefined4 *)(iVar3 + 0x1a0) = *(undefined4 *)(iVar3 + 0x19c);
          }
          *local_c = param_3;
          (**(code **)(iVar3 + 0x84))
                    (*(undefined4 *)(iVar3 + 4),**(undefined4 **)(iVar3 + 0x154),
                     **(undefined4 **)(iVar3 + 0x158),*(undefined4 *)(iVar3 + 0x148),0,iVar6 == 0x24
                    );
          FUN_008dab00();
          ppcVar13 = param_2;
          break;
        }
      }
      goto switchD_008deb56_caseD_3e;
    case 0x25:
    case 0x26:
      if (*(char *)(iVar11 + 0x80) != '\0') {
        iVar8 = FUN_008dd5a0(iVar3,ppcVar13,iVar11 + 0x50);
        if (iVar8 != 0) {
          return iVar8;
        }
        uVar12 = *(undefined4 *)(iVar11 + 0x60);
        *(undefined4 *)(iVar11 + 0x60) = *(undefined4 *)(iVar11 + 0x5c);
        iVar8 = FUN_008da740(*(undefined4 *)(iVar3 + 0x158),*(undefined *)(iVar3 + 0x15c),uVar12);
        if (iVar8 == 0) {
          return 1;
        }
        if ((*(int *)(iVar3 + 0x84) != 0) &&
           (pcVar7 = *(char **)(iVar3 + 0x148), pcVar7 != (char *)0x0)) {
          if ((*pcVar7 == '(') || ((*pcVar7 == 'N' && (pcVar7[1] == 'O')))) {
            if ((*(int *)(iVar3 + 0x19c) == *(int *)(iVar3 + 0x198)) &&
               (cVar4 = FUN_008dab40(), cVar4 == '\0')) {
              return 1;
            }
            **(undefined **)(iVar3 + 0x19c) = 0x29;
            *(int *)(iVar3 + 0x19c) = *(int *)(iVar3 + 0x19c) + 1;
            if ((*(int *)(iVar3 + 0x19c) == *(int *)(iVar3 + 0x198)) &&
               (cVar4 = FUN_008dab40(), cVar4 == '\0')) {
              return 1;
            }
            **(undefined **)(iVar3 + 0x19c) = 0;
            *(int *)(iVar3 + 0x19c) = *(int *)(iVar3 + 0x19c) + 1;
            *(undefined4 *)(iVar3 + 0x148) = *(undefined4 *)(iVar3 + 0x1a0);
            *(undefined4 *)(iVar3 + 0x1a0) = *(undefined4 *)(iVar3 + 0x19c);
          }
          *local_c = param_3;
          (**(code **)(iVar3 + 0x84))
                    (*(undefined4 *)(iVar3 + 4),**(undefined4 **)(iVar3 + 0x154),
                     **(undefined4 **)(iVar3 + 0x158),*(undefined4 *)(iVar3 + 0x148),uVar12,
                     iVar6 == 0x26);
          FUN_008dab00();
          ppcVar13 = param_2;
          break;
        }
      }
      goto switchD_008deb56_caseD_3e;
    case 0x27:
switchD_008deb56_caseD_27:
      iVar6 = *(int *)(iVar3 + 0x80);
      goto joined_r0x008df9de;
    case 0x28:
      if (*(int *)(iVar3 + 0x80) == 0) goto switchD_008deb56_caseD_3e;
      iVar6 = FUN_008dbb60(iVar3);
      *(int *)(iVar3 + 0x154) = iVar6;
      if (iVar6 == 0) {
        return 1;
      }
      *(undefined4 *)(iVar11 + 0xb4) = 0;
      *(undefined4 *)(iVar11 + 0xb0) = 0;
      *(undefined *)(iVar11 + 0xa0) = 1;
      ppcVar13 = param_2;
      break;
    case 0x29:
    case 0x2a:
      if (*(char *)(iVar11 + 0xa0) != '\0') {
        if (*(int *)(iVar3 + 0x80) != 0) {
          piVar10 = (int *)(**(code **)(iVar3 + 0xc))(0x14);
          if (piVar10 == (int *)0x0) {
            return 1;
          }
          piVar10[1] = 0;
          piVar10[2] = 0;
          piVar10[3] = 0;
          piVar10[4] = 0;
          *piVar10 = (iVar6 == 0x29) + 1;
          *local_c = param_3;
          (**(code **)(iVar3 + 0x80))
                    (*(undefined4 *)(iVar3 + 4),**(undefined4 **)(iVar3 + 0x154),piVar10);
          bVar14 = false;
        }
        *(undefined *)(iVar11 + 0xa0) = 0;
        goto LAB_008ded37;
      }
      goto switchD_008deb56_caseD_3e;
    case 0x2b:
      if (*(char *)(iVar11 + 0xa0) != '\0') {
        *(undefined4 *)
         (*(int *)(iVar11 + 0xa4) +
         *(int *)(*(int *)(iVar11 + 0xb8) + -4 + *(int *)(iVar11 + 0xb4) * 4) * 0x1c) = 3;
        iVar6 = *(int *)(iVar3 + 0x80);
        goto joined_r0x008df9de;
      }
      goto switchD_008deb56_caseD_3e;
    case 0x2c:
      uVar2 = *(uint *)(iVar3 + 0x1c4);
      if (uVar2 <= *(uint *)(iVar3 + 0x104)) {
        if (uVar2 == 0) {
          *(undefined4 *)(iVar3 + 0x1c4) = 0x20;
          iVar6 = (**(code **)(iVar3 + 0xc))(0x20);
          *(int *)(iVar3 + 0x1c0) = iVar6;
          if (iVar6 == 0) {
            return 1;
          }
        }
        else {
          *(uint *)(iVar3 + 0x1c4) = uVar2 * 2;
          iVar6 = (**(code **)(iVar3 + 0x10))(*(undefined4 *)(iVar3 + 0x1c0),uVar2 * 2);
          if (iVar6 == 0) {
            return 1;
          }
          *(int *)(iVar3 + 0x1c0) = iVar6;
          if (*(int *)(iVar11 + 0xb8) != 0) {
            iVar6 = (**(code **)(iVar3 + 0x10))(*(int *)(iVar11 + 0xb8),*(int *)(iVar3 + 0x1c4) * 4)
            ;
            if (iVar6 == 0) {
              return 1;
            }
            *(int *)(iVar11 + 0xb8) = iVar6;
          }
        }
      }
      *(undefined *)(*(int *)(iVar3 + 0x1c0) + *(int *)(iVar3 + 0x104)) = 0;
      if (*(char *)(iVar11 + 0xa0) != '\0') {
        iVar6 = FUN_008dac80();
        if (iVar6 < 0) {
          return 1;
        }
        *(int *)(*(int *)(iVar11 + 0xb8) + *(int *)(iVar11 + 0xb4) * 4) = iVar6;
        *(int *)(iVar11 + 0xb4) = *(int *)(iVar11 + 0xb4) + 1;
        *(undefined4 *)(*(int *)(iVar11 + 0xa4) + iVar6 * 0x1c) = 6;
        goto switchD_008deb56_caseD_27;
      }
      goto switchD_008deb56_caseD_3e;
    case 0x2d:
      uVar12 = 0;
      goto LAB_008dfdde;
    case 0x2e:
      uVar12 = 2;
      goto LAB_008dfdde;
    case 0x2f:
      uVar12 = 1;
      goto LAB_008dfdde;
    case 0x30:
      uVar12 = 3;
LAB_008dfdde:
      if (*(char *)(iVar11 + 0xa0) != '\0') {
        bVar14 = *(int *)(iVar3 + 0x80) == 0;
        *(int *)(iVar11 + 0xb4) = *(int *)(iVar11 + 0xb4) + -1;
        *(undefined4 *)
         (*(int *)(iVar11 + 0xa4) + 4 +
         *(int *)(*(int *)(iVar11 + 0xb8) + *(int *)(iVar11 + 0xb4) * 4) * 0x1c) = uVar12;
        if (*(int *)(iVar11 + 0xb4) == 0) {
          if (!bVar14) {
            iVar6 = FUN_008daeb0();
            if (iVar6 == 0) {
              return 1;
            }
            *local_c = param_3;
            (**(code **)(iVar3 + 0x80))
                      (*(undefined4 *)(iVar3 + 4),**(undefined4 **)(iVar3 + 0x154),iVar6);
          }
          *(undefined *)(iVar11 + 0xa0) = 0;
          *(undefined4 *)(iVar11 + 0xa8) = 0;
        }
        goto LAB_008ded37;
      }
      goto switchD_008deb56_caseD_3e;
    case 0x31:
      cVar4 = *(char *)(*(int *)(iVar3 + 0x1c0) + *(int *)(iVar3 + 0x104));
      if (cVar4 == ',') {
        return 2;
      }
      if (((*(char *)(iVar11 + 0xa0) != '\0') && (cVar4 == '\0')) &&
         ((iVar6 = *(int *)(*(int *)(iVar11 + 0xb8) + -4 + *(int *)(iVar11 + 0xb4) * 4),
          *(int *)(*(int *)(iVar11 + 0xa4) + iVar6 * 0x1c) != 3 &&
          (*(undefined4 *)(*(int *)(iVar11 + 0xa4) + iVar6 * 0x1c) = 5, *(int *)(iVar3 + 0x80) != 0)
          ))) {
        bVar14 = false;
      }
      *(undefined *)(*(int *)(iVar3 + 0x1c0) + *(int *)(iVar3 + 0x104)) = 0x7c;
LAB_008ded37:
      ppcVar13 = param_2;
      if (bVar14) goto switchD_008deb56_caseD_3e;
      break;
    case 0x32:
      pcVar7 = (char *)(*(int *)(iVar3 + 0x1c0) + *(int *)(iVar3 + 0x104));
      if (*pcVar7 == '|') {
        return 2;
      }
      *pcVar7 = ',';
      if (*(char *)(iVar11 + 0xa0) != '\0') {
        iVar6 = *(int *)(iVar3 + 0x80);
        goto joined_r0x008df9de;
      }
      goto switchD_008deb56_caseD_3e;
    case 0x33:
      param_1 = 0;
      goto LAB_008dfd2a;
    case 0x34:
      param_1 = 2;
      goto LAB_008dfd2a;
    case 0x35:
      param_1 = 1;
      goto LAB_008dfd2a;
    case 0x36:
      param_1 = 3;
LAB_008dfd2a:
      if (*(char *)(iVar11 + 0xa0) == '\0') goto switchD_008deb56_caseD_3e;
      iVar6 = FUN_008dac80();
      if (iVar6 < 0) {
        return 1;
      }
      iVar6 = iVar6 * 0x1c;
      *(undefined4 *)(iVar6 + *(int *)(iVar11 + 0xa4)) = 4;
      *(int *)(iVar6 + 4 + *(int *)(iVar11 + 0xa4)) = param_1;
      piVar10 = (int *)FUN_008dbb60(iVar3);
      if (piVar10 == (int *)0x0) {
        return 1;
      }
      iVar8 = *piVar10;
      *(int *)(iVar6 + 8 + *(int *)(iVar11 + 0xa4)) = iVar8;
      iVar6 = 0;
      do {
        pcVar7 = (char *)(iVar6 + iVar8);
        iVar6 = iVar6 + 1;
      } while (*pcVar7 != '\0');
      *(int *)(iVar11 + 0xa8) = *(int *)(iVar11 + 0xa8) + iVar6;
      iVar6 = *(int *)(iVar3 + 0x80);
      ppcVar13 = param_2;
      goto joined_r0x008df9de;
    case 0x37:
      iVar6 = FUN_008dcbf0(iVar3,param_3,param_6);
      goto joined_r0x008dfeb8;
    case 0x38:
      iVar6 = FUN_008dcd00(iVar3);
joined_r0x008dfeb8:
      if (iVar6 == 0) {
        return 1;
      }
      break;
    case 0x39:
      iVar6 = FUN_008dc100(param_3);
      if (iVar6 != 0) {
        return iVar6;
      }
      param_2 = *(code ***)(iVar3 + 0x90);
      ppcVar13 = param_2;
      break;
    case 0x3a:
      if (*(int *)(iVar3 + 0x50) != 0) {
        FUN_008da6a0(param_3);
        ppcVar13 = param_2;
      }
      iVar6 = FUN_008db280(iVar3,&param_6,param_4,param_7);
      if (param_6 == 0) {
        *(code **)(iVar3 + 0x118) = FUN_008dc090;
        return iVar6;
      }
      break;
    case 0x3b:
    case 0x3c:
      if ((*(int *)(iVar3 + 0x110) != 0) && (iVar6 == 0x3b)) {
        return 10;
      }
      *(undefined *)(iVar11 + 0x81) = 1;
      if (*(int *)(iVar3 + 0x1d4) == 0) {
        *(undefined *)(iVar11 + 0x80) = *(undefined *)(iVar11 + 0x82);
LAB_008dfa8e:
        if (((*(char *)(iVar11 + 0x82) == '\0') && (*(code **)(iVar3 + 0x6c) != (code *)0x0)) &&
           (iVar6 = (**(code **)(iVar3 + 0x6c))(*(undefined4 *)(iVar3 + 4)), iVar6 == 0)) {
          return 0x16;
        }
        goto LAB_008ded37;
      }
      iVar8 = FUN_008dbb20();
      if (iVar8 == 0) {
        return 1;
      }
      iVar9 = FUN_008da890(iVar8,0);
      *(undefined4 *)(iVar11 + 0x5c) = *(undefined4 *)(iVar11 + 0x60);
      if (*(int *)(iVar3 + 0x110) == 0) {
LAB_008dfb60:
        if (iVar9 == 0) {
          *(undefined *)(iVar11 + 0x80) = *(undefined *)(iVar11 + 0x82);
          if ((iVar6 != 0x3c) || (*(code **)(iVar3 + 0x78) == (code *)0x0))
          goto switchD_008deb56_caseD_3e;
          (**(code **)(iVar3 + 0x78))(*(undefined4 *)(iVar3 + 4),iVar8,1);
          ppcVar13 = param_2;
          break;
        }
      }
      else {
        if (*(char *)(iVar11 + 0x82) == '\0') {
          bVar14 = *(char *)(iVar11 + 0x81) == '\0';
        }
        else {
          bVar14 = *(int *)(iVar3 + 300) == 0;
        }
        if (!bVar14) goto LAB_008dfb60;
        if (iVar9 == 0) {
          return 0xb;
        }
        if (*(char *)(iVar9 + 0x1e) == '\0') {
          return 0x18;
        }
      }
      if (*(char *)(iVar9 + 0x1c) != '\0') {
        return 0xc;
      }
      if (*(int *)(iVar9 + 4) == 0) {
        if (*(int *)(iVar3 + 0x70) == 0) {
          *(undefined *)(iVar11 + 0x80) = *(undefined *)(iVar11 + 0x82);
          goto switchD_008deb56_caseD_3e;
        }
        *(undefined *)(iVar11 + 0x83) = 0;
        *(undefined *)(iVar9 + 0x1c) = 1;
        iVar6 = (**(code **)(iVar3 + 0x70))
                          (*(undefined4 *)(iVar3 + 0x74),0,*(undefined4 *)(iVar9 + 0x10),
                           *(undefined4 *)(iVar9 + 0xc),*(undefined4 *)(iVar9 + 0x14));
        *(undefined *)(iVar9 + 0x1c) = 0;
        if (iVar6 == 0) {
          return 0x15;
        }
        bVar14 = false;
        if (*(char *)(iVar11 + 0x83) != '\0') goto LAB_008dfa8e;
        *(undefined *)(iVar11 + 0x80) = *(undefined *)(iVar11 + 0x82);
        ppcVar13 = param_2;
      }
      else {
        iVar6 = FUN_008e0200(iVar3,iVar9);
        ppcVar13 = param_2;
        if (iVar6 != 0) {
          return iVar6;
        }
      }
      break;
    case -1:
      if (param_5 == 0xc) {
        return 0x11;
      }
      return (uint)(param_5 == 0x1c) * 8 + 2;
    }
    param_3 = param_6;
    param_5 = (**ppcVar13)(ppcVar13,param_6,param_4,&param_6);
  } while( true );
}



void FUN_008e0200(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  int local_4;
  
  iVar2 = param_2;
  *(undefined *)(param_2 + 0x1c) = 1;
  local_8 = *(undefined4 *)(param_1 + 300);
  *(undefined4 **)(param_1 + 300) = &local_10;
  iVar1 = *(int *)(param_2 + 4);
  iVar4 = *(int *)(param_2 + 8) + iVar1;
  local_10 = 0;
  local_c = 0;
  local_4 = param_2;
  uVar3 = (***(code ***)(param_1 + 0xe4))(*(code ***)(param_1 + 0xe4),iVar1,iVar4,&param_2);
  FUN_008deaa0(param_1,*(undefined4 *)(param_1 + 0xe4),iVar1,iVar4,uVar3,param_2,0);
  *(undefined *)(iVar2 + 0x1c) = 0;
  *(undefined4 *)(param_1 + 300) = local_8;
  return;
}



undefined4 FUN_008e04b0(byte *param_1,byte **param_2)

{
  byte *in_EAX;
  int iVar1;
  int unaff_EBX;
  byte *pbVar2;
  int iVar3;
  
  if (in_EAX != param_1) {
    if (*in_EAX != 0x2d) {
switchD_008e04f8_caseD_0:
      *param_2 = in_EAX;
      return 0;
    }
    in_EAX = in_EAX + 1;
    if (in_EAX != param_1) {
      iVar3 = (int)param_1 - (int)in_EAX;
      do {
        switch(*(undefined *)(*in_EAX + 0x4c + unaff_EBX)) {
        case 0:
        case 1:
        case 8:
          goto switchD_008e04f8_caseD_0;
        default:
          pbVar2 = in_EAX + 1;
          iVar3 = iVar3 + -1;
          break;
        case 5:
          if (iVar3 < 2) {
            return 0xfffffffe;
          }
          iVar1 = (**(code **)(unaff_EBX + 0x164))();
          if (iVar1 != 0) goto switchD_008e04f8_caseD_0;
          pbVar2 = in_EAX + 2;
          iVar3 = iVar3 + -2;
          break;
        case 6:
          if (iVar3 < 3) {
            return 0xfffffffe;
          }
          iVar1 = (**(code **)(unaff_EBX + 0x168))();
          pbVar2 = in_EAX;
          if (iVar1 != 0) {
LAB_008e059c:
            *param_2 = pbVar2;
            return 0;
          }
          pbVar2 = in_EAX + 3;
          iVar3 = iVar3 + -3;
          break;
        case 7:
          if (iVar3 < 4) {
            return 0xfffffffe;
          }
          iVar1 = (**(code **)(unaff_EBX + 0x16c))();
          if (iVar1 != 0) {
            *param_2 = in_EAX;
            return 0;
          }
          pbVar2 = in_EAX + 4;
          iVar3 = iVar3 + -4;
          break;
        case 0x1b:
          pbVar2 = in_EAX + 1;
          iVar3 = iVar3 + -1;
          if (pbVar2 == param_1) {
            return 0xffffffff;
          }
          if (*pbVar2 == 0x2d) {
            pbVar2 = in_EAX + 2;
            if (pbVar2 == param_1) {
              return 0xffffffff;
            }
            if (*pbVar2 == 0x3e) {
              *param_2 = in_EAX + 3;
              return 0xd;
            }
            goto LAB_008e059c;
          }
        }
        in_EAX = pbVar2;
      } while (pbVar2 != param_1);
    }
  }
  return 0xffffffff;
}



undefined4 __fastcall FUN_008e05f0(int param_1,byte *param_2)

{
  byte *in_EAX;
  undefined4 uVar1;
  byte **unaff_ESI;
  
  if (in_EAX == param_2) {
    return 0xffffffff;
  }
  switch(*(undefined *)(*in_EAX + 0x4c + param_1)) {
  case 0x14:
    *unaff_ESI = in_EAX + 1;
    return 0x21;
  default:
switchD_008e060c_caseD_15:
    *unaff_ESI = in_EAX;
    return 0;
  case 0x16:
  case 0x18:
    in_EAX = in_EAX + 1;
    if (in_EAX == param_2) {
      return 0xffffffff;
    }
    break;
  case 0x1b:
    uVar1 = FUN_008e04b0(param_2);
    return uVar1;
  }
LAB_008e0630:
  switch(*(undefined *)(*in_EAX + 0x4c + param_1)) {
  case 0x16:
  case 0x18:
    goto switchD_008e0647_caseD_16;
  case 0x1e:
    if (in_EAX + 1 == param_2) {
      return 0xffffffff;
    }
    switch(*(undefined *)(in_EAX[1] + 0x4c + param_1)) {
    case 9:
    case 10:
    case 0x15:
    case 0x1e:
      goto switchD_008e060c_caseD_15;
    }
  case 9:
  case 10:
  case 0x15:
    *unaff_ESI = in_EAX;
    return 0x10;
  }
  goto switchD_008e060c_caseD_15;
switchD_008e0647_caseD_16:
  in_EAX = in_EAX + 1;
  if (in_EAX == param_2) {
    return 0xffffffff;
  }
  goto LAB_008e0630;
}



undefined4 __fastcall FUN_008e0700(char *param_1)

{
  bool bVar1;
  int in_EAX;
  undefined4 *unaff_ESI;
  
  bVar1 = false;
  *unaff_ESI = 0xb;
  if (in_EAX - (int)param_1 == 3) {
    if (*param_1 == 'X') {
      bVar1 = true;
    }
    else if (*param_1 != 'x') {
      return 1;
    }
    if (param_1[1] == 'M') {
      bVar1 = true;
    }
    else if (param_1[1] != 'm') {
      return 1;
    }
    if (param_1[2] == 'L') {
      return 0;
    }
    if (param_1[2] == 'l') {
      if (bVar1) {
        return 0;
      }
      *unaff_ESI = 0xc;
    }
  }
  return 1;
}



byte * FUN_008e0760(byte *param_1,byte **param_2)

{
  byte *in_EAX;
  int iVar1;
  int unaff_EBX;
  int iVar2;
  byte *pbVar3;
  byte *pbVar4;
  
  if (in_EAX == param_1) {
    return (byte *)0xffffffff;
  }
  switch(*(undefined *)(*in_EAX + 0x4c + unaff_EBX)) {
  case 5:
    if ((int)param_1 - (int)in_EAX < 2) {
      return (byte *)0xfffffffe;
    }
    iVar2 = (**(code **)(unaff_EBX + 0x158))();
    if (iVar2 == 0) goto switchD_008e078d_caseD_8;
    pbVar3 = in_EAX + 2;
    break;
  case 6:
    if ((int)param_1 - (int)in_EAX < 3) {
      return (byte *)0xfffffffe;
    }
    iVar2 = (**(code **)(unaff_EBX + 0x15c))();
    if (iVar2 == 0) goto switchD_008e078d_caseD_8;
    pbVar3 = in_EAX + 3;
    break;
  case 7:
    if ((int)param_1 - (int)in_EAX < 4) {
      return (byte *)0xfffffffe;
    }
    iVar2 = (**(code **)(unaff_EBX + 0x160))();
    if (iVar2 == 0) goto switchD_008e078d_caseD_8;
    pbVar3 = in_EAX + 4;
    break;
  default:
switchD_008e078d_caseD_8:
    *param_2 = in_EAX;
    return (byte *)0x0;
  case 0x16:
  case 0x18:
    pbVar3 = in_EAX + 1;
  }
  if (pbVar3 != param_1) {
    iVar2 = (int)param_1 - (int)pbVar3;
    do {
      pbVar4 = pbVar3;
      switch(*(undefined *)(*pbVar3 + 0x4c + unaff_EBX)) {
      case 5:
        if (iVar2 < 2) {
          return (byte *)0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x14c))();
        if (iVar1 == 0) goto switchD_008e08f8_caseD_0;
        pbVar3 = pbVar3 + 2;
        iVar2 = iVar2 + -2;
        break;
      case 6:
        if (iVar2 < 3) {
          return (byte *)0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x150))();
        if (iVar1 == 0) goto switchD_008e082d_caseD_8;
        pbVar3 = pbVar3 + 3;
        iVar2 = iVar2 + -3;
        break;
      case 7:
        if (iVar2 < 4) {
          return (byte *)0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x154))();
        if (iVar1 == 0) goto switchD_008e082d_caseD_1d;
        pbVar3 = pbVar3 + 4;
        iVar2 = iVar2 + -4;
        break;
      default:
        goto switchD_008e082d_caseD_8;
      case 9:
      case 10:
      case 0x15:
        iVar2 = FUN_008e0700();
        if (iVar2 == 0) goto switchD_008e08f8_caseD_0;
        pbVar4 = pbVar3 + 1;
        if (pbVar4 == param_1) {
          return (byte *)0xffffffff;
        }
        iVar2 = (int)param_1 - (int)pbVar4;
        goto LAB_008e08e0;
      case 0xf:
        iVar2 = FUN_008e0700();
        if (iVar2 == 0) goto switchD_008e082d_caseD_1d;
        pbVar4 = pbVar3 + 1;
        if (pbVar4 == param_1) {
          return (byte *)0xffffffff;
        }
        if (*pbVar4 == 0x3e) {
          *param_2 = pbVar3 + 2;
          return in_EAX;
        }
        goto switchD_008e082d_caseD_8;
      case 0x16:
      case 0x18:
      case 0x19:
      case 0x1a:
      case 0x1b:
        pbVar3 = pbVar3 + 1;
        iVar2 = iVar2 + -1;
        break;
      case 0x1d:
        goto switchD_008e082d_caseD_1d;
      }
    } while (pbVar3 != param_1);
  }
  return (byte *)0xffffffff;
LAB_008e08e0:
  switch(*(undefined *)(*pbVar4 + 0x4c + unaff_EBX)) {
  case 0:
  case 1:
  case 8:
switchD_008e08f8_caseD_0:
    *param_2 = pbVar4;
    return (byte *)0x0;
  default:
    pbVar3 = pbVar4 + 1;
    iVar2 = iVar2 + -1;
    break;
  case 5:
    if (iVar2 < 2) {
      return (byte *)0xfffffffe;
    }
    iVar1 = (**(code **)(unaff_EBX + 0x164))();
    if (iVar1 != 0) goto switchD_008e08f8_caseD_0;
    pbVar3 = pbVar4 + 2;
    iVar2 = iVar2 + -2;
    break;
  case 6:
    if (iVar2 < 3) {
      return (byte *)0xfffffffe;
    }
    iVar1 = (**(code **)(unaff_EBX + 0x168))();
    if (iVar1 != 0) {
switchD_008e082d_caseD_8:
      *param_2 = pbVar4;
      return (byte *)0x0;
    }
    pbVar3 = pbVar4 + 3;
    iVar2 = iVar2 + -3;
    break;
  case 7:
    if (iVar2 < 4) {
      return (byte *)0xfffffffe;
    }
    iVar1 = (**(code **)(unaff_EBX + 0x16c))();
    if (iVar1 != 0) {
switchD_008e082d_caseD_1d:
      *param_2 = pbVar4;
      return (byte *)0x0;
    }
    pbVar3 = pbVar4 + 4;
    iVar2 = iVar2 + -4;
    break;
  case 0xf:
    pbVar3 = pbVar4 + 1;
    iVar2 = iVar2 + -1;
    if (pbVar3 == param_1) {
      return (byte *)0xffffffff;
    }
    if (*pbVar3 == 0x3e) {
      *param_2 = pbVar4 + 2;
      return in_EAX;
    }
  }
  pbVar4 = pbVar3;
  if (pbVar3 == param_1) {
    return (byte *)0xffffffff;
  }
  goto LAB_008e08e0;
}



undefined4 FUN_008e0a90(int param_1,byte *param_2,byte *param_3,byte **param_4)

{
  int iVar1;
  byte *pbVar2;
  int iVar3;
  
  if (param_2 == param_3) {
    return 0xfffffffc;
  }
  switch(*(undefined *)(*param_2 + 0x4c + param_1)) {
  case 0:
  case 1:
  case 8:
    *param_4 = param_2;
    return 0;
  default:
    pbVar2 = param_2 + 1;
    break;
  case 4:
    pbVar2 = param_2 + 1;
    if (pbVar2 == param_3) {
      return 0xffffffff;
    }
    if (*pbVar2 == 0x5d) {
      if (param_2 + 2 == param_3) {
        return 0xffffffff;
      }
      if (param_2[2] == 0x3e) {
        *param_4 = param_2 + 3;
        return 0x28;
      }
      pbVar2 = param_2 + 1;
    }
    break;
  case 5:
    if ((int)param_3 - (int)param_2 < 2) {
      return 0xfffffffe;
    }
    iVar3 = (**(code **)(param_1 + 0x164))(param_1,param_2);
    if (iVar3 != 0) {
LAB_008e0b88:
      *param_4 = param_2;
      return 0;
    }
    pbVar2 = param_2 + 2;
    break;
  case 6:
    if ((int)param_3 - (int)param_2 < 3) {
      return 0xfffffffe;
    }
    iVar3 = (**(code **)(param_1 + 0x168))(param_1,param_2);
    if (iVar3 != 0) goto LAB_008e0b88;
    pbVar2 = param_2 + 3;
    break;
  case 7:
    if ((int)param_3 - (int)param_2 < 4) {
      return 0xfffffffe;
    }
    iVar3 = (**(code **)(param_1 + 0x16c))(param_1,param_2);
    if (iVar3 != 0) goto LAB_008e0b88;
    pbVar2 = param_2 + 4;
    break;
  case 9:
    pbVar2 = param_2 + 1;
    if (pbVar2 == param_3) {
      return 0xffffffff;
    }
    if (*(char *)(*pbVar2 + 0x4c + param_1) == '\n') {
      pbVar2 = param_2 + 2;
    }
    *param_4 = pbVar2;
    return 7;
  case 10:
    *param_4 = param_2 + 1;
    return 7;
  }
  if (pbVar2 != param_3) {
    iVar3 = (int)param_3 - (int)pbVar2;
    do {
      switch(*(undefined *)(*pbVar2 + 0x4c + param_1)) {
      case 0:
      case 1:
      case 4:
      case 8:
      case 9:
      case 10:
switchD_008e0bc7_caseD_0:
        *param_4 = pbVar2;
        return 6;
      default:
        pbVar2 = pbVar2 + 1;
        iVar3 = iVar3 + -1;
        break;
      case 5:
        if ((iVar3 < 2) || (iVar1 = (**(code **)(param_1 + 0x164))(param_1,pbVar2), iVar1 != 0))
        goto switchD_008e0bc7_caseD_0;
        pbVar2 = pbVar2 + 2;
        iVar3 = iVar3 + -2;
        break;
      case 6:
        if ((iVar3 < 3) || (iVar1 = (**(code **)(param_1 + 0x168))(param_1,pbVar2), iVar1 != 0))
        goto LAB_008e0c2e;
        pbVar2 = pbVar2 + 3;
        iVar3 = iVar3 + -3;
        break;
      case 7:
        if ((iVar3 < 4) || (iVar1 = (**(code **)(param_1 + 0x16c))(param_1,pbVar2), iVar1 != 0)) {
          *param_4 = pbVar2;
          return 6;
        }
        pbVar2 = pbVar2 + 4;
        iVar3 = iVar3 + -4;
      }
    } while (pbVar2 != param_3);
  }
LAB_008e0c2e:
  *param_4 = pbVar2;
  return 6;
}



undefined4 FUN_008e0cb0(byte *param_1,byte **param_2)

{
  byte *in_EAX;
  int iVar1;
  int unaff_EBX;
  byte *pbVar2;
  int iVar3;
  
  if (in_EAX == param_1) {
    return 0xffffffff;
  }
  switch(*(undefined *)(*in_EAX + 0x4c + unaff_EBX)) {
  case 5:
    if ((int)param_1 - (int)in_EAX < 2) {
      return 0xfffffffe;
    }
    iVar3 = (**(code **)(unaff_EBX + 0x158))();
    if (iVar3 == 0) goto switchD_008e0cdd_caseD_1d;
    pbVar2 = in_EAX + 2;
    break;
  case 6:
    if ((int)param_1 - (int)in_EAX < 3) {
      return 0xfffffffe;
    }
    iVar3 = (**(code **)(unaff_EBX + 0x15c))();
    if (iVar3 == 0) goto switchD_008e0cdd_caseD_1d;
    pbVar2 = in_EAX + 3;
    break;
  case 7:
    if ((int)param_1 - (int)in_EAX < 4) {
      return 0xfffffffe;
    }
    iVar3 = (**(code **)(unaff_EBX + 0x160))();
    if (iVar3 == 0) goto switchD_008e0cdd_caseD_1d;
    pbVar2 = in_EAX + 4;
    break;
  default:
    *param_2 = in_EAX;
    return 0;
  case 0x16:
  case 0x18:
    pbVar2 = in_EAX + 1;
    break;
  case 0x1d:
switchD_008e0cdd_caseD_1d:
    *param_2 = in_EAX;
    return 0;
  }
  if (pbVar2 != param_1) {
    iVar3 = (int)param_1 - (int)pbVar2;
    do {
      switch(*(undefined *)(*pbVar2 + 0x4c + unaff_EBX)) {
      case 5:
        if (iVar3 < 2) {
          return 0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x14c))();
        if (iVar1 == 0) goto switchD_008e0e28_caseD_c;
        pbVar2 = pbVar2 + 2;
        iVar3 = iVar3 + -2;
        break;
      case 6:
        if (iVar3 < 3) {
          return 0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x150))();
        if (iVar1 == 0) {
          *param_2 = pbVar2;
          return 0;
        }
        pbVar2 = pbVar2 + 3;
        iVar3 = iVar3 + -3;
        break;
      case 7:
        if (iVar3 < 4) {
          return 0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x154))();
        if (iVar1 == 0) goto switchD_008e0d7d_caseD_8;
        pbVar2 = pbVar2 + 4;
        iVar3 = iVar3 + -4;
        break;
      default:
switchD_008e0d7d_caseD_8:
        *param_2 = pbVar2;
        return 0;
      case 9:
      case 10:
      case 0x15:
        pbVar2 = pbVar2 + 1;
        if (pbVar2 == param_1) {
          return 0xffffffff;
        }
        do {
          switch(*(undefined *)(*pbVar2 + 0x4c + unaff_EBX)) {
          case 9:
          case 10:
          case 0x15:
            pbVar2 = pbVar2 + 1;
            if (pbVar2 == param_1) {
              return 0xffffffff;
            }
            break;
          case 0xb:
            *param_2 = pbVar2 + 1;
            return 5;
          default:
switchD_008e0e28_caseD_c:
            *param_2 = pbVar2;
            return 0;
          }
        } while( true );
      case 0xb:
        *param_2 = pbVar2 + 1;
        return 5;
      case 0x16:
      case 0x17:
      case 0x18:
      case 0x19:
      case 0x1a:
      case 0x1b:
        pbVar2 = pbVar2 + 1;
        iVar3 = iVar3 + -1;
      }
    } while (pbVar2 != param_1);
  }
  return 0xffffffff;
}



undefined4 __fastcall FUN_008e0f10(undefined4 param_1,int param_2)

{
  char cVar1;
  byte *in_EAX;
  byte *unaff_ESI;
  byte **unaff_EDI;
  
  if (in_EAX != unaff_ESI) {
    if (1 < (byte)(*(char *)(*in_EAX + 0x4c + param_2) - 0x18U)) {
LAB_008e0f56:
      *unaff_EDI = in_EAX;
      return 0;
    }
    for (in_EAX = in_EAX + 1; in_EAX != unaff_ESI; in_EAX = in_EAX + 1) {
      cVar1 = *(char *)(*in_EAX + 0x4c + param_2);
      if (cVar1 == '\x12') {
        *unaff_EDI = in_EAX + 1;
        return 10;
      }
      if (1 < (byte)(cVar1 - 0x18U)) goto LAB_008e0f56;
    }
  }
  return 0xffffffff;
}



undefined4 __fastcall FUN_008e0f60(byte **param_1_00,int param_2,byte *param_1)

{
  char cVar1;
  byte *in_EAX;
  undefined4 uVar2;
  
  if (in_EAX != param_1) {
    if (*in_EAX == 0x78) {
      uVar2 = FUN_008e0f10();
      return uVar2;
    }
    if (*(char *)(*in_EAX + 0x4c + param_2) != '\x19') {
LAB_008e0f86:
      *param_1_00 = in_EAX;
      return 0;
    }
    for (in_EAX = in_EAX + 1; in_EAX != param_1; in_EAX = in_EAX + 1) {
      cVar1 = *(char *)(*in_EAX + 0x4c + param_2);
      if (cVar1 == '\x12') {
        *param_1_00 = in_EAX + 1;
        return 10;
      }
      if (cVar1 != '\x19') goto LAB_008e0f86;
    }
  }
  return 0xffffffff;
}



undefined4 FUN_008e0fc0(byte *param_1,byte **param_2)

{
  byte *in_EAX;
  int iVar1;
  undefined4 uVar2;
  int unaff_EBX;
  byte *pbVar3;
  int iVar4;
  
  if (in_EAX == param_1) {
    return 0xffffffff;
  }
  switch(*(undefined *)(*in_EAX + 0x4c + unaff_EBX)) {
  case 5:
    if ((int)param_1 - (int)in_EAX < 2) {
      return 0xfffffffe;
    }
    iVar4 = (**(code **)(unaff_EBX + 0x158))();
    if (iVar4 == 0) goto switchD_008e0fe9_caseD_8;
    pbVar3 = in_EAX + 2;
    break;
  case 6:
    if ((int)param_1 - (int)in_EAX < 3) {
      return 0xfffffffe;
    }
    iVar4 = (**(code **)(unaff_EBX + 0x15c))();
    if (iVar4 == 0) goto switchD_008e0fe9_caseD_8;
    pbVar3 = in_EAX + 3;
    break;
  case 7:
    if ((int)param_1 - (int)in_EAX < 4) {
      return 0xfffffffe;
    }
    iVar4 = (**(code **)(unaff_EBX + 0x160))();
    if (iVar4 == 0) goto switchD_008e0fe9_caseD_8;
    pbVar3 = in_EAX + 4;
    break;
  default:
switchD_008e0fe9_caseD_8:
    *param_2 = in_EAX;
    return 0;
  case 0x13:
    uVar2 = FUN_008e0f60(param_1);
    return uVar2;
  case 0x16:
  case 0x18:
    pbVar3 = in_EAX + 1;
  }
  if (pbVar3 != param_1) {
    iVar4 = (int)param_1 - (int)pbVar3;
    do {
      switch(*(undefined *)(*pbVar3 + 0x4c + unaff_EBX)) {
      case 5:
        if (iVar4 < 2) {
          return 0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x14c))();
        if (iVar1 == 0) {
          *param_2 = pbVar3;
          return 0;
        }
        pbVar3 = pbVar3 + 2;
        iVar4 = iVar4 + -2;
        break;
      case 6:
        if (iVar4 < 3) {
          return 0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x150))();
        if (iVar1 == 0) goto switchD_008e108b_caseD_8;
        pbVar3 = pbVar3 + 3;
        iVar4 = iVar4 + -3;
        break;
      case 7:
        if (iVar4 < 4) {
          return 0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x154))();
        if (iVar1 == 0) goto switchD_008e108b_caseD_1d;
        pbVar3 = pbVar3 + 4;
        iVar4 = iVar4 + -4;
        break;
      default:
switchD_008e108b_caseD_8:
        *param_2 = pbVar3;
        return 0;
      case 0x12:
        *param_2 = pbVar3 + 1;
        return 9;
      case 0x16:
      case 0x18:
      case 0x19:
      case 0x1a:
      case 0x1b:
        pbVar3 = pbVar3 + 1;
        iVar4 = iVar4 + -1;
        break;
      case 0x1d:
switchD_008e108b_caseD_1d:
        *param_2 = pbVar3;
        return 0;
      }
    } while (pbVar3 != param_1);
  }
  return 0xffffffff;
}



int FUN_008e11c0(byte *param_1,byte *param_2,byte **param_3)

{
  byte bVar1;
  byte bVar2;
  byte *pbVar3;
  byte **ppbVar4;
  int in_EAX;
  int iVar5;
  byte *pbVar6;
  byte *pbVar7;
  byte *pbVar8;
  
  pbVar3 = param_2;
  param_2 = (byte *)0x0;
  pbVar7 = param_1;
  if (param_1 == pbVar3) {
    return -1;
  }
LAB_008e11f4:
  ppbVar4 = param_3;
  pbVar6 = pbVar7;
  switch(*(undefined *)(*pbVar7 + 0x4c + in_EAX)) {
  case 5:
    if ((int)pbVar3 - (int)pbVar7 < 2) {
      return -2;
    }
    iVar5 = (**(code **)(in_EAX + 0x14c))();
    if (iVar5 == 0) goto switchD_008e120f_caseD_8;
    pbVar7 = pbVar7 + 2;
    break;
  case 6:
    if ((int)pbVar3 - (int)pbVar7 < 3) {
      return -2;
    }
    iVar5 = (**(code **)(in_EAX + 0x150))();
    if (iVar5 == 0) goto switchD_008e120f_caseD_8;
    pbVar7 = pbVar7 + 3;
    break;
  case 7:
    if ((int)pbVar3 - (int)pbVar7 < 4) {
      return -2;
    }
    iVar5 = (**(code **)(in_EAX + 0x154))();
joined_r0x008e133b:
    if (iVar5 == 0) {
      *ppbVar4 = pbVar6;
      return 0;
    }
LAB_008e153e:
    pbVar7 = pbVar6 + 4;
    break;
  default:
switchD_008e120f_caseD_8:
    *ppbVar4 = pbVar6;
    return 0;
  case 9:
  case 10:
  case 0x15:
    while( true ) {
      pbVar7 = pbVar7 + 1;
      if (pbVar7 == pbVar3) {
        return -1;
      }
      bVar1 = *(byte *)(*pbVar7 + 0x4c + in_EAX);
      if (bVar1 == 0xe) break;
      pbVar6 = pbVar7;
      if ((bVar1 < 9) || ((10 < bVar1 && (bVar1 != 0x15)))) goto switchD_008e120f_caseD_8;
    }
  case 0xe:
    param_1 = pbVar7;
    param_2 = (byte *)0x0;
    while( true ) {
      param_1 = param_1 + 1;
      if (param_1 == pbVar3) {
        return -1;
      }
      bVar1 = *(byte *)(*param_1 + 0x4c + in_EAX);
      if ((bVar1 == 0xc) || (bVar1 == 0xd)) break;
      if ((bVar1 < 9) || ((10 < bVar1 && (bVar1 != 0x15)))) {
        *param_3 = param_1;
        return 0;
      }
    }
switchD_008e13dd_caseD_4:
    param_1 = param_1 + 1;
    do {
      pbVar6 = param_1;
      if (param_1 == pbVar3) {
        return -1;
      }
      bVar2 = *(byte *)(*param_1 + 0x4c + in_EAX);
      if (bVar2 == bVar1) {
        pbVar6 = param_1 + 1;
        if (pbVar6 == pbVar3) {
          return -1;
        }
        pbVar8 = pbVar6;
        switch(*(undefined *)(*pbVar6 + 0x4c + in_EAX)) {
        case 9:
        case 10:
        case 0x15:
          goto switchD_008e14a2_caseD_9;
        case 0xb:
          goto switchD_008e14a2_caseD_b;
        default:
          goto switchD_008e14a2_caseD_c;
        case 0x11:
          goto switchD_008e14a2_caseD_11;
        }
      }
      switch(bVar2) {
      case 0:
      case 1:
      case 8:
        goto switchD_008e13dd_caseD_0;
      case 2:
        goto switchD_008e13dd_caseD_2;
      case 3:
        iVar5 = FUN_008e0fc0(pbVar3,&param_1);
        if (iVar5 < 1) {
          if (iVar5 == 0) {
            *param_3 = param_1;
            return 0;
          }
          return iVar5;
        }
        break;
      default:
        goto switchD_008e13dd_caseD_4;
      case 5:
        if ((int)pbVar3 - (int)param_1 < 2) {
          return -2;
        }
        iVar5 = (**(code **)(in_EAX + 0x164))();
        if (iVar5 != 0) goto switchD_008e13dd_caseD_0;
        param_1 = pbVar6 + 2;
        break;
      case 6:
        if ((int)pbVar3 - (int)param_1 < 3) {
          return -2;
        }
        iVar5 = (**(code **)(in_EAX + 0x168))();
        if (iVar5 != 0) goto switchD_008e13dd_caseD_2;
        param_1 = pbVar6 + 3;
        break;
      case 7:
        if ((int)pbVar3 - (int)param_1 < 4) {
          return -2;
        }
        iVar5 = (**(code **)(in_EAX + 0x16c))();
        if (iVar5 != 0) goto switchD_008e14a2_caseD_c;
        param_1 = pbVar6 + 4;
      }
    } while( true );
  case 0x16:
  case 0x18:
  case 0x19:
  case 0x1a:
  case 0x1b:
switchD_008e120f_caseD_16:
    pbVar7 = pbVar6 + 1;
    break;
  case 0x17:
    if (param_2 != (byte *)0x0) goto switchD_008e120f_caseD_8;
    pbVar6 = pbVar7 + 1;
    param_2 = (byte *)0x1;
    if (pbVar6 == pbVar3) {
      return -1;
    }
    switch(*(undefined *)(*pbVar6 + 0x4c + in_EAX)) {
    case 5:
      if ((int)pbVar3 - (int)pbVar6 < 2) {
        return -2;
      }
      iVar5 = (**(code **)(in_EAX + 0x158))();
      if (iVar5 == 0) goto switchD_008e120f_caseD_8;
      pbVar7 = pbVar7 + 3;
      break;
    case 6:
      if ((int)pbVar3 - (int)pbVar6 < 3) {
        return -2;
      }
      iVar5 = (**(code **)(in_EAX + 0x15c))();
      if (iVar5 == 0) goto switchD_008e120f_caseD_8;
      pbVar7 = pbVar7 + 4;
      break;
    case 7:
      if ((int)pbVar3 - (int)pbVar6 < 4) {
        return -2;
      }
      iVar5 = (**(code **)(in_EAX + 0x160))();
      goto joined_r0x008e133b;
    default:
      goto switchD_008e120f_caseD_8;
    case 0x16:
    case 0x18:
      goto switchD_008e120f_caseD_16;
    }
  }
  goto LAB_008e1541;
  do {
    pbVar8 = pbVar6;
    switch(*(undefined *)(*pbVar6 + 0x4c + in_EAX)) {
    case 5:
      goto switchD_008e14d4_caseD_5;
    case 6:
      if ((int)pbVar3 - (int)pbVar6 < 3) {
        return -2;
      }
      iVar5 = (**(code **)(in_EAX + 0x15c))();
      if (iVar5 == 0) goto switchD_008e14a2_caseD_c;
      pbVar7 = pbVar7 + 4;
      goto LAB_008e1541;
    case 7:
      if ((int)pbVar3 - (int)pbVar6 < 4) {
        return -2;
      }
      iVar5 = (**(code **)(in_EAX + 0x160))();
      if (iVar5 != 0) goto LAB_008e153e;
      goto switchD_008e13dd_caseD_0;
    default:
      goto switchD_008e13dd_caseD_2;
    case 9:
    case 10:
    case 0x15:
switchD_008e14a2_caseD_9:
      pbVar7 = pbVar6;
      pbVar6 = pbVar7 + 1;
      if (pbVar6 == pbVar3) {
        return -1;
      }
      break;
    case 0xb:
      goto switchD_008e14a2_caseD_b;
    case 0x11:
      goto switchD_008e14a2_caseD_11;
    case 0x16:
    case 0x18:
      goto switchD_008e120f_caseD_16;
    case 0x1d:
      goto switchD_008e13dd_caseD_0;
    }
  } while( true );
switchD_008e14d4_caseD_5:
  if ((int)pbVar3 - (int)pbVar6 < 2) {
    return -2;
  }
  iVar5 = (**(code **)(in_EAX + 0x158))();
  if (iVar5 == 0) {
switchD_008e13dd_caseD_2:
    *param_3 = pbVar6;
    return 0;
  }
  pbVar7 = pbVar7 + 3;
LAB_008e1541:
  if (pbVar7 == pbVar3) {
    return -1;
  }
  goto LAB_008e11f4;
switchD_008e14a2_caseD_b:
  *param_3 = pbVar6 + 1;
  return 1;
switchD_008e13dd_caseD_0:
  *param_3 = pbVar6;
  return 0;
switchD_008e14a2_caseD_11:
  pbVar6 = pbVar8 + 1;
  if (pbVar6 == pbVar3) {
    return -1;
  }
  if (*pbVar6 == 0x3e) {
    *param_3 = pbVar8 + 2;
    return 3;
  }
switchD_008e14a2_caseD_c:
  *param_3 = pbVar6;
  return 0;
}



undefined4 __thiscall FUN_008e16c0(int param_1_00,byte *param_1,byte **param_2)

{
  char cVar1;
  bool bVar2;
  byte *in_EAX;
  undefined4 uVar3;
  byte *pbVar4;
  byte *pbVar5;
  byte *pbVar6;
  int iVar7;
  int iVar8;
  
  if (in_EAX == param_1) {
    return 0xffffffff;
  }
  switch(*(undefined *)(*in_EAX + 0x4c + param_1_00)) {
  case 5:
    if ((int)param_1 - (int)in_EAX < 2) {
      return 0xfffffffe;
    }
    iVar7 = (**(code **)(param_1_00 + 0x158))(param_1_00);
    if (iVar7 == 0) goto switchD_008e16f7_caseD_8;
    pbVar4 = in_EAX + 2;
    break;
  case 6:
    if ((int)param_1 - (int)in_EAX < 3) {
      return 0xfffffffe;
    }
    iVar7 = (**(code **)(param_1_00 + 0x15c))(param_1_00);
    if (iVar7 == 0) goto switchD_008e16f7_caseD_8;
    pbVar4 = in_EAX + 3;
    break;
  case 7:
    if ((int)param_1 - (int)in_EAX < 4) {
      return 0xfffffffe;
    }
    iVar7 = (**(code **)(param_1_00 + 0x160))(param_1_00);
    if (iVar7 == 0) goto switchD_008e16f7_caseD_8;
    pbVar4 = in_EAX + 4;
    break;
  case 0xf:
    uVar3 = FUN_008e0760(param_1,param_2);
    return uVar3;
  case 0x10:
    pbVar4 = in_EAX + 1;
    if (pbVar4 == param_1) {
      return 0xffffffff;
    }
    cVar1 = *(char *)(*pbVar4 + 0x4c + param_1_00);
    if (cVar1 == '\x14') {
      pbVar4 = in_EAX + 2;
      if ((int)param_1 - (int)pbVar4 < 6) {
        return 0xffffffff;
      }
      iVar7 = 0;
      do {
        if (*pbVar4 != (&DAT_00d3f6a0)[iVar7]) {
          *param_2 = pbVar4;
          return 0;
        }
        iVar7 = iVar7 + 1;
        pbVar4 = pbVar4 + 1;
      } while (iVar7 < 6);
      *param_2 = pbVar4;
      return 8;
    }
    in_EAX = pbVar4;
    if (cVar1 == '\x1b') {
      uVar3 = FUN_008e04b0(param_1,param_2);
      return uVar3;
    }
  default:
switchD_008e16f7_caseD_8:
    *param_2 = in_EAX;
    return 0;
  case 0x11:
    uVar3 = FUN_008e0cb0(param_1,param_2);
    return uVar3;
  case 0x16:
  case 0x18:
    pbVar4 = in_EAX + 1;
  }
  bVar2 = false;
  if (pbVar4 == param_1) {
    return 0xffffffff;
  }
  iVar7 = (int)param_1 - (int)pbVar4;
  do {
    pbVar5 = pbVar4;
    iVar8 = iVar7;
    pbVar6 = pbVar4;
    switch(*(undefined *)(*pbVar4 + 0x4c + param_1_00)) {
    case 5:
      if (iVar7 < 2) {
        return 0xfffffffe;
      }
      iVar8 = (**(code **)(param_1_00 + 0x14c))(param_1_00,pbVar4);
      if (iVar8 == 0) goto LAB_008e18de;
      pbVar4 = pbVar4 + 2;
      iVar7 = iVar7 + -2;
      break;
    case 6:
      if (iVar7 < 3) {
        return 0xfffffffe;
      }
      iVar8 = (**(code **)(param_1_00 + 0x150))(param_1_00,pbVar4);
      if (iVar8 == 0) goto switchD_008e185f_caseD_1d;
      pbVar4 = pbVar4 + 3;
      iVar7 = iVar7 + -3;
      break;
    case 7:
      if (iVar7 < 4) {
        return 0xfffffffe;
      }
      iVar7 = (**(code **)(param_1_00 + 0x154))(param_1_00,pbVar4);
      if (iVar7 == 0) goto switchD_008e17a7_caseD_8;
LAB_008e18c8:
      pbVar4 = pbVar5 + 4;
      iVar7 = iVar8 + -4;
      break;
    default:
      goto switchD_008e17a7_caseD_8;
    case 9:
    case 10:
    case 0x15:
      pbVar5 = pbVar4 + 1;
      if (pbVar5 == param_1) {
        return 0xffffffff;
      }
      goto LAB_008e1901;
    case 0xb:
      goto switchD_008e17a7_caseD_b;
    case 0x11:
      goto switchD_008e17a7_caseD_11;
    case 0x16:
    case 0x18:
    case 0x19:
    case 0x1a:
    case 0x1b:
switchD_008e17a7_caseD_16:
      pbVar4 = pbVar5 + 1;
      iVar7 = iVar8 + -1;
      break;
    case 0x17:
      if (bVar2) goto LAB_008e18de;
      pbVar5 = pbVar4 + 1;
      iVar8 = iVar7 + -1;
      bVar2 = true;
      if (pbVar5 == param_1) {
        return 0xffffffff;
      }
      switch(*(undefined *)(*pbVar5 + 0x4c + param_1_00)) {
      case 5:
        if (iVar8 < 2) {
          return 0xfffffffe;
        }
        iVar8 = (**(code **)(param_1_00 + 0x158))(param_1_00,pbVar5);
        if (iVar8 == 0) goto switchD_008e17a7_caseD_8;
        pbVar4 = pbVar4 + 3;
        iVar7 = iVar7 + -3;
        break;
      case 6:
        if (iVar8 < 3) {
          return 0xfffffffe;
        }
        iVar8 = (**(code **)(param_1_00 + 0x15c))(param_1_00,pbVar5);
        pbVar6 = pbVar5;
        if (iVar8 == 0) goto LAB_008e18de;
        pbVar4 = pbVar4 + 4;
        iVar7 = iVar7 + -4;
        break;
      case 7:
        if (iVar8 < 4) {
          return 0xfffffffe;
        }
        iVar7 = (**(code **)(param_1_00 + 0x160))(param_1_00,pbVar5);
        if (iVar7 != 0) goto LAB_008e18c8;
        goto switchD_008e185f_caseD_1d;
      default:
        goto switchD_008e17a7_caseD_8;
      case 0x16:
      case 0x18:
        goto switchD_008e17a7_caseD_16;
      case 0x1d:
        goto switchD_008e185f_caseD_1d;
      }
    }
    if (pbVar4 == param_1) {
      return 0xffffffff;
    }
  } while( true );
switchD_008e1918_caseD_9:
  pbVar5 = pbVar5 + 1;
  if (pbVar5 == param_1) {
    return 0xffffffff;
  }
LAB_008e1901:
  switch(*(undefined *)(*pbVar5 + 0x4c + param_1_00)) {
  case 5:
    if ((int)param_1 - (int)pbVar5 < 2) {
      return 0xfffffffe;
    }
    iVar7 = (**(code **)(param_1_00 + 0x158))(param_1_00,pbVar5);
    if (iVar7 == 0) goto switchD_008e17a7_caseD_8;
    pbVar5 = pbVar5 + 2;
    break;
  case 6:
    if ((int)param_1 - (int)pbVar5 < 3) {
      return 0xfffffffe;
    }
    iVar7 = (**(code **)(param_1_00 + 0x15c))(param_1_00,pbVar5);
    if (iVar7 == 0) goto switchD_008e17a7_caseD_8;
    pbVar5 = pbVar5 + 3;
    break;
  case 7:
    if ((int)param_1 - (int)pbVar5 < 4) {
      return 0xfffffffe;
    }
    iVar7 = (**(code **)(param_1_00 + 0x160))(param_1_00,pbVar5);
    if (iVar7 == 0) goto switchD_008e17a7_caseD_8;
    pbVar5 = pbVar5 + 4;
    break;
  default:
switchD_008e185f_caseD_1d:
    *param_2 = pbVar5;
    return 0;
  case 9:
  case 10:
  case 0x15:
    goto switchD_008e1918_caseD_9;
  case 0xb:
switchD_008e17a7_caseD_b:
    *param_2 = pbVar5 + 1;
    return 2;
  case 0x11:
switchD_008e17a7_caseD_11:
    pbVar6 = pbVar5 + 1;
    if (pbVar6 == param_1) {
      return 0xffffffff;
    }
    if (*pbVar6 == 0x3e) {
      *param_2 = pbVar5 + 2;
      return 4;
    }
LAB_008e18de:
    *param_2 = pbVar6;
    return 0;
  case 0x16:
  case 0x18:
    pbVar5 = pbVar5 + 1;
    break;
  case 0x1d:
switchD_008e17a7_caseD_8:
    *param_2 = pbVar5;
    return 0;
  }
  uVar3 = FUN_008e11c0(pbVar5,param_1,param_2);
  return uVar3;
}



undefined4 FUN_008e1b80(int param_1,byte *param_2,byte *param_3,byte **param_4)

{
  undefined4 uVar1;
  int iVar2;
  byte *pbVar3;
  byte *pbVar4;
  byte *pbVar5;
  int iVar6;
  
  if (param_2 == param_3) {
    return 0xfffffffc;
  }
  pbVar5 = param_2;
  switch(*(undefined *)(*param_2 + 0x4c + param_1)) {
  case 0:
  case 1:
  case 8:
    *param_4 = param_2;
    return 0;
  case 2:
    uVar1 = FUN_008e16c0(param_3,param_4);
    return uVar1;
  case 3:
    uVar1 = FUN_008e0fc0(param_3,param_4);
    return uVar1;
  case 4:
    pbVar5 = param_2 + 1;
    if (pbVar5 == param_3) {
      return 0xfffffffb;
    }
    if (*pbVar5 == 0x5d) {
      pbVar5 = param_2 + 2;
      if (pbVar5 == param_3) {
        return 0xfffffffb;
      }
      if (*pbVar5 == 0x3e) goto LAB_008e1c9c;
      pbVar5 = param_2 + 1;
    }
    break;
  case 5:
    if ((int)param_3 - (int)param_2 < 2) {
      return 0xfffffffe;
    }
    iVar6 = (**(code **)(param_1 + 0x164))(param_1,param_2);
    if (iVar6 != 0) {
LAB_008e1c9c:
      *param_4 = pbVar5;
      return 0;
    }
    pbVar5 = param_2 + 2;
    break;
  case 6:
    if ((int)param_3 - (int)param_2 < 3) {
      return 0xfffffffe;
    }
    iVar6 = (**(code **)(param_1 + 0x168))(param_1,param_2);
    if (iVar6 != 0) goto LAB_008e1c9c;
    pbVar5 = param_2 + 3;
    break;
  case 7:
    if ((int)param_3 - (int)param_2 < 4) {
      return 0xfffffffe;
    }
    iVar6 = (**(code **)(param_1 + 0x16c))(param_1,param_2);
    if (iVar6 != 0) goto LAB_008e1c9c;
    pbVar5 = param_2 + 4;
    break;
  case 9:
    pbVar5 = param_2 + 1;
    if (pbVar5 == param_3) {
      return 0xfffffffd;
    }
    if (*(char *)(*pbVar5 + 0x4c + param_1) == '\n') {
      pbVar5 = param_2 + 2;
    }
    *param_4 = pbVar5;
    return 7;
  case 10:
    *param_4 = param_2 + 1;
    return 7;
  default:
    pbVar5 = param_2 + 1;
  }
  if (pbVar5 != param_3) {
    pbVar3 = pbVar5 + 2;
    pbVar4 = pbVar5 + 1;
    iVar6 = (int)param_3 - (int)pbVar5;
    do {
      switch(*(undefined *)(*pbVar5 + 0x4c + param_1)) {
      case 0:
      case 1:
      case 2:
      case 3:
      case 8:
      case 9:
      case 10:
switchD_008e1cec_caseD_0:
        *param_4 = pbVar5;
        return 6;
      case 4:
        if (pbVar4 == param_3) goto switchD_008e1cec_caseD_0;
        if (*pbVar4 == 0x5d) {
          if (pbVar3 == param_3) goto switchD_008e1cec_caseD_0;
          if (*pbVar3 == 0x3e) {
            *param_4 = pbVar5 + 2;
            return 0;
          }
        }
      default:
        pbVar5 = pbVar5 + 1;
        iVar6 = iVar6 + -1;
        pbVar4 = pbVar4 + 1;
        pbVar3 = pbVar3 + 1;
        break;
      case 5:
        if ((iVar6 < 2) || (iVar2 = (**(code **)(param_1 + 0x164))(param_1,pbVar5), iVar2 != 0)) {
          *param_4 = pbVar5;
          return 6;
        }
        pbVar5 = pbVar5 + 2;
        iVar6 = iVar6 + -2;
        pbVar4 = pbVar4 + 2;
        pbVar3 = pbVar3 + 2;
        break;
      case 6:
        if ((iVar6 < 3) || (iVar2 = (**(code **)(param_1 + 0x168))(param_1,pbVar5), iVar2 != 0))
        goto switchD_008e1cec_caseD_0;
        pbVar5 = pbVar5 + 3;
        iVar6 = iVar6 + -3;
        pbVar4 = pbVar4 + 3;
        pbVar3 = pbVar3 + 3;
        break;
      case 7:
        if ((iVar6 < 4) || (iVar2 = (**(code **)(param_1 + 0x16c))(param_1,pbVar5), iVar2 != 0))
        goto LAB_008e1d90;
        pbVar5 = pbVar5 + 4;
        iVar6 = iVar6 + -4;
        pbVar4 = pbVar4 + 4;
        pbVar3 = pbVar3 + 4;
      }
    } while (pbVar5 != param_3);
  }
LAB_008e1d90:
  *param_4 = pbVar5;
  return 6;
}



undefined4 FUN_008e1e20(byte *param_1,byte **param_2)

{
  byte *in_EAX;
  int iVar1;
  int unaff_EBX;
  byte *pbVar2;
  int iVar3;
  
  if (in_EAX == param_1) {
    return 0xffffffff;
  }
  switch(*(undefined *)(*in_EAX + 0x4c + unaff_EBX)) {
  case 5:
    if ((int)param_1 - (int)in_EAX < 2) {
      return 0xfffffffe;
    }
    iVar3 = (**(code **)(unaff_EBX + 0x158))();
    if (iVar3 == 0) goto switchD_008e1e4d_caseD_1d;
    pbVar2 = in_EAX + 2;
    break;
  case 6:
    if ((int)param_1 - (int)in_EAX < 3) {
      return 0xfffffffe;
    }
    iVar3 = (**(code **)(unaff_EBX + 0x15c))();
    if (iVar3 == 0) goto switchD_008e1e4d_caseD_1d;
    pbVar2 = in_EAX + 3;
    break;
  case 7:
    if ((int)param_1 - (int)in_EAX < 4) {
      return 0xfffffffe;
    }
    iVar3 = (**(code **)(unaff_EBX + 0x160))();
    if (iVar3 == 0) goto switchD_008e1e4d_caseD_1d;
    pbVar2 = in_EAX + 4;
    break;
  default:
    *param_2 = in_EAX;
    return 0;
  case 9:
  case 10:
  case 0x15:
  case 0x1e:
    *param_2 = in_EAX;
    return 0x16;
  case 0x16:
  case 0x18:
    pbVar2 = in_EAX + 1;
    break;
  case 0x1d:
switchD_008e1e4d_caseD_1d:
    *param_2 = in_EAX;
    return 0;
  }
  if (pbVar2 != param_1) {
    iVar3 = (int)param_1 - (int)pbVar2;
    do {
      switch(*(undefined *)(*pbVar2 + 0x4c + unaff_EBX)) {
      case 5:
        if (iVar3 < 2) {
          return 0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x14c))();
        if (iVar1 == 0) {
          *param_2 = pbVar2;
          return 0;
        }
        pbVar2 = pbVar2 + 2;
        iVar3 = iVar3 + -2;
        break;
      case 6:
        if (iVar3 < 3) {
          return 0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x150))();
        if (iVar1 == 0) goto switchD_008e1eed_caseD_8;
        pbVar2 = pbVar2 + 3;
        iVar3 = iVar3 + -3;
        break;
      case 7:
        if (iVar3 < 4) {
          return 0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x154))();
        if (iVar1 == 0) goto switchD_008e1eed_caseD_1d;
        pbVar2 = pbVar2 + 4;
        iVar3 = iVar3 + -4;
        break;
      default:
switchD_008e1eed_caseD_8:
        *param_2 = pbVar2;
        return 0;
      case 0x12:
        *param_2 = pbVar2 + 1;
        return 0x1c;
      case 0x16:
      case 0x18:
      case 0x19:
      case 0x1a:
      case 0x1b:
        pbVar2 = pbVar2 + 1;
        iVar3 = iVar3 + -1;
        break;
      case 0x1d:
switchD_008e1eed_caseD_1d:
        *param_2 = pbVar2;
        return 0;
      }
    } while (pbVar2 != param_1);
  }
  return 0xffffffff;
}



undefined4 FUN_008e2030(byte *param_1,byte **param_2)

{
  byte *in_EAX;
  int iVar1;
  int unaff_EBX;
  byte *pbVar2;
  int iVar3;
  
  if (in_EAX == param_1) {
    return 0xffffffff;
  }
  switch(*(undefined *)(*in_EAX + 0x4c + unaff_EBX)) {
  case 5:
    if ((int)param_1 - (int)in_EAX < 2) {
      return 0xfffffffe;
    }
    iVar3 = (**(code **)(unaff_EBX + 0x158))();
    if (iVar3 == 0) goto switchD_008e2059_caseD_8;
    pbVar2 = in_EAX + 2;
    break;
  case 6:
    if ((int)param_1 - (int)in_EAX < 3) {
      return 0xfffffffe;
    }
    iVar3 = (**(code **)(unaff_EBX + 0x15c))();
    if (iVar3 == 0) goto switchD_008e2059_caseD_8;
    pbVar2 = in_EAX + 3;
    break;
  case 7:
    if ((int)param_1 - (int)in_EAX < 4) {
      return 0xfffffffe;
    }
    iVar3 = (**(code **)(unaff_EBX + 0x160))();
    if (iVar3 == 0) goto switchD_008e2059_caseD_8;
    pbVar2 = in_EAX + 4;
    break;
  default:
switchD_008e2059_caseD_8:
    *param_2 = in_EAX;
    return 0;
  case 0x16:
  case 0x18:
    pbVar2 = in_EAX + 1;
  }
  if (pbVar2 != param_1) {
    iVar3 = (int)param_1 - (int)pbVar2;
    do {
      switch(*(undefined *)(*pbVar2 + 0x4c + unaff_EBX)) {
      case 5:
        if (iVar3 < 2) {
          return 0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x14c))();
        if (iVar1 == 0) {
          *param_2 = pbVar2;
          return 0;
        }
        pbVar2 = pbVar2 + 2;
        iVar3 = iVar3 + -2;
        break;
      case 6:
        if (iVar3 < 3) {
          return 0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x150))();
        if (iVar1 == 0) goto switchD_008e20fb_caseD_8;
        pbVar2 = pbVar2 + 3;
        iVar3 = iVar3 + -3;
        break;
      case 7:
        if (iVar3 < 4) {
          return 0xfffffffe;
        }
        iVar1 = (**(code **)(unaff_EBX + 0x154))();
        if (iVar1 == 0) goto switchD_008e20fb_caseD_1d;
        pbVar2 = pbVar2 + 4;
        iVar3 = iVar3 + -4;
        break;
      default:
switchD_008e20fb_caseD_8:
        *param_2 = pbVar2;
        return 0;
      case 9:
      case 10:
      case 0xb:
      case 0x15:
      case 0x1e:
      case 0x20:
      case 0x24:
        *param_2 = pbVar2;
        return 0x14;
      case 0x16:
      case 0x18:
      case 0x19:
      case 0x1a:
      case 0x1b:
        pbVar2 = pbVar2 + 1;
        iVar3 = iVar3 + -1;
        break;
      case 0x1d:
switchD_008e20fb_caseD_1d:
        *param_2 = pbVar2;
        return 0;
      }
    } while (pbVar2 != param_1);
  }
  return 0xffffffec;
}



undefined4 FUN_008e2220(uint param_1,byte *param_2,byte **param_3)

{
  byte *in_EAX;
  uint uVar1;
  int iVar2;
  int unaff_EBX;
  int iVar3;
  
  if (in_EAX != param_2) {
    iVar3 = (int)param_2 - (int)in_EAX;
    do {
      uVar1 = (uint)*(byte *)(*in_EAX + 0x4c + unaff_EBX);
      switch(uVar1) {
      case 0:
      case 1:
      case 8:
switchD_008e2249_caseD_0:
        *param_3 = in_EAX;
        return 0;
      default:
        in_EAX = in_EAX + 1;
        iVar3 = iVar3 + -1;
        break;
      case 5:
        if (iVar3 < 2) {
          return 0xfffffffe;
        }
        iVar2 = (**(code **)(unaff_EBX + 0x164))();
        if (iVar2 != 0) goto switchD_008e2249_caseD_0;
        in_EAX = in_EAX + 2;
        iVar3 = iVar3 + -2;
        break;
      case 6:
        if (iVar3 < 3) {
          return 0xfffffffe;
        }
        iVar2 = (**(code **)(unaff_EBX + 0x168))();
        if (iVar2 != 0) {
          *param_3 = in_EAX;
          return 0;
        }
        in_EAX = in_EAX + 3;
        iVar3 = iVar3 + -3;
        break;
      case 7:
        if (iVar3 < 4) {
          return 0xfffffffe;
        }
        iVar2 = (**(code **)(unaff_EBX + 0x16c))();
        if (iVar2 != 0) {
          *param_3 = in_EAX;
          return 0;
        }
        in_EAX = in_EAX + 4;
        iVar3 = iVar3 + -4;
        break;
      case 0xc:
      case 0xd:
        in_EAX = in_EAX + 1;
        iVar3 = iVar3 + -1;
        if (uVar1 == param_1) {
          if (in_EAX != param_2) {
            *param_3 = in_EAX;
            switch(*(undefined *)(*in_EAX + 0x4c + unaff_EBX)) {
            case 9:
            case 10:
            case 0xb:
            case 0x14:
            case 0x15:
            case 0x1e:
              return 0x1b;
            default:
              return 0;
            }
          }
          return 0xffffffe5;
        }
      }
    } while (in_EAX != param_2);
  }
  return 0xffffffff;
}



int FUN_008e2380(int param_1,byte *param_2,byte *param_3,byte **param_4)

{
  char cVar1;
  int iVar2;
  byte *pbVar3;
  int iVar4;
  int iVar5;
  
  if (param_2 == param_3) {
    return -4;
  }
  pbVar3 = param_2;
  switch(*(undefined *)(*param_2 + 0x4c + param_1)) {
  case 2:
    pbVar3 = param_2 + 1;
    if (pbVar3 == param_3) {
      return -1;
    }
    switch(*(undefined *)(*pbVar3 + 0x4c + param_1)) {
    case 5:
    case 6:
    case 7:
    case 0x16:
    case 0x18:
    case 0x1d:
      *param_4 = param_2;
      return 0x1d;
    case 0xf:
      iVar2 = FUN_008e0760(param_3,param_4);
      return iVar2;
    case 0x10:
      iVar2 = FUN_008e05f0();
      return iVar2;
    }
    goto switchD_008e257b_caseD_c;
  default:
switchD_008e23b7_caseD_3:
    *param_4 = pbVar3;
    return 0;
  case 4:
    pbVar3 = param_2 + 1;
    if (pbVar3 == param_3) {
      return -0x1a;
    }
    if (*pbVar3 == 0x5d) {
      if (param_2 + 2 == param_3) {
        return -1;
      }
      if (param_2[2] == 0x3e) {
        *param_4 = param_2 + 3;
        return 0x22;
      }
    }
    *param_4 = pbVar3;
    return 0x1a;
  case 5:
    if ((int)param_3 - (int)param_2 < 2) {
      return -2;
    }
    iVar2 = (**(code **)(param_1 + 0x158))(param_1,param_2);
    if (iVar2 != 0) {
      param_2 = param_2 + 2;
      iVar2 = 0x12;
      goto LAB_008e26e0;
    }
    iVar2 = (**(code **)(param_1 + 0x14c))(param_1,param_2);
    if (iVar2 == 0) goto switchD_008e23b7_caseD_3;
    param_2 = param_2 + 2;
    break;
  case 6:
    if ((int)param_3 - (int)param_2 < 3) {
      return -2;
    }
    iVar2 = (**(code **)(param_1 + 0x15c))(param_1,param_2);
    if (iVar2 != 0) {
      param_2 = param_2 + 3;
      iVar2 = 0x12;
      goto LAB_008e26e0;
    }
    iVar2 = (**(code **)(param_1 + 0x150))(param_1,param_2);
    if (iVar2 == 0) {
switchD_008e27ce_caseD_1d:
      *param_4 = pbVar3;
      return 0;
    }
    param_2 = param_2 + 3;
    break;
  case 7:
    if ((int)param_3 - (int)param_2 < 4) {
      return -2;
    }
    iVar2 = (**(code **)(param_1 + 0x160))(param_1,param_2);
    if (iVar2 != 0) {
      param_2 = param_2 + 4;
      iVar2 = 0x12;
      goto LAB_008e26e0;
    }
    iVar2 = (**(code **)(param_1 + 0x154))(param_1,param_2);
    if (iVar2 == 0) goto switchD_008e257b_caseD_c;
    param_2 = param_2 + 4;
    break;
  case 9:
    if (param_2 + 1 == param_3) {
      *param_4 = param_3;
      return -0xf;
    }
  case 10:
  case 0x15:
    pbVar3 = param_2 + 1;
    if (pbVar3 != param_3) {
      param_2 = param_2 + 2;
      do {
        cVar1 = *(char *)(*pbVar3 + 0x4c + param_1);
        if (cVar1 == '\t') {
          if (param_2 == param_3) goto LAB_008e2497;
        }
        else if ((cVar1 != '\n') && (cVar1 != '\x15')) {
LAB_008e2497:
          *param_4 = pbVar3;
          return 0xf;
        }
        pbVar3 = pbVar3 + 1;
        param_2 = param_2 + 1;
      } while (pbVar3 != param_3);
    }
    *param_4 = pbVar3;
    return 0xf;
  case 0xb:
    *param_4 = param_2 + 1;
    return 0x11;
  case 0xc:
    iVar2 = FUN_008e2220(0xc,param_3,param_4);
    return iVar2;
  case 0xd:
    iVar2 = FUN_008e2220(0xd,param_3,param_4);
    return iVar2;
  case 0x13:
    iVar2 = FUN_008e2030(param_3,param_4);
    return iVar2;
  case 0x14:
    *param_4 = param_2 + 1;
    return 0x19;
  case 0x16:
  case 0x18:
    iVar2 = 0x12;
    param_2 = param_2 + 1;
    goto LAB_008e26e0;
  case 0x17:
  case 0x19:
  case 0x1a:
  case 0x1b:
    param_2 = param_2 + 1;
    break;
  case 0x1e:
    iVar2 = FUN_008e1e20(param_3,param_4);
    return iVar2;
  case 0x1f:
    *param_4 = param_2 + 1;
    return 0x17;
  case 0x20:
    pbVar3 = param_2 + 1;
    if (pbVar3 == param_3) {
      return -0x18;
    }
    switch(*(undefined *)(*pbVar3 + 0x4c + param_1)) {
    case 9:
    case 10:
    case 0xb:
    case 0x15:
    case 0x20:
    case 0x23:
    case 0x24:
      *param_4 = pbVar3;
      return 0x18;
    case 0xf:
      *param_4 = param_2 + 2;
      return 0x23;
    case 0x21:
      *param_4 = param_2 + 2;
      return 0x24;
    case 0x22:
      *param_4 = param_2 + 2;
      return 0x25;
    }
switchD_008e257b_caseD_c:
    *param_4 = pbVar3;
    return 0;
  case 0x23:
    *param_4 = param_2 + 1;
    return 0x26;
  case 0x24:
    *param_4 = param_2 + 1;
    return 0x15;
  }
  iVar2 = 0x13;
LAB_008e26e0:
  if (param_2 != param_3) {
    iVar4 = (int)param_3 - (int)param_2;
    do {
      pbVar3 = param_2;
      iVar5 = iVar4;
      switch(*(undefined *)(*param_2 + 0x4c + param_1)) {
      case 5:
        if (iVar4 < 2) {
          return -2;
        }
        iVar5 = (**(code **)(param_1 + 0x14c))(param_1,param_2);
        if (iVar5 == 0) goto switchD_008e23b7_caseD_3;
        pbVar3 = param_2 + 2;
        iVar5 = iVar4 + -2;
        break;
      case 6:
        if (iVar4 < 3) {
          return -2;
        }
        iVar5 = (**(code **)(param_1 + 0x150))(param_1,param_2);
        if (iVar5 == 0) goto switchD_008e27ce_caseD_1d;
        pbVar3 = param_2 + 3;
        iVar5 = iVar4 + -3;
        break;
      case 7:
        if (iVar4 < 4) {
          return -2;
        }
        iVar5 = (**(code **)(param_1 + 0x154))(param_1,param_2);
        if (iVar5 == 0) goto switchD_008e257b_caseD_c;
        pbVar3 = param_2 + 4;
        iVar5 = iVar4 + -4;
        break;
      default:
        goto switchD_008e257b_caseD_c;
      case 9:
      case 10:
      case 0xb:
      case 0x14:
      case 0x15:
      case 0x1e:
      case 0x20:
      case 0x23:
      case 0x24:
        *param_4 = param_2;
        return iVar2;
      case 0xf:
        if (iVar2 != 0x13) {
          *param_4 = param_2 + 1;
          return 0x1e;
        }
        goto switchD_008e23b7_caseD_3;
      case 0x16:
      case 0x18:
      case 0x19:
      case 0x1a:
      case 0x1b:
switchD_008e270b_caseD_16:
        pbVar3 = pbVar3 + 1;
        iVar5 = iVar5 + -1;
        break;
      case 0x17:
        pbVar3 = param_2 + 1;
        iVar5 = iVar4 + -1;
        if (iVar2 == 0x12) {
          if (pbVar3 == param_3) {
            return -1;
          }
          iVar2 = 0x29;
          switch(*(undefined *)(*pbVar3 + 0x4c + param_1)) {
          case 5:
            if (iVar5 < 2) {
              return -2;
            }
            iVar5 = (**(code **)(param_1 + 0x14c))(param_1,pbVar3);
            if (iVar5 == 0) goto switchD_008e257b_caseD_c;
            pbVar3 = param_2 + 3;
            iVar5 = iVar4 + -3;
            break;
          case 6:
            if (iVar5 < 3) {
              return -2;
            }
            iVar5 = (**(code **)(param_1 + 0x150))(param_1,pbVar3);
            if (iVar5 == 0) goto switchD_008e23b7_caseD_3;
            pbVar3 = param_2 + 4;
            iVar5 = iVar4 + -4;
            break;
          case 7:
            if (iVar5 < 4) {
              return -2;
            }
            iVar5 = (**(code **)(param_1 + 0x154))(param_1,pbVar3);
            if (iVar5 == 0) goto switchD_008e27ce_caseD_1d;
            pbVar3 = param_2 + 5;
            iVar5 = iVar4 + -5;
            break;
          default:
            goto switchD_008e27ce_caseD_8;
          case 0x16:
          case 0x18:
          case 0x19:
          case 0x1a:
          case 0x1b:
            goto switchD_008e270b_caseD_16;
          case 0x1d:
            goto switchD_008e27ce_caseD_1d;
          }
        }
        else if (iVar2 == 0x29) {
switchD_008e27ce_caseD_8:
          iVar2 = 0x13;
        }
        break;
      case 0x21:
        if (iVar2 != 0x13) {
          *param_4 = param_2 + 1;
          return 0x1f;
        }
        goto switchD_008e27ce_caseD_1d;
      case 0x22:
        if (iVar2 != 0x13) {
          *param_4 = param_2 + 1;
          return 0x20;
        }
        goto switchD_008e257b_caseD_c;
      }
      param_2 = pbVar3;
      iVar4 = iVar5;
    } while (pbVar3 != param_3);
  }
  return -iVar2;
}



void FUN_008e3570(undefined4 param_1,byte **param_2,byte *param_3,byte **param_4,byte *param_5)

{
  byte bVar1;
  byte *pbVar2;
  
  pbVar2 = *param_2;
  do {
    if (pbVar2 == param_3) {
      return;
    }
    bVar1 = **param_2;
    if ((char)bVar1 < '\0') {
      if ((int)param_5 - (int)*param_4 < 2) {
        return;
      }
      **param_4 = bVar1 >> 6 | 0xc0;
      *param_4 = *param_4 + 1;
      pbVar2 = *param_4;
      bVar1 = bVar1 & 0x3f | 0x80;
    }
    else {
      pbVar2 = *param_4;
      if (pbVar2 == param_5) {
        return;
      }
    }
    *pbVar2 = bVar1;
    *param_4 = *param_4 + 1;
    *param_2 = *param_2 + 1;
    pbVar2 = *param_2;
  } while( true );
}



undefined4 __fastcall FUN_008e3640(byte param_1)

{
  undefined in_AL;
  
  switch(in_AL) {
  case 0xd8:
  case 0xd9:
  case 0xda:
  case 0xdb:
    return 7;
  case 0xdc:
  case 0xdd:
  case 0xde:
  case 0xdf:
    return 8;
  case 0xff:
    if (0xfd < param_1) {
      return 0;
    }
  }
  return 0x1d;
}



undefined4 __fastcall FUN_008e3c20(undefined4 param_1_00,byte *param_2,byte **param_1)

{
  byte *pbVar1;
  int unaff_EBX;
  int iVar2;
  byte *unaff_EDI;
  undefined8 uVar3;
  
  if (param_2 != unaff_EDI) {
    if ((param_2[1] != 0) || (*param_2 != 0x2d)) {
switchD_008e3c6c_caseD_0:
      *param_1 = param_2;
      return 0;
    }
    pbVar1 = param_2 + 2;
    if (pbVar1 != unaff_EDI) {
      iVar2 = (int)unaff_EDI - (int)pbVar1;
      do {
        if (pbVar1[1] == 0) {
          uVar3 = CONCAT44(pbVar1,(uint)*(byte *)(*pbVar1 + 0x4c + unaff_EBX));
        }
        else {
          uVar3 = FUN_008e3640();
        }
        param_2 = (byte *)((ulonglong)uVar3 >> 0x20);
        switch((int)uVar3) {
        case 0:
        case 1:
        case 8:
          goto switchD_008e3c6c_caseD_0;
        case 5:
          if (iVar2 < 2) {
            return 0xfffffffe;
          }
        default:
          pbVar1 = param_2 + 2;
          iVar2 = iVar2 + -2;
          break;
        case 6:
          if (iVar2 < 3) {
            return 0xfffffffe;
          }
          pbVar1 = param_2 + 3;
          iVar2 = iVar2 + -3;
          break;
        case 7:
          if (iVar2 < 4) {
            return 0xfffffffe;
          }
          pbVar1 = param_2 + 4;
          iVar2 = iVar2 + -4;
          break;
        case 0x1b:
          pbVar1 = param_2 + 2;
          iVar2 = iVar2 + -2;
          if (pbVar1 == unaff_EDI) {
            return 0xffffffff;
          }
          if ((param_2[3] == 0) && (*pbVar1 == 0x2d)) {
            pbVar1 = param_2 + 4;
            if (pbVar1 == unaff_EDI) {
              return 0xffffffff;
            }
            if ((param_2[5] == 0) && (*pbVar1 == 0x3e)) {
              *param_1 = param_2 + 6;
              return 0xd;
            }
            *param_1 = pbVar1;
            return 0;
          }
        }
        if (pbVar1 == unaff_EDI) {
          return 0xffffffff;
        }
      } while( true );
    }
  }
  return 0xffffffff;
}



undefined4 __fastcall FUN_008e3d30(int param_1,byte *param_2)

{
  byte *in_EAX;
  uint uVar1;
  undefined4 uVar2;
  byte **unaff_ESI;
  undefined8 uVar3;
  
  if (param_2 == in_EAX) {
    return 0xffffffff;
  }
  if (param_2[1] == 0) {
    uVar1 = (uint)*(byte *)(*param_2 + 0x4c + param_1);
  }
  else {
    uVar3 = FUN_008e3640();
    param_2 = (byte *)((ulonglong)uVar3 >> 0x20);
    uVar1 = (uint)uVar3;
  }
  switch(uVar1) {
  case 0x14:
    *unaff_ESI = param_2 + 2;
    return 0x21;
  default:
switchD_008e3d64_caseD_15:
    *unaff_ESI = param_2;
    return 0;
  case 0x16:
  case 0x18:
    param_2 = param_2 + 2;
    if (param_2 == in_EAX) {
      return 0xffffffff;
    }
    break;
  case 0x1b:
    uVar2 = FUN_008e3c20();
    return uVar2;
  }
LAB_008e3d90:
  if (param_2[1] == 0) {
    uVar3 = CONCAT44(param_2,(uint)*(byte *)(*param_2 + 0x4c + param_1));
  }
  else {
    uVar3 = FUN_008e3640();
  }
  param_2 = (byte *)((ulonglong)uVar3 >> 0x20);
  switch((int)uVar3) {
  case 9:
  case 10:
  case 0x15:
    break;
  default:
    goto switchD_008e3d64_caseD_15;
  case 0x16:
  case 0x18:
    goto switchD_008e3db7_caseD_16;
  case 0x1e:
    if (param_2 + 2 == in_EAX) {
      return 0xffffffff;
    }
    if (param_2[3] == 0) {
      uVar3 = CONCAT44(param_2,(uint)*(byte *)(param_2[2] + 0x4c + param_1));
    }
    else {
      uVar3 = FUN_008e3640();
    }
    param_2 = (byte *)((ulonglong)uVar3 >> 0x20);
    switch((int)uVar3) {
    case 9:
    case 10:
    case 0x15:
    case 0x1e:
      goto switchD_008e3d64_caseD_15;
    }
  }
  *unaff_ESI = param_2;
  return 0x10;
switchD_008e3db7_caseD_16:
  param_2 = param_2 + 2;
  if (param_2 == in_EAX) {
    return 0xffffffff;
  }
  goto LAB_008e3d90;
}



undefined4 __fastcall FUN_008e3e80(int param_1)

{
  bool bVar1;
  char *in_EAX;
  undefined4 *unaff_ESI;
  
  bVar1 = false;
  *unaff_ESI = 0xb;
  if ((param_1 - (int)in_EAX == 6) && (in_EAX[1] == '\0')) {
    if (*in_EAX == 'X') {
      bVar1 = true;
    }
    else if (*in_EAX != 'x') {
      return 1;
    }
    if (in_EAX[3] == '\0') {
      if (in_EAX[2] == 'M') {
        bVar1 = true;
      }
      else if (in_EAX[2] != 'm') {
        return 1;
      }
      if (in_EAX[5] == '\0') {
        if (in_EAX[4] == 'L') {
          return 0;
        }
        if (in_EAX[4] == 'l') {
          if (bVar1) {
            return 0;
          }
          *unaff_ESI = 0xc;
        }
      }
    }
  }
  return 1;
}



byte * __thiscall FUN_008e3f00(byte *param_1_00,int param_1,byte **param_2)

{
  byte *in_EAX;
  int iVar1;
  uint uVar2;
  uint extraout_ECX;
  uint extraout_ECX_00;
  byte *pbVar3;
  byte *pbVar4;
  ulonglong uVar5;
  longlong lVar6;
  
  if (param_1_00 == in_EAX) {
    return (byte *)0xffffffff;
  }
  uVar2 = (uint)*param_1_00;
  if (param_1_00[1] == 0) {
    uVar5 = (ulonglong)*(byte *)(uVar2 + 0x4c + param_1);
  }
  else {
    uVar5 = FUN_008e3640();
    uVar2 = extraout_ECX;
  }
  pbVar3 = param_1_00;
  switch((int)uVar5) {
  case 5:
    if ((int)in_EAX - (int)param_1_00 < 2) {
      return (byte *)0xfffffffe;
    }
    break;
  case 6:
    if ((int)in_EAX - (int)param_1_00 < 3) {
      return (byte *)0xfffffffe;
    }
switchD_008e407e_caseD_0:
    *param_2 = pbVar3;
    return (byte *)0x0;
  case 7:
    pbVar4 = param_1_00;
    if ((int)in_EAX - (int)param_1_00 < 4) {
      return (byte *)0xfffffffe;
    }
switchD_008e3faf_caseD_8:
    *param_2 = pbVar4;
    return (byte *)0x0;
  case 0x16:
  case 0x18:
switchD_008e3f4c_caseD_16:
    pbVar3 = param_1_00 + 2;
    if (pbVar3 == in_EAX) {
      return (byte *)0xffffffff;
    }
    do {
      uVar2 = (uint)*pbVar3;
      if (pbVar3[1] == 0) {
        uVar5 = (ulonglong)*(byte *)(uVar2 + 0x4c + param_1);
      }
      else {
        uVar5 = FUN_008e3640();
        uVar2 = extraout_ECX_00;
      }
      pbVar4 = pbVar3;
      switch((int)uVar5) {
      case 5:
        if ((int)in_EAX - (int)pbVar3 < 2) {
          return (byte *)0xfffffffe;
        }
        goto switchD_008e407e_caseD_0;
      case 6:
        if ((int)in_EAX - (int)pbVar3 < 3) {
          return (byte *)0xfffffffe;
        }
        goto switchD_008e3faf_caseD_8;
      case 7:
        if ((int)in_EAX - (int)pbVar3 < 4) {
          return (byte *)0xfffffffe;
        }
        goto switchD_008e3f4c_caseD_8;
      default:
        goto switchD_008e3faf_caseD_8;
      case 9:
      case 10:
      case 0x15:
        iVar1 = FUN_008e3e80();
        if (iVar1 == 0) goto switchD_008e407e_caseD_0;
        pbVar3 = pbVar3 + 2;
        if (pbVar3 == in_EAX) {
          return (byte *)0xffffffff;
        }
        iVar1 = (int)in_EAX - (int)pbVar3;
        goto LAB_008e4056;
      case 0xf:
        iVar1 = FUN_008e3e80();
        if (iVar1 == 0) goto switchD_008e3f4c_caseD_8;
        pbVar4 = pbVar3 + 2;
        if (pbVar4 == in_EAX) {
          return (byte *)0xffffffff;
        }
        if ((pbVar3[3] == 0) && (*pbVar4 == 0x3e)) {
          *param_2 = pbVar3 + 4;
          return param_1_00;
        }
        goto switchD_008e3faf_caseD_8;
      case 0x1d:
        if ((*(uint *)(&DAT_00d3efa0 +
                      (((uVar2 & 0xff) >> 5) +
                      (uint)(byte)(&DAT_00d3f5a0)[(uint)(uVar5 >> 0x20) & 0xff] * 8) * 4) &
            1 << ((byte)uVar2 & 0x1f)) == 0) goto switchD_008e3f4c_caseD_8;
      case 0x16:
      case 0x18:
      case 0x19:
      case 0x1a:
      case 0x1b:
        pbVar3 = pbVar3 + 2;
        if (pbVar3 == in_EAX) {
          return (byte *)0xffffffff;
        }
      }
    } while( true );
  case 0x1d:
    if ((*(uint *)(&DAT_00d3efa0 +
                  (((uVar2 & 0xff) >> 5) +
                  (uint)(byte)(&DAT_00d3f4a0)[(uint)(uVar5 >> 0x20) & 0xff] * 8) * 4) &
        1 << ((byte)uVar2 & 0x1f)) != 0) goto switchD_008e3f4c_caseD_16;
  }
switchD_008e3f4c_caseD_8:
  *param_2 = pbVar3;
  return (byte *)0x0;
LAB_008e4056:
  if (pbVar3[1] == 0) {
    lVar6 = CONCAT44(iVar1,(uint)*(byte *)(*pbVar3 + 0x4c + param_1));
  }
  else {
    lVar6 = FUN_008e3640();
  }
  iVar1 = (int)((ulonglong)lVar6 >> 0x20);
  switch((int)lVar6) {
  case 0:
  case 1:
  case 8:
    goto switchD_008e407e_caseD_0;
  case 5:
    if (lVar6 < 0x200000000) {
      return (byte *)0xfffffffe;
    }
  default:
    pbVar4 = pbVar3 + 2;
    iVar1 = iVar1 + -2;
    break;
  case 6:
    if (lVar6 < 0x300000000) {
      return (byte *)0xfffffffe;
    }
    pbVar4 = pbVar3 + 3;
    iVar1 = iVar1 + -3;
    break;
  case 7:
    if (lVar6 < 0x400000000) {
      return (byte *)0xfffffffe;
    }
    pbVar4 = pbVar3 + 4;
    iVar1 = iVar1 + -4;
    break;
  case 0xf:
    pbVar4 = pbVar3 + 2;
    iVar1 = iVar1 + -2;
    if (pbVar4 == in_EAX) {
      return (byte *)0xffffffff;
    }
    if ((pbVar3[3] == 0) && (*pbVar4 == 0x3e)) {
      *param_2 = pbVar3 + 4;
      return param_1_00;
    }
  }
  pbVar3 = pbVar4;
  if (pbVar4 == in_EAX) {
    return (byte *)0xffffffff;
  }
  goto LAB_008e4056;
}



undefined4 __fastcall FUN_008e4220(char *param_1)

{
  int in_EAX;
  int iVar1;
  char **unaff_ESI;
  
  if (in_EAX - (int)param_1 < 0xc) {
    return 0xffffffff;
  }
  iVar1 = 0;
  while ((param_1[1] == '\0' && (*param_1 == "CDATA["[iVar1]))) {
    iVar1 = iVar1 + 1;
    param_1 = param_1 + 2;
    if (5 < iVar1) {
      *unaff_ESI = param_1;
      return 8;
    }
  }
  *unaff_ESI = param_1;
  return 0;
}



undefined4 __fastcall FUN_008e4450(undefined4 param_1_00,byte *param_2,byte **param_1)

{
  byte bVar1;
  byte *in_EAX;
  uint uVar2;
  uint uVar3;
  uint extraout_ECX;
  uint extraout_ECX_00;
  int unaff_EDI;
  undefined8 uVar4;
  
  if (param_2 == in_EAX) {
    return 0xffffffff;
  }
  uVar3 = (uint)*param_2;
  bVar1 = param_2[1];
  if (bVar1 == 0) {
    uVar2 = (uint)*(byte *)(uVar3 + 0x4c + unaff_EDI);
  }
  else {
    uVar4 = FUN_008e3640();
    param_2 = (byte *)((ulonglong)uVar4 >> 0x20);
    uVar2 = (uint)uVar4;
    uVar3 = extraout_ECX;
  }
  switch(uVar2) {
  case 5:
switchD_008e44fd_caseD_5:
    if ((int)in_EAX - (int)param_2 < 2) {
      return 0xfffffffe;
    }
    break;
  case 6:
switchD_008e44fd_caseD_6:
    if ((int)in_EAX - (int)param_2 < 3) {
      return 0xfffffffe;
    }
    break;
  case 7:
switchD_008e44fd_caseD_7:
    if ((int)in_EAX - (int)param_2 < 4) {
      return 0xfffffffe;
    }
    break;
  case 0x16:
  case 0x18:
joined_r0x008e44c8:
    param_2 = param_2 + 2;
    if (param_2 == in_EAX) {
      return 0xffffffff;
    }
    bVar1 = param_2[1];
    uVar3 = (uint)*param_2;
    if (bVar1 == 0) {
      uVar4 = CONCAT44(param_2,(uint)*(byte *)(uVar3 + 0x4c + unaff_EDI));
    }
    else {
      uVar4 = FUN_008e3640();
      uVar3 = extraout_ECX_00;
    }
    param_2 = (byte *)((ulonglong)uVar4 >> 0x20);
    switch((int)uVar4) {
    case 5:
      goto switchD_008e44fd_caseD_5;
    case 6:
      goto switchD_008e44fd_caseD_6;
    case 7:
      goto switchD_008e44fd_caseD_7;
    default:
      break;
    case 9:
    case 10:
    case 0x15:
      param_2 = param_2 + 2;
      if (param_2 == in_EAX) {
        return 0xffffffff;
      }
      goto LAB_008e4565;
    case 0xb:
      goto switchD_008e44fd_caseD_b;
    case 0x16:
    case 0x17:
    case 0x18:
    case 0x19:
    case 0x1a:
    case 0x1b:
      goto joined_r0x008e44c8;
    case 0x1d:
      if ((*(uint *)(&DAT_00d3efa0 +
                    (((uVar3 & 0xff) >> 5) + (uint)(byte)(&DAT_00d3f5a0)[bVar1] * 8) * 4) &
          1 << ((byte)uVar3 & 0x1f)) == 0) break;
      goto joined_r0x008e44c8;
    }
  case 0x1d:
    if ((*(uint *)(&DAT_00d3efa0 +
                  (((uVar3 & 0xff) >> 5) + (uint)(byte)(&DAT_00d3f4a0)[bVar1] * 8) * 4) &
        1 << ((byte)uVar3 & 0x1f)) != 0) goto joined_r0x008e44c8;
  }
switchD_008e44fd_caseD_8:
  *param_1 = param_2;
  return 0;
LAB_008e4565:
  if (param_2[1] == 0) {
    uVar4 = CONCAT44(param_2,(uint)*(byte *)(*param_2 + 0x4c + unaff_EDI));
  }
  else {
    uVar4 = FUN_008e3640();
  }
  param_2 = (byte *)((ulonglong)uVar4 >> 0x20);
  switch((int)uVar4) {
  case 9:
  case 10:
  case 0x15:
    param_2 = param_2 + 2;
    if (param_2 == in_EAX) {
      return 0xffffffff;
    }
    break;
  case 0xb:
    goto switchD_008e44fd_caseD_b;
  default:
    goto switchD_008e44fd_caseD_8;
  }
  goto LAB_008e4565;
switchD_008e44fd_caseD_b:
  *param_1 = param_2 + 2;
  return 5;
}



undefined4 __fastcall FUN_008e4660(undefined4 param_1,byte *param_2)

{
  byte *pbVar1;
  int iVar2;
  uint uVar3;
  int *unaff_EBX;
  byte *unaff_ESI;
  int unaff_EDI;
  undefined8 uVar4;
  
  if (param_2 != unaff_ESI) {
    if (param_2[1] == 0) {
      uVar3 = (uint)*(byte *)(*param_2 + 0x4c + unaff_EDI);
    }
    else {
      uVar4 = FUN_008e3640();
      param_2 = (byte *)((ulonglong)uVar4 >> 0x20);
      uVar3 = (uint)uVar4;
    }
    uVar4 = CONCAT44(param_2,uVar3);
    while( true ) {
      iVar2 = (int)((ulonglong)uVar4 >> 0x20);
      if (1 < (int)uVar4 - 0x18U) {
        *unaff_EBX = iVar2;
        return 0;
      }
      pbVar1 = (byte *)(iVar2 + 2);
      if (pbVar1 == unaff_ESI) break;
      if (pbVar1[1] == 0) {
        uVar4 = CONCAT44(pbVar1,(uint)*(byte *)(*pbVar1 + 0x4c + unaff_EDI));
      }
      else {
        uVar4 = FUN_008e3640();
      }
      if ((int)uVar4 == 0x12) {
        *unaff_EBX = (int)((ulonglong)uVar4 >> 0x20) + 2;
        return 10;
      }
    }
  }
  return 0xffffffff;
}



undefined4 __fastcall FUN_008e46d0(byte *param_1_00,byte *param_2,int param_1)

{
  byte *pbVar1;
  int iVar2;
  int *in_EAX;
  undefined4 uVar3;
  uint uVar4;
  undefined8 uVar5;
  
  if (param_2 != param_1_00) {
    if (param_2[1] == 0) {
      if (*param_2 == 0x78) {
        uVar3 = FUN_008e4660();
        return uVar3;
      }
      uVar4 = (uint)*(byte *)(*param_2 + 0x4c + param_1);
    }
    else {
      uVar5 = FUN_008e3640();
      param_2 = (byte *)((ulonglong)uVar5 >> 0x20);
      uVar4 = (uint)uVar5;
    }
    uVar5 = CONCAT44(param_2,uVar4);
    while( true ) {
      iVar2 = (int)((ulonglong)uVar5 >> 0x20);
      if ((int)uVar5 != 0x19) {
        *in_EAX = iVar2;
        return 0;
      }
      pbVar1 = (byte *)(iVar2 + 2);
      if (pbVar1 == param_1_00) break;
      if (*(char *)(iVar2 + 3) == '\0') {
        uVar5 = CONCAT44(pbVar1,(uint)*(byte *)(*pbVar1 + 0x4c + param_1));
      }
      else {
        uVar5 = FUN_008e3640();
      }
      if ((int)uVar5 == 0x12) {
        *in_EAX = (int)((ulonglong)uVar5 >> 0x20) + 2;
        return 10;
      }
    }
  }
  return 0xffffffff;
}



undefined4 __fastcall FUN_008e4760(undefined4 param_1_00,byte *param_2,byte **param_1)

{
  byte bVar1;
  byte *in_EAX;
  uint uVar2;
  undefined4 uVar3;
  uint uVar4;
  uint extraout_ECX;
  uint extraout_ECX_00;
  int unaff_EDI;
  undefined8 uVar5;
  
  if (param_2 == in_EAX) {
    return 0xffffffff;
  }
  uVar4 = (uint)*param_2;
  bVar1 = param_2[1];
  if (bVar1 == 0) {
    uVar2 = (uint)*(byte *)(uVar4 + 0x4c + unaff_EDI);
  }
  else {
    uVar5 = FUN_008e3640();
    param_2 = (byte *)((ulonglong)uVar5 >> 0x20);
    uVar2 = (uint)uVar5;
    uVar4 = extraout_ECX;
  }
  switch(uVar2) {
  case 5:
switchD_008e480d_caseD_5:
    if ((int)in_EAX - (int)param_2 < 2) {
      return 0xfffffffe;
    }
    break;
  case 6:
switchD_008e480d_caseD_6:
    if ((int)in_EAX - (int)param_2 < 3) {
      return 0xfffffffe;
    }
    break;
  case 7:
switchD_008e480d_caseD_7:
    if ((int)in_EAX - (int)param_2 < 4) {
      return 0xfffffffe;
    }
    break;
  case 0x13:
    uVar3 = FUN_008e46d0();
    return uVar3;
  case 0x16:
  case 0x18:
joined_r0x008e47d8:
    param_2 = param_2 + 2;
    if (param_2 == in_EAX) {
      return 0xffffffff;
    }
    bVar1 = param_2[1];
    uVar4 = (uint)*param_2;
    if (bVar1 == 0) {
      uVar5 = CONCAT44(param_2,(uint)*(byte *)(uVar4 + 0x4c + unaff_EDI));
    }
    else {
      uVar5 = FUN_008e3640();
      uVar4 = extraout_ECX_00;
    }
    param_2 = (byte *)((ulonglong)uVar5 >> 0x20);
    switch((int)uVar5) {
    case 5:
      goto switchD_008e480d_caseD_5;
    case 6:
      goto switchD_008e480d_caseD_6;
    case 7:
      goto switchD_008e480d_caseD_7;
    default:
      break;
    case 0x12:
      *param_1 = param_2 + 2;
      return 9;
    case 0x16:
    case 0x18:
    case 0x19:
    case 0x1a:
    case 0x1b:
      goto joined_r0x008e47d8;
    case 0x1d:
      if ((*(uint *)(&DAT_00d3efa0 +
                    (((uVar4 & 0xff) >> 5) + (uint)(byte)(&DAT_00d3f5a0)[bVar1] * 8) * 4) &
          1 << ((byte)uVar4 & 0x1f)) == 0) break;
      goto joined_r0x008e47d8;
    }
  case 0x1d:
    if ((*(uint *)(&DAT_00d3efa0 +
                  (((uVar4 & 0xff) >> 5) + (uint)(byte)(&DAT_00d3f4a0)[bVar1] * 8) * 4) &
        1 << ((byte)uVar4 & 0x1f)) != 0) goto joined_r0x008e47d8;
  }
  *param_1 = param_2;
  return 0;
}



int FUN_008e4920(byte *param_1,byte *param_2,byte **param_3)

{
  byte bVar1;
  byte *pbVar2;
  int in_EAX;
  int iVar3;
  int iVar4;
  uint uVar5;
  uint extraout_ECX;
  uint extraout_ECX_00;
  byte *pbVar6;
  byte *pbVar7;
  byte **ppbVar8;
  byte *pbVar9;
  undefined8 uVar10;
  
  pbVar2 = param_2;
  pbVar9 = (byte *)0x0;
  pbVar6 = param_1;
  if (param_1 != param_2) {
    do {
      bVar1 = pbVar6[1];
      uVar5 = (uint)*pbVar6;
      if (bVar1 == 0) {
        uVar10 = CONCAT44(pbVar6,(uint)*(byte *)(uVar5 + 0x4c + in_EAX));
      }
      else {
        uVar10 = FUN_008e3640();
        uVar5 = extraout_ECX;
      }
      pbVar6 = (byte *)((ulonglong)uVar10 >> 0x20);
      switch((int)uVar10) {
      case 5:
        if ((int)pbVar2 - (int)pbVar6 < 2) {
          return -2;
        }
      default:
switchD_008e49ea_caseD_8:
        *param_3 = pbVar6;
        return 0;
      case 6:
        if ((int)pbVar2 - (int)pbVar6 < 3) {
          return -2;
        }
LAB_008e4998:
        *param_3 = pbVar6;
        return 0;
      case 7:
        if ((int)pbVar2 - (int)pbVar6 < 4) {
          return -2;
        }
        goto switchD_008e49ea_caseD_8;
      case 9:
      case 10:
      case 0x15:
        while( true ) {
          pbVar9 = pbVar6 + 2;
          if (pbVar9 == pbVar2) {
            return -1;
          }
          if (pbVar6[3] == 0) {
            uVar10 = CONCAT44(pbVar9,(uint)*(byte *)(*pbVar9 + 0x4c + in_EAX));
          }
          else {
            uVar10 = FUN_008e3640();
          }
          pbVar6 = (byte *)((ulonglong)uVar10 >> 0x20);
          iVar3 = (int)uVar10;
          if (iVar3 == 0xe) break;
          if ((iVar3 < 9) || ((10 < iVar3 && (iVar3 != 0x15)))) goto LAB_008e4a57;
        }
      case 0xe:
        param_2 = (byte *)0x0;
        do {
          pbVar9 = pbVar6 + 2;
          if (pbVar9 == pbVar2) {
            return -1;
          }
          if (pbVar6[3] == 0) {
            uVar10 = CONCAT44(pbVar9,(uint)*(byte *)(*pbVar9 + 0x4c + in_EAX));
          }
          else {
            uVar10 = FUN_008e3640();
          }
          pbVar6 = (byte *)((ulonglong)uVar10 >> 0x20);
          iVar3 = (int)uVar10;
          ppbVar8 = param_3;
          if ((iVar3 == 0xc) || (iVar3 == 0xd)) {
switchD_008e4af9_caseD_4:
            param_1 = pbVar6 + 2;
            do {
              if (param_1 == pbVar2) {
                return -1;
              }
              if (param_1[1] == 0) {
                uVar10 = CONCAT44(param_1,(uint)*(byte *)(*param_1 + 0x4c + in_EAX));
              }
              else {
                uVar10 = FUN_008e3640();
              }
              pbVar6 = (byte *)((ulonglong)uVar10 >> 0x20);
              if ((int)uVar10 == iVar3) {
                pbVar9 = pbVar6 + 2;
                if (pbVar9 == pbVar2) {
                  return -1;
                }
                if (pbVar6[3] == 0) {
                  uVar10 = CONCAT44(pbVar9,(uint)*(byte *)(*pbVar9 + 0x4c + in_EAX));
                }
                else {
                  uVar10 = FUN_008e3640();
                }
                pbVar6 = (byte *)((ulonglong)uVar10 >> 0x20);
                pbVar7 = pbVar6;
                switch((int)uVar10) {
                case 9:
                case 10:
                case 0x15:
                  goto switchD_008e4b90_caseD_9;
                case 0xb:
                  goto switchD_008e4b90_caseD_b;
                default:
                  goto switchD_008e4af9_caseD_0;
                case 0x11:
                  goto switchD_008e4b90_caseD_11;
                }
              }
              switch((int)uVar10) {
              case 0:
              case 1:
              case 2:
              case 8:
                goto switchD_008e4af9_caseD_0;
              case 3:
                iVar4 = FUN_008e4760(&param_1);
                ppbVar8 = param_3;
                if (iVar4 < 1) {
                  if (iVar4 == 0) {
                    *param_3 = param_1;
                    return 0;
                  }
                  return iVar4;
                }
                break;
              default:
                goto switchD_008e4af9_caseD_4;
              case 5:
                if ((int)pbVar2 - (int)pbVar6 < 2) {
                  return -2;
                }
                goto switchD_008e4af9_caseD_4;
              case 6:
                if ((int)pbVar2 - (int)pbVar6 < 3) {
                  return -2;
                }
                param_1 = pbVar6 + 3;
                break;
              case 7:
                if ((int)pbVar2 - (int)pbVar6 < 4) {
                  return -2;
                }
                param_1 = pbVar6 + 4;
              }
            } while( true );
          }
          if (iVar3 < 9) goto switchD_008e49ea_caseD_8;
          if ((10 < iVar3) && (iVar3 != 0x15)) {
            *param_3 = pbVar6;
            return 0;
          }
        } while( true );
      case 0x16:
      case 0x18:
      case 0x19:
      case 0x1a:
      case 0x1b:
        break;
      case 0x17:
        if (pbVar9 != (byte *)0x0) {
LAB_008e4a57:
          *param_3 = pbVar6;
          return 0;
        }
        pbVar9 = pbVar6 + 2;
        if (pbVar9 == pbVar2) {
          return -1;
        }
        bVar1 = pbVar6[3];
        uVar5 = (uint)*pbVar9;
        if (bVar1 == 0) {
          uVar10 = CONCAT44(pbVar9,(uint)*(byte *)(uVar5 + 0x4c + in_EAX));
        }
        else {
          uVar10 = FUN_008e3640();
          uVar5 = extraout_ECX_00;
        }
        pbVar6 = (byte *)((ulonglong)uVar10 >> 0x20);
        pbVar9 = (byte *)0x1;
        switch((int)uVar10) {
        case 5:
          if ((int)pbVar2 - (int)pbVar6 < 2) {
            return -2;
          }
          goto LAB_008e4998;
        case 6:
          if ((int)pbVar2 - (int)pbVar6 < 3) {
            return -2;
          }
          goto switchD_008e49ea_caseD_8;
        case 7:
          if (3 < (int)pbVar2 - (int)pbVar6) {
            *param_3 = pbVar6;
            return 0;
          }
          return -2;
        default:
          goto switchD_008e49ea_caseD_8;
        case 0x16:
        case 0x18:
          break;
        case 0x1d:
          if ((*(uint *)(&DAT_00d3efa0 +
                        (((uVar5 & 0xff) >> 5) + (uint)(byte)(&DAT_00d3f4a0)[bVar1] * 8) * 4) &
              1 << ((byte)uVar5 & 0x1f)) == 0) goto switchD_008e49ea_caseD_8;
        }
        break;
      case 0x1d:
        if ((*(uint *)(&DAT_00d3efa0 +
                      (((uVar5 & 0xff) >> 5) + (uint)(byte)(&DAT_00d3f5a0)[bVar1] * 8) * 4) &
            1 << ((byte)uVar5 & 0x1f)) == 0) goto LAB_008e4998;
      }
switchD_008e49ea_caseD_16:
      pbVar6 = pbVar6 + 2;
    } while (pbVar6 != pbVar2);
  }
  return -1;
  do {
    pbVar6 = (byte *)((ulonglong)uVar10 >> 0x20);
    pbVar7 = pbVar6;
    pbVar9 = param_2;
    switch((int)uVar10) {
    case 5:
      if ((int)pbVar2 - (int)pbVar6 < 2) {
        return -2;
      }
      goto switchD_008e4af9_caseD_0;
    case 6:
      if ((int)pbVar2 - (int)pbVar6 < 3) {
        return -2;
      }
      goto switchD_008e4af9_caseD_0;
    case 7:
      if ((int)pbVar2 - (int)pbVar6 < 4) {
        return -2;
      }
    default:
      goto switchD_008e4af9_caseD_0;
    case 9:
    case 10:
    case 0x15:
switchD_008e4b90_caseD_9:
      pbVar9 = pbVar6 + 2;
      if (pbVar9 == pbVar2) {
        return -1;
      }
      if (pbVar6[3] == 0) {
        uVar10 = CONCAT44(pbVar9,(uint)*(byte *)(*pbVar9 + 0x4c + in_EAX));
      }
      else {
        uVar10 = FUN_008e3640();
      }
      break;
    case 0xb:
      goto switchD_008e4b90_caseD_b;
    case 0x11:
      goto switchD_008e4b90_caseD_11;
    case 0x16:
    case 0x18:
      goto switchD_008e49ea_caseD_16;
    case 0x1d:
      if ((*(uint *)(&DAT_00d3efa0 +
                    ((uint)(*pbVar6 >> 5) + (uint)(byte)(&DAT_00d3f4a0)[pbVar6[1]] * 8) * 4) &
          1 << (*pbVar6 & 0x1f)) == 0) goto switchD_008e4af9_caseD_0;
      goto switchD_008e49ea_caseD_16;
    }
  } while( true );
switchD_008e4b90_caseD_11:
  pbVar6 = pbVar7 + 2;
  if (pbVar6 == pbVar2) {
    return -1;
  }
  if ((pbVar7[3] == 0) && (*pbVar6 == 0x3e)) {
    *ppbVar8 = pbVar7 + 4;
    return 3;
  }
  goto switchD_008e4af9_caseD_0;
switchD_008e4b90_caseD_b:
  *ppbVar8 = pbVar6 + 2;
  return 1;
switchD_008e4af9_caseD_0:
  *ppbVar8 = pbVar6;
  return 0;
}



undefined4 __fastcall
FUN_008e4e00(undefined4 param_1_00,byte *param_2_00,int param_1,byte **param_2)

{
  byte bVar1;
  bool bVar2;
  byte *in_EAX;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  uint extraout_ECX;
  uint extraout_ECX_00;
  uint uVar6;
  uint extraout_ECX_01;
  byte *pbVar7;
  undefined8 uVar8;
  
  if (param_2_00 == in_EAX) {
    return 0xffffffff;
  }
  uVar6 = (uint)*param_2_00;
  bVar1 = param_2_00[1];
  if (bVar1 == 0) {
    uVar3 = (uint)*(byte *)(uVar6 + 0x4c + param_1);
  }
  else {
    uVar8 = FUN_008e3640();
    param_2_00 = (byte *)((ulonglong)uVar8 >> 0x20);
    uVar3 = (uint)uVar8;
    uVar6 = extraout_ECX;
  }
  switch(uVar3) {
  case 5:
switchD_008e4ebb_caseD_5:
    if ((int)in_EAX - (int)param_2_00 < 2) {
      return 0xfffffffe;
    }
    break;
  case 6:
switchD_008e4ebb_caseD_6:
    if ((int)in_EAX - (int)param_2_00 < 3) {
      return 0xfffffffe;
    }
    break;
  case 7:
switchD_008e4ebb_caseD_7:
    if ((int)in_EAX - (int)param_2_00 < 4) {
      return 0xfffffffe;
    }
    break;
  case 0xf:
    uVar5 = FUN_008e3f00(param_1,param_2);
    return uVar5;
  case 0x10:
    pbVar7 = param_2_00 + 2;
    if (pbVar7 == in_EAX) {
      return 0xffffffff;
    }
    if (param_2_00[3] == 0) {
      uVar8 = CONCAT44(pbVar7,(uint)*(byte *)(*pbVar7 + 0x4c + param_1));
    }
    else {
      uVar8 = FUN_008e3640();
    }
    param_2_00 = (byte *)((ulonglong)uVar8 >> 0x20);
    if ((int)uVar8 == 0x14) {
      uVar5 = FUN_008e4220();
      return uVar5;
    }
    if ((int)uVar8 == 0x1b) {
      uVar5 = FUN_008e3c20(param_2);
      return uVar5;
    }
    break;
  case 0x11:
    uVar5 = FUN_008e4450(param_2);
    return uVar5;
  case 0x16:
  case 0x18:
switchD_008e4e46_caseD_16:
    param_2_00 = param_2_00 + 2;
    bVar2 = false;
    if (param_2_00 == in_EAX) {
      return 0xffffffff;
    }
    do {
      bVar1 = param_2_00[1];
      uVar6 = (uint)*param_2_00;
      if (bVar1 == 0) {
        uVar8 = CONCAT44(param_2_00,(uint)*(byte *)(uVar6 + 0x4c + param_1));
      }
      else {
        uVar8 = FUN_008e3640();
        uVar6 = extraout_ECX_00;
      }
      param_2_00 = (byte *)((ulonglong)uVar8 >> 0x20);
      pbVar7 = param_2_00;
      switch((int)uVar8) {
      case 5:
        goto switchD_008e4ebb_caseD_5;
      case 6:
        goto switchD_008e4ebb_caseD_6;
      case 7:
        goto switchD_008e4ebb_caseD_7;
      default:
        goto switchD_008e4ebb_caseD_8;
      case 9:
      case 10:
      case 0x15:
        param_2_00 = param_2_00 + 2;
        if (param_2_00 == in_EAX) {
          return 0xffffffff;
        }
        goto LAB_008e4fc0;
      case 0xb:
        goto switchD_008e4ebb_caseD_b;
      case 0x11:
        goto switchD_008e4ebb_caseD_11;
      case 0x17:
        if (!bVar2) {
          pbVar7 = param_2_00 + 2;
          bVar2 = true;
          if (pbVar7 == in_EAX) {
            return 0xffffffff;
          }
          bVar1 = param_2_00[3];
          uVar6 = (uint)*pbVar7;
          if (bVar1 == 0) {
            uVar8 = CONCAT44(pbVar7,(uint)*(byte *)(uVar6 + 0x4c + param_1));
          }
          else {
            uVar8 = FUN_008e3640();
            uVar6 = extraout_ECX_01;
          }
          param_2_00 = (byte *)((ulonglong)uVar8 >> 0x20);
          switch((int)uVar8) {
          case 5:
            goto switchD_008e4ebb_caseD_5;
          case 6:
            goto switchD_008e4ebb_caseD_6;
          case 7:
            goto switchD_008e4ebb_caseD_7;
          default:
            break;
          case 0x16:
          case 0x18:
            goto switchD_008e4ebb_caseD_16;
          case 0x1d:
            uVar6 = uVar6 & 0xff;
            iVar4 = (uVar6 >> 5) + (uint)(byte)(&DAT_00d3f4a0)[bVar1] * 8;
            goto LAB_008e4f49;
          }
        }
        goto switchD_008e4ebb_caseD_8;
      case 0x1d:
        uVar6 = uVar6 & 0xff;
        iVar4 = (uVar6 >> 5) + (uint)(byte)(&DAT_00d3f5a0)[bVar1] * 8;
LAB_008e4f49:
        if ((*(uint *)(&DAT_00d3efa0 + iVar4 * 4) & 1 << ((byte)uVar6 & 0x1f)) == 0)
        goto switchD_008e4ebb_caseD_8;
      case 0x16:
      case 0x18:
      case 0x19:
      case 0x1a:
      case 0x1b:
switchD_008e4ebb_caseD_16:
        param_2_00 = param_2_00 + 2;
        if (param_2_00 == in_EAX) {
          return 0xffffffff;
        }
      }
    } while( true );
  case 0x1d:
    if ((*(uint *)(&DAT_00d3efa0 +
                  (((uVar6 & 0xff) >> 5) + (uint)(byte)(&DAT_00d3f4a0)[bVar1] * 8) * 4) &
        1 << ((byte)uVar6 & 0x1f)) != 0) goto switchD_008e4e46_caseD_16;
  }
  goto switchD_008e4ebb_caseD_8;
switchD_008e4feb_caseD_9:
  param_2_00 = param_2_00 + 2;
  if (param_2_00 == in_EAX) {
    return 0xffffffff;
  }
  goto LAB_008e4fc0;
switchD_008e4ebb_caseD_b:
  *param_2 = param_2_00 + 2;
  return 2;
LAB_008e4fc0:
  if (param_2_00[1] == 0) {
    uVar8 = CONCAT44(param_2_00,(uint)*(byte *)(*param_2_00 + 0x4c + param_1));
  }
  else {
    uVar8 = FUN_008e3640();
  }
  param_2_00 = (byte *)((ulonglong)uVar8 >> 0x20);
  pbVar7 = param_2_00;
  switch((int)uVar8) {
  case 5:
    goto switchD_008e4ebb_caseD_5;
  case 6:
    goto switchD_008e4ebb_caseD_6;
  case 7:
    goto switchD_008e4ebb_caseD_7;
  default:
    goto switchD_008e4ebb_caseD_8;
  case 9:
  case 10:
  case 0x15:
    goto switchD_008e4feb_caseD_9;
  case 0xb:
    goto switchD_008e4ebb_caseD_b;
  case 0x11:
    goto switchD_008e4ebb_caseD_11;
  case 0x16:
  case 0x18:
    break;
  case 0x1d:
    if ((*(uint *)(&DAT_00d3efa0 +
                  ((uint)(*param_2_00 >> 5) + (uint)(byte)(&DAT_00d3f4a0)[param_2_00[1]] * 8) * 4) &
        1 << (*param_2_00 & 0x1f)) == 0) goto switchD_008e4ebb_caseD_8;
  }
  uVar5 = FUN_008e4920(param_2_00 + 2);
  return uVar5;
switchD_008e4ebb_caseD_11:
  param_2_00 = pbVar7 + 2;
  if (param_2_00 == in_EAX) {
    return 0xffffffff;
  }
  if ((pbVar7[3] == 0) && (*param_2_00 == 0x3e)) {
    *param_2 = pbVar7 + 4;
    return 4;
  }
switchD_008e4ebb_caseD_8:
  *param_2 = param_2_00;
  return 0;
}



undefined4 __fastcall FUN_008e5460(undefined4 param_1_00,byte *param_2,byte **param_1)

{
  byte bVar1;
  byte *in_EAX;
  uint uVar2;
  uint uVar3;
  uint extraout_ECX;
  uint extraout_ECX_00;
  int unaff_EDI;
  undefined8 uVar4;
  
  if (param_2 == in_EAX) {
    return 0xffffffff;
  }
  uVar3 = (uint)*param_2;
  bVar1 = param_2[1];
  if (bVar1 == 0) {
    uVar2 = (uint)*(byte *)(uVar3 + 0x4c + unaff_EDI);
  }
  else {
    uVar4 = FUN_008e3640();
    param_2 = (byte *)((ulonglong)uVar4 >> 0x20);
    uVar2 = (uint)uVar4;
    uVar3 = extraout_ECX;
  }
  switch(uVar2) {
  case 5:
switchD_008e54a0_caseD_5:
    if ((int)in_EAX - (int)param_2 < 2) {
      return 0xfffffffe;
    }
    break;
  case 6:
switchD_008e54a0_caseD_6:
    if ((int)in_EAX - (int)param_2 < 3) {
      return 0xfffffffe;
    }
    break;
  case 7:
switchD_008e54a0_caseD_7:
    if ((int)in_EAX - (int)param_2 < 4) {
      return 0xfffffffe;
    }
    break;
  case 9:
  case 10:
  case 0x15:
  case 0x1e:
    *param_1 = param_2;
    return 0x16;
  case 0x16:
  case 0x18:
joined_r0x008e54d8:
    param_2 = param_2 + 2;
    if (param_2 == in_EAX) {
      return 0xffffffff;
    }
    bVar1 = param_2[1];
    uVar3 = (uint)*param_2;
    if (bVar1 == 0) {
      uVar4 = CONCAT44(param_2,(uint)*(byte *)(uVar3 + 0x4c + unaff_EDI));
    }
    else {
      uVar4 = FUN_008e3640();
      uVar3 = extraout_ECX_00;
    }
    param_2 = (byte *)((ulonglong)uVar4 >> 0x20);
    switch((int)uVar4) {
    case 5:
      goto switchD_008e54a0_caseD_5;
    case 6:
      goto switchD_008e54a0_caseD_6;
    case 7:
      goto switchD_008e54a0_caseD_7;
    default:
      break;
    case 0x12:
      *param_1 = param_2 + 2;
      return 0x1c;
    case 0x16:
    case 0x18:
    case 0x19:
    case 0x1a:
    case 0x1b:
      goto joined_r0x008e54d8;
    case 0x1d:
      if ((*(uint *)(&DAT_00d3efa0 +
                    (((uVar3 & 0xff) >> 5) + (uint)(byte)(&DAT_00d3f5a0)[bVar1] * 8) * 4) &
          1 << ((byte)uVar3 & 0x1f)) == 0) break;
      goto joined_r0x008e54d8;
    }
  case 0x1d:
    if ((*(uint *)(&DAT_00d3efa0 +
                  (((uVar3 & 0xff) >> 5) + (uint)(byte)(&DAT_00d3f4a0)[bVar1] * 8) * 4) &
        1 << ((byte)uVar3 & 0x1f)) != 0) goto joined_r0x008e54d8;
  }
  *param_1 = param_2;
  return 0;
}



undefined4 __fastcall FUN_008e5610(undefined4 param_1_00,byte *param_2,byte **param_1)

{
  byte bVar1;
  byte *in_EAX;
  uint uVar2;
  uint uVar3;
  uint extraout_ECX;
  uint extraout_ECX_00;
  int unaff_EDI;
  undefined8 uVar4;
  
  if (param_2 == in_EAX) {
    return 0xffffffff;
  }
  uVar3 = (uint)*param_2;
  bVar1 = param_2[1];
  if (bVar1 == 0) {
    uVar2 = (uint)*(byte *)(uVar3 + 0x4c + unaff_EDI);
  }
  else {
    uVar4 = FUN_008e3640();
    param_2 = (byte *)((ulonglong)uVar4 >> 0x20);
    uVar2 = (uint)uVar4;
    uVar3 = extraout_ECX;
  }
  switch(uVar2) {
  case 5:
switchD_008e5650_caseD_5:
    if ((int)in_EAX - (int)param_2 < 2) {
      return 0xfffffffe;
    }
    break;
  case 6:
switchD_008e5650_caseD_6:
    if ((int)in_EAX - (int)param_2 < 3) {
      return 0xfffffffe;
    }
    break;
  case 7:
switchD_008e5650_caseD_7:
    if ((int)in_EAX - (int)param_2 < 4) {
      return 0xfffffffe;
    }
    break;
  case 0x16:
  case 0x18:
joined_r0x008e5688:
    param_2 = param_2 + 2;
    if (param_2 == in_EAX) {
      return 0xffffffec;
    }
    bVar1 = param_2[1];
    uVar3 = (uint)*param_2;
    if (bVar1 == 0) {
      uVar4 = CONCAT44(param_2,(uint)*(byte *)(uVar3 + 0x4c + unaff_EDI));
    }
    else {
      uVar4 = FUN_008e3640();
      uVar3 = extraout_ECX_00;
    }
    param_2 = (byte *)((ulonglong)uVar4 >> 0x20);
    switch((int)uVar4) {
    case 5:
      goto switchD_008e5650_caseD_5;
    case 6:
      goto switchD_008e5650_caseD_6;
    case 7:
      goto switchD_008e5650_caseD_7;
    default:
      break;
    case 9:
    case 10:
    case 0xb:
    case 0x15:
    case 0x1e:
    case 0x20:
    case 0x24:
      *param_1 = param_2;
      return 0x14;
    case 0x16:
    case 0x18:
    case 0x19:
    case 0x1a:
    case 0x1b:
      goto joined_r0x008e5688;
    case 0x1d:
      if ((*(uint *)(&DAT_00d3efa0 +
                    (((uVar3 & 0xff) >> 5) + (uint)(byte)(&DAT_00d3f5a0)[bVar1] * 8) * 4) &
          1 << ((byte)uVar3 & 0x1f)) == 0) break;
      goto joined_r0x008e5688;
    }
  case 0x1d:
    if ((*(uint *)(&DAT_00d3efa0 +
                  (((uVar3 & 0xff) >> 5) + (uint)(byte)(&DAT_00d3f4a0)[bVar1] * 8) * 4) &
        1 << ((byte)uVar3 & 0x1f)) != 0) goto joined_r0x008e5688;
  }
  *param_1 = param_2;
  return 0;
}



undefined4 __fastcall
FUN_008e57c0(undefined4 param_1_00,byte *param_2_00,int param_1,byte **param_2)

{
  uint uVar1;
  byte *pbVar2;
  int unaff_EBX;
  int iVar3;
  byte *unaff_EDI;
  undefined8 uVar4;
  
  if (param_2_00 != unaff_EDI) {
    iVar3 = (int)unaff_EDI - (int)param_2_00;
    do {
      if (param_2_00[1] == 0) {
        uVar4 = CONCAT44(param_2_00,(uint)*(byte *)(*param_2_00 + 0x4c + param_1));
      }
      else {
        uVar4 = FUN_008e3640();
      }
      pbVar2 = (byte *)((ulonglong)uVar4 >> 0x20);
      switch((int)uVar4) {
      case 0:
      case 1:
      case 8:
        *param_2 = pbVar2;
        return 0;
      case 5:
        if (iVar3 < 2) {
          return 0xfffffffe;
        }
      default:
        param_2_00 = pbVar2 + 2;
        iVar3 = iVar3 + -2;
        break;
      case 6:
        if (iVar3 < 3) {
          return 0xfffffffe;
        }
        param_2_00 = pbVar2 + 3;
        iVar3 = iVar3 + -3;
        break;
      case 7:
        if (iVar3 < 4) {
          return 0xfffffffe;
        }
        param_2_00 = pbVar2 + 4;
        iVar3 = iVar3 + -4;
        break;
      case 0xc:
      case 0xd:
        param_2_00 = pbVar2 + 2;
        iVar3 = iVar3 + -2;
        if ((int)uVar4 == unaff_EBX) {
          if (param_2_00 != unaff_EDI) {
            *param_2 = param_2_00;
            if (pbVar2[3] == 0) {
              uVar1 = (uint)*(byte *)(*param_2_00 + 0x4c + param_1);
            }
            else {
              uVar1 = FUN_008e3640();
            }
            switch(uVar1) {
            case 9:
            case 10:
            case 0xb:
            case 0x14:
            case 0x15:
            case 0x1e:
              return 0x1b;
            default:
              return 0;
            }
          }
          return 0xffffffe5;
        }
      }
    } while (param_2_00 != unaff_EDI);
  }
  return 0xffffffff;
}



undefined4 FUN_008e6370(int param_1,int param_2,int param_3,byte **param_4)

{
  byte bVar1;
  uint uVar2;
  byte extraout_CL;
  byte bVar3;
  char extraout_DL;
  char cVar4;
  byte *pbVar5;
  
  pbVar5 = (byte *)(param_2 + 2);
  do {
    if (pbVar5 == (byte *)(param_3 + -2)) {
      return 1;
    }
    bVar3 = *pbVar5;
    if (pbVar5[1] == 0) {
      uVar2 = (uint)*(byte *)(bVar3 + 0x4c + param_1);
      cVar4 = '\0';
    }
    else {
      uVar2 = FUN_008e3640();
      cVar4 = extraout_DL;
      bVar3 = extraout_CL;
    }
    switch(uVar2) {
    case 9:
    case 10:
    case 0xd:
    case 0xe:
    case 0xf:
    case 0x10:
    case 0x11:
    case 0x12:
    case 0x13:
    case 0x17:
    case 0x18:
    case 0x19:
    case 0x1b:
    case 0x1e:
    case 0x1f:
    case 0x20:
    case 0x21:
    case 0x22:
    case 0x23:
      break;
    default:
switchD_008e63b9_caseD_b:
      if ((cVar4 != '\0') || ((bVar3 != 0x24 && (bVar3 != 0x40)))) {
        *param_4 = pbVar5;
        return 0;
      }
      break;
    case 0x15:
      if ((cVar4 == '\0') && (bVar3 == 9)) {
        *param_4 = pbVar5;
        return 0;
      }
      break;
    case 0x16:
    case 0x1a:
      bVar1 = bVar3;
      if (cVar4 != '\0') {
        bVar1 = 0xff;
      }
      if ((bVar1 & 0x80) != 0) goto switchD_008e63b9_caseD_b;
    }
    pbVar5 = pbVar5 + 2;
  } while( true );
}



int FUN_008e6450(int param_1,byte *param_2,int param_3,byte **param_4)

{
  byte bVar1;
  byte extraout_CL;
  byte bVar2;
  int iVar3;
  int iVar4;
  byte *pbVar5;
  undefined8 uVar6;
  int local_8;
  int local_4;
  
  iVar4 = 0;
  pbVar5 = (byte *)((int)param_2 + 2);
  param_2 = (byte *)((int)param_2 + 4);
  iVar3 = 1;
  local_4 = 0;
  local_8 = 0;
LAB_008e6478:
  bVar1 = pbVar5[1];
  bVar2 = *pbVar5;
  if (bVar1 == 0) {
    uVar6 = CONCAT44(iVar3,(uint)*(byte *)(bVar2 + 0x4c + param_1));
    iVar4 = local_4;
  }
  else {
    uVar6 = FUN_008e3640();
    bVar2 = extraout_CL;
  }
  iVar3 = (int)((ulonglong)uVar6 >> 0x20);
  switch((int)uVar6) {
  case 3:
switchD_008e64ad_caseD_3:
    if (iVar4 < param_3) {
      pbVar5 = pbVar5 + 2;
      param_2 = param_2 + 2;
      *(undefined *)(param_4 + 3) = 0;
      goto LAB_008e6478;
    }
    break;
  case 5:
  case 0x16:
  case 0x18:
  case 0x1d:
    if (iVar3 == 0) {
      if (iVar4 < param_3) {
        *param_4 = pbVar5;
        *(undefined *)(param_4 + 3) = 1;
      }
      pbVar5 = pbVar5 + 2;
      param_2 = param_2 + 2;
      iVar3 = 1;
      goto LAB_008e6478;
    }
    break;
  case 6:
    if (iVar3 == 0) {
      if (iVar4 < param_3) {
        *param_4 = pbVar5;
        *(undefined *)(param_4 + 3) = 1;
      }
      iVar3 = 1;
    }
    pbVar5 = pbVar5 + 3;
    param_2 = param_2 + 3;
    goto LAB_008e6478;
  case 7:
    if (iVar3 == 0) {
      if (iVar4 < param_3) {
        *param_4 = pbVar5;
        *(undefined *)(param_4 + 3) = 1;
      }
      iVar3 = 1;
    }
    pbVar5 = pbVar5 + 4;
    param_2 = param_2 + 4;
    goto LAB_008e6478;
  case 9:
  case 10:
    if (iVar3 == 1) {
      iVar3 = 0;
      pbVar5 = pbVar5 + 2;
      param_2 = param_2 + 2;
      goto LAB_008e6478;
    }
    if (iVar3 == 2) goto switchD_008e64ad_caseD_3;
    break;
  case 0xb:
  case 0x11:
    if (iVar3 != 2) {
      return iVar4;
    }
    break;
  case 0xc:
    if (iVar3 != 2) {
      if (iVar4 < param_3) {
        param_4[1] = param_2;
      }
      iVar3 = 2;
      pbVar5 = pbVar5 + 2;
      param_2 = param_2 + 2;
      local_8 = 0xc;
      goto LAB_008e6478;
    }
    if (local_8 == 0xc) {
      if (iVar4 < param_3) {
        param_4[2] = pbVar5;
      }
LAB_008e6568:
      iVar3 = 0;
      iVar4 = iVar4 + 1;
      param_4 = param_4 + 4;
      pbVar5 = pbVar5 + 2;
      param_2 = param_2 + 2;
      local_4 = iVar4;
      goto LAB_008e6478;
    }
    break;
  case 0xd:
    if (iVar3 != 2) {
      if (iVar4 < param_3) {
        param_4[1] = param_2;
      }
      iVar3 = 2;
      pbVar5 = pbVar5 + 2;
      param_2 = param_2 + 2;
      local_8 = 0xd;
      goto LAB_008e6478;
    }
    if (local_8 == 0xd) {
      iVar3 = 0;
      if (param_3 <= iVar4) goto LAB_008e6568;
      param_4[2] = pbVar5;
      iVar4 = iVar4 + 1;
      param_4 = param_4 + 4;
      pbVar5 = pbVar5 + 2;
      param_2 = param_2 + 2;
      local_4 = iVar4;
      goto LAB_008e6478;
    }
    break;
  case 0x15:
    if (iVar3 == 1) {
      iVar3 = 0;
      pbVar5 = pbVar5 + 2;
      param_2 = param_2 + 2;
    }
    else {
      if (((iVar3 != 2) || (param_3 <= iVar4)) || (*(char *)(param_4 + 3) == '\0')) break;
      if (((pbVar5 != param_4[1]) && (bVar1 == 0)) && (bVar2 == 0x20)) {
        if (pbVar5[3] == 0) {
          if (*param_2 == 0x20) goto LAB_008e6646;
          uVar6 = CONCAT44(2,(uint)*(byte *)(*param_2 + 0x4c + param_1));
        }
        else {
          uVar6 = FUN_008e3640();
        }
        iVar3 = (int)((ulonglong)uVar6 >> 0x20);
        if ((int)uVar6 != local_8) break;
      }
LAB_008e6646:
      pbVar5 = pbVar5 + 2;
      param_2 = param_2 + 2;
      *(undefined *)(param_4 + 3) = 0;
    }
    goto LAB_008e6478;
  }
  pbVar5 = pbVar5 + 2;
  param_2 = param_2 + 2;
  goto LAB_008e6478;
}



undefined4 __fastcall
FUN_008e6ad0(undefined4 param_1_00,char *param_2_00,int param_1,char **param_2)

{
  char *pcVar1;
  char *pcVar2;
  int iVar3;
  char *unaff_EDI;
  undefined8 uVar4;
  
  if (param_2_00 != unaff_EDI) {
    if ((*param_2_00 != '\0') || (param_2_00[1] != '-')) {
      *param_2 = param_2_00;
      return 0;
    }
    param_2_00 = param_2_00 + 2;
    if (param_2_00 != unaff_EDI) {
      iVar3 = (int)unaff_EDI - (int)param_2_00;
      do {
        if (*param_2_00 == '\0') {
          uVar4 = CONCAT44(param_2_00,(uint)*(byte *)((byte)param_2_00[1] + 0x4c + param_1));
        }
        else {
          uVar4 = FUN_008e3640();
        }
        pcVar1 = (char *)((ulonglong)uVar4 >> 0x20);
        switch((int)uVar4) {
        case 0:
        case 1:
        case 8:
          *param_2 = pcVar1;
          return 0;
        case 5:
          if (iVar3 < 2) {
            return 0xfffffffe;
          }
        default:
          param_2_00 = pcVar1 + 2;
          iVar3 = iVar3 + -2;
          break;
        case 6:
          if (iVar3 < 3) {
            return 0xfffffffe;
          }
          param_2_00 = pcVar1 + 3;
          iVar3 = iVar3 + -3;
          break;
        case 7:
          if (iVar3 < 4) {
            return 0xfffffffe;
          }
          param_2_00 = pcVar1 + 4;
          iVar3 = iVar3 + -4;
          break;
        case 0x1b:
          param_2_00 = pcVar1 + 2;
          iVar3 = iVar3 + -2;
          if (param_2_00 == unaff_EDI) {
            return 0xffffffff;
          }
          if ((*param_2_00 == '\0') && (pcVar1[3] == '-')) {
            pcVar2 = pcVar1 + 4;
            if (pcVar2 == unaff_EDI) {
              return 0xffffffff;
            }
            if ((*pcVar2 == '\0') && (pcVar1[5] == '>')) {
              *param_2 = pcVar1 + 6;
              return 0xd;
            }
            *param_2 = pcVar2;
            return 0;
          }
        }
        if (param_2_00 == unaff_EDI) {
          return 0xffffffff;
        }
      } while( true );
    }
  }
  return 0xffffffff;
}



undefined4 __fastcall FUN_008e6bf0(undefined4 param_1,char *param_2)

{
  char *in_EAX;
  uint uVar1;
  undefined4 uVar2;
  char **unaff_EBX;
  int unaff_ESI;
  undefined8 uVar3;
  
  if (param_2 == in_EAX) {
    return 0xffffffff;
  }
  if (*param_2 == '\0') {
    uVar1 = (uint)*(byte *)((byte)param_2[1] + 0x4c + unaff_ESI);
  }
  else {
    uVar3 = FUN_008e3640();
    param_2 = (char *)((ulonglong)uVar3 >> 0x20);
    uVar1 = (uint)uVar3;
  }
  switch(uVar1) {
  case 0x14:
    *unaff_EBX = param_2 + 2;
    return 0x21;
  default:
switchD_008e6c21_caseD_15:
    *unaff_EBX = param_2;
    return 0;
  case 0x16:
  case 0x18:
    param_2 = param_2 + 2;
    if (param_2 == in_EAX) {
      return 0xffffffff;
    }
    break;
  case 0x1b:
    uVar2 = FUN_008e6ad0();
    return uVar2;
  }
LAB_008e6c50:
  if (*param_2 == '\0') {
    uVar3 = CONCAT44(param_2,(uint)*(byte *)((byte)param_2[1] + 0x4c + unaff_ESI));
  }
  else {
    uVar3 = FUN_008e3640();
  }
  param_2 = (char *)((ulonglong)uVar3 >> 0x20);
  switch((int)uVar3) {
  case 9:
  case 10:
  case 0x15:
    break;
  default:
    goto switchD_008e6c21_caseD_15;
  case 0x16:
  case 0x18:
    goto switchD_008e6c78_caseD_16;
  case 0x1e:
    if (param_2 + 2 == in_EAX) {
      return 0xffffffff;
    }
    if (param_2[2] == '\0') {
      uVar3 = CONCAT44(param_2,(uint)*(byte *)((byte)param_2[3] + 0x4c + unaff_ESI));
    }
    else {
      uVar3 = FUN_008e3640();
    }
    param_2 = (char *)((ulonglong)uVar3 >> 0x20);
    switch((int)uVar3) {
    case 9:
    case 10:
    case 0x15:
    case 0x1e:
      goto switchD_008e6c21_caseD_15;
    }
  }
  *unaff_EBX = param_2;
  return 0x10;
switchD_008e6c78_caseD_16:
  param_2 = param_2 + 2;
  if (param_2 == in_EAX) {
    return 0xffffffff;
  }
  goto LAB_008e6c50;
}



undefined4 __fastcall FUN_008e6d40(int param_1)

{
  bool bVar1;
  char *in_EAX;
  undefined4 *unaff_ESI;
  
  bVar1 = false;
  *unaff_ESI = 0xb;
  if ((param_1 - (int)in_EAX == 6) && (*in_EAX == '\0')) {
    if (in_EAX[1] == 'X') {
      bVar1 = true;
    }
    else if (in_EAX[1] != 'x') {
      return 1;
    }
    if (in_EAX[2] == '\0') {
      if (in_EAX[3] == 'M') {
        bVar1 = true;
      }
      else if (in_EAX[3] != 'm') {
        return 1;
      }
      if (in_EAX[4] == '\0') {
        if (in_EAX[5] == 'L') {
          return 0;
        }
        if (in_EAX[5] == 'l') {
          if (bVar1) {
            return 0;
          }
          *unaff_ESI = 0xc;
        }
      }
    }
  }
  return 1;
}



char * FUN_008e6dc0(int param_1,char *param_2,char **param_3)

{
  char *in_EAX;
  int iVar1;
  char *pcVar2;
  ulonglong uVar3;
  longlong lVar4;
  
  if (in_EAX == param_2) {
    return (char *)0xffffffff;
  }
  if (*in_EAX == '\0') {
    uVar3 = (ulonglong)*(byte *)((byte)in_EAX[1] + 0x4c + param_1);
  }
  else {
    uVar3 = FUN_008e3640();
  }
  switch((int)uVar3) {
  case 5:
    if ((int)param_2 - (int)in_EAX < 2) {
      return (char *)0xfffffffe;
    }
    break;
  case 6:
    if ((int)param_2 - (int)in_EAX < 3) {
      return (char *)0xfffffffe;
    }
switchD_008e6f41_caseD_0:
    *param_3 = in_EAX;
    return (char *)0x0;
  case 7:
    pcVar2 = in_EAX;
    if ((int)param_2 - (int)in_EAX < 4) {
      return (char *)0xfffffffe;
    }
switchD_008e6e72_caseD_8:
    *param_3 = pcVar2;
    return (char *)0x0;
  case 0x16:
  case 0x18:
switchD_008e6e0d_caseD_16:
    in_EAX = in_EAX + 2;
    if (in_EAX == param_2) {
      return (char *)0xffffffff;
    }
    do {
      if (*in_EAX == '\0') {
        uVar3 = (ulonglong)*(byte *)((byte)in_EAX[1] + 0x4c + param_1);
      }
      else {
        uVar3 = FUN_008e3640();
      }
      pcVar2 = in_EAX;
      switch((int)uVar3) {
      case 5:
        if ((int)param_2 - (int)in_EAX < 2) {
          return (char *)0xfffffffe;
        }
        goto switchD_008e6f41_caseD_0;
      case 6:
        if ((int)param_2 - (int)in_EAX < 3) {
          return (char *)0xfffffffe;
        }
        goto switchD_008e6e72_caseD_8;
      case 7:
        if ((int)param_2 - (int)in_EAX < 4) {
          return (char *)0xfffffffe;
        }
        goto switchD_008e6e0d_caseD_8;
      default:
        goto switchD_008e6e72_caseD_8;
      case 9:
      case 10:
      case 0x15:
        iVar1 = FUN_008e6d40();
        if (iVar1 == 0) goto switchD_008e6f41_caseD_0;
        in_EAX = in_EAX + 2;
        if (in_EAX == param_2) {
          return (char *)0xffffffff;
        }
        iVar1 = (int)param_2 - (int)in_EAX;
        goto LAB_008e6f18;
      case 0xf:
        iVar1 = FUN_008e6d40();
        if (iVar1 == 0) goto switchD_008e6e0d_caseD_8;
        pcVar2 = in_EAX + 2;
        if (pcVar2 == param_2) {
          return (char *)0xffffffff;
        }
        if ((*pcVar2 == '\0') && (in_EAX[3] == '>')) {
          *param_3 = in_EAX + 4;
          return param_2;
        }
        goto switchD_008e6e72_caseD_8;
      case 0x1d:
        if ((*(uint *)(&DAT_00d3efa0 +
                      ((uint)((byte)in_EAX[1] >> 5) +
                      (uint)(byte)(&DAT_00d3f5a0)[(uint)(uVar3 >> 0x20) & 0xff] * 8) * 4) &
            1 << (in_EAX[1] & 0x1fU)) == 0) goto switchD_008e6e0d_caseD_8;
      case 0x16:
      case 0x18:
      case 0x19:
      case 0x1a:
      case 0x1b:
        in_EAX = in_EAX + 2;
        if (in_EAX == param_2) {
          return (char *)0xffffffff;
        }
      }
    } while( true );
  case 0x1d:
    if ((*(uint *)(&DAT_00d3efa0 +
                  ((uint)((byte)in_EAX[1] >> 5) +
                  (uint)(byte)(&DAT_00d3f4a0)[(uint)(uVar3 >> 0x20) & 0xff] * 8) * 4) &
        1 << (in_EAX[1] & 0x1fU)) != 0) goto switchD_008e6e0d_caseD_16;
  }
switchD_008e6e0d_caseD_8:
  *param_3 = in_EAX;
  return (char *)0x0;
LAB_008e6f18:
  if (*in_EAX == '\0') {
    lVar4 = CONCAT44(iVar1,(uint)*(byte *)((byte)in_EAX[1] + 0x4c + param_1));
  }
  else {
    lVar4 = FUN_008e3640();
  }
  iVar1 = (int)((ulonglong)lVar4 >> 0x20);
  switch((int)lVar4) {
  case 0:
  case 1:
  case 8:
    goto switchD_008e6f41_caseD_0;
  case 5:
    if (lVar4 < 0x200000000) {
      return (char *)0xfffffffe;
    }
  default:
    pcVar2 = in_EAX + 2;
    iVar1 = iVar1 + -2;
    break;
  case 6:
    if (lVar4 < 0x300000000) {
      return (char *)0xfffffffe;
    }
    pcVar2 = in_EAX + 3;
    iVar1 = iVar1 + -3;
    break;
  case 7:
    if (lVar4 < 0x400000000) {
      return (char *)0xfffffffe;
    }
    pcVar2 = in_EAX + 4;
    iVar1 = iVar1 + -4;
    break;
  case 0xf:
    pcVar2 = in_EAX + 2;
    iVar1 = iVar1 + -2;
    if (pcVar2 == param_2) {
      return (char *)0xffffffff;
    }
    if ((*pcVar2 == '\0') && (in_EAX[3] == '>')) {
      *param_3 = in_EAX + 4;
      return param_2;
    }
  }
  in_EAX = pcVar2;
  if (pcVar2 == param_2) {
    return (char *)0xffffffff;
  }
  goto LAB_008e6f18;
}



undefined4 __fastcall FUN_008e70d0(char *param_1)

{
  int in_EAX;
  int iVar1;
  char **unaff_ESI;
  
  if (in_EAX - (int)param_1 < 0xc) {
    return 0xffffffff;
  }
  iVar1 = 0;
  while ((*param_1 == '\0' && (param_1[1] == "CDATA["[iVar1]))) {
    iVar1 = iVar1 + 1;
    param_1 = param_1 + 2;
    if (5 < iVar1) {
      *unaff_ESI = param_1;
      return 8;
    }
  }
  *unaff_ESI = param_1;
  return 0;
}



undefined4 __fastcall FUN_008e7300(undefined4 param_1_00,byte *param_2,byte **param_1)

{
  byte bVar1;
  byte *in_EAX;
  uint uVar2;
  int unaff_EDI;
  undefined8 uVar3;
  
  if (param_2 == in_EAX) {
    return 0xffffffff;
  }
  bVar1 = *param_2;
  if (bVar1 == 0) {
    uVar2 = (uint)*(byte *)(param_2[1] + 0x4c + unaff_EDI);
  }
  else {
    uVar3 = FUN_008e3640();
    param_2 = (byte *)((ulonglong)uVar3 >> 0x20);
    uVar2 = (uint)uVar3;
  }
  switch(uVar2) {
  case 5:
switchD_008e73ae_caseD_5:
    if ((int)in_EAX - (int)param_2 < 2) {
      return 0xfffffffe;
    }
    break;
  case 6:
switchD_008e73ae_caseD_6:
    if ((int)in_EAX - (int)param_2 < 3) {
      return 0xfffffffe;
    }
    break;
  case 7:
switchD_008e73ae_caseD_7:
    if ((int)in_EAX - (int)param_2 < 4) {
      return 0xfffffffe;
    }
    break;
  case 0x16:
  case 0x18:
joined_r0x008e737a:
    param_2 = param_2 + 2;
    if (param_2 == in_EAX) {
      return 0xffffffff;
    }
    bVar1 = *param_2;
    if (bVar1 == 0) {
      uVar3 = CONCAT44(param_2,(uint)*(byte *)(param_2[1] + 0x4c + unaff_EDI));
    }
    else {
      uVar3 = FUN_008e3640();
    }
    param_2 = (byte *)((ulonglong)uVar3 >> 0x20);
    switch((int)uVar3) {
    case 5:
      goto switchD_008e73ae_caseD_5;
    case 6:
      goto switchD_008e73ae_caseD_6;
    case 7:
      goto switchD_008e73ae_caseD_7;
    default:
      break;
    case 9:
    case 10:
    case 0x15:
      param_2 = param_2 + 2;
      if (param_2 == in_EAX) {
        return 0xffffffff;
      }
      goto LAB_008e7417;
    case 0xb:
      goto switchD_008e73ae_caseD_b;
    case 0x16:
    case 0x17:
    case 0x18:
    case 0x19:
    case 0x1a:
    case 0x1b:
      goto joined_r0x008e737a;
    case 0x1d:
      if ((*(uint *)(&DAT_00d3efa0 +
                    ((uint)(param_2[1] >> 5) + (uint)(byte)(&DAT_00d3f5a0)[bVar1] * 8) * 4) &
          1 << (param_2[1] & 0x1f)) == 0) break;
      goto joined_r0x008e737a;
    }
  case 0x1d:
    if ((*(uint *)(&DAT_00d3efa0 +
                  ((uint)(param_2[1] >> 5) + (uint)(byte)(&DAT_00d3f4a0)[bVar1] * 8) * 4) &
        1 << (param_2[1] & 0x1f)) != 0) goto joined_r0x008e737a;
  }
switchD_008e73ae_caseD_8:
  *param_1 = param_2;
  return 0;
LAB_008e7417:
  if (*param_2 == 0) {
    uVar3 = CONCAT44(param_2,(uint)*(byte *)(param_2[1] + 0x4c + unaff_EDI));
  }
  else {
    uVar3 = FUN_008e3640();
  }
  param_2 = (byte *)((ulonglong)uVar3 >> 0x20);
  switch((int)uVar3) {
  case 9:
  case 10:
  case 0x15:
    param_2 = param_2 + 2;
    if (param_2 == in_EAX) {
      return 0xffffffff;
    }
    break;
  case 0xb:
    goto switchD_008e73ae_caseD_b;
  default:
    goto switchD_008e73ae_caseD_8;
  }
  goto LAB_008e7417;
switchD_008e73ae_caseD_b:
  *param_1 = param_2 + 2;
  return 5;
}



undefined4 __fastcall FUN_008e7510(undefined4 param_1,char *param_2)

{
  char *pcVar1;
  int iVar2;
  uint uVar3;
  int *unaff_EBX;
  char *unaff_ESI;
  int unaff_EDI;
  undefined8 uVar4;
  
  if (param_2 != unaff_ESI) {
    if (*param_2 == '\0') {
      uVar3 = (uint)*(byte *)((byte)param_2[1] + 0x4c + unaff_EDI);
    }
    else {
      uVar4 = FUN_008e3640();
      param_2 = (char *)((ulonglong)uVar4 >> 0x20);
      uVar3 = (uint)uVar4;
    }
    uVar4 = CONCAT44(param_2,uVar3);
    while( true ) {
      iVar2 = (int)((ulonglong)uVar4 >> 0x20);
      if (1 < (int)uVar4 - 0x18U) {
        *unaff_EBX = iVar2;
        return 0;
      }
      pcVar1 = (char *)(iVar2 + 2);
      if (pcVar1 == unaff_ESI) break;
      if (*pcVar1 == '\0') {
        uVar4 = CONCAT44(pcVar1,(uint)*(byte *)((byte)pcVar1[1] + 0x4c + unaff_EDI));
      }
      else {
        uVar4 = FUN_008e3640();
      }
      if ((int)uVar4 == 0x12) {
        *unaff_EBX = (int)((ulonglong)uVar4 >> 0x20) + 2;
        return 10;
      }
    }
  }
  return 0xffffffff;
}



undefined4 __fastcall FUN_008e7590(char *param_1_00,char *param_2,int param_1)

{
  char *pcVar1;
  int iVar2;
  int *in_EAX;
  undefined4 uVar3;
  uint uVar4;
  undefined8 uVar5;
  
  if (param_2 != param_1_00) {
    if (*param_2 == '\0') {
      if (param_2[1] == 0x78) {
        uVar3 = FUN_008e7510();
        return uVar3;
      }
      uVar4 = (uint)*(byte *)((byte)param_2[1] + 0x4c + param_1);
    }
    else {
      uVar5 = FUN_008e3640();
      param_2 = (char *)((ulonglong)uVar5 >> 0x20);
      uVar4 = (uint)uVar5;
    }
    uVar5 = CONCAT44(param_2,uVar4);
    while( true ) {
      iVar2 = (int)((ulonglong)uVar5 >> 0x20);
      if ((int)uVar5 != 0x19) {
        *in_EAX = iVar2;
        return 0;
      }
      pcVar1 = (char *)(iVar2 + 2);
      if (pcVar1 == param_1_00) break;
      if (*pcVar1 == '\0') {
        uVar5 = CONCAT44(pcVar1,(uint)*(byte *)((byte)pcVar1[1] + 0x4c + param_1));
      }
      else {
        uVar5 = FUN_008e3640();
      }
      if ((int)uVar5 == 0x12) {
        *in_EAX = (int)((ulonglong)uVar5 >> 0x20) + 2;
        return 10;
      }
    }
  }
  return 0xffffffff;
}



undefined4 __fastcall FUN_008e7620(undefined4 param_1_00,byte *param_2,int param_1)

{
  byte bVar1;
  byte *in_EAX;
  uint uVar2;
  undefined4 uVar3;
  byte **unaff_EDI;
  undefined8 uVar4;
  
  if (param_2 == in_EAX) {
    return 0xffffffff;
  }
  bVar1 = *param_2;
  if (bVar1 == 0) {
    uVar2 = (uint)*(byte *)(param_2[1] + 0x4c + param_1);
  }
  else {
    uVar4 = FUN_008e3640();
    param_2 = (byte *)((ulonglong)uVar4 >> 0x20);
    uVar2 = (uint)uVar4;
  }
  switch(uVar2) {
  case 5:
switchD_008e76ce_caseD_5:
    if ((int)in_EAX - (int)param_2 < 2) {
      return 0xfffffffe;
    }
    break;
  case 6:
switchD_008e76ce_caseD_6:
    if ((int)in_EAX - (int)param_2 < 3) {
      return 0xfffffffe;
    }
    break;
  case 7:
switchD_008e76ce_caseD_7:
    if ((int)in_EAX - (int)param_2 < 4) {
      return 0xfffffffe;
    }
    break;
  case 0x13:
    uVar3 = FUN_008e7590(param_1);
    return uVar3;
  case 0x16:
  case 0x18:
joined_r0x008e769a:
    param_2 = param_2 + 2;
    if (param_2 == in_EAX) {
      return 0xffffffff;
    }
    bVar1 = *param_2;
    if (bVar1 == 0) {
      uVar4 = CONCAT44(param_2,(uint)*(byte *)(param_2[1] + 0x4c + param_1));
    }
    else {
      uVar4 = FUN_008e3640();
    }
    param_2 = (byte *)((ulonglong)uVar4 >> 0x20);
    switch((int)uVar4) {
    case 5:
      goto switchD_008e76ce_caseD_5;
    case 6:
      goto switchD_008e76ce_caseD_6;
    case 7:
      goto switchD_008e76ce_caseD_7;
    default:
      break;
    case 0x12:
      *unaff_EDI = param_2 + 2;
      return 9;
    case 0x16:
    case 0x18:
    case 0x19:
    case 0x1a:
    case 0x1b:
      goto joined_r0x008e769a;
    case 0x1d:
      if ((*(uint *)(&DAT_00d3efa0 +
                    ((uint)(param_2[1] >> 5) + (uint)(byte)(&DAT_00d3f5a0)[bVar1] * 8) * 4) &
          1 << (param_2[1] & 0x1f)) == 0) break;
      goto joined_r0x008e769a;
    }
  case 0x1d:
    if ((*(uint *)(&DAT_00d3efa0 +
                  ((uint)(param_2[1] >> 5) + (uint)(byte)(&DAT_00d3f4a0)[bVar1] * 8) * 4) &
        1 << (param_2[1] & 0x1f)) != 0) goto joined_r0x008e769a;
  }
  *unaff_EDI = param_2;
  return 0;
}



int FUN_008e77e0(int param_1,byte *param_2,byte *param_3,byte **param_4)

{
  byte bVar1;
  bool bVar2;
  int iVar3;
  int iVar4;
  byte *pbVar5;
  undefined8 uVar6;
  
  bVar2 = false;
  if (param_2 != param_3) {
    do {
      bVar1 = *param_2;
      if (bVar1 == 0) {
        uVar6 = CONCAT44(param_2,(uint)*(byte *)(param_2[1] + 0x4c + param_1));
      }
      else {
        uVar6 = FUN_008e3640();
      }
      param_2 = (byte *)((ulonglong)uVar6 >> 0x20);
      switch((int)uVar6) {
      case 5:
        if ((int)param_3 - (int)param_2 < 2) {
          return -2;
        }
      default:
switchD_008e782e_caseD_8:
        *param_4 = param_2;
        return 0;
      case 6:
        if ((int)param_3 - (int)param_2 < 3) {
          return -2;
        }
LAB_008e7862:
        *param_4 = param_2;
        return 0;
      case 7:
        if ((int)param_3 - (int)param_2 < 4) {
          return -2;
        }
        goto switchD_008e782e_caseD_8;
      case 9:
      case 10:
      case 0x15:
        while( true ) {
          pbVar5 = param_2 + 2;
          if (pbVar5 == param_3) {
            return -1;
          }
          if (*pbVar5 == 0) {
            uVar6 = CONCAT44(pbVar5,(uint)*(byte *)(param_2[3] + 0x4c + param_1));
          }
          else {
            uVar6 = FUN_008e3640();
          }
          param_2 = (byte *)((ulonglong)uVar6 >> 0x20);
          iVar3 = (int)uVar6;
          if (iVar3 == 0xe) break;
          if ((iVar3 < 9) || ((10 < iVar3 && (iVar3 != 0x15)))) goto LAB_008e7928;
        }
      case 0xe:
        bVar2 = false;
        do {
          pbVar5 = param_2 + 2;
          if (pbVar5 == param_3) {
            return -1;
          }
          if (*pbVar5 == 0) {
            uVar6 = CONCAT44(pbVar5,(uint)*(byte *)(param_2[3] + 0x4c + param_1));
          }
          else {
            uVar6 = FUN_008e3640();
          }
          param_2 = (byte *)((ulonglong)uVar6 >> 0x20);
          iVar3 = (int)uVar6;
          if ((iVar3 == 0xc) || (iVar3 == 0xd)) {
switchD_008e79ca_caseD_4:
            pbVar5 = param_2 + 2;
            do {
              if (pbVar5 == param_3) {
                return -1;
              }
              if (*pbVar5 == 0) {
                uVar6 = CONCAT44(pbVar5,(uint)*(byte *)(pbVar5[1] + 0x4c + param_1));
              }
              else {
                uVar6 = FUN_008e3640();
              }
              param_2 = (byte *)((ulonglong)uVar6 >> 0x20);
              if ((int)uVar6 == iVar3) {
                pbVar5 = param_2 + 2;
                if (pbVar5 == param_3) {
                  return -1;
                }
                if (*pbVar5 == 0) {
                  uVar6 = CONCAT44(pbVar5,(uint)*(byte *)(param_2[3] + 0x4c + param_1));
                }
                else {
                  uVar6 = FUN_008e3640();
                }
                param_2 = (byte *)((ulonglong)uVar6 >> 0x20);
                pbVar5 = param_2;
                switch((int)uVar6) {
                case 9:
                case 10:
                case 0x15:
                  goto switchD_008e7a6a_caseD_9;
                case 0xb:
                  goto switchD_008e7a6a_caseD_b;
                default:
                  goto switchD_008e79ca_caseD_0;
                case 0x11:
                  goto switchD_008e7a6a_caseD_11;
                }
              }
              switch((int)uVar6) {
              case 0:
              case 1:
              case 2:
              case 8:
                goto switchD_008e79ca_caseD_0;
              case 3:
                iVar4 = FUN_008e7620(param_1);
                if (iVar4 < 1) {
                  if (iVar4 == 0) {
                    *param_4 = pbVar5;
                    return 0;
                  }
                  return iVar4;
                }
                break;
              default:
                goto switchD_008e79ca_caseD_4;
              case 5:
                if ((int)param_3 - (int)param_2 < 2) {
                  return -2;
                }
                goto switchD_008e79ca_caseD_4;
              case 6:
                if ((int)param_3 - (int)param_2 < 3) {
                  return -2;
                }
                pbVar5 = param_2 + 3;
                break;
              case 7:
                if ((int)param_3 - (int)param_2 < 4) {
                  return -2;
                }
                pbVar5 = param_2 + 4;
              }
            } while( true );
          }
          if (iVar3 < 9) goto switchD_008e782e_caseD_8;
          if ((10 < iVar3) && (iVar3 != 0x15)) {
            *param_4 = param_2;
            return 0;
          }
        } while( true );
      case 0x16:
      case 0x18:
      case 0x19:
      case 0x1a:
      case 0x1b:
        break;
      case 0x17:
        if (bVar2) {
LAB_008e7928:
          *param_4 = param_2;
          return 0;
        }
        pbVar5 = param_2 + 2;
        bVar2 = true;
        if (pbVar5 == param_3) {
          return -1;
        }
        bVar1 = *pbVar5;
        if (bVar1 == 0) {
          uVar6 = CONCAT44(pbVar5,(uint)*(byte *)(param_2[3] + 0x4c + param_1));
        }
        else {
          uVar6 = FUN_008e3640();
        }
        param_2 = (byte *)((ulonglong)uVar6 >> 0x20);
        switch((int)uVar6) {
        case 5:
          if ((int)param_3 - (int)param_2 < 2) {
            return -2;
          }
          goto LAB_008e7862;
        case 6:
          if ((int)param_3 - (int)param_2 < 3) {
            return -2;
          }
          goto switchD_008e782e_caseD_8;
        case 7:
          if (3 < (int)param_3 - (int)param_2) {
            *param_4 = param_2;
            return 0;
          }
          return -2;
        default:
          goto switchD_008e782e_caseD_8;
        case 0x16:
        case 0x18:
          break;
        case 0x1d:
          if ((*(uint *)(&DAT_00d3efa0 +
                        ((uint)(param_2[1] >> 5) + (uint)(byte)(&DAT_00d3f4a0)[bVar1] * 8) * 4) &
              1 << (param_2[1] & 0x1f)) == 0) goto switchD_008e782e_caseD_8;
        }
        break;
      case 0x1d:
        if ((*(uint *)(&DAT_00d3efa0 +
                      ((uint)(param_2[1] >> 5) + (uint)(byte)(&DAT_00d3f5a0)[bVar1] * 8) * 4) &
            1 << (param_2[1] & 0x1f)) == 0) goto LAB_008e7862;
      }
switchD_008e782e_caseD_16:
      param_2 = param_2 + 2;
    } while (param_2 != param_3);
  }
  return -1;
  do {
    param_2 = (byte *)((ulonglong)uVar6 >> 0x20);
    pbVar5 = param_2;
    switch((int)uVar6) {
    case 5:
      if ((int)param_3 - (int)param_2 < 2) {
        return -2;
      }
      goto switchD_008e79ca_caseD_0;
    case 6:
      if ((int)param_3 - (int)param_2 < 3) {
        return -2;
      }
      goto switchD_008e79ca_caseD_0;
    case 7:
      if ((int)param_3 - (int)param_2 < 4) {
        return -2;
      }
    default:
      goto switchD_008e79ca_caseD_0;
    case 9:
    case 10:
    case 0x15:
switchD_008e7a6a_caseD_9:
      pbVar5 = param_2 + 2;
      if (pbVar5 == param_3) {
        return -1;
      }
      if (*pbVar5 == 0) {
        uVar6 = CONCAT44(pbVar5,(uint)*(byte *)(param_2[3] + 0x4c + param_1));
      }
      else {
        uVar6 = FUN_008e3640();
      }
      break;
    case 0xb:
      goto switchD_008e7a6a_caseD_b;
    case 0x11:
      goto switchD_008e7a6a_caseD_11;
    case 0x16:
    case 0x18:
      goto switchD_008e782e_caseD_16;
    case 0x1d:
      if ((*(uint *)(&DAT_00d3efa0 +
                    ((uint)(param_2[1] >> 5) + (uint)(byte)(&DAT_00d3f4a0)[*param_2] * 8) * 4) &
          1 << (param_2[1] & 0x1f)) == 0) goto switchD_008e79ca_caseD_0;
      goto switchD_008e782e_caseD_16;
    }
  } while( true );
switchD_008e7a6a_caseD_11:
  param_2 = pbVar5 + 2;
  if (param_2 == param_3) {
    return -1;
  }
  if ((*param_2 == 0) && (pbVar5[3] == 0x3e)) {
    *param_4 = pbVar5 + 4;
    return 3;
  }
  goto switchD_008e79ca_caseD_0;
switchD_008e7a6a_caseD_b:
  *param_4 = param_2 + 2;
  return 1;
switchD_008e79ca_caseD_0:
  *param_4 = param_2;
  return 0;
}



undefined4 __fastcall FUN_008e7ce0(byte *param_1_00,byte *param_2,int param_1)

{
  byte bVar1;
  bool bVar2;
  byte **in_EAX;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  byte bVar6;
  byte *pbVar7;
  undefined8 uVar8;
  
  if (param_2 == param_1_00) {
    return 0xffffffff;
  }
  bVar1 = *param_2;
  if (bVar1 == 0) {
    uVar3 = (uint)*(byte *)(param_2[1] + 0x4c + param_1);
  }
  else {
    uVar8 = FUN_008e3640();
    param_2 = (byte *)((ulonglong)uVar8 >> 0x20);
    uVar3 = (uint)uVar8;
  }
  switch(uVar3) {
  case 5:
switchD_008e7d98_caseD_5:
    if ((int)param_1_00 - (int)param_2 < 2) {
      return 0xfffffffe;
    }
    break;
  case 6:
switchD_008e7d98_caseD_6:
    if ((int)param_1_00 - (int)param_2 < 3) {
      return 0xfffffffe;
    }
    break;
  case 7:
switchD_008e7d98_caseD_7:
    if ((int)param_1_00 - (int)param_2 < 4) {
      return 0xfffffffe;
    }
    break;
  case 0xf:
    uVar5 = FUN_008e6dc0(param_1,param_1_00);
    return uVar5;
  case 0x10:
    pbVar7 = param_2 + 2;
    if (pbVar7 == param_1_00) {
      return 0xffffffff;
    }
    if (*pbVar7 == 0) {
      uVar8 = CONCAT44(pbVar7,(uint)*(byte *)(param_2[3] + 0x4c + param_1));
    }
    else {
      uVar8 = FUN_008e3640();
    }
    param_2 = (byte *)((ulonglong)uVar8 >> 0x20);
    if ((int)uVar8 == 0x14) {
      uVar5 = FUN_008e70d0();
      return uVar5;
    }
    if ((int)uVar8 == 0x1b) {
      uVar5 = FUN_008e6ad0(param_1);
      return uVar5;
    }
    break;
  case 0x11:
    uVar5 = FUN_008e7300();
    return uVar5;
  case 0x16:
  case 0x18:
switchD_008e7d25_caseD_16:
    param_2 = param_2 + 2;
    bVar2 = false;
    if (param_2 == param_1_00) {
      return 0xffffffff;
    }
    do {
      bVar1 = *param_2;
      if (bVar1 == 0) {
        uVar8 = CONCAT44(param_2,(uint)*(byte *)(param_2[1] + 0x4c + param_1));
      }
      else {
        uVar8 = FUN_008e3640();
      }
      param_2 = (byte *)((ulonglong)uVar8 >> 0x20);
      pbVar7 = param_2;
      switch((int)uVar8) {
      case 5:
        goto switchD_008e7d98_caseD_5;
      case 6:
        goto switchD_008e7d98_caseD_6;
      case 7:
        goto switchD_008e7d98_caseD_7;
      default:
        goto switchD_008e7d98_caseD_8;
      case 9:
      case 10:
      case 0x15:
        param_2 = param_2 + 2;
        if (param_2 == param_1_00) {
          return 0xffffffff;
        }
        goto LAB_008e7e94;
      case 0xb:
        goto switchD_008e7d98_caseD_b;
      case 0x11:
        goto switchD_008e7d98_caseD_11;
      case 0x17:
        if (!bVar2) {
          pbVar7 = param_2 + 2;
          bVar2 = true;
          if (pbVar7 == param_1_00) {
            return 0xffffffff;
          }
          bVar1 = *pbVar7;
          if (bVar1 == 0) {
            uVar8 = CONCAT44(pbVar7,(uint)*(byte *)(param_2[3] + 0x4c + param_1));
          }
          else {
            uVar8 = FUN_008e3640();
          }
          param_2 = (byte *)((ulonglong)uVar8 >> 0x20);
          switch((int)uVar8) {
          case 5:
            goto switchD_008e7d98_caseD_5;
          case 6:
            goto switchD_008e7d98_caseD_6;
          case 7:
            goto switchD_008e7d98_caseD_7;
          default:
            break;
          case 0x16:
          case 0x18:
            goto switchD_008e7d98_caseD_16;
          case 0x1d:
            bVar6 = param_2[1];
            iVar4 = (uint)(bVar6 >> 5) + (uint)(byte)(&DAT_00d3f4a0)[bVar1] * 8;
            goto LAB_008e7e25;
          }
        }
        goto switchD_008e7d98_caseD_8;
      case 0x1d:
        bVar6 = param_2[1];
        iVar4 = (uint)(bVar6 >> 5) + (uint)(byte)(&DAT_00d3f5a0)[bVar1] * 8;
LAB_008e7e25:
        if ((*(uint *)(&DAT_00d3efa0 + iVar4 * 4) & 1 << (bVar6 & 0x1f)) == 0)
        goto switchD_008e7d98_caseD_8;
      case 0x16:
      case 0x18:
      case 0x19:
      case 0x1a:
      case 0x1b:
switchD_008e7d98_caseD_16:
        param_2 = param_2 + 2;
        if (param_2 == param_1_00) {
          return 0xffffffff;
        }
      }
    } while( true );
  case 0x1d:
    if ((*(uint *)(&DAT_00d3efa0 +
                  ((uint)(param_2[1] >> 5) + (uint)(byte)(&DAT_00d3f4a0)[bVar1] * 8) * 4) &
        1 << (param_2[1] & 0x1f)) != 0) goto switchD_008e7d25_caseD_16;
  }
  goto switchD_008e7d98_caseD_8;
switchD_008e7ec4_caseD_9:
  param_2 = param_2 + 2;
  if (param_2 == param_1_00) {
    return 0xffffffff;
  }
  goto LAB_008e7e94;
switchD_008e7d98_caseD_b:
  *in_EAX = param_2 + 2;
  return 2;
LAB_008e7e94:
  if (*param_2 == 0) {
    uVar8 = CONCAT44(param_2,(uint)*(byte *)(param_2[1] + 0x4c + param_1));
  }
  else {
    uVar8 = FUN_008e3640();
  }
  param_2 = (byte *)((ulonglong)uVar8 >> 0x20);
  pbVar7 = param_2;
  switch((int)uVar8) {
  case 5:
    goto switchD_008e7d98_caseD_5;
  case 6:
    goto switchD_008e7d98_caseD_6;
  case 7:
    goto switchD_008e7d98_caseD_7;
  default:
    goto switchD_008e7d98_caseD_8;
  case 9:
  case 10:
  case 0x15:
    goto switchD_008e7ec4_caseD_9;
  case 0xb:
    goto switchD_008e7d98_caseD_b;
  case 0x11:
    goto switchD_008e7d98_caseD_11;
  case 0x16:
  case 0x18:
    break;
  case 0x1d:
    if ((*(uint *)(&DAT_00d3efa0 +
                  ((uint)(param_2[1] >> 5) + (uint)(byte)(&DAT_00d3f4a0)[*param_2] * 8) * 4) &
        1 << (param_2[1] & 0x1f)) == 0) goto switchD_008e7d98_caseD_8;
  }
  uVar5 = FUN_008e77e0(param_1,param_2 + 2,param_1_00);
  return uVar5;
switchD_008e7d98_caseD_11:
  param_2 = pbVar7 + 2;
  if (param_2 == param_1_00) {
    return 0xffffffff;
  }
  if ((*param_2 == 0) && (pbVar7[3] == 0x3e)) {
    *in_EAX = pbVar7 + 4;
    return 4;
  }
switchD_008e7d98_caseD_8:
  *in_EAX = param_2;
  return 0;
}



undefined4 __fastcall FUN_008e8340(undefined4 param_1_00,byte *param_2,int param_1)

{
  byte bVar1;
  byte *in_EAX;
  uint uVar2;
  byte **unaff_EDI;
  undefined8 uVar3;
  
  if (param_2 == in_EAX) {
    return 0xffffffff;
  }
  bVar1 = *param_2;
  if (bVar1 == 0) {
    uVar2 = (uint)*(byte *)(param_2[1] + 0x4c + param_1);
  }
  else {
    uVar3 = FUN_008e3640();
    param_2 = (byte *)((ulonglong)uVar3 >> 0x20);
    uVar2 = (uint)uVar3;
  }
  switch(uVar2) {
  case 5:
switchD_008e8381_caseD_5:
    if ((int)in_EAX - (int)param_2 < 2) {
      return 0xfffffffe;
    }
    break;
  case 6:
switchD_008e8381_caseD_6:
    if ((int)in_EAX - (int)param_2 < 3) {
      return 0xfffffffe;
    }
    break;
  case 7:
switchD_008e8381_caseD_7:
    if ((int)in_EAX - (int)param_2 < 4) {
      return 0xfffffffe;
    }
    break;
  case 9:
  case 10:
  case 0x15:
  case 0x1e:
    *unaff_EDI = param_2;
    return 0x16;
  case 0x16:
  case 0x18:
joined_r0x008e83ba:
    param_2 = param_2 + 2;
    if (param_2 == in_EAX) {
      return 0xffffffff;
    }
    bVar1 = *param_2;
    if (bVar1 == 0) {
      uVar3 = CONCAT44(param_2,(uint)*(byte *)(param_2[1] + 0x4c + param_1));
    }
    else {
      uVar3 = FUN_008e3640();
    }
    param_2 = (byte *)((ulonglong)uVar3 >> 0x20);
    switch((int)uVar3) {
    case 5:
      goto switchD_008e8381_caseD_5;
    case 6:
      goto switchD_008e8381_caseD_6;
    case 7:
      goto switchD_008e8381_caseD_7;
    default:
      break;
    case 0x12:
      *unaff_EDI = param_2 + 2;
      return 0x1c;
    case 0x16:
    case 0x18:
    case 0x19:
    case 0x1a:
    case 0x1b:
      goto joined_r0x008e83ba;
    case 0x1d:
      if ((*(uint *)(&DAT_00d3efa0 +
                    ((uint)(param_2[1] >> 5) + (uint)(byte)(&DAT_00d3f5a0)[bVar1] * 8) * 4) &
          1 << (param_2[1] & 0x1f)) == 0) break;
      goto joined_r0x008e83ba;
    }
  case 0x1d:
    if ((*(uint *)(&DAT_00d3efa0 +
                  ((uint)(param_2[1] >> 5) + (uint)(byte)(&DAT_00d3f4a0)[bVar1] * 8) * 4) &
        1 << (param_2[1] & 0x1f)) != 0) goto joined_r0x008e83ba;
  }
  *unaff_EDI = param_2;
  return 0;
}



undefined4 __fastcall FUN_008e84f0(undefined4 param_1_00,byte *param_2,int param_1)

{
  byte bVar1;
  byte *in_EAX;
  uint uVar2;
  byte **unaff_EDI;
  undefined8 uVar3;
  
  if (param_2 == in_EAX) {
    return 0xffffffff;
  }
  bVar1 = *param_2;
  if (bVar1 == 0) {
    uVar2 = (uint)*(byte *)(param_2[1] + 0x4c + param_1);
  }
  else {
    uVar3 = FUN_008e3640();
    param_2 = (byte *)((ulonglong)uVar3 >> 0x20);
    uVar2 = (uint)uVar3;
  }
  switch(uVar2) {
  case 5:
switchD_008e8531_caseD_5:
    if ((int)in_EAX - (int)param_2 < 2) {
      return 0xfffffffe;
    }
    break;
  case 6:
switchD_008e8531_caseD_6:
    if ((int)in_EAX - (int)param_2 < 3) {
      return 0xfffffffe;
    }
    break;
  case 7:
switchD_008e8531_caseD_7:
    if ((int)in_EAX - (int)param_2 < 4) {
      return 0xfffffffe;
    }
    break;
  case 0x16:
  case 0x18:
joined_r0x008e856a:
    param_2 = param_2 + 2;
    if (param_2 == in_EAX) {
      return 0xffffffec;
    }
    bVar1 = *param_2;
    if (bVar1 == 0) {
      uVar3 = CONCAT44(param_2,(uint)*(byte *)(param_2[1] + 0x4c + param_1));
    }
    else {
      uVar3 = FUN_008e3640();
    }
    param_2 = (byte *)((ulonglong)uVar3 >> 0x20);
    switch((int)uVar3) {
    case 5:
      goto switchD_008e8531_caseD_5;
    case 6:
      goto switchD_008e8531_caseD_6;
    case 7:
      goto switchD_008e8531_caseD_7;
    default:
      break;
    case 9:
    case 10:
    case 0xb:
    case 0x15:
    case 0x1e:
    case 0x20:
    case 0x24:
      *unaff_EDI = param_2;
      return 0x14;
    case 0x16:
    case 0x18:
    case 0x19:
    case 0x1a:
    case 0x1b:
      goto joined_r0x008e856a;
    case 0x1d:
      if ((*(uint *)(&DAT_00d3efa0 +
                    ((uint)(param_2[1] >> 5) + (uint)(byte)(&DAT_00d3f5a0)[bVar1] * 8) * 4) &
          1 << (param_2[1] & 0x1f)) == 0) break;
      goto joined_r0x008e856a;
    }
  case 0x1d:
    if ((*(uint *)(&DAT_00d3efa0 +
                  ((uint)(param_2[1] >> 5) + (uint)(byte)(&DAT_00d3f4a0)[bVar1] * 8) * 4) &
        1 << (param_2[1] & 0x1f)) != 0) goto joined_r0x008e856a;
  }
  *unaff_EDI = param_2;
  return 0;
}



undefined4 __fastcall
FUN_008e86a0(undefined4 param_1_00,char *param_2_00,int param_1,char **param_2)

{
  uint uVar1;
  char *pcVar2;
  int unaff_EBX;
  int iVar3;
  char *unaff_EDI;
  undefined8 uVar4;
  
  if (param_2_00 != unaff_EDI) {
    iVar3 = (int)unaff_EDI - (int)param_2_00;
    do {
      if (*param_2_00 == '\0') {
        uVar4 = CONCAT44(param_2_00,(uint)*(byte *)((byte)param_2_00[1] + 0x4c + param_1));
      }
      else {
        uVar4 = FUN_008e3640();
      }
      pcVar2 = (char *)((ulonglong)uVar4 >> 0x20);
      switch((int)uVar4) {
      case 0:
      case 1:
      case 8:
        *param_2 = pcVar2;
        return 0;
      case 5:
        if (iVar3 < 2) {
          return 0xfffffffe;
        }
      default:
        param_2_00 = pcVar2 + 2;
        iVar3 = iVar3 + -2;
        break;
      case 6:
        if (iVar3 < 3) {
          return 0xfffffffe;
        }
        param_2_00 = pcVar2 + 3;
        iVar3 = iVar3 + -3;
        break;
      case 7:
        if (iVar3 < 4) {
          return 0xfffffffe;
        }
        param_2_00 = pcVar2 + 4;
        iVar3 = iVar3 + -4;
        break;
      case 0xc:
      case 0xd:
        param_2_00 = pcVar2 + 2;
        iVar3 = iVar3 + -2;
        if ((int)uVar4 == unaff_EBX) {
          if (param_2_00 != unaff_EDI) {
            *param_2 = param_2_00;
            if (*param_2_00 == '\0') {
              uVar1 = (uint)*(byte *)((byte)pcVar2[3] + 0x4c + param_1);
            }
            else {
              uVar1 = FUN_008e3640();
            }
            switch(uVar1) {
            case 9:
            case 10:
            case 0xb:
            case 0x14:
            case 0x15:
            case 0x1e:
              return 0x1b;
            default:
              return 0;
            }
          }
          return 0xffffffe5;
        }
      }
    } while (param_2_00 != unaff_EDI);
  }
  return 0xffffffff;
}



undefined4 FUN_008e9250(int param_1,int param_2,int param_3,char **param_4)

{
  byte bVar1;
  uint uVar2;
  byte extraout_CL;
  byte bVar3;
  char extraout_DL;
  char cVar4;
  char *pcVar5;
  
  pcVar5 = (char *)(param_2 + 2);
  do {
    if (pcVar5 == (char *)(param_3 + -2)) {
      return 1;
    }
    bVar3 = pcVar5[1];
    if (*pcVar5 == '\0') {
      uVar2 = (uint)*(byte *)(bVar3 + 0x4c + param_1);
      cVar4 = '\0';
    }
    else {
      uVar2 = FUN_008e3640();
      cVar4 = extraout_DL;
      bVar3 = extraout_CL;
    }
    switch(uVar2) {
    case 9:
    case 10:
    case 0xd:
    case 0xe:
    case 0xf:
    case 0x10:
    case 0x11:
    case 0x12:
    case 0x13:
    case 0x17:
    case 0x18:
    case 0x19:
    case 0x1b:
    case 0x1e:
    case 0x1f:
    case 0x20:
    case 0x21:
    case 0x22:
    case 0x23:
      break;
    default:
switchD_008e9299_caseD_b:
      if ((cVar4 != '\0') || ((bVar3 != 0x24 && (bVar3 != 0x40)))) {
        *param_4 = pcVar5;
        return 0;
      }
      break;
    case 0x15:
      if ((cVar4 == '\0') && (bVar3 == 9)) {
        *param_4 = pcVar5;
        return 0;
      }
      break;
    case 0x16:
    case 0x1a:
      bVar1 = bVar3;
      if (cVar4 != '\0') {
        bVar1 = 0xff;
      }
      if ((bVar1 & 0x80) != 0) goto switchD_008e9299_caseD_b;
    }
    pcVar5 = pcVar5 + 2;
  } while( true );
}



int FUN_008e9330(int param_1,char *param_2,int param_3,char **param_4)

{
  char cVar1;
  byte extraout_CL;
  byte bVar2;
  int iVar3;
  int iVar4;
  char *pcVar5;
  undefined8 uVar6;
  int local_8;
  int local_4;
  
  iVar4 = 0;
  pcVar5 = (char *)((int)param_2 + 2);
  param_2 = (char *)((int)param_2 + 4);
  iVar3 = 1;
  local_4 = 0;
  local_8 = 0;
LAB_008e9358:
  cVar1 = *pcVar5;
  bVar2 = pcVar5[1];
  if (cVar1 == '\0') {
    uVar6 = CONCAT44(iVar3,(uint)*(byte *)(bVar2 + 0x4c + param_1));
    iVar4 = local_4;
  }
  else {
    uVar6 = FUN_008e3640();
    bVar2 = extraout_CL;
  }
  iVar3 = (int)((ulonglong)uVar6 >> 0x20);
  switch((int)uVar6) {
  case 3:
switchD_008e938d_caseD_3:
    if (iVar4 < param_3) {
      pcVar5 = pcVar5 + 2;
      param_2 = param_2 + 2;
      *(undefined *)(param_4 + 3) = 0;
      goto LAB_008e9358;
    }
    break;
  case 5:
  case 0x16:
  case 0x18:
  case 0x1d:
    if (iVar3 == 0) {
      if (iVar4 < param_3) {
        *param_4 = pcVar5;
        *(undefined *)(param_4 + 3) = 1;
      }
      pcVar5 = pcVar5 + 2;
      param_2 = param_2 + 2;
      iVar3 = 1;
      goto LAB_008e9358;
    }
    break;
  case 6:
    if (iVar3 == 0) {
      if (iVar4 < param_3) {
        *param_4 = pcVar5;
        *(undefined *)(param_4 + 3) = 1;
      }
      iVar3 = 1;
    }
    pcVar5 = pcVar5 + 3;
    param_2 = param_2 + 3;
    goto LAB_008e9358;
  case 7:
    if (iVar3 == 0) {
      if (iVar4 < param_3) {
        *param_4 = pcVar5;
        *(undefined *)(param_4 + 3) = 1;
      }
      iVar3 = 1;
    }
    pcVar5 = pcVar5 + 4;
    param_2 = param_2 + 4;
    goto LAB_008e9358;
  case 9:
  case 10:
    if (iVar3 == 1) {
      iVar3 = 0;
      pcVar5 = pcVar5 + 2;
      param_2 = param_2 + 2;
      goto LAB_008e9358;
    }
    if (iVar3 == 2) goto switchD_008e938d_caseD_3;
    break;
  case 0xb:
  case 0x11:
    if (iVar3 != 2) {
      return iVar4;
    }
    break;
  case 0xc:
    if (iVar3 != 2) {
      if (iVar4 < param_3) {
        param_4[1] = param_2;
      }
      iVar3 = 2;
      pcVar5 = pcVar5 + 2;
      param_2 = param_2 + 2;
      local_8 = 0xc;
      goto LAB_008e9358;
    }
    if (local_8 == 0xc) {
      if (iVar4 < param_3) {
        param_4[2] = pcVar5;
      }
LAB_008e9448:
      iVar3 = 0;
      iVar4 = iVar4 + 1;
      param_4 = param_4 + 4;
      pcVar5 = pcVar5 + 2;
      param_2 = param_2 + 2;
      local_4 = iVar4;
      goto LAB_008e9358;
    }
    break;
  case 0xd:
    if (iVar3 != 2) {
      if (iVar4 < param_3) {
        param_4[1] = param_2;
      }
      iVar3 = 2;
      pcVar5 = pcVar5 + 2;
      param_2 = param_2 + 2;
      local_8 = 0xd;
      goto LAB_008e9358;
    }
    if (local_8 == 0xd) {
      iVar3 = 0;
      if (param_3 <= iVar4) goto LAB_008e9448;
      param_4[2] = pcVar5;
      iVar4 = iVar4 + 1;
      param_4 = param_4 + 4;
      pcVar5 = pcVar5 + 2;
      param_2 = param_2 + 2;
      local_4 = iVar4;
      goto LAB_008e9358;
    }
    break;
  case 0x15:
    if (iVar3 == 1) {
      iVar3 = 0;
      pcVar5 = pcVar5 + 2;
      param_2 = param_2 + 2;
    }
    else {
      if (((iVar3 != 2) || (param_3 <= iVar4)) || (*(char *)(param_4 + 3) == '\0')) break;
      if (((pcVar5 != param_4[1]) && (cVar1 == '\0')) && (bVar2 == 0x20)) {
        if (*param_2 == '\0') {
          if (pcVar5[3] == 0x20) goto LAB_008e9521;
          uVar6 = CONCAT44(2,(uint)*(byte *)((byte)pcVar5[3] + 0x4c + param_1));
        }
        else {
          uVar6 = FUN_008e3640();
        }
        iVar3 = (int)((ulonglong)uVar6 >> 0x20);
        if ((int)uVar6 != local_8) break;
      }
LAB_008e9521:
      pcVar5 = pcVar5 + 2;
      param_2 = param_2 + 2;
      *(undefined *)(param_4 + 3) = 0;
    }
    goto LAB_008e9358;
  }
  pcVar5 = pcVar5 + 2;
  param_2 = param_2 + 2;
  goto LAB_008e9358;
}



undefined4 __fastcall FUN_008e99e0(char *param_1)

{
  char cVar1;
  char *in_EAX;
  char cVar2;
  
  while( true ) {
    cVar1 = *param_1;
    cVar2 = *in_EAX;
    param_1 = param_1 + 1;
    in_EAX = in_EAX + 1;
    if ((byte)(cVar1 + 0x9fU) < 0x1a) {
      cVar1 = cVar1 + -0x20;
    }
    if ((byte)(cVar2 + 0x9fU) < 0x1a) {
      cVar2 = cVar2 + -0x20;
    }
    if (cVar1 != cVar2) break;
    if (cVar1 == '\0') {
      return 1;
    }
  }
  return 0;
}



int FUN_008e9a30(void)

{
  int in_EAX;
  char local_5;
  char *local_4;
  
  local_4 = &local_5;
  (**(code **)(in_EAX + 0x3c))();
  if (local_4 == &local_5) {
    return -1;
  }
  return (int)local_5;
}



undefined4 FUN_008e9a80(void)

{
  undefined4 in_EAX;
  
  switch(in_EAX) {
  case 9:
  case 10:
  case 0xd:
  case 0x20:
    return 1;
  default:
    return 0;
  }
}



// WARNING: Removing unreachable block (ram,0x008e9beb)
// WARNING: Removing unreachable block (ram,0x008e9bf9)
// WARNING: Removing unreachable block (ram,0x008e9c19)
// WARNING: Removing unreachable block (ram,0x008e9bfe)
// WARNING: Removing unreachable block (ram,0x008e9c06)
// WARNING: Removing unreachable block (ram,0x008e9ce2)
// WARNING: Removing unreachable block (ram,0x008e9c14)
// WARNING: Removing unreachable block (ram,0x008e9b1c)
// WARNING: Removing unreachable block (ram,0x008e9b7d)
// WARNING: Removing unreachable block (ram,0x008e9d1b)
// WARNING: Removing unreachable block (ram,0x008e9d20)
// WARNING: Removing unreachable block (ram,0x008e9d28)
// WARNING: Removing unreachable block (ram,0x008e9d36)
// WARNING: Removing unreachable block (ram,0x008e9c1b)
// WARNING: Removing unreachable block (ram,0x008e9c27)
// WARNING: Removing unreachable block (ram,0x008e9c3f)
// WARNING: Removing unreachable block (ram,0x008e9c41)
// WARNING: Removing unreachable block (ram,0x008e9c5b)
// WARNING: Removing unreachable block (ram,0x008e9c60)
// WARNING: Removing unreachable block (ram,0x008e9c69)
// WARNING: Removing unreachable block (ram,0x008e9c85)
// WARNING: Removing unreachable block (ram,0x008e9ccb)
// WARNING: Removing unreachable block (ram,0x008e9c87)
// WARNING: Removing unreachable block (ram,0x008e9c8c)
// WARNING: Removing unreachable block (ram,0x008e9c91)
// WARNING: Removing unreachable block (ram,0x008e9c96)
// WARNING: Removing unreachable block (ram,0x008e9c9b)
// WARNING: Removing unreachable block (ram,0x008e9ca0)
// WARNING: Removing unreachable block (ram,0x008e9ca5)
// WARNING: Removing unreachable block (ram,0x008e9caa)
// WARNING: Removing unreachable block (ram,0x008e9caf)
// WARNING: Removing unreachable block (ram,0x008e9cb8)
// WARNING: Removing unreachable block (ram,0x008e9d3f)
// WARNING: Removing unreachable block (ram,0x008e9ce4)
// WARNING: Removing unreachable block (ram,0x008e9d16)
// WARNING: Recovered jumptable eliminated as dead code
// WARNING: Removing unreachable block (ram,0x008e9b29)
// WARNING: Removing unreachable block (ram,0x008e9b8a)
// WARNING: Removing unreachable block (ram,0x008e9b46)
// WARNING: Removing unreachable block (ram,0x008e9b98)
// WARNING: Removing unreachable block (ram,0x008e9bb2)
// WARNING: Removing unreachable block (ram,0x008e9b9c)

undefined4 __thiscall
FUN_008e9ac0(int param_1_00,int param_1,undefined4 *param_2,undefined4 param_4,int *param_5)

{
  int unaff_EDI;
  
  if (param_1_00 != param_1) {
    (**(code **)(unaff_EDI + 0x3c))();
    *param_5 = param_1_00;
    return 0;
  }
  *param_2 = 0;
  return 1;
}



undefined4
FUN_008e9de0(code *param_1,int param_2,int param_3,int param_4,int *param_5,int *param_6,
            int *param_7,int *param_8,undefined4 *param_9,undefined4 *param_10)

{
  int iVar1;
  int *piVar2;
  int in_EAX;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  int local_c;
  undefined4 local_8;
  int local_4;
  
  piVar2 = param_7;
  local_4 = 0;
  local_c = 0;
  local_8 = 0;
  param_3 = *(int *)(in_EAX + 0x44) * 5 + param_3;
  iVar1 = param_4 + *(int *)(in_EAX + 0x44) * -2;
  iVar3 = FUN_008e9ac0(iVar1,&local_c,&local_4,&param_3);
  iVar6 = local_c;
  if ((iVar3 == 0) || (local_c == 0)) {
LAB_008ea060:
    *param_5 = param_3;
    return 0;
  }
  iVar3 = (**(code **)(in_EAX + 0x1c))();
  if (iVar3 == 0) {
    if (param_2 == 0) {
      *param_5 = iVar6;
      return 0;
    }
  }
  else {
    if (param_6 != (int *)0x0) {
      *param_6 = local_4;
    }
    if (piVar2 != (int *)0x0) {
      *piVar2 = param_3;
    }
    iVar6 = FUN_008e9ac0(iVar1,&local_c,&local_4,&param_3);
    if (iVar6 == 0) {
      *param_5 = param_3;
      return 0;
    }
    iVar6 = local_c;
    if (local_c == 0) {
      if (param_2 == 0) {
        return 1;
      }
      goto LAB_008ea060;
    }
  }
  iVar4 = (**(code **)(in_EAX + 0x1c))();
  iVar3 = local_4;
  if (iVar4 != 0) {
    iVar4 = FUN_008e9a30(local_4,iVar1);
    if (((iVar4 < 0x61) || (0x7a < iVar4)) && (iVar6 = iVar3, 0x19 < iVar4 - 0x41U))
    goto LAB_008e9f80;
    if (param_8 != (int *)0x0) {
      *param_8 = iVar3;
    }
    if (param_9 != (undefined4 *)0x0) {
      uVar5 = (*param_1)();
      *param_9 = uVar5;
    }
    iVar6 = FUN_008e9ac0(iVar1,&local_c,&local_4,&param_3);
    if (iVar6 == 0) goto LAB_008ea060;
    iVar6 = local_c;
    if (local_c == 0) {
      return 1;
    }
  }
  iVar7 = (**(code **)(in_EAX + 0x1c))();
  iVar4 = local_4;
  iVar3 = param_3;
  if ((iVar7 != 0) && (param_2 == 0)) {
    iVar6 = (**(code **)(in_EAX + 0x1c))();
    if (iVar6 == 0) {
      iVar6 = (**(code **)(in_EAX + 0x1c))();
      if (iVar6 == 0) {
        *param_5 = iVar4;
        return 0;
      }
      if (param_10 != (undefined4 *)0x0) {
        *param_10 = 0;
      }
    }
    else if (param_10 != (undefined4 *)0x0) {
      *param_10 = 1;
    }
    FUN_008e9a30(iVar3,iVar1);
    iVar6 = FUN_008e9a80();
    while (iVar6 != 0) {
      iVar3 = iVar3 + *(int *)(in_EAX + 0x44);
      FUN_008e9a30(iVar3,iVar1);
      iVar6 = FUN_008e9a80();
    }
    if (iVar3 == iVar1) {
      return 1;
    }
    *param_5 = iVar3;
    return 0;
  }
LAB_008e9f80:
  *param_5 = iVar6;
  return 0;
}



undefined4 FUN_008ea080(int param_1,byte *param_2)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  
  if (-1 < param_1) {
    bVar1 = (byte)param_1;
    if (param_1 < 0x80) {
      *param_2 = bVar1;
      return 1;
    }
    bVar2 = (byte)(param_1 >> 6);
    if (param_1 < 0x800) {
      param_2[1] = bVar1 & 0x3f | 0x80;
      *param_2 = bVar2 | 0xc0;
      return 2;
    }
    bVar3 = (byte)(param_1 >> 0xc);
    if (param_1 < 0x10000) {
      *param_2 = bVar3 | 0xe0;
      param_2[2] = bVar1 & 0x3f | 0x80;
      param_2[1] = bVar2 & 0x3f | 0x80;
      return 3;
    }
    if (param_1 < 0x110000) {
      *param_2 = (byte)(param_1 >> 0x12) | 0xf0;
      param_2[1] = bVar3 & 0x3f | 0x80;
      param_2[3] = bVar1 & 0x3f | 0x80;
      param_2[2] = bVar2 & 0x3f | 0x80;
      return 4;
    }
  }
  return 0;
}



undefined4 FUN_008ea140(void)

{
  return 0x778;
}



void FUN_008ea280(int param_1,byte **param_2,byte *param_3,int *param_4,int param_5)

{
  byte **ppbVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  byte *pbVar7;
  
  piVar2 = param_4;
  ppbVar1 = param_2;
  if (*param_2 != param_3) {
    do {
      iVar3 = param_5;
      pbVar7 = *ppbVar1;
      iVar4 = (int)*(char *)(param_1 + 0x378 + (uint)*pbVar7 * 4);
      puVar6 = (undefined4 *)(param_1 + (uint)*pbVar7 * 4 + 0x379);
      if (iVar4 == 0) {
        uVar5 = (**(code **)(param_1 + 0x170))(*(undefined4 *)(param_1 + 0x174),pbVar7,&param_2);
        iVar4 = FUN_008ea080(uVar5);
        if (iVar3 - *piVar2 < iVar4) {
          return;
        }
        puVar6 = &param_2;
        pbVar7 = *ppbVar1 + (*(byte *)(**ppbVar1 + 0x4c + param_1) - 3);
      }
      else {
        if (param_5 - *piVar2 < iVar4) {
          return;
        }
        pbVar7 = pbVar7 + 1;
      }
      *ppbVar1 = pbVar7;
      do {
        *(undefined *)*piVar2 = *(undefined *)puVar6;
        *piVar2 = *piVar2 + 1;
        puVar6 = (undefined4 *)((int)puVar6 + 1);
        iVar4 = iVar4 + -1;
      } while (iVar4 != 0);
    } while (*ppbVar1 != param_3);
  }
  return;
}



void FUN_008ea320(int param_1,byte **param_2,byte *param_3,short **param_4,short *param_5)

{
  short sVar1;
  byte *pbVar2;
  
  pbVar2 = *param_2;
  while ((pbVar2 != param_3 && (*param_4 != param_5))) {
    pbVar2 = *param_2;
    sVar1 = *(short *)(param_1 + 0x178 + (uint)*pbVar2 * 2);
    if (sVar1 == 0) {
      sVar1 = (**(code **)(param_1 + 0x170))(*(undefined4 *)(param_1 + 0x174),pbVar2);
      pbVar2 = *param_2 + (*(byte *)(**param_2 + 0x4c + param_1) - 3);
    }
    else {
      pbVar2 = pbVar2 + 1;
    }
    *param_2 = pbVar2;
    **param_4 = sVar1;
    *param_4 = *param_4 + 1;
    pbVar2 = *param_2;
  }
  return;
}



undefined * FUN_008ea390(undefined *param_1,int param_2,int param_3,undefined4 param_4)

{
  char cVar1;
  undefined uVar2;
  undefined *puVar3;
  int iVar4;
  uint uVar5;
  undefined2 *puVar6;
  uint uVar7;
  byte bVar8;
  int iVar9;
  int iVar10;
  
  iVar10 = 0x170;
  puVar3 = param_1;
  do {
    *puVar3 = puVar3[(int)&PTR_FUN_00d3fdd8 - (int)param_1];
    puVar3 = puVar3 + 1;
    iVar10 = iVar10 + -1;
  } while (iVar10 != 0);
  iVar10 = 0;
  do {
    if ((((&DAT_00d3fe24)[iVar10] != '\x1c') && ((&DAT_00d3fe24)[iVar10] != '\0')) &&
       (*(int *)(param_2 + iVar10 * 4) != iVar10)) {
      return (undefined *)0x0;
    }
    iVar10 = iVar10 + 1;
  } while (iVar10 < 0x80);
  puVar6 = (undefined2 *)(param_1 + 0x178);
  iVar10 = 0;
  puVar3 = param_1 + 0x378;
  do {
    iVar9 = *(int *)(param_2 + iVar10 * 4);
    if (iVar9 == -1) {
      param_1[iVar10 + 0x4c] = 1;
      *puVar6 = 0xffff;
      *puVar3 = 1;
      puVar3[1] = 0;
    }
    else {
      bVar8 = (byte)iVar9;
      if (iVar9 < 0) {
        if (iVar9 < -4) {
          return (undefined *)0x0;
        }
        param_1[iVar10 + 0x4c] = '\x03' - bVar8;
        *puVar3 = 0;
        *puVar6 = 0;
      }
      else if (iVar9 < 0x80) {
        cVar1 = (&DAT_00d3fe24)[iVar9];
        if (((cVar1 != '\x1c') && (cVar1 != '\0')) && (iVar9 != iVar10)) {
          return (undefined *)0x0;
        }
        param_1[iVar10 + 0x4c] = cVar1;
        *puVar3 = 1;
        puVar3[1] = bVar8;
        if (iVar9 == 0) {
          iVar9 = 0xffff;
        }
        *puVar6 = (short)iVar9;
      }
      else {
        iVar4 = iVar9 >> 8;
        if (iVar4 < 0xe0) {
          if ((0xd7 < iVar4) ||
             ((iVar4 == 0 && ((&DAT_00d3fe24)[iVar9] == (char)((uint)iVar9 >> 8))))) {
LAB_008ea4e4:
            param_1[iVar10 + 0x4c] = 0;
            *puVar6 = 0xffff;
            *puVar3 = 1;
            puVar3[1] = 0;
            goto LAB_008ea532;
          }
        }
        else if ((iVar4 == 0xff) && ((iVar9 == 0xfffe || (iVar9 == 0xffff)))) goto LAB_008ea4e4;
        if (0xffff < iVar9) {
          return (undefined *)0x0;
        }
        uVar7 = 1 << (bVar8 & 0x1f);
        uVar5 = iVar9 >> 5 & 7;
        if ((*(uint *)(&DAT_00d3efa0 + (uVar5 + (uint)(byte)(&DAT_00d3f4a0)[iVar4] * 8) * 4) & uVar7
            ) == 0) {
          param_1[iVar10 + 0x4c] =
               ((*(uint *)(&DAT_00d3efa0 + (uVar5 + (uint)(byte)(&DAT_00d3f5a0)[iVar4] * 8) * 4) &
                uVar7) == 0) * '\x02' + '\x1a';
        }
        else {
          param_1[iVar10 + 0x4c] = 0x16;
        }
        uVar2 = FUN_008ea080(iVar9,puVar3 + 1);
        *puVar3 = uVar2;
        *puVar6 = (short)iVar9;
      }
    }
LAB_008ea532:
    iVar10 = iVar10 + 1;
    puVar6 = puVar6 + 1;
    puVar3 = puVar3 + 4;
    if (0xff < iVar10) {
      *(undefined4 *)(param_1 + 0x174) = param_4;
      *(int *)(param_1 + 0x170) = param_3;
      if (param_3 != 0) {
        *(undefined **)(param_1 + 0x14c) = &LAB_008ea150;
        *(undefined **)(param_1 + 0x150) = &LAB_008ea150;
        *(undefined **)(param_1 + 0x154) = &LAB_008ea150;
        *(undefined **)(param_1 + 0x158) = &LAB_008ea1b0;
        *(undefined **)(param_1 + 0x15c) = &LAB_008ea1b0;
        *(undefined **)(param_1 + 0x160) = &LAB_008ea1b0;
        *(undefined **)(param_1 + 0x164) = &LAB_008ea210;
        *(undefined **)(param_1 + 0x168) = &LAB_008ea210;
        *(undefined **)(param_1 + 0x16c) = &LAB_008ea210;
      }
      *(code **)(param_1 + 0x3c) = FUN_008ea280;
      *(code **)(param_1 + 0x40) = FUN_008ea320;
      return param_1;
    }
  } while( true );
}



int FUN_008ea5d0(void)

{
  int iVar1;
  int iVar2;
  int unaff_EDI;
  
  if (unaff_EDI == 0) {
    return 6;
  }
  iVar2 = 0;
  do {
    iVar1 = FUN_008e99e0();
    if (iVar1 != 0) {
      return iVar2;
    }
    iVar2 = iVar2 + 1;
  } while (iVar2 < 6);
  return -1;
}



undefined4 __fastcall
FUN_008ea610(undefined4 param_1_00,int param_2_00,int param_1,int param_2,byte **param_3)

{
  byte bVar1;
  char cVar2;
  int *piVar3;
  int iVar4;
  ushort uVar5;
  byte *in_EAX;
  undefined4 uVar6;
  uint uVar7;
  byte *unaff_EDI;
  
  if (in_EAX == unaff_EDI) {
    return 0xfffffffc;
  }
  piVar3 = *(int **)(param_2 + 0x4c);
  if (in_EAX + 1 == unaff_EDI) {
    if (2 < (byte)(*(char *)(param_2 + 0x49) - 3U)) {
      uVar7 = (uint)*in_EAX;
      if (uVar7 < 0xf0) {
        if (uVar7 != 0xef) {
          if (uVar7 == 0) {
            return 0xffffffff;
          }
          if (uVar7 == 0x3c) {
            return 0xffffffff;
          }
          goto LAB_008ea7e3;
        }
      }
      else if (1 < uVar7 - 0xfe) goto LAB_008ea7e3;
      if ((*(char *)(param_2 + 0x49) == '\0') && (param_2_00 == 1)) goto LAB_008ea7e3;
    }
    return 0xffffffff;
  }
  bVar1 = in_EAX[1];
  uVar5 = CONCAT11(*in_EAX,bVar1);
  if (uVar5 < 0xff00) {
    if (uVar5 == 0xfeff) {
      if ((*(char *)(param_2 + 0x49) != '\0') || (param_2_00 != 1)) {
        *param_3 = in_EAX + 2;
        *piVar3 = *(int *)(param_1 + 0x10);
        return 0xe;
      }
      goto LAB_008ea7e3;
    }
    if (uVar5 == 0x3c00) {
      if (((*(char *)(param_2 + 0x49) != '\x04') && (*(char *)(param_2 + 0x49) != '\x03')) ||
         (param_2_00 != 1)) {
        iVar4 = *(int *)(param_1 + 0x14);
        *piVar3 = iVar4;
        uVar6 = (**(code **)(iVar4 + param_2_00 * 4))(iVar4);
        return uVar6;
      }
      goto LAB_008ea7e3;
    }
    if (uVar5 == 0xefbb) {
      if ((param_2_00 != 1) ||
         (((cVar2 = *(char *)(param_2 + 0x49), cVar2 != '\0' && (cVar2 != '\x04')) &&
          ((cVar2 != '\x05' && (cVar2 != '\x03')))))) {
        if (in_EAX + 2 == unaff_EDI) {
          return 0xffffffff;
        }
        if (in_EAX[2] == 0xbf) {
          *param_3 = in_EAX + 3;
          *piVar3 = *(int *)(param_1 + 8);
          return 0xe;
        }
      }
      goto LAB_008ea7e3;
    }
  }
  else if (uVar5 == 0xfffe) {
    if ((*(char *)(param_2 + 0x49) != '\0') || (param_2_00 != 1)) {
      *param_3 = in_EAX + 2;
      *piVar3 = *(int *)(param_1 + 0x14);
      return 0xe;
    }
    goto LAB_008ea7e3;
  }
  if (*in_EAX == 0) {
    if ((param_2_00 != 1) || (*(char *)(param_2 + 0x49) != '\x05')) {
      iVar4 = *(int *)(param_1 + 0x10);
      *piVar3 = iVar4;
      uVar6 = (**(code **)(iVar4 + param_2_00 * 4))(iVar4);
      return uVar6;
    }
  }
  else if ((bVar1 == 0) && (param_2_00 != 1)) {
    iVar4 = *(int *)(param_1 + 0x14);
    *piVar3 = iVar4;
    uVar6 = (**(code **)(iVar4 + param_2_00 * 4))(iVar4);
    return uVar6;
  }
LAB_008ea7e3:
  iVar4 = *(int *)(param_1 + *(char *)(param_2 + 0x49) * 4);
  *piVar3 = iVar4;
  uVar6 = (**(code **)(iVar4 + param_2_00 * 4))(iVar4);
  return uVar6;
}



undefined ** FUN_008ea820(void)

{
  return &PTR_FUN_00d3faf8;
}



undefined4 FUN_008ea890(undefined4 *param_1,undefined4 *param_2,int param_3)

{
  int iVar1;
  int iVar2;
  
  if (param_3 == 0) {
    iVar2 = 6;
  }
  else {
    iVar2 = 0;
    while( true ) {
      iVar1 = FUN_008e99e0();
      if (iVar1 != 0) break;
      iVar2 = iVar2 + 1;
      if (5 < iVar2) {
        return 0;
      }
    }
    if (iVar2 == -1) {
      return 0;
    }
  }
  *(char *)((int)param_1 + 0x49) = (char)iVar2;
  *param_1 = &LAB_008ea830;
  param_1[1] = &LAB_008ea860;
  param_1[0xd] = &DAT_008e9a20;
  param_1[0x13] = param_2;
  *param_2 = param_1;
  return 1;
}



void FUN_008ea9e0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
                 undefined4 param_9,undefined4 param_10)

{
  FUN_008e9de0(&LAB_008ea900,param_1,param_3,param_4,param_5,param_6,param_7,param_8,param_9,
               param_10);
  return;
}



undefined ** FUN_008eaa20(void)

{
  return &PTR_FUN_00d3f988;
}



undefined4 FUN_008eaa90(undefined4 *param_1,undefined4 *param_2,int param_3)

{
  int iVar1;
  int iVar2;
  
  if (param_3 == 0) {
    iVar2 = 6;
  }
  else {
    iVar2 = 0;
    while( true ) {
      iVar1 = FUN_008e99e0();
      if (iVar1 != 0) break;
      iVar2 = iVar2 + 1;
      if (5 < iVar2) {
        return 0;
      }
    }
    if (iVar2 == -1) {
      return 0;
    }
  }
  *(char *)((int)param_1 + 0x49) = (char)iVar2;
  *param_1 = &LAB_008eaa30;
  param_1[1] = &LAB_008eaa60;
  param_1[0xd] = &DAT_008e9a20;
  param_1[0x13] = param_2;
  *param_2 = param_1;
  return 1;
}



void FUN_008eabe0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
                 undefined4 param_9,undefined4 param_10)

{
  FUN_008e9de0(&LAB_008eab00,param_1,param_3,param_4,param_5,param_6,param_7,param_8,param_9,
               param_10);
  return;
}



uint FUN_008eae80(undefined4 param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  char *pcVar3;
  bool bVar4;
  
  uVar1 = 0;
  pcVar3 = (char *)(param_2 + 4);
  if ((*pcVar3 == '\0') && (*(char *)(param_2 + 5) == 'x')) {
    do {
      if (pcVar3[2] == '\0') {
        if (pcVar3[3] == ';') goto LAB_008eaf0f;
        iVar2 = (int)pcVar3[3];
      }
      else {
        iVar2 = -1;
      }
      switch(iVar2) {
      case 0x30:
      case 0x31:
      case 0x32:
      case 0x33:
      case 0x34:
      case 0x35:
      case 0x36:
      case 0x37:
      case 0x38:
      case 0x39:
        uVar1 = uVar1 << 4 | iVar2 - 0x30U;
        break;
      case 0x41:
      case 0x42:
      case 0x43:
      case 0x44:
      case 0x45:
      case 0x46:
        uVar1 = uVar1 * 0x10 + -0x37 + iVar2;
        break;
      case 0x61:
      case 0x62:
      case 99:
      case 100:
      case 0x65:
      case 0x66:
        uVar1 = uVar1 * 0x10 + -0x57 + iVar2;
      }
      pcVar3 = pcVar3 + 2;
      if (0x10ffff < (int)uVar1) {
        return 0xffffffff;
      }
    } while( true );
  }
  do {
    if (*pcVar3 == '\0') {
      if (pcVar3[1] == ';') {
LAB_008eaf0f:
        iVar2 = (int)uVar1 >> 8;
        if (iVar2 < 0xe0) {
          if (0xd7 < iVar2) {
            return 0xffffffff;
          }
          if (iVar2 != 0) {
            return uVar1;
          }
          bVar4 = (&DAT_00d3fe24)[uVar1] == (char)(uVar1 >> 8);
        }
        else {
          if (iVar2 != 0xff) {
            return uVar1;
          }
          if (uVar1 == 0xfffe) {
            return 0xffffffff;
          }
          bVar4 = uVar1 == 0xffff;
        }
        if (bVar4) {
          return 0xffffffff;
        }
        return uVar1;
      }
      iVar2 = (int)pcVar3[1];
    }
    else {
      iVar2 = -1;
    }
    uVar1 = iVar2 + -0x30 + uVar1 * 10;
    if (0x10ffff < (int)uVar1) {
      return 0xffffffff;
    }
    pcVar3 = pcVar3 + 2;
  } while( true );
}



undefined4 FUN_008eb340(code **param_1,int param_2,int param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  
  if (param_2 == 0xf) {
    return 0x21;
  }
  if (param_2 == 0x14) {
    iVar1 = (**(code **)(param_5 + 0x1c))
                      (param_5,*(int *)(param_5 + 0x44) + param_3,param_4,"IMPLIED");
    if (iVar1 != 0) {
      *param_1 = (code *)&LAB_008ec130;
      return 0x23;
    }
    iVar1 = (**(code **)(param_5 + 0x1c))
                      (param_5,*(int *)(param_5 + 0x44) + param_3,param_4,"REQUIRED");
    if (iVar1 != 0) {
      *param_1 = (code *)&LAB_008ec130;
      return 0x24;
    }
    iVar1 = (**(code **)(param_5 + 0x1c))
                      (param_5,*(int *)(param_5 + 0x44) + param_3,param_4,"FIXED");
    if (iVar1 != 0) {
      *param_1 = (code *)&LAB_008eb0d0;
      return 0x21;
    }
  }
  else if (param_2 == 0x1b) {
    *param_1 = (code *)&LAB_008ec130;
    return 0x25;
  }
  if ((param_1[4] == (code *)0x0) && (param_2 == 0x1c)) {
    return 0x3b;
  }
  *param_1 = FUN_006d14e0;
  return 0xffffffff;
}



undefined4
FUN_008eb640(code **param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  code *pcVar2;
  
  if (param_2 == 0xf) {
    return 0xb;
  }
  if (param_2 == 0x11) {
    pcVar2 = (code *)&LAB_008ec270;
    if (param_1[4] == (code *)0x0) {
      pcVar2 = (code *)&DAT_008ec3f0;
    }
    *param_1 = pcVar2;
    return 0xf;
  }
  if ((param_2 == 0x12) &&
     (iVar1 = (**(code **)(param_5 + 0x1c))(param_5,param_3,param_4,"NDATA"), iVar1 != 0)) {
    *param_1 = (code *)&LAB_008eb1f0;
    return 0xb;
  }
  if ((param_1[4] == (code *)0x0) && (param_2 == 0x1c)) {
    return 0x3b;
  }
  *param_1 = FUN_006d14e0;
  return 0xffffffff;
}



undefined4
FUN_008eb970(code **param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  
  if (param_2 == 0xf) {
    return 0xb;
  }
  if (param_2 == 0x12) {
    iVar1 = (**(code **)(param_5 + 0x1c))(param_5,param_3,param_4,"SYSTEM");
    if (iVar1 != 0) {
      *param_1 = (code *)&LAB_008eb240;
      return 0xb;
    }
    iVar1 = (**(code **)(param_5 + 0x1c))(param_5,param_3,param_4,"PUBLIC");
    if (iVar1 != 0) {
      *param_1 = (code *)&LAB_008eb6d0;
      return 0xb;
    }
  }
  else if (param_2 == 0x1b) {
    *param_1 = (code *)&LAB_008eb190;
    param_1[2] = (code *)0xb;
    return 0xc;
  }
  if ((param_1[4] == (code *)0x0) && (param_2 == 0x1c)) {
    return 0x3b;
  }
  *param_1 = FUN_006d14e0;
  return 0xffffffff;
}



undefined4
FUN_008eba30(code **param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  
  if (param_2 == 0xf) {
    return 0x11;
  }
  if (param_2 == 0x12) {
    iVar1 = (**(code **)(param_5 + 0x1c))(param_5,param_3,param_4,"SYSTEM");
    if (iVar1 != 0) {
      *param_1 = (code *)&LAB_008eb280;
      return 0x11;
    }
    iVar1 = (**(code **)(param_5 + 0x1c))(param_5,param_3,param_4,"PUBLIC");
    if (iVar1 != 0) {
      *param_1 = (code *)&LAB_008eb710;
      return 0x11;
    }
  }
  if ((param_1[4] == (code *)0x0) && (param_2 == 0x1c)) {
    return 0x3b;
  }
  *param_1 = FUN_006d14e0;
  return 0xffffffff;
}



undefined4 FUN_008ebd50(code **param_1,int param_2,int param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  
  switch(param_2) {
  case 0xf:
    return 0x27;
  case 0x12:
  case 0x29:
    *param_1 = (code *)&LAB_008eb490;
    return 0x33;
  case 0x14:
    iVar1 = (**(code **)(param_5 + 0x1c))
                      (param_5,*(int *)(param_5 + 0x44) + param_3,param_4,"PCDATA");
    if (iVar1 != 0) {
      *param_1 = (code *)&LAB_008ebb90;
      return 0x2b;
    }
    break;
  case 0x17:
    param_1[1] = (code *)0x2;
    *param_1 = (code *)&LAB_008eb860;
    return 0x2c;
  case 0x1e:
    *param_1 = (code *)&LAB_008eb490;
    return 0x35;
  case 0x1f:
    *param_1 = (code *)&LAB_008eb490;
    return 0x34;
  case 0x20:
    *param_1 = (code *)&LAB_008eb490;
    return 0x36;
  }
  if ((param_1[4] == (code *)0x0) && (param_2 == 0x1c)) {
    return 0x3b;
  }
  *param_1 = FUN_006d14e0;
  return 0xffffffff;
}



undefined4
FUN_008ebe70(code **param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  
  if (param_2 == 0xf) {
    return 0xb;
  }
  if (param_2 == 0x12) {
    iVar1 = (**(code **)(param_5 + 0x1c))(param_5,param_3,param_4,"SYSTEM");
    if (iVar1 != 0) {
      *param_1 = (code *)&LAB_008eb930;
      return 0xb;
    }
    iVar1 = (**(code **)(param_5 + 0x1c))(param_5,param_3,param_4,"PUBLIC");
    if (iVar1 != 0) {
      *param_1 = (code *)&LAB_008ebc80;
      return 0xb;
    }
  }
  else if (param_2 == 0x1b) {
    *param_1 = (code *)&LAB_008eb190;
    param_1[2] = (code *)0xb;
    return 0xc;
  }
  if ((param_1[4] == (code *)0x0) && (param_2 == 0x1c)) {
    return 0x3b;
  }
  *param_1 = FUN_006d14e0;
  return 0xffffffff;
}



undefined4
FUN_008ec000(code **param_1,int param_2,undefined4 param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  
  if (param_2 == 0xf) {
    return 0x27;
  }
  if (param_2 == 0x12) {
    iVar1 = (**(code **)(param_5 + 0x1c))(param_5,param_3,param_4,"EMPTY");
    if (iVar1 != 0) {
      *param_1 = (code *)&LAB_008eb190;
      param_1[2] = (code *)0x27;
      return 0x2a;
    }
    iVar1 = (**(code **)(param_5 + 0x1c))(param_5,param_3,param_4,&DAT_00d40b40);
    if (iVar1 != 0) {
      *param_1 = (code *)&LAB_008eb190;
      param_1[2] = (code *)0x27;
      return 0x29;
    }
  }
  else if (param_2 == 0x17) {
    *param_1 = FUN_008ebd50;
    param_1[1] = (code *)0x1;
    return 0x2c;
  }
  if ((param_1[4] == (code *)0x0) && (param_2 == 0x1c)) {
    return 0x3b;
  }
  *param_1 = FUN_006d14e0;
  return 0xffffffff;
}



undefined4 FUN_008ec6d0(code **param_1,int param_2,int param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  
  switch(param_2) {
  case 0xb:
    return 0x37;
  case 0xd:
    return 0x38;
  case 0xe:
  case 0xf:
    return 0;
  case 0x10:
    iVar1 = (**(code **)(param_5 + 0x1c))
                      (param_5,param_3 + *(int *)(param_5 + 0x44) * 2,param_4,"DOCTYPE");
    if (iVar1 != 0) {
      *param_1 = (code *)&LAB_008ec680;
      return 3;
    }
    break;
  case 0x1d:
    *param_1 = FUN_006d14e0;
    return 2;
  }
  if ((param_1[4] == (code *)0x0) && (param_2 == 0x1c)) {
    return 0x3b;
  }
  *param_1 = FUN_006d14e0;
  return 0xffffffff;
}



undefined4 FUN_008ec7a0(code **param_1,int param_2,int param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  
  switch(param_2) {
  case 0xb:
    *param_1 = FUN_008ec6d0;
    return 0x37;
  case 0xc:
    *param_1 = FUN_008ec6d0;
    return 1;
  case 0xd:
    *param_1 = FUN_008ec6d0;
    return 0x38;
  case 0xe:
    return 0;
  case 0xf:
    *param_1 = FUN_008ec6d0;
    return 0;
  case 0x10:
    iVar1 = (**(code **)(param_5 + 0x1c))
                      (param_5,param_3 + *(int *)(param_5 + 0x44) * 2,param_4,"DOCTYPE");
    if (iVar1 != 0) {
      *param_1 = (code *)&LAB_008ec680;
      return 3;
    }
    break;
  case 0x1d:
    *param_1 = FUN_006d14e0;
    return 2;
  }
  if ((param_1[4] == (code *)0x0) && (param_2 == 0x1c)) {
    return 0x3b;
  }
  *param_1 = FUN_006d14e0;
  return 0xffffffff;
}



void FUN_008ec8a0(code **param_1)

{
  *param_1 = FUN_008ec7a0;
  param_1[4] = (code *)0x1;
  param_1[3] = (code *)0x0;
  param_1[5] = (code *)0x0;
  return;
}



uint __fastcall FUN_008ec8c0(uint *param_1,uint param_2)

{
  uint in_EAX;
  uint uVar1;
  uint *puVar2;
  uint uVar3;
  
  uVar1 = ~in_EAX;
  if (param_2 != 0) {
    do {
      if (((uint)param_1 & 3) == 0) break;
      uVar1 = uVar1 >> 8 ^ *(uint *)(&DAT_00d40c00 + ((*(byte *)param_1 ^ uVar1) & 0xff) * 4);
      param_1 = (uint *)((int)param_1 + 1);
      param_2 = param_2 - 1;
    } while (param_2 != 0);
  }
  if (0x1f < param_2) {
    uVar3 = param_2 >> 5;
    puVar2 = param_1;
    do {
      uVar1 = uVar1 ^ *puVar2;
      uVar1 = *(uint *)(&DAT_00d41000 + (uVar1 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_00d41400 + (uVar1 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_00d40c00 + (uVar1 >> 0x18) * 4) ^
              *(uint *)(&DAT_00d41800 + (uVar1 & 0xff) * 4) ^ puVar2[1];
      uVar1 = *(uint *)(&DAT_00d41000 + (uVar1 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_00d41400 + (uVar1 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_00d40c00 + (uVar1 >> 0x18) * 4) ^
              *(uint *)(&DAT_00d41800 + (uVar1 & 0xff) * 4) ^ puVar2[2];
      uVar1 = *(uint *)(&DAT_00d41000 + (uVar1 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_00d41400 + (uVar1 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_00d40c00 + (uVar1 >> 0x18) * 4) ^
              *(uint *)(&DAT_00d41800 + (uVar1 & 0xff) * 4) ^ puVar2[3];
      uVar1 = *(uint *)(&DAT_00d41000 + (uVar1 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_00d41400 + (uVar1 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_00d40c00 + (uVar1 >> 0x18) * 4) ^
              *(uint *)(&DAT_00d41800 + (uVar1 & 0xff) * 4) ^ puVar2[4];
      uVar1 = *(uint *)(&DAT_00d41000 + (uVar1 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_00d41400 + (uVar1 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_00d40c00 + (uVar1 >> 0x18) * 4) ^
              *(uint *)(&DAT_00d41800 + (uVar1 & 0xff) * 4) ^ puVar2[5];
      uVar1 = *(uint *)(&DAT_00d41000 + (uVar1 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_00d41400 + (uVar1 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_00d40c00 + (uVar1 >> 0x18) * 4) ^
              *(uint *)(&DAT_00d41800 + (uVar1 & 0xff) * 4) ^ puVar2[6];
      param_1 = puVar2 + 8;
      param_2 = param_2 - 0x20;
      uVar1 = *(uint *)(&DAT_00d41000 + (uVar1 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_00d41400 + (uVar1 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_00d40c00 + (uVar1 >> 0x18) * 4) ^
              *(uint *)(&DAT_00d41800 + (uVar1 & 0xff) * 4) ^ puVar2[7];
      uVar1 = *(uint *)(&DAT_00d41000 + (uVar1 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_00d41400 + (uVar1 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_00d40c00 + (uVar1 >> 0x18) * 4) ^
              *(uint *)(&DAT_00d41800 + (uVar1 & 0xff) * 4);
      uVar3 = uVar3 - 1;
      puVar2 = param_1;
    } while (uVar3 != 0);
  }
  if (3 < param_2) {
    uVar3 = param_2 >> 2;
    do {
      uVar1 = uVar1 ^ *param_1;
      param_1 = param_1 + 1;
      uVar1 = *(uint *)(&DAT_00d41000 + (uVar1 >> 0x10 & 0xff) * 4) ^
              *(uint *)(&DAT_00d41400 + (uVar1 >> 8 & 0xff) * 4) ^
              *(uint *)(&DAT_00d40c00 + (uVar1 >> 0x18) * 4) ^
              *(uint *)(&DAT_00d41800 + (uVar1 & 0xff) * 4);
      param_2 = param_2 - 4;
      uVar3 = uVar3 - 1;
    } while (uVar3 != 0);
  }
  for (; param_2 != 0; param_2 = param_2 - 1) {
    uVar1 = uVar1 >> 8 ^ *(uint *)(&DAT_00d40c00 + ((*(byte *)param_1 ^ uVar1) & 0xff) * 4);
    param_1 = (uint *)((int)param_1 + 1);
  }
  return ~uVar1;
}



undefined4 FUN_008ecba0(undefined4 param_1,int param_2)

{
  undefined4 uVar1;
  
  if (param_2 == 0) {
    return 0;
  }
  uVar1 = FUN_008ec8c0();
  return uVar1;
}



void __fastcall FUN_008ecbc0(undefined4 param_1)

{
  int in_EAX;
  
  *(char *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) = (char)((uint)param_1 >> 8);
  *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
  *(char *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) = (char)param_1;
  *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
  return;
}



void FUN_008ecbf0(void)

{
  int *piVar1;
  int iVar2;
  int in_EAX;
  uint _Size;
  
  _Size = *(uint *)(*(int *)(in_EAX + 0x1c) + 0x14);
  if (*(uint *)(in_EAX + 0x10) < _Size) {
    _Size = *(uint *)(in_EAX + 0x10);
  }
  if (_Size != 0) {
    _memcpy(*(void **)(in_EAX + 0xc),*(void **)(*(int *)(in_EAX + 0x1c) + 0x10),_Size);
    *(int *)(in_EAX + 0xc) = *(int *)(in_EAX + 0xc) + _Size;
    piVar1 = (int *)(*(int *)(in_EAX + 0x1c) + 0x10);
    *piVar1 = *piVar1 + _Size;
    *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + _Size;
    *(int *)(in_EAX + 0x10) = *(int *)(in_EAX + 0x10) - _Size;
    piVar1 = (int *)(*(int *)(in_EAX + 0x1c) + 0x14);
    *piVar1 = *piVar1 - _Size;
    iVar2 = *(int *)(in_EAX + 0x1c);
    if (*(int *)(iVar2 + 0x14) == 0) {
      *(undefined4 *)(iVar2 + 0x10) = *(undefined4 *)(iVar2 + 8);
    }
  }
  return;
}



uint FUN_008ecc40(int *param_1,int *param_2)

{
  char cVar1;
  int **ppiVar2;
  int *piVar3;
  bool bVar4;
  undefined uVar5;
  int iVar6;
  int *piVar7;
  int *piVar8;
  
  if (((param_1 == (int *)0x0) || (ppiVar2 = (int **)param_1[7], ppiVar2 == (int **)0x0)) ||
     ((int *)0x4 < param_2)) {
    return 0xfffffffe;
  }
  if (((param_1[3] == 0) || ((*param_1 == 0 && (param_1[1] != 0)))) ||
     ((ppiVar2[1] == (int *)0x29a && (param_2 != (int *)0x4)))) {
    param_1[6] = (int)"stream error";
    return 0xfffffffe;
  }
  if (param_1[4] == 0) {
    param_1[6] = (int)"buffer error";
    return 0xfffffffb;
  }
  piVar3 = ppiVar2[10];
  *ppiVar2 = param_1;
  ppiVar2[10] = param_2;
  if (ppiVar2[1] == (int *)0x2a) {
    if (ppiVar2[6] == (int *)0x2) {
      iVar6 = FUN_008ecba0(0,0,0);
      param_1[0xc] = iVar6;
      *(undefined *)((int)ppiVar2[2] + (int)ppiVar2[5]) = 0x1f;
      ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
      *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = 0x8b;
      ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
      *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = 8;
      ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
      piVar8 = ppiVar2[7];
      if (piVar8 == (int *)0x0) {
        *(undefined *)((int)ppiVar2[2] + (int)ppiVar2[5]) = 0;
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = 0;
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = 0;
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = 0;
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = 0;
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        if (ppiVar2[0x21] == (int *)0x9) {
          uVar5 = 2;
        }
        else if (((int)ppiVar2[0x22] < 2) && (1 < (int)ppiVar2[0x21])) {
          uVar5 = 0;
        }
        else {
          uVar5 = 4;
        }
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = uVar5;
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = 0xb;
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        ppiVar2[1] = (int *)0x71;
      }
      else {
        *(byte *)((int)ppiVar2[2] + (int)ppiVar2[5]) =
             (-(piVar8[9] != 0) & 0x10U) + (-(piVar8[0xb] != 0) & 2U) + (-(piVar8[7] != 0) & 8U) +
             (-(piVar8[4] != 0) & 4U) + (*piVar8 != 0);
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)(ppiVar2[7] + 1);
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)((int)ppiVar2[7] + 5);
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)((int)ppiVar2[7] + 6);
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)((int)ppiVar2[7] + 7);
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        if (ppiVar2[0x21] == (int *)0x9) {
          uVar5 = 2;
        }
        else if (((int)ppiVar2[0x22] < 2) && (1 < (int)ppiVar2[0x21])) {
          uVar5 = 0;
        }
        else {
          uVar5 = 4;
        }
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = uVar5;
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)(ppiVar2[7] + 3);
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        piVar8 = ppiVar2[5];
        if (ppiVar2[7][4] != 0) {
          *(undefined *)((int)piVar8 + (int)ppiVar2[2]) = *(undefined *)(ppiVar2[7] + 5);
          ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
          *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)((int)ppiVar2[7] + 0x15)
          ;
          ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
          piVar8 = ppiVar2[5];
        }
        if (ppiVar2[7][0xb] != 0) {
          iVar6 = FUN_008ecba0(param_1[0xc],ppiVar2[2],piVar8);
          param_1[0xc] = iVar6;
        }
        ppiVar2[8] = (int *)0x0;
        ppiVar2[1] = (int *)0x45;
      }
    }
    else {
      ppiVar2[1] = (int *)0x71;
      FUN_008ecbc0();
      if (ppiVar2[0x1b] != (int *)0x0) {
        FUN_008ecbc0();
        FUN_008ecbc0();
      }
      iVar6 = FUN_008efd50(0,0,0);
      param_1[0xc] = iVar6;
    }
  }
  if (ppiVar2[1] == (int *)0x45) {
    if (ppiVar2[7][4] != 0) {
      piVar8 = ppiVar2[5];
      if (ppiVar2[8] < (int *)(uint)*(ushort *)(ppiVar2[7] + 5)) {
        do {
          piVar7 = ppiVar2[5];
          if (piVar7 == ppiVar2[3]) {
            if ((ppiVar2[7][0xb] != 0) && (piVar8 < piVar7)) {
              iVar6 = FUN_008ecba0(param_1[0xc],(int)ppiVar2[2] + (int)piVar8,
                                   (int)piVar7 - (int)piVar8);
              param_1[0xc] = iVar6;
            }
            FUN_008ecbf0();
            piVar7 = ppiVar2[5];
            piVar8 = piVar7;
            if (piVar7 == ppiVar2[3]) break;
          }
          *(undefined *)((int)piVar7 + (int)ppiVar2[2]) =
               *(undefined *)(ppiVar2[7][4] + (int)ppiVar2[8]);
          ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
          ppiVar2[8] = (int *)((int)ppiVar2[8] + 1);
        } while (ppiVar2[8] < (int *)(uint)*(ushort *)(ppiVar2[7] + 5));
      }
      if ((ppiVar2[7][0xb] != 0) && (piVar8 < ppiVar2[5])) {
        iVar6 = FUN_008ecba0(param_1[0xc],(int)ppiVar2[2] + (int)piVar8,
                             (int)ppiVar2[5] - (int)piVar8);
        param_1[0xc] = iVar6;
      }
      if (ppiVar2[8] != (int *)ppiVar2[7][5]) goto LAB_008ed038;
      ppiVar2[8] = (int *)0x0;
    }
    ppiVar2[1] = (int *)0x49;
  }
LAB_008ed038:
  if (ppiVar2[1] == (int *)0x49) {
    if (ppiVar2[7][7] != 0) {
      piVar8 = ppiVar2[5];
      do {
        piVar7 = ppiVar2[5];
        if (piVar7 == ppiVar2[3]) {
          if ((ppiVar2[7][0xb] != 0) && (piVar8 < piVar7)) {
            iVar6 = FUN_008ecba0(param_1[0xc],(int)ppiVar2[2] + (int)piVar8,
                                 (int)piVar7 - (int)piVar8);
            param_1[0xc] = iVar6;
          }
          FUN_008ecbf0();
          piVar7 = ppiVar2[5];
          piVar8 = piVar7;
          if (piVar7 == ppiVar2[3]) {
            bVar4 = true;
            goto LAB_008ed0b7;
          }
        }
        cVar1 = *(char *)(ppiVar2[7][7] + (int)ppiVar2[8]);
        ppiVar2[8] = (int *)((int)ppiVar2[8] + 1);
        *(char *)((int)piVar7 + (int)ppiVar2[2]) = cVar1;
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
      } while (cVar1 != '\0');
      bVar4 = false;
      piVar7 = piVar8;
LAB_008ed0b7:
      if ((ppiVar2[7][0xb] != 0) && (piVar7 < ppiVar2[5])) {
        iVar6 = FUN_008ecba0(param_1[0xc],(int)ppiVar2[2] + (int)piVar7,
                             (int)ppiVar2[5] - (int)piVar7);
        param_1[0xc] = iVar6;
      }
      if (bVar4) goto LAB_008ed0ed;
      ppiVar2[8] = (int *)0x0;
    }
    ppiVar2[1] = (int *)0x5b;
  }
LAB_008ed0ed:
  if (ppiVar2[1] == (int *)0x5b) {
    if (ppiVar2[7][9] != 0) {
      piVar8 = ppiVar2[5];
      do {
        piVar7 = ppiVar2[5];
        if (piVar7 == ppiVar2[3]) {
          if ((ppiVar2[7][0xb] != 0) && (piVar8 < piVar7)) {
            iVar6 = FUN_008ecba0(param_1[0xc],(int)ppiVar2[2] + (int)piVar8,
                                 (int)piVar7 - (int)piVar8);
            param_1[0xc] = iVar6;
          }
          FUN_008ecbf0();
          piVar7 = ppiVar2[5];
          piVar8 = piVar7;
          if (piVar7 == ppiVar2[3]) {
            bVar4 = true;
            goto LAB_008ed167;
          }
        }
        cVar1 = *(char *)(ppiVar2[7][9] + (int)ppiVar2[8]);
        ppiVar2[8] = (int *)((int)ppiVar2[8] + 1);
        *(char *)((int)piVar7 + (int)ppiVar2[2]) = cVar1;
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
      } while (cVar1 != '\0');
      bVar4 = false;
      piVar7 = piVar8;
LAB_008ed167:
      if ((ppiVar2[7][0xb] != 0) && (piVar7 < ppiVar2[5])) {
        iVar6 = FUN_008ecba0(param_1[0xc],(int)ppiVar2[2] + (int)piVar7,
                             (int)ppiVar2[5] - (int)piVar7);
        param_1[0xc] = iVar6;
      }
      if (bVar4) goto LAB_008ed19a;
    }
    ppiVar2[1] = (int *)0x67;
  }
LAB_008ed19a:
  if (ppiVar2[1] == (int *)0x67) {
    if (ppiVar2[7][0xb] != 0) {
      if (ppiVar2[3] < (int *)((int)ppiVar2[5] + 2)) {
        FUN_008ecbf0();
      }
      if (ppiVar2[3] < (int *)((int)ppiVar2[5] + 2U)) goto LAB_008ed1fb;
      *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)(param_1 + 0xc);
      ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
      *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)((int)param_1 + 0x31);
      ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
      iVar6 = FUN_008ecba0(0,0,0);
      param_1[0xc] = iVar6;
    }
    ppiVar2[1] = (int *)0x71;
  }
LAB_008ed1fb:
  if (ppiVar2[5] == (int *)0x0) {
    if (((param_1[1] == 0) && ((int)param_2 <= (int)piVar3)) && (param_2 != (int *)0x4)) {
      param_1[6] = (int)"buffer error";
      return 0xfffffffb;
    }
LAB_008ed247:
    if (ppiVar2[1] == (int *)0x29a) {
      if (param_1[1] != 0) {
        param_1[6] = (int)"buffer error";
        return 0xfffffffb;
      }
LAB_008ed270:
      if ((ppiVar2[0x1d] != (int *)0x0) || ((param_2 != (int *)0x0 && (ppiVar2[1] != (int *)0x29a)))
         ) goto LAB_008ed289;
    }
    else {
      if (param_1[1] == 0) goto LAB_008ed270;
LAB_008ed289:
      iVar6 = (*(code *)(&PTR_LAB_00d42c40)[(int)ppiVar2[0x21] * 3])(ppiVar2,param_2);
      if ((iVar6 == 2) || (iVar6 == 3)) {
        ppiVar2[1] = (int *)0x29a;
      }
      if ((iVar6 == 0) || (iVar6 == 2)) {
        if (param_1[4] != 0) {
          return 0;
        }
        ppiVar2[10] = (int *)0xffffffff;
        return 0;
      }
      if (iVar6 == 1) {
        if (param_2 == (int *)0x1) {
          FUN_008f1630(ppiVar2);
        }
        else {
          FUN_008f1590(ppiVar2,0,0,0);
          if (param_2 == (int *)0x3) {
            *(undefined2 *)((int)ppiVar2[0x11] + (int)ppiVar2[0x13] * 2 + -2) = 0;
            _memset(ppiVar2[0x11],0,(int)ppiVar2[0x13] * 2 - 2);
          }
        }
        FUN_008ecbf0();
        if (param_1[4] == 0) goto LAB_008ed20e;
      }
    }
    if (param_2 == (int *)0x4) {
      if ((int)ppiVar2[6] < 1) {
        return 1;
      }
      if (ppiVar2[6] == (int *)0x2) {
        *(undefined *)((int)ppiVar2[2] + (int)ppiVar2[5]) = *(undefined *)(param_1 + 0xc);
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)((int)param_1 + 0x31);
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)((int)param_1 + 0x32);
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)((int)param_1 + 0x33);
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)(param_1 + 2);
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)((int)param_1 + 9);
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)((int)param_1 + 10);
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
        *(undefined *)((int)ppiVar2[5] + (int)ppiVar2[2]) = *(undefined *)((int)param_1 + 0xb);
        ppiVar2[5] = (int *)((int)ppiVar2[5] + 1);
      }
      else {
        FUN_008ecbc0();
        FUN_008ecbc0();
      }
      FUN_008ecbf0();
      if (0 < (int)ppiVar2[6]) {
        ppiVar2[6] = (int *)-(int)ppiVar2[6];
      }
      return (uint)(ppiVar2[5] == (int *)0x0);
    }
  }
  else {
    FUN_008ecbf0();
    if (param_1[4] != 0) goto LAB_008ed247;
LAB_008ed20e:
    ppiVar2[10] = (int *)0xffffffff;
  }
  return 0;
}



uint FUN_008ed420(int param_1)

{
  int iVar1;
  int iVar2;
  
  if ((param_1 == 0) || (iVar1 = *(int *)(param_1 + 0x1c), iVar1 == 0)) {
    return 0xfffffffe;
  }
  iVar2 = *(int *)(iVar1 + 4);
  if ((((iVar2 != 0x2a) && (iVar2 != 0x45)) && (iVar2 != 0x49)) &&
     (((iVar2 != 0x5b && (iVar2 != 0x67)) && ((iVar2 != 0x71 && (iVar2 != 0x29a)))))) {
    return 0xfffffffe;
  }
  if (*(int *)(iVar1 + 8) != 0) {
    (**(code **)(param_1 + 0x24))(*(undefined4 *)(param_1 + 0x28),*(int *)(iVar1 + 8));
  }
  iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x44);
  if (iVar1 != 0) {
    (**(code **)(param_1 + 0x24))(*(undefined4 *)(param_1 + 0x28),iVar1);
  }
  iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x40);
  if (iVar1 != 0) {
    (**(code **)(param_1 + 0x24))(*(undefined4 *)(param_1 + 0x28),iVar1);
  }
  iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x38);
  if (iVar1 != 0) {
    (**(code **)(param_1 + 0x24))(*(undefined4 *)(param_1 + 0x28),iVar1);
  }
  (**(code **)(param_1 + 0x24))(*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x1c));
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return (iVar2 != 0x71) - 1 & 0xfffffffd;
}



void FUN_008ed4f0(void)

{
  ushort uVar1;
  int iVar2;
  int unaff_ESI;
  
  *(int *)(unaff_ESI + 0x3c) = *(int *)(unaff_ESI + 0x2c) * 2;
  *(undefined2 *)(*(int *)(unaff_ESI + 0x44) + -2 + *(int *)(unaff_ESI + 0x4c) * 2) = 0;
  _memset(*(void **)(unaff_ESI + 0x44),0,*(int *)(unaff_ESI + 0x4c) * 2 - 2);
  iVar2 = *(int *)(unaff_ESI + 0x84) * 0xc;
  *(uint *)(unaff_ESI + 0x80) = (uint)*(ushort *)(&DAT_00d42c3a + *(int *)(unaff_ESI + 0x84) * 0xc);
  *(uint *)(unaff_ESI + 0x8c) = (uint)*(ushort *)(&DAT_00d42c38 + iVar2);
  *(uint *)(unaff_ESI + 0x90) = (uint)*(ushort *)(&DAT_00d42c3c + iVar2);
  uVar1 = *(ushort *)(&DAT_00d42c3e + iVar2);
  *(undefined4 *)(unaff_ESI + 0x6c) = 0;
  *(undefined4 *)(unaff_ESI + 0x5c) = 0;
  *(undefined4 *)(unaff_ESI + 0x74) = 0;
  *(undefined4 *)(unaff_ESI + 0x68) = 0;
  *(undefined4 *)(unaff_ESI + 0x48) = 0;
  *(uint *)(unaff_ESI + 0x7c) = (uint)uVar1;
  *(undefined4 *)(unaff_ESI + 0x78) = 2;
  *(undefined4 *)(unaff_ESI + 0x60) = 2;
  return;
}



char * FUN_008ed580(void)

{
  char *pcVar1;
  uint uVar2;
  uint in_EAX;
  char *pcVar3;
  char *pcVar4;
  char *pcVar5;
  char *pcVar6;
  char *pcVar7;
  int unaff_EDI;
  char local_12;
  char local_11;
  uint local_10;
  uint local_c;
  uint local_8;
  
  local_10 = *(uint *)(unaff_EDI + 0x7c);
  uVar2 = *(uint *)(unaff_EDI + 0x6c);
  pcVar3 = *(char **)(unaff_EDI + 0x78);
  pcVar4 = (char *)(*(int *)(unaff_EDI + 0x38) + uVar2);
  if (*(int *)(unaff_EDI + 0x2c) - 0x106U < uVar2) {
    local_8 = (uVar2 - *(int *)(unaff_EDI + 0x2c)) + 0x106;
  }
  else {
    local_8 = 0;
  }
  local_12 = pcVar4[(int)(pcVar3 + -1)];
  local_11 = pcVar4[(int)pcVar3];
  pcVar1 = pcVar4 + 0x102;
  if (*(char **)(unaff_EDI + 0x8c) <= pcVar3) {
    local_10 = local_10 >> 2;
  }
  local_c = *(uint *)(unaff_EDI + 0x90);
  if (*(uint *)(unaff_EDI + 0x74) < *(uint *)(unaff_EDI + 0x90)) {
    local_c = *(uint *)(unaff_EDI + 0x74);
  }
  do {
    pcVar7 = (char *)(*(int *)(unaff_EDI + 0x38) + in_EAX);
    if ((((pcVar7[(int)pcVar3] == local_11) && (pcVar7[(int)(pcVar3 + -1)] == local_12)) &&
        (*pcVar7 == *pcVar4)) && (pcVar7[1] == pcVar4[1])) {
      pcVar7 = pcVar7 + 2;
      pcVar5 = pcVar4 + 2;
      while (((((pcVar6 = pcVar5 + 1, pcVar5[1] == pcVar7[1] &&
                (pcVar6 = pcVar5 + 2, pcVar5[2] == pcVar7[2])) &&
               ((pcVar6 = pcVar5 + 3, pcVar5[3] == pcVar7[3] &&
                ((pcVar6 = pcVar5 + 4, pcVar5[4] == pcVar7[4] &&
                 (pcVar6 = pcVar5 + 5, pcVar5[5] == pcVar7[5])))))) &&
              (pcVar6 = pcVar5 + 6, pcVar5[6] == pcVar7[6])) &&
             (pcVar6 = pcVar5 + 7, pcVar5[7] == pcVar7[7]))) {
        pcVar6 = pcVar5 + 8;
        pcVar7 = pcVar7 + 8;
        if ((pcVar5[8] != *pcVar7) || (pcVar5 = pcVar6, pcVar1 <= pcVar6)) break;
      }
      pcVar7 = pcVar6 + (0x102 - (int)pcVar1);
      if ((int)pcVar3 < (int)pcVar7) {
        *(uint *)(unaff_EDI + 0x70) = in_EAX;
        if ((int)local_c <= (int)pcVar7) break;
        local_12 = pcVar4[(int)(pcVar6 + (0x101 - (int)pcVar1))];
        local_11 = pcVar4[(int)pcVar7];
        pcVar3 = pcVar7;
      }
    }
    pcVar7 = pcVar3;
    in_EAX = (uint)*(ushort *)
                    (*(int *)(unaff_EDI + 0x40) + (*(uint *)(unaff_EDI + 0x34) & in_EAX) * 2);
    if (in_EAX <= local_8) break;
    local_10 = local_10 - 1;
    pcVar3 = pcVar7;
  } while (local_10 != 0);
  pcVar3 = *(char **)(unaff_EDI + 0x74);
  if (pcVar7 <= *(char **)(unaff_EDI + 0x74)) {
    pcVar3 = pcVar7;
  }
  return pcVar3;
}



char * FUN_008ed6e0(int param_1)

{
  int iVar1;
  char *pcVar2;
  char *pcVar3;
  char *pcVar4;
  char *pcVar5;
  int unaff_ESI;
  
  iVar1 = *(int *)(unaff_ESI + 0x38);
  pcVar2 = (char *)(*(int *)(unaff_ESI + 0x6c) + iVar1);
  if ((*(char *)(iVar1 + param_1) == *pcVar2) && (*(char *)(iVar1 + param_1 + 1) == pcVar2[1])) {
    pcVar5 = (char *)(iVar1 + param_1 + 2);
    pcVar3 = pcVar2 + 2;
    while (((((pcVar4 = pcVar3 + 1, pcVar3[1] == pcVar5[1] &&
              (pcVar4 = pcVar3 + 2, pcVar3[2] == pcVar5[2])) &&
             (pcVar4 = pcVar3 + 3, pcVar3[3] == pcVar5[3])) &&
            ((pcVar4 = pcVar3 + 4, pcVar3[4] == pcVar5[4] &&
             (pcVar4 = pcVar3 + 5, pcVar3[5] == pcVar5[5])))) &&
           ((pcVar4 = pcVar3 + 6, pcVar3[6] == pcVar5[6] &&
            (pcVar4 = pcVar3 + 7, pcVar3[7] == pcVar5[7]))))) {
      pcVar4 = pcVar3 + 8;
      pcVar5 = pcVar5 + 8;
      if ((pcVar3[8] != *pcVar5) || (pcVar3 = pcVar4, pcVar2 + 0x102 <= pcVar4)) break;
    }
    pcVar4 = pcVar4 + (0x102 - (int)(pcVar2 + 0x102));
    if (2 < (int)pcVar4) {
      *(int *)(unaff_ESI + 0x70) = param_1;
      if (pcVar4 <= *(char **)(unaff_ESI + 0x74)) {
        return pcVar4;
      }
      return *(char **)(unaff_ESI + 0x74);
    }
  }
  return (char *)0x2;
}



void FUN_008ed780(void)

{
  ushort *puVar1;
  int *_Size;
  void **ppvVar2;
  int *piVar3;
  int *piVar4;
  short sVar5;
  void *pvVar6;
  short *psVar7;
  int *piVar8;
  void *_Size_00;
  int **unaff_ESI;
  void *local_8;
  
  _Size = unaff_ESI[0xb];
  do {
    local_8 = (void *)((int)unaff_ESI[0xf] + (-(int)unaff_ESI[0x1b] - (int)unaff_ESI[0x1d]));
    if ((int *)((int)unaff_ESI[0xb] + -0x106 + (int)_Size) <= unaff_ESI[0x1b]) {
      _memcpy(unaff_ESI[0xe],(void *)((int)unaff_ESI[0xe] + (int)_Size),(size_t)_Size);
      piVar8 = unaff_ESI[0x13];
      unaff_ESI[0x1c] = (int *)((int)unaff_ESI[0x1c] - (int)_Size);
      unaff_ESI[0x1b] = (int *)((int)unaff_ESI[0x1b] - (int)_Size);
      unaff_ESI[0x17] = (int *)((int)unaff_ESI[0x17] - (int)_Size);
      psVar7 = (short *)((int)unaff_ESI[0x11] + (int)piVar8 * 2);
      do {
        puVar1 = (ushort *)(psVar7 + -1);
        psVar7 = psVar7 + -1;
        if ((int *)(uint)*puVar1 < _Size) {
          sVar5 = 0;
        }
        else {
          sVar5 = *puVar1 - (short)_Size;
        }
        piVar8 = (int *)((int)piVar8 + -1);
        *psVar7 = sVar5;
      } while (piVar8 != (int *)0x0);
      psVar7 = (short *)((int)unaff_ESI[0x10] + (int)_Size * 2);
      piVar8 = _Size;
      do {
        puVar1 = (ushort *)(psVar7 + -1);
        psVar7 = psVar7 + -1;
        if ((int *)(uint)*puVar1 < _Size) {
          sVar5 = 0;
        }
        else {
          sVar5 = *puVar1 - (short)_Size;
        }
        piVar8 = (int *)((int)piVar8 + -1);
        *psVar7 = sVar5;
      } while (piVar8 != (int *)0x0);
      local_8 = (void *)((int)local_8 + (int)_Size);
    }
    ppvVar2 = (void **)*unaff_ESI;
    if (ppvVar2[1] == (void *)0x0) {
      return;
    }
    piVar8 = unaff_ESI[0x1d];
    piVar3 = unaff_ESI[0x1b];
    pvVar6 = ppvVar2[1];
    piVar4 = unaff_ESI[0xe];
    _Size_00 = pvVar6;
    if (local_8 < pvVar6) {
      _Size_00 = local_8;
    }
    if (_Size_00 != (void *)0x0) {
      ppvVar2[1] = (void *)((int)pvVar6 - (int)_Size_00);
      if (*(int *)((int)ppvVar2[7] + 0x18) == 1) {
        pvVar6 = (void *)FUN_008efd50(ppvVar2[0xc],*ppvVar2,_Size_00);
LAB_008ed86d:
        ppvVar2[0xc] = pvVar6;
      }
      else if (*(int *)((int)ppvVar2[7] + 0x18) == 2) {
        pvVar6 = (void *)FUN_008ecba0(ppvVar2[0xc],*ppvVar2,_Size_00);
        goto LAB_008ed86d;
      }
      _memcpy((void *)((int)piVar8 + (int)piVar3 + (int)piVar4),*ppvVar2,(size_t)_Size_00);
      *ppvVar2 = (void *)((int)*ppvVar2 + (int)_Size_00);
      ppvVar2[2] = (void *)((int)ppvVar2[2] + (int)_Size_00);
    }
    unaff_ESI[0x1d] = (int *)((int)unaff_ESI[0x1d] + (int)_Size_00);
    if ((int *)0x2 < unaff_ESI[0x1d]) {
      piVar8 = (int *)(uint)*(byte *)((int)unaff_ESI[0x1b] + (int)unaff_ESI[0xe]);
      unaff_ESI[0x12] = piVar8;
      unaff_ESI[0x12] =
           (int *)(((int)piVar8 << ((byte)unaff_ESI[0x16] & 0x1f) ^
                   (uint)((byte *)((int)unaff_ESI[0x1b] + (int)unaff_ESI[0xe]))[1]) &
                  (uint)unaff_ESI[0x15]);
    }
    if ((int *)0x105 < unaff_ESI[0x1d]) {
      return;
    }
    if ((*unaff_ESI)[1] == 0) {
      return;
    }
  } while( true );
}



byte FUN_008edab0(int *param_1,int param_2)

{
  int *piVar1;
  char cVar2;
  byte bVar3;
  short sVar4;
  short sVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  ushort uVar9;
  uint uVar10;
  bool bVar11;
  
  uVar10 = 0;
  do {
    uVar7 = param_1[0x1d];
    if (uVar7 < 0x106) {
      FUN_008ed780();
      uVar7 = param_1[0x1d];
      if ((uVar7 < 0x106) && (param_2 == 0)) {
        return 0;
      }
      if (uVar7 == 0) {
        iVar6 = param_1[0x17];
        if (iVar6 < 0) {
          iVar8 = 0;
        }
        else {
          iVar8 = param_1[0xe] + iVar6;
        }
        FUN_008f1820(param_1,iVar8,param_1[0x1b] - iVar6,param_2 == 4);
        param_1[0x17] = param_1[0x1b];
        FUN_008ecbf0();
        if (*(int *)(*param_1 + 0x10) != 0) {
          return (param_2 == 4) * '\x02' + 1;
        }
        return (param_2 != 4) - 1U & 2;
      }
    }
    if (2 < uVar7) {
      uVar10 = (param_1[0x12] << ((byte)param_1[0x16] & 0x1f) ^
               (uint)*(byte *)(param_1[0xe] + 2 + param_1[0x1b])) & param_1[0x15];
      param_1[0x12] = uVar10;
      *(undefined2 *)(param_1[0x10] + (param_1[0xd] & param_1[0x1b]) * 2) =
           *(undefined2 *)(param_1[0x11] + uVar10 * 2);
      uVar10 = (uint)*(ushort *)(param_1[0x10] + (param_1[0x1b] & param_1[0xd]) * 2);
      *(undefined2 *)(param_1[0x11] + param_1[0x12] * 2) = *(undefined2 *)(param_1 + 0x1b);
    }
    if (((uVar10 != 0) && (param_1[0x1b] - uVar10 <= param_1[0xb] - 0x106U)) && (param_1[0x22] != 2)
       ) {
      if (param_1[0x22] == 3) {
        if (param_1[0x1b] - uVar10 == 1) {
          iVar6 = FUN_008ed6e0(uVar10);
          param_1[0x18] = iVar6;
        }
      }
      else {
        iVar6 = FUN_008ed580();
        param_1[0x18] = iVar6;
      }
    }
    if ((uint)param_1[0x18] < 3) {
      bVar3 = *(byte *)(param_1[0x1b] + param_1[0xe]);
      *(undefined2 *)(param_1[0x5a9] + param_1[0x5a8] * 2) = 0;
      *(byte *)(param_1[0x5a6] + param_1[0x5a8]) = bVar3;
      param_1[0x5a8] = param_1[0x5a8] + 1;
      *(short *)(param_1 + bVar3 + 0x25) = *(short *)(param_1 + bVar3 + 0x25) + 1;
      bVar11 = param_1[0x5a8] == param_1[0x5a7] + -1;
      param_1[0x1d] = param_1[0x1d] + -1;
LAB_008edd32:
      param_1[0x1b] = param_1[0x1b] + 1;
    }
    else {
      sVar4 = *(short *)(param_1 + 0x1b);
      sVar5 = *(short *)(param_1 + 0x1c);
      cVar2 = *(char *)(param_1 + 0x18);
      *(short *)(param_1[0x5a9] + param_1[0x5a8] * 2) = sVar4 - sVar5;
      *(byte *)(param_1[0x5a6] + param_1[0x5a8]) = cVar2 - 3U;
      param_1[0x5a8] = param_1[0x5a8] + 1;
      *(short *)(param_1 + (byte)(&DAT_00d44010)[(byte)(cVar2 - 3U)] + 0x126) =
           *(short *)(param_1 + (byte)(&DAT_00d44010)[(byte)(cVar2 - 3U)] + 0x126) + 1;
      uVar9 = (sVar4 - sVar5) - 1;
      if (uVar9 < 0x100) {
        bVar3 = (&UNK_00d43e10)[uVar9];
      }
      else {
        bVar3 = (&DAT_00d43f10)[uVar9 >> 7];
      }
      *(short *)(param_1 + bVar3 + 0x262) = *(short *)(param_1 + bVar3 + 0x262) + 1;
      bVar11 = param_1[0x5a8] == param_1[0x5a7] + -1;
      uVar7 = param_1[0x18];
      param_1[0x1d] = param_1[0x1d] - uVar7;
      if ((uVar7 <= (uint)param_1[0x20]) && (2 < (uint)param_1[0x1d])) {
        param_1[0x18] = uVar7 - 1;
        do {
          param_1[0x1b] = param_1[0x1b] + 1;
          uVar10 = ((uint)*(byte *)(param_1[0x1b] + 2U + param_1[0xe]) ^
                   param_1[0x12] << ((byte)param_1[0x16] & 0x1f)) & param_1[0x15];
          param_1[0x12] = uVar10;
          *(undefined2 *)(param_1[0x10] + (param_1[0xd] & param_1[0x1b]) * 2) =
               *(undefined2 *)(param_1[0x11] + uVar10 * 2);
          uVar10 = (uint)*(ushort *)(param_1[0x10] + (param_1[0x1b] & param_1[0xd]) * 2);
          *(undefined2 *)(param_1[0x11] + param_1[0x12] * 2) = *(undefined2 *)(param_1 + 0x1b);
          piVar1 = param_1 + 0x18;
          *piVar1 = *piVar1 + -1;
        } while (*piVar1 != 0);
        goto LAB_008edd32;
      }
      param_1[0x1b] = param_1[0x1b] + uVar7;
      param_1[0x18] = 0;
      uVar7 = (uint)*(byte *)(param_1[0x1b] + param_1[0xe]);
      param_1[0x12] = uVar7;
      param_1[0x12] =
           (uVar7 << ((byte)param_1[0x16] & 0x1f) ^
           (uint)((byte *)(param_1[0x1b] + param_1[0xe]))[1]) & param_1[0x15];
    }
    if (bVar11) {
      iVar6 = param_1[0x17];
      if (iVar6 < 0) {
        iVar8 = 0;
      }
      else {
        iVar8 = param_1[0xe] + iVar6;
      }
      FUN_008f1820(param_1,iVar8,param_1[0x1b] - iVar6,0);
      iVar6 = *param_1;
      param_1[0x17] = param_1[0x1b];
      uVar7 = *(uint *)(*(int *)(iVar6 + 0x1c) + 0x14);
      if (*(uint *)(iVar6 + 0x10) < uVar7) {
        uVar7 = *(uint *)(iVar6 + 0x10);
      }
      if (uVar7 != 0) {
        _memcpy(*(void **)(iVar6 + 0xc),*(void **)(*(int *)(iVar6 + 0x1c) + 0x10),uVar7);
        *(int *)(iVar6 + 0xc) = *(int *)(iVar6 + 0xc) + uVar7;
        piVar1 = (int *)(*(int *)(iVar6 + 0x1c) + 0x10);
        *piVar1 = *piVar1 + uVar7;
        *(int *)(iVar6 + 0x14) = *(int *)(iVar6 + 0x14) + uVar7;
        *(int *)(iVar6 + 0x10) = *(int *)(iVar6 + 0x10) - uVar7;
        piVar1 = (int *)(*(int *)(iVar6 + 0x1c) + 0x14);
        *piVar1 = *piVar1 - uVar7;
        iVar6 = *(int *)(iVar6 + 0x1c);
        if (*(int *)(iVar6 + 0x14) == 0) {
          *(undefined4 *)(iVar6 + 0x10) = *(undefined4 *)(iVar6 + 8);
        }
      }
      if (*(int *)(*param_1 + 0x10) == 0) {
        return 0;
      }
    }
  } while( true );
}



undefined4 FUN_008ee2a0(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  if ((((param_1 != 0) && (iVar1 = *(int *)(param_1 + 0x1c), iVar1 != 0)) &&
      (*(int *)(param_1 + 0x20) != 0)) && (*(int *)(param_1 + 0x24) != 0)) {
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined4 *)(param_1 + 8) = 0;
    *(undefined4 *)(param_1 + 0x18) = 0;
    *(undefined4 *)(param_1 + 0x2c) = 2;
    *(undefined4 *)(iVar1 + 0x10) = *(undefined4 *)(iVar1 + 8);
    *(undefined4 *)(iVar1 + 0x14) = 0;
    if (*(int *)(iVar1 + 0x18) < 0) {
      *(int *)(iVar1 + 0x18) = -*(int *)(iVar1 + 0x18);
    }
    *(uint *)(iVar1 + 4) = (-(uint)(*(int *)(iVar1 + 0x18) != 0) & 0xffffffb9) + 0x71;
    if (*(int *)(iVar1 + 0x18) == 2) {
      uVar2 = FUN_008ecba0();
    }
    else {
      uVar2 = FUN_008efd50(0,0,0);
    }
    *(undefined4 *)(param_1 + 0x30) = uVar2;
    *(undefined4 *)(iVar1 + 0x28) = 0;
    FUN_008f11c0(iVar1);
    FUN_008ed4f0();
    return 0;
  }
  return 0xfffffffe;
}



undefined4
FUN_008ee330(int param_1,uint param_2,int param_3,int param_4,int param_5,uint param_6,char *param_7
            ,int param_8)

{
  uint uVar1;
  int *piVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  
  iVar4 = 1;
  if (((param_7 == (char *)0x0) || (*param_7 != '1')) || (param_8 != 0x38)) {
    return 0xfffffffa;
  }
  if (param_1 == 0) {
    return 0xfffffffe;
  }
  *(undefined4 *)(param_1 + 0x18) = 0;
  if (*(int *)(param_1 + 0x20) == 0) {
    *(code **)(param_1 + 0x20) = FUN_008efd30;
    *(undefined4 *)(param_1 + 0x28) = 0;
  }
  if (*(int *)(param_1 + 0x24) == 0) {
    *(code **)(param_1 + 0x24) = FUN_00b35f70;
  }
  if (param_2 == 0xffffffff) {
    param_2 = 6;
  }
  if (param_4 < 0) {
    iVar4 = 0;
    param_4 = -param_4;
  }
  else if (0xf < param_4) {
    iVar4 = 2;
    param_4 = param_4 + -0x10;
  }
  if (((param_5 - 1U < 9) && (param_3 == 8)) &&
     ((param_4 - 8U < 8 && ((param_2 < 10 && (param_6 < 5)))))) {
    if (param_4 == 8) {
      param_4 = 9;
    }
    piVar2 = (int *)(**(code **)(param_1 + 0x20))(*(undefined4 *)(param_1 + 0x28),1,0x16c0);
    if (piVar2 != (int *)0x0) {
      *(int **)(param_1 + 0x1c) = piVar2;
      piVar2[6] = iVar4;
      iVar5 = 1 << ((byte)param_4 & 0x1f);
      piVar2[0xc] = param_4;
      piVar2[0xd] = iVar5 + -1;
      iVar4 = 1 << ((byte)(param_5 + 7) & 0x1f);
      piVar2[0x14] = param_5 + 7;
      *piVar2 = param_1;
      piVar2[0x13] = iVar4;
      piVar2[0x15] = iVar4 + -1;
      piVar2[7] = 0;
      piVar2[0xb] = iVar5;
      piVar2[0x16] = (param_5 + 9U) / 3;
      iVar4 = (**(code **)(param_1 + 0x20))(*(undefined4 *)(param_1 + 0x28),iVar5,2);
      piVar2[0xe] = iVar4;
      iVar4 = (**(code **)(param_1 + 0x20))(*(undefined4 *)(param_1 + 0x28),piVar2[0xb],2);
      piVar2[0x10] = iVar4;
      iVar4 = (**(code **)(param_1 + 0x20))(*(undefined4 *)(param_1 + 0x28),piVar2[0x13],2);
      piVar2[0x11] = iVar4;
      iVar4 = 1 << ((char)param_5 + 6U & 0x1f);
      piVar2[0x5a7] = iVar4;
      iVar4 = (**(code **)(param_1 + 0x20))(*(undefined4 *)(param_1 + 0x28),iVar4,4);
      uVar1 = piVar2[0x5a7];
      piVar2[2] = iVar4;
      piVar2[3] = uVar1 * 4;
      if ((((piVar2[0xe] != 0) && (piVar2[0x10] != 0)) && (piVar2[0x11] != 0)) && (iVar4 != 0)) {
        piVar2[0x5a9] = iVar4 + (uVar1 & 0xfffffffe);
        piVar2[0x5a6] = iVar4 + uVar1 * 3;
        piVar2[0x21] = param_2;
        piVar2[0x22] = param_6;
        *(undefined *)(piVar2 + 9) = 8;
        uVar3 = FUN_008ee2a0(param_1);
        return uVar3;
      }
      piVar2[1] = 0x29a;
      *(char **)(param_1 + 0x18) = "insufficient memory";
      FUN_008ed420(param_1);
    }
    return 0xfffffffc;
  }
  return 0xfffffffe;
}



void FUN_008ee550(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_008ee330(param_1,param_2,8,0xf,8,0,param_3,param_4);
  return;
}



undefined4 FUN_008ee580(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  if ((param_1 != 0) && (puVar2 = *(undefined4 **)(param_1 + 0x1c), puVar2 != (undefined4 *)0x0)) {
    puVar2[7] = 0;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined4 *)(param_1 + 8) = 0;
    *(undefined4 *)(param_1 + 0x18) = 0;
    *(undefined4 *)(param_1 + 0x30) = 1;
    *puVar2 = 0;
    puVar2[1] = 0;
    puVar2[3] = 0;
    puVar2[8] = 0;
    puVar2[10] = 0;
    puVar2[0xb] = 0;
    puVar2[0xc] = 0;
    puVar2[0xe] = 0;
    puVar2[0xf] = 0;
    puVar1 = puVar2 + 0x14c;
    puVar2[5] = 0x8000;
    puVar2[0x1b] = puVar1;
    puVar2[0x14] = puVar1;
    puVar2[0x13] = puVar1;
    return 0;
  }
  return 0xfffffffe;
}



undefined4 FUN_008ee5e0(int param_1,uint param_2,char *param_3,int param_4)

{
  int iVar1;
  undefined4 uVar2;
  
  if (((param_3 == (char *)0x0) || (*param_3 != '1')) || (param_4 != 0x38)) {
    return 0xfffffffa;
  }
  if (param_1 != 0) {
    *(undefined4 *)(param_1 + 0x18) = 0;
    if (*(int *)(param_1 + 0x20) == 0) {
      *(code **)(param_1 + 0x20) = FUN_008efd30;
      *(undefined4 *)(param_1 + 0x28) = 0;
    }
    if (*(int *)(param_1 + 0x24) == 0) {
      *(code **)(param_1 + 0x24) = FUN_00b35f70;
    }
    iVar1 = (**(code **)(param_1 + 0x20))(*(undefined4 *)(param_1 + 0x28),1,0x2530);
    if (iVar1 == 0) {
      return 0xfffffffc;
    }
    *(int *)(param_1 + 0x1c) = iVar1;
    if ((int)param_2 < 0) {
      *(undefined4 *)(iVar1 + 8) = 0;
      param_2 = -param_2;
    }
    else {
      *(int *)(iVar1 + 8) = ((int)param_2 >> 4) + 1;
      if ((int)param_2 < 0x30) {
        param_2 = param_2 & 0xf;
      }
    }
    if (param_2 - 8 < 8) {
      *(uint *)(iVar1 + 0x24) = param_2;
      *(undefined4 *)(iVar1 + 0x34) = 0;
      uVar2 = FUN_008ee580(param_1);
      return uVar2;
    }
    (**(code **)(param_1 + 0x24))(*(undefined4 *)(param_1 + 0x28),iVar1);
    *(undefined4 *)(param_1 + 0x1c) = 0;
  }
  return 0xfffffffe;
}



void FUN_008ee6b0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_008ee5e0(param_1,0xf,param_2,param_3);
  return;
}



undefined4 FUN_008ee6d0(void)

{
  int iVar1;
  int in_EAX;
  int iVar2;
  uint uVar3;
  int unaff_EBX;
  uint uVar4;
  size_t _Size;
  
  iVar1 = *(int *)(unaff_EBX + 0x1c);
  if (*(int *)(iVar1 + 0x34) == 0) {
    iVar2 = (**(code **)(unaff_EBX + 0x20))
                      (*(undefined4 *)(unaff_EBX + 0x28),
                       1 << ((byte)*(undefined4 *)(iVar1 + 0x24) & 0x1f),1);
    *(int *)(iVar1 + 0x34) = iVar2;
    if (iVar2 == 0) {
      return 1;
    }
  }
  if (*(int *)(iVar1 + 0x28) == 0) {
    *(undefined4 *)(iVar1 + 0x30) = 0;
    *(undefined4 *)(iVar1 + 0x2c) = 0;
    *(int *)(iVar1 + 0x28) = 1 << ((byte)*(undefined4 *)(iVar1 + 0x24) & 0x1f);
  }
  uVar4 = in_EAX - *(int *)(unaff_EBX + 0x10);
  uVar3 = *(uint *)(iVar1 + 0x28);
  if (uVar3 <= uVar4) {
    _memcpy(*(void **)(iVar1 + 0x34),(void *)(*(int *)(unaff_EBX + 0xc) - uVar3),uVar3);
    *(undefined4 *)(iVar1 + 0x30) = 0;
    *(undefined4 *)(iVar1 + 0x2c) = *(undefined4 *)(iVar1 + 0x28);
    return 0;
  }
  uVar3 = uVar3 - *(int *)(iVar1 + 0x30);
  if (uVar4 < uVar3) {
    uVar3 = uVar4;
  }
  _memcpy((void *)(*(int *)(iVar1 + 0x34) + *(int *)(iVar1 + 0x30)),
          (void *)(*(int *)(unaff_EBX + 0xc) - uVar4),uVar3);
  _Size = uVar4 - uVar3;
  if (_Size != 0) {
    _memcpy(*(void **)(iVar1 + 0x34),(void *)(*(int *)(unaff_EBX + 0xc) - _Size),_Size);
    *(size_t *)(iVar1 + 0x30) = _Size;
    *(undefined4 *)(iVar1 + 0x2c) = *(undefined4 *)(iVar1 + 0x28);
    return 0;
  }
  *(int *)(iVar1 + 0x30) = *(int *)(iVar1 + 0x30) + uVar3;
  if (*(uint *)(iVar1 + 0x30) == *(uint *)(iVar1 + 0x28)) {
    *(undefined4 *)(iVar1 + 0x30) = 0;
  }
  if (*(uint *)(iVar1 + 0x2c) < *(uint *)(iVar1 + 0x28)) {
    *(uint *)(iVar1 + 0x2c) = *(uint *)(iVar1 + 0x2c) + uVar3;
  }
  return 0;
}



int FUN_008ee7c0(byte **param_1,int param_2)

{
  uint *puVar1;
  int iVar2;
  byte *pbVar3;
  byte bVar4;
  byte bVar5;
  byte *pbVar6;
  uint uVar7;
  char cVar8;
  uint uVar10;
  uint uVar11;
  byte *_Src;
  int iVar12;
  byte *pbVar13;
  byte *local_2c;
  undefined4 local_28;
  byte *local_24;
  char local_20;
  undefined local_1f;
  undefined local_1e;
  undefined local_1d;
  uint local_1c;
  byte *local_18;
  byte *local_14;
  byte *local_10;
  int local_c;
  byte *local_8;
  byte *local_4;
  byte *pbVar9;
  
  if ((((param_1 == (byte **)0x0) || (puVar1 = (uint *)param_1[7], puVar1 == (uint *)0x0)) ||
      (param_1[3] == (byte *)0x0)) || ((*param_1 == (byte *)0x0 && (param_1[1] != (byte *)0x0)))) {
    return -2;
  }
  if (*puVar1 == 0xb) {
    *puVar1 = 0xc;
  }
  local_24 = param_1[4];
  local_18 = param_1[3];
  uVar11 = puVar1[0xe];
  _Src = *param_1;
  uVar7 = *puVar1;
  pbVar3 = param_1[1];
  pbVar13 = (byte *)puVar1[0xf];
  local_c = 0;
  local_2c = pbVar3;
  local_14 = local_24;
  local_4 = pbVar3;
  if (0x1c < uVar7) {
    return -2;
  }
  do {
    pbVar6 = pbVar3;
    switch(uVar7) {
    case 0:
      if (puVar1[2] == 0) {
        *puVar1 = 0xc;
      }
      else {
        for (; pbVar3 = local_2c, pbVar13 < (byte *)0x10; pbVar13 = pbVar13 + 8) {
          if (pbVar6 == (byte *)0x0) goto LAB_008efb43;
          bVar5 = *_Src;
          pbVar6 = pbVar6 + -1;
          _Src = _Src + 1;
          uVar11 = uVar11 + ((uint)bVar5 << ((byte)pbVar13 & 0x1f));
          local_2c = pbVar6;
        }
        local_2c = pbVar3;
        if (((*(byte *)(puVar1 + 2) & 2) == 0) || (uVar11 != 0x8b1f)) {
          puVar1[4] = 0;
          if (puVar1[8] != 0) {
            *(undefined4 *)(puVar1[8] + 0x30) = 0xffffffff;
          }
          if (((*(byte *)(puVar1 + 2) & 1) == 0) ||
             (((uVar11 & 0xff) * 0x100 + (uVar11 >> 8)) % 0x1f != 0)) {
            param_1[6] = (byte *)"incorrect header check";
          }
          else if (((byte)uVar11 & 0xf) == 8) {
            uVar7 = (uVar11 >> 4 & 0xf) + 8;
            pbVar13 = pbVar13 + -4;
            if (uVar7 <= puVar1[9]) {
              puVar1[5] = 1 << (sbyte)uVar7;
              pbVar13 = (byte *)FUN_008efd50(0,0,0);
              puVar1[6] = (uint)pbVar13;
              param_1[0xc] = pbVar13;
              *puVar1 = ~(uVar11 >> 0xc) & 2 | 9;
              uVar11 = 0;
              pbVar13 = (byte *)0x0;
              break;
            }
            param_1[6] = (byte *)"invalid window size";
            uVar11 = uVar11 >> 4;
          }
          else {
            param_1[6] = (byte *)"unknown compression method";
          }
          goto LAB_008efae3;
        }
        uVar7 = FUN_008ecba0(0,0,0);
        puVar1[6] = uVar7;
        local_20 = '\x1f';
        local_1f = 0x8b;
        uVar7 = FUN_008ecba0(puVar1[6],&local_20,2);
        puVar1[6] = uVar7;
        uVar11 = 0;
        pbVar13 = (byte *)0x0;
        *puVar1 = 1;
      }
      break;
    case 1:
      for (; pbVar13 < (byte *)0x10; pbVar13 = pbVar13 + 8) {
        pbVar6 = pbVar3;
        if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
        bVar5 = *_Src;
        pbVar3 = pbVar3 + -1;
        _Src = _Src + 1;
        uVar11 = uVar11 + ((uint)bVar5 << ((byte)pbVar13 & 0x1f));
        local_2c = pbVar3;
      }
      puVar1[4] = uVar11;
      if ((char)uVar11 == '\b') {
        if ((uVar11 & 0xe000) == 0) {
          if ((uint *)puVar1[8] != (uint *)0x0) {
            *(uint *)puVar1[8] = uVar11 >> 8 & 1;
          }
          if ((puVar1[4] & 0x200) != 0) {
            local_1f = (undefined)(uVar11 >> 8);
            local_20 = (char)uVar11;
            uVar7 = FUN_008ecba0(puVar1[6],&local_20,2);
            puVar1[6] = uVar7;
            pbVar3 = local_2c;
          }
          uVar11 = 0;
          pbVar13 = (byte *)0x0;
          *puVar1 = 2;
          do {
            pbVar6 = pbVar3;
            if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
            bVar5 = *_Src;
            bVar4 = (byte)pbVar13;
            pbVar3 = pbVar3 + -1;
            pbVar13 = pbVar13 + 8;
            _Src = _Src + 1;
            uVar11 = uVar11 + ((uint)bVar5 << (bVar4 & 0x1f));
            local_2c = pbVar3;
joined_r0x008eea4e:
          } while (pbVar13 < (byte *)0x20);
          if (puVar1[8] != 0) {
            *(uint *)(puVar1[8] + 4) = uVar11;
          }
          if ((puVar1[4] & 0x200) != 0) {
            local_20 = (char)uVar11;
            local_1f = (undefined)(uVar11 >> 8);
            local_1e = (undefined)(uVar11 >> 0x10);
            local_1d = (undefined)(uVar11 >> 0x18);
            uVar7 = FUN_008ecba0(puVar1[6],&local_20,4);
            puVar1[6] = uVar7;
            pbVar3 = local_2c;
          }
          uVar11 = 0;
          pbVar13 = (byte *)0x0;
          *puVar1 = 3;
          do {
            pbVar6 = pbVar3;
            if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
            bVar5 = *_Src;
            bVar4 = (byte)pbVar13;
            pbVar3 = pbVar3 + -1;
            pbVar13 = pbVar13 + 8;
            _Src = _Src + 1;
            uVar11 = uVar11 + ((uint)bVar5 << (bVar4 & 0x1f));
            local_2c = pbVar3;
joined_r0x008eeac9:
          } while (pbVar13 < (byte *)0x10);
          if (puVar1[8] != 0) {
            *(uint *)(puVar1[8] + 8) = uVar11 & 0xff;
            *(uint *)(puVar1[8] + 0xc) = uVar11 >> 8;
          }
          if ((puVar1[4] & 0x200) != 0) {
            local_20 = (char)uVar11;
            local_1f = (undefined)(uVar11 >> 8);
            uVar7 = FUN_008ecba0(puVar1[6],&local_20,2);
            puVar1[6] = uVar7;
            pbVar3 = local_2c;
          }
          uVar11 = 0;
          pbVar13 = (byte *)0x0;
          *puVar1 = 4;
          goto switchD_008ee847_caseD_4;
        }
        param_1[6] = (byte *)"unknown header flags set";
      }
      else {
        param_1[6] = (byte *)"unknown compression method";
      }
      goto LAB_008efae3;
    case 2:
      goto joined_r0x008eea4e;
    case 3:
      goto joined_r0x008eeac9;
    case 4:
switchD_008ee847_caseD_4:
      if ((puVar1[4] & 0x400) == 0) {
        if (puVar1[8] != 0) {
          *(undefined4 *)(puVar1[8] + 0x10) = 0;
        }
      }
      else {
        for (; pbVar13 < (byte *)0x10; pbVar13 = pbVar13 + 8) {
          pbVar6 = pbVar3;
          if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
          bVar5 = *_Src;
          pbVar3 = pbVar3 + -1;
          _Src = _Src + 1;
          uVar11 = uVar11 + ((uint)bVar5 << ((byte)pbVar13 & 0x1f));
          local_2c = pbVar3;
        }
        puVar1[0x10] = uVar11;
        if (puVar1[8] != 0) {
          *(uint *)(puVar1[8] + 0x14) = uVar11;
        }
        if ((puVar1[4] & 0x200) != 0) {
          local_20 = (char)uVar11;
          local_1f = (undefined)(uVar11 >> 8);
          uVar7 = FUN_008ecba0(puVar1[6],&local_20,2);
          puVar1[6] = uVar7;
          pbVar3 = local_2c;
        }
        uVar11 = 0;
        pbVar13 = (byte *)0x0;
      }
      *puVar1 = 5;
    case 5:
      if ((puVar1[4] & 0x400) == 0) {
LAB_008eec77:
        puVar1[0x10] = 0;
        *puVar1 = 6;
switchD_008ee847_caseD_6:
        if ((puVar1[4] & 0x800) == 0) {
          if (puVar1[8] != 0) {
            *(undefined4 *)(puVar1[8] + 0x1c) = 0;
          }
LAB_008eed31:
          puVar1[0x10] = 0;
          *puVar1 = 7;
switchD_008ee847_caseD_7:
          if ((puVar1[4] & 0x1000) == 0) {
            if (puVar1[8] != 0) {
              *(undefined4 *)(puVar1[8] + 0x24) = 0;
            }
LAB_008eede6:
            *puVar1 = 8;
switchD_008ee847_caseD_8:
            if ((puVar1[4] & 0x200) != 0) {
              for (; pbVar13 < (byte *)0x10; pbVar13 = pbVar13 + 8) {
                pbVar6 = pbVar3;
                if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
                bVar5 = *_Src;
                pbVar3 = pbVar3 + -1;
                _Src = _Src + 1;
                uVar11 = uVar11 + ((uint)bVar5 << ((byte)pbVar13 & 0x1f));
                local_2c = pbVar3;
              }
              if (uVar11 != *(ushort *)(puVar1 + 6)) {
                param_1[6] = (byte *)"header crc mismatch";
                goto LAB_008efae3;
              }
              uVar11 = 0;
              pbVar13 = (byte *)0x0;
            }
            if (puVar1[8] != 0) {
              *(uint *)(puVar1[8] + 0x2c) = (int)puVar1[4] >> 9 & 1;
              *(undefined4 *)(puVar1[8] + 0x30) = 1;
            }
            pbVar3 = (byte *)FUN_008ecba0(0,0,0);
            puVar1[6] = (uint)pbVar3;
            param_1[0xc] = pbVar3;
            *puVar1 = 0xb;
            pbVar3 = local_2c;
            break;
          }
          pbVar6 = pbVar3;
          if (pbVar3 != (byte *)0x0) {
            pbVar6 = (byte *)0x0;
            do {
              pbVar9 = pbVar6 + (int)_Src;
              local_1c = (uint)*pbVar9;
              pbVar6 = pbVar6 + 1;
              uVar7 = puVar1[8];
              if (((uVar7 != 0) && (local_8 = *(byte **)(uVar7 + 0x24), local_8 != (byte *)0x0)) &&
                 (puVar1[0x10] < *(uint *)(uVar7 + 0x28))) {
                local_8[puVar1[0x10]] = *pbVar9;
                puVar1[0x10] = puVar1[0x10] + 1;
                pbVar3 = local_2c;
              }
            } while ((local_1c != 0) && (pbVar6 < pbVar3));
            if ((puVar1[4] & 0x200) != 0) {
              uVar7 = FUN_008ecba0(puVar1[6],_Src,pbVar6);
              puVar1[6] = uVar7;
              pbVar3 = local_2c;
            }
            pbVar3 = pbVar3 + -(int)pbVar6;
            _Src = _Src + (int)pbVar6;
            pbVar6 = pbVar3;
            local_2c = pbVar3;
            if (local_1c == 0) goto LAB_008eede6;
          }
        }
        else {
          pbVar6 = pbVar3;
          if (pbVar3 != (byte *)0x0) {
            pbVar6 = (byte *)0x0;
            do {
              pbVar9 = pbVar6 + (int)_Src;
              local_1c = (uint)*pbVar9;
              pbVar6 = pbVar6 + 1;
              uVar7 = puVar1[8];
              if (((uVar7 != 0) && (local_8 = *(byte **)(uVar7 + 0x1c), local_8 != (byte *)0x0)) &&
                 (puVar1[0x10] < *(uint *)(uVar7 + 0x20))) {
                local_8[puVar1[0x10]] = *pbVar9;
                puVar1[0x10] = puVar1[0x10] + 1;
                pbVar3 = local_2c;
              }
            } while ((local_1c != 0) && (pbVar6 < pbVar3));
            if ((puVar1[4] & 0x200) != 0) {
              uVar7 = FUN_008ecba0(puVar1[6],_Src,pbVar6);
              puVar1[6] = uVar7;
              pbVar3 = local_2c;
            }
            pbVar3 = pbVar3 + -(int)pbVar6;
            _Src = _Src + (int)pbVar6;
            pbVar6 = pbVar3;
            local_2c = pbVar3;
            if (local_1c == 0) goto LAB_008eed31;
          }
        }
      }
      else {
        pbVar6 = (byte *)puVar1[0x10];
        if (pbVar3 < (byte *)puVar1[0x10]) {
          pbVar6 = pbVar3;
        }
        if (pbVar6 != (byte *)0x0) {
          if ((puVar1[8] != 0) && (local_8 = *(byte **)(puVar1[8] + 0x10), local_8 != (byte *)0x0))
          {
            local_1c = *(int *)(puVar1[8] + 0x14) - puVar1[0x10];
            pbVar3 = pbVar6;
            if (*(byte **)(puVar1[8] + 0x18) < pbVar6 + local_1c) {
              pbVar3 = *(byte **)(puVar1[8] + 0x18) + -local_1c;
            }
            _memcpy(local_8 + local_1c,_Src,(size_t)pbVar3);
            pbVar3 = local_2c;
          }
          if ((puVar1[4] & 0x200) != 0) {
            uVar7 = FUN_008ecba0(puVar1[6],_Src,pbVar6);
            puVar1[6] = uVar7;
            pbVar3 = local_2c;
          }
          pbVar3 = pbVar3 + -(int)pbVar6;
          _Src = _Src + (int)pbVar6;
          puVar1[0x10] = puVar1[0x10] - (int)pbVar6;
          local_2c = pbVar3;
        }
        pbVar6 = pbVar3;
        if (puVar1[0x10] == 0) goto LAB_008eec77;
      }
LAB_008efb43:
      param_1[3] = local_18;
      param_1[4] = local_24;
      *param_1 = _Src;
      param_1[1] = pbVar6;
      puVar1[0xe] = uVar11;
      puVar1[0xf] = (uint)pbVar13;
      if (((puVar1[10] == 0) && ((0x17 < (int)*puVar1 || (local_14 == param_1[4])))) ||
         (iVar2 = FUN_008ee6d0(), iVar2 == 0)) {
        iVar12 = (int)local_4 - (int)param_1[1];
        iVar2 = (int)local_14 - (int)param_1[4];
        param_1[2] = param_1[2] + iVar12;
        param_1[5] = param_1[5] + iVar2;
        puVar1[7] = puVar1[7] + iVar2;
        if ((puVar1[2] != 0) && (iVar2 != 0)) {
          if (puVar1[4] == 0) {
            pbVar3 = (byte *)FUN_008efd50(puVar1[6],(int)param_1[3] - iVar2,iVar2);
          }
          else {
            pbVar3 = (byte *)FUN_008ecba0(puVar1[6],(int)param_1[3] - iVar2);
          }
          puVar1[6] = (uint)pbVar3;
          param_1[0xc] = pbVar3;
        }
        param_1[0xb] = (byte *)((-(uint)(puVar1[1] != 0) & 0x40) + ((*puVar1 != 0xb) - 1 & 0x80) +
                               puVar1[0xf]);
        if (((iVar12 != 0) || (iVar2 != 0)) && (param_2 != 4)) {
          return local_c;
        }
        if (local_c != 0) {
          return local_c;
        }
        return -5;
      }
      *puVar1 = 0x1c;
switchD_008ee847_caseD_1c:
      return -4;
    case 6:
      goto switchD_008ee847_caseD_6;
    case 7:
      goto switchD_008ee847_caseD_7;
    case 8:
      goto switchD_008ee847_caseD_8;
    case 9:
      for (; pbVar13 < (byte *)0x20; pbVar13 = pbVar13 + 8) {
        pbVar6 = pbVar3;
        if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
        bVar5 = *_Src;
        pbVar3 = pbVar3 + -1;
        _Src = _Src + 1;
        uVar11 = uVar11 + ((uint)bVar5 << ((byte)pbVar13 & 0x1f));
        local_2c = pbVar3;
      }
      pbVar13 = (byte *)(((uVar11 & 0xff00) + uVar11 * 0x10000) * 0x100 + (uVar11 >> 8 & 0xff00) +
                        (uVar11 >> 0x18));
      puVar1[6] = (uint)pbVar13;
      param_1[0xc] = pbVar13;
      uVar11 = 0;
      pbVar13 = (byte *)0x0;
      *puVar1 = 10;
    case 10:
      if (puVar1[3] == 0) {
        param_1[3] = local_18;
        *param_1 = _Src;
        param_1[1] = pbVar3;
        param_1[4] = local_24;
        puVar1[0xf] = (uint)pbVar13;
        puVar1[0xe] = uVar11;
        return 2;
      }
      pbVar3 = (byte *)FUN_008efd50(0,0,0);
      puVar1[6] = (uint)pbVar3;
      param_1[0xc] = pbVar3;
      *puVar1 = 0xb;
      pbVar3 = local_2c;
switchD_008ee847_caseD_b:
      pbVar6 = pbVar3;
      if (param_2 != 5) {
switchD_008ee847_caseD_c:
        if (puVar1[1] == 0) {
          for (; pbVar13 < (byte *)0x3; pbVar13 = pbVar13 + 8) {
            pbVar6 = pbVar3;
            if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
            bVar5 = *_Src;
            pbVar3 = pbVar3 + -1;
            _Src = _Src + 1;
            uVar11 = uVar11 + ((uint)bVar5 << ((byte)pbVar13 & 0x1f));
            local_2c = pbVar3;
          }
          puVar1[1] = uVar11 & 1;
          switch(uVar11 >> 1 & 3) {
          case 0:
            uVar11 = uVar11 >> 3;
            *puVar1 = 0xd;
            pbVar13 = pbVar13 + -3;
            break;
          case 1:
            uVar11 = uVar11 >> 3;
            puVar1[0x13] = (uint)&DAT_00d42cb8;
            puVar1[0x15] = 9;
            puVar1[0x14] = (uint)&DAT_00d434b8;
            puVar1[0x16] = 5;
            *puVar1 = 0x12;
            pbVar13 = pbVar13 + -3;
            break;
          case 2:
            uVar11 = uVar11 >> 3;
            *puVar1 = 0xf;
            pbVar13 = pbVar13 + -3;
            break;
          case 3:
            param_1[6] = (byte *)"invalid block type";
            *puVar1 = 0x1b;
          default:
            uVar11 = uVar11 >> 3;
            pbVar13 = pbVar13 + -3;
          }
        }
        else {
          uVar11 = uVar11 >> (sbyte)((uint)pbVar13 & 7);
          pbVar13 = pbVar13 + -((uint)pbVar13 & 7);
          *puVar1 = 0x18;
        }
        break;
      }
      goto LAB_008efb43;
    case 0xb:
      goto switchD_008ee847_caseD_b;
    case 0xc:
      goto switchD_008ee847_caseD_c;
    case 0xd:
      uVar11 = uVar11 >> (sbyte)((uint)pbVar13 & 7);
      for (pbVar13 = pbVar13 + -((uint)pbVar13 & 7); pbVar13 < (byte *)0x20; pbVar13 = pbVar13 + 8)
      {
        pbVar6 = pbVar3;
        if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
        bVar5 = *_Src;
        pbVar3 = pbVar3 + -1;
        _Src = _Src + 1;
        uVar11 = uVar11 + ((uint)bVar5 << ((byte)pbVar13 & 0x1f));
        local_2c = pbVar3;
      }
      uVar7 = uVar11 & 0xffff;
      if (uVar7 == ~uVar11 >> 0x10) {
        uVar11 = 0;
        puVar1[0x10] = uVar7;
        pbVar13 = (byte *)0x0;
        *puVar1 = 0xe;
        goto switchD_008ee847_caseD_e;
      }
      param_1[6] = (byte *)"invalid stored block lengths";
      goto LAB_008efae3;
    case 0xe:
switchD_008ee847_caseD_e:
      local_28 = (byte *)puVar1[0x10];
      if (local_28 == (byte *)0x0) {
LAB_008ef6b3:
        *puVar1 = 0xb;
      }
      else {
        if (pbVar3 < local_28) {
          local_28 = pbVar3;
        }
        if (local_24 < local_28) {
          local_28 = local_24;
        }
        pbVar6 = pbVar3;
        if (local_28 == (byte *)0x0) goto LAB_008efb43;
        _memcpy(local_18,_Src,(size_t)local_28);
        local_24 = local_24 + -(int)local_28;
        local_18 = local_18 + (int)local_28;
        _Src = _Src + (int)local_28;
        puVar1[0x10] = puVar1[0x10] - (int)local_28;
        pbVar3 = local_2c + -(int)local_28;
        local_2c = local_2c + -(int)local_28;
      }
      break;
    case 0xf:
      for (; pbVar13 < (byte *)0xe; pbVar13 = pbVar13 + 8) {
        pbVar6 = pbVar3;
        if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
        bVar5 = *_Src;
        pbVar3 = pbVar3 + -1;
        _Src = _Src + 1;
        uVar11 = uVar11 + ((uint)bVar5 << ((byte)pbVar13 & 0x1f));
        local_2c = pbVar3;
      }
      puVar1[0x18] = (uVar11 & 0x1f) + 0x101;
      uVar10 = uVar11 >> 10;
      uVar7 = (uVar11 >> 5 & 0x1f) + 1;
      uVar11 = uVar11 >> 0xe;
      pbVar13 = pbVar13 + -0xe;
      puVar1[0x19] = uVar7;
      puVar1[0x17] = (uVar10 & 0xf) + 4;
      if ((puVar1[0x18] < 0x11f) && (uVar7 < 0x1f)) {
        puVar1[0x1a] = 0;
        *puVar1 = 0x10;
        goto switchD_008ee847_caseD_10;
      }
      param_1[6] = (byte *)"too many length or distance symbols";
      goto LAB_008efae3;
    case 0x10:
switchD_008ee847_caseD_10:
      if (puVar1[0x1a] < puVar1[0x17]) {
        do {
          for (; pbVar13 < (byte *)0x3; pbVar13 = pbVar13 + 8) {
            pbVar6 = pbVar3;
            if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
            bVar5 = *_Src;
            pbVar3 = pbVar3 + -1;
            _Src = _Src + 1;
            uVar11 = uVar11 + ((uint)bVar5 << ((byte)pbVar13 & 0x1f));
            local_2c = pbVar3;
          }
          *(ushort *)((int)puVar1 + (uint)*(ushort *)(&DAT_00d43538 + puVar1[0x1a] * 2) * 2 + 0x70)
               = (ushort)uVar11 & 7;
          puVar1[0x1a] = puVar1[0x1a] + 1;
          uVar11 = uVar11 >> 3;
          pbVar13 = pbVar13 + -3;
        } while (puVar1[0x1a] < puVar1[0x17]);
      }
      uVar7 = puVar1[0x1a];
      while (uVar7 < 0x13) {
        *(undefined2 *)
         ((int)puVar1 + (uint)*(ushort *)(&DAT_00d43538 + puVar1[0x1a] * 2) * 2 + 0x70) = 0;
        puVar1[0x1a] = puVar1[0x1a] + 1;
        uVar7 = puVar1[0x1a];
      }
      puVar1[0x1b] = (uint)(puVar1 + 0x14c);
      puVar1[0x13] = (uint)(puVar1 + 0x14c);
      puVar1[0x15] = 7;
      local_c = FUN_008f1e90(0,puVar1 + 0x1c,0x13,puVar1 + 0x1b,puVar1 + 0x15,puVar1 + 0xbc);
      pbVar3 = local_2c;
      if (local_c == 0) {
        puVar1[0x1a] = 0;
        *puVar1 = 0x11;
        goto switchD_008ee847_caseD_11;
      }
      param_1[6] = (byte *)"invalid code lengths set";
LAB_008efae3:
      *puVar1 = 0x1b;
      break;
    case 0x11:
switchD_008ee847_caseD_11:
      if (puVar1[0x1a] < puVar1[0x19] + puVar1[0x18]) {
        do {
          uVar7 = *(uint *)(puVar1[0x13] + ((1 << ((byte)puVar1[0x15] & 0x1f)) - 1U & uVar11) * 4);
          if (pbVar13 < (byte *)(uVar7 >> 8 & 0xff)) {
            do {
              pbVar6 = pbVar3;
              if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
              bVar5 = (byte)pbVar13;
              pbVar3 = pbVar3 + -1;
              pbVar13 = pbVar13 + 8;
              uVar11 = uVar11 + ((uint)*_Src << (bVar5 & 0x1f));
              _Src = _Src + 1;
              uVar7 = *(uint *)(puVar1[0x13] +
                               ((1 << ((byte)puVar1[0x15] & 0x1f)) - 1U & uVar11) * 4);
              local_2c = pbVar3;
            } while (pbVar13 < (byte *)(uVar7 >> 8 & 0xff));
          }
          local_28._2_2_ = (short)(uVar7 >> 0x10);
          bVar5 = (byte)(uVar7 >> 8);
          if (uVar7 >> 0x10 < 0x10) {
            if (pbVar13 < (byte *)(uVar7 >> 8 & 0xff)) {
              do {
                pbVar6 = pbVar3;
                if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
                bVar4 = (byte)pbVar13;
                pbVar3 = pbVar3 + -1;
                pbVar13 = pbVar13 + 8;
                uVar11 = uVar11 + ((uint)*_Src << (bVar4 & 0x1f));
                _Src = _Src + 1;
                local_2c = pbVar3;
              } while (pbVar13 < (byte *)(uVar7 >> 8 & 0xff));
            }
            uVar11 = uVar11 >> (bVar5 & 0x1f);
            pbVar13 = pbVar13 + -(uVar7 >> 8 & 0xff);
            *(short *)((int)puVar1 + puVar1[0x1a] * 2 + 0x70) = local_28._2_2_;
            puVar1[0x1a] = puVar1[0x1a] + 1;
          }
          else {
            local_10 = (byte *)(uVar7 >> 8 & 0xff);
            if (local_28._2_2_ == 0x10) {
              if (pbVar13 < local_10 + 2) {
                do {
                  pbVar6 = pbVar3;
                  if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
                  bVar4 = (byte)pbVar13;
                  pbVar3 = pbVar3 + -1;
                  pbVar13 = pbVar13 + 8;
                  uVar11 = uVar11 + ((uint)*_Src << (bVar4 & 0x1f));
                  _Src = _Src + 1;
                  local_2c = pbVar3;
                } while (pbVar13 < local_10 + 2);
              }
              uVar11 = uVar11 >> (bVar5 & 0x1f);
              pbVar13 = pbVar13 + -(int)local_10;
              if (puVar1[0x1a] == 0) {
                param_1[6] = (byte *)"invalid bit length repeat";
                goto LAB_008efae3;
              }
              local_1c = (uint)*(ushort *)((int)puVar1 + puVar1[0x1a] * 2 + 0x6e);
              local_28 = (byte *)((uVar11 & 3) + 3);
              uVar11 = uVar11 >> 2;
              pbVar13 = pbVar13 + -2;
            }
            else {
              if (local_28._2_2_ == 0x11) {
                if (pbVar13 < local_10 + 3) {
                  do {
                    pbVar6 = pbVar3;
                    if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
                    bVar4 = (byte)pbVar13;
                    pbVar3 = pbVar3 + -1;
                    pbVar13 = pbVar13 + 8;
                    uVar11 = uVar11 + ((uint)*_Src << (bVar4 & 0x1f));
                    _Src = _Src + 1;
                    local_2c = pbVar3;
                  } while (pbVar13 < local_10 + 3);
                }
                uVar11 = uVar11 >> (bVar5 & 0x1f);
                local_28 = (byte *)((uVar11 & 7) + 3);
                uVar11 = uVar11 >> 3;
                iVar2 = -3;
              }
              else {
                if (pbVar13 < local_10 + 7) {
                  do {
                    pbVar6 = pbVar3;
                    if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
                    bVar4 = (byte)pbVar13;
                    pbVar3 = pbVar3 + -1;
                    pbVar13 = pbVar13 + 8;
                    uVar11 = uVar11 + ((uint)*_Src << (bVar4 & 0x1f));
                    _Src = _Src + 1;
                    local_2c = pbVar3;
                  } while (pbVar13 < local_10 + 7);
                }
                uVar11 = uVar11 >> (bVar5 & 0x1f);
                local_28 = (byte *)((uVar11 & 0x7f) + 0xb);
                uVar11 = uVar11 >> 7;
                iVar2 = -7;
              }
              pbVar13 = pbVar13 + (iVar2 - (int)local_10);
              local_1c = 0;
            }
            if (puVar1[0x19] + puVar1[0x18] < puVar1[0x1a] + (int)local_28) {
              param_1[6] = (byte *)"invalid bit length repeat";
              goto LAB_008efae3;
            }
            for (; local_28 != (byte *)0x0; local_28 = (byte *)((int)local_28 + -1)) {
              *(short *)((int)puVar1 + puVar1[0x1a] * 2 + 0x70) = (short)local_1c;
              puVar1[0x1a] = puVar1[0x1a] + 1;
            }
          }
        } while (puVar1[0x1a] < puVar1[0x19] + puVar1[0x18]);
      }
      if (*puVar1 != 0x1b) {
        puVar1[0x1b] = (uint)(puVar1 + 0x14c);
        puVar1[0x13] = (uint)(puVar1 + 0x14c);
        puVar1[0x15] = 9;
        local_c = FUN_008f1e90(1,puVar1 + 0x1c,puVar1[0x18],puVar1 + 0x1b,puVar1 + 0x15,
                               puVar1 + 0xbc);
        pbVar3 = local_2c;
        if (local_c == 0) {
          puVar1[0x14] = puVar1[0x1b];
          puVar1[0x16] = 6;
          local_c = FUN_008f1e90(2,(int)puVar1 + puVar1[0x18] * 2 + 0x70,puVar1[0x19],puVar1 + 0x1b,
                                 puVar1 + 0x16,puVar1 + 0xbc);
          if (local_c == 0) {
            *puVar1 = 0x12;
            goto switchD_008ee847_caseD_12;
          }
          param_1[6] = (byte *)"invalid distances set";
        }
        else {
          param_1[6] = (byte *)"invalid literal/lengths set";
        }
        goto LAB_008efae3;
      }
      break;
    case 0x12:
switchD_008ee847_caseD_12:
      if ((pbVar3 < (byte *)0x6) || (local_24 < (byte *)0x102)) {
        pbVar9 = *(byte **)(puVar1[0x13] + ((1 << ((byte)puVar1[0x15] & 0x1f)) - 1U & uVar11) * 4);
        if (pbVar13 < (byte *)((uint)pbVar9 >> 8 & 0xff)) {
          do {
            pbVar6 = pbVar3;
            if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
            bVar5 = (byte)pbVar13;
            pbVar3 = pbVar3 + -1;
            pbVar13 = pbVar13 + 8;
            uVar11 = uVar11 + ((uint)*_Src << (bVar5 & 0x1f));
            _Src = _Src + 1;
            pbVar9 = *(byte **)(puVar1[0x13] +
                               ((1 << ((byte)puVar1[0x15] & 0x1f)) - 1U & uVar11) * 4);
            local_2c = pbVar3;
          } while (pbVar13 < (byte *)((uint)pbVar9 >> 8 & 0xff));
        }
        cVar8 = (char)pbVar9;
        local_28 = pbVar9;
        if ((cVar8 != '\0') && (((uint)pbVar9 & 0xf0) == 0)) {
          local_8 = (byte *)((uint)pbVar9 >> 8);
          local_1c = (uint)local_8 & 0xff;
          bVar5 = (byte)((uint)pbVar9 >> 8);
          local_28 = *(byte **)(puVar1[0x13] +
                               ((((1 << (cVar8 + bVar5 & 0x1f)) - 1U & uVar11) >> (bVar5 & 0x1f)) +
                               ((uint)pbVar9 >> 0x10)) * 4);
          local_10 = pbVar9;
          if (pbVar13 < (byte *)(((uint)local_28 >> 8 & 0xff) + ((uint)local_8 & 0xff))) {
            do {
              pbVar6 = pbVar3;
              if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
              bVar4 = (byte)pbVar13;
              pbVar3 = pbVar3 + -1;
              pbVar13 = pbVar13 + 8;
              uVar11 = uVar11 + ((uint)*_Src << (bVar4 & 0x1f));
              local_1c = (uint)pbVar9 >> 8 & 0xff;
              _Src = _Src + 1;
              local_28 = *(byte **)(puVar1[0x13] +
                                   ((((1 << (cVar8 + bVar5 & 0x1f)) - 1U & uVar11) >> (bVar5 & 0x1f)
                                    ) + ((uint)pbVar9 >> 0x10)) * 4);
              local_2c = pbVar3;
            } while (pbVar13 < (byte *)(((uint)local_28 >> 8 & 0xff) + local_1c));
          }
          uVar11 = uVar11 >> (bVar5 & 0x1f);
          pbVar13 = pbVar13 + -(uint)bVar5;
        }
        local_1c = (uint)local_28 >> 8 & 0xff;
        uVar11 = uVar11 >> ((byte)((uint)local_28 >> 8) & 0x1f);
        pbVar13 = pbVar13 + -local_1c;
        puVar1[0x10] = (uint)local_28 >> 0x10;
        if ((char)local_28 == '\0') {
          *puVar1 = 0x17;
          break;
        }
        if (((uint)local_28 & 0x20) == 0) {
          if (((uint)local_28 & 0x40) == 0) {
            puVar1[0x12] = (uint)local_28 & 0xf;
            *puVar1 = 0x13;
            goto switchD_008ee847_caseD_13;
          }
          param_1[6] = (byte *)"invalid literal/length code";
          goto LAB_008efae3;
        }
        goto LAB_008ef6b3;
      }
      param_1[4] = local_24;
      param_1[3] = local_18;
      *param_1 = _Src;
      param_1[1] = local_2c;
      puVar1[0xe] = uVar11;
      puVar1[0xf] = (uint)pbVar13;
      FUN_008f1a30(param_1,local_14);
      local_18 = param_1[3];
      local_24 = param_1[4];
      _Src = *param_1;
      uVar11 = puVar1[0xe];
      pbVar13 = (byte *)puVar1[0xf];
      pbVar3 = param_1[1];
      local_2c = param_1[1];
      break;
    case 0x13:
switchD_008ee847_caseD_13:
      if ((byte *)puVar1[0x12] != (byte *)0x0) {
        if (pbVar13 < (byte *)puVar1[0x12]) {
          do {
            pbVar6 = pbVar3;
            if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
            bVar5 = *_Src;
            bVar4 = (byte)pbVar13;
            pbVar3 = pbVar3 + -1;
            pbVar13 = pbVar13 + 8;
            _Src = _Src + 1;
            uVar11 = uVar11 + ((uint)bVar5 << (bVar4 & 0x1f));
            local_2c = pbVar3;
          } while (pbVar13 < (byte *)puVar1[0x12]);
        }
        bVar5 = (byte)puVar1[0x12];
        puVar1[0x10] = puVar1[0x10] + ((1 << (bVar5 & 0x1f)) - 1U & uVar11);
        uVar11 = uVar11 >> (bVar5 & 0x1f);
        pbVar13 = pbVar13 + -puVar1[0x12];
      }
      *puVar1 = 0x14;
    case 0x14:
      pbVar9 = *(byte **)(puVar1[0x14] + ((1 << ((byte)puVar1[0x16] & 0x1f)) - 1U & uVar11) * 4);
      if (pbVar13 < (byte *)((uint)pbVar9 >> 8 & 0xff)) {
        do {
          pbVar6 = pbVar3;
          if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
          bVar5 = (byte)pbVar13;
          pbVar3 = pbVar3 + -1;
          pbVar13 = pbVar13 + 8;
          uVar11 = uVar11 + ((uint)*_Src << (bVar5 & 0x1f));
          _Src = _Src + 1;
          pbVar9 = *(byte **)(puVar1[0x14] + ((1 << ((byte)puVar1[0x16] & 0x1f)) - 1U & uVar11) * 4)
          ;
          local_2c = pbVar3;
        } while (pbVar13 < (byte *)((uint)pbVar9 >> 8 & 0xff));
      }
      local_28 = pbVar9;
      if (((uint)pbVar9 & 0xf0) == 0) {
        local_8 = (byte *)((uint)pbVar9 >> 8);
        local_1c = (uint)local_8 & 0xff;
        bVar5 = (byte)((uint)pbVar9 >> 8);
        local_28 = *(byte **)(puVar1[0x14] +
                             ((((1 << ((char)pbVar9 + bVar5 & 0x1f)) - 1U & uVar11) >>
                              (bVar5 & 0x1f)) + ((uint)pbVar9 >> 0x10)) * 4);
        local_10 = pbVar9;
        if (pbVar13 < (byte *)(((uint)local_28 >> 8 & 0xff) + ((uint)local_8 & 0xff))) {
          do {
            pbVar6 = pbVar3;
            if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
            bVar4 = (byte)pbVar13;
            pbVar3 = pbVar3 + -1;
            pbVar13 = pbVar13 + 8;
            uVar11 = uVar11 + ((uint)*_Src << (bVar4 & 0x1f));
            local_1c = (uint)pbVar9 >> 8 & 0xff;
            _Src = _Src + 1;
            local_28 = *(byte **)(puVar1[0x14] +
                                 ((((1 << ((char)pbVar9 + bVar5 & 0x1f)) - 1U & uVar11) >>
                                  (bVar5 & 0x1f)) + ((uint)pbVar9 >> 0x10)) * 4);
            local_2c = pbVar3;
          } while (pbVar13 < (byte *)(((uint)local_28 >> 8 & 0xff) + local_1c));
        }
        uVar11 = uVar11 >> (bVar5 & 0x1f);
        pbVar13 = pbVar13 + -(uint)bVar5;
      }
      local_1c = (uint)local_28 >> 8 & 0xff;
      uVar11 = uVar11 >> ((byte)((uint)local_28 >> 8) & 0x1f);
      pbVar13 = pbVar13 + -local_1c;
      if (((uint)local_28 & 0x40) != 0) {
        param_1[6] = (byte *)"invalid distance code";
        goto LAB_008efae3;
      }
      puVar1[0x11] = (uint)local_28 >> 0x10;
      puVar1[0x12] = (uint)local_28 & 0xf;
      *puVar1 = 0x15;
switchD_008ee847_caseD_15:
      if ((byte *)puVar1[0x12] != (byte *)0x0) {
        if (pbVar13 < (byte *)puVar1[0x12]) {
          do {
            pbVar6 = pbVar3;
            if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
            bVar5 = *_Src;
            bVar4 = (byte)pbVar13;
            pbVar3 = pbVar3 + -1;
            pbVar13 = pbVar13 + 8;
            _Src = _Src + 1;
            uVar11 = uVar11 + ((uint)bVar5 << (bVar4 & 0x1f));
            local_2c = pbVar3;
          } while (pbVar13 < (byte *)puVar1[0x12]);
        }
        bVar5 = (byte)puVar1[0x12];
        puVar1[0x11] = puVar1[0x11] + ((1 << (bVar5 & 0x1f)) - 1U & uVar11);
        uVar11 = uVar11 >> (bVar5 & 0x1f);
        pbVar13 = pbVar13 + -puVar1[0x12];
      }
      if (local_14 + (puVar1[0xb] - (int)local_24) < (byte *)puVar1[0x11]) {
        param_1[6] = (byte *)"invalid distance too far back";
        goto LAB_008efae3;
      }
      *puVar1 = 0x16;
switchD_008ee847_caseD_16:
      pbVar6 = pbVar3;
      if (local_24 != (byte *)0x0) {
        uVar7 = puVar1[0x11];
        if ((uint)((int)local_14 - (int)local_24) < uVar7) {
          local_28 = (byte *)(uVar7 - ((int)local_14 - (int)local_24));
          if ((byte *)puVar1[0xc] < local_28) {
            local_28 = local_28 + -(int)(byte *)puVar1[0xc];
            local_10 = (byte *)((puVar1[0xd] + puVar1[10]) - (int)local_28);
          }
          else {
            local_10 = (byte *)((puVar1[0xd] - (int)local_28) + puVar1[0xc]);
          }
          local_8 = (byte *)puVar1[0x10];
          if (local_8 < local_28) goto LAB_008ef955;
        }
        else {
          local_10 = local_18 + -uVar7;
          local_8 = (byte *)puVar1[0x10];
LAB_008ef955:
          local_28 = local_8;
        }
        if (local_24 < local_28) {
          local_28 = local_24;
        }
        local_24 = local_24 + -(int)local_28;
        puVar1[0x10] = (int)local_8 - (int)local_28;
        do {
          *local_18 = *local_10;
          local_10 = local_10 + 1;
          local_18 = local_18 + 1;
          local_28 = local_28 + -1;
        } while (local_28 != (byte *)0x0);
        if (puVar1[0x10] == 0) {
          *puVar1 = 0x12;
        }
        break;
      }
      goto LAB_008efb43;
    case 0x15:
      goto switchD_008ee847_caseD_15;
    case 0x16:
      goto switchD_008ee847_caseD_16;
    case 0x17:
      if (local_24 == (byte *)0x0) goto LAB_008efb43;
      *local_18 = *(byte *)(puVar1 + 0x10);
      local_18 = local_18 + 1;
      local_24 = local_24 + -1;
      *puVar1 = 0x12;
      break;
    case 0x18:
      if (puVar1[2] != 0) {
        for (; pbVar13 < (byte *)0x20; pbVar13 = pbVar13 + 8) {
          pbVar6 = pbVar3;
          if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
          bVar5 = *_Src;
          pbVar3 = pbVar3 + -1;
          _Src = _Src + 1;
          uVar11 = uVar11 + ((uint)bVar5 << ((byte)pbVar13 & 0x1f));
          local_2c = pbVar3;
        }
        local_14 = (byte *)((int)local_14 - (int)local_24);
        param_1[5] = param_1[5] + (int)local_14;
        puVar1[7] = puVar1[7] + (int)local_14;
        if (local_14 != (byte *)0x0) {
          if (puVar1[4] == 0) {
            pbVar3 = (byte *)FUN_008efd50(puVar1[6],(int)local_18 - (int)local_14,local_14);
          }
          else {
            pbVar3 = (byte *)FUN_008ecba0();
          }
          puVar1[6] = (uint)pbVar3;
          param_1[0xc] = pbVar3;
          pbVar3 = local_2c;
        }
        local_14 = local_24;
        uVar7 = uVar11;
        if (puVar1[4] == 0) {
          uVar7 = ((uVar11 & 0xff00) + uVar11 * 0x10000) * 0x100 + (uVar11 >> 8 & 0xff00) +
                  (uVar11 >> 0x18);
        }
        if (uVar7 != puVar1[6]) {
          param_1[6] = (byte *)"incorrect data check";
          goto LAB_008efae3;
        }
        uVar11 = 0;
        pbVar13 = (byte *)0x0;
      }
      *puVar1 = 0x19;
    case 0x19:
      if ((puVar1[2] != 0) && (puVar1[4] != 0)) {
        for (; pbVar13 < (byte *)0x20; pbVar13 = pbVar13 + 8) {
          pbVar6 = pbVar3;
          if (pbVar3 == (byte *)0x0) goto LAB_008efb43;
          bVar5 = *_Src;
          pbVar3 = pbVar3 + -1;
          _Src = _Src + 1;
          uVar11 = uVar11 + ((uint)bVar5 << ((byte)pbVar13 & 0x1f));
          local_2c = pbVar3;
        }
        if (uVar11 != puVar1[7]) {
          param_1[6] = (byte *)"incorrect length check";
          goto LAB_008efae3;
        }
        uVar11 = 0;
        pbVar13 = (byte *)0x0;
      }
      *puVar1 = 0x1a;
switchD_008ee847_caseD_1a:
      local_c = 1;
      pbVar6 = pbVar3;
      goto LAB_008efb43;
    case 0x1a:
      goto switchD_008ee847_caseD_1a;
    case 0x1b:
      local_c = -3;
      goto LAB_008efb43;
    case 0x1c:
      goto switchD_008ee847_caseD_1c;
    }
    uVar7 = *puVar1;
    if (0x1c < uVar7) {
      return -2;
    }
  } while( true );
}



undefined4 FUN_008efcd0(int param_1)

{
  int iVar1;
  
  if (((param_1 != 0) && (*(int *)(param_1 + 0x1c) != 0)) &&
     (*(code **)(param_1 + 0x24) != (code *)0x0)) {
    iVar1 = *(int *)(*(int *)(param_1 + 0x1c) + 0x34);
    if (iVar1 != 0) {
      (**(code **)(param_1 + 0x24))(*(undefined4 *)(param_1 + 0x28),iVar1);
    }
    (**(code **)(param_1 + 0x24))(*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x1c));
    *(undefined4 *)(param_1 + 0x1c) = 0;
    return 0;
  }
  return 0xfffffffe;
}



char * FUN_008efd20(void)

{
  return "1.2.3";
}



void FUN_008efd30(undefined4 param_1,int param_2,int param_3)

{
  _malloc(param_2 * param_3);
  return;
}



uint FUN_008efd50(uint param_1,byte *param_2,uint param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  uint uVar17;
  uint uVar18;
  
  uVar18 = param_1 >> 0x10;
  param_1 = param_1 & 0xffff;
  if (param_3 == 1) {
    param_1 = param_1 + *param_2;
    if (0xfff0 < param_1) {
      param_1 = param_1 - 0xfff1;
    }
    uVar18 = uVar18 + param_1;
    if (0xfff0 < uVar18) {
      uVar18 = uVar18 - 0xfff1;
    }
    return uVar18 << 0x10 | param_1;
  }
  if (param_2 == (byte *)0x0) {
    return 1;
  }
  if (param_3 < 0x10) {
    if (param_3 != 0) {
      do {
        param_1 = param_1 + *param_2;
        param_3 = param_3 - 1;
        param_2 = param_2 + 1;
        uVar18 = uVar18 + param_1;
      } while (param_3 != 0);
    }
    if (0xfff0 < param_1) {
      param_1 = param_1 - 0xfff1;
    }
    return ((uVar18 / 0xfff1) * 0xf + uVar18) * 0x10000 | param_1;
  }
  if (0x15af < param_3) {
    uVar17 = param_3 / 0x15b0;
    do {
      param_3 = param_3 - 0x15b0;
      iVar1 = 0x15b;
      do {
        iVar2 = param_1 + *param_2;
        iVar3 = iVar2 + (uint)param_2[1];
        iVar4 = iVar3 + (uint)param_2[2];
        iVar5 = iVar4 + (uint)param_2[3];
        iVar6 = iVar5 + (uint)param_2[4];
        iVar7 = iVar6 + (uint)param_2[5];
        iVar8 = iVar7 + (uint)param_2[6];
        iVar9 = iVar8 + (uint)param_2[7];
        iVar10 = iVar9 + (uint)param_2[8];
        iVar11 = iVar10 + (uint)param_2[9];
        iVar12 = iVar11 + (uint)param_2[10];
        iVar13 = iVar12 + (uint)param_2[0xb];
        iVar14 = iVar13 + (uint)param_2[0xc];
        iVar15 = iVar14 + (uint)param_2[0xd];
        iVar16 = iVar15 + (uint)param_2[0xe];
        param_1 = iVar16 + (uint)param_2[0xf];
        uVar18 = uVar18 + iVar2 + iVar3 + iVar4 + iVar5 + iVar6 + iVar7 + iVar8 + iVar9 + iVar10 +
                 iVar11 + iVar12 + iVar13 + iVar14 + iVar15 + iVar16 + param_1;
        param_2 = param_2 + 0x10;
        iVar1 = iVar1 + -1;
      } while (iVar1 != 0);
      param_1 = param_1 % 0xfff1;
      uVar18 = uVar18 % 0xfff1;
      uVar17 = uVar17 - 1;
    } while (uVar17 != 0);
  }
  if (param_3 != 0) {
    if (0xf < param_3) {
      uVar17 = param_3 >> 4;
      do {
        iVar1 = param_1 + *param_2;
        iVar2 = iVar1 + (uint)param_2[1];
        iVar3 = iVar2 + (uint)param_2[2];
        iVar4 = iVar3 + (uint)param_2[3];
        iVar5 = iVar4 + (uint)param_2[4];
        iVar6 = iVar5 + (uint)param_2[5];
        iVar7 = iVar6 + (uint)param_2[6];
        iVar8 = iVar7 + (uint)param_2[7];
        iVar9 = iVar8 + (uint)param_2[8];
        iVar10 = iVar9 + (uint)param_2[9];
        iVar11 = iVar10 + (uint)param_2[10];
        iVar12 = iVar11 + (uint)param_2[0xb];
        iVar13 = iVar12 + (uint)param_2[0xc];
        iVar14 = iVar13 + (uint)param_2[0xd];
        iVar15 = iVar14 + (uint)param_2[0xe];
        param_1 = iVar15 + (uint)param_2[0xf];
        param_3 = param_3 - 0x10;
        uVar18 = uVar18 + iVar1 + iVar2 + iVar3 + iVar4 + iVar5 + iVar6 + iVar7 + iVar8 + iVar9 +
                 iVar10 + iVar11 + iVar12 + iVar13 + iVar14 + iVar15 + param_1;
        param_2 = param_2 + 0x10;
        uVar17 = uVar17 - 1;
      } while (uVar17 != 0);
    }
    for (; param_3 != 0; param_3 = param_3 - 1) {
      param_1 = param_1 + *param_2;
      param_2 = param_2 + 1;
      uVar18 = uVar18 + param_1;
    }
    param_1 = param_1 % 0xfff1;
    uVar18 = uVar18 % 0xfff1;
  }
  return uVar18 << 0x10 | param_1;
}



void __fastcall FUN_008effc0(undefined4 param_1,int param_2)

{
  undefined2 *puVar1;
  int iVar2;
  
  puVar1 = (undefined2 *)(param_2 + 0x94);
  iVar2 = 0x11e;
  do {
    *puVar1 = 0;
    puVar1 = puVar1 + 2;
    iVar2 = iVar2 + -1;
  } while (iVar2 != 0);
  puVar1 = (undefined2 *)(param_2 + 0x988);
  iVar2 = 0x1e;
  do {
    *puVar1 = 0;
    puVar1 = puVar1 + 2;
    iVar2 = iVar2 + -1;
  } while (iVar2 != 0);
  puVar1 = (undefined2 *)(param_2 + 0xa7c);
  iVar2 = 0x13;
  do {
    *puVar1 = 0;
    puVar1 = puVar1 + 2;
    iVar2 = iVar2 + -1;
  } while (iVar2 != 0);
  *(undefined2 *)(param_2 + 0x494) = 1;
  *(undefined4 *)(param_2 + 0x16ac) = 0;
  *(undefined4 *)(param_2 + 0x16a8) = 0;
  *(undefined4 *)(param_2 + 0x16b0) = 0;
  *(undefined4 *)(param_2 + 0x16a0) = 0;
  return;
}



void FUN_008f0040(int param_1)

{
  ushort uVar1;
  ushort uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int in_EAX;
  int iVar6;
  int iVar7;
  int unaff_EDI;
  bool bVar8;
  
  iVar7 = *(int *)(in_EAX + 0x1450);
  iVar3 = *(int *)(in_EAX + 0xb5c + param_1 * 4);
  iVar6 = param_1 * 2;
  bVar8 = SBORROW4(iVar6,iVar7);
  iVar5 = iVar6 - iVar7;
  if (iVar7 < iVar6) {
    *(int *)(in_EAX + 0xb5c + param_1 * 4) = iVar3;
    return;
  }
  do {
    iVar7 = iVar6;
    if (bVar8 != iVar5 < 0) {
      iVar5 = *(int *)(in_EAX + 0xb60 + iVar6 * 4);
      iVar4 = *(int *)(in_EAX + 0xb5c + iVar6 * 4);
      uVar1 = *(ushort *)(unaff_EDI + iVar5 * 4);
      uVar2 = *(ushort *)(unaff_EDI + iVar4 * 4);
      if ((uVar1 < uVar2) ||
         ((uVar1 == uVar2 &&
          (*(byte *)(iVar5 + 0x1458 + in_EAX) <= *(byte *)(in_EAX + 0x1458 + iVar4))))) {
        iVar7 = iVar6 + 1;
      }
    }
    iVar5 = *(int *)(in_EAX + 0xb5c + iVar7 * 4);
    uVar1 = *(ushort *)(unaff_EDI + iVar3 * 4);
    uVar2 = *(ushort *)(unaff_EDI + iVar5 * 4);
    if (uVar1 < uVar2) break;
    if ((uVar1 == uVar2) &&
       (*(byte *)(in_EAX + 0x1458 + iVar3) <= *(byte *)(iVar5 + 0x1458 + in_EAX))) {
      *(int *)(in_EAX + 0xb5c + param_1 * 4) = iVar3;
      return;
    }
    *(int *)(in_EAX + 0xb5c + param_1 * 4) = iVar5;
    iVar4 = *(int *)(in_EAX + 0x1450);
    iVar6 = iVar7 * 2;
    bVar8 = SBORROW4(iVar6,iVar4);
    iVar5 = iVar6 - iVar4;
    param_1 = iVar7;
  } while (iVar6 <= iVar4);
  *(int *)(in_EAX + 0xb5c + param_1 * 4) = iVar3;
  return;
}



void __fastcall FUN_008f0110(int *param_1)

{
  short sVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  int in_EAX;
  uint uVar7;
  int iVar8;
  short *psVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  ushort *puVar13;
  int iVar14;
  uint uVar15;
  int local_20;
  int *local_1c;
  int local_18;
  uint local_14;
  int local_10;
  
  iVar2 = param_1[1];
  iVar3 = *param_1;
  piVar4 = (int *)param_1[2];
  iVar11 = piVar4[1];
  iVar8 = *piVar4;
  iVar5 = piVar4[2];
  uVar10 = piVar4[4];
  *(undefined4 *)(in_EAX + 0xb3c) = 0;
  *(undefined4 *)(in_EAX + 0xb40) = 0;
  *(undefined4 *)(in_EAX + 0xb44) = 0;
  *(undefined4 *)(in_EAX + 0xb48) = 0;
  *(undefined4 *)(in_EAX + 0xb4c) = 0;
  *(undefined4 *)(in_EAX + 0xb50) = 0;
  *(undefined4 *)(in_EAX + 0xb54) = 0;
  *(undefined4 *)(in_EAX + 0xb58) = 0;
  *(undefined2 *)(iVar3 + 2 + *(int *)(in_EAX + 0xb5c + *(int *)(in_EAX + 0x1454) * 4) * 4) = 0;
  iVar14 = *(int *)(in_EAX + 0x1454) + 1;
  local_18 = 0;
  if (iVar14 < 0x23d) {
    local_10 = 0x23d - iVar14;
    local_1c = (int *)(in_EAX + 0xb5c + iVar14 * 4);
    iVar14 = iVar14 + local_10;
    do {
      iVar6 = *local_1c;
      uVar7 = *(ushort *)(iVar3 + 2 + (uint)*(ushort *)(iVar3 + 2 + iVar6 * 4) * 4) + 1;
      if ((int)uVar10 < (int)uVar7) {
        local_18 = local_18 + 1;
        uVar7 = uVar10;
      }
      *(short *)(iVar3 + 2 + iVar6 * 4) = (short)uVar7;
      if (iVar6 <= iVar2) {
        psVar9 = (short *)(in_EAX + 0xb3c + uVar7 * 2);
        *psVar9 = *psVar9 + 1;
        iVar12 = 0;
        if (iVar5 <= iVar6) {
          iVar12 = *(int *)(iVar11 + (iVar6 - iVar5) * 4);
        }
        uVar15 = (uint)*(ushort *)(iVar3 + iVar6 * 4);
        *(int *)(in_EAX + 0x16a8) = *(int *)(in_EAX + 0x16a8) + (uVar7 + iVar12) * uVar15;
        if (iVar8 != 0) {
          *(int *)(in_EAX + 0x16ac) =
               *(int *)(in_EAX + 0x16ac) +
               ((uint)*(ushort *)(iVar8 + 2 + iVar6 * 4) + iVar12) * uVar15;
        }
      }
      local_1c = local_1c + 1;
      local_10 = local_10 + -1;
    } while (local_10 != 0);
    if (local_18 != 0) {
      iVar11 = uVar10 - 1;
      puVar13 = (ushort *)(in_EAX + 0xb3c + uVar10 * 2);
      do {
        psVar9 = (short *)(in_EAX + 0xb3c + iVar11 * 2);
        sVar1 = *(short *)(in_EAX + 0xb3c + iVar11 * 2);
        iVar8 = iVar11;
        while (sVar1 == 0) {
          psVar9 = psVar9 + -1;
          iVar8 = iVar8 + -1;
          sVar1 = *psVar9;
        }
        psVar9 = (short *)(in_EAX + 0xb3e + iVar8 * 2);
        *psVar9 = *psVar9 + 2;
        psVar9 = (short *)(in_EAX + 0xb3c + iVar8 * 2);
        *psVar9 = *psVar9 + -1;
        *puVar13 = *puVar13 - 1;
        local_18 = local_18 + -2;
        local_20 = iVar14;
      } while (0 < local_18);
      for (; uVar10 != 0; uVar10 = uVar10 - 1) {
        uVar7 = (uint)*puVar13;
        if (uVar7 != 0) {
          iVar11 = in_EAX + 0xb5c + iVar14 * 4;
          local_14 = uVar7;
          do {
            iVar8 = *(int *)(iVar11 + -4);
            iVar14 = local_20 + -1;
            iVar11 = iVar11 + -4;
            if (iVar8 <= iVar2) {
              uVar7 = (uint)*(ushort *)(iVar3 + 2 + iVar8 * 4);
              if (uVar7 != uVar10) {
                *(int *)(in_EAX + 0x16a8) =
                     *(int *)(in_EAX + 0x16a8) +
                     (uVar10 - uVar7) * (uint)*(ushort *)(iVar3 + iVar8 * 4);
                *(short *)(iVar3 + 2 + iVar8 * 4) = (short)uVar10;
              }
              uVar7 = local_14 - 1;
              local_14 = uVar7;
            }
            local_20 = iVar14;
          } while (uVar7 != 0);
        }
        puVar13 = puVar13 + -1;
      }
    }
  }
  return;
}



void __thiscall FUN_008f0330(int param_1_00,int param_1)

{
  short *psVar1;
  ushort uVar2;
  int in_EAX;
  int iVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  ushort *local_c;
  int local_8;
  
  uVar2 = *(ushort *)(in_EAX + 2);
  iVar4 = 0;
  iVar3 = 7;
  iVar6 = 4;
  if (uVar2 == 0) {
    iVar3 = 0x8a;
    iVar6 = 3;
  }
  *(undefined2 *)(in_EAX + 6 + param_1_00 * 4) = 0xffff;
  if (-1 < param_1_00) {
    uVar5 = 0xffffffff;
    local_c = (ushort *)(in_EAX + 6);
    local_8 = param_1_00 + 1;
    uVar7 = (uint)uVar2;
    do {
      uVar8 = (uint)*local_c;
      iVar4 = iVar4 + 1;
      if ((iVar3 <= iVar4) || (uVar7 != uVar8)) {
        if (iVar4 < iVar6) {
          psVar1 = (short *)(param_1 + 0xa7c + uVar7 * 4);
          *psVar1 = *psVar1 + (short)iVar4;
        }
        else if (uVar7 == 0) {
          if (iVar4 < 0xb) {
            *(short *)(param_1 + 0xac0) = *(short *)(param_1 + 0xac0) + 1;
          }
          else {
            *(short *)(param_1 + 0xac4) = *(short *)(param_1 + 0xac4) + 1;
          }
        }
        else {
          if (uVar7 != uVar5) {
            psVar1 = (short *)(param_1 + 0xa7c + uVar7 * 4);
            *psVar1 = *psVar1 + 1;
          }
          *(short *)(param_1 + 0xabc) = *(short *)(param_1 + 0xabc) + 1;
        }
        iVar4 = 0;
        uVar5 = uVar7;
        if (uVar8 == 0) {
          iVar3 = 0x8a;
          iVar6 = 3;
        }
        else if (uVar7 == uVar8) {
          iVar3 = 6;
          iVar6 = 3;
        }
        else {
          iVar3 = 7;
          iVar6 = 4;
        }
      }
      local_c = local_c + 2;
      local_8 = local_8 + -1;
      uVar7 = uVar8;
    } while (local_8 != 0);
  }
  return;
}



void __fastcall FUN_008f0410(int param_1,int param_2)

{
  ushort uVar1;
  ushort uVar2;
  int in_EAX;
  byte bVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  uint local_14;
  ushort *local_10;
  uint local_c;
  int local_8;
  
  local_c = 0xffffffff;
  iVar4 = 7;
  iVar9 = 4;
  if (*(ushort *)(param_2 + 2) == 0) {
    iVar4 = 0x8a;
    iVar9 = 3;
  }
  if (-1 < param_1) {
    local_10 = (ushort *)(param_2 + 6);
    local_8 = param_1 + 1;
    iVar7 = 0;
    local_14 = (uint)*(ushort *)(param_2 + 2);
    do {
      uVar5 = (uint)*local_10;
      iVar6 = iVar7 + 1;
      if ((iVar4 <= iVar6) || (local_14 != uVar5)) {
        if (iVar6 < iVar9) {
          do {
            uVar8 = (uint)*(ushort *)(in_EAX + 0xa7e + local_14 * 4);
            iVar4 = *(int *)(in_EAX + 0x16bc);
            if ((int)(0x10 - uVar8) < iVar4) {
              uVar1 = *(ushort *)(in_EAX + 0xa7c + local_14 * 4);
              *(ushort *)(in_EAX + 0x16b8) =
                   *(ushort *)(in_EAX + 0x16b8) | uVar1 << ((byte)iVar4 & 0x1f);
              *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) =
                   *(undefined *)(in_EAX + 0x16b8);
              *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
              *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
                   *(undefined *)(in_EAX + 0x16b9);
              *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
              iVar4 = *(int *)(in_EAX + 0x16bc) + -0x10;
              *(ushort *)(in_EAX + 0x16b8) =
                   uVar1 >> (0x10U - (char)*(int *)(in_EAX + 0x16bc) & 0x1f);
            }
            else {
              *(ushort *)(in_EAX + 0x16b8) =
                   *(ushort *)(in_EAX + 0x16b8) |
                   *(short *)(in_EAX + 0xa7c + local_14 * 4) << ((byte)iVar4 & 0x1f);
            }
            iVar6 = iVar6 + -1;
            *(uint *)(in_EAX + 0x16bc) = iVar4 + uVar8;
          } while (iVar6 != 0);
        }
        else if (local_14 == 0) {
          iVar4 = *(int *)(in_EAX + 0x16bc);
          bVar3 = (byte)iVar4;
          if (iVar6 < 0xb) {
            uVar1 = *(ushort *)(in_EAX + 0xac2);
            if ((int)(0x10 - (uint)uVar1) < iVar4) {
              uVar2 = *(ushort *)(in_EAX + 0xac0);
              *(ushort *)(in_EAX + 0x16b8) = *(ushort *)(in_EAX + 0x16b8) | uVar2 << (bVar3 & 0x1f);
              *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) =
                   *(undefined *)(in_EAX + 0x16b8);
              *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
              *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
                   *(undefined *)(in_EAX + 0x16b9);
              *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
              iVar4 = *(int *)(in_EAX + 0x16bc) + -0x10;
              *(ushort *)(in_EAX + 0x16b8) =
                   uVar2 >> (0x10U - (char)*(int *)(in_EAX + 0x16bc) & 0x1f);
            }
            else {
              *(ushort *)(in_EAX + 0x16b8) =
                   *(ushort *)(in_EAX + 0x16b8) | *(short *)(in_EAX + 0xac0) << (bVar3 & 0x1f);
            }
            iVar4 = iVar4 + (uint)uVar1;
            iVar7 = iVar7 + -2;
            *(int *)(in_EAX + 0x16bc) = iVar4;
            if (iVar4 < 0xe) {
              *(ushort *)(in_EAX + 0x16b8) =
                   *(ushort *)(in_EAX + 0x16b8) | (ushort)(iVar7 << ((byte)iVar4 & 0x1f));
              iVar4 = iVar4 + 3;
LAB_008f08d0:
              *(int *)(in_EAX + 0x16bc) = iVar4;
            }
            else {
              *(ushort *)(in_EAX + 0x16b8) =
                   *(ushort *)(in_EAX + 0x16b8) | (ushort)(iVar7 << ((byte)iVar4 & 0x1f));
              *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) =
                   *(undefined *)(in_EAX + 0x16b8);
              *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
              *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
                   *(undefined *)(in_EAX + 0x16b9);
              iVar4 = *(int *)(in_EAX + 0x16bc);
              *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
              *(int *)(in_EAX + 0x16bc) = iVar4 + -0xd;
              *(ushort *)(in_EAX + 0x16b8) = (ushort)iVar7 >> (0x10U - (char)iVar4 & 0x1f);
            }
          }
          else {
            uVar1 = *(ushort *)(in_EAX + 0xac6);
            if ((int)(0x10 - (uint)uVar1) < iVar4) {
              uVar2 = *(ushort *)(in_EAX + 0xac4);
              *(ushort *)(in_EAX + 0x16b8) = *(ushort *)(in_EAX + 0x16b8) | uVar2 << (bVar3 & 0x1f);
              *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) =
                   *(undefined *)(in_EAX + 0x16b8);
              *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
              *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
                   *(undefined *)(in_EAX + 0x16b9);
              *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
              iVar4 = *(int *)(in_EAX + 0x16bc) + -0x10;
              *(ushort *)(in_EAX + 0x16b8) =
                   uVar2 >> (0x10U - (char)*(int *)(in_EAX + 0x16bc) & 0x1f);
            }
            else {
              *(ushort *)(in_EAX + 0x16b8) =
                   *(ushort *)(in_EAX + 0x16b8) | *(short *)(in_EAX + 0xac4) << (bVar3 & 0x1f);
            }
            iVar4 = iVar4 + (uint)uVar1;
            iVar7 = iVar7 + -10;
            *(int *)(in_EAX + 0x16bc) = iVar4;
            if (iVar4 < 10) {
              *(ushort *)(in_EAX + 0x16b8) =
                   *(ushort *)(in_EAX + 0x16b8) | (ushort)(iVar7 << ((byte)iVar4 & 0x1f));
              iVar4 = iVar4 + 7;
              goto LAB_008f08d0;
            }
            *(ushort *)(in_EAX + 0x16b8) =
                 *(ushort *)(in_EAX + 0x16b8) | (ushort)(iVar7 << ((byte)iVar4 & 0x1f));
            *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) =
                 *(undefined *)(in_EAX + 0x16b8);
            *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
            *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
                 *(undefined *)(in_EAX + 0x16b9);
            iVar4 = *(int *)(in_EAX + 0x16bc);
            *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
            *(int *)(in_EAX + 0x16bc) = iVar4 + -9;
            *(ushort *)(in_EAX + 0x16b8) = (ushort)iVar7 >> (0x10U - (char)iVar4 & 0x1f);
          }
        }
        else {
          if (local_14 != local_c) {
            uVar8 = (uint)*(ushort *)(in_EAX + 0xa7e + local_14 * 4);
            iVar4 = *(int *)(in_EAX + 0x16bc);
            if ((int)(0x10 - uVar8) < iVar4) {
              uVar1 = *(ushort *)(in_EAX + 0xa7c + local_14 * 4);
              *(ushort *)(in_EAX + 0x16b8) =
                   *(ushort *)(in_EAX + 0x16b8) | uVar1 << ((byte)iVar4 & 0x1f);
              *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) =
                   *(undefined *)(in_EAX + 0x16b8);
              *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
              *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
                   *(undefined *)(in_EAX + 0x16b9);
              *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
              iVar4 = *(int *)(in_EAX + 0x16bc) + -0x10;
              *(ushort *)(in_EAX + 0x16b8) =
                   uVar1 >> (0x10U - (char)*(int *)(in_EAX + 0x16bc) & 0x1f);
            }
            else {
              *(ushort *)(in_EAX + 0x16b8) =
                   *(ushort *)(in_EAX + 0x16b8) |
                   *(short *)(in_EAX + 0xa7c + local_14 * 4) << ((byte)iVar4 & 0x1f);
            }
            *(uint *)(in_EAX + 0x16bc) = iVar4 + uVar8;
            iVar6 = iVar7;
          }
          uVar1 = *(ushort *)(in_EAX + 0xabe);
          iVar4 = *(int *)(in_EAX + 0x16bc);
          if ((int)(0x10 - (uint)uVar1) < iVar4) {
            uVar2 = *(ushort *)(in_EAX + 0xabc);
            *(ushort *)(in_EAX + 0x16b8) =
                 *(ushort *)(in_EAX + 0x16b8) | uVar2 << ((byte)iVar4 & 0x1f);
            *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) =
                 *(undefined *)(in_EAX + 0x16b8);
            *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
            *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
                 *(undefined *)(in_EAX + 0x16b9);
            *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
            iVar4 = *(int *)(in_EAX + 0x16bc) + -0x10;
            *(ushort *)(in_EAX + 0x16b8) = uVar2 >> (0x10U - (char)*(int *)(in_EAX + 0x16bc) & 0x1f)
            ;
          }
          else {
            *(ushort *)(in_EAX + 0x16b8) =
                 *(ushort *)(in_EAX + 0x16b8) | *(short *)(in_EAX + 0xabc) << ((byte)iVar4 & 0x1f);
          }
          iVar4 = iVar4 + (uint)uVar1;
          iVar6 = iVar6 + -3;
          *(int *)(in_EAX + 0x16bc) = iVar4;
          if (iVar4 < 0xf) {
            *(ushort *)(in_EAX + 0x16b8) =
                 *(ushort *)(in_EAX + 0x16b8) | (ushort)(iVar6 << ((byte)iVar4 & 0x1f));
            iVar4 = iVar4 + 2;
            goto LAB_008f08d0;
          }
          *(ushort *)(in_EAX + 0x16b8) =
               *(ushort *)(in_EAX + 0x16b8) | (ushort)(iVar6 << ((byte)iVar4 & 0x1f));
          *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) =
               *(undefined *)(in_EAX + 0x16b8);
          *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
          *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
               *(undefined *)(in_EAX + 0x16b9);
          iVar4 = *(int *)(in_EAX + 0x16bc);
          *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
          *(int *)(in_EAX + 0x16bc) = iVar4 + -0xe;
          *(ushort *)(in_EAX + 0x16b8) = (ushort)iVar6 >> (0x10U - (char)iVar4 & 0x1f);
        }
        iVar6 = 0;
        local_c = local_14;
        if (uVar5 == 0) {
          iVar4 = 0x8a;
          iVar9 = 3;
        }
        else if (local_14 == uVar5) {
          iVar4 = 6;
          iVar9 = 3;
        }
        else {
          iVar4 = 7;
          iVar9 = 4;
        }
      }
      local_10 = local_10 + 2;
      local_8 = local_8 + -1;
      iVar7 = iVar6;
      local_14 = uVar5;
    } while (local_8 != 0);
  }
  return;
}



void FUN_008f0920(int param_1,int param_2,int param_3)

{
  ushort uVar1;
  int iVar2;
  int in_EAX;
  int iVar3;
  
  iVar3 = *(int *)(in_EAX + 0x16bc);
  if (iVar3 < 0xc) {
    *(ushort *)(in_EAX + 0x16b8) =
         *(ushort *)(in_EAX + 0x16b8) | (ushort)(param_1 + -0x101 << ((byte)iVar3 & 0x1f));
    *(int *)(in_EAX + 0x16bc) = iVar3 + 5;
  }
  else {
    *(ushort *)(in_EAX + 0x16b8) =
         *(ushort *)(in_EAX + 0x16b8) | (ushort)(param_1 + -0x101 << ((byte)iVar3 & 0x1f));
    *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) = *(undefined *)(in_EAX + 0x16b8)
    ;
    *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
    *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) = *(undefined *)(in_EAX + 0x16b9)
    ;
    iVar3 = *(int *)(in_EAX + 0x16bc);
    *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
    *(int *)(in_EAX + 0x16bc) = iVar3 + -0xb;
    *(ushort *)(in_EAX + 0x16b8) = (ushort)(param_1 + -0x101) >> (0x10U - (char)iVar3 & 0x1f);
  }
  iVar3 = *(int *)(in_EAX + 0x16bc);
  if (iVar3 < 0xc) {
    *(ushort *)(in_EAX + 0x16b8) =
         *(ushort *)(in_EAX + 0x16b8) | (ushort)(param_2 + -1 << ((byte)iVar3 & 0x1f));
    *(int *)(in_EAX + 0x16bc) = iVar3 + 5;
  }
  else {
    *(ushort *)(in_EAX + 0x16b8) =
         *(ushort *)(in_EAX + 0x16b8) | (ushort)(param_2 + -1 << ((byte)iVar3 & 0x1f));
    *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) = *(undefined *)(in_EAX + 0x16b8)
    ;
    *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
    *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) = *(undefined *)(in_EAX + 0x16b9)
    ;
    iVar3 = *(int *)(in_EAX + 0x16bc);
    *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
    *(int *)(in_EAX + 0x16bc) = iVar3 + -0xb;
    *(ushort *)(in_EAX + 0x16b8) = (ushort)(param_2 + -1) >> (0x10U - (char)iVar3 & 0x1f);
  }
  iVar3 = *(int *)(in_EAX + 0x16bc);
  if (iVar3 < 0xd) {
    *(ushort *)(in_EAX + 0x16b8) =
         *(ushort *)(in_EAX + 0x16b8) | (ushort)(param_3 + -4 << ((byte)iVar3 & 0x1f));
    *(int *)(in_EAX + 0x16bc) = iVar3 + 4;
  }
  else {
    *(ushort *)(in_EAX + 0x16b8) =
         *(ushort *)(in_EAX + 0x16b8) | (ushort)(param_3 + -4 << ((byte)iVar3 & 0x1f));
    *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) = *(undefined *)(in_EAX + 0x16b8)
    ;
    *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
    *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) = *(undefined *)(in_EAX + 0x16b9)
    ;
    iVar3 = *(int *)(in_EAX + 0x16bc);
    *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
    *(int *)(in_EAX + 0x16bc) = iVar3 + -0xc;
    *(ushort *)(in_EAX + 0x16b8) = (ushort)(param_3 + -4) >> (0x10U - (char)iVar3 & 0x1f);
  }
  iVar3 = 0;
  if (0 < param_3) {
    do {
      iVar2 = *(int *)(in_EAX + 0x16bc);
      if (iVar2 < 0xe) {
        *(ushort *)(in_EAX + 0x16b8) =
             *(ushort *)(in_EAX + 0x16b8) |
             *(short *)(in_EAX + 0xa7e + (uint)(byte)(&DAT_00d4383c)[iVar3] * 4) <<
             ((byte)iVar2 & 0x1f);
        *(int *)(in_EAX + 0x16bc) = iVar2 + 3;
      }
      else {
        uVar1 = *(ushort *)(in_EAX + 0xa7e + (uint)(byte)(&DAT_00d4383c)[iVar3] * 4);
        *(ushort *)(in_EAX + 0x16b8) = *(ushort *)(in_EAX + 0x16b8) | uVar1 << ((byte)iVar2 & 0x1f);
        *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
             *(undefined *)(in_EAX + 0x16b8);
        *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
        *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
             *(undefined *)(in_EAX + 0x16b9);
        iVar2 = *(int *)(in_EAX + 0x16bc);
        *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
        *(int *)(in_EAX + 0x16bc) = iVar2 + -0xd;
        *(ushort *)(in_EAX + 0x16b8) = uVar1 >> (0x10U - (char)iVar2 & 0x1f);
      }
      iVar3 = iVar3 + 1;
    } while (iVar3 < param_3);
  }
  FUN_008f0410();
  FUN_008f0410();
  return;
}



void FUN_008f0b80(int param_1,int param_2)

{
  ushort uVar1;
  int iVar2;
  int in_EAX;
  byte bVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  
  uVar4 = 0;
  if (*(int *)(in_EAX + 0x16a0) != 0) {
    do {
      uVar7 = (uint)*(ushort *)(*(int *)(in_EAX + 0x16a4) + uVar4 * 2);
      uVar8 = (uint)*(byte *)(uVar4 + *(int *)(in_EAX + 0x1698));
      uVar4 = uVar4 + 1;
      iVar5 = *(int *)(in_EAX + 0x16bc);
      bVar3 = (byte)iVar5;
      if (uVar7 == 0) {
        uVar7 = (uint)*(ushort *)(param_1 + 2 + uVar8 * 4);
        if ((int)(0x10 - uVar7) < iVar5) {
          uVar1 = *(ushort *)(param_1 + uVar8 * 4);
          *(ushort *)(in_EAX + 0x16b8) = *(ushort *)(in_EAX + 0x16b8) | uVar1 << (bVar3 & 0x1f);
          *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) =
               *(undefined *)(in_EAX + 0x16b8);
          *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
          *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
               *(undefined *)(in_EAX + 0x16b9);
          *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
          iVar5 = *(int *)(in_EAX + 0x16bc) + -0x10 + uVar7;
          *(ushort *)(in_EAX + 0x16b8) = uVar1 >> (0x10U - (char)*(int *)(in_EAX + 0x16bc) & 0x1f);
        }
        else {
          *(ushort *)(in_EAX + 0x16b8) =
               *(ushort *)(in_EAX + 0x16b8) | *(short *)(param_1 + uVar8 * 4) << (bVar3 & 0x1f);
          iVar5 = iVar5 + uVar7;
        }
LAB_008f0eaa:
        *(int *)(in_EAX + 0x16bc) = iVar5;
      }
      else {
        uVar6 = (uint)(byte)(&DAT_00d44010)[uVar8];
        uVar10 = (uint)*(ushort *)(param_1 + 0x406 + uVar6 * 4);
        if ((int)(0x10 - uVar10) < iVar5) {
          uVar1 = *(ushort *)(param_1 + 0x404 + uVar6 * 4);
          *(ushort *)(in_EAX + 0x16b8) = *(ushort *)(in_EAX + 0x16b8) | uVar1 << (bVar3 & 0x1f);
          *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) =
               *(undefined *)(in_EAX + 0x16b8);
          *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
          *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
               *(undefined *)(in_EAX + 0x16b9);
          iVar5 = *(int *)(in_EAX + 0x16bc);
          *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
          *(uint *)(in_EAX + 0x16bc) = iVar5 + -0x10 + uVar10;
          *(ushort *)(in_EAX + 0x16b8) = uVar1 >> (0x10U - (char)iVar5 & 0x1f);
        }
        else {
          *(ushort *)(in_EAX + 0x16b8) =
               *(ushort *)(in_EAX + 0x16b8) |
               *(short *)(param_1 + 0x404 + uVar6 * 4) << (bVar3 & 0x1f);
          *(uint *)(in_EAX + 0x16bc) = iVar5 + uVar10;
        }
        iVar5 = *(int *)(&DAT_00d437c8 + uVar6 * 4);
        if (iVar5 != 0) {
          iVar9 = uVar8 - *(int *)(&DAT_00d44110 + uVar6 * 4);
          iVar2 = *(int *)(in_EAX + 0x16bc);
          if (0x10 - iVar5 < iVar2) {
            *(ushort *)(in_EAX + 0x16b8) =
                 *(ushort *)(in_EAX + 0x16b8) | (ushort)(iVar9 << ((byte)iVar2 & 0x1f));
            *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) =
                 *(undefined *)(in_EAX + 0x16b8);
            *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
            *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
                 *(undefined *)(in_EAX + 0x16b9);
            *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
            iVar2 = *(int *)(in_EAX + 0x16bc) + -0x10;
            *(ushort *)(in_EAX + 0x16b8) =
                 (ushort)iVar9 >> (0x10U - (char)*(int *)(in_EAX + 0x16bc) & 0x1f);
          }
          else {
            *(ushort *)(in_EAX + 0x16b8) =
                 *(ushort *)(in_EAX + 0x16b8) | (ushort)(iVar9 << ((byte)iVar2 & 0x1f));
          }
          *(int *)(in_EAX + 0x16bc) = iVar2 + iVar5;
        }
        uVar8 = uVar7 - 1;
        if (uVar8 < 0x100) {
          bVar3 = (&DAT_00d43e0f)[uVar7];
        }
        else {
          bVar3 = (&DAT_00d43f10)[uVar8 >> 7];
        }
        uVar6 = (uint)bVar3;
        uVar7 = (uint)*(ushort *)(param_2 + 2 + uVar6 * 4);
        iVar5 = *(int *)(in_EAX + 0x16bc);
        if ((int)(0x10 - uVar7) < iVar5) {
          uVar1 = *(ushort *)(param_2 + uVar6 * 4);
          *(ushort *)(in_EAX + 0x16b8) =
               *(ushort *)(in_EAX + 0x16b8) | uVar1 << ((byte)iVar5 & 0x1f);
          *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) =
               *(undefined *)(in_EAX + 0x16b8);
          *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
          *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
               *(undefined *)(in_EAX + 0x16b9);
          iVar5 = *(int *)(in_EAX + 0x16bc);
          *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
          *(uint *)(in_EAX + 0x16bc) = iVar5 + -0x10 + uVar7;
          *(ushort *)(in_EAX + 0x16b8) = uVar1 >> (0x10U - (char)iVar5 & 0x1f);
        }
        else {
          *(ushort *)(in_EAX + 0x16b8) =
               *(ushort *)(in_EAX + 0x16b8) |
               *(short *)(param_2 + uVar6 * 4) << ((byte)iVar5 & 0x1f);
          *(uint *)(in_EAX + 0x16bc) = iVar5 + uVar7;
        }
        iVar5 = *(int *)(&DAT_00d43850 + uVar6 * 4);
        if (iVar5 != 0) {
          iVar2 = *(int *)(in_EAX + 0x16bc);
          iVar9 = uVar8 - *(int *)(&DAT_00d44188 + uVar6 * 4);
          if (0x10 - iVar5 < iVar2) {
            *(ushort *)(in_EAX + 0x16b8) =
                 *(ushort *)(in_EAX + 0x16b8) | (ushort)(iVar9 << ((byte)iVar2 & 0x1f));
            *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) =
                 *(undefined *)(in_EAX + 0x16b8);
            *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
            *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) =
                 *(undefined *)(in_EAX + 0x16b9);
            *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
            iVar5 = *(int *)(in_EAX + 0x16bc) + -0x10 + iVar5;
            *(ushort *)(in_EAX + 0x16b8) =
                 (ushort)iVar9 >> (0x10U - (char)*(int *)(in_EAX + 0x16bc) & 0x1f);
          }
          else {
            *(ushort *)(in_EAX + 0x16b8) =
                 *(ushort *)(in_EAX + 0x16b8) | (ushort)(iVar9 << ((byte)iVar2 & 0x1f));
            iVar5 = iVar2 + iVar5;
          }
          goto LAB_008f0eaa;
        }
      }
    } while (uVar4 < *(uint *)(in_EAX + 0x16a0));
  }
  uVar4 = (uint)*(ushort *)(param_1 + 0x402);
  iVar5 = *(int *)(in_EAX + 0x16bc);
  if (iVar5 <= (int)(0x10 - uVar4)) {
    *(ushort *)(in_EAX + 0x16b8) =
         *(ushort *)(in_EAX + 0x16b8) | *(short *)(param_1 + 0x400) << ((byte)iVar5 & 0x1f);
    *(uint *)(in_EAX + 0x16bc) = iVar5 + uVar4;
    *(uint *)(in_EAX + 0x16b4) = (uint)*(ushort *)(param_1 + 0x402);
    return;
  }
  uVar1 = *(ushort *)(param_1 + 0x400);
  *(ushort *)(in_EAX + 0x16b8) = *(ushort *)(in_EAX + 0x16b8) | uVar1 << ((byte)iVar5 & 0x1f);
  *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) = *(undefined *)(in_EAX + 0x16b8);
  *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
  *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) = *(undefined *)(in_EAX + 0x16b9);
  iVar5 = *(int *)(in_EAX + 0x16bc);
  *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
  *(uint *)(in_EAX + 0x16bc) = iVar5 + -0x10 + uVar4;
  *(ushort *)(in_EAX + 0x16b8) = uVar1 >> (0x10U - (char)iVar5 & 0x1f);
  *(uint *)(in_EAX + 0x16b4) = (uint)*(ushort *)(param_1 + 0x402);
  return;
}



void __fastcall FUN_008f0f80(undefined4 param_1,int *param_2)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = 0;
  piVar2 = param_2 + 0x25;
  do {
    if (*(short *)piVar2 != 0) break;
    iVar1 = iVar1 + 1;
    piVar2 = piVar2 + 1;
  } while (iVar1 < 9);
  if (iVar1 == 9) {
    iVar1 = 0xe;
    piVar2 = param_2 + 0x34;
    while (*(short *)(piVar2 + -1) == 0) {
      if (*(short *)piVar2 != 0) {
        *(uint *)(*param_2 + 0x2c) = (uint)(iVar1 == 0x1f);
        return;
      }
      if (*(short *)(piVar2 + 1) != 0) {
        *(uint *)(*param_2 + 0x2c) = (uint)(iVar1 == 0x1e);
        return;
      }
      if (*(short *)(piVar2 + 2) != 0) {
        *(uint *)(*param_2 + 0x2c) = (uint)(iVar1 == 0x1d);
        return;
      }
      if (*(short *)(piVar2 + 3) != 0) {
        *(uint *)(*param_2 + 0x2c) = (uint)(iVar1 == 0x1c);
        return;
      }
      if (*(short *)(piVar2 + 4) != 0) {
        iVar1 = iVar1 + 5;
        break;
      }
      iVar1 = iVar1 + 6;
      piVar2 = piVar2 + 6;
      if (0x1f < iVar1) {
        *(uint *)(*param_2 + 0x2c) = (uint)(iVar1 == 0x20);
        return;
      }
    }
  }
  *(uint *)(*param_2 + 0x2c) = (uint)(iVar1 == 0x20);
  return;
}



void FUN_008f1050(void)

{
  int in_EAX;
  
  if (*(int *)(in_EAX + 0x16bc) == 0x10) {
    *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) = *(undefined *)(in_EAX + 0x16b8)
    ;
    *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
    *(undefined *)(*(int *)(in_EAX + 0x14) + *(int *)(in_EAX + 8)) = *(undefined *)(in_EAX + 0x16b9)
    ;
    *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
    *(undefined2 *)(in_EAX + 0x16b8) = 0;
    *(undefined4 *)(in_EAX + 0x16bc) = 0;
    return;
  }
  if (7 < *(int *)(in_EAX + 0x16bc)) {
    *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) = *(undefined *)(in_EAX + 0x16b8)
    ;
    *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
    *(int *)(in_EAX + 0x16bc) = *(int *)(in_EAX + 0x16bc) + -8;
    *(ushort *)(in_EAX + 0x16b8) = (ushort)*(byte *)(in_EAX + 0x16b9);
  }
  return;
}



void FUN_008f10d0(void)

{
  int in_EAX;
  int iVar1;
  int iVar2;
  undefined uVar3;
  
  if (*(int *)(in_EAX + 0x16bc) < 9) {
    if (*(int *)(in_EAX + 0x16bc) < 1) goto LAB_008f1114;
    iVar1 = *(int *)(in_EAX + 8);
    iVar2 = *(int *)(in_EAX + 0x14);
    uVar3 = *(undefined *)(in_EAX + 0x16b8);
  }
  else {
    *(undefined *)(*(int *)(in_EAX + 8) + *(int *)(in_EAX + 0x14)) = *(undefined *)(in_EAX + 0x16b8)
    ;
    *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
    iVar1 = *(int *)(in_EAX + 0x14);
    iVar2 = *(int *)(in_EAX + 8);
    uVar3 = *(undefined *)(in_EAX + 0x16b9);
  }
  *(undefined *)(iVar1 + iVar2) = uVar3;
  *(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + 1;
LAB_008f1114:
  *(undefined2 *)(in_EAX + 0x16b8) = 0;
  *(undefined4 *)(in_EAX + 0x16bc) = 0;
  return;
}



void __fastcall FUN_008f1130(int param_1_00,undefined *param_2,int param_1)

{
  int iVar1;
  byte bVar2;
  
  iVar1 = FUN_008f10d0();
  *(undefined4 *)(iVar1 + 0x16b4) = 8;
  if (param_1 != 0) {
    *(byte *)(*(int *)(iVar1 + 0x14) + *(int *)(iVar1 + 8)) = (byte)param_1_00;
    *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + 1;
    bVar2 = (byte)((uint)param_1_00 >> 8);
    *(byte *)(*(int *)(iVar1 + 8) + *(int *)(iVar1 + 0x14)) = bVar2;
    *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + 1;
    *(byte *)(*(int *)(iVar1 + 8) + *(int *)(iVar1 + 0x14)) = ~(byte)param_1_00;
    *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + 1;
    *(byte *)(*(int *)(iVar1 + 8) + *(int *)(iVar1 + 0x14)) = ~bVar2;
    *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + 1;
  }
  if (param_1_00 != 0) {
    do {
      param_1_00 = param_1_00 + -1;
      *(undefined *)(*(int *)(iVar1 + 0x14) + *(int *)(iVar1 + 8)) = *param_2;
      *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + 1;
      param_2 = param_2 + 1;
    } while (param_1_00 != 0);
  }
  return;
}



void FUN_008f11c0(int param_1)

{
  *(int *)(param_1 + 0xb18) = param_1 + 0x94;
  *(int *)(param_1 + 0xb24) = param_1 + 0x988;
  *(undefined ***)(param_1 + 0xb20) = &PTR_DAT_03238a10;
  *(undefined ***)(param_1 + 0xb2c) = &PTR_DAT_03238a24;
  *(int *)(param_1 + 0xb30) = param_1 + 0xa7c;
  *(undefined **)(param_1 + 0xb38) = &DAT_03238a38;
  *(undefined2 *)(param_1 + 0x16b8) = 0;
  *(undefined4 *)(param_1 + 0x16bc) = 0;
  *(undefined4 *)(param_1 + 0x16b4) = 8;
  FUN_008effc0();
  return;
}



void __fastcall FUN_008f1230(undefined4 param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  ushort uVar5;
  uint uVar6;
  int unaff_EBX;
  uint uVar7;
  int unaff_EDI;
  ushort auStack_24 [16];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_24;
  uVar5 = 0;
  iVar2 = 1;
  do {
    uVar5 = (*(short *)(param_2 + iVar2 * 2 + -2) + uVar5) * 2;
    auStack_24[iVar2] = uVar5;
    iVar2 = iVar2 + 1;
  } while (iVar2 < 0x10);
  iVar2 = 0;
  if (-1 < unaff_EBX) {
    do {
      uVar6 = (uint)*(ushort *)(unaff_EDI + 2 + iVar2 * 4);
      if (uVar6 != 0) {
        uVar3 = (uint)auStack_24[uVar6];
        auStack_24[uVar6] = auStack_24[uVar6] + 1;
        uVar1 = 0;
        do {
          uVar4 = uVar1;
          uVar7 = uVar3 & 1;
          uVar6 = uVar6 - 1;
          uVar3 = uVar3 >> 1;
          uVar1 = (uVar4 | uVar7) * 2;
        } while (0 < (int)uVar6);
        *(ushort *)(unaff_EDI + iVar2 * 4) = (ushort)uVar4 | (ushort)uVar7;
      }
      iVar2 = iVar2 + 1;
    } while (iVar2 <= unaff_EBX);
  }
  ___security_check_cookie_4();
  return;
}



void FUN_008f12c0(int *param_1)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  byte bVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int unaff_ESI;
  
  iVar2 = *param_1;
  iVar6 = ((int *)param_1[2])[3];
  iVar8 = *(int *)param_1[2];
  iVar7 = -1;
  iVar4 = 0;
  *(undefined4 *)(unaff_ESI + 0x1450) = 0;
  *(undefined4 *)(unaff_ESI + 0x1454) = 0x23d;
  if (0 < iVar6) {
    do {
      if (*(short *)(iVar2 + iVar4 * 4) == 0) {
        *(undefined2 *)(iVar2 + 2 + iVar4 * 4) = 0;
      }
      else {
        *(int *)(unaff_ESI + 0x1450) = *(int *)(unaff_ESI + 0x1450) + 1;
        *(int *)(unaff_ESI + 0xb5c + *(int *)(unaff_ESI + 0x1450) * 4) = iVar4;
        *(undefined *)(iVar4 + 0x1458 + unaff_ESI) = 0;
        iVar7 = iVar4;
      }
      iVar4 = iVar4 + 1;
    } while (iVar4 < iVar6);
  }
  iVar4 = *(int *)(unaff_ESI + 0x1450);
  while (iVar4 < 2) {
    if (iVar7 < 2) {
      iVar4 = iVar7 + 1;
      iVar7 = iVar4;
    }
    else {
      iVar4 = 0;
    }
    *(int *)(unaff_ESI + 0x1450) = *(int *)(unaff_ESI + 0x1450) + 1;
    *(int *)(unaff_ESI + 0xb5c + *(int *)(unaff_ESI + 0x1450) * 4) = iVar4;
    *(undefined2 *)(iVar2 + iVar4 * 4) = 1;
    *(undefined *)(unaff_ESI + 0x1458 + iVar4) = 0;
    *(int *)(unaff_ESI + 0x16a8) = *(int *)(unaff_ESI + 0x16a8) + -1;
    if (iVar8 != 0) {
      *(int *)(unaff_ESI + 0x16ac) =
           *(int *)(unaff_ESI + 0x16ac) - (uint)*(ushort *)(iVar8 + 2 + iVar4 * 4);
    }
    iVar4 = *(int *)(unaff_ESI + 0x1450);
  }
  param_1[1] = iVar7;
  for (iVar8 = *(int *)(unaff_ESI + 0x1450) / 2; 0 < iVar8; iVar8 = iVar8 + -1) {
    FUN_008f0040(iVar8);
  }
  do {
    uVar3 = *(undefined4 *)(unaff_ESI + 0xb5c + *(int *)(unaff_ESI + 0x1450) * 4);
    iVar8 = *(int *)(unaff_ESI + 0xb60);
    *(int *)(unaff_ESI + 0x1450) = *(int *)(unaff_ESI + 0x1450) + -1;
    *(undefined4 *)(unaff_ESI + 0xb60) = uVar3;
    FUN_008f0040(1);
    iVar7 = *(int *)(unaff_ESI + 0xb60);
    *(int *)(unaff_ESI + 0x1454) = *(int *)(unaff_ESI + 0x1454) + -1;
    *(int *)(unaff_ESI + 0xb5c + *(int *)(unaff_ESI + 0x1454) * 4) = iVar8;
    *(int *)(unaff_ESI + 0x1454) = *(int *)(unaff_ESI + 0x1454) + -1;
    *(int *)(unaff_ESI + 0xb5c + *(int *)(unaff_ESI + 0x1454) * 4) = iVar7;
    *(short *)(iVar2 + iVar6 * 4) = *(short *)(iVar2 + iVar7 * 4) + *(short *)(iVar2 + iVar8 * 4);
    bVar5 = *(byte *)(unaff_ESI + 0x1458 + iVar7);
    bVar1 = *(byte *)(unaff_ESI + 0x1458 + iVar8);
    if (bVar5 <= bVar1) {
      bVar5 = bVar1;
    }
    *(byte *)(unaff_ESI + 0x1458 + iVar6) = bVar5 + 1;
    *(short *)(iVar2 + 2 + iVar7 * 4) = (short)iVar6;
    *(short *)(iVar2 + 2 + iVar8 * 4) = (short)iVar6;
    *(int *)(unaff_ESI + 0xb60) = iVar6;
    iVar6 = iVar6 + 1;
    FUN_008f0040(1);
  } while (1 < *(int *)(unaff_ESI + 0x1450));
  *(int *)(unaff_ESI + 0x1454) = *(int *)(unaff_ESI + 0x1454) + -1;
  *(undefined4 *)(unaff_ESI + 0xb5c + *(int *)(unaff_ESI + 0x1454) * 4) =
       *(undefined4 *)(unaff_ESI + 0xb60);
  FUN_008f0110();
  FUN_008f1230();
  return;
}



void FUN_008f14c0(void)

{
  int in_EAX;
  int iVar1;
  
  FUN_008f0330();
  FUN_008f0330();
  FUN_008f12c0(in_EAX + 0xb30);
  iVar1 = 0x12;
  do {
    if (*(short *)(in_EAX + 0xa7e + (uint)(byte)(&DAT_00d4383c)[iVar1] * 4) != 0) {
LAB_008f157b:
      *(int *)(in_EAX + 0x16a8) = *(int *)(in_EAX + 0x16a8) + iVar1 * 3 + 0x11;
      return;
    }
    if (*(short *)(in_EAX + 0xa7e + (uint)(byte)(&UNK_00d4383b)[iVar1] * 4) != 0) {
      *(int *)(in_EAX + 0x16a8) = *(int *)(in_EAX + 0x16a8) + (iVar1 + -1) * 3 + 0x11;
      return;
    }
    if (*(short *)(in_EAX + 0xa7e + (uint)(byte)(&UNK_00d4383a)[iVar1] * 4) != 0) {
      *(int *)(in_EAX + 0x16a8) = *(int *)(in_EAX + 0x16a8) + (iVar1 + -2) * 3 + 0x11;
      return;
    }
    if (*(short *)(in_EAX + 0xa7e + (uint)(byte)(&UNK_00d43839)[iVar1] * 4) != 0) {
      iVar1 = iVar1 + -3;
      goto LAB_008f157b;
    }
    iVar1 = iVar1 + -4;
    if (iVar1 < 3) {
      *(int *)(in_EAX + 0x16a8) = *(int *)(in_EAX + 0x16a8) + iVar1 * 3 + 0x11;
      return;
    }
  } while( true );
}



void FUN_008f1590(int param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x16bc);
  if (0xd < iVar1) {
    *(ushort *)(param_1 + 0x16b8) =
         *(ushort *)(param_1 + 0x16b8) | (ushort)(param_4 << ((byte)iVar1 & 0x1f));
    *(undefined *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0x14)) =
         *(undefined *)(param_1 + 0x16b8);
    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1;
    *(undefined *)(*(int *)(param_1 + 0x14) + *(int *)(param_1 + 8)) =
         *(undefined *)(param_1 + 0x16b9);
    iVar1 = *(int *)(param_1 + 0x16bc);
    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1;
    *(int *)(param_1 + 0x16bc) = iVar1 + -0xd;
    *(ushort *)(param_1 + 0x16b8) = (ushort)param_4 >> (0x10U - (char)iVar1 & 0x1f);
    FUN_008f1130(1);
    return;
  }
  *(int *)(param_1 + 0x16bc) = iVar1 + 3;
  *(ushort *)(param_1 + 0x16b8) =
       *(ushort *)(param_1 + 0x16b8) | (ushort)(param_4 << ((byte)iVar1 & 0x1f));
  FUN_008f1130(1);
  return;
}



void FUN_008f1630(int param_1)

{
  int iVar1;
  int iVar2;
  
  iVar2 = *(int *)(param_1 + 0x16bc);
  *(ushort *)(param_1 + 0x16b8) =
       *(ushort *)(param_1 + 0x16b8) | (ushort)(2 << ((byte)iVar2 & 0x1f));
  if (iVar2 < 0xe) {
    *(int *)(param_1 + 0x16bc) = iVar2 + 3;
  }
  else {
    *(undefined *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0x14)) =
         *(undefined *)(param_1 + 0x16b8);
    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1;
    *(undefined *)(*(int *)(param_1 + 0x14) + *(int *)(param_1 + 8)) =
         *(undefined *)(param_1 + 0x16b9);
    iVar2 = *(int *)(param_1 + 0x16bc);
    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1;
    *(int *)(param_1 + 0x16bc) = iVar2 + -0xd;
    *(ushort *)(param_1 + 0x16b8) = 2 >> (0x10U - (char)iVar2 & 0x1f);
  }
  iVar2 = *(int *)(param_1 + 0x16bc);
  *(ushort *)(param_1 + 0x16b8) =
       *(ushort *)(param_1 + 0x16b8) | (ushort)(0 << ((byte)iVar2 & 0x1f));
  if (iVar2 < 10) {
    *(int *)(param_1 + 0x16bc) = iVar2 + 7;
  }
  else {
    *(undefined *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0x14)) =
         *(undefined *)(param_1 + 0x16b8);
    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1;
    *(undefined *)(*(int *)(param_1 + 0x14) + *(int *)(param_1 + 8)) =
         *(undefined *)(param_1 + 0x16b9);
    iVar2 = *(int *)(param_1 + 0x16bc);
    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1;
    *(int *)(param_1 + 0x16bc) = iVar2 + -9;
    *(ushort *)(param_1 + 0x16b8) = 0 >> (0x10U - (char)iVar2 & 0x1f);
  }
  iVar1 = FUN_008f1050();
  iVar2 = *(int *)(iVar1 + 0x16bc);
  if ((*(int *)(iVar1 + 0x16b4) - iVar2) + 0xb < 9) {
    *(ushort *)(iVar1 + 0x16b8) = *(ushort *)(iVar1 + 0x16b8) | (ushort)(2 << ((byte)iVar2 & 0x1f));
    if (iVar2 < 0xe) {
      *(int *)(iVar1 + 0x16bc) = iVar2 + 3;
    }
    else {
      *(undefined *)(*(int *)(iVar1 + 8) + *(int *)(iVar1 + 0x14)) = *(undefined *)(iVar1 + 0x16b8);
      *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + 1;
      *(undefined *)(*(int *)(iVar1 + 0x14) + *(int *)(iVar1 + 8)) = *(undefined *)(iVar1 + 0x16b9);
      iVar2 = *(int *)(iVar1 + 0x16bc);
      *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + 1;
      *(int *)(iVar1 + 0x16bc) = iVar2 + -0xd;
      *(ushort *)(iVar1 + 0x16b8) = 2 >> (0x10U - (char)iVar2 & 0x1f);
    }
    iVar2 = *(int *)(iVar1 + 0x16bc);
    *(ushort *)(iVar1 + 0x16b8) = *(ushort *)(iVar1 + 0x16b8) | (ushort)(0 << ((byte)iVar2 & 0x1f));
    if (9 < iVar2) {
      *(undefined *)(*(int *)(iVar1 + 8) + *(int *)(iVar1 + 0x14)) = *(undefined *)(iVar1 + 0x16b8);
      *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + 1;
      *(undefined *)(*(int *)(iVar1 + 0x14) + *(int *)(iVar1 + 8)) = *(undefined *)(iVar1 + 0x16b9);
      iVar2 = *(int *)(iVar1 + 0x16bc);
      *(int *)(iVar1 + 0x14) = *(int *)(iVar1 + 0x14) + 1;
      *(int *)(iVar1 + 0x16bc) = iVar2 + -9;
      *(ushort *)(iVar1 + 0x16b8) = 0 >> (0x10U - (char)iVar2 & 0x1f);
      iVar2 = FUN_008f1050();
      *(undefined4 *)(iVar2 + 0x16b4) = 7;
      return;
    }
    *(int *)(iVar1 + 0x16bc) = iVar2 + 7;
    iVar1 = FUN_008f1050();
  }
  *(undefined4 *)(iVar1 + 0x16b4) = 7;
  return;
}



void FUN_008f1820(int *param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int local_4;
  
  local_4 = 0;
  if (param_1[0x21] < 1) {
    uVar3 = param_3 + 5;
  }
  else {
    if ((param_3 != 0) && (*(int *)(*param_1 + 0x2c) == 2)) {
      FUN_008f0f80();
    }
    FUN_008f12c0(param_1 + 0x2c6);
    FUN_008f12c0(param_1 + 0x2c9);
    local_4 = FUN_008f14c0();
    uVar4 = param_1[0x5aa] + 10U >> 3;
    uVar3 = param_1[0x5ab] + 10U >> 3;
    if (uVar4 < uVar3) goto LAB_008f1899;
  }
  uVar4 = uVar3;
LAB_008f1899:
  if ((uVar4 < param_3 + 4U) || (param_2 == 0)) {
    if ((param_1[0x22] == 4) || (uVar3 == uVar4)) {
      iVar2 = param_1[0x5af];
      iVar1 = param_4 + 2;
      if (iVar2 < 0xe) {
        *(ushort *)(param_1 + 0x5ae) =
             *(ushort *)(param_1 + 0x5ae) | (ushort)(iVar1 << ((byte)iVar2 & 0x1f));
        param_1[0x5af] = iVar2 + 3;
      }
      else {
        *(ushort *)(param_1 + 0x5ae) =
             *(ushort *)(param_1 + 0x5ae) | (ushort)(iVar1 << ((byte)iVar2 & 0x1f));
        *(undefined *)(param_1[2] + param_1[5]) = *(undefined *)(param_1 + 0x5ae);
        param_1[5] = param_1[5] + 1;
        *(undefined *)(param_1[5] + param_1[2]) = *(undefined *)((int)param_1 + 0x16b9);
        iVar2 = param_1[0x5af];
        param_1[5] = param_1[5] + 1;
        param_1[0x5af] = iVar2 + -0xd;
        *(ushort *)(param_1 + 0x5ae) = (ushort)iVar1 >> (0x10U - (char)iVar2 & 0x1f);
      }
      FUN_008f0b80(&DAT_00d43918,&DAT_00d43d98);
    }
    else {
      iVar2 = param_1[0x5af];
      iVar1 = param_4 + 4;
      if (iVar2 < 0xe) {
        *(ushort *)(param_1 + 0x5ae) =
             *(ushort *)(param_1 + 0x5ae) | (ushort)(iVar1 << ((byte)iVar2 & 0x1f));
        param_1[0x5af] = iVar2 + 3;
      }
      else {
        *(ushort *)(param_1 + 0x5ae) =
             *(ushort *)(param_1 + 0x5ae) | (ushort)(iVar1 << ((byte)iVar2 & 0x1f));
        *(undefined *)(param_1[2] + param_1[5]) = *(undefined *)(param_1 + 0x5ae);
        param_1[5] = param_1[5] + 1;
        *(undefined *)(param_1[5] + param_1[2]) = *(undefined *)((int)param_1 + 0x16b9);
        iVar2 = param_1[0x5af];
        param_1[5] = param_1[5] + 1;
        param_1[0x5af] = iVar2 + -0xd;
        *(ushort *)(param_1 + 0x5ae) = (ushort)iVar1 >> (0x10U - (char)iVar2 & 0x1f);
      }
      FUN_008f0920(param_1[0x2c7] + 1,param_1[0x2ca] + 1,local_4 + 1);
      FUN_008f0b80(param_1 + 0x25,param_1 + 0x262);
    }
  }
  else {
    FUN_008f1590(param_1,param_2,param_3,param_4);
  }
  FUN_008effc0();
  if (param_4 == 0) {
    return;
  }
  FUN_008f10d0();
  return;
}



void FUN_008f1a30(int *param_1,uint param_2)

{
  byte *pbVar1;
  byte *pbVar2;
  undefined4 *puVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  uint uVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  uint uVar15;
  uint uVar16;
  byte *pbVar17;
  byte *pbVar18;
  int iVar19;
  undefined *puVar20;
  undefined *puVar21;
  undefined *puVar22;
  undefined *puVar23;
  uint uVar24;
  uint uVar25;
  int iVar26;
  byte *local_3c;
  
  puVar3 = (undefined4 *)param_1[7];
  uVar16 = puVar3[0xe];
  pbVar17 = (byte *)(*param_1 + -1);
  pbVar2 = pbVar17 + param_1[1] + -5;
  iVar4 = param_1[4];
  iVar14 = iVar4 - param_2;
  puVar20 = (undefined *)(param_1[3] + -1);
  iVar19 = puVar3[10];
  uVar5 = puVar3[0xb];
  uVar6 = puVar3[0xc];
  iVar26 = puVar3[0xd];
  iVar7 = puVar3[0x13];
  iVar8 = puVar3[0x14];
  uVar9 = puVar3[0x15];
  uVar10 = puVar3[0x16];
  uVar24 = puVar3[0xf];
  puVar21 = puVar20;
  local_3c = pbVar17;
LAB_008f1ac7:
  if (uVar24 < 0xf) {
    pbVar18 = pbVar17 + 1;
    pbVar17 = pbVar17 + 2;
    uVar16 = uVar16 + ((uint)*pbVar18 << ((byte)uVar24 & 0x1f)) +
             ((uint)*pbVar17 << ((byte)uVar24 + 8 & 0x1f));
    uVar24 = uVar24 + 0x10;
    local_3c = pbVar17;
  }
  uVar15 = *(uint *)(iVar7 + ((1 << ((byte)uVar9 & 0x1f)) - 1U & uVar16) * 4);
  uVar16 = uVar16 >> ((byte)(uVar15 >> 8) & 0x1f);
  uVar24 = uVar24 - (uVar15 >> 8 & 0xff);
  while ((uVar15 & 0xff) != 0) {
    if ((uVar15 & 0x10) != 0) {
      param_2 = uVar15 >> 0x10;
      uVar15 = uVar15 & 0xf;
      if (uVar15 != 0) {
        if (uVar24 < uVar15) {
          pbVar18 = pbVar17 + 1;
          pbVar17 = pbVar17 + 1;
          uVar16 = uVar16 + ((uint)*pbVar18 << ((byte)uVar24 & 0x1f));
          uVar24 = uVar24 + 8;
          local_3c = pbVar17;
        }
        param_2 = param_2 + ((1 << (sbyte)uVar15) - 1U & uVar16);
        uVar16 = uVar16 >> (sbyte)uVar15;
        uVar24 = uVar24 - uVar15;
      }
      if (uVar24 < 0xf) {
        pbVar18 = pbVar17 + 1;
        pbVar1 = pbVar17 + 2;
        pbVar17 = pbVar17 + 2;
        uVar16 = uVar16 + ((uint)*pbVar18 << ((byte)uVar24 & 0x1f)) +
                 ((uint)*pbVar1 << ((byte)uVar24 + 8 & 0x1f));
        uVar24 = uVar24 + 0x10;
        local_3c = pbVar17;
      }
      uVar15 = *(uint *)(iVar8 + ((1 << ((byte)uVar10 & 0x1f)) - 1U & uVar16) * 4);
      uVar16 = uVar16 >> ((byte)(uVar15 >> 8) & 0x1f);
      uVar24 = uVar24 - (uVar15 >> 8 & 0xff);
      goto joined_r0x008f1bd1;
    }
    if ((uVar15 & 0x40) != 0) {
      if ((uVar15 & 0x20) == 0) {
        param_1[6] = (int)"invalid literal/length code";
        goto LAB_008f1e26;
      }
      *puVar3 = 0xb;
      goto LAB_008f1e34;
    }
    uVar15 = *(uint *)(iVar7 + (((1 << ((byte)uVar15 & 0x1f)) - 1U & uVar16) + (uVar15 >> 0x10)) * 4
                      );
    uVar16 = uVar16 >> ((byte)(uVar15 >> 8) & 0x1f);
    uVar24 = uVar24 - (uVar15 >> 8 & 0xff);
  }
  puVar21[1] = (char)(uVar15 >> 0x10);
  puVar22 = puVar21 + 1;
  goto LAB_008f1d7f;
joined_r0x008f1bd1:
  if ((uVar15 & 0x10) != 0) goto LAB_008f1c0c;
  if ((uVar15 & 0x40) != 0) {
    param_1[6] = (int)"invalid distance code";
LAB_008f1e26:
    *puVar3 = 0x1b;
    goto LAB_008f1e34;
  }
  uVar15 = *(uint *)(iVar8 + (((1 << ((byte)uVar15 & 0x1f)) - 1U & uVar16) + (uVar15 >> 0x10)) * 4);
  uVar16 = uVar16 >> ((byte)(uVar15 >> 8) & 0x1f);
  uVar24 = uVar24 - (uVar15 >> 8 & 0xff);
  goto joined_r0x008f1bd1;
LAB_008f1c0c:
  uVar11 = uVar15 & 0xf;
  pbVar18 = pbVar17;
  uVar25 = uVar24;
  if (uVar24 < uVar11) {
    pbVar18 = pbVar17 + 1;
    uVar25 = uVar24 + 8;
    uVar16 = uVar16 + ((uint)pbVar17[1] << ((byte)uVar24 & 0x1f));
    local_3c = pbVar18;
    if (uVar25 < uVar11) {
      pbVar18 = pbVar17 + 2;
      uVar16 = uVar16 + ((uint)pbVar17[2] << ((byte)uVar25 & 0x1f));
      uVar25 = uVar24 + 0x10;
      local_3c = pbVar18;
    }
  }
  uVar24 = uVar25 - uVar11;
  uVar15 = (uVar15 >> 0x10) + ((1 << (sbyte)uVar11) - 1U & uVar16);
  uVar16 = uVar16 >> (sbyte)uVar11;
  if (uVar15 <= (uint)((int)puVar21 - (int)(puVar20 + iVar14))) {
    iVar12 = (int)puVar21 - uVar15;
    do {
      puVar23 = puVar21;
      iVar13 = iVar12;
      puVar23[1] = *(undefined *)(iVar13 + 1);
      puVar23[2] = *(undefined *)(iVar13 + 2);
      puVar21 = puVar23 + 3;
      *puVar21 = *(undefined *)(iVar13 + 3);
      param_2 = param_2 - 3;
      iVar12 = iVar13 + 3;
    } while (2 < param_2);
    pbVar17 = pbVar18;
    puVar22 = puVar21;
    if (param_2 != 0) {
      puVar23[4] = *(undefined *)(iVar13 + 4);
      puVar22 = puVar23 + 4;
      if (1 < param_2) {
        puVar23[5] = *(undefined *)(iVar13 + 5);
        puVar22 = puVar23 + 5;
      }
    }
    goto LAB_008f1d7f;
  }
  uVar25 = uVar15 - ((int)puVar21 - (int)(puVar20 + iVar14));
  pbVar17 = local_3c;
  if (uVar5 < uVar25) {
    param_1[6] = (int)"invalid distance too far back";
    *puVar3 = 0x1b;
LAB_008f1e34:
    iVar19 = (int)pbVar17 - (uVar24 >> 3);
    iVar26 = uVar24 + (uVar24 >> 3) * -8;
    *param_1 = iVar19 + 1;
    param_1[3] = (int)(puVar21 + 1);
    param_1[4] = (int)(puVar20 + iVar4 + -0x101 + (0x101 - (int)puVar21));
    param_1[1] = (int)(pbVar2 + (5 - iVar19));
    puVar3[0xf] = iVar26;
    puVar3[0xe] = uVar16 & (1 << ((byte)iVar26 & 0x1f)) - 1U;
    return;
  }
  iVar12 = iVar26 + -1;
  if (uVar6 == 0) {
    iVar13 = iVar12 + (iVar19 - uVar25);
    uVar11 = uVar25;
    if (uVar25 < param_2) {
      do {
        puVar23 = (undefined *)(iVar13 + 1);
        iVar13 = iVar13 + 1;
        puVar21 = puVar21 + 1;
        uVar11 = uVar11 - 1;
        *puVar21 = *puVar23;
      } while (uVar11 != 0);
LAB_008f1d1e:
      param_2 = param_2 - uVar25;
      iVar13 = (int)puVar21 - uVar15;
    }
  }
  else if (uVar6 < uVar25) {
    uVar11 = uVar25 - uVar6;
    iVar13 = iVar12 + (uVar6 - uVar25) + iVar19;
    if (uVar11 < param_2) {
      param_2 = param_2 - uVar11;
      do {
        puVar23 = (undefined *)(iVar13 + 1);
        iVar13 = iVar13 + 1;
        puVar21 = puVar21 + 1;
        uVar11 = uVar11 - 1;
        *puVar21 = *puVar23;
      } while (uVar11 != 0);
      iVar13 = iVar12;
      if (uVar6 < param_2) {
        param_2 = param_2 - uVar6;
        uVar25 = uVar6;
        do {
          puVar23 = (undefined *)(iVar12 + 1);
          iVar12 = iVar12 + 1;
          puVar21 = puVar21 + 1;
          uVar25 = uVar25 - 1;
          *puVar21 = *puVar23;
        } while (uVar25 != 0);
        iVar13 = (int)puVar21 - uVar15;
      }
    }
  }
  else {
    iVar13 = iVar12 + (uVar6 - uVar25);
    uVar11 = uVar25;
    if (uVar25 < param_2) {
      do {
        puVar23 = (undefined *)(iVar13 + 1);
        iVar13 = iVar13 + 1;
        puVar21 = puVar21 + 1;
        uVar11 = uVar11 - 1;
        *puVar21 = *puVar23;
      } while (uVar11 != 0);
      goto LAB_008f1d1e;
    }
  }
  if (2 < param_2) {
    iVar12 = (param_2 - 3) / 3 + 1;
    do {
      param_2 = param_2 - 3;
      puVar21[1] = *(undefined *)(iVar13 + 1);
      puVar21[2] = *(undefined *)(iVar13 + 2);
      puVar23 = (undefined *)(iVar13 + 3);
      iVar13 = iVar13 + 3;
      puVar21 = puVar21 + 3;
      iVar12 = iVar12 + -1;
      *puVar21 = *puVar23;
    } while (iVar12 != 0);
  }
  puVar22 = puVar21;
  if (param_2 != 0) {
    puVar22 = puVar21 + 1;
    *puVar22 = *(undefined *)(iVar13 + 1);
    if (1 < param_2) {
      puVar22 = puVar21 + 2;
      *puVar22 = *(undefined *)(iVar13 + 2);
    }
  }
LAB_008f1d7f:
  puVar21 = puVar22;
  if ((pbVar2 <= pbVar17) || (puVar20 + iVar4 + -0x101 <= puVar22)) goto LAB_008f1e34;
  goto LAB_008f1ac7;
}



void FUN_008f1e90(int param_1,int param_2,uint param_3,int *param_4,uint *param_5,ushort *param_6)

{
  short *psVar1;
  byte bVar2;
  ushort uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  byte bVar8;
  uint *puVar9;
  int iVar10;
  int iVar11;
  byte bVar12;
  ushort *puVar13;
  undefined4 local_8c;
  uint local_88;
  uint local_84;
  ushort *local_80;
  uint local_7c;
  int local_78;
  int *local_74;
  uint local_70;
  ushort *local_6c;
  uint local_68;
  int local_64;
  ushort *local_60;
  uint local_5c;
  uint local_58;
  int local_54;
  uint *local_50;
  uint local_4c;
  uint local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  ushort auStack_24 [16];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_8c;
  local_80 = param_6;
  local_44 = 0;
  local_40 = 0;
  local_3c = 0;
  local_38 = 0;
  local_34 = 0;
  local_30 = 0;
  local_2c = 0;
  local_28 = 0;
  uVar4 = 0;
  local_54 = param_2;
  local_74 = param_4;
  local_50 = param_5;
  if (param_3 != 0) {
    do {
      psVar1 = (short *)((int)&local_44 + (uint)*(ushort *)(param_2 + uVar4 * 2) * 2);
      *psVar1 = *psVar1 + 1;
      uVar4 = uVar4 + 1;
    } while (uVar4 < param_3);
  }
  local_7c = 0xf;
  do {
    if (*(short *)((int)&local_44 + local_7c * 2) != 0) break;
    local_7c = local_7c - 1;
  } while (local_7c != 0);
  local_88 = *param_5;
  if (local_7c < *param_5) {
    local_88 = local_7c;
  }
  if (local_7c == 0) {
    local_8c = 0x140;
    *(undefined4 *)*param_4 = 0x140;
    *param_4 = *param_4 + 4;
    *(undefined4 *)*param_4 = 0x140;
    *param_4 = *param_4 + 4;
    *param_5 = 1;
    ___security_check_cookie_4();
    return;
  }
  uVar4 = 1;
  do {
    if (*(short *)((int)&local_44 + uVar4 * 2) != 0) break;
    if (*(short *)((int)&local_44 + uVar4 * 2 + 2) != 0) {
      uVar4 = uVar4 + 1;
      break;
    }
    if (*(short *)((int)&local_40 + uVar4 * 2) != 0) {
      uVar4 = uVar4 + 2;
      break;
    }
    if (*(short *)((int)&local_40 + uVar4 * 2 + 2) != 0) {
      uVar4 = uVar4 + 3;
      break;
    }
    if (*(short *)((int)&local_3c + uVar4 * 2) != 0) {
      uVar4 = uVar4 + 4;
      break;
    }
    uVar4 = uVar4 + 5;
  } while (uVar4 < 0x10);
  if (local_88 < uVar4) {
    local_88 = uVar4;
  }
  iVar11 = 1;
  uVar5 = 1;
  do {
    iVar11 = iVar11 * 2 - (uint)*(ushort *)((int)&local_44 + uVar5 * 2);
    if (iVar11 < 0) goto LAB_008f2365;
    uVar5 = uVar5 + 1;
  } while (uVar5 < 0x10);
  if ((iVar11 < 1) || ((param_1 != 0 && (local_7c == 1)))) {
    auStack_24[1] = 0;
    uVar5 = 2;
    do {
      uVar6 = uVar5 + 2;
      *(short *)((int)auStack_24 + uVar5 + 2) =
           *(short *)((int)auStack_24 + uVar5) + *(short *)((int)&local_44 + uVar5);
      uVar5 = uVar6;
    } while (uVar6 < 0x1e);
    uVar5 = 0;
    if (param_3 != 0) {
      do {
        if (*(short *)(param_2 + uVar5 * 2) != 0) {
          param_6[auStack_24[*(ushort *)(param_2 + uVar5 * 2)]] = (ushort)uVar5;
          auStack_24[*(ushort *)(param_2 + uVar5 * 2)] =
               auStack_24[*(ushort *)(param_2 + uVar5 * 2)] + 1;
        }
        uVar5 = uVar5 + 1;
      } while (uVar5 < param_3);
    }
    if (param_1 == 0) {
      local_60 = param_6;
      local_64 = 0x13;
      local_6c = param_6;
    }
    else if (param_1 == 1) {
      local_60 = (ushort *)&DAT_00d4402e;
      local_6c = (ushort *)&DAT_00d4406e;
      local_64 = 0x100;
    }
    else {
      local_60 = (ushort *)&DAT_00d442b0;
      local_6c = (ushort *)&DAT_00d442f0;
      local_64 = -1;
    }
    local_78 = *param_4;
    local_68 = 0xffffffff;
    bVar8 = (byte)local_88;
    local_70 = 1 << (bVar8 & 0x1f);
    uVar6 = 0;
    uVar5 = 0;
    local_58 = local_70 - 1;
    local_84 = uVar4;
    local_5c = local_70;
    if ((param_1 != 1) || (local_70 < 0x5b0)) {
LAB_008f2120:
      do {
        bVar12 = (byte)uVar5;
        bVar2 = (char)local_84 - bVar12;
        uVar3 = *local_80;
        if ((int)(uint)uVar3 < local_64) {
          local_8c._0_2_ = (ushort)bVar2 << 8;
LAB_008f216b:
          local_8c = CONCAT22(uVar3,(ushort)local_8c);
        }
        else {
          if ((int)(uint)uVar3 <= local_64) {
            local_8c = CONCAT31((uint3)bVar2,0x60);
            uVar3 = 0;
            goto LAB_008f216b;
          }
          local_8c = CONCAT22(local_60[*local_80],
                              CONCAT11(bVar2,*(undefined *)(local_6c + *local_80)));
        }
        iVar11 = 1 << ((char)local_84 - bVar12 & 0x1f);
        local_4c = local_5c;
        puVar9 = (uint *)(local_78 + ((uVar6 >> (bVar12 & 0x1f)) + local_5c) * 4);
        uVar4 = local_5c;
        do {
          uVar4 = uVar4 - iVar11;
          puVar9 = puVar9 + -iVar11;
          *puVar9 = local_8c;
        } while (uVar4 != 0);
        for (uVar4 = 1 << ((char)local_84 - 1U & 0x1f); (uVar6 & uVar4) != 0; uVar4 = uVar4 >> 1) {
        }
        if (uVar4 == 0) {
          uVar6 = 0;
        }
        else {
          uVar6 = (uVar4 - 1 & uVar6) + uVar4;
        }
        local_80 = local_80 + 1;
        psVar1 = (short *)((int)&local_44 + local_84 * 2);
        *psVar1 = *psVar1 + -1;
        if (*(short *)((int)&local_44 + local_84 * 2) == 0) {
          if (local_84 == local_7c) {
            local_8c._0_2_ = CONCAT11((char)local_84 - bVar12,0x40);
            local_8c = (uint)(ushort)local_8c;
            uVar4 = local_84;
            iVar11 = local_78;
            goto joined_r0x008f22e9;
          }
          local_84 = (uint)*(ushort *)(param_2 + (uint)*local_80 * 2);
        }
      } while ((local_84 <= local_88) || (local_48 = local_58 & uVar6, local_48 == local_68));
      if (uVar5 == 0) {
        uVar5 = local_88;
      }
      local_78 = local_78 + local_5c * 4;
      iVar10 = local_84 - uVar5;
      uVar4 = uVar5 + iVar10;
      iVar11 = 1 << ((byte)iVar10 & 0x1f);
      if (uVar4 < local_7c) {
        puVar13 = (ushort *)((int)&local_44 + uVar4 * 2);
        do {
          uVar3 = *puVar13;
          if ((int)(iVar11 - (uint)uVar3) < 1) break;
          uVar4 = uVar4 + 1;
          iVar10 = iVar10 + 1;
          puVar13 = puVar13 + 1;
          iVar11 = (iVar11 - (uint)uVar3) * 2;
        } while (uVar4 < local_7c);
      }
      local_5c = 1 << ((byte)iVar10 & 0x1f);
      local_70 = local_70 + local_5c;
      if ((param_1 != 1) || (local_70 < 0x5b0)) {
        *(byte *)(*param_4 + local_48 * 4) = (byte)iVar10;
        *(byte *)(*param_4 + 1 + local_48 * 4) = bVar8;
        *(short *)(*param_4 + 2 + local_48 * 4) = (short)(local_78 - *param_4 >> 2);
        local_68 = local_48;
        goto LAB_008f2120;
      }
    }
  }
LAB_008f2365:
  ___security_check_cookie_4();
  return;
joined_r0x008f22e9:
  if (uVar6 == 0) goto LAB_008f2345;
  if ((uVar5 != 0) && ((local_58 & uVar6) != local_68)) {
    iVar11 = *param_4;
    uVar5 = 0;
    local_84 = local_88;
    local_8c._0_2_ = CONCAT11(bVar8,(undefined)local_8c);
    local_8c = (uint)(ushort)local_8c;
    uVar4 = local_88;
  }
  *(uint *)(iVar11 + (uVar6 >> ((byte)uVar5 & 0x1f)) * 4) = local_8c;
  for (uVar7 = 1 << ((char)uVar4 - 1U & 0x1f); (uVar6 & uVar7) != 0; uVar7 = uVar7 >> 1) {
  }
  if (uVar7 == 0) goto LAB_008f2345;
  uVar6 = (uVar7 - 1 & uVar6) + uVar7;
  goto joined_r0x008f22e9;
LAB_008f2345:
  *param_4 = *param_4 + local_70 * 4;
  *param_5 = local_88;
  goto LAB_008f2365;
}



undefined ** FUN_008f2380(void)

{
  return &PTR_u_wxBitmap_03238af8;
}



undefined ** FUN_008f2390(void)

{
  return &PTR_u_wxMask_03238b10;
}



undefined ** FUN_008f23a0(void)

{
  return &PTR_u_wxBitmapHandler_03238b28;
}



undefined4 FUN_008f23b0(int param_1,int param_2,int param_3)

{
  int in_EAX;
  int iVar1;
  
  if (param_3 == 0) {
    if (0x17 < in_EAX) {
      return 1;
    }
    if ((in_EAX == -1) &&
       (iVar1 = FUN_0095de30(), 0x1000000 < (iVar1 * param_1 + 0x1f >> 3 & 0xfffffffcU) * param_2))
    {
      return 1;
    }
  }
  return 0;
}



undefined FUN_008f23f0(void)

{
  return 0;
}



undefined FUN_008f2400(void)

{
  return 0;
}



undefined4 * __thiscall
FUN_008f2410(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 9) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<enum wxBitmapType>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



void __fastcall FUN_008f2480(HDC *param_1)

{
  ReleaseDC((HWND)0x0,*param_1);
  return;
}



void __fastcall FUN_008f2490(HDC *param_1)

{
  DeleteDC(*param_1);
  return;
}



HDC * __thiscall FUN_008f24a0(HDC *param_1_00,HDC param_1,HGDIOBJ param_2)

{
  HDC pHVar1;
  
  *param_1_00 = param_1;
  pHVar1 = (HDC)SelectObject(param_1,param_2);
  param_1_00[1] = pHVar1;
  return param_1_00;
}



void __fastcall FUN_008f24c0(HDC *param_1)

{
  if (*param_1 != (HDC)0x0) {
    SelectObject(*param_1,param_1[1]);
  }
  return;
}



void __thiscall FUN_008f24e0(int *param_1_00,int param_1)

{
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    *param_1_00 = param_1;
    return;
  }
  if (*param_1_00 != 0) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/msw/private.h",0x1eb,"AutoGDIObject::InitGdiobj",
                 "!m_gdiobj",L"initializing twice?");
    *param_1_00 = param_1;
    return;
  }
  *param_1_00 = param_1;
  return;
}



bool FUN_008f2530(void)

{
  int iVar1;
  
  iVar1 = FUN_008ff940();
  return iVar1 != 0;
}



undefined4 * __thiscall FUN_008f2540(undefined4 *param_1_00,undefined4 param_1)

{
  *param_1_00 = 0;
  param_1_00[1] = 0;
  param_1_00[4] = 0;
  param_1_00[3] = 0;
  param_1_00[2] = 0;
  *(undefined *)(param_1_00 + 5) = 1;
  FUN_00973790(param_1);
  return param_1_00;
}



void __thiscall FUN_008f2570(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    *puVar1 = wxMask::vftable;
    puVar1[2] = param_1;
  }
  if (*(int **)(param_1_00 + 0x2c) != (int *)0x0) {
    (**(code **)(**(int **)(param_1_00 + 0x2c) + 4))(1);
  }
  *(undefined4 **)(param_1_00 + 0x2c) = puVar1;
  return;
}



int __fastcall FUN_008f25c0(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    return *(int *)(param_1 + 4) + 0x18;
  }
  return 0;
}



undefined4 __fastcall FUN_008f25d0(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    return *(undefined4 *)(*(int *)(param_1 + 4) + 0x2c);
  }
  return 0;
}



undefined4 __fastcall FUN_008f25e0(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    return *(undefined4 *)(*(int *)(param_1 + 4) + 0x20);
  }
  return 0;
}



void __fastcall FUN_008f25f0(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    *(undefined *)(*(int *)(param_1 + 4) + 0x28) = 1;
  }
  return;
}



undefined4 __fastcall FUN_008f2600(int param_1)

{
  if ((*(int *)(param_1 + 4) != 0) && (*(char *)(*(int *)(param_1 + 4) + 0x28) != '\0')) {
    return 1;
  }
  return 0;
}



void __thiscall FUN_008f2620(int param_1_00,undefined4 param_1)

{
  if (*(int *)(param_1_00 + 4) != 0) {
    *(undefined4 *)(*(int *)(param_1_00 + 4) + 0x20) = param_1;
  }
  return;
}



void __thiscall FUN_008f2640(int param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 unaff_retaddr;
  
  FUN_0083eaa0();
  iVar1 = *(int *)(param_1_00 + 4);
  if (*(int **)(iVar1 + 0x2c) != (int *)0x0) {
    (**(code **)(**(int **)(iVar1 + 0x2c) + 4))(1);
    *(undefined4 *)(iVar1 + 0x2c) = unaff_retaddr;
    return;
  }
  *(undefined4 *)(iVar1 + 0x2c) = param_1;
  return;
}



undefined4 * __thiscall FUN_008f2680(undefined4 *param_1_00,int param_1)

{
  uint uVar1;
  HDC hdc;
  HDC hdc_00;
  int iVar2;
  HBITMAP pHVar3;
  undefined local_24 [4];
  int iStack_20;
  int iStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd3e88;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxMask::vftable;
  hdc = CreateCompatibleDC((HDC)0x0);
  hdc_00 = CreateCompatibleDC((HDC)0x0);
  iVar2 = GetObjectW(*(HANDLE *)(param_1 + 8),0x18,local_24);
  if (iVar2 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\bitmap.cpp",0x561,"wxMask::wxMask","Assert failure",
                   L"Cannot retrieve the dimensions of the wxMask to copy",uVar1);
    }
  }
  else {
    pHVar3 = CreateCompatibleBitmap(hdc,iStack_20,iStack_1c);
    param_1_00[2] = pHVar3;
    SelectObject(hdc,*(HGDIOBJ *)(param_1 + 8));
    SelectObject(hdc_00,(HGDIOBJ)param_1_00[2]);
    BitBlt(hdc_00,0,0,iStack_20,iStack_1c,hdc,0,0,0xcc0020);
    SelectObject(hdc,(HGDIOBJ)0x0);
    DeleteDC(hdc);
    SelectObject(hdc_00,(HGDIOBJ)0x0);
    DeleteDC(hdc_00);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall
FUN_008f27a0(int *param_1_00,undefined4 *param_1,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  undefined **ppuVar2;
  
  if (param_1 == (undefined4 *)0x0) {
    return 0;
  }
  ppuVar2 = (undefined **)(**(code **)*param_1)();
  if ((ppuVar2 != &PTR_u_wxBitmap_03238af8) &&
     ((ppuVar2[3] == (undefined *)0x0 ||
      (cVar1 = FUN_0048a047(&PTR_u_wxBitmap_03238af8), cVar1 == '\0')))) {
    if (ppuVar2[4] == (undefined *)0x0) {
      return 0;
    }
    cVar1 = FUN_0048a047(&PTR_u_wxBitmap_03238af8);
    if (cVar1 == '\0') {
      return 0;
    }
  }
  cVar1 = (**(code **)(*param_1_00 + 0x1c))(param_1,param_3,param_4,param_5,param_6,param_7);
  if (cVar1 == '\0') {
    return 0;
  }
  return 1;
}



undefined4 __thiscall
FUN_008f2830(int *param_1_00,undefined4 *param_1,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  char cVar1;
  undefined **ppuVar2;
  
  if (param_1 == (undefined4 *)0x0) {
    return 0;
  }
  ppuVar2 = (undefined **)(**(code **)*param_1)();
  if ((ppuVar2 != &PTR_u_wxBitmap_03238af8) &&
     ((ppuVar2[3] == (undefined *)0x0 ||
      (cVar1 = FUN_0048a047(&PTR_u_wxBitmap_03238af8), cVar1 == '\0')))) {
    if (ppuVar2[4] == (undefined *)0x0) {
      return 0;
    }
    cVar1 = FUN_0048a047(&PTR_u_wxBitmap_03238af8);
    if (cVar1 == '\0') {
      return 0;
    }
  }
  cVar1 = (**(code **)(*param_1_00 + 0x20))(param_1,param_3,param_4,param_5,param_6);
  if (cVar1 == '\0') {
    return 0;
  }
  return 1;
}



undefined4 __thiscall
FUN_008f28b0(int *param_1_00,undefined4 *param_1,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined **ppuVar2;
  
  if (param_1 == (undefined4 *)0x0) {
    return 0;
  }
  ppuVar2 = (undefined **)(**(code **)*param_1)();
  if ((ppuVar2 != &PTR_u_wxBitmap_03238af8) &&
     ((ppuVar2[3] == (undefined *)0x0 ||
      (cVar1 = FUN_0048a047(&PTR_u_wxBitmap_03238af8), cVar1 == '\0')))) {
    if (ppuVar2[4] == (undefined *)0x0) {
      return 0;
    }
    cVar1 = FUN_0048a047(&PTR_u_wxBitmap_03238af8);
    if (cVar1 == '\0') {
      return 0;
    }
  }
  cVar1 = (**(code **)(*param_1_00 + 0x24))(param_1,param_3,param_4,0);
  if (cVar1 == '\0') {
    return 0;
  }
  return 1;
}



undefined4 * __thiscall FUN_008f2930(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxMask::vftable;
  if ((HGDIOBJ)param_1_00[2] != (HGDIOBJ)0x0) {
    DeleteObject((HGDIOBJ)param_1_00[2]);
  }
  *param_1_00 = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_008f2970(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  *param_1_00 = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 4);
  param_1_00[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1_00 = wxBitmap::vftable;
  return;
}



undefined4 * __thiscall FUN_008f29a0(undefined4 *param_1_00,int param_1)

{
  *param_1_00 = 0;
  *(undefined *)(param_1_00 + 5) = 1;
  param_1_00[1] = 0;
  param_1_00[4] = 0;
  param_1_00[3] = 0;
  param_1_00[2] = 0;
  if (*(int *)(param_1 + 4) == 0) {
    FUN_00973790(0);
    return param_1_00;
  }
  FUN_00973790(*(undefined4 *)(*(int *)(param_1 + 4) + 0x14));
  return param_1_00;
}



void __fastcall FUN_008f2a30(undefined4 *param_1)

{
  param_1[1] = 1;
  param_1[4] = 0;
  param_1[3] = 0;
  param_1[2] = 0;
  *param_1 = wxBitmapRefData::vftable;
  param_1[7] = 0;
  param_1[6] = wxPalette::vftable;
  param_1[8] = 0;
  param_1[0xb] = 0;
  param_1[5] = 0;
  param_1[9] = 0;
  *(undefined *)(param_1 + 10) = 0;
  *(undefined *)((int)param_1 + 0x29) = 0;
  return;
}



undefined4 * __thiscall FUN_008f2a70(undefined4 *param_1_00,int param_1)

{
  undefined3 uVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined local_4;
  undefined3 uStack_3;
  
  puStack_8 = &LAB_00bd3ece;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  *param_1_00 = wxGDIImageRefData::vftable;
  param_1_00[2] = *(undefined4 *)(param_1 + 8);
  param_1_00[3] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[4] = *(undefined4 *)(param_1 + 0x10);
  param_1_00[5] = 0;
  *param_1_00 = wxBitmapRefData::vftable;
  param_1_00[7] = 0;
  param_1_00[6] = wxPalette::vftable;
  param_1_00[8] = 0;
  param_1_00[0xb] = 0;
  uStack_3 = 0;
  uVar1 = uStack_3;
  local_4 = 1;
  uStack_3 = 0;
  if (*(int *)(param_1 + 0x2c) != 0) {
    pvVar3 = operator_new(0xc);
    local_4 = 2;
    if (pvVar3 == (void *)0x0) {
      uVar4 = 0;
    }
    else {
      uVar4 = FUN_008f2680(*(undefined4 *)(param_1 + 0x2c));
    }
    param_1_00[0xb] = uVar4;
    uVar1 = uStack_3;
  }
  uStack_3 = uVar1;
  local_4 = 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(param_1 + 0x29) != '\0')) {
    FUN_00840480("..\\..\\src\\msw\\bitmap.cpp",0xda,"wxBitmapRefData::wxBitmapRefData",
                 "!data.m_isDIB",L"can\'t copy bitmap locked for raw access!",uVar2);
  }
  *(undefined *)((int)param_1_00 + 0x29) = 0;
  *(undefined *)(param_1_00 + 10) = *(undefined *)(param_1 + 0x28);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_008f2bc0(int param_1_00,int *param_1)

{
  int iVar1;
  void *pvVar2;
  int iVar3;
  int *piVar4;
  
  if (*param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\bitmap.cpp",0x19a,"wxBitmap::CopyFromDIB","dib.IsOk()",
                   L"invalid DIB in CopyFromDIB");
    }
    return 0;
  }
  iVar1 = FUN_00973970(0);
  if (iVar1 == 0) {
    return 0;
  }
  FUN_0083e850();
  pvVar2 = operator_new(0x30);
  if (pvVar2 == (void *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_008f2a30();
  }
  *(int *)(param_1_00 + 4) = iVar3;
  FUN_00972e10();
  *(int *)(iVar3 + 8) = param_1[2];
  FUN_00972e10();
  *(int *)(iVar3 + 0xc) = param_1[3];
  FUN_00972e10();
  *(int *)(iVar3 + 0x10) = param_1[4];
  *(int *)(iVar3 + 0x14) = iVar1;
  piVar4 = (int *)FUN_00973160();
  if (piVar4 != (int *)0x0) {
    if ((int *)(iVar3 + 0x18) != piVar4) {
      FUN_0083ea60(piVar4);
    }
    (**(code **)(*piVar4 + 4))(1);
  }
  return 1;
}



void __fastcall FUN_008f2ca0(undefined4 *param_1)

{
  _free((void *)param_1[0x12]);
  if (7 < (uint)param_1[0x11]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xc]);
  }
  param_1[0x11] = 7;
  param_1[0x10] = 0;
  *(undefined2 *)(param_1 + 0xc) = 0;
  _free((void *)param_1[9]);
  if (7 < (uint)param_1[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



void __thiscall FUN_008f2d70(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  FUN_008f2410(param_2,param_1,1);
  uVar1 = FUN_008854f0(param_1);
  FUN_0083fe90(param_1_00,uVar1);
  return;
}



void __fastcall FUN_008f2db0(HGDIOBJ *param_1)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4070;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*param_1 != (HGDIOBJ)0x0) && (*(char *)(param_1 + 5) != '\0')) {
    BVar2 = DeleteObject(*param_1);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    *param_1 = (HGDIOBJ)0x0;
    *(undefined *)(param_1 + 5) = 1;
    param_1[1] = (HGDIOBJ)0x0;
    param_1[4] = (HGDIOBJ)0x0;
    param_1[3] = (HGDIOBJ)0x0;
    param_1[2] = (HGDIOBJ)0x0;
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_008f2ee0(HGDIOBJ *param_1)

{
  char cVar1;
  BOOL BVar2;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4070;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  if ((*param_1 != (HGDIOBJ)0x0) && (*(char *)(param_1 + 5) != '\0')) {
    BVar2 = DeleteObject(*param_1);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    *param_1 = (HGDIOBJ)0x0;
    *(undefined *)(param_1 + 5) = 1;
    param_1[1] = (HGDIOBJ)0x0;
    param_1[4] = (HGDIOBJ)0x0;
    param_1[3] = (HGDIOBJ)0x0;
    param_1[2] = (HGDIOBJ)0x0;
  }
  ExceptionList = pvStack_c;
  return;
}



void __fastcall FUN_008f2ef0(int param_1)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(int *)(param_1 + 0x20) != 0) {
      FUN_00840480();
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x24) != 0)) {
      FUN_00840480();
    }
  }
  if (*(HGDIOBJ *)(param_1 + 0x14) != (HGDIOBJ)0x0) {
    BVar2 = DeleteObject(*(HGDIOBJ *)(param_1 + 0x14));
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  if (*(int **)(param_1 + 0x2c) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x2c) + 4))();
    *(undefined4 *)(param_1 + 0x2c) = 0;
  }
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_008f3070(int param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  void *pvVar4;
  undefined4 uVar5;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3f0e;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  if (param_1 == 0) {
    iVar3 = 0;
  }
  else {
    if (*(int *)(param_1 + 0x14) == 0) {
      pvVar4 = operator_new(0x30);
      local_4 = 1;
      if (pvVar4 == (void *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = FUN_008f2a70(param_1);
      }
      local_4 = 0xffffffff;
      *(int *)(param_1_00 + 4) = iVar3;
    }
    else {
      local_24 = 0;
      local_10 = 1;
      local_20 = 0;
      local_14 = 0;
      local_18 = 0;
      local_1c = 0;
      FUN_00973790(*(int *)(param_1 + 0x14));
      local_4 = 0;
      FUN_008f2bc0(&local_24);
      iVar3 = *(int *)(param_1_00 + 4);
      *(undefined *)(iVar3 + 0x28) = *(undefined *)(param_1 + 0x28);
      local_4 = 0xffffffff;
      FUN_008f2db0(uVar2);
    }
    iVar1 = *(int *)(param_1 + 0x2c);
    if (iVar1 != 0) {
      pvVar4 = operator_new(0xc);
      local_4 = 2;
      if (pvVar4 == (void *)0x0) {
        uVar5 = 0;
      }
      else {
        uVar5 = FUN_008f2680(iVar1);
      }
      local_4 = 0xffffffff;
      if (*(int **)(iVar3 + 0x2c) != (int *)0x0) {
        (**(code **)(**(int **)(iVar3 + 0x2c) + 4))(1);
      }
      *(undefined4 *)(iVar3 + 0x2c) = uVar5;
    }
  }
  ExceptionList = local_c;
  return iVar3;
}



undefined4 * __thiscall
FUN_008f31a0(undefined4 *param_1_00,byte *param_1,int param_2,int param_3,UINT param_4)

{
  uint uVar1;
  byte *pbVar2;
  byte bVar3;
  char cVar4;
  undefined4 *puVar5;
  HBITMAP pHVar6;
  byte bVar7;
  byte *pbVar8;
  uint uVar9;
  int iVar10;
  byte *local_84;
  int local_7c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd3f48;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxBitmap::vftable;
  puVar5 = (undefined4 *)operator_new(0x30);
  if (puVar5 == (undefined4 *)0x0) {
    puVar5 = (undefined4 *)0x0;
  }
  else {
    puVar5[1] = 1;
    puVar5[4] = 0;
    puVar5[3] = 0;
    puVar5[2] = 0;
    *puVar5 = wxBitmapRefData::vftable;
    puVar5[7] = 0;
    puVar5[6] = wxPalette::vftable;
    puVar5[8] = 0;
    puVar5[0xb] = 0;
    puVar5[5] = 0;
    puVar5[9] = 0;
    *(undefined *)(puVar5 + 10) = 0;
    *(undefined *)((int)puVar5 + 0x29) = 0;
  }
  param_1_00[1] = puVar5;
  puVar5[2] = param_2;
  puVar5[3] = param_3;
  puVar5[4] = param_4;
  if (param_4 == 1) {
    uVar9 = (int)(param_2 + 7 + (param_2 + 7 >> 0x1f & 7U)) >> 3;
    local_84 = (byte *)_malloc(((uVar9 & 1) + uVar9) * param_3);
    if (0 < param_3) {
      local_7c = param_3;
      uVar1 = uVar9;
      pbVar8 = local_84;
      pbVar2 = param_1;
      do {
        for (; uVar1 != 0; uVar1 = uVar1 - 1) {
          bVar7 = *pbVar2;
          bVar3 = 0;
          iVar10 = 8;
          do {
            bVar3 = bVar3 * '\x02' | bVar7 & 1;
            bVar7 = bVar7 >> 1;
            iVar10 = iVar10 + -1;
          } while (iVar10 != 0);
          *pbVar8 = ~bVar3;
          pbVar8 = pbVar8 + 1;
          pbVar2 = pbVar2 + 1;
        }
        if ((uVar9 & 1) != 0) {
          *pbVar8 = 0;
          pbVar8 = pbVar8 + 1;
        }
        local_7c = local_7c + -1;
        uVar1 = uVar9;
      } while (local_7c != 0);
    }
  }
  else {
    local_84 = param_1;
  }
  pHVar6 = CreateBitmap(param_2,param_3,1,param_4,local_84);
  if (pHVar6 == (HBITMAP)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar4 = FUN_00846b30(6);
    if (cVar4 != '\0') {
      FUN_0081c0f1();
      local_4._0_1_ = 1;
      __time64((__time64_t *)0x0);
      GetCurrentThreadId();
      local_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4._0_1_ = 1;
      FUN_00842440();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0081b5bc();
    }
  }
  if (local_84 != param_1) {
    _free(local_84);
  }
  FUN_0083eaa0();
  *(HBITMAP *)(param_1_00[1] + 0x14) = pHVar6;
  ExceptionList = local_c;
  return param_1_00;
}



uint __thiscall FUN_008f3450(int *param_1_00,int param_1,int param_2,UINT param_3,int param_4)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  uint uVar4;
  HDC hdc;
  HBITMAP pHVar5;
  undefined4 uVar6;
  undefined auStack_118 [8];
  undefined4 uStack_110;
  HBITMAP *ppHStack_10c;
  HBITMAP local_dc;
  undefined4 local_d8;
  undefined4 local_d4;
  undefined4 local_d0;
  undefined4 local_cc;
  undefined local_c8;
  undefined *puStack_c4;
  HBITMAP apHStack_c0 [45];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3faf;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0083e850();
  puVar2 = (undefined4 *)operator_new(0x30);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2[1] = 1;
    puVar2[4] = 0;
    puVar2[3] = 0;
    puVar2[2] = 0;
    *puVar2 = wxBitmapRefData::vftable;
    puVar2[7] = 0;
    puVar2[6] = wxPalette::vftable;
    puVar2[8] = 0;
    puVar2[0xb] = 0;
    puVar2[5] = 0;
    puVar2[9] = 0;
    *(undefined *)(puVar2 + 10) = 0;
    *(undefined *)((int)puVar2 + 0x29) = 0;
  }
  param_1_00[1] = (int)puVar2;
  puVar2[2] = param_1;
  *(int *)(param_1_00[1] + 0xc) = param_2;
  if (param_4 == 0) {
    if (0x17 < (int)param_3) {
      if (param_3 == 0xffffffff) {
LAB_008f3538:
        param_3 = 0x18;
      }
      local_dc = (HBITMAP)0x0;
      local_c8 = 1;
      local_d8 = 0;
      local_cc = 0;
      local_d0 = 0;
      local_d4 = 0;
      FUN_00972610();
      pHVar5 = local_dc;
      local_4 = 0xffffffff;
      if (local_dc == (HBITMAP)0x0) {
        uVar4 = FUN_008f2db0();
        ExceptionList = local_c;
        return uVar4 & 0xffffff00;
      }
      local_dc = (HBITMAP)0x0;
      *(undefined *)(param_1_00[1] + 0x29) = 1;
      *(UINT *)(param_1_00[1] + 0x10) = param_3;
      FUN_008f2db0();
      goto LAB_008f3793;
    }
    if (param_3 != 0xffffffff) goto LAB_008f35a0;
    iVar3 = FUN_0095de30();
    if (0x1000000 < (iVar3 * param_1 + 0x1f >> 3 & 0xfffffffcU) * param_2) goto LAB_008f3538;
  }
  else {
LAB_008f35a0:
    if (0 < (int)param_3) {
      ppHStack_10c = (HBITMAP *)0x8f35b4;
      pHVar5 = CreateBitmap(param_1,param_2,1,param_3,(void *)0x0);
      if (pHVar5 == (HBITMAP)0x0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          local_4 = 1;
          ppHStack_10c = (HBITMAP *)0x8f361b;
          FUN_008423d0();
          local_4._0_1_ = 2;
          GetLastError();
          FUN_00843700();
          GetLastError();
          ppHStack_10c = &local_dc;
          uStack_110 = 0x8f3655;
          FUN_00847d90();
          local_4 = CONCAT31(local_4._1_3_,1);
          FUN_00842440();
          local_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      *(UINT *)(param_1_00[1] + 0x10) = param_3;
      goto LAB_008f3793;
    }
  }
  hdc = GetDC((HWND)0x0);
  local_4 = 3;
  pHVar5 = CreateCompatibleBitmap(hdc,param_1,param_2);
  if (pHVar5 == (HBITMAP)0x0) {
    puStack_c4 = auStack_118;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4._0_1_ = 4;
      ppHStack_10c = (HBITMAP *)0x8f3712;
      FUN_008423d0();
      local_4._0_1_ = 5;
      GetLastError();
      FUN_00843700();
      GetLastError();
      ppHStack_10c = apHStack_c0;
      uStack_110 = 0x8f374c;
      FUN_00847d90();
      local_4._0_1_ = 4;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,3);
      FUN_0081b5bc();
    }
  }
  iVar3 = param_1_00[1];
  uVar6 = FUN_0095de30();
  *(undefined4 *)(iVar3 + 0x10) = uVar6;
  local_4 = 0xffffffff;
  ReleaseDC((HWND)0x0,hdc);
LAB_008f3793:
  FUN_0083eaa0();
  *(HBITMAP *)(param_1_00[1] + 0x14) = pHVar5;
  uVar4 = (**(code **)(*param_1_00 + 0x10))();
  ExceptionList = local_c;
  return uVar4;
}



// WARNING: Removing unreachable block (ram,0x008f3884)
// WARNING: Removing unreachable block (ram,0x008f389a)
// WARNING: Removing unreachable block (ram,0x008f38ae)
// WARNING: Removing unreachable block (ram,0x008f38bc)
// WARNING: Removing unreachable block (ram,0x008f38c5)
// WARNING: Removing unreachable block (ram,0x008f38e7)
// WARNING: Removing unreachable block (ram,0x008f390b)
// WARNING: Removing unreachable block (ram,0x008f38fd)
// WARNING: Removing unreachable block (ram,0x008f391b)
// WARNING: Removing unreachable block (ram,0x008f393d)
// WARNING: Removing unreachable block (ram,0x008f39a2)
// WARNING: Removing unreachable block (ram,0x008f39a6)
// WARNING: Removing unreachable block (ram,0x008f39b2)
// WARNING: Removing unreachable block (ram,0x008f39bb)
// WARNING: Removing unreachable block (ram,0x008f39c4)
// WARNING: Removing unreachable block (ram,0x008f39cd)
// WARNING: Removing unreachable block (ram,0x008f39cf)
// WARNING: Removing unreachable block (ram,0x008f39d3)
// WARNING: Removing unreachable block (ram,0x008f39d6)
// WARNING: Removing unreachable block (ram,0x008f39de)
// WARNING: Removing unreachable block (ram,0x008f39e7)
// WARNING: Removing unreachable block (ram,0x008f39ef)
// WARNING: Removing unreachable block (ram,0x008f3ac2)
// WARNING: Removing unreachable block (ram,0x008f3ae4)
// WARNING: Removing unreachable block (ram,0x008f3ad0)
// WARNING: Removing unreachable block (ram,0x008f3ae6)
// WARNING: Removing unreachable block (ram,0x008f3afb)
// WARNING: Removing unreachable block (ram,0x008f3b04)
// WARNING: Removing unreachable block (ram,0x008f3a0a)
// WARNING: Removing unreachable block (ram,0x008f3a2f)
// WARNING: Removing unreachable block (ram,0x008f3b07)
// WARNING: Removing unreachable block (ram,0x008f3b10)

uint FUN_008f37d0(void)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3feb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_008ff820();
  if ((char)uVar1 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      uVar1 = FUN_00840480();
    }
  }
  else {
    FUN_0083e850();
    FUN_00900150();
    FUN_00900100();
    FUN_00973530();
    local_4 = 0xffffffff;
    uVar1 = FUN_008f2db0();
  }
  ExceptionList = local_c;
  return uVar1 & 0xffffff00;
}



undefined4 * __thiscall FUN_008f3b70(int param_1_00,undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  undefined4 uVar5;
  char *pcVar6;
  char *pcVar7;
  char *pcVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  undefined **local_44;
  int local_40;
  int local_3c;
  int local_38;
  int local_34;
  int local_30;
  int local_2c;
  undefined local_28;
  int local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4041;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  local_24 = 0;
  local_10 = 1;
  local_20 = 0;
  local_14 = 0;
  local_18 = 0;
  local_1c = 0;
  if (*(int *)(param_1_00 + 4) == 0) {
    uVar5 = 0;
  }
  else {
    uVar5 = *(undefined4 *)(*(int *)(param_1_00 + 4) + 0x14);
  }
  FUN_00973790(uVar5);
  local_4 = 1;
  if (local_24 == 0) {
    *param_1 = wxObject::vftable;
    iVar2 = DAT_032390e8;
    param_1[1] = DAT_032390e8;
    if (iVar2 != 0) {
      piVar1 = (int *)(iVar2 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxImage::vftable;
  }
  else {
    FUN_00973bd0(&local_44);
    local_4._0_1_ = 2;
    cVar3 = FUN_008ff820(uVar4);
    if (cVar3 == '\0') {
      *param_1 = wxObject::vftable;
      local_40 = DAT_032390e8;
      param_1[1] = DAT_032390e8;
    }
    else {
      iVar2 = *(int *)(param_1_00 + 4);
      if ((iVar2 == 0) || (*(int *)(iVar2 + 0x2c) == 0)) {
        iVar11 = 0;
      }
      else {
        iVar11 = iRam00000008;
        if (iVar2 != 0) {
          iVar11 = *(int *)(*(int *)(iVar2 + 0x2c) + 8);
        }
      }
      if (iVar11 != 0) {
        local_3c = 0;
        local_28 = 1;
        local_38 = 0;
        local_2c = 0;
        local_30 = 0;
        local_34 = 0;
        FUN_00973790(iVar11);
        local_4._0_1_ = 3;
        if (local_3c != 0) {
          FUN_00972e10();
          iVar11 = local_30;
          FUN_00972e10();
          iVar2 = local_34;
          FUN_00972e10();
          uVar4 = local_2c * iVar2 + 0x1f >> 3 & 0xfffffffc;
          iVar10 = local_2c >> 3;
          pcVar6 = (char *)FUN_008ff850();
          FUN_00972e10();
          pcVar7 = (char *)((iVar11 + -1) * uVar4 + local_38);
          if (0 < iVar11) {
            do {
              pcVar8 = pcVar7;
              iVar9 = iVar2;
              if (0 < iVar2) {
                do {
                  if (*pcVar8 == '\0') {
                    *pcVar6 = '\x01';
                    pcVar6[1] = '\x02';
                    pcVar6[2] = '\x03';
                  }
                  else if (((*pcVar6 == '\x01') && (pcVar6[1] == '\x02')) && (pcVar6[2] == '\x03'))
                  {
                    pcVar6[2] = '\x02';
                  }
                  pcVar6 = pcVar6 + 3;
                  iVar9 = iVar9 + -1;
                  pcVar8 = pcVar8 + iVar10;
                } while (iVar9 != 0);
              }
              pcVar7 = pcVar7 + -uVar4;
              iVar11 = iVar11 + -1;
            } while (iVar11 != 0);
          }
          FUN_008ff990(1,2,3);
        }
        local_4._0_1_ = 2;
        FUN_008f2db0();
      }
      *param_1 = wxObject::vftable;
      param_1[1] = local_40;
    }
    if (local_40 != 0) {
      *(int *)(local_40 + 4) = *(int *)(local_40 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
    local_4 = CONCAT31(local_4._1_3_,1);
    local_44 = wxObject::vftable;
    FUN_0083e850();
  }
  local_4 = local_4 & 0xffffff00;
  FUN_008f2db0();
  ExceptionList = local_c;
  return param_1;
}



uint __fastcall FUN_008f3dd0(int param_1)

{
  char cVar1;
  int *piVar2;
  undefined **ppuVar3;
  uint uVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4070;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0083e850();
  piVar2 = (int *)FUN_008f5d50();
  if ((piVar2 != (int *)0x0) &&
     (((ppuVar3 = (undefined **)(**(code **)*piVar2)(), ppuVar3 == &PTR_u_wxBitmapHandler_03238b28
       || ((ppuVar3[3] != (undefined *)0x0 && (cVar1 = FUN_0048a047(), cVar1 != '\0')))) ||
      ((ppuVar3[4] != (undefined *)0x0 && (cVar1 = FUN_0048a047(), cVar1 != '\0')))))) {
    puVar5 = (undefined4 *)operator_new(0x30);
    if (puVar5 == (undefined4 *)0x0) {
      puVar5 = (undefined4 *)0x0;
    }
    else {
      puVar5[1] = 1;
      puVar5[4] = 0;
      puVar5[3] = 0;
      puVar5[2] = 0;
      *puVar5 = wxBitmapRefData::vftable;
      puVar5[7] = 0;
      puVar5[6] = wxPalette::vftable;
      puVar5[8] = 0;
      puVar5[0xb] = 0;
      puVar5[5] = 0;
      puVar5[9] = 0;
      *(undefined *)(puVar5 + 10) = 0;
      *(undefined *)((int)puVar5 + 0x29) = 0;
    }
    *(undefined4 **)(param_1 + 4) = puVar5;
    uVar4 = (**(code **)(*piVar2 + 0x1c))();
    ExceptionList = local_c;
    return uVar4;
  }
  FUN_0043c211(&DAT_00d25fa0);
  uVar4 = FUN_00846b30(6);
  if ((char)uVar4 != '\0') {
    FUN_0081c0f1();
    uStack_4 = 0;
    FUN_008423d0();
    uStack_4._0_1_ = 1;
    FUN_008f2410();
    FUN_008854f0();
    FUN_0083fe90();
    uStack_4 = (uint)uStack_4._1_3_ << 8;
    FUN_00842440();
    uStack_4 = 0xffffffff;
    uVar4 = FUN_0081b5bc();
  }
  ExceptionList = local_c;
  return uVar4 & 0xffffff00;
}



undefined __thiscall
FUN_008f3fc0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_4)

{
  char cVar1;
  undefined uVar2;
  int *piVar3;
  undefined **ppuVar4;
  undefined **local_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4098;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  piVar3 = (int *)FUN_008f5d50(param_2,DAT_0323f878 ^ (uint)&stack0xffffffdc);
  if ((piVar3 != (int *)0x0) &&
     (((ppuVar4 = (undefined **)(**(code **)*piVar3)(), ppuVar4 == &PTR_u_wxBitmapHandler_03238b28
       || ((ppuVar4[3] != (undefined *)0x0 &&
           (cVar1 = FUN_0048a047(&PTR_u_wxBitmapHandler_03238b28), cVar1 != '\0')))) ||
      ((ppuVar4[4] != (undefined *)0x0 &&
       (cVar1 = FUN_0048a047(&PTR_u_wxBitmapHandler_03238b28), cVar1 != '\0')))))) {
    uVar2 = (**(code **)(*piVar3 + 0x24))(param_1_00,param_1,param_2,param_4);
    ExceptionList = local_c;
    return uVar2;
  }
  FUN_008f3b70(local_14);
  uStack_4 = 0;
  cVar1 = FUN_008ff820();
  if (cVar1 == '\0') {
    uStack_4 = 0xffffffff;
    local_14[0] = wxObject::vftable;
    FUN_0083e850();
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00903fb0(param_1,param_2);
    uStack_4 = 0xffffffff;
    local_14[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  return uVar2;
}



void __thiscall FUN_008f40d0(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  char cVar3;
  
  cVar3 = (**(code **)(*param_1 + 0x10))();
  if (((cVar3 != '\0') && (param_2 != 0)) && (iVar1 = param_1[1], *(char *)(iVar1 + 0x29) == '\0'))
  {
    iVar2 = *(int *)(iVar1 + 0x24);
    *(undefined4 *)(iVar1 + 0x24) = 0;
    if (iVar2 != 0) {
      FUN_008f2db0();
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar2);
    }
  }
  return;
}



char __thiscall FUN_008f4110(int param_1_00,int *param_1,int *param_3)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  HBITMAP pHVar6;
  HDC hdc;
  HDC hdc_00;
  HGDIOBJ pvVar7;
  HGDIOBJ h;
  char cStack_e9;
  int iStack_e4;
  int iStack_e0;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd40ff;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar2 = (**(code **)(*param_1 + 0x10))();
  if (cVar2 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    cStack_e9 = '\0';
  }
  else {
    if (*(HGDIOBJ *)(param_1_00 + 8) != (HGDIOBJ)0x0) {
      DeleteObject(*(HGDIOBJ *)(param_1_00 + 8));
      *(undefined4 *)(param_1_00 + 8) = 0;
    }
    iVar1 = param_1[1];
    if (iVar1 == 0) {
      iStack_e0 = 0;
      iStack_e4 = 0;
    }
    else {
      iStack_e0 = *(int *)(iVar1 + 8);
      iStack_e4 = *(int *)(iVar1 + 0xc);
    }
    uVar3 = (**(code **)(*param_3 + 0x18))();
    uVar4 = (**(code **)(*param_3 + 0x14))();
    uVar5 = (**(code **)(*param_3 + 0x10))();
    pHVar6 = CreateBitmap(iStack_e0,iStack_e4,1,1,(void *)0x0);
    *(HBITMAP *)(param_1_00 + 8) = pHVar6;
    hdc = CreateCompatibleDC((HDC)0x0);
    hdc_00 = CreateCompatibleDC((HDC)0x0);
    if ((hdc == (HDC)0x0) || (hdc_00 == (HDC)0x0)) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    cStack_e9 = '\x01';
    if (((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[1] != 0)) &&
       (*(int *)(param_1[1] + 0x20) != 0)) {
      FUN_00840480();
    }
    pvVar7 = (HGDIOBJ)param_1[1];
    if (pvVar7 != (HGDIOBJ)0x0) {
      pvVar7 = *(HGDIOBJ *)((int)pvVar7 + 0x14);
    }
    pvVar7 = SelectObject(hdc,pvVar7);
    if (pvVar7 == (HGDIOBJ)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 2;
        FUN_008423d0();
        uStack_4._0_1_ = 3;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = CONCAT31(uStack_4._1_3_,2);
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
      cStack_e9 = '\0';
    }
    h = SelectObject(hdc_00,*(HGDIOBJ *)(param_1_00 + 8));
    if (h == (HGDIOBJ)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 4;
        FUN_008423d0();
        uStack_4._0_1_ = 5;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = CONCAT31(uStack_4._1_3_,4);
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
      cStack_e9 = '\0';
    }
    else if (cStack_e9 != '\0') {
      SetBkColor(hdc,uVar5 & 0xff | (uVar4 & 0xff | (uVar3 & 0xff | 0x200) << 8) << 8);
      BitBlt(hdc_00,0,0,iStack_e0,iStack_e4,hdc,0,0,0x330008);
    }
    SelectObject(hdc,pvVar7);
    DeleteDC(hdc);
    SelectObject(hdc_00,h);
    DeleteDC(hdc_00);
  }
  ExceptionList = local_c;
  return cStack_e9;
}



HBITMAP FUN_008f4580(HANDLE param_1,int param_2,int param_3)

{
  char cVar1;
  HDC hdc;
  HDC hdc_00;
  HBITMAP h;
  HGDIOBJ h_00;
  HGDIOBJ h_01;
  BOOL BVar2;
  undefined local_c4 [4];
  int iStack_c0;
  int iStack_bc;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd415f;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == (HANDLE)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    h = (HBITMAP)0x0;
  }
  else {
    if ((param_2 == 0) || (param_3 == 0)) {
      GetObjectW(param_1,0x18,local_c4);
      param_2 = iStack_c0;
      param_3 = iStack_bc;
    }
    hdc = CreateCompatibleDC((HDC)0x0);
    hdc_00 = CreateCompatibleDC((HDC)0x0);
    if ((hdc == (HDC)0x0) || (hdc_00 == (HDC)0x0)) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    h = CreateBitmap(param_2,param_3,1,1,(void *)0x0);
    if (h == (HBITMAP)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 2;
        FUN_008423d0();
        uStack_4._0_1_ = 3;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = CONCAT31(uStack_4._1_3_,2);
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    h_00 = SelectObject(hdc,param_1);
    h_01 = SelectObject(hdc_00,h);
    BVar2 = BitBlt(hdc_00,0,0,param_2,param_3,hdc,0,0,0x330008);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 4;
        FUN_008423d0();
        uStack_4._0_1_ = 5;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = CONCAT31(uStack_4._1_3_,4);
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    SelectObject(hdc,h_00);
    SelectObject(hdc_00,h_01);
    DeleteDC(hdc);
    DeleteDC(hdc_00);
  }
  ExceptionList = local_c;
  return h;
}



void __fastcall FUN_008f4930(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bdbf73;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxBitmapRefData::vftable;
  local_4 = 1;
  FUN_008f2ef0(uVar1);
  local_4 = local_4 & 0xffffff00;
  param_1[6] = wxObject::vftable;
  FUN_0083e850();
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008f49a0(undefined4 param_1_00,byte param_1)

{
  FUN_008f4930();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_008f49c0(int param_1_00,int param_1,int param_3)

{
  char cVar1;
  HICON hIcon;
  BOOL BVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  undefined auStack_f0 [8];
  undefined4 uStack_e8;
  undefined *puStack_e4;
  char *pcStack_e0;
  char *pcStack_dc;
  ICONINFO local_b8;
  undefined *puStack_a4;
  int iStack_a0;
  int iStack_9c;
  undefined auStack_88 [20];
  undefined auStack_74 [18];
  short sStack_62;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd419e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 4) == 0) {
    hIcon = (HICON)0x0;
  }
  else {
    hIcon = *(HICON *)(*(int *)(param_1 + 4) + 0x14);
  }
  BVar2 = GetIconInfo(hIcon,&local_b8);
  if (BVar2 == 0) {
    puStack_a4 = auStack_f0;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      pcStack_dc = "..\\..\\src\\msw\\bitmap.cpp";
      pcStack_e0 = (char *)0x6;
      uStack_4 = 0;
      puStack_e4 = (undefined *)0x8f4a76;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      pcStack_dc = (char *)0x131;
      pcStack_e0 = "..\\..\\src\\msw\\bitmap.cpp";
      puStack_e4 = auStack_88;
      uStack_e8 = 0x8f4ab0;
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    uVar4 = 0;
  }
  else {
    puVar3 = (undefined4 *)operator_new(0x30);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      puVar3[1] = 1;
      puVar3[4] = 0;
      puVar3[3] = 0;
      puVar3[2] = 0;
      *puVar3 = wxBitmapRefData::vftable;
      puVar3[7] = 0;
      puVar3[6] = wxPalette::vftable;
      puVar3[8] = 0;
      puVar3[0xb] = 0;
      puVar3[5] = 0;
      puVar3[9] = 0;
      *(undefined *)(puVar3 + 10) = 0;
      *(undefined *)((int)puVar3 + 0x29) = 0;
    }
    *(undefined4 **)(param_1_00 + 4) = puVar3;
    iVar7 = *(int *)(param_1 + 4);
    if (iVar7 == 0) {
      iVar6 = 0;
      iVar7 = 0;
    }
    else {
      iVar6 = *(int *)(iVar7 + 8);
      iVar7 = *(int *)(iVar7 + 0xc);
    }
    puVar3[2] = iVar6;
    puVar3[3] = iVar7;
    uVar4 = FUN_0095de30();
    puVar3[4] = uVar4;
    puVar3[5] = local_b8.hbmColor;
    if (param_3 == 0) {
      pcStack_dc = (char *)0x8f4bb8;
      iVar5 = GetObjectW(local_b8.hbmColor,0x18,auStack_74);
      if ((iVar5 != 0) && (sStack_62 == 0x20)) {
        FUN_008f2540();
        uStack_4 = 2;
        if (iStack_a0 != 0) {
          FUN_00972e10();
          iVar7 = iVar7 * iVar6 * 4;
          iVar6 = 0;
          if (0 < iVar7) {
            do {
              if (*(char *)(iStack_9c + 3 + iVar6) != '\0') {
                *(undefined *)(puVar3 + 10) = 1;
                break;
              }
              iVar6 = iVar6 + 4;
            } while (iVar6 < iVar7);
          }
        }
        uStack_4 = 0xffffffff;
        FUN_008f2db0();
      }
    }
    else if (param_3 != 1) {
      if (param_3 == 2) {
        *(undefined *)(puVar3 + 10) = 1;
      }
      else if (PTR_FUN_03235c4c != (undefined *)0x0) {
        pcStack_dc = (char *)0x145;
        pcStack_e0 = "..\\..\\src\\msw\\bitmap.cpp";
        puStack_e4 = (undefined *)0x8f4b95;
        FUN_00840480();
      }
    }
    if (*(char *)(puVar3 + 10) == '\0') {
      pcStack_dc = (char *)0x8f4c38;
      FUN_008f4580();
      FUN_008f2570();
    }
    DeleteObject(local_b8.hbmMask);
    uVar4 = 1;
  }
  ExceptionList = local_c;
  return uVar4;
}



void FUN_008f4c70(int *param_1,undefined4 param_2)

{
  char cVar1;
  
  FUN_0083e850();
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 == '\0') {
    return;
  }
  FUN_008f49c0(param_1,param_2);
  return;
}



void FUN_008f4cb0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_008f3450(param_1,param_2,param_3,0);
  return;
}



uint FUN_008f4cd0(undefined4 param_1,undefined4 param_2,int param_3)

{
  uint in_EAX;
  uint uVar1;
  
  if (*(int *)(param_3 + 8) != 0) {
    in_EAX = (**(code **)(**(int **)(param_3 + 8) + 0x10))();
    if ((char)in_EAX != '\0') {
      in_EAX = FUN_0048a085(*(undefined4 *)(param_3 + 8),&PTR_u_wxMSWDCImpl_0323af3c);
      if (in_EAX != 0) {
        uVar1 = FUN_008f3450(param_1,param_2,0xffffffff,*(undefined4 *)(in_EAX + 0x108));
        return uVar1;
      }
      goto LAB_008f4d4a;
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    in_EAX = FUN_00840480("..\\..\\src\\msw\\bitmap.cpp",0x218,"wxBitmap::Create","dc.IsOk()",
                          L"invalid HDC in wxBitmap::Create()");
  }
LAB_008f4d4a:
  return in_EAX & 0xffffff00;
}



void FUN_008f4d60(undefined4 param_1,undefined4 param_2)

{
  FUN_008f37d0(param_1,param_2,0);
  return;
}



int __thiscall FUN_008f4d80(int *param_1,int param_2,uint param_3)

{
  char cVar1;
  void *pvVar2;
  HANDLE *ppvVar3;
  HANDLE h;
  int iVar4;
  uint uVar5;
  undefined auStack_60 [4];
  int iStack_5c;
  int iStack_58;
  ushort uStack_4e;
  int iStack_4c;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd41cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffff94);
  if (cVar1 != '\0') {
    h = (HANDLE)param_1[1];
    if (*(char *)((int)h + 0x29) == '\0') {
      if (*(int *)((int)h + 0x24) != 0) {
        if (PTR_FUN_03235c4c == (undefined *)0x0) {
          ExceptionList = local_c;
          return 0;
        }
        FUN_00840480("..\\..\\src\\msw\\bitmap.cpp",0x4f0,"wxBitmap::GetRawData",
                     "!GetBitmapData()->m_dib",L"GetRawData() may be called only once");
        ExceptionList = local_c;
        return 0;
      }
      pvVar2 = operator_new(0x18);
      uStack_4 = 0;
      if (pvVar2 == (void *)0x0) {
        ppvVar3 = (HANDLE *)0x0;
      }
      else {
        ppvVar3 = (HANDLE *)FUN_008f29a0(param_1);
      }
      uStack_4 = 0xffffffff;
      if (*ppvVar3 == (HANDLE)0x0) {
        FUN_008f2db0();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(ppvVar3);
      }
      *(HANDLE **)(param_1[1] + 0x24) = ppvVar3;
      h = *ppvVar3;
    }
    else if (h != (HANDLE)0x0) {
      h = *(HANDLE *)((int)h + 0x14);
    }
    iVar4 = GetObjectW(h,0x54,auStack_60);
    if (iVar4 == 0x54) {
      if (uStack_4e == param_3) {
        uVar5 = (int)((uint)uStack_4e * iStack_5c + 0x1f) >> 3 & 0xfffffffc;
        *(int *)(param_2 + 8) = iStack_5c;
        *(uint *)(param_2 + 0x10) = -uVar5;
        *(int *)(param_2 + 0xc) = iStack_58;
        if (1 < iStack_58) {
          iStack_4c = (iStack_58 + -1) * uVar5 + iStack_4c;
        }
        ExceptionList = local_c;
        return iStack_4c;
      }
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\msw\\bitmap.cpp",0x50f,"wxBitmap::GetRawData","Assert failure",
                     L"incorrect bitmap type in wxBitmap::GetRawData()");
        ExceptionList = local_c;
        return 0;
      }
    }
    else if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\bitmap.cpp",0x507,"wxBitmap::GetRawData","Assert failure",
                   L"failed to get DIBSECTION from a DIB?");
      ExceptionList = local_c;
      return 0;
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_008f4f70(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  param_1_00[2] = 0;
  *param_1_00 = wxMask::vftable;
  FUN_008f4110(param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



HICON FUN_008f4fd0(int *param_1,byte param_2,DWORD param_3,DWORD param_4)

{
  char cVar1;
  int iVar2;
  HBITMAP ho;
  HICON pHVar3;
  void *pvVar4;
  int *piVar5;
  HBITMAP pHVar6;
  HDC hdc;
  HDC hdc_00;
  BOOL BVar7;
  int iVar8;
  ICONINFO IStack_b8;
  ICONINFO IStack_a4;
  undefined **ppuStack_90;
  HBITMAP pHStack_88;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined4 uStack_78;
  undefined uStack_74;
  HDC pHStack_70;
  HGDIOBJ pvStack_6c;
  HDC pHStack_68;
  HGDIOBJ pvStack_64;
  HDC pHStack_60;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4255;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return (HICON)0x0;
  }
  iVar8 = param_1[1];
  if (iVar8 != 0) {
    if (*(char *)(iVar8 + 0x28) != '\0') {
      uStack_4 = 0;
      FUN_008f3b70();
      uStack_4._0_1_ = 1;
      pHStack_88 = (HBITMAP)0x0;
      uStack_74 = 1;
      uStack_84 = 0;
      uStack_78 = 0;
      uStack_7c = 0;
      uStack_80 = 0;
      FUN_00973530();
      pHVar6 = pHStack_88;
      pHStack_88 = (HBITMAP)0x0;
      FUN_008f2db0();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      ppuStack_90 = wxObject::vftable;
      FUN_0083e850();
      iVar8 = param_1[1];
      if (iVar8 == 0) {
        iVar2 = 0;
        iVar8 = 0;
      }
      else {
        iVar2 = *(int *)(iVar8 + 0xc);
        iVar8 = *(int *)(iVar8 + 8);
      }
      ho = CreateBitmap(iVar8,iVar2,1,1,(void *)0x0);
      IStack_b8.xHotspot = 0;
      IStack_b8.yHotspot = 0;
      IStack_b8.fIcon = (BOOL)param_2;
      if (param_2 == 0) {
        IStack_b8.xHotspot = param_3;
        IStack_b8.yHotspot = param_4;
      }
      IStack_b8.hbmColor = pHVar6;
      IStack_b8.hbmMask = ho;
      pHVar3 = CreateIconIndirect(&IStack_b8);
      if (ho != (HBITMAP)0x0) {
        DeleteObject(ho);
      }
      if (pHVar6 == (HBITMAP)0x0) {
        ExceptionList = local_c;
        return pHVar3;
      }
      DeleteObject(pHVar6);
      ExceptionList = local_c;
      return pHVar3;
    }
    if (iVar8 != 0) {
      piVar5 = *(int **)(iVar8 + 0x2c);
      goto LAB_008f5141;
    }
  }
  piVar5 = (int *)0x0;
LAB_008f5141:
  if (piVar5 == (int *)0x0) {
    pvVar4 = operator_new(0xc);
    uStack_4 = 2;
    if (pvVar4 == (void *)0x0) {
      piVar5 = (int *)0x0;
    }
    else {
      FUN_008f7e50();
      piVar5 = (int *)FUN_008f4f70();
    }
    uStack_4 = 0xffffffff;
  }
  IStack_a4.xHotspot = 0;
  IStack_a4.yHotspot = 0;
  IStack_a4.hbmMask = (HBITMAP)0x0;
  IStack_a4.hbmColor = (HBITMAP)0x0;
  IStack_a4.fIcon = (BOOL)param_2;
  if (param_2 == 0) {
    IStack_a4.xHotspot = param_3;
    IStack_a4.yHotspot = param_4;
  }
  pHVar6 = (HBITMAP)FUN_008f4580();
  uStack_4 = 3;
  if (param_1[1] == 0) {
    IStack_a4.hbmColor = (HBITMAP)0x0;
  }
  else {
    IStack_a4.hbmColor = *(HBITMAP *)(param_1[1] + 0x14);
  }
  IStack_a4.hbmMask = pHVar6;
  hdc = CreateCompatibleDC((HDC)0x0);
  pHStack_60 = hdc;
  hdc_00 = CreateCompatibleDC((HDC)0x0);
  ppuStack_90 = (undefined **)hdc_00;
  pHStack_68 = hdc;
  pvStack_64 = SelectObject(hdc,(HGDIOBJ)piVar5[2]);
  pHStack_70 = hdc_00;
  pvStack_6c = SelectObject(hdc_00,IStack_a4.hbmColor);
  iVar8 = param_1[1];
  uStack_4._0_1_ = 7;
  if (iVar8 == 0) {
    iVar2 = 0;
    iVar8 = 0;
  }
  else {
    iVar2 = *(int *)(iVar8 + 0xc);
    iVar8 = *(int *)(iVar8 + 8);
  }
  BVar7 = BitBlt(hdc_00,0,0,iVar8,iVar2,hdc,0,0,0x8800c6);
  if (BVar7 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4._0_1_ = 8;
      FUN_008423d0();
      uStack_4._0_1_ = 9;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4._0_1_ = 8;
      FUN_00842440();
      uStack_4._0_1_ = 7;
      FUN_0081b5bc();
    }
  }
  if (hdc_00 != (HDC)0x0) {
    SelectObject(hdc_00,pvStack_6c);
  }
  if (hdc != (HDC)0x0) {
    SelectObject(hdc,pvStack_64);
  }
  DeleteDC(hdc_00);
  uStack_4 = CONCAT31(uStack_4._1_3_,3);
  DeleteDC(hdc);
  pHVar3 = CreateIconIndirect(&IStack_a4);
  iVar8 = param_1[1];
  if ((iVar8 == 0) ||
     ((*(int *)(iVar8 + 0x2c) == 0 && ((iVar8 == 0 || (*(char *)(iVar8 + 0x28) == '\0')))))) {
    (**(code **)(*piVar5 + 4))();
  }
  if (pHVar6 != (HBITMAP)0x0) {
    DeleteObject(pHVar6);
  }
  ExceptionList = local_c;
  return pHVar3;
}



void FUN_008f53d0(undefined4 param_1)

{
  FUN_008f4fd0(param_1,1,0,0);
  return;
}



undefined4 * __thiscall
FUN_008f53f0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxBitmap::vftable;
  FUN_008f3450(param_1,param_2,param_3,0);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_008f5460(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  int *piVar2;
  undefined **ppuVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  int iVar6;
  undefined **local_1c;
  undefined4 local_18;
  undefined **ppuStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4290;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0083e850(DAT_0323f878 ^ (uint)&stack0xffffffd4);
  piVar2 = (int *)FUN_008f5d50(param_2);
  if ((piVar2 != (int *)0x0) &&
     (((ppuVar3 = (undefined **)(**(code **)*piVar2)(), ppuVar3 == &PTR_u_wxBitmapHandler_03238b28
       || ((ppuVar3[3] != (undefined *)0x0 &&
           (cVar1 = FUN_0048a047(&PTR_u_wxBitmapHandler_03238b28), cVar1 != '\0')))) ||
      ((ppuVar3[4] != (undefined *)0x0 &&
       (cVar1 = FUN_0048a047(&PTR_u_wxBitmapHandler_03238b28), cVar1 != '\0')))))) {
    puVar4 = (undefined4 *)operator_new(0x30);
    if (puVar4 == (undefined4 *)0x0) {
      puVar4 = (undefined4 *)0x0;
    }
    else {
      puVar4[1] = 1;
      puVar4[4] = 0;
      puVar4[3] = 0;
      puVar4[2] = 0;
      *puVar4 = wxBitmapRefData::vftable;
      puVar4[7] = 0;
      puVar4[6] = wxPalette::vftable;
      puVar4[8] = 0;
      puVar4[0xb] = 0;
      puVar4[5] = 0;
      puVar4[9] = 0;
      *(undefined *)(puVar4 + 10) = 0;
      *(undefined *)((int)puVar4 + 0x29) = 0;
    }
    *(undefined4 **)(param_1_00 + 4) = puVar4;
    uVar5 = (**(code **)(*piVar2 + 0x20))(param_1_00,param_1,param_2,0xffffffff,0xffffffff);
    ExceptionList = local_c;
    return uVar5;
  }
  local_18 = 0;
  local_1c = wxImage::vftable;
  local_4 = 0;
  cVar1 = FUN_00905910(param_1,param_2,0xffffffff);
  if ((cVar1 != '\0') && (cVar1 = FUN_008ff820(), cVar1 != '\0')) {
    iVar6 = FUN_00414f38(&local_1c,0xffffffff);
    local_4._0_1_ = 1;
    if (param_1_00 != iVar6) {
      FUN_0083ea60(iVar6);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    ppuStack_14 = wxObject::vftable;
    FUN_0083e850();
    local_4 = 0xffffffff;
    local_1c = wxObject::vftable;
    FUN_0083e850();
    ExceptionList = local_c;
    return 1;
  }
  local_4 = 0xffffffff;
  local_1c = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_008f5600(HDC param_1,undefined4 *param_2,int *param_3,HDC param_4)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  HDC hdcSrc;
  HDC hdc;
  BOOL BVar4;
  HBITMAP pHVar5;
  undefined4 *puVar6;
  int iVar7;
  int iStack_94;
  HDC pHStack_90;
  HGDIOBJ pvStack_8c;
  HGDIOBJ pvStack_7c;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4335;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar2 = (**(code **)(param_1->unused + 0x10))();
  if (((cVar2 != '\0') && (-1 < *param_3)) && (-1 < param_3[1])) {
    iVar7 = param_1[1].unused;
    if (iVar7 == 0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *(int *)(iVar7 + 8);
    }
    if (*param_3 + param_3[2] <= iVar3) {
      if (iVar7 == 0) {
        iVar7 = 0;
      }
      else {
        iVar7 = *(int *)(iVar7 + 0xc);
      }
      if (param_3[1] + param_3[3] <= iVar7) {
        FUN_008f53f0();
        uStack_4 = 1;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (cVar2 = FUN_00414f01(), cVar2 == '\0')) {
          FUN_00840480();
        }
        cVar2 = FUN_008f2600();
        if ((cVar2 != '\0') && (iStack_94 != 0)) {
          *(undefined *)(iStack_94 + 0x28) = 1;
        }
        hdcSrc = CreateCompatibleDC((HDC)0x0);
        hdc = CreateCompatibleDC((HDC)0x0);
        FUN_008f24a0();
        uStack_4._0_1_ = 4;
        if (pvStack_8c == (HGDIOBJ)0x0) {
          FUN_0043c211(&DAT_00d25fa0);
          cVar2 = FUN_00846b30(6);
          if (cVar2 != '\0') {
            FUN_0081c0f1();
            uStack_4._0_1_ = 5;
            FUN_008423d0();
            uStack_4._0_1_ = 6;
            GetLastError();
            FUN_00843700();
            GetLastError();
            FUN_00847d90();
            uStack_4._0_1_ = 5;
            FUN_00842440();
            uStack_4._0_1_ = 4;
            FUN_0081b5bc();
          }
        }
        BVar4 = BitBlt(hdc,0,0,param_3[2],param_3[3],param_4,*param_3,param_3[1],0xcc0020);
        if (BVar4 == 0) {
          FUN_0043c211(&DAT_00d25fa0);
          cVar2 = FUN_00846b30(6);
          if (cVar2 != '\0') {
            FUN_0081c0f1();
            uStack_4._0_1_ = 7;
            FUN_008423d0();
            uStack_4._0_1_ = 8;
            GetLastError();
            FUN_00843700();
            GetLastError();
            FUN_00847d90();
            uStack_4._0_1_ = 7;
            FUN_00842440();
            uStack_4._0_1_ = 4;
            FUN_0081b5bc();
          }
        }
        if (pHStack_90 != (HDC)0x0) {
          SelectObject(pHStack_90,pvStack_8c);
        }
        if ((param_1[1].unused != 0) && (*(int *)(param_1[1].unused + 0x2c) != 0)) {
          pHVar5 = CreateBitmap(param_3[2],param_3[3],1,1,(void *)0x0);
          FUN_008f24a0();
          FUN_008f24a0();
          uStack_4._0_1_ = 10;
          BVar4 = BitBlt(hdc,0,0,param_3[2],param_3[3],hdcSrc,*param_3,param_3[1],0xcc0020);
          if (BVar4 == 0) {
            FUN_0043c211(&DAT_00d25fa0);
            cVar2 = FUN_00846b30(6);
            if (cVar2 != '\0') {
              FUN_0081c0f1();
              uStack_4._0_1_ = 0xb;
              FUN_008423d0();
              uStack_4._0_1_ = 0xc;
              GetLastError();
              FUN_00843700();
              GetLastError();
              FUN_00847d90();
              uStack_4._0_1_ = 0xb;
              FUN_00842440();
              uStack_4._0_1_ = 10;
              FUN_0081b5bc();
            }
          }
          puVar6 = (undefined4 *)operator_new(0xc);
          if (puVar6 != (undefined4 *)0x0) {
            puVar6[1] = 0;
            *puVar6 = wxMask::vftable;
            puVar6[2] = pHVar5;
          }
          FUN_008f2640();
          if (pHStack_90 != (HDC)0x0) {
            SelectObject(pHStack_90,pvStack_8c);
          }
          if (param_1 != (HDC)0x0) {
            SelectObject(param_1,pvStack_7c);
          }
        }
        FUN_008f2970();
        DeleteDC(hdc);
        DeleteDC(hdcSrc);
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_0083e850();
        ExceptionList = local_c;
        return param_2;
      }
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480();
  }
  *param_2 = wxObject::vftable;
  iVar7 = DAT_03238ccc;
  param_2[1] = DAT_03238ccc;
  if (iVar7 != 0) {
    piVar1 = (int *)(iVar7 + 4);
    *piVar1 = *piVar1 + 1;
  }
  *param_2 = wxBitmap::vftable;
  ExceptionList = local_c;
  return param_2;
}



undefined4 * __thiscall FUN_008f5b40(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxBitmap::vftable;
  FUN_008f5460(param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_008f5ba0(int param_1,undefined4 param_2,undefined4 param_3)

{
  HDC hdc;
  HGDIOBJ pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4370;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  hdc = CreateCompatibleDC((HDC)0x0);
  uStack_4 = 0;
  if (*(int *)(param_1 + 4) == 0) {
    pvVar1 = (HGDIOBJ)0x0;
  }
  else {
    pvVar1 = *(HGDIOBJ *)(*(int *)(param_1 + 4) + 0x14);
  }
  pvVar1 = SelectObject(hdc,pvVar1);
  uStack_4 = CONCAT31(uStack_4._1_3_,1);
  FUN_008f5600(param_2,param_3,hdc);
  if (hdc != (HDC)0x0) {
    SelectObject(hdc,pvVar1);
  }
  DeleteDC(hdc);
  ExceptionList = local_c;
  return param_2;
}



undefined ** FUN_008f5c50(void)

{
  return &PTR_u_wxBMPFileHandler_03238c34;
}



undefined ** FUN_008f5c60(void)

{
  return &PTR_u_wxBMPResourceHandler_03238c4c;
}



undefined ** FUN_008f5c70(void)

{
  return &PTR_u_wxICOFileHandler_03238c64;
}



undefined ** FUN_008f5c80(void)

{
  return &PTR_u_wxICOResourceHandler_03238c7c;
}



undefined4 * __thiscall
FUN_008f5c90(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxwxGDIImageHandlerListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 __fastcall FUN_008f5d10(int param_1)

{
  if (*(int **)(param_1 + 4) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 4) + 8))();
    *(undefined4 *)(*(int *)(param_1 + 4) + 0x14) = 0;
  }
  return 1;
}



int __fastcall FUN_008f5d40(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if (iVar1 == 0) {
    return iVar1;
  }
  return *(int *)(iVar1 + 0x14);
}



int FUN_008f5d50(int param_1)

{
  int *piVar1;
  int iVar2;
  
  iVar2 = DAT_03238ca0;
  if (DAT_03238ca0 != 0) {
    do {
      if (*(int *)(*(int *)(iVar2 + 8) + 0x50) == param_1) {
        return *(int *)(iVar2 + 8);
      }
      piVar1 = (int *)(iVar2 + 0xc);
      iVar2 = *piVar1;
    } while (*piVar1 != 0);
  }
  return 0;
}



void FUN_008f5d80(void)

{
  int iVar1;
  int iVar2;
  
  iVar2 = DAT_03238ca0;
  if (DAT_03238ca0 != 0) {
    do {
      iVar1 = *(int *)(iVar2 + 0xc);
      if (*(int **)(iVar2 + 8) != (int *)0x0) {
        (**(code **)(**(int **)(iVar2 + 8) + 4))(1);
      }
      FUN_0086b060(iVar2);
      iVar2 = iVar1;
    } while (iVar1 != 0);
  }
  return;
}



undefined4 * __thiscall
FUN_008f5dc0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd43a3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxGDIImageHandler::vftable;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[9] = 0;
  param_1_00[0x11] = 7;
  param_1_00[0x10] = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  *(undefined2 *)(param_1_00 + 0xc) = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  param_1_00[0x12] = 0;
  param_1_00[0x14] = param_3;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __fastcall FUN_008f5e70(undefined4 *param_1)

{
  uint uVar1;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1960;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d291d4);
  local_4 = 0;
  FUN_004325b6(L"Windows bitmap file");
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_008f5dc0(local_54,local_30,1);
  *param_1 = wxBitmapHandler::vftable;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50,uVar1);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  *param_1 = wxBMPFileHandler::vftable;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __fastcall FUN_008f5f50(undefined4 *param_1)

{
  uint uVar1;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1960;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  FUN_004325b6(L"Windows bitmap resource");
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_008f5dc0(local_54,local_30,2);
  *param_1 = wxBitmapHandler::vftable;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50,uVar1);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  *param_1 = wxBMPResourceHandler::vftable;
  ExceptionList = local_c;
  return param_1;
}



uint __thiscall
FUN_008f6030(int *param_1_00,undefined4 *param_1,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  undefined **in_EAX;
  undefined **ppuVar1;
  uint uVar2;
  
  if (param_1 != (undefined4 *)0x0) {
    ppuVar1 = (undefined **)(**(code **)*param_1)();
    if (ppuVar1 == &PTR_u_wxIcon_0323a18c) {
LAB_008f6079:
      uVar2 = (**(code **)(*param_1_00 + 0x1c))(param_1,param_3,param_4,param_5,param_6);
      return uVar2;
    }
    in_EAX = ppuVar1;
    if (ppuVar1[3] != (undefined *)0x0) {
      in_EAX = (undefined **)FUN_0048a047(&PTR_u_wxIcon_0323a18c);
      if ((char)in_EAX != '\0') goto LAB_008f6079;
    }
    if (ppuVar1[4] != (undefined *)0x0) {
      in_EAX = (undefined **)FUN_0048a047(&PTR_u_wxIcon_0323a18c);
      if ((char)in_EAX != '\0') goto LAB_008f6079;
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    in_EAX = (undefined **)
             FUN_00840480("..\\..\\src\\msw\\gdiimage.cpp",0x81,"wxIconHandler::Load",&DAT_00d44f38,
                          L"wxIconHandler only works with icons");
  }
  return (uint)in_EAX & 0xffffff00;
}



undefined4 * __fastcall FUN_008f60d0(undefined4 *param_1)

{
  uint uVar1;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1960;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d44fc8);
  local_4 = 0;
  FUN_004325b6(L"ICO icon file");
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_008f5dc0(local_54,local_30,3);
  *param_1 = wxIconHandler::vftable;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50,uVar1);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  *param_1 = wxICOFileHandler::vftable;
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_008f61b0(undefined4 param_1_00,byte param_1)

{
  FUN_008f2ca0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_008f61d0(undefined4 *param_1)

{
  uint uVar1;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1960;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d44fc8);
  local_4 = 0;
  FUN_004325b6(L"ICO resource");
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_008f5dc0(local_54,local_30,4);
  *param_1 = wxIconHandler::vftable;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50,uVar1);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  *param_1 = wxICOResourceHandler::vftable;
  ExceptionList = local_c;
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x54);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_008f5e70(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x54);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_008f5f50(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x54);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_008f60d0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x54);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_008f61d0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_008f6470(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd43ec;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x54);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_008f5f50(uVar1);
  }
  local_4 = 0xffffffff;
  FUN_0086ad60(uVar3);
  pvVar2 = operator_new(0x54);
  local_4 = 1;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_008f5e70();
  }
  local_4 = 0xffffffff;
  FUN_0086ad60(uVar3);
  pvVar2 = operator_new(0x54);
  local_4 = 2;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_008f61d0();
  }
  local_4 = 0xffffffff;
  FUN_0086ad60(uVar3);
  pvVar2 = operator_new(0x54);
  local_4 = 3;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_008f60d0();
  }
  local_4 = 0xffffffff;
  FUN_0086ad60(uVar3);
  ExceptionList = local_c;
  return;
}



undefined4 FUN_008f6580(int *param_1,int param_2)

{
  char cVar1;
  HINSTANCE hInstance;
  HBITMAP pHVar2;
  undefined4 uVar3;
  HANDLE h;
  int iVar4;
  void *pvVar5;
  LPCWSTR lpBitmapName;
  undefined auStack_ec [4];
  undefined4 uStack_e8;
  undefined4 uStack_e4;
  ushort uStack_da;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4452;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(uint *)(param_2 + 0x18) < 8) {
    lpBitmapName = (LPCWSTR)(param_2 + 4);
  }
  else {
    lpBitmapName = *(LPCWSTR *)(param_2 + 4);
  }
  hInstance = (HINSTANCE)FUN_008a65e0();
  pHVar2 = LoadBitmapW(hInstance,lpBitmapName);
  FUN_0083eaa0();
  *(HBITMAP *)(param_1[1] + 0x14) = pHVar2;
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 == '\0') {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_00432231();
      uStack_4._0_1_ = 1;
      FUN_008423d0();
      uStack_4._0_1_ = 3;
      FUN_00848860();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    uVar3 = 0;
  }
  else {
    h = (HANDLE)param_1[1];
    if (h != (HANDLE)0x0) {
      h = *(HANDLE *)((int)h + 0x14);
    }
    iVar4 = GetObjectW(h,0x18,auStack_ec);
    if (iVar4 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 4;
        FUN_008423d0();
        uStack_4._0_1_ = 5;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = CONCAT31(uStack_4._1_3_,4);
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    FUN_0083eaa0();
    *(undefined4 *)(param_1[1] + 8) = uStack_e8;
    FUN_0083eaa0();
    *(undefined4 *)(param_1[1] + 0xc) = uStack_e4;
    FUN_0083eaa0();
    *(uint *)(param_1[1] + 0x10) = (uint)uStack_da;
    pvVar5 = operator_new(0xc);
    uStack_4 = 6;
    if (pvVar5 != (void *)0x0) {
      FUN_008f7e50();
      FUN_008f4f70();
    }
    uStack_4 = 0xffffffff;
    FUN_008f2640();
    uVar3 = 1;
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined FUN_008f6830(int param_1,undefined4 param_2)

{
  char cVar1;
  undefined uVar2;
  int local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4488;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = 0;
  if (param_1 != 0) {
    local_24 = 0;
    local_10 = 1;
    local_20 = 0;
    local_14 = 0;
    local_18 = 0;
    local_1c = 0;
    FUN_00972980(param_2);
    local_4 = 0;
    if (local_24 != 0) {
      cVar1 = FUN_008f2bc0(&local_24);
      if (cVar1 != '\0') {
        uVar2 = 1;
      }
    }
    local_4 = 0xffffffff;
    FUN_008f2db0();
    ExceptionList = local_c;
    return uVar2;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\gdiimage.cpp",0x167,"wxBMPFileHandler::LoadFile","bitmap",
                 L"NULL bitmap in LoadFile",DAT_0323f878 ^ (uint)&stack0xffffffd4);
  }
  ExceptionList = local_c;
  return 0;
}



undefined FUN_008f6910(int param_1,undefined4 param_2)

{
  undefined uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4488;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 != 0) {
    if (*(int *)(param_1 + 4) == 0) {
      uVar2 = 0;
    }
    else {
      uVar2 = *(undefined4 *)(*(int *)(param_1 + 4) + 0x14);
    }
    FUN_00973790(uVar2);
    local_4 = 0;
    uVar1 = FUN_00972ac0(param_2);
    local_4 = 0xffffffff;
    FUN_008f2db0();
    ExceptionList = local_c;
    return uVar1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\gdiimage.cpp",0x177,"wxBMPFileHandler::SaveFile","bitmap",
                 L"NULL bitmap in SaveFile",DAT_0323f878 ^ (uint)&stack0xffffffd4);
  }
  ExceptionList = local_c;
  return 0;
}



int * FUN_008f69f0(int *param_1,HICON param_2)

{
  char cVar1;
  BOOL BVar2;
  int iVar3;
  ICONINFO local_9c [2];
  undefined auStack_74 [4];
  int iStack_70;
  int iStack_6c;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd44c3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = 0;
  param_1[1] = 0;
  if (param_2 != (HICON)0x0) {
    BVar2 = GetIconInfo(param_2,local_9c);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    else {
      if (local_9c[0].hbmMask != (HBITMAP)0x0) {
        iVar3 = GetObjectW(local_9c[0].hbmMask,0x18,auStack_74);
        if (iVar3 != 0) {
          *param_1 = iStack_70;
          param_1[1] = iStack_6c;
        }
        DeleteObject(local_9c[0].hbmMask);
      }
      if (local_9c[0].hbmColor != (HBITMAP)0x0) {
        DeleteObject(local_9c[0].hbmColor);
      }
    }
    if (*param_1 != 0) {
      ExceptionList = local_c;
      return param_1;
    }
  }
  iVar3 = GetSystemMetrics(0xb);
  *param_1 = iVar3;
  iVar3 = GetSystemMetrics(0xc);
  param_1[1] = iVar3;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall
FUN_008f6b90(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  undefined4 uVar1;
  
  FUN_00820e3f(param_6,param_2,4);
  FUN_00820e3f(param_5,param_2,3);
  FUN_00820e3f(param_4,param_2,2);
  FUN_00820e3f(param_3,param_2,1);
  uVar1 = FUN_008854f0(param_4,param_5,param_6,param_2);
  FUN_0084d410(param_1_00,param_1,uVar1);
  return;
}



void FUN_008f6c10(int *param_1,int param_2,undefined4 param_3,int param_4,int param_5)

{
  int iVar1;
  int iVar2;
  HICON pHVar3;
  char cVar4;
  int iVar5;
  undefined *puVar6;
  UINT UVar7;
  undefined4 *puVar8;
  HINSTANCE hInst;
  int *piVar9;
  UINT nIconIndex;
  undefined4 uStack_124;
  undefined4 uStack_120;
  char *pcStack_11c;
  undefined *puStack_118;
  HICON local_ec;
  undefined4 *local_e8;
  undefined local_cc [4];
  uint local_c8;
  undefined4 uStack_b8;
  uint local_b4;
  void *local_b0;
  undefined local_58 [4];
  undefined4 local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  uint local_30;
  int local_20;
  uint local_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd45b0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_ec;
  ExceptionList = &local_c;
  FUN_0083e850();
  local_ec = (HICON)0x0;
  nIconIndex = 0;
  local_40 = 7;
  local_44 = 0;
  local_54 = (undefined4 *)((uint)local_54._2_2_ << 0x10);
  FID_conflict_assign();
  local_3c = (void *)0x0;
  local_e8 = (undefined4 *)&stack0xfffffefc;
  local_4 = 0;
  FUN_00852730();
  local_4._0_1_ = 1;
  if ((local_20 != *(int *)(param_2 + 0x14)) || (iVar5 = FUN_00850760(), iVar5 != 0)) {
    nIconIndex = FUN_00a4b994();
    local_e8 = (undefined4 *)&stack0xfffffef8;
    puVar6 = (undefined *)FUN_00852900();
    local_4._0_1_ = 2;
    if (local_58 != puVar6) {
      FID_conflict_assign();
    }
    local_4._0_1_ = 1;
    _free(local_b0);
    if (7 < local_b4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  iVar5 = GetSystemMetrics(0xb);
  if ((param_4 == iVar5) && (iVar5 = GetSystemMetrics(0xc), param_5 == iVar5)) {
    puVar8 = local_54;
    if (local_40 < 8) {
      puVar8 = &local_54;
    }
    puStack_118 = (undefined *)0x8f6dc3;
    UVar7 = ExtractIconExW((LPCWSTR)puVar8,nIconIndex,&local_ec,(HICON *)0x0,1);
    if (UVar7 == 0) {
      local_e8 = &uStack_124;
      FUN_0043c211(&DAT_00d25fa0);
      cVar4 = FUN_00846b30(7);
      if (cVar4 != '\0') {
        FUN_0081c0f1();
        local_4._0_1_ = 3;
        FUN_004325b6();
        local_e8 = (undefined4 *)&stack0xfffffef4;
        FUN_00432231();
        puStack_118 = (undefined *)0x1bd;
        pcStack_11c = "..\\..\\src\\msw\\gdiimage.cpp";
        uStack_120 = 7;
        local_4._0_1_ = 5;
        uStack_124 = 0x8f6e4c;
        FUN_008423d0();
        local_4._0_1_ = 7;
        puStack_118 = (undefined *)0x8f6e6d;
        FUN_0084dc30();
        local_4._0_1_ = 4;
        FUN_00842440();
        FUN_0040159c();
        local_4._0_1_ = 1;
        FUN_0081b5bc();
      }
    }
  }
  else {
    iVar5 = GetSystemMetrics(0x31);
    if ((param_4 == iVar5) && (iVar5 = GetSystemMetrics(0x32), param_5 == iVar5)) {
      puVar8 = local_54;
      if (local_40 < 8) {
        puVar8 = &local_54;
      }
      puStack_118 = (undefined *)0x8f6ee8;
      UVar7 = ExtractIconExW((LPCWSTR)puVar8,nIconIndex,(HICON *)0x0,&local_ec,1);
      if (UVar7 == 0) {
        local_e8 = &uStack_124;
        FUN_0043c211(&DAT_00d25fa0);
        cVar4 = FUN_00846b30(7);
        if (cVar4 != '\0') {
          FUN_0081c0f1();
          local_4._0_1_ = 8;
          FUN_004325b6();
          local_e8 = (undefined4 *)&stack0xfffffef4;
          FUN_00432231();
          puStack_118 = (undefined *)0x1c8;
          pcStack_11c = "..\\..\\src\\msw\\gdiimage.cpp";
          uStack_120 = 7;
          local_4._0_1_ = 10;
          uStack_124 = 0x8f6f71;
          FUN_008423d0();
          local_4._0_1_ = 0xc;
          puStack_118 = (undefined *)0x8f6f92;
          FUN_0084dc30();
          local_4._0_1_ = 9;
          FUN_00842440();
          FUN_0040159c();
          local_4._0_1_ = 1;
          FUN_0081b5bc();
        }
      }
    }
  }
  if (local_ec == (HICON)0x0) {
    puVar8 = local_54;
    if (local_40 < 8) {
      puVar8 = &local_54;
    }
    hInst = (HINSTANCE)FUN_008a65e0();
    local_ec = ExtractIconW(hInst,(LPCWSTR)puVar8,nIconIndex);
    if (local_ec == (HICON)0x0) {
      local_e8 = &uStack_124;
      FUN_0043c211(&DAT_00d25fa0);
      cVar4 = FUN_00846b30(1);
      if (cVar4 != '\0') {
        FUN_0081c0f1();
        local_4._0_1_ = 0xd;
        FUN_0043c211();
        local_e8 = (undefined4 *)&stack0xfffffef4;
        FUN_00432231();
        puStack_118 = (undefined *)0x1d9;
        pcStack_11c = "..\\..\\src\\msw\\gdiimage.cpp";
        uStack_120 = 1;
        local_4._0_1_ = 0xf;
        uStack_124 = 0x8f7082;
        FUN_008423d0();
        local_4._0_1_ = 0x10;
        GetLastError();
        puStack_118 = local_cc;
        pcStack_11c = (char *)0x8f70a3;
        FUN_0084d140();
        local_4._0_1_ = 0x11;
        FUN_00848860();
        local_4._0_1_ = 0xe;
        FUN_00842440();
        _free(local_b0);
        if (7 < local_b4) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        local_b4 = 7;
        uStack_b8 = 0;
        local_c8 = local_c8 & 0xffff0000;
        local_4._0_1_ = 1;
        FUN_0081b5bc();
      }
      _free(pvStack_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_1c = 7;
      local_20 = 0;
      local_30 = local_30 & 0xffff0000;
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      goto LAB_008f734d;
    }
  }
  piVar9 = (int *)FUN_008f69f0();
  pHVar3 = local_ec;
  iVar5 = *piVar9;
  iVar1 = piVar9[1];
  if (((param_4 == -1) || (param_4 == iVar5)) && ((param_5 == -1 || (param_5 == iVar1)))) {
    FUN_0083eaa0();
    *(HICON *)(param_1[1] + 0x14) = pHVar3;
    FUN_0083eaa0();
    iVar2 = param_1[1];
    *(int *)(iVar2 + 8) = iVar5;
    *(int *)(iVar2 + 0xc) = iVar1;
    (**(code **)(*param_1 + 0x10))();
    _free(pvStack_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  else {
    local_e8 = &uStack_124;
    FUN_0043c211(&DAT_00d25fa0);
    cVar4 = FUN_00846b30(7);
    if (cVar4 != '\0') {
      FUN_0081c0f1();
      local_4._0_1_ = 0x12;
      FUN_004325b6();
      local_4._0_1_ = 0x13;
      puStack_118 = (undefined *)0x8f7228;
      FUN_008423d0();
      puStack_118 = local_cc;
      local_4._0_1_ = 0x14;
      pcStack_11c = (char *)0x8f7253;
      FUN_008f6b90();
      local_4._0_1_ = 0x13;
      FUN_00842440();
      FUN_0040159c();
      local_4._0_1_ = 1;
      FUN_0081b5bc();
    }
    DestroyIcon(local_ec);
    FUN_0040159c();
    FUN_0040159c();
  }
LAB_008f734d:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008f7380(int *param_1,int param_2,undefined4 param_3,int param_4,int param_5)

{
  bool bVar1;
  LPCWSTR pWVar2;
  HINSTANCE pHVar3;
  HICON pHVar4;
  int iVar5;
  uint uVar6;
  UINT type;
  UINT fuLoad;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  if ((param_4 == -1) && (param_5 == -1)) {
    bVar1 = false;
  }
  else {
    bVar1 = true;
  }
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_008f73d7:
    if (bVar1) {
      if (*(uint *)(param_2 + 0x18) < 8) {
        pWVar2 = (LPCWSTR)(param_2 + 4);
      }
      else {
        pWVar2 = *(LPCWSTR *)(param_2 + 4);
      }
      fuLoad = 0;
      type = 1;
      pHVar3 = (HINSTANCE)FUN_008a65e0();
      pHVar4 = (HICON)LoadImageW(pHVar3,pWVar2,type,param_4,param_5,fuLoad);
      goto LAB_008f7421;
    }
  }
  else if (bVar1) {
    if ((param_4 == -1) || (param_5 == -1)) {
      FUN_00840480("..\\..\\src\\msw\\gdiimage.cpp",0x1ff,"wxICOResourceHandler::LoadIcon",
                   "!hasSize || (desiredWidth != -1 && desiredHeight != -1)",
                   L"width and height should be either both -1 or not");
    }
    goto LAB_008f73d7;
  }
  if (*(uint *)(param_2 + 0x18) < 8) {
    pWVar2 = (LPCWSTR)(param_2 + 4);
  }
  else {
    pWVar2 = *(LPCWSTR *)(param_2 + 4);
  }
  pHVar3 = (HINSTANCE)FUN_008a65e0();
  pHVar4 = LoadIconW(pHVar3,pWVar2);
LAB_008f7421:
  if ((pHVar4 == (HICON)0x0) && (!bVar1)) {
    for (uVar6 = 0; uVar6 < 4; uVar6 = uVar6 + 1) {
      iVar5 = FUN_008507a0((&PTR_u_wxICON_QUESTION_00d45378)[uVar6 * 2]);
      if (iVar5 == 0) {
        pHVar4 = LoadIconW((HINSTANCE)0x0,(LPCWSTR)(&DAT_00d4537c)[uVar6 * 2]);
        break;
      }
    }
  }
  FUN_008f69f0(&uStack_8,pHVar4);
  FUN_0083eaa0();
  iVar5 = param_1[1];
  *(undefined4 *)(iVar5 + 8) = uStack_8;
  *(undefined4 *)(iVar5 + 0xc) = uStack_4;
  FUN_0083eaa0();
  *(HICON *)(param_1[1] + 0x14) = pHVar4;
  (**(code **)(*param_1 + 0x10))();
  return;
}



undefined ** FUN_008f74b0(void)

{
  return &PTR_u_wxGDIObject_03238cb0;
}



void __thiscall FUN_008f74c0(int *param_1_00,int *param_1,int *param_2)

{
  *param_1_00 = *param_1;
  param_1_00[1] = param_1[1];
  param_1_00[2] = *param_2 - *param_1;
  param_1_00[3] = param_2[1] - param_1[1];
  if (param_1_00[2] < 0) {
    param_1_00[2] = -param_1_00[2];
    *param_1_00 = *param_2;
  }
  param_1_00[2] = param_1_00[2] + 1;
  if (param_1_00[3] < 0) {
    param_1_00[3] = -param_1_00[3];
    param_1_00[1] = param_2[1];
  }
  param_1_00[3] = param_1_00[3] + 1;
  return;
}



int * __thiscall FUN_008f7520(int *param_1_00,int param_1,int param_2)

{
  int iVar1;
  
  iVar1 = param_1_00[2];
  if (iVar1 < param_1 * -2) {
    *param_1_00 = *param_1_00 + iVar1 / 2;
    param_1_00[2] = 0;
  }
  else {
    *param_1_00 = *param_1_00 - param_1;
    param_1_00[2] = iVar1 + param_1 * 2;
  }
  iVar1 = param_1_00[3];
  if (iVar1 < param_2 * -2) {
    param_1_00[1] = param_1_00[1] + iVar1 / 2;
    param_1_00[3] = 0;
    return param_1_00;
  }
  param_1_00[1] = param_1_00[1] - param_2;
  param_1_00[3] = iVar1 + param_2 * 2;
  return param_1_00;
}



undefined4 __thiscall FUN_008f7580(int *param_1_00,int param_1,int param_2)

{
  if (*param_1_00 <= param_1) {
    if (((param_1_00[1] <= param_2) && (param_2 - param_1_00[1] < param_1_00[3])) &&
       (param_1 - *param_1_00 < param_1_00[2])) {
      return 1;
    }
  }
  return 0;
}



undefined4 __thiscall FUN_008f75c0(int param_1_00,int param_1)

{
  if ((((*(char *)(param_1_00 + 0xc) == *(char *)(param_1 + 0xc)) &&
       (*(char *)(param_1_00 + 0xd) == *(char *)(param_1 + 0xd))) &&
      (*(char *)(param_1_00 + 0xf) == *(char *)(param_1 + 0xf))) &&
     ((*(char *)(param_1_00 + 0xe) == *(char *)(param_1 + 0xe) &&
      (*(char *)(param_1_00 + 0x10) == *(char *)(param_1 + 0x10))))) {
    return 1;
  }
  return 0;
}



undefined4 __fastcall FUN_008f7600(int *param_1)

{
  int iVar1;
  
  iVar1 = (**(code **)(*param_1 + 0x40))();
  if (0x6e < iVar1) {
    iVar1 = (**(code **)(*param_1 + 0x40))();
    if (iVar1 < 0x75) {
      return 1;
    }
  }
  return 0;
}



void __fastcall FUN_008f7630(undefined4 *param_1)

{
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



void __thiscall FUN_008f7640(int *param_1_00,int *param_1)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  
  piVar5 = param_1;
  if ((param_1_00[2] != 0) && (param_1_00[3] != 0)) {
    piVar1 = param_1 + 2;
    if ((*piVar1 != 0) && (piVar2 = param_1 + 3, *piVar2 != 0)) {
      iVar3 = *param_1_00;
      iVar7 = *param_1;
      param_1 = (int *)iVar3;
      if (iVar7 <= iVar3) {
        param_1 = (int *)iVar7;
      }
      iVar4 = param_1_00[1];
      iVar6 = piVar5[1];
      iVar8 = iVar4;
      if (iVar6 <= iVar4) {
        iVar8 = iVar6;
      }
      iVar6 = iVar6 + *piVar2;
      iVar9 = param_1_00[3] + iVar4;
      if (param_1_00[3] + iVar4 <= iVar6) {
        iVar9 = iVar6;
      }
      iVar7 = *piVar1 + iVar7;
      if (iVar7 < param_1_00[2] + iVar3) {
        iVar7 = param_1_00[2] + iVar3;
      }
      param_1_00[1] = iVar8;
      *param_1_00 = (int)param_1;
      param_1_00[2] = iVar7 - (int)param_1;
      param_1_00[3] = iVar9 - iVar8;
    }
    return;
  }
  *param_1_00 = *param_1;
  param_1_00[1] = param_1[1];
  param_1_00[2] = param_1[2];
  param_1_00[3] = param_1[3];
  return;
}



undefined4 __thiscall FUN_008f76e0(int *param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar1 = *param_1;
  iVar2 = *param_1_00;
  iVar3 = param_1[1];
  if (iVar2 <= iVar1) {
    iVar4 = param_1_00[1];
    if (((iVar4 <= iVar3) && (iVar3 - iVar4 < param_1_00[3])) && (iVar1 - iVar2 < param_1_00[2])) {
      iVar1 = iVar1 + -1 + param_1[2];
      iVar3 = param_1[3] + -1 + iVar3;
      if (((iVar2 <= iVar1) && (iVar4 <= iVar3)) &&
         ((iVar3 - iVar4 < param_1_00[3] && (iVar1 - iVar2 < param_1_00[2])))) {
        return 1;
      }
    }
  }
  return 0;
}



void __thiscall FUN_008f7750(int *param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  iVar2 = *param_1_00 + -1 + param_1_00[2];
  iVar1 = param_1_00[3] + -1 + param_1_00[1];
  if (*param_1_00 < *param_1) {
    *param_1_00 = *param_1;
  }
  if (param_1_00[1] < param_1[1]) {
    param_1_00[1] = param_1[1];
  }
  iVar3 = param_1[2] + -1 + *param_1;
  if (iVar3 < iVar2) {
    iVar2 = iVar3;
  }
  iVar3 = param_1[3] + -1 + param_1[1];
  if (iVar3 < iVar1) {
    iVar1 = iVar3;
  }
  iVar3 = (iVar2 - *param_1_00) + 1;
  iVar2 = (iVar1 - param_1_00[1]) + 1;
  param_1_00[2] = iVar3;
  param_1_00[3] = iVar2;
  if ((iVar3 < 1) || (iVar2 < 1)) {
    param_1_00[3] = 0;
    param_1_00[2] = 0;
  }
  return;
}



undefined4 * __thiscall FUN_008f77d0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxStockGDI::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_008f77f0(void)

{
  uint uVar1;
  
  uVar1 = 0;
  do {
    if (*(int **)((int)&DAT_032bf2b8 + uVar1) != (int *)0x0) {
      (**(code **)(**(int **)((int)&DAT_032bf2b8 + uVar1) + 4))(1);
      *(undefined4 *)((int)&DAT_032bf2b8 + uVar1) = 0;
    }
    uVar1 = uVar1 + 4;
  } while (uVar1 < 0x98);
  return;
}



void __fastcall FUN_008f7820(undefined4 *param_1)

{
  int iVar1;
  void **ppvVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd45e8;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  iVar1 = param_1[3];
  local_4 = 0;
  ppvVar2 = &local_c;
  local_c = ExceptionList;
  for (; ExceptionList = ppvVar2, iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if (*(int **)(iVar1 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar1 + 8) + 4))(1,uVar3);
    }
    ppvVar2 = (void **)ExceptionList;
  }
  local_4 = 0xffffffff;
  *param_1 = wxList::vftable;
  FUN_0086ade0();
  ExceptionList = local_c;
  return;
}



void FUN_008f78a0(undefined4 *param_1)

{
  undefined4 local_8;
  undefined4 local_4;
  
  FUN_0095de70(&local_8,&local_4);
  *param_1 = local_8;
  param_1[1] = local_4;
  return;
}



void FUN_008f78d0(undefined4 *param_1)

{
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  FUN_0095dc20(&local_10,&local_c,&local_8,&local_4);
  *param_1 = local_10;
  param_1[1] = local_c;
  param_1[2] = local_8;
  param_1[3] = local_4;
  return;
}



void FUN_008f7910(undefined4 *param_1)

{
  undefined4 local_8;
  undefined4 local_4;
  
  FUN_0095deb0(&local_8,&local_4);
  *param_1 = local_8;
  param_1[1] = local_4;
  return;
}



bool __thiscall FUN_008f7940(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 8);
  FUN_008f7750(param_1);
  return iVar1 != 0;
}



int * __thiscall FUN_008f7980(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  bool bVar2;
  void **ppvVar3;
  char cVar4;
  uint uVar5;
  int iVar6;
  bool bVar7;
  int *piVar8;
  int *piStack_24;
  undefined **appuStack_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4618;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  bVar7 = false;
  iVar1 = *(int *)(param_1_00 + 0xc);
  ppvVar3 = &local_c;
  local_c = ExceptionList;
  do {
    ExceptionList = ppvVar3;
    if (iVar1 == 0) {
      piVar8 = (int *)0x0;
      FUN_0095d7e0(param_1,param_2);
      uStack_4 = 0;
      if ((piStack_24 != (int *)0x0) && (cVar4 = (**(code **)(*piStack_24 + 4))(), cVar4 != '\0')) {
        piVar8 = (int *)operator_new(8);
        if (piVar8 == (int *)0x0) {
          piVar8 = (int *)0x0;
        }
        else {
          *piVar8 = (int)wxObject::vftable;
          piVar8[1] = (int)piStack_24;
          if (piStack_24 != (int *)0x0) {
            piStack_24[1] = piStack_24[1] + 1;
          }
          *piVar8 = (int)wxBrush::vftable;
        }
        FUN_0086ad60(piVar8);
      }
      uStack_4 = 0xffffffff;
      FUN_008f7630();
      ExceptionList = local_c;
      return piVar8;
    }
    piVar8 = *(int **)(iVar1 + 8);
    iVar6 = (**(code **)(*piVar8 + 0x40))(uVar5);
    if (iVar6 == param_2) {
      iVar6 = (**(code **)(*piVar8 + 0x3c))(appuStack_20);
      bVar7 = true;
      if ((((*(char *)(iVar6 + 0xc) != *(char *)(param_1 + 0xc)) ||
           (*(char *)(iVar6 + 0xd) != *(char *)(param_1 + 0xd))) ||
          (*(char *)(iVar6 + 0xf) != *(char *)(param_1 + 0xf))) ||
         ((*(char *)(iVar6 + 0xe) != *(char *)(param_1 + 0xe) ||
          (bVar2 = true, *(char *)(iVar6 + 0x10) != *(char *)(param_1 + 0x10))))) goto LAB_008f7a10;
    }
    else {
LAB_008f7a10:
      bVar2 = false;
    }
    if (bVar7) {
      bVar7 = false;
      appuStack_20[0] = wxObject::vftable;
      FUN_0083e850();
    }
    if (bVar2) {
      ExceptionList = local_c;
      return piVar8;
    }
    iVar1 = *(int *)(iVar1 + 0xc);
    ppvVar3 = (void **)ExceptionList;
  } while( true );
}



undefined4 * __thiscall FUN_008f7ad0(undefined4 *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxCursor::vftable;
  FUN_00974400(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



int FUN_008f7b30(int param_1)

{
  void *pvVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4661;
  local_c = ExceptionList;
  if ((&DAT_032bf2b8)[param_1] != 0) {
    return (&DAT_032bf2b8)[param_1];
  }
  ExceptionList = &local_c;
  if (param_1 == 0x13) {
    pvVar1 = operator_new(8);
    local_4 = 0;
    if (pvVar1 != (void *)0x0) {
      iVar2 = FUN_008f7ad0(5);
      goto LAB_008f7c14;
    }
  }
  else if (param_1 == 0x14) {
    pvVar1 = operator_new(8);
    local_4 = 1;
    if (pvVar1 != (void *)0x0) {
      iVar2 = FUN_008f7ad0(0x18);
      goto LAB_008f7c14;
    }
  }
  else {
    if (param_1 != 0x15) {
      iVar2 = 0;
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_008402e0("..\\..\\src\\common\\gdicmn.cpp",0x27d,"wxStockGDI::GetCursor",
                     "Assert failure",0,DAT_0323f878 ^ (uint)&stack0xffffffec);
      }
      goto LAB_008f7c14;
    }
    pvVar1 = operator_new(8);
    local_4 = 2;
    if (pvVar1 != (void *)0x0) {
      iVar2 = FUN_008f7ad0(1);
      goto LAB_008f7c14;
    }
  }
  iVar2 = 0;
LAB_008f7c14:
  (&DAT_032bf2b8)[param_1] = iVar2;
  ExceptionList = local_c;
  return iVar2;
}



void FUN_008f7c30(void)

{
  void *pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd46a1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  DAT_032bf350 = (undefined4 *)operator_new(4);
  if (DAT_032bf350 == (undefined4 *)0x0) {
    DAT_032bf350 = (undefined4 *)0x0;
  }
  else {
    *DAT_032bf350 = 0;
  }
  pvVar1 = operator_new(0x18);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    pvVar1 = (void *)0x0;
  }
  else {
    FUN_0086b270(0);
  }
  local_4 = 0xffffffff;
  DAT_032bf35c = pvVar1;
  pvVar1 = operator_new(0x18);
  local_4 = 1;
  if (pvVar1 == (void *)0x0) {
    pvVar1 = (void *)0x0;
  }
  else {
    FUN_0086b270(0);
  }
  local_4 = 0xffffffff;
  DAT_032bf354 = pvVar1;
  pvVar1 = operator_new(0x18);
  local_4 = 2;
  if (pvVar1 != (void *)0x0) {
    FUN_0086b270(0);
    DAT_032bf358 = pvVar1;
    ExceptionList = local_c;
    return;
  }
  DAT_032bf358 = (void *)0x0;
  ExceptionList = local_c;
  return;
}



void FUN_008f7d40(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  iVar3 = DAT_032bf35c;
  iVar2 = DAT_032bf358;
  iVar1 = DAT_032bf354;
  if (DAT_032bf35c != 0) {
    FUN_008f7820();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar3);
  }
  if (DAT_032bf354 != 0) {
    FUN_008f7820();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  if (DAT_032bf358 != 0) {
    FUN_008f7820();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  return;
}



int * __thiscall FUN_008f7db0(int *param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 local_30 [5];
  uint uStack_1c;
  void *local_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd46d0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = (int)wxColour::vftable;
  FUN_0093b2c0(uVar1);
  FUN_004325b6(param_1);
  local_4 = CONCAT31(local_4._1_3_,1);
  (**(code **)(*param_1_00 + 0x2c))(local_30);
  _free(local_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  ExceptionList = pvStack_10;
  return param_1_00;
}



int FUN_008f7e50(int param_1)

{
  int iVar1;
  void *pvVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4748;
  local_c = ExceptionList;
  if ((&DAT_032bf2b8)[param_1] != 0) {
    return (&DAT_032bf2b8)[param_1];
  }
  ExceptionList = &local_c;
  switch(param_1) {
  case 0xb:
    pvVar2 = operator_new(0x14);
    local_4 = 0;
    if (pvVar2 != (void *)0x0) {
      iVar1 = FUN_004561e7(0,0,0,0xff);
      goto LAB_008f806a;
    }
    break;
  case 0xc:
    pvVar2 = operator_new(0x14);
    local_4 = 1;
    if (pvVar2 != (void *)0x0) {
      iVar1 = FUN_004561e7(0,0,0xff,0xff);
      goto LAB_008f806a;
    }
    break;
  case 0xd:
    pvVar2 = operator_new(0x14);
    local_4 = 2;
    if (pvVar2 != (void *)0x0) {
      iVar1 = FUN_008f7db0(L"CYAN");
      goto LAB_008f806a;
    }
    break;
  case 0xe:
    pvVar2 = operator_new(0x14);
    local_4 = 3;
    if (pvVar2 != (void *)0x0) {
      iVar1 = FUN_004561e7(0,0xff,0,0xff);
      goto LAB_008f806a;
    }
    break;
  case 0xf:
    pvVar2 = operator_new(0x14);
    local_4 = 4;
    if (pvVar2 != (void *)0x0) {
      uVar3 = 0;
LAB_008f7f96:
      iVar1 = FUN_004561e7(0xff,0xff,uVar3,0xff);
      goto LAB_008f806a;
    }
    break;
  case 0x10:
    pvVar2 = operator_new(0x14);
    local_4 = 5;
    if (pvVar2 != (void *)0x0) {
      iVar1 = FUN_008f7db0(L"LIGHT GREY");
      goto LAB_008f806a;
    }
    break;
  case 0x11:
    pvVar2 = operator_new(0x14);
    local_4 = 6;
    if (pvVar2 != (void *)0x0) {
      iVar1 = FUN_004561e7(0xff,0,0,0xff);
      goto LAB_008f806a;
    }
    break;
  case 0x12:
    pvVar2 = operator_new(0x14);
    local_4 = 7;
    if (pvVar2 != (void *)0x0) {
      uVar3 = 0xff;
      goto LAB_008f7f96;
    }
    break;
  default:
    iVar1 = 0;
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\gdicmn.cpp",0x265,"wxStockGDI::GetColour","Assert failure",
                   0,DAT_0323f878 ^ (uint)&stack0xffffffec);
    }
    goto LAB_008f806a;
  }
  iVar1 = 0;
LAB_008f806a:
  (&DAT_032bf2b8)[param_1] = iVar1;
  ExceptionList = local_c;
  return iVar1;
}



int __thiscall FUN_008f80b0(int *param_1_00,int param_1)

{
  int *piVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  void **ppvVar7;
  undefined *puVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  void *local_7c [9];
  undefined auStack_58 [36];
  undefined auStack_34 [40];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd47e7;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar3 = (&DAT_032bf2b8)[param_1];
  if (iVar3 == 0) {
    switch(param_1) {
    case 0x16:
      local_7c[0] = operator_new(8);
      iVar3 = 0;
      local_4 = 0;
      if (local_7c[0] != (void *)0x0) {
        FUN_004325b6(PTR_DAT_03236318);
        uVar10 = 0x17;
        local_4 = CONCAT31(local_4._1_3_,1);
        piVar1 = (int *)(**(code **)(*param_1_00 + 4))(0x17);
        uVar9 = 0;
        ppvVar7 = local_7c;
        uVar6 = 0;
        uVar5 = 0x5a;
        uVar4 = 0x5d;
        uVar2 = (**(code **)(*piVar1 + 0x2c))(0x48,0x5d,0x5a,0,ppvVar7,0);
        iVar3 = FUN_00473c89(uVar2,uVar4,uVar5,uVar6,ppvVar7,uVar9,uVar10);
        FUN_0040159c();
      }
      break;
    case 0x17:
      local_7c[0] = operator_new(8);
      local_4 = 3;
      if (local_7c[0] == (void *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = FUN_008ff360(local_7c[0],0x11);
      }
      break;
    case 0x18:
      local_7c[0] = operator_new(8);
      local_4 = 4;
      if (local_7c[0] == (void *)0x0) {
        iVar3 = 0;
      }
      else {
        FUN_004325b6(PTR_DAT_03236318);
        uVar9 = 0x17;
        local_4 = CONCAT31(local_4._1_3_,5);
        piVar1 = (int *)(**(code **)(*param_1_00 + 4))(0x17);
        uVar6 = 0;
        puVar8 = auStack_58;
        uVar5 = 0;
        uVar4 = 0x5a;
        uVar2 = 0x5a;
        iVar3 = (**(code **)(*piVar1 + 0x2c))(0x4a,0x5a,0x5a,0,puVar8,0);
        iVar3 = FUN_00473c89(iVar3 + -1,uVar2,uVar4,uVar5,puVar8,uVar6,uVar9);
        FUN_0040159c();
      }
      break;
    case 0x19:
      local_7c[0] = operator_new(8);
      local_4 = 7;
      if (local_7c[0] == (void *)0x0) {
        iVar3 = 0;
      }
      else {
        FUN_004325b6(PTR_DAT_03236318);
        uVar10 = 0x17;
        local_4 = CONCAT31(local_4._1_3_,8);
        piVar1 = (int *)(**(code **)(*param_1_00 + 4))(0x17);
        uVar9 = 0;
        puVar8 = auStack_34;
        uVar6 = 0;
        uVar5 = 0x5a;
        uVar4 = 0x5a;
        uVar2 = (**(code **)(*piVar1 + 0x2c))(0x4a,0x5a,0x5a,0,puVar8,0);
        iVar3 = FUN_00473c89(uVar2,uVar4,uVar5,uVar6,puVar8,uVar9,uVar10);
        FUN_0040159c();
      }
      break;
    default:
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_008402e0("..\\..\\src\\common\\gdicmn.cpp",0x2a4,"wxStockGDI::GetFont","Assert failure",
                     0,DAT_0323f878 ^ (uint)&stack0xffffff70);
      }
    }
    (&DAT_032bf2b8)[param_1] = iVar3;
  }
  ExceptionList = local_c;
  return iVar3;
}



int FUN_008f8330(int param_1)

{
  void *pvVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4908;
  local_c = ExceptionList;
  if ((&DAT_032bf2b8)[param_1] != 0) {
    return (&DAT_032bf2b8)[param_1];
  }
  ExceptionList = &local_c;
  switch(param_1) {
  case 0x1a:
    pvVar1 = operator_new(8);
    local_4 = 0;
    if (pvVar1 != (void *)0x0) {
      uVar5 = 100;
LAB_008f83a0:
      uVar3 = 0xb;
LAB_008f83a4:
      uVar4 = 1;
      uVar3 = FUN_008f7e50(uVar3,1,uVar5);
      iVar2 = FUN_009566f0(uVar3,uVar4,uVar5);
      goto LAB_008f88a0;
    }
    break;
  case 0x1b:
    pvVar1 = operator_new(8);
    local_4 = 1;
    if (pvVar1 != (void *)0x0) {
      uVar4 = 0x67;
      uVar3 = 1;
      uVar5 = FUN_008f7e50(0xb,1,0x67);
      iVar2 = FUN_009566f0(uVar5,uVar3,uVar4);
      goto LAB_008f88a0;
    }
    break;
  case 0x1c:
    pvVar1 = operator_new(8);
    local_4 = 2;
    if (pvVar1 != (void *)0x0) {
      uVar5 = 100;
      uVar3 = 0xc;
      goto LAB_008f83a4;
    }
    break;
  case 0x1d:
    pvVar1 = operator_new(8);
    local_4 = 3;
    if (pvVar1 != (void *)0x0) {
      if (DAT_032bf2ec == 0) {
        pvVar1 = operator_new(0x14);
        local_4._0_1_ = 6;
        if (pvVar1 != (void *)0x0) {
          DAT_032bf2ec = FUN_008f7db0(L"CYAN");
          local_4 = CONCAT31(local_4._1_3_,3);
          iVar2 = FUN_009566f0(DAT_032bf2ec,1,100);
          goto LAB_008f88a0;
        }
        local_4 = CONCAT31(local_4._1_3_,3);
        DAT_032bf2ec = 0;
      }
      iVar2 = FUN_009566f0(DAT_032bf2ec,1,100);
      goto LAB_008f88a0;
    }
    break;
  case 0x1e:
    pvVar1 = operator_new(8);
    local_4 = 0xc;
    if (pvVar1 != (void *)0x0) {
      if (DAT_032bf2f0 == 0) {
        pvVar1 = operator_new(0x14);
        local_4._0_1_ = 0x10;
        if (pvVar1 != (void *)0x0) {
          DAT_032bf2f0 = FUN_004561e7(0,0xff,0,0xff);
          local_4 = CONCAT31(local_4._1_3_,0xc);
          iVar2 = FUN_009566f0(DAT_032bf2f0,1,100);
          goto LAB_008f88a0;
        }
        local_4 = CONCAT31(local_4._1_3_,0xc);
        DAT_032bf2f0 = 0;
      }
      iVar2 = FUN_009566f0(DAT_032bf2f0,1,100);
      goto LAB_008f88a0;
    }
    break;
  case 0x1f:
    pvVar1 = operator_new(8);
    local_4 = 0x15;
    if (pvVar1 != (void *)0x0) {
      if (DAT_032bf2f4 == 0) {
        pvVar1 = operator_new(0x14);
        local_4._0_1_ = 0x1a;
        if (pvVar1 != (void *)0x0) {
          DAT_032bf2f4 = FUN_004561e7(0xff,0xff,0,0xff);
          local_4 = CONCAT31(local_4._1_3_,0x15);
          iVar2 = FUN_009566f0(DAT_032bf2f4,1,100);
          goto LAB_008f88a0;
        }
        local_4 = CONCAT31(local_4._1_3_,0x15);
        DAT_032bf2f4 = 0;
      }
      iVar2 = FUN_009566f0(DAT_032bf2f4,1,100);
      goto LAB_008f88a0;
    }
    break;
  case 0x20:
    pvVar1 = operator_new(8);
    local_4 = 0x1e;
    if (pvVar1 == (void *)0x0) {
      iVar2 = 0;
    }
    else {
      uVar5 = FUN_008f7db0(L"GREY");
      local_4 = CONCAT31(local_4._1_3_,0x1f);
      iVar2 = FUN_009566f0(uVar5,1,100);
    }
    local_4 = 0xffffffff;
    if (pvVar1 != (void *)0x0) {
      FUN_0083e850();
    }
    goto LAB_008f88a0;
  case 0x21:
    pvVar1 = operator_new(8);
    local_4 = 0x21;
    if (pvVar1 != (void *)0x0) {
      if (DAT_032bf2f8 == 0) {
        pvVar1 = operator_new(0x14);
        local_4._0_1_ = 0x27;
        if (pvVar1 != (void *)0x0) {
          DAT_032bf2f8 = FUN_008f7db0(L"LIGHT GREY");
          local_4 = CONCAT31(local_4._1_3_,0x21);
          iVar2 = FUN_009566f0(DAT_032bf2f8,1,100);
          goto LAB_008f88a0;
        }
        local_4 = CONCAT31(local_4._1_3_,0x21);
        DAT_032bf2f8 = 0;
      }
      iVar2 = FUN_009566f0(DAT_032bf2f8,1,100);
      goto LAB_008f88a0;
    }
    break;
  case 0x22:
    pvVar1 = operator_new(8);
    local_4 = 0x2a;
    if (pvVar1 == (void *)0x0) {
      iVar2 = 0;
    }
    else {
      uVar5 = FUN_008f7db0(L"MEDIUM GREY");
      local_4 = CONCAT31(local_4._1_3_,0x2b);
      iVar2 = FUN_009566f0(uVar5,1,100);
    }
    local_4 = 0xffffffff;
    if (pvVar1 != (void *)0x0) {
      FUN_0083e850();
    }
    goto LAB_008f88a0;
  case 0x23:
    pvVar1 = operator_new(8);
    local_4 = 0x2d;
    if (pvVar1 != (void *)0x0) {
      if (DAT_032bf2fc == 0) {
        pvVar1 = operator_new(0x14);
        local_4._0_1_ = 0x34;
        if (pvVar1 != (void *)0x0) {
          DAT_032bf2fc = FUN_004561e7(0xff,0,0,0xff);
          local_4 = CONCAT31(local_4._1_3_,0x2d);
          iVar2 = FUN_009566f0(DAT_032bf2fc,1,100);
          goto LAB_008f88a0;
        }
        local_4 = CONCAT31(local_4._1_3_,0x2d);
        DAT_032bf2fc = 0;
      }
      iVar2 = FUN_009566f0(DAT_032bf2fc,1,100);
      goto LAB_008f88a0;
    }
    break;
  case 0x24:
    pvVar1 = operator_new(8);
    local_4 = 0x36;
    if (pvVar1 != (void *)0x0) {
      uVar5 = 0x6a;
      goto LAB_008f83a0;
    }
    break;
  case 0x25:
    pvVar1 = operator_new(8);
    local_4 = 0x37;
    if (pvVar1 != (void *)0x0) {
      if (DAT_032bf300 == 0) {
        pvVar1 = operator_new(0x14);
        local_4._0_1_ = 0x3f;
        if (pvVar1 != (void *)0x0) {
          DAT_032bf300 = FUN_004561e7(0xff,0xff,0xff,0xff);
          local_4 = CONCAT31(local_4._1_3_,0x37);
          iVar2 = FUN_009566f0(DAT_032bf300,1,100);
          goto LAB_008f88a0;
        }
        local_4 = CONCAT31(local_4._1_3_,0x37);
        DAT_032bf300 = 0;
      }
      iVar2 = FUN_009566f0(DAT_032bf300,1,100);
      goto LAB_008f88a0;
    }
    break;
  default:
    iVar2 = 0;
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\gdicmn.cpp",0x2d7,"wxStockGDI::GetPen","Assert failure",0,
                   DAT_0323f878 ^ (uint)&stack0xffffffbc);
    }
    goto LAB_008f88a0;
  }
  iVar2 = 0;
LAB_008f88a0:
  (&DAT_032bf2b8)[param_1] = iVar2;
  ExceptionList = local_c;
  return iVar2;
}



undefined4 * __thiscall FUN_008f88f0(undefined4 *param_1_00,int param_1)

{
  *param_1_00 = 0;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[8] = 0;
  param_1_00[10] = *(undefined4 *)(param_1 + 0x24);
  return param_1_00;
}



undefined4 * __thiscall FUN_008f8940(int *param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  float fVar2;
  float fVar3;
  void *pvVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar4 = operator_new(0x2c);
  puVar5 = (undefined4 *)0x0;
  local_4 = 0;
  if (pvVar4 != (void *)0x0) {
    puVar5 = (undefined4 *)FUN_008f88f0(param_1);
  }
  *puVar5 = *(undefined4 *)(*param_1_00 + param_2 * 4);
  *(undefined4 **)(*param_1_00 + param_2 * 4) = puVar5;
  param_1_00[2] = param_1_00[2] + 1;
  iVar1 = param_1_00[1];
  fVar2 = (float)param_1_00[2];
  local_4 = 0xffffffff;
  if (param_1_00[2] < 0) {
    fVar2 = fVar2 + 4.294967e+09;
  }
  fVar3 = (float)iVar1;
  if (iVar1 < 0) {
    fVar3 = fVar3 + 4.294967e+09;
  }
  if (0.85 <= fVar2 / fVar3) {
    FUN_00b28480(iVar1);
  }
  ExceptionList = local_c;
  return puVar5;
}



int FUN_008f8a00(int param_1)

{
  void *pvVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4a1d;
  local_c = ExceptionList;
  if ((&DAT_032bf2b8)[param_1] != 0) {
    return (&DAT_032bf2b8)[param_1];
  }
  ExceptionList = &local_c;
  switch(param_1) {
  case 0:
    pvVar1 = operator_new(8);
    local_4 = 0;
    if (pvVar1 != (void *)0x0) {
      uVar4 = 100;
LAB_008f8a69:
      uVar3 = 0xb;
LAB_008f8a6b:
      uVar3 = FUN_008f7e50(uVar3,uVar4);
      iVar2 = FUN_0095d7e0(uVar3,uVar4);
      goto LAB_008f8f0d;
    }
    break;
  case 1:
    pvVar1 = operator_new(8);
    local_4 = 1;
    if (pvVar1 != (void *)0x0) {
      uVar4 = 100;
      uVar3 = 0xc;
      goto LAB_008f8a6b;
    }
    break;
  case 2:
    pvVar1 = operator_new(8);
    local_4 = 2;
    if (pvVar1 != (void *)0x0) {
      if (DAT_032bf2ec == 0) {
        pvVar1 = operator_new(0x14);
        local_4._0_1_ = 5;
        if (pvVar1 != (void *)0x0) {
          DAT_032bf2ec = FUN_008f7db0(L"CYAN");
          local_4 = CONCAT31(local_4._1_3_,2);
          iVar2 = FUN_0095d7e0(DAT_032bf2ec,100);
          goto LAB_008f8f0d;
        }
        local_4 = CONCAT31(local_4._1_3_,2);
        DAT_032bf2ec = 0;
      }
      iVar2 = FUN_0095d7e0(DAT_032bf2ec,100);
      goto LAB_008f8f0d;
    }
    break;
  case 3:
    pvVar1 = operator_new(8);
    local_4 = 0xb;
    if (pvVar1 != (void *)0x0) {
      if (DAT_032bf2f0 == 0) {
        pvVar1 = operator_new(0x14);
        local_4._0_1_ = 0xf;
        if (pvVar1 != (void *)0x0) {
          DAT_032bf2f0 = FUN_004561e7(0,0xff,0,0xff);
          local_4 = CONCAT31(local_4._1_3_,0xb);
          iVar2 = FUN_0095d7e0(DAT_032bf2f0,100);
          goto LAB_008f8f0d;
        }
        local_4 = CONCAT31(local_4._1_3_,0xb);
        DAT_032bf2f0 = 0;
      }
      iVar2 = FUN_0095d7e0(DAT_032bf2f0,100);
      goto LAB_008f8f0d;
    }
    break;
  case 4:
    pvVar1 = operator_new(8);
    local_4 = 0x14;
    if (pvVar1 != (void *)0x0) {
      if (DAT_032bf2f4 == 0) {
        pvVar1 = operator_new(0x14);
        local_4._0_1_ = 0x19;
        if (pvVar1 != (void *)0x0) {
          DAT_032bf2f4 = FUN_004561e7(0xff,0xff,0,0xff);
          local_4 = CONCAT31(local_4._1_3_,0x14);
          iVar2 = FUN_0095d7e0(DAT_032bf2f4,100);
          goto LAB_008f8f0d;
        }
        local_4 = CONCAT31(local_4._1_3_,0x14);
        DAT_032bf2f4 = 0;
      }
      iVar2 = FUN_0095d7e0(DAT_032bf2f4,100);
      goto LAB_008f8f0d;
    }
    break;
  case 5:
    pvVar1 = operator_new(8);
    local_4 = 0x1d;
    if (pvVar1 == (void *)0x0) {
      iVar2 = 0;
    }
    else {
      uVar4 = FUN_008f7db0(L"GREY");
      local_4 = CONCAT31(local_4._1_3_,0x1e);
      iVar2 = FUN_0095d7e0(uVar4,100);
    }
    local_4 = 0xffffffff;
    if (pvVar1 != (void *)0x0) {
      FUN_0083e850();
    }
    goto LAB_008f8f0d;
  case 6:
    pvVar1 = operator_new(8);
    local_4 = 0x20;
    if (pvVar1 != (void *)0x0) {
      if (DAT_032bf2f8 == 0) {
        pvVar1 = operator_new(0x14);
        local_4._0_1_ = 0x26;
        if (pvVar1 != (void *)0x0) {
          DAT_032bf2f8 = FUN_008f7db0(L"LIGHT GREY");
          local_4 = CONCAT31(local_4._1_3_,0x20);
          iVar2 = FUN_0095d7e0(DAT_032bf2f8,100);
          goto LAB_008f8f0d;
        }
        local_4 = CONCAT31(local_4._1_3_,0x20);
        DAT_032bf2f8 = 0;
      }
      iVar2 = FUN_0095d7e0(DAT_032bf2f8,100);
      goto LAB_008f8f0d;
    }
    break;
  case 7:
    pvVar1 = operator_new(8);
    local_4 = 0x29;
    if (pvVar1 == (void *)0x0) {
      iVar2 = 0;
    }
    else {
      uVar4 = FUN_008f7db0(L"MEDIUM GREY");
      local_4 = CONCAT31(local_4._1_3_,0x2a);
      iVar2 = FUN_0095d7e0(uVar4,100);
    }
    local_4 = 0xffffffff;
    if (pvVar1 != (void *)0x0) {
      FUN_0083e850();
    }
    goto LAB_008f8f0d;
  case 8:
    pvVar1 = operator_new(8);
    local_4 = 0x2c;
    if (pvVar1 != (void *)0x0) {
      if (DAT_032bf2fc == 0) {
        pvVar1 = operator_new(0x14);
        local_4._0_1_ = 0x33;
        if (pvVar1 != (void *)0x0) {
          DAT_032bf2fc = FUN_004561e7(0xff,0,0,0xff);
          local_4 = CONCAT31(local_4._1_3_,0x2c);
          iVar2 = FUN_0095d7e0(DAT_032bf2fc,100);
          goto LAB_008f8f0d;
        }
        local_4 = CONCAT31(local_4._1_3_,0x2c);
        DAT_032bf2fc = 0;
      }
      iVar2 = FUN_0095d7e0(DAT_032bf2fc,100);
      goto LAB_008f8f0d;
    }
    break;
  case 9:
    pvVar1 = operator_new(8);
    local_4 = 0x35;
    if (pvVar1 != (void *)0x0) {
      uVar4 = 0x6a;
      goto LAB_008f8a69;
    }
    break;
  case 10:
    pvVar1 = operator_new(8);
    local_4 = 0x36;
    if (pvVar1 != (void *)0x0) {
      if (DAT_032bf300 == 0) {
        pvVar1 = operator_new(0x14);
        local_4._0_1_ = 0x3e;
        if (pvVar1 != (void *)0x0) {
          DAT_032bf300 = FUN_004561e7(0xff,0xff,0xff,0xff);
          local_4 = CONCAT31(local_4._1_3_,0x36);
          iVar2 = FUN_0095d7e0(DAT_032bf300,100);
          goto LAB_008f8f0d;
        }
        local_4 = CONCAT31(local_4._1_3_,0x36);
        DAT_032bf300 = 0;
      }
      iVar2 = FUN_0095d7e0(DAT_032bf300,100);
      goto LAB_008f8f0d;
    }
    break;
  default:
    iVar2 = 0;
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\gdicmn.cpp",0x23e,"wxStockGDI::GetBrush","Assert failure",0
                   ,DAT_0323f878 ^ (uint)&stack0xffffffbc);
    }
    goto LAB_008f8f0d;
  }
  iVar2 = 0;
LAB_008f8f0d:
  (&DAT_032bf2b8)[param_1] = iVar2;
  ExceptionList = local_c;
  return iVar2;
}



undefined4 * __thiscall FUN_008f8f60(int *param_1_00,int param_1,undefined *param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    iVar3 = param_1 + 4;
  }
  else {
    iVar3 = *(int *)(param_1 + 4);
  }
  uVar2 = FUN_00893df0(iVar3);
  uVar1 = param_1_00[1];
  puVar4 = *(undefined4 **)(*param_1_00 + (uVar2 % uVar1) * 4);
  while( true ) {
    if (puVar4 == (undefined4 *)0x0) {
      *param_2 = 1;
      puVar4 = (undefined4 *)FUN_008f8940(param_1,uVar2 % uVar1);
      return puVar4;
    }
    if ((puVar4[6] == *(int *)(param_1 + 0x14)) && (iVar3 = FUN_00850760(param_1), iVar3 == 0))
    break;
    puVar4 = (undefined4 *)*puVar4;
  }
  *param_2 = 0;
  return puVar4;
}



void __fastcall FUN_008f8fe0(void **param_1)

{
  short sVar1;
  uint uVar2;
  void **ppvVar3;
  void *pvVar4;
  undefined4 uVar5;
  short *psVar6;
  undefined4 *puVar7;
  short *psVar8;
  undefined1 *puVar9;
  int local_3c;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4a5e;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  if (*param_1 == (void *)0x0) {
    ppvVar3 = (void **)operator_new(0x10);
    local_4 = 0;
    if (ppvVar3 == (void **)0x0) {
      ppvVar3 = (void **)0x0;
    }
    else {
      pvVar4 = (void *)FUN_00893ca0(100,uVar2);
      ppvVar3[1] = pvVar4;
      ppvVar3[2] = (void *)0x0;
      pvVar4 = _calloc((size_t)pvVar4,4);
      *ppvVar3 = pvVar4;
    }
    local_4 = 0xffffffff;
    *param_1 = ppvVar3;
    puVar9 = &DAT_00d458c5;
    local_3c = 0x46;
    do {
      pvVar4 = operator_new(0x14);
      local_4 = 1;
      if (pvVar4 == (void *)0x0) {
        uVar5 = 0;
      }
      else {
        uVar5 = FUN_004561e7(puVar9[-1],*puVar9,puVar9[1],0xff);
      }
      psVar8 = *(short **)(puVar9 + -5);
      local_4 = 0xffffffff;
      if (psVar8 == (short *)0x0) {
        psVar8 = &DAT_00fae9c8;
      }
      local_2c = local_2c & 0xffff0000;
      local_18 = 7;
      local_1c = 0;
      psVar6 = psVar8;
      do {
        sVar1 = *psVar6;
        psVar6 = psVar6 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign(psVar8,(int)psVar6 - (int)(psVar8 + 1) >> 1);
      local_14 = (void *)0x0;
      local_4 = 2;
      puVar7 = (undefined4 *)FUN_008c39e0(local_30);
      *puVar7 = uVar5;
      local_4 = 0xffffffff;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
      puVar9 = puVar9 + 8;
      local_3c = local_3c + -1;
    } while (local_3c != 0);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008f9160(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  void *pvVar2;
  int iVar3;
  undefined auStack_b0 [3];
  char local_ad;
  undefined4 local_ac;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined local_a0 [4];
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  undefined4 local_78;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4aa3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_b0;
  ExceptionList = &local_c;
  local_ac = param_1;
  local_a8 = 0;
  FUN_008f8fe0(DAT_0323f878 ^ (uint)&stack0xffffff40);
  local_30 = (uint)local_30._2_2_ << 0x10;
  local_1c = 7;
  local_20 = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  local_18 = (void *)0x0;
  local_4 = 0;
  FUN_00850fc0();
  local_40 = 7;
  local_44 = 0;
  local_54 = (uint)local_54._2_2_ << 0x10;
  FID_conflict_assign(local_34,0,0xffffffff);
  local_3c = (void *)0x0;
  local_4._0_1_ = 1;
  FUN_004325b6(L"GREY");
  local_4._0_1_ = 2;
  FUN_004325b6(L"GRAY");
  local_4._0_1_ = 3;
  iVar3 = FUN_00852a70(local_a0,local_7c,1);
  local_ad = iVar3 == 0;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_9c);
  }
  local_88 = 7;
  local_8c = 0;
  local_9c = local_9c & 0xffff0000;
  local_4 = CONCAT31(local_4._1_3_,1);
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  if (local_ad != '\0') {
    FUN_00432156();
  }
  iVar3 = FUN_00970c40(local_34);
  if (iVar3 == 0) {
    if (local_44 != 0) {
      uVar1 = *param_1_00;
      iVar3 = FUN_00970c40(local_58);
      local_a4 = uVar1;
      if (iVar3 != 0) goto LAB_008f9322;
    }
    FUN_00458700(&PTR_vftable_03238cd0);
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    _free(local_18);
    pvVar2 = ExceptionList;
    ExceptionList = local_c;
  }
  else {
LAB_008f9322:
    FUN_00458700(*(undefined4 *)(iVar3 + 0x28));
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    _free(local_18);
    pvVar2 = ExceptionList;
    ExceptionList = local_c;
  }
  local_c = ExceptionList;
  if (7 < local_1c) {
    ExceptionList = pvVar2;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_008f9430(int **param_1_00,int param_1,int param_2)

{
  short sVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  short *psVar6;
  short *psVar7;
  
  FUN_008f8fe0();
  uVar2 = (*param_1_00)[1];
  iVar3 = **param_1_00;
  uVar4 = 0;
  if (uVar2 != 0) {
    do {
      if (*(int *)(iVar3 + uVar4 * 4) != 0) {
        piVar5 = *(int **)(iVar3 + uVar4 * 4);
        goto joined_r0x008f946a;
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar2);
  }
  piVar5 = (int *)0x0;
joined_r0x008f946a:
  while( true ) {
    if (piVar5 == (int *)0x0) {
      psVar7 = (short *)PTR_DAT_03236318;
      if ((short *)PTR_DAT_03236318 == (short *)0x0) {
        psVar7 = &DAT_00fae9c8;
      }
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      psVar6 = psVar7;
      do {
        sVar1 = *psVar6;
        psVar6 = psVar6 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign(psVar7,(int)psVar6 - (int)(psVar7 + 1) >> 1);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      return param_1;
    }
    iVar3 = piVar5[10];
    if ((((*(char *)(iVar3 + 0xc) == *(char *)(param_2 + 0xc)) &&
         (*(char *)(iVar3 + 0xd) == *(char *)(param_2 + 0xd))) &&
        (*(char *)(iVar3 + 0xf) == *(char *)(param_2 + 0xf))) &&
       ((*(char *)(iVar3 + 0xe) == *(char *)(param_2 + 0xe) &&
        (*(char *)(iVar3 + 0x10) == *(char *)(param_2 + 0x10))))) break;
    piVar5 = (int *)*piVar5;
    if (piVar5 == (int *)0x0) {
      piVar5 = (int *)FUN_009e74b0();
    }
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(piVar5 + 1,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



void __fastcall FUN_008f9540(int *param_1)

{
  undefined4 *puVar1;
  void **ppvVar2;
  int **ppiVar3;
  int *piVar4;
  undefined local_8 [8];
  
  if (*param_1 != 0) {
    ppiVar3 = (int **)FUN_009da970(local_8);
    piVar4 = *ppiVar3;
    while (piVar4 != (int *)0x0) {
      if ((int *)piVar4[10] != (int *)0x0) {
        (**(code **)(*(int *)piVar4[10] + 4))(1);
      }
      piVar4 = (int *)*piVar4;
      if (piVar4 == (int *)0x0) {
        piVar4 = (int *)FUN_009e74b0();
      }
    }
    puVar1 = (undefined4 *)*param_1;
    FUN_00893cf0(puVar1[1],*puVar1,FUN_009e7620);
    puVar1[2] = 0;
    ppvVar2 = (void **)*param_1;
    if (ppvVar2 != (void **)0x0) {
      FUN_00893cf0(ppvVar2[1],*ppvVar2,FUN_009e7620);
      ppvVar2[2] = (void *)0x0;
      _free(*ppvVar2);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar2);
    }
  }
  return;
}



void __fastcall FUN_008f95f0(int *param_1)

{
  int iVar1;
  
  if (*param_1 != 0) {
    iVar1 = 0;
    if (0 < *param_1) {
      do {
        _free(*(void **)(param_1[1] + iVar1 * 4));
        iVar1 = iVar1 + 1;
      } while (iVar1 < *param_1);
    }
    if (param_1[1] != 0) {
      FUN_00a3f66c(param_1[1]);
      param_1[1] = 0;
    }
    *param_1 = 0;
  }
  return;
}



void FUN_008f9640(char *param_1)

{
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bd4b10;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  if (*param_1 == '\0') {
    local_8 = 0;
    (**(code **)(param_1 + 8))();
  }
  ExceptionList = local_10;
  return;
}



undefined4 Catch_All_008f9693(void)

{
  return 0x8f9681;
}



void __fastcall FUN_008f96a0(undefined4 param_1)

{
  FUN_008f9640(param_1);
  return;
}



void __thiscall FUN_008f96b0(int *param_1_00,int param_1)

{
  longlong lVar1;
  int iVar2;
  int iVar3;
  wchar_t *pwVar4;
  uint uVar5;
  
  iVar2 = *(int *)(param_1 + 4);
  *param_1_00 = iVar2;
  lVar1 = (ulonglong)(iVar2 + 1) * 4;
  iVar2 = FUN_00823c23(-(uint)((int)((ulonglong)lVar1 >> 0x20) != 0) | (uint)lVar1);
  uVar5 = 0;
  param_1_00[1] = iVar2;
  if (0 < *param_1_00) {
    iVar2 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 4) <= uVar5)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      iVar3 = *(int *)(param_1 + 8) + iVar2;
      if (*(uint *)(iVar3 + 0x18) < 8) {
        pwVar4 = (wchar_t *)(iVar3 + 4);
      }
      else {
        pwVar4 = *(wchar_t **)(iVar3 + 4);
      }
      pwVar4 = __wcsdup(pwVar4);
      *(wchar_t **)(param_1_00[1] + uVar5 * 4) = pwVar4;
      uVar5 = uVar5 + 1;
      iVar2 = iVar2 + 0x24;
    } while ((int)uVar5 < *param_1_00);
  }
  *(undefined4 *)(param_1_00[1] + *param_1_00 * 4) = 0;
  return;
}



// WARNING: Removing unreachable block (ram,0x008f9849)

void FUN_008f9750(void)

{
  uint uVar1;
  code *pcVar2;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4b48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  FUN_004325b6(L"user32.dll");
  local_4 = 0;
  FUN_0089ed30(local_54,2);
  local_4._0_1_ = 2;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  FUN_004325b6(L"SetProcessDPIAware");
  local_4._0_1_ = 3;
  pcVar2 = (code *)FUN_0089f2d0(0,local_30,uVar1);
  local_4 = CONCAT31(local_4._1_3_,2);
  _free(local_14);
  if (local_18 < 8) {
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    if (pcVar2 != (code *)0x0) {
      (*pcVar2)();
    }
    ExceptionList = local_c;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_2c);
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 FUN_008f9870(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  LPWSTR pWVar2;
  undefined4 uVar3;
  undefined local_50 [16];
  undefined auStack_40 [16];
  undefined auStack_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4b88;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = FUN_00894a40(0,0,DAT_0323f878 ^ (uint)local_50);
  if (iVar1 != 8) {
    MessageBoxW((HWND)0x0,
                L"This program uses Unicode and requires Windows NT/2000/XP.\n\nProgram aborted.",
                (LPCWSTR)PTR_u_wxWidgets_Fatal_Error_03238d80,0x10);
    ExceptionList = local_c;
    return 0;
  }
  FUN_008a65f0(param_1);
  _DAT_03238d84 = param_2;
  FUN_00853ce0(0);
  local_4 = 0;
  pWVar2 = GetCommandLineW();
  if (pWVar2 != (LPWSTR)0x0) {
    FUN_004325b6(pWVar2);
    local_4._0_1_ = 1;
    uVar3 = FUN_0088c420(auStack_40,auStack_30,0);
    local_4._0_1_ = 2;
    FUN_00855070(uVar3);
    local_4._0_1_ = 1;
    FUN_00853f30();
    local_4 = (uint)local_4._1_3_ << 8;
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  FUN_008f96b0(local_50);
  local_4 = 0xffffffff;
  FUN_00853f30();
  ExceptionList = local_c;
  return 1;
}



undefined4 FUN_008f99b0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4bb8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008f9750(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  cVar1 = FUN_008f9870(param_1,param_4);
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0xffffffff;
  }
  FUN_009873f0(local_18,&DAT_032bf378,FUN_008f95f0);
  local_4 = 0;
  uVar2 = FUN_008a6700(&DAT_032bf378,DAT_032bf37c);
  local_4 = 0xffffffff;
  FUN_008f9640(local_18);
  ExceptionList = local_c;
  return uVar2;
}



void FUN_008f9a60(int *param_1)

{
  int iVar1;
  
  FUN_0095db80();
  iVar1 = *param_1;
  if (iVar1 != 0) {
    FUN_008fd4f0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  (**(code **)(*(int *)param_1[1] + 0x50))();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



undefined4 FUN_008f9aa0(void)

{
  int *piVar1;
  char cVar2;
  undefined4 uVar3;
  
  piVar1 = DAT_032bdbdc;
  if (DAT_032bdbdc != (int *)0x0) {
    cVar2 = (**(code **)(*DAT_032bdbdc + 0x10))();
    if (cVar2 != '\0') {
                    // WARNING: Could not recover jumptable at 0x008f9ac0. Too many branches
                    // WARNING: Treating indirect jump as call
      uVar3 = (**(code **)(*piVar1 + 0x14))();
      return uVar3;
    }
  }
  return 1;
}



void FUN_008f9ad0(DWORD *param_1,DWORD *param_2)

{
  BOOL BVar1;
  _OSVERSIONINFOW local_118;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_118;
  _memset(&local_118,0,0x114);
  local_118.dwOSVersionInfoSize = 0x114;
  BVar1 = GetVersionExW(&local_118);
  if (BVar1 != 0) {
    if (param_1 != (DWORD *)0x0) {
      *param_1 = local_118.dwMajorVersion;
    }
    if (param_2 != (DWORD *)0x0) {
      *param_2 = local_118.dwMinorVersion;
    }
  }
  ___security_check_cookie_4();
  return;
}



undefined4 * FUN_008f9b60(undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x1c);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_008a6410(param_1);
    *puVar1 = wxMSWTimerImpl::vftable;
    puVar1[6] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined ** FUN_008f9bf0(void)

{
  return &PTR_u_wxApp_03238d88;
}



undefined ** FUN_008f9c00(void)

{
  return &PTR_DAT_00d461f0;
}



undefined * FUN_008f9c10(void)

{
  return &DAT_032bf3b4;
}



void __fastcall FUN_008f9c20(int *param_1)

{
  if (*param_1 != 0) {
    FUN_008fce30();
    return;
  }
  return;
}



undefined4 * __fastcall FUN_008f9c30(undefined4 *param_1)

{
  FUN_008fcce0();
  *param_1 = wxApp::vftable;
  param_1[0x10] = wxApp::vftable;
  param_1[0x58] = 1;
  return param_1;
}



void __fastcall FUN_008f9c60(undefined4 *param_1)

{
  *param_1 = wxApp::vftable;
  param_1[0x10] = wxApp::vftable;
  FUN_008fca00();
  return;
}



uint FUN_008f9cb0(void)

{
  code *pcVar1;
  int iVar2;
  uint uVar3;
  
  iVar2 = MessageBoxW((HWND)0x0,
                      L"An unhandled exception occurred. Press \"Abort\" to terminate the program,\r\n\"Retry\" to exit the program normally and \"Ignore\" to try to continue."
                      ,L"Unhandled exception",0x2012);
  if (iVar2 == 3) {
    __CxxThrowException_8(0,0);
    pcVar1 = (code *)swi(3);
    uVar3 = (*pcVar1)();
    return uVar3;
  }
  uVar3 = iVar2 - 4;
  if (uVar3 != 0) {
    uVar3 = iVar2 - 5;
    if (uVar3 == 0) {
      return 1;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      uVar3 = FUN_00840480("..\\..\\src\\msw\\app.cpp",0x41e,"wxApp::OnExceptionInMainLoop",
                           "Assert failure",L"unexpected MessageBox() return code");
    }
  }
  return uVar3 & 0xffffff00;
}



void FUN_008f9d10(void)

{
  FUN_008f9e40();
  return;
}



void __fastcall FUN_008f9d20(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd4be8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00a15c90(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1 = wxEventLoopBase::vftable;
  ExceptionList = local_c;
  return;
}



void FUN_008f9d70(HANDLE param_1,int param_2)

{
  DWORD DVar1;
  
  if (param_2 != 0) {
    if (DAT_032bdb68 != 0) {
      DVar1 = GetCurrentThreadId();
      if (DVar1 != DAT_032bdb68) goto LAB_008f9db3;
    }
    if (DAT_032bdbdc != 0) {
      MsgWaitForMultipleObjects(1,&param_1,0,0xffffffff,0x5ff);
      return;
    }
  }
LAB_008f9db3:
  FUN_00893a90(param_1);
  return;
}



undefined4 * FUN_008f9dd0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x164);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_008fcce0(uVar1);
    *puVar2 = wxApp::vftable;
    puVar2[0x10] = wxApp::vftable;
    puVar2[0x58] = 1;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 * __thiscall FUN_008f9e40(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxApp::vftable;
  param_1_00[0x10] = wxApp::vftable;
  FUN_008fca00();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_008f9ec0(int *param_1,int param_2)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  
  iVar2 = (**(code **)(*param_1 + 0xd4))();
  if (iVar2 != 0) {
    uVar3 = (uint)(*(char *)(param_2 + 0x2a) == '\0');
    (**(code **)(*param_1 + 0xd4))(uVar3);
    cVar1 = FUN_0091cfd0(uVar3);
    if (cVar1 == '\0') {
      FUN_0043bf0c(1);
    }
  }
  return;
}



void __thiscall FUN_008f9f10(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxIdleEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



undefined4 * __fastcall FUN_008f9f60(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4be8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008b7e90(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxGUIEventLoop::vftable;
  FUN_0086a600();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_008f9fc0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x20);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_008f9f60(uVar1);
    *puVar2 = wxEventLoop::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



uint FUN_008fa020(int param_1)

{
  uint uVar1;
  uint in_EAX;
  int iVar2;
  uint uVar3;
  int iVar4;
  
  uVar1 = DAT_032bf380;
  if (DAT_032bf380 != 0) {
    iVar4 = 0;
    uVar3 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bf380 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                     "wxVector<struct ClassRegInfo>::at","idx < m_size",0);
      }
      if (*(int *)(iVar4 + 0x14 + DAT_032bf388) == *(int *)(param_1 + 0x14)) {
        iVar2 = FUN_00850760(param_1);
        in_EAX = CONCAT31((int3)((uint)iVar2 >> 8),iVar2 == 0);
        if (iVar2 == 0) goto LAB_008fa0f2;
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bf380 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                     "wxVector<struct ClassRegInfo>::at","idx < m_size",0);
      }
      in_EAX = DAT_032bf388;
      if (*(int *)(iVar4 + 0x38 + DAT_032bf388) == *(int *)(param_1 + 0x14)) {
        iVar2 = FUN_00850760(param_1);
        in_EAX = CONCAT31((int3)((uint)iVar2 >> 8),iVar2 == 0);
        if (iVar2 == 0) {
LAB_008fa0f2:
          return CONCAT31((int3)(in_EAX >> 8),1);
        }
      }
      uVar3 = uVar3 + 1;
      iVar4 = iVar4 + 0x48;
    } while (uVar3 < uVar1);
  }
  return in_EAX & 0xffffff00;
}



undefined4 * FUN_008fa100(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxIdleEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



int __fastcall FUN_008fa170(int param_1)

{
  int iVar1;
  int iVar2;
  undefined4 *unaff_retaddr;
  
  iVar1 = (**(code **)(param_1 + 0x24))(PTR_u_cmd_exe_03238e40);
  if (iVar1 != 0) {
    FUN_00884d00(iVar1);
    iVar2 = (**(code **)(param_1 + 0x20))
                      (*(undefined4 *)*unaff_retaddr,iVar1,PTR_u_cmd_exe_03238e40);
    if ((iVar2 != iVar1) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
      FUN_00840480("..\\..\\src\\msw\\app.cpp",0x1fd,
                   "`anonymous-namespace\'::wxConsoleStderr::GetCommandHistory","Assert failure",
                   L"failed getting history?");
    }
  }
  return iVar1;
}



undefined4 * __fastcall FUN_008fa1e0(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd4c36;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  uVar2 = FUN_00850350(uVar1);
  param_1[3] = uVar2;
  local_4._0_1_ = 1;
  uVar2 = FUN_00850350();
  param_1[3] = uVar2;
  local_4._0_1_ = 2;
  uVar2 = FUN_00850350();
  param_1[5] = uVar2;
  local_4 = CONCAT31(local_4._1_3_,3);
  uVar2 = FUN_00850350();
  param_1[5] = uVar2;
  param_1[2] = 0xffffffff;
  param_1[7] = 0;
  param_1[6] = 0;
  param_1[4] = 0;
  *param_1 = 0xffffffff;
  ExceptionList = local_c;
  return param_1;
}



undefined __fastcall FUN_008fa280(int **param_1)

{
  int **ppiVar1;
  int *piVar2;
  int **ppiVar3;
  int *piVar4;
  undefined uVar5;
  int *piVar6;
  int **local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4c70;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar5 = 1;
  local_10 = param_1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1 != (int *)0x1)) {
    FUN_00840480("..\\..\\src\\msw\\app.cpp",0x206,
                 "`anonymous-namespace\'::wxConsoleStderr::IsHistoryUnchanged","m_ok == 1",
                 L"shouldn\'t be called if not initialized",DAT_0323f878 ^ (uint)&stack0xffffffe4);
  }
  local_10 = (int **)FUN_00850350();
  local_4 = 0;
  local_10 = (int **)FUN_00850350();
  local_4 = 1;
  piVar2 = (int *)FUN_008fa170(&local_10);
  ppiVar1 = local_10;
  if ((piVar2 == param_1[4]) && (piVar4 = *local_10, piVar4 != (int *)0x0)) {
    piVar6 = (int *)*param_1[3];
    for (; (int *)0x3 < piVar2; piVar2 = piVar2 + -1) {
      if (*piVar6 != *piVar4) goto LAB_008fa357;
      piVar4 = piVar4 + 1;
      piVar6 = piVar6 + 1;
    }
    if ((piVar2 == (int *)0x0) ||
       ((*(char *)piVar4 == *(char *)piVar6 &&
        ((piVar2 < (int *)0x2 ||
         ((*(char *)((int)piVar4 + 1) == *(char *)((int)piVar6 + 1) &&
          ((piVar2 < (int *)0x3 || (*(char *)((int)piVar4 + 2) == *(char *)((int)piVar6 + 2)))))))))
       )) goto LAB_008fa359;
  }
LAB_008fa357:
  uVar5 = 0;
LAB_008fa359:
  local_4 = 0xffffffff;
  ppiVar3 = (int **)FUN_00850350();
  if (ppiVar1 != ppiVar3) {
    *(short *)(ppiVar1 + 2) = *(short *)(ppiVar1 + 2) + -1;
    if (*(short *)(ppiVar1 + 2) == 0) {
      if (*(char *)((int)ppiVar1 + 10) != '\0') {
        _free(*ppiVar1);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppiVar1);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return uVar5;
}



void __fastcall FUN_008fa3b0(uint *param_1)

{
  uint uVar1;
  
  uVar1 = 0;
  if (*param_1 != 0) {
    do {
      FUN_009c09f0();
      uVar1 = uVar1 + 1;
    } while (uVar1 < *param_1);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[2]);
}



undefined4 * FUN_008fa400(void)

{
  undefined4 uVar1;
  void *pvVar2;
  int *piVar3;
  undefined4 *puVar4;
  bool bVar5;
  undefined4 uVar6;
  undefined *puVar7;
  undefined4 *puVar8;
  undefined4 uVar9;
  undefined *puVar10;
  undefined4 local_70;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined local_54 [4];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4cd8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_70 = 0;
  uVar1 = FUN_008f7b30(0x14,DAT_0323f878 ^ (uint)&stack0xffffff88);
  FUN_0095dd80(uVar1);
  pvVar2 = operator_new(8);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    FUN_008fd580(1);
  }
  local_4 = 0xffffffff;
  pvVar2 = operator_new(0x228);
  local_4 = 1;
  bVar5 = pvVar2 == (void *)0x0;
  if (bVar5) {
    piVar3 = (int *)0x0;
  }
  else {
    FUN_0043c211("frame");
    local_4 = CONCAT31(local_4._1_3_,2);
    FUN_004325b6(PTR_DAT_03236318);
    local_5c = 0x7f58;
    local_58 = 0x7f58;
    puVar10 = local_30;
    uVar9 = 0x20401e42;
    puVar4 = &local_64;
    puVar8 = &local_5c;
    puVar7 = local_54;
    local_64 = 1;
    local_60 = 1;
    uVar6 = 0xffffffff;
    local_4 = 3;
    local_70 = 3;
    uVar1 = (**(code **)(*DAT_032bcb68 + 0xd4))(0xffffffff,puVar7,puVar8,puVar4,0x20401e42,puVar10);
    piVar3 = (int *)FUN_00820a7b(uVar1,uVar6,puVar7,puVar8,puVar4,uVar9,puVar10);
  }
  if (!bVar5) {
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
  }
  local_4 = 0xffffffff;
  if (!bVar5) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  (**(code **)(*piVar3 + 0xcc))(1);
  puVar4 = (undefined4 *)operator_new(8);
  if (puVar4 == (undefined4 *)0x0) {
    ExceptionList = pvStack_10;
    return (undefined4 *)0x0;
  }
  *puVar4 = local_70;
  puVar4[1] = piVar3;
  ExceptionList = pvStack_10;
  return puVar4;
}



int __thiscall FUN_008fa5f0(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4d08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x3c) = 7;
  *(undefined4 *)(param_1_00 + 0x38) = 0;
  *(undefined2 *)(param_1_00 + 0x28) = 0;
  local_4 = 0;
  FID_conflict_assign(param_1 + 0x24,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x40) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_008fa680(int param_1,int param_2,uint param_3)

{
  uint uVar1;
  void *pvVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5697;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  pvVar2 = operator_new(param_2 * 0x48);
  uVar3 = 0;
  if (param_3 != 0) {
    do {
      local_4 = 0;
      if ((void *)((int)pvVar2 + uVar3 * 0x48) != (void *)0x0) {
        FUN_008fa5f0(uVar3 * 0x48 + param_1);
      }
      local_4 = 0xffffffff;
      FUN_009c09f0(uVar1);
      uVar3 = uVar3 + 1;
    } while (uVar3 < param_3);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



void __thiscall
FUN_008fa740(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void **ppvVar5;
  uint param_10;
  void *param_11;
  undefined4 param_12;
  undefined4 param_13;
  void **local_20;
  undefined4 local_1c;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd4d40;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  puVar2 = (undefined4 *)FUN_00847c00(param_2,param_1,1);
  local_4._0_1_ = 1;
  FUN_0083e8f0(param_13,param_1,5);
  FUN_00843020(param_12,param_1,4);
  FUN_00840990(&param_4,param_1,3);
  FUN_00820e3f(param_3,param_1,2);
  uVar1 = *(undefined4 *)*puVar2;
  uVar3 = FUN_008854f0();
  uVar4 = FUN_00884e10(local_1c,local_14);
  FUN_0083fe90(param_1_00,uVar3,uVar1,local_10,uVar4);
  local_4 = (uint)local_4._1_3_ << 8;
  ppvVar5 = (void **)FUN_00850350();
  if (local_20 != ppvVar5) {
    *(short *)(local_20 + 2) = *(short *)(local_20 + 2) + -1;
    if (*(short *)(local_20 + 2) == 0) {
      if (*(char *)((int)local_20 + 10) != '\0') {
        _free(*local_20);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_20);
    }
    FUN_00850350();
  }
  _free(param_11);
  if (7 < param_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_5);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_008fa880(uint *param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  
  if (param_1_00[1] < param_1) {
    uVar2 = *param_1_00;
    if (uVar2 == 0) {
      uVar1 = 0x10;
    }
    else {
      uVar1 = uVar2;
      if (0xfff < uVar2) {
        uVar1 = 0x1000;
      }
    }
    uVar1 = uVar1 + param_1_00[1];
    if (param_1 < uVar1) {
      param_1 = uVar1;
    }
    uVar2 = FUN_008fa680(param_1_00[2],param_1 * 0x48,uVar2);
    param_1_00[2] = uVar2;
    param_1_00[1] = param_1;
  }
  return;
}



void __thiscall FUN_008fa8e0(int *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4d71;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008fa880(*param_1_00 + 1);
  local_4 = 0;
  if (param_1_00[2] + *param_1_00 * 0x48 != 0) {
    FUN_008fa5f0(param_1);
  }
  *param_1_00 = *param_1_00 + 1;
  ExceptionList = local_c;
  return;
}



undefined4 FUN_008fa950(void)

{
  char cVar1;
  HRESULT HVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4db6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  HVar2 = OleInitialize((LPVOID)0x0);
  if ((HVar2 != -0x7ffefefa) && (HVar2 < 0)) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_008423d0();
      uStack_4._0_1_ = 3;
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4._0_1_ = 2;
      FUN_00842440();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = local_c;
  return 1;
}



void __fastcall FUN_008faad0(int param_1)

{
  short *psVar1;
  void **ppvVar2;
  char cVar3;
  BOOL BVar4;
  int iVar5;
  undefined4 uVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd4e11;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 2;
  if (*(int *)(param_1 + 8) != -1) {
    BVar4 = FreeConsole();
    if (BVar4 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar3 = FUN_00846b30(6);
      if (cVar3 != '\0') {
        FUN_0081c0f1();
        local_4._0_1_ = 3;
        FUN_008423d0();
        local_4._0_1_ = 4;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_4._0_1_ = 3;
        FUN_00842440();
        local_4 = CONCAT31(local_4._1_3_,2);
        FUN_0081b5bc();
      }
    }
  }
  local_4 = CONCAT31(local_4._1_3_,1);
  iVar5 = FUN_00850350();
  if (*(int *)(param_1 + 0x14) != iVar5) {
    psVar1 = (short *)(*(int *)(param_1 + 0x14) + 8);
    *psVar1 = *psVar1 + -1;
    ppvVar2 = *(void ***)(param_1 + 0x14);
    if ((*(short *)(ppvVar2 + 2) == 0) && (ppvVar2 != (void **)0x0)) {
      if (*(char *)((int)ppvVar2 + 10) != '\0') {
        _free(*ppvVar2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uVar6 = FUN_00850350();
    *(undefined4 *)(param_1 + 0x14) = uVar6;
  }
  local_4 = local_4 & 0xffffff00;
  iVar5 = FUN_00850350();
  if (*(int *)(param_1 + 0xc) != iVar5) {
    psVar1 = (short *)(*(int *)(param_1 + 0xc) + 8);
    *psVar1 = *psVar1 + -1;
    ppvVar2 = *(void ***)(param_1 + 0xc);
    if ((*(short *)(ppvVar2 + 2) == 0) && (ppvVar2 != (void **)0x0)) {
      if (*(char *)((int)ppvVar2 + 10) != '\0') {
        _free(*ppvVar2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uVar6 = FUN_00850350();
    *(undefined4 *)(param_1 + 0xc) = uVar6;
  }
  local_4 = 0xffffffff;
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0089f290();
    *(undefined4 *)(param_1 + 4) = 0;
  }
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_008facb0(int param_1)

{
  char cVar1;
  HANDLE pvVar2;
  code *pcVar3;
  int iVar4;
  undefined4 uVar5;
  BOOL BVar6;
  ushort uVar7;
  uint uVar8;
  COORD CStack_108;
  uint uStack_ec;
  void *pvStack_e8;
  CHAR aCStack_e0 [4];
  DWORD DStack_dc;
  undefined auStack_d8 [18];
  short sStack_c6;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4e9b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar2 = GetStdHandle(0xfffffff4);
  if ((pvVar2 != (HANDLE)0xffffffff) && (pvVar2 != (HANDLE)0x0)) {
    FUN_004325b6();
    uStack_4 = 0;
    cVar1 = FUN_0089ed30();
    uStack_4 = 0xffffffff;
    _free(pvStack_e8);
    if (7 < uStack_ec) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (cVar1 != '\0') {
      FUN_0043c211();
      uStack_4 = 1;
      pcVar3 = (code *)FUN_0089f2d0();
      uStack_4 = 0xffffffff;
      FUN_0040159c();
      if ((pcVar3 != (code *)0x0) && (iVar4 = (*pcVar3)(), iVar4 != 0)) {
        *(HANDLE *)(param_1 + 8) = pvVar2;
        FUN_0043c211();
        uStack_4 = 2;
        uVar5 = FUN_0089f340();
        *(undefined4 *)(param_1 + 0x20) = uVar5;
        uStack_4 = 0xffffffff;
        FUN_0040159c();
        if (*(int *)(param_1 + 0x20) != 0) {
          FUN_0043c211();
          uStack_4 = 3;
          uVar5 = FUN_0089f340();
          *(undefined4 *)(param_1 + 0x24) = uVar5;
          uStack_4 = 0xffffffff;
          FUN_0040159c();
          if (*(int *)(param_1 + 0x24) != 0) {
            uVar5 = FUN_008fa170();
            *(undefined4 *)(param_1 + 0x10) = uVar5;
            if (**(int **)(param_1 + 0xc) != 0) {
              BVar6 = GetConsoleScreenBufferInfo
                                (*(HANDLE *)(param_1 + 8),(PCONSOLE_SCREEN_BUFFER_INFO)auStack_d8);
              if (BVar6 == 0) {
                FUN_0043c211(&DAT_00d25fa0);
                cVar1 = FUN_00846b30(6);
                if (cVar1 == '\0') {
                  ExceptionList = local_c;
                  return 0;
                }
                FUN_0081c0f1();
                uStack_4 = 4;
                FUN_008423d0();
                uStack_4._0_1_ = 5;
                GetLastError();
                FUN_00843700();
                GetLastError();
                FUN_00847d90();
                uStack_4 = CONCAT31(uStack_4._1_3_,4);
                FUN_00842440();
              }
              else {
                uVar8 = auStack_d8._6_4_ + 1;
                do {
                  uVar7 = (short)uVar8 - 1;
                  uVar8 = (uint)uVar7;
                  CStack_108 = (COORD)((uint)uVar7 << 0x10);
                  BVar6 = ReadConsoleOutputCharacterA
                                    (*(HANDLE *)(param_1 + 8),aCStack_e0,4,CStack_108,&DStack_dc);
                  if (BVar6 == 0) {
                    FUN_0043c211(&DAT_00d25fa0);
                    cVar1 = FUN_00846b30(6);
                    if (cVar1 == '\0') {
                      ExceptionList = local_c;
                      return 0;
                    }
                    FUN_0081c0f1();
                    uStack_4 = 6;
                    FUN_008423d0();
                    uStack_4._0_1_ = 7;
                    GetLastError();
                    FUN_00843700();
                    GetLastError();
                    FUN_00847d90();
                    uStack_4 = CONCAT31(uStack_4._1_3_,6);
                    FUN_00842440();
                    goto LAB_008faf24;
                  }
                  iVar4 = _strncmp("    ",aCStack_e0,4);
                } while (iVar4 != 0);
                *(int *)(param_1 + 0x1c) = (int)(short)auStack_d8._6_2_ - (int)(short)uVar7;
                iVar4 = (int)(short)auStack_d8._4_2_ +
                        (int)sStack_c6 * ((int)(short)auStack_d8._6_2_ - (int)(short)uVar7);
                *(int *)(param_1 + 0x18) = iVar4;
                if (iVar4 < 1) {
                  ExceptionList = local_c;
                  return 1;
                }
                FUN_008c1180();
                BVar6 = ReadConsoleOutputCharacterA
                                  (*(HANDLE *)(param_1 + 8),**(LPSTR **)(param_1 + 0x14),
                                   *(DWORD *)(param_1 + 0x18),CStack_108,&DStack_dc);
                if (BVar6 != 0) {
                  ExceptionList = local_c;
                  return 1;
                }
                FUN_0043c211(&DAT_00d25fa0);
                cVar1 = FUN_00846b30(6);
                if (cVar1 == '\0') {
                  ExceptionList = local_c;
                  return 0;
                }
                FUN_0081c0f1();
                uStack_4 = 8;
                FUN_008423d0();
                uStack_4._0_1_ = 9;
                GetLastError();
                FUN_00843700();
                GetLastError();
                FUN_00847d90();
                uStack_4 = CONCAT31(uStack_4._1_3_,8);
                FUN_00842440();
              }
LAB_008faf24:
              uStack_4 = 0xffffffff;
              FUN_0081b5bc();
            }
          }
        }
      }
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_008fb180(int param_1,int param_2)

{
  char cVar1;
  BOOL BVar2;
  void *lpBuffer;
  undefined uVar3;
  DWORD aDStack_f0 [6];
  _CONSOLE_SCREEN_BUFFER_INFO local_d8 [9];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4f15;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar3 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 8) == -1)) {
    FUN_00840480();
  }
  BVar2 = GetConsoleScreenBufferInfo(*(HANDLE *)(param_1 + 8),local_d8);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 == '\0') {
      ExceptionList = local_c;
      return 0;
    }
    FUN_0081c0f1();
    uStack_4 = 0;
    FUN_008423d0();
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    GetLastError();
    FUN_00843700();
    GetLastError();
  }
  else {
    local_d8[0].dwCursorPosition =
         (COORD)((uint)(ushort)(local_d8[0].dwCursorPosition.Y - *(short *)(param_1 + 0x1c)) << 0x10
                );
    BVar2 = SetConsoleCursorPosition(*(HANDLE *)(param_1 + 8),local_d8[0].dwCursorPosition);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return 0;
      }
      FUN_0081c0f1();
      uVar3 = 2;
      uStack_4 = 2;
      FUN_008423d0();
      uStack_4 = CONCAT31(uStack_4._1_3_,3);
      GetLastError();
      FUN_00843700();
      GetLastError();
    }
    else {
      BVar2 = FillConsoleOutputCharacterW
                        (*(HANDLE *)(param_1 + 8),L' ',*(DWORD *)(param_1 + 0x18),
                         local_d8[0].dwCursorPosition,aDStack_f0);
      if (BVar2 != 0) {
        if (*(uint *)(param_2 + 0x18) < 8) {
          lpBuffer = (void *)(param_2 + 4);
        }
        else {
          lpBuffer = *(void **)(param_2 + 4);
        }
        BVar2 = WriteConsoleW(*(HANDLE *)(param_1 + 8),lpBuffer,*(DWORD *)(param_2 + 0x14),
                              aDStack_f0,(LPVOID)0x0);
        if (BVar2 == 0) {
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(6);
          if (cVar1 == '\0') {
            ExceptionList = local_c;
            return 0;
          }
          FUN_0081c0f1();
          uStack_4 = 6;
          FUN_008423d0();
          uStack_4._0_1_ = 7;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = CONCAT31(uStack_4._1_3_,6);
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
          ExceptionList = local_c;
          return 0;
        }
        WriteConsoleA(*(HANDLE *)(param_1 + 8),**(void ***)(param_1 + 0x14),
                      *(DWORD *)(param_1 + 0x18),aDStack_f0,(LPVOID)0x0);
        ExceptionList = local_c;
        return 1;
      }
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return 0;
      }
      FUN_0081c0f1();
      uVar3 = 4;
      uStack_4 = 4;
      FUN_008423d0();
      uStack_4 = CONCAT31(uStack_4._1_3_,5);
      GetLastError();
      FUN_00843700();
      GetLastError();
    }
  }
  FUN_00847d90();
  uStack_4 = CONCAT31(uStack_4._1_3_,uVar3);
  FUN_00842440();
  uStack_4 = 0xffffffff;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return 0;
}



undefined FUN_008fb550(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4f48;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffff0;
  ExceptionList = &local_c;
  cVar1 = FUN_008fc9c0(param_1,param_2);
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  local_4 = 0;
  InitCommonControls();
  SetErrorMode(0x8001);
  FUN_008fa950(uVar2);
  FUN_00917990(1);
  ExceptionList = local_c;
  return 1;
}



void FUN_008fb5e0(short *param_1,int param_2,uint param_3)

{
  short sVar1;
  int iVar2;
  uint uVar3;
  char cVar4;
  ATOM AVar5;
  int iVar6;
  int *piVar7;
  HINSTANCE hInstance;
  short *psVar8;
  uint uVar9;
  short asStack_164 [2];
  undefined2 uStack_160;
  undefined4 uStack_150;
  int *piStack_14c;
  char *pcStack_148;
  undefined4 uStack_144;
  undefined4 uStack_140;
  undefined *puStack_13c;
  short asStack_138 [6];
  undefined4 uStack_12c;
  char *pcStack_128;
  undefined4 uStack_124;
  char *pcStack_120;
  undefined4 *local_100;
  undefined4 *puStack_fc;
  WNDCLASSW local_f8;
  int aiStack_d0 [2];
  char cStack_c8;
  undefined4 uStack_bc;
  char *pcStack_b4;
  undefined4 uStack_b0;
  char *pcStack_ac;
  undefined *puStack_a8;
  __time64_t _Stack_a4;
  DWORD DStack_9c;
  int iStack_98;
  undefined4 uStack_90;
  undefined4 uStack_80;
  uint uStack_7c;
  void *pvStack_78;
  int local_6c [2];
  char local_64;
  undefined auStack_58 [4];
  undefined4 uStack_54;
  undefined4 uStack_44;
  uint uStack_40;
  undefined4 uStack_3c;
  char acStack_34 [4];
  undefined4 *****apppppuStack_30 [5];
  uint uStack_1c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uVar3 = DAT_032bf380;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4fd2;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_100;
  ExceptionList = &local_c;
  uVar9 = 0;
  local_100 = (undefined4 *)param_1;
  if (DAT_032bf380 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bf380 <= uVar9)) {
        pcStack_120 = "wxVector<struct ClassRegInfo>::at";
        uStack_124 = 0x13f;
        pcStack_128 = "d:\\wxWidgets-2.9.3\\include\\wx/vector.h";
        uStack_12c = 0x8fb660;
        FUN_008402e0();
      }
      iVar6 = FUN_008507a0();
      if (iVar6 == 0) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bf380 <= uVar9)) {
          pcStack_120 = "wxVector<struct ClassRegInfo>::at";
          uStack_124 = 0x13f;
          pcStack_128 = "d:\\wxWidgets-2.9.3\\include\\wx/vector.h";
          uStack_12c = 0x8fb7bf;
          FUN_008402e0();
        }
        FUN_00432231();
        if ((local_64 != '\0') && (local_6c[0] != 0)) {
          _free(*(void **)(local_6c[0] + 0x1c));
          if (7 < *(uint *)(local_6c[0] + 0x18)) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          *(undefined4 *)(local_6c[0] + 0x18) = 7;
          *(undefined4 *)(local_6c[0] + 0x14) = 0;
          *(undefined2 *)(local_6c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        goto LAB_008fbd1a;
      }
      uVar9 = uVar9 + 1;
    } while (uVar9 < uVar3);
  }
  local_f8.style = 0;
  local_f8.cbClsExtra = 0;
  local_f8.cbWndExtra = 0;
  local_f8.hInstance = (HINSTANCE)0x0;
  local_f8.hIcon = (HICON)0x0;
  local_f8.hCursor = (HCURSOR)0x0;
  local_f8.hbrBackground = (HBRUSH)0x0;
  local_f8.lpszMenuName = (LPCWSTR)0x0;
  local_f8.lpszClassName = (LPCWSTR)0x0;
  local_f8.lpfnWndProc = (WNDPROC)&LAB_00914230;
  local_f8.hInstance = (HINSTANCE)FUN_008a65e0();
  pcStack_120 = (char *)0x8fb6cc;
  local_f8.hCursor = LoadCursorW((HINSTANCE)0x0,(LPCWSTR)0x7f00);
  local_f8.style = param_3 | 0xb;
  local_f8.hbrBackground = (HBRUSH)(param_2 + 1);
  psVar8 = (short *)local_100;
  if (local_100 == (undefined4 *)0x0) {
    psVar8 = &DAT_00fae9c8;
  }
  uStack_54 = (undefined4 *****)((uint)uStack_54._2_2_ << 0x10);
  uStack_40 = 7;
  uStack_44 = 0;
  do {
    sVar1 = *psVar8;
    psVar8 = psVar8 + 1;
  } while (sVar1 != 0);
  pcStack_120 = (char *)0x8fb73d;
  FID_conflict_assign();
  uStack_3c = 0;
  pcStack_120 = acStack_34;
  uStack_4 = 0;
  uStack_124 = 0x8fb765;
  FUN_008533d0();
  uStack_4 = 1;
  if (uStack_40 < 8) {
    local_f8.lpszClassName = (LPCWSTR)&uStack_54;
  }
  else {
    local_f8.lpszClassName = (LPCWSTR)uStack_54;
  }
  AVar5 = RegisterClassW(&local_f8);
  if (AVar5 == 0) {
    local_100 = (undefined4 *)asStack_138;
    puStack_13c = &DAT_00d25fa0;
    uStack_140 = 0x8fb87a;
    FUN_0043c211();
    puStack_13c = (undefined *)0x6;
    uStack_140 = 0x8fb881;
    cVar4 = FUN_00846b30();
    if (cVar4 != '\0') {
      FUN_0081c0f1();
      uStack_4._0_1_ = 2;
      FUN_0081c0f1();
      uStack_4._0_1_ = 3;
      GetLastError();
      FUN_00843700();
      GetLastError();
      local_100 = &uStack_140;
      puStack_fc = (undefined4 *)asStack_164;
      piStack_14c = (int *)0x7;
      uStack_150 = 0;
      uStack_160 = 0;
      FID_conflict_assign(auStack_58,0,0xffffffff);
      pcStack_148 = (char *)0x0;
      FUN_0084ae90(&uStack_140,local_6c);
      uStack_4._0_1_ = 4;
      uStack_bc = 6;
      pcStack_b4 = "..\\..\\src\\msw\\app.cpp";
      pcStack_ac = "wxApp::GetRegisteredClassName";
      uStack_b0 = 699;
      puStack_a8 = &DAT_00d25fa0;
      _Stack_a4 = __time64((__time64_t *)0x0);
      uStack_144 = 0x8fb96c;
      DStack_9c = GetCurrentThreadId();
      iStack_98 = 0;
      uStack_7c = 7;
      uStack_80 = 0;
      uStack_90._0_2_ = 0;
      pvStack_78 = (void *)0x0;
      uStack_144 = 699;
      pcStack_148 = "..\\..\\src\\msw\\app.cpp";
      piStack_14c = aiStack_d0;
      uStack_4._0_1_ = 6;
      uStack_150 = 0x8fb9c4;
      FUN_008fa740();
      uStack_4._0_1_ = 3;
      _free(pvStack_78);
      if (7 < uStack_7c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_90 = (uint)uStack_90._2_2_ << 0x10;
      uStack_7c = 7;
      uStack_80 = 0;
      if (iStack_98 != 0) {
        FUN_00841af0();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_4._0_1_ = 2;
      FUN_0081b5bc();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
    }
    FUN_009c09f0();
  }
  else {
    local_f8.style = local_f8.style & 0xfffffffc;
    if (uStack_1c < 8) {
      local_f8.lpszClassName = (LPCWSTR)apppppuStack_30;
    }
    else {
      local_f8.lpszClassName = (LPCWSTR)apppppuStack_30[0];
    }
    AVar5 = RegisterClassW(&local_f8);
    if (AVar5 == 0) {
      puStack_fc = (undefined4 *)asStack_138;
      puStack_13c = &DAT_00d25fa0;
      uStack_140 = 0x8fbaa7;
      FUN_0043c211();
      puStack_13c = (undefined *)0x6;
      uStack_140 = 0x8fbaae;
      cVar4 = FUN_00846b30();
      if (cVar4 != '\0') {
        FUN_0081c0f1();
        uStack_4._0_1_ = 7;
        FUN_0081c0f1();
        uStack_4._0_1_ = 8;
        GetLastError();
        FUN_00843700();
        GetLastError();
        puStack_fc = &uStack_140;
        local_100 = (undefined4 *)asStack_164;
        piStack_14c = (int *)0x7;
        uStack_150 = 0;
        uStack_160 = 0;
        FID_conflict_assign(auStack_58,0,0xffffffff);
        pcStack_148 = (char *)0x0;
        FUN_0084ae90(&uStack_140,local_6c);
        uStack_4._0_1_ = 9;
        uStack_bc = 6;
        pcStack_b4 = "..\\..\\src\\msw\\app.cpp";
        pcStack_ac = "wxApp::GetRegisteredClassName";
        uStack_b0 = 0x2c4;
        puStack_a8 = &DAT_00d25fa0;
        _Stack_a4 = __time64((__time64_t *)0x0);
        uStack_144 = 0x8fbb99;
        DStack_9c = GetCurrentThreadId();
        iStack_98 = 0;
        uStack_7c = 7;
        uStack_80 = 0;
        uStack_90 = (uint)uStack_90._2_2_ << 0x10;
        pvStack_78 = (void *)0x0;
        uStack_144 = 0x2c4;
        pcStack_148 = "..\\..\\src\\msw\\app.cpp";
        piStack_14c = aiStack_d0;
        uStack_4._0_1_ = 0xb;
        uStack_150 = 0x8fbbf1;
        FUN_008fa740();
        uStack_4._0_1_ = 8;
        FUN_00842440();
        uStack_4._0_1_ = 7;
        FUN_0081b5bc();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        FUN_0081b5bc();
      }
      piVar7 = (int *)FUN_00432231();
      iVar6 = *piVar7;
      if (*(uint *)(iVar6 + 0x18) < 8) {
        iVar6 = iVar6 + 4;
      }
      else {
        iVar6 = *(int *)(iVar6 + 4);
      }
      iVar2 = piVar7[1];
      hInstance = (HINSTANCE)FUN_008a65e0();
      pcStack_120 = (char *)0x8fbc5f;
      UnregisterClassW((LPCWSTR)(iVar6 + iVar2 * 2),hInstance);
      if ((cStack_c8 != '\0') && (aiStack_d0[0] != 0)) {
        _free(*(void **)(aiStack_d0[0] + 0x1c));
        if (7 < *(uint *)(aiStack_d0[0] + 0x18)) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        *(undefined4 *)(aiStack_d0[0] + 0x18) = 7;
        *(undefined4 *)(aiStack_d0[0] + 0x14) = 0;
        *(undefined2 *)(aiStack_d0[0] + 4) = 0;
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      FUN_009c09f0();
    }
    else {
      FUN_008fa8e0();
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bf380 <= DAT_032bf380 - 1)) {
        pcStack_120 = "wxVector<struct ClassRegInfo>::at";
        uStack_124 = 0x13f;
        pcStack_128 = "d:\\wxWidgets-2.9.3\\include\\wx/vector.h";
        uStack_12c = 0x8fbcef;
        FUN_008402e0();
      }
      FUN_009c09f0();
    }
  }
LAB_008fbd1a:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



// WARNING: Removing unreachable block (ram,0x008fc266)
// WARNING: Removing unreachable block (ram,0x008fc02d)
// WARNING: Removing unreachable block (ram,0x008fc28c)
// WARNING: Removing unreachable block (ram,0x008fbff8)

void FUN_008fbd50(void)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  HINSTANCE pHVar4;
  BOOL BVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  undefined4 uStack_16c;
  undefined *puStack_168;
  undefined4 uStack_158;
  char *pcStack_154;
  undefined4 uStack_150;
  char *pcStack_14c;
  int local_124;
  uint local_120;
  int local_74;
  char cStack_6c;
  int iStack_68;
  char cStack_60;
  undefined auStack_5c [40];
  undefined auStack_34 [40];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uVar8 = DAT_032bf380;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd504c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_120 = 0;
  if (DAT_032bf380 != 0) {
    local_124 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bf380 <= local_120)) {
        pcStack_14c = "wxVector<struct ClassRegInfo>::at";
        uStack_150 = 0x13f;
        pcStack_154 = "d:\\wxWidgets-2.9.3\\include\\wx/vector.h";
        uStack_158 = 0x8fbdc5;
        FUN_008402e0();
      }
      iVar7 = local_124 + DAT_032bf388;
      piVar3 = (int *)FUN_00432231();
      iVar6 = *piVar3;
      if (*(uint *)(iVar6 + 0x18) < 8) {
        iVar6 = iVar6 + 4;
      }
      else {
        iVar6 = *(int *)(iVar6 + 4);
      }
      iVar1 = piVar3[1];
      pHVar4 = (HINSTANCE)FUN_008a65e0();
      pcStack_14c = (char *)0x8fbe0b;
      BVar5 = UnregisterClassW((LPCWSTR)(iVar6 + iVar1 * 2),pHVar4);
      if ((cStack_6c != '\0') && (local_74 != 0)) {
        _free(*(void **)(local_74 + 0x1c));
        if (*(uint *)(local_74 + 0x18) < 8) {
          *(undefined4 *)(local_74 + 0x18) = 7;
          *(undefined4 *)(local_74 + 0x14) = 0;
          *(undefined2 *)(local_74 + 4) = 0;
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if (BVar5 == 0) {
        puStack_168 = &DAT_00d25fa0;
        uStack_16c = 0x8fbe81;
        FUN_0043c211();
        puStack_168 = (undefined *)0x6;
        uStack_16c = 0x8fbe88;
        cVar2 = FUN_00846b30();
        if (cVar2 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 0;
          FUN_0081c0f1();
          uStack_4._0_1_ = 1;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FID_conflict_assign(iVar7,0,0xffffffff);
          FUN_0084ae90(&uStack_16c,auStack_34);
          uStack_4._0_1_ = 2;
          __time64((__time64_t *)0x0);
          GetCurrentThreadId();
          uStack_4._0_1_ = 4;
          FUN_008fa740();
          uStack_4._0_1_ = 1;
          _free((void *)0x0);
          uStack_4 = (uint)uStack_4._1_3_ << 8;
          FUN_0081b5bc();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      piVar3 = (int *)FUN_00432231();
      iVar6 = *piVar3;
      if (*(uint *)(iVar6 + 0x18) < 8) {
        iVar6 = iVar6 + 4;
      }
      else {
        iVar6 = *(int *)(iVar6 + 4);
      }
      iVar1 = piVar3[1];
      pHVar4 = (HINSTANCE)FUN_008a65e0();
      pcStack_14c = (char *)0x8fc09a;
      BVar5 = UnregisterClassW((LPCWSTR)(iVar6 + iVar1 * 2),pHVar4);
      if ((cStack_60 != '\0') && (iStack_68 != 0)) {
        _free(*(void **)(iStack_68 + 0x1c));
        if (*(uint *)(iStack_68 + 0x18) < 8) {
          *(undefined4 *)(iStack_68 + 0x18) = 7;
          *(undefined4 *)(iStack_68 + 0x14) = 0;
          *(undefined2 *)(iStack_68 + 4) = 0;
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if (BVar5 == 0) {
        puStack_168 = &DAT_00d25fa0;
        uStack_16c = 0x8fc105;
        FUN_0043c211();
        puStack_168 = (undefined *)0x6;
        uStack_16c = 0x8fc10c;
        cVar2 = FUN_00846b30();
        if (cVar2 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 5;
          FUN_0081c0f1();
          uStack_4._0_1_ = 6;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FID_conflict_assign(iVar7 + 0x24,0,0xffffffff);
          FUN_0084ae90(&uStack_16c,auStack_5c);
          uStack_4._0_1_ = 7;
          __time64((__time64_t *)0x0);
          GetCurrentThreadId();
          uStack_4._0_1_ = 9;
          FUN_008fa740();
          uStack_4._0_1_ = 6;
          _free((void *)0x0);
          uStack_4 = CONCAT31(uStack_4._1_3_,5);
          FUN_0081b5bc();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      local_124 = local_124 + 0x48;
      local_120 = local_120 + 1;
    } while (local_120 < uVar8);
  }
  uVar8 = 0;
  if (DAT_032bf380 != 0) {
    iVar7 = 0;
    do {
      iVar6 = DAT_032bf388 + iVar7;
      _free(*(void **)(DAT_032bf388 + 0x40 + iVar7));
      if (7 < *(uint *)(iVar6 + 0x3c)) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      *(undefined4 *)(iVar6 + 0x3c) = 7;
      *(undefined4 *)(iVar6 + 0x38) = 0;
      *(undefined2 *)(iVar6 + 0x28) = 0;
      _free(*(void **)(iVar6 + 0x1c));
      if (7 < *(uint *)(iVar6 + 0x18)) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      *(undefined4 *)(iVar6 + 0x18) = 7;
      *(undefined4 *)(iVar6 + 0x14) = 0;
      uVar8 = uVar8 + 1;
      *(undefined2 *)(iVar6 + 4) = 0;
      iVar7 = iVar7 + 0x48;
    } while (uVar8 < DAT_032bf380);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



void FUN_008fc3a0(void)

{
  FUN_008fce30();
  FUN_00917990(0);
  OleUninitialize();
  FUN_008fbd50();
  return;
}



void FUN_008fc3c0(void)

{
  HWND hWnd;
  char cVar1;
  int iVar2;
  BOOL BVar3;
  tagMSG atStack_78 [3];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5083;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = (**(code **)(*DAT_032bcb68 + 0xd4))();
  if (iVar2 == 0) {
    FUN_0086c4e0();
  }
  else {
    hWnd = *(HWND *)(iVar2 + 0x13c);
    BVar3 = PeekMessageW(atStack_78,hWnd,0,1,0);
    if ((BVar3 != 0) && (BVar3 = PeekMessageW(atStack_78,hWnd,1,1,0), BVar3 == 0)) {
      ExceptionList = local_c;
      return;
    }
    BVar3 = PostMessageW(hWnd,0,0,0);
    if (BVar3 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
        ExceptionList = local_c;
        return;
      }
    }
  }
  ExceptionList = local_c;
  return;
}



int FUN_008fc540(void)

{
  char cVar1;
  code *pcVar2;
  int iVar3;
  uint local_90;
  void *local_8c;
  int iStack_80;
  int iStack_7c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd50cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_004325b6();
  local_4 = 0;
  pcVar2 = (code *)FUN_0089f060();
  local_4 = 0xffffffff;
  _free(local_8c);
  if (7 < local_90) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (pcVar2 != (code *)0x0) {
    iVar3 = (*pcVar2)();
    if (-1 < iVar3) {
      ExceptionList = local_c;
      return iStack_80 * 100 + iStack_7c;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4 = 1;
      FUN_008423d0();
      local_4._0_1_ = 2;
      FUN_00843700();
      FUN_00847d90();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return 0;
}



int FUN_008fc6f0(void)

{
  undefined uVar1;
  DWORD DVar2;
  int iVar3;
  int local_5c;
  undefined4 local_58;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5118;
  local_c = ExceptionList;
  if (DAT_03238e44 != -1) {
    return DAT_03238e44;
  }
  ExceptionList = &local_c;
  if ((DAT_032bdb68 == 0) || (DVar2 = GetCurrentThreadId(), DVar2 == DAT_032bdb68)) {
    uVar1 = DAT_03235e94;
    DAT_03235e94 = 0;
  }
  else {
    uVar1 = FUN_00842f30(0);
  }
  local_58 = CONCAT31(local_58._1_3_,uVar1);
  local_4 = 0;
  FUN_004325b6(L"comctl32.dll");
  local_4._0_1_ = 1;
  local_5c = 0;
  FUN_0089ed30(local_54,0x68);
  local_4._0_1_ = 3;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  if (local_5c == 0) {
    DAT_03238e44 = 0;
    local_5c = 0;
    local_4 = 0xffffffff;
    if ((DAT_032bdb68 != 0) && (DVar2 = GetCurrentThreadId(), DVar2 != DAT_032bdb68)) {
      FUN_00842f30(local_58);
      ExceptionList = local_c;
      return 0;
    }
    DAT_03235e94 = (undefined)local_58;
    ExceptionList = local_c;
    return 0;
  }
  DAT_03238e44 = FUN_008fc540(&local_5c);
  if (DAT_03238e44 == 0) {
    FUN_004325b6(L"InitCommonControlsEx");
    local_4._0_1_ = 4;
    iVar3 = FUN_0089f060(local_30,0);
    local_4._0_1_ = 3;
    FUN_0040159c();
    if (iVar3 == 0) {
      DAT_03238e44 = 400;
    }
    else {
      FUN_004325b6(L"InitializeFlatSB");
      local_4 = CONCAT31(local_4._1_3_,5);
      iVar3 = FUN_0089f060(local_30,0);
      FUN_0040159c();
      DAT_03238e44 = (iVar3 != 0) + 0x1d6;
    }
  }
  local_5c = 0;
  local_4 = 0xffffffff;
  if ((DAT_032bdb68 != 0) && (DVar2 = GetCurrentThreadId(), DVar2 != DAT_032bdb68)) {
    FUN_00842f30(local_58);
    ExceptionList = local_c;
    return DAT_03238e44;
  }
  DAT_03235e94 = (undefined)local_58;
  ExceptionList = local_c;
  return DAT_03238e44;
}



bool FUN_008fc920(void)

{
  char cVar1;
  uint uVar2;
  
  if (DAT_032bf38c == -1) {
    uVar2 = FUN_008facb0();
    DAT_032bf38c = uVar2 & 0xff;
    return (uVar2 & 0xff) == 1;
  }
  if (DAT_032bf38c != 0) {
    cVar1 = FUN_008fa280();
    if (cVar1 != '\0') {
      return true;
    }
  }
  return false;
}



undefined4 FUN_008fc960(undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  
  if (DAT_032bf38c == 0xffffffff) {
    uVar2 = FUN_008facb0();
    DAT_032bf38c = uVar2 & 0xff;
    if (DAT_032bf38c != 1) {
      return 0;
    }
  }
  else {
    if (DAT_032bf38c == 0) {
      return 0;
    }
    cVar1 = FUN_008fa280();
    if (cVar1 == '\0') {
      return 0;
    }
  }
  cVar1 = FUN_008fb180(param_1);
  if (cVar1 == '\0') {
    return 0;
  }
  return 1;
}



bool __thiscall FUN_008fc9c0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = FUN_00841ba0(param_1,param_2);
  if (cVar1 == '\0') {
    return false;
  }
  FUN_008f7c30();
  FUN_008f6470();
  cVar1 = (**(code **)(*param_1_00 + 0xc4))();
  return cVar1 != '\0';
}



void __fastcall FUN_008fca00(undefined4 *param_1)

{
  *param_1 = wxAppBase::vftable;
  param_1[0x10] = wxAppBase::vftable;
  FUN_00840f30();
  return;
}



void FUN_008fca20(undefined4 param_1)

{
  FUN_0083f2d0(param_1);
  FUN_0088dd90(&DAT_00d46cc4);
  return;
}



void thunk_FUN_0083ffb0(void)

{
  char cVar1;
  uint uVar2;
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  pvStack_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &pvStack_c;
  FUN_0043c211("verbose");
  uStack_4 = 0;
  cVar1 = FUN_0088b5f0(auStack_30);
  _free(pvStack_14);
  if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c,uVar2);
  }
  if (cVar1 != '\0') {
    DAT_032bcb95 = 1;
  }
  ExceptionList = pvStack_c;
  return;
}



void __fastcall FUN_008fca50(int param_1)

{
  if (*(int *)(param_1 + 0x158) == -1) {
    *(undefined4 *)(param_1 + 0x158) = 1;
  }
  FUN_0083f170();
  return;
}



void thunk_FUN_0083f180(void)

{
  FUN_0083f180();
  return;
}



undefined FUN_008fca80(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  undefined uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5188;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_008fd5a0(param_1);
  uVar3 = 0;
  local_4 = 0;
  if (DAT_032bdbdc != 0) {
    cVar1 = FUN_00890620(param_2);
    if (cVar1 != '\0') {
      uVar3 = 1;
    }
  }
  local_4 = 0xffffffff;
  FUN_008fd4f0(uVar2);
  ExceptionList = local_c;
  return uVar3;
}



undefined FUN_008fcb00(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  undefined uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5188;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_008fd5a0(param_1);
  uVar3 = 0;
  local_4 = 0;
  if (DAT_032bdbdc != (int *)0x0) {
    cVar1 = (**(code **)(*DAT_032bdbdc + 0x28))(param_2,uVar2);
    if (cVar1 != '\0') {
      uVar3 = 1;
    }
  }
  local_4 = 0xffffffff;
  FUN_008fd4f0();
  ExceptionList = local_c;
  return uVar3;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x30);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00975950(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x54);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009797d0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_008fcc60(void)

{
  FUN_008fcd20();
  return;
}



undefined4 * __fastcall FUN_008fcc70(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxActivateEvent::vftable;
    *(undefined *)(puVar1 + 10) = *(undefined *)(param_1 + 0x28);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_008fcce0(undefined4 *param_1)

{
  FUN_00840db0();
  param_1[0x55] = 0;
  *(undefined *)(param_1 + 0x57) = 0;
  *(undefined *)((int)param_1 + 0x15d) = 0;
  *param_1 = wxAppBase::vftable;
  param_1[0x10] = wxAppBase::vftable;
  *(undefined *)((int)param_1 + 0x15e) = 1;
  param_1[0x56] = 0xffffffff;
  return param_1;
}



undefined4 * __thiscall FUN_008fcd20(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxAppBase::vftable;
  param_1_00[0x10] = wxAppBase::vftable;
  FUN_00840f30();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __fastcall FUN_008fcd50(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x154);
  if ((iVar1 == 0) && (DAT_032396e8 != 0)) {
    iVar1 = *(int *)(DAT_032396f0 + 8);
  }
  return iVar1;
}



undefined4 FUN_008fcd70(void)

{
  int iVar1;
  
  iVar1 = FUN_00847310();
  if (iVar1 != 0) {
    iVar1 = FUN_00847680(*(undefined4 *)(iVar1 + 0x4c));
    if (iVar1 != 0) {
      return *(undefined4 *)(iVar1 + 0x54);
    }
  }
  return 0;
}



void __thiscall FUN_008fcd90(int *param_1_00,char param_1)

{
  uint uVar1;
  undefined **local_38 [2];
  int *local_30;
  char local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a68;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  if (param_1 != *(char *)((int)param_1_00 + 0x15e)) {
    *(char *)((int)param_1_00 + 0x15e) = param_1;
    FUN_00845a20(0,DAT_032bfef8);
    local_38[0] = wxActivateEvent::vftable;
    local_10 = param_1;
    local_4 = 0;
    local_30 = param_1_00;
    (**(code **)(*param_1_00 + 0x18))(local_38,uVar1);
    local_4 = 0xffffffff;
    local_38[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  return;
}



void FUN_008fce30(void)

{
  int iVar1;
  
  FUN_0083f620();
  while (DAT_032396e8 != 0) {
    if (*(int **)(DAT_032396f0 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(DAT_032396f0 + 8) + 4))(1);
    }
  }
  FUN_008f5d80();
  FUN_008f77f0();
  FUN_008f7d40();
  iVar1 = DAT_032bf350;
  if (DAT_032bf350 != 0) {
    FUN_008f9540();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  FUN_0083f530();
  return;
}



undefined FUN_008fcea0(void)

{
  int iVar1;
  undefined uVar2;
  char cVar3;
  undefined **local_38 [10];
  undefined local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a68;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_0083f7b0(DAT_0323f878 ^ (uint)&stack0xffffffc0);
  FUN_00845a20(0,DAT_032bd450);
  local_38[0] = wxIdleEvent::vftable;
  local_10 = 0;
  local_4 = 0;
  for (iVar1 = DAT_032396f0; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    cVar3 = (**(code **)(**(int **)(iVar1 + 8) + 0x214))(local_38);
    if (cVar3 != '\0') {
      uVar2 = 1;
    }
  }
  FUN_0092b030();
  local_4 = 0xffffffff;
  local_38[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return uVar2;
}



undefined4 * FUN_008fcf60(void)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    iVar2 = FUN_00a475e9();
    puVar1[1] = iVar2 + 0x40;
    *puVar1 = wxMessageOutputBest::vftable;
    puVar1[2] = 0;
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 * FUN_008fcfa0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxGUIAppTraits::vftable;
    return puVar1;
  }
  return (undefined4 *)0x0;
}



void __fastcall thunk_FUN_00979720(undefined4 *param_1)

{
  uint uVar1;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bd5228;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &pvStack_c;
  *param_1 = wxFontDialogBase::vftable;
  uStack_4 = 0;
  FUN_0097b200(uVar1);
  uStack_4 = 0xffffffff;
  FUN_00924620();
  ExceptionList = pvStack_c;
  return;
}



undefined4 __thiscall FUN_008fcfd0(undefined4 param_1_00,undefined4 param_1)

{
  FUN_0095dd80(param_1);
  return param_1_00;
}



void thunk_FUN_0095db80(void)

{
  if (DAT_032c1050 < 1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\utilsgui.cpp",0x4a,"wxEndBusyCursor",
                   "gs_wxBusyCursorCount > 0",
                   L"no matching wxBeginBusyCursor() for wxEndBusyCursor()");
    }
  }
  else {
    DAT_032c1050 = DAT_032c1050 + -1;
    if (DAT_032c1050 == 0) {
      SetCursor(DAT_032c104c);
      DAT_032c104c = (HCURSOR)0x0;
      return;
    }
  }
  return;
}



undefined4 * __thiscall
FUN_008fd000(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxWindowListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __thiscall FUN_008fd080(int *param_1_00,undefined4 param_1,undefined4 *param_2)

{
  undefined4 unaff_retaddr;
  undefined4 *puVar1;
  undefined4 *local_4;
  
  local_4 = (undefined4 *)param_2[1];
  puVar1 = &param_2;
  param_2 = (undefined4 *)*param_2;
  (**(code **)(*param_1_00 + 0x25c))(puVar1,&local_4);
  *local_4 = unaff_retaddr;
  local_4[1] = puVar1;
  return;
}



void __thiscall FUN_008fd0c0(int param_1_00,uint param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (((param_1 & 10) != 10) && ((param_1 & 10) != 0)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/msgdlg.h",0x7b,
                   "wxMessageDialogBase::SetMessageDialogStyle",
                   "((style & wxYES_NO) == wxYES_NO) || !(style & wxYES_NO)",
                   "wxYES and wxNO may only be used together");
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      if (((param_1 & 2) != 0) && ((param_1 & 4) != 0)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/msgdlg.h",0x7e,
                     "wxMessageDialogBase::SetMessageDialogStyle",
                     "!(style & wxYES) || !(style & wxOK)",
                     "wxOK and wxYES/wxNO can\'t be used together");
      }
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        if (((param_1 & 2) == 0) && ((param_1 & 4) == 0)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/msgdlg.h",0x81,
                       "wxMessageDialogBase::SetMessageDialogStyle",
                       "(style & wxYES) || (style & wxOK)","one of wxOK and wxYES/wxNO must be used"
                      );
        }
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          if ((param_1 & 0x13ec) == 0x13ec) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/msgdlg.h",0x84,
                         "wxMessageDialogBase::SetMessageDialogStyle","(style & wxID_OK) != wxID_OK"
                         ,"wxMessageBox: Did you mean wxOK (and not wxID_OK)?");
          }
          if (PTR_FUN_03235c4c != (undefined *)0x0) {
            if (((param_1 & 0x80) != 0) && ((param_1 & 8) == 0)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/msgdlg.h",0x87,
                           "wxMessageDialogBase::SetMessageDialogStyle",
                           "!(style & wxNO_DEFAULT) || (style & wxNO)",
                           "wxNO_DEFAULT is invalid without wxNO");
            }
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              if (((param_1 & 0x80000000) != 0) && ((param_1 & 0x10) == 0)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/msgdlg.h",0x8a,
                             "wxMessageDialogBase::SetMessageDialogStyle",
                             "!(style & wxCANCEL_DEFAULT) || (style & wxCANCEL)",
                             "wxCANCEL_DEFAULT is invalid without wxCANCEL");
              }
              if (((PTR_FUN_03235c4c != (undefined *)0x0) && ((param_1 & 0x80000000) != 0)) &&
                 ((param_1 & 0x80) != 0)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/msgdlg.h",0x8d,
                             "wxMessageDialogBase::SetMessageDialogStyle",
                             "!(style & wxCANCEL_DEFAULT) || !(style & wxNO_DEFAULT)",
                             "only one default button can be specified");
              }
            }
          }
        }
      }
    }
  }
  *(uint *)(param_1_00 + 0x25c) = param_1;
  return;
}



undefined4 * __thiscall FUN_008fd270(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd51c6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044cc1c(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  local_4 = 0;
  *param_1_00 = wxFontDialogBase::vftable;
  FUN_0097b2c0();
  param_1_00[0x11] = param_1;
  local_4 = CONCAT31(local_4._1_3_,1);
  if (param_2 != 0) {
    FUN_0097b520(param_2);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_008fd2f0(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x44) = param_1;
  return 1;
}



undefined4 __thiscall FUN_008fd300(undefined4 param_1_00,byte param_1)

{
  FUN_00979720();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int * __thiscall FUN_008fd320(int *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd51f8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_008fd270(param_1,param_2);
  local_4 = 0;
  *param_1_00 = (int)wxFontDialog::vftable;
  if (param_2 != 0) {
    FUN_0097b520(param_2);
  }
  (**(code **)(*param_1_00 + 0x3bc))(param_1,uVar1);
  ExceptionList = param_1_00;
  return param_1_00;
}



undefined4 __thiscall FUN_008fd3a0(int param_1_00,uint param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(uint *)(param_1_00 + 0x1a4) <= param_1) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    return *(undefined4 *)(*(int *)(param_1_00 + 0x1a8) + param_1 * 4);
  }
  return *(undefined4 *)(*(int *)(param_1_00 + 0x1a8) + param_1 * 4);
}



void __thiscall FUN_008fd400(int *param_1_00,int *param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  local_c = ExceptionList;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be82db;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *param_1_00 = 0;
  for (iVar2 = DAT_032396f0; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0xc)) {
    piVar1 = *(int **)(iVar2 + 8);
    if (piVar1 != param_1) {
      cVar3 = FUN_0091b930(uVar4);
      if ((cVar3 == '\0') || (cVar3 = (**(code **)(*piVar1 + 0xdc))(), cVar3 == '\0')) {
        if (*param_1_00 == 0) {
          puVar5 = (undefined4 *)operator_new(0x18);
          uStack_4 = 0;
          if (puVar5 == (undefined4 *)0x0) {
            puVar5 = (undefined4 *)0x0;
          }
          else {
            *puVar5 = wxListBase::vftable;
            FUN_0086ad40(0);
            *puVar5 = wxWindowList::vftable;
          }
          uStack_4 = 0xffffffff;
          *param_1_00 = (int)puVar5;
        }
        FUN_0086ad60(piVar1);
      }
      else {
        (**(code **)(*piVar1 + 0xd8))(0);
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_008fd4f0(int *param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  
  if (*(char *)(param_1 + 1) != '\0') {
    iVar3 = DAT_032396f0;
    if (DAT_032396f0 != 0) {
      do {
        piVar1 = *(int **)(iVar3 + 8);
        if ((*param_1 == 0) || (iVar2 = FUN_0086af40(piVar1), iVar2 == 0)) {
          (**(code **)(*piVar1 + 0xd8))(1);
        }
        piVar1 = (int *)(iVar3 + 0xc);
        iVar3 = *piVar1;
      } while (*piVar1 != 0);
    }
    if ((undefined4 *)*param_1 != (undefined4 *)0x0) {
      (***(code ***)(undefined4 *)*param_1)(1);
    }
  }
  return;
}



undefined4 FUN_008fd540(void)

{
  char cVar1;
  
  if (DAT_032bcb68 != 0) {
    cVar1 = FUN_00841c70(0);
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



undefined4 __thiscall FUN_008fd560(undefined4 param_1_00,byte param_1)

{
  FUN_0086ade0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_008fd580(int param_1_00,char param_1)

{
  *(char *)(param_1_00 + 4) = param_1;
  if (param_1 != '\0') {
    FUN_008fd400(0);
  }
  return param_1_00;
}



int __thiscall FUN_008fd5a0(int param_1_00,undefined4 param_1)

{
  *(undefined *)(param_1_00 + 4) = 1;
  FUN_008fd400(param_1);
  return param_1_00;
}



undefined FUN_008fd5c0(undefined4 param_1,char param_2)

{
  char cVar1;
  uint uVar2;
  undefined uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5188;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_008fd400(param_1);
  uVar3 = 0;
  local_4 = 0;
  if (param_2 == '\0') {
    if (DAT_032bcb68 == 0) goto LAB_008fd621;
    uVar4 = 0;
  }
  else {
    if (DAT_032bcb68 == 0) goto LAB_008fd621;
    uVar4 = 1;
  }
  cVar1 = FUN_00841c70(uVar4);
  if (cVar1 != '\0') {
    uVar3 = 1;
  }
LAB_008fd621:
  local_4 = 0xffffffff;
  FUN_008fd4f0(uVar2);
  ExceptionList = local_c;
  return uVar3;
}



void __fastcall FUN_008fd650(undefined4 *param_1)

{
  *param_1 = wxMessageDialogBase::vftable;
  _free((void *)param_1[0xc3]);
  if (7 < (uint)param_1[0xc2]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xbd]);
  }
  param_1[0xc2] = 7;
  param_1[0xc1] = 0;
  *(undefined2 *)(param_1 + 0xbd) = 0;
  _free((void *)param_1[0xba]);
  if (7 < (uint)param_1[0xb9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xb4]);
  }
  param_1[0xb9] = 7;
  param_1[0xb8] = 0;
  *(undefined2 *)(param_1 + 0xb4) = 0;
  _free((void *)param_1[0xb1]);
  if (7 < (uint)param_1[0xb0]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xab]);
  }
  param_1[0xb0] = 7;
  param_1[0xaf] = 0;
  *(undefined2 *)(param_1 + 0xab) = 0;
  _free((void *)param_1[0xa8]);
  if (7 < (uint)param_1[0xa7]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xa2]);
  }
  param_1[0xa7] = 7;
  param_1[0xa6] = 0;
  *(undefined2 *)(param_1 + 0xa2) = 0;
  _free((void *)param_1[0x9f]);
  if (7 < (uint)param_1[0x9e]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x99]);
  }
  param_1[0x9e] = 7;
  param_1[0x9d] = 0;
  *(undefined2 *)(param_1 + 0x99) = 0;
  _free((void *)param_1[0x95]);
  if (7 < (uint)param_1[0x94]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x8f]);
  }
  param_1[0x94] = 7;
  param_1[0x93] = 0;
  *(undefined2 *)(param_1 + 0x8f) = 0;
  _free((void *)param_1[0x8c]);
  if (7 < (uint)param_1[0x8b]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x86]);
  }
  param_1[0x8b] = 7;
  param_1[0x8a] = 0;
  *(undefined2 *)(param_1 + 0x86) = 0;
  _free((void *)param_1[0x83]);
  if (7 < (uint)param_1[0x82]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x7d]);
  }
  param_1[0x81] = 0;
  param_1[0x82] = 7;
  *(undefined2 *)(param_1 + 0x7d) = 0;
  FUN_00924620();
  return;
}



undefined4 __thiscall FUN_008fd850(int *param_1_00,undefined4 param_1)

{
  undefined4 unaff_retaddr;
  
  (**(code **)(*param_1_00 + 0x3d4))(param_1_00 + 0x98,param_1);
  (**(code **)(*param_1_00 + 0x3d4))(param_1_00 + 0xa1,unaff_retaddr);
  return 1;
}



undefined4 __thiscall FUN_008fd890(int *param_1_00,undefined4 param_1)

{
  undefined4 unaff_ESI;
  undefined4 unaff_retaddr;
  
  (**(code **)(*param_1_00 + 0x3d4))(param_1_00 + 0x98,param_1);
  (**(code **)(*param_1_00 + 0x3d4))(param_1_00 + 0xa1,unaff_retaddr);
  (**(code **)(*param_1_00 + 0x3d4))(param_1_00 + 0xb3,unaff_ESI);
  return 1;
}



undefined4 __thiscall FUN_008fd910(int *param_1_00,undefined4 param_1)

{
  undefined4 unaff_retaddr;
  
  (**(code **)(*param_1_00 + 0x3d4))(param_1_00 + 0xaa,param_1);
  (**(code **)(*param_1_00 + 0x3d4))(param_1_00 + 0xb3,unaff_retaddr);
  return 1;
}



void __fastcall FUN_008fd970(undefined4 *param_1)

{
  *param_1 = wxMessageDialogBase::vftable;
  _free((void *)param_1[0xc3]);
  if (7 < (uint)param_1[0xc2]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xbd]);
  }
  param_1[0xc2] = 7;
  param_1[0xc1] = 0;
  *(undefined2 *)(param_1 + 0xbd) = 0;
  _free((void *)param_1[0xba]);
  if (7 < (uint)param_1[0xb9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xb4]);
  }
  param_1[0xb9] = 7;
  param_1[0xb8] = 0;
  *(undefined2 *)(param_1 + 0xb4) = 0;
  _free((void *)param_1[0xb1]);
  if (7 < (uint)param_1[0xb0]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xab]);
  }
  param_1[0xb0] = 7;
  param_1[0xaf] = 0;
  *(undefined2 *)(param_1 + 0xab) = 0;
  _free((void *)param_1[0xa8]);
  if (7 < (uint)param_1[0xa7]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xa2]);
  }
  param_1[0xa7] = 7;
  param_1[0xa6] = 0;
  *(undefined2 *)(param_1 + 0xa2) = 0;
  _free((void *)param_1[0x9f]);
  if (7 < (uint)param_1[0x9e]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x99]);
  }
  param_1[0x9e] = 7;
  param_1[0x9d] = 0;
  *(undefined2 *)(param_1 + 0x99) = 0;
  _free((void *)param_1[0x95]);
  if (7 < (uint)param_1[0x94]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x8f]);
  }
  param_1[0x94] = 7;
  param_1[0x93] = 0;
  *(undefined2 *)(param_1 + 0x8f) = 0;
  _free((void *)param_1[0x8c]);
  if (7 < (uint)param_1[0x8b]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x86]);
  }
  param_1[0x8b] = 7;
  param_1[0x8a] = 0;
  *(undefined2 *)(param_1 + 0x86) = 0;
  _free((void *)param_1[0x83]);
  if (7 < (uint)param_1[0x82]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x7d]);
  }
  param_1[0x81] = 0;
  param_1[0x82] = 7;
  *(undefined2 *)(param_1 + 0x7d) = 0;
  FUN_00924620();
  return;
}



void __fastcall FUN_008fd980(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd5228;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  _free(*(void **)(param_1 + 0x36c));
  if (7 < *(uint *)(param_1 + 0x368)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x354));
  }
  *(undefined4 *)(param_1 + 0x368) = 7;
  *(undefined4 *)(param_1 + 0x364) = 0;
  *(undefined2 *)(param_1 + 0x354) = 0;
  FUN_0097bd90(uVar1);
  local_4 = 0xffffffff;
  FUN_00924620();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008fda20(undefined4 param_1_00,byte param_1)

{
  FUN_008fd980();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall
FUN_008fda40(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  void **ppvVar4;
  uint param_8;
  void *param_9;
  undefined4 param_11;
  undefined4 param_12;
  undefined4 param_13;
  undefined4 param_14;
  undefined4 param_15;
  undefined4 param_16;
  undefined4 param_17;
  undefined4 param_18;
  undefined4 param_19;
  void **local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd5260;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  puVar1 = (undefined4 *)FUN_00847c00(param_14,param_1,5);
  local_4._0_1_ = 1;
  FUN_00820e3f(param_19,param_1,10);
  FUN_00820e3f(param_18,param_1,9);
  FUN_0083e8f0(param_17,param_1,8);
  FUN_0083e8f0(param_16,param_1,7);
  FUN_00820e3f(param_15,param_1,6);
  uVar3 = *(undefined4 *)*puVar1;
  FUN_00820e3f(param_13,param_1,4);
  FUN_00820e3f(param_12,param_1,3);
  FUN_00820e3f(param_11,param_1,2);
  FUN_00840990(&param_2,param_1,1);
  uVar2 = FUN_008854f0();
  uVar3 = FUN_00884e10(local_18,local_20,local_28,uVar3,local_2c,local_30,local_24,local_1c,local_14
                      );
  uVar3 = FUN_00853980(param_1_00,uVar2,uVar3);
  local_4 = (uint)local_4._1_3_ << 8;
  ppvVar4 = (void **)FUN_00850350();
  if (local_34 != ppvVar4) {
    *(short *)(local_34 + 2) = *(short *)(local_34 + 2) + -1;
    if (*(short *)(local_34 + 2) == 0) {
      if (*(char *)((int)local_34 + 10) != '\0') {
        _free(*local_34);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_34);
    }
    FUN_00850350();
  }
  _free(param_9);
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  ExceptionList = local_c;
  return uVar3;
}



int __thiscall FUN_008fdc10(int param_1_00,int param_1)

{
  int iVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaad9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1_00 + 0x24);
  if (iVar1 != -3) {
    param_1_00 = FUN_0097d110(local_30,iVar1,5,DAT_0323f878 ^ (uint)&stack0xffffffc4);
    uStack_4 = 0;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if ((iVar1 != -3) && (_free(local_14), 7 < local_18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall
FUN_008fdce0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd52f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044cc1c(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  *param_1_00 = wxMessageDialogBase::vftable;
  param_1_00[0x82] = 7;
  param_1_00[0x81] = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 0x7d) = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  param_1_00[0x83] = 0;
  param_1_00[0x8b] = 7;
  param_1_00[0x8a] = 0;
  *(undefined2 *)(param_1_00 + 0x86) = 0;
  param_1_00[0x8c] = 0;
  param_1_00[0x94] = 7;
  param_1_00[0x93] = 0;
  local_4._0_1_ = 2;
  *(undefined2 *)(param_1_00 + 0x8f) = 0;
  FID_conflict_assign(param_3,0,0xffffffff);
  param_1_00[0x95] = 0;
  param_1_00[0x9e] = 7;
  param_1_00[0x9d] = 0;
  *(undefined2 *)(param_1_00 + 0x99) = 0;
  param_1_00[0x9f] = 0;
  param_1_00[0xa7] = 7;
  param_1_00[0xa6] = 0;
  *(undefined2 *)(param_1_00 + 0xa2) = 0;
  param_1_00[0xa8] = 0;
  param_1_00[0xb0] = 7;
  param_1_00[0xaf] = 0;
  *(undefined2 *)(param_1_00 + 0xab) = 0;
  param_1_00[0xb1] = 0;
  param_1_00[0xb9] = 7;
  param_1_00[0xb8] = 0;
  *(undefined2 *)(param_1_00 + 0xb4) = 0;
  param_1_00[0xba] = 0;
  param_1_00[0xc2] = 7;
  param_1_00[0xc1] = 0;
  *(undefined2 *)(param_1_00 + 0xbd) = 0;
  param_1_00[0xc3] = 0;
  param_1_00[0x11] = param_1;
  local_4 = CONCAT31(local_4._1_3_,8);
  FUN_008fd0c0(param_4);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_008fde60(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5328;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_30;
  ExceptionList = &local_c;
  iVar2 = FUN_008fdc10(local_30);
  local_4 = 0;
  if (param_1 != iVar2) {
    FID_conflict_assign(iVar2,0,0xffffffff);
  }
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  ExceptionList = local_c;
  return;
}



int FUN_008fdee0(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beff10;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  FUN_0043c211(&DAT_00d47f8c);
  local_4 = CONCAT31(local_4._1_3_,1);
  iVar2 = FUN_0084a340(uVar1);
  if (iVar2 == 0) {
    uVar3 = FUN_0084d360(local_54);
  }
  else {
    uVar3 = FUN_0084f210(local_54,local_30);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar3,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



int FUN_008fdff0(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beff10;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  FUN_0043c211(&DAT_00d47f90);
  local_4 = CONCAT31(local_4._1_3_,1);
  iVar2 = FUN_0084a340(uVar1);
  if (iVar2 == 0) {
    uVar3 = FUN_0084d360(local_54);
  }
  else {
    uVar3 = FUN_0084f210(local_54,local_30);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar3,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



int FUN_008fe100(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beff10;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  FUN_0043c211(&DAT_00d47f94);
  local_4 = CONCAT31(local_4._1_3_,1);
  iVar2 = FUN_0084a340(uVar1);
  if (iVar2 == 0) {
    uVar3 = FUN_0084d360(local_54);
  }
  else {
    uVar3 = FUN_0084f210(local_54,local_30);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar3,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



int FUN_008fe210(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beff10;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  FUN_0043c211("Cancel");
  local_4 = CONCAT31(local_4._1_3_,1);
  iVar2 = FUN_0084a340(uVar1);
  if (iVar2 == 0) {
    uVar3 = FUN_0084d360(local_54);
  }
  else {
    uVar3 = FUN_0084f210(local_54,local_30);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar3,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



int FUN_008fe320(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beff10;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  FUN_0043c211(&DAT_00d47fa0);
  local_4 = CONCAT31(local_4._1_3_,1);
  iVar2 = FUN_0084a340(uVar1);
  if (iVar2 == 0) {
    uVar3 = FUN_0084d360(local_54);
  }
  else {
    uVar3 = FUN_0084f210(local_54,local_30);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar3,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall
FUN_008fe430(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  FUN_008fdce0(param_1,param_2,param_3,param_4);
  *param_1_00 = wxMessageDialog::vftable;
  param_1_00[0xc5] = 0;
  return param_1_00;
}



undefined4 __thiscall FUN_008fe470(undefined4 param_1,byte param_2)

{
  FUN_008fd650();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void FUN_008fe490(undefined4 param_1,undefined4 param_2,uint param_3,undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined **local_328 [197];
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd535b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_328;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffcd4;
  ExceptionList = &local_c;
  if ((param_3 & 0x40f00) == 0) {
    param_3 = param_3 | (-(uint)((param_3 & 2) != 0) & 0xfffffc00) + 0x800;
  }
  FUN_008fdce0(param_4,param_1,param_2,param_3);
  local_328[0] = wxMessageDialog::vftable;
  local_14 = 0;
  local_4 = 0;
  uVar2 = FUN_00983fb0(uVar1);
  switch(uVar2) {
  case 0x1391:
    local_4 = 0xffffffff;
    FUN_008fd650();
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\utilscmn.cpp",0x563,"wxMessageBox","Assert failure",
                   L"unexpected return code from wxMessageDialog");
    }
  case 0x13ed:
    local_4 = 0xffffffff;
    FUN_008fd650();
    break;
  case 0x13ec:
    local_4 = 0xffffffff;
    FUN_008fd650();
    break;
  case 0x13ef:
    local_4 = 0xffffffff;
    FUN_008fd650();
    break;
  case 0x13f0:
    local_4 = 0xffffffff;
    FUN_008fd650();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008fe6a0(void)

{
  int iVar1;
  undefined *puVar2;
  undefined auStack_d4 [36];
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined4 uStack_a8;
  char *pcStack_a4;
  undefined4 uStack_a0;
  wchar_t *pwStack_9c;
  wchar_t *pwStack_98;
  undefined *puStack_94;
  undefined *local_80;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd53b0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  ExceptionList = &local_c;
  local_80 = (undefined *)0x0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  puStack_94 = (undefined *)0x8fe70c;
  FUN_0081c0f1();
  local_4._0_1_ = 1;
  FUN_0089e060();
  puStack_94 = (undefined *)0x8fe725;
  iVar1 = FUN_0089e060();
  puStack_94 = *(undefined **)(iVar1 + 0xe4);
  pwStack_98 = L"01:54:15";
  pwStack_9c = L"Dec 21 2011";
  uStack_a0 = 1;
  pcStack_a4 = "wchar_t";
  uStack_a8 = 3;
  uStack_ac = 9;
  uStack_b0 = 2;
  local_80 = auStack_d4;
  puVar2 = auStack_d4;
  FUN_0089e060(auStack_d4);
  FUN_0084aa20(puVar2);
  FUN_008fda40(local_7c);
  local_4._0_1_ = 0;
  FUN_0081b5bc();
  puStack_94 = (undefined *)0x8fe788;
  FUN_004325b6();
  local_4._0_1_ = 2;
  puStack_94 = (undefined *)0x8fe79e;
  FUN_004325b6();
  puStack_94 = local_34;
  pwStack_98 = (wchar_t *)0x3;
  pwStack_9c = (wchar_t *)0x9;
  uStack_a0 = 2;
  pcStack_a4 = local_7c;
  local_4 = CONCAT31(local_4._1_3_,3);
  uStack_a8 = 0x8fe7c2;
  FUN_008a6dd0();
  puStack_94 = (undefined *)0x8fe7cc;
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    puStack_94 = &UNK_008fe7e0;
    FUN_00a3f6a1();
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  puStack_94 = (undefined *)0x8fe800;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    puStack_94 = &UNK_008fe814;
    FUN_00a3f6a1();
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  puStack_94 = (undefined *)0x8fe834;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    puStack_94 = &UNK_008fe848;
    FUN_00a3f6a1();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_008fe870(int param_1_00,int param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcefa9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  uVar1 = *(undefined4 *)(param_1_00 + 0x70);
  uVar2 = *(undefined4 *)(param_1_00 + 0x6c);
  local_4 = 0;
  FID_conflict_append(param_1_00,0,0xffffffff);
  FID_conflict_append(1,0x20);
  FUN_008758a0(uVar2);
  FID_conflict_append(1,0x2e);
  FUN_008758a0(uVar1);
  iVar3 = *(int *)(param_1_00 + 0x74);
  if (iVar3 != 0) {
    FID_conflict_append(1,0x2e);
    FUN_008758a0(iVar3);
  }
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_008fe940(int param_1_00,int param_1)

{
  uint uVar1;
  bool bVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaad9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  bVar2 = *(int *)(param_1_00 + 0x38) == 0;
  if (bVar2) {
    param_1_00 = FUN_008fe870(local_30);
    local_4 = 0;
  }
  else {
    param_1_00 = param_1_00 + 0x24;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if (bVar2) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar1);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_008fea00(undefined4 param_1)

{
  short *psVar1;
  short *psVar2;
  undefined local_d0 [4];
  undefined4 local_cc;
  uint local_b8;
  void *local_b4;
  undefined local_ac [4];
  uint local_a8;
  undefined4 local_98;
  uint local_94;
  void *local_90;
  undefined local_88 [72];
  undefined local_40 [48];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5401;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_d0;
  ExceptionList = &local_c;
  FUN_008fe6a0(local_88,DAT_0323f878 ^ (uint)local_d0);
  local_4 = 0;
  FUN_008fe940(local_ac);
  local_4._0_1_ = 1;
  psVar1 = &DAT_00d23e68;
  do {
    psVar2 = psVar1;
    psVar1 = psVar2 + 1;
  } while (*psVar2 != 0);
  FUN_00473ccc(&DAT_00d23e68,(int)(psVar2 + -0x691f34) >> 1);
  FID_conflict_append(local_40,0,0xffffffff);
  FUN_004325b6(L"wxWidgets information");
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_008fe490(local_ac,local_d0,0x804,param_1,0xffffffff,0xffffffff);
  _free(local_b4);
  if (7 < local_b8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_cc);
  }
  _free(local_90);
  if (7 < local_94) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_a8);
  }
  local_a8 = local_a8 & 0xffff0000;
  local_94 = 7;
  local_98 = 0;
  FUN_008a6d30();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int FUN_008feb60(int param_1,int param_2,uint param_3)

{
  uint uVar1;
  char cVar2;
  uint uVar3;
  undefined4 *puVar4;
  uint uVar5;
  undefined4 uStack_c4;
  undefined4 uStack_c0;
  char *pcStack_bc;
  undefined4 uStack_b8;
  char *pcStack_b4;
  char **ppcStack_b0;
  char *pcStack_ac;
  char *pcStack_a8;
  wchar_t *pwStack_a4;
  uint uStack_a0;
  ushort local_88 [2];
  uint local_84;
  undefined4 local_80;
  char **local_7c;
  uint local_78;
  int local_74;
  undefined local_70 [100];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd5461;
  local_c = ExceptionList;
  uStack_a0 = DAT_0323f878 ^ (uint)&stack0xffffff64;
  ExceptionList = &local_c;
  local_80 = 0;
  local_4 = 0;
  local_74 = param_1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_3 == 0)) {
    pwStack_a4 = L"this is useless to call without any flags";
    pcStack_a8 = "flags";
    pcStack_ac = "wxStripMenuCodes";
    ppcStack_b0 = (char **)0x4a4;
    pcStack_b4 = "..\\..\\src\\common\\utilscmn.cpp";
    uStack_b8 = 0x8febdb;
    FUN_00840480();
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar4 = (undefined4 *)(param_1 + 4);
  *(undefined2 *)puVar4 = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  uVar1 = *(uint *)(param_2 + 0x14);
  uVar5 = *(uint *)(param_1 + 0x14);
  local_4 = 0;
  local_80 = 1;
  if ((uVar5 <= uVar1) && (*(uint *)(param_1 + 0x18) != uVar1)) {
    pwStack_a4 = (wchar_t *)0x1;
    pcStack_ac = (char *)0x8fec21;
    pcStack_a8 = (char *)uVar1;
    cVar2 = FUN_004182d2();
    if (cVar2 != '\0') {
      *(uint *)(param_1 + 0x14) = uVar5;
      if (7 < *(uint *)(param_1 + 0x18)) {
        puVar4 = (undefined4 *)*puVar4;
      }
      *(undefined2 *)((int)puVar4 + uVar5 * 2) = 0;
    }
  }
  uVar5 = 0;
  if (uVar1 != 0) {
    local_84 = param_3 & 1;
    do {
      pcStack_a8 = (char *)&local_78;
      pcStack_ac = (char *)0x8fec61;
      pwStack_a4 = (wchar_t *)uVar5;
      FUN_0081feb2();
      uVar3 = local_78 & 0xffff;
      if ((local_84 == 0) || ((short)local_78 != 0x26)) {
        if (((param_3 & 2) != 0) && ((short)local_78 == 9)) {
          ExceptionList = local_c;
          return param_1;
        }
      }
      else {
        uVar5 = uVar5 + 1;
        if (uVar5 == uVar1) {
          local_7c = (char **)&uStack_c4;
          FUN_0043c211(&DAT_00d25fa0);
          cVar2 = FUN_00846b30(6);
          if (cVar2 != '\0') {
            pwStack_a4 = L"Invalid menu string \'%s\'";
            pcStack_a8 = (char *)0x8fecbb;
            FUN_0081c0f1();
            local_7c = &pcStack_ac;
            ppcStack_b0 = &pcStack_ac;
            local_4 = 1;
            pcStack_b4 = (char *)0x8fecd7;
            FUN_00432231();
            ppcStack_b0 = (char **)&DAT_00d25fa0;
            pcStack_b4 = "wxStripMenuCodes";
            uStack_b8 = 0x4b5;
            pcStack_bc = "..\\..\\src\\common\\utilscmn.cpp";
            uStack_c0 = 6;
            local_4._0_1_ = 2;
            uStack_c4 = 0x8fecfe;
            FUN_008423d0();
            ppcStack_b0 = (char **)local_70;
            local_4._0_1_ = 4;
            pcStack_b4 = (char *)0x8fed1a;
            FUN_00848860();
            local_4._0_1_ = 1;
            pwStack_a4 = L"䲍〤蓆鰤";
            FUN_00842440();
            local_4 = (uint)local_4._1_3_ << 8;
            pwStack_a4 = L"⓫赖⑔刜쾋柨\xf211࿿岷ᠤძ蓶갤";
            FUN_0081b5bc();
          }
        }
        else {
          pcStack_a8 = (char *)local_88;
          pcStack_ac = (char *)0x8fed4b;
          pwStack_a4 = (wchar_t *)uVar5;
          FUN_0081feb2();
          uVar3 = (uint)local_88[0];
        }
      }
      pcStack_a8 = (char *)0x1;
      pcStack_ac = (char *)0x8fed6f;
      pwStack_a4 = (wchar_t *)uVar3;
      FID_conflict_append();
      uVar5 = uVar5 + 1;
    } while (uVar5 < uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined ** FUN_008feda0(void)

{
  return &PTR_u_wxSystemSettingsModule_03238fb0;
}



uint FUN_008fedb0(uint param_1)

{
  uint uVar1;
  
  if (((int)param_1 < 1) || (0x26 < param_1)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\settings.cpp",0x1a3,"wxSystemSettingsNative::GetMetric",
                   "index > 0 && (size_t)index < (sizeof(gs_metricsMap)/sizeof(gs_metricsMap[0]))",
                   L"invalid metric");
    }
    uVar1 = 0;
  }
  else {
    if (param_1 == 0x26) {
                    // WARNING: Could not recover jumptable at 0x008fedc4. Too many branches
                    // WARNING: Treating indirect jump as call
      uVar1 = GetDoubleClickTime();
      return uVar1;
    }
    if (*(int *)(&DAT_00d48690 + param_1 * 4) == -1) {
      return 0xffffffff;
    }
    uVar1 = GetSystemMetrics(*(int *)(&DAT_00d48690 + param_1 * 4));
    if (param_1 == 0x22) {
      return uVar1 & 1;
    }
  }
  return uVar1;
}



undefined4 FUN_008fee20(undefined4 param_1,uint param_2)

{
  FUN_004561e7(param_2,param_2 >> 8,param_2 >> 0x10,0xff);
  return param_1;
}



void FUN_008fee50(void)

{
  if (DAT_032bf424 != (int *)0x0) {
    (**(code **)(*DAT_032bf424 + 4))(1);
    DAT_032bf424 = (int *)0x0;
  }
  return;
}



undefined4 * __thiscall FUN_008fee70(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxFont::vftable;
  FUN_00921cf0(param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * FUN_008feed0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxSystemSettingsModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 __thiscall FUN_008fef30(undefined4 param_1_00,byte param_1)

{
  FUN_008473a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_008fef50(undefined4 *param_1,int param_2)

{
  uint uVar1;
  HGDIOBJ h;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  wchar_t *pwVar6;
  undefined4 local_d0;
  undefined4 *local_cc;
  undefined4 auStack_c8 [23];
  undefined4 auStack_6c [23];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd54b2;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_d0;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff24;
  ExceptionList = &local_c;
  local_cc = param_1;
  param_1[1] = 0;
  *param_1 = wxFont::vftable;
  local_4 = 0;
  local_d0 = 1;
  h = GetStockObject(param_2);
  if (h == (HGDIOBJ)0x0) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_008ff052;
    pwVar6 = L"stock font not found";
    uVar5 = 0xfe;
  }
  else {
    iVar2 = GetObjectW(h,0x5c,auStack_6c);
    if (iVar2 != 0) {
      FUN_009217e0();
      puVar3 = auStack_6c;
      puVar4 = auStack_c8;
      for (iVar2 = 0x17; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar4 = *puVar3;
        puVar3 = puVar3 + 1;
        puVar4 = puVar4 + 1;
      }
      FUN_00921cf0(auStack_c8,0);
      goto LAB_008ff052;
    }
    if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_008ff052;
    pwVar6 = L"failed to get LOGFONT";
    uVar5 = 0xf9;
  }
  FUN_00840480("..\\..\\src\\msw\\settings.cpp",uVar5,"wxCreateFontFromStockObject","Assert failure"
               ,pwVar6,uVar1);
LAB_008ff052:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int FUN_008ff080(int param_1,int param_2)

{
  int iVar1;
  DWORD DVar2;
  BOOL BVar3;
  int nIndex;
  bool bVar4;
  bool bVar5;
  int local_18;
  int local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  nIndex = param_2;
  puStack_8 = &LAB_00bd54f9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_10 = 0;
  local_4 = 0;
  if (param_2 == 0x1f) {
    nIndex = 8;
  }
  else if (param_2 == 0x20) {
    nIndex = 0xe;
  }
  else if (param_2 == 0x19) {
    nIndex = 5;
  }
  else if (0x14 < param_2) {
    FUN_00894a40(&param_2,&local_18,DAT_0323f878 ^ (uint)&stack0xffffffe4);
    if (3 < param_2) {
      if (param_2 == 4) {
        bVar5 = SBORROW4(nIndex,0x18);
        iVar1 = nIndex + -0x18;
        bVar4 = nIndex == 0x18;
      }
      else {
        if ((param_2 != 5) || (local_18 != 0)) {
          if (nIndex == 0x1e) {
            BVar3 = SystemParametersInfoW(0x1022,0,&local_14,0);
            if ((BVar3 != 0) && (local_14 == 0)) {
              nIndex = 4;
            }
          }
          goto LAB_008ff0c2;
        }
        bVar5 = SBORROW4(nIndex,0x1c);
        iVar1 = nIndex + -0x1c;
        bVar4 = iVar1 == 0;
      }
      if (bVar4 || bVar5 != iVar1 < 0) goto LAB_008ff0c2;
    }
    if (nIndex != 0x1e) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (9 < nIndex - 0x14U)) {
        FUN_00840480("..\\..\\src\\msw\\settings.cpp",200,"wxSystemSettingsNative::GetColour",
                     "n < WXSIZEOF(s_defaultSysColors)",
                     L"forgot tp update the default colours array");
      }
      DVar2 = *(DWORD *)(&DAT_00d48870 + (nIndex - 0x14U) * 4);
      goto LAB_008ff0c9;
    }
    nIndex = 0xf;
  }
LAB_008ff0c2:
  DVar2 = GetSysColor(nIndex);
LAB_008ff0c9:
  FUN_008fee20(param_1,DVar2);
  local_4 = 0;
  local_10 = 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(param_1 + 0xc) == '\0')) {
    FUN_008402e0("..\\..\\src\\msw\\settings.cpp",0xda,"wxSystemSettingsNative::GetColour",
                 "ret.IsOk()",0);
  }
  ExceptionList = local_c;
  return param_1;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * FUN_008ff210(void)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((_DAT_032bf620 & 1) == 0) {
    _DAT_032bf620 = _DAT_032bf620 | 1;
    _memset(&DAT_032bf428,0,0x1f8);
    _DAT_032bf428 = 0x1f8;
  }
  BVar2 = SystemParametersInfoW(0x29,0,&DAT_032bf428,0);
  if (BVar2 == 0) {
    _DAT_032bf428 = _DAT_032bf428 + -4;
    BVar2 = SystemParametersInfoW(0x29,0,&DAT_032bf428,0);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        local_4 = 0;
        FUN_008423d0();
        local_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_00842440();
        local_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  ExceptionList = local_c;
  return &DAT_032bf428;
}



void FUN_008ff360(undefined4 *param_1,int param_2)

{
  bool bVar1;
  char cVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  uint local_a4;
  undefined local_a0 [4];
  int *local_9c;
  void *local_98;
  undefined4 *local_94;
  undefined auStack_90 [4];
  undefined4 uStack_8c;
  uint uStack_78;
  void *pvStack_74;
  undefined4 local_6c [23];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd557d;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_a4;
  ExceptionList = &local_c;
  local_94 = param_1;
  local_a4 = 0;
  if (param_2 == 0x11) {
    if (DAT_032bf424 == 0) {
      FUN_009217e0();
      iVar3 = FUN_008ff210();
      puVar6 = (undefined4 *)(iVar3 + 0x198);
      puVar7 = local_6c;
      for (iVar5 = 0x17; iVar5 != 0; iVar5 = iVar5 + -1) {
        *puVar7 = *puVar6;
        puVar6 = puVar6 + 1;
        puVar7 = puVar7 + 1;
      }
      local_98 = operator_new(8);
      local_4 = 1;
      if (local_98 == (void *)0x0) {
        DAT_032bf424 = 0;
      }
      else {
        DAT_032bf424 = FUN_008fee70(local_6c,0);
      }
    }
    iVar3 = DAT_032bf424;
    *param_1 = wxObject::vftable;
    iVar3 = *(int *)(iVar3 + 4);
    param_1[1] = iVar3;
    if (iVar3 != 0) {
      *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1;
    }
    *param_1 = wxFont::vftable;
    goto LAB_008ff54a;
  }
  FUN_008fef50(local_a0,param_2,DAT_0323f878 ^ (uint)&stack0xffffff4c);
  local_4 = 2;
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_008ff4c0:
    bVar1 = true;
  }
  else {
    if ((local_9c == (int *)0x0) || (cVar2 = (**(code **)(*local_9c + 4))(), cVar2 == '\0')) {
      FUN_008402e0("..\\..\\src\\msw\\settings.cpp",299,"wxSystemSettingsNative::GetFont",
                   "font.IsOk()",0);
    }
    if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_008ff4c0;
    uVar4 = FUN_00922d30(auStack_90);
    local_4 = CONCAT31(local_4._1_3_,3);
    local_a4 = 2;
    cVar2 = FUN_009843d0(uVar4);
    if (cVar2 != '\0') goto LAB_008ff4c0;
    bVar1 = false;
  }
  local_4 = 2;
  if ((local_a4 & 2) != 0) {
    local_a4 = local_a4 & 0xfffffffd;
    _free(pvStack_74);
    if (7 < uStack_78) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_8c);
    }
  }
  if (!bVar1) {
    FUN_008402e0("..\\..\\src\\msw\\settings.cpp",0x12e,"wxSystemSettingsNative::GetFont",
                 "wxFontEnumerator::IsValidFacename(font.GetFaceName())",0);
  }
  *param_1 = wxObject::vftable;
  param_1[1] = local_9c;
  if (local_9c != (int *)0x0) {
    local_9c[1] = local_9c[1] + 1;
  }
  local_a4 = local_a4 | 1;
  *param_1 = wxFont::vftable;
  local_4 = local_4 & 0xffffff00;
  FUN_00921450();
LAB_008ff54a:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_008ff580(undefined4 *param_1)

{
  char cVar1;
  int iVar2;
  BOOL BVar3;
  undefined auStack_110 [8];
  undefined4 uStack_108;
  undefined *puStack_104;
  char *pcStack_100;
  int local_e0;
  int local_dc;
  undefined *puStack_d8;
  undefined auStack_d0 [100];
  undefined local_6c [92];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd55c6;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_e0;
  ExceptionList = &local_c;
  local_dc = 0;
  iVar2 = FUN_00894a40();
  if (iVar2 == 4) {
    if ((local_e0 == 4) && (9 < local_dc)) goto LAB_008ff5f8;
  }
  else if ((iVar2 == 8) && (4 < local_e0)) {
LAB_008ff5f8:
    pcStack_100 = (char *)0x8ff60c;
    BVar3 = SystemParametersInfoW(0x1f,0x5c,local_6c,0);
    if (BVar3 != 0) {
      iVar2 = FUN_009846e0();
      *param_1 = wxObject::vftable;
      iVar2 = *(int *)(iVar2 + 4);
      param_1[1] = iVar2;
      if (iVar2 != 0) {
        *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
      }
      *param_1 = wxFont::vftable;
      FUN_00921450();
      goto LAB_008ff72a;
    }
    puStack_d8 = auStack_110;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      pcStack_100 = (char *)0x6;
      uStack_4 = 0;
      puStack_104 = (undefined *)0x8ff6c0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      pcStack_100 = "..\\..\\src\\msw\\settings.cpp";
      puStack_104 = auStack_d0;
      uStack_108 = 0x8ff6fa;
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  FUN_008ff360();
LAB_008ff72a:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_008ff760(void)

{
  return &PTR_u_wxImage_032390ec;
}



void __fastcall thunk_FUN_0083e850(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    FUN_0083e800();
    *(undefined4 *)(param_1 + 4) = 0;
  }
  return;
}



float10 FUN_008ff780(double param_1)

{
  float10 fVar1;
  float10 fVar2;
  float10 fVar3;
  float10 fVar4;
  float10 fVar5;
  
  fVar1 = (float10)param_1;
  fVar2 = (float10)2.0 + fVar1;
  fVar5 = (float10)0;
  fVar3 = fVar5;
  if (fVar5 < fVar2) {
    fVar3 = fVar2 * fVar2 * fVar2;
  }
  fVar4 = fVar1 + (float10)1;
  fVar2 = fVar5;
  if (fVar4 < fVar5 == (fVar4 == fVar5)) {
    fVar2 = fVar4 * fVar4 * fVar4;
  }
  fVar4 = fVar5;
  if (fVar1 < fVar5 == (fVar1 == fVar5)) {
    fVar4 = fVar1 * fVar1 * fVar1;
  }
  fVar1 = fVar1 - (float10)1;
  if (fVar1 < fVar5 == (fVar1 == fVar5)) {
    fVar5 = fVar1 * fVar1 * fVar1;
  }
  return (((fVar3 - fVar2 * (float10)4.0) + fVar4 * (float10)6.0) - fVar5 * (float10)4.0) /
         (float10)6.0;
}



undefined4 __fastcall FUN_008ff820(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if ((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
     (*(int *)(iVar1 + 0xc) != 0)) {
    return 1;
  }
  return 0;
}



undefined4 __fastcall FUN_008ff850(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if ((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
     (*(int *)(iVar1 + 0xc) != 0)) {
    return *(undefined4 *)(iVar1 + 0x14);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x6e7,"wxImage::GetData","IsOk()",L"invalid image"
                );
  }
  return 0;
}



void __thiscall FUN_008ff8a0(int param_1_00,void *param_1,undefined param_2)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 4);
  if ((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
     (*(int *)(iVar1 + 0xc) != 0)) {
    FUN_0083eaa0();
    if (param_1 == (void *)0x0) {
      param_1 = _malloc(*(int *)(*(int *)(param_1_00 + 4) + 0xc) *
                        *(int *)(*(int *)(param_1_00 + 4) + 8));
    }
    if (*(char *)(*(int *)(param_1_00 + 4) + 0x22) == '\0') {
      _free(*(void **)(*(int *)(param_1_00 + 4) + 0x1c));
    }
    *(void **)(*(int *)(param_1_00 + 4) + 0x1c) = param_1;
    *(undefined *)(*(int *)(param_1_00 + 4) + 0x22) = param_2;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x753,"wxImage::SetAlpha","IsOk()",
                 L"invalid image");
  }
  return;
}



undefined4 __fastcall FUN_008ff940(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if ((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
     (*(int *)(iVar1 + 0xc) != 0)) {
    return *(undefined4 *)(iVar1 + 0x1c);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x765,"wxImage::GetAlpha","IsOk()",
                 L"invalid image");
  }
  return 0;
}



void __thiscall FUN_008ff990(int param_1_00,undefined param_1,undefined param_2,undefined param_3)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 4);
  if ((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
     (*(int *)(iVar1 + 0xc) != 0)) {
    FUN_0083eaa0();
    *(undefined *)(*(int *)(param_1_00 + 4) + 0x19) = param_1;
    *(undefined *)(*(int *)(param_1_00 + 4) + 0x1a) = param_2;
    *(undefined *)(*(int *)(param_1_00 + 4) + 0x1b) = param_3;
    *(undefined *)(*(int *)(param_1_00 + 4) + 0x18) = 1;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x79f,"wxImage::SetMaskColour","IsOk()",
                 L"invalid image");
  }
  return;
}



uint __fastcall FUN_008ffa10(int param_1)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1 + 4);
  if ((((uVar1 != 0) && (*(char *)(uVar1 + 0x20) != '\0')) && (*(int *)(uVar1 + 8) != 0)) &&
     (*(int *)(uVar1 + 0xc) != 0)) {
    return CONCAT31((int3)(uVar1 >> 8),*(undefined *)(uVar1 + 0x19));
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar1 = FUN_00840480("..\\..\\src\\common\\image.cpp",0x7bd,"wxImage::GetMaskRed","IsOk()",
                         L"invalid image");
  }
  return uVar1 & 0xffffff00;
}



uint __fastcall FUN_008ffa60(int param_1)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1 + 4);
  if ((((uVar1 != 0) && (*(char *)(uVar1 + 0x20) != '\0')) && (*(int *)(uVar1 + 8) != 0)) &&
     (*(int *)(uVar1 + 0xc) != 0)) {
    return CONCAT31((int3)(uVar1 >> 8),*(undefined *)(uVar1 + 0x1a));
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar1 = FUN_00840480("..\\..\\src\\common\\image.cpp",0x7c4,"wxImage::GetMaskGreen","IsOk()",
                         L"invalid image");
  }
  return uVar1 & 0xffffff00;
}



uint __fastcall FUN_008ffab0(int param_1)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1 + 4);
  if ((((uVar1 != 0) && (*(char *)(uVar1 + 0x20) != '\0')) && (*(int *)(uVar1 + 8) != 0)) &&
     (*(int *)(uVar1 + 0xc) != 0)) {
    return CONCAT31((int3)(uVar1 >> 8),*(undefined *)(uVar1 + 0x1b));
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar1 = FUN_00840480("..\\..\\src\\common\\image.cpp",0x7cb,"wxImage::GetMaskBlue","IsOk()",
                         L"invalid image");
  }
  return uVar1 & 0xffffff00;
}



void __thiscall FUN_008ffb00(int param_1_00,undefined param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 4);
  if ((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
     (*(int *)(iVar1 + 0xc) != 0)) {
    FUN_0083eaa0();
    *(undefined *)(*(int *)(param_1_00 + 4) + 0x18) = param_1;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x7d2,"wxImage::SetMask","IsOk()",L"invalid image"
                );
  }
  return;
}



uint __fastcall FUN_008ffb60(int param_1)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1 + 4);
  if ((((uVar1 != 0) && (*(char *)(uVar1 + 0x20) != '\0')) && (*(int *)(uVar1 + 8) != 0)) &&
     (*(int *)(uVar1 + 0xc) != 0)) {
    return CONCAT31((int3)(uVar1 >> 8),*(undefined *)(uVar1 + 0x18));
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar1 = FUN_00840480("..\\..\\src\\common\\image.cpp",0x7db,"wxImage::HasMask","IsOk()",
                         L"invalid image");
  }
  return uVar1 & 0xffffff00;
}



uint __fastcall FUN_008ffbb0(int param_1)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1 + 4);
  if ((((uVar1 != 0) && (*(char *)(uVar1 + 0x20) != '\0')) && (*(int *)(uVar1 + 8) != 0)) &&
     (*(int *)(uVar1 + 0xc) != 0)) {
                    // WARNING: Could not recover jumptable at 0x008ffbd4. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (**(code **)(*(int *)(uVar1 + 0x24) + 0x10))();
    return uVar1;
  }
  return uVar1 & 0xffffff00;
}



undefined ** __fastcall FUN_008ffbe0(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if ((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
     (*(int *)(iVar1 + 0xc) != 0)) {
    return (undefined **)(iVar1 + 0x24);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x876,"wxImage::GetPalette","IsOk()",
                 L"invalid image");
  }
  return &PTR_vftable_03238cfc;
}



bool __thiscall FUN_008ffc30(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 4) != 0) {
    iVar1 = FUN_00853d10(param_1,0,0);
    return iVar1 != -1;
  }
  return false;
}



undefined ** FUN_008ffc60(void)

{
  return &PTR_u_wxImageHandler_03239104;
}



undefined ** FUN_008ffc70(void)

{
  return &PTR_u_wxImageModule_0323911c;
}



undefined4 __thiscall FUN_008ffc80(undefined4 param_1_00,byte param_1)

{
  FUN_008b8680();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_008ffca0(double param_1)

{
  if (NAN(param_1) != (param_1 == 0.0)) {
    return 1;
  }
  return 0;
}



void FUN_008ffcc0(double param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((-2147483648.5 < param_1 == NAN(param_1) || (2147483647.5 <= param_1)))) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/math.h",0x78,"wxRound",
                 "x > INT_MIN - 0.5 && x < INT_MAX + 0.5",L"argument out of supported range");
  }
  if (param_1 < 0.0) {
    FUN_00a49750();
    return;
  }
  FUN_00a49750();
  return;
}



undefined4 __fastcall FUN_008ffd30(int param_1)

{
  if ((0 < *(int *)(param_1 + 8)) && (0 < *(int *)(param_1 + 0xc))) {
    return 0;
  }
  return 1;
}



undefined4 * __thiscall FUN_008ffd50(undefined4 *param_1_00,undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd5613;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  *param_1_00 = wxImageVariantData::vftable;
  param_1_00[3] = 0;
  param_1_00[2] = wxImage::vftable;
  local_4 = 1;
  if (param_1_00 + 2 != param_1) {
    FUN_0083ea60(param_1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_008ffdc0(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x10);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_008ffd50(param_1 + 8);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_008ffe30(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd0918;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  param_1[2] = wxObject::vftable;
  FUN_0083e850(uVar1);
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_008ffe90(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd564e;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxImageRefData::vftable;
  local_4 = 2;
  if (*(char *)((int)param_1 + 0x21) == '\0') {
    _free((void *)param_1[5]);
  }
  if (*(char *)((int)param_1 + 0x22) == '\0') {
    _free((void *)param_1[7]);
  }
  FUN_00853f30(uVar1);
  local_4._0_1_ = 1;
  FUN_00853f30();
  local_4 = (uint)local_4._1_3_ << 8;
  param_1[9] = wxObject::vftable;
  FUN_0083e850();
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_008fff50(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  undefined **local_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5678;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_0083e850(uVar1);
  iVar2 = FUN_009854c0(local_14,param_1);
  local_4 = 0;
  if (param_1_00 != iVar2) {
    FUN_0083ea60(iVar2);
  }
  local_4 = 0xffffffff;
  local_14[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  iVar2 = *(int *)(param_1_00 + 4);
  if ((((iVar2 != 0) && (*(char *)(iVar2 + 0x20) != '\0')) && (*(int *)(iVar2 + 8) != 0)) &&
     (*(int *)(iVar2 + 0xc) != 0)) {
    ExceptionList = local_c;
    return 1;
  }
  ExceptionList = local_c;
  return 0;
}



// WARNING: Removing unreachable block (ram,0x009000c1)

undefined4 * __thiscall FUN_00900000(int *param_1_00,undefined4 *param_1)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd56c1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = param_1_00[1];
  local_4 = 1;
  if ((((iVar1 == 0) || (*(char *)(iVar1 + 0x20) == '\0')) || (*(int *)(iVar1 + 8) == 0)) ||
     (*(int *)(iVar1 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x128,"wxImage::Copy","IsOk()",L"invalid image",
                   DAT_0323f878 ^ (uint)&stack0xffffffe0);
    }
    *param_1 = wxObject::vftable;
    param_1[1] = 0;
    *param_1 = wxImage::vftable;
  }
  else {
    iVar1 = (**(code **)(*param_1_00 + 0xc))(iVar1);
    *param_1 = wxObject::vftable;
    param_1[1] = iVar1;
    if (iVar1 != 0) {
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
  }
  local_4 = local_4 & 0xffffff00;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_00900100(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if ((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
     (*(int *)(iVar1 + 0xc) != 0)) {
    return *(undefined4 *)(iVar1 + 8);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x662,"wxImage::GetWidth","IsOk()",
                 L"invalid image");
  }
  return 0;
}



undefined4 __fastcall FUN_00900150(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if ((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
     (*(int *)(iVar1 + 0xc) != 0)) {
    return *(undefined4 *)(iVar1 + 0xc);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x669,"wxImage::GetHeight","IsOk()",
                 L"invalid image");
  }
  return 0;
}



void __thiscall FUN_009001a0(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 4);
  if ((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
     (*(int *)(iVar1 + 0xc) != 0)) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0x20)) {
      FUN_008402e0("..\\..\\src\\common\\image.cpp",0x67a,"wxImage::SetType",
                   "type != wxBITMAP_TYPE_MAX","invalid bitmap type");
    }
    *(int *)(*(int *)(param_1_00 + 4) + 0x10) = param_1;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\image.cpp",0x677,"wxImage::SetType","IsOk()",
                 "must create the image before setting its type");
  }
  return;
}



void __thiscall
FUN_00900230(int param_1_00,int param_1,int param_2,undefined param_3,undefined param_4,
            undefined param_5)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 4);
  if ((((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
       ((*(int *)(iVar1 + 0xc) != 0 && (-1 < param_1)))) &&
      ((-1 < param_2 && ((param_1 < *(int *)(iVar1 + 8) && (param_2 < *(int *)(iVar1 + 0xc))))))) &&
     (param_1 = *(int *)(iVar1 + 8) * param_2 + param_1, param_1 != -1)) {
    FUN_0083eaa0();
    param_1 = param_1 * 3;
    *(undefined *)(param_1 + *(int *)(*(int *)(param_1_00 + 4) + 0x14)) = param_3;
    *(undefined *)(*(int *)(*(int *)(param_1_00 + 4) + 0x14) + 1 + param_1) = param_4;
    *(undefined *)(*(int *)(*(int *)(param_1_00 + 4) + 0x14) + 2 + param_1) = param_5;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x68e,"wxImage::SetRGB","pos != -1",
                 L"invalid image coordinates");
  }
  return;
}



void __thiscall
FUN_009002e0(int param_1_00,int *param_1,undefined param_2,undefined param_3,undefined param_4)

{
  char cVar1;
  int iVar2;
  int iVar3;
  undefined *puVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  
  iVar8 = *(int *)(param_1_00 + 4);
  if ((((iVar8 == 0) || (*(char *)(iVar8 + 0x20) == '\0')) || (*(int *)(iVar8 + 8) == 0)) ||
     (*(int *)(iVar8 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x69b,"wxImage::SetRGB","IsOk()",
                   L"invalid image");
      return;
    }
  }
  else {
    FUN_0083eaa0();
    iVar8 = *param_1;
    iVar7 = param_1[1];
    iVar5 = param_1[2];
    iVar6 = param_1[3];
    iVar2 = FUN_00900150();
    iVar3 = FUN_00900100();
    if (((iVar8 == 0) && (iVar7 == 0)) && ((iVar5 == 0 && (iVar6 == 0)))) {
      iVar8 = 0;
      iVar7 = 0;
      iVar5 = iVar3;
      iVar6 = iVar2;
    }
    else {
      cVar1 = FUN_008f7580(iVar8,iVar7);
      if ((cVar1 == '\0') ||
         (cVar1 = FUN_008f7580(iVar5 + -1 + iVar8,iVar7 + -1 + iVar6), cVar1 == '\0')) {
        if (PTR_FUN_03235c4c == (undefined *)0x0) {
          return;
        }
        FUN_00840480("..\\..\\src\\common\\image.cpp",0x6a9,"wxImage::SetRGB",
                     "imageRect.Contains(rect.GetTopLeft()) && imageRect.Contains(rect.GetBottomRight())"
                     ,L"invalid bounding rectangle");
        return;
      }
    }
    iVar2 = FUN_00900100();
    if (iVar7 < iVar7 + iVar6) {
      iVar6 = (iVar7 + iVar6) - iVar7;
      iVar7 = (iVar7 * iVar2 + iVar8) * 3;
      do {
        puVar4 = (undefined *)(*(int *)(*(int *)(param_1_00 + 4) + 0x14) + iVar7);
        if (iVar8 < iVar5 + iVar8) {
          iVar3 = (iVar5 + iVar8) - iVar8;
          do {
            *puVar4 = param_2;
            puVar4[1] = param_3;
            puVar4[2] = param_4;
            puVar4 = puVar4 + 3;
            iVar3 = iVar3 + -1;
          } while (iVar3 != 0);
        }
        iVar7 = iVar7 + iVar2 * 3;
        iVar6 = iVar6 + -1;
      } while (iVar6 != 0);
    }
  }
  return;
}



uint __thiscall FUN_00900480(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  uint in_EAX;
  
  iVar1 = *(int *)(param_1_00 + 4);
  if ((((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
       ((*(int *)(iVar1 + 0xc) != 0 && (-1 < param_1)))) &&
      ((-1 < param_2 &&
       ((in_EAX = *(uint *)(iVar1 + 8), param_1 < (int)in_EAX && (param_2 < *(int *)(iVar1 + 0xc))))
       ))) && (in_EAX = in_EAX * param_2 + param_1, in_EAX != 0xffffffff)) {
    return CONCAT31((int3)(in_EAX * 3 >> 8),*(undefined *)(in_EAX * 3 + *(int *)(iVar1 + 0x14)));
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    in_EAX = FUN_00840480("..\\..\\src\\common\\image.cpp",0x6c2,"wxImage::GetRed","pos != -1",
                          L"invalid image coordinates");
  }
  return in_EAX & 0xffffff00;
}



uint __thiscall FUN_00900500(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  uint in_EAX;
  
  iVar1 = *(int *)(param_1_00 + 4);
  if ((((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
       ((*(int *)(iVar1 + 0xc) != 0 && (-1 < param_1)))) &&
      ((-1 < param_2 &&
       ((in_EAX = *(uint *)(iVar1 + 8), param_1 < (int)in_EAX && (param_2 < *(int *)(iVar1 + 0xc))))
       ))) && (in_EAX = in_EAX * param_2 + param_1, in_EAX != 0xffffffff)) {
    return CONCAT31((int3)(in_EAX * 3 >> 8),*(undefined *)(*(int *)(iVar1 + 0x14) + 1 + in_EAX * 3))
    ;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    in_EAX = FUN_00840480("..\\..\\src\\common\\image.cpp",0x6cc,"wxImage::GetGreen","pos != -1",
                          L"invalid image coordinates");
  }
  return in_EAX & 0xffffff00;
}



uint __thiscall FUN_00900580(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  uint in_EAX;
  
  iVar1 = *(int *)(param_1_00 + 4);
  if ((((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
       ((*(int *)(iVar1 + 0xc) != 0 && (-1 < param_1)))) &&
      ((-1 < param_2 &&
       ((in_EAX = *(uint *)(iVar1 + 8), param_1 < (int)in_EAX && (param_2 < *(int *)(iVar1 + 0xc))))
       ))) && (in_EAX = in_EAX * param_2 + param_1, in_EAX != 0xffffffff)) {
    return CONCAT31((int3)(in_EAX * 3 >> 8),*(undefined *)(*(int *)(iVar1 + 0x14) + 2 + in_EAX * 3))
    ;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    in_EAX = FUN_00840480("..\\..\\src\\common\\image.cpp",0x6d6,"wxImage::GetBlue","pos != -1",
                          L"invalid image coordinates");
  }
  return in_EAX & 0xffffff00;
}



void __fastcall FUN_00900600(int param_1)

{
  undefined *puVar1;
  char cVar2;
  char cVar3;
  int iVar4;
  char cVar5;
  char *pcVar6;
  undefined uVar7;
  undefined *_Dst;
  size_t _Size;
  
  cVar5 = FUN_008f2530();
  if (cVar5 == '\0') {
    FUN_008ff8a0(0,0);
    iVar4 = *(int *)(param_1 + 4);
    _Dst = *(undefined **)(iVar4 + 0x1c);
    _Size = *(int *)(iVar4 + 0xc) * *(int *)(iVar4 + 8);
    cVar5 = FUN_008ffb60();
    if (cVar5 == '\0') {
      _memset(_Dst,0xff,_Size);
      return;
    }
    iVar4 = *(int *)(param_1 + 4);
    cVar2 = *(char *)(iVar4 + 0x1a);
    cVar3 = *(char *)(iVar4 + 0x1b);
    puVar1 = _Dst + _Size;
    cVar5 = *(char *)(iVar4 + 0x19);
    pcVar6 = *(char **)(iVar4 + 0x14);
    for (; _Dst < puVar1; _Dst = _Dst + 1) {
      if (((*pcVar6 == cVar5) && (pcVar6[1] == cVar2)) && (pcVar6[2] == cVar3)) {
        uVar7 = 0;
      }
      else {
        uVar7 = 0xff;
      }
      *_Dst = uVar7;
      pcVar6 = pcVar6 + 3;
    }
    *(undefined *)(*(int *)(param_1 + 4) + 0x18) = 0;
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x76c,"wxImage::InitAlpha","!HasAlpha()",
                 L"image already has an alpha channel");
    return;
  }
  return;
}



void __fastcall FUN_009006d0(int param_1)

{
  char cVar1;
  
  cVar1 = FUN_008f2530();
  if (cVar1 != '\0') {
    if (*(char *)(*(int *)(param_1 + 4) + 0x22) == '\0') {
      _free(*(void **)(*(int *)(param_1 + 4) + 0x1c));
    }
    *(undefined4 *)(*(int *)(param_1 + 4) + 0x1c) = 0;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x790,"wxImage::ClearAlpha","HasAlpha()",
                 L"image already doesn\'t have an alpha channel");
  }
  return;
}



uint __thiscall FUN_00900730(int param_1_00,int param_1,int param_2,byte param_3)

{
  int iVar1;
  uint in_EAX;
  uint uVar2;
  undefined3 uVar3;
  char *pcVar4;
  
  iVar1 = *(int *)(param_1_00 + 4);
  if (((((iVar1 == 0) || (*(char *)(iVar1 + 0x20) == '\0')) || (*(int *)(iVar1 + 8) == 0)) ||
      (((*(int *)(iVar1 + 0xc) == 0 || (param_1 < 0)) ||
       ((param_2 < 0 ||
        ((in_EAX = *(uint *)(iVar1 + 8), (int)in_EAX <= param_1 ||
         (*(int *)(iVar1 + 0xc) <= param_2)))))))) ||
     (uVar2 = in_EAX * param_2 + param_1, in_EAX = uVar2, uVar2 == 0xffffffff)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      in_EAX = FUN_00840480("..\\..\\src\\common\\image.cpp",0x7e3,"wxImage::IsTransparent",
                            "pos != -1",L"invalid image coordinates");
    }
  }
  else {
    if (*(char *)(iVar1 + 0x18) != '\0') {
      pcVar4 = (char *)(uVar2 * 3 + *(int *)(iVar1 + 0x14));
      uVar3 = (undefined3)(uVar2 >> 8);
      in_EAX = CONCAT31(uVar3,*pcVar4);
      if (((*pcVar4 == *(char *)(iVar1 + 0x19)) &&
          (in_EAX = CONCAT31(uVar3,pcVar4[1]), pcVar4[1] == *(char *)(iVar1 + 0x1a))) &&
         (pcVar4[2] == *(char *)(iVar1 + 0x1b))) goto LAB_009007a8;
    }
    if ((*(int *)(iVar1 + 0x1c) != 0) && (*(byte *)(*(int *)(iVar1 + 0x1c) + uVar2) < param_3)) {
LAB_009007a8:
      return CONCAT31((int3)(in_EAX >> 8),1);
    }
  }
  return in_EAX & 0xffffff00;
}



undefined4 __thiscall
FUN_009007e0(int param_1,undefined4 param_2,undefined4 param_3,int param_4,byte param_5)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined *puVar3;
  byte *pbVar4;
  int iVar5;
  int iVar6;
  
  uVar1 = param_4;
  uVar2 = FUN_008f2530();
  if ((char)uVar2 != '\0') {
    FUN_0083eaa0();
    FUN_008ffb00(1);
    FUN_008ff990(param_2,param_3,param_4);
    puVar3 = (undefined *)FUN_008ff850();
    pbVar4 = (byte *)FUN_008ff940();
    iVar5 = FUN_00900100();
    param_4 = FUN_00900150();
    if (0 < param_4) {
      do {
        iVar6 = iVar5;
        if (0 < iVar5) {
          do {
            if (*pbVar4 < param_5) {
              *puVar3 = (undefined)param_2;
              puVar3[1] = (undefined)param_3;
              puVar3[2] = (char)uVar1;
            }
            puVar3 = puVar3 + 3;
            pbVar4 = pbVar4 + 1;
            iVar6 = iVar6 + -1;
          } while (iVar6 != 0);
        }
        param_4 = param_4 + -1;
      } while (param_4 != 0);
    }
    if (*(char *)(*(int *)(param_1 + 4) + 0x22) == '\0') {
      _free(*(void **)(*(int *)(param_1 + 4) + 0x1c));
    }
    *(undefined4 *)(*(int *)(param_1 + 4) + 0x1c) = 0;
    iVar5 = *(int *)(param_1 + 4);
    *(undefined *)(iVar5 + 0x22) = 0;
    return CONCAT31((int3)((uint)iVar5 >> 8),1);
  }
  return uVar2;
}



undefined4
FUN_009007f2(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5
            ,byte param_6)

{
  undefined4 uVar1;
  undefined *puVar2;
  byte *pbVar3;
  int iVar4;
  int iVar5;
  int unaff_EDI;
  
  uVar1 = param_5;
  FUN_0083eaa0();
  FUN_008ffb00(1);
  FUN_008ff990(param_3,param_4,param_5);
  puVar2 = (undefined *)FUN_008ff850();
  pbVar3 = (byte *)FUN_008ff940();
  iVar4 = FUN_00900100();
  param_5 = FUN_00900150();
  if (0 < param_5) {
    do {
      iVar5 = iVar4;
      if (0 < iVar4) {
        do {
          if (*pbVar3 < param_6) {
            *puVar2 = (undefined)param_3;
            puVar2[1] = (undefined)param_4;
            puVar2[2] = (char)uVar1;
          }
          puVar2 = puVar2 + 3;
          pbVar3 = pbVar3 + 1;
          iVar5 = iVar5 + -1;
        } while (iVar5 != 0);
      }
      param_5 = param_5 + -1;
    } while (param_5 != 0);
  }
  if (*(char *)(*(int *)(unaff_EDI + 4) + 0x22) == '\0') {
    _free(*(void **)(*(int *)(unaff_EDI + 4) + 0x1c));
  }
  *(undefined4 *)(*(int *)(unaff_EDI + 4) + 0x1c) = 0;
  iVar4 = *(int *)(unaff_EDI + 4);
  *(undefined *)(iVar4 + 0x22) = 0;
  return CONCAT31((int3)((uint)iVar4 >> 8),1);
}



int FUN_009008b0(int param_1)

{
  int *piVar1;
  int iVar2;
  
  iVar2 = DAT_032bf63c;
  if (DAT_032bf63c != 0) {
    do {
      if (*(int *)(*(int *)(iVar2 + 8) + 0x84) == param_1) {
        return *(int *)(iVar2 + 8);
      }
      piVar1 = (int *)(iVar2 + 0xc);
      iVar2 = *piVar1;
    } while (*piVar1 != 0);
  }
  return 0;
}



void FUN_009008e0(void)

{
  int iVar1;
  int iVar2;
  
  iVar2 = DAT_032bf63c;
  if (DAT_032bf63c != 0) {
    do {
      iVar1 = *(int *)(iVar2 + 0xc);
      if (*(int **)(iVar2 + 8) != (int *)0x0) {
        (**(code **)(**(int **)(iVar2 + 8) + 4))(1);
      }
      iVar2 = iVar1;
    } while (iVar1 != 0);
  }
  FUN_0086b130();
  return;
}



void thunk_FUN_009008e0(void)

{
  int iVar1;
  int iVar2;
  
  iVar2 = DAT_032bf63c;
  if (DAT_032bf63c != 0) {
    do {
      iVar1 = *(int *)(iVar2 + 0xc);
      if (*(int **)(iVar2 + 8) != (int *)0x0) {
        (**(code **)(**(int **)(iVar2 + 8) + 4))(1);
      }
      iVar2 = iVar1;
    } while (iVar1 != 0);
  }
  FUN_0086b130();
  return;
}



undefined4 * FUN_00900930(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxImageModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __thiscall FUN_00900990(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  bool bVar3;
  type_info *ptVar4;
  type_info *this;
  
  uVar2 = DAT_032bf624;
  ptVar4 = (type_info *)___RTtypeid(*(undefined4 *)(param_1_00 + 0x10));
  this = (type_info *)___RTtypeid(uVar2);
  bVar3 = type_info::operator==(this,ptVar4);
  if ((!bVar3) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  iVar1 = *(int *)(param_1_00 + 4);
  *param_1 = wxObject::vftable;
  param_1[1] = iVar1;
  *param_1 = wxImage::vftable;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  return;
}



undefined4 * __thiscall FUN_00900a20(int *param_1_00,undefined4 *param_1,int param_2)

{
  int iVar1;
  float fVar2;
  float fVar3;
  undefined4 *puVar4;
  
  puVar4 = (undefined4 *)operator_new(0x10);
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    *puVar4 = 0;
    puVar4[1] = *param_1;
    puVar4[2] = param_1[1];
    puVar4[3] = param_1[2];
  }
  *puVar4 = *(undefined4 *)(*param_1_00 + param_2 * 4);
  *(undefined4 **)(*param_1_00 + param_2 * 4) = puVar4;
  param_1_00[2] = param_1_00[2] + 1;
  iVar1 = param_1_00[1];
  fVar2 = (float)param_1_00[2];
  if (param_1_00[2] < 0) {
    fVar2 = fVar2 + 4.294967e+09;
  }
  fVar3 = (float)iVar1;
  if (iVar1 < 0) {
    fVar3 = fVar3 + 4.294967e+09;
  }
  if (0.85 <= fVar2 / fVar3) {
    FUN_0090e820(iVar1);
  }
  return puVar4;
}



undefined4 __thiscall FUN_00900ab0(undefined4 param_1_00,byte param_1)

{
  FUN_008ffe30();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_00900ad0(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined **local_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5704;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x10);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00900990(local_14,0);
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar3 = FUN_008ffd50(uVar3);
  }
  local_4 = 0xffffffff;
  if (pvVar2 != (void *)0x0) {
    local_14[0] = wxObject::vftable;
    FUN_0083e850(uVar1);
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 * __fastcall FUN_00900b70(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd573e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 1;
  *param_1 = wxImageRefData::vftable;
  param_1[10] = 0;
  param_1[9] = wxPalette::vftable;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_00853ce0(0);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00853ce0(0);
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[7] = 0;
  param_1[5] = 0;
  *(undefined *)((int)param_1 + 0x19) = 0;
  *(undefined *)((int)param_1 + 0x1a) = 0;
  *(undefined *)((int)param_1 + 0x1b) = 0;
  *(undefined *)(param_1 + 6) = 0;
  *(undefined *)(param_1 + 8) = 0;
  *(undefined *)((int)param_1 + 0x22) = 0;
  *(undefined *)((int)param_1 + 0x21) = 0;
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00900c10(undefined4 param_1_00,byte param_1)

{
  FUN_008ffe90();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00900c30(int param_1_00,int param_1,int param_2,char param_3)

{
  int iVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be860b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_0083e850(uVar2);
  pvVar3 = operator_new(0x4c);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_00900b70();
  }
  *(undefined4 *)(param_1_00 + 4) = uVar4;
  local_4 = 0xffffffff;
  pvVar3 = _malloc(param_1 * param_2 * 3);
  *(void **)(*(int *)(param_1_00 + 4) + 0x14) = pvVar3;
  if (*(int *)(*(int *)(param_1_00 + 4) + 0x14) == 0) {
    FUN_0083e850(uVar2);
    ExceptionList = local_c;
    return 0;
  }
  *(int *)(*(int *)(param_1_00 + 4) + 8) = param_1;
  *(int *)(*(int *)(param_1_00 + 4) + 0xc) = param_2;
  *(undefined *)(*(int *)(param_1_00 + 4) + 0x20) = 1;
  if (param_3 != '\0') {
    iVar1 = *(int *)(param_1_00 + 4);
    _memset(*(void **)(iVar1 + 0x14),0,*(int *)(iVar1 + 0xc) * *(int *)(iVar1 + 8) * 3);
  }
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall
FUN_00900d20(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3,undefined param_4)

{
  void *pvVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd576b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0083e850(DAT_0323f878 ^ (uint)&stack0xffffffec);
  if (param_3 != 0) {
    pvVar1 = operator_new(0x4c);
    local_4 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = FUN_00900b70();
    }
    *(int *)(param_1_00 + 4) = iVar2;
    *(int *)(iVar2 + 0x14) = param_3;
    *(undefined4 *)(*(int *)(param_1_00 + 4) + 8) = param_1;
    *(undefined4 *)(*(int *)(param_1_00 + 4) + 0xc) = param_2;
    *(undefined *)(*(int *)(param_1_00 + 4) + 0x20) = 1;
    *(undefined *)(*(int *)(param_1_00 + 4) + 0x21) = param_4;
    ExceptionList = local_c;
    return 1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0xb2,"wxImage::Create",&DAT_00fb8b30,
                 L"NULL data in wxImage::Create");
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x4c);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00900b70(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// WARNING: Removing unreachable block (ram,0x00900f3c)
// WARNING: Removing unreachable block (ram,0x0090100b)

undefined4 * __thiscall FUN_00900e70(int param_1_00,undefined4 *param_1,byte param_2)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd57b1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar3 = *(int *)(param_1_00 + 4);
  local_4 = 1;
  if ((((iVar3 == 0) || (*(char *)(iVar3 + 0x20) == '\0')) || (*(int *)(iVar3 + 8) == 0)) ||
     (*(int *)(iVar3 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x105,"wxImage::MakeEmptyClone","IsOk()",
                   L"invalid image",DAT_0323f878 ^ (uint)&stack0xffffffdc);
    }
    *param_1 = wxObject::vftable;
    param_1[1] = 0;
    *param_1 = wxImage::vftable;
  }
  else {
    uVar2 = *(undefined4 *)(iVar3 + 8);
    uVar4 = *(undefined4 *)(iVar3 + 0xc);
    if ((param_2 & 1) != 0) {
      uVar2 = *(undefined4 *)(iVar3 + 0xc);
      uVar4 = *(undefined4 *)(iVar3 + 8);
    }
    cVar1 = FUN_00900c30(uVar2,uVar4,0);
    if (cVar1 == '\0') {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\image.cpp",0x10f,"wxImage::MakeEmptyClone",
                     "Assert failure",L"unable to create image");
      }
    }
    else {
      if (*(int *)(*(int *)(param_1_00 + 4) + 0x1c) != 0) {
        FUN_008ff8a0(0,0);
        iVar3 = FUN_008ff940();
        if (iVar3 == 0) {
          if (PTR_FUN_03235c4c != (undefined *)0x0) {
            FUN_00840480("..\\..\\src\\common\\image.cpp",0x117,"wxImage::MakeEmptyClone",
                         "image.GetAlpha()",L"unable to create alpha channel");
          }
          param_1[1] = 0;
          *param_1 = wxImage::vftable;
          goto LAB_00901014;
        }
      }
      iVar3 = *(int *)(param_1_00 + 4);
      if (*(char *)(iVar3 + 0x18) != '\0') {
        FUN_008ff990(*(undefined *)(iVar3 + 0x19),*(undefined *)(iVar3 + 0x1a),
                     *(undefined *)(iVar3 + 0x1b));
      }
    }
    *param_1 = wxObject::vftable;
    param_1[1] = 0;
    *param_1 = wxImage::vftable;
  }
LAB_00901014:
  local_4 = local_4 & 0xffffff00;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



// WARNING: Removing unreachable block (ram,0x00901297)
// WARNING: Removing unreachable block (ram,0x009010b4)
// WARNING: Removing unreachable block (ram,0x009010be)
// WARNING: Removing unreachable block (ram,0x009010c7)
// WARNING: Removing unreachable block (ram,0x009010d0)
// WARNING: Removing unreachable block (ram,0x009010db)
// WARNING: Removing unreachable block (ram,0x009010ef)
// WARNING: Removing unreachable block (ram,0x009010f6)
// WARNING: Removing unreachable block (ram,0x00901114)
// WARNING: Removing unreachable block (ram,0x00901147)
// WARNING: Removing unreachable block (ram,0x0090114b)
// WARNING: Removing unreachable block (ram,0x009011a2)
// WARNING: Removing unreachable block (ram,0x00901164)
// WARNING: Removing unreachable block (ram,0x009011a6)
// WARNING: Removing unreachable block (ram,0x009011ae)
// WARNING: Removing unreachable block (ram,0x009011b2)
// WARNING: Removing unreachable block (ram,0x009011c9)
// WARNING: Removing unreachable block (ram,0x009011c1)
// WARNING: Removing unreachable block (ram,0x009011cb)
// WARNING: Removing unreachable block (ram,0x009011e4)
// WARNING: Removing unreachable block (ram,0x009011f1)
// WARNING: Removing unreachable block (ram,0x009011fc)
// WARNING: Removing unreachable block (ram,0x00901213)
// WARNING: Removing unreachable block (ram,0x00901217)
// WARNING: Removing unreachable block (ram,0x00901253)
// WARNING: Removing unreachable block (ram,0x00901228)
// WARNING: Removing unreachable block (ram,0x0090122b)

undefined4 * FUN_00901050(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd57f1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00900c30(param_2,param_3,0);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     (FUN_00840480("..\\..\\src\\common\\image.cpp",0x6e7,"wxImage::GetData","IsOk()",
                   L"invalid image",uVar1), PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x1f8,"wxImage::ResampleNearest",&DAT_00fb8b30,
                 L"unable to create image",uVar1);
  }
  *param_1 = wxObject::vftable;
  param_1[1] = 0;
  *param_1 = wxImage::vftable;
  local_4 = local_4 & 0xffffff00;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_009012e0(int param_1_00,undefined4 *param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int extraout_ECX;
  undefined *puVar11;
  float10 extraout_ST0;
  float10 extraout_ST0_00;
  float10 fVar12;
  float10 fVar13;
  float10 fVar14;
  float10 fVar15;
  float10 fVar16;
  float10 extraout_ST1;
  int local_8c;
  undefined local_88;
  int local_84;
  int local_80;
  int local_7c;
  undefined *local_78;
  undefined *local_74;
  double local_6c;
  double local_5c;
  double local_54;
  double local_4c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd5829;
  local_c = ExceptionList;
  uVar7 = DAT_0323f878 ^ (uint)&stack0xffffff64;
  ExceptionList = &local_c;
  param_1[1] = 0;
  *param_1 = wxImage::vftable;
  local_4 = 0;
  FUN_00900c30(param_2,param_3,0);
  iVar2 = *(int *)(*(int *)(param_1_00 + 4) + 0x14);
  iVar3 = *(int *)(*(int *)(param_1_00 + 4) + 0x1c);
  iVar4 = param_1[1];
  if ((((iVar4 == 0) || (*(char *)(iVar4 + 0x20) == '\0')) || (*(int *)(iVar4 + 8) == 0)) ||
     (*(int *)(iVar4 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x6e7,"wxImage::GetData","IsOk()",
                   L"invalid image",uVar7);
    }
    local_78 = (undefined *)0x0;
  }
  else {
    local_78 = *(undefined **)(iVar4 + 0x14);
  }
  local_74 = (undefined *)0x0;
  if (iVar3 != 0) {
    FUN_008ff8a0(0,0);
    local_74 = (undefined *)FUN_008ff940();
  }
  local_80 = 0;
  if (0 < param_3) {
    do {
      iVar4 = *(int *)(*(int *)(param_1_00 + 4) + 0xc);
      iVar8 = FUN_00a49750();
      local_7c = 0;
      if (0 < param_2) {
        do {
          iVar5 = *(int *)(param_1_00 + 4);
          iVar6 = *(int *)(iVar5 + 8);
          iVar9 = FUN_00a49750();
          local_84 = -1;
          local_5c = (double)extraout_ST1;
          local_54 = (double)extraout_ST1;
          local_4c = (double)extraout_ST1;
          local_6c = (double)extraout_ST1;
          fVar14 = extraout_ST1;
          while( true ) {
            fVar12 = (float10)local_84;
            fVar13 = (float10)((double)(iVar4 * local_80) / (double)param_3) + fVar12;
            if ((fVar13 < fVar14 == (NAN(fVar13) || NAN(fVar14))) &&
               (fVar14 = (float10)*(int *)(iVar5 + 0xc), fVar14 < fVar13 == (fVar14 == fVar13))) {
              fVar12 = (float10)FUN_00a49750();
            }
            local_8c = -1;
            fVar14 = (float10)FUN_008ff780((double)(fVar12 - (float10)(double)(extraout_ST0 -
                                                                              (float10)iVar8)));
            do {
              fVar12 = (float10)local_8c;
              fVar13 = (float10)((double)(iVar6 * local_7c) / (double)param_2) + fVar12;
              if (((float10)0 <= fVar13) &&
                 (fVar15 = (float10)iVar6, fVar15 < fVar13 == (fVar15 == fVar13))) {
                fVar12 = (float10)FUN_00a49750();
              }
              fVar13 = (float10)FUN_008ff780((double)(fVar12 - (float10)(double)(extraout_ST0_00 -
                                                                                (float10)iVar9)));
              fVar13 = fVar13 * (float10)(double)fVar14;
              iVar1 = iVar2 + extraout_ECX * 2;
              iVar10 = iVar1 + extraout_ECX;
              fVar12 = (float10)(uint)*(byte *)(iVar1 + extraout_ECX) * fVar13 + (float10)local_5c;
              local_5c = (double)fVar12;
              fVar15 = (float10)(uint)*(byte *)(iVar10 + 1) * fVar13 + (float10)local_54;
              local_54 = (double)fVar15;
              fVar16 = (float10)(uint)*(byte *)(iVar10 + 2) * fVar13 + (float10)local_4c;
              local_4c = (double)fVar16;
              if (iVar3 != 0) {
                local_6c = (double)((float10)(uint)*(byte *)(extraout_ECX + iVar3) * fVar13 +
                                   (float10)local_6c);
              }
              local_8c = local_8c + 1;
            } while (local_8c < 3);
            local_84 = local_84 + 1;
            if (2 < local_84) break;
            fVar14 = (float10)0;
          }
          fVar14 = (float10)0.5;
          puVar11 = local_78 + 3;
          local_88 = (undefined)(int)ROUND(fVar12 + fVar14);
          *local_78 = local_88;
          local_88 = (undefined)(int)ROUND(fVar15 + fVar14);
          local_78[1] = local_88;
          local_88 = (undefined)(int)ROUND(fVar14 + fVar16);
          local_78[2] = local_88;
          if (iVar3 != 0) {
            local_88 = (undefined)(int)ROUND(local_6c);
            *local_74 = local_88;
            local_74 = local_74 + 1;
          }
          local_7c = local_7c + 1;
          local_78 = puVar11;
        } while (local_7c < param_2);
      }
      local_80 = local_80 + 1;
    } while (local_80 < param_3);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_00901700(int param_1_00,undefined4 *param_1,char param_2)

{
  undefined uVar1;
  size_t _Size;
  undefined2 *puVar2;
  uint uVar3;
  undefined2 *puVar4;
  int iVar5;
  undefined *puVar6;
  size_t sVar7;
  undefined *puVar8;
  void *_Src;
  int iVar9;
  undefined2 *_Src_00;
  void *_Dst;
  undefined **local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5871;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  FUN_00900e70(&local_14,0);
  local_4 = 1;
  if ((((local_10 == 0) || (*(char *)(local_10 + 0x20) == '\0')) || (*(int *)(local_10 + 8) == 0))
     || (*(int *)(local_10 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\image.cpp",0x4c8,"wxImage::Mirror","image.IsOk()",0,uVar3);
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_10;
    if (local_10 != 0) {
      *(int *)(local_10 + 4) = *(int *)(local_10 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
  }
  else {
    iVar9 = *(int *)(*(int *)(param_1_00 + 4) + 0xc);
    _Size = *(size_t *)(*(int *)(param_1_00 + 4) + 8);
    puVar4 = (undefined2 *)FUN_008ff850();
    iVar5 = FUN_008ff940();
    _Src_00 = *(undefined2 **)(*(int *)(param_1_00 + 4) + 0x14);
    _param_2 = iVar9;
    if (param_2 == '\0') {
      if (0 < iVar9) {
        puVar4 = (undefined2 *)((iVar9 * 3 + -3) * _Size + (int)puVar4);
        do {
          _memcpy(puVar4,_Src_00,_Size * 3);
          _Src_00 = (undefined2 *)((int)_Src_00 + _Size * 3);
          puVar4 = (undefined2 *)((int)puVar4 + _Size * -3);
          _param_2 = _param_2 + -1;
        } while (_param_2 != 0);
      }
      if (iVar5 != 0) {
        _Src = *(void **)(*(int *)(param_1_00 + 4) + 0x1c);
        _Dst = (void *)(_Size * iVar9 + iVar5);
        if (0 < iVar9) {
          do {
            _Dst = (void *)((int)_Dst - _Size);
            _memcpy(_Dst,_Src,_Size);
            _Src = (void *)((int)_Src + _Size);
            iVar9 = iVar9 + -1;
          } while (iVar9 != 0);
        }
      }
    }
    else {
      if (0 < iVar9) {
        do {
          puVar4 = (undefined2 *)((int)puVar4 + _Size * 3);
          sVar7 = _Size;
          puVar2 = puVar4;
          if (0 < (int)_Size) {
            do {
              *(undefined2 *)((int)puVar2 + -3) = *_Src_00;
              *(undefined *)((int)puVar2 + -1) = *(undefined *)(_Src_00 + 1);
              _Src_00 = (undefined2 *)((int)_Src_00 + 3);
              sVar7 = sVar7 - 1;
              puVar2 = (undefined2 *)((int)puVar2 + -3);
            } while (sVar7 != 0);
          }
          _param_2 = _param_2 + -1;
        } while (_param_2 != 0);
      }
      if (iVar5 != 0) {
        puVar8 = *(undefined **)(*(int *)(param_1_00 + 4) + 0x1c);
        puVar6 = (undefined *)(iVar5 + _Size);
        if (0 < iVar9) {
          do {
            sVar7 = _Size;
            if (0 < (int)_Size) {
              do {
                uVar1 = *puVar8;
                puVar6 = puVar6 + -1;
                puVar8 = puVar8 + 1;
                sVar7 = sVar7 - 1;
                *puVar6 = uVar1;
              } while (sVar7 != 0);
            }
            puVar6 = puVar6 + _Size * 2;
            iVar9 = iVar9 + -1;
          } while (iVar9 != 0);
        }
      }
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_10;
    if (local_10 != 0) {
      *(int *)(local_10 + 4) = *(int *)(local_10 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
  }
  local_4 = local_4 & 0xffffff00;
  local_14 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_00901940(int param_1_00,undefined4 *param_1,int *param_2)

{
  int iVar1;
  size_t _Size;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  void *_Src;
  undefined4 uVar6;
  char *pcVar7;
  wchar_t *pwVar8;
  int local_24;
  void *local_20;
  void *local_1c;
  undefined **local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd5871;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_10 = 0;
  local_14 = wxImage::vftable;
  iVar1 = *(int *)(param_1_00 + 4);
  local_4 = 1;
  if ((((iVar1 == 0) || (*(char *)(iVar1 + 0x20) == '\0')) || (*(int *)(iVar1 + 8) == 0)) ||
     (*(int *)(iVar1 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x515,"wxImage::GetSubImage","IsOk()",
                   L"invalid image",uVar2);
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_10;
    if (local_10 != 0) {
      *(int *)(local_10 + 4) = *(int *)(local_10 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
    goto LAB_00901c02;
  }
  iVar1 = *param_2;
  if (((iVar1 < 0) || (param_2[1] < 0)) ||
     ((iVar4 = param_2[2], iVar3 = FUN_00900100(), iVar3 < iVar1 + -1 + iVar4 ||
      (iVar1 = param_2[3], iVar4 = param_2[1], iVar3 = FUN_00900150(), iVar3 < iVar1 + -1 + iVar4)))
     ) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x519,"wxImage::GetSubImage",
                   "(rect.GetLeft()>=0) && (rect.GetTop()>=0) && (rect.GetRight()<=GetWidth()) && (rect.GetBottom()<=GetHeight())"
                   ,L"invalid subimage size",uVar2);
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_10;
    if (local_10 != 0) {
      *(int *)(local_10 + 4) = *(int *)(local_10 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
    goto LAB_00901c02;
  }
  local_24 = param_2[3];
  _Size = param_2[2];
  FUN_00900c30(_Size,local_24,0);
  iVar4 = FUN_008ff850();
  iVar1 = *(int *)(*(int *)(param_1_00 + 4) + 0x1c);
  local_1c = (void *)FUN_008ff850();
  local_20 = (void *)0x0;
  if (local_1c == (void *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pwVar8 = L"unable to create image";
      pcVar7 = "subdata";
      uVar6 = 0x525;
LAB_00901a7a:
      FUN_00840480("..\\..\\src\\common\\image.cpp",uVar6,"wxImage::GetSubImage",pcVar7,pwVar8);
    }
  }
  else {
    if (iVar1 != 0) {
      FUN_008ff8a0(0,0);
      local_20 = (void *)FUN_008ff940();
      if (local_20 == (void *)0x0) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          pwVar8 = L"unable to create alpha channel";
          pcVar7 = "subalpha";
          uVar6 = 0x52a;
          goto LAB_00901a7a;
        }
        goto LAB_00901a8c;
      }
    }
    iVar3 = *(int *)(param_1_00 + 4);
    if (*(char *)(iVar3 + 0x18) != '\0') {
      FUN_008ff990(*(undefined *)(iVar3 + 0x19),*(undefined *)(iVar3 + 0x1a),
                   *(undefined *)(iVar3 + 0x1b));
    }
    iVar3 = FUN_00900100();
    iVar5 = param_2[1] * iVar3 + *param_2;
    param_2 = (int *)(iVar1 + iVar5);
    _Src = (void *)(iVar5 * 3 + iVar4);
    if (0 < local_24) {
      do {
        _memcpy(local_1c,_Src,_Size * 3);
        local_1c = (void *)((int)local_1c + _Size * 3);
        _Src = (void *)((int)_Src + iVar3 * 3);
        if (local_20 != (void *)0x0) {
          _memcpy(local_20,param_2,_Size);
          local_20 = (void *)((int)local_20 + _Size);
          param_2 = (int *)((int)param_2 + iVar3);
        }
        local_24 = local_24 + -1;
      } while (local_24 != 0);
    }
  }
LAB_00901a8c:
  FUN_008196af(&local_14);
LAB_00901c02:
  local_4 = local_4 & 0xffffff00;
  local_14 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00901c30(int param_1_00,int param_1,int param_2,int param_3)

{
  undefined2 *puVar1;
  char cVar2;
  char cVar3;
  char cVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  void *pvVar9;
  int iVar10;
  void *pvVar11;
  int local_1c;
  int local_14;
  size_t local_10;
  int local_c;
  
  iVar5 = *(int *)(param_1_00 + 4);
  iVar10 = 0;
  if ((((iVar5 == 0) || (*(char *)(iVar5 + 0x20) == '\0')) || (*(int *)(iVar5 + 8) == 0)) ||
     (*(int *)(iVar5 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x57a,"wxImage::Paste","IsOk()",L"invalid image");
    return;
  }
  iVar5 = *(int *)(param_1 + 4);
  if (((iVar5 == 0) || (*(char *)(iVar5 + 0x20) == '\0')) ||
     ((*(int *)(iVar5 + 8) == 0 || (*(int *)(iVar5 + 0xc) == 0)))) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x57b,"wxImage::Paste","image.IsOk()",
                 L"invalid image");
    return;
  }
  FUN_0083eaa0();
  local_14 = 0;
  local_10 = FUN_00900100();
  local_1c = FUN_00900150();
  if (param_2 < 0) {
    iVar10 = -param_2;
    local_10 = local_10 + param_2;
  }
  if (param_3 < 0) {
    local_14 = -param_3;
    local_1c = local_1c + param_3;
  }
  iVar5 = *(int *)(*(int *)(param_1_00 + 4) + 8);
  if (iVar5 < (int)(local_10 + iVar10 + param_2)) {
    local_10 = (iVar5 - iVar10) - param_2;
  }
  iVar5 = *(int *)(*(int *)(param_1_00 + 4) + 0xc);
  if (iVar5 < local_1c + local_14 + param_3) {
    local_1c = (iVar5 - local_14) - param_3;
  }
  if ((int)local_10 < 1) {
    return;
  }
  if (local_1c < 1) {
    return;
  }
  cVar2 = FUN_008ffb60();
  if (cVar2 != '\0') {
    cVar2 = FUN_008ffb60();
    if (cVar2 == '\0') goto LAB_00901e24;
    cVar2 = FUN_008ffa10();
    cVar3 = FUN_008ffa10();
    if (cVar3 != cVar2) goto LAB_00901e24;
    cVar2 = FUN_008ffa60();
    cVar3 = FUN_008ffa60();
    if (cVar3 != cVar2) goto LAB_00901e24;
    cVar2 = FUN_008ffab0();
    cVar3 = FUN_008ffab0();
    if (cVar3 != cVar2) goto LAB_00901e24;
  }
  iVar5 = FUN_00900100();
  iVar6 = FUN_008ff850();
  pvVar9 = (void *)(iVar6 + (iVar5 * local_14 + iVar10) * 3);
  iVar6 = FUN_00900100();
  iVar5 = *(int *)(*(int *)(param_1_00 + 4) + 8);
  iVar7 = FUN_008ff850();
  pvVar11 = (void *)(iVar7 + ((local_14 + param_3) * iVar5 + iVar10 + param_2) * 3);
  if (0 < local_1c) {
    param_1 = local_1c;
    do {
      _memcpy(pvVar11,pvVar9,local_10 * 3);
      pvVar9 = (void *)((int)pvVar9 + iVar6 * 3);
      pvVar11 = (void *)((int)pvVar11 + iVar5 * 3);
      param_1 = param_1 + -1;
    } while (param_1 != 0);
  }
LAB_00901e24:
  cVar2 = FUN_008f2530();
  if (cVar2 != '\0') {
    cVar2 = FUN_008f2530();
    if (cVar2 == '\0') {
      FUN_00900600();
    }
    iVar5 = FUN_00900100();
    iVar6 = FUN_008ff940();
    pvVar9 = (void *)(iVar6 + iVar5 * local_14 + iVar10);
    iVar6 = FUN_00900100();
    iVar5 = *(int *)(*(int *)(param_1_00 + 4) + 8);
    iVar7 = FUN_008ff940();
    pvVar11 = (void *)((local_14 + param_3) * iVar5 + iVar7 + iVar10 + param_2);
    if (0 < local_1c) {
      local_c = local_1c;
      do {
        _memcpy(pvVar11,pvVar9,local_10);
        pvVar9 = (void *)((int)pvVar9 + iVar6);
        pvVar11 = (void *)((int)pvVar11 + iVar5);
        local_c = local_c + -1;
      } while (local_c != 0);
    }
  }
  cVar2 = FUN_008ffb60();
  if ((cVar2 == '\0') && (cVar2 = FUN_008ffb60(), cVar2 != '\0')) {
    cVar2 = FUN_008ffa10();
    cVar3 = FUN_008ffa60();
    cVar4 = FUN_008ffab0();
    iVar5 = FUN_00900100();
    iVar6 = FUN_008ff850();
    iVar6 = iVar6 + (iVar5 * local_14 + iVar10) * 3;
    iVar7 = FUN_00900100();
    iVar5 = *(int *)(*(int *)(param_1_00 + 4) + 8);
    iVar8 = FUN_008ff850();
    iVar8 = iVar8 + ((local_14 + param_3) * iVar5 + iVar10 + param_2) * 3;
    if (0 < local_1c) {
      param_2 = local_1c;
      do {
        if (0 < (int)(local_10 * 3)) {
          iVar10 = 0;
          do {
            puVar1 = (undefined2 *)(iVar10 + iVar6);
            if (((*(char *)(iVar10 + iVar6) != cVar2) || (*(char *)(iVar10 + 1 + iVar6) != cVar3))
               || (*(char *)(iVar10 + 2 + iVar6) != cVar4)) {
              *(undefined2 *)((int)puVar1 + (iVar8 - iVar6)) = *puVar1;
              *(undefined *)((int)puVar1 + (iVar8 - iVar6) + 2) = *(undefined *)(puVar1 + 1);
            }
            iVar10 = iVar10 + 3;
          } while (iVar10 < (int)(local_10 * 3));
        }
        iVar6 = iVar6 + iVar7 * 3;
        iVar8 = iVar8 + iVar5 * 3;
        param_2 = param_2 + -1;
      } while (param_2 != 0);
    }
  }
  return;
}



void __thiscall
FUN_00902040(int param_1_00,char param_1,char param_2,char param_3,char param_4,char param_5,
            char param_6)

{
  char *pcVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar2 = *(int *)(param_1_00 + 4);
  if ((((iVar2 == 0) || (*(char *)(iVar2 + 0x20) == '\0')) || (*(int *)(iVar2 + 8) == 0)) ||
     (*(int *)(iVar2 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x5e2,"wxImage::Replace","IsOk()",
                   L"invalid image");
      return;
    }
  }
  else {
    FUN_0083eaa0();
    pcVar1 = (char *)FUN_008ff850();
    iVar2 = FUN_00900100();
    iVar3 = FUN_00900150();
    if (0 < iVar3) {
      do {
        iVar4 = iVar2;
        if (0 < iVar2) {
          do {
            if (((*pcVar1 == param_1) && (pcVar1[1] == param_2)) && (pcVar1[2] == param_3)) {
              *pcVar1 = param_4;
              pcVar1[1] = param_5;
              pcVar1[2] = param_6;
            }
            pcVar1 = pcVar1 + 3;
            iVar4 = iVar4 + -1;
          } while (iVar4 != 0);
        }
        iVar3 = iVar3 + -1;
      } while (iVar3 != 0);
    }
  }
  return;
}



undefined4 * __thiscall
FUN_00902110(int param_1_00,undefined4 *param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4)

{
  char cVar1;
  char cVar2;
  char cVar3;
  char cVar4;
  int iVar5;
  uint uVar6;
  undefined2 *puVar7;
  void *_Dst;
  int iVar8;
  int iVar9;
  undefined2 *puVar10;
  void *_Src;
  undefined **local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd58b1;
  local_c = ExceptionList;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  FUN_00900e70(&local_14,0);
  local_4 = 1;
  if ((((local_10 == 0) || (*(char *)(local_10 + 0x20) == '\0')) || (*(int *)(local_10 + 8) == 0))
     || (*(int *)(local_10 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0();
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_10;
    if (local_10 != 0) {
      *(int *)(local_10 + 4) = *(int *)(local_10 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
  }
  else {
    puVar10 = *(undefined2 **)(*(int *)(param_1_00 + 4) + 0x14);
    puVar7 = (undefined2 *)FUN_008ff850(uVar6);
    iVar9 = *(int *)(param_1_00 + 4);
    cVar1 = *(char *)(iVar9 + 0x1a);
    cVar3 = *(char *)(iVar9 + 0x19);
    cVar2 = *(char *)(iVar9 + 0x18);
    iVar8 = *(int *)(iVar9 + 0xc) * *(int *)(iVar9 + 8);
    cVar4 = *(char *)(iVar9 + 0x1b);
    if (0 < iVar8) {
      do {
        *puVar7 = *puVar10;
        *(char *)(puVar7 + 1) = *(char *)(puVar10 + 1);
        if (((cVar2 == '\0') || (*(char *)puVar10 != cVar3)) ||
           ((*(char *)((int)puVar10 + 1) != cVar1 || (*(char *)(puVar10 + 1) != cVar4)))) {
          FUN_0091fed0(puVar7,(int)puVar7 + 1,puVar7 + 1,param_2,param_3,param_4);
        }
        puVar10 = (undefined2 *)((int)puVar10 + 3);
        puVar7 = (undefined2 *)((int)puVar7 + 3);
        iVar8 = iVar8 + -1;
      } while (iVar8 != 0);
    }
    if (((local_10 == 0) || (*(char *)(local_10 + 0x20) == '\0')) ||
       ((*(int *)(local_10 + 8) == 0 || (*(int *)(local_10 + 0xc) == 0)))) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480();
      }
    }
    else if (*(int *)(local_10 + 0x1c) != 0) {
      iVar9 = *(int *)(param_1_00 + 4);
      if ((((iVar9 == 0) || (*(char *)(iVar9 + 0x20) == '\0')) || (*(int *)(iVar9 + 8) == 0)) ||
         (*(int *)(iVar9 + 0xc) == 0)) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480();
        }
        iVar9 = 0;
      }
      else {
        iVar9 = *(int *)(iVar9 + 8);
      }
      iVar8 = *(int *)(param_1_00 + 4);
      if (((iVar8 == 0) || (*(char *)(iVar8 + 0x20) == '\0')) ||
         ((*(int *)(iVar8 + 8) == 0 || (*(int *)(iVar8 + 0xc) == 0)))) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480();
        }
        iVar8 = 0;
      }
      else {
        iVar8 = *(int *)(iVar8 + 0xc);
      }
      iVar5 = *(int *)(param_1_00 + 4);
      if (((iVar5 == 0) || (*(char *)(iVar5 + 0x20) == '\0')) ||
         ((*(int *)(iVar5 + 8) == 0 || (*(int *)(iVar5 + 0xc) == 0)))) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480();
        }
        _Src = (void *)0x0;
      }
      else {
        _Src = *(void **)(iVar5 + 0x1c);
      }
      if ((((local_10 == 0) || (*(char *)(local_10 + 0x20) == '\0')) ||
          (*(int *)(local_10 + 8) == 0)) || (*(int *)(local_10 + 0xc) == 0)) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480();
        }
        _Dst = (void *)0x0;
      }
      else {
        _Dst = *(void **)(local_10 + 0x1c);
      }
      _memcpy(_Dst,_Src,iVar8 * iVar9);
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_10;
    if (local_10 != 0) {
      *(int *)(local_10 + 4) = *(int *)(local_10 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
  }
  local_4 = local_4 & 0xffffff00;
  local_14 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



// WARNING: Removing unreachable block (ram,0x009025aa)
// WARNING: Removing unreachable block (ram,0x009025fe)
// WARNING: Removing unreachable block (ram,0x00902647)

undefined4 * __thiscall
FUN_00902460(int param_1_00,undefined4 *param_1,char param_2,char param_3,char param_4)

{
  int iVar1;
  char *pcVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 local_18;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd58f1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1_00 + 4);
  local_4 = 1;
  if ((((iVar1 == 0) || (*(char *)(iVar1 + 0x20) == '\0')) || (*(int *)(iVar1 + 8) == 0)) ||
     (*(int *)(iVar1 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x623,"wxImage::ConvertToMono","IsOk()",
                   L"invalid image",DAT_0323f878 ^ (uint)&stack0xffffffd4);
    }
    *param_1 = wxObject::vftable;
    param_1[1] = 0;
    *param_1 = wxImage::vftable;
  }
  else {
    FUN_00900c30(*(undefined4 *)(iVar1 + 8),*(undefined4 *)(iVar1 + 0xc),0);
    iVar1 = FUN_008ff850();
    if (iVar1 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\image.cpp",0x629,"wxImage::ConvertToMono",&DAT_00fb8b30,
                     L"unable to create image");
      }
      *param_1 = wxObject::vftable;
      param_1[1] = 0;
      *param_1 = wxImage::vftable;
    }
    else {
      iVar1 = *(int *)(param_1_00 + 4);
      if (*(char *)(iVar1 + 0x18) != '\0') {
        if (((*(char *)(iVar1 + 0x19) == param_2) && (*(char *)(iVar1 + 0x1a) == param_3)) &&
           (*(char *)(iVar1 + 0x1b) == param_4)) {
          uVar6 = 0xff;
          uVar5 = 0xff;
          uVar4 = 0xff;
        }
        else {
          uVar6 = 0;
          uVar5 = 0;
          uVar4 = 0;
        }
        FUN_008ff990(uVar4,uVar5,uVar6);
      }
      iVar1 = *(int *)(param_1_00 + 4);
      iVar3 = *(int *)(iVar1 + 0xc) * *(int *)(iVar1 + 8);
      pcVar2 = *(char **)(iVar1 + 0x14);
      iVar1 = FUN_008ff850();
      if (0 < iVar3) {
        do {
          if (((*pcVar2 != param_2) || (pcVar2[1] != param_3)) ||
             (local_18 = 1, pcVar2[2] != param_4)) {
            local_18 = 0;
          }
          FUN_0091fe40(iVar1,iVar1 + 1,iVar1 + 2,local_18);
          pcVar2 = pcVar2 + 3;
          iVar1 = iVar1 + 3;
          iVar3 = iVar3 + -1;
        } while (iVar3 != 0);
      }
      *param_1 = wxObject::vftable;
      param_1[1] = 0;
      *param_1 = wxImage::vftable;
    }
  }
  local_4 = local_4 & 0xffffff00;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_00902690(int param_1,undefined4 *param_2_00,undefined4 param_2)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  char *pcVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  char local_20;
  char local_1f;
  char local_1e;
  char local_1d;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd5929;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  *param_2_00 = wxObject::vftable;
  iVar7 = *(int *)(param_1 + 4);
  param_2_00[1] = iVar7;
  if (iVar7 != 0) {
    *(int *)(iVar7 + 4) = *(int *)(iVar7 + 4) + 1;
  }
  *param_2_00 = wxImage::vftable;
  iVar7 = param_2_00[1];
  local_4 = 0;
  if ((((iVar7 == 0) || (*(char *)(iVar7 + 0x20) == '\0')) || (*(int *)(iVar7 + 8) == 0)) ||
     (*(int *)(iVar7 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x7bd,"wxImage::GetMaskRed","IsOk()",
                   L"invalid image",uVar2);
    }
    local_1f = '\0';
  }
  else {
    local_1f = *(char *)(iVar7 + 0x19);
  }
  iVar7 = param_2_00[1];
  if (((iVar7 == 0) || (*(char *)(iVar7 + 0x20) == '\0')) ||
     ((*(int *)(iVar7 + 8) == 0 || (*(int *)(iVar7 + 0xc) == 0)))) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x7c4,"wxImage::GetMaskGreen","IsOk()",
                   L"invalid image",uVar2);
    }
    local_1e = '\0';
  }
  else {
    local_1e = *(char *)(iVar7 + 0x1a);
  }
  iVar7 = param_2_00[1];
  if (((iVar7 == 0) || (*(char *)(iVar7 + 0x20) == '\0')) ||
     ((*(int *)(iVar7 + 8) == 0 || (*(int *)(iVar7 + 0xc) == 0)))) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x7cb,"wxImage::GetMaskBlue","IsOk()",
                   L"invalid image",uVar2);
    }
    local_1d = '\0';
  }
  else {
    local_1d = *(char *)(iVar7 + 0x1b);
  }
  iVar7 = param_2_00[1];
  if ((((iVar7 == 0) || (*(char *)(iVar7 + 0x20) == '\0')) || (*(int *)(iVar7 + 8) == 0)) ||
     (*(int *)(iVar7 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x662,"wxImage::GetWidth","IsOk()",
                   L"invalid image",uVar2);
    }
    iVar7 = 0;
  }
  else {
    iVar7 = *(int *)(iVar7 + 8);
  }
  iVar8 = param_2_00[1];
  if (((iVar8 == 0) || (*(char *)(iVar8 + 0x20) == '\0')) ||
     ((*(int *)(iVar8 + 8) == 0 || (*(int *)(iVar8 + 0xc) == 0)))) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x669,"wxImage::GetHeight","IsOk()",
                   L"invalid image",uVar2);
    }
    iVar8 = 0;
  }
  else {
    iVar8 = *(int *)(iVar8 + 0xc);
  }
  iVar1 = param_2_00[1];
  if (((iVar1 == 0) || (*(char *)(iVar1 + 0x20) == '\0')) ||
     ((*(int *)(iVar1 + 8) == 0 || (*(int *)(iVar1 + 0xc) == 0)))) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x7db,"wxImage::HasMask","IsOk()",
                   L"invalid image");
    }
    local_20 = '\0';
  }
  else {
    local_20 = *(char *)(iVar1 + 0x18);
  }
  iVar8 = iVar8 + -1;
  if (-1 < iVar8) {
    iVar1 = iVar7 + -1;
    iVar5 = iVar8 * iVar7;
    do {
      if (-1 < iVar1) {
        iVar9 = (iVar5 + iVar1) * 3;
        iVar6 = iVar1;
        do {
          iVar3 = param_2_00[1];
          if ((((iVar3 == 0) || (*(char *)(iVar3 + 0x20) == '\0')) || (*(int *)(iVar3 + 8) == 0)) ||
             (*(int *)(iVar3 + 0xc) == 0)) {
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              FUN_00840480("..\\..\\src\\common\\image.cpp",0x6e7,"wxImage::GetData","IsOk()",
                           L"invalid image");
            }
            iVar3 = 0;
          }
          else {
            iVar3 = *(int *)(iVar3 + 0x14);
          }
          pcVar4 = (char *)(iVar3 + iVar9);
          if (((local_20 == '\0') || (*pcVar4 != local_1f)) ||
             ((pcVar4[1] != local_1e || (pcVar4[2] != local_1d)))) {
            FUN_009201e0(pcVar4,pcVar4 + 1,pcVar4 + 2,param_2);
          }
          iVar6 = iVar6 + -1;
          iVar9 = iVar9 + -3;
        } while (-1 < iVar6);
      }
      iVar8 = iVar8 + -1;
      iVar5 = iVar5 - iVar7;
    } while (-1 < iVar8);
  }
  ExceptionList = local_c;
  return param_2_00;
}



void __thiscall FUN_009029b0(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 4);
  if ((((iVar1 == 0) || (*(char *)(iVar1 + 0x20) == '\0')) || (*(int *)(iVar1 + 8) == 0)) ||
     (*(int *)(iVar1 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x87d,"wxImage::SetPalette","IsOk()",
                   L"invalid image");
    }
  }
  else {
    FUN_0083eaa0();
    if (*(int *)(param_1_00 + 4) + 0x24 != param_1) {
      FUN_0083ea60();
      return;
    }
  }
  return;
}



int FUN_00902a20(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar4 = DAT_032bf63c;
  if (DAT_032bf63c != 0) {
    do {
      iVar2 = *(int *)(iVar4 + 8);
      if (((param_2 == 0x32) || (*(int *)(iVar2 + 0x84) == param_2)) &&
         (((*(int *)(iVar2 + 0x40) == *(int *)(param_1 + 0x14) &&
           (iVar3 = FUN_00850760(param_1), iVar3 == 0)) ||
          (iVar3 = FUN_00853d10(param_1,0,0), iVar3 != -1)))) {
        return iVar2;
      }
      piVar1 = (int *)(iVar4 + 0xc);
      iVar4 = *piVar1;
    } while (*piVar1 != 0);
  }
  return 0;
}



int FUN_00902a90(int param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar4 = DAT_032bf63c;
  if (DAT_032bf63c != 0) {
    do {
      iVar2 = *(int *)(iVar4 + 8);
      if ((*(int *)(iVar2 + 0x74) == *(int *)(param_1 + 0x14)) &&
         (iVar3 = FUN_00850470(param_1), iVar3 == 0)) {
        return iVar2;
      }
      piVar1 = (int *)(iVar4 + 0xc);
      iVar4 = *piVar1;
    } while (*piVar1 != 0);
  }
  return 0;
}



void __fastcall FUN_00902ae0(void **param_1)

{
  FUN_00893cf0(param_1[1],*param_1,&LAB_00981b50);
  param_1[2] = (void *)0x0;
  _free(*param_1);
  return;
}



uint __thiscall FUN_00902b10(int param_1_00,uint param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  undefined *puVar7;
  undefined **local_38;
  undefined4 local_34;
  undefined **local_30;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5968;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  FUN_0083eb10(1,1000);
  uVar5 = 0;
  local_38 = wxObject::vftable;
  local_34 = 0;
  iVar4 = *(int *)(param_1_00 + 4);
  local_4 = 1;
  if ((((iVar4 == 0) || (*(char *)(iVar4 + 0x20) == '\0')) || (*(int *)(iVar4 + 8) == 0)) ||
     (*(int *)(iVar4 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x6e7,"wxImage::GetData","IsOk()",
                   L"invalid image",uVar1);
    }
    puVar7 = (undefined *)0x0;
  }
  else {
    puVar7 = *(undefined **)(iVar4 + 0x14);
  }
  iVar4 = *(int *)(param_1_00 + 4);
  if (((iVar4 == 0) || (*(char *)(iVar4 + 0x20) == '\0')) ||
     ((*(int *)(iVar4 + 8) == 0 || (*(int *)(iVar4 + 0xc) == 0)))) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x662,"wxImage::GetWidth","IsOk()",
                   L"invalid image",uVar1);
    }
    iVar4 = 0;
  }
  else {
    iVar4 = *(int *)(iVar4 + 8);
  }
  iVar2 = *(int *)(param_1_00 + 4);
  if (((iVar2 == 0) || (*(char *)(iVar2 + 0x20) == '\0')) ||
     ((*(int *)(iVar2 + 8) == 0 || (*(int *)(iVar2 + 0xc) == 0)))) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x669,"wxImage::GetHeight","IsOk()",
                   L"invalid image",uVar1);
    }
    iVar2 = 0;
  }
  else {
    iVar2 = *(int *)(iVar2 + 0xc);
  }
  uVar1 = 0;
  if (iVar2 * iVar4 != 0) {
    do {
      if (param_1 < uVar5) break;
      uVar6 = (uint)CONCAT21(CONCAT11(*puVar7,puVar7[1]),puVar7[2]);
      puVar7 = puVar7 + 3;
      iVar3 = FUN_008891a0(uVar6,uVar6);
      if (iVar3 == 0) {
        FUN_008890e0(uVar6,uVar6,&local_38);
        uVar5 = uVar5 + 1;
      }
      uVar1 = uVar1 + 1;
    } while (uVar1 < (uint)(iVar2 * iVar4));
  }
  local_4 = local_4 & 0xffffff00;
  local_38 = wxObject::vftable;
  FUN_0083e850();
  local_30 = wxHashTable::vftable;
  local_4 = 2;
  FUN_00889830();
  local_4 = 0xffffffff;
  local_30 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return uVar5;
}



undefined4 FUN_00902cf0(void)

{
  return DAT_032bf624;
}



void FUN_00902d00(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x00902d11. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 4))();
  return;
}



void FUN_00902d20(int param_1,undefined4 *param_2)

{
  int iVar1;
  
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = wxObject::vftable;
    iVar1 = *(int *)(param_1 + 4);
    param_2[1] = iVar1;
    if (iVar1 != 0) {
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    }
    *param_2 = wxImage::vftable;
  }
  return;
}



void FUN_00902d50(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bf624;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



undefined4 * __thiscall
FUN_00902d80(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxImage::vftable;
  FUN_00900c30(param_1,param_2,param_3);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00902df0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  (**(code **)(*(int *)param_1[4] + 8))(param_1);
  param_1[4] = DAT_032bf624;
  *param_1 = wxObject::vftable;
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1 = wxImage::vftable;
  return CONCAT31((int3)((uint)iVar1 >> 8),1);
}



int FUN_00902e30(int param_1)

{
  void *pvVar1;
  int iVar2;
  size_t _Size;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc57ab;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(char *)(param_1 + 0x20) != '\0') {
    pvVar1 = operator_new(0x4c);
    local_4 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = FUN_00900b70();
    }
    *(undefined4 *)(iVar2 + 8) = *(undefined4 *)(param_1 + 8);
    *(undefined4 *)(iVar2 + 0xc) = *(undefined4 *)(param_1 + 0xc);
    *(undefined *)(iVar2 + 0x19) = *(undefined *)(param_1 + 0x19);
    *(undefined *)(iVar2 + 0x1a) = *(undefined *)(param_1 + 0x1a);
    *(undefined *)(iVar2 + 0x1b) = *(undefined *)(param_1 + 0x1b);
    *(undefined *)(iVar2 + 0x18) = *(undefined *)(param_1 + 0x18);
    *(undefined *)(iVar2 + 0x20) = 1;
    _Size = *(int *)(param_1 + 8) * *(int *)(param_1 + 0xc);
    local_4 = 0xffffffff;
    if (*(int *)(param_1 + 0x1c) != 0) {
      pvVar1 = _malloc(_Size);
      *(void **)(iVar2 + 0x1c) = pvVar1;
      _memcpy(pvVar1,*(void **)(param_1 + 0x1c),_Size);
    }
    pvVar1 = _malloc(_Size * 3);
    *(void **)(iVar2 + 0x14) = pvVar1;
    _memcpy(pvVar1,*(void **)(param_1 + 0x14),_Size * 3);
    if (iVar2 + 0x24 != param_1 + 0x24) {
      FUN_0083ea60(param_1 + 0x24);
    }
    FUN_00855070(param_1 + 0x2c);
    FUN_00855070(param_1 + 0x3c);
    ExceptionList = local_c;
    return iVar2;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0xe4,"wxImage::CloneRefData","refData->m_ok",
                 L"invalid image",DAT_0323f878 ^ (uint)&stack0xffffffe8);
  }
  ExceptionList = local_c;
  return 0;
}



int __thiscall FUN_00902f80(int param_1,int param_2_00,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  undefined *puVar15;
  undefined *puVar16;
  int iVar17;
  float10 extraout_ST0;
  float10 extraout_ST0_00;
  float10 extraout_ST1;
  float10 fVar18;
  float10 fVar19;
  float10 fVar20;
  float10 fVar21;
  float10 fVar22;
  int local_68;
  undefined *local_64;
  undefined *local_60;
  int local_5c;
  int local_58;
  undefined local_30;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd59a9;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00902d80(param_2,param_3,0);
  local_4 = 0;
  iVar1 = *(int *)(param_1 + 4);
  iVar6 = FUN_00a49750(uVar5);
  iVar7 = FUN_00a49750();
  iVar2 = *(int *)(iVar1 + 0x14);
  iVar1 = *(int *)(iVar1 + 0x1c);
  iVar8 = *(int *)(param_2_00 + 4);
  if ((((iVar8 == 0) || (*(char *)(iVar8 + 0x20) == '\0')) || (*(int *)(iVar8 + 8) == 0)) ||
     (*(int *)(iVar8 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x6e7,"wxImage::GetData","IsOk()",
                   L"invalid image");
    }
    puVar16 = (undefined *)0x0;
  }
  else {
    puVar16 = *(undefined **)(iVar8 + 0x14);
  }
  local_60 = (undefined *)0x0;
  if (iVar1 != 0) {
    FUN_008ff8a0(0,0);
    local_60 = (undefined *)FUN_008ff940();
  }
  local_58 = 0;
  local_64 = puVar16;
  if (0 < param_3) {
    do {
      iVar8 = FUN_00a49750();
      local_5c = 0;
      if (0 < param_2) {
        iVar9 = FUN_00a49750();
        puVar15 = puVar16;
        do {
          iVar10 = FUN_00a49750();
          local_68 = 0;
          fVar18 = extraout_ST0;
          fVar19 = extraout_ST0;
          fVar22 = extraout_ST0;
          fVar21 = extraout_ST0;
          for (iVar17 = iVar9; (iVar17 <= iVar8 + iVar7 || (iVar17 < iVar9 + 2));
              iVar17 = iVar17 + 1) {
            fVar20 = fVar22;
            if ((-1 < iVar17) &&
               (iVar3 = *(int *)(param_1 + 4), iVar17 <= *(int *)(iVar3 + 0xc) + -1)) {
              fVar20 = fVar19;
              iVar11 = FUN_00a49750();
              fVar18 = extraout_ST0_00;
              fVar19 = extraout_ST1;
              for (iVar12 = iVar11;
                  (iVar12 <= iVar10 + iVar6 ||
                  (puVar15 = local_64, fVar21 = fVar22, iVar12 < iVar11 + 2)); iVar12 = iVar12 + 1)
              {
                if ((-1 < iVar12) && (iVar4 = *(int *)(iVar3 + 8), iVar12 <= iVar4 + -1)) {
                  iVar13 = iVar4 * iVar17 + iVar12;
                  iVar4 = iVar2 + iVar13 * 2;
                  iVar14 = iVar4 + iVar13;
                  fVar18 = (float10)(uint)*(byte *)(iVar4 + iVar13) + fVar18;
                  fVar19 = (float10)(uint)*(byte *)(iVar14 + 1) + fVar19;
                  fVar20 = (float10)(uint)*(byte *)(iVar14 + 2) + fVar20;
                  if (iVar1 != 0) {
                    fVar22 = (float10)(uint)*(byte *)(iVar13 + iVar1) + fVar22;
                  }
                  local_68 = local_68 + 1;
                }
              }
            }
            fVar22 = fVar20;
          }
          fVar20 = (float10)local_68;
          puVar16 = puVar15 + 3;
          local_30 = (undefined)(int)ROUND(fVar18 / fVar20);
          *puVar15 = local_30;
          local_30 = (undefined)(int)ROUND(fVar19 / fVar20);
          puVar15[1] = local_30;
          local_30 = (undefined)(int)ROUND(fVar22 / fVar20);
          puVar15[2] = local_30;
          if (iVar1 != 0) {
            local_30 = (undefined)(int)ROUND(fVar21 / fVar20);
            *local_60 = local_30;
            local_60 = local_60 + 1;
          }
          local_5c = local_5c + 1;
          puVar15 = puVar16;
          local_64 = puVar16;
        } while (local_5c < param_2);
      }
      local_58 = local_58 + 1;
    } while (local_58 < param_3);
  }
  ExceptionList = local_c;
  return param_2_00;
}



int __thiscall FUN_00903330(int param_1_00,int param_1,int param_2,int param_3)

{
  int iVar1;
  byte *pbVar2;
  byte *pbVar3;
  byte bVar4;
  byte bVar5;
  byte bVar6;
  byte bVar7;
  byte bVar8;
  byte bVar9;
  byte bVar10;
  byte bVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  uint uVar15;
  int iVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  int iVar20;
  int iVar21;
  undefined *puVar22;
  int iVar23;
  float10 extraout_ST0;
  float10 fVar24;
  float10 fVar25;
  float10 extraout_ST0_00;
  float10 fVar26;
  float10 fVar27;
  float10 fVar28;
  float10 extraout_ST0_01;
  float10 extraout_ST0_02;
  float10 extraout_ST0_03;
  float10 extraout_ST0_04;
  float10 fVar29;
  float10 extraout_ST1;
  float10 extraout_ST1_00;
  float10 extraout_ST1_01;
  float10 extraout_ST1_02;
  float10 extraout_ST1_03;
  float10 extraout_ST1_04;
  float10 fVar30;
  float10 fVar31;
  float10 fVar32;
  undefined local_8c;
  int local_88;
  int local_84;
  undefined *local_7c;
  undefined *local_74;
  double local_5c;
  double local_54;
  double local_4c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd59ef;
  local_c = ExceptionList;
  uVar15 = DAT_0323f878 ^ (uint)&stack0xffffff60;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00902d80(param_2,param_3,0);
  iVar12 = *(int *)(*(int *)(param_1_00 + 4) + 0x14);
  iVar13 = *(int *)(*(int *)(param_1_00 + 4) + 0x1c);
  iVar14 = *(int *)(param_1 + 4);
  local_4 = 0;
  if ((((iVar14 == 0) || (*(char *)(iVar14 + 0x20) == '\0')) || (*(int *)(iVar14 + 8) == 0)) ||
     (*(int *)(iVar14 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x6e7,"wxImage::GetData","IsOk()",
                   L"invalid image",uVar15);
    }
    local_74 = (undefined *)0x0;
  }
  else {
    local_74 = *(undefined **)(iVar14 + 0x14);
  }
  local_7c = (undefined *)0x0;
  if (iVar13 != 0) {
    FUN_008ff8a0(0,0);
    local_7c = (undefined *)FUN_008ff940();
  }
  iVar19 = *(int *)(*(int *)(param_1_00 + 4) + 0xc) + -1;
  iVar14 = *(int *)(*(int *)(param_1_00 + 4) + 8) + -1;
  local_88 = 0;
  local_4c = 0.0;
  local_54 = 0.0;
  if (0 < param_3) {
    do {
      iVar16 = FUN_00a49750();
      fVar24 = (float10)iVar16;
      if ((NAN((float10)iVar19) || NAN(fVar24)) == ((float10)iVar19 == fVar24)) {
        local_5c = (double)(fVar24 + extraout_ST1);
      }
      else {
        local_5c = (double)iVar16;
      }
      local_84 = 0;
      fVar29 = extraout_ST1;
      if (0 < param_2) {
        while( true ) {
          fVar28 = (float10)iVar16;
          fVar25 = (float10)iVar14;
          iVar17 = FUN_00a49750();
          fVar26 = (float10)iVar17;
          fVar27 = fVar26;
          if ((NAN(extraout_ST1_00) || NAN(fVar26)) == (extraout_ST1_00 == fVar26)) {
            fVar27 = fVar26 + fVar28;
          }
          fVar30 = extraout_ST0_00 - fVar26;
          fVar28 = fVar28 - fVar30;
          fVar31 = extraout_ST1_00;
          if (fVar26 < fVar29 == (NAN(fVar26) || NAN(fVar29))) {
            iVar17 = iVar14;
            if (fVar26 <= extraout_ST1_00) {
              fVar31 = fVar27;
              fVar26 = extraout_ST1_00;
              fVar32 = fVar25;
              fVar29 = fVar28;
              iVar17 = FUN_00a49750();
              fVar30 = extraout_ST0_01;
              fVar27 = extraout_ST1_01;
              fVar25 = fVar26;
              fVar28 = fVar32;
            }
          }
          else {
            iVar17 = 0;
          }
          if (fVar27 < fVar29 == (NAN(fVar27) || NAN(fVar29))) {
            iVar23 = iVar14;
            if (fVar27 <= fVar31) {
              fVar27 = fVar25;
              fVar29 = fVar28;
              iVar23 = FUN_00a49750();
              fVar30 = extraout_ST0_02;
              fVar25 = extraout_ST1_02;
              fVar28 = fVar27;
            }
          }
          else {
            iVar23 = 0;
          }
          if (fVar25 < fVar29 == (NAN(fVar25) || NAN(fVar29))) {
            iVar20 = iVar19;
            if ((float10)iVar19 < fVar25 == (NAN((float10)iVar19) || NAN(fVar25))) {
              fVar29 = fVar28;
              iVar20 = FUN_00a49750();
              fVar30 = extraout_ST0_03;
              fVar28 = extraout_ST1_03;
            }
          }
          else {
            iVar20 = 0;
          }
          fVar27 = (float10)local_5c;
          if (fVar27 < fVar29 == (NAN(fVar27) || NAN(fVar29))) {
            iVar18 = iVar19;
            if ((float10)iVar19 < fVar27 == (NAN((float10)iVar19) || NAN(fVar27))) {
              iVar18 = FUN_00a49750();
              fVar28 = extraout_ST0_04;
              fVar30 = extraout_ST1_04;
            }
          }
          else {
            iVar18 = 0;
          }
          iVar21 = *(int *)(*(int *)(param_1_00 + 4) + 8);
          iVar20 = iVar21 * iVar20;
          iVar1 = iVar20 + iVar17;
          iVar20 = iVar20 + iVar23;
          iVar21 = iVar21 * iVar18;
          iVar17 = iVar21 + iVar17;
          iVar23 = iVar23 + iVar21;
          pbVar2 = (byte *)(iVar12 + iVar1 * 3);
          iVar18 = iVar12 + iVar20 * 2;
          iVar21 = iVar18 + iVar20;
          bVar4 = *(byte *)(iVar21 + 1);
          bVar5 = *(byte *)(iVar21 + 2);
          bVar6 = pbVar2[1];
          bVar7 = pbVar2[2];
          if (iVar13 != 0) {
            local_4c = (double)((float10)(uint)*(byte *)(iVar20 + iVar13) * fVar30 +
                               (float10)(uint)*(byte *)(iVar1 + iVar13) * fVar28);
          }
          iVar1 = iVar12 + iVar17 * 2;
          iVar21 = iVar1 + iVar17;
          pbVar3 = (byte *)(iVar12 + iVar23 * 3);
          bVar8 = pbVar3[1];
          bVar9 = pbVar3[2];
          bVar10 = *(byte *)(iVar21 + 1);
          bVar11 = *(byte *)(iVar21 + 2);
          if (iVar13 != 0) {
            local_54 = (double)((float10)(uint)*(byte *)(iVar17 + iVar13) * fVar28 +
                               (float10)(uint)*(byte *)(iVar13 + iVar23) * fVar30);
          }
          fVar29 = (float10)(double)(extraout_ST0 - fVar24);
          puVar22 = local_74 + 3;
          fVar27 = (float10)(double)(extraout_ST1 - (extraout_ST0 - fVar24));
          local_8c = (undefined)
                     (int)ROUND(((float10)(uint)*pbVar3 * fVar30 +
                                (float10)(uint)*(byte *)(iVar1 + iVar17) * fVar28) * fVar29 +
                                ((float10)(uint)*pbVar2 * fVar28 +
                                (float10)(uint)*(byte *)(iVar18 + iVar20) * fVar30) * fVar27);
          *local_74 = local_8c;
          local_8c = (undefined)
                     (int)ROUND(((float10)(uint)bVar6 * fVar28 + (float10)(uint)bVar4 * fVar30) *
                                fVar27 + ((float10)(uint)bVar10 * fVar28 +
                                         (float10)(uint)bVar8 * fVar30) * fVar29);
          local_74[1] = local_8c;
          local_8c = (undefined)
                     (int)ROUND((float10)(double)((float10)(uint)bVar7 * fVar28 +
                                                 (float10)(uint)bVar5 * fVar30) * fVar27 +
                                ((float10)(uint)bVar11 * fVar28 + (float10)(uint)bVar9 * fVar30) *
                                fVar29);
          local_74[2] = local_8c;
          if (iVar13 != 0) {
            local_8c = (undefined)
                       (int)ROUND(fVar27 * (float10)local_4c + fVar29 * (float10)local_54);
            *local_7c = local_8c;
            local_7c = local_7c + 1;
          }
          local_84 = local_84 + 1;
          local_74 = puVar22;
          if (param_2 <= local_84) break;
          fVar29 = (float10)1;
        }
      }
      local_88 = local_88 + 1;
    } while (local_88 < param_3);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00903890(undefined4 param_1)

{
  FUN_00902110(param_1,0x3fd322d0e5604189,0x3fe2c8b439581062,0x3fbd2f1a9fbe76c9);
  return param_1;
}



int __thiscall FUN_009038d0(int param_1_00,int *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined *puVar4;
  int local_10;
  uint local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  iVar1 = *(int *)(param_1_00 + 4);
  iVar3 = 0;
  if ((((iVar1 == 0) || (*(char *)(iVar1 + 0x20) == '\0')) || (*(int *)(iVar1 + 8) == 0)) ||
     (*(int *)(iVar1 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x6e7,"wxImage::GetData","IsOk()",
                   L"invalid image");
    }
    puVar4 = (undefined *)0x0;
  }
  else {
    puVar4 = *(undefined **)(iVar1 + 0x14);
  }
  local_10 = 0;
  FUN_00893cf0(param_1[1],*param_1,&LAB_00981b50);
  param_1[2] = 0;
  iVar1 = *(int *)(param_1_00 + 4);
  if (((iVar1 == 0) || (*(char *)(iVar1 + 0x20) == '\0')) ||
     ((*(int *)(iVar1 + 8) == 0 || (*(int *)(iVar1 + 0xc) == 0)))) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x662,"wxImage::GetWidth","IsOk()",
                   L"invalid image");
    }
  }
  else {
    iVar3 = *(int *)(iVar1 + 8);
  }
  iVar1 = *(int *)(param_1_00 + 4);
  if (((iVar1 == 0) || (*(char *)(iVar1 + 0x20) == '\0')) ||
     ((*(int *)(iVar1 + 8) == 0 || (*(int *)(iVar1 + 0xc) == 0)))) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x669,"wxImage::GetHeight","IsOk()",
                   L"invalid image");
    }
    iVar1 = 0;
  }
  else {
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  iVar1 = iVar1 * iVar3;
  if (iVar1 != 0) {
    local_8 = 0;
    local_4 = 0;
    do {
      local_c = (uint)CONCAT21(CONCAT11(*puVar4,puVar4[1]),puVar4[2]);
      puVar4 = puVar4 + 3;
      for (puVar2 = *(undefined4 **)(*param_1 + (local_c % (uint)param_1[1]) * 4);
          puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)*puVar2) {
        if (puVar2[1] == local_c) goto LAB_00903a2f;
      }
      puVar2 = (undefined4 *)FUN_00900a20(&local_c,local_c % (uint)param_1[1]);
LAB_00903a2f:
      iVar3 = puVar2[3];
      puVar2[3] = iVar3 + 1;
      if (iVar3 == 0) {
        puVar2[2] = local_10;
        local_10 = local_10 + 1;
      }
      iVar1 = iVar1 + -1;
    } while (iVar1 != 0);
  }
  return local_10;
}



undefined4 __thiscall FUN_00903a60(int *param_1_00,int *param_1)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  int iVar4;
  int iVar5;
  undefined4 local_58 [2];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0ae2;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar2 = false;
  bVar1 = false;
  local_58[0] = 0;
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_00903af4:
    bVar3 = true;
  }
  else {
    iVar4 = (**(code **)(*param_1 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffff98);
    puStack_8 = (undefined *)0x0;
    iVar5 = (**(code **)(*param_1_00 + 0x18))(local_58);
    uStack_4 = 1;
    bVar2 = true;
    bVar1 = true;
    local_58[0] = 3;
    if (*(int *)(iVar5 + 0x14) == *(int *)(iVar4 + 0x14)) {
      iVar4 = FUN_00850760(iVar4);
      if (iVar4 == 0) goto LAB_00903af4;
    }
    bVar3 = false;
  }
  if (bVar1) {
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
  }
  uStack_4 = 0xffffffff;
  if (bVar2) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar3) {
    FUN_008402e0("..\\..\\src\\common\\image.cpp",0x34,"wxImageVariantData::Eq",
                 "GetType() == data.GetType()",0);
  }
  ExceptionList = local_c;
  return CONCAT31((int3)((uint)param_1[3] >> 8),param_1[3] == param_1_00[3]);
}



undefined4 FUN_00903bc0(undefined4 param_1)

{
  FUN_00432231(param_1);
  return param_1;
}



undefined4 * __fastcall FUN_00903be0(undefined4 *param_1)

{
  wchar_t *pwVar1;
  short *psVar2;
  short *psVar3;
  wchar_t *pwVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5a18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00432034(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxBMPHandler::vftable;
  pwVar1 = L"Windows bitmap file";
  do {
    pwVar4 = pwVar1;
    pwVar1 = pwVar4 + 1;
  } while (*pwVar4 != L'\0');
  FID_conflict_assign(L"Windows bitmap file",(int)(pwVar4 + -0x6a2730) >> 1);
  psVar2 = &DAT_00d291d4;
  do {
    psVar3 = psVar2;
    psVar2 = psVar3 + 1;
  } while (*psVar3 != 0);
  FID_conflict_assign(&DAT_00d291d4,(int)(psVar3 + -0x6948ea) >> 1);
  param_1[0x21] = 1;
  pwVar1 = L"image/x-bmp";
  do {
    pwVar4 = pwVar1;
    pwVar1 = pwVar4 + 1;
  } while (*pwVar4 != L'\0');
  FID_conflict_assign(L"image/x-bmp",(int)(pwVar4 + -0x6a4964) >> 1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00903cb0(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  uint uVar2;
  
  FUN_0083eaa0();
  uVar2 = FUN_00853d10(param_1,0,0);
  if (uVar2 == 0xffffffff) {
    FUN_00854700(param_1,1);
    FUN_00854700(param_2,1);
    return;
  }
  iVar1 = *(int *)(param_1_00 + 4);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar1 + 0x30) <= uVar2)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                 "nIndex < m_nCount",L"wxArrayString: index out of bounds");
  }
  if (*(int *)(iVar1 + 0x34) + uVar2 * 0x24 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  iVar1 = *(int *)(param_1_00 + 4);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar1 + 0x40) <= uVar2)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                 "nIndex < m_nCount",L"wxArrayString: index out of bounds");
  }
  if (*(int *)(iVar1 + 0x44) + uVar2 * 0x24 != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  return;
}



void FUN_00903db0(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 local_4c;
  undefined local_48 [20];
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd5a50;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_4c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  FUN_0081c0f1(&DAT_00d2b618);
  local_4._0_1_ = 1;
  FUN_00820e3f(param_2,local_48,1);
  uVar2 = FUN_008854f0(uVar1);
  FUN_00853980(local_34,uVar2,local_4c);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0081b5bc();
  FUN_00903cb0(param_1,local_34);
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_00903eb0(int param_1_00,int param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    FUN_004325b6(PTR_DAT_03236318);
    return param_1;
  }
  iVar1 = FUN_00853d10(param_2,0,0);
  if (iVar1 == -1) {
    FUN_004325b6(PTR_DAT_03236318);
    return param_1;
  }
  uVar2 = thunk_FUN_004325d6(iVar1);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



undefined4 FUN_00903f50(undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined local_24 [4];
  undefined4 local_20;
  uint local_c;
  void *local_8;
  
  iVar1 = FUN_00903eb0(local_24,param_1);
  if (*(uint *)(iVar1 + 0x18) < 8) {
    iVar1 = iVar1 + 4;
  }
  else {
    iVar1 = *(int *)(iVar1 + 4);
  }
  uVar2 = FUN_00a4b994(iVar1);
  _free(local_8);
  if (7 < local_c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_20);
  }
  return uVar2;
}



undefined __thiscall FUN_00903fb0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  char cVar2;
  undefined uVar3;
  undefined4 uVar4;
  undefined local_64 [24];
  undefined local_4c [28];
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5aa0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = param_1_00[1];
  if ((((iVar1 == 0) || (*(char *)(iVar1 + 0x20) == '\0')) || (*(int *)(iVar1 + 8) == 0)) ||
     (*(int *)(iVar1 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x8f7,"wxImage::SaveFile","IsOk()",
                   L"invalid image",DAT_0323f878 ^ (uint)&stack0xffffff90);
    }
  }
  else {
    uVar4 = FUN_004325b6(L"FileName");
    local_4 = 0;
    FUN_00903cb0(uVar4,param_1);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    FUN_0043c211(&DAT_00d49318);
    local_4 = 1;
    FUN_008827d0(param_1,local_30);
    local_4._0_1_ = 3;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    cVar2 = FUN_00882af0();
    if (cVar2 != '\0') {
      FUN_00884460(local_64,0);
      local_4 = CONCAT31(local_4._1_3_,4);
      uVar3 = (**(code **)(*param_1_00 + 0x24))(local_4c,param_2);
      local_c = (void *)CONCAT31(local_c._1_3_,3);
      FUN_00884150();
      local_c = (void *)0xffffffff;
      FUN_00882bd0();
      ExceptionList = local_14;
      return uVar3;
    }
    local_4 = 0xffffffff;
    FUN_00882bd0();
  }
  ExceptionList = local_c;
  return 0;
}



undefined __thiscall FUN_00904180(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  char cVar2;
  undefined uVar3;
  undefined4 uVar4;
  undefined local_64 [24];
  undefined local_4c [28];
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5aa0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = param_1_00[1];
  if ((((iVar1 == 0) || (*(char *)(iVar1 + 0x20) == '\0')) || (*(int *)(iVar1 + 8) == 0)) ||
     (*(int *)(iVar1 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x90b,"wxImage::SaveFile","IsOk()",
                   L"invalid image",DAT_0323f878 ^ (uint)&stack0xffffff90);
    }
  }
  else {
    uVar4 = FUN_004325b6(L"FileName");
    local_4 = 0;
    FUN_00903cb0(uVar4,param_1);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    FUN_0043c211(&DAT_00d49318);
    local_4 = 1;
    FUN_008827d0(param_1,local_30);
    local_4._0_1_ = 3;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    cVar2 = FUN_00882af0();
    if (cVar2 != '\0') {
      FUN_00884460(local_64,0);
      local_4 = CONCAT31(local_4._1_3_,4);
      uVar3 = (**(code **)(*param_1_00 + 0x20))(local_4c,param_2);
      local_c = (void *)CONCAT31(local_c._1_3_,3);
      FUN_00884150();
      local_c = (void *)0xffffffff;
      FUN_00882bd0();
      ExceptionList = local_14;
      return uVar3;
    }
    local_4 = 0xffffffff;
    FUN_00882bd0();
  }
  ExceptionList = local_c;
  return 0;
}



int FUN_00904350(int param_1,undefined4 *param_2,undefined4 *param_3)

{
  bool bVar1;
  bool bVar2;
  char cVar3;
  undefined4 uVar4;
  int iVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5b1a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_2 == (undefined4 *)0x0) || (param_3 == (undefined4 *)0x0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0xba3,"wxImageHandler::GetResolutionFromOptions"
                   ,"x && y",L"NULL pointer",DAT_0323f878 ^ (uint)&stack0xffffff70);
    }
LAB_0090458c:
    iVar5 = 0;
  }
  else {
    uVar4 = FUN_004325b6(L"ResolutionX");
    local_4 = 0;
    bVar1 = false;
    if ((*(int *)(param_1 + 4) == 0) || (iVar5 = FUN_00853d10(uVar4,0,0), iVar5 == -1)) {
LAB_00904412:
      bVar2 = false;
    }
    else {
      uVar4 = FUN_004325b6(L"ResolutionY");
      local_4 = 1;
      bVar1 = true;
      cVar3 = FUN_008ffc30(uVar4);
      bVar2 = true;
      if (cVar3 == '\0') goto LAB_00904412;
    }
    if (bVar1) {
      FUN_0040159c();
    }
    local_4 = 0xffffffff;
    FUN_0040159c();
    if (bVar2) {
      uVar4 = FUN_004325b6(L"ResolutionX");
      local_4 = 2;
      uVar4 = FUN_00903f50(uVar4);
      *param_2 = uVar4;
      local_4 = 0xffffffff;
      FUN_0040159c();
      uVar4 = FUN_004325b6(L"ResolutionY");
      local_4 = 3;
      uVar4 = FUN_00903f50(uVar4);
      *param_3 = uVar4;
    }
    else {
      uVar4 = FUN_004325b6(L"Resolution");
      local_4 = 4;
      cVar3 = FUN_008ffc30(uVar4);
      local_4 = 0xffffffff;
      FUN_0040159c();
      if (cVar3 == '\0') {
        *param_3 = 0;
        *param_2 = 0;
        goto LAB_0090458c;
      }
      uVar4 = FUN_004325b6(L"Resolution");
      local_4 = 5;
      uVar4 = FUN_00903f50(uVar4);
      *param_3 = uVar4;
      *param_2 = uVar4;
    }
    local_4 = 0xffffffff;
    FUN_0040159c();
    uVar4 = FUN_004325b6(L"ResolutionUnit");
    local_4 = 6;
    iVar5 = FUN_00903f50(uVar4);
    FUN_0040159c();
    if (iVar5 == 0) {
      iVar5 = 1;
    }
  }
  ExceptionList = local_c;
  return iVar5;
}



undefined4 * __thiscall FUN_009045b0(int param_1,undefined4 *param_2_00,int param_2,int param_3)

{
  bool bVar1;
  undefined uVar2;
  char cVar3;
  int iVar4;
  undefined *puVar5;
  uint uVar6;
  byte *pbVar7;
  undefined *puVar8;
  int iVar9;
  int iVar10;
  undefined4 uVar11;
  char *pcVar12;
  wchar_t *pwVar13;
  byte local_ac;
  byte local_ab;
  byte local_aa;
  undefined **local_a8;
  int local_a4;
  undefined4 local_a0;
  int local_9c;
  uint local_98;
  undefined *local_94;
  uint local_90;
  uint local_8c;
  uint local_88;
  int local_84;
  uint local_80;
  undefined *local_7c;
  int local_78;
  int local_74;
  int local_70;
  int local_6c;
  int local_68;
  int local_64;
  int local_60;
  int local_5c;
  int local_58;
  undefined local_54 [36];
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd5b9a;
  local_c = ExceptionList;
  local_a0 = 0;
  if ((param_2 == 1) && (param_3 == 1)) {
    *param_2_00 = wxObject::vftable;
    iVar4 = *(int *)(param_1 + 4);
    param_2_00[1] = iVar4;
    if (iVar4 != 0) {
      *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
    }
    *param_2_00 = wxImage::vftable;
    return param_2_00;
  }
  local_a4 = 0;
  local_a8 = wxImage::vftable;
  iVar4 = *(int *)(param_1 + 4);
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  ExceptionList = &local_c;
  local_68 = param_1;
  if ((((iVar4 == 0) || (*(char *)(iVar4 + 0x20) == '\0')) || (*(int *)(iVar4 + 8) == 0)) ||
     (*(int *)(iVar4 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pwVar13 = L"invalid image";
      pcVar12 = "IsOk()";
      uVar11 = 0x136;
LAB_00904afe:
      FUN_00840480("..\\..\\src\\common\\image.cpp",uVar11,"wxImage::ShrinkBy",pcVar12,pwVar13,
                   DAT_0323f878 ^ (uint)&stack0xffffff44);
    }
  }
  else {
    if ((0 < param_2) && (0 < param_3)) {
      local_64 = *(int *)(iVar4 + 8);
      if ((*(int *)(iVar4 + 0xc) < 1) || (local_64 < 1)) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\common\\image.cpp",0x140,"wxImage::ShrinkBy",
                       "(old_height > 0) && (old_width > 0)",L"invalid old image size",
                       DAT_0323f878 ^ (uint)&stack0xffffff44);
        }
        FUN_008196af(&local_a8);
      }
      else {
        local_60 = local_64 / param_2;
        iVar4 = *(int *)(iVar4 + 0xc) / param_3;
        FUN_00900c30(local_60,iVar4,0);
        puVar5 = (undefined *)FUN_008ff850();
        if (puVar5 == (undefined *)0x0) {
          if (PTR_FUN_03235c4c != (undefined *)0x0) {
            FUN_00840480("..\\..\\src\\common\\image.cpp",0x149,"wxImage::ShrinkBy",&DAT_00fb8b30,
                         L"unable to create image");
          }
        }
        else {
          iVar10 = *(int *)(param_1 + 4);
          local_5c = *(int *)(iVar10 + 0x14);
          iVar9 = 0;
          bVar1 = false;
          local_aa = 0;
          local_ac = 0;
          local_ab = 0;
          local_7c = (undefined *)0x0;
          local_94 = puVar5;
          if (*(char *)(iVar10 + 0x18) == '\0') {
            iVar9 = *(int *)(iVar10 + 0x1c);
            if (iVar9 != 0) {
              FUN_008ff8a0(0,0);
              local_7c = (undefined *)FUN_008ff940();
            }
          }
          else {
            local_aa = *(byte *)(iVar10 + 0x19);
            local_ac = *(byte *)(iVar10 + 0x1a);
            local_ab = *(byte *)(iVar10 + 0x1b);
            bVar1 = true;
            FUN_008ff990(local_aa,local_ac,local_ab);
          }
          if (0 < iVar4) {
            local_58 = local_64 * param_3;
            local_84 = 0;
            local_6c = iVar4;
            do {
              if (0 < local_60) {
                local_9c = 0;
                local_74 = local_60;
                do {
                  uVar6 = 0;
                  local_90 = 0;
                  local_80 = 0;
                  local_98 = 0;
                  local_88 = 0;
                  local_8c = 0;
                  iVar4 = local_84;
                  iVar10 = param_3;
                  if (param_3 < 1) {
LAB_00904850:
                    *puVar5 = *(undefined *)(*(int *)(param_1 + 4) + 0x19);
                    puVar8 = puVar5 + 1;
                    *puVar8 = *(undefined *)(*(int *)(param_1 + 4) + 0x1a);
                    uVar2 = *(undefined *)(*(int *)(param_1 + 4) + 0x1b);
                  }
                  else {
                    do {
                      local_78 = iVar10;
                      iVar10 = 0;
                      if (0 < param_2) {
                        pbVar7 = (byte *)((local_9c + iVar4) * 3 + 2 + local_5c);
                        do {
                          uVar6 = 0xff;
                          if (iVar9 != 0) {
                            uVar6 = (uint)*(byte *)(local_9c + iVar4 + iVar10 + iVar9);
                          }
                          if ((((!bVar1) || (pbVar7[-2] != local_aa)) || (pbVar7[-1] != local_ac))
                             || (*pbVar7 != local_ab)) {
                            if ((char)uVar6 != '\0') {
                              local_90 = local_90 + pbVar7[-2];
                              local_80 = local_80 + pbVar7[-1];
                              local_98 = local_98 + *pbVar7;
                            }
                            local_88 = local_88 + uVar6;
                            local_8c = local_8c + 1;
                          }
                          iVar10 = iVar10 + 1;
                          pbVar7 = pbVar7 + 3;
                          uVar6 = local_8c;
                          puVar5 = local_94;
                        } while (iVar10 < param_2);
                      }
                      local_70 = iVar4 + local_64;
                      iVar4 = local_70;
                      iVar10 = local_78 + -1;
                    } while (local_78 + -1 != 0);
                    local_78 = 0;
                    param_1 = local_68;
                    if (uVar6 == 0) goto LAB_00904850;
                    if (iVar9 != 0) {
                      *local_7c = (char)(local_88 / uVar6);
                      local_7c = local_7c + 1;
                    }
                    puVar8 = puVar5 + 1;
                    *puVar5 = (char)(local_90 / uVar6);
                    *puVar8 = (char)(local_80 / uVar6);
                    uVar2 = (undefined)(local_98 / uVar6);
                  }
                  local_9c = local_9c + param_2;
                  puVar8[1] = uVar2;
                  puVar5 = puVar8 + 2;
                  local_74 = local_74 + -1;
                  local_94 = puVar5;
                } while (local_74 != 0);
                local_74 = 0;
              }
              local_84 = local_84 + local_58;
              local_6c = local_6c + -1;
            } while (local_6c != 0);
          }
          FUN_004325b6(L"HotSpotX");
          local_4._0_1_ = 2;
          cVar3 = FUN_008ffc30(local_54);
          local_4._0_1_ = 1;
          FUN_0040159c();
          if (cVar3 != '\0') {
            FUN_004325b6(L"HotSpotX");
            local_4._0_1_ = 3;
            FUN_004325b6(L"HotSpotX");
            local_4._0_1_ = 4;
            iVar4 = FUN_00903f50(local_30);
            FUN_00903db0(local_54,iVar4 / param_2);
            FUN_0040159c();
            local_4._0_1_ = 1;
            FUN_0040159c();
          }
          FUN_004325b6(L"HotSpotY");
          local_4._0_1_ = 5;
          cVar3 = FUN_008ffc30(local_30);
          local_4._0_1_ = 1;
          FUN_0040159c();
          if (cVar3 != '\0') {
            FUN_004325b6(L"HotSpotY");
            local_4._0_1_ = 6;
            FUN_004325b6(L"HotSpotY");
            local_4._0_1_ = 7;
            iVar4 = FUN_00903f50(local_54);
            FUN_00903db0(local_30,iVar4 / param_3);
            FUN_0040159c();
            FUN_0040159c();
          }
        }
        FUN_008196af(&local_a8);
      }
      goto LAB_00904b30;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pwVar13 = L"invalid new image size";
      pcVar12 = "(xFactor > 0) && (yFactor > 0)";
      uVar11 = 0x13a;
      goto LAB_00904afe;
    }
  }
  param_2_00[1] = local_a4;
  *param_2_00 = wxObject::vftable;
  if (local_a4 != 0) {
    *(int *)(local_a4 + 4) = *(int *)(local_a4 + 4) + 1;
  }
  *param_2_00 = wxImage::vftable;
LAB_00904b30:
  local_a0 = 1;
  local_4 = (uint)local_4._1_3_ << 8;
  local_a8 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_2_00;
}



undefined4 * __thiscall
FUN_00904b70(undefined ***param_1_00,undefined4 *param_1,undefined *param_2,undefined *param_3,
            uint param_4)

{
  undefined **ppuVar1;
  undefined *puVar2;
  undefined *puVar3;
  char cVar4;
  uint uVar5;
  undefined4 *puVar6;
  int iVar7;
  undefined **local_74;
  int local_70;
  undefined local_54 [36];
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd5c3a;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  local_70 = 0;
  local_74 = wxImage::vftable;
  ppuVar1 = param_1_00[1];
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  if ((((ppuVar1 == (undefined **)0x0) || (*(char *)(ppuVar1 + 8) == '\0')) ||
      (ppuVar1[2] == (undefined *)0x0)) || (ppuVar1[3] == (undefined *)0x0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x1ad,"wxImage::Scale","IsOk()",L"invalid image"
                   ,uVar5);
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_70;
    if (local_70 != 0) {
      *(int *)(local_70 + 4) = *(int *)(local_70 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
  }
  else if (((int)param_2 < 1) || ((int)param_3 < 1)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x1b1,"wxImage::Scale",
                   "(width > 0) && (height > 0)",L"invalid new image size",uVar5);
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_70;
    if (local_70 != 0) {
      *(int *)(local_70 + 4) = *(int *)(local_70 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
  }
  else {
    puVar2 = ppuVar1[3];
    puVar3 = ppuVar1[2];
    if (((int)puVar2 < 1) || ((int)puVar3 < 1)) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\image.cpp",0x1b6,"wxImage::Scale",
                     "(old_height > 0) && (old_width > 0)",L"invalid old image size",uVar5);
      }
      *param_1 = wxObject::vftable;
      param_1[1] = local_70;
      if (local_70 != 0) {
        *(int *)(local_70 + 4) = *(int *)(local_70 + 4) + 1;
      }
      *param_1 = wxImage::vftable;
    }
    else {
      if ((puVar3 != param_2) || (puVar2 != param_3)) {
        if (param_4 == 1) {
          if (((int)param_2 < (int)puVar3) && ((int)param_3 < (int)puVar2)) {
            param_4 = 3;
          }
          else {
            param_4 = 2;
          }
LAB_00904c6f:
                    // WARNING: Could not recover jumptable at 0x00904c6f. Too many branches
                    // WARNING: Treating indirect jump as call
          puVar6 = (undefined4 *)(**(code **)(&DAT_0090502c + param_4 * 4))();
          return puVar6;
        }
        if (param_4 < 4) goto LAB_00904c6f;
        ppuVar1 = param_1_00[1];
        if (*(char *)(ppuVar1 + 6) != '\0') {
          FUN_008ff990(*(undefined *)((int)ppuVar1 + 0x19),*(undefined *)((int)ppuVar1 + 0x1a),
                       *(undefined *)((int)ppuVar1 + 0x1b));
        }
        FUN_004325b6(L"HotSpotX");
        local_4._0_1_ = 6;
        cVar4 = FUN_008ffc30(local_54);
        local_4._0_1_ = 1;
        FUN_0040159c();
        if (cVar4 != '\0') {
          FUN_004325b6(L"HotSpotX");
          local_4._0_1_ = 7;
          FUN_004325b6(L"HotSpotX");
          local_4._0_1_ = 8;
          iVar7 = FUN_00903f50(local_30);
          FUN_00903db0(local_54,(iVar7 * (int)param_2) / (int)puVar3);
          FUN_0040159c();
          local_4._0_1_ = 1;
          FUN_0040159c();
        }
        FUN_004325b6(L"HotSpotY");
        local_4._0_1_ = 9;
        cVar4 = FUN_008ffc30(local_30);
        local_4._0_1_ = 1;
        FUN_0040159c();
        if (cVar4 != '\0') {
          FUN_004325b6(L"HotSpotY");
          local_4._0_1_ = 10;
          FUN_004325b6(L"HotSpotY");
          local_4._0_1_ = 0xb;
          iVar7 = FUN_00903f50(local_54);
          FUN_00903db0(local_30,(iVar7 * (int)param_3) / (int)puVar2);
          FUN_0040159c();
          FUN_0040159c();
        }
        param_1_00 = &local_74;
      }
      FUN_008196af(param_1_00);
    }
  }
  local_4 = (uint)local_4._1_3_ << 8;
  local_74 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_00905040(int param_1_00,undefined4 *param_1,char param_2)

{
  undefined uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  undefined2 *puVar6;
  int iVar7;
  undefined *puVar8;
  int iVar9;
  undefined2 *puVar10;
  undefined *puVar11;
  undefined2 *puVar12;
  undefined2 *puVar13;
  undefined *puVar14;
  bool bVar15;
  int local_58;
  int local_54;
  undefined *local_50;
  int local_4c;
  int local_48;
  int local_44;
  undefined **local_38;
  int local_34;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5cb1;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  FUN_00900e70(&local_38,1);
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  if ((((local_34 == 0) || (*(char *)(local_34 + 0x20) == '\0')) || (*(int *)(local_34 + 8) == 0))
     || (*(int *)(local_34 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\image.cpp",0x435,"wxImage::Rotate90","image.IsOk()",0,uVar4
                  );
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_34;
    if (local_34 != 0) {
      *(int *)(local_34 + 4) = *(int *)(local_34 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
  }
  else {
    iVar2 = *(int *)(*(int *)(param_1_00 + 4) + 8);
    iVar3 = *(int *)(*(int *)(param_1_00 + 4) + 0xc);
    FUN_004325b6(L"HotSpotX");
    local_4._0_1_ = 2;
    if (*(int *)(param_1_00 + 4) == 0) {
      bVar15 = false;
    }
    else {
      iVar5 = FUN_00853d10(local_30,0,0);
      bVar15 = iVar5 != -1;
    }
    local_4._0_1_ = 1;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    if (bVar15) {
      FUN_004325b6(L"HotSpotX");
      local_4._0_1_ = 3;
      iVar5 = FUN_00903f50(local_30);
      local_4._0_1_ = 1;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
      if (param_2 == '\0') {
        iVar5 = (iVar2 - iVar5) + -1;
      }
      FUN_004325b6(L"HotSpotY");
      local_4._0_1_ = 4;
      FUN_00903db0(local_30,iVar5);
      local_4._0_1_ = 1;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
    }
    FUN_004325b6(L"HotSpotY");
    local_4._0_1_ = 5;
    if (*(int *)(param_1_00 + 4) == 0) {
      bVar15 = false;
    }
    else {
      iVar5 = FUN_00853d10(local_30,0,0);
      bVar15 = iVar5 != -1;
    }
    local_4._0_1_ = 1;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    if (bVar15) {
      FUN_004325b6(L"HotSpotY");
      local_4._0_1_ = 6;
      iVar5 = FUN_00903f50(local_30);
      local_4._0_1_ = 1;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
      if (param_2 != '\0') {
        iVar5 = (iVar3 - iVar5) + -1;
      }
      FUN_004325b6(L"HotSpotX");
      local_4._0_1_ = 7;
      FUN_00903db0(local_30,iVar5);
      local_4._0_1_ = 1;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
    }
    iVar5 = FUN_008ff850();
    local_44 = 0;
    if (0 < iVar2) {
      do {
        iVar7 = iVar2;
        if (local_44 + 0x15 < iVar2) {
          iVar7 = local_44 + 0x15;
        }
        local_48 = 0;
        if (0 < iVar3) {
          local_54 = local_44 * 3;
          local_50 = (undefined *)0x0;
          do {
            puVar12 = (undefined2 *)(*(int *)(*(int *)(param_1_00 + 4) + 0x14) + local_54);
            if (local_44 < iVar7) {
              puVar13 = (undefined2 *)(iVar5 + (((local_44 + 1) * iVar3 - local_48) + -1) * 3);
              puVar10 = (undefined2 *)
                        ((int)local_50 + ((iVar2 - local_44) + -1) * iVar3 * 3 + iVar5);
              iVar9 = iVar7 - local_44;
              do {
                puVar6 = puVar13;
                if (param_2 == '\0') {
                  puVar6 = puVar10;
                }
                *puVar6 = *puVar12;
                *(undefined *)(puVar6 + 1) = *(undefined *)(puVar12 + 1);
                puVar12 = (undefined2 *)((int)puVar12 + 3);
                puVar13 = (undefined2 *)((int)puVar13 + iVar3 * 3);
                puVar10 = (undefined2 *)((int)puVar10 + iVar3 * -3);
                iVar9 = iVar9 + -1;
              } while (iVar9 != 0);
            }
            local_54 = local_54 + iVar2 * 3;
            local_50 = (undefined *)((int)local_50 + 3);
            local_48 = local_48 + 1;
          } while (local_48 < iVar3);
        }
        local_44 = iVar7;
      } while (iVar7 < iVar2);
    }
    if (*(int *)(*(int *)(param_1_00 + 4) + 0x1c) != 0) {
      if (((local_34 == 0) || (*(char *)(local_34 + 0x20) == '\0')) ||
         ((*(int *)(local_34 + 8) == 0 || (*(int *)(local_34 + 0xc) == 0)))) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\common\\image.cpp",0x765,"wxImage::GetAlpha","IsOk()",
                       L"invalid image");
        }
        iVar5 = 0;
      }
      else {
        iVar5 = *(int *)(local_34 + 0x1c);
      }
      local_4c = 0;
      if (0 < iVar2) {
        do {
          iVar7 = iVar2;
          if (local_4c + 0x40 < iVar2) {
            iVar7 = local_4c + 0x40;
          }
          local_48 = 0;
          if (0 < iVar3) {
            local_58 = 0;
            do {
              puVar14 = (undefined *)
                        (*(int *)(*(int *)(param_1_00 + 4) + 0x1c) + local_58 + local_4c);
              if (local_4c < iVar7) {
                local_50 = (undefined *)(((local_4c + 1) * iVar3 - local_48) + -1 + iVar5);
                puVar8 = (undefined *)(((iVar2 - local_4c) + -1) * iVar3 + local_48 + iVar5);
                iVar9 = iVar7 - local_4c;
                do {
                  puVar11 = local_50;
                  if (param_2 == '\0') {
                    puVar11 = puVar8;
                  }
                  uVar1 = *puVar14;
                  local_50 = local_50 + iVar3;
                  puVar14 = puVar14 + 1;
                  puVar8 = puVar8 + -iVar3;
                  iVar9 = iVar9 + -1;
                  *puVar11 = uVar1;
                } while (iVar9 != 0);
              }
              local_58 = local_58 + iVar2;
              local_48 = local_48 + 1;
            } while (local_48 < iVar3);
          }
          local_4c = iVar7;
        } while (iVar7 < iVar2);
      }
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_34;
    if (local_34 != 0) {
      *(int *)(local_34 + 4) = *(int *)(local_34 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
  }
  local_4 = (uint)local_4._1_3_ << 8;
  local_38 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_009055a0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  int iVar2;
  undefined **local_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6fe8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  iVar2 = FUN_00904b70(local_14,param_1,param_2,param_3);
  local_4 = 0;
  if (param_1_00 != iVar2) {
    FUN_0083ea60(iVar2);
  }
  local_4 = 0xffffffff;
  local_14[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



uint __thiscall FUN_00905630(int param_1_00,int *param_1,int *param_2,undefined4 param_4)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint unaff_ESI;
  uint unaff_EDI;
  undefined8 uVar9;
  undefined4 local_50;
  uint uStack_4c;
  void *pvStack_48;
  uint local_3c;
  void *local_38;
  uint uStack_28;
  void *pvStack_24;
  void *pvStack_1c;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5d00;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  uVar4 = FUN_004325b6(L"MaxWidth");
  local_4 = 0;
  uVar4 = FUN_00903f50(uVar4);
  local_4 = 0xffffffff;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50,uVar3);
  }
  uVar5 = FUN_004325b6(L"MaxHeight");
  local_4 = 1;
  FUN_00903f50(uVar5);
  local_4 = 0xffffffff;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  uVar9 = 0xffffffffffffffff;
  cVar2 = (**(code **)(*param_2 + 0x1c))();
  if (cVar2 != '\0') {
    uVar9 = (**(code **)(*param_2 + 0x40))();
  }
  cVar2 = (**(code **)(*param_1 + 0x10))(param_1_00,param_2,1,param_4);
  if (cVar2 == '\0') {
    uVar3 = (uint)uVar9 & (uint)((ulonglong)uVar9 >> 0x20);
    if (uVar3 != 0xffffffff) {
      uVar3 = (**(code **)(*param_2 + 0x3c))(uVar9,0);
    }
    uVar3 = uVar3 & 0xffffff00;
  }
  else {
    if ((unaff_EDI != 0) || (unaff_ESI != 0)) {
      uVar6 = FUN_00900100();
      puStack_8 = (undefined *)uVar6;
      uVar7 = FUN_00900150();
      uVar3 = uVar6;
      for (uVar8 = uVar7;
          ((unaff_EDI != 0 && (unaff_EDI < uVar3)) || ((unaff_ESI != 0 && (unaff_ESI < uVar8))));
          uVar8 = uVar8 >> 1) {
        uVar3 = uVar3 >> 1;
      }
      if ((uVar3 != uVar6) || (uVar8 != uVar7)) {
        uVar5 = FUN_004325b6(L"OriginalWidth");
        uVar6 = FUN_00903f50(uVar5);
        _free(pvStack_48);
        if (7 < uStack_4c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uVar4);
        }
        uVar5 = FUN_004325b6(L"OriginalHeight");
        local_4 = FUN_00903f50(uVar5);
        _free(pvStack_48);
        if (7 < uStack_4c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uVar4);
        }
        FUN_009055a0(uVar3,uVar8,1);
        if (uVar6 == 0) {
          uVar6 = (uint)puStack_8;
        }
        uVar5 = FUN_004325b6(L"OriginalWidth");
        FUN_00903db0(uVar5,uVar6);
        _free(pvStack_48);
        if (7 < uStack_4c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uVar4);
        }
        uVar3 = local_4;
        if (local_4 == 0) {
          uVar3 = uVar7;
        }
        uVar4 = FUN_004325b6(L"OriginalHeight");
        FUN_00903db0(uVar4,uVar3);
        _free(pvStack_24);
        if (7 < uStack_28) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_3c);
        }
      }
    }
    iVar1 = *(int *)(param_1_00 + 4);
    *(undefined4 *)(iVar1 + 0x10) = *(undefined4 *)((int)local_c + 0x84);
    uVar3 = CONCAT31((int3)((uint)iVar1 >> 8),1);
  }
  ExceptionList = pvStack_1c;
  return uVar3;
}



undefined4 __thiscall FUN_00905910(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  int iVar2;
  uint uStack_110;
  void *pvStack_10c;
  uint local_ec;
  void *local_e8;
  uint uStack_c8;
  void *pvStack_c4;
  undefined auStack_bc [176];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5d75;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211();
  local_4 = 0;
  FUN_00882660();
  local_4._0_1_ = 2;
  _free(local_e8);
  if (7 < local_ec) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  cVar1 = FUN_00882ad0();
  if (cVar1 != '\0') {
    FUN_00884390();
    local_4._0_1_ = 3;
    cVar1 = (**(code **)(*param_1_00 + 0x14))();
    local_4._0_1_ = 2;
    if (cVar1 != '\0') {
      FUN_00884060();
      local_4 = 0xffffffff;
      FUN_00882c60();
      ExceptionList = local_c;
      return 1;
    }
    FUN_00884060();
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(1);
  if (cVar1 != '\0') {
    FUN_004325b6();
    local_4._0_1_ = 4;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,5);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    local_4._0_1_ = 6;
    FID_conflict_assign(param_1,0,0xffffffff);
    local_4._0_1_ = 7;
    FUN_008423d0(1,"..\\..\\src\\common\\image.cpp",0x8ca,"wxImage::LoadFile",&DAT_00d25fa0);
    local_4._0_1_ = 9;
    FUN_00848780(auStack_bc);
    local_4._0_1_ = 6;
    FUN_00842440();
    local_4 = CONCAT31(local_4._1_3_,5);
    FUN_0081b5bc();
    _free(pvStack_10c);
    if (7 < uStack_110) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(pvStack_c4);
    if (7 < uStack_c8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  local_4 = 0xffffffff;
  FUN_00882c60();
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_00905c00(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  int iVar2;
  uint uStack_110;
  void *pvStack_10c;
  uint local_ec;
  void *local_e8;
  uint uStack_c8;
  void *pvStack_c4;
  undefined auStack_bc [176];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5d75;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211();
  local_4 = 0;
  FUN_00882660();
  local_4._0_1_ = 2;
  _free(local_e8);
  if (7 < local_ec) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  cVar1 = FUN_00882ad0();
  if (cVar1 != '\0') {
    FUN_00884390();
    local_4._0_1_ = 3;
    cVar1 = (**(code **)(*param_1_00 + 0x10))();
    local_4._0_1_ = 2;
    if (cVar1 != '\0') {
      FUN_00884060();
      local_4 = 0xffffffff;
      FUN_00882c60();
      ExceptionList = local_c;
      return 1;
    }
    FUN_00884060();
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(1);
  if (cVar1 != '\0') {
    FUN_004325b6();
    local_4._0_1_ = 4;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,5);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    local_4._0_1_ = 6;
    FID_conflict_assign(param_1,0,0xffffffff);
    local_4._0_1_ = 7;
    FUN_008423d0(1,"..\\..\\src\\common\\image.cpp",0x8dd,"wxImage::LoadFile",&DAT_00d25fa0);
    local_4._0_1_ = 9;
    FUN_00848780(auStack_bc);
    local_4._0_1_ = 6;
    FUN_00842440();
    local_4 = CONCAT31(local_4._1_3_,5);
    FUN_0081b5bc();
    _free(pvStack_10c);
    if (7 < uStack_110) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(pvStack_c4);
    if (7 < uStack_c8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  local_4 = 0xffffffff;
  FUN_00882c60();
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00905ef0(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  int iVar2;
  undefined auStack_140 [4];
  undefined2 local_13c;
  undefined4 local_12c;
  undefined4 local_128;
  undefined *local_124;
  undefined *local_108;
  undefined local_104 [4];
  uint local_100;
  undefined4 local_f0;
  uint local_ec;
  void *local_e8;
  undefined local_e0 [4];
  uint local_dc;
  undefined4 local_cc;
  uint local_c8;
  void *local_c4;
  undefined local_bc [44];
  uint local_90;
  void *local_8c;
  undefined local_34 [24];
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5dea;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_108;
  ExceptionList = &local_c;
  local_108 = &stack0xfffffee0;
  local_124 = local_e0;
  local_128 = 0x905f4d;
  FUN_00852730();
  local_4 = 0;
  local_124 = (undefined *)0x905f65;
  FUN_00863b70();
  local_4._0_1_ = 2;
  local_124 = (undefined *)0x905f77;
  _free(local_c4);
  if (7 < local_c8) {
                    // WARNING: Subroutine does not return
    local_124 = &UNK_00905f8f;
    FUN_00a3f6a1();
  }
  local_124 = local_34;
  local_c8 = 7;
  local_cc = 0;
  local_dc = local_dc & 0xffff0000;
  local_128 = 0x905fb4;
  iVar2 = FUN_00902a20();
  if (iVar2 == 0) {
    local_108 = auStack_140;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      local_124 = (undefined *)0x905ff3;
      FUN_004325b6();
      local_4._0_1_ = 3;
      local_124 = (undefined *)0x906009;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,4);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        local_124 = (undefined *)0x906037;
        FUN_0084d360();
      }
      else {
        local_124 = local_104;
        local_128 = 0x90602b;
        FUN_0084f210();
      }
      local_124 = (undefined *)0x906044;
      FUN_008433c0();
      local_108 = auStack_140;
      local_128 = 7;
      local_12c = 0;
      local_13c = 0;
      local_4._0_1_ = 5;
      FID_conflict_assign(param_1,0,0xffffffff);
      local_124 = (undefined *)0x0;
      local_4._0_1_ = 6;
      FUN_008423d0(1,"..\\..\\src\\common\\image.cpp",0x8eb,"wxImage::SaveFile",&DAT_00d25fa0);
      local_4._0_1_ = 8;
      FUN_00848780(local_bc);
      local_4._0_1_ = 5;
      FUN_00842440();
      local_4._0_1_ = 4;
      FUN_0081b5bc();
      local_124 = (undefined *)0x9060eb;
      _free(local_e8);
      if (7 < local_ec) {
                    // WARNING: Subroutine does not return
        local_124 = &UNK_009060fe;
        FUN_00a3f6a1();
      }
      local_ec = 7;
      local_f0 = 0;
      local_100 = local_100 & 0xffff0000;
      local_124 = (undefined *)0x906121;
      _free(local_8c);
      if (7 < local_90) {
                    // WARNING: Subroutine does not return
        local_124 = &UNK_00906137;
        FUN_00a3f6a1();
      }
    }
    local_124 = (undefined *)0x906147;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      local_124 = &UNK_00906160;
      FUN_00a3f6a1();
    }
  }
  else {
    local_124 = (undefined *)param_1;
    local_128 = 0x906178;
    (**(code **)(*param_1_00 + 0x2c))();
    local_124 = (undefined *)0x906187;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      local_124 = &UNK_009061a0;
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



uint __thiscall FUN_009061d0(int param_1_00,undefined4 param_1,int param_2)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd766;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = *(uint *)(param_1_00 + 4);
  if ((((uVar2 == 0) || (*(char *)(uVar2 + 0x20) == '\0')) || (*(int *)(uVar2 + 8) == 0)) ||
     (*(int *)(uVar2 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      uVar2 = FUN_00840480();
    }
  }
  else {
    iVar3 = DAT_032bf63c;
    if (DAT_032bf63c != 0) {
      do {
        piVar1 = *(int **)(iVar3 + 8);
        if (piVar1[0x21] == param_2) {
          uVar2 = (**(code **)(*piVar1 + 0x14))();
          if ((char)uVar2 != '\0') {
            iVar3 = *(int *)(param_1_00 + 4);
            *(int *)(iVar3 + 0x10) = piVar1[0x21];
            ExceptionList = local_c;
            return CONCAT31((int3)((uint)iVar3 >> 8),1);
          }
          goto LAB_009063a6;
        }
        piVar1 = (int *)(iVar3 + 0xc);
        iVar3 = *piVar1;
      } while (*piVar1 != 0);
    }
    FUN_0043c211(&DAT_00d25fa0);
    uVar2 = FUN_00846b30(2);
    if ((char)uVar2 != '\0') {
      FUN_004325b6();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      FUN_008423d0();
      local_4._0_1_ = 3;
      FUN_008f2d70();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      uVar2 = FUN_0040159c();
    }
  }
LAB_009063a6:
  ExceptionList = local_c;
  return uVar2 & 0xffffff00;
}



uint __fastcall FUN_009063d0(int param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = (int *)0xffffffff;
  puStack_8 = &LAB_00bd5e51;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar4 = *(uint *)(param_1 + 4);
  if ((((uVar4 == 0) || (*(char *)(uVar4 + 0x20) == '\0')) || (*(int *)(uVar4 + 8) == 0)) ||
     (*(int *)(uVar4 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      uVar4 = FUN_00840480();
    }
  }
  else {
    piVar2 = (int *)FUN_00902a90();
    if (piVar2 == (int *)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(2);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_4 = piVar2;
        FUN_0043c211();
        local_4 = (int *)CONCAT31(local_4._1_3_,1);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        FUN_00903bc0();
        local_4._0_1_ = 3;
        FUN_008423d0();
        local_4._0_1_ = 5;
        FUN_00848860();
        local_4._0_1_ = 2;
        FUN_00842440();
        local_4 = (int *)CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        local_4 = (int *)0xffffffff;
        FUN_0040159c();
      }
    }
    uVar4 = (**(code **)(*piVar2 + 0x14))();
    if ((char)uVar4 != '\0') {
      iVar3 = *(int *)(param_1 + 4);
      *(int *)(iVar3 + 0x10) = piVar2[0x21];
      ExceptionList = local_c;
      return CONCAT31((int3)((uint)iVar3 >> 8),1);
    }
  }
  ExceptionList = local_c;
  return uVar4 & 0xffffff00;
}



void FUN_009065d0(int *param_1)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5e98;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar3 = DAT_032bf63c;
  if (DAT_032bf63c != 0) {
    do {
      if (*(int *)(*(int *)(iVar3 + 8) + 0x84) == param_1[0x21]) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar2 = FUN_00846b30(6);
        if (cVar2 != '\0') {
          FUN_0081c0f1();
          local_4 = 0;
          FUN_00432231();
          local_4._0_1_ = 1;
          FUN_008423d0();
          local_4._0_1_ = 3;
          FUN_00848860();
          local_4 = (uint)local_4._1_3_ << 8;
          FUN_00842440();
          local_4 = 0xffffffff;
          FUN_0081b5bc();
        }
        (**(code **)(*param_1 + 4))();
        ExceptionList = pvStack_10;
        return;
      }
      piVar1 = (int *)(iVar3 + 0xc);
      iVar3 = *piVar1;
    } while (*piVar1 != 0);
  }
  FUN_0086ad60();
  ExceptionList = local_c;
  return;
}



void FUN_00906720(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x88);
  local_4 = 0;
  if (local_10 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00903be0(uVar1);
  }
  local_4 = 0xffffffff;
  FUN_009065d0(uVar2);
  ExceptionList = local_c;
  return;
}



uint __thiscall FUN_00906790(int *param_1_00,int *param_1)

{
  uint uVar1;
  undefined8 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4070;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = (**(code **)(*param_1 + 0x1c))();
  if ((char)uVar1 != '\0') {
    (**(code **)(*param_1 + 0x40))();
    (**(code **)(*param_1_00 + 0x1c))();
    uVar2 = (**(code **)(*param_1 + 0x3c))();
    uVar1 = (uint)uVar2 & (uint)((ulonglong)uVar2 >> 0x20);
    if (uVar1 != 0xffffffff) {
      ExceptionList = local_c;
      return CONCAT31((int3)(uVar1 >> 8),param_1._0_1_);
    }
    FUN_0043c211(&DAT_00d25fa0);
    uVar1 = FUN_00846b30(6);
    if ((char)uVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      uVar1 = FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return uVar1 & 0xffffff00;
}



undefined4 __thiscall
FUN_009068d0(int *param_1_00,char *param_1,char *param_2,char *param_3,char param_4,char param_5,
            char param_6)

{
  undefined4 *puVar1;
  undefined2 uVar2;
  char cVar3;
  int iVar4;
  undefined4 uVar5;
  undefined auStack_f4 [12];
  undefined4 uStack_e8;
  undefined4 uStack_e4;
  char *pcStack_e0;
  undefined4 uStack_dc;
  char *pcStack_d8;
  undefined local_bc [4];
  uint local_b8;
  undefined4 local_a8;
  uint local_a4;
  void *local_a0;
  undefined *local_98;
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5ee6;
  local_c = ExceptionList;
  uVar2 = CONCAT11(param_4,param_6);
  do {
    puVar1 = *(undefined4 **)
              (*param_1_00 + ((uint)CONCAT21(uVar2,param_5) % (uint)param_1_00[1]) * 4);
    while( true ) {
      if (puVar1 == (undefined4 *)0x0) {
        if (param_1 != (char *)0x0) {
          *param_1 = param_4;
        }
        if (param_2 != (char *)0x0) {
          *param_2 = param_6;
        }
        if (param_3 != (char *)0x0) {
          *param_3 = param_5;
        }
        return 1;
      }
      if (puVar1[1] == (uint)CONCAT21(uVar2,param_5)) break;
      puVar1 = (undefined4 *)*puVar1;
    }
    param_4 = param_4 + '\x01';
    if (param_4 == -1) {
      param_6 = param_6 + '\x01';
      param_4 = '\0';
      if (param_6 == -1) {
        param_5 = param_5 + '\x01';
        param_6 = '\0';
        if (param_5 == -1) {
          local_98 = auStack_f4;
          ExceptionList = &local_c;
          FUN_0043c211(&DAT_00d25fa0);
          cVar3 = FUN_00846b30(1);
          if (cVar3 != '\0') {
            pcStack_d8 = (char *)0x9069f9;
            FUN_004325b6();
            local_4 = 0;
            pcStack_d8 = (char *)0x906a10;
            FUN_0043c211();
            local_4 = CONCAT31(local_4._1_3_,1);
            iVar4 = FUN_0084a340();
            if (iVar4 == 0) {
              pcStack_d8 = (char *)0x906a3e;
              FUN_0084d360();
            }
            else {
              pcStack_d8 = local_bc;
              uStack_dc = 0x906a32;
              FUN_0084f210();
            }
            pcStack_d8 = (char *)0x906a4b;
            FUN_008433c0();
            pcStack_d8 = "wxImageHistogram::FindFirstUnusedColour";
            uStack_dc = 0xbdf;
            pcStack_e0 = "..\\..\\src\\common\\image.cpp";
            uStack_e4 = 1;
            local_4._0_1_ = 2;
            uStack_e8 = 0x906a76;
            uVar5 = FUN_008423d0();
            local_4._0_1_ = 3;
            FUN_008854f0();
            uStack_dc = 0x906a90;
            pcStack_d8 = (char *)uVar5;
            FUN_0083fe90();
            local_4._0_1_ = 2;
            FUN_00842440();
            local_4 = CONCAT31(local_4._1_3_,1);
            FUN_0081b5bc();
            pcStack_d8 = (char *)0x906abe;
            _free(local_a0);
            if (7 < local_a4) {
                    // WARNING: Subroutine does not return
              pcStack_d8 = &UNK_00906ad6;
              FUN_00a3f6a1();
            }
            local_a4 = 7;
            local_a8 = 0;
            local_b8 = local_b8 & 0xffff0000;
            pcStack_d8 = (char *)0x906af6;
            _free(local_64);
            if (7 < local_68) {
                    // WARNING: Subroutine does not return
              pcStack_d8 = &UNK_00906b09;
              FUN_00a3f6a1();
            }
          }
          ExceptionList = local_c;
          return 0;
        }
      }
    }
    uVar2 = CONCAT11(param_4,param_6);
  } while( true );
}



undefined FUN_00906b20(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                      undefined4 param_5,undefined4 param_6)

{
  undefined uVar1;
  void *local_1c;
  size_t local_18;
  undefined4 local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5f18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_18 = FUN_00893ca0(0x100,DAT_0323f878 ^ (uint)&stack0xffffffdc);
  local_14 = 0;
  local_1c = _calloc(local_18,4);
  local_4 = 0;
  FUN_009038d0(&local_1c);
  uVar1 = FUN_009068d0(param_1,param_2,param_3,param_4,param_6,param_5);
  local_4 = 0xffffffff;
  FUN_00893cf0(local_18,local_1c,&LAB_00981b50);
  local_14 = 0;
  _free(local_1c);
  ExceptionList = local_c;
  return uVar1;
}



undefined FUN_00906bf0(void)

{
  FUN_00906720();
  return 1;
}



undefined4 __thiscall
FUN_00906c00(int param_1_00,undefined *param_1,undefined *param_2,undefined *param_3)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 4);
  if ((((iVar1 != 0) && (*(char *)(iVar1 + 0x20) != '\0')) && (*(int *)(iVar1 + 8) != 0)) &&
     (*(int *)(iVar1 + 0xc) != 0)) {
    if (*(char *)(iVar1 + 0x18) != '\0') {
      if (param_1 != (undefined *)0x0) {
        *param_1 = *(undefined *)(iVar1 + 0x19);
      }
      if (param_2 != (undefined *)0x0) {
        *param_2 = *(undefined *)(*(int *)(param_1_00 + 4) + 0x1a);
      }
      if (param_3 != (undefined *)0x0) {
        *param_3 = *(undefined *)(*(int *)(param_1_00 + 4) + 0x1b);
      }
      return 1;
    }
    FUN_00906b20(param_1,param_2,param_3,1,0,0);
    return 0;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\image.cpp",0x7ab,"wxImage::GetOrFindMaskColour","IsOk()",
                 L"invalid image");
  }
  return 0;
}



undefined4 __thiscall
FUN_00906ca0(int param_1_00,int param_1,char param_2,char param_3,char param_4)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  undefined *puVar4;
  char *pcVar5;
  undefined auStack_1ac [8];
  undefined4 uStack_1a4;
  int *piStack_1a0;
  undefined4 *puStack_19c;
  char *pcStack_198;
  char *pcStack_194;
  char *pcStack_190;
  int local_174;
  undefined *local_170;
  undefined local_16c [4];
  undefined4 local_168;
  undefined local_164 [4];
  uint local_160;
  undefined4 local_150;
  uint local_14c;
  void *local_148;
  uint local_100;
  void *local_fc;
  undefined local_f4 [232];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5f95;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = *(int *)(param_1 + 4);
  if ((((iVar2 == 0) || (*(char *)(iVar2 + 0x20) == '\0')) || (*(int *)(iVar2 + 8) == 0)) ||
     (*(int *)(iVar2 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pcStack_190 = "IsOk()";
      pcStack_194 = "wxImage::GetHeight";
      pcStack_198 = (char *)0x669;
      puStack_19c = (undefined4 *)0xd48b10;
      piStack_1a0 = (int *)0x906d1b;
      FUN_00840480();
    }
    iVar2 = 0;
  }
  else {
    iVar2 = *(int *)(iVar2 + 0xc);
  }
  if ((*(int *)(*(int *)(param_1_00 + 4) + 0xc) == iVar2) &&
     (iVar2 = FUN_00900100(), *(int *)(*(int *)(param_1_00 + 4) + 8) == iVar2)) {
    pcStack_190 = (char *)0x0;
    pcStack_194 = (char *)0x1;
    pcStack_198 = local_16c;
    puStack_19c = &local_168;
    piStack_1a0 = &local_174;
    uStack_1a4 = 0x906d5b;
    cVar1 = FUN_00906b20();
    if (cVar1 != '\0') {
      FUN_0083eaa0();
      puVar4 = (undefined *)FUN_008ff850();
      pcVar5 = (char *)FUN_008ff850();
      local_170 = (undefined *)FUN_00900100();
      iVar2 = FUN_00900150();
      pcStack_194 = (char *)local_174;
      if (0 < iVar2) {
        do {
          local_174 = iVar2;
          iVar2 = (int)local_170;
          if (0 < (int)local_170) {
            do {
              if (((*pcVar5 == param_2) && (pcVar5[1] == param_3)) && (pcVar5[2] == param_4)) {
                *puVar4 = (char)pcStack_194;
                puVar4[1] = (char)local_168;
                puVar4[2] = local_16c[0];
              }
              puVar4 = puVar4 + 3;
              pcVar5 = pcVar5 + 3;
              iVar2 = iVar2 + -1;
            } while (iVar2 != 0);
          }
          local_174 = local_174 + -1;
          iVar2 = local_174;
        } while (local_174 != 0);
      }
      pcStack_190 = (char *)local_168;
      pcStack_198 = (char *)0x906eff;
      FUN_008ff990();
      pcStack_190 = (char *)0x906f08;
      FUN_008ffb00();
      ExceptionList = local_c;
      return 1;
    }
    local_170 = auStack_1ac;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      pcStack_190 = (char *)0x906d9a;
      FUN_004325b6();
      local_4 = 4;
      pcStack_190 = (char *)0x906db6;
      FUN_0043c211();
      pcStack_190 = local_f4;
      local_4._0_1_ = 5;
      pcStack_194 = (char *)0x906dd3;
      FUN_00820bf9();
      pcStack_190 = (char *)0x906de0;
      FUN_008433c0();
      pcStack_190 = "wxImage::SetMaskFromImage";
      pcStack_194 = (char *)0x80d;
      pcStack_198 = "..\\..\\src\\common\\image.cpp";
      puStack_19c = (undefined4 *)0x1;
      local_4._0_1_ = 6;
      piStack_1a0 = (int *)0x906e0b;
      uVar3 = FUN_008423d0();
      local_4._0_1_ = 7;
      FUN_008854f0();
      pcStack_194 = (char *)0x906e25;
      pcStack_190 = (char *)uVar3;
      FUN_0083fe90();
      local_4._0_1_ = 6;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,5);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  else {
    local_170 = auStack_1ac;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      pcStack_190 = (char *)0x906f44;
      FUN_004325b6();
      local_4 = 0;
      pcStack_190 = (char *)0x906f5d;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        pcStack_190 = (char *)0x906f8b;
        FUN_0084d360();
      }
      else {
        pcStack_190 = local_164;
        pcStack_194 = (char *)0x906f7f;
        FUN_0084f210();
      }
      pcStack_190 = (char *)0x906f98;
      FUN_008433c0();
      pcStack_190 = "wxImage::SetMaskFromImage";
      pcStack_194 = (char *)0x805;
      pcStack_198 = "..\\..\\src\\common\\image.cpp";
      puStack_19c = (undefined4 *)0x1;
      local_4._0_1_ = 2;
      piStack_1a0 = (int *)0x906fc3;
      uVar3 = FUN_008423d0();
      local_4._0_1_ = 3;
      FUN_008854f0();
      pcStack_194 = (char *)0x906fdd;
      pcStack_190 = (char *)uVar3;
      FUN_0083fe90();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      pcStack_190 = (char *)0x90700e;
      _free(local_148);
      if (7 < local_14c) {
                    // WARNING: Subroutine does not return
        pcStack_190 = &UNK_00907026;
        FUN_00a3f6a1();
      }
      local_14c = 7;
      local_150 = 0;
      local_160 = local_160 & 0xffff0000;
      pcStack_190 = (char *)0x90704d;
      _free(local_fc);
      if (7 < local_100) {
                    // WARNING: Subroutine does not return
        pcStack_190 = &UNK_00907063;
        FUN_00a3f6a1();
      }
    }
  }
  ExceptionList = local_c;
  return 0;
}



uint FUN_00907090(undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined auStack_f0 [8];
  undefined4 uStack_e8;
  undefined **ppuStack_e4;
  undefined4 *puStack_e0;
  undefined4 *puStack_dc;
  undefined4 uStack_d8;
  char *pcStack_d4;
  char *pcStack_d0;
  uint uStack_cc;
  undefined *local_c4;
  undefined4 local_c0;
  undefined4 local_bc [6];
  undefined local_a4 [36];
  undefined local_80 [116];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd766;
  local_c = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_c;
  pcStack_d0 = (char *)0x9070c1;
  uVar2 = FUN_008f2530();
  if ((char)uVar2 != '\0') {
    pcStack_d0 = (char *)0x0;
    pcStack_d4 = (char *)0x0;
    uStack_d8 = 1;
    puStack_dc = local_bc;
    puStack_e0 = &local_c0;
    ppuStack_e4 = &local_c4;
    uStack_e8 = 0x9070e5;
    cVar1 = FUN_00906b20();
    if (cVar1 != '\0') {
      pcStack_d0 = (char *)param_1;
      pcStack_d4 = (char *)local_bc[0];
      uStack_d8 = local_c0;
      puStack_dc = (undefined4 *)local_c4;
      puStack_e0 = (undefined4 *)0x907212;
      uVar2 = FUN_009007e0();
      ExceptionList = local_c;
      return uVar2;
    }
    local_c4 = auStack_f0;
    FUN_0043c211(&DAT_00d25fa0);
    uVar2 = FUN_00846b30(1);
    if ((char)uVar2 != '\0') {
      pcStack_d0 = PTR_DAT_03236318;
      pcStack_d4 = (char *)0x907121;
      FUN_004325b6();
      pcStack_d0 = "No unused colour in image being masked.";
      local_4 = 0;
      pcStack_d4 = (char *)0x90713a;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      pcStack_d0 = (char *)0x907147;
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        pcStack_d0 = local_a4;
        pcStack_d4 = (char *)0x907168;
        pcStack_d0 = (char *)FUN_0084d360();
      }
      else {
        pcStack_d0 = local_80;
        pcStack_d4 = local_a4;
        uStack_d8 = 0x90715c;
        pcStack_d0 = (char *)FUN_0084f210();
      }
      pcStack_d4 = (char *)0x907175;
      FUN_008433c0();
      pcStack_d0 = &DAT_00d25fa0;
      pcStack_d4 = "wxImage::ConvertAlphaToMask";
      uStack_d8 = 0x836;
      puStack_dc = (undefined4 *)0xd48b10;
      puStack_e0 = (undefined4 *)0x1;
      local_4._0_1_ = 2;
      ppuStack_e4 = (undefined **)0x90719f;
      uVar4 = FUN_008423d0();
      local_4._0_1_ = 3;
      pcStack_d0 = (char *)0x9071b2;
      pcStack_d0 = (char *)FUN_008854f0();
      uStack_d8 = 0x9071b9;
      pcStack_d4 = (char *)uVar4;
      FUN_0083fe90();
      local_4._0_1_ = 2;
      pcStack_d0 = (char *)0x9071cd;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      pcStack_d0 = (char *)0x9071de;
      FUN_0081b5bc();
      pcStack_d0 = (char *)0x9071e7;
      FUN_0040159c();
      pcStack_d0 = (char *)0x9071f0;
      uVar2 = FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  return uVar2 & 0xffffff00;
}



undefined4 FUN_00907230(int *param_1,int param_2)

{
  int iVar1;
  char cVar2;
  int iVar3;
  undefined4 uVar4;
  uint uStack_138;
  void *pvStack_134;
  uint uStack_114;
  void *pvStack_110;
  undefined auStack_b8 [172];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6075;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0083eaa0();
  iVar3 = DAT_032bf63c;
  if (param_2 == 0x32) {
    cVar2 = (**(code **)(*param_1 + 0x1c))();
    iVar3 = DAT_032bf63c;
    if (cVar2 != '\0') {
      for (; iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {
        cVar2 = FUN_00906790();
        if ((cVar2 != '\0') && (cVar2 = FUN_00905630(), cVar2 != '\0')) {
          ExceptionList = local_c;
          return 1;
        }
      }
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(2);
      if (cVar2 != '\0') {
        FUN_004325b6();
        local_4 = 4;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,5);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 6;
        __time64((__time64_t *)0x0);
        GetCurrentThreadId();
        local_4._0_1_ = 7;
        FUN_008854f0();
        FUN_0083fe90();
        local_4._0_1_ = 6;
        FUN_00842440();
        local_4 = CONCAT31(local_4._1_3_,5);
        FUN_0081b5bc();
        _free(pvStack_134);
        if (7 < uStack_138) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        _free(pvStack_110);
        if (7 < uStack_114) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
      }
      ExceptionList = local_c;
      return 0;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 == '\0') {
      ExceptionList = local_c;
      return 0;
    }
    FUN_004325b6();
    local_4 = 0;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,1);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    local_4._0_1_ = 2;
    FUN_008423d0();
    local_4._0_1_ = 3;
    FUN_008854f0();
    FUN_0083fe90();
    local_4._0_1_ = 2;
    FUN_00842440();
    local_4 = CONCAT31(local_4._1_3_,1);
  }
  else {
    for (; iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {
      iVar1 = *(int *)(iVar3 + 8);
      if (*(int *)(iVar1 + 0x84) == param_2) {
        cVar2 = (**(code **)(*param_1 + 0x1c))();
        if ((cVar2 != '\0') && (cVar2 = FUN_00906790(), cVar2 == '\0')) {
          FUN_0043c211(&DAT_00d25fa0);
          cVar2 = FUN_00846b30(1);
          if (cVar2 == '\0') {
            ExceptionList = local_c;
            return 0;
          }
          FUN_004325b6();
          local_4 = 0xc;
          FUN_0043c211();
          local_4._0_1_ = 0xd;
          FUN_00820bf9();
          FUN_008433c0();
          local_4._0_1_ = 0xe;
          FUN_004325a0(iVar1 + 8);
          local_4._0_1_ = 0xf;
          FUN_008423d0(1,"..\\..\\src\\common\\image.cpp",0x9d4,"wxImage::LoadFile",&DAT_00d25fa0);
          local_4._0_1_ = 0x11;
          FUN_00848780(auStack_b8);
          local_4._0_1_ = 0xe;
          FUN_00842440();
          local_4 = CONCAT31(local_4._1_3_,0xd);
          FUN_0081b5bc();
          FUN_0040159c();
          FUN_0040159c();
          ExceptionList = local_c;
          return 0;
        }
        uVar4 = FUN_00905630();
        ExceptionList = local_c;
        return uVar4;
      }
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(2);
    if (cVar2 == '\0') {
      ExceptionList = local_c;
      return 0;
    }
    FUN_004325b6();
    local_4 = 8;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,9);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    local_4._0_1_ = 10;
    FUN_008423d0();
    local_4._0_1_ = 0xb;
    FUN_008f2d70();
    local_4._0_1_ = 10;
    FUN_00842440();
    local_4 = CONCAT31(local_4._1_3_,9);
  }
  FUN_0081b5bc();
  FUN_0040159c();
  FUN_0040159c();
  ExceptionList = local_c;
  return 0;
}



uint __thiscall FUN_00907820(int param_1_00,int *param_1,undefined4 param_2)

{
  char cVar1;
  void *pvVar2;
  undefined4 uVar3;
  int iVar4;
  uint uVar5;
  uint local_14c;
  void *local_148;
  undefined auStack_12c [44];
  uint local_100;
  void *local_fc;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6119;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0083e850();
  pvVar2 = operator_new(0x4c);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00900b70();
  }
  local_4 = 0xffffffff;
  *(undefined4 *)(param_1_00 + 4) = uVar3;
  iVar4 = FUN_00902a90();
  if (iVar4 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    pvVar2 = (void *)FUN_00846b30(2);
    if ((char)pvVar2 != '\0') {
      FUN_004325b6();
      local_4 = 1;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,2);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      FUN_00903bc0();
      local_4._0_1_ = 4;
      FUN_008423d0();
      local_4._0_1_ = 6;
      FUN_00848860();
      local_4._0_1_ = 3;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_0081b5bc();
      _free(local_148);
      if (7 < local_14c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(local_fc);
      pvVar2 = local_fc;
      if (7 < local_100) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    uVar5 = (uint)pvVar2 & 0xffffff00;
  }
  else {
    cVar1 = (**(code **)(*param_1 + 0x1c))();
    if ((cVar1 != '\0') && (cVar1 = FUN_00906790(), cVar1 == '\0')) {
      FUN_0043c211(&DAT_00d25fa0);
      uVar5 = FUN_00846b30(1);
      if ((char)uVar5 != '\0') {
        FUN_004325b6();
        local_4 = 7;
        FUN_0043c211();
        local_4._0_1_ = 8;
        FUN_00820bf9();
        FUN_008433c0();
        local_4._0_1_ = 9;
        FUN_004325a0(param_2);
        local_4._0_1_ = 10;
        FUN_008423d0(1,"..\\..\\src\\common\\image.cpp",0x9eb,"wxImage::LoadFile",&DAT_00d25fa0);
        local_4._0_1_ = 0xc;
        FUN_00848780(auStack_12c);
        local_4._0_1_ = 9;
        FUN_00842440();
        local_4 = CONCAT31(local_4._1_3_,8);
        FUN_0081b5bc();
        FUN_0040159c();
        uVar5 = FUN_0040159c();
      }
      ExceptionList = local_c;
      return uVar5 & 0xffffff00;
    }
    uVar5 = FUN_00905630();
  }
  ExceptionList = local_c;
  return uVar5;
}



undefined4 * __thiscall
FUN_00907b90(int param_1_00,undefined4 *param_1,int *param_2,int *param_3,int param_4,int param_5,
            int param_6)

{
  int *piVar1;
  int *piVar2;
  undefined **ppuVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  undefined4 local_58;
  undefined4 local_54;
  int local_50;
  undefined **local_4c [2];
  undefined **local_44;
  int local_40;
  int local_3c;
  int local_38;
  undefined **local_34;
  int local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  int local_1c;
  int local_18;
  int local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  piVar1 = param_2;
  puStack_8 = &LAB_00bd6169;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_54 = 0;
  local_40 = 0;
  local_44 = wxImage::vftable;
  iVar5 = *(int *)(param_1_00 + 4);
  local_4 = 1;
  if ((((iVar5 == 0) || (*(char *)(iVar5 + 0x20) == '\0')) || (*(int *)(iVar5 + 8) == 0)) ||
     (*(int *)(iVar5 + 0xc) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x54a,"wxImage::Size","IsOk()",L"invalid image",
                   DAT_0323f878 ^ (uint)&stack0xffffff98);
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_40;
    if (local_40 != 0) {
      *(int *)(local_40 + 4) = *(int *)(local_40 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
  }
  else if ((*param_2 < 1) || (param_2[1] < 1)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\image.cpp",0x54b,"wxImage::Size",
                   "(size.GetWidth() > 0) && (size.GetHeight() > 0)",L"invalid size",
                   DAT_0323f878 ^ (uint)&stack0xffffff98);
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_40;
    if (local_40 != 0) {
      *(int *)(local_40 + 4) = *(int *)(local_40 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
  }
  else {
    ppuVar3 = (undefined **)FUN_00900100();
    local_4c[0] = ppuVar3;
    local_50 = FUN_00900150();
    FUN_00900c30(*piVar1,piVar1[1],0);
    iVar5 = param_4;
    local_58 = CONCAT31(local_58._1_3_,(char)param_4);
    param_4 = CONCAT31(param_4._1_3_,(char)param_5);
    param_2 = (int *)CONCAT31(param_2._1_3_,(char)param_6);
    if ((iVar5 == -1) && ((param_5 == -1 && (param_6 == -1)))) {
      FUN_00906c00(&local_58,&param_4,&param_2);
      FUN_008ff990(local_58,param_4,param_2);
    }
    local_2c = 0;
    local_28 = 0;
    local_24 = 0;
    local_20 = 0;
    FUN_009002e0(&local_2c,local_58,param_4,param_2);
    piVar2 = param_3;
    local_1c = -*param_3;
    local_30 = local_50;
    local_10 = piVar1[1];
    local_18 = -param_3[1];
    local_14 = *piVar1;
    local_3c = 0;
    local_38 = 0;
    local_34 = ppuVar3;
    FUN_008f7750(&local_1c);
    if ((0 < (int)local_34) && (0 < local_30)) {
      iVar5 = piVar2[1] + local_38;
      iVar6 = *piVar2 + local_3c;
      if ((local_34 == local_4c[0]) && (local_30 == local_50)) {
        FUN_00901c30(param_1_00,iVar6,iVar5);
      }
      else {
        uVar4 = FUN_00901940(local_4c,&local_3c);
        local_4._0_1_ = 2;
        FUN_00901c30(uVar4,iVar6,iVar5);
        local_4 = CONCAT31(local_4._1_3_,1);
        local_4c[0] = wxObject::vftable;
        FUN_0083e850();
      }
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_40;
    if (local_40 != 0) {
      *(int *)(local_40 + 4) = *(int *)(local_40 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
  }
  local_54 = 1;
  local_4 = local_4 & 0xffffff00;
  local_44 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



undefined ** FUN_00907e70(void)

{
  return &PTR_u_wxXPMHandler_03239134;
}



void FUN_00907e80(undefined4 param_1)

{
  FUN_00984ec0(param_1);
  return;
}



undefined4 FUN_00907ea0(undefined ***param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  undefined **local_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6198;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)local_14;
  ExceptionList = &local_c;
  FUN_00986c80(local_14,param_2);
  local_4 = 0;
  cVar1 = FUN_008ff820(uVar2);
  if (cVar1 == '\0') {
    local_4 = 0xffffffff;
    local_14[0] = wxObject::vftable;
    FUN_0083e850();
    ExceptionList = local_c;
    return 0;
  }
  if (param_1 != local_14) {
    FUN_0083ea60(local_14);
  }
  local_4 = 0xffffffff;
  local_14[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return 1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x88);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_004321bb(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_00907fd0(undefined4 param_1,int *param_2)

{
  wchar_t wVar1;
  short sVar2;
  longlong lVar3;
  int *piVar4;
  int *piVar5;
  char cVar6;
  int iVar7;
  wchar_t *pwVar8;
  undefined4 uVar9;
  short *psVar10;
  undefined *puVar11;
  int **ppiVar12;
  void **ppvVar13;
  undefined4 *puVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  int iVar18;
  int unaff_ESI;
  int iVar19;
  undefined4 unaff_EDI;
  int iVar20;
  void *_Memory;
  uint uVar21;
  void **ppvStack_178;
  int local_174;
  uint local_170;
  int local_168;
  void *local_164;
  size_t local_160;
  undefined4 local_15c;
  undefined4 local_150;
  undefined4 local_140;
  uint local_13c;
  void *local_138;
  undefined4 local_130;
  uint local_128;
  undefined4 uStack_124;
  undefined4 uStack_120;
  uint local_118;
  uint local_114;
  void *local_110;
  undefined4 uStack_108;
  uint uStack_104;
  void *pvStack_100;
  undefined local_fc [4];
  undefined2 local_f8;
  undefined4 local_e8;
  undefined4 local_e4;
  undefined4 local_e0 [45];
  void *pvStack_2c;
  undefined4 uStack_24;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6218;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&ppvStack_178;
  ExceptionList = &local_c;
  local_130 = param_1;
  local_160 = FUN_00893ca0();
  local_15c = 0;
  local_164 = _calloc(local_160,4);
  local_4 = 0;
  local_168 = FUN_009038d0();
  iVar7 = 0x5c;
  iVar18 = 1;
  local_174 = 1;
  if (0x5c < local_168) {
    do {
      iVar7 = iVar7 * 0x5c;
      iVar18 = iVar18 + 1;
      local_174 = iVar18;
    } while (iVar7 < local_168);
  }
  local_e4 = 7;
  local_e8 = 0;
  local_f8 = 0;
  local_e0[0] = 0;
  local_13c = 7;
  pwVar8 = L"FileName";
  local_150._0_2_ = 0;
  local_4._0_1_ = 1;
  local_140 = 0;
  do {
    wVar1 = *pwVar8;
    pwVar8 = pwVar8 + 1;
  } while (wVar1 != L'\0');
  FID_conflict_assign();
  local_138 = (void *)0x0;
  local_4._0_1_ = 2;
  cVar6 = FUN_008ffc30();
  local_4._0_1_ = 1;
  _free(local_138);
  if (7 < local_13c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (cVar6 != '\0') {
    local_150._0_2_ = 0;
    pwVar8 = L"FileName";
    local_13c = 7;
    local_140 = 0;
    do {
      wVar1 = *pwVar8;
      pwVar8 = pwVar8 + 1;
    } while (wVar1 != L'\0');
    FID_conflict_assign();
    local_138 = (void *)0x0;
    local_4._0_1_ = 3;
    uVar9 = FUN_00903eb0();
    local_4._0_1_ = 4;
    FUN_00858c30(uVar9);
    _free(local_110);
    if (7 < local_114) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_114 = 7;
    local_118 = 0;
    local_128 = local_128 & 0xffff0000;
    local_4._0_1_ = 1;
    _free(local_138);
    if (7 < local_13c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    psVar10 = &DAT_00d49ae8;
    do {
      sVar2 = *psVar10;
      psVar10 = psVar10 + 1;
    } while (sVar2 != 0);
    FUN_00473ccc();
  }
  if (local_e8 == 0) {
    pwVar8 = L"/* XPM */\nstatic const char *xpm_data";
    do {
      wVar1 = *pwVar8;
      pwVar8 = pwVar8 + 1;
    } while (wVar1 != L'\0');
    FID_conflict_assign();
  }
  else {
    pwVar8 = L"/* XPM */\nstatic const char *";
    local_13c = 7;
    local_140 = 0;
    local_150._0_2_ = 0;
    do {
      wVar1 = *pwVar8;
      pwVar8 = pwVar8 + 1;
    } while (wVar1 != L'\0');
    FID_conflict_assign();
    local_138 = (void *)0x0;
    local_4._0_1_ = 5;
    puVar11 = (undefined *)FUN_008531f0();
    local_4._0_1_ = 6;
    if (local_fc != puVar11) {
      FID_conflict_assign();
    }
    _free(local_110);
    if (7 < local_114) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_114 = 7;
    local_118 = 0;
    local_128 = local_128 & 0xffff0000;
    local_4._0_1_ = 1;
    _free(local_138);
    if (7 < local_13c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  ppiVar12 = (int **)FUN_00851e30();
  iVar7 = **ppiVar12;
  local_4 = CONCAT31(local_4._1_3_,7);
  iVar18 = local_e8;
  (**(code **)(*param_2 + 0x28))();
  local_c = (void *)CONCAT31(local_c._1_3_,1);
  ppvVar13 = (void **)FUN_00850350();
  if (ppvStack_178 != ppvVar13) {
    *(short *)(ppvStack_178 + 2) = *(short *)(ppvStack_178 + 2) + -1;
    if (*(short *)(ppvStack_178 + 2) == 0) {
      if (*(char *)((int)ppvStack_178 + 10) != '\0') {
        _free(*ppvStack_178);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    FUN_00850350();
  }
  uVar15 = local_170;
  uVar9 = FUN_00900150();
  uVar9 = FUN_00900100(uVar9);
  _sprintf((char *)local_e0,"[] = {\n/* columns rows colors chars-per-pixel */\n\"%i %i %i %i\",\n",
           uVar9);
  puVar14 = local_e0;
  do {
    cVar6 = *(char *)puVar14;
    puVar14 = (undefined4 *)((int)puVar14 + 1);
  } while (cVar6 != '\0');
  (**(code **)(*param_2 + 0x28))();
  ppvStack_178 = (void **)FUN_00823c23((unaff_ESI + 1) * uVar15);
  lVar3 = (ulonglong)uVar15 * 4;
  uVar15 = FUN_00823c23(-(uint)((int)((ulonglong)lVar3 >> 0x20) != 0) | (uint)lVar3);
  uVar21 = 0x1000000;
  cVar6 = FUN_008ffb60();
  if (cVar6 != '\0') {
    uVar21 = FUN_008ffa10();
    uVar16 = FUN_008ffa60();
    uVar17 = FUN_008ffab0();
    uVar21 = uVar17 & 0xff | (uVar16 & 0xff | (uVar21 & 0xff) << 8) << 8;
  }
  uVar16 = 0;
  if (local_170 != 0) {
    do {
      if (*(int *)(local_174 + uVar16 * 4) != 0) {
        piVar5 = *(int **)(local_174 + uVar16 * 4);
        goto joined_r0x009084a4;
      }
      uVar16 = uVar16 + 1;
    } while (uVar16 < local_170);
  }
  piVar5 = (int *)0x0;
joined_r0x009084a4:
  do {
    do {
      piVar4 = piVar5;
      if (piVar4 == (int *)0x0) {
        (**(code **)(*param_2 + 0x28))("/* pixels */\n",0xd);
        puVar11 = (undefined *)FUN_008ff850();
        _Memory = (void *)0x0;
        iVar19 = FUN_00900150();
        if (0 < iVar19) {
          do {
            iVar18 = CONCAT13(0x22,(int3)iVar18);
            (**(code **)(*param_2 + 0x28))(&stack0xfffffe73,1);
            iVar20 = 0;
            iVar19 = FUN_00900100();
            if (0 < iVar19) {
              uStack_124 = 0;
              uStack_120 = 0;
              do {
                local_128 = (uint)CONCAT21(CONCAT11(*puVar11,puVar11[1]),puVar11[2]);
                for (puVar14 = *(undefined4 **)((int)_Memory + (local_128 % uVar15) * 4);
                    puVar14 != (undefined4 *)0x0; puVar14 = (undefined4 *)*puVar14) {
                  if (puVar14[1] == local_128) goto LAB_0090868d;
                }
                puVar14 = (undefined4 *)FUN_00900a20(&local_128,local_128 % uVar15);
LAB_0090868d:
                (**(code **)(*param_2 + 0x28))(*(undefined4 *)(iVar18 + puVar14[2] * 4),iVar7);
                iVar20 = iVar20 + 1;
                puVar11 = puVar11 + 3;
                iVar19 = FUN_00900100();
              } while (iVar20 < iVar19);
            }
            (**(code **)(*param_2 + 0x28))(&stack0xfffffe6b,1);
            _Memory = (void *)(iVar7 + 1);
            iVar19 = FUN_00900150();
            if ((int)_Memory < iVar19) {
              (**(code **)(*param_2 + 0x28))(&stack0xfffffe63,1);
            }
            (**(code **)(*param_2 + 0x28))(&stack0xfffffe63,1);
            iVar19 = FUN_00900150();
          } while ((int)_Memory < iVar19);
        }
        (**(code **)(*param_2 + 0x28))(&DAT_00d49968,3);
        FUN_00a3f66c(iVar18);
        FUN_00a3f66c(unaff_EDI);
        _free(pvStack_100);
        if (7 < uStack_104) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_118);
        }
        uStack_104 = 7;
        uStack_108 = 0;
        local_118 = local_118 & 0xffff0000;
        uStack_24 = 0xffffffff;
        FUN_00893cf0(uVar15,_Memory,&LAB_00981b50);
        _free(_Memory);
        ExceptionList = pvStack_2c;
        ___security_check_cookie_4();
        return;
      }
      uVar16 = piVar4[2];
      ppvVar13 = (void **)((unaff_ESI + 1) * uVar16 + (int)ppvStack_178);
      iVar19 = 0;
      *(void ***)(uVar15 + uVar16 * 4) = ppvVar13;
      if (0 < unaff_ESI) {
        do {
          *(char *)(iVar19 + (int)ppvVar13) =
               " .XoO+@#$%&*=-;:>,<1234567890qwertyuipasdfghjklzxcvbnmMNBVCZASDFGHJKLPIUYTREWQ!~^/()_`\'][{}|"
               [uVar16 % 0x5c];
          iVar19 = iVar19 + 1;
          uVar16 = uVar16 / 0x5c;
        } while (iVar19 < unaff_ESI);
      }
      *(undefined *)(iVar19 + (int)ppvVar13) = 0;
      uVar16 = piVar4[1];
      if (uVar16 == 0) {
        _sprintf((char *)&local_e8,"\"%s c Black\",\n",ppvVar13);
      }
      else if (uVar16 == uVar21) {
        _sprintf((char *)&local_e8,"\"%s c None\",\n",ppvVar13);
      }
      else {
        _sprintf((char *)&local_e8,"\"%s c #%02X%02X%02X\",\n",ppvVar13,uVar16 >> 0x10 & 0xff,
                 uVar16 >> 8 & 0xff,uVar16 & 0xff);
      }
      puVar14 = &local_e8;
      do {
        cVar6 = *(char *)puVar14;
        puVar14 = (undefined4 *)((int)puVar14 + 1);
      } while (cVar6 != '\0');
      (**(code **)(*param_2 + 0x28))(&local_e8,(int)puVar14 - ((int)&local_e8 + 1));
      piVar5 = (int *)*piVar4;
    } while ((int *)*piVar4 != (int *)0x0);
    uVar16 = (uint)piVar4[1] % local_170;
    do {
      uVar16 = uVar16 + 1;
      if (local_170 <= uVar16) {
        piVar5 = (int *)0x0;
        goto joined_r0x009084a4;
      }
    } while (*(int *)(local_174 + uVar16 * 4) == 0);
    piVar5 = *(int **)(local_174 + uVar16 * 4);
  } while( true );
}



undefined ** FUN_009087f0(void)

{
  return &PTR_u_wxPNGHandler_0323914c;
}



undefined4 __thiscall FUN_00908860(uint param_1_00,int param_1,uint param_2)

{
  char *pcVar1;
  uint in_EAX;
  int iVar2;
  int unaff_EBX;
  uint unaff_EDI;
  
  if (in_EAX < param_2) {
    do {
      iVar2 = (unaff_EBX + 1) * param_1_00 + *(int *)(param_1 + in_EAX * 4);
      for (; param_1_00 < unaff_EDI; param_1_00 = param_1_00 + 1) {
        pcVar1 = (char *)(iVar2 + unaff_EBX);
        iVar2 = iVar2 + unaff_EBX + 1;
        if ((*pcVar1 != '\0') && (*pcVar1 != -1)) {
          return 2;
        }
      }
      in_EAX = in_EAX + 1;
      param_1_00 = 0;
    } while (in_EAX < param_2);
  }
  return 1;
}



// WARNING: Removing unreachable block (ram,0x009088fa)
// WARNING: Removing unreachable block (ram,0x009088e8)
// WARNING: Removing unreachable block (ram,0x009088f0)
// WARNING: Removing unreachable block (ram,0x00908904)

undefined4 FUN_009088b0(int *param_1)

{
  int *piVar1;
  undefined4 uVar2;
  
  piVar1 = (int *)(**(code **)(*param_1 + 0x2c))(&param_1);
  uVar2 = (**(code **)(*piVar1 + 0x10))();
  if ((char)uVar2 != '\0') {
    return 0xffffff00;
  }
  return uVar2;
}



undefined4 FUN_00908930(void)

{
  undefined4 *puVar1;
  undefined *in_EAX;
  uint uVar2;
  int *unaff_ESI;
  
  uVar2 = CONCAT31(CONCAT21(CONCAT11(*in_EAX,in_EAX[1]),in_EAX[2]),in_EAX[4]);
  puVar1 = *(undefined4 **)(*unaff_ESI + (uVar2 % (uint)unaff_ESI[1]) * 4);
  while( true ) {
    if (puVar1 == (undefined4 *)0x0) {
      return 0xffffffff;
    }
    if (puVar1[1] == uVar2) break;
    puVar1 = (undefined4 *)*puVar1;
  }
  if (puVar1 == (undefined4 *)0x0) {
    return 0xffffffff;
  }
  return puVar1[2];
}



void ** __thiscall FUN_00908980(void **param_1_00,undefined4 param_1)

{
  void *pvVar1;
  
  pvVar1 = (void *)FUN_00893ca0(param_1);
  param_1_00[1] = pvVar1;
  param_1_00[2] = (void *)0x0;
  pvVar1 = _calloc((size_t)pvVar1,4);
  *param_1_00 = pvVar1;
  return param_1_00;
}



undefined4 * __thiscall
FUN_009089b0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxPalette::vftable;
  FUN_00974170(param_1,param_2,param_3,param_4);
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_00908a20(int *param_1)

{
  int iVar1;
  undefined *in_EAX;
  int *piVar2;
  undefined4 *puVar3;
  uint local_4;
  
  local_4 = CONCAT31(CONCAT21(CONCAT11(*in_EAX,in_EAX[1]),in_EAX[2]),in_EAX[4]);
  for (puVar3 = *(undefined4 **)(*param_1 + (local_4 % (uint)param_1[1]) * 4);
      puVar3 != (undefined4 *)0x0; puVar3 = (undefined4 *)*puVar3) {
    if (puVar3[1] == local_4) goto LAB_00908a5d;
  }
  puVar3 = (undefined4 *)0x0;
LAB_00908a5d:
  if (puVar3 != (undefined4 *)0x0) {
    return puVar3[2];
  }
  iVar1 = param_1[2];
  piVar2 = (int *)FUN_009dbfa0(&local_4);
  *piVar2 = iVar1;
  return iVar1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x88);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00431fba(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_00908b00(int param_1)

{
  char cVar1;
  int iVar2;
  uint local_5c;
  void *local_58;
  
  if (((param_1 != 0) && (iVar2 = FUN_00b3de20(), iVar2 != 0)) && (*(char *)(iVar2 + 0x40) == '\0'))
  {
    return;
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(2);
  if (cVar1 != '\0') {
    FUN_00853800();
    FUN_008433c0();
    FUN_008423d0();
    FUN_008854f0();
    FUN_0083fe90();
    FUN_00842440();
    FUN_0081b5bc();
    _free(local_58);
    if (7 < local_5c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  return;
}



// WARNING: Removing unreachable block (ram,0x00908f09)
// WARNING: Removing unreachable block (ram,0x00908f7c)
// WARNING: Removing unreachable block (ram,0x00908ed2)

void FUN_00908c10(int param_1,int param_2,uint param_3,undefined *param_4,undefined *param_5,
                 undefined *param_6)

{
  short sVar1;
  char cVar2;
  size_t _Count;
  void *_Memory;
  undefined4 *puVar3;
  int iVar4;
  uint uVar5;
  short *psVar6;
  uint uVar7;
  undefined *puVar8;
  int local_d0;
  int local_cc;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6281;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  _Count = FUN_00893ca0();
  _Memory = _calloc(_Count,4);
  uVar7 = 0;
  local_4 = 0;
  local_cc = 0;
  if (param_3 != 0) {
    do {
      puVar8 = *(undefined **)(param_1 + uVar7 * 4);
      if (param_2 != 0) {
        local_d0 = param_2;
        do {
          uVar5 = (uint)CONCAT21(CONCAT11(*puVar8,puVar8[1]),puVar8[2]);
          puVar8 = puVar8 + 4;
          for (puVar3 = *(undefined4 **)((int)_Memory + (uVar5 % _Count) * 4);
              puVar3 != (undefined4 *)0x0; puVar3 = (undefined4 *)*puVar3) {
            if (puVar3[1] == uVar5) goto LAB_00908cfa;
          }
          puVar3 = (undefined4 *)FUN_00900a20();
LAB_00908cfa:
          iVar4 = puVar3[3];
          puVar3[3] = iVar4 + 1;
          if (iVar4 == 0) {
            puVar3[2] = local_cc;
            local_cc = local_cc + 1;
          }
          local_d0 = local_d0 + -1;
        } while (local_d0 != 0);
      }
      uVar7 = uVar7 + 1;
    } while (uVar7 < param_3);
  }
  cVar2 = FUN_009068d0();
  if (cVar2 == '\0') {
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(2);
    if (cVar2 != '\0') {
      psVar6 = (short *)PTR_DAT_03236318;
      if (PTR_DAT_03236318 == (undefined *)0x0) {
        psVar6 = &DAT_00fae9c8;
      }
      do {
        sVar1 = *psVar6;
        psVar6 = psVar6 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign();
      local_4._0_1_ = 1;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,2);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 3;
      __time64((__time64_t *)0x0);
      GetCurrentThreadId();
      local_4._0_1_ = 4;
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 3;
      _free((void *)0x0);
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_0081b5bc();
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free((void *)0x0);
    }
    *param_4 = 0xfe;
    *param_5 = 0;
    *param_6 = 0xff;
  }
  local_4 = 0xffffffff;
  FUN_00893cf0();
  _free(_Memory);
  ExceptionList = local_c;
  return;
}



void FUN_00909010(undefined4 param_1,int param_2,char *param_3,uint param_4,byte param_5)

{
  char cVar1;
  char cVar2;
  char *pcVar3;
  int iVar4;
  char cVar5;
  char *pcVar6;
  char *pcVar7;
  int local_20;
  char *local_1c;
  char *local_18;
  undefined4 local_14;
  uint local_10;
  undefined4 local_c;
  uint local_8;
  char *local_4;
  
  local_20 = 0;
  local_1c = (char *)0x0;
  local_c = local_c & 0xffffff00;
  local_10 = local_10 & 0xffffff00;
  local_14 = local_14 & 0xffffff00;
  pcVar3 = (char *)FUN_008ff850();
  local_8 = 0;
  local_18 = pcVar3;
  if ((param_5 & 2) == 0) {
    if (param_4 == 0) {
      return;
    }
    do {
      pcVar7 = *(char **)(param_2 + local_8 * 4);
      pcVar6 = (char *)0x0;
      if (param_3 != (char *)0x0) {
        do {
          cVar1 = *pcVar7;
          cVar2 = pcVar7[1];
          local_4 = pcVar7 + 2;
          if ((cVar2 != -1) && (local_20 == 0)) {
            local_20 = FUN_00908860(param_2,param_4);
            if (local_20 == 1) {
              local_c = CONCAT31(local_c._1_3_,0xff);
              local_10 = local_10 & 0xffffff00;
              local_14 = CONCAT31(local_14._1_3_,0xff);
            }
            else {
              FUN_008ff8a0(0,0);
              local_1c = (char *)FUN_008ff940();
              iVar4 = FUN_00900100();
              pcVar7 = pcVar6 + iVar4 * local_8;
              pcVar3 = local_18;
              if (pcVar7 != (char *)0x0) {
                _memset(local_1c,0xff,(size_t)pcVar7);
                local_1c = local_1c + (int)pcVar7;
              }
            }
          }
          pcVar7 = local_4;
          if (local_20 == 0) {
LAB_00909184:
            *pcVar3 = cVar1;
            pcVar3[1] = cVar1;
            pcVar3[2] = cVar1;
LAB_00909190:
            pcVar3 = pcVar3 + 3;
            local_18 = pcVar3;
          }
          else {
            if (local_20 == 1) {
              if (cVar2 != '\0') {
                if ((PTR_FUN_03235c4c != (undefined *)0x0) && (cVar2 != -1)) {
                  FUN_00840480("..\\..\\src\\common\\imagpng.cpp",0x187,"CopyDataFromPNG",
                               "IsOpaque(a)",L"logic error");
                }
                goto LAB_00909175;
              }
              *pcVar3 = (char)local_c;
              pcVar3[1] = (char)local_10;
              pcVar3[2] = (char)local_14;
              goto LAB_00909190;
            }
            if (local_20 == 2) {
LAB_00909175:
              if (local_1c != (char *)0x0) {
                *local_1c = cVar2;
                local_1c = local_1c + 1;
              }
              goto LAB_00909184;
            }
          }
          pcVar6 = pcVar6 + 1;
        } while (pcVar6 < param_3);
      }
      local_8 = local_8 + 1;
    } while (local_8 < param_4);
  }
  else {
    if (param_4 == 0) {
      return;
    }
    do {
      pcVar7 = *(char **)(param_2 + local_8 * 4);
      local_4 = (char *)0x0;
      if (param_3 != (char *)0x0) {
        do {
          param_5 = *pcVar7;
          cVar2 = pcVar7[1];
          cVar1 = pcVar7[3];
          cVar5 = pcVar7[2];
          pcVar7 = pcVar7 + 4;
          if ((cVar1 != -1) && (local_20 == 0)) {
            local_20 = FUN_00908860(param_2,param_4);
            if (local_20 == 1) {
              FUN_00908c10(param_2,param_3,param_4,&local_c,&local_10,&local_14);
            }
            else {
              FUN_008ff8a0(0,0);
              local_1c = (char *)FUN_008ff940();
              iVar4 = FUN_00900100();
              pcVar6 = local_4 + iVar4 * local_8;
              pcVar3 = local_18;
              if (pcVar6 != (char *)0x0) {
                _memset(local_1c,0xff,(size_t)pcVar6);
                local_1c = local_1c + (int)pcVar6;
              }
            }
          }
          if (local_20 == 0) {
LAB_0090933b:
            *pcVar3 = param_5;
            pcVar3[1] = cVar2;
LAB_0090934c:
            pcVar3[2] = cVar5;
            pcVar3 = pcVar3 + 3;
            local_18 = pcVar3;
          }
          else {
            if (local_20 == 1) {
              if (cVar1 != '\0') {
                if ((PTR_FUN_03235c4c != (undefined *)0x0) && (cVar1 != -1)) {
                  FUN_00840480("..\\..\\src\\common\\imagpng.cpp",0x1cb,"CopyDataFromPNG",
                               "IsOpaque(a)",L"logic error");
                }
                if (((param_5 == (char)local_c) && (cVar2 == (char)local_10)) &&
                   (cVar5 == (char)local_14)) {
                  param_5 = param_5 + '\x01';
                }
                goto LAB_0090932c;
              }
              *pcVar3 = (char)local_c;
              pcVar3[1] = (char)local_10;
              cVar5 = (char)local_14;
              goto LAB_0090934c;
            }
            if (local_20 == 2) {
LAB_0090932c:
              if (local_1c != (char *)0x0) {
                *local_1c = cVar1;
                local_1c = local_1c + 1;
              }
              goto LAB_0090933b;
            }
          }
          local_4 = local_4 + 1;
        } while (local_4 < param_3);
      }
      local_8 = local_8 + 1;
    } while (local_8 < param_4);
  }
  if (local_20 == 1) {
    FUN_008ff990(local_c,local_10,local_14);
  }
  return;
}



undefined4 FUN_009093b0(undefined4 param_1,undefined4 param_2,char param_3)

{
  char cVar1;
  int iVar2;
  void *pvVar3;
  void *pvVar4;
  undefined *puVar5;
  undefined *puVar6;
  int iVar7;
  uint uVar8;
  void *pvVar9;
  int *piStack_330;
  size_t *psStack_32c;
  int *piStack_328;
  int *piStack_324;
  int *piStack_320;
  undefined local_214 [64];
  char local_1d4;
  undefined4 local_1d0;
  uint local_c8;
  undefined4 local_b8;
  uint local_b4;
  void *local_b0;
  uint local_a4;
  undefined4 local_94;
  uint local_90;
  void *local_8c;
  undefined local_84 [8];
  uint local_7c;
  undefined4 local_6c;
  uint local_68;
  void *local_64;
  void *local_5c;
  undefined *puStack_58;
  undefined4 local_54;
  int **local_50;
  undefined **local_4c;
  int local_44;
  int local_40 [2];
  int local_38;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int **local_20;
  int local_1c;
  void *local_18;
  int *local_14;
  size_t local_10;
  void *local_c;
  undefined *local_8;
  
  local_54 = 0xffffffff;
  puStack_58 = &LAB_00bd6354;
  local_5c = ExceptionList;
  ExceptionList = &local_5c;
  local_1d0 = param_2;
  local_18 = (void *)0x0;
  local_c = (void *)0x0;
  local_10 = 0;
  local_1d4 = param_3;
  thunk_FUN_0083e850();
  piStack_320 = (int *)0x90941a;
  local_8 = (undefined *)FUN_00b401f0();
  pvVar9 = (void *)0x0;
  if (local_8 == (undefined *)0x0) {
LAB_00909613:
    if (param_3 != '\0') {
      local_20 = &piStack_330;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_54 = 0xc;
        FUN_0043c211();
        local_54 = CONCAT31(local_54._1_3_,0xd);
        iVar2 = FUN_0084a340();
        if (iVar2 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        piStack_320 = (int *)0x1;
        local_54._0_1_ = 0xe;
        piStack_324 = (int *)0x9096c0;
        FUN_008423d0();
        local_54._0_1_ = 0xf;
        FUN_008854f0();
        FUN_0083fe90();
        local_54._0_1_ = 0xe;
        FUN_00842440();
        local_54 = CONCAT31(local_54._1_3_,0xd);
        FUN_0081b5bc();
        _free(local_64);
        if (7 < local_68) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        local_68 = 7;
        local_6c = 0;
        local_7c = local_7c & 0xffff0000;
        local_54 = 0xffffffff;
        _free(local_8c);
        if (7 < local_90) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        local_90 = 7;
        local_94 = 0;
        local_a4 = local_a4 & 0xffff0000;
      }
    }
    cVar1 = FUN_008ff820();
    if (cVar1 != '\0') {
      thunk_FUN_0083e850();
    }
    if (pvVar9 != (void *)0x0) {
      uVar8 = 0;
      if (local_10 != 0) {
        do {
          _free(*(void **)((int)pvVar9 + uVar8 * 4));
          uVar8 = uVar8 + 1;
        } while (uVar8 < local_10);
      }
      _free(pvVar9);
    }
    if (local_8 != (undefined *)0x0) {
      if (local_c != (void *)0x0) {
        FUN_00b40220();
        piStack_320 = (int *)0x9097c2;
        _free(local_c);
        ExceptionList = local_5c;
        return 0;
      }
      FUN_00b40220();
    }
    ExceptionList = local_5c;
    return 0;
  }
  FUN_00b44400();
  piStack_320 = (int *)0x909443;
  local_c = (void *)FUN_00b3eda0();
  if (local_c == (void *)0x0) goto LAB_00909613;
  piStack_320 = (int *)local_214;
  piStack_324 = (int *)0x90946d;
  iVar2 = __setjmp3();
  pvVar9 = local_18;
  if (iVar2 != 0) goto LAB_00909613;
  FUN_00b3f6c0();
  piStack_320 = (int *)local_84;
  piStack_324 = &local_28;
  piStack_328 = local_40;
  psStack_32c = &local_10;
  piStack_330 = &local_24;
  FUN_00b3f350(local_8,local_c);
  if (local_28 == 3) {
    FUN_00b40750();
  }
  if (local_40[0] < 8) {
    FUN_00b40750();
  }
  FUN_00b40740();
  FUN_00b402f0();
  piStack_320 = (int *)local_8;
  piStack_324 = (int *)0x9094f0;
  iVar2 = FUN_00b3f330();
  if (iVar2 != 0) {
    FUN_00b40750();
  }
  FUN_00b40370();
  FUN_00900c30();
  cVar1 = FUN_008ff820();
  pvVar9 = local_18;
  if ((cVar1 == '\0') ||
     (pvVar3 = _calloc(local_10,4), pvVar9 = pvVar3, local_18 = pvVar3, pvVar3 == (void *)0x0))
  goto LAB_00909613;
  if (local_10 != 0) {
    uVar8 = 0;
    do {
      pvVar4 = _malloc(local_24 * 4);
      *(void **)((int)pvVar3 + uVar8 * 4) = pvVar4;
      pvVar9 = local_18;
      if (pvVar4 == (void *)0x0) goto LAB_00909613;
      uVar8 = uVar8 + 1;
    } while (uVar8 < local_10);
  }
  FUN_00b3fda0();
  piStack_320 = (int *)0x90959b;
  FUN_00b3fe50();
  if (local_28 == 3) {
    iVar2 = 0;
    local_1c = 0;
    local_14 = (int *)0x0;
    piStack_320 = (int *)0x9095c5;
    FUN_00b3f460();
    piStack_320 = local_14;
    piStack_324 = (int *)0x9095ce;
    puVar5 = (undefined *)FUN_00823c23();
    piStack_324 = local_14;
    piStack_328 = (int *)0x9095dc;
    local_20 = (int **)puVar5;
    puVar6 = (undefined *)FUN_00823c23();
    piStack_328 = local_14;
    psStack_32c = (size_t *)0x9095e7;
    local_2c = FUN_00823c23();
    if (0 < (int)local_14) {
      local_44 = (int)puVar5 - (int)puVar6;
      iVar7 = 0;
      local_30 = local_2c - (int)puVar6;
      do {
        puVar6[local_44] = *(undefined *)(iVar7 + local_1c);
        *puVar6 = *(undefined *)(iVar7 + 1 + local_1c);
        puVar6[local_30] = *(undefined *)(iVar7 + 2 + local_1c);
        iVar2 = iVar2 + 1;
        puVar6 = puVar6 + 1;
        iVar7 = iVar7 + 3;
      } while (iVar2 < (int)local_14);
    }
    piStack_320 = (int *)0x909823;
    FUN_009089b0();
    local_54 = 0;
    FUN_009029b0();
    local_54 = 0xffffffff;
    local_4c = wxObject::vftable;
    FUN_0083e850();
    FUN_00a3f66c();
    FUN_00a3f66c();
    FUN_00a3f66c();
  }
  piStack_320 = (int *)local_8;
  piStack_324 = (int *)0x909881;
  iVar2 = FUN_00b3f410();
  if (iVar2 != 0x80) goto LAB_00909a46;
  local_20 = (int **)0x2;
  if (local_38 == 0) {
LAB_00909990:
    FUN_004325b6();
    local_54 = 5;
    FUN_00903db0();
    local_54 = 0xffffffff;
    FUN_0040159c();
    FUN_004325b6();
    local_54 = 6;
    FUN_00903db0();
    local_54 = 0xffffffff;
    FUN_0040159c();
  }
  else {
    if (local_38 != 1) {
      local_50 = &piStack_330;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(2);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_54 = 1;
        FUN_0043c211();
        local_54._0_1_ = 2;
        FUN_00820bf9();
        FUN_008433c0();
        piStack_320 = (int *)0x2;
        local_54._0_1_ = 3;
        piStack_324 = (int *)0x909943;
        FUN_008423d0();
        local_54._0_1_ = 4;
        FUN_00848820();
        local_54._0_1_ = 3;
        FUN_00842440();
        local_54 = CONCAT31(local_54._1_3_,2);
        FUN_0081b5bc();
        FUN_0040159c();
        local_54 = 0xffffffff;
        FUN_0040159c();
      }
      goto LAB_00909990;
    }
    piStack_320 = (int *)0x909ad3;
    FUN_00853b50();
    local_54 = 7;
    FUN_004325b6();
    local_54 = CONCAT31(local_54._1_3_,8);
    FUN_00903cb0();
    FUN_0040159c();
    local_54 = 0xffffffff;
    FUN_0040159c();
    piStack_320 = (int *)0x909b3f;
    FUN_00853b50();
    local_54 = 9;
    FUN_004325b6();
    local_54 = CONCAT31(local_54._1_3_,10);
    FUN_00903cb0();
    FUN_0040159c();
    local_54 = 0xffffffff;
    FUN_0040159c();
  }
  FUN_004325b6();
  local_54 = 0xb;
  FUN_00903db0();
  local_54 = 0xffffffff;
  _free(local_b0);
  if (7 < local_b4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_b4 = 7;
  local_b8 = 0;
  local_c8 = local_c8 & 0xffff0000;
LAB_00909a46:
  FUN_00b40220();
  pvVar9 = local_18;
  piStack_320 = (int *)local_10;
  piStack_324 = (int *)local_24;
  piStack_328 = (int *)local_18;
  psStack_32c = (size_t *)param_1;
  piStack_330 = (int *)0x909a6b;
  FUN_00909010();
  uVar8 = 0;
  if (local_10 != 0) {
    do {
      _free(*(void **)((int)pvVar9 + uVar8 * 4));
      uVar8 = uVar8 + 1;
    } while (uVar8 < local_10);
  }
  _free(pvVar9);
  ExceptionList = local_5c;
  return 1;
}



void FUN_00909b90(undefined4 param_1,undefined4 param_2,char param_3)

{
  char cVar1;
  byte bVar2;
  int iVar3;
  int iVar4;
  undefined *puVar5;
  int iVar6;
  byte *pbVar7;
  undefined uVar8;
  uint uVar9;
  byte *pbVar10;
  byte *pbVar11;
  undefined2 in_FPUControlWord;
  undefined local_8d4 [1072];
  char local_4a4;
  undefined4 local_4a0;
  uint local_240;
  undefined4 local_230;
  uint local_22c;
  void *local_228;
  uint local_21c;
  undefined4 local_20c;
  uint local_208;
  void *local_204;
  uint local_1f8;
  undefined4 local_1e8;
  uint local_1e4;
  void *local_1e0;
  uint local_1d4;
  undefined4 local_1c4;
  uint local_1c0;
  void *local_1bc;
  uint local_1b0;
  undefined4 local_1a0;
  uint local_19c;
  void *local_198;
  byte *local_190;
  byte *local_18c;
  longlong local_188;
  undefined4 local_180;
  byte *local_17c;
  void *local_178;
  size_t local_174;
  undefined4 local_170;
  undefined local_168;
  undefined local_167;
  undefined local_166;
  undefined local_165;
  undefined local_164;
  byte *local_160;
  int local_15c;
  int local_158;
  byte *local_154;
  int local_150;
  undefined local_14c;
  undefined local_14b;
  undefined local_14a;
  undefined local_149;
  undefined local_148;
  int local_144;
  byte local_140;
  byte local_13f;
  byte local_13e;
  undefined local_13d;
  undefined local_13c;
  byte local_138;
  byte local_137;
  byte local_136;
  undefined local_135;
  byte local_134;
  uint local_130;
  byte *local_12c;
  byte *local_128;
  int local_124;
  char local_11e;
  char local_11d;
  int local_11c;
  char local_116;
  char local_115;
  void *local_114;
  undefined *puStack_110;
  undefined4 local_10c;
  undefined local_108 [256];
  uint local_8;
  
  local_10c = 0xffffffff;
  puStack_110 = &LAB_00bd64d9;
  local_114 = ExceptionList;
  local_8 = DAT_0323f878 ^ (uint)local_108;
  ExceptionList = &local_114;
  local_180 = param_1;
  local_130 = 0;
  local_4a4 = param_3;
  local_4a0 = param_2;
  local_11c = FUN_00b452e0();
  if (local_11c == 0) {
    if (param_3 != '\0') {
      local_188 = CONCAT44(&stack0xfffff6f8,(undefined4)local_188);
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_10c = 0;
        FUN_0043c211();
        local_10c = CONCAT31(local_10c._1_3_,1);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_10c._0_1_ = 2;
        FUN_008423d0();
        local_10c._0_1_ = 3;
        FUN_008854f0();
        FUN_0083fe90();
        local_10c._0_1_ = 2;
        FUN_00842440();
        local_10c = CONCAT31(local_10c._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
    goto LAB_0090aa54;
  }
  local_144 = FUN_00b3eda0();
  if (local_144 == 0) {
    FUN_00b45310();
    if (param_3 != '\0') {
      local_188 = CONCAT44(&stack0xfffff6f8,(undefined4)local_188);
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_10c = 4;
        FUN_0043c211();
        local_10c._0_1_ = 5;
        FUN_00820bf9();
        FUN_008433c0();
        local_10c._0_1_ = 6;
        FUN_008423d0();
        local_10c._0_1_ = 7;
        FUN_008854f0();
        FUN_0083fe90();
        local_10c._0_1_ = 6;
        FUN_00842440();
        local_10c = CONCAT31(local_10c._1_3_,5);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
    goto LAB_0090aa54;
  }
  iVar3 = __setjmp3();
  if (iVar3 != 0) {
    FUN_00b45310();
    if (param_3 != '\0') {
      local_188 = CONCAT44(&stack0xfffff6f8,(undefined4)local_188);
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_10c = 8;
        FUN_0043c211();
        local_10c._0_1_ = 9;
        FUN_00820bf9();
        FUN_008433c0();
        local_10c._0_1_ = 10;
        FUN_008423d0();
        local_10c._0_1_ = 0xb;
        FUN_00840b80();
        local_10c._0_1_ = 10;
        FUN_00842440();
        local_10c = CONCAT31(local_10c._1_3_,9);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
    goto LAB_0090aa54;
  }
  FUN_00b46400();
  local_154 = (byte *)FUN_00900150();
  local_17c = (byte *)FUN_00900100();
  FUN_004325b6();
  local_10c = 0xc;
  cVar1 = FUN_008ffc30();
  local_10c = 0xffffffff;
  FUN_0040159c();
  if (cVar1 == '\0') {
    local_158 = 0;
  }
  else {
    FUN_004325b6();
    local_130 = local_130 | 1;
    local_10c = 0xd;
    local_158 = FUN_00903f50();
  }
  iVar3 = local_158;
  local_10c = 0xffffffff;
  if ((local_130 & 1) != 0) {
    local_130 = local_130 & 0xfffffffe;
    FUN_0040159c();
  }
  iVar4 = FUN_008ff940();
  local_11e = iVar4 != 0;
  local_115 = FUN_008ffb60();
  if ((iVar3 == 4) || ((cVar1 == '\0' && (cVar1 = FUN_008ffbb0(), cVar1 != '\0')))) {
    cVar1 = '\x01';
  }
  else {
    cVar1 = '\0';
  }
  local_140 = 0;
  local_13f = 0;
  local_13e = 0;
  local_13d = 0;
  local_13c = 0;
  local_116 = cVar1;
  if (local_115 != '\0') {
    local_140 = FUN_008ffa10();
    local_13f = FUN_008ffa60();
    local_13e = FUN_008ffab0();
  }
  local_174 = FUN_00893ca0();
  local_170 = 0;
  local_178 = _calloc(local_174,4);
  local_10c = 0xe;
  if (cVar1 != '\0') {
    puVar5 = (undefined *)FUN_008ff850();
    local_12c = (byte *)FUN_008ff940();
    if ((local_115 != '\0') && (local_12c == (undefined *)0x0)) {
      FUN_00908a20();
    }
    if (0 < (int)local_154) {
      local_160 = local_154;
      do {
        iVar3 = 0;
        if (0 < (int)local_17c) {
          local_149 = 0;
          do {
            local_14c = *puVar5;
            local_14b = puVar5[1];
            local_14a = puVar5[2];
            puVar5 = puVar5 + 3;
            if ((local_12c == (undefined *)0x0) || (local_115 != '\0')) {
              uVar8 = 0;
            }
            else {
              uVar8 = *local_12c;
              local_12c = local_12c + 1;
            }
            local_148 = uVar8;
            iVar4 = FUN_00908a20();
            if (0xff < iVar4) {
              local_116 = '\0';
              break;
            }
            iVar6 = iVar4 * 3;
            local_8d4[iVar6] = local_14c;
            local_8d4[iVar6 + 1] = local_14b;
            pbVar7 = local_17c;
            iVar3 = iVar3 + 1;
            local_8d4[iVar6 + 2] = local_14a;
            local_108[iVar4] = uVar8;
          } while (iVar3 < (int)pbVar7);
        }
        local_160 = local_160 + -1;
      } while (local_160 != (byte *)0x0);
    }
    if (local_116 != '\0') {
      FUN_00b45a20();
      if (local_115 == '\0') {
        if (local_12c != (undefined *)0x0) goto LAB_0090a1fd;
      }
      else {
        if (local_12c == (undefined *)0x0) {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar3 = FUN_00908930(), iVar3 != 0)) {
            FUN_008402e0();
          }
          local_108[0] = 0;
        }
        else {
LAB_0090a1fd:
          if (local_115 != '\0') goto LAB_0090a21b;
        }
        FUN_00b45f30();
      }
    }
  }
LAB_0090a21b:
  if (local_116 == '\0') {
    if (local_158 == 4) {
      local_158 = 0;
    }
    if ((local_11e == '\0') && (local_115 == '\0')) goto LAB_0090a241;
    local_11d = '\x01';
  }
  else {
LAB_0090a241:
    local_11d = '\0';
  }
  if (local_116 == '\0') {
    if (local_158 == 0) {
      local_12c = (byte *)((uint)(local_11d != '\0') * 4 + 2);
    }
    else {
      local_12c = (byte *)(-(uint)(local_11d != '\0') & 4);
    }
  }
  else {
    local_12c = (byte *)0x3;
    local_158 = 4;
  }
  FUN_004325b6();
  local_10c._0_1_ = 0xf;
  cVar1 = FUN_008ffc30();
  local_10c._0_1_ = 0xe;
  _free(local_198);
  if (7 < local_19c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_19c = 7;
  local_1a0 = 0;
  local_1b0 = local_1b0 & 0xffff0000;
  if (cVar1 != '\0') {
    FUN_004325b6();
    local_10c._0_1_ = 0x10;
    FUN_00903f50();
    FUN_00b44db0();
    local_10c._0_1_ = 0xe;
    FUN_0040159c();
  }
  FUN_004325b6();
  local_10c._0_1_ = 0x11;
  cVar1 = FUN_008ffc30();
  local_10c._0_1_ = 0xe;
  _free(local_204);
  if (7 < local_208) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_208 = 7;
  local_20c = 0;
  local_21c = local_21c & 0xffff0000;
  if (cVar1 != '\0') {
    FUN_004325b6();
    local_10c._0_1_ = 0x12;
    FUN_00903f50();
    FUN_00b44ff0();
    local_10c._0_1_ = 0xe;
    FUN_0040159c();
  }
  FUN_004325b6();
  local_10c._0_1_ = 0x13;
  cVar1 = FUN_008ffc30();
  local_10c._0_1_ = 0xe;
  _free(local_1bc);
  if (7 < local_1c0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_1c0 = 7;
  local_1c4 = 0;
  local_1d4 = local_1d4 & 0xffff0000;
  if (cVar1 != '\0') {
    FUN_004325b6();
    local_10c._0_1_ = 0x14;
    FUN_00903f50();
    FUN_00b45010();
    local_10c._0_1_ = 0xe;
    FUN_0040159c();
  }
  FUN_004325b6();
  local_10c._0_1_ = 0x15;
  cVar1 = FUN_008ffc30();
  local_10c._0_1_ = 0xe;
  _free(local_1e0);
  if (7 < local_1e4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_1e4 = 7;
  local_1e8 = 0;
  local_1f8 = local_1f8 & 0xffff0000;
  if (cVar1 != '\0') {
    FUN_004325b6();
    local_10c._0_1_ = 0x16;
    FUN_00903f50();
    FUN_00b45030();
    local_10c._0_1_ = 0xe;
    FUN_0040159c();
  }
  FUN_004325b6();
  local_10c._0_1_ = 0x17;
  cVar1 = FUN_008ffc30();
  local_10c._0_1_ = 0xe;
  _free(local_228);
  if (7 < local_22c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_22c = 7;
  local_230 = 0;
  local_240 = local_240 & 0xffff0000;
  if (cVar1 != '\0') {
    FUN_004325b6();
    local_10c._0_1_ = 0x18;
    FUN_00903f50();
    FUN_00b462f0();
    local_10c._0_1_ = 0xe;
    FUN_0040159c();
  }
  if (local_116 == '\0') {
    FUN_004325b6();
    local_130 = local_130 | 2;
    local_10c._0_1_ = 0x19;
    cVar1 = FUN_008ffc30();
    if (cVar1 == '\0') goto LAB_0090a646;
    FUN_004325b6();
    local_130 = local_130 | 4;
    local_10c._0_1_ = 0x1a;
    local_10c._1_3_ = 0;
    local_124 = FUN_00903f50();
  }
  else {
LAB_0090a646:
    local_124 = 8;
  }
  uVar9 = local_130;
  if ((local_130 & 4) != 0) {
    uVar9 = local_130 & 0xfffffffb;
    local_130 = uVar9;
    FUN_0040159c();
  }
  local_10c = 0xe;
  if ((uVar9 & 2) != 0) {
    local_130 = uVar9 & 0xfffffffd;
    FUN_0040159c();
  }
  pbVar7 = local_12c;
  FUN_00900150();
  FUN_00900100();
  FUN_00b45590();
  iVar3 = local_124;
  uVar8 = (undefined)local_124;
  if (((uint)pbVar7 & 2) == 0) {
    local_128 = (byte *)0x1;
    local_165 = uVar8;
  }
  else {
    local_128 = (byte *)0x3;
    local_168 = uVar8;
    local_167 = uVar8;
    local_166 = uVar8;
  }
  if (local_11d != '\0') {
    local_128 = local_128 + 1;
    local_164 = uVar8;
  }
  if (local_124 == 0x10) {
    local_128 = (byte *)((int)local_128 * 2);
  }
  iVar6 = FUN_00904350();
  iVar4 = local_150;
  if (iVar6 != 0) {
    if (iVar6 == 1) {
      iVar4 = FUN_00a49750();
      local_150 = iVar4;
      local_15c = FUN_00a49750();
    }
    else if (iVar6 == 2) {
      local_150 = local_150 * 100;
      local_15c = local_15c * 100;
      iVar4 = local_150;
    }
    else if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
      iVar4 = local_150;
    }
  }
  if ((iVar4 != 0) && (local_15c != 0)) {
    FUN_00b459f0();
  }
  FUN_00b45ac0();
  FUN_00b44620();
  FUN_00b40310();
  FUN_00b402f0();
  iVar4 = FUN_00900100();
  local_160 = (byte *)_malloc(iVar4 * (int)local_128);
  if (local_160 == (byte *)0x0) {
    FUN_00b45310();
    local_10c = 0xffffffff;
    FUN_00893cf0();
    local_170 = 0;
    _free(local_178);
  }
  else {
    if (local_11e == '\0') {
      local_128 = (byte *)0x0;
    }
    else {
      local_128 = (byte *)FUN_008ff940();
    }
    pbVar7 = (byte *)FUN_008ff850();
    local_12c = pbVar7;
    if (local_154 != (byte *)0x0) {
      local_18c = local_154;
      do {
        if (local_17c != (byte *)0x0) {
          local_135 = 0;
          local_154 = local_17c;
          pbVar11 = local_160;
          do {
            local_138 = *pbVar7;
            local_137 = pbVar7[1];
            local_136 = pbVar7[2];
            pbVar7 = pbVar7 + 3;
            if ((local_116 == '\0') || (local_128 == (byte *)0x0)) {
              local_134 = 0;
            }
            else {
              local_134 = *local_128;
              local_128 = local_128 + 1;
            }
            local_12c = pbVar7;
            switch(local_158) {
            default:
              if (PTR_FUN_03235c4c != (undefined *)0x0) {
                FUN_00840480();
              }
            case 0:
              *pbVar11 = local_138;
              pbVar10 = pbVar11 + 1;
              if (iVar3 == 0x10) {
                *pbVar10 = 0;
                pbVar10 = pbVar11 + 2;
              }
              *pbVar10 = local_137;
              pbVar11 = pbVar10 + 1;
              if (iVar3 == 0x10) {
                *pbVar11 = 0;
                pbVar11 = pbVar10 + 2;
              }
              *pbVar11 = local_136;
              break;
            case 2:
              pbVar10 = pbVar11 + 1;
              local_124 = CONCAT22(in_FPUControlWord,(ushort)local_136);
              local_188 = (longlong)
                          ROUND((double)(uint)local_136 * 36.864 +
                                (double)(uint)local_138 * 76.544 + (double)(uint)local_137 * 150.272
                               );
              *pbVar11 = (byte)((ulonglong)local_188 >> 8);
              if (iVar3 == 0x10) {
                *pbVar10 = (byte)local_188;
                goto LAB_0090a987;
              }
              goto LAB_0090a988;
            case 3:
              *pbVar11 = local_138;
              break;
            case 4:
              bVar2 = FUN_00908930();
              *pbVar11 = bVar2;
              pbVar7 = local_12c;
              pbVar10 = pbVar11;
              goto LAB_0090a987;
            }
            pbVar10 = pbVar11 + 1;
            if (iVar3 == 0x10) {
              *pbVar10 = 0;
LAB_0090a987:
              pbVar10 = pbVar10 + 1;
            }
LAB_0090a988:
            pbVar11 = pbVar10;
            if (local_11d != '\0') {
              bVar2 = 0xff;
              if (local_11e != '\0') {
                bVar2 = *local_128;
                local_128 = local_128 + 1;
              }
              if ((((local_115 != '\0') && (pbVar7 = local_12c, local_138 == local_140)) &&
                  (local_137 == local_13f)) && (local_136 == local_13e)) {
                bVar2 = 0;
              }
              *pbVar10 = bVar2;
              pbVar11 = pbVar10 + 1;
              if (iVar3 == 0x10) {
                *pbVar11 = 0;
                pbVar11 = pbVar10 + 2;
              }
            }
            local_154 = local_154 + -1;
          } while (local_154 != (byte *)0x0);
        }
        local_190 = local_160;
        FUN_00b451b0();
        local_18c = local_18c + -1;
      } while (local_18c != (byte *)0x0);
    }
    _free(local_160);
    FUN_00b44920();
    FUN_00b45310();
    local_10c = 0xffffffff;
    FUN_00893cf0();
    local_170 = 0;
    _free(local_178);
  }
LAB_0090aa54:
  ExceptionList = local_114;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_0090aa90(void)

{
  return &PTR_u_wxJPEGHandler_03239164;
}



void FUN_0090aaf0(int param_1,int param_2)

{
  int *piVar1;
  
  if (0 < param_2) {
    piVar1 = *(int **)(param_1 + 0x18);
    if (piVar1[1] < param_2) {
      do {
        param_2 = param_2 - piVar1[1];
        (*(code *)piVar1[3])(param_1);
      } while (piVar1[1] < param_2);
    }
    *piVar1 = *piVar1 + param_2;
    piVar1[1] = piVar1[1] - param_2;
  }
  return;
}



void FUN_0090ab80(int param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  if (*(int *)(param_1 + 0x18) == 0) {
    uVar2 = (***(code ***)(param_1 + 4))(param_1,0,0x24);
    *(undefined4 *)(param_1 + 0x18) = uVar2;
  }
  puVar1 = *(undefined4 **)(param_1 + 0x18);
  puVar1[1] = 0;
  uVar2 = FUN_00823c23(0x800);
  puVar1[7] = uVar2;
  *puVar1 = 0;
  puVar1[8] = param_2;
  puVar1[2] = FUN_009b4100;
  puVar1[3] = &LAB_0090aaa0;
  puVar1[4] = FUN_0090aaf0;
  puVar1[5] = &LAB_00b2b530;
  puVar1[6] = &LAB_0090ab30;
  return;
}



void FUN_0090abf0(char *param_1)

{
  int iVar1;
  char cVar2;
  byte *unaff_EBX;
  int iVar3;
  uint uVar4;
  
  uVar4 = (uint)unaff_EBX[3];
  iVar3 = 0xff - uVar4;
  iVar1 = (int)((0xff - (uint)*unaff_EBX) * uVar4) / 0xff + iVar3;
  if (iVar1 < 0x100) {
    cVar2 = -1 - (char)iVar1;
  }
  else {
    cVar2 = '\0';
  }
  *param_1 = cVar2;
  iVar1 = (int)((0xff - (uint)unaff_EBX[1]) * uVar4) / 0xff + iVar3;
  if (iVar1 < 0x100) {
    cVar2 = -1 - (char)iVar1;
  }
  else {
    cVar2 = '\0';
  }
  param_1[1] = cVar2;
  iVar3 = (int)((0xff - (uint)unaff_EBX[2]) * uVar4) / 0xff + iVar3;
  if (0xff < iVar3) {
    param_1[2] = '\0';
    return;
  }
  param_1[2] = -1 - (char)iVar3;
  return;
}



// WARNING: Removing unreachable block (ram,0x0090ad7b)
// WARNING: Removing unreachable block (ram,0x0090ad80)

undefined4 FUN_0090ad50(int *param_1)

{
  int *piVar1;
  undefined4 uVar2;
  
  piVar1 = (int *)(**(code **)(*param_1 + 0x2c))(&param_1);
  uVar2 = (**(code **)(*piVar1 + 0x10))();
  if ((char)uVar2 != '\0') {
    return 0;
  }
  return uVar2;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x88);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00431f0a(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_0090ae00(int param_1,undefined4 param_2,char param_3)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  void *_Dst;
  void **ppvVar5;
  size_t _Size;
  uint local_3a0;
  void *local_39c;
  uint local_37c;
  void *local_378;
  uint local_358;
  void *local_354;
  uint local_334;
  void *local_330;
  uint local_310;
  void *local_30c;
  uint local_2ec;
  void *local_2e8;
  uint local_2c8;
  void *local_2c4;
  int local_2ac;
  void *local_2a8;
  undefined *puStack_2a4;
  undefined4 local_2a0;
  undefined *local_29c [49];
  int local_1d8;
  int local_1d4;
  int local_1c0;
  uint local_1bc;
  uint local_1b8;
  int local_1ac;
  uint local_1a4;
  uint local_168;
  uint local_164;
  uint local_14c;
  int local_c0;
  uint local_8;
  
  local_2a0 = 0xffffffff;
  puStack_2a4 = &LAB_00bd6583;
  local_2a8 = ExceptionList;
  local_8 = DAT_0323f878 ^ (uint)local_29c;
  ExceptionList = &local_2a8;
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0();
    }
  }
  else {
    FUN_004325b6();
    local_2a0 = 0;
    uVar2 = FUN_00903f50();
    local_2a0 = 0xffffffff;
    _free(local_378);
    if (7 < local_37c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    FUN_004325b6();
    local_2a0 = 1;
    uVar3 = FUN_00903f50();
    local_2a0 = 0xffffffff;
    _free(local_330);
    if (7 < local_334) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    thunk_FUN_0083e850();
    local_1d8 = FUN_00b2c000();
    local_29c[0] = &LAB_0090ab60;
    if (param_3 == '\0') {
      *(code **)(local_1d8 + 8) = FUN_009b4100;
    }
    iVar4 = __setjmp3();
    if (iVar4 == 0) {
      FUN_00b2b970();
      FUN_0090ab80();
      FUN_00b2bde0();
      if ((local_1ac == 4) || (local_1ac == 5)) {
        local_1ac = 4;
        local_2ac = 4;
      }
      else {
        local_1ac = 2;
        local_2ac = 3;
      }
      if ((uVar2 != 0) || (uVar3 != 0)) {
        for (; ((uVar2 != 0 && (uVar2 < local_1bc / local_1a4)) ||
               ((uVar3 != 0 && (uVar3 < local_1b8 / local_1a4)))); local_1a4 = local_1a4 * 2) {
        }
      }
      FUN_00b2b890();
      FUN_00900c30();
      cVar1 = FUN_008ff820();
      if (cVar1 == '\0') {
        FUN_00b2bd10();
        thunk_FUN_00b2ce70();
      }
      else {
        FUN_008ffb00();
        _Dst = (void *)FUN_008ff850();
        _Size = local_168 * local_2ac;
        ppvVar5 = (void **)(**(code **)(local_1d4 + 8))();
        if (local_14c < local_164) {
          do {
            FUN_00b2b7f0();
            if (local_1ac == 2) {
              _memcpy(_Dst,*ppvVar5,_Size);
              _Dst = (void *)((int)_Dst + _Size);
            }
            else {
              uVar2 = 0;
              if (local_168 != 0) {
                do {
                  FUN_0090abf0();
                  uVar2 = uVar2 + 1;
                  _Dst = (void *)((int)_Dst + 3);
                } while (uVar2 < local_168);
              }
            }
          } while (local_14c < local_164);
        }
        if (local_c0 != 0) {
          FUN_004325b6();
          local_2a0 = 6;
          FUN_00903db0();
          local_2a0 = 0xffffffff;
          _free(local_2c4);
          if (7 < local_2c8) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          FUN_004325b6();
          local_2a0 = 7;
          FUN_00903db0();
          local_2a0 = 0xffffffff;
          _free(local_39c);
          if (7 < local_3a0) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          FUN_004325b6();
          local_2a0 = 8;
          FUN_00903db0();
          local_2a0 = 0xffffffff;
          _free(local_354);
          if (7 < local_358) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
        }
        if ((local_1bc != local_168) || (local_1b8 != local_164)) {
          FUN_004325b6();
          local_2a0 = 9;
          FUN_00903db0();
          local_2a0 = 0xffffffff;
          _free(local_30c);
          if (7 < local_310) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          FUN_004325b6();
          local_2a0 = 10;
          FUN_00903db0();
          _free(local_2e8);
          if (7 < local_2ec) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
        }
        FUN_00b2bd10();
        thunk_FUN_00b2ce70();
      }
    }
    else {
      if (param_3 != '\0') {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(1);
        if (cVar1 != '\0') {
          FUN_004325b6();
          local_2a0 = 2;
          FUN_0043c211();
          local_2a0._0_1_ = 3;
          FUN_00820bf9();
          FUN_008433c0();
          local_2a0._0_1_ = 4;
          FUN_008423d0();
          local_2a0._0_1_ = 5;
          FUN_008854f0();
          FUN_0083fe90();
          local_2a0._0_1_ = 4;
          FUN_00842440();
          local_2a0 = CONCAT31(local_2a0._1_3_,3);
          FUN_0081b5bc();
          FUN_0040159c();
          local_2a0 = 0xffffffff;
          FUN_0040159c();
        }
      }
      (**(code **)(local_1c0 + 0x18))();
      thunk_FUN_00b2ce70();
      cVar1 = FUN_008ff820();
      if (cVar1 != '\0') {
        thunk_FUN_0083e850();
      }
    }
  }
  ExceptionList = local_2a8;
  ___security_check_cookie_4();
  return;
}



void FUN_0090b500(undefined4 param_1,undefined4 param_2,char param_3)

{
  char cVar1;
  int iVar2;
  uint local_294;
  void *local_290;
  uint local_270;
  void *local_26c;
  void *local_250;
  undefined *puStack_24c;
  undefined4 local_248;
  undefined *local_244 [49];
  int local_180;
  code **local_17c;
  int local_168;
  undefined4 local_164;
  uint local_160;
  undefined4 local_15c;
  undefined4 local_158;
  undefined local_aa;
  uint local_a0;
  uint local_8;
  
  local_248 = 0xffffffff;
  puStack_24c = &LAB_00bd65e9;
  local_250 = ExceptionList;
  local_8 = DAT_0323f878 ^ (uint)local_244;
  ExceptionList = &local_250;
  local_180 = FUN_00b2c000();
  local_244[0] = &LAB_0090ab60;
  if (param_3 == '\0') {
    *(code **)(local_180 + 8) = FUN_009b4100;
  }
  iVar2 = __setjmp3();
  if (iVar2 == 0) {
    FUN_00b2c050();
    if (local_168 == 0) {
      local_168 = (**local_17c)();
    }
    *(undefined **)(local_168 + 8) = &LAB_0090acc0;
    *(undefined **)(local_168 + 0xc) = &LAB_0090acf0;
    *(undefined **)(local_168 + 0x10) = &LAB_0090ad20;
    *(undefined4 *)(local_168 + 0x14) = param_2;
    local_164 = FUN_00900100();
    local_160 = FUN_00900150();
    local_15c = 3;
    local_158 = 2;
    FUN_00b2cd20();
    FUN_004325b6();
    local_248 = 4;
    cVar1 = FUN_008ffc30();
    local_248 = 0xffffffff;
    _free(local_26c);
    if (7 < local_270) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_248 = 5;
      FUN_00903f50();
      FUN_00b2c5e0();
      local_248 = 0xffffffff;
      _free(local_290);
      if (7 < local_294) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    iVar2 = FUN_00904350();
    if (iVar2 != 0) {
      local_aa = (undefined)iVar2;
    }
    FUN_00b2c2c0();
    FUN_008ff850();
    if (local_a0 < local_160) {
      do {
        FUN_00b2c340();
      } while (local_a0 < local_160);
    }
    FUN_00b2c1a0();
    thunk_FUN_00b2ce70();
  }
  else {
    if (param_3 != '\0') {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_248 = 0;
        FUN_0043c211();
        local_248 = CONCAT31(local_248._1_3_,1);
        iVar2 = FUN_0084a340();
        if (iVar2 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_248._0_1_ = 2;
        FUN_008423d0();
        local_248._0_1_ = 3;
        FUN_008854f0();
        FUN_0083fe90();
        local_248._0_1_ = 2;
        FUN_00842440();
        local_248 = CONCAT31(local_248._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
    thunk_FUN_00b2ce70();
  }
  ExceptionList = local_250;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_0090b8e0(void)

{
  return &PTR_u_wxGIFHandler_0323917c;
}



void FUN_0090b8f0(undefined4 param_1)

{
  int iVar1;
  undefined local_154 [324];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd662b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_154;
  ExceptionList = &local_c;
  FUN_0098c430(DAT_0323f878 ^ (uint)&stack0xfffffea8);
  local_4 = 0;
  iVar1 = FUN_0098cf00(param_1);
  if ((iVar1 == 0) || (iVar1 == 3)) {
    local_4 = 0xffffffff;
    FUN_0098c990();
  }
  else {
    local_4 = 0xffffffff;
    FUN_0098c990();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



bool __fastcall FUN_0090b9b0(int *param_1)

{
  undefined2 in_AX;
  int *piVar1;
  int iVar2;
  undefined4 local_4;
  
  local_4 = CONCAT22((short)((uint)param_1 >> 0x10),in_AX);
  piVar1 = (int *)(**(code **)(*param_1 + 0x28))(&local_4,2);
  iVar2 = (**(code **)(*piVar1 + 0x34))();
  return iVar2 == 2;
}



undefined4 FUN_0090b9e0(void)

{
  char cVar1;
  undefined2 in_AX;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  undefined4 uStack_14;
  uint *puStack_10;
  uint uStack_c;
  uint local_4;
  
  uStack_c = 2;
  puStack_10 = &local_4;
  local_4 = 0;
  uStack_14 = 0x90b9fe;
  piVar2 = (int *)(**(code **)(*unaff_ESI + 0x28))();
  uStack_14 = 0x90ba07;
  uStack_14 = (**(code **)(*piVar2 + 0x34))();
  if (uStack_14 == 2) {
    uStack_c = uStack_c & 0xffff0000;
    piVar2 = (int *)(**(code **)(*unaff_ESI + 0x28))(&uStack_c);
    iVar3 = (**(code **)(*piVar2 + 0x34))();
    if (iVar3 == 2) {
      uStack_14 = CONCAT22(uStack_14._2_2_,in_AX);
      piVar2 = (int *)(**(code **)(*unaff_ESI + 0x28))(&uStack_14,2);
      iVar3 = (**(code **)(*piVar2 + 0x34))();
      if (iVar3 == 2) {
        cVar1 = FUN_0090b9b0();
        if (cVar1 != '\0') {
          return 1;
        }
      }
    }
  }
  return 0;
}



bool __fastcall FUN_0090ba80(int *param_1)

{
  int *piVar1;
  int iVar2;
  uint local_4;
  
  local_4 = (uint)param_1 & 0xffffff00;
  piVar1 = (int *)(**(code **)(*param_1 + 0x28))(&local_4,1);
  iVar2 = (**(code **)(*piVar1 + 0x34))();
  return iVar2 == 1;
}



undefined4 __thiscall FUN_0090bab0(int param_1_00,int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int *unaff_EBX;
  undefined *puVar3;
  int iVar4;
  int iVar5;
  undefined4 local_4;
  
  iVar4 = 1 << ((byte)param_1_00 & 0x1f);
  iVar5 = 0;
  if (0 < iVar4) {
    puVar3 = (undefined *)(param_1 + 2);
    local_4 = param_1_00;
    do {
      if (iVar5 < param_2) {
      }
      else {
        local_4 = (uint)local_4._3_1_ << 0x18;
      }
      piVar1 = (int *)(**(code **)(*unaff_EBX + 0x28))(&local_4,3);
      iVar2 = (**(code **)(*piVar1 + 0x34))();
      if (iVar2 != 3) {
        return 0;
      }
      iVar5 = iVar5 + 1;
      puVar3 = puVar3 + 3;
    } while (iVar5 < iVar4);
  }
  return 1;
}



void FUN_0090bb30(int param_1)

{
  int *piVar1;
  int unaff_EBX;
  int *unaff_ESI;
  undefined local_c;
  undefined local_b;
  undefined local_a;
  undefined local_9;
  char local_8;
  undefined local_7;
  byte local_6;
  undefined local_5;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_c;
  local_9 = unaff_EBX != -1;
  local_8 = ((char)(param_1 / 10) + (char)(param_1 >> 0x1f)) -
            (char)((longlong)param_1 * 0x66666667 >> 0x3f);
  local_6 = (unaff_EBX == -1) - 1U & (byte)unaff_EBX;
  local_7 = 0;
  local_5 = 0;
  local_c = 0x21;
  local_b = 0xf9;
  local_a = 4;
  piVar1 = (int *)(**(code **)(*unaff_ESI + 0x28))(&local_c,8);
  (**(code **)(*piVar1 + 0x34))();
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_0090bbc0(void)

{
  bool bVar1;
  int *piVar2;
  int iVar3;
  int *unaff_ESI;
  undefined4 *puStack_18;
  undefined4 uStack_14;
  undefined *puStack_10;
  undefined4 auStack_c [2];
  undefined local_4;
  undefined local_3;
  undefined local_2;
  
  auStack_c[0] = 3;
  puStack_10 = &local_4;
  local_4 = 0x21;
  local_3 = 0xff;
  local_2 = 0xb;
  uStack_14 = 0x90bbe2;
  piVar2 = (int *)(**(code **)(*unaff_ESI + 0x28))();
  uStack_14 = 0x90bbeb;
  iVar3 = (**(code **)(*piVar2 + 0x34))();
  if (iVar3 == 3) {
    uStack_14 = 0xb;
    puStack_18 = (undefined4 *)0xd49ed4;
    piVar2 = (int *)(**(code **)(*unaff_ESI + 0x28))();
    iVar3 = (**(code **)(*piVar2 + 0x34))();
    if (iVar3 == 0xb) {
      bVar1 = true;
      goto LAB_0090bc14;
    }
  }
  bVar1 = false;
LAB_0090bc14:
  auStack_c[0] = 0x103;
  if (bVar1) {
    uStack_14 = 4;
    puStack_18 = auStack_c;
    piVar2 = (int *)(**(code **)(*unaff_ESI + 0x28))();
    iVar3 = (**(code **)(*piVar2 + 0x34))();
    if (iVar3 == 4) {
      puStack_18 = (undefined4 *)((uint)puStack_18 & 0xffffff00);
      piVar2 = (int *)(**(code **)(*unaff_ESI + 0x28))(&puStack_18,1);
      iVar3 = (**(code **)(*piVar2 + 0x34))();
      if (iVar3 == 1) {
        return 1;
      }
    }
  }
  return 0;
}



bool FUN_0090bc80(int *param_1,uint param_2)

{
  byte bVar1;
  int *piVar2;
  int iVar3;
  byte *unaff_ESI;
  bool bVar4;
  
  bVar4 = true;
  if (param_2 == 0x1000) {
    bVar1 = *unaff_ESI;
    if (bVar1 != 0) {
      piVar2 = (int *)(**(code **)(*param_1 + 0x28))();
      iVar3 = (**(code **)(*piVar2 + 0x34))();
      bVar4 = bVar1 + 1 == iVar3;
    }
    param_2 = param_2 & 0xffffff00;
    piVar2 = (int *)(**(code **)(*param_1 + 0x28))(&param_2,1);
    (**(code **)(*piVar2 + 0x34))();
    return bVar4;
  }
  if (*unaff_ESI == 0xff) {
    piVar2 = (int *)(**(code **)(*param_1 + 0x28))();
    iVar3 = (**(code **)(*piVar2 + 0x34))();
    bVar4 = iVar3 == 0x100;
    *unaff_ESI = 0;
  }
  *unaff_ESI = *unaff_ESI + 1;
  unaff_ESI[*unaff_ESI] = (byte)param_2;
  return bVar4;
}



undefined4 FUN_0090bd20(int *param_1,int *param_2)

{
  if ((*param_1 == *param_2) && (param_1[1] == param_2[1])) {
    return 1;
  }
  return 0;
}



undefined4 __thiscall FUN_0090bd40(int param_1_00,int *param_1,int param_2)

{
  byte bVar1;
  char cVar2;
  short sVar3;
  int *piVar4;
  int iVar5;
  int *piVar6;
  int iVar7;
  bool bVar8;
  
  piVar6 = param_1;
  if (param_2 == 0x1000) {
    sVar3 = *(short *)(param_1_00 + 0xa0);
    while (0 < sVar3) {
      cVar2 = FUN_0090bc80(piVar6,*(uint *)(param_1_00 + 0x88) & 0xff);
      if (cVar2 == '\0') {
        return 0;
      }
      *(uint *)(param_1_00 + 0x88) = *(uint *)(param_1_00 + 0x88) >> 8;
      *(short *)(param_1_00 + 0xa0) = *(short *)(param_1_00 + 0xa0) + -8;
      sVar3 = *(short *)(param_1_00 + 0xa0);
    }
    *(undefined2 *)(param_1_00 + 0xa0) = 0;
    bVar1 = *(byte *)(param_1_00 + 0xa2);
    bVar8 = true;
    if (bVar1 != 0) {
      iVar7 = bVar1 + 1;
      piVar4 = (int *)(**(code **)(*piVar6 + 0x28))((byte *)(param_1_00 + 0xa2),iVar7);
      iVar5 = (**(code **)(*piVar4 + 0x34))();
      bVar8 = iVar7 == iVar5;
    }
    param_1 = (int *)((uint)param_1 & 0xffffff00);
    piVar6 = (int *)(**(code **)(*piVar6 + 0x28))(&param_1,1);
    (**(code **)(*piVar6 + 0x34))();
    if (!bVar8) {
      return 0;
    }
  }
  else {
    *(uint *)(param_1_00 + 0x88) =
         *(uint *)(param_1_00 + 0x88) | param_2 << ((byte)*(short *)(param_1_00 + 0xa0) & 0x1f);
    sVar3 = *(short *)(param_1_00 + 0x9a) + *(short *)(param_1_00 + 0xa0);
    *(short *)(param_1_00 + 0xa0) = sVar3;
    while (7 < sVar3) {
      cVar2 = FUN_0090bc80(piVar6,*(uint *)(param_1_00 + 0x88) & 0xff);
      if (cVar2 == '\0') {
        return 0;
      }
      *(uint *)(param_1_00 + 0x88) = *(uint *)(param_1_00 + 0x88) >> 8;
      *(short *)(param_1_00 + 0xa0) = *(short *)(param_1_00 + 0xa0) + -8;
      sVar3 = *(short *)(param_1_00 + 0xa0);
    }
  }
  if ((*(short *)(param_1_00 + 0x9c) <= *(short *)(param_1_00 + 0x98)) && (param_2 < 0x1000)) {
    *(short *)(param_1_00 + 0x9a) = *(short *)(param_1_00 + 0x9a) + 1;
    *(short *)(param_1_00 + 0x9c) = (short)(1 << ((byte)*(undefined2 *)(param_1_00 + 0x9a) & 0x1f));
  }
  return 1;
}



undefined4 __thiscall FUN_0090bec0(int param_1_00,int *param_1,int param_2)

{
  char cVar1;
  short sVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  
  *(short *)(param_1_00 + 0x9a) = (short)(param_2 + 1);
  sVar2 = (short)(1 << ((byte)param_2 & 0x1f));
  *(short *)(param_1_00 + 0x96) = sVar2;
  *(short *)(param_1_00 + 0x94) = sVar2 + 1;
  *(short *)(param_1_00 + 0x98) = sVar2 + 2;
  *(undefined2 *)(param_1_00 + 0x9e) = 0x1001;
  iVar5 = *(int *)(param_1_00 + 0x90);
  *(short *)(param_1_00 + 0x9c) = (short)(1 << ((byte)(param_2 + 1) & 0x1f));
  *(undefined2 *)(param_1_00 + 0xa0) = 0;
  *(undefined4 *)(param_1_00 + 0x88) = 0;
  *(undefined *)(param_1_00 + 0xa2) = 0;
  iVar3 = 0x1fff;
  do {
    iVar3 = iVar3 + -1;
    *(undefined4 *)(iVar5 + 4 + iVar3 * 4) = 0xffffffff;
  } while (-1 < iVar3);
  piVar4 = (int *)(**(code **)(*param_1 + 0x28))(&param_2,1);
  iVar5 = (**(code **)(*piVar4 + 0x34))();
  if (iVar5 == 1) {
    cVar1 = FUN_0090bd40(param_1,(int)*(short *)(param_1_00 + 0x96));
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



uint __fastcall FUN_0090bf90(int param_1)

{
  int iVar1;
  void *in_EAX;
  void *_Dst;
  int iVar2;
  
  if (*(int *)(param_1 + 0x90) == 0) {
    _Dst = operator_new(0x8000);
    if (_Dst == (void *)0x0) {
      _Dst = (void *)0x0;
      in_EAX = (void *)0x0;
    }
    else {
      in_EAX = _memset(_Dst,0,0x8000);
    }
    *(void **)(param_1 + 0x90) = _Dst;
  }
  iVar1 = *(int *)(param_1 + 0x90);
  if (iVar1 == 0) {
    return (uint)in_EAX & 0xffffff00;
  }
  iVar2 = 0x1fff;
  do {
    iVar2 = iVar2 + -1;
    *(undefined4 *)(iVar1 + 4 + iVar2 * 4) = 0xffffffff;
  } while (-1 < iVar2);
  return CONCAT31((int3)((uint)iVar2 >> 8),1);
}



void __thiscall FUN_0090bff0(int param_1_00,uint param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  iVar1 = *(int *)(param_1_00 + 0x90);
  uVar3 = (param_1 >> 0xc ^ param_1) & 0x1fff;
  uVar2 = *(uint *)(iVar1 + uVar3 * 4);
  while ((uVar2 & 0xfffff000) != 0xfffff000) {
    uVar3 = uVar3 + 1 & 0x1fff;
    uVar2 = *(uint *)(iVar1 + uVar3 * 4);
  }
  *(uint *)(iVar1 + uVar3 * 4) = param_2 & 0xfff | param_1 << 0xc;
  return;
}



undefined FUN_0090c050(undefined4 param_1,int param_2,int *param_3,int *param_4)

{
  undefined2 *puVar1;
  char cVar2;
  char cVar3;
  char cVar4;
  int *piVar5;
  int iVar6;
  char *pcVar7;
  int iVar8;
  int iVar9;
  undefined2 uStack_4;
  
  cVar2 = FUN_008ffbb0();
  if (cVar2 == '\0') {
    return 0;
  }
  piVar5 = (int *)FUN_008ffbe0();
  iVar6 = (**(code **)(*piVar5 + 0x2c))();
  iVar9 = 0;
  if (0 < iVar6) {
    iVar8 = param_2 + 1;
    do {
      cVar2 = FUN_00973f80(iVar9,iVar8 + -1,iVar8,iVar8 + 1);
      if (cVar2 == '\0') break;
      iVar9 = iVar9 + 1;
      iVar8 = iVar8 + 3;
    } while (iVar9 < iVar6);
  }
  cVar2 = FUN_008ffb60();
  if (cVar2 == '\0') {
    *param_4 = -1;
  }
  else {
    cVar2 = FUN_008ffa10();
    cVar3 = FUN_008ffa60();
    uStack_4 = CONCAT11(cVar3,cVar2);
    cVar4 = FUN_008ffab0();
    iVar9 = 0;
    if (0 < iVar6) {
      pcVar7 = (char *)(param_2 + 2);
      do {
        if (((cVar2 == pcVar7[-2]) && (cVar3 == pcVar7[-1])) && (cVar4 == *pcVar7))
        goto LAB_0090c101;
        iVar9 = iVar9 + 1;
        pcVar7 = pcVar7 + 3;
      } while (iVar9 < iVar6);
    }
    iVar9 = -1;
LAB_0090c101:
    *param_4 = iVar9;
    if ((iVar9 == -1) && (iVar6 < 0x100)) {
      *param_4 = iVar6;
      puVar1 = (undefined2 *)(param_2 + iVar6 * 3);
      *puVar1 = uStack_4;
      *(char *)(puVar1 + 1) = cVar4;
      *param_3 = iVar6 + 1;
      return 1;
    }
  }
  *param_3 = iVar6;
  return 1;
}



undefined4 FUN_0090c064(void)

{
  undefined2 *puVar1;
  char cVar2;
  char cVar3;
  char cVar4;
  int *piVar5;
  int iVar6;
  char *pcVar7;
  int iVar8;
  int iVar9;
  undefined2 param_1;
  int in_stack_00000010;
  int *in_stack_00000014;
  int *in_stack_00000018;
  
  piVar5 = (int *)FUN_008ffbe0();
  iVar6 = (**(code **)(*piVar5 + 0x2c))();
  iVar9 = 0;
  if (0 < iVar6) {
    iVar8 = in_stack_00000010 + 1;
    do {
      cVar2 = FUN_00973f80(iVar9,iVar8 + -1,iVar8,iVar8 + 1);
      if (cVar2 == '\0') break;
      iVar9 = iVar9 + 1;
      iVar8 = iVar8 + 3;
    } while (iVar9 < iVar6);
  }
  cVar2 = FUN_008ffb60();
  if (cVar2 == '\0') {
    *in_stack_00000018 = -1;
  }
  else {
    cVar2 = FUN_008ffa10();
    cVar3 = FUN_008ffa60();
    param_1 = CONCAT11(cVar3,cVar2);
    cVar4 = FUN_008ffab0();
    iVar9 = 0;
    if (0 < iVar6) {
      pcVar7 = (char *)(in_stack_00000010 + 2);
      do {
        if (((cVar2 == pcVar7[-2]) && (cVar3 == pcVar7[-1])) && (cVar4 == *pcVar7))
        goto LAB_0090c101;
        iVar9 = iVar9 + 1;
        pcVar7 = pcVar7 + 3;
      } while (iVar9 < iVar6);
    }
    iVar9 = -1;
LAB_0090c101:
    *in_stack_00000018 = iVar9;
    if ((iVar9 == -1) && (iVar6 < 0x100)) {
      *in_stack_00000018 = iVar6;
      puVar1 = (undefined2 *)(in_stack_00000010 + iVar6 * 3);
      *puVar1 = param_1;
      *(char *)(puVar1 + 1) = cVar4;
      *in_stack_00000014 = iVar6 + 1;
      return 1;
    }
  }
  *in_stack_00000014 = iVar6;
  return 1;
}



char FUN_0090c160(char param_1,undefined4 param_2)

{
  bool bVar1;
  char cVar2;
  int *in_EAX;
  uint uVar3;
  int *piVar4;
  int iVar5;
  int unaff_EDI;
  
  iVar5 = 1;
  uVar3 = 2;
  do {
    if (unaff_EDI <= (int)uVar3) break;
    iVar5 = iVar5 + 1;
    uVar3 = uVar3 << 1 | (uint)((int)uVar3 < 0);
  } while (iVar5 < 9);
  piVar4 = (int *)(**(code **)(*in_EAX + 0x28))("GIF89a",6);
  iVar5 = (**(code **)(*piVar4 + 0x34))();
  if (iVar5 == 6) {
    piVar4 = (int *)(**(code **)(*in_EAX + 0x28))(&stack0xfffffff0,2);
    iVar5 = (**(code **)(*piVar4 + 0x34))();
    if (iVar5 != 2) goto LAB_0090c1f9;
    piVar4 = (int *)(**(code **)(*in_EAX + 0x28))(&stack0xfffffff0,2);
    iVar5 = (**(code **)(*piVar4 + 0x34))();
    if (iVar5 != 2) goto LAB_0090c1f9;
    bVar1 = true;
  }
  else {
LAB_0090c1f9:
    bVar1 = false;
  }
  if (bVar1) {
    piVar4 = (int *)(**(code **)(*in_EAX + 0x28))(&stack0xfffffff4,3);
    iVar5 = (**(code **)(*piVar4 + 0x34))();
    if (iVar5 == 3) {
      cVar2 = FUN_0090bab0(param_2);
      if (cVar2 != '\0') {
        cVar2 = '\x01';
        goto LAB_0090c255;
      }
    }
  }
  cVar2 = '\0';
LAB_0090c255:
  if (param_1 != '\0') {
    if (cVar2 != '\0') {
      cVar2 = FUN_0090bbc0();
      if (cVar2 != '\0') {
        return '\x01';
      }
    }
    cVar2 = '\0';
  }
  return cVar2;
}



undefined4 __thiscall FUN_0090c280(int param_1_00,undefined4 param_1,byte *param_2,int param_3)

{
  short sVar1;
  int iVar2;
  uint uVar3;
  char cVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint local_4;
  
  sVar1 = *(short *)(param_1_00 + 0x9e);
  if (sVar1 != 0x1001) {
    local_4 = (uint)sVar1;
  }
  else {
    local_4 = (uint)*param_2;
  }
  uVar8 = (uint)(sVar1 == 0x1001);
joined_r0x0090c2b7:
  do {
    if (param_3 <= (int)uVar8) {
      *(short *)(param_1_00 + 0x9e) = (short)local_4;
      if ((*(int *)(param_1_00 + 0x8c) == 0) &&
         (((cVar4 = FUN_0090bd40(param_1,local_4), cVar4 == '\0' ||
           (cVar4 = FUN_0090bd40(param_1,(int)*(short *)(param_1_00 + 0x94)), cVar4 == '\0')) ||
          (cVar4 = FUN_0090bd40(param_1,0x1000), cVar4 == '\0')))) {
        return 0;
      }
      return 1;
    }
    iVar2 = *(int *)(param_1_00 + 0x90);
    uVar7 = (uint)param_2[uVar8];
    uVar9 = local_4 * 0x100 + uVar7;
    uVar5 = (uVar9 >> 0xc ^ uVar9) & 0x1fff;
    uVar8 = uVar8 + 1;
    uVar3 = *(uint *)(iVar2 + uVar5 * 4);
    while (uVar3 >> 0xc != 0xfffff) {
      if (uVar9 == uVar3 >> 0xc) {
        local_4 = *(uint *)(iVar2 + uVar5 * 4) & 0xfff;
        goto joined_r0x0090c2b7;
      }
      uVar5 = uVar5 + 1 & 0x1fff;
      uVar3 = *(uint *)(iVar2 + uVar5 * 4);
    }
    cVar4 = FUN_0090bd40(param_1,local_4);
    if (cVar4 == '\0') {
      return 0;
    }
    sVar1 = *(short *)(param_1_00 + 0x98);
    local_4 = uVar7;
    if (sVar1 < 0xfff) {
      *(short *)(param_1_00 + 0x98) = sVar1 + 1;
      FUN_0090bff0(uVar9,(int)sVar1);
    }
    else {
      cVar4 = FUN_0090bd40(param_1,(int)*(short *)(param_1_00 + 0x96));
      if (cVar4 == '\0') {
        return 0;
      }
      *(undefined2 *)(param_1_00 + 0x9a) = 9;
      *(undefined2 *)(param_1_00 + 0x9c) = 0x200;
      iVar2 = *(int *)(param_1_00 + 0x90);
      *(short *)(param_1_00 + 0x98) = *(short *)(param_1_00 + 0x94) + 1;
      iVar6 = 0x1fff;
      do {
        iVar6 = iVar6 + -1;
        *(undefined4 *)(iVar2 + 4 + iVar6 * 4) = 0xffffffff;
      } while (-1 < iVar6);
    }
  } while( true );
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1a4);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00431eaa(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined __fastcall FUN_0090c4a0(int param_1)

{
  uint uVar1;
  undefined uVar2;
  int *piVar3;
  int iVar4;
  undefined4 uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  int *unaff_EDI;
  int *piStack_1c;
  undefined local_18;
  undefined local_17;
  void *pvStack_14;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6670;
  local_c = ExceptionList;
  if (*(int *)(param_1 + 0x14) == 0) {
    return 1;
  }
  local_18 = 0x21;
  local_17 = 0xfe;
  ExceptionList = &local_c;
  piVar3 = (int *)(**(code **)(*unaff_EDI + 0x28))
                            (&local_18,2,DAT_0323f878 ^ (uint)&stack0xffffffd8);
  iVar4 = (**(code **)(*piVar3 + 0x34))();
  if (iVar4 == 2) {
    if (DAT_032bd4d4 == 0) {
      DAT_032bd4d4 = FUN_00861440();
    }
    uVar5 = FUN_00432413(&local_18,DAT_032bd4d4);
    local_c = (void *)0x0;
    FUN_00432305(uVar5);
    local_c = (void *)CONCAT31(local_c._1_3_,2);
    thunk_FUN_0043c1dd();
    uVar1 = piStack_1c[1];
    uVar8 = 0;
    while( true ) {
      uVar7 = uVar1 - uVar8;
      if (0xfe < uVar7) {
        uVar7 = 0xff;
      }
      piVar3 = (int *)(**(code **)(*unaff_EDI + 0x28))(&stack0xffffffdc,1);
      iVar4 = (**(code **)(*piVar3 + 0x34))();
      if (iVar4 != 1) break;
      piVar3 = (int *)(**(code **)(*unaff_EDI + 0x28))(*piStack_1c + uVar8,uVar7);
      uVar6 = (**(code **)(*piVar3 + 0x34))();
      if (uVar7 != uVar6) break;
      uVar8 = uVar8 + uVar7;
      if (uVar1 <= uVar8) {
        uVar2 = FUN_0090ba80();
        local_c = (void *)0xffffffff;
        thunk_FUN_0043c1dd();
        ExceptionList = pvStack_14;
        return uVar2;
      }
    }
    local_c = (void *)0xffffffff;
    thunk_FUN_0043c1dd();
  }
  ExceptionList = pvStack_14;
  return 0;
}



uint __thiscall FUN_0090c610(int *param_1_00,int *param_1)

{
  uint uVar1;
  undefined8 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4070;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = (**(code **)(*param_1 + 0x1c))();
  if ((char)uVar1 != '\0') {
    (**(code **)(*param_1 + 0x40))();
    (**(code **)(*param_1_00 + 0x28))();
    uVar2 = (**(code **)(*param_1 + 0x3c))();
    uVar1 = (uint)uVar2 & (uint)((ulonglong)uVar2 >> 0x20);
    if (uVar1 != 0xffffffff) {
      ExceptionList = local_c;
      return CONCAT31((int3)(uVar1 >> 8),param_1._0_1_);
    }
    FUN_0043c211(&DAT_00d25fa0);
    uVar1 = FUN_00846b30(6);
    if ((char)uVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      uVar1 = FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return uVar1 & 0xffffff00;
}



undefined FUN_0090c750(undefined4 param_1,undefined4 param_2,char param_3)

{
  char cVar1;
  undefined uVar2;
  void *pvVar3;
  int *piVar4;
  int iVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd674b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar3 = operator_new(0x144);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    piVar4 = (int *)0x0;
  }
  else {
    piVar4 = (int *)FUN_0098c430();
  }
  local_4 = 0xffffffff;
  iVar5 = FUN_0098cf00();
  if (iVar5 != 0) {
    if (iVar5 != 3) {
      if (param_3 != '\0') {
        if (iVar5 == 1) {
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(1);
          if (cVar1 == '\0') goto LAB_0090cac0;
          FUN_004325b6();
          local_4 = 1;
          FUN_0043c211();
          local_4._0_1_ = 2;
          FUN_00820bf9();
          FUN_008433c0();
          local_4._0_1_ = 3;
          FUN_008423d0();
          local_4._0_1_ = 4;
          FUN_00840b80();
          local_4._0_1_ = 3;
          FUN_00842440();
          local_4 = CONCAT31(local_4._1_3_,2);
          FUN_0081b5bc();
          FUN_0040159c();
        }
        else if (iVar5 == 2) {
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(1);
          if (cVar1 == '\0') goto LAB_0090cac0;
          FUN_004325b6();
          local_4 = 5;
          FUN_0043c211();
          local_4._0_1_ = 6;
          FUN_00820bf9();
          FUN_008433c0();
          local_4._0_1_ = 7;
          FUN_008423d0();
          local_4._0_1_ = 8;
          FUN_00840b80();
          local_4._0_1_ = 7;
          FUN_00842440();
          local_4 = CONCAT31(local_4._1_3_,6);
          FUN_0081b5bc();
          FUN_0040159c();
        }
        else {
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(1);
          if (cVar1 == '\0') goto LAB_0090cac0;
          FUN_004325b6();
          local_4 = 9;
          FUN_0043c211();
          local_4._0_1_ = 10;
          FUN_00820bf9();
          FUN_008433c0();
          local_4._0_1_ = 0xb;
          FUN_008423d0();
          local_4._0_1_ = 0xc;
          FUN_00840b80();
          local_4._0_1_ = 0xb;
          FUN_00842440();
          local_4 = CONCAT31(local_4._1_3_,10);
          FUN_0081b5bc();
          FUN_0040159c();
        }
        local_4 = 0xffffffff;
        FUN_0040159c();
      }
LAB_0090cac0:
      if (piVar4 != (int *)0x0) {
        (**(code **)*piVar4)();
      }
      ExceptionList = local_c;
      return 0;
    }
    if (param_3 != '\0') {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_4 = 0xd;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,0xe);
        iVar5 = FUN_0084a340();
        if (iVar5 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 0xf;
        FUN_008423d0();
        local_4._0_1_ = 0x10;
        FUN_008854f0();
        FUN_0083fe90();
        local_4._0_1_ = 0xf;
        FUN_00842440();
        local_4 = CONCAT31(local_4._1_3_,0xe);
        FUN_0081b5bc();
        FUN_0040159c();
        local_4 = 0xffffffff;
        FUN_0040159c();
      }
    }
  }
  uVar2 = (**(code **)(*piVar4 + 0x10))();
  (**(code **)*piVar4)();
  ExceptionList = local_c;
  return uVar2;
}



void FUN_0090cc40(undefined4 param_1)

{
  undefined local_154 [324];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd677b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_154;
  ExceptionList = &local_c;
  FUN_0098c430(DAT_0323f878 ^ (uint)&stack0xfffffea4);
  local_4 = 0;
  FUN_0090c610(param_1);
  local_4 = 0xffffffff;
  FUN_0098c990();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



uint FUN_0090cce0(undefined4 param_1,int *param_2,undefined4 param_3,char param_4,undefined4 param_5
                 ,undefined4 param_6,byte *param_7,int param_8)

{
  char cVar1;
  byte bVar2;
  uint uVar3;
  int *piVar4;
  undefined4 uVar5;
  byte *pbVar6;
  byte *pbVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  undefined auStack_154 [12];
  undefined4 uStack_148;
  char *pcStack_144;
  char *pcStack_140;
  char *pcStack_13c;
  char *pcStack_138;
  byte local_11c [4];
  uint local_118;
  uint local_114;
  int local_110;
  undefined *puStack_10c;
  int local_108;
  int local_104;
  undefined local_100 [4];
  uint uStack_fc;
  undefined4 uStack_ec;
  uint uStack_e8;
  void *pvStack_e4;
  uint uStack_b0;
  void *pvStack_ac;
  undefined auStack_a4 [152];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd681a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_118 = 0;
  pcStack_138 = (char *)0x90cd2a;
  uVar3 = FUN_00902b10();
  if ((uVar3 == 0) || (0x100 < uVar3)) goto LAB_0090d0c5;
  uVar3 = FUN_00900100();
  local_114 = uVar3;
  local_108 = FUN_00900150();
  uVar8 = uVar3 & 0x80000001;
  if ((int)uVar8 < 0) {
    uVar8 = (uVar8 - 1 | 0xfffffffe) + 1;
  }
  local_104 = (uVar8 != 0) + uVar3;
  if (param_4 == '\0') {
LAB_0090cdb4:
    pcStack_138 = (char *)0x90cdc2;
    FUN_004325b6();
    pcStack_138 = local_100;
    local_4 = 0;
    local_118 = 1;
    pcStack_13c = (char *)0x90cde3;
    FUN_00903eb0();
    local_4 = 1;
    local_118 = 3;
    uVar3 = FUN_0090c4a0();
    if ((char)uVar3 == '\0') goto LAB_0090ce6e;
    pcStack_138 = (char *)0x90ce1a;
    uVar3 = FUN_0090bb30();
    if ((char)uVar3 == '\0') goto LAB_0090ce6e;
    pcStack_138 = (char *)local_11c;
    local_11c[0] = 0x2c;
    pcStack_13c = (char *)0x90ce36;
    piVar4 = (int *)(**(code **)(*param_2 + 0x28))();
    pcStack_13c = (char *)0x90ce3f;
    uVar3 = (**(code **)(*piVar4 + 0x34))();
    if (uVar3 != 1) goto LAB_0090ce6e;
    pcStack_138 = (char *)0x90ce52;
    uVar3 = FUN_0090b9e0();
    if ((char)uVar3 == '\0') goto LAB_0090ce6e;
    local_11c[0] = 1;
  }
  else {
    pcStack_138 = (char *)param_6;
    pcStack_144 = (char *)0x90cda0;
    pcStack_140 = (char *)uVar3;
    pcStack_13c = (char *)local_108;
    uVar3 = FUN_0090c160();
    if ((char)uVar3 != '\0') goto LAB_0090cdb4;
LAB_0090ce6e:
    local_11c[0] = 0;
  }
  uVar8 = local_118;
  if ((local_118 & 2) != 0) {
    uVar8 = local_118 & 0xfffffffd;
    pcStack_138 = (char *)0x90ce89;
    _free(pvStack_e4);
    if (7 < uStack_e8) {
                    // WARNING: Subroutine does not return
      pcStack_138 = &UNK_0090ce9d;
      FUN_00a3f6a1();
    }
    uStack_e8 = 7;
    uStack_ec = 0;
    uStack_fc = uStack_fc & 0xffff0000;
  }
  local_4 = 0xffffffff;
  if ((uVar8 & 1) != 0) {
    pcStack_138 = (char *)0x90ced4;
    _free(pvStack_ac);
    if (7 < uStack_b0) {
                    // WARNING: Subroutine does not return
      pcStack_138 = &UNK_0090ceeb;
      FUN_00a3f6a1();
    }
  }
  if (param_4 == '\0') {
    iVar10 = 1;
    do {
      if (param_8 <= 1 << ((byte)iVar10 & 0x1f)) break;
      iVar10 = iVar10 + 1;
    } while (iVar10 < 9);
    bVar2 = (char)iVar10 - 1;
    uVar3 = CONCAT31((int3)(uVar3 >> 8),bVar2) & 0xffffff01;
    bVar2 = ((byte)uVar3 | 0xfc) << 5 | bVar2 & 0x3f;
    uVar3 = CONCAT31((int3)(uVar3 >> 8),bVar2);
    if (local_11c[0] == 0) goto LAB_0090d0c5;
    pcStack_138 = (char *)local_11c;
    pcStack_13c = (char *)0x90cf81;
    local_11c[0] = bVar2;
    piVar4 = (int *)(**(code **)(*param_2 + 0x28))();
    pcStack_13c = (char *)0x90cf8a;
    uVar3 = (**(code **)(*piVar4 + 0x34))();
    if (uVar3 != 1) goto LAB_0090d0c5;
    pcStack_138 = (char *)param_7;
    pcStack_13c = (char *)0x90cfa5;
    uVar3 = FUN_0090bab0();
    if ((char)uVar3 == '\0') goto LAB_0090d0c5;
  }
  else {
    if (local_11c[0] == 0) goto LAB_0090d0c5;
    pcStack_138 = (char *)local_11c;
    local_11c[0] = 0;
    pcStack_13c = (char *)0x90cf1d;
    piVar4 = (int *)(**(code **)(*param_2 + 0x28))();
    pcStack_13c = (char *)0x90cf26;
    uVar3 = (**(code **)(*piVar4 + 0x34))();
    if (uVar3 != 1) goto LAB_0090d0c5;
  }
  bVar2 = 1;
  cVar1 = FUN_0090bf90();
  if (cVar1 != '\0') {
    pbVar6 = (byte *)FUN_008ff850();
    pcStack_138 = (char *)0x90d0df;
    local_118 = FUN_00823c23();
    iVar10 = local_110;
    pcStack_138 = (char *)param_2;
    pcStack_13c = (char *)0x90d0fb;
    FUN_0090bec0();
    *(int *)(iVar10 + 0x8c) = local_104 * local_108;
    puStack_10c = (undefined *)0x0;
    if (0 < local_108) {
      do {
        *(int *)(iVar10 + 0x8c) = *(int *)(iVar10 + 0x8c) - local_104;
        iVar10 = 0;
        if (0 < (int)local_114) {
          do {
            iVar9 = 0;
            if (0 < param_8) {
              pbVar7 = param_7 + 2;
              do {
                if (((*pbVar6 == pbVar7[-2]) && (pbVar6[1] == pbVar7[-1])) && (pbVar6[2] == *pbVar7)
                   ) goto LAB_0090d16b;
                iVar9 = iVar9 + 1;
                pbVar7 = pbVar7 + 3;
              } while (iVar9 < param_8);
            }
            iVar9 = -1;
LAB_0090d16b:
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar9 == -1)) {
              pcStack_138 = "index != (-1)";
              pcStack_13c = "wxGIFHandler::DoSaveFile";
              pcStack_140 = (char *)0x11c;
              pcStack_144 = "..\\..\\src\\common\\imaggif.cpp";
              uStack_148 = 0x90d194;
              FUN_008402e0();
            }
            *(char *)(local_118 + iVar10) = (char)iVar9;
            iVar10 = iVar10 + 1;
            pbVar6 = pbVar6 + 3;
          } while (iVar10 < (int)local_114);
        }
        pcStack_138 = (char *)local_118;
        pcStack_13c = (char *)param_2;
        pcStack_140 = (char *)0x90d1c3;
        bVar2 = FUN_0090c280();
        iVar10 = local_110;
      } while ((bVar2 != 0) &&
              (puStack_10c = (undefined *)((int)puStack_10c + 1), (int)puStack_10c < local_108));
    }
    pcStack_138 = (char *)0x90d1ea;
    FUN_00a3f66c();
    if (*(int *)(iVar10 + 0x90) == 0) {
      ExceptionList = local_c;
      return (uint)bVar2;
    }
                    // WARNING: Subroutine does not return
    pcStack_138 = &UNK_0090d1fd;
    FUN_00a3f6a1();
  }
  puStack_10c = auStack_154;
  FUN_0043c211(&DAT_00d25fa0);
  uVar3 = FUN_00846b30(1);
  if ((char)uVar3 != '\0') {
    pcStack_138 = (char *)0x90cffb;
    FUN_004325b6();
    local_4 = 2;
    pcStack_138 = (char *)0x90d017;
    FUN_0043c211();
    pcStack_138 = auStack_a4;
    local_4._0_1_ = 3;
    pcStack_13c = (char *)0x90d034;
    FUN_00820bf9();
    pcStack_138 = (char *)0x90d041;
    FUN_008433c0();
    pcStack_138 = "wxGIFHandler::DoSaveFile";
    pcStack_13c = (char *)0x108;
    pcStack_140 = "..\\..\\src\\common\\imaggif.cpp";
    pcStack_144 = (char *)0x1;
    local_4._0_1_ = 4;
    uStack_148 = 0x90d06c;
    uVar5 = FUN_008423d0();
    local_4._0_1_ = 5;
    FUN_008854f0();
    pcStack_13c = (char *)0x90d086;
    pcStack_138 = (char *)uVar5;
    FUN_0083fe90();
    local_4._0_1_ = 4;
    FUN_00842440();
    local_4 = CONCAT31(local_4._1_3_,3);
    FUN_0081b5bc();
    FUN_0040159c();
    uVar3 = FUN_0040159c();
  }
LAB_0090d0c5:
  ExceptionList = local_c;
  return uVar3 & 0xffffff00;
}



undefined4 FUN_0090d230(undefined4 param_1,int *param_2,undefined4 param_3)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  undefined local_30c [4];
  undefined4 local_308;
  undefined4 local_304;
  undefined local_300 [768];
  
  cVar1 = FUN_0090c050(param_1,local_300,&local_304,&local_308);
  if (cVar1 != '\0') {
    cVar1 = FUN_0090cce0(param_1,param_2,param_3,1,0,0,local_300,local_304,local_308);
    if (cVar1 != '\0') {
      local_30c[0] = 0x3b;
      piVar2 = (int *)(**(code **)(*param_2 + 0x28))(local_30c,1);
      iVar3 = (**(code **)(*piVar2 + 0x34))();
      if (iVar3 == 1) {
        return 1;
      }
    }
  }
  return 0;
}



undefined4 * __thiscall FUN_0090d2d0(undefined4 *param_1_00,int *param_1,undefined4 *param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined auStack_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd684b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  *param_1_00 = wxMemoryFSFile::vftable;
  param_1_00[10] = 7;
  param_1_00[9] = 0;
  *(undefined2 *)(param_1_00 + 5) = 0;
  param_1_00[0xb] = 0;
  param_1_00[0xe] = 0;
  param_1_00[0xf] = 0x80000000;
  local_4 = 0;
  uVar2 = (**(code **)(*param_1 + 0x14))(uVar1);
  param_1_00[3] = uVar2;
  uVar2 = FUN_00823c23(uVar2);
  param_1_00[2] = uVar2;
  FUN_00874f00(uVar2,param_1_00[3]);
  if (param_1_00 + 4 != param_3) {
    FID_conflict_assign(param_3,0,0xffffffff);
  }
  uVar2 = FUN_0086cc50(auStack_30);
  FUN_0086cca0(uVar2);
  param_1_00[0xe] = 0;
  param_1_00[0xf] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_0090d3b0(undefined4 param_1,int *param_2)

{
  char cVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int iVar5;
  undefined auStack_b8 [172];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd68ba;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_00869e60();
  if (cVar1 != '\0') {
    FUN_00874e00();
    local_4 = 0;
    cVar1 = FUN_008ff820();
    if ((cVar1 == '\0') || (cVar1 = (**(code **)(*param_2 + 0x24))(), cVar1 == '\0')) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_4._0_1_ = 2;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,3);
        iVar5 = FUN_0084a340();
        if (iVar5 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 4;
        FUN_004325a0(param_1);
        local_4._0_1_ = 5;
        FUN_008423d0(1,"..\\..\\src\\common\\fs_mem.cpp",0x10a,"wxMemoryFSHandler::AddFile",
                     &DAT_00d25fa0);
        local_4._0_1_ = 7;
        FUN_00848780(auStack_b8);
        local_4._0_1_ = 4;
        FUN_00842440();
        local_4 = CONCAT31(local_4._1_3_,3);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
    else {
      pvVar2 = operator_new(0x40);
      local_4._0_1_ = 1;
      if (pvVar2 == (void *)0x0) {
        uVar3 = 0;
      }
      else {
        FUN_009008b0();
        uVar3 = FUN_0090d2d0();
      }
      local_4 = (uint)local_4._1_3_ << 8;
      puVar4 = (undefined4 *)FUN_008c39e0();
      *puVar4 = uVar3;
    }
    local_4 = 0xffffffff;
    FUN_00874be0();
    ExceptionList = local_c;
    return;
  }
  ExceptionList = local_c;
  return;
}



int __fastcall FUN_0090d5e0(int param_1)

{
  return param_1 + 0xfc;
}



undefined4 * __thiscall FUN_0090d5f0(undefined4 *param_1_00,byte param_1)

{
  *(byte *)(param_1_00 + 0x41) = *(byte *)(param_1_00 + 0x41) & 0xfe;
  *(byte *)(param_1_00 + 4) = *(byte *)(param_1_00 + 4) | 4;
  *param_1_00 = wxDCTempImpl::vftable;
  param_1_00[0x42] = 0;
  param_1_00[0x24] = 0;
  param_1_00[0x22] = 0;
  FUN_009504a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int FUN_0090d640(void)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_0098e820();
  if (iVar1 != 0) {
    iVar2 = (**(code **)(iVar1 + 0x94))();
    if (iVar2 != 0) {
      iVar2 = (**(code **)(iVar1 + 0x90))();
      if (iVar2 != 0) {
        return iVar1;
      }
    }
  }
  return 0;
}



void __fastcall FUN_0090d670(int *param_1)

{
  int iVar1;
  
  if (*param_1 != 0) {
    iVar1 = FUN_0098e820();
    (**(code **)(iVar1 + 4))(*param_1);
  }
  return;
}



void FUN_0090d690(LPPOINT param_1)

{
  BOOL BVar1;
  DWORD DVar2;
  
  BVar1 = GetCursorPos(param_1);
  if (BVar1 == 0) {
    DVar2 = GetMessagePos();
    param_1->x = (int)(short)DVar2;
    param_1->y = (int)(short)(DVar2 >> 0x10);
  }
  return;
}



undefined ** FUN_0090d6c0(void)

{
  return &PTR_PTR_DAT_00d4a140;
}



undefined * FUN_0090d6d0(void)

{
  return &DAT_032bf69c;
}



void __fastcall FUN_0090d6e0(int param_1)

{
  *(byte *)(param_1 + 0x144) = *(byte *)(param_1 + 0x144) & 0xfc;
  *(undefined4 *)(param_1 + 0x140) = 0;
  *(undefined4 *)(param_1 + 0x13c) = 0;
  *(undefined4 *)(param_1 + 0x148) = 0;
  *(undefined4 *)(param_1 + 0x14c) = 0;
  *(undefined4 *)(param_1 + 0x150) = 0;
  *(undefined4 *)(param_1 + 0x154) = DAT_03238d0c;
  *(undefined4 *)(param_1 + 0x158) = DAT_03238d10;
  *(undefined4 *)(param_1 + 0x15c) = DAT_03238d04;
  *(undefined4 *)(param_1 + 0x160) = DAT_03238d08;
  return;
}



void FUN_0090d740(void)

{
  FUN_008fb5e0(L"wxWindow",0xf,0);
  return;
}



void __fastcall thunk_FUN_0091abd0(int *param_1)

{
  char cVar1;
  
  cVar1 = FUN_0092afb0(param_1);
  if (cVar1 != '\0') {
    (**(code **)(*param_1 + 0x19c))(2);
  }
  return;
}



void __thiscall FUN_0090d800(int param_1_00,undefined4 param_1)

{
  FUN_0091ab10(param_1);
  if (*(int *)(param_1_00 + 200) != 0) {
    FUN_0098f6b0(param_1_00);
  }
  return;
}



void FUN_0090d830(void)

{
  BOOL BVar1;
  tagMSG local_1c;
  
  BVar1 = PeekMessageW(&local_1c,(HWND)0x0,0x111,0x111,1);
  if (BVar1 != 0) {
    while (local_1c.message != 0x12) {
      TranslateMessage(&local_1c);
      DispatchMessageW(&local_1c);
      BVar1 = PeekMessageW(&local_1c,(HWND)0x0,0x111,0x111,1);
      if (BVar1 == 0) {
        return;
      }
    }
    PostQuitMessage(0);
  }
  return;
}



void __thiscall FUN_0090d8b0(undefined4 param_1_00,undefined4 param_1)

{
  FUN_00932870(param_1_00,param_1);
  return;
}



void FUN_0090d8d0(undefined4 param_1,undefined4 param_2,undefined2 *param_3,undefined4 *param_4,
                 undefined2 *param_5)

{
  *param_3 = (short)param_1;
  *param_4 = param_2;
  *param_5 = (short)((uint)param_1 >> 0x10);
  return;
}



void FUN_0090d900(undefined4 param_1,undefined4 param_2,undefined2 *param_3,undefined2 *param_4,
                 undefined4 *param_5)

{
  *param_3 = (short)param_1;
  *param_4 = (short)((uint)param_1 >> 0x10);
  *param_5 = param_2;
  return;
}



void FUN_0090d930(undefined4 param_1,undefined4 param_2,undefined4 *param_3,undefined4 *param_4)

{
  *param_4 = param_2;
  *param_3 = param_1;
  return;
}



undefined4 __thiscall FUN_0090d950(undefined4 param_1_00,undefined4 param_1)

{
  DAT_032bf654 = param_1;
  return param_1_00;
}



void FUN_0090d960(void)

{
  DAT_032bf654 = 0;
  return;
}



undefined4 __thiscall
FUN_0090d970(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 unaff_EBX;
  
  uVar2 = param_3;
  cVar1 = (**(code **)(*param_1_00 + 0x2f4))(&param_3,param_1,param_2,param_3);
  if (cVar1 == '\0') {
    uVar2 = (**(code **)(*param_1_00 + 0x2fc))(param_1,param_2,uVar2);
    return uVar2;
  }
  return unaff_EBX;
}



void FUN_0090d9c0(HWND param_1,LONG *param_2,int *param_3,int *param_4)

{
  HDC hdc;
  HGDIOBJ h;
  HGDIOBJ h_00;
  tagTEXTMETRICW tStack_3c;
  
  hdc = GetDC(param_1);
  h_00 = (HGDIOBJ)0x0;
  h = (HGDIOBJ)(**(code **)(*param_4 + 0x20))();
  if (h != (HGDIOBJ)0x0) {
    h_00 = SelectObject(hdc,h);
  }
  GetTextMetricsW(hdc,&tStack_3c);
  if ((h != (HGDIOBJ)0x0) && (h_00 != (HGDIOBJ)0x0)) {
    SelectObject(hdc,h_00);
  }
  ReleaseDC(param_1,hdc);
  if (param_2 != (LONG *)0x0) {
    *param_2 = tStack_3c.tmAveCharWidth;
  }
  if (param_3 != (int *)0x0) {
    *param_3 = tStack_3c.tmExternalLeading + tStack_3c.tmHeight;
  }
  return;
}



uint FUN_0090da40(ushort param_1,uint param_2,ushort *param_3)

{
  uint uVar1;
  uint uVar2;
  
  uVar2 = 0;
  uVar1 = (uint)param_1;
  while (*(uint *)(&DAT_00d4a148 + uVar2 * 4) != uVar1) {
    uVar2 = uVar2 + 1;
    if (0x3b < uVar2) {
      switch(uVar1) {
      case 0xd:
        uVar1 = (-(uint)((param_2 >> 0x10 & 0x100) != 0) & 0x165) + 0xd;
        if (param_3 != (ushort *)0x0) {
          *param_3 = 0xd;
          return uVar1;
        }
        break;
      default:
        if (((param_1 < 0x30) || (0x39 < param_1)) && (0x19 < (ushort)(param_1 - 0x41))) {
          uVar1 = 0;
        }
        if (param_3 != (ushort *)0x0) {
          *param_3 = param_1;
        }
        break;
      case 0x21:
        if ((param_2 != 0) && ((param_2 >> 0x10 & 0x100) == 0)) {
          return 0x17c;
        }
        return 0x16e;
      case 0x22:
        if ((param_2 != 0) && ((param_2 >> 0x10 & 0x100) == 0)) {
          return 0x17d;
        }
        return 0x16f;
      case 0x23:
        if ((param_2 != 0) && ((param_2 >> 0x10 & 0x100) == 0)) {
          return 0x17e;
        }
        return 0x138;
      case 0x24:
        if ((param_2 != 0) && ((param_2 >> 0x10 & 0x100) == 0)) {
          return 0x177;
        }
        return 0x139;
      case 0x25:
        if ((param_2 != 0) && ((param_2 >> 0x10 & 0x100) == 0)) {
          return 0x178;
        }
        return 0x13a;
      case 0x26:
        if ((param_2 != 0) && ((param_2 >> 0x10 & 0x100) == 0)) {
          return 0x179;
        }
        return 0x13b;
      case 0x27:
        if ((param_2 != 0) && ((param_2 >> 0x10 & 0x100) == 0)) {
          return 0x17a;
        }
        return 0x13c;
      case 0x28:
        if ((param_2 != 0) && ((param_2 >> 0x10 & 0x100) == 0)) {
          return 0x17b;
        }
        return 0x13d;
      case 0x2d:
        if ((param_2 != 0) && ((param_2 >> 0x10 & 0x100) == 0)) {
          return 0x180;
        }
        return 0x142;
      case 0x2e:
        if ((param_2 != 0) && ((param_2 >> 0x10 & 0x100) == 0)) {
          return 0x181;
        }
        return 0x7f;
      case 0xba:
      case 0xbb:
      case 0xbc:
      case 0xbd:
      case 0xbe:
      case 0xbf:
      case 0xc0:
      case 0xdb:
      case 0xdc:
      case 0xdd:
      case 0xde:
      case 0xe2:
        uVar1 = MapVirtualKeyW(uVar1,2);
        if ((uVar1 >> 0x10 & 0x8000) != 0) {
          uVar1 = 0;
        }
        if (param_3 != (ushort *)0x0) {
          *param_3 = (ushort)uVar1;
        }
        if (0xff < (int)uVar1) {
          return 0;
        }
      }
      return uVar1;
    }
  }
  uVar1 = (&DAT_00d4a14c)[uVar2 * 2];
  if (299 < (int)uVar1) {
    return uVar1;
  }
  if (param_3 == (ushort *)0x0) {
    return uVar1;
  }
  *param_3 = (ushort)uVar1;
  return uVar1;
}



uint FUN_0090dd60(uint param_1,undefined *param_2)

{
  SHORT SVar1;
  uint uVar2;
  undefined uVar3;
  undefined uVar4;
  
  uVar2 = 0;
  do {
    if ((&DAT_00d4a14c)[uVar2 * 2] == param_1) {
      if (param_2 != (undefined *)0x0) {
        *param_2 = 0;
      }
      return CONCAT22((short)(uVar2 >> 0x10),(&DAT_00d4a148)[uVar2 * 4]);
    }
    uVar2 = uVar2 + 1;
  } while (uVar2 < 0x3c);
  uVar4 = 0;
  uVar3 = 0;
  if (0x177 < (int)param_1) {
    switch(param_1) {
    case 0x178:
switchD_0090de1d_caseD_178:
      uVar3 = uVar4;
      param_1 = 0x25;
      goto LAB_0090de3b;
    case 0x179:
switchD_0090de1d_caseD_179:
      uVar3 = uVar4;
      param_1 = 0x26;
      goto LAB_0090de3b;
    case 0x17a:
switchD_0090de1d_caseD_17a:
      uVar3 = uVar4;
      param_1 = 0x27;
      goto LAB_0090de3b;
    case 0x17b:
switchD_0090de1d_caseD_17b:
      uVar3 = uVar4;
      param_1 = 0x28;
      goto LAB_0090de3b;
    case 0x17c:
switchD_0090de1d_caseD_17c:
      uVar3 = uVar4;
      param_1 = 0x21;
      goto LAB_0090de3b;
    case 0x17d:
switchD_0090de1d_caseD_17d:
      uVar3 = uVar4;
      param_1 = 0x22;
      goto LAB_0090de3b;
    case 0x17e:
switchD_0090de1d_caseD_17e:
      uVar3 = uVar4;
      param_1 = 0x23;
      goto LAB_0090de3b;
    default:
switchD_0090dd9c_caseD_80:
      SVar1 = VkKeyScanW((WCHAR)param_1);
      if ((byte)SVar1 == 0xff) {
        param_1 = param_1 & 0xffff;
      }
      else {
        param_1 = (uint)(byte)SVar1;
      }
      goto LAB_0090de3b;
    case 0x180:
switchD_0090de1d_caseD_180:
      uVar3 = uVar4;
      param_1 = 0x2d;
      goto LAB_0090de3b;
    case 0x181:
      goto switchD_0090de1d_caseD_181;
    }
  }
  if (param_1 != 0x177) {
    switch(param_1) {
    case 0x7f:
      uVar4 = 1;
switchD_0090de1d_caseD_181:
      uVar3 = uVar4;
      param_1 = 0x2e;
      goto LAB_0090de3b;
    default:
      goto switchD_0090dd9c_caseD_80;
    case 0x138:
      uVar4 = 1;
      goto switchD_0090de1d_caseD_17e;
    case 0x139:
      uVar4 = 1;
      break;
    case 0x13a:
      uVar4 = 1;
      goto switchD_0090de1d_caseD_178;
    case 0x13b:
      uVar4 = 1;
      goto switchD_0090de1d_caseD_179;
    case 0x13c:
      uVar4 = 1;
      goto switchD_0090de1d_caseD_17a;
    case 0x13d:
      uVar4 = 1;
      goto switchD_0090de1d_caseD_17b;
    case 0x142:
      uVar4 = 1;
      goto switchD_0090de1d_caseD_180;
    case 0x16e:
      uVar4 = 1;
      goto switchD_0090de1d_caseD_17c;
    case 0x16f:
      uVar4 = 1;
      goto switchD_0090de1d_caseD_17d;
    }
  }
  uVar3 = uVar4;
  param_1 = 0x24;
LAB_0090de3b:
  if (param_2 != (undefined *)0x0) {
    *param_2 = uVar3;
  }
  return param_1;
}



ushort FUN_0090df90(void)

{
  ushort in_AX;
  ushort uVar1;
  int iVar2;
  
  if ((in_AX == 1) || (in_AX == 2)) {
    iVar2 = GetSystemMetrics(0x17);
    if (iVar2 != 0) {
      in_AX = (in_AX == 1) + 1;
    }
  }
  uVar1 = GetAsyncKeyState((uint)in_AX);
  return uVar1 >> 0xf;
}



undefined4 FUN_0090dfd0(int param_1)

{
  SHORT SVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined2 extraout_var;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     (((param_1 == 1 || (param_1 == 2)) || (param_1 == 4)))) {
    FUN_00840480("..\\..\\src\\msw\\window.cpp",0x194e,"wxGetKeyState",
                 "key != VK_LBUTTON && key != VK_RBUTTON && key != VK_MBUTTON",
                 L"can\'t use wxGetKeyState() for mouse buttons");
  }
  uVar2 = FUN_0090dd60(param_1,0);
  if (((param_1 != 0x16c) && (param_1 != 0x137)) && (param_1 != 0x16d)) {
    uVar3 = FUN_0090df90();
    return uVar3;
  }
  SVar1 = GetKeyState(uVar2 & 0xffff);
  return CONCAT31((int3)(CONCAT22(extraout_var,SVar1) >> 8),SVar1 != 0);
}



undefined ** FUN_0090e050(void)

{
  return &PTR_u_wxIdleWakeUpModule_032395a8;
}



undefined4 * __thiscall
FUN_0090e060(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  
  *param_1_00 = param_1;
  if (((param_2 != 0) && (uVar1 = FUN_00886c70(param_3), PTR_FUN_03235c4c != (undefined *)0x0)) &&
     ((uVar1 & 2) != uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/strvararg.h",0x1c5,
                 "wxArgNormalizer<struct HWND__ *>::wxArgNormalizer",
                 "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype",
                 "format specifier doesn\'t match argument type");
  }
  return param_1_00;
}



void __thiscall FUN_0090e0d0(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = 0;
  param_1_00[1] = 0;
  param_1_00[2] = *param_1;
  param_1_00[3] = param_1[1];
  return;
}



void __fastcall FUN_0090e100(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008f7630(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0090e160(undefined4 *param_1)

{
  *param_1 = wxPaintEvent::vftable;
  DAT_032e1508 = DAT_032e1508 + -1;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined4 * __fastcall FUN_0090e180(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxPaintEvent::vftable;
    DAT_032e1508 = DAT_032e1508 + 1;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __thiscall FUN_0090e1f0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxPaintEvent::vftable;
  DAT_032e1508 = DAT_032e1508 + -1;
  *param_1_00 = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_0090e220(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxFocusEvent::vftable;
    puVar1[10] = *(undefined4 *)(param_1 + 0x28);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_0090e290(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxCloseEvent::vftable;
    *(undefined *)(puVar1 + 10) = *(undefined *)(param_1 + 0x28);
    *(undefined *)((int)puVar1 + 0x29) = *(undefined *)(param_1 + 0x29);
    *(undefined *)((int)puVar1 + 0x2a) = *(undefined *)(param_1 + 0x2a);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_0090e310(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x40);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxJoystickEvent::vftable;
    puVar1[10] = *(undefined4 *)(param_1 + 0x28);
    puVar1[0xb] = *(undefined4 *)(param_1 + 0x2c);
    puVar1[0xc] = *(undefined4 *)(param_1 + 0x30);
    puVar1[0xd] = *(undefined4 *)(param_1 + 0x34);
    puVar1[0xe] = *(undefined4 *)(param_1 + 0x38);
    puVar1[0xf] = *(undefined4 *)(param_1 + 0x3c);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __thiscall FUN_0090e3a0(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0xe0) = param_1;
  return;
}



void __thiscall FUN_0090e3b0(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0xe4) = param_1;
  return;
}



void __fastcall FUN_0090e3c0(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x0090e3c8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x100))();
  return;
}



undefined4 __fastcall FUN_0090e3d0(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10c))();
  if (cVar1 != '\0') {
    cVar1 = (**(code **)(*param_1 + 0xdc))();
    if (cVar1 != '\0') {
      cVar1 = FUN_0091b930();
      if (cVar1 != '\0') {
        return 1;
      }
    }
  }
  return 0;
}



void __fastcall FUN_0090e410(int *param_1)

{
  undefined4 uVar1;
  
  uVar1 = (**(code **)(*param_1 + 0xe8))();
  FUN_0091ac10(uVar1);
  return;
}



uint FUN_0090e430(int *param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  uVar1 = (**(code **)(*param_1 + 0x18))();
  uVar2 = (**(code **)(*param_1 + 0x14))();
  uVar3 = (**(code **)(*param_1 + 0x10))();
  return uVar3 & 0xff | (uVar2 & 0xff | (uVar1 & 0xff) << 8) << 8;
}



void FUN_0090e470(int *param_1,int *param_2)

{
  param_2[1] = param_1[1];
  *param_2 = *param_1;
  param_2[2] = param_1[2] + *param_1;
  param_2[3] = param_1[3] + param_1[1];
  return;
}



bool FUN_0090e4a0(void)

{
  SHORT SVar1;
  
  SVar1 = GetKeyState(0x12);
  return SVar1 < 0;
}



void __fastcall FUN_0090e4c0(HWND *param_1)

{
  ReleaseDC(*param_1,(HDC)param_1[1]);
  return;
}



byte __fastcall FUN_0090e4d0(int param_1)

{
  return *(byte *)(param_1 + 0x10) >> 1 & 1;
}



void __thiscall FUN_0090e4e0(int param_1_00,int param_1,int param_2)

{
  if ((*(byte *)(param_1_00 + 0x10) & 0x10) == 0) {
    *(byte *)(param_1_00 + 0x10) = *(byte *)(param_1_00 + 0x10) | 0x10;
    *(int *)(param_1_00 + 0x78) = param_1;
    *(int *)(param_1_00 + 0x7c) = param_2;
    *(int *)(param_1_00 + 0x80) = param_1;
    *(int *)(param_1_00 + 0x84) = param_2;
  }
  else {
    if (param_1 < *(int *)(param_1_00 + 0x78)) {
      *(int *)(param_1_00 + 0x78) = param_1;
    }
    if (param_2 < *(int *)(param_1_00 + 0x7c)) {
      *(int *)(param_1_00 + 0x7c) = param_2;
    }
    if (*(int *)(param_1_00 + 0x80) < param_1) {
      *(int *)(param_1_00 + 0x80) = param_1;
    }
    if (*(int *)(param_1_00 + 0x84) < param_2) {
      *(int *)(param_1_00 + 0x84) = param_2;
      return;
    }
  }
  return;
}



int __fastcall FUN_0090e540(int param_1)

{
  return param_1 + 0xe4;
}



int __fastcall FUN_0090e550(int param_1)

{
  return param_1 + 0xa4;
}



int __fastcall FUN_0090e560(int param_1)

{
  return param_1 + 0xac;
}



int __fastcall FUN_0090e570(int param_1)

{
  return param_1 + 0xb4;
}



undefined4 __fastcall FUN_0090e580(int param_1)

{
  return *(undefined4 *)(param_1 + 0x9c);
}



int __fastcall FUN_0090e590(int param_1)

{
  return param_1 + 0xbc;
}



int __fastcall FUN_0090e5a0(int param_1)

{
  return param_1 + 0xd0;
}



undefined4 __fastcall FUN_0090e5b0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x98);
}



undefined4 __fastcall FUN_0090e5c0(int param_1)

{
  return *(undefined4 *)(param_1 + 0xa0);
}



void __thiscall FUN_0090e5d0(int param_1_00,undefined8 *param_1,undefined8 *param_2)

{
  if (param_1 != (undefined8 *)0x0) {
    *param_1 = *(undefined8 *)(param_1_00 + 0x40);
  }
  if (param_2 != (undefined8 *)0x0) {
    *param_2 = *(undefined8 *)(param_1_00 + 0x48);
  }
  return;
}



void __thiscall FUN_0090e5f0(int param_1_00,undefined8 *param_1,undefined8 *param_2)

{
  if (param_1 != (undefined8 *)0x0) {
    *param_1 = *(undefined8 *)(param_1_00 + 0x30);
  }
  if (param_2 != (undefined8 *)0x0) {
    *param_2 = *(undefined8 *)(param_1_00 + 0x38);
  }
  return;
}



void __thiscall FUN_0090e610(int param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = *(undefined4 *)(param_1_00 + 0x14);
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *(undefined4 *)(param_1_00 + 0x18);
  }
  return;
}



void __thiscall FUN_0090e630(int param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = *(undefined4 *)(param_1_00 + 0x1c);
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *(undefined4 *)(param_1_00 + 0x20);
  }
  return;
}



void FUN_0090e650(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  
  *param_1 = *param_2;
  param_1[1] = param_2[1];
  uVar1 = param_2[3];
  param_1[2] = param_2[2];
  param_1[3] = uVar1;
  return;
}



void __fastcall FUN_0090e680(int *param_1)

{
  undefined4 local_8;
  undefined4 *local_4;
  
  local_8 = 0;
  local_4 = (undefined4 *)0x0;
  (**(code **)(*param_1 + 0x20))();
  *local_4 = 0;
  local_4[1] = 0;
  local_4[2] = &local_8;
  local_4[3] = &local_4;
  return;
}



void __thiscall FUN_0090e6d0(int param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((*(int *)(param_1_00 + 0x120) == -1 || (*(int *)(param_1_00 + 0x124) == -1)))) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/msw/dc.h",0x162,"wxDCTempImpl::DoGetSize",
                 "m_size.IsFullySpecified()",L"size of this DC hadn\'t been set and is unknown");
  }
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = *(undefined4 *)(param_1_00 + 0x120);
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *(undefined4 *)(param_1_00 + 0x124);
  }
  return;
}



undefined4 * __thiscall FUN_0090e740(undefined4 *param_1_00,undefined4 param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x128);
  local_4 = 0;
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    FUN_0094ff30(param_1_00,param_1);
    *puVar1 = wxDCTempImpl::vftable;
    puVar1[0x48] = *param_2;
    puVar1[0x49] = param_2[1];
  }
  param_1_00[1] = 0;
  param_1_00[2] = puVar1;
  *param_1_00 = wxDCTemp::vftable;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_0090e7e0(undefined4 *param_1_00,int param_1,undefined4 param_2)

{
  code **ppcVar1;
  undefined4 uVar2;
  
  ppcVar1 = (code **)FUN_0098e820();
  if (ppcVar1 != (code **)0x0) {
    uVar2 = (**ppcVar1)(*(undefined4 *)(param_1 + 0x13c),param_2);
    *param_1_00 = uVar2;
    return param_1_00;
  }
  *param_1_00 = 0;
  return param_1_00;
}



void __thiscall FUN_0090e820(void **param_1_00,undefined4 param_1)

{
  void *_Memory;
  void *pvVar1;
  void *_Count;
  void *pvVar2;
  
  _Count = (void *)FUN_00893ca0(param_1);
  _Memory = *param_1_00;
  pvVar1 = param_1_00[1];
  pvVar2 = _calloc((size_t)_Count,4);
  *param_1_00 = pvVar2;
  param_1_00[1] = _Count;
  FUN_00893d40(_Memory,pvVar1,param_1_00,pvVar2,&LAB_008b7840,&LAB_00893da0);
  _free(_Memory);
  return;
}



void __thiscall FUN_0090e870(int *param_1_00,undefined4 *param_1,uint *param_2)

{
  undefined4 *puVar1;
  
  for (puVar1 = *(undefined4 **)(*param_1_00 + (*param_2 % (uint)param_1_00[1]) * 4);
      puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) {
    if (puVar1[1] == *param_2) goto LAB_0090e894;
  }
  puVar1 = (undefined4 *)0x0;
LAB_0090e894:
  *param_1 = puVar1;
  param_1[1] = param_1_00;
  return;
}



void FUN_0090e8b0(void)

{
  char cVar1;
  int *in_EAX;
  uint uVar2;
  
  if (in_EAX != (int *)0x0) {
    do {
      cVar1 = (**(code **)(*in_EAX + 0x11c))();
      if (cVar1 != '\0') {
        return;
      }
      uVar2 = GetWindowLongW((HWND)in_EAX[0x4f],-0x14);
      if ((uVar2 & 0x10000) == 0) {
        SetWindowLongW((HWND)in_EAX[0x4f],-0x14,uVar2 | 0x10000);
      }
      in_EAX = (int *)in_EAX[0x11];
    } while (in_EAX != (int *)0x0);
  }
  return;
}



uint __thiscall FUN_0090e910(uint param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  
  cVar1 = FUN_0083e950(&PTR_u_wxControl_0323a444);
  uVar3 = -(uint)(cVar1 != '\0') & param_1_00;
  if ((uVar3 != 0) &&
     ((*(int *)(uVar3 + 0x40) == param_1 || (iVar2 = FUN_0086aa50(param_1,0), iVar2 != -1)))) {
    return uVar3;
  }
  iVar2 = *(int *)(param_1_00 + 0x54);
  while( true ) {
    if (iVar2 == 0) {
      return 0;
    }
    uVar3 = FUN_0090e910(param_1);
    if (uVar3 != 0) break;
    iVar2 = *(int *)(iVar2 + 0xc);
  }
  return uVar3;
}



int * __thiscall FUN_0090e980(int param_1_00,int param_1,char param_2)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  
  iVar1 = *(int *)(param_1_00 + 0x54);
  while( true ) {
    if (iVar1 == 0) {
      return (int *)0x0;
    }
    piVar3 = (int *)FUN_0090e980(param_1,0);
    if (piVar3 != (int *)0x0) break;
    if (((param_2 == '\0') || (cVar2 = FUN_0083e950(&PTR_u_wxControl_0323a444), cVar2 != '\0')) &&
       ((piVar3 = *(int **)(iVar1 + 8), piVar3[0x4f] == param_1 ||
        (cVar2 = (**(code **)(*piVar3 + 0x2c0))(param_1), cVar2 != '\0')))) {
      return piVar3;
    }
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  return piVar3;
}



uint __thiscall FUN_0090ea30(int param_1_00,HWND param_1,byte param_2)

{
  uint in_EAX;
  HWND pHVar1;
  BOOL BVar2;
  
  if (param_1 == (HWND)0x0) {
    return in_EAX & 0xffffff00;
  }
  if (param_2 == 0) {
    pHVar1 = GetFocus();
    if ((pHVar1 == param_1) && (*(int *)(param_1_00 + 0x44) != 0)) {
      (**(code **)(**(int **)(param_1_00 + 0x44) + 0x240))(1);
    }
  }
  BVar2 = EnableWindow(param_1,(uint)param_2);
  return (uint)(BVar2 != 0);
}



undefined __thiscall FUN_0090ea90(int *param_1_00,uint param_1)

{
  char cVar1;
  
  cVar1 = FUN_0091aa60(param_1);
  if (cVar1 == '\0') {
    return 0;
  }
  if ((HWND)param_1_00[0x4f] != (HWND)0x0) {
    ShowWindow((HWND)param_1_00[0x4f],-(uint)((param_1 & 0xff) != 0) & 5);
  }
  if (param_1_00[0x4e] != 0) {
    if ((char)param_1 != '\0') {
      (**(code **)(*param_1_00 + 0x2b0))();
      return 1;
    }
    (**(code **)(*param_1_00 + 0x2b4))();
  }
  return 1;
}



undefined __thiscall FUN_0090eb40(int param_1_00,undefined4 param_1)

{
  HWND hWnd;
  char cVar1;
  uint uVar2;
  int *piVar3;
  WPARAM wParam;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1c48;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  cVar1 = FUN_0091d460(param_1);
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  hWnd = *(HWND *)(param_1_00 + 0x13c);
  if (hWnd != (HWND)0x0) {
    piVar3 = (int *)FUN_0091e100(local_14);
    local_4 = 0;
    wParam = (**(code **)(*piVar3 + 0x20))(uVar2);
    local_4 = 0xffffffff;
    FUN_00921450();
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (wParam == 0)) {
      FUN_00840480("..\\..\\src\\msw\\window.cpp",0x338,"wxWindow::SetFont","hFont",
                   L"should have valid font");
    }
    SendMessageW(hWnd,0x30,wParam,1);
  }
  ExceptionList = local_c;
  return 1;
}



void __thiscall FUN_0090ec20(int param_1_00,undefined2 param_1,undefined2 param_2)

{
  int iVar1;
  int local_8;
  undefined local_4 [4];
  
  if (DAT_032392ac == -1) {
    iVar1 = FUN_00894a40(&local_8,local_4);
    if ((iVar1 != 8) || (local_8 < 5)) {
      DAT_032392ac = 0;
      return;
    }
    DAT_032392ac = 1;
  }
  else if (DAT_032392ac == 0) {
    return;
  }
  SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x127,CONCAT22(param_2,param_1),0);
  return;
}



int FUN_0090eca0(HWND param_1,int param_2)

{
  tagSCROLLINFO local_1c;
  
  local_1c.nMin = 0;
  local_1c.nMax = 0;
  local_1c.nPage = 0;
  local_1c.nPos = 0;
  local_1c.nTrackPos = 0;
  local_1c.cbSize = 0x1c;
  local_1c.fMask = 4;
  GetScrollInfo(param_1,param_2,&local_1c);
  return local_1c.nPos;
}



void __thiscall
FUN_0090ee60(int param_1_00,int param_1,int param_2,UINT param_3,int param_4,byte param_5)

{
  HWND hWnd;
  UINT *pUVar1;
  SCROLLINFO local_1c;
  
  pUVar1 = (UINT *)(param_1_00 + 0x148);
  if (param_1 != 4) {
    pUVar1 = (UINT *)(param_1_00 + 0x14c);
  }
  *pUVar1 = param_3;
  hWnd = *(HWND *)(param_1_00 + 0x13c);
  if (hWnd != (HWND)0x0) {
    local_1c.fMask = 0;
    local_1c.nMin = 0;
    local_1c.nMax = 0;
    local_1c.nPage = 0;
    local_1c.nPos = 0;
    local_1c.nTrackPos = 0;
    local_1c.cbSize = 0x1c;
    if (param_4 != -1) {
      local_1c.nMax = param_4 + -1;
      local_1c.nPage = param_3;
      local_1c.nMin = 0;
      local_1c.nPos = param_2;
      if ((int)param_3 <= param_4) {
        EnableScrollBar(hWnd,(uint)(param_1 != 4),0);
      }
    }
    local_1c.fMask = 7;
    if (((*(uint *)(param_1_00 + 0xe0) >> 0x17 & 1) != 0) || (param_4 == -1)) {
      local_1c.fMask = 0xf;
    }
    SetScrollInfo(hWnd,(uint)(param_1 != 4),&local_1c,(uint)param_5);
  }
  return;
}



bool FUN_0090efb0(WPARAM param_1,int param_2)

{
  int iVar1;
  HWND unaff_ESI;
  int iVar2;
  tagSCROLLINFO local_38;
  tagSCROLLINFO tStack_1c;
  
  local_38.nMin = 0;
  local_38.nMax = 0;
  local_38.nPage = 0;
  local_38.nPos = 0;
  local_38.nTrackPos = 0;
  local_38.cbSize = 0x1c;
  local_38.fMask = 4;
  GetScrollInfo(unaff_ESI,1,&local_38);
  iVar1 = 0;
  iVar2 = local_38.nPos;
  if (0 < param_2) {
    do {
      SendMessageW(unaff_ESI,0x115,param_1,0);
      tStack_1c.nMin = 0;
      tStack_1c.nMax = 0;
      tStack_1c.nPage = 0;
      tStack_1c.nPos = 0;
      tStack_1c.nTrackPos = 0;
      tStack_1c.cbSize = 0x1c;
      tStack_1c.fMask = 4;
      GetScrollInfo(unaff_ESI,1,&tStack_1c);
      if (tStack_1c.nPos == iVar2) break;
      iVar1 = iVar1 + 1;
      iVar2 = tStack_1c.nPos;
    } while (iVar1 < param_2);
  }
  return iVar2 != local_38.nPos;
}



void __thiscall FUN_0090f0d0(int param_1,int param_2)

{
  uint uVar1;
  uint dwNewLong;
  
  if (*(HWND *)(param_1 + 0x13c) == (HWND)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\window.cpp",0x45d,"wxWindow::SetLayoutDirection",
                   "((HWND)GetHWND())",L"layout direction must be set after window creation");
    }
  }
  else {
    uVar1 = GetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x14);
    if (param_2 == 1) {
      dwNewLong = uVar1 & 0xffbfffff;
    }
    else {
      if (param_2 != 2) {
        if (PTR_FUN_03235c4c == (undefined *)0x0) {
          return;
        }
        FUN_00840480("..\\..\\src\\msw\\window.cpp",0x46d,"wxWindow::SetLayoutDirection",
                     "Assert failure",L"unsupported layout direction");
        return;
      }
      dwNewLong = uVar1 | 0x400000;
    }
    if (dwNewLong != uVar1) {
      SetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x14,dwNewLong);
      return;
    }
  }
  return;
}



void __fastcall FUN_0090f1d0(int *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc9a8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  if (param_1[0x11] != 0) {
    uVar2 = FUN_0091de40(local_20);
    local_4 = 0;
    (**(code **)(*param_1 + 0x17c))(uVar2,uVar1);
    local_4 = 0xffffffff;
    local_20[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  return;
}



bool __fastcall FUN_0090f250(int param_1)

{
  POINT Point;
  BOOL BVar1;
  DWORD DVar2;
  HWND hWnd;
  tagPOINT local_8;
  
  BVar1 = GetCursorPos(&local_8);
  if (BVar1 == 0) {
    DVar2 = GetMessagePos();
    local_8.x = (LONG)(short)DVar2;
    local_8.y = (LONG)(short)(DVar2 >> 0x10);
  }
  Point.y = local_8.y;
  Point.x = local_8.x;
  for (hWnd = WindowFromPoint(Point); (hWnd != (HWND)0x0 && (hWnd != *(HWND *)(param_1 + 0x13c)));
      hWnd = GetParent(hWnd)) {
  }
  return hWnd != (HWND)0x0;
}



undefined __thiscall FUN_0090f2c0(int param_1_00,undefined4 param_1)

{
  char cVar1;
  HWND hWndNewParent;
  uint uVar2;
  
  cVar1 = FUN_0091bcc0(param_1);
  if (cVar1 == '\0') {
    return 0;
  }
  if (*(int *)(param_1_00 + 0x44) == 0) {
    hWndNewParent = (HWND)0x0;
  }
  else {
    hWndNewParent = *(HWND *)(*(int *)(param_1_00 + 0x44) + 0x13c);
  }
  SetParent(*(HWND *)(param_1_00 + 0x13c),hWndNewParent);
  uVar2 = GetWindowLongW(*(HWND *)(param_1_00 + 0x13c),-0x14);
  if ((uVar2 >> 0x10 & 1) != 0) {
    FUN_0090e8b0();
  }
  return 1;
}



void __fastcall FUN_0090f320(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0xdc))();
  if (cVar1 != '\0') {
    SendMessageW((HWND)param_1[0x4f],0xb,0,0);
  }
  return;
}



void __fastcall FUN_0090f350(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0xdc))();
  if (cVar1 != '\0') {
    SendMessageW((HWND)param_1[0x4f],0xb,1,0);
    (**(code **)(*param_1 + 0x15c))(1,0);
  }
  return;
}



void __thiscall FUN_0090f390(int param_1_00,char param_1,int *param_2)

{
  RECT *lprcUpdate;
  UINT flags;
  RECT local_10;
  
  if (*(HWND *)(param_1_00 + 0x13c) != (HWND)0x0) {
    if (param_2 == (int *)0x0) {
      lprcUpdate = (RECT *)0x0;
    }
    else {
      local_10.left = *param_2;
      local_10.top = param_2[1];
      local_10.right = param_2[2] + local_10.left;
      local_10.bottom = param_2[3] + local_10.top;
      lprcUpdate = &local_10;
    }
    flags = 0x81;
    if (param_1 != '\0') {
      flags = 0x85;
    }
    RedrawWindow(*(HWND *)(param_1_00 + 0x13c),lprcUpdate,(HRGN)0x0,flags);
  }
  return;
}



void FUN_0090f400(void)

{
  int iVar1;
  undefined4 *puVar2;
  char cVar3;
  int in_EAX;
  undefined **ppuVar4;
  
  if (in_EAX != 0) {
    for (iVar1 = *(int *)(in_EAX + 0x54); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
      puVar2 = *(undefined4 **)(iVar1 + 8);
      if ((puVar2 != (undefined4 *)0x0) &&
         (((ppuVar4 = (undefined **)(**(code **)*puVar2)(), ppuVar4 == &PTR_u_wxStaticBox_0323bdf8
           || ((ppuVar4[3] != (undefined *)0x0 &&
               (cVar3 = FUN_0048a047(&PTR_u_wxStaticBox_0323bdf8), cVar3 != '\0')))) ||
          ((ppuVar4[4] != (undefined *)0x0 &&
           (cVar3 = FUN_0048a047(&PTR_u_wxStaticBox_0323bdf8), cVar3 != '\0')))))) {
        SetWindowPos((HWND)puVar2[0x4f],(HWND)0x1,0,0,0,0,0x13);
      }
    }
  }
  return;
}



void __thiscall FUN_0090f480(int param_1_00,int param_1)

{
  if (*(int *)(param_1_00 + 0x78) != 0) {
    FUN_009905e0(*(undefined4 *)(param_1_00 + 0x13c));
    if (*(undefined4 **)(param_1_00 + 0x78) != (undefined4 *)0x0) {
      (**(code **)**(undefined4 **)(param_1_00 + 0x78))(1);
    }
  }
  *(int *)(param_1_00 + 0x78) = param_1;
  if (param_1 != 0) {
    FUN_0090f400();
    FUN_009903d0(*(undefined4 *)(param_1_00 + 0x13c));
  }
  return;
}



uint __fastcall FUN_0090f500(int param_1)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1 + 0x154);
  if ((((uVar1 == DAT_03238d0c) && (*(int *)(param_1 + 0x158) == DAT_03238d10)) &&
      (uVar1 = *(uint *)(param_1 + 0x15c), uVar1 == DAT_03238d04)) &&
     (*(int *)(param_1 + 0x160) == DAT_03238d08)) {
    return uVar1 & 0xffffff00;
  }
  return CONCAT31((int3)(uVar1 >> 8),1);
}



void __thiscall FUN_0090f540(int param_1_00,LONG *param_1,LONG *param_2)

{
  tagPOINT local_8;
  
  if (param_1 != (LONG *)0x0) {
    local_8.x = *param_1;
  }
  if (param_2 != (LONG *)0x0) {
    local_8.y = *param_2;
  }
  ScreenToClient(*(HWND *)(param_1_00 + 0x13c),&local_8);
  if (param_1 != (LONG *)0x0) {
    *param_1 = local_8.x;
  }
  if (param_2 != (LONG *)0x0) {
    *param_2 = local_8.y;
  }
  return;
}



void __thiscall FUN_0090f590(int param_1_00,LONG *param_1,LONG *param_2)

{
  tagPOINT local_8;
  
  if (param_1 != (LONG *)0x0) {
    local_8.x = *param_1;
  }
  if (param_2 != (LONG *)0x0) {
    local_8.y = *param_2;
  }
  ClientToScreen(*(HWND *)(param_1_00 + 0x13c),&local_8);
  if (param_1 != (LONG *)0x0) {
    *param_1 = local_8.x;
  }
  if (param_2 != (LONG *)0x0) {
    *param_2 = local_8.y;
  }
  return;
}



void __thiscall FUN_0090f5e0(int *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  int iVar2;
  
  uVar1 = (**(code **)(*param_1 + 0xe8))();
  iVar2 = FUN_0091ac10(uVar1);
  if (iVar2 < 0x4000001) {
    if (iVar2 == 0x4000000) {
LAB_0090f671:
      *param_2 = 6;
      param_2[1] = 6;
      return;
    }
    if (iVar2 == 0x200000) goto LAB_0090f660;
    if ((iVar2 == 0x1000000) || (iVar2 == 0x2000000)) {
      *param_2 = 2;
      param_2[1] = 2;
      return;
    }
  }
  else {
    if (iVar2 == 0x8000000) {
      *param_2 = 4;
      param_2[1] = 4;
      return;
    }
    if (iVar2 == 0x10000000) goto LAB_0090f671;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\window.cpp",0x84f,"wxWindow::DoGetBorderSize","Assert failure",
                 L"unknown border style");
  }
LAB_0090f660:
  *param_2 = 0;
  param_2[1] = 0;
  return;
}



undefined4 __thiscall FUN_0090f6a0(int param_1_00,int param_1)

{
  int *piVar1;
  char cVar2;
  HWND hWnd;
  uint uVar3;
  BOOL BVar4;
  int iVar5;
  
  if ((*(int *)(param_1 + 4) == 0x100) && (*(int *)(param_1 + 8) == 0x1b)) {
    return 0;
  }
  if (*(int *)(param_1 + 4) != 0x106) {
    return 1;
  }
  hWnd = GetFocus();
  uVar3 = GetWindowLongW(hWnd,-0x14);
  if ((uVar3 & 0x10000) != 0) {
    iVar5 = *(int *)(param_1_00 + 0x54);
    if (iVar5 == 0) {
      return 0;
    }
    while( true ) {
      piVar1 = *(int **)(iVar5 + 8);
      cVar2 = (**(code **)(*piVar1 + 0x110))();
      if ((((cVar2 != '\0') && (cVar2 = (**(code **)(*piVar1 + 0xdc))(), cVar2 != '\0')) &&
          (cVar2 = FUN_0091b930(), cVar2 != '\0')) &&
         (uVar3 = GetWindowLongW((HWND)piVar1[0x4f],-0x14), (uVar3 >> 0x10 & 1) == 0)) break;
      iVar5 = *(int *)(iVar5 + 0xc);
      if (iVar5 == 0) {
        return 0;
      }
    }
  }
  param_1 = 1;
  if (hWnd != (HWND)0x0) {
    while ((BVar4 = IsWindowEnabled(hWnd), BVar4 != 0 && (BVar4 = IsWindowVisible(hWnd), BVar4 != 0)
           )) {
      uVar3 = GetWindowLongW(hWnd,-0x10);
      if ((uVar3 & 0x40000000) == 0) {
        return 1;
      }
      hWnd = GetParent(hWnd);
      if (hWnd == (HWND)0x0) {
        return 1;
      }
    }
    param_1 = 0;
  }
  return param_1;
}



undefined FUN_0090f6ca(void)

{
  int *piVar1;
  char cVar2;
  HWND hWnd;
  uint uVar3;
  BOOL BVar4;
  int iVar5;
  int unaff_EDI;
  undefined param_2;
  
  param_2 = 1;
  hWnd = GetFocus();
  uVar3 = GetWindowLongW(hWnd,-0x14);
  if ((uVar3 & 0x10000) != 0) {
    iVar5 = *(int *)(unaff_EDI + 0x54);
    param_2 = 0;
    if (iVar5 == 0) {
      return 0;
    }
    while( true ) {
      piVar1 = *(int **)(iVar5 + 8);
      cVar2 = (**(code **)(*piVar1 + 0x110))();
      if ((((cVar2 != '\0') && (cVar2 = (**(code **)(*piVar1 + 0xdc))(), cVar2 != '\0')) &&
          (cVar2 = FUN_0091b930(), cVar2 != '\0')) &&
         (uVar3 = GetWindowLongW((HWND)piVar1[0x4f],-0x14), (uVar3 >> 0x10 & 1) == 0)) break;
      iVar5 = *(int *)(iVar5 + 0xc);
      if (iVar5 == 0) {
        return param_2;
      }
    }
    param_2 = 1;
  }
  if (hWnd != (HWND)0x0) {
    while ((BVar4 = IsWindowEnabled(hWnd), BVar4 != 0 && (BVar4 = IsWindowVisible(hWnd), BVar4 != 0)
           )) {
      uVar3 = GetWindowLongW(hWnd,-0x10);
      if ((uVar3 & 0x40000000) == 0) {
        return param_2;
      }
      hWnd = GetParent(hWnd);
      if (hWnd == (HWND)0x0) {
        return param_2;
      }
    }
    param_2 = 0;
  }
  return param_2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall thunk_FUN_00457221(undefined4 *param_1)

{
  *param_1 = wxDC::vftable;
  if ((int *)param_1[2] != (int *)0x0) {
    (**(code **)(*(int *)param_1[2] + 4))(1);
  }
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined4 FUN_0090f7c0(uint param_1)

{
  undefined4 *puVar1;
  
  for (puVar1 = *(undefined4 **)(DAT_032bf67c + (param_1 % DAT_032bf680) * 4);
      puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) {
    if (puVar1[1] == param_1) goto LAB_0090f7ed;
  }
  puVar1 = (undefined4 *)0x0;
LAB_0090f7ed:
  if (puVar1 == (undefined4 *)0x0) {
    return 0;
  }
  return puVar1[2];
}



void __thiscall FUN_0090f800(int *param_1_00,uint *param_1,int *param_2,uint *param_3,uint *param_4)

{
  int iVar1;
  int *unaff_ESI;
  
  *param_3 = -(uint)(*param_1 != 0xffffffff) & *param_1;
  *param_4 = -(uint)(param_1[1] != 0xffffffff) & param_1[1];
  (**(code **)(*param_1_00 + 0x2a8))(param_3,param_4,0);
  iVar1 = *unaff_ESI;
  if (iVar1 == -1) {
    iVar1 = 0x14;
  }
  *param_2 = iVar1;
  if (unaff_ESI[1] == 0xffffffff) {
    *param_3 = 0x14;
    return;
  }
  *param_3 = unaff_ESI[1];
  return;
}



void __thiscall FUN_0090f890(int *param_1_00,undefined4 param_1,uint *param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  
  for (puVar1 = *(undefined4 **)(DAT_032bf67c + (*param_2 % DAT_032bf680) * 4);
      puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) {
    if (puVar1[1] == *param_2) goto LAB_0090f8bd;
  }
  puVar1 = (undefined4 *)0x0;
LAB_0090f8bd:
  if ((puVar1 != (undefined4 *)0x0) && ((int *)puVar1[2] != (int *)0x0)) {
    (**(code **)(*(int *)puVar1[2] + 0x2e4))(param_1,param_2,param_3);
    return;
  }
  (**(code **)(*param_1_00 + 0x2e4))(param_1,param_2,param_3);
  return;
}



char FUN_0090f900(int param_1)

{
  bool bVar1;
  char cVar2;
  uint uVar3;
  undefined **local_38 [2];
  int *local_30;
  char cStack_13;
  char cStack_12;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd68e8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_00845a20(0xffffffff,DAT_032bfef0);
  local_38[0] = wxCloseEvent::vftable;
  local_30 = DAT_032bcb68;
  local_4 = 0;
  cVar2 = (**(code **)(*DAT_032bcb68 + 0x18))(local_38,uVar3);
  if (cVar2 != '\0') {
    if ((cStack_12 == '\0') || (cStack_13 == '\0')) {
      bVar1 = false;
    }
    else {
      bVar1 = true;
    }
    *(bool *)param_1 = !bVar1;
  }
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  ExceptionList = local_10;
  return cVar2;
}



undefined __thiscall FUN_0090f9d0(int param_1_00,char param_1,undefined4 param_3)

{
  undefined uVar1;
  int iVar2;
  undefined **appuStack_38 [2];
  int *piStack_30;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a68;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 != '\0') {
    iVar2 = (**(code **)(*DAT_032bcb68 + 0xd4))(DAT_0323f878 ^ (uint)&stack0xffffffc0);
    if (param_1_00 == iVar2) {
      FUN_00845a20(0xffffffff,DAT_032bfeec);
      appuStack_38[0] = wxCloseEvent::vftable;
      piStack_30 = DAT_032bcb68;
      uStack_4 = 0;
      uVar1 = (**(code **)(*DAT_032bcb68 + 0x18))(appuStack_38);
      puStack_8 = (undefined *)0xffffffff;
      FUN_0083e850();
      ExceptionList = uStack_10;
      return uVar1;
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_0090fab0(int param_1,undefined *param_2)

{
  if ((*(uint *)(param_1 + 0x2c) & 0x10000) != 0) {
    FUN_0090e8b0();
    *param_2 = 1;
    return 1;
  }
  *param_2 = 1;
  return 1;
}



undefined4 __fastcall FUN_0090fae0(int param_1)

{
  if (*(int *)(param_1 + 0x78) != 0) {
    FUN_009905e0(*(undefined4 *)(param_1 + 0x13c));
    if (*(undefined4 **)(param_1 + 0x78) != (undefined4 *)0x0) {
      (**(code **)**(undefined4 **)(param_1 + 0x78))(1);
      *(undefined4 *)(param_1 + 0x78) = 0;
    }
  }
  return 1;
}



undefined __thiscall FUN_0090fb10(int param_1_00,int param_1)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_38 [2];
  int local_30;
  undefined local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a68;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  if ((param_1 == 1) || (param_1 == 2)) {
    uVar1 = 1;
  }
  else {
    uVar1 = 0;
  }
  FUN_00845a20(*(undefined4 *)(param_1_00 + 0x40),DAT_032bfefc);
  local_38[0] = wxActivateEvent::vftable;
  local_4 = 0;
  local_30 = param_1_00;
  local_10 = uVar1;
  uVar1 = FUN_0091c170(local_38);
  local_4 = 0xffffffff;
  local_38[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



undefined __thiscall FUN_0090fbc0(int param_1_00,undefined4 param_1)

{
  undefined uVar1;
  undefined **local_38 [2];
  int local_30;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a68;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0xb4) != 0) {
    (**(code **)(**(int **)(param_1_00 + 0xb4) + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffc0);
  }
  if ((*(byte *)(param_1_00 + 0xdc) & 8) != 0) {
    ExceptionList = local_c;
    return 0;
  }
  FUN_00845a20(*(undefined4 *)(param_1_00 + 0x40),DAT_032bfe3c);
  local_38[0] = wxFocusEvent::vftable;
  local_10 = 0;
  local_4 = 0;
  local_30 = param_1_00;
  local_10 = FUN_0090f7c0(param_1);
  uVar1 = FUN_0091c170(local_38);
  local_4 = 0xffffffff;
  local_38[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return uVar1;
}



uint __fastcall FUN_0090fca0(int *param_1)

{
  uint in_EAX;
  uint uVar1;
  
  if (param_1 != (int *)0x0) {
    do {
      uVar1 = GetWindowLongW((HWND)param_1[0x4f],-0x14);
      if ((uVar1 >> 0x19 & 1) != 0) {
        return 1;
      }
      in_EAX = (**(code **)(*param_1 + 0x11c))();
    } while (((char)in_EAX == '\0') && (param_1 = (int *)param_1[0x11], param_1 != (int *)0x0));
  }
  return in_EAX & 0xffffff00;
}



void __thiscall FUN_0090fcf0(int param_1,char param_2)

{
  uint uVar1;
  
  uVar1 = GetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x14);
  if (param_2 != '\0') {
    SetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x14,uVar1 | 0x2000000);
    return;
  }
  SetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x14,uVar1 & 0xfdffffff);
  return;
}



undefined FUN_0090fd40(int param_1,int *param_2)

{
  int iVar1;
  undefined uVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  int *piVar6;
  undefined **ppuVar7;
  undefined local_28 [12];
  void *local_1c;
  int local_18;
  int local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6918;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  if ((param_1 == 0) && (*param_2 == 1)) {
    iVar1 = param_2[0xb];
    if (iVar1 != 0) {
      iVar4 = FUN_0048a085(iVar1,&PTR_u_wxMenuItem_0323b0d4,uVar3);
      if (iVar4 != 0) {
        FUN_0090e740(param_2[6],&DAT_03238d04);
        local_18 = param_2[8];
        local_1c = (void *)param_2[7];
        local_10 = (void *)(param_2[10] - local_18);
        local_14 = param_2[9] - (int)local_1c;
        local_4 = 0;
        uVar2 = (**(code **)(*(int *)(iVar1 + 100) + 0xc))(local_28,&local_1c,param_2[3],param_2[4])
        ;
        local_14 = 0xffffffff;
        FUN_00457221();
        ExceptionList = local_1c;
        return uVar2;
      }
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\msw\\window.cpp",0x110f,"wxWindow::MSWOnDrawItem",
                     "((wxMenuItem *) wxCheckDynamicCast( const_cast<wxObject *>(static_cast<const wxObject *>( const_cast<wxMenuItem *>(static_cast<const wxMenuItem *>(pMenuItem)))), &wxMenuItem::ms_classInfo))"
                     ,L"MSWOnDrawItem: bad wxMenuItem pointer");
      }
    }
  }
  else {
    ppuVar7 = &PTR_u_wxControl_0323a444;
    uVar5 = FUN_0090e910(param_1);
    piVar6 = (int *)FUN_0048a085(uVar5,ppuVar7,uVar3);
    if (piVar6 != (int *)0x0) {
      uVar2 = (**(code **)(*piVar6 + 0x344))(param_2);
      ExceptionList = local_10;
      return uVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



bool FUN_0090ff60(int *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  int *piVar2;
  undefined **ppuVar3;
  int iVar4;
  int *unaff_EBX;
  
  piVar2 = (int *)FUN_0090e980(param_3,1);
  if (piVar2 != (int *)0x0) {
    ppuVar3 = (undefined **)(**(code **)*piVar2)();
    if (ppuVar3 == &PTR_u_wxControl_0323a444) {
LAB_0090ffb1:
      iVar4 = (**(code **)(*piVar2 + 0x34c))(param_2,param_3);
      *unaff_EBX = iVar4;
      return *unaff_EBX != 0;
    }
    if (ppuVar3[3] != (undefined *)0x0) {
      cVar1 = FUN_0048a047(&PTR_u_wxControl_0323a444);
      if (cVar1 != '\0') goto LAB_0090ffb1;
    }
    if (ppuVar3[4] != (undefined *)0x0) {
      cVar1 = FUN_0048a047(&PTR_u_wxControl_0323a444);
      if (cVar1 != '\0') goto LAB_0090ffb1;
    }
  }
  *param_1 = 0;
  return *param_1 != 0;
}



void __fastcall FUN_00910040(int *param_1)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  
  cVar3 = (**(code **)(*param_1 + 0x11c))();
  if (cVar3 != '\0') {
    DAT_032bf64c = 0;
  }
  for (iVar1 = param_1[0x15]; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    piVar2 = *(int **)(iVar1 + 8);
    cVar3 = (**(code **)(*piVar2 + 0x11c))();
    if (cVar3 == '\0') {
      SendMessageW((HWND)piVar2[0x4f],0x15,0,0);
    }
  }
  return;
}



void __thiscall FUN_009100a0(int *param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = FUN_0098fb00(*(undefined4 *)(param_1 + 8));
  if (iVar1 != 0) {
    (**(code **)(*param_1_00 + 0x2fc))(0xf,iVar1,0);
  }
  return;
}



bool __fastcall FUN_009100d0(uint param_1)

{
  undefined4 *puVar1;
  
  for (puVar1 = *(undefined4 **)(DAT_032bf68c + (param_1 % DAT_032bf690) * 4);
      puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) {
    if (puVar1[1] == param_1) goto LAB_009100f3;
  }
  puVar1 = (undefined4 *)0x0;
LAB_009100f3:
  return puVar1 != (undefined4 *)0x0;
}



int __thiscall FUN_00910100(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  
  piVar3 = DAT_032bf648;
  if (DAT_032bf648 == (int *)0x0) {
    piVar3 = param_1_00;
  }
  if (param_1_00 != (int *)0x0) {
    do {
      iVar2 = (**(code **)(*param_1_00 + 0x314))(param_1,piVar3);
      if (iVar2 != 0) {
        return iVar2;
      }
      cVar1 = (**(code **)(*param_1_00 + 0x188))();
    } while (((cVar1 != '\0') && (cVar1 = (**(code **)(*param_1_00 + 0x11c))(), cVar1 == '\0')) &&
            (param_1_00 = (int *)param_1_00[0x11], param_1_00 != (int *)0x0));
  }
  return 0;
}



undefined4 __thiscall FUN_00910170(int *param_1,undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  undefined4 uVar3;
  
  cVar2 = (**(code **)(*param_1 + 0x11c))();
  if ((cVar2 != '\0') || ((*(byte *)(param_1 + 0x37) & 0x80) != 0)) {
    return 0;
  }
  cVar2 = (**(code **)(*param_1 + 0x31c))();
  if (cVar2 == '\0') {
    uVar3 = (**(code **)(*param_1 + 0x318))(param_2,param_1);
    return uVar3;
  }
  piVar1 = (int *)param_1[0x11];
  while( true ) {
    if (piVar1 == (int *)0x0) {
      return 0;
    }
    cVar2 = (**(code **)(*piVar1 + 0x318))(param_2,param_1);
    if (cVar2 != '\0') {
      return 1;
    }
    cVar2 = (**(code **)(*piVar1 + 0x11c))();
    if (cVar2 != '\0') {
      return 0;
    }
    if ((*(byte *)(piVar1 + 0x37) & 0x80) != 0) break;
    piVar1 = (int *)piVar1[0x11];
  }
  return 0;
}



undefined4 __fastcall FUN_00910210(int *param_1)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  undefined3 uVar5;
  int unaff_EDI;
  undefined local_10 [4];
  int iStack_c;
  
  piVar2 = (int *)(**(code **)(*param_1 + 0xa4))(local_10);
  iVar1 = *piVar2;
  iVar3 = (**(code **)(*param_1 + 0xa4))(&stack0xffffffec);
  iVar3 = *(int *)(iVar3 + 4);
  (**(code **)(*param_1 + 0xa8))(&stack0xffffffe8);
  iVar4 = (**(code **)(*param_1 + 0xa8))(&stack0xffffffec);
  iVar4 = *(int *)(iVar4 + 4);
  if (iVar1 != -1) {
    *(int *)(iStack_c + 0x18) = iVar1;
  }
  if (iVar3 != -1) {
    *(int *)(iStack_c + 0x1c) = iVar3;
  }
  if (unaff_EDI != -1) {
    *(int *)(iStack_c + 0x20) = unaff_EDI;
  }
  uVar5 = (undefined3)((uint)iVar4 >> 8);
  if (iVar4 != -1) {
    *(int *)(iStack_c + 0x24) = iVar4;
    return CONCAT31(uVar5,1);
  }
  return CONCAT31(uVar5,unaff_EDI != -1 || (iVar3 != -1 || iVar1 != -1));
}



void __thiscall FUN_009102c0(int *param_1,int param_2,int param_3,uint param_4)

{
  int iVar1;
  SHORT SVar2;
  LONG LVar3;
  int unaff_EBX;
  int unaff_retaddr;
  int local_8;
  undefined4 uStack_4;
  
  (**(code **)(*param_1 + 0x78))(&local_8);
  iVar1 = param_2;
  *(int *)(unaff_retaddr + 0x2c) = param_2 - unaff_EBX;
  *(int *)(unaff_retaddr + 0x30) = param_3 - local_8;
  *(byte *)(unaff_retaddr + 0x28) =
       ((byte)(param_4 >> 2) & 1) * '\x02' | (byte)(param_4 >> 3) & 1 |
       *(byte *)(unaff_retaddr + 0x28) & 0xfc;
  *(byte *)(unaff_retaddr + 0x29) =
       (((((byte)(param_4 >> 6) & 1) * '\x02' | (byte)(param_4 >> 5) & 1) * '\x02' |
        (byte)(param_4 >> 1) & 1) * '\x02' | (byte)(param_4 >> 4) & 1) * '\x02' |
       *(byte *)(unaff_retaddr + 0x29) & 0xe0 | (byte)param_4 & 1;
  SVar2 = GetKeyState(0x12);
  *(byte *)(unaff_retaddr + 0x28) =
       *(byte *)(unaff_retaddr + 0x28) ^
       ((SVar2 < 0) * '\x04' ^ *(byte *)(unaff_retaddr + 0x28)) & 4;
  LVar3 = GetMessageTime();
  *(LONG *)(unaff_retaddr + 0x10) = LVar3;
  *(int **)(unaff_retaddr + 8) = param_1;
  *(int *)(unaff_retaddr + 0x14) = param_1[0x10];
  param_2 = iVar1;
  (**(code **)(*param_1 + 0x25c))(&param_2,&stack0x00000000);
  DAT_032bf660 = uStack_4;
  DAT_032bf664 = local_8;
  DAT_032bf668 = *(undefined4 *)(unaff_retaddr + 0xc);
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined FUN_009103d0(uint param_1,undefined4 param_2,undefined4 param_3,uint param_4)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_54 [18];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6948;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  if ((_DAT_032bf724 & 1) == 0) {
    _DAT_032bf724 = _DAT_032bf724 | 1;
    _DAT_032bf6e0 = DAT_032bfe20;
    _DAT_032bf6e4 = DAT_032bfe08;
    _DAT_032bf6e8 = DAT_032bfe0c;
    _DAT_032bf6ec = DAT_032bfe2c;
    _DAT_032bf6f0 = DAT_032bfe18;
    _DAT_032bf6f4 = DAT_032bfe1c;
    _DAT_032bf6f8 = DAT_032bfe34;
    _DAT_032bf6fc = DAT_032bfe10;
    _DAT_032bf700 = DAT_032bfe14;
    _DAT_032bf704 = DAT_032bfe30;
    _DAT_032bf710 = DAT_032bfe4c;
    _DAT_032bf714 = DAT_032bfe50;
    _DAT_032bf708 = 0;
    _DAT_032bf70c = DAT_032bfe48;
    _DAT_032bf718 = DAT_032bfe54;
    _DAT_032bf71c = DAT_032bfe58;
    _DAT_032bf720 = DAT_032bfe5c;
  }
  if (((0x20a < param_1) && (param_1 < 0x20e)) && ((param_4 & 0x40) != 0)) {
    param_1 = param_1 + (DAT_032bfe54 - DAT_032bfe48);
  }
  FUN_0092b130(*(undefined4 *)(&DAT_032beee0 + param_1 * 4));
  local_4 = 0;
  FUN_009102c0(local_54,param_2,param_3,param_4);
  uVar1 = FUN_0091c170(local_54);
  local_4 = 0xffffffff;
  local_54[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



undefined FUN_00910570(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4)

{
  undefined uVar1;
  undefined4 uVar2;
  uint uVar3;
  undefined4 uVar4;
  uint uVar5;
  undefined **local_4c [10];
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  uint local_18;
  uint local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6978;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar3 = (uint)((param_4 & 0x100) != 0);
  if ((param_4 & 0x200) != 0) {
    uVar3 = 2;
  }
  if ((param_4 & 0x400) != 0) {
    uVar3 = 4;
  }
  if ((param_4 & 0x800) != 0) {
    uVar3 = 8;
  }
  uVar5 = (uint)((param_4 & 1) != 0);
  if ((param_4 & 2) != 0) {
    uVar5 = uVar5 | 2;
  }
  if ((param_4 & 4) != 0) {
    uVar5 = uVar5 | 4;
  }
  if ((param_4 & 8) != 0) {
    uVar5 = uVar5 | 8;
  }
  uVar2 = DAT_032bff4c;
  switch(param_1) {
  case 0x3a0:
    uVar4 = 1;
    uVar2 = DAT_032bff50;
    goto LAB_0091065e;
  case 0x3a1:
    uVar2 = DAT_032bff50;
    break;
  case 0x3a2:
    uVar4 = 1;
    uVar2 = DAT_032bff54;
    goto LAB_0091065e;
  case 0x3a3:
    uVar2 = DAT_032bff54;
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\window.cpp",0x173b,"wxWindow::HandleJoystickEvent",
                   "Assert failure",L"no such joystick event",DAT_0323f878 ^ (uint)&stack0xffffffa4)
      ;
    }
    ExceptionList = local_c;
    return 0;
  case 0x3b5:
    uVar4 = 1;
    uVar2 = DAT_032bff48;
    goto LAB_0091065e;
  case 0x3b6:
    uVar2 = DAT_032bff48;
    break;
  case 0x3b7:
    uVar4 = 1;
    goto LAB_0091065e;
  case 0x3b8:
  }
  uVar4 = 2;
LAB_0091065e:
  FUN_00845a20(0,uVar2);
  local_4c[0] = wxJoystickEvent::vftable;
  local_1c = 0;
  local_20 = param_3;
  local_4 = 0;
  local_24 = param_2;
  local_18 = uVar3;
  local_14 = uVar5;
  local_10 = uVar4;
  uVar1 = FUN_0091c170(local_4c);
  local_4 = 0xffffffff;
  local_4c[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return uVar1;
}



undefined __thiscall FUN_00910750(int param_1_00,int param_1,uint param_2,uint param_3,int param_4)

{
  undefined uVar1;
  int *piVar2;
  undefined4 *puVar3;
  tagSCROLLINFO local_58;
  undefined **local_3c [2];
  int local_34;
  undefined4 local_30;
  void *pvStack_1c;
  uint local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd69a8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (((param_4 != 0) && (param_4 != *(int *)(param_1_00 + 0x13c))) &&
     (piVar2 = (int *)FUN_0090f7c0(param_4,DAT_0323f878 ^ (uint)&stack0xffffff9c),
     piVar2 != (int *)0x0)) {
    uVar1 = (**(code **)(*piVar2 + 0x2e0))(param_1,param_2,param_3,param_4);
    ExceptionList = pvStack_1c;
    return uVar1;
  }
  FUN_0092b080(DAT_032bd44c,0,0);
  local_14 = param_3 & 0xffff;
  local_4 = 0;
  local_10 = param_1;
  local_34 = param_1_00;
  switch(param_2 & 0xffff) {
  case 0:
    local_30 = DAT_032bfeb8;
    break;
  case 1:
    local_30 = DAT_032bfebc;
    break;
  case 2:
    local_30 = DAT_032bfec0;
    break;
  case 3:
    local_30 = DAT_032bfec4;
    break;
  case 4:
  case 5:
    local_58.nMin = 0;
    local_58.nMax = 0;
    local_58.nPage = 0;
    local_58.nPos = 0;
    local_58.nTrackPos = 0;
    local_58.cbSize = 0x1c;
    local_58.fMask = 0x10;
    GetScrollInfo(*(HWND *)(param_1_00 + 0x13c),(uint)(param_1 != 4),&local_58);
    local_14 = local_58.nTrackPos;
    puVar3 = &DAT_032bfecc;
    if ((short)param_2 != 4) {
      puVar3 = &DAT_032bfec8;
    }
    local_30 = *puVar3;
    break;
  case 6:
    local_30 = DAT_032bfeb0;
    break;
  case 7:
    local_30 = DAT_032bfeb4;
    break;
  default:
    local_4 = 0xffffffff;
    local_3c[0] = wxObject::vftable;
    FUN_0083e850();
    ExceptionList = local_c;
    return 0;
  }
  uVar1 = FUN_0091c170(local_3c);
  local_4 = 0xffffffff;
  local_3c[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return uVar1;
}



byte * FUN_00910950(byte *param_1)

{
  SHORT SVar1;
  BOOL BVar2;
  DWORD DVar3;
  int iVar4;
  int iVar5;
  tagPOINT local_8;
  
  *param_1 = *param_1 & 0xf0;
  param_1[1] = param_1[1] & 0xe0;
  *(undefined4 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 8) = 0;
  BVar2 = GetCursorPos(&local_8);
  if (BVar2 == 0) {
    DVar3 = GetMessagePos();
    local_8.x = (LONG)(short)DVar3;
    local_8.y = (LONG)(short)(DVar3 >> 0x10);
  }
  *(LONG *)(param_1 + 4) = local_8.x;
  *(LONG *)(param_1 + 8) = local_8.y;
  iVar5 = 1;
  iVar4 = GetSystemMetrics(0x17);
  if (iVar4 != 0) {
    iVar5 = 2;
  }
  SVar1 = GetAsyncKeyState(iVar5);
  param_1[1] = param_1[1] ^ (param_1[1] ^ (byte)((ushort)SVar1 >> 0xf)) & 1;
  SVar1 = GetAsyncKeyState(4);
  iVar5 = 2;
  param_1[1] = param_1[1] ^ ((char)(SVar1 >> 0xf) * -2 ^ param_1[1]) & 2;
  iVar4 = GetSystemMetrics(0x17);
  if (iVar4 != 0) {
    iVar5 = 1;
  }
  SVar1 = GetAsyncKeyState(iVar5);
  param_1[1] = param_1[1] ^ ((char)(SVar1 >> 0xf) * -4 ^ param_1[1]) & 4;
  SVar1 = GetAsyncKeyState(5);
  param_1[1] = param_1[1] ^ ((char)(SVar1 >> 0xf) * -8 ^ param_1[1]) & 8;
  SVar1 = GetAsyncKeyState(6);
  param_1[1] = param_1[1] ^ ((byte)((ushort)SVar1 >> 0xf) << 4 ^ param_1[1]) & 0x10;
  SVar1 = GetKeyState(0x11);
  *param_1 = *param_1 ^ (*param_1 ^ SVar1 < 0) & 1;
  SVar1 = GetKeyState(0x10);
  *param_1 = *param_1 ^ ((SVar1 < 0) * '\x02' ^ *param_1) & 2;
  SVar1 = GetKeyState(0x12);
  *param_1 = *param_1 ^ ((SVar1 < 0) * '\x04' ^ *param_1) & 4;
  return param_1;
}



undefined4 FUN_00910a90(void)

{
  HWND pHVar1;
  undefined4 uVar2;
  
  pHVar1 = GetActiveWindow();
  if (pHVar1 != (HWND)0x0) {
    uVar2 = FUN_0090f7c0(pHVar1);
    return uVar2;
  }
  return 0;
}



int FUN_00910ab0(HWND param_1)

{
  int iVar1;
  uint uVar2;
  HWND pHVar3;
  undefined4 *puVar4;
  
  iVar1 = 0;
  if (param_1 != (HWND)0x0) {
    iVar1 = FUN_0090f7c0(param_1);
    if (iVar1 == 0) {
      uVar2 = SendMessageW(param_1,0x87,0,0);
      if ((uVar2 & 0x40) != 0) {
        iVar1 = FUN_00991a50(param_1);
      }
      if (iVar1 == 0) {
        iVar1 = FUN_009908d0(param_1);
      }
    }
    do {
      if (iVar1 != 0) {
        return iVar1;
      }
      pHVar3 = GetWindow(param_1,4);
      if (pHVar3 != (HWND)0x0) {
        return 0;
      }
      param_1 = GetParent(param_1);
      for (puVar4 = *(undefined4 **)(DAT_032bf67c + ((uint)param_1 % DAT_032bf680) * 4);
          puVar4 != (undefined4 *)0x0; puVar4 = (undefined4 *)*puVar4) {
        if ((HWND)puVar4[1] == param_1) goto LAB_00910b43;
      }
      puVar4 = (undefined4 *)0x0;
LAB_00910b43:
      if (puVar4 == (undefined4 *)0x0) {
        iVar1 = 0;
      }
      else {
        iVar1 = puVar4[2];
      }
    } while (param_1 != (HWND)0x0);
  }
  return iVar1;
}



LPTEXTMETRICW __thiscall FUN_00910b60(int param_1_00,LPTEXTMETRICW param_1)

{
  HWND hWnd;
  uint uVar1;
  HDC hdc;
  HGDIOBJ h;
  undefined auStack_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd69d8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  hWnd = *(HWND *)(param_1_00 + 0x13c);
  hdc = GetDC(hWnd);
  FUN_0091e100(auStack_14);
  uStack_4 = 0;
  h = (HGDIOBJ)FUN_009229f0(uVar1);
  uStack_4 = 0xffffffff;
  FUN_00921450();
  if (h != (HGDIOBJ)0x0) {
    h = SelectObject(hdc,h);
  }
  GetTextMetricsW(hdc,param_1);
  if (h != (HGDIOBJ)0x0) {
    SelectObject(hdc,h);
  }
  ReleaseDC(hWnd,hdc);
  ExceptionList = local_c;
  return param_1;
}



void FUN_00910c10(POINT *param_1)

{
  WindowFromPoint(*param_1);
  FUN_00910ab0();
  return;
}



void FUN_00910c30(int *param_1)

{
  BOOL BVar1;
  DWORD DVar2;
  tagPOINT local_8;
  
  BVar1 = GetCursorPos(&local_8);
  if (BVar1 == 0) {
    DVar2 = GetMessagePos();
    *param_1 = (int)(short)DVar2;
    param_1[1] = (int)(short)(DVar2 >> 0x10);
    return;
  }
  *param_1 = local_8.x;
  param_1[1] = local_8.y;
  return;
}



void FUN_00910c80(void)

{
  UnhookWindowsHookEx(DAT_032bf65c);
  return;
}



void FUN_00910c90(int param_1,WPARAM param_2,int param_3)

{
  if ((*(int *)(param_3 + 4) == 0) && (param_2 == 1)) {
    (**(code **)(*DAT_032bcb68 + 0x98))();
  }
  CallNextHookEx(DAT_032bf65c,param_1,param_2,param_3);
  return;
}



void __thiscall FUN_00910cd0(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxSysColourChangedEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



undefined4 * __thiscall FUN_00910d20(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_00845a20(0,DAT_032bfe7c);
  param_1_00[10] = param_1;
  local_4 = 0;
  *param_1_00 = wxSetCursorEvent::vftable;
  param_1_00[0xb] = param_2;
  FUN_009743d0(uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00910d90(undefined4 param_1_00,byte param_1)

{
  FUN_0090e100();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00910db0(undefined4 *param_1_00,undefined4 *param_1,undefined4 param_2)

{
  FUN_00845a20(param_2,DAT_032bfed0);
  *param_1_00 = wxSizeEvent::vftable;
  param_1_00[10] = *param_1;
  param_1_00[0xb] = param_1[1];
  param_1_00[0xc] = 0;
  param_1_00[0xd] = 0;
  param_1_00[0xe] = 0;
  param_1_00[0xf] = 0;
  return param_1_00;
}



undefined4 * __fastcall FUN_00910df0(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x40);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxSizeEvent::vftable;
    puVar1[10] = *(undefined4 *)(param_1 + 0x28);
    puVar1[0xb] = *(undefined4 *)(param_1 + 0x2c);
    puVar1[0xc] = *(undefined4 *)(param_1 + 0x30);
    puVar1[0xd] = *(undefined4 *)(param_1 + 0x34);
    puVar1[0xe] = *(undefined4 *)(param_1 + 0x38);
    puVar1[0xf] = *(undefined4 *)(param_1 + 0x3c);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_00910e80(int param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be860b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x40);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxMoveEvent::vftable;
    puVar1[10] = *(undefined4 *)(param_1 + 0x28);
    puVar1[0xb] = *(undefined4 *)(param_1 + 0x2c);
    puVar1[0xc] = 0;
    puVar1[0xd] = 0;
    puVar1[0xe] = 0;
    puVar1[0xf] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00910f10(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxNcPaintEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_00910f80(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxEraseEvent::vftable;
    puVar1[10] = *(undefined4 *)(param_1 + 0x28);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_00910ff0(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxInitDialogEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_00911060(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxShowEvent::vftable;
    *(undefined *)(puVar1 + 10) = *(undefined *)(param_1 + 0x28);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_009110d0(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxIconizeEvent::vftable;
    *(undefined *)(puVar1 + 10) = *(undefined *)(param_1 + 0x28);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_00911140(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxMaximizeEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_009111b0(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxSysColourChangedEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_00911220(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxMouseCaptureChangedEvent::vftable;
    puVar1[10] = *(undefined4 *)(param_1 + 0x28);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_00911290(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxDisplayChangedEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_00911300(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxPaletteChangedEvent::vftable;
    puVar1[10] = *(undefined4 *)(param_1 + 0x28);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_00911370(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxQueryNewPaletteEvent::vftable;
    *(undefined *)(puVar1 + 10) = *(undefined *)(param_1 + 0x28);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_009113e0(undefined4 *param_1)

{
  FUN_00845a20(0,DAT_032bfe6c);
  *param_1 = wxNavigationKeyEvent::vftable;
  param_1[10] = 5;
  param_1[0xb] = 0;
  param_1[8] = 0;
  return param_1;
}



undefined4 * __fastcall FUN_00911410(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x30);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxNavigationKeyEvent::vftable;
    puVar1[10] = *(undefined4 *)(param_1 + 0x28);
    puVar1[0xb] = *(undefined4 *)(param_1 + 0x2c);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 __fastcall FUN_00911480(int param_1)

{
  if (*(int *)(param_1 + 0x194) != 0) {
    return *(undefined4 *)(param_1 + 0x194);
  }
  return *(undefined4 *)(param_1 + 0x188);
}



undefined4 * __fastcall FUN_009114a0(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxPowerEvent::vftable;
    *(undefined *)(puVar1 + 10) = *(undefined *)(param_1 + 0x28);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __thiscall FUN_00911510(int *param_1_00,undefined4 *param_1,int param_2)

{
  int iVar1;
  bool bVar2;
  undefined *puVar3;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be5d79;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar2 = param_2 != 0;
  if (bVar2) {
    puVar3 = local_14;
    (**(code **)(*param_1_00 + 0x198))(puVar3,param_2,DAT_0323f878 ^ (uint)&stack0xffffffe0);
    iVar1 = FUN_008f5ba0(puVar3,param_2);
  }
  else {
    iVar1 = (**(code **)(*param_1_00 + 0x198))();
  }
  *param_1 = wxObject::vftable;
  iVar1 = *(int *)(iVar1 + 4);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1 = wxBitmap::vftable;
  uStack_4 = 0;
  if (bVar2) {
    FUN_008f7630();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_009115c0(int *param_1_00,uint *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  puVar1 = (undefined4 *)(*param_1_00 + (*param_1 % (uint)param_1_00[1]) * 4);
  puVar2 = (undefined4 *)*puVar1;
  while( true ) {
    if (puVar2 == (undefined4 *)0x0) {
      return 0;
    }
    if (puVar2[1] == *param_1) break;
    puVar1 = puVar2;
    puVar2 = (undefined4 *)*puVar2;
  }
  param_1_00[2] = param_1_00[2] + -1;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*puVar1);
}



undefined4 * __thiscall FUN_00911610(int *param_1_00,undefined4 *param_1,int param_2)

{
  int iVar1;
  float fVar2;
  float fVar3;
  undefined4 *puVar4;
  
  puVar4 = (undefined4 *)operator_new(0xc);
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    *puVar4 = 0;
    puVar4[1] = *param_1;
    puVar4[2] = param_1[1];
  }
  *puVar4 = *(undefined4 *)(*param_1_00 + param_2 * 4);
  *(undefined4 **)(*param_1_00 + param_2 * 4) = puVar4;
  param_1_00[2] = param_1_00[2] + 1;
  iVar1 = param_1_00[1];
  fVar2 = (float)param_1_00[2];
  if (param_1_00[2] < 0) {
    fVar2 = fVar2 + 4.294967e+09;
  }
  fVar3 = (float)iVar1;
  if (iVar1 < 0) {
    fVar3 = fVar3 + 4.294967e+09;
  }
  if (0.85 <= fVar2 / fVar3) {
    FUN_0090e820(iVar1);
  }
  return puVar4;
}



undefined4 FUN_009116a0(void)

{
  HWND pHVar1;
  undefined4 uVar2;
  
  pHVar1 = GetFocus();
  if (pHVar1 != (HWND)0x0) {
    uVar2 = FUN_00910ab0(pHVar1);
    return uVar2;
  }
  return 0;
}



void __thiscall FUN_009116c0(int param_1_00,undefined4 param_1)

{
  FUN_0090ea30(*(undefined4 *)(param_1_00 + 0x13c),param_1);
  return;
}



undefined4 FUN_009116e0(void)

{
  HWND pHVar1;
  undefined4 uVar2;
  
  pHVar1 = GetCapture();
  if (pHVar1 != (HWND)0x0) {
    uVar2 = FUN_0090f7c0(pHVar1);
    return uVar2;
  }
  return 0;
}



void __thiscall FUN_00911700(int *param_1,uint param_2)

{
  int *piVar1;
  undefined *puVar2;
  int iVar3;
  undefined *puVar4;
  undefined *unaff_EBX;
  void *unaff_EBP;
  undefined *unaff_ESI;
  undefined *unaff_EDI;
  undefined *puVar5;
  undefined *unaff_retaddr;
  undefined *puVar6;
  undefined *puVar7;
  undefined *apuStack_6c [2];
  undefined local_64 [4];
  undefined local_60 [4];
  undefined **appuStack_5c [2];
  int *piStack_54;
  void *pvStack_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined *puStack_4;
  
  puStack_4 = (undefined *)0xffffffff;
  puStack_8 = &LAB_00bd6a08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar7 = local_60;
  puVar6 = local_64;
  (**(code **)(*param_1 + 0x270))(puVar6,puVar7,DAT_0323f878 ^ (uint)&stack0xffffff84);
  (**(code **)(*param_1 + 0x278))(&stack0xffffff8c,&stack0xffffff90);
  puVar5 = puStack_4;
  if ((((local_c == unaff_EBP) && (puStack_8 == unaff_EBX)) && (puStack_4 == unaff_EDI)) &&
     ((unaff_retaddr == unaff_ESI && ((param_2 & 0x10) == 0)))) {
    if ((param_2 & 0x20) != 0) {
      apuStack_6c[0] = puStack_4;
      FUN_00910db0(apuStack_6c,param_1[0x10]);
      uStack_14 = 0;
      piStack_54 = param_1;
      FUN_0091c170(appuStack_5c);
      uStack_14 = 0xffffffff;
      appuStack_5c[0] = wxObject::vftable;
      FUN_0083e850();
    }
  }
  else {
    if ((local_c == (void *)0xffffffff) && ((param_2 & 4) == 0)) {
      local_c = unaff_EBP;
    }
    if ((puStack_8 == (undefined *)0xffffffff) && ((param_2 & 4) == 0)) {
      puStack_8 = unaff_EBX;
    }
    (**(code **)(*param_1 + 0x2a8))(&local_c,&puStack_8,param_2);
    puVar2 = DAT_03238d08;
    puVar4 = DAT_03238d04;
    if ((puVar5 == (undefined *)0xffffffff) && (puVar5 = puVar6, (param_2 & 1) != 0)) {
      piVar1 = (int *)FUN_0091b530(&stack0xffffff88);
      puVar2 = (undefined *)piVar1[1];
      puVar4 = (undefined *)*piVar1;
      puVar5 = (undefined *)*piVar1;
    }
    if (((unaff_retaddr == (undefined *)0xffffffff) && (unaff_retaddr = puVar7, (param_2 & 2) != 0))
       && (unaff_retaddr = puVar2, puVar4 == (undefined *)0xffffffff)) {
      iVar3 = FUN_0091b530(&stack0xffffff90);
      unaff_retaddr = *(undefined **)(iVar3 + 4);
    }
    (**(code **)(*param_1 + 0x298))(uStack_18,uStack_14,puVar5,unaff_retaddr);
  }
  ExceptionList = pvStack_1c;
  return;
}



undefined4 FUN_009118d0(void)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 local_78 [15];
  undefined local_3c [60];
  
  puVar1 = (undefined4 *)FUN_00910b60(local_3c);
  puVar3 = local_78;
  for (iVar2 = 0xf; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar3 = *puVar1;
    puVar1 = puVar1 + 1;
    puVar3 = puVar3 + 1;
  }
  return local_78[0];
}



int FUN_00911900(void)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 local_78 [5];
  int local_64;
  undefined local_3c [60];
  
  puVar1 = (undefined4 *)FUN_00910b60(local_3c);
  puVar3 = local_78;
  for (iVar2 = 0xf; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar3 = *puVar1;
    puVar1 = puVar1 + 1;
    puVar3 = puVar3 + 1;
  }
  return local_64 + 1;
}



undefined4 __thiscall FUN_00911930(int *param_1_00,int param_1,int param_2,int param_3)

{
  int *piVar1;
  int iVar2;
  int y;
  UINT uFlags;
  int x;
  undefined local_8 [8];
  
  FUN_0095a350(0);
  if ((param_2 == -1) && (param_3 == -1)) {
    piVar1 = (int *)FUN_00910c30(local_8);
    y = piVar1[1];
    x = *piVar1;
  }
  else {
    (**(code **)(*param_1_00 + 0x25c))(&param_2,&param_3);
    y = param_3;
    x = param_2;
  }
  uFlags = 2;
  iVar2 = FUN_00894b40();
  if (0x4ff < iVar2) {
    uFlags = 3;
  }
  TrackPopupMenu(*(HMENU *)(param_1 + 0x98),uFlags,x,y,0,(HWND)param_1_00[0x4f],(RECT *)0x0);
  FUN_0090d830();
  return 1;
}



undefined4 __thiscall FUN_009119e0(int *param_1_00,LPMSG param_1)

{
  bool bVar1;
  bool bVar2;
  char cVar3;
  SHORT SVar4;
  uint uVar5;
  BOOL BVar6;
  LONG LVar7;
  int *piVar8;
  int iVar9;
  undefined4 uVar10;
  bool bVar11;
  bool bVar12;
  undefined **appuStack_3c [2];
  int *piStack_34;
  uint uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a38;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1_00[0x4f] == 0) ||
     (uVar5 = (**(code **)(*param_1_00 + 0xe8))(DAT_0323f878 ^ (uint)&stack0xffffffac),
     (uVar5 & 0x80000) == 0)) goto LAB_00911b13;
  if (param_1->message != 0x100) goto LAB_00911afd;
  SVar4 = GetKeyState(0x11);
  bVar11 = SVar4 < 0;
  SVar4 = GetKeyState(0x10);
  bVar12 = -1 < SVar4;
  uVar5 = SendMessageW(param_1->hwnd,0x87,0,0);
  if ((uVar5 & 4) != 0) {
    uVar5 = uVar5 | 3;
  }
  bVar1 = false;
  bVar2 = true;
  switch(param_1->wParam) {
  case 9:
    if (((uVar5 & 2) != 0) && (!bVar11)) break;
    bVar1 = true;
    goto LAB_00911abb;
  default:
    break;
  case 0xd:
    if ((uVar5 & 0x10) != 0) {
      LVar7 = GetWindowLongW(param_1->hwnd,-0x10);
      if (((byte)LVar7 & 0xb) != 0xb) break;
      piVar8 = (int *)FUN_0090f7c0(param_1->hwnd);
LAB_00911bf1:
      if ((piVar8 == (int *)0x0) || (cVar3 = FUN_0091b930(), cVar3 == '\0')) break;
      (**(code **)(*piVar8 + 0x2d0))(0,0);
      goto LAB_00911c1a;
    }
    piVar8 = param_1_00;
    if (bVar11) {
      piVar8 = (int *)FUN_0091cdc0(param_1_00);
LAB_00911bc6:
      iVar9 = FUN_0048a085(piVar8,&PTR_u_wxTopLevelWindow_03239ae4);
      if (iVar9 != 0) {
        uVar10 = FUN_00911480(&PTR_u_wxButton_0323a6e4);
        piVar8 = (int *)FUN_0048a085(uVar10);
        goto LAB_00911bf1;
      }
      break;
    }
    while ((uVar5 & 4) == 0) {
      cVar3 = (**(code **)(*piVar8 + 0x11c))();
      if (cVar3 != '\0') goto LAB_00911bc6;
      piVar8 = (int *)piVar8[0x11];
      uVar5 = SendMessageW((HWND)piVar8[0x4f],0x87,0,0);
    }
    goto LAB_00911b2e;
  case 0x21:
    bVar2 = false;
  case 0x22:
    bVar12 = bVar2;
    if (((uVar5 & 1) == 0) || (bVar11)) {
      bVar11 = true;
LAB_00911abb:
      FUN_009113e0();
      uStack_4 = 0;
      if (bVar12) {
        uStack_14 = uStack_14 | 1;
      }
      else {
        uStack_14 = uStack_14 & 0xfffffffe;
      }
      if (bVar11) {
        uStack_14 = uStack_14 | 2;
      }
      else {
        uStack_14 = uStack_14 & 0xfffffffd;
      }
      if (bVar1) {
        uStack_14 = uStack_14 | 4;
      }
      else {
        uStack_14 = uStack_14 & 0xfffffffb;
      }
      piStack_34 = param_1_00;
      cVar3 = FUN_0091c170(appuStack_3c);
      if (cVar3 != '\0') {
        FUN_0090ec20(2,1);
        uStack_4 = 0xffffffff;
        appuStack_3c[0] = wxObject::vftable;
        FUN_0083e850();
        ExceptionList = local_c;
        return 1;
      }
      uStack_4 = 0xffffffff;
      appuStack_3c[0] = wxObject::vftable;
      FUN_0083e850();
    }
    break;
  case 0x25:
  case 0x26:
    bVar12 = bVar11;
    goto joined_r0x00911af3;
  case 0x27:
  case 0x28:
    bVar12 = true;
joined_r0x00911af3:
    if (((uVar5 & 1) == 0) && (bVar2 = !bVar11, bVar11 = false, bVar2)) goto LAB_00911abb;
  }
LAB_00911afd:
  BVar6 = IsDialogMessageW((HWND)param_1_00[0x4f],param_1);
  if (BVar6 == 0) {
LAB_00911b13:
    if ((param_1_00[0x32] != 0) && (param_1->message == 0x200)) {
      FUN_0098e9c0(param_1);
    }
LAB_00911b2e:
    uVar10 = 0;
  }
  else {
LAB_00911c1a:
    uVar10 = 1;
  }
  ExceptionList = local_c;
  return uVar10;
}



void FUN_00911cf0(int param_1)

{
  param_1 = *(undefined4 *)(param_1 + 0x13c);
  FUN_009115c0(&param_1);
  return;
}



undefined __thiscall FUN_00911d10(int param_1_00,undefined param_1)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_38 [2];
  int local_30;
  undefined local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a68;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  FUN_00845a20(*(undefined4 *)(param_1_00 + 0x40),DAT_032bff08);
  local_38[0] = wxShowEvent::vftable;
  local_10 = param_1;
  local_4 = 0;
  local_30 = param_1_00;
  uVar1 = FUN_0091c170(local_38);
  local_4 = 0xffffffff;
  local_38[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



undefined __fastcall FUN_00911db0(int param_1)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_34 [2];
  int local_2c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a98;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_00845a20(*(undefined4 *)(param_1 + 0x40),DAT_032bff5c);
  local_34[0] = wxInitDialogEvent::vftable;
  local_4 = 0;
  local_2c = param_1;
  uVar1 = FUN_0091c170(local_34);
  local_4 = 0xffffffff;
  local_34[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



undefined4 __thiscall FUN_00911e40(int *param_1_00,undefined4 param_1,int param_2)

{
  char cVar1;
  BOOL BVar2;
  DWORD DVar3;
  int *piVar4;
  undefined4 unaff_ESI;
  HCURSOR hCursor;
  undefined4 unaff_retaddr;
  int iStack_50;
  tagPOINT local_4c;
  int *piStack_44;
  int iStack_38;
  int iStack_1c;
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6ac8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  hCursor = (HCURSOR)0x0;
  cVar1 = FUN_0095dbe0(DAT_0323f878 ^ (uint)&stack0xffffffa4);
  if (cVar1 != '\0') {
    hCursor = (HCURSOR)FUN_0095db70();
    goto LAB_00911f84;
  }
  if ((short)param_2 != 1) {
    ExceptionList = local_c;
    return 0;
  }
  BVar2 = GetCursorPos(&local_4c);
  if (BVar2 == 0) {
    DVar3 = GetMessagePos();
    local_4c.x = (LONG)(short)DVar3;
    local_4c.y = (LONG)(short)(DVar3 >> 0x10);
  }
  iStack_50 = local_4c.x;
  param_2 = local_4c.y;
  (**(code **)(*param_1_00 + 0x260))(&iStack_50,&param_2);
  FUN_00910d20(unaff_ESI,unaff_retaddr);
  iStack_38 = param_1_00[0x10];
  local_c = (void *)0x0;
  piStack_44 = param_1_00;
  cVar1 = FUN_0091c170(&local_4c);
  if (cVar1 == '\0') {
    cVar1 = (**(code **)(param_1_00[0x1f] + 0x10))();
    if (cVar1 != '\0') {
      iStack_10 = param_1_00[0x20];
      goto LAB_00911f38;
    }
LAB_00911f47:
    if (((param_1_00[0x11] == 0) && (piVar4 = (int *)FUN_00974260(), piVar4 != (int *)0x0)) &&
       (cVar1 = (**(code **)(*piVar4 + 0x10))(), cVar1 != '\0')) {
      if (piVar4[1] == 0) {
        hCursor = (HCURSOR)0x0;
      }
      else {
        hCursor = *(HCURSOR *)(piVar4[1] + 0x14);
      }
    }
  }
  else {
    cVar1 = (**(code **)(iStack_1c + 0x10))();
    if (cVar1 == '\0') goto LAB_00911f47;
LAB_00911f38:
    if (iStack_10 == 0) {
      hCursor = (HCURSOR)0x0;
      goto LAB_00911f47;
    }
    hCursor = *(HCURSOR *)(iStack_10 + 0x14);
    if (hCursor == (HCURSOR)0x0) goto LAB_00911f47;
  }
  uStack_4 = 0xffffffff;
  FUN_0090e100();
LAB_00911f84:
  if (hCursor == (HCURSOR)0x0) {
    ExceptionList = local_c;
    return 0;
  }
  SetCursor(hCursor);
  ExceptionList = local_c;
  return 1;
}



uint FUN_00911fc0(void)

{
  uint uVar1;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8eb8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  FUN_00845a20(0,DAT_032bff38);
  local_34[0] = wxSysColourChangedEvent::vftable;
  local_4 = 0;
  FUN_0091c170(local_34);
  local_4 = 0xffffffff;
  local_34[0] = wxObject::vftable;
  uVar1 = FUN_0083e850(uVar1);
  ExceptionList = local_c;
  return uVar1 & 0xffffff00;
}



undefined FUN_00912050(void)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a98;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_00845a20(0,DAT_032bff3c);
  local_34[0] = wxDisplayChangedEvent::vftable;
  local_4 = 0;
  uVar1 = FUN_0091c170(local_34);
  local_4 = 0xffffffff;
  local_34[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



undefined __thiscall FUN_009120e0(int param_1_00,HWND param_1)

{
  int *piVar1;
  undefined uVar2;
  uint uVar3;
  HDC hdc;
  HPALETTE pHVar4;
  UINT UVar5;
  undefined4 *puVar6;
  int iVar7;
  BOOL BVar8;
  undefined **local_38 [2];
  int local_30;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6af8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  iVar7 = param_1_00;
  if (param_1 != *(HWND *)(param_1_00 + 0x13c)) {
    do {
      if (*(char *)(iVar7 + 0x11c) != '\0') {
        hdc = GetDC(param_1);
        BVar8 = 0;
        pHVar4 = (HPALETTE)FUN_00992eb0();
        pHVar4 = SelectPalette(hdc,pHVar4,BVar8);
        FUN_00973fd0(pHVar4);
        UVar5 = RealizePalette(hdc);
        BVar8 = 0;
        pHVar4 = (HPALETTE)FUN_00992eb0();
        pHVar4 = SelectPalette(hdc,pHVar4,BVar8);
        FUN_00973fd0(pHVar4);
        RealizePalette(hdc);
        ReleaseDC(param_1,hdc);
        if (0 < (int)UVar5) {
          InvalidateRect(param_1,(RECT *)0x0,1);
        }
        break;
      }
      piVar1 = (int *)(iVar7 + 0x44);
      iVar7 = *piVar1;
    } while (*piVar1 != 0);
  }
  FUN_00845a20(*(undefined4 *)(param_1_00 + 0x40),DAT_032bff44);
  local_38[0] = wxPaletteChangedEvent::vftable;
  local_4 = 0;
  for (puVar6 = *(undefined4 **)(DAT_032bf67c + ((uint)param_1 % DAT_032bf680) * 4);
      puVar6 != (undefined4 *)0x0; puVar6 = (undefined4 *)*puVar6) {
    if ((HWND)puVar6[1] == param_1) goto LAB_009121ef;
  }
  puVar6 = (undefined4 *)0x0;
LAB_009121ef:
  if (puVar6 == (undefined4 *)0x0) {
    local_10 = 0;
  }
  else {
    local_10 = puVar6[2];
  }
  local_30 = param_1_00;
  uVar2 = FUN_0091c170(local_38);
  local_4 = 0xffffffff;
  local_38[0] = wxObject::vftable;
  FUN_0083e850(uVar3);
  ExceptionList = local_c;
  return uVar2;
}



undefined __thiscall FUN_00912240(int param_1_00,uint param_1)

{
  undefined uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined **local_38 [2];
  int local_30;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf5438;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0091d860(DAT_0323f878 ^ (uint)&stack0xffffffbc);
  for (puVar2 = *(undefined4 **)(DAT_032bf67c + (param_1 % DAT_032bf680) * 4);
      puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)*puVar2) {
    if (puVar2[1] == param_1) goto LAB_00912294;
  }
  puVar2 = (undefined4 *)0x0;
LAB_00912294:
  if (puVar2 == (undefined4 *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = puVar2[2];
  }
  FUN_00845a20(*(undefined4 *)(param_1_00 + 0x40),DAT_032bff14);
  local_38[0] = wxMouseCaptureChangedEvent::vftable;
  local_4 = 0;
  local_30 = param_1_00;
  local_10 = uVar3;
  uVar1 = FUN_0091c170(local_38);
  local_4 = 0xffffffff;
  local_38[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return uVar1;
}



undefined __fastcall FUN_00912310(int param_1)

{
  int iVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  HDC hdc;
  HPALETTE pHVar5;
  UINT UVar6;
  undefined uVar7;
  BOOL BVar8;
  undefined **local_38 [2];
  int local_30;
  char local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6af8;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  cVar3 = *(char *)(param_1 + 0x11c);
  iVar2 = param_1;
  while ((cVar3 == '\0' && (iVar1 = *(int *)(iVar2 + 0x44), iVar1 != 0))) {
    cVar3 = *(char *)(iVar1 + 0x11c);
    iVar2 = iVar1;
  }
  if (*(char *)(iVar2 + 0x11c) != '\0') {
    hdc = GetDC(*(HWND *)(param_1 + 0x13c));
    BVar8 = 0;
    pHVar5 = (HPALETTE)FUN_00992eb0();
    pHVar5 = SelectPalette(hdc,pHVar5,BVar8);
    FUN_00973fd0(pHVar5);
    UVar6 = RealizePalette(hdc);
    BVar8 = 1;
    pHVar5 = (HPALETTE)FUN_00992eb0();
    pHVar5 = SelectPalette(hdc,pHVar5,BVar8);
    FUN_00973fd0(pHVar5);
    RealizePalette(hdc);
    ReleaseDC(*(HWND *)(param_1 + 0x13c),hdc);
    if (0 < (int)UVar6) {
      InvalidateRect(*(HWND *)(param_1 + 0x13c),(RECT *)0x0,1);
    }
  }
  FUN_00845a20(*(undefined4 *)(param_1 + 0x40),DAT_032bff40);
  local_38[0] = wxQueryNewPaletteEvent::vftable;
  local_10 = '\0';
  local_4 = 0;
  local_30 = param_1;
  cVar3 = FUN_0091c170(local_38);
  if ((cVar3 == '\0') || (local_10 == '\0')) {
    uVar7 = 0;
  }
  else {
    uVar7 = 1;
  }
  local_4 = 0xffffffff;
  local_38[0] = wxObject::vftable;
  FUN_0083e850(uVar4);
  ExceptionList = local_c;
  return uVar7;
}



undefined4 FUN_00912460(HDC param_1)

{
  HBRUSH hbr;
  int *piVar1;
  RECT local_20;
  undefined local_10 [16];
  
  hbr = (HBRUSH)FUN_00910100(param_1);
  if (hbr == (HBRUSH)0x0) {
    return 0;
  }
  piVar1 = (int *)FUN_007b0d3e(local_10);
  local_20.top = piVar1[1];
  local_20.left = *piVar1;
  local_20.right = piVar1[2] + *piVar1;
  local_20.bottom = piVar1[3] + piVar1[1];
  FillRect(param_1,&local_20,hbr);
  return 1;
}



undefined __fastcall FUN_009124d0(int param_1)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_38 [2];
  int local_30;
  undefined local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a68;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  FUN_00845a20(*(undefined4 *)(param_1 + 0x40),DAT_032bff0c);
  local_38[0] = wxIconizeEvent::vftable;
  local_10 = 1;
  local_4 = 0;
  local_30 = param_1;
  uVar1 = FUN_0091c170(local_38);
  local_4 = 0xffffffff;
  local_38[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



undefined __fastcall FUN_00912560(int param_1)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_34 [2];
  int local_2c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a98;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_00845a20(*(undefined4 *)(param_1 + 0x40),DAT_032bff10);
  local_34[0] = wxMaximizeEvent::vftable;
  local_4 = 0;
  local_2c = param_1;
  uVar1 = FUN_0091c170(local_34);
  local_4 = 0xffffffff;
  local_34[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



undefined __thiscall FUN_009125f0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_4c [2];
  int local_44;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6b28;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  FUN_00845a20(*(undefined4 *)(param_1_00 + 0x40),DAT_032bfed8);
  local_4c[0] = wxMoveEvent::vftable;
  local_24 = param_1;
  local_20 = param_2;
  local_1c = 0;
  local_18 = 0;
  local_14 = 0;
  local_10 = 0;
  local_4 = 0;
  local_44 = param_1_00;
  uVar1 = FUN_0091c170(local_4c);
  local_4 = 0xffffffff;
  local_4c[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



char __thiscall FUN_009126a0(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  char cVar2;
  uint uVar3;
  undefined **local_4c [2];
  int local_44;
  undefined4 local_40;
  undefined4 local_38;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6b28;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  uVar1 = *(undefined4 *)(param_1_00 + 0x40);
  FUN_00845a20(0,DAT_032bd44c);
  local_24 = *param_1;
  local_20 = param_1[1];
  local_14 = param_1[2];
  local_10 = param_1[3];
  local_4c[0] = wxMoveEvent::vftable;
  local_40 = DAT_032bfedc;
  local_4 = 0;
  local_44 = param_1_00;
  local_38 = uVar1;
  local_1c = local_24;
  local_18 = local_20;
  cVar2 = FUN_0091c170(local_4c);
  if (cVar2 != '\0') {
    *param_1 = local_1c;
    param_1[1] = local_18;
    param_1[2] = local_14;
    param_1[3] = local_10;
  }
  local_4 = 0xffffffff;
  local_4c[0] = wxObject::vftable;
  FUN_0083e850(uVar3);
  ExceptionList = local_c;
  return cVar2;
}



undefined __fastcall FUN_00912790(int param_1)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_4c [2];
  int local_44;
  undefined4 local_40;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6b28;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  FUN_00845a20(*(undefined4 *)(param_1 + 0x40),DAT_032bfed8);
  local_4c[0] = wxMoveEvent::vftable;
  local_24 = 0;
  local_20 = 0;
  local_1c = 0;
  local_18 = 0;
  local_14 = 0;
  local_10 = 0;
  local_4 = 0;
  local_40 = DAT_032bfee0;
  local_44 = param_1;
  uVar1 = FUN_0091c170(local_4c);
  local_4 = 0xffffffff;
  local_4c[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



undefined __fastcall FUN_00912840(int param_1)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_4c [2];
  int local_44;
  undefined4 local_40;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6b28;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  FUN_00845a20(*(undefined4 *)(param_1 + 0x40),DAT_032bfed8);
  local_4c[0] = wxMoveEvent::vftable;
  local_24 = 0;
  local_20 = 0;
  local_1c = 0;
  local_18 = 0;
  local_14 = 0;
  local_10 = 0;
  local_4 = 0;
  local_40 = DAT_032bfee4;
  local_44 = param_1;
  uVar1 = FUN_0091c170(local_4c);
  local_4 = 0xffffffff;
  local_4c[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



char __thiscall FUN_009128f0(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  char cVar2;
  uint uVar3;
  undefined **local_4c [2];
  int local_44;
  undefined4 local_40;
  undefined4 local_38;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6b28;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  uVar1 = *(undefined4 *)(param_1_00 + 0x40);
  FUN_00845a20(0,DAT_032bd44c);
  local_20 = param_1[3];
  local_1c = *param_1;
  local_24 = param_1[2];
  local_18 = param_1[1];
  local_10 = param_1[3];
  local_4c[0] = wxSizeEvent::vftable;
  local_40 = DAT_032bfed4;
  local_4 = 0;
  local_44 = param_1_00;
  local_38 = uVar1;
  local_14 = local_24;
  cVar2 = FUN_0091c170(local_4c);
  if (cVar2 != '\0') {
    *param_1 = local_1c;
    param_1[1] = local_18;
    param_1[2] = local_14;
    param_1[3] = local_10;
  }
  local_4 = 0xffffffff;
  local_4c[0] = wxObject::vftable;
  FUN_0083e850(uVar3);
  ExceptionList = local_c;
  return cVar2;
}



void FUN_009129e0(int param_1,undefined4 param_2,uint param_3,int *param_4)

{
  int iVar1;
  int *piVar2;
  SHORT SVar3;
  LONG LVar4;
  BOOL BVar5;
  DWORD DVar6;
  tagPOINT tStack_8;
  
  piVar2 = param_4;
  iVar1 = param_1;
  if (param_4 == (int *)0x0) {
    *(undefined4 *)(param_1 + 0x14) = 0xffffffff;
  }
  else {
    *(int *)(param_1 + 0x14) = param_4[0x10];
    *(int **)(param_1 + 8) = param_4;
  }
  SVar3 = GetKeyState(0x10);
  *(byte *)(iVar1 + 0x28) =
       *(byte *)(iVar1 + 0x28) ^ ((SVar3 < 0) * '\x02' ^ *(byte *)(iVar1 + 0x28)) & 2;
  SVar3 = GetKeyState(0x11);
  *(byte *)(iVar1 + 0x28) =
       SVar3 < 0 | ((param_3 >> 0x10 & 0x2000) == 0x2000) * '\x04' | *(byte *)(iVar1 + 0x28) & 0xfa;
  *(undefined4 *)(iVar1 + 0x3c) = param_2;
  *(uint *)(iVar1 + 0x40) = param_3;
  LVar4 = GetMessageTime();
  *(LONG *)(iVar1 + 0x10) = LVar4;
  if (piVar2 != (int *)0x0) {
    BVar5 = GetCursorPos(&tStack_8);
    if (BVar5 == 0) {
      DVar6 = GetMessagePos();
      tStack_8.x = (LONG)(short)DVar6;
      tStack_8.y = (LONG)(short)(DVar6 >> 0x10);
    }
    param_1 = tStack_8.x;
    param_4 = (int *)tStack_8.y;
    (**(code **)(*piVar2 + 0x260))(&param_1,&param_4);
    *(LONG *)(iVar1 + 0x2c) = tStack_8.y;
    *(undefined4 *)(iVar1 + 0x30) = param_2;
  }
  return;
}



int __thiscall
FUN_00912ad0(undefined4 param_1_00,int param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd6b69;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((param_2 == DAT_032bfe60 || (param_2 == DAT_032bfe68)))) {
    FUN_008402e0("..\\..\\src\\msw\\window.cpp",0x1643,"wxWindow::CreateKeyEvent",
                 "evType != wxEVT_CHAR && evType != wxEVT_CHAR_HOOK",
                 "CreateKeyEvent() can\'t be used for char events",
                 DAT_0323f878 ^ (uint)&stack0xffffffe4);
  }
  FUN_0092bbc0(param_2);
  local_4 = 0;
  FUN_009129e0(param_1,param_3,param_4,param_1_00);
  uVar1 = FUN_0090da40(param_3,param_4,param_1 + 0x38);
  *(undefined4 *)(param_1 + 0x34) = uVar1;
  ExceptionList = local_c;
  return param_1;
}



int __thiscall
FUN_00912b90(undefined4 param_1_00,int param_1,uint param_2,uint param_3,uint param_4)

{
  byte bVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdea89;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0092bbc0(param_2);
  uVar2 = param_3;
  local_4 = 0;
  FUN_009129e0(param_1,param_3,param_4,param_1_00,uVar3);
  *(short *)(param_1 + 0x38) = (short)uVar2;
  if (uVar2 < 0x80) {
    *(uint *)(param_1 + 0x34) = uVar2;
  }
  else {
    param_4 = uVar2 & 0xffff;
    if (DAT_032bd4d4 == (int *)0x0) {
      DAT_032bd4d4 = (int *)FUN_00861440();
    }
    iVar4 = (**(code **)(*DAT_032bd4d4 + 4))(&param_2,1,&param_4,1);
    if (iVar4 != -1) {
      *(uint *)(param_1 + 0x34) = param_2 & 0xff;
    }
  }
  bVar1 = *(byte *)(param_1 + 0x28);
  if (((((bVar1 & 1) != 0) && ((bVar1 & 4) != 0)) && (0x1f < *(int *)(param_1 + 0x34))) &&
     (*(int *)(param_1 + 0x34) < 0x100)) {
    *(byte *)(param_1 + 0x28) = bVar1 & 0xfa;
  }
  ExceptionList = local_c;
  return param_1;
}



undefined FUN_00912c80(undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_54 [18];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6b98;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  FUN_00912b90(local_54,DAT_032bfe60,param_1,param_2);
  local_4 = 0;
  uVar1 = FUN_0091c170(local_54);
  local_4 = 0xffffffff;
  local_54[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



undefined FUN_00912d10(undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_54 [18];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6b98;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  FUN_00912ad0(local_54,DAT_032bfe70,param_1,param_2);
  local_4 = 0;
  uVar1 = FUN_0091c170(local_54);
  local_4 = 0xffffffff;
  local_54[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



undefined FUN_00912da0(undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_54 [18];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6b98;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  FUN_00912ad0(local_54,DAT_032bfe74,param_1,param_2);
  local_4 = 0;
  uVar1 = FUN_0091c170(local_54);
  local_4 = 0xffffffff;
  local_54[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



LRESULT FUN_00912e30(int param_1,uint param_2,uint param_3)

{
  short sVar1;
  uint lParam;
  char cVar2;
  int iVar3;
  HWND pHVar4;
  int iVar5;
  LRESULT LVar6;
  int *piVar7;
  undefined **appuStack_54 [13];
  int iStack_20;
  short sStack_1c;
  char cStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  lParam = param_3;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6bf8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (((((param_1 != 3) && ((param_3 >> 0x10 & 0x8000) == 0)) &&
       (iVar3 = FUN_0090da40(param_2,param_3,&param_3,DAT_0323f878 ^ (uint)&stack0xffffff9c),
       DAT_032bf650 == 0)) && (pHVar4 = GetCapture(), pHVar4 == (HWND)0x0)) &&
     ((sVar1 = (short)param_3, iVar3 != 0 || ((short)param_3 != 0)))) {
    iVar5 = FUN_009116a0();
    if (iVar5 == 0) {
      iVar5 = FUN_00910a90();
    }
    FUN_0092bbc0(DAT_032bfe68);
    uStack_4 = 0;
    FUN_009129e0(appuStack_54,param_2 & 0xffff,lParam,iVar5);
    sStack_1c = sVar1;
    piVar7 = DAT_032bcb68;
    if (iVar5 != 0) {
      piVar7 = *(int **)(iVar5 + 0x70);
    }
    iStack_20 = iVar3;
    if (((piVar7 != (int *)0x0) &&
        (cVar2 = (**(code **)(*piVar7 + 0x18))(appuStack_54), cVar2 != '\0')) && (cStack_10 == '\0')
       ) {
      uStack_4 = 0xffffffff;
      appuStack_54[0] = wxObject::vftable;
      FUN_0083e850();
      ExceptionList = local_c;
      return 1;
    }
    uStack_4 = 0xffffffff;
    appuStack_54[0] = wxObject::vftable;
    FUN_0083e850();
  }
  LVar6 = CallNextHookEx(DAT_032bf658,param_1,param_2 & 0xffff,lParam);
  ExceptionList = local_c;
  return LVar6;
}



void FUN_00912fa0(LONG *param_1)

{
  POINT Point;
  BOOL BVar1;
  DWORD DVar2;
  tagPOINT local_8;
  
  BVar1 = GetCursorPos(&local_8);
  if (BVar1 == 0) {
    DVar2 = GetMessagePos();
    local_8.x = (LONG)(short)DVar2;
    local_8.y = (LONG)(short)(DVar2 >> 0x10);
  }
  param_1[1] = local_8.y;
  *param_1 = local_8.x;
  Point.y = param_1[1];
  Point.x = local_8.x;
  WindowFromPoint(Point);
  FUN_00910ab0();
  return;
}



undefined FUN_00912ff0(undefined4 param_1,uint param_2)

{
  undefined uVar1;
  uint uVar2;
  uint uVar3;
  undefined **local_54 [5];
  undefined4 local_40;
  byte local_2c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6b98;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  uVar3 = param_2 & 0xffff;
  FUN_00912ad0(local_54,DAT_032bfe78,param_2 >> 0x10,0);
  local_40 = param_1;
  local_2c = ((((byte)(uVar3 >> 3) & 1) * '\x02' | (byte)param_2 & 1) * '\x02' |
             (byte)(uVar3 >> 2) & 1) * '\x02' | (byte)(uVar3 >> 1) & 1 | local_2c & 0xf0;
  local_4 = 0;
  uVar1 = FUN_0091c170(local_54);
  local_4 = 0xffffffff;
  local_54[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



undefined4 * FUN_009130c0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxIdleWakeUpModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 * FUN_00913120(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxSysColourChangedEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __thiscall FUN_00913190(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  *param_1_00 = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 4);
  param_1_00[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1_00 = wxCursor::vftable;
  return;
}



void __thiscall FUN_009131c0(int param_1_00,int param_1)

{
  if (param_1_00 + 0xbc != param_1) {
    FUN_0083ea60(param_1);
  }
  *(undefined4 *)(param_1_00 + 0xc4) = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 200) = *(undefined *)(param_1 + 0xc);
  *(undefined *)(param_1_00 + 0xc9) = *(undefined *)(param_1 + 0xd);
  *(undefined *)(param_1_00 + 0xca) = *(undefined *)(param_1 + 0xe);
  *(undefined *)(param_1_00 + 0xcb) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 0xcc) = *(undefined *)(param_1 + 0x10);
  return;
}



void __thiscall FUN_00913210(int param_1_00,int param_1)

{
  if (param_1_00 + 0xd0 != param_1) {
    FUN_0083ea60(param_1);
  }
  *(undefined4 *)(param_1_00 + 0xd8) = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 0xdc) = *(undefined *)(param_1 + 0xc);
  *(undefined *)(param_1_00 + 0xdd) = *(undefined *)(param_1 + 0xd);
  *(undefined *)(param_1_00 + 0xde) = *(undefined *)(param_1 + 0xe);
  *(undefined *)(param_1_00 + 0xdf) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 0xe0) = *(undefined *)(param_1 + 0x10);
  return;
}



undefined4 * __thiscall FUN_00913260(int *param_1_00,undefined4 *param_1,uint *param_2)

{
  undefined4 *puVar1;
  undefined uVar2;
  uint local_8;
  uint local_4;
  
  local_8 = *param_2;
  local_4 = param_2[1];
  puVar1 = *(undefined4 **)(*param_1_00 + (local_8 % (uint)param_1_00[1]) * 4);
  do {
    if (puVar1 == (undefined4 *)0x0) {
      uVar2 = 1;
      puVar1 = (undefined4 *)FUN_00911610(&local_8,local_8 % (uint)param_1_00[1]);
LAB_009132a2:
      param_1[1] = param_1_00;
      *param_1 = puVar1;
      *(undefined *)(param_1 + 2) = uVar2;
      return param_1;
    }
    if (puVar1[1] == local_8) {
      uVar2 = 0;
      goto LAB_009132a2;
    }
    puVar1 = (undefined4 *)*puVar1;
  } while( true );
}



void __thiscall
FUN_009132c0(int param_1_00,int param_1,LONG *param_2,LONG *param_3,LONG *param_4,LONG *param_5,
            int *param_6)

{
  HWND hWnd;
  char cVar1;
  HGDIOBJ pvVar2;
  HDC hdc;
  LPCWSTR lpString;
  tagSIZE tStack_58;
  undefined local_50 [8];
  tagTEXTMETRICW tStack_48;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6bc8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_0091332b:
    if (param_6 != (int *)0x0) {
      pvVar2 = (HGDIOBJ)FUN_009229f0();
      goto LAB_00913368;
    }
  }
  else if (param_6 != (int *)0x0) {
    cVar1 = (**(code **)(*param_6 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffff98);
    if (cVar1 == '\0') {
      FUN_00840480("..\\..\\src\\msw\\window.cpp",0x874,"wxWindow::DoGetTextExtent",
                   "!fontToUse || fontToUse->IsOk()",L"invalid font in GetTextExtent()");
    }
    goto LAB_0091332b;
  }
  FUN_0091e100(local_50);
  uStack_4 = 0;
  pvVar2 = (HGDIOBJ)FUN_009229f0();
  uStack_4 = 0xffffffff;
  FUN_00921450();
LAB_00913368:
  hWnd = *(HWND *)(param_1_00 + 0x13c);
  hdc = GetDC(hWnd);
  pvVar2 = SelectObject(hdc,pvVar2);
  if (*(uint *)(param_1 + 0x18) < 8) {
    lpString = (LPCWSTR)(param_1 + 4);
  }
  else {
    lpString = *(LPCWSTR *)(param_1 + 4);
  }
  GetTextExtentPoint32W(hdc,lpString,*(int *)(param_1 + 0x14),&tStack_58);
  GetTextMetricsW(hdc,&tStack_48);
  if (param_2 != (LONG *)0x0) {
    *param_2 = tStack_58.cx;
  }
  if (param_3 != (LONG *)0x0) {
    *param_3 = tStack_58.cy;
  }
  if (param_4 != (LONG *)0x0) {
    *param_4 = tStack_48.tmDescent;
  }
  if (param_5 != (LONG *)0x0) {
    *param_5 = tStack_48.tmExternalLeading;
  }
  if (hdc != (HDC)0x0) {
    SelectObject(hdc,pvVar2);
  }
  ReleaseDC(hWnd,hdc);
  ExceptionList = local_c;
  return;
}



LRESULT __thiscall FUN_00913420(int param_1_00,UINT param_1,WPARAM param_2,LPARAM param_3)

{
  uint uVar1;
  LRESULT LVar2;
  undefined **appuStack_54 [18];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6bf8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  if (*(WNDPROC *)(param_1_00 + 0x140) == (WNDPROC)0x0) {
    LVar2 = DefWindowProcW(*(HWND *)(param_1_00 + 0x13c),param_1,param_2,param_3);
  }
  else {
    LVar2 = CallWindowProcW(*(WNDPROC *)(param_1_00 + 0x140),*(HWND *)(param_1_00 + 0x13c),param_1,
                            param_2,param_3);
  }
  if (param_1 == 0x102) {
    FUN_00912b90(appuStack_54,DAT_032bfe64,param_2,param_3);
    uStack_4 = 0;
    FUN_0091c170(appuStack_54);
    uStack_4 = 0xffffffff;
    appuStack_54[0] = wxObject::vftable;
    FUN_0083e850(uVar1);
  }
  ExceptionList = local_c;
  return LVar2;
}



undefined __thiscall FUN_009134f0(int *param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  undefined local_50 [4];
  undefined auStack_4c [8];
  int *piStack_44;
  undefined **appuStack_40 [2];
  undefined **ppuStack_38;
  undefined *puStack_18;
  undefined4 local_c;
  undefined *puStack_8;
  uint uStack_4;
  
  iVar1 = param_1;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6c30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  switch(param_1_00[0x44]) {
  case 0:
  case 4:
    (**(code **)(*param_1_00 + 0x27c))(&param_1,local_50);
    FUN_0090e740(iVar1,&stack0xffffffac);
    *(byte *)(piStack_44 + 0x41) = *(byte *)(piStack_44 + 0x41) & 0xfe;
    *(byte *)(piStack_44 + 4) = *(byte *)(piStack_44 + 4) | 4;
    local_c = (void *)0x0;
    piStack_44[0x42] = iVar1;
    piStack_44[0x24] = 0;
    piStack_44[0x22] = 0;
    piStack_44[3] = (int)param_1_00;
    FUN_009503f0();
    FUN_00845a20(param_1_00[0x10],DAT_032bff20);
    puStack_18 = auStack_4c;
    appuStack_40[0] = wxEraseEvent::vftable;
    local_c = (void *)CONCAT31(local_c._1_3_,1);
    ppuStack_38 = (undefined **)param_1_00;
    cVar2 = FUN_0091c170(appuStack_40);
    (**(code **)(*piStack_44 + 0x1b0))(iVar1);
    uStack_4 = uStack_4 & 0xffffff00;
    ppuStack_38 = wxObject::vftable;
    FUN_0083e850();
    uStack_4 = 0xffffffff;
    FUN_00457221();
    if (cVar2 != '\0') {
      ExceptionList = local_c;
      return 1;
    }
  case 1:
    cVar2 = FUN_00912460(iVar1);
    if (cVar2 == '\0') {
      ExceptionList = local_c;
      return 0;
    }
    break;
  case 2:
  case 3:
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\msw\\window.cpp",0x1316,"wxWindow::HandleEraseBkgnd",
                   "Assert failure","unknown background style",DAT_0323f878 ^ (uint)&stack0xffffffa0
                  );
    }
  }
  ExceptionList = local_c;
  return 1;
}



void FUN_00913670(int param_1)

{
  int iVar1;
  undefined local_14 [4];
  int local_10;
  undefined local_c [12];
  
  if (param_1 == 0) {
    iVar1 = FUN_009115c0(&param_1);
    if ((iVar1 != 1) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
      FUN_00840480("..\\..\\src\\msw\\window.cpp",0x1332,"wxWindow::MSWSetEraseBgHook",
                   "Assert failure",L"Resetting erase background which was not set?");
    }
  }
  else {
    local_10 = param_1;
    iVar1 = FUN_00913260(local_c,local_14);
    if ((*(char *)(iVar1 + 8) == '\0') && (PTR_FUN_03235c4c != (undefined *)0x0)) {
      FUN_00840480("..\\..\\src\\msw\\window.cpp",0x132b,"wxWindow::MSWSetEraseBgHook",
                   "Assert failure",L"Setting erase background hook twice?");
      return;
    }
  }
  return;
}



undefined4 * __fastcall FUN_00913720(int param_1)

{
  int iVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x38);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar2 = wxSetCursorEvent::vftable;
    puVar2[10] = *(undefined4 *)(param_1 + 0x28);
    puVar2[0xb] = *(undefined4 *)(param_1 + 0x2c);
    puVar2[0xc] = wxObject::vftable;
    iVar1 = *(int *)(param_1 + 0x34);
    puVar2[0xd] = iVar1;
    if (iVar1 != 0) {
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    }
    puVar2[0xc] = wxCursor::vftable;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 FUN_009137c0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  
  FUN_0083e8f0(param_4,param_2,2);
  FUN_0090e060(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,0,param_2);
  return param_1;
}



undefined4
FUN_00913820(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  undefined4 uVar1;
  undefined4 local_c;
  undefined4 local_8;
  
  FUN_00820e3f(param_6,param_2,4);
  FUN_00820e3f(param_5,param_2,3);
  FUN_00820e3f(param_4,param_2,2);
  FUN_0083e8f0(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,0,local_8,local_c,param_2);
  return param_1;
}



void __fastcall FUN_009138b0(undefined4 *param_1)

{
  void *pvVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2968;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxDropFilesEvent::vftable;
  pvVar1 = (void *)param_1[0xd];
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    _eh_vector_destructor_iterator_(pvVar1,0x24,*(int *)((int)pvVar1 + -4),FUN_0040159c);
    FUN_00a3f66c((int)pvVar1 + -4);
  }
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00913940(undefined4 param_1_00,byte param_1)

{
  FUN_009138b0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_00913960(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 *param_3,
            undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6c71;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_0092bd60(param_1,param_2);
  *param_1_00 = wxHelpEvent::vftable;
  param_1_00[0x17] = *param_3;
  param_1_00[0x18] = param_3[1];
  param_1_00[0x1f] = 7;
  param_1_00[0x1e] = 0;
  *(undefined2 *)(param_1_00 + 0x1a) = 0;
  param_1_00[0x20] = 0;
  param_1_00[0x28] = 7;
  param_1_00[0x27] = 0;
  *(undefined2 *)(param_1_00 + 0x23) = 0;
  param_1_00[0x29] = 0;
  local_4 = 2;
  uVar2 = FUN_0092ac60(param_4,uVar1);
  param_1_00[0x2b] = uVar2;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00913a20(undefined4 *param_1)

{
  _free((void *)param_1[0x29]);
  if (7 < (uint)param_1[0x28]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x23]);
  }
  param_1[0x28] = 7;
  param_1[0x27] = 0;
  *(undefined2 *)(param_1 + 0x23) = 0;
  _free((void *)param_1[0x20]);
  if (7 < (uint)param_1[0x1f]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x1a]);
  }
  param_1[0x1f] = 7;
  param_1[0x1e] = 0;
  *(undefined2 *)(param_1 + 0x1a) = 0;
  _free((void *)param_1[0x11]);
  if (7 < (uint)param_1[0x10]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xb]);
  }
  param_1[0x10] = 7;
  param_1[0xf] = 0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined4 * __thiscall FUN_00913ae0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_0092bd60(param_1,param_2);
  *param_1_00 = wxClipboardTextEvent::vftable;
  return param_1_00;
}



undefined4 * __thiscall
FUN_00913b00(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  FUN_0092bd60(param_1,param_2);
  *param_1_00 = wxContextMenuEvent::vftable;
  param_1_00[0x17] = *param_3;
  param_1_00[0x18] = param_3[1];
  return param_1_00;
}



void FUN_00913b30(undefined4 param_1)

{
  char cVar1;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9208;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  ExceptionList = &local_c;
  FUN_0095dfc0(local_34,param_1,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_4 = 0;
  cVar1 = FUN_008fa020(local_34);
  if (cVar1 == '\0') {
    FUN_008507a0(L"wxTLWHiddenParent");
  }
  _free(local_18);
  if (local_1c < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_30);
}



void FUN_00913be0(uint param_1,undefined4 *param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined local_44 [20];
  undefined auStack_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puVar2 = param_2;
  uVar1 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6ca0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\window.cpp",0xe38,"wxAssociateWinWithHandle","hwnd != (HWND)0"
                   ,L"attempt to add a NULL hwnd to window list ignored",
                   DAT_0323f878 ^ (uint)&stack0xffffffb4);
    }
    ExceptionList = local_c;
    return;
  }
  for (puVar3 = *(undefined4 **)(DAT_032bf67c + (param_1 % DAT_032bf680) * 4);
      puVar3 != (undefined4 *)0x0; puVar3 = (undefined4 *)*puVar3) {
    if (puVar3[1] == param_1) goto LAB_00913c34;
  }
  puVar3 = (undefined4 *)0x0;
LAB_00913c34:
  if (((puVar3 != (undefined4 *)0x0) && ((undefined4 *)puVar3[2] != param_2)) &&
     (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_0081c0f1(L"HWND %p already associated with another window (%s)");
    local_4 = 0;
    puVar3 = (undefined4 *)(**(code **)*puVar2)();
    uVar4 = FUN_009137c0(auStack_30,local_44,uVar1,*puVar3);
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_008401a0("..\\..\\src\\msw\\window.cpp",0xe45,"wxAssociateWinWithHandle","Assert failure",
                 uVar4);
    FUN_0040159c();
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  puVar3 = (undefined4 *)FUN_009dbfa0(&param_1);
  *puVar3 = puVar2;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00913d20(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined **local_98 [2];
  int local_90;
  undefined4 local_70;
  undefined **local_6c [11];
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  void *local_28;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6cd3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_98;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff60;
  ExceptionList = &local_c;
  if ((*(byte *)(param_1_00 + 0xdc) & 8) == 0) {
    FUN_0092bed0(param_1_00);
    local_4 = 0;
    FUN_0091c170(local_6c);
    if (*(int *)(param_1_00 + 0xb4) != 0) {
      (**(code **)(**(int **)(param_1_00 + 0xb4) + 0xc))(uVar1);
    }
    FUN_00845a20(*(undefined4 *)(param_1_00 + 0x40),DAT_032bfe38);
    local_98[0] = wxFocusEvent::vftable;
    local_70 = 0;
    local_4._0_1_ = 1;
    local_90 = param_1_00;
    local_70 = FUN_0090f7c0(param_1);
    FUN_0091c170(local_98);
    local_4 = (uint)local_4._1_3_ << 8;
    local_98[0] = wxObject::vftable;
    FUN_0083e850();
    local_4 = 0xffffffff;
    _free(local_28);
    if (7 < local_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_40);
    }
    local_2c = 7;
    local_30 = 0;
    local_40 = local_40 & 0xffff0000;
    local_6c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00913e90(int param_1_00,undefined4 param_1)

{
  FUN_0095df20(param_1,*(undefined4 *)(param_1_00 + 0x13c));
  return param_1;
}



void FUN_00913ec0(short param_1,uint param_2,int param_3)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  undefined local_6c [76];
  int local_20;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  int local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6d18;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  ExceptionList = &local_c;
  iVar3 = (int)param_1;
  if (((short)param_2 == 0) && (DAT_032bfb78 != 0)) {
    DAT_032bfb78 = 0;
    FUN_0092cd00(0,iVar3);
  }
  else if (((param_3 == 0) ||
           (piVar1 = (int *)FUN_0090f7c0(param_3,DAT_0323f878 ^ (uint)&stack0xffffff84),
           piVar1 == (int *)0x0)) && (piVar1 = (int *)FUN_0090e910(iVar3), piVar1 == (int *)0x0)) {
    if (param_3 == 0) {
      FUN_0092bd60(DAT_032bfdd0,iVar3);
      local_4 = param_3;
      local_20 = iVar3;
      FUN_0091c170(local_6c);
      local_4 = 0xffffffff;
      FUN_00454a4e();
    }
    else {
      iVar2 = FUN_009908d0(param_3);
      if (iVar2 != 0) {
        FUN_00990f80(param_2,iVar3);
      }
    }
  }
  else {
    (**(code **)(*piVar1 + 0x2d0))(param_2 & 0xffff,iVar3);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00913ff0(int param_1_00,int param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined **local_6c [2];
  int local_64;
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  void *local_28;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6d48;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  if (param_1 == 0x300) {
    puVar2 = &DAT_032bff68;
  }
  else {
    puVar2 = &DAT_032bff64;
    if (param_1 != 0x301) {
      puVar2 = &DAT_032bff6c;
    }
  }
  FUN_0092bd60(*puVar2,*(undefined4 *)(param_1_00 + 0x40));
  local_6c[0] = wxClipboardTextEvent::vftable;
  local_4 = 0;
  local_64 = param_1_00;
  FUN_0091c170(local_6c);
  local_4 = 0xffffffff;
  _free(local_28);
  if (7 < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40);
  }
  local_2c = 7;
  local_30 = 0;
  local_40 = local_40 & 0xffff0000;
  local_6c[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_009140f0(undefined4 param_1_00,byte param_1)

{
  FUN_00913a20();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00914110(undefined4 *param_1_00,byte param_1)

{
  _free((void *)param_1_00[0x11]);
  if (7 < (uint)param_1_00[0x10]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[0xb]);
  }
  param_1_00[0x10] = 7;
  param_1_00[0xf] = 0;
  *(undefined2 *)(param_1_00 + 0xb) = 0;
  *param_1_00 = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00914170(int param_1)

{
  HWND hWnd;
  char cVar1;
  BOOL BVar2;
  undefined4 local_4;
  
  local_4 = *(undefined4 *)(param_1 + 0x13c);
  FUN_009115c0(&local_4);
  hWnd = *(HWND *)(param_1 + 0x13c);
  if (hWnd != (HWND)0x0) {
    *(undefined4 *)(param_1 + 0x13c) = 0;
    BVar2 = IsWindow(hWnd);
    if (BVar2 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\msw\\window.cpp",0x4bd,"wxWindow::UnsubclassWin",
                     "::IsWindow(hwnd)",L"invalid HWND in UnsubclassWin");
      }
    }
    else if (*(int *)(param_1 + 0x140) != 0) {
      cVar1 = FUN_00913b30(hWnd,*(int *)(param_1 + 0x140));
      if (cVar1 == '\0') {
        SetWindowLongW(hWnd,-4,*(LONG *)(param_1 + 0x140));
      }
      *(undefined4 *)(param_1 + 0x140) = 0;
      return;
    }
  }
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * FUN_009142f0(void)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  DWORD DVar5;
  uint uVar6;
  undefined4 local_5c;
  undefined local_58 [4];
  int *local_54;
  int iStack_50;
  int *piStack_48;
  undefined **appuStack_44 [5];
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6d98;
  local_c = ExceptionList;
  if (DAT_032bf64c != '\0') {
    return &DAT_032bf728;
  }
  ExceptionList = &local_c;
  if (DAT_032bf758 == '\0') {
    FUN_008192b5(DAT_0323f878 ^ (uint)&stack0xffffff98);
    uVar6 = 0;
    local_4 = 0;
    FUN_004325b6(L"wxBITMAP_STD_COLOURS");
    local_4._0_1_ = 1;
    FUN_008f5b40(local_30,2);
    local_4 = CONCAT31(local_4._1_3_,3);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    if ((local_54 == (int *)0x0) || (cVar1 = (**(code **)(*local_54 + 4))(), cVar1 == '\0')) {
      DAT_032bf748 = 0;
      DAT_032bf74c = 0x808080;
      DAT_032bf750 = &DAT_00c0c0c0;
      DAT_032bf754 = 0xffffff;
    }
    else {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((local_54 == (int *)0x0 || (local_54[2] != 4)))
         ) {
        FUN_00840480("..\\..\\src\\msw\\window.cpp",0x1239,"wxGetStdColourMap",
                     "stdColourBitmap.GetWidth() == wxSTD_COL_MAX",
                     L"forgot to update wxBITMAP_STD_COLOURS!");
      }
      FUN_0094bd80();
      local_4._0_1_ = 4;
      FUN_0094c840(local_58);
      FUN_00453f4b();
      local_4._0_1_ = 5;
      do {
        (**(code **)(*piStack_48 + 0x138))(uVar6,0,appuStack_44);
        uVar2 = (**(code **)(iStack_50 + 0x18))();
        uVar3 = (**(code **)(iStack_50 + 0x14))();
        uVar4 = (**(code **)(iStack_50 + 0x10))();
        (&DAT_032bf748)[uVar6] = uVar4 & 0xff | (uVar3 & 0xff | (uVar2 & 0xff) << 8) << 8;
        uVar6 = uVar6 + 1;
      } while (uVar6 < 4);
      local_4._0_1_ = 4;
      appuStack_44[0] = wxObject::vftable;
      FUN_0083e850();
      local_4 = CONCAT31(local_4._1_3_,3);
      FUN_00457221();
    }
    DAT_032bf758 = '\x01';
    local_4 = local_4 & 0xffffff00;
    FUN_008f7630();
    local_4 = 0xffffffff;
    if ((DAT_032bdb68 == 0) || (DVar5 = GetCurrentThreadId(), DVar5 == DAT_032bdb68)) {
      DAT_03235e94 = (undefined)local_5c;
    }
    else {
      FUN_00842f30(local_5c);
    }
  }
  DAT_032bf64c = 1;
  _DAT_032bf728 = DAT_032bf748;
  _DAT_032bf72c = GetSysColor(0x12);
  _DAT_032bf730 = DAT_032bf74c;
  _DAT_032bf734 = GetSysColor(0x10);
  _DAT_032bf738 = DAT_032bf750;
  _DAT_032bf73c = GetSysColor(0xf);
  _DAT_032bf740 = DAT_032bf754;
  _DAT_032bf744 = GetSysColor(0x14);
  ExceptionList = local_c;
  return &DAT_032bf728;
}



undefined4 * __thiscall FUN_00914580(undefined4 *param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  uint *puVar3;
  int iVar4;
  uint uVar5;
  uint *puVar6;
  int iVar7;
  int iVar8;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6dd3;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  FUN_00845a60(param_1);
  *param_1_00 = wxDropFilesEvent::vftable;
  uVar1 = *(uint *)(param_1 + 0x28);
  param_1_00[10] = uVar1;
  param_1_00[0xb] = *(undefined4 *)(param_1 + 0x2c);
  param_1_00[0xc] = *(undefined4 *)(param_1 + 0x30);
  puVar6 = (uint *)0x0;
  local_4 = 0;
  param_1_00[0xd] = 0;
  uVar5 = -(uint)((int)((ulonglong)uVar1 * 0x24 >> 0x20) != 0) | (uint)((ulonglong)uVar1 * 0x24);
  puVar3 = (uint *)FUN_00823c23(-(uint)(0xfffffffb < uVar5) | uVar5 + 4,uVar2);
  local_4._0_1_ = 1;
  if (puVar3 != (uint *)0x0) {
    puVar6 = puVar3 + 1;
    *puVar3 = uVar1;
    _eh_vector_constructor_iterator_(puVar6,0x24,uVar1,FUN_00418b1d,FUN_0040159c);
  }
  param_1_00[0xd] = puVar6;
  iVar7 = 0;
  local_4 = (uint)local_4._1_3_ << 8;
  if (0 < (int)param_1_00[10]) {
    iVar8 = 0;
    do {
      iVar4 = *(int *)(param_1 + 0x34) + iVar8;
      if (param_1_00[0xd] + iVar8 != iVar4) {
        FID_conflict_assign(iVar4,0,0xffffffff);
      }
      iVar7 = iVar7 + 1;
      iVar8 = iVar8 + 0x24;
    } while (iVar7 < (int)param_1_00[10]);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_00914670(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x38);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00914580(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_009146e0(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6e03;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0048a2df(param_1);
  *param_1_00 = wxHelpEvent::vftable;
  param_1_00[0x17] = *(undefined4 *)(param_1 + 0x5c);
  param_1_00[0x18] = *(undefined4 *)(param_1 + 0x60);
  param_1_00[0x1f] = 7;
  param_1_00[0x1e] = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 0x1a) = 0;
  FID_conflict_assign(param_1 + 100,0,0xffffffff);
  param_1_00[0x20] = 0;
  param_1_00[0x28] = 7;
  param_1_00[0x27] = 0;
  *(undefined2 *)(param_1_00 + 0x23) = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  FID_conflict_assign(param_1 + 0x88,0,0xffffffff);
  param_1_00[0x29] = 0;
  param_1_00[0x2b] = *(undefined4 *)(param_1 + 0xac);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_009147b0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xb0);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009146e0(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __fastcall FUN_00914820(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x5c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a2df(param_1);
    *puVar1 = wxClipboardTextEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_00914890(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(100);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a2df(param_1);
    *puVar1 = wxContextMenuEvent::vftable;
    puVar1[0x17] = *(undefined4 *)(param_1 + 0x5c);
    puVar1[0x18] = *(undefined4 *)(param_1 + 0x60);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __thiscall FUN_00914900(int param_1_00,HWND param_1)

{
  char cVar1;
  uint uVar2;
  BOOL BVar3;
  LONG LVar4;
  undefined **appuStack_6c [11];
  uint uStack_40;
  undefined4 uStack_30;
  uint uStack_2c;
  void *pvStack_28;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6d48;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)appuStack_6c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x140) != 0)) {
    FUN_00840480("..\\..\\src\\msw\\window.cpp",0x494,"wxWindow::SubclassWin","!m_oldWndProc",
                 L"subclassing window twice?",uVar2);
  }
  BVar3 = IsWindow(param_1);
  if (BVar3 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\window.cpp",0x497,"wxWindow::SubclassWin","::IsWindow(hwnd)",
                   L"invalid HWND in SubclassWin",uVar2);
    }
  }
  else {
    *(HWND *)(param_1_00 + 0x13c) = param_1;
    FUN_00913be0(param_1,param_1_00);
    LVar4 = GetWindowLongW(param_1,-4);
    *(LONG *)(param_1_00 + 0x140) = LVar4;
    cVar1 = FUN_00913b30(param_1,&LAB_00914230);
    if (cVar1 == '\0') {
      SetWindowLongW(param_1,-4,0x914230);
    }
    else {
      *(undefined4 *)(param_1_00 + 0x140) = 0;
    }
    FUN_0092be10(param_1_00);
    uStack_4 = 0;
    FUN_0091c170(appuStack_6c);
    uStack_4 = 0xffffffff;
    _free(pvStack_28);
    if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_40);
    }
    uStack_2c = 7;
    uStack_30 = 0;
    uStack_40 = uStack_40 & 0xffff0000;
    appuStack_6c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



uint __thiscall FUN_00914a80(int *param_1_00,uint *param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  uint unaff_EBX;
  bool bVar5;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6e39;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  FUN_004325b6(L"msw.window.no-clip-children");
  local_4 = 0;
  FUN_00897050(local_30,uVar2);
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  iVar4 = *param_1_00;
  uVar3 = FUN_0091ac10(param_1);
  iVar4 = (**(code **)(iVar4 + 0x328))(uVar3);
  if (iVar4 == 0x2000000) {
    unaff_EBX = unaff_EBX | 0x800000;
  }
  if (param_1 == (uint *)0x0) {
    ExceptionList = pvStack_10;
    return unaff_EBX;
  }
  *param_1 = 0;
  if (((uint)param_1 & 0x100000) != 0) {
    *param_1 = 0x20;
  }
  if (iVar4 < 0x4000001) {
    if (iVar4 == 0x4000000) {
      *param_1 = *param_1 | 1;
      goto LAB_00914c0f;
    }
    if (iVar4 == 0x200000) goto LAB_00914c0f;
    if (iVar4 == 0x1000000) {
      *param_1 = *param_1 | 0x20000;
      goto LAB_00914c0f;
    }
    bVar5 = iVar4 == 0x2000000;
  }
  else {
    if (iVar4 == 0x8000000) {
      *param_1 = *param_1 | 0x200;
      unaff_EBX = unaff_EBX & 0xff7fffff;
      goto LAB_00914c0f;
    }
    bVar5 = iVar4 == 0x10000000;
  }
  if ((!bVar5) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_00840480("..\\..\\src\\msw\\window.cpp",0x5b4,"wxWindow::MSWGetStyle","Assert failure",
                 L"unknown border style");
  }
LAB_00914c0f:
  if ((((uint)param_1 & 0x80000) != 0) &&
     (cVar1 = (**(code **)(*param_1_00 + 0x11c))(), cVar1 == '\0')) {
    *param_1 = *param_1 | 0x10000;
  }
  ExceptionList = pvStack_10;
  return unaff_EBX;
}



undefined4 FUN_00914c50(int param_1,int param_2,int param_3)

{
  wchar_t *_Source;
  wchar_t wVar1;
  int *piVar2;
  wchar_t *pwVar3;
  uint uVar4;
  int iVar5;
  size_t _Count;
  undefined local_c [12];
  
  if (((param_1 == -0x208) || (param_1 == -0x212)) && (*(int *)(param_3 + 0x14) != 0)) {
    piVar2 = (int *)FUN_00432231(local_c);
    iVar5 = *piVar2;
    if (*(uint *)(iVar5 + 0x18) < 8) {
      iVar5 = iVar5 + 4;
    }
    else {
      iVar5 = *(int *)(iVar5 + 4);
    }
    _Source = (wchar_t *)(iVar5 + piVar2[1] * 2);
    pwVar3 = _Source;
    do {
      wVar1 = *pwVar3;
      pwVar3 = pwVar3 + 1;
    } while (wVar1 != L'\0');
    uVar4 = (int)pwVar3 - (int)(_Source + 1) >> 1;
    _Count = 0x200;
    if (uVar4 < 0x201) {
      _Count = uVar4;
    }
    _wcsncpy(&DAT_032bf760,_Source,_Count);
    (&DAT_032bf760)[_Count] = 0;
    FUN_00432214();
    *(undefined2 **)(param_2 + 0xc) = &DAT_032bf760;
    return 1;
  }
  return 0;
}



undefined4 __thiscall FUN_00914d00(int param_1_00,undefined4 param_1,int param_2)

{
  char cVar1;
  
  if (*(int *)(param_1_00 + 200) != 0) {
    cVar1 = FUN_00914c50(*(undefined4 *)(param_2 + 8),param_2,*(int *)(param_1_00 + 200) + 8);
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



undefined FUN_00914d30(HDROP param_1)

{
  HDROP hDrop;
  undefined uVar1;
  uint uVar2;
  UINT UVar3;
  UINT *pUVar4;
  UINT UVar5;
  uint uVar6;
  UINT iFile;
  UINT *pUStack_5c;
  LPWSTR *ppWStack_50;
  tagPOINT tStack_4c;
  undefined **appuStack_44 [10];
  UINT UStack_1c;
  LONG LStack_18;
  LONG LStack_14;
  UINT *pUStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  hDrop = param_1;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6e73;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  UVar3 = DragQueryFileW(param_1,0xffffffff,(LPWSTR)0x0,0);
  uVar6 = -(uint)((int)((ulonglong)UVar3 * 0x24 >> 0x20) != 0) | (uint)((ulonglong)UVar3 * 0x24);
  pUVar4 = (UINT *)FUN_00823c23(-(uint)(0xfffffffb < uVar6) | uVar6 + 4,uVar2);
  iFile = 0;
  uStack_4 = 0;
  if (pUVar4 == (UINT *)0x0) {
    pUStack_5c = (UINT *)0x0;
  }
  else {
    pUStack_5c = pUVar4 + 1;
    *pUVar4 = UVar3;
    _eh_vector_constructor_iterator_(pUStack_5c,0x24,UVar3,FUN_00418b1d,FUN_0040159c);
  }
  uStack_4 = 0xffffffff;
  if (UVar3 != 0) {
    param_1 = (HDROP)pUStack_5c;
    do {
      UVar5 = DragQueryFileW(hDrop,iFile,(LPWSTR)0x0,0);
      FUN_00852280(param_1,UVar5 + 1);
      DragQueryFileW(hDrop,iFile,*ppWStack_50,UVar5 + 1);
      FUN_00851bf0();
      param_1 = param_1 + 9;
      iFile = iFile + 1;
    } while (iFile < UVar3);
  }
  FUN_00845a20(0,DAT_032bff58);
  appuStack_44[0] = wxDropFilesEvent::vftable;
  LStack_18 = 0;
  LStack_14 = 0;
  pUStack_10 = pUStack_5c;
  uStack_4 = 1;
  UStack_1c = UVar3;
  DragQueryPoint(hDrop,&tStack_4c);
  LStack_18 = tStack_4c.x;
  LStack_14 = tStack_4c.y;
  DragFinish(hDrop);
  uVar1 = FUN_0091c170(appuStack_44);
  uStack_4 = 0xffffffff;
  FUN_009138b0();
  ExceptionList = local_c;
  return uVar1;
}



LPRECT FUN_00914ec0(LPRECT param_1,HWND param_2)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = GetClientRect(param_2,param_1);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_00914fd0(HWND param_1)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = SetWindowPos(param_1,(HWND)0x0,0,0,0,0,3);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void __fastcall FUN_009150e0(undefined4 *param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined **ppuVar3;
  BOOL BVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd6ea8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = wxWindow::vftable;
  local_4 = 0;
  FUN_0091e7c0();
  for (puVar1 = (undefined4 *)param_1[0x11]; puVar1 != (undefined4 *)0x0;
      puVar1 = (undefined4 *)puVar1[0x11]) {
    ppuVar3 = (undefined **)(**(code **)*puVar1)();
    if ((((ppuVar3 == &PTR_u_wxTopLevelWindow_03239ae4) ||
         ((ppuVar3[3] != (undefined *)0x0 && (cVar2 = FUN_0048a047(), cVar2 != '\0')))) ||
        ((ppuVar3[4] != (undefined *)0x0 && (cVar2 = FUN_0048a047(), cVar2 != '\0')))) &&
       ((undefined4 *)puVar1[0x6f] == param_1)) {
      puVar1[0x6f] = 0;
    }
  }
  FUN_0091e8e0();
  if ((HWND)param_1[0x4f] != (HWND)0x0) {
    BVar4 = DestroyWindow((HWND)param_1[0x4f]);
    if (BVar4 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 != '\0') {
        FUN_0081c0f1();
        local_4._0_1_ = 1;
        __time64((__time64_t *)0x0);
        GetCurrentThreadId();
        local_4._0_1_ = 2;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_4._0_1_ = 1;
        FUN_00842440();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_0081b5bc();
      }
    }
    for (puVar1 = *(undefined4 **)(DAT_032bf67c + ((uint)param_1[0x4f] % DAT_032bf680) * 4);
        puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) {
      if (puVar1[1] == param_1[0x4f]) {
        _DAT_032bf684 = _DAT_032bf684 + -1;
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  local_4 = 0xffffffff;
  FUN_0091e4d0();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00915300(int param_1)

{
  HWND hWnd;
  char cVar1;
  HWND pHVar2;
  DWORD DVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  hWnd = *(HWND *)(param_1 + 0x13c);
  if (hWnd == (HWND)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  else {
    SetLastError(0);
    pHVar2 = SetFocus(hWnd);
    if (pHVar2 == (HWND)0x0) {
      DVar3 = GetLastError();
      if (DVar3 != 0) {
        pHVar2 = GetFocus();
        if (pHVar2 != hWnd) {
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(6);
          if (cVar1 != '\0') {
            FUN_0081c0f1();
            uStack_4 = 0;
            FUN_008423d0();
            uStack_4._0_1_ = 1;
            FUN_00843700();
            FUN_00847d90();
            uStack_4 = (uint)uStack_4._1_3_ << 8;
            FUN_00842440();
            uStack_4 = 0xffffffff;
            FUN_0081b5bc();
            ExceptionList = local_c;
            return;
          }
        }
      }
    }
  }
  ExceptionList = local_c;
  return;
}



// WARNING: Removing unreachable block (ram,0x00915576)

undefined4 __thiscall FUN_00915470(int *param_1_00,undefined4 param_1,int param_2)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6f01;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 == 0) {
    uVar2 = (**(code **)(*param_1_00 + 0xcc))();
    ExceptionList = local_c;
    return uVar2;
  }
  cVar1 = FUN_0091aa60();
  if (cVar1 == '\0') goto LAB_0091572f;
  if (DAT_032bfb68 == '\0') {
    FUN_004325b6();
    local_4 = 0;
    FUN_0089ed30();
    local_4._0_1_ = 2;
    FUN_0040159c();
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,3);
    DAT_032bfb64 = (code *)FUN_0089f2d0();
    FUN_0040159c();
    DAT_032bfb68 = '\x01';
    local_4 = 0xffffffff;
  }
  if (DAT_032bfb64 == (code *)0x0) {
    uVar2 = (**(code **)(*param_1_00 + 0xcc))();
    ExceptionList = local_c;
    return uVar2;
  }
  (**(code **)(*param_1_00 + 200))();
  switch(param_2) {
  case 1:
    break;
  case 2:
    break;
  case 3:
    break;
  case 4:
    break;
  case 5:
    break;
  case 6:
    break;
  case 7:
    break;
  case 8:
    break;
  case 9:
    break;
  case 10:
    break;
  case 0xb:
    goto joined_r0x0091570c;
  default:
joined_r0x0091570c:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    goto LAB_0091572f;
  }
  iVar3 = (*DAT_032bfb64)();
  if (iVar3 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4 = 4;
      FUN_008423d0();
      local_4._0_1_ = 5;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4 = CONCAT31(local_4._1_3_,4);
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
LAB_0091572f:
    uVar2 = 0;
  }
  else {
    uVar2 = 1;
  }
  ExceptionList = local_c;
  return uVar2;
}



void FUN_00915790(void)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = ReleaseCapture();
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00915890(int *param_1)

{
  char cVar1;
  BOOL BVar2;
  int unaff_retaddr;
  void *pvStack_14;
  undefined4 local_c;
  undefined *puStack_8;
  int iStack_4;
  
  iStack_4 = -1;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(*param_1 + 0x25c))();
  BVar2 = SetCursorPos(iStack_4,unaff_retaddr);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_c = (void *)0x0;
      FUN_008423d0();
      local_c._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_c = (void *)((uint)local_c._1_3_ << 8);
      FUN_00842440();
      local_c = (void *)0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = pvStack_14;
  return;
}



void __fastcall FUN_009159c0(int param_1)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(HWND *)(param_1 + 0x13c) != (HWND)0x0) {
    BVar2 = DestroyWindow(*(HWND *)(param_1 + 0x13c));
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  FUN_00914900();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00915ae0(int *param_1)

{
  int iVar1;
  code *pcVar2;
  char cVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  BOOL BVar7;
  bool bVar8;
  int unaff_retaddr;
  uint local_7c;
  uint uStack_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1[0x4f] != 0) {
    iVar1 = *param_1;
    bVar8 = false;
    (**(code **)(iVar1 + 0xe8))();
    uVar4 = (**(code **)(iVar1 + 0x2c8))();
    iVar1 = param_1[0x39];
    pcVar2 = *(code **)(*param_1 + 0x2c8);
    param_1[0x39] = unaff_retaddr;
    uVar5 = (*pcVar2)();
    param_1[0x39] = iVar1;
    if (uVar4 != uVar5) {
      uVar6 = GetWindowLongW((HWND)param_1[0x4f],-0x10);
      SetWindowLongW((HWND)param_1[0x4f],-0x10,uVar6 & ~uVar5 | uVar4);
      bVar8 = ((uVar5 ^ uVar4) & 0xcf0000) != 0;
    }
    uVar4 = GetWindowLongW((HWND)param_1[0x4f],-0x14);
    if (local_7c == uStack_78) {
      if (!bVar8) {
        ExceptionList = local_c;
        return;
      }
    }
    else {
      uVar4 = ~uStack_78 & uVar4 | local_7c;
      SetWindowLongW((HWND)param_1[0x4f],-0x14,uVar4);
    }
    BVar7 = SetWindowPos((HWND)param_1[0x4f],(HWND)(uVar4 >> 3 | 0xfffffffe),0,0,0,0,0x33);
    if (BVar7 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar3 = FUN_00846b30(6);
      if (cVar3 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00915cf0(int param_1)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = UpdateWindow(*(HWND *)(param_1 + 0x13c));
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  GdiFlush();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00915e00(int param_1_00,int *param_1,int *param_2)

{
  int iVar1;
  int local_20;
  int local_1c;
  int local_18;
  int local_14;
  undefined local_10 [16];
  
  if ((*(int *)(param_1_00 + 0x15c) == DAT_03238d04) &&
     (*(int *)(param_1_00 + 0x160) == DAT_03238d08)) {
    iVar1 = FUN_00914ec0(local_10,*(undefined4 *)(param_1_00 + 0x13c));
    local_14 = *(int *)(iVar1 + 0xc);
    if (param_1 != (int *)0x0) {
      *param_1 = *(int *)(iVar1 + 8);
    }
    if (param_2 == (int *)0x0) goto LAB_00915ec3;
  }
  else {
    local_20 = *(int *)(param_1_00 + 0x154);
    local_1c = *(int *)(param_1_00 + 0x158);
    local_18 = *(int *)(param_1_00 + 0x15c) + local_20;
    local_14 = *(int *)(param_1_00 + 0x160) + local_1c;
    SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x83,0,(LPARAM)&local_20);
    if (param_1 != (int *)0x0) {
      *param_1 = local_18 - local_20;
    }
    if (param_2 == (int *)0x0) goto LAB_00915ec3;
    local_14 = local_14 - local_1c;
  }
  *param_2 = local_14;
LAB_00915ec3:
  if ((param_1 != (int *)0x0) && (*param_1 < 0)) {
    *param_1 = 0;
  }
  if ((param_2 != (int *)0x0) && (*param_2 < 0)) {
    *param_2 = 0;
  }
  return;
}



undefined4 __thiscall
FUN_00915ef0(int *param_1,HWND param_2,int param_3,int param_4,int param_5,int param_6)

{
  char cVar1;
  HDWP hWinPosInfo;
  uint uVar2;
  BOOL BVar3;
  int iVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = (HDWP)0xffffffff;
  puStack_8 = &LAB_00bd6f59;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x11c))();
  if (cVar1 == '\0') {
    iVar4 = param_1[0x11];
  }
  else {
    iVar4 = 0;
  }
  if (iVar4 != 0) {
    hWinPosInfo = *(HDWP *)(iVar4 + 0x150);
    if ((hWinPosInfo != (HDWP)0x0) &&
       (hWinPosInfo = DeferWindowPos(hWinPosInfo,param_2,(HWND)0x0,param_3,param_4,param_5,param_6,
                                     0x214), hWinPosInfo == (HDWP)0x0)) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = hWinPosInfo;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (HDWP)((uint)uStack_4._1_3_ << 8);
        FUN_00842440();
        uStack_4 = (HDWP)0xffffffff;
        FUN_0081b5bc();
      }
    }
    *(HDWP *)(iVar4 + 0x150) = hWinPosInfo;
    if (hWinPosInfo != (HDWP)0x0) {
      ExceptionList = local_c;
      return 1;
    }
  }
  uVar2 = (**(code **)(*param_1 + 0xdc))();
  BVar3 = MoveWindow(param_2,param_3,param_4,param_5,param_6,uVar2 & 0xff);
  if (BVar3 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = (HDWP)0x2;
      FUN_008423d0();
      uStack_4._0_1_ = 3;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (HDWP)CONCAT31(uStack_4._1_3_,2);
      FUN_00842440();
      uStack_4 = (HDWP)0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall
FUN_00916180(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3,int param_4)

{
  char cVar1;
  
  if (param_3 < 0) {
    param_3 = 0;
  }
  if (param_4 < 0) {
    param_4 = 0;
  }
  cVar1 = FUN_00915ef0(*(undefined4 *)(param_1_00 + 0x13c),param_1,param_2,param_3,param_4);
  if (cVar1 != '\0') {
    *(int *)(param_1_00 + 0x160) = param_4;
    *(undefined4 *)(param_1_00 + 0x158) = param_2;
    *(int *)(param_1_00 + 0x15c) = param_3;
    *(undefined4 *)(param_1_00 + 0x154) = param_1;
    return;
  }
  *(undefined4 *)(param_1_00 + 0x154) = DAT_03238d0c;
  *(undefined4 *)(param_1_00 + 0x158) = DAT_03238d10;
  *(undefined4 *)(param_1_00 + 0x15c) = DAT_03238d04;
  *(undefined4 *)(param_1_00 + 0x160) = DAT_03238d08;
  return;
}



void __thiscall FUN_00916210(int *param_1,int param_2,int param_3)

{
  char cVar1;
  BOOL BVar2;
  int iVar3;
  int iVar4;
  undefined auStack_d0 [8];
  undefined4 uStack_c8;
  int local_98;
  tagRECT tStack_94;
  tagRECT local_84;
  undefined *puStack_74;
  undefined4 uStack_70;
  char *pcStack_68;
  undefined4 uStack_64;
  char *pcStack_60;
  undefined *puStack_5c;
  __time64_t _Stack_58;
  DWORD DStack_50;
  undefined4 uStack_4c;
  undefined2 uStack_44;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6f90;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_98 = 0;
  do {
    GetClientRect((HWND)param_1[0x4f],&local_84);
    if ((local_84.right == param_2) || (param_2 == -1)) {
      if (local_84.bottom == param_3) {
        ExceptionList = local_c;
        return;
      }
      if (param_3 == -1) {
        ExceptionList = local_c;
        return;
      }
    }
    GetWindowRect((HWND)param_1[0x4f],&tStack_94);
    iVar3 = tStack_94.right - tStack_94.left;
    iVar4 = tStack_94.bottom - tStack_94.top;
    cVar1 = (**(code **)(*param_1 + 0x11c))();
    if ((cVar1 == '\0') && (param_1[0x11] != 0)) {
      ScreenToClient(*(HWND *)(param_1[0x11] + 0x13c),(LPPOINT)&tStack_94);
    }
    uStack_c8 = 0x916300;
    BVar2 = MoveWindow((HWND)param_1[0x4f],tStack_94.left,tStack_94.top,
                       (iVar3 - local_84.right) + param_2,(iVar4 - local_84.bottom) + param_3,1);
    if (BVar2 == 0) {
      puStack_74 = auStack_d0;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        uStack_70 = 6;
        pcStack_68 = "..\\..\\src\\msw\\window.cpp";
        pcStack_60 = "wxWindow::DoSetClientSize";
        uStack_64 = 0x836;
        puStack_5c = &DAT_00d25fa0;
        _Stack_58 = __time64((__time64_t *)0x0);
        DStack_50 = GetCurrentThreadId();
        uStack_4c = 0;
        uStack_30 = 7;
        uStack_34 = 0;
        uStack_44 = 0;
        uStack_2c = 0;
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        uStack_c8 = 0x9163e2;
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    local_98 = local_98 + 1;
    if (3 < local_98) {
      ExceptionList = local_c;
      return;
    }
  } while( true );
}



void __thiscall
FUN_00916440(int *param_1_00,int param_1,int *param_2,undefined4 param_3,undefined4 param_4,
            DWORD param_6,DWORD param_7)

{
  char cVar1;
  HWND pHVar2;
  undefined4 ****lpClassName;
  HMENU__ *hMenu;
  HINSTANCE__ *hInstance;
  int *lpParam;
  undefined auStack_11c [4];
  HMENU__ local_118;
  int local_114;
  int local_110;
  HINSTANCE__ local_10c;
  undefined *puStack_108;
  undefined4 ****appppuStack_48 [5];
  uint uStack_34;
  undefined4 uStack_1c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7015;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_11c;
  ExceptionList = &local_c;
  if (param_1_00[0x4f] == 0) {
    if (param_1 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_008402e0();
      }
    }
    else {
      lpParam = &local_114;
      hInstance = &local_10c;
      hMenu = &local_118;
      (**(code **)(*param_1_00 + 0x32c))();
      FUN_004325b6();
      uStack_1c = 0;
      if ((*(byte *)((int)param_1_00 + 0xe2) & 1) == 0) {
        FUN_00473d8f();
      }
      uStack_1c = CONCAT31(uStack_1c._1_3_,1);
      if (param_2 == (int *)0x0) {
        if ((uint)param_1_00[0x40] < 8) {
          param_2 = param_1_00 + 0x3b;
        }
        else {
          param_2 = (int *)param_1_00[0x3b];
        }
      }
      lpClassName = appppuStack_48[0];
      if (uStack_34 < 8) {
        lpClassName = appppuStack_48;
      }
      DAT_032bf654 = param_1_00;
      FUN_008a65e0();
      pHVar2 = (HWND)(**(code **)(*param_1_00 + 0x2cc))();
      pHVar2 = CreateWindowExW(param_7,(LPCWSTR)lpClassName,(LPCWSTR)param_2,param_6,local_110,
                               local_118.unused,local_10c.unused,local_114,pHVar2,hMenu,hInstance,
                               lpParam);
      param_1_00[0x4f] = (int)pHVar2;
      if (pHVar2 == (HWND)0x0) {
        puStack_108 = &stack0xfffffeac;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(1);
        if (cVar1 != '\0') {
          FUN_004325b6();
          uStack_4._0_1_ = 2;
          FUN_0043c211();
          uStack_4._0_1_ = 3;
          FUN_00820bf9();
          FUN_008433c0();
          uStack_4._0_1_ = 4;
          FUN_0043c211();
          puStack_108 = &stack0xfffffec4;
          FUN_00432231();
          uStack_4._0_1_ = 6;
          FUN_008423d0();
          uStack_4._0_1_ = 7;
          GetLastError();
          FUN_0084d140();
          uStack_4._0_1_ = 8;
          FUN_00848860();
          uStack_4._0_1_ = 5;
          FUN_00842440();
          FUN_0040159c();
          uStack_4 = CONCAT31(uStack_4._1_3_,3);
          FUN_0081b5bc();
          FUN_0040159c();
          FUN_0040159c();
        }
        DAT_032bf654 = (int *)0x0;
        FUN_0040159c();
      }
      else {
        FUN_00914900();
        DAT_032bf654 = (int *)0x0;
        FUN_0040159c();
      }
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_009167b0(undefined4 param_1,undefined4 param_2,undefined *param_3)

{
  char cVar1;
  undefined4 uVar2;
  undefined auStack_d0 [12];
  undefined4 uStack_c4;
  undefined4 uStack_c0;
  char *pcStack_bc;
  undefined4 uStack_b8;
  char *pcStack_b4;
  wchar_t *pwStack_b0;
  uint uStack_ac;
  undefined **local_9c [10];
  undefined local_74;
  undefined local_70 [100];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd706b;
  local_c = ExceptionList;
  uStack_ac = DAT_0323f878 ^ (uint)&stack0xffffff58;
  ExceptionList = &local_c;
  switch(param_1) {
  case 0:
    pwStack_b0 = (wchar_t *)DAT_032eddec;
    break;
  case 1:
  case 3:
  case 5:
  case 6:
  case 8:
  case 9:
  case 10:
  case 0xb:
  case 0x12:
    goto switchD_009167f4_caseD_1;
  case 2:
    pwStack_b0 = (wchar_t *)DAT_032eddf4;
    break;
  case 4:
    pwStack_b0 = (wchar_t *)DAT_032eddf0;
    break;
  case 7:
    pwStack_b0 = (wchar_t *)DAT_032eddf8;
    break;
  default:
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      pwStack_b0 = L"Unknown WM_POWERBROADCAST(%d) event";
      pcStack_b4 = (char *)0x9168a7;
      FUN_0081c0f1();
      pwStack_b0 = (wchar_t *)&DAT_00d25fa0;
      pcStack_b4 = "wxWindow::HandlePower";
      uStack_b8 = 0x10b2;
      pcStack_bc = "..\\..\\src\\msw\\window.cpp";
      uStack_c0 = 6;
      local_4 = 0;
      uStack_c4 = 0x9168d1;
      uVar2 = FUN_008423d0();
      pwStack_b0 = (wchar_t *)0x1;
      pcStack_b4 = local_70;
      uStack_b8 = param_1;
      local_4._0_1_ = 1;
      pcStack_bc = (char *)0x9168ec;
      FUN_0081a07d();
      pcStack_b4 = (char *)0x9168fa;
      pwStack_b0 = (wchar_t *)auStack_d0;
      pcStack_b4 = (char *)FUN_008854f0();
      pcStack_bc = (char *)0x916901;
      uStack_b8 = uVar2;
      FUN_0083fe90();
      local_4 = (uint)local_4._1_3_ << 8;
      pwStack_b0 = L"䲍㰤蓇ꠤ";
      FUN_00842440();
      local_4 = 0xffffffff;
      pwStack_b0 = L"쀲ᣫ貋려";
      FUN_0081b5bc();
      ExceptionList = local_c;
      return 0;
    }
    goto switchD_009167f4_caseD_1;
  }
  if (pwStack_b0 != (wchar_t *)DAT_032bd44c) {
    pcStack_b4 = (char *)0xfffffffd;
    uStack_b8 = 0x916814;
    FUN_00845a20();
    local_9c[0] = wxPowerEvent::vftable;
    local_74 = 0;
    pwStack_b0 = (wchar_t *)local_9c;
    local_4 = 2;
    pcStack_b4 = (char *)0x916838;
    cVar1 = FUN_0091c170();
    local_4 = 0xffffffff;
    local_9c[0] = wxObject::vftable;
    if (cVar1 != '\0') {
      *param_3 = local_74;
      pwStack_b0 = L"ư貋ꀤ";
      FUN_0083e850();
      ExceptionList = local_c;
      return 1;
    }
    pwStack_b0 = L"쀲\xe2e9";
    FUN_0083e850();
  }
switchD_009167f4_caseD_1:
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall
FUN_00916990(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,int param_5,undefined4 param_6)

{
  char cVar1;
  int iVar2;
  int iVar3;
  code **ppcVar4;
  undefined4 uStack_d0;
  undefined *puStack_cc;
  undefined4 uStack_bc;
  char *pcStack_b8;
  undefined4 uStack_b4;
  char *pcStack_b0;
  char *pcStack_ac;
  wchar_t *pwStack_a8;
  uint uStack_a4;
  char *local_90;
  undefined4 uStack_88;
  undefined auStack_84 [20];
  undefined auStack_70 [100];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd70c1;
  local_c = ExceptionList;
  uStack_a4 = DAT_0323f878 ^ (uint)&stack0xffffff60;
  ExceptionList = &local_c;
  pwStack_a8 = L"\xf08b\xf33b萏ȣ";
  iVar2 = FUN_0098e820();
  if (iVar2 != 0) {
    pwStack_a8 = L"삅萏ȓ";
    iVar3 = (**(code **)(iVar2 + 0x94))();
    if (iVar3 != 0) {
      pwStack_a8 = L"삅萏ȃ";
      iVar3 = (**(code **)(iVar2 + 0x90))();
      if (iVar3 != 0) {
        iVar3 = 0;
        if (param_5 == 0) {
          iVar3 = 0xedb;
        }
        else if (param_5 == 1) {
          iVar3 = 0xeda;
        }
        else if (param_5 == 2) {
          iVar3 = 0xed9;
        }
        else if (PTR_FUN_03235c4c != (undefined *)0x0) {
          pwStack_a8 = L"unsupported theme colour";
          pcStack_ac = "Assert failure";
          pcStack_b0 = "wxWindow::MSWGetThemeColour";
          uStack_b4 = 0x1283;
          pcStack_b8 = "..\\..\\src\\msw\\window.cpp";
          uStack_bc = 0x916a31;
          FUN_00840480();
        }
        pwStack_a8 = L"쌻ᥴ钋갤";
        ppcVar4 = (code **)FUN_0098e820();
        if (ppcVar4 == (code **)0x0) {
          local_90 = (char *)0x0;
        }
        else {
          pcStack_ac = *(char **)(param_1_00 + 0x13c);
          pwStack_a8 = (wchar_t *)param_2;
          pcStack_b0 = (char *)0x916a65;
          local_90 = (char *)(**ppcVar4)();
        }
        pwStack_a8 = (wchar_t *)&uStack_88;
        uStack_4 = 0;
        pcStack_b0 = (char *)param_4;
        uStack_b4 = param_3;
        pcStack_b8 = local_90;
        uStack_bc = 0x916a96;
        pcStack_ac = (char *)iVar3;
        iVar2 = (**(code **)(iVar2 + 0x3c))();
        if (-1 < iVar2) {
          pwStack_a8 = (wchar_t *)uStack_88;
          pcStack_ac = (char *)param_1;
          pcStack_b0 = (char *)0x916aae;
          FUN_008fee20();
          uStack_4 = 0xffffffff;
          if (local_90 == (char *)0x0) {
            ExceptionList = local_c;
            return param_1;
          }
          pwStack_a8 = L"傋圄틿㟩\x01茀⓬첋撉㰤ꁨ퉟\xe800圦ﾲ٪㻨\xf300菿⣄삄萏Ü"
          ;
          iVar2 = FUN_0098e820();
          pwStack_a8 = (wchar_t *)local_90;
          pcStack_ac = (char *)0x916ad3;
          (**(code **)(iVar2 + 4))();
          ExceptionList = local_c;
          return param_1;
        }
        puStack_cc = &DAT_00d25fa0;
        uStack_d0 = 0x916aeb;
        FUN_0043c211();
        puStack_cc = (undefined *)0x6;
        uStack_d0 = 0x916af2;
        cVar1 = FUN_00846b30();
        if (cVar1 != '\0') {
          pwStack_a8 = L"GetThemeColor(%s, %i, %i, %i)";
          pcStack_ac = (char *)0x916b0b;
          FUN_0083fbe0();
          pwStack_a8 = L"%s(%d): \'%s\' failed with error 0x%08lx (%s).";
          uStack_4._0_1_ = 1;
          pcStack_ac = (char *)0x916b21;
          FUN_0081c0f1();
          uStack_4._0_1_ = 2;
          pcStack_ac = (char *)0x916b2f;
          pwStack_a8 = (wchar_t *)iVar2;
          pwStack_a8 = (wchar_t *)FUN_00843700();
          pcStack_ac = (char *)iVar2;
          FUN_00913820(&uStack_d0,auStack_70,param_2,param_3,param_4,iVar3);
          uStack_4._0_1_ = 3;
          FUN_008423d0(6,"..\\..\\src\\msw\\window.cpp",0x1298,"wxWindow::MSWGetThemeColour",
                       &DAT_00d25fa0);
          uStack_4._0_1_ = 5;
          FUN_008fa740(auStack_84,"..\\..\\src\\msw\\window.cpp",0x1298);
          uStack_4._0_1_ = 2;
          pwStack_a8 = L"䲍․蓆ꀤ";
          FUN_00842440();
          uStack_4._0_1_ = 1;
          pwStack_a8 = L"䲍㐤蓆ꀤ";
          FUN_0081b5bc();
          uStack_4 = (uint)uStack_4._1_3_ << 8;
          pwStack_a8 = L"璋ᐤ蓇ꀤ";
          FUN_0081b5bc();
        }
        uStack_4 = 0xffffffff;
        if (local_90 != (char *)0x0) {
          pwStack_a8 = L"傋嘄틿蒋밤";
          iVar2 = FUN_0098e820();
          pwStack_a8 = (wchar_t *)local_90;
          pcStack_ac = (char *)0x916bf7;
          (**(code **)(iVar2 + 4))();
        }
      }
    }
  }
  pwStack_a8 = (wchar_t *)param_6;
  pcStack_ac = (char *)param_1;
  pcStack_b0 = (char *)0x916c0c;
  FUN_008ff080();
  ExceptionList = local_c;
  return param_1;
}



char __fastcall FUN_00916c30(int param_1)

{
  char cVar1;
  HRGN hRgn;
  int iVar2;
  int *piVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = (HRGN)0xffffffff;
  puStack_8 = &LAB_00bd7137;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  hRgn = CreateRectRgn(0,0,0,0);
  if (hRgn == (HRGN)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = hRgn;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (HRGN)((uint)uStack_4._1_3_ << 8);
      FUN_00842440();
      uStack_4 = (HRGN)0xffffffff;
      FUN_0081b5bc();
    }
  }
  iVar2 = GetUpdateRgn(*(HWND *)(param_1 + 0x13c),hRgn,0);
  if (iVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = (HRGN)0x2;
      FUN_008423d0();
      uStack_4._0_1_ = 3;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (HRGN)CONCAT31(uStack_4._1_3_,2);
      FUN_00842440();
      uStack_4 = (HRGN)0xffffffff;
      FUN_0081b5bc();
    }
  }
  piVar3 = (int *)FUN_00993200();
  uStack_4 = (HRGN)0x4;
  if ((int *)(param_1 + 0xb8) != piVar3) {
    FUN_0083ea60();
  }
  uStack_4 = (HRGN)0xffffffff;
  FUN_008f7630();
  DAT_032bf64d = '\0';
  FUN_00845a20();
  DAT_032e1508 = DAT_032e1508 + 1;
  uStack_4 = (HRGN)0x5;
  cVar1 = FUN_0091c170();
  if ((cVar1 != '\0') && (DAT_032bf64d == '\0')) {
    cVar1 = '\0';
  }
  FUN_00845a20();
  uStack_4._0_1_ = 6;
  FUN_0091c170();
  (**(code **)(*(int *)(param_1 + 0xb8) + 0x30))();
  uStack_4 = (HRGN)CONCAT31(uStack_4._1_3_,5);
  FUN_0083e850();
  DAT_032e1508 = DAT_032e1508 + -1;
  uStack_4 = (HRGN)0xffffffff;
  FUN_0083e850();
  ExceptionList = local_c;
  return cVar1;
}



int __thiscall FUN_00916f40(int *param_1,HDC param_2,int param_3)

{
  char cVar1;
  int iVar2;
  BOOL BVar3;
  int *piVar4;
  tagRECT atStack_94 [2];
  undefined **ppuStack_70;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd717b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = (**(code **)(*param_1 + 0x310))();
  if (iVar2 == 0) {
    if ((*(byte *)(param_1 + 0x37) & 0x10) == 0) {
      iVar2 = 0;
    }
    else {
      FUN_0091de40();
      uStack_4 = 2;
      piVar4 = (int *)FUN_008f7980();
      uStack_4 = 0xffffffff;
      ppuStack_70 = wxObject::vftable;
      FUN_0083e850();
      iVar2 = (**(code **)(*piVar4 + 0x20))();
    }
  }
  else {
    GetWindowRect(*(HWND *)(param_3 + 0x13c),atStack_94);
    MapWindowPoints((HWND)0x0,(HWND)param_1[0x4f],(LPPOINT)atStack_94,1);
    BVar3 = SetBrushOrgEx(param_2,-atStack_94[0].left,-atStack_94[0].top,(LPPOINT)0x0);
    if (BVar3 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  ExceptionList = local_c;
  return iVar2;
}



undefined __thiscall
FUN_00917110(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  bool bVar1;
  char cVar2;
  HWND hWnd;
  HDWP pvVar3;
  BOOL BVar4;
  int iVar5;
  undefined local_e6;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd71d1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar5 = 0;
  for (hWnd = GetWindow((HWND)param_1_00[0x4f],5); hWnd != (HWND)0x0; hWnd = GetWindow(hWnd,2)) {
    iVar5 = iVar5 + 1;
  }
  bVar1 = false;
  if ((1 < iVar5) && (param_1_00[0x54] == 0)) {
    pvVar3 = BeginDeferWindowPos(iVar5);
    param_1_00[0x54] = (int)pvVar3;
    if (pvVar3 == (HDWP)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    if (param_1_00[0x54] != 0) {
      bVar1 = true;
    }
  }
  local_e6 = 0;
  switch(param_3) {
  case 1:
    local_e6 = FUN_009124d0();
    break;
  case 2:
    FUN_00912560();
  case 0:
    (**(code **)(*param_1_00 + 0x278))();
    FUN_00845a20();
    uStack_4 = 2;
    local_e6 = FUN_0091c170();
    uStack_4 = 0xffffffff;
    FUN_0083e850();
    break;
  case 3:
  case 4:
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  if ((bVar1) && (pvVar3 = (HDWP)param_1_00[0x54], pvVar3 != (HDWP)0x0)) {
    param_1_00[0x54] = 0;
    BVar4 = EndDeferWindowPos(pvVar3);
    if (BVar4 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 3;
        FUN_008423d0();
        uStack_4._0_1_ = 4;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = CONCAT31(uStack_4._1_3_,3);
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    for (iVar5 = param_1_00[0x15]; iVar5 != 0; iVar5 = *(int *)(iVar5 + 0xc)) {
      (**(code **)(**(int **)(iVar5 + 8) + 0x330))();
    }
  }
  ExceptionList = local_c;
  return local_e6;
}



undefined __fastcall FUN_009174a0(int *param_1)

{
  char cVar1;
  undefined uVar2;
  BOOL BVar3;
  void *pvStack_14;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd721e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(*param_1 + 0x260))();
  FUN_0092b130();
  local_c = (void *)0x0;
  FUN_009102c0();
  if (DAT_032395a4 == -1) {
    BVar3 = SystemParametersInfoW(0x68,0,&DAT_032395a4,0);
    if (BVar3 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        local_c._0_1_ = 1;
        FUN_008423d0();
        local_c._0_1_ = 2;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_c._0_1_ = 1;
        FUN_00842440();
        local_c = (void *)((uint)local_c._1_3_ << 8);
        FUN_0081b5bc();
      }
      DAT_032395a4 = 3;
    }
  }
  uVar2 = FUN_0091c170();
  local_c = (void *)0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_14;
  return uVar2;
}



void FUN_00917680(wint_t param_1,HMENU param_2)

{
  char cVar1;
  wint_t wVar2;
  int iVar3;
  BOOL BVar4;
  undefined4 ****_Str;
  wchar_t *pwVar5;
  UINT item;
  undefined auStack_10c [8];
  undefined4 uStack_104;
  undefined *puStack_100;
  char *pcStack_fc;
  int iStack_d4;
  HMENU local_d0;
  undefined4 uStack_cc;
  char *pcStack_c4;
  undefined4 uStack_c0;
  char *pcStack_bc;
  undefined *puStack_b8;
  __time64_t _Stack_b4;
  DWORD DStack_ac;
  int iStack_a8;
  uint uStack_a0;
  undefined4 uStack_90;
  uint uStack_8c;
  void *pvStack_88;
  undefined *puStack_7c;
  undefined auStack_78 [20];
  tagMENUITEMINFOW local_64;
  undefined4 ****appppuStack_30 [5];
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7253;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&iStack_d4;
  ExceptionList = &local_c;
  local_d0 = param_2;
  _memset(&local_64,0,0x30);
  local_64.cbSize = 0x30;
  local_64.fMask = 0x30;
  iVar3 = GetMenuItemCount(param_2);
  item = 0;
  iStack_d4 = iVar3;
  if (0 < iVar3) {
    do {
      local_64.cch = 0;
      pcStack_fc = (char *)0x91772d;
      BVar4 = GetMenuItemInfoW(local_d0,item,1,&local_64);
      if (BVar4 == 0) {
        puStack_7c = auStack_10c;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 0;
          uStack_cc = 6;
          pcStack_c4 = "..\\..\\src\\msw\\window.cpp";
          pcStack_bc = "wxWindow::HandleMenuChar";
          uStack_c0 = 0x16dd;
          puStack_b8 = &DAT_00d25fa0;
          _Stack_b4 = __time64((__time64_t *)0x0);
          DStack_ac = GetCurrentThreadId();
          iStack_a8 = 0;
          uStack_8c = 7;
          uStack_90 = 0;
          uStack_a0 = uStack_a0 & 0xffff0000;
          pvStack_88 = (void *)0x0;
          uStack_4._0_1_ = 1;
          GetLastError();
          FUN_00843700();
          GetLastError();
          pcStack_fc = "..\\..\\src\\msw\\window.cpp";
          puStack_100 = auStack_78;
          uStack_104 = 0x9178bd;
          FUN_00847d90();
          uStack_4 = (uint)uStack_4._1_3_ << 8;
          _free(pvStack_88);
          if (7 < uStack_8c) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          uStack_a0 = uStack_a0 & 0xffff0000;
          uStack_8c = 7;
          uStack_90 = 0;
          if (iStack_a8 != 0) {
            FUN_00841af0();
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
          iVar3 = iStack_d4;
        }
      }
      else if (local_64.fType == 0x100) {
        (**(code **)(*(int *)local_64.dwItemData + 0x14))();
        _Str = appppuStack_30[0];
        if (uStack_1c < 8) {
          _Str = appppuStack_30;
        }
        for (pwVar5 = _wcschr((wchar_t *)_Str,L'&'); pwVar5 != (wchar_t *)0x0;
            pwVar5 = _wcschr(pwVar5 + 2,L'&')) {
          if (pwVar5[1] != L'&') {
            wVar2 = _towupper(pwVar5[1]);
            if (wVar2 == param_1) {
              _free(pvStack_18);
              if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
              goto LAB_00917930;
            }
            break;
          }
        }
        _free(pvStack_18);
        if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
      }
      item = item + 1;
    } while ((int)item < iVar3);
  }
LAB_00917930:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00917990(char param_1)

{
  char cVar1;
  DWORD dwThreadId;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == '\0') {
    if (DAT_032bf658 != (HHOOK)0x0) {
      UnhookWindowsHookEx(DAT_032bf658);
    }
  }
  else {
    dwThreadId = GetCurrentThreadId();
    DAT_032bf658 = SetWindowsHookExW(2,FUN_00912e30,(HINSTANCE)0x0,dwThreadId);
    if (DAT_032bf658 == (HHOOK)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
        ExceptionList = local_c;
        return;
      }
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00917ad0(int param_1_00,int param_1,uint param_2,UINT param_3)

{
  char cVar1;
  UINT fsModifiers;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  fsModifiers = (UINT)((param_2 & 1) != 0);
  if ((param_2 & 4) != 0) {
    fsModifiers = fsModifiers | 4;
  }
  if ((param_2 & 2) != 0) {
    fsModifiers = fsModifiers | 2;
  }
  if ((param_2 & 8) != 0) {
    fsModifiers = fsModifiers | 8;
  }
  BVar2 = RegisterHotKey(*(HWND *)(param_1_00 + 0x13c),param_1,fsModifiers,param_3);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_00917c30(int param_1_00,int param_1)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = UnregisterHotKey(*(HWND *)(param_1_00 + 0x13c),param_1);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = local_c;
  return 1;
}



undefined4 FUN_00917d50(void)

{
  char cVar1;
  DWORD dwThreadId;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  dwThreadId = GetCurrentThreadId();
  DAT_032bf65c = SetWindowsHookExW(3,FUN_00910c90,(HINSTANCE)0x0,dwThreadId);
  if (DAT_032bf65c == (HHOOK)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = local_c;
  return 1;
}



LPRECT FUN_00917e70(LPRECT param_1,HWND param_2)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = GetWindowRect(param_2,param_1);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall
FUN_00917f80(int *param_1_00,int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  char cVar1;
  undefined4 uVar2;
  uint uVar3;
  undefined4 unaff_EDI;
  
  if (param_1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\window.cpp",0x20e,"wxWindow::Create","parent",
                   L"can\'t create wxWindow without parent");
    }
    return 0;
  }
  cVar1 = FUN_0091b100(param_1,param_2,param_3,param_4,param_5,&DAT_032c0398,param_6);
  if (cVar1 != '\0') {
    (**(code **)(*param_1 + 0x124))(param_1_00);
    uVar2 = (**(code **)(*param_1_00 + 0xe8))();
    uVar3 = (**(code **)(*param_1_00 + 0x2c8))(uVar2,&stack0x00000000);
    cVar1 = (**(code **)(*param_1_00 + 0xdc))();
    if (cVar1 != '\0') {
      uVar3 = uVar3 | 0x10000000;
    }
    uVar2 = FUN_008fb5e0(L"wxWindow",0xf,0);
    cVar1 = FUN_00916440(uVar2,0,param_3,param_4,uVar3,unaff_EDI);
    if (cVar1 != '\0') {
      (**(code **)(*param_1_00 + 0x224))();
      return 1;
    }
  }
  return 0;
}



void __thiscall FUN_009181c0(int *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = (**(code **)(*param_1 + 0xe8))();
  if (param_2 != iVar1) {
    param_1[0x38] = param_2;
    FUN_00915ae0(iVar1,param_1[0x39]);
  }
  return;
}



void __thiscall FUN_009181f0(int *param_1_00,int param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  int iVar3;
  
  iVar3 = param_1_00[0x39];
  if (param_1 != iVar3) {
    pcVar1 = *(code **)(*param_1_00 + 0xe8);
    param_1_00[0x39] = param_1;
    uVar2 = (*pcVar1)(iVar3);
    FUN_00915ae0(uVar2,iVar3);
  }
  return;
}



void __thiscall FUN_00918220(int param_1_00,int *param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined local_10 [16];
  
  if ((*(int *)(param_1_00 + 0x15c) == DAT_03238d04) &&
     (*(int *)(param_1_00 + 0x160) == DAT_03238d08)) {
    piVar3 = (int *)FUN_00917e70(local_10,*(undefined4 *)(param_1_00 + 0x13c));
    iVar1 = piVar3[1];
    iVar2 = piVar3[3];
    if (param_1 != (int *)0x0) {
      *param_1 = piVar3[2] - *piVar3;
    }
    if (param_2 != (int *)0x0) {
      *param_2 = iVar2 - iVar1;
    }
  }
  else {
    if (param_1 != (int *)0x0) {
      *param_1 = *(int *)(param_1_00 + 0x15c);
    }
    if (param_2 != (int *)0x0) {
      *param_2 = *(int *)(param_1_00 + 0x160);
      return;
    }
  }
  return;
}



void __thiscall FUN_009182b0(int *param_1_00,int *param_1,int *param_3)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  tagPOINT local_18;
  undefined local_10 [12];
  int local_4;
  
  piVar1 = (int *)param_1_00[0x11];
  if ((param_1_00[0x55] == DAT_03238d0c) && (param_1_00[0x56] == DAT_03238d10)) {
    piVar4 = (int *)FUN_00917e70(local_10,param_1_00[0x4f]);
    local_18.x = *piVar4;
    local_18.y = piVar4[1];
    iVar2 = piVar4[2];
    local_4 = piVar4[3];
    cVar3 = (**(code **)(*param_1_00 + 0x11c))();
    iVar5 = local_18.y;
    iVar6 = local_18.x;
    if (cVar3 == '\0') {
      iVar5 = (**(code **)(*DAT_032bcb68 + 0xe4))();
      if (iVar5 == 2) {
        local_18.x = iVar2;
      }
      iVar5 = local_18.y;
      iVar6 = local_18.x;
      if (piVar1 != (int *)0x0) {
        ScreenToClient((HWND)piVar1[0x4f],&local_18);
        iVar5 = local_18.y;
        iVar6 = local_18.x;
      }
    }
  }
  else {
    iVar5 = param_1_00[0x56];
    iVar6 = param_1_00[0x55];
  }
  if ((piVar1 != (int *)0x0) && (cVar3 = (**(code **)(*param_1_00 + 0x11c))(), cVar3 == '\0')) {
    (**(code **)(*piVar1 + 0x78))(&local_18);
    iVar6 = iVar6 - local_18.x;
    iVar5 = iVar5 - local_18.y;
  }
  if (param_1 != (int *)0x0) {
    *param_1 = iVar6;
  }
  if (param_3 != (int *)0x0) {
    *param_3 = iVar5;
  }
  return;
}



void __fastcall FUN_009183a0(int param_1)

{
  SHORT SVar1;
  ushort uVar2;
  BOOL BVar3;
  DWORD DVar4;
  int *piVar5;
  uint uVar6;
  tagPOINT local_7c [2];
  int iStack_6c;
  int iStack_68;
  undefined auStack_64 [16];
  undefined **appuStack_54 [18];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7298;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(byte *)(param_1 + 0x144) = *(byte *)(param_1 + 0x144) & 0xfe;
  uVar6 = 0;
  SVar1 = GetKeyState(0x10);
  if (SVar1 < 0) {
    uVar6 = 4;
  }
  SVar1 = GetKeyState(0x11);
  if (SVar1 < 0) {
    uVar6 = uVar6 | 8;
  }
  uVar2 = GetKeyState(1);
  if ((uVar2 & 0x8000) != 0) {
    uVar6 = uVar6 | 1;
  }
  uVar2 = GetKeyState(4);
  if ((uVar2 & 0x8000) != 0) {
    uVar6 = uVar6 | 0x10;
  }
  uVar2 = GetKeyState(2);
  if ((uVar2 & 0x8000) != 0) {
    uVar6 = uVar6 | 2;
  }
  BVar3 = GetCursorPos(local_7c);
  if (BVar3 == 0) {
    DVar4 = GetMessagePos();
    local_7c[0].x = (LONG)(short)DVar4;
    local_7c[0].y = (LONG)(short)(DVar4 >> 0x10);
  }
  piVar5 = (int *)FUN_00917e70(auStack_64,*(undefined4 *)(param_1 + 0x13c));
  iStack_6c = piVar5[2];
  iStack_68 = piVar5[3];
  local_7c[0].x = local_7c[0].x - *piVar5;
  local_7c[0].y = local_7c[0].y - piVar5[1];
  FUN_0092b130(DAT_032bfe28);
  uStack_4 = 0;
  FUN_009102c0(appuStack_54,local_7c[0].x,local_7c[0].y,uVar6);
  FUN_0091c170(appuStack_54);
  uStack_4 = 0xffffffff;
  appuStack_54[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



// WARNING: Removing unreachable block (ram,0x009185a3)

uint __thiscall FUN_009184f0(int *param_1,uint param_2,int param_3,undefined4 param_4)

{
  char cVar1;
  uint uVar2;
  uint uStack_b4;
  int iStack_b0;
  undefined4 uStack_ac;
  undefined4 uStack_a8;
  int iStack_a4;
  undefined4 uStack_a0;
  undefined auStack_78 [36];
  undefined **appuStack_54 [18];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd72e6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*(byte *)(param_1 + 0x51) & 1) == 0) {
    cVar1 = (**(code **)(*param_1 + 0x158))(DAT_0323f878 ^ (uint)&stack0xffffff44);
    if ((cVar1 == '\0') || (cVar1 = FUN_0090f250(), cVar1 != '\0')) {
      *(byte *)(param_1 + 0x51) = *(byte *)(param_1 + 0x51) | 1;
      if (DAT_032bfb70 == '\0') {
        FUN_004325b6(L"comctl32.dll");
        uStack_4 = 0;
        FUN_0089ed30(auStack_78,0x68);
        uStack_4._0_1_ = 2;
        FUN_0040159c();
        DAT_032bfb70 = '\x01';
        uStack_4 = 0xffffffff;
      }
      if (DAT_032bfb6c != (code *)0x0) {
        uStack_a0 = 0;
        iStack_a4 = param_1[0x4f];
        uStack_ac = 0x10;
        uStack_a8 = 2;
        (*DAT_032bfb6c)(&uStack_ac);
      }
      FUN_0092b130(DAT_032bfe24);
      uStack_4 = 4;
      FUN_009102c0(appuStack_54,param_2,param_3,param_4);
      FUN_0091c170(appuStack_54);
      uStack_4 = 0xffffffff;
      appuStack_54[0] = wxObject::vftable;
      FUN_0083e850();
    }
  }
  else {
    cVar1 = (**(code **)(*param_1 + 0x158))(DAT_0323f878 ^ (uint)&stack0xffffff44);
    if ((cVar1 != '\0') && (cVar1 = FUN_0090f250(), cVar1 == '\0')) {
      FUN_009183a0();
    }
  }
  if ((((DAT_032bf668 == DAT_032bfe18) || (DAT_032bf668 == DAT_032bfe08)) ||
      (DAT_032bf668 == DAT_032bfe10)) || (DAT_032bf668 == DAT_032bfe20)) {
    uStack_b4 = param_2;
    iStack_b0 = param_3;
    (**(code **)(*param_1 + 0x25c))(&uStack_b4,&iStack_b0);
    if ((uStack_b4 == DAT_032bf660) && (iStack_b0 == DAT_032bf664)) {
      DAT_032bf668 = DAT_032bfe20;
      ExceptionList = local_c;
      return uStack_b4 & 0xffffff00;
    }
  }
  uVar2 = FUN_009103d0(0x200,param_2,param_3,param_4);
  ExceptionList = local_c;
  return uVar2;
}



void __thiscall
FUN_00918770(code **param_1_00,uint *param_1,uint param_2,code *param_3,code **param_4)

{
  char cVar1;
  char cVar2;
  code *pcVar3;
  int *piVar4;
  int iVar5;
  undefined4 uVar6;
  int iVar7;
  uint uVar8;
  short sVar9;
  undefined4 *puVar10;
  short sVar11;
  uint local_134;
  undefined4 uStack_130;
  undefined local_12c [16];
  code **local_11c;
  code *local_118;
  int local_114;
  code **ppcStack_110;
  uint *local_10c;
  undefined local_108 [24];
  int iStack_f0;
  undefined auStack_ec [24];
  undefined auStack_d4 [4];
  undefined local_d0 [16];
  undefined **local_c0 [2];
  code **local_b8;
  int local_8c;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7373;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_134;
  ExceptionList = &local_c;
  local_10c = param_1;
  cVar2 = '\0';
  local_134 = 0;
  sVar11 = (short)param_4;
  sVar9 = (short)((uint)param_4 >> 0x10);
  if (0x100 < param_2) {
    if (0x200 < param_2) {
      if (0x302 < param_2) {
        switch(param_2) {
        case 0x30f:
          cVar2 = FUN_00912310(DAT_0323f878 ^ (uint)&stack0xfffffebc);
          break;
        default:
switchD_009187fb_caseD_4:
          for (puVar10 = *(undefined4 **)(DAT_032bf66c + (param_2 % DAT_032bf670) * 4);
              puVar10 != (undefined4 *)0x0; puVar10 = (undefined4 *)*puVar10) {
            if (puVar10[1] == param_2) goto LAB_00919302;
          }
          puVar10 = (undefined4 *)0x0;
LAB_00919302:
          if (puVar10 == (undefined4 *)0x0) goto LAB_00918929;
          cVar2 = (*(code *)puVar10[2])(param_1_00,param_2,param_3,param_4);
          break;
        case 0x311:
          cVar2 = FUN_009120e0(param_3);
          break;
        case 0x312:
          cVar2 = FUN_00912ff0((uint)param_3 & 0xffff,param_4);
          break;
        case 0x318:
          cVar2 = FUN_00910170(param_3);
          break;
        case 0x3a0:
        case 0x3a1:
        case 0x3a2:
        case 0x3a3:
        case 0x3b5:
        case 0x3b6:
        case 0x3b7:
        case 0x3b8:
          cVar2 = FUN_00910570(param_2,(int)sVar11,(int)sVar9,param_3);
        }
        goto LAB_00919314;
      }
      if (0x2ff < param_2) {
        cVar2 = FUN_00913ff0(param_2);
        goto LAB_00919314;
      }
      switch(param_2) {
      case 0x201:
      case 0x202:
      case 0x203:
      case 0x204:
      case 0x205:
      case 0x206:
      case 0x207:
      case 0x208:
      case 0x209:
      case 0x20b:
      case 0x20c:
      case 0x20d:
        cVar2 = FUN_009103d0(param_2,(int)sVar11,(int)sVar9,param_3);
        if (cVar2 != '\0') goto LAB_0091891d;
        cVar2 = '\0';
        if (((param_1_00[0x50] == (code *)0x0) && (param_2 == 0x201)) &&
           (cVar1 = FUN_0090e3d0(), cVar1 != '\0')) {
          (**(code **)(*param_1_00 + 0x100))();
        }
        break;
      case 0x20a:
        cVar2 = FUN_009174a0(param_3,param_4);
        break;
      default:
        goto switchD_009187fb_caseD_4;
      case 0x214:
        local_12c._0_4_ = *param_4;
        local_12c._4_4_ = param_4[1];
        local_12c._8_4_ = param_4[2] + (1 - local_12c._0_4_);
        local_12c._12_4_ = param_4[3] + (1 - local_12c._4_4_);
        cVar2 = FUN_009128f0(local_12c);
        goto LAB_0091912a;
      case 0x215:
        cVar2 = FUN_00912240(param_4);
        break;
      case 0x216:
        local_12c._0_4_ = *param_4;
        local_12c._4_4_ = param_4[1];
        local_12c._8_4_ = param_4[2] + (1 - local_12c._0_4_);
        local_12c._12_4_ = param_4[3] + (1 - local_12c._4_4_);
        cVar2 = FUN_009126a0(local_12c);
LAB_0091912a:
        if (cVar2 == '\0') goto LAB_00918929;
        *param_4 = (code *)local_12c._0_4_;
        param_4[2] = (code *)(local_12c._8_4_ + -1) + local_12c._0_4_;
        param_4[1] = (code *)local_12c._4_4_;
        param_4[3] = (code *)(local_12c._12_4_ + -1) + local_12c._4_4_;
        break;
      case 0x218:
        cVar2 = FUN_009167b0(param_3,param_4,(int)&uStack_130 + 3);
        if ((cVar2 != '\0') && (uStack_130._3_1_ != '\0')) {
          local_134 = 0x424d5144;
          break;
        }
        goto LAB_00918994;
      case 0x231:
        cVar2 = FUN_00912790();
        break;
      case 0x232:
        cVar2 = FUN_00912840();
        break;
      case 0x233:
        cVar2 = FUN_00914d30(param_3);
        break;
      case 0x2a3:
        if ((*(byte *)(param_1_00 + 0x51) & 1) != 0) {
          FUN_009183a0();
        }
        goto LAB_00918929;
      }
      goto LAB_00919314;
    }
    if (param_2 == 0x200) {
      cVar2 = FUN_009184f0((int)sVar11,(int)sVar9,param_3);
      goto LAB_00919314;
    }
    switch(param_2) {
    case 0x101:
    case 0x105:
      if (param_3 == (code *)0x5d) {
        cVar2 = FUN_009103d0(0x205,0xffffffff,0xffffffff,0);
      }
      else {
        cVar2 = FUN_00912da0((uint)param_3 & 0xffff,param_4);
      }
      break;
    case 0x102:
    case 0x106:
      if ((*(byte *)(param_1_00 + 0x51) & 2) == 0) {
        cVar2 = FUN_00912c80((uint)param_3 & 0xffff,param_4);
        break;
      }
      *(byte *)(param_1_00 + 0x51) = *(byte *)(param_1_00 + 0x51) & 0xfd;
      goto LAB_0091891d;
    default:
      goto switchD_009187fb_caseD_4;
    case 0x104:
      goto switchD_00918e8a_caseD_104;
    case 0x10d:
      DAT_032bf650 = DAT_032bf650 + 1;
      goto LAB_00918929;
    case 0x10e:
      DAT_032bf650 = DAT_032bf650 + -1;
      goto LAB_00918929;
    case 0x110:
      cVar2 = FUN_00911db0(param_3);
      if (cVar2 == '\0') goto LAB_00918929;
      local_134 = 0;
      break;
    case 0x111:
      cVar2 = FUN_00913ec0(param_3,(uint)param_3 >> 0x10,param_4);
      break;
    case 0x114:
    case 0x115:
      cVar2 = (**(code **)(*param_1_00 + 0x2e0))
                        ((param_2 != 0x114) * '\x04' + '\x04',param_3,(uint)param_3 >> 0x10,param_4)
      ;
      break;
    case 0x120:
      if ((uint)param_3 >> 0x10 != 0x10) goto LAB_00918929;
      iVar5 = _toupper((uint)param_3 & 0xffff);
      uVar8 = FUN_00917680(iVar5,param_4);
      if (uVar8 == 0xffffffff) goto LAB_00918929;
      local_134 = uVar8 & 0xffff | 0x20000;
      goto LAB_0091891d;
    case 0x132:
    case 0x133:
    case 0x134:
    case 0x135:
    case 0x136:
    case 0x137:
    case 0x138:
      cVar2 = FUN_0090ff60(&local_134,param_3,param_4);
    }
    goto LAB_00919314;
  }
  if (param_2 == 0x100) {
switchD_00918e8a_caseD_104:
    cVar1 = FUN_00912d10((uint)param_3 & 0xffff,param_4);
    *(byte *)(param_1_00 + 0x51) =
         *(byte *)(param_1_00 + 0x51) ^ (cVar1 * '\x02' ^ *(byte *)(param_1_00 + 0x51)) & 2;
    if ((*(byte *)(param_1_00 + 0x51) & 2) == 0) {
      switch(param_3) {
      case (code *)0x8:
      case (code *)0x9:
      case (code *)0xd:
      case (code *)0x10:
      case (code *)0x11:
      case (code *)0x12:
      case (code *)0x14:
      case (code *)0x1b:
      case (code *)0x20:
      case (code *)0x60:
      case (code *)0x61:
      case (code *)0x62:
      case (code *)0x63:
      case (code *)0x64:
      case (code *)0x65:
      case (code *)0x66:
      case (code *)0x67:
      case (code *)0x68:
      case (code *)0x69:
      case (code *)0x6a:
      case (code *)0x6b:
      case (code *)0x6d:
      case (code *)0x6e:
      case (code *)0x6f:
      case (code *)0x90:
      case (code *)0x91:
      case (code *)0xba:
      case (code *)0xbb:
      case (code *)0xbc:
      case (code *)0xbd:
      case (code *)0xbe:
      case (code *)0xbf:
      case (code *)0xc0:
      case (code *)0xdb:
      case (code *)0xdc:
      case (code *)0xdd:
      case (code *)0xde:
      case (code *)0xe2:
        break;
      default:
        if (((param_3 < (code *)0x30) || ((code *)0x39 < param_3)) &&
           ((code *)0x19 < param_3 + -0x41)) {
          FUN_0092bbc0(DAT_032bfe60);
          local_4 = 1;
          FUN_009129e0(local_c0,param_3,param_4,param_1_00);
          local_8c = FUN_0090da40(param_3,(uint)param_4 | 0x1000000,0);
          cVar2 = '\0';
          if (local_8c != 0) {
            cVar2 = FUN_0091c170(local_c0);
          }
          local_4 = 0xffffffff;
          local_c0[0] = wxObject::vftable;
          FUN_0083e850();
        }
        break;
      case (code *)0x5d:
        cVar2 = FUN_009103d0(0x204,0xffffffff,0xffffffff,0);
      }
    }
    else {
      cVar2 = '\x01';
    }
    if (param_2 == 0x104) goto LAB_00918929;
    goto LAB_00919314;
  }
  switch(param_2) {
  case 1:
    cVar2 = FUN_0090fab0(param_4,(int)&uStack_130 + 3);
    if (cVar2 == '\0') goto LAB_00918929;
    local_134 = (uStack_130._3_1_ != '\0') - 1;
    break;
  case 2:
    FUN_0090fae0();
    goto LAB_00918929;
  case 3:
    cVar2 = FUN_009125f0((int)sVar11,(int)sVar9);
    break;
  default:
    goto switchD_009187fb_caseD_4;
  case 5:
    cVar2 = FUN_00917110((uint)param_4 & 0xffff,(uint)param_4 >> 0x10,param_3);
    break;
  case 6:
    cVar2 = FUN_0090fb10((uint)param_3 & 0xffff,(uint)param_3 >> 0x10 != 0,param_4);
    break;
  case 7:
    cVar2 = FUN_00913d20(param_3);
    break;
  case 8:
    cVar2 = FUN_0090fbc0(param_3);
    break;
  case 0xf:
    if (param_3 == (code *)0x0) {
      cVar2 = FUN_00916c30();
    }
    else {
      FUN_009902c0(param_1_00,param_3);
      local_4 = 0;
      cVar2 = FUN_00916c30();
      local_4 = 0xffffffff;
      FUN_00457221();
    }
    break;
  case 0x10:
    local_134 = 1;
    goto LAB_0091891d;
  case 0x11:
    cVar2 = FUN_0090f900(param_4,&local_134);
    break;
  case 0x14:
    local_11c = param_1_00;
    piVar4 = (int *)FUN_0090e870(local_d0,&local_11c);
    local_118 = (code *)piVar4[1];
    if (*piVar4 == 0) {
      cVar2 = FUN_009134f0(param_3);
    }
    else {
      cVar2 = (**(code **)(**(int **)(*piVar4 + 8) + 0x324))();
    }
    goto LAB_0091898a;
  case 0x15:
    cVar2 = FUN_00911fc0();
    break;
  case 0x16:
    cVar2 = FUN_0090f9d0(param_3 != (code *)0x0,param_4);
    break;
  case 0x18:
    cVar2 = FUN_00911d10(param_3 != (code *)0x0,param_4);
    break;
  case 0x1a:
    cVar2 = (**(code **)(*param_1_00 + 0x2f0))(param_3,param_4);
    break;
  case 0x1c:
    iVar5 = *DAT_032bcb68;
    uVar6 = FUN_0091ac40();
    (**(code **)(iVar5 + 0xec))(param_3 != (code *)0x0,uVar6);
    goto LAB_00918929;
  case 0x20:
    cVar2 = FUN_00911e40(param_3,param_4,(uint)param_4 >> 0x10);
    goto LAB_0091898a;
  case 0x24:
    cVar2 = FUN_00910210(param_4);
    break;
  case 0x2b:
    pcVar3 = *(code **)(*param_1_00 + 0x2e8);
    goto LAB_00918984;
  case 0x2c:
    pcVar3 = *(code **)(*param_1_00 + 0x2ec);
LAB_00918984:
    cVar2 = (*pcVar3)(param_3,param_4);
LAB_0091898a:
    if (cVar2 == '\0') goto LAB_00918929;
LAB_00918994:
    local_134 = 1;
    break;
  case 0x4e:
    cVar2 = FUN_0090f890(param_3,param_4,&local_134);
    break;
  case 0x53:
    if (param_4[1] == (code *)0x1) {
      local_118 = param_4[6];
      local_11c = (code **)param_4[5];
      FUN_00913960(DAT_032bff8c,param_1_00[0x10],&local_11c,0);
      local_4 = 2;
    }
    else {
      if (param_4[1] != (code *)0x2) goto LAB_00918929;
      FUN_00913960(DAT_032bff8c,param_4[2],&DAT_03238d0c,0);
      local_4 = 3;
    }
    local_b8 = param_1_00;
    FUN_0091c170(local_c0);
    local_4 = 0xffffffff;
    FUN_00913a20();
    goto LAB_0091891d;
  case 0x7b:
    local_11c = (code **)(int)sVar11;
    local_118 = (code *)(int)sVar9;
    FUN_00913b00(DAT_032bff34,param_1_00[0x10],&local_11c);
    local_4 = 4;
    if ((param_3 == param_1_00[0x4f]) ||
       (local_b8 = (code **)FUN_0090e980(param_3,0), local_b8 == (code **)0x0)) {
      local_b8 = param_1_00;
    }
    cVar2 = FUN_0091c170(local_c0);
    local_4 = 0xffffffff;
    FUN_00a1f4e0();
    break;
  case 0x7e:
    cVar2 = FUN_00912050();
    break;
  case 0x83:
    local_114 = FUN_0090d640();
    pcVar3 = *param_1_00;
    uVar6 = FUN_0090e410();
    iVar5 = (**(code **)(pcVar3 + 0x328))(uVar6);
    if ((local_114 == 0) || (iVar5 != 0x10000000)) goto LAB_00918929;
    (**(code **)(*param_1_00 + 0x2fc))(param_2,param_3,param_4);
    local_11c = (code **)0x0;
    if (param_3 != (code *)0x0) {
      local_11c = param_4;
    }
    FUN_0090e7e0(param_1_00,L"EDIT");
    local_10 = 5;
    local_134 = 0;
    uStack_130 = 0;
    local_12c._0_4_ = (code *)0x0;
    FUN_0094bd30(param_1_00);
    local_10 = CONCAT31(local_10._1_3_,6);
    iVar5 = (**(code **)(local_12c._12_4_ + 0x10))
                      (local_12c._4_4_,local_10c[0x42],1,1,param_4,&stack0xfffffec8);
    if (iVar5 == 0) {
      InflateRect((LPRECT)local_12c,-1,-1);
      if (param_3 == (code *)0x0) {
        *param_4 = (code *)local_12c._0_4_;
        param_4[1] = (code *)local_12c._4_4_;
        param_4[2] = (code *)local_12c._8_4_;
        param_4[3] = (code *)local_12c._12_4_;
      }
      else {
        *ppcStack_110 = (code *)local_12c._0_4_;
        ppcStack_110[1] = (code *)local_12c._4_4_;
        ppcStack_110[2] = (code *)local_12c._8_4_;
        ppcStack_110[3] = (code *)local_12c._12_4_;
      }
    }
    local_4 = CONCAT31(local_4._1_3_,5);
    goto LAB_00918ce6;
  case 0x85:
    iVar5 = FUN_0090d640();
    local_11c = (code **)(*param_1_00 + 0x328);
    uVar6 = FUN_0090e410();
    iVar7 = (**local_11c)(uVar6);
    if ((iVar5 == 0) || (iVar7 != 0x10000000)) goto LAB_00918929;
    (**(code **)(*param_1_00 + 0x2fc))(param_2,param_3,param_4);
    FUN_0090e7e0(param_1_00,L"EDIT");
    local_10 = 7;
    FUN_0094bce0(param_1_00);
    local_10 = CONCAT31(local_10._1_3_,8);
    uVar6 = FUN_004555c3(auStack_d4);
    FUN_0090e0d0(uVar6);
    FUN_0090e470(&stack0xfffffec8,auStack_ec);
    pcVar3 = (code *)local_12c._4_4_;
    (**(code **)(iVar5 + 0x10))
              (local_12c._4_4_,*(undefined4 *)(iStack_f0 + 0x108),1,1,auStack_ec,local_108);
    InflateRect((LPRECT)(local_12c + 0xc),-1,-1);
    ExcludeClipRect(*(HDC *)(iStack_f0 + 0x108),local_12c._12_4_,(int)local_11c,(int)local_118,
                    local_114);
    iVar7 = (**(code **)(iVar5 + 0x38))(pcVar3,1,1);
    if (iVar7 != 0) {
      (**(code **)(iVar5 + 0xb4))(param_1_00[0x4f],*(undefined4 *)(iStack_f0 + 0x108),&ppcStack_110)
      ;
    }
    cVar2 = FUN_0091b930();
    (**(code **)(iVar5 + 8))
              (pcVar3,*(undefined4 *)(iStack_f0 + 0x108),1,(-(uint)(cVar2 != '\0') & 0xfffffffd) + 4
               ,&ppcStack_110,0);
    local_4 = CONCAT31(local_4._1_3_,7);
LAB_00918ce6:
    FUN_00457221();
    local_4 = 0xffffffff;
    FUN_0090d670();
    goto LAB_0091891d;
  case 0x87:
    if ((param_1_00[0x50] != (code *)0x0) && (((uint)param_1_00[0x38] >> 0x12 & 1) == 0))
    goto LAB_00918929;
    local_134 = 0x80;
    if (((uint)param_1_00[0x38] >> 0x12 & 1) != 0) {
      local_134 = 0x87;
    }
    goto LAB_0091891d;
  }
LAB_00919314:
  if (cVar2 != '\0') {
LAB_0091891d:
    *local_10c = local_134;
  }
LAB_00918929:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00919700(int *param_1_00,int *param_1,undefined4 *param_2)

{
  ushort uVar1;
  uint uVar2;
  HINSTANCE hInstance;
  undefined4 uVar3;
  HWND pHVar4;
  UINT uCmd;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd73e8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_00994360(*param_2);
  FUN_0090d950(param_1_00);
  pHVar4 = (HWND)0x0;
  local_4 = 0;
  if (param_1 != (int *)0x0) {
    pHVar4 = (HWND)param_1[0x4f];
  }
  uVar1 = *(ushort *)param_2;
  hInstance = (HINSTANCE)FUN_008a65e0(uVar2);
  pHVar4 = CreateDialogParamW(hInstance,(LPCWSTR)(uint)uVar1,pHVar4,FUN_00a278e0,0);
  param_1_00[0x4f] = (int)pHVar4;
  if (pHVar4 == (HWND)0x0) {
    local_4 = 0xffffffff;
    FUN_0090d960();
    uVar3 = 0;
  }
  else {
    FUN_00914900(pHVar4);
    if (param_1 == (int *)0x0) {
      FUN_0086ad60(param_1_00);
    }
    else {
      (**(code **)(*param_1 + 0x124))();
    }
    pHVar4 = (HWND)param_1_00[0x4f];
    uCmd = 5;
    while( true ) {
      pHVar4 = GetWindow(pHVar4,uCmd);
      if (pHVar4 == (HWND)0x0) break;
      (**(code **)(*param_1_00 + 0x2d4))(param_1_00,pHVar4);
      uCmd = 2;
    }
    local_4 = 0xffffffff;
    FUN_0090d960();
    uVar3 = 1;
  }
  ExceptionList = local_c;
  return uVar3;
}



void __fastcall FUN_00919810(int param_1)

{
  undefined4 uVar1;
  uint uVar2;
  
  uVar1 = FUN_0095dc80(*(undefined4 *)(param_1 + 0x13c));
  FUN_00994360(uVar1);
  uVar2 = GetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x10);
  if ((uVar2 & 0x200000) != 0) {
    *(uint *)(param_1 + 0xe0) = *(uint *)(param_1 + 0xe0) | 0x80000000;
  }
  if ((uVar2 & 0x100000) != 0) {
    *(uint *)(param_1 + 0xe0) = *(uint *)(param_1 + 0xe0) | 0x40000000;
  }
  return;
}



undefined4 * __fastcall FUN_00919860(undefined4 *param_1)

{
  FUN_0044ced6();
  param_1[0x65] = 0;
  param_1[0x66] = 0;
  *(undefined *)(param_1 + 0x67) = 0;
  *param_1 = wxBitmapButton::vftable;
  return param_1;
}



undefined4 * __fastcall FUN_00919890(undefined4 *param_1)

{
  FUN_0044ced6();
  param_1[0x65] = 0;
  param_1[0x66] = 0;
  param_1[0x67] = 0;
  *param_1 = wxScrollBar::vftable;
  return param_1;
}



undefined4 __thiscall FUN_009198d0(undefined4 param_1_00,byte param_1)

{
  FUN_00994480();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_009198f0(undefined4 *param_1)

{
  FUN_0044ced6();
  *param_1 = wxStaticText::vftable;
  return param_1;
}



undefined4 * __fastcall FUN_00919910(undefined4 *param_1)

{
  FUN_0044ced6();
  param_1[0x66] = 0;
  param_1[0x67] = 0;
  *param_1 = wxStaticBitmap::vftable;
  *(undefined *)(param_1 + 0x65) = 1;
  return param_1;
}



void __thiscall FUN_00919940(int *param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *unaff_retaddr;
  undefined4 local_30 [5];
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = (**(code **)(*param_1 + 0x58))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  puStack_8 = (undefined *)0x0;
  if (*(int *)(iVar1 + 0x14) == 0) {
    uVar2 = 5;
  }
  else {
    uVar2 = (**(code **)(*param_1 + 0x194))();
  }
  *unaff_retaddr = uVar2;
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  *param_2 = 5;
  ExceptionList = pvStack_10;
  return;
}



undefined4 * __fastcall FUN_00919a00(undefined4 *param_1)

{
  FUN_0044ced6();
  *param_1 = wxStaticBox::vftable;
  return param_1;
}



undefined4 __thiscall FUN_00919a20(undefined4 param_1_00,byte param_1)

{
  FUN_0044cd6b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_00919a40(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0168;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044ced6(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxRadioButton::vftable;
  FUN_00995900();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __fastcall FUN_00919aa0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7418;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00483d5d(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxTextCtrl::vftable;
  param_1[0x65] = wxTextCtrl::vftable;
  param_1[0x74] = wxTextCtrl::vftable;
  param_1[0xe6] = wxTextCtrl::vftable;
  FUN_00961b30();
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00919b20(int *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  
  if (((uint)param_1_00[0x38] >> 0xc & 1) != 0) {
    iVar1 = (**(code **)(*param_1_00 + 0x368))();
    iVar2 = (**(code **)(*param_1_00 + 0x364))();
    return iVar2 + (iVar1 - param_1);
  }
  return param_1;
}



undefined4 * __fastcall FUN_00919b60(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7448;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044ced6(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxSlider::vftable;
  FUN_00995e70();
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00919bd0(undefined4 param_1_00,byte param_1)

{
  FUN_00996380();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_00919c30(undefined4 *param_1)

{
  FUN_0044ced6();
  param_1[0x65] = 0;
  param_1[0x66] = 100;
  *param_1 = wxSpinButton::vftable;
  return param_1;
}



undefined4 __thiscall FUN_00919c60(undefined4 param_1_00,byte param_1)

{
  FUN_00997290();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_00919c80(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7486;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_004868ea(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxListBox::vftable;
  param_1[0x65] = wxListBox::vftable;
  FUN_0086a600();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0096a090();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __fastcall FUN_00919cf0(undefined4 *param_1)

{
  FUN_0044ced6();
  param_1[0x65] = wxItemContainer::vftable;
  param_1[0x66] = 0;
  *param_1 = wxChoice::vftable;
  param_1[0x65] = wxChoice::vftable;
  param_1[0x67] = 0xfffffffd;
  param_1[0x68] = 0xffffffff;
  return param_1;
}



undefined4 * __fastcall FUN_00919d40(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd74b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044ced6(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  param_1[0x65] = wxItemContainer::vftable;
  param_1[0x66] = 0;
  *param_1 = wxChoice::vftable;
  param_1[0x65] = wxChoice::vftable;
  param_1[0x67] = 0xfffffffd;
  param_1[0x68] = 0xffffffff;
  local_4 = 0;
  FUN_009412f0();
  *param_1 = wxComboBox::vftable;
  param_1[0x65] = wxComboBox::vftable;
  param_1[0x69] = wxComboBox::vftable;
  *(undefined *)(param_1 + 0x6d) = 1;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall thunk_FUN_0096cb50(int param_1_00,WPARAM param_1)

{
  SendMessageW(*(HWND *)(param_1_00 + -0x58),0x14e,param_1,0);
  return;
}



void __thiscall FUN_00919e20(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  (**(code **)(*param_1_00 + 0xa8))(param_1,param_2,1);
  return;
}



void __fastcall thunk_FUN_0096c8c0(int param_1)

{
  if (*(int *)(param_1 + 8) == -3) {
                    // WARNING: Could not recover jumptable at 0x0096c8da. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*(int *)(param_1 + -0x194) + 0x35c))();
    return;
  }
  return;
}



void __thiscall FUN_00919e50(int param_1_00,undefined param_1)

{
  *(undefined *)(param_1_00 + 0x10) = param_1;
  return;
}



void FUN_00919e60(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be6b18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00941310(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  FUN_0096c850();
  ExceptionList = local_c;
  return;
}



void FUN_00919ec0(void)

{
  FUN_00919ee0();
  return;
}



void FUN_00919ed0(void)

{
  FUN_00919ee0();
  return;
}



undefined4 __thiscall FUN_00919ee0(undefined4 param_1_00,byte param_1)

{
  FUN_00919e60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_00919f00(undefined4 param_1)

{
  FUN_0096bf80(param_1);
  return param_1;
}



void FUN_00919f20(void)

{
  FUN_00919f00();
  return;
}



undefined4 __thiscall FUN_00919f30(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int *piVar2;
  HINSTANCE hInstance;
  undefined4 uVar3;
  int iVar4;
  int unaff_EBX;
  HWND pHVar5;
  int *unaff_retaddr;
  UINT uCmd;
  char cStack_14;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd74e8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(*param_1_00 + 0x5c))(param_2,DAT_0323f878 ^ (uint)&stack0xffffffd8);
  FUN_0090d950(param_1_00);
  pHVar5 = (HWND)0x0;
  puStack_8 = (undefined *)0x0;
  if (unaff_retaddr != (int *)0x0) {
    pHVar5 = (HWND)unaff_retaddr[0x4f];
  }
  piVar2 = (int *)FUN_00432231(&stack0xffffffe4);
  iVar4 = *piVar2;
  if (*(uint *)(iVar4 + 0x18) < 8) {
    iVar4 = iVar4 + 4;
  }
  else {
    iVar4 = *(int *)(iVar4 + 4);
  }
  iVar1 = piVar2[1];
  hInstance = (HINSTANCE)FUN_008a65e0();
  pHVar5 = CreateDialogParamW(hInstance,(LPCWSTR)(iVar4 + iVar1 * 2),pHVar5,FUN_00a278e0,0);
  param_1_00[0x4f] = (int)pHVar5;
  if ((cStack_14 != '\0') && (unaff_EBX != 0)) {
    _free(*(void **)(unaff_EBX + 0x1c));
    if (7 < *(uint *)(unaff_EBX + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(unaff_EBX + 4));
    }
    *(undefined4 *)(unaff_EBX + 0x18) = 7;
    *(undefined4 *)(unaff_EBX + 0x14) = 0;
    *(undefined2 *)(unaff_EBX + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBX);
  }
  if (param_1_00[0x4f] == 0) {
    puStack_8 = (undefined *)0xffffffff;
    FUN_0090d960();
    uVar3 = 0;
  }
  else {
    FUN_00914900(param_1_00[0x4f]);
    if (unaff_retaddr == (int *)0x0) {
      FUN_0086ad60(param_1_00);
    }
    else {
      (**(code **)(*unaff_retaddr + 0x124))();
    }
    pHVar5 = (HWND)param_1_00[0x4f];
    uCmd = 5;
    while( true ) {
      pHVar5 = GetWindow(pHVar5,uCmd);
      if (pHVar5 == (HWND)0x0) break;
      (**(code **)(*param_1_00 + 0x2d4))(param_1_00,pHVar5);
      uCmd = 2;
    }
    puStack_8 = (undefined *)0xffffffff;
    FUN_0090d960();
    uVar3 = 1;
  }
  ExceptionList = pvStack_10;
  return uVar3;
}



void FUN_0091a0b0(int *param_1,HWND param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  int aiStack_fc [3];
  undefined4 uStack_f0;
  char *pcStack_ec;
  char *pcStack_e8;
  char *pcStack_e4;
  int *apiStack_c4 [6];
  int *local_ac;
  char local_58 [24];
  uint uStack_40;
  void *pvStack_3c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined local_4;
  undefined3 uStack_3;
  
  local_4 = 0xff;
  uStack_3 = 0xffffff;
  puStack_8 = &LAB_00bd763c;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)apiStack_c4;
  ExceptionList = &local_c;
  local_ac = param_1;
  if (param_1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pcStack_e4 = "wxWindow::CreateWindowFromHWND";
      pcStack_e8 = (char *)0xa5;
      pcStack_ec = "..\\..\\src\\msw\\nativdlg.cpp";
      uStack_f0 = 0x91a885;
      FUN_00840480();
    }
    goto LAB_0091a88a;
  }
  pcStack_e4 = (char *)0x91a115;
  FUN_0095dfc0();
  local_4 = 0;
  uStack_3 = 0;
  FUN_00850fc0();
  FUN_0095dc80();
  pcStack_e4 = (char *)0x91a13f;
  uVar2 = GetWindowLongW(param_2,-0x10);
  iVar3 = FUN_008507a0();
  if (iVar3 == 0) {
    uVar4 = uVar2 & 0xff;
    if (((uVar4 == 5) || (uVar4 == 6)) || ((uVar4 == 3 || (uVar4 == 2)))) {
      piVar5 = (int *)operator_new(0x19c);
      local_4 = 1;
      apiStack_c4[0] = piVar5;
      if (piVar5 == (int *)0x0) {
        piVar5 = (int *)0x0;
        local_4 = 0;
      }
      else {
        FUN_0044ced6();
        *piVar5 = (int)wxCheckBox::vftable;
        local_4 = 0;
      }
    }
    else if ((uVar4 == 9) || (uVar4 == 4)) {
      apiStack_c4[0] = (int *)operator_new(0x198);
      local_4 = 2;
      if (apiStack_c4[0] == (int *)0x0) goto LAB_0091a77e;
      piVar5 = (int *)FUN_00919a40();
      local_4 = 0;
    }
    else if ((char)uVar2 < '\0') {
      apiStack_c4[0] = (int *)operator_new(0x1a0);
      local_4 = 3;
      if (apiStack_c4[0] == (int *)0x0) {
        piVar5 = (int *)0x0;
      }
      else {
        piVar5 = (int *)FUN_00919860();
      }
      apiStack_c4[0] = aiStack_fc;
      local_4 = 0;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        pcStack_e4 = (char *)0xc7;
        pcStack_e8 = "..\\..\\src\\msw\\nativdlg.cpp";
        pcStack_ec = (char *)0x1;
        local_4 = 4;
        uStack_f0 = 0x91a227;
        FUN_008423d0();
        local_4 = 5;
        FUN_00840b80();
        local_4 = 4;
LAB_0091a243:
        FUN_00842440();
        local_4 = 0;
        FUN_0081b5bc();
      }
    }
    else if (uVar4 == 0xb) {
      apiStack_c4[0] = (int *)operator_new(0x1a0);
      local_4 = 6;
      if (apiStack_c4[0] == (int *)0x0) goto LAB_0091a77e;
      piVar5 = (int *)FUN_00919860();
      local_4 = 0;
    }
    else if ((uVar4 == 0) || (uVar4 == 1)) {
      apiStack_c4[0] = (int *)operator_new(0x1a0);
      local_4 = 7;
      if (apiStack_c4[0] == (int *)0x0) goto LAB_0091a77e;
      piVar5 = (int *)FUN_00484f5b();
      local_4 = 0;
    }
    else {
      if (uVar4 != 7) {
        apiStack_c4[0] = aiStack_fc;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(1);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          pcStack_e4 = (char *)0xe6;
          pcStack_e8 = "..\\..\\src\\msw\\nativdlg.cpp";
          pcStack_ec = (char *)0x1;
          local_4 = 9;
          uStack_f0 = 0x91a3a4;
          FUN_008423d0();
          local_4 = 10;
          pcStack_e4 = (char *)0x91a3b9;
          FUN_008952d0();
          local_4 = 9;
          FUN_00842440();
          local_4 = 0;
          FUN_0081b5bc();
        }
        goto LAB_0091a290;
      }
      apiStack_c4[0] = (int *)operator_new(0x194);
      local_4 = 8;
      if (apiStack_c4[0] == (int *)0x0) goto LAB_0091a77e;
      piVar5 = (int *)FUN_00919a00();
      local_4 = 0;
    }
LAB_0091a25d:
    if (piVar5 != (int *)0x0) {
      (**(code **)(*local_ac + 0x124))();
      pcStack_e4 = (char *)0x91a278;
      FUN_00914900();
      (**(code **)(*piVar5 + 0x2d8))();
      (**(code **)(*piVar5 + 0x2dc))();
    }
  }
  else {
    iVar3 = FUN_008507a0();
    if (iVar3 == 0) {
      apiStack_c4[0] = (int *)operator_new(0x1b8);
      local_4 = 0xb;
      if (apiStack_c4[0] == (int *)0x0) {
LAB_0091a77e:
        local_4 = 0;
        piVar5 = (int *)0x0;
      }
      else {
        piVar5 = (int *)FUN_00919d40();
        local_4 = 0;
      }
      goto LAB_0091a25d;
    }
    iVar3 = FUN_008507a0();
    if (iVar3 == 0) {
      apiStack_c4[0] = (int *)operator_new(0x3b8);
      local_4 = 0xc;
      if (apiStack_c4[0] == (int *)0x0) goto LAB_0091a77e;
      piVar5 = (int *)FUN_00919aa0();
      local_4 = 0;
      goto LAB_0091a25d;
    }
    iVar3 = FUN_008507a0();
    if (iVar3 == 0) {
      apiStack_c4[0] = (int *)operator_new(0x1bc);
      local_4 = 0xd;
      if (apiStack_c4[0] == (int *)0x0) goto LAB_0091a77e;
      piVar5 = (int *)FUN_00919c80();
      local_4 = 0;
      goto LAB_0091a25d;
    }
    iVar3 = FUN_008507a0();
    if (iVar3 == 0) {
      apiStack_c4[0] = (int *)operator_new(0x1a0);
      local_4 = 0xe;
      if (apiStack_c4[0] == (int *)0x0) goto LAB_0091a77e;
      piVar5 = (int *)FUN_00919890();
      local_4 = 0;
      goto LAB_0091a25d;
    }
    iVar3 = FUN_008507a0();
    if (iVar3 == 0) {
      apiStack_c4[0] = (int *)operator_new(0x19c);
      local_4 = 0xf;
      if (apiStack_c4[0] == (int *)0x0) goto LAB_0091a77e;
      piVar5 = (int *)FUN_00919c30();
      local_4 = 0;
      goto LAB_0091a25d;
    }
    iVar3 = FUN_008507a0();
    if (iVar3 == 0) {
      apiStack_c4[0] = (int *)operator_new(0x1b0);
      local_4 = 0x10;
      if (apiStack_c4[0] == (int *)0x0) goto LAB_0091a77e;
      piVar5 = (int *)FUN_00919b60();
      local_4 = 0;
      goto LAB_0091a25d;
    }
    iVar3 = FUN_008507a0();
    if (iVar3 == 0) {
      uVar2 = uVar2 & 0xff;
      if (((uVar2 == 0) || (uVar2 == 2)) || (uVar2 == 0xb)) {
        apiStack_c4[0] = (int *)operator_new(0x194);
        local_4 = 0x11;
        if (apiStack_c4[0] == (int *)0x0) goto LAB_0091a77e;
        piVar5 = (int *)FUN_009198f0();
        local_4 = 0;
      }
      else {
        if (uVar2 != 0xe) goto LAB_0091a290;
        apiStack_c4[0] = (int *)operator_new(0x1a0);
        local_4 = 0x12;
        if (apiStack_c4[0] == (int *)0x0) {
          piVar5 = (int *)0x0;
        }
        else {
          piVar5 = (int *)FUN_00919910();
        }
        apiStack_c4[0] = aiStack_fc;
        local_4 = 0;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(1);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          pcStack_e4 = (char *)0x127;
          pcStack_e8 = "..\\..\\src\\msw\\nativdlg.cpp";
          pcStack_ec = (char *)0x1;
          local_4 = 0x13;
          uStack_f0 = 0x91a72b;
          FUN_008423d0();
          local_4 = 0x14;
          FUN_00840b80();
          local_4 = 0x13;
          goto LAB_0091a243;
        }
      }
      goto LAB_0091a25d;
    }
    FUN_004325b6();
    pcStack_e4 = local_58;
    local_4 = 0x15;
    pcStack_e8 = (char *)0x91a7bf;
    FID_conflict_append();
    apiStack_c4[0] = aiStack_fc;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_008433c0();
      pcStack_e4 = (char *)0x131;
      pcStack_e8 = "..\\..\\src\\msw\\nativdlg.cpp";
      pcStack_ec = (char *)0x1;
      local_4 = 0x16;
      uStack_f0 = 0x91a819;
      FUN_008423d0();
      local_4 = 0x17;
      FUN_00840b80();
      local_4 = 0x16;
      FUN_00842440();
      local_4 = 0x15;
      FUN_0081b5bc();
    }
    FUN_0040159c();
  }
LAB_0091a290:
  _free(pvStack_3c);
  if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
LAB_0091a88a:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0091a8c0(void)

{
  FUN_00994360(0xfffffffd);
  return;
}



undefined ** FUN_0091a8d0(void)

{
  return &PTR_u_wxWindowBase_032396fc;
}



undefined ** FUN_0091a8e0(void)

{
  return &PTR_DAT_00d4f6b8;
}



undefined * FUN_0091a8f0(void)

{
  return &DAT_032bfb88;
}



undefined ** FUN_0091a900(void)

{
  return &PTR_u_wxWindow_03239714;
}



undefined4 __fastcall FUN_0091a910(int *param_1)

{
  char cVar1;
  
  if ((*(byte *)(param_1 + 0x37) & 8) != 0) {
    return 1;
  }
  cVar1 = (**(code **)(*param_1 + 0x11c))();
  if (((cVar1 == '\0') && (param_1[0x11] != 0)) && (cVar1 = FUN_0091a910(), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



void __fastcall FUN_0091a950(int *param_1)

{
  int iVar1;
  char cVar2;
  
  iVar1 = param_1[0x11];
  param_1[0x4c] = DAT_03238d04;
  param_1[0x4d] = DAT_03238d08;
  while ((iVar1 != 0 && (cVar2 = (**(code **)(*param_1 + 0x11c))(), cVar2 == '\0'))) {
    param_1 = (int *)param_1[0x11];
    param_1[0x4c] = DAT_03238d04;
    param_1[0x4d] = DAT_03238d08;
    iVar1 = param_1[0x11];
  }
  return;
}



void __thiscall FUN_0091a9b0(int param_1_00,undefined4 *param_1)

{
  *(undefined4 *)(param_1_00 + 0x60) = *param_1;
  *(undefined4 *)(param_1_00 + 100) = param_1[1];
  return;
}



void __thiscall FUN_0091a9d0(int param_1_00,undefined4 *param_1)

{
  *(undefined4 *)(param_1_00 + 0x68) = *param_1;
  *(undefined4 *)(param_1_00 + 0x6c) = param_1[1];
  return;
}



void __thiscall FUN_0091a9f0(int param_1_00,int param_1,int param_2,int param_3,int param_4)

{
  if ((((param_1 == -1) || (param_3 == -1)) || (param_1 <= param_3)) &&
     (((param_2 == -1 || (param_4 == -1)) || (param_2 <= param_4)))) {
    *(int *)(param_1_00 + 0x60) = param_1;
    *(int *)(param_1_00 + 0x68) = param_3;
    *(int *)(param_1_00 + 100) = param_2;
    *(int *)(param_1_00 + 0x6c) = param_4;
    return;
  }
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    return;
  }
  FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x3f8,"wxWindowBase::DoSetSizeHints",
               "(minW == wxDefaultCoord || maxW == wxDefaultCoord || minW <= maxW) && (minH == wxDefaultCoord || maxH == wxDefaultCoord || minH <= maxH)"
               ,L"min width/height must be less than max width/height!");
  return;
}



undefined __thiscall FUN_0091aa60(int param_1_00,byte param_1)

{
  byte bVar1;
  
  bVar1 = *(byte *)(param_1_00 + 0xdc);
  if (param_1 != (bVar1 >> 1 & 1)) {
    *(byte *)(param_1_00 + 0xdc) = (param_1 * '\x02' ^ bVar1) & 2 ^ bVar1;
    return 1;
  }
  return 0;
}



void __thiscall FUN_0091aaa0(int param_1_00,int param_1)

{
  if (param_1 != 0) {
    *(int *)(param_1_00 + 0x70) = param_1;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x532,"wxWindowBase::SetEventHandler",
                 "handler != 0","SetEventHandler(NULL) called");
  }
  return;
}



void FUN_0091aae0(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x53c,"wxWindowBase::SetNextHandler",
                 "Assert failure","wxWindow cannot be part of a wxEvtHandler chain");
  }
  return;
}



void __thiscall FUN_0091ab10(int param_1_00,int *param_1)

{
  int *piVar1;
  
  piVar1 = *(int **)(param_1_00 + 200);
  if (piVar1 != param_1) {
    if (piVar1 != (int *)0x0) {
      (**(code **)(*piVar1 + 4))(1);
    }
    *(int **)(param_1_00 + 200) = param_1;
  }
  return;
}



void __thiscall FUN_0091ab40(int param_1_00,int param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if ((param_1 != 0) && (*(int *)(param_1_00 + 0xd8) == param_1)) {
      FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x8ea,"wxWindowBase::SetContainingSizer",
                   "!sizer || m_containingSizer != sizer",
                   L"Adding a window to the same sizer twice?");
    }
    *(int *)(param_1_00 + 0xd8) = param_1;
    return;
  }
  *(int *)(param_1_00 + 0xd8) = param_1;
  return;
}



undefined4 __thiscall FUN_0091aba0(int *param_1_00,undefined4 *param_1)

{
  *param_1 = 0;
  (**(code **)(*param_1_00 + 0x1ec))(1);
  (**(code **)(*param_1_00 + 0x1ec))(2);
  return 1;
}



void __fastcall FUN_0091abd0(int *param_1)

{
  char cVar1;
  
  cVar1 = FUN_0092afb0(param_1);
  if (cVar1 != '\0') {
    (**(code **)(*param_1 + 0x19c))(2);
  }
  return;
}



void __fastcall FUN_0091abf0(int *param_1)

{
  (**(code **)(*param_1 + 0x13c))();
  (**(code **)(*param_1 + 0x19c))(1);
  return;
}



void __thiscall FUN_0091ac10(int *param_1_00,uint param_1)

{
  if ((param_1 & 0x1f200000) == 0) {
    (**(code **)(*param_1_00 + 0x24c))();
    return;
  }
  if ((param_1 & 0x1f200000) == 0x10000000) {
    (**(code **)(*param_1_00 + 0x250))();
  }
  return;
}



undefined4 FUN_0091ac40(void)

{
  int *piVar1;
  undefined4 uVar2;
  
  piVar1 = (int *)FUN_009116a0();
  if (piVar1 != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x0091ac53. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (**(code **)(*piVar1 + 0x234))();
    return uVar2;
  }
  return 0;
}



undefined4 __fastcall FUN_0091ac60(int *param_1)

{
  int *piVar1;
  
  piVar1 = (int *)FUN_009116a0();
  if (piVar1 == (int *)0x0) {
    return 0;
  }
  if ((param_1 != piVar1) && (piVar1 = (int *)(**(code **)(*piVar1 + 0x234))(), param_1 != piVar1))
  {
    return 0;
  }
  return 1;
}



int __thiscall FUN_0091ac90(int *param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  
  iVar1 = (**(code **)(*param_1 + 100))();
  if (iVar1 == 2) {
    return (param_4 - param_2) - param_3;
  }
  return param_2;
}



void __thiscall FUN_0091acc0(int *param_1_00,int *param_1,int *param_2,byte param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  if ((param_3 & 8) == 0) {
    iVar3 = param_1_00[1];
  }
  else {
    iVar3 = (param_2[3] - param_1_00[3]) / 2 + param_2[1];
  }
  if ((param_3 & 4) == 0) {
    iVar2 = *param_1_00;
  }
  else {
    iVar2 = (param_2[2] - param_1_00[2]) / 2 + *param_2;
  }
  *param_1 = iVar2;
  iVar2 = param_1_00[2];
  iVar1 = param_1_00[3];
  param_1[1] = iVar3;
  param_1[2] = iVar2;
  param_1[3] = iVar1;
  return;
}



int * __thiscall FUN_0091ad20(int *param_1_00,int param_1)

{
  *param_1_00 = param_1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x20) < 1)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x438,"wxPropagateOnce::wxPropagateOnce"
                 ,"m_event.m_propagationLevel > 0",L"shouldn\'t be used unless ShouldPropagate()!");
  }
  *(int *)(*param_1_00 + 0x20) = *(int *)(*param_1_00 + 0x20) + -1;
  return param_1_00;
}



void __fastcall FUN_0091ad70(int *param_1)

{
  *(int *)(*param_1 + 0x20) = *(int *)(*param_1 + 0x20) + 1;
  return;
}



void FUN_0091ad80(int *param_1,undefined4 param_2)

{
  if (param_1 != (int *)0x0) {
    (**(code **)(*param_1 + 0x20))(param_2);
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0xd9f,"wxPostEvent",&DAT_00d4f9e4,
                 "need an object to post event to");
  }
  return;
}



void __fastcall FUN_0091adc0(int *param_1)

{
  char cVar1;
  undefined *puVar2;
  undefined4 ***local_20;
  undefined4 ***local_1c;
  undefined local_18 [4];
  undefined4 ***local_14 [2];
  int *piStack_c;
  
  puVar2 = local_18;
  cVar1 = (**(code **)(*param_1 + 0x38))();
  local_20 = &local_20;
  local_1c = &local_1c;
  local_14[0] = local_14;
  if (cVar1 == '\0') {
    puVar2 = (undefined *)0x0;
    local_20 = (undefined4 ***)0x0;
    local_1c = (undefined4 ***)0x0;
    local_14[0] = (undefined4 ***)0x0;
  }
  *piStack_c = (int)local_20;
  piStack_c[1] = (int)local_1c;
  piStack_c[2] = (int)puVar2;
  piStack_c[3] = (int)local_14[0];
  return;
}



undefined __thiscall FUN_0091ae40(int *param_1_00,undefined4 param_1)

{
  undefined uVar1;
  uint uVar2;
  undefined4 uVar3;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea178;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  uVar3 = FUN_00993330(param_1);
  local_4 = 0;
  uVar1 = (**(code **)(*param_1_00 + 0x50))(uVar3,uVar2);
  puStack_8 = (undefined *)0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_10;
  return uVar1;
}



void __thiscall FUN_0091aeb0(int *param_1_00,undefined4 *param_1)

{
  (**(code **)(*param_1_00 + 0x288))(0xffffffff,0xffffffff,*param_1,param_1[1],0);
  return;
}



void __fastcall FUN_0091aed0(int *param_1)

{
  int unaff_ESI;
  undefined local_10 [4];
  int *local_c [3];
  
  (**(code **)(*param_1 + 0x270))();
  (**(code **)(*param_1 + 0x278))(local_10);
  *local_c[0] = (int)local_c;
  local_c[0][1] = (int)local_10;
  local_c[0][2] = (int)local_c;
  local_c[0][3] = unaff_ESI;
  return;
}



undefined4 __thiscall FUN_0091af30(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0xb8))(param_1);
  return param_1;
}



void __thiscall FUN_0091af50(int *param_1_00,undefined4 param_1,int *param_2)

{
  int **ppiVar1;
  int *piVar2;
  int *local_4;
  
  piVar2 = (int *)0x0;
  ppiVar1 = &local_4;
  local_4 = param_1_00;
  (**(code **)(*param_1_00 + 600))(param_2,&param_2,ppiVar1,0,0,0);
  *ppiVar1 = piVar2;
  ppiVar1[1] = param_2;
  return;
}



void FUN_0091af90(void)

{
  FUN_00959460(0);
  return;
}



void __thiscall FUN_0091afa0(int *param_1_00,int *param_1,int *param_2)

{
  code *pcVar1;
  
  param_1_00[9] = *param_1;
  param_1_00[10] = param_1[1];
  param_1_00[5] = *param_2;
  pcVar1 = *(code **)(*param_1_00 + 0x4c);
  param_1_00[6] = param_2[1];
  (*pcVar1)();
  (**(code **)(*param_1_00 + 0x40))(4,*param_2,param_2[1]);
  return;
}



void __thiscall FUN_0091aff0(int *param_1_00,int param_1,int param_2,int param_3,int param_4)

{
  code *pcVar1;
  
  param_1_00[9] = param_1;
  pcVar1 = *(code **)(*param_1_00 + 0x4c);
  param_1_00[10] = param_2;
  param_1_00[5] = param_3;
  param_1_00[6] = param_4;
  (*pcVar1)();
  (**(code **)(*param_1_00 + 0x40))(4,param_3,param_4);
  return;
}



undefined4 __thiscall
FUN_0091b030(int *param_1_00,undefined4 param_1,int param_2,undefined4 param_3,int *param_4,
            int param_5,undefined4 param_6)

{
  int iVar1;
  int unaff_retaddr;
  
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_0091b083:
    if (param_2 != -1) goto LAB_0091b096;
  }
  else if (param_2 != -1) {
    if (((param_2 < 0) || (0x7ffe < param_2)) && ((param_2 < -32000 || (-2000 < param_2)))) {
      FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x16c,"wxWindowBase::CreateBase",
                   "id == wxID_ANY || (id >= 0 && id < 32767) || (id >= wxID_AUTO_LOWEST && id <= wxID_AUTO_HIGHEST)"
                   ,L"invalid id value");
    }
    goto LAB_0091b083;
  }
  param_2 = FUN_00993b60(1);
LAB_0091b096:
  FUN_00994360(param_2);
  param_1_00[0x38] = param_5;
  if (((*param_4 != DAT_03238d04) || (param_4[1] != DAT_03238d08)) &&
     (iVar1 = FUN_0086af40(param_1_00), iVar1 == 0)) {
    (**(code **)(*param_1_00 + 0x94))(param_4);
  }
  (**(code **)(*param_1_00 + 0x5c))(param_6);
  param_1_00[0x11] = unaff_retaddr;
  return 1;
}



undefined __thiscall
FUN_0091b100(int *param_1_00,int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  
  cVar1 = FUN_0091b030(param_1,param_2,param_3,param_4,param_5,param_7);
  if (cVar1 == '\0') {
    return 0;
  }
  (**(code **)(*param_1_00 + 0x130))(param_6);
  if ((param_1 != 0) && ((*(byte *)(param_1 + 0xe4) & 1) != 0)) {
    (**(code **)(*param_1_00 + 0xf0))(param_1_00[0x39] | 1);
  }
  return 1;
}



void __thiscall FUN_0091b170(int *param_1_00,uint param_1)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined *puVar3;
  uint uVar4;
  undefined4 local_34;
  undefined4 uStack_30;
  undefined auStack_28 [16];
  undefined auStack_18 [20];
  undefined4 uStack_4;
  
  uVar4 = param_1;
  if (((param_1 & 2) == 0) && ((int *)param_1_00[0x11] != (int *)0x0)) {
    (**(code **)(*(int *)param_1_00[0x11] + 0x27c))(&param_1,&local_34);
    uStack_30 = uStack_4;
    puVar3 = &stack0xffffffc8;
    puVar2 = auStack_28;
    local_34 = 0;
    FUN_0091aed0(auStack_18);
    puVar1 = (undefined4 *)FUN_0091acc0(puVar2,puVar3,uVar4);
    (**(code **)(*param_1_00 + 0x288))(*puVar1,puVar1[1],puVar1[2],puVar1[3],3);
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x267,"wxWindowBase::DoCentre",
                 "!(dir & 0x0002) && GetParent()",
                 L"this method only implements centering child windows");
  }
  return;
}



void __fastcall FUN_0091b230(int *param_1)

{
  undefined4 *puVar1;
  undefined local_8 [8];
  
  if (param_1[0x13] != 0) {
    puVar1 = (undefined4 *)(**(code **)(*param_1 + 0xbc))(local_8);
    (**(code **)(*param_1 + 0xb4))(*puVar1,puVar1[1]);
  }
  return;
}



void __thiscall FUN_0091b270(int *param_1,int *param_2)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  code *pcVar4;
  int iVar5;
  int iVar6;
  
  iVar5 = 0;
  iVar6 = 0;
  uVar1 = (**(code **)(*param_1 + 0xe8))();
  uVar1 = uVar1 & 0x1f200000;
  if (uVar1 == 0) {
    pcVar4 = *(code **)(*param_1 + 0x24c);
LAB_0091b2a3:
    uVar1 = (*pcVar4)();
  }
  else if (uVar1 == 0x10000000) {
    pcVar4 = *(code **)(*param_1 + 0x250);
    goto LAB_0091b2a3;
  }
  if ((int)uVar1 < 0x4000001) {
    if (uVar1 == 0x4000000) goto LAB_0091b3c4;
    if (uVar1 == 0x200000) goto LAB_0091b426;
    if ((uVar1 != 0x1000000) && (uVar1 != 0x2000000)) goto LAB_0091b314;
    iVar5 = FUN_008fedb0(2,param_1);
    if (iVar5 == -1) {
      iVar5 = 1;
    }
    iVar2 = FUN_008fedb0(3,param_1);
    if (iVar2 == -1) {
      iVar2 = 1;
    }
  }
  else {
    if (uVar1 != 0x8000000) {
      if (uVar1 == 0x10000000) {
        iVar6 = FUN_008fedb0(10,param_1);
        if (iVar6 == -1) {
          iVar6 = 2;
        }
        iVar5 = FUN_008fedb0(2,param_1);
        if (iVar5 == -1) {
          iVar5 = 1;
        }
        iVar2 = FUN_008fedb0(0xb,param_1);
        if (iVar2 == -1) {
          iVar2 = 2;
        }
        iVar3 = FUN_008fedb0(3,param_1);
        if (iVar3 == -1) {
          iVar3 = 1;
        }
        *param_2 = (iVar5 + iVar6) * 2;
        param_2[1] = (iVar2 + iVar3) * 2;
        return;
      }
LAB_0091b314:
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x357,"wxWindowBase::GetWindowBorderSize",
                     "Assert failure",L"Unknown border style.");
        *param_2 = 0;
        param_2[1] = 0;
        return;
      }
      goto LAB_0091b426;
    }
LAB_0091b3c4:
    iVar6 = FUN_008fedb0(2,param_1);
    if (iVar6 == -1) {
      iVar6 = 1;
    }
    iVar5 = FUN_008fedb0(10,param_1);
    if (iVar5 == -1) {
      iVar5 = 2;
    }
    if (iVar5 <= iVar6) {
      iVar5 = iVar6;
    }
    iVar6 = FUN_008fedb0(3,param_1);
    if (iVar6 == -1) {
      iVar6 = 1;
    }
    iVar2 = FUN_008fedb0(0xb,param_1);
    if (iVar2 == -1) {
      iVar2 = 2;
    }
    if (iVar2 <= iVar6) goto LAB_0091b426;
  }
  iVar6 = iVar2;
LAB_0091b426:
  *param_2 = iVar5 * 2;
  param_2[1] = iVar6 * 2;
  return;
}



undefined4 __thiscall
FUN_0091b440(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  
  if (*(int **)(param_1_00 + 0xd4) != (int *)0x0) {
    cVar1 = (**(code **)(**(int **)(param_1_00 + 0xd4) + 0x40))(param_1,param_2,param_3);
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



void __thiscall FUN_0091b480(int *param_1,undefined4 *param_2)

{
  uint uVar1;
  code *pcVar2;
  undefined auStack_10 [4];
  undefined4 *apuStack_c [3];
  
  uVar1 = (**(code **)(*param_1 + 0xe8))();
  uVar1 = uVar1 & 0x1f200000;
  if (uVar1 == 0) {
    pcVar2 = *(code **)(*param_1 + 0x24c);
  }
  else {
    if (uVar1 != 0x10000000) goto LAB_0091b4b4;
    pcVar2 = *(code **)(*param_1 + 0x250);
  }
  uVar1 = (*pcVar2)();
LAB_0091b4b4:
  if (uVar1 == 0x200000) {
    *param_2 = 0;
    param_2[1] = 0;
    return;
  }
  (**(code **)(*param_1 + 0x27c))(auStack_10,apuStack_c);
  (**(code **)(*param_1 + 0x278))(auStack_10,apuStack_c);
  *apuStack_c[0] = 0;
  apuStack_c[0][1] = 0;
  return;
}



int * __thiscall FUN_0091b530(int *param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int unaff_ESI;
  int *unaff_retaddr;
  int local_10;
  undefined auStack_c [8];
  int *piStack_4;
  
  if (((param_1_00[0x35] == 0) && (param_1_00[0x4c] != -1)) && (param_1_00[0x4d] != -1)) {
    *param_1 = param_1_00[0x4c];
    param_1[1] = param_1_00[0x4d];
    return param_1;
  }
  (**(code **)(*param_1_00 + 0x284))();
  if ((unaff_ESI == DAT_03238d04) && (local_10 == DAT_03238d08)) {
    (**(code **)(*param_1_00 + 0x280))(unaff_retaddr);
    return unaff_retaddr;
  }
  piVar3 = (int *)(**(code **)(*param_1_00 + 0x294))(auStack_c);
  iVar1 = *piVar3;
  iVar2 = piVar3[1];
  param_1_00[0x4c] = (int)(auStack_c + iVar1 + -4);
  param_1_00[0x4d] = unaff_ESI + iVar2;
  *piStack_4 = (int)(auStack_c + iVar1 + -4);
  piStack_4[1] = unaff_ESI + iVar2;
  return piStack_4;
}



void __thiscall FUN_0091b600(int *param_1_00,undefined4 ***param_1)

{
  undefined4 ***pppuStack_14;
  undefined4 ***apppuStack_c [2];
  undefined auStack_4 [4];
  
  pppuStack_14 = param_1;
  (**(code **)(*param_1_00 + 0x94))();
  (**(code **)(*param_1_00 + 0x84))();
  (**(code **)(*param_1_00 + 0x278))(auStack_4);
  if (((undefined4 ****)apppuStack_c[0] != apppuStack_c) ||
     (&pppuStack_14 != (undefined4 ****)pppuStack_14)) {
    (**(code **)(*param_1_00 + 0x288))(0xffffffff,0xffffffff,apppuStack_c,pppuStack_14,0);
  }
  return;
}



void FUN_0091b670(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  return;
}



void __fastcall FUN_0091b690(int *param_1)

{
  int iVar1;
  undefined local_10 [4];
  int *local_c;
  int *piStack_8;
  
  (**(code **)(*param_1 + 0x27c))(local_10,&local_c);
  (**(code **)(*param_1 + 0x278))(local_10,&local_c);
  iVar1 = piStack_8[1];
  if (*piStack_8 == -1) {
    *local_c = -1;
    local_c[1] = iVar1;
    return;
  }
  *local_c = *piStack_8;
  local_c[1] = iVar1;
  return;
}



void __fastcall FUN_0091b720(int *param_1)

{
  int iVar1;
  undefined local_10 [4];
  int *local_c;
  int *piStack_8;
  
  (**(code **)(*param_1 + 0x27c))(local_10,&local_c);
  (**(code **)(*param_1 + 0x278))(local_10,&local_c);
  iVar1 = piStack_8[1];
  if (*piStack_8 == -1) {
    *local_c = -1;
    local_c[1] = iVar1;
    return;
  }
  *local_c = *piStack_8;
  local_c[1] = iVar1;
  return;
}



void __thiscall FUN_0091b7b0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 0x120) = param_1;
  *(undefined4 *)(param_1_00 + 0x124) = param_2;
  return;
}



void __fastcall FUN_0091b7d0(int *param_1)

{
  int iVar1;
  int unaff_ESI;
  int unaff_EDI;
  undefined local_8 [4];
  int *local_4;
  
  (**(code **)(*param_1 + 0x27c))(local_8,&local_4);
  iVar1 = param_1[0x48];
  *local_4 = unaff_EDI;
  local_4[1] = unaff_ESI;
  if (unaff_EDI < iVar1) {
    *local_4 = iVar1;
  }
  if (unaff_ESI <= param_1[0x49]) {
    local_4[1] = param_1[0x49];
  }
  return;
}



void __thiscall FUN_0091b820(int *param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = 0;
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = 0;
  }
  (**(code **)(*param_1_00 + 0x25c))(param_1,param_2);
  return;
}



void __thiscall FUN_0091b850(int param_1,undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  
  piVar1 = *(int **)(param_1 + 0x44);
  if ((piVar1 != (int *)0x0) && ((*(byte *)(piVar1 + 0x37) & 8) == 0)) {
    cVar2 = (**(code **)(*piVar1 + 0x11c))();
    if ((cVar2 == '\0') && ((piVar1[0x11] != 0 && (cVar2 = FUN_0091a910(), cVar2 != '\0')))) {
      return;
    }
    (**(code **)(*piVar1 + 200))(param_2);
  }
  return;
}



uint __thiscall FUN_0091b8a0(int *param_1_00,int param_1)

{
  uint uVar1;
  int unaff_ESI;
  int unaff_EDI;
  int local_8 [2];
  
  uVar1 = (-(uint)(param_1 != 4) & 0x40000000) + 0x40000000;
  if ((param_1_00[0x38] & uVar1) == 0) {
    return uVar1;
  }
  (**(code **)(*param_1_00 + 0xb8))();
  (**(code **)(*param_1_00 + 0x27c))(&stack0x00000000,&stack0xfffffff0);
  if (param_1 == 4) {
    return (uint)(local_8[0] < unaff_EDI);
  }
  return (uint)((int)local_8 < unaff_ESI);
}



undefined4 __fastcall FUN_0091b930(int *param_1)

{
  char cVar1;
  
  if ((*(byte *)(param_1 + 0x37) & 4) == 0) {
    return 0;
  }
  cVar1 = (**(code **)(*param_1 + 0x11c))();
  if (((cVar1 == '\0') && (param_1[0x11] != 0)) && (cVar1 = FUN_0091b930(), cVar1 == '\0')) {
    return 0;
  }
  return 1;
}



void __thiscall FUN_0091b970(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  
  (**(code **)(*param_1_00 + 0x244))(param_1);
  (**(code **)(*param_1_00 + 0x248))(param_1);
  cVar3 = (**(code **)(*param_1_00 + 0x11c))();
  if ((cVar3 == '\0') || ((char)param_1 != '\0')) {
    for (iVar1 = param_1_00[0x15]; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
      piVar2 = *(int **)(iVar1 + 8);
      cVar3 = (**(code **)(*piVar2 + 0x11c))();
      if ((cVar3 == '\0') && ((*(byte *)(piVar2 + 0x37) & 4) != 0)) {
        FUN_0091b970(param_1);
      }
    }
  }
  return;
}



undefined __thiscall FUN_0091b9f0(int param_1_00,undefined4 param_1)

{
  byte bVar1;
  
  bVar1 = *(byte *)(param_1_00 + 0xdc);
  if ((byte)param_1 == (bVar1 >> 2 & 1)) {
    return 0;
  }
  *(byte *)(param_1_00 + 0xdc) = ((byte)param_1 * '\x04' ^ bVar1) & 4 ^ bVar1;
  FUN_0091b970(param_1);
  return 1;
}



undefined4 __fastcall FUN_0091ba30(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0xdc))();
  if (cVar1 == '\0') {
    return 0;
  }
  cVar1 = (**(code **)(*param_1 + 0x11c))();
  if (((cVar1 == '\0') && ((int *)param_1[0x11] != (int *)0x0)) &&
     (cVar1 = (**(code **)(*(int *)param_1[0x11] + 0xe0))(), cVar1 == '\0')) {
    return 0;
  }
  return 1;
}



void __fastcall FUN_0091ba80(int *param_1)

{
  int iVar1;
  char cVar2;
  
  iVar1 = param_1[0x4e];
  param_1[0x4e] = iVar1 + 1;
  if (iVar1 == 0) {
    (**(code **)(*param_1 + 0x2b0))();
    for (iVar1 = param_1[0x15]; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
      cVar2 = (**(code **)(**(int **)(iVar1 + 8) + 0x11c))();
      if (cVar2 == '\0') {
        FUN_0091ba80();
      }
    }
  }
  return;
}



void __fastcall FUN_0091bae0(int *param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[0x4e] == 0)) {
    FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x4c8,"wxWindowBase::Thaw","m_freezeCount",
                 "Thaw() without matching Freeze()");
  }
  piVar1 = param_1 + 0x4e;
  *piVar1 = *piVar1 + -1;
  if (*piVar1 == 0) {
    for (iVar2 = param_1[0x15]; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0xc)) {
      cVar3 = (**(code **)(**(int **)(iVar2 + 8) + 0x11c))();
      if (cVar3 == '\0') {
        FUN_0091bae0();
      }
    }
                    // WARNING: Could not recover jumptable at 0x0091bb5e. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*param_1 + 0x2b4))();
    return;
  }
  return;
}



void __thiscall FUN_0091bb70(int param_1_00,int *param_1)

{
  char cVar1;
  int iVar2;
  
  if (param_1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x4e2,"wxWindowBase::AddChild","child",
                   L"can\'t add a NULL child");
    }
  }
  else {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      iVar2 = FUN_0086af40(param_1);
      if (iVar2 != 0) {
        FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x4e7,"wxWindowBase::AddChild",
                     "!GetChildren().Find((wxWindow*)child)",L"AddChild() called twice");
      }
    }
    FUN_0086ad60(param_1);
    param_1[0x11] = param_1_00;
    if (*(int *)(param_1_00 + 0x138) != 0) {
      cVar1 = (**(code **)(*param_1 + 0x11c))();
      if (cVar1 == '\0') {
        FUN_0091ba80();
        return;
      }
    }
  }
  return;
}



void __thiscall FUN_0091bc20(int param_1_00,int *param_1)

{
  char cVar1;
  
  if (param_1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x4f4,"wxWindowBase::RemoveChild","child",
                   L"can\'t remove a NULL child");
    }
    return;
  }
  if ((*(int *)(param_1_00 + 0x138) != 0) && ((*(byte *)(param_1 + 0x37) & 8) == 0)) {
    cVar1 = (**(code **)(*param_1 + 0x11c))();
    if ((cVar1 == '\0') && (param_1[0x11] != 0)) {
      cVar1 = FUN_0091a910();
      if (cVar1 != '\0') goto LAB_0091bc75;
    }
    cVar1 = (**(code **)(*param_1 + 0x11c))();
    if (cVar1 == '\0') {
      FUN_0091bae0();
    }
  }
LAB_0091bc75:
  FUN_0086b0c0(param_1);
  param_1[0x11] = 0;
  return;
}



undefined4 __thiscall FUN_0091bcc0(int *param_1_00,int *param_1)

{
  int *piVar1;
  char cVar2;
  char cVar3;
  
  piVar1 = (int *)param_1_00[0x11];
  if (param_1 == piVar1) {
    return 0;
  }
  if ((*(byte *)(param_1_00 + 0x37) & 4) == 0) {
LAB_0091bd04:
    cVar2 = '\0';
  }
  else {
    cVar2 = (**(code **)(*param_1_00 + 0x11c))();
    if ((cVar2 == '\0') && (param_1_00[0x11] != 0)) {
      cVar2 = FUN_0091b930();
      if (cVar2 == '\0') goto LAB_0091bd04;
    }
    cVar2 = '\x01';
  }
  if (piVar1 == (int *)0x0) {
    FUN_0086b0c0(param_1_00);
  }
  else {
    (**(code **)(*piVar1 + 0x128))();
  }
  if (param_1 == (int *)0x0) {
    FUN_0086ad60(param_1_00);
  }
  else {
    (**(code **)(*param_1 + 0x124))();
  }
  if ((*(byte *)(param_1_00 + 0x37) & 4) == 0) {
LAB_0091bd6e:
    cVar3 = '\0';
  }
  else {
    cVar3 = (**(code **)(*param_1_00 + 0x11c))();
    if ((cVar3 == '\0') && (param_1_00[0x11] != 0)) {
      cVar3 = FUN_0091b930();
      if (cVar3 == '\0') goto LAB_0091bd6e;
    }
    cVar3 = '\x01';
  }
  if (cVar3 != cVar2) {
    FUN_0091b970(cVar3);
  }
  return 1;
}



void __thiscall FUN_0091bd90(int *param_1_00,int *param_1)

{
  int *piVar1;
  char cVar2;
  
  if (param_1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x549,"wxWindowBase::PushEventHandler",
                   "handlerToPush != 0","PushEventHandler(NULL) called");
      return;
    }
  }
  else {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (cVar2 = FUN_00845700(), cVar2 == '\0')) {
      FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x54f,"wxWindowBase::PushEventHandler",
                   "handlerToPush->IsUnlinked()",
                   "The handler being pushed in the wxWindow stack shouldn\'t be part of a wxEvtHandler chain; call Unlink() on it first"
                  );
    }
    piVar1 = (int *)param_1_00[0x1c];
    if (piVar1 == (int *)0x0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x552,"wxWindowBase::PushEventHandler",
                     "handlerOld","an old event handler is NULL?");
        return;
      }
    }
    else {
      (**(code **)(*param_1 + 0x10))(piVar1);
      if (piVar1 != param_1_00) {
        (**(code **)(*piVar1 + 0x14))(param_1);
      }
      FUN_0091aaa0(param_1);
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        if (param_1[4] != 0) {
          FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x560,"wxWindowBase::PushEventHandler",
                       "handlerToPush->GetPreviousHandler() == NULL",
                       "the first handler of the wxWindow stack should have no previous handlers set"
                      );
        }
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[3] == 0)) {
          FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x563,"wxWindowBase::PushEventHandler",
                       "handlerToPush->GetNextHandler() != NULL",
                       "the first handler of the wxWindow stack should have non-NULL next handler");
        }
      }
      do {
        if (param_1 == param_1_00) break;
        param_1 = (int *)param_1[3];
      } while (param_1 != (int *)0x0);
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[3] != 0)) {
        FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x56a,"wxWindowBase::PushEventHandler",
                     "pLast->GetNextHandler() == NULL",
                     "the last handler of the wxWindow stack should have this window as next handler"
                    );
      }
    }
  }
  return;
}



int * __fastcall FUN_0091bf10(int *param_1)

{
  int *piVar1;
  int *unaff_ESI;
  int *piVar2;
  char local_4;
  
  piVar2 = (int *)param_1[0x1c];
  if (piVar2 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x573,"wxWindowBase::PopEventHandler",
                   "firstHandler != 0","wxWindow cannot have a NULL event handler");
      return (int *)0x0;
    }
  }
  else if (piVar2 == param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x574,"wxWindowBase::PopEventHandler",
                   "firstHandler != this","cannot pop the wxWindow itself");
    }
  }
  else {
    if (piVar2[4] == 0) {
      piVar1 = (int *)piVar2[3];
      if (piVar1 != (int *)0x0) {
        (**(code **)(*piVar2 + 0x10))(0);
        (**(code **)(*piVar1 + 0x14))(0);
        FUN_0091aaa0(piVar1);
        local_4 = (char)piVar2;
        if (local_4 != '\0') {
          FUN_00938b80(&stack0xfffffff4);
          piVar2 = unaff_ESI;
        }
        return piVar2;
      }
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x57a,"wxWindowBase::PopEventHandler",
                     "secondHandler != 0",
                     "the first handler of the wxWindow stack should have non-NULL next handler");
      }
      return (int *)0x0;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x576,"wxWindowBase::PopEventHandler",
                   "firstHandler->GetPreviousHandler() == 0",
                   "the first handler of the wxWindow stack should have no previous handlers set");
      return (int *)0x0;
    }
  }
  return (int *)0x0;
}



undefined4 __thiscall FUN_0091c050(int param_1_00,int param_1)

{
  int iVar1;
  
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x58c,"wxWindowBase::RemoveEventHandler",
                   "handlerToRemove != 0","RemoveEventHandler(NULL) called");
      return 0;
    }
  }
  else {
    if (param_1 != param_1_00) {
      if (param_1 == *(int *)(param_1_00 + 0x70)) {
        FUN_0091bf10(0);
        return 1;
      }
      for (iVar1 = *(int *)(*(int *)(param_1_00 + 0x70) + 0xc);
          (iVar1 != param_1_00 && (iVar1 != 0)); iVar1 = *(int *)(iVar1 + 0xc)) {
        if (iVar1 == param_1) {
          FUN_008456c0();
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar1 == *(int *)(param_1_00 + 0x70))) {
            FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x5a1,"wxWindowBase::RemoveEventHandler",
                         "handlerCur != GetEventHandler()",
                         "the case Remove == Pop should was already handled");
          }
          return 1;
        }
      }
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x5a8,"wxWindowBase::RemoveEventHandler",
                     "Assert failure",L"where has the event handler gone?");
      }
      return 0;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0x58d,"wxWindowBase::RemoveEventHandler",
                   "handlerToRemove != this","Cannot remove the window itself");
    }
  }
  return 0;
}



void FUN_0091c170(void)

{
  FUN_00845dc0();
  return;
}



void __fastcall FUN_0091c180(int param_1)

{
  if (param_1 != 0) {
    do {
      if (*(char *)(param_1 + 0x11c) != '\0') {
        return;
      }
      param_1 = *(int *)(param_1 + 0x44);
    } while (param_1 != 0);
  }
  return;
}



void __thiscall FUN_0091c1a0(int param_1_00,int *param_1)

{
  int iVar1;
  
  if (*(int **)(param_1_00 + 0x74) != (int *)0x0) {
    (**(code **)(**(int **)(param_1_00 + 0x74) + 4))(1);
  }
  iVar1 = (**(code **)(*param_1 + 0x50))();
  *(int *)(param_1_00 + 0x74) = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 0x40) = param_1_00;
  }
  return;
}



bool __thiscall FUN_0091c1d0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  
  iVar1 = (**(code **)(*(int *)(param_1_00 + 0xb8) + 0x3c))(param_1,param_2);
  return iVar1 != 0;
}



bool __thiscall
FUN_0091c200(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  int iVar1;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_10 = param_1;
  local_c = param_2;
  local_8 = param_3;
  local_4 = param_4;
  iVar1 = (**(code **)(*(int *)(param_1_00 + 0xb8) + 0x40))(&local_10);
  return iVar1 != 0;
}



int __thiscall FUN_0091c240(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  
  if (*(int *)(param_1_00 + 0x40) != param_1) {
    iVar1 = *(int *)(param_1_00 + 0x54);
    iVar2 = 0;
    while ((iVar1 != 0 && (iVar2 == 0))) {
      iVar2 = FUN_0091c240(param_1);
      iVar1 = *(int *)(iVar1 + 0xc);
    }
    return iVar2;
  }
  return param_1_00;
}



void __thiscall FUN_0091c280(int *param_1,char param_2)

{
  int iVar1;
  char cVar2;
  
  cVar2 = (**(code **)(*param_1 + 0x11c))();
  iVar1 = DAT_032396f0;
  if (cVar2 != '\0') {
    for (; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
      if (*(int **)(iVar1 + 8) != param_1) {
        (**(code **)(**(int **)(iVar1 + 8) + 0xd8))(param_2 == '\0');
      }
    }
  }
  return;
}



undefined4 __fastcall FUN_0091c2d0(int param_1)

{
  byte bVar1;
  int iVar2;
  int *piVar3;
  char cVar4;
  int *piVar5;
  
  bVar1 = *(byte *)(param_1 + 0xe4);
  iVar2 = *(int *)(param_1 + 0x54);
  while( true ) {
    if (iVar2 == 0) {
      return 1;
    }
    piVar3 = *(int **)(iVar2 + 8);
    piVar5 = (int *)(**(code **)(*piVar3 + 0x134))();
    if (((piVar5 != (int *)0x0) && (cVar4 = (**(code **)(*piVar5 + 0x54))(param_1), cVar4 == '\0'))
       || (((bVar1 & 1) != 0 && (cVar4 = (**(code **)(*piVar3 + 0x138))(), cVar4 == '\0')))) break;
    iVar2 = *(int *)(iVar2 + 0xc);
  }
  return 0;
}



undefined4 __fastcall FUN_0091c340(int param_1)

{
  byte bVar1;
  int iVar2;
  int *piVar3;
  char cVar4;
  int *piVar5;
  
  bVar1 = *(byte *)(param_1 + 0xe4);
  iVar2 = *(int *)(param_1 + 0x54);
  while( true ) {
    if (iVar2 == 0) {
      return 1;
    }
    piVar3 = *(int **)(iVar2 + 8);
    piVar5 = (int *)(**(code **)(*piVar3 + 0x134))();
    if (((piVar5 != (int *)0x0) && (cVar4 = (**(code **)(*piVar5 + 0x5c))(), cVar4 == '\0')) ||
       (((bVar1 & 1) != 0 && (cVar4 = (**(code **)(*piVar3 + 0x140))(), cVar4 == '\0')))) break;
    iVar2 = *(int *)(iVar2 + 0xc);
  }
  return 0;
}



void __thiscall FUN_0091c3a0(int *param_1_00,int param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  int *piVar5;
  int local_2c;
  int iStack_28;
  int local_24;
  int local_20;
  int local_1c;
  undefined auStack_18 [8];
  undefined local_10 [12];
  int iStack_4;
  
  iVar2 = param_1;
  piVar1 = DAT_032e8c44;
  if (DAT_032e8c44 != (int *)0x0) {
    local_20 = *(int *)(param_1 + 0x5c);
    local_1c = *(int *)(param_1 + 0x60);
    iVar4 = *(int *)(param_1 + 0xac);
    local_24 = iVar4;
    if (iVar4 == 1) {
      FUN_007b0d3e(local_10);
      local_2c = local_20;
      param_1 = local_1c;
      (**(code **)(*param_1_00 + 0x260))(&local_2c,&param_1);
      cVar3 = FUN_008f7580(local_2c,param_1);
      if (cVar3 == '\0') {
        iVar4 = (**(code **)(*param_1_00 + 0x194))();
        local_2c = (**(code **)(*param_1_00 + 0x198))();
        local_2c = local_2c * 2;
        iStack_28 = iVar4 + iStack_4;
        piVar5 = (int *)FUN_008fd080(auStack_18,&local_2c);
        local_20 = *piVar5;
        local_1c = piVar5[1];
        iVar4 = local_24;
      }
    }
    cVar3 = (**(code **)(*piVar1 + 4))(param_1_00,&local_20,iVar4);
    if (cVar3 != '\0') {
      return;
    }
  }
  *(undefined *)(iVar2 + 0x24) = 1;
  return;
}



void __thiscall FUN_0091c4a0(int *param_1_00,undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1_00[0x32] != 0) {
    FUN_0098ed60(param_1);
    ExceptionList = local_c;
    return;
  }
  pvVar1 = operator_new(0x48);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_0098ecd0(param_1);
  }
  local_4 = 0xffffffff;
  (**(code **)(*param_1_00 + 0x2a0))(uVar2);
  ExceptionList = pvVar1;
  return;
}



void __fastcall FUN_0091c540(int param_1)

{
  int iVar1;
  int iVar2;
  
  if (*(int *)(param_1 + 0xd0) != 0) {
    iVar2 = *(int *)(*(int *)(param_1 + 0xd0) + 0xc);
    while (iVar2 != 0) {
      if (*(int *)(*(int *)(iVar2 + 8) + 0xcc) != 0) {
        FUN_00999200(param_1);
        FUN_00999200(param_1);
        FUN_00999200(param_1);
        FUN_00999200(param_1);
        FUN_00999200(param_1);
        FUN_00999200(param_1);
        FUN_00999200(param_1);
        FUN_00999200(param_1);
      }
      iVar1 = *(int *)(iVar2 + 0xc);
      FUN_0086b060(iVar2);
      iVar2 = iVar1;
    }
    if (*(undefined4 **)(param_1 + 0xd0) != (undefined4 *)0x0) {
      (**(code **)**(undefined4 **)(param_1 + 0xd0))(1);
      *(undefined4 *)(param_1 + 0xd0) = 0;
    }
  }
  return;
}



void __thiscall FUN_0091c600(int param_1_00,int param_1,char param_2)

{
  if (param_1 != *(int *)(param_1_00 + 0xd4)) {
    if (*(int *)(param_1_00 + 0xd4) != 0) {
      FUN_00930ca0(0);
      if ((param_2 != '\0') && (*(int **)(param_1_00 + 0xd4) != (int *)0x0)) {
        (**(code **)(**(int **)(param_1_00 + 0xd4) + 4))(1);
      }
    }
    *(int *)(param_1_00 + 0xd4) = param_1;
    if (param_1 != 0) {
      FUN_00930ca0(param_1_00);
    }
    *(byte *)(param_1_00 + 0xdc) =
         *(byte *)(param_1_00 + 0xdc) ^
         (*(int *)(param_1_00 + 0xd4) != 0 ^ *(byte *)(param_1_00 + 0xdc)) & 1;
  }
  return;
}



void __thiscall FUN_0091c670(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_0091c600(param_1,param_2);
  FUN_00931b00(param_1_00);
  return;
}



undefined4 __thiscall FUN_0091c690(int param_1_00,undefined4 param_1)

{
  char cVar1;
  
  if (*(int *)(param_1_00 + 0xcc) != 0) {
    cVar1 = FUN_0099a100(param_1_00,param_1);
    if (cVar1 == '\0') {
      return 0;
    }
  }
  return 1;
}



undefined4 FUN_0091c6c0(int param_1)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  code *pcVar5;
  int iVar6;
  int iVar7;
  int iStack_30;
  int local_2c;
  int local_28;
  undefined **local_24;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7678;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  local_24 = wxListBase::vftable;
  FUN_0086ad40(0);
  local_24 = wxWindowList::vftable;
  local_4 = 0;
  local_2c = 0;
  while( true ) {
    iVar7 = *(int *)(local_28 + 0x54);
    iVar6 = 0;
    if (iVar7 == 0) break;
    do {
      piVar1 = *(int **)(iVar7 + 8);
      cVar2 = (**(code **)(*piVar1 + 0x11c))(uVar3);
      if ((cVar2 == '\0') && (piVar1[0x33] != 0)) {
        iVar4 = FUN_0086af40(piVar1);
        if (iVar4 == 0) {
          iStack_30 = 0;
          if (param_1 == 1) {
            pcVar5 = *(code **)(*piVar1 + 0x1e4);
          }
          else {
            pcVar5 = *(code **)(*piVar1 + 0x1e8);
          }
          cVar2 = (*pcVar5)(&iStack_30);
          iVar6 = iVar6 + iStack_30;
          if (cVar2 != '\0') {
            FUN_0086ad60(piVar1);
          }
        }
      }
      iVar7 = *(int *)(iVar7 + 0xc);
    } while (iVar7 != 0);
    if ((iVar6 == 0) || (local_2c = local_2c + 1, 499 < local_2c)) break;
  }
  local_4 = 0xffffffff;
  FUN_0086ade0();
  ExceptionList = local_c;
  return 1;
}



void __fastcall FUN_0091c7d0(int param_1)

{
  int iVar1;
  char cVar2;
  
  iVar1 = *(int *)(param_1 + 0xcc);
  if (iVar1 != 0) {
    *(undefined *)(iVar1 + 0x2c) = 0;
    *(undefined *)(iVar1 + 0x54) = 0;
    *(undefined *)(iVar1 + 0x7c) = 0;
    *(undefined *)(iVar1 + 0xa4) = 0;
    *(undefined *)(iVar1 + 0xcc) = 0;
    *(undefined *)(iVar1 + 0xf4) = 0;
    *(undefined *)(iVar1 + 0x11c) = 0;
    *(undefined *)(iVar1 + 0x144) = 0;
  }
  for (iVar1 = *(int *)(param_1 + 0x54); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    cVar2 = (**(code **)(**(int **)(iVar1 + 8) + 0x11c))();
    if (cVar2 == '\0') {
      FUN_0091c7d0();
    }
  }
  return;
}



void __thiscall FUN_0091c840(int param_1_00,int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 0xcc);
  if (iVar1 != 0) {
    if (param_1 != -1) {
      *(int *)(iVar1 + 0x20) = param_1;
      *(undefined *)(iVar1 + 0x2c) = 1;
    }
    if (param_2 != -1) {
      *(int *)(iVar1 + 0x48) = param_2;
      *(undefined *)(iVar1 + 0x54) = 1;
    }
    if (param_3 != -1) {
      *(int *)(iVar1 + 0xc0) = param_3;
      *(undefined *)(iVar1 + 0xcc) = 1;
    }
    if (param_4 != -1) {
      *(int *)(iVar1 + 0xe8) = param_4;
      *(undefined *)(iVar1 + 0xf4) = 1;
    }
  }
  return;
}



void __thiscall FUN_0091c8a0(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 0xcc);
  if (iVar1 != 0) {
    if (param_1 != -1) {
      *(int *)(iVar1 + 0x20) = param_1;
      *(undefined *)(iVar1 + 0x2c) = 1;
    }
    if (param_2 != -1) {
      *(int *)(iVar1 + 0x48) = param_2;
      *(undefined *)(iVar1 + 0x54) = 1;
    }
  }
  return;
}



void __thiscall FUN_0091c8d0(int *param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  
  iVar1 = param_1_00[0x33];
  if (iVar1 != 0) {
    *param_1 = *(undefined4 *)(iVar1 + 0xc0);
    *param_2 = *(undefined4 *)(iVar1 + 0xe8);
    return;
  }
                    // WARNING: Could not recover jumptable at 0x0091c8fd. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1_00 + 0x278))();
  return;
}



void __thiscall FUN_0091c900(int *param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  
  iVar1 = param_1_00[0x33];
  if (iVar1 != 0) {
    *param_1 = *(undefined4 *)(iVar1 + 0xc0);
    *param_2 = *(undefined4 *)(iVar1 + 0xe8);
    return;
  }
                    // WARNING: Could not recover jumptable at 0x0091c92d. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1_00 + 0x27c))();
  return;
}



void __thiscall FUN_0091c930(int *param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  
  iVar1 = param_1_00[0x33];
  if (iVar1 != 0) {
    *param_1 = *(undefined4 *)(iVar1 + 0x20);
    *param_2 = *(undefined4 *)(iVar1 + 0x48);
    return;
  }
                    // WARNING: Could not recover jumptable at 0x0091c957. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1_00 + 0x270))();
  return;
}



void __thiscall FUN_0091c960(int *param_1,int *param_2,undefined4 param_3,byte param_4)

{
  char cVar1;
  int unaff_ESI;
  int *unaff_retaddr;
  int aiStack_8 [2];
  
  cVar1 = (**(code **)(*param_1 + 0x11c))();
  if (((cVar1 == '\0') && ((param_4 & 8) == 0)) && ((int *)param_1[0x11] != (int *)0x0)) {
    (**(code **)(*(int *)param_1[0x11] + 0x78))(aiStack_8);
    *unaff_retaddr = *unaff_retaddr + unaff_ESI;
    *param_2 = *param_2 + aiStack_8[0];
  }
  return;
}



void __thiscall FUN_0091c9b0(int *param_1_00,int param_1)

{
  if (*(char *)(param_1 + 0x5f) != '\0') {
    (**(code **)(*param_1_00 + 0xd8))(*(undefined *)(param_1 + 0x5d));
  }
  if (*(char *)(param_1 + 0x60) != '\0') {
    (**(code **)(*param_1_00 + 0xcc))(*(undefined *)(param_1 + 0x5e));
  }
  return;
}



undefined __thiscall FUN_0091c9f0(int *param_1,int param_2)

{
  int iVar1;
  char cVar2;
  undefined uVar3;
  
  uVar3 = 0;
  (**(code **)(*param_1 + 0x210))();
  if ((DAT_032bd440 == 0) || (((uint)param_1[0x39] >> 4 & 1) != 0)) {
    *(int **)(param_2 + 8) = param_1;
    FUN_00845dc0(param_2);
    if (*(char *)(param_2 + 0x28) != '\0') {
      uVar3 = 1;
    }
  }
  for (iVar1 = param_1[0x15]; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    cVar2 = (**(code **)(**(int **)(iVar1 + 8) + 0x214))(param_2);
    if (cVar2 != '\0') {
      uVar3 = 1;
    }
  }
  return uVar3;
}



undefined __thiscall FUN_0091ca70(int *param_1_00,int param_1,undefined4 param_2,undefined4 param_3)

{
  undefined uVar1;
  void *unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd76a8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 != 0) {
    FUN_00959460(param_1_00);
    DAT_032bfb78 = param_1;
    local_4 = 0;
    uVar1 = (**(code **)(*param_1_00 + 0x2a4))(param_1,param_2,param_3);
    DAT_032bfb78 = 0;
    FUN_00959460(0);
    ExceptionList = unaff_EDI;
    return uVar1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\wincmn.cpp",0xad0,"wxWindowBase::PopupMenu",&DAT_00d5017c,
                 "can\'t popup NULL menu",DAT_0323f878 ^ (uint)&stack0xffffffe8);
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_0091cb80(int *param_1_00,int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int unaff_ESI;
  int unaff_retaddr;
  
  iVar2 = param_2;
  iVar1 = param_1;
  if ((-1 < param_1) && (-1 < param_2)) {
    (**(code **)(*param_1_00 + 0x278))(&param_1,&param_2);
    if ((iVar1 < unaff_ESI) && (iVar2 < unaff_retaddr)) {
      return 10;
    }
  }
  return 9;
}



undefined4 __thiscall FUN_0091cbe0(int *param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  
  if (*(int **)(param_1 + 8) == param_1_00) {
    iVar2 = (**(code **)(*param_1_00 + 0x134))();
    if (iVar2 != 0) {
      cVar1 = FUN_00846890(param_1);
      if (cVar1 != '\0') {
        return 1;
      }
    }
  }
  uVar3 = FUN_008b8710(param_1);
  return uVar3;
}



void __thiscall FUN_0091cc20(int param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  void *unaff_EBX;
  int unaff_retaddr;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd76d8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (((*(int *)(param_1 + 0x20) != 0) && ((*(byte *)(param_1_00 + 0xe4) & 2) == 0)) &&
     (iVar1 = *(int *)(param_1_00 + 0x44), iVar1 != 0)) {
    cVar2 = FUN_0091a910(DAT_0323f878 ^ (uint)&stack0xffffffe8);
    if (cVar2 == '\0') {
      FUN_0091ad20(param_1);
      local_4 = 0;
      (**(code **)(**(int **)(iVar1 + 0x70) + 0x18))(param_1);
      *(int *)(unaff_retaddr + 0x20) = *(int *)(unaff_retaddr + 0x20) + 1;
      ExceptionList = unaff_EBX;
      return;
    }
  }
  FUN_00845cb0(param_1);
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_0091ccc0(int param_1_00,int param_1)

{
  uint3 uVar1;
  uint3 extraout_var;
  uint uVar2;
  
  uVar1 = (uint3)((uint)param_1 >> 8);
  if (*(int *)(param_1 + 0x34) != 9) {
    return (uint)uVar1 << 8;
  }
  uVar2 = 4;
  if ((*(byte *)(param_1 + 0x28) & 2) == 0) {
    uVar2 = 5;
  }
  if ((*(byte *)(param_1 + 0x28) & 1) != 0) {
    uVar2 = uVar2 | 2;
  }
  if (*(int *)(param_1_00 + 0x44) != 0) {
    (**(code **)(**(int **)(param_1_00 + 0x44) + 0x240))(uVar2);
    uVar1 = extraout_var;
  }
  return CONCAT31(uVar1,1);
}



void __thiscall FUN_0091cd00(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 0x44) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0xcd8,"wxWindowBase::DoMoveInTabOrder",
                   "GetParent()",L"MoveBefore/AfterInTabOrder() don\'t work for TLWs!");
      return;
    }
  }
  else if (param_1 != param_1_00) {
    iVar1 = FUN_0086af40(param_1);
    if (iVar1 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0xce2,"wxWindowBase::DoMoveInTabOrder",
                     &DAT_00d280dc,L"MoveBefore/AfterInTabOrder(): win is not a sibling");
        return;
      }
    }
    else {
      FUN_0086b0c0(param_1_00);
      if (param_2 == 1) {
        iVar1 = *(int *)(iVar1 + 0xc);
      }
      if (iVar1 == 0) {
        FUN_0086ad60(param_1_00);
        return;
      }
      FUN_0086ae40(iVar1,param_1_00);
    }
  }
  return;
}



int * FUN_0091cdc0(int *param_1)

{
  char cVar1;
  
  if (param_1 != (int *)0x0) {
    do {
      cVar1 = (**(code **)(*param_1 + 0x11c))();
      if (cVar1 != '\0') {
        return param_1;
      }
      param_1 = (int *)param_1[0x11];
    } while (param_1 != (int *)0x0);
  }
  return param_1;
}



void __thiscall FUN_0091cdf0(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxInitDialogEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void __thiscall FUN_0091ce40(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxHelpEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void FUN_0091ce90(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  param_1[1] = param_5;
  *param_1 = wxObjectEventFunctor::vftable;
  param_1[2] = param_3;
  param_1[3] = param_4;
  return;
}



undefined4 * __fastcall FUN_0091cec0(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxMouseCaptureLostEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined FUN_0091cf30(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                      undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  undefined uVar1;
  undefined4 uVar2;
  undefined local_1c [16];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7708;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_0091ce90(local_1c,&param_3,param_4,param_5,param_7,
                       DAT_0323f878 ^ (uint)&stack0xffffffdc);
  local_4 = 0;
  uVar1 = FUN_008462c0(param_1,param_2,param_3,uVar2,param_6);
  local_4 = 0xffffffff;
  FUN_00845630();
  ExceptionList = local_c;
  return uVar1;
}



undefined __thiscall FUN_0091cfd0(int param_1_00,char param_1)

{
  char cVar1;
  uint uVar2;
  undefined uVar3;
  undefined **local_38 [2];
  int local_30;
  undefined local_10;
  char local_f;
  char local_e;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a68;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  FUN_00845a20(*(undefined4 *)(param_1_00 + 0x40),DAT_032bfee8);
  uVar3 = 0;
  local_38[0] = wxCloseEvent::vftable;
  local_10 = 1;
  local_f = '\0';
  local_e = param_1 == '\0';
  local_4 = 0;
  local_30 = param_1_00;
  cVar1 = FUN_00845dc0(local_38);
  if ((cVar1 != '\0') && ((local_e == '\0' || (local_f == '\0')))) {
    uVar3 = 1;
  }
  local_4 = 0xffffffff;
  local_38[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar3;
}



void __fastcall FUN_0091d080(int *param_1)

{
  undefined4 *puVar1;
  undefined local_8 [8];
  
  if (param_1[0x13] != 0) {
    puVar1 = (undefined4 *)FUN_0091b530(local_8);
    (**(code **)(*param_1 + 0x288))(0xffffffff,0xffffffff,*puVar1,puVar1[1],0);
  }
  return;
}



int * __thiscall FUN_0091d0c0(int *param_1_00,int *param_1)

{
  int unaff_ESI;
  int iStack_8;
  
  (**(code **)(*param_1_00 + 0xa4))(param_1);
  if ((*param_1 == -1) || (param_1[1] == -1)) {
    FUN_0091b530(&stack0xfffffff4);
    if (*param_1 == -1) {
      *param_1 = unaff_ESI;
    }
    if (param_1[1] == -1) {
      param_1[1] = iStack_8;
      return param_1;
    }
  }
  return param_1;
}



void __fastcall FUN_0091d120(int *param_1)

{
  int iVar1;
  undefined **local_54;
  undefined local_50 [4];
  int *piStack_4c;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  uint uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7738;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = param_1[0x10];
  (**(code **)(*param_1 + 0x278))(&local_54,local_50,DAT_0323f878 ^ (uint)&stack0xffffff9c);
  FUN_00845a20(iVar1,DAT_032bfed0);
  local_54 = wxSizeEvent::vftable;
  uStack_24 = 0;
  uStack_20 = 0;
  uStack_1c = 0;
  uStack_18 = 0;
  local_c = (void *)0x0;
  piStack_4c = param_1;
  if ((uStack_4 & 1) == 0) {
    FUN_00845dc0(&local_54);
  }
  else if ((int *)param_1[0x1c] == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0xd9f,"wxPostEvent",&DAT_00d4f9e4,
                   "need an object to post event to");
    }
  }
  else {
    (**(code **)(*(int *)param_1[0x1c] + 0x20))(&local_54);
  }
  local_c = (void *)0xffffffff;
  local_54 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_14;
  return;
}



undefined4 * __fastcall FUN_0091d230(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be58c3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1[1] = 0;
  *param_1 = wxFont::vftable;
  local_4 = 0;
  FUN_00453f4b(uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00453f4b();
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0091d290(int *param_1_00,int *param_1)

{
  char cVar1;
  byte bVar2;
  undefined4 uVar3;
  
  if ((((*(char *)(param_1 + 3) == *(char *)(param_1_00 + 0x26)) &&
       (*(char *)((int)param_1 + 0xd) == *(char *)((int)param_1_00 + 0x99))) &&
      (*(char *)((int)param_1 + 0xf) == *(char *)((int)param_1_00 + 0x9b))) &&
     ((*(char *)((int)param_1 + 0xe) == *(char *)((int)param_1_00 + 0x9a) &&
      (*(char *)(param_1 + 4) == *(char *)(param_1_00 + 0x27))))) {
    return 0;
  }
  cVar1 = (**(code **)(*param_1 + 0x24))();
  bVar2 = (cVar1 << 4 ^ *(byte *)(param_1_00 + 0x37)) & 0x10 ^ *(byte *)(param_1_00 + 0x37);
  *(byte *)(param_1_00 + 0x37) = (bVar2 * '\b' ^ bVar2) & 0x7f ^ bVar2 * '\b';
  if (param_1_00 + 0x23 != param_1) {
    FUN_0083ea60(param_1);
  }
  param_1_00[0x25] = param_1[2];
  *(undefined *)(param_1_00 + 0x26) = *(undefined *)(param_1 + 3);
  *(undefined *)((int)param_1_00 + 0x99) = *(undefined *)((int)param_1 + 0xd);
  *(undefined *)((int)param_1_00 + 0x9a) = *(undefined *)((int)param_1 + 0xe);
  *(undefined *)((int)param_1_00 + 0x9b) = *(undefined *)((int)param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x27) = *(undefined *)(param_1 + 4);
  if ((*(byte *)(param_1_00 + 0x37) & 0x10) == 0) {
    cVar1 = (**(code **)(param_1_00[0x28] + 0x24))();
    if (cVar1 == '\0') {
      uVar3 = 1;
      goto LAB_0091d35f;
    }
  }
  uVar3 = 0;
LAB_0091d35f:
  (**(code **)(*param_1_00 + 0xf8))(uVar3);
  return 1;
}



undefined4 __thiscall FUN_0091d380(int *param_1_00,int *param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  if ((((*(char *)(param_1 + 3) == *(char *)(param_1_00 + 0x2b)) &&
       (*(char *)((int)param_1 + 0xd) == *(char *)((int)param_1_00 + 0xad))) &&
      (*(char *)((int)param_1 + 0xf) == *(char *)((int)param_1_00 + 0xaf))) &&
     ((*(char *)((int)param_1 + 0xe) == *(char *)((int)param_1_00 + 0xae) &&
      (*(char *)(param_1 + 4) == *(char *)(param_1_00 + 0x2c))))) {
    return 0;
  }
  cVar1 = (**(code **)(*param_1 + 0x24))();
  *(byte *)(param_1_00 + 0x37) =
       *(byte *)(param_1_00 + 0x37) ^ (cVar1 << 5 ^ *(byte *)(param_1_00 + 0x37)) & 0x20;
  *(byte *)((int)param_1_00 + 0xdd) =
       *(byte *)((int)param_1_00 + 0xdd) ^
       (*(byte *)(param_1_00 + 0x37) >> 5 ^ *(byte *)((int)param_1_00 + 0xdd)) & 1;
  if (param_1_00 + 0x28 != param_1) {
    FUN_0083ea60(param_1);
  }
  param_1_00[0x2a] = param_1[2];
  *(undefined *)(param_1_00 + 0x2b) = *(undefined *)(param_1 + 3);
  *(undefined *)((int)param_1_00 + 0xad) = *(undefined *)((int)param_1 + 0xd);
  *(undefined *)((int)param_1_00 + 0xae) = *(undefined *)((int)param_1 + 0xe);
  *(undefined *)((int)param_1_00 + 0xaf) = *(undefined *)((int)param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x2c) = *(undefined *)(param_1 + 4);
  if ((*(byte *)(param_1_00 + 0x37) & 0x20) == 0) {
    cVar1 = (**(code **)(param_1_00[0x23] + 0x24))();
    if (cVar1 == '\0') {
      uVar2 = 1;
      goto LAB_0091d44b;
    }
  }
  uVar2 = 0;
LAB_0091d44b:
  (**(code **)(*param_1_00 + 0xf8))(uVar2);
  return 1;
}



undefined4 __thiscall FUN_0091d460(int param_1_00,int *param_1)

{
  char cVar1;
  
  cVar1 = FUN_0094a5b0((int *)(param_1_00 + 0x84));
  if (cVar1 != '\0') {
    return 0;
  }
  if ((int *)(param_1_00 + 0x84) != param_1) {
    FUN_0083ea60(param_1);
  }
  cVar1 = (**(code **)(*param_1 + 0x10))();
  *(byte *)(param_1_00 + 0xdc) =
       *(byte *)(param_1_00 + 0xdc) ^ (cVar1 << 6 ^ *(byte *)(param_1_00 + 0xdc)) & 0x40;
  *(byte *)(param_1_00 + 0xdd) =
       *(byte *)(param_1_00 + 0xdd) ^
       (*(byte *)(param_1_00 + 0xdc) >> 5 ^ *(byte *)(param_1_00 + 0xdd)) & 2;
  FUN_0091a950();
  return 1;
}



void __thiscall FUN_0091d4d0(int param_1_00,int param_1)

{
  int iVar1;
  
  if (param_1 != 0) {
    if (((*(int *)(param_1 + 0x10) != 0) && (*(int *)(param_1 + 0x38) != param_1_00)) &&
       (*(int *)(*(int *)(param_1 + 0x10) + 0xd0) != 0)) {
      FUN_0086b0c0(param_1_00);
    }
    iVar1 = *(int *)(param_1 + 0x38);
    if (((iVar1 != 0) && (iVar1 != param_1_00)) && (*(int *)(iVar1 + 0xd0) != 0)) {
      FUN_0086b0c0(param_1_00);
    }
    iVar1 = *(int *)(param_1 + 0x60);
    if (((iVar1 != 0) && (iVar1 != param_1_00)) && (*(int *)(iVar1 + 0xd0) != 0)) {
      FUN_0086b0c0(param_1_00);
    }
    iVar1 = *(int *)(param_1 + 0x88);
    if (((iVar1 != 0) && (iVar1 != param_1_00)) && (*(int *)(iVar1 + 0xd0) != 0)) {
      FUN_0086b0c0(param_1_00);
    }
    iVar1 = *(int *)(param_1 + 0xb0);
    if (((iVar1 != 0) && (iVar1 != param_1_00)) && (*(int *)(iVar1 + 0xd0) != 0)) {
      FUN_0086b0c0(param_1_00);
    }
    iVar1 = *(int *)(param_1 + 0xd8);
    if (((iVar1 != 0) && (iVar1 != param_1_00)) && (*(int *)(iVar1 + 0xd0) != 0)) {
      FUN_0086b0c0(param_1_00);
    }
    iVar1 = *(int *)(param_1 + 0x100);
    if (((iVar1 != 0) && (iVar1 != param_1_00)) && (*(int *)(iVar1 + 0xd0) != 0)) {
      FUN_0086b0c0(param_1_00);
    }
    iVar1 = *(int *)(param_1 + 0x128);
    if (((iVar1 != 0) && (iVar1 != param_1_00)) && (*(int *)(iVar1 + 0xd0) != 0)) {
      FUN_0086b0c0(param_1_00);
    }
  }
  return;
}



void __fastcall FUN_0091d5e0(int *param_1)

{
  int iVar1;
  bool bVar2;
  int *local_4;
  
  iVar1 = param_1[0x33];
  if ((((iVar1 == 0) || (*(char *)(iVar1 + 0x2c) == '\0')) || (*(char *)(iVar1 + 0x54) == '\0')) ||
     ((*(char *)(iVar1 + 0xcc) == '\0' || (*(char *)(iVar1 + 0xf4) == '\0')))) {
    bVar2 = false;
  }
  else {
    bVar2 = true;
  }
  local_4 = param_1;
  FUN_0091c7d0();
  local_4 = (int *)0x1;
  if (bVar2) {
    do {
      (**(code **)(*param_1 + 0x1e4))(&local_4);
    } while (0 < (int)local_4);
  }
  (**(code **)(*param_1 + 0x1e8))(&local_4);
  return;
}



undefined4 __fastcall FUN_0091d660(int *param_1)

{
  int *piVar1;
  code *pcVar2;
  int unaff_ESI;
  int local_8 [2];
  
  if (param_1[0x35] != 0) {
    (**(code **)(*param_1 + 0xb8))(local_8);
    piVar1 = (int *)param_1[0x35];
    piVar1[9] = 0;
    pcVar2 = *(code **)(*piVar1 + 0x4c);
    piVar1[10] = 0;
    piVar1[5] = unaff_ESI;
    piVar1[6] = local_8[0];
    (*pcVar2)();
    (**(code **)(*piVar1 + 0x40))(4,unaff_ESI,local_8[0]);
    return 1;
  }
  FUN_0091d5e0();
  (**(code **)(*param_1 + 0x1e0))(1);
  return 1;
}



void __fastcall FUN_0091d6e0(int *param_1)

{
  int iVar1;
  int *piVar2;
  void **ppvVar3;
  char cVar4;
  uint uVar5;
  undefined **appuStack_34 [2];
  int *piStack_2c;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7768;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ppvVar3 = &local_c;
  local_c = ExceptionList;
  for (iVar1 = param_1[0x15]; ExceptionList = ppvVar3, iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    piVar2 = *(int **)(iVar1 + 8);
    cVar4 = (**(code **)(*piVar2 + 0x11c))(uVar5);
    if (cVar4 == '\0') {
      FUN_00845a20(0,DAT_032bff38);
      appuStack_34[0] = wxSysColourChangedEvent::vftable;
      uStack_4 = 0;
      piStack_2c = piVar2;
      (**(code **)(*(int *)piVar2[0x1c] + 0x18))(appuStack_34);
      uStack_4 = 0xffffffff;
      appuStack_34[0] = wxObject::vftable;
      FUN_0083e850();
    }
    ppvVar3 = (void **)ExceptionList;
  }
  (**(code **)(*param_1 + 0x15c))(1,0);
  ExceptionList = pvStack_14;
  return;
}



void FUN_0091d7a0(void)

{
  char cVar1;
  uint uVar2;
  int unaff_ESI;
  undefined ***pppuVar3;
  undefined **local_34 [2];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7798;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)local_34;
  ExceptionList = &local_c;
  FUN_00845a20(*(undefined4 *)(unaff_ESI + 0x40),DAT_032bff18);
  local_34[0] = wxMouseCaptureLostEvent::vftable;
  pppuVar3 = local_34;
  local_4 = 0;
  cVar1 = (**(code **)(**(int **)(unaff_ESI + 0x70) + 0x18))(pppuVar3,uVar2);
  if ((cVar1 == '\0') && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0xc35,"DoNotifyWindowAboutCaptureLost",
                 "Assert failure",
                 L"window that captured the mouse didn\'t process wxEVT_MOUSE_CAPTURE_LOST");
  }
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850(pppuVar3,wxObject::vftable);
  ExceptionList = pvStack_10;
  return;
}



void FUN_0091d860(void)

{
  int iVar1;
  
  if (DAT_032bfb84 == '\0') {
    if (DAT_032bfb80 != 0) {
      FUN_0091d7a0();
      DAT_032bfb80 = 0;
    }
    iVar1 = DAT_032bfb7c;
    if (DAT_032bfb7c != 0) {
      DAT_032bfb7c = *(undefined4 *)(DAT_032bfb7c + 4);
      FUN_0091d7a0();
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar1);
    }
  }
  return;
}



undefined __thiscall FUN_0091d8c0(int param_1_00,undefined4 param_1)

{
  undefined uVar1;
  uint uVar2;
  int *piVar3;
  undefined **local_3c [2];
  void *local_34;
  undefined4 local_1c;
  undefined4 local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2598;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  FUN_00845a20(0,DAT_032bfe6c);
  local_3c[0] = wxNavigationKeyEvent::vftable;
  local_14 = 5;
  local_10 = (void *)0x0;
  local_1c = 0;
  local_4 = 0;
  piVar3 = (int *)FUN_009116a0(uVar2);
  if (piVar3 == (int *)0x0) {
    local_34 = (void *)0x0;
  }
  else {
    local_34 = (void *)(**(code **)(*piVar3 + 0x234))();
  }
  local_14 = param_1;
  local_10 = local_34;
  uVar1 = (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_3c);
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  ExceptionList = local_10;
  return uVar1;
}



undefined4 * FUN_0091d990(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxInitDialogEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_0091da00(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxHelpEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __fastcall FUN_0091da70(int *param_1)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int *piVar4;
  int unaff_EBP;
  int unaff_ESI;
  int iVar5;
  int iVar6;
  int **unaff_retaddr;
  int iStack_1c;
  undefined auStack_18 [4];
  int iStack_14;
  int local_10;
  int *local_c;
  int *local_8 [2];
  
  if (param_1[0x35] != 0) {
    piVar4 = (int *)FUN_0092fff0(local_8);
    iVar5 = *piVar4;
    iVar6 = piVar4[1];
LAB_0091dbce:
    (**(code **)(*param_1 + 0x27c))(local_8,&local_c);
    iVar1 = local_10;
    (**(code **)(*param_1 + 0x278))(auStack_18,&iStack_1c);
    local_c[1] = iVar6 + ((unaff_EBP - unaff_ESI < 0) - 1 & unaff_EBP - unaff_ESI);
    *local_c = iVar5 + (iStack_14 - iVar1 & (iStack_14 - iVar1 < 0) - 1);
    return;
  }
  if (param_1[0x33] != 0) {
    FUN_0091d5e0();
    iVar5 = 0;
    iVar6 = 0;
    for (iVar1 = param_1[0x15]; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
      iVar2 = *(int *)(*(int *)(iVar1 + 8) + 0xcc);
      if (iVar2 != 0) {
        if (iVar5 < *(int *)(iVar2 + 0x70)) {
          iVar5 = *(int *)(iVar2 + 0x70);
        }
        if (iVar6 < *(int *)(iVar2 + 0x98)) {
          iVar6 = *(int *)(iVar2 + 0x98);
        }
      }
    }
    goto LAB_0091dbce;
  }
  if (param_1[0x13] != 0) {
    iVar1 = param_1[0x15];
    iVar5 = 0;
    local_10 = 0;
    iVar6 = local_10;
    for (; local_10 = iVar6, iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
      piVar4 = *(int **)(iVar1 + 8);
      cVar3 = (**(code **)(*piVar4 + 0x11c))();
      if (((cVar3 == '\0') && (cVar3 = (**(code **)(*piVar4 + 0xdc))(), cVar3 != '\0')) &&
         (iVar6 = FUN_0048a085(piVar4,&PTR_u_wxStatusBar_0323a318), iVar6 == 0)) {
        (**(code **)(*piVar4 + 0x270))(&iStack_1c,&iStack_14);
        if (unaff_EBP == -1) {
          unaff_EBP = 0;
        }
        if (iStack_1c == -1) {
          iStack_1c = 0;
        }
        (**(code **)(*piVar4 + 0x278))(&iStack_14,&local_10);
        if (iVar5 < (int)local_c + iStack_1c) {
          iVar5 = (int)local_c + iStack_1c;
        }
        if (local_10 < iStack_14 + (int)local_8[0]) {
          local_10 = iStack_14 + (int)local_8[0];
        }
      }
      iVar6 = local_10;
    }
    goto LAB_0091dbce;
  }
  (**(code **)(*param_1 + 0xa4))(local_8);
  if (local_c == (int *)0xffffffff) {
    local_c = (int *)0x1;
  }
  else if (local_8[0] != (int *)0xffffffff) goto LAB_0091dc73;
  if (local_8[0] == (int *)0xffffffff) {
    local_8[0] = (int *)0x1;
  }
LAB_0091dc73:
  *unaff_retaddr = local_c;
  unaff_retaddr[1] = local_8[0];
  return;
}



undefined4 __thiscall FUN_0091dc90(int param_1_00,int param_1)

{
  if (*(int *)(param_1_00 + 0x80) == *(int *)(param_1 + 4)) {
    return 0;
  }
  if (param_1_00 + 0x7c != param_1) {
    FUN_0083ea60(param_1);
  }
  return 1;
}



undefined4 __thiscall FUN_0091dcc0(undefined4 param_1_00,byte param_1)

{
  FUN_008f7630();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int FUN_0091dce0(int param_1)

{
  int iVar1;
  undefined local_28 [8];
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd9591;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0091d230(DAT_0323f878 ^ (uint)&stack0xffffffc4);
  local_4 = 0;
  iVar1 = FUN_008ff360(local_28,0x11);
  local_4 = 1;
  if (param_1 != iVar1) {
    FUN_0083ea60(iVar1);
  }
  local_4 = local_4 & 0xffffff00;
  FUN_00921450();
  iVar1 = FUN_008ff080(local_20,8);
  local_4 = 2;
  if (param_1 + 8 != iVar1) {
    FUN_0083ea60(iVar1);
  }
  *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(iVar1 + 8);
  *(undefined *)(param_1 + 0x14) = *(undefined *)(iVar1 + 0xc);
  *(undefined *)(param_1 + 0x15) = *(undefined *)(iVar1 + 0xd);
  *(undefined *)(param_1 + 0x16) = *(undefined *)(iVar1 + 0xe);
  *(undefined *)(param_1 + 0x17) = *(undefined *)(iVar1 + 0xf);
  *(undefined *)(param_1 + 0x18) = *(undefined *)(iVar1 + 0x10);
  local_4 = local_4 & 0xffffff00;
  local_20[0] = wxObject::vftable;
  FUN_0083e850();
  iVar1 = FUN_008ff080(local_20,0xf);
  local_4 = 3;
  if (param_1 + 0x1c != iVar1) {
    FUN_0083ea60(iVar1);
  }
  *(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(iVar1 + 8);
  *(undefined *)(param_1 + 0x28) = *(undefined *)(iVar1 + 0xc);
  *(undefined *)(param_1 + 0x29) = *(undefined *)(iVar1 + 0xd);
  *(undefined *)(param_1 + 0x2a) = *(undefined *)(iVar1 + 0xe);
  *(undefined *)(param_1 + 0x2b) = *(undefined *)(iVar1 + 0xf);
  *(undefined *)(param_1 + 0x2c) = *(undefined *)(iVar1 + 0x10);
  local_4 = local_4 & 0xffffff00;
  local_20[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0091de40(int *param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  undefined **appuStack_80 [3];
  char cStack_74;
  undefined auStack_6c [48];
  undefined auStack_3c [48];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd77d0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(param_1[0x23] + 0x24))(DAT_0323f878 ^ (uint)&stack0xffffff74);
  if (cVar1 == '\0') {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((*(byte *)(param_1 + 0x37) & 0x10) != 0)) {
      FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x5f1,"wxWindowBase::GetBackgroundColour",
                   "!m_hasBgCol",L"we have invalid explicit bg colour?");
    }
    iVar2 = (**(code **)(*param_1 + 0x178))(auStack_6c);
    FUN_00458700(iVar2 + 0x1c);
    uStack_4 = 0;
    FUN_0043d9c0();
    if (cStack_74 == '\0') {
      iVar2 = FUN_0091dce0(auStack_3c,0);
      uStack_4._0_1_ = 1;
      FUN_004722cb(iVar2 + 0x1c);
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_0043d9c0();
    }
    FUN_00458700(appuStack_80);
    uStack_4 = 0xffffffff;
    appuStack_80[0] = wxObject::vftable;
    FUN_0083e850();
  }
  else {
    FUN_00458700(param_1 + 0x23);
  }
  ExceptionList = local_c;
  return param_2;
}



undefined4 * __thiscall FUN_0091df90(int *param_1_00,undefined4 *param_1)

{
  char cVar1;
  int iVar2;
  undefined **appuStack_80 [3];
  char cStack_74;
  undefined auStack_6c [48];
  undefined auStack_3c [48];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7800;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (((*(byte *)(param_1_00 + 0x37) & 0x20) == 0) &&
     (cVar1 = (**(code **)(param_1_00[0x28] + 0x24))(DAT_0323f878 ^ (uint)&stack0xffffff78),
     cVar1 == '\0')) {
    iVar2 = (**(code **)(*param_1_00 + 0x178))(auStack_6c);
    FUN_00458700(iVar2 + 8);
    uStack_4 = 0;
    FUN_0043d9c0();
    if (cStack_74 == '\0') {
      iVar2 = FUN_0091dce0(auStack_3c,0);
      uStack_4._0_1_ = 1;
      FUN_004722cb(iVar2 + 8);
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_0043d9c0();
    }
    FUN_00458700(appuStack_80);
    uStack_4 = 0xffffffff;
    appuStack_80[0] = wxObject::vftable;
    FUN_0083e850();
    ExceptionList = local_c;
    return param_1;
  }
  *param_1 = wxObject::vftable;
  iVar2 = param_1_00[0x29];
  param_1[1] = iVar2;
  if (iVar2 != 0) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  *param_1 = wxColour::vftable;
  param_1[2] = param_1_00[0x2a];
  *(undefined *)(param_1 + 3) = *(undefined *)(param_1_00 + 0x2b);
  *(undefined *)((int)param_1 + 0xd) = *(undefined *)((int)param_1_00 + 0xad);
  *(undefined *)((int)param_1 + 0xe) = *(undefined *)((int)param_1_00 + 0xae);
  *(undefined *)((int)param_1 + 0xf) = *(undefined *)((int)param_1_00 + 0xaf);
  *(undefined *)(param_1 + 4) = *(undefined *)(param_1_00 + 0x2c);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_0091e100(int *param_1,undefined4 *param_2)

{
  char cVar1;
  int iVar2;
  undefined ***pppuVar3;
  undefined4 *unaff_retaddr;
  undefined **local_78;
  int *piStack_74;
  undefined auStack_6c [44];
  undefined auStack_40 [48];
  void *pvStack_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bd7830;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_78 = (undefined **)0x0;
  cVar1 = (**(code **)(param_1[0x21] + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffff84);
  if (cVar1 != '\0') {
    iVar2 = param_1[0x22];
    *param_2 = wxObject::vftable;
    param_2[1] = iVar2;
    if (iVar2 != 0) {
      *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
    }
    *param_2 = wxFont::vftable;
    ExceptionList = local_c;
    return param_2;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((*(byte *)(param_1 + 0x37) & 0x40) != 0)) {
    FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x641,"wxWindowBase::GetFont","!m_hasFont",
                 L"we have invalid explicit font?");
  }
  iVar2 = (**(code **)(*param_1 + 0x178))(auStack_6c);
  piStack_74 = *(int **)(iVar2 + 4);
  if (piStack_74 != (int *)0x0) {
    piStack_74[1] = piStack_74[1] + 1;
  }
  local_78 = wxFont::vftable;
  uStack_8 = (undefined *)0x0;
  FUN_0043d9c0();
  if (piStack_74 != (int *)0x0) {
    cVar1 = (**(code **)(*piStack_74 + 4))();
    if (cVar1 != '\0') goto LAB_0091e1fd;
  }
  pppuVar3 = (undefined ***)FUN_0091dce0(auStack_40,0);
  uStack_8._0_1_ = 1;
  if (&local_78 != pppuVar3) {
    FUN_0083ea60(pppuVar3);
  }
  uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
  FUN_0043d9c0();
LAB_0091e1fd:
  *unaff_retaddr = wxObject::vftable;
  unaff_retaddr[1] = piStack_74;
  if (piStack_74 != (int *)0x0) {
    piStack_74[1] = piStack_74[1] + 1;
  }
  *unaff_retaddr = wxFont::vftable;
  uStack_8 = (undefined *)0xffffffff;
  FUN_00921450();
  ExceptionList = pvStack_10;
  return unaff_retaddr;
}



int * __thiscall FUN_0091e280(int *param_1_00,int *param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  int local_24 [2];
  undefined local_1c [12];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd7858;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  iVar1 = param_1_00[0x2f];
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  local_4 = 0;
  uVar3 = FUN_007b0d3e(local_1c);
  FUN_0091ae40(uVar3);
  FUN_0091adc0(param_1);
  (**(code **)(*param_1_00 + 0x78))(local_24,uVar2);
  param_1[1] = param_1[1] - local_24[0];
  *param_1 = *param_1 - iVar1;
  puStack_8 = (undefined *)0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_10;
  return param_1;
}



void __fastcall FUN_0091e340(undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_34 [12];
  int *piStack_28;
  int *local_24;
  undefined **local_20 [4];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7898;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  FUN_0094bd30(param_1);
  local_4 = 0;
  uVar2 = FUN_0091de40(local_20);
  local_4._0_1_ = 1;
  FUN_0095d7e0(uVar2,100);
  local_4 = CONCAT31(local_4._1_3_,3);
  local_20[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  (**(code **)(*local_24 + 0x68))(local_34);
  (**(code **)(*piStack_28 + 0xb0))();
  puStack_8 = (undefined *)((uint)puStack_8 & 0xffffff00);
  FUN_008f7630();
  puStack_8 = (undefined *)0xffffffff;
  FUN_00457221();
  ExceptionList = pvStack_10;
  return;
}



undefined4 * __thiscall FUN_0091e400(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_0092bd60(DAT_032bff60,param_1);
  *param_1_00 = wxUpdateUIEvent::vftable;
  param_1_00[0x1e] = 0;
  param_1_00[0x1f] = 7;
  *(undefined2 *)(param_1_00 + 0x1a) = 0;
  param_1_00[0x20] = 0;
  *(undefined *)((int)param_1_00 + 0x62) = 0;
  *(undefined *)((int)param_1_00 + 0x61) = 0;
  *(undefined *)(param_1_00 + 0x18) = 0;
  *(undefined *)((int)param_1_00 + 0x5f) = 0;
  *(undefined *)((int)param_1_00 + 0x5e) = 0;
  *(undefined *)((int)param_1_00 + 0x5d) = 0;
  *(undefined *)(param_1_00 + 0x17) = 0;
  return param_1_00;
}



void __fastcall FUN_0091e450(undefined4 *param_1)

{
  _free((void *)param_1[0x20]);
  if (7 < (uint)param_1[0x1f]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x1a]);
  }
  param_1[0x1f] = 7;
  param_1[0x1e] = 0;
  *(undefined2 *)(param_1 + 0x1a) = 0;
  _free((void *)param_1[0x11]);
  if (7 < (uint)param_1[0x10]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xb]);
  }
  param_1[0x10] = 7;
  param_1[0xf] = 0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



void __fastcall FUN_0091e4d0(undefined4 *param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd794b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxWindowBase::vftable;
  local_4 = 10;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    puVar2 = (undefined4 *)FUN_009116e0(uVar1);
    if (puVar2 == param_1) {
      FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x1c3,"wxWindowBase::~wxWindowBase",
                   "GetCapture() != this",L"attempt to destroy window with mouse capture");
    }
  }
  FUN_0086b0c0(param_1);
  FUN_0086b0c0(param_1);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((undefined4 *)param_1[0x1c] != param_1)) {
    FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x1d4,"wxWindowBase::~wxWindowBase",
                 "GetEventHandler() == this",L"any pushed event handlers must have been removed");
  }
  if ((DAT_032bfb78 != 0) && (*(undefined4 **)(DAT_032bfb78 + 0x84) == param_1)) {
    FUN_00959460(0);
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[0x13] != 0)) {
    FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x1dd,"wxWindowBase::~wxWindowBase",
                 "GetChildren().GetCount() == 0",L"children not destroyed");
  }
  if ((int *)param_1[0x11] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x11] + 0x128))(param_1);
  }
  if ((undefined4 *)param_1[0x2d] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x2d])(1);
  }
  if ((int *)param_1[0x1d] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x1d] + 4))(1);
  }
  FUN_0091c540();
  if (param_1[0x33] != 0) {
    FUN_0091d4d0(param_1[0x33]);
    if ((int *)param_1[0x33] != (int *)0x0) {
      (**(code **)(*(int *)param_1[0x33] + 4))(1);
      param_1[0x33] = 0;
    }
  }
  if ((int *)param_1[0x36] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x36] + 0x28))(param_1);
  }
  if ((int *)param_1[0x35] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x35] + 4))(1);
  }
  if ((undefined4 *)param_1[0x1e] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x1e])(1);
  }
  if ((int *)param_1[0x32] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x32] + 4))(1);
  }
  if (DAT_032e8c44 != (int *)0x0) {
    (**(code **)(*DAT_032e8c44 + 0x14))(param_1);
  }
  local_4._0_1_ = 9;
  param_1[0x45] = wxObject::vftable;
  FUN_0083e850();
  _free((void *)param_1[0x41]);
  if (7 < (uint)param_1[0x40]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x3b]);
  }
  param_1[0x40] = 7;
  param_1[0x3f] = 0;
  *(undefined2 *)(param_1 + 0x3b) = 0;
  local_4._0_1_ = 7;
  param_1[0x30] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 6;
  FUN_008f7630();
  local_4._0_1_ = 5;
  param_1[0x28] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 4;
  param_1[0x23] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 3;
  FUN_00921450();
  local_4._0_1_ = 2;
  FUN_008f7630();
  local_4._0_1_ = 1;
  FUN_0086ade0();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00994360(0xfffffffd);
  local_4 = 0xffffffff;
  FUN_00846530();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0091e790(int *param_1)

{
  (**(code **)(*param_1 + 0xcc))(1);
  return;
}



void __fastcall FUN_0091e7a0(int *param_1)

{
  (**(code **)(*param_1 + 0xcc))(0);
  return;
}



undefined4 FUN_0091e7b0(void)

{
  return 0x10000000;
}



void __fastcall FUN_0091e7c0(int param_1)

{
  uint uVar1;
  undefined **local_6c [2];
  int local_64;
  undefined4 local_58;
  uint uStack_40;
  undefined4 uStack_30;
  uint uStack_2c;
  void *pvStack_28;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea938;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  if ((*(byte *)(param_1 + 0xdc) & 8) == 0) {
    *(byte *)(param_1 + 0xdc) = *(byte *)(param_1 + 0xdc) | 8;
    FUN_0092be70(0);
    local_58 = *(undefined4 *)(param_1 + 0x40);
    local_4 = 0;
    local_64 = param_1;
    (**(code **)(**(int **)(param_1 + 0x70) + 0x18))(local_6c,uVar1);
    local_4 = 0xffffffff;
    _free(pvStack_28);
    if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_40);
    }
    uStack_2c = 7;
    uStack_30 = 0;
    uStack_40 = uStack_40 & 0xffff0000;
    local_6c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __fastcall FUN_0091e8b0(int *param_1)

{
  int iVar1;
  
  iVar1 = (**(code **)(*param_1 + 0x218))();
  if (iVar1 != 0) {
    FUN_0091e7c0();
  }
  (**(code **)(*param_1 + 4))(1);
  return 1;
}



undefined4 __fastcall FUN_0091e8e0(int param_1)

{
  int *piVar1;
  int iVar2;
  
  iVar2 = *(int *)(param_1 + 0x54);
  if (iVar2 != 0) {
    do {
      piVar1 = *(int **)(iVar2 + 8);
      iVar2 = (**(code **)(*piVar1 + 0x218))();
      if (iVar2 != 0) {
        FUN_0091e7c0();
      }
      (**(code **)(*piVar1 + 4))(1);
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar2 = FUN_0086af40(piVar1), iVar2 != 0)) {
        FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x259,"wxWindowBase::DestroyChildren",
                     "!GetChildren().Find(child)",L"child didn\'t remove itself using RemoveChild()"
                    );
      }
      iVar2 = *(int *)(param_1 + 0x54);
    } while (iVar2 != 0);
    iVar2 = 0;
  }
  return CONCAT31((int3)((uint)iVar2 >> 8),1);
}



void __thiscall FUN_0091e960(int *param_1_00,undefined4 param_1)

{
  double dVar1;
  uint uVar2;
  int iVar3;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bddde8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  FUN_0091e100();
  local_4 = 0;
  iVar3 = FUN_00921710(uVar2);
  switch(param_1) {
  case 0:
    goto switchD_0091e9b1_caseD_0;
  case 1:
    dVar1 = (double)iVar3 * 3.0;
    break;
  case 2:
    dVar1 = ((double)iVar3 + (double)iVar3) / 3.0;
    goto LAB_0091e9c8;
  case 3:
    dVar1 = (double)iVar3 * 5.0;
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\wincmn.cpp",0x3ea,"wxWindowBase::DoSetWindowVariant",
                   "Assert failure",L"unexpected window variant");
    }
    goto switchD_0091e9b1_caseD_0;
  }
  dVar1 = dVar1 * 0.25;
LAB_0091e9c8:
  FUN_008ffcc0(dVar1);
switchD_0091e9b1_caseD_0:
  FUN_00922240();
  (**(code **)(*param_1_00 + 0x18c))();
  puStack_8 = (undefined *)0xffffffff;
  FUN_00921450();
  ExceptionList = pvStack_10;
  return;
}



void __fastcall FUN_0091ea70(int *param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined local_28 [8];
  undefined **appuStack_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7980;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  iVar1 = param_1[0x11];
  if (iVar1 != 0) {
    if (((*(byte *)(iVar1 + 0xdd) & 2) != 0) && ((*(byte *)(param_1 + 0x37) & 0x40) == 0)) {
      uVar4 = FUN_0091e100(local_28);
      local_4 = 0;
      (**(code **)(*param_1 + 0x18c))(uVar4);
      local_4 = 0xffffffff;
      FUN_00921450();
    }
    cVar2 = (**(code **)(*param_1 + 0x228))(uVar3);
    if (((cVar2 != '\0') && ((*(byte *)(iVar1 + 0xdd) & 1) != 0)) &&
       ((*(byte *)(param_1 + 0x37) & 0x20) == 0)) {
      uVar4 = FUN_0091df90(appuStack_20);
      local_4 = 1;
      (**(code **)(*param_1 + 0x180))(uVar4);
      local_4 = 0xffffffff;
      appuStack_20[0] = wxObject::vftable;
      FUN_0083e850();
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0091eb60(int *param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  uint unaff_retaddr;
  undefined **local_98 [2];
  int *local_90;
  undefined local_3c;
  undefined local_3b;
  undefined local_3a;
  undefined local_39;
  undefined local_38;
  undefined local_37;
  undefined local_36;
  undefined2 local_30;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd79ab;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_98);
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff60;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032bff60,param_1[0x10]);
  local_98[0] = wxUpdateUIEvent::vftable;
  local_1c = 7;
  local_20 = 0;
  local_30 = 0;
  local_18 = 0;
  local_36 = 0;
  local_37 = 0;
  local_38 = 0;
  local_39 = 0;
  local_3a = 0;
  local_3b = 0;
  local_3c = 0;
  local_4 = 0;
  local_90 = param_1;
  cVar2 = (**(code **)(*(int *)param_1[0x1c] + 0x18))(local_98,uVar3);
  if (cVar2 != '\0') {
    (**(code **)(*param_1 + 0x1a0))(&stack0xffffff64);
  }
  if ((unaff_retaddr & 1) != 0) {
    for (iVar1 = param_1[0x15]; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
      (**(code **)(**(int **)(iVar1 + 8) + 0x19c))(unaff_retaddr);
    }
  }
  puStack_8 = (undefined *)0xffffffff;
  FUN_0091e450();
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_0091ec90(undefined4 param_1_00,byte param_1)

{
  FUN_0091e450();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0091ecb0(undefined4 param_1_00,byte param_1)

{
  FUN_0091e4d0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0091ecd0(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdcd18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0048a2df(param_1);
  *param_1_00 = wxUpdateUIEvent::vftable;
  *(undefined *)(param_1_00 + 0x17) = *(undefined *)(param_1 + 0x5c);
  *(undefined *)((int)param_1_00 + 0x5d) = *(undefined *)(param_1 + 0x5d);
  *(undefined *)((int)param_1_00 + 0x5e) = *(undefined *)(param_1 + 0x5e);
  *(undefined *)((int)param_1_00 + 0x5f) = *(undefined *)(param_1 + 0x5f);
  *(undefined *)(param_1_00 + 0x18) = *(undefined *)(param_1 + 0x60);
  *(undefined *)((int)param_1_00 + 0x61) = *(undefined *)(param_1 + 0x61);
  *(undefined *)((int)param_1_00 + 0x62) = *(undefined *)(param_1 + 0x62);
  param_1_00[0x1f] = 7;
  param_1_00[0x1e] = 0;
  *(undefined2 *)(param_1_00 + 0x1a) = 0;
  local_4 = 0;
  FID_conflict_assign(param_1 + 100,0,0xffffffff);
  param_1_00[0x20] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_0091ed90(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x88);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0091ecd0(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __fastcall FUN_0091ee00(undefined4 *param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7a7b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00845b70(DAT_0323f878 ^ (uint)&stack0xffffffb8);
  *param_1 = wxWindowBase::vftable;
  param_1[0x10] = 0xfffffffd;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  param_1[0x12] = wxListBase::vftable;
  FUN_0086ad40(0);
  param_1[0x12] = wxWindowList::vftable;
  local_4._0_1_ = 2;
  FUN_009743d0();
  param_1[0x22] = 0;
  param_1[0x21] = wxFont::vftable;
  local_4._0_1_ = 4;
  FUN_00453f4b();
  local_4._0_1_ = 5;
  FUN_00453f4b();
  local_4._0_1_ = 6;
  FUN_009931f0();
  param_1[0x31] = 0;
  param_1[0x30] = wxAcceleratorTable::vftable;
  param_1[0x40] = 7;
  param_1[0x3f] = 0;
  *(undefined2 *)(param_1 + 0x3b) = 0;
  param_1[0x41] = 0;
  param_1[0x46] = 0;
  param_1[0x45] = wxPalette::vftable;
  param_1[0x48] = 0;
  param_1[0x49] = 0;
  param_1[0x4c] = 0;
  param_1[0x4d] = 0;
  local_4._0_1_ = 10;
  param_1[0x11] = 0;
  FUN_00994360(0xffffffff);
  param_1[0x1a] = 0xffffffff;
  param_1[0x18] = 0xffffffff;
  param_1[0x1b] = 0xffffffff;
  param_1[0x19] = 0xffffffff;
  param_1[0x4c] = DAT_03238d04;
  uVar2 = DAT_03238d08;
  *(byte *)((int)param_1 + 0xdd) = *(byte *)((int)param_1 + 0xdd) & 0xfc;
  param_1[0x4d] = uVar2;
  param_1[0x1c] = param_1;
  param_1[0x1d] = 0;
  param_1[0x38] = 0;
  param_1[0x39] = 0;
  param_1[0x44] = 0;
  param_1[0x33] = 0;
  param_1[0x34] = 0;
  param_1[0x35] = 0;
  param_1[0x36] = 0;
  *(byte *)(param_1 + 0x37) = *(byte *)(param_1 + 0x37) & 8 | 6;
  param_1[0x1e] = 0;
  param_1[0x32] = 0;
  param_1[0x2d] = 0;
  *(undefined *)(param_1 + 0x47) = 0;
  param_1[0x48] = DAT_03238d04;
  param_1[0x49] = DAT_03238d08;
  param_1[0x4a] = 0;
  param_1[0x4b] = 0;
  FUN_004325b6(L"window-default-variant");
  local_4._0_1_ = 0xb;
  cVar1 = FUN_008970b0(local_30);
  local_4._0_1_ = 10;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (cVar1 != '\0') {
    FUN_004325b6(L"window-default-variant");
    local_4 = CONCAT31(local_4._1_3_,0xc);
    uVar2 = FUN_00897050(local_30);
    param_1[0x4b] = uVar2;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  *(byte *)(param_1 + 0x37) = *(byte *)(param_1 + 0x37) & 0xf7;
  *(undefined *)(param_1 + 0x43) = 0;
  param_1[0x4e] = 0;
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_0091f080(undefined4 param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd7ac1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  if (DAT_032e8c44 != (undefined4 *)0x0) {
    iVar2 = (**(code **)*DAT_032e8c44)(local_30,param_1_00,uVar1);
    local_4 = 1;
    if (param_1 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall
FUN_0091f140(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,int param_3,
            undefined4 param_4,char param_5)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccd68;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840a00(&param_3,param_1,2);
  FUN_0083e8f0(param_2,param_1,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20();
  FUN_0083fe90(param_1_00,uVar3,param_2,uVar4);
  iVar1 = param_3;
  if ((param_5 != '\0') && (param_3 != 0)) {
    _free(*(void **)(param_3 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



int * FUN_0091f220(undefined4 param_1,int *param_2)

{
  uint uVar1;
  undefined *puVar2;
  undefined4 uVar3;
  undefined local_34 [4];
  uint local_30;
  void *pvStack_2c;
  void *pvStack_24;
  int *piStack_14;
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  FUN_004325b6(L"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
  uVar3 = 0;
  puVar2 = local_34;
  local_4 = 0;
  (**(code **)(*param_2 + 600))(&local_30,&param_2,puVar2,0,0,0,uVar1);
  *piStack_14 = iStack_10;
  piStack_14[1] = (int)puVar2;
  _free(pvStack_2c);
  if (7 < local_30) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uVar3);
  }
  *piStack_14 = (*piStack_14 / 0x1a + 1) / 2;
  ExceptionList = pvStack_24;
  return piStack_14;
}



// Library Function - Single Match
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

CNoTrackObject * __cdecl CThreadLocal<class__AFX_THREAD_STATE>::CreateObject(void)

{
  uint uVar1;
  CNoTrackObject *pCVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x164);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    pCVar2 = (CNoTrackObject *)FUN_00446436(uVar1);
    ExceptionList = local_c;
    return pCVar2;
  }
  ExceptionList = local_c;
  return (CNoTrackObject *)0x0;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

int * __thiscall FUN_0091f350(int *param_1,int *param_2)

{
  char cVar1;
  int *piVar2;
  undefined auStack_8 [8];
  
  if (param_1 != (int *)0x0) {
    do {
      cVar1 = (**(code **)(*param_1 + 0x11c))();
      if (cVar1 != '\0') break;
      param_1 = (int *)param_1[0x11];
    } while (param_1 != (int *)0x0);
  }
  cVar1 = (**(code **)(param_1[0x21] + 0x10))();
  if (cVar1 != '\0') {
    FUN_0091f220(param_2,param_1);
    return param_2;
  }
  if ((_DAT_032bfc20 & 1) == 0) {
    _DAT_032bfc20 = _DAT_032bfc20 | 1;
    DAT_032bfc18 = 0;
    DAT_032bfc1c = 0;
  }
  else if (DAT_032bfc18 != 0) goto LAB_0091f3de;
  piVar2 = (int *)FUN_0091f220(auStack_8,param_1);
  DAT_032bfc18 = *piVar2;
  DAT_032bfc1c = piVar2[1];
LAB_0091f3de:
  *param_2 = DAT_032bfc18;
  param_2[1] = DAT_032bfc1c;
  return param_2;
}



int * FUN_0091f410(int *param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int local_8;
  int local_4;
  
  FUN_0091f350(&local_8);
  iVar1 = DAT_03238d10;
  iVar2 = *param_2;
  *param_1 = DAT_03238d0c;
  param_1[1] = iVar1;
  if (iVar2 != -1) {
    iVar2 = MulDiv(iVar2,local_8,4);
    *param_1 = iVar2;
  }
  if (param_2[1] != -1) {
    iVar2 = MulDiv(param_2[1],local_4,8);
    param_1[1] = iVar2;
  }
  return param_1;
}



undefined4 __fastcall FUN_0091f480(int param_1)

{
  uint uVar1;
  int *piVar2;
  void **ppvVar3;
  char cVar4;
  int *piVar5;
  int iVar6;
  uint uStack_a0;
  void *pvStack_9c;
  uint uStack_7c;
  void *pvStack_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7b06;
  uVar1 = *(uint *)(param_1 + 0xe4);
  iVar6 = *(int *)(param_1 + 0x54);
  ppvVar3 = &local_c;
  local_c = ExceptionList;
  while( true ) {
    ExceptionList = ppvVar3;
    if (iVar6 == 0) {
      ExceptionList = local_c;
      return 1;
    }
    piVar2 = *(int **)(iVar6 + 8);
    piVar5 = (int *)(**(code **)(*piVar2 + 0x134))();
    if ((piVar5 != (int *)0x0) && (cVar4 = (**(code **)(*piVar5 + 0x58))(), cVar4 == '\0')) break;
    if (((uVar1 & 1) != 0) && (cVar4 = (**(code **)(*piVar2 + 0x13c))(), cVar4 == '\0')) {
      ExceptionList = local_c;
      return 0;
    }
    iVar6 = *(int *)(iVar6 + 0xc);
    ppvVar3 = (void **)ExceptionList;
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar4 = FUN_00846b30(2);
  if (cVar4 != '\0') {
    FUN_004325b6();
    uStack_4 = 0;
    FUN_0043c211();
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    iVar6 = FUN_0084a340();
    if (iVar6 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    uStack_4._0_1_ = 2;
    __time64((__time64_t *)0x0);
    GetCurrentThreadId();
    uStack_4._0_1_ = 3;
    FUN_008854f0();
    FUN_0083fe90();
    uStack_4._0_1_ = 2;
    FUN_00842440();
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    FUN_0081b5bc();
    _free(pvStack_9c);
    if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_4 = 0xffffffff;
    _free(pvStack_78);
    if (7 < uStack_7c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  FUN_00845310();
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_0091f6e0(int *param_1_00,char param_1)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bd7b56;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = param_1_00[0x33];
  if (iVar1 != 0) {
    if ((((*(char *)(iVar1 + 0x2c) == '\0') || (*(char *)(iVar1 + 0x54) == '\0')) ||
        (*(char *)(iVar1 + 0xcc) == '\0')) || (*(char *)(iVar1 + 0xf4) == '\0')) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar3 = FUN_00846b30(6);
      if (cVar3 != '\0') {
        FUN_0081c0f1();
        local_4 = 0;
        (**(code **)(*param_1_00 + 0x60))();
        FUN_00432231();
        uStack_8._0_1_ = 2;
        FUN_008423d0();
        uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,3);
        (**(code **)*param_1_00)();
        local_4._0_1_ = 4;
        FUN_0091f140();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_00842440();
        FUN_0040159c();
        local_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    else if ((*(int *)(iVar1 + 0xb8) == 1) && (*(int *)(iVar1 + 0xe0) == 1)) {
      (**(code **)(*param_1_00 + 0x288))();
    }
    else {
      (**(code **)(*param_1_00 + 0x288))();
    }
  }
  if (param_1 != '\0') {
    for (iVar1 = param_1_00[0x15]; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
      piVar2 = *(int **)(iVar1 + 8);
      cVar3 = (**(code **)(*piVar2 + 0x11c))();
      if ((cVar3 == '\0') && (piVar2[0x33] != 0)) {
        (**(code **)(*piVar2 + 0x1e0))();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0091f8e0(int *param_1)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  uint local_7c;
  void *local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd806b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    local_4._0_1_ = 1;
    FUN_008423d0();
    local_4._0_1_ = 2;
    FUN_00840920();
    FUN_008854f0();
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    _free(local_78);
    if (7 < local_7c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bfb84 != '\0')) {
    FUN_00840480();
  }
  DAT_032bfb84 = 1;
  piVar2 = (int *)FUN_009116e0();
  if (piVar2 != (int *)0x0) {
    (**(code **)(*piVar2 + 0x26c))();
    ppiVar3 = (int **)operator_new(8);
    *ppiVar3 = piVar2;
    ppiVar3[1] = (int *)DAT_032bfb7c;
    DAT_032bfb7c = ppiVar3;
  }
  (**(code **)(*param_1 + 0x268))();
  DAT_032bfb80 = param_1;
  DAT_032bfb84 = 0;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0091fac0(int *param_1)

{
  char cVar1;
  int *piVar2;
  uint local_104;
  void *local_100;
  uint uStack_e0;
  void *pvStack_dc;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7bbf;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    local_4._0_1_ = 1;
    FUN_008423d0();
    local_4._0_1_ = 2;
    FUN_00840920();
    FUN_008854f0();
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    _free(local_100);
    if (7 < local_104) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (DAT_032bfb84 != '\0') {
      FUN_00840480();
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      piVar2 = (int *)FUN_009116e0();
      if (piVar2 != param_1) {
        FUN_008402e0();
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bfb80 != param_1)) {
        FUN_008402e0();
      }
    }
  }
  DAT_032bfb84 = 1;
  (**(code **)(*param_1 + 0x26c))();
  DAT_032bfb80 = (int *)0x0;
  if (DAT_032bfb7c != (int **)0x0) {
    (**(code **)(**DAT_032bfb7c + 0x268))();
    DAT_032bfb80 = *DAT_032bfb7c;
    DAT_032bfb7c = (int **)DAT_032bfb7c[1];
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  DAT_032bfb84 = 0;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    FUN_0081c0f1();
    local_4 = 3;
    FUN_004325b6();
    local_4._0_1_ = 4;
    FUN_008423d0();
    local_4._0_1_ = 5;
    FUN_009116e0();
    FUN_00840920();
    FUN_008854f0();
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,4);
    FUN_00842440();
    _free(pvStack_dc);
    if (7 < uStack_e0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0091fe20(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x0091fe28. Too many branches
                    // WARNING: Treating indirect jump as call
  (***(code ***)(param_1 + 8))();
  return;
}



undefined ** FUN_0091fe30(void)

{
  return &PTR_u_wxColour_032399e8;
}



void FUN_0091fe40(char *param_1,char *param_2,char *param_3,char param_4)

{
  char cVar1;
  
  cVar1 = -(param_4 != '\0');
  *param_3 = cVar1;
  *param_2 = cVar1;
  *param_1 = cVar1;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x14);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00453f4b(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_0091fed0(byte *param_1,byte *param_2,byte *param_3,double param_4,double param_5,
                 double param_6)

{
  byte bVar1;
  
  bVar1 = FUN_008ffcc0((double)(uint)*param_3 * param_6 +
                       (double)(uint)*param_2 * param_5 + (double)(uint)*param_1 * param_4);
  *param_3 = bVar1;
  *param_2 = bVar1;
  *param_1 = bVar1;
  return;
}



ushort FUN_0091ff30(byte param_1,byte param_2,double param_3)

{
  double dVar1;
  double dVar2;
  undefined2 in_FPUControlWord;
  
  dVar1 = (double)((uint)param_1 - (uint)param_2) * param_3 + (double)(uint)param_2;
  dVar2 = 0.0;
  if ((0.0 < dVar1 == NAN(dVar1)) || (dVar2 = 255.0, 255.0 <= dVar1)) {
    dVar1 = dVar2;
  }
  param_1 = (byte)(int)ROUND(dVar1);
  return CONCAT11((char)((ushort)in_FPUControlWord >> 8),param_1) | 0xc00;
}



void FUN_0091ffa0(undefined *param_1,undefined *param_2,undefined *param_3,int param_4)

{
  double dVar1;
  undefined uVar2;
  undefined4 extraout_EDX;
  undefined4 extraout_EDX_00;
  undefined *extraout_EDX_01;
  
  if (param_4 != 100) {
    if (param_4 < 1) {
      param_4 = 0;
    }
    else if (199 < param_4) {
      param_4 = 200;
    }
    dVar1 = ((double)param_4 - 100.0) / 100.0;
    if (param_4 < 0x65) {
      dVar1 = dVar1 + 1.0;
      param_4 = 0;
    }
    else {
      param_4 = 0xff;
      dVar1 = 1.0 - dVar1;
    }
    uVar2 = FUN_0091ff30(*param_1,param_4,dVar1);
    *param_1 = uVar2;
    uVar2 = FUN_0091ff30(*param_2,extraout_EDX,dVar1);
    *param_2 = uVar2;
    uVar2 = FUN_0091ff30(*param_3,extraout_EDX_00,dVar1);
    *extraout_EDX_01 = uVar2;
  }
  return;
}



undefined4 __thiscall FUN_00920050(int *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined uVar1;
  undefined4 uStack_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0;
  uVar1 = (**(code **)(*param_1 + 0x10))();
  local_4 = CONCAT31(local_4._1_3_,uVar1);
  uVar1 = (**(code **)(*param_1 + 0x14))();
  uStack_8 = CONCAT31(uStack_8._1_3_,uVar1);
  uVar1 = (**(code **)(*param_1 + 0x18))();
  uStack_c = CONCAT31(uStack_c._1_3_,uVar1);
  FUN_0091ffa0(&local_4,&uStack_8,&uStack_c,param_3);
  FUN_004561e7(local_4,uStack_8,uStack_c,0xff);
  return param_2;
}



undefined4 * __thiscall FUN_009200d0(undefined4 *param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd7c43;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  local_4 = 0;
  *param_1_00 = wxColourVariantData::vftable;
  FUN_00453f4b(uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (param_1_00 + 2 != param_1) {
    FUN_0083ea60(param_1);
  }
  param_1_00[4] = param_1[2];
  *(undefined *)(param_1_00 + 5) = *(undefined *)(param_1 + 3);
  *(undefined *)((int)param_1_00 + 0x15) = *(undefined *)((int)param_1 + 0xd);
  *(undefined *)((int)param_1_00 + 0x16) = *(undefined *)((int)param_1 + 0xe);
  *(undefined *)((int)param_1_00 + 0x17) = *(undefined *)((int)param_1 + 0xf);
  *(undefined *)(param_1_00 + 6) = *(undefined *)(param_1 + 4);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_00920170(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x1c);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009200d0(param_1 + 8);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_009201e0(undefined *param_1,undefined *param_2,undefined *param_3,undefined4 param_4)

{
  undefined uVar1;
  undefined4 extraout_EDX;
  undefined4 extraout_EDX_00;
  undefined *extraout_EDX_01;
  
  uVar1 = FUN_0091ff30(*param_1,param_4,0x3fd999999999999a);
  *param_1 = uVar1;
  uVar1 = FUN_0091ff30(*param_2,extraout_EDX,0x3fd999999999999a);
  *param_2 = uVar1;
  uVar1 = FUN_0091ff30(*param_3,extraout_EDX_00,0x3fd999999999999a);
  *extraout_EDX_01 = uVar1;
  return;
}



undefined4 FUN_00920240(void)

{
  return DAT_032bfc24;
}



undefined4 * __thiscall FUN_00920250(undefined4 *param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7c6b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *param_1_00 = wxPrivate::wxAnyValueTypeOpsGeneric<class_wxColour>::DataHolder<class_wxColour>::
                vftable;
  FUN_00453f4b(uVar1);
  local_4 = 0;
  if (param_1_00 + 1 != param_1) {
    FUN_0083ea60(param_1);
  }
  param_1_00[3] = param_1[2];
  *(undefined *)(param_1_00 + 4) = *(undefined *)(param_1 + 3);
  *(undefined *)((int)param_1_00 + 0x11) = *(undefined *)((int)param_1 + 0xd);
  *(undefined *)((int)param_1_00 + 0x12) = *(undefined *)((int)param_1 + 0xe);
  *(undefined *)((int)param_1_00 + 0x13) = *(undefined *)((int)param_1 + 0xf);
  *(undefined *)(param_1_00 + 5) = *(undefined *)(param_1 + 4);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_009202f0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxPrivate::wxAnyValueTypeOpsGeneric<class_wxColour>::DataHolder<class_wxColour>::
                vftable;
  param_1_00[1] = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall
FUN_00920320(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  
  FUN_00820e3f(param_4,param_1,3);
  FUN_00820e3f(param_3,param_1,2);
  FUN_00820e3f(param_2,param_1,1);
  uVar1 = FUN_008854f0();
  FUN_00853980(param_1_00,uVar1,param_3,param_4,param_1);
  return;
}



void FUN_00920380(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032bfc24;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_009203b0(undefined4 param_1,undefined4 *param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x18);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00920250(param_1);
    *param_2 = uVar2;
    ExceptionList = local_c;
    return;
  }
  *param_2 = 0;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00920430(int *param_1_00,undefined4 *param_1)

{
  undefined uVar1;
  undefined uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  bool bVar6;
  type_info *ptVar7;
  type_info *this;
  
  uVar5 = DAT_032bfc24;
  ptVar7 = (type_info *)___RTtypeid(param_1_00[4]);
  this = (type_info *)___RTtypeid(uVar5);
  bVar6 = type_info::operator==(this,ptVar7);
  if ((!bVar6) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  iVar3 = *param_1_00;
  iVar4 = *(int *)(iVar3 + 8);
  *param_1 = wxObject::vftable;
  param_1[1] = iVar4;
  if (iVar4 != 0) {
    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
  }
  param_1[2] = *(undefined4 *)(iVar3 + 0xc);
  *(undefined *)(param_1 + 3) = *(undefined *)(iVar3 + 0x10);
  *(undefined *)((int)param_1 + 0xd) = *(undefined *)(iVar3 + 0x11);
  *(undefined *)((int)param_1 + 0xe) = *(undefined *)(iVar3 + 0x12);
  uVar2 = *(undefined *)(iVar3 + 0x13);
  uVar1 = *(undefined *)(iVar3 + 0x14);
  *param_1 = wxColour::vftable;
  *(undefined *)((int)param_1 + 0xf) = uVar2;
  *(undefined *)(param_1 + 4) = uVar1;
  return;
}



undefined4 FUN_009204e0(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7cb4;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x1c);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00920430(local_20,0);
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar3 = FUN_009200d0(uVar3);
  }
  local_4 = 0xffffffff;
  if (pvVar2 != (void *)0x0) {
    local_20[0] = wxObject::vftable;
    FUN_0083e850(uVar1);
  }
  ExceptionList = local_c;
  return uVar3;
}



void FUN_00920580(int *param_1,undefined4 param_2)

{
  FUN_009203b0(*param_1 + 4,param_2);
  return;
}



undefined4 __thiscall FUN_009205a0(int param_1_00,int param_1)

{
  (**(code **)(**(int **)(param_1 + 0x10) + 8))(param_1);
  *(undefined4 *)(param_1 + 0x10) = DAT_032bfc24;
  FUN_009203b0(param_1_00 + 8,param_1);
  return 1;
}



undefined4 __thiscall FUN_009205d0(int *param_1_00,int *param_1)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 local_58 [2];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0ae2;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar2 = false;
  bVar1 = false;
  local_58[0] = 0;
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_00920664:
    bVar3 = true;
  }
  else {
    iVar4 = (**(code **)(*param_1 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffff98);
    puStack_8 = (undefined *)0x0;
    iVar5 = (**(code **)(*param_1_00 + 0x18))(local_58);
    uStack_4 = 1;
    bVar2 = true;
    bVar1 = true;
    local_58[0] = 3;
    if (*(int *)(iVar5 + 0x14) == *(int *)(iVar4 + 0x14)) {
      iVar4 = FUN_00850760(iVar4);
      if (iVar4 == 0) goto LAB_00920664;
    }
    bVar3 = false;
  }
  if (bVar1) {
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
  }
  uStack_4 = 0xffffffff;
  if (bVar2) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar3) {
    FUN_008402e0("..\\..\\src\\common\\colourcmn.cpp",0x1e,"wxColourVariantData::Eq",
                 "GetType() == data.GetType()",0);
  }
  if ((((*(char *)(param_1 + 5) == *(char *)(param_1_00 + 5)) &&
       (*(char *)((int)param_1 + 0x15) == *(char *)((int)param_1_00 + 0x15))) &&
      (*(char *)((int)param_1 + 0x17) == *(char *)((int)param_1_00 + 0x17))) &&
     ((*(char *)((int)param_1 + 0x16) == *(char *)((int)param_1_00 + 0x16) &&
      (*(char *)(param_1 + 6) == *(char *)(param_1_00 + 6))))) {
    uVar6 = 1;
  }
  else {
    uVar6 = 0;
  }
  ExceptionList = local_c;
  return uVar6;
}



undefined4 __thiscall
FUN_00920760(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint param_11;
  void *param_12;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd7cd8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840990(&param_5,param_1,4);
  FUN_00820e3f(param_4,param_1,3);
  FUN_00820e3f(param_3,param_1,2);
  FUN_00820e3f(param_2,param_1,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  uVar2 = FUN_00853980(param_1_00,uVar2,local_10,local_18,local_1c,uVar3);
  _free(param_12);
  if (7 < param_11) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_6);
  }
  ExceptionList = local_c;
  return uVar2;
}



char * __thiscall FUN_00920840(int *param_1_00,char *param_1,byte param_3)

{
  char cVar1;
  undefined uVar2;
  char *pcVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  bool bVar7;
  undefined auStack_80 [12];
  undefined4 uStack_74;
  char *pcStack_70;
  undefined *puStack_6c;
  char *pcStack_68;
  char *pcStack_64;
  undefined auStack_34 [24];
  uint uStack_1c;
  void *pvStack_18;
  char *local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd7d39;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_10 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  cVar1 = (**(code **)(*param_1_00 + 0x1c))();
  bVar7 = cVar1 == -1;
  if (((param_3 & 1) != 0) && (bVar7)) {
    pcStack_64 = auStack_34;
    pcStack_68 = (char *)0x9208c2;
    FUN_008f9430();
    local_4 = 1;
    pcVar3 = (char *)FUN_008510e0();
    if (param_1 != pcVar3) {
      pcStack_64 = (char *)0x0;
      puStack_6c = (undefined *)0x9208dc;
      pcStack_68 = pcVar3;
      FID_conflict_assign();
    }
    local_4 = local_4 & 0xffffff00;
    pcStack_64 = (char *)0x9208eb;
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      pcStack_64 = &UNK_009208ff;
      FUN_00a3f6a1();
    }
  }
  if (*(int *)(param_1 + 0x14) != 0) goto LAB_00920a3f;
  uVar4 = (**(code **)(*param_1_00 + 0x10))();
  uVar2 = (**(code **)(*param_1_00 + 0x18))();
  uVar5 = (**(code **)(*param_1_00 + 0x14))();
  if ((param_3 & 2) == 0) {
    if ((param_3 & 4) == 0) goto LAB_00920a3f;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (!bVar7)) {
      pcStack_64 = "isOpaque";
      pcStack_68 = "wxColourBase::GetAsString";
      puStack_6c = (undefined *)0xe5;
      pcStack_70 = "..\\..\\src\\common\\colourcmn.cpp";
      uStack_74 = 0x920a05;
      FUN_008402e0();
    }
    pcStack_64 = (char *)0x920a16;
    FUN_0081c0f1();
    local_4 = 4;
LAB_00920a2a:
    puStack_6c = auStack_34;
    pcStack_70 = (char *)0x920a31;
    pcStack_68 = (char *)(uVar4 & 0xff);
    pcStack_64 = (char *)(uVar5 & 0xff);
    FUN_00920320();
  }
  else {
    if (bVar7) {
      pcStack_64 = (char *)0x920954;
      FUN_0081c0f1();
      local_4 = 2;
      goto LAB_00920a2a;
    }
    pcStack_64 = (char *)0x920977;
    FUN_0081c0f1();
    local_4 = 3;
    uVar6 = (**(code **)(*param_1_00 + 0x1c))(3);
    FUN_00853b50(auStack_80,(double)(uVar6 & 0xff) / 255.0);
    FUN_00920760(auStack_34,(char *)(uVar4 & 0xff),uVar5 & 0xff,uVar2);
  }
  local_4 = local_4 & 0xffffff00;
  FUN_0081b5bc();
LAB_00920a3f:
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x14) == 0)) {
    pcStack_64 = "!colName.empty()";
    pcStack_68 = "wxColourBase::GetAsString";
    puStack_6c = (undefined *)0xee;
    pcStack_70 = "..\\..\\src\\common\\colourcmn.cpp";
    uStack_74 = 0x920a6c;
    FUN_00840480();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00920a90(undefined4 param_1,undefined4 *param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined local_78 [4];
  uint local_74;
  undefined4 local_64;
  uint local_60;
  void *local_5c;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4568;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_004325b6(*param_2);
  local_4 = 0;
  uVar1 = FUN_0084c0c0(local_54,0,param_3);
  local_4._0_1_ = 1;
  FUN_0084c0c0(local_78,0,param_3);
  local_4 = CONCAT31(local_4._1_3_,2);
  uVar1 = FUN_00850470(uVar1);
  _free(local_5c);
  if (7 < local_60) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_74);
  }
  local_60 = 7;
  local_64 = 0;
  local_74 = local_74 & 0xffff0000;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return uVar1;
}



void __thiscall FUN_00920bc0(int *param_1_00,int param_1)

{
  wchar_t wVar1;
  size_t _Size;
  char cVar2;
  int iVar3;
  wchar_t *pwVar4;
  undefined4 *puVar5;
  int iVar6;
  char *pcVar7;
  undefined **_Src;
  char acStack_130 [8];
  undefined4 uStack_128;
  char **local_f8;
  undefined4 local_f4;
  char *local_f0;
  undefined4 local_e8;
  int *local_e4;
  undefined **local_d8;
  char local_cc;
  undefined local_bc [104];
  undefined4 local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  int local_20;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7dc8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_f8;
  ExceptionList = &local_c;
  local_e4 = param_1_00;
  if (*(int *)(param_1 + 0x14) == 0) goto LAB_0092118c;
  local_f4 = &DAT_00d51174;
  iVar3 = FUN_00920a90();
  if (iVar3 == 0) {
    if ((3 < *(uint *)(param_1 + 0x14)) &&
       ((FUN_0081feb2(), local_f8 == (char **)0x61 || (FUN_0081feb2(), local_f8 == (char **)0x41))))
    {
      _Size = *(size_t *)(param_1 + 0x14);
      FUN_0084aa50();
      local_f0 = *local_f8;
      local_4 = 0;
      if (_Size != 0) {
        _memset(local_f0,0,_Size);
      }
      local_40 = 7;
      local_44 = 0;
      local_54 = (uint)local_54._2_2_ << 0x10;
      local_3c = (void *)0x0;
      pwVar4 = L"( %d , %d , %d , %";
      local_4 = CONCAT31(local_4._1_3_,1);
      do {
        wVar1 = *pwVar4;
        pwVar4 = pwVar4 + 1;
      } while (wVar1 != L'\0');
      FUN_00473ccc();
      FUN_00842300();
      FID_conflict_append();
      if (DAT_032bd4d4 == 0) {
        DAT_032bd4d4 = FUN_00861440();
      }
      puVar5 = (undefined4 *)FUN_00432413();
      FUN_00432231();
      iVar3 = FUN_00855d60();
      pcVar7 = *(char **)*puVar5;
      local_4._0_1_ = 4;
      if (DAT_032bd4d4 == 0) {
        DAT_032bd4d4 = FUN_00861440();
      }
      iVar6 = FUN_00850390();
      if (iVar6 == 0) {
        _Src = &PTR_02bd3fc0;
      }
      else {
        _Src = (undefined **)(*(int *)(iVar3 + 4) + iVar6);
      }
      uStack_128 = 0x920da1;
      iVar3 = FID_conflict__sscanf((char *)_Src,pcVar7);
      FUN_00432214();
      FUN_00432214();
      local_4._0_1_ = 1;
      thunk_FUN_0043c1dd();
      if (iVar3 == 4) {
        pcVar7 = local_f0;
        if (local_f0 != (char *)0x0) {
          do {
            cVar2 = *pcVar7;
            pcVar7 = pcVar7 + 1;
          } while (cVar2 != '\0');
        }
        FUN_0084b490();
        local_4 = CONCAT31(local_4._1_3_,5);
        if (local_20 != 0) {
          FUN_0081b3d8();
          cVar2 = FUN_008931c0();
          if (cVar2 == '\0') {
            FUN_00851a60();
            FUN_008517a0();
            cVar2 = FUN_00850d50();
            if (cVar2 != '\0') {
              FUN_008ffcc0();
              FUN_0040159c();
              FUN_0040159c();
              local_4 = 0xffffffff;
              thunk_FUN_0043c1dd();
              param_1_00 = local_e4;
              goto LAB_00920f78;
            }
          }
        }
        FUN_0040159c();
        FUN_0040159c();
      }
      else {
        _free(local_3c);
        if (7 < local_40) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        local_40 = 7;
        local_44 = 0;
        local_54 = local_54 & 0xffff0000;
      }
      local_4 = 0xffffffff;
      thunk_FUN_0043c1dd();
      goto LAB_0092118c;
    }
    if (*(uint *)(param_1 + 0x18) < 8) {
      iVar3 = param_1 + 4;
    }
    else {
      iVar3 = *(int *)(param_1 + 4);
    }
    iVar3 = FID_conflict__swscanf((wchar_t *)(iVar3 + 6),L"( %d , %d , %d )");
    if (iVar3 != 3) goto LAB_0092118c;
LAB_00920f78:
    if ((int)local_f4 < 0) {
      (**(code **)(*param_1_00 + 0x28))();
    }
    else {
      (**(code **)(*param_1_00 + 0x28))();
    }
  }
  else {
    FUN_0081feb2();
    if ((local_f0 == (char *)0x23) && (*(int *)(param_1 + 0x14) == 7)) {
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar3 = param_1 + 4;
      }
      else {
        iVar3 = *(int *)(param_1 + 4);
      }
      iVar3 = FID_conflict__swscanf((wchar_t *)(iVar3 + 2),L"%lx");
      if (iVar3 != 1) goto LAB_0092118c;
      local_e8 = CONCAT31(local_e8._1_3_,(char)((uint)local_f0 >> 8));
      local_f4 = (undefined *)CONCAT31(local_f4._1_3_,(char)((uint)local_f0 >> 0x10));
      (**(code **)(*param_1_00 + 0x28))();
    }
    else if (DAT_032bf350 != 0) {
      FUN_008f9160();
      local_4 = 6;
      if (local_cc != '\0') {
        (**(code **)(*param_1_00 + 0x28))();
      }
      local_4 = 0xffffffff;
      local_d8 = wxObject::vftable;
      FUN_0083e850();
    }
  }
  cVar2 = (**(code **)(*param_1_00 + 0x24))();
  if (cVar2 == '\0') {
    local_f0 = acStack_130;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 != '\0') {
      FUN_0081c0f1();
      local_f0 = acStack_130;
      local_4 = 7;
      FUN_004325a0(param_1);
      local_4._0_1_ = 8;
      FUN_008423d0(6,"..\\..\\src\\common\\colourcmn.cpp",0xbd,"wxColourBase::FromString",
                   &DAT_00d25fa0);
      local_4._0_1_ = 10;
      FUN_00848780(local_bc);
      local_4 = CONCAT31(local_4._1_3_,7);
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
LAB_0092118c:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009212a0(int param_1_00,int param_1)

{
  if (param_1 != 0x5a) {
    if ((0x5c < param_1) && (param_1 < 0x5f)) {
      *(undefined *)(param_1_00 + 0x14) = 1;
      return;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\msw\\font.cpp",0x221,"wxNativeFontInfo::SetStyle","Assert failure",
                   "unknown font style");
    }
  }
  *(undefined *)(param_1_00 + 0x14) = 0;
  return;
}



void __thiscall FUN_009212f0(int param_1_00,int param_1)

{
  if (param_1 != 0x5a) {
    if (param_1 == 0x5b) {
      *(undefined4 *)(param_1_00 + 0x10) = 300;
      return;
    }
    if (param_1 == 0x5c) {
      *(undefined4 *)(param_1_00 + 0x10) = 700;
      return;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\msw\\font.cpp",0x234,"wxNativeFontInfo::SetWeight","Assert failure"
                   ,"unknown font weight");
    }
  }
  *(undefined4 *)(param_1_00 + 0x10) = 400;
  return;
}



void __thiscall FUN_00921360(int param_1_00,undefined param_1)

{
  *(undefined *)(param_1_00 + 0x15) = param_1;
  return;
}



void __thiscall FUN_00921370(int param_1_00,undefined4 param_1)

{
  switch(param_1) {
  case 0x46:
  case 0x4a:
    *(undefined *)(param_1_00 + 0x1b) = 0x20;
    *(undefined2 *)(param_1_00 + 0x1c) = 0;
    return;
  case 0x47:
    *(undefined *)(param_1_00 + 0x1b) = 0x50;
    *(undefined2 *)(param_1_00 + 0x1c) = 0;
    return;
  case 0x48:
    *(undefined *)(param_1_00 + 0x1b) = 0x10;
    *(undefined2 *)(param_1_00 + 0x1c) = 0;
    return;
  case 0x49:
    *(undefined *)(param_1_00 + 0x1b) = 0x40;
    *(undefined2 *)(param_1_00 + 0x1c) = 0;
    return;
  case 0x4b:
  case 0x4c:
    *(undefined *)(param_1_00 + 0x1b) = 0x30;
    *(undefined2 *)(param_1_00 + 0x1c) = 0;
    return;
  case 0x4d:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\msw\\font.cpp",0x26d,"wxNativeFontInfo::SetFamily","Assert failure"
                   ,"invalid font family");
      return;
    }
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\msw\\font.cpp",0x271,"wxNativeFontInfo::SetFamily",
                   "ff_family != (0<<4)","unknown wxFontFamily");
    }
  }
  return;
}



void __fastcall FUN_00921450(undefined4 *param_1)

{
  *param_1 = wxFont::vftable;
  FUN_008f7630();
  return;
}



undefined4 __fastcall FUN_00921460(int param_1)

{
  if ((*(int *)(param_1 + 4) != 0) && (*(int *)(*(int *)(param_1 + 4) + 0xc) == 0)) {
    return 1;
  }
  return 0;
}



uint __fastcall FUN_00921480(int *param_1)

{
  uint uVar1;
  
  uVar1 = (**(code **)(*param_1 + 0x10))();
  if ((char)uVar1 != '\0') {
    return CONCAT31((int3)((uint)param_1[1] >> 8),*(undefined *)(param_1[1] + 8));
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar1 = FUN_00840480("..\\..\\src\\msw\\font.cpp",0x3c7,"wxFont::IsUsingSizeInPixels","IsOk()",
                         L"invalid font");
  }
  return uVar1 & 0xffffff00;
}



void FUN_009214d0(void)

{
  HDC hdc;
  
  hdc = GetDC((HWND)0x0);
  GetDeviceCaps(hdc,0x5a);
  ReleaseDC((HWND)0x0,hdc);
  FUN_00a49750();
  return;
}



void __fastcall FUN_00921520(int *param_1)

{
  HDC hdc;
  int iVar1;
  
  hdc = GetDC((HWND)0x0);
  GetDeviceCaps(hdc,0x5a);
  ReleaseDC((HWND)0x0,hdc);
  iVar1 = FUN_00a49750();
  *param_1 = -iVar1;
  return;
}



void __thiscall FUN_00921570(int *param_1_00,int *param_1)

{
  uint uVar1;
  
  uVar1 = param_1[1] >> 0x1f;
  *param_1_00 = -((param_1[1] ^ uVar1) - uVar1);
  param_1_00[1] = *param_1;
  return;
}



char __fastcall FUN_009215a0(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    return (-(*(char *)(param_1[1] + 0x24) != '\0') & 3U) + 0x5a;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\font.cpp",0x3d3,"wxFont::GetStyle","IsOk()",L"invalid font");
  }
  return '_';
}



char __fastcall FUN_00921600(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\font.cpp",0x3da,"wxFont::GetWeight","IsOk()",L"invalid font");
    }
    return ']';
  }
  if (*(int *)(param_1[1] + 0x20) < 0x12d) {
    return '[';
  }
  return (599 < *(int *)(param_1[1] + 0x20)) * '\x02' + 'Z';
}



uint __fastcall FUN_00921670(int *param_1)

{
  uint uVar1;
  
  uVar1 = (**(code **)(*param_1 + 0x10))();
  if ((char)uVar1 != '\0') {
    return CONCAT31((int3)((uint)param_1[1] >> 8),*(char *)(param_1[1] + 0x25) != '\0');
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar1 = FUN_00840480("..\\..\\src\\msw\\font.cpp",0x3e1,"wxFont::GetUnderlined","IsOk()",
                         L"invalid font");
  }
  return uVar1 & 0xffffff00;
}



undefined4 __fastcall FUN_009216c0(int *param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    uVar2 = FUN_00984490(*(undefined *)(param_1[1] + 0x27));
    return uVar2;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\font.cpp",0x3ef,"wxFont::GetEncoding","IsOk()",L"invalid font");
  }
  return 0;
}



undefined4 __fastcall FUN_00921710(int *param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    uVar2 = FUN_009214d0();
    return uVar2;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\font.cpp",0x3b9,"wxFont::GetPointSize","IsOk()",L"invalid font")
    ;
  }
  return 0;
}



void __thiscall FUN_00921760(int *param_1,undefined4 *param_2)

{
  uint uVar1;
  undefined4 uVar2;
  char cVar3;
  uint uVar4;
  
  cVar3 = (**(code **)(*param_1 + 0x10))();
  if (cVar3 != '\0') {
    uVar1 = *(uint *)(param_1[1] + 0x10);
    uVar2 = *(undefined4 *)(param_1[1] + 0x14);
    uVar4 = (int)uVar1 >> 0x1f;
    param_2[1] = (uVar1 ^ uVar4) - uVar4;
    *param_2 = uVar2;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\font.cpp",0x3c0,"wxFont::GetPixelSize","IsOk()",L"invalid font")
    ;
  }
  uVar2 = DAT_03238d08;
  *param_2 = DAT_03238d04;
  param_2[1] = uVar2;
  return;
}



void __fastcall FUN_009217e0(void *param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  _memset(param_1,0,0x5c);
  FUN_0043c211("msw.font.no-proof-quality");
  local_4 = 0;
  iVar2 = FUN_00897050(local_30,uVar1);
  *(byte *)((int)param_1 + 0x1a) = (-(iVar2 != 0) & 0xfeU) + 2;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00921870(int param_1_00,undefined4 param_1)

{
  FUN_004325b6(param_1_00 + 0x1c);
  return param_1;
}



undefined4 __fastcall FUN_00921890(int param_1)

{
  wchar_t *_Source;
  wchar_t wVar1;
  int *piVar2;
  wchar_t *pwVar3;
  uint uVar4;
  int iVar5;
  size_t _Count;
  int local_c [2];
  char local_4;
  
  piVar2 = (int *)FUN_00432231(local_c);
  iVar5 = *piVar2;
  if (*(uint *)(iVar5 + 0x18) < 8) {
    iVar5 = iVar5 + 4;
  }
  else {
    iVar5 = *(int *)(iVar5 + 4);
  }
  _Source = (wchar_t *)(iVar5 + piVar2[1] * 2);
  pwVar3 = _Source;
  do {
    wVar1 = *pwVar3;
    pwVar3 = pwVar3 + 1;
  } while (wVar1 != L'\0');
  uVar4 = (int)pwVar3 - (int)(_Source + 1) >> 1;
  _Count = 0x1f;
  if (uVar4 < 0x20) {
    _Count = uVar4;
  }
  _wcsncpy((wchar_t *)(param_1 + 0x1c),_Source,_Count);
  ((wchar_t *)(param_1 + 0x1c))[_Count] = L'\0';
  if ((local_4 != '\0') && (local_c[0] != 0)) {
    _free(*(void **)(local_c[0] + 0x1c));
    if (7 < *(uint *)(local_c[0] + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(local_c[0] + 4));
    }
    *(undefined4 *)(local_c[0] + 0x18) = 7;
    *(undefined4 *)(local_c[0] + 0x14) = 0;
    *(undefined2 *)(local_c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_c[0]);
  }
  return 1;
}



void __thiscall FUN_00921950(int param_1_00,undefined4 param_1)

{
  char cVar1;
  int *piVar2;
  undefined auStack_64 [3];
  char cStack_61;
  undefined local_60 [4];
  undefined4 uStack_5c;
  uint uStack_48;
  void *pvStack_44;
  undefined local_3c [4];
  uint local_38;
  int local_28;
  uint local_24;
  void *local_20;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd7e10;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_64;
  ExceptionList = &local_c;
  local_24 = 7;
  local_28 = 0;
  local_38 = local_38 & 0xffff0000;
  local_20 = (void *)0x0;
  local_18 = 0xffffffff;
  local_14 = 0;
  local_4 = 0;
  cVar1 = FUN_00984670(param_1,local_3c,DAT_0323f878 ^ (uint)&stack0xffffff90);
  if (cVar1 == '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = CONCAT31(local_4._1_3_,1);
    piVar2 = (int *)FUN_009796d0();
    cStack_61 = (**(code **)(*piVar2 + 0xc))(param_1,local_3c,local_60,1);
    _free(pvStack_44);
    if (7 < uStack_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_5c);
    }
    if (cStack_61 == '\0') {
      local_14 = 1;
    }
    else if (local_28 != 0) {
      FUN_00921890(local_3c);
    }
  }
  *(undefined *)(param_1_00 + 0x17) = (undefined)local_14;
  _free(local_20);
  if (7 < local_24) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_38);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00921a90(undefined4 param_1_00,void **param_1,undefined4 param_2,undefined4 param_3,
            void **param_4,undefined4 param_5,undefined4 param_6)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  void **ppvVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7e50;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)FUN_00847c00(param_4,param_1,3);
  local_4 = 0;
  puVar2 = (undefined4 *)FUN_00847c00(param_2,param_1,1);
  local_4._0_1_ = 1;
  FUN_0083e8f0(param_6,param_1,5);
  FUN_00843020(param_5,param_1,4);
  uVar3 = *(undefined4 *)*puVar1;
  FUN_00820e3f(param_3,param_1,2);
  uVar3 = FUN_008854f0(*(undefined4 *)*puVar2,param_5,uVar3,param_6,param_2);
  FUN_0083fe90(param_1_00,uVar3);
  local_4 = (uint)local_4._1_3_ << 8;
  ppvVar4 = (void **)FUN_00850350();
  if (param_1 != ppvVar4) {
    *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + -1;
    if (*(short *)(param_1 + 2) == 0) {
      if (*(char *)((int)param_1 + 10) != '\0') {
        _free(*param_1);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_1);
    }
    FUN_00850350();
  }
  local_4 = 0xffffffff;
  ppvVar4 = (void **)FUN_00850350();
  if (param_4 != ppvVar4) {
    *(short *)(param_4 + 2) = *(short *)(param_4 + 2) + -1;
    if (*(short *)(param_4 + 2) == 0) {
      if (*(char *)((int)param_4 + 10) != '\0') {
        _free(*param_4);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_4);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_00921c00(undefined4 *param_1_00,undefined4 *param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd7e78;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  local_4 = 0;
  *param_1_00 = wxFontRefData::vftable;
  FUN_009217e0(uVar1);
  param_1_00[3] = param_2;
  puVar3 = param_1_00 + 4;
  for (iVar2 = 0x17; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar3 = *param_1;
    param_1 = param_1 + 1;
    puVar3 = puVar3 + 1;
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00921c80(undefined4 *param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd7e78;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  local_4 = 0;
  *param_1_00 = wxFontRefData::vftable;
  FUN_009217e0(uVar1);
  param_1_00[3] = 0;
  puVar3 = (undefined4 *)(param_1 + 0x10);
  puVar4 = param_1_00 + 4;
  for (iVar2 = 0x17; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar4 = *puVar3;
    puVar3 = puVar3 + 1;
    puVar4 = puVar4 + 1;
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00921cf0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0083e850(DAT_0323f878 ^ (uint)&stack0xffffffec);
  pvVar1 = operator_new(0x6c);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_00921c00(param_1,param_2);
  }
  param_1_00[1] = iVar2;
  local_4 = 0xffffffff;
  (**(code **)(*param_1_00 + 0x14))();
  ExceptionList = local_c;
  return;
}



undefined4 FUN_00921d70(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x6c);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00921c80(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __fastcall FUN_00921de0(int param_1)

{
  char cVar1;
  HFONT pHVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pHVar2 = CreateFontIndirectW((LOGFONTW *)(param_1 + 0x10));
  *(HFONT *)(param_1 + 0xc) = pHVar2;
  if (pHVar2 == (HFONT)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = local_c;
  return 1;
}



void __fastcall FUN_00921f00(int param_1)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(HGDIOBJ *)(param_1 + 0xc) != (HGDIOBJ)0x0) {
    BVar2 = DeleteObject(*(HGDIOBJ *)(param_1 + 0xc));
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    *(undefined4 *)(param_1 + 0xc) = 0;
  }
  ExceptionList = local_c;
  return;
}



undefined __fastcall FUN_00922010(int param_1)

{
  if (*(int *)(param_1 + 4) == 0) {
    return 0;
  }
  FUN_00921f00();
  return 1;
}



void __fastcall FUN_00922030(int param_1)

{
  HDC hdc;
  int iVar1;
  
  FUN_00921f00();
  hdc = GetDC((HWND)0x0);
  GetDeviceCaps(hdc,0x5a);
  ReleaseDC((HWND)0x0,hdc);
  iVar1 = FUN_00a49750();
  *(int *)(param_1 + 0x10) = -iVar1;
  *(undefined *)(param_1 + 8) = 0;
  return;
}



void __thiscall FUN_00922090(int param_1_00,int *param_1)

{
  uint uVar1;
  
  if (*param_1 < 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\msw\\font.cpp",0xb8,"wxFontRefData::SetPixelSize",
                   "pixelSize.GetWidth() >= 0","negative font width");
    }
  }
  else {
    if (param_1[1] != 0) {
      FUN_00921f00();
      uVar1 = param_1[1] >> 0x1f;
      *(uint *)(param_1_00 + 0x10) = -((param_1[1] ^ uVar1) - uVar1);
      *(int *)(param_1_00 + 0x14) = *param_1;
      *(undefined *)(param_1_00 + 8) = 1;
      return;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\msw\\font.cpp",0xb9,"wxFontRefData::SetPixelSize",
                   "pixelSize.GetHeight() != 0","zero font height");
      return;
    }
  }
  return;
}



void __thiscall
FUN_00922130(int param_1_00,undefined4 param_1,undefined4 param_2,char param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined param_7,int param_8,undefined4 param_9)

{
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  *(char *)(param_1_00 + 8) = param_3;
  if (param_3 == '\0') {
    FUN_00922030(param_1);
  }
  else {
    FUN_00922090(param_2);
  }
  FUN_00921f00();
  FUN_009212a0(param_5);
  FUN_00921f00();
  FUN_009212f0(param_6);
  FUN_00921f00();
  *(undefined *)(param_1_00 + 0x25) = param_7;
  FUN_00921f00();
  FUN_00921370(param_4);
  if (*(int *)(param_8 + 0x14) != 0) {
    FUN_00921f00();
    FUN_00921890(param_8);
  }
  FUN_00921f00();
  FUN_00921950(param_9);
  return;
}



void __fastcall FUN_009221e0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdea08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxFontRefData::vftable;
  local_4 = 0;
  FUN_00921f00(uVar1);
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



void FUN_00922240(undefined4 param_1)

{
  FUN_0083eaa0();
  FUN_00921f00();
  FUN_00922030(param_1);
  return;
}



void FUN_00922270(undefined4 param_1)

{
  FUN_0083eaa0();
  FUN_00922090(param_1);
  return;
}



void FUN_00922290(undefined4 param_1)

{
  FUN_0083eaa0();
  FUN_00921f00();
  FUN_00921370(param_1);
  return;
}



void FUN_009222c0(undefined4 param_1)

{
  FUN_0083eaa0();
  FUN_00921f00();
  FUN_009212a0(param_1);
  return;
}



void FUN_009222f0(undefined4 param_1)

{
  FUN_0083eaa0();
  FUN_00921f00();
  FUN_009212f0(param_1);
  return;
}



void FUN_00922320(undefined4 param_1)

{
  char cVar1;
  
  FUN_0083eaa0();
  FUN_00921f00();
  cVar1 = FUN_00921890(param_1);
  if (cVar1 == '\0') {
    return;
  }
  FUN_0094a0e0(param_1);
  return;
}



void __thiscall FUN_00922360(int param_1_00,undefined param_1)

{
  int iVar1;
  
  FUN_0083eaa0();
  iVar1 = *(int *)(param_1_00 + 4);
  FUN_00921f00();
  *(undefined *)(iVar1 + 0x25) = param_1;
  return;
}



void FUN_00922380(undefined4 param_1)

{
  FUN_0083eaa0();
  FUN_00921f00();
  FUN_00921950(param_1);
  return;
}



void __thiscall FUN_009223b0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  
  FUN_0083eaa0();
  iVar1 = *(int *)(param_1_00 + 4);
  FUN_00921f00();
  puVar3 = (undefined4 *)(iVar1 + 0x10);
  for (iVar2 = 0x17; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar3 = *param_1;
    param_1 = param_1 + 1;
    puVar3 = puVar3 + 1;
  }
  return;
}



undefined4 * __fastcall FUN_009223e0(undefined4 *param_1)

{
  uint uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  int local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd7eb0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  param_1[1] = 1;
  local_4 = 0;
  *param_1 = wxFontRefData::vftable;
  FUN_009217e0(uVar1);
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = CONCAT31(local_4._1_3_,1);
  param_1[3] = 0;
  *(undefined *)(param_1 + 2) = 0;
  FUN_00922030(0xffffffff);
  FUN_00921f00();
  *(undefined *)(param_1 + 9) = 0;
  FUN_00921f00();
  param_1[8] = 400;
  FUN_00921f00();
  *(undefined *)((int)param_1 + 0x25) = 0;
  FUN_00921f00();
  *(undefined *)((int)param_1 + 0x2b) = 0x20;
  *(undefined2 *)(param_1 + 0xb) = 0;
  if (local_1c != 0) {
    FUN_00921f00();
    FUN_00921890(local_30);
  }
  FUN_00921f00();
  FUN_00921950(0);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall
FUN_009224e0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8,undefined4 param_9)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdea08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  local_4 = 0;
  *param_1_00 = wxFontRefData::vftable;
  FUN_009217e0(uVar1);
  FUN_00922130(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9);
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_00922570(int param_1,int param_2)

{
  char cVar1;
  HDC hdc;
  HGDIOBJ h;
  UINT UVar2;
  LPOUTLINETEXTMETRICW potm;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7f30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  hdc = GetDC((HWND)0x0);
  uStack_4 = 1;
  if (*(int *)(param_1 + 0xc) == 0) {
    FUN_00921de0();
  }
  h = SelectObject(hdc,*(HGDIOBJ *)(param_1 + 0xc));
  uStack_4._0_1_ = 2;
  UVar2 = GetOutlineTextMetricsW(hdc,0,(LPOUTLINETEXTMETRICW)0x0);
  if (UVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4._0_1_ = 3;
      FUN_008423d0();
      uStack_4._0_1_ = 4;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00921a90();
      uStack_4._0_1_ = 3;
      FUN_00842440();
      uStack_4._0_1_ = 2;
      FUN_0081b5bc();
    }
    *(undefined4 *)(param_2 + 0x18) = 7;
    *(undefined4 *)(param_2 + 0x14) = 0;
    *(undefined2 *)(param_2 + 4) = 0;
    *(undefined4 *)(param_2 + 0x1c) = 0;
    if (hdc != (HDC)0x0) {
      SelectObject(hdc,h);
    }
  }
  else {
    potm = (LPOUTLINETEXTMETRICW)_malloc(UVar2);
    FUN_009873f0();
    uStack_4._0_1_ = 5;
    potm->otmSize = UVar2;
    UVar2 = GetOutlineTextMetricsW(hdc,UVar2,potm);
    if (UVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4._0_1_ = 6;
        FUN_008423d0();
        uStack_4._0_1_ = 7;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00921a90();
        uStack_4._0_1_ = 6;
        FUN_00842440();
        uStack_4._0_1_ = 5;
        FUN_0081b5bc();
      }
      *(undefined4 *)(param_2 + 0x18) = 7;
      *(undefined4 *)(param_2 + 0x14) = 0;
      *(undefined2 *)(param_2 + 4) = 0;
      *(undefined4 *)(param_2 + 0x1c) = 0;
      uStack_4._0_1_ = 2;
      FUN_00987320();
      if (hdc != (HDC)0x0) {
        SelectObject(hdc,h);
      }
    }
    else {
      FUN_004325b6();
      uStack_4._0_1_ = 2;
      FUN_00987320();
      if (hdc != (HDC)0x0) {
        SelectObject(hdc,h);
      }
    }
  }
  ReleaseDC((HWND)0x0,hdc);
  ExceptionList = local_c;
  return param_2;
}



undefined4 __thiscall FUN_00922890(undefined4 param_1_00,byte param_1)

{
  FUN_009221e0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall
FUN_009228b0(int *param_1_00,int param_1,undefined4 param_3,undefined4 param_4,undefined4 param_5,
            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,
            undefined4 param_10)

{
  int *piVar1;
  void *pvVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd98b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0083e850(DAT_0323f878 ^ (uint)&stack0xffffffec);
  if (param_1 == 0x46) {
    piVar1 = (int *)(**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
    param_1 = (**(code **)(*piVar1 + 0x2c))();
  }
  pvVar2 = operator_new(0x6c);
  uStack_4 = 0;
  if (pvVar2 == (void *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_009224e0(param_1,param_3,param_4,param_5,param_6,param_7,param_8,param_9,param_10);
  }
  param_1_00[1] = iVar3;
  uStack_4 = 0xffffffff;
  (**(code **)(*param_1_00 + 0x14))();
  ExceptionList = local_c;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x6c);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009223e0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __fastcall FUN_009229f0(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if (iVar1 != 0) {
    if (*(int *)(iVar1 + 0xc) == 0) {
      FUN_00921de0();
    }
    return *(undefined4 *)(iVar1 + 0xc);
  }
  return 0;
}



uint __fastcall FUN_00922a10(int *param_1)

{
  char cVar1;
  uint uVar2;
  HDC hdc;
  HGDIOBJ h;
  BOOL BVar3;
  int iVar4;
  tagTEXTMETRICW atStack_98 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7f89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = (**(code **)(*param_1 + 0x10))();
  if ((char)uVar2 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      uVar2 = FUN_00840480();
    }
  }
  else {
    hdc = GetDC((HWND)0x0);
    iVar4 = param_1[1];
    uStack_4 = 0;
    if (*(int *)(iVar4 + 0xc) == 0) {
      FUN_00921de0();
    }
    h = SelectObject(hdc,*(HGDIOBJ *)(iVar4 + 0xc));
    uStack_4._0_1_ = 1;
    BVar3 = GetTextMetricsW(hdc,atStack_98);
    if (BVar3 != 0) {
      if (hdc != (HDC)0x0) {
        SelectObject(hdc,h);
      }
      iVar4 = ReleaseDC((HWND)0x0,hdc);
      ExceptionList = local_c;
      return CONCAT31((int3)((uint)iVar4 >> 8),~atStack_98[0].tmPitchAndFamily) & 0xffffff01;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4._0_1_ = 2;
      FUN_008423d0();
      uStack_4._0_1_ = 3;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4._0_1_ = 2;
      FUN_00842440();
      uStack_4._0_1_ = 1;
      FUN_0081b5bc();
    }
    if (hdc != (HDC)0x0) {
      SelectObject(hdc,h);
    }
    uVar2 = ReleaseDC((HWND)0x0,hdc);
  }
  ExceptionList = local_c;
  return uVar2 & 0xffffff00;
}



int FUN_00922be0(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd7fd1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00921870(param_1);
  local_4 = 0;
  if (*(int *)(param_1 + 0x14) == 0) {
    iVar2 = FUN_00922570(local_30);
    local_4 = 1;
    if (param_1 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    local_4 = local_4 & 0xffffff00;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    if (*(int *)(param_1 + 0x14) != 0) {
      FUN_00921f00(uVar1);
      FUN_00921890(param_1);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



int __fastcall FUN_00922cb0(int param_1)

{
  undefined local_24 [4];
  undefined4 local_20;
  uint local_c;
  void *local_8;
  
  if (*(int *)(param_1 + 0xc) == 0) {
    FUN_00921de0();
  }
  FUN_00922be0(local_24);
  _free(local_8);
  if (7 < local_c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_20);
  }
  return param_1 + 0x10;
}



bool __fastcall FUN_00922d00(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if (iVar1 != 0) {
    if (*(int *)(iVar1 + 0xc) == 0) {
      FUN_00921de0();
    }
    return *(int *)(iVar1 + 0xc) != 0;
  }
  return false;
}



undefined4 __thiscall FUN_00922d30(int *param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    FUN_00922be0(param_2);
    return param_2;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\font.cpp",1000,"wxFont::GetFaceName","IsOk()",L"invalid font");
  }
  FUN_004325b6(PTR_DAT_03236318);
  return param_2;
}



undefined4 __fastcall FUN_00922da0(int *param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    uVar2 = FUN_00922cb0();
    return uVar2;
  }
  return 0;
}



void __thiscall FUN_00922dc0(int param_1_00,char param_1)

{
  if (param_1 != *(char *)(param_1_00 + 0xc)) {
    *(char *)(param_1_00 + 0xc) = param_1;
                    // WARNING: Could not recover jumptable at 0x00922ddb. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(param_1_00 + 4) + 0x118))();
    return;
  }
  return;
}



void __thiscall FUN_00922de0(int param_1_00,int param_1)

{
  if (param_1 == *(int *)(param_1_00 + 8)) {
    *(undefined4 *)(param_1_00 + 8) = 0;
  }
  return;
}



void __fastcall FUN_00922e00(int *param_1)

{
  *(int *)(*param_1 + 0x20) = param_1[1];
  return;
}



undefined4 __fastcall FUN_00922e10(int param_1)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  
  iVar1 = *(int *)(*(int *)(param_1 + 4) + 0x54);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    piVar2 = *(int **)(iVar1 + 8);
    cVar3 = (**(code **)(**(int **)(param_1 + 4) + 300))(piVar2);
    if ((((cVar3 != '\0') && (cVar3 = (**(code **)(*piVar2 + 0x110))(), cVar3 != '\0')) &&
        (cVar3 = (**(code **)(*piVar2 + 0xdc))(), cVar3 != '\0')) &&
       (cVar3 = FUN_0091b930(), cVar3 != '\0')) break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  return 1;
}



void __fastcall FUN_00922e80(undefined4 *param_1)

{
  param_1[1] = 0;
  *(undefined *)(param_1 + 3) = 1;
  *(undefined *)((int)param_1 + 0xd) = 0;
  *param_1 = wxControlContainer::vftable;
  param_1[2] = 0;
  return;
}



undefined4 * __thiscall FUN_00922ea0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxControlContainerBase::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_00922ec0(int param_1)

{
  undefined4 *puVar1;
  char cVar2;
  int iVar3;
  undefined **ppuVar4;
  
  if (((*(uint *)(param_1 + 0xe0) >> 2 & 1) == 0) && ((*(uint *)(param_1 + 0xe0) >> 3 & 1) == 0)) {
    iVar3 = FUN_0086af40(param_1);
    if (iVar3 != 0) {
      iVar3 = *(int *)(iVar3 + 0x10);
      while( true ) {
        if (iVar3 == 0) {
          return (undefined4 *)0x0;
        }
        puVar1 = *(undefined4 **)(iVar3 + 8);
        if ((puVar1 != (undefined4 *)0x0) &&
           (((ppuVar4 = (undefined **)(**(code **)*puVar1)(),
             ppuVar4 == &PTR_u_wxRadioButton_0323b678 ||
             ((ppuVar4[3] != (undefined *)0x0 &&
              (cVar2 = FUN_0048a047(&PTR_u_wxRadioButton_0323b678), cVar2 != '\0')))) ||
            ((ppuVar4[4] != (undefined *)0x0 &&
             (cVar2 = FUN_0048a047(&PTR_u_wxRadioButton_0323b678), cVar2 != '\0')))))) break;
        iVar3 = *(int *)(iVar3 + 0x10);
      }
      if (((uint)puVar1[0x38] >> 3 & 1) != 0) {
        return (undefined4 *)0x0;
      }
      return puVar1;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\containr.cpp",0xce,"wxGetPreviousButtonInGroup","nodeThis",
                   L"radio button not a child of its parent?");
    }
  }
  return (undefined4 *)0x0;
}



undefined4 * FUN_00922f90(int param_1)

{
  undefined4 *puVar1;
  char cVar2;
  int iVar3;
  undefined **ppuVar4;
  
  if ((*(uint *)(param_1 + 0xe0) >> 3 & 1) == 0) {
    iVar3 = FUN_0086af40(param_1);
    if (iVar3 != 0) {
      iVar3 = *(int *)(iVar3 + 0xc);
      while( true ) {
        if (iVar3 == 0) {
          return (undefined4 *)0x0;
        }
        puVar1 = *(undefined4 **)(iVar3 + 8);
        if ((puVar1 != (undefined4 *)0x0) &&
           (((ppuVar4 = (undefined **)(**(code **)*puVar1)(),
             ppuVar4 == &PTR_u_wxRadioButton_0323b678 ||
             ((ppuVar4[3] != (undefined *)0x0 &&
              (cVar2 = FUN_0048a047(&PTR_u_wxRadioButton_0323b678), cVar2 != '\0')))) ||
            ((ppuVar4[4] != (undefined *)0x0 &&
             (cVar2 = FUN_0048a047(&PTR_u_wxRadioButton_0323b678), cVar2 != '\0')))))) break;
        iVar3 = *(int *)(iVar3 + 0xc);
      }
      if (((uint)puVar1[0x38] >> 2 & 1) != 0) {
        return (undefined4 *)0x0;
      }
      if (((uint)puVar1[0x38] >> 3 & 1) != 0) {
        return (undefined4 *)0x0;
      }
      return puVar1;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\containr.cpp",0xec,"wxGetNextButtonInGroup","nodeThis",
                   L"radio button not a child of its parent?");
    }
  }
  return (undefined4 *)0x0;
}



int FUN_00923060(int param_1)

{
  int iVar1;
  int iVar2;
  
  iVar2 = FUN_00922ec0(param_1);
  while (iVar1 = iVar2, iVar1 != 0) {
    iVar2 = FUN_00922ec0(iVar1);
    param_1 = iVar1;
  }
  return param_1;
}



int FUN_00923090(int param_1)

{
  int iVar1;
  int iVar2;
  
  iVar2 = FUN_00922f90(param_1);
  while (iVar1 = iVar2, iVar1 != 0) {
    iVar2 = FUN_00922f90(iVar1);
    param_1 = iVar1;
  }
  return param_1;
}



int * FUN_009230c0(int *param_1)

{
  char cVar1;
  int *piVar2;
  
  cVar1 = (**(code **)(*param_1 + 0x35c))();
  if (cVar1 != '\0') {
    return param_1;
  }
  if (((uint)param_1[0x38] >> 3 & 1) == 0) {
    for (piVar2 = (int *)FUN_00922ec0(param_1); piVar2 != (int *)0x0;
        piVar2 = (int *)FUN_00922ec0(piVar2)) {
      cVar1 = (**(code **)(*piVar2 + 0x35c))();
      if (cVar1 != '\0') {
        return piVar2;
      }
    }
    piVar2 = (int *)FUN_00922f90(param_1);
    while( true ) {
      if (piVar2 == (int *)0x0) {
        return (int *)0x0;
      }
      cVar1 = (**(code **)(*piVar2 + 0x35c))();
      if (cVar1 != '\0') break;
      piVar2 = (int *)FUN_00922f90(piVar2);
    }
    return piVar2;
  }
  return (int *)0x0;
}



void __thiscall FUN_00923160(int param_1,int param_2)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  char cVar6;
  int iVar7;
  int *piVar8;
  int iVar9;
  int *piVar10;
  bool bVar11;
  bool bVar12;
  int iStack_4c;
  int *piStack_44;
  undefined **appuStack_3c [2];
  undefined4 uStack_34;
  undefined4 uStack_14;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  int iStack_4;
  
  iVar5 = param_2;
  iStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8000;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar6 = (**(code **)(**(int **)(param_1 + 4) + 0x11c))(DAT_0323f878 ^ (uint)&stack0xffffff9c);
  if (cVar6 == '\0') {
    piStack_44 = *(int **)(*(int *)(param_1 + 4) + 0x44);
  }
  else {
    piStack_44 = (int *)0x0;
  }
  bVar11 = *(int **)(param_2 + 8) == piStack_44;
  iVar2 = *(int *)(param_1 + 4);
  if (((*(uint *)(param_2 + 0x28) >> 1 & 1) != 0) && (!bVar11)) {
    iVar7 = *(int *)(iVar2 + 0x54);
    piVar10 = (int *)0x0;
    if (iVar7 != 0) {
      do {
        piVar8 = *(int **)(iVar7 + 8);
        cVar6 = (**(code **)(*piVar8 + 0x1a4))();
        if ((cVar6 != '\0') && (bVar12 = piVar10 != (int *)0x0, piVar10 = piVar8, bVar12))
        goto LAB_00923282;
        iVar7 = *(int *)(iVar7 + 0xc);
      } while (iVar7 != 0);
      if (piVar10 != (int *)0x0) {
        FUN_00845a60(param_2);
        uStack_14 = *(undefined4 *)(param_2 + 0x28);
        uStack_10 = *(undefined4 *)(param_2 + 0x2c);
        appuStack_3c[0] = wxNavigationKeyEvent::vftable;
        uStack_34 = *(undefined4 *)(param_1 + 4);
        iStack_4 = iVar7;
        cVar6 = (**(code **)(*(int *)piVar10[0x1c] + 0x18))(appuStack_3c);
        iStack_4 = 0xffffffff;
        appuStack_3c[0] = wxObject::vftable;
        if (cVar6 != '\0') {
          FUN_0083e850();
          ExceptionList = local_c;
          return;
        }
        FUN_0083e850();
      }
    }
  }
LAB_00923282:
  if ((*(int *)(iVar2 + 0x4c) == 0) || ((*(uint *)(param_2 + 0x28) >> 1 & 1) != 0)) {
    if ((!bVar11) &&
       ((piStack_44 != (int *)0x0 &&
        (cVar6 = (**(code **)(*(int *)piStack_44[0x1c] + 0x18))(param_2), cVar6 != '\0')))) {
      ExceptionList = local_c;
      return;
    }
LAB_00923594:
    *(undefined *)(iVar5 + 0x24) = 1;
    ExceptionList = local_c;
    return;
  }
  bVar1 = *(byte *)(param_2 + 0x28);
  param_2._0_1_ = bVar1 & 1;
  iStack_4c = 0;
  if (bVar11) {
    *(undefined4 *)(param_1 + 8) = 0;
    iVar7 = 0;
    if ((bVar1 & 1) == 0) {
      iVar9 = *(int *)(iVar2 + 0x58);
    }
    else {
      iVar9 = *(int *)(iVar2 + 0x54);
    }
    goto LAB_00923356;
  }
  iVar7 = *(int *)(iVar5 + 0x2c);
  if (((iVar7 == 0) && (iVar7 = *(int *)(param_1 + 8), iVar7 == 0)) &&
     (iVar7 = FUN_0091ac40(), iVar7 == 0)) {
LAB_0092331b:
    if ((*(int *)(param_1 + 8) == 0) ||
       (iStack_4c = FUN_0086af40(*(int *)(param_1 + 8)), iStack_4c == 0)) {
      iStack_4c = *(int *)(iVar2 + 0x54);
    }
  }
  else {
    if (((*(uint *)(iVar5 + 0x28) >> 2 & 1) != 0) &&
       (cVar6 = FUN_0083e950(&PTR_u_wxRadioButton_0323b678), cVar6 != '\0')) {
      iVar7 = FUN_00923060(iVar7);
    }
    iStack_4c = FUN_0086af40(iVar7);
    if (iStack_4c == 0) goto LAB_0092331b;
  }
  iVar7 = iStack_4c;
  if ((byte)param_2 == 0) {
    iVar9 = *(int *)(iStack_4c + 0x10);
  }
  else {
    iVar9 = *(int *)(iStack_4c + 0xc);
  }
LAB_00923356:
  do {
    if (iVar7 == 0) {
LAB_00923366:
      if (iVar9 != 0) {
        piVar10 = *(int **)(iVar9 + 8);
        cVar6 = (**(code **)(*piVar10 + 0x11c))();
        if (cVar6 == '\0') {
          if ((*(uint *)(iVar5 + 0x28) >> 2 & 1) == 0) {
            if (((*(int *)(param_1 + 8) != 0) &&
                (cVar6 = FUN_0083e950(&PTR_u_wxRadioButton_0323b678), cVar6 != '\0')) &&
               (iVar3 = *(int *)(param_1 + 8), iVar7 = iStack_4c,
               (*(uint *)(iVar3 + 0xe0) >> 3 & 1) == 0)) {
              if ((byte)param_2 == 0) {
                piVar10 = (int *)FUN_00922ec0(iVar3);
                if (piVar10 == (int *)0x0) {
                  piVar10 = (int *)FUN_00923090(iVar3);
                }
              }
              else {
                piVar10 = (int *)FUN_00922f90();
                if (piVar10 == (int *)0x0) {
                  piVar10 = (int *)FUN_00923060(iVar3);
                }
              }
              if (piVar10 == *(int **)(param_1 + 8)) {
                *(undefined *)(iVar5 + 0x24) = 0;
                ExceptionList = local_c;
                return;
              }
            }
          }
          else {
            cVar6 = FUN_0083e950(&PTR_u_wxRadioButton_0323b678);
            if (cVar6 != '\0') {
              if (((uint)piVar10[0x38] >> 2 & 1) == 0) {
                if (((uint)piVar10[0x38] >> 3 & 1) == 0) {
                  if ((byte)param_2 == 0) goto LAB_0092351d;
                  iVar9 = *(int *)(iVar9 + 0xc);
                  goto LAB_00923356;
                }
              }
              else {
                piVar8 = (int *)FUN_009230c0(piVar10);
                if (piVar8 != (int *)0x0) {
                  piVar10 = piVar8;
                }
              }
            }
          }
          cVar6 = (**(code **)(*piVar10 + 0x114))();
          if (((cVar6 != '\0') && (cVar6 = (**(code **)(*piVar10 + 0xdc))(), cVar6 != '\0')) &&
             (cVar6 = FUN_0091b930(), cVar6 != '\0')) {
            *(undefined4 *)(iVar5 + 8) = *(undefined4 *)(param_1 + 4);
            uVar4 = *(undefined4 *)(iVar5 + 0x20);
            *(undefined4 *)(iVar5 + 0x20) = 0;
            iStack_4 = 1;
            cVar6 = (**(code **)(*(int *)piVar10[0x1c] + 0x18))(iVar5);
            if (cVar6 == '\0') {
              *(int **)(param_1 + 8) = piVar10;
              (**(code **)(*piVar10 + 0x104))();
            }
            *(undefined *)(iVar5 + 0x24) = 0;
            *(undefined4 *)(iVar5 + 0x20) = uVar4;
            ExceptionList = local_c;
            return;
          }
          if ((byte)param_2 != 0) {
            iVar9 = *(int *)(iVar9 + 0xc);
            goto LAB_00923356;
          }
        }
        else if ((byte)param_2 != 0) {
          iVar9 = *(int *)(iVar9 + 0xc);
          goto LAB_00923356;
        }
LAB_0092351d:
        iVar9 = *(int *)(iVar9 + 0x10);
        goto LAB_00923356;
      }
    }
    else if (iVar9 != 0) {
      if (iVar9 != iVar7) goto LAB_00923366;
      goto LAB_00923594;
    }
    if (iVar7 == 0) goto LAB_00923594;
    if (!bVar11) {
      piVar10 = *(int **)(param_1 + 4);
      while ((piStack_44 != (int *)0x0 && (cVar6 = (**(code **)(*piVar10 + 0x238))(), cVar6 == '\0')
             )) {
        *(int **)(iVar5 + 0x2c) = piVar10;
        cVar6 = (**(code **)(*(int *)piStack_44[0x1c] + 0x18))(iVar5);
        if (cVar6 != '\0') {
          ExceptionList = local_c;
          return;
        }
        piVar10 = piStack_44;
        piStack_44 = (int *)piStack_44[0x11];
      }
    }
    if ((byte)param_2 == 0) {
      iVar9 = *(int *)(iVar2 + 0x58);
    }
    else {
      iVar9 = *(int *)(iVar2 + 0x54);
    }
  } while( true );
}



void __thiscall
FUN_009235b0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_0090e060(param_3,param_2,1);
  uVar1 = FUN_008854f0(param_2);
  FUN_0084d410(param_1_00,param_1,uVar1);
  return;
}



void __thiscall
FUN_009235f0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            int param_4,undefined4 param_5,char param_6)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd8028;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840a00(&param_4,param_2,2);
  FUN_0083e8f0(param_3,param_2,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20();
  FUN_0084d410(param_1_00,param_1,uVar3,param_3,uVar4);
  iVar1 = param_4;
  if ((param_6 != '\0') && (param_4 != 0)) {
    _free(*(void **)(param_4 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_009236d0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            int param_4,undefined4 param_5,char param_6)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd8028;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00840a00(&param_4,param_2,2);
  FUN_0090e060(param_3,param_2,1);
  uVar3 = FUN_008854f0(uVar2);
  uVar4 = FUN_00884e20();
  FUN_0084d410(param_1_00,param_1,uVar3,param_3,uVar4);
  iVar1 = param_4;
  if ((param_6 != '\0') && (param_4 != 0)) {
    _free(*(void **)(param_4 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_009237b0(int *param_1)

{
  code *pcVar1;
  char cVar2;
  int *piVar3;
  undefined4 uVar4;
  uint uStack_7c;
  void *pvStack_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd806b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar2 = FUN_00846b30(7);
  if (cVar2 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    local_4._0_1_ = 1;
    FUN_008423d0();
    local_4._0_1_ = 2;
    (**(code **)(*(int *)param_1[1] + 0x218))();
    FUN_0090e060();
    FUN_008854f0();
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    _free(pvStack_78);
    if (7 < uStack_7c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  if (*(char *)((int)param_1 + 0xd) != '\0') {
    ExceptionList = local_c;
    return 1;
  }
  for (piVar3 = (int *)FUN_0091ac40(); piVar3 != (int *)0x0; piVar3 = (int *)piVar3[0x11]) {
    if (piVar3 == (int *)param_1[1]) {
      ExceptionList = local_c;
      return 1;
    }
    cVar2 = (**(code **)(*piVar3 + 0x11c))();
    if (cVar2 != '\0') break;
  }
  pcVar1 = *(code **)(*param_1 + 4);
  *(undefined *)((int)param_1 + 0xd) = 1;
  uVar4 = (*pcVar1)();
  *(undefined *)((int)param_1 + 0xd) = 0;
  ExceptionList = local_c;
  return uVar4;
}



void __thiscall FUN_00923970(int param_1_00,int *param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  char **ppcVar4;
  char *pcVar5;
  undefined4 uStack_150;
  char *pcStack_14c;
  undefined4 uStack_148;
  char *pcStack_144;
  char *pcStack_140;
  char *pcStack_13c;
  char *pcStack_138;
  char *pcStack_134;
  wchar_t *pwStack_130;
  uint uStack_12c;
  undefined4 *local_11c;
  char local_118 [20];
  char local_104 [36];
  undefined local_e0 [116];
  undefined auStack_6c [92];
  uint local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bd80f0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_11c;
  uStack_12c = DAT_0323f878 ^ (uint)&stack0xfffffed8;
  ExceptionList = &local_c;
  if (param_1 != *(int **)(param_1_00 + 4)) {
    piVar1 = param_1;
    if (param_1 != (int *)0x0) {
      do {
        param_1 = piVar1;
        piVar1 = (int *)param_1[0x11];
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar1 == (int *)0x0)) {
          pwStack_130 = L"Setting last focus for a window that is not our child?";
          pcStack_134 = "winParent";
          pcStack_138 = "wxControlContainer::SetLastFocus";
          pcStack_13c = (char *)0xa0;
          pcStack_140 = "..\\..\\src\\common\\containr.cpp";
          pcStack_144 = (char *)0x9239f2;
          FUN_00840480();
        }
      } while (piVar1 != *(int **)(param_1_00 + 4));
    }
    local_11c = &uStack_150;
    *(int **)(param_1_00 + 8) = param_1;
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(7);
    if (param_1 == (int *)0x0) {
      if (cVar3 == '\0') goto LAB_00923b98;
      pwStack_130 = L"No more last focus";
      pcStack_134 = (char *)0x923b05;
      FUN_0081c0f1();
      pwStack_130 = L"focus";
      local_4 = 6;
      pcStack_134 = (char *)0x923b1e;
      FUN_004325b6();
      pwStack_130 = (wchar_t *)&DAT_00d25fa0;
      pcStack_134 = "wxControlContainer::SetLastFocus";
      pcStack_138 = (char *)0xae;
      pcStack_13c = "..\\..\\src\\common\\containr.cpp";
      pcStack_140 = (char *)0x7;
      local_4._0_1_ = 7;
      pcStack_144 = (char *)0x923b48;
      pcVar5 = (char *)FUN_008423d0();
      local_4._0_1_ = 8;
      pwStack_130 = L"赐⑄倬\xe856颩\xfff2쒃贌⑌왰⒄Ĩ";
      pwStack_130 = (wchar_t *)FUN_008854f0();
      pcStack_134 = local_104;
      pcStack_13c = (char *)0x923b67;
      pcStack_138 = pcVar5;
      FUN_0084d410();
      local_4 = CONCAT31(local_4._1_3_,7);
      pwStack_130 = L"䲍⠤ᣨ귚跿⑌윔⒄Ĩ";
      FUN_00842440();
    }
    else {
      if (cVar3 == '\0') goto LAB_00923b98;
      pwStack_130 = L"Set last focus to %s(%s)";
      pcStack_134 = (char *)0x923a38;
      FUN_0081c0f1();
      pwStack_130 = L"focus";
      local_4 = 0;
      pcStack_134 = (char *)0x923a51;
      FUN_004325b6();
      pwStack_130 = (wchar_t *)local_e0;
      local_4._0_1_ = 1;
      pcStack_134 = (char *)0x923a67;
      (**(code **)(*param_1 + 0x58))();
      pcStack_140 = (char *)&pcStack_13c;
      pcStack_144 = (char *)0x923a78;
      FUN_00432231();
      pcStack_140 = &DAT_00d25fa0;
      pcStack_144 = "wxControlContainer::SetLastFocus";
      uStack_148 = 0xa8;
      pcStack_14c = "..\\..\\src\\common\\containr.cpp";
      uStack_150 = 7;
      uStack_8._0_1_ = 3;
      FUN_008423d0();
      uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,4);
      pcStack_140 = (char *)0x923ab4;
      ppcVar4 = (char **)(**(code **)*param_1)();
      pcStack_13c = *ppcVar4;
      pcStack_140 = local_118;
      pcStack_144 = local_104;
      local_4._0_1_ = 5;
      uStack_148 = 0x923ad0;
      FUN_009235f0();
      local_4 = CONCAT31(local_4._1_3_,2);
      pwStack_130 = L"䲍䰤단귚\xe9ff\x8c";
      FUN_00842440();
      pwStack_130 = L"賩";
      FUN_0040159c();
    }
    pwStack_130 = 
    L"䲍ᐤ蓇⠤\x01＀\xffff\xe8ff稤￯䮋謄謑ᲂ\x01＀蓐痀譋у炋蕄瓶偁貍쐤";
    FUN_0040159c();
    local_4 = 0xffffffff;
    pwStack_130 = L"䮋謄謑ᲂ\x01＀蓐痀譋у炋蕄瓶偁貍쐤";
    FUN_0081b5bc();
  }
LAB_00923b98:
  pwStack_130 = L"삄䭵䎋謄䑰\xf685䅴赐⒌Ä";
  cVar3 = (**(code **)(**(int **)(param_1_00 + 4) + 0x11c))();
  if (cVar3 == '\0') {
    iVar2 = *(int *)(*(int *)(param_1_00 + 4) + 0x44);
    if (iVar2 != 0) {
      pcStack_134 = (char *)0x923bc0;
      pwStack_130 = (wchar_t *)*(int *)(param_1_00 + 4);
      FUN_0092bed0();
      pwStack_130 = (wchar_t *)auStack_6c;
      local_4 = 9;
      pcStack_134 = (char *)0x923bdd;
      (**(code **)(**(int **)(iVar2 + 0x70) + 0x18))();
      local_4 = 0xffffffff;
      pwStack_130 = L"貋․\x01搀ඉ";
      FUN_00a1f4e0();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00923c20(int param_1,int param_2)

{
  char cVar1;
  uint uStack_a0;
  void *pvStack_9c;
  uint uStack_7c;
  void *pvStack_78;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bd8151;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    local_4._0_1_ = 1;
    (**(code **)(**(int **)(param_1 + 4) + 0x60))();
    FUN_00432231();
    uStack_8._0_1_ = 3;
    FUN_008423d0();
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,4);
    (**(code **)(**(int **)(param_1 + 4) + 0x218))();
    local_4._0_1_ = 5;
    FUN_009236d0();
    local_4 = CONCAT31(local_4._1_3_,2);
    FUN_00842440();
    _free(pvStack_78);
    if (7 < uStack_7c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(pvStack_9c);
    if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  FUN_009237b0();
  *(undefined *)(param_2 + 0x24) = 1;
  ExceptionList = local_c;
  return;
}



undefined4 FUN_00923de0(int *param_1,int **param_2)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd81bf;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
LAB_009240fd:
    uVar4 = 0;
  }
  else {
    if ((param_2 != (int **)0x0) && (piVar5 = *param_2, piVar5 != (int *)0x0)) {
      if ((int *)piVar5[0x11] == param_1) {
        cVar1 = (**(code **)(*piVar5 + 0xdc))();
        while (cVar1 == '\0') {
          piVar5 = (int *)(*param_2)[0x11];
          *param_2 = piVar5;
          if (piVar5 == (int *)0x0) goto LAB_00923f66;
          cVar1 = (**(code **)(*piVar5 + 0xdc))();
        }
        if (*param_2 != (int *)0x0) {
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(7);
          if (cVar1 != '\0') {
            FUN_0081c0f1();
            uStack_4 = 0;
            FUN_004325b6();
            uStack_4._0_1_ = 1;
            FUN_008423d0();
            uStack_4._0_1_ = 2;
            (**(code **)(**param_2 + 0x218))();
            FUN_009235b0();
            uStack_4 = CONCAT31(uStack_4._1_3_,1);
            FUN_00842440();
            FUN_0040159c();
            uStack_4 = 0xffffffff;
            FUN_0081b5bc();
          }
          (**(code **)(**param_2 + 0x100))();
          ExceptionList = local_c;
          return 1;
        }
      }
      else {
        *param_2 = (int *)0x0;
      }
    }
LAB_00923f66:
    iVar2 = param_1[0x15];
    do {
      if (iVar2 == 0) goto LAB_009240fd;
      piVar5 = *(int **)(iVar2 + 8);
      iVar2 = *(int *)(iVar2 + 0xc);
      cVar1 = (**(code **)(*param_1 + 300))();
    } while ((((cVar1 == '\0') || (cVar1 = (**(code **)(*piVar5 + 0x114))(), cVar1 == '\0')) ||
             (cVar1 = (**(code **)(*piVar5 + 0xdc))(), cVar1 == '\0')) ||
            ((cVar1 = FUN_0091b930(), cVar1 == '\0' ||
             (cVar1 = (**(code **)(*piVar5 + 0x11c))(), cVar1 != '\0'))));
    iVar2 = FUN_0048a085();
    if ((iVar2 != 0) && (piVar3 = (int *)FUN_009230c0(), piVar3 != (int *)0x0)) {
      piVar5 = piVar3;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(7);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 3;
      FUN_004325b6();
      uStack_4._0_1_ = 4;
      FUN_008423d0();
      uStack_4._0_1_ = 5;
      (**(code **)(*piVar5 + 0x218))();
      FUN_009235b0();
      uStack_4 = CONCAT31(uStack_4._1_3_,4);
      FUN_00842440();
      FUN_0040159c();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    if (param_2 != (int **)0x0) {
      *param_2 = piVar5;
    }
    (**(code **)(*piVar5 + 0x104))();
    uVar4 = 1;
  }
  ExceptionList = local_c;
  return uVar4;
}



void __fastcall FUN_00924120(int param_1)

{
  FUN_00923de0(*(undefined4 *)(param_1 + 4),param_1 + 8);
  return;
}



void __fastcall FUN_00924140(int param_1)

{
  *(byte *)(param_1 + 0xdc) = *(byte *)(param_1 + 0xdc) & 0xfd;
  *(undefined4 *)(param_1 + 0x1ec) = 0;
  *(undefined4 *)(param_1 + 0x1e8) = 0;
  return;
}



void __fastcall FUN_00924160(int *param_1)

{
  char cVar1;
  HWND pHVar2;
  
  if (param_1[0x7a] != 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      cVar1 = (**(code **)(*param_1 + 0xdc))();
      if (cVar1 != '\0') {
        pHVar2 = GetWindow((HWND)param_1[0x7a],2);
        if (pHVar2 != (HWND)0x0) {
          FUN_00840480("..\\..\\src\\msw\\dialog.cpp",0x119,"wxDialog::DestroyGripper",
                       "!IsShown() || ::GetWindow((HWND)m_hGripper, GW_HWNDNEXT) == 0",
                       L"Bug in wxWidgets: gripper should be at the bottom of Z-order");
        }
      }
    }
    DestroyWindow((HWND)param_1[0x7a]);
    param_1[0x7a] = 0;
  }
  return;
}



void __fastcall FUN_009242f0(int param_1)

{
  HINSTANCE hInstance;
  HWND pHVar1;
  
  if (*(int *)(param_1 + 0x1e8) == 0) {
    pHVar1 = *(HWND *)(param_1 + 0x13c);
    hInstance = (HINSTANCE)FUN_008a65e0();
    pHVar1 = CreateWindowExW(0,L"SCROLLBAR",L"",0x4400001c,0,0,0,0,pHVar1,(HMENU)0x0,hInstance,
                             (LPVOID)0x0);
    *(HWND *)(param_1 + 0x1e8) = pHVar1;
  }
  return;
}



void __thiscall FUN_00924340(int *param_1_00,int param_1)

{
  char cVar1;
  
  if (param_1_00[0x7a] == 0) {
    *(undefined *)(param_1 + 0x24) = 1;
    return;
  }
  cVar1 = (**(code **)(*param_1_00 + 0xdc))();
  if (cVar1 != '\0') {
    if ((*(int *)(param_1 + 8) != 0) && (*(int **)(*(int *)(param_1 + 8) + 0x44) == param_1_00)) {
      SetWindowPos((HWND)param_1_00[0x7a],(HWND)0x1,0,0,0,0,0x13);
    }
    *(undefined *)(param_1 + 0x24) = 1;
    return;
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



undefined4 * __thiscall FUN_009243b0(undefined4 *param_1_00,undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd81f3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008f9f60(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  local_4 = 0;
  *param_1_00 = wxModalEventLoop::vftable;
  pvVar1 = operator_new(8);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_008fd5a0(param_1);
  }
  param_1_00[8] = uVar2;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00924430(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x20);
  if (iVar1 != 0) {
    FUN_008fd4f0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  *(undefined4 *)(param_1 + 0x20) = 0;
  FUN_00890710();
  return;
}



undefined4 __thiscall FUN_00924460(undefined4 param_1_00,byte param_1)

{
  FUN_008f9d20();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00924480(int *param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd8218;
  local_c = ExceptionList;
  puVar1 = (undefined4 *)*param_1;
  if (puVar1 == (undefined4 *)0x0) {
    return;
  }
  local_4 = 0;
  ExceptionList = &local_c;
  FUN_00a15c90(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  local_4 = 0xffffffff;
  *puVar1 = wxEventLoopBase::vftable;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(puVar1);
}



void __fastcall FUN_00924500(int param_1)

{
  **(undefined4 **)(param_1 + 4) = *(undefined4 *)(param_1 + 8);
  FUN_00924480();
  return;
}



undefined __thiscall
FUN_00924510(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,uint param_6,undefined4 param_7)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 unaff_retaddr;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8248;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(*param_1 + 0xf0))(param_1[0x39] | 8,DAT_0323f878 ^ (uint)&stack0xffffffe8);
  cVar1 = FUN_00926bb0(unaff_retaddr,param_2,param_3,param_4,param_5,param_6 | 0x80000,param_7);
  if (cVar1 == '\0') {
    ExceptionList = pvStack_10;
    return 0;
  }
  if ((*(byte *)(param_1 + 0x37) & 0x40) == 0) {
    uVar2 = FUN_008ff360(&stack0xffffffe8,0x11);
    puStack_8 = (undefined *)0x0;
    (**(code **)(*param_1 + 0x18c))(uVar2);
    puStack_8 = (undefined *)0xffffffff;
    FUN_00921450();
  }
  if (((uint)param_1[0x38] >> 6 & 1) != 0) {
    FUN_009242f0();
    FUN_0044634a(DAT_032bff00,FUN_00924340,0,0,0);
  }
  ExceptionList = pvStack_10;
  return 1;
}



void __fastcall FUN_00924620(undefined4 *param_1)

{
  char cVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd8278;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxDialog::vftable;
  local_4 = 0;
  cVar1 = FUN_0043d95d(uVar2);
  if (cVar1 != '\0') {
    if ((int *)param_1[0x7b] != (int *)0x0) {
      (**(code **)(*(int *)param_1[0x7b] + 0xc))(0);
    }
    FUN_00925da0(0);
  }
  FUN_00924160();
  local_4 = 0xffffffff;
  FUN_0044cd0c();
  ExceptionList = local_c;
  return;
}



int __fastcall FUN_009246b0(int *param_1)

{
  int *piVar1;
  char cVar2;
  int *piVar3;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd82b3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    cVar2 = (**(code **)(*param_1 + 0x39c))(DAT_0323f878 ^ (uint)&stack0xffffffd4);
    if (cVar2 != '\0') {
      FUN_00840480("..\\..\\src\\msw\\dialog.cpp",0xcd,"wxDialog::ShowModal","!IsModal()",
                   L"ShowModal() can\'t be called twice");
    }
  }
  (**(code **)(*param_1 + 0xcc))(1);
  cVar2 = (**(code **)(*param_1 + 0xdc))();
  if (cVar2 != '\0') {
    piVar3 = (int *)operator_new(0x24);
    puStack_8 = (undefined *)0x0;
    if (piVar3 == (int *)0x0) {
      piVar3 = (int *)0x0;
    }
    else {
      FUN_009243b0(param_1);
    }
    piVar1 = (int *)param_1[0x7b];
    param_1[0x7b] = (int)piVar3;
    puStack_8 = (undefined *)0x1;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar3 == (int *)0x0)) {
      FUN_008402e0("..\\..\\src\\msw\\dialog.cpp",0x4e,"wxDialogModalDataPtr::operator ->",
                   "m_ptr != 0",0);
    }
    (**(code **)(*piVar3 + 8))();
    puStack_8 = (undefined *)0xffffffff;
    param_1[0x7b] = (int)piVar1;
    FUN_00924480();
  }
  ExceptionList = pvStack_10;
  return param_1[0x71];
}



void __thiscall FUN_009247e0(int param_1_00,undefined4 param_1)

{
  FUN_009181c0(param_1);
  if ((*(uint *)(param_1_00 + 0xe0) >> 6 & 1) != 0) {
    FUN_009242f0();
    return;
  }
  FUN_00924160();
  return;
}



void __fastcall FUN_00924810(int *param_1)

{
  HWND hWnd;
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  int unaff_EBX;
  int unaff_EBP;
  undefined local_18 [4];
  undefined local_14 [4];
  undefined local_10 [16];
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[0x7a] == 0)) {
    FUN_00840480("..\\..\\src\\msw\\dialog.cpp",299,"wxDialog::ResizeGripper","m_hGripper",
                 L"shouldn\'t be called if we have no gripper");
  }
  hWnd = (HWND)param_1[0x7a];
  piVar5 = (int *)FUN_00917e70(local_10,hWnd);
  iVar1 = *piVar5;
  iVar2 = piVar5[1];
  iVar3 = piVar5[2];
  iVar4 = piVar5[3];
  (**(code **)(*param_1 + 0x27c))(local_18,local_14);
  SetWindowPos(hWnd,(HWND)0x1,unaff_EBP - (iVar3 - iVar1),unaff_EBX - (iVar4 - iVar2),iVar3 - iVar1,
               iVar4 - iVar2,0x10);
  return;
}



undefined4 __thiscall FUN_009248b0(int *param_1_00,int param_1,int param_2,undefined4 param_3)

{
  char cVar1;
  HCURSOR hCursor;
  undefined4 uVar2;
  HWND hWnd;
  int nCmdShow;
  int iStack_18;
  undefined auStack_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd82e0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 != 5) {
    if (param_1 == 0x10) {
      cVar1 = FUN_0091cfd0(0);
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return 0;
      }
    }
    else if (param_1 == 0x20) {
      cVar1 = (**(code **)(*param_1_00 + 0x39c))();
      if (cVar1 != '\0') {
        cVar1 = FUN_0095dbe0();
        if (cVar1 != '\0') {
          FUN_00913190(param_1_00 + 0x1f);
          uStack_4 = 0;
          cVar1 = FUN_00414f01();
          if (cVar1 == '\0') {
            FUN_008f7ad0(1);
            uStack_4._0_1_ = 1;
            FUN_0083ea60(auStack_14);
            uStack_4 = (uint)uStack_4._1_3_ << 8;
            FUN_008f7630();
          }
          if (iStack_18 == 0) {
            hCursor = (HCURSOR)0x0;
          }
          else {
            hCursor = *(HCURSOR *)(iStack_18 + 0x14);
          }
          SetCursor(hCursor);
          uStack_4 = 0xffffffff;
          FUN_008f7630();
          ExceptionList = local_c;
          return 0;
        }
      }
    }
    uVar2 = FUN_0090d970(param_1,param_2,param_3);
    ExceptionList = local_c;
    return uVar2;
  }
  hWnd = (HWND)param_1_00[0x7a];
  if (hWnd != (HWND)0x0) {
    if (param_2 == 0) {
      FUN_00924810(DAT_0323f878 ^ (uint)&stack0xffffffd8);
      hWnd = (HWND)param_1_00[0x7a];
      nCmdShow = 5;
    }
    else {
      if (param_2 != 2) goto LAB_00924a0d;
      nCmdShow = 0;
    }
    ShowWindow(hWnd,nCmdShow);
  }
LAB_00924a0d:
  uVar2 = FUN_0090d970(5,param_2,param_3);
  if ((*(byte *)((int)param_1_00 + 0xe2) & 1) != 0) {
    InvalidateRect((HWND)param_1_00[0x4f],(RECT *)0x0,0);
  }
  ExceptionList = local_c;
  return uVar2;
}



undefined ** FUN_00924a70(void)

{
  return &PTR_PTR_00d51b64;
}



undefined * FUN_00924a80(void)

{
  return &DAT_032bfc30;
}



undefined ** FUN_00924a90(void)

{
  return &PTR_u_wxTopLevelWindow_03239ae4;
}



void __thiscall FUN_00924aa0(int *param_1_00,int *param_1,int *param_2)

{
  int unaff_EBX;
  int local_8 [2];
  
  FUN_0090f540(param_1,param_2);
  (**(code **)(*param_1_00 + 0x78))(local_8);
  if (param_1 != (int *)0x0) {
    *param_1 = *param_1 - unaff_EBX;
  }
  if (param_2 != (int *)0x0) {
    *param_2 = *param_2 - local_8[0];
  }
  return;
}



void __thiscall FUN_00924af0(int *param_1,int *param_2)

{
  int unaff_ESI;
  int *unaff_retaddr;
  int local_8 [2];
  
  (**(code **)(*param_1 + 0x78))(local_8);
  if (unaff_retaddr != (int *)0x0) {
    *unaff_retaddr = *unaff_retaddr + unaff_ESI;
  }
  if (param_2 != (int *)0x0) {
    *param_2 = *param_2 + local_8[0];
  }
  FUN_0090f590(unaff_retaddr,param_2);
  return;
}



void __fastcall FUN_00924b60(int *param_1)

{
  int unaff_ESI;
  undefined local_10 [4];
  int *local_c [3];
  
  (**(code **)(*param_1 + 0x274))();
  (**(code **)(*param_1 + 0x278))(local_10);
  *local_c[0] = (int)local_c;
  local_c[0][1] = (int)local_10;
  local_c[0][2] = (int)local_c;
  local_c[0][3] = unaff_ESI;
  return;
}



undefined4 FUN_00924bc0(undefined4 param_1,undefined4 param_2)

{
  undefined4 local_8;
  undefined4 local_4;
  
  local_8 = param_2;
  local_4 = param_2;
  FUN_009748f0(param_1,&local_8);
  return param_1;
}



void __fastcall FUN_00924bf0(int param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 8) == 0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/weakref.h",0x43,
                 "wxWeakRefStatic<class wxWindow>::OnObjectDestroy","m_pobj != 0",0);
  }
  *(undefined4 *)(param_1 + 8) = 0;
  return;
}



void __fastcall FUN_00924c30(int param_1)

{
  *(undefined ***)(param_1 + 0x168) = wxControlContainerBase::vftable;
  FUN_00927e70();
  return;
}



undefined4 __fastcall FUN_00924c40(int *param_1)

{
  char cVar1;
  int iVar2;
  
  iVar2 = FUN_0086af40(param_1);
  if (iVar2 == 0) {
    FUN_0086ad60(param_1);
  }
  iVar2 = DAT_032396f0;
  if (DAT_032396f0 == 0) {
    return 1;
  }
  while ((*(int **)(iVar2 + 8) == param_1 ||
         (cVar1 = (**(code **)(**(int **)(iVar2 + 8) + 0xdc))(), cVar1 == '\0'))) {
    iVar2 = *(int *)(iVar2 + 0xc);
    if (iVar2 == 0) {
      return 1;
    }
  }
  (**(code **)(*param_1 + 0xcc))(0);
  return 1;
}



undefined4 FUN_00924ca0(void)

{
  int iVar1;
  char cVar2;
  int iVar3;
  
  if ((DAT_032bcb68 != 0) && (*(int *)(DAT_032bcb68 + 0x158) == 1)) {
    iVar3 = DAT_032396f0;
    iVar1 = DAT_032396f0;
    if (DAT_032396f0 != 0) {
      do {
        cVar2 = (**(code **)(**(int **)(iVar3 + 8) + 0x37c))();
        if (cVar2 != '\0') {
          return 0;
        }
        iVar3 = *(int *)(iVar3 + 0xc);
        iVar1 = DAT_032396f0;
      } while (iVar3 != 0);
    }
    while( true ) {
      if (iVar1 == 0) {
        return 1;
      }
      iVar3 = FUN_0086af40(*(undefined4 *)(iVar1 + 8));
      if ((iVar3 == 0) && (cVar2 = FUN_0091cfd0(0), cVar2 == '\0')) break;
      iVar1 = *(int *)(iVar1 + 0xc);
    }
    return 0;
  }
  return 0;
}



void __fastcall FUN_00924d50(int *param_1)

{
  undefined4 *puVar1;
  undefined4 *unaff_retaddr;
  undefined local_8 [8];
  
  puVar1 = (undefined4 *)(**(code **)(*param_1 + 0xa8))(local_8);
  (**(code **)(*param_1 + 0x290))
            (*unaff_retaddr,unaff_retaddr[1],*puVar1,puVar1[1],DAT_03238d04,DAT_03238d08);
  return;
}



void __fastcall FUN_00924da0(int *param_1)

{
  undefined4 *puVar1;
  undefined4 *unaff_retaddr;
  undefined local_8 [8];
  
  puVar1 = (undefined4 *)(**(code **)(*param_1 + 0xa4))(local_8);
  (**(code **)(*param_1 + 0x290))
            (*puVar1,puVar1[1],*unaff_retaddr,unaff_retaddr[1],DAT_03238d04,DAT_03238d08);
  return;
}



int * FUN_00924e30(int *param_1)

{
  int iVar1;
  int iVar2;
  undefined local_10 [16];
  
  iVar2 = FUN_008f78d0(local_10);
  iVar1 = *(int *)(iVar2 + 8);
  iVar2 = *(int *)(iVar2 + 0xc);
  *param_1 = iVar1;
  param_1[1] = iVar2;
  if (iVar1 < 0x400) {
    if (iVar1 < 800) {
      if (0x13f < iVar1) {
        *param_1 = 0xf0;
      }
    }
    else {
      *param_1 = 300;
    }
  }
  else {
    *param_1 = 400;
  }
  if (0x2ff < iVar2) {
    param_1[1] = 0xfa;
    return param_1;
  }
  if (200 < iVar2) {
    param_1[1] = (iVar2 * 2) / 3;
  }
  return param_1;
}



void __thiscall FUN_00924ec0(int *param_1,uint param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  uint uVar4;
  int *piVar5;
  int iStack_4c;
  int iStack_48;
  int iStack_44;
  int iStack_40;
  int iStack_3c;
  int iStack_38;
  int iStack_34;
  int iStack_30;
  int iStack_2c;
  int iStack_28;
  int iStack_24;
  int iStack_20;
  undefined auStack_1c [16];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8308;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x350))(DAT_0323f878 ^ (uint)&stack0xffffff9c);
  if (cVar1 == '\0') {
    cVar1 = (**(code **)(*param_1 + 0x34c))();
    if (cVar1 == '\0') {
      piVar3 = (int *)param_1[0x11];
      if ((int *)param_1[0x11] == (int *)0x0) {
        piVar3 = param_1;
      }
      uVar2 = FUN_0099a530(piVar3);
      FUN_0099a810(-(uint)(uVar2 != 0xffffffff) & uVar2);
      uStack_4 = 0;
      FUN_0099a5f0(&iStack_3c);
      iStack_4c = 0;
      iStack_48 = 0;
      iStack_44 = 0;
      iStack_40 = 0;
      if (((param_2 & 2) == 0) && (param_1[0x11] != 0)) {
        piVar3 = (int *)FUN_00924b60(&iStack_2c);
        iStack_4c = *piVar3;
        iStack_48 = piVar3[1];
        iStack_44 = piVar3[2];
        iStack_40 = piVar3[3];
        cVar1 = FUN_008f7940(&iStack_3c);
        if (cVar1 == '\0') {
          iStack_4c = iStack_3c;
          iStack_48 = iStack_38;
          iStack_44 = iStack_34;
          iStack_40 = iStack_30;
        }
      }
      else {
        iStack_4c = iStack_3c;
        iStack_48 = iStack_38;
        iStack_44 = iStack_34;
        iStack_40 = iStack_30;
      }
      if ((param_2 & 0xc) == 0) {
        param_2 = param_2 | 0xc;
      }
      param_2 = param_2 & 0xfffffffd;
      piVar3 = &iStack_4c;
      piVar5 = &iStack_2c;
      FUN_0091aed0(auStack_1c);
      FUN_0091acc0(piVar5,piVar3,param_2);
      cVar1 = FUN_008f7580(iStack_2c,iStack_28);
      if (cVar1 == '\0') {
        iStack_2c = iStack_2c + ((iStack_3c - iStack_2c < 1) - 1 & iStack_3c - iStack_2c);
        iStack_28 = iStack_28 + ((iStack_38 - iStack_28 < 1) - 1 & iStack_38 - iStack_28);
      }
      cVar1 = FUN_008f7580(iStack_24 + -1 + iStack_2c,iStack_28 + -1 + iStack_20);
      if (cVar1 == '\0') {
        uVar2 = ((iStack_34 - iStack_24) - iStack_2c) + iStack_3c;
        uVar4 = ((iStack_30 - iStack_20) - iStack_28) + iStack_38;
        iStack_2c = iStack_2c + ((-1 < (int)uVar2) - 1 & uVar2);
        iStack_28 = iStack_28 + ((-1 < (int)uVar4) - 1 & uVar4);
      }
      (**(code **)(*param_1 + 0x288))(iStack_2c,iStack_28,iStack_24,iStack_20,4);
      uStack_4 = 0xffffffff;
      FUN_0099a3d0();
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009250e0(int *param_1_00,int *param_1)

{
  char cVar1;
  undefined local_14 [4];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea178;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00974660(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  local_4 = 0;
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    FUN_00974b10(param_1);
  }
  (**(code **)(*param_1_00 + 0x358))(local_14);
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_10;
  return;
}



void __fastcall FUN_00925180(int *param_1)

{
  int *piVar1;
  char cVar2;
  undefined4 unaff_EBX;
  int *piVar3;
  undefined4 unaff_EBP;
  int iVar4;
  bool bVar5;
  undefined auStack_8 [4];
  undefined auStack_4 [4];
  
  if ((*(byte *)(param_1 + 0x37) & 1) != 0) {
                    // WARNING: Could not recover jumptable at 0x0092519c. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*param_1 + 0x204))();
    return;
  }
  iVar4 = param_1[0x15];
  if (iVar4 != 0) {
    piVar3 = (int *)0x0;
    do {
      piVar1 = *(int **)(iVar4 + 8);
      cVar2 = (**(code **)(*piVar1 + 0x11c))();
      if (((cVar2 == '\0') && (cVar2 = (**(code **)(*param_1 + 0x390))(piVar1), cVar2 == '\0')) &&
         (bVar5 = piVar3 != (int *)0x0, piVar3 = piVar1, bVar5)) {
        return;
      }
      iVar4 = *(int *)(iVar4 + 0xc);
    } while (iVar4 != 0);
    if ((piVar3 != (int *)0x0) && (cVar2 = (**(code **)(*piVar3 + 0xdc))(), cVar2 != '\0')) {
      (**(code **)(*param_1 + 0x27c))(auStack_4,auStack_8);
      (**(code **)(*piVar3 + 0x288))(0,0,unaff_EBP,unaff_EBX,3);
    }
  }
  return;
}



void FUN_00925230(int param_1)

{
  FUN_00923970(*(undefined4 *)(param_1 + 8));
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



void __fastcall FUN_00925260(undefined4 *param_1)

{
  *param_1 = wxTrackerNode::vftable;
  return;
}



undefined __thiscall FUN_00925270(int param_1_00,undefined param_1)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_38 [2];
  int local_30;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a68;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  FUN_00845a20(*(undefined4 *)(param_1_00 + 0x40),DAT_032bff0c);
  local_38[0] = wxIconizeEvent::vftable;
  local_10 = (void *)CONCAT31(local_10._1_3_,param_1);
  local_4 = 0;
  local_30 = param_1_00;
  uVar1 = (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_38,uVar2);
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  ExceptionList = local_10;
  return uVar1;
}



undefined4 * __fastcall FUN_00925310(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8346;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009280b0(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  local_4 = 0;
  *param_1 = wxNavigationEnabled<class_wxNonOwnedWindow>::vftable;
  FUN_00922e80();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0044621e(param_1);
  uVar1 = DAT_032bfe6c;
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = wxObjectEventFunctor::vftable;
    puVar2[1] = 0;
    puVar2[2] = &LAB_00924b40;
    puVar2[3] = 0;
  }
  FUN_008461a0(0xffffffff,0xffffffff,uVar1,puVar2,0);
  uVar1 = DAT_032bfe38;
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = wxObjectEventFunctor::vftable;
    puVar2[1] = 0;
    puVar2[2] = &LAB_00924b50;
    puVar2[3] = 0;
  }
  FUN_008461a0(0xffffffff,0xffffffff,uVar1,puVar2,0);
  uVar1 = DAT_032bfe40;
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = wxObjectEventFunctor::vftable;
    puVar2[1] = 0;
    puVar2[2] = FUN_00925230;
    puVar2[3] = 0;
  }
  FUN_008461a0(0xffffffff,0xffffffff,uVar1,puVar2,0);
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00925440(int param_1_00,byte param_1)

{
  *(undefined ***)(param_1_00 + 0x168) = wxControlContainerBase::vftable;
  FUN_00927e70();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00925470(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd8378;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = wxWeakRef<class_wxWindow>::vftable;
  local_4 = 0;
  if (param_1[2] != 0) {
    FUN_00845930(param_1);
    param_1[2] = 0;
  }
  *param_1 = wxTrackerNode::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009254e0(undefined4 param_1_00,byte param_1)

{
  FUN_00925470();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_00925500(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd83a8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00925310(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  local_4 = 0;
  *param_1 = wxTopLevelWindowBase::vftable;
  FUN_00974660();
  param_1[0x60] = wxWeakRef<class_wxWindow>::vftable;
  param_1[0x61] = 0;
  param_1[0x62] = 0;
  param_1[99] = wxWeakRef<class_wxWindow>::vftable;
  param_1[100] = 0;
  param_1[0x65] = 0;
  *(byte *)(param_1 + 0x37) = *(byte *)(param_1 + 0x37) & 0xfd;
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_009255e0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  undefined4 *puVar5;
  undefined **ppuVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd8402;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  *param_1 = wxTopLevelWindowBase::vftable;
  local_4 = 3;
  if ((DAT_032bcb68 != (int *)0x0) &&
     (puVar5 = (undefined4 *)(**(code **)(*DAT_032bcb68 + 0xd4))(uVar4), puVar5 == param_1)) {
    DAT_032bcb68[0x55] = 0;
  }
  FUN_0086b0c0(param_1);
  iVar2 = DAT_032bcb80;
  while (iVar2 != 0) {
    piVar1 = *(int **)(iVar2 + 8);
    if (((piVar1 == (int *)0x0) ||
        (((ppuVar6 = (undefined **)(**(code **)*piVar1)(), ppuVar6 != &PTR_u_wxWindow_03239714 &&
          ((ppuVar6[3] == (undefined *)0x0 ||
           (cVar3 = FUN_0048a047(&PTR_u_wxWindow_03239714), cVar3 == '\0')))) &&
         ((ppuVar6[4] == (undefined *)0x0 ||
          (cVar3 = FUN_0048a047(&PTR_u_wxWindow_03239714), cVar3 == '\0')))))) ||
       ((undefined4 *)piVar1[0x11] != param_1)) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar2 == 0)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/list.h",0x4ab,
                     "wxObjectList::iterator::operator ++","m_node",L"uninitialized iterator");
      }
      iVar2 = *(int *)(iVar2 + 0xc);
    }
    else {
      FUN_0086b060(iVar2);
      (**(code **)(*piVar1 + 4))(1);
      iVar2 = DAT_032bcb80;
    }
  }
  cVar3 = FUN_00924ca0();
  if (cVar3 != '\0') {
    (**(code **)(*DAT_032bcb68 + 0xa8))();
  }
  local_4._0_1_ = 2;
  FUN_00925470();
  local_4._0_1_ = 1;
  FUN_00925470();
  local_4 = (uint)local_4._1_3_ << 8;
  param_1[0x5e] = wxObject::vftable;
  FUN_0083e850();
  local_4 = 0xffffffff;
  param_1[0x5a] = wxControlContainerBase::vftable;
  FUN_00927e70();
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_00925790(undefined4 *param_1)

{
  undefined **ppuVar1;
  int iVar2;
  undefined ***pppuVar3;
  bool bVar4;
  undefined **local_1c;
  int local_18;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8452;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = FUN_00974670(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  bVar4 = iVar2 != 0;
  if (bVar4) {
    pppuVar3 = (undefined ***)FUN_00924bc0(local_14,0xffffffff);
  }
  else {
    local_18 = iVar2;
    local_1c = wxIcon::vftable;
    pppuVar3 = &local_1c;
    local_4 = 1;
  }
  *param_1 = wxObject::vftable;
  ppuVar1 = pppuVar3[1];
  param_1[1] = ppuVar1;
  if (ppuVar1 != (undefined **)0x0) {
    ppuVar1[1] = ppuVar1[1] + 1;
  }
  *param_1 = wxIcon::vftable;
  if (bVar4) {
    FUN_008f7630();
  }
  local_4 = 0;
  if (!bVar4) {
    FUN_008f7630();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00925870(undefined4 param_1_00,byte param_1)

{
  FUN_009255e0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_00925890(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 100,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



void __thiscall FUN_009258d0(int *param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  bool bVar5;
  undefined auStack_78 [4];
  uint uStack_74;
  undefined4 uStack_64;
  uint uStack_60;
  void *pvStack_5c;
  undefined local_54 [4];
  undefined4 uStack_50;
  uint uStack_3c;
  void *pvStack_38;
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8488;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_c;
  FUN_0091c9b0(param_1);
  if (*(char *)(param_1 + 0x61) != '\0') {
    iVar2 = (**(code **)(*param_1_00 + 0x36c))(local_54,uVar1);
    uStack_4 = 0;
    iVar3 = FUN_00925890(auStack_78);
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    if (*(int *)(iVar3 + 0x14) == *(int *)(iVar2 + 0x14)) {
      iVar2 = FUN_00850760(iVar2);
      bVar5 = iVar2 == 0;
    }
    else {
      bVar5 = false;
    }
    _free(pvStack_5c);
    if (7 < uStack_60) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_74);
    }
    uStack_60 = 7;
    uStack_64 = 0;
    uStack_74 = uStack_74 & 0xffff0000;
    uStack_4 = 0xffffffff;
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    if (!bVar5) {
      uVar4 = FUN_00925890(auStack_30);
      uStack_4 = 2;
      (**(code **)(*param_1_00 + 0x368))(uVar4);
      _free(pvStack_14);
      if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_2c);
      }
    }
  }
  ExceptionList = local_c;
  return;
}



undefined ** FUN_00925a30(void)

{
  return &PTR_u_wxTLWHiddenParentModule_03239ba0;
}



undefined ** FUN_00925a40(void)

{
  return &PTR_PTR_00d5237c;
}



undefined * FUN_00925a50(void)

{
  return &DAT_032bfc8c;
}



void __fastcall FUN_00925a60(int param_1)

{
  *(undefined *)(param_1 + 0x19d) = 0;
  *(undefined *)(param_1 + 0x19c) = 0;
  *(undefined4 *)(param_1 + 0x1a0) = 0;
  *(undefined4 *)(param_1 + 0x1b4) = 0;
  *(undefined *)(param_1 + 0x1b8) = 0;
  *(undefined *)(param_1 + 0x1b9) = 0;
  *(undefined4 *)(param_1 + 0x1bc) = 0;
  *(undefined4 *)(param_1 + 0x1c0) = 0;
  return;
}



undefined4 __thiscall FUN_00925aa0(int param_1_00,int param_1,uint param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 uVar2;
  
  if (((param_1 == 0x112) && (*(int *)(param_1_00 + 0x1c0) != 0)) && ((param_2 & 0xfff0) < 0xf000))
  {
    cVar1 = FUN_0092cd00(0,param_2 & 0xfff0);
    if (cVar1 != '\0') {
      return 0;
    }
  }
  uVar2 = FUN_0090d970(param_1,param_2,param_3);
  return uVar2;
}



undefined4 FUN_00925b80(void)

{
  DAT_032bfc84 = 0;
  DAT_032bfc88 = 0;
  return 1;
}



uint __thiscall FUN_00925b90(int *param_1_00,uint param_1,uint *param_2)

{
  char cVar1;
  uint uVar2;
  
  uVar2 = FUN_00914a80(param_1 & 0xe0ffffff | 0x200000,param_2);
  uVar2 = uVar2 & 0xafffffff;
  if (((param_1 & 0x40) == 0) || (cVar1 = (**(code **)(*param_1_00 + 0x350))(), cVar1 != '\0')) {
    if ((param_2 == (uint *)0x0) || ((param_1 & 0x14000000) == 0)) {
      if ((param_1 & 0x200000) == 0) {
        uVar2 = uVar2 | 0x800000;
      }
      else {
        uVar2 = uVar2 | 0x80000000;
      }
    }
    else {
      *param_2 = *param_2 | 1;
    }
  }
  else {
    uVar2 = uVar2 | 0x40000;
  }
  if ((param_1 & 0x20000000) == 0) {
    uVar2 = uVar2 | 0x80000000;
  }
  else {
    uVar2 = uVar2 | 0xc00000;
  }
  if (-1 < (char)param_1_00[0x39]) {
    if ((param_1 & 0x400) != 0) {
      uVar2 = uVar2 | 0x20000;
    }
    if ((param_1 & 0x200) != 0) {
      uVar2 = uVar2 | 0x10000;
    }
  }
  if ((param_1 & 0x1800) != 0) {
    uVar2 = uVar2 | 0x80000;
  }
  if ((param_1 & 0x4000) != 0) {
    uVar2 = uVar2 | 0x20000000;
  }
  if ((param_1 & 0x2000) != 0) {
    uVar2 = uVar2 | 0x1000000;
  }
  if ((char)param_1 < '\0') {
    uVar2 = uVar2 | 0xc00000;
  }
  if (param_2 != (uint *)0x0) {
    if ((param_1_00[0x39] & 8U) == 0) {
      if ((param_1 & 4) != 0) {
        *param_2 = *param_2 | 0x80;
        param_1 = param_1 | 2;
      }
      if (((param_1 & 2) == 0) && (param_1_00[0x11] != 0)) {
        *param_2 = *param_2 | 0x40000;
      }
    }
    if ((*(byte *)(param_1_00 + 0x39) & 0x80) != 0) {
      *param_2 = *param_2 | 0x400;
    }
    if ((param_1 & 0x8000) != 0) {
      *param_2 = *param_2 | 8;
      return uVar2;
    }
  }
  return uVar2;
}



void __fastcall FUN_00925cd0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd84e8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxTopLevelWindowMSW::vftable;
  local_4 = 0;
  if ((int *)param_1[0x70] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x70] + 4))(1,uVar1);
  }
  FUN_0091e7c0();
  if ((((uint)param_1[0x38] >> 3 & 1) != 0) && (param_1[0x11] != 0)) {
    BringWindowToTop(*(HWND *)(param_1[0x11] + 0x13c));
  }
  local_4 = 0xffffffff;
  FUN_009255e0();
  ExceptionList = local_c;
  return;
}



undefined __thiscall FUN_00925da0(int param_1_00,undefined4 param_1)

{
  char cVar1;
  int nCmdShow;
  
  cVar1 = FUN_0091aa60(param_1);
  if (cVar1 == '\0') {
    return 0;
  }
  if ((char)param_1 == '\0') {
    nCmdShow = 0;
  }
  else if (*(char *)(param_1_00 + 0x19d) == '\0') {
    if (*(char *)(param_1_00 + 0x19c) == '\0') {
      if ((*(uint *)(param_1_00 + 0xe0) >> 2 & 1) == 0) {
        cVar1 = FUN_0091b930();
        if (cVar1 != '\0') {
          nCmdShow = 5;
          goto LAB_00925e0b;
        }
      }
      nCmdShow = 8;
    }
    else {
      nCmdShow = 6;
    }
  }
  else {
    nCmdShow = 3;
    *(undefined *)(param_1_00 + 0x19d) = 0;
  }
LAB_00925e0b:
  *(undefined4 *)(param_1_00 + 0x15c) = DAT_03238d04;
  *(undefined4 *)(param_1_00 + 0x160) = DAT_03238d08;
  ShowWindow(*(HWND *)(param_1_00 + 0x13c),nCmdShow);
  if (nCmdShow != 0) {
    *(bool *)(param_1_00 + 0x19c) = nCmdShow == 6;
  }
  return 1;
}



void __thiscall FUN_00925e50(int *param_1,char param_2)

{
  char cVar1;
  int iVar2;
  int iVar3;
  undefined auStack_10 [16];
  
  cVar1 = (**(code **)(*param_1 + 0xdc))();
  if (cVar1 == '\0') {
    *(char *)((int)param_1 + 0x19d) = param_2;
    if (param_2 != '\0') {
      iVar2 = FUN_008f78d0(auStack_10);
      iVar3 = *(int *)(iVar2 + 0xc);
      param_1[0x57] = *(int *)(iVar2 + 8);
      param_1[0x58] = iVar3;
      return;
    }
  }
  else {
    iVar3 = (-(uint)(param_2 != '\0') & 0xfffffffa) + 9;
    ShowWindow((HWND)param_1[0x4f],iVar3);
    if (iVar3 != 0) {
      *(bool *)(param_1 + 0x67) = iVar3 == 6;
    }
  }
  return;
}



undefined4 __fastcall FUN_00925ed0(int *param_1)

{
  char cVar1;
  BOOL BVar2;
  
  cVar1 = (**(code **)(*param_1 + 0x350))();
  if (cVar1 == '\0') {
    BVar2 = IsZoomed((HWND)param_1[0x4f]);
    if ((BVar2 == 0) && (*(char *)((int)param_1 + 0x19d) == '\0')) {
      return 0;
    }
  }
  return 1;
}



undefined __fastcall FUN_00925f70(int *param_1)

{
  char cVar1;
  BOOL BVar2;
  
  cVar1 = (**(code **)(*param_1 + 0xdc))();
  if (cVar1 == '\0') {
    return *(undefined *)(param_1 + 0x67);
  }
  BVar2 = IsIconic((HWND)param_1[0x4f]);
  return BVar2 != 0;
}



void __fastcall FUN_00925fa0(int param_1)

{
  ShowWindow(*(HWND *)(param_1 + 0x13c),9);
  *(undefined *)(param_1 + 0x19c) = 0;
  return;
}



void __thiscall FUN_00926090(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxActivateEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



undefined4 * FUN_009260e0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxTLWHiddenParentModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 * FUN_00926140(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxActivateEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __thiscall FUN_009261b0(int *param_1,undefined4 *param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 uVar5;
  uint unaff_EDI;
  undefined4 unaff_retaddr;
  undefined *puVar6;
  undefined4 auStack_c [2];
  int iStack_4;
  
  uVar2 = (**(code **)(*param_1 + 0xe8))();
  uVar2 = (**(code **)(*param_1 + 0x2c8))(uVar2,auStack_c);
  cVar1 = (**(code **)(*param_1 + 0x350))();
  puVar3 = &DAT_03238d04;
  if (cVar1 == '\0') {
    puVar3 = param_2;
  }
  auStack_c[0] = puVar3[1];
  iVar4 = (**(code **)(*DAT_032bcb68 + 0xe4))();
  if (iVar4 == 2) {
    unaff_EDI = unaff_EDI | 0x400000;
  }
  if (*(uint *)(iStack_4 + 0x18) < 8) {
    iVar4 = iStack_4 + 4;
  }
  else {
    iVar4 = *(int *)(iStack_4 + 4);
  }
  puVar6 = &stack0xfffffff0;
  uVar5 = FUN_0090d740(iVar4,unaff_retaddr,puVar6,uVar2,unaff_EDI);
  FUN_00916440(uVar5,iVar4,unaff_retaddr,puVar6,uVar2,unaff_EDI);
  return;
}



undefined4 __thiscall
FUN_00926250(int param_1_00,undefined4 param_1,int param_2,int param_3,WPARAM param_5)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined *puVar4;
  undefined local_24 [4];
  int *local_20;
  int local_1c;
  int local_18;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8520;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  iVar3 = GetSystemMetrics(param_3);
  local_1c = GetSystemMetrics(param_2);
  local_18 = iVar3;
  FUN_00974a60(local_24,&local_1c);
  local_4 = 0;
  if (local_20 != (int *)0x0) {
    cVar1 = (**(code **)(*local_20 + 4))(uVar2);
    if (cVar1 != '\0') goto LAB_009262f8;
  }
  puVar4 = (undefined *)FUN_009748f0(local_14,&local_1c);
  local_4._0_1_ = 1;
  if (local_24 != puVar4) {
    FUN_0083ea60(puVar4);
  }
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_008f7630();
LAB_009262f8:
  if (local_20 != (int *)0x0) {
    cVar1 = (**(code **)(*local_20 + 4))();
    if (cVar1 != '\0') {
      if (local_20 == (int *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = local_20[5];
      }
      SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x80,param_5,iVar3);
      local_4 = 0xffffffff;
      FUN_008f7630();
      ExceptionList = local_c;
      return 1;
    }
  }
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return 0;
}



// WARNING: Removing unreachable block (ram,0x0092653f)

void __thiscall FUN_00926440(int param_1_00,byte param_1)

{
  uint uVar1;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8558;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  if (DAT_032bfccc == (code *)0x0) {
    FUN_004325b6(L"user32.dll");
    local_4 = 0;
    FUN_0089ed30(local_54,2);
    local_4._0_1_ = 2;
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    FUN_004325b6(L"FlashWindowEx");
    local_4 = CONCAT31(local_4._1_3_,3);
    DAT_032bfccc = (code *)FUN_0089f060(local_30,0);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_2c = local_2c & 0xffff0000;
    local_4 = 0xffffffff;
    local_18 = 7;
    local_1c = 0;
    if (DAT_032bfccc == (code *)0x0) {
      FlashWindow(*(HWND *)(param_1_00 + 0x13c),1);
      ExceptionList = local_c;
      return;
    }
  }
  local_4 = 0xffffffff;
  local_64 = *(undefined4 *)(param_1_00 + 0x13c);
  local_5c = 0;
  local_58 = 0;
  local_68 = 0x14;
  local_60 = 3;
  if ((param_1 & 1) == 0) {
    local_60 = 0xf;
    (*DAT_032bfccc)(&local_68,uVar1);
    ExceptionList = pvStack_10;
    return;
  }
  local_5c = 3;
  (*DAT_032bfccc)(&local_68);
  ExceptionList = pvStack_10;
  return;
}



// WARNING: Removing unreachable block (ram,0x00926704)

bool __thiscall FUN_00926600(int *param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  void *local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8598;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  if (DAT_03239b98 == (code *)0xffffffff) {
    FUN_004325b6(L"user32.dll");
    local_4 = 0;
    FUN_0089ed30(local_54,2);
    local_4._0_1_ = 2;
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    FUN_004325b6(L"SetLayeredWindowAttributes");
    local_4 = CONCAT31(local_4._1_3_,3);
    DAT_03239b98 = (code *)FUN_0089f2d0(0,local_30,uVar1);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = (void *)0x0;
    local_2c = local_2c & 0xffff0000;
  }
  local_4 = 0xffffffff;
  if (DAT_03239b98 == (code *)0x0) {
    ExceptionList = local_c;
    return false;
  }
  uVar1 = GetWindowLongW((HWND)param_1[0x4f],-0x14);
  if ((char)param_2 != -1) {
    if ((uVar1 & 0x80000) == 0) {
      SetWindowLongW((HWND)param_1[0x4f],-0x14,uVar1 | 0x80000);
    }
    iVar2 = (*DAT_03239b98)(param_1[0x4f],0,param_2,2);
    ExceptionList = local_1c;
    return iVar2 != 0;
  }
  SetWindowLongW((HWND)param_1[0x4f],-0x14,uVar1 & 0xfff7ffff);
  (**(code **)(*param_1 + 0x15c))(1,0);
  ExceptionList = local_14;
  return true;
}



undefined4 __thiscall FUN_009267d0(int *param_1,LPCDLGTEMPLATEW param_2,int param_3)

{
  char cVar1;
  int iVar2;
  HINSTANCE hInstance;
  HWND pHVar3;
  undefined4 uVar4;
  LPCWSTR lpString;
  BOOL BVar5;
  code *lpDialogFunc;
  LPARAM dwInitParam;
  int *piStack_10c;
  int iStack_108;
  int iStack_104;
  int iStack_100;
  int iStack_fc;
  uint uStack_e0;
  void *pvStack_dc;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd85ff;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(*param_1 + 0xe8))();
  iVar2 = FUN_00938f40();
  if (iVar2 == 0) {
    pHVar3 = (HWND)0x0;
  }
  else {
    pHVar3 = *(HWND *)(iVar2 + 0x13c);
  }
  dwInitParam = 0;
  lpDialogFunc = FUN_00a278e0;
  hInstance = (HINSTANCE)FUN_008a65e0();
  pHVar3 = CreateDialogIndirectParamW(hInstance,param_2,pHVar3,lpDialogFunc,dwInitParam);
  param_1[0x4f] = (int)pHVar3;
  if (pHVar3 == (HWND)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4._0_1_ = 1;
      FUN_008423d0();
      uStack_4._0_1_ = 2;
      GetLastError();
      FUN_0084d140();
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_00842440();
      _free(pvStack_dc);
      if (7 < uStack_e0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    uVar4 = 0;
  }
  else {
    if (((uint)param_1[0x39] >> 7 & 1) != 0) {
      (**(code **)(*DAT_032bcb68 + 0xd4))();
      iVar2 = FUN_0048a085();
      if (iVar2 != 0) {
        FUN_00925790();
        uStack_4 = 3;
        if (piStack_10c != (int *)0x0) {
          cVar1 = (**(code **)(*piStack_10c + 4))();
          if (cVar1 != '\0') {
            if (piStack_10c == (int *)0x0) {
              iVar2 = 0;
            }
            else {
              iVar2 = piStack_10c[5];
            }
            SendMessageW((HWND)param_1[0x4f],0x80,1,iVar2);
          }
        }
        uStack_4 = 0xffffffff;
        FUN_008f7630();
      }
    }
    if (*(int *)(param_3 + 0x14) != 0) {
      if (*(uint *)(param_3 + 0x18) < 8) {
        lpString = (LPCWSTR)(param_3 + 4);
      }
      else {
        lpString = *(LPCWSTR *)(param_3 + 4);
      }
      SetWindowTextW((HWND)param_1[0x4f],lpString);
    }
    FUN_00914900();
    (**(code **)(*param_1 + 0x32c))();
    if (iStack_fc == -0x80000000) {
      SetWindowPos((HWND)param_1[0x4f],(HWND)0x0,0,0,iStack_108,iStack_104,6);
    }
    else {
      BVar5 = MoveWindow((HWND)param_1[0x4f],iStack_fc,iStack_100,iStack_108,iStack_104,0);
      if (BVar5 == 0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 4;
          FUN_008423d0();
          uStack_4._0_1_ = 5;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = CONCAT31(uStack_4._1_3_,4);
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
    }
    uVar4 = 1;
  }
  ExceptionList = local_c;
  return uVar4;
}



char __thiscall
FUN_00926bb0(int *param_1_00,int *param_1,undefined4 param_2,uint param_3,undefined4 param_4,
            int *param_5,uint param_6,undefined4 param_7)

{
  char cVar1;
  int *piVar2;
  uint *_Memory;
  uint uVar3;
  int iVar4;
  uint uVar5;
  int local_10;
  int local_c;
  undefined local_8 [8];
  
  local_10 = *param_5;
  local_c = param_5[1];
  if ((local_10 == -1) || (local_c == -1)) {
    piVar2 = (int *)FUN_00924e30(local_8);
    if (local_10 == -1) {
      local_10 = *piVar2;
    }
    if (local_c == -1) {
      local_c = piVar2[1];
    }
  }
  FUN_0086ad60(param_1_00);
  uVar5 = param_6;
  cVar1 = FUN_0091b030(param_1,param_2,param_4,&local_10,param_6,param_7);
  if (cVar1 == '\0') {
    return '\0';
  }
  if (param_1 != (int *)0x0) {
    (**(code **)(*param_1 + 0x124))(param_1_00);
  }
  if ((*(byte *)(param_1_00 + 0x39) & 8) == 0) {
    cVar1 = FUN_009261b0(param_3,param_4,&local_10);
  }
  else {
    _Memory = (uint *)_malloc(0x18);
    *_Memory = 0;
    _Memory[1] = 0;
    _Memory[2] = 0;
    _Memory[3] = 0;
    _Memory[4] = 0;
    _Memory[5] = 0;
    *(undefined2 *)((int)_Memory + 10) = 0x22;
    *(undefined2 *)(_Memory + 4) = 0x4b;
    *(undefined2 *)(_Memory + 3) = 0x16;
    *(undefined2 *)((int)_Memory + 0xe) = 0x90;
    uVar3 = (**(code **)(*param_1_00 + 0x2c8))(uVar5,&param_5);
    *_Memory = uVar3;
    *_Memory = uVar3 | 0x80000000;
    _Memory[1] = param_3;
    iVar4 = (**(code **)(*DAT_032bcb68 + 0xe4))();
    if (iVar4 == 2) {
      _Memory[1] = _Memory[1] | 0x400000;
    }
    if ((uVar5 & 0x20000040) != 0) {
      *_Memory = *_Memory | 0x80;
    }
    cVar1 = FUN_009267d0(_Memory,param_3,param_4,&local_10);
    _free(_Memory);
  }
  if (cVar1 != '\0') {
    uVar5 = (**(code **)(*param_1_00 + 0xe8))();
    if ((uVar5 & 0x1000) == 0) {
      (**(code **)(*param_1_00 + 0x370))(0);
    }
    FUN_0090ec20(3,0);
  }
  return cVar1;
}



void __thiscall FUN_00926d60(int *param_1,int *param_2,int *param_3)

{
  int iVar1;
  int iVar2;
  char cVar3;
  BOOL BVar4;
  int *piVar5;
  WINDOWPLACEMENT aWStack_bc [4];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd863e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar3 = (**(code **)(*param_1 + 0x354))();
  if (cVar3 != '\0') {
    aWStack_bc[0].length = 0x2c;
    BVar4 = GetWindowPlacement((HWND)param_1[0x4f],aWStack_bc);
    if (BVar4 != 0) {
      if (((uint)param_1[0x38] >> 2 & 1) == 0) {
        FUN_0099a530();
        FUN_0099a810();
        uStack_4 = 0;
        piVar5 = (int *)FUN_0099a590();
        iVar1 = piVar5[1];
        iVar2 = *piVar5;
        piVar5 = (int *)FUN_0099a5f0();
        aWStack_bc[0].rcNormalPosition.top =
             aWStack_bc[0].rcNormalPosition.top + (piVar5[1] - iVar1);
        aWStack_bc[0].rcNormalPosition.left =
             aWStack_bc[0].rcNormalPosition.left + (*piVar5 - iVar2);
        uStack_4 = 0xffffffff;
        FUN_0099a3d0();
      }
      if (param_2 != (int *)0x0) {
        *param_2 = aWStack_bc[0].rcNormalPosition.left;
      }
      if (param_3 == (int *)0x0) {
        ExceptionList = local_c;
        return;
      }
      *param_3 = aWStack_bc[0].rcNormalPosition.top;
      ExceptionList = local_c;
      return;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(6);
    if (cVar3 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 1;
      FUN_008423d0();
      uStack_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  FUN_009182b0();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00926f60(int *param_1,int *param_2,int *param_3)

{
  char cVar1;
  BOOL BVar2;
  WINDOWPLACEMENT aWStack_88 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8673;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x354))();
  if (cVar1 != '\0') {
    aWStack_88[0].length = 0x2c;
    BVar2 = GetWindowPlacement((HWND)param_1[0x4f],aWStack_88);
    if (BVar2 != 0) {
      if (param_2 != (int *)0x0) {
        *param_2 = aWStack_88[0].rcNormalPosition.right - aWStack_88[0].rcNormalPosition.left;
      }
      if (param_3 == (int *)0x0) {
        ExceptionList = local_c;
        return;
      }
      *param_3 = aWStack_88[0].rcNormalPosition.bottom - aWStack_88[0].rcNormalPosition.top;
      ExceptionList = local_c;
      return;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  FUN_00918220();
  ExceptionList = local_c;
  return;
}



bool __thiscall FUN_009270e0(int param_1,char param_2)

{
  char cVar1;
  HMENU hMenu;
  BOOL BVar2;
  bool bVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd86c9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  hMenu = GetSystemMenu(*(HWND *)(param_1 + 0x13c),0);
  if (hMenu == (HMENU)0x0) {
    bVar3 = param_2 == '\0';
  }
  else {
    BVar2 = EnableMenuItem(hMenu,0xf060,(uint)(param_2 == '\0'));
    if (BVar2 == -1) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
      bVar3 = false;
    }
    else {
      BVar2 = DrawMenuBar(*(HWND *)(param_1 + 0x13c));
      if (BVar2 == 0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 2;
          FUN_008423d0();
          uStack_4._0_1_ = 3;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = CONCAT31(uStack_4._1_3_,2);
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      bVar3 = true;
    }
  }
  ExceptionList = local_c;
  return bVar3;
}



void FUN_00927310(void)

{
  char cVar1;
  BOOL BVar2;
  HINSTANCE hInstance;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd86c9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032bfc84 != (HWND)0x0) {
    BVar2 = DestroyWindow(DAT_032bfc84);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    DAT_032bfc84 = (HWND)0x0;
  }
  if (DAT_032bfc88 != (LPCWSTR)0x0) {
    hInstance = (HINSTANCE)FUN_008a65e0();
    BVar2 = UnregisterClassW(DAT_032bfc88,hInstance);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 2;
        FUN_008423d0();
        uStack_4._0_1_ = 3;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = CONCAT31(uStack_4._1_3_,2);
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    DAT_032bfc88 = (LPCWSTR)0x0;
  }
  ExceptionList = local_c;
  return;
}



HWND FUN_00927530(void)

{
  char cVar1;
  ATOM AVar2;
  HINSTANCE hInstance;
  WNDCLASSW local_fc [6];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8719;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032bfc84 == (HWND)0x0) {
    if (DAT_032bfc88 == (LPCWSTR)0x0) {
      local_fc[0].style = (UINT)DAT_032bfc84;
      local_fc[0].cbClsExtra = (int)DAT_032bfc84;
      local_fc[0].cbWndExtra = (int)DAT_032bfc84;
      local_fc[0].hInstance = (HINSTANCE)DAT_032bfc84;
      local_fc[0].hIcon = (HICON)DAT_032bfc84;
      local_fc[0].hCursor = (HCURSOR)DAT_032bfc84;
      local_fc[0].hbrBackground = (HBRUSH)DAT_032bfc84;
      local_fc[0].lpszMenuName = (LPCWSTR)DAT_032bfc84;
      local_fc[0].lpszClassName = (LPCWSTR)DAT_032bfc84;
      local_fc[0].lpfnWndProc = DefWindowProcW_exref;
      local_fc[0].hInstance = (HINSTANCE)FUN_008a65e0();
      local_fc[0].lpszClassName = (LPCWSTR)PTR_u_wxTLWHiddenParent_03239b9c;
      AVar2 = RegisterClassW(local_fc);
      if (AVar2 == 0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 0;
          FUN_008423d0();
          uStack_4._0_1_ = 1;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = (uint)uStack_4._1_3_ << 8;
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      else {
        DAT_032bfc88 = (LPCWSTR)PTR_u_wxTLWHiddenParent_03239b9c;
      }
    }
    hInstance = (HINSTANCE)FUN_008a65e0();
    DAT_032bfc84 = CreateWindowExW(0,DAT_032bfc88,(LPCWSTR)PTR_DAT_03236318,0,0,0,0,0,(HWND)0x0,
                                   (HMENU)0x0,hInstance,(LPVOID)0x0);
    if (DAT_032bfc84 == (HWND)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 2;
        FUN_008423d0();
        uStack_4._0_1_ = 3;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = CONCAT31(uStack_4._1_3_,2);
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  ExceptionList = local_c;
  return DAT_032bfc84;
}



void __thiscall
FUN_009277b0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  
  FUN_0090e060(param_4,param_2,2);
  FUN_0090e060(param_3,param_2,1);
  uVar1 = FUN_008854f0(param_4,param_2);
  FUN_0084d410(param_1_00,param_1,uVar1);
  return;
}



int __fastcall FUN_00927800(int param_1)

{
  int iVar1;
  
  iVar1 = 0;
  if ((*(uint *)(param_1 + 0xe0) >> 3 & 1) != 0) {
    if (*(int *)(param_1 + 0x44) == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\msw\\toplevel.cpp",0x126,"wxTopLevelWindowMSW::MSWGetParent",
                     "Assert failure",L"wxFRAME_FLOAT_ON_PARENT but no parent?");
      }
    }
    else {
      iVar1 = *(int *)(*(int *)(param_1 + 0x44) + 0x13c);
    }
  }
  if (((*(uint *)(param_1 + 0xe0) >> 1 & 1) != 0) && (iVar1 == 0)) {
    iVar1 = FUN_00927530();
    return iVar1;
  }
  return iVar1;
}



undefined4 __thiscall FUN_00927870(int *param_1,char param_2,uint param_3)

{
  char cVar1;
  undefined uVar2;
  LONG LVar3;
  int *piVar4;
  uint uVar5;
  int iVar6;
  HWND pHVar7;
  int cy;
  int cx;
  UINT UStack_80;
  undefined auStack_7c [4];
  int iStack_78;
  undefined auStack_6c [16];
  undefined auStack_5c [16];
  undefined **appuStack_4c [2];
  int *piStack_44;
  int iStack_24;
  int iStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8750;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x364))(DAT_0323f878 ^ (uint)&stack0xffffff70);
  if (param_2 != cVar1) {
    *(char *)((int)param_1 + 0x1b9) = param_2;
    if (param_2 == '\0') {
      (**(code **)(*param_1 + 0x340))(*(undefined *)(param_1 + 0x6e));
      SetWindowLongW((HWND)param_1[0x4f],-0x10,param_1[0x6d]);
      SetWindowPos((HWND)param_1[0x4f],(HWND)0x0,param_1[0x69],param_1[0x6a],param_1[0x6b],
                   param_1[0x6c],0x20);
    }
    else {
      param_1[0x68] = param_3;
      LVar3 = GetWindowLongW((HWND)param_1[0x4f],-0x10);
      param_1[0x6d] = LVar3;
      piVar4 = (int *)FUN_0091aed0(auStack_7c);
      param_1[0x69] = *piVar4;
      param_1[0x6a] = piVar4[1];
      param_1[0x6b] = piVar4[2];
      param_1[0x6c] = piVar4[3];
      uVar2 = (**(code **)(*param_1 + 0x34c))();
      *(undefined *)(param_1 + 0x6e) = uVar2;
      uVar5 = 0;
      if ((param_3 & 8) != 0) {
        uVar5 = 0x840000;
      }
      if ((param_3 & 0x10) != 0) {
        uVar5 = uVar5 | 0xc80000;
      }
      SetWindowLongW((HWND)param_1[0x4f],-0x10,param_1[0x6d] & ~uVar5);
      iVar6 = FUN_0099a530(param_1);
      if (iVar6 == -1) {
        pHVar7 = GetDesktopWindow();
        piVar4 = (int *)FUN_00917e70(auStack_5c,pHVar7);
        iVar6 = *piVar4;
        iStack_78 = piVar4[1];
        cy = piVar4[3] - iStack_78;
        cx = piVar4[2] - iVar6;
      }
      else {
        FUN_0099a810(iVar6);
        uStack_4 = 0;
        piVar4 = (int *)FUN_0099a590(auStack_6c);
        iStack_78 = piVar4[1];
        iVar6 = *piVar4;
        cx = piVar4[2];
        cy = piVar4[3];
        uStack_4 = 0xffffffff;
        FUN_0099a3d0();
      }
      (**(code **)(*param_1 + 0x288))(iVar6,iStack_78,cx,cy,3);
      cVar1 = (**(code **)(*param_1 + 0xdc))();
      if (cVar1 == '\0') {
        FUN_0091aa60(1);
        UStack_80 = 0x60;
      }
      SetWindowPos((HWND)param_1[0x4f],(HWND)0x0,iVar6,iStack_78,cx,cy,UStack_80);
      FUN_00845a20(param_1[0x10],DAT_032bfed0);
      appuStack_4c[0] = wxSizeEvent::vftable;
      uStack_1c = 0;
      uStack_18 = 0;
      uStack_14 = 0;
      uStack_10 = 0;
      uStack_4 = 1;
      piStack_44 = param_1;
      iStack_24 = cx;
      iStack_20 = cy;
      FUN_0091c170(appuStack_4c);
      uStack_4 = 0xffffffff;
      appuStack_4c[0] = wxObject::vftable;
      FUN_0083e850();
    }
  }
  ExceptionList = local_c;
  return 1;
}



void __thiscall FUN_00927b20(int param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  uint local_104;
  void *local_100;
  uint local_e0;
  void *local_dc;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd87bf;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(char *)(param_1 + 0x28) == '\0') {
    iVar2 = FUN_0091ac40();
    *(int *)(param_1_00 + 0x1bc) = iVar2;
    if ((iVar2 != 0) && (iVar2 = FUN_0091cdc0(), iVar2 != param_1_00)) {
      *(undefined4 *)(param_1_00 + 0x1bc) = 0;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(7);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4 = 3;
      FUN_004325b6();
      local_4._0_1_ = 4;
      FUN_008423d0();
      local_4._0_1_ = 5;
      FUN_009277b0();
      local_4 = CONCAT31(local_4._1_3_,4);
      FUN_00842440();
      _free(local_dc);
      if (7 < local_e0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    *(undefined *)(param_1 + 0x24) = 1;
  }
  else {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(7);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4 = 0;
      FUN_004325b6();
      local_4._0_1_ = 1;
      FUN_008423d0();
      local_4._0_1_ = 2;
      FUN_0090e060();
      FUN_008854f0();
      FUN_0084d410();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_00842440();
      _free(local_100);
      if (7 < local_104) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    iVar2 = FUN_0091ac40();
    if ((iVar2 == 0) || (iVar2 = FUN_0091cdc0(), iVar2 != param_1_00)) {
      FUN_00923de0();
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00927e10(undefined4 *param_1)

{
  FUN_009a7000(*param_1);
  return;
}



void __fastcall FUN_00927e20(undefined4 *param_1)

{
  *param_1 = wxGraphicsPath::vftable;
  FUN_008f7630();
  return;
}



undefined4 * __thiscall FUN_00927e30(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxGraphicsPath::vftable;
  FUN_008f7630();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void __fastcall thunk_FUN_009150e0(undefined4 *param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined **ppuVar3;
  BOOL BVar4;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bd6ea8;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  *param_1 = wxWindow::vftable;
  uStack_4 = 0;
  FUN_0091e7c0();
  for (puVar1 = (undefined4 *)param_1[0x11]; puVar1 != (undefined4 *)0x0;
      puVar1 = (undefined4 *)puVar1[0x11]) {
    ppuVar3 = (undefined **)(**(code **)*puVar1)();
    if ((((ppuVar3 == &PTR_u_wxTopLevelWindow_03239ae4) ||
         ((ppuVar3[3] != (undefined *)0x0 && (cVar2 = FUN_0048a047(), cVar2 != '\0')))) ||
        ((ppuVar3[4] != (undefined *)0x0 && (cVar2 = FUN_0048a047(), cVar2 != '\0')))) &&
       ((undefined4 *)puVar1[0x6f] == param_1)) {
      puVar1[0x6f] = 0;
    }
  }
  FUN_0091e8e0();
  if ((HWND)param_1[0x4f] != (HWND)0x0) {
    BVar4 = DestroyWindow((HWND)param_1[0x4f]);
    if (BVar4 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 != '\0') {
        FUN_0081c0f1();
        uStack_4._0_1_ = 1;
        __time64((__time64_t *)0x0);
        GetCurrentThreadId();
        uStack_4._0_1_ = 2;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4._0_1_ = 1;
        FUN_00842440();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_0081b5bc();
      }
    }
    for (puVar1 = *(undefined4 **)(DAT_032bf67c + ((uint)param_1[0x4f] % DAT_032bf680) * 4);
        puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) {
      if (puVar1[1] == param_1[0x4f]) {
        _DAT_032bf684 = _DAT_032bf684 + -1;
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  uStack_4 = 0xffffffff;
  FUN_0091e4d0();
  ExceptionList = pvStack_c;
  return;
}



void __fastcall FUN_00927e70(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd8818;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxNonOwnedWindow::vftable;
  local_4 = 0;
  if ((int *)param_1[0x59] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x59] + 4))(1,uVar1);
  }
  local_4 = 0xffffffff;
  FUN_009150e0();
  ExceptionList = local_c;
  return;
}



uint __thiscall FUN_00927ee0(int *param_1_00,int *param_1)

{
  char cVar1;
  uint uVar2;
  
  uVar2 = (uint)param_1_00[0x38] >> 4;
  if ((uVar2 & 1) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      uVar2 = FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/nonownedwnd.h",0x2a,
                           "wxNonOwnedWindowBase::SetShape","HasFlag(0x0010)",
                           L"Shaped windows must be created with the wxFRAME_SHAPED style.");
    }
    return uVar2 & 0xffffff00;
  }
  cVar1 = (**(code **)(*param_1 + 0x2c))();
  if (cVar1 != '\0') {
    uVar2 = (**(code **)(*param_1_00 + 0x334))();
    return uVar2;
  }
  uVar2 = (**(code **)(*param_1_00 + 0x338))(param_1);
  return uVar2;
}



void __thiscall FUN_00927f50(int param_1_00,int param_1)

{
  uint uVar1;
  int *piVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined local_18 [8];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8858;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  *(undefined *)(param_1 + 0x24) = 1;
  FUN_0094be80(*(undefined4 *)(param_1_00 + 0x40));
  local_4 = 0;
  piVar2 = (int *)FUN_009a8500(local_18,uVar1);
  uVar5 = 100;
  uVar4 = 2;
  local_4._0_1_ = 1;
  uVar3 = FUN_008f7e50(0x10,2,100);
  uVar3 = FUN_009566f0(uVar3,uVar4,uVar5);
  local_4._0_1_ = 2;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar2 == (int *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/scopedptr.h",0x56,
                 "wxScopedPtr<class wxGraphicsContext>::operator ->","m_ptr != 0",0);
  }
  FUN_009a91a0(uVar3);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0083e850();
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar2 == (int *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/scopedptr.h",0x56,
                 "wxScopedPtr<class wxGraphicsContext>::operator ->","m_ptr != 0",0);
  }
  (**(code **)(*piVar2 + 0xa0))(param_1_00 + 0x44);
  puStack_8 = (undefined *)((uint)puStack_8 & 0xffffff00);
  (**(code **)(*piVar2 + 4))(1);
  puStack_8 = (undefined *)0xffffffff;
  FUN_00457221();
  ExceptionList = pvStack_10;
  return;
}



undefined4 __thiscall FUN_00928090(undefined4 param_1_00,byte param_1)

{
  FUN_00927e70();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_009280b0(undefined4 *param_1)

{
  FUN_00446436();
  *param_1 = wxNonOwnedWindow::vftable;
  param_1[0x59] = 0;
  return param_1;
}



undefined4 * __thiscall FUN_009280d0(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd88ab;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00845b70(DAT_0323f878 ^ (uint)&stack0xffffffcc);
  *param_1_00 = wxNonOwnedWindowShapeImpl::vftable;
  param_1_00[0x10] = param_1;
  piVar1 = param_1_00 + 0x11;
  *piVar1 = (int)wxObject::vftable;
  iVar2 = *(int *)(param_2 + 4);
  param_1_00[0x12] = iVar2;
  if (iVar2 != 0) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  *piVar1 = (int)wxGraphicsPath::vftable;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  piVar3 = (int *)FUN_009a8520(param_1);
  local_4._0_1_ = 2;
  puVar4 = (undefined4 *)(**(code **)(*piVar1 + 0x44))();
  param_1 = 0;
  FUN_009a6fa0(*puVar4,&param_1);
  uVar5 = param_1;
  local_4._0_1_ = 3;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar3 == (int *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/scopedptr.h",0x56,
                 "wxScopedPtr<class wxGraphicsContext>::operator ->","m_ptr != 0",0);
  }
  puVar4 = (undefined4 *)(**(code **)(*piVar3 + 0x54))();
  FUN_009a7060(uVar5,*puVar4,&param_2);
  uVar5 = FUN_00993200(param_2);
  local_4._0_1_ = 4;
  FUN_00927ee0(uVar5);
  local_4._0_1_ = 3;
  FUN_008f7630();
  param_2 = DAT_032bff1c;
  puVar4 = (undefined4 *)operator_new(0x10);
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    *puVar4 = wxObjectEventFunctor::vftable;
    puVar4[1] = param_1_00;
    puVar4[2] = FUN_00927f50;
    puVar4[3] = 0;
  }
  FUN_008461a0(0xffffffff,0xffffffff,param_2,puVar4,0);
  FUN_009a7000(param_1);
  local_4 = CONCAT31(local_4._1_3_,1);
  (**(code **)(*piVar3 + 4))(1);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00928280(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd88e3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxNonOwnedWindowShapeImpl::vftable;
  local_4 = 1;
  FUN_0091cf30(0xffffffff,0xffffffff,DAT_032bff1c,FUN_00927f50,0,0,param_1);
  local_4 = local_4 & 0xffffff00;
  param_1[0x11] = wxGraphicsPath::vftable;
  FUN_008f7630(uVar1);
  local_4 = 0xffffffff;
  FUN_00846530();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00928310(undefined4 param_1_00,byte param_1)

{
  FUN_00928280();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00928330(int param_1_00,undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int **)(param_1_00 + 0x164) != (int *)0x0) {
    (**(code **)(**(int **)(param_1_00 + 0x164) + 4))(1,DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  pvVar1 = operator_new(0x4c);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_009280d0(param_1_00,param_1);
  }
  *(undefined4 *)(param_1_00 + 0x164) = uVar2;
  ExceptionList = local_c;
  return 1;
}



undefined4 __fastcall FUN_009283b0(int param_1)

{
  char cVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = SetWindowRgn(*(HWND *)(param_1 + 0x13c),(HRGN)0x0,1);
  if (iVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = local_c;
  return 1;
}



undefined4 __fastcall FUN_009284c0(int *param_1)

{
  char cVar1;
  HRGN pHVar2;
  DWORD nCount;
  RGNDATA *lpData;
  int iVar3;
  undefined4 uVar4;
  int unaff_EBX;
  DWORD DVar5;
  LPRGNDATA lpRgnData;
  RGNDATA *lpRgnData_00;
  int iStack_78;
  void *pvStack_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bcbaa0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  lpRgnData = (LPRGNDATA)0x0;
  DVar5 = 0;
  pHVar2 = (HRGN)FUN_00992eb0();
  nCount = GetRegionData(pHVar2,DVar5,lpRgnData);
  lpData = (RGNDATA *)FUN_00823c23();
  DVar5 = nCount;
  lpRgnData_00 = lpData;
  pHVar2 = (HRGN)FUN_00992eb0();
  GetRegionData(pHVar2,DVar5,lpRgnData_00);
  pHVar2 = ExtCreateRegion((XFORM *)0x0,nCount,lpData);
  FUN_00a3f66c();
  (**(code **)(*param_1 + 0x78))();
  OffsetRgn(pHVar2,-unaff_EBX,-iStack_78);
  iVar3 = SetWindowRgn((HWND)param_1[0x4f],pHVar2,1);
  if (iVar3 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_8 = (undefined *)0x0;
      FUN_008423d0();
      uStack_8._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
      FUN_00842440();
      uStack_8 = (undefined *)0xffffffff;
      FUN_0081b5bc();
    }
    uVar4 = 0;
  }
  else {
    uVar4 = 1;
  }
  ExceptionList = pvStack_10;
  return uVar4;
}



undefined ** FUN_00928650(void)

{
  return &PTR_PTR_00d52ef4;
}



undefined * FUN_00928660(void)

{
  return &DAT_032bfd04;
}



void __fastcall FUN_00928670(int param_1)

{
  *(undefined4 *)(param_1 + 0x21c) = 0;
  *(undefined4 *)(param_1 + 0x220) = 0;
  *(undefined *)(param_1 + 0x224) = 0;
  return;
}



void __fastcall FUN_00928690(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd8908;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxFrame::vftable;
  local_4 = 0;
  FUN_0091e7c0(uVar1);
  FUN_00929f00();
  local_4 = 0xffffffff;
  FUN_0092a360();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00928740(int *param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  
  if ((param_3 == 0) && ((((short)param_2 == 0 || ((short)param_2 == 1)) && (DAT_032bfb78 == 0)))) {
    iVar1 = (**(code **)(*param_1_00 + 0x39c))((int)(short)param_1);
    if (iVar1 != 0) {
      FUN_0092a400(iVar1);
      return;
    }
  }
  FUN_00913ec0(param_1,param_2,param_3);
  return;
}



undefined4 * __fastcall FUN_009287a0(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x30);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxMenuEvent::vftable;
    puVar1[10] = *(undefined4 *)(param_1 + 0x28);
    puVar1[0xb] = *(undefined4 *)(param_1 + 0x2c);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined __thiscall
FUN_00928810(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined local_20 [16];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc9a8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  cVar1 = FUN_00926bb0(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  uVar3 = FUN_008ff080(local_20,0xc,uVar2);
  local_4 = 0;
  cVar1 = (**(code **)(*param_1_00 + 0x17c))(uVar3);
  if (cVar1 != '\0') {
    *(byte *)(param_1_00 + 0x37) = *(byte *)(param_1_00 + 0x37) & 0x7f;
  }
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_10;
  return 1;
}



void __thiscall FUN_009288e0(int *param_1,int param_2,int param_3)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int unaff_retaddr;
  int iStack_10;
  int iStack_c;
  int aiStack_8 [2];
  
  piVar2 = (int *)(**(code **)(*param_1 + 0x3a8))();
  iVar3 = param_3;
  if ((piVar2 != (int *)0x0) &&
     (cVar1 = (**(code **)(*piVar2 + 0xdc))(), iVar3 = param_3, cVar1 != '\0')) {
    (**(code **)(*piVar2 + 0x278))(&iStack_c,&iStack_10);
    iVar3 = param_3 + iStack_10;
  }
  (**(code **)(*param_1 + 0x78))(aiStack_8);
  iVar3 = iVar3 + aiStack_8[0];
  piVar2 = (int *)(**(code **)(*param_1 + 0x3c0))();
  if ((piVar2 != (int *)0x0) && ((piVar2[0x38] & 0x6000U) != 0)) {
    (**(code **)(*piVar2 + 0x278))(&param_2,&stack0x00000000);
    if (((uint)piVar2[0x38] >> 0xe & 1) != 0) {
      FUN_00916210((unaff_retaddr + iStack_c) - param_2,iVar3);
      return;
    }
    iVar3 = iVar3 - unaff_retaddr;
  }
  FUN_00916210(unaff_retaddr + iStack_c,iVar3);
  return;
}



void __thiscall FUN_009289c0(int *param_1_00,int *param_1,int *param_2)

{
  int *piVar1;
  char cVar2;
  int *piVar3;
  int *piVar4;
  int iVar5;
  int unaff_EBX;
  int unaff_retaddr;
  int local_10;
  undefined auStack_c [12];
  
  piVar1 = param_2;
  piVar4 = param_1;
  FUN_00915e00(param_1,param_2);
  (**(code **)(*param_1_00 + 0x78))(&local_10);
  if (piVar4 != (int *)0x0) {
    *piVar4 = *piVar4 - unaff_EBX;
  }
  if (piVar1 != (int *)0x0) {
    *piVar1 = *piVar1 - local_10;
  }
  piVar3 = (int *)(**(code **)(*param_1_00 + 0x3c0))();
  if ((piVar3 != (int *)0x0) && ((piVar3[0x38] & 0x6000U) != 0)) {
    (**(code **)(*piVar3 + 0x278))(&param_1,&stack0x00000000);
    if (((uint)piVar3[0x38] >> 0xe & 1) == 0) {
      if (piVar1 == (int *)0x0) {
        return;
      }
      *piVar1 = *piVar1 - unaff_retaddr;
    }
    else if (piVar4 != (int *)0x0) {
      *piVar4 = *piVar4 - (int)param_1;
    }
  }
  if (((piVar1 != (int *)0x0) &&
      (piVar4 = (int *)(**(code **)(*param_1_00 + 0x3a8))(), piVar4 != (int *)0x0)) &&
     (cVar2 = (**(code **)(*piVar4 + 0xdc))(), cVar2 != '\0')) {
    iVar5 = FUN_004555c3(auStack_c);
    *piVar1 = *piVar1 - *(int *)(iVar5 + 4);
  }
  return;
}



void __fastcall FUN_00928aa0(int *param_1)

{
  char cVar1;
  int iVar2;
  undefined4 unaff_EBX;
  int iVar3;
  int unaff_EDI;
  int *piVar4;
  int iStack_18;
  int aiStack_14 [5];
  
  if (param_1[0x84] != 0) {
    cVar1 = (**(code **)(*(int *)param_1[0x84] + 0xdc))();
    if (cVar1 != '\0') {
      piVar4 = aiStack_14;
      (**(code **)(*param_1 + 0x27c))(&iStack_18,piVar4);
      (**(code **)(*(int *)param_1[0x84] + 0x278))(aiStack_14,&iStack_18);
      iVar3 = 0;
      iVar2 = (**(code **)(*param_1 + 0x3c0))();
      if ((iVar2 != 0) && ((*(uint *)(iVar2 + 0xe0) >> 2 & 1) == 0)) {
        FUN_004555c3(&iStack_18);
        if ((*(uint *)(iVar2 + 0xe0) & 0x4008) == 0) {
          unaff_EDI = unaff_EDI + aiStack_14[0];
        }
        else {
          if ((*(uint *)(iVar2 + 0xe0) >> 3 & 1) != 0) {
            iVar3 = -iStack_18;
          }
          piVar4 = (int *)((int)piVar4 + iStack_18);
        }
      }
      (**(code **)(*(int *)param_1[0x84] + 0x288))(iVar3,unaff_EDI,piVar4,unaff_EBX,3);
    }
  }
  return;
}



uint __thiscall FUN_00928c20(int *param_1,undefined4 param_2,uint param_3)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  HMENU hMenu;
  undefined4 unaff_retaddr;
  
  uVar2 = (**(code **)(*param_1 + 0x364))();
  if ((char)uVar2 == (char)param_2) {
    return uVar2 & 0xffffff00;
  }
  if ((char)param_2 == '\0') {
    piVar3 = (int *)(**(code **)(*param_1 + 0x3c0))();
    if (((*(byte *)(param_1 + 0x68) & 2) != 0) && (piVar3 != (int *)0x0)) {
      (**(code **)(*piVar3 + 0xcc))(1);
    }
    if (((*(byte *)(param_1 + 0x68) & 1) != 0) &&
       (hMenu = (HMENU)(**(code **)(*param_1 + 0x3e4))(), hMenu != (HMENU)0x0)) {
      SetMenu((HWND)param_1[0x4f],hMenu);
    }
    piVar3 = (int *)(**(code **)(*param_1 + 0x3a8))();
    if (((*(byte *)(param_1 + 0x68) & 4) != 0) && (piVar3 != (int *)0x0)) {
      (**(code **)(*piVar3 + 0xcc))(1);
      (**(code **)(*param_1 + 0x3dc))();
    }
  }
  else {
    piVar3 = (int *)(**(code **)(*param_1 + 0x3c0))();
    if (((param_3 & 2) != 0) && (piVar3 != (int *)0x0)) {
      cVar1 = (**(code **)(*piVar3 + 0xdc))();
      if (cVar1 == '\0') {
        param_3 = param_3 & 0xfffffffd;
      }
      else {
        FUN_0048a0bc(0xffffffff,0);
        (**(code **)(*piVar3 + 0xcc))(0);
      }
    }
    if ((param_3 & 1) != 0) {
      SetMenu((HWND)param_1[0x4f],(HMENU)0x0);
    }
    piVar3 = (int *)(**(code **)(*param_1 + 0x3a8))();
    if (((param_3 & 4) != 0) && (piVar3 != (int *)0x0)) {
      cVar1 = (**(code **)(*piVar3 + 0xdc))();
      if (cVar1 == '\0') {
        uVar2 = FUN_00927870(param_2,param_3 & 0xfffffffb);
        return uVar2;
      }
      (**(code **)(*piVar3 + 0xcc))(0);
      uVar2 = FUN_00927870(unaff_retaddr,param_3);
      return uVar2;
    }
  }
  uVar2 = FUN_00927870(param_2,param_3);
  return uVar2;
}



void __fastcall FUN_00928da0(int *param_1)

{
  char cVar1;
  int *piVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  int unaff_ESI;
  int unaff_EDI;
  int iStack_20;
  int iStack_1c;
  undefined auStack_18 [4];
  int aiStack_14 [2];
  undefined auStack_c [4];
  undefined auStack_8 [8];
  
  piVar2 = (int *)(**(code **)(*param_1 + 0x3c0))();
  if ((piVar2 != (int *)0x0) && (cVar1 = (**(code **)(*piVar2 + 0xdc))(), cVar1 != '\0')) {
    FUN_00915e00(auStack_c,aiStack_14);
    piVar3 = (int *)(**(code **)(*param_1 + 0x3a8))();
    if ((piVar3 != (int *)0x0) && (cVar1 = (**(code **)(*piVar3 + 0xdc))(), cVar1 != '\0')) {
      iVar4 = FUN_0043d8d2(auStack_8);
      aiStack_14[0] = aiStack_14[0] - *(int *)(iVar4 + 4);
    }
    (**(code **)(*piVar2 + 0x270))(&iStack_1c,&iStack_20);
    (**(code **)(*piVar2 + 0x278))(&iStack_20,auStack_18);
    if (((uint)piVar2[0x38] >> 0xd & 1) == 0) {
      if (((uint)piVar2[0x38] >> 0xe & 1) == 0) {
        iVar4 = 0;
      }
      else {
        iVar4 = iStack_1c - unaff_EDI;
      }
      iVar5 = 0;
    }
    else {
      iVar4 = 0;
      iVar5 = unaff_ESI - iStack_20;
    }
    cVar1 = FUN_009aaee0();
    if (cVar1 != '\0') {
      iStack_1c = unaff_EDI;
      iStack_20 = unaff_ESI;
    }
    (**(code **)(*piVar2 + 0x288))(iVar4,iVar5,iStack_1c,iStack_20,8);
  }
  return;
}



void __thiscall FUN_00928f50(int param_1_00,undefined4 param_1)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  undefined uVar4;
  uint uVar5;
  undefined **ppuVar6;
  
  iVar1 = *(int *)(param_1_00 + 0x54);
  *(char *)(param_1_00 + 0x19c) = (char)param_1;
  for (; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    piVar2 = *(int **)(iVar1 + 8);
    uVar5 = (**(code **)(*piVar2 + 0xe8))();
    if ((((uVar5 & 4) == 0) &&
        (((ppuVar6 = (undefined **)(**(code **)*piVar2)(), ppuVar6 == &PTR_u_wxFrame_03239cfc ||
          ((ppuVar6[3] != (undefined *)0x0 &&
           (cVar3 = FUN_0048a047(&PTR_u_wxFrame_03239cfc), cVar3 != '\0')))) ||
         ((ppuVar6[4] != (undefined *)0x0 &&
          (cVar3 = FUN_0048a047(&PTR_u_wxFrame_03239cfc), cVar3 != '\0')))))) &&
       (cVar3 = (**(code **)(*piVar2 + 0x3ec))(), cVar3 == '\0')) {
      if ((char)param_1 != '\0') {
        uVar4 = (**(code **)(*piVar2 + 0x354))();
        *(undefined *)(piVar2 + 0x89) = uVar4;
      }
      if ((*(char *)(piVar2 + 0x89) == '\0') &&
         (cVar3 = (**(code **)(*piVar2 + 0xdc))(), cVar3 != '\0')) {
        (**(code **)(*piVar2 + 0x348))(param_1);
      }
    }
  }
  return;
}



undefined4 __thiscall FUN_00929030(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  
  cVar1 = FUN_0090d8b0(param_2);
  if (cVar1 != '\0') {
    return 1;
  }
  iVar2 = (**(code **)(*param_1_00 + 0x398))();
  if ((iVar2 != 0) && (cVar1 = FUN_00932870(param_1,param_2), cVar1 != '\0')) {
    return 1;
  }
  return 0;
}



uint __thiscall FUN_00929080(int *param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  
  if (param_3 == 0) {
LAB_00929096:
    if (*(char *)(param_1_00 + 0x67) != '\0') {
      FUN_00928f50(0);
      uVar1 = FUN_00925270(0);
      goto LAB_009290af;
    }
  }
  else {
    if (param_3 == 1) {
      uVar1 = FUN_00928f50(1);
    }
    else {
      uVar1 = param_3 - 2;
      if (uVar1 == 0) goto LAB_00929096;
    }
LAB_009290af:
    if (*(char *)(param_1_00 + 0x67) != '\0') goto LAB_009290d0;
  }
  (**(code **)(*param_1_00 + 0x3dc))();
  uVar1 = (**(code **)(*param_1_00 + 0x3e0))();
LAB_009290d0:
  return uVar1 & 0xffffff00;
}



undefined FUN_009290e0(undefined4 *param_1,short param_2)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_3c [10];
  int local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8938;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  FUN_00845a20(-(uint)(param_2 != 0),*param_1);
  local_3c[0] = wxMenuEvent::vftable;
  local_10 = 0;
  local_4 = 0;
  local_14 = -(uint)(param_2 != 0);
  uVar1 = FUN_0091c170(local_3c);
  local_4 = 0xffffffff;
  local_3c[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



undefined __thiscall FUN_00929180(int *param_1,undefined4 param_2)

{
  undefined uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined **appuStack_3c [2];
  int *piStack_34;
  undefined4 uStack_14;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8938;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar3 = 0;
  iVar2 = (**(code **)(*param_1 + 0x398))(DAT_0323f878 ^ (uint)&stack0xffffffb8);
  if (iVar2 != 0) {
    (**(code **)(*param_1 + 0x398))(param_2);
    uVar3 = FUN_0092d030(param_2);
  }
  FUN_00845a20(0,DAT_032bff28);
  appuStack_3c[0] = wxMenuEvent::vftable;
  uStack_14 = 0;
  uStack_4 = 0;
  piStack_34 = param_1;
  uStack_10 = uVar3;
  uVar1 = FUN_0091c170(appuStack_3c);
  uStack_4 = 0xffffffff;
  appuStack_3c[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return uVar1;
}



undefined4 * __thiscall
FUN_009292c0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8992;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009333f0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1_00 = wxStatusBarGeneric::vftable;
  FUN_0086a600();
  param_1_00[0x70] = 0;
  param_1_00[0x6f] = wxPen::vftable;
  param_1_00[0x72] = 0;
  param_1_00[0x71] = wxPen::vftable;
  local_4 = CONCAT31(local_4._1_3_,3);
  FUN_009abe90();
  FUN_009abf60(param_1,param_2,param_3,param_4);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00929390(undefined4 param_1_00,byte param_1)

{
  FUN_009abed0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_009293b0(int *param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined local_48 [8];
  undefined **appuStack_40 [2];
  int iStack_38;
  void *pvStack_18;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd89c0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_008ff080(local_48,0xc,DAT_0323f878 ^ (uint)&stack0xffffffb4);
  local_4 = 0;
  cVar1 = (**(code **)(*param_1 + 0x17c))(uVar2);
  if (cVar1 != '\0') {
    *(byte *)(param_1 + 0x37) = *(byte *)(param_1 + 0x37) & 0x7f;
  }
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  (**(code **)(*param_1 + 0x15c))(1,0);
  if (param_1[0x84] != 0) {
    FUN_00845a20(0,DAT_032bff38);
    appuStack_40[0] = wxSysColourChangedEvent::vftable;
    iStack_38 = param_1[0x84];
    uStack_10 = 1;
    FUN_0091c170(appuStack_40);
    uStack_10 = 0xffffffff;
    appuStack_40[0] = wxObject::vftable;
    FUN_0083e850();
  }
  FUN_00910040(puStack_8);
  ExceptionList = pvStack_18;
  return;
}



int * __thiscall
FUN_009294b0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  uint uVar1;
  void *pvVar2;
  int *piVar3;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8a0f;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  if (DAT_03239c20 == '\0') {
    pvVar2 = operator_new(0x1cc);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      piVar3 = (int *)0x0;
    }
    else {
      FUN_0043c211("statusBar");
      local_4 = CONCAT31(local_4._1_3_,1);
      piVar3 = (int *)FUN_009292c0(param_1_00,param_3,param_2,local_30);
    }
    local_4 = 0xffffffff;
    if (pvVar2 != (void *)0x0) {
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
      local_18 = 7;
      local_1c = 0;
      local_2c = local_2c & 0xffff0000;
    }
  }
  else {
    pvVar2 = operator_new(0x1b4);
    local_4 = 3;
    if (pvVar2 == (void *)0x0) {
      piVar3 = (int *)0x0;
    }
    else {
      piVar3 = (int *)FUN_0045566c(param_1_00,param_3,param_2,param_4);
    }
    local_4 = 0xffffffff;
  }
  (**(code **)(*piVar3 + 0x358))(param_1,0,uVar1);
  ExceptionList = local_14;
  return piVar3;
}



undefined4 __thiscall FUN_00929600(int *param_1_00,short param_1,uint param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined local_60 [4];
  uint uStack_5c;
  undefined4 uStack_4c;
  uint uStack_48;
  void *pvStack_44;
  undefined **local_3c [2];
  int *local_34;
  int local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8a40;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  iVar3 = (int)param_1;
  if ((param_2 & 0x810) != 0) {
    iVar3 = -3;
  }
  FUN_00845a20(iVar3,DAT_032bff30);
  local_3c[0] = wxMenuEvent::vftable;
  local_10 = 0;
  local_4 = 0;
  local_34 = param_1_00;
  local_14 = iVar3;
  cVar1 = FUN_0091c170(local_3c);
  if (cVar1 != '\0') {
    local_4 = 0xffffffff;
    local_3c[0] = wxObject::vftable;
    FUN_0083e850();
    ExceptionList = local_c;
    return 1;
  }
  if (iVar3 == -3) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = CONCAT31(local_4._1_3_,1);
    (**(code **)(*param_1_00 + 0x3cc))(local_60,1,uVar2);
    _free(pvStack_44);
    if (7 < uStack_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_5c);
    }
    uStack_48 = 7;
    uStack_4c = 0;
    uStack_5c = uStack_5c & 0xffff0000;
  }
  local_4 = 0xffffffff;
  local_3c[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return 0;
}



int __thiscall FUN_00929740(int *param_1_00,uint param_1,undefined4 param_2,uint param_3)

{
  uint uVar1;
  undefined4 uVar2;
  char cVar3;
  int iVar4;
  int local_1c;
  undefined4 local_18;
  int local_14;
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  uVar2 = param_2;
  uVar1 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8a68;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_1c = 0;
  if (param_1 < 0x112) {
    if (param_1 == 0x111) {
      FUN_0090d8d0(param_2,param_3,&param_1,&param_3,&param_2);
      FUN_00928740(param_1,param_2,param_3);
      ExceptionList = local_c;
      return 0;
    }
    if (param_1 == 5) {
      cVar3 = FUN_00929080(param_3 & 0xffff,param_3 >> 0x10,param_2);
    }
    else if (param_1 == 0x10) {
      cVar3 = FUN_0091cfd0(0);
      cVar3 = cVar3 == '\0';
    }
    else {
      if (param_1 != 0x37) goto LAB_009298be;
      FUN_00925790(&local_14);
      local_4 = 0;
      cVar3 = (**(code **)(local_14 + 0x10))();
      if (cVar3 == '\0') {
        local_1c = (**(code **)(*param_1_00 + 0x3f0))();
      }
      else if (iStack_10 == 0) {
        local_1c = 0;
      }
      else {
        local_1c = *(int *)(iStack_10 + 0x14);
      }
      cVar3 = local_1c != 0;
      local_4 = 0xffffffff;
      FUN_008f7630();
    }
  }
  else if (param_1 == 0x117) {
    cVar3 = FUN_00929180(param_2);
  }
  else if (param_1 == 0x11f) {
    FUN_0090d900(param_2,param_3,&local_18,&param_1,&param_2);
    cVar3 = FUN_00929600(local_18,param_1,param_2);
  }
  else {
    if (param_1 != 0x212) goto LAB_009298be;
    cVar3 = FUN_009290e0(&DAT_032bff2c,param_2);
  }
  if (cVar3 != '\0') {
    ExceptionList = local_c;
    return local_1c;
  }
LAB_009298be:
  iVar4 = FUN_00925aa0(uVar1,uVar2,param_3);
  ExceptionList = local_c;
  return iVar4;
}



void __fastcall FUN_009298f0(int param_1)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = SetMenu(*(HWND *)(param_1 + 0x13c),*(HMENU *)(param_1 + 0x21c));
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00929a00(int *param_1,byte param_2)

{
  HWND hWnd;
  char cVar1;
  int *piVar2;
  uint lParam;
  undefined local_10 [16];
  
  if (*(char *)(param_1 + 0x67) == '\0') {
    piVar2 = (int *)FUN_00917e70(local_10,param_1[0x4f]);
    hWnd = (HWND)param_1[0x4f];
    lParam = (piVar2[3] - piVar2[1]) * 0x10000 | piVar2[2] - *piVar2 & 0xffffU;
    cVar1 = (**(code **)(*param_1 + 0x34c))();
    if ((param_2 & 1) != 0) {
      PostMessageW(hWnd,5,-(uint)(cVar1 != '\0') & 2,lParam);
      return;
    }
    SendMessageW(hWnd,5,-(uint)(cVar1 != '\0') & 2,lParam);
  }
  return;
}



undefined ** FUN_00929a90(void)

{
  return &PTR_PTR_00d536c4;
}



undefined * FUN_00929aa0(void)

{
  return &DAT_032bfd48;
}



undefined ** FUN_00929ab0(void)

{
  return &PTR_u_wxFrame_03239cfc;
}



void __thiscall FUN_00929ac0(int *param_1_00,uint param_1)

{
  int iVar1;
  int *piVar2;
  
  FUN_0091eb60(param_1);
  iVar1 = (**(code **)(*param_1_00 + 0x3c0))();
  if (iVar1 != 0) {
    piVar2 = (int *)(**(code **)(*param_1_00 + 0x3c0))();
    (**(code **)(*piVar2 + 0x19c))(param_1);
  }
  iVar1 = (**(code **)(*param_1_00 + 0x398))();
  if ((iVar1 != 0) && ((param_1 & 2) == 0)) {
    (**(code **)(*param_1_00 + 0x3c8))(0);
  }
  return;
}



int __thiscall
FUN_00929b30(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  int iVar1;
  undefined4 uVar2;
  
  if (param_1_00[0x84] == 0) {
    iVar1 = *param_1_00;
    uVar2 = (**(code **)(iVar1 + 0x3a4))(param_1,param_2,param_3,param_4);
    (**(code **)(iVar1 + 0x3ac))(uVar2);
    return param_1_00[0x84];
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\framecmn.cpp",0x16d,"wxFrameBase::CreateStatusBar",
                 "!m_frameStatusBar",L"recreating status bar in wxFrame");
  }
  return 0;
}



void __thiscall FUN_00929bf0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  if (param_1_00[0x84] != 0) {
    (**(code **)(*(int *)param_1_00[0x84] + 0x35c))(param_1,param_2);
    (**(code **)(*param_1_00 + 0x3dc))();
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\framecmn.cpp",0x189,"wxFrameBase::SetStatusWidths",
                 "m_frameStatusBar != 0",L"no statusbar to set widths for");
  }
  return;
}



void __thiscall FUN_00929c60(int *param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = param_1_00[0x84];
  param_1_00[0x84] = param_1;
  if ((param_1 != 0) != (iVar1 != 0)) {
    (**(code **)(*param_1_00 + 0x3dc))();
    FUN_00925180();
  }
  return;
}



int __thiscall FUN_00929ca0(int *param_1_00,int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  
  if (param_1_00[0x86] == 0) {
    if (param_1 == -1) {
      param_1 = 0x200024;
    }
    iVar1 = *param_1_00;
    uVar2 = (**(code **)(iVar1 + 0x3bc))(param_1,param_2,param_3);
    (**(code **)(iVar1 + 0x3c4))(uVar2);
    return param_1_00[0x86];
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\framecmn.cpp",0x219,"wxFrameBase::CreateToolBar",
                 "!m_frameToolBar",L"recreating toolbar in wxFrame");
  }
  return 0;
}



void __fastcall FUN_00929d20(int param_1)

{
  if (*(int **)(param_1 + 0x1c4) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x1c4) + 0x368))();
    *(undefined4 *)(param_1 + 0x1c4) = 0;
  }
  return;
}



void __thiscall FUN_00929d50(int param_1_00,int *param_1)

{
  if (param_1 != (int *)0x0) {
    (**(code **)(*param_1 + 0x364))(param_1_00);
    *(int **)(param_1_00 + 0x1c4) = param_1;
  }
  return;
}



void __thiscall FUN_00929d80(int *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = (**(code **)(*param_1 + 0x398))();
  if (param_2 != iVar1) {
    (**(code **)(*param_1 + 0x3d4))();
    (**(code **)(*param_1 + 0x3d8))(param_2);
  }
  return;
}



undefined4 __thiscall FUN_00929dc0(int *param_1,undefined4 param_2)

{
  int *piVar1;
  undefined4 uVar2;
  
  piVar1 = (int *)(**(code **)(*param_1 + 0x398))();
  if (piVar1 != (int *)0x0) {
    uVar2 = (**(code **)(*piVar1 + 0x35c))(param_2,0);
    return uVar2;
  }
  return 0;
}



undefined4 * __thiscall
FUN_00929df0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4818;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009ab0f0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1_00 = wxToolBar::vftable;
  FUN_009acc30();
  FUN_009adf30(param_1,param_2,param_3,param_4,param_5,param_6);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_00929eb0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x1c0);
}



undefined4 __thiscall FUN_00929ee0(undefined4 param_1_00,byte param_1)

{
  FUN_009acc70();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00929f00(int param_1)

{
  if (*(int **)(param_1 + 0x1c4) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x1c4) + 4))(1);
    *(undefined4 *)(param_1 + 0x1c4) = 0;
  }
  if (*(int **)(param_1 + 0x210) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x210) + 4))(1);
    *(undefined4 *)(param_1 + 0x210) = 0;
  }
  if (*(int **)(param_1 + 0x218) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x218) + 4))(1);
    *(undefined4 *)(param_1 + 0x218) = 0;
  }
  return;
}



bool __thiscall FUN_00929f60(int *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = (**(code **)(*param_1 + 0x398))();
  if (param_2 != iVar1) {
    iVar1 = (**(code **)(*param_1 + 0x3a8))();
    if (param_2 != iVar1) {
      iVar1 = (**(code **)(*param_1 + 0x3c0))();
      return param_2 == iVar1;
    }
  }
  return true;
}



undefined4 __thiscall
FUN_0092a050(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x1e0);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00929df0(param_1_00,param_2,&DAT_03238d0c,&DAT_03238d04,param_1,param_3);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_0092a160(int *param_1_00,int param_1)

{
  int *piVar1;
  
  if (param_1 != 0) {
    FUN_0095a350();
    return;
  }
  piVar1 = (int *)(**(code **)(*param_1_00 + 0x398))();
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 0x36c))();
  }
  return;
}



void __thiscall FUN_0092a1a0(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxMenuEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



undefined4 * FUN_0092a1f0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxMenuEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



int * __thiscall
FUN_0092a260(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  uint uVar1;
  void *pvVar2;
  int *piVar3;
  void *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x1b4);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    piVar3 = (int *)0x0;
  }
  else {
    piVar3 = (int *)FUN_0045566c(param_1_00,param_3,param_2,param_4);
  }
  local_4 = 0xffffffff;
  (**(code **)(*piVar3 + 0x358))(param_1,0,uVar1);
  ExceptionList = unaff_ESI;
  return piVar3;
}



undefined4 * __fastcall FUN_0092a2f0(undefined4 *param_1)

{
  FUN_0044cc67();
  *param_1 = wxFrameBase::vftable;
  param_1[0x77] = 0;
  param_1[0x78] = 7;
  *(undefined2 *)(param_1 + 0x73) = 0;
  param_1[0x79] = 0;
  param_1[0x81] = 7;
  param_1[0x80] = 0;
  *(undefined2 *)(param_1 + 0x7c) = 0;
  param_1[0x82] = 0;
  param_1[0x71] = 0;
  param_1[0x86] = 0;
  param_1[0x84] = 0;
  param_1[0x85] = 0;
  return param_1;
}



void __fastcall FUN_0092a360(undefined4 *param_1)

{
  *param_1 = wxFrameBase::vftable;
  _free((void *)param_1[0x82]);
  if (7 < (uint)param_1[0x81]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x7c]);
  }
  param_1[0x81] = 7;
  param_1[0x80] = 0;
  *(undefined2 *)(param_1 + 0x7c) = 0;
  _free((void *)param_1[0x79]);
  if (7 < (uint)param_1[0x78]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x73]);
  }
  param_1[0x78] = 7;
  param_1[0x77] = 0;
  *(undefined2 *)(param_1 + 0x73) = 0;
  FUN_00925cd0();
  return;
}



void FUN_0092a400(int *param_1)

{
  char cVar1;
  uint uVar2;
  undefined **local_6c [11];
  uint uStack_40;
  undefined4 uStack_30;
  uint uStack_2c;
  void *pvStack_28;
  uint uStack_20;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8ac8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032bfdd0,param_1[2]);
  local_4 = 0;
  cVar1 = (**(code **)(*param_1 + 0x24))(uVar2);
  if (cVar1 == '\0') {
    local_4 = 0xffffffff;
    _free(pvStack_28);
    if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_40);
    }
    uStack_2c = 7;
    uStack_30 = 0;
    uStack_40 = uStack_40 & 0xffff0000;
    local_6c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  else {
    if (param_1[0x17] == 2) {
      cVar1 = (**(code **)(*param_1 + 0x2c))();
      if (cVar1 != '\0') {
        local_4 = 0xffffffff;
        FUN_00454a4e();
        goto LAB_0092a53d;
      }
    }
    if ((param_1[0x17] == 1) || (param_1[0x17] == 2)) {
      (**(code **)(*param_1 + 0x28))(*(char *)(param_1 + 0x18) == '\0');
      uStack_20 = (**(code **)(*param_1 + 0x2c))();
      uStack_20 = uStack_20 & 0xff;
    }
    else {
      uStack_20 = 0xffffffff;
    }
    FUN_0091c170(local_6c);
    local_4 = 0xffffffff;
    FUN_00454a4e();
  }
LAB_0092a53d:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x228);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_0043d6c2(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_0092a5d0(undefined4 param_1_00,byte param_1)

{
  FUN_0092a360();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0092a5f0(int *param_1)

{
  uint uVar1;
  undefined4 unaff_ESI;
  undefined local_30 [16];
  uint uStack_20;
  void *pvStack_1c;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  (**(code **)(*param_1 + 0x3cc))(local_30,0,uVar1);
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI);
  }
  ExceptionList = pvStack_14;
  return;
}



void __thiscall FUN_0092a680(int *param_1_00,int param_1)

{
  int iVar1;
  undefined4 unaff_EBX;
  undefined local_34 [4];
  undefined2 local_30;
  uint uStack_24;
  void *local_20;
  undefined4 local_1c;
  undefined4 local_18;
  void *pvStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6f98;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = (void *)0x0;
  local_30 = 0;
  local_18 = 0;
  local_4 = 0;
  if ((param_1 != -2) && (param_1 != -3)) {
    iVar1 = (**(code **)(*param_1_00 + 0x39c))(param_1,DAT_0323f878 ^ (uint)&stack0xffffffc4);
    if ((iVar1 != 0) &&
       ((*(int *)(iVar1 + 0x5c) != -1 && (local_34 != (undefined *)(iVar1 + 0x38))))) {
      FID_conflict_assign((undefined *)(iVar1 + 0x38),0,0xffffffff);
    }
  }
  (**(code **)(*param_1_00 + 0x3cc))(local_34,1);
  _free(local_20);
  if (7 < uStack_24) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBX);
  }
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0092a770(int *param_1_00,int *param_1,char param_3)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  undefined4 uVar4;
  int *local_80;
  undefined auStack_7c [36];
  int iStack_58;
  undefined2 uStack_54;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined auStack_34 [4];
  undefined2 uStack_30;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined uStack_4;
  undefined3 uStack_3;
  
  uStack_4 = 0xff;
  uStack_3 = 0xffffff;
  puStack_8 = &LAB_00bd8b10;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  ExceptionList = &local_c;
  local_80 = param_1;
  if (param_1_00[0x85] < 0) goto LAB_0092a93f;
  iVar2 = (**(code **)(*param_1_00 + 0x3a8))(DAT_0323f878 ^ (uint)&stack0xffffff70);
  if (iVar2 == 0) goto LAB_0092a93f;
  uStack_40 = 7;
  uStack_44 = 0;
  uStack_54 = 0;
  uStack_3c = 0;
  uStack_4 = 0;
  uStack_3 = 0;
  if (param_3 == '\0') {
    uStack_1c = 7;
    uStack_20 = 0;
    uStack_30 = 0;
    uStack_18 = 0;
    uStack_4 = 2;
    uStack_3 = 0;
    FUN_0043165e(param_1_00 + 0x7b);
    FUN_0043165e(param_1_00 + 0x72);
    uVar4 = FUN_009331e0(auStack_7c,param_1_00[0x85]);
    uStack_4 = 3;
    cVar1 = FUN_0043225e(uVar4,auStack_34);
    uStack_4 = 2;
    FUN_0040159c();
    if (cVar1 == '\0') {
      uStack_4 = 0;
      FUN_0040159c();
      goto LAB_0092a923;
    }
    FUN_0040159c();
  }
  else {
    if (param_1_00[0x77] == 0) {
      piVar3 = (int *)FUN_009331e0(auStack_34,param_1_00[0x85]);
      uStack_4 = 1;
      if (param_1_00 + 0x72 != piVar3) {
        FID_conflict_assign(piVar3,0,0xffffffff);
      }
      uStack_4 = 0;
      FUN_0040159c();
      if (param_1_00[0x77] == 0) {
        FUN_0081c19f(0);
      }
    }
    if (&iStack_58 != local_80) {
      FID_conflict_assign(local_80,0,0xffffffff);
    }
    if (param_1_00 + 0x7b != &iStack_58) {
      FID_conflict_assign(&iStack_58,0,0xffffffff);
    }
LAB_0092a923:
    FUN_00933170(&iStack_58,param_1_00[0x85]);
  }
  FUN_0040159c();
LAB_0092a93f:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined * FUN_0092a980(void)

{
  return &DAT_03239e2c;
}



undefined ** FUN_0092a990(void)

{
  return &PTR_u_wxNotifyEvent_03239e44;
}



undefined ** FUN_0092a9a0(void)

{
  return &PTR_u_wxScrollEvent_03239e5c;
}



undefined ** FUN_0092a9b0(void)

{
  return &PTR_u_wxScrollWinEvent_03239e74;
}



undefined ** FUN_0092a9c0(void)

{
  return &PTR_u_wxMouseEvent_03239e8c;
}



undefined ** FUN_0092a9d0(void)

{
  return &PTR_u_wxKeyEvent_03239ea4;
}



undefined ** FUN_0092a9e0(void)

{
  return &PTR_u_wxSizeEvent_03239ebc;
}



undefined ** FUN_0092a9f0(void)

{
  return &PTR_u_wxPaintEvent_03239ed4;
}



undefined ** FUN_0092aa00(void)

{
  return &PTR_u_wxNcPaintEvent_03239eec;
}



undefined ** FUN_0092aa10(void)

{
  return &PTR_u_wxEraseEvent_03239f04;
}



undefined ** FUN_0092aa20(void)

{
  return &PTR_u_wxMoveEvent_03239f1c;
}



undefined ** FUN_0092aa30(void)

{
  return &PTR_u_wxFocusEvent_03239f34;
}



undefined ** FUN_0092aa40(void)

{
  return &PTR_u_wxChildFocusEvent_03239f4c;
}



undefined ** FUN_0092aa50(void)

{
  return &PTR_u_wxCloseEvent_03239f64;
}



undefined ** FUN_0092aa60(void)

{
  return &PTR_u_wxShowEvent_03239f7c;
}



undefined ** FUN_0092aa70(void)

{
  return &PTR_u_wxMaximizeEvent_03239f94;
}



undefined ** FUN_0092aa80(void)

{
  return &PTR_u_wxIconizeEvent_03239fac;
}



undefined ** FUN_0092aa90(void)

{
  return &PTR_u_wxMenuEvent_03239fc4;
}



undefined ** FUN_0092aaa0(void)

{
  return &PTR_u_wxJoystickEvent_03239fdc;
}



undefined ** FUN_0092aab0(void)

{
  return &PTR_u_wxDropFilesEvent_03239ff4;
}



undefined ** FUN_0092aac0(void)

{
  return &PTR_u_wxActivateEvent_0323a00c;
}



undefined ** FUN_0092aad0(void)

{
  return &PTR_u_wxInitDialogEvent_0323a024;
}



undefined ** FUN_0092aae0(void)

{
  return &PTR_u_wxSetCursorEvent_0323a03c;
}



undefined ** FUN_0092aaf0(void)

{
  return &PTR_u_wxSysColourChangedEvent_0323a054;
}



undefined ** FUN_0092ab00(void)

{
  return &PTR_u_wxDisplayChangedEvent_0323a06c;
}



undefined ** FUN_0092ab10(void)

{
  return &PTR_u_wxUpdateUIEvent_0323a084;
}



undefined ** FUN_0092ab20(void)

{
  return &PTR_u_wxNavigationKeyEvent_0323a09c;
}



undefined ** FUN_0092ab30(void)

{
  return &PTR_u_wxPaletteChangedEvent_0323a0b4;
}



undefined ** FUN_0092ab40(void)

{
  return &PTR_u_wxQueryNewPaletteEvent_0323a0cc;
}



undefined ** FUN_0092ab50(void)

{
  return &PTR_u_wxWindowCreateEvent_0323a0e4;
}



undefined ** FUN_0092ab60(void)

{
  return &PTR_u_wxWindowDestroyEvent_0323a0fc;
}



undefined ** FUN_0092ab70(void)

{
  return &PTR_u_wxHelpEvent_0323a114;
}



undefined ** FUN_0092ab80(void)

{
  return &PTR_u_wxContextMenuEvent_0323a12c;
}



undefined ** FUN_0092ab90(void)

{
  return &PTR_u_wxMouseCaptureChangedEvent_0323a144;
}



undefined ** FUN_0092aba0(void)

{
  return &PTR_u_wxMouseCaptureLostEvent_0323a15c;
}



undefined ** FUN_0092abb0(void)

{
  return &PTR_u_wxClipboardTextEvent_0323a174;
}



void __thiscall FUN_0092abc0(int param_1_00,int param_1)

{
  byte bVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  FUN_00845ac0(param_1);
  if (param_1 == 0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3 = (undefined4 *)(param_1 + 0x28);
  }
  if (param_1_00 == 0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2 = (undefined4 *)(param_1_00 + 0x28);
  }
  *puVar2 = *puVar3;
  puVar2[1] = puVar3[1];
  puVar2[2] = puVar3[2];
  *(undefined4 *)(param_1_00 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);
  *(undefined4 *)(param_1_00 + 0x30) = *(undefined4 *)(param_1 + 0x30);
  *(byte *)(param_1_00 + 0x29) =
       *(byte *)(param_1_00 + 0x29) ^ (*(byte *)(param_1_00 + 0x29) ^ *(byte *)(param_1 + 0x29)) & 1
  ;
  bVar1 = (*(byte *)(param_1 + 0x29) ^ *(byte *)(param_1_00 + 0x29)) & 2 ^
          *(byte *)(param_1_00 + 0x29);
  *(byte *)(param_1_00 + 0x29) = bVar1;
  bVar1 = (*(byte *)(param_1 + 0x29) ^ bVar1) & 4 ^ bVar1;
  *(byte *)(param_1_00 + 0x29) = bVar1;
  bVar1 = (*(byte *)(param_1 + 0x29) ^ bVar1) & 8 ^ bVar1;
  *(byte *)(param_1_00 + 0x29) = bVar1;
  *(byte *)(param_1_00 + 0x29) = (*(byte *)(param_1 + 0x29) ^ bVar1) & 0x10 ^ bVar1;
  *(undefined4 *)(param_1_00 + 0x3c) = *(undefined4 *)(param_1 + 0x3c);
  *(undefined4 *)(param_1_00 + 0x40) = *(undefined4 *)(param_1 + 0x40);
  *(undefined4 *)(param_1_00 + 0x44) = *(undefined4 *)(param_1 + 0x44);
  *(undefined4 *)(param_1_00 + 0x38) = *(undefined4 *)(param_1 + 0x38);
  return;
}



int FUN_0092ac60(int param_1)

{
  char cVar1;
  
  if (param_1 == 0) {
    cVar1 = FUN_0090dfd0(0x154);
    param_1 = 2 - (uint)(cVar1 != '\0');
  }
  return param_1;
}



undefined4 * FUN_0092ac80(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bd44c);
    *puVar1 = wxFocusEvent::vftable;
    puVar1[10] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_0092ad00(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bd44c);
    *(undefined *)(puVar1 + 10) = 1;
    *(undefined *)((int)puVar1 + 0x2a) = 1;
    *puVar1 = wxCloseEvent::vftable;
    *(undefined *)((int)puVar1 + 0x29) = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_0092ad90(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x30);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bd44c);
    *puVar1 = wxMenuEvent::vftable;
    puVar1[10] = 0;
    puVar1[0xb] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_0092ae20(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x40);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bd44c);
    *puVar1 = wxJoystickEvent::vftable;
    puVar1[10] = 0;
    puVar1[0xb] = 0;
    puVar1[0xc] = 0;
    puVar1[0xd] = 0;
    puVar1[0xe] = 0;
    puVar1[0xf] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_0092aeb0(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x38);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bd44c);
    *puVar1 = wxDropFilesEvent::vftable;
    puVar1[10] = 0;
    puVar1[0xb] = 0;
    puVar1[0xc] = 0;
    puVar1[0xd] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_0092af40(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bd44c);
    *puVar1 = wxActivateEvent::vftable;
    *(undefined *)(puVar1 + 10) = 1;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 FUN_0092afb0(int param_1)

{
  char cVar1;
  int iVar2;
  uint uStack_8;
  int iStack_4;
  
  if (((param_1 == 0) || (DAT_032bfdb4 != 1)) || ((*(byte *)(param_1 + 0xe4) & 0x20) != 0)) {
    if ((*(int **)(param_1 + 0x44) != (int *)0x0) &&
       (cVar1 = (**(code **)(**(int **)(param_1 + 0x44) + 0xe0))(), cVar1 == '\0')) {
      return 0;
    }
    if (DAT_032bfdb0 != 0xffffffff) {
      if (DAT_032bfdb0 != 0) {
        FUN_008a6860(&uStack_8);
        iVar2 = ((int)DAT_032bfdb0 >> 0x1f) + _DAT_032bff9c +
                (uint)CARRY4(DAT_032bfdb0,_DAT_032bff98);
        if (iStack_4 < iVar2) {
          return 0;
        }
        if ((iStack_4 <= iVar2) && (uStack_8 <= DAT_032bfdb0 + _DAT_032bff98)) {
          return 0;
        }
      }
      return 1;
    }
  }
  return 0;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_0092b030(void)

{
  int iVar1;
  uint local_8;
  int local_4;
  
  if (0 < (int)DAT_032bfdb0) {
    FUN_008a6860(&local_8);
    iVar1 = ((int)DAT_032bfdb0 >> 0x1f) + _DAT_032bff9c + (uint)CARRY4(DAT_032bfdb0,_DAT_032bff98);
    if ((iVar1 <= local_4) && ((iVar1 < local_4 || (DAT_032bfdb0 + _DAT_032bff98 < local_8)))) {
      _DAT_032bff98 = local_8;
      _DAT_032bff9c = local_4;
    }
  }
  return;
}



undefined4 * __thiscall
FUN_0092b080(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00845a20(0,DAT_032bd44c);
  param_1_00[10] = param_2;
  *param_1_00 = wxScrollWinEvent::vftable;
  param_1_00[3] = param_1;
  param_1_00[0xb] = param_3;
  return param_1_00;
}



undefined4 * __fastcall FUN_0092b0c0(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x30);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxScrollWinEvent::vftable;
    puVar1[10] = *(undefined4 *)(param_1 + 0x28);
    puVar1[0xb] = *(undefined4 *)(param_1 + 0x2c);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __thiscall FUN_0092b130(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00845a20(0,DAT_032bd44c);
  *(byte *)(param_1_00 + 10) = *(byte *)(param_1_00 + 10) & 0xf0;
  *(byte *)((int)param_1_00 + 0x29) = *(byte *)((int)param_1_00 + 0x29) & 0xe0;
  *(byte *)((int)param_1_00 + 0x29) = *(byte *)((int)param_1_00 + 0x29) & 0xe0;
  param_1_00[0xb] = 0;
  param_1_00[0xc] = 0;
  param_1_00[0xf] = 0;
  param_1_00[0x10] = 0;
  param_1_00[0x11] = 0;
  param_1_00[0xe] = 0;
  *param_1_00 = wxMouseEvent::vftable;
  param_1_00[3] = param_1;
  param_1_00[0xd] = 0xffffffff;
  return param_1_00;
}



undefined4 * __thiscall FUN_0092b180(undefined4 *param_1_00,int param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2968;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00845a60(param_1);
  puVar1 = (undefined4 *)0x0;
  local_4 = 0;
  if (param_1 != 0) {
    puVar1 = (undefined4 *)(param_1 + 0x28);
  }
  param_1_00[10] = *puVar1;
  param_1_00[0xb] = puVar1[1];
  param_1_00[0xc] = puVar1[2];
  *param_1_00 = wxMouseEvent::vftable;
  FUN_0092abc0(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_0092b200(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x48);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0092b180(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



int FUN_0092b270(int param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  
  iVar2 = FUN_0091ac40();
  iVar3 = iVar2;
  if (iVar2 != 0) {
    while (iVar3 != param_1) {
      piVar1 = (int *)(iVar3 + 0x44);
      iVar3 = *piVar1;
      if (*piVar1 == 0) {
        return 0;
      }
    }
    if (iVar3 != 0) {
      return iVar2;
    }
  }
  return 0;
}



undefined4 * FUN_0092b2a0(void)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x30);
  uVar1 = DAT_032bd44c;
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bd44c);
    *puVar2 = wxScrollWinEvent::vftable;
    puVar2[3] = uVar1;
    puVar2[0xb] = 0;
    puVar2[10] = 0;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 FUN_0092b330(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x48);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0092b130(DAT_032bd44c);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * FUN_0092b3a0(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x40);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bfed0);
    *puVar1 = wxSizeEvent::vftable;
    puVar1[10] = 0;
    puVar1[0xb] = 0;
    puVar1[0xc] = 0;
    puVar1[0xd] = 0;
    puVar1[0xe] = 0;
    puVar1[0xf] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_0092b430(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bff1c);
    *puVar1 = wxPaintEvent::vftable;
    DAT_032e1508 = DAT_032e1508 + 1;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * FUN_0092b4a0(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bff24);
    *puVar1 = wxNcPaintEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * FUN_0092b510(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bff20);
    *puVar1 = wxEraseEvent::vftable;
    puVar1[10] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_0092b590(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x40);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bfed8);
    *puVar1 = wxMoveEvent::vftable;
    puVar1[10] = 0;
    puVar1[0xb] = 0;
    puVar1[0xc] = 0;
    puVar1[0xd] = 0;
    puVar1[0xe] = 0;
    puVar1[0xf] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_0092b620(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bff08);
    *puVar1 = wxShowEvent::vftable;
    *(undefined *)(puVar1 + 10) = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_0092b6a0(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bff10);
    *puVar1 = wxMaximizeEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * FUN_0092b710(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bff0c);
    *puVar1 = wxIconizeEvent::vftable;
    *(undefined *)(puVar1 + 10) = 1;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * FUN_0092b780(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bff5c);
    *puVar1 = wxInitDialogEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 FUN_0092b7f0(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x38);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00910d20(0,0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * FUN_0092b860(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bff38);
    *puVar1 = wxSysColourChangedEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * FUN_0092b8d0(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bff3c);
    *puVar1 = wxDisplayChangedEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * FUN_0092b940(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x30);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bfe6c);
    *puVar1 = wxNavigationKeyEvent::vftable;
    puVar1[10] = 5;
    puVar1[0xb] = 0;
    puVar1[8] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_0092b9d0(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bff44);
    *puVar1 = wxPaletteChangedEvent::vftable;
    puVar1[10] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_0092ba50(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bff40);
    *puVar1 = wxQueryNewPaletteEvent::vftable;
    *(undefined *)(puVar1 + 10) = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_0092bad0(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bff14);
    *puVar1 = wxMouseCaptureChangedEvent::vftable;
    puVar1[10] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_0092bb50(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bff18);
    *puVar1 = wxMouseCaptureLostEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __thiscall FUN_0092bbc0(undefined4 *param_1_00,int param_1)

{
  bool bVar1;
  
  FUN_00845a20(0,DAT_032bd44c);
  *(byte *)(param_1_00 + 10) = *(byte *)(param_1_00 + 10) & 0xf0;
  param_1_00[3] = param_1;
  *param_1_00 = wxKeyEvent::vftable;
  param_1_00[0xd] = 0;
  *(undefined2 *)(param_1_00 + 0xe) = 0;
  bVar1 = param_1 == DAT_032bfe68;
  *(undefined *)(param_1_00 + 0x11) = 0;
  if (bVar1) {
    param_1_00[8] = 0x7fffffff;
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0092bc10(undefined4 *param_1_00,int param_1)

{
  undefined *puVar1;
  bool bVar2;
  
  FUN_00845a60(param_1);
  if (param_1 == 0) {
    puVar1 = (undefined *)0x0;
  }
  else {
    puVar1 = (undefined *)(param_1 + 0x28);
  }
  *(undefined *)(param_1_00 + 10) = *puVar1;
  *param_1_00 = wxKeyEvent::vftable;
  param_1_00[0xb] = *(undefined4 *)(param_1 + 0x2c);
  param_1_00[0xc] = *(undefined4 *)(param_1 + 0x30);
  param_1_00[0xd] = *(undefined4 *)(param_1 + 0x34);
  param_1_00[0xf] = *(undefined4 *)(param_1 + 0x3c);
  param_1_00[0x10] = *(undefined4 *)(param_1 + 0x40);
  *(undefined2 *)(param_1_00 + 0xe) = *(undefined2 *)(param_1 + 0x38);
  bVar2 = param_1_00[3] == DAT_032bfe68;
  *(undefined *)(param_1_00 + 0x11) = 0;
  if (bVar2) {
    param_1_00[8] = 0x7fffffff;
  }
  return param_1_00;
}



undefined4 __fastcall FUN_0092bc80(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x48);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0092bc10(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_0092bcf0(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x48);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0092bbc0(DAT_032bd44c);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_0092bd60(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_00845a20(param_2,param_1);
  param_1_00[0xf] = 0;
  param_1_00[0x10] = 7;
  *(undefined2 *)(param_1_00 + 0xb) = 0;
  param_1_00[0x11] = 0;
  param_1_00[0x13] = 0;
  param_1_00[0x14] = 0;
  param_1_00[0x15] = 0;
  param_1_00[0x16] = 0;
  *param_1_00 = wxCommandEvent::vftable;
  *(undefined *)((int)param_1_00 + 0x25) = 1;
  param_1_00[8] = 0x7fffffff;
  return param_1_00;
}



undefined4 * __thiscall
FUN_0092bdb0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  FUN_00845a20(param_2,param_1);
  param_1_00[0x10] = 7;
  param_1_00[0xf] = 0;
  *(undefined2 *)(param_1_00 + 0xb) = 0;
  param_1_00[0x11] = 0;
  param_1_00[0x15] = 0;
  param_1_00[0x16] = 0;
  param_1_00[0x14] = param_4;
  *(undefined *)((int)param_1_00 + 0x25) = 1;
  param_1_00[8] = 0x7fffffff;
  *param_1_00 = wxScrollEvent::vftable;
  param_1_00[0x13] = param_3;
  return param_1_00;
}



undefined4 * __thiscall FUN_0092be10(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  
  FUN_00845a20(0,DAT_032bd44c);
  param_1_00[0xf] = 0;
  param_1_00[0x10] = 7;
  *(undefined2 *)(param_1_00 + 0xb) = 0;
  param_1_00[0x11] = 0;
  param_1_00[0x13] = 0;
  param_1_00[0x14] = 0;
  param_1_00[0x15] = 0;
  param_1_00[0x16] = 0;
  *(undefined *)((int)param_1_00 + 0x25) = 1;
  param_1_00[8] = 0x7fffffff;
  *param_1_00 = wxWindowCreateEvent::vftable;
  uVar1 = DAT_032bff00;
  param_1_00[2] = param_1;
  param_1_00[3] = uVar1;
  return param_1_00;
}



undefined4 * __thiscall FUN_0092be70(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  
  FUN_00845a20(0,DAT_032bd44c);
  param_1_00[0xf] = 0;
  param_1_00[0x10] = 7;
  *(undefined2 *)(param_1_00 + 0xb) = 0;
  param_1_00[0x11] = 0;
  param_1_00[0x13] = 0;
  param_1_00[0x14] = 0;
  param_1_00[0x15] = 0;
  param_1_00[0x16] = 0;
  *(undefined *)((int)param_1_00 + 0x25) = 1;
  param_1_00[8] = 0x7fffffff;
  *param_1_00 = wxWindowDestroyEvent::vftable;
  uVar1 = DAT_032bff04;
  param_1_00[2] = param_1;
  param_1_00[3] = uVar1;
  return param_1_00;
}



undefined4 * __thiscall FUN_0092bed0(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00845a20(0,DAT_032bfe40);
  param_1_00[0xf] = 0;
  param_1_00[0x10] = 7;
  *(undefined2 *)(param_1_00 + 0xb) = 0;
  param_1_00[0x11] = 0;
  param_1_00[0x13] = 0;
  param_1_00[0x14] = 0;
  param_1_00[0x15] = 0;
  param_1_00[0x16] = 0;
  *(undefined *)((int)param_1_00 + 0x25) = 1;
  param_1_00[8] = 0x7fffffff;
  *param_1_00 = wxChildFocusEvent::vftable;
  param_1_00[2] = param_1;
  return param_1_00;
}



undefined4 FUN_0092bf20(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x5c);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0092bd60(DAT_032bd44c,0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_0092bf90(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x60);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0048a35a(DAT_032bd44c,0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * FUN_0092c000(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x5c);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bd44c);
    puVar1[0x10] = 7;
    puVar1[0xf] = 0;
    *(undefined2 *)(puVar1 + 0xb) = 0;
    puVar1[0x11] = 0;
    puVar1[0x15] = 0;
    puVar1[0x16] = 0;
    *(undefined *)((int)puVar1 + 0x25) = 1;
    puVar1[8] = 0x7fffffff;
    *puVar1 = wxScrollEvent::vftable;
    puVar1[0x14] = 0;
    puVar1[0x13] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 FUN_0092c0b0(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x5c);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0092bed0(0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_0092c120(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x88);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0091e400(0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_0092c190(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x5c);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0092be10(0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_0092c200(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x5c);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0092be70(0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_0092c270(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xb0);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00913960(DAT_032bd44c,0,&DAT_03238d0c,0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_0092c2f0(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(100);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00913b00(DAT_032bd44c,0,&DAT_03238d0c);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_0092c370(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x5c);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00913ae0(DAT_032bd44c,0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



int __thiscall FUN_0092c3e0(int param_1_00,int param_1)

{
  int iVar1;
  
  if ((*(int *)(param_1_00 + 0xc) == DAT_032c1058) && (*(int *)(param_1_00 + 8) != 0)) {
    iVar1 = FUN_0048a085(*(int *)(param_1_00 + 8),&PTR_u_wxTextCtrl_0323b24c);
    if (iVar1 != 0) {
      (**(code **)(*(int *)(iVar1 + 0x1d0) + 0x40))(param_1);
      return param_1;
    }
    FUN_004325a0(param_1_00 + 0x28);
    return param_1;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x28,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



undefined4 * __fastcall FUN_0092c480(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x5c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a2df(param_1);
    *puVar1 = wxScrollEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_0092c4f0(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x5c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a2df(param_1);
    *puVar1 = wxChildFocusEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_0092c560(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x5c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a2df(param_1);
    *puVar1 = wxWindowCreateEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_0092c5d0(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x5c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a2df(param_1);
    *puVar1 = wxWindowDestroyEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined ** FUN_0092c640(void)

{
  return &PTR_u_wxIcon_0323a18c;
}



void __fastcall FUN_0092c650(int param_1)

{
  if (*(HICON *)(param_1 + 0x14) != (HICON)0x0) {
    DestroyIcon(*(HICON *)(param_1 + 0x14));
    *(undefined4 *)(param_1 + 0x14) = 0;
  }
  return;
}



undefined4 * FUN_0092c690(int param_1)

{
  undefined4 *puVar1;
  
  if (param_1 != 0) {
    puVar1 = (undefined4 *)operator_new(0x18);
    if (puVar1 != (undefined4 *)0x0) {
      *puVar1 = wxGDIImageRefData::vftable;
      puVar1[1] = 1;
      puVar1[2] = *(undefined4 *)(param_1 + 8);
      puVar1[3] = *(undefined4 *)(param_1 + 0xc);
      puVar1[4] = *(undefined4 *)(param_1 + 0x10);
      puVar1[5] = 0;
      *puVar1 = wxIconRefData::vftable;
      return puVar1;
    }
  }
  return (undefined4 *)0x0;
}



void __thiscall FUN_0092c6e0(int param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = FUN_008f53d0();
  if (iVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4 = iVar2;
      FUN_008423d0();
      local_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
      ExceptionList = local_c;
      return;
    }
  }
  else {
    FUN_0083eaa0();
    *(int *)(*(int *)(param_1_00 + 4) + 0x14) = iVar2;
    iVar2 = *(int *)(param_1 + 4);
    if (iVar2 == 0) {
      uVar3 = 0;
      uVar4 = 0;
    }
    else {
      uVar3 = *(undefined4 *)(iVar2 + 0xc);
      uVar4 = *(undefined4 *)(iVar2 + 8);
    }
    FUN_0083eaa0();
    iVar2 = *(int *)(param_1_00 + 4);
    *(undefined4 *)(iVar2 + 8) = uVar4;
    *(undefined4 *)(iVar2 + 0xc) = uVar3;
  }
  ExceptionList = local_c;
  return;
}



void FUN_0092c830(undefined4 param_1)

{
  uint uVar1;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed7e8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_0096fb90(param_1);
  local_4 = 0;
  FUN_0092c6e0(local_14);
  local_4 = 0xffffffff;
  FUN_008f7630(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall
FUN_0092c8a0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  char cVar1;
  void *pvVar2;
  int *piVar3;
  undefined4 uVar4;
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea178;
  local_c = ExceptionList;
  pvVar2 = (void *)(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  ExceptionList = &local_c;
  FUN_0083e850();
  piVar3 = (int *)FUN_008f5d50(param_2);
  if (piVar3 != (int *)0x0) {
    uVar4 = (**(code **)(*piVar3 + 0x14))(param_1_00,param_1,param_2,param_3,param_4);
    ExceptionList = pvVar2;
    return uVar4;
  }
  local_10 = 0;
  local_14 = wxBitmap::vftable;
  local_4 = 0;
  cVar1 = FUN_008f5460(param_1,param_2);
  if (cVar1 == '\0') {
    local_4 = 0xffffffff;
    FUN_008f7630();
    ExceptionList = local_c;
    return 0;
  }
  FUN_0092c6e0(&local_14);
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return 1;
}



undefined4 * __thiscall
FUN_0092c990(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxIcon::vftable;
  FUN_0092c8a0(param_1,param_2,param_3,param_4);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_0092ca00(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 *local_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd8b90;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxIcon::vftable;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_38 = param_1_00;
  FID_conflict_assign(param_1,0,0xffffffff);
  local_18 = (void *)0x0;
  iVar1 = *(int *)(param_1 + 0x24);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (iVar1 != 0) {
    FID_conflict_append(1,0x3b);
    FUN_008758a0(iVar1);
  }
  FUN_0092c8a0(local_34,3,0xffffffff,0xffffffff);
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30,uVar2);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_0092caf0(int param_1)

{
  *(undefined *)(param_1 + 0x94) = 1;
  return;
}



undefined4 * __fastcall FUN_0092cb00(undefined4 *param_1)

{
  FUN_00959040();
  *param_1 = wxMenuBar::vftable;
  param_1[0x1c] = param_1;
  param_1[0x60] = 0;
  return param_1;
}



void FUN_0092cb30(int param_1,int param_2,int param_3)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = (undefined4 *)operator_new(param_2 * 8);
  if (param_3 != 0) {
    iVar2 = param_1 - (int)puVar1;
    do {
      if (puVar1 != (undefined4 *)0x0) {
        *puVar1 = *(undefined4 *)(iVar2 + (int)puVar1);
        puVar1[1] = *(undefined4 *)(iVar2 + 4 + (int)puVar1);
      }
      puVar1 = puVar1 + 2;
      param_3 = param_3 + -1;
    } while (param_3 != 0);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



void __fastcall thunk_FUN_0095f6a0(int param_1)

{
  int *piVar1;
  int iVar2;
  int aiStack_c [2];
  char cStack_4;
  
  piVar1 = (int *)FUN_00432231(aiStack_c);
  iVar2 = *piVar1;
  if (*(uint *)(iVar2 + 0x18) < 8) {
    iVar2 = iVar2 + 4;
  }
  else {
    iVar2 = *(int *)(iVar2 + 4);
  }
  SetWindowTextW(*(HWND *)(param_1 + 0x13c),(LPCWSTR)(iVar2 + piVar1[1] * 2));
  if ((cStack_4 != '\0') && (aiStack_c[0] != 0)) {
    _free(*(void **)(aiStack_c[0] + 0x1c));
    if (7 < *(uint *)(aiStack_c[0] + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(aiStack_c[0] + 4));
    }
    *(undefined4 *)(aiStack_c[0] + 0x18) = 7;
    *(undefined4 *)(aiStack_c[0] + 0x14) = 0;
    *(undefined2 *)(aiStack_c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(aiStack_c[0]);
  }
  return;
}



undefined4 FUN_0092cbd0(int param_1)

{
  int iVar1;
  int iVar2;
  
  if (*(int *)(param_1 + 4) == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = *(int *)(*(int *)(param_1 + 4) + 8);
  }
  iVar1 = GetSystemMetrics(0x47);
  if (iVar2 <= iVar1) {
    if (*(int *)(param_1 + 4) == 0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *(int *)(*(int *)(param_1 + 4) + 0xc);
    }
    iVar1 = GetSystemMetrics(0x48);
    if (iVar2 <= iVar1) {
      return 0;
    }
  }
  return 1;
}



uint __thiscall FUN_0092cc20(int param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = *(uint *)(param_1_00 + 0xa0);
  uVar2 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0xa0) <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      if (*(int *)(*(int *)(*(int *)(param_1_00 + 0xa4) + uVar2 * 4) + 8) == param_1) {
        return uVar2;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar1);
  }
  return 0xffffffff;
}



void __fastcall FUN_0092cc90(int param_1)

{
  int iVar1;
  int iVar2;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0xb0) != -1)) {
    FUN_00840480("..\\..\\src\\msw\\menu.cpp",0x354,"wxMenu::CalculateMaxAccelWidth",
                 "m_maxAccelWidth == -1",L"it\'s really needed?");
  }
  for (iVar1 = *(int *)(param_1 + 0x78); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if ((*(char *)(*(int *)(iVar1 + 8) + 0x68) != '\0') &&
       (iVar2 = FUN_0095b2a0(), *(int *)(param_1 + 0xb0) < iVar2)) {
      *(int *)(param_1 + 0xb0) = iVar2;
    }
  }
  return;
}



undefined4 __thiscall FUN_0092cd00(int param_1_00,undefined4 param_1,ushort param_2)

{
  int *piVar1;
  UINT UVar2;
  int iVar3;
  uint uVar4;
  
  iVar3 = (int)(short)param_2;
  if (iVar3 != -3) {
    uVar4 = 0xffffffff;
    piVar1 = (int *)FUN_00958d90(iVar3,0);
    if ((piVar1 != (int *)0x0) && ((piVar1[0x17] == 1 || (piVar1[0x17] == 2)))) {
      (**(code **)(*piVar1 + 0x28))(*(char *)(piVar1 + 0x18) == '\0');
      UVar2 = GetMenuState(*(HMENU *)(param_1_00 + 0x98),(uint)param_2,0);
      uVar4 = UVar2 >> 3 & 1;
    }
    FUN_00959ac0(iVar3,uVar4);
  }
  return 1;
}



int __thiscall FUN_0092cd70(int param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  
  if (*(int *)(param_1_00 + 0x98) == param_1) {
    return param_1_00;
  }
  uVar2 = 0;
  if (*(int *)(param_1_00 + 0x70) != 0) {
    do {
      iVar1 = FUN_00958df0(uVar2);
      if ((*(int *)(iVar1 + 0x10) != 0) && (iVar1 = FUN_0092cd70(param_1), iVar1 != 0)) {
        return iVar1;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < *(uint *)(param_1_00 + 0x70));
  }
  return 0;
}



void __fastcall FUN_0092cdc0(int param_1)

{
  if (*(int *)(param_1 + 0x138) == 0) {
    if (*(int *)(param_1 + 0x17c) != 0) {
      DrawMenuBar(*(HWND *)(*(int *)(param_1 + 0x17c) + 0x13c));
      return;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\menu.cpp",0x43a,"wxMenuBar::Refresh","IsAttached()",
                   L"can\'t refresh unattached menubar");
    }
  }
  return;
}



int __thiscall FUN_0092ce10(int param_1_00,int param_1,int param_3)

{
  HMENU pHVar1;
  int iVar2;
  HMENU pHVar3;
  int iVar4;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (param_1 == 0) {
      FUN_008402e0("..\\..\\src\\msw\\menu.cpp",0x494,"wxMenuBar::MSWPositionForWxMenu",
                   &DAT_00d5017c,0);
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      if (*(int *)(param_1 + 0x98) == 0) {
        FUN_008402e0("..\\..\\src\\msw\\menu.cpp",0x495,"wxMenuBar::MSWPositionForWxMenu",
                     "menu->GetHMenu()",0);
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x180) == 0)) {
        FUN_008402e0("..\\..\\src\\msw\\menu.cpp",0x496,"wxMenuBar::MSWPositionForWxMenu","m_hMenu",
                     0);
      }
    }
  }
  iVar2 = GetMenuItemCount(*(HMENU *)(param_1_00 + 0x180));
  iVar4 = param_3;
  if (param_3 < iVar2) {
    do {
      pHVar1 = *(HMENU *)(param_1 + 0x98);
      pHVar3 = GetSubMenu(*(HMENU *)(param_1_00 + 0x180),iVar4);
      if (pHVar3 == pHVar1) {
        return iVar4;
      }
      iVar4 = iVar4 + 1;
    } while (iVar4 < iVar2);
  }
  iVar4 = 0;
  if (0 < param_3) {
    do {
      pHVar1 = *(HMENU *)(param_1 + 0x98);
      pHVar3 = GetSubMenu(*(HMENU *)(param_1_00 + 0x180),iVar4);
      if (pHVar3 == pHVar1) {
        return iVar4;
      }
      iVar4 = iVar4 + 1;
    } while (iVar4 < param_3);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\msw\\menu.cpp",0x4a9,"wxMenuBar::MSWPositionForWxMenu",
                 "Assert failure",0);
  }
  return -1;
}



void __thiscall FUN_0092cf80(int param_1_00,uint param_1,char param_2)

{
  undefined4 uVar1;
  UINT uIDEnableItem;
  uint uEnable;
  
  if (*(int *)(param_1_00 + 0x17c) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\menu.cpp",0x4b6,"wxMenuBar::EnableTop","IsAttached()",
                   L"doesn\'t work with unattached menubars");
    }
  }
  else {
    if (param_1 < *(uint *)(param_1_00 + 0x168)) {
      uEnable = param_2 == '\0' | 0x400;
      uVar1 = FUN_00959160(param_1);
      uIDEnableItem = FUN_0092ce10(uVar1,param_1);
      EnableMenuItem(*(HMENU *)(param_1_00 + 0x180),uIDEnableItem,uEnable);
      FUN_0092cdc0();
      return;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\menu.cpp",0x4b7,"wxMenuBar::EnableTop","pos < GetMenuCount()",
                   L"invalid menu index");
      return;
    }
  }
  return;
}



int __thiscall FUN_0092d030(int param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  
  if (*(int *)(param_1_00 + 0x180) == param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\menu.cpp",0x632,"wxMenuBar::MSWGetMenu","GetHMenu() != hMenu",
                   L"wxMenuBar::MSWGetMenu(): menu handle is wxMenuBar, not wxMenu");
    }
    return 0;
  }
  uVar2 = 0;
  if (*(int *)(param_1_00 + 0x168) != 0) {
    do {
      iVar1 = param_1;
      FUN_00959160(uVar2);
      iVar1 = FUN_0092cd70(iVar1);
      if (iVar1 != 0) {
        return iVar1;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < *(uint *)(param_1_00 + 0x168));
  }
  return 0;
}



uint __thiscall FUN_0092d0b0(int *param_1_00,int param_1,int *param_2,int **param_3)

{
  int *piVar1;
  int *piVar2;
  
  piVar2 = (int *)param_1_00[2];
  piVar1 = piVar2 + *param_1_00 * 2;
  while( true ) {
    if (piVar2 == piVar1) {
      return (uint)piVar2 & 0xffffff00;
    }
    if ((*piVar2 <= param_1) && (param_1 <= piVar2[1])) break;
    piVar2 = piVar2 + 2;
  }
  if (param_2 != (int *)0x0) {
    *param_2 = *piVar2;
  }
  if (param_3 != (int **)0x0) {
    piVar2 = (int *)piVar2[1];
    *param_3 = piVar2;
  }
  return CONCAT31((int3)((uint)piVar2 >> 8),1);
}



undefined4 __thiscall
FUN_0092d100(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  
  if (*(int *)(param_1_00 + 0x90) != 0) {
    cVar1 = FUN_0092d0b0(param_1,param_2,param_3);
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



uint __thiscall FUN_0092d130(int param_1_00,undefined4 *param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  uint uVar6;
  
  uVar1 = *(uint *)(param_1_00 + 0xa0);
  uVar6 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0xa0) <= uVar6)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      puVar2 = *(undefined4 **)(*(int *)(param_1_00 + 0xa4) + uVar6 * 4);
      if (puVar2 != param_1) {
        uVar3 = puVar2[3];
        uVar4 = puVar2[2];
        uVar5 = *puVar2;
        param_1[1] = puVar2[1];
        param_1[3] = uVar3;
        *param_1 = uVar5;
        param_1[2] = uVar4;
      }
      uVar6 = uVar6 + 1;
      param_1 = param_1 + 4;
    } while (uVar6 < uVar1);
  }
  return uVar1;
}



undefined4 __fastcall FUN_0092d1d0(int param_1)

{
  uint uVar1;
  void *pvVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8bde;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = *(uint *)(param_1 + 0xa0);
  pvVar2 = (void *)FUN_00823c23(-(uint)((int)((ulonglong)uVar1 * 0x10 >> 0x20) != 0) |
                                (uint)((ulonglong)uVar1 * 0x10),
                                DAT_0323f878 ^ (uint)&stack0xffffffe0);
  uStack_4 = 0;
  if (pvVar2 == (void *)0x0) {
    pvVar2 = (void *)0x0;
  }
  else {
    _vector_constructor_iterator_(pvVar2,0x10,uVar1,(_func_void_ptr_void_ptr *)&LAB_0044488f);
  }
  uStack_4 = 1;
  FUN_0092d130(pvVar2);
  pvVar3 = operator_new(8);
  uStack_4 = CONCAT31(uStack_4._1_3_,2);
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_00932740(uVar1,pvVar2);
  }
  FUN_00a3f66c(pvVar2);
  ExceptionList = local_c;
  return uVar4;
}



undefined4 * __thiscall FUN_0092d2a0(undefined4 *param_1,byte param_2)

{
  *param_1 = wxMenuBar::vftable;
  if (((HMENU)param_1[0x60] != (HMENU)0x0) && (param_1[0x5f] == 0)) {
    DestroyMenu((HMENU)param_1[0x60]);
    param_1[0x60] = 0;
  }
  FUN_009590c0();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



void __fastcall FUN_0092d2f0(int *param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int iStack_1c;
  void *local_c;
  undefined *puStack_8;
  int iStack_4;
  
  iStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8c08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar6 = param_1[0x5a];
  iVar4 = param_1[0x5c];
  iVar5 = 0;
  uVar7 = 0;
  iVar2 = iVar6;
  if (iVar6 != 0) {
    do {
      uVar7 = uVar7 + *(int *)(*(int *)(iVar4 + 8) + 0xa0);
      iVar2 = iVar2 + -1;
      iVar4 = *(int *)(iVar4 + 0xc);
    } while (iVar2 != 0);
    if (uVar7 != 0) {
      iStack_1c = FUN_00823c23(-(uint)((int)((ulonglong)uVar7 * 0x10 >> 0x20) != 0) |
                               (uint)((ulonglong)uVar7 * 0x10),DAT_0323f878 ^ (uint)&stack0xffffffd4
                              );
      if (iStack_1c == 0) {
        iStack_1c = 0;
      }
      else {
        iVar4 = uVar7 - 1;
        if (-1 < iVar4) {
          puVar3 = (undefined4 *)(iStack_1c + 8);
          do {
            puVar3[-2] = 0;
            puVar3[-1] = 0;
            *puVar3 = 0;
            puVar3[1] = 0;
            puVar3 = puVar3 + 4;
            iVar4 = iVar4 + -1;
          } while (-1 < iVar4);
        }
      }
      iVar4 = param_1[0x5c];
      do {
        iVar2 = FUN_0092d130(iVar5 * 0x10 + iStack_1c);
        iVar5 = iVar5 + iVar2;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar4 == 0)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/menu.h",0x25,
                       "wxMenuList::iterator::operator ++","m_node",L"uninitialized iterator");
        }
        iVar6 = iVar6 + -1;
        iVar4 = *(int *)(iVar4 + 0xc);
      } while (iVar6 != 0);
      uVar1 = FUN_00932740(iVar5,iStack_1c);
      iStack_4 = iVar6;
      (**(code **)(*param_1 + 0x148))(uVar1);
      puStack_8 = (undefined *)0xffffffff;
      FUN_0083e850();
      FUN_00a3f66c(iStack_1c);
    }
  }
  ExceptionList = local_c;
  return;
}



uint __thiscall FUN_0092d470(uint *param_1_00,int param_1)

{
  bool bVar1;
  int *piVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  
  piVar2 = (int *)param_1_00[2];
  bVar1 = false;
  if (piVar2 != piVar2 + *param_1_00 * 2) {
    do {
      if (param_1 < *piVar2) {
        piVar2[1] = piVar2[1] + 1;
        *piVar2 = *piVar2 + 1;
      }
      else if (param_1 <= piVar2[1] + 1) {
        piVar2[1] = piVar2[1] + 1;
        bVar1 = true;
      }
      piVar2 = piVar2 + 2;
    } while (piVar2 != (int *)(param_1_00[2] + *param_1_00 * 8));
    if (bVar1) {
      return (uint)piVar2 & 0xffffff00;
    }
  }
  uVar3 = *param_1_00;
  uVar5 = uVar3 + 1;
  if (param_1_00[1] < uVar5) {
    if (uVar3 == 0) {
      uVar4 = 0x10;
    }
    else {
      uVar4 = uVar3;
      if (0xfff < uVar3) {
        uVar4 = 0x1000;
      }
    }
    uVar4 = uVar4 + param_1_00[1];
    if (uVar5 < uVar4) {
      uVar5 = uVar4;
    }
    uVar3 = FUN_0092cb30(param_1_00[2],uVar5 * 8,uVar3);
    param_1_00[2] = uVar3;
    param_1_00[1] = uVar5;
  }
  piVar2 = (int *)(param_1_00[2] + *param_1_00 * 8);
  if (piVar2 != (int *)0x0) {
    *piVar2 = param_1;
    piVar2[1] = param_1;
  }
  *param_1_00 = *param_1_00 + 1;
  return CONCAT31((int3)((uint)piVar2 >> 8),1);
}



undefined4 FUN_0092d530(int param_1,char param_2)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  undefined *puVar4;
  undefined4 uVar5;
  undefined auStack_1c [8];
  undefined **appuStack_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8c48;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar3 = FUN_00894b40(DAT_0323f878 ^ (uint)&stack0xffffffd4);
  if (iVar3 < 0x600) {
    ExceptionList = local_c;
    return 0xffffffff;
  }
  iVar3 = param_1 + 0xa0;
  if (param_2 == '\0') {
    iVar3 = param_1 + 0xa8;
  }
  piVar1 = *(int **)(iVar3 + 4);
  if (piVar1 != (int *)0x0) {
    piVar1[1] = piVar1[1] + 1;
  }
  local_4 = 0;
  if (piVar1 != (int *)0x0) {
    cVar2 = (**(code **)(*piVar1 + 4))();
    if (cVar2 != '\0') {
      FUN_008f3b70(appuStack_14);
      local_4._0_1_ = 1;
      iVar3 = FUN_008ff940();
      if (iVar3 == 0) {
        FUN_00900600();
        FUN_00414f38(appuStack_14,0xffffffff);
        local_4._0_1_ = 2;
        puVar4 = (undefined *)(param_1 + 0xa0);
        if (param_2 == '\0') {
          puVar4 = (undefined *)(param_1 + 0xa8);
        }
        if (puVar4 != auStack_1c) {
          FUN_0083ea60(auStack_1c);
        }
        *(undefined *)(param_1 + 0x68) = 1;
        local_4._0_1_ = 1;
        FUN_008f7630();
      }
      iVar3 = param_1 + 0xa0;
      if (param_2 == '\0') {
        iVar3 = param_1 + 0xa8;
      }
      if (*(int *)(iVar3 + 4) == 0) {
        uVar5 = 0;
      }
      else {
        uVar5 = *(undefined4 *)(*(int *)(iVar3 + 4) + 0x14);
      }
      local_4 = (uint)local_4._1_3_ << 8;
      appuStack_14[0] = wxObject::vftable;
      FUN_0083e850();
      local_4 = 0xffffffff;
      FUN_008f7630();
      ExceptionList = local_c;
      return uVar5;
    }
  }
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_0092d6d0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined local_30 [16];
  uint uStack_20;
  void *pvStack_1c;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = (**(code **)(*param_1_00 + 0x350))(local_30,param_2,DAT_0323f878 ^ (uint)&stack0xffffffc8)
  ;
  uVar1 = uStack_4;
  local_c = (void *)0x0;
  FUN_00959830(uStack_4,uVar2);
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(0);
  }
  ExceptionList = pvStack_14;
  return uVar1;
}



undefined4 FUN_0092d760(undefined4 param_1)

{
  FUN_00913e90(param_1);
  return param_1;
}



void __thiscall FUN_0092d780(int param_1_00,int *param_1)

{
  void **ppvVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9388;
  local_c = ExceptionList;
  if (param_1[4] == 0) {
    if (param_1[0x17] != -1) {
      ExceptionList = &local_c;
      if (*(int *)(param_1_00 + 0x44) == 0) {
        uVar2 = (**(code **)(*param_1 + 0x14))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc0);
        uStack_4 = 0;
        iVar3 = FUN_009b1ad0(uVar2);
        uStack_4 = 0xffffffff;
        FUN_0040159c();
        if (iVar3 != 0) {
          *(int *)(iVar3 + 8) = param_1[2];
        }
        iVar4 = FUN_0092cc20(param_1[2]);
        if (iVar4 != -1) {
          puVar5 = (undefined4 *)FUN_00a142b0(iVar4);
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(*puVar5);
        }
        if (iVar3 != 0) {
          FUN_0086a400(iVar3,1);
          iVar3 = FUN_00958e40();
          if (iVar3 != 0) {
            FUN_00958e40();
            FUN_0092d2f0();
          }
          *(undefined4 *)(param_1_00 + 0xb0) = 0xffffffff;
        }
      }
      else {
        FUN_0092d780(param_1);
      }
    }
  }
  else {
    ppvVar1 = &local_c;
    for (iVar3 = *(int *)(param_1[4] + 0x78); ExceptionList = ppvVar1, iVar3 != 0;
        iVar3 = *(int *)(iVar3 + 0xc)) {
      FUN_0092d780(*(undefined4 *)(iVar3 + 8));
      ppvVar1 = (void **)ExceptionList;
    }
  }
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_0092d8c0(int param_1_00,int param_1,uint param_2)

{
  int iVar1;
  
  if (param_2 < *(uint *)(param_1_00 + 0x168)) {
    iVar1 = FUN_0086aef0(param_2);
    if (iVar1 == 0) {
      iVar1 = 0;
    }
    else {
      iVar1 = *(int *)(iVar1 + 8);
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(iVar1 + 0x48,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    return param_1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\menu.cpp",0x4fd,"wxMenuBar::GetMenuLabel","pos < GetMenuCount()"
                 ,L"invalid menu index in wxMenuBar::GetMenuLabel");
  }
  FUN_004325b6(PTR_DAT_03236318);
  return param_1;
}



void FUN_0092d970(HMENU param_1,UINT param_2)

{
  char cVar1;
  BOOL BVar2;
  MENUITEMINFOW local_8c [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8c83;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  _memset(local_8c,0,0x30);
  local_8c[0].cbSize = 0x30;
  local_8c[0].fMask = 1;
  local_8c[0].fState = 0x1000;
  BVar2 = SetMenuItemInfoW(param_1,param_2,0,local_8c);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_0092dac0(HMENU param_1,UINT param_2,ULONG_PTR param_3,BOOL param_4)

{
  char cVar1;
  BOOL BVar2;
  MENUITEMINFOW local_8c [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8c83;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  _memset(local_8c,0,0x30);
  local_8c[0].cbSize = 0x30;
  local_8c[0].fMask = 0x120;
  local_8c[0].fType = 0x100;
  local_8c[0].dwItemData = param_3;
  if (*(int *)(param_3 + 0x5c) == -1) {
    local_8c[0].fType = 0x900;
  }
  BVar2 = SetMenuItemInfoW(param_1,param_2,param_4,local_8c);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0092dc30(int *param_1)

{
  char cVar1;
  HMENU pHVar2;
  undefined auStack_d0 [8];
  undefined4 uStack_c8;
  undefined *puStack_c4;
  char *pcStack_c0;
  char *pcStack_bc;
  wchar_t *pwStack_b8;
  char *pcStack_b4;
  undefined *puStack_9c;
  undefined auStack_98 [104];
  uint uStack_30;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8cce;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&puStack_9c;
  ExceptionList = &local_c;
  param_1[0x24] = 0;
  *(undefined *)(param_1 + 0x25) = 0;
  *(undefined *)(param_1 + 0x2a) = 0;
  param_1[0x2b] = 0;
  param_1[0x2c] = -1;
  pHVar2 = CreatePopupMenu();
  param_1[0x26] = (int)pHVar2;
  if (pHVar2 == (HMENU)0x0) {
    puStack_9c = auStack_d0;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      pcStack_b4 = (char *)0x92dcd7;
      FUN_0081c0f1();
      pcStack_b4 = "wxMenu::Init";
      pwStack_b8 = (wchar_t *)0x11b;
      pcStack_bc = "..\\..\\src\\msw\\menu.cpp";
      pcStack_c0 = (char *)0x6;
      uStack_4 = 0;
      puStack_c4 = (undefined *)0x92dcfd;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      pcStack_b4 = (char *)0x92dd12;
      FUN_00843700();
      pcStack_b4 = (char *)0x92dd1b;
      pcStack_b4 = (char *)GetLastError();
      pwStack_b8 = L"CreatePopupMenu";
      pcStack_bc = (char *)0x11b;
      pcStack_c0 = "..\\..\\src\\msw\\menu.cpp";
      puStack_c4 = auStack_98;
      uStack_c8 = 0x92dd37;
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  if (param_1[0x17] != 0) {
    pcStack_b4 = (char *)0x0;
    pwStack_b8 = (wchar_t *)(param_1 + 0x12);
    uStack_30 = uStack_30 & 0xffff0000;
    uStack_1c = 7;
    uStack_20 = 0;
    pcStack_bc = (char *)0x92dd8f;
    FID_conflict_assign();
    pvStack_18 = (void *)0x0;
    uStack_4 = 2;
    FUN_00432156();
    pcStack_b4 = (char *)0x92ddb6;
    (**(code **)(*param_1 + 0x60))();
    pcStack_b4 = (char *)0x92ddc3;
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      pcStack_b4 = &UNK_0092ddda;
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_0092de10(undefined4 *param_1)

{
  char cVar1;
  int iVar2;
  BOOL BVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd8d26;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = wxMenu::vftable;
  local_4 = 1;
  iVar2 = FUN_00958e40();
  if ((iVar2 == 0) && (param_1[0x11] == 0)) {
    BVar3 = DestroyMenu((HMENU)param_1[0x26]);
    if (BVar3 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        local_4._0_1_ = 2;
        FUN_008423d0();
        local_4._0_1_ = 3;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_4._0_1_ = 2;
        FUN_00842440();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
      }
    }
  }
  if (param_1[0x28] != 0) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[0x28] == 0)) {
      FUN_008402e0();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  FUN_0086a880();
  if (param_1[0x24] != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_4 = local_4 & 0xffffff00;
  FUN_0086aa30();
  local_4 = 0xffffffff;
  FUN_00959860();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0092e000(int *****param_1_00,int *******param_1)

{
  int ****ppppiVar1;
  int ***pppiVar2;
  bool bVar3;
  bool bVar4;
  int *******pppppppiVar5;
  char cVar6;
  int ****ppppiVar7;
  int iVar8;
  BOOL BVar9;
  code *pcVar10;
  int ******ppppppiVar11;
  int ******ppppppiVar12;
  int ******appppppiStack_16c [2];
  undefined4 uStack_164;
  undefined *puStack_160;
  uint uStack_130;
  uint uStack_12c;
  UINT_PTR UStack_128;
  int *******pppppppiStack_124;
  MENUITEMINFOW MStack_11c;
  undefined4 uStack_ec;
  undefined4 uStack_e8;
  undefined4 uStack_e4;
  undefined4 uStack_e0;
  undefined4 uStack_dc;
  undefined4 uStack_d8;
  undefined4 uStack_d4;
  undefined auStack_d0 [156];
  int *******apppppppiStack_34 [4];
  UINT UStack_24;
  uint uStack_20;
  void *pvStack_1c;
  void *local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  pppppppiVar5 = param_1;
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bd8dd4;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&uStack_130);
  ExceptionList = &local_c;
  FUN_0092d780();
  cVar6 = (*(code *)(*param_1)[9])();
  uStack_12c = (uint)(cVar6 == '\0');
  if (*(char *)(param_1_00 + 0x25) != '\0') {
    uStack_12c = uStack_12c | 0x40;
    *(undefined *)(param_1_00 + 0x25) = 0;
  }
  if (param_1[0x17] == (int ******)0xffffffff) {
    uStack_12c = uStack_12c | 0x800;
  }
  ppppppiVar11 = param_1[4];
  if (ppppppiVar11 == (int ******)0x0) {
    pppppppiStack_124 = (int *******)FUN_0095ac30();
  }
  else {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (ppppppiVar11[0x26] == (int *****)0x0)) {
      FUN_00840480();
    }
    pppppppiStack_124 = (int *******)ppppppiVar11[0x26];
    uStack_12c = uStack_12c | 0x10;
    ppppppiVar11[0x11] = param_1_00;
  }
  (*(code *)(*param_1)[5])();
  uStack_8._0_1_ = 0;
  uStack_8._1_3_ = 0;
  if (param_1 == (int *******)0xffffffff) {
    param_1 = (int *******)((int)param_1_00[0x1c] + -1);
  }
  bVar4 = false;
  if (pppppppiVar5[0x17] == (int ******)0x2) {
    if (param_1_00[0x24] == (int ****)0x0) {
      ppppiVar7 = (int ****)operator_new(0xc);
      if (ppppiVar7 == (int ****)0x0) {
        ppppiVar7 = (int ****)0x0;
      }
      else {
        *ppppiVar7 = (int ***)0x0;
        ppppiVar7[1] = (int ***)0x0;
        ppppiVar7[2] = (int ***)0x0;
      }
      param_1_00[0x24] = ppppiVar7;
    }
    cVar6 = FUN_0092d470();
    if (cVar6 != '\0') {
      bVar4 = true;
    }
  }
  iVar8 = FUN_00958e40();
  if ((iVar8 == 0) && (param_1_00[0x17] != (int ****)0x0)) {
    param_1 = (int *******)((int)param_1 + 2);
  }
  if (*(char *)(param_1_00 + 0x2a) != '\0') {
    *(undefined *)(pppppppiVar5 + 0x1a) = 1;
  }
  if (*(char *)(pppppppiVar5 + 0x1a) == '\0') {
    if (uStack_20 < 8) {
      apppppppiStack_34[0] = (int *******)apppppppiStack_34;
    }
LAB_0092e6da:
    puStack_160 = (undefined *)0x92e6ff;
    BVar9 = InsertMenuW((HMENU)param_1_00[0x26],(UINT)param_1,uStack_130 | 0x400,UStack_128,
                        (LPCWSTR)apppppppiStack_34[0]);
    if (BVar9 == 0) {
      pppppppiStack_124 = appppppiStack_16c;
      FUN_0043c211(&DAT_00d25fa0);
      cVar6 = FUN_00846b30(6);
      if (cVar6 != '\0') {
        FUN_0081c0f1();
        uStack_8._0_1_ = 0xb;
        puStack_160 = (undefined *)0x92e765;
        FUN_008423d0();
        uStack_8._0_1_ = 0xc;
        GetLastError();
        FUN_00843700();
        GetLastError();
        puStack_160 = auStack_d0;
        uStack_164 = 0x92e7a2;
        FUN_00847d90();
        uStack_8._0_1_ = 0xb;
        FUN_00842440();
        uStack_8._0_1_ = 0;
        FUN_0081b5bc();
      }
      _free(pvStack_1c);
      if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      goto LAB_0092e877;
    }
  }
  else {
    if ((*(char *)(param_1_00 + 0x2a) != '\0') || (pppppppiVar5[0x17] == (int ******)0xffffffff)) {
LAB_0092e5fa:
      ppppppiVar11 = pppppppiVar5[0x2b];
      uStack_130 = uStack_130 | 0x100;
      pppppppiStack_124 = pppppppiVar5;
      if (ppppppiVar11 != (int ******)0x0) {
        ppppppiVar11 = (int ******)ppppppiVar11[2];
      }
      ppppppiVar12 = pppppppiVar5[0x29];
      if (ppppppiVar12 != (int ******)0x0) {
        ppppppiVar12 = (int ******)ppppppiVar12[2];
      }
      ppppiVar7 = param_1_00[0x2b];
      if ((int)ppppiVar7 < (int)ppppppiVar11) {
        param_1_00[0x2b] = (int ****)ppppppiVar11;
      }
      ppppiVar1 = param_1_00[0x2b];
      if ((int)ppppiVar1 < (int)ppppppiVar12) {
        param_1_00[0x2b] = (int ****)ppppppiVar12;
      }
      apppppppiStack_34[0] = pppppppiVar5;
      if ((*(char *)(param_1_00 + 0x2a) == '\0') ||
         ((int)ppppiVar1 < (int)ppppppiVar12 || (int)ppppiVar7 < (int)ppppppiVar11)) {
        ppppiVar7 = param_1_00[0x1e];
        uStack_12c = 0;
        for (; pppppppiStack_124 = apppppppiStack_34[0], ppppiVar7 != (int ****)0x0;
            ppppiVar7 = (int ****)ppppiVar7[3]) {
          pppiVar2 = ppppiVar7[2];
          if (*(char *)(pppiVar2 + 0x1a) == '\0') {
            *(undefined *)(pppiVar2 + 0x1a) = 1;
            FUN_0092dac0();
          }
          uStack_12c = uStack_12c + 1;
          pppiVar2[0x27] = (int **)param_1_00[0x2b];
          apppppppiStack_34[0] = pppppppiStack_124;
        }
        *(undefined *)(param_1_00 + 0x2a) = 1;
        param_1_00[0x2c] = (int ****)0xffffffff;
      }
      else {
        pppppppiVar5[0x27] = (int ******)param_1_00[0x2b];
      }
      goto LAB_0092e6da;
    }
    if ((DAT_032bffa4 & 1) == 0) {
      DAT_032bffa4 = DAT_032bffa4 | 1;
      uStack_8._0_1_ = 1;
      DAT_032bffa0 = FUN_00894b40();
      uStack_8._0_1_ = 0;
    }
    if ((((DAT_032bffa0 < 0x410) || (cVar6 = (*(code *)pppppppiVar5[0x1d][9])(), cVar6 != '\0')) ||
        (cVar6 = (*(code *)pppppppiVar5[0x22][9])(), cVar6 != '\0')) ||
       (cVar6 = (*(code *)pppppppiVar5[0x1b][4])(), cVar6 != '\0')) goto LAB_0092e5fa;
    bVar3 = false;
    FUN_008f2970();
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,2);
    cVar6 = (*(code *)pppppppiVar5[0x2a][4])();
    if (((cVar6 != '\0') && (cVar6 = FUN_0092cbd0(), cVar6 != '\0')) ||
       ((cVar6 = FUN_00414f01(), cVar6 != '\0' && (cVar6 = FUN_0092cbd0(), cVar6 != '\0')))) {
      bVar3 = true;
    }
    uStack_8._0_1_ = 0;
    FUN_008f7630();
    if (bVar3) goto LAB_0092e5fa;
    _memset(&MStack_11c,0,0x30);
    MStack_11c.cbSize = 0x30;
    MStack_11c.fMask = 0x60;
    if ((pppppppiVar5[0x17] == (int ******)0x1) || (pppppppiVar5[0x17] == (int ******)0x2)) {
      MStack_11c.fMask = 0x68;
      MStack_11c.hbmpChecked = (HBITMAP)FUN_0092d530();
      MStack_11c.hbmpUnchecked = (HBITMAP)FUN_0092d530();
    }
    else {
      cVar6 = (*(code *)pppppppiVar5[0x28][4])();
      if (cVar6 != '\0') {
        MStack_11c.fMask = MStack_11c.fMask | 0x80;
        MStack_11c.hbmpItem = (HBITMAP)FUN_0092d530();
      }
    }
    MStack_11c.cch = UStack_24;
    if (uStack_20 < 8) {
      MStack_11c.dwTypeData = (LPWSTR)apppppppiStack_34;
    }
    else {
      MStack_11c.dwTypeData = (LPWSTR)apppppppiStack_34[0];
    }
    if ((uStack_130 & 0x10) == 0) {
      MStack_11c.fMask = MStack_11c.fMask | 2;
      MStack_11c.wID = UStack_128;
    }
    else {
      MStack_11c.fMask = MStack_11c.fMask | 4;
      MStack_11c.hSubMenu = (HMENU)pppppppiVar5[4][0x26];
    }
    MStack_11c.dwItemData = (ULONG_PTR)pppppppiVar5;
    BVar9 = InsertMenuItemW((HMENU)param_1_00[0x26],(UINT)param_1,1,&MStack_11c);
    if (BVar9 == 0) {
      pppppppiStack_124 = appppppiStack_16c;
      FUN_0043c211(&DAT_00d25fa0);
      cVar6 = FUN_00846b30(6);
      if (cVar6 != '\0') {
        FUN_0081c0f1();
        uStack_8._0_1_ = 3;
        puStack_160 = (undefined *)0x92e3ea;
        FUN_008423d0();
        uStack_8._0_1_ = 4;
        GetLastError();
        FUN_00843700();
        GetLastError();
        puStack_160 = auStack_d0;
        uStack_164 = 0x92e427;
        FUN_00847d90();
        uStack_8._0_1_ = 3;
        FUN_00842440();
        uStack_8._0_1_ = 0;
        FUN_0081b5bc();
      }
    }
    else {
      uStack_e8 = 0;
      uStack_e4 = 0;
      uStack_e0 = 0;
      uStack_dc = 0;
      uStack_d8 = 0;
      uStack_d4 = 0;
      uStack_ec = 0x1c;
      FUN_004325b6();
      uStack_8._0_1_ = 5;
      FUN_008559e0();
      uStack_8._0_1_ = 7;
      FUN_0040159c();
      FUN_004325b6();
      uStack_8._0_1_ = 8;
      pcVar10 = (code *)FUN_0089f060();
      uStack_8._0_1_ = 7;
      FUN_0040159c();
      if (pcVar10 != (code *)0x0) {
        uStack_e8 = 0x10;
        uStack_e4 = 0x4000000;
        iVar8 = (*pcVar10)();
        if (iVar8 == 0) {
          pppppppiStack_124 = appppppiStack_16c;
          FUN_0043c211(&DAT_00d25fa0);
          cVar6 = FUN_00846b30(6);
          if (cVar6 != '\0') {
            FUN_0081c0f1();
            uStack_8._0_1_ = 9;
            puStack_160 = (undefined *)0x92e57b;
            FUN_008423d0();
            uStack_8._0_1_ = 10;
            GetLastError();
            FUN_00843700();
            GetLastError();
            puStack_160 = auStack_d0;
            uStack_164 = 0x92e5b8;
            FUN_00847d90();
            uStack_8._0_1_ = 9;
            FUN_00842440();
            uStack_8._0_1_ = 7;
            FUN_0081b5bc();
          }
        }
      }
      *(undefined *)(pppppppiVar5 + 0x1a) = 0;
      uStack_8._0_1_ = 0;
      FUN_00855a30();
    }
    if (BVar9 == 0) goto LAB_0092e5fa;
  }
  if (bVar4) {
    (*(code *)(*pppppppiVar5)[10])();
  }
  if (UStack_128 == 0xfffffffd) {
    FUN_0092d970();
  }
  iVar8 = FUN_00958e40();
  if ((iVar8 != 0) && (iVar8 = FUN_00958e40(), *(int *)(iVar8 + 0x17c) != 0)) {
    FUN_00958e40();
    FUN_0092cdc0();
  }
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
LAB_0092e877:
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_0092e8b0(undefined4 param_1)

{
  char cVar1;
  int iVar2;
  
  iVar2 = FUN_00958c20(param_1);
  if (iVar2 != 0) {
    cVar1 = FUN_0092e000(param_1,0xffffffff);
    if (cVar1 != '\0') {
      return param_1;
    }
  }
  return 0;
}



undefined4 FUN_0092e8e0(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  
  iVar2 = FUN_00958c80(param_1,param_2);
  if (iVar2 != 0) {
    cVar1 = FUN_0092e000(param_2,param_1);
    if (cVar1 != '\0') {
      return param_2;
    }
  }
  return 0;
}



// WARNING: Removing unreachable block (ram,0x0092eb41)
// WARNING: Removing unreachable block (ram,0x0092eb1b)

undefined4 __thiscall FUN_0092e920(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  BOOL BVar3;
  int iVar4;
  undefined4 uVar5;
  UINT uPosition;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbb50;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar4 = *(int *)(param_1_00 + 0x78);
  uPosition = 0;
  while( true ) {
    if (iVar4 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480();
      }
      ExceptionList = local_c;
      return 0;
    }
    if (*(int *)(iVar4 + 8) == param_1) break;
    iVar4 = *(int *)(iVar4 + 0xc);
    uPosition = uPosition + 1;
  }
  uVar2 = FUN_0092cc20();
  if (uVar2 == 0xffffffff) {
    BVar3 = RemoveMenu(*(HMENU *)(param_1_00 + 0x98),uPosition,0x400);
    if (BVar3 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        __time64((__time64_t *)0x0);
        GetCurrentThreadId();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        _free((void *)0x0);
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    iVar4 = FUN_00958e40();
    if (((iVar4 != 0) && (iVar4 = FUN_00958e40(), *(int *)(iVar4 + 0x17c) != 0)) &&
       (iVar4 = FUN_00958e40(), *(int *)(iVar4 + 0x138) == 0)) {
      if (*(int *)(iVar4 + 0x17c) != 0) {
        DrawMenuBar(*(HWND *)(*(int *)(iVar4 + 0x17c) + 0x13c));
        uVar5 = FUN_009593e0();
        ExceptionList = local_c;
        return uVar5;
      }
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480();
      }
    }
    uVar5 = FUN_009593e0();
    ExceptionList = local_c;
    return uVar5;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0xa0) <= uVar2)) {
    FUN_008402e0();
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



void __thiscall FUN_0092ec00(int param_1_00,int param_1)

{
  HMENU hMnu;
  int iVar1;
  char cVar2;
  BOOL BVar3;
  LPCWSTR pWVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda4cf;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1_00 + 0x5c);
  if (param_1_00 + 0x48 != param_1) {
    FID_conflict_assign();
  }
  hMnu = *(HMENU *)(param_1_00 + 0x98);
  if (iVar1 == 0) {
    if (*(int *)(param_1 + 0x14) == 0) goto LAB_0092ef22;
    if (*(uint *)(param_1_00 + 0x60) < 8) {
      pWVar4 = (LPCWSTR)(param_1_00 + 0x4c);
    }
    else {
      pWVar4 = *(LPCWSTR *)(param_1_00 + 0x4c);
    }
    BVar3 = InsertMenuW(hMnu,0,0x400,0xfffffffd,pWVar4);
    if (BVar3 != 0) {
      BVar3 = InsertMenuW(hMnu,1,0x400,0xffffffff,(LPCWSTR)0x0);
      if (BVar3 != 0) goto LAB_0092ef22;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 == '\0') goto LAB_0092ef22;
    FUN_0081c0f1();
    local_4 = 0;
    FUN_008423d0();
    local_4._0_1_ = 1;
    GetLastError();
    FUN_00843700();
    GetLastError();
    FUN_00847d90();
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_00842440();
  }
  else if (*(int *)(param_1 + 0x14) == 0) {
    BVar3 = RemoveMenu(hMnu,0,0x400);
    if (BVar3 != 0) {
      BVar3 = RemoveMenu(hMnu,0,0x400);
      if (BVar3 != 0) goto LAB_0092ef22;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 == '\0') goto LAB_0092ef22;
    FUN_0081c0f1();
    local_4 = 2;
    FUN_008423d0();
    local_4._0_1_ = 3;
    GetLastError();
    FUN_00843700();
    GetLastError();
    FUN_00847d90();
    local_4 = CONCAT31(local_4._1_3_,2);
    FUN_00842440();
  }
  else {
    if (*(uint *)(param_1_00 + 0x60) < 8) {
      pWVar4 = (LPCWSTR)(param_1_00 + 0x4c);
    }
    else {
      pWVar4 = *(LPCWSTR *)(param_1_00 + 0x4c);
    }
    BVar3 = ModifyMenuW(hMnu,0,0x400,0xfffffffd,pWVar4);
    if (BVar3 != 0) goto LAB_0092ef22;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 == '\0') goto LAB_0092ef22;
    FUN_0081c0f1();
    local_4 = 4;
    FUN_008423d0();
    local_4._0_1_ = 5;
    GetLastError();
    FUN_00843700();
    GetLastError();
    FUN_00847d90();
    local_4 = CONCAT31(local_4._1_3_,4);
    FUN_00842440();
  }
  local_4 = 0xffffffff;
  FUN_0081b5bc();
LAB_0092ef22:
  if (*(int *)(param_1_00 + 0x5c) != 0) {
    FUN_0092d970();
  }
  ExceptionList = local_c;
  return;
}



int __fastcall FUN_0092ef60(int param_1)

{
  int iVar1;
  char cVar2;
  HMENU pHVar3;
  LPCWSTR lpNewItem;
  BOOL BVar4;
  int iVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6f59;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar5 = *(int *)(param_1 + 0x180);
  if (iVar5 == 0) {
    pHVar3 = CreateMenu();
    *(HMENU *)(param_1 + 0x180) = pHVar3;
    if (pHVar3 == (HMENU)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    else {
      for (iVar5 = *(int *)(param_1 + 0x170); iVar5 != 0; iVar5 = *(int *)(iVar5 + 0xc)) {
        iVar1 = *(int *)(iVar5 + 8);
        if (*(uint *)(iVar1 + 0x60) < 8) {
          lpNewItem = (LPCWSTR)(iVar1 + 0x4c);
        }
        else {
          lpNewItem = *(LPCWSTR *)(iVar1 + 0x4c);
        }
        BVar4 = AppendMenuW(*(HMENU *)(param_1 + 0x180),0x10,
                            *(UINT_PTR *)(*(int *)(iVar5 + 8) + 0x98),lpNewItem);
        if (BVar4 == 0) {
          FUN_0043c211(&DAT_00d25fa0);
          cVar2 = FUN_00846b30(6);
          if (cVar2 != '\0') {
            FUN_0081c0f1();
            uStack_4 = 2;
            FUN_008423d0();
            uStack_4._0_1_ = 3;
            GetLastError();
            FUN_00843700();
            GetLastError();
            FUN_00847d90();
            uStack_4 = CONCAT31(uStack_4._1_3_,2);
            FUN_00842440();
            uStack_4 = 0xffffffff;
            FUN_0081b5bc();
          }
        }
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar5 == 0)) {
          FUN_00840480();
        }
      }
    }
    iVar5 = *(int *)(param_1 + 0x180);
  }
  ExceptionList = local_c;
  return iVar5;
}



void __thiscall FUN_0092f1e0(int param_1_00,HMENU param_1,int param_2)

{
  char cVar1;
  int iVar2;
  UINT uId;
  UINT UVar3;
  BOOL BVar4;
  LPCWSTR lpNewItem;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8e39;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 < *(HMENU *)(param_1_00 + 0x168)) {
    iVar2 = FUN_0086aef0();
    if (iVar2 == 0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *(int *)(iVar2 + 8);
    }
    if (iVar2 + 0x48 != param_2) {
      FID_conflict_assign();
    }
    if (*(int *)(param_1_00 + 0x17c) != 0) {
      FUN_00959160();
      uId = FUN_0092ce10();
      UVar3 = GetMenuState(*(HMENU *)(param_1_00 + 0x180),uId,0x400);
      if (UVar3 == 0xffffffff) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 0;
          FUN_008423d0();
          uStack_4._0_1_ = 1;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = (uint)uStack_4._1_3_ << 8;
          FUN_00842440();
          uStack_4 = UVar3;
          FUN_0081b5bc();
        }
      }
      else {
        if ((UVar3 & 0x10) != 0) {
          UVar3 = UVar3 & 0xff;
          param_1 = GetSubMenu(*(HMENU *)(param_1_00 + 0x180),uId);
        }
        if (*(uint *)(param_2 + 0x18) < 8) {
          lpNewItem = (LPCWSTR)(param_2 + 4);
        }
        else {
          lpNewItem = *(LPCWSTR *)(param_2 + 4);
        }
        BVar4 = ModifyMenuW(*(HMENU *)(param_1_00 + 0x180),uId,UVar3 | 0x400,(UINT_PTR)param_1,
                            lpNewItem);
        if (BVar4 == -1) {
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(6);
          if (cVar1 != '\0') {
            FUN_0081c0f1();
            uStack_4 = 2;
            FUN_008423d0();
            uStack_4._0_1_ = 3;
            GetLastError();
            FUN_00843700();
            GetLastError();
            FUN_00847d90();
            uStack_4 = CONCAT31(uStack_4._1_3_,2);
            FUN_00842440();
            uStack_4 = 0xffffffff;
            FUN_0081b5bc();
          }
        }
        FUN_0092cdc0();
      }
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480();
  }
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_0092f4c0(int param_1_00,undefined4 param_1,int param_2,int param_3)

{
  char cVar1;
  int iVar2;
  UINT uPosition;
  BOOL BVar3;
  LPCWSTR lpNewItem;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8e89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = FUN_009591b0();
  if (iVar2 != 0) {
    if (param_2 + 0x48 != param_3) {
      FID_conflict_assign();
    }
    if (*(int *)(param_1_00 + 0x180) != 0) {
      uPosition = FUN_0092ce10();
      BVar3 = RemoveMenu(*(HMENU *)(param_1_00 + 0x180),uPosition,0x400);
      if (BVar3 == 0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 0;
          FUN_008423d0();
          uStack_4._0_1_ = 1;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = (uint)uStack_4._1_3_ << 8;
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      if (*(uint *)(param_3 + 0x18) < 8) {
        lpNewItem = (LPCWSTR)(param_3 + 4);
      }
      else {
        lpNewItem = *(LPCWSTR *)(param_3 + 4);
      }
      BVar3 = InsertMenuW(*(HMENU *)(param_1_00 + 0x180),uPosition,0x410,
                          *(UINT_PTR *)(param_2 + 0x98),lpNewItem);
      if (BVar3 == 0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 2;
          FUN_008423d0();
          uStack_4._0_1_ = 3;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = CONCAT31(uStack_4._1_3_,2);
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      if ((*(int *)(iVar2 + 0xa0) != 0) || (*(int *)(param_2 + 0xa0) != 0)) {
        FUN_0092d2f0();
      }
      if (*(int *)(param_1_00 + 0x17c) != 0) {
        FUN_0092cdc0();
      }
    }
  }
  ExceptionList = local_c;
  return iVar2;
}



char __thiscall FUN_0092f780(int param_1_00,UINT param_1,int param_2,int param_3)

{
  char cVar1;
  BOOL BVar2;
  LPCWSTR lpNewItem;
  bool bVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4070;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar3 = *(int *)(param_1_00 + 0x180) == 0;
  if ((bVar3) || (param_1 == *(int *)(param_1_00 + 0x168))) {
    param_1 = 0xffffffff;
  }
  else {
    FUN_00959160();
    param_1 = FUN_0092ce10();
  }
  cVar1 = FUN_009595c0();
  if (cVar1 != '\0') {
    if (param_2 + 0x48 != param_3) {
      FID_conflict_assign();
    }
    if (!bVar3) {
      if (*(uint *)(param_3 + 0x18) < 8) {
        lpNewItem = (LPCWSTR)(param_3 + 4);
      }
      else {
        lpNewItem = *(LPCWSTR *)(param_3 + 4);
      }
      BVar2 = InsertMenuW(*(HMENU *)(param_1_00 + 0x180),param_1,0x410,*(UINT_PTR *)(param_2 + 0x98)
                          ,lpNewItem);
      if (BVar2 == 0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 0;
          FUN_008423d0();
          uStack_4._0_1_ = 1;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = (uint)uStack_4._1_3_ << 8;
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      if (*(int *)(param_2 + 0xa0) != 0) {
        FUN_0092d2f0();
      }
      if (*(int *)(param_1_00 + 0x17c) != 0) {
        FUN_0092cdc0();
      }
    }
    cVar1 = '\x01';
  }
  ExceptionList = local_c;
  return cVar1;
}



undefined4 __thiscall FUN_0092f960(int param_1_00,int param_1,int param_2)

{
  char cVar1;
  BOOL BVar2;
  LPCWSTR lpNewItem;
  UINT_PTR uIDNewItem;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4070;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == 0) {
    uIDNewItem = 0;
  }
  else {
    uIDNewItem = *(UINT_PTR *)(param_1 + 0x98);
  }
  if (uIDNewItem == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  else {
    cVar1 = FUN_00959520();
    if (cVar1 != '\0') {
      if (param_1 + 0x48 != param_2) {
        FID_conflict_assign();
      }
      if (*(HMENU *)(param_1_00 + 0x180) != (HMENU)0x0) {
        if (*(uint *)(param_2 + 0x18) < 8) {
          lpNewItem = (LPCWSTR)(param_2 + 4);
        }
        else {
          lpNewItem = *(LPCWSTR *)(param_2 + 4);
        }
        BVar2 = AppendMenuW(*(HMENU *)(param_1_00 + 0x180),0x10,uIDNewItem,lpNewItem);
        if (BVar2 == 0) {
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(6);
          if (cVar1 != '\0') {
            FUN_0081c0f1();
            uStack_4 = 0;
            FUN_008423d0();
            uStack_4._0_1_ = 1;
            GetLastError();
            FUN_00843700();
            GetLastError();
            FUN_00847d90();
            uStack_4 = (uint)uStack_4._1_3_ << 8;
            FUN_00842440();
            uStack_4 = 0xffffffff;
            FUN_0081b5bc();
          }
        }
        if (*(int *)(param_1 + 0xa0) != 0) {
          FUN_0092d2f0();
        }
        if (*(int *)(param_1_00 + 0x17c) != 0) {
          FUN_0092cdc0();
        }
      }
      ExceptionList = local_c;
      return 1;
    }
  }
  ExceptionList = local_c;
  return 0;
}



int __fastcall FUN_0092fb40(int param_1)

{
  HMENU hMenu;
  char cVar1;
  int iVar2;
  UINT uPosition;
  BOOL BVar3;
  UINT uFlags;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4070;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = FUN_00959260();
  if ((iVar2 != 0) && (hMenu = *(HMENU *)(param_1 + 0x180), hMenu != (HMENU)0x0)) {
    uFlags = 0x400;
    uPosition = FUN_0092ce10();
    BVar3 = RemoveMenu(hMenu,uPosition,uFlags);
    if (BVar3 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    if (*(int *)(iVar2 + 0xa0) != 0) {
      FUN_0092d2f0();
    }
    if (*(int *)(param_1 + 0x17c) != 0) {
      FUN_0092cdc0();
    }
  }
  ExceptionList = local_c;
  return iVar2;
}



undefined ** FUN_0092fcb0(void)

{
  return &PTR_u_wxPanel_0323a1d8;
}



undefined __thiscall
FUN_0092fcc0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  char cVar1;
  
  cVar1 = FUN_00917f80(param_1,param_2,param_3,param_4,param_5,param_6);
  if (cVar1 == '\0') {
    return 0;
  }
  (**(code **)(*param_1_00 + 0xf8))(1);
  return 1;
}



void __fastcall FUN_0092fd10(int param_1)

{
  uint uVar1;
  undefined **local_34 [2];
  int local_2c;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8eb8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  FUN_00845a20(*(undefined4 *)(param_1 + 0x40),DAT_032bff5c);
  local_34[0] = wxInitDialogEvent::vftable;
  local_4 = 0;
  local_2c = param_1;
  (**(code **)(**(int **)(param_1 + 0x70) + 0x18))(local_34,uVar1);
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_10;
  return;
}



undefined4 * FUN_0092fda0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x174);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00446386(uVar1);
    *puVar2 = wxPanel::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined * FUN_0092fe40(void)

{
  return &DAT_0323a234;
}



undefined ** FUN_0092fe50(void)

{
  return &PTR_u_wxSizer_0323a24c;
}



undefined ** FUN_0092fe60(void)

{
  return &PTR_u_wxBoxSizer_0323a294;
}



undefined ** FUN_0092fe70(void)

{
  return &PTR_u_wxStdDialogButtonSizer_0323a2c4;
}



void __thiscall FUN_0092fe80(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 8) = 2;
  *(undefined4 *)(param_1_00 + 0xc) = param_1;
  return;
}



void __fastcall FUN_0092fea0(int param_1)

{
  switch(*(undefined4 *)(param_1 + 8)) {
  case 0:
    break;
  case 1:
    FUN_0091ab40(0);
    *(undefined4 *)(param_1 + 8) = 0;
    return;
  case 2:
    if (*(int **)(param_1 + 0xc) != (int *)0x0) {
      (**(code **)(**(int **)(param_1 + 0xc) + 4))(1);
      *(undefined4 *)(param_1 + 8) = 0;
      return;
    }
    break;
  case 3:
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x101,"wxSizerItem::Free","Assert failure",
                   L"unexpected wxSizerItem::m_kind");
    }
  }
  *(undefined4 *)(param_1 + 8) = 0;
  return;
}



void __fastcall FUN_0092ff40(int param_1)

{
  switch(*(undefined4 *)(param_1 + 8)) {
  case 0:
  case 3:
    goto switchD_0092ff4b_caseD_0;
  case 1:
    FUN_0091ab40(0);
    (**(code **)(**(int **)(param_1 + 0xc) + 0x50))();
    *(undefined4 *)(param_1 + 8) = 0;
    return;
  case 2:
                    // WARNING: Could not recover jumptable at 0x0092ff78. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(param_1 + 0xc) + 0x3c))();
    return;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x21a,"wxSizerItem::DeleteWindows",
                   "Assert failure",L"unexpected wxSizerItem::m_kind");
    }
switchD_0092ff4b_caseD_0:
    return;
  }
}



void __fastcall FUN_0092ffc0(int *param_1)

{
  undefined local_8 [8];
  
  (**(code **)(*param_1 + 0x44))(local_8);
                    // WARNING: Could not recover jumptable at 0x0092ffdf. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x48))();
  return;
}



int * __thiscall FUN_0092fff0(int *param_1_00,int *param_1)

{
  (**(code **)(*param_1_00 + 0x44))(param_1);
  if (*param_1 < param_1_00[7]) {
    *param_1 = param_1_00[7];
  }
  if (param_1[1] < param_1_00[8]) {
    param_1[1] = param_1_00[8];
  }
  return param_1;
}



void __thiscall FUN_00930020(int param_1_00,int *param_1)

{
  if ((*param_1 != 0) && (param_1[1] != 0)) {
    *(float *)(param_1_00 + 0x40) = (float)*param_1 / (float)param_1[1];
    return;
  }
  *(undefined4 *)(param_1_00 + 0x40) = 0x3f800000;
  return;
}



void __thiscall FUN_00930050(int param_1_00,undefined4 *param_1)

{
  *(undefined4 *)(param_1_00 + 0x44) = 0;
  *(undefined4 *)(param_1_00 + 8) = 0;
  *(undefined4 *)(param_1_00 + 0x20) = *param_1;
  *(undefined4 *)(param_1_00 + 0x28) = param_1[1];
  *(undefined4 *)(param_1_00 + 0x24) = param_1[2];
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((*(uint *)(param_1_00 + 0x28) & 0xffff) != *(uint *)(param_1_00 + 0x28))) {
    FUN_008402e0("..\\..\\src\\common\\sizer.cpp",0x7d,"wxSizerItem::Init",
                 "(m_flag & SIZER_FLAGS_MASK) == m_flag","invalid flag: not within SIZER_FLAGS_MASK"
                );
  }
  return;
}



void __thiscall FUN_009300b0(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  
  *param_1 = *(undefined4 *)(param_1_00 + 0x30);
  param_1[1] = *(undefined4 *)(param_1_00 + 0x34);
  uVar1 = *(undefined4 *)(param_1_00 + 0x3c);
  param_1[2] = *(undefined4 *)(param_1_00 + 0x38);
  param_1[3] = uVar1;
  return;
}



void __thiscall FUN_009300d0(int param_1_00,int *param_1)

{
  int *piVar1;
  int *piVar2;
  undefined4 unaff_EDI;
  int local_4;
  
  piVar2 = param_1;
  local_4 = param_1_00;
  if (param_1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x8d,"wxSizerItem::DoSetWindow","window",
                   L"NULL window in wxSizerItem::SetWindow()");
    }
    return;
  }
  *(undefined4 *)(param_1_00 + 8) = 1;
  *(int **)(param_1_00 + 0xc) = param_1;
  (**(code **)(*param_1 + 0x278))(&param_1,&local_4);
  piVar1 = (int *)(param_1_00 + 0x18);
  *piVar1 = local_4;
  *(undefined4 *)(param_1_00 + 0x1c) = unaff_EDI;
  if ((*(uint *)(param_1_00 + 0x28) & 0x8000) != 0) {
    (**(code **)(*piVar2 + 0x94))(piVar1);
  }
  if ((*piVar1 != 0) && (*(int *)(param_1_00 + 0x1c) != 0)) {
    *(float *)(param_1_00 + 0x40) = (float)*piVar1 / (float)*(int *)(param_1_00 + 0x1c);
    return;
  }
  *(undefined4 *)(param_1_00 + 0x40) = 0x3f800000;
  return;
}



undefined4 * __thiscall
FUN_00930190(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxSizerItem::vftable;
  param_1_00[2] = 0;
  param_1_00[4] = 0;
  param_1_00[5] = 0;
  param_1_00[6] = 0;
  param_1_00[7] = 0;
  param_1_00[8] = param_2;
  param_1_00[9] = param_4;
  param_1_00[10] = param_3;
  param_1_00[0xb] = 0xfffffffd;
  param_1_00[0xc] = 0;
  param_1_00[0xd] = 0;
  param_1_00[0xe] = 0;
  param_1_00[0xf] = 0;
  param_1_00[0x11] = param_5;
  local_4 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((param_1_00[10] & 0xffff) != param_1_00[10])) {
    FUN_008402e0("..\\..\\src\\common\\sizer.cpp",0xa8,"wxSizerItem::wxSizerItem",
                 "(m_flag & SIZER_FLAGS_MASK) == m_flag","invalid flag: not within SIZER_FLAGS_MASK"
                 ,uVar1);
  }
  FUN_009300d0(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_00930260(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxSizerItem::vftable;
  param_1_00[2] = 0;
  param_1_00[3] = 0;
  param_1_00[4] = 0;
  param_1_00[5] = 0;
  param_1_00[6] = 0;
  param_1_00[7] = 0;
  param_1_00[8] = param_2;
  param_1_00[9] = param_4;
  param_1_00[10] = param_3;
  param_1_00[0xb] = 0xfffffffd;
  param_1_00[0xc] = 0;
  param_1_00[0xd] = 0;
  param_1_00[0xe] = 0;
  param_1_00[0xf] = 0;
  param_1_00[0x10] = 0;
  param_1_00[0x11] = param_5;
  local_4 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((param_1_00[10] & 0xffff) != param_1_00[10])) {
    FUN_008402e0("..\\..\\src\\common\\sizer.cpp",0xc2,"wxSizerItem::wxSizerItem",
                 "(m_flag & SIZER_FLAGS_MASK) == m_flag","invalid flag: not within SIZER_FLAGS_MASK"
                 ,uVar1);
  }
  param_1_00[2] = 2;
  param_1_00[3] = param_1;
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00930340(int param_1_00,int *param_1)

{
  int *piVar1;
  
  *(undefined4 *)(param_1_00 + 8) = 3;
  piVar1 = (int *)operator_new(0xc);
  if (piVar1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    *piVar1 = *param_1;
    piVar1[1] = param_1[1];
    *(undefined *)(piVar1 + 2) = 1;
  }
  *(int **)(param_1_00 + 0xc) = piVar1;
  *(int *)(param_1_00 + 0x18) = *param_1;
  *(int *)(param_1_00 + 0x1c) = param_1[1];
  if ((*param_1 != 0) && (param_1[1] != 0)) {
    *(float *)(param_1_00 + 0x40) = (float)*param_1 / (float)param_1[1];
    return;
  }
  *(undefined4 *)(param_1_00 + 0x40) = 0x3f800000;
  return;
}



undefined4 * __thiscall
FUN_009303b0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  uint uVar1;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd8ee8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxSizerItem::vftable;
  param_1_00[2] = 0;
  param_1_00[3] = 0;
  param_1_00[4] = 0;
  param_1_00[5] = 0;
  param_1_00[6] = param_1;
  param_1_00[7] = param_2;
  param_1_00[8] = param_3;
  param_1_00[9] = param_5;
  param_1_00[10] = param_4;
  param_1_00[0xb] = 0xfffffffd;
  param_1_00[0xc] = 0;
  param_1_00[0xd] = 0;
  param_1_00[0xe] = 0;
  param_1_00[0xf] = 0;
  param_1_00[0x11] = param_6;
  local_4 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((param_1_00[10] & 0xffff) != param_1_00[10])) {
    FUN_008402e0("..\\..\\src\\common\\sizer.cpp",0xe1,"wxSizerItem::wxSizerItem",
                 "(m_flag & SIZER_FLAGS_MASK) == m_flag","invalid flag: not within SIZER_FLAGS_MASK"
                 ,uVar1);
  }
  local_14 = param_1;
  local_10 = param_2;
  FUN_00930340(&local_14);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009304a0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxSizerItem::vftable;
  local_4 = 0;
  if ((int *)param_1[0x11] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x11] + 4))(1,uVar1);
  }
  FUN_0092fea0();
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



int * __thiscall FUN_00930520(int param_1_00,int *param_1)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  int *piVar4;
  undefined local_8 [8];
  
  uVar1 = *(undefined4 *)(param_1_00 + 8);
  *param_1 = 0;
  param_1[1] = 0;
  switch(uVar1) {
  case 0:
    break;
  case 1:
    piVar4 = (int *)FUN_004555c3(local_8);
    iVar2 = piVar4[1];
    *param_1 = *piVar4;
    param_1[1] = iVar2;
    break;
  case 2:
    iVar2 = *(int *)(*(int *)(param_1_00 + 0xc) + 0x18);
    *param_1 = *(int *)(*(int *)(param_1_00 + 0xc) + 0x14);
    param_1[1] = iVar2;
    break;
  case 3:
    iVar2 = (*(int **)(param_1_00 + 0xc))[1];
    *param_1 = **(int **)(param_1_00 + 0xc);
    param_1[1] = iVar2;
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x127,"wxSizerItem::GetSize","Assert failure",
                   L"unexpected wxSizerItem::m_kind");
    }
  }
  uVar3 = *(uint *)(param_1_00 + 0x28);
  if ((uVar3 & 0x10) != 0) {
    *param_1 = *param_1 + *(int *)(param_1_00 + 0x24);
  }
  if ((uVar3 & 0x20) != 0) {
    *param_1 = *param_1 + *(int *)(param_1_00 + 0x24);
  }
  if ((uVar3 & 0x40) != 0) {
    param_1[1] = param_1[1] + *(int *)(param_1_00 + 0x24);
  }
  if ((char)uVar3 < '\0') {
    param_1[1] = param_1[1] + *(int *)(param_1_00 + 0x24);
  }
  return param_1;
}



char __thiscall FUN_009305f0(int param_1_00,int param_1,int param_2,int param_3)

{
  int iVar1;
  char cVar2;
  char cVar3;
  undefined4 *puVar4;
  int iVar5;
  undefined4 uVar6;
  int *piVar7;
  int iStack_8;
  
  if (param_2 < 1) goto LAB_0093063c;
  if (param_1 == 4) {
    if ((*(uint *)(param_1_00 + 0x28) & 0x10) != 0) {
      param_2 = param_2 - *(int *)(param_1_00 + 0x24);
    }
    if ((*(uint *)(param_1_00 + 0x28) & 0x20) == 0) goto LAB_0093063c;
  }
  else {
    if (param_1 != 8) goto LAB_0093063c;
    if ((*(uint *)(param_1_00 + 0x28) & 0x40) != 0) {
      param_2 = param_2 - *(int *)(param_1_00 + 0x24);
    }
    if (-1 < (char)*(uint *)(param_1_00 + 0x28)) goto LAB_0093063c;
  }
  param_2 = param_2 - *(int *)(param_1_00 + 0x24);
LAB_0093063c:
  cVar2 = '\0';
  if (*(int *)(param_1_00 + 8) == 2) {
    cVar2 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x40))(param_1,param_2,param_3);
    if (cVar2 != '\0') {
      if (*(int *)(param_1_00 + 8) == 2) {
        piVar7 = *(int **)(param_1_00 + 0xc);
      }
      else {
        piVar7 = (int *)0x0;
      }
      puVar4 = (undefined4 *)(**(code **)(*piVar7 + 0x44))();
      *(undefined4 *)(param_1_00 + 0x18) = *puVar4;
      *(undefined4 *)(param_1_00 + 0x1c) = puVar4[1];
    }
  }
  else if (*(int *)(param_1_00 + 8) == 1) {
    cVar2 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0xc4))(param_1,param_2,param_3);
    if (cVar2 != '\0') {
      puVar4 = (undefined4 *)(**(code **)(**(int **)(param_1_00 + 0xc) + 0x84))();
      *(undefined4 *)(param_1_00 + 0x18) = *puVar4;
      *(undefined4 *)(param_1_00 + 0x1c) = puVar4[1];
    }
    if (((((*(uint *)(param_1_00 + 0x28) & 0x4000) != 0) &&
         ((*(uint *)(param_1_00 + 0x28) & 0x2000) != 0)) && (iStack_8 != 0)) &&
       (cVar3 = FUN_008ffca0((double)*(float *)(param_1_00 + 0x40)), cVar3 == '\0')) {
      if (*(int *)(param_1_00 + 0x20) != 0) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x162,"wxSizerItem::InformFirstDirection",
                       "(m_proportion==0)",
                       L"Shaped item, non-zero proportion in wxSizerItem::InformFirstDirection()");
        }
        return '\0';
      }
      if (iStack_8 != 4) {
        if (iStack_8 == 8) {
          if ((-1 < param_3) &&
             (iVar1 = *(int *)(param_1_00 + 0x18), iVar5 = FUN_00a49750(), param_3 < iVar5 - iVar1))
          {
            param_2 = FUN_00a49750();
          }
          uVar6 = FUN_00a49750();
          *(undefined4 *)(param_1_00 + 0x18) = uVar6;
          *(int *)(param_1_00 + 0x1c) = param_2;
        }
        return '\x01';
      }
      if ((-1 < param_3) &&
         (iVar1 = *(int *)(param_1_00 + 0x1c), iVar5 = FUN_00a49750(), param_3 < iVar5 - iVar1)) {
        param_2 = FUN_00a49750();
      }
      uVar6 = FUN_00a49750();
      *(int *)(param_1_00 + 0x18) = param_2;
      *(undefined4 *)(param_1_00 + 0x1c) = uVar6;
      return '\x01';
    }
  }
  return cVar2;
}



void __thiscall FUN_009307f0(int param_1_00,int *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined4 *puVar4;
  int local_8;
  int iStack_4;
  
  if (*(int *)(param_1_00 + 8) == 2) {
    piVar1 = *(int **)(param_1_00 + 0xc);
    (**(code **)(*piVar1 + 0x44))(&local_8);
    if (local_8 < piVar1[7]) {
      local_8 = piVar1[7];
    }
    if (iStack_4 < piVar1[8]) {
      iStack_4 = piVar1[8];
    }
    *(int *)(param_1_00 + 0x18) = local_8;
    *(int *)(param_1_00 + 0x1c) = iStack_4;
    if (((*(uint *)(param_1_00 + 0x28) & 0x4000) != 0) &&
       (NAN(*(float *)(param_1_00 + 0x40)) != (*(float *)(param_1_00 + 0x40) == 0.0))) {
      FUN_00930020((int *)(param_1_00 + 0x18));
    }
  }
  else if (*(int *)(param_1_00 + 8) == 1) {
    puVar4 = (undefined4 *)(**(code **)(**(int **)(param_1_00 + 0xc) + 0x84))(&local_8);
    *(undefined4 *)(param_1_00 + 0x18) = *puVar4;
    *(undefined4 *)(param_1_00 + 0x1c) = puVar4[1];
  }
  iVar2 = *(int *)(param_1_00 + 0x1c);
  *param_1 = *(int *)(param_1_00 + 0x18);
  uVar3 = *(uint *)(param_1_00 + 0x28);
  param_1[1] = iVar2;
  if ((uVar3 & 0x10) != 0) {
    *param_1 = *param_1 + *(int *)(param_1_00 + 0x24);
  }
  if ((uVar3 & 0x20) != 0) {
    *param_1 = *param_1 + *(int *)(param_1_00 + 0x24);
  }
  if ((uVar3 & 0x40) != 0) {
    param_1[1] = param_1[1] + *(int *)(param_1_00 + 0x24);
  }
  if ((char)uVar3 < '\0') {
    param_1[1] = param_1[1] + *(int *)(param_1_00 + 0x24);
  }
  return;
}



void __thiscall FUN_009308c0(int param_1_00,int *param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  undefined4 uVar9;
  wchar_t *pwVar10;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  iVar7 = param_1[1];
  local_8 = *param_1;
  iVar1 = param_2[1];
  iVar2 = *param_2;
  iVar6 = iVar1;
  iVar8 = iVar2;
  local_10 = iVar2;
  local_c = iVar1;
  local_4 = iVar7;
  if ((*(uint *)(param_1_00 + 0x28) & 0x4000) != 0) {
    iVar5 = FUN_00a49750();
    if (iVar2 < iVar5) {
      iVar6 = FUN_00a49750();
      local_c = iVar6;
      if ((*(uint *)(param_1_00 + 0x28) & 0x800) == 0) {
        if ((*(uint *)(param_1_00 + 0x28) & 0x400) != 0) {
          iVar7 = iVar7 + (iVar1 - iVar6);
          local_4 = iVar7;
        }
      }
      else {
        iVar7 = iVar7 + (iVar1 - iVar6) / 2;
        local_4 = iVar7;
      }
    }
    else if (iVar5 < iVar2) {
      iVar8 = iVar5;
      local_10 = iVar5;
      if ((*(uint *)(param_1_00 + 0x28) & 0x100) == 0) {
        if ((*(uint *)(param_1_00 + 0x28) & 0x200) != 0) {
          local_8 = local_8 + (iVar2 - iVar5);
        }
      }
      else {
        local_8 = local_8 + (iVar2 - iVar5) / 2;
      }
    }
  }
  uVar3 = *(uint *)(param_1_00 + 0x28);
  *(int *)(param_1_00 + 0x10) = local_8;
  *(int *)(param_1_00 + 0x14) = iVar7;
  if ((uVar3 & 0x10) != 0) {
    local_8 = local_8 + *(int *)(param_1_00 + 0x24);
    iVar8 = iVar8 - *(int *)(param_1_00 + 0x24);
    local_10 = iVar8;
  }
  if ((uVar3 & 0x20) != 0) {
    iVar8 = iVar8 - *(int *)(param_1_00 + 0x24);
    local_10 = iVar8;
  }
  if ((uVar3 & 0x40) != 0) {
    iVar7 = iVar7 + *(int *)(param_1_00 + 0x24);
    iVar6 = iVar6 - *(int *)(param_1_00 + 0x24);
    local_c = iVar6;
    local_4 = iVar7;
  }
  if ((char)uVar3 < '\0') {
    iVar6 = iVar6 - *(int *)(param_1_00 + 0x24);
    local_c = iVar6;
  }
  if (iVar8 < 0) {
    iVar8 = 0;
    local_10 = 0;
  }
  if (iVar6 < 0) {
    iVar6 = 0;
    local_c = 0;
  }
  *(int *)(param_1_00 + 0x30) = local_8;
  *(int *)(param_1_00 + 0x34) = iVar7;
  *(int *)(param_1_00 + 0x38) = iVar8;
  *(int *)(param_1_00 + 0x3c) = iVar6;
  switch(*(undefined4 *)(param_1_00 + 8)) {
  case 0:
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    pwVar10 = L"can\'t set size of uninitialized sizer item";
    uVar9 = 0x1e0;
    break;
  case 1:
    (**(code **)(**(int **)(param_1_00 + 0xc) + 0x288))(local_8,iVar7,iVar8,iVar6,0x24);
    return;
  case 2:
    FUN_0091afa0(&local_8,&local_10);
    return;
  case 3:
    piVar4 = *(int **)(param_1_00 + 0xc);
    *piVar4 = iVar8;
    piVar4[1] = iVar6;
    return;
  default:
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    pwVar10 = L"unexpected wxSizerItem::m_kind";
    uVar9 = 0x1fd;
  }
  FUN_00840480("..\\..\\src\\common\\sizer.cpp",uVar9,"wxSizerItem::SetDimension","Assert failure",
               pwVar10);
  return;
}



void __thiscall FUN_00930ab0(int param_1_00,undefined param_1)

{
  switch(*(undefined4 *)(param_1_00 + 8)) {
  case 0:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x224,"wxSizerItem::Show","Assert failure",
                   L"can\'t show uninitialized sizer item");
      return;
    }
    break;
  case 1:
                    // WARNING: Could not recover jumptable at 0x00930af7. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(param_1_00 + 0xc) + 0xcc))();
    return;
  case 2:
                    // WARNING: Could not recover jumptable at 0x00930b01. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(param_1_00 + 0xc) + 0x50))();
    return;
  case 3:
    *(undefined *)(*(int *)(param_1_00 + 0xc) + 8) = param_1;
    return;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x235,"wxSizerItem::Show","Assert failure",
                   L"unexpected wxSizerItem::m_kind");
    }
  }
  return;
}



undefined __fastcall FUN_00930b50(int param_1)

{
  int iVar1;
  undefined uVar2;
  char cVar3;
  
  if ((*(byte *)(param_1 + 0x28) & 2) != 0) {
    return 1;
  }
  switch(*(undefined4 *)(param_1 + 8)) {
  case 0:
    return 0;
  case 1:
                    // WARNING: Could not recover jumptable at 0x00930b73. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (**(code **)(**(int **)(param_1 + 0xc) + 0xdc))();
    return uVar2;
  case 2:
    iVar1 = *(int *)(*(int *)(param_1 + 0xc) + 0x38);
    break;
  case 3:
    return *(undefined *)(*(int *)(param_1 + 0xc) + 8);
  default:
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0;
    }
    FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x25d,"wxSizerItem::IsShown","Assert failure",
                 L"unexpected wxSizerItem::m_kind");
    return 0;
  }
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    cVar3 = FUN_00930b50();
    if (cVar3 != '\0') break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  return 1;
}



void __fastcall FUN_00930be0(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_c = ExceptionList;
  puStack_8 = &LAB_00bd8f2e;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  *param_1 = wxSizer::vftable;
  param_1[2] = wxSizer::vftable;
  iVar1 = param_1[0xe];
  local_4 = 2;
  for (; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if (*(int **)(iVar1 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar1 + 8) + 4))(1,uVar2);
    }
  }
  FUN_0086b130();
  local_4._0_1_ = 1;
  FUN_0086ade0();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0086ab30();
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00930ca0(int param_1_00,int param_1)

{
  int iVar1;
  
  if (param_1 != *(int *)(param_1_00 + 0x44)) {
    iVar1 = *(int *)(param_1_00 + 0x38);
    *(int *)(param_1_00 + 0x44) = param_1;
    for (; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
      if ((*(int *)(*(int *)(iVar1 + 8) + 8) == 2) && (*(int *)(*(int *)(iVar1 + 8) + 0xc) != 0)) {
        FUN_00930ca0(param_1);
      }
    }
  }
  return;
}



undefined4 __thiscall FUN_00930ce0(int param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x2a6,"wxSizer::Remove","sizer",
                 L"Removing NULL sizer");
  }
  iVar1 = *(int *)(param_1_00 + 0x38);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    piVar2 = *(int **)(iVar1 + 8);
    if (piVar2[2] == 2) {
      iVar3 = piVar2[3];
    }
    else {
      iVar3 = 0;
    }
    if (iVar3 == param_1) break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  (**(code **)(*piVar2 + 4))(1);
  FUN_0086b060(iVar1);
  return 1;
}



undefined4 __thiscall FUN_00930d60(int param_1_00,uint param_1)

{
  int iVar1;
  
  if ((-1 < (int)param_1) && (param_1 < *(uint *)(param_1_00 + 0x30))) {
    iVar1 = FUN_0086aef0(param_1);
    if (iVar1 != 0) {
      if (*(int **)(iVar1 + 8) != (int *)0x0) {
        (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
      }
      FUN_0086b060(iVar1);
      return 1;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x2c2,"wxSizer::Remove",&DAT_00fb76e0,
                   L"Failed to find child node");
    }
    return 0;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x2be,"wxSizer::Remove",
                 "index >= 0 && (size_t)index < m_children.GetCount()",
                 L"Remove index is out of range");
  }
  return 0;
}



undefined4 __thiscall FUN_00930e00(int param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x2cc,"wxSizer::Detach","sizer",
                 L"Detaching NULL sizer");
  }
  iVar1 = *(int *)(param_1_00 + 0x38);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    piVar2 = *(int **)(iVar1 + 8);
    if (piVar2[2] == 2) {
      iVar3 = piVar2[3];
    }
    else {
      iVar3 = 0;
    }
    if (iVar3 == param_1) break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  piVar2[3] = 0;
  (**(code **)(*piVar2 + 4))(1);
  FUN_0086b060(iVar1);
  return 1;
}



undefined4 __thiscall FUN_00930e90(int param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x2e2,"wxSizer::Detach","window",
                 L"Detaching NULL window");
  }
  iVar1 = *(int *)(param_1_00 + 0x38);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    piVar2 = *(int **)(iVar1 + 8);
    if (piVar2[2] == 1) {
      iVar3 = piVar2[3];
    }
    else {
      iVar3 = 0;
    }
    if (iVar3 == param_1) break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  (**(code **)(*piVar2 + 4))(1);
  FUN_0086b060(iVar1);
  return 1;
}



undefined4 __thiscall FUN_00930f10(int param_1_00,uint param_1)

{
  int *piVar1;
  int iVar2;
  
  if ((-1 < (int)param_1) && (param_1 < *(uint *)(param_1_00 + 0x30))) {
    iVar2 = FUN_0086aef0(param_1);
    if (iVar2 != 0) {
      piVar1 = *(int **)(iVar2 + 8);
      if (piVar1[2] == 2) {
        piVar1[3] = 0;
      }
      (**(code **)(*piVar1 + 4))(1);
      FUN_0086b060(iVar2);
      return 1;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x2fd,"wxSizer::Detach",&DAT_00fb76e0,
                   L"Failed to find child node");
    }
    return 0;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x2f9,"wxSizer::Detach",
                 "index >= 0 && (size_t)index < m_children.GetCount()",
                 L"Detach index is out of range");
  }
  return 0;
}



undefined4 __thiscall FUN_00930fd0(int param_1_00,int param_1,int param_2,char param_3)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (param_1 == 0) {
      FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x327,"wxSizer::Replace","oldsz",
                   L"Replacing NULL sizer");
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 == 0)) {
      FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x328,"wxSizer::Replace","newsz",
                   L"Replacing with NULL sizer");
    }
  }
  iVar1 = *(int *)(param_1_00 + 0x38);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    iVar2 = *(int *)(iVar1 + 8);
    if (*(int *)(iVar2 + 8) == 2) {
      iVar4 = *(int *)(iVar2 + 0xc);
    }
    else {
      iVar4 = 0;
    }
    if (iVar4 == param_1) break;
    if (((param_3 != '\0') && (*(int *)(iVar2 + 8) == 2)) &&
       (cVar3 = (**(code **)(**(int **)(iVar2 + 0xc) + 0x30))(param_1,param_2,1), cVar3 != '\0')) {
      return 1;
    }
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  FUN_0092fea0();
  *(undefined4 *)(iVar2 + 8) = 2;
  *(int *)(iVar2 + 0xc) = param_2;
  return 1;
}



undefined4 __thiscall FUN_009310a0(int param_1_00,uint param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  
  if (*(uint *)(param_1_00 + 0x30) <= param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x342,"wxSizer::Replace",
                   "old < m_children.GetCount()",L"Replace index is out of range");
    }
    return 0;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 == 0)) {
    FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x343,"wxSizer::Replace","newitem",
                 L"Replacing with NULL item");
  }
  iVar2 = FUN_0086aef0(param_1);
  if (iVar2 != 0) {
    piVar1 = *(int **)(iVar2 + 8);
    *(int *)(iVar2 + 8) = param_2;
    if ((piVar1[2] == 1) && (piVar1[3] != 0)) {
      FUN_0091ab40(0);
    }
    (**(code **)(*piVar1 + 4))(1);
    return 1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x347,"wxSizer::Replace",&DAT_00fb76e0,
                 L"Failed to find child node");
  }
  return 0;
}



void __thiscall FUN_00931190(int *param_1_00,char param_1)

{
  int iVar1;
  
  for (iVar1 = param_1_00[0xe]; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if (*(int *)(*(int *)(iVar1 + 8) + 8) == 1) {
      FUN_0091ab40(0);
    }
  }
  if (param_1 != '\0') {
    (**(code **)(*param_1_00 + 0x3c))();
  }
  for (iVar1 = param_1_00[0xe]; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if (*(int **)(iVar1 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
    }
  }
  FUN_0086b130();
  return;
}



void __fastcall FUN_00931210(int param_1)

{
  int iVar1;
  
  for (iVar1 = *(int *)(param_1 + 0x38); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    (**(code **)(**(int **)(iVar1 + 8) + 0x10))();
  }
  return;
}



undefined4 __thiscall FUN_00931230(int param_1_00,int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  int *piVar5;
  int iVar6;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x436,"wxSizer::DoSetItemMinSize","sizer",
                 L"SetMinSize for NULL sizer");
  }
  iVar1 = *(int *)(param_1_00 + 0x38);
  iVar3 = iVar1;
  while( true ) {
    if (iVar3 == 0) {
      while( true ) {
        if (iVar1 == 0) {
          return 0;
        }
        if (((*(int *)(*(int *)(iVar1 + 8) + 8) == 2) &&
            (piVar5 = *(int **)(*(int *)(iVar1 + 8) + 0xc), piVar5 != (int *)0x0)) &&
           (cVar4 = (**(code **)(*piVar5 + 0x5c))(param_1,param_2,param_3), cVar4 != '\0')) break;
        iVar1 = *(int *)(iVar1 + 0xc);
      }
      return 1;
    }
    iVar2 = *(int *)(iVar3 + 8);
    if (*(int *)(iVar2 + 8) == 2) {
      iVar6 = *(int *)(iVar2 + 0xc);
    }
    else {
      iVar6 = 0;
    }
    if (iVar6 == param_1) break;
    iVar3 = *(int *)(iVar3 + 0xc);
  }
  if (*(int *)(iVar2 + 8) == 2) {
    piVar5 = *(int **)(iVar2 + 0xc);
  }
  else {
    piVar5 = (int *)0x0;
  }
  (**(code **)(*piVar5 + 0x54))(param_2,param_3);
  return 1;
}



int __thiscall FUN_00931300(int param_1_00,int param_1,char param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x472,"wxSizer::GetItem","window",
                 L"GetItem for NULL window");
  }
  iVar1 = *(int *)(param_1_00 + 0x38);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    iVar2 = *(int *)(iVar1 + 8);
    if (*(int *)(iVar2 + 8) == 1) {
      iVar3 = *(int *)(iVar2 + 0xc);
    }
    else {
      iVar3 = 0;
    }
    if (iVar3 == param_1) break;
    if (((param_2 != '\0') && (*(int *)(iVar2 + 8) == 2)) &&
       (iVar2 = FUN_00931300(param_1,1), iVar2 != 0)) {
      return iVar2;
    }
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  return iVar2;
}



int __thiscall FUN_00931380(int param_1_00,int param_1,char param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x48c,"wxSizer::GetItem","sizer",
                 L"GetItem for NULL sizer");
  }
  iVar1 = *(int *)(param_1_00 + 0x38);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    iVar2 = *(int *)(iVar1 + 8);
    if (*(int *)(iVar2 + 8) == 2) {
      iVar3 = *(int *)(iVar2 + 0xc);
    }
    else {
      iVar3 = 0;
    }
    if (iVar3 == param_1) break;
    if (((param_2 != '\0') && (*(int *)(iVar2 + 8) == 2)) &&
       (iVar2 = FUN_00931380(param_1,1), iVar2 != 0)) {
      return iVar2;
    }
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  return iVar2;
}



undefined4 FUN_00931400(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  
  iVar1 = FUN_00931380(param_1,param_3);
  if (iVar1 != 0) {
    FUN_00930ab0(param_2);
    return 1;
  }
  return 0;
}



void __thiscall FUN_00931430(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  for (iVar1 = *(int *)(param_1_00 + 0x38); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    FUN_00930ab0(param_1);
  }
  return;
}



void __thiscall FUN_00931460(int param_1,int *param_2)

{
  int *piVar1;
  float fVar2;
  char cVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  int *piVar7;
  float local_20;
  int iStack_1c;
  int local_10;
  int iStack_c;
  int local_8;
  
  local_20 = 0.0;
  piVar7 = (int *)(param_1 + 0x4c);
  piVar1 = (int *)(param_1 + 0x50);
  *piVar7 = 0;
  *piVar1 = 0;
  *(undefined4 *)(param_1 + 0x54) = 0;
  local_8 = *(int *)(param_1 + 0x38);
  if (local_8 != 0) {
    do {
      piVar4 = *(int **)(local_8 + 8);
      cVar3 = FUN_00930b50();
      if (cVar3 != '\0') {
        (**(code **)(*piVar4 + 0x18))(&local_10);
        iVar5 = piVar4[8];
        if (iVar5 == 0) {
          iVar5 = local_10;
          piVar4 = piVar1;
          if (*(int *)(param_1 + 0x48) != 4) {
            piVar4 = (int *)(param_1 + 0x54);
            iVar5 = iStack_c;
          }
          *piVar4 = *piVar4 + iVar5;
        }
        else {
          iStack_1c = local_10;
          if (*(int *)(param_1 + 0x48) != 4) {
            iStack_1c = iStack_c;
          }
          fVar2 = (float)iStack_1c / (float)iVar5;
          if (local_20 < fVar2 == (NAN(local_20) || NAN(fVar2))) {
            *piVar7 = *piVar7 + iVar5;
          }
          else {
            *piVar7 = *piVar7 + iVar5;
            local_20 = fVar2;
          }
        }
        if (*(int *)(param_1 + 0x48) == 4) {
          iVar5 = *(int *)(param_1 + 0x54);
          iVar6 = iStack_c;
        }
        else {
          iVar5 = *piVar1;
          iVar6 = local_10;
        }
        if (iVar5 < iVar6) {
          piVar4 = piVar1;
          iVar5 = local_10;
          if (*(int *)(param_1 + 0x48) == 4) {
            piVar4 = (int *)(param_1 + 0x54);
            iVar5 = iStack_c;
          }
          *piVar4 = iVar5;
        }
      }
      local_8 = *(int *)(local_8 + 0xc);
    } while (local_8 != 0);
    local_8 = 0;
  }
  piVar7 = piVar1;
  if (*(int *)(param_1 + 0x48) != 4) {
    piVar7 = (int *)(param_1 + 0x54);
  }
  iVar5 = FUN_00a49750();
  *piVar7 = *piVar7 + iVar5;
  iVar5 = *(int *)(param_1 + 0x54);
  *param_2 = *piVar1;
  param_2[1] = iVar5;
  return;
}



void __thiscall FUN_009315a0(int param_1_00,int param_1)

{
  switch(*(undefined4 *)(param_1 + 0x40)) {
  case 0x1389:
  case 0x13ed:
    *(int *)(param_1_00 + 100) = param_1;
    return;
  case 0x138b:
  case 0x13ec:
  case 0x13ef:
    *(int *)(param_1_00 + 0x58) = param_1;
    return;
  case 0x1391:
  case 0x13f8:
    *(int *)(param_1_00 + 0x68) = param_1;
    break;
  case 0x13ee:
    *(int *)(param_1_00 + 0x5c) = param_1;
    return;
  case 0x13f0:
    *(int *)(param_1_00 + 0x60) = param_1;
    return;
  }
  return;
}



int __thiscall FUN_00931670(uint *param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 <= param_1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<int>::at",
                 "idx < m_size",0);
  }
  return param_1_00[2] + param_1 * 4;
}



void __thiscall FUN_009316b0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 local_8;
  undefined4 local_4;
  
  local_8 = param_1;
  local_4 = param_2;
  if (*(int *)(param_1_00 + 8) == 1) {
    (**(code **)(**(int **)(param_1_00 + 0xc) + 0x94))(&local_8);
  }
  *(undefined4 *)(param_1_00 + 0x18) = local_8;
  *(undefined4 *)(param_1_00 + 0x1c) = local_4;
  return;
}



undefined4 __thiscall FUN_00931700(undefined4 param_1_00,byte param_1)

{
  FUN_009304a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_00931720(int param_1_00,int param_1,int param_2)

{
  undefined4 uVar1;
  int iVar2;
  
  if (param_1 == *(int *)(param_1_00 + 0x30)) {
    FUN_0086ad60(param_2);
  }
  else {
    iVar2 = param_2;
    uVar1 = FUN_0086aef0(param_1);
    FUN_0086ae40(uVar1,iVar2);
  }
  if ((*(int *)(param_2 + 8) == 1) && (*(int *)(param_2 + 0xc) != 0)) {
    FUN_0091ab40(param_1_00);
  }
  if ((*(int *)(param_2 + 8) == 2) && (*(int *)(param_2 + 0xc) != 0)) {
    FUN_00930ca0(*(undefined4 *)(param_1_00 + 0x44));
  }
  return param_2;
}



undefined4 __thiscall FUN_00931780(int param_1_00,int param_1,int param_2,char param_3)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (param_1 == 0) {
      FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x30b,"wxSizer::Replace","oldwin",
                   L"Replacing NULL window");
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 == 0)) {
      FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x30c,"wxSizer::Replace","newwin",
                   L"Replacing with NULL window");
    }
  }
  iVar1 = *(int *)(param_1_00 + 0x38);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    iVar2 = *(int *)(iVar1 + 8);
    if (*(int *)(iVar2 + 8) == 1) {
      iVar4 = *(int *)(iVar2 + 0xc);
    }
    else {
      iVar4 = 0;
    }
    if (iVar4 == param_1) break;
    if (((param_3 != '\0') && (*(int *)(iVar2 + 8) == 2)) &&
       (cVar3 = (**(code **)(**(int **)(iVar2 + 0xc) + 0x34))(param_1,param_2,1), cVar3 != '\0')) {
      return 1;
    }
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  FUN_0092fea0();
  FUN_009300d0(param_2);
  FUN_0091ab40(param_1_00);
  return 1;
}



int * __thiscall FUN_00931860(int *param_1_00,int *param_1,int *param_2)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  undefined4 uVar4;
  int unaff_ESI;
  int unaff_EDI;
  int local_3c;
  int iStack_38;
  int iStack_34;
  int iStack_30;
  undefined auStack_24 [12];
  undefined auStack_18 [4];
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  int *piStack_4;
  
  piStack_4 = (int *)0xffffffff;
  puStack_8 = &LAB_00bd8f58;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\sizer.cpp",0x377,"wxSizer::ComputeFittingClientSize",
                   "window","window can\'t be NULL",DAT_0323f878 ^ (uint)&stack0xffffffbc);
    }
    *param_1 = DAT_03238d04;
    iStack_38 = DAT_03238d08;
LAB_00931a44:
    param_1[1] = iStack_38;
    ExceptionList = local_c;
    return param_1;
  }
  (**(code **)(*param_1_00 + 0x44))(&local_3c);
  if (unaff_ESI < param_1_00[7]) {
    unaff_ESI = param_1_00[7];
  }
  if (local_3c < param_1_00[8]) {
    local_3c = param_1_00[8];
  }
  iStack_38 = 0;
  iStack_34 = 0;
  piVar2 = (int *)FUN_0048a085(param_2,&PTR_u_wxTopLevelWindow_03239ae4);
  if (piVar2 == (int *)0x0) {
    iVar3 = *param_2;
    uVar4 = (**(code **)(iVar3 + 0xa8))(auStack_18);
    (**(code **)(iVar3 + 0x80))(&iStack_34,uVar4);
  }
  else {
    cVar1 = (**(code **)(*piVar2 + 0x350))();
    if (cVar1 != '\0') {
      FUN_0043d8d2(param_1);
      ExceptionList = local_c;
      return param_1;
    }
    iVar3 = FUN_0099a530(param_2);
    if (iVar3 == -1) {
      iVar3 = 0;
    }
    FUN_0099a810(iVar3);
    piStack_4 = (int *)0x0;
    iVar3 = FUN_0099a5f0(auStack_24);
    iStack_30 = *(int *)(iVar3 + 0xc);
    iStack_34 = *(int *)(iVar3 + 8);
    piStack_4 = (int *)0xffffffff;
    FUN_0099a3d0();
    if ((iStack_34 == 0) || (iStack_30 == 0)) {
      *param_1 = local_3c;
      goto LAB_00931a44;
    }
    piVar2 = (int *)(**(code **)(*piVar2 + 0x80))(auStack_24,&iStack_34);
    iStack_34 = *piVar2;
    iStack_30 = piVar2[1];
  }
  if ((iStack_34 != -1) && (iStack_34 < unaff_EDI)) {
    unaff_EDI = iStack_34;
  }
  if ((iStack_30 != -1) && (iStack_30 < unaff_ESI)) {
    unaff_ESI = iStack_30;
  }
  *piStack_4 = unaff_EDI;
  piStack_4[1] = unaff_ESI;
  ExceptionList = pvStack_14;
  return piStack_4;
}



void FUN_00931a60(undefined4 *param_1,int *param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *unaff_ESI;
  int **ppiVar3;
  int *piStack_10;
  undefined4 local_8 [2];
  
  if (param_2 != (int *)0x0) {
    piStack_10 = param_2;
    puVar2 = (undefined4 *)FUN_00931860(local_8);
    piStack_10 = (int *)puVar2[1];
    (**(code **)(*param_2 + 0x28c))(*puVar2);
    ppiVar3 = &piStack_10;
    (**(code **)(*param_2 + 0x278))(&stack0x00000000);
    unaff_ESI[1] = ppiVar3;
    *unaff_ESI = local_8[0];
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    piStack_10 = (int *)0xd560d4;
    FUN_008402e0("..\\..\\src\\common\\sizer.cpp",0x3ae,"wxSizer::Fit","window");
  }
  uVar1 = DAT_03238d04;
  param_1[1] = DAT_03238d08;
  *param_1 = uVar1;
  return;
}



void FUN_00931b00(int *param_1)

{
  undefined4 unaff_ESI;
  undefined4 local_8 [2];
  
  FUN_00931860(local_8,param_1);
  (**(code **)(*param_1 + 0x9c))(local_8);
  (**(code **)(*param_1 + 0x28c))(unaff_ESI,local_8[0]);
  return;
}



undefined4 __thiscall FUN_00931b50(int param_1_00,int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  char cVar5;
  int iVar6;
  undefined4 local_8;
  undefined4 local_4;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x410,"wxSizer::DoSetItemMinSize","window",
                 L"SetMinSize for NULL window");
  }
  iVar1 = *(int *)(param_1_00 + 0x38);
  iVar3 = iVar1;
  while( true ) {
    if (iVar3 == 0) {
      while( true ) {
        if (iVar1 == 0) {
          return 0;
        }
        if (((*(int *)(*(int *)(iVar1 + 8) + 8) == 2) &&
            (piVar4 = *(int **)(*(int *)(iVar1 + 8) + 0xc), piVar4 != (int *)0x0)) &&
           (cVar5 = (**(code **)(*piVar4 + 0x60))(param_1,param_2,param_3), cVar5 != '\0')) break;
        iVar1 = *(int *)(iVar1 + 0xc);
      }
      return 1;
    }
    iVar2 = *(int *)(iVar3 + 8);
    if (*(int *)(iVar2 + 8) == 1) {
      iVar6 = *(int *)(iVar2 + 0xc);
    }
    else {
      iVar6 = 0;
    }
    if (iVar6 == param_1) break;
    iVar3 = *(int *)(iVar3 + 0xc);
  }
  local_8 = param_2;
  local_4 = param_3;
  if (*(int *)(iVar2 + 8) == 1) {
    (**(code **)(**(int **)(iVar2 + 0xc) + 0x94))(&local_8);
  }
  *(undefined4 *)(iVar2 + 0x18) = local_8;
  *(undefined4 *)(iVar2 + 0x1c) = local_4;
  return 1;
}



undefined4 FUN_00931c50(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int *piVar1;
  int iVar2;
  
  iVar2 = FUN_0086aef0(param_1);
  if (iVar2 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\sizer.cpp",0x45e,"wxSizer::DoSetItemMinSize",&DAT_00fb76e0,
                   L"Failed to find child node");
    }
    return 0;
  }
  if ((*(int *)(*(int *)(iVar2 + 8) + 8) == 2) &&
     (piVar1 = *(int **)(*(int *)(iVar2 + 8) + 0xc), piVar1 != (int *)0x0)) {
    (**(code **)(*piVar1 + 0x54))(param_2,param_3);
    return 1;
  }
  FUN_009316b0(param_2,param_3);
  return 1;
}



void __thiscall FUN_00931cd0(int param_1_00,undefined4 param_1)

{
  if (*(int *)(param_1_00 + 0x48) == 8) {
    FUN_00445db1(0,param_1,0,0,0,0);
    return;
  }
  FUN_00445db1(param_1,0,0,0,0,0);
  return;
}



undefined4 * __fastcall FUN_00931d00(undefined4 *param_1)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8f90;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00445eb9(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  param_1[0x12] = 4;
  param_1[0x13] = 0;
  local_4 = 1;
  *param_1 = wxStdDialogButtonSizer::vftable;
  param_1[2] = wxStdDialogButtonSizer::vftable;
  iVar1 = FUN_009b1bf0();
  if (iVar1 < 3) {
    param_1[0x12] = 8;
  }
  param_1[0x16] = 0;
  param_1[0x17] = 0;
  param_1[0x18] = 0;
  param_1[0x19] = 0;
  param_1[0x1a] = 0;
  ExceptionList = local_c;
  return param_1;
}



void FUN_00931d90(void)

{
  FUN_009326f0();
  return;
}



void __fastcall FUN_00931da0(int param_1)

{
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8 [2];
  
  FUN_00445db1(0,0,1,0x2000,0,0);
  if (*(int *)(param_1 + 0x58) != 0) {
    local_10 = 2;
    local_c = 0;
    FUN_0091f410(local_8,&local_10);
    FUN_00445d61(*(undefined4 *)(param_1 + 0x58),0,0x930,local_8[0],0);
  }
  if (*(int *)(param_1 + 0x60) != 0) {
    local_10 = 2;
    local_c = 0;
    FUN_0091f410(local_8,&local_10);
    FUN_00445d61(*(undefined4 *)(param_1 + 0x60),0,0x930,local_8[0],0);
  }
  if (*(int *)(param_1 + 100) != 0) {
    local_10 = 2;
    local_c = 0;
    FUN_0091f410(local_8,&local_10);
    FUN_00445d61(*(undefined4 *)(param_1 + 100),0,0x930,local_8[0],0);
  }
  if (*(int *)(param_1 + 0x5c) != 0) {
    local_10 = 2;
    local_c = 0;
    FUN_0091f410(local_8,&local_10);
    FUN_00445d61(*(undefined4 *)(param_1 + 0x5c),0,0x930,local_8[0],0);
  }
  if (*(int *)(param_1 + 0x68) != 0) {
    local_10 = 2;
    local_c = 0;
    FUN_0091f410(local_8,&local_10);
    FUN_00445d61(*(undefined4 *)(param_1 + 0x68),0,0x930,local_8[0],0);
  }
  return;
}



uint * __thiscall FUN_00931ed0(uint *param_1_00,uint param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  void *pvVar2;
  uint uVar3;
  uint uVar4;
  
  *param_1_00 = 0;
  param_1_00[1] = 0;
  param_1_00[2] = 0;
  if (param_1 != 0) {
    uVar4 = param_1;
    if (param_1 < 0x10) {
      uVar4 = 0x10;
    }
    pvVar2 = _realloc((void *)0x0,uVar4 << 4);
    param_1_00[2] = (uint)pvVar2;
    param_1_00[1] = uVar4;
    if (param_1 != 0) {
      do {
        uVar3 = *param_1_00;
        uVar4 = uVar3 + 1;
        if (param_1_00[1] < uVar4) {
          if (uVar3 == 0) {
            uVar3 = 0x10;
          }
          else if (0xfff < uVar3) {
            uVar3 = 0x1000;
          }
          uVar3 = uVar3 + param_1_00[1];
          if (uVar4 < uVar3) {
            uVar4 = uVar3;
          }
          pvVar2 = _realloc((void *)param_1_00[2],uVar4 << 4);
          param_1_00[2] = (uint)pvVar2;
          param_1_00[1] = uVar4;
        }
        puVar1 = (undefined4 *)(param_1_00[2] + *param_1_00 * 4);
        if (puVar1 != (undefined4 *)0x0) {
          *puVar1 = *param_2;
        }
        *param_1_00 = *param_1_00 + 1;
        param_1 = param_1 - 1;
      } while (param_1 != 0);
    }
  }
  return param_1_00;
}



void __fastcall FUN_00931f80(uint param_1)

{
  bool bVar1;
  void **ppvVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  int *piVar6;
  uint *puVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  uint uVar11;
  uint uVar12;
  int local_50;
  int iStack_4c;
  uint local_48;
  uint local_44;
  uint local_40;
  int local_3c;
  int local_38;
  uint local_34;
  uint local_30;
  int local_2c;
  undefined4 local_28;
  uint local_24;
  void *local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00bd8fb8;
  local_14 = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  if (*(int *)(param_1 + 0x30) != 0) {
    if (*(int *)(param_1 + 0x48) == 4) {
      local_3c = *(int *)(param_1 + 0x18);
      iVar10 = *(int *)(param_1 + 0x14);
      iVar8 = *(int *)(param_1 + 0x50);
    }
    else {
      local_3c = *(int *)(param_1 + 0x14);
      iVar10 = *(int *)(param_1 + 0x18);
      iVar8 = *(int *)(param_1 + 0x54);
    }
    local_40 = iVar10 - iVar8;
    iVar8 = *(int *)(param_1 + 0x38);
    local_28 = *(undefined4 *)(param_1 + 0x3c);
    local_50 = 0;
    ppvVar2 = &local_14;
    local_48 = param_1;
    iVar5 = local_50;
    local_38 = iVar10;
    for (; ExceptionList = ppvVar2, local_2c = iVar8, iVar8 != 0; iVar8 = *(int *)(iVar8 + 0xc)) {
      iVar9 = *(int *)(iVar8 + 8);
      local_50 = iVar5;
      cVar3 = FUN_00930b50(uVar4);
      if (cVar3 != '\0') {
        uVar11 = *(uint *)(iVar9 + 0x28);
        local_24 = *(uint *)(iVar9 + 0x18);
        iVar10 = *(int *)(iVar9 + 0x1c);
        if ((uVar11 & 0x10) != 0) {
          local_24 = local_24 + *(int *)(iVar9 + 0x24);
        }
        if ((uVar11 & 0x20) != 0) {
          local_24 = local_24 + *(int *)(iVar9 + 0x24);
        }
        if ((uVar11 & 0x40) != 0) {
          iVar10 = iVar10 + *(int *)(iVar9 + 0x24);
        }
        if ((char)uVar11 < '\0') {
          iVar10 = iVar10 + *(int *)(iVar9 + 0x24);
        }
        FUN_009305f0(*(uint *)(param_1 + 0x48) ^ 0xc,local_3c,local_40);
        uVar11 = *(uint *)(iVar9 + 0x28);
        iVar8 = *(int *)(iVar9 + 0x18);
        iVar5 = *(int *)(iVar9 + 0x1c);
        if ((uVar11 & 0x10) != 0) {
          iVar8 = iVar8 + *(int *)(iVar9 + 0x24);
        }
        local_34 = uVar11 & 0x20;
        if (local_34 != 0) {
          iVar8 = iVar8 + *(int *)(iVar9 + 0x24);
        }
        if ((uVar11 & 0x40) != 0) {
          iVar5 = iVar5 + *(int *)(iVar9 + 0x24);
        }
        if ((uVar11 & 0x80) != 0) {
          iVar5 = iVar5 + *(int *)(iVar9 + 0x24);
        }
        iVar10 = iVar5 - iVar10;
        if (*(int *)(local_48 + 0x48) == 4) {
          iVar10 = iVar8 - local_24;
        }
        if (iVar10 != 0) {
          local_40 = local_40 - iVar10;
        }
        iVar10 = *(int *)(iVar9 + 0x18);
        iVar8 = *(int *)(iVar9 + 0x1c);
        if ((uVar11 & 0x10) != 0) {
          iVar10 = iVar10 + *(int *)(iVar9 + 0x24);
        }
        if (local_34 != 0) {
          iVar10 = iVar10 + *(int *)(iVar9 + 0x24);
        }
        if ((uVar11 & 0x40) != 0) {
          iVar8 = iVar8 + *(int *)(iVar9 + 0x24);
        }
        if ((uVar11 & 0x80) != 0) {
          iVar8 = iVar8 + *(int *)(iVar9 + 0x24);
        }
        if (*(int *)(local_48 + 0x48) == 4) {
          iVar8 = iVar10;
        }
        local_50 = local_50 + iVar8;
        iVar10 = local_38;
        param_1 = local_48;
        iVar8 = local_2c;
      }
      ppvVar2 = (void **)ExceptionList;
      iVar5 = local_50;
    }
    piVar6 = (int *)(param_1 + 0x50);
    if (*(int *)(param_1 + 0x48) != 4) {
      piVar6 = (int *)(param_1 + 0x54);
    }
    *piVar6 = iVar5;
    local_40 = *(int *)(param_1 + 0x4c);
    local_34 = 0xffffffff;
    local_50 = iVar10;
    FUN_00931ed0(*(undefined4 *)(param_1 + 0x30),&local_34);
    local_c = 0;
    if (iVar10 < iVar5) {
      local_28 = *(undefined4 *)(local_48 + 0x3c);
      uVar11 = 0;
      uVar12 = local_48;
      for (iVar10 = *(int *)(local_48 + 0x38); iVar10 != 0; iVar10 = *(int *)(iVar10 + 0xc)) {
        iVar8 = *(int *)(iVar10 + 8);
        cVar3 = FUN_00930b50(uVar4);
        if ((cVar3 != '\0') && (*(int *)(iVar8 + 0x20) == 0)) {
          if (local_50 < 1) {
            iVar5 = 0;
          }
          else {
            uVar12 = *(uint *)(iVar8 + 0x28);
            iVar5 = *(int *)(iVar8 + 0x18);
            iVar9 = *(int *)(iVar8 + 0x1c);
            if ((uVar12 & 0x10) != 0) {
              iVar5 = iVar5 + *(int *)(iVar8 + 0x24);
            }
            if ((uVar12 & 0x20) != 0) {
              iVar5 = iVar5 + *(int *)(iVar8 + 0x24);
            }
            if ((uVar12 & 0x40) != 0) {
              iVar9 = iVar9 + *(int *)(iVar8 + 0x24);
            }
            if ((char)uVar12 < '\0') {
              iVar9 = iVar9 + *(int *)(iVar8 + 0x24);
            }
            if (*(int *)(local_48 + 0x48) != 4) {
              iVar5 = iVar9;
            }
            if (local_50 <= iVar5) {
              iVar5 = local_50;
            }
            local_50 = local_50 - iVar5;
          }
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_24 <= uVar11)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<int>::at",
                         "idx < m_size",0);
          }
          *(int *)((int)local_1c + uVar11 * 4) = iVar5;
          uVar12 = local_48;
        }
        uVar11 = uVar11 + 1;
      }
      iVar10 = *(int *)(uVar12 + 0x38);
      local_28 = *(undefined4 *)(uVar12 + 0x3c);
      local_40 = 0;
      for (; iVar10 != 0; iVar10 = *(int *)(iVar10 + 0xc)) {
        iVar8 = *(int *)(iVar10 + 8);
        cVar3 = FUN_00930b50(uVar4);
        if ((cVar3 != '\0') && (*(int *)(iVar8 + 0x20) != 0)) {
          if (local_50 < 1) {
            iVar5 = 0;
          }
          else {
            uVar11 = *(uint *)(iVar8 + 0x28);
            iVar5 = *(int *)(iVar8 + 0x18);
            iVar9 = *(int *)(iVar8 + 0x1c);
            if ((uVar11 & 0x10) != 0) {
              iVar5 = iVar5 + *(int *)(iVar8 + 0x24);
            }
            if ((uVar11 & 0x20) != 0) {
              iVar5 = iVar5 + *(int *)(iVar8 + 0x24);
            }
            if ((uVar11 & 0x40) != 0) {
              iVar9 = iVar9 + *(int *)(iVar8 + 0x24);
            }
            if ((char)uVar11 < '\0') {
              iVar9 = iVar9 + *(int *)(iVar8 + 0x24);
            }
            if (*(int *)(local_48 + 0x48) != 4) {
              iVar5 = iVar9;
            }
            if (local_50 <= iVar5) {
              iVar5 = local_50;
            }
            local_50 = local_50 - iVar5;
          }
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_24 <= local_40)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<int>::at",
                         "idx < m_size",0);
          }
          *(int *)((int)local_1c + local_40 * 4) = iVar5;
        }
        local_40 = local_40 + 1;
      }
    }
    else {
      local_28 = *(undefined4 *)(param_1 + 0x3c);
      local_2c = *(int *)(param_1 + 0x38);
      bVar1 = false;
      uVar11 = 0;
      while( true ) {
        if (bVar1) {
          local_2c = *(int *)(param_1 + 0x38);
          local_28 = *(undefined4 *)(param_1 + 0x3c);
          uVar11 = 0;
          bVar1 = false;
        }
        if (local_2c == 0) break;
        iVar10 = *(int *)(local_2c + 8);
        cVar3 = FUN_00930b50(uVar4);
        if (cVar3 != '\0') {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_24 <= uVar11)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<int>::at",
                         "idx < m_size",0);
          }
          if (*(int *)((int)local_1c + uVar11 * 4) == -1) {
            uVar12 = *(uint *)(iVar10 + 0x28);
            iVar8 = *(int *)(iVar10 + 0x18);
            iVar5 = *(int *)(iVar10 + 0x1c);
            if ((uVar12 & 0x10) != 0) {
              iVar8 = iVar8 + *(int *)(iVar10 + 0x24);
            }
            if ((uVar12 & 0x20) != 0) {
              iVar8 = iVar8 + *(int *)(iVar10 + 0x24);
            }
            if ((uVar12 & 0x40) != 0) {
              iVar5 = iVar5 + *(int *)(iVar10 + 0x24);
            }
            if ((char)uVar12 < '\0') {
              iVar5 = iVar5 + *(int *)(iVar10 + 0x24);
            }
            if (*(int *)(param_1 + 0x48) != 4) {
              iVar8 = iVar5;
            }
            if (iVar8 < 0) {
              iVar8 = 0;
            }
            iVar10 = *(int *)(iVar10 + 0x20);
            if (iVar10 != 0) {
              if (iVar8 <= (iVar10 * local_50) / (int)local_40) goto LAB_00932419;
              local_40 = local_40 - iVar10;
            }
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_24 <= uVar11)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<int>::at",
                           "idx < m_size",0);
            }
            local_50 = local_50 - iVar8;
            *(int *)((int)local_1c + uVar11 * 4) = iVar8;
            bVar1 = true;
          }
        }
LAB_00932419:
        local_2c = *(int *)(local_2c + 0xc);
        uVar11 = uVar11 + 1;
      }
      iVar10 = *(int *)(param_1 + 0x38);
      local_28 = *(undefined4 *)(param_1 + 0x3c);
      uVar11 = 0;
      if (iVar10 != 0) {
        local_2c = 0;
        iVar8 = local_50;
        do {
          iVar5 = *(int *)(iVar10 + 8);
          cVar3 = FUN_00930b50(uVar4);
          if (cVar3 != '\0') {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_24 <= uVar11)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<int>::at",
                           "idx < m_size",0);
            }
            if (*(int *)((int)local_1c + uVar11 * 4) == -1) {
              iVar5 = *(int *)(iVar5 + 0x20);
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_24 <= uVar11)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<int>::at",
                             "idx < m_size",0);
              }
              *(int *)((int)local_1c + uVar11 * 4) = (iVar5 * iVar8) / (int)local_40;
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_24 <= uVar11)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<int>::at",
                             "idx < m_size",0);
              }
              iVar8 = iVar8 - *(int *)((int)local_1c + uVar11 * 4);
              local_40 = local_40 - iVar5;
            }
          }
          iVar10 = *(int *)(iVar10 + 0xc);
          uVar11 = uVar11 + 1;
        } while (iVar10 != 0);
      }
    }
    uVar11 = local_48;
    local_44 = *(uint *)(local_48 + 0x28);
    iVar10 = *(int *)(local_48 + 0x38);
    local_28 = *(undefined4 *)(local_48 + 0x3c);
    local_40 = 0;
    local_48 = *(uint *)(local_48 + 0x24);
    uVar4 = local_40;
    for (; local_40 = uVar4, local_2c = iVar10, iVar10 != 0; iVar10 = *(int *)(iVar10 + 0xc)) {
      piVar6 = *(int **)(iVar10 + 8);
      cVar3 = FUN_00930b50();
      if (cVar3 != '\0') {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_24 <= uVar4)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<int>::at",
                       "idx < m_size",0);
        }
        iVar10 = *(int *)((int)local_1c + uVar4 * 4);
        iVar8 = piVar6[6];
        iVar5 = piVar6[7];
        uVar4 = piVar6[10];
        if ((uVar4 & 0x10) != 0) {
          iVar8 = iVar8 + piVar6[9];
        }
        if ((uVar4 & 0x20) != 0) {
          iVar8 = iVar8 + piVar6[9];
        }
        if ((uVar4 & 0x40) != 0) {
          iVar5 = iVar5 + piVar6[9];
        }
        if ((char)uVar4 < '\0') {
          iVar5 = iVar5 + piVar6[9];
        }
        local_34 = local_48;
        iVar9 = *(int *)(uVar11 + 0x48);
        local_30 = local_44;
        if (iVar9 != 4) {
          iVar5 = iVar8;
        }
        uVar4 = piVar6[10];
        iVar8 = local_3c;
        if (((uVar4 & 0x6000) == 0) && (iVar5 <= local_3c)) {
          iVar8 = iVar5;
          if ((uVar4 & (-(uint)(iVar9 != 8) & 0x200) + 0x200) == 0) {
            if ((uVar4 & ((-(uint)(iVar9 != 8) & 0x700) + 0x100 | 1)) != 0) {
              puVar7 = &local_30;
              if (iVar9 != 4) {
                puVar7 = &local_34;
              }
              *puVar7 = *puVar7 + (local_3c - iVar5) / 2;
            }
          }
          else {
            puVar7 = &local_30;
            if (iVar9 != 4) {
              puVar7 = &local_34;
            }
            *puVar7 = *puVar7 + (local_3c - iVar5);
          }
        }
        local_38 = iVar10;
        if ((iVar9 != 8) && (*(int *)(uVar11 + 0x44) != 0)) {
          local_34 = (**(code **)(**(int **)(uVar11 + 0x44) + 0x6c))
                               (local_34,iVar10,*(undefined4 *)(uVar11 + 0x14));
        }
        local_50 = iVar8;
        iStack_4c = iVar10;
        if (*(int *)(uVar11 + 0x48) == 4) {
          local_50 = iVar10;
          iStack_4c = iVar8;
        }
        (**(code **)(*piVar6 + 0x1c))(&local_34,&local_50);
        puVar7 = &local_48;
        if (*(int *)(uVar11 + 0x48) != 4) {
          puVar7 = &local_44;
        }
        *puVar7 = *puVar7 + iVar10;
        uVar4 = local_40;
        iVar10 = local_2c;
      }
      uVar4 = uVar4 + 1;
    }
    _free(local_1c);
  }
  ExceptionList = local_14;
  return;
}



undefined4 __thiscall FUN_009326f0(undefined4 param_1_00,byte param_1)

{
  FUN_00930be0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined * FUN_00932710(void)

{
  return &DAT_0323a300;
}



undefined4 * __thiscall FUN_00932740(undefined4 *param_1_00,uint param_1,int param_3)

{
  uint uVar1;
  WORD WVar2;
  uint uVar3;
  undefined4 *puVar4;
  LPACCEL paccel;
  HACCEL pHVar5;
  byte bVar6;
  WORD *pWVar7;
  WORD *pWVar8;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd8fe8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxAcceleratorTable::vftable;
  puVar4 = (undefined4 *)operator_new(0x10);
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    puVar4[1] = 1;
    *puVar4 = wxAcceleratorRefData::vftable;
    *(undefined *)(puVar4 + 3) = 0;
    puVar4[2] = 0;
  }
  param_1_00[1] = puVar4;
  paccel = (LPACCEL)FUN_00823c23(-(uint)((int)((ulonglong)param_1 * 6 >> 0x20) != 0) |
                                 (uint)((ulonglong)param_1 * 6),uVar3);
  if (0 < (int)param_1) {
    pWVar7 = &paccel->cmd;
    pWVar8 = (WORD *)(param_3 + 8);
    uVar3 = param_1;
    do {
      uVar1 = *(uint *)(pWVar8 + -4);
      bVar6 = 1;
      if ((uVar1 & 1) != 0) {
        bVar6 = 0x11;
      }
      if ((uVar1 & 4) != 0) {
        bVar6 = bVar6 | 4;
      }
      if ((uVar1 & 2) != 0) {
        bVar6 = bVar6 | 8;
      }
      WVar2 = FUN_0090dd60(*(undefined4 *)(pWVar8 + -2),0);
      ((tagACCEL *)(pWVar7 + -2))->fVirt = bVar6;
      pWVar7[-1] = WVar2;
      *pWVar7 = *pWVar8;
      pWVar8 = pWVar8 + 8;
      pWVar7 = pWVar7 + 3;
      uVar3 = uVar3 - 1;
    } while (uVar3 != 0);
  }
  pHVar5 = CreateAcceleratorTableW(paccel,param_1);
  *(HACCEL *)(param_1_00[1] + 8) = pHVar5;
  FUN_00a3f66c(paccel);
  *(bool *)(param_1_00[1] + 0xc) = *(int *)(param_1_00[1] + 8) != 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00932870(int param_1_00,int param_1,LPMSG param_2)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 4);
  if ((iVar1 != 0) && (*(char *)(iVar1 + 0xc) != '\0')) {
    iVar1 = TranslateAcceleratorW(*(HWND *)(param_1 + 0x13c),*(HACCEL *)(iVar1 + 8),param_2);
    if (iVar1 != 0) {
      return 1;
    }
  }
  return 0;
}



undefined4 * __thiscall FUN_009328b0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxAcceleratorRefData::vftable;
  if ((HACCEL)param_1_00[2] != (HACCEL)0x0) {
    DestroyAcceleratorTable((HACCEL)param_1_00[2]);
  }
  *param_1_00 = wxRefCounter::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined ** FUN_009328f0(void)

{
  return &PTR_u_wxStatusBar_0323a318;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1b4);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00948e60(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00932970(int *param_1_00,int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 != param_1_00[0x66])) {
    FUN_00840480("..\\..\\src\\common\\statbar.cpp",0xa4,"wxStatusBarBase::SetStatusWidths",
                 "(size_t)n == m_panes.GetCount()",L"field number mismatch");
  }
  if (param_2 == 0) {
    *(undefined *)(param_1_00 + 0x68) = 1;
  }
  else {
    uVar3 = 0;
    if (param_1_00[0x66] != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x66] <= uVar3)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar1 = uVar3 * 4;
        iVar2 = uVar3 * 4;
        uVar3 = uVar3 + 1;
        *(undefined4 *)(*(int *)(param_1_00[0x67] + iVar1) + 4) = *(undefined4 *)(param_2 + iVar2);
      } while (uVar3 < (uint)param_1_00[0x66]);
    }
    *(undefined *)(param_1_00 + 0x68) = 0;
  }
  (**(code **)(*param_1_00 + 0x15c))(1,0);
  return;
}



void __thiscall FUN_00932a30(int *param_1_00,int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  
  if (param_2 != 0) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 != param_1_00[0x66])) {
      FUN_00840480("..\\..\\src\\common\\statbar.cpp",0xbd,"wxStatusBarBase::SetStatusStyles",
                   "(size_t)n == m_panes.GetCount()",L"field number mismatch");
    }
    uVar3 = 0;
    if (param_1_00[0x66] != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x66] <= uVar3)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar1 = uVar3 * 4;
        iVar2 = uVar3 * 4;
        uVar3 = uVar3 + 1;
        **(undefined4 **)(param_1_00[0x67] + iVar1) = *(undefined4 *)(param_2 + iVar2);
      } while (uVar3 < (uint)param_1_00[0x66]);
    }
    (**(code **)(*param_1_00 + 0x15c))(1,0);
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\statbar.cpp",0xbb,"wxStatusBarBase::SetStatusStyles","styles"
                 ,L"NULL pointer in SetStatusStyles");
  }
  return;
}



undefined4 __thiscall FUN_00932b10(int param_1,undefined4 param_2_00,uint param_2)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd9029;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar3 = 0;
  local_4 = 0;
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xffffffdc);
  local_4 = 0;
  if (*(char *)(param_1 + 0x1a0) == '\0') {
    iVar2 = 0;
    local_14 = 0;
    if (*(int *)(param_1 + 0x198) != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x198) <= uVar3)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        if (*(int *)(*(int *)(*(int *)(param_1 + 0x19c) + uVar3 * 4) + 4) < 0) {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x198) <= uVar3)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          local_14 = local_14 - *(int *)(*(int *)(*(int *)(param_1 + 0x19c) + uVar3 * 4) + 4);
        }
        else {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x198) <= uVar3)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          iVar2 = iVar2 + *(int *)(*(int *)(*(int *)(param_1 + 0x19c) + uVar3 * 4) + 4);
        }
        uVar3 = uVar3 + 1;
      } while (uVar3 < *(uint *)(param_1 + 0x198));
    }
    uVar3 = 0;
    iVar2 = param_2 - iVar2;
    if (*(int *)(param_1 + 0x198) != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x198) <= uVar3)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        if (*(int *)(*(int *)(*(int *)(param_1 + 0x19c) + uVar3 * 4) + 4) < 0) {
          if (iVar2 < 1) {
            uVar1 = 0;
          }
          else {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x198) <= uVar3)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            uVar1 = (uint)-(*(int *)(*(int *)(*(int *)(param_1 + 0x19c) + uVar3 * 4) + 4) * iVar2) /
                    local_14;
          }
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x198) <= uVar3)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          local_14 = local_14 + *(int *)(*(int *)(*(int *)(param_1 + 0x19c) + uVar3 * 4) + 4);
          iVar2 = iVar2 - uVar1;
        }
        else {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x198) <= uVar3)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          uVar1 = *(uint *)(*(int *)(*(int *)(param_1 + 0x19c) + uVar3 * 4) + 4);
        }
        FUN_0086a400(uVar1,1);
        uVar3 = uVar3 + 1;
      } while (uVar3 < *(uint *)(param_1 + 0x198));
    }
  }
  else {
    for (uVar3 = *(uint *)(param_1 + 0x198); uVar3 != 0; uVar3 = uVar3 - 1) {
      FUN_0086a400(param_2 / uVar3,1);
      param_2 = param_2 - param_2 / uVar3;
    }
  }
  ExceptionList = local_c;
  return param_2_00;
}



void __thiscall FUN_00932dd0(int param_1_00,uint param_1,undefined param_2)

{
  int iVar1;
  
  if (param_1 < *(uint *)(param_1_00 + 0x198)) {
    iVar1 = FUN_009cde80(param_1);
    *(undefined *)(iVar1 + 0x3c) = param_2;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\statbar.cpp",0x118,"wxStatusBarBase::SetEllipsizedFlag",
                 "(unsigned)number < m_panes.size()","invalid status bar field index");
  }
  return;
}



undefined4 * __thiscall FUN_00932e20(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd905b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  param_1_00[1] = param_2;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  param_1_00[9] = 0;
  local_4 = 0;
  FUN_00853ce0(0);
  *(undefined *)(param_1_00 + 0xf) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00932ea0(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd908b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00853f30(DAT_0323f878 ^ (uint)&stack0xffffffec);
  _free(*(void **)(param_1 + 0x24));
  if (7 < *(uint *)(param_1 + 0x20)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
  }
  *(undefined4 *)(param_1 + 0x20) = 7;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(undefined2 *)(param_1 + 0xc) = 0;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00932f20(int param_1_00,uint param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  
  if (*(uint *)(param_1_00 + 4) <= param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\statbar.cpp",0x71,"wxStatusBarPaneArray::RemoveAt",
                   "uiIndex < size()",L"bad index in wxStatusBarPaneArray::RemoveAt()");
    }
    return;
  }
  uVar3 = 0;
  if (param_2 != 0) {
    iVar2 = param_1 * 4;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar3 + param_1))
      {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1_00 + 8) + iVar2);
      if (iVar1 != 0) {
        FUN_00932ea0();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar3 = uVar3 + 1;
      iVar2 = iVar2 + 4;
    } while (uVar3 < param_2);
  }
  iVar1 = *(int *)(param_1_00 + 8);
  iVar2 = iVar1 + param_1 * 4;
  FUN_0086a1e0(iVar2 - iVar1 >> 2,(int)(((param_1 + param_2) * 4 - iVar2) + iVar1) >> 2);
  return;
}



undefined4 __thiscall FUN_00932ff0(int param_1_00,int param_1)

{
  int iVar1;
  
  if (*(int *)(param_1 + 0x14) == *(int *)(param_1_00 + 0x1c)) {
    iVar1 = FUN_00850760(param_1_00 + 8);
    if (iVar1 == 0) {
      return 0;
    }
  }
  if ((*(int *)(param_1_00 + 0x30) != 0) &&
     (*(int *)(param_1_00 + 0x34) + -0x24 + *(int *)(param_1_00 + 0x30) * 0x24 != param_1)) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  if (param_1_00 + 8 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  return 1;
}



void __fastcall FUN_00933060(int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = *(uint *)(param_1 + 4);
  if (uVar2 != 0) {
    uVar3 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar2 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1 + 8) + uVar3 * 4);
      if (iVar1 != 0) {
        FUN_00932ea0();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar2 = *(uint *)(param_1 + 4);
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  return;
}



undefined4 * __thiscall FUN_009330d0(undefined4 *param_1_00,undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bca18b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = *param_1;
  param_1_00[1] = param_1[1];
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  FID_conflict_assign(param_1 + 2,0,0xffffffff);
  param_1_00[9] = 0;
  local_4 = 0;
  FUN_00855400(param_1 + 0xb);
  *(undefined *)(param_1_00 + 0xf) = *(undefined *)(param_1 + 0xf);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00933170(int *param_1_00,undefined4 param_1,uint param_2)

{
  char cVar1;
  
  if (param_2 < (uint)param_1_00[0x66]) {
    FUN_009cde80(param_2);
    cVar1 = FUN_00932ff0(param_1);
    if (cVar1 != '\0') {
      (**(code **)(*param_1_00 + 0x374))(param_2);
      return;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\statbar.cpp",0x107,"wxStatusBarBase::SetStatusText",
                 "(unsigned)number < m_panes.size()","invalid status bar field index");
  }
  return;
}



int __thiscall FUN_009331e0(int param_1_00,int param_1,uint param_2)

{
  int iVar1;
  
  if (param_2 < *(uint *)(param_1_00 + 0x198)) {
    iVar1 = param_1;
    FUN_009cde80(param_2);
    FUN_009ef800(iVar1);
    return param_1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\statbar.cpp",0x110,"wxStatusBarBase::GetStatusText",
                 "(unsigned)number < m_panes.size()","invalid status bar field index");
  }
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



void FUN_00933260(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00933060(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_0086a880();
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009332c0(int param_1_00,undefined4 param_1,uint param_2)

{
  int iVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce226;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    pvVar2 = operator_new(0x40);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = FUN_009330d0(param_1);
    }
    iVar1 = *(int *)(param_1_00 + 4);
    local_4 = 0xffffffff;
    if (iVar3 != 0) {
      FUN_0086a0a0(iVar3,iVar1 * 4 >> 2,param_2);
    }
    uVar5 = 1;
    if (1 < param_2) {
      iVar3 = iVar1 * 4;
      do {
        iVar3 = iVar3 + 4;
        pvVar2 = operator_new(0x40);
        local_4 = 1;
        if (pvVar2 == (void *)0x0) {
          uVar4 = 0;
        }
        else {
          uVar4 = FUN_009330d0(param_1);
        }
        local_4 = 0xffffffff;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar5 + iVar1))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 *)(*(int *)(param_1_00 + 8) + iVar3) = uVar4;
        uVar5 = uVar5 + 1;
      } while (uVar5 < param_2);
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_009333f0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0168;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044ced6(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxStatusBarBase::vftable;
  FUN_0086a600();
  *(undefined *)(param_1 + 0x68) = 1;
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00933450(undefined4 *param_1)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  undefined **ppuVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd90f6;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *param_1 = wxStatusBarBase::vftable;
  piVar1 = (int *)param_1[0x11];
  local_4 = 1;
  if (piVar1 == (int *)0x0) goto LAB_009334e9;
  ppuVar4 = (undefined **)(**(code **)*piVar1)(uVar3);
  if (ppuVar4 != &PTR_u_wxFrame_03239cfc) {
    if (ppuVar4[3] != (undefined *)0x0) {
      cVar2 = FUN_0048a047(&PTR_u_wxFrame_03239cfc);
      if (cVar2 != '\0') goto LAB_009334cb;
    }
    if (ppuVar4[4] == (undefined *)0x0) goto LAB_009334e9;
    cVar2 = FUN_0048a047(&PTR_u_wxFrame_03239cfc);
    if (cVar2 == '\0') goto LAB_009334e9;
  }
LAB_009334cb:
  puVar5 = (undefined4 *)(**(code **)(*piVar1 + 0x3a8))();
  if (puVar5 == param_1) {
    (**(code **)(*piVar1 + 0x3ac))(0);
  }
LAB_009334e9:
  local_4 = local_4 & 0xffffff00;
  FUN_00933260();
  local_4 = 0xffffffff;
  FUN_0044cd6b();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00933520(int *param_1_00,uint param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 local_54;
  undefined local_50 [64];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9128;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_54;
  ExceptionList = &local_c;
  local_54 = param_2;
  if ((int)param_1 < 1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\statbar.cpp",0x8c,"wxStatusBarBase::SetFieldsCount",
                   "number > 0",L"invalid field number in SetFieldsCount",
                   DAT_0323f878 ^ (uint)&stack0xffffff9c);
    }
  }
  else {
    uVar1 = param_1_00[0x66];
    if (uVar1 < param_1) {
      FUN_00932e20(0,0);
      local_4 = 0;
      if ((uint)param_1_00[0x66] < param_1) {
        iVar2 = param_1 - param_1_00[0x66];
        do {
          FUN_009332c0(local_50,1);
          iVar2 = iVar2 + -1;
        } while (iVar2 != 0);
      }
      local_4 = 0xffffffff;
      FUN_00932ea0();
    }
    else if (param_1 < uVar1) {
      FUN_00932f20(param_1,uVar1 - param_1);
    }
    (**(code **)(*param_1_00 + 0x35c))(param_1,local_54);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00933630(undefined4 param_1_00,byte param_1)

{
  FUN_00933450();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined * FUN_00933650(void)

{
  return &DAT_0323a370;
}



void FUN_00933660(void)

{
  uint uVar1;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  if (DAT_032bffa8 == 0) {
    local_10 = operator_new(0x14);
    local_4 = 0;
    if (local_10 != (void *)0x0) {
      DAT_032bffa8 = FUN_009b1e30(uVar1);
      ExceptionList = local_c;
      return;
    }
    DAT_032bffa8 = 0;
  }
  ExceptionList = local_c;
  return;
}



undefined ** FUN_009336e0(void)

{
  return &PTR_u_wxClipboardModule_0323a388;
}



void FUN_009336f0(void)

{
  if (DAT_032bffa8 != (int *)0x0) {
    (**(code **)(*DAT_032bffa8 + 4))(1);
    DAT_032bffa8 = (int *)0x0;
  }
  return;
}



void FUN_00933710(int param_1,int param_2,int param_3)

{
  undefined2 *puVar1;
  int iVar2;
  
  puVar1 = (undefined2 *)operator_new(param_2 * 2);
  if (param_3 != 0) {
    iVar2 = param_1 - (int)puVar1;
    do {
      if (puVar1 != (undefined2 *)0x0) {
        *puVar1 = *(undefined2 *)(iVar2 + (int)puVar1);
      }
      puVar1 = puVar1 + 1;
      param_3 = param_3 + -1;
    } while (param_3 != 0);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



undefined4 * FUN_00933760(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxClipboardModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __thiscall FUN_009337c0(uint *param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  
  if (param_1_00[1] < param_1) {
    uVar2 = *param_1_00;
    if (uVar2 == 0) {
      uVar1 = 0x10;
    }
    else {
      uVar1 = uVar2;
      if (0xfff < uVar2) {
        uVar1 = 0x1000;
      }
    }
    uVar1 = uVar1 + param_1_00[1];
    if (param_1 < uVar1) {
      param_1 = uVar1;
    }
    uVar2 = FUN_00933710(param_1_00[2],param_1 * 2,uVar2);
    param_1_00[2] = uVar2;
    param_1_00[1] = param_1;
  }
  return;
}



undefined4 * FUN_00933820(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x34);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bd44c);
    *puVar1 = wxClipboardEvent::vftable;
    puVar1[10] = 0;
    puVar1[0xb] = 0;
    puVar1[0xc] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_009338b0(undefined4 param_1_00,int *param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be860b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x34);
  local_4 = 0;
  if (puVar2 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    FUN_00845a20(0,DAT_032bffac);
    *puVar2 = wxClipboardEvent::vftable;
    puVar2[10] = 0;
    puVar2[0xb] = 0;
    puVar2[0xc] = 0;
    puVar3 = puVar2;
  }
  puVar3[2] = param_1_00;
  local_4 = 0xffffffff;
  (**(code **)(*param_1 + 0x1c))(puVar3,uVar1);
  ExceptionList = puVar2;
  return 1;
}



void __thiscall FUN_00933940(uint *param_1_00,int *param_1)

{
  undefined2 *puVar1;
  uint uVar2;
  undefined2 *puVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  
  FUN_009337c0(*param_1);
  puVar3 = (undefined2 *)param_1[2];
  if (puVar3 != puVar3 + *param_1) {
    do {
      uVar6 = *param_1_00;
      uVar4 = uVar6 + 1;
      if (param_1_00[1] < uVar4) {
        if (uVar6 == 0) {
          uVar2 = 0x10;
        }
        else {
          uVar2 = uVar6;
          if (0xfff < uVar6) {
            uVar2 = 0x1000;
          }
        }
        uVar2 = uVar2 + param_1_00[1];
        if (uVar4 < uVar2) {
          uVar4 = uVar2;
        }
        uVar2 = param_1_00[2];
        puVar3 = (undefined2 *)operator_new(uVar4 * 4);
        if (uVar6 != 0) {
          iVar5 = uVar2 - (int)puVar3;
          do {
            if (puVar3 != (undefined2 *)0x0) {
              *puVar3 = *(undefined2 *)(iVar5 + (int)puVar3);
            }
            puVar3 = puVar3 + 1;
            uVar6 = uVar6 - 1;
          } while (uVar6 != 0);
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uVar2);
      }
      puVar1 = (undefined2 *)(param_1_00[2] + *param_1_00 * 2);
      if (puVar1 != (undefined2 *)0x0) {
        *puVar1 = *puVar3;
      }
      *param_1_00 = *param_1_00 + 1;
      puVar3 = puVar3 + 1;
    } while (puVar3 != (undefined2 *)(param_1[2] + *param_1 * 2));
  }
  return;
}



void __fastcall FUN_00933a30(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x30));
}



undefined4 * __thiscall FUN_00933a70(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2968;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00845a60(param_1);
  *param_1_00 = wxClipboardEvent::vftable;
  local_4 = 0;
  param_1_00[10] = 0;
  param_1_00[0xb] = 0;
  param_1_00[0xc] = 0;
  FUN_00933940(param_1 + 0x28);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_00933ae0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x34);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00933a70(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_00933b50(undefined4 *param_1)

{
  *param_1 = wxDataObjectBase::vftable;
  return;
}



undefined4 * __thiscall FUN_00933b60(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxDataObjectBase::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __fastcall FUN_00933b80(int *param_1)

{
  int iVar1;
  
  iVar1 = (**(code **)(*param_1 + 0x38))();
  return iVar1 * 2;
}



bool __thiscall FUN_00933ba0(int *param_1_00,void *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  uint uVar2;
  short *psVar3;
  void *pvVar4;
  void *unaff_ESI;
  uint uVar5;
  bool bVar6;
  void *local_c;
  short *psStack_8;
  undefined4 uStack_4;
  
  uVar1 = param_2;
  uStack_4 = 0xffffffff;
  psStack_8 = (short *)&LAB_00bd915b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = (**(code **)(*param_1_00 + 8))(param_2,DAT_0323f878 ^ (uint)&stack0xffffffe4);
  if (uVar2 == 1) {
    psVar3 = (short *)(**(code **)(*param_1_00 + 4))(&param_1,uVar1);
    bVar6 = *psStack_8 == *psVar3;
  }
  else {
    pvVar4 = (void *)FUN_00823c23(-(uint)((int)((ulonglong)uVar2 * 2 >> 0x20) != 0) |
                                  (uint)((ulonglong)uVar2 * 2));
    psStack_8 = (short *)0x0;
    param_1 = pvVar4;
    if (pvVar4 == (void *)0x0) {
      pvVar4 = (void *)0x0;
    }
    else {
      _vector_constructor_iterator_(pvVar4,2,uVar2,(_func_void_ptr_void_ptr *)&LAB_00933b90);
    }
    psStack_8 = (short *)0xffffffff;
    (**(code **)(*param_1_00 + 0xc))(pvVar4,uVar1);
    uVar5 = 0;
    if (uVar2 != 0) {
      do {
        if (*(short *)((int)pvVar4 + uVar5 * 2) == *psStack_8) break;
        uVar5 = uVar5 + 1;
      } while (uVar5 < uVar2);
    }
    FUN_00a3f66c(pvVar4);
    bVar6 = uVar5 < uVar2;
  }
  ExceptionList = unaff_ESI;
  return bVar6;
}



undefined4 __fastcall FUN_00933c90(int *param_1)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  int unaff_ESI;
  void *unaff_retaddr;
  char cStack_38;
  undefined4 local_30 [5];
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bd9190;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(*param_1 + 0x3c))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffbc);
  uStack_8 = (undefined *)0x0;
  piVar2 = (int *)FUN_00432231(&stack0xffffffc0);
  iVar4 = *piVar2;
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
  if (*(uint *)(iVar4 + 0x18) < 8) {
    iVar4 = iVar4 + 4;
  }
  else {
    iVar4 = *(int *)(iVar4 + 4);
  }
  iVar1 = piVar2[1];
  iVar3 = (**(code **)(*param_1 + 0x38))();
  _memcpy(unaff_retaddr,(void *)(iVar4 + iVar1 * 2),iVar3 * 2);
  if ((cStack_38 != '\0') && (unaff_ESI != 0)) {
    _free(*(void **)(unaff_ESI + 0x1c));
    if (7 < *(uint *)(unaff_ESI + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 4));
    }
    *(undefined4 *)(unaff_ESI + 0x18) = 7;
    *(undefined4 *)(unaff_ESI + 0x14) = 0;
    *(undefined2 *)(unaff_ESI + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI);
  }
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  ExceptionList = pvStack_10;
  return 1;
}



undefined4 __thiscall FUN_00933d90(int *param_1_00,uint param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 local_30;
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  uVar2 = FUN_00852140(param_2,param_1 >> 1);
  local_4 = 0;
  (**(code **)(*param_1_00 + 0x40))(uVar2,uVar1);
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = pvStack_10;
  return 1;
}



undefined4 FUN_00933e20(int *param_1,undefined4 param_2,int **param_3)

{
  char cVar1;
  
  FUN_009b29d0(0xd56a28,param_2);
  cVar1 = FUN_009b2860(param_2,&PTR_DAT_0323a3a4,2);
  if (cVar1 != '\0') {
    *param_3 = param_1;
    (**(code **)(*param_1 + 4))(param_1);
    return 0;
  }
  *param_3 = (int *)0x0;
  return 0x80004002;
}



undefined4 FUN_00933e70(int param_1)

{
  FUN_009b2b80(0xd56a28,*(undefined4 *)(param_1 + 4));
  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
  return *(undefined4 *)(param_1 + 4);
}



int FUN_00933e90(int *param_1)

{
  int *piVar1;
  
  FUN_009b2cf0(0xd56a28,param_1[1]);
  piVar1 = param_1 + 1;
  *piVar1 = *piVar1 + -1;
  if (*piVar1 == 0) {
    (**(code **)(*param_1 + 0x1c))(1);
    return 0;
  }
  return param_1[1];
}



undefined4 FUN_00933ed0(int *param_1,undefined4 param_2,int **param_3)

{
  char cVar1;
  
  FUN_009b29d0(L"wxIDataObject",param_2);
  cVar1 = FUN_009b2860(param_2,&PTR_DAT_0323a3ac,2);
  if (cVar1 != '\0') {
    *param_3 = param_1;
    (**(code **)(*param_1 + 4))(param_1);
    return 0;
  }
  *param_3 = (int *)0x0;
  return 0x80004002;
}



undefined4 FUN_00933f20(int param_1)

{
  FUN_009b2b80(L"wxIDataObject",*(undefined4 *)(param_1 + 4));
  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
  return *(undefined4 *)(param_1 + 4);
}



int FUN_00933f40(int *param_1)

{
  int *piVar1;
  
  FUN_009b2cf0(L"wxIDataObject",param_1[1]);
  piVar1 = param_1 + 1;
  *piVar1 = *piVar1 + -1;
  if (*piVar1 == 0) {
    (**(code **)(*param_1 + 0x30))(1);
    return 0;
  }
  return param_1[1];
}



void __fastcall FUN_00933fa0(undefined4 *param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd91b8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxDataObject::vftable;
  piVar1 = (int *)param_1[1];
  local_4 = 0;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 8))(piVar1,uVar2);
  }
  local_4 = 0xffffffff;
  FUN_00933b50();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00934010(int param_1)

{
  *(undefined *)(*(int *)(param_1 + 4) + 0xc) = 1;
  (**(code **)(**(int **)(param_1 + 4) + 8))(*(int **)(param_1 + 4));
  *(undefined4 *)(param_1 + 4) = 0;
  return;
}



int __thiscall FUN_00934030(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1_00 + 0x1c))(param_1);
  return (-(uint)(cVar1 != '\0') & 0xfffffffc) + 4;
}



int __thiscall FUN_00934050(int *param_1_00,int param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1_00 + 0x1c))(param_3);
  if (cVar1 == '\0') {
    *(int *)param_1 = param_1;
    return param_1 + 4;
  }
  return param_1;
}



undefined4 * __thiscall FUN_00934080(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxIDataObject::vftable;
  if ((*(char *)(param_1_00 + 3) != '\0') && ((undefined4 *)param_1_00[2] != (undefined4 *)0x0)) {
    (***(code ***)(undefined4 *)param_1_00[2])(1);
  }
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_009340c0(undefined4 *param_1)

{
  uint uVar1;
  int *piVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd91b8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1 = wxDataObject::vftable;
  piVar2 = (int *)operator_new(0x10);
  if (piVar2 == (int *)0x0) {
    piVar2 = (int *)0x0;
  }
  else {
    *piVar2 = (int)wxIDataObject::vftable;
    piVar2[1] = 0;
    piVar2[2] = (int)param_1;
    *(undefined *)(piVar2 + 3) = 0;
  }
  param_1[1] = piVar2;
  (**(code **)(*piVar2 + 4))(piVar2,uVar1);
  ExceptionList = param_1;
  return param_1;
}



undefined4 __thiscall FUN_00934140(undefined4 param_1_00,byte param_1)

{
  FUN_00933fa0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00934160(undefined4 *param_1_00,int param_1,uint param_2)

{
  undefined4 uVar1;
  uint uVar2;
  
  *param_1_00 = wxIEnumFORMATETC::vftable;
  param_1_00[1] = 0;
  param_1_00[4] = 0;
  param_1_00[3] = param_2;
  uVar1 = FUN_00823c23(-(uint)((int)((ulonglong)param_2 * 2 >> 0x20) != 0) |
                       (uint)((ulonglong)param_2 * 2));
  param_1_00[2] = uVar1;
  uVar2 = 0;
  if (param_2 != 0) {
    do {
      *(undefined2 *)(param_1_00[2] + uVar2 * 2) = *(undefined2 *)(param_1 + uVar2 * 2);
      uVar2 = uVar2 + 1;
    } while (uVar2 < param_2);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009341d0(undefined4 *param_1,byte param_2)

{
  *param_1 = wxIEnumFORMATETC::vftable;
  FUN_00a3f66c(param_1[2]);
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



wchar_t * FUN_00934200(uint param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined auStack_24 [2];
  undefined2 uStack_22;
  undefined auStack_20 [20];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd91e8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)auStack_24;
  switch(param_1 & 0xffff) {
  case 1:
    return L"CF_TEXT";
  case 2:
    return L"CF_BITMAP";
  case 3:
    return L"CF_METAFILEPICT";
  case 4:
    return L"CF_SYLK";
  case 5:
    return L"CF_DIF";
  case 6:
    return L"CF_TIFF";
  case 7:
    return L"CF_OEMTEXT";
  case 8:
    return L"CF_DIB";
  case 9:
    return L"CF_PALETTE";
  case 10:
    return L"CF_PENDATA";
  case 0xb:
    return L"CF_RIFF";
  case 0xc:
    return L"CF_WAVE";
  case 0xd:
    return L"CF_UNICODETEXT";
  case 0xe:
    return L"CF_ENHMETAFILE";
  case 0xf:
    return L"CF_HDROP";
  case 0x10:
    return L"CF_LOCALE";
  }
  ExceptionList = &local_c;
  iVar2 = GetClipboardFormatNameW(param_1 & 0xffff,(LPWSTR)&DAT_032bffb8,0x100);
  if (iVar2 == 0) {
    FUN_0081c0f1(L"unknown CF (0x%04x)");
    uStack_4 = 0;
    FUN_0086f710(param_1,auStack_20,1);
    uVar3 = FUN_008854f0(uVar1);
    FUN_00893120(&DAT_032bffb8,uVar3,uStack_22);
    uStack_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  ExceptionList = local_c;
  return (wchar_t *)&DAT_032bffb8;
}



wchar_t * FUN_00934450(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 unaff_ESI;
  undefined4 local_24;
  undefined local_20 [20];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd91e8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_24;
  switch(unaff_ESI) {
  case 1:
    return L"TYMED_HGLOBAL";
  case 2:
    return L"TYMED_FILE";
  default:
    ExceptionList = &local_c;
    FUN_0081c0f1(L"type of media format %ld (unknown)");
    local_4 = 0;
    FUN_00840d00(unaff_ESI,local_20,1);
    uVar2 = FUN_008854f0(uVar1);
    FUN_00893120(&DAT_032c01b8,uVar2,local_24);
    local_4 = 0xffffffff;
    FUN_0081b5bc();
    ExceptionList = local_c;
    return (wchar_t *)&DAT_032c01b8;
  case 4:
    return L"TYMED_ISTREAM";
  case 8:
    return L"TYMED_ISTORAGE";
  case 0x10:
    return L"TYMED_GDI";
  case 0x20:
    return L"TYMED_MFPICT";
  case 0x40:
    return L"TYMED_ENHMF";
  }
}



LPCVOID FUN_009345f0(LPCVOID param_1,SIZE_T *param_2)

{
  char cVar1;
  HANDLE hHeap;
  SIZE_T SVar2;
  DWORD dwFlags;
  LPCVOID lpMem;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  dwFlags = 0;
  lpMem = param_1;
  hHeap = GetProcessHeap();
  SVar2 = HeapSize(hHeap,dwFlags,lpMem);
  if (SVar2 == 0xffffffff) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      FUN_00843700();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    ExceptionList = local_c;
    return (LPCVOID)0x0;
  }
  *param_2 = SVar2;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall
FUN_00934720(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_00843020(param_3,param_2,1);
  uVar1 = FUN_008854f0(param_2);
  FUN_0084d410(param_1_00,param_1,uVar1);
  return;
}



void __thiscall
FUN_00934760(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  
  FUN_0083e8f0(param_4,param_2,2);
  FUN_0083e8f0(param_3,param_2,1);
  uVar1 = FUN_008854f0(param_4,param_2);
  FUN_0084d410(param_1_00,param_1,uVar1);
  return;
}



bool FUN_009347b0(int param_1,uint param_2,undefined4 *param_3,uint *param_4)

{
  undefined2 uVar1;
  char cVar2;
  uint uVar3;
  uint local_98;
  undefined4 local_94;
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd922b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar2 = FUN_00846b30(7);
  if (cVar2 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    local_4._0_1_ = 1;
    FUN_008423d0();
    local_4._0_1_ = 2;
    FUN_008854f0();
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    _free(local_64);
    if (7 < local_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  local_98 = 0;
  uVar3 = 0;
  if (*(uint *)(param_1 + 0x10) < *(uint *)(param_1 + 0xc)) {
    do {
      uVar3 = local_98;
      if (param_2 <= local_98) break;
      uVar1 = *(undefined2 *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0x10) * 2);
      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
      local_94 = CONCAT22(local_94._2_2_,uVar1);
      *param_3 = local_94;
      param_3[1] = 0;
      param_3[2] = 1;
      param_3[3] = 0xffffffff;
      param_3[4] = 1;
      uVar3 = local_98 + 1;
      param_3 = param_3 + 5;
      local_98 = uVar3;
    } while (*(uint *)(param_1 + 0x10) < *(uint *)(param_1 + 0xc));
  }
  if (param_4 != (uint *)0x0) {
    *param_4 = uVar3;
  }
  ExceptionList = local_c;
  return uVar3 != param_2;
}



bool FUN_00934970(int param_1,int param_2)

{
  uint uVar1;
  char cVar2;
  bool bVar3;
  uint local_7c;
  void *local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd926b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar2 = FUN_00846b30(7);
  if (cVar2 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    local_4._0_1_ = 1;
    FUN_008423d0();
    local_4._0_1_ = 2;
    FUN_008854f0();
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    _free(local_78);
    if (7 < local_7c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + param_2;
  uVar1 = *(uint *)(param_1 + 0x10);
  bVar3 = *(uint *)(param_1 + 0xc) <= uVar1;
  if (bVar3) {
    *(uint *)(param_1 + 0x10) = uVar1 - param_2;
  }
  ExceptionList = local_c;
  return bVar3;
}



undefined4 FUN_00934ad0(int param_1)

{
  char cVar1;
  uint local_7c;
  void *local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd926b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 == '\0') {
    *(undefined4 *)(param_1 + 0x10) = 0;
  }
  else {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    local_4._0_1_ = 1;
    FUN_008423d0();
    local_4._0_1_ = 2;
    FUN_008854f0();
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    _free(local_78);
    if (7 < local_7c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = 0xffffffff;
    FUN_0081b5bc();
    *(undefined4 *)(param_1 + 0x10) = 0;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_00934c30(int **param_1)

{
  char cVar1;
  void *pvVar2;
  int *piVar3;
  int iVar4;
  int *piVar5;
  uint local_7c;
  void *local_78;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd92b9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    local_4._0_1_ = 1;
    FUN_008423d0();
    local_4._0_1_ = 2;
    FUN_008854f0();
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    _free(local_78);
    if (7 < local_7c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  pvVar2 = operator_new(0x14);
  local_4 = 3;
  if (pvVar2 == (void *)0x0) {
    piVar3 = (int *)0x0;
  }
  else {
    piVar3 = (int *)FUN_00934160();
  }
  piVar3[3] = (int)param_1[3];
  local_4 = 0xffffffff;
  iVar4 = FUN_00823c23();
  piVar3[2] = iVar4;
  piVar5 = (int *)0x0;
  if (param_1[3] != (int *)0x0) {
    do {
      *(undefined2 *)(piVar3[2] + (int)piVar5 * 2) =
           *(undefined2 *)((int)param_1[2] + (int)piVar5 * 2);
      piVar5 = (int *)((int)piVar5 + 1);
    } while (piVar5 < param_1[3]);
  }
  (**(code **)(*piVar3 + 4))();
  *param_1 = piVar3;
  ExceptionList = pvStack_10;
  return 0;
}



int FUN_00934e10(int *param_1,short *param_2)

{
  short sVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  HGLOBAL pvVar5;
  uint local_1a8;
  void *local_1a4;
  void *pvStack_14;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9340;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211();
  cVar2 = FUN_00846b30();
  if (cVar2 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    local_4._0_1_ = 1;
    FUN_008423d0();
    local_4._0_1_ = 2;
    FUN_008854f0();
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    _free(local_1a4);
    if (7 < local_1a8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  iVar3 = (**(code **)(*param_1 + 0x14))();
  if (iVar3 < 0) {
    ExceptionList = pvStack_14;
    return iVar3;
  }
  sVar1 = *param_2;
  if (sVar1 == 2) {
    *param_1 = 0x10;
  }
  else if (sVar1 == 3) {
    pvVar5 = GlobalAlloc(0x2002,0x10);
    param_1[1] = (int)pvVar5;
    if (pvVar5 == (HGLOBAL)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 != '\0') {
        FUN_0081c0f1();
        local_c = (void *)0x3;
        FUN_008423d0();
        local_c._0_1_ = 4;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_c = (void *)CONCAT31(local_c._1_3_,3);
        FUN_00842440();
        local_c = (void *)0xffffffff;
        FUN_0081b5bc();
      }
      ExceptionList = pvStack_14;
      return -0x7ff8fff2;
    }
    *param_1 = 0x20;
  }
  else if (sVar1 == 0xe) {
    *param_1 = 0x40;
  }
  else {
    iVar3 = (**(code **)(*(int *)param_1[2] + 0x10))();
    if (iVar3 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 != '\0') {
        FUN_0081c0f1();
        local_c = (void *)0x5;
        FUN_008423d0();
        local_c._0_1_ = 6;
        FUN_00840b80();
        local_c = (void *)CONCAT31(local_c._1_3_,5);
        FUN_00842440();
        local_c = (void *)0xffffffff;
        FUN_0081b5bc();
      }
      ExceptionList = pvStack_14;
      return -0x7ffbff9c;
    }
    iVar4 = (**(code **)(*(int *)param_1[2] + 0x28))();
    pvVar5 = GlobalAlloc(0x2002,iVar3 + iVar4);
    if (pvVar5 == (HGLOBAL)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 != '\0') {
        FUN_0081c0f1();
        local_c = (void *)0x7;
        FUN_008423d0();
        local_c._0_1_ = 8;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_c = (void *)CONCAT31(local_c._1_3_,7);
        FUN_00842440();
        local_c = (void *)0xffffffff;
        FUN_0081b5bc();
      }
      ExceptionList = pvStack_14;
      return -0x7ff8fff2;
    }
    *param_1 = 1;
    param_1[1] = (int)pvVar5;
  }
  param_1[2] = 0;
  iVar3 = (**(code **)(*param_1 + 0x10))();
  if (iVar3 < 0) {
    if ((*(byte *)param_1 & 0x21) != 0) {
      GlobalFree((HGLOBAL)param_1[1]);
    }
  }
  else {
    iVar3 = 0;
  }
  ExceptionList = pvStack_14;
  return iVar3;
}



undefined4 FUN_00935290(int param_1,undefined4 param_2,undefined4 *param_3)

{
  HGLOBAL hMem;
  int iVar1;
  char cVar2;
  undefined4 uVar3;
  LPVOID pvVar4;
  int *piVar5;
  uint local_e0;
  void *local_dc;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd93a4;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar2 = FUN_00846b30(7);
  if (cVar2 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    local_4._0_1_ = 1;
    FUN_008423d0();
    local_4._0_1_ = 2;
    FUN_008854f0();
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    _free(local_dc);
    if (7 < local_e0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  switch(*param_3) {
  case 1:
  case 0x20:
    hMem = (HGLOBAL)param_3[1];
    pvVar4 = GlobalLock(hMem);
    if (pvVar4 == (LPVOID)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 != '\0') {
        FUN_0081c0f1();
        local_4 = 3;
        FUN_008423d0();
        local_4._0_1_ = 4;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_4 = CONCAT31(local_4._1_3_,3);
        FUN_00842440();
        local_4 = 0xffffffff;
        FUN_0081b5bc();
      }
      ExceptionList = local_c;
      return 0x8007000e;
    }
    iVar1 = **(int **)(param_1 + 8);
    GlobalSize(hMem);
    (**(code **)(iVar1 + 0x24))();
    cVar2 = (**(code **)(**(int **)(param_1 + 8) + 0x14))();
    if (cVar2 == '\0') goto LAB_009353f9;
    GlobalUnlock(hMem);
    goto LAB_0093554e;
  default:
    ExceptionList = local_c;
    return 0x80040069;
  case 0x10:
    piVar5 = *(int **)(param_1 + 8);
    break;
  case 0x40:
    piVar5 = *(int **)(param_1 + 8);
  }
  cVar2 = (**(code **)(*piVar5 + 0x14))();
  if (cVar2 == '\0') {
LAB_009353f9:
    uVar3 = 0x8000ffff;
  }
  else {
LAB_0093554e:
    uVar3 = 0;
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 FUN_009355d0(int param_1,undefined2 *param_2,LPSTGMEDIUM param_3,int param_4)

{
  char *pcVar1;
  short *psVar2;
  short sVar3;
  DWORD DVar4;
  char cVar5;
  undefined4 uVar6;
  short *psVar7;
  int iVar8;
  undefined auStack_13c [8];
  undefined4 uStack_134;
  undefined *puStack_130;
  char *pcStack_12c;
  char *pcStack_128;
  wchar_t *pwStack_124;
  char *pcStack_120;
  undefined2 local_108 [2];
  int iStack_104;
  undefined2 local_100;
  undefined2 local_fe;
  undefined *local_fc;
  undefined local_f8 [4];
  uint local_f4;
  undefined4 local_e4;
  uint local_e0;
  void *local_dc;
  undefined auStack_c0 [180];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd93a4;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_fc = auStack_13c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar5 = FUN_00846b30(7);
  if (cVar5 != '\0') {
    pcStack_120 = (char *)0x93562f;
    FUN_0081c0f1();
    local_4 = 0;
    pcStack_120 = (char *)0x935646;
    FUN_004325b6();
    pcStack_120 = "wxIDataObject::SetData";
    pwStack_124 = (wchar_t *)0x1a1;
    pcStack_128 = "..\\..\\src\\msw\\ole\\dataobj.cpp";
    pcStack_12c = (char *)0x7;
    local_4._0_1_ = 1;
    puStack_130 = (undefined *)0x935671;
    uVar6 = FUN_008423d0();
    local_4._0_1_ = 2;
    FUN_008854f0();
    pcStack_120 = local_f8;
    pcStack_128 = (char *)0x935690;
    pwStack_124 = (wchar_t *)uVar6;
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    pcStack_120 = (char *)0x9356ad;
    _free(local_dc);
    if (7 < local_e0) {
                    // WARNING: Subroutine does not return
      pcStack_120 = &UNK_009356c1;
      FUN_00a3f6a1();
    }
    local_e0 = 7;
    local_e4 = 0;
    local_f4 = local_f4 & 0xffff0000;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  switch(param_3->tymed) {
  case 1:
  case 0x20:
    local_108[0] = *param_2;
    pcStack_120 = (char *)local_108;
    pwStack_124 = L"삄ੵ撸Ѐ\xe980Ǐ";
    cVar5 = FUN_00933ba0();
    if (cVar5 == '\0') {
      ExceptionList = local_c;
      return 0x80040064;
    }
    pcStack_120 = (char *)0x9357a2;
    psVar7 = (short *)GlobalLock((param_3->u).hGlobal);
    if (psVar7 == (short *)0x0) {
      local_fc = auStack_13c;
      FUN_0043c211(&DAT_00d25fa0);
      cVar5 = FUN_00846b30(6);
      if (cVar5 != '\0') {
        pcStack_120 = (char *)0x9357e1;
        FUN_0081c0f1();
        pcStack_120 = "wxIDataObject::SetData";
        pwStack_124 = (wchar_t *)0x1c1;
        pcStack_128 = "..\\..\\src\\msw\\ole\\dataobj.cpp";
        pcStack_12c = (char *)0x6;
        local_4 = 3;
        puStack_130 = (undefined *)0x93580f;
        FUN_008423d0();
        local_4._0_1_ = 4;
        GetLastError();
        pcStack_120 = (char *)0x935824;
        FUN_00843700();
        pcStack_120 = (char *)0x93582d;
        pcStack_120 = (char *)GetLastError();
        pwStack_124 = L"GlobalLock";
        pcStack_128 = (char *)0x1c1;
        pcStack_12c = "..\\..\\src\\msw\\ole\\dataobj.cpp";
        puStack_130 = auStack_c0;
        uStack_134 = 0x935849;
        FUN_00847d90();
        local_4 = CONCAT31(local_4._1_3_,3);
        FUN_00842440();
        local_4 = 0xffffffff;
        FUN_0081b5bc();
      }
      ExceptionList = local_c;
      return 0x8007000e;
    }
    switch(local_108[0]) {
    case 1:
    case 7:
      pcVar1 = (char *)((int)psVar7 + 1);
      do {
        cVar5 = *(char *)psVar7;
        psVar7 = (short *)((int)psVar7 + 1);
      } while (cVar5 != '\0');
      iStack_104 = (int)psVar7 - (int)pcVar1;
      break;
    case 2:
    case 8:
    case 0xf:
      iStack_104 = 0;
      break;
    case 3:
      iStack_104 = 0x10;
      break;
    default:
      pcStack_120 = (char *)&iStack_104;
      pcStack_128 = (char *)0x9358ec;
      pwStack_124 = psVar7;
      (**(code **)(**(int **)(param_1 + 8) + 0x20))();
      pcStack_128 = &stack0xfffffeec;
      pcStack_12c = (char *)0x9358fd;
      iVar8 = (**(code **)(**(int **)(param_1 + 8) + 0x28))();
      iStack_104 = iStack_104 - iVar8;
      break;
    case 0xd:
      psVar2 = psVar7 + 1;
      do {
        sVar3 = *psVar7;
        psVar7 = psVar7 + 1;
      } while (sVar3 != 0);
      iStack_104 = ((int)psVar7 - (int)psVar2 >> 1) * 2;
    }
    pcStack_120 = (char *)iStack_104;
    pwStack_124 = local_108;
    pcStack_128 = (char *)0x935916;
    cVar5 = (**(code **)(**(int **)(param_1 + 8) + 0x18))();
    pcStack_120 = (char *)0x935921;
    GlobalUnlock((param_3->u).hGlobal);
    if (cVar5 == '\0') {
      ExceptionList = local_c;
      return 0x8000ffff;
    }
    break;
  default:
    ExceptionList = local_c;
    return 0x80040069;
  case 0x10:
    local_100 = 2;
    pcStack_120 = (char *)0x0;
    pwStack_124 = &local_100;
    pcStack_128 = (char *)0x935732;
    (**(code **)(**(int **)(param_1 + 8) + 0x18))();
    break;
  case 0x40:
    local_fe = 0xe;
    pcStack_120 = (char *)0x0;
    pwStack_124 = &local_fe;
    pcStack_128 = (char *)0x93575d;
    (**(code **)(**(int **)(param_1 + 8) + 0x18))();
  }
  if (param_4 != 0) {
    DVar4 = param_3->tymed;
    if (((DVar4 == 0x10) || (DVar4 == 0x20)) || (DVar4 == 0x40)) {
      (param_3->u).hBitmap = (HBITMAP)0x0;
    }
    pcStack_120 = (char *)0x93595b;
    ReleaseStgMedium(param_3);
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_00935a00(undefined4 param_1,undefined2 *param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined auStack_15c [12];
  undefined4 uStack_150;
  undefined4 uStack_14c;
  char *pcStack_148;
  undefined *puStack_144;
  char *pcStack_140;
  undefined4 local_124;
  undefined *local_120;
  undefined4 local_11c [5];
  undefined local_108 [4];
  uint local_104;
  undefined4 local_f4;
  uint local_f0;
  void *local_ec;
  undefined local_e4 [100];
  undefined local_80 [116];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9490;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 == (undefined2 *)0x0) {
    local_124 = auStack_15c;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(7);
    if (cVar1 != '\0') {
      pcStack_140 = (char *)0x935a71;
      FUN_0081c0f1();
      local_4 = 0;
      pcStack_140 = (char *)0x935a86;
      FUN_004325b6();
      pcStack_140 = "wxIDataObject::QueryGetData";
      puStack_144 = (undefined *)0x221;
      pcStack_148 = "..\\..\\src\\msw\\ole\\dataobj.cpp";
      uStack_14c = 7;
      local_4._0_1_ = 1;
      uStack_150 = 0x935aad;
      uVar2 = FUN_008423d0();
      local_4._0_1_ = 2;
      FUN_008854f0();
      pcStack_140 = local_108;
      pcStack_148 = (char *)0x935acc;
      puStack_144 = (undefined *)uVar2;
      FUN_0084d410();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_00842440();
      pcStack_140 = (char *)0x935aea;
      _free(local_ec);
      if (7 < local_f0) {
                    // WARNING: Subroutine does not return
        pcStack_140 = &UNK_00935afe;
        FUN_00a3f6a1();
      }
      local_f0 = 7;
      local_f4 = 0;
      local_104 = local_104 & 0xffff0000;
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    uVar2 = 0x80070057;
  }
  else if (*(int *)(param_2 + 6) == -1) {
    if (*(int *)(param_2 + 4) == 1) {
      pcStack_140 = (char *)&local_124;
      local_124 = (undefined *)CONCAT22(local_124._2_2_,*param_2);
      puStack_144 = (undefined *)0x935cee;
      cVar1 = FUN_00933ba0();
      local_120 = auStack_15c;
      if (cVar1 == '\0') {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(7);
        if (cVar1 != '\0') {
          pcStack_140 = (char *)0x935ef6;
          FUN_0081c0f1();
          local_4 = 0xc;
          pcStack_140 = (char *)0x935f0f;
          FUN_004325b6();
          pcStack_140 = "wxIDataObject::QueryGetData";
          puStack_144 = (undefined *)0x240;
          pcStack_148 = "..\\..\\src\\msw\\ole\\dataobj.cpp";
          uStack_14c = 7;
          local_4._0_1_ = 0xd;
          uStack_150 = 0x935f37;
          FUN_008423d0();
          local_4._0_1_ = 0xe;
          pcStack_140 = (char *)0x935f4b;
          FUN_00934200();
          pcStack_140 = (char *)local_11c;
          puStack_144 = local_108;
          pcStack_148 = (char *)0x935f60;
          FUN_00898a30();
          local_4 = CONCAT31(local_4._1_3_,0xd);
          FUN_00842440();
          FUN_0040159c();
          local_4 = 0xffffffff;
          FUN_0081b5bc();
        }
        uVar2 = 0x80040064;
      }
      else {
        local_120 = auStack_15c;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(7);
        if (cVar1 != '\0') {
          pcStack_140 = (char *)0x935d29;
          FUN_0081c0f1();
          local_4 = 9;
          pcStack_140 = (char *)0x935d42;
          FUN_004325b6();
          pcStack_140 = "wxIDataObject::QueryGetData";
          puStack_144 = (undefined *)0x23c;
          pcStack_148 = "..\\..\\src\\msw\\ole\\dataobj.cpp";
          uStack_14c = 7;
          local_4._0_1_ = 10;
          uStack_150 = 0x935d6a;
          FUN_008423d0();
          local_4._0_1_ = 0xb;
          pcStack_140 = (char *)0x935d7e;
          FUN_00934200();
          pcStack_140 = (char *)local_11c;
          puStack_144 = local_108;
          pcStack_148 = (char *)0x935d93;
          FUN_00898a30();
          local_4 = CONCAT31(local_4._1_3_,10);
          FUN_00842440();
          FUN_0040159c();
          local_4 = 0xffffffff;
          FUN_0081b5bc();
        }
        if (((short)local_124 == 2) && ((*(uint *)(param_2 + 8) & 0x11) == 0)) {
          local_120 = auStack_15c;
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(7);
          if (cVar1 != '\0') {
            pcStack_140 = (char *)0x935e0b;
            FUN_0081c0f1();
            local_4 = 0xf;
            pcStack_140 = (char *)0x935e27;
            FUN_004325b6();
            pcStack_140 = "wxIDataObject::QueryGetData";
            puStack_144 = (undefined *)0x24c;
            pcStack_148 = "..\\..\\src\\msw\\ole\\dataobj.cpp";
            uStack_14c = 7;
            local_4._0_1_ = 0x10;
            uStack_150 = 0x935e51;
            FUN_008423d0();
            local_4._0_1_ = 0x11;
            FUN_00934450();
            pcStack_140 = (char *)0x935e7b;
            pcStack_140 = (char *)FUN_00934450();
            puStack_144 = local_e4;
            pcStack_148 = local_80;
            uStack_14c = 0x935e90;
            FUN_00934760();
            local_4 = CONCAT31(local_4._1_3_,0x10);
            FUN_00842440();
            FUN_0040159c();
            local_4 = 0xffffffff;
            FUN_0081b5bc();
          }
          uVar2 = 0x80040069;
        }
        else {
          uVar2 = 0;
        }
      }
    }
    else {
      local_124 = auStack_15c;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(7);
      if (cVar1 != '\0') {
        pcStack_140 = (char *)0x935c3f;
        FUN_0081c0f1();
        local_4 = 6;
        pcStack_140 = (char *)0x935c58;
        FUN_004325b6();
        pcStack_140 = "wxIDataObject::QueryGetData";
        puStack_144 = (undefined *)0x232;
        pcStack_148 = "..\\..\\src\\msw\\ole\\dataobj.cpp";
        uStack_14c = 7;
        local_4._0_1_ = 7;
        uStack_150 = 0x935c7f;
        FUN_008423d0();
        pcStack_140 = (char *)local_11c;
        puStack_144 = local_108;
        local_4._0_1_ = 8;
        pcStack_148 = (char *)0x935c9c;
        FUN_008b16f0();
        local_4 = CONCAT31(local_4._1_3_,7);
        FUN_00842440();
        FUN_0040159c();
        local_4 = 0xffffffff;
        FUN_0081b5bc();
      }
      uVar2 = 0x8004006b;
    }
  }
  else {
    local_124 = auStack_15c;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(7);
    if (cVar1 != '\0') {
      pcStack_140 = (char *)0x935b71;
      FUN_0081c0f1();
      local_4 = 3;
      pcStack_140 = (char *)0x935b8a;
      FUN_004325b6();
      pcStack_140 = "wxIDataObject::QueryGetData";
      puStack_144 = (undefined *)0x229;
      pcStack_148 = "..\\..\\src\\msw\\ole\\dataobj.cpp";
      uStack_14c = 7;
      local_4._0_1_ = 4;
      uStack_150 = 0x935bb2;
      FUN_008423d0();
      pcStack_140 = (char *)local_11c;
      puStack_144 = local_108;
      local_4._0_1_ = 5;
      pcStack_148 = (char *)0x935bcf;
      FUN_00934720();
      local_4 = CONCAT31(local_4._1_3_,4);
      FUN_00842440();
      FUN_0040159c();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    uVar2 = 0x80040068;
  }
  ExceptionList = local_c;
  return uVar2;
}



undefined4 FUN_00935fb0(undefined4 param_1,undefined4 param_2,int param_3)

{
  char cVar1;
  uint local_7c;
  void *local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd926b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    local_4._0_1_ = 1;
    FUN_008423d0();
    local_4._0_1_ = 2;
    FUN_008854f0();
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    _free(local_78);
    if (7 < local_7c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  if (param_3 != 0) {
    *(undefined4 *)(param_3 + 4) = 0;
  }
  ExceptionList = local_c;
  return 0x40130;
}



undefined4 FUN_00936100(int param_1)

{
  char cVar1;
  int iVar2;
  uint *puVar3;
  void *pvVar4;
  int *piVar5;
  int unaff_retaddr;
  uint uStack_ac;
  uint local_7c;
  void *local_78;
  void *pvStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = (int **)0xffffffff;
  puStack_8 = &LAB_00bd94f7;
  local_c = ExceptionList;
  uStack_ac = DAT_0323f878 ^ (uint)&stack0xffffff58;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    FUN_0081c0f1();
    local_4 = (int **)0x0;
    FUN_004325b6();
    local_4._0_1_ = 1;
    FUN_008423d0();
    local_4._0_1_ = 2;
    FUN_008854f0();
    FUN_0084d410();
    local_4 = (int **)CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    _free(local_78);
    if (7 < local_7c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = (int **)0xffffffff;
    FUN_0081b5bc();
  }
  iVar2 = (**(code **)(**(int **)(param_1 + 8) + 8))();
  if (iVar2 == 1) {
    puVar3 = (uint *)&stack0xffffff60;
  }
  else {
    puVar3 = (uint *)FUN_00823c23();
    puStack_8 = (undefined *)0x3;
    if (puVar3 == (uint *)0x0) {
      puVar3 = (uint *)0x0;
    }
    else {
      _vector_constructor_iterator_(puVar3,2,iVar2,(_func_void_ptr_void_ptr *)&LAB_00933b90);
    }
    puStack_8 = (undefined *)0xffffffff;
  }
  (**(code **)(**(int **)(unaff_retaddr + 8) + 0xc))();
  pvVar4 = operator_new(0x14);
  if (pvVar4 == (void *)0x0) {
    piVar5 = (int *)0x0;
  }
  else {
    piVar5 = (int *)FUN_00934160();
  }
  (**(code **)(*piVar5 + 4))();
  *local_4 = piVar5;
  if (puVar3 != &uStack_ac) {
    FUN_00a3f66c();
  }
  ExceptionList = pvStack_1c;
  return 0;
}



undefined ** FUN_00936330(void)

{
  return &PTR_u_wxControl_0323a444;
}



undefined __thiscall
FUN_00936340(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  
  cVar1 = FUN_00917f80(param_1,param_2,param_3,param_4,param_5,param_7);
  if (cVar1 == '\0') {
    return 0;
  }
  (**(code **)(*param_1_00 + 0x130))(param_6);
  return 1;
}



uint __thiscall FUN_00936390(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  
  uVar2 = FUN_00914a80(param_1,param_2);
  cVar1 = (**(code **)(*param_1_00 + 0x114))();
  if (cVar1 != '\0') {
    uVar2 = uVar2 | 0x10000;
  }
  return uVar2;
}



void thunk_FUN_0091c170(void)

{
  FUN_00845dc0();
  return;
}



int __thiscall FUN_009363f0(int *param_1_00,uint param_1)

{
  int iVar1;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[1] <= param_1)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0x1e5,
                 "wxArrayStringsAdapter::operator []","i < GetCount()",L"index out of bounds");
  }
  if (*param_1_00 == 1) {
    return param_1_00[2] + param_1 * 0x24;
  }
  iVar1 = param_1_00[2];
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar1 + 4) <= param_1)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                 "nIndex < m_nCount",L"wxArrayString: index out of bounds");
  }
  return *(int *)(iVar1 + 8) + param_1 * 0x24;
}



undefined4 * __thiscall FUN_00936480(int param_1_00,undefined4 *param_1)

{
  if (*(int *)(param_1_00 + 0xd4) != 0) {
    FUN_0091da70(param_1);
    return param_1;
  }
  *param_1 = 100;
  param_1[1] = 0x50;
  return param_1;
}



void __thiscall FUN_00936520(int *param_1,HDC param_2)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x188))();
  if (cVar1 != '\0') {
    SetBkMode(param_2,1);
  }
  FUN_00453f4b();
  (**(code **)(*param_1 + 0x354))(param_2);
  return;
}



void __thiscall FUN_00936570(int *param_1_00,undefined4 param_1)

{
  undefined auStack_20 [20];
  int iStack_c;
  
  iStack_c = param_1_00[0x4f];
  FUN_008ff080(auStack_20,0xf);
  (**(code **)(*param_1_00 + 0x354))(param_1);
  return;
}



int __thiscall
FUN_009365b0(int param_1_00,HDC param_1,undefined **param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined param_6,undefined4 param_7)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  undefined4 *puVar7;
  int local_24;
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd9540;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_24 = 0;
  if ((char)param_5 == '\0') {
    iVar1 = FUN_0090f7c0(param_7,DAT_0323f878 ^ (uint)&stack0xffffffcc);
    if (iVar1 == 0) {
LAB_0093660f:
      if ((*(byte *)(param_1_00 + 0xdc) & 0x20) != 0) {
        uVar2 = FUN_0091de40(local_20);
        local_4._0_1_ = 1;
        FUN_004722cb(uVar2);
        local_4 = (uint)local_4._1_3_ << 8;
        local_20[0] = wxObject::vftable;
        FUN_0083e850();
      }
    }
    else {
      local_24 = FUN_00910100(param_1);
      if (local_24 == 0) goto LAB_0093660f;
    }
    if ((char)param_5 != '\0') goto LAB_00936650;
  }
  else {
LAB_00936650:
    piVar3 = (int *)FUN_008f7980(&param_2,100);
    local_24 = (**(code **)(*piVar3 + 0x20))();
  }
  if (local_24 != 0) {
    piVar3 = (int *)FUN_0091df90(local_20);
    local_4._0_1_ = 2;
    uVar4 = (**(code **)(*piVar3 + 0x18))();
    uVar5 = (**(code **)(*piVar3 + 0x14))();
    uVar6 = (**(code **)(*piVar3 + 0x10))();
    SetTextColor(param_1,uVar6 & 0xff | (uVar5 & 0xff | (uVar4 & 0xff) << 8) << 8);
    local_4 = (uint)local_4._1_3_ << 8;
    local_20[0] = wxObject::vftable;
    FUN_0083e850();
  }
  if ((char)param_5 == '\0') {
    if ((*(byte *)(param_1_00 + 0xdc) & 0x10) == 0) goto LAB_00936797;
    puVar7 = (undefined4 *)FUN_0091de40(local_20);
    local_4._0_1_ = 3;
    if (&param_2 != (undefined ***)puVar7) {
      FUN_0083ea60(puVar7);
    }
    param_4 = puVar7[2];
    param_5._0_1_ = *(char *)(puVar7 + 3);
    param_5._1_1_ = *(undefined *)((int)puVar7 + 0xd);
    param_5._2_1_ = *(undefined *)((int)puVar7 + 0xe);
    param_5._3_1_ = *(undefined *)((int)puVar7 + 0xf);
    param_6 = *(undefined *)(puVar7 + 4);
    local_4 = (uint)local_4._1_3_ << 8;
    local_20[0] = wxObject::vftable;
    FUN_0083e850();
  }
  uVar4 = (**(code **)((int)param_2 + 0x18))();
  uVar5 = (**(code **)((int)param_2 + 0x14))();
  uVar6 = (**(code **)((int)param_2 + 0x10))();
  SetBkColor(param_1,uVar6 & 0xff | (uVar5 & 0xff | (uVar4 & 0xff) << 8) << 8);
LAB_00936797:
  local_4 = 0xffffffff;
  param_2 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return local_24;
}



int FUN_009367d0(int param_1)

{
  int iVar1;
  undefined local_28 [8];
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd9591;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0091d230(DAT_0323f878 ^ (uint)&stack0xffffffc4);
  local_4 = 0;
  iVar1 = FUN_008ff360(local_28,0x11);
  local_4 = 1;
  if (param_1 != iVar1) {
    FUN_0083ea60(iVar1);
  }
  local_4 = local_4 & 0xffffff00;
  FUN_00921450();
  iVar1 = FUN_008ff080(local_20,0x12);
  local_4 = 2;
  if (param_1 + 8 != iVar1) {
    FUN_0083ea60(iVar1);
  }
  *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(iVar1 + 8);
  *(undefined *)(param_1 + 0x14) = *(undefined *)(iVar1 + 0xc);
  *(undefined *)(param_1 + 0x15) = *(undefined *)(iVar1 + 0xd);
  *(undefined *)(param_1 + 0x16) = *(undefined *)(iVar1 + 0xe);
  *(undefined *)(param_1 + 0x17) = *(undefined *)(iVar1 + 0xf);
  *(undefined *)(param_1 + 0x18) = *(undefined *)(iVar1 + 0x10);
  local_4 = local_4 & 0xffffff00;
  local_20[0] = wxObject::vftable;
  FUN_0083e850();
  iVar1 = FUN_008ff080(local_20,0xf);
  local_4 = 3;
  if (param_1 + 0x1c != iVar1) {
    FUN_0083ea60(iVar1);
  }
  *(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(iVar1 + 8);
  *(undefined *)(param_1 + 0x28) = *(undefined *)(iVar1 + 0xc);
  *(undefined *)(param_1 + 0x29) = *(undefined *)(iVar1 + 0xd);
  *(undefined *)(param_1 + 0x2a) = *(undefined *)(iVar1 + 0xe);
  *(undefined *)(param_1 + 0x2b) = *(undefined *)(iVar1 + 0xf);
  *(undefined *)(param_1 + 0x2c) = *(undefined *)(iVar1 + 0x10);
  local_4 = local_4 & 0xffffff00;
  local_20[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00936930(int param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined **local_6c [2];
  int local_64;
  undefined4 local_60;
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  void *local_28;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8ac8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  switch(*(undefined4 *)(param_2 + 8)) {
  case 0xfffffff8:
    uVar2 = DAT_032bff84;
    break;
  case 0xfffffff9:
    uVar2 = DAT_032bff80;
    break;
  case 0xfffffffa:
    uVar2 = DAT_032bff7c;
    break;
  case 0xfffffffb:
    uVar2 = DAT_032bff78;
    break;
  case 0xfffffffc:
    uVar2 = DAT_032bff88;
    break;
  case 0xfffffffd:
    uVar2 = DAT_032bff74;
    break;
  case 0xfffffffe:
    uVar2 = DAT_032bff70;
    break;
  default:
    FUN_00914d00(param_1,param_2,param_3);
    goto LAB_00936a54;
  }
  FUN_0092bd60(DAT_032bd44c,*(undefined4 *)(param_1_00 + 0x40));
  local_4 = 0;
  local_64 = param_1_00;
  local_60 = uVar2;
  FUN_0091c170(local_6c);
  local_4 = 0xffffffff;
  _free(local_28);
  if (7 < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40);
  }
  local_40 = local_40 & 0xffff0000;
  local_2c = 7;
  local_30 = 0;
  local_6c[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
LAB_00936a54:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4
FUN_00936a90(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined4 uVar1;
  undefined4 local_8;
  
  FUN_00840d00(param_5,param_2,3);
  FUN_00840d00(param_4,param_2,2);
  FUN_0083e8f0(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,0,local_8,param_2);
  return param_1;
}



undefined4 __thiscall
FUN_00936b00(int *param_1_00,undefined4 param_1,int *param_2,uint *param_3,int *param_4,
            undefined4 param_5,int param_6)

{
  HMENU hMenu;
  LPCWSTR pWVar1;
  DWORD DVar2;
  char cVar3;
  char cVar4;
  HINSTANCE hInstance;
  HWND pHVar5;
  int iVar6;
  int unaff_EBX;
  int unaff_ESI;
  int *piVar7;
  LPVOID lpParam;
  int iStack_c8;
  int local_c4;
  undefined auStack_c0 [4];
  uint local_bc;
  uint local_b8;
  undefined auStack_ac [148];
  void *pvStack_18;
  undefined uStack_14;
  undefined4 uStack_10;
  void *local_c;
  LPCWSTR pWStack_8;
  DWORD DStack_4;
  
  DStack_4 = 0xffffffff;
  pWStack_8 = 
  L"咋ࠤ芍Ｐ\xffff誋Ｌ\xffff젳⳨\xe65b룿쁔̏糩\xe687쳿쳌쳌䶋菰ࣁ燩艿诿\xf04d솃\xe930罦ﾂ咋ࠤ䊍诸\xf44a젳\xf6e8\xe65a룿새̏䛩\xe687쳿쳌쳌쳌쳌쳌쳌쳌䶍\xe9d0缴ﾂ䶍\xe988缬ﾂ䶍\xe9ac缤ﾂ咋ࠤ䊍讄聊젳듨\xe65a룿섄̏ө\xe687쳿쳌쳌쳌쳌쳌쳌䖋莤Ǡ萏\f"
  ;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_6 == -1) {
    (**(code **)(*param_1_00 + 0xe8))();
    (**(code **)(*param_1_00 + 0x2c8))();
  }
  piVar7 = (int *)((uint)param_2 | 0x40000000);
  if ((*(byte *)(param_1_00 + 0x37) & 2) != 0) {
    piVar7 = (int *)((uint)param_2 | 0x50000000);
  }
  param_2 = piVar7;
  local_bc = -(uint)(*param_3 != 0xffffffff) & *param_3;
  local_b8 = -(uint)(param_3[1] != 0xffffffff) & param_3[1];
  local_c4 = 1;
  if (*param_4 != -1) {
    local_c4 = *param_4;
  }
  (**(code **)(*param_1_00 + 0x2a8))();
  hMenu = (HMENU)param_1_00[0x10];
  pHVar5 = *(HWND *)(param_1_00[0x11] + 0x13c);
  if ((uint)param_2[6] < 8) {
    piVar7 = param_2 + 1;
  }
  else {
    piVar7 = (int *)param_2[1];
  }
  lpParam = (LPVOID)0x0;
  hInstance = (HINSTANCE)FUN_008a65e0();
  DVar2 = DStack_4;
  pWVar1 = pWStack_8;
  pHVar5 = CreateWindowExW((DWORD)param_3,pWStack_8,(LPCWSTR)piVar7,DStack_4,iStack_c8,local_c4,
                           unaff_EBX,unaff_ESI,pHVar5,hMenu,hInstance,lpParam);
  param_1_00[0x4f] = (int)pHVar5;
  if (pHVar5 == (HWND)0x0) {
    FUN_0043c211();
    cVar3 = FUN_00846b30();
    if (cVar3 != '\0') {
      FUN_0081c0f1();
      uStack_10 = 0;
      FUN_0081c0f1();
      uStack_10._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00936a90(&stack0xfffffee8,auStack_c0,pWVar1,DVar2,param_3);
      uStack_10._0_1_ = 2;
      FUN_008423d0(6,"..\\..\\src\\msw\\control.cpp",0x96,"wxControl::MSWCreateControl",
                   &DAT_00d25fa0);
      uStack_10._0_1_ = 4;
      FUN_008fa740(auStack_ac,"..\\..\\src\\msw\\control.cpp",0x96);
      uStack_10._0_1_ = 1;
      FUN_00842440();
      uStack_10 = (uint)uStack_10._1_3_ << 8;
      FUN_0081b5bc();
      uStack_10 = 0xffffffff;
      FUN_0081b5bc();
    }
    ExceptionList = pvStack_18;
    return 0;
  }
  if (param_1_00 + 0x59 != param_2) {
    FID_conflict_assign();
  }
  FUN_00914900();
  (**(code **)(*param_1_00 + 0x224))();
  if ((*(byte *)(param_1_00 + 0x37) & 0x40) != 0) goto LAB_00936eb8;
  iVar6 = (**(code **)(*param_1_00 + 0x178))();
  if (*(int *)(iVar6 + 4) != 0) {
    piVar7 = (int *)(*(int *)(iVar6 + 4) + 4);
    *piVar7 = *piVar7 + 1;
  }
  uStack_10 = 5;
  FUN_0043d9c0();
  cVar3 = FUN_0083e950();
  cVar4 = FUN_0083e950();
  if ((((uint)param_1_00 & -(uint)(cVar4 != '\0')) == 0) &&
     (((uint)param_1_00 & -(uint)(cVar3 != '\0')) == 0)) {
LAB_00936e67:
    (**(code **)(*param_1_00 + 0x178))();
    uStack_14 = 7;
    (**(code **)(*param_1_00 + 0x18c))();
    uStack_10 = CONCAT31(uStack_10._1_3_,5);
    FUN_0043d9c0();
  }
  else {
    FUN_008ff360();
    uStack_10._0_1_ = 6;
    cVar3 = FUN_0094a5b0();
    uStack_10 = CONCAT31(uStack_10._1_3_,5);
    FUN_00921450();
    if (cVar3 != '\0') goto LAB_00936e67;
  }
  uStack_10 = 0xffffffff;
  FUN_00921450();
LAB_00936eb8:
  FUN_0091b600();
  ExceptionList = pvStack_18;
  return 1;
}



// WARNING: Removing unreachable block (ram,0x00937082)
// WARNING: Removing unreachable block (ram,0x0093705c)

void __thiscall FUN_00936ef0(int *param_1_00,int param_1,UINT param_2)

{
  char cVar1;
  int iVar2;
  HWND hWnd;
  LRESULT LVar3;
  uint uVar4;
  uint uVar5;
  uint wParam;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbb50;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  wParam = *(uint *)(param_1 + 4);
  uVar5 = 0;
  uVar4 = wParam;
  if (wParam != 0) {
    do {
      iVar2 = FUN_009363f0();
      uVar4 = uVar4 + *(int *)(iVar2 + 0x14);
      uVar5 = uVar5 + 1;
    } while (uVar5 < wParam);
  }
  iVar2 = uVar4 * 2;
  hWnd = (HWND)(**(code **)(*param_1_00 + 0x358))();
  LVar3 = SendMessageW(hWnd,param_2,wParam,iVar2);
  if (LVar3 == -2) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      __time64((__time64_t *)0x0);
      GetCurrentThreadId();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      _free((void *)0x0);
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



LRESULT __thiscall FUN_009370c0(int *param_1_00,WPARAM param_1,int param_2,UINT param_3)

{
  char cVar1;
  HWND hWnd;
  LRESULT LVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(uint *)(param_2 + 0x18) < 8) {
    param_2 = param_2 + 4;
  }
  else {
    param_2 = *(int *)(param_2 + 4);
  }
  hWnd = (HWND)(**(code **)(*param_1_00 + 0x358))();
  LVar2 = SendMessageW(hWnd,param_3,param_1,param_2);
  if ((LVar2 == -1) || (LVar2 == -2)) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    LVar2 = -1;
  }
  ExceptionList = local_c;
  return LVar2;
}



void __thiscall FUN_00937200(int *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 unaff_retaddr;
  int **ppiVar2;
  int *piStack_4;
  
  piStack_4 = param_1;
  uVar1 = (**(code **)(*param_1 + 0xe8))();
  ppiVar2 = &piStack_4;
  uVar1 = (**(code **)(*param_1 + 0x2c8))(uVar1,ppiVar2);
  FUN_00936b00(piStack_4,uVar1,param_2,param_3,unaff_retaddr,ppiVar2);
  return;
}



undefined4 __thiscall
FUN_00937250(undefined4 param_1_00,int *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  
  if (param_1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\ctrlcmn.cpp",0x53,"wxControlBase::CreateControl","parent",
                   L"all controls must have parents");
    }
  }
  else {
    cVar1 = FUN_0091b100(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
    if (cVar1 != '\0') {
      (**(code **)(*param_1 + 0x124))(param_1_00);
      return 1;
    }
  }
  return 0;
}



void FUN_009372d0(undefined4 param_1)

{
  FUN_0091a950();
  FUN_0090eb40(param_1);
  return;
}



int __fastcall FUN_009372f0(int param_1)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1 + 4) - 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 4) <= uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                 "uiIndex < m_nCount",0);
  }
  return *(int *)(param_1 + 8) + uVar1 * 4;
}



void __thiscall FUN_00937340(int *param_1_00,int param_1)

{
  undefined4 uVar1;
  
  *(int **)(param_1 + 8) = param_1_00;
  if (param_1_00[0xf] == 1) {
    uVar1 = (**(code **)(*param_1_00 + 0x44))();
    *(undefined4 *)(param_1 + 0x58) = uVar1;
  }
  else if (param_1_00[0xf] == 2) {
    uVar1 = (**(code **)(*param_1_00 + 0x4c))();
    *(undefined4 *)(param_1 + 0x54) = uVar1;
    return;
  }
  return;
}



bool __fastcall FUN_00937380(int param_1)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1 + 100) - 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 100) <= uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                 "uiIndex < m_nCount",0);
  }
  return *(int *)(*(int *)(param_1 + 0x68) + uVar1 * 4) <= *(int *)(param_1 + 0x58);
}



int * __thiscall FUN_009373d0(int *param_1_00,int *param_1)

{
  code *pcVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int *local_14;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bea178;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  pcVar1 = *(code **)(*param_1_00 + 0x360);
  *param_1 = 0;
  param_1[1] = 0;
  (*pcVar1)(&local_14,uVar3);
  puStack_8 = (undefined *)0x0;
  if (local_14 != (int *)0x0) {
    cVar2 = (**(code **)(*local_14 + 4))();
    if (cVar2 != '\0') {
      if (local_14 == (int *)0x0) {
        iVar5 = 0;
        iVar4 = 0;
      }
      else {
        iVar5 = local_14[3];
        iVar4 = local_14[2];
      }
      goto LAB_0093744f;
    }
  }
  iVar4 = 0x10;
  iVar5 = 0x10;
LAB_0093744f:
  param_1[1] = iVar5;
  param_1_00[0x4d] = iVar5;
  *param_1 = iVar4;
  param_1_00[0x4c] = iVar4;
  puStack_8 = (undefined *)0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_10;
  return param_1;
}



int FUN_00937490(int param_1)

{
  int iVar1;
  undefined local_28 [8];
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd9591;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0091d230(DAT_0323f878 ^ (uint)&stack0xffffffc4);
  local_4 = 0;
  iVar1 = FUN_008ff360(local_28,0x11);
  local_4 = 1;
  if (param_1 != iVar1) {
    FUN_0083ea60(iVar1);
  }
  local_4 = local_4 & 0xffffff00;
  FUN_00921450();
  iVar1 = FUN_008ff080(local_20,8);
  local_4 = 2;
  if (param_1 + 8 != iVar1) {
    FUN_0083ea60(iVar1);
  }
  *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(iVar1 + 8);
  *(undefined *)(param_1 + 0x14) = *(undefined *)(iVar1 + 0xc);
  *(undefined *)(param_1 + 0x15) = *(undefined *)(iVar1 + 0xd);
  *(undefined *)(param_1 + 0x16) = *(undefined *)(iVar1 + 0xe);
  *(undefined *)(param_1 + 0x17) = *(undefined *)(iVar1 + 0xf);
  *(undefined *)(param_1 + 0x18) = *(undefined *)(iVar1 + 0x10);
  local_4 = local_4 & 0xffffff00;
  local_20[0] = wxObject::vftable;
  FUN_0083e850();
  iVar1 = FUN_008ff080(local_20,5);
  local_4 = 3;
  if (param_1 + 0x1c != iVar1) {
    FUN_0083ea60(iVar1);
  }
  *(undefined4 *)(param_1 + 0x24) = *(undefined4 *)(iVar1 + 8);
  *(undefined *)(param_1 + 0x28) = *(undefined *)(iVar1 + 0xc);
  *(undefined *)(param_1 + 0x29) = *(undefined *)(iVar1 + 0xd);
  *(undefined *)(param_1 + 0x2a) = *(undefined *)(iVar1 + 0xe);
  *(undefined *)(param_1 + 0x2b) = *(undefined *)(iVar1 + 0xf);
  *(undefined *)(param_1 + 0x2c) = *(undefined *)(iVar1 + 0x10);
  local_4 = local_4 & 0xffffff00;
  local_20[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_009375f0(undefined4 *param_1)

{
  *param_1 = wxControlBase::vftable;
  _free((void *)param_1[0x60]);
  if (7 < (uint)param_1[0x5f]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x5a]);
  }
  param_1[0x5f] = 7;
  param_1[0x5e] = 0;
  *(undefined2 *)(param_1 + 0x5a) = 0;
  FUN_009150e0();
  return;
}



undefined4 FUN_00937650(undefined4 param_1,undefined4 param_2)

{
  FUN_008feb60(param_1,param_2,1);
  return param_1;
}



undefined4 FUN_00937680(undefined4 param_1,undefined4 param_2)

{
  FUN_009b6a70(param_1,param_2);
  return param_1;
}



void __thiscall FUN_009376b0(int *param_1_00,int param_1)

{
  undefined local_34 [4];
  undefined4 local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6f98;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  ExceptionList = &local_c;
  FUN_00937680(local_34,param_1,DAT_0323f878 ^ (uint)&stack0xffffffc4);
  local_4 = 0;
  if ((local_20 == 0) && (*(int *)(param_1 + 0x14) != 0)) {
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  else {
    (**(code **)(*param_1_00 + 0x54))(local_34);
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00937780(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd9636;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_0086aa30(DAT_0323f878 ^ (uint)&stack0xffffffec);
  _free(*(void **)(param_1 + 0x4c));
  if (7 < *(uint *)(param_1 + 0x48)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x34));
  }
  *(undefined4 *)(param_1 + 0x48) = 7;
  *(undefined4 *)(param_1 + 0x44) = 0;
  *(undefined2 *)(param_1 + 0x34) = 0;
  _free(*(void **)(param_1 + 0x24));
  if (7 < *(uint *)(param_1 + 0x20)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
  }
  *(undefined4 *)(param_1 + 0x20) = 7;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(undefined2 *)(param_1 + 0xc) = 0;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00937830(undefined4 *param_1)

{
  *param_1 = wxStaticBitmapBase::vftable;
  FUN_0044cd6b();
  return;
}



void __thiscall FUN_00937840(int *param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  bool bVar6;
  undefined auStack_78 [4];
  uint uStack_74;
  undefined4 uStack_64;
  uint uStack_60;
  void *pvStack_5c;
  undefined auStack_54 [4];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9678;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_c;
  FUN_0091c9b0(param_1);
  if (*(char *)(param_1 + 0x61) != '\0') {
    iVar3 = (**(code **)(*param_1_00 + 0x58))(local_30,uVar2);
    uStack_4 = 0;
    iVar4 = FUN_00925890(auStack_78);
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    if (*(int *)(iVar4 + 0x14) == *(int *)(iVar3 + 0x14)) {
      iVar3 = FUN_00850760(iVar3);
      bVar6 = iVar3 == 0;
    }
    else {
      bVar6 = false;
    }
    _free(pvStack_5c);
    if (7 < uStack_60) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_74);
    }
    uStack_60 = 7;
    uStack_64 = 0;
    uStack_74 = uStack_74 & 0xffff0000;
    uStack_4 = 0xffffffff;
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    if (!bVar6) {
      uVar5 = FUN_00925890(auStack_54);
      uStack_4 = 2;
      (**(code **)(*param_1_00 + 0x54))(uVar5);
      uStack_4 = 0xffffffff;
      _free(pvStack_38);
      if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_50);
      }
      uStack_3c = 7;
      uStack_40 = 0;
      uStack_50 = uStack_50 & 0xffff0000;
    }
  }
  if (*(char *)(param_1 + 0x62) != '\0') {
    cVar1 = FUN_0083e950(&PTR_u_wxRadioButton_0323b678);
    param_1_00 = (int *)(-(uint)(cVar1 != '\0') & (uint)param_1_00);
    if (param_1_00 != (int *)0x0) {
      (**(code **)(*param_1_00 + 0x358))(*(undefined *)(param_1 + 0x5c));
    }
  }
  ExceptionList = local_c;
  return;
}



int FUN_009379f0(int param_1,undefined4 param_2)

{
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd96c9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  FUN_0043c211(&DAT_00d57598);
  local_4 = 1;
  FUN_0043c211(&DAT_00d57594);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00852a70(local_54,local_30,1);
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



int FUN_00937b00(int param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  short **ppsVar3;
  int iVar4;
  int *piVar5;
  short **ppsVar6;
  int iVar7;
  short **ppsVar8;
  undefined local_8 [8];
  
  iVar2 = param_1;
  if (param_2 != 0) {
    FUN_00432156();
    FUN_0081c141(*(undefined4 *)(param_1 + 0x14));
  }
  uVar1 = *(uint *)(param_1 + 0x18);
  param_1 = -1;
  ppsVar3 = (short **)(iVar2 + 4);
  ppsVar8 = ppsVar3;
  if (7 < uVar1) {
    ppsVar8 = (short **)*ppsVar3;
  }
  if (ppsVar8 != (short **)0x0) {
    ppsVar6 = ppsVar3;
    if (7 < uVar1) {
      ppsVar6 = (short **)*ppsVar3;
    }
    if (ppsVar6 <= ppsVar8) {
      if (7 < uVar1) {
        ppsVar3 = (short **)*ppsVar3;
      }
      if (ppsVar8 <= (short **)((int)ppsVar3 + *(int *)(iVar2 + 0x14) * 2)) goto LAB_00937b70;
    }
  }
  FUN_00a3fb10();
LAB_00937b70:
  do {
    uVar1 = *(uint *)(iVar2 + 0x18);
    ppsVar3 = (short **)(iVar2 + 4);
    ppsVar6 = ppsVar3;
    if (7 < uVar1) {
      ppsVar6 = (short **)*ppsVar3;
    }
    iVar4 = *(int *)(iVar2 + 0x14) * 2;
    ppsVar6 = (short **)(iVar4 + (int)ppsVar6);
    if (ppsVar6 == (short **)0x0) {
LAB_00937bb1:
      FUN_00a3fb10();
    }
    else {
      if (7 < uVar1) {
        ppsVar3 = (short **)*ppsVar3;
      }
      if (ppsVar6 < ppsVar3) goto LAB_00937bb1;
      if (uVar1 < 8) {
        iVar7 = iVar2 + 4;
      }
      else {
        iVar7 = *(int *)(iVar2 + 4);
      }
      if ((short **)(iVar4 + iVar7) < ppsVar6) goto LAB_00937bb1;
    }
    if ((iVar2 != -4) && (iVar2 == 0)) {
      FUN_00a3fb10();
    }
    if (ppsVar8 == ppsVar6) {
      return param_1;
    }
    if (iVar2 != -4) {
      if (iVar2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar2 + 0x18) < 8) {
        iVar4 = iVar2 + 4;
      }
      else {
        iVar4 = *(int *)(iVar2 + 4);
      }
      if ((short **)(iVar4 + *(int *)(iVar2 + 0x14) * 2) <= ppsVar8) {
        FUN_00a3fb10();
      }
    }
    if (*(short *)ppsVar8 == 0x26) {
      if (iVar2 != -4) {
        if (iVar2 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar2 + 0x18) < 8) {
          iVar4 = iVar2 + 4;
        }
        else {
          iVar4 = *(int *)(iVar2 + 4);
        }
        if ((short **)(iVar4 + *(int *)(iVar2 + 0x14) * 2) <= ppsVar8) {
          FUN_00a3fb10();
        }
      }
      uVar1 = *(uint *)(iVar2 + 0x18);
      ppsVar8 = (short **)((int)ppsVar8 + 2);
      ppsVar3 = (short **)(iVar2 + 4);
      ppsVar6 = ppsVar3;
      if (7 < uVar1) {
        ppsVar6 = (short **)*ppsVar3;
      }
      iVar4 = *(int *)(iVar2 + 0x14) * 2;
      ppsVar6 = (short **)(iVar4 + (int)ppsVar6);
      if (ppsVar6 == (short **)0x0) {
LAB_00937c74:
        FUN_00a3fb10();
      }
      else {
        if (7 < uVar1) {
          ppsVar3 = (short **)*ppsVar3;
        }
        if (ppsVar6 < ppsVar3) goto LAB_00937c74;
        if (uVar1 < 8) {
          iVar7 = iVar2 + 4;
        }
        else {
          iVar7 = *(int *)(iVar2 + 4);
        }
        if ((short **)(iVar4 + iVar7) < ppsVar6) goto LAB_00937c74;
      }
      if ((iVar2 != -4) && (iVar2 == 0)) {
        FUN_00a3fb10();
      }
      if (ppsVar8 == ppsVar6) {
        return param_1;
      }
      if (iVar2 != -4) {
        if (iVar2 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar2 + 0x18) < 8) {
          iVar4 = iVar2 + 4;
        }
        else {
          iVar4 = *(int *)(iVar2 + 4);
        }
        if ((short **)(iVar4 + *(int *)(iVar2 + 0x14) * 2) <= ppsVar8) {
          FUN_00a3fb10();
        }
      }
      if (*(short *)ppsVar8 != 0x26) {
        if (param_1 == -1) {
          piVar5 = (int *)FUN_00847890(local_8);
          if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != *piVar5)))) {
            FUN_00a3fb10();
          }
          param_1 = ((int)ppsVar8 - piVar5[1] >> 1) + -1;
        }
        else if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\common\\ctrlcmn.cpp",0xcd,"wxControlBase::FindAccelIndex",
                       "Assert failure",L"duplicate accel char in control label");
        }
      }
    }
    if (param_2 != 0) {
      if (iVar2 != -4) {
        if (iVar2 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar2 + 0x18) < 8) {
          iVar4 = iVar2 + 4;
        }
        else {
          iVar4 = *(int *)(iVar2 + 4);
        }
        if ((short **)(iVar4 + *(int *)(iVar2 + 0x14) * 2) <= ppsVar8) {
          FUN_00a3fb10();
        }
      }
      FID_conflict_append(1,*(short *)ppsVar8);
    }
    if (iVar2 != -4) {
      if (iVar2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar2 + 0x18) < 8) {
        iVar4 = iVar2 + 4;
      }
      else {
        iVar4 = *(int *)(iVar2 + 4);
      }
      if ((short **)(iVar4 + *(int *)(iVar2 + 0x14) * 2) <= ppsVar8) {
        FUN_00a3fb10();
      }
    }
    ppsVar8 = (short **)((int)ppsVar8 + 2);
  } while( true );
}



undefined4 * __thiscall
FUN_00937db0(undefined4 *param_1_00,int param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  undefined uVar1;
  uint uVar2;
  void *unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd9711;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *param_1_00 = 0;
  param_1_00[1] = 0;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  param_1_00[9] = 0;
  *(undefined *)(param_1_00 + 0xb) = 1;
  param_1_00[0x12] = 7;
  param_1_00[0x11] = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 0xd) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[0x13] = 0;
  param_1_00[0x16] = param_3;
  local_4._0_1_ = 1;
  param_1_00[0x15] = param_2;
  param_1_00[0x17] = param_4;
  FUN_0086a600(uVar2);
  local_4 = CONCAT31(local_4._1_3_,2);
  uVar1 = (**(code **)(**(int **)(param_2 + 8) + 0xac))(param_1,param_1_00 + 0x18);
  *(undefined *)(param_1_00 + 0x1b) = uVar1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1_00[0x19] != *(int *)(param_1 + 0x14))) {
    FUN_008402e0("..\\..\\src\\common\\ctrlcmn.cpp",0x11b,
                 "`anonymous-namespace\'::EllipsizeCalculator::EllipsizeCalculator",
                 "m_charOffsetsPx.GetCount() == s.length()",0);
  }
  ExceptionList = unaff_EBX;
  return param_1_00;
}



uint * __fastcall FUN_00937eb0(uint *param_1)

{
  short *psVar1;
  short *psVar2;
  
  if (*(char *)(param_1 + 0xb) != '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      if (param_1[0x11] - 1 < *param_1) {
        FUN_008402e0("..\\..\\src\\common\\ctrlcmn.cpp",0x13f,
                     "`anonymous-namespace\'::EllipsizeCalculator::GetEllipsizedText",
                     "m_initialCharToRemove <= m_str.length() - 1",0);
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
         ((param_1[1] == 0 || (param_1[0x11] - *param_1 < param_1[1])))) {
        FUN_008402e0("..\\..\\src\\common\\ctrlcmn.cpp",0x140,
                     "`anonymous-namespace\'::EllipsizeCalculator::GetEllipsizedText",
                     "m_nCharsToRemove >= 1 && m_nCharsToRemove <= m_str.length() - m_initialCharToRemove"
                     ,0);
      }
    }
    if (param_1 + 2 != param_1 + 0xc) {
      FID_conflict_assign(param_1 + 0xc,0,0xffffffff);
    }
    psVar1 = &DAT_00d2e8c4;
    do {
      psVar2 = psVar1;
      psVar1 = psVar2 + 1;
    } while (*psVar2 != 0);
    FUN_00412473(*param_1,param_1[1],&DAT_00d2e8c4,(int)(psVar2 + -0x697462) >> 1);
  }
  return param_1 + 2;
}



uint __fastcall FUN_00937f70(int *param_1)

{
  int iVar1;
  int *piVar2;
  uint *puVar3;
  uint uVar4;
  undefined4 uVar5;
  int iVar6;
  undefined *puVar7;
  undefined local_8 [4];
  undefined local_4 [4];
  
  if (param_1[1] == param_1[0x11]) {
    return CONCAT31((int3)((uint)param_1[1] >> 8),1);
  }
  iVar6 = param_1[0x17];
  if (*param_1 != 0) {
    piVar2 = (int *)thunk_FUN_0048671b(*param_1 + -1);
    iVar6 = iVar6 + *piVar2;
  }
  uVar4 = param_1[1] + -1 + *param_1;
  if (uVar4 < (uint)param_1[0x11]) {
    piVar2 = (int *)thunk_FUN_0048671b(uVar4);
    iVar1 = *piVar2;
    puVar3 = (uint *)FUN_009372f0();
    uVar4 = *puVar3;
    iVar6 = (iVar6 - iVar1) + uVar4;
  }
  if (param_1[0x16] < iVar6) {
    return uVar4 & 0xffffff00;
  }
  uVar5 = FUN_00937eb0();
  puVar7 = local_4;
  (**(code **)(**(int **)(param_1[0x15] + 8) + 0xa4))(uVar5,local_8,puVar7,0,0,0);
  return (uint)((int)puVar7 <= param_1[0x16]);
}



void FUN_00938010(int param_1,int param_2,undefined4 param_3,int param_4,int param_5,int param_6)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  bool bVar4;
  bool bVar5;
  bool bVar6;
  undefined auStack_100 [3];
  char local_fd;
  int local_fc;
  undefined4 local_f8;
  uint local_f4;
  int local_f0;
  uint local_80;
  uint local_7c;
  char local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd977b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_100;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffef0;
  ExceptionList = &local_c;
  local_f8 = 0;
  local_f0 = param_1;
  local_fc = param_2;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (param_6 < 1) {
      FUN_008402e0("..\\..\\src\\common\\ctrlcmn.cpp",400,"wxControlBase::DoEllipsizeSingleLine",
                   "replacementWidthPx > 0","Invalid parameters",uVar2);
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_4 == 0)) {
      FUN_008402e0("..\\..\\src\\common\\ctrlcmn.cpp",0x194,"wxControlBase::DoEllipsizeSingleLine",
                   "mode != wxELLIPSIZE_NONE","shouldn\'t be called at all then",uVar2);
    }
  }
  if (param_5 < 1) {
    FUN_004325b6(PTR_DAT_03236318);
    goto LAB_00938428;
  }
  local_f4 = *(uint *)(param_2 + 0x14);
  if (local_f4 < 2) {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(param_2,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    goto LAB_00938428;
  }
  FUN_00937db0(param_2,param_3,param_5,param_6);
  local_4 = 1;
  if ((local_14 == '\0') || (cVar1 = FUN_00937380(), uVar2 = local_f4, cVar1 != '\0')) {
LAB_00938409:
    FUN_004325a0(param_2);
    local_f8 = 1;
  }
  else if (param_4 == 1) {
    local_80 = 0;
    local_7c = 1;
    cVar1 = FUN_00937f70();
    while (cVar1 == '\0') {
      local_7c = local_7c + 1;
      cVar1 = FUN_00937f70();
    }
    if (local_7c != local_f4) {
LAB_009383fc:
      param_2 = FUN_00937eb0();
      goto LAB_00938409;
    }
    uVar3 = FUN_004325b6(&DAT_00d2e8c4);
    local_4 = CONCAT31(local_4._1_3_,2);
    FUN_0081feb2(&local_fc,local_f4 - 1);
    FUN_00852430(param_1,uVar3,local_fc);
    local_f8 = 1;
    FUN_0040159c();
  }
  else if (param_4 == 2) {
    local_80 = local_f4 >> 1;
    local_7c = 0;
    local_fd = '\x01';
    cVar1 = FUN_00937f70();
    if (cVar1 == '\0') {
      do {
        bVar5 = local_80 != 0;
        bVar4 = uVar2 - 1 <= (local_80 - 1) + local_7c;
        if ((!bVar5) && (bVar4)) break;
        bVar6 = local_fd == '\0';
        if (bVar6) {
          local_fd = bVar5;
          if (bVar5) {
            local_80 = local_80 - 1;
            local_fd = bVar6;
          }
        }
        else {
          local_fd = bVar6;
          if (bVar4) {
            local_80 = local_80 - 1;
            local_fd = true;
          }
        }
        local_7c = local_7c + 1;
        cVar1 = FUN_00937f70();
      } while (cVar1 == '\0');
    }
    if ((local_7c != local_f4) && (local_7c != local_f4 - 1)) goto LAB_009383fc;
    uVar3 = FUN_004325b6(&DAT_00d2e8c4);
    local_4 = CONCAT31(local_4._1_3_,3);
    FUN_0081feb2(&local_fc,0);
    FUN_00853280(param_1,local_fc,uVar3);
    local_f8 = 1;
    FUN_0040159c();
  }
  else {
    if (param_4 != 3) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_008402e0("..\\..\\src\\common\\ctrlcmn.cpp",0x1fa,"wxControlBase::DoEllipsizeSingleLine"
                     ,"Assert failure","invalid ellipsize mode");
      }
      goto LAB_00938409;
    }
    local_80 = local_f4 - 1;
    local_7c = 1;
    cVar1 = FUN_00937f70();
    while (cVar1 == '\0') {
      local_80 = local_80 - 1;
      local_7c = local_7c + 1;
      cVar1 = FUN_00937f70();
    }
    if (local_7c != uVar2) goto LAB_009383fc;
    uVar3 = FUN_004325b6(&DAT_00d2e8c4);
    local_4 = CONCAT31(local_4._1_3_,4);
    FUN_0081feb2(&local_fc,0);
    FUN_00853280(param_1,local_fc,uVar3);
    local_f8 = 1;
    FUN_0040159c();
  }
  local_4 = local_4 & 0xffffff00;
  FUN_00937780();
LAB_00938428:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00938460(int param_1,int param_2,int param_3)

{
  short *psVar1;
  uint uVar2;
  short **ppsVar3;
  int *piVar4;
  int iVar5;
  short *psVar6;
  undefined *puVar7;
  int iVar8;
  short **ppsVar9;
  short **ppsVar10;
  undefined4 unaff_EBP;
  short **ppsVar11;
  byte unaff_retaddr;
  int iVar12;
  int local_84;
  int local_80;
  short **local_7c;
  undefined auStack_78 [4];
  int local_74;
  undefined4 local_70;
  undefined local_6c [12];
  uint local_60;
  void *pvStack_5c;
  undefined auStack_54 [8];
  undefined auStack_4c [4];
  undefined4 uStack_48;
  undefined4 uStack_38;
  uint uStack_34;
  void *pvStack_30;
  void *pvStack_24;
  undefined4 uStack_1c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd97e1;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_84;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff6c;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_80 = param_1;
  local_84 = param_2;
  local_74 = param_3;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  local_70 = 1;
  FUN_004325b6(&DAT_00d2e8c4);
  iVar12 = 0;
  local_4 = 1;
  (**(code **)(**(int **)(param_3 + 8) + 0xa4))(&local_60,local_6c,&local_7c,0,0,0,uVar2);
  _free(pvStack_5c);
  if (7 < local_60) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_74);
  }
  uStack_34 = 7;
  uStack_38 = 0;
  uStack_48 = (uint)uStack_48._2_2_ << 0x10;
  pvStack_30 = (void *)0x0;
  uVar2 = *(uint *)(param_2 + 0x18);
  uStack_1c = 2;
  ppsVar3 = (short **)(param_2 + 4);
  ppsVar11 = ppsVar3;
  if (7 < uVar2) {
    ppsVar11 = (short **)*ppsVar3;
  }
  iVar8 = param_2;
  if (ppsVar11 != (short **)0x0) {
    ppsVar10 = ppsVar3;
    if (7 < uVar2) {
      ppsVar10 = (short **)*ppsVar3;
    }
    if (ppsVar10 <= ppsVar11) {
      if (7 < uVar2) {
        ppsVar3 = (short **)*ppsVar3;
      }
      if (ppsVar11 <= (short **)((int)ppsVar3 + *(int *)(param_2 + 0x14) * 2)) goto LAB_00938597;
    }
  }
  FUN_00a3fb10();
LAB_00938597:
  do {
    uVar2 = *(uint *)(iVar8 + 0x18);
    ppsVar10 = (short **)(iVar12 + 4);
    ppsVar3 = ppsVar10;
    if (7 < uVar2) {
      ppsVar3 = (short **)*ppsVar10;
    }
    iVar8 = *(int *)(iVar12 + 0x14) * 2;
    ppsVar3 = (short **)((int)ppsVar3 + iVar8);
    if (ppsVar3 == (short **)0x0) {
LAB_009385e0:
      FUN_00a3fb10();
    }
    else {
      ppsVar9 = ppsVar10;
      if (7 < uVar2) {
        ppsVar9 = (short **)*ppsVar10;
      }
      if (ppsVar3 < ppsVar9) goto LAB_009385e0;
      ppsVar9 = ppsVar10;
      if (7 < uVar2) {
        ppsVar9 = (short **)*ppsVar10;
      }
      if ((short **)((int)ppsVar9 + iVar8) < ppsVar3) goto LAB_009385e0;
    }
    if ((param_2 != -4) && ((param_2 == 0 || (param_2 != iVar12)))) {
      FUN_00a3fb10();
    }
    if (ppsVar11 == ppsVar3) {
LAB_009387b3:
      puVar7 = (undefined *)FUN_00938010(auStack_78,auStack_4c,unaff_EBP,puStack_8,local_4,local_84)
      ;
      uStack_1c._0_1_ = 3;
      if (auStack_4c != puVar7) {
        FID_conflict_assign(puVar7,0,0xffffffff);
      }
      uStack_1c = CONCAT31(uStack_1c._1_3_,2);
      _free(pvStack_5c);
      if (7 < local_60) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_74);
      }
      FID_conflict_append(auStack_4c,0,0xffffffff);
      uVar2 = *(uint *)(iVar12 + 0x18);
      ppsVar3 = ppsVar10;
      if (7 < uVar2) {
        ppsVar3 = (short **)*ppsVar10;
      }
      iVar8 = *(int *)(iVar12 + 0x14) * 2;
      ppsVar3 = (short **)((int)ppsVar3 + iVar8);
      if (ppsVar3 == (short **)0x0) {
LAB_00938876:
        FUN_00a3fb10();
      }
      else {
        ppsVar9 = ppsVar10;
        if (7 < uVar2) {
          ppsVar9 = (short **)*ppsVar10;
        }
        if (ppsVar3 < ppsVar9) goto LAB_00938876;
        if (7 < uVar2) {
          ppsVar10 = (short **)*ppsVar10;
        }
        if ((short **)((int)ppsVar10 + iVar8) < ppsVar3) goto LAB_00938876;
      }
      if ((param_2 != -4) && ((param_2 == 0 || (param_2 != iVar12)))) {
        FUN_00a3fb10();
      }
      if (ppsVar11 == ppsVar3) {
        _free(pvStack_30);
        if (uStack_34 < 8) {
          ExceptionList = pvStack_24;
          ___security_check_cookie_4();
          return;
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_48);
      }
      if (param_2 != -4) {
        if (param_2 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_2 + 0x18) < 8) {
          iVar8 = param_2 + 4;
        }
        else {
          iVar8 = *(int *)(param_2 + 4);
        }
        if ((short **)(iVar8 + *(int *)(param_2 + 0x14) * 2) <= ppsVar11) {
          FUN_00a3fb10();
        }
      }
      FID_conflict_append(1,*(short *)ppsVar11);
      FUN_00432156();
    }
    else {
      if (param_2 != -4) {
        if (param_2 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_2 + 0x18) < 8) {
          iVar8 = param_2 + 4;
        }
        else {
          iVar8 = *(int *)(param_2 + 4);
        }
        if ((short **)(iVar8 + *(int *)(param_2 + 0x14) * 2) <= ppsVar11) {
          FUN_00a3fb10();
        }
      }
      if (*(short *)ppsVar11 == 10) goto LAB_009387b3;
      if (param_2 != -4) {
        if (param_2 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_2 + 0x18) < 8) {
          iVar8 = param_2 + 4;
        }
        else {
          iVar8 = *(int *)(param_2 + 4);
        }
        if ((short **)(iVar8 + *(int *)(param_2 + 0x14) * 2) <= ppsVar11) {
          FUN_00a3fb10();
        }
      }
      if ((*(short *)ppsVar11 == 0x26) && ((unaff_retaddr & 1) != 0)) {
        local_80 = param_2;
        local_7c = ppsVar11;
        piVar4 = (int *)FUN_004226c0(1);
        iVar8 = *piVar4;
        psVar1 = (short *)piVar4[1];
        piVar4 = (int *)FUN_008478e0(auStack_54);
        if ((iVar8 != -4) && ((iVar8 == 0 || (iVar8 != *piVar4)))) {
          FUN_00a3fb10();
        }
        if (psVar1 != (short *)piVar4[1]) {
          if (iVar8 != -4) {
            if (iVar8 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(iVar8 + 0x18) < 8) {
              iVar5 = iVar8 + 4;
            }
            else {
              iVar5 = *(int *)(iVar8 + 4);
            }
            if ((short *)(iVar5 + *(int *)(iVar8 + 0x14) * 2) <= psVar1) {
              FUN_00a3fb10();
            }
          }
          if (*psVar1 == 0x26) {
            FID_conflict_append(1,0x26);
          }
        }
      }
      else {
        if (param_2 != -4) {
          if (param_2 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(param_2 + 0x18) < 8) {
            iVar8 = param_2 + 4;
          }
          else {
            iVar8 = *(int *)(param_2 + 4);
          }
          if ((short **)(iVar8 + *(int *)(param_2 + 0x14) * 2) <= ppsVar11) {
            FUN_00a3fb10();
          }
        }
        if ((*(short *)ppsVar11 == 9) && ((unaff_retaddr & 2) != 0)) {
          psVar1 = &DAT_00d577e8;
          do {
            psVar6 = psVar1;
            psVar1 = psVar6 + 1;
          } while (*psVar6 != 0);
          FUN_00473ccc(&DAT_00d577e8,(int)(psVar6 + -0x6abbf4) >> 1);
        }
        else {
          if (param_2 != -4) {
            if (param_2 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(param_2 + 0x18) < 8) {
              iVar8 = param_2 + 4;
            }
            else {
              iVar8 = *(int *)(param_2 + 4);
            }
            if ((short **)(iVar8 + *(int *)(param_2 + 0x14) * 2) <= ppsVar11) {
              FUN_00a3fb10();
            }
          }
          FID_conflict_append(1,*(short *)ppsVar11);
        }
      }
    }
    if (param_2 == -4) {
LAB_0093891a:
      ppsVar11 = (short **)((int)ppsVar11 + 2);
      iVar8 = iVar12;
      goto LAB_00938597;
    }
    if (param_2 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(param_2 + 0x18) < 8) {
      iVar8 = param_2 + 4;
    }
    else {
      iVar8 = *(int *)(param_2 + 4);
    }
    if (ppsVar11 < (short **)(iVar8 + *(int *)(param_2 + 0x14) * 2)) goto LAB_0093891a;
    FUN_00a3fb10();
    ppsVar11 = (short **)((int)ppsVar11 + 2);
    iVar8 = iVar12;
  } while( true );
}



undefined __thiscall
FUN_009389b0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,
            undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  undefined uVar2;
  uint uVar3;
  int local_38;
  int local_34;
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bef238;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_38 = *param_4;
  local_34 = param_4[1];
  uVar3 = (**(code **)(*param_1_00 + 0xe8))(DAT_0323f878 ^ (uint)&stack0xffffffbc);
  if ((uVar3 >> 3 & 1) == 0) {
    if (param_4[1] == -1) {
      local_34 = 2;
    }
  }
  else if (*param_4 == -1) {
    local_38 = 2;
  }
  cVar1 = FUN_00937250(param_1,param_2,param_3,&local_38,param_6,&DAT_032c0398,param_7);
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6(PTR_DAT_03236318);
  uStack_4 = 0;
  uVar2 = FUN_00937200(L"STATIC",auStack_30,param_3,&local_38);
  _free(pvStack_14);
  if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c);
  }
  ExceptionList = local_c;
  return uVar2;
}



undefined4 * __thiscall FUN_00938ad0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxTextWrapper::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00938af0(undefined4 *param_1)

{
  *param_1 = wxTextWrapper::vftable;
  return;
}



undefined ** FUN_00938b00(void)

{
  return &PTR_u_wxDialog_0323a540;
}



undefined ** FUN_00938b10(void)

{
  return &PTR_PTR_00d57800;
}



undefined * FUN_00938b20(void)

{
  return &DAT_032c02c0;
}



undefined ** FUN_00938b30(void)

{
  return &PTR_u_wxWindowModalDialogEvent_0323a558;
}



undefined ** FUN_00938b60(void)

{
  return &PTR_u_wxStandardDialogLayoutAdapter_0323a588;
}



undefined ** FUN_00938b70(void)

{
  return &PTR_u_wxDialogLayoutAdapterModule_0323a5a0;
}



void FUN_00938b80(int **param_1)

{
  if (*param_1 != (int *)0x0) {
    (**(code **)(**param_1 + 4))(1);
    *param_1 = (int *)0x0;
  }
  return;
}



byte __fastcall FUN_00938ba0(byte *param_1)

{
  byte bVar1;
  
  bVar1 = *param_1;
  return (((bVar1 >> 3 & 1) * '\x02' | bVar1 >> 1 & 1) * '\x02' | bVar1 & 1) * '\x02' |
         bVar1 >> 2 & 1;
}



bool FUN_00938bd0(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_0086a8b0(param_1,0);
  return iVar1 != -1;
}



undefined4 * __thiscall FUN_00938bf0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxSizerItem::vftable;
  param_1_00[4] = 0;
  param_1_00[5] = 0;
  param_1_00[6] = 0;
  param_1_00[7] = 0;
  local_4 = 0;
  param_1_00[0xc] = 0;
  param_1_00[0xd] = 0;
  param_1_00[0xe] = 0;
  param_1_00[0xf] = 0;
  FUN_00930050(param_2);
  FUN_009300d0(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00938c70(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxSizerItem::vftable;
  param_1_00[4] = 0;
  param_1_00[5] = 0;
  param_1_00[6] = 0;
  param_1_00[7] = 0;
  local_4 = 0;
  param_1_00[0xc] = 0;
  param_1_00[0xd] = 0;
  param_1_00[0xe] = 0;
  param_1_00[0xf] = 0;
  FUN_00930050(param_2);
  FUN_0092fe80(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00938cf0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  void *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x48);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00938bf0(param_1,param_2);
  }
  local_4 = 0xffffffff;
  (**(code **)(*param_1_00 + 0x14))(param_1_00[0xc],uVar3,uVar1);
  ExceptionList = unaff_ESI;
  return;
}



void __thiscall FUN_00938d70(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  void *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x48);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00938c70(param_1,param_2);
  }
  local_4 = 0xffffffff;
  (**(code **)(*param_1_00 + 0x14))(param_1_00[0xc],uVar3,uVar1);
  ExceptionList = unaff_ESI;
  return;
}



undefined4 __thiscall FUN_00938df0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9823;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x58);
  local_4 = 0;
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_00445eb9(uVar1);
    *puVar2 = wxBoxSizer::vftable;
    puVar2[2] = wxBoxSizer::vftable;
    puVar2[0x14] = 0;
    puVar2[0x15] = 0;
    puVar2[0x12] = 8;
    puVar2[0x13] = 0;
  }
  local_4 = 0xffffffff;
  *(undefined4 **)(param_1_00 + 0xc) = puVar2;
  FUN_0095f980(*(undefined4 *)(param_1_00 + 8),param_1,param_2);
  ExceptionList = local_c;
  return *(undefined4 *)(param_1_00 + 0xc);
}



void __fastcall FUN_00938e90(int *param_1)

{
  code *pcVar1;
  
  param_1[0x71] = 0;
  *(undefined *)(param_1 + 0x74) = 0;
  param_1[0x79] = 0;
  pcVar1 = *(code **)(*param_1 + 0xf0);
  param_1[0x72] = 0x13ec;
  param_1[0x73] = -1;
  param_1[0x78] = 3;
  (*pcVar1)(param_1[0x39] | 2);
  return;
}



uint __thiscall FUN_00938ee0(int *param_1_00,int *param_1)

{
  char cVar1;
  int iVar2;
  
  if (param_1 != (int *)0x0) {
    iVar2 = FUN_0086af40(param_1);
    if (iVar2 == 0) {
      cVar1 = FUN_0091a910();
      if ((cVar1 == '\0') && (((uint)param_1[0x39] >> 2 & 1) == 0)) {
        cVar1 = (**(code **)(*param_1 + 0xe0))();
        if (cVar1 != '\0') {
          return -(uint)(param_1 != param_1_00) & (uint)param_1;
        }
      }
    }
  }
  return 0;
}



int FUN_00938f40(int param_1,byte param_2)

{
  undefined4 uVar1;
  int iVar2;
  
  if ((param_2 & 0x20) != 0) {
    return 0;
  }
  if (param_1 != 0) {
    uVar1 = FUN_0091cdc0(param_1);
    iVar2 = FUN_00938ee0(uVar1);
    if (iVar2 != 0) {
      return iVar2;
    }
  }
  uVar1 = FUN_00910a90();
  uVar1 = FUN_0091cdc0(uVar1);
  iVar2 = FUN_00938ee0(uVar1);
  if (iVar2 == 0) {
    uVar1 = (**(code **)(*DAT_032bcb68 + 0xd4))();
    iVar2 = FUN_00938ee0(uVar1);
  }
  return iVar2;
}



void __thiscall FUN_00938fb0(int *param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x39c))();
  if (cVar1 != '\0') {
    (**(code **)(*param_1 + 0x398))(param_2);
    return;
  }
  (**(code **)(*param_1 + 0xcc))(0);
  return;
}



void __fastcall FUN_00938ff0(int *param_1)

{
  int iVar1;
  char cVar2;
  
  cVar2 = (**(code **)(*param_1 + 0x138))();
  if (cVar2 != '\0') {
    cVar2 = (**(code **)(*param_1 + 0x140))();
    if (cVar2 != '\0') {
      iVar1 = param_1[0x72];
      cVar2 = (**(code **)(*param_1 + 0x39c))();
      if (cVar2 != '\0') {
        (**(code **)(*param_1 + 0x398))(iVar1);
        return;
      }
      (**(code **)(*param_1 + 0xcc))(0);
    }
  }
  return;
}



void __fastcall FUN_00939110(int *param_1)

{
  (**(code **)(*param_1 + 0x394))();
  (**(code **)(*param_1 + 0x3a4))(DAT_032c0328);
  return;
}



uint __thiscall FUN_009391e0(int *param_1_00,uint param_1)

{
  int iVar1;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  if (*(int *)(param_1 + 0xd4) != 0) {
    local_8 = 0;
    local_4 = 0;
    local_10 = 0;
    local_c = 0;
    iVar1 = (**(code **)(*param_1_00 + 0x38))(param_1,&local_8,&local_10);
    return (uint)(iVar1 != 0);
  }
  return param_1 & 0xffffff00;
}



undefined4 __thiscall FUN_00939230(int *param_1_00,undefined ***param_1)

{
  char cVar1;
  undefined4 uVar2;
  int *piVar3;
  int iVar4;
  undefined ***pppuVar5;
  undefined *puVar6;
  undefined ***pppuVar7;
  undefined4 *puVar8;
  void *pvVar9;
  undefined **ppuVar10;
  undefined ***pppuStack_4c;
  uint uStack_48;
  undefined ***pppuStack_30;
  undefined **ppuStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  int aiStack_14 [2];
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bd9879;
  local_c = ExceptionList;
  uStack_48 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  if (param_1[0x35] != (undefined **)0x0) {
    pppuStack_4c = (undefined ***)&DAT_0323ac28;
    uVar2 = (*(code *)(*param_1)[0xec])();
    piVar3 = (int *)FUN_0048a085(uVar2);
    if (piVar3 == (int *)0x0) {
      pppuStack_4c = param_1;
      (**(code **)(*param_1_00 + 0x18))();
      puVar6 = (undefined *)register0x00000010;
      iVar4 = (**(code **)(*param_1_00 + 0x1c))(1,param_1,param_1[0x35],&stack0x00000000,0);
      if ((iVar4 == 0) &&
         ((((int)param_1[0x78] < 2 ||
           (iVar4 = (**(code **)(*param_1_00 + 0x1c))(0,param_1,param_1[0x35],aiStack_14,0),
           iVar4 == 0)) && (2 < (int)param_1[0x78])))) {
        pppuStack_4c = (undefined ***)0x0;
        pvVar9 = operator_new(0x6c);
        uStack_1c = 3;
        if (pvVar9 == (void *)0x0) {
          iVar4 = 0;
        }
        else {
          iVar4 = FUN_00931d00();
        }
        uStack_1c = 0xffffffff;
        (**(code **)(*param_1_00 + 0x28))(param_1,iVar4,param_1[0x35],&pppuStack_4c);
        if ((int)pppuStack_4c < 1) {
          FUN_00938b80(&stack0xffffffbc);
        }
        else {
          FUN_00931da0();
        }
      }
      if (aiStack_14[0] == 0) {
        aiStack_14[0] = 5;
      }
      (**(code **)(*param_1_00 + 0x2c))(param_1,uStack_48,iVar4);
      pppuVar5 = (undefined ***)operator_new(0x58);
      pppuStack_4c = pppuVar5;
      if (pppuVar5 == (undefined ***)0x0) {
        pppuVar5 = (undefined ***)0x0;
      }
      else {
        FUN_00445eb9();
        *pppuVar5 = wxBoxSizer::vftable;
        pppuVar5[2] = wxBoxSizer::vftable;
        pppuVar5[0x14] = (undefined **)0x0;
        pppuVar5[0x15] = (undefined **)0x0;
        pppuVar5[0x12] = (undefined **)0x8;
        pppuVar5[0x13] = (undefined **)0x0;
      }
      ppuVar10 = param_1[0x35];
      FUN_0091c600(pppuVar5,0);
      FUN_00445d61(puVar6,1,0x20f0,0,0);
      if (iVar4 != 0) {
        FUN_0044c6ab(iVar4,0,0x20f0,uStack_20,0);
      }
      FUN_0091c600(ppuVar10,1);
      (**(code **)(*param_1_00 + 0x34))(param_1,puVar6);
    }
    else {
      pppuStack_4c = (undefined ***)0x0;
      ppuStack_24 = wxListBase::vftable;
      FUN_0086ad40();
      ppuStack_24 = wxWindowList::vftable;
      uStack_4 = 0;
      pppuStack_30 = (undefined ***)0x0;
      pppuStack_4c = (undefined ***)0x9392c3;
      iVar4 = (**(code **)(*piVar3 + 0x358))();
      if (iVar4 != 0) {
        do {
          pppuStack_4c = pppuStack_30;
          pppuVar5 = (undefined ***)FUN_008fd3a0();
          if (pppuVar5 == (undefined ***)0x0) {
LAB_0093932f:
            if (pppuVar5[0x35] != (undefined **)0x0) {
              pppuStack_4c = pppuVar5;
              pppuVar7 = (undefined ***)(**(code **)(*param_1_00 + 0x18))();
              pppuStack_30 = (undefined ***)pppuVar5[0x35];
              puVar8 = (undefined4 *)operator_new(0x58);
              uStack_8._0_1_ = 1;
              if (puVar8 == (undefined4 *)0x0) {
                puVar8 = (undefined4 *)0x0;
              }
              else {
                FUN_00445eb9();
                *puVar8 = wxBoxSizer::vftable;
                puVar8[2] = wxBoxSizer::vftable;
                puVar8[0x14] = 0;
                puVar8[0x15] = 0;
                puVar8[0x12] = 8;
                puVar8[0x13] = 0;
              }
              uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
              FUN_00445d61(pppuVar7,1,0x2000,0,0);
              FUN_0091c600(puVar8,0);
              FUN_0091c600(pppuStack_30,1);
              (**(code **)(*param_1_00 + 0x2c))(pppuVar5,pppuVar7,0);
              pppuStack_4c = pppuVar7;
              FUN_0086ad60();
            }
          }
          else {
            pppuStack_4c = (undefined ***)0x9392e6;
            puVar6 = (undefined *)(*(code *)**pppuVar5)();
            if (puVar6 != &DAT_0323a618) {
              if (*(int *)(puVar6 + 0xc) != 0) {
                pppuStack_4c = (undefined ***)&DAT_0323a618;
                cVar1 = FUN_0048a047();
                if (cVar1 != '\0') goto LAB_0093931c;
              }
              if (*(int *)(puVar6 + 0x10) != 0) {
                pppuStack_4c = (undefined ***)&DAT_0323a618;
                cVar1 = FUN_0048a047();
                if (cVar1 != '\0') goto LAB_0093931c;
              }
              goto LAB_0093932f;
            }
LAB_0093931c:
            pppuStack_4c = pppuVar5;
            FUN_0086ad60();
          }
          pppuStack_30 = (undefined ***)((int)pppuStack_30 + 1);
          pppuStack_4c = (undefined ***)0x9393f9;
          pppuVar5 = (undefined ***)(**(code **)(*piVar3 + 0x358))();
        } while (pppuStack_30 < pppuVar5);
      }
      pppuStack_4c = &ppuStack_24;
      (**(code **)(*param_1_00 + 0x30))(param_1);
      uStack_4 = 0xffffffff;
      pppuStack_4c = (undefined ***)0x939421;
      FUN_0086ade0();
    }
  }
  *(undefined *)(param_1 + 0x74) = 1;
  ExceptionList = local_c;
  return 1;
}



undefined4 * __thiscall
FUN_009395f0(int *param_1_00,undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,
            int param_5)

{
  int iVar1;
  int iVar2;
  char cVar3;
  undefined **ppuVar4;
  undefined4 *puVar5;
  int iVar6;
  
  iVar1 = param_3[0xe];
  do {
    if (iVar1 == 0) {
      return (undefined4 *)0x0;
    }
    iVar2 = *(int *)(iVar1 + 8);
    if ((*(int *)(iVar2 + 8) == 2) &&
       (puVar5 = *(undefined4 **)(iVar2 + 0xc), puVar5 != (undefined4 *)0x0)) {
      iVar6 = param_5;
      if ((*(byte *)(iVar2 + 0x28) & 0xf0) != 0) {
        iVar6 = *(int *)(iVar2 + 0x24) + param_5;
      }
      ppuVar4 = (undefined **)(**(code **)*puVar5)();
      if ((char)param_1 == '\0') {
        if ((((ppuVar4 == &PTR_u_wxBoxSizer_0323a294) ||
             ((ppuVar4[3] != (undefined *)0x0 &&
              (cVar3 = FUN_0048a047(&PTR_u_wxBoxSizer_0323a294), cVar3 != '\0')))) ||
            ((ppuVar4[4] != (undefined *)0x0 &&
             (cVar3 = FUN_0048a047(&PTR_u_wxBoxSizer_0323a294), cVar3 != '\0')))) &&
           (cVar3 = (**(code **)(*param_1_00 + 0x20))(param_2,puVar5), cVar3 != '\0')) {
          (**(code **)(*param_3 + 0x24))(puVar5);
          *param_3 = iVar6;
          return puVar5;
        }
      }
      else if (((ppuVar4 == &PTR_u_wxStdDialogButtonSizer_0323a2c4) ||
               ((ppuVar4[3] != (undefined *)0x0 &&
                (cVar3 = FUN_0048a047(&PTR_u_wxStdDialogButtonSizer_0323a2c4), cVar3 != '\0')))) ||
              ((ppuVar4[4] != (undefined *)0x0 &&
               (cVar3 = FUN_0048a047(&PTR_u_wxStdDialogButtonSizer_0323a2c4), cVar3 != '\0')))) {
        (**(code **)(*param_3 + 0x24))(puVar5);
        *param_3 = iVar6;
        return puVar5;
      }
      puVar5 = (undefined4 *)(**(code **)(*param_1_00 + 0x1c))(param_1,param_2,puVar5,param_4,iVar6)
      ;
      if (puVar5 != (undefined4 *)0x0) {
        return puVar5;
      }
    }
    iVar1 = *(int *)(iVar1 + 0xc);
  } while( true );
}



undefined4 __thiscall FUN_00939740(int *param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  undefined4 *puVar2;
  char cVar3;
  undefined **ppuVar4;
  
  if (*(int *)(param_2 + 0x48) != 4) {
    return 0;
  }
  iVar1 = *(int *)(param_2 + 0x38);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    if ((((*(int *)(*(int *)(iVar1 + 8) + 8) == 1) &&
         (puVar2 = *(undefined4 **)(*(int *)(iVar1 + 8) + 0xc), puVar2 != (undefined4 *)0x0)) &&
        (((ppuVar4 = (undefined **)(**(code **)*puVar2)(), ppuVar4 == &PTR_u_wxButton_0323a6e4 ||
          ((ppuVar4[3] != (undefined *)0x0 &&
           (cVar3 = FUN_0048a047(&PTR_u_wxButton_0323a6e4), cVar3 != '\0')))) ||
         ((ppuVar4[4] != (undefined *)0x0 &&
          (cVar3 = FUN_0048a047(&PTR_u_wxButton_0323a6e4), cVar3 != '\0')))))) &&
       (cVar3 = (**(code **)(*param_1_00 + 0x24))(param_1,puVar2), cVar3 != '\0')) break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  return 1;
}



undefined4 FUN_009397e0(undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  
  iVar1 = *(int *)(param_2 + 0x40);
  if (((((iVar1 != 0x13ec) && (iVar1 != 0x13ed)) && (iVar1 != 0x13ef)) &&
      ((iVar1 != 0x13f0 && (iVar1 != 0x138b)))) &&
     ((iVar1 != 0x13ee && ((iVar1 != 0x1391 && (iVar1 != 0x13f8)))))) {
    cVar2 = FUN_00938bd0(iVar1);
    if (cVar2 == '\0') {
      return 0;
    }
  }
  return 1;
}



undefined4 __thiscall
FUN_00939840(int *param_1_00,undefined4 param_1,undefined4 param_2,int *param_3,int *param_5)

{
  int iVar1;
  undefined4 *puVar2;
  char cVar3;
  int iVar4;
  undefined **ppuVar5;
  int iVar6;
  
  iVar4 = param_3[0xe];
  if (iVar4 != 0) {
    do {
      iVar1 = *(int *)(iVar4 + 0xc);
      iVar4 = *(int *)(iVar4 + 8);
      if (*(int *)(iVar4 + 8) == 2) {
        iVar6 = *(int *)(iVar4 + 0xc);
      }
      else {
        iVar6 = 0;
      }
      if ((((*(int *)(iVar4 + 8) == 1) &&
           (puVar2 = *(undefined4 **)(iVar4 + 0xc), puVar2 != (undefined4 *)0x0)) &&
          (((ppuVar5 = (undefined **)(**(code **)*puVar2)(), ppuVar5 == &PTR_u_wxButton_0323a6e4 ||
            ((ppuVar5[3] != (undefined *)0x0 &&
             (cVar3 = FUN_0048a047(&PTR_u_wxButton_0323a6e4), cVar3 != '\0')))) ||
           ((ppuVar5[4] != (undefined *)0x0 &&
            (cVar3 = FUN_0048a047(&PTR_u_wxButton_0323a6e4), cVar3 != '\0')))))) &&
         (cVar3 = (**(code **)(*param_1_00 + 0x24))(param_1,puVar2), cVar3 != '\0')) {
        (**(code **)(*param_3 + 0x28))(puVar2);
        FUN_009315a0(puVar2);
        *param_5 = *param_5 + 1;
      }
      if (iVar6 != 0) {
        (**(code **)(*param_1_00 + 0x28))(param_1,param_2,iVar6,param_5);
      }
      iVar4 = iVar1;
    } while (iVar1 != 0);
    iVar4 = 0;
  }
  return CONCAT31((int3)((uint)iVar4 >> 8),1);
}



void FUN_00939920(int param_1,int *param_2,int param_3)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  
  iVar1 = *(int *)(param_1 + 0x54);
  while (iVar1 != 0) {
    piVar2 = *(int **)(iVar1 + 8);
    iVar1 = *(int *)(iVar1 + 0xc);
    if ((piVar2 != param_2) && ((param_3 == 0 || (iVar3 = FUN_00931300(piVar2,0), iVar3 == 0)))) {
      (**(code **)(*piVar2 + 0x120))(param_2);
      SetWindowPos((HWND)piVar2[0x4f],(HWND)0x1,-1,-1,-1,-1,3);
    }
  }
  return;
}



uint FUN_00939990(int *param_1)

{
  int *piVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int unaff_ESI;
  int unaff_EDI;
  int *unaff_retaddr;
  int local_28;
  undefined local_24 [16];
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  int iStack_4;
  
  piVar1 = param_1;
  iStack_4 = -1;
  puStack_8 = &LAB_00bd98a8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  FUN_0092fff0(local_24);
  (**(code **)(*piVar1 + 0x278))(&param_1,&local_28,uVar2);
  *unaff_retaddr = iStack_4;
  unaff_retaddr[1] = unaff_EDI;
  if (unaff_EDI <= local_28) {
    unaff_EDI = local_28;
  }
  iVar5 = *unaff_retaddr;
  if (*unaff_retaddr <= unaff_ESI) {
    iVar5 = unaff_ESI;
  }
  *unaff_retaddr = iVar5;
  unaff_retaddr[1] = unaff_EDI;
  uVar3 = FUN_0099a530(piVar1);
  FUN_0099a810(uVar3);
  local_c = (void *)0x0;
  iVar4 = FUN_0099a5f0(local_24);
  piVar1 = param_1;
  iVar5 = *(int *)(iVar4 + 8);
  param_1[1] = *(int *)(iVar4 + 0xc);
  *param_1 = iVar5;
  local_c = (void *)0xffffffff;
  FUN_0099a3d0();
  uVar2 = 0;
  if (piVar1[1] <= unaff_retaddr[1]) {
    uVar2 = 8;
  }
  if (*piVar1 <= *unaff_retaddr) {
    uVar2 = uVar2 | 4;
  }
  ExceptionList = pvStack_14;
  return uVar2;
}



undefined4 FUN_00939a80(int *param_1,int param_2)

{
  undefined4 uVar1;
  char cVar2;
  uint uVar3;
  undefined *puVar4;
  int iVar5;
  undefined4 *puVar6;
  uint uVar7;
  undefined4 unaff_ESI;
  int *piVar8;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  int local_1c;
  int local_18;
  int local_14;
  int local_10;
  int local_c;
  undefined auStack_8 [8];
  
  if (param_1[0x35] == 0) {
    return 0;
  }
  FUN_00931b00(param_1);
  local_18 = 0;
  local_14 = 0;
  local_10 = 0;
  local_c = 0;
  uVar3 = FUN_00939990(param_1,&local_18,&local_10);
  if (uVar3 != 0) {
    uVar7 = uVar3 >> 2;
    uVar3 = uVar3 >> 3;
    local_28 = 0;
    local_24 = 0;
    if (*(int *)(param_2 + 4) != 0) {
      if ((uVar3 & 1) == 0) {
        if (((uVar7 & 1) != 0) && (local_14 < local_c + -0x14)) {
          local_24 = 0x14;
        }
      }
      else if (((uVar7 & 1) == 0) && (local_18 < local_10 + -0x14)) {
        local_28 = 0x14;
      }
    }
    for (local_2c = *(int *)(param_2 + 0xc); local_2c != 0; local_2c = *(int *)(local_2c + 0xc)) {
      puVar6 = *(undefined4 **)(local_2c + 8);
      if (((puVar6 != (undefined4 *)0x0) &&
          (((puVar4 = (undefined *)(**(code **)*puVar6)(), puVar4 == &DAT_0323a618 ||
            ((*(int *)(puVar4 + 0xc) != 0 && (cVar2 = FUN_0048a047(&DAT_0323a618), cVar2 != '\0'))))
           || ((*(int *)(puVar4 + 0x10) != 0 && (cVar2 = FUN_0048a047(&DAT_0323a618), cVar2 != '\0')
               ))))) &&
         (FUN_0093bd30(-((uVar7 & 1) != 0) & 10,-((uVar3 & 1) != 0) & 10), puVar6[0x35] != 0)) {
        FUN_00931a60(auStack_8,puVar6);
      }
    }
    local_1c = local_14 + local_24;
    if ((uVar3 & 1) != 0) {
      local_1c = local_c;
    }
    local_20 = local_18 + local_28;
    if ((uVar7 & 1) != 0) {
      local_20 = local_10;
    }
    piVar8 = &local_20;
    (**(code **)(*param_1 + 0x94))(piVar8);
    (**(code **)(*param_1 + 0x288))(0xffffffff,0xffffffff,local_24,local_20,0);
    iVar5 = (**(code **)(*param_1 + 0xa8))(&local_20);
    uVar1 = *(undefined4 *)(iVar5 + 4);
    puVar6 = (undefined4 *)(**(code **)(*param_1 + 0xa8))(&local_2c);
    (**(code **)(*param_1 + 0x90))(piVar8,unaff_ESI,*puVar6,uVar1,0xffffffff,0xffffffff);
  }
  return 1;
}



void FUN_00939c90(void)

{
  int *piVar1;
  
  piVar1 = DAT_032c02b8;
  DAT_032c02b8 = (int *)0x0;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(1);
  }
  return;
}



undefined4 FUN_00939cb0(void)

{
  DAT_032c02b8 = (undefined4 *)operator_new(8);
  if (DAT_032c02b8 != (undefined4 *)0x0) {
    DAT_032c02b8[1] = 0;
    *DAT_032c02b8 = wxStandardDialogLayoutAdapter::vftable;
    return 1;
  }
  DAT_032c02b8 = (undefined4 *)0x0;
  return 1;
}



undefined4 * FUN_00939ce0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxDialogLayoutAdapterModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __thiscall FUN_00939d40(int *param_1_00,int param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  
  if (*(int *)(param_1 + 0x14) != 0) {
    uVar5 = 0;
    uVar4 = 0;
    uVar3 = 0;
    uVar1 = (**(code **)(*param_1_00 + 0xc))(param_1,0,0,0,0);
    FUN_00445d61(uVar1,param_1,uVar3,uVar4,uVar5);
    return;
  }
  if (param_1_00[4] == 0) {
    iVar2 = (**(code **)(*(int *)param_1_00[2] + 0x194))();
    param_1_00[4] = iVar2;
  }
  FUN_00445db1(5,param_1_00[4],0,0,0,0);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1f0);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_0044cc1c(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_00939e10(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd98d8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  iVar2 = -1;
  iVar1 = FUN_009b1bf0(DAT_0323f878 ^ (uint)&stack0xffffffdc);
  if (iVar1 < 3) {
    iVar2 = FUN_008fedb0(0x15,0);
    iVar2 = iVar2 + -0x19;
  }
  FUN_00938df0(param_1,iVar2);
  ExceptionList = local_c;
  return;
}



void FUN_00939ea0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00939920(param_1,param_2,param_3);
  return;
}



void FUN_00939ec0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00939990(param_1,param_2,param_3);
  return;
}



void FUN_00939ee0(undefined4 param_1,undefined4 param_2)

{
  FUN_00939a80(param_1,param_2);
  return;
}



undefined FUN_00939f00(undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  uint uVar2;
  undefined **local_24 [6];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9908;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  local_24[0] = wxListBase::vftable;
  FUN_0086ad40(0);
  local_24[0] = wxWindowList::vftable;
  local_4 = 0;
  FUN_0086ad60(param_2);
  uVar1 = FUN_00939a80(param_1,local_24,uVar2);
  local_4 = 0xffffffff;
  FUN_0086ade0();
  ExceptionList = local_c;
  return uVar1;
}



undefined4 * __thiscall
FUN_00939f90(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9946;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00446386(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  *param_1_00 = wxPanel::vftable;
  local_4 = 0;
  FUN_0093d340(param_1_00);
  local_4 = CONCAT31(local_4._1_3_,1);
  *param_1_00 = wxScrolled<class_wxPanel>::vftable;
  param_1_00[0x5e] = wxScrolled<class_wxPanel>::vftable;
  FUN_0048a172(param_1,param_2,param_3,param_4,param_5,param_6);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_0093a030(undefined4 param_1,undefined4 param_2)

{
  FUN_00939f00(param_1,param_2);
  return;
}



void FUN_0093a050(undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined **ppuVar4;
  undefined auStack_6c [8];
  int *piStack_64;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8ac8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_6c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  piVar3 = (int *)FUN_0091c240(param_1);
  if (((piVar3 != (int *)0x0) &&
      (((ppuVar4 = (undefined **)(**(code **)*piVar3)(uVar2), ppuVar4 == &PTR_u_wxButton_0323a6e4 ||
        ((ppuVar4[3] != (undefined *)0x0 &&
         (cVar1 = FUN_0048a047(&PTR_u_wxButton_0323a6e4), cVar1 != '\0')))) ||
       ((ppuVar4[4] != (undefined *)0x0 &&
        (cVar1 = FUN_0048a047(&PTR_u_wxButton_0323a6e4), cVar1 != '\0')))))) &&
     ((cVar1 = FUN_0091b930(), cVar1 != '\0' &&
      (cVar1 = (**(code **)(*piVar3 + 0xdc))(), cVar1 != '\0')))) {
    FUN_0092bd60(DAT_032bfdb8,param_1);
    uStack_4 = 0;
    piStack_64 = piVar3;
    (**(code **)(*(int *)piVar3[0x1c] + 0x18))(auStack_6c);
    puStack_8 = (undefined *)0xffffffff;
    FUN_00454a4e();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * FUN_0093a1b0(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x5c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0092bd60(DAT_032bd44c,0);
    *puVar1 = wxWindowModalDialogEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __thiscall FUN_0093a220(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined **local_6c [2];
  int local_64;
  uint uStack_44;
  undefined4 uStack_34;
  uint uStack_30;
  void *pvStack_2c;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea938;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_6c);
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  FUN_0092bd60(param_1,*(undefined4 *)(param_1_00 + 0x40));
  local_6c[0] = wxWindowModalDialogEvent::vftable;
  local_4 = 0;
  local_64 = param_1_00;
  cVar1 = (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_6c,uVar2);
  if (cVar1 == '\0') {
    (**(code **)(**(int **)(*(int *)(param_1_00 + 0x44) + 0x70) + 0x18))(&stack0xffffff90);
  }
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_2c);
  if (7 < uStack_30) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_44);
  }
  uStack_30 = 7;
  uStack_34 = 0;
  uStack_44 = uStack_44 & 0xffff0000;
  FUN_0083e850();
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_0093a310(int *param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  code *pcVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd997e;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffff0;
  ExceptionList = &local_c;
  if ((DAT_032c0344 & 1) == 0) {
    DAT_032c0344 = DAT_032c0344 | 1;
    local_4 = 0;
    FUN_0086b270(0);
    _atexit((_func_4879 *)&LAB_00c77c10);
  }
  local_4 = 0xffffffff;
  iVar3 = FUN_0086af40(param_1);
  if (iVar3 != 0) {
    ExceptionList = local_c;
    return;
  }
  FUN_0086ad60(param_1);
  iVar3 = param_1[0x73];
  if (iVar3 != -3) {
    if (iVar3 == -1) {
      cVar1 = FUN_0093a050(0x13ed);
      if (cVar1 != '\0') goto LAB_0093a3e6;
      iVar3 = param_1[0x72];
    }
    cVar1 = FUN_0093a050(iVar3);
    if (cVar1 != '\0') goto LAB_0093a3e6;
  }
  cVar1 = (**(code **)(*param_1 + 0x39c))(uVar2);
  if (cVar1 == '\0') {
    pcVar4 = *(code **)(*param_1 + 0xcc);
    uVar5 = 0;
  }
  else {
    pcVar4 = *(code **)(*param_1 + 0x398);
    uVar5 = 0x13ed;
  }
  (*pcVar4)(uVar5);
LAB_0093a3e6:
  FUN_0086b0c0(param_1);
  ExceptionList = local_c;
  return;
}



int * __thiscall FUN_0093a410(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *pvVar2;
  int *piVar3;
  bool bVar4;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd99dd;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x194);
  local_4 = 0;
  bVar4 = pvVar2 == (void *)0x0;
  if (bVar4) {
    piVar3 = (int *)0x0;
  }
  else {
    FUN_0043c211("staticText");
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_0043c211(&PTR_02bd3fc0);
    local_4 = 2;
    piVar3 = (int *)FUN_00483552(*(undefined4 *)(param_1_00 + 8),0xffffffff,local_54,&DAT_03238d0c,
                                 &DAT_03238d04,0,local_30);
  }
  if (!bVar4) {
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
  }
  local_4 = 0xffffffff;
  if (!bVar4) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
  }
  (**(code **)(*piVar3 + 0x334))(param_1,uVar1);
  ExceptionList = pvStack_10;
  return piVar3;
}



undefined4 * __thiscall FUN_0093a570(undefined4 param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  undefined4 uVar4;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9a37;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x58);
  local_4 = 0;
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_00445eb9(uVar1);
    *puVar2 = wxBoxSizer::vftable;
    puVar2[2] = wxBoxSizer::vftable;
    puVar2[0x14] = 0;
    puVar2[0x15] = 0;
    puVar2[0x12] = 8;
    puVar2[0x13] = 0;
  }
  local_4 = 0xffffffff;
  pvVar3 = operator_new(0x194);
  local_4 = 2;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    FUN_0043c211("staticLine");
    local_4 = CONCAT31(local_4._1_3_,3);
    uVar4 = FUN_0044a4d9(param_1_00,0xffffffff,&DAT_03238d0c,&DAT_03238d04,4,local_30);
  }
  local_4 = 4;
  local_48 = 0;
  local_44 = 0x2080;
  local_40 = 10;
  FUN_00938cf0(uVar4,&local_48);
  local_4 = 0xffffffff;
  if (pvVar3 != (void *)0x0) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  local_3c = 0;
  local_34 = 0;
  local_38 = 0x2000;
  FUN_00938d70(param_1,&local_3c);
  ExceptionList = local_c;
  return puVar2;
}



// WARNING: Removing unreachable block (ram,0x0093abcd)
// WARNING: Removing unreachable block (ram,0x0093abed)
// WARNING: Removing unreachable block (ram,0x0093abfd)

undefined4 __thiscall FUN_0093a6e0(int param_1_00,uint param_1)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  bool bVar4;
  undefined4 local_190;
  int *local_188;
  int *local_184;
  int *local_180;
  undefined local_174 [4];
  uint local_170;
  undefined4 local_160;
  uint local_15c;
  void *local_158;
  undefined local_150 [4];
  uint local_14c;
  undefined4 local_13c;
  uint local_138;
  void *local_134;
  undefined local_12c [4];
  uint local_128;
  undefined4 local_118;
  uint local_114;
  void *local_110;
  undefined local_108 [4];
  uint local_104;
  undefined4 local_f4;
  uint local_f0;
  void *local_ec;
  undefined local_e4 [4];
  uint local_e0;
  undefined4 local_d0;
  uint local_cc;
  void *local_c8;
  undefined local_c0 [36];
  undefined local_9c [4];
  uint local_98;
  undefined4 local_88;
  uint local_84;
  void *local_80;
  undefined local_78 [4];
  uint local_74;
  undefined4 local_64;
  uint local_60;
  void *local_5c;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9cc6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffe5c;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x6c);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    local_190 = 0;
  }
  else {
    local_190 = FUN_00931d00(uVar1);
  }
  local_4 = 0xffffffff;
  local_180 = (int *)0x0;
  local_184 = (int *)0x0;
  local_188 = (int *)0x0;
  if ((param_1 & 4) != 0) {
    pvVar2 = operator_new(0x1a0);
    local_4 = 1;
    bVar4 = pvVar2 == (void *)0x0;
    if (bVar4) {
      local_180 = (int *)0x0;
    }
    else {
      FUN_0043c211("button");
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 3;
      local_180 = (int *)FUN_0044c65b(param_1_00,0x13ec,local_e4,&DAT_03238d0c,&DAT_03238d04,0,
                                      &DAT_032c0398,local_54);
    }
    if (!bVar4) {
      _free(local_c8);
      if (7 < local_cc) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_e0);
      }
      local_cc = 7;
      local_d0 = 0;
      local_e0 = local_e0 & 0xffff0000;
    }
    local_4 = 0xffffffff;
    if (!bVar4) {
      _free(local_38);
      if (7 < local_3c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_50);
      }
      local_3c = 7;
      local_40 = 0;
      local_50 = local_50 & 0xffff0000;
    }
    FUN_009315a0(local_180);
  }
  if ((param_1 & 0x10) != 0) {
    pvVar2 = operator_new(0x1a0);
    local_4 = 6;
    bVar4 = pvVar2 == (void *)0x0;
    if (bVar4) {
      uVar3 = 0;
    }
    else {
      FUN_0043c211("button");
      local_4 = CONCAT31(local_4._1_3_,7);
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 8;
      uVar3 = FUN_0044c65b(param_1_00,0x13ed,local_174,&DAT_03238d0c,&DAT_03238d04,0,&DAT_032c0398,
                           local_150);
    }
    if (!bVar4) {
      _free(local_158);
      if (7 < local_15c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_170);
      }
      local_15c = 7;
      local_160 = 0;
      local_170 = local_170 & 0xffff0000;
    }
    local_4 = 0xffffffff;
    if (!bVar4) {
      _free(local_134);
      if (7 < local_138) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_14c);
      }
      local_138 = 7;
      local_13c = 0;
      local_14c = local_14c & 0xffff0000;
    }
    FUN_009315a0(uVar3);
  }
  if ((param_1 & 2) != 0) {
    pvVar2 = operator_new(0x1a0);
    local_4 = 0xb;
    bVar4 = pvVar2 == (void *)0x0;
    if (bVar4) {
      local_184 = (int *)0x0;
    }
    else {
      FUN_0043c211("button");
      local_4 = CONCAT31(local_4._1_3_,0xc);
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xd;
      local_184 = (int *)FUN_0044c65b(param_1_00,0x13ef,local_150,&DAT_03238d0c,&DAT_03238d04,0,
                                      &DAT_032c0398,local_174);
    }
    if (!bVar4) {
      _free(local_134);
      if (7 < local_138) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_14c);
      }
      local_138 = 7;
      local_13c = 0;
      local_14c = local_14c & 0xffff0000;
    }
    local_4 = 0xffffffff;
    if (!bVar4) {
      _free(local_158);
      if (7 < local_15c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_170);
      }
      local_15c = 7;
      local_160 = 0;
      local_170 = local_170 & 0xffff0000;
    }
    FUN_009315a0(local_184);
  }
  if ((param_1 & 8) != 0) {
    pvVar2 = operator_new(0x1a0);
    local_4 = 0x10;
    if (pvVar2 == (void *)0x0) {
      local_188 = (int *)0x0;
    }
    else {
      FUN_0043c211("button");
      local_4 = CONCAT31(local_4._1_3_,0x11);
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x12;
      local_188 = (int *)FUN_0044c65b(param_1_00,0x13f0,local_c0,&DAT_03238d0c,&DAT_03238d04,0,
                                      &DAT_032c0398,local_9c);
    }
    local_4 = 0xffffffff;
    if (pvVar2 != (void *)0x0) {
      _free(local_80);
      if (7 < local_84) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_98);
      }
      local_84 = 7;
      local_88 = 0;
      local_98 = local_98 & 0xffff0000;
    }
    FUN_009315a0(local_188);
  }
  if ((param_1 & 0x20) != 0) {
    pvVar2 = operator_new(0x1a0);
    local_4 = 0x15;
    bVar4 = pvVar2 == (void *)0x0;
    if (bVar4) {
      uVar3 = 0;
    }
    else {
      FUN_0043c211("button");
      local_4 = CONCAT31(local_4._1_3_,0x16);
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x17;
      uVar3 = FUN_0044c65b(param_1_00,0x13ee,local_108,&DAT_03238d0c,&DAT_03238d04,0,&DAT_032c0398,
                           local_12c);
    }
    if (!bVar4) {
      _free(local_ec);
      if (7 < local_f0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_104);
      }
      local_f0 = 7;
      local_f4 = 0;
      local_104 = local_104 & 0xffff0000;
    }
    local_4 = 0xffffffff;
    if (!bVar4) {
      _free(local_110);
      if (7 < local_114) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_128);
      }
      local_114 = 7;
      local_118 = 0;
      local_128 = local_128 & 0xffff0000;
    }
    FUN_009315a0(uVar3);
  }
  if ((param_1 & 0x40) != 0) {
    pvVar2 = operator_new(0x1a0);
    local_4 = 0x1a;
    bVar4 = pvVar2 == (void *)0x0;
    if (bVar4) {
      uVar3 = 0;
    }
    else {
      FUN_0043c211("button");
      local_4 = CONCAT31(local_4._1_3_,0x1b);
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x1c;
      uVar3 = FUN_0044c65b(param_1_00,0x1389,local_12c,&DAT_03238d0c,&DAT_03238d04,0,&DAT_032c0398,
                           local_108);
    }
    if (!bVar4) {
      _free(local_110);
      if (7 < local_114) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_128);
      }
      local_114 = 7;
      local_118 = 0;
      local_128 = local_128 & 0xffff0000;
    }
    local_4 = 0xffffffff;
    if (!bVar4) {
      _free(local_ec);
      if (7 < local_f0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_104);
      }
      local_f0 = 7;
      local_f4 = 0;
      local_104 = local_104 & 0xffff0000;
    }
    FUN_009315a0(uVar3);
  }
  if ((param_1 & 0x1000) != 0) {
    pvVar2 = operator_new(0x1a0);
    local_4 = 0x1f;
    bVar4 = pvVar2 == (void *)0x0;
    if (bVar4) {
      uVar3 = 0;
    }
    else {
      FUN_0043c211("button");
      local_4 = CONCAT31(local_4._1_3_,0x20);
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x21;
      uVar3 = FUN_0044c65b(param_1_00,0x1391,local_78,&DAT_03238d0c,&DAT_03238d04,0,&DAT_032c0398,
                           local_30);
    }
    if (!bVar4) {
      _free(local_5c);
      if (7 < local_60) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_74);
      }
      local_60 = 7;
      local_64 = 0;
      local_74 = local_74 & 0xffff0000;
    }
    local_4 = 0xffffffff;
    if (!bVar4) {
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
      local_18 = 7;
      local_1c = 0;
      local_2c = local_2c & 0xffff0000;
    }
    FUN_009315a0(uVar3);
  }
  if ((((param_1 & 0x80) == 0) && (local_188 = local_184, local_180 != (int *)0x0)) ||
     (local_180 = local_188, local_188 != (int *)0x0)) {
    (**(code **)(*local_180 + 0x378))();
    (**(code **)(*local_180 + 0x100))();
  }
  if ((param_1 & 4) == 0) {
    if ((param_1 & 2) != 0) {
      *(undefined4 *)(param_1_00 + 0x1c8) = 0x13ef;
    }
  }
  else {
    *(undefined4 *)(param_1_00 + 0x1c8) = 0x13ec;
  }
  FUN_00931da0();
  ExceptionList = local_c;
  return local_190;
}



undefined4 * FUN_0093b140(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6884;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x1e0);
  local_4 = 0;
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_0043c211("panel");
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00939f90(param_1,0xffffffff,&DAT_03238d0c,&DAT_03238d04,0xc0280000,local_30);
    *puVar2 = wxScrolledWindow::vftable;
    puVar2[0x5e] = wxScrolledWindow::vftable;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar1);
    }
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_0093b220(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x5c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a2df(param_1);
    *puVar1 = wxWindowModalDialogEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void FUN_0093b290(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_0093a6e0(param_1);
  if (iVar1 == 0) {
    return;
  }
  FUN_0093a570(iVar1);
  return;
}



void __fastcall FUN_0093b2c0(int param_1)

{
  *(undefined *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 8) = 0;
  *(undefined *)(param_1 + 0xf) = 0;
  *(undefined *)(param_1 + 0xe) = 0;
  *(undefined *)(param_1 + 0xd) = 0;
  *(undefined *)(param_1 + 0x10) = 0;
  return;
}



void __thiscall
FUN_0093b2e0(int param_1_00,byte param_1,byte param_2,byte param_3,undefined param_4)

{
  *(byte *)(param_1_00 + 0xf) = param_2;
  *(byte *)(param_1_00 + 0xd) = param_1;
  *(byte *)(param_1_00 + 0xe) = param_3;
  *(uint *)(param_1_00 + 8) = ((param_3 | 0x200) << 8 | (uint)param_2) << 8 | (uint)param_1;
  *(undefined *)(param_1_00 + 0x10) = param_4;
  *(undefined *)(param_1_00 + 0xc) = 1;
  return;
}



void __fastcall FUN_0093b370(int param_1)

{
  if (*(int **)(param_1 + 0x198) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x198) + 4))(1);
    *(undefined4 *)(param_1 + 0x198) = 0;
  }
  return;
}



void __thiscall FUN_0093b3a0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  char cVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  if ((*(int **)(param_1_00 + 0x198) != (int *)0x0) &&
     (cVar2 = (**(code **)(**(int **)(param_1_00 + 0x198) + 0x10))(), cVar2 != '\0')) {
    iVar1 = *(int *)(*(int *)(param_1_00 + 0x198) + 4);
    if (iVar1 == 0) {
      uVar4 = 0;
      uVar3 = 0;
    }
    else {
      uVar4 = *(undefined4 *)(iVar1 + 0xc);
      uVar3 = *(undefined4 *)(iVar1 + 8);
    }
    *(undefined4 *)(param_1_00 + 0x130) = uVar3;
    *(undefined4 *)(param_1_00 + 0x134) = uVar4;
    *param_1 = uVar3;
    param_1[1] = uVar4;
    return;
  }
  *param_1 = 0x10;
  param_1[1] = 0x10;
  return;
}



void __fastcall FUN_0093b410(int *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  int *unaff_EBX;
  int iVar4;
  int unaff_EDI;
  void **ppvStack_60;
  int *piStack_5c;
  uint uStack_58;
  undefined local_44 [4];
  void *local_40 [2];
  int *piStack_38;
  int *piStack_34;
  undefined **ppuStack_30;
  undefined local_2c [24];
  undefined uStack_14;
  undefined uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9d50;
  local_c = ExceptionList;
  uStack_58 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  ppvStack_60 = (void **)0x93b443;
  piStack_5c = param_1;
  FUN_0094be80();
  piStack_5c = (int *)local_44;
  ppvStack_60 = local_40;
  local_4 = 0;
  (**(code **)(*param_1 + 0x278))();
  (**(code **)(*param_1 + 0x360))(local_44);
  uStack_10 = 1;
  uVar2 = FUN_0091de40(local_2c);
  uStack_10 = 2;
  FUN_0095d7e0(uVar2,100);
  uStack_10 = 3;
  (**(code **)((int)*ppuStack_30 + 0x60))(local_40);
  uStack_14 = 2;
  FUN_008f7630();
  uStack_14 = 1;
  ppuStack_30 = wxObject::vftable;
  FUN_0083e850();
  uVar2 = FUN_008f8330(0x24);
  (**(code **)(*piStack_34 + 0x58))(uVar2);
  uVar1 = uStack_58;
  (**(code **)(*piStack_38 + 0x150))(0,0,unaff_EDI,uStack_58);
  if (piStack_5c == (int *)0x0) {
    iVar4 = 0;
    iVar3 = 0;
  }
  else {
    iVar4 = *(int *)((int)piStack_5c + 0xc);
    iVar3 = *(int *)((int)piStack_5c + 8);
  }
  (**(code **)(*unaff_EBX + 0x164))(&ppvStack_60,(unaff_EDI - iVar3) / 2,(int)(uVar1 - iVar4) / 2,1)
  ;
  piStack_38 = (int *)((uint)piStack_38 & 0xffffff00);
  FUN_008f7630();
  piStack_38 = (int *)0xffffffff;
  FUN_00457221();
  ExceptionList = local_40[0];
  return;
}



void __thiscall FUN_0093b580(int *param_1_00,int param_1)

{
  code *pcVar1;
  undefined uVar2;
  char cVar3;
  uint uVar4;
  HGDIOBJ ho;
  int iVar5;
  int nWidth;
  int unaff_EBX;
  int unaff_ESI;
  int unaff_EDI;
  LPARAM lParam;
  undefined *X;
  undefined auStack_20 [8];
  undefined *puStack_18;
  int iStack_14;
  
  if ((int *)param_1_00[0x66] != (int *)0x0) {
    (**(code **)(*(int *)param_1_00[0x66] + 4))(1);
    param_1_00[0x66] = 0;
  }
  uVar2 = FUN_0083e950(&PTR_u_wxIcon_0323a18c);
  *(undefined *)(param_1_00 + 0x65) = uVar2;
  pcVar1 = *(code **)(*param_1_00 + 0x270);
  X = auStack_20 + 4;
  param_1_00[0x66] = param_1;
  (*pcVar1)(auStack_20);
  (**(code **)(*param_1_00 + 0x278))(auStack_20,auStack_20 + 4);
  if (*(int *)(param_1_00[0x66] + 4) == 0) {
    lParam = 0;
  }
  else {
    lParam = *(LPARAM *)(*(int *)(param_1_00[0x66] + 4) + 0x14);
  }
  uVar4 = GetWindowLongW((HWND)param_1_00[0x4f],-0x10);
  SetWindowLongW((HWND)param_1_00[0x4f],-0x10,
                 (-(uint)(*(char *)(param_1_00 + 0x65) != '\0') & 0xfffffff5) + 0xe |
                 uVar4 & 0xfffffff0);
  ho = (HGDIOBJ)SendMessageW((HWND)param_1_00[0x4f],0x172,
                             (uint)(*(char *)(param_1_00 + 0x65) != '\0'),lParam);
  if (((HGDIOBJ)param_1_00[0x67] != (HGDIOBJ)0x0) && (ho != (HGDIOBJ)param_1_00[0x67])) {
    DeleteObject(ho);
  }
  param_1_00[0x67] = lParam;
  if (((int *)param_1_00[0x66] != (int *)0x0) &&
     (cVar3 = (**(code **)(*(int *)param_1_00[0x66] + 0x10))(), cVar3 != '\0')) {
    iVar5 = *(int *)(param_1 + 4);
    if (iVar5 == 0) {
      nWidth = 0;
      iVar5 = 0;
    }
    else {
      nWidth = *(int *)(iVar5 + 8);
      iVar5 = *(int *)(iVar5 + 0xc);
    }
    if ((nWidth != 0) && (iVar5 != 0)) {
      MoveWindow((HWND)param_1_00[0x4f],(int)X,unaff_EDI,nWidth,iVar5,0);
      unaff_ESI = nWidth;
      unaff_EBX = iVar5;
    }
  }
  puStack_18 = X + unaff_ESI;
  iStack_14 = unaff_EBX + unaff_EDI;
  auStack_20._0_4_ = X;
  InvalidateRect(*(HWND *)(param_1_00[0x11] + 0x13c),(RECT *)auStack_20,1);
  return;
}



undefined4 * __thiscall FUN_0093b710(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxBitmap::vftable;
  FUN_008f4c70(param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_0093b810(int *param_1_00,undefined4 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *unaff_retaddr;
  undefined4 local_14;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bed7e8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_14 = 0;
  if (*(char *)(param_1_00 + 0x65) != '\0') {
    uVar2 = (**(code **)(*param_1_00 + 0x364))(&local_14);
    puStack_8 = (undefined *)0x0;
    FUN_0093b710(uVar2,0);
    puStack_8 = (undefined *)0xffffffff;
    FUN_008f7630();
    ExceptionList = pvStack_10;
    return unaff_retaddr;
  }
  iVar1 = param_1_00[0x66];
  if (iVar1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\statbmp.cpp",0xb5,"wxStaticBitmap::GetBitmap","m_image",
                   L"no image in wxStaticBitmap",DAT_0323f878 ^ (uint)&stack0xffffffe8);
    }
    param_1[1] = 0;
  }
  else {
    *param_1 = wxObject::vftable;
    iVar1 = *(int *)(iVar1 + 4);
    param_1[1] = iVar1;
    if (iVar1 != 0) {
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    }
  }
  *param_1 = wxBitmap::vftable;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_0093b910(void)

{
  char cVar1;
  int iVar2;
  undefined4 *puVar3;
  int unaff_EDI;
  
  cVar1 = FUN_0083e950(&PTR_u_wxIcon_0323a18c);
  if (cVar1 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      iVar2 = FUN_0048a085();
      if (iVar2 == 0) {
        FUN_00840480("..\\..\\src\\msw\\statbmp.cpp",0x45,"ConvertImage",
                     "wxDynamicCast(&bitmap, wxBitmap)",L"not an icon and not a bitmap?");
      }
    }
    iVar2 = FUN_008f25d0();
    if ((iVar2 != 0) && (*(int *)(iVar2 + 8) != 0)) {
      puVar3 = (undefined4 *)operator_new(8);
      if (puVar3 != (undefined4 *)0x0) {
        puVar3[1] = 0;
        *puVar3 = wxIcon::vftable;
        FUN_0092c6e0(unaff_EDI);
        return puVar3;
      }
      FUN_0092c6e0(unaff_EDI);
      return (undefined4 *)0x0;
    }
    puVar3 = (undefined4 *)operator_new(8);
    if (puVar3 != (undefined4 *)0x0) {
      *puVar3 = wxObject::vftable;
      iVar2 = *(int *)(unaff_EDI + 4);
      puVar3[1] = iVar2;
      if (iVar2 != 0) {
        *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
      }
      *puVar3 = wxBitmap::vftable;
      return puVar3;
    }
  }
  else {
    puVar3 = (undefined4 *)operator_new(8);
    if (puVar3 != (undefined4 *)0x0) {
      *puVar3 = wxObject::vftable;
      iVar2 = *(int *)(unaff_EDI + 4);
      puVar3[1] = iVar2;
      if (iVar2 != 0) {
        *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
      }
      *puVar3 = wxIcon::vftable;
      return puVar3;
    }
  }
  return (undefined4 *)0x0;
}



undefined4 __thiscall
FUN_0093ba30(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  undefined uVar2;
  uint uVar3;
  undefined4 uVar4;
  int iVar5;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9388;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  cVar1 = FUN_00937250(param_1,param_2,param_4,param_5,param_6,&DAT_032c0398,param_7);
  if (cVar1 != '\0') {
    uVar2 = FUN_0083e950(&PTR_u_wxIcon_0323a18c);
    *(undefined *)(param_1_00 + 0x194) = uVar2;
    uVar4 = FUN_0093b910(uVar3);
    uVar2 = FUN_0083e950(&PTR_u_wxIcon_0323a18c);
    *(undefined *)(param_1_00 + 0x194) = uVar2;
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    cVar1 = FUN_00937200(L"STATIC",local_30,param_4,param_5);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    if (cVar1 != '\0') {
      FUN_0093b580(uVar4);
      FUN_0091b600(param_5);
      iVar5 = FUN_008fc6f0();
      if (iVar5 < 600) {
        FUN_0044634a(DAT_032bff1c,FUN_0093b410,0,0,0);
      }
      ExceptionList = local_c;
      return 1;
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined ** FUN_0093bb90(void)

{
  return &PTR_u_wxStaticBitmap_0323a5b8;
}



undefined4 * FUN_0093bba0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x1a0);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0044ced6(uVar1);
    *puVar2 = wxStaticBitmap::vftable;
    *(undefined *)(puVar2 + 0x65) = 1;
    puVar2[0x66] = 0;
    puVar2[0x67] = 0;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __fastcall FUN_0093bc30(int param_1)

{
  if (*(int *)(param_1 + 0x5c) != 0) {
    *(undefined *)(*(int *)(param_1 + 0x5c) + 0x44) = 0;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\generic\\scrlwing.cpp",0x1d1,"wxScrollHelperBase::ResetDrawnFlag",
                 "m_handler","invalid use of ResetDrawnFlag - no handler?");
  }
  return;
}



void __thiscall FUN_0093bc70(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd98b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *(int *)(param_1_00 + 0x1c) = param_1;
  if (param_1 == *(int *)(param_1_00 + 0x18)) {
    if ((*(int *)(param_1_00 + 0x18) != 0) && (*(int *)(param_1_00 + 0x5c) != 0)) {
      cVar1 = FUN_0091c050(*(int *)(param_1_00 + 0x5c));
      if ((cVar1 != '\0') && (*(int **)(param_1_00 + 0x5c) != (int *)0x0)) {
        (**(code **)(**(int **)(param_1_00 + 0x5c) + 4))(1,uVar2);
      }
      *(undefined4 *)(param_1_00 + 0x5c) = 0;
    }
    puVar3 = (undefined4 *)operator_new(0x48);
    local_4 = 0;
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      FUN_00845b70();
      *puVar3 = wxScrollHelperEvtHandler::vftable;
      puVar3[0x10] = param_1_00;
    }
    local_4 = 0xffffffff;
    *(undefined4 **)(param_1_00 + 0x5c) = puVar3;
    FUN_0091bd90(puVar3);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0093bd30(int *param_1_00,int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  iVar1 = param_1_00[0x10];
  iVar2 = param_1_00[0xe];
  iVar3 = param_1_00[0xf];
  iVar4 = param_1_00[0xd];
  param_1_00[0xd] = param_1;
  param_1_00[0xe] = param_2;
  iVar5 = 1;
  (**(code **)(*(int *)param_1_00[6] + 0x1ac))(4,iVar3,1);
  (**(code **)(*(int *)param_1_00[6] + 0x1ac))(8,param_1_00[0x10],1);
  (**(code **)(*(int *)param_1_00[7] + 0x1bc))
            (iVar4 * iVar3 - iVar3 * param_1,iVar2 * iVar1 - iVar5,0);
  (**(code **)(*param_1_00 + 0x14))();
  return;
}



void __thiscall FUN_0093bdc0(int param_1_00,undefined param_1,undefined param_2)

{
  *(undefined *)(param_1_00 + 0x54) = param_1;
  *(undefined *)(param_1_00 + 0x55) = param_2;
  return;
}



void __thiscall FUN_0093bde0(int param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = *(undefined4 *)(param_1_00 + 0x3c);
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *(undefined4 *)(param_1_00 + 0x40);
  }
  return;
}



void __thiscall FUN_0093be00(int param_1_00,int param_1,int param_2,int *param_3,int *param_4)

{
  if (param_3 != (int *)0x0) {
    *param_3 = param_1 - *(int *)(param_1_00 + 0x3c) * *(int *)(param_1_00 + 0x34);
  }
  if (param_4 != (int *)0x0) {
    *param_4 = param_2 - *(int *)(param_1_00 + 0x40) * *(int *)(param_1_00 + 0x38);
  }
  return;
}



void __thiscall FUN_0093be40(int param_1_00,int param_1,int param_2,int *param_3,int *param_4)

{
  if (param_3 != (int *)0x0) {
    *param_3 = *(int *)(param_1_00 + 0x3c) * *(int *)(param_1_00 + 0x34) + param_1;
  }
  if (param_4 != (int *)0x0) {
    *param_4 = *(int *)(param_1_00 + 0x40) * *(int *)(param_1_00 + 0x38) + param_2;
  }
  return;
}



void __thiscall FUN_0093be70(int *param_1_00,int param_1,int param_2)

{
  if ((param_1 != param_1_00[0x18]) || (param_2 != param_1_00[0x19])) {
    param_1_00[0x18] = param_1;
    param_1_00[0x19] = param_2;
    (**(code **)(*param_1_00 + 0x14))();
  }
  return;
}



void __thiscall
FUN_0093bea0(int param_1_00,undefined4 param_1,int param_2,int param_3,int param_4,int *param_5,
            int *param_6,int *param_7,int param_8)

{
  int iVar1;
  
  if ((param_4 == 0) || (param_3 <= param_2)) {
LAB_0093bf07:
    *param_6 = 0;
    *param_5 = 0;
    *param_7 = 0;
  }
  else {
    *param_5 = (param_3 + -1 + param_4) / param_4;
    param_2 = param_2 / param_4;
    *param_7 = param_2;
    if (*param_5 <= param_2) goto LAB_0093bf07;
    if (param_2 < 1) {
      *param_7 = 1;
    }
    if (*param_5 - *param_7 < *param_6) {
      *param_6 = *param_5 - *param_7;
    }
    else if (*param_6 < 0) {
      *param_6 = 0;
    }
  }
  if (param_8 == -1) {
    iVar1 = 0;
  }
  else {
    if (param_8 != 0) {
      if (param_8 == 1) {
        iVar1 = *param_5;
        if (iVar1 == 0) {
          iVar1 = -1;
        }
        goto LAB_0093bf6a;
      }
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\generic\\scrlwing.cpp",0x50b,"wxScrollHelper::DoAdjustScrollbar",
                     "Assert failure",L"unknown scrollbar visibility");
      }
    }
    iVar1 = *param_5;
  }
LAB_0093bf6a:
  (**(code **)(**(int **)(param_1_00 + 0x18) + 0x1a8))(param_1,*param_6,*param_7,iVar1,1);
  return;
}



uint FUN_0093bf90(int param_1,uint param_2)

{
  if (param_1 == 0x87) {
    param_2 = param_2 | 1;
  }
  return param_2;
}



undefined * FUN_0093bfb0(void)

{
  return &DAT_0323a618;
}



void __fastcall FUN_0093bfc0(int *param_1)

{
  undefined local_8 [4];
  int local_4;
  
  (**(code **)(*param_1 + 0x274))();
  *(undefined **)local_4 = local_8;
  *(int **)(local_4 + 4) = &local_4;
  return;
}



void __thiscall FUN_0093bff0(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 local_10 [2];
  undefined local_8 [4];
  undefined4 *local_4;
  
  puVar2 = local_10;
  if (*(int *)(param_1_00 + 0x28) != 0) {
    uVar1 = *(undefined4 *)(param_1_00 + 0x2c);
    *param_1 = *(undefined4 *)(param_1_00 + 0x28);
    param_1[1] = uVar1;
    return;
  }
  (**(code **)(**(int **)(param_1_00 + 0x1c) + 0x27c))(local_10,local_8);
  *local_4 = puVar2;
  local_4[1] = local_10[0];
  return;
}



undefined4 * __thiscall
FUN_0093c060(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  FUN_00454099();
  param_1_00[0x11] = param_1;
  param_1_00[0x12] = param_2;
  param_1_00[0x14] = param_4;
  *param_1_00 = wxAutoScrollTimer::vftable;
  param_1_00[0x13] = param_3;
  param_1_00[0x15] = param_5;
  return param_1_00;
}



void __fastcall FUN_0093c0a0(int *param_1)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  int unaff_ESI;
  int iStack_94;
  undefined auStack_90 [8];
  int iStack_88;
  int iStack_64;
  int iStack_60;
  undefined auStack_48 [4];
  undefined **ppuStack_44;
  undefined auStack_40 [4];
  undefined local_3c [8];
  int local_34;
  void *pvStack_14;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bd9d83;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = FUN_009116e0(DAT_0323f878 ^ (uint)&stack0xffffff68);
  if (iVar2 != param_1[0x11]) {
    (**(code **)(*param_1 + 0x54))();
    ExceptionList = local_c;
    return;
  }
  FUN_0092b080(param_1[0x13],param_1[0x14],param_1[0x15]);
  local_34 = param_1[0x11];
  local_4 = 0;
  cVar1 = (**(code **)(*(int *)param_1[0x12] + 0x20))(local_3c);
  if ((cVar1 == '\0') ||
     (cVar1 = (**(code **)(**(int **)(param_1[0x11] + 0x70) + 0x18))(auStack_40), cVar1 == '\0')) {
    (**(code **)(*param_1 + 0x54))();
  }
  else {
    FUN_0092b130(DAT_032bfe20);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
    piVar3 = (int *)FUN_00910c30(auStack_48);
    iStack_64 = *piVar3;
    iStack_60 = piVar3[1];
    for (iVar2 = *(int *)(param_1[0x11] + 0x44); iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x44)) {
    }
    FUN_008192ee(&stack0xffffff68);
    iStack_88 = param_1[0x11];
    iStack_64 = iStack_64 - unaff_ESI;
    iStack_60 = iStack_60 - iStack_94;
    (**(code **)(**(int **)(iStack_88 + 0x70) + 0x18))(auStack_90);
    local_c = (void *)((uint)local_c & 0xffffff00);
    FUN_0083e850();
  }
  local_c = (void *)0xffffffff;
  ppuStack_44 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_14;
  return;
}



undefined4 * __thiscall FUN_0093c220(undefined4 *param_1_00,int param_1)

{
  *param_1_00 = wxScrollHelperBase::vftable;
  param_1_00[8] = 0;
  param_1_00[9] = 0;
  param_1_00[10] = 0;
  param_1_00[0xb] = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_00840480("..\\..\\src\\generic\\scrlwing.cpp",0x14c,"wxScrollHelperBase::wxScrollHelperBase"
                 ,&DAT_00d517ac,L"associated window can\'t be NULL in wxScrollHelper");
  }
  *(undefined8 *)(param_1_00 + 4) = 0x3ff0000000000000;
  param_1_00[0x14] = 0;
  *(undefined8 *)(param_1_00 + 2) = 0x3ff0000000000000;
  param_1_00[0x13] = 0;
  param_1_00[0x12] = 0;
  param_1_00[0x11] = 0;
  param_1_00[0x10] = 0;
  param_1_00[0xf] = 0;
  param_1_00[0xe] = 0;
  param_1_00[0xd] = 0;
  *(undefined *)((int)param_1_00 + 0x55) = 1;
  *(undefined *)(param_1_00 + 0x15) = 1;
  *(undefined *)((int)param_1_00 + 0x56) = 1;
  param_1_00[0x16] = 0;
  param_1_00[7] = 0;
  param_1_00[0xc] = 0;
  param_1_00[0x17] = 0;
  param_1_00[6] = param_1;
  *(undefined4 **)(param_1 + 0x128) = param_1_00;
  FUN_0093bc70(param_1);
  return param_1_00;
}



void __thiscall
FUN_0093c2c0(int *param_1_00,int param_1,int param_2,int param_3,int param_4,int param_5,int param_6
            )

{
  bool bVar1;
  int *piVar2;
  
  if ((((((param_3 == 0) || (param_1_00[0x11] != 0)) &&
        ((param_1_00[0x11] <= param_3 ||
         (param_1_00[0xd] * param_1_00[0xf] + param_5 <= param_1 * param_3)))) &&
       ((param_4 == 0 || (param_1_00[0x12] != 0)))) &&
      ((param_1_00[0x12] <= param_4 ||
       (param_1_00[0xe] * param_1_00[0x10] + param_6 <= param_2 * param_4)))) &&
     ((param_5 == param_1_00[0xf] && (param_6 == param_1_00[0x10])))) {
    bVar1 = false;
  }
  else {
    bVar1 = true;
  }
  param_1_00[0xe] = param_2;
  param_2 = param_2 * param_4;
  param_1_00[0xd] = param_1;
  param_1 = param_1 * param_3;
  param_1_00[0xf] = param_5;
  param_1_00[0x10] = param_6;
  if (param_2 == 0) {
    param_2 = -1;
  }
  if (param_1 == 0) {
    param_1 = -1;
  }
  (**(code **)(*(int *)param_1_00[7] + 0xb4))(param_1,param_2);
  if ((bVar1) && ((char)param_5 == '\0')) {
    if (param_1_00[10] == 0) {
      piVar2 = (int *)0x0;
    }
    else {
      piVar2 = param_1_00 + 8;
    }
    (**(code **)(*(int *)param_1_00[7] + 0x15c))(1,piVar2);
  }
  if (param_1_00[7] != param_1_00[6]) {
    (**(code **)(*param_1_00 + 0x14))();
  }
  return;
}



int __thiscall FUN_0093c3c0(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar4 = *(int *)(param_1 + 0x2c);
  iVar3 = *(int *)(param_1 + 0xc);
  iVar1 = 0;
  if (iVar3 == DAT_032bfeb0) {
    if (iVar4 != 4) {
      iVar1 = -*(int *)(param_1_00 + 0x40);
      goto LAB_0093c47e;
    }
    iVar1 = -*(int *)(param_1_00 + 0x3c);
  }
  else {
    if (iVar3 == DAT_032bfeb4) {
      if (iVar4 == 4) {
        iVar1 = *(int *)(param_1_00 + 0x44) - *(int *)(param_1_00 + 0x3c);
        goto LAB_0093c483;
      }
      iVar1 = *(int *)(param_1_00 + 0x48) - *(int *)(param_1_00 + 0x40);
    }
    else if (iVar3 == DAT_032bfeb8) {
      iVar1 = -1;
    }
    else if (iVar3 == DAT_032bfebc) {
      iVar1 = 1;
    }
    else if (iVar3 == DAT_032bfec0) {
      if (iVar4 == 4) {
        iVar1 = -*(int *)(param_1_00 + 0x4c);
        goto LAB_0093c483;
      }
      iVar1 = -*(int *)(param_1_00 + 0x50);
    }
    else if (iVar3 == DAT_032bfec4) {
      if (iVar4 == 4) {
        iVar1 = *(int *)(param_1_00 + 0x4c);
        goto LAB_0093c483;
      }
      iVar1 = *(int *)(param_1_00 + 0x50);
    }
    else if ((iVar3 == DAT_032bfec8) || (iVar3 == DAT_032bfecc)) {
      if (iVar4 == 4) {
        iVar1 = *(int *)(param_1 + 0x28) - *(int *)(param_1_00 + 0x3c);
        goto LAB_0093c483;
      }
      iVar1 = *(int *)(param_1 + 0x28) - *(int *)(param_1_00 + 0x40);
    }
LAB_0093c47e:
    if (iVar4 != 4) {
      iVar3 = *(int *)(param_1_00 + 0x40);
      iVar4 = iVar3 + iVar1;
      if (iVar4 < 0) goto LAB_0093c49f;
      iVar2 = *(int *)(param_1_00 + 0x48) - *(int *)(param_1_00 + 0x50);
      goto LAB_0093c4ae;
    }
  }
LAB_0093c483:
  iVar3 = *(int *)(param_1_00 + 0x3c);
  iVar4 = iVar3 + iVar1;
  if (iVar4 < 0) {
LAB_0093c49f:
    return -iVar3;
  }
  iVar2 = *(int *)(param_1_00 + 0x44) - *(int *)(param_1_00 + 0x4c);
LAB_0093c4ae:
  if (iVar2 < iVar4) {
    iVar1 = iVar2 - iVar3;
  }
  return iVar1;
}



void __thiscall FUN_0093c4c0(int param_1_00,int param_1)

{
  int iVar1;
  int unaff_ESI;
  int local_4;
  
  iVar1 = param_1;
  local_4 = param_1_00;
  (**(code **)(**(int **)(param_1 + 8) + 0x108))(&local_4,&param_1);
  (**(code **)(**(int **)(iVar1 + 8) + 0x104))
            (unaff_ESI - *(int *)(param_1_00 + 0x3c) * *(int *)(param_1_00 + 0x34),
             local_4 - *(int *)(param_1_00 + 0x40) * *(int *)(param_1_00 + 0x38));
  (**(code **)(**(int **)(iVar1 + 8) + 0xec))
            (*(undefined8 *)(param_1_00 + 8),*(undefined8 *)(param_1_00 + 0x10));
  return;
}



undefined4 __fastcall FUN_0093c530(int param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  code *pcVar6;
  undefined4 uVar7;
  int unaff_ESI;
  int local_8 [2];
  
  piVar1 = *(int **)(param_1 + 0x18);
  if ((piVar1[0x35] != 0) && (*(int **)(param_1 + 0x1c) == piVar1)) {
    iVar2 = *(int *)(param_1 + 0x40);
    iVar3 = *(int *)(param_1 + 0x38);
    iVar4 = *(int *)(param_1 + 0x3c);
    iVar5 = *(int *)(param_1 + 0x34);
    (**(code **)(*piVar1 + 0xb8))(local_8);
    piVar1 = *(int **)(*(int *)(param_1 + 0x18) + 0xd4);
    pcVar6 = *(code **)(*piVar1 + 0x4c);
    piVar1[9] = -(iVar4 * iVar5);
    piVar1[10] = -(iVar2 * iVar3);
    piVar1[5] = unaff_ESI;
    piVar1[6] = local_8[0];
    (*pcVar6)();
    (**(code **)(*piVar1 + 0x40))(4,unaff_ESI,local_8[0]);
    return 1;
  }
  uVar7 = FUN_0091d660();
  return uVar7;
}



int * __fastcall FUN_0093c600(int param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int unaff_ESI;
  int unaff_EDI;
  undefined local_c [4];
  undefined local_8 [4];
  int *piStack_4;
  
  (**(code **)(**(int **)(param_1 + 0x18) + 0x27c))(local_c,local_8);
  iVar1 = *(int *)(param_1 + 0x18);
  iVar2 = *(int *)(iVar1 + 0xd4);
  *piStack_4 = unaff_EDI;
  piStack_4[1] = unaff_ESI;
  if (iVar2 != 0) {
    piVar3 = (int *)(**(code **)(**(int **)(iVar1 + 0xd4) + 0x44))(&stack0xfffffff0);
    if (*piStack_4 < *piVar3) {
      *piStack_4 = *piVar3;
    }
    if (piStack_4[1] < piVar3[1]) {
      piStack_4[1] = piVar3[1];
    }
  }
  return piStack_4;
}



void __fastcall FUN_0093c670(int *param_1)

{
  undefined4 unaff_ESI;
  undefined4 local_8 [2];
  
  if ((*(byte *)((int *)param_1[7] + 0x37) & 1) != 0) {
    (**(code **)(*(int *)param_1[7] + 0xbc))(local_8);
    (**(code **)(*(int *)param_1[6] + 0xb4))(unaff_ESI,local_8[0]);
    return;
  }
  (**(code **)(*param_1 + 0x14))();
  return;
}



void __fastcall FUN_0093c6c0(int *param_1)

{
  uint uVar1;
  undefined local_18 [4];
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5e08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_0094be80(param_1[6]);
  local_4 = 0;
  (**(code **)(*param_1 + 0x1c))(local_18,uVar1);
  (**(code **)(*param_1 + 0x18))(&stack0xffffffe4);
  local_c = (void *)0xffffffff;
  FUN_00457221();
  ExceptionList = pvStack_14;
  return;
}



void __thiscall FUN_0093c740(int param_1_00,int param_1)

{
  undefined4 uVar1;
  uint uVar2;
  byte bVar3;
  undefined **local_3c [2];
  int local_34;
  undefined4 local_30;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8938;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  if (*(char *)(param_1_00 + 0x56) == '\0') {
    *(undefined *)(param_1 + 0x24) = 1;
    return;
  }
  ExceptionList = &local_c;
  FUN_0092b080(DAT_032bd44c,0,0);
  local_34 = *(int *)(param_1_00 + 0x18);
  bVar3 = 0;
  local_4 = 0;
  local_14 = 0;
  local_10 = 8;
  uVar1 = DAT_032bfebc;
  switch(*(undefined4 *)(param_1 + 0x34)) {
  case 0x138:
    bVar3 = *(byte *)(param_1 + 0x28) & 1;
    uVar1 = DAT_032bfeb4;
    break;
  case 0x139:
    bVar3 = *(byte *)(param_1 + 0x28) & 1;
    uVar1 = DAT_032bfeb0;
    break;
  case 0x13a:
    local_10 = 4;
  case 0x13b:
    local_30 = DAT_032bfeb8;
    uVar1 = local_30;
    break;
  case 0x13c:
    local_10 = 4;
    uVar1 = DAT_032bfebc;
    break;
  case 0x13d:
    break;
  default:
    *(undefined *)(param_1 + 0x24) = 1;
    goto LAB_0093c859;
  case 0x16e:
    local_30 = DAT_032bfec0;
    uVar1 = local_30;
    break;
  case 0x16f:
    uVar1 = DAT_032bfec4;
  }
  local_30 = uVar1;
  (**(code **)(**(int **)(local_34 + 0x70) + 0x18))(local_3c,uVar2);
  if (bVar3 != 0) {
    local_10 = 4;
    (**(code **)(**(int **)(*(int *)(param_1_00 + 0x18) + 0x70) + 0x18))(local_3c);
  }
LAB_0093c859:
  local_4 = 0xffffffff;
  local_3c[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void FUN_0093c8f0(void)

{
  FUN_0091b8a0();
  return;
}



void __thiscall FUN_0093c910(int param_1_00,int param_1)

{
  int unaff_retaddr;
  
  if (*(int **)(param_1_00 + 0x30) != (int *)0x0) {
    (**(code **)(**(int **)(param_1_00 + 0x30) + 4))(1);
    *(undefined4 *)(param_1_00 + 0x30) = 0;
    *(undefined *)(unaff_retaddr + 0x24) = 1;
    return;
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



void __thiscall FUN_0093c950(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  void *pvVar4;
  int *piVar5;
  undefined4 *puVar6;
  int iVar7;
  undefined4 uVar8;
  int local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9dbb;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *(undefined *)(param_1 + 0x24) = 1;
  iVar7 = *(int *)(param_1_00 + 0x1c);
  iVar3 = FUN_009116e0(uVar2);
  if (iVar3 != iVar7) {
    ExceptionList = local_c;
    return;
  }
  iVar7 = *(int *)(param_1 + 0x30);
  iVar3 = *(int *)(param_1 + 0x2c);
  if (iVar3 < 0) {
    uVar8 = 4;
    iVar7 = 0;
  }
  else {
    if (iVar7 < 0) {
      iVar7 = 0;
    }
    else {
      FUN_0043d8d2(&local_14);
      if (local_14 < iVar3) {
        iVar7 = *(int *)(param_1_00 + 0x44);
        uVar8 = 4;
        goto LAB_0093c9d6;
      }
      if (iVar7 <= local_10) {
        ExceptionList = local_c;
        return;
      }
      iVar7 = *(int *)(param_1_00 + 0x48);
    }
    uVar8 = 8;
  }
LAB_0093c9d6:
  cVar1 = FUN_0091b8a0(uVar8);
  if (cVar1 != '\0') {
    if (*(int **)(param_1_00 + 0x30) != (int *)0x0) {
      (**(code **)(**(int **)(param_1_00 + 0x30) + 4))(1);
    }
    pvVar4 = operator_new(0x58);
    local_4 = 0;
    if (pvVar4 == (void *)0x0) {
      piVar5 = (int *)0x0;
    }
    else {
      puVar6 = &DAT_032bfeb8;
      if (iVar7 != 0) {
        puVar6 = &DAT_032bfebc;
      }
      piVar5 = (int *)FUN_0093c060(*(undefined4 *)(param_1_00 + 0x1c),param_1_00,*puVar6,iVar7,uVar8
                                  );
    }
    *(int **)(param_1_00 + 0x30) = piVar5;
    local_4 = 0xffffffff;
    (**(code **)(*piVar5 + 0x50))(0x32,0);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0093ca60(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  undefined **local_3c [2];
  int local_34;
  undefined4 local_30;
  undefined4 local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2568;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  *(int *)(param_1_00 + 0x58) = *(int *)(param_1_00 + 0x58) + *(int *)(param_1 + 0x3c);
  iVar2 = *(int *)(param_1_00 + 0x58) / *(int *)(param_1 + 0x40);
  *(int *)(param_1_00 + 0x58) = *(int *)(param_1_00 + 0x58) - *(int *)(param_1 + 0x40) * iVar2;
  if (iVar2 != 0) {
    FUN_0092b080(DAT_032bd44c,0,0);
    local_34 = *(int *)(param_1_00 + 0x18);
    local_4 = 0;
    local_14 = 0;
    local_10 = (uint)(*(int *)(param_1 + 0x38) == 0) * 4 + 4;
    if (*(int *)(param_1 + 0x44) == -1) {
      if (iVar2 < 1) {
        local_30 = DAT_032bfec4;
      }
      else {
        local_30 = DAT_032bfec0;
      }
      (**(code **)(**(int **)(local_34 + 0x70) + 0x18))(local_3c);
    }
    else {
      uVar3 = *(int *)(param_1 + 0x44) * iVar2;
      if ((int)uVar3 < 1) {
        local_30 = DAT_032bfebc;
      }
      else {
        local_30 = DAT_032bfeb8;
      }
      for (iVar2 = (uVar3 ^ (int)uVar3 >> 0x1f) - ((int)uVar3 >> 0x1f); 0 < iVar2;
          iVar2 = iVar2 + -1) {
        (**(code **)(**(int **)(*(int *)(param_1_00 + 0x18) + 0x70) + 0x18))(local_3c,uVar1);
      }
    }
    local_4 = 0xffffffff;
    local_3c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0093cb90(int *param_1_00,int param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int **ppiVar4;
  int iVar5;
  int iVar6;
  int unaff_EBP;
  int unaff_ESI;
  int *piVar7;
  int **ppiStack_54;
  int *piStack_50;
  int iStack_3c;
  int *local_38;
  int local_34;
  int *local_30;
  int local_2c;
  int iStack_28;
  int iStack_24;
  int iStack_20;
  int iStack_1c;
  undefined auStack_14 [12];
  int iStack_8;
  int iStack_4;
  
  piVar7 = *(int **)(param_1 + 8);
  *(undefined *)(param_1 + 0x24) = 1;
  if (piVar7 != (int *)param_1_00[7]) {
    piVar2 = (int *)FUN_0091ac40();
    if (piVar7 != piVar2) {
      piStack_50 = (int *)0x93cbbf;
      iVar3 = FUN_0048a085();
      if ((iVar3 != 0) && (piVar7[0x11] == param_1_00[7])) {
        return;
      }
    }
    piStack_50 = (int *)0x93cbe0;
    FUN_007b0d3e();
    piVar2 = (int *)piVar7[0x11];
    if (piVar2 != (int *)param_1_00[7]) {
      piStack_50 = &local_34;
      ppiStack_54 = (int **)0x93cbfe;
      (**(code **)(*piVar2 + 0x278))();
      if ((local_34 <= iStack_8) && ((int)local_38 <= iStack_4)) {
        piVar7 = piVar2;
      }
    }
    piStack_50 = &local_2c;
    ppiStack_54 = &local_30;
    (**(code **)(*piVar7 + 0x278))();
    piVar2 = local_38;
    ppiVar4 = &local_30;
    (**(code **)(*piVar7 + 0x274))(ppiVar4,&local_2c);
    (**(code **)(*(int *)param_1_00[7] + 0x260))(&stack0xffffffb8,&stack0xffffffbc);
    local_38 = piStack_50;
    local_30 = piVar2;
    local_2c = local_34;
    local_34 = unaff_EBP;
    cVar1 = FUN_008f76e0(&local_38);
    if (((cVar1 == '\0') && ((int)local_30 <= iStack_20)) && (local_2c <= iStack_1c)) {
      iVar3 = param_1_00[0xd];
      iVar6 = param_1_00[0xe];
      (**(code **)(*param_1_00 + 0x24))(&ppiStack_54,auStack_14);
      if (0 < iVar6) {
        iVar5 = iStack_3c;
        if ((-1 < iStack_3c) && (iVar5 = 0, iStack_24 < local_34 + -1 + iStack_3c)) {
          iVar5 = (local_34 - iStack_24) + iStack_3c + -1 + iVar6;
        }
        iStack_1c = (iStack_1c * iVar6 + iVar5) / iVar6;
      }
      if (0 < iVar3) {
        iVar6 = unaff_ESI;
        if ((-1 < unaff_ESI) && (iVar6 = 0, iStack_28 < (int)local_38 + unaff_ESI + -1)) {
          iVar6 = (int)local_38 + iVar3 + (unaff_ESI - iStack_28) + -1;
        }
        ppiVar4 = (int **)(((int)ppiVar4 * iVar3 + iVar6) / iVar3);
      }
      (**(code **)(*param_1_00 + 0xc))(ppiVar4,iStack_1c);
    }
  }
  return;
}



void __fastcall FUN_0093cd70(int *param_1)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  int iVar4;
  int unaff_EBX;
  int iStack_68;
  int local_64;
  undefined auStack_60 [8];
  int local_58;
  int local_54;
  int local_50;
  int iStack_4c;
  int local_48;
  int iStack_44;
  undefined4 *local_40;
  undefined local_3c;
  undefined auStack_34 [4];
  int iStack_30;
  int iStack_2c;
  undefined auStack_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00bd9de8;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_14;
  iVar4 = DAT_032c0348 + 1;
  local_40 = &DAT_032c0348;
  local_3c = DAT_032c0348 != 0;
  local_c = 0;
  DAT_032c0348 = iVar4;
  if ((bool)local_3c) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_0093cfe9;
  }
  else {
    local_58 = param_1[0xf];
    local_54 = param_1[0x10];
    local_64 = 0;
    do {
      FUN_0093bff0(&local_50);
      (**(code **)(*(int *)param_1[7] + 0xb8))(&local_48);
      (**(code **)(*(int *)param_1[6] + 0x278))(&local_64,auStack_60);
      piVar3 = (int *)(**(code **)(*(int *)param_1[6] + 0xc0))(auStack_34);
      iStack_44 = iStack_68 - piVar3[1];
      local_48 = unaff_EBX - *piVar3;
      (**(code **)(*param_1 + 0x30))(&local_40,&local_48);
      if ((((iStack_30 != local_50) || (iStack_2c != iStack_4c)) && (local_48 <= iStack_30)) &&
         (iStack_44 <= iStack_2c)) {
        local_50 = iStack_30;
        iStack_4c = iStack_2c;
      }
      iVar1 = iStack_4c;
      iVar4 = local_50;
      FUN_0093bea0(4,local_50,local_48,param_1[0xd],param_1 + 0x11,param_1 + 0xf,param_1 + 0x13,
                   param_1[0x18]);
      FUN_0093bea0(8,iVar1,iStack_44,param_1[0xe],param_1 + 0x12,param_1 + 0x10,param_1 + 0x14,
                   param_1[0x19]);
      piVar3 = (int *)FUN_0093bff0(auStack_20);
    } while (((*piVar3 != iVar4) || (piVar3[1] != iVar1)) && (local_64 = local_64 + 1, local_64 < 5)
            );
    iVar4 = param_1[0xf];
    if (local_58 != iVar4) {
      if (*(char *)(param_1 + 0x15) == '\0') {
        if (param_1[10] == 0) {
          piVar3 = (int *)0x0;
        }
        else {
          piVar3 = param_1 + 8;
        }
        (**(code **)(*(int *)param_1[7] + 0x15c))(1,piVar3);
      }
      else {
        if (param_1[10] == 0) {
          piVar3 = (int *)0x0;
        }
        else {
          piVar3 = param_1 + 8;
        }
        (**(code **)(*(int *)param_1[7] + 0x1bc))((local_58 - iVar4) * param_1[0xd],0,piVar3);
      }
    }
    if (local_54 != param_1[0x10]) {
      if (*(char *)((int)param_1 + 0x55) == '\0') {
        if (param_1[10] == 0) {
          piVar3 = (int *)0x0;
        }
        else {
          piVar3 = param_1 + 8;
        }
        (**(code **)(*(int *)param_1[7] + 0x15c))(1,piVar3);
      }
      else {
        if (param_1[10] == 0) {
          piVar3 = (int *)0x0;
        }
        else {
          piVar3 = param_1 + 8;
        }
        (**(code **)(*(int *)param_1[7] + 0x1bc))
                  (0,(local_54 - param_1[0x10]) * param_1[0xe],piVar3);
      }
    }
    if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_0093cfe9;
  }
  local_c = 0xffffffff;
  if (DAT_032c0348 < 1) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/recguard.h",0x26,
                 "wxRecursionGuard::~wxRecursionGuard","m_flag > 0",
                 L"unbalanced wxRecursionGuards!?",uVar2);
  }
LAB_0093cfe9:
  DAT_032c0348 = DAT_032c0348 + -1;
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_0093d010(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int local_8;
  int local_4;
  
  if ((*(int *)(param_1_00 + 0x1c) != 0) &&
     (((param_1 != -1 && (param_1 != *(int *)(param_1_00 + 0x3c))) ||
      ((param_2 != -1 && (param_2 != *(int *)(param_1_00 + 0x40))))))) {
    FUN_0093bff0(&local_8);
    iVar3 = *(int *)(param_1_00 + 0x3c);
    iVar4 = *(int *)(param_1_00 + 0x40);
    if ((param_1 != -1) && (*(int *)(param_1_00 + 0x34) != 0)) {
      local_8 = local_8 / *(int *)(param_1_00 + 0x34);
      if (local_8 < 1) {
        local_8 = 1;
      }
      local_8 = *(int *)(param_1_00 + 0x44) - local_8;
      iVar3 = param_1;
      if (local_8 < param_1) {
        iVar3 = local_8;
      }
      if (iVar3 < 0) {
        iVar3 = 0;
      }
    }
    if ((param_2 != -1) && (*(int *)(param_1_00 + 0x38) != 0)) {
      local_4 = local_4 / *(int *)(param_1_00 + 0x38);
      if (local_4 < 1) {
        local_4 = 1;
      }
      local_4 = *(int *)(param_1_00 + 0x48) - local_4;
      iVar4 = param_2;
      if (local_4 < param_2) {
        iVar4 = local_4;
      }
      if (iVar4 < 0) {
        iVar4 = 0;
      }
    }
    if ((iVar3 != *(int *)(param_1_00 + 0x3c)) || (iVar4 != *(int *)(param_1_00 + 0x40))) {
      (**(code **)(**(int **)(param_1_00 + 0x1c) + 0x160))();
      iVar2 = *(int *)(param_1_00 + 0x3c);
      if (iVar2 != iVar3) {
        *(int *)(param_1_00 + 0x3c) = iVar3;
        (**(code **)(**(int **)(param_1_00 + 0x18) + 0x1ac))(4,iVar3,1);
        if (*(int *)(param_1_00 + 0x28) == 0) {
          iVar1 = 0;
        }
        else {
          iVar1 = param_1_00 + 0x20;
        }
        (**(code **)(**(int **)(param_1_00 + 0x1c) + 0x1bc))
                  ((iVar2 - iVar3) * *(int *)(param_1_00 + 0x34),0,iVar1);
      }
      iVar3 = *(int *)(param_1_00 + 0x40);
      if (iVar3 != iVar4) {
        *(int *)(param_1_00 + 0x40) = iVar4;
        (**(code **)(**(int **)(param_1_00 + 0x18) + 0x1ac))(8,iVar4,1);
        if (*(int *)(param_1_00 + 0x28) == 0) {
          iVar2 = 0;
        }
        else {
          iVar2 = param_1_00 + 0x20;
        }
        (**(code **)(**(int **)(param_1_00 + 0x1c) + 0x1bc))
                  (0,(iVar3 - iVar4) * *(int *)(param_1_00 + 0x38),iVar2);
      }
    }
  }
  return;
}



int * FUN_0093d160(int *param_1,int *param_2,int param_3,int *param_4)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  int unaff_ESI;
  int local_8 [2];
  
  iVar3 = param_4[1];
  *param_1 = *param_4;
  bVar1 = *(byte *)(param_2 + 0x37);
  param_1[1] = iVar3;
  if ((bVar1 & 1) != 0) {
    iVar3 = *(int *)(param_3 + 0x38);
    iVar2 = *(int *)(param_3 + 0x34);
    (**(code **)(*param_2 + 0xa4))(local_8);
    if (0 < iVar2) {
      iVar2 = FUN_008fedb0(0x1c,0);
      *param_1 = iVar2 + unaff_ESI;
    }
    if (0 < iVar3) {
      iVar3 = FUN_008fedb0(0x1b,0);
      param_1[1] = iVar3 + local_8[0];
    }
  }
  return param_1;
}



void __fastcall FUN_0093d1e0(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = wxScrollHelperBase::vftable;
  if ((int *)param_1[0xc] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0xc] + 4))(1);
    param_1[0xc] = 0;
  }
  if ((param_1[6] != 0) && (param_1[0x17] != 0)) {
    cVar1 = FUN_0091c050(param_1[0x17]);
    if ((cVar1 != '\0') && ((int *)param_1[0x17] != (int *)0x0)) {
      (**(code **)(*(int *)param_1[0x17] + 4))(1);
    }
    param_1[0x17] = 0;
  }
  return;
}



void __thiscall FUN_0093d240(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  char unaff_BL;
  int iVar3;
  undefined4 unaff_ESI;
  undefined4 uVar4;
  undefined4 uVar5;
  
  iVar2 = FUN_0093c3c0(param_1);
  iVar3 = 0;
  if (iVar2 == 0) {
    *(undefined *)(param_1 + 0x24) = 1;
    return;
  }
  iVar1 = *(int *)(param_1 + 0x2c);
  if (iVar1 == 4) {
    if (*(char *)(param_1_00 + 0x54) == '\0') {
      *(int *)(param_1_00 + 0x3c) = *(int *)(param_1_00 + 0x3c) + iVar2;
      uVar5 = *(undefined4 *)(param_1_00 + 0x3c);
      uVar4 = 4;
      goto LAB_0093d2d7;
    }
LAB_0093d286:
    (**(code **)(**(int **)(param_1_00 + 0x1c) + 0x160))();
  }
  else if (*(char *)(param_1_00 + 0x55) != '\0') {
    iVar3 = -(*(int *)(param_1_00 + 0x38) * iVar2);
    goto LAB_0093d286;
  }
  if (iVar1 == 4) {
    *(int *)(param_1_00 + 0x3c) = *(int *)(param_1_00 + 0x3c) + iVar2;
    uVar5 = *(undefined4 *)(param_1_00 + 0x3c);
    uVar4 = 4;
  }
  else {
    *(int *)(param_1_00 + 0x40) = *(int *)(param_1_00 + 0x40) + iVar2;
    uVar5 = *(undefined4 *)(param_1_00 + 0x40);
    uVar4 = 8;
  }
LAB_0093d2d7:
  (**(code **)(**(int **)(param_1_00 + 0x18) + 0x1ac))(uVar4,uVar5,1);
  if (unaff_BL == '\0') {
    if (*(int *)(param_1_00 + 0x28) == 0) {
      iVar2 = 0;
    }
    else {
      iVar2 = param_1_00 + 0x20;
    }
    (**(code **)(**(int **)(param_1_00 + 0x1c) + 0x1bc))(unaff_ESI,iVar3,iVar2);
    return;
  }
  if (*(int *)(param_1_00 + 0x28) == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = param_1_00 + 0x20;
  }
  (**(code **)(**(int **)(param_1_00 + 0x1c) + 0x15c))(1,iVar2);
  return;
}



undefined4 * __thiscall FUN_0093d340(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_0093c220(param_1);
  param_1_00[0x19] = 0;
  param_1_00[0x18] = 0;
  *param_1_00 = wxScrollHelper::vftable;
  return param_1_00;
}



char __thiscall FUN_0093d370(int param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  char cVar3;
  
  iVar1 = *(int *)(param_1 + 0xc);
  *(undefined *)(param_1_00 + 0x44) = 1;
  cVar2 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x18))(param_1);
  if (iVar1 == DAT_032bfed0) {
    FUN_0093c670(param_1);
  }
  else if ((cVar2 == '\0') ||
          ((*(char *)(param_1_00 + 0x44) == '\0' && (*(char *)(param_1 + 0x25) == '\0')))) {
    if (iVar1 == DAT_032bff1c) {
      FUN_0093c6c0(param_1);
      return '\x01';
    }
    if (iVar1 == DAT_032bfe40) {
      FUN_0093cb90(param_1);
      return '\x01';
    }
    cVar3 = *(char *)(param_1 + 0x24);
    if (cVar3 != '\0') {
      *(undefined *)(param_1 + 0x24) = 0;
    }
    if (((((iVar1 == DAT_032bfeb0) || (iVar1 == DAT_032bfeb4)) || (iVar1 == DAT_032bfeb8)) ||
        ((iVar1 == DAT_032bfebc || (iVar1 == DAT_032bfec0)))) ||
       ((iVar1 == DAT_032bfec4 || ((iVar1 == DAT_032bfec8 || (iVar1 == DAT_032bfecc)))))) {
      FUN_0093d240(param_1);
      if (*(char *)(param_1 + 0x24) == '\0') {
        cVar2 = '\x01';
        cVar3 = '\0';
      }
    }
    if (iVar1 == DAT_032bfe24) {
      FUN_0093c910(param_1);
      *(char *)(param_1 + 0x24) = cVar3;
      *(undefined4 *)(param_1 + 0x1c) = 0;
      return cVar2;
    }
    if (iVar1 == DAT_032bfe28) {
      FUN_0093c950(param_1);
      *(char *)(param_1 + 0x24) = cVar3;
      *(undefined4 *)(param_1 + 0x1c) = 0;
      return cVar2;
    }
    if (iVar1 == DAT_032bfe44) {
      FUN_0093ca60(param_1);
      return '\x01';
    }
    if (iVar1 == DAT_032bfe60) {
      FUN_0093c740(param_1);
      if (*(char *)(param_1 + 0x24) == '\0') {
        cVar2 = '\x01';
        cVar3 = '\0';
      }
    }
    *(char *)(param_1 + 0x24) = cVar3;
    *(undefined4 *)(param_1 + 0x1c) = 0;
    return cVar2;
  }
  return '\x01';
}



undefined4 __thiscall FUN_0093d4f0(undefined4 param_1_00,byte param_1)

{
  FUN_0093d1e0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_0093d510(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x1e0);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0044c722(uVar1);
    *puVar2 = wxScrolledWindow::vftable;
    puVar2[0x5e] = wxScrolledWindow::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined ** FUN_0093d580(void)

{
  return &PTR_u_wxStaticLine_0323a630;
}



undefined4 * FUN_0093d590(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x194);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0044ced6(uVar1);
    *puVar2 = wxStaticLine::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined ** FUN_0093d5f0(void)

{
  return &PTR_PTR_00d58880;
}



undefined * FUN_0093d600(void)

{
  return &DAT_032c034c;
}



int FUN_0093d6a0(void)

{
  int *piVar1;
  int *piVar2;
  char cVar3;
  int *in_EAX;
  int iVar4;
  
  piVar2 = (int *)in_EAX[0x11];
  while ((piVar1 = piVar2, piVar1 != (int *)0x0 &&
         (cVar3 = (**(code **)(*in_EAX + 0x11c))(), cVar3 == '\0'))) {
    piVar2 = (int *)piVar1[0x11];
    in_EAX = piVar1;
  }
  cVar3 = FUN_0091a910();
  if (cVar3 != '\0') {
    return 0;
  }
  iVar4 = FUN_0048a085(in_EAX,&PTR_u_wxTopLevelWindow_03239ae4);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar4 == 0)) {
    FUN_00840480("..\\..\\src\\msw\\button.cpp",0x110,"GetTLWParentIfNotBeingDeleted",&DAT_00d588c4,
                 L"logic error in GetTLWParentIfNotBeingDeleted()");
  }
  return iVar4;
}



void __thiscall FUN_0093d740(int param_1_00,byte param_1)

{
  int iVar1;
  
  iVar1 = FUN_00894b40();
  if (0x5ff < iVar1) {
    *(byte *)(param_1_00 + 0x19c) = param_1;
    SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x160c,0,(uint)param_1);
    FUN_0091a950();
  }
  return;
}



void __thiscall FUN_0093d8f0(undefined4 *param_1_00,int param_1)

{
  param_1_00[1] = 0;
  param_1_00[2] = 0;
  *param_1_00 = wxWeakRef<class_wxWindow>::vftable;
  if (param_1 != 0) {
    param_1_00[1] = *(undefined4 *)(param_1 + 8);
    *(undefined4 **)(param_1 + 8) = param_1_00;
    param_1_00[2] = param_1;
  }
  return;
}



undefined4 __thiscall FUN_0093d950(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  uint uVar2;
  int iVar3;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda2a8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  iVar3 = param_1_00 + 0x18c;
  if (*(int *)(param_1_00 + 0x194) == 0) {
    iVar3 = param_1_00 + 0x180;
  }
  uVar1 = *(undefined4 *)(iVar3 + 8);
  FUN_0093d8f0(param_1);
  local_4 = 0;
  if (*(int *)(param_1_00 + 0x194) != local_10) {
    if (*(int *)(param_1_00 + 0x194) != 0) {
      FUN_00845930(param_1_00 + 0x18c);
      *(undefined4 *)(param_1_00 + 0x194) = 0;
    }
    if (local_10 != 0) {
      *(undefined4 *)(param_1_00 + 400) = *(undefined4 *)(local_10 + 8);
      *(int *)(local_10 + 8) = param_1_00 + 0x18c;
      *(int *)(param_1_00 + 0x194) = local_10;
    }
  }
  local_4 = 0xffffffff;
  FUN_00925470(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



void __fastcall FUN_0093da10(int *param_1)

{
  undefined4 uVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  uint uVar5;
  int iVar6;
  
  iVar3 = FUN_0093d6a0();
  if (iVar3 != 0) {
    iVar6 = iVar3 + 0x18c;
    if (*(int *)(iVar3 + 0x194) == 0) {
      iVar6 = iVar3 + 0x180;
    }
    uVar1 = *(undefined4 *)(iVar6 + 8);
    FUN_0093d950(param_1);
    piVar4 = (int *)FUN_0048a085(uVar1,&PTR_u_wxButton_0323a6e4);
    if ((piVar4 != (int *)0x0) &&
       (uVar5 = GetWindowLongW((HWND)piVar4[0x4f],-0x10), (~uVar5 & 1) == 0)) {
      if (((byte)uVar5 & 0xb) == 0xb) {
        (**(code **)(*piVar4 + 0x15c))(1,0);
      }
      else {
        SendMessageW((HWND)piVar4[0x4f],0xf4,uVar5 & 0xfffffffe,1);
      }
    }
    cVar2 = (**(code **)(*DAT_032bcb68 + 0xd0))();
    if (cVar2 != '\0') {
      iVar3 = FUN_0091cdc0(param_1);
      if (iVar3 == 0) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\msw\\button.cpp",0x144,"wxButton::SetDefaultStyle",
                       &DAT_00d588c4,L"button without top level window?");
          return;
        }
      }
      else {
        SendMessageW(*(HWND *)(iVar3 + 0x13c),0x401,param_1[0x10],0);
        uVar5 = GetWindowLongW((HWND)param_1[0x4f],-0x10);
        if ((~uVar5 & 1) != 0) {
          if (((byte)uVar5 & 0xb) != 0xb) {
            SendMessageW((HWND)param_1[0x4f],0xf4,uVar5 | 1,1);
            return;
          }
          (**(code **)(*param_1 + 0x15c))(1,0);
        }
      }
    }
  }
  return;
}



void __fastcall FUN_0093db60(int *param_1)

{
  undefined4 uVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int *piVar6;
  
  iVar3 = FUN_0093d6a0();
  if (iVar3 != 0) {
    FUN_0093d950(0);
    iVar4 = iVar3 + 0x18c;
    if (*(int *)(iVar3 + 0x194) == 0) {
      iVar4 = iVar3 + 0x180;
    }
    uVar1 = *(undefined4 *)(iVar4 + 8);
    uVar5 = GetWindowLongW((HWND)param_1[0x4f],-0x10);
    if ((~uVar5 & 1) == 0) {
      if (((byte)uVar5 & 0xb) == 0xb) {
        (**(code **)(*param_1 + 0x15c))(1,0);
      }
      else {
        SendMessageW((HWND)param_1[0x4f],0xf4,uVar5 & 0xfffffffe,1);
      }
    }
    piVar6 = (int *)FUN_0048a085(uVar1,&PTR_u_wxButton_0323a6e4);
    if ((piVar6 != (int *)0x0) && (cVar2 = (**(code **)(*DAT_032bcb68 + 0xd0))(), cVar2 != '\0')) {
      iVar3 = FUN_0091cdc0(piVar6);
      if (iVar3 == 0) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\msw\\button.cpp",0x144,"wxButton::SetDefaultStyle",
                       &DAT_00d588c4,L"button without top level window?");
          return;
        }
      }
      else {
        SendMessageW(*(HWND *)(iVar3 + 0x13c),0x401,piVar6[0x10],0);
        uVar5 = GetWindowLongW((HWND)piVar6[0x4f],-0x10);
        if ((~uVar5 & 1) != 0) {
          if (((byte)uVar5 & 0xb) != 0xb) {
            SendMessageW((HWND)piVar6[0x4f],0xf4,uVar5 | 1,1);
            return;
          }
          (**(code **)(*piVar6 + 0x15c))(1,0);
        }
      }
    }
  }
  return;
}



void __fastcall FUN_0093dd00(undefined4 *param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined **ppuVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd9e48;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *param_1 = wxButton::vftable;
  local_4 = 0;
  puVar3 = (undefined4 *)FUN_0091cdc0(param_1,uVar2);
  if (puVar3 == (undefined4 *)0x0) goto LAB_0093dd92;
  ppuVar4 = (undefined **)(**(code **)*puVar3)();
  if (ppuVar4 != &PTR_u_wxTopLevelWindow_03239ae4) {
    if (ppuVar4[3] != (undefined *)0x0) {
      cVar1 = FUN_0048a047(&PTR_u_wxTopLevelWindow_03239ae4);
      if (cVar1 != '\0') goto LAB_0093dd83;
    }
    if (ppuVar4[4] == (undefined *)0x0) goto LAB_0093dd92;
    cVar1 = FUN_0048a047(&PTR_u_wxTopLevelWindow_03239ae4);
    if (cVar1 == '\0') goto LAB_0093dd92;
  }
LAB_0093dd83:
  if ((undefined4 *)puVar3[0x65] == param_1) {
    FUN_0093db60();
  }
LAB_0093dd92:
  local_4 = 0xffffffff;
  FUN_0093f590();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0093ddc0(int param_1)

{
  uint uVar1;
  undefined **local_6c [2];
  int local_64;
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  void *local_28;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1ca8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032bfdb8,*(undefined4 *)(param_1 + 0x40));
  local_4 = 0;
  local_64 = param_1;
  thunk_FUN_0091c170(local_6c);
  local_4 = 0xffffffff;
  _free(local_28);
  if (7 < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40);
  }
  local_40 = local_40 & 0xffff0000;
  local_2c = 7;
  local_30 = 0;
  local_6c[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_0093deb0(int *param_1_00,undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined *puVar4;
  int iVar5;
  undefined4 local_64;
  undefined4 uStack_60;
  undefined4 local_5c;
  undefined local_58 [4];
  undefined4 uStack_54;
  uint uStack_40;
  void *pvStack_3c;
  undefined local_34 [4];
  uint local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9e80;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_64;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  local_64 = param_1;
  local_5c = param_8;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  FID_conflict_assign(param_3,0,0xffffffff);
  local_18 = (void *)0x0;
  local_4 = 0;
  if ((local_20 == 0) && (cVar1 = FUN_0097c730(param_2,uVar2), cVar1 != '\0')) {
    if ((param_2 == 0x13ec) || ((param_2 == 0x13ed || (param_2 == 0x1389)))) {
      uVar3 = 0;
    }
    else {
      uVar3 = 1;
    }
    puVar4 = (undefined *)FUN_0097d110(local_58,param_2,uVar3);
    local_4._0_1_ = 1;
    if (local_34 != puVar4) {
      FID_conflict_assign(puVar4,0,0xffffffff);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    _free(pvStack_3c);
    if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_54);
    }
  }
  cVar1 = FUN_00937250(local_64,param_2,param_4,param_5,param_6,param_7,local_5c);
  if (cVar1 == '\0') {
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  else {
    uVar2 = (**(code **)(*param_1_00 + 0x2c8))(param_6,&uStack_60);
    local_64 = 10;
    iVar5 = FUN_00420f3f(&local_64,0,1);
    FUN_00936b00(L"BUTTON",uVar2 | -(uint)(iVar5 != -1) & 0x2000,param_4,param_5,local_34,uStack_60)
    ;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_0093e0c0(HDC *param_1)

{
  if (param_1[1] != (HDC)0xffffffff) {
    SetTextColor(*param_1,(COLORREF)param_1[1]);
  }
  if (param_1[2] != (HDC)0xffffffff) {
    SetBkColor(*param_1,(COLORREF)param_1[2]);
  }
  return;
}



void __fastcall FUN_0093e0f0(HDC *param_1)

{
  if (param_1[1] != (HDC)0x0) {
    SetBkMode(*param_1,(int)param_1[1]);
  }
  return;
}



void __fastcall FUN_0093e110(undefined4 *param_1)

{
  *param_1 = wxButtonImageData::vftable;
  return;
}



undefined4 * __thiscall FUN_0093e120(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxButtonImageData::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int * FUN_0093e140(int *param_1,int *param_2,int *param_3,byte param_4)

{
  int iVar1;
  int iVar2;
  
  iVar1 = param_3[1];
  *param_1 = *param_3;
  param_1[1] = iVar1;
  if ((param_4 & 2) == 0) {
    iVar2 = (**(code **)(*param_2 + 0x198))();
    iVar1 = *param_2;
    *param_1 = *param_1 + iVar2 * 3;
    iVar1 = (**(code **)(iVar1 + 0x194))();
    param_1[1] = param_1[1] + iVar1 / 2;
  }
  else {
    iVar1 = (**(code **)(*param_2 + 0x198))();
    *param_1 = *param_1 + (iVar1 * 3) / 2;
  }
  if ((param_4 & 1) != 0) {
    iVar1 = FUN_008fedb0(0x19,0);
    *param_1 = *param_1 + iVar1;
  }
  return param_1;
}



void __thiscall FUN_0093e1c0(int *param_1_00,int param_1,undefined4 param_2,undefined4 param_3)

{
  bool bVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  bool bVar5;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9ef9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar5 = false;
  if (param_1 == 0x203) {
    FUN_0090d970(0x201,param_2,param_3);
    goto LAB_0093e2cd;
  }
  if (param_1 == 0x31a) {
    FUN_0091a950();
    goto LAB_0093e2cd;
  }
  if (param_1 == 0x200) {
    if ((*(byte *)(param_1_00 + 0x51) & 1) != 0) goto LAB_0093e2cd;
  }
  else if (param_1 != 0x2a3) goto LAB_0093e2cd;
  cVar2 = FUN_0091b930(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  if (cVar2 == '\0') {
LAB_0093e29b:
    bVar1 = false;
  }
  else {
    iVar3 = FUN_0090d640();
    if (iVar3 == 0) {
      if (param_1_00[0x65] != 0) {
        piVar4 = (int *)(**(code **)(*(int *)param_1_00[0x65] + 4))(local_14,1);
        bVar5 = true;
        local_c = (void *)0x0;
        cVar2 = (**(code **)(*piVar4 + 0x10))();
        if (cVar2 != '\0') goto LAB_0093e294;
      }
      goto LAB_0093e29b;
    }
LAB_0093e294:
    bVar1 = true;
  }
  local_4 = 0xffffffff;
  if (bVar5) {
    FUN_008f7630();
  }
  if (bVar1) {
    (**(code **)(*param_1_00 + 0x15c))(1,0);
  }
LAB_0093e2cd:
  FUN_0090d970(param_1,param_2,param_3);
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0093e300(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  if (*(int *)(param_1_00 + 0x194) != 0) {
    (**(code **)(**(int **)(param_1_00 + 0x194) + 0x10))(param_1,param_2);
    FUN_0091a950();
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\msw\\anybutton.cpp",0x2d9,"wxAnyButton::DoSetBitmapMargins",
                 "m_imageData","SetBitmap() must be called first");
  }
  return;
}



void __thiscall FUN_0093e360(int param_1_00,undefined4 param_1)

{
  if (*(int *)(param_1_00 + 0x194) != 0) {
    (**(code **)(**(int **)(param_1_00 + 0x194) + 0x18))(param_1);
    FUN_0091a950();
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\msw\\anybutton.cpp",0x2e1,"wxAnyButton::DoSetBitmapPosition",
                 "m_imageData","SetBitmap() must be called first");
  }
  return;
}



undefined4 FUN_0093e3c0(int *param_1,byte param_2)

{
  char cVar1;
  undefined4 uVar2;
  
  if ((param_2 & 4) != 0) {
    return 3;
  }
  if ((param_2 & 1) != 0) {
    return 2;
  }
  cVar1 = (**(code **)(*param_1 + 0x158))();
  if (cVar1 == '\0') {
    cVar1 = FUN_0090f250();
    if (cVar1 == '\0') {
      if ((param_2 & 0x10) != 0) {
        return 4;
      }
                    // WARNING: Could not recover jumptable at 0x0093e416. Too many branches
                    // WARNING: Treating indirect jump as call
      uVar2 = (**(code **)(*param_1 + 0x374))();
      return uVar2;
    }
  }
  return 1;
}



void FUN_0093e420(undefined4 param_1,undefined4 *param_2)

{
  FUN_0095dd50(param_1,*param_2,param_2[1],param_2[2],param_2[1]);
  FUN_0095dd50(param_1,param_2[2],param_2[1],param_2[2],param_2[3]);
  FUN_0095dd50(param_1,param_2[2],param_2[3],*param_2,param_2[3]);
  FUN_0095dd50(param_1,*param_2,param_2[3],*param_2,param_2[1]);
  return;
}



undefined4 * __thiscall
FUN_0093e480(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxImageList::vftable;
  FUN_009b6e30(param_1,param_2,param_3,param_4);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_0093e4f0(undefined4 param_1_00,byte param_1)

{
  FUN_009b6c20();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int * FUN_0093e510(int *param_1,int param_2,int *param_3)

{
  int iVar1;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  int local_4;
  
  iVar1 = param_3[1];
  *param_1 = *param_3;
  param_1[1] = iVar1;
  local_10 = 0x32;
  local_c = 0xe;
  FUN_0091f410(&local_8,&local_10);
  if (((*(byte *)(param_2 + 0xe0) & 1) == 0) && (*param_1 < local_8)) {
    *param_1 = local_8;
  }
  if (param_1[1] < local_4) {
    param_1[1] = local_4;
  }
  iVar1 = *param_1;
  *(int *)(param_2 + 0x134) = param_1[1];
  *(int *)(param_2 + 0x130) = iVar1;
  return param_1;
}



void __thiscall FUN_0093e590(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int iStack_24;
  int iStack_20;
  int iStack_1c;
  int iStack_18;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  int *piStack_4;
  
  piStack_4 = (int *)0xffffffff;
  puStack_8 = &LAB_00bd9f28;
  local_c = ExceptionList;
  if (*(int *)(param_1 + 0x194) == 0) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    ExceptionList = &local_c;
    FUN_00840480("..\\..\\src\\msw\\anybutton.cpp",0x1f0,"wxAnyButton::AdjustForBitmapSize",
                 "m_imageData",L"shouldn\'t be called if no image",
                 DAT_0323f878 ^ (uint)&stack0xffffffcc);
    ExceptionList = local_c;
    return;
  }
  ExceptionList = &local_c;
  iVar2 = (**(code **)(**(int **)(param_1 + 0x194) + 4))(local_14,0);
  if (*(int *)(iVar2 + 4) == 0) {
    iVar2 = 0;
    iVar5 = 0;
  }
  else {
    iVar5 = *(int *)(*(int *)(iVar2 + 4) + 0xc);
    iVar2 = *(int *)(*(int *)(iVar2 + 4) + 8);
  }
  FUN_008f7630();
  iVar3 = (**(code **)(**(int **)(param_1 + 0x194) + 0x14))();
  piVar1 = piStack_4;
  if ((iVar3 == 0x10) || (iVar3 == 0x20)) {
    *piStack_4 = *piStack_4 + iVar2;
    if (piStack_4[1] < iVar5) {
      piStack_4[1] = iVar5;
    }
  }
  else {
    piStack_4[1] = piStack_4[1] + iVar5;
    if (*piStack_4 < iVar2) {
      *piStack_4 = iVar2;
    }
  }
  piVar4 = (int *)(**(code **)(**(int **)(param_1 + 0x194) + 0xc))(&iStack_1c);
  iVar2 = *piVar4;
  piVar1[1] = piVar1[1] + piVar4[1] * 2;
  *piVar1 = *piVar1 + iVar2 * 2;
  if ((*(uint *)(param_1 + 0xe0) >> 0x15 & 1) == 0) {
    iVar2 = FUN_0098e820();
    if (((iVar2 == 0) || (iVar5 = (**(code **)(iVar2 + 0x94))(), iVar5 == 0)) ||
       (iVar2 = (**(code **)(iVar2 + 0x90))(), iVar2 == 0)) {
      iVar5 = 4;
      iVar2 = 4;
    }
    else {
      FUN_0090e7e0(param_1,L"BUTTON");
      piStack_4 = (int *)0x0;
      iVar2 = FUN_0098e820();
      (**(code **)(iVar2 + 0x60))(param_2,0,1,1,0xe12,0,&iStack_24);
      if (*piVar1 < 8) {
        *piVar1 = 8;
      }
      if (piVar1[1] < 8) {
        piVar1[1] = 8;
      }
      iVar2 = iStack_20 + 2 + iStack_24;
      iVar5 = iStack_18 + 2 + iStack_1c;
      piStack_4 = (int *)0xffffffff;
      if (param_2 != 0) {
        iVar3 = FUN_0098e820();
        (**(code **)(iVar3 + 4))(param_2);
        *piVar1 = *piVar1 + iVar2;
        piVar1[1] = piVar1[1] + iVar5;
        ExceptionList = local_c;
        return;
      }
    }
    *piVar1 = *piVar1 + iVar2;
    piVar1[1] = piVar1[1] + iVar5;
    ExceptionList = local_c;
    return;
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0093e7b0(HGDIOBJ *param_1)

{
  if (*param_1 != (HGDIOBJ)0x0) {
    DeleteObject(*param_1);
  }
  return;
}



undefined4 FUN_0093e7c0(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined **local_1c [2];
  undefined **local_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9f79;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  FUN_008f3b70(local_14);
  local_4 = 1;
  uVar2 = FUN_00902690(local_1c,param_2);
  local_4._0_1_ = 2;
  FUN_00414f38(uVar2,0xffffffff);
  local_4._0_1_ = 1;
  local_1c[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4 = (uint)local_4._1_3_ << 8;
  local_14[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0093e870(int param_1_00,int param_1,int param_2)

{
  if (param_1_00 + 4 + param_2 * 8 != param_1) {
    FUN_0083ea60(param_1);
  }
  return;
}



undefined4 * __thiscall FUN_0093e890(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined **ppuVar1;
  undefined ***pppuVar2;
  bool bVar3;
  undefined **local_1c;
  undefined4 local_18;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd9fd2;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar3 = *(int *)(param_1_00 + 0x194) == 0;
  if (bVar3) {
    local_18 = 0;
    local_1c = wxBitmap::vftable;
    pppuVar2 = &local_1c;
  }
  else {
    pppuVar2 = (undefined ***)
               (**(code **)(**(int **)(param_1_00 + 0x194) + 4))
                         (local_14,param_2,DAT_0323f878 ^ (uint)&stack0xffffffd8);
    uStack_4 = 1;
  }
  *param_1 = wxObject::vftable;
  ppuVar1 = pppuVar2[1];
  param_1[1] = ppuVar1;
  if (ppuVar1 != (undefined **)0x0) {
    ppuVar1[1] = ppuVar1[1] + 1;
  }
  *param_1 = wxBitmap::vftable;
  if (bVar3) {
    FUN_008f7630();
  }
  uStack_4 = 0;
  if (!bVar3) {
    FUN_008f7630();
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_0093e970(HDC param_1,LPRECT param_2,char param_3,char param_4)

{
  DWORD DVar1;
  HPEN h;
  HPEN h_00;
  HPEN h_01;
  HPEN h_02;
  HGDIOBJ h_03;
  tagRECT local_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda018;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  CopyRect(&local_1c,param_2);
  DVar1 = GetSysColor(0x15);
  h = CreatePen(0,0,DVar1);
  uStack_4 = 0;
  DVar1 = GetSysColor(0x10);
  h_00 = CreatePen(0,0,DVar1);
  DVar1 = GetSysColor(0x16);
  h_01 = CreatePen(0,0,DVar1);
  DVar1 = GetSysColor(0x14);
  h_02 = CreatePen(0,0,DVar1);
  h_03 = SelectObject(param_1,h);
  local_1c.right = local_1c.right + -1;
  local_1c.bottom = local_1c.bottom + -1;
  uStack_4 = CONCAT31(uStack_4._1_3_,4);
  if (param_4 == '\0') {
    if (param_3 != '\0') {
      FUN_0093e420(param_1,&local_1c);
      InflateRect(&local_1c,-1,-1);
    }
    FUN_0095dd50(param_1,local_1c.left,local_1c.bottom,local_1c.right,local_1c.bottom);
    FUN_0095dd50(param_1,local_1c.right,local_1c.bottom,local_1c.right,local_1c.top + -1);
    SelectObject(param_1,h_02);
    FUN_0095dd50(param_1,local_1c.left,local_1c.bottom + -1,local_1c.left,local_1c.top);
    FUN_0095dd50(param_1,local_1c.left,local_1c.top,local_1c.right,local_1c.top);
    SelectObject(param_1,h_01);
    FUN_0095dd50(param_1,local_1c.left + 1,local_1c.bottom + -2,local_1c.left + 1,local_1c.top + 1);
    FUN_0095dd50(param_1,local_1c.left + 1,local_1c.top + 1,local_1c.right + -1,local_1c.top + 1);
    SelectObject(param_1,h_00);
    FUN_0095dd50(param_1,local_1c.left + 1,local_1c.bottom + -1,local_1c.right + -1,
                 local_1c.bottom + -1);
    FUN_0095dd50(param_1,local_1c.right + -1,local_1c.bottom + -1,local_1c.right + -1,local_1c.top);
  }
  else {
    FUN_0093e420(param_1,&local_1c);
    SelectObject(param_1,h_00);
    InflateRect(&local_1c,-1,-1);
    FUN_0093e420(param_1,&local_1c);
  }
  InflateRect(param_2,-4,-4);
  if (param_1 != (HDC)0x0) {
    SelectObject(param_1,h_03);
  }
  if (h_02 != (HPEN)0x0) {
    DeleteObject(h_02);
  }
  if (h_01 != (HPEN)0x0) {
    DeleteObject(h_01);
  }
  if (h_00 != (HPEN)0x0) {
    DeleteObject(h_00);
  }
  if (h != (HPEN)0x0) {
    DeleteObject(h);
  }
  ExceptionList = local_c;
  return;
}



void FUN_0093ebc0(undefined **param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  undefined **ppuVar2;
  HDC hDC;
  code **ppcVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  HBRUSH hbr;
  void *unaff_EBP;
  LPRECT unaff_retaddr;
  HDC pHVar10;
  tagRECT tStack_70;
  undefined **ppuStack_60;
  wchar_t *pwStack_5c;
  uint uStack_58;
  int iStack_3c;
  undefined4 uStack_20;
  void *local_c;
  undefined *puStack_8;
  HDC local_4;
  
  ppuVar2 = param_1;
  local_4 = (HDC)0xffffffff;
  puStack_8 = &LAB_00bda050;
  local_c = ExceptionList;
  uStack_58 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  pwStack_5c = L"璋尤Ｓ윻ᙴ躋ļ";
  ppcVar3 = (code **)FUN_0098e820();
  if (ppcVar3 == (code **)0x0) {
    param_1 = (undefined **)0x0;
  }
  else {
    ppuStack_60 = (undefined **)param_1[0x4f];
    pwStack_5c = L"BUTTON";
    tStack_70.bottom = 0x93ec06;
    param_1 = (undefined **)(**ppcVar3)();
  }
  pwStack_5c = (wchar_t *)param_4;
  ppuStack_60 = ppuVar2;
  local_4 = (HDC)0x0;
  tStack_70.bottom = 0x93ec1f;
  iVar4 = FUN_0093e3c0();
  uVar1 = *(undefined4 *)(&DAT_00d58ab8 + iVar4 * 4);
  pwStack_5c = L"咋尤譓诸㡇Ūｒ诐⑬譤⑜蕠瓀唡㖉\xf648̫蚋ļ";
  iVar4 = FUN_0098e820();
  ppuStack_60 = (undefined **)0x1;
  tStack_70.bottom = (LONG)param_1;
  tStack_70.right = 0x93ec41;
  pwStack_5c = (wchar_t *)uVar1;
  iVar5 = (**(code **)(iVar4 + 0x38))();
  hDC = local_4;
  if (iVar5 != 0) {
    DAT_032bf648 = ppuVar2;
    tStack_70.left = (LONG)ppuVar2[0x4f];
    tStack_70.top = (LONG)local_4;
    (**(code **)(iVar4 + 0xb4))();
    DAT_032bf648 = (undefined **)0x0;
  }
  tStack_70.right = 0;
  pHVar10 = hDC;
  (**(code **)(iVar4 + 8))(puStack_8,hDC,1);
  (**(code **)(iVar4 + 0x60))(uStack_20,hDC,1,tStack_70.right,0xe12,unaff_retaddr);
  InflateRect(unaff_retaddr,-(int)&tStack_70.bottom,-(int)pHVar10);
  InflateRect(unaff_retaddr,-1,-1);
  if ((*(byte *)(ppuVar2 + 0x37) & 0x10) != 0) {
    piVar6 = (int *)FUN_0091de40(&ppuStack_60);
    uVar7 = (**(code **)(*piVar6 + 0x18))();
    uVar7 = (uVar7 & 0xff) << 8;
    uVar8 = (**(code **)(*piVar6 + 0x14))();
    uVar9 = (**(code **)(*piVar6 + 0x10))();
    ppuStack_60 = wxObject::vftable;
    FUN_0083e850();
    hbr = CreateSolidBrush(uVar9 & 0xff | (uVar8 & 0xff | uVar7) << 8);
    CopyRect(&tStack_70,unaff_retaddr);
    InflateRect(&tStack_70,-1,-1);
    FillRect(hDC,&tStack_70,hbr);
    if (hbr != (HBRUSH)0x0) {
      DeleteObject(hbr);
    }
  }
  if (iStack_3c != 0) {
    iVar4 = FUN_0098e820();
    (**(code **)(iVar4 + 4))(iStack_3c);
  }
  ExceptionList = unaff_EBP;
  return;
}



void __fastcall FUN_0093eda0(int param_1)

{
  LONG LVar1;
  uint uVar2;
  
  LVar1 = GetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x10);
  if (((byte)LVar1 & 0xb) != 0xb) {
    uVar2 = GetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x10);
    SetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x10,uVar2 & 0xffffeffb | 0xb);
  }
  return;
}



void FUN_0093eed0(HWND param_1)

{
  uint uVar1;
  int iVar2;
  uint dwNewLong;
  undefined4 uStack_4;
  
  uVar1 = GetWindowLongW(param_1,-0x10);
  uStack_4 = 10;
  iVar2 = FUN_00420f3f(&uStack_4,0,1);
  if (iVar2 == -1) {
    dwNewLong = uVar1 & 0xffffdfff;
  }
  else {
    dwNewLong = uVar1 | 0x2000;
  }
  if (dwNewLong != uVar1) {
    SetWindowLongW(param_1,-0x10,dwNewLong);
  }
  return;
}



undefined __fastcall FUN_0093ef30(int *param_1)

{
  int iVar1;
  bool bVar2;
  undefined uVar3;
  undefined local_24 [4];
  undefined4 uStack_20;
  uint uStack_c;
  void *pvStack_8;
  
  bVar2 = false;
  if (((uint)param_1[0x38] >> 1 & 1) == 0) {
    iVar1 = (**(code **)(*param_1 + 0x58))(local_24);
    bVar2 = true;
    if (*(int *)(iVar1 + 0x14) != 0) {
      uVar3 = 0;
      goto LAB_0093ef63;
    }
  }
  uVar3 = 1;
LAB_0093ef63:
  if (bVar2) {
    _free(pvStack_8);
    if (7 < uStack_c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_20);
    }
  }
  return uVar3;
}



undefined4 * __thiscall FUN_0093ef90(undefined4 *param_1_00,int *param_1,undefined4 *param_2)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  int iVar5;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bda096;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1_00 = `anonymous_namespace'::wxODButtonImageData::vftable;
  _eh_vector_constructor_iterator_
            (param_1_00 + 1,8,5,(_func_void_void_ptr *)&LAB_00445a46,FUN_008f7630);
  param_1_00[0xb] = 0;
  param_1_00[0xc] = 0;
  local_4._0_1_ = 1;
  if (param_1_00 + 1 != param_2) {
    FUN_0083ea60(param_2);
  }
  puVar3 = (undefined4 *)FUN_0093e7c0(local_14,0xff);
  local_4._0_1_ = 2;
  if (param_1_00 + 7 != puVar3) {
    FUN_0083ea60(puVar3);
  }
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_008f7630(uVar2);
  param_1_00[0xd] = 0x10;
  cVar1 = FUN_0093ef30();
  if (cVar1 == '\0') {
    uVar4 = (**(code **)(*param_1 + 0x198))();
    param_1_00[0xb] = uVar4;
    iVar5 = (**(code **)(*param_1 + 0x194))();
    param_1_00[0xc] = iVar5 / 2;
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_0093f080(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *(undefined4 *)(param_1_00 + 0x30);
  *param_1 = *(undefined4 *)(param_1_00 + 0x2c);
  param_1[1] = uVar1;
  return;
}



void __thiscall FUN_0093f0a0(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x34) = param_1;
  return;
}



void __fastcall FUN_0093f0b0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bda0c8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  _eh_vector_destructor_iterator_(param_1 + 1,8,5,FUN_008f7630);
  *param_1 = wxButtonImageData::vftable;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0093f110(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 0x2c) = param_1;
  *(undefined4 *)(param_1_00 + 0x30) = param_2;
  return;
}



undefined4 __thiscall FUN_0093f130(undefined4 param_1_00,byte param_1)

{
  FUN_0093f0b0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_0093f150(int param_1_00,undefined4 *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 8 + param_2 * 8);
  *param_1 = wxObject::vftable;
  param_1[1] = iVar1;
  *param_1 = wxBitmap::vftable;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  return;
}



undefined4 FUN_0093f180(undefined4 param_1,int *param_2)

{
  undefined4 uVar1;
  undefined4 uStack_5c;
  uint *puStack_58;
  uint uStack_54;
  uint local_44;
  undefined4 local_40;
  int *piStack_38;
  undefined4 uStack_34;
  uint local_30;
  void *pvStack_2c;
  void *pvStack_24;
  uint uStack_1c;
  undefined4 uStack_14;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bda100;
  local_c = ExceptionList;
  uStack_54 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  puStack_58 = (uint *)param_2;
  uStack_5c = 0x93f1b4;
  FUN_0094bd30();
  puStack_58 = &local_30;
  local_4 = 0;
  local_44 = 0;
  local_40 = 0;
  uStack_5c = 0x93f1d3;
  uVar1 = (**(code **)(*param_2 + 0x338))();
  uStack_5c = 0;
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
  (**(code **)(*piStack_38 + 0xa8))(uVar1,&stack0xffffffb8,&local_44,0);
  uStack_1c = uStack_1c & 0xffffff00;
  _free(pvStack_2c);
  if (7 < local_30) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_44);
  }
  local_30 = 7;
  uStack_34 = 0;
  local_44 = local_44 & 0xffff0000;
  FUN_0093e140(uStack_14,param_2,&uStack_5c,local_c);
  uStack_1c = 0xffffffff;
  FUN_00457221();
  ExceptionList = pvStack_24;
  return uStack_14;
}



undefined4 __thiscall FUN_0093f270(int *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  uint uVar4;
  undefined4 local_38;
  undefined4 local_34;
  undefined auStack_30 [8];
  undefined auStack_28 [8];
  undefined auStack_20 [8];
  undefined auStack_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0a88;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_38 = 0;
  local_34 = 0;
  cVar1 = FUN_0093ef30(DAT_0323f878 ^ (uint)&stack0xffffffc0);
  if (cVar1 == '\0') {
    uVar4 = 0;
    if ((*(byte *)(param_1 + 0x38) & 1) != 0) {
      uVar4 = 2;
    }
    cVar1 = (**(code **)(*param_1 + 0x36c))();
    if (cVar1 != '\0') {
      uVar4 = uVar4 | 1;
    }
    if (param_1[0x66] == 0) {
      puVar3 = (undefined4 *)FUN_0093f180(auStack_20,param_1,uVar4);
      local_38 = *puVar3;
      local_34 = puVar3[1];
    }
    else {
      FUN_0094bd30(param_1);
      uStack_4 = 0;
      uVar2 = FUN_009b8de0(auStack_30,auStack_18,0);
      puVar3 = (undefined4 *)FUN_0093e140(auStack_28,param_1,uVar2,uVar4);
      local_38 = *puVar3;
      local_34 = puVar3[1];
      uStack_4 = 0xffffffff;
      FUN_00457221();
    }
  }
  if (param_1[0x65] != 0) {
    FUN_0093e590(&local_38);
  }
  FUN_0093e510(param_2,param_1,&local_38);
  ExceptionList = local_c;
  return param_2;
}



void FUN_0093f3a0(HDC param_1,LPRECT param_2,int *param_3)

{
  int iVar1;
  undefined4 ***pppuVar2;
  uint uVar3;
  int unaff_EBX;
  int iStack_40;
  int iStack_3c;
  int iStack_38;
  HDC pHStack_34;
  HDC local_30 [2];
  undefined4 ***local_28 [4];
  int iStack_18;
  uint uStack_14;
  void *pvStack_10;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&iStack_40;
  local_30[0] = param_1;
  (**(code **)(*param_3 + 0x58))(local_28);
  local_30[0] = (HDC)0xa;
  iVar1 = FUN_00420f3f(local_30,0,1);
  if (iVar1 == -1) {
    uVar3 = param_3[0x38];
    if ((uVar3 >> 8 & 1) == 0) {
      if ((uVar3 >> 6 & 1) == 0) {
        param_3 = (int *)((uint)param_3 | 1);
      }
    }
    else {
      param_3 = (int *)((uint)param_3 | 2);
    }
    if ((uVar3 >> 9 & 1) == 0) {
      if ((uVar3 >> 7 & 1) == 0) {
        param_3 = (int *)((uint)param_3 | 4);
      }
    }
    else {
      param_3 = (int *)((uint)param_3 | 8);
    }
    pppuVar2 = local_28[0];
    if (uStack_14 < 8) {
      pppuVar2 = local_28;
    }
    uVar3 = (uint)param_3 | 0x20;
    pHStack_34 = param_1;
  }
  else {
    uVar3 = (uint)param_3 | 1;
    CopyRect((LPRECT)&stack0xffffffbc,param_2);
    pppuVar2 = local_28[0];
    if (uStack_14 < 8) {
      pppuVar2 = local_28;
    }
    DrawTextW(param_1,(LPCWSTR)pppuVar2,iStack_18,(LPRECT)&stack0xffffffbc,0x401);
    iStack_38 = iStack_38 - iStack_40;
    iStack_3c = ((param_2->right - param_2->left) / 2 - (iStack_3c - unaff_EBX) / 2) + param_2->left
                + (iStack_3c - unaff_EBX);
    iStack_40 = ((param_2->bottom - param_2->top) / 2 - iStack_38 / 2) + param_2->top;
    iStack_38 = iStack_40 + iStack_38;
    pppuVar2 = local_28[0];
    if (uStack_14 < 8) {
      pppuVar2 = local_28;
    }
    param_2 = (LPRECT)&stack0xffffffbc;
  }
  DrawTextW(pHStack_34,(LPCWSTR)pppuVar2,iStack_18,param_2,uVar3);
  _free(pvStack_10);
  if (7 < uStack_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_28[0]);
  }
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_0093f550(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  return param_1_00;
}



void __fastcall FUN_0093f590(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bda128;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxAnyButton::vftable;
  local_4 = 0;
  if ((undefined4 *)param_1[0x65] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x65])(1,uVar2);
  }
  iVar1 = param_1[0x66];
  if (iVar1 != 0) {
    _free(*(void **)(iVar1 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  local_4 = 0xffffffff;
  FUN_0044cd6b();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0093f640(int param_1_00,int param_1)

{
  int iVar1;
  
  FUN_0093eed0(*(undefined4 *)(param_1_00 + 0x13c),param_1);
  if (param_1_00 + 0x164 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  FUN_0091a950();
  FUN_0095f6a0(param_1);
  iVar1 = *(int *)(param_1_00 + 0x198);
  if (iVar1 != 0) {
    _free(*(void **)(iVar1 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



undefined __thiscall FUN_0093f6d0(int *param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  void *pvVar3;
  int iVar4;
  void *unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd98b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  cVar1 = FUN_009376b0(param_1);
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  if (param_1_00[0x66] == 0) {
    pvVar3 = operator_new(0x24);
    local_4 = 0;
    if (pvVar3 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = FUN_0093f550(param_1);
    }
    local_4 = 0xffffffff;
    param_1_00[0x66] = iVar4;
    FUN_0093eda0(uVar2);
  }
  else if (param_1_00[0x66] != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  (**(code **)(*param_1_00 + 0x15c))(1,0);
  ExceptionList = unaff_EDI;
  return 1;
}



void __thiscall FUN_0093f7a0(HDC *param_1_00,COLORREF param_1,COLORREF param_2)

{
  char cVar1;
  HDC pHVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be1c19;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == 0xffffffff) {
    param_1_00[1] = (HDC)0xffffffff;
  }
  else {
    pHVar2 = (HDC)SetTextColor(*param_1_00,param_1);
    param_1_00[1] = pHVar2;
    if (pHVar2 == (HDC)0xffffffff) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  if (param_2 == 0xffffffff) {
    param_1_00[2] = (HDC)0xffffffff;
  }
  else {
    pHVar2 = (HDC)SetBkColor(*param_1_00,param_2);
    param_1_00[2] = pHVar2;
    if (pHVar2 == (HDC)0xffffffff) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 2;
        FUN_008423d0();
        uStack_4._0_1_ = 3;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = CONCAT31(uStack_4._1_3_,2);
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0093f9b0(HDC *param_1_00,int param_1)

{
  char cVar1;
  HDC pHVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pHVar2 = (HDC)SetBkMode(*param_1_00,(param_1 != 0x6a) + 1);
  param_1_00[1] = pHVar2;
  if (pHVar2 == (HDC)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0093fac0(int param_1)

{
  char cVar1;
  LRESULT LVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  LVar2 = SendMessageW(*(HWND *)(param_1 + 0x28),0x1602,0,param_1 + 0x10);
  if (LVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0083fbe0();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_0093fbb0(undefined4 *param_1_00,int param_1,int param_2)

{
  bool bVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bda17c;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  bVar1 = false;
  iVar6 = 0;
  *param_1_00 = `anonymous_namespace'::wxXPButtonImageData::vftable;
  iVar4 = *(int *)(param_2 + 4);
  local_4 = 0;
  if (iVar4 == 0) {
    uVar5 = 0;
    uVar3 = 0;
  }
  else {
    uVar5 = *(undefined4 *)(iVar4 + 0xc);
    uVar3 = *(undefined4 *)(iVar4 + 8);
  }
  FUN_0093e480(uVar3,uVar5,1,5);
  local_4._0_1_ = 1;
  param_1_00[10] = *(undefined4 *)(param_1 + 0x13c);
  do {
    iVar4 = param_2;
    if (iVar6 == 3) {
      iVar4 = FUN_0093e7c0(local_14,0xff);
      bVar1 = true;
      local_4._0_1_ = 2;
    }
    FUN_009b6f70(iVar4,&PTR_vftable_03238cc8);
    local_4._0_1_ = 1;
    local_4._1_3_ = 0;
    if (bVar1) {
      bVar1 = false;
      FUN_008f7630(uVar2);
    }
    iVar6 = iVar6 + 1;
  } while (iVar6 < 5);
  param_1_00[4] = param_1_00[3];
  param_1_00[8] = 0;
  param_1_00[6] = 0;
  param_1_00[7] = 0;
  param_1_00[5] = 0;
  param_1_00[9] = 0;
  FUN_0093fac0();
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_0093fcc0(undefined4 param_1,undefined4 param_2)

{
  FUN_009b7940(param_1,param_2);
  return param_1;
}



undefined4 __fastcall FUN_0093fcf0(int param_1)

{
  switch(*(undefined4 *)(param_1 + 0x24)) {
  case 0:
    goto switchD_0093fcf8_caseD_0;
  case 1:
    return 0x20;
  case 2:
    return 0x40;
  case 3:
    return 0x80;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\msw\\anybutton.cpp",0x117,
                   "`anonymous-namespace\'::wxXPButtonImageData::GetBitmapPosition","Assert failure"
                   ,"invalid image alignment");
    }
switchD_0093fcf8_caseD_0:
    return 0x10;
  }
}



void __fastcall FUN_0093fd60(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bda0c8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_009b6c20(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1 = wxButtonImageData::vftable;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0093fdb0(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *(undefined4 *)(param_1_00 + 0x18);
  *param_1 = *(undefined4 *)(param_1_00 + 0x14);
  param_1[1] = uVar1;
  return;
}



undefined4 __thiscall FUN_0093fdd0(undefined4 param_1_00,byte param_1)

{
  FUN_0093fd60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_0093fdf0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  LRESULT LVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x1c) = param_1;
  *(undefined4 *)(param_1_00 + 0x14) = param_1;
  *(undefined4 *)(param_1_00 + 0x20) = param_2;
  *(undefined4 *)(param_1_00 + 0x18) = param_2;
  LVar2 = SendMessageW(*(HWND *)(param_1_00 + 0x28),0x1604,0,
                       (LPARAM)(undefined4 *)(param_1_00 + 0x14));
  if (LVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0083fbe0();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_0093fef0(undefined4 param_1,undefined4 param_2)

{
  FUN_009b73b0(param_2,param_1,&PTR_vftable_03238cc8);
  FUN_0093fac0();
  return;
}



void __thiscall FUN_0093ff20(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  switch(param_1) {
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\msw\\anybutton.cpp",0x12e,
                   "`anonymous-namespace\'::wxXPButtonImageData::SetBitmapPosition","Assert failure"
                   ,"invalid direction");
    }
  case 0x10:
    iVar1 = 0;
    break;
  case 0x20:
    iVar1 = 1;
    break;
  case 0x40:
    iVar1 = 2;
    break;
  case 0x80:
    iVar1 = 3;
  }
  if (iVar1 != *(int *)(param_1_00 + 0x24)) {
    *(int *)(param_1_00 + 0x24) = iVar1;
    FUN_0093fac0();
  }
  return;
}



void __thiscall FUN_00940020(int *param_1,int param_2,int param_3)

{
  char cVar1;
  int iVar2;
  int iVar3;
  void *pvVar4;
  int *piVar5;
  undefined4 uVar6;
  undefined4 unaff_EBX;
  int *piVar7;
  bool bVar8;
  undefined4 local_20;
  int iStack_1c;
  int iStack_18;
  void *local_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1e6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  piVar7 = (int *)0x0;
  local_20 = 0;
  if ((int *)param_1[0x65] == (int *)0x0) {
LAB_009400ce:
    bVar8 = false;
  }
  else {
    iVar2 = (**(code **)(*(int *)param_1[0x65] + 4))
                      (local_14,0,DAT_0323f878 ^ (uint)&stack0xffffffd0);
    local_20 = 1;
    if (*(int *)(iVar2 + 4) == 0) {
      iStack_1c = 0;
      iStack_18 = 0;
    }
    else {
      iStack_18 = *(int *)(*(int *)(iVar2 + 4) + 0xc);
      iStack_1c = *(int *)(*(int *)(iVar2 + 4) + 8);
    }
    iVar3 = iStack_1c;
    iVar2 = 0;
    if (*(int *)(param_2 + 4) == 0) {
      iStack_1c = 0;
    }
    else {
      iVar2 = *(int *)(*(int *)(param_2 + 4) + 0xc);
      iStack_1c = *(int *)(*(int *)(param_2 + 4) + 8);
    }
    if ((iStack_1c == iVar3) && (bVar8 = iVar2 == iStack_18, iStack_18 = iVar2, bVar8))
    goto LAB_009400ce;
    bVar8 = true;
    iStack_18 = iVar2;
  }
  if ((char)local_20 != '\0') {
    FUN_008f7630();
  }
  if (bVar8) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_3 != 0)) {
      FUN_008402e0("..\\..\\src\\msw\\anybutton.cpp",0x294,"wxAnyButton::DoSetBitmap",
                   "which == State_Normal","Must set normal bitmap with the new size first");
    }
    cVar1 = FUN_0093ef30();
    if (cVar1 == '\0') {
      iVar2 = FUN_0098e820();
      if (iVar2 != 0) {
        iVar3 = (**(code **)(iVar2 + 0x94))();
        if (iVar3 != 0) {
          iVar2 = (**(code **)(iVar2 + 0x90))();
          if (iVar2 != 0) {
            piVar7 = (int *)param_1[0x65];
            param_1[0x65] = 0;
          }
        }
      }
    }
  }
  if ((int *)param_1[0x65] == (int *)0x0) {
    cVar1 = FUN_0093ef30();
    if (cVar1 == '\0') {
      iVar2 = FUN_0098e820();
      if (iVar2 != 0) {
        iVar3 = (**(code **)(iVar2 + 0x94))();
        if (iVar3 != 0) {
          iVar2 = (**(code **)(iVar2 + 0x90))();
          if (iVar2 != 0) {
            pvVar4 = operator_new(0x2c);
            uStack_4 = 0;
            if (pvVar4 == (void *)0x0) {
              piVar5 = (int *)0x0;
            }
            else {
              piVar5 = (int *)FUN_0093fbb0(param_1,param_2);
            }
            uStack_4 = 0xffffffff;
            param_1[0x65] = (int)piVar5;
            if (piVar7 != (int *)0x0) {
              iVar2 = *piVar5;
              uVar6 = (**(code **)(*piVar7 + 0x14))();
              (**(code **)(iVar2 + 0x18))(uVar6);
              (**(code **)(*piVar7 + 0xc))(&local_20);
              (**(code **)(*(int *)param_1[0x65] + 0x10))(unaff_EBX,local_20);
              (**(code **)*piVar7)(1);
            }
            goto LAB_0094027c;
          }
        }
      }
    }
    pvVar4 = operator_new(0x38);
    uStack_4 = 1;
    if (pvVar4 == (void *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = FUN_0093ef90(param_1,param_2);
    }
    uStack_4 = 0xffffffff;
    param_1[0x65] = iVar2;
    FUN_0093eda0();
  }
  else {
    (**(code **)(*(int *)param_1[0x65] + 8))(param_2,param_3);
  }
LAB_0094027c:
  if (param_3 == 0) {
    FUN_0091a950();
  }
  (**(code **)(*param_1 + 0x15c))(1,0);
  ExceptionList = local_14[0];
  return;
}



undefined4 __thiscall FUN_009402b0(int param_1_00,int param_1)

{
  HDC hdc;
  char cVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  COLORREF color;
  HBRUSH hbr;
  undefined4 uVar6;
  COLORREF *pCVar7;
  DWORD DVar8;
  uint uVar9;
  int iVar10;
  int iVar11;
  undefined4 uStack_84;
  undefined4 uStack_80;
  HDC local_7c;
  uint local_78;
  HBRUSH pHStack_74;
  int *piStack_70;
  int *piStack_6c;
  HDC pHStack_68;
  COLORREF CStack_64;
  int *piStack_60;
  HDC pHStack_5c;
  int aiStack_58 [2];
  int *piStack_50;
  int iStack_4c;
  int iStack_48;
  int iStack_44;
  tagRECT tStack_40;
  int iStack_30;
  int iStack_2c;
  int iStack_28;
  undefined **ppuStack_24;
  undefined **appuStack_20 [4];
  undefined uStack_10;
  undefined4 local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bda279;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  local_78 = 0;
  uVar9 = *(uint *)(param_1 + 0x10);
  local_7c = *(HDC *)(param_1 + 0x18);
  iVar3 = FUN_0093e3c0(param_1_00,uVar9,uVar2);
  if (iVar3 == 2) {
    uVar9 = uVar9 | 1;
  }
  else if (iVar3 == 3) {
    uVar9 = uVar9 | 4;
  }
  else if (iVar3 == 4) {
    uVar9 = uVar9 | 0x10;
  }
  uVar4 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0xf2,0,0);
  uStack_80 = CONCAT31(uStack_80._1_3_,(char)(uVar4 >> 2)) & 0xffffff01;
  CopyRect(&tStack_40,(RECT *)(param_1 + 0x1c));
  if ((*(uint *)(param_1_00 + 0xe0) >> 0x15 & 1) == 0) {
    iVar3 = FUN_0098e820();
    if (((iVar3 == 0) || (iVar5 = (**(code **)(iVar3 + 0x94))(), iVar5 == 0)) ||
       (iVar3 = (**(code **)(iVar3 + 0x90))(), iVar3 == 0)) {
      uVar6 = FUN_0091de40(appuStack_20);
      uStack_4 = 0;
      color = FUN_0090e430(uVar6);
      uStack_4 = 0xffffffff;
      appuStack_20[0] = wxObject::vftable;
      FUN_0083e850();
      hbr = CreateSolidBrush(color);
      uStack_4 = 1;
      pHStack_74 = hbr;
      FillRect(local_7c,&tStack_40,hbr);
      uStack_84 = CONCAT31(uStack_84._1_3_,(char)uVar9) & 0xffffff01;
      if ((uVar9 & 1) == 0) {
        uVar6 = FUN_0091cdc0(param_1_00,&PTR_u_wxTopLevelWindow_03239ae4);
        iVar3 = FUN_0048a085(uVar6);
        if (iVar3 != 0) {
          if (*(int *)(iVar3 + 0x194) == 0) {
            iVar3 = iVar3 + 0x180;
          }
          else {
            iVar3 = iVar3 + 0x18c;
          }
          uStack_84 = CONCAT31(uStack_84._1_3_,*(int *)(iVar3 + 8) == param_1_00);
        }
      }
      FUN_0093e970(local_7c,&tStack_40,uStack_84,uStack_80);
      uStack_4 = 0xffffffff;
      if (hbr != (HBRUSH)0x0) {
        DeleteObject(hbr);
      }
    }
    else {
      FUN_0093ebc0(param_1_00,local_7c,&tStack_40,uVar9);
    }
    if (((uVar9 & 0x10) != 0) && ((uVar9 & 0x200) == 0)) {
      DrawFocusRect(local_7c,&tStack_40);
      iVar3 = FUN_0090d640();
      if ((iVar3 == 0) && ((char)uStack_80 != '\0')) {
        OffsetRect(&tStack_40,1,1);
      }
    }
  }
  if (*(int *)(param_1_00 + 0x194) == 0) goto LAB_00940737;
  iVar3 = **(int **)(param_1_00 + 0x194);
  uVar6 = FUN_0093e3c0(param_1_00,uVar9,uVar2);
  (**(code **)(iVar3 + 4))(&pHStack_5c,uVar6);
  local_c = (void *)0x2;
  if ((piStack_60 == (int *)0x0) || (cVar1 = (**(code **)(*piStack_60 + 4))(), cVar1 == '\0')) {
    pCVar7 = (COLORREF *)(**(code **)(**(int **)(param_1_00 + 0x194) + 4))(&pHStack_5c,0);
    local_c._0_1_ = 3;
    if (&CStack_64 != pCVar7) {
      FUN_0083ea60(pCVar7);
    }
    local_c = (void *)CONCAT31(local_c._1_3_,2);
    FUN_008f7630();
  }
  if (piStack_60 == (int *)0x0) {
    local_7c = (HDC)0x0;
    local_78 = 0;
  }
  else {
    local_78 = piStack_60[3];
    local_7c = (HDC)piStack_60[2];
  }
  (**(code **)(**(int **)(param_1_00 + 0x194) + 0xc))(&piStack_70);
  iVar3 = local_78 + (int)piStack_70 * 2;
  piStack_60 = (int *)((int)&local_7c->unused + (int)pHStack_74 * 2);
  iVar10 = tStack_40.left - iStack_48;
  tStack_40.right = iStack_48;
  iVar11 = iStack_44 - iStack_4c;
  tStack_40.top = iStack_4c;
  iStack_28 = (iVar10 - (int)local_7c) / 2 + iStack_48;
  iVar5 = (iVar11 - (int)local_7c) / 2 + iStack_4c;
  tStack_40.bottom = iVar11;
  iStack_30 = iVar10;
  cVar1 = FUN_0093ef30();
  if (cVar1 != '\0') goto LAB_009406ad;
  uVar6 = (**(code **)(**(int **)(param_1_00 + 0x194) + 0x14))();
  switch(uVar6) {
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\msw\\anybutton.cpp",0x496,"wxAnyButton::MSWOnDraw","Assert failure"
                   ,"invalid direction");
    }
  case 0x10:
    iVar5 = (int)&pHStack_74->unused + tStack_40.top;
    tStack_40.top = tStack_40.top + (int)piStack_60;
    goto LAB_009406a9;
  case 0x20:
    iVar5 = ((iVar11 - (int)local_7c) - (int)pHStack_74) + -1 + tStack_40.top;
LAB_009406a9:
    tStack_40.bottom = iVar11 - (int)piStack_60;
    break;
  case 0x40:
    iStack_28 = (int)piStack_70 + tStack_40.right;
    tStack_40.right = tStack_40.right + iVar3;
    iStack_30 = iVar10 - iVar3;
    break;
  case 0x80:
    iStack_30 = iVar10 - iVar3;
    iStack_28 = ((iVar10 - (int)local_7c) - (int)piStack_70) + -1 + tStack_40.right;
  }
LAB_009406ad:
  FUN_0090e740(uVar9,&DAT_03238d04);
  uStack_10 = 4;
  (**(code **)(*piStack_50 + 0x164))(&pHStack_68,iVar5,iStack_28,1);
  tStack_40.right = iStack_28 + iStack_30;
  tStack_40.left = iStack_30;
  tStack_40.bottom = (int)ppuStack_24 + iStack_2c;
  tStack_40.top = iStack_2c;
  uStack_4 = CONCAT31(uStack_4._1_3_,2);
  FUN_00457221();
  uStack_4 = 0xffffffff;
  FUN_008f7630();
LAB_00940737:
  cVar1 = FUN_0093ef30();
  if (cVar1 == '\0') {
    if ((uVar9 & 4) == 0) {
      uVar6 = FUN_0091df90(appuStack_20);
      uStack_4 = 5;
      local_78 = 1;
      DVar8 = FUN_0090e430(uVar6);
    }
    else {
      DVar8 = GetSysColor(0x11);
    }
    uStack_4 = 0xffffffff;
    if ((local_78 & 1) != 0) {
      appuStack_20[0] = wxObject::vftable;
      FUN_0083e850();
    }
    pHStack_68 = local_7c;
    FUN_0093f7a0(DVar8,0xffffffff);
    uStack_4 = 6;
    pHStack_5c = local_7c;
    FUN_0093f9b0(0x6a);
    uStack_4._0_1_ = 7;
    if (*(int *)(param_1_00 + 0x198) == 0) {
      FUN_0093f3a0(local_7c,&tStack_40,param_1_00,(uVar9 & 0x100) << 0xc);
    }
    else {
      FUN_0090e740(local_7c,&DAT_03238d04);
      uStack_4._0_1_ = 8;
      uVar6 = FUN_0044cbe4(DVar8);
      uStack_4._0_1_ = 9;
      (**(code **)(*piStack_6c + 0x78))(uVar6);
      uStack_8._0_1_ = 8;
      ppuStack_24 = wxObject::vftable;
      FUN_0083e850();
      uVar6 = FUN_0091e100(aiStack_58);
      uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,10);
      (**(code **)(*piStack_70 + 0x50))(uVar6);
      uStack_4._0_1_ = 8;
      FUN_00921450();
      iStack_28 = tStack_40.right - tStack_40.left;
      ppuStack_24 = (undefined **)(tStack_40.bottom - tStack_40.top);
      iStack_2c = tStack_40.top;
      iStack_30 = tStack_40.left;
      FUN_009b8ec0(&pHStack_74,&iStack_30,~(uVar9 >> 8) & 1);
      uStack_4._0_1_ = 7;
      FUN_00457221();
    }
    if (aiStack_58[0] != 0) {
      SetBkMode(pHStack_5c,aiStack_58[0]);
    }
    hdc = pHStack_68;
    if (CStack_64 != 0xffffffff) {
      SetTextColor(pHStack_68,CStack_64);
    }
    if (piStack_60 != (int *)0xffffffff) {
      SetBkColor(hdc,(COLORREF)piStack_60);
    }
  }
  ExceptionList = local_c;
  return 1;
}



undefined ** FUN_009409c0(void)

{
  return &PTR_u_wxButton_0323a6e4;
}



void __thiscall FUN_009409d0(int *param_1_00,uint param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if ((param_1 & 0xffffff0f) != 0) {
      FUN_008402e0("..\\..\\src\\common\\btncmn.cpp",0x70,"wxAnyButtonBase::SetBitmapPosition",
                   "!(dir & ~wxDIRECTION_MASK)","non-direction flag used");
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
       ((param_1 >> 7 & 1) + (param_1 >> 6 & 1) + (param_1 >> 5 & 1) + (param_1 >> 4 & 1) != 1)) {
      FUN_008402e0("..\\..\\src\\common\\btncmn.cpp",0x75,"wxAnyButtonBase::SetBitmapPosition",
                   "!!(dir & wxLEFT) + !!(dir & wxRIGHT) + !!(dir & wxTOP) + !!(dir & wxBOTTOM) == 1"
                   ,"exactly one direction flag must be set");
    }
  }
  (**(code **)(*param_1_00 + 0x368))(param_1);
  return;
}



undefined4 __thiscall FUN_00940a70(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  uint uVar2;
  int iVar3;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda2a8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  iVar3 = param_1_00 + 0x18c;
  if (*(int *)(param_1_00 + 0x194) == 0) {
    iVar3 = param_1_00 + 0x180;
  }
  uVar1 = *(undefined4 *)(iVar3 + 8);
  FUN_0093d8f0(param_1);
  local_4 = 0;
  if (*(int *)(param_1_00 + 0x188) != local_10) {
    if (*(int *)(param_1_00 + 0x188) != 0) {
      FUN_00845930(param_1_00 + 0x180);
      *(undefined4 *)(param_1_00 + 0x188) = 0;
    }
    if (local_10 != 0) {
      *(undefined4 *)(param_1_00 + 0x184) = *(undefined4 *)(local_10 + 8);
      *(int *)(local_10 + 8) = param_1_00 + 0x180;
      *(int *)(param_1_00 + 0x188) = local_10;
    }
  }
  local_4 = 0xffffffff;
  FUN_00925470(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



undefined4 __fastcall FUN_00940b30(undefined4 param_1)

{
  char cVar1;
  undefined4 *puVar2;
  undefined **ppuVar3;
  undefined4 uVar4;
  
  puVar2 = (undefined4 *)FUN_0091cdc0(param_1);
  if (puVar2 != (undefined4 *)0x0) {
    ppuVar3 = (undefined **)(**(code **)*puVar2)();
    if (ppuVar3 == &PTR_u_wxTopLevelWindow_03239ae4) {
LAB_00940b80:
      uVar4 = FUN_00940a70(param_1);
      return uVar4;
    }
    if (ppuVar3[3] != (undefined *)0x0) {
      cVar1 = FUN_0048a047(&PTR_u_wxTopLevelWindow_03239ae4);
      if (cVar1 != '\0') goto LAB_00940b80;
    }
    if (ppuVar3[4] != (undefined *)0x0) {
      cVar1 = FUN_0048a047(&PTR_u_wxTopLevelWindow_03239ae4);
      if (cVar1 != '\0') goto LAB_00940b80;
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\btncmn.cpp",0x69,"wxButtonBase::SetDefault",&DAT_00d588c4,
                 L"button without top level window?");
  }
  return 0;
}



undefined4 * FUN_00940bc0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x1a0);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0044ced6(uVar1);
    puVar2[0x65] = 0;
    puVar2[0x66] = 0;
    *puVar2 = wxButton::vftable;
    *(undefined *)(puVar2 + 0x67) = 0;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined * FUN_00940c50(void)

{
  return &DAT_0323a6fc;
}



undefined4 * __fastcall FUN_00940c60(undefined4 *param_1)

{
  FUN_00845b70();
  *param_1 = wxValidator::vftable;
  param_1[0x10] = 0;
  return param_1;
}



void __fastcall FUN_00940c80(undefined4 *param_1)

{
  *param_1 = wxValidator::vftable;
  FUN_00846530();
  return;
}



undefined4 * FUN_00940c90(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x44);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00845b70(uVar1);
    *puVar2 = wxValidator::vftable;
    puVar2[0x10] = 0;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * __thiscall FUN_00940d10(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxValidator::vftable;
  FUN_00846530();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00940d40(undefined4 param_1_00,byte param_1)

{
  FUN_00945f30();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00940d60(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bda2d8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00853f30(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  FUN_00945f30();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00940dc0(LPCRITICAL_SECTION *param_1)

{
  LeaveCriticalSection(*param_1);
  return;
}



undefined4 FUN_00940dd0(int *param_1,undefined4 param_2,int **param_3)

{
  char cVar1;
  
  FUN_009b29d0(0xd58f9c,param_2);
  cVar1 = FUN_009b2860(param_2,&PTR_DAT_0323a714,2);
  if (cVar1 != '\0') {
    *param_3 = param_1;
    (**(code **)(*param_1 + 4))(param_1);
    return 0;
  }
  *param_3 = (int *)0x0;
  return 0x80004002;
}



undefined4 FUN_00940e20(int param_1)

{
  FUN_009b2b80(0xd58f9c,*(undefined4 *)(param_1 + 4));
  *(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
  return *(undefined4 *)(param_1 + 4);
}



int FUN_00940e40(int *param_1)

{
  int *piVar1;
  
  FUN_009b2cf0(0xd58f9c,param_1[1]);
  piVar1 = param_1 + 1;
  *piVar1 = *piVar1 + -1;
  if (*piVar1 == 0) {
    (**(code **)(*param_1 + 0x1c))(1);
    return 0;
  }
  return param_1[1];
}



void __fastcall FUN_00940e80(int param_1)

{
  if (*(int **)(param_1 + 0x18) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x18) + 8))(1);
  }
  if (*(int **)(param_1 + 0x14) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x14) + 8))(1);
  }
  if (*(int *)(param_1 + 0x10) != 0) {
    (**(code **)(**(int **)(param_1 + 0x10) + 8))(*(int **)(param_1 + 0x10));
  }
  if (*(int *)(param_1 + 0xc) != 0) {
    (**(code **)(**(int **)(param_1 + 0xc) + 8))(*(int **)(param_1 + 0xc));
  }
  if (*(int *)(param_1 + 8) != 0) {
    (**(code **)(**(int **)(param_1 + 8) + 8))(*(int **)(param_1 + 8));
  }
  return;
}



void __fastcall FUN_00940ee0(int *param_1)

{
  HWND hWnd;
  UINT Msg;
  WPARAM wParam;
  LPARAM lParam;
  
  lParam = 0;
  wParam = 0;
  Msg = 0x301;
  hWnd = (HWND)(**(code **)(*param_1 + 0xac))();
  SendMessageW(hWnd,Msg,wParam,lParam);
  return;
}



void __fastcall FUN_00940f00(int *param_1)

{
  HWND hWnd;
  UINT Msg;
  WPARAM wParam;
  LPARAM lParam;
  
  lParam = 0;
  wParam = 0;
  Msg = 0x300;
  hWnd = (HWND)(**(code **)(*param_1 + 0xac))();
  SendMessageW(hWnd,Msg,wParam,lParam);
  return;
}



void __fastcall FUN_00940f20(int *param_1)

{
  HWND hWnd;
  UINT Msg;
  WPARAM wParam;
  LPARAM lParam;
  
  lParam = 0;
  wParam = 0;
  Msg = 0x302;
  hWnd = (HWND)(**(code **)(*param_1 + 0xac))();
  SendMessageW(hWnd,Msg,wParam,lParam);
  return;
}



void __fastcall FUN_00940f40(int *param_1)

{
  HWND hWnd;
  UINT Msg;
  WPARAM wParam;
  LPARAM lParam;
  
  lParam = 0;
  wParam = 0;
  Msg = 199;
  hWnd = (HWND)(**(code **)(*param_1 + 0xac))();
  SendMessageW(hWnd,Msg,wParam,lParam);
  return;
}



void __fastcall FUN_00940f60(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x00940f65. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x40))();
  return;
}



bool __fastcall FUN_00940f70(int *param_1)

{
  HWND hWnd;
  LRESULT LVar1;
  UINT Msg;
  WPARAM wParam;
  LPARAM lParam;
  
  lParam = 0;
  wParam = 0;
  Msg = 0xc6;
  hWnd = (HWND)(**(code **)(*param_1 + 0xac))();
  LVar1 = SendMessageW(hWnd,Msg,wParam,lParam);
  return LVar1 != 0;
}



void __fastcall FUN_00940fa0(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x00940fa5. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x48))();
  return;
}



void __thiscall FUN_00940fb0(int *param_1_00,int param_1)

{
  if (param_1 == -1) {
    param_1 = (**(code **)(*param_1_00 + 0x5c))();
  }
  (**(code **)(*param_1_00 + 0xa8))(param_1,param_1,1);
  return;
}



undefined * __fastcall FUN_00940fe0(int *param_1)

{
  int **ppiVar1;
  int *local_4;
  
  ppiVar1 = &local_4;
  local_4 = param_1;
  (**(code **)(*param_1 + 0x68))(&local_4,0);
  return (undefined *)ppiVar1;
}



void __fastcall FUN_00941000(int *param_1)

{
  HWND hWnd;
  UINT Msg;
  WPARAM wParam;
  LPARAM lParam;
  
  lParam = 0;
  wParam = 0;
  Msg = 0xc1;
  hWnd = (HWND)(**(code **)(*param_1 + 0xac))();
  SendMessageW(hWnd,Msg,wParam,lParam);
  return;
}



void __thiscall FUN_00941020(int *param_1_00,WPARAM param_1,int param_2)

{
  HWND hWnd;
  UINT Msg;
  
  if ((param_1 == 0xffffffff) && (param_2 == -1)) {
    param_1 = 0;
  }
  Msg = 0xb1;
  hWnd = (HWND)(**(code **)(*param_1_00 + 0xac))();
  SendMessageW(hWnd,Msg,param_1,param_2);
  return;
}



void __thiscall FUN_00941050(int *param_1,undefined4 *param_2,undefined4 *param_3)

{
  HWND hWnd;
  UINT Msg;
  undefined4 *wParam;
  undefined4 *lParam;
  undefined4 local_8;
  undefined4 local_4;
  
  wParam = &local_8;
  lParam = &local_4;
  Msg = 0xb0;
  hWnd = (HWND)(**(code **)(*param_1 + 0xac))();
  SendMessageW(hWnd,Msg,(WPARAM)wParam,(LPARAM)lParam);
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = local_8;
  }
  if (param_3 != (undefined4 *)0x0) {
    *param_3 = local_4;
  }
  return;
}



uint __fastcall FUN_009410a0(int *param_1)

{
  HWND hWnd;
  uint uVar1;
  int nIndex;
  
  nIndex = -0x10;
  hWnd = (HWND)(**(code **)(*param_1 + 0xac))();
  uVar1 = GetWindowLongW(hWnd,nIndex);
  return ~(uVar1 >> 0xb) & 1;
}



void __thiscall FUN_009410c0(int *param_1_00,char param_1)

{
  uint wParam;
  HWND hWnd;
  UINT Msg;
  LPARAM lParam;
  
  lParam = 0;
  wParam = (uint)(param_1 == '\0');
  Msg = 0xcf;
  hWnd = (HWND)(**(code **)(*param_1_00 + 0xac))();
  SendMessageW(hWnd,Msg,wParam,lParam);
  return;
}



void __thiscall FUN_009410f0(int *param_1_00,uint param_1)

{
  HWND hWnd;
  UINT Msg;
  LPARAM lParam;
  
  if (0xfffe < param_1) {
    param_1 = 0;
  }
  lParam = 0;
  Msg = 0xc5;
  hWnd = (HWND)(**(code **)(*param_1_00 + 0xac))();
  SendMessageW(hWnd,Msg,param_1,lParam);
  return;
}



undefined4 __thiscall FUN_00941120(int *param_1_00,int *param_1)

{
  uint lParam;
  HWND hWnd;
  UINT Msg;
  WPARAM wParam;
  
  if (*param_1 != -1) {
    lParam = (uint)*(ushort *)param_1;
    wParam = 1;
    Msg = 0xd3;
    hWnd = (HWND)(**(code **)(*param_1_00 + 0xac))();
    SendMessageW(hWnd,Msg,wParam,lParam);
  }
  if (param_1[1] != -1) {
    return 0;
  }
  return 1;
}



undefined4 __thiscall FUN_00941160(undefined4 param_1_00,byte param_1)

{
  FUN_009469d0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_00941180(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bda2d8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1 = wxTextCompleterSimple::vftable;
  FUN_00853ce0(0);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_009411e0(undefined4 param_1_00,byte param_1)

{
  FUN_00940d60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_00941200(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda308;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00941180(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxTextCompleterFixed::vftable;
  FUN_00853ce0(0);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00941260(int param_1)

{
  FUN_00855070(param_1 + 0x18);
  return;
}



void FUN_00941270(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bda308;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00853f30(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  FUN_00940d60();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009412d0(undefined4 param_1_00,byte param_1)

{
  FUN_00941270();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_009412f0(undefined4 *param_1)

{
  param_1[1] = 0;
  param_1[2] = 0;
  *param_1 = wxTextEntry::vftable;
  param_1[3] = 0;
  return;
}



void __fastcall FUN_00941310(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bda338;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxTextEntry::vftable;
  iVar1 = param_1[3];
  local_4 = 0;
  if (iVar1 != 0) {
    FUN_00940e80();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  local_4 = 0xffffffff;
  FUN_009469d0(uVar2);
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00941380(int *param_1,uint *param_2)

{
  HWND hWnd;
  uint uVar1;
  UINT Msg;
  WPARAM wParam;
  LPARAM lParam;
  
  lParam = 0;
  wParam = 0;
  Msg = 0xd4;
  hWnd = (HWND)(**(code **)(*param_1 + 0xac))();
  uVar1 = SendMessageW(hWnd,Msg,wParam,lParam);
  *param_2 = uVar1 & 0xffff;
  param_2[1] = 0xffffffff;
  return;
}



undefined4 * __thiscall FUN_009413b0(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdaa38;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1_00 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxKeyEvent>,class_wxTextAutoCompleteData,class_wxKeyEvent,class_wxTextAutoCompleteData>
                ::vftable;
  param_1_00[1] = param_2;
  param_1_00[2] = param_1;
  local_4 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 == 0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x175,
                 "wxEventFunctorMethod<class wxEventTypeTag<class wxKeyEvent>,class wxTextAutoCompleteData,class wxKeyEvent,class wxTextAutoCompleteData>::wxEventFunctorMethod"
                 ,"handler || this->IsEvtHandler()",
                 "handlers defined in non-wxEvtHandler-derived classes must be connected with a valid sink object"
                 ,uVar1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00941440(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  if (*(int *)(param_1_00 + 4) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxKeyEvent>,class wxTextAutoCompleteData,class wxKeyEvent,class wxTextAutoCompleteData>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void __thiscall FUN_00941490(int param_1_00,undefined4 param_1)

{
  int iVar1;
  void *pvVar2;
  undefined4 uVar3;
  void *unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be82db;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x14) == 0) {
    pvVar2 = operator_new(0x28);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = FUN_00941200();
    }
    *(undefined4 *)(param_1_00 + 0x14) = uVar3;
  }
  local_4 = 0xffffffff;
  FUN_00855070(param_1);
  iVar1 = *(int *)(param_1_00 + 0x10);
  uVar3 = *(undefined4 *)(param_1_00 + 0x14);
  EnterCriticalSection((LPCRITICAL_SECTION)(iVar1 + 0x24));
  *(undefined4 *)(iVar1 + 0x60) = 1;
  LeaveCriticalSection((LPCRITICAL_SECTION)(iVar1 + 0x24));
  EnterCriticalSection((LPCRITICAL_SECTION)(iVar1 + 8));
  *(undefined4 *)(iVar1 + 0x20) = uVar3;
  LeaveCriticalSection((LPCRITICAL_SECTION)(iVar1 + 8));
  (**(code **)(**(int **)(param_1_00 + 0x10) + 0x14))(*(int **)(param_1_00 + 0x10));
  (**(code **)(**(int **)(param_1_00 + 0xc) + 0x10))(*(int **)(param_1_00 + 0xc));
  ExceptionList = unaff_EBX;
  return;
}



void FUN_00941560(void)

{
  uint uVar1;
  undefined local_1c [16];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda368;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  FUN_00853ce0(0);
  local_4 = 0;
  FUN_00941490(local_1c);
  local_4 = 0xffffffff;
  FUN_00853f30(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009415d0(undefined4 param_1_00,byte param_1)

{
  FUN_00941310();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_009415f0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xc);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009413b0(param_2,param_3);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00941660(int *param_1_00,int param_1)

{
  HWND hWnd;
  UINT Msg;
  WPARAM wParam;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    param_1 = param_1 + 4;
  }
  else {
    param_1 = *(int *)(param_1 + 4);
  }
  wParam = 0;
  Msg = 0xc2;
  hWnd = (HWND)(**(code **)(*param_1_00 + 0xac))();
  SendMessageW(hWnd,Msg,wParam,param_1);
  return;
}



undefined4 __thiscall FUN_00941690(int *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  HWND hWnd;
  LRESULT LVar3;
  undefined4 uVar4;
  UINT Msg;
  WPARAM wParam;
  
  iVar1 = FUN_0098e820();
  if (iVar1 != 0) {
    iVar2 = (**(code **)(iVar1 + 0x94))();
    if (iVar2 != 0) {
      iVar1 = (**(code **)(iVar1 + 0x90))();
      if (iVar1 != 0) {
        if (*(uint *)(param_1 + 0x18) < 8) {
          iVar1 = param_1 + 4;
        }
        else {
          iVar1 = *(int *)(param_1 + 4);
        }
        wParam = 1;
        Msg = 0x1501;
        hWnd = (HWND)(**(code **)(*param_1_00 + 0xac))();
        LVar3 = SendMessageW(hWnd,Msg,wParam,iVar1);
        if (LVar3 != 0) {
          return 1;
        }
      }
    }
  }
  uVar4 = FUN_00946e70(param_1);
  return uVar4;
}



undefined4 * __fastcall FUN_00941700(undefined4 *param_1)

{
  *param_1 = wxIEnumString::vftable;
  param_1[1] = 0;
  param_1[0x15] = 7;
  param_1[0x14] = 0;
  *(undefined2 *)(param_1 + 0x10) = 0;
  param_1[0x16] = 0;
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 2));
  InitializeCriticalSection((LPCRITICAL_SECTION)(param_1 + 9));
  param_1[8] = 0;
  param_1[0x18] = 0;
  return param_1;
}



undefined4 FUN_00941750(int param_1)

{
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x24));
  *(undefined4 *)(param_1 + 0x60) = 1;
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x24));
  return 0;
}



undefined4 FUN_00941780(int param_1,int **param_2)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  void *pvVar4;
  int *piVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda398;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  piVar5 = (int *)0x0;
  if (param_2 == (int **)0x0) {
    uVar3 = 0x80004003;
  }
  else {
    EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 8));
    local_4 = 0;
    pvVar4 = operator_new(100);
    if (pvVar4 != (void *)0x0) {
      piVar5 = (int *)FUN_00941700(uVar2);
    }
    (**(code **)(*piVar5 + 4))(piVar5);
    iVar1 = *(int *)(param_1 + 0x20);
    EnterCriticalSection((LPCRITICAL_SECTION)(piVar5 + 9));
    piVar5[0x18] = 1;
    LeaveCriticalSection((LPCRITICAL_SECTION)(piVar5 + 9));
    EnterCriticalSection((LPCRITICAL_SECTION)(piVar5 + 2));
    piVar5[8] = iVar1;
    LeaveCriticalSection((LPCRITICAL_SECTION)(piVar5 + 2));
    *param_2 = piVar5;
    LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 8));
    uVar3 = 0;
  }
  ExceptionList = local_c;
  return uVar3;
}



void __fastcall FUN_00941840(undefined4 *param_1)

{
  *param_1 = wxIEnumString::vftable;
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 9));
  DeleteCriticalSection((LPCRITICAL_SECTION)(param_1 + 2));
  _free((void *)param_1[0x16]);
  if (7 < (uint)param_1[0x15]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x10]);
  }
  param_1[0x15] = 7;
  param_1[0x14] = 0;
  *(undefined2 *)(param_1 + 0x10) = 0;
  return;
}



undefined4 __thiscall FUN_009418a0(undefined4 param_1_00,byte param_1)

{
  FUN_00941840();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_009418c0(int *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = (**(code **)(*param_1 + 0xac))();
  FUN_0095df20(param_2,uVar1);
  return param_2;
}



// WARNING: Removing unreachable block (ram,0x0094196f)

void __thiscall FUN_009418f0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uStack_3c;
  uint uStack_38;
  void *pvStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uStack_38 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  uStack_3c = 0;
  (**(code **)(*param_1_00 + 0xa8))(param_1,param_2);
  uStack_38 = uStack_38 & 0xffff0000;
  (**(code **)(*param_1_00 + 0xc))(&uStack_3c);
  _free((void *)0x7);
  ExceptionList = pvStack_1c;
  return;
}



void __thiscall FUN_00941990(int param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda3c8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  EnterCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x24));
  uStack_4 = 0;
  if (param_1 + 0x3c != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  *(undefined4 *)(param_1 + 0x60) = 1;
  LeaveCriticalSection((LPCRITICAL_SECTION)(param_1 + 0x24));
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00941a10(int param_1)

{
  LPCRITICAL_SECTION lpCriticalSection;
  int iVar1;
  uint uVar2;
  undefined auStack_3c [3];
  undefined local_39;
  LPCRITICAL_SECTION local_38;
  undefined auStack_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bda400;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_3c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 0x24);
  local_39 = 1;
  local_38 = lpCriticalSection;
  while( true ) {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 0;
    EnterCriticalSection(lpCriticalSection);
    local_4._0_1_ = 1;
    if (auStack_34 != (undefined *)(param_1 + 0x3c)) {
      FID_conflict_assign((undefined *)(param_1 + 0x3c),0,0xffffffff);
    }
    iVar1 = *(int *)(param_1 + 0x60);
    *(undefined4 *)(param_1 + 0x60) = 0;
    local_4 = (uint)local_4._1_3_ << 8;
    LeaveCriticalSection(lpCriticalSection);
    if (iVar1 == 0) break;
    local_39 = (**(code **)**(undefined4 **)(param_1 + 0x20))(auStack_34,uVar2);
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00941b20(int **param_1)

{
  uint unaff_ESI;
  undefined *puVar1;
  uint *puStack_48;
  uint uStack_44;
  undefined local_3c [4];
  uint local_38;
  void *pvStack_34;
  void *pvStack_28;
  undefined4 uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be4f58;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_3c;
  uStack_44 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  puStack_48 = &local_38;
  puVar1 = local_3c;
  (**(code **)(**param_1 + 0x68))(puVar1);
  if (unaff_ESI == uStack_44) {
    uStack_44 = (**(code **)(**param_1 + 0x5c))();
  }
  (**(code **)(**param_1 + 0x18))(local_3c,0,uStack_44);
  uStack_18 = 0;
  FUN_00941990(&puStack_48);
  (**(code **)(*param_1[4] + 0x14))(param_1[4]);
  (**(code **)(*param_1[3] + 0x10))(param_1[3]);
  _free(pvStack_34);
  if (7 < local_38) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  ExceptionList = pvStack_28;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00941c30(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  int iVar2;
  HWND hWnd;
  LRESULT LVar3;
  UINT Msg;
  undefined *wParam;
  LPARAM lParam;
  undefined4 local_208;
  undefined auStack_204 [512];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_208;
  local_208 = 0;
  iVar1 = FUN_0098e820();
  if (iVar1 != 0) {
    iVar2 = (**(code **)(iVar1 + 0x94))();
    if (iVar2 != 0) {
      iVar1 = (**(code **)(iVar1 + 0x90))();
      if (iVar1 != 0) {
        lParam = 0x100;
        wParam = auStack_204;
        Msg = 0x1502;
        hWnd = (HWND)(**(code **)(*param_1_00 + 0xac))();
        LVar3 = SendMessageW(hWnd,Msg,(WPARAM)wParam,lParam);
        if (LVar3 != 0) {
          FUN_004325b6(auStack_204);
          goto LAB_00941cb7;
        }
      }
    }
  }
  FUN_00946af0(param_1);
LAB_00941cb7:
  ___security_check_cookie_4();
  return;
}



void FUN_00941ce0(int param_1,uint param_2,LPVOID *param_3,int *param_4)

{
  SIZE_T cb;
  short sVar1;
  void *_Memory;
  char cVar2;
  uint uVar3;
  undefined4 ****ppppuVar4;
  LPVOID _Dst;
  undefined4 ****_Src;
  LPCRITICAL_SECTION lpCriticalSection;
  LPCRITICAL_SECTION local_44;
  LPVOID *local_40;
  int local_3c;
  int local_38;
  undefined auStack_34 [4];
  undefined4 ****appppuStack_30 [4];
  int iStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda438;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_44;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  local_3c = param_1;
  local_40 = param_3;
  if (param_3 != (LPVOID *)0x0) {
    if (param_4 == (int *)0x0) {
      if (1 < param_2) goto LAB_00941e6a;
      param_4 = &local_38;
    }
    lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 8);
    *param_4 = 0;
    local_44 = lpCriticalSection;
    EnterCriticalSection(lpCriticalSection);
    uStack_4 = 0;
    cVar2 = FUN_00941a10(uVar3);
    if (cVar2 == '\0') {
LAB_00941e3c:
      LeaveCriticalSection(lpCriticalSection);
    }
    else if (param_2 == 0) {
      LeaveCriticalSection(lpCriticalSection);
    }
    else {
      do {
        param_2 = param_2 - 1;
        if (*(int *)(param_1 + 0x60) != 0) goto LAB_00941e3c;
        (**(code **)(**(int **)(param_1 + 0x20) + 4))(auStack_34);
        if (iStack_20 == 0) {
          FUN_0040159c();
          goto LAB_00941e3c;
        }
        _Src = appppuStack_30[0];
        if (uStack_1c < 8) {
          _Src = appppuStack_30;
        }
        ppppuVar4 = _Src;
        do {
          sVar1 = *(short *)ppppuVar4;
          ppppuVar4 = (undefined4 ****)((int)ppppuVar4 + 2);
        } while (sVar1 != 0);
        cb = ((int)ppppuVar4 - (int)((int)_Src + 2) >> 1) * 2 + 2;
        _Dst = CoTaskMemAlloc(cb);
        if (_Dst == (LPVOID)0x0) {
          FUN_0040159c();
          LeaveCriticalSection(local_44);
          goto LAB_00941e6a;
        }
        _memcpy(_Dst,_Src,cb);
        _Memory = pvStack_18;
        *local_40 = _Dst;
        *param_4 = *param_4 + 1;
        local_40 = local_40 + 1;
        _free(_Memory);
        if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(appppuStack_30[0]);
        }
        param_1 = local_3c;
        lpCriticalSection = local_44;
      } while (param_2 != 0);
      LeaveCriticalSection(local_44);
    }
  }
LAB_00941e6a:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00941e90(int param_1,int param_2)

{
  LPCRITICAL_SECTION lpCriticalSection;
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda468;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  if (param_2 == 0) {
    return 0x80070057;
  }
  lpCriticalSection = (LPCRITICAL_SECTION)(param_1 + 8);
  ExceptionList = &local_c;
  EnterCriticalSection(lpCriticalSection);
  uStack_4 = 0;
  cVar1 = FUN_00941a10(uVar2);
  if (cVar1 != '\0') {
    while (param_2 = param_2 + -1, *(int *)(param_1 + 0x60) == 0) {
      iVar3 = (**(code **)(**(int **)(param_1 + 0x20) + 4))(auStack_30);
      iVar3 = *(int *)(iVar3 + 0x14);
      _free(pvStack_14);
      if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_2c);
      }
      if (iVar3 == 0) {
        LeaveCriticalSection(lpCriticalSection);
        ExceptionList = local_c;
        return 1;
      }
      if (param_2 == 0) {
        LeaveCriticalSection(lpCriticalSection);
        ExceptionList = local_c;
        return 0;
      }
    }
  }
  LeaveCriticalSection(lpCriticalSection);
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_00941fc0(int param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  
  iVar1 = *(int *)(param_1 + 0x10);
  EnterCriticalSection((LPCRITICAL_SECTION)(iVar1 + 0x24));
  *(undefined4 *)(iVar1 + 0x60) = 1;
  LeaveCriticalSection((LPCRITICAL_SECTION)(iVar1 + 0x24));
  EnterCriticalSection((LPCRITICAL_SECTION)(iVar1 + 8));
  *(int *)(iVar1 + 0x20) = param_2;
  LeaveCriticalSection((LPCRITICAL_SECTION)(iVar1 + 8));
  if (*(int **)(param_1 + 0x18) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x18) + 8))(1);
  }
  *(int *)(param_1 + 0x18) = param_2;
  if (param_2 != 0) {
    if (*(char *)(param_1 + 0x1c) == '\0') {
      uVar3 = 0;
      *(undefined *)(param_1 + 0x1c) = 1;
      uVar2 = FUN_009415f0(&DAT_032bfe64,&LAB_00941c00,param_1,0);
      FUN_008461a0(0xffffffff,0xffffffff,DAT_032bfe64,uVar2,uVar3);
    }
    FUN_00941b20();
  }
  return 1;
}



int ** __thiscall FUN_00942060(int **param_1_00,int *param_1)

{
  int **ppv;
  char cVar1;
  int *piVar2;
  HRESULT HVar3;
  void *pvVar4;
  int iVar5;
  int *unaff_EBP;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda4cf;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  piVar2 = (int *)(**(code **)(*param_1 + 0x8c))();
  ppv = param_1_00 + 2;
  param_1_00[1] = piVar2;
  *ppv = (int *)0x0;
  param_1_00[3] = (int *)0x0;
  param_1_00[4] = (int *)0x0;
  param_1_00[5] = (int *)0x0;
  param_1_00[6] = (int *)0x0;
  *(undefined *)(param_1_00 + 7) = 0;
  HVar3 = CoCreateInstance((IID *)&DAT_00d58f7c,(LPUNKNOWN)0x0,1,(IID *)&DAT_00dcd828,ppv);
  if (HVar3 < 0) {
    FUN_0043c211();
    cVar1 = FUN_00846b30();
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      FUN_00843700();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  else {
    pvVar4 = operator_new(100);
    if (pvVar4 == (void *)0x0) {
      piVar2 = (int *)0x0;
    }
    else {
      piVar2 = (int *)FUN_00941700();
    }
    param_1_00[4] = piVar2;
    (**(code **)(*piVar2 + 4))();
    iVar5 = **ppv;
    (**(code **)(**param_1_00 + 0xac))();
    iVar5 = (**(code **)(iVar5 + 0xc))();
    if (iVar5 < 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        FUN_008423d0();
        FUN_00843700();
        FUN_00847d90();
        FUN_00842440();
        FUN_0081b5bc();
      }
      (**(code **)(*param_1_00[4] + 8))();
      param_1_00[4] = (int *)0x0;
    }
    else {
      iVar5 = (**(code **)**ppv)();
      if (iVar5 < 0) {
        FUN_0043c211();
        cVar1 = FUN_00846b30();
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 4;
          FUN_008423d0();
          uStack_4._0_1_ = 5;
          FUN_00843700();
          FUN_00847d90();
          uStack_4 = CONCAT31(uStack_4._1_3_,4);
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      else {
        iVar5 = (**(code **)**ppv)();
        if (-1 < iVar5) {
          (**(code **)(iRam00000000 + 0x14))();
          (**(code **)(*unaff_EBP + 8))();
        }
      }
    }
  }
  ExceptionList = local_c;
  return param_1_00;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 __thiscall FUN_009423d0(int *param_1_00,byte param_1)

{
  char cVar1;
  int iVar2;
  uint local_80;
  void *local_7c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda516;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((_DAT_032c03e0 & 1) == 0) {
    _DAT_032c03e0 = _DAT_032c03e0 | 1;
    DAT_032c03dc = 0;
    _atexit((_func_4879 *)&LAB_00c77cf0);
  }
  if (DAT_0323a884 == (code *)0xffffffff) {
    FUN_004325b6();
    local_4 = 0;
    cVar1 = FUN_0089ed30();
    local_4 = 0xffffffff;
    _free(local_7c);
    if (7 < local_80) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (cVar1 == '\0') {
      DAT_0323a884 = (code *)0x0;
      ExceptionList = local_c;
      return 0;
    }
    FUN_0043c211();
    local_4 = 1;
    DAT_0323a884 = (code *)FUN_0089f2d0();
    local_4 = 0xffffffff;
    _free(local_7c);
    if (7 < local_80) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  if (DAT_0323a884 != (code *)0x0) {
    if (((param_1 & 1) == 0) && ((param_1 & 2) == 0)) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480();
      }
    }
    else {
      (**(code **)(*param_1_00 + 0xac))();
      iVar2 = (*DAT_0323a884)();
      if (-1 < iVar2) {
        if (param_1_00[3] != 0) {
          FUN_00941560();
        }
        ExceptionList = local_c;
        return 1;
      }
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        local_4 = 2;
        FUN_008423d0();
        local_4._0_1_ = 3;
        FUN_00843700();
        FUN_00847d90();
        local_4 = CONCAT31(local_4._1_3_,2);
        FUN_00842440();
        local_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  ExceptionList = local_c;
  return 0;
}



int __fastcall FUN_00942650(int param_1)

{
  uint uVar1;
  void *pvVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  if (*(int *)(param_1 + 0xc) != 0) {
    return *(int *)(param_1 + 0xc);
  }
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x20);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_00942060(param_1);
  }
  local_4 = 0xffffffff;
  if (((*(int *)(iVar3 + 8) != 0) && (*(int *)(iVar3 + 0xc) != 0)) && (*(int *)(iVar3 + 0x10) != 0))
  {
    *(int *)(param_1 + 0xc) = iVar3;
    ExceptionList = local_c;
    return iVar3;
  }
  FUN_00940e80(uVar1);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar3);
}



undefined4 FUN_00942700(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_00942650();
  if (iVar1 == 0) {
    return 0;
  }
  FUN_00941490(param_1);
  return 1;
}



undefined4 __thiscall FUN_00942720(int param_1_00,int *param_1)

{
  char cVar1;
  int iVar2;
  
  if (param_1 == (int *)0x0) {
    if (*(int *)(param_1_00 + 0xc) == 0) {
      return 1;
    }
    FUN_00941560();
    return 1;
  }
  iVar2 = FUN_00942650();
  if (iVar2 == 0) {
    (**(code **)(*param_1 + 8))(1);
  }
  else {
    cVar1 = FUN_00941fc0(param_1);
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



undefined ** FUN_00942770(void)

{
  return &PTR_u_wxComboBox_0323a9b4;
}



undefined4 __thiscall FUN_00942780(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  if (*(char *)(param_1_00 + 0x5e) != '\0') {
    uVar2 = FUN_009b92b0(param_1);
    return uVar2;
  }
  *(undefined *)(param_1_00 + 0x5e) = 1;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    cVar1 = FUN_0083e950(&PTR_u_wxPopupTransientWindow_0323c7a4);
    if (cVar1 == '\0') {
      FUN_008402e0("..\\..\\src\\common\\combocmn.cpp",0x1ec,"wxComboPopupWindow::Show",
                   "IsKindOf((&wxPopupTransientWindow::ms_classInfo))",0);
    }
  }
  cVar1 = (**(code **)(*param_1_00 + 0xdc))();
  if ((char)param_1 != cVar1) {
    if ((char)param_1 != '\0') {
      (**(code **)(*param_1_00 + 0xcc))(1);
      *(char *)(param_1_00 + 0x5e) = *(char *)(param_1_00 + 0x5e) + -1;
      return 1;
    }
    (**(code **)(*param_1_00 + 0x348))();
  }
  *(char *)(param_1_00 + 0x5e) = *(char *)(param_1_00 + 0x5e) + -1;
  return 1;
}



undefined ** FUN_00942830(void)

{
  return &PTR_DAT_00d594a8;
}



undefined * FUN_00942840(void)

{
  return &DAT_032c03e8;
}



void __fastcall FUN_00942850(undefined4 *param_1)

{
  *param_1 = wxComboPopup::vftable;
  return;
}



void __fastcall FUN_00942860(int param_1)

{
  (**(code **)(**(int **)(param_1 + 4) + 0x364))(1);
  return;
}



void __fastcall FUN_00942870(int *param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  
  piVar1 = (int *)(**(code **)(*param_1 + 0x10))();
  if (piVar1 != (int *)0x0) {
    iVar2 = ___RTCastToVoid(piVar1);
    iVar3 = ___RTCastToVoid(param_1);
    if (iVar3 != iVar2) {
      (**(code **)(*param_1 + 4))(1);
    }
                    // WARNING: Could not recover jumptable at 0x009428ac. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*piVar1 + 0x50))();
    return;
  }
  (**(code **)(*param_1 + 4))(1);
  return;
}



undefined4 * __thiscall FUN_009428c0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxComboBoxExtraInputHandler::vftable;
  FUN_00846530();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined ** FUN_009428f0(void)

{
  return &PTR_DAT_00d594b0;
}



undefined * FUN_00942900(void)

{
  return &DAT_032c0478;
}



undefined4 * __thiscall FUN_00942910(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxComboPopupEvtHandler::vftable;
  FUN_00846530();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined ** FUN_00942940(void)

{
  return &PTR_DAT_00d594b8;
}



undefined * FUN_00942950(void)

{
  return &DAT_032c0508;
}



undefined ** FUN_00942960(void)

{
  return &PTR_PTR_00d594c0;
}



undefined * FUN_00942970(void)

{
  return &DAT_032c06b0;
}



undefined ** FUN_00942980(void)

{
  return &PTR_u_wxComboCtrlBase_0323a9cc;
}



void __fastcall FUN_00942990(int param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x1ec) != 0) {
    puVar2 = (undefined4 *)operator_new(0x44);
    local_4 = 0;
    if (puVar2 == (undefined4 *)0x0) {
      puVar2 = (undefined4 *)0x0;
    }
    else {
      FUN_00845b70(uVar1);
      *puVar2 = wxComboBoxExtraInputHandler::vftable;
      puVar2[0x10] = param_1;
    }
    local_4 = 0xffffffff;
    *(undefined4 **)(param_1 + 0x200) = puVar2;
    FUN_0091bd90(puVar2);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00942b60(int *param_1)

{
  if (param_1[0x7f] == 0) {
    (**(code **)(*param_1 + 900))(0);
  }
  return;
}



void __fastcall FUN_00942bc0(int param_1)

{
  if (*(int *)(param_1 + 0x58) != 0) {
                    // WARNING: Could not recover jumptable at 0x00942bd4. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*(int *)(*(int *)(param_1 + 0x58) + 0x398) + 0x28))();
    return;
  }
  return;
}



void __fastcall FUN_00942be0(int param_1)

{
  if (*(int *)(param_1 + 0x58) != 0) {
                    // WARNING: Could not recover jumptable at 0x00942bf4. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*(int *)(*(int *)(param_1 + 0x58) + 0x398) + 0x2c))();
    return;
  }
  return;
}



void __fastcall FUN_00942c00(int param_1)

{
  if (*(int *)(param_1 + 0x58) != 0) {
                    // WARNING: Could not recover jumptable at 0x00942c14. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*(int *)(*(int *)(param_1 + 0x58) + 0x398) + 0x30))();
    return;
  }
  return;
}



void __fastcall FUN_00942c20(int param_1)

{
  if (*(int *)(param_1 + 0x58) != 0) {
                    // WARNING: Could not recover jumptable at 0x00942c34. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*(int *)(*(int *)(param_1 + 0x58) + 0x398) + 0x50))();
    return;
  }
  return;
}



undefined4 __fastcall FUN_00942c40(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0x58) != 0) {
                    // WARNING: Could not recover jumptable at 0x00942c54. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (**(code **)(*(int *)(*(int *)(param_1 + 0x58) + 0x398) + 0x58))();
    return uVar1;
  }
  return 0;
}



undefined4 __fastcall FUN_00942c60(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0x58) != 0) {
                    // WARNING: Could not recover jumptable at 0x00942c74. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (**(code **)(*(int *)(*(int *)(param_1 + 0x58) + 0x398) + 0x5c))();
    return uVar1;
  }
  return 0;
}



void __fastcall FUN_00942c80(int param_1)

{
  if (*(int *)(param_1 + 0x58) != 0) {
                    // WARNING: Could not recover jumptable at 0x00942c94. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*(int *)(*(int *)(param_1 + 0x58) + 0x398) + 0x60))();
    return;
  }
  return;
}



void __thiscall FUN_00942ca0(int param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  if (*(int *)(param_1_00 + 0x58) != 0) {
                    // WARNING: Could not recover jumptable at 0x00942cb8. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*(int *)(*(int *)(param_1_00 + 0x58) + 0x398) + 0x68))();
    return;
  }
  *param_1 = 0;
  *param_2 = 0;
  return;
}



uint __fastcall FUN_00942ce0(int param_1)

{
  uint in_EAX;
  uint uVar1;
  
  if (*(int *)(param_1 + 0x58) != 0) {
                    // WARNING: Could not recover jumptable at 0x00942cf4. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (**(code **)(*(int *)(*(int *)(param_1 + 0x58) + 0x398) + 0x70))();
    return uVar1;
  }
  return in_EAX & 0xffffff00;
}



void __fastcall FUN_00942d00(int param_1)

{
  if (*(int *)(param_1 + 0x58) != 0) {
                    // WARNING: Could not recover jumptable at 0x00942d14. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*(int *)(*(int *)(param_1 + 0x58) + 0x398) + 0x74))();
    return;
  }
  return;
}



void __fastcall FUN_00942d20(int param_1)

{
  if (*(int *)(param_1 + 0x58) != 0) {
                    // WARNING: Could not recover jumptable at 0x00942d34. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*(int *)(*(int *)(param_1 + 0x58) + 0x398) + 0x40))();
    return;
  }
  return;
}



void __fastcall FUN_00942d40(int param_1)

{
  if (*(int *)(param_1 + 0x58) != 0) {
                    // WARNING: Could not recover jumptable at 0x00942d54. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*(int *)(*(int *)(param_1 + 0x58) + 0x398) + 0x44))();
    return;
  }
  return;
}



uint __fastcall FUN_00942d60(int param_1)

{
  uint in_EAX;
  uint uVar1;
  
  if (*(int *)(param_1 + 0x58) != 0) {
                    // WARNING: Could not recover jumptable at 0x00942d74. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (**(code **)(*(int *)(*(int *)(param_1 + 0x58) + 0x398) + 0x48))();
    return uVar1;
  }
  return in_EAX & 0xffffff00;
}



uint __fastcall FUN_00942d80(int param_1)

{
  uint in_EAX;
  uint uVar1;
  
  if (*(int *)(param_1 + 0x58) != 0) {
                    // WARNING: Could not recover jumptable at 0x00942d94. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (**(code **)(*(int *)(*(int *)(param_1 + 0x58) + 0x398) + 0x4c))();
    return uVar1;
  }
  return in_EAX & 0xffffff00;
}



undefined4 * __thiscall FUN_00942da0(undefined4 *param_1_00,int param_1)

{
  undefined4 uVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0888;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  uVar1 = *(undefined4 *)(param_1 + 0x14);
  *param_1_00 = wxListBase::vftable;
  FUN_0086ad40(uVar1);
  local_4 = 0;
  *param_1_00 = wxWindowList::vftable;
  FUN_0086b130(uVar2);
  FUN_0086b7d0(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00942e10(undefined4 param_1_00,byte param_1)

{
  FUN_009b9610();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00942e30(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined local_24 [12];
  int local_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda548;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_24;
  ExceptionList = &local_c;
  FUN_00942da0(*(int *)(*(int *)(param_1_00 + 0x40) + 500) + 0x48);
  local_4 = 0;
  (**(code **)(**(int **)(*(int *)(local_18 + 8) + 0x70) + 0x18))(param_1,uVar1);
  puStack_8 = (undefined *)0xffffffff;
  FUN_0086ade0();
  ExceptionList = pvStack_10;
  return;
}



void __thiscall FUN_00942eb0(int param_1_00,int param_1)

{
  if (*(char *)(param_1 + 0x28) == '\0') {
    (**(code **)(**(int **)(param_1_00 + 0x40) + 0x364))(1);
    *(undefined *)(param_1 + 0x24) = 1;
  }
  return;
}



void FUN_00942ee0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



void FUN_00942f00(int param_1)

{
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



void __thiscall FUN_00942f10(int param_1_00,int param_1)

{
  int iVar1;
  undefined **local_38 [2];
  int iStack_30;
  undefined4 uStack_24;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6a68;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*(int *)(param_1 + 0xc) == DAT_032bfe38) &&
     ((*(byte *)(*(int *)(param_1_00 + 0x40) + 0x2b4) & 4) == 0)) {
    iVar1 = *(int *)(*(int *)(param_1_00 + 0x40) + 0x1ec);
    if (iVar1 == 0) {
      (**(code **)(*(int *)(*(int *)(param_1_00 + 0x40) + 0x194) + 0x60))
                (0xffffffff,0xffffffff,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    }
    else {
      (**(code **)(*(int *)(iVar1 + 0x398) + 100))();
    }
  }
  FUN_00845a60(param_1);
  pvStack_10 = *(void **)(param_1 + 0x28);
  local_38[0] = wxFocusEvent::vftable;
  iStack_30 = *(int *)(param_1_00 + 0x40);
  uStack_24 = *(undefined4 *)(iStack_30 + 0x40);
  uStack_4 = 0;
  (**(code **)(**(int **)(iStack_30 + 0x70) + 0x18))(local_38);
  *(undefined *)(param_1 + 0x24) = 1;
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_10;
  return;
}



void __fastcall FUN_00942ff0(int param_1)

{
  *(undefined4 *)(param_1 + 500) = 0;
  *(undefined4 *)(param_1 + 0x1f8) = 0;
  *(undefined *)(param_1 + 0x2bd) = 0;
  *(undefined4 *)(param_1 + 0x1f0) = 0;
  *(undefined4 *)(param_1 + 0x1ec) = 0;
  *(undefined4 *)(param_1 + 0x1fc) = 0;
  *(undefined4 *)(param_1 + 0x208) = 0;
  *(undefined4 *)(param_1 + 0x200) = 0;
  *(int *)(param_1 + 0x210) = param_1;
  *(undefined4 *)(param_1 + 0x22c) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x228) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x238) = 0;
  *(undefined4 *)(param_1 + 0x230) = 0;
  *(undefined4 *)(param_1 + 0x23c) = 0;
  *(undefined4 *)(param_1 + 0x274) = 0;
  *(undefined4 *)(param_1 + 0x288) = 0;
  *(undefined *)(param_1 + 700) = 0;
  *(undefined *)(param_1 + 0x2c0) = 0;
  *(undefined *)(param_1 + 0x2c1) = 0;
  *(undefined4 *)(param_1 + 0x27c) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x278) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x280) = 0x20;
  *(undefined4 *)(param_1 + 0x284) = 0;
  *(undefined4 *)(param_1 + 0x220) = 0;
  *(undefined4 *)(param_1 + 0x224) = 0;
  *(undefined4 *)(param_1 + 0x234) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x2b4) = 0;
  *(undefined4 *)(param_1 + 0x2b8) = 0;
  *(undefined4 *)(param_1 + 0x218) = 0;
  *(undefined4 *)(param_1 + 0x21c) = 0;
  *(undefined *)(param_1 + 0x2be) = 0;
  *(undefined *)(param_1 + 0x2bf) = 0;
  return;
}



void __fastcall FUN_009430c0(int *param_1)

{
  uint uVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iStack_28;
  int iStack_24;
  int local_20;
  int iStack_1c;
  undefined local_18 [12];
  int iStack_c;
  int iStack_4;
  
  (**(code **)(*param_1 + 0x27c))(local_18,&local_20);
  iVar2 = param_1[0x8f];
  iStack_c = iStack_28;
  if (((((*(byte *)(param_1 + 0xad) & 1) != 0) ||
       ((cVar3 = (**(code **)(param_1[0xa3] + 0x10))(), cVar3 != '\0' &&
        (*(char *)(param_1 + 0xaf) != '\0')))) && (param_1[0xa1] == 0)) && (param_1[0x9f] < 1)) {
    param_1[0xad] = param_1[0xad] | 0x200;
    iVar8 = 0;
    goto LAB_0094317b;
  }
  if (((*(byte *)(param_1 + 0xad) & 0x20) == 0) || (param_1[0xa1] != 0)) {
LAB_0094316d:
    iVar8 = iVar2;
  }
  else {
    cVar3 = (**(code **)(param_1[0xa3] + 0x10))();
    iVar8 = 0;
    if (cVar3 != '\0') goto LAB_0094316d;
  }
  param_1[0xad] = param_1[0xad] & 0xfffffdff;
LAB_0094317b:
  if (param_1[0x8d] < 0) {
    iVar4 = (**(code **)(*param_1 + 0x378))();
    param_1[0x8d] = iVar4;
  }
  if (iStack_4 < 1) {
    iVar4 = param_1[0xa2];
  }
  else {
    param_1[0xa2] = iStack_4;
    iVar4 = iStack_4;
  }
  if (0 < iVar4) {
    iStack_1c = iVar8 * 2;
    iVar7 = iStack_28 + iVar8 * -2;
    iVar5 = param_1[0x9e];
    if (iVar5 < 1) {
      iVar5 = FUN_0091b530(local_18);
      iVar6 = *(int *)(iVar5 + 4);
      (**(code **)(*param_1 + 0x278))(local_18,&iStack_24);
      iVar5 = iVar4;
      if ((iStack_24 < iVar6) && (iVar5 = iVar7, 0x12 < iStack_24)) {
        iVar5 = (iStack_24 * iVar4) / iVar6;
      }
    }
    if (0 < param_1[0x9f]) {
      iVar7 = param_1[0x9f];
    }
    cVar3 = (**(code **)(param_1[0xa3] + 0x10))();
    if (cVar3 != '\0') {
      iVar4 = param_1[0xa4];
      if (iVar4 == 0) {
        iVar6 = 0;
        iVar4 = 0;
      }
      else {
        iVar6 = *(int *)(iVar4 + 8);
        iVar4 = *(int *)(iVar4 + 0xc);
      }
      cVar3 = *(char *)(param_1 + 0xaf);
      if (cVar3 != '\0') {
        iVar6 = iVar6 + 8;
        iVar4 = iVar4 + 8;
      }
      if ((iVar5 < iVar6) || ((param_1[0x9e] == 0 && (cVar3 == '\0')))) {
        iVar5 = iVar6;
      }
      if ((iVar7 < iVar4) || ((param_1[0x9f] == 0 && (cVar3 == '\0')))) {
        iVar7 = iVar4;
      }
      if ((iStack_28 + iVar2 * -2 < iVar7) && (iStack_4 == 0)) {
        iVar4 = iVar2 * 2 + iVar7;
        (**(code **)(*param_1 + 0x28c))(0xffffffff,iVar4);
        cVar3 = (**(code **)(param_1[0xa3] + 0x10))();
        iStack_c = iVar4;
        if ((cVar3 == '\0') && ((param_1[0x96] == iVar5 && (param_1[0x97] == iVar7)))) {
          param_1[0xad] = param_1[0xad] & 0xffffbfff;
        }
        else {
          param_1[0xad] = param_1[0xad] | 0x4000;
        }
      }
    }
    uVar1 = iVar5 + param_1[0xa1] * 2;
    param_1[0xab] = iVar5;
    param_1[0xac] = iVar7;
    iVar4 = iVar8;
    if (param_1[0xa0] == 0x20) {
      iVar4 = (local_20 - uVar1) - iVar8;
    }
    param_1[0x94] = iVar4;
    param_1[0x95] = iVar8;
    param_1[0x90] = (-(uint)(param_1[0xa0] != 0x20) & uVar1) + iVar2;
    param_1[0x96] = uVar1;
    param_1[0x97] = iStack_c - iStack_1c;
    param_1[0x91] = iVar2;
    param_1[0x92] = (local_20 + iVar2 * -2) - uVar1;
    param_1[0x93] = iStack_c + iVar2 * -2;
  }
  return;
}



void __fastcall FUN_009433a0(int *param_1)

{
  code *pcVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  undefined4 *puVar7;
  int iVar8;
  int *piVar9;
  int *piVar10;
  undefined4 *puStack_1c;
  int local_10;
  undefined4 local_c;
  int iStack_8;
  int iStack_4;
  
  if (param_1[0x7b] != 0) {
    puStack_1c = &local_c;
    piVar10 = &local_10;
    (**(code **)(*param_1 + 0x27c))(piVar10);
    iVar6 = param_1[0x8f];
    uVar4 = (**(code **)(*(int *)param_1[0x7b] + 0xe8))();
    if ((uVar4 & 0x1f200000) == 0x200000) {
      pcVar1 = *(code **)(((int *)param_1[0x7b])[0xe6] + 0x90);
      local_c = 0xffffffff;
      if (param_1[0x8c] == 0) {
        piVar9 = &local_10;
        local_10 = 0;
        cVar3 = (*pcVar1)();
        if (cVar3 == '\0') {
          iVar8 = param_1[0x8d] + iStack_8;
        }
        else {
          iVar8 = param_1[0x8d];
        }
      }
      else {
        local_10 = param_1[0x8d];
        piVar9 = &local_10;
        (*pcVar1)();
        iVar8 = param_1[0x8d] + param_1[0x8c] + iStack_8;
      }
      iVar2 = param_1[0x90];
      iVar5 = FUN_0091b530(&stack0xffffffec);
      puVar7 = (undefined4 *)((iVar6 - *(int *)(iVar5 + 4)) / 2 + iStack_4);
      if ((int)puVar7 < (int)puStack_1c) {
        puVar7 = puStack_1c;
      }
      iVar5 = (param_1[0x92] - (iVar8 + iVar2)) - param_1[0x90];
      (**(code **)(*(int *)param_1[0x7b] + 0x288))(iVar8 + iVar2,puVar7,iVar5,0xffffffff,3);
      (**(code **)(*(int *)param_1[0x7b] + 0x278))(&stack0xffffffe8,&puStack_1c);
      iVar6 = (int)puVar7 + (int)piVar9 + (iVar5 - iVar6);
      if (-1 < iVar6) {
        (**(code **)(*(int *)param_1[0x7b] + 0x288))
                  (0xffffffff,0xffffffff,piVar10,(int)piVar9 + (-1 - iVar6),0);
        return;
      }
    }
    else {
      (**(code **)(*(int *)param_1[0x7b] + 0x288))
                (param_1[0x90] + param_1[0x8c],param_1[0x91],param_1[0x92] - param_1[0x8c],
                 param_1[0x93],3);
    }
  }
  return;
}



void __thiscall FUN_00943560(int param_1,int *param_2)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  undefined local_8 [8];
  
  iVar4 = 0;
  iVar5 = 0x96;
  if (*(int *)(param_1 + 0x1ec) != 0) {
    piVar3 = (int *)FUN_0091b530(local_8);
    iVar5 = *piVar3;
    iVar4 = piVar3[1];
  }
  cVar2 = (**(code **)(*(int *)(param_1 + 0x84) + 0x10))();
  if (cVar2 == '\0') {
    piVar3 = (int *)(**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
    cVar2 = (**(code **)(*piVar3 + 0x10))();
    if (cVar2 == '\0') {
      iVar4 = iVar4 + 4;
    }
    else {
      piVar3 = (int *)(**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
      iVar4 = (**(code **)(*piVar3 + 0x2c))();
      iVar4 = iVar4 * 2 + 5;
    }
  }
  else {
    iVar4 = (**(code **)(*(int *)(param_1 + 0x84) + 0x2c))();
    iVar4 = iVar4 * 2 + 5;
  }
  iVar1 = *(int *)(param_1 + 0x2b0);
  cVar2 = (**(code **)(*(int *)(param_1 + 0x28c) + 0x10))();
  if ((cVar2 != '\0') && (iVar4 < iVar1)) {
    iVar4 = iVar1;
  }
  param_2[1] = iVar4;
  *(int *)(param_1 + 0x130) = iVar5 + 0x15;
  *(int *)(param_1 + 0x134) = iVar4;
  *param_2 = iVar5 + 0x15;
  return;
}



undefined4 __thiscall FUN_00943750(int *param_1_00,int param_1,byte param_2)

{
  int iVar1;
  uint uVar2;
  code *pcVar3;
  char cVar4;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 == DAT_032bfe20) {
    if (((param_2 & 1) == 0) || (*(char *)((int)param_1_00 + 0x2bd) != '\0')) {
      if ((param_1_00[0x9d] & 0x10U) != 0) {
        param_1_00[0x9d] = param_1_00[0x9d] & 0xffffffeb;
        (**(code **)(*param_1_00 + 0x15c))(1,0);
      }
    }
    else if ((param_1_00[0x9d] & 0x10U) == 0) {
      param_1_00[0x9d] = param_1_00[0x9d] | 0x10;
      cVar4 = (**(code **)(*param_1_00 + 0x158))();
      if (cVar4 != '\0') {
        param_1_00[0x9d] = param_1_00[0x9d] | 4;
      }
LAB_00943836:
      (**(code **)(*param_1_00 + 0x15c))(1,0);
    }
  }
  else if ((iVar1 == DAT_032bfe08) || (iVar1 == DAT_032bfe2c)) {
    if ((param_2 & 3) != 0) {
      pcVar3 = *(code **)(*param_1_00 + 0x15c);
      param_1_00[0x9d] = param_1_00[0x9d] | 4;
      (*pcVar3)(1,0);
      if ((*(byte *)(param_1_00 + 0xad) & 2) == 0) {
        (**(code **)(*param_1_00 + 0x368))();
      }
      else {
        FUN_0091f8e0();
      }
    }
  }
  else if (iVar1 == DAT_032bfe0c) {
    cVar4 = (**(code **)(*param_1_00 + 0x158))();
    if (cVar4 != '\0') {
      FUN_0091fac0();
    }
    if ((*(byte *)(param_1_00 + 0x9d) & 4) != 0) {
      if (((*(byte *)(param_1_00 + 0xad) & 2) != 0) && ((param_2 & 3) != 0)) {
        (**(code **)(*param_1_00 + 0x368))();
      }
      param_1_00[0x9d] = param_1_00[0x9d] & 0xfffffffb;
      goto LAB_00943836;
    }
  }
  else {
    if (iVar1 != DAT_032bfe28) {
      return 0;
    }
    uVar2 = param_1_00[0x9d];
    if ((uVar2 & 0x14) != 0) {
      param_1_00[0x9d] = uVar2 & 0xffffffef;
      if (*(char *)((int)param_1_00 + 0x2bd) != '\0') goto LAB_009438cc;
      param_1_00[0x9d] = uVar2 & 0xffffffeb;
      (**(code **)(*param_1_00 + 0x15c))(1,0);
    }
  }
  if (*(char *)((int)param_1_00 + 0x2bd) == '\0') {
    return 1;
  }
LAB_009438cc:
  param_1_00[0x9d] = param_1_00[0x9d] & 0xffffffef;
  return 1;
}



undefined4 __thiscall FUN_009438e0(int *param_1_00,int param_1)

{
  int iVar1;
  uint local_8;
  int local_4;
  
  FUN_008a6860(&local_8);
  iVar1 = *(int *)(param_1 + 0xc);
  if (((*(char *)((int)param_1_00 + 0x2c1) != '\x01') &&
      (*(char *)((int)param_1_00 + 0x2bd) == '\x03')) &&
     ((iVar1 == DAT_032bfe08 || (iVar1 == DAT_032bfe18)))) {
    (**(code **)(*param_1_00 + 0x364))(1);
    return 1;
  }
  if (iVar1 == DAT_032bfe08) {
    if ((local_4 <= param_1_00[0x87]) &&
       ((local_4 < param_1_00[0x87] || (local_8 < (uint)param_1_00[0x86])))) {
      *(undefined4 *)(param_1 + 0xc) = 0;
      return 1;
    }
  }
  return 0;
}



void __thiscall FUN_00943970(int *param_1_00,int param_1)

{
  int iVar1;
  undefined local_54 [52];
  int local_20;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6b98;
  local_c = ExceptionList;
  iVar1 = *(int *)(param_1 + 0xc);
  if (((iVar1 == DAT_032bfe08) || (iVar1 == DAT_032bfe2c)) && ((param_1_00[0x38] & 0x10U) != 0)) {
    if (*(byte *)((int)param_1_00 + 0x2bd) < 2) {
      if ((param_1_00[0x38] & 0x100U) == 0) {
        ExceptionList = &local_c;
        (**(code **)(*param_1_00 + 0x368))();
        ExceptionList = local_c;
        return;
      }
      if ((iVar1 == DAT_032bfe2c) && (param_1_00[0x7f] != 0)) {
        ExceptionList = &local_c;
        (**(code **)(*(int *)param_1_00[0x7f] + 0x34))();
        ExceptionList = local_c;
        return;
      }
    }
  }
  else {
    if (iVar1 == DAT_032bfe44) {
      if (*(char *)((int)param_1_00 + 0x2bd) == '\x03') {
        ExceptionList = &local_c;
        (**(code **)(**(int **)(param_1_00[0x7e] + 0x70) + 0x18))(param_1);
        ExceptionList = pvStack_10;
        return;
      }
      if (((*(int *)(param_1 + 0x38) == 0) && (*(int *)(param_1 + 0x3c) != 0)) &&
         (ExceptionList = &local_c, iVar1 = FUN_00938ba0(DAT_0323f878 ^ (uint)&stack0xffffffa4),
         iVar1 == 0)) {
        FUN_0092bbc0(DAT_032bfe70);
        local_4 = 0;
        local_20 = (uint)(*(int *)(param_1 + 0x3c) < 1) * 2 + 0x13b;
        (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(local_54);
        puStack_8 = (undefined *)0xffffffff;
        FUN_0083e850();
        ExceptionList = pvStack_10;
        return;
      }
    }
    else if (iVar1 == 0) {
      return;
    }
    *(undefined *)(param_1 + 0x24) = 1;
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00943b00(int *param_1,int param_2)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  
  if (*(char *)((int)param_1 + 0x2bd) == '\x03') {
    if (param_1[0x7f] == 0) {
      (**(code **)(*param_1 + 900))(0);
    }
    iVar2 = (**(code **)(*(int *)param_1[0x7f] + 0x10))();
                    // WARNING: Could not recover jumptable at 0x00943b37. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(iVar2 + 0x70) + 0x18))();
    return;
  }
  iVar2 = (**(code **)(*param_1 + 0x234))();
  if (((*(uint *)(*(int *)(iVar2 + 0x44) + 0xe0) >> 0x13 & 1) != 0) &&
     (cVar1 = FUN_0091ccc0(param_2), cVar1 != '\0')) {
    return;
  }
  cVar1 = (**(code **)(*param_1 + 0x36c))(param_2);
  if (cVar1 != '\0') {
    (**(code **)(*param_1 + 0x368))();
    return;
  }
  uVar3 = (**(code **)(*param_1 + 0xe8))();
  if (param_1[0x7f] == 0) {
    (**(code **)(*param_1 + 900))(0);
  }
  if (((int *)param_1[0x7f] != (int *)0x0) &&
     (((uVar3 & 0x10) != 0 ||
      ((*(int *)(param_2 + 0x34) != 0x13c && (*(int *)(param_2 + 0x34) != 0x13a)))))) {
    (**(code **)(*(int *)param_1[0x7f] + 0x2c))(param_2);
    return;
  }
  *(undefined *)(param_2 + 0x24) = 1;
  return;
}



void __thiscall FUN_00943bf0(int *param_1_00,int param_1)

{
  int iVar1;
  
  if (*(char *)((int)param_1_00 + 0x2bd) == '\x03') {
    if (param_1_00[0x7f] == 0) {
      (**(code **)(*param_1_00 + 900))(0);
    }
    iVar1 = (**(code **)(*(int *)param_1_00[0x7f] + 0x10))();
                    // WARNING: Could not recover jumptable at 0x00943c27. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(iVar1 + 0x70) + 0x18))();
    return;
  }
  if (param_1_00[0x7f] == 0) {
    (**(code **)(*param_1_00 + 900))(0);
  }
  if ((int *)param_1_00[0x7f] != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00943c4e. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*(int *)param_1_00[0x7f] + 0x30))();
    return;
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



void __fastcall FUN_00943cb0(int *param_1)

{
  (**(code **)(*param_1 + 0x364))(1);
  if (param_1[0x7e] != 0) {
    FUN_0091c050(param_1[0x82]);
  }
  if ((int *)param_1[0x82] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x82] + 4))(1);
    param_1[0x82] = 0;
  }
  if ((int *)param_1[0x7f] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x7f] + 0xc))();
    param_1[0x7f] = 0;
  }
  if (param_1[0x7d] != 0) {
    FUN_0091c050(param_1[0x83]);
    if ((int *)param_1[0x83] != (int *)0x0) {
      (**(code **)(*(int *)param_1[0x83] + 4))(1);
      param_1[0x83] = 0;
    }
    (**(code **)(*(int *)param_1[0x7d] + 0x50))();
    param_1[0x7d] = 0;
  }
  param_1[0x7e] = 0;
  return;
}



void __thiscall FUN_00943d60(int *param_1_00,undefined4 *param_1)

{
  int *piVar1;
  char cVar2;
  code *pcVar3;
  int iVar4;
  
  piVar1 = (int *)param_1_00[0x7d];
  if (*(char *)((int)param_1_00 + 0x2bd) == '\x02') {
    (**(code **)(*piVar1 + 0x288))(*param_1,param_1[1],param_1[2],param_1[3],3);
    if (*(char *)((int)param_1_00 + 0x2c1) == '\x01') {
      iVar4 = param_1_00[0x7e];
      pcVar3 = *(code **)(*piVar1 + 0x344);
    }
    else {
      pcVar3 = *(code **)(*piVar1 + 0xcc);
      iVar4 = 1;
    }
    (*pcVar3)(iVar4);
    *(undefined *)((int)param_1_00 + 0x2bd) = 3;
    if (*(char *)((int)param_1_00 + 0x2c1) == '\x03') {
      (**(code **)(*(int *)param_1_00[0x7e] + 0x100))();
    }
  }
  else if (*(char *)((int)param_1_00 + 0x2bd) == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      cVar2 = (**(code **)(*piVar1 + 0xdc))();
      if (cVar2 != '\0') {
        FUN_008402e0("..\\..\\src\\common\\combocmn.cpp",0x988,"wxComboCtrlBase::DoShowPopup",
                     "!winPopup->IsShown()",0);
      }
    }
    *(undefined *)((int)param_1_00 + 0x2bd) = 0;
  }
  (**(code **)(*param_1_00 + 0x15c))(1,0);
  return;
}



void __thiscall FUN_00943e40(int param_1_00,undefined4 *param_1)

{
  *param_1 = *(undefined4 *)(param_1_00 + 0xa0);
  param_1[1] = 0xffffffff;
  return;
}



void __thiscall FUN_00943e60(int param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined local_54 [8];
  int local_4c;
  undefined4 local_40;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6b98;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1_00 + 0x40);
  FUN_0092bc10(param_1);
  local_40 = *(undefined4 *)(iVar1 + 0x40);
  local_4 = 0;
  local_4c = iVar1;
  cVar2 = (**(code **)(**(int **)(iVar1 + 0x70) + 0x18))(local_54,uVar3);
  if ((cVar2 == '\0') && (*(int *)(param_1 + 0x34) != 9)) {
    *(undefined *)(param_1 + 0x24) = 1;
  }
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_10;
  return;
}



void __thiscall FUN_00943f10(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  bool bVar3;
  bool bVar4;
  int iVar5;
  int *piVar6;
  int unaff_EBP;
  int aiStack_c [2];
  int local_4;
  
  iVar5 = param_1;
  local_4 = *(int *)(param_1 + 0x30);
  iVar1 = *(int *)(param_1 + 0x2c);
  piVar6 = *(int **)(param_1_00 + 0x40);
  if (piVar6[0x7f] == 0) {
    (**(code **)(*piVar6 + 900))(0);
  }
  piVar6 = (int *)(**(code **)(*(int *)piVar6[0x7f] + 0x10))();
  (**(code **)(*piVar6 + 0x27c))(&param_1,aiStack_c);
  iVar2 = *(int *)(iVar5 + 0xc);
  if ((((iVar1 < 0) || (aiStack_c[0] < 0)) || (local_4 <= iVar1)) || (unaff_EBP <= aiStack_c[0])) {
    bVar3 = false;
  }
  else {
    bVar3 = true;
  }
  bVar4 = false;
  *(undefined *)(iVar5 + 0x24) = 1;
  if ((bVar3) && (*(char *)(*(int *)(param_1_00 + 0x40) + 0x2bd) == '\x03')) {
    *(undefined *)(param_1_00 + 0x44) = 1;
    if (iVar2 == DAT_032bfe20) {
      if (*(char *)(param_1_00 + 0x45) != '\0') {
        if ((*(byte *)(iVar5 + 0x29) & 1) != 0) goto LAB_00944008;
        *(undefined *)(param_1_00 + 0x45) = 0;
      }
    }
    else if (iVar2 == DAT_032bfe08) {
      if (*(char *)(param_1_00 + 0x45) != '\0') {
        *(undefined *)(param_1_00 + 0x45) = 0;
      }
    }
    else if (iVar2 == DAT_032bfe0c) {
      if (*(char *)(param_1_00 + 0x45) != '\0') {
        *(undefined *)(param_1_00 + 0x45) = 0;
        bVar4 = true;
LAB_00944008:
        *(undefined *)(iVar5 + 0x24) = 0;
      }
    }
    else if (*(char *)(param_1_00 + 0x45) != '\0') goto LAB_00944008;
  }
  else if (((iVar2 == DAT_032bfe20) || ((iVar2 == DAT_032bfe08 || (iVar2 == DAT_032bfe0c)))) ||
          (iVar2 == DAT_032bfe18)) goto LAB_00944008;
  if (iVar2 == DAT_032bfe0c) {
    if (*(char *)(*(int *)(param_1_00 + 0x40) + 0x2bd) != '\x03') {
      *(undefined *)(iVar5 + 0x24) = 0;
      goto LAB_00944033;
    }
    if ((!bVar3) && (*(char *)(param_1_00 + 0x44) == '\0')) goto LAB_00944033;
  }
  if (!bVar4) {
    return;
  }
LAB_00944033:
  iVar1 = *(int *)(*(int *)(param_1_00 + 0x40) + 0x1f0);
  if (iVar1 == 0) {
    FUN_00943750(iVar5,0);
    return;
  }
  (**(code **)(**(int **)(iVar1 + 0x70) + 0x18))(iVar5);
  return;
}



void __fastcall FUN_00944070(int *param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined **appuStack_50 [5];
  undefined local_3c [8];
  undefined local_34 [20];
  int local_20 [2];
  int local_18;
  undefined local_14;
  undefined local_13;
  undefined local_12;
  undefined local_11;
  undefined local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda580;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0096d140(local_3c,0,DAT_0323f878 ^ (uint)&stack0xffffffa8);
  local_4 = 0;
  if (*(char *)((int)param_1 + 0x2bf) == '\0') {
    if (param_1 + 0x98 != local_20) {
      FUN_0083ea60(local_20);
    }
    *(undefined *)(param_1 + 0x9b) = local_14;
    *(undefined *)((int)param_1 + 0x26d) = local_13;
    param_1[0x9a] = local_18;
    *(undefined *)((int)param_1 + 0x26e) = local_12;
    *(undefined *)((int)param_1 + 0x26f) = local_11;
    *(undefined *)(param_1 + 0x9c) = local_10;
  }
  if ((*(byte *)(param_1 + 0x37) & 0x20) == 0) {
    cVar1 = (**(code **)(*param_1 + 0x180))(local_34);
    if (cVar1 != '\0') {
      *(byte *)((int)param_1 + 0xdd) = *(byte *)((int)param_1 + 0xdd) & 0xfe;
    }
  }
  cVar1 = (**(code **)(*param_1 + 0x188))();
  if (cVar1 == '\0') {
    uVar2 = FUN_0091de40(appuStack_50);
    local_4._0_1_ = 1;
    cVar1 = (**(code **)(*param_1 + 0x17c))(uVar2);
    if (cVar1 != '\0') {
      *(byte *)(param_1 + 0x37) = *(byte *)(param_1 + 0x37) & 0x7f;
    }
    local_4 = (uint)local_4._1_3_ << 8;
    appuStack_50[0] = wxObject::vftable;
    FUN_0083e850();
  }
  local_4 = 0xffffffff;
  FUN_0043d9c0();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009441a0(int param_1_00,int param_1)

{
  if (*(int **)(param_1_00 + 0x1ec) != (int *)0x0) {
    (**(code **)(**(int **)(param_1_00 + 0x1ec) + 0x17c))(param_1);
  }
  if (param_1_00 + 0x260 != param_1) {
    FUN_0083ea60(param_1);
  }
  *(undefined4 *)(param_1_00 + 0x268) = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 0x26c) = *(undefined *)(param_1 + 0xc);
  *(undefined *)(param_1_00 + 0x26d) = *(undefined *)(param_1 + 0xd);
  *(undefined *)(param_1_00 + 0x26e) = *(undefined *)(param_1 + 0xe);
  *(undefined *)(param_1_00 + 0x26f) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x270) = *(undefined *)(param_1 + 0x10);
  *(undefined *)(param_1_00 + 0x2bf) = 1;
  return;
}



void __fastcall FUN_00944210(int *param_1)

{
  int iVar1;
  undefined **local_54;
  undefined local_50 [4];
  undefined **ppuStack_4c;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7738;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (((uint)param_1[0xad] >> 8 & 1) != 0) {
    iVar1 = param_1[0x10];
    (**(code **)(*param_1 + 0x278))(&local_54,local_50,DAT_0323f878 ^ (uint)&stack0xffffff9c);
    FUN_00845a20(iVar1,DAT_032bfed0);
    local_54 = wxSizeEvent::vftable;
    uStack_24 = 0;
    uStack_20 = 0;
    uStack_1c = 0;
    uStack_18 = 0;
    local_c = (void *)0x0;
    ppuStack_4c = (undefined **)param_1;
    (**(code **)(*(int *)param_1[0x1c] + 0x18))(&local_54);
    (**(code **)(*param_1 + 0x15c))(1,0);
    uStack_4 = 0xffffffff;
    ppuStack_4c = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009442f0(int *param_1)

{
  int iVar1;
  
  (**(code **)(*param_1 + 0x37c))();
  if ((param_1[0xad] & 0x400U) == 0) {
    iVar1 = (**(code **)(*param_1 + 0x378))();
    param_1[0x8d] = iVar1;
  }
  FUN_00944210();
  return;
}



bool __thiscall FUN_00944330(int param_1_00,int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (iVar1 == -1) {
    iVar1 = (**(code **)(*(int *)(param_1_00 + -0x194) + 0x378))();
    *(uint *)(param_1_00 + 0x120) = *(uint *)(param_1_00 + 0x120) & 0xfffffbff;
  }
  else {
    *(uint *)(param_1_00 + 0x120) = *(uint *)(param_1_00 + 0x120) | 0x400;
  }
  *(int *)(param_1_00 + 0xa0) = iVar1;
  iVar1 = param_1[1];
  FUN_00944210();
  return iVar1 == -1;
}



undefined4 __thiscall FUN_00944390(int param_1_00,undefined4 param_1)

{
  if (*(int *)(param_1_00 + 0x1ec) != 0) {
    FUN_0091de40(param_1);
    return param_1;
  }
  FUN_00458700(param_1_00 + 0x260);
  return param_1;
}



void __thiscall FUN_009443d0(int *param_1_00,int param_1,int *param_2,byte param_3)

{
  char cVar1;
  char cVar2;
  undefined4 uVar3;
  int *piVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  uint local_50;
  undefined auStack_4c [8];
  int local_44;
  int local_40;
  int local_3c;
  int local_38;
  undefined **appuStack_34 [5];
  undefined **appuStack_20 [5];
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bda5c8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_50 = param_1_00[0x9d];
  if (((*(byte *)(param_1_00 + 0xad) & 8) != 0) && (1 < *(byte *)((int)param_1_00 + 0x2bd))) {
    local_50 = local_50 | 4;
  }
  iVar7 = param_2[3];
  local_38 = param_1_00[0xac];
  iVar6 = param_2[1];
  local_44 = param_1_00[0xa1] + *param_2;
  local_40 = (iVar7 - local_38) / 2 + iVar6;
  local_3c = param_1_00[0xab];
  if (local_40 < iVar6) {
    local_40 = iVar6;
  }
  if (iVar7 < local_38) {
    local_38 = iVar7;
  }
  cVar1 = FUN_0091b930(DAT_0323f878 ^ (uint)&stack0xffffffa0);
  if (cVar1 == '\0') {
    local_50 = local_50 | 1;
  }
  if (((param_3 & 1) != 0) &&
     ((cVar2 = (**(code **)(*param_1_00 + 0x188))(), cVar2 == '\0' ||
      ((param_1_00[0xad] & 0x200U) == 0)))) {
    FUN_00453f4b();
    uStack_4 = 0;
    if ((param_1_00[0xad] & 0x200U) == 0) {
      uVar3 = FUN_00944390(appuStack_20);
      uStack_4._0_1_ = 2;
    }
    else {
      uVar3 = FUN_0091de40(appuStack_20);
      uStack_4._0_1_ = 1;
    }
    FUN_004722cb(uVar3);
    uStack_4._0_1_ = 0;
    appuStack_20[0] = wxObject::vftable;
    FUN_0083e850();
    FUN_0095d7e0(appuStack_34,100);
    uStack_4 = CONCAT31(uStack_4._1_3_,3);
    (**(code **)(**(int **)(param_1 + 8) + 0x60))(auStack_4c);
    uStack_8 = (undefined *)((uint)uStack_8 & 0xffffff00);
    FUN_008f7630();
    FUN_009566f0(&local_38,1,100);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,4);
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(&local_50);
    local_c = (void *)((uint)local_c & 0xffffff00);
    FUN_0083e850();
    (**(code **)(**(int **)(param_1 + 8) + 0x150))(*param_2,param_2[1],param_2[2],param_2[3]);
    uStack_4 = 0xffffffff;
    appuStack_34[0] = wxObject::vftable;
    FUN_0083e850();
  }
  piVar4 = param_1_00 + 0xa3;
  cVar2 = (**(code **)(param_1_00[0xa3] + 0x10))();
  if (cVar2 == '\0') {
    if ((param_3 & 2) == 0) {
      piVar4 = (int *)FUN_009ba160();
      (**(code **)(*piVar4 + 0x1c))(param_1_00,param_1,&local_44,local_50);
    }
  }
  else {
    if (cVar1 == '\0') {
      piVar4 = param_1_00 + 0xa9;
    }
    else if ((param_1_00[0x9d] & 4U) == 0) {
      if ((param_1_00[0x9d] & 0x10U) != 0) {
        piVar4 = param_1_00 + 0xa7;
      }
    }
    else {
      piVar4 = param_1_00 + 0xa5;
    }
    if ((*(char *)(param_1_00 + 0xaf) != '\0') && ((param_3 & 2) == 0)) {
      piVar5 = (int *)FUN_009ba160();
      (**(code **)(*piVar5 + 0x2c))(param_1_00,param_1,&local_44,local_50);
    }
    iVar7 = piVar4[1];
    if (iVar7 == 0) {
      iVar6 = 0;
      iVar7 = 0;
    }
    else {
      iVar6 = *(int *)(iVar7 + 0xc);
      iVar7 = *(int *)(iVar7 + 8);
    }
    (**(code **)(**(int **)(param_1 + 8) + 0x164))
              (piVar4,(local_3c - iVar7) / 2 + local_44,(local_38 - iVar6) / 2 + local_40,1);
  }
  ExceptionList = local_c;
  return;
}



void FUN_009446a0(int *param_1,int param_2,int *param_3)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uStack_2c;
  uint uStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9388;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = (**(code **)(*param_1 + 0xe8))(DAT_0323f878 ^ (uint)&stack0xffffffc0);
  if ((uVar1 & 0x10) != 0) {
    (**(code **)(*param_1 + 0x370))(param_2,param_3,0);
    uVar2 = (**(code **)(param_1[0x65] + 0x14))(&stack0xffffffc4);
    iVar3 = (**(code **)(**(int **)(param_2 + 8) + 0x98))();
    (**(code **)(**(int **)(param_2 + 8) + 0x168))
              (uVar2,param_1[0x8d] + *param_3,(param_3[3] - iVar3) / 2 + param_3[1]);
    _free((void *)0x0);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00944780(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_009446a0(*(undefined4 *)(param_1_00 + 4),param_1,param_2);
  return;
}



undefined4 * __thiscall FUN_009447a0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxComboCtrlTextCtrl::vftable;
  param_1_00[0x65] = wxComboCtrlTextCtrl::vftable;
  param_1_00[0x74] = wxComboCtrlTextCtrl::vftable;
  param_1_00[0xe6] = wxComboCtrlTextCtrl::vftable;
  FUN_00963240();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_009447f0(void)

{
  FUN_009447a0();
  return;
}



void FUN_00944800(void)

{
  FUN_009447a0();
  return;
}



void FUN_00944810(void)

{
  FUN_009447a0();
  return;
}



void __fastcall FUN_00944830(undefined4 *param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bda668;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxComboCtrlBase::vftable;
  param_1[0x65] = wxComboCtrlBase::vftable;
  local_4 = 8;
  puVar2 = (undefined4 *)FUN_009116e0(uVar1);
  if (param_1 == puVar2) {
    FUN_0091fac0();
  }
  FUN_00943cb0();
  if (param_1[0x7b] != 0) {
    FUN_0091c050(param_1[0x80]);
  }
  if ((int *)param_1[0x80] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x80] + 4))(1);
  }
  local_4._0_1_ = 7;
  FUN_008f7630();
  local_4._0_1_ = 6;
  FUN_008f7630();
  local_4._0_1_ = 5;
  FUN_008f7630();
  local_4._0_1_ = 4;
  FUN_008f7630();
  local_4._0_1_ = 3;
  param_1[0x98] = wxObject::vftable;
  FUN_0083e850();
  _free((void *)param_1[0x79]);
  if (7 < (uint)param_1[0x78]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x73]);
  }
  param_1[0x78] = 7;
  param_1[0x77] = 0;
  *(undefined2 *)(param_1 + 0x73) = 0;
  _free((void *)param_1[0x70]);
  if (7 < (uint)param_1[0x6f]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x6a]);
  }
  param_1[0x6f] = 7;
  param_1[0x6e] = 0;
  *(undefined2 *)(param_1 + 0x6a) = 0;
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00941310();
  local_4 = 0xffffffff;
  FUN_0044cd6b();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009449c0(int *param_1)

{
  uint uVar1;
  undefined **local_6c [2];
  int *local_64;
  uint uStack_40;
  undefined4 uStack_30;
  uint uStack_2c;
  void *pvStack_28;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda698;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032bfe00,param_1[0x10]);
  local_4 = 0;
  local_64 = param_1;
  FUN_0091c170(local_6c);
  (**(code **)(*param_1 + 0x360))(uVar1);
  local_4 = 0xffffffff;
  _free(pvStack_28);
  if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_40);
  }
  uStack_2c = 7;
  uStack_30 = 0;
  uStack_40 = uStack_40 & 0xffff0000;
  local_6c[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00944aa0(int *param_1,char param_2)

{
  uint *puVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  int *piVar5;
  undefined4 *puVar6;
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  undefined4 auStack_80 [2];
  undefined auStack_78 [12];
  undefined auStack_6c [8];
  int *piStack_64;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda6c8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_80;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  if (*(char *)((int)param_1 + 0x2bd) != '\0') {
    *(undefined *)((int)param_1 + 0x2bd) = 0;
    (**(code **)(*(int *)param_1[0x7d] + 0xd8))(0,uVar4);
    (**(code **)(*(int *)param_1[0x7f] + 0x18))();
    iVar2 = param_1[0x82];
    if (iVar2 != 0) {
      *(undefined *)(iVar2 + 0x44) = 0;
      *(undefined *)(iVar2 + 0x45) = 1;
    }
    piVar5 = (int *)FUN_008a6860(auStack_80);
    param_1[0x86] = *piVar5;
    param_1[0x87] = piVar5[1];
    if (*(char *)((int)param_1 + 0x2c1) == '\x01') {
      puVar1 = (uint *)(param_1 + 0x86);
      uVar4 = *puVar1;
      *puVar1 = *puVar1 + 0x96;
      param_1[0x87] = param_1[0x87] + (uint)(0xffffff69 < uVar4);
    }
    puVar6 = (undefined4 *)FUN_00910c30(auStack_78);
    auStack_80[0] = *puVar6;
    (**(code **)(*param_1 + 0x260))(auStack_80,&stack0xffffff7c);
    cVar3 = FUN_008f7580(unaff_ESI,unaff_EDI);
    if (cVar3 == '\0') {
      param_1[0x9d] = 0;
    }
    if ((param_1[0xad] & 0x800U) != 0) {
      piVar5 = (int *)param_1[0x11];
      uVar4 = (**(code **)(*piVar5 + 0xe8))();
      (**(code **)(*piVar5 + 0xe4))(uVar4 | 0x80000);
      param_1[0xad] = param_1[0xad] & 0xfffff7ff;
    }
    (**(code **)(*param_1 + 0x15c))(1,0);
    (**(code **)(*param_1 + 0x100))();
    if (param_2 != '\0') {
      FUN_0092bd60(DAT_032bfe04,param_1[0x10]);
      uStack_4 = 0;
      piStack_64 = param_1;
      FUN_0091c170(auStack_6c);
      uStack_4 = 0xffffffff;
      FUN_00454a4e();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1b8);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00919d40(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined __thiscall
FUN_00944d20(int *param_1_00,undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,
            int *param_5,uint param_6,undefined4 param_7,undefined4 param_8)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined **appuStack_4c [2];
  int *piStack_44;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda708;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  cVar1 = FUN_00936340(param_1,param_2,param_4,param_5,param_6 | 0x40000,param_7,param_8);
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  if (param_1_00 + 0x69 != param_3) {
    FID_conflict_assign(param_3,0,0xffffffff);
  }
  (**(code **)(*param_1_00 + 0x37c))(uVar2);
  iVar3 = (**(code **)(*param_1_00 + 0x378))();
  param_1_00[0xad] = param_1_00[0xad] | 0x100;
  param_1_00[0x8d] = iVar3;
  if ((0 < *param_5) && (0 < param_5[1])) {
    FUN_00910db0(param_5,param_1_00[0x10]);
    uStack_4 = 0;
    piStack_44 = param_1_00;
    (**(code **)(*(int *)param_1_00[0x1c] + 0x20))(appuStack_4c);
    uStack_4 = 0xffffffff;
    appuStack_4c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  return 1;
}



void __thiscall FUN_00944e40(int param_1_00,int param_1)

{
  uint uVar1;
  undefined local_6c [8];
  int local_64;
  undefined4 local_58;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1ca8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 8) == param_1_00) {
    *(undefined *)(param_1 + 0x24) = 1;
  }
  else if ((*(int *)(param_1 + 0xc) == DAT_032c1058) && (*(char *)(param_1_00 + 0x2c0) != '\0')) {
    *(char *)(param_1_00 + 0x2c0) = *(char *)(param_1_00 + 0x2c0) + -1;
  }
  else {
    FUN_0048a2df(param_1);
    local_58 = *(undefined4 *)(param_1_00 + 0x40);
    local_4 = 0;
    local_64 = param_1_00;
    FUN_0091c170(local_6c);
    *(undefined4 *)(param_1 + 0x20) = 0;
    local_4 = 0xffffffff;
    FUN_00454a4e(uVar1);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00944f00(int param_1)

{
  int *piVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  bool bVar6;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined local_54 [36];
  undefined local_30 [28];
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda78e;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff84;
  ExceptionList = &local_c;
  piVar1 = *(int **)(param_1 + 0x1fc);
  if (*(int *)(param_1 + 500) == 0) {
    if ((*(uint *)(param_1 + 0x2b4) & 0x1000) == 0) {
      puVar5 = (undefined4 *)operator_new(0x17c);
      local_4 = 5;
      if (puVar5 == (undefined4 *)0x0) {
        puVar5 = (undefined4 *)0x0;
      }
      else {
        FUN_009b9590(param_1,0x200000);
        *puVar5 = wxComboPopupWindow::vftable;
        *(undefined *)(puVar5 + 0x5e) = 0;
      }
      local_4 = 0xffffffff;
      *(undefined4 **)(param_1 + 500) = puVar5;
      *(undefined *)(param_1 + 0x2c1) = 1;
    }
    else {
      pvVar3 = operator_new(0x228);
      uVar4 = 0;
      local_4 = 0;
      bVar6 = pvVar3 != (void *)0x0;
      if (bVar6) {
        FUN_0043c211("frame");
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_004325b6(PTR_DAT_03236318);
        local_64 = 0x14;
        local_60 = 0x14;
        local_5c = 0xffffffeb;
        local_58 = 0xffffffeb;
        local_4 = 2;
        uVar4 = FUN_00820a7b(param_1,0xffffffff,local_54,&local_5c,&local_64,0x200002,local_30);
      }
      *(undefined4 *)(param_1 + 500) = uVar4;
      if (bVar6) {
        FUN_0040159c();
      }
      local_4 = 0xffffffff;
      if (bVar6) {
        FUN_0040159c();
      }
      *(undefined *)(param_1 + 0x2c1) = 3;
    }
    puVar5 = (undefined4 *)operator_new(0x44);
    local_4 = 6;
    if (puVar5 == (undefined4 *)0x0) {
      puVar5 = (undefined4 *)0x0;
    }
    else {
      FUN_00845b70();
      *puVar5 = wxComboPopupWindowEvtHandler::vftable;
      puVar5[0x10] = param_1;
    }
    local_4 = 0xffffffff;
    *(undefined4 **)(param_1 + 0x20c) = puVar5;
    FUN_0091bd90(puVar5);
  }
  (**(code **)(*piVar1 + 8))(*(undefined4 *)(param_1 + 500),uVar2);
  uVar4 = (**(code **)(*piVar1 + 0x10))();
  *(undefined4 *)(param_1 + 0x1f8) = uVar4;
  puVar5 = (undefined4 *)operator_new(0x48);
  puStack_8 = (undefined *)0x7;
  if (puVar5 == (undefined4 *)0x0) {
    puVar5 = (undefined4 *)0x0;
  }
  else {
    FUN_00845b70();
    *puVar5 = wxComboPopupEvtHandler::vftable;
    puVar5[0x10] = param_1;
    *(undefined *)(puVar5 + 0x11) = 0;
    *(undefined *)((int)puVar5 + 0x45) = 1;
  }
  puStack_8 = (undefined *)0xffffffff;
  *(undefined4 **)(param_1 + 0x208) = puVar5;
  FUN_0091bd90(puVar5);
  (**(code **)(**(int **)(param_1 + 500) + 0xcc))(0);
  piVar1[2] = piVar1[2] | 1;
  ExceptionList = pvStack_14;
  return;
}



void __thiscall FUN_00945160(int param_1_00,int *param_1)

{
  code *pcVar1;
  char cVar2;
  
  if (param_1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\combocmn.cpp",0x871,"wxComboCtrlBase::DoSetPopupControl",
                   "iface",L"no popup interface set for wxComboCtrl");
    }
  }
  else {
    FUN_00943cb0();
    pcVar1 = *(code **)*param_1;
    param_1[1] = param_1_00;
    (*pcVar1)();
    *(int **)(param_1_00 + 0x1fc) = param_1;
    cVar2 = (**(code **)(*param_1 + 0x3c))();
    if (cVar2 == '\0') {
      FUN_00944f00();
    }
    else {
      *(undefined4 *)(param_1_00 + 0x1f8) = 0;
    }
    if (*(int *)(param_1_00 + 0x1b8) != 0) {
      (**(code **)(*param_1 + 0x1c))(param_1_00 + 0x1a4);
      return;
    }
  }
  return;
}



void __fastcall FUN_009451f0(int *param_1)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  int *piVar6;
  int unaff_EBP;
  int iVar7;
  int iStack_b4;
  int iStack_b0;
  char *pcStack_ac;
  int *piStack_a8;
  char *pcStack_a4;
  char *pcStack_a0;
  uint uStack_9c;
  uint uStack_98;
  int *piStack_94;
  char *pcStack_90;
  int *piStack_8c;
  char *pcStack_88;
  char *pcStack_84;
  wchar_t *pwStack_80;
  uint uStack_7c;
  int iStack_68;
  int iStack_64;
  undefined4 uStack_60;
  undefined4 auStack_5c [7];
  undefined4 uStack_40;
  int *piStack_3c;
  undefined4 uStack_38;
  int iStack_34;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda7b8;
  local_c = ExceptionList;
  uStack_7c = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  if (param_1[0x7f] == 0) {
    pwStack_80 = (wchar_t *)0x0;
    pcStack_84 = (char *)0x94522e;
    (**(code **)(*param_1 + 900))();
  }
  if (*(char *)((int)param_1 + 0x2bd) == '\x03') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pwStack_80 = L"popup window already shown";
      pcStack_84 = "!IsPopupWindowState(Visible)";
      pcStack_88 = "wxComboCtrlBase::ShowPopup";
      piStack_8c = (int *)0x8b3;
      pcStack_90 = "..\\..\\src\\common\\combocmn.cpp";
      piStack_94 = (int *)0x9455e1;
      FUN_00840480();
    }
  }
  else if (*(char *)((int)param_1 + 0x2bd) != '\x02') {
    pwStack_80 = L"ڋ肋ɸ";
    (**(code **)(*param_1 + 0x100))();
    pwStack_80 = (wchar_t *)&iStack_68;
    pcStack_84 = (char *)auStack_5c;
    pcStack_88 = "j";
    (**(code **)(*param_1 + 0x278))();
    pcStack_88 = (char *)0x0;
    piStack_8c = (int *)0x16;
    pcStack_90 = (char *)0x94526f;
    iVar3 = FUN_008fedb0();
    pcStack_88 = (char *)auStack_5c;
    piStack_8c = &iStack_68;
    pcStack_90 = (char *)0x94528a;
    (**(code **)(*param_1 + 0x270))();
    iVar7 = iStack_64;
    pcStack_90 = &stack0xffffff8c;
    piStack_94 = &iStack_68;
    uStack_98 = 0x9452b1;
    (**(code **)(*(int *)param_1[0x11] + 0x25c))();
    iStack_68 = (iVar3 - uStack_7c) - (int)pwStack_80;
    iVar3 = param_1[0x88] + param_1[0x89] + iVar7;
    if (iVar3 < param_1[0x8a]) {
      iVar3 = param_1[0x8a];
    }
    piVar6 = (int *)param_1[0x7d];
    uStack_98 = 0x9452f9;
    iVar4 = (**(code **)(*param_1 + 0x234))();
    piVar1 = *(int **)(iVar4 + 0x44);
    uStack_98 = 0x945308;
    uStack_98 = (**(code **)(*piVar1 + 0xe8))();
    if ((uStack_98 & 0x80000) != 0) {
      uStack_98 = uStack_98 & 0xfff7ffff;
      uStack_9c = 0x945321;
      (**(code **)(*piVar1 + 0xe4))();
      param_1[0xad] = param_1[0xad] | 0x800;
    }
    if (piVar6 == (int *)0x0) {
      uStack_98 = 0x945336;
      FUN_00944f00();
      piVar6 = (int *)param_1[0x7d];
    }
    piVar1 = (int *)param_1[0x7e];
    uStack_98 = 1;
    uStack_9c = 0x945351;
    (**(code **)(*piVar6 + 0xd8))();
    if (((PTR_FUN_03235c4c != (undefined *)0x0) && ((int *)param_1[0x7e] != (int *)0x0)) &&
       ((int *)param_1[0x7e] != piVar1)) {
      uStack_9c = 0;
      pcStack_a0 = "!m_popup || m_popup == popup";
      pcStack_a4 = "wxComboCtrlBase::ShowPopup";
      piStack_a8 = (int *)0x8f2;
      pcStack_ac = "..\\..\\src\\common\\combocmn.cpp";
      iStack_b0 = 0x945383;
      FUN_008402e0();
    }
    pcStack_a0 = (char *)param_1[0x8b];
    if ((int)pcStack_a0 < 1) {
      pcStack_a0 = (char *)0x190;
    }
    uStack_9c = uStack_7c;
    piStack_a8 = &iStack_64;
    pcStack_ac = (char *)0x9453ad;
    pcStack_a4 = (char *)iVar3;
    (**(code **)(*(int *)param_1[0x7f] + 0x38))();
    pcStack_ac = (char *)0x0;
    iStack_b4 = iVar7;
    iStack_b0 = unaff_EBP;
    (**(code **)(*piVar1 + 0x288))();
    iVar3 = 0;
    iVar7 = -1;
    (**(code **)(*piVar1 + 0x288))(0,0,0xffffffff,0xffffffff,0);
    (**(code **)(*(int *)param_1[0x7f] + 0x14))();
    (**(code **)(*piVar1 + 0x278))(&iStack_b4,&piStack_a8);
    piStack_a8 = (int *)(iVar3 + iVar7);
    (**(code **)(*DAT_032bcb68 + 0xe4))();
    FUN_008fedb0(0x15,0);
    piVar6 = piStack_a8;
    if ((int)pcStack_ac < iStack_b0) {
      piVar6 = (int *)(iVar3 - iStack_b0);
    }
    if (param_1[0x7b] == 0) {
      (**(code **)(*param_1 + 0x15c))(1,0);
    }
    else {
      if ((*(byte *)(param_1 + 0xad) & 4) == 0) {
        (**(code **)(*(int *)(param_1[0x7b] + 0x398) + 100))();
      }
      uVar5 = (**(code **)(*(int *)(param_1[0x7b] + 0x1d0) + 0x40))(&piStack_8c);
      iStack_64 = 0;
      (**(code **)(*(int *)param_1[0x7f] + 0x1c))(uVar5);
      uStack_4 = 0xffffffff;
      pwStack_80 = L"ძᚋ芋Ŝ";
      FUN_0040159c();
    }
    *(undefined *)((int)param_1 + 0x2bd) = 2;
    uStack_40 = auStack_5c[0];
    uStack_38 = uStack_60;
    iStack_34 = iStack_b0;
    param_1[0x7e] = (int)piVar1;
    piStack_3c = piVar6;
    if ((param_1[0xad] & 0x2000U) == 0) {
      pwStack_80 = (wchar_t *)iStack_68;
      pcStack_84 = (char *)&uStack_40;
      pcStack_88 = (char *)0x94558c;
      cVar2 = (**(code **)(*param_1 + 0x390))();
      if (cVar2 == '\0') {
        ExceptionList = local_c;
        return;
      }
    }
    pwStack_80 = (wchar_t *)iStack_68;
    pcStack_84 = (char *)&uStack_40;
    pcStack_88 = (char *)0x9455a6;
    (**(code **)(*param_1 + 0x38c))();
    ExceptionList = pvStack_14;
    return;
  }
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_00945600(int param_1_00,int param_1)

{
  if (*(int *)(param_1_00 + 0x58) != 0) {
    (**(code **)(*(int *)(*(int *)(param_1_00 + 0x58) + 0x1d0) + 0x40))(param_1);
    return param_1;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x10,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



void __thiscall FUN_00945660(int *param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int local_34;
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  void *pvStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda7e8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_34;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  if (param_1_00[0x6e] == *(int *)(param_1 + 0x14)) {
    iVar3 = FUN_00850760(param_1);
    if (iVar3 == 0) goto LAB_0094579c;
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  FID_conflict_assign(param_1,0,0xffffffff);
  local_18 = (void *)0x0;
  local_4 = 0;
  if (((param_1_00[0x7f] == 0) || (((uint)param_1_00[0x38] >> 4 & 1) == 0)) ||
     (*(int *)(param_1 + 0x14) == 0)) {
LAB_0094571c:
    if (param_1_00 + 0x69 != &local_34) {
      FID_conflict_assign(&local_34,0,0xffffffff);
    }
    if (param_1_00[0x7f] == 0) {
      (**(code **)(*param_1_00 + 900))(0);
      if (param_1_00[0x7f] == 0) goto LAB_00945760;
    }
    (**(code **)(*(int *)param_1_00[0x7f] + 0x1c))(&local_34);
  }
  else {
    cVar1 = (**(code **)(*(int *)param_1_00[0x7f] + 0x24))(param_1,&local_34,uVar2);
    if (cVar1 != '\0') goto LAB_0094571c;
  }
LAB_00945760:
  local_4 = 0xffffffff;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
LAB_0094579c:
  (**(code **)(*param_1_00 + 0x15c))(1,0);
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009457d0(int param_1_00,undefined4 param_1)

{
  if (*(int *)(param_1_00 + 0x1ec) != 0) {
    (**(code **)(*(int *)(*(int *)(param_1_00 + 0x1ec) + 0x1d0) + 0x44))(param_1);
    if ((*(byte *)(param_1_00 + 0x2b4) & 4) == 0) {
      (**(code **)(*(int *)(*(int *)(param_1_00 + 0x1ec) + 0x398) + 100))();
    }
  }
  FUN_00945660(param_1);
  return;
}



void __thiscall FUN_00945820(int *param_1_00,int *param_1)

{
  if (param_1_00[0x7f] == 0) {
    (**(code **)(*param_1_00 + 900))(0);
  }
  if (param_1_00 + 0x69 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  if (param_1_00[0x7b] != 0) {
    *(char *)(param_1_00 + 0xb0) = *(char *)(param_1_00 + 0xb0) + '\x01';
    (**(code **)(*(int *)(param_1_00[0x7b] + 0x1d0) + 0x44))(param_1);
  }
  (**(code **)(*param_1_00 + 0x15c))(1,0);
  return;
}



void __thiscall FUN_00945890(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x58) == 0) {
    FUN_00945660(param_1);
  }
  else {
    (**(code **)(*(int *)(*(int *)(param_1_00 + 0x58) + 0x398) + 0xc))
              (param_1,DAT_0323f878 ^ (uint)&stack0xffffffcc);
    uVar1 = (**(code **)(*(int *)(*(int *)(param_1_00 + 0x58) + 0x1d0) + 0x40))(&stack0xffffffcc);
    uStack_4 = 0;
    FUN_00945660(uVar1);
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00945950(int param_1_00,undefined4 param_1,byte param_2)

{
  if (*(int *)(param_1_00 + 0x58) != 0) {
    if ((param_2 & 1) != 0) {
      (**(code **)(*(int *)(*(int *)(param_1_00 + 0x58) + 0x1d0) + 0x44))();
      FUN_00945660(param_1);
      return;
    }
    (**(code **)(*(int *)(*(int *)(param_1_00 + 0x58) + 0x398) + 8))(param_1);
  }
  FUN_00945660(param_1);
  return;
}



void __thiscall FUN_009459b0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x58) != 0) {
    (**(code **)(*(int *)(*(int *)(param_1_00 + 0x58) + 0x398) + 0x1c))(param_1,param_2);
    (**(code **)(*(int *)(*(int *)(param_1_00 + 0x58) + 0x1d0) + 0x40))(&stack0xffffffc4);
    uStack_4 = 0;
    FUN_00945660();
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00945a60(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  uint uStack_38;
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uStack_38 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x58) != 0) {
    (**(code **)(*(int *)(*(int *)(param_1_00 + 0x58) + 0x398) + 0x20))(param_1,param_2);
    uVar1 = (**(code **)(*(int *)(*(int *)(param_1_00 + 0x58) + 0x1d0) + 0x40))(&uStack_38);
    uStack_4 = 0;
    FUN_00945660(uVar1);
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  ExceptionList = local_c;
  return;
}



undefined __thiscall FUN_00945b10(int param_1_00,int param_1)

{
  undefined uVar1;
  
  if (param_1_00 + 0x34 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  uVar1 = 1;
  if (*(int *)(param_1_00 + 0x58) != 0) {
    uVar1 = (**(code **)(*(int *)(*(int *)(param_1_00 + 0x58) + 0x398) + 0x7c))(param_1);
  }
  (**(code **)(*(int *)(param_1_00 + -0x194) + 0x15c))(1,0);
  return uVar1;
}



void __thiscall FUN_00945b70(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda823;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*(byte *)(param_1_00 + 0xe0) & 0x10) == 0) {
    if (*(int **)(param_1_00 + 0x1ec) != (int *)0x0) {
      (**(code **)(**(int **)(param_1_00 + 0x1ec) + 0x50))(DAT_0323f878 ^ (uint)&stack0xffffffb4);
    }
    param_1 = param_1 | *(uint *)(param_1_00 + 0x2b8) | 0x40;
    if ((*(uint *)(param_1_00 + 0xe0) >> 10 & 1) != 0) {
      param_1 = param_1 | 0x400;
    }
    *(bool *)(param_1_00 + 0x2c0) = *(int *)(param_1_00 + 0x200) != 0;
    puVar3 = (undefined4 *)operator_new(0x3b8);
    local_4 = 0;
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      FUN_00919aa0();
      *puVar3 = wxComboCtrlTextCtrl::vftable;
      puVar3[0x65] = wxComboCtrlTextCtrl::vftable;
      puVar3[0x74] = wxComboCtrlTextCtrl::vftable;
      puVar3[0xe6] = wxComboCtrlTextCtrl::vftable;
    }
    local_4 = 0xffffffff;
    *(undefined4 **)(param_1_00 + 0x1ec) = puVar3;
    FUN_0043c211(&DAT_00d5ef5c);
    local_4 = 1;
    local_38 = 10;
    local_34 = 0xffffffff;
    FUN_00965f50(param_1_00,0xffffffff,param_1_00 + 0x1a4,&DAT_03238d0c,&local_38,param_1,
                 &DAT_032c0398,local_30);
    local_4 = 0xffffffff;
    _free(local_14);
    uVar2 = DAT_032c1058;
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    uVar1 = *(undefined4 *)(*(int *)(param_1_00 + 0x1ec) + 0x40);
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    puVar3 = (undefined4 *)operator_new(0x10);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      puVar3[2] = FUN_00944e40;
      *puVar3 = wxObjectEventFunctor::vftable;
      puVar3[1] = param_1_00;
      puVar3[3] = 0;
    }
    FUN_008461a0(uVar1,0xffffffff,uVar2,puVar3,0);
    uVar2 = DAT_032c105c;
    puVar3 = (undefined4 *)operator_new(0x10);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      *puVar3 = wxObjectEventFunctor::vftable;
      puVar3[1] = param_1_00;
      puVar3[2] = FUN_00944e40;
      puVar3[3] = 0;
    }
    FUN_008461a0(uVar1,0xffffffff,uVar2,puVar3,0);
    (**(code **)(*(int *)(*(int *)(param_1_00 + 0x1ec) + 0x398) + 0x7c))(param_1_00 + 0x1c8);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00945da0(int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(char *)(param_1 + 0x2bd) != '\0') {
    if (*(char *)(param_1 + 0x2bd) != '\x02') {
      uVar1 = (**(code **)(**(int **)(param_1 + 0x1fc) + 0x20))
                        (local_30,DAT_0323f878 ^ (uint)&stack0xffffffcc);
      uStack_4 = 0;
      FUN_009457d0(uVar1);
      uStack_4 = 0xffffffff;
      _free(pvStack_14);
      if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_2c);
      }
      uStack_18 = 7;
      uStack_1c = 0;
      uStack_2c = uStack_2c & 0xffff0000;
    }
    (**(code **)(**(int **)(param_1 + 500) + 0xcc))(0);
    FUN_00944aa0(param_2);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00945e70(int *param_1,undefined4 param_2)

{
  (**(code **)(*param_1 + 0x54))();
  (**(code **)(*param_1 + 0xc))(param_2);
  return;
}



bool __fastcall FUN_00945e90(int *param_1)

{
  undefined local_8 [4];
  undefined local_4 [4];
  
  (**(code **)(*param_1 + 0x68))();
  return (int)local_8 < (int)local_4;
}



void __fastcall FUN_00945ec0(int *param_1)

{
  int unaff_ESI;
  undefined local_8 [4];
  undefined local_4 [4];
  
  (**(code **)(*param_1 + 0x68))(local_8);
  if ((local_4 != (undefined *)0xffffffff) && (unaff_ESI != -1)) {
    (**(code **)(*param_1 + 0x20))(local_4,unaff_ESI);
  }
  return;
}



undefined4 __fastcall FUN_00945f00(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x34))();
  if (cVar1 != '\0') {
    cVar1 = (**(code **)(*param_1 + 0x70))();
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



void __fastcall FUN_00945f30(undefined4 *param_1)

{
  *param_1 = wxTextCompleter::vftable;
  return;
}



uint FUN_00945f40(int *param_1)

{
  uint in_EAX;
  
  if (param_1 != (int *)0x0) {
    in_EAX = (**(code **)(*param_1 + 8))(1);
  }
  return in_EAX & 0xffffff00;
}



undefined4 __fastcall FUN_00945f60(int *param_1)

{
  char cVar1;
  int *piVar2;
  undefined4 uStack_4;
  
  uStack_4 = param_1;
  cVar1 = (**(code **)(*param_1 + 0x70))();
  if (cVar1 == '\0') {
    return 0;
  }
  uStack_4 = (int *)CONCAT22(1,(undefined2)uStack_4);
  piVar2 = (int *)FUN_00933660();
  cVar1 = (**(code **)(*piVar2 + 0x24))((int)&uStack_4 + 2);
  if (cVar1 == '\0') {
    piVar2 = (int *)FUN_00933660();
    cVar1 = (**(code **)(*piVar2 + 0x24))(&stack0xfffffffa);
    if (cVar1 == '\0') {
      return 0;
    }
  }
  return 1;
}



void FUN_00945fc0(undefined4 *param_1)

{
  *param_1 = 0xffffffff;
  param_1[1] = 0xffffffff;
  return;
}



bool __thiscall FUN_00945fe0(int *param_1_00,undefined4 param_1)

{
  param_1_00[5] = 0;
  FUN_00853f60();
  (**(code **)(*param_1_00 + 0xc))(param_1,param_1_00 + 1);
  return param_1_00[2] != 0;
}



undefined4 * __thiscall FUN_00946020(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdaa38;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1_00 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxFocusEvent>,class_wxTextEntryHintData,class_wxFocusEvent,class_wxTextEntryHintData>
                ::vftable;
  param_1_00[1] = param_2;
  param_1_00[2] = param_1;
  local_4 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 == 0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x175,
                 "wxEventFunctorMethod<class wxEventTypeTag<class wxFocusEvent>,class wxTextEntryHintData,class wxFocusEvent,class wxTextEntryHintData>::wxEventFunctorMethod"
                 ,"handler || this->IsEvtHandler()",
                 "handlers defined in non-wxEvtHandler-derived classes must be connected with a valid sink object"
                 ,uVar1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_009460b0(int param_1_00,int param_1)

{
  bool bVar1;
  type_info *ptVar2;
  type_info *this;
  
  ptVar2 = (type_info *)___RTtypeid(param_1_00);
  this = (type_info *)___RTtypeid(param_1);
  bVar1 = type_info::operator!=(this,ptVar2);
  if (bVar1) {
    return 0;
  }
  if (((*(int *)(param_1_00 + 8) == *(int *)(param_1 + 8)) || (*(int *)(param_1 + 8) == 0)) &&
     ((*(int *)(param_1_00 + 4) == *(int *)(param_1 + 4) || (*(int *)(param_1 + 4) == 0)))) {
    return 1;
  }
  return 0;
}



void __thiscall FUN_00946110(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  if (*(int *)(param_1_00 + 4) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxFocusEvent>,class wxTextEntryHintData,class wxFocusEvent,class wxTextEntryHintData>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



undefined8 FUN_00946160(void)

{
  return 0;
}



undefined4 * __thiscall FUN_00946170(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdaa38;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1_00 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxCommandEvent>,class_wxTextEntryHintData,class_wxCommandEvent,class_wxTextEntryHintData>
                ::vftable;
  param_1_00[1] = param_2;
  param_1_00[2] = param_1;
  local_4 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 == 0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x175,
                 "wxEventFunctorMethod<class wxEventTypeTag<class wxCommandEvent>,class wxTextEntryHintData,class wxCommandEvent,class wxTextEntryHintData>::wxEventFunctorMethod"
                 ,"handler || this->IsEvtHandler()",
                 "handlers defined in non-wxEvtHandler-derived classes must be connected with a valid sink object"
                 ,uVar1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00946200(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  if (*(int *)(param_1_00 + 4) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxCommandEvent>,class wxTextEntryHintData,class wxCommandEvent,class wxTextEntryHintData>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void __fastcall FUN_00946250(int **param_1)

{
  int *piVar1;
  int *piVar2;
  
  if (*(char *)(param_1 + 1) != '\0') {
    piVar2 = *param_1;
    piVar1 = piVar2 + 1;
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)(*piVar2 + 0xa4))(1);
    }
  }
  return;
}



void __fastcall FUN_00946270(int **param_1)

{
  int iVar1;
  uint uVar2;
  int **ppiVar3;
  undefined4 uVar4;
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5ac8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  if (param_1[0x15] == (int *)0x0) {
    ppiVar3 = (int **)FUN_0091df90(local_20);
    local_4 = 0;
    if (param_1 + 2 != ppiVar3) {
      FUN_0083ea60(ppiVar3);
    }
    param_1[4] = ppiVar3[2];
    *(undefined *)(param_1 + 5) = *(undefined *)(ppiVar3 + 3);
    *(undefined *)((int)param_1 + 0x15) = *(undefined *)((int)ppiVar3 + 0xd);
    *(undefined *)((int)param_1 + 0x16) = *(undefined *)((int)ppiVar3 + 0xe);
    *(undefined *)((int)param_1 + 0x17) = *(undefined *)((int)ppiVar3 + 0xf);
    *(undefined *)(param_1 + 6) = *(undefined *)(ppiVar3 + 4);
    local_4 = 0xffffffff;
    local_20[0] = wxObject::vftable;
    FUN_0083e850(uVar2);
    iVar1 = *param_1[1];
    uVar4 = FUN_008f7e50(0x10);
    (**(code **)(iVar1 + 0x180))(uVar4);
    (**(code **)(**param_1 + 0x84))(param_1 + 7,0);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00946350(int param_1)

{
  char cVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaa68;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*(int *)(param_1 + 8) + 0x24))(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  if (cVar1 != '\0') {
    (**(code **)(**(int **)(param_1 + 4) + 0x180))(param_1 + 8);
    iVar2 = FUN_00453f4b();
    uStack_4 = 0;
    if (param_1 + 8 != iVar2) {
      FUN_0083ea60(iVar2);
    }
    *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(iVar2 + 8);
    *(undefined *)(param_1 + 0x14) = *(undefined *)(iVar2 + 0xc);
    *(undefined *)(param_1 + 0x15) = *(undefined *)(iVar2 + 0xd);
    *(undefined *)(param_1 + 0x16) = *(undefined *)(iVar2 + 0xe);
    *(undefined *)(param_1 + 0x17) = *(undefined *)(iVar2 + 0xf);
    *(undefined *)(param_1 + 0x18) = *(undefined *)(iVar2 + 0x10);
    uStack_4 = 0xffffffff;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00946420(int *param_1_00,undefined4 param_1,byte param_2)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaa98;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if ((~param_2 & 1) != 0) {
    iVar2 = param_1_00[1];
    param_1_00[1] = iVar2 + 1;
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 0xa4))(0,uVar3);
    }
  }
  local_4 = 0;
  (**(code **)(*param_1_00 + 100))();
  (**(code **)(*param_1_00 + 0xc))(param_1);
  (**(code **)(*param_1_00 + 0x50))(0);
  local_c = (void *)0xffffffff;
  if ((~param_2 & 1) != 0) {
    piVar1 = param_1_00 + 1;
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      (**(code **)(*param_1_00 + 0xa4))(1);
    }
  }
  ExceptionList = param_1_00;
  return;
}



void __thiscall FUN_009464d0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *unaff_EDI;
  undefined4 unaff_retaddr;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaa98;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  iVar2 = param_1_00[1];
  param_1_00[1] = iVar2 + 1;
  if (iVar2 == 0) {
    (**(code **)(*param_1_00 + 0xa4))(0,uVar3);
  }
  local_4 = 0;
  (**(code **)(*param_1_00 + 0x20))(param_1,param_2);
  piVar1 = param_1_00 + 1;
  *piVar1 = *piVar1 + -1;
  local_c = (void *)0xffffffff;
  if (*piVar1 == 0) {
    (**(code **)(*param_1_00 + 0xa4))(1);
  }
  (**(code **)(*param_1_00 + 0x50))(param_1);
  (**(code **)(*param_1_00 + 0xc))(unaff_retaddr);
  ExceptionList = unaff_EDI;
  return;
}



undefined4 FUN_00946580(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xc);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00946020(param_2,param_3);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_009465f0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xc);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00946170(param_2,param_3);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00946660(int **param_1_00,int param_1)

{
  undefined4 unaff_ESI;
  undefined local_30 [4];
  undefined2 local_2c;
  uint uStack_20;
  void *local_1c;
  undefined4 local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  int local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  if (param_1_00[0x15] != (int *)0x0) {
    *(undefined *)(param_1 + 0x24) = 1;
    return;
  }
  ExceptionList = &local_c;
  FUN_00946350(DAT_0323f878 ^ (uint)&stack0xffffffcc);
  local_18 = 7;
  local_1c = (void *)0x0;
  local_2c = 0;
  local_14 = (void *)0x0;
  local_4 = 0;
  (**(code **)(**param_1_00 + 0x84))(local_30,0);
  _free(local_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI);
  }
  *(undefined *)(local_4 + 0x24) = 1;
  ExceptionList = local_14;
  return;
}



void __fastcall FUN_00946740(int param_1)

{
  _free(*(void **)(param_1 + 0x5c));
  if (7 < *(uint *)(param_1 + 0x58)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x44));
  }
  *(undefined4 *)(param_1 + 0x58) = 7;
  *(undefined4 *)(param_1 + 0x54) = 0;
  *(undefined2 *)(param_1 + 0x44) = 0;
  _free(*(void **)(param_1 + 0x38));
  if (7 < *(uint *)(param_1 + 0x34)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x20));
  }
  *(undefined4 *)(param_1 + 0x34) = 7;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined2 *)(param_1 + 0x20) = 0;
  *(undefined ***)(param_1 + 8) = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined4 __fastcall FUN_009467c0(int *param_1)

{
  undefined4 uVar1;
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  undefined local_8 [4];
  undefined4 local_4;
  
  local_4 = 0;
  (**(code **)(*param_1 + 0x68))(&local_4,local_8);
  uVar1 = local_4;
  (**(code **)(*param_1 + 0x18))(local_4,unaff_ESI,unaff_EDI);
  return uVar1;
}



void FUN_00946810(int param_1)

{
  undefined **local_6c [2];
  int local_64;
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  void *local_28;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1ca8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  ExceptionList = &local_c;
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\textentrycmn.cpp",0x166,
                   "wxTextEntryBase::SendTextUpdatedEvent",&DAT_00d517ac,
                   "can\'t send an event without a window",DAT_0323f878 ^ (uint)&stack0xffffff8c);
    }
  }
  else {
    FUN_0092bd60(DAT_032c1058,*(undefined4 *)(param_1 + 0x40));
    local_4 = 0;
    local_64 = param_1;
    FUN_0091c170(local_6c);
    local_4 = 0xffffffff;
    _free(local_28);
    if (7 < local_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_40);
    }
    local_40 = local_40 & 0xffff0000;
    local_2c = 7;
    local_30 = 0;
    local_6c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00946920(int **param_1)

{
  int **ppiVar1;
  int unaff_retaddr;
  undefined4 local_30 [5];
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  ppiVar1 = (int **)(**(code **)(**param_1 + 0x88))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  puStack_8 = (undefined *)0x0;
  if (param_1 + 0x10 != ppiVar1) {
    FID_conflict_assign(ppiVar1,0,0xffffffff);
  }
  FUN_00946350();
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  *(undefined *)(unaff_retaddr + 0x24) = 1;
  ExceptionList = pvStack_10;
  return;
}



void __fastcall FUN_009469d0(undefined4 *param_1)

{
  int iVar1;
  
  iVar1 = param_1[2];
  *param_1 = wxTextEntryBase::vftable;
  if (iVar1 != 0) {
    FUN_00946740();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



int __thiscall FUN_009469f0(int *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaad9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = param_1_00[2];
  if (iVar1 == 0) {
    iVar2 = (**(code **)(*param_1_00 + 0x88))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc4);
    uStack_4 = 0;
  }
  else {
    iVar2 = iVar1 + 0x40;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(iVar2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if (iVar1 == 0) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00946ab0(int *param_1_00,int param_1)

{
  (**(code **)(*param_1_00 + 0x84))(param_1,0);
  if (param_1_00[2] != 0) {
    if (param_1_00[2] + 0x40 != param_1) {
      FID_conflict_assign(param_1,0,0xffffffff);
    }
    FUN_00946350();
  }
  return;
}



int __thiscall FUN_00946af0(int param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  undefined *puVar3;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1_00 + 8);
  if (iVar1 == 0) {
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    local_14 = (void *)0x0;
    puVar3 = local_30;
    local_4 = 0;
  }
  else {
    puVar3 = (undefined *)(iVar1 + 0x1c);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(puVar3,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if (iVar1 == 0) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar2);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00946bb0(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  
  uVar1 = *(uint *)(param_1_00 + 0x14);
  if (uVar1 == *(uint *)(param_1_00 + 8)) {
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined2 *)(param_1 + 4) = 0;
    *(undefined4 *)(param_1 + 0x1c) = 0;
    return param_1;
  }
  *(uint *)(param_1_00 + 0x14) = uVar1 + 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 8) <= uVar1)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                 "nIndex < m_nCount",L"wxArrayString: index out of bounds");
  }
  iVar2 = *(int *)(param_1_00 + 0xc);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(iVar2 + uVar1 * 0x24,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int ** __thiscall FUN_00946c50(int **param_1_00,int *param_1,int *param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bdab21;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  param_1_00[1] = param_2;
  FUN_00453f4b(uVar1);
  param_1_00[0xd] = (int *)0x7;
  param_1_00[0xc] = (int *)0x0;
  *(undefined2 *)(param_1_00 + 8) = 0;
  param_1_00[0xe] = (int *)0x0;
  local_4 = 1;
  (**(code **)(**param_1_00 + 0x14))(param_1_00 + 0x10);
  uVar3 = 0;
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,2);
  uVar2 = FUN_00946580(&DAT_032bfe38,FUN_00946660,param_1_00,0);
  FUN_008461a0(0xffffffff,0xffffffff,DAT_032bfe38,uVar2,uVar3);
  uVar3 = 0;
  uVar2 = FUN_00946580(&DAT_032bfe3c,&LAB_00946410,param_1_00,0);
  FUN_008461a0(0xffffffff,0xffffffff,DAT_032bfe3c,uVar2,uVar3);
  uVar3 = 0;
  uVar2 = FUN_009465f0(&DAT_032c1058,FUN_00946920,param_1_00,0);
  FUN_008461a0(0xffffffff,0xffffffff,DAT_032c1058,uVar2,uVar3);
  ExceptionList = param_1_00;
  return param_1_00;
}



void __thiscall FUN_00946d60(int *param_1_00,int param_1,int param_3)

{
  uint uVar1;
  int iVar2;
  undefined4 local_60;
  int local_5c;
  undefined4 uStack_58;
  uint uStack_44;
  void *pvStack_40;
  undefined4 local_34 [4];
  int iStack_24;
  uint uStack_20;
  void *pvStack_1c;
  void *local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  uStack_8 = &LAB_00bdab69;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&local_60);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_5c = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  local_60 = 1;
  (**(code **)(*param_1_00 + 0x14))(local_34,uVar1);
  uStack_8 = (undefined *)0x1;
  if ((param_1 < param_3) && (param_3 <= iStack_24)) {
    iVar2 = FUN_0084c0c0(&local_5c,param_1,param_3 - param_1);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,2);
    if (param_1 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    _free(pvStack_40);
    if (7 < uStack_44) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_58);
    }
  }
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_34[0]);
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00946e70(int *param_1_00,int param_1)

{
  char cVar1;
  void *pvVar2;
  undefined4 uVar3;
  int iVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc57ab;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x14) == 0) {
    iVar4 = param_1_00[2];
    if (iVar4 != 0) {
      FUN_00946740(DAT_0323f878 ^ (uint)&stack0xffffffe8);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar4);
    }
  }
  else {
    if (param_1_00[2] == 0) {
      pvVar2 = operator_new(100);
      local_4 = 0;
      if (pvVar2 == (void *)0x0) {
        iVar4 = 0;
      }
      else {
        uVar3 = (**(code **)(*param_1_00 + 0x8c))();
        iVar4 = FUN_00946c50(param_1_00,uVar3);
      }
      param_1_00[2] = iVar4;
    }
    local_4 = 0xffffffff;
    iVar4 = param_1_00[2];
    if (iVar4 + 0x1c != param_1) {
      FID_conflict_assign(param_1,0,0xffffffff);
    }
    cVar1 = (**(code **)(**(int **)(iVar4 + 4) + 0x108))();
    if (cVar1 == '\0') {
      FUN_00946270();
    }
  }
  ExceptionList = local_c;
  return 1;
}



void __thiscall FUN_00946f50(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    *(undefined4 *)(param_1_00 + 0xc) = param_1;
    *(undefined4 *)(param_1_00 + 0x14) = param_2;
    return;
  }
  if (*(int *)(param_1_00 + 0xc) != 0) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/dcbuffer.h",0x73,"wxBufferedDC::InitCommon",
                 "!m_dc",L"wxBufferedDC already initialised");
    *(undefined4 *)(param_1_00 + 0xc) = param_1;
    *(undefined4 *)(param_1_00 + 0x14) = param_2;
    return;
  }
  *(undefined4 *)(param_1_00 + 0xc) = param_1;
  *(undefined4 *)(param_1_00 + 0x14) = param_2;
  return;
}



undefined ** FUN_00946fc0(void)

{
  return &PTR_PTR_00d5a894;
}



undefined * FUN_00946fd0(void)

{
  return &DAT_032c0770;
}



undefined ** FUN_00946fe0(void)

{
  return &PTR_u_wxComboCtrl_0323abd4;
}



void __fastcall FUN_00947100(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdaba8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxComboCtrl::vftable;
  param_1[0x65] = wxComboCtrl::vftable;
  local_4 = 0;
  FUN_0086bb60(uVar1);
  local_4 = 0xffffffff;
  FUN_00944830();
  ExceptionList = local_c;
  return;
}



void FUN_009471c0(undefined4 param_1,int *param_2,byte param_3)

{
  undefined4 *unaff_retaddr;
  undefined *puVar1;
  undefined local_14 [8];
  undefined4 uStack_c;
  undefined4 local_8;
  undefined4 *puStack_4;
  
  if ((param_3 & 1) != 0) {
    (**(code **)(*param_2 + 0xb8))(&local_8);
    *unaff_retaddr = uStack_c;
    unaff_retaddr[1] = local_8;
    return;
  }
  puVar1 = &param_3;
  (**(code **)(*param_2 + 0x27c))(puVar1,local_14);
  *puStack_4 = param_1;
  puStack_4[1] = puVar1;
  return;
}



void FUN_00947230(void)

{
  undefined4 uVar1;
  int unaff_ESI;
  undefined4 *unaff_EDI;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  uint uStack_18;
  undefined auStack_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6198;
  local_c = ExceptionList;
  uStack_18 = DAT_0323f878 ^ (uint)auStack_14;
  ExceptionList = &local_c;
  (**(code **)(**(int **)(unaff_ESI + 8) + 0x90))(2);
  uVar4 = 0x65;
  uVar3 = 1;
  uVar1 = FUN_008f7e50(0xb,1,0x65);
  FUN_009566f0(uVar1,uVar3,uVar4);
  puStack_8 = (undefined *)0x0;
  FUN_009563d0(0x84);
  (**(code **)(**(int **)(unaff_ESI + 8) + 0x58))(&uStack_18);
  uVar1 = FUN_008f8a00(9);
  (**(code **)(**(int **)(unaff_ESI + 8) + 0x60))(uVar1);
  pvVar2 = (void *)unaff_EDI[2];
  (**(code **)(**(int **)(unaff_ESI + 8) + 0x150))(*unaff_EDI,unaff_EDI[1],pvVar2,unaff_EDI[3]);
  uVar1 = 5;
  (**(code **)(**(int **)(unaff_ESI + 8) + 0x90))(5);
  FUN_0083e850(uVar1,wxObject::vftable);
  ExceptionList = pvVar2;
  return;
}



void __thiscall FUN_00947310(int *param_1_00,int param_1)

{
  int iVar1;
  code *pcVar2;
  char cVar3;
  char cVar4;
  byte bVar5;
  
  iVar1 = *(int *)(param_1 + 0x2c);
  cVar3 = FUN_008f7580(iVar1,*(undefined4 *)(param_1 + 0x30));
  cVar4 = FUN_009438e0(param_1,cVar3);
  if (cVar4 != '\0') {
    return;
  }
  if ((param_1_00[0x38] & 0x110U) == 0x10) {
    bVar5 = 1;
  }
  else {
    if (((cVar3 == '\0') && (cVar4 = (**(code **)(*param_1_00 + 0x158))(), cVar4 == '\0')) &&
       ((param_1_00[0x8c] == 0 || (param_1_00[0x90] + param_1_00[0x8c] <= iVar1)))) {
      if (param_1_00[0x9d] != 0) {
        pcVar2 = *(code **)(*param_1_00 + 0x15c);
        param_1_00[0x9d] = 0;
        (*pcVar2)(1,param_1_00 + 0x94);
        FUN_00943970(param_1);
        return;
      }
      goto LAB_009473d9;
    }
    bVar5 = cVar3 != '\0' | 2;
  }
  cVar3 = FUN_00943750(param_1,bVar5);
  if (cVar3 != '\0') {
    return;
  }
LAB_009473d9:
  FUN_00943970(param_1);
  return;
}



// Library Function - Single Match
//  public: virtual __thiscall CDialog::~CDialog(void)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void __thiscall CDialog::~CDialog(CDialog *this)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdabd8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *(undefined ***)this = wxBufferedDC::vftable;
  local_4 = 0;
  if (*(int *)(this + 0xc) != 0) {
    FUN_009ba2f0(uVar1);
  }
  local_4 = 0xffffffff;
  FUN_00457221();
  ExceptionList = local_c;
  return;
}



CDialog * __thiscall FUN_009474c0(CDialog *param_1_00,byte param_1)

{
  CDialog::~CDialog(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009474e0(undefined4 *param_1_00,int *param_1,uint param_2)

{
  undefined4 *puVar1;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdac13;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0094bd80(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  param_1_00[3] = 0;
  param_1_00[4] = 0;
  param_1_00[5] = 0;
  local_4 = 0;
  *param_1_00 = wxBufferedPaintDC::vftable;
  FUN_0094be80(param_1);
  local_4 = CONCAT31(local_4._1_3_,1);
  if ((param_2 & 1) != 0) {
    (**(code **)(*param_1 + 0x168))(param_1_00 + 6);
  }
  puVar1 = (undefined4 *)FUN_009471c0(local_14,param_1,param_2);
  FUN_00946f50(param_1_00 + 6,param_2);
  FUN_009ba5f0(*puVar1,puVar1[1]);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009475a0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bdac43;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxBufferedPaintDC::vftable;
  local_4 = 1;
  FUN_009ba2f0(uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_00457221();
  local_4 = 0xffffffff;
  CDialog::~CDialog((CDialog *)param_1);
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00947610(undefined4 param_1_00,byte param_1)

{
  FUN_009475a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_00947630(int *param_1)

{
  char cVar1;
  void *pvVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdac76;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x16c))(DAT_0323f878 ^ (uint)&stack0xfffffff0);
  if (cVar1 == '\0') {
    pvVar2 = operator_new(0x24);
    uStack_4 = 1;
    if (pvVar2 != (void *)0x0) {
      uVar3 = FUN_009474e0(param_1,2);
      ExceptionList = local_c;
      return uVar3;
    }
  }
  else {
    pvVar2 = operator_new(0xc);
    uStack_4 = 0;
    if (pvVar2 != (void *)0x0) {
      uVar3 = FUN_0094be80(param_1);
      ExceptionList = local_c;
      return uVar3;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_009476e0(int *param_1,uint param_2)

{
  undefined uVar1;
  char cVar2;
  code **ppcVar3;
  int iVar4;
  undefined4 uVar5;
  undefined ***pppuVar6;
  int unaff_EBX;
  undefined4 unaff_EDI;
  int iVar7;
  int *unaff_retaddr;
  undefined *puVar8;
  uint uStack_6c;
  undefined **local_68;
  undefined local_64 [4];
  int local_60;
  int iStack_5c;
  int iStack_58;
  undefined **ppuStack_54;
  undefined **ppuStack_50;
  undefined4 uStack_4c;
  undefined **ppuStack_48;
  undefined uStack_44;
  undefined uStack_43;
  undefined uStack_42;
  undefined uStack_41;
  undefined uStack_40;
  undefined **ppuStack_3c;
  undefined4 uStack_38;
  undefined **ppuStack_34;
  undefined uStack_30;
  undefined uStack_2f;
  undefined uStack_2e;
  undefined uStack_2d;
  undefined4 uStack_2c;
  undefined **ppuStack_28;
  undefined4 uStack_24;
  undefined uStack_18;
  undefined uStack_14;
  undefined uStack_10;
  undefined4 local_c;
  undefined *puStack_8;
  int local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdad18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  ppcVar3 = (code **)FUN_0098e820(DAT_0323f878 ^ (uint)&stack0xffffff84);
  iVar7 = 0;
  if (ppcVar3 == (code **)0x0) {
    local_68 = (undefined **)0x0;
  }
  else {
    local_68 = (undefined **)(**ppcVar3)(param_1[0x4f],L"COMBOBOX");
  }
  puVar8 = local_64;
  local_4 = 0;
  (**(code **)(*param_1 + 0x27c))(puVar8,&local_60);
  uStack_6c = param_2 & 8;
  if (uStack_6c == 0) {
    cVar2 = FUN_0091b930();
    iVar4 = FUN_0091ac40();
    if ((*(char *)((int)param_1 + 0x2bd) != '\0') ||
       (((iVar4 != param_1[0x84] && ((param_1[0x7c] == 0 || (iVar4 != param_1[0x7c])))) ||
        (param_2._0_1_ = 1, (*(byte *)(param_1 + 0x38) & 0x10) == 0)))) {
      param_2._0_1_ = 0;
    }
    if (unaff_EBX == 0) {
      if (cVar2 == '\0') goto LAB_00947800;
      iVar7 = 1;
      iVar4 = 1;
    }
    else {
      iVar7 = (cVar2 != '\0') + 1;
      iVar4 = (**(code **)(*param_1 + 0x194))();
      if ((iVar4 + 2 < (int)local_68) && (cVar2 != '\0')) {
        iVar4 = 2;
      }
      else {
        iVar4 = 1;
      }
    }
  }
  else {
    cVar2 = '\x01';
    param_2._0_1_ = (byte)(param_2 >> 5) & 1;
LAB_00947800:
    iVar4 = 0;
  }
  iStack_5c = unaff_retaddr[1] + iVar4;
  ppuStack_54 = (undefined **)(unaff_retaddr[3] + iVar4 * -2);
  iVar4 = 0;
  if (uStack_6c == 0) {
    iVar4 = param_1[0x8c];
  }
  local_60 = *unaff_retaddr + iVar4 + iVar7;
  iVar7 = unaff_retaddr[2] + (iVar7 * -2 - iVar4);
  uStack_38 = 0;
  local_c._0_1_ = 1;
  ppuStack_3c = wxColour::vftable;
  iStack_58 = iVar7;
  FUN_0093b2c0();
  uStack_4c = 0;
  local_c._0_1_ = 3;
  ppuStack_50 = wxColour::vftable;
  FUN_0093b2c0();
  local_c._0_1_ = 4;
  uVar1 = (undefined)local_c;
  local_c._0_1_ = 4;
  if (cVar2 == '\0') {
    local_c._0_1_ = uVar1;
    pppuVar6 = (undefined ***)FUN_008ff080(&ppuStack_28,0x11);
    local_c._0_1_ = 0xb;
    if (&ppuStack_3c != pppuVar6) {
      FUN_0083ea60(pppuVar6);
    }
    ppuStack_34 = pppuVar6[2];
    uStack_30 = *(undefined *)(pppuVar6 + 3);
    uStack_2f = *(undefined *)((int)pppuVar6 + 0xd);
    uStack_2e = *(undefined *)((int)pppuVar6 + 0xe);
    uStack_2d = *(undefined *)((int)pppuVar6 + 0xf);
    uStack_2c = (void *)CONCAT31(uStack_2c._1_3_,*(undefined *)(pppuVar6 + 4));
    local_c._0_1_ = 4;
    ppuStack_28 = wxObject::vftable;
    FUN_0083e850();
    pppuVar6 = (undefined ***)FUN_008ff080(&ppuStack_28,0xf);
    local_c = (void *)CONCAT31(local_c._1_3_,0xc);
    if (&ppuStack_50 != pppuVar6) {
      FUN_0083ea60(pppuVar6);
    }
    ppuStack_48 = pppuVar6[2];
    uStack_44 = *(undefined *)(pppuVar6 + 3);
    uStack_43 = *(undefined *)((int)pppuVar6 + 0xd);
    uStack_42 = *(undefined *)((int)pppuVar6 + 0xe);
    uStack_41 = *(undefined *)((int)pppuVar6 + 0xf);
    uStack_40 = *(undefined *)(pppuVar6 + 4);
  }
  else {
    if ((byte)param_2 == 0) {
      local_c._0_1_ = uVar1;
      uVar5 = FUN_0091df90(&ppuStack_28);
      local_c._0_1_ = 9;
      FUN_004722cb(uVar5);
      local_c._0_1_ = 4;
      ppuStack_28 = wxObject::vftable;
      FUN_0083e850();
      uVar5 = FUN_00944390(&ppuStack_28);
      local_c._0_1_ = 10;
      FUN_004722cb(uVar5);
      local_c = (void *)CONCAT31(local_c._1_3_,4);
      ppuStack_28 = wxObject::vftable;
      FUN_0083e850();
      goto LAB_00947ad7;
    }
    if (((*(byte *)(param_1 + 0xad) & 0x10) != 0) && (uStack_6c == 0)) {
      uVar5 = FUN_0091df90(&ppuStack_28);
      local_c._0_1_ = 5;
      FUN_004722cb(uVar5);
      local_c._0_1_ = 4;
      ppuStack_28 = wxObject::vftable;
      FUN_0083e850();
      uVar5 = FUN_00944390(&ppuStack_28);
      local_c._0_1_ = 6;
      FUN_004722cb(uVar5);
      local_c = (void *)CONCAT31(local_c._1_3_,4);
      ppuStack_28 = wxObject::vftable;
      FUN_0083e850();
      goto LAB_00947ad7;
    }
    local_c._0_1_ = uVar1;
    uVar5 = FUN_008ff080(&ppuStack_28,0xe);
    local_c._0_1_ = 7;
    FUN_004722cb(uVar5);
    local_c._0_1_ = 4;
    ppuStack_28 = wxObject::vftable;
    FUN_0083e850();
    uVar5 = FUN_008ff080(&ppuStack_28,0xd);
    local_c = (void *)CONCAT31(local_c._1_3_,8);
    FUN_004722cb(uVar5);
  }
  ppuStack_28 = wxObject::vftable;
  local_c = (void *)CONCAT31(local_c._1_3_,4);
  FUN_0083e850();
LAB_00947ad7:
  iVar4 = local_4;
  (**(code **)(**(int **)(local_4 + 8) + 0x78))(&ppuStack_3c);
  FUN_0095d7e0(&ppuStack_54,100);
  uStack_10 = 0xd;
  (**(code **)(**(int **)(iVar4 + 8) + 0x60))(&uStack_6c);
  uStack_14 = 4;
  FUN_008f7630();
  if ((char)puStack_8 != '\0') {
    FUN_009566f0(&iStack_58,1,100);
    uStack_14 = 0xe;
    (**(code **)(**(int **)(iVar4 + 8) + 0x58))(&stack0xffffff90);
    uStack_18 = 4;
    FUN_0083e850();
    (**(code **)(**(int **)(iVar4 + 8) + 0x150))(uStack_6c,local_68,iVar7,local_60);
  }
  if ((char)((uint)unaff_EDI >> 0x18) != '\0') {
    FUN_00947230();
  }
  (**(code **)(**(int **)(iVar4 + 8) + 0xb4))
            (*unaff_retaddr,unaff_retaddr[1],(int)local_68 + -1 + (iVar7 - *unaff_retaddr),
             unaff_retaddr[3]);
  uStack_24._0_1_ = 2;
  local_68 = wxObject::vftable;
  FUN_0083e850();
  uStack_24 = (uint)uStack_24._1_3_ << 8;
  ppuStack_54 = wxObject::vftable;
  FUN_0083e850();
  uStack_24 = 0xffffffff;
  if (puVar8 != (undefined *)0x0) {
    iVar7 = FUN_0098e820();
    (**(code **)(iVar7 + 4))(puVar8);
  }
  ExceptionList = uStack_2c;
  return;
}



void __fastcall FUN_00947c20(int *param_1)

{
  undefined uVar1;
  char cVar2;
  undefined **ppuVar3;
  code **ppcVar4;
  int iVar5;
  int iVar6;
  int *piVar7;
  undefined4 uVar8;
  undefined **ppuVar9;
  int unaff_EBX;
  undefined unaff_BP;
  undefined4 ****ppppuVar10;
  undefined4 ****ppppuVar11;
  undefined4 unaff_ESI;
  undefined ****ppppuVar12;
  char cVar14;
  undefined ***pppuVar13;
  undefined **ppuStack_d8;
  undefined ****ppppuStack_d4;
  wchar_t *pwStack_d0;
  undefined ***pppuStack_cc;
  undefined ****ppppuStack_c8;
  uint uStack_c4;
  uint3 uVar15;
  uint uVar16;
  undefined2 uVar17;
  undefined **ppuStack_b0;
  undefined ***local_ac;
  undefined4 ****ppppuStack_a8;
  undefined **local_a4;
  undefined **ppuStack_a0;
  undefined **ppuStack_9c;
  undefined ***pppuStack_98;
  int iStack_94;
  int iStack_90;
  undefined **ppuStack_8c;
  int iStack_88;
  undefined4 uStack_84;
  undefined **ppuStack_80;
  int iStack_7c;
  int iStack_78;
  int iStack_74;
  int iStack_70;
  undefined auStack_6c [8];
  int aiStack_64 [3];
  int iStack_58;
  int iStack_54;
  int iStack_50;
  int iStack_4c;
  undefined **ppuStack_48;
  undefined **ppuStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined **ppuStack_38;
  undefined **ppuStack_34;
  uint uStack_30;
  int iStack_2c;
  undefined **appuStack_28 [2];
  undefined uStack_20;
  undefined uStack_1c;
  undefined uStack_18;
  undefined uStack_14;
  undefined uStack_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdad92;
  local_c = ExceptionList;
  uStack_c4 = DAT_0323f878 ^ (uint)&stack0xffffff40;
  ExceptionList = &local_c;
  ppppuStack_c8 = &local_ac;
  pppuStack_cc = &local_a4;
  pwStack_d0 = L"\xe856暈\xffff躋ɀ";
  (**(code **)(*param_1 + 0x27c))();
  ppppuStack_d4 = (undefined ****)0x947c6b;
  pwStack_d0 = (wchar_t *)param_1;
  ppuVar3 = (undefined **)FUN_00947630();
  iStack_7c = param_1[0x90];
  iStack_78 = param_1[0x91];
  iStack_70 = param_1[0x93];
  iStack_74 = param_1[0x92];
  pwStack_d0 = (wchar_t *)auStack_6c;
  ppppuStack_d4 = (undefined ****)0x947ca8;
  ppuStack_80 = ppuVar3;
  FUN_00944390();
  local_c = (void *)0x0;
  pwStack_d0 = L"躋ļ";
  uVar1 = FUN_0091b930();
  iStack_90 = param_1[0x4f];
  uStack_84 = *(undefined4 *)(ppuVar3[2] + 0x108);
  iStack_88 = 0;
  pwStack_d0 = L"쌻ᙴ躋ļ";
  ppcVar4 = (code **)FUN_0098e820();
  if (ppcVar4 == (code **)0x0) {
    ppuStack_b0 = (undefined **)0x0;
  }
  else {
    ppppuStack_d4 = (undefined ****)param_1[0x4f];
    pwStack_d0 = L"COMBOBOX";
    ppuStack_d8 = (undefined **)0x947cf0;
    ppuStack_b0 = (undefined **)(**ppcVar4)();
  }
  local_c = (void *)CONCAT31(local_c._1_3_,1);
  if (ppuStack_b0 != (undefined **)0x0) {
    pwStack_d0 = L"\xe88b\xeb3bᱴ薋\x94";
    iVar5 = FUN_0098e820();
    if (iVar5 != 0) {
      pwStack_d0 = L"삅ၴ趋\x90";
      iVar6 = (**(code **)(iVar5 + 0x94))();
      if (iVar6 != 0) {
        pwStack_d0 = L"沉䐤삅ѵ岉䐤蛷ʴ";
        iVar6 = (**(code **)(iVar5 + 0x90))();
        iStack_88 = iVar5;
        if (iVar6 != 0) goto LAB_00947d33;
      }
    }
    iStack_88 = 0;
  }
LAB_00947d33:
  ppuStack_a0 = (undefined **)0x0;
  ppuStack_9c = (undefined **)0x0;
  pppuStack_98 = local_ac;
  iStack_94 = unaff_EBX;
  if ((param_1[0xad] & 0x200U) != 0) {
    ppuStack_a0 = (undefined **)param_1[0x90];
    ppuStack_9c = (undefined **)param_1[0x91];
    pppuStack_98 = (undefined ***)param_1[0x92];
    iStack_94 = param_1[0x93];
    pwStack_d0 = (wchar_t *)0x1;
    ppppuStack_d4 = (undefined ****)0x1;
    ppuStack_d8 = (undefined **)0x947d8c;
    FUN_008f7520();
  }
  ppppuStack_a8 = (undefined4 ****)0x0;
  if (ppuStack_b0 == (undefined **)0x0) {
    pwStack_d0 = (wchar_t *)0x64;
    ppppuStack_d4 = (undefined ****)auStack_6c;
    ppuStack_d8 = (undefined **)0x9480e3;
    FUN_0095d7e0();
    pwStack_d0 = (wchar_t *)&ppppuStack_a8;
    local_c = (void *)CONCAT31(local_c._1_3_,5);
    ppppuStack_d4 = (undefined ****)0x9480fa;
    (**(code **)(*(int *)ppuVar3[2] + 0x60))();
    uStack_10 = 1;
    ppppuStack_d4 = (undefined ****)0x94810b;
    FUN_008f7630();
    ppppuStack_d4 = (undefined ****)0x64;
    ppuStack_d8 = (undefined **)0x1;
    FUN_009566f0(&iStack_70);
    ppppuStack_d4 = &local_ac;
    uStack_10 = 6;
    ppuStack_d8 = (undefined **)0x948133;
    (**(code **)(*(int *)ppuVar3[2] + 0x58))();
    uStack_14 = 1;
    ppuStack_b0 = wxObject::vftable;
    ppuStack_d8 = (undefined **)0x94814c;
    FUN_0083e850();
    ppuStack_d8 = ppuStack_9c;
    ppppuVar11 = ppppuStack_a8;
    (**(code **)(*(int *)ppuVar3[2] + 0x150))(ppppuStack_a8,local_a4,ppuStack_a0);
    pppuVar13 = (undefined ***)0x1;
    goto LAB_00948175;
  }
  pwStack_d0 = L"麋ɔ";
  iVar5 = FUN_00894b40();
  iStack_54 = param_1[0x95];
  uVar15 = CONCAT12(0x5ff < iVar5,CONCAT11(uVar1,unaff_BP));
  iStack_58 = param_1[0x94];
  iStack_50 = param_1[0x96] + iStack_58;
  iStack_4c = param_1[0x97] + iStack_54;
  uStack_40 = (int)pppuStack_98 + (int)ppuStack_a0;
  uStack_3c = iStack_94 + (int)ppuStack_9c;
  ppuStack_44 = ppuStack_9c;
  ppuStack_48 = ppuStack_a0;
  ppuStack_34 = ppuStack_9c;
  ppuStack_38 = ppuStack_a0;
  uVar16 = (uint)uVar15;
  if ((param_1[0xad] & 0x4200U) != 0) {
    uVar16 = CONCAT13(1,uVar15);
  }
  cVar14 = (char)(uVar16 >> 0x10);
  if ((char)(uVar16 >> 8) == '\0') {
    ppppuVar10 = (undefined4 ****)0x4;
  }
  else if (((param_1[0x9d] & 4U) == 0) &&
          ((cVar14 == '\0' || (*(char *)((int)param_1 + 0x2bd) == '\0')))) {
    ppppuVar10 = (undefined4 ****)(((param_1[0x9d] & 0x10U) != 0) + 1);
  }
  else {
    ppppuVar10 = (undefined4 ****)0x3;
  }
  local_ac = &ppuStack_38;
  ppppuVar12 = (undefined ****)0x0;
  uVar17 = (undefined2)(uVar16 >> 0x10);
  uVar8 = CONCAT22(uVar17,(ushort)(byte)uVar16);
  pwStack_d0 = (wchar_t *)0x947ea2;
  uStack_30 = uStack_40;
  iStack_2c = uStack_3c;
  iVar5 = (**(code **)(*param_1 + 0x234))();
  pwStack_d0 = L"쌻鐏胃⑼\x16萏\x8f";
  iVar6 = FUN_0091ac40();
  ppppuVar11 = ppppuVar10;
  if (cVar14 != '\0') {
    ppppuStack_d4 = (undefined ****)appuStack_28;
    pwStack_d0 = (wchar_t *)0x5;
    ppuStack_d8 = (undefined **)0x947ec8;
    pwStack_d0 = (wchar_t *)FUN_008ff080();
    local_c._0_1_ = 2;
    ppppuStack_d4 = (undefined ****)0x947edd;
    FUN_004722cb();
    local_c = (void *)CONCAT31(local_c._1_3_,1);
    appuStack_28[0] = wxObject::vftable;
    pwStack_d0 = L"粀ᜤ甀謬\xe096";
    FUN_0083e850();
    if (((char)(uVar16 >> 0x18) == '\0') && (((uint)param_1[0x38] >> 4 & 1) != 0)) {
      param_1[0xad] = param_1[0xad] | 0x10;
      local_ac = &ppuStack_48;
      uVar8 = CONCAT22(uVar17,CONCAT11(1,(byte)uVar16));
      ppppuVar12 = (undefined ****)0x5;
    }
    else {
      param_1[0xad] = param_1[0xad] & 0xffffffef;
      ppppuVar12 = (undefined ****)0x4;
      ppppuVar11 = (undefined4 ****)((uint)(iVar6 == iVar5) * 2 + 1);
    }
  }
  iVar5 = iStack_88;
  ppuStack_d8 = ppuStack_b0;
  ppppuStack_d4 = ppppuVar12;
  pwStack_d0 = (wchar_t *)ppppuVar11;
  iVar6 = (**(code **)(iStack_88 + 0x38))();
  if (iVar6 == 0) {
    if ((param_1[0xad] & 0x200U) != 0) {
      piVar7 = aiStack_64;
      goto LAB_00947f75;
    }
  }
  else {
    piVar7 = &iStack_54;
LAB_00947f75:
    (**(code **)(iVar5 + 0xb4))(ppuStack_9c,iStack_90,piVar7);
  }
  if (param_1[0x8f] < 1) {
    FUN_0095d7e0(&iStack_78,100);
    pppuVar13 = &ppuStack_9c;
    uStack_18 = 3;
    (**(code **)(*(int *)ppuStack_8c[2] + 0x60))();
    uStack_1c = 1;
    FUN_008f7630();
    FUN_009566f0(&iStack_7c,1,100);
    uStack_1c = 4;
    (**(code **)(*(int *)ppuStack_8c[2] + 0x58))(&ppuStack_a0);
    uStack_20 = 1;
    local_a4 = wxObject::vftable;
    FUN_0083e850();
    ppppuVar11 = ppppuStack_a8;
    (**(code **)(*(int *)ppuStack_8c[2] + 0x150))(ppppuVar10,ppuStack_b0,local_ac);
    ppuVar3 = ppuStack_8c;
  }
  else {
    pppuVar13 = (undefined ***)0x0;
    (**(code **)(iVar5 + 8))(unaff_ESI,iStack_90,ppppuVar12,ppppuVar11,uVar8);
    ppuVar3 = local_a4;
  }
  cVar14 = (char)((uint)pppuVar13 >> 0x10);
  if ((char)((uint)pppuVar13 >> 0x18) == '\0') {
    cVar2 = '\x01';
    ppuVar9 = ppuStack_d8;
    if (cVar14 != '\0') {
      if (((char)((uint)pppuVar13 >> 8) != '\0') &&
         ((ppuStack_d8 == (undefined **)0x2 || (ppuStack_d8 == (undefined **)0x3)))) {
        ppuVar9 = (undefined **)0x1;
      }
      cVar2 = (param_1[0xa0] != 0x20) + '\x06';
    }
    (**(code **)(iVar5 + 8))(ppppuStack_d4,ppppuStack_a8,cVar2,ppuVar9,&iStack_7c,0);
    pppuVar13 = (undefined ***)0x2;
  }
  else {
    pppuVar13 = pppuStack_cc;
    if ((cVar14 != '\0') && ((param_1[0xad] & 0x200U) != 0)) {
      pppuVar13 = (undefined ***)0x1;
    }
  }
LAB_00948175:
  (**(code **)(*param_1 + 0x380))(ppuVar3,param_1 + 0x94,pppuVar13);
  if ((param_1[0x7b] == 0) || (param_1[0x8c] != 0)) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[0x8c] < 0)) {
      FUN_008402e0("..\\..\\src\\msw\\combo.cpp",0x268,"wxComboCtrl::OnPaintEvent",
                   "m_widthCustomPaint >= 0",0);
    }
    if (param_1[0x7b] != 0) {
      local_a4 = (undefined **)param_1[0x8c];
    }
    uVar8 = FUN_0091e100(&ppuStack_d8);
    uStack_3c = CONCAT31(uStack_3c._1_3_,7);
    (**(code **)(*(int *)ppuVar3[2] + 0x50))(uVar8);
    uStack_40 = CONCAT31(uStack_40._1_3_,1);
    FUN_00921450();
    (**(code **)(*(int *)ppuVar3[2] + 0xb4))(ppuStack_b0,local_ac,ppppuStack_a8,local_a4);
    if ((int *)param_1[0x7f] == (int *)0x0) {
      FUN_009446a0(param_1,ppuVar3,&local_ac);
    }
    else {
      (**(code **)(*(int *)param_1[0x7f] + 0x28))(ppuVar3,&local_ac);
    }
  }
  (**(code **)(*ppuVar3 + 4))(1);
  uStack_40 = uStack_40 & 0xffffff00;
  if (ppppuVar11 != (undefined4 ****)0x0) {
    iVar5 = FUN_0098e820();
    (**(code **)(iVar5 + 4))(ppppuVar11);
  }
  uStack_40 = 0xffffffff;
  ppuStack_a0 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = ppuStack_48;
  return;
}



void __fastcall FUN_009482c0(int *param_1)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  int aiStack_8 [2];
  
  piVar1 = (int *)param_1[0x7d];
  FUN_00942b60();
  piVar4 = (int *)(**(code **)(*(int *)param_1[0x7f] + 0x10))();
  if (*(char *)((int)param_1 + 0x2bd) != '\0') {
    FUN_008a6860(aiStack_8);
    if (aiStack_8[0] - param_1[0xb2] < 200) {
      iVar2 = param_1[200];
      iVar5 = (((aiStack_8[0] - param_1[0xb2]) * 0x100) / 200) * iVar2;
      iVar5 = (int)(iVar5 + (iVar5 >> 0x1f & 0xffU)) >> 8;
      iVar6 = iVar2 - iVar5;
      if (iVar6 < 0) {
        iVar6 = 0;
      }
      pcVar3 = *(code **)(*piVar1 + 0x288);
      if ((*(byte *)(param_1 + 0xc9) & 1) != 0) {
        (*pcVar3)(param_1[0xc5],(param_1[0xc6] - iVar5) + iVar2,param_1[199],iVar5,3);
        return;
      }
      (*pcVar3)(param_1[0xc5],param_1[0xc6],param_1[199],iVar5,3);
      (**(code **)(*piVar4 + 0x288))(0,-iVar6,0xffffffff,0xffffffff,0);
      return;
    }
  }
  (**(code **)(param_1[0xb4] + 0x54))();
  (**(code **)(*param_1 + 0x38c))(param_1 + 0xc5,param_1[0xc9]);
  (**(code **)(*piVar4 + 0x288))(0,0,0xffffffff,0xffffffff,0);
  (**(code **)(*piVar1 + 0x15c))(1,0);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x328);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_004540d2(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_00948490(void)

{
  bool bVar1;
  char cVar2;
  uint uVar3;
  undefined auStack_154 [3];
  char local_151;
  undefined4 local_150;
  void **local_14c;
  undefined local_148 [4];
  uint local_144;
  undefined4 local_134;
  uint local_130;
  void *local_12c;
  undefined local_124 [4];
  uint local_120;
  undefined4 local_110;
  uint local_10c;
  void *local_108;
  undefined local_100 [4];
  uint local_fc;
  undefined4 local_ec;
  uint local_e8;
  void *local_e4;
  undefined local_dc [204];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdae4b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_154;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xfffffea0;
  ExceptionList = &local_c;
  local_150 = 0;
  if (DAT_032c076c != '\0') goto LAB_009487b0;
  FUN_004325b6(L"Software\\Policies\\Microsoft\\Control Panel");
  local_4 = 0;
  FUN_008757d0(1,local_100,0);
  local_4._0_1_ = 2;
  _free(local_e4);
  if (7 < local_e8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_fc,uVar3);
  }
  local_e8 = 7;
  local_ec = 0;
  local_fc = local_fc & 0xffff0000;
  FUN_004325b6(L"Software\\Policies\\Microsoft\\Windows\\Control Panel");
  local_4._0_1_ = 3;
  FUN_008757d0(1,local_124,0);
  local_4._0_1_ = 5;
  _free(local_108);
  if (7 < local_10c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_120);
  }
  local_120 = local_120 & 0xffff0000;
  local_10c = 7;
  local_110 = 0;
  FUN_004325b6(L"Control Panel\\Desktop");
  local_4._0_1_ = 6;
  FUN_008757d0(1,local_148,0);
  local_4 = CONCAT31(local_4._1_3_,8);
  _free(local_12c);
  if (7 < local_130) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_144);
  }
  local_130 = 7;
  local_134 = 0;
  local_144 = local_144 & 0xffff0000;
  cVar2 = FUN_008752b0();
  if ((((cVar2 != '\0') || (cVar2 = FUN_008752b0(), cVar2 != '\0')) ||
      (cVar2 = FUN_008752b0(), cVar2 != '\0')) && (cVar2 = FUN_00876940(0), cVar2 != '\0')) {
    FUN_0084a230(0x400);
    local_4._0_1_ = 9;
    FUN_004325b6(L"UserPreferencesMask");
    bVar1 = false;
    local_4 = CONCAT31(local_4._1_3_,10);
    local_150 = 1;
    cVar2 = FUN_00876d80(local_dc);
    if (cVar2 == '\0') {
LAB_009486f8:
      local_151 = '\0';
    }
    else {
      FUN_004325b6(L"UserPreferencesMask");
      bVar1 = true;
      local_4 = 0xb;
      local_150 = 3;
      cVar2 = FUN_00877730(local_148,&local_14c);
      local_151 = '\x01';
      if (cVar2 == '\0') goto LAB_009486f8;
    }
    if (bVar1) {
      FUN_0040159c();
    }
    local_4 = 9;
    FUN_0040159c();
    if ((local_151 != '\0') && ((void *)0x3 < local_14c[2])) {
                    // WARNING: Load size is inaccurate
      DAT_032c0768 = **local_14c;
    }
    local_14c[3] = (void *)((int)local_14c[3] + -1);
    if (local_14c[3] == (void *)0x0) {
      _free(*local_14c);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_14c);
    }
  }
  DAT_032c076c = '\x01';
  local_4._0_1_ = 5;
  FUN_008767d0();
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_008767d0();
  local_4 = 0xffffffff;
  FUN_008767d0();
LAB_009487b0:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_009487e0(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  int *piVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined local_8 [8];
  
  uVar2 = FUN_00948490();
  if ((uVar2 & 4) != 0) {
    puVar3 = (undefined4 *)FUN_008a6860(local_8);
    piVar1 = *(int **)(param_1_00 + 500);
    *(undefined4 *)(param_1_00 + 0x2c8) = *puVar3;
    *(undefined4 *)(param_1_00 + 0x2cc) = puVar3[1];
    *(undefined4 *)(param_1_00 + 0x314) = *param_1;
    *(undefined4 *)(param_1_00 + 0x318) = param_1[1];
    *(undefined4 *)(param_1_00 + 0x31c) = param_1[2];
    *(undefined4 *)(param_1_00 + 800) = param_1[3];
    *(undefined4 *)(param_1_00 + 0x324) = param_2;
    (**(code **)(*piVar1 + 0x288))(*param_1,param_1[1],param_1[2],0,3);
    (**(code **)(*piVar1 + 0xcc))(1);
    FUN_0086b960(param_1_00,0xffffffff);
    (**(code **)(*(int *)(param_1_00 + 0x2d0) + 0x50))(10,0);
    FUN_009482c0();
    return 0;
  }
  return 1;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * FUN_009488b0(void)

{
  int iVar1;
  int iVar2;
  
  if (DAT_032c0944 == 0) {
    iVar1 = FUN_0098e820();
    if (iVar1 != 0) {
      iVar2 = (**(code **)(iVar1 + 0x94))();
      if (iVar2 != 0) {
        iVar1 = (**(code **)(iVar1 + 0x90))();
        if (iVar1 != 0) {
          _DAT_032c0940 = 0x14;
          DAT_032c0944 = 8;
          return &DAT_032c0940;
        }
      }
    }
    _DAT_032c0940 = 0x12;
    DAT_032c0944 = 4;
  }
  return &DAT_032c0940;
}



undefined4 __thiscall FUN_00948920(int param_1_00,uint param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(uint *)(param_1_00 + 0x198) <= param_1) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    return *(undefined4 *)(*(int *)(param_1_00 + 0x19c) + param_1 * 4);
  }
  return *(undefined4 *)(*(int *)(param_1_00 + 0x19c) + param_1 * 4);
}



void __thiscall FUN_00948ab0(int *param_1,int param_2)

{
  WPARAM wParam;
  int iVar1;
  
  iVar1 = (**(code **)(*param_1 + 0x370))();
  wParam = param_2 + iVar1 * 4;
  (**(code **)(*param_1 + 0x288))(0xffffffff,0xffffffff,0xffffffff,wParam,0);
  SendMessageW((HWND)param_1[0x4f],0x408,wParam,0);
  SendMessageW((HWND)param_1[0x4f],5,0,0);
  return;
}



void __thiscall FUN_00948b10(int *param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  undefined local_c [4];
  int iStack_8;
  int iStack_4;
  
  SendMessageW((HWND)param_1[0x4f],0x407,0,(LPARAM)local_c);
  iVar2 = 0;
  uVar3 = 0;
  if (param_1[0x66] != 0) {
    do {
      if (*(char *)(param_1 + 0x68) == '\0') {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x66] <= uVar3)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar1 = *(int *)(*(int *)(param_1[0x67] + uVar3 * 4) + 4);
      }
      else {
        iVar1 = 0x19;
      }
      if (iVar1 < 0) {
        iVar1 = iVar1 * -0x19;
      }
      uVar3 = uVar3 + 1;
      iVar2 = iVar2 + iVar1 + iStack_4;
    } while (uVar3 < (uint)param_1[0x66]);
    if (iVar2 != 0) goto LAB_00948bab;
  }
  iVar2 = 0x32;
LAB_00948bab:
  iVar1 = (**(code **)(*param_1 + 0x194))();
  iVar1 = iVar1 + iStack_8 * 4;
  param_1[0x4c] = iVar2;
  param_1[0x4d] = iVar1;
  *param_2 = iVar2;
  param_2[1] = iVar1;
  return;
}



void __thiscall FUN_00948be0(int param_1_00,int param_1)

{
  if (((*(uint *)(param_1_00 + 0xe0) >> 5 & 1) != 0) && (*(int *)(param_1 + 4) == 0x200)) {
    FUN_0098e9c0(param_1);
  }
  FUN_009119e0(param_1);
  return;
}



int __thiscall FUN_00948c20(uint *param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 <= param_1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<class wxToolTip *>::at"
                 ,"idx < m_size",0);
  }
  return param_1_00[2] + param_1 * 4;
}



void __thiscall FUN_00948c60(int *param_1_00,int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  undefined **appuStack_4c [2];
  int *piStack_44;
  int iStack_24;
  int iStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd7738;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar4 = FUN_0090f500(DAT_0323f878 ^ (uint)&stack0xffffff9c);
  if (cVar4 == '\0') {
    SetWindowPos((HWND)param_1_00[0x4f],(HWND)0x0,param_1,param_2,param_3,param_4,0x714);
  }
  else {
    FUN_00916180(param_1,param_2,param_3,param_4);
  }
  if (param_1_00[0x13] != 0) {
    iVar1 = param_1_00[0x10];
    (**(code **)(*param_1_00 + 0x27c))(&param_4,&param_3);
    iVar3 = param_4;
    iVar2 = param_3;
    FUN_00845a20(iVar1,DAT_032bfed0);
    appuStack_4c[0] = wxSizeEvent::vftable;
    iStack_24 = iVar3;
    iStack_20 = iVar2;
    uStack_1c = 0;
    uStack_18 = 0;
    uStack_14 = 0;
    uStack_10 = 0;
    uStack_4 = 0;
    piStack_44 = param_1_00;
    FUN_0091c170(appuStack_4c);
    uStack_4 = 0xffffffff;
    appuStack_4c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00948d90(uint *param_1_00,uint param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  void *pvVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  
  if (param_1_00[1] < param_1) {
    uVar4 = *param_1_00;
    if (uVar4 == 0) {
      uVar4 = 0x10;
    }
    else if (0xfff < uVar4) {
      uVar4 = 0x1000;
    }
    uVar4 = param_1_00[1] + uVar4;
    uVar3 = param_1;
    if (param_1 < uVar4) {
      uVar3 = uVar4;
    }
    pvVar2 = _realloc((void *)param_1_00[2],uVar3 << 4);
    param_1_00[2] = (uint)pvVar2;
    param_1_00[1] = uVar3;
  }
  if (*param_1_00 < param_1) {
    iVar5 = param_1 - *param_1_00;
    do {
      uVar3 = *param_1_00;
      uVar4 = uVar3 + 1;
      if (param_1_00[1] < uVar4) {
        if (uVar3 == 0) {
          uVar3 = 0x10;
        }
        else if (0xfff < uVar3) {
          uVar3 = 0x1000;
        }
        uVar3 = uVar3 + param_1_00[1];
        if (uVar4 < uVar3) {
          uVar4 = uVar3;
        }
        pvVar2 = _realloc((void *)param_1_00[2],uVar4 << 4);
        param_1_00[2] = (uint)pvVar2;
        param_1_00[1] = uVar4;
      }
      puVar1 = (undefined4 *)(param_1_00[2] + *param_1_00 * 4);
      if (puVar1 != (undefined4 *)0x0) {
        *puVar1 = *param_2;
      }
      *param_1_00 = *param_1_00 + 1;
      iVar5 = iVar5 + -1;
    } while (iVar5 != 0);
  }
  return;
}



undefined4 * __fastcall FUN_00948e60(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaf86;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009333f0(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  *param_1 = wxStatusBar::vftable;
  param_1[0x6a] = 0;
  param_1[0x6b] = 0;
  param_1[0x6c] = 0;
  local_4 = 1;
  param_1[0x11] = 0;
  param_1[0x4f] = 0;
  FUN_00994360(0);
  param_1[0x69] = 0;
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00948ee0(undefined4 *param_1)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  uint uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdafc6;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *param_1 = wxStatusBar::vftable;
  local_4 = 1;
  FUN_0091b850(1);
  uVar4 = 0;
  if (param_1[0x6a] != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x6a] <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                     "wxVector<class wxToolTip *>::at","idx < m_size",0,uVar3);
      }
      iVar1 = param_1[0x6c];
      piVar2 = *(int **)(iVar1 + uVar4 * 4);
      if (piVar2 != (int *)0x0) {
        (**(code **)(*piVar2 + 4))(1);
        *(undefined4 *)(iVar1 + uVar4 * 4) = 0;
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < (uint)param_1[0x6a]);
  }
  if ((int *)param_1[0x69] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x69] + 4))(1);
    param_1[0x69] = 0;
  }
  _free((void *)param_1[0x6c]);
  param_1[0x6c] = 0;
  param_1[0x6b] = 0;
  param_1[0x6a] = 0;
  local_4 = 0xffffffff;
  FUN_00933450();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall
FUN_00948fe0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  char cVar1;
  uint uVar2;
  void *pvVar3;
  int iVar4;
  undefined local_30 [4];
  undefined4 local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb003;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  cVar1 = FUN_00937250(param_1,param_2,&DAT_03238d0c,&DAT_03238d04,param_3,&DAT_032c0398,param_4);
  if (cVar1 != '\0') {
    local_18 = 7;
    local_1c = 0;
    local_2c = (uint)local_2c._2_2_ << 0x10;
    local_14 = (void *)0x0;
    local_4 = 0;
    cVar1 = FUN_00937200(L"msctls_statusbar32",local_30,&DAT_03238d0c,&DAT_03238d04);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    if (cVar1 != '\0') {
      (**(code **)(*param_1_00 + 0x358))(1,0,uVar2);
      pvVar3 = operator_new(0xc);
      local_c = (void *)0x1;
      if (pvVar3 == (void *)0x0) {
        iVar4 = 0;
      }
      else {
        iVar4 = FUN_0094bd30(param_1_00);
      }
      local_c = (void *)0xffffffff;
      param_1_00[0x69] = iVar4;
      FUN_0091b850(1);
      ExceptionList = local_14;
      return 1;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00949140(int param_1_00,undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcf248;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  if ((*(uint *)(param_1_00 + 0xe0) >> 5 & 1) != 0) {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 0;
    if ((*(uint *)(param_2 + 4) < *(uint *)(param_1_00 + 0x1a8)) &&
       (piVar3 = (int *)FUN_00948c20(*(uint *)(param_2 + 4)), *piVar3 != 0)) {
      piVar3 = (int *)FUN_00948c20(*(undefined4 *)(param_2 + 4));
      if (local_34 != (undefined *)(*piVar3 + 8)) {
        FID_conflict_assign((undefined *)(*piVar3 + 8),0,0xffffffff);
      }
    }
    cVar1 = FUN_00914c50(*(undefined4 *)(param_2 + 8),param_2,local_34);
    if (cVar1 == '\0') {
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30,uVar2);
      }
    }
    else {
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30,uVar2);
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00949260(int *param_1)

{
  WPARAM wParam;
  char cVar1;
  int iVar2;
  int *piVar3;
  int lParam;
  LRESULT LVar4;
  uint uVar5;
  int iVar6;
  int iStack_94;
  uint uStack_8c;
  int iStack_88;
  undefined local_2c [8];
  int iStack_24;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb03b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  wParam = param_1[0x66];
  if (wParam != 0) {
    SendMessageW((HWND)param_1[0x4f],0x407,0,(LPARAM)local_2c);
    iVar2 = FUN_009488b0();
    iVar2 = *(int *)(iVar2 + 4);
    (**(code **)(*param_1 + 0x27c))();
    FUN_009488b0();
    if (((uint)param_1[0x38] >> 4 & 1) == 0) {
      iStack_94 = 0;
    }
    else {
      piVar3 = (int *)FUN_009488b0();
      iStack_94 = *piVar3;
    }
    FUN_00932b10();
    local_c = (void *)0x0;
    lParam = FUN_00823c23();
    uVar5 = 0;
    iVar6 = 0;
    if (0 < (int)wParam) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_8c <= uVar5)) {
          FUN_008402e0();
        }
        iVar6 = iVar6 + *(int *)(iStack_88 + uVar5 * 4) + iVar2 + iStack_24;
        *(int *)(lParam + uVar5 * 4) = iVar6;
        uVar5 = uVar5 + 1;
      } while ((int)uVar5 < (int)wParam);
    }
    piVar3 = (int *)(lParam + -4 + wParam * 4);
    *piVar3 = *piVar3 + iStack_94;
    LVar4 = SendMessageW((HWND)param_1[0x4f],0x404,wParam,lParam);
    if (LVar4 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        local_c._0_1_ = 1;
        __time64((__time64_t *)0x0);
        GetCurrentThreadId();
        local_c._0_1_ = 2;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00921a90();
        local_c._0_1_ = 1;
        FUN_00842440();
        local_c = (void *)((uint)local_c._1_3_ << 8);
        FUN_0081b5bc();
      }
    }
    if (0 < (int)wParam) {
      iVar2 = 0;
      do {
        (**(code **)(*param_1 + 0x374))();
        iVar2 = iVar2 + 1;
      } while (iVar2 < (int)wParam);
    }
    FUN_00a3f66c();
    uStack_4 = 0xffffffff;
    FUN_0086aa30();
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00949520(int *param_1_00,uint param_1)

{
  uint uVar1;
  char cVar2;
  int *piVar3;
  undefined *puVar4;
  int iVar5;
  LRESULT LVar6;
  undefined4 uVar7;
  undefined4 *puVar8;
  uint uVar9;
  undefined auStack_fc [8];
  undefined4 uStack_f4;
  undefined *puStack_f0;
  char *pcStack_ec;
  uint local_c4;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined auStack_b0 [24];
  uint uStack_98;
  void *pvStack_94;
  undefined *puStack_8c;
  undefined auStack_34 [4];
  undefined4 ****appppuStack_30 [4];
  int iStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = -1;
  puStack_8 = &LAB_00bdb0cf;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_c4;
  ExceptionList = &local_c;
  local_c4 = 0;
  if (param_1_00[0x69] == 0) goto LAB_00949980;
  piVar3 = (int *)FUN_009cde80();
  if (*piVar3 == 1) {
    uVar9 = 0x100;
  }
  else if (*piVar3 == 2) {
    uVar9 = 0x200;
  }
  else {
    uVar9 = 0;
  }
  local_c0 = 0;
  local_bc = 0;
  local_b8 = 0;
  local_b4 = 0;
  (**(code **)(*param_1_00 + 0x364))();
  FUN_009488b0();
  FUN_009331e0();
  uVar1 = param_1_00[0x38];
  uStack_4 = 0;
  if ((((uVar1 >> 6 & 1) == 0) && ((uVar1 >> 7 & 1) == 0)) && ((uVar1 >> 8 & 1) == 0)) {
    if ((uVar1 >> 5 & 1) != 0) {
      FUN_007b0d6d();
      FUN_00932dd0();
    }
  }
  else {
    pcStack_ec = auStack_34;
    puStack_f0 = auStack_b0;
    uStack_f4 = 0x94961d;
    puVar4 = (undefined *)FUN_00938460();
    uStack_4._0_1_ = 1;
    if (auStack_34 != puVar4) {
      FID_conflict_assign();
    }
    uStack_4._0_1_ = 0;
    _free(pvStack_94);
    if (7 < uStack_98) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    iVar5 = FUN_009331e0();
    uStack_4._0_1_ = 2;
    if (iStack_20 == *(int *)(iVar5 + 0x14)) {
      FUN_00850760();
    }
    FUN_00932dd0();
    uStack_4 = (uint)uStack_4._1_3_ << 8;
    _free(pvStack_94);
    if (7 < uStack_98) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  if (uStack_1c < 8) {
    appppuStack_30[0] = appppuStack_30;
  }
  pcStack_ec = (char *)0x949762;
  LVar6 = SendMessageW((HWND)param_1_00[0x4f],0x40b,uVar9 | param_1,(LPARAM)appppuStack_30[0]);
  if (LVar6 == 0) {
    puStack_8c = auStack_fc;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 != '\0') {
      FUN_0081c0f1();
      pcStack_ec = (char *)0x6;
      uStack_4._0_1_ = 3;
      puStack_f0 = (undefined *)0x9497c4;
      FUN_008423d0();
      uStack_4._0_1_ = 4;
      GetLastError();
      FUN_00843700();
      GetLastError();
      pcStack_ec = "..\\..\\src\\msw\\statusbar.cpp";
      puStack_f0 = auStack_b0;
      uStack_f4 = 0x9497fe;
      FUN_00921a90();
      uStack_4._0_1_ = 3;
      FUN_00842440();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_0081b5bc();
    }
  }
  if (((uint)param_1_00[0x38] >> 5 & 1) != 0) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1_00[0x6a] != param_1_00[0x66])) {
      pcStack_ec = "..\\..\\src\\msw\\statusbar.cpp";
      puStack_f0 = (undefined *)0x949864;
      FUN_008402e0();
    }
    piVar3 = (int *)FUN_00948c20();
    if (*piVar3 == 0) {
      iVar5 = FUN_00948920();
      if (*(char *)(iVar5 + 0x3c) != '\0') {
        puStack_8c = (undefined *)operator_new(0x48);
        uStack_4._0_1_ = 6;
        if (puStack_8c == (undefined *)0x0) {
          uVar7 = 0;
        }
        else {
          FUN_009331e0();
          uStack_4 = CONCAT31(uStack_4._1_3_,7);
          local_c4 = 1;
          pcStack_ec = (char *)0x94992b;
          uVar7 = FUN_0098f890();
        }
        uStack_4 = 8;
        puVar8 = (undefined4 *)FUN_00948c20();
        *puVar8 = uVar7;
        if ((local_c4 & 1) != 0) goto LAB_0094994d;
      }
    }
    else {
      iVar5 = FUN_00948920();
      if (*(char *)(iVar5 + 0x3c) == '\0') {
        FUN_00948c20();
        FUN_00938b80();
      }
      else {
        FUN_00948c20();
        FUN_0098eab0();
        FUN_009331e0();
        uStack_4 = CONCAT31(uStack_4._1_3_,5);
        FUN_00948c20();
        FUN_0098ed60();
LAB_0094994d:
        FUN_0040159c();
      }
    }
  }
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
LAB_00949980:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_009499b0(int param_1_00,uint param_1,int *param_3)

{
  char cVar1;
  LRESULT LVar2;
  code **ppcVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  int local_80;
  int iStack_7c;
  int iStack_78;
  int iStack_74;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb11b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (((int)param_1 < 0) || (*(uint *)(param_1_00 + 0x198) <= param_1)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0();
    }
    uVar6 = 0;
  }
  else {
    LVar2 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x40a,param_1,(LPARAM)&local_80);
    if (LVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00921a90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    ppcVar3 = (code **)FUN_0098e820();
    if (ppcVar3 == (code **)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = (**ppcVar3)();
    }
    uStack_4 = 2;
    if (iVar4 != 0) {
      if (param_1 != 0) {
        local_80 = local_80 + -2;
      }
      iVar5 = FUN_0098e820();
      (**(code **)(iVar5 + 0x10))();
    }
    *param_3 = local_80;
    param_3[1] = iStack_7c;
    param_3[2] = iStack_78 - local_80;
    param_3[3] = iStack_74 - iStack_7c;
    uStack_4 = 0xffffffff;
    if (iVar4 != 0) {
      iVar4 = FUN_0098e820();
      (**(code **)(iVar4 + 4))();
    }
    uVar6 = 1;
  }
  ExceptionList = local_c;
  return uVar6;
}



void __thiscall FUN_00949bc0(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  char cVar2;
  LRESULT LVar3;
  undefined4 ****lParam;
  uint uVar4;
  uint uVar5;
  undefined auStack_d8 [8];
  undefined4 uStack_d0;
  undefined *puStack_cc;
  char *pcStack_c8;
  int local_a0;
  undefined *puStack_9c;
  undefined4 uStack_98;
  char *pcStack_90;
  undefined4 uStack_8c;
  char *pcStack_88;
  undefined *puStack_84;
  __time64_t _Stack_80;
  DWORD DStack_78;
  undefined4 uStack_74;
  undefined2 uStack_6c;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined4 uStack_54;
  undefined auStack_48 [24];
  undefined4 ****local_30 [5];
  uint local_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb15b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_a0;
  ExceptionList = &local_c;
  local_a0 = param_2;
  FUN_00932a30();
  if ((param_1 == *(int *)(param_1_00 + 0x198)) && (uVar5 = 0, 0 < param_1)) {
    do {
      iVar1 = *(int *)(param_2 + uVar5 * 4);
      if (iVar1 == 1) {
        uVar4 = 0x100;
      }
      else if (iVar1 == 2) {
        uVar4 = 0x200;
      }
      else {
        uVar4 = 0;
      }
      FUN_009331e0();
      local_4 = 0;
      lParam = local_30[0];
      if (local_1c < 8) {
        lParam = local_30;
      }
      pcStack_c8 = (char *)0x949c9b;
      LVar3 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x40b,uVar4 | uVar5,(LPARAM)lParam);
      if (LVar3 == 0) {
        puStack_9c = auStack_d8;
        FUN_0043c211(&DAT_00d25fa0);
        cVar2 = FUN_00846b30(6);
        if (cVar2 != '\0') {
          FUN_0081c0f1();
          local_4._0_1_ = 1;
          uStack_98 = 6;
          pcStack_90 = "..\\..\\src\\msw\\statusbar.cpp";
          pcStack_88 = "wxStatusBar::SetStatusStyles";
          uStack_8c = 0x230;
          puStack_84 = &DAT_00d25fa0;
          _Stack_80 = __time64((__time64_t *)0x0);
          DStack_78 = GetCurrentThreadId();
          uStack_74 = 0;
          uStack_58 = 7;
          uStack_5c = 0;
          uStack_6c = 0;
          uStack_54 = 0;
          local_4._0_1_ = 2;
          GetLastError();
          FUN_00843700();
          GetLastError();
          pcStack_c8 = "..\\..\\src\\msw\\statusbar.cpp";
          puStack_cc = auStack_48;
          uStack_d0 = 0x949d75;
          FUN_00921a90();
          local_4._0_1_ = 1;
          FUN_00842440();
          local_4 = (uint)local_4._1_3_ << 8;
          FUN_0081b5bc();
        }
      }
      local_4 = 0xffffffff;
      _free(pvStack_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uVar5 = uVar5 + 1;
      param_2 = local_a0;
    } while ((int)uVar5 < param_1);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00949e10(int *param_1_00,int param_1,int param_2,LPARAM param_3)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  char cVar5;
  int unaff_ESI;
  int iVar6;
  undefined4 uVar7;
  undefined *puVar8;
  undefined auStack_8 [8];
  
  iVar4 = param_2;
  iVar3 = param_1;
  if (param_1 == 0x46) {
    (**(code **)(*param_1_00 + 0x270))();
    puVar8 = &stack0xfffffff0;
    (**(code **)(*param_1_00 + 0x278))(puVar8,&stack0xfffffff4);
    uVar7 = 0;
    (**(code **)(*param_1_00 + 0x2a8))(&stack0xfffffff4,auStack_8);
    *(int **)(unaff_ESI + 8) = &param_1;
    *(int **)(unaff_ESI + 0xc) = &param_2;
    *(undefined4 *)(unaff_ESI + 0x10) = uVar7;
    *(undefined **)(unaff_ESI + 0x14) = puVar8;
    return 0;
  }
  if (param_1 == 0xa1) {
    if (param_2 == 0x11) {
      for (piVar1 = (int *)param_1_00[0x11]; piVar1 != (int *)0x0; piVar1 = (int *)piVar1[0x11]) {
        cVar5 = (**(code **)(*piVar1 + 0x11c))();
        if (cVar5 != '\0') {
          SendMessageW((HWND)piVar1[0x4f],0xa1,0x11,param_3);
          return 0;
        }
      }
    }
  }
  else if (param_1 == 5) {
    FUN_00949260();
    uVar2 = param_1_00[0x38];
    if (((((uVar2 >> 6 & 1) != 0) || ((uVar2 >> 7 & 1) != 0)) || ((uVar2 >> 8 & 1) != 0)) &&
       (iVar6 = 0, 0 < param_1_00[0x66])) {
      do {
        (**(code **)(*param_1_00 + 0x374))(iVar6);
        iVar6 = iVar6 + 1;
      } while (iVar6 < param_1_00[0x66]);
    }
  }
  uVar7 = FUN_0090d970(iVar3,iVar4,param_3);
  return uVar7;
}



undefined ** FUN_0094a070(void)

{
  return &PTR_u_wxFont_0323abf0;
}



int __fastcall FUN_0094a080(int *param_1)

{
  char cVar1;
  int iVar2;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\fontcmn.cpp",0x1a9,"wxFontBase::GetFamily","IsOk()",
                   L"invalid font");
    }
    iVar2 = 0x4d;
  }
  else {
    iVar2 = (**(code **)(*param_1 + 0x78))();
    if (iVar2 == 0x4d) {
      return 0x46;
    }
  }
  return iVar2;
}



undefined4 FUN_0094a0e0(undefined4 param_1)

{
  char cVar1;
  
  cVar1 = FUN_009843d0(param_1);
  if (cVar1 == '\0') {
    FUN_0083e850();
    return 0;
  }
  return 1;
}



int * __fastcall FUN_0094a110(int *param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *param_1;
  (**(code **)(iVar1 + 0x2c))();
  uVar2 = FUN_00a49750();
  (**(code **)(iVar1 + 0x54))(uVar2);
  return param_1;
}



bool FUN_0094a150(void)

{
  int iVar1;
  
  iVar1 = FUN_0094a080();
  return iVar1 == 0x4c;
}



void __thiscall FUN_0094a160(int *param_1_00,int *param_1)

{
  bool bVar1;
  bool bVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int local_1c;
  int *piStack_14;
  int *piStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb198;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar5 = 0;
  if ((*param_1 < 0) || (param_1[1] < 1)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\fontcmn.cpp",0x107,"wxFontBase::SetPixelSize",
                   "pixelSize.GetWidth() >= 0 && pixelSize.GetHeight() > 0",
                   "Negative values for the pixel size or zero pixel height are not allowed",
                   DAT_0323f878 ^ (uint)&stack0xffffffd0);
    }
  }
  else {
    FUN_0094bed0();
    local_4 = 0;
    local_1c = 0;
    bVar2 = false;
    bVar1 = false;
    iVar3 = (**(code **)(*param_1_00 + 0x2c))();
    while (0 < iVar3) {
      (**(code **)(*piStack_10 + 0x50))(param_1_00);
      iVar4 = (**(code **)(*piStack_14 + 0x98))();
      if ((param_1[1] < iVar4) ||
         ((*param_1 != 0 && (iVar4 = (**(code **)(*piStack_10 + 0x9c))(), *param_1 < iVar4)))) {
        bVar1 = true;
        local_1c = iVar3;
        if (bVar2) goto LAB_0094a233;
        iVar3 = iVar3 / 2;
      }
      else {
        bVar2 = true;
        iVar5 = iVar3;
        if (bVar1) {
LAB_0094a233:
          if (local_1c - iVar5 == 1) break;
          iVar3 = (local_1c - iVar5) / 2 + iVar5;
        }
        else {
          iVar3 = iVar3 * 2;
        }
      }
      (**(code **)(*param_1_00 + 0x54))(iVar3);
    }
    if (iVar3 != iVar5) {
      (**(code **)(*param_1_00 + 0x54))(iVar5);
    }
    local_4 = 0xffffffff;
    FUN_00457221();
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_0094a2e0(undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *unaff_retaddr;
  int *piStack_14;
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5e98;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0094bed0(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  local_4 = 0;
  (**(code **)(*local_10 + 0x50))(param_1);
  uVar1 = (**(code **)(*piStack_14 + 0x98))();
  uVar2 = (**(code **)(*piStack_14 + 0x9c))();
  *unaff_retaddr = uVar2;
  unaff_retaddr[1] = uVar1;
  puStack_8 = (undefined *)0xffffffff;
  FUN_00457221();
  ExceptionList = local_10;
  return unaff_retaddr;
}



void __fastcall FUN_0094a380(int *param_1)

{
  int *piVar1;
  int iVar2;
  int unaff_retaddr;
  undefined4 uVar3;
  int *piVar4;
  
  uVar3 = 0x17;
  piVar4 = param_1;
  piVar1 = (int *)(**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
  iVar2 = (**(code **)(*piVar1 + 0x2c))();
  FUN_008ffcc0((double)(*(float *)(&DAT_00d5b2b4 + unaff_retaddr * 4) * (float)iVar2),uVar3,iVar2,
               piVar4);
  (**(code **)(*param_1 + 0x54))();
  return;
}



undefined4 * __thiscall FUN_0094a3d0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdb1d9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = wxObject::vftable;
  iVar1 = *(int *)(param_1_00 + 4);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1 = wxFont::vftable;
  local_4 = 0;
  FUN_009222f0(0x5c);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_0094a440(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdb1d9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = wxObject::vftable;
  iVar1 = *(int *)(param_1_00 + 4);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1 = wxFont::vftable;
  local_4 = 0;
  FUN_009222c0(0x5d);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_0094a4b0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdb1d9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = wxObject::vftable;
  iVar1 = *(int *)(param_1_00 + 4);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1 = wxFont::vftable;
  local_4 = 0;
  FUN_00922360(1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_0094a520(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdb219;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxObject::vftable;
  iVar1 = *(int *)(param_1_00 + 4);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1 = wxFont::vftable;
  local_4 = 0;
  FUN_00921710(uVar2);
  uVar3 = FUN_00a49750();
  FUN_00922240(uVar3);
  ExceptionList = local_c;
  return param_1;
}



undefined __thiscall FUN_0094a5b0(int *param_1_00,int *param_1)

{
  bool bVar1;
  bool bVar2;
  undefined uVar3;
  bool bVar4;
  bool bVar5;
  char cVar6;
  char cVar7;
  int iVar8;
  int iVar9;
  int *piVar10;
  int *piVar11;
  undefined auStack_64 [4];
  undefined auStack_60 [8];
  undefined auStack_58 [8];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb272;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar2 = false;
  bVar1 = false;
  bVar4 = false;
  bVar5 = false;
  if (param_1_00[1] == param_1[1]) {
LAB_0094a743:
    bVar2 = bVar5;
    bVar1 = bVar4;
    uVar3 = 1;
  }
  else {
    cVar6 = (**(code **)(*param_1 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffff88);
    cVar7 = (**(code **)(*param_1_00 + 0x10))();
    if (cVar7 == cVar6) {
      iVar8 = (**(code **)(*param_1 + 0x2c))();
      iVar9 = (**(code **)(*param_1_00 + 0x2c))();
      if (iVar9 == iVar8) {
        piVar10 = (int *)(**(code **)(*param_1 + 0x30))(auStack_64);
        piVar11 = (int *)(**(code **)(*param_1_00 + 0x30))(auStack_60);
        if ((*piVar11 == *piVar10) && (piVar11[1] == piVar10[1])) {
          iVar8 = FUN_0094a080();
          iVar9 = FUN_0094a080();
          if (iVar9 == iVar8) {
            iVar8 = (**(code **)(*param_1 + 0x38))();
            iVar9 = (**(code **)(*param_1_00 + 0x38))();
            if (iVar9 == iVar8) {
              iVar8 = (**(code **)(*param_1 + 0x3c))();
              iVar9 = (**(code **)(*param_1_00 + 0x3c))();
              if (iVar9 == iVar8) {
                cVar6 = (**(code **)(*param_1 + 0x40))();
                cVar7 = (**(code **)(*param_1_00 + 0x40))();
                if (cVar7 == cVar6) {
                  iVar8 = (**(code **)(*param_1 + 0x44))(auStack_30);
                  puStack_8 = (undefined *)0x0;
                  iVar9 = (**(code **)(*param_1_00 + 0x44))(auStack_58);
                  uStack_4 = 1;
                  bVar2 = true;
                  bVar1 = true;
                  if ((*(int *)(iVar9 + 0x14) == *(int *)(iVar8 + 0x14)) &&
                     (iVar8 = FUN_00850470(iVar8), iVar8 == 0)) {
                    iVar8 = (**(code **)(*param_1 + 0x48))();
                    iVar9 = (**(code **)(*param_1_00 + 0x48))();
                    bVar4 = bVar1;
                    bVar5 = bVar2;
                    if (iVar9 == iVar8) goto LAB_0094a743;
                  }
                }
              }
            }
          }
        }
      }
    }
    uVar3 = 0;
  }
  if (bVar1) {
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
  }
  if ((bVar2) && (_free(pvStack_14), 7 < uStack_18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c);
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined * FUN_0094a7f0(void)

{
  return &DAT_0323ac28;
}



undefined ** FUN_0094a800(void)

{
  return &PTR_PTR_00d5b314;
}



undefined * FUN_0094a810(void)

{
  return &DAT_032c0948;
}



void __fastcall FUN_0094a820(int param_1)

{
  *(undefined4 *)(param_1 + 0x1bc) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x1ac) = 0;
  *(undefined *)(param_1 + 0x1b0) = 0;
  *(undefined4 *)(param_1 + 0x1c0) = 5;
  *(undefined4 *)(param_1 + 0x1b8) = 0;
  *(undefined4 *)(param_1 + 0x1b4) = 0;
  return;
}



void FUN_0094a850(void)

{
  FUN_0091a950();
  return;
}



undefined __thiscall FUN_0094a870(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  int *piVar2;
  
  piVar2 = (int *)(**(code **)(*param_1_00 + 0x3ac))(param_1);
  if (piVar2 == (int *)0x0) {
    cVar1 = (**(code **)(*param_1_00 + 0x3a8))();
    if (cVar1 == '\0') {
      return 0;
    }
  }
  else {
    (**(code **)(*piVar2 + 4))(1);
  }
  return 1;
}



int __thiscall FUN_0094a8b0(int *param_1,char param_2)

{
  int iVar1;
  int iVar2;
  
  iVar1 = (**(code **)(*param_1 + 0x358))();
  if (iVar1 == 0) {
    return -1;
  }
  iVar2 = (**(code **)(*param_1 + 0x35c))();
  if (param_2 != '\0') {
    if (iVar2 == iVar1 + -1) {
      return 0;
    }
    return iVar2 + 1;
  }
  if (iVar2 == 0) {
    return iVar1 + -1;
  }
  return iVar2 + -1;
}



undefined4 __thiscall FUN_0094a910(int *param_1_00,undefined4 param_1,char param_2)

{
  if (param_2 != '\0') {
    (**(code **)(*param_1_00 + 0x38c))(param_1);
    return 1;
  }
  if (param_1_00[0x6f] == -1) {
    (**(code **)(*param_1_00 + 0x390))(0);
    return 1;
  }
  return 0;
}



undefined ** FUN_0094a950(void)

{
  return &PTR_u_wxBookCtrlEvent_0323ac40;
}



void __thiscall FUN_0094a960(int *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  undefined local_8 [8];
  
  puVar1 = (undefined4 *)(**(code **)(*param_1_00 + 0x374))(local_8,param_1);
  (**(code **)(*param_1_00 + 0x28c))(*puVar1,puVar1[1]);
  return;
}



int * __thiscall FUN_0094a9a0(int *param_1_00,int *param_1)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  uVar1 = param_1_00[0x69];
  uVar4 = 0;
  local_10 = 0;
  local_c = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x69] <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      if (*(int *)(param_1_00[0x6a] + uVar4 * 4) != 0) {
        FUN_0091b530(&local_8);
        if (local_10 < local_8) {
          local_10 = local_8;
        }
        if (local_c < local_4) {
          local_c = local_4;
        }
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  if (((*(char *)(param_1_00 + 0x6c) != '\0') &&
      (iVar2 = (**(code **)(*param_1_00 + 0x35c))(), iVar2 != -1)) &&
     (iVar2 = FUN_008fd3a0(iVar2), iVar2 != 0)) {
    iVar2 = (**(code **)(*param_1_00 + 0x35c))();
    if (iVar2 != -1) {
      FUN_008fd3a0(iVar2);
    }
    piVar3 = (int *)FUN_0091b530(&local_8);
    local_10 = *piVar3;
    local_c = piVar3[1];
  }
  (**(code **)(*param_1_00 + 0x374))(param_1,&local_10);
  param_1_00[0x4c] = *param_1;
  param_1_00[0x4d] = param_1[1];
  return param_1;
}



void __thiscall FUN_0094aae0(int *param_1_00,undefined4 *param_1)

{
  char cVar1;
  int *unaff_ESI;
  int *piStack_10;
  int *apiStack_c [2];
  int **ppiStack_4;
  
  if (param_1_00[0x6b] != 0) {
    cVar1 = (**(code **)(*(int *)param_1_00[0x6b] + 0xdc))();
    if (cVar1 != '\0') {
      (**(code **)(*param_1_00 + 0x27c))(&piStack_10);
      FUN_0091b530(&piStack_10);
      if ((*(byte *)(param_1_00 + 0x38) & 0x30) != 0) {
        *ppiStack_4 = (int *)apiStack_c;
        ppiStack_4[1] = apiStack_c[0];
        return;
      }
      *ppiStack_4 = piStack_10;
      ppiStack_4[1] = unaff_ESI;
      return;
    }
  }
  *param_1 = 0;
  param_1[1] = 0;
  return;
}



undefined4 __thiscall FUN_0094ab80(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  
  if (param_1 < *(uint *)(param_1_00 + 0x1a4)) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x1a4) <= param_1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    uVar1 = *(undefined4 *)(*(int *)(param_1_00 + 0x1a8) + param_1 * 4);
    FUN_0086a1e0(param_1,1);
    FUN_0091a950();
    return uVar1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\bookctrl.cpp",0x197,"wxBookCtrlBase::DoRemovePage",
                 "nPage < m_pages.size()",L"invalid page index in wxBookCtrlBase::DoRemovePage()");
  }
  return 0;
}



void __thiscall FUN_0094ada0(int param_1_00,int *param_1,int *param_2)

{
  byte bVar1;
  int local_8;
  int local_4;
  
  FUN_0094aae0(&local_8);
  bVar1 = *(byte *)(param_1_00 + 0xe0);
  *param_1 = *param_2;
  param_1[1] = param_2[1];
  if ((bVar1 & 0x30) != 0) {
    if (*param_2 < local_8) {
      *param_1 = local_8;
    }
    param_1[1] = param_1[1] + *(int *)(param_1_00 + 0x1c0) + local_4;
    return;
  }
  *param_1 = *param_1 + *(int *)(param_1_00 + 0x1c0) + local_8;
  if (param_2[1] < local_4) {
    param_1[1] = local_4;
  }
  return;
}



int * __fastcall FUN_0094ae10(int *param_1)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  uint uVar4;
  int unaff_EBX;
  int unaff_ESI;
  int local_10;
  int local_c;
  undefined local_8 [4];
  int *piStack_4;
  
  FUN_0094aae0(local_8);
  (**(code **)(*param_1 + 0x27c))(&local_10,&local_c);
  iVar2 = *param_1;
  piStack_4[2] = unaff_ESI;
  pcVar3 = *(code **)(iVar2 + 0xe8);
  piStack_4[3] = unaff_EBX;
  *piStack_4 = 0;
  piStack_4[1] = 0;
  uVar4 = (*pcVar3)();
  switch(uVar4 & 0xf0) {
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\bookctrl.cpp",0xae,"wxBookCtrlBase::GetPageRect",
                   "Assert failure",L"unexpected alignment");
    }
  case 0x10:
    piStack_4[1] = param_1[0x70] + local_c;
  case 0x20:
    piVar1 = piStack_4 + 3;
    *piVar1 = *piVar1 - (param_1[0x70] + local_c);
    if (*piVar1 < 0) {
      piStack_4[3] = 0;
    }
    break;
  case 0x40:
    *piStack_4 = param_1[0x70] + local_10;
  case 0x80:
    piVar1 = piStack_4 + 2;
    *piVar1 = *piVar1 - (param_1[0x70] + local_10);
    if (*piVar1 < 0) {
      piStack_4[2] = 0;
      return piStack_4;
    }
  }
  return piStack_4;
}



void __fastcall FUN_0094af90(int *param_1)

{
  char cVar1;
  int *piVar2;
  int *piVar3;
  uint uVar4;
  int unaff_EBX;
  int iVar5;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  int iVar6;
  uint uVar7;
  undefined *puVar8;
  int *piStack_48;
  wchar_t *pwStack_44;
  undefined auStack_30 [24];
  int local_18;
  int local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  int *piStack_8;
  
  if (param_1[0x6b] != 0) {
    if (param_1[0x35] == 0) {
      pwStack_44 = (wchar_t *)&local_18;
      piStack_48 = &local_14;
      (**(code **)(*param_1 + 0x27c))();
      puVar8 = &stack0xffffffc8;
      (**(code **)(*(int *)param_1[0x6b] + 0x27c))(puVar8,&stack0xffffffcc);
      (**(code **)(*(int *)param_1[0x6b] + 0x278))(&stack0xffffffc8,auStack_30);
      FUN_0094aae0(&stack0xffffffc8);
      (**(code **)(*(int *)param_1[0x6b] + 0x28c))(unaff_EBX,unaff_ESI - (unaff_EBX - unaff_EDI));
      FUN_0094aae0(&stack0xffffffc0);
      if ((unaff_EBX != unaff_EBP) || (unaff_ESI != unaff_EDI)) {
        piVar2 = (int *)FUN_0043d8d2(&stack0xffffffc0);
        piVar3 = (int *)FUN_004555c3(&piStack_48);
        (**(code **)(*(int *)param_1[0x6b] + 0x28c))
                  (unaff_EBP - (*piVar3 - *piVar2),unaff_EDI - (piVar3[1] - piVar2[1]));
      }
      (**(code **)(*(int *)param_1[0x6b] + 0x278))(&piStack_48,&stack0xffffffc0);
      iVar6 = 0;
      iVar5 = 0;
      uVar4 = (**(code **)(*param_1 + 0xe8))();
      switch(uVar4 & 0xf0) {
      case 0x10:
      case 0x40:
        break;
      case 0x20:
        iVar5 = unaff_EBP - (int)piStack_48;
        break;
      default:
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\common\\bookctrl.cpp",0xe9,"wxBookCtrlBase::DoSize",
                       "Assert failure",L"unexpected alignment");
        }
        break;
      case 0x80:
        iVar6 = unaff_EDI - (int)puVar8;
      }
      (**(code **)(*(int *)param_1[0x6b] + 0x270))(&stack0xffffffc4,&stack0xffffffc0);
      if ((local_14 != iVar6) || (local_18 != iVar5)) {
        pwStack_44 = (wchar_t *)0xffffffff;
        piStack_48 = (int *)0xffffffff;
        (**(code **)(*(int *)param_1[0x6b] + 0x288))(iVar6,iVar5);
      }
    }
    else {
      (**(code **)(*param_1 + 0x204))();
    }
    pwStack_44 = L"麋Ƥ";
    (**(code **)(*param_1 + 0x3b4))();
    uVar4 = param_1[0x69];
    uVar7 = 0;
    if (uVar4 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x69] <= uVar7)) {
          pwStack_44 = (wchar_t *)0x0;
          piStack_48 = (int *)0xfb2018;
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item");
        }
        piVar2 = *(int **)(param_1[0x6a] + uVar7 * 4);
        if (piVar2 == (int *)0x0) {
          if (PTR_FUN_03235c4c != (undefined *)0x0) {
            pwStack_44 = L"삄䍵\xe068햴栀듐Õ偨햵栀ć";
            cVar1 = (**(code **)(*param_1 + 0x3a8))();
            if (cVar1 == '\0') {
              pwStack_44 = L"Null page in a control that does not allow null pages?";
              piStack_48 = (int *)0xd5b4d0;
              FUN_00840480("..\\..\\src\\common\\bookctrl.cpp",0x107,"wxBookCtrlBase::DoSize");
            }
          }
        }
        else {
          pwStack_44 = (wchar_t *)0x3;
          piStack_48 = piStack_8;
          (**(code **)(*piVar2 + 0x288))(local_14,uStack_10,uStack_c);
        }
        uVar7 = uVar7 + 1;
      } while (uVar7 < uVar4);
    }
  }
  return;
}



void __thiscall FUN_0094b2c0(int *param_1_00,int param_1)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined local_8 [8];
  
  piVar4 = *(int **)(param_1 + 8);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     (iVar3 = FUN_0048a085(piVar4,&PTR_u_wxWindow_03239714), iVar3 == 0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/object.h",0xa1,"wxCheckCast",
                 "wxDynamicCast(ptr, T)","wxStaticCast() used incorrectly");
  }
  if (piVar4 != (int *)0x0) {
    while ((piVar4 != param_1_00 && (piVar1 = (int *)piVar4[0x11], piVar1 != param_1_00))) {
      piVar4 = piVar1;
      if (piVar1 == (int *)0x0) {
        *(undefined *)(param_1 + 0x24) = 1;
        return;
      }
    }
    if ((piVar4 != (int *)0x0) && (iVar3 = FUN_0086a790(piVar4,0), iVar3 == -1)) {
      if (*(int *)(param_1 + 0xac) == 2) {
        iVar3 = *param_1_00;
        uVar6 = 0;
        uVar5 = FUN_00615428(local_8,param_1 + 0x5c);
        iVar3 = (**(code **)(iVar3 + 0x394))(uVar5,uVar6);
      }
      else {
        iVar3 = (**(code **)(*param_1_00 + 0x35c))();
      }
      if ((iVar3 != -1) && (iVar3 = FUN_008fd3a0(iVar3), iVar3 != 0)) {
        *(int *)(param_1 + 8) = iVar3;
        cVar2 = (**(code **)(**(int **)(iVar3 + 0x70) + 0x18))(param_1);
        if (cVar2 != '\0') {
          return;
        }
      }
    }
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



undefined4 * FUN_0094b3c0(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x68);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0092bd60(DAT_032bd44c,0);
    puVar1[0x18] = 0xffffffff;
    puVar1[0x19] = 0xffffffff;
    *(undefined *)(puVar1 + 0x17) = 1;
    *puVar1 = wxBookCtrlEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_0094b430(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x68);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a2df(param_1);
    *puVar1 = wxNotifyEvent::vftable;
    *(undefined *)(puVar1 + 0x17) = *(undefined *)(param_1 + 0x5c);
    *puVar1 = wxBookCtrlEvent::vftable;
    puVar1[0x18] = *(undefined4 *)(param_1 + 0x60);
    puVar1[0x19] = *(undefined4 *)(param_1 + 100);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined ** FUN_0094b4b0(void)

{
  return &PTR_u_wxDCFactoryCleanupModule_0323adc8;
}



int * FUN_0094b4c0(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *pvVar2;
  int *piVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x120);
  piVar3 = (int *)0x0;
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    piVar3 = (int *)FUN_0098fca0(param_1,param_2);
  }
  local_4 = 0xffffffff;
  (**(code **)(*piVar3 + 0x8c))(param_2,uVar1);
  ExceptionList = pvVar2;
  return piVar3;
}



int * FUN_0094b540(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *pvVar2;
  int *piVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x120);
  piVar3 = (int *)0x0;
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    piVar3 = (int *)FUN_0098fd60(param_1,param_2);
  }
  local_4 = 0xffffffff;
  (**(code **)(*piVar3 + 0x8c))(param_2,uVar1);
  ExceptionList = pvVar2;
  return piVar3;
}



int * FUN_0094b5c0(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *pvVar2;
  int *piVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x120);
  piVar3 = (int *)0x0;
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    piVar3 = (int *)FUN_0098fe30(param_1,param_2);
  }
  local_4 = 0xffffffff;
  (**(code **)(*piVar3 + 0x8c))(param_2,uVar1);
  ExceptionList = pvVar2;
  return piVar3;
}



// Library Function - Multiple Matches With Different Base Names
//  public: virtual class COleControlContainer * __thiscall COccManager::CreateContainer(class CWnd
// *)
//  public: virtual class COleControlSite * __thiscall COleControlSiteFactory::CreateSite(class
// COleControlContainer *,class CControlCreationInfo const &)
// 
// Library: Visual Studio 2008 Release

undefined4 FID_conflict_CreateContainer(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x120);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009ba840(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_0094b6b0(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x120);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009ba9c0(param_1,param_2);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Different Base Names
//  public: virtual class COleControlContainer * __thiscall COccManager::CreateContainer(class CWnd
// *)
//  public: virtual class COleControlSite * __thiscall COleControlSiteFactory::CreateSite(class
// COleControlContainer *,class CControlCreationInfo const &)
// 
// Library: Visual Studio 2008 Release

undefined4 FID_conflict_CreateContainer(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x120);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009bad70(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_0094b7a0(void)

{
  int *piVar1;
  
  piVar1 = (int *)FUN_009bb7b0();
                    // WARNING: Could not recover jumptable at 0x0094b7ac. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*piVar1 + 0x1c))();
  return;
}



undefined ** FUN_0094b7b0(void)

{
  return &PTR_u_wxWindowDC_0323ade0;
}



undefined ** FUN_0094b7c0(void)

{
  return &PTR_u_wxClientDC_0323adf8;
}



undefined ** FUN_0094b7d0(void)

{
  return &PTR_u_wxMemoryDC_0323ae10;
}



undefined ** FUN_0094b7e0(void)

{
  return &PTR_u_wxPaintDC_0323ae28;
}



undefined ** FUN_0094b7f0(void)

{
  return &PTR_u_wxScreenDC_0323ae40;
}



undefined ** FUN_0094b800(void)

{
  return &PTR_u_wxPrinterDC_0323ae58;
}



undefined ** FUN_0094b810(void)

{
  return &PTR_u_wxDCImpl_0323ae70;
}



void __fastcall FUN_0094b820(int param_1)

{
  *(double *)(param_1 + 0x50) = *(double *)(param_1 + 0x40) * *(double *)(param_1 + 0x30);
  *(double *)(param_1 + 0x58) = *(double *)(param_1 + 0x48) * *(double *)(param_1 + 0x38);
  return;
}



void __thiscall FUN_0094b840(int *param_1_00,int param_1)

{
  double dVar1;
  double dVar2;
  
  switch(param_1) {
  case 2:
    dVar2 = *(double *)(param_1_00 + 0x1c);
    dVar1 = *(double *)(param_1_00 + 0x1a);
    break;
  case 3:
    dVar2 = *(double *)(param_1_00 + 0x1c) / 10.0;
    dVar1 = *(double *)(param_1_00 + 0x1a) / 10.0;
    break;
  case 4:
    dVar2 = *(double *)(param_1_00 + 0x1c) * 0.01763888888888889;
    dVar1 = *(double *)(param_1_00 + 0x1a) * 0.01763888888888889;
    break;
  case 5:
    dVar2 = *(double *)(param_1_00 + 0x1c) * 0.3527777777777778;
    dVar1 = *(double *)(param_1_00 + 0x1a) * 0.3527777777777778;
    break;
  default:
    dVar1 = 1.0;
    dVar2 = 1.0;
  }
  (**(code **)(*param_1_00 + 0xf4))(dVar1,dVar2);
  param_1_00[0x28] = param_1;
  return;
}



void __thiscall FUN_0094b8f0(int *param_1_00,undefined8 param_1,undefined8 param_2)

{
  code *pcVar1;
  
  pcVar1 = *(code **)(*param_1_00 + 0x120);
  *(undefined8 *)(param_1_00 + 0x10) = param_1;
  *(undefined8 *)(param_1_00 + 0x12) = param_2;
  (*pcVar1)();
  return;
}



void __thiscall FUN_0094b910(int *param_1_00,undefined8 param_1,undefined8 param_2)

{
  code *pcVar1;
  
  pcVar1 = *(code **)(*param_1_00 + 0x120);
  *(undefined8 *)(param_1_00 + 0xc) = param_1;
  *(undefined8 *)(param_1_00 + 0xe) = param_2;
  (*pcVar1)();
  return;
}



void __thiscall FUN_0094b930(int *param_1_00,int param_1,int param_2)

{
  param_1_00[5] = param_1_00[0x18] * param_1;
  param_1_00[6] = param_1_00[0x19] * param_2;
  (**(code **)(*param_1_00 + 0x120))();
  return;
}



void __thiscall FUN_0094b960(int *param_1_00,int param_1,int param_2)

{
  param_1_00[7] = param_1;
  param_1_00[8] = param_2;
  (**(code **)(*param_1_00 + 0x120))();
  return;
}



void __thiscall FUN_0094b980(int *param_1_00,int param_1,int param_2)

{
  param_1_00[9] = param_1;
  param_1_00[10] = param_2;
  (**(code **)(*param_1_00 + 0x120))();
  return;
}



void __thiscall FUN_0094b9a0(int *param_1_00,char param_1,char param_2)

{
  param_1_00[0x18] = (uint)(param_1 != '\0') * 2 + -1;
  param_1_00[0x19] = (uint)(param_2 == '\0') * 2 + -1;
  (**(code **)(*param_1_00 + 0x120))();
  return;
}



undefined __thiscall
FUN_0094b9d0(int *param_1_00,undefined4 param_1,undefined4 param_2,int param_3,int param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7,int param_8,int param_9,
            undefined4 param_10,undefined4 param_11,undefined4 param_12,undefined4 param_13)

{
  int iVar1;
  double dVar2;
  undefined uVar3;
  undefined4 uVar4;
  undefined4 unaff_EBX;
  double dVar5;
  undefined4 uStack_74;
  double local_60;
  undefined local_58 [8];
  double local_50;
  double local_48;
  
  if ((((param_8 != 0) && (param_9 != 0)) && (param_3 != 0)) && (param_4 != 0)) {
    local_48 = (double)param_3;
    dVar2 = (double)param_8 / local_48;
    local_50 = (double)param_4;
    dVar5 = (double)param_9 / local_50;
    (**(code **)(*param_1_00 + 0xf0))(local_58,&local_60);
    dVar5 = local_60 / dVar5;
    (**(code **)(*param_1_00 + 0xec))(dVar5,dVar2 / (double)CONCAT44(uStack_74,unaff_EBX));
    iVar1 = *param_1_00;
    uVar4 = FUN_00a49750(param_5,param_6,param_7,param_10,param_11,param_12,param_13);
    uVar4 = FUN_00a49750(uVar4);
    uVar4 = FUN_00a49750(uVar4);
    uVar4 = FUN_00a49750(uVar4);
    uVar3 = (**(code **)(iVar1 + 0x170))(uVar4);
    (**(code **)(*param_1_00 + 0xec))(CONCAT44(SUB84(dVar5,0),param_13),CONCAT44(param_12,param_11))
    ;
    return uVar3;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\dcbase.cpp",0x29b,"wxDCImpl::DoStretchBlit",
                 "srcWidth && srcHeight && dstWidth && dstHeight",L"invalid blit size");
  }
  return 0;
}



undefined ** FUN_0094bb20(void)

{
  return &PTR_u_wxDC_0323aeb8;
}



undefined4 * __thiscall
FUN_0094bb30(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxwxPointListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __fastcall FUN_0094bbb0(int *param_1)

{
  char cVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdb2cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  cVar1 = (**(code **)(param_1[1] + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  if (cVar1 != '\0') {
    (**(code **)(**(int **)(*param_1 + 8) + 0x58))(param_1 + 1);
  }
  local_4 = 0xffffffff;
  param_1[1] = (int)wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void FUN_0094bc30(void)

{
  if (DAT_032c0ea8 != (undefined4 *)0x0) {
    (**(code **)*DAT_032c0ea8)(1);
  }
  DAT_032c0ea8 = (undefined4 *)0x0;
  return;
}



undefined4 FUN_0094bc50(undefined4 param_1,int *param_2)

{
  char cVar1;
  void *pvVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb2fb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_2 + 0x10))(DAT_0323f878 ^ (uint)&stack0xfffffff0);
  if (cVar1 != '\0') {
    FUN_0083eaa0();
  }
  pvVar2 = operator_new(0x120);
  uStack_4 = 0;
  if (pvVar2 != (void *)0x0) {
    uVar3 = FUN_009bac90(param_1,param_2);
    ExceptionList = local_c;
    return uVar3;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_0094bce0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  
  if (DAT_032c0ea8 == (int *)0x0) {
    DAT_032c0ea8 = (int *)operator_new(4);
    if (DAT_032c0ea8 == (int *)0x0) {
      DAT_032c0ea8 = (int *)0x0;
    }
    else {
      *DAT_032c0ea8 = (int)wxNativeDCFactory::vftable;
    }
  }
  uVar1 = (**(code **)(*DAT_032c0ea8 + 4))(param_1_00,param_1);
  param_1_00[2] = uVar1;
  param_1_00[1] = 0;
  *param_1_00 = wxWindowDC::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_0094bd30(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  
  if (DAT_032c0ea8 == (int *)0x0) {
    DAT_032c0ea8 = (int *)operator_new(4);
    if (DAT_032c0ea8 == (int *)0x0) {
      DAT_032c0ea8 = (int *)0x0;
    }
    else {
      *DAT_032c0ea8 = (int)wxNativeDCFactory::vftable;
    }
  }
  uVar1 = (**(code **)(*DAT_032c0ea8 + 8))(param_1_00,param_1);
  param_1_00[2] = uVar1;
  param_1_00[1] = 0;
  *param_1_00 = wxClientDC::vftable;
  return param_1_00;
}



undefined4 * __fastcall FUN_0094bd80(undefined4 *param_1)

{
  undefined4 uVar1;
  
  if (DAT_032c0ea8 == (int *)0x0) {
    DAT_032c0ea8 = (int *)operator_new(4);
    if (DAT_032c0ea8 == (int *)0x0) {
      DAT_032c0ea8 = (int *)0x0;
    }
    else {
      *DAT_032c0ea8 = (int)wxNativeDCFactory::vftable;
    }
  }
  uVar1 = (**(code **)(*DAT_032c0ea8 + 0x18))(param_1);
  param_1[2] = uVar1;
  param_1[1] = 0;
  *param_1 = wxMemoryDC::vftable;
  return param_1;
}



undefined4 * __thiscall FUN_0094bdd0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  
  if (DAT_032c0ea8 == (int *)0x0) {
    DAT_032c0ea8 = (int *)operator_new(4);
    if (DAT_032c0ea8 == (int *)0x0) {
      DAT_032c0ea8 = (int *)0x0;
    }
    else {
      *DAT_032c0ea8 = (int)wxNativeDCFactory::vftable;
    }
  }
  uVar1 = (**(code **)(*DAT_032c0ea8 + 0x14))(param_1_00,param_1);
  param_1_00[2] = uVar1;
  param_1_00[1] = 0;
  *param_1_00 = wxMemoryDC::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_0094be20(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  
  if (DAT_032c0ea8 == (int *)0x0) {
    DAT_032c0ea8 = (int *)operator_new(4);
    if (DAT_032c0ea8 == (int *)0x0) {
      DAT_032c0ea8 = (int *)0x0;
    }
    else {
      *DAT_032c0ea8 = (int)wxNativeDCFactory::vftable;
    }
  }
  uVar1 = (**(code **)(*DAT_032c0ea8 + 0x10))(param_1_00,param_1);
  param_1_00[2] = uVar1;
  param_1_00[1] = 0;
  *param_1_00 = wxMemoryDC::vftable;
  return param_1_00;
}



void __fastcall FUN_0094be70(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x0094be7b. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 400))();
  return;
}



undefined4 * __thiscall FUN_0094be80(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  
  if (DAT_032c0ea8 == (int *)0x0) {
    DAT_032c0ea8 = (int *)operator_new(4);
    if (DAT_032c0ea8 == (int *)0x0) {
      DAT_032c0ea8 = (int *)0x0;
    }
    else {
      *DAT_032c0ea8 = (int)wxNativeDCFactory::vftable;
    }
  }
  uVar1 = (**(code **)(*DAT_032c0ea8 + 0xc))(param_1_00,param_1);
  param_1_00[2] = uVar1;
  param_1_00[1] = 0;
  *param_1_00 = wxPaintDC::vftable;
  return param_1_00;
}



undefined4 * __fastcall FUN_0094bed0(undefined4 *param_1)

{
  undefined4 uVar1;
  
  if (DAT_032c0ea8 == (int *)0x0) {
    DAT_032c0ea8 = (int *)operator_new(4);
    if (DAT_032c0ea8 == (int *)0x0) {
      DAT_032c0ea8 = (int *)0x0;
    }
    else {
      *DAT_032c0ea8 = (int)wxNativeDCFactory::vftable;
    }
  }
  uVar1 = (**(code **)(*DAT_032c0ea8 + 0x1c))(param_1);
  param_1[2] = uVar1;
  param_1[1] = 0;
  *param_1 = wxScreenDC::vftable;
  return param_1;
}



undefined4 * __fastcall FUN_0094bf20(undefined4 *param_1)

{
  int *piVar1;
  uint uVar2;
  undefined4 uVar3;
  void *pvStack_14;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb336;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff5c;
  ExceptionList = &local_c;
  if (DAT_032c0ea8 == (int *)0x0) {
    DAT_032c0ea8 = (int *)operator_new(4);
    if (DAT_032c0ea8 == (int *)0x0) {
      DAT_032c0ea8 = (int *)0x0;
    }
    else {
      *DAT_032c0ea8 = (int)wxNativeDCFactory::vftable;
    }
  }
  piVar1 = DAT_032c0ea8;
  uVar3 = FUN_009be180(uVar2);
  local_4 = 0;
  uVar3 = (**(code **)(*piVar1 + 0x20))(param_1,uVar3);
  param_1[1] = 0;
  *param_1 = wxDC::vftable;
  param_1[2] = uVar3;
  local_c = (void *)CONCAT31(local_c._1_3_,2);
  FUN_009bdf40();
  *param_1 = wxPrinterDC::vftable;
  ExceptionList = pvStack_14;
  return param_1;
}



undefined4 * __thiscall FUN_0094bff0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  
  if (DAT_032c0ea8 == (int *)0x0) {
    DAT_032c0ea8 = (int *)operator_new(4);
    if (DAT_032c0ea8 == (int *)0x0) {
      DAT_032c0ea8 = (int *)0x0;
    }
    else {
      *DAT_032c0ea8 = (int)wxNativeDCFactory::vftable;
    }
  }
  uVar1 = (**(code **)(*DAT_032c0ea8 + 0x20))(param_1_00,param_1);
  param_1_00[2] = uVar1;
  param_1_00[1] = 0;
  *param_1_00 = wxPrinterDC::vftable;
  return param_1_00;
}



undefined4 __thiscall FUN_0094c040(int param_1_00,undefined4 param_1)

{
  (**(code **)(**(int **)(param_1_00 + 8) + 0x19c))(param_1);
  return param_1;
}



void __fastcall FUN_0094c060(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x0094c06b. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 8) + 0x1a0))();
  return;
}



void __fastcall FUN_0094c070(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdb3bc;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxDCImpl::vftable;
  local_4 = 6;
  param_1[0x3b] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4._0_1_ = 5;
  FUN_00921450();
  local_4._0_1_ = 4;
  param_1[0x34] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 3;
  param_1[0x2f] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 2;
  FUN_008f7630();
  local_4._0_1_ = 1;
  FUN_008f7630();
  local_4 = (uint)local_4._1_3_ << 8;
  param_1[0x29] = wxObject::vftable;
  FUN_0083e850();
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_0094c150(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxAffineMatrix2DBase::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0094c170(undefined4 *param_1)

{
  *param_1 = wxAffineMatrix2DBase::vftable;
  return;
}



void __thiscall
FUN_0094c180(int param_1_00,undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)

{
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = *(undefined4 *)(param_1_00 + 0x88);
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *(undefined4 *)(param_1_00 + 0x8c);
  }
  if (param_3 != (int *)0x0) {
    *param_3 = *(int *)(param_1_00 + 0x90) - *(int *)(param_1_00 + 0x88);
  }
  if (param_4 != (int *)0x0) {
    *param_4 = *(int *)(param_1_00 + 0x94) - *(int *)(param_1_00 + 0x8c);
  }
  return;
}



void FUN_0094c1d0(undefined4 *param_1)

{
  *(undefined8 *)(param_1 + 2) = 0x3ff0000000000000;
  *param_1 = wxAffineMatrix2D::vftable;
  *(undefined8 *)(param_1 + 4) = 0;
  *(undefined8 *)(param_1 + 6) = 0;
  *(undefined8 *)(param_1 + 10) = 0;
  *(undefined8 *)(param_1 + 0xc) = 0;
  *(undefined8 *)(param_1 + 8) = 0x3ff0000000000000;
  return;
}



undefined ** FUN_0094c200(void)

{
  return &PTR_vftable_03238cc8;
}



int __thiscall FUN_0094c210(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = FUN_008ffcc0((double)(((param_1 - *(int *)(param_1_00 + 0x24)) -
                                *(int *)(param_1_00 + 0x1c)) * *(int *)(param_1_00 + 0x60)) /
                       *(double *)(param_1_00 + 0x50));
  return iVar1 + *(int *)(param_1_00 + 0x14);
}



int __thiscall FUN_0094c250(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = FUN_008ffcc0((double)(((param_1 - *(int *)(param_1_00 + 0x28)) -
                                *(int *)(param_1_00 + 0x20)) * *(int *)(param_1_00 + 100)) /
                       *(double *)(param_1_00 + 0x58));
  return iVar1 + *(int *)(param_1_00 + 0x18);
}



void __thiscall FUN_0094c290(int param_1_00,int param_1)

{
  FUN_008ffcc0((double)param_1 / *(double *)(param_1_00 + 0x50));
  return;
}



void __thiscall FUN_0094c2b0(int param_1_00,int param_1)

{
  FUN_008ffcc0((double)param_1 / *(double *)(param_1_00 + 0x58));
  return;
}



int __thiscall FUN_0094c2d0(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = FUN_008ffcc0((double)((param_1 - *(int *)(param_1_00 + 0x14)) *
                               *(int *)(param_1_00 + 0x60)) * *(double *)(param_1_00 + 0x50));
  return iVar1 + *(int *)(param_1_00 + 0x24) + *(int *)(param_1_00 + 0x1c);
}



int __thiscall FUN_0094c310(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = FUN_008ffcc0((double)((param_1 - *(int *)(param_1_00 + 0x18)) * *(int *)(param_1_00 + 100)
                               ) * *(double *)(param_1_00 + 0x58));
  return iVar1 + *(int *)(param_1_00 + 0x28) + *(int *)(param_1_00 + 0x20);
}



void __thiscall FUN_0094c350(int param_1_00,int param_1)

{
  FUN_008ffcc0((double)param_1 * *(double *)(param_1_00 + 0x50));
  return;
}



void __thiscall FUN_0094c370(int param_1_00,int param_1)

{
  FUN_008ffcc0((double)param_1 * *(double *)(param_1_00 + 0x58));
  return;
}



void __thiscall FUN_0094c390(int *param_1_00,int param_1,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  void *unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb3eb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = *(uint *)(param_1 + 4);
  puVar4 = (undefined4 *)
           FUN_00823c23(-(uint)((int)((ulonglong)uVar1 * 8 >> 0x20) != 0) |
                        (uint)((ulonglong)uVar1 * 8),DAT_0323f878 ^ (uint)&stack0xffffffe4);
  uStack_4 = 0;
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    _vector_constructor_iterator_(puVar4,8,uVar1,(_func_void_ptr_void_ptr *)&LAB_0044642c);
  }
  iVar2 = *(int *)(param_1 + 0xc);
  uStack_4 = 0xffffffff;
  puVar5 = puVar4;
  for (; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0xc)) {
    puVar3 = *(undefined4 **)(iVar2 + 8);
    *puVar5 = *puVar3;
    puVar5[1] = puVar3[1];
    puVar5 = puVar5 + 2;
  }
  (**(code **)(*param_1_00 + 0x17c))(uVar1,puVar4,param_3,param_4);
  FUN_00a3f66c(puVar4);
  ExceptionList = unaff_EDI;
  return;
}



undefined4 FUN_0094c460(undefined8 param_1,undefined8 param_3)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(8);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    uVar3 = FUN_008ffcc0(param_3,uVar1);
    uVar4 = FUN_008ffcc0(param_1);
    *puVar2 = uVar4;
    puVar2[1] = uVar3;
  }
  local_4 = 0xffffffff;
  FUN_0086ad60();
  ExceptionList = local_c;
  return 1;
}



void FUN_0094c4f0(void)

{
  int in_EAX;
  
  (**(code **)(**(int **)(in_EAX + 8) + 0x180))(&PTR_vftable_0323aea0,0,0);
  if (DAT_0323aeac != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(DAT_0323aeac + 8));
  }
  return;
}



void __thiscall FUN_0094c540(int *param_1_00,int *param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined **local_3c;
  undefined auStack_38 [8];
  undefined **ppuStack_30;
  undefined auStack_2c [24];
  undefined4 uStack_14;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb438;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\dcbase.cpp",0x469,"wxDCImpl::InheritAttributes",
                   &DAT_00d517ac,"window can\'t be NULL",DAT_0323f878 ^ (uint)&stack0xffffffac);
    }
  }
  else {
    uVar2 = FUN_0091e100(&local_3c);
    local_4 = 0;
    (**(code **)(*param_1_00 + 0x50))(uVar2);
    puStack_8 = (undefined *)0xffffffff;
    FUN_00921450();
    uVar2 = FUN_0091df90(auStack_38);
    puStack_8 = (undefined *)0x1;
    (**(code **)(*param_1_00 + 0x78))(uVar2);
    local_c = (void *)0xffffffff;
    local_3c = wxObject::vftable;
    FUN_0083e850();
    uVar2 = FUN_0091de40(&local_3c);
    local_c = (void *)0x2;
    (**(code **)(*param_1_00 + 0x80))(uVar2);
    uStack_10 = 0xffffffff;
    FUN_0083e850();
    uVar2 = FUN_0091de40(auStack_2c);
    uStack_10 = 3;
    FUN_0095d7e0(uVar2,100);
    uStack_10 = CONCAT31(uStack_10._1_3_,4);
    (**(code **)(*param_1_00 + 0x68))(&stack0xffffffb0);
    uStack_14 = CONCAT31(uStack_14._1_3_,3);
    FUN_008f7630();
    uStack_14 = 0xffffffff;
    ppuStack_30 = wxObject::vftable;
    FUN_0083e850();
    iVar1 = *param_1_00;
    uVar2 = (**(code **)(*param_1 + 100))();
    (**(code **)(iVar1 + 0x30))(uVar2);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0094c6b0(int param_1_00,int param_1)

{
  undefined4 uVar1;
  
  uVar1 = (**(code **)(**(int **)(param_1 + 8) + 0x54))();
  (**(code **)(**(int **)(param_1_00 + 8) + 0x50))(uVar1);
  uVar1 = (**(code **)(**(int **)(param_1 + 8) + 0x7c))();
  (**(code **)(**(int **)(param_1_00 + 8) + 0x78))(uVar1);
  uVar1 = (**(code **)(**(int **)(param_1 + 8) + 0x84))();
  (**(code **)(**(int **)(param_1_00 + 8) + 0x80))(uVar1);
  uVar1 = (**(code **)(**(int **)(param_1 + 8) + 0x6c))();
  (**(code **)(**(int **)(param_1_00 + 8) + 0x68))(uVar1);
  uVar1 = (**(code **)(**(int **)(param_1 + 8) + 0x34))();
                    // WARNING: Could not recover jumptable at 0x0094c72a. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1_00 + 8) + 0x30))(uVar1);
  return;
}



undefined4 * __thiscall FUN_0094c730(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxDCFactory::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0094c750(int param_1)

{
  *(byte *)(param_1 + 0x10) = *(byte *)(param_1 + 0x10) & 0xfb;
  *(undefined4 *)(param_1 + 0x94) = 0;
  *(undefined4 *)(param_1 + 0x8c) = 0;
  *(undefined4 *)(param_1 + 0x90) = 0;
  *(undefined4 *)(param_1 + 0x88) = 0;
  return;
}



undefined4 * FUN_0094c770(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxDCFactoryCleanupModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0xc);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_0094bd80(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_0094c840(int param_1,int *param_2)

{
  char cVar1;
  int iVar2;
  
  iVar2 = (**(code **)(**(int **)(param_1 + 8) + 0x194))();
  if (param_2[1] != *(int *)(iVar2 + 4)) {
    cVar1 = (**(code **)(*param_2 + 0x10))();
    if (cVar1 != '\0') {
      FUN_0083eaa0();
    }
    (**(code **)(**(int **)(param_1 + 8) + 400))(param_2);
  }
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0xc);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_0094bed0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_0094c900(undefined4 param_1_00,byte param_1)

{
  FUN_00457221();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0xc);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_0094bf20(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_0094c990(undefined4 param_1_00,byte param_1)

{
  FUN_0094c070();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0094c9b0(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                 undefined8 param_5,undefined8 param_6,undefined8 param_7,undefined8 param_8)

{
  double dVar1;
  double dVar2;
  double dVar3;
  double dVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  double dVar8;
  double dVar9;
  double dVar10;
  double *pdVar11;
  
  DAT_032c09a8 = param_1;
  DAT_032c09a4 = (double *)&DAT_032c09e8;
  DAT_032c09b0 = param_2;
  DAT_032c09a0 = 1;
  DAT_032c09b8 = param_3;
  DAT_032c09c0 = param_4;
  DAT_032c09c8 = param_5;
  DAT_032c09d0 = param_6;
  DAT_032c09d8 = param_7;
  DAT_032c09e0 = param_8;
  pdVar11 = DAT_032c09a4;
  while (DAT_032c09a0 != 0) {
    dVar1 = pdVar11[-8];
    DAT_032c09a4 = pdVar11 + -8;
    dVar2 = pdVar11[-7];
    DAT_032c09a0 = DAT_032c09a0 + -1;
    dVar3 = pdVar11[-6];
    dVar4 = pdVar11[-5];
    dVar5 = pdVar11[-4];
    dVar6 = pdVar11[-3];
    dVar7 = pdVar11[-2];
    dVar8 = pdVar11[-1];
    dVar9 = (dVar3 + dVar5) * 0.5;
    dVar10 = (dVar4 + dVar6) * 0.5;
    if ((((5.0 <= ABS(dVar1 - dVar9)) || (ABS(dVar2 - dVar10) < 5.0 == NAN(ABS(dVar2 - dVar10)))) ||
        (ABS(dVar9 - dVar7) < 5.0 == NAN(ABS(dVar9 - dVar7)))) ||
       (ABS(dVar10 - dVar8) < 5.0 == NAN(ABS(dVar10 - dVar8)))) {
      *DAT_032c09a4 = dVar9;
      DAT_032c09a0 = DAT_032c09a0 + 2;
      pdVar11[-7] = dVar10;
      DAT_032c09a4 = pdVar11 + 8;
      pdVar11[-6] = (dVar9 + dVar5) * 0.5;
      pdVar11[-5] = (dVar6 + dVar10) * 0.5;
      pdVar11[-4] = (dVar5 + dVar7) * 0.5;
      pdVar11[-3] = (dVar6 + dVar8) * 0.5;
      pdVar11[-2] = dVar7;
      pdVar11[-1] = dVar8;
      *pdVar11 = dVar1;
      pdVar11[1] = dVar2;
      pdVar11[2] = (dVar1 + dVar3) * 0.5;
      pdVar11[3] = (dVar2 + dVar4) * 0.5;
      pdVar11[4] = (dVar9 + dVar3) * 0.5;
      pdVar11[5] = (dVar4 + dVar10) * 0.5;
      pdVar11[6] = dVar9;
      pdVar11[7] = dVar10;
      pdVar11 = pdVar11 + 8;
    }
    else {
      FUN_0094c460(dVar1,dVar2);
      FUN_0094c460(dVar9,dVar10);
      pdVar11 = DAT_032c09a4;
    }
  }
  return;
}



void __thiscall FUN_0094cbb0(int *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  double dVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  double dVar8;
  double dVar9;
  double dVar10;
  double dVar11;
  char cVar12;
  double dStack_60;
  double dStack_58;
  
  cVar12 = (**(code **)(*param_1_00 + 0x10))();
  if (cVar12 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  else {
    iVar1 = *(int *)(param_1 + 0xc);
    if (iVar1 != 0) {
      dVar9 = (double)**(int **)(iVar1 + 8);
      iVar2 = *(int *)(iVar1 + 0xc);
      dVar6 = (double)(*(int **)(iVar1 + 8))[1];
      piVar3 = *(int **)(iVar2 + 8);
      dVar4 = (double)*piVar3;
      dVar7 = (double)piVar3[1];
      dVar8 = (dVar4 + dVar9) * 0.5;
      dVar5 = (dVar7 + dVar6) * 0.5;
      dStack_60 = dVar8 + dVar4;
      dStack_58 = dVar5 + dVar7;
      FUN_0094c460(dVar9,dVar6);
      for (iVar1 = *(int *)(iVar2 + 0xc); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
        dStack_58 = dStack_58 * 0.5;
        dStack_60 = dStack_60 * 0.5;
        dVar11 = (double)**(int **)(iVar1 + 8);
        dVar9 = (double)(*(int **)(iVar1 + 8))[1];
        dVar10 = (dVar11 + dVar4) * 0.5;
        dVar6 = (dVar9 + dVar7) * 0.5;
        FUN_0094c9b0(dVar8,dVar5,dStack_60,dStack_58,(dVar10 + dVar4) * 0.5,(dVar6 + dVar7) * 0.5,
                     dVar10,dVar6);
        dStack_60 = dVar10 + dVar11;
        dStack_58 = dVar6 + dVar9;
        dVar4 = dVar11;
        dVar5 = dVar6;
        dVar7 = dVar9;
        dVar8 = dVar10;
      }
      FUN_0094c460(dVar8,dVar5);
      FUN_0094c460(dVar4,dVar7);
      FUN_0094c4f0();
      return;
    }
  }
  return;
}



void __thiscall FUN_0094cd90(int *param_1_00,int *param_1,int *param_2,int *param_4,int param_5)

{
  int iVar1;
  byte bVar2;
  byte bVar3;
  byte bVar4;
  byte bVar5;
  byte bVar6;
  byte bVar7;
  char cVar8;
  char cVar9;
  char cVar10;
  uint uVar11;
  undefined4 uVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  undefined4 uStack_58;
  undefined **ppuStack_44;
  undefined **local_40;
  int local_3c;
  undefined **local_38;
  undefined **local_34;
  undefined auStack_30 [12];
  undefined auStack_24 [4];
  undefined **ppuStack_20;
  undefined4 uStack_1c;
  undefined uStack_18;
  undefined4 uStack_14;
  undefined4 local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  uStack_8 = &LAB_00bdb4a8;
  local_c = ExceptionList;
  uVar11 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_c;
  local_3c = param_1_00[0x2a];
  if (local_3c != 0) {
    *(int *)(local_3c + 4) = *(int *)(local_3c + 4) + 1;
  }
  local_40 = wxPen::vftable;
  local_34 = (undefined **)param_1_00[0x2c];
  if (local_34 != (undefined **)0x0) {
    local_34[1] = local_34[1] + 1;
  }
  local_38 = wxBrush::vftable;
  local_4 = 1;
  bVar2 = (**(code **)(*param_2 + 0x10))(uVar11);
  bVar3 = (**(code **)(*param_2 + 0x14))();
  bVar4 = (**(code **)(*param_2 + 0x18))();
  bVar5 = (**(code **)(*param_4 + 0x10))();
  bVar6 = (**(code **)(*param_4 + 0x14))();
  bVar7 = (**(code **)(*param_4 + 0x18))();
  if ((param_5 == 0x20) || (param_5 == 0x10)) {
    iVar1 = param_1[2];
    iVar14 = (int)(iVar1 + (iVar1 >> 0x1f & 0xffU)) >> 8;
    if (iVar14 < 1) {
      iVar14 = 1;
    }
    if (iVar14 <= iVar1) {
      uVar11 = (uint)bVar3;
      ppuStack_44 = (undefined **)-iVar14;
      iVar15 = 0;
      iVar13 = iVar1;
      do {
        iVar13 = iVar13 - iVar14;
        iVar15 = iVar15 - (int)ppuStack_44;
        if (bVar5 < bVar2) {
          cVar8 = -(char)((int)(((uint)bVar2 - (uint)bVar5) * iVar15) / iVar1);
        }
        else {
          cVar8 = (char)((int)(((uint)bVar5 - (uint)bVar2) * iVar15) / iVar1);
        }
        if (bVar6 < bVar3) {
          cVar9 = -(char)((int)((uVar11 - bVar6) * iVar15) / iVar1);
        }
        else {
          cVar9 = (char)((int)((bVar6 - uVar11) * iVar15) / iVar1);
        }
        if (bVar7 < bVar4) {
          cVar10 = -(char)((int)(((uint)bVar4 - (uint)bVar7) * iVar15) / iVar1);
        }
        else {
          cVar10 = (char)((int)(((uint)bVar7 - (uint)bVar4) * iVar15) / iVar1);
        }
        uStack_1c = 0;
        local_4 = CONCAT31(local_4._1_3_,2);
        ppuStack_20 = wxColour::vftable;
        FUN_0093b2c0();
        (*(code *)ppuStack_20[10])(bVar2 + cVar8,bVar3 + cVar9,bVar4 + cVar10,0xff);
        uStack_14._0_1_ = 3;
        uVar12 = FUN_009566f0(auStack_30,1,100);
        uStack_14 = (void *)CONCAT31(uStack_14._1_3_,4);
        (**(code **)(*param_1_00 + 0x58))(uVar12);
        uStack_18 = 3;
        ppuStack_44 = wxObject::vftable;
        FUN_0083e850();
        uVar12 = FUN_0095d7e0(&local_34,100);
        uStack_18 = 5;
        (**(code **)(*param_1_00 + 0x60))(uVar12);
        uStack_1c = CONCAT31(uStack_1c._1_3_,3);
        FUN_008f7630();
        if (uStack_8 == (undefined *)0x20) {
          (**(code **)(*param_1_00 + 0x150))(((*param_1 - iVar14) - uVar11) + param_1[2]);
        }
        else {
          (**(code **)(*param_1_00 + 0x150))(*param_1 + uVar11,param_1[1],iVar14,param_1[3]);
        }
        local_4 = CONCAT31(local_4._1_3_,1);
        ppuStack_20 = wxObject::vftable;
        FUN_0083e850();
      } while (iVar14 <= iVar13);
    }
  }
  else {
    iVar1 = param_1[3];
    iVar14 = iVar1 / 0xff;
    if (iVar14 < 1) {
      iVar14 = 1;
    }
    if (0 < iVar1) {
      iVar15 = 0;
      iVar13 = iVar1;
      do {
        iVar13 = iVar13 - iVar14;
        iVar15 = iVar15 + iVar14;
        if (bVar5 < bVar2) {
          cVar8 = -(char)((int)(((uint)bVar2 - (uint)bVar5) * iVar15) / iVar1);
        }
        else {
          cVar8 = (char)((int)(((uint)bVar5 - (uint)bVar2) * iVar15) / iVar1);
        }
        if (bVar6 < bVar3) {
          cVar9 = -(char)((int)(((uint)bVar3 - (uint)bVar6) * iVar15) / iVar1);
        }
        else {
          cVar9 = (char)((int)(((uint)bVar6 - (uint)bVar3) * iVar15) / iVar1);
        }
        uStack_58 = CONCAT31(uStack_58._1_3_,bVar3 + cVar9);
        if (bVar7 < bVar4) {
          cVar9 = -(char)((int)(((uint)bVar4 - (uint)bVar7) * iVar15) / iVar1);
        }
        else {
          cVar9 = (char)((int)(((uint)bVar7 - (uint)bVar4) * iVar15) / iVar1);
        }
        FUN_004561e7(bVar2 + cVar8,uStack_58,bVar4 + cVar9,0xff);
        local_4._0_1_ = 6;
        uVar12 = FUN_009566f0(&ppuStack_20,1,100);
        local_4 = CONCAT31(local_4._1_3_,7);
        (**(code **)(*param_1_00 + 0x58))(uVar12);
        uStack_8._0_1_ = 6;
        local_34 = wxObject::vftable;
        FUN_0083e850();
        uVar12 = FUN_0095d7e0(auStack_24,100);
        uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,8);
        (**(code **)(*param_1_00 + 0x60))(uVar12);
        local_c = (void *)CONCAT31(local_c._1_3_,6);
        FUN_008f7630();
        if (param_2 == (int *)0x40) {
          (**(code **)(*param_1_00 + 0x150))(*param_1,param_1[1] + uStack_58);
        }
        else {
          (**(code **)(*param_1_00 + 0x150))
                    (*param_1,((param_1[1] - iVar14) - uStack_58) + param_1[3],param_1[2],iVar14);
        }
        local_4 = CONCAT31(local_4._1_3_,1);
        ppuStack_20 = wxObject::vftable;
        FUN_0083e850();
      } while (0 < iVar13);
    }
  }
  (**(code **)(*param_1_00 + 0x58))(&local_40);
  (**(code **)(*param_1_00 + 0x60))(&local_3c);
  local_c = (void *)((uint)local_c & 0xffffff00);
  FUN_008f7630();
  local_c = (void *)0xffffffff;
  FUN_0083e850();
  ExceptionList = uStack_14;
  return;
}



void FUN_0094d390(undefined4 *param_1)

{
  int iVar1;
  
  iVar1 = DAT_03238ccc;
  *param_1 = wxObject::vftable;
  param_1[1] = iVar1;
  *param_1 = wxBitmap::vftable;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  return;
}



int * __thiscall FUN_0094d3c0(int *param_1_00,int param_1,undefined4 param_3)

{
  uint uVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bea69b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  iVar2 = (**(code **)(**(int **)(param_1 + 8) + 0x5c))(uVar1);
  param_1_00[1] = (int)wxObject::vftable;
  iVar2 = *(int *)(iVar2 + 4);
  param_1_00[2] = iVar2;
  if (iVar2 != 0) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  param_1_00[1] = (int)wxPen::vftable;
  uStack_4 = 0;
  (**(code **)(**(int **)(*param_1_00 + 8) + 0x58))(param_3);
  ExceptionList = param_1_00;
  return param_1_00;
}



undefined4 * __thiscall FUN_0094d450(undefined4 *param_1_00,undefined4 param_1)

{
  byte bVar1;
  uint uVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  undefined local_1c [8];
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdb53a;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxDCImpl::vftable;
  param_1_00[3] = 0;
  bVar1 = FUN_0095ddd0(uVar2);
  *(undefined8 *)(param_1_00 + 0xc) = 0x3ff0000000000000;
  *(undefined8 *)(param_1_00 + 0xe) = 0x3ff0000000000000;
  *(undefined8 *)(param_1_00 + 0x10) = 0x3ff0000000000000;
  *(undefined8 *)(param_1_00 + 0x12) = 0x3ff0000000000000;
  *(undefined8 *)(param_1_00 + 0x14) = 0x3ff0000000000000;
  *(undefined8 *)(param_1_00 + 0x16) = 0x3ff0000000000000;
  *(byte *)(param_1_00 + 4) = *(byte *)(param_1_00 + 4) & 0xe2 | bVar1 & 1 | 2;
  param_1_00[5] = 0;
  param_1_00[6] = 0;
  param_1_00[7] = 0;
  param_1_00[8] = 0;
  param_1_00[9] = 0;
  param_1_00[10] = 0;
  param_1_00[0x18] = 1;
  param_1_00[0x19] = 1;
  param_1_00[0x1e] = 0;
  param_1_00[0x1f] = 0;
  param_1_00[0x20] = 0;
  param_1_00[0x21] = 0;
  param_1_00[0x22] = 0;
  param_1_00[0x23] = 0;
  param_1_00[0x24] = 0;
  param_1_00[0x25] = 0;
  param_1_00[0x26] = 5;
  param_1_00[0x27] = 0x6a;
  param_1_00[0x28] = 1;
  param_1_00[0x2a] = 0;
  param_1_00[0x29] = wxPen::vftable;
  local_4._0_1_ = 1;
  FUN_0095d530();
  local_4._0_1_ = 2;
  FUN_0095d530();
  local_4._0_1_ = 3;
  iVar3 = FUN_008f7e50(0xb);
  param_1_00[0x2f] = wxObject::vftable;
  iVar5 = *(int *)(iVar3 + 4);
  param_1_00[0x30] = iVar5;
  if (iVar5 != 0) {
    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
  }
  param_1_00[0x2f] = wxColour::vftable;
  param_1_00[0x31] = *(undefined4 *)(iVar3 + 8);
  *(undefined *)(param_1_00 + 0x32) = *(undefined *)(iVar3 + 0xc);
  *(undefined *)((int)param_1_00 + 0xc9) = *(undefined *)(iVar3 + 0xd);
  *(undefined *)((int)param_1_00 + 0xca) = *(undefined *)(iVar3 + 0xe);
  *(undefined *)((int)param_1_00 + 0xcb) = *(undefined *)(iVar3 + 0xf);
  *(undefined *)(param_1_00 + 0x33) = *(undefined *)(iVar3 + 0x10);
  local_4._0_1_ = 4;
  iVar3 = FUN_008f7e50(0x12);
  param_1_00[0x34] = wxObject::vftable;
  iVar5 = *(int *)(iVar3 + 4);
  param_1_00[0x35] = iVar5;
  if (iVar5 != 0) {
    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
  }
  param_1_00[0x34] = wxColour::vftable;
  param_1_00[0x36] = *(undefined4 *)(iVar3 + 8);
  *(undefined *)(param_1_00 + 0x37) = *(undefined *)(iVar3 + 0xc);
  *(undefined *)((int)param_1_00 + 0xdd) = *(undefined *)(iVar3 + 0xd);
  *(undefined *)((int)param_1_00 + 0xde) = *(undefined *)(iVar3 + 0xe);
  *(undefined *)((int)param_1_00 + 0xdf) = *(undefined *)(iVar3 + 0xf);
  *(undefined *)(param_1_00 + 0x38) = *(undefined *)(iVar3 + 0x10);
  param_1_00[0x3a] = 0;
  param_1_00[0x39] = wxFont::vftable;
  param_1_00[0x3c] = 0;
  param_1_00[0x3b] = wxPalette::vftable;
  local_4 = CONCAT31(local_4._1_3_,7);
  *(undefined *)(param_1_00 + 0x3d) = 0;
  param_1_00[2] = param_1;
  piVar4 = (int *)FUN_008f78a0(local_1c);
  iVar5 = *piVar4;
  piVar4 = (int *)FUN_008f7910(local_14);
  *(double *)(param_1_00 + 0x1a) = (double)iVar5 / (double)*piVar4;
  iVar5 = FUN_008f78a0(local_14);
  iVar3 = *(int *)(iVar5 + 4);
  iVar5 = FUN_008f7910(local_1c);
  iVar5 = *(int *)(iVar5 + 4);
  *(byte *)(param_1_00 + 4) = *(byte *)(param_1_00 + 4) & 0xeb;
  param_1_00[0x21] = 0;
  param_1_00[0x1f] = 0;
  param_1_00[0x20] = 0;
  param_1_00[0x1e] = 0;
  param_1_00[0x25] = 0;
  param_1_00[0x23] = 0;
  param_1_00[0x24] = 0;
  param_1_00[0x22] = 0;
  *(double *)(param_1_00 + 0x1c) = (double)iVar3 / (double)iVar5;
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_0094d6f0(int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 unaff_EBX;
  int iVar3;
  undefined4 uVar4;
  undefined4 uStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb570;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  if (cVar1 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\dcbase.cpp",0x27d,"wxDCImpl::DoDrawCheckMark","IsOk()",
                   L"invalid window dc");
    }
  }
  else {
    iVar3 = (param_4 + 1 + param_5) / 7;
    uVar4 = 100;
    uVar2 = (**(code **)(*param_1 + 0x7c))(iVar3,100);
    uVar2 = FUN_009566f0(uVar2,iVar3,uVar4);
    uStack_4 = 0;
    FUN_0094d3c0(param_1[2],uVar2);
    uStack_4 = CONCAT31(uStack_4._1_3_,2);
    FUN_0083e850();
    iVar3 = (param_4 * 4) / 10 + param_2;
    (**(code **)(*param_1 + 0x140))(param_2,param_5 / 2 + param_3,iVar3,param_5 + param_3);
    (**(code **)(*param_1 + 0x140))(iVar3,local_c,uStack_4,param_3);
    (**(code **)(*param_1 + 0x4c))(param_2,param_3);
    (**(code **)(*param_1 + 0x4c))(uStack_1c,unaff_EBX);
    uStack_4 = 0xffffffff;
    FUN_0094bbb0();
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_0094d870(int *param_1_00,int param_1,undefined4 *param_2,int param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  uint uVar1;
  int iVar2;
  void *pvVar3;
  int *piVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  undefined4 uVar8;
  int *piVar9;
  void *unaff_EBX;
  int iVar10;
  int iVar11;
  undefined4 unaff_retaddr;
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb598;
  local_c = ExceptionList;
  piVar4 = (int *)(DAT_0323f878 ^ (uint)&stack0xffffffd4);
  ExceptionList = &local_c;
  if (param_1 == 1) {
    (**(code **)(*param_1_00 + 0x184))(*param_2,param_3,param_4,param_5,param_6);
  }
  else {
    iVar11 = 0;
    iVar10 = 0;
    iVar5 = 0;
    if (0 < param_1) {
      do {
        iVar11 = iVar10;
        iVar10 = iVar11 + param_2[iVar5];
        iVar5 = iVar5 + 1;
      } while (iVar5 < param_1);
    }
    uVar1 = param_1 + -1 + iVar10;
    puVar6 = (undefined4 *)
             FUN_00823c23(-(uint)((int)((ulonglong)uVar1 * 8 >> 0x20) != 0) |
                          (uint)((ulonglong)uVar1 * 8));
    puVar7 = puVar6;
    if (puVar6 == (undefined4 *)0x0) {
      puVar6 = (undefined4 *)0x0;
    }
    else {
      while (uVar1 = uVar1 - 1, -1 < (int)uVar1) {
        *puVar7 = 0;
        puVar7[1] = 0;
        puVar7 = puVar7 + 2;
      }
    }
    if (0 < iVar10) {
      iVar5 = param_3 - (int)puVar6;
      puVar7 = puVar6;
      param_3 = iVar10;
      do {
        *puVar7 = *(undefined4 *)(iVar5 + (int)puVar7);
        puVar7[1] = *(undefined4 *)(iVar5 + 4 + (int)puVar7);
        puVar7 = puVar7 + 2;
        param_3 = param_3 + -1;
      } while (param_3 != 0);
    }
    if (1 < param_1) {
      iVar5 = param_1 + -1;
      iVar2 = iVar10 * 2;
      piVar9 = param_2 + param_1 + -2;
      iVar10 = iVar10 + iVar5;
      puVar7 = puVar6 + iVar2;
      do {
        iVar11 = iVar11 - *piVar9;
        *puVar7 = puVar6[iVar11 * 2];
        puVar7[1] = puVar6[iVar11 * 2 + 1];
        piVar9 = piVar9 + -1;
        iVar5 = iVar5 + -1;
        puVar7 = puVar7 + 2;
      } while (iVar5 != 0);
    }
    uVar8 = FUN_008f8330(0x24);
    FUN_0094d3c0(param_1_00[2],uVar8);
    iVar5 = 0;
    uStack_4 = 0;
    (**(code **)(*param_1_00 + 0x184))(iVar10,puVar6,param_4,param_5,param_6);
    FUN_0094bbb0();
    iVar10 = 0;
    if (0 < iStack_10) {
      do {
        pvVar3 = local_c;
        (**(code **)(*piVar4 + 0x17c))
                  (*(undefined4 *)((int)local_c + iVar10 * 4),puVar6 + iVar5 * 2,uStack_4,
                   unaff_retaddr);
        iVar5 = iVar5 + *(int *)((int)pvVar3 + iVar10 * 4);
        iVar10 = iVar10 + 1;
      } while (iVar10 < iStack_10);
    }
    FUN_00a3f66c(puVar6);
  }
  ExceptionList = unaff_EBX;
  return;
}



void FUN_0094da40(char *param_1)

{
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bdb5c0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  if (*param_1 == '\0') {
    local_8 = 0;
    if (*(char **)(param_1 + 4) != param_1 + 8) {
      FUN_0083ea60(param_1 + 8);
    }
  }
  ExceptionList = local_10;
  return;
}



undefined4 Catch_All_0094da9d(void)

{
  return 0x94da8b;
}



void __fastcall FUN_0094dab0(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdb5eb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0094da40(param_1,DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  *(undefined ***)(param_1 + 8) = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined * FUN_0094db10(undefined *param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bdb631;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_4 = 1;
  if (param_4 != 0) {
    *(int *)(param_4 + 4) = *(int *)(param_4 + 4) + 1;
    *(int *)(param_4 + 4) = *(int *)(param_4 + 4) + 1;
  }
  FUN_0083e850(uVar1);
  *(undefined4 *)(param_1 + 4) = param_2;
  *param_1 = 0;
  *(undefined ***)(param_1 + 8) = wxObject::vftable;
  *(int *)(param_1 + 0xc) = param_4;
  if (param_4 != 0) {
    *(int *)(param_4 + 4) = *(int *)(param_4 + 4) + 1;
  }
  *(undefined ***)(param_1 + 8) = wxPen::vftable;
  FUN_0094dab0();
  local_4 = local_4 & 0xffffff00;
  FUN_0083e850(uVar1);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0094dc00(int *param_1_00,int *param_1,int *param_2,int *param_3,int *param_4)

{
  double dVar1;
  byte bVar2;
  byte bVar3;
  byte bVar4;
  byte bVar5;
  byte bVar6;
  byte bVar7;
  int iVar8;
  int iVar9;
  int unaff_EDI;
  float10 fVar10;
  float10 fVar11;
  undefined **local_e4;
  undefined *local_e0;
  uint uStack_dc;
  undefined uStack_cc;
  int iStack_c4;
  undefined8 uStack_b8;
  undefined **local_b0;
  int local_ac;
  undefined4 local_a8;
  undefined auStack_a4 [8];
  undefined4 uStack_9c;
  undefined4 uStack_98;
  undefined **ppuStack_94;
  undefined4 uStack_90;
  double dStack_80;
  double dStack_78;
  double dStack_70;
  double dStack_68;
  double dStack_60;
  double dStack_58;
  double dStack_50;
  double dStack_48;
  double dStack_40;
  undefined local_38 [8];
  undefined **ppuStack_30;
  double dStack_28;
  undefined8 uStack_20;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00bdb68c;
  local_14 = ExceptionList;
  uStack_dc = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_14;
  local_e0 = (undefined *)param_1_00[0x2a];
  if (local_e0 != (undefined *)0x0) {
    *(int *)((int)local_e0 + 4) = *(int *)((int)local_e0 + 4) + 1;
  }
  local_b0 = wxPen::vftable;
  local_a8 = (undefined **)&local_e4;
  local_c = 0;
  if (local_e0 != (undefined *)0x0) {
    *(int *)((int)local_e0 + 4) = *(int *)((int)local_e0 + 4) + 1;
  }
  local_e4 = wxPen::vftable;
  local_ac = (int)local_e0;
  FUN_0094db10(local_38,param_1_00 + 0x29);
  local_c = CONCAT31(local_c._1_3_,1);
  local_e0 = (undefined *)0x94dcbe;
  bVar2 = (**(code **)(*param_3 + 0x10))();
  local_e0 = (undefined *)0x94dccb;
  bVar3 = (**(code **)(*param_3 + 0x14))();
  local_e0 = (undefined *)0x94dcd8;
  bVar4 = (**(code **)(*param_3 + 0x18))();
  local_e0 = (undefined *)0x94dce8;
  bVar5 = (**(code **)(*param_2 + 0x10))();
  local_e0 = (undefined *)0x94dcf5;
  bVar6 = (**(code **)(*param_2 + 0x14))();
  local_e0 = (undefined *)0x94dd02;
  bVar7 = (**(code **)(*param_2 + 0x18))();
  iVar8 = param_1[3];
  dVar1 = (double)(param_1[2] / 2);
  dStack_78 = (double)(iVar8 / 2);
  dStack_80 = dStack_78;
  if (dVar1 < dStack_78) {
    dStack_80 = dVar1;
  }
  iStack_c4 = 0;
  dStack_60 = (double)*param_4 - dVar1;
  uStack_20 = (double)param_4[1] - dStack_78;
  dStack_48 = dVar1;
  if (0 < param_1[2]) {
    do {
      iVar9 = 0;
      if (0 < iVar8) {
        dStack_70 = ((double)iStack_c4 - dVar1) - dStack_60;
        dStack_70 = dStack_70 * dStack_70;
        dStack_40 = (double)((uint)bVar5 - (uint)bVar2);
        dStack_50 = (double)(uint)bVar2;
        dStack_28 = (double)((uint)bVar6 - (uint)bVar3);
        dStack_68 = (double)(uint)bVar3;
        dStack_58 = (double)((uint)bVar7 - (uint)bVar4);
        uStack_b8 = (double)(uint)bVar4;
        do {
          local_e0 = (undefined *)0x94de26;
          fVar10 = (float10)FUN_00a4d440();
          fVar11 = (float10)100.0;
          fVar10 = (((float10)dStack_80 - fVar10) * fVar11) / (float10)dStack_80;
          if (fVar10 < (float10)0) {
            fVar10 = (float10)0;
          }
          uStack_90 = 0;
          uStack_cc = (undefined)
                      (int)ROUND(((float10)dStack_40 * fVar10) / fVar11 + (float10)dStack_50);
          local_a8 = (undefined **)CONCAT31(local_a8._1_3_,uStack_cc);
          uStack_cc = (undefined)
                      (int)ROUND(((float10)dStack_28 * fVar10) / fVar11 + (float10)dStack_68);
          uStack_98 = CONCAT31(uStack_98._1_3_,uStack_cc);
          uStack_cc = (undefined)
                      (int)ROUND((fVar10 * (float10)dStack_58) / fVar11 + (float10)uStack_b8);
          uStack_9c = (undefined **)CONCAT31(uStack_9c._1_3_,uStack_cc);
          local_c = CONCAT31(local_c._1_3_,2);
          ppuStack_94 = wxColour::vftable;
          local_e0 = (undefined *)0x94df0c;
          FUN_0093b2c0();
          local_e0 = (undefined *)0xff;
          local_e4 = uStack_9c;
          (*(code *)ppuStack_94[10])(local_a8,uStack_98);
          uStack_20._0_5_ = CONCAT14(3,(undefined4)uStack_20);
          FUN_009566f0(auStack_a4,1,100);
          uStack_20._0_5_ = CONCAT14(4,(undefined4)uStack_20);
          (**(code **)(*param_1_00 + 0x58))((int)&uStack_b8 + 4);
          uStack_20._0_1_ = 3;
          uStack_b8 = (double)CONCAT44(uStack_b8._4_4_,wxObject::vftable);
          FUN_0083e850();
          uStack_20 = (double)CONCAT71(uStack_20._1_7_,1);
          local_a8 = wxObject::vftable;
          FUN_0083e850();
          (**(code **)(*param_1_00 + 0x13c))(*param_1 + unaff_EDI,param_1[1] + iVar9);
          iVar8 = param_1[3];
          iVar9 = iVar9 + 1;
          dVar1 = dStack_48;
        } while (iVar9 < iVar8);
      }
      iStack_c4 = iStack_c4 + 1;
    } while (iStack_c4 < param_1[2]);
  }
  local_e0 = local_38;
  local_c._0_1_ = 5;
  local_e4 = (undefined **)0x94dff0;
  FUN_0094da40();
  local_c = (uint)local_c._1_3_ << 8;
  ppuStack_30 = wxObject::vftable;
  local_e0 = (undefined *)0x94e013;
  FUN_0083e850();
  local_c = 0xffffffff;
  local_b0 = wxObject::vftable;
  local_e0 = (undefined *)0x94e02b;
  FUN_0083e850();
  ExceptionList = local_14;
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 __thiscall FUN_0094e050(int *param_1_00,int param_1,int param_2)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined **ppuVar5;
  uint uVar6;
  int iStack_44;
  int local_40;
  ushort auStack_3c [2];
  uint local_38;
  undefined auStack_34 [4];
  undefined auStack_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb6c8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  uVar6 = *(uint *)(param_1 + 0x14);
  local_40 = 0;
  *(undefined4 *)(param_2 + 4) = 0;
  local_38 = uVar6;
  FUN_0086a400(0,uVar6);
  if (DAT_0323ae98 == (void *)0x0) {
LAB_0094e0d4:
    DAT_0323ae98 = (void *)FUN_00823c23(0x400);
  }
  else {
    if ((NAN(*(double *)(param_1_00 + 0x14)) || NAN(_DAT_0323ae90)) !=
        (*(double *)(param_1_00 + 0x14) == _DAT_0323ae90)) {
      uVar4 = (**(code **)(*param_1_00 + 0x54))(uVar3);
      cVar2 = FUN_0094a5b0(uVar4);
      if (cVar2 != '\0') goto LAB_0094e11c;
    }
    if (DAT_0323ae98 == (void *)0x0) goto LAB_0094e0d4;
  }
  _memset(DAT_0323ae98,0,0x400);
  ppuVar5 = (undefined **)(**(code **)(*param_1_00 + 0x54))();
  if (ppuVar5 != &PTR_vftable_0323ae88) {
    FUN_0083ea60(ppuVar5);
  }
  _DAT_0323ae90 = *(double *)(param_1_00 + 0x14);
LAB_0094e11c:
  uVar3 = 0;
  if (uVar6 != 0) {
    do {
      FUN_0081feb2(auStack_3c,uVar3);
      uVar6 = (uint)auStack_3c[0];
      if ((0xff < uVar6) || (iVar1 = *(int *)((int)DAT_0323ae98 + uVar6 * 4), iVar1 == 0)) {
        uStack_18 = 7;
        pvStack_14 = (void *)0x0;
        uStack_1c = 1;
        uStack_2c = (uint)auStack_3c[0];
        uStack_4 = 2;
        (**(code **)(*param_1_00 + 0xa4))(auStack_30,&iStack_44,auStack_34,0,0,0);
        uStack_4 = 0xffffffff;
        _free(pvStack_14);
        if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_2c);
        }
        uStack_18 = 7;
        uStack_1c = 0;
        uStack_2c = uStack_2c & 0xffff0000;
        iVar1 = iStack_44;
        if (uVar6 < 0x100) {
          *(int *)((int)DAT_0323ae98 + uVar6 * 4) = iStack_44;
        }
      }
      iStack_44 = iVar1;
      local_40 = local_40 + iStack_44;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_2 + 4) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                     "uiIndex < m_nCount",0);
      }
      *(int *)(*(int *)(param_2 + 8) + uVar3 * 4) = local_40;
      uVar3 = uVar3 + 1;
    } while (uVar3 < local_38);
  }
  ExceptionList = local_c;
  return 1;
}



void __thiscall
FUN_0094e260(int *param_1_00,int param_1,int *param_2,int *param_3,int *param_4,undefined4 param_5)

{
  short **ppsVar1;
  uint uVar2;
  short *psVar3;
  uint uVar4;
  short **ppsVar5;
  int iVar6;
  short *psVar7;
  short **ppsVar8;
  short **ppsVar9;
  int local_80;
  int local_7c;
  int local_78;
  int local_74;
  undefined4 local_70;
  int *local_6c;
  int *local_68;
  int *local_64;
  int *local_60;
  int local_5c;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdb700;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff70;
  ExceptionList = &local_c;
  local_60 = param_2;
  local_68 = param_3;
  local_64 = param_4;
  local_70 = param_5;
  local_74 = 0;
  local_80 = 0;
  local_7c = 0;
  local_78 = 0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  uVar2 = *(uint *)(param_1 + 0x18);
  local_4 = 0;
  ppsVar1 = (short **)(param_1 + 4);
  ppsVar9 = ppsVar1;
  if (7 < uVar2) {
    ppsVar9 = (short **)*ppsVar1;
  }
  local_6c = param_1_00;
  if (ppsVar9 != (short **)0x0) {
    ppsVar5 = ppsVar1;
    if (7 < uVar2) {
      ppsVar5 = (short **)*ppsVar1;
    }
    if (ppsVar5 <= ppsVar9) {
      ppsVar5 = ppsVar1;
      if (7 < uVar2) {
        ppsVar5 = (short **)*ppsVar1;
      }
      if (ppsVar9 <= (short **)((int)ppsVar5 + *(int *)(param_1 + 0x14) * 2)) goto LAB_0094e340;
    }
  }
  FUN_00a3fb10(uVar4);
LAB_0094e340:
  do {
    uVar2 = *(uint *)(param_1 + 0x18);
    ppsVar5 = ppsVar1;
    if (7 < uVar2) {
      ppsVar5 = (short **)*ppsVar1;
    }
    iVar6 = *(int *)(param_1 + 0x14) * 2;
    ppsVar5 = (short **)(iVar6 + (int)ppsVar5);
    if (ppsVar5 == (short **)0x0) {
LAB_0094e37d:
      FUN_00a3fb10(uVar4);
    }
    else {
      ppsVar8 = ppsVar1;
      if (7 < uVar2) {
        ppsVar8 = (short **)*ppsVar1;
      }
      if (ppsVar5 < ppsVar8) goto LAB_0094e37d;
      ppsVar8 = ppsVar1;
      if (7 < uVar2) {
        ppsVar8 = (short **)*ppsVar1;
      }
      if ((short **)(iVar6 + (int)ppsVar8) < ppsVar5) goto LAB_0094e37d;
    }
    if ((param_1 != -4) && (param_1 == 0)) {
      FUN_00a3fb10(uVar4);
    }
    if (ppsVar9 == ppsVar5) {
LAB_0094e40a:
      if (local_20 == 0) {
        if ((local_7c == 0) && (local_7c = local_78, local_78 == 0)) {
          local_54 = local_54 & 0xffff0000;
          local_40 = 7;
          local_44 = 0;
          psVar3 = &DAT_00d5ba64;
          do {
            psVar7 = psVar3;
            psVar3 = psVar7 + 1;
          } while (*psVar7 != 0);
          FID_conflict_assign(&DAT_00d5ba64,(int)(psVar7 + -0x6add32) >> 1);
          local_3c = (void *)0x0;
          local_4._0_1_ = 1;
          (**(code **)(*local_6c + 0xa4))(local_58,0,&local_7c,0,0,local_70);
          local_4 = (uint)local_4._1_3_ << 8;
          _free(local_3c);
          if (7 < local_40) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_54);
          }
        }
        local_80 = local_80 + local_7c;
      }
      else {
        (**(code **)(*local_6c + 0xa4))(local_34,&local_5c,&local_78,0,0,local_70);
        if (local_74 < local_5c) {
          local_74 = local_5c;
        }
        local_80 = local_80 + local_78;
      }
      uVar2 = *(uint *)(param_1 + 0x18);
      ppsVar5 = ppsVar1;
      if (7 < uVar2) {
        ppsVar5 = (short **)*ppsVar1;
      }
      iVar6 = *(int *)(param_1 + 0x14) * 2;
      ppsVar5 = (short **)(iVar6 + (int)ppsVar5);
      if (ppsVar5 == (short **)0x0) {
LAB_0094e546:
        FUN_00a3fb10();
      }
      else {
        ppsVar8 = ppsVar1;
        if (7 < uVar2) {
          ppsVar8 = (short **)*ppsVar1;
        }
        if (ppsVar5 < ppsVar8) goto LAB_0094e546;
        ppsVar8 = ppsVar1;
        if (7 < uVar2) {
          ppsVar8 = (short **)*ppsVar1;
        }
        if ((short **)(iVar6 + (int)ppsVar8) < ppsVar5) goto LAB_0094e546;
      }
      if ((param_1 != -4) && (param_1 == 0)) {
        FUN_00a3fb10();
      }
      if (ppsVar9 == ppsVar5) {
        if (local_60 != (int *)0x0) {
          *local_60 = local_74;
        }
        if (local_68 != (int *)0x0) {
          *local_68 = local_80;
        }
        if (local_64 != (int *)0x0) {
          *local_64 = local_78;
        }
        _free(local_18);
        if (7 < local_1c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_30);
        }
        ExceptionList = local_c;
        ___security_check_cookie_4();
        return;
      }
      FUN_00432156();
    }
    else {
      if (param_1 != -4) {
        if (param_1 == 0) {
          FUN_00a3fb10(uVar4);
        }
        if (*(uint *)(param_1 + 0x18) < 8) {
          iVar6 = param_1 + 4;
        }
        else {
          iVar6 = *(int *)(param_1 + 4);
        }
        if ((short **)(iVar6 + *(int *)(param_1 + 0x14) * 2) <= ppsVar9) {
          FUN_00a3fb10();
        }
      }
      if (*(short *)ppsVar9 == 10) goto LAB_0094e40a;
      if (param_1 != -4) {
        if (param_1 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_1 + 0x18) < 8) {
          iVar6 = param_1 + 4;
        }
        else {
          iVar6 = *(int *)(param_1 + 4);
        }
        if ((short **)(iVar6 + *(int *)(param_1 + 0x14) * 2) <= ppsVar9) {
          FUN_00a3fb10();
        }
      }
      FID_conflict_append(1,*(short *)ppsVar9);
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar6 = param_1 + 4;
      }
      else {
        iVar6 = *(int *)(param_1 + 4);
      }
      if ((short **)(iVar6 + *(int *)(param_1 + 0x14) * 2) <= ppsVar9) {
        FUN_00a3fb10();
      }
    }
    ppsVar9 = (short **)((int)ppsVar9 + 2);
  } while( true );
}



void __thiscall FUN_0094e610(int *param_1)

{
  uint uVar1;
  undefined4 param_5;
  undefined4 param_6;
  undefined *puVar2;
  undefined *puVar3;
  undefined4 uVar4;
  undefined local_38 [4];
  undefined local_34 [4];
  uint local_30;
  void *pvStack_2c;
  void *pvStack_24;
  undefined4 *puStack_14;
  int *piStack_10;
  undefined4 *local_c;
  undefined4 *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = (undefined4 *)&LAB_00be4938;
  local_c = (undefined4 *)ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d5ba68);
  uVar4 = 0;
  puVar3 = local_34;
  puVar2 = local_38;
  local_4 = 0;
  (**(code **)(*param_1 + 0xa4))(&local_30,param_6,puVar2,puVar3,param_5,0,uVar1);
  _free(pvStack_2c);
  if (7 < local_30) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uVar4);
  }
  if (puStack_14 != (undefined4 *)0x0) {
    *puStack_14 = puVar2;
  }
  if (piStack_10 != (int *)0x0) {
    *piStack_10 = (int)puVar2 - (int)puVar3;
  }
  if (local_c != (undefined4 *)0x0) {
    *local_c = puVar3;
  }
  if (puStack_8 != (undefined4 *)0x0) {
    *puStack_8 = 0;
  }
  ExceptionList = pvStack_24;
  return;
}



void __thiscall
FUN_0094e6e0(int param_1_00,int param_1,int *param_2,int *param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  short **ppsVar1;
  uint uVar2;
  uint uVar3;
  char cVar4;
  short **ppsVar5;
  short **ppsVar6;
  undefined4 uVar7;
  int iVar8;
  int iVar9;
  short **ppsVar10;
  int iVar11;
  int iVar12;
  int unaff_retaddr;
  uint uStack_94;
  int iVar13;
  int local_80;
  int iStack_7c;
  int iStack_78;
  int iStack_74;
  int iStack_70;
  int local_6c;
  int *piStack_68;
  int iStack_64;
  undefined **local_60;
  uint uStack_5c;
  int local_58;
  int local_54;
  int iStack_50;
  int local_4c;
  undefined auStack_48 [4];
  undefined2 uStack_44;
  uint uStack_40;
  void *pvStack_3c;
  int iStack_34;
  void *pvStack_30;
  undefined4 uStack_2c;
  undefined uStack_1c;
  undefined4 uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  uint uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb740;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  uStack_94 = DAT_0323f878 ^ (uint)&stack0xffffff70;
  ExceptionList = &local_c;
  local_54 = param_6;
  local_80 = param_1;
  local_6c = param_1_00;
  (**(code **)(**(int **)(param_1_00 + 8) + 0xa8))(param_1,&local_58,&local_60,&local_4c,0);
  cVar4 = (**(code **)(*param_2 + 0x10))();
  iVar13 = local_6c;
  iVar12 = iStack_74;
  if (cVar4 != '\0') {
    iVar12 = param_2[1];
    if (iVar12 == 0) {
      iVar8 = 0;
    }
    else {
      iVar8 = *(int *)(iVar12 + 8);
    }
    iVar13 = local_6c + iVar8;
    if (iVar12 == 0) {
      iVar12 = 0;
    }
    else {
      iVar12 = *(int *)(iVar12 + 0xc);
    }
  }
  uStack_5c = uStack_4 & 0x200;
  if (uStack_5c == 0) {
    if ((uStack_4 & 0x100) == 0) {
      iVar8 = *param_3;
    }
    else {
      iVar8 = ((param_3[2] - iVar13) + *param_3 * 2) / 2;
    }
  }
  else {
    iVar8 = (param_3[2] - iVar13) + -1 + *param_3;
  }
  if ((uStack_4 & 0x400) == 0) {
    if ((uStack_4 & 0x800) == 0) {
      iVar9 = param_3[1];
    }
    else {
      iVar9 = ((param_3[3] - iVar12) + param_3[1] * 2) / 2;
    }
  }
  else {
    iVar9 = ((param_3[3] + param_3[1]) - iVar12) + -1;
  }
  local_54 = iVar9;
  iStack_50 = iVar13;
  local_4c = iVar8;
  cVar4 = (**(code **)(*param_2 + 0x10))();
  if (cVar4 != '\0') {
    (**(code **)(**(int **)(local_80 + 8) + 0x164))(param_2,iVar8,iVar9,1);
    if (param_2[1] == 0) {
      iVar11 = 0;
    }
    else {
      iVar11 = *(int *)(param_2[1] + 8);
    }
    iVar13 = iVar13 - (iVar11 + 4);
    iVar8 = iVar8 + iVar11 + 4;
    iVar9 = iVar9 + (iVar12 - iStack_74) / 2;
  }
  iStack_78 = 0;
  iStack_7c = 0;
  iStack_70 = 0;
  pvStack_30 = (void *)0x7;
  iStack_34 = 0;
  uStack_44 = 0;
  uStack_2c = 0;
  uVar2 = *(uint *)(uStack_94 + 0x18);
  uStack_18 = 0;
  ppsVar1 = (short **)(uStack_94 + 4);
  ppsVar10 = ppsVar1;
  if (7 < uVar2) {
    ppsVar10 = (short **)*ppsVar1;
  }
  if (ppsVar10 != (short **)0x0) {
    ppsVar5 = ppsVar1;
    if (7 < uVar2) {
      ppsVar5 = (short **)*ppsVar1;
    }
    if (ppsVar5 <= ppsVar10) {
      ppsVar5 = ppsVar1;
      if (7 < uVar2) {
        ppsVar5 = (short **)*ppsVar1;
      }
      uVar2 = uStack_94;
      if (ppsVar10 <= (short **)((int)ppsVar5 + *(int *)(uStack_94 + 0x14) * 2)) goto LAB_0094e900;
    }
  }
  FUN_00a3fb10();
  uVar2 = uStack_94;
LAB_0094e900:
  do {
    uVar3 = *(uint *)(uVar2 + 0x18);
    ppsVar5 = ppsVar1;
    if (7 < uVar3) {
      ppsVar5 = (short **)*ppsVar1;
    }
    iVar12 = *(int *)(uVar2 + 0x14) * 2;
    ppsVar5 = (short **)((int)ppsVar5 + iVar12);
    if (ppsVar5 == (short **)0x0) {
LAB_0094e93c:
      FUN_00a3fb10();
    }
    else {
      ppsVar6 = ppsVar1;
      if (7 < uVar3) {
        ppsVar6 = (short **)*ppsVar1;
      }
      if (ppsVar5 < ppsVar6) goto LAB_0094e93c;
      ppsVar6 = ppsVar1;
      if (7 < uVar3) {
        ppsVar6 = (short **)*ppsVar1;
      }
      if ((short **)((int)ppsVar6 + iVar12) < ppsVar5) goto LAB_0094e93c;
    }
    if ((uVar2 != 0xfffffffc) && (uVar2 == 0)) {
      FUN_00a3fb10();
    }
    if (ppsVar10 == ppsVar5) {
LAB_0094eac5:
      iVar12 = iVar8;
      if (iStack_34 != 0) {
        if ((uStack_4 & 0x300) != 0) {
          (**(code **)(**(int **)(local_80 + 8) + 0xa4))(auStack_48,&iStack_64,0,0,0,0);
          if (uStack_5c == 0) {
            iVar12 = (iVar13 - iStack_64) / 2 + iVar8;
          }
          else {
            iVar12 = (iVar8 - iStack_64) + iVar13;
          }
        }
        (**(code **)(**(int **)(local_80 + 8) + 0x168))(auStack_48,iVar12,iVar9);
      }
      iVar9 = iVar9 + (int)local_60;
      if (iVar9 == iStack_70) {
        iStack_78 = iStack_78 + iVar12;
        iStack_7c = iStack_7c + iVar12;
      }
      uVar3 = *(uint *)(uVar2 + 0x18);
      ppsVar5 = ppsVar1;
      if (7 < uVar3) {
        ppsVar5 = (short **)*ppsVar1;
      }
      iVar12 = *(int *)(uVar2 + 0x14) * 2;
      ppsVar5 = (short **)((int)ppsVar5 + iVar12);
      if (ppsVar5 == (short **)0x0) {
LAB_0094eb96:
        FUN_00a3fb10();
      }
      else {
        ppsVar6 = ppsVar1;
        if (7 < uVar3) {
          ppsVar6 = (short **)*ppsVar1;
        }
        if (ppsVar5 < ppsVar6) goto LAB_0094eb96;
        ppsVar6 = ppsVar1;
        if (7 < uVar3) {
          ppsVar6 = (short **)*ppsVar1;
        }
        if ((short **)((int)ppsVar6 + iVar12) < ppsVar5) goto LAB_0094eb96;
      }
      if ((uVar2 != 0xfffffffc) && (uVar2 == 0)) {
        FUN_00a3fb10();
      }
      iVar12 = local_80;
      if (ppsVar10 == ppsVar5) {
        if (iStack_78 != iStack_7c) {
          uVar7 = (**(code **)(**(int **)(local_80 + 8) + 0x7c))();
          uVar7 = FUN_009566f0(uVar7,0,100);
          uStack_18 = CONCAT31(uStack_18._1_3_,1);
          (**(code **)(**(int **)(iVar12 + 8) + 0x58))(uVar7);
          uStack_1c = 0;
          local_60 = wxObject::vftable;
          FUN_0083e850();
          (**(code **)(**(int **)(iVar12 + 8) + 0x140))
                    (iStack_7c,iStack_74 + -2,local_80,iStack_74 + -2);
        }
        iVar11 = local_4c;
        iVar12 = local_54;
        iVar13 = local_80;
        if (piStack_68 != (int *)0x0) {
          *piStack_68 = iVar8;
          piStack_68[1] = iVar9 - iStack_74;
          piStack_68[2] = local_6c;
          piStack_68[3] = iStack_74;
        }
        (**(code **)(**(int **)(local_80 + 8) + 0x4c))(local_4c,local_54);
        (**(code **)(**(int **)(iVar13 + 8) + 0x4c))(local_58 + iVar11,iVar12 + iVar8);
        _free(pvStack_3c);
        if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_54);
        }
        ExceptionList = pvStack_30;
        ___security_check_cookie_4();
        return;
      }
      FUN_00432156();
    }
    else {
      if (uVar2 != 0xfffffffc) {
        if (uVar2 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(uVar2 + 0x18) < 8) {
          iVar12 = uVar2 + 4;
        }
        else {
          iVar12 = *(int *)(uVar2 + 4);
        }
        if ((short **)(iVar12 + *(int *)(uVar2 + 0x14) * 2) <= ppsVar10) {
          FUN_00a3fb10();
        }
      }
      if (*(short *)ppsVar10 == 10) goto LAB_0094eac5;
      uVar3 = *(uint *)(uVar2 + 0x18);
      ppsVar5 = ppsVar1;
      if (7 < uVar3) {
        ppsVar5 = (short **)*ppsVar1;
      }
      if (ppsVar5 == (short **)0x0) {
LAB_0094e9cb:
        FUN_00a3fb10();
      }
      else {
        ppsVar6 = ppsVar1;
        if (7 < uVar3) {
          ppsVar6 = (short **)*ppsVar1;
        }
        if (ppsVar5 < ppsVar6) goto LAB_0094e9cb;
        ppsVar6 = ppsVar1;
        if (7 < uVar3) {
          ppsVar6 = (short **)*ppsVar1;
        }
        if ((short **)((int)ppsVar6 + *(int *)(uVar2 + 0x14) * 2) < ppsVar5) goto LAB_0094e9cb;
      }
      if ((uVar2 != 0xfffffffc) && (uVar2 == 0)) {
        FUN_00a3fb10();
      }
      iVar12 = local_80;
      if ((int)ppsVar10 - (int)ppsVar5 >> 1 == unaff_retaddr) {
        (**(code **)(**(int **)(local_80 + 8) + 0xa4))(auStack_48,&iStack_78,0,0,0,0);
        if (uVar2 != 0xfffffffc) {
          if (uVar2 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(uVar2 + 0x18) < 8) {
            iVar11 = uVar2 + 4;
          }
          else {
            iVar11 = *(int *)(uVar2 + 4);
          }
          if ((short **)(iVar11 + *(int *)(uVar2 + 0x14) * 2) <= ppsVar10) {
            FUN_00a3fb10();
          }
        }
        FID_conflict_append(1,*(short *)ppsVar10);
        (**(code **)(**(int **)(iVar12 + 8) + 0xa4))(&local_60,&uStack_94,0,0,0,0);
        iStack_70 = iVar9 + (int)local_60;
      }
      else {
        if (uVar2 != 0xfffffffc) {
          if (uVar2 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(uVar2 + 0x18) < 8) {
            iVar12 = uVar2 + 4;
          }
          else {
            iVar12 = *(int *)(uVar2 + 4);
          }
          if ((short **)(iVar12 + *(int *)(uVar2 + 0x14) * 2) <= ppsVar10) {
            FUN_00a3fb10();
          }
        }
        FID_conflict_append(1,*(short *)ppsVar10);
      }
    }
    if (uVar2 != 0xfffffffc) {
      if (uVar2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(uVar2 + 0x18) < 8) {
        iVar12 = uVar2 + 4;
      }
      else {
        iVar12 = *(int *)(uVar2 + 4);
      }
      if ((short **)(iVar12 + *(int *)(uVar2 + 0x14) * 2) <= ppsVar10) {
        FUN_00a3fb10();
      }
    }
    ppsVar10 = (short **)((int)ppsVar10 + 2);
  } while( true );
}



undefined ** FUN_0094ed00(void)

{
  return &PTR_u_wxMSWDCImpl_0323af3c;
}



undefined ** FUN_0094ed10(void)

{
  return &PTR_u_wxGDIDLLsCleanupModule_0323af5c;
}



void __fastcall FUN_0094ed20(int param_1)

{
  tagRECT local_10;
  
  GetClipBox(*(HDC *)(param_1 + 0x108),&local_10);
  *(LONG *)(param_1 + 0x88) = local_10.left;
  *(LONG *)(param_1 + 0x8c) = local_10.top;
  *(LONG *)(param_1 + 0x90) = local_10.right;
  *(LONG *)(param_1 + 0x94) = local_10.bottom;
  return;
}



undefined4 __fastcall FUN_0094ed70(int param_1)

{
  int iVar1;
  
  iVar1 = GetDeviceCaps(*(HDC *)(param_1 + 0x108),2);
  if ((iVar1 != 1) && (iVar1 != 2)) {
    return 0;
  }
  return 1;
}



void __fastcall FUN_0094eda0(int param_1)

{
  GetDeviceCaps(*(HDC *)(param_1 + 0x108),0xc);
  return;
}



void __thiscall FUN_0094edb0(int *param_1_00,int param_1,int param_2)

{
  undefined4 unaff_EBX;
  undefined4 unaff_retaddr;
  
  FUN_0095dd50(param_1_00[0x42],param_1 + -0x7ffffff,param_2,param_1 + 0x7ffffff,param_2);
  FUN_0095dd50(param_1_00[0x42],param_1,param_2 + -0x7ffffff,param_1,param_2 + 0x7ffffff);
  (**(code **)(*param_1_00 + 0x4c))(param_1 + -0x7ffffff,param_2 + -0x7ffffff);
  (**(code **)(*param_1_00 + 0x4c))(unaff_retaddr,unaff_EBX);
  return;
}



void __thiscall
FUN_0094ee30(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  FUN_0095dd50(param_1_00[0x42],param_1,param_2,param_3,param_4);
  (**(code **)(*param_1_00 + 0x4c))(param_1,param_2);
  (**(code **)(*param_1_00 + 0x4c))(param_3,param_4);
  return;
}



void __fastcall FUN_0094ee80(HDC *param_1)

{
  if (param_1[3] != (HDC)0xffffffff) {
    SetTextColor(param_1[2],(COLORREF)param_1[3]);
  }
  if (param_1[4] != (HDC)0xffffffff) {
    SetBkColor(param_1[2],(COLORREF)param_1[4]);
  }
  if (param_1[1] != (HDC)0x0) {
    SetBkMode(*param_1,(int)param_1[1]);
  }
  return;
}



void __thiscall FUN_0094eec0(int *param_1_00,int param_1,int param_2,int param_3,int param_4)

{
  tagRECT local_10;
  
  local_10.bottom = param_4 + param_2;
  local_10.left = param_1;
  local_10.top = param_2;
  local_10.right = param_1 + param_3;
  DrawFrameControl((HDC)param_1_00[0x42],&local_10,2,1);
  (**(code **)(*param_1_00 + 0x4c))(param_1,param_2);
  (**(code **)(*param_1_00 + 0x4c))(param_1 + param_3,local_10.bottom);
  return;
}



void __thiscall FUN_0094ef30(int *param_1_00,uint param_1,POINT *param_2,int param_3,int param_4)

{
  POINT *apt;
  uint uVar1;
  int iVar2;
  POINT *pPVar3;
  
  if ((param_3 == 0) && (param_4 == 0)) {
    iVar2 = 0;
    if (0 < (int)param_1) {
      do {
        (**(code **)(*param_1_00 + 0x4c))(param_2[iVar2].x,param_2[iVar2].y);
        iVar2 = iVar2 + 1;
      } while (iVar2 < (int)param_1);
    }
    Polyline((HDC)param_1_00[0x42],param_2,param_1);
    return;
  }
  apt = (POINT *)FUN_00823c23(-(uint)((int)((ulonglong)param_1 * 8 >> 0x20) != 0) |
                              (uint)((ulonglong)param_1 * 8));
  if (0 < (int)param_1) {
    uVar1 = param_1;
    pPVar3 = apt;
    do {
      pPVar3->x = *(int *)(((int)param_2 - (int)apt) + (int)pPVar3) + param_3;
      iVar2 = *(int *)(((int)param_2 - (int)apt) + 4 + (int)pPVar3) + param_4;
      pPVar3->y = iVar2;
      (**(code **)(*param_1_00 + 0x4c))(pPVar3->x,iVar2);
      pPVar3 = pPVar3 + 1;
      uVar1 = uVar1 - 1;
    } while (uVar1 != 0);
  }
  Polyline((HDC)param_1_00[0x42],apt,param_1);
  FUN_00a3f66c(apt);
  return;
}



void __thiscall FUN_0094f010(int param_1,char param_2)

{
  HDC hdc;
  char cVar1;
  HPALETTE pHVar2;
  BOOL bForceBkgd;
  
  if (*(HPALETTE *)(param_1 + 0x11c) != (HPALETTE)0x0) {
    SelectPalette(*(HDC *)(param_1 + 0x108),*(HPALETTE *)(param_1 + 0x11c),0);
    *(undefined4 *)(param_1 + 0x11c) = 0;
  }
  cVar1 = (**(code **)(*(int *)(param_1 + 0xec) + 0x10))();
  if (cVar1 != '\0') {
    hdc = *(HDC *)(param_1 + 0x108);
    bForceBkgd = 0;
    pHVar2 = (HPALETTE)FUN_00992eb0();
    pHVar2 = SelectPalette(hdc,pHVar2,bForceBkgd);
    if (*(int *)(param_1 + 0x11c) == 0) {
      *(HPALETTE *)(param_1 + 0x11c) = pHVar2;
    }
    if (param_2 != '\0') {
                    // WARNING: Could not recover jumptable at 0x0094f08a. Too many branches
                    // WARNING: Treating indirect jump as call
      RealizePalette(*(HDC *)(param_1 + 0x108));
      return;
    }
  }
  return;
}



void __thiscall FUN_0094f0a0(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x9c) = param_1;
  return;
}



void __thiscall FUN_0094f0b0(int *param_1_00,int param_1)

{
  code *UNRECOVERED_JUMPTABLE;
  
  UNRECOVERED_JUMPTABLE = *(code **)(*param_1_00 + 0x1ac);
  param_1_00[0x26] = param_1;
                    // WARNING: Could not recover jumptable at 0x0094f0cc. Too many branches
                    // WARNING: Treating indirect jump as call
  (*UNRECOVERED_JUMPTABLE)();
  return;
}



void __thiscall FUN_0094f0d0(int param_1_00,int param_1)

{
  if ((param_1 != 0) && (-1 < *(int *)(param_1_00 + 0x98))) {
    switch(*(int *)(param_1_00 + 0x98)) {
    case 0:
      SetROP2(*(HDC *)(param_1_00 + 0x108),1);
      return;
    case 1:
      SetROP2(*(HDC *)(param_1_00 + 0x108),7);
      return;
    case 2:
      SetROP2(*(HDC *)(param_1_00 + 0x108),6);
      return;
    case 3:
      SetROP2(*(HDC *)(param_1_00 + 0x108),0xe);
      return;
    case 4:
      SetROP2(*(HDC *)(param_1_00 + 0x108),5);
      return;
    case 5:
      SetROP2(*(HDC *)(param_1_00 + 0x108),0xd);
      return;
    case 6:
      SetROP2(*(HDC *)(param_1_00 + 0x108),9);
      return;
    case 7:
      SetROP2(*(HDC *)(param_1_00 + 0x108),3);
      return;
    case 8:
      SetROP2(*(HDC *)(param_1_00 + 0x108),0xb);
      return;
    case 9:
      SetROP2(*(HDC *)(param_1_00 + 0x108),2);
      return;
    case 10:
      SetROP2(*(HDC *)(param_1_00 + 0x108),10);
      return;
    case 0xb:
      SetROP2(*(HDC *)(param_1_00 + 0x108),4);
      return;
    case 0xc:
      SetROP2(*(HDC *)(param_1_00 + 0x108),0xc);
      return;
    case 0xd:
      SetROP2(*(HDC *)(param_1_00 + 0x108),8);
      return;
    case 0xe:
      SetROP2(*(HDC *)(param_1_00 + 0x108),0xf);
      return;
    case 0xf:
      SetROP2(*(HDC *)(param_1_00 + 0x108),0x10);
      return;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\dc.cpp",0x6e9,"wxMSWDCImpl::SetRop","Assert failure",
                   L"unknown logical function");
    }
  }
  return;
}



LONG __fastcall FUN_0094f2d0(int param_1)

{
  tagTEXTMETRICW local_3c;
  
  GetTextMetricsW(*(HDC *)(param_1 + 0x108),&local_3c);
  return local_3c.tmHeight;
}



LONG __fastcall FUN_0094f2f0(int param_1)

{
  tagTEXTMETRICW local_3c;
  
  GetTextMetricsW(*(HDC *)(param_1 + 0x108),&local_3c);
  return local_3c.tmAveCharWidth;
}



void __thiscall
FUN_0094f310(int param_1,LONG *param_2,LONG *param_3,LONG *param_4,LONG *param_5,LONG *param_6,
            LONG *param_7)

{
  tagTEXTMETRICW local_3c;
  
  GetTextMetricsW(*(HDC *)(param_1 + 0x108),&local_3c);
  if (param_2 != (LONG *)0x0) {
    *param_2 = local_3c.tmHeight;
  }
  if (param_3 != (LONG *)0x0) {
    *param_3 = local_3c.tmAscent;
  }
  if (param_4 != (LONG *)0x0) {
    *param_4 = local_3c.tmDescent;
  }
  if (param_5 != (LONG *)0x0) {
    *param_5 = local_3c.tmInternalLeading;
  }
  if (param_6 != (LONG *)0x0) {
    *param_6 = local_3c.tmExternalLeading;
  }
  if (param_7 != (LONG *)0x0) {
    *param_7 = local_3c.tmAveCharWidth;
  }
  return;
}



void FUN_0094f380(undefined8 param_1,undefined8 param_2)

{
  FUN_0094b910(param_1,param_2);
  return;
}



void __thiscall FUN_0094f3a0(int param_1_00,int param_1,int param_2)

{
  if ((param_1 != *(int *)(param_1_00 + 0x1c)) || (param_2 != *(int *)(param_1_00 + 0x20))) {
    FUN_0094b960(param_1,param_2);
    SetViewportOrgEx(*(HDC *)(param_1_00 + 0x108),*(int *)(param_1_00 + 0x1c),
                     *(int *)(param_1_00 + 0x20),(LPPOINT)0x0);
  }
  return;
}



void __thiscall
FUN_0094f3e0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8,undefined4 param_9,undefined4 param_10,undefined4 param_11)

{
  (**(code **)(*param_1_00 + 0x174))
            (param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_3,param_4,param_8,param_9
             ,param_10,param_11);
  return;
}



void __thiscall FUN_0094f430(int param_1_00,int *param_1,int *param_2)

{
  int iVar1;
  
  if (param_1 != (int *)0x0) {
    iVar1 = GetDeviceCaps(*(HDC *)(param_1_00 + 0x108),8);
    *param_1 = iVar1;
  }
  if (param_2 != (int *)0x0) {
    iVar1 = GetDeviceCaps(*(HDC *)(param_1_00 + 0x108),10);
    *param_2 = iVar1;
  }
  return;
}



void __fastcall FUN_0094f470(int *param_1)

{
  int iVar1;
  int iVar2;
  int unaff_EBX;
  int unaff_EBP;
  int *unaff_retaddr;
  undefined4 uVar3;
  char *pcVar4;
  wchar_t *pwVar5;
  undefined local_8 [4];
  int *local_4;
  
  (**(code **)(*param_1 + 0x20))(local_8,&local_4);
  if (local_4 != (int *)0x0) {
    iVar1 = GetDeviceCaps((HDC)param_1[0x42],8);
    if (iVar1 == 0) {
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
        return;
      }
      pwVar5 = L"0 width device?";
      pcVar4 = "wTotal";
      uVar3 = 0x9ef;
      goto LAB_0094f536;
    }
    iVar2 = GetDeviceCaps((HDC)param_1[0x42],4);
    *local_4 = (iVar2 * unaff_EBP) / iVar1;
  }
  if (unaff_retaddr == (int *)0x0) {
    return;
  }
  iVar1 = GetDeviceCaps((HDC)param_1[0x42],10);
  if (iVar1 != 0) {
    iVar2 = GetDeviceCaps((HDC)param_1[0x42],6);
    *unaff_retaddr = (iVar2 * unaff_EBX) / iVar1;
    return;
  }
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    return;
  }
  pwVar5 = L"0 height device?";
  pcVar4 = "hTotal";
  uVar3 = 0x9f8;
LAB_0094f536:
  FUN_00840480("..\\..\\src\\msw\\dc.cpp",uVar3,"wxMSWDCImpl::DoGetSizeMM",pcVar4,pwVar5);
  return;
}



undefined ** FUN_0094f550(void)

{
  return &PTR_u_wxDCModule_0323afa4;
}



void FUN_0094f560(void)

{
  if (DAT_0323af54 != 0) {
    FUN_0089f290(DAT_0323af54);
    DAT_0323af54 = 0;
  }
  return;
}



undefined4 __fastcall FUN_0094f580(int param_1)

{
  undefined4 *puVar1;
  char cVar2;
  undefined **ppuVar3;
  
  puVar1 = *(undefined4 **)(param_1 + 8);
  if (puVar1 != (undefined4 *)0x0) {
    ppuVar3 = (undefined **)(**(code **)*puVar1)();
    if (ppuVar3 == &PTR_u_wxMSWDCImpl_0323af3c) {
LAB_0094f5c5:
      return puVar1[0x42];
    }
    if (ppuVar3[3] != (undefined *)0x0) {
      cVar2 = FUN_0048a047(&PTR_u_wxMSWDCImpl_0323af3c);
      if (cVar2 != '\0') goto LAB_0094f5c5;
    }
    if (ppuVar3[4] != (undefined *)0x0) {
      cVar2 = FUN_0048a047(&PTR_u_wxMSWDCImpl_0323af3c);
      if (cVar2 != '\0') goto LAB_0094f5c5;
    }
  }
  return 0;
}



void __thiscall
FUN_0094f5e0(int param_1_00,undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)

{
  if ((((*(byte *)(param_1_00 + 0x10) & 4) != 0) && (*(int *)(param_1_00 + 0x88) == 0)) &&
     (*(int *)(param_1_00 + 0x90) == 0)) {
    FUN_0094ed20();
    if ((*(int *)(param_1_00 + 0x88) == 0) && (*(int *)(param_1_00 + 0x90) == 0)) {
      *(byte *)(param_1_00 + 0x10) = *(byte *)(param_1_00 + 0x10) & 0xfb;
    }
  }
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = *(undefined4 *)(param_1_00 + 0x88);
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *(undefined4 *)(param_1_00 + 0x8c);
  }
  if (param_3 != (int *)0x0) {
    *param_3 = *(int *)(param_1_00 + 0x90) - *(int *)(param_1_00 + 0x88);
  }
  if (param_4 != (int *)0x0) {
    *param_4 = *(int *)(param_1_00 + 0x94) - *(int *)(param_1_00 + 0x8c);
  }
  return;
}



undefined4 __thiscall FUN_0094f670(int param_1_00,int param_1,int param_2,int *param_3)

{
  COLORREF CVar1;
  
  if (param_3 != (int *)0x0) {
    CVar1 = GetPixel(*(HDC *)(param_1_00 + 0x108),param_1,param_2);
    (**(code **)(*param_3 + 0x28))(CVar1,CVar1 >> 8,CVar1 >> 0x10,0xff);
    return 1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\dc.cpp",0x2e3,"wxMSWDCImpl::DoGetPixel",&DAT_00d50f3c,
                 L"NULL colour parameter in wxMSWDCImpl::GetPixel");
  }
  return 0;
}



void __thiscall FUN_0094f6f0(int *param_1,int param_2,int param_3)

{
  char cVar1;
  int iVar2;
  COLORREF color;
  undefined **appuStack_14 [5];
  
  color = 0xffffff;
  cVar1 = (**(code **)(param_1[0x29] + 0x10))();
  if (cVar1 != '\0') {
    iVar2 = (**(code **)(param_1[0x29] + 0x4c))(appuStack_14);
    color = *(COLORREF *)(iVar2 + 8);
    appuStack_14[0] = wxObject::vftable;
    FUN_0083e850();
  }
  SetPixel((HDC)param_1[0x42],param_2,param_3,color);
  (**(code **)(*param_1 + 0x4c))(param_2,param_3);
  return;
}



void __thiscall FUN_0094f770(int param_1_00,int param_1)

{
  uint uVar1;
  int *piVar2;
  LONG LVar3;
  POINT *apt;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int local_10;
  int local_c;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_00840480("..\\..\\src\\msw\\dc.cpp",0x45b,"wxMSWDCImpl::DoDrawSpline","points",
                 L"NULL pointer to spline points?");
  }
  uVar1 = *(uint *)(param_1 + 4);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar1 < 3)) {
    FUN_00840480("..\\..\\src\\msw\\dc.cpp",0x45e,"wxMSWDCImpl::DoDrawSpline","n_points > 2",
                 L"incomplete list of spline points?");
  }
  apt = (POINT *)_malloc(uVar1 * 0x18 + 8);
  iVar7 = *(int *)(param_1 + 0xc);
  piVar2 = *(int **)(iVar7 + 8);
  iVar4 = *piVar2;
  apt->x = iVar4;
  iVar5 = piVar2[1];
  apt->y = iVar5;
  apt[1].x = iVar4;
  apt[1].y = apt->y;
  iVar7 = *(int *)(iVar7 + 0xc);
  piVar2 = *(int **)(iVar7 + 8);
  iVar9 = *piVar2;
  iVar6 = piVar2[1];
  local_10 = (iVar9 + iVar4) / 2;
  local_c = (iVar6 + iVar5) / 2;
  apt[2].x = local_10;
  apt[2].y = local_c;
  LVar3 = apt[2].y;
  apt[3].x = local_10;
  apt[3].y = LVar3;
  iVar7 = *(int *)(iVar7 + 0xc);
  iVar4 = 4;
  if (iVar7 != 0) {
    iVar4 = 4;
    iVar5 = iVar6;
    iVar8 = iVar9;
    do {
      iVar9 = **(int **)(iVar7 + 8);
      iVar6 = (*(int **)(iVar7 + 8))[1];
      apt[iVar4].x = (local_10 + iVar8 * 2) / 3;
      apt[iVar4].y = (local_c + iVar5 * 2) / 3;
      local_10 = (iVar9 + iVar8) / 2;
      apt[iVar4 + 1].x = (local_10 + iVar8 * 2) / 3;
      local_c = (iVar6 + iVar5) / 2;
      apt[iVar4 + 1].y = (local_c + iVar5 * 2) / 3;
      apt[iVar4 + 2].x = local_10;
      apt[iVar4 + 2].y = local_c;
      iVar7 = *(int *)(iVar7 + 0xc);
      iVar4 = iVar4 + 3;
      iVar5 = iVar6;
      iVar8 = iVar9;
    } while (iVar7 != 0);
  }
  LVar3 = apt[iVar4 + -1].y;
  apt[iVar4].x = apt[iVar4 + -1].x;
  apt[iVar4].y = LVar3;
  apt[iVar4 + 1].x = iVar9;
  apt[iVar4 + 1].y = iVar6;
  LVar3 = apt[iVar4 + 1].y;
  apt[iVar4 + 2].x = apt[iVar4 + 1].x;
  apt[iVar4 + 2].y = LVar3;
  PolyBezier(*(HDC *)(param_1_00 + 0x108),apt,iVar4 + 3);
  _free(apt);
  return;
}



void __thiscall FUN_0094f970(int *param_1_00,int *param_1,int param_3,int param_4)

{
  char cVar1;
  HICON hIcon;
  int iVar2;
  int cxWidth;
  int iVar3;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\dc.cpp",0x4e8,"wxMSWDCImpl::DoDrawIcon","icon.IsOk()",
                   L"invalid icon in DrawIcon");
    }
    return;
  }
  iVar2 = param_1[1];
  if (iVar2 == 0) {
    iVar3 = 0;
    cxWidth = 0;
    hIcon = (HICON)0x0;
  }
  else {
    iVar3 = *(int *)(iVar2 + 0xc);
    cxWidth = *(int *)(iVar2 + 8);
    hIcon = *(HICON *)(iVar2 + 0x14);
  }
  DrawIconEx((HDC)param_1_00[0x42],param_3,param_4,hIcon,cxWidth,iVar3,0,(HBRUSH)0x0,3);
  (**(code **)(*param_1_00 + 0x4c))(param_3,param_4);
  iVar2 = param_1[1];
  if (iVar2 == 0) {
    iVar3 = 0;
    iVar2 = 0;
  }
  else {
    iVar3 = *(int *)(iVar2 + 0xc);
    iVar2 = *(int *)(iVar2 + 8);
  }
  (**(code **)(*param_1_00 + 0x4c))(iVar2 + param_3,iVar3 + param_4);
  return;
}



void FUN_0094fa30(double param_1,int param_2,undefined4 *param_3,int *param_4)

{
  double dVar1;
  undefined4 uVar2;
  int iVar3;
  
  if (param_1 < 0.0625 == NAN(param_1)) {
    dVar1 = 134217727.0;
  }
  else {
    dVar1 = param_1 * 16.0 * 134217727.0;
    param_1 = 0.0625;
  }
  uVar2 = FUN_008ffcc0(dVar1);
  *param_3 = uVar2;
  iVar3 = FUN_008ffcc0(134217727.0 / param_1);
  *param_4 = iVar3 * param_2;
  return;
}



void __fastcall FUN_0094faa0(int param_1)

{
  int iStack_10;
  int iStack_c;
  int iStack_8;
  int iStack_4;
  
  SetMapMode(*(HDC *)(param_1 + 0x108),8);
  FUN_0094fa30(*(undefined8 *)(param_1 + 0x50),*(undefined4 *)(param_1 + 0x60),&iStack_c,&iStack_4);
  FUN_0094fa30(*(undefined8 *)(param_1 + 0x58),*(undefined4 *)(param_1 + 100),&iStack_10,&iStack_8);
  SetViewportExtEx(*(HDC *)(param_1 + 0x108),iStack_c,iStack_10,(LPSIZE)0x0);
  SetWindowExtEx(*(HDC *)(param_1 + 0x108),iStack_4,iStack_8,(LPSIZE)0x0);
  SetViewportOrgEx(*(HDC *)(param_1 + 0x108),*(int *)(param_1 + 0x1c),*(int *)(param_1 + 0x20),
                   (LPPOINT)0x0);
  SetWindowOrgEx(*(HDC *)(param_1 + 0x108),*(int *)(param_1 + 0x14),*(int *)(param_1 + 0x18),
                 (LPPOINT)0x0);
  return;
}



void __thiscall FUN_0094fb60(int *param_1_00,int param_1)

{
  double dVar1;
  double dVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  
  param_1_00[0x28] = param_1;
  if (param_1 == 1) {
    *(undefined8 *)(param_1_00 + 0xe) = 0x3ff0000000000000;
    *(undefined8 *)(param_1_00 + 0xc) = 0x3ff0000000000000;
  }
  else {
    iVar3 = GetDeviceCaps((HDC)param_1_00[0x42],8);
    iVar4 = GetDeviceCaps((HDC)param_1_00[0x42],10);
    iVar5 = GetDeviceCaps((HDC)param_1_00[0x42],4);
    iVar6 = GetDeviceCaps((HDC)param_1_00[0x42],6);
    if (iVar5 == 0) {
      return;
    }
    if (iVar6 == 0) {
      return;
    }
    dVar2 = (double)iVar3 / (double)iVar5;
    dVar1 = (double)iVar4 / (double)iVar6;
    switch(param_1) {
    case 2:
      *(double *)(param_1_00 + 0xc) = dVar2;
      *(double *)(param_1_00 + 0xe) = dVar1;
      break;
    case 3:
      *(double *)(param_1_00 + 0xc) = dVar2 / 10.0;
      *(double *)(param_1_00 + 0xe) = dVar1 / 10.0;
      break;
    case 4:
      *(double *)(param_1_00 + 0xc) = dVar2 * 0.01763888888888889;
      *(double *)(param_1_00 + 0xe) = dVar1 * 0.01763888888888889;
      break;
    case 5:
      *(double *)(param_1_00 + 0xc) = dVar2 * 0.3527777777777778;
      *(double *)(param_1_00 + 0xe) = dVar1 * 0.3527777777777778;
      break;
    default:
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\msw\\dc.cpp",0x812,"wxMSWDCImpl::SetMapMode","Assert failure",
                     L"unknown mapping mode in SetMapMode");
      }
    }
  }
  (**(code **)(*param_1_00 + 0x120))();
  FUN_0094faa0();
  return;
}



void __thiscall FUN_0094fca0(int param_1_00,double param_1,double param_2)

{
  if (((NAN(param_1) || NAN(*(double *)(param_1_00 + 0x40))) !=
       (param_1 == *(double *)(param_1_00 + 0x40))) &&
     ((NAN(*(double *)(param_1_00 + 0x48)) || NAN(param_2)) !=
      (*(double *)(param_1_00 + 0x48) == param_2))) {
    return;
  }
  FUN_0094b8f0(param_1,param_2);
  FUN_0094faa0();
  return;
}



void __thiscall FUN_0094fcf0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  if (((uint)((char)param_1 != '\0') * 2 + -1 != *(int *)(param_1_00 + 0x60)) ||
     ((uint)((char)param_2 == '\0') * 2 + -1 != *(int *)(param_1_00 + 100))) {
    FUN_0094b9a0(param_1,param_2);
    FUN_0094faa0();
  }
  return;
}



void __thiscall FUN_0094fd30(int param_1_00,int param_1,int param_2)

{
  if ((param_1 != *(int *)(param_1_00 + 0x14)) || (param_2 != *(int *)(param_1_00 + 0x18))) {
    FUN_0094b930(param_1,param_2);
    FUN_0094faa0();
  }
  return;
}



void __thiscall FUN_0094fd60(int param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = GetDeviceCaps(*(HDC *)(param_1_00 + 0x108),0x58);
  iVar2 = GetDeviceCaps(*(HDC *)(param_1_00 + 0x108),0x5a);
  *param_1 = iVar1;
  param_1[1] = iVar2;
  return;
}



void FUN_0094fda0(void)

{
  int iVar1;
  
  iVar1 = DAT_0323af98;
  if (DAT_0323af98 != 0) {
    do {
      if (*(int **)(iVar1 + 8) != (int *)0x0) {
        (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
      }
      iVar1 = *(int *)(iVar1 + 0xc);
    } while (iVar1 != 0);
  }
  FUN_0086b130();
  for (iVar1 = DAT_0323af80; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if (*(int **)(iVar1 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
    }
  }
  FUN_0086b130();
  return;
}



void thunk_FUN_0094fda0(void)

{
  int iVar1;
  
  iVar1 = DAT_0323af98;
  if (DAT_0323af98 != 0) {
    do {
      if (*(int **)(iVar1 + 8) != (int *)0x0) {
        (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
      }
      iVar1 = *(int *)(iVar1 + 0xc);
    } while (iVar1 != 0);
  }
  FUN_0086b130();
  for (iVar1 = DAT_0323af80; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if (*(int **)(iVar1 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
    }
  }
  FUN_0086b130();
  return;
}



void __fastcall FUN_0094fe30(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdb77b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if (*(int *)(param_1 + 0x1c) != 0) {
    FUN_008f25f0(DAT_0323f878 ^ (uint)&stack0xffffffe8);
    FUN_008f40d0(param_1);
  }
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0094fea0(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  *param_1_00 = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 4);
  param_1_00[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1_00 = wxPalette::vftable;
  return;
}



undefined4 * FUN_0094fed0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxGDIDLLsCleanupModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 * __thiscall FUN_0094ff30(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_0094d450(param_1);
  *param_1_00 = wxMSWDCImpl::vftable;
  param_1_00[0x40] = 0;
  param_1_00[0x3f] = wxBitmap::vftable;
  *(byte *)(param_1_00 + 0x41) = *(byte *)(param_1_00 + 0x41) & 0xfe;
  param_1_00[0x43] = 0;
  param_1_00[0x44] = 0;
  param_1_00[0x45] = 0;
  param_1_00[0x46] = 0;
  param_1_00[0x47] = 0;
  param_1_00[0x42] = param_2;
  return param_1_00;
}



void __fastcall FUN_0094ff90(int param_1)

{
  if (((*(byte *)(param_1 + 0x10) & 4) != 0) && (*(HDC *)(param_1 + 0x108) != (HDC)0x0)) {
    SelectClipRgn(*(HDC *)(param_1 + 0x108),(HRGN)0x0);
  }
  *(byte *)(param_1 + 0x10) = *(byte *)(param_1 + 0x10) & 0xfb;
  *(undefined4 *)(param_1 + 0x94) = 0;
  *(undefined4 *)(param_1 + 0x8c) = 0;
  *(undefined4 *)(param_1 + 0x90) = 0;
  *(undefined4 *)(param_1 + 0x88) = 0;
  return;
}



void __fastcall FUN_0094ffd0(int param_1)

{
  char cVar1;
  COLORREF color;
  HBRUSH hbr;
  tagRECT local_10;
  
  if (*(int *)(param_1 + 0xc) == 0) {
    cVar1 = (**(code **)(*(int *)(param_1 + 0xfc) + 0x10))();
    if (cVar1 == '\0') {
      return;
    }
    local_10.left = -*(int *)(param_1 + 0x1c);
    local_10.top = -*(int *)(param_1 + 0x20);
    local_10.right = *(int *)(param_1 + 0x100);
    if (local_10.right != 0) {
      local_10.right = *(int *)(local_10.right + 8);
    }
    local_10.bottom = *(int *)(param_1 + 0x100);
    local_10.right = local_10.right - *(int *)(param_1 + 0x1c);
    if (local_10.bottom != 0) {
      local_10.bottom = *(int *)(local_10.bottom + 0xc);
    }
    local_10.bottom = local_10.bottom - *(int *)(param_1 + 0x20);
  }
  else {
    GetClientRect(*(HWND *)(*(int *)(param_1 + 0xc) + 0x13c),&local_10);
  }
  SetMapMode(*(HDC *)(param_1 + 0x108),1);
  color = GetBkColor(*(HDC *)(param_1 + 0x108));
  hbr = CreateSolidBrush(color);
  FillRect(*(HDC *)(param_1 + 0x108),&local_10,hbr);
  DeleteObject(hbr);
  FUN_0094faa0();
  return;
}



void __thiscall FUN_00950090(int param_1_00,int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    if ((int *)(param_1_00 + 0xec) != param_1) {
      FUN_0083ea60(param_1);
    }
    FUN_0094f010(1);
  }
  return;
}



void __thiscall FUN_009500d0(int param_1_00,int *param_1)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  undefined auStack_14 [20];
  
  piVar1 = (int *)(param_1_00 + 0xb4);
  if (piVar1 != param_1) {
    FUN_0083ea60(param_1);
  }
  cVar2 = (**(code **)(*piVar1 + 0x10))();
  if (cVar2 != '\0') {
    iVar3 = (**(code **)(*piVar1 + 0x3c))(auStack_14);
    SetBkColor(*(HDC *)(param_1_00 + 0x108),*(COLORREF *)(iVar3 + 8));
    FUN_0083e850();
  }
  return;
}



undefined4 * __thiscall FUN_00950140(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxDCCacheEntry::vftable;
  if ((HGDIOBJ)param_1_00[2] != (HGDIOBJ)0x0) {
    DeleteObject((HGDIOBJ)param_1_00[2]);
  }
  if ((HDC)param_1_00[3] != (HDC)0x0) {
    DeleteDC((HDC)param_1_00[3]);
  }
  *param_1_00 = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_00950190(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxDCModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __fastcall FUN_009501f0(int param_1)

{
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bdb77b;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  uStack_4 = 0;
  if (*(int *)(param_1 + 0x1c) != 0) {
    FUN_008f25f0(DAT_0323f878 ^ (uint)&stack0xffffffe8);
    FUN_008f40d0(param_1);
  }
  uStack_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_c;
  return;
}



undefined4 * __thiscall FUN_00950200(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdb7ab;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = 0;
  param_1_00[1] = 0;
  param_1_00[4] = 0;
  param_1_00[3] = 0;
  param_1_00[2] = 0;
  param_1_00[5] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 4);
  param_1_00[6] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[5] = wxBitmap::vftable;
  local_4 = 0;
  uVar2 = FUN_008f4d80(param_1_00,0x20);
  param_1_00[7] = uVar2;
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00950280(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 0x118);
  *param_1 = wxObject::vftable;
  param_1[1] = iVar1;
  *param_1 = wxPalette::vftable;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  return;
}



void __thiscall FUN_009502b0(TypeDescriptor *param_1_00,HDC param_1)

{
  HGDIOBJ pvVar1;
  char cVar2;
  
  if (param_1 != (HDC)0x0) {
    if (param_1_00[0x21].spare != (HGDIOBJ)0x0) {
      SelectObject(param_1,param_1_00[0x21].spare);
      cVar2 = (**(code **)((int)param_1_00[0x1f].spare + 0x10))();
      if (cVar2 != '\0') {
        FUN_008f2620(0);
      }
    }
    pvVar1 = param_1_00[0x22].pVFTable;
    param_1_00[0x21].spare = (void *)0x0;
    if (pvVar1 != (HGDIOBJ)0x0) {
      SelectObject(param_1,pvVar1);
    }
    param_1_00[0x22].pVFTable = (void *)0x0;
    if (param_1_00[0x22].spare != (HGDIOBJ)0x0) {
      SelectObject(param_1,param_1_00[0x22].spare);
    }
    pvVar1 = param_1_00[0x23].pVFTable;
    param_1_00[0x22].spare = (void *)0x0;
    if (pvVar1 != (HGDIOBJ)0x0) {
      SelectObject(param_1,pvVar1);
    }
    param_1_00[0x23].pVFTable = (void *)0x0;
    if ((HPALETTE)param_1_00[0x23].spare != (HPALETTE)0x0) {
      SelectPalette(param_1,(HPALETTE)param_1_00[0x23].spare,0);
    }
    param_1_00[0x23].spare = (void *)0x0;
  }
  if (param_1_00 != (TypeDescriptor *)0x32bf2b4) {
    FUN_0083ea60(&DAT_032bf360);
  }
  if (param_1_00 != (TypeDescriptor *)0x3238c50) {
    FUN_0083ea60(&PTR_vftable_03238cf4);
  }
  if (param_1_00 != &wxICOResourceHandler::RTTI_Type_Descriptor) {
    FUN_0083ea60(&PTR_vftable_03238cfc);
  }
  if (param_1_00 != (TypeDescriptor *)(s___AVwxICOFileHandler___03238bf8 + 8)) {
    FUN_0083ea60(&PTR_vftable_03238ce4);
  }
  if (param_1_00 != (TypeDescriptor *)0x32bf2ac) {
    FUN_0083ea60(&DAT_032bf360);
  }
  if (param_1_00 == (TypeDescriptor *)(s___AVwxBMPResourceHandler___03238bb8 + 0x14)) {
    return;
  }
  FUN_0083ea60();
  return;
}



void __fastcall FUN_009503f0(int param_1)

{
  int iVar1;
  char cVar2;
  undefined **local_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed7e8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = FUN_0095de30(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  if (iVar1 < 9) {
    iVar1 = FUN_0091c180();
    if ((iVar1 == 0) || (*(char *)(iVar1 + 0x11c) == '\0')) {
      cVar2 = '\0';
    }
    else {
      cVar2 = '\x01';
    }
    *(char *)(param_1 + 0xf4) = cVar2;
    if (cVar2 != '\0') {
      iVar1 = FUN_00950280(local_14);
      local_4 = 0;
      if (param_1 + 0xec != iVar1) {
        FUN_0083ea60(iVar1);
      }
      local_4 = 0xffffffff;
      local_14[0] = wxObject::vftable;
      FUN_0083e850();
      FUN_0094f010(0);
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009504a0(undefined4 *param_1)

{
  uint uVar1;
  HWND hWnd;
  HDC hDC;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bdb7e6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxMSWDCImpl::vftable;
  local_4 = 1;
  if (param_1[0x42] != 0) {
    FUN_009502b0(param_1[0x42]);
    if ((*(byte *)(param_1 + 0x41) & 1) == 0) {
      if (param_1[3] == 0) {
        hDC = (HDC)param_1[0x42];
        hWnd = (HWND)0x0;
      }
      else {
        hDC = (HDC)param_1[0x42];
        hWnd = *(HWND *)(param_1[3] + 0x13c);
      }
      ReleaseDC(hWnd,hDC);
    }
    else {
      DeleteDC((HDC)param_1[0x42]);
    }
  }
  local_4 = local_4 & 0xffffff00;
  FUN_008f7630(uVar1);
  local_4 = 0xffffffff;
  FUN_0094c070();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00950560(int *param_1_00,undefined4 param_1)

{
  undefined uVar1;
  DWORD DVar2;
  undefined4 uVar3;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb839;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((DAT_032bdb68 == 0) || (DVar2 = GetCurrentThreadId(), DVar2 == DAT_032bdb68)) {
    uVar1 = DAT_03235e94;
    DAT_03235e94 = 0;
  }
  else {
    uVar1 = FUN_00842f30(0);
  }
  local_4 = 0;
  if (param_1_00[1] != 0) {
    FUN_004325b6(param_1_00[1]);
    local_4._0_1_ = 1;
    FUN_0089ed30(local_30,2);
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    param_1_00[1] = 0;
  }
  if (*param_1_00 == 0) {
    uVar3 = 0;
  }
  else {
    FUN_004325b6(param_1);
    local_4 = CONCAT31(local_4._1_3_,2);
    uVar3 = FUN_0089f060(local_30,0);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
  }
  local_4 = 0xffffffff;
  if ((DAT_032bdb68 != 0) && (DVar2 = GetCurrentThreadId(), DVar2 != DAT_032bdb68)) {
    FUN_00842f30(uVar1);
    uVar1 = DAT_03235e94;
  }
  DAT_03235e94 = uVar1;
  ExceptionList = local_c;
  return uVar3;
}



// WARNING: Removing unreachable block (ram,0x009508b0)

void FUN_009506d0(void)

{
  uint uVar1;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb890;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  FUN_004325b6(L"gdi32.dll");
  local_4 = 0;
  FUN_0089ed30(local_54,2);
  local_4._0_1_ = 2;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  FUN_0043c211("SetGraphicsMode");
  local_4._0_1_ = 3;
  DAT_032c0eac = FUN_0089f2d0(0,local_30,uVar1);
  local_4._0_1_ = 2;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  FUN_0043c211("SetWorldTransform");
  local_4._0_1_ = 4;
  DAT_032c0eb0 = FUN_0089f2d0(0,local_30);
  local_4._0_1_ = 2;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  FUN_0043c211("GetWorldTransform");
  local_4._0_1_ = 5;
  DAT_032c0eb4 = FUN_0089f2d0(0,local_30);
  local_4._0_1_ = 2;
  _free(local_14);
  if (local_18 < 8) {
    FUN_0043c211("ModifyWorldTransform");
    local_4 = CONCAT31(local_4._1_3_,6);
    DAT_032c0eb8 = FUN_0089f2d0(0,local_30);
    _free(local_14);
    if (local_18 < 8) {
      DAT_032c0ebc = 1;
      ExceptionList = local_c;
      return;
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_2c);
}



// WARNING: Removing unreachable block (ram,0x00950976)

undefined4 FUN_009508d0(undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdb8d6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  if ((DAT_032c0ec4 & 1) == 0) {
    DAT_032c0ec4 = DAT_032c0ec4 | 1;
    local_4 = 0;
    FUN_0043c211("GetLayout");
    local_4._0_1_ = 1;
    FUN_004325b6(L"gdi32.dll");
    local_4._0_1_ = 2;
    FUN_0089ed30(local_54,2);
    local_4._0_1_ = 3;
    DAT_032c0ec0 = (code *)FUN_0089f2d0(0,local_30);
    local_4 = CONCAT31(local_4._1_3_,2);
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
  }
  local_4 = 0xffffffff;
  if (DAT_032c0ec0 == (code *)0x0) {
    ExceptionList = local_c;
    return 0xffffffff;
  }
  uVar2 = (*DAT_032c0ec0)(param_1,uVar1);
  ExceptionList = pvStack_10;
  return uVar2;
}



char __fastcall FUN_00950a30(int param_1)

{
  uint uVar1;
  
  uVar1 = FUN_009508d0(*(undefined4 *)(param_1 + 0x108));
  if (uVar1 == 0xffffffff) {
    return '\0';
  }
  return ((uVar1 & 1) != 0) + '\x01';
}



// WARNING: Removing unreachable block (ram,0x00950b05)

void __thiscall FUN_00950a60(int param_1_00,int param_1)

{
  uint uVar1;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdb926;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  if ((DAT_032c0ecc & 1) == 0) {
    DAT_032c0ecc = DAT_032c0ecc | 1;
    local_4 = 0;
    FUN_0043c211("SetLayout");
    local_4._0_1_ = 1;
    FUN_004325b6(L"gdi32.dll");
    local_4._0_1_ = 2;
    FUN_0089ed30(local_54,2);
    local_4._0_1_ = 3;
    DAT_032c0ec8 = (code *)FUN_0089f2d0(0,local_30);
    local_4 = CONCAT31(local_4._1_3_,2);
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
  }
  local_4 = 0xffffffff;
  if ((DAT_032c0ec8 != (code *)0x0) &&
     ((param_1 != 0 || (param_1 = (**(code **)(*DAT_032bcb68 + 0xe4))(uVar1), param_1 != 0)))) {
    uVar1 = FUN_009508d0(*(undefined4 *)(param_1_00 + 0x108));
    if (param_1 == 2) {
      uVar1 = uVar1 | 1;
    }
    else {
      uVar1 = uVar1 & 0xfffffffe;
    }
    (*DAT_032c0ec8)(*(undefined4 *)(param_1_00 + 0x108),uVar1);
  }
  ExceptionList = local_c;
  return;
}



undefined4 FUN_00950bf0(void)

{
  if (DAT_032c0ebc == '\0') {
    FUN_009506d0();
  }
  if ((((DAT_032c0eac != 0) && (DAT_032c0eb0 != 0)) && (DAT_032c0eb4 != 0)) && (DAT_032c0eb8 != 0))
  {
    return 1;
  }
  return 0;
}



void __fastcall FUN_00950c30(int param_1)

{
  undefined4 uVar1;
  
  if (DAT_032c0ebc == '\0') {
    FUN_009506d0();
  }
  if ((((DAT_032c0eac != (code *)0x0) && (DAT_032c0eb0 != 0)) && (DAT_032c0eb4 != 0)) &&
     (DAT_032c0eb8 != (code *)0x0)) {
    uVar1 = *(undefined4 *)(param_1 + 0x108);
    if (DAT_032c0ebc == '\0') {
      FUN_009506d0();
    }
    (*DAT_032c0eb8)(uVar1,0,1);
    uVar1 = *(undefined4 *)(param_1 + 0x108);
    if (DAT_032c0ebc == '\0') {
      FUN_009506d0();
    }
    (*DAT_032c0eac)(uVar1,1);
  }
  return;
}



HDC * __thiscall FUN_00950cb0(HDC *param_1_00,HDC param_1)

{
  char cVar1;
  HDC pHVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  pHVar2 = (HDC)SetStretchBltMode(param_1,3);
  param_1_00[1] = pHVar2;
  if (pHVar2 == (HDC)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00950dc0(HDC *param_1)

{
  char cVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = SetStretchBltMode(*param_1,(int)param_1[1]);
  if (iVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00950ec0(int param_1_00,HRGN param_1)

{
  char cVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == (HRGN)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  else {
    iVar2 = ExtSelectClipRgn(*(HDC *)(param_1_00 + 0x108),param_1,1);
    if (iVar2 != 0) {
      *(byte *)(param_1_00 + 0x10) = *(byte *)(param_1_00 + 0x10) | 4;
      FUN_0094ed20();
      ExceptionList = local_c;
      return;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
      ExceptionList = local_c;
      return;
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00951030(int *param_1_00,undefined4 param_1,int param_2)

{
  char cVar1;
  int x2;
  int x1;
  HRGN ho;
  int unaff_retaddr;
  undefined auStack_b4 [8];
  undefined4 uStack_ac;
  uint *puStack_a8;
  char *pcStack_a4;
  uint uStack_80;
  void *pvStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  uStack_80 = DAT_0323f878 ^ (uint)&stack0xffffff84;
  ExceptionList = &local_c;
  (**(code **)(*param_1_00 + 0xd8))();
  (**(code **)(*param_1_00 + 0xd4))();
  x2 = (**(code **)(*param_1_00 + 0xd8))();
  x1 = (**(code **)(*param_1_00 + 0xd4))();
  pcStack_a4 = (char *)0x9510b8;
  ho = CreateRectRgn(x1,unaff_retaddr,x2,param_2);
  if (ho == (HRGN)0x0) {
    puStack_8 = auStack_b4;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      pcStack_a4 = (char *)0x6;
      puStack_a8 = (uint *)0x951120;
      FUN_008423d0();
      GetLastError();
      FUN_00843700();
      GetLastError();
      pcStack_a4 = "..\\..\\src\\msw\\dc.cpp";
      puStack_a8 = &uStack_80;
      uStack_ac = 0x951157;
      FUN_00847d90();
      FUN_00842440();
      FUN_0081b5bc();
      ExceptionList = pvStack_1c;
      return;
    }
  }
  else {
    FUN_00950ec0();
    DeleteObject(ho);
  }
  ExceptionList = pvStack_1c;
  return;
}



void FUN_009511b0(void)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00992eb0();
  FUN_00950ec0(uVar1);
  return;
}



bool __thiscall FUN_009511d0(int *param_1_00,int param_1,int param_2,int param_3,int param_4)

{
  char cVar1;
  BOOL BVar2;
  bool bVar3;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4070;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = ExtFloodFill((HDC)param_1_00[0x42],param_1,param_2,*(COLORREF *)(param_3 + 8),
                       (uint)(param_4 == 1));
  bVar3 = BVar2 != 0;
  if (!bVar3) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = CONCAT31(uStack_4._1_3_,bVar3);
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  (**(code **)(*param_1_00 + 0x4c))();
  ExceptionList = pvStack_14;
  return bVar3;
}



void __thiscall FUN_00951330(int param_1_00,undefined **param_1)

{
  HDC hdc;
  char cVar1;
  HGDIOBJ pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8e39;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_0094a5b0();
  if (cVar1 != '\0') {
    ExceptionList = local_c;
    return;
  }
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 == '\0') {
    if (*(HGDIOBJ *)(param_1_00 + 0x118) != (HGDIOBJ)0x0) {
      pvVar2 = SelectObject(*(HDC *)(param_1_00 + 0x108),*(HGDIOBJ *)(param_1_00 + 0x118));
      if (pvVar2 == (HGDIOBJ)0xffffffff) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 2;
          FUN_008423d0();
          uStack_4._0_1_ = 3;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = CONCAT31(uStack_4._1_3_,2);
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      *(undefined4 *)(param_1_00 + 0x118) = 0;
    }
    if ((undefined **)(param_1_00 + 0xe4) == &PTR_vftable_03238ce4) {
      ExceptionList = local_c;
      return;
    }
  }
  else {
    hdc = *(HDC *)(param_1_00 + 0x108);
    pvVar2 = (HGDIOBJ)FUN_009229f0();
    pvVar2 = SelectObject(hdc,pvVar2);
    if (pvVar2 == (HGDIOBJ)0xffffffff) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return;
      }
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
      ExceptionList = local_c;
      return;
    }
    if (*(int *)(param_1_00 + 0x118) == 0) {
      *(HGDIOBJ *)(param_1_00 + 0x118) = pvVar2;
    }
    if ((undefined **)(param_1_00 + 0xe4) == param_1) {
      ExceptionList = local_c;
      return;
    }
  }
  FUN_0083ea60();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009515b0(int param_1_00,undefined **param_1)

{
  HDC hdc;
  char cVar1;
  HGDIOBJ pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8e39;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_009561b0();
  if (cVar1 != '\0') {
    ExceptionList = local_c;
    return;
  }
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 == '\0') {
    if (*(HGDIOBJ *)(param_1_00 + 0x110) != (HGDIOBJ)0x0) {
      pvVar2 = SelectObject(*(HDC *)(param_1_00 + 0x108),*(HGDIOBJ *)(param_1_00 + 0x110));
      if (pvVar2 == (HGDIOBJ)0xffffffff) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 2;
          FUN_008423d0();
          uStack_4._0_1_ = 3;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = CONCAT31(uStack_4._1_3_,2);
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      *(undefined4 *)(param_1_00 + 0x110) = 0;
    }
    if ((undefined **)(param_1_00 + 0xa4) == &PTR_vftable_03238cf4) {
      ExceptionList = local_c;
      return;
    }
  }
  else {
    hdc = *(HDC *)(param_1_00 + 0x108);
    pvVar2 = (HGDIOBJ)(**(code **)(*param_1 + 0x20))();
    pvVar2 = SelectObject(hdc,pvVar2);
    if (pvVar2 == (HGDIOBJ)0xffffffff) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return;
      }
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
      ExceptionList = local_c;
      return;
    }
    if (*(int *)(param_1_00 + 0x110) == 0) {
      *(HGDIOBJ *)(param_1_00 + 0x110) = pvVar2;
    }
    if ((undefined **)(param_1_00 + 0xa4) == param_1) {
      ExceptionList = local_c;
      return;
    }
  }
  FUN_0083ea60();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00951830(int param_1_00,int *param_1)

{
  HDC hdc;
  char cVar1;
  int *piVar2;
  BOOL BVar3;
  HGDIOBJ pvVar4;
  int iVar5;
  int iVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb9bf;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_0095d3a0();
  if (cVar1 != '\0') {
    ExceptionList = local_c;
    return;
  }
  cVar1 = (**(code **)(*param_1 + 0x10))();
  iVar6 = DAT_03238d08;
  iVar5 = DAT_03238d04;
  if (cVar1 == '\0') {
    if (*(HGDIOBJ *)(param_1_00 + 0x114) != (HGDIOBJ)0x0) {
      pvVar4 = SelectObject(*(HDC *)(param_1_00 + 0x108),*(HGDIOBJ *)(param_1_00 + 0x114));
      if (pvVar4 == (HGDIOBJ)0xffffffff) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 4;
          FUN_008423d0();
          uStack_4._0_1_ = 5;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = CONCAT31(uStack_4._1_3_,4);
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      *(undefined4 *)(param_1_00 + 0x114) = 0;
    }
    if ((int *)(param_1_00 + 0xac) == (int *)&DAT_032bf360) {
      ExceptionList = local_c;
      return;
    }
  }
  else {
    piVar2 = (int *)(**(code **)(*param_1 + 0x44))();
    if ((piVar2 == (int *)0x0) || (cVar1 = (**(code **)(*piVar2 + 0x10))(), cVar1 == '\0')) {
      cVar1 = (**(code **)(*param_1 + 0x48))();
      if (cVar1 != '\0') {
        iVar5 = 8;
        iVar6 = 8;
      }
    }
    else {
      piVar2 = (int *)FUN_004571ab();
      iVar5 = *piVar2;
      iVar6 = piVar2[1];
    }
    if (((iVar5 != -1) && (iVar6 != -1)) &&
       (BVar3 = SetBrushOrgEx(*(HDC *)(param_1_00 + 0x108),*(int *)(param_1_00 + 0x1c) % iVar5,
                              *(int *)(param_1_00 + 0x20) % iVar6,(LPPOINT)0x0), BVar3 == 0)) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    hdc = *(HDC *)(param_1_00 + 0x108);
    pvVar4 = (HGDIOBJ)(**(code **)(*param_1 + 0x20))();
    pvVar4 = SelectObject(hdc,pvVar4);
    if (pvVar4 == (HGDIOBJ)0xffffffff) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return;
      }
      FUN_0081c0f1();
      uStack_4 = 2;
      FUN_008423d0();
      uStack_4._0_1_ = 3;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = CONCAT31(uStack_4._1_3_,2);
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
      ExceptionList = local_c;
      return;
    }
    if (*(int *)(param_1_00 + 0x114) == 0) {
      *(HGDIOBJ *)(param_1_00 + 0x114) = pvVar4;
    }
    if ((int *)(param_1_00 + 0xac) == param_1) {
      ExceptionList = local_c;
      return;
    }
  }
  FUN_0083ea60();
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_00951c00(int *param_1_00,int param_1,int *param_2,LONG *param_3,int param_4,int param_5,
            int *param_6)

{
  HDC hdc;
  uint c;
  int iVar1;
  char cVar2;
  HGDIOBJ h;
  BOOL BVar3;
  int *piVar4;
  ushort *puVar5;
  LPCWSTR lpString;
  int iVar6;
  undefined auStack_d4 [8];
  undefined4 uStack_cc;
  undefined *puStack_c8;
  char *pcStack_c4;
  tagSIZE tStack_9c;
  HGDIOBJ local_94;
  undefined *puStack_90;
  undefined4 uStack_8c;
  undefined *puStack_88;
  undefined4 uStack_84;
  _ABC _Stack_80;
  undefined auStack_70 [100];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb9f0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_6 == (int *)0x0) {
    local_94 = (HGDIOBJ)0x0;
  }
  else {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      cVar2 = (**(code **)(*param_6 + 0x10))();
      if (cVar2 == '\0') {
        pcStack_c4 = "..\\..\\src\\msw\\dc.cpp";
        puStack_c8 = (undefined *)0x951c6e;
        FUN_00840480();
      }
    }
    hdc = (HDC)param_1_00[0x42];
    h = (HGDIOBJ)FUN_009229f0();
    local_94 = SelectObject(hdc,h);
  }
  c = *(uint *)(param_1 + 0x14);
  if (*(uint *)(param_1 + 0x18) < 8) {
    lpString = (LPCWSTR)(param_1 + 4);
  }
  else {
    lpString = *(LPCWSTR *)(param_1 + 4);
  }
  pcStack_c4 = (char *)0x951cc0;
  BVar3 = GetTextExtentPoint32W((HDC)param_1_00[0x42],lpString,c,&tStack_9c);
  if (BVar3 == 0) {
    puStack_88 = auStack_d4;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 != '\0') {
      FUN_0081c0f1();
      pcStack_c4 = (char *)0x6;
      uStack_4 = 0;
      puStack_c8 = (undefined *)0x951d25;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      pcStack_c4 = "..\\..\\src\\msw\\dc.cpp";
      puStack_c8 = auStack_70;
      uStack_cc = 0x951d5f;
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  if (c != 0) {
    piVar4 = (int *)FUN_00847890();
    if (*piVar4 != -4) {
      if (*piVar4 == 0) {
        FUN_00a3fb10();
      }
      iVar1 = *piVar4;
      if (*(uint *)(iVar1 + 0x18) < 8) {
        iVar6 = iVar1 + 4;
      }
      else {
        iVar6 = *(int *)(iVar1 + 4);
      }
      if ((uint)(iVar6 + *(int *)(iVar1 + 0x14) * 2) <= (uint)piVar4[1]) {
        FUN_00a3fb10();
      }
    }
    pcStack_c4 = (char *)0x951de9;
    BVar3 = GetCharABCWidthsW((HDC)param_1_00[0x42],(uint)*(ushort *)piVar4[1],
                              (uint)*(ushort *)piVar4[1],&_Stack_80);
    if (BVar3 != 0) {
      if (_Stack_80.abcA < 0) {
        tStack_9c.cx = tStack_9c.cx - _Stack_80.abcA;
      }
      if (1 < c) {
        FUN_008478e0();
        puStack_88 = puStack_90;
        uStack_84 = uStack_8c;
        puVar5 = (ushort *)FUN_0085c8b0();
        pcStack_c4 = (char *)0x951e3b;
        GetCharABCWidthsW((HDC)param_1_00[0x42],(uint)*puVar5,(uint)*puVar5,&_Stack_80);
      }
      if (_Stack_80.abcC < 0) {
        tStack_9c.cx = tStack_9c.cx - _Stack_80.abcC;
      }
    }
  }
  if (param_2 != (int *)0x0) {
    *param_2 = tStack_9c.cx;
  }
  if (param_3 != (LONG *)0x0) {
    *param_3 = tStack_9c.cy;
  }
  if ((param_4 != 0) || (param_5 != 0)) {
    pcStack_c4 = (char *)0x0;
    puStack_c8 = (undefined *)0x0;
    uStack_cc = 0x951e96;
    (**(code **)(*param_1_00 + 0xa0))();
  }
  if (local_94 != (HGDIOBJ)0x0) {
    SelectObject((HDC)param_1_00[0x42],local_94);
  }
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00951ed0(int param_1_00,int param_1,int param_2)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  BOOL BVar4;
  int cchString;
  int local_7c;
  tagSIZE local_78 [13];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdba38;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cchString = *(int *)(param_1 + 0x14);
  local_7c = 0;
  local_78[0].cx = 0;
  local_78[0].cy = 0;
  if (DAT_0323af38 == -1) {
    iVar2 = FUN_00894a40();
    DAT_0323af38 = (-(uint)(iVar2 != 8) & 0xffff2001) + 0xffff;
    DAT_0323af34 = (-(uint)(iVar2 != 8) & 0x80008000) + 0x7fffffff;
  }
  *(undefined4 *)(param_2 + 4) = 0;
  FUN_0086a400();
  if (cchString != 0) {
    piVar3 = (int *)FUN_00432231();
    local_4 = 0;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_2 + 4) == 0)) {
      FUN_008402e0();
    }
    if (DAT_0323af38 <= cchString) {
      cchString = DAT_0323af38;
    }
    iVar2 = *piVar3;
    if (*(uint *)(iVar2 + 0x18) < 8) {
      iVar2 = iVar2 + 4;
    }
    else {
      iVar2 = *(int *)(iVar2 + 4);
    }
    BVar4 = GetTextExtentExPointW
                      (*(HDC *)(param_1_00 + 0x108),(LPCWSTR)(iVar2 + piVar3[1] * 2),cchString,
                       DAT_0323af34,&local_7c,*(LPINT *)(param_2 + 8),local_78);
    local_4 = 0xffffffff;
    FUN_00432214();
    if (BVar4 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        local_4 = 1;
        FUN_008423d0();
        local_4._0_1_ = 2;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_00842440();
        local_4 = 0xffffffff;
        FUN_0081b5bc();
      }
      ExceptionList = local_c;
      return 0;
    }
  }
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_00952100(int *param_1_00,int *param_1)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdba89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032c0ebc == '\0') {
    FUN_009506d0();
  }
  if ((((DAT_032c0eac == (code *)0x0) || (DAT_032c0eb0 == (code *)0x0)) || (DAT_032c0eb4 == 0)) ||
     (DAT_032c0eb8 == 0)) {
LAB_00952297:
    uVar2 = 0;
  }
  else {
    cVar1 = (**(code **)(*param_1 + 0x14))();
    if (cVar1 == '\0') {
      if (DAT_032c0ebc == '\0') {
        FUN_009506d0();
      }
      iVar3 = (*DAT_032c0eac)();
      if (iVar3 == 0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 0;
          FUN_008423d0();
          uStack_4._0_1_ = 1;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = (uint)uStack_4._1_3_ << 8;
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
        goto LAB_00952297;
      }
      (**(code **)(*param_1 + 8))();
      if (DAT_032c0ebc == '\0') {
        FUN_009506d0();
      }
      iVar3 = (*DAT_032c0eb0)();
      if (iVar3 == 0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 2;
          FUN_008423d0();
          uStack_4._0_1_ = 3;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = CONCAT31(uStack_4._1_3_,2);
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
        ExceptionList = local_c;
        return 0;
      }
    }
    else {
      (**(code **)(*param_1_00 + 0x118))();
    }
    uVar2 = 1;
  }
  ExceptionList = local_c;
  return uVar2;
}



void FUN_009523f0(undefined4 *param_1)

{
  char cVar1;
  int iVar2;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00bdbacb;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  local_c = 0;
  if (DAT_032c0ebc == '\0') {
    FUN_009506d0();
  }
  if ((((DAT_032c0eac != 0) && (DAT_032c0eb0 != 0)) && (DAT_032c0eb4 != (code *)0x0)) &&
     (DAT_032c0eb8 != 0)) {
    if (DAT_032c0ebc == '\0') {
      FUN_009506d0();
    }
    iVar2 = (*DAT_032c0eb4)();
    if (iVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        local_c._0_1_ = 1;
        FUN_008423d0();
        local_c._0_1_ = 2;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_c._0_1_ = 1;
        FUN_00842440();
        local_c = (uint)local_c._1_3_ << 8;
        FUN_0081b5bc();
      }
    }
    else {
      FUN_009be780();
    }
  }
  *(undefined8 *)(param_1 + 2) = 0x3ff0000000000000;
  *param_1 = wxAffineMatrix2D::vftable;
  *(undefined8 *)(param_1 + 4) = 0;
  *(undefined8 *)(param_1 + 6) = 0;
  *(undefined8 *)(param_1 + 8) = 0x3ff0000000000000;
  *(undefined8 *)(param_1 + 10) = 0;
  *(undefined8 *)(param_1 + 0xc) = 0;
  ExceptionList = local_14;
  return;
}



undefined4 * FUN_00952620(HDC param_1,int param_2,int param_3)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  HBITMAP pHVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbb19;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar3 = GetDeviceCaps(param_1,0xe);
  iVar4 = GetDeviceCaps(param_1,0xc);
  iVar1 = DAT_0323af80;
  while( true ) {
    if (iVar1 == 0) {
      pHVar5 = CreateCompatibleBitmap(param_1,param_2,param_3);
      if (pHVar5 == (HBITMAP)0x0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar2 = FUN_00846b30(6);
        if (cVar2 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 2;
          FUN_008423d0();
          uStack_4._0_1_ = 3;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = CONCAT31(uStack_4._1_3_,2);
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      puVar6 = (undefined4 *)operator_new(0x1c);
      puVar7 = (undefined4 *)0x0;
      if (puVar6 != (undefined4 *)0x0) {
        puVar6[1] = 0;
        puVar6[3] = 0;
        *puVar6 = wxDCCacheEntry::vftable;
        puVar6[2] = pHVar5;
        puVar6[4] = param_2;
        puVar6[5] = param_3;
        puVar6[6] = iVar3 * iVar4;
        puVar7 = puVar6;
      }
      FUN_0086ad60();
      ExceptionList = local_c;
      return puVar7;
    }
    puVar7 = *(undefined4 **)(iVar1 + 8);
    if (puVar7[6] == iVar3 * iVar4) break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  if ((param_2 <= (int)puVar7[4]) && (param_3 <= (int)puVar7[5])) {
    ExceptionList = local_c;
    return puVar7;
  }
  DeleteObject((HGDIOBJ)puVar7[2]);
  pHVar5 = CreateCompatibleBitmap(param_1,param_2,param_3);
  puVar7[2] = pHVar5;
  if (pHVar5 == (HBITMAP)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  puVar7[4] = param_2;
  puVar7[5] = param_3;
  ExceptionList = local_c;
  return puVar7;
}



undefined4 * FUN_009528d0(undefined4 *param_1,HDC param_2)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  HDC pHVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbb50;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar3 = GetDeviceCaps(param_2,0xe);
  iVar4 = GetDeviceCaps(param_2,0xc);
  iVar1 = DAT_0323af98;
  while( true ) {
    if (iVar1 == 0) {
      pHVar5 = CreateCompatibleDC(param_2);
      if (pHVar5 == (HDC)0x0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar2 = FUN_00846b30(6);
        if (cVar2 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 0;
          FUN_008423d0();
          uStack_4._0_1_ = 1;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = (uint)uStack_4._1_3_ << 8;
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      puVar6 = (undefined4 *)operator_new(0x1c);
      puVar7 = (undefined4 *)0x0;
      if (puVar6 != (undefined4 *)0x0) {
        puVar6[1] = 0;
        puVar6[2] = 0;
        puVar6[4] = 0;
        puVar6[5] = 0;
        *puVar6 = wxDCCacheEntry::vftable;
        puVar6[3] = pHVar5;
        puVar6[6] = iVar3 * iVar4;
        puVar7 = puVar6;
      }
      FUN_0086ad60();
      ExceptionList = local_c;
      return puVar7;
    }
    puVar7 = *(undefined4 **)(iVar1 + 8);
    if (((param_1 == (undefined4 *)0x0) || (param_1 != puVar7)) && (puVar7[6] == iVar3 * iVar4))
    break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  ExceptionList = local_c;
  return puVar7;
}



void __thiscall
FUN_00952a60(int param_1_00,HDC param_1,int param_2,int param_3,int param_4,int param_6,int param_7,
            int param_8,int param_9)

{
  char *pcVar1;
  undefined uVar2;
  char cVar3;
  HDC hdc;
  HGDIOBJ h;
  BOOL BVar4;
  int iVar5;
  byte *pbVar6;
  int iVar7;
  int iStack_d4;
  int iStack_d0;
  int iStack_cc;
  HGDIOBJ pvStack_c4;
  int iStack_8c;
  int iStack_80;
  int iStack_6c;
  byte *pbStack_60;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbbca;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_008f53f0();
  local_4 = 0;
  hdc = CreateCompatibleDC((HDC)0x0);
  if (pvStack_c4 != (HGDIOBJ)0x0) {
    pvStack_c4 = *(HGDIOBJ *)((int)pvStack_c4 + 0x14);
  }
  h = SelectObject(hdc,pvStack_c4);
  local_4._0_1_ = 2;
  BVar4 = BitBlt(hdc,0,0,param_1_00,param_4,param_1,param_2,param_3,0xcc0020);
  if (BVar4 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(6);
    if (cVar3 != '\0') {
      FUN_0081c0f1();
      local_4._0_1_ = 3;
      FUN_008423d0();
      local_4._0_1_ = 4;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4._0_1_ = 3;
      FUN_00842440();
      local_4._0_1_ = 2;
      FUN_0081b5bc();
    }
  }
  FUN_00950200();
  local_4._0_1_ = 5;
  FUN_00950200();
  local_4._0_1_ = 6;
  uVar2 = (undefined)local_4;
  local_4._0_1_ = 6;
  if ((pbStack_60 == (byte *)0x0) || (iStack_80 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      local_4._0_1_ = uVar2;
      FUN_00840480();
    }
    local_4._0_1_ = 5;
    FUN_0094fe30();
    local_4 = CONCAT31(local_4._1_3_,2);
    FUN_0094fe30();
  }
  else {
    if (0 < param_4) {
      iStack_d0 = 0;
      iStack_d4 = param_4;
      do {
        if (0 < param_1_00) {
          iVar7 = 0;
          pbVar6 = pbStack_60;
          iStack_cc = param_1_00;
          do {
            iVar5 = iVar7 / param_1_00;
            iVar7 = iVar7 + param_8;
            pcVar1 = (char *)((iStack_d0 / param_4 + param_7) * iStack_8c + iStack_80 +
                             (iVar5 + param_6) * 4);
            iVar5 = 0xff - (uint)(byte)pcVar1[3];
            pbVar6[2] = (char)(((uint)pbVar6[2] * iVar5 + 0x7f) / 0xff) + pcVar1[2];
            *pbVar6 = (char)(((uint)*pbVar6 * iVar5 + 0x7f) / 0xff) + *pcVar1;
            iStack_cc = iStack_cc + -1;
            pbVar6[1] = (char)(((uint)pbVar6[1] * iVar5 + 0x7f) / 0xff) + pcVar1[1];
            pbVar6 = pbVar6 + 4;
          } while (iStack_cc != 0);
        }
        iStack_d0 = iStack_d0 + param_9;
        pbStack_60 = pbStack_60 + iStack_6c;
        iStack_d4 = iStack_d4 + -1;
      } while (iStack_d4 != 0);
    }
    BVar4 = BitBlt(param_1,param_2,param_3,param_1_00,param_4,hdc,0,0,0xcc0020);
    if (BVar4 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar3 = FUN_00846b30(6);
      if (cVar3 != '\0') {
        FUN_0081c0f1();
        local_4._0_1_ = 7;
        FUN_008423d0();
        local_4._0_1_ = 8;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_4._0_1_ = 7;
        FUN_00842440();
        local_4._0_1_ = 6;
        FUN_0081b5bc();
      }
    }
    local_4._0_1_ = 5;
    FUN_0094fe30();
    local_4 = CONCAT31(local_4._1_3_,2);
    FUN_0094fe30();
  }
  if (hdc != (HDC)0x0) {
    SelectObject(hdc,h);
  }
  DeleteDC(hdc);
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00952ec0(int param_1_00,int *param_1,int *param_2,int *param_3,int param_4)

{
  code *pcVar1;
  int iVar2;
  byte bVar3;
  char cVar4;
  int iVar5;
  undefined auStack_d8 [8];
  undefined4 uStack_d0;
  undefined *puStack_cc;
  char *pcStack_c8;
  char *pcStack_c4;
  wchar_t *pwStack_c0;
  char *pcStack_bc;
  wchar_t *pwStack_b8;
  uint uStack_b4;
  int local_9c;
  int local_98;
  short asStack_94 [4];
  int local_8c;
  int local_88;
  short asStack_84 [4];
  undefined4 local_7c;
  undefined4 local_78;
  undefined *puStack_74;
  undefined auStack_70 [100];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdbc0e;
  local_c = ExceptionList;
  uStack_b4 = DAT_0323f878 ^ (uint)&stack0xffffff50;
  ExceptionList = &local_c;
  if ((DAT_032c0ed4 & 1) == 0) {
    DAT_032c0ed4 = DAT_032c0ed4 | 1;
    pwStack_b8 = L"GradientFill";
    local_4 = 0;
    pcStack_bc = (char *)0x952f1b;
    DAT_032c0ed0 = (code *)FUN_00950560();
  }
  local_4 = 0xffffffff;
  if (DAT_032c0ed0 != (code *)0x0) {
    iVar5 = 1;
    local_7c = 0;
    local_78 = 1;
    if ((param_4 != 0x40) && (param_4 != 0x10)) {
      iVar5 = 0;
    }
    local_9c = *param_1;
    local_98 = param_1[1];
    local_8c = param_1[2] + local_9c;
    local_88 = param_1[3] + local_98;
    pwStack_b8 = 
    L"喋昀똏诈ᑂ셦࣡襦㑌謠ￍ诐Uས좶䊋昘\xe1c1昈䲉∴춋탿ས좶ދ셦࣡툳襦㑌昤咉☴傋謐ￏ诒昗똏曀\xe0c1贈⑌⬰曎Ɖ䊋謔ￏ曐똏诈昇\xe1c1贈⑔⬲曖ઉ傋謘ￏ曒똏曀\xe0c1贈⑌⬴曎Ɖ咍㘤쀳혫襦謂⒄Ä"
    ;
    bVar3 = (**(code **)(*param_2 + 0x10))();
    pcVar1 = *(code **)(*param_2 + 0x14);
    asStack_94[iVar5 * 8] = (ushort)bVar3 << 8;
    pwStack_b8 = 
    L"喋昀똏诈ᡂ셦࣡襦㑌謢ￍ曐똏诈昇\xe1c1㌈曒䲉␴襦㑔謦ၐ쾋틿ឋས삶셦࣠䲍〤츫襦謁ᑂ쾋탿ས좶ދ셦࣡咍㈤혫襦謊ᡐ쾋틿ས삶셦࣠䲍㐤츫襦贁⑔㌶⯀曖ʉ蒋쐤"
    ;
    bVar3 = (*pcVar1)();
    pcVar1 = *(code **)(*param_2 + 0x18);
    asStack_94[iVar5 * 8 + 1] = (ushort)bVar3 << 8;
    pwStack_b8 = 
    L"ས좶ދ셦࣡툳襦㑌昤咉☴傋謐ￏ诒昗똏曀\xe0c1贈⑌⬰曎Ɖ䊋謔ￏ曐똏诈昇\xe1c1贈⑔⬲曖ઉ傋謘ￏ曒똏曀\xe0c1贈⑌⬴曎Ɖ咍㘤쀳혫襦謂⒄Ä"
    ;
    bVar3 = (*pcVar1)();
    iVar2 = *param_3;
    asStack_94[iVar5 * 8 + 2] = (ushort)bVar3 << 8;
    asStack_94[iVar5 * 8 + 3] = 0;
    pwStack_b8 = 
    L"ឋས삶셦࣠䲍〤츫襦謁ᑂ쾋탿ས좶ދ셦࣡咍㈤혫襦謊ᡐ쾋틿ས삶셦࣠䲍㐤츫襦贁⑔㌶⯀曖ʉ蒋쐤"
    ;
    bVar3 = (**(code **)(iVar2 + 0x10))();
    iVar2 = *param_3;
    asStack_84[iVar5 * -8] = (ushort)bVar3 << 8;
    pwStack_b8 = 
    L"ས좶ދ셦࣡咍㈤혫襦謊ᡐ쾋틿ས삶셦࣠䲍㐤츫襦贁⑔㌶⯀曖ʉ蒋쐤";
    bVar3 = (**(code **)(iVar2 + 0x14))();
    iVar2 = *param_3;
    asStack_84[iVar5 * -8 + 1] = (ushort)bVar3 << 8;
    pwStack_b8 = L"ས삶셦࣠䲍㐤츫襦贁⑔㌶⯀曖ʉ蒋쐤";
    bVar3 = (**(code **)(iVar2 + 0x18))();
    asStack_84[iVar5 * -8 + 2] = (ushort)bVar3 << 8;
    asStack_84[iVar5 * -8 + 3] = 0;
    if ((param_4 == 0x10) || (param_4 == 0x20)) {
      pwStack_b8 = (wchar_t *)0x0;
    }
    else {
      pwStack_b8 = (wchar_t *)0x1;
    }
    puStack_cc = *(undefined **)(param_1_00 + 0x108);
    pcStack_bc = (char *)0x1;
    pwStack_c0 = (wchar_t *)&local_7c;
    pcStack_c4 = (char *)0x2;
    pcStack_c8 = (char *)&local_9c;
    uStack_d0 = 0x953072;
    iVar5 = (*DAT_032c0ed0)();
    if (iVar5 != 0) {
      ExceptionList = local_c;
      return;
    }
    puStack_74 = auStack_d8;
    FUN_0043c211(&DAT_00d25fa0);
    cVar4 = FUN_00846b30(6);
    if (cVar4 != '\0') {
      pwStack_b8 = L"%s(%d): \'%s\' failed with error 0x%08lx (%s).";
      pcStack_bc = (char *)0x9530ad;
      FUN_0081c0f1();
      pwStack_b8 = (wchar_t *)&DAT_00d25fa0;
      pcStack_bc = "wxMSWDCImpl::DoGradientFillLinear";
      pwStack_c0 = (wchar_t *)0xb47;
      pcStack_c4 = "..\\..\\src\\msw\\dc.cpp";
      pcStack_c8 = (char *)0x6;
      local_4 = 1;
      puStack_cc = (undefined *)0x9530d7;
      FUN_008423d0();
      local_4._0_1_ = 2;
      pwStack_b8 = L"\xe850ؔ￯쒃倄毨\xeefe僿ﱨ헅栀େ";
      pwStack_b8 = (wchar_t *)GetLastError();
      pcStack_bc = (char *)0x9530ec;
      pwStack_b8 = (wchar_t *)FUN_00843700();
      pcStack_bc = (char *)0x9530f5;
      pcStack_bc = (char *)GetLastError();
      pwStack_c0 = L"GradientFill";
      pcStack_c4 = (char *)0xb47;
      pcStack_c8 = "..\\..\\src\\msw\\dc.cpp";
      puStack_cc = auStack_70;
      uStack_d0 = 0x953111;
      FUN_00847d90();
      local_4 = CONCAT31(local_4._1_3_,1);
      pwStack_b8 = L"䲍䐤蓇뀤";
      FUN_00842440();
      local_4 = 0xffffffff;
      pwStack_b8 = L"貋쐤";
      FUN_0081b5bc();
    }
  }
  pwStack_b8 = (wchar_t *)param_4;
  pcStack_bc = (char *)param_3;
  pwStack_c0 = (wchar_t *)param_2;
  pcStack_c4 = (char *)param_1;
  pcStack_c8 = (char *)0x95314a;
  FUN_0094cd90();
  ExceptionList = local_c;
  return;
}



void FUN_00953170(int *param_1,int *param_2)

{
  char cVar1;
  int iVar2;
  
  cVar1 = (**(code **)(*param_2 + 0x24))();
  if (cVar1 == '\0') {
    iVar2 = -1;
  }
  else {
    iVar2 = param_2[2];
  }
  cVar1 = (**(code **)(*param_1 + 0x24))();
  if (cVar1 != '\0') {
    FUN_0093f7a0(param_1[2],iVar2);
    return;
  }
  FUN_0093f7a0(0xffffffff,iVar2);
  return;
}



int * __thiscall FUN_009531d0(int *param_1_00,int *param_1)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdbc43;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *param_1_00 = param_1[0x42];
  param_1_00[1] = 0;
  param_1_00[2] = param_1[0x42];
  param_1_00[4] = -1;
  param_1_00[3] = -1;
  local_4 = 1;
  piVar3 = (int *)(**(code **)(*param_1 + 100))(uVar2);
  cVar1 = (**(code **)(*piVar3 + 0x10))();
  if (cVar1 != '\0') {
    iVar4 = (**(code **)(*piVar3 + 0x40))();
    if (iVar4 == 0x6b) {
      uVar5 = (**(code **)(*param_1 + 0x7c))();
      uVar6 = (**(code **)(*param_1 + 0x84))(uVar5);
      FUN_00953170(uVar6,uVar5);
      uVar5 = (**(code **)(*param_1 + 0x74))();
      FUN_0093f9b0(uVar5);
    }
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall
FUN_009532a0(int *param_1_00,int param_1,int param_2,int param_3,int param_4,int param_5,int param_6
            )

{
  char cVar1;
  uint uVar2;
  int mode;
  int iVar3;
  int iVar4;
  HDC pHStack_30;
  HDC local_28;
  COLORREF CStack_24;
  COLORREF local_20;
  void *pvStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbc68;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  FUN_00a4d440(uVar2);
  mode = FUN_00a49750();
  FUN_009531d0(param_1_00);
  local_4 = 0;
  if ((param_1 == param_3) && (param_2 == param_4)) {
    (**(code **)(**(int **)(param_1_00[2] + 8) + 0x158))
              (param_5 - mode,param_6 - mode,mode * 2,mode * 2);
    FUN_0094ee80();
    ExceptionList = pvStack_1c;
    return;
  }
  FUN_00a4d440(uVar2);
  iVar3 = FUN_00a49750();
  pHStack_30 = (HDC)((ulonglong)(double)(param_5 - param_1) >> 0x20);
  cVar1 = (**(code **)(param_1_00[0x2b] + 0x10))();
  if ((cVar1 == '\0') || (iVar4 = (**(code **)(param_1_00[0x2b] + 0x40))(), iVar4 == 0x6a)) {
    Arc((HDC)param_1_00[0x42],param_5 - iVar3,param_6 - iVar3,iVar3 + param_5,iVar3 + param_6,
        param_1,param_2,param_3,param_4);
  }
  else {
    Pie((HDC)param_1_00[0x42],param_5 - iVar3,param_6 - iVar3,iVar3 + param_5 + 1,
        iVar3 + param_6 + 1,param_1,param_2,param_3,param_4);
  }
  (**(code **)(*param_1_00 + 0x4c))(param_5 - mode,param_6 - mode);
  (**(code **)(*param_1_00 + 0x4c))(mode + param_5,param_6 + mode);
  CStack_24 = (COLORREF)((ulonglong)(double)(param_6 - param_2) >> 0x20);
  local_28 = SUB84((double)(param_6 - param_2),0);
  if (CStack_24 != 0xffffffff) {
    SetTextColor(local_28,CStack_24);
  }
  if (local_20 != 0xffffffff) {
    SetBkColor(local_28,local_20);
  }
  if (mode != 0) {
    SetBkMode(pHStack_30,mode);
  }
  ExceptionList = pvStack_1c;
  return;
}



void __thiscall
FUN_009534a0(int *param_1_00,uint param_1,POINT *param_2,int param_3,int param_4,int param_5)

{
  uint uVar1;
  POINT *apt;
  int iVar2;
  POINT *pPVar3;
  HDC local_20;
  int iStack_1c;
  HDC pHStack_18;
  COLORREF CStack_14;
  COLORREF CStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbc98;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  FUN_009531d0(param_1_00);
  iVar2 = 0;
  local_4 = 0;
  if ((param_3 == 0) && (param_4 == 0)) {
    if (0 < (int)param_1) {
      do {
        (**(code **)(*param_1_00 + 0x4c))(param_2[iVar2].x,param_2[iVar2].y);
        iVar2 = iVar2 + 1;
      } while (iVar2 < (int)param_1);
    }
    iVar2 = SetPolyFillMode((HDC)param_1_00[0x42],(param_5 != 1) + 1);
    Polygon((HDC)param_1_00[0x42],param_2,param_1);
    SetPolyFillMode((HDC)param_1_00[0x42],iVar2);
  }
  else {
    apt = (POINT *)FUN_00823c23(-(uint)((int)((ulonglong)param_1 * 8 >> 0x20) != 0) |
                                (uint)((ulonglong)param_1 * 8),uVar1);
    if (0 < (int)param_1) {
      uVar1 = param_1;
      pPVar3 = apt;
      do {
        pPVar3->x = *(int *)(((int)param_2 - (int)apt) + (int)pPVar3) + param_3;
        iVar2 = *(int *)(((int)param_2 - (int)apt) + 4 + (int)pPVar3) + param_4;
        pPVar3->y = iVar2;
        (**(code **)(*param_1_00 + 0x4c))(pPVar3->x,iVar2);
        pPVar3 = pPVar3 + 1;
        uVar1 = uVar1 - 1;
      } while (uVar1 != 0);
    }
    iVar2 = SetPolyFillMode((HDC)param_1_00[0x42],(param_5 != 1) + 1);
    Polygon((HDC)param_1_00[0x42],apt,param_1);
    SetPolyFillMode((HDC)param_1_00[0x42],iVar2);
    FUN_00a3f66c(apt);
  }
  if (CStack_14 != 0xffffffff) {
    SetTextColor(pHStack_18,CStack_14);
  }
  if (CStack_10 != 0xffffffff) {
    SetBkColor(pHStack_18,CStack_10);
  }
  if (iStack_1c != 0) {
    SetBkMode(local_20,iStack_1c);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_00953650(int *param_1_00,int param_1,INT *param_2,POINT *param_3,int param_4,int param_5,
            int param_6)

{
  uint uVar1;
  int iVar2;
  POINT *apt;
  int iVar3;
  uint uVar4;
  int iVar5;
  POINT *pPVar6;
  HDC local_20;
  int iStack_1c;
  HDC pHStack_18;
  COLORREF CStack_14;
  COLORREF CStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbc98;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  uVar4 = 0;
  iVar5 = 0;
  iVar3 = 0;
  FUN_009531d0(param_1_00);
  iVar2 = 0;
  local_4 = 0;
  if (0 < param_1) {
    if (1 < param_1) {
      do {
        iVar5 = iVar5 + param_2[iVar2];
        iVar3 = iVar3 + param_2[iVar2 + 1];
        iVar2 = iVar2 + 2;
      } while (iVar2 < param_1 + -1);
    }
    if (iVar2 < param_1) {
      uVar4 = param_2[iVar2];
    }
    uVar4 = uVar4 + iVar3 + iVar5;
  }
  if ((param_4 == 0) && (param_5 == 0)) {
    iVar2 = 0;
    if (0 < (int)uVar4) {
      do {
        (**(code **)(*param_1_00 + 0x4c))(param_3[iVar2].x,param_3[iVar2].y);
        iVar2 = iVar2 + 1;
      } while (iVar2 < (int)uVar4);
    }
    iVar2 = SetPolyFillMode((HDC)param_1_00[0x42],(param_6 != 1) + 1);
    PolyPolygon((HDC)param_1_00[0x42],param_3,param_2,param_1);
    SetPolyFillMode((HDC)param_1_00[0x42],iVar2);
  }
  else {
    apt = (POINT *)FUN_00823c23(-(uint)((int)((ulonglong)uVar4 * 8 >> 0x20) != 0) |
                                (uint)((ulonglong)uVar4 * 8),uVar1);
    if (0 < (int)uVar4) {
      pPVar6 = apt;
      do {
        pPVar6->x = *(int *)(((int)param_3 - (int)apt) + (int)pPVar6) + param_4;
        iVar2 = *(int *)(((int)param_3 - (int)apt) + 4 + (int)pPVar6) + param_5;
        pPVar6->y = iVar2;
        (**(code **)(*param_1_00 + 0x4c))(pPVar6->x,iVar2);
        pPVar6 = pPVar6 + 1;
        uVar4 = uVar4 - 1;
      } while (uVar4 != 0);
    }
    iVar2 = SetPolyFillMode((HDC)param_1_00[0x42],(param_6 != 1) + 1);
    PolyPolygon((HDC)param_1_00[0x42],apt,param_2,param_1);
    SetPolyFillMode((HDC)param_1_00[0x42],iVar2);
    FUN_00a3f66c(apt);
  }
  if (CStack_14 != 0xffffffff) {
    SetTextColor(pHStack_18,CStack_14);
  }
  if (CStack_10 != 0xffffffff) {
    SetBkColor(pHStack_18,CStack_10);
  }
  if (iStack_1c != 0) {
    SetBkMode(local_20,iStack_1c);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00953840(int *param_1_00,int param_1,int param_2,int param_3,int param_4)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int right;
  int bottom;
  COLORREF unaff_EBX;
  HDC unaff_EBP;
  int unaff_ESI;
  HDC unaff_EDI;
  COLORREF local_20;
  void *pvStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbcc8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  FUN_009531d0(param_1_00);
  param_3 = param_1 + param_3;
  param_4 = param_2 + param_4;
  local_4 = 0;
  cVar1 = (**(code **)(param_1_00[0x29] + 0x10))(uVar2);
  right = param_3;
  bottom = param_4;
  if ((cVar1 != '\0') && (iVar3 = (**(code **)(param_1_00[0x29] + 0x54))(), iVar3 == 0x6a)) {
    right = param_3 + 1;
    bottom = param_4 + 1;
  }
  Rectangle((HDC)param_1_00[0x42],param_1,param_2,right,bottom);
  (**(code **)(*param_1_00 + 0x4c))(param_1,param_2);
  (**(code **)(*param_1_00 + 0x4c))(param_3,param_4);
  if (unaff_EBX != 0xffffffff) {
    SetTextColor(unaff_EBP,unaff_EBX);
  }
  if (local_20 != 0xffffffff) {
    SetBkColor(unaff_EBP,local_20);
  }
  if (unaff_ESI != 0) {
    SetBkMode(unaff_EDI,unaff_ESI);
  }
  ExceptionList = pvStack_1c;
  return;
}



void __thiscall FUN_00953950(int *param_1_00,int param_1,int param_2,int param_3,int param_4)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  COLORREF unaff_EBX;
  HDC unaff_EBP;
  int unaff_ESI;
  HDC unaff_EDI;
  COLORREF local_20;
  void *pvStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbcc8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  FUN_009531d0(param_1_00);
  local_4 = 0;
  param_3 = param_1 + param_3;
  param_4 = param_2 + param_4;
  cVar1 = (**(code **)(param_1_00[0x29] + 0x10))(uVar2);
  if ((cVar1 != '\0') && (iVar3 = (**(code **)(param_1_00[0x29] + 0x54))(), iVar3 == 0x6a)) {
    param_3 = param_3 + 1;
    param_4 = param_4 + 1;
  }
  iVar3 = FUN_00a49750();
  RoundRect((HDC)param_1_00[0x42],param_1,param_2,param_3,param_4,iVar3,iVar3);
  (**(code **)(*param_1_00 + 0x4c))(param_1,param_2);
  (**(code **)(*param_1_00 + 0x4c))(param_3,param_4);
  if (unaff_EBX != 0xffffffff) {
    SetTextColor(unaff_EBP,unaff_EBX);
  }
  if (local_20 != 0xffffffff) {
    SetBkColor(unaff_EBP,local_20);
  }
  if (unaff_ESI != 0) {
    SetBkMode(unaff_EDI,unaff_ESI);
  }
  ExceptionList = pvStack_1c;
  return;
}



void __thiscall FUN_00953a90(int *param_1_00,int param_1,int param_2,int param_3,int param_4)

{
  uint uVar1;
  COLORREF unaff_EBX;
  HDC unaff_EBP;
  int unaff_ESI;
  HDC unaff_EDI;
  COLORREF local_20;
  void *pvStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbcc8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  FUN_009531d0(param_1_00);
  param_3 = param_1 + 1 + param_3;
  local_4 = 0;
  Ellipse((HDC)param_1_00[0x42],param_1,param_2,param_3,param_4 + 1 + param_2);
  (**(code **)(*param_1_00 + 0x4c))(param_1,param_2,uVar1);
  (**(code **)(*param_1_00 + 0x4c))(param_3,local_4);
  if (unaff_EBX != 0xffffffff) {
    SetTextColor(unaff_EBP,unaff_EBX);
  }
  if (local_20 != 0xffffffff) {
    SetBkColor(unaff_EBP,local_20);
  }
  if (unaff_ESI != 0) {
    SetBkMode(unaff_EDI,unaff_ESI);
  }
  ExceptionList = pvStack_1c;
  return;
}



void __thiscall
FUN_00953b70(int *param_1_00,int param_1,int param_2,uint param_3,uint param_4,double param_5,
            double param_6)

{
  int x2;
  int y2;
  double dVar1;
  double dVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  HGDIOBJ pvVar7;
  int yr2;
  int iVar8;
  undefined4 unaff_EBP;
  int iVar9;
  HDC pHVar10;
  int bottom;
  HDC local_30;
  int iStack_2c;
  HDC local_28;
  COLORREF CStack_24;
  COLORREF local_20;
  void *pvStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbcf8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  FUN_009531d0(param_1_00);
  x2 = param_1 + param_3;
  y2 = param_4 + param_2;
  iVar9 = (int)param_3 / 2 + param_1;
  iVar8 = (int)param_4 / 2 + param_2;
  local_4 = 0;
  dVar1 = (double)((param_3 ^ (int)param_3 >> 0x1f) - ((int)param_3 >> 0x1f)) * -100.0;
  FUN_00a4d220(uVar3);
  iVar4 = FUN_00a49750();
  iVar4 = iVar9 - iVar4;
  dVar2 = (double)((param_4 ^ (int)param_4 >> 0x1f) - ((int)param_4 >> 0x1f)) * 100.0 *
          (double)param_1_00[0x19];
  FUN_00a4d0f0();
  iVar5 = FUN_00a49750();
  iVar5 = iVar8 - iVar5;
  FUN_00a4d220();
  iVar6 = FUN_00a49750();
  iVar9 = iVar9 - iVar6;
  FUN_00a4d0f0();
  iVar6 = FUN_00a49750();
  param_3 = iVar8 - iVar6;
  iVar6 = iVar5;
  iVar8 = iVar9;
  if ((param_6 * 3.141592653589793) / 180.0 < (param_5 * 3.141592653589793) / 180.0) {
    iVar6 = param_3;
    iVar8 = iVar4;
    iVar4 = iVar9;
    param_3 = iVar5;
  }
  pHVar10 = (HDC)param_1_00[0x42];
  pvVar7 = GetStockObject(8);
  pvVar7 = SelectObject(pHVar10,pvVar7);
  if (param_1_00[0x19] < 1) {
    yr2 = param_3 + -1;
    iVar5 = iVar6 + -1;
    pHVar10 = (HDC)param_1_00[0x42];
    iVar9 = param_2 + -1;
    bottom = y2;
  }
  else {
    pHVar10 = (HDC)param_1_00[0x42];
    iVar9 = param_2;
    bottom = y2 + 1;
    iVar5 = iVar6;
    yr2 = param_3;
  }
  Pie(pHVar10,param_1,iVar9,x2 + 1,bottom,iVar4,iVar5,iVar8,yr2);
  SelectObject((HDC)param_1_00[0x42],pvVar7);
  Arc((HDC)param_1_00[0x42],param_1,param_2,x2,y2,iVar4,iVar6,iVar8,param_3);
  (**(code **)(*param_1_00 + 0x4c))(param_1,param_2);
  (**(code **)(*param_1_00 + 0x4c))(x2,unaff_EBP);
  CStack_24 = (COLORREF)((ulonglong)dVar2 >> 0x20);
  local_28 = SUB84(dVar2,0);
  if (CStack_24 != 0xffffffff) {
    SetTextColor(local_28,CStack_24);
  }
  if (local_20 != 0xffffffff) {
    SetBkColor(local_28,local_20);
  }
  iStack_2c = (int)((ulonglong)dVar1 >> 0x20);
  if (iStack_2c != 0) {
    local_30 = SUB84(dVar1,0);
    SetBkMode(local_30,iStack_2c);
  }
  ExceptionList = pvStack_1c;
  return;
}



undefined4 __thiscall FUN_00953de0(int param_1)

{
  char cVar1;
  int iVar2;
  int unaff_EDI;
  int *param_9;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbd3e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    cVar1 = (**(code **)(*param_9 + 0x10))();
    if ((cVar1 == '\0') || (cVar1 = FUN_008f2600(), cVar1 == '\0')) {
      FUN_00840480();
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((unaff_EDI == 0 || (param_1 == 0)))) {
      FUN_00840480();
    }
  }
  if ((DAT_032c0edc & 1) == 0) {
    DAT_032c0edc = DAT_032c0edc | 1;
    uStack_4 = 0;
    DAT_032c0ed8 = (code *)FUN_00950560();
    uStack_4 = 0xffffffff;
  }
  if (DAT_032c0ed8 != (code *)0x0) {
    iVar2 = (*DAT_032c0ed8)();
    if (iVar2 != 0) {
      ExceptionList = local_c;
      return 1;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 1;
      FUN_008423d0();
      uStack_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  FUN_00952a60();
  ExceptionList = local_c;
  return 1;
}



undefined4 * __thiscall
FUN_00954050(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  *param_1_00 = param_1;
  FUN_00953170(param_2,param_3);
  return param_1_00;
}



void __thiscall FUN_00954070(HDC param_1_00,int *param_1,int param_3,int param_4,char param_5)

{
  char cVar1;
  HDC pHVar2;
  HGDIOBJ pvVar3;
  int iVar4;
  HDC hdc;
  HPALETTE pHVar5;
  int *piVar6;
  int *piVar7;
  int iVar8;
  undefined4 unaff_EBX;
  undefined4 unaff_retaddr;
  BOOL BVar9;
  int iStack_54;
  HPALETTE pHStack_50;
  HDC local_4c;
  HDC pHStack_48;
  HGDIOBJ pvStack_44;
  COLORREF CStack_40;
  HDC pHStack_3c;
  undefined auStack_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  piVar6 = param_1;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbd9e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4c = param_1_00;
  cVar1 = (**(code **)(*param_1 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffff9c);
  if (cVar1 == '\0') {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      ExceptionList = local_c;
      return;
    }
    FUN_00840480("..\\..\\src\\msw\\dc.cpp",0x4f8,"wxMSWDCImpl::DoDrawBitmap","bmp.IsOk()",
                 L"invalid bitmap in wxMSWDCImpl::DrawBitmap");
    ExceptionList = local_c;
    return;
  }
  iVar4 = param_1[1];
  if (iVar4 == 0) {
    iStack_54 = 0;
    param_1 = (int *)0x0;
  }
  else {
    iStack_54 = *(int *)(iVar4 + 8);
    param_1 = *(int **)(iVar4 + 0xc);
  }
  pHStack_50 = (HPALETTE)0x0;
  cVar1 = FUN_008f2600();
  if (cVar1 != '\0') {
    pHVar2 = CreateCompatibleDC((HDC)0x0);
    uStack_4 = 0;
    if (piVar6[1] == 0) {
      pvVar3 = (HGDIOBJ)0x0;
    }
    else {
      pvVar3 = *(HGDIOBJ *)(piVar6[1] + 0x14);
    }
    pHStack_48 = pHVar2;
    pHStack_3c = pHVar2;
    pvVar3 = SelectObject(pHVar2,pvVar3);
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    pvStack_44 = pvVar3;
    cVar1 = FUN_00953de0(param_3,param_4,iStack_54,param_1,0,0,iStack_54,param_1,piVar6);
    if (cVar1 != '\0') {
      if (pHVar2 != (HDC)0x0) {
        SelectObject(pHVar2,pvVar3);
      }
      DeleteDC(pHVar2);
      ExceptionList = local_c;
      return;
    }
    if (pHVar2 != (HDC)0x0) {
      SelectObject(pHVar2,pvVar3);
    }
    uStack_4 = 0xffffffff;
    DeleteDC(pHVar2);
    param_1_00 = local_4c;
  }
  FUN_00950cb0(param_1_00[0x42].unused);
  uStack_4 = 2;
  if (((param_5 == '\0') || (iVar4 = FUN_008f25d0(), iVar4 == 0)) ||
     (pHStack_48 = *(HDC *)(iVar4 + 8), pHStack_48 == (HDC)0x0)) {
    local_4c = (HDC)param_1_00[0x42].unused;
    pHVar2 = CreateCompatibleDC(local_4c);
    if (piVar6[1] == 0) {
      _param_5 = (HGDIOBJ)0x0;
    }
    else {
      _param_5 = *(HGDIOBJ *)(piVar6[1] + 0x14);
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (_param_5 == (HGDIOBJ)0x0)) {
      FUN_00840480("..\\..\\src\\msw\\dc.cpp",0x55d,"wxMSWDCImpl::DoDrawBitmap","hbitmap",
                   L"bitmap is ok but HBITMAP is NULL?");
    }
    pHStack_48 = (HDC)param_1_00[0x42].unused;
    piVar6 = (int *)(**(code **)(param_1_00->unused + 0x84))();
    piVar7 = (int *)(**(code **)(param_1_00->unused + 0x7c))();
    cVar1 = (**(code **)(*piVar6 + 0x24))();
    if (cVar1 == '\0') {
      iVar4 = -1;
    }
    else {
      iVar4 = piVar6[2];
    }
    cVar1 = (**(code **)(*piVar7 + 0x24))();
    if (cVar1 == '\0') {
      iVar8 = -1;
    }
    else {
      iVar8 = piVar7[2];
    }
    FUN_0093f7a0(iVar8,iVar4);
    uStack_4 = CONCAT31(uStack_4._1_3_,6);
    iVar4 = FUN_008f25c0();
    if ((iVar4 != 0) && (iVar4 = GetDeviceCaps(local_4c,0xc), iVar4 < 9)) {
      BVar9 = 0;
      pHVar5 = (HPALETTE)FUN_00992eb0();
      pHStack_50 = SelectPalette(pHVar2,pHVar5,BVar9);
      RealizePalette(pHVar2);
    }
    pvVar3 = SelectObject(pHVar2,_param_5);
    BitBlt(local_4c,param_3,param_4,iStack_54,(int)param_1,pHVar2,0,0,0xcc0020);
    if (pHStack_50 != (HPALETTE)0x0) {
      SelectPalette(pHVar2,pHStack_50,0);
    }
    SelectObject(pHVar2,pvVar3);
    DeleteDC(pHVar2);
    pHVar2 = pHStack_48;
    if (pvStack_44 != (HGDIOBJ)0xffffffff) {
      SetTextColor(pHStack_48,(COLORREF)pvStack_44);
    }
    if (CStack_40 != 0xffffffff) {
      SetBkColor(pHVar2,CStack_40);
    }
  }
  else {
    if ((DAT_032c0ee4 & 1) == 0) {
      DAT_032c0ee4 = DAT_032c0ee4 | 1;
      uStack_4._0_1_ = 3;
      FUN_0043c211("no-maskblt");
      uStack_4._0_1_ = 4;
      iVar4 = FUN_00897050(auStack_30);
      DAT_032c0ee0 = iVar4 == 0;
      FUN_0040159c();
      uStack_4 = CONCAT31(uStack_4._1_3_,2);
    }
    if (DAT_032c0ee0 != '\0') {
      pHVar2 = (HDC)param_1_00[0x42].unused;
      hdc = CreateCompatibleDC(pHVar2);
      pvVar3 = (HGDIOBJ)piVar6[1];
      if (pvVar3 != (HGDIOBJ)0x0) {
        pvVar3 = *(HGDIOBJ *)((int)pvVar3 + 0x14);
      }
      pHStack_3c = (HDC)SelectObject(hdc,pvVar3);
      iVar4 = FUN_008f25c0();
      if ((iVar4 != 0) && (iVar4 = GetDeviceCaps(pHVar2,0xc), iVar4 < 9)) {
        BVar9 = 0;
        pHVar5 = (HPALETTE)FUN_00992eb0();
        pHStack_50 = SelectPalette(hdc,pHVar5,BVar9);
        RealizePalette(hdc);
      }
      BVar9 = MaskBlt(pHVar2,param_3,param_4,iStack_54,(int)param_1,hdc,0,0,(HBITMAP)pHStack_48,0,0,
                      0xaacc0020);
      if (pHStack_50 != (HPALETTE)0x0) {
        SelectPalette(hdc,pHStack_50,0);
      }
      SelectObject(hdc,pHStack_3c);
      DeleteDC(hdc);
      param_1_00 = local_4c;
      if (BVar9 != 0) goto LAB_009544da;
    }
    FUN_0094bd80();
    uStack_4._0_1_ = 5;
    FUN_0094be70(piVar6);
    (**(code **)(**(int **)(param_1_00[2].unused + 8) + 0x170))
              (param_1,param_3,unaff_EBX,unaff_retaddr,&local_4c,0,0,5,param_4,0xffffffff,0xffffffff
              );
    FUN_0094c840(&PTR_vftable_03238cc8);
    uStack_4 = CONCAT31(uStack_4._1_3_,2);
    FUN_00457221();
  }
LAB_009544da:
  uStack_4 = 0xffffffff;
  FUN_00950dc0();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00954530(int *param_1,int param_2,int param_3,int param_4)

{
  HDC hdc;
  HDC hdc_00;
  char cVar1;
  int *piVar2;
  int *piVar3;
  BOOL BVar4;
  int iVar5;
  int iStack_80;
  COLORREF CStack_78;
  COLORREF CStack_74;
  int iStack_70;
  char cStack_68;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbde3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  hdc = (HDC)param_1[0x42];
  piVar2 = (int *)(**(code **)(*param_1 + 0x84))();
  piVar3 = (int *)(**(code **)(*param_1 + 0x7c))();
  (**(code **)(*piVar2 + 0x24))();
  (**(code **)(*piVar3 + 0x24))();
  FUN_0093f7a0();
  hdc_00 = (HDC)param_1[0x42];
  uStack_4 = 0;
  FUN_0093f9b0();
  uStack_4._0_1_ = 1;
  piVar2 = (int *)FUN_00432231();
  iVar5 = *piVar2;
  if (*(uint *)(iVar5 + 0x18) < 8) {
    iVar5 = iVar5 + 4;
  }
  else {
    iVar5 = *(int *)(iVar5 + 4);
  }
  BVar4 = ExtTextOutW((HDC)param_1[0x42],param_3,param_4,0,(RECT *)0x0,
                      (LPCWSTR)(iVar5 + piVar2[1] * 2),*(UINT *)(param_2 + 0x14),(INT *)0x0);
  if ((cStack_68 != '\0') && (iStack_70 != 0)) {
    _free(*(void **)(iStack_70 + 0x1c));
    if (7 < *(uint *)(iStack_70 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    *(undefined4 *)(iStack_70 + 0x18) = 7;
    *(undefined4 *)(iStack_70 + 0x14) = 0;
    *(undefined2 *)(iStack_70 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (BVar4 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4._0_1_ = 2;
      FUN_008423d0();
      uStack_4._0_1_ = 3;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4._0_1_ = 2;
      FUN_00842440();
      uStack_4._0_1_ = 1;
      FUN_0081b5bc();
    }
  }
  if (iStack_80 != 0) {
    SetBkMode(hdc_00,iStack_80);
  }
  if (CStack_78 != 0xffffffff) {
    SetTextColor(hdc,CStack_78);
  }
  if (CStack_74 != 0xffffffff) {
    SetBkColor(hdc,CStack_74);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_009547a0(int *param_1_00,undefined *param_1,int param_2,int param_3,double param_4)

{
  char cVar1;
  int *piVar2;
  HANDLE h;
  int iVar3;
  HFONT h_00;
  int iVar4;
  int iVar5;
  int iVar6;
  int unaff_EDI;
  int iStack_130;
  int iStack_12c;
  int iStack_128;
  undefined *puStack_124;
  char *pcStack_120;
  char *pcStack_11c;
  undefined *local_f8 [2];
  int *piStack_f0;
  char acStack_e8 [4];
  double dStack_e4;
  undefined auStack_dc [4];
  undefined auStack_d8 [108];
  undefined auStack_6c [92];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = -1;
  puStack_8 = &LAB_00bdbe47;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_f8;
  ExceptionList = &local_c;
  local_f8[0] = param_1;
  if ((NAN(param_4) == (param_4 == 0.0)) ||
     (cVar1 = (**(code **)(param_1_00[0x39] + 0x10))(), cVar1 == '\0')) {
    piVar2 = param_1_00 + 0x39;
    cVar1 = (**(code **)(param_1_00[0x39] + 0x10))();
    if (cVar1 == '\0') {
      piVar2 = (int *)(**(code **)(*(int *)PTR_PTR_03238cac + 4))();
    }
    iVar3 = piVar2[1];
    if (iVar3 != 0) {
      *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1;
    }
    dStack_e4 = (double)CONCAT44(iVar3,wxFont::vftable);
    uStack_4 = 0;
    h = (HANDLE)FUN_009229f0();
    pcStack_11c = (char *)0x9548a1;
    iVar3 = GetObjectW(h,0x5c,auStack_6c);
    if (iVar3 == 0) {
      piStack_f0 = &iStack_130;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        pcStack_11c = "..\\..\\src\\msw\\dc.cpp";
        pcStack_120 = (char *)0x6;
        uStack_4._0_1_ = 1;
        puStack_124 = (undefined *)0x954902;
        FUN_008423d0();
        uStack_4._0_1_ = 2;
        GetLastError();
        FUN_00843700();
        GetLastError();
        pcStack_11c = (char *)0x5ba;
        pcStack_120 = "..\\..\\src\\msw\\dc.cpp";
        puStack_124 = auStack_d8;
        iStack_128 = 0x95493c;
        FUN_00847d90();
        uStack_4._0_1_ = 1;
        FUN_00842440();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_0081b5bc();
      }
    }
    auStack_6c._8_4_ = FUN_00a49750();
    auStack_6c._12_4_ = auStack_6c._8_4_;
    h_00 = CreateFontIndirectW((LOGFONTW *)auStack_6c);
    if (h_00 == (HFONT)0x0) {
      piStack_f0 = &iStack_130;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        pcStack_11c = "..\\..\\src\\msw\\dc.cpp";
        pcStack_120 = (char *)0x6;
        uStack_4._0_1_ = 3;
        puStack_124 = (undefined *)0x9549fd;
        FUN_008423d0();
        uStack_4._0_1_ = 4;
        GetLastError();
        FUN_00843700();
        GetLastError();
        pcStack_11c = (char *)0x5c5;
        pcStack_120 = "..\\..\\src\\msw\\dc.cpp";
        puStack_124 = auStack_d8;
        iStack_128 = 0x954a37;
        FUN_00847d90();
        uStack_4._0_1_ = 3;
        FUN_00842440();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_0081b5bc();
      }
    }
    else {
      piStack_f0 = (int *)SelectObject((HDC)param_1_00[0x42],h_00);
      pcStack_11c = (char *)0x954a7b;
      FUN_00954530();
      SelectObject((HDC)param_1_00[0x42],piStack_f0);
      DeleteObject(h_00);
    }
    pcStack_11c = auStack_dc;
    pcStack_120 = acStack_e8;
    puStack_124 = local_f8[0];
    iStack_128 = 0x954ab9;
    (**(code **)(**(int **)(param_1_00[2] + 8) + 0xa4))();
    iStack_128 = param_3;
    iStack_12c = param_2;
    iStack_130 = 0x954adb;
    (**(code **)(*param_1_00 + 0x4c))();
    iStack_130 = 0x954ae4;
    FUN_00a4d0f0();
    dStack_e4 = (double)unaff_EDI;
    iStack_130 = 0x954af9;
    FUN_00a4d220();
    iVar3 = *param_1_00;
    iStack_130 = 0x954b0e;
    iStack_130 = FUN_00a49750();
    iStack_130 = param_3 - iStack_130;
    iVar4 = FUN_00a49750();
    (**(code **)(iVar3 + 0x4c))(iVar4 + param_2);
    iVar4 = FUN_00a49750();
    iVar5 = FUN_00a49750();
    (**(code **)(*param_1_00 + 0x4c))(param_2 + iVar4,param_3 + iVar5);
    iVar3 = *param_1_00;
    iVar6 = FUN_00a49750();
    iVar5 = FUN_00a49750((param_3 + iVar5) - iVar6);
    (**(code **)(iVar3 + 0x4c))(iVar5 + param_2 + iVar4);
    local_10 = 0xffffffff;
    pcStack_11c = (char *)0x954b86;
    FUN_00921450();
  }
  else {
    pcStack_11c = (char *)0x95482a;
    (**(code **)(*param_1_00 + 0x168))();
  }
  ExceptionList = (void *)auStack_6c._84_4_;
  ___security_check_cookie_4();
  return;
}



bool __thiscall
FUN_00954bb0(int *param_1_00,int param_1,int param_2,int param_3,int param_4,int param_5,int param_7
            ,int param_8,int param_9,int param_10,undefined4 param_11,char param_12,int param_13,
            int param_14)

{
  HDC hdcSrc;
  HDC hdc;
  HDC hdc_00;
  char cVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  int iVar5;
  BOOL BVar6;
  HGDIOBJ h;
  HGDIOBJ pvVar7;
  uint uVar8;
  HANDLE h_00;
  bool bStack_c5;
  char *pcStack_c4;
  int iStack_b4;
  undefined auStack_60 [20];
  void *pvStack_4c;
  BITMAPINFO BStack_48;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbf3e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_5 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    ExceptionList = local_c;
    return false;
  }
  piVar2 = (int *)FUN_0048a085();
  if (piVar2 == (int *)0x0) {
    ExceptionList = local_c;
    return false;
  }
  hdcSrc = (HDC)piVar2[0x42];
  piVar2 = (int *)(**(code **)(*piVar2 + 0x194))();
  cVar1 = (**(code **)(*piVar2 + 0x10))();
  if ((cVar1 != '\0') &&
     (((cVar1 = FUN_008f2600(), cVar1 != '\0' ||
       ((cVar1 = (**(code **)(param_1_00[0x3f] + 0x10))(), cVar1 != '\0' &&
        (cVar1 = FUN_008f2600(), cVar1 != '\0')))) && (cVar1 = FUN_00953de0(), cVar1 != '\0')))) {
    ExceptionList = local_c;
    return true;
  }
  iStack_b4 = 0;
  if (param_12 != '\0') {
    iStack_b4 = FUN_008f25d0();
    cVar1 = (**(code **)(*piVar2 + 0x10))();
    if (((cVar1 == '\0') || (iStack_b4 == 0)) || (*(int *)(iStack_b4 + 8) == 0)) {
      param_12 = '\0';
    }
  }
  if ((param_13 == -1) && (param_14 == -1)) {
    param_13 = param_7;
    param_14 = param_8;
  }
  piVar3 = (int *)(**(code **)(*param_1_00 + 0x84))();
  piVar4 = (int *)(**(code **)(*param_1_00 + 0x7c))();
  (**(code **)(*piVar3 + 0x24))();
  (**(code **)(*piVar4 + 0x24))();
  FUN_0093f7a0();
  uStack_4 = 0;
  switch(param_11) {
  case 0:
    pcStack_c4 = (char *)0x42;
    break;
  case 1:
    pcStack_c4 = (char *)0x660046;
    break;
  case 2:
    pcStack_c4 = (char *)0x550009;
    break;
  case 3:
    pcStack_c4 = "gamma table being rebuilt";
    break;
  case 4:
    pcStack_c4 = &LAB_00440328;
    break;
  case 5:
    pcStack_c4 = "";
    break;
  case 6:
    pcStack_c4 = (char *)0x8800c6;
    break;
  case 7:
    pcStack_c4 = (char *)0x220326;
    break;
  case 8:
    pcStack_c4 = &LAB_00aa0029;
    break;
  case 9:
  case 0xb:
    pcStack_c4 = (char *)0x330008;
    break;
  case 10:
    pcStack_c4 = (char *)0x990066;
    break;
  case 0xc:
    pcStack_c4 = "j";
    break;
  case 0xd:
    pcStack_c4 = (char *)0x7700e6;
    break;
  case 0xe:
    pcStack_c4 = &DAT_00ee0086;
    break;
  case 0xf:
    pcStack_c4 = &DAT_00ff0062;
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    FUN_0093e0c0();
    ExceptionList = local_c;
    return false;
  }
  bStack_c5 = false;
  if (param_12 != '\0') {
    if ((DAT_032c0eec & 1) == 0) {
      DAT_032c0eec = DAT_032c0eec | 1;
      uStack_4._0_1_ = 1;
      uStack_4._1_3_ = 0;
      FUN_0043c211();
      uStack_4._0_1_ = 2;
      iVar5 = FUN_00897050();
      DAT_032c0ee8 = iVar5 == 0;
      FUN_0040159c();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
    }
    if (((DAT_032c0ee8 != '\0') && (param_3 == param_9)) && (param_4 == param_10)) {
      BVar6 = MaskBlt((HDC)param_1_00[0x42],param_1,param_2,param_3,param_4,hdcSrc,param_7,param_8,
                      *(HBITMAP *)(iStack_b4 + 8),param_13,param_14,(uint)pcStack_c4 | 0xaa000000);
      bStack_c5 = BVar6 != 0;
      if (bStack_c5) goto LAB_009558b6;
    }
    iVar5 = FUN_009528d0();
    hdc = *(HDC *)(iVar5 + 0xc);
    iVar5 = FUN_009528d0();
    hdc_00 = *(HDC *)(iVar5 + 0xc);
    iVar5 = FUN_00952620();
    pvVar7 = *(HGDIOBJ *)(iVar5 + 8);
    h = SelectObject(hdc,*(HGDIOBJ *)(iStack_b4 + 8));
    pvVar7 = SelectObject(hdc_00,pvVar7);
    BVar6 = BitBlt(hdc_00,0,0,param_3,param_4,(HDC)param_1_00[0x42],param_1,param_2,0xcc0020);
    if (BVar6 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4._0_1_ = 3;
        FUN_008423d0();
        uStack_4._0_1_ = 4;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4._0_1_ = 3;
        FUN_00842440();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_0081b5bc();
      }
    }
    FUN_00950cb0();
    uStack_4._0_1_ = 5;
    BVar6 = StretchBlt(hdc_00,0,0,param_3,param_4,hdcSrc,param_7,param_8,param_9,param_10,
                       (DWORD)pcStack_c4);
    if (BVar6 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4._0_1_ = 6;
        FUN_008423d0();
        uStack_4._0_1_ = 7;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4._0_1_ = 6;
        FUN_00842440();
        uStack_4._0_1_ = 5;
        FUN_0081b5bc();
      }
    }
    FUN_008f7e50();
    FUN_008f7e50();
    FUN_00954050();
    uStack_4._0_1_ = 8;
    BVar6 = StretchBlt(hdc_00,0,0,param_3,param_4,hdc,param_13,param_14,param_9,param_10,0x8800c6);
    if (BVar6 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4._0_1_ = 9;
        FUN_008423d0();
        uStack_4._0_1_ = 10;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4._0_1_ = 9;
        FUN_00842440();
        uStack_4._0_1_ = 8;
        FUN_0081b5bc();
      }
    }
    SetBkColor((HDC)param_1_00[0x42],0);
    SetTextColor((HDC)param_1_00[0x42],0xffffff);
    BVar6 = StretchBlt((HDC)param_1_00[0x42],param_1,param_2,param_3,param_4,hdc,param_13,param_14,
                       param_9,param_10,0x8800c6);
    if (BVar6 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4._0_1_ = 0xb;
        FUN_008423d0();
        uStack_4._0_1_ = 0xc;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4._0_1_ = 0xb;
        FUN_00842440();
        uStack_4._0_1_ = 8;
        FUN_0081b5bc();
      }
    }
    uStack_4._0_1_ = 5;
    FUN_0093e0c0();
    BVar6 = BitBlt((HDC)param_1_00[0x42],param_1,param_2,param_3,param_4,hdc_00,0,0,0xee0086);
    if (BVar6 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4._0_1_ = 0xd;
        FUN_008423d0();
        uStack_4._0_1_ = 0xe;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4._0_1_ = 0xd;
        FUN_00842440();
        uStack_4._0_1_ = 5;
        FUN_0081b5bc();
      }
    }
    SelectObject(hdc,h);
    SelectObject(hdc_00,pvVar7);
    uStack_4 = (uint)uStack_4._1_3_ << 8;
    FUN_00950dc0();
    FUN_0093e0c0();
    ExceptionList = local_c;
    return BVar6 != 0;
  }
  uVar8 = GetDeviceCaps((HDC)param_1_00[0x42],0x26);
  cVar1 = (**(code **)(*piVar2 + 0x10))();
  if ((cVar1 != '\0') && ((uVar8 & 0x2000) != 0)) {
    _memset(auStack_60,0,0x54);
    h_00 = (HANDLE)piVar2[1];
    if (h_00 != (HANDLE)0x0) {
      h_00 = *(HANDLE *)((int)h_00 + 0x14);
    }
    iVar5 = GetObjectW(h_00,0x54,auStack_60);
    if (iVar5 == 0x54) {
      FUN_00950cb0();
      if (0 < BStack_48.bmiHeader.biHeight) {
        param_8 = (BStack_48.bmiHeader.biHeight - param_8) - param_10;
      }
      iVar5 = StretchDIBits((HDC)param_1_00[0x42],param_1,param_2,param_3,param_4,param_7,param_8,
                            param_9,param_10,pvStack_4c,&BStack_48,0,(DWORD)pcStack_c4);
      bStack_c5 = iVar5 != -1;
      FUN_00950dc0();
      if (bStack_c5) goto LAB_009558b6;
    }
  }
  if ((uVar8 & 0x800) != 0) {
    FUN_00950cb0();
    uStack_4._0_1_ = 0xf;
    BVar6 = StretchBlt((HDC)param_1_00[0x42],param_1,param_2,param_3,param_4,hdcSrc,param_7,param_8,
                       param_9,param_10,(DWORD)pcStack_c4);
    if (BVar6 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4._0_1_ = 0x10;
        FUN_008423d0();
        uStack_4._0_1_ = 0x11;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4._0_1_ = 0x10;
        FUN_00842440();
        uStack_4._0_1_ = 0xf;
        FUN_0081b5bc();
      }
    }
    else {
      bStack_c5 = true;
    }
    uStack_4 = (uint)uStack_4._1_3_ << 8;
    FUN_00950dc0();
    if (bStack_c5 != false) goto LAB_009558b6;
  }
  BVar6 = BitBlt((HDC)param_1_00[0x42],param_1,param_2,param_3,param_4,hdcSrc,param_7,param_8,
                 (DWORD)pcStack_c4);
  if (BVar6 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4._0_1_ = 0x12;
      FUN_008423d0();
      uStack_4._0_1_ = 0x13;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4._0_1_ = 0x12;
      FUN_00842440();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_0081b5bc();
      FUN_0093e0c0();
      ExceptionList = local_c;
      return bStack_c5;
    }
  }
  else {
    bStack_c5 = true;
  }
LAB_009558b6:
  FUN_0093e0c0();
  ExceptionList = local_c;
  return bStack_c5;
}



void __thiscall FUN_00955990(int *param_1_00,undefined4 param_1,int param_2,int param_3)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int unaff_EBP;
  int local_14;
  int local_10;
  int local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  uVar1 = param_1;
  local_14 = 10;
  iVar4 = FUN_00420f3f(&local_14,0,1);
  iVar3 = param_3;
  iVar2 = param_2;
  if (iVar4 != -1) {
    local_10 = param_2;
    local_c = param_3;
    local_8 = 0;
    local_4 = 0;
    FUN_0094e6e0(uVar1,&PTR_vftable_03238cc8,&local_10,0,0xffffffff,0);
    return;
  }
  FUN_00954530(uVar1,param_2,param_3);
  (**(code **)(*param_1_00 + 0x4c))(iVar2,iVar3);
  (**(code **)(**(int **)(param_1_00[2] + 8) + 0xa4))(uVar1,&stack0x00000000,&param_1,0,0,0);
  (**(code **)(*param_1_00 + 0x4c))(unaff_EBP + iVar2,local_14 + iVar3);
  return;
}



undefined4 FUN_00955a60(void)

{
  undefined4 in_EAX;
  
  switch(in_EAX) {
  case 100:
  case 0x6e:
  case 0x6f:
  case 0x70:
  case 0x71:
  case 0x72:
  case 0x73:
  case 0x74:
    return 0;
  case 0x65:
    goto switchD_00955a6f_caseD_65;
  case 0x66:
  case 0x67:
    return 1;
  case 0x68:
    return 3;
  case 0x69:
    return 7;
  case 0x6a:
    return 5;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\pen.cpp",0xdd,"ConvertPenStyle","Assert failure",
                   L"unknown pen style");
    }
switchD_00955a6f_caseD_65:
    return 2;
  }
}



undefined4 FUN_00955b00(void)

{
  int in_EAX;
  
  if (in_EAX == 0x78) {
    return 0x1000;
  }
  if (in_EAX != 0x79) {
    if ((in_EAX != 0x7a) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
      FUN_00840480("..\\..\\src\\msw\\pen.cpp",0x105,"ConvertJoinStyle","Assert failure",
                   L"unknown pen join style");
    }
    return 0;
  }
  return 0x2000;
}



undefined4 FUN_00955b50(void)

{
  int in_EAX;
  
  if (in_EAX != 0x82) {
    if (in_EAX == 0x83) {
      return 0x100;
    }
    if (in_EAX == 0x84) {
      return 0x200;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\pen.cpp",0x118,"ConvertCapStyle","Assert failure",
                   L"unknown pen cap style");
    }
  }
  return 0;
}



undefined ** FUN_00955ba0(void)

{
  return &PTR_u_wxPen_0323afd8;
}



undefined4 __fastcall FUN_00955bb0(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if ((iVar1 != 0) && (*(HGDIOBJ *)(iVar1 + 0x3c) != (HGDIOBJ)0x0)) {
    DeleteObject(*(HGDIOBJ *)(iVar1 + 0x3c));
    *(undefined4 *)(iVar1 + 0x3c) = 0;
    return 1;
  }
  return 0;
}



undefined4 __fastcall FUN_00955be0(int param_1)

{
  if ((*(int *)(param_1 + 4) != 0) && (*(int *)(*(int *)(param_1 + 4) + 0x3c) == 0)) {
    return 1;
  }
  return 0;
}



undefined4 __fastcall FUN_00955c00(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    return *(undefined4 *)(param_1[1] + 8);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\pen.cpp",0x226,"wxPen::GetWidth","IsOk()",L"invalid pen");
  }
  return 0xffffffff;
}



undefined4 __fastcall FUN_00955c50(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    return *(undefined4 *)(param_1[1] + 0xc);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\pen.cpp",0x22d,"wxPen::GetStyle","IsOk()",L"invalid pen");
  }
  return 0xffffffff;
}



undefined4 __fastcall FUN_00955ca0(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    return *(undefined4 *)(param_1[1] + 0x10);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\pen.cpp",0x234,"wxPen::GetJoin","IsOk()",L"invalid pen");
  }
  return 0xffffffff;
}



undefined4 __fastcall FUN_00955cf0(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    return *(undefined4 *)(param_1[1] + 0x14);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\pen.cpp",0x23b,"wxPen::GetCap","IsOk()",L"invalid pen");
  }
  return 0xffffffff;
}



undefined4 __thiscall FUN_00955d40(int *param_1,undefined4 *param_2)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    *param_2 = *(undefined4 *)(param_1[1] + 0x24);
    return *(undefined4 *)(param_1[1] + 0x20);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\pen.cpp",0x242,"wxPen::GetDashes","IsOk()",L"invalid pen");
  }
  return 0xffffffff;
}



int __fastcall FUN_00955da0(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\pen.cpp",600,"wxPen::GetStipple","IsOk()",L"invalid pen");
    }
  }
  else if (param_1[1] != 0) {
    return param_1[1] + 0x18;
  }
  return 0;
}



undefined4 __thiscall FUN_00955df0(int param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int *piVar4;
  int *piVar5;
  
  iVar1 = *(int *)(param_1_00 + 0xc);
  if ((((iVar1 == *(int *)(param_1 + 0xc)) && (*(int *)(param_1_00 + 8) == *(int *)(param_1 + 8)))
      && (*(int *)(param_1_00 + 0x10) == *(int *)(param_1 + 0x10))) &&
     (((*(int *)(param_1_00 + 0x14) == *(int *)(param_1 + 0x14) &&
       (cVar2 = FUN_008f75c0(param_1 + 0x28), cVar2 != '\0')) &&
      ((iVar1 != 0x6e || (*(int *)(param_1_00 + 0x1c) == *(int *)(param_1 + 0x1c))))))) {
    if (iVar1 != 0x69) {
      return 1;
    }
    uVar3 = *(uint *)(param_1_00 + 0x20);
    if (uVar3 == *(uint *)(param_1 + 0x20)) {
      piVar4 = *(int **)(param_1 + 0x24);
      piVar5 = *(int **)(param_1_00 + 0x24);
      for (; 3 < uVar3; uVar3 = uVar3 - 4) {
        if (*piVar5 != *piVar4) {
          return 0;
        }
        piVar4 = piVar4 + 1;
        piVar5 = piVar5 + 1;
      }
      if (uVar3 == 0) {
        return 1;
      }
      if (*(char *)piVar4 == *(char *)piVar5) {
        if (uVar3 < 2) {
          return 1;
        }
        if (*(char *)((int)piVar4 + 1) == *(char *)((int)piVar5 + 1)) {
          if (uVar3 < 3) {
            return 1;
          }
          if (*(char *)((int)piVar4 + 2) == *(char *)((int)piVar5 + 2)) {
            return 1;
          }
        }
      }
    }
  }
  return 0;
}



void __fastcall FUN_00955eb0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bdbf73;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxPenRefData::vftable;
  local_4 = 1;
  if ((HGDIOBJ)param_1[0xf] != (HGDIOBJ)0x0) {
    DeleteObject((HGDIOBJ)param_1[0xf]);
  }
  param_1[10] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_008f7630();
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



bool __fastcall FUN_00955f30(int param_1)

{
  HGDIOBJ pvVar1;
  int iVar2;
  HPEN pHVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  DWORD *pstyle;
  int iVar7;
  COLORREF color;
  LOGBRUSH local_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdbf9e;
  local_c = ExceptionList;
  if (*(int *)(param_1 + 0x3c) != 0) {
    return false;
  }
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0xc) != 0x6a) {
    color = *(COLORREF *)(param_1 + 0x30);
    if ((DAT_032c0ef4 & 1) == 0) {
      DAT_032c0ef4 = DAT_032c0ef4 | 1;
      local_4 = 0;
      DAT_032c0ef0 = FUN_00894a40();
    }
    local_4 = 0xffffffff;
    if ((DAT_032c0ef0 != 8) &&
       (((((iVar2 = *(int *)(param_1 + 0xc), iVar2 == 0x65 || (iVar2 == 0x66)) || (iVar2 == 0x67))
         || ((iVar2 == 0x68 || (iVar2 == 0x69)))) && (1 < *(int *)(param_1 + 8))))) {
      *(undefined4 *)(param_1 + 8) = 1;
    }
    if ((((*(int *)(param_1 + 0x10) == 0x7a) && (*(int *)(param_1 + 0x14) == 0x82)) &&
        ((iVar2 = *(int *)(param_1 + 0xc), iVar2 != 0x69 && (iVar2 != 0x6e)))) &&
       ((iVar7 = *(int *)(param_1 + 8), iVar7 < 2 || (iVar2 == 100)))) {
      iVar2 = FUN_00955a60();
      pHVar3 = CreatePen(iVar2,iVar7,color);
      *(HPEN *)(param_1 + 0x3c) = pHVar3;
    }
    else {
      uVar4 = FUN_00955b50();
      uVar5 = FUN_00955a60();
      uVar6 = FUN_00955b00();
      switch(*(int *)(param_1 + 0xc)) {
      case 0x6e:
        local_18.lbHatch = *(UINT *)(param_1 + 0x1c);
        local_18.lbStyle = 3;
        if (local_18.lbHatch != 0) {
          local_18.lbHatch = *(UINT *)(local_18.lbHatch + 0x14);
        }
        break;
      case 0x6f:
        local_18.lbStyle = 2;
        local_18.lbHatch = 3;
        break;
      case 0x70:
        local_18.lbStyle = 2;
        local_18.lbHatch = 5;
        break;
      case 0x71:
        local_18.lbStyle = 2;
        local_18.lbHatch = local_18.lbStyle;
        break;
      case 0x72:
        local_18.lbStyle = 2;
        local_18.lbHatch = 4;
        break;
      case 0x73:
        local_18.lbStyle = 2;
        local_18.lbHatch = 0;
        break;
      case 0x74:
        local_18.lbStyle = 2;
        local_18.lbHatch = 1;
        break;
      default:
        local_18.lbStyle = 0;
        local_18.lbHatch = local_18.lbStyle;
      }
      local_18.lbColor = color;
      if (((*(int *)(param_1 + 0xc) == 0x69) && (*(int *)(param_1 + 0x20) != 0)) &&
         (*(int *)(param_1 + 0x24) != 0)) {
        pstyle = (DWORD *)FUN_00823c23();
        iVar2 = *(int *)(param_1 + 8);
        if (iVar2 < 2) {
          iVar2 = 1;
        }
        iVar7 = 0;
        if (0 < *(int *)(param_1 + 0x20)) {
          do {
            pstyle[iVar7] = *(char *)(iVar7 + *(int *)(param_1 + 0x24)) * iVar2;
            iVar7 = iVar7 + 1;
          } while (iVar7 < *(int *)(param_1 + 0x20));
        }
      }
      else {
        pstyle = (DWORD *)0x0;
      }
      pHVar3 = ExtCreatePen(uVar6 | uVar4 | uVar5 | 0x10000,*(DWORD *)(param_1 + 8),&local_18,
                            *(DWORD *)(param_1 + 0x20),pstyle);
      *(HPEN *)(param_1 + 0x3c) = pHVar3;
      FUN_00a3f66c();
    }
    ExceptionList = local_c;
    return *(int *)(param_1 + 0x3c) != 0;
  }
  pvVar1 = GetStockObject(8);
  *(HGDIOBJ *)(param_1 + 0x3c) = pvVar1;
  ExceptionList = local_c;
  return true;
}



bool __thiscall FUN_009561b0(int param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  
  iVar1 = *(int *)(param_1 + 4);
  if (*(int *)(param_1_00 + 4) == 0) {
    return iVar1 == 0;
  }
  if (iVar1 != 0) {
    cVar2 = FUN_00955df0(iVar1);
    if (cVar2 != '\0') {
      return true;
    }
  }
  return false;
}



undefined4 __fastcall FUN_009561f0(int param_1)

{
  char cVar1;
  
  if (*(int *)(param_1 + 4) != 0) {
    cVar1 = FUN_00955f30();
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



undefined4 __fastcall FUN_00956210(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if (iVar1 != 0) {
    if (*(int *)(iVar1 + 0x3c) == 0) {
      FUN_00955f30();
    }
    return *(undefined4 *)(iVar1 + 0x3c);
  }
  return 0;
}



void __thiscall
FUN_00956230(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc9a8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  uVar2 = FUN_004561e7(param_1,param_2,param_3,0xff);
  local_4 = 0;
  (**(code **)(*param_1_00 + 0x30))(uVar2,uVar1);
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_10;
  return;
}



void __thiscall FUN_009562c0(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  FUN_0083eaa0();
  iVar1 = *(int *)(param_1_00 + 4);
  if (*(HGDIOBJ *)(iVar1 + 0x3c) != (HGDIOBJ)0x0) {
    DeleteObject(*(HGDIOBJ *)(iVar1 + 0x3c));
    *(undefined4 *)(iVar1 + 0x3c) = 0;
    *(undefined4 *)(iVar1 + 8) = param_1;
    return;
  }
  *(undefined4 *)(iVar1 + 8) = param_1;
  return;
}



void __thiscall FUN_00956300(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  FUN_0083eaa0();
  iVar1 = *(int *)(param_1_00 + 4);
  if (*(HGDIOBJ *)(iVar1 + 0x3c) != (HGDIOBJ)0x0) {
    DeleteObject(*(HGDIOBJ *)(iVar1 + 0x3c));
    *(undefined4 *)(iVar1 + 0x3c) = 0;
    *(undefined4 *)(iVar1 + 0xc) = param_1;
    return;
  }
  *(undefined4 *)(iVar1 + 0xc) = param_1;
  return;
}



void __thiscall FUN_00956340(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  
  FUN_0083eaa0();
  iVar1 = *(int *)(param_1_00 + 4);
  if (*(HGDIOBJ *)(iVar1 + 0x3c) != (HGDIOBJ)0x0) {
    DeleteObject(*(HGDIOBJ *)(iVar1 + 0x3c));
    *(undefined4 *)(iVar1 + 0x3c) = 0;
    *(undefined4 *)(iVar1 + 0x20) = param_1;
    *(undefined4 *)(iVar1 + 0x24) = param_2;
    return;
  }
  *(undefined4 *)(iVar1 + 0x20) = param_1;
  *(undefined4 *)(iVar1 + 0x24) = param_2;
  return;
}



void __thiscall FUN_00956390(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  FUN_0083eaa0();
  iVar1 = *(int *)(param_1_00 + 4);
  if (*(HGDIOBJ *)(iVar1 + 0x3c) != (HGDIOBJ)0x0) {
    DeleteObject(*(HGDIOBJ *)(iVar1 + 0x3c));
    *(undefined4 *)(iVar1 + 0x3c) = 0;
    *(undefined4 *)(iVar1 + 0x10) = param_1;
    return;
  }
  *(undefined4 *)(iVar1 + 0x10) = param_1;
  return;
}



void __thiscall FUN_009563d0(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  FUN_0083eaa0();
  iVar1 = *(int *)(param_1_00 + 4);
  if (*(HGDIOBJ *)(iVar1 + 0x3c) != (HGDIOBJ)0x0) {
    DeleteObject(*(HGDIOBJ *)(iVar1 + 0x3c));
    *(undefined4 *)(iVar1 + 0x3c) = 0;
    *(undefined4 *)(iVar1 + 0x14) = param_1;
    return;
  }
  *(undefined4 *)(iVar1 + 0x14) = param_1;
  return;
}



void __thiscall FUN_00956410(int param_1_00,int param_1)

{
  if (*(HGDIOBJ *)(param_1_00 + 0x3c) != (HGDIOBJ)0x0) {
    DeleteObject(*(HGDIOBJ *)(param_1_00 + 0x3c));
    *(undefined4 *)(param_1_00 + 0x3c) = 0;
  }
  if (param_1_00 + 0x28 != param_1) {
    FUN_0083ea60(param_1);
  }
  *(undefined4 *)(param_1_00 + 0x30) = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 0x34) = *(undefined *)(param_1 + 0xc);
  *(undefined *)(param_1_00 + 0x35) = *(undefined *)(param_1 + 0xd);
  *(undefined *)(param_1_00 + 0x36) = *(undefined *)(param_1 + 0xe);
  *(undefined *)(param_1_00 + 0x37) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x38) = *(undefined *)(param_1 + 0x10);
  return;
}



undefined4 * __fastcall FUN_00956470(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdbfd3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1[1] = 1;
  *param_1 = wxPenRefData::vftable;
  param_1[7] = 0;
  param_1[6] = wxBitmap::vftable;
  local_4 = 1;
  FUN_00453f4b(uVar1);
  param_1[4] = 0x7a;
  param_1[5] = 0x82;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[0xf] = 0;
  param_1[3] = 100;
  param_1[2] = 1;
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00956500(undefined4 param_1_00,byte param_1)

{
  FUN_00955eb0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00956520(undefined4 *param_1_00,int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdc00e;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  *param_1_00 = wxPenRefData::vftable;
  param_1_00[7] = 0;
  param_1_00[6] = wxBitmap::vftable;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_00453f4b(uVar1);
  param_1_00[3] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[2] = *(undefined4 *)(param_1 + 8);
  param_1_00[4] = *(undefined4 *)(param_1 + 0x10);
  param_1_00[5] = *(undefined4 *)(param_1 + 0x14);
  param_1_00[8] = *(undefined4 *)(param_1 + 0x20);
  local_4 = CONCAT31(local_4._1_3_,2);
  param_1_00[9] = *(undefined4 *)(param_1 + 0x24);
  if (param_1_00 + 10 != (undefined4 *)(param_1 + 0x28)) {
    FUN_0083ea60((undefined4 *)(param_1 + 0x28));
  }
  param_1_00[0xc] = *(undefined4 *)(param_1 + 0x30);
  *(undefined *)(param_1_00 + 0xd) = *(undefined *)(param_1 + 0x34);
  *(undefined *)((int)param_1_00 + 0x35) = *(undefined *)(param_1 + 0x35);
  *(undefined *)((int)param_1_00 + 0x36) = *(undefined *)(param_1 + 0x36);
  *(undefined *)((int)param_1_00 + 0x37) = *(undefined *)(param_1 + 0x37);
  *(undefined *)(param_1_00 + 0xe) = *(undefined *)(param_1 + 0x38);
  param_1_00[0xf] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_00956600(undefined4 *param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdc00e;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  *param_1_00 = wxPenRefData::vftable;
  param_1_00[7] = 0;
  param_1_00[6] = wxBitmap::vftable;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_00453f4b(uVar1);
  param_1_00[8] = 0;
  param_1_00[9] = 0;
  param_1_00[0xf] = 0;
  local_4 = CONCAT31(local_4._1_3_,2);
  param_1_00[4] = 0x7a;
  param_1_00[5] = 0x82;
  param_1_00[3] = param_3;
  param_1_00[2] = param_2;
  if (param_1_00 + 10 != param_1) {
    FUN_0083ea60(param_1);
  }
  param_1_00[0xc] = param_1[2];
  *(undefined *)(param_1_00 + 0xd) = *(undefined *)(param_1 + 3);
  *(undefined *)((int)param_1_00 + 0x35) = *(undefined *)((int)param_1 + 0xd);
  *(undefined *)((int)param_1_00 + 0x36) = *(undefined *)((int)param_1 + 0xe);
  *(undefined *)((int)param_1_00 + 0x37) = *(undefined *)((int)param_1 + 0xf);
  *(undefined *)(param_1_00 + 0xe) = *(undefined *)(param_1 + 4);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_009566f0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdc043;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxPen::vftable;
  pvVar1 = operator_new(0x40);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00956600(param_1,param_2,param_3);
  }
  param_1_00[1] = uVar2;
  ExceptionList = local_c;
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x40);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00956470(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_009567f0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x40);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00956520(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_00956860(undefined4 param_1)

{
  FUN_0083eaa0();
  FUN_00956410(param_1);
  return;
}



void __thiscall FUN_00956880(int param_1_00,int param_1)

{
  int iVar1;
  
  FUN_0083eaa0();
  iVar1 = *(int *)(param_1_00 + 4);
  if (*(HGDIOBJ *)(iVar1 + 0x3c) != (HGDIOBJ)0x0) {
    DeleteObject(*(HGDIOBJ *)(iVar1 + 0x3c));
    *(undefined4 *)(iVar1 + 0x3c) = 0;
  }
  *(undefined4 *)(iVar1 + 0xc) = 0x6e;
  if (iVar1 + 0x18 != param_1) {
    FUN_0083ea60();
    return;
  }
  return;
}



undefined4 __thiscall FUN_009568c0(int *param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    FUN_00458700(param_1[1] + 0x28);
    return param_2;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\pen.cpp",0x21f,"wxPen::GetColour","IsOk()",L"invalid pen");
  }
  FUN_00458700(&PTR_vftable_03238cd0);
  return param_2;
}



undefined ** FUN_00956950(void)

{
  return &PTR_PTR_00d5cad8;
}



undefined * FUN_00956960(void)

{
  return &DAT_032c0ef8;
}



undefined ** FUN_00956970(void)

{
  return &PTR_u_wxVListBox_0323b014;
}



void __fastcall FUN_00956980(int param_1)

{
  *(undefined4 *)(param_1 + 0x1a0) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x19c) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x1a4) = 0;
  return;
}



void __thiscall FUN_009569a0(int param_1_00,uint param_1)

{
  if ((*(uint *)(param_1_00 + 0x19c) != 0xffffffff) && (param_1 <= *(uint *)(param_1_00 + 0x19c))) {
    *(uint *)(param_1_00 + 0x19c) = param_1 - 1;
  }
  if (*(int *)(param_1_00 + 0x1a4) != 0) {
    FUN_009beec0(param_1);
  }
  FUN_00958930(param_1);
  return;
}



undefined __thiscall FUN_009569f0(int param_1_00,int param_1)

{
  undefined uVar1;
  
  if (*(int *)(param_1_00 + 0x1a4) != 0) {
    uVar1 = FUN_009beb90(param_1);
    return uVar1;
  }
  return param_1 == *(int *)(param_1_00 + 0x19c);
}



undefined4 __thiscall FUN_00956a20(int param_1_00,uint param_1)

{
  uint uVar1;
  char cVar2;
  
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 != 0xffffffff)) &&
     (((int)param_1 < 0 || (*(uint *)(param_1_00 + 0x180) <= param_1)))) {
    FUN_00840480("..\\..\\src\\generic\\vlbox.cpp",0xe3,"wxVListBox::DoSetCurrent",
                 "current == wxNOT_FOUND || (current >= 0 && (size_t)current < GetItemCount())",
                 L"wxVListBox::DoSetCurrent(): invalid item index");
  }
  uVar1 = *(uint *)(param_1_00 + 0x19c);
  if (param_1 == uVar1) {
    return 0;
  }
  if (uVar1 != 0xffffffff) {
    (**(code **)(*(int *)(param_1_00 + 0x174) + 0x50))(uVar1);
  }
  *(uint *)(param_1_00 + 0x19c) = param_1;
  if (param_1 != 0xffffffff) {
    if ((param_1 < *(uint *)(param_1_00 + 0x188)) ||
       (*(int *)(param_1_00 + 0x18c) + *(uint *)(param_1_00 + 0x188) <= param_1)) {
      FUN_009584a0(param_1);
      return 1;
    }
    do {
      if ((*(int *)(param_1_00 + 0x19c) + 1 !=
           *(int *)(param_1_00 + 0x18c) + *(int *)(param_1_00 + 0x188)) ||
         (*(int *)(param_1_00 + 0x19c) == *(int *)(param_1_00 + 0x188))) break;
      cVar2 = FUN_009584a0(*(int *)(param_1_00 + 0x188) + 1);
    } while (cVar2 != '\0');
    (**(code **)(*(int *)(param_1_00 + 0x174) + 0x50))(*(undefined4 *)(param_1_00 + 0x19c));
  }
  return 1;
}



void __fastcall FUN_00956b10(int param_1)

{
  int iVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  
  iVar1 = *(int *)(param_1 + 0x18c);
  iVar2 = *(int *)(param_1 + 0x188);
  for (uVar4 = *(uint *)(param_1 + 0x188); uVar4 < (uint)(iVar1 + iVar2); uVar4 = uVar4 + 1) {
    if (*(int *)(param_1 + 0x1a4) == 0) {
      cVar3 = uVar4 == *(uint *)(param_1 + 0x19c);
    }
    else {
      cVar3 = FUN_009beb90(uVar4);
    }
    if (cVar3 != '\0') {
      (**(code **)(*(int *)(param_1 + 0x174) + 0x50))(uVar4);
    }
  }
  return;
}



int __thiscall FUN_00956b70(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  iVar1 = (**(code **)(*(int *)(param_1_00 + -0x174) + 0x33c))(param_1);
  return iVar1 + *(int *)(param_1_00 + 0x38) * 2;
}



void __fastcall FUN_00956bb0(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x00956bbd. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(*param_1 + 8) + 0xc0))();
  return;
}



char __thiscall FUN_00956bc0(int param_1_00,uint param_1,undefined4 param_2)

{
  char cVar1;
  
  if (*(int *)(param_1_00 + 0x1a4) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\generic\\vlbox.cpp",0x8d,"wxVListBox::Select","m_selStore",
                   L"Select() may only be used with multiselection listbox");
    }
    return '\0';
  }
  if (param_1 < *(uint *)(param_1_00 + 0x180)) {
    cVar1 = FUN_009bebd0(param_1,param_2);
    if (cVar1 != '\0') {
      (**(code **)(*(int *)(param_1_00 + 0x174) + 0x50))(param_1);
    }
    FUN_00956a20(param_1);
    return cVar1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\generic\\vlbox.cpp",0x90,"wxVListBox::Select","item < GetItemCount()"
                 ,L"Select(): invalid item index");
  }
  return '\0';
}



undefined4 __thiscall FUN_00956c70(int param_1_00,uint param_1,uint param_2)

{
  uint uVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  char *pcVar5;
  wchar_t *pwVar6;
  undefined local_18 [4];
  uint local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc068;
  local_c = ExceptionList;
  if (*(int *)(param_1_00 + 0x1a4) == 0) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0;
    }
    pwVar6 = L"SelectRange() may only be used with multiselection listbox";
    pcVar5 = "m_selStore";
    uVar4 = 0xa1;
  }
  else {
    uVar3 = param_2;
    if (param_2 < param_1) {
      uVar3 = param_1;
      param_1 = param_2;
    }
    if (uVar3 < *(uint *)(param_1_00 + 0x180)) {
      ExceptionList = &local_c;
      FUN_0086a600();
      local_4 = 0;
      cVar2 = FUN_009bec90(param_1,uVar3,1,local_18);
      uVar1 = local_14;
      if (cVar2 == '\0') {
        (**(code **)(*(int *)(param_1_00 + 0x174) + 0x54))(param_1,uVar3);
      }
      else {
        if (local_14 == 0) {
          local_4 = 0xffffffff;
          FUN_0086aa30();
          ExceptionList = local_c;
          return 0;
        }
        uVar3 = 0;
        if (local_14 != 0) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_14 <= uVar3)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,
                           "wxBaseArrayInt::Item","uiIndex < m_nCount",0);
            }
            (**(code **)(*(int *)(param_1_00 + 0x174) + 0x50))
                      (*(undefined4 *)(local_10 + uVar3 * 4));
            uVar3 = uVar3 + 1;
          } while (uVar3 < uVar1);
        }
      }
      local_4 = 0xffffffff;
      FUN_0086aa30();
      ExceptionList = local_c;
      return 1;
    }
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0;
    }
    pwVar6 = L"SelectRange(): invalid item index";
    pcVar5 = "to < GetItemCount()";
    uVar4 = 0xac;
  }
  ExceptionList = &local_c;
  FUN_00840480("..\\..\\src\\generic\\vlbox.cpp",uVar4,"wxVListBox::SelectRange",pcVar5,pwVar6,
               DAT_0323f878 ^ (uint)&stack0xffffffdc);
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_00956e00(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  char cVar2;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc098;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1_00[0x69] == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\generic\\vlbox.cpp",0xcc,"wxVListBox::DoSelectAll","m_selStore",
                   L"SelectAll may only be used with multiselection listbox",
                   DAT_0323f878 ^ (uint)&stack0xffffffe0);
    }
  }
  else {
    iVar1 = param_1_00[0x60];
    if (iVar1 != 0) {
      FUN_0086a600();
      local_4 = 0;
      cVar2 = FUN_009bec90(0,iVar1 + -1,param_1,0);
      if ((cVar2 == '\0') || (local_14 != (void *)0x0)) {
        (**(code **)(*param_1_00 + 0x15c))(1,0);
        local_c = (void *)0xffffffff;
        FUN_0086aa30();
        ExceptionList = local_14;
        return 1;
      }
      local_4 = 0xffffffff;
      FUN_0086aa30();
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00956f20(int *param_1_00,int *param_1)

{
  if ((*param_1 != param_1_00[0x6a]) || (param_1[1] != param_1_00[0x6b])) {
    param_1_00[0x6a] = *param_1;
    param_1_00[0x6b] = param_1[1];
    (**(code **)(*param_1_00 + 0x15c))(1,0);
  }
  return;
}



undefined __thiscall
FUN_00956f60(int param_1_00,int *param_1,int param_3,undefined4 param_4,int param_5)

{
  char cVar1;
  undefined4 uVar2;
  bool bVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc0c8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x24))(DAT_0323f878 ^ (uint)&stack0xffffffdc);
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  if (*(int *)(param_1_00 + 0x1a4) == 0) {
    cVar1 = param_5 == *(int *)(param_1_00 + 0x19c);
  }
  else {
    cVar1 = FUN_009beb90(param_5);
  }
  bVar3 = param_5 != *(int *)(param_1_00 + 0x19c);
  if (cVar1 == '\0') {
    if (bVar3) {
      ExceptionList = local_c;
      return 1;
    }
    uVar2 = FUN_008f8a00(9);
    (**(code **)(**(int **)(param_3 + 8) + 0x60))(uVar2);
  }
  else {
    uVar2 = FUN_0095d7e0(param_1,100);
    uStack_4 = 0;
    (**(code **)(**(int **)(param_3 + 8) + 0x60))(uVar2);
    puStack_8 = (undefined *)0xffffffff;
    FUN_008f7630();
  }
  if (bVar3) {
    uVar2 = 0x24;
  }
  else {
    uVar2 = 0x1a;
  }
  uVar2 = FUN_008f8330(uVar2);
  (**(code **)(**(int **)(param_3 + 8) + 0x58))(uVar2);
  (**(code **)(**(int **)(param_3 + 8) + 0x150))(*param_1,param_1[1],param_1[2],param_1[3]);
  ExceptionList = local_c;
  return 1;
}



void __thiscall FUN_00957080(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  
  cVar1 = FUN_00956f60(param_1_00 + 0x1b0,param_1,param_2,param_3);
  if (cVar1 == '\0') {
    uVar4 = 0;
    if (*(int *)(param_1_00 + 0x1a4) == 0) {
      cVar1 = param_3 == *(int *)(param_1_00 + 0x19c);
    }
    else {
      cVar1 = FUN_009beb90(param_3);
    }
    if (cVar1 != '\0') {
      uVar4 = 0x20;
    }
    if (param_3 == *(int *)(param_1_00 + 0x19c)) {
      uVar4 = uVar4 | 0x10;
    }
    iVar2 = FUN_0091ac40();
    if (iVar2 == param_1_00) {
      uVar4 = uVar4 | 2;
    }
    piVar3 = (int *)FUN_009ba160();
    (**(code **)(*piVar3 + 0x30))(param_1_00,param_1,param_2,uVar4);
  }
  return;
}



undefined4 FUN_00957130(undefined4 param_1,undefined4 param_2)

{
  FUN_00486927(param_1,param_2);
  return param_1;
}



void __fastcall FUN_00957160(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdc0f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00957fc0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  *(undefined ***)(param_1 + 0x164) = wxControlContainerBase::vftable;
  FUN_009150e0();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009571d0(int param_1_00,int param_1)

{
  char cVar1;
  
  if (*(int *)(param_1_00 + 0x1a4) == 0) {
    cVar1 = param_1 == *(int *)(param_1_00 + 0x19c);
  }
  else {
    cVar1 = FUN_009beb90(param_1);
  }
  FUN_00956bc0(param_1,cVar1 == '\0');
  return;
}



undefined4 * __thiscall FUN_00957210(undefined4 *param_1_00,int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc128;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_009474e0(param_1,2);
  *param_1_00 = wxAutoBufferedPaintDC::vftable;
  local_4 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x110) != 2)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dcbuffer.h",0xe1,
                 "wxAutoBufferedPaintDC::wxAutoBufferedPaintDC",
                 "win->GetBackgroundStyle() == wxBG_STYLE_PAINT",
                 "You need to call SetBackgroundStyle(wxBG_STYLE_PAINT) in ctor, and also, if needed, paint the background in wxEVT_PAINT handler."
                 ,uVar1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009572a0(undefined4 *param_1)

{
  *param_1 = wxAutoBufferedPaintDC::vftable;
  FUN_009475a0();
  return;
}



undefined4 * __thiscall FUN_009572b0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxAutoBufferedPaintDC::vftable;
  FUN_009475a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



char __thiscall
FUN_009572e0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,uint param_5,undefined4 param_6)

{
  char cVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  undefined local_20 [20];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc163;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  if ((param_5 & 0x1f200000) == 0x46) {
    param_5 = param_5 | 0x10000000;
  }
  cVar1 = FUN_0092fcc0(param_1,param_2,param_3,param_4,param_5 | 0x80050000,param_6);
  if (cVar1 != '\0') {
    if ((param_5 & 0x40) != 0) {
      pvVar3 = operator_new(0x18);
      local_4 = 0;
      if (pvVar3 == (void *)0x0) {
        pvVar3 = (void *)0x0;
      }
      else {
        FUN_0086a600(uVar2);
        *(undefined **)((int)pvVar3 + 0x14) = &LAB_00956940;
        *(undefined *)((int)pvVar3 + 4) = 0;
      }
      local_4 = 0xffffffff;
      param_1_00[0x69] = (int)pvVar3;
    }
    uVar4 = FUN_0091de40(local_20);
    local_4 = 1;
    (**(code **)(*param_1_00 + 0x17c))(uVar4);
    puStack_8 = (undefined *)0xffffffff;
    FUN_0083e850();
    if (param_1_00 != (int *)0x3238b20) {
      FUN_0083ea60(&PTR_vftable_03238cd0);
    }
    param_1_00[0x6e] = DAT_03238cd8;
    *(undefined *)(param_1_00 + 0x6f) = DAT_03238cdc;
    *(undefined *)((int)param_1_00 + 0x1bd) = DAT_03238cdd;
    *(undefined *)((int)param_1_00 + 0x1be) = DAT_03238cde;
    *(undefined *)((int)param_1_00 + 0x1bf) = DAT_03238cdf;
    *(undefined *)(param_1_00 + 0x70) = DAT_03238ce0;
    (**(code **)(*param_1_00 + 0x184))(2);
    cVar1 = '\x01';
  }
  ExceptionList = local_c;
  return cVar1;
}



void __fastcall FUN_00957450(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdc196;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxVListBox::vftable;
  param_1[0x5d] = wxVListBox::vftable;
  iVar1 = param_1[0x69];
  local_4 = 1;
  if (iVar1 != 0) {
    FUN_0086aa30();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  local_4 = 0;
  param_1[0x6c] = wxObject::vftable;
  FUN_0083e850(uVar2);
  local_4 = 0xffffffff;
  FUN_00957160();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009574f0(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x009574f5. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x2c))();
  return;
}



void __fastcall FUN_00957500(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x00957505. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x30))();
  return;
}



void FUN_00957510(void)

{
  FUN_009578c0();
  return;
}



void __thiscall FUN_00957520(int param_1_00,uint param_1)

{
  if ((param_1 == 0xffffffff) || ((-1 < (int)param_1 && (param_1 < *(uint *)(param_1_00 + 0x180)))))
  {
    if (*(int *)(param_1_00 + 0x1a4) != 0) {
      if (param_1 != 0xffffffff) {
        FUN_00956bc0(param_1,1);
        *(uint *)(param_1_00 + 0x1a0) = param_1;
        FUN_00956a20(param_1);
        return;
      }
      FUN_00956e00(0);
      *(undefined4 *)(param_1_00 + 0x1a0) = 0xffffffff;
    }
    FUN_00956a20(param_1);
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\generic\\vlbox.cpp",0x11f,"wxVListBox::SetSelection",
                 "selection == (-1) || (selection >= 0 && (size_t)selection < GetItemCount())",
                 L"wxVListBox::SetSelection(): invalid item index");
    return;
  }
  return;
}



void __thiscall FUN_009575b0(int param_1_00,int param_1)

{
  if (param_1_00 + 0x1b0 != param_1) {
    FUN_0083ea60(param_1);
  }
  *(undefined4 *)(param_1_00 + 0x1b8) = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 0x1bc) = *(undefined *)(param_1 + 0xc);
  *(undefined *)(param_1_00 + 0x1bd) = *(undefined *)(param_1 + 0xd);
  *(undefined *)(param_1_00 + 0x1be) = *(undefined *)(param_1 + 0xe);
  *(undefined *)(param_1_00 + 0x1bf) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x1c0) = *(undefined *)(param_1 + 0x10);
  return;
}



void __fastcall FUN_00957600(int *param_1)

{
  int iVar1;
  int iVar2;
  char cVar3;
  undefined4 uVar4;
  int iVar5;
  int unaff_EBX;
  undefined ***unaff_ESI;
  undefined4 unaff_EDI;
  uint uVar6;
  int *piStack_88;
  uint uStack_84;
  undefined4 local_70;
  int local_6c;
  undefined ***pppuStack_68;
  int iStack_64;
  undefined **ppuStack_60;
  undefined auStack_5c [4];
  undefined auStack_58 [12];
  undefined auStack_4c [4];
  int iStack_48;
  undefined uStack_44;
  int iStack_40;
  undefined **appuStack_3c [2];
  int *piStack_34;
  int *piStack_30;
  undefined uStack_20;
  void *pvStack_18;
  undefined4 uStack_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc200;
  local_c = ExceptionList;
  uStack_84 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_c;
  piStack_88 = &local_6c;
  (**(code **)(*param_1 + 0x27c))(&local_70);
  FUN_00957210(param_1);
  local_c = (void *)0x0;
  FUN_0091e280(&iStack_48);
  uVar4 = FUN_0091de40(auStack_5c);
  local_c._0_1_ = 1;
  FUN_0095d7e0(uVar4,100);
  local_c = (void *)CONCAT31(local_c._1_3_,2);
  (**(code **)(*piStack_30 + 0x68))(&stack0xffffff8c);
  uStack_10._0_1_ = 1;
  FUN_008f7630();
  uStack_10 = (uint)uStack_10._1_3_ << 8;
  ppuStack_60 = wxObject::vftable;
  FUN_0083e850();
  (**(code **)(*piStack_34 + 0xb0))();
  iVar1 = param_1[99];
  iVar2 = param_1[0x62];
  local_70 = 0;
  local_6c = 0;
  iStack_64 = 0;
  pppuStack_68 = unaff_ESI;
  for (uVar6 = param_1[0x62]; uVar6 < (uint)(iVar1 + iVar2); uVar6 = uVar6 + 1) {
    iVar5 = (**(code **)(param_1[0x5d] + 0x58))(uVar6);
    iStack_64 = iVar5;
    cVar3 = FUN_008f7940(auStack_4c);
    if (cVar3 == '\0') {
      if (iStack_48 + -1 + iStack_40 < local_6c) break;
    }
    else {
      (**(code **)(*piStack_34 + 0xb4))(local_70,local_6c,pppuStack_68,iStack_64);
      uStack_20 = 3;
      local_70 = unaff_EDI;
      local_6c = iVar5;
      pppuStack_68 = appuStack_3c;
      iStack_64 = unaff_EBX;
      (**(code **)(*param_1 + 0x344))(auStack_4c,&local_70,uVar6);
      (**(code **)(*param_1 + 0x340))(auStack_58,&stack0xffffff84,uVar6);
      FUN_008f7520(-param_1[0x6a],-param_1[0x6b]);
      (**(code **)(*param_1 + 0x338))(&iStack_64,&piStack_88,uVar6);
      uStack_44 = 0;
      (*(code *)(*pppuStack_68)[0x30])();
    }
    local_6c = local_6c + iVar5;
  }
  appuStack_3c[0] = wxBufferedPaintDC::vftable;
  uStack_10 = 5;
  FUN_009ba2f0();
  uStack_10 = CONCAT31(uStack_10._1_3_,4);
  FUN_00457221();
  appuStack_3c[0] = wxBufferedDC::vftable;
  uStack_10 = 6;
  if (piStack_30 != (int *)0x0) {
    FUN_009ba2f0();
  }
  appuStack_3c[0] = wxDC::vftable;
  uStack_10 = 7;
  if (piStack_34 != (int *)0x0) {
    (**(code **)(*piStack_34 + 4))(1);
  }
  uStack_10 = 0xffffffff;
  appuStack_3c[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_18;
  return;
}



undefined4 __thiscall FUN_009578c0(undefined4 param_1_00,byte param_1)

{
  FUN_00957450();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_009578e0(int *param_1)

{
  uint *puVar1;
  undefined *puVar2;
  uint uStack_74;
  undefined local_6c [32];
  uint uStack_4c;
  undefined4 uStack_3c;
  uint uStack_38;
  void *pvStack_34;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda698;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uStack_74 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[0x67] == -1)) {
    FUN_00840480("..\\..\\src\\generic\\vlbox.cpp",0x114,"wxVListBox::SendSelectedEvent",
                 "m_current != wxNOT_FOUND",L"SendSelectedEvent() shouldn\'t be called");
  }
  FUN_0092bd60(DAT_032bfdc4,param_1[0x10]);
  puVar2 = local_6c;
  local_4 = 0;
  (**(code **)(*param_1 + 0x348))(puVar2,param_1[0x67]);
  puVar1 = &uStack_74;
  (**(code **)(*(int *)param_1[0x1c] + 0x18))(puVar1);
  local_10 = 0xffffffff;
  _free(pvStack_34);
  if (7 < uStack_38) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_4c);
  }
  uStack_38 = 7;
  uStack_3c = 0;
  uStack_4c = uStack_4c & 0xffff0000;
  FUN_0083e850(puVar1,puVar2,wxObject::vftable);
  ExceptionList = pvStack_18;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00957a00(int param_1_00,undefined4 param_1,byte param_2)

{
  char cVar1;
  char cVar2;
  bool bVar3;
  
  bVar3 = false;
  if (*(int *)(param_1_00 + 0x1a4) == 0) goto LAB_00957a87;
  if ((param_2 & 1) == 0) {
    *(undefined4 *)(param_1_00 + 0x1a0) = param_1;
    if ((param_2 & 2) == 0) goto LAB_00957a6a;
    if ((param_2 & 4) != 0) goto LAB_00957a87;
    FUN_009571d0(param_1);
  }
  else {
    if (*(int *)(param_1_00 + 0x19c) == -1) {
LAB_00957a6a:
      cVar1 = FUN_00956e00(0);
      cVar2 = FUN_00956bc0(param_1,1);
    }
    else {
      if (*(int *)(param_1_00 + 0x1a0) == -1) {
        *(int *)(param_1_00 + 0x1a0) = *(int *)(param_1_00 + 0x19c);
      }
      cVar1 = FUN_00956e00(0);
      cVar2 = FUN_00956c70(*(undefined4 *)(param_1_00 + 0x1a0),param_1);
    }
    bVar3 = cVar1 != '\0';
    if (cVar2 == '\0') goto LAB_00957a87;
  }
  bVar3 = true;
LAB_00957a87:
  cVar1 = FUN_00956a20(param_1);
  if (((cVar1 != '\0') && (*(int *)(param_1_00 + 0x1a4) == 0)) || (bVar3)) {
    FUN_009578e0();
  }
  return;
}



void __thiscall FUN_00957ab0(int *param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  
  iVar1 = *(int *)(param_1 + 0x34);
  uVar2 = 4;
  if (iVar1 < 0x139) {
    if (iVar1 != 0x138) {
      if (iVar1 == 9) {
        FUN_0091ccc0(param_1);
      }
      else if (iVar1 == 0x20) {
        iVar1 = param_1_00[0x67];
        uVar2 = 0;
        goto LAB_00957b62;
      }
      goto switchD_00957b02_caseD_13a;
    }
    goto switchD_00957b02_caseD_17e;
  }
  switch(iVar1) {
  case 0x139:
  case 0x177:
    iVar1 = 0;
    break;
  default:
switchD_00957b02_caseD_13a:
    *(undefined *)(param_1 + 0x24) = 1;
    return;
  case 0x13b:
  case 0x179:
    iVar1 = param_1_00[0x67];
    if (iVar1 != -1) {
      if (iVar1 == 0) {
        return;
      }
      iVar1 = iVar1 + -1;
      break;
    }
  case 0x17e:
switchD_00957b02_caseD_17e:
    iVar1 = param_1_00[0x60] + -1;
    break;
  case 0x13d:
  case 0x17b:
    if (param_1_00[0x67] == param_1_00[0x60] + -1) {
      return;
    }
    iVar1 = param_1_00[0x67] + 1;
    break;
  case 0x16e:
  case 0x17c:
    if (param_1_00[0x67] == param_1_00[0x62]) {
      uVar3 = 0xffffffff;
      goto LAB_00957b52;
    }
    goto LAB_00957b5c;
  case 0x16f:
  case 0x17d:
    uVar3 = 1;
LAB_00957b52:
    (**(code **)(*param_1_00 + 0x1c4))(uVar3);
LAB_00957b5c:
    iVar1 = param_1_00[0x62];
  }
LAB_00957b62:
  if ((*(byte *)(param_1 + 0x28) & 2) != 0) {
    uVar2 = uVar2 | 1;
  }
  if ((*(byte *)(param_1 + 0x28) & 1) != 0) {
    uVar2 = uVar2 | 2;
  }
  FUN_00957a00(iVar1,uVar2);
  return;
}



void __thiscall FUN_00957bf0(int *param_1,int param_2)

{
  int iVar1;
  byte bVar2;
  
  (**(code **)(*param_1 + 0x100))();
  iVar1 = FUN_00957f00(*(undefined4 *)(param_2 + 0x30));
  if (iVar1 != -1) {
    bVar2 = (*(byte *)(param_2 + 0x28) & 2) != 0;
    if ((*(byte *)(param_2 + 0x28) & 1) != 0) {
      bVar2 = bVar2 | 2;
    }
    FUN_00957a00(iVar1,bVar2);
  }
  return;
}



void __thiscall FUN_00957c40(int *param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_6c [92];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8ac8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  iVar2 = FUN_00957f00(*(undefined4 *)(param_1 + 0x30));
  if (iVar2 != -1) {
    if (iVar2 == param_1_00[0x67]) {
      FUN_0092bd60(DAT_032bfdc8,param_1_00[0x10]);
      local_4 = 0;
      (**(code **)(*param_1_00 + 0x348))(local_6c,iVar2,uVar1);
      (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(&stack0xffffff8c);
      local_10 = 0xffffffff;
      FUN_00454a4e();
    }
    else {
      FUN_00957bf0(param_1);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_00957d20(int *param_1_00,uint param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  
  if (param_1 == param_2) {
    return 0;
  }
  if (param_1 <= param_2) {
    (**(code **)(*param_1_00 + 0x40))(param_1,param_2);
    iVar1 = 0;
    if (param_1 < param_2) {
      do {
        iVar2 = (**(code **)(*param_1_00 + 0x3c))(param_1);
        param_1 = param_1 + 1;
        iVar1 = iVar1 + iVar2;
      } while (param_1 < param_2);
    }
    return iVar1;
  }
  iVar1 = FUN_00957d20(param_2,param_1);
  return -iVar1;
}



int __thiscall FUN_00957d80(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar1 = (**(code **)(*param_1 + 0x20))();
  iVar2 = (**(code **)(*param_1 + 0x3c))(param_2);
  iVar4 = param_2;
  while( true ) {
    if (iVar1 < iVar2) {
      if ((char)param_2 != '\0') {
        iVar4 = iVar4 + 1;
      }
      return iVar4;
    }
    if (iVar4 == 0) break;
    iVar4 = iVar4 + -1;
    iVar3 = (**(code **)(*param_1 + 0x3c))(iVar4);
    iVar2 = iVar2 + iVar3;
  }
  return 0;
}



void __thiscall FUN_00957dd0(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd98b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *(int *)(param_1_00 + 8) = param_1;
  if (param_1 == *(int *)(param_1_00 + 4)) {
    if ((*(int *)(param_1_00 + 4) != 0) && (*(int *)(param_1_00 + 0x24) != 0)) {
      cVar1 = FUN_0091c050(*(int *)(param_1_00 + 0x24));
      if ((cVar1 != '\0') && (*(int **)(param_1_00 + 0x24) != (int *)0x0)) {
        (**(code **)(**(int **)(param_1_00 + 0x24) + 4))(1,uVar2);
      }
      *(undefined4 *)(param_1_00 + 0x24) = 0;
    }
    puVar3 = (undefined4 *)operator_new(0x44);
    local_4 = 0;
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      FUN_00845b70();
      *puVar3 = wxVarScrollHelperEvtHandler::vftable;
      puVar3[0x10] = param_1_00;
    }
    local_4 = 0xffffffff;
    *(undefined4 **)(param_1_00 + 0x24) = puVar3;
    FUN_0091bd90(puVar3);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00957e90(int param_1_00,int param_1)

{
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\generic\\vscroll.cpp",0x1aa,
                   "wxVarScrollHelperBase::SetTargetWindow","target",
                   L"target window must not be NULL");
    }
  }
  else if (param_1 != *(int *)(param_1_00 + 8)) {
    FUN_00957dd0();
    return;
  }
  return;
}



void __fastcall FUN_00957ee0(int *param_1)

{
  (**(code **)(*param_1 + 0x10))();
  (**(code **)(*(int *)param_1[2] + 0x15c))(1,0);
  return;
}



uint __thiscall FUN_00957f00(int *param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  uVar3 = param_1_00[5];
  uVar2 = param_1_00[6] + uVar3;
  while( true ) {
    if (uVar2 <= uVar3) {
      return 0xffffffff;
    }
    iVar1 = (**(code **)(*param_1_00 + 0x3c))(uVar3);
    param_1 = param_1 - iVar1;
    if (param_1 < 0) break;
    uVar3 = uVar3 + 1;
  }
  return uVar3;
}



undefined ** FUN_00957f40(void)

{
  return &PTR_u_wxVScrolledWindow_0323b058;
}



undefined4 * __thiscall FUN_00957f50(undefined4 *param_1_00,int param_1)

{
  *param_1_00 = wxVarScrollHelperBase::vftable;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_00840480("..\\..\\src\\generic\\vscroll.cpp",0x90,
                 "wxVarScrollHelperBase::wxVarScrollHelperBase",&DAT_00d517ac,
                 L"associated window can\'t be NULL in wxVarScrollHelperBase");
  }
  param_1_00[7] = 0;
  param_1_00[3] = 0;
  param_1_00[4] = 0;
  param_1_00[5] = 0;
  param_1_00[2] = 0;
  *(undefined *)(param_1_00 + 8) = 1;
  param_1_00[9] = 0;
  param_1_00[1] = param_1;
  FUN_00957dd0(param_1);
  return param_1_00;
}



void __fastcall FUN_00957fc0(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = wxVarScrollHelperBase::vftable;
  if ((param_1[1] != 0) && (param_1[9] != 0)) {
    cVar1 = FUN_0091c050(param_1[9]);
    if ((cVar1 != '\0') && ((int *)param_1[9] != (int *)0x0)) {
      (**(code **)(*(int *)param_1[9] + 4))(1);
    }
    param_1[9] = 0;
  }
  return;
}



void __fastcall FUN_00958000(int param_1)

{
  uint uVar1;
  int iVar2;
  
  uVar1 = *(uint *)(param_1 + 0xc);
  if (uVar1 < 0x1e) {
    FUN_00957d20(0,uVar1);
    return;
  }
  iVar2 = *(int *)(param_1 + 0xc);
  FUN_00957d20((uVar1 >> 1) - 5,(uVar1 >> 1) + 5);
  FUN_00957d20(iVar2 + -10,iVar2);
  FUN_00957d20(0,10);
  FUN_00a49750();
  return;
}



uint __thiscall FUN_00958080(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != DAT_032bfeb0) {
    if (iVar1 == DAT_032bfeb4) {
      return *(uint *)(param_1_00 + 0xc);
    }
    if (iVar1 == DAT_032bfeb8) {
      if (*(int *)(param_1_00 + 0x14) != 0) {
        return *(int *)(param_1_00 + 0x14) - 1;
      }
    }
    else {
      if (iVar1 == DAT_032bfebc) {
        return *(int *)(param_1_00 + 0x14) + 1;
      }
      if (iVar1 == DAT_032bfec0) {
        iVar1 = *(int *)(param_1_00 + 0x14);
        if (iVar1 == 0) {
          uVar4 = 0;
        }
        else {
          uVar4 = iVar1 - 1;
        }
        uVar3 = FUN_00957d80(iVar1,0);
        if (uVar4 <= uVar3) {
          uVar3 = uVar4;
        }
        return uVar3;
      }
      if (iVar1 == DAT_032bfec4) {
        iVar1 = *(int *)(param_1_00 + 0x14);
        iVar2 = *(int *)(param_1_00 + 0x18);
        uVar4 = iVar1 + 1;
        if (iVar1 + iVar2 == 0) {
          if (uVar4 < (uint)(iVar2 + iVar1)) {
            return iVar2 + iVar1;
          }
          return uVar4;
        }
        uVar3 = iVar1 + -1 + iVar2;
        if (uVar4 < uVar3) {
          return uVar3;
        }
        return uVar4;
      }
      if ((iVar1 == DAT_032bfecc) || (iVar1 == DAT_032bfec8)) {
        return *(uint *)(param_1 + 0x28);
      }
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\generic\\vscroll.cpp",0x14f,
                     "wxVarScrollHelperBase::GetNewScrollPosition","Assert failure",
                     L"unknown scroll event type?");
      }
    }
  }
  return 0;
}



void __fastcall FUN_00958170(int *param_1)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  
  iVar4 = 0;
  if (param_1[3] == 0) {
    param_1[5] = 0;
    param_1[6] = 0;
    iVar4 = *(int *)param_1[1];
    uVar1 = (**(code **)(*param_1 + 0x28))(0,0,0,1);
    (**(code **)(iVar4 + 0x1a8))(uVar1);
    return;
  }
  iVar2 = (**(code **)(*param_1 + 0x20))();
  uVar5 = param_1[5];
  if (uVar5 < (uint)param_1[3]) {
    do {
      if (iVar2 < iVar4) break;
      iVar3 = (**(code **)(*param_1 + 0x3c))(uVar5);
      uVar5 = uVar5 + 1;
      iVar4 = iVar4 + iVar3;
    } while (uVar5 < (uint)param_1[3]);
  }
  iVar3 = uVar5 - param_1[5];
  param_1[6] = iVar3;
  if (iVar2 < iVar4) {
    iVar3 = iVar3 + -1;
  }
  iVar4 = *(int *)param_1[1];
  uVar1 = (**(code **)(*param_1 + 0x28))(param_1[5],iVar3,param_1[3],1);
  (**(code **)(iVar4 + 0x1a8))(uVar1);
  return;
}



void __thiscall FUN_00958210(int *param_1_00,uint param_1)

{
  uint uVar1;
  
  if (((uint)param_1_00[5] <= param_1) && (param_1 < (uint)(param_1_00[6] + param_1_00[5]))) {
    (**(code **)(*param_1_00 + 0x3c))(param_1);
    (**(code **)(*param_1_00 + 0x24))();
    (**(code **)(*param_1_00 + 0x28))();
    for (uVar1 = param_1_00[5]; uVar1 < param_1; uVar1 = uVar1 + 1) {
      (**(code **)(*param_1_00 + 0x3c))(uVar1);
      (**(code **)(*param_1_00 + 0x28))();
    }
    (**(code **)(*(int *)param_1_00[2] + 0x15c))(1,&stack0xffffffec);
  }
  return;
}



void __thiscall FUN_009582d0(int *param_1_00,uint param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  int iStack_10;
  int iStack_c;
  int iStack_8;
  int iStack_4;
  
  iVar3 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 < param_1)) {
    FUN_00840480("..\\..\\src\\generic\\vscroll.cpp",0x1df,"wxVarScrollHelperBase::RefreshUnits",
                 "from <= to",L"RefreshUnits(): empty range");
  }
  uVar4 = param_1_00[5];
  uVar5 = param_1;
  if (param_1 < uVar4) {
    uVar5 = uVar4;
  }
  if (uVar4 + param_1_00[6] < param_2) {
    param_2 = uVar4 + param_1_00[6];
  }
  param_1 = 0;
  iVar1 = (**(code **)(*param_1_00 + 0x24))();
  for (uVar4 = param_1_00[5]; uVar4 < uVar5; uVar4 = uVar4 + 1) {
    iVar2 = (**(code **)(*param_1_00 + 0x3c))(uVar4);
    iVar3 = iVar3 + iVar2;
  }
  for (; uVar5 <= param_2; uVar5 = uVar5 + 1) {
    iVar2 = (**(code **)(*param_1_00 + 0x3c))(uVar5);
    param_1 = param_1 + iVar2;
  }
  iStack_10 = 0;
  iStack_c = 0;
  iStack_8 = 0;
  iStack_4 = 0;
  iVar2 = (**(code **)(*param_1_00 + 0x28))();
  if (iVar2 == 8) {
    iStack_10 = 0;
    iStack_c = iVar3;
  }
  else {
    iStack_c = 0;
    iStack_10 = iVar3;
  }
  iVar3 = (**(code **)(*param_1_00 + 0x28))();
  iStack_8 = param_1;
  iStack_4 = iVar1;
  if (iVar3 == 8) {
    iStack_8 = iVar1;
    iStack_4 = param_1;
  }
  (**(code **)(*(int *)param_1_00[2] + 0x15c))(1,&iStack_10);
  return;
}



undefined4 __fastcall FUN_00958400(int *param_1)

{
  int *piVar1;
  code *pcVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  int unaff_ESI;
  int iVar6;
  int aiStack_8 [2];
  
  if ((*(int *)(param_1[2] + 0xd4) != 0) && (*(char *)(param_1 + 8) != '\0')) {
    iVar3 = FUN_00957d20(0,param_1[5]);
    iVar4 = (**(code **)(*param_1 + 0x28))();
    if (iVar4 == 8) {
      iVar4 = 0;
      iVar6 = -iVar3;
    }
    else {
      iVar6 = 0;
      iVar4 = -iVar3;
    }
    (**(code **)(*(int *)param_1[2] + 0xb8))(aiStack_8);
    piVar1 = *(int **)(param_1[2] + 0xd4);
    pcVar2 = *(code **)(*piVar1 + 0x4c);
    piVar1[10] = iVar6;
    piVar1[9] = iVar4;
    piVar1[5] = unaff_ESI;
    piVar1[6] = aiStack_8[0];
    (*pcVar2)();
    (**(code **)(*piVar1 + 0x40))(4,unaff_ESI,aiStack_8[0]);
    return 1;
  }
  uVar5 = FUN_0091d660();
  return uVar5;
}



undefined4 __fastcall FUN_009584a0(int *param_1)

{
  code *pcVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  uint uVar7;
  undefined4 uVar8;
  uint unaff_retaddr;
  
  if (param_1[3] == 0) {
    return 0;
  }
  uVar7 = param_1[3] - 1;
  iVar2 = (**(code **)(*param_1 + 0x20))();
  for (iVar3 = (**(code **)(*param_1 + 0x3c))(uVar7); iVar3 <= iVar2; iVar3 = iVar3 + iVar4) {
    if (uVar7 == 0) goto LAB_009584e6;
    uVar7 = uVar7 - 1;
    iVar4 = (**(code **)(*param_1 + 0x3c))(uVar7);
  }
  uVar7 = uVar7 + 1;
LAB_009584e6:
  if (uVar7 < unaff_retaddr) {
    unaff_retaddr = uVar7;
  }
  uVar7 = param_1[5];
  if (unaff_retaddr != uVar7) {
    iVar3 = param_1[6];
    pcVar1 = *(code **)(*param_1 + 0x10);
    param_1[5] = unaff_retaddr;
    (*pcVar1)();
    if (((((int *)param_1[2])[0x13] != 0) ||
        (((uint)param_1[5] < iVar3 + uVar7 && (uVar7 < (uint)(param_1[6] + param_1[5]))))) &&
       (*(char *)(param_1 + 8) != '\0')) {
      uVar5 = FUN_00957d20(param_1[5],uVar7);
      iVar3 = (**(code **)(*param_1 + 0x28))();
      uVar6 = 0;
      uVar8 = uVar5;
      if (iVar3 == 4) {
        uVar8 = 0;
        uVar6 = uVar5;
      }
      (**(code **)(*(int *)param_1[2] + 0x1bc))(uVar6,uVar8,0);
      return 1;
    }
    (**(code **)(*(int *)param_1[2] + 0x15c))(1,0);
    return 1;
  }
  return 0;
}



void FUN_00958590(void)

{
  FUN_009584a0();
  return;
}



uint __thiscall FUN_009585b0(int *param_1_00,int param_1)

{
  uint in_EAX;
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  
  uVar4 = in_EAX & 0xffffff00;
  if (param_1 != 0) {
    do {
      if (param_1 < 1) {
        iVar5 = param_1_00[5] + param_1_00[6];
        iVar1 = (**(code **)(*param_1_00 + 0x20))();
        iVar2 = (**(code **)(*param_1_00 + 0x3c))(iVar5);
        while ((iVar2 <= iVar1 && (iVar5 != 0))) {
          iVar5 = iVar5 + -1;
          iVar3 = (**(code **)(*param_1_00 + 0x3c))(iVar5);
          iVar2 = iVar2 + iVar3;
        }
        param_1 = param_1 + 1;
      }
      else {
        iVar5 = param_1_00[5] + param_1_00[6];
        if (iVar5 != 0) {
          iVar5 = iVar5 + -1;
        }
        param_1 = param_1 + -1;
      }
      uVar4 = FUN_009584a0(iVar5);
    } while (param_1 != 0);
  }
  return uVar4;
}



void __thiscall FUN_00958630(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  
  if (param_1[3] != 0) {
    iVar1 = (**(code **)(*param_1 + 0x20))();
    uVar4 = param_1[5];
    iVar3 = 0;
    if (uVar4 < (uint)param_1[3]) {
      do {
        if (iVar1 < iVar3) break;
        iVar2 = (**(code **)(*param_1 + 0x3c))(uVar4);
        uVar4 = uVar4 + 1;
        iVar3 = iVar3 + iVar2;
      } while (uVar4 < (uint)param_1[3]);
    }
    iVar1 = iVar1 - iVar3;
    iVar3 = param_1[5];
    while (iVar3 != 0) {
      iVar2 = (**(code **)(*param_1 + 0x3c))(iVar3 + -1);
      if (iVar1 < iVar2) break;
      iVar1 = iVar1 - iVar2;
      iVar3 = iVar3 + -1;
    }
    param_1[5] = iVar3;
  }
  (**(code **)(*param_1 + 0x10))();
  *(undefined *)(param_2 + 0x24) = 1;
  return;
}



void __thiscall FUN_009586b0(int *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  int unaff_EBX;
  int unaff_ESI;
  undefined local_8 [4];
  int local_4;
  
  if (*(char *)(param_1_00 + 8) != '\0') {
    (**(code **)(**(int **)(param_1 + 8) + 0x108))(&local_4,local_8);
    iVar1 = FUN_00957d20(0,param_1_00[5]);
    iVar2 = (**(code **)(*param_1_00 + 0x28))();
    if (iVar2 == 8) {
      unaff_EBX = -iVar1 + unaff_EBX;
    }
    else {
      unaff_ESI = unaff_ESI + -iVar1;
    }
    (**(code **)(**(int **)(local_4 + 8) + 0x104))(unaff_ESI,unaff_EBX);
  }
  return;
}



int __thiscall FUN_00958730(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = FUN_00957d20(0,*(undefined4 *)(param_1_00 + 0x14));
  return param_1 - iVar1;
}



int __thiscall FUN_00958750(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = FUN_00957d20(0,*(undefined4 *)(param_1_00 + 0x14));
  return iVar1 + param_1;
}



void __thiscall FUN_00958770(int *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = (**(code **)(*param_1 + 0x28))();
  if (iVar1 == 8) {
    param_1[7] = param_1[7] + *(int *)(param_2 + 0x3c);
    iVar1 = -(param_1[7] / *(int *)(param_2 + 0x40));
    if (iVar1 != 0) {
      param_1[7] = iVar1 * *(int *)(param_2 + 0x40) + param_1[7];
      if (*(int *)(param_2 + 0x44) != -1) {
        (**(code **)(*param_1 + 0x34))(*(int *)(param_2 + 0x44) * iVar1);
        return;
      }
      (**(code **)(*param_1 + 0x38))(iVar1);
    }
  }
  return;
}



void __fastcall thunk_FUN_00958000(int param_1)

{
  uint uVar1;
  int iVar2;
  
  uVar1 = *(uint *)(param_1 + 0xc);
  if (uVar1 < 0x1e) {
    FUN_00957d20(0,uVar1);
    return;
  }
  iVar2 = *(int *)(param_1 + 0xc);
  FUN_00957d20((uVar1 >> 1) - 5,(uVar1 >> 1) + 5);
  FUN_00957d20(iVar2 + -10,iVar2);
  FUN_00957d20(0,10);
  FUN_00a49750();
  return;
}



bool __thiscall FUN_009587e0(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  undefined4 uVar5;
  char cVar6;
  
  iVar2 = param_1;
  iVar1 = *(int *)(param_1 + 0xc);
  cVar3 = FUN_008469f0(param_1);
  if (iVar1 == DAT_032bfed0) {
    FUN_00958630(param_1);
    return *(char *)(param_1 + 0x24) == '\0';
  }
  if ((cVar3 != '\0') && (*(char *)(param_1 + 0x25) != '\0')) {
    return true;
  }
  cVar6 = *(char *)(param_1 + 0x24);
  if (cVar6 != '\0') {
    *(undefined *)(param_1 + 0x24) = 0;
  }
  if (((((iVar1 == DAT_032bfeb0) || (iVar1 == DAT_032bfeb4)) || (iVar1 == DAT_032bfeb8)) ||
      ((iVar1 == DAT_032bfebc || (iVar1 == DAT_032bfec0)))) ||
     ((iVar1 == DAT_032bfec4 || ((iVar1 == DAT_032bfec8 || (iVar1 == DAT_032bfecc)))))) {
    iVar1 = *(int *)(param_1 + 0x2c);
    iVar4 = (**(code **)(**(int **)(param_1_00 + 0x40) + 0x28))();
    if (iVar4 == iVar1) {
      uVar5 = FUN_00958080(param_1);
      FUN_009584a0(uVar5);
    }
    else {
      *(undefined *)(param_1 + 0x24) = 1;
    }
    if (*(char *)(param_1 + 0x24) == '\0') {
      param_1._0_1_ = '\x01';
      cVar6 = '\0';
      cVar3 = (char)param_1;
    }
  }
  else if (iVar1 == DAT_032bfe44) {
    FUN_00958770(param_1);
    *(char *)(param_1 + 0x24) = cVar6;
    return (bool)cVar3;
  }
  param_1._0_1_ = cVar3;
  *(char *)(iVar2 + 0x24) = cVar6;
  return (bool)(char)param_1;
}



undefined4 * __thiscall FUN_009588e0(undefined4 *param_1_00,byte param_1)

{
  char cVar1;
  
  *param_1_00 = wxVarScrollHelperBase::vftable;
  if ((param_1_00[1] != 0) && (param_1_00[9] != 0)) {
    cVar1 = FUN_0091c050(param_1_00[9]);
    if ((cVar1 != '\0') && ((int *)param_1_00[9] != (int *)0x0)) {
      (**(code **)(*(int *)param_1_00[9] + 4))(1);
    }
    param_1_00[9] = 0;
  }
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00958930(int *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  
  param_1_00[3] = param_1;
  iVar2 = (**(code **)(*param_1_00 + 0x44))();
  iVar1 = param_1_00[5];
  param_1_00[4] = iVar2;
  FUN_009584a0(iVar1);
  if (iVar1 == param_1_00[5]) {
    (**(code **)(*param_1_00 + 0x10))();
  }
  return;
}



undefined ** FUN_00958970(void)

{
  return &PTR_u_wxMenu_0323b0a4;
}



undefined ** FUN_00958980(void)

{
  return &PTR_u_wxMenuBar_0323b0bc;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x184);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_0092cb00(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined ** FUN_00958a00(void)

{
  return &PTR_u_wxMenuItem_0323b0d4;
}



void __thiscall FUN_00958a10(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x40) = 0;
  *(undefined4 *)(param_1_00 + 0x44) = 0;
  *(undefined4 *)(param_1_00 + 0x84) = 0;
  *(undefined4 *)(param_1_00 + 0x88) = param_1;
  *(undefined4 *)(param_1_00 + 0x38) = 0;
  *(int *)(param_1_00 + 0x8c) = param_1_00;
  return;
}



undefined4 __thiscall FUN_00958a40(int *param_1_00,undefined4 param_1)

{
  int *piVar1;
  
  piVar1 = (int *)(**(code **)(*param_1_00 + 0x74))(param_1);
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(1);
    return 1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x1e4,"wxMenuBase::DoDestroy","item2",
                 L"failed to delete menu item");
  }
  return 0;
}



void __thiscall FUN_00958a90(int param_1_00,int param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (param_1 == 0) {
      FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x2ae,"wxMenuBase::Attach","menubar",
                   L"menu can\'t be attached to NULL menubar");
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x40) != 0)) {
      FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x2b1,"wxMenuBase::Attach","!m_menuBar",
                   L"attaching menu twice?");
    }
    *(int *)(param_1_00 + 0x40) = param_1;
    return;
  }
  *(int *)(param_1_00 + 0x40) = param_1;
  return;
}



void __fastcall FUN_00958b10(int param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x40) == 0)) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x2b9,"wxMenuBase::Detach","m_menuBar",
                 L"detaching unattached menu?");
  }
  *(undefined4 *)(param_1 + 0x40) = 0;
  return;
}



int __thiscall thunk_FUN_0086b200(int param_1_00,int *param_1)

{
  int iVar1;
  char cVar2;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x14) != *param_1)) {
    FUN_00840480("..\\..\\src\\common\\list.cpp",0x146,"wxListBase::Find",
                 "m_keyType == key.GetKeyType()",L"this list is not keyed on the type of this key");
  }
  iVar1 = *(int *)(param_1_00 + 0xc);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    cVar2 = FUN_0086b190(*(undefined4 *)(iVar1 + 4));
    if (cVar2 != '\0') break;
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  return iVar1;
}



undefined4 * __thiscall
FUN_00958b60(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxwxMenuListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __thiscall FUN_00958be0(undefined4 param_1_00,int param_1)

{
  if (param_1 != 0) {
    *(undefined4 *)(param_1 + 0x44) = param_1_00;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x172,"wxMenuBase::AddSubMenu","submenu",
                 L"can\'t add a NULL submenu");
  }
  return;
}



int __thiscall FUN_00958c20(undefined4 param_1_00,int param_1)

{
  if (param_1 != 0) {
    FUN_0086ad60(param_1);
    *(undefined4 *)(param_1 + 0xc) = param_1_00;
    if (*(int *)(param_1 + 0x10) != 0) {
      FUN_00958be0(*(int *)(param_1 + 0x10));
    }
    return param_1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x179,"wxMenuBase::DoAppend",&DAT_03058bd8,
                 L"invalid item in wxMenu::Append()");
  }
  return 0;
}



int __thiscall FUN_00958c80(undefined4 param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  
  if (param_2 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x198,"wxMenuBase::DoInsert",&DAT_03058bd8,
                   L"invalid item in wxMenu::Insert()");
    }
    return 0;
  }
  iVar1 = FUN_0086aef0(param_1);
  if (iVar1 != 0) {
    FUN_0086ae40(iVar1,param_2);
    *(undefined4 *)(param_2 + 0xc) = param_1_00;
    if (*(int *)(param_2 + 0x10) != 0) {
      FUN_00958be0(*(int *)(param_2 + 0x10));
    }
    return param_2;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x19b,"wxMenuBase::DoInsert",&DAT_00fb76e0,
                 L"invalid index in wxMenu::Insert()");
  }
  return 0;
}



undefined4 __thiscall FUN_00958d30(int *param_1_00,undefined4 param_1)

{
  int *piVar1;
  
  piVar1 = (int *)(**(code **)(*param_1_00 + 0x74))(param_1);
  if (piVar1 != (int *)0x0) {
    piVar1[4] = 0;
    (**(code **)(*piVar1 + 4))(1);
    return 1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x1d0,"wxMenuBase::DoDelete","item2",
                 L"failed to delete menu item");
  }
  return 0;
}



void __thiscall FUN_00958d90(int param_1_00,int param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  
  if (param_2 != (int *)0x0) {
    *param_2 = 0;
  }
  iVar1 = *(int *)(param_1_00 + 0x78);
  iVar2 = 0;
  while ((iVar1 != 0 && (iVar2 == 0))) {
    iVar2 = *(int *)(iVar1 + 8);
    if (*(int *)(iVar2 + 8) == param_1) {
      if (param_2 != (int *)0x0) {
        *param_2 = param_1_00;
      }
    }
    else if (*(int *)(iVar2 + 0x10) == 0) {
      iVar2 = 0;
    }
    else {
      iVar2 = FUN_00958d90(param_1,param_2);
    }
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  return;
}



undefined4 __thiscall FUN_00958df0(int param_1_00,uint param_1)

{
  int iVar1;
  
  if (param_1 < *(uint *)(param_1_00 + 0x70)) {
    iVar1 = FUN_0086aef0(param_1);
    return *(undefined4 *)(iVar1 + 8);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x24a,"wxMenuBase::FindItemByPosition",
                 "position < m_items.GetCount()",L"wxMenu::FindItemByPosition(): invalid menu index"
                );
  }
  return 0;
}



undefined4 __fastcall FUN_00958e40(int param_1)

{
  int iVar1;
  int iVar2;
  
  iVar2 = *(int *)(param_1 + 0x44);
  while (iVar1 = iVar2, iVar1 != 0) {
    param_1 = iVar1;
    iVar2 = *(int *)(iVar1 + 0x44);
  }
  return *(undefined4 *)(param_1 + 0x40);
}



undefined4 __fastcall FUN_00958e60(int param_1)

{
  int iVar1;
  int iVar2;
  undefined8 uVar3;
  
  iVar1 = *(int *)(param_1 + 0x44);
  while (iVar2 = iVar1, iVar2 != 0) {
    param_1 = iVar2;
    iVar1 = *(int *)(iVar2 + 0x44);
  }
  iVar1 = *(int *)(param_1 + 0x44);
  if (iVar1 == 0) {
    uVar3 = CONCAT44(param_1,*(undefined4 *)(param_1 + 0x40));
  }
  else {
    uVar3 = FUN_00958e40();
  }
  iVar2 = (int)((ulonglong)uVar3 >> 0x20);
  if ((int)uVar3 != 0) {
    if (iVar1 != 0) {
      iVar1 = FUN_00958e40();
      return *(undefined4 *)(iVar1 + 0x17c);
    }
    return *(undefined4 *)(*(int *)(iVar2 + 0x40) + 0x17c);
  }
  return *(undefined4 *)(iVar2 + 0x84);
}



void __thiscall FUN_00958ec0(int param_1_00,int param_1,undefined4 param_2)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  longlong lVar4;
  
  uVar3 = *(uint *)(param_1_00 + 0x78);
  piVar2 = (int *)0x0;
  if (uVar3 != 0) {
    do {
      if (piVar2 != (int *)0x0) goto LAB_00958efc;
      iVar1 = *(int *)(uVar3 + 8);
      lVar4 = CONCAT44(uVar3,iVar1);
      if (*(int *)(iVar1 + 8) != param_1) {
        if (*(int *)(iVar1 + 0x10) == 0) {
          lVar4 = (ulonglong)uVar3 << 0x20;
        }
        else {
          lVar4 = FUN_00958d90(param_1,0);
        }
      }
      piVar2 = (int *)lVar4;
      uVar3 = *(uint *)((int)((ulonglong)lVar4 >> 0x20) + 0xc);
    } while (uVar3 != 0);
    if (piVar2 != (int *)0x0) {
LAB_00958efc:
      (**(code **)(*piVar2 + 0x20))(param_2);
      return;
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x2e2,"wxMenuBase::Enable",&DAT_03058bd8,
                 L"wxMenu::Enable: no such item");
  }
  return;
}



void __thiscall FUN_00958f40(int param_1_00,int param_1,undefined4 param_2)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  longlong lVar4;
  
  uVar3 = *(uint *)(param_1_00 + 0x78);
  piVar2 = (int *)0x0;
  if (uVar3 != 0) {
    do {
      if (piVar2 != (int *)0x0) goto LAB_00958f7c;
      iVar1 = *(int *)(uVar3 + 8);
      lVar4 = CONCAT44(uVar3,iVar1);
      if (*(int *)(iVar1 + 8) != param_1) {
        if (*(int *)(iVar1 + 0x10) == 0) {
          lVar4 = (ulonglong)uVar3 << 0x20;
        }
        else {
          lVar4 = FUN_00958d90(param_1,0);
        }
      }
      piVar2 = (int *)lVar4;
      uVar3 = *(uint *)((int)((ulonglong)lVar4 >> 0x20) + 0xc);
    } while (uVar3 != 0);
    if (piVar2 != (int *)0x0) {
LAB_00958f7c:
      (**(code **)(*piVar2 + 0x28))(param_2);
      return;
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x2f4,"wxMenuBase::Check",&DAT_03058bd8,
                 L"wxMenu::Check: no such item");
  }
  return;
}



void __thiscall FUN_00958fc0(int param_1_00,int param_1,undefined4 param_2)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  longlong lVar4;
  
  uVar3 = *(uint *)(param_1_00 + 0x78);
  piVar2 = (int *)0x0;
  if (uVar3 != 0) {
    do {
      if (piVar2 != (int *)0x0) goto LAB_00958ffc;
      iVar1 = *(int *)(uVar3 + 8);
      lVar4 = CONCAT44(uVar3,iVar1);
      if (*(int *)(iVar1 + 8) != param_1) {
        if (*(int *)(iVar1 + 0x10) == 0) {
          lVar4 = (ulonglong)uVar3 << 0x20;
        }
        else {
          lVar4 = FUN_00958d90(param_1,0);
        }
      }
      piVar2 = (int *)lVar4;
      uVar3 = *(uint *)((int)((ulonglong)lVar4 >> 0x20) + 0xc);
    } while (uVar3 != 0);
    if (piVar2 != (int *)0x0) {
LAB_00958ffc:
      (**(code **)(*piVar2 + 0x10))(param_2);
      return;
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x306,"wxMenuBase::SetLabel",&DAT_03058bd8,
                 L"wxMenu::SetLabel: no such item");
  }
  return;
}



undefined4 * __fastcall FUN_00959040(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc298;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00446436(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  *param_1 = wxMenuBarBase::vftable;
  local_4 = 0;
  param_1[0x59] = wxListBase::vftable;
  FUN_0086ad40(0);
  param_1[0x59] = wxMenuList::vftable;
  param_1[0x5f] = 0;
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_009590c0(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_c = ExceptionList;
  puStack_8 = &LAB_00bdc2d6;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *param_1 = wxMenuBarBase::vftable;
  iVar1 = param_1[0x5c];
  local_4 = 1;
  for (; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if (*(int **)(iVar1 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar1 + 8) + 4))(1,uVar2);
    }
  }
  FUN_0086b130();
  local_4 = local_4 & 0xffffff00;
  FUN_0086ade0();
  local_4 = 0xffffffff;
  FUN_009150e0();
  ExceptionList = local_c;
  return;
}



undefined4 FUN_00959160(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_0086aef0(param_1);
  if (iVar1 != 0) {
    return *(undefined4 *)(iVar1 + 8);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x33d,"wxMenuBarBase::GetMenu",&DAT_00fb76e0,
                 L"bad index in wxMenuBar::GetMenu()");
  }
  return 0;
}



int * __thiscall FUN_009591b0(undefined4 param_1_00,undefined4 param_1,int *param_2)

{
  int *piVar1;
  int iVar2;
  
  if (param_2 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x365,"wxMenuBarBase::Replace",&DAT_00d5017c,
                   L"can\'t insert NULL menu");
    }
  }
  else {
    iVar2 = FUN_0086aef0(param_1);
    if (iVar2 != 0) {
      piVar1 = *(int **)(iVar2 + 8);
      *(int **)(iVar2 + 8) = param_2;
      (**(code **)(*param_2 + 100))(param_1_00);
      (**(code **)(*piVar1 + 0x68))();
      return piVar1;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x368,"wxMenuBarBase::Replace",&DAT_00fb76e0,
                   L"bad index in wxMenuBar::Replace()");
      return (int *)0x0;
    }
  }
  return (int *)0x0;
}



int * FUN_00959260(undefined4 param_1)

{
  int *piVar1;
  int iVar2;
  
  iVar2 = FUN_0086aef0(param_1);
  if (iVar2 != 0) {
    piVar1 = *(int **)(iVar2 + 8);
    FUN_0086b060(iVar2);
    (**(code **)(*piVar1 + 0x68))();
    return piVar1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x376,"wxMenuBarBase::Remove",&DAT_00fb76e0,
                 L"bad index in wxMenuBar::Remove()");
  }
  return (int *)0x0;
}



void __thiscall FUN_009592d0(int param_1_00,undefined4 param_1)

{
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    *(undefined4 *)(param_1_00 + 0x17c) = param_1;
    return;
  }
  if (*(int *)(param_1_00 + 0x17c) != 0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x399,"wxMenuBarBase::Attach","!IsAttached()",
                 L"menubar already attached!");
    *(undefined4 *)(param_1_00 + 0x17c) = param_1;
    return;
  }
  *(undefined4 *)(param_1_00 + 0x17c) = param_1;
  return;
}



int __thiscall FUN_00959380(int param_1_00,undefined4 param_1,undefined4 *param_2)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = 0;
  }
  uVar1 = *(uint *)(param_1_00 + 0x168);
  iVar2 = 0;
  uVar3 = 0;
  do {
    if (uVar1 <= uVar3) {
      return iVar2;
    }
    iVar2 = FUN_00958d90(param_1,param_2);
    uVar3 = uVar3 + 1;
  } while (iVar2 == 0);
  return iVar2;
}



int FUN_009593e0(int param_1)

{
  int *piVar1;
  int iVar2;
  
  iVar2 = FUN_0086af40(param_1);
  if (iVar2 != 0) {
    FUN_0086b060(iVar2);
    piVar1 = *(int **)(param_1 + 0x10);
    *(undefined4 *)(param_1 + 0xc) = 0;
    if ((piVar1 != (int *)0x0) && (piVar1[0x11] = 0, piVar1[0x10] != 0)) {
      (**(code **)(*piVar1 + 0x68))();
    }
    return param_1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x1b3,"wxMenuBase::DoRemove",&DAT_00fb76e0,
                 L"bug in wxMenu::Remove logic");
  }
  return 0;
}



void __thiscall FUN_00959460(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(int *)(param_1_00 + 0x44) != 0) {
      FUN_008402e0("..\\..\\src\\common\\menucmn.cpp",0x2c5,"wxMenuBase::SetInvokingWindow",
                   "!GetParent()","should only be called for top level popup menus");
    }
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      *(undefined4 *)(param_1_00 + 0x84) = param_1;
      return;
    }
    if (*(int *)(param_1_00 + 0x44) == 0) {
      iVar1 = *(int *)(param_1_00 + 0x40);
    }
    else {
      iVar1 = FUN_00958e40();
    }
    if (iVar1 == 0) {
      *(undefined4 *)(param_1_00 + 0x84) = param_1;
      return;
    }
    FUN_008402e0("..\\..\\src\\common\\menucmn.cpp",0x2c7,"wxMenuBase::SetInvokingWindow",
                 "!IsAttached()","menus attached to menu bar can\'t have invoking window");
  }
  *(undefined4 *)(param_1_00 + 0x84) = param_1;
  return;
}



undefined4 __thiscall FUN_00959500(undefined4 param_1_00,byte param_1)

{
  FUN_009590c0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00959520(undefined4 param_1_00,int *param_1,int param_2)

{
  if (param_1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x344,"wxMenuBarBase::Append",&DAT_00d5017c,
                   L"can\'t append NULL menu");
    }
  }
  else {
    if (*(int *)(param_2 + 0x14) != 0) {
      FUN_0086ad60(param_1);
      (**(code **)(*param_1 + 100))(param_1_00);
      return 1;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x345,"wxMenuBarBase::Append","!title.empty()"
                   ,L"can\'t append menu with empty title");
      return 0;
    }
  }
  return 0;
}



undefined4 __thiscall FUN_009595c0(int param_1_00,int param_1,int *param_2,undefined4 param_3)

{
  undefined4 uVar1;
  int iVar2;
  
  if (param_1 == *(int *)(param_1_00 + 0x168)) {
    uVar1 = FUN_00959520(param_2,param_3);
    return uVar1;
  }
  if (param_2 != (int *)0x0) {
    iVar2 = FUN_0086aef0(param_1);
    if (iVar2 != 0) {
      FUN_0086ae40(iVar2,param_2);
      (**(code **)(*param_2 + 100))(param_1_00);
      return 1;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x359,"wxMenuBarBase::Insert",&DAT_00fb76e0,
                   L"bad index in wxMenuBar::Insert()");
    }
    return 0;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x356,"wxMenuBarBase::Insert",&DAT_00d5017c,
                 L"can\'t insert NULL menu");
  }
  return 0;
}



void __fastcall FUN_00959680(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bdc329;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxMenuItemBase::vftable;
  local_4 = 3;
  if ((int *)param_1[4] != (int *)0x0) {
    (**(code **)(*(int *)param_1[4] + 4))(1,uVar1);
  }
  _free((void *)param_1[0x15]);
  if (7 < (uint)param_1[0x14]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xf]);
  }
  param_1[0x14] = 7;
  param_1[0x13] = 0;
  *(undefined2 *)(param_1 + 0xf) = 0;
  _free((void *)param_1[0xc]);
  if (7 < (uint)param_1[0xb]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[6]);
  }
  param_1[0xb] = 7;
  param_1[10] = 0;
  *(undefined2 *)(param_1 + 6) = 0;
  local_4 = local_4 & 0xffffff00;
  FUN_00994360(0xfffffffd);
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00959760(int param_1_00,char param_1)

{
  *(uint *)(param_1_00 + 0x5c) = (uint)(param_1 != '\0');
  return;
}



void __thiscall FUN_00959770(int param_1_00,undefined param_1)

{
  *(undefined *)(param_1_00 + 0x61) = param_1;
  return;
}



undefined __fastcall FUN_00959780(int param_1)

{
  return *(undefined *)(param_1 + 0x61);
}



void __thiscall FUN_00959790(int param_1_00,undefined param_1)

{
  *(undefined *)(param_1_00 + 0x60) = param_1;
  return;
}



undefined __fastcall FUN_009597a0(int param_1)

{
  return *(undefined *)(param_1 + 0x60);
}



undefined4 __fastcall FUN_009597b0(int *param_1)

{
  undefined4 uVar1;
  undefined4 local_30 [5];
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = (**(code **)(*param_1 + 0x14))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  puStack_8 = (undefined *)0x0;
  uVar1 = FUN_009b1ad0(uVar1);
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  ExceptionList = pvStack_10;
  return uVar1;
}



undefined4 FUN_00959830(undefined4 param_1,undefined4 param_2)

{
  FUN_008feb60(param_1,param_2,3);
  return param_1;
}



void __fastcall FUN_00959860(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_c = ExceptionList;
  puStack_8 = &LAB_00bdc36e;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *param_1 = wxMenuBase::vftable;
  iVar1 = param_1[0x1e];
  local_4 = 2;
  for (; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if (*(int **)(iVar1 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar1 + 8) + 4))(1,uVar2);
    }
  }
  FUN_0086b130();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0086ade0();
  _free((void *)param_1[0x19]);
  if (7 < (uint)param_1[0x18]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x13]);
  }
  param_1[0x18] = 7;
  param_1[0x17] = 0;
  *(undefined2 *)(param_1 + 0x13) = 0;
  local_4 = 0xffffffff;
  FUN_00846530();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00959930(int param_1_00,undefined4 param_1)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  bool bVar4;
  undefined auStack_58 [4];
  undefined4 uStack_54;
  uint uStack_40;
  void *pvStack_3c;
  undefined local_34 [4];
  undefined4 uStack_30;
  int iStack_20;
  uint uStack_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd3090;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_58;
  ExceptionList = &local_c;
  FUN_00959830(local_34,param_1,DAT_0323f878 ^ (uint)&stack0xffffff98);
  iVar1 = *(int *)(param_1_00 + 0x78);
  local_4 = 0;
  do {
    if (iVar1 == 0) {
      _free(local_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
LAB_00959a45:
      ExceptionList = local_c;
      ___security_check_cookie_4();
      return;
    }
    piVar2 = *(int **)(iVar1 + 8);
    if (((int *)piVar2[4] != (int *)0x0) &&
       (iVar3 = (**(code **)(*(int *)piVar2[4] + 0x54))(local_34), iVar3 != -1)) {
      _free(local_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
      goto LAB_00959a45;
    }
    if (piVar2[0x17] != -1) {
      iVar3 = (**(code **)(*piVar2 + 0x18))(auStack_58);
      local_4._0_1_ = 1;
      if (*(int *)(iVar3 + 0x14) == iStack_20) {
        iVar3 = FUN_00850760(local_34);
        bVar4 = iVar3 == 0;
      }
      else {
        bVar4 = false;
      }
      local_4 = (uint)local_4._1_3_ << 8;
      _free(pvStack_3c);
      if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_54);
      }
      if (bVar4) {
        _free(local_18);
        if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_30);
        }
        goto LAB_00959a45;
      }
    }
    iVar1 = *(int *)(iVar1 + 0xc);
  } while( true );
}



void __thiscall FUN_00959ac0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined **local_6c [2];
  int local_64;
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  void *local_28;
  undefined4 local_20;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1ca8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032bfdd0,param_1);
  local_4 = 0;
  local_20 = param_2;
  local_64 = param_1_00;
  if (*(int *)(param_1_00 + 0x8c) != 0) {
    cVar1 = FUN_00845dc0(local_6c);
    if (cVar1 != '\0') goto LAB_00959b53;
  }
  iVar3 = FUN_00958e60(uVar2);
  if (iVar3 != 0) {
    FUN_0091c170(local_6c);
  }
LAB_00959b53:
  local_4 = 0xffffffff;
  _free(local_28);
  if (7 < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40);
  }
  local_40 = local_40 & 0xffff0000;
  local_2c = 7;
  local_30 = 0;
  local_6c[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00959bd0(int *param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  bool bVar3;
  uint uVar4;
  uint local_84;
  uint local_80;
  undefined auStack_7c [4];
  undefined4 uStack_78;
  uint uStack_64;
  void *pvStack_60;
  undefined local_58 [4];
  uint uStack_54;
  int iStack_44;
  uint uStack_40;
  void *pvStack_3c;
  undefined local_34 [4];
  undefined4 uStack_30;
  int iStack_20;
  uint uStack_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc3bf;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_84;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff6c;
  ExceptionList = &local_c;
  uVar4 = 0;
  local_84 = 0;
  FUN_00959830(local_34,param_1,uVar1);
  local_80 = param_1_00[0x5a];
  local_4 = 0;
  if (local_80 != 0) {
    do {
      (**(code **)(*param_1_00 + 0x350))(local_58,uVar4);
      local_4._0_1_ = 1;
      if ((iStack_44 == *(int *)(param_1 + 0x14)) && (iVar2 = FUN_00850760(param_1), iVar2 == 0)) {
LAB_00959cb2:
        bVar3 = true;
      }
      else {
        iVar2 = FUN_00959830(auStack_7c,local_58,uVar1);
        local_84 = local_84 | 1;
        local_4 = CONCAT31(local_4._1_3_,2);
        if ((*(int *)(iVar2 + 0x14) == iStack_20) && (iVar2 = FUN_00850760(local_34), iVar2 == 0))
        goto LAB_00959cb2;
        bVar3 = false;
      }
      local_4 = 1;
      if ((local_84 & 1) != 0) {
        local_84 = local_84 & 0xfffffffe;
        _free(pvStack_60);
        if (7 < uStack_64) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_78);
        }
      }
      if (bVar3) {
        _free(pvStack_3c);
        if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_54);
        }
        uStack_40 = 7;
        iStack_44 = 0;
        uStack_54 = uStack_54 & 0xffff0000;
        _free(local_18);
        if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_30);
        }
        goto LAB_00959d4e;
      }
      local_4 = local_4 & 0xffffff00;
      _free(pvStack_3c);
      if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_54);
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < local_80);
  }
  _free(local_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_30);
  }
LAB_00959d4e:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00959de0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  bool bVar6;
  undefined4 local_80;
  undefined auStack_7c [4];
  uint uStack_78;
  undefined4 uStack_68;
  uint uStack_64;
  void *pvStack_60;
  undefined local_58 [4];
  undefined4 uStack_54;
  uint uStack_40;
  void *pvStack_3c;
  undefined local_34 [4];
  undefined4 uStack_30;
  int iStack_20;
  uint uStack_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc408;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff70;
  ExceptionList = &local_c;
  local_80 = param_2;
  FUN_00959830(local_34,param_1,uVar2);
  iVar1 = param_1_00[0x5c];
  iVar5 = 0;
  local_4 = 0;
  do {
    if (iVar1 == 0) {
      _free(local_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
LAB_00959f30:
      ExceptionList = local_c;
      ___security_check_cookie_4();
      return;
    }
    uVar3 = (**(code **)(*param_1_00 + 0x350))(local_58,iVar5);
    local_4._0_1_ = 1;
    iVar4 = FUN_00959830(auStack_7c,uVar3,uVar2);
    local_4._0_1_ = 2;
    if (iStack_20 == *(int *)(iVar4 + 0x14)) {
      iVar4 = FUN_00850760(iVar4);
      bVar6 = iVar4 == 0;
    }
    else {
      bVar6 = false;
    }
    _free(pvStack_60);
    if (7 < uStack_64) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_78);
    }
    uStack_64 = 7;
    uStack_68 = 0;
    uStack_78 = uStack_78 & 0xffff0000;
    local_4 = (uint)local_4._1_3_ << 8;
    _free(pvStack_3c);
    if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_54);
    }
    if (bVar6) {
      (**(code **)(**(int **)(iVar1 + 8) + 0x54))(local_80);
      _free(local_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
      goto LAB_00959f30;
    }
    iVar1 = *(int *)(iVar1 + 0xc);
    iVar5 = iVar5 + 1;
  } while( true );
}



undefined4 __thiscall FUN_00959f90(int param_1_00,undefined4 param_1)

{
  FUN_00959830(param_1,param_1_00 + 0x14);
  return param_1;
}



undefined4 FUN_00959fc0(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xb4);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_004710ac(0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_0095a030(undefined4 param_1_00,byte param_1)

{
  FUN_00959680();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_0095a050(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x14,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



undefined4 FUN_0095a090(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  bool bVar4;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee69d;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xb8);
  local_4 = 0;
  bVar4 = pvVar2 == (void *)0x0;
  if (bVar4) {
    uVar3 = 0;
  }
  else {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 2;
    uVar3 = FUN_0095b150(0,0xfffffffe,local_54,local_30,0,0);
  }
  if (!bVar4) {
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50,uVar1);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
  }
  if (!bVar4) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar1);
    }
  }
  ExceptionList = local_c;
  return uVar3;
}



void __thiscall FUN_0095a1b0(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  if (param_1_00 + 0x14 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  if ((*(int *)(param_1_00 + 0x28) == 0) && (*(int *)(param_1_00 + 0x5c) != -1)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      cVar1 = FUN_0097c730(*(undefined4 *)(param_1_00 + 8),uVar2);
      if (cVar1 == '\0') {
        FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x137,"wxMenuItemBase::SetItemLabel",
                     "wxIsStockID(GetId())",L"A non-stock menu item with an empty label?");
      }
    }
    iVar3 = FUN_0097d110(local_30,*(undefined4 *)(param_1_00 + 8),3);
    uStack_4 = 0;
    if (param_1_00 + 0x14 != iVar3) {
      FID_conflict_assign(iVar3,0,0xffffffff);
    }
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0095a2a0(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  if (param_1_00 + 0x38 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  if ((*(int *)(param_1_00 + 0x4c) == 0) && (*(int *)(param_1_00 + 0x5c) != -1)) {
    cVar1 = FUN_0097c730(*(undefined4 *)(param_1_00 + 8),uVar2);
    if (cVar1 != '\0') {
      iVar3 = FUN_0097c9d0(local_30,*(undefined4 *)(param_1_00 + 8),0);
      local_4 = 0;
      if (param_1_00 + 0x38 != iVar3) {
        FID_conflict_assign(iVar3,0,0xffffffff);
      }
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0095a350(int *param_1_00,int *param_1)

{
  undefined4 uVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  int local_c4;
  int *local_c0;
  undefined auStack_bc [4];
  uint uStack_b8;
  undefined4 uStack_a8;
  uint uStack_a4;
  void *pvStack_a0;
  undefined **local_98 [2];
  int *local_90;
  undefined local_3c;
  undefined local_3b;
  undefined local_3a;
  char local_39;
  undefined local_38;
  char local_37;
  char local_36;
  undefined2 local_30;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc456;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_c4;
  ExceptionList = &local_c;
  local_c0 = param_1_00;
  iVar3 = FUN_00958e60(DAT_0323f878 ^ (uint)&stack0xffffff2c);
  if (((iVar3 == 0) || (iVar4 = FUN_0091cdc0(iVar3), iVar4 == 0)) ||
     (iVar4 = FUN_0086af40(iVar4), iVar4 == 0)) {
    if (((param_1 == (int *)0x0) &&
        ((iVar3 == 0 || (param_1 = *(int **)(iVar3 + 0x70), param_1 == (int *)0x0)))) &&
       (param_1 = (int *)param_1_00[0x23], param_1 == (int *)0x0)) {
      param_1 = param_1_00;
    }
    for (local_c4 = param_1_00[0x1e]; local_c4 != 0; local_c4 = *(int *)(local_c4 + 0xc)) {
      iVar3 = *(int *)(local_c4 + 8);
      if (*(int *)(iVar3 + 0x5c) != -1) {
        uVar1 = *(undefined4 *)(iVar3 + 8);
        FUN_0092bd60(DAT_032bff60,uVar1);
        local_98[0] = wxUpdateUIEvent::vftable;
        local_1c = 7;
        local_20 = 0;
        local_30 = 0;
        local_18 = 0;
        local_36 = '\0';
        local_37 = '\0';
        local_38 = 0;
        local_39 = '\0';
        local_3a = 0;
        local_3b = 0;
        local_3c = 0;
        local_4 = 0;
        local_90 = param_1;
        cVar2 = (**(code **)(*param_1 + 0x18))(local_98);
        if (cVar2 != '\0') {
          if (local_37 != '\0') {
            uVar5 = FUN_00925890(auStack_bc);
            local_4._0_1_ = 1;
            FUN_00958fc0(uVar1,uVar5);
            local_4 = (uint)local_4._1_3_ << 8;
            _free(pvStack_a0);
            if (7 < uStack_a4) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1(uStack_b8);
            }
            uStack_a4 = 7;
            uStack_a8 = 0;
            uStack_b8 = uStack_b8 & 0xffff0000;
          }
          if (local_36 != '\0') {
            FUN_00958f40(uVar1,CONCAT13(local_39,CONCAT12(local_3a,CONCAT11(local_3b,local_3c))));
          }
          if (local_39 != '\0') {
            FUN_00958ec0(uVar1,CONCAT13(local_38,CONCAT12(local_39,CONCAT11(local_3a,local_3b))));
          }
        }
        if (*(int *)(iVar3 + 0x10) != 0) {
          FUN_0095a350(param_1);
        }
        local_4 = 0xffffffff;
        FUN_0091e450();
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0095a590(int param_1_00,int param_1,undefined4 param_2)

{
  int iVar1;
  uint uVar2;
  longlong lVar3;
  
  uVar2 = *(uint *)(param_1_00 + 0x78);
  iVar1 = 0;
  if (uVar2 != 0) {
    do {
      if (iVar1 != 0) goto LAB_0095a5cc;
      iVar1 = *(int *)(uVar2 + 8);
      lVar3 = CONCAT44(uVar2,iVar1);
      if (*(int *)(iVar1 + 8) != param_1) {
        if (*(int *)(iVar1 + 0x10) == 0) {
          lVar3 = (ulonglong)uVar2 << 0x20;
        }
        else {
          lVar3 = FUN_00958d90(param_1,0);
        }
      }
      iVar1 = (int)lVar3;
      uVar2 = *(uint *)((int)((ulonglong)lVar3 >> 0x20) + 0xc);
    } while (uVar2 != 0);
    if (iVar1 != 0) {
LAB_0095a5cc:
      FUN_0095a2a0(param_2);
      return;
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x318,"wxMenuBase::SetHelpString",&DAT_03058bd8,
                 L"wxMenu::SetHelpString: no such item");
  }
  return;
}



int __thiscall FUN_0095a610(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  uint uVar2;
  longlong lVar3;
  
  uVar2 = *(uint *)(param_1_00 + 0x78);
  iVar1 = 0;
  if (uVar2 != 0) {
    do {
      if (iVar1 != 0) goto LAB_0095a653;
      iVar1 = *(int *)(uVar2 + 8);
      lVar3 = CONCAT44(uVar2,iVar1);
      if (*(int *)(iVar1 + 8) != param_2) {
        if (*(int *)(iVar1 + 0x10) == 0) {
          lVar3 = (ulonglong)uVar2 << 0x20;
        }
        else {
          lVar3 = FUN_00958d90(param_2,0);
        }
      }
      iVar1 = (int)lVar3;
      uVar2 = *(uint *)((int)((ulonglong)lVar3 >> 0x20) + 0xc);
    } while (uVar2 != 0);
    if (iVar1 != 0) {
LAB_0095a653:
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(iVar1 + 0x38,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      return param_1;
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x321,"wxMenuBase::GetHelpString",&DAT_03058bd8,
                 L"wxMenu::GetHelpString: no such item");
  }
  FUN_004325b6(PTR_DAT_03236318);
  return param_1;
}



undefined4 * __thiscall
FUN_0095a740(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdc4b9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxMenuItemBase::vftable;
  param_1_00[2] = 0xfffffffd;
  param_1_00[0xb] = 7;
  param_1_00[10] = 0;
  *(undefined2 *)(param_1_00 + 6) = 0;
  param_1_00[0xc] = 0;
  param_1_00[0x14] = 7;
  param_1_00[0x13] = 0;
  *(undefined2 *)(param_1_00 + 0xf) = 0;
  param_1_00[0x15] = 0;
  local_4 = 3;
  if (param_2 == -3) {
    param_2 = -3;
  }
  else {
    if (param_2 == -2) {
      FUN_00994360(0xfffffffe);
      param_5 = 0xffffffff;
      goto LAB_0095a82f;
    }
    if (param_2 == -1) {
      param_2 = FUN_00993b60(1,uVar1);
    }
    else if (((PTR_FUN_03235c4c != (undefined *)0x0) && ((param_2 < 0 || (0x7ffe < param_2)))) &&
            ((param_2 < -32000 || (-2000 < param_2)))) {
      FUN_00840480("..\\..\\src\\common\\menucmn.cpp",0x105,"wxMenuItemBase::wxMenuItemBase",
                   "(itemid >= 0 && itemid < SHRT_MAX) || (itemid >= wxID_AUTO_LOWEST && itemid <= wxID_AUTO_HIGHEST)"
                   ,L"invalid itemid value");
    }
  }
  FUN_00994360(param_2);
LAB_0095a82f:
  param_1_00[3] = param_1;
  param_1_00[4] = param_6;
  *(undefined *)((int)param_1_00 + 0x61) = 1;
  *(undefined *)(param_1_00 + 0x18) = 0;
  param_1_00[0x17] = param_5;
  FUN_0095a1b0(param_3);
  FUN_0095a2a0(param_4);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_0095a880(int *param_1_00,int param_1)

{
  undefined4 uVar1;
  undefined *local_5c [7];
  uint local_40;
  void *local_3c;
  undefined local_34 [20];
  uint uStack_20;
  void *pvStack_1c;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc4f0;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_5c);
  ExceptionList = &local_c;
  local_5c[0] = &stack0xffffff90;
  FUN_00852890(local_34);
  local_4 = 0;
  if (param_1 != 0) {
    FID_conflict_append();
    uVar1 = FUN_009b0980();
    local_4._0_1_ = 1;
    FID_conflict_append(uVar1);
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  (**(code **)(*param_1_00 + 0x10))();
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_0095a980(HDC *param_1)

{
  SetTextColor(*param_1,(COLORREF)param_1[1]);
  return;
}



void __fastcall FUN_0095a990(HDC *param_1)

{
  SetBkColor(*param_1,(COLORREF)param_1[1]);
  return;
}



void __fastcall FUN_0095a9a0(HDC *param_1)

{
  SetBkMode(*param_1,(int)param_1[1]);
  return;
}



undefined4 FUN_0095a9b0(void)

{
  int iVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc52e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = FUN_0098e820(DAT_0323f878 ^ (uint)&stack0xffffffec);
  if (((iVar1 != 0) && (iVar2 = (**(code **)(iVar1 + 0x94))(), iVar2 != 0)) &&
     (iVar1 = (**(code **)(iVar1 + 0x90))(), iVar1 != 0)) {
    if ((DAT_032c0fb8 & 1) == 0) {
      DAT_032c0fb8 = DAT_032c0fb8 | 1;
      uStack_4 = 0;
      DAT_032c0fb4 = FUN_00894b40();
    }
    if (0x5ff < DAT_032c0fb4) {
      ExceptionList = local_c;
      return 0;
    }
    if (DAT_032c0fb4 == 0x501) {
      ExceptionList = local_c;
      return 1;
    }
  }
  ExceptionList = local_c;
  return 2;
}



void __fastcall FUN_0095aa60(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bdc566;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxOwnerDrawnBase::vftable;
  local_4 = 1;
  param_1[9] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4 = local_4 & 0xffffff00;
  param_1[4] = wxObject::vftable;
  FUN_0083e850();
  local_4 = 0xffffffff;
  FUN_00921450();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_0095aae0(undefined4 param_1_00,byte param_1)

{
  FUN_0095aa60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0095ab00(undefined4 *param_1)

{
  *param_1 = wxOwnerDrawn::vftable;
  FUN_0095aa60();
  return;
}



undefined4 * __thiscall FUN_0095ab10(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxOwnerDrawn::vftable;
  FUN_0095aa60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int FUN_0095ab40(void)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_0095a9b0();
  if (iVar1 != 0) {
    return 0;
  }
  iVar1 = FUN_0098e820();
  if (iVar1 != 0) {
    iVar2 = (**(code **)(iVar1 + 0x94))();
    if (iVar2 != 0) {
      iVar2 = (**(code **)(iVar1 + 0x90))();
      if (iVar2 != 0) {
        return iVar1;
      }
    }
  }
  return 0;
}



void __fastcall FUN_0095ab80(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdc5bf;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxMenuItem::vftable;
  param_1[0x19] = wxMenuItem::vftable;
  local_4 = 3;
  FUN_008f7630(uVar1);
  local_4._0_1_ = 2;
  FUN_008f7630();
  local_4._0_1_ = 1;
  FUN_008f7630();
  local_4 = (uint)local_4._1_3_ << 8;
  param_1[0x19] = wxOwnerDrawn::vftable;
  FUN_0095aa60();
  local_4 = 0xffffffff;
  FUN_00959680();
  ExceptionList = local_c;
  return;
}



void FUN_0095ac20(void)

{
  FUN_0095ad20();
  return;
}



uint __fastcall FUN_0095ac30(int param_1)

{
  if (*(int *)(param_1 + 0x10) != 0) {
    return *(uint *)(*(int *)(param_1 + 0x10) + 0x98);
  }
  return (uint)*(ushort *)(param_1 + 8);
}



uint __fastcall FUN_0095ac50(int param_1)

{
  HMENU hMenu;
  uint in_EAX;
  UINT UVar1;
  
  if (*(int *)(param_1 + 0x5c) == -1) {
    return in_EAX & 0xffffff00;
  }
  if (*(int *)(param_1 + 0xc) == 0) {
    return (uint)*(byte *)(param_1 + 0x60);
  }
  hMenu = *(HMENU *)(*(int *)(param_1 + 0xc) + 0x98);
  if (*(int *)(param_1 + 0x10) != 0) {
    UVar1 = GetMenuState(hMenu,*(UINT *)(*(int *)(param_1 + 0x10) + 0x98),0);
    return UVar1 >> 3 & 1;
  }
  UVar1 = GetMenuState(hMenu,(uint)*(ushort *)(param_1 + 8),0);
  return UVar1 >> 3 & 1;
}



undefined4 * __fastcall FUN_0095aca0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdc566;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxOwnerDrawnBase::vftable;
  param_1[3] = 0;
  param_1[2] = wxFont::vftable;
  local_4 = 0;
  FUN_00453f4b(uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00453f4b();
  *(undefined *)(param_1 + 1) = 0;
  param_1[0xe] = DAT_0323cc10;
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0095ad20(undefined4 param_1_00,byte param_1)

{
  FUN_0095ab80();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0095ad40(undefined *param_1)

{
  if (param_1 != (undefined *)0x3238c5c) {
    FUN_0083ea60(&PTR_vftable_03238cd0);
  }
  *(undefined4 *)(param_1 + 0x7c) = DAT_03238cd8;
  param_1[0x80] = DAT_03238cdc;
  param_1[0x81] = DAT_03238cdd;
  param_1[0x82] = DAT_03238cde;
  param_1[0x83] = DAT_03238cdf;
  param_1[0x84] = DAT_03238ce0;
  param_1[0x68] = 1;
  if (param_1 != &DAT_03238c48) {
    FUN_0083ea60(&PTR_vftable_03238cd0);
  }
  *(undefined4 *)(param_1 + 0x90) = DAT_03238cd8;
  param_1[0x94] = DAT_03238cdc;
  param_1[0x95] = DAT_03238cdd;
  param_1[0x96] = DAT_03238cde;
  param_1[0x97] = DAT_03238cdf;
  param_1[0x98] = DAT_03238ce0;
  param_1[0x68] = 1;
  param_1[0x68] = 0;
  return;
}



void FUN_0095ae00(HDC param_1,int param_2,int param_3,int param_4,int param_5,HDC param_6,
                 int param_7)

{
  COLORREF color;
  COLORREF color_00;
  int mode;
  HDC hdc;
  HBITMAP h;
  HGDIOBJ h_00;
  HBRUSH hbr;
  DWORD DVar1;
  undefined *rop;
  RECT RStack_10;
  
  color = SetTextColor(param_1,0);
  color_00 = SetBkColor(param_1,0xffffff);
  mode = SetBkMode(param_1,1);
  hdc = CreateCompatibleDC(param_1);
  h = CreateCompatibleBitmap(param_1,param_4,param_5);
  h_00 = SelectObject(hdc,h);
  RStack_10.left = 0;
  RStack_10.top = 0;
  RStack_10.right = param_4;
  RStack_10.bottom = param_5;
  hbr = GetSysColorBrush(param_7);
  FillRect(hdc,&RStack_10,hbr);
  DVar1 = GetSysColor(param_7);
  if (DVar1 == 0xffffff) {
    BitBlt(param_1,param_2,param_3,param_4,param_5,param_6,0,0,0xbb0226);
    rop = (undefined *)0x8800c6;
  }
  else {
    if (DVar1 != 0) {
      BitBlt(hdc,0,0,param_4,param_5,param_6,0,0,0x220326);
    }
    BitBlt(param_1,param_2,param_3,param_4,param_5,param_6,0,0,0x8800c6);
    rop = &DAT_00ee0086;
  }
  BitBlt(param_1,param_2,param_3,param_4,param_5,hdc,0,0,(DWORD)rop);
  if (hdc != (HDC)0x0) {
    SelectObject(hdc,h_00);
  }
  if (h != (HBITMAP)0x0) {
    DeleteObject(h);
  }
  DeleteDC(hdc);
  SetBkMode(param_1,mode);
  SetBkColor(param_1,color_00);
  SetTextColor(param_1,color);
  return;
}



void __thiscall FUN_0095af80(int param_1_00,uint param_1,int *param_2,undefined4 param_3)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  code **ppcVar6;
  int *piVar7;
  uint uVar8;
  int *unaff_retaddr;
  int *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc5e8;
  local_c = (int *)ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  iVar4 = FUN_0095a9b0(uVar3);
  if ((((iVar4 != 0) || (iVar4 = FUN_0098e820(), iVar4 == 0)) ||
      (iVar5 = (**(code **)(iVar4 + 0x94))(), iVar5 == 0)) ||
     (iVar5 = (**(code **)(iVar4 + 0x90))(), iVar5 == 0)) {
    FUN_009befc0(param_1,param_2,param_3);
    ExceptionList = local_c;
    return;
  }
  iVar5 = FUN_00958e60();
  ppcVar6 = (code **)FUN_0098e820();
  if (ppcVar6 == (code **)0x0) {
    piVar7 = (int *)0x0;
  }
  else {
    piVar7 = (int *)(**ppcVar6)(*(undefined4 *)(iVar5 + 0x13c),L"MENU");
  }
  uStack_4 = 0;
  if ((param_1 & 4) == 0) {
    FUN_004722cb(param_1_00 + 0x10);
    cVar2 = (**(code **)(*param_2 + 0x24))();
    if (cVar2 == '\0') {
      uVar8 = (**(code **)(iVar4 + 0x74))(piVar7,7);
      (**(code **)(*param_2 + 0x28))(uVar8,uVar8 >> 8,uVar8 >> 0x10,0xff);
    }
  }
  else {
    uVar8 = (**(code **)(iVar4 + 0x74))(piVar7,0x11);
    (**(code **)(*unaff_retaddr + 0x28))(uVar8,uVar8 >> 8,uVar8 >> 0x10,0xff);
  }
  piVar1 = local_c;
  if ((param_1 & 1) == 0) {
    FUN_004722cb(uVar3 + 0x24);
    cVar2 = (**(code **)(*piVar1 + 0x24))();
    if (cVar2 == '\0') {
      uVar3 = (**(code **)(iVar4 + 0x74))(piVar7,4);
      (**(code **)(*piVar1 + 0x28))(uVar3,uVar3 >> 8,uVar3 >> 0x10,0xff);
    }
  }
  else {
    uVar3 = (**(code **)(iVar4 + 0x74))(piVar7,0xd);
    (**(code **)(*piVar7 + 0x28))(uVar3,uVar3 >> 8,uVar3 >> 0x10,0xff);
  }
  uStack_4 = 0xffffffff;
  if (piVar7 == (int *)0x0) {
    ExceptionList = local_c;
    return;
  }
  iVar4 = FUN_0098e820();
  (**(code **)(iVar4 + 4))(piVar7);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall
FUN_0095b150(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc64d;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_0095a740(param_1,param_2,param_3,param_4,param_5,param_6);
  local_4 = 0;
  FUN_0095aca0(uVar1);
  param_1_00[0x19] = wxOwnerDrawn::vftable;
  *param_1_00 = wxMenuItem::vftable;
  param_1_00[0x19] = wxMenuItem::vftable;
  param_1_00[0x29] = 0;
  param_1_00[0x28] = wxBitmap::vftable;
  param_1_00[0x2b] = 0;
  param_1_00[0x2a] = wxBitmap::vftable;
  param_1_00[0x2d] = 0;
  param_1_00[0x2c] = wxBitmap::vftable;
  local_4 = CONCAT31(local_4._1_3_,4);
  FUN_0095ad40();
  ExceptionList = local_c;
  return param_1_00;
}



undefined4
FUN_0095b210(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xb8);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0095b150(param_1,param_2,param_3,param_4,param_5,param_6);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_0095b2a0(int *param_1)

{
  uint uStack_7c;
  undefined4 auStack_74 [2];
  int *piStack_6c;
  int *piStack_68;
  undefined *puStack_60;
  uint local_58;
  undefined4 uStack_54;
  undefined4 uStack_48;
  uint uStack_44;
  void *pvStack_40;
  void *pvStack_3c;
  undefined auStack_38 [8];
  void *pvStack_30;
  undefined uStack_28;
  uint local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bdc690;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_74;
  uStack_7c = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  (**(code **)(*param_1 + 0x14))();
  puStack_60 = &stack0xffffff7c;
  uStack_8 = (undefined *)0x0;
  FUN_008529d0(auStack_38);
  uStack_8._0_1_ = 2;
  _free(pvStack_40);
  if (7 < uStack_44) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_58 = local_58 & 0xffff0000;
  uStack_44 = 7;
  uStack_48 = 0;
  FUN_0094bd80();
  auStack_74[0] = 0;
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,4);
  (**(code **)(param_1[0x19] + 0x10))();
  (**(code **)(*piStack_68 + 0x50))(&uStack_7c);
  (**(code **)(*piStack_6c + 0xa4))(&pvStack_40,&stack0xffffff88,0,0,0,0);
  uStack_28 = 3;
  FUN_00921450();
  uStack_28 = 2;
  FUN_00457221();
  _free(pvStack_3c);
  if ((void *)0x7 < pvStack_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_54);
  }
  ExceptionList = pvStack_30;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_0095b400(int param_1_00,undefined4 param_1)

{
  (**(code **)(*(int *)(param_1_00 + -100) + 0x18))(param_1);
  return param_1;
}



void __fastcall FUN_0095b430(int param_1)

{
  int iVar1;
  int iVar2;
  code **ppcVar3;
  BOOL BVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  undefined4 uStack_174;
  int iStack_170;
  int iStack_16c;
  undefined4 uStack_168;
  undefined4 uStack_164;
  undefined4 uStack_160;
  undefined4 uStack_15c;
  undefined4 uStack_158;
  int iStack_154;
  int iStack_150;
  undefined4 uStack_14c;
  undefined4 uStack_148;
  undefined4 uStack_144;
  undefined4 uStack_140;
  undefined4 uStack_13c;
  int iStack_138;
  int iStack_134;
  undefined4 uStack_130;
  undefined4 uStack_12c;
  undefined4 uStack_128;
  undefined4 uStack_124;
  undefined4 uStack_120;
  int iStack_11c;
  int iStack_118;
  undefined4 uStack_114;
  undefined4 uStack_110;
  int aiStack_ec [3];
  int iStack_e0;
  undefined4 auStack_dc [23];
  undefined4 auStack_80 [25];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00bdc6e1;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)aiStack_ec;
  ExceptionList = &local_14;
  iVar1 = FUN_0095a9b0();
  if (iVar1 == 0) {
    iVar1 = FUN_0098e820();
    if (iVar1 != 0) {
      iVar2 = (**(code **)(iVar1 + 0x94))();
      if (iVar2 != 0) {
        iVar2 = (**(code **)(iVar1 + 0x90))();
        if (iVar2 != 0) {
          (**(code **)(*DAT_032bcb68 + 0xd4))();
          ppcVar3 = (code **)FUN_0098e820();
          if (ppcVar3 == (code **)0x0) {
            aiStack_ec[0] = 0;
          }
          else {
            aiStack_ec[0] = (**ppcVar3)();
          }
          iVar2 = aiStack_ec[0];
          uStack_110 = 0xe;
          uStack_114 = 0;
          uStack_c = 0;
          iStack_11c = 0x95b50c;
          iStack_118 = aiStack_ec[0];
          (**(code **)(iVar1 + 0x60))();
          iStack_11c = param_1 + 0x10;
          uStack_120 = 0;
          uStack_124 = 0xe12;
          uStack_128 = 0;
          uStack_12c = 0xb;
          uStack_130 = 0;
          iStack_138 = 0x95b523;
          iStack_134 = iVar2;
          (**(code **)(iVar1 + 0x60))();
          iStack_138 = param_1 + 0x20;
          uStack_13c = 0;
          uStack_140 = 0xe12;
          uStack_144 = 0;
          uStack_148 = 0xc;
          uStack_14c = 0;
          iStack_154 = 0x95b53a;
          iStack_150 = iVar2;
          (**(code **)(iVar1 + 0x60))();
          iStack_154 = param_1 + 0x30;
          uStack_158 = 0;
          uStack_15c = 0xe12;
          uStack_160 = 0;
          uStack_164 = 0x10;
          uStack_168 = 0;
          iStack_170 = 0x95b551;
          iStack_16c = iVar2;
          (**(code **)(iVar1 + 0x60))();
          iStack_170 = param_1 + 0x40;
          uStack_174 = 0;
          (**(code **)(iVar1 + 0x60))(iVar2,0,0xf,0,0xe11);
          (**(code **)(iVar1 + 0x18))(iVar2,0,0xb,0,0,1,param_1 + 0x50);
          (**(code **)(iVar1 + 0x18))(iVar2,0,0x10,0,0,1,param_1 + 0x58);
          (**(code **)(iVar1 + 0x18))(iVar2,0,0xf,0,0,1,param_1 + 0x60);
          (**(code **)(iVar1 + 0x4c))(iVar2,9,0,0x963,param_1 + 0x68);
          *(undefined4 *)(param_1 + 0x6c) = 0x22;
          *(undefined4 *)(param_1 + 0x70) = 0;
          *(undefined4 *)(param_1 + 0x74) = 0xfffffff2;
          (**(code **)(iVar1 + 0x84))(iVar2,0x323,&uStack_174);
          puVar6 = auStack_80;
          puVar7 = auStack_dc;
          for (iVar1 = 0x17; iVar1 != 0; iVar1 = iVar1 + -1) {
            *puVar7 = *puVar6;
            puVar6 = puVar6 + 1;
            puVar7 = puVar7 + 1;
          }
          iVar1 = FUN_008fee70();
          uStack_c._0_1_ = 1;
          if (param_1 + 0x78 != iVar1) {
            FUN_0083ea60();
          }
          uStack_c = (uint)uStack_c._1_3_ << 8;
          FUN_00921450();
          *(undefined *)(param_1 + 0x81) = 1;
          *(undefined4 *)(param_1 + 0xc) = 0;
          *(undefined4 *)(param_1 + 8) = 0;
          if (1 < *(int *)(param_1 + 0x48)) {
            *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + -2;
          }
          uStack_c = 0xffffffff;
          if (aiStack_ec[0] != 0) {
            iVar1 = FUN_0098e820();
            (**(code **)(iVar1 + 4))();
          }
          goto LAB_0095b73f;
        }
      }
    }
  }
  iVar1 = FUN_008ff210();
  iVar2 = GetSystemMetrics(0x2d);
  *(int *)(param_1 + 0x14) = iVar2;
  *(int *)(param_1 + 0x10) = iVar2;
  iVar2 = GetSystemMetrics(0x2e);
  *(int *)(param_1 + 0x1c) = iVar2;
  *(int *)(param_1 + 0x18) = iVar2;
  iVar2 = GetSystemMetrics(0x47);
  *(int *)(param_1 + 0x50) = iVar2;
  iVar2 = GetSystemMetrics(0x48);
  *(int *)(param_1 + 0x54) = iVar2;
  *(int *)(param_1 + 0x5c) = iVar2;
  *(undefined4 *)(param_1 + 0x58) = *(undefined4 *)(param_1 + 0x50);
  iVar5 = *(int *)(iVar1 + 0xdc) / 2;
  iVar2 = iVar5 / 2 + -1;
  *(int *)(param_1 + 100) = iVar5 + iVar2 * -2;
  *(undefined4 *)(param_1 + 0x44) = 1;
  *(undefined4 *)(param_1 + 0x40) = 1;
  *(undefined4 *)(param_1 + 0x60) = 1;
  *(int *)(param_1 + 0x4c) = iVar2;
  *(int *)(param_1 + 0x48) = iVar2;
  *(undefined4 *)(param_1 + 0x68) = 0;
  *(undefined4 *)(param_1 + 0x6c) = 8;
  *(undefined4 *)(param_1 + 0x70) = 6;
  *(undefined4 *)(param_1 + 0x74) = 0xfffffff4;
  puVar6 = (undefined4 *)(iVar1 + 0xe0);
  puVar7 = auStack_dc;
  for (iVar2 = 0x17; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar7 = *puVar6;
    puVar6 = puVar6 + 1;
    puVar7 = puVar7 + 1;
  }
  iVar1 = FUN_008fee70();
  uStack_c = 2;
  if (param_1 + 0x78 != iVar1) {
    FUN_0083ea60();
  }
  uStack_c = 0xffffffff;
  FUN_00921450();
  *(undefined *)(param_1 + 0x81) = 0;
LAB_0095b73f:
  uStack_110 = 0x95b753;
  BVar4 = SystemParametersInfoW(0x100a,0,&iStack_e0,0);
  iVar1 = 1;
  if (BVar4 != 0) {
    iVar1 = iStack_e0;
  }
  *(bool *)(param_1 + 0x80) = iVar1 == 1;
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0095b790(int param_1_00,char param_1)

{
  char cVar1;
  BOOL BVar2;
  UINT uIDEnableItem;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(char *)(param_1_00 + 0x61) != param_1) {
    if (*(int *)(param_1_00 + 0xc) != 0) {
      if (*(int *)(param_1_00 + 0x10) == 0) {
        uIDEnableItem = (UINT)*(ushort *)(param_1_00 + 8);
      }
      else {
        uIDEnableItem = *(UINT *)(*(int *)(param_1_00 + 0x10) + 0x98);
      }
      BVar2 = EnableMenuItem(*(HMENU *)(*(int *)(param_1_00 + 0xc) + 0x98),uIDEnableItem,
                             (uint)(param_1 == '\0'));
      if (BVar2 == -1) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 0;
          FUN_008423d0();
          uStack_4._0_1_ = 1;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4 = (uint)uStack_4._1_3_ << 8;
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
    }
    *(char *)(param_1_00 + 0x61) = param_1;
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0095b8e0(int param_1_00,char param_1)

{
  HMENU hMenu;
  void **ppvVar1;
  char cVar2;
  UINT UVar3;
  BOOL BVar4;
  int iVar5;
  DWORD DVar6;
  UINT local_7c;
  UINT local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc720;
  local_c = ExceptionList;
  iVar5 = *(int *)(param_1_00 + 0x5c);
  if ((iVar5 == 1) || (iVar5 == 2)) {
    if (*(char *)(param_1_00 + 0x60) == param_1) {
      return;
    }
    if (*(int *)(param_1_00 + 0xc) != 0) {
      hMenu = *(HMENU *)(*(int *)(param_1_00 + 0xc) + 0x98);
      if (iVar5 == 2) {
        if (param_1 == '\0') {
          return;
        }
        ExceptionList = &local_c;
        UVar3 = FUN_0086af70();
        if ((((UVar3 == 0xffffffff) || (cVar2 = FUN_0092d100(), cVar2 == '\0')) ||
            (local_7c == 0xffffffff)) || (local_78 == 0xffffffff)) {
          ppvVar1 = (void **)ExceptionList;
          if (PTR_FUN_03235c4c == (undefined *)0x0) {
            ExceptionList = local_c;
            return;
          }
          goto LAB_0095bba9;
        }
        BVar4 = CheckMenuRadioItem(hMenu,local_7c,local_78,UVar3,0x400);
        if (BVar4 == 0) {
          FUN_0043c211(&DAT_00d25fa0);
          cVar2 = FUN_00846b30(6);
          if (cVar2 != '\0') {
            FUN_0081c0f1();
            uStack_4 = 0;
            FUN_008423d0();
            uStack_4._0_1_ = 1;
            GetLastError();
            FUN_00843700();
            GetLastError();
            FUN_00847d90();
            uStack_4 = (uint)uStack_4._1_3_ << 8;
            FUN_00842440();
            uStack_4 = 0xffffffff;
            FUN_0081b5bc();
          }
        }
        iVar5 = FUN_0086aef0();
        if ((int)local_7c <= (int)local_78) {
          while (iVar5 != 0) {
            if (local_7c != UVar3) {
              *(undefined *)(*(int *)(iVar5 + 8) + 0x60) = 0;
            }
            iVar5 = *(int *)(iVar5 + 0xc);
            local_7c = local_7c + 1;
            if ((int)local_78 < (int)local_7c) {
              *(char *)(param_1_00 + 0x60) = param_1;
              ExceptionList = local_c;
              return;
            }
          }
        }
      }
      else {
        if (*(int *)(param_1_00 + 0x10) == 0) {
          UVar3 = (UINT)*(ushort *)(param_1_00 + 8);
        }
        else {
          UVar3 = *(UINT *)(*(int *)(param_1_00 + 0x10) + 0x98);
        }
        ExceptionList = &local_c;
        DVar6 = CheckMenuItem(hMenu,UVar3,-(uint)(param_1 != '\0') & 8);
        if ((DVar6 == 0xffffffff) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
          FUN_00840480();
        }
      }
    }
    *(char *)(param_1_00 + 0x60) = param_1;
  }
  else {
    ppvVar1 = &local_c;
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
LAB_0095bba9:
    ExceptionList = ppvVar1;
    FUN_00840480();
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0095bbd0(int param_1_00,int param_1)

{
  HMENU hMenu;
  char cVar1;
  int iVar2;
  UINT UVar3;
  BOOL BVar4;
  UINT uId;
  undefined auStack_108 [8];
  undefined4 uStack_100;
  undefined *puStack_fc;
  char *pcStack_f8;
  undefined auStack_d0 [3];
  char cStack_cd;
  undefined *puStack_cc;
  undefined auStack_c8 [20];
  tagMENUITEMINFOW atStack_b4 [2];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc774;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_d0;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  FID_conflict_assign();
  local_18 = (void *)0x0;
  local_4 = 0;
  if (*(int *)(param_1_00 + 0x28) == *(int *)(param_1 + 0x14)) {
    iVar2 = FUN_00850760();
    if (iVar2 != 0) goto LAB_0095bc9d;
  }
  else {
LAB_0095bc9d:
    FUN_0095a1b0();
    if (*(int *)(param_1_00 + 0xc) != 0) {
      FUN_0092d780();
      if (*(int *)(param_1_00 + 0x10) == 0) {
        uId = (UINT)*(ushort *)(param_1_00 + 8);
      }
      else {
        uId = *(UINT *)(*(int *)(param_1_00 + 0x10) + 0x98);
      }
      hMenu = *(HMENU *)(*(int *)(param_1_00 + 0xc) + 0x98);
      if (hMenu != (HMENU)0x0) {
        UVar3 = GetMenuState(hMenu,uId,0);
        if ((UVar3 != 0xffffffff) && (*(char *)(param_1_00 + 0x68) == '\0')) {
          _memset(atStack_b4,0,0x30);
          atStack_b4[0].cbSize = 0x30;
          iVar2 = FUN_00894b40();
          cStack_cd = 0x400 < iVar2;
          atStack_b4[0].fMask = (-(uint)(byte)cStack_cd & 0x170) + 0x3f;
          pcStack_f8 = (char *)0x95bd43;
          BVar4 = GetMenuItemInfoW(hMenu,uId,0,atStack_b4);
          if (BVar4 == 0) {
            puStack_cc = auStack_108;
            FUN_0043c211(&DAT_00d25fa0);
            cVar1 = FUN_00846b30(6);
            if (cVar1 != '\0') {
              FUN_0081c0f1();
              pcStack_f8 = (char *)0x6;
              local_4._0_1_ = 1;
              puStack_fc = (undefined *)0x95bda5;
              FUN_008423d0();
              local_4._0_1_ = 2;
              GetLastError();
              FUN_00843700();
              GetLastError();
              pcStack_f8 = "..\\..\\src\\msw\\menuitem.cpp";
              puStack_fc = auStack_c8;
              uStack_100 = 0x95bddf;
              FUN_00847d90();
              local_4._0_1_ = 1;
LAB_0095bec6:
              FUN_00842440();
              local_4 = (uint)local_4._1_3_ << 8;
              FUN_0081b5bc();
            }
          }
          else {
            if (cStack_cd != '\0') {
              atStack_b4[0].fMask = atStack_b4[0].fMask | 0x40;
            }
            if (*(uint *)(param_1_00 + 0x2c) < 8) {
              atStack_b4[0].dwTypeData = (LPWSTR)(param_1_00 + 0x18);
            }
            else {
              atStack_b4[0].dwTypeData = *(LPWSTR *)(param_1_00 + 0x18);
            }
            atStack_b4[0].cch = *(UINT *)(param_1_00 + 0x28);
            pcStack_f8 = (char *)0x95be22;
            BVar4 = SetMenuItemInfoW(hMenu,uId,0,atStack_b4);
            if (BVar4 == 0) {
              puStack_cc = auStack_108;
              FUN_0043c211(&DAT_00d25fa0);
              cVar1 = FUN_00846b30(6);
              if (cVar1 != '\0') {
                FUN_0081c0f1();
                pcStack_f8 = (char *)0x6;
                local_4._0_1_ = 3;
                puStack_fc = (undefined *)0x95be84;
                FUN_008423d0();
                local_4._0_1_ = 4;
                GetLastError();
                FUN_00843700();
                GetLastError();
                pcStack_f8 = "..\\..\\src\\msw\\menuitem.cpp";
                puStack_fc = auStack_c8;
                uStack_100 = 0x95bebe;
                FUN_00847d90();
                local_4._0_1_ = 3;
                goto LAB_0095bec6;
              }
            }
          }
        }
      }
      FUN_0040159c();
      goto LAB_0095beeb;
    }
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
LAB_0095beeb:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __fastcall FUN_0095bf20(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdc7bb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1[3] = 0;
  param_1[2] = 0;
  param_1[1] = 0;
  *param_1 = 0;
  param_1[7] = 0;
  param_1[6] = 0;
  param_1[5] = 0;
  param_1[4] = 0;
  param_1[0xb] = 0;
  param_1[10] = 0;
  param_1[9] = 0;
  param_1[8] = 0;
  param_1[0xf] = 0;
  param_1[0xe] = 0;
  param_1[0xd] = 0;
  param_1[0xc] = 0;
  param_1[0x13] = 0;
  param_1[0x12] = 0;
  param_1[0x11] = 0;
  param_1[0x10] = 0;
  param_1[0x1f] = 0;
  param_1[0x1e] = wxFont::vftable;
  local_4 = 0;
  FUN_0095b430(uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined * FUN_0095bfd0(void)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdc7ee;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032c0fb0 == (undefined *)0x0) {
    ExceptionList = &local_c;
    if ((DAT_032c1044 & 1) == 0) {
      DAT_032c1044 = DAT_032c1044 | 1;
      local_4 = 0;
      ExceptionList = &local_c;
      FUN_0095bf20(DAT_0323f878 ^ (uint)&local_c);
      _atexit((_func_4879 *)&LAB_00c78070);
    }
    DAT_032c0fb0 = &DAT_032c0fc0;
  }
  local_4 = 0xffffffff;
  iVar1 = FUN_0095a9b0();
  if ((bool)DAT_032c0fb0[0x81] != (iVar1 == 0)) {
    FUN_0095b430();
  }
  ExceptionList = local_c;
  return DAT_032c0fb0;
}



void __thiscall FUN_0095c070(int *param_1_00,int *param_1,int **param_2)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int *piVar6;
  int **local_54;
  undefined **ppuStack_50;
  undefined4 uStack_4c;
  int *piStack_44;
  int *apiStack_40 [3];
  undefined local_34 [4];
  uint uStack_30;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bdc828;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_54;
  ExceptionList = &local_c;
  local_54 = param_2;
  piVar2 = (int *)FUN_0095bfd0(DAT_0323f878 ^ (uint)&stack0xffffff9c);
  if (*(char *)(param_1_00 + 1) == '\0') {
    *param_1 = 0;
    *param_2 = (int *)0x0;
  }
  else {
    *param_1 = piVar2[1] + *piVar2;
    *param_2 = (int *)(piVar2[3] + piVar2[2]);
    if (param_1_00[-2] == -1) {
      *param_1 = *param_1 + piVar2[0x11] + piVar2[0x18] + piVar2[0x10];
      *param_2 = (int *)((int)*param_2 + piVar2[0x13] + piVar2[0x12] + piVar2[0x19]);
      goto LAB_0095c2d5;
    }
    (**(code **)(*param_1_00 + 4))(local_34);
    uStack_8 = (undefined *)0x0;
    FUN_0094bd80();
    uStack_4c = 0;
    ppuStack_50 = wxFont::vftable;
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,2);
    (**(code **)(*param_1_00 + 0x10))(&ppuStack_50);
    (**(code **)(*apiStack_40[0] + 0x50))(&local_54);
    (**(code **)(*piStack_44 + 0xa4))(apiStack_40,&stack0xffffffa4,&ppuStack_50,0,0,0);
    *param_1 = piVar2[0x1b] + piVar2[0x1a] + (int)ppuStack_50;
    *local_54 = piStack_44;
    iVar5 = param_1_00[-0x16];
    if (*(int *)(iVar5 + 0xb0) == -1) {
      FUN_0092cc90();
    }
    ppuStack_50 = *(undefined ***)(iVar5 + 0xb0);
    if (0 < (int)ppuStack_50) {
      *param_1 = (int)ppuStack_50 + *param_1 + piVar2[0x1c];
    }
    *param_1 = *param_1 + piVar2[0x1d];
    *param_1 = piVar2[0xd] + piVar2[0x16] + *param_1 + piVar2[0xc];
    uStack_4._0_1_ = 1;
    FUN_00921450();
    uStack_4 = (uint)uStack_4._1_3_ << 8;
    FUN_00457221();
    uStack_4 = 0xffffffff;
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
    uStack_1c = 7;
    uStack_20 = 0;
    uStack_30 = uStack_30 & 0xffff0000;
  }
  if (*(char *)(param_1_00 + 1) != '\0') {
    iVar5 = param_1_00[0xe];
    if (param_1_00[0xe] <= piVar2[0x14]) {
      iVar5 = piVar2[0x14];
    }
    *param_1 = *param_1 + piVar2[5] + piVar2[9] + piVar2[4] + iVar5 + piVar2[8];
  }
  cVar1 = (**(code **)(param_1_00[0xf] + 0x10))();
  if ((cVar1 != '\0') || (cVar1 = (**(code **)(param_1_00[0x11] + 0x10))(), cVar1 != '\0')) {
    if (param_1_00[0x12] == 0) {
      piVar4 = (int *)0x0;
    }
    else {
      piVar4 = *(int **)(param_1_00[0x12] + 0xc);
    }
    piVar6 = (int *)param_1_00[0x10];
    if (piVar6 != (int *)0x0) {
      piVar6 = (int *)piVar6[3];
    }
    if ((int)piVar6 <= (int)piVar4) {
      piVar6 = piVar4;
    }
    if (param_1_00[0x12] == 0) {
      iVar5 = 0;
    }
    else {
      iVar5 = *(int *)(param_1_00[0x12] + 8);
    }
    iVar3 = param_1_00[0x10];
    if (iVar3 != 0) {
      iVar3 = *(int *)(iVar3 + 8);
    }
    if (iVar3 <= iVar5) {
      iVar3 = iVar5;
    }
    if (*(char *)(param_1_00 + 1) == '\0') {
      *param_1 = *param_1 + iVar3;
    }
    else {
      piVar6 = (int *)((int)piVar6 + piVar2[7] + piVar2[6]);
    }
    if (*local_54 < piVar6) {
      *local_54 = piVar6;
    }
  }
  piVar2 = (int *)(piVar2[7] + piVar2[6] + piVar2[0x15]);
  if (*local_54 < piVar2) {
    *local_54 = piVar2;
  }
LAB_0095c2d5:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0095c300(int param_1_00,HDC param_1,int *param_2,uint param_4)

{
  char cVar1;
  int iVar2;
  int iVar3;
  code **ppcVar4;
  int iVar5;
  HDC hdc;
  HBITMAP h;
  HGDIOBJ h_00;
  undefined4 uVar6;
  int unaff_EDI;
  int iVar7;
  int iStack_2c;
  int iStack_28;
  int iStack_24;
  int iStack_20;
  tagRECT tStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc858;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = FUN_0095a9b0(DAT_0323f878 ^ (uint)&stack0xffffffb4);
  if ((((iVar2 != 0) || (iVar2 = FUN_0098e820(), iVar2 == 0)) ||
      (iVar3 = (**(code **)(iVar2 + 0x94))(), iVar3 == 0)) ||
     (iVar3 = (**(code **)(iVar2 + 0x90))(), iVar3 == 0)) {
    iVar3 = param_2[2] - *param_2;
    iVar2 = param_2[3] - param_2[1];
    hdc = CreateCompatibleDC(param_1);
    h = CreateBitmap(iVar3,iVar2,1,1,(void *)0x0);
    h_00 = SelectObject(hdc,h);
    tStack_1c.left = 0;
    tStack_1c.top = 0;
    tStack_1c.right = iVar3;
    tStack_1c.bottom = iVar2;
    DrawFrameControl(hdc,&tStack_1c,2,(*(int *)(param_1_00 + 0x5c) != 1) + 1);
    if (((param_4 & 4) != 0) && ((param_4 & 1) == 0)) {
      FUN_0095ae00(param_1,*param_2 + 1,param_2[1] + 1,iVar3,iVar2,hdc,0x14);
    }
    uVar6 = 7;
    if ((param_4 & 4) == 0) {
      if ((param_4 & 1) != 0) {
        uVar6 = 0xe;
      }
    }
    else {
      uVar6 = 0x10;
    }
    FUN_0095ae00(param_1,*param_2,param_2[1],iVar3,iVar2,hdc,uVar6);
    if (hdc != (HDC)0x0) {
      SelectObject(hdc,h_00);
    }
    if (h != (HBITMAP)0x0) {
      DeleteObject(h);
    }
    DeleteDC(hdc);
    ExceptionList = local_c;
    return;
  }
  iVar3 = FUN_00958e60();
  ppcVar4 = (code **)FUN_0098e820();
  if (ppcVar4 == (code **)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = (**ppcVar4)(*(undefined4 *)(iVar3 + 0x13c),L"MENU");
  }
  uStack_4 = 0;
  iVar5 = FUN_0095bfd0();
  iStack_28 = param_2[1] - *(int *)(iVar5 + 0x18);
  iVar7 = 0;
  iStack_2c = *param_2 - *(int *)(iVar5 + 0x10);
  iStack_24 = param_2[2] + *(int *)(iVar5 + 0x18);
  iStack_20 = param_2[3] + *(int *)(iVar5 + 0x1c);
  param_4 = param_4 & 4;
  (**(code **)(iVar2 + 8))(iVar3,param_1,0xc,2 - (uint)(param_4 != 0),&iStack_2c);
  if (*(int *)(unaff_EDI + 0x5c) == 1) {
    cVar1 = (param_4 != 0) + '\x01';
  }
  else {
    cVar1 = (param_4 != 0) + '\x03';
  }
  (**(code **)(iVar7 + 8))(iVar3,param_1,0xb,cVar1,param_2,0);
  uStack_4 = 0xffffffff;
  if (iVar3 == 0) {
    ExceptionList = local_c;
    return;
  }
  iVar2 = FUN_0098e820();
  (**(code **)(iVar2 + 4))(iVar3);
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0095c570(int param_1_00,int *param_1)

{
  char cVar1;
  int iVar2;
  
  if (param_1 != (int *)(param_1_00 + 8)) {
    FUN_0083ea60((int *)(param_1_00 + 8));
  }
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 == '\0') {
    iVar2 = FUN_0095bfd0();
    if (param_1 != (int *)(iVar2 + 0x78)) {
      FUN_0083ea60((int *)(iVar2 + 0x78));
    }
  }
  return;
}



void __thiscall
FUN_0095c5b0(int *param_1_00,int param_1,int *param_2,undefined4 param_4,uint param_5)

{
  HDC hdc;
  int iVar1;
  int iVar2;
  int iVar3;
  bool bVar4;
  WPARAM c;
  char cVar5;
  uint uVar6;
  int *piVar7;
  int iVar8;
  code **ppcVar9;
  undefined **ppuVar10;
  HBRUSH hbr;
  HGDIOBJ h;
  int *piVar11;
  undefined *puVar12;
  int iVar13;
  tagSIZE *ptVar14;
  undefined4 *****lData;
  int unaff_ESI;
  undefined *puVar15;
  UINT UStack_184;
  tagSIZE tStack_180;
  int iStack_174;
  int local_170;
  undefined **local_16c;
  int local_168;
  undefined **ppuStack_164;
  HGDIOBJ pvStack_160;
  int iStack_15c;
  tagRECT tStack_158;
  RECT RStack_148;
  int iStack_138;
  int iStack_134;
  int iStack_130;
  int iStack_12c;
  int local_128;
  int local_124;
  int local_120;
  tagSIZE local_11c;
  int local_110;
  undefined **ppuStack_10c;
  COLORREF CStack_104;
  undefined **ppuStack_f8;
  int *piStack_f0;
  int iStack_e8;
  tagRECT local_e4;
  undefined auStack_cc [4];
  uint uStack_c8;
  uint uStack_c0;
  undefined4 uStack_b8;
  uint uStack_b4;
  void *pvStack_b0;
  uint uStack_ac;
  void *pvStack_a8;
  HDC pHStack_a0;
  int iStack_9c;
  HDC pHStack_98;
  HGDIOBJ pvStack_94;
  HDC pHStack_90;
  COLORREF CStack_8c;
  uint uStack_6c;
  void *pvStack_68;
  undefined auStack_60 [4];
  undefined4 *****apppppuStack_5c [2];
  uint uStack_54;
  WPARAM WStack_4c;
  uint uStack_48;
  undefined4 uStack_44;
  uint uStack_40;
  void *pvStack_3c;
  undefined4 *****apppppuStack_30 [4];
  WPARAM WStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  undefined4 local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bdc93d;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&UStack_184;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xfffffe6c;
  ExceptionList = &local_c;
  local_110 = param_1;
  piVar7 = (int *)FUN_0095bfd0();
  hdc = *(HDC *)(*(int *)(param_1 + 8) + 0x108);
  local_124 = param_2[1];
  local_128 = *param_2;
  local_120 = param_2[2] + local_128;
  local_11c.cx = param_2[3] + local_124;
  local_170 = param_1_00[0xe];
  if (param_1_00[0xe] <= piVar7[0x14]) {
    local_170 = piVar7[0x14];
  }
  if (*(char *)(param_1_00 + 1) != '\0') {
    local_168 = 0;
    local_16c = wxFont::vftable;
    local_4._0_1_ = 0;
    local_4._1_3_ = 0;
    (**(code **)(*param_1_00 + 0x10))();
    FUN_00453f4b();
    uStack_8._0_1_ = 1;
    FUN_00453f4b();
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,2);
    (**(code **)(*param_1_00 + 0x14))();
    tStack_158.left = iStack_138 + *piVar7;
    tStack_158.bottom = iStack_12c - piVar7[3];
    tStack_158.top = iStack_134 + piVar7[2];
    tStack_158.right = iStack_130 - piVar7[2];
    ppuStack_164 = (undefined **)(piVar7[0x12] + tStack_158.top);
    local_168 = tStack_158.left + piVar7[0x10];
    pvStack_160 = (HGDIOBJ)(tStack_158.right - piVar7[0x12]);
    iStack_15c = tStack_158.bottom - piVar7[0x13];
    local_e4.right = tStack_180.cx + piVar7[9] + piVar7[8] + piVar7[5] + piVar7[4] + *piVar7;
    RStack_148.left = local_e4.right + piVar7[0x1a];
    RStack_148.top = tStack_158.top;
    RStack_148.right = tStack_158.right;
    RStack_148.bottom = tStack_158.bottom;
    local_e4.left = tStack_158.left;
    local_e4.top = tStack_158.top;
    local_e4.bottom = tStack_158.bottom;
    iVar8 = FUN_0095a9b0();
    if (iVar8 != 0) {
      RStack_148.top = RStack_148.top + -1;
    }
    cVar5 = (**(code **)(param_1_00[9] + 0x24))();
    if ((cVar5 == '\0') && (UStack_184 = FUN_0095ab40(), UStack_184 != 0)) {
      if ((param_5 & 4) == 0) {
        iStack_174 = ((param_5 & 1) != 0) + 1;
      }
      else {
        iStack_174 = ((param_5 & 1) != 0) + 3;
      }
      FUN_00958e60();
      ppcVar9 = (code **)FUN_0098e820();
      if (ppcVar9 == (code **)0x0) {
        ppuVar10 = (undefined **)0x0;
      }
      else {
        ppuVar10 = (undefined **)(**ppcVar9)();
      }
      local_4 = CONCAT31(local_4._1_3_,3);
      tStack_180.cx = (LONG)ppuVar10;
      iVar8 = (**(code **)(UStack_184 + 0x38))();
      if (iVar8 != 0) {
        (**(code **)(unaff_ESI + 8))(ppuVar10,hdc,9,0,&iStack_134);
      }
      iVar8 = 0;
      (**(code **)(unaff_ESI + 8))(ppuVar10,hdc,0xd,0,&local_e4.top);
      if (param_1_00[-2] == -1) {
        tStack_180.cy = (LONG)piStack_f0;
        (**(code **)(iVar8 + 8))(ppuVar10,hdc,0xf,0,&tStack_180.cy);
        local_4._0_1_ = 2;
        if (ppuVar10 != (undefined **)0x0) {
          iVar8 = FUN_0098e820();
          (**(code **)(iVar8 + 4))();
        }
        local_4._0_1_ = 1;
        ppuStack_10c = wxObject::vftable;
        FUN_0083e850();
        local_4 = (uint)local_4._1_3_ << 8;
        ppuStack_f8 = wxObject::vftable;
        FUN_0083e850();
        local_4 = 0xffffffff;
        FUN_00921450();
        goto LAB_0095d19c;
      }
      (**(code **)(iVar8 + 8))(ppuVar10,hdc,0xe,uVar6,&local_16c,0);
      local_4._0_1_ = 2;
      if (ppuVar10 != (undefined **)0x0) {
        iVar8 = FUN_0098e820();
        (**(code **)(iVar8 + 4))();
      }
    }
    else {
      if (param_1_00[-2] == -1) {
        DrawEdge(hdc,&tStack_158,6,2);
        local_4._0_1_ = 1;
        ppuStack_10c = wxObject::vftable;
        FUN_0083e850();
        local_4 = (uint)local_4._1_3_ << 8;
        ppuStack_f8 = wxObject::vftable;
        FUN_0083e850();
        local_4 = 0xffffffff;
        FUN_00921450();
        goto LAB_0095d19c;
      }
      hbr = CreateSolidBrush(CStack_104);
      pvStack_160 = SelectObject(hdc,hbr);
      FillRect(hdc,&RStack_148,hbr);
      if (hdc != (HDC)0x0) {
        SelectObject(hdc,pvStack_160);
      }
      if (hbr != (HBRUSH)0x0) {
        DeleteObject(hbr);
      }
    }
    ppuStack_164 = (undefined **)hdc;
    pvStack_160 = (HGDIOBJ)SetTextColor(hdc,(COLORREF)piStack_f0);
    pHStack_90 = hdc;
    CStack_8c = SetBkColor(hdc,CStack_104);
    pHStack_a0 = hdc;
    iStack_9c = SetBkMode(hdc,1);
    local_4._0_1_ = 6;
    h = (HGDIOBJ)FUN_009229f0();
    pHStack_98 = hdc;
    pvStack_94 = SelectObject(hdc,h);
    local_4 = CONCAT31(local_4._1_3_,7);
    (**(code **)(*param_1_00 + 4))();
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,8);
    piVar11 = (int *)FUN_00432231();
    iVar8 = *piVar11;
    if (*(uint *)(iVar8 + 0x18) < 8) {
      iVar8 = iVar8 + 4;
    }
    else {
      iVar8 = *(int *)(iVar8 + 4);
    }
    GetTextExtentPoint32W(hdc,(LPCWSTR)(iVar8 + piVar11[1] * 2),uStack_48,&local_11c);
    FUN_00432214();
    (**(code **)(param_1_00[-0x19] + 0x14))();
    local_c._0_1_ = 9;
    puVar12 = (undefined *)FUN_00852890(auStack_cc);
    local_c._0_1_ = 10;
    if (auStack_60 != puVar12) {
      FID_conflict_assign(puVar12);
    }
    _free(pvStack_b0);
    if (7 < uStack_b4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_b4 = 7;
    uStack_b8 = 0;
    uStack_c8 = uStack_c8 & 0xffff0000;
    local_c = (void *)CONCAT31(local_c._1_3_,8);
    _free(pvStack_68);
    if (7 < uStack_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uVar6 = 2;
    iVar8 = FUN_0095a9b0();
    if (((iVar8 == 2) && (((uint)param_2 & 4) != 0)) && (((uint)param_2 & 1) == 0)) {
      uVar6 = 0x22;
    }
    if ((((uint)param_2 & 0x100) != 0) && (*(char *)(piVar7 + 0x20) == '\0')) {
      uVar6 = uVar6 | 0x200;
    }
    if (uStack_48 < 8) {
      apppppuStack_5c[0] = apppppuStack_5c;
    }
    DrawStateW(hdc,(HBRUSH)0x0,(DRAWSTATEPROC)0x0,(LPARAM)apppppuStack_5c[0],WStack_4c,
               RStack_148.right,
               ((iStack_134 - local_11c.cx) - RStack_148.bottom) / 2 + RStack_148.bottom,0,0,uVar6);
    (**(code **)(param_1_00[-0x19] + 0x14))();
    tStack_180.cx = (LONG)&stack0xfffffe64;
    local_4._0_1_ = 0xb;
    FUN_008529d0();
    local_4 = CONCAT31(local_4._1_3_,0xd);
    _free(pvStack_a8);
    c = WStack_20;
    if (7 < uStack_ac) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_ac = 7;
    pvStack_b0 = (void *)0x0;
    uStack_c0 = uStack_c0 & 0xffff0000;
    if (WStack_20 != 0) {
      piVar11 = (int *)FUN_00432231();
      iVar8 = *piVar11;
      if (*(uint *)(iVar8 + 0x18) < 8) {
        iVar8 = iVar8 + 4;
      }
      else {
        iVar8 = *(int *)(iVar8 + 4);
      }
      GetTextExtentPoint32W(hdc,(LPCWSTR)(iVar8 + piVar11[1] * 2),c,&tStack_180);
      FUN_00432214();
      UStack_184 = 1;
      iVar8 = FUN_0095a9b0();
      if (((iVar8 == 2) && ((param_5 & 4) != 0)) && ((param_5 & 1) == 0)) {
        UStack_184 = 0x21;
      }
      iVar8 = piVar7[0xd];
      iVar1 = piVar7[0x1c];
      iVar2 = piVar7[0x16];
      iVar3 = piVar7[0xc];
      iVar13 = FUN_0095a9b0();
      ppuVar10 = (undefined **)tStack_180.cx;
      if (iVar13 != 0) {
        iStack_174 = param_1_00[-0x16];
        if (*(int *)(iStack_174 + 0xb0) == -1) {
          FUN_0092cc90();
        }
        ppuVar10 = *(undefined ***)(iStack_174 + 0xb0);
      }
      lData = apppppuStack_30[0];
      if (uStack_1c < 8) {
        lData = apppppuStack_30;
      }
      DrawStateW(hdc,(HBRUSH)0x0,(DRAWSTATEPROC)0x0,(LPARAM)lData,WStack_20,
                 ((((iStack_130 - iVar8) - iVar1) - iVar2) - iVar3) - (int)ppuVar10,
                 ((iStack_12c - tStack_180.cy) - iStack_134) / 2 + iStack_134,0,0,UStack_184);
    }
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_1c = 7;
    WStack_20 = 0;
    apppppuStack_30[0] = (undefined4 *****)((uint)apppppuStack_30[0] & 0xffff0000);
    _free(pvStack_3c);
    if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_40 = 7;
    uStack_44 = 0;
    uStack_54 = uStack_54 & 0xffff0000;
    if (hdc != (HDC)0x0) {
      SelectObject(hdc,pvStack_94);
    }
    SetBkMode(hdc,iStack_9c);
    SetBkColor(hdc,CStack_8c);
    SetTextColor(hdc,(COLORREF)pvStack_160);
    local_4._0_1_ = 1;
    ppuStack_10c = wxObject::vftable;
    FUN_0083e850();
    local_4 = (uint)local_4._1_3_ << 8;
    ppuStack_f8 = wxObject::vftable;
    FUN_0083e850();
    local_4 = 0xffffffff;
    FUN_00921450();
  }
  iVar8 = local_128 + piVar7[8] + piVar7[4] + *piVar7;
  SetRect(&local_e4,iVar8,piVar7[10] + piVar7[6] + piVar7[2] + local_124,iVar8 + local_170,
          ((local_11c.cx - piVar7[0xb]) - piVar7[7]) - piVar7[3]);
  if (((param_1_00[-2] == 1) || (param_1_00[-2] == 2)) &&
     (cVar5 = (**(code **)(param_1_00[0xf] + 0x10))(), cVar5 == '\0')) {
    if ((param_5 & 8) != 0) {
      FUN_0095c300();
    }
    goto LAB_0095d19c;
  }
  tStack_180.cy = 0;
  tStack_180.cx = (LONG)wxBitmap::vftable;
  local_4 = 0xe;
  if ((((param_5 & 4) == 0) || (&tStack_180 == (tagSIZE *)(param_1_00 + 0x13))) ||
     ((FUN_0083ea60(), (int *)tStack_180.cy == (int *)0x0 ||
      (cVar5 = (**(code **)(*(int *)tStack_180.cy + 4))(), cVar5 == '\0')))) {
    if (((param_1_00[-2] == 1) || (param_1_00[-2] == 2)) && ((param_5 & 8) == 0)) {
      bVar4 = false;
    }
    else {
      bVar4 = true;
    }
    ptVar14 = (tagSIZE *)(param_1_00 + 0xf);
    if (!bVar4) {
      ptVar14 = (tagSIZE *)(param_1_00 + 0x11);
    }
    if (&tStack_180 != ptVar14) {
      FUN_0083ea60();
    }
    if ((int *)tStack_180.cy != (int *)0x0) {
      cVar5 = (**(code **)(*(int *)tStack_180.cy + 4))();
      if ((cVar5 != '\0') && ((param_5 & 4) != 0)) {
        FUN_008f3b70();
        local_4._0_1_ = 0xf;
        FUN_00903890();
        local_4._0_1_ = 0x11;
        ppuStack_164 = wxObject::vftable;
        FUN_0083e850();
        cVar5 = FUN_008ff820();
        if (cVar5 != '\0') {
          ptVar14 = (tagSIZE *)FUN_00414f38();
          local_4._0_1_ = 0x12;
          if (&tStack_180 != ptVar14) {
            FUN_0083ea60();
          }
          local_4._0_1_ = 0x11;
          FUN_008f7630();
        }
        local_4 = CONCAT31(local_4._1_3_,0xe);
        local_16c = wxObject::vftable;
        FUN_0083e850();
      }
      goto LAB_0095d095;
    }
  }
  else {
LAB_0095d095:
    if (((int *)tStack_180.cy != (int *)0x0) &&
       (cVar5 = (**(code **)(*(int *)tStack_180.cy + 4))(), iVar8 = local_110, cVar5 != '\0')) {
      FUN_0094be20();
      local_4 = CONCAT31(local_4._1_3_,0x13);
      FUN_0094be70();
      if ((undefined **)tStack_180.cx == (undefined **)0x0) {
        puVar12 = (undefined *)0x0;
        puVar15 = (undefined *)0x0;
      }
      else {
        puVar12 = *(undefined **)(tStack_180.cx + 8);
        puVar15 = *(undefined **)(tStack_180.cx + 0xc);
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
         ((iStack_174 < (int)puVar12 || (local_e4.right - local_e4.left < (int)puVar15)))) {
        FUN_008402e0("..\\..\\src\\msw\\menuitem.cpp",0x434);
      }
      (**(code **)(**(int **)(iVar8 + 8) + 0x170))
                ((iStack_174 - (int)puVar12) / 2 + iStack_e8,
                 (int)(local_e4.right + (-(int)puVar15 - local_e4.left)) / 2 + local_e4.left,puVar12
                 ,puVar15,&local_168,0,0,5);
      local_4 = CONCAT31(local_4._1_3_,0xe);
      FUN_00457221();
    }
  }
  local_4 = 0xffffffff;
  FUN_008f7630();
LAB_0095d19c:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_0095d1d0(void)

{
  return &PTR_u_wxBrush_0323b1c0;
}



undefined4 FUN_0095d1e0(void)

{
  undefined4 in_EAX;
  
  switch(in_EAX) {
  case 0x6f:
    return 3;
  case 0x70:
    return 5;
  case 0x71:
    return 2;
  case 0x72:
    return 4;
  case 0x73:
    return 0;
  case 0x74:
    return 1;
  default:
    return 0xffffffff;
  }
}



undefined4 __fastcall FUN_0095d230(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    return *(undefined4 *)(param_1[1] + 8);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\brush.cpp",0x11f,"wxBrush::GetStyle","IsOk()",L"invalid brush");
  }
  return 0xffffffff;
}



int __fastcall FUN_0095d280(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    return param_1[1] + 0xc;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\brush.cpp",0x126,"wxBrush::GetStipple","IsOk()",L"invalid brush"
                );
  }
  return 0;
}



void __fastcall FUN_0095d2d0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bdc983;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxBrushRefData::vftable;
  local_4 = 1;
  if ((HGDIOBJ)param_1[10] != (HGDIOBJ)0x0) {
    DeleteObject((HGDIOBJ)param_1[10]);
    param_1[10] = 0;
  }
  param_1[5] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_008f7630();
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_0095d350(int param_1_00,int param_1)

{
  if ((((*(int *)(param_1_00 + 8) == *(int *)(param_1 + 8)) &&
       (*(char *)(param_1_00 + 0x20) == *(char *)(param_1 + 0x20))) &&
      (*(char *)(param_1_00 + 0x21) == *(char *)(param_1 + 0x21))) &&
     (((*(char *)(param_1_00 + 0x23) == *(char *)(param_1 + 0x23) &&
       (*(char *)(param_1_00 + 0x22) == *(char *)(param_1 + 0x22))) &&
      ((*(char *)(param_1_00 + 0x24) == *(char *)(param_1 + 0x24) &&
       (*(int *)(param_1_00 + 0x10) == *(int *)(param_1 + 0x10))))))) {
    return 1;
  }
  return 0;
}



bool __thiscall FUN_0095d3a0(int param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  
  iVar1 = *(int *)(param_1 + 4);
  if (*(int *)(param_1_00 + 4) == 0) {
    return iVar1 == 0;
  }
  if (iVar1 != 0) {
    cVar2 = FUN_0095d350(iVar1);
    if (cVar2 != '\0') {
      return true;
    }
  }
  return false;
}



void __thiscall FUN_0095d3e0(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  FUN_0083eaa0();
  iVar1 = *(int *)(param_1_00 + 4);
  if (*(HGDIOBJ *)(iVar1 + 0x28) != (HGDIOBJ)0x0) {
    DeleteObject(*(HGDIOBJ *)(iVar1 + 0x28));
    *(undefined4 *)(iVar1 + 0x28) = 0;
    *(undefined4 *)(iVar1 + 8) = param_1;
    return;
  }
  *(undefined4 *)(iVar1 + 8) = param_1;
  return;
}



void __thiscall FUN_0095d420(int param_1_00,int param_1)

{
  if (*(HGDIOBJ *)(param_1_00 + 0x28) != (HGDIOBJ)0x0) {
    DeleteObject(*(HGDIOBJ *)(param_1_00 + 0x28));
    *(undefined4 *)(param_1_00 + 0x28) = 0;
  }
  if (param_1_00 + 0x14 != param_1) {
    FUN_0083ea60(param_1);
  }
  *(undefined4 *)(param_1_00 + 0x1c) = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 0x20) = *(undefined *)(param_1 + 0xc);
  *(undefined *)(param_1_00 + 0x21) = *(undefined *)(param_1 + 0xd);
  *(undefined *)(param_1_00 + 0x22) = *(undefined *)(param_1 + 0xe);
  *(undefined *)(param_1_00 + 0x23) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x24) = *(undefined *)(param_1 + 0x10);
  return;
}



undefined4 __thiscall FUN_0095d480(undefined4 param_1_00,byte param_1)

{
  FUN_0095d2d0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_0095d4a0(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  param_1_00[1] = 1;
  *param_1_00 = wxBrushRefData::vftable;
  param_1_00[3] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x10);
  param_1_00[4] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[3] = wxBitmap::vftable;
  param_1_00[5] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x18);
  param_1_00[6] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[5] = wxColour::vftable;
  param_1_00[7] = *(undefined4 *)(param_1 + 0x1c);
  *(undefined *)(param_1_00 + 8) = *(undefined *)(param_1 + 0x20);
  *(undefined *)((int)param_1_00 + 0x21) = *(undefined *)(param_1 + 0x21);
  *(undefined *)((int)param_1_00 + 0x22) = *(undefined *)(param_1 + 0x22);
  *(undefined *)((int)param_1_00 + 0x23) = *(undefined *)(param_1 + 0x23);
  *(undefined *)(param_1_00 + 9) = *(undefined *)(param_1 + 0x24);
  param_1_00[2] = *(undefined4 *)(param_1 + 8);
  param_1_00[10] = 0;
  return;
}



void __fastcall FUN_0095d530(undefined4 *param_1)

{
  param_1[1] = 0;
  *param_1 = wxBrush::vftable;
  return;
}



undefined4 FUN_0095d540(void)

{
  void *pvVar1;
  undefined4 uVar2;
  
  pvVar1 = operator_new(0x2c);
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0095d4a0();
    return uVar2;
  }
  return 0;
}



undefined4 __thiscall FUN_0095d560(int *param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    FUN_00458700(param_1[1] + 0x14);
    return param_2;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\brush.cpp",0x118,"wxBrush::GetColour","IsOk()",L"invalid brush")
    ;
  }
  FUN_00458700(&PTR_vftable_03238cd0);
  return param_2;
}



void FUN_0095d5e0(undefined4 param_1)

{
  FUN_0083eaa0();
  FUN_0095d420(param_1);
  return;
}



void FUN_0095d600(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc9a8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0083eaa0(DAT_0323f878 ^ (uint)&stack0xffffffdc);
  uVar1 = FUN_004561e7(param_1,param_2,param_3,0xff);
  local_4 = 0;
  FUN_0095d420(uVar1);
  local_4 = 0xffffffff;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0095d6b0(undefined4 *param_1_00,int param_1,undefined4 param_2)

{
  int iVar1;
  
  param_1_00[1] = 1;
  *param_1_00 = wxBrushRefData::vftable;
  param_1_00[4] = 0;
  param_1_00[3] = wxBitmap::vftable;
  param_1_00[5] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 4);
  param_1_00[6] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[5] = wxColour::vftable;
  param_1_00[7] = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 8) = *(undefined *)(param_1 + 0xc);
  *(undefined *)((int)param_1_00 + 0x21) = *(undefined *)(param_1 + 0xd);
  *(undefined *)((int)param_1_00 + 0x22) = *(undefined *)(param_1 + 0xe);
  *(undefined *)((int)param_1_00 + 0x23) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 9) = *(undefined *)(param_1 + 0x10);
  param_1_00[2] = param_2;
  param_1_00[10] = 0;
  return;
}



undefined4 * __thiscall FUN_0095d730(undefined4 *param_1_00,undefined4 *param_1)

{
  uint uVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdc9ee;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  *param_1_00 = wxBrushRefData::vftable;
  param_1_00[4] = 0;
  param_1_00[3] = wxBitmap::vftable;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_00453f4b(uVar1);
  local_4 = CONCAT31(local_4._1_3_,2);
  if (param_1_00 + 3 != param_1) {
    FUN_0083ea60(param_1);
  }
  iVar2 = FUN_008f25d0();
  param_1_00[2] = (-(uint)(iVar2 != 0) & 0xfffffffd) + 0x6e;
  param_1_00[10] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_0095d7e0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxBrush::vftable;
  pvVar1 = operator_new(0x2c);
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_0095d6b0(param_1,param_2);
  }
  param_1_00[1] = uVar2;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_0095d860(undefined4 *param_1_00,undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcb883;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxBrush::vftable;
  pvVar1 = operator_new(0x2c);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_0095d730(param_1);
  }
  param_1_00[1] = uVar2;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_0095d8e0(void)

{
  void *pvVar1;
  undefined4 uVar2;
  
  pvVar1 = operator_new(0x2c);
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0095d6b0(&PTR_vftable_03238cd0,100);
    return uVar2;
  }
  return 0;
}



void __thiscall FUN_0095d900(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  
  FUN_0083eaa0();
  iVar1 = *(int *)(param_1_00 + 4);
  if (*(HGDIOBJ *)(iVar1 + 0x28) != (HGDIOBJ)0x0) {
    DeleteObject(*(HGDIOBJ *)(iVar1 + 0x28));
    *(undefined4 *)(iVar1 + 0x28) = 0;
  }
  if (iVar1 + 0xc != param_1) {
    FUN_0083ea60(param_1);
  }
  iVar2 = FUN_008f25d0();
  *(uint *)(iVar1 + 8) = (-(uint)(iVar2 != 0) & 0xfffffffd) + 0x6e;
  return;
}



undefined4 __fastcall FUN_0095d950(int param_1)

{
  char cVar1;
  int iVar2;
  HBRUSH pHVar3;
  undefined4 extraout_ECX;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x28) == 0) {
    iVar2 = FUN_0095d1e0();
    if (iVar2 == -1) {
      switch(extraout_ECX) {
      default:
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480();
        }
      case 100:
        pHVar3 = CreateSolidBrush(*(COLORREF *)(param_1 + 0x1c));
        break;
      case 0x6a:
        pHVar3 = (HBRUSH)GetStockObject(5);
        break;
      case 0x6b:
        iVar2 = FUN_008f25d0();
        pHVar3 = CreatePatternBrush(*(HBITMAP *)(iVar2 + 8));
        break;
      case 0x6e:
        if (*(int *)(param_1 + 0x10) == 0) {
          pHVar3 = CreatePatternBrush((HBITMAP)0x0);
        }
        else {
          pHVar3 = CreatePatternBrush(*(HBITMAP *)(*(int *)(param_1 + 0x10) + 0x14));
        }
      }
    }
    else {
      pHVar3 = CreateHatchBrush(iVar2,*(COLORREF *)(param_1 + 0x1c));
    }
    *(HBRUSH *)(param_1 + 0x28) = pHVar3;
    if (pHVar3 == (HBRUSH)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  ExceptionList = local_c;
  return *(undefined4 *)(param_1 + 0x28);
}



undefined4 __fastcall FUN_0095db20(int *param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    uVar2 = FUN_0095d950();
    return uVar2;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\brush.cpp",0x12d,"wxBrush::GetResourceHandle","IsOk()",
                 L"invalid brush");
  }
  return 0;
}



undefined4 FUN_0095db70(void)

{
  return DAT_032c1048;
}



void FUN_0095db80(void)

{
  if (DAT_032c1050 < 1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\utilsgui.cpp",0x4a,"wxEndBusyCursor",
                   "gs_wxBusyCursorCount > 0",
                   L"no matching wxBeginBusyCursor() for wxEndBusyCursor()");
    }
  }
  else {
    DAT_032c1050 = DAT_032c1050 + -1;
    if (DAT_032c1050 == 0) {
      SetCursor(DAT_032c104c);
      DAT_032c104c = (HCURSOR)0x0;
      return;
    }
  }
  return;
}



bool FUN_0095dbe0(void)

{
  return 0 < DAT_032c1050;
}



void FUN_0095dbf0(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 local_8;
  undefined4 local_4;
  
  FUN_0090d690(&local_8);
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = local_8;
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = local_4;
  }
  return;
}



void FUN_0095dc20(int *param_1,int *param_2,int *param_3,int *param_4)

{
  int local_10;
  int iStack_c;
  int iStack_8;
  int iStack_4;
  
  SystemParametersInfoW(0x30,0,&local_10,0);
  if (param_1 != (int *)0x0) {
    *param_1 = local_10;
  }
  if (param_2 != (int *)0x0) {
    *param_2 = iStack_c;
  }
  if (param_3 != (int *)0x0) {
    *param_3 = iStack_8 - local_10;
  }
  if (param_4 != (int *)0x0) {
    *param_4 = iStack_4 - iStack_c;
  }
  return;
}



void FUN_0095dc80(HWND param_1)

{
  GetWindowLongW(param_1,-0xc);
  return;
}



void FUN_0095dc90(int *param_1,int *param_2,HDC param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar1 = GetDeviceCaps(param_3,4);
  iVar2 = GetDeviceCaps(param_3,6);
  iVar3 = GetDeviceCaps(param_3,8);
  iVar4 = GetDeviceCaps(param_3,10);
  *param_1 = (*param_1 * iVar1 * 100) / iVar3;
  *param_2 = (*param_2 * iVar2 * 100) / iVar4;
  return;
}



void FUN_0095dcf0(int *param_1,int *param_2,HDC param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar1 = GetDeviceCaps(param_3,4);
  iVar2 = GetDeviceCaps(param_3,6);
  iVar3 = GetDeviceCaps(param_3,8);
  iVar4 = GetDeviceCaps(param_3,10);
  *param_1 = (*param_1 * iVar3) / (iVar1 * 100);
  *param_2 = (*param_2 * iVar4) / (iVar2 * 100);
  return;
}



void FUN_0095dd50(HDC param_1,int param_2,int param_3,int param_4,int param_5)

{
  MoveToEx(param_1,param_2,param_3,(LPPOINT)0x0);
  LineTo(param_1,param_4,param_5);
  return;
}



void FUN_0095dd80(int param_1)

{
  int iVar1;
  bool bVar2;
  
  iVar1 = DAT_032c1050 + 1;
  bVar2 = DAT_032c1050 == 0;
  DAT_032c1050 = iVar1;
  if (bVar2) {
    DAT_032c1048 = *(HCURSOR *)(param_1 + 4);
    if (DAT_032c1048 == (HCURSOR)0x0) {
      DAT_032c104c = SetCursor((HCURSOR)0x0);
      return;
    }
    DAT_032c1048 = *(HCURSOR *)((int)DAT_032c1048 + 0x14);
    DAT_032c104c = SetCursor(DAT_032c1048);
  }
  return;
}



bool FUN_0095ddd0(void)

{
  HDC hdc;
  int iVar1;
  
  if (DAT_0323b1d8 == -1) {
    hdc = GetDC((HWND)0x0);
    iVar1 = GetDeviceCaps(hdc,0x18);
    if ((iVar1 == -1) || (DAT_0323b1d8 = 0, 2 < iVar1)) {
      DAT_0323b1d8 = 1;
    }
    ReleaseDC((HWND)0x0,hdc);
  }
  return DAT_0323b1d8 != 0;
}



int FUN_0095de30(void)

{
  HDC hdc;
  int iVar1;
  int iVar2;
  
  hdc = GetDC((HWND)0x0);
  iVar1 = GetDeviceCaps(hdc,0xe);
  iVar2 = GetDeviceCaps(hdc,0xc);
  ReleaseDC((HWND)0x0,hdc);
  return iVar1 * iVar2;
}



void FUN_0095de70(int *param_1,int *param_2)

{
  HDC hdc;
  int iVar1;
  
  hdc = GetDC((HWND)0x0);
  if (param_1 != (int *)0x0) {
    iVar1 = GetDeviceCaps(hdc,8);
    *param_1 = iVar1;
  }
  if (param_2 != (int *)0x0) {
    iVar1 = GetDeviceCaps(hdc,10);
    *param_2 = iVar1;
  }
  ReleaseDC((HWND)0x0,hdc);
  return;
}



void FUN_0095deb0(int *param_1,int *param_2)

{
  HDC hdc;
  int iVar1;
  
  hdc = GetDC((HWND)0x0);
  if (param_1 != (int *)0x0) {
    iVar1 = GetDeviceCaps(hdc,4);
    *param_1 = iVar1;
  }
  if (param_2 != (int *)0x0) {
    iVar1 = GetDeviceCaps(hdc,6);
    *param_2 = iVar1;
  }
  ReleaseDC((HWND)0x0,hdc);
  return;
}



void FUN_0095def0(undefined4 param_1,undefined4 param_2)

{
  HDC hDC;
  
  hDC = GetDC((HWND)0x0);
  FUN_0095dcf0(param_1,param_2,hDC);
  ReleaseDC((HWND)0x0,hDC);
  return;
}



int FUN_0095df20(int param_1,HWND param_2)

{
  uint uVar1;
  int iVar2;
  LPWSTR *ppWStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca59;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  if (param_2 != (HWND)0x0) {
    iVar2 = GetWindowTextLengthW(param_2);
    FUN_00852280(param_1,iVar2 + 1);
    GetWindowTextW(param_2,*ppWStack_14,iVar2 + 1);
    FUN_00851bf0(uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



int FUN_0095dfc0(int param_1,HWND param_2)

{
  uint uVar1;
  int iVar2;
  int nMaxCount;
  LPWSTR *local_24;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00bdca99;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_c = 0;
  if (param_2 != (HWND)0x0) {
    nMaxCount = 0x100;
    FUN_00852280(param_1,0x100);
    iVar2 = GetClassNameW(param_2,*local_24,0x100);
    FUN_00851bf0(uVar1);
    if (iVar2 == 0x100) {
      do {
        nMaxCount = nMaxCount * 2;
        FUN_00852280(param_1,nMaxCount);
        iVar2 = GetClassNameW(param_2,*local_24,nMaxCount);
        FUN_00851bf0();
      } while (iVar2 == nMaxCount);
    }
  }
  ExceptionList = local_14;
  return param_1;
}



void FUN_0095e0b0(uint *param_1)

{
  uint uVar1;
  
  if ((*param_1 & 0x5000) == 0) {
    *param_1 = *param_1 | 0x4000;
  }
  uVar1 = *param_1;
  if ((uVar1 & 0x1000) == 0) {
    if ((uVar1 & 0x2000) != 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/checkbox.h",0x9c,
                     "wxCheckBoxBase::WXValidateStyle","Assert failure",
                     "wxCHK_ALLOW_3RD_STATE_FOR_USER doesn\'t make sense without wxCHK_3STATE");
      }
      *param_1 = *param_1 & 0xffffdfff;
    }
  }
  else if ((uVar1 & 0x4000) != 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/checkbox.h",0x93,
                   "wxCheckBoxBase::WXValidateStyle","Assert failure",
                   "wxCHK_2STATE and wxCHK_3STATE can\'t be used together");
    }
    *param_1 = *param_1 & 0xffffefff;
    return;
  }
  return;
}



void __thiscall FUN_0095e140(int *param_1_00,int param_1)

{
  bool bVar1;
  
  bVar1 = *(int *)(param_1 + 0xc) == DAT_032bfe24;
  *(bool *)((int)param_1_00 + 0x199) = bVar1;
  if (!bVar1) {
    *(bool *)(param_1_00 + 0x66) = bVar1;
  }
  (**(code **)(*param_1_00 + 0x15c))(1,0);
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



void __thiscall FUN_0095e180(int *param_1_00,int param_1)

{
  *(bool *)(param_1_00 + 0x66) = *(int *)(param_1 + 0xc) == DAT_032bfe08;
  (**(code **)(*param_1_00 + 0x15c))(1,0);
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



int __fastcall FUN_0095e1d0(int *param_1)

{
  int iVar1;
  
  iVar1 = (**(code **)(*param_1 + 0x364))();
  if ((iVar1 == 2) && (((uint)param_1[0x38] >> 0xc & 1) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/checkbox.h",0x4b,
                   "wxCheckBoxBase::Get3StateValue","Assert failure",
                   L"DoGet3StateValue() says the 2-state checkbox is in an undetermined/third state"
                  );
    }
    iVar1 = 0;
  }
  return iVar1;
}



void __thiscall FUN_0095e220(int *param_1_00,int param_1)

{
  if ((param_1 == 2) && (((uint)param_1_00[0x38] >> 0xc & 1) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/checkbox.h",0x57,
                   "wxCheckBoxBase::Set3StateValue","Assert failure",
                   L"Setting a 2-state checkbox to undetermined state");
    }
    param_1 = 0;
  }
  (**(code **)(*param_1_00 + 0x360))(param_1);
  return;
}



bool __fastcall FUN_0095e2a0(int *param_1)

{
  int iVar1;
  
  iVar1 = (**(code **)(*param_1 + 0x364))();
  if ((iVar1 == 2) && (((uint)param_1[0x38] >> 0xc & 1) == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/checkbox.h",0x4b,
                   "wxCheckBoxBase::Get3StateValue","Assert failure",
                   L"DoGet3StateValue() says the 2-state checkbox is in an undetermined/third state"
                  );
    }
    iVar1 = 0;
  }
  return iVar1 != 0;
}



void __thiscall FUN_0095e3c0(int *param_1,char param_2)

{
  undefined4 uVar1;
  uint uVar2;
  undefined4 *puVar3;
  
  uVar2 = GetWindowLongW((HWND)param_1[0x4f],-0x10);
  uVar1 = DAT_032bfe24;
  if (param_2 == '\0') {
    uVar2 = (-(uint)(((uint)param_1[0x38] >> 0xc & 1) != 0) & 3) + 2 | uVar2 & 0xfffffff4;
    FUN_0091cf30(0xffffffff,0xffffffff,DAT_032bfe24,FUN_0095e140,0,0,0);
    FUN_0091cf30(0xffffffff,0xffffffff,DAT_032bfe28,FUN_0095e140,0,0,0);
    FUN_0091cf30(0xffffffff,0xffffffff,DAT_032bfe08,FUN_0095e180,0,0,0);
    FUN_0091cf30(0xffffffff,0xffffffff,DAT_032bfe0c,FUN_0095e180,0,0,0);
    FUN_0091cf30(0xffffffff,0xffffffff,DAT_032bfe38,&LAB_0095e1b0,0,0,0);
    FUN_0091cf30(0xffffffff,0xffffffff,DAT_032bfe3c,&LAB_0095e1b0,0,0,0);
  }
  else {
    uVar2 = uVar2 & 0xfffffffb | 0xb;
    puVar3 = (undefined4 *)operator_new(0x10);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      puVar3[2] = FUN_0095e140;
      *puVar3 = wxObjectEventFunctor::vftable;
      puVar3[1] = 0;
      puVar3[3] = 0;
    }
    FUN_008461a0(0xffffffff,0xffffffff,uVar1,puVar3,0);
    uVar1 = DAT_032bfe28;
    puVar3 = (undefined4 *)operator_new(0x10);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      puVar3[2] = FUN_0095e140;
      *puVar3 = wxObjectEventFunctor::vftable;
      puVar3[1] = 0;
      puVar3[3] = 0;
    }
    FUN_008461a0(0xffffffff,0xffffffff,uVar1,puVar3,0);
    uVar1 = DAT_032bfe08;
    puVar3 = (undefined4 *)operator_new(0x10);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      puVar3[2] = FUN_0095e180;
      *puVar3 = wxObjectEventFunctor::vftable;
      puVar3[1] = 0;
      puVar3[3] = 0;
    }
    FUN_008461a0(0xffffffff,0xffffffff,uVar1,puVar3,0);
    uVar1 = DAT_032bfe0c;
    puVar3 = (undefined4 *)operator_new(0x10);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      *puVar3 = wxObjectEventFunctor::vftable;
      puVar3[1] = 0;
      puVar3[2] = FUN_0095e180;
      puVar3[3] = 0;
    }
    FUN_008461a0(0xffffffff,0xffffffff,uVar1,puVar3,0);
    uVar1 = DAT_032bfe38;
    puVar3 = (undefined4 *)operator_new(0x10);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      puVar3[2] = &LAB_0095e1b0;
      *puVar3 = wxObjectEventFunctor::vftable;
      puVar3[1] = 0;
      puVar3[3] = 0;
    }
    FUN_008461a0(0xffffffff,0xffffffff,uVar1,puVar3,0);
    uVar1 = DAT_032bfe3c;
    puVar3 = (undefined4 *)operator_new(0x10);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      *puVar3 = wxObjectEventFunctor::vftable;
      puVar3[1] = 0;
      puVar3[2] = &LAB_0095e1b0;
      puVar3[3] = 0;
    }
    FUN_008461a0(0xffffffff,0xffffffff,uVar1,puVar3,0);
  }
  SetWindowLongW((HWND)param_1[0x4f],-0x10,uVar2);
  if (param_2 == '\0') {
    (**(code **)(*param_1 + 0x360))(param_1[0x65]);
  }
  return;
}



void __thiscall
FUN_0095e670(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,uint param_6,undefined4 param_7,undefined4 param_8
            )

{
  uint uVar1;
  char cVar2;
  int iVar3;
  uint uVar4;
  
  *(undefined4 *)(param_1_00 + 0x194) = 0;
  *(undefined *)(param_1_00 + 0x199) = 0;
  *(undefined *)(param_1_00 + 0x198) = 0;
  FUN_0095e0b0(&param_6);
  uVar1 = param_6;
  cVar2 = FUN_00937250(param_1,param_2,param_4,param_5,param_6,param_7,param_8);
  if (cVar2 == '\0') {
    return;
  }
  uVar4 = (-(uint)((uVar1 & 0x1000) != 0) & 3) + 0x10002;
  if ((uVar1 & 0x200) != 0) {
    uVar4 = uVar4 | 0x220;
  }
  param_6 = 10;
  iVar3 = FUN_00420f3f(&param_6,0,1);
  FUN_00936b00(L"BUTTON",uVar4 | -(uint)(iVar3 != -1) & 0x2000,param_4,param_5,param_3,0);
  return;
}



void __thiscall FUN_0095e7a0(int *param_1_00,int *param_1)

{
  undefined4 uVar1;
  int iVar2;
  int iStack_80;
  int iStack_7c;
  undefined local_78 [12];
  int *piStack_6c;
  int *local_68;
  int *piStack_60;
  int *piStack_5c;
  uint uStack_58;
  void *pvStack_54;
  undefined auStack_38 [4];
  undefined local_34 [4];
  undefined4 uStack_30;
  int iStack_20;
  undefined4 uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bdcaf0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&iStack_80;
  ExceptionList = &local_c;
  if (DAT_032c1054 == 0) {
    FUN_0094bed0(DAT_0323f878 ^ (uint)&stack0xffffff74);
    local_4 = 0;
    uVar1 = FUN_008ff360(local_78,0x11);
    local_4 = CONCAT31(local_4._1_3_,1);
    (**(code **)(*local_68 + 0x50))(uVar1);
    uStack_8 = (undefined *)((uint)uStack_8 & 0xffffff00);
    FUN_00921450();
    DAT_032c1054 = (**(code **)(*piStack_6c + 0x98))();
    local_4 = 0xffffffff;
    FUN_00457221();
  }
  FUN_0095df20(local_34,param_1_00[0x4f]);
  local_4 = 2;
  if (iStack_20 == 0) {
    iStack_7c = DAT_032c1054;
    iStack_80 = DAT_032c1054;
  }
  else {
    FUN_0094bd30(param_1_00);
    local_4._0_1_ = 3;
    uVar1 = FUN_0091e100(local_78);
    local_4._0_1_ = 4;
    (**(code **)(*piStack_5c + 0x50))(uVar1);
    uStack_8._0_1_ = 3;
    FUN_00921450();
    uVar1 = FUN_00937650(&piStack_5c,auStack_38);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,5);
    (**(code **)(*piStack_60 + 0xa8))(uVar1,&iStack_80,&stack0xffffff7c,0,0);
    uStack_1c = CONCAT31(uStack_1c._1_3_,3);
    _free(pvStack_54);
    if (7 < uStack_58) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(piStack_6c);
    }
    iVar2 = (**(code **)(*param_1_00 + 0x198))();
    iStack_7c = iStack_7c + iVar2 + DAT_032c1054;
    if (iStack_80 < DAT_032c1054) {
      iStack_80 = DAT_032c1054;
    }
    local_4 = CONCAT31(local_4._1_3_,2);
    FUN_00457221();
  }
  param_1[1] = iStack_80;
  *param_1 = iStack_7c;
  param_1_00[0x4c] = iStack_7c;
  param_1_00[0x4d] = param_1[1];
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0095e9d0(int *param_1_00,int param_1)

{
  uint uVar1;
  undefined **appuStack_6c [2];
  int *piStack_64;
  uint uStack_40;
  undefined4 uStack_30;
  uint uStack_2c;
  void *pvStack_28;
  uint uStack_20;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be1ca8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)appuStack_6c;
  ExceptionList = &local_c;
  if ((param_1 == 0) || (param_1 == 5)) {
    if (((uint)param_1_00[0x38] >> 0xd & 1) == 0) {
      uVar1 = (uint)(param_1_00[0x65] == 0);
    }
    else {
      uVar1 = (param_1_00[0x65] + 1) % 3;
    }
    (**(code **)(*param_1_00 + 0x360))(uVar1,DAT_0323f878 ^ (uint)&stack0xffffff8c);
    FUN_0092bd60(DAT_032bfdbc,param_1_00[0x10]);
    uStack_4 = 0;
    piStack_64 = param_1_00;
    uStack_20 = uVar1;
    thunk_FUN_0091c170(appuStack_6c);
    uStack_4 = 0xffffffff;
    _free(pvStack_28);
    if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_40);
    }
    uStack_40 = uStack_40 & 0xffff0000;
    uStack_2c = 7;
    uStack_30 = 0;
    appuStack_6c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0095eaf0(int param_1_00,int param_1)

{
  FUN_0093eed0(*(undefined4 *)(param_1_00 + 0x13c),param_1);
  if (param_1_00 + 0x164 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  FUN_0091a950();
  FUN_0095f6a0(param_1);
  return;
}



void __thiscall FUN_0095eb30(int *param_1_00,int *param_1)

{
  char cVar1;
  LONG LVar2;
  int iVar3;
  int *piVar4;
  DWORD color;
  undefined4 ****ppppuVar5;
  BOOL BVar6;
  undefined *puVar7;
  undefined *puVar8;
  uint format;
  undefined auStack_118 [8];
  undefined4 uStack_110;
  undefined *puStack_10c;
  undefined auStack_e0 [2];
  char cStack_de;
  byte bStack_dd;
  HDC pHStack_dc;
  tagRECT tStack_d8;
  undefined *puStack_c8;
  int iStack_c4;
  int iStack_c0;
  int iStack_bc;
  undefined auStack_b8 [4];
  int iStack_b4;
  int iStack_ac;
  undefined auStack_98 [104];
  undefined4 ****appppuStack_30 [4];
  int iStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdcb75;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_e0;
  ExceptionList = &local_c;
  LVar2 = GetWindowLongW((HWND)param_1_00[0x4f],-0x10);
  if ((((byte)LVar2 & 0xb) != 0xb) || (*param_1 != 4)) goto LAB_0095f077;
  pHStack_dc = (HDC)param_1[6];
  tStack_d8.top = param_1[8];
  tStack_d8.bottom = param_1[10];
  iStack_b4 = tStack_d8.top;
  iStack_ac = tStack_d8.bottom;
  iVar3 = FUN_0091b530();
  bStack_dd = (byte)((uint)param_1_00[0x38] >> 9) & 1;
  if (((uint)param_1_00[0x38] >> 9 & 1) == 0) {
    puVar7 = (undefined *)param_1[7];
    tStack_d8.right = param_1[9];
    puVar8 = puVar7 + *(int *)(iVar3 + 4);
    tStack_d8.left = (LONG)(puVar8 + 3);
  }
  else {
    puVar8 = (undefined *)param_1[9];
    puVar7 = puVar8 + -*(int *)(iVar3 + 4);
    tStack_d8.left = param_1[7];
    tStack_d8.right = (LONG)(puVar7 + -3);
  }
  if (*(char *)(param_1_00 + 0x66) == '\0') {
    piVar4 = (int *)FUN_0091ac40();
    cStack_de = '\0';
    if (piVar4 == param_1_00) goto LAB_0095ec13;
  }
  else {
LAB_0095ec13:
    cStack_de = '\x01';
  }
  FUN_0090e740();
  uStack_4 = 0;
  FUN_0091b930();
  iVar3 = FUN_0095e1d0();
  if ((((iVar3 != 0) && (iVar3 != 1)) && (iVar3 != 2)) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    puStack_10c = (undefined *)0x95ec81;
    FUN_00840480();
  }
  FUN_00910c30();
  FUN_00910c10();
  piVar4 = (int *)FUN_009ba160();
  iStack_bc = iStack_ac - iStack_b4;
  iStack_c0 = (int)puVar8 - (int)puVar7;
  iStack_c4 = iStack_b4;
  puStack_c8 = puVar7;
  (**(code **)(*piVar4 + 0x24))();
  puStack_10c = (undefined *)0x95ecef;
  (**(code **)(*param_1_00 + 0x58))();
  uStack_4._0_1_ = 1;
  format = 0x100;
  if (cStack_de != '\0') {
    format = 0x100100;
  }
  if (bStack_dd != 0) {
    format = format | 2;
  }
  if (cStack_de != '\0') {
    ppppuVar5 = appppuStack_30[0];
    if (uStack_1c < 8) {
      ppppuVar5 = appppuStack_30;
    }
    puStack_10c = (undefined *)0x95ed59;
    iVar3 = DrawTextW(pHStack_dc,(LPCWSTR)ppppuVar5,iStack_20,&tStack_d8,format | 0x400);
    if (iVar3 == 0) {
      puStack_c8 = auStack_118;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4._0_1_ = 2;
        puStack_10c = (undefined *)0x95edbd;
        FUN_008423d0();
        uStack_4._0_1_ = 3;
        GetLastError();
        FUN_00843700();
        GetLastError();
        puStack_10c = auStack_b8;
        uStack_110 = 0x95edf7;
        FUN_00847d90();
        uStack_4._0_1_ = 2;
        FUN_00842440();
        uStack_4._0_1_ = 1;
        FUN_0081b5bc();
      }
    }
  }
  cVar1 = FUN_0091b930();
  if (cVar1 == '\0') {
    color = GetSysColor(0x11);
    SetTextColor(pHStack_dc,color);
  }
  ppppuVar5 = appppuStack_30[0];
  if (uStack_1c < 8) {
    ppppuVar5 = appppuStack_30;
  }
  puStack_10c = (undefined *)0x95ee69;
  iVar3 = DrawTextW(pHStack_dc,(LPCWSTR)ppppuVar5,iStack_20,&tStack_d8,format);
  if (iVar3 == 0) {
    puStack_c8 = auStack_118;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4._0_1_ = 4;
      puStack_10c = (undefined *)0x95eece;
      FUN_008423d0();
      uStack_4._0_1_ = 5;
      GetLastError();
      FUN_00843700();
      GetLastError();
      puStack_10c = auStack_b8;
      uStack_110 = 0x95ef08;
      FUN_00847d90();
      uStack_4._0_1_ = 4;
      FUN_00842440();
      uStack_4._0_1_ = 1;
      FUN_0081b5bc();
    }
  }
  if (cStack_de != '\0') {
    tStack_d8.left = tStack_d8.left + -1;
    tStack_d8.right = tStack_d8.right + 1;
    BVar6 = DrawFocusRect(pHStack_dc,&tStack_d8);
    if (BVar6 == 0) {
      puStack_c8 = auStack_118;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4._0_1_ = 6;
        puStack_10c = (undefined *)0x95efbc;
        FUN_008423d0();
        uStack_4._0_1_ = 7;
        GetLastError();
        FUN_00843700();
        GetLastError();
        puStack_10c = auStack_98;
        uStack_110 = 0x95eff5;
        FUN_00847d90();
        uStack_4._0_1_ = 6;
        FUN_00842440();
        uStack_4._0_1_ = 1;
        FUN_0081b5bc();
      }
    }
  }
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  uStack_1c = 7;
  iStack_20 = 0;
  appppuStack_30[0] = (undefined4 ****)((uint)appppuStack_30[0] & 0xffff0000);
  uStack_4 = 0xffffffff;
  FUN_00457221();
LAB_0095f077:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_0095f0b0(void)

{
  return &PTR_u_wxCheckBox_0323b1dc;
}



undefined4 * FUN_0095f0c0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x19c);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0044ced6(uVar1);
    *puVar2 = wxCheckBox::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 * __fastcall FUN_0095f220(int *param_1)

{
  char cVar1;
  undefined *puVar2;
  undefined4 uVar3;
  uint *puVar4;
  undefined4 uVar5;
  uint uStack_5c;
  undefined local_4c [4];
  int *local_48;
  undefined local_44 [8];
  int *local_3c;
  undefined4 uStack_38;
  int *piStack_34;
  void *pvStack_30;
  void *pvStack_28;
  uint uStack_20;
  undefined4 *puStack_18;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdcbd0;
  local_c = ExceptionList;
  uStack_5c = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  FUN_0094bd30(param_1);
  local_4 = 0;
  FUN_0091e100(local_4c);
  local_4._0_1_ = 1;
  if (local_48 != (int *)0x0) {
    cVar1 = (**(code **)(*local_48 + 4))();
    if (cVar1 != '\0') goto LAB_0095f2ae;
  }
  puVar2 = (undefined *)FUN_008ff360(local_44,0x11);
  local_4._0_1_ = 2;
  if (local_4c != puVar2) {
    FUN_0083ea60(puVar2);
  }
  local_4._0_1_ = 1;
  FUN_00921450();
LAB_0095f2ae:
  (**(code **)(*piStack_34 + 0x50))(local_4c);
  uVar3 = (**(code **)(*param_1 + 0x338))(&piStack_34);
  uVar5 = 0;
  puVar4 = &uStack_5c;
  puVar2 = &stack0xffffffa8;
  local_c = (void *)CONCAT31(local_c._1_3_,3);
  (**(code **)(*local_3c + 0xa8))(uVar3,puVar2,puVar4,0,0);
  _free(pvStack_30);
  if ((int *)0x7 < piStack_34) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_48);
  }
  local_48 = (int *)((uint)local_48 & 0xffff0000);
  *puStack_18 = uVar5;
  piStack_34 = (int *)0x7;
  uStack_38 = 0;
  puStack_18[1] = (int)puVar4 + 2;
  uStack_20 = uStack_20 & 0xffffff00;
  FUN_00921450(uVar3,puVar2,(int)puVar4 + 2);
  uStack_20 = 0xffffffff;
  FUN_00457221();
  ExceptionList = pvStack_28;
  return puStack_18;
}



undefined4 __thiscall
FUN_0095f380(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  uint uVar2;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9388;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  cVar1 = FUN_00937250(param_1,param_2,param_4,param_5,param_6,&DAT_032c0398,param_7);
  if (cVar1 != '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    cVar1 = FUN_00937200(L"STATIC",local_30,param_4,param_5);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    if (cVar1 != '\0') {
      (**(code **)(*param_1_00 + 0x54))(param_3,uVar2);
      FUN_0091a950();
      FUN_0091b600(param_5);
      ExceptionList = local_c;
      return 1;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_0095f490(int *param_1,int *param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  undefined4 ***pppuVar4;
  undefined4 uVar5;
  undefined4 unaff_EBX;
  undefined auStack_54 [4];
  undefined4 ***apppuStack_50 [3];
  uint uStack_44;
  void *pvStack_40;
  uint uStack_3c;
  void *pvStack_38;
  uint uStack_34;
  undefined auStack_30 [12];
  undefined4 uStack_24;
  uint uStack_20;
  void *pvStack_1c;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdcc00;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  uVar2 = GetWindowLongW((HWND)param_1[0x4f],-0x10);
  if (((uint)param_1[0x38] >> 4 & 1) != 0) {
    iVar3 = FUN_00894a40(0,0,uVar1);
    if (iVar3 == 8) {
      FUN_00853fa0(10,1);
      pppuVar4 = apppuStack_50[0];
      if (uStack_3c < 8) {
        pppuVar4 = apppuStack_50;
      }
      iVar3 = FUN_00420f3f(pppuVar4,0,pvStack_40);
      if (iVar3 == -1) {
        iVar3 = -1;
      }
      _free(pvStack_38);
      if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(apppuStack_50[0]);
      }
      if (iVar3 == -1) {
        uVar2 = uVar2 | 0x4000;
        goto LAB_0095f55b;
      }
    }
  }
  uVar2 = uVar2 & 0xffffbfff;
LAB_0095f55b:
  SetWindowLongW((HWND)param_1[0x4f],-0x10,uVar2);
  if (param_1 + 0x59 != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  if ((uVar2 & 0x4000) == 0) {
    uVar5 = (**(code **)(*param_1 + 0x358))(auStack_30);
    puStack_8 = (undefined *)0x1;
    (**(code **)(*param_1 + 0x360))(uVar5);
    local_c = (void *)0xffffffff;
    _free(pvStack_1c);
    if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_34);
    }
    uStack_20 = 7;
    uStack_24 = 0;
    uStack_34 = uStack_34 & 0xffff0000;
  }
  else {
    uVar5 = (**(code **)(*param_1 + 0x58))(auStack_54);
    puStack_8 = (undefined *)0x0;
    (**(code **)(*param_1 + 0x360))(uVar5);
    local_c = (void *)0xffffffff;
    _free(pvStack_40);
    if (7 < uStack_44) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(unaff_EBX);
    }
  }
  if (((((*(byte *)(param_1 + 0x38) & 1) == 0) && (uVar1 = param_1[0x38], (uVar1 >> 2 & 1) == 0)) &&
      ((uVar1 >> 3 & 1) == 0)) && ((uVar1 >> 4 & 1) == 0)) {
    FUN_0091a950();
    (**(code **)(*param_1 + 0x288))(0xffffffff,0xffffffff,0xffffffff,0xffffffff,3);
  }
  ExceptionList = pvStack_14;
  return;
}



void __fastcall FUN_0095f6a0(int param_1)

{
  int *piVar1;
  int iVar2;
  int local_c [2];
  char cStack_4;
  
  piVar1 = (int *)FUN_00432231(local_c);
  iVar2 = *piVar1;
  if (*(uint *)(iVar2 + 0x18) < 8) {
    iVar2 = iVar2 + 4;
  }
  else {
    iVar2 = *(int *)(iVar2 + 4);
  }
  SetWindowTextW(*(HWND *)(param_1 + 0x13c),(LPCWSTR)(iVar2 + piVar1[1] * 2));
  if ((cStack_4 != '\0') && (local_c[0] != 0)) {
    _free(*(void **)(local_c[0] + 0x1c));
    if (7 < *(uint *)(local_c[0] + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(local_c[0] + 4));
    }
    *(undefined4 *)(local_c[0] + 0x18) = 7;
    *(undefined4 *)(local_c[0] + 0x14) = 0;
    *(undefined2 *)(local_c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_c[0]);
  }
  return;
}



undefined ** FUN_0095f730(void)

{
  return &PTR_u_wxStaticText_0323b214;
}



undefined4 * FUN_0095f740(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x194);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0044ced6(uVar1);
    *puVar2 = wxStaticText::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __fastcall FUN_0095f7a0(undefined4 *param_1)

{
  _free((void *)param_1[9]);
  if (7 < (uint)param_1[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  *param_1 = wxTextWrapper::vftable;
  return;
}



undefined4 * __thiscall FUN_0095f7e0(undefined4 *param_1_00,byte param_1)

{
  _free((void *)param_1_00[9]);
  if (7 < (uint)param_1_00[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[3]);
  }
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  *param_1_00 = wxTextWrapper::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0095f840(int *param_1)

{
  uint uVar1;
  int iVar2;
  bool bVar3;
  undefined auStack_58 [4];
  undefined4 uStack_54;
  uint uStack_40;
  void *pvStack_3c;
  undefined local_34 [4];
  undefined4 uStack_30;
  int iStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = -1;
  puStack_8 = &LAB_00bdcc30;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_58;
  ExceptionList = &local_c;
  uVar1 = param_1[0x38];
  if ((((uVar1 >> 2 & 1) != 0) || ((uVar1 >> 3 & 1) != 0)) || ((uVar1 >> 4 & 1) != 0)) {
    (**(code **)(*param_1 + 0x358))(local_34,DAT_0323f878 ^ (uint)&stack0xffffffa0);
    puStack_8 = (undefined *)0x0;
    iVar2 = (**(code **)(*param_1 + 0x35c))(&stack0xffffffa4);
    uStack_4._0_1_ = 1;
    if (iStack_20 == *(int *)(iVar2 + 0x14)) {
      iVar2 = FUN_00850760(iVar2);
      bVar3 = iVar2 == 0;
    }
    else {
      bVar3 = false;
    }
    uStack_4 = (uint)uStack_4._1_3_ << 8;
    _free(pvStack_3c);
    if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_54);
    }
    if (bVar3) {
      _free(pvStack_18);
    }
    else {
      (**(code **)(*param_1 + 0x360))(local_34);
      _free(pvStack_18);
    }
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0095f980(int *param_1_00,int *param_1,int param_2,int param_4)

{
  uint uVar1;
  code *pcVar2;
  int iVar3;
  uint uVar4;
  short **ppsVar5;
  int *piVar6;
  short **ppsVar7;
  short **ppsVar8;
  int iVar9;
  int iVar10;
  int local_60;
  short **ppsStack_5c;
  short **local_54;
  int local_50;
  short **local_4c;
  int *local_48;
  int *local_44;
  int iStack_40;
  int iStack_3c;
  short **ppsStack_38;
  undefined auStack_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdcc68;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_60;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  local_44 = param_1;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  local_48 = param_1_00;
  FUN_008478e0(&local_60);
  uVar1 = *(uint *)(param_2 + 0x18);
  ppsVar5 = (short **)(param_2 + 4);
  local_54 = ppsVar5;
  if (7 < uVar1) {
    local_54 = (short **)*ppsVar5;
  }
  if (local_54 != (short **)0x0) {
    ppsVar7 = ppsVar5;
    if (7 < uVar1) {
      ppsVar7 = (short **)*ppsVar5;
    }
    if (ppsVar7 <= local_54) {
      if (7 < uVar1) {
        ppsVar5 = (short **)*ppsVar5;
      }
      if (local_54 <= (short **)((int)ppsVar5 + *(int *)(param_2 + 0x14) * 2)) goto LAB_0095fa2b;
    }
  }
  FUN_00a3fb10(uVar4);
LAB_0095fa2b:
  local_50 = param_2;
  iVar10 = param_2;
  local_4c = local_54;
  do {
    if (*(char *)(param_1_00 + 1) != '\0') {
      pcVar2 = *(code **)(*param_1_00 + 8);
      *(undefined *)(param_1_00 + 1) = 0;
      (*pcVar2)();
      uVar1 = *(uint *)(param_2 + 0x18);
      ppsVar5 = (short **)(param_2 + 4);
      ppsVar7 = ppsVar5;
      if (7 < uVar1) {
        ppsVar7 = (short **)*ppsVar5;
      }
      iVar9 = *(int *)(param_2 + 0x14) * 2;
      ppsVar7 = (short **)((int)ppsVar7 + iVar9);
      if (ppsVar7 == (short **)0x0) {
LAB_0095fa94:
        FUN_00a3fb10(uVar4);
      }
      else {
        ppsVar8 = ppsVar5;
        if (7 < uVar1) {
          ppsVar8 = (short **)*ppsVar5;
        }
        if (ppsVar7 < ppsVar8) goto LAB_0095fa94;
        if (7 < uVar1) {
          ppsVar5 = (short **)*ppsVar5;
        }
        if ((short **)((int)ppsVar5 + iVar9) < ppsVar7) goto LAB_0095fa94;
      }
      local_60 = param_2;
      ppsStack_5c = ppsVar7;
      FUN_00432156();
      local_4c = local_54;
      local_50 = iVar10;
    }
    uVar1 = *(uint *)(param_2 + 0x18);
    if (uVar1 < 8) {
      iVar9 = param_2 + 4;
    }
    else {
      iVar9 = *(int *)(param_2 + 4);
    }
    iVar3 = *(int *)(param_2 + 0x14) * 2;
    ppsVar5 = (short **)(iVar9 + iVar3);
    if (ppsVar5 == (short **)0x0) {
LAB_0095faf5:
      FUN_00a3fb10(uVar4);
    }
    else {
      ppsVar7 = (short **)(param_2 + 4);
      ppsVar8 = ppsVar7;
      if (7 < uVar1) {
        ppsVar8 = (short **)*ppsVar7;
      }
      if (ppsVar5 < ppsVar8) goto LAB_0095faf5;
      if (7 < uVar1) {
        ppsVar7 = (short **)*ppsVar7;
      }
      if ((short **)((int)ppsVar7 + iVar3) < ppsVar5) goto LAB_0095faf5;
    }
    if ((iVar10 != -4) && ((iVar10 == 0 || (iVar10 != param_2)))) {
      FUN_00a3fb10();
    }
    ppsVar7 = local_54;
    if (local_54 == ppsVar5) {
LAB_0095fce4:
      piVar6 = local_48;
      (**(code **)(*local_48 + 4))(auStack_34);
      *(undefined *)(piVar6 + 1) = 1;
      uVar1 = *(uint *)(param_2 + 0x18);
      ppsVar5 = (short **)(param_2 + 4);
      ppsVar7 = ppsVar5;
      if (7 < uVar1) {
        ppsVar7 = (short **)*ppsVar5;
      }
      iVar9 = *(int *)(param_2 + 0x14) * 2;
      ppsVar7 = (short **)((int)ppsVar7 + iVar9);
      if (ppsVar7 == (short **)0x0) {
LAB_0095fd37:
        FUN_00a3fb10();
      }
      else {
        ppsVar8 = ppsVar5;
        if (7 < uVar1) {
          ppsVar8 = (short **)*ppsVar5;
        }
        if (ppsVar7 < ppsVar8) goto LAB_0095fd37;
        if (7 < uVar1) {
          ppsVar5 = (short **)*ppsVar5;
        }
        if ((short **)((int)ppsVar5 + iVar9) < ppsVar7) goto LAB_0095fd37;
      }
      if ((iVar10 != -4) && ((iVar10 == 0 || (iVar10 != param_2)))) {
        FUN_00a3fb10();
      }
      if (local_54 == ppsVar7) {
        _free(local_18);
        if (local_1c < 8) {
          ExceptionList = local_c;
          ___security_check_cookie_4();
          return;
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
    }
    else {
      if (iVar10 != -4) {
        if (iVar10 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar10 + 0x18) < 8) {
          iVar9 = iVar10 + 4;
        }
        else {
          iVar9 = *(int *)(iVar10 + 4);
        }
        if ((short **)(iVar9 + *(int *)(iVar10 + 0x14) * 2) <= ppsVar7) {
          FUN_00a3fb10();
        }
      }
      if (*(short *)ppsVar7 == 10) goto LAB_0095fce4;
      if (iVar10 != -4) {
        if (iVar10 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar10 + 0x18) < 8) {
          iVar9 = iVar10 + 4;
        }
        else {
          iVar9 = *(int *)(iVar10 + 4);
        }
        if ((short **)(iVar9 + *(int *)(iVar10 + 0x14) * 2) <= ppsVar7) {
          FUN_00a3fb10();
        }
      }
      if (*(short *)ppsVar7 == 0x20) {
        ppsStack_5c = ppsVar7;
        local_60 = iVar10;
      }
      if (iVar10 != -4) {
        if (iVar10 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar10 + 0x18) < 8) {
          iVar9 = iVar10 + 4;
        }
        else {
          iVar9 = *(int *)(iVar10 + 4);
        }
        if ((short **)(iVar9 + *(int *)(iVar10 + 0x14) * 2) <= ppsVar7) {
          FUN_00a3fb10();
        }
      }
      FID_conflict_append(1,*(short *)ppsVar7);
      if (-1 < param_4) {
        uVar1 = *(uint *)(param_2 + 0x18);
        ppsVar5 = (short **)(param_2 + 4);
        ppsVar7 = ppsVar5;
        if (7 < uVar1) {
          ppsVar7 = (short **)*ppsVar5;
        }
        iVar9 = *(int *)(param_2 + 0x14) * 2;
        ppsVar7 = (short **)((int)ppsVar7 + iVar9);
        if (ppsVar7 == (short **)0x0) {
LAB_0095fc0b:
          FUN_00a3fb10();
        }
        else {
          ppsVar8 = ppsVar5;
          if (7 < uVar1) {
            ppsVar8 = (short **)*ppsVar5;
          }
          if (ppsVar7 < ppsVar8) goto LAB_0095fc0b;
          if (7 < uVar1) {
            ppsVar5 = (short **)*ppsVar5;
          }
          if ((short **)((int)ppsVar5 + iVar9) < ppsVar7) goto LAB_0095fc0b;
        }
        if ((local_60 != -4) && ((local_60 == 0 || (local_60 != param_2)))) {
          FUN_00a3fb10();
        }
        if ((ppsStack_5c != ppsVar7) &&
           ((**(code **)(*local_44 + 600))(auStack_34,&iStack_40,0,0,0,0), param_4 < iStack_40)) {
          ppsStack_38 = local_54;
          iStack_3c = iVar10;
          piVar6 = (int *)FUN_004226c0(1);
          iVar10 = *piVar6;
          iVar9 = piVar6[1];
          if ((iVar10 != -4) && ((iVar10 == 0 || (iVar10 != local_50)))) {
            FUN_00a3fb10();
          }
          iVar10 = local_60;
          iVar9 = iVar9 - (int)local_4c;
          if ((local_60 != -4) && ((local_60 == 0 || (local_60 != local_50)))) {
            FUN_00a3fb10();
          }
          ppsVar5 = ppsStack_5c;
          FID_conflict_erase((int)ppsStack_5c - (int)local_4c >> 1,iVar9 >> 1);
          piVar6 = local_48;
          (**(code **)(*local_48 + 4))(auStack_34);
          *(undefined *)(piVar6 + 1) = 1;
          local_54 = ppsVar5;
        }
      }
    }
    if (iVar10 != -4) {
      if (iVar10 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar10 + 0x18) < 8) {
        iVar9 = iVar10 + 4;
      }
      else {
        iVar9 = *(int *)(iVar10 + 4);
      }
      if ((short **)(iVar9 + *(int *)(iVar10 + 0x14) * 2) <= local_54) {
        FUN_00a3fb10();
      }
    }
    local_54 = (short **)((int)local_54 + 2);
    param_1_00 = local_48;
  } while( true );
}



void __thiscall FUN_0095fde0(int param_1_00,int *param_1)

{
  undefined4 uVar1;
  uint local_30 [4];
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00432156(DAT_0323f878 ^ (uint)&stack0xffffffc4);
  uVar1 = (**(code **)(*param_1 + 0x58))(local_30);
  puStack_8 = (undefined *)0x0;
  FUN_0095f980(param_1,uVar1,param_1);
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  local_30[0] = local_30[0] & 0xffff0000;
  uStack_1c = 7;
  uStack_20 = 0;
  (**(code **)(*param_1 + 0x54))(param_1_00 + 8);
  ExceptionList = pvStack_14;
  return;
}



void FUN_0095fea0(void)

{
  FID_conflict_append(1,10);
  return;
}



void __thiscall FUN_0095feb0(undefined4 param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined **local_3c;
  undefined local_38;
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdcc98;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3c;
  uVar1 = DAT_0323f878 ^ (uint)&local_3c;
  ExceptionList = &local_c;
  local_38 = 0;
  local_3c = wxLabelWrapper::vftable;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  FUN_0095fde0(param_1_00,param_1);
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30,uVar1);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int __fastcall FUN_0095ff60(int *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  int unaff_EBX;
  int iVar3;
  undefined4 unaff_retaddr;
  int local_28;
  undefined local_24 [4];
  undefined local_20 [8];
  int *piStack_18;
  void *pvStack_14;
  undefined4 local_c;
  undefined *puStack_8;
  int iStack_4;
  
  iStack_4 = -1;
  puStack_8 = &LAB_00bdcce9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_28 = 0;
  (**(code **)(*param_1 + 0x278))(local_24,local_20,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  iVar3 = iStack_4;
  if ((unaff_EBX < 2) || (local_28 < 2)) {
    *(undefined4 *)(iStack_4 + 0x18) = 7;
    *(undefined4 *)(iStack_4 + 0x14) = 0;
    *(undefined2 *)(iStack_4 + 4) = 0;
    FID_conflict_assign(unaff_retaddr,0,0xffffffff);
    *(undefined4 *)(iVar3 + 0x1c) = 0;
    ExceptionList = pvStack_14;
    return iVar3;
  }
  FUN_0094bd30(param_1);
  local_c = (void *)0x1;
  uVar2 = FUN_0091e100(&local_28);
  local_c._0_1_ = 2;
  (**(code **)(*piStack_18 + 0x50))(uVar2);
  local_c = (void *)CONCAT31(local_c._1_3_,1);
  FUN_00921450();
  iVar3 = iStack_4;
  uVar1 = param_1[0x38];
  if ((uVar1 >> 2 & 1) == 0) {
    if ((uVar1 >> 3 & 1) == 0) {
      if ((uVar1 >> 4 & 1) == 0) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_008402e0("..\\..\\src\\common\\stattextcmn.cpp",0xff,"wxStaticTextBase::Ellipsize",
                       "Assert failure","should only be called if have one of wxST_ELLIPSIZE_XXX");
        }
        iVar3 = iStack_4;
        FUN_004325a0(unaff_retaddr);
        goto LAB_00960047;
      }
      uVar2 = 3;
    }
    else {
      uVar2 = 2;
    }
  }
  else {
    uVar2 = 1;
  }
  FUN_00938460(iStack_4,unaff_retaddr,local_20,uVar2,unaff_EBX,3);
LAB_00960047:
  local_c = (void *)((uint)local_c & 0xffffff00);
  FUN_00457221();
  ExceptionList = pvStack_14;
  return iVar3;
}



void FUN_009600e0(undefined4 param_1)

{
  FID_conflict_append(param_1,0,0xffffffff);
  return;
}



int __thiscall FUN_00960100(int param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be0da1;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0;
  FID_conflict_assign(param_1_00 + 0x164,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  uVar1 = *(uint *)(param_1_00 + 0xe0);
  local_4 = 0;
  if ((((uVar1 >> 2 & 1) != 0) || ((uVar1 >> 3 & 1) != 0)) || ((uVar1 >> 4 & 1) != 0)) {
    iVar3 = FUN_0095ff60(local_30,param_1);
    local_4 = 1;
    if (param_1 != iVar3) {
      FID_conflict_assign(iVar3,0,0xffffffff);
    }
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar2);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



undefined ** FUN_009601f0(void)

{
  return &PTR_u_wxTextCtrl_0323b24c;
}



undefined ** FUN_00960200(void)

{
  return &PTR_u_wxTextUrlEvent_0323b264;
}



undefined ** FUN_00960210(void)

{
  return &PTR_u_wxTextCtrlBase_0323b27c;
}



void __fastcall FUN_00960220(undefined4 *param_1)

{
  param_1[7] = 0;
  *param_1 = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[0x3f] = 0xc;
  param_1[0x40] = 0x5a;
  param_1[0x41] = 0x5a;
  *(undefined *)(param_1 + 0x43) = 0;
  param_1[0x34] = 0;
  param_1[0x42] = 0x46;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0xc] = 0;
  return;
}



undefined FUN_00960280(void)

{
  return 0;
}



undefined FUN_00960290(void)

{
  return 0;
}



int __thiscall FUN_009602a0(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined4 unaff_ESI;
  undefined4 unaff_retaddr;
  
  iVar1 = (**(code **)(*param_1_00 + 0x3c))(param_1,&param_1);
  if (iVar1 != -2) {
    (**(code **)(*param_1_00 + 0x30))(unaff_ESI,unaff_retaddr,param_1);
  }
  return iVar1;
}



undefined4 FUN_009602e0(void)

{
  return 0xfffffffe;
}



void FUN_009602f0(undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = DAT_03238d10;
  *param_1 = DAT_03238d0c;
  param_1[1] = uVar1;
  return;
}



void __thiscall FUN_00960310(uint *param_1_00,uint *param_1)

{
  if (param_1_00 + 0x35 != param_1) {
    FUN_0083ea60(param_1);
  }
  param_1_00[0x37] = param_1[2];
  *(undefined *)(param_1_00 + 0x38) = *(undefined *)(param_1 + 3);
  *(undefined *)((int)param_1_00 + 0xe1) = *(undefined *)((int)param_1 + 0xd);
  *(undefined *)((int)param_1_00 + 0xe2) = *(undefined *)((int)param_1 + 0xe);
  *(undefined *)((int)param_1_00 + 0xe3) = *(undefined *)((int)param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x39) = *(undefined *)(param_1 + 4);
  *param_1_00 = *param_1_00 | 1;
  return;
}



void __thiscall FUN_00960360(uint *param_1_00,uint *param_1)

{
  if (param_1_00 + 0x3a != param_1) {
    FUN_0083ea60(param_1);
  }
  param_1_00[0x3c] = param_1[2];
  *(undefined *)(param_1_00 + 0x3d) = *(undefined *)(param_1 + 3);
  *(undefined *)((int)param_1_00 + 0xf5) = *(undefined *)((int)param_1 + 0xd);
  *(undefined *)((int)param_1_00 + 0xf6) = *(undefined *)((int)param_1 + 0xe);
  *(undefined *)((int)param_1_00 + 0xf7) = *(undefined *)((int)param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x3e) = *(undefined *)(param_1 + 4);
  *param_1_00 = *param_1_00 | 2;
  return;
}



undefined4 __fastcall FUN_009603b0(byte *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*(int *)(param_1 + 0xd4) + 0x24))();
  if ((cVar1 != '\0') && ((*param_1 & 1) != 0)) {
    return 1;
  }
  return 0;
}



undefined4 __fastcall FUN_009603e0(uint *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(param_1[0x3a] + 0x24))();
  if ((cVar1 != '\0') && ((*param_1 >> 1 & 1) != 0)) {
    return 1;
  }
  return 0;
}



undefined4 __fastcall FUN_00960410(uint *param_1)

{
  if ((param_1[7] != 0) && ((*param_1 >> 7 & 1) != 0)) {
    return 1;
  }
  return 0;
}



undefined4 * __fastcall FUN_00960430(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea838;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032bd44c,0);
  *param_1 = wxTextUrlEvent::vftable;
  local_4 = 0;
  FUN_0092b130(DAT_032bd44c);
  param_1[0x29] = 0;
  param_1[0x2a] = 0;
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_009604b0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bea838;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  param_1[0x17] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4 = 0xffffffff;
  _free((void *)param_1[0x11]);
  if (7 < (uint)param_1[0x10]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xb]);
  }
  param_1[0x10] = 7;
  param_1[0xf] = 0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850(uVar1);
  ExceptionList = local_c;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x3b8);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00919aa0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0xac);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00960430(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_00960630(undefined4 param_1_00,byte param_1)

{
  FUN_009604b0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00960650(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdcd18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0048a2df(param_1);
  local_4 = 0;
  *param_1_00 = wxTextUrlEvent::vftable;
  FUN_0092b180(param_1 + 0x5c);
  param_1_00[0x29] = *(undefined4 *)(param_1 + 0xa4);
  param_1_00[0x2a] = *(undefined4 *)(param_1 + 0xa8);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_009606d0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xac);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00960650(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00960740(undefined4 *param_1_00,undefined4 *param_1)

{
  if (param_1_00 + 0x35 != param_1 + 0x35) {
    FUN_0083ea60(param_1 + 0x35);
  }
  param_1_00[0x37] = param_1[0x37];
  *(undefined *)(param_1_00 + 0x38) = *(undefined *)(param_1 + 0x38);
  *(undefined *)((int)param_1_00 + 0xe1) = *(undefined *)((int)param_1 + 0xe1);
  *(undefined *)((int)param_1_00 + 0xe2) = *(undefined *)((int)param_1 + 0xe2);
  *(undefined *)((int)param_1_00 + 0xe3) = *(undefined *)((int)param_1 + 0xe3);
  *(undefined *)(param_1_00 + 0x39) = *(undefined *)(param_1 + 0x39);
  if (param_1_00 + 0x3a != param_1 + 0x3a) {
    FUN_0083ea60(param_1 + 0x3a);
  }
  param_1_00[0x3c] = param_1[0x3c];
  *(undefined *)(param_1_00 + 0x3d) = *(undefined *)(param_1 + 0x3d);
  *(undefined *)((int)param_1_00 + 0xf5) = *(undefined *)((int)param_1 + 0xf5);
  *(undefined *)((int)param_1_00 + 0xf6) = *(undefined *)((int)param_1 + 0xf6);
  *(undefined *)((int)param_1_00 + 0xf7) = *(undefined *)((int)param_1 + 0xf7);
  *(undefined *)(param_1_00 + 0x3e) = *(undefined *)(param_1 + 0x3e);
  param_1_00[7] = param_1[7];
  param_1_00[4] = param_1[4];
  param_1_00[5] = param_1[5];
  param_1_00[6] = param_1[6];
  FUN_0086a9a0(param_1 + 1);
  *param_1_00 = *param_1;
  param_1_00[0x3f] = param_1[0x3f];
  param_1_00[0x40] = param_1[0x40];
  param_1_00[0x41] = param_1[0x41];
  *(undefined *)(param_1_00 + 0x43) = *(undefined *)(param_1 + 0x43);
  if (param_1_00 + 0x44 != param_1 + 0x44) {
    FID_conflict_assign(param_1 + 0x44,0,0xffffffff);
  }
  param_1_00[0x34] = param_1[0x34];
  param_1_00[0x42] = param_1[0x42];
  param_1_00[0xd] = param_1[0xd];
  param_1_00[0xe] = param_1[0xe];
  param_1_00[8] = param_1[8];
  param_1_00[9] = param_1[9];
  param_1_00[10] = param_1[10];
  if (param_1_00 + 0x4d != param_1 + 0x4d) {
    FID_conflict_assign(param_1 + 0x4d,0,0xffffffff);
  }
  if (param_1_00 + 0x56 != param_1 + 0x56) {
    FID_conflict_assign(param_1 + 0x56,0,0xffffffff);
  }
  if (param_1_00 + 0x5f != param_1 + 0x5f) {
    FID_conflict_assign(param_1 + 0x5f,0,0xffffffff);
  }
  param_1_00[0xb] = param_1[0xb];
  param_1_00[0xc] = param_1[0xc];
  if (param_1_00 + 0x10 != param_1 + 0x10) {
    FID_conflict_assign(param_1 + 0x10,0,0xffffffff);
  }
  if (param_1_00 + 0x19 != param_1 + 0x19) {
    FID_conflict_assign(param_1 + 0x19,0,0xffffffff);
  }
  if (param_1_00 + 0x22 != param_1 + 0x22) {
    FID_conflict_assign(param_1 + 0x22,0,0xffffffff);
  }
  param_1_00[0xf] = param_1[0xf];
  if (param_1_00 + 0x2b != param_1 + 0x2b) {
    FID_conflict_assign(param_1 + 0x2b,0,0xffffffff);
  }
  return;
}



void __thiscall FUN_00960940(uint *param_1_00,undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint local_50;
  undefined4 local_4c;
  uint local_48;
  undefined4 local_44;
  int local_3c;
  undefined4 *local_38;
  uint local_34;
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  uVar4 = local_4c;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdcd61;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_50;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  local_44 = 0;
  uVar5 = *param_1_00;
  local_38 = param_1;
  if ((uVar5 & 0x600007c) == 0) {
    *param_1 = wxObject::vftable;
    iVar2 = DAT_03238ce8;
    param_1[1] = DAT_03238ce8;
    if (iVar2 != 0) {
      piVar1 = (int *)(iVar2 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxFont::vftable;
  }
  else {
    local_48 = 10;
    if ((uVar5 >> 3 & 1) != 0) {
      local_48 = param_1_00[0x3f];
    }
    uVar6 = 0x5a;
    local_50 = 0x5a;
    if ((uVar5 >> 5 & 1) != 0) {
      local_50 = param_1_00[0x40];
    }
    if ((uVar5 >> 4 & 1) != 0) {
      uVar6 = param_1_00[0x41];
    }
    local_4c = local_4c & 0xffffff00;
    if ((uVar5 >> 6 & 1) != 0) {
      local_4c = CONCAT31(SUB43(uVar4,1),*(undefined *)(param_1_00 + 0x43));
    }
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 1;
    if (((uVar5 >> 2 & 1) != 0) && (&local_34 != param_1_00 + 0x44)) {
      FID_conflict_assign(param_1_00 + 0x44,0,0xffffffff);
    }
    uVar5 = 0;
    if ((*param_1_00 >> 0x19 & 1) != 0) {
      uVar5 = param_1_00[0x34];
    }
    uVar4 = 0x46;
    if ((*param_1_00 >> 0x1a & 1) != 0) {
      uVar4 = param_1_00[0x42];
    }
    FUN_00473c89(local_48,uVar4,local_50,uVar6,local_4c,&local_34,uVar5);
    *param_1 = wxObject::vftable;
    param_1[1] = local_3c;
    if (local_3c != 0) {
      *(int *)(local_3c + 4) = *(int *)(local_3c + 4) + 1;
    }
    *param_1 = wxFont::vftable;
    local_44 = 1;
    FUN_00921450(uVar3);
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined __thiscall FUN_00960b10(uint *param_1_00,int *param_1,uint param_3)

{
  char cVar1;
  undefined uVar2;
  uint uVar3;
  uint *puVar4;
  undefined auStack_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffc4);
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  if ((param_3 & 8) != 0) {
    uVar3 = (**(code **)(*param_1 + 0x2c))();
    param_1_00[0x3f] = uVar3;
  }
  if ((param_3 & 0x20) != 0) {
    uVar3 = (**(code **)(*param_1 + 0x38))();
    param_1_00[0x40] = uVar3;
  }
  if ((param_3 & 0x10) != 0) {
    uVar3 = (**(code **)(*param_1 + 0x3c))();
    param_1_00[0x41] = uVar3;
  }
  if ((param_3 & 0x40) != 0) {
    uVar2 = (**(code **)(*param_1 + 0x40))();
    *(undefined *)(param_1_00 + 0x43) = uVar2;
  }
  if ((param_3 & 4) != 0) {
    puVar4 = (uint *)(**(code **)(*param_1 + 0x44))(auStack_30);
    uStack_4 = 0;
    if (param_1_00 + 0x44 != puVar4) {
      FID_conflict_assign(puVar4,0,0xffffffff);
    }
    uStack_4 = 0xffffffff;
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if ((param_3 & 0x2000000) != 0) {
    uVar3 = (**(code **)(*param_1 + 0x48))();
    param_1_00[0x34] = uVar3;
  }
  if ((param_3 & 0x4000000) != 0) {
    uVar3 = FUN_0094a080();
    if (uVar3 == 0x4d) {
      param_3 = param_3 & 0xfbffffff;
    }
    else {
      param_1_00[0x42] = uVar3;
    }
  }
  *param_1_00 = *param_1_00 | param_3;
  ExceptionList = local_c;
  return 1;
}



void __thiscall FUN_00960c80(int *param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined auStack_98 [3];
  char local_95;
  undefined **local_94;
  undefined4 local_90;
  undefined4 local_8c;
  undefined4 local_88;
  undefined local_84;
  undefined local_83;
  undefined local_80 [4];
  undefined4 local_7c;
  uint local_68;
  void *local_64;
  undefined local_5c [4];
  uint local_58;
  undefined4 local_48;
  uint local_44;
  void *local_40;
  int local_38;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdcdb3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_98;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff5c;
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d23fe0);
  local_4 = 0;
  FUN_008a0880(param_1,local_80);
  _free(local_64);
  if (7 < local_68) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_7c);
  }
  if (local_38 != 0) {
    local_44 = 7;
    local_48 = 0;
    local_58 = local_58 & 0xffff0000;
    local_40 = (void *)0x0;
    local_94 = wxConvAuto::vftable;
    local_90 = 0;
    local_88 = 0xffffffff;
    local_84 = 0;
    local_83 = 0;
    local_8c = 0;
    local_4._0_1_ = 4;
    local_95 = FUN_008a0990(local_5c,&local_94);
    local_4 = CONCAT31(local_4._1_3_,3);
    FUN_00891400(uVar1);
    if (local_95 != '\0') {
      (**(code **)(*param_1_00 + 0x44))(local_5c);
      _free(local_40);
      if (7 < local_44) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_58);
      }
      local_44 = 7;
      local_48 = 0;
      local_58 = local_58 & 0xffff0000;
      local_4 = 0xffffffff;
      FUN_00882b50();
      goto LAB_00960e1e;
    }
    _free(local_40);
    if (7 < local_44) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_58);
    }
    local_44 = 7;
    local_48 = 0;
    local_58 = local_58 & 0xffff0000;
  }
  local_4 = 0xffffffff;
  FUN_00882b50();
LAB_00960e1e:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00960e50(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  bool bVar4;
  undefined auStack_88 [3];
  undefined local_85;
  undefined4 local_84;
  undefined local_80 [4];
  uint local_7c;
  undefined4 local_6c;
  uint local_68;
  void *local_64;
  undefined local_5c [4];
  uint uStack_58;
  undefined4 uStack_48;
  uint uStack_44;
  void *pvStack_40;
  int local_38;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdce1f;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_88;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff6c;
  ExceptionList = &local_c;
  bVar4 = false;
  local_84 = 0;
  FUN_004325b6(&DAT_026b7d28);
  local_4 = 0;
  FUN_008a0880(param_1,local_80);
  local_4._0_1_ = 2;
  _free(local_64);
  if (7 < local_68) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_7c);
  }
  local_68 = 7;
  local_6c = 0;
  local_7c = local_7c & 0xffff0000;
  if (local_38 != 0) {
    uVar3 = (**(code **)(*param_1_00 + 0x40))(local_5c,uVar2);
    bVar4 = true;
    local_4._0_1_ = 3;
    local_84 = 1;
    cVar1 = FUN_008a0150(uVar3,DAT_032bd50c);
    local_85 = 1;
    if (cVar1 != '\0') goto LAB_00960f3b;
  }
  local_85 = 0;
LAB_00960f3b:
  if (bVar4) {
    _free(pvStack_40);
    if (7 < uStack_44) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_58);
    }
    uStack_44 = 7;
    uStack_48 = 0;
    uStack_58 = uStack_58 & 0xffff0000;
  }
  local_4 = 0xffffffff;
  FUN_00882b50();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00960fc0(int *param_1_00,int *param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = FUN_00960e50(param_1,param_2);
  if (cVar1 != '\0') {
    if (param_1_00 + 1 != param_1) {
      FID_conflict_assign(param_1,0,0xffffffff);
    }
    (**(code **)(*param_1_00 + 0x18))();
    return 1;
  }
  return 0;
}



undefined4 __thiscall FUN_00961000(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 local_30 [5];
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  FUN_00853fa0(param_1,1);
  local_4 = 0;
  (**(code **)(*(int *)(param_1_00 + 0x204) + 0x10))(local_30,uVar1);
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  ExceptionList = pvStack_10;
  return 0;
}



void __thiscall FUN_00961090(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  bool bVar5;
  undefined auStack_78 [4];
  uint uStack_74;
  undefined4 uStack_64;
  uint uStack_60;
  void *pvStack_5c;
  undefined local_54 [4];
  undefined4 uStack_50;
  uint uStack_3c;
  void *pvStack_38;
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8488;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_c;
  FUN_0091c9b0(param_1);
  if (*(char *)(param_1 + 0x61) != '\0') {
    iVar2 = (**(code **)(*(int *)(param_1_00 + 0x1d0) + 0x40))(local_54,uVar1);
    uStack_4 = 0;
    iVar3 = FUN_00925890(auStack_78);
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    if (*(int *)(iVar3 + 0x14) == *(int *)(iVar2 + 0x14)) {
      iVar2 = FUN_00850760(iVar2);
      bVar5 = iVar2 == 0;
    }
    else {
      bVar5 = false;
    }
    _free(pvStack_5c);
    if (7 < uStack_60) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_74);
    }
    uStack_60 = 7;
    uStack_64 = 0;
    uStack_74 = uStack_74 & 0xffff0000;
    uStack_4 = 0xffffffff;
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    if (!bVar5) {
      uVar4 = FUN_00925890(auStack_30);
      uStack_4 = 2;
      (**(code **)(*(int *)(param_1_00 + 0x1d0) + 0x44))(uVar4);
      _free(pvStack_14);
      if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_2c);
      }
    }
  }
  ExceptionList = local_c;
  return;
}



uint * __thiscall
FUN_009611f0(uint *param_1_00,int param_1,int param_2,undefined4 param_3,uint param_4)

{
  uint *puVar1;
  uint *puVar2;
  uint uVar3;
  char cVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdcee1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  param_1_00[7] = param_4;
  param_1_00[0x16] = 7;
  param_1_00[0x15] = 0;
  *(undefined2 *)(param_1_00 + 0x11) = 0;
  param_1_00[0x17] = 0;
  param_1_00[0x1f] = 7;
  param_1_00[0x1e] = 0;
  *(undefined2 *)(param_1_00 + 0x1a) = 0;
  param_1_00[0x20] = 0;
  param_1_00[0x28] = 7;
  param_1_00[0x27] = 0;
  *(undefined2 *)(param_1_00 + 0x23) = 0;
  param_1_00[0x29] = 0;
  param_1_00[0x31] = 7;
  param_1_00[0x30] = 0;
  *(undefined2 *)(param_1_00 + 0x2c) = 0;
  param_1_00[0x32] = 0;
  puVar1 = param_1_00 + 0x35;
  *puVar1 = (uint)wxObject::vftable;
  uVar3 = *(uint *)(param_1 + 4);
  param_1_00[0x36] = uVar3;
  if (uVar3 != 0) {
    *(int *)(uVar3 + 4) = *(int *)(uVar3 + 4) + 1;
  }
  *puVar1 = (uint)wxColour::vftable;
  param_1_00[0x37] = *(uint *)(param_1 + 8);
  *(undefined *)(param_1_00 + 0x38) = *(undefined *)(param_1 + 0xc);
  *(undefined *)((int)param_1_00 + 0xe1) = *(undefined *)(param_1 + 0xd);
  *(undefined *)((int)param_1_00 + 0xe2) = *(undefined *)(param_1 + 0xe);
  *(undefined *)((int)param_1_00 + 0xe3) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x39) = *(undefined *)(param_1 + 0x10);
  puVar2 = param_1_00 + 0x3a;
  *puVar2 = (uint)wxObject::vftable;
  uVar3 = *(uint *)(param_2 + 4);
  param_1_00[0x3b] = uVar3;
  if (uVar3 != 0) {
    *(int *)(uVar3 + 4) = *(int *)(uVar3 + 4) + 1;
  }
  *puVar2 = (uint)wxColour::vftable;
  param_1_00[0x3c] = *(uint *)(param_2 + 8);
  *(undefined *)(param_1_00 + 0x3d) = *(undefined *)(param_2 + 0xc);
  *(undefined *)((int)param_1_00 + 0xf5) = *(undefined *)(param_2 + 0xd);
  *(undefined *)((int)param_1_00 + 0xf6) = *(undefined *)(param_2 + 0xe);
  *(undefined *)((int)param_1_00 + 0xf7) = *(undefined *)(param_2 + 0xf);
  *(undefined *)(param_1_00 + 0x3e) = *(undefined *)(param_2 + 0x10);
  param_1_00[0x4a] = 7;
  param_1_00[0x49] = 0;
  *(undefined2 *)(param_1_00 + 0x45) = 0;
  param_1_00[0x4b] = 0;
  param_1_00[0x53] = 7;
  param_1_00[0x52] = 0;
  *(undefined2 *)(param_1_00 + 0x4e) = 0;
  param_1_00[0x54] = 0;
  param_1_00[0x5c] = 7;
  param_1_00[0x5b] = 0;
  *(undefined2 *)(param_1_00 + 0x57) = 0;
  param_1_00[0x5d] = 0;
  param_1_00[0x65] = 7;
  param_1_00[100] = 0;
  *(undefined2 *)(param_1_00 + 0x60) = 0;
  param_1_00[0x66] = 0;
  local_4 = 10;
  FUN_00960220();
  cVar4 = (**(code **)(*puVar1 + 0x24))();
  if (cVar4 != '\0') {
    *param_1_00 = *param_1_00 | 1;
  }
  cVar4 = (**(code **)(*puVar2 + 0x24))();
  if (cVar4 != '\0') {
    *param_1_00 = *param_1_00 | 2;
  }
  if (param_4 != 0) {
    *param_1_00 = *param_1_00 | 0x80;
  }
  FUN_00960b10(param_3,0x600007c);
  ExceptionList = local_c;
  return param_1_00;
}



uint * FUN_009613f0(uint *param_1,uint *param_2,uint *param_3,int param_4)

{
  uint uVar1;
  uint *puVar2;
  undefined uVar3;
  char cVar4;
  uint uVar5;
  undefined ***pppuVar6;
  undefined4 uVar7;
  undefined **local_64;
  int *local_60;
  uint *local_5c;
  undefined **ppuStack_58;
  uint uStack_54;
  uint uStack_50;
  char cStack_4c;
  undefined uStack_4b;
  undefined uStack_4a;
  undefined uStack_49;
  undefined uStack_48;
  undefined **ppuStack_44;
  uint uStack_40;
  uint uStack_3c;
  char cStack_38;
  undefined uStack_37;
  undefined uStack_36;
  undefined uStack_35;
  undefined uStack_34;
  undefined local_30 [8];
  undefined4 local_28;
  undefined **appuStack_24 [5];
  uint *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdcf59;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  local_28 = 0;
  local_10 = param_1;
  local_5c = param_3;
  local_60 = (int *)0x0;
  local_64 = wxFont::vftable;
  local_4 = 1;
  if ((*param_2 & 0x600007c) == 0) {
LAB_009614a2:
    if ((*param_3 & 0x600007c) != 0) {
      pppuVar6 = (undefined ***)FUN_00960940(local_30);
      local_4._0_1_ = 3;
      if (&local_64 != pppuVar6) {
        FUN_0083ea60(pppuVar6);
      }
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_00921450();
    }
    if ((param_4 != 0) &&
       ((local_60 == (int *)0x0 || (cVar4 = (**(code **)(*local_60 + 4))(uVar5), cVar4 == '\0')))) {
      pppuVar6 = (undefined ***)FUN_0091e100(local_30);
      local_4._0_1_ = 4;
      if (&local_64 != pppuVar6) {
        FUN_0083ea60(pppuVar6);
      }
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_00921450();
    }
  }
  else {
    pppuVar6 = (undefined ***)FUN_00960940(local_30);
    local_4._0_1_ = 2;
    if (&local_64 != pppuVar6) {
      FUN_0083ea60(pppuVar6);
    }
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00921450();
    if ((local_60 == (int *)0x0) || (cVar4 = (**(code **)(*local_60 + 4))(), cVar4 == '\0'))
    goto LAB_009614a2;
  }
  uStack_54 = param_2[0x36];
  if (uStack_54 != 0) {
    *(int *)(uStack_54 + 4) = *(int *)(uStack_54 + 4) + 1;
  }
  uStack_50 = param_2[0x37];
  uStack_4b = *(undefined *)((int)param_2 + 0xe1);
  cStack_4c = *(char *)(param_2 + 0x38);
  uStack_4a = *(undefined *)((int)param_2 + 0xe2);
  uStack_49 = *(undefined *)((int)param_2 + 0xe3);
  uStack_48 = *(undefined *)(param_2 + 0x39);
  ppuStack_58 = wxColour::vftable;
  local_4._0_1_ = 5;
  if (cStack_4c == '\0') {
    if (&ppuStack_58 != (undefined ***)(param_3 + 0x35)) {
      FUN_0083ea60(param_3 + 0x35);
    }
    uStack_50 = param_3[0x37];
    uStack_4b = *(undefined *)((int)param_3 + 0xe1);
    cStack_4c = *(char *)(param_3 + 0x38);
    uStack_4a = *(undefined *)((int)param_3 + 0xe2);
    uStack_49 = *(undefined *)((int)param_3 + 0xe3);
    uStack_48 = *(undefined *)(param_3 + 0x39);
    param_3 = local_5c;
    if ((param_4 != 0) && (cStack_4c == '\0')) {
      uVar7 = FUN_0091df90(appuStack_24);
      local_4._0_1_ = 6;
      FUN_004722cb(uVar7);
      local_4._0_1_ = 5;
      appuStack_24[0] = wxObject::vftable;
      FUN_0083e850();
      param_3 = local_5c;
    }
  }
  uStack_40 = param_2[0x3b];
  if (uStack_40 != 0) {
    *(int *)(uStack_40 + 4) = *(int *)(uStack_40 + 4) + 1;
  }
  uStack_37 = *(undefined *)((int)param_2 + 0xf5);
  uStack_36 = *(undefined *)((int)param_2 + 0xf6);
  uStack_3c = param_2[0x3c];
  uStack_35 = *(undefined *)((int)param_2 + 0xf7);
  uStack_34 = *(undefined *)(param_2 + 0x3e);
  cStack_38 = *(char *)(param_2 + 0x3d);
  ppuStack_44 = wxColour::vftable;
  local_4._0_1_ = 7;
  uVar3 = (undefined)local_4;
  local_4._0_1_ = 7;
  if (cStack_38 == '\0') {
    if (&ppuStack_44 != (undefined ***)(param_3 + 0x3a)) {
      FUN_0083ea60(param_3 + 0x3a);
    }
    uStack_3c = param_3[0x3c];
    uStack_37 = *(undefined *)((int)param_3 + 0xf5);
    cStack_38 = *(char *)(param_3 + 0x3d);
    uStack_36 = *(undefined *)((int)param_3 + 0xf6);
    uStack_35 = *(undefined *)((int)param_3 + 0xf7);
    uStack_34 = *(undefined *)(param_3 + 0x3e);
    param_3 = local_5c;
    uVar3 = (undefined)local_4;
    if ((param_4 != 0) && (cStack_38 == '\0')) {
      uVar7 = FUN_0091de40(appuStack_24);
      local_4._0_1_ = 8;
      FUN_004722cb(uVar7);
      local_4._0_1_ = 7;
      appuStack_24[0] = wxObject::vftable;
      FUN_0083e850();
      param_3 = local_5c;
      uVar3 = (undefined)local_4;
    }
  }
  local_4._0_1_ = uVar3;
  FUN_009611f0(&ppuStack_58,&ppuStack_44,&local_64,0);
  uVar5 = param_2[7];
  local_28 = 1;
  if (((uVar5 != 0) && ((*param_2 >> 7 & 1) != 0)) ||
     ((uVar5 = param_3[7], uVar5 != 0 && ((*param_3 >> 7 & 1) != 0)))) {
    *param_1 = *param_1 | 0x80;
    param_1[7] = uVar5;
  }
  puVar2 = param_2;
  if (((*param_2 >> 10 & 1) != 0) || (puVar2 = param_3, (*param_3 >> 10 & 1) != 0)) {
    FUN_0086a9a0(puVar2 + 1);
    *param_1 = *param_1 | 0x400;
  }
  if ((*param_2 >> 8 & 1) == 0) {
    if ((*param_3 >> 8 & 1) != 0) {
      uVar5 = param_3[4];
      goto LAB_0096178e;
    }
  }
  else {
    uVar5 = param_2[4];
LAB_0096178e:
    uVar1 = param_2[5];
    *param_1 = *param_1 | 0x100;
    param_1[5] = uVar1;
    param_1[4] = uVar5;
  }
  if ((*param_2 >> 9 & 1) == 0) {
    if ((*param_3 >> 9 & 1) == 0) goto LAB_009617c5;
    param_1[6] = param_3[6];
  }
  else {
    param_1[6] = param_2[6];
  }
  *param_1 = *param_1 | 0x200;
LAB_009617c5:
  local_4._0_1_ = 5;
  ppuStack_44 = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 1;
  ppuStack_58 = wxObject::vftable;
  FUN_0083e850();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00921450();
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00961820(int param_1_00,int *param_1)

{
  undefined4 uVar1;
  undefined local_1ac [416];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdcf8b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1 == 0) {
    FUN_00960740(param_1);
  }
  else {
    uVar1 = FUN_009613f0(local_1ac,param_1,param_1_00 + 0x28,param_1_00 + -0x1d0,
                         DAT_0323f878 ^ (uint)&stack0xfffffe50);
    local_4 = 0;
    FUN_00960740(uVar1);
    local_4 = 0xffffffff;
    FUN_00483e4e();
  }
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_009618c0(int *param_1_00,int *param_1)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  undefined auStack_ec [12];
  undefined4 uStack_e0;
  undefined4 uStack_dc;
  char *pcStack_d8;
  int *piStack_d4;
  char *pcStack_d0;
  undefined local_bc [4];
  uint local_b8;
  undefined4 local_a8;
  uint local_a4;
  void *local_a0;
  undefined *local_98;
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5796;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pcStack_d0 = (char *)param_1;
  piStack_d4 = (int *)0x961902;
  cVar1 = FUN_00960c80();
  if (cVar1 == '\0') {
    local_98 = auStack_ec;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      pcStack_d0 = (char *)0x96195c;
      FUN_004325b6();
      local_4 = 0;
      pcStack_d0 = (char *)0x961973;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        pcStack_d0 = (char *)0x9619a1;
        FUN_0084d360();
      }
      else {
        pcStack_d0 = local_bc;
        piStack_d4 = (int *)0x961995;
        FUN_0084f210();
      }
      pcStack_d0 = (char *)0x9619ae;
      FUN_008433c0();
      pcStack_d0 = "wxTextCtrlBase::DoLoadFile";
      piStack_d4 = (int *)0x355;
      pcStack_d8 = "..\\..\\src\\common\\textcmn.cpp";
      uStack_dc = 1;
      local_4._0_1_ = 2;
      uStack_e0 = 0x9619d8;
      uVar3 = FUN_008423d0();
      local_4._0_1_ = 3;
      FUN_008854f0();
      piStack_d4 = (int *)0x9619f2;
      pcStack_d0 = (char *)uVar3;
      FUN_0083fe90();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      pcStack_d0 = (char *)0x961a21;
      _free(local_a0);
      if (7 < local_a4) {
                    // WARNING: Subroutine does not return
        pcStack_d0 = &UNK_00961a39;
        FUN_00a3f6a1();
      }
      local_a4 = 7;
      local_a8 = 0;
      local_b8 = local_b8 & 0xffff0000;
      pcStack_d0 = (char *)0x961a59;
      _free(local_64);
      if (7 < local_68) {
                    // WARNING: Subroutine does not return
        pcStack_d0 = &UNK_00961a6c;
        FUN_00a3f6a1();
      }
    }
    uVar3 = 0;
  }
  else {
    (**(code **)(*param_1_00 + 0x18))();
    if (param_1_00 + 1 != param_1) {
      pcStack_d0 = (char *)0x0;
      piStack_d4 = param_1;
      pcStack_d8 = (char *)0x961920;
      FID_conflict_assign();
    }
    uVar3 = 1;
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined ** FUN_00961a90(void)

{
  return &PTR_u_wxRichEditModule_0323b298;
}



int ** __thiscall FUN_00961aa0(int **param_1_00,int *param_1)

{
  *param_1_00 = param_1;
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1 != -1)) && (*param_1 != -2)) {
    FUN_00840480("..\\..\\src\\msw\\textctrl.cpp",0x96,"UpdatesCountFilter::UpdatesCountFilter",
                 "m_count == -1 || m_count == -2",L"wrong initial m_updatesCount value");
  }
  if (**param_1_00 != -2) {
    **param_1_00 = 0;
  }
  return param_1_00;
}



void __fastcall FUN_00961b00(undefined4 *param_1)

{
  *(undefined4 *)*param_1 = 0xffffffff;
  return;
}



undefined ** FUN_00961b10(void)

{
  return &PTR_PTR_00d5f034;
}



undefined * FUN_00961b20(void)

{
  return &DAT_032c1074;
}



void __fastcall FUN_00961b30(int param_1)

{
  *(undefined4 *)(param_1 + 0x3a8) = 0;
  *(undefined4 *)(param_1 + 0x3b0) = 0;
  *(undefined4 *)(param_1 + 0x3ac) = 0xffffffff;
  *(undefined *)(param_1 + 0x3b4) = 1;
  return;
}



void __fastcall FUN_00961be0(int *param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = (**(code **)(*param_1 + 0x5c))();
  iVar2 = (**(code **)(*param_1 + 0x58))();
  if (iVar2 != iVar1) {
    (**(code **)(*param_1 + 0x50))(iVar1);
  }
  return;
}



undefined __thiscall FUN_00961ce0(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  cVar1 = FUN_00961820(param_1);
  if (cVar1 == '\0') {
    return 0;
  }
  cVar1 = (**(code **)(param_1_00[0x72] + 0x70))();
  if (cVar1 != '\0') {
    uVar2 = (**(code **)(param_1_00[0x72] + 0x5c))();
    (**(code **)(*param_1_00 + 0x1c))(uVar2,uVar2,param_1_00 + 10);
  }
  return 1;
}



void FUN_00961d30(void)

{
  HMODULE hLibModule;
  uint uVar1;
  
  uVar1 = 0;
  do {
    hLibModule = *(HMODULE *)((int)&DAT_032c1068 + uVar1);
    if ((hLibModule != (HMODULE)0x0) && (hLibModule != (HMODULE)0xffffffff)) {
      FreeLibrary(hLibModule);
      *(undefined4 *)((int)&DAT_032c1068 + uVar1) = 0;
    }
    uVar1 = uVar1 + 4;
  } while (uVar1 < 0xc);
  return;
}



undefined4 FUN_00961d70(int param_1)

{
  HMODULE pHVar1;
  
  if ((&DAT_032c1068)[param_1] == -1) {
    return 0;
  }
  if ((&DAT_032c1068)[param_1] == 0) {
    pHVar1 = LoadLibraryW((LPCWSTR)(&PTR_u_riched32_00d5f0e8)[param_1]);
    (&DAT_032c1068)[param_1] = pHVar1;
    if (pHVar1 == (HMODULE)0x0) {
      (&DAT_032c1068)[param_1] = (HMODULE)0xffffffff;
      return 0;
    }
  }
  return 1;
}



bool __fastcall FUN_00961dd0(int param_1)

{
  int iVar1;
  
  if ((*(uint *)(param_1 + 0xe0) >> 5 & 1) != 0) {
    iVar1 = (**(code **)(*(int *)(param_1 + 0x1d0) + 0xc))();
    if (iVar1 != 1) {
      return false;
    }
  }
  iVar1 = (**(code **)(*(int *)(param_1 + 0x398) + 0x5c))();
  return iVar1 < 1;
}



void __thiscall FUN_00961e20(int param_1_00,undefined4 param_1)

{
  FUN_00945e70(param_1);
  if (((*(int *)(param_1_00 + -0x260) == 0) && ((*(uint *)(param_1_00 + -0x2b8) >> 5 & 1) != 0)) &&
     (1 < *(int *)(param_1_00 + 0x10))) {
    SendMessageW(*(HWND *)(param_1_00 + -0x25c),0x115,7,0);
  }
  return;
}



undefined4 __fastcall FUN_00961e70(int param_1)

{
  undefined4 uVar1;
  undefined4 local_8;
  undefined4 local_4;
  
  if (*(int *)(param_1 + 0x10) != 0) {
    local_8 = 0;
    local_4 = 0;
    SendMessageW(*(HWND *)(param_1 + -0x25c),0x434,0,(LPARAM)&local_8);
    return local_8;
  }
  uVar1 = FUN_00940fe0();
  return uVar1;
}



void __thiscall FUN_00961eb0(int param_1,undefined4 *param_2,undefined4 *param_3)

{
  undefined4 local_8;
  undefined4 uStack_4;
  
  if (*(int *)(param_1 + 0x10) != 0) {
    SendMessageW(*(HWND *)(param_1 + -0x25c),0x434,0,(LPARAM)&local_8);
    *param_2 = local_8;
    *param_3 = uStack_4;
    return;
  }
  FUN_00941050();
  return;
}



void __thiscall FUN_00961f00(int param_1_00,int param_1,int param_2,uint param_3)

{
  HWND hWnd;
  LONG LVar1;
  LONG dwNewLong;
  int local_8;
  int local_4;
  
  hWnd = *(HWND *)(param_1_00 + -0x25c);
  if (*(int *)(param_1_00 + 0x10) == 0) {
    FUN_00941020(param_1,param_2,param_3);
  }
  else {
    if ((param_1 == -1) && (param_2 == -1)) {
      param_1 = 0;
    }
    local_4 = param_2;
    local_8 = param_1;
    SendMessageW(hWnd,0x437,0,(LPARAM)&local_8);
  }
  if (((param_3 & 1) != 0) && (*(int *)(param_1_00 + -0x260) == 0)) {
    dwNewLong = 0;
    if ((1 < *(int *)(param_1_00 + 0x10)) && ((*(uint *)(param_1_00 + -0x2b8) >> 0xd & 1) == 0)) {
      dwNewLong = GetWindowLongW(*(HWND *)(param_1_00 + -0x25c),-0x10);
      SendMessageW(*(HWND *)(param_1_00 + -0x25c),0x44d,2,0x100);
    }
    SendMessageW(hWnd,0xb7,0,0);
    if ((1 < *(int *)(param_1_00 + 0x10)) && ((*(uint *)(param_1_00 + -0x2b8) >> 0xd & 1) == 0)) {
      SendMessageW(*(HWND *)(param_1_00 + -0x25c),0x44d,3,-0x101);
      LVar1 = GetWindowLongW(*(HWND *)(param_1_00 + -0x25c),-0x10);
      if (dwNewLong != LVar1) {
        SetWindowLongW(*(HWND *)(param_1_00 + -0x25c),-0x10,dwNewLong);
      }
    }
  }
  return;
}



bool __fastcall FUN_00962020(int param_1)

{
  LRESULT LVar1;
  
  LVar1 = SendMessageW(*(HWND *)(param_1 + -0x94),0xb8,0,0);
  return LVar1 != 0;
}



void __fastcall FUN_00962040(int param_1)

{
  SendMessageW(*(HWND *)(param_1 + -0x94),0xb9,1,0);
  return;
}



void __fastcall FUN_00962060(int param_1)

{
  SendMessageW(*(HWND *)(param_1 + -0x94),0xb9,0,0);
  return;
}



void __fastcall FUN_00962080(int param_1)

{
  SendMessageW(*(HWND *)(param_1 + -0x94),0xba,0,0);
  return;
}



int __thiscall FUN_009620a0(int param_1_00,int param_1,WPARAM param_2)

{
  LRESULT LVar1;
  
  LVar1 = SendMessageW(*(HWND *)(param_1_00 + -0x94),0xbb,param_2,0);
  return LVar1 + param_1;
}



undefined4 __thiscall FUN_009620c0(int param_1_00,WPARAM param_1,int *param_2,WPARAM *param_3)

{
  HWND hWnd;
  WPARAM WVar1;
  LRESULT LVar2;
  UINT Msg;
  WPARAM lParam;
  
  hWnd = *(HWND *)(param_1_00 + -0x94);
  if (*(int *)(param_1_00 + 0x1d8) == 0) {
    lParam = 0;
    Msg = 0xc9;
    WVar1 = param_1;
  }
  else {
    Msg = 0x436;
    WVar1 = 0;
    lParam = param_1;
  }
  WVar1 = SendMessageW(hWnd,Msg,WVar1,lParam);
  if (WVar1 != 0xffffffff) {
    LVar2 = SendMessageW(hWnd,0xbb,WVar1,0);
    if (LVar2 != -1) {
      if (param_2 != (int *)0x0) {
        *param_2 = param_1 - LVar2;
      }
      if (param_3 != (WPARAM *)0x0) {
        *param_3 = WVar1;
      }
      return 1;
    }
  }
  return 0;
}



uint __thiscall FUN_00962140(int param_1_00,int *param_1,uint *param_3)

{
  int *lParam;
  uint wParam;
  int iVar1;
  uint uVar2;
  uint local_10;
  uint local_c;
  int local_8;
  int local_4;
  
  if (*(int *)(param_1_00 + 0x1d8) == 0) {
    lParam = (int *)CONCAT22(*(undefined2 *)(param_1 + 1),*(undefined2 *)param_1);
  }
  else {
    local_8 = *param_1;
    local_4 = param_1[1];
    lParam = &local_8;
  }
  wParam = SendMessageW(*(HWND *)(param_1_00 + -0x94),0xd7,0,(LPARAM)lParam);
  if (wParam != 0xffffffff) {
    if (*(int *)(param_1_00 + 0x1d8) == 0) {
      wParam = wParam & 0xffff;
      local_c = SendMessageW(*(HWND *)(param_1_00 + -0x94),0xd6,wParam,0);
      if (local_c == 0xffffffff) {
        local_c = 0;
        local_10 = 0;
      }
      else {
        local_10 = local_c & 0xffff;
        local_c = local_c >> 0x10;
      }
    }
    else {
      SendMessageW(*(HWND *)(param_1_00 + -0x94),0xd6,(WPARAM)&local_10,wParam);
    }
    iVar1 = (**(code **)(*(int *)(param_1_00 + -0x1d0) + 0x194))();
    if ((int)(iVar1 + local_c) < param_1[1]) {
      uVar2 = 1;
    }
    else {
      iVar1 = (**(code **)(*(int *)(param_1_00 + -0x1d0) + 0x198))();
      uVar2 = (*param_1 <= (int)(iVar1 + local_10)) - 1 & 2;
    }
    if (param_3 != (uint *)0x0) {
      *param_3 = wParam;
    }
    return uVar2;
  }
  return 0xfffffffe;
}



void __thiscall FUN_00962250(int param_1_00,WPARAM param_1)

{
  HWND hWnd;
  LRESULT LVar1;
  LRESULT LVar2;
  
  hWnd = *(HWND *)(param_1_00 + -0x94);
  LVar1 = SendMessageW(hWnd,0xce,0,0);
  LVar2 = SendMessageW(hWnd,0xc9,param_1,0);
  if (LVar2 - LVar1 != 0) {
    SendMessageW(hWnd,0xb6,0,LVar2 - LVar1);
  }
  return;
}



void __thiscall FUN_009622a0(int *param_1_00,undefined4 param_1)

{
  WPARAM wParam;
  
  wParam = (**(code **)(*param_1_00 + 0x2c))(0,param_1);
  SendMessageW((HWND)param_1_00[-0x25],0xc1,wParam,0);
  return;
}



void __thiscall FUN_009622d0(int param_1_00,LPARAM param_1)

{
  if (*(int *)(param_1_00 + 0x10) != 0) {
    if (param_1 == 0) {
      param_1 = 0x7fffffff;
    }
    SendMessageW(*(HWND *)(param_1_00 + -0x25c),0x435,0,param_1);
    return;
  }
  FUN_009410f0();
  return;
}



void __fastcall FUN_00962300(int param_1)

{
  if (1 < *(int *)(param_1 + 0x10)) {
    SendMessageW(*(HWND *)(param_1 + -0x25c),0x454,0,0);
    return;
  }
  FUN_00940f60();
  return;
}



uint __fastcall FUN_00962330(int param_1)

{
  LRESULT LVar1;
  uint uVar2;
  
  if (1 < *(int *)(param_1 + 0x10)) {
    LVar1 = SendMessageW(*(HWND *)(param_1 + -0x25c),0x455,0,0);
    return (uint)(LVar1 != 0);
  }
  uVar2 = FUN_00940fa0();
  return uVar2;
}



uint __fastcall FUN_009626a0(int param_1)

{
  undefined4 uVar1;
  uint uVar2;
  
  uVar2 = *(uint *)(param_1 + 0x3ac);
  switch(uVar2) {
  case 0:
    *(uint *)(param_1 + 0x3ac) = uVar2 + 1;
    break;
  case 0xfffffffe:
  case 1:
    return uVar2 & 0xffffff00;
  case 0xffffffff:
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\textctrl.cpp",0x7d8,"wxTextCtrl::SendUpdateEvent",
                   "Assert failure",L"unexpected wxTextCtrl::m_updatesCount value");
    }
  }
  uVar1 = (**(code **)(*(int *)(param_1 + 0x398) + 0x8c))();
  uVar2 = FUN_00946810(uVar1);
  return uVar2;
}



undefined4 __fastcall FUN_00962760(int param_1)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = SendMessageW(*(HWND *)(param_1 + 0x13c),0xd5,0,0);
  if (uVar1 < 0x2711) {
    return 0;
  }
  uVar2 = GetWindowTextLengthW(*(HWND *)(param_1 + 0x13c));
  if (uVar1 <= uVar2) {
    (**(code **)(*(int *)(param_1 + 0x398) + 0x78))(uVar2 + 0x8000);
  }
  return 1;
}



undefined4 __fastcall FUN_009627c0(int param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*(int *)(param_1 + 0x398) + 0x70))();
  if ((cVar1 == '\0') && ((*(uint *)(param_1 + 0xe0) >> 5 & 1) == 0)) {
    return 0;
  }
  return 1;
}



void __thiscall FUN_009627f0(int param_1,undefined4 *param_2)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  int local_1c;
  undefined local_18 [4];
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd69d8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  uVar2 = FUN_0091e100(local_14);
  local_4 = 0;
  FUN_0090d9c0(*(undefined4 *)(param_1 + 0x13c),local_18,&local_1c,uVar2,uVar1);
  local_4 = 0xffffffff;
  FUN_00921450();
  if ((*(byte *)(param_1 + 0xe0) & 0x20) != 0) {
    iVar3 = (**(code **)(*(int *)(param_1 + 0x1d0) + 0xc))();
    if (iVar3 < 10) {
      if (iVar3 < 3) {
        iVar3 = 2;
      }
    }
    else {
      iVar3 = 10;
    }
    local_1c = iVar3 * local_1c;
  }
  if ((*(uint *)(param_1 + 0xe0) >> 0x15 & 1) == 0) {
    local_1c = local_1c + 8;
  }
  *param_2 = 100;
  param_2[1] = local_1c;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009629f0(int param_1_00,undefined4 param_1)

{
  if (*(int *)(param_1_00 + 0x78) == DAT_0323b294) {
    RevokeDragDrop(*(HWND *)(param_1_00 + 0x13c));
    *(undefined4 *)(param_1_00 + 0x78) = 0;
  }
  FUN_0090f480(param_1);
  return;
}



void __thiscall FUN_00962a80(int param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_4c;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_60;
  cVar1 = FUN_0091d380(param_1);
  if (cVar1 == '\0') {
    ___security_check_cookie_4();
    return;
  }
  if (*(int *)(param_1_00 + 0x3a8) != 0) {
    _memset(&local_60,0,0x5c);
    local_60 = 0x5c;
    local_5c = 0x40000000;
    local_4c = FUN_0090e430(param_1);
    SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x444,4,(LPARAM)&local_60);
  }
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00962b20(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxDropFilesEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void __thiscall FUN_00962b70(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxContextMenuEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



undefined4 * FUN_00962bc0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxRichEditModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __fastcall FUN_00962c20(int param_1)

{
  SetWindowTextW(*(HWND *)(param_1 + -0x25c),(LPCWSTR)PTR_DAT_03236318);
  if (((*(uint *)(param_1 + -0x2b8) >> 5 & 1) != 0) && (*(int *)(param_1 + 0x10) == 0)) {
    FUN_009626a0();
    return;
  }
  return;
}



int __fastcall FUN_00962c60(int param_1)

{
  int iVar1;
  WPARAM wParam;
  LRESULT LVar2;
  
  if ((*(uint *)(param_1 + -0x2b8) >> 5 & 1) != 0) {
    iVar1 = (**(code **)(*(int *)(param_1 + -0x1c8) + 0xc))();
    wParam = (**(code **)(*(int *)(param_1 + -0x1c8) + 0x2c))(0,iVar1 + -1);
    LVar2 = SendMessageW(*(HWND *)(param_1 + -0x25c),0xc1,wParam,0);
    return LVar2 + wParam;
  }
  iVar1 = FUN_00941000();
  return iVar1;
}



undefined4 FUN_00962cc0(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = FUN_009618c0(param_1,param_2);
  if (cVar1 != '\0') {
    FUN_00962760();
    return 1;
  }
  return 0;
}



void __thiscall FUN_00962cf0(int param_1_00,int param_1,uint *param_2)

{
  short *psVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  uint uVar6;
  undefined auStack_1d8 [3];
  char cStack_1d5;
  int local_1d4;
  int local_1d0;
  undefined auStack_1cc [4];
  int *piStack_1c8;
  int *local_1c4;
  uint uStack_1c0;
  undefined **ppuStack_1bc;
  int aiStack_19c [6];
  short sStack_184;
  short sStack_182;
  uint auStack_180 [40];
  undefined4 uStack_e0;
  undefined4 uStack_dc;
  undefined4 uStack_d8;
  undefined4 uStack_d4;
  int iStack_d0;
  byte bStack_cc;
  byte bStack_cb;
  byte bStack_ca;
  undefined uStack_c9;
  undefined uStack_c7;
  undefined uStack_c6;
  undefined uStack_c5;
  short asStack_c4 [32];
  int local_84 [2];
  byte bStack_7c;
  undefined4 uStack_78;
  undefined4 uStack_70;
  undefined uStack_6b;
  short asStack_6a [35];
  undefined4 uStack_24;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdcfdc;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_1d8;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xfffffe18;
  ExceptionList = &local_c;
  iVar4 = *(int *)(param_1_00 + 0x1d8);
  if (iVar4 != 0) {
    _memset(local_84,0,0x74);
    local_84[0] = (-(uint)(iVar4 != 1) & 0x18) + 0x5c;
    local_1c4 = (int *)(param_1_00 + 0x1c8);
    (**(code **)(*(int *)(param_1_00 + 0x1c8) + 0x68))(&local_1d0,&local_1d4,uVar3);
    if ((param_1 == local_1d0) && (param_1 == local_1d4)) {
      cStack_1d5 = '\0';
    }
    else {
      cStack_1d5 = '\x01';
      (**(code **)(*(int *)(param_1_00 + 0x1c8) + 0xa8))(param_1,param_1 + 1,0);
    }
    SendMessageW(*(HWND *)(param_1_00 + -0x94),0x43a,1,(LPARAM)local_84);
    uStack_e0 = uStack_78;
    uStack_dc = 0;
    uStack_c9 = 0;
    uStack_c7 = 0;
    uStack_d8 = 0;
    iVar4 = 0;
    do {
      psVar1 = (short *)((int)asStack_6a + iVar4);
      *(short *)((int)asStack_c4 + iVar4) = *psVar1;
      iVar4 = iVar4 + 2;
    } while (*psVar1 != 0);
    bStack_cc = bStack_7c >> 1 & 1;
    uStack_c5 = uStack_6b;
    bStack_ca = bStack_7c >> 3 & 1;
    bStack_cb = bStack_7c >> 2 & 1;
    iStack_d0 = (-(uint)((bStack_7c & 1) != 0) & 300) + 400;
    uStack_d4 = 0;
    uStack_c6 = 0;
    FUN_009846e0(auStack_1cc,&uStack_e0);
    uStack_4 = 0;
    if ((piStack_1c8 != (int *)0x0) && (cVar2 = (**(code **)(*piStack_1c8 + 4))(), cVar2 != '\0')) {
      FUN_00960b10(auStack_1cc,0x600007c);
    }
    uVar5 = FUN_0044cbe4(uStack_70);
    uStack_4._0_1_ = 1;
    FUN_00960310(uVar5);
    uStack_4._0_1_ = 0;
    ppuStack_1bc = wxObject::vftable;
    FUN_0083e850();
    if (*(int *)(param_1_00 + 0x1d8) != 1) {
      uVar5 = FUN_0044cbe4(uStack_24);
      uStack_4._0_1_ = 2;
      FUN_00960360(uVar5);
      uStack_4._0_1_ = 0;
      ppuStack_1bc = wxObject::vftable;
      FUN_0083e850();
    }
    _memset(aiStack_19c,0,0xbc);
    aiStack_19c[0] = (-(uint)(*(int *)(param_1_00 + 0x1d8) != 1) & 0x20) + 0x9c;
    SendMessageW(*(HWND *)(param_1_00 + -0x94),0x43d,0,(LPARAM)aiStack_19c);
    uVar3 = FUN_00a49750();
    uVar6 = FUN_00a49750();
    param_2[4] = uVar6;
    param_2[5] = uVar3;
    uVar3 = FUN_00a49750();
    *param_2 = *param_2 | 0x300;
    param_2[6] = uVar3;
    if (sStack_184 == 3) {
      param_2[7] = 2;
    }
    else if (sStack_184 == 2) {
      param_2[7] = 3;
    }
    else if (sStack_184 == 4) {
      param_2[7] = 4;
    }
    else {
      param_2[7] = 1;
    }
    *param_2 = *param_2 | 0x80;
    FUN_0086a600();
    uVar3 = 0;
    uStack_4 = CONCAT31(uStack_4._1_3_,3);
    if (sStack_182 != 0) {
      do {
        uStack_1c0 = auStack_180[uVar3] & 0xffff;
        uVar5 = FUN_00a49750();
        FUN_0086a400(uVar5,1);
        uVar3 = uVar3 + 1;
      } while (uVar3 < (uint)(int)sStack_182);
    }
    if (cStack_1d5 != '\0') {
      (**(code **)(*local_1c4 + 0xa8))(local_1d0,local_1d4,0);
    }
    uStack_4 = uStack_4 & 0xffffff00;
    FUN_0086aa30();
    uStack_4 = 0xffffffff;
    FUN_00921450();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * FUN_009630e0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxDropFilesEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_00963150(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxContextMenuEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * __thiscall
FUN_009631c0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea838;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032c1060,param_1);
  local_4 = 0;
  *param_1_00 = wxTextUrlEvent::vftable;
  FUN_0092b180(param_2);
  param_1_00[0x29] = param_3;
  param_1_00[0x2a] = param_4;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00963240(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd7418;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxTextCtrl::vftable;
  param_1[0x65] = wxTextCtrl::vftable;
  param_1[0x74] = wxTextCtrl::vftable;
  param_1[0xe6] = wxTextCtrl::vftable;
  local_4 = 0;
  if (param_1[0x1e] == DAT_0323b294) {
    param_1[0x1e] = 0;
  }
  if ((int *)param_1[0xec] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0xec] + 4))(1,uVar1);
  }
  local_4 = 0xffffffff;
  FUN_00483f1e();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009632e0(int param_1_00,undefined4 param_1)

{
  (**(code **)(*(int *)(param_1_00 + 0x1c8) + 0x18))(param_1,0,0xffffffff);
  return param_1;
}



bool __fastcall FUN_00963310(int *param_1)

{
  int iVar1;
  int iVar2;
  undefined4 unaff_EBX;
  int unaff_retaddr;
  BYTE bVk;
  undefined4 auStack_24 [4];
  uint uStack_14;
  void *pvStack_10;
  void *pvStack_c;
  
  (**(code **)(*param_1 + 0x100))();
  iVar1 = (**(code **)(param_1[0x74] + 0x40))(auStack_24);
  iVar1 = *(int *)(iVar1 + 0x14);
  _free(pvStack_c);
  if ((void *)0x7 < pvStack_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(auStack_24[0]);
  }
  bVk = (BYTE)*(undefined4 *)(unaff_retaddr + 0x3c);
  keybd_event(bVk,'\0',0,0);
  keybd_event(bVk,'\0',2,0);
  iVar2 = (**(code **)(param_1[0x74] + 0x40))(&stack0xffffffd8);
  iVar2 = *(int *)(iVar2 + 0x14);
  _free(pvStack_10);
  if (7 < uStack_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBX);
  }
  return iVar2 != iVar1;
}



void __thiscall FUN_009633c0(int param_1_00,int **param_1,WPARAM param_2)

{
  uint uVar1;
  LRESULT LVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  int **local_44;
  int *piStack_40;
  ushort auStack_3c [2];
  int iStack_38;
  undefined auStack_34 [36];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9b78;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_44;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  local_44 = param_1;
  if (*(int *)(param_1_00 + 0x1d8) != 0) {
    LVar2 = SendMessageW(*(HWND *)(param_1_00 + -0x94),0xd6,(WPARAM)&local_44,param_2);
    if (LVar2 == -1) {
      *param_1 = DAT_03238d0c;
      param_1[1] = DAT_03238d10;
    }
    else {
      param_1[1] = piStack_40;
      *param_1 = (int *)local_44;
    }
    goto LAB_0096359c;
  }
  uVar3 = SendMessageW(*(HWND *)(param_1_00 + -0x94),0xd6,param_2,0);
  if (uVar3 == 0xffffffff) {
    iVar4 = (**(code **)(*(int *)(param_1_00 + 0x1c8) + 0x5c))(uVar1);
    if (iVar4 <= (int)param_2) {
      if (param_2 == 0) {
        uVar1 = SendMessageW(*(HWND *)(param_1_00 + -0x94),0xd4,0,0);
        *local_44 = (int *)((uVar1 & 0xffff) + 1);
        local_44[1] = (int *)0x1;
        goto LAB_0096359c;
      }
      uVar3 = SendMessageW(*(HWND *)(param_1_00 + -0x94),0xd6,param_2 - 1,0);
      if (uVar3 != 0xffffffff) {
        (**(code **)(*(int *)(param_1_00 + 0x1c8) + 0x18))(auStack_34,param_2 - 1,param_2);
        uStack_4 = 0;
        FUN_0091af50(auStack_3c,auStack_34);
        iVar4 = FUN_008507a0(&DAT_00d23e68);
        if (iVar4 == 0) {
          uVar1 = SendMessageW(*(HWND *)(param_1_00 + -0x94),0xd6,0,0);
          if (uVar1 == 0xffffffff) {
            *local_44 = DAT_03238d0c;
            local_44[1] = DAT_03238d10;
            FUN_0040159c();
            goto LAB_0096359c;
          }
          uVar3 = ((uVar3 >> 0x10) + iStack_38) * 0x10000 | uVar1 & 0xffff;
        }
        else {
          uVar3 = uVar3 + auStack_3c[0];
        }
        FUN_0040159c();
        goto LAB_0096358a;
      }
    }
    *local_44 = DAT_03238d0c;
    piVar5 = DAT_03238d10;
  }
  else {
LAB_0096358a:
    *local_44 = (int *)(int)(short)uVar3;
    piVar5 = (int *)(int)(short)(uVar3 >> 0x10);
  }
  local_44[1] = piVar5;
LAB_0096359c:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009635c0(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  uint local_30 [4];
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  uVar2 = FUN_0092c3e0(local_30);
  local_4 = 0;
  (**(code **)(*(int *)(param_1_00 + 0x1d0) + 0x44))(uVar2,uVar1);
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  uStack_1c = 7;
  uStack_20 = 0;
  local_30[0] = local_30[0] & 0xffff0000;
  thunk_FUN_0091c170(param_1);
  ExceptionList = pvStack_10;
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void __thiscall FUN_00963670(int param_1_00,undefined4 param_1,int param_2,uint *param_3)

{
  uint uVar1;
  undefined local_10c [4];
  HCURSOR local_108;
  undefined **local_104 [18];
  undefined local_bc [172];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd026;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_10c;
  ExceptionList = &local_c;
  if (*(int *)(param_2 + 8) == 0x700) {
    if (*(int *)(param_2 + 0xc) == 0x202) {
      FUN_009103d0(0x202,(int)*(short *)(param_2 + 0x14),(int)*(short *)(param_2 + 0x16),
                   *(undefined4 *)(param_2 + 0x10));
    }
  }
  else if (*(int *)(param_2 + 8) == 0x70b) {
    if (*(int *)(param_2 + 0xc) == 0x20) {
      FUN_008f7ad0(6);
      if (local_108 != (HCURSOR)0x0) {
        local_108 = (HCURSOR)local_108[5].unused;
      }
      SetCursor(local_108);
      *param_3 = 1;
      FUN_008f7630();
    }
    else if (*(int *)(param_2 + 0xc) - 0x200U < 7) {
      if ((_DAT_032c123c & 1) == 0) {
        _DAT_032c123c = _DAT_032c123c | 1;
        _DAT_032c1220 = DAT_032bfe20;
        _DAT_032c1224 = DAT_032bfe08;
        _DAT_032c1228 = DAT_032bfe0c;
        _DAT_032c122c = DAT_032bfe2c;
        _DAT_032c1230 = DAT_032bfe18;
        _DAT_032c1234 = DAT_032bfe1c;
        _DAT_032c1238 = DAT_032bfe34;
      }
      FUN_0092b130(*(undefined4 *)((int)&DAT_032c0a20 + *(int *)(param_2 + 0xc) * 4));
      local_4 = 0;
      FUN_009102c0(local_104,(int)*(short *)(param_2 + 0x14),(int)*(short *)(param_2 + 0x16),
                   *(undefined4 *)(param_2 + 0x10));
      FUN_009631c0(*(undefined4 *)(param_1_00 + 0x40),local_104,*(undefined4 *)(param_2 + 0x18),
                   *(undefined4 *)(param_2 + 0x1c));
      local_4._0_1_ = 1;
      FUN_00937340(local_bc);
      uVar1 = thunk_FUN_0091c170(local_bc);
      *param_3 = uVar1 & 0xff;
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_009604b0();
      local_4 = 0xffffffff;
      local_104[0] = wxObject::vftable;
      FUN_0083e850();
    }
  }
  else {
    FUN_00936930(param_1,param_2,param_3);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00963880(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined local_1b0 [416];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd06b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_1b0;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffe48;
  ExceptionList = &local_c;
  cVar1 = FUN_009372d0(param_1);
  if ((cVar1 != '\0') && (3 < *(int *)(param_1_00 + 0x3a8))) {
    FUN_00483c5b(uVar2);
    local_4 = 0;
    FUN_00960b10(param_1,0x600007c);
    (**(code **)(*(int *)(param_1_00 + 0x1d0) + 0x1c))(0xffffffff,0xffffffff,local_1b0);
    local_4 = 0xffffffff;
    FUN_00483e4e();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00963950(int param_1_00,int param_1,int param_2,int param_3)

{
  short sVar1;
  void *pvVar2;
  uint uVar3;
  int iVar4;
  undefined *puVar5;
  short *psVar6;
  int local_70;
  undefined4 local_6c;
  short **ppsStack_68;
  undefined local_64 [4];
  undefined4 local_60;
  uint local_4c;
  void *local_48;
  int iStack_40;
  int iStack_3c;
  short *psStack_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdd0c8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_70;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_c;
  local_6c = 0;
  local_70 = param_1;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  if ((param_2 < param_3) || (param_3 == -1)) {
    if (*(int *)(param_1_00 + 0x10) == 0) {
      puVar5 = (undefined *)FUN_009469f0(local_64);
      local_4._0_1_ = 2;
      if (local_34 != puVar5) {
        FID_conflict_assign(puVar5,0,0xffffffff);
      }
      local_4._0_1_ = 0;
      _free(local_48);
      if (7 < local_4c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_60);
      }
      if (param_2 < param_3) {
        puVar5 = (undefined *)FUN_00852560(local_64,param_2,param_3 - param_2);
        local_4._0_1_ = 3;
        if (local_34 != puVar5) {
          FID_conflict_assign(puVar5,0,0xffffffff);
        }
        local_4._0_1_ = 0;
        FUN_0040159c();
      }
      puVar5 = (undefined *)FUN_008a8810(local_64,local_34,1);
      local_4._0_1_ = 4;
      if (local_34 != puVar5) {
        FID_conflict_assign(puVar5,0,0xffffffff);
      }
      local_4 = (uint)local_4._1_3_ << 8;
      _free(local_48);
      if (7 < local_4c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_60);
      }
    }
    else {
      iVar4 = GetWindowTextLengthW(*(HWND *)(param_1_00 + -0x25c));
      if (param_2 < iVar4) {
        if (param_3 == -1) {
          param_3 = iVar4;
        }
        FUN_00852280(local_34,iVar4 + 1);
        psVar6 = *ppsStack_68;
        iStack_40 = param_2;
        iStack_3c = param_3;
        psStack_38 = psVar6;
        SendMessageW(*(HWND *)(param_1_00 + -0x25c),1099,0,(LPARAM)&iStack_40);
        if (1 < *(int *)(param_1_00 + 0x10)) {
          sVar1 = *psVar6;
          while (sVar1 != 0) {
            if (*psVar6 == 0xd) {
              *psVar6 = 10;
            }
            psVar6 = psVar6 + 1;
            sVar1 = *psVar6;
          }
        }
        FUN_00851bf0();
        param_1 = local_70;
        if (*(int *)(param_1_00 + 0x10) == 1) {
          puVar5 = (undefined *)FUN_008a8810(local_64,local_34,1);
          local_4._0_1_ = 1;
          if (local_34 != puVar5) {
            FID_conflict_assign(puVar5,0,0xffffffff);
          }
          local_4 = (uint)local_4._1_3_ << 8;
          _free(local_48);
          param_1 = local_70;
          if (7 < local_4c) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_60);
          }
        }
      }
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_18);
    pvVar2 = ExceptionList;
    ExceptionList = local_c;
  }
  else {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_18);
    pvVar2 = ExceptionList;
    ExceptionList = local_c;
  }
  local_c = ExceptionList;
  if (7 < local_1c) {
    ExceptionList = pvVar2;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30,uVar3);
  }
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00963c60(int param_1_00,undefined *param_1,uint param_2)

{
  undefined *puVar1;
  undefined4 ***lParam;
  undefined4 unaff_EBX;
  undefined4 unaff_EBP;
  int *local_60;
  undefined local_5c [4];
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 ***local_30 [4];
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdd108;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_60;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30[0] = (undefined4 ***)((uint)local_30[0] & 0xffff0000);
  local_18 = (void *)0x0;
  local_4 = 0;
  if ((*(byte *)(param_1_00 + 0xe0) & 0x20) == 0) {
    if (local_34 != param_1) {
      FID_conflict_assign(param_1,0,0xffffffff);
    }
  }
  else {
    puVar1 = (undefined *)FUN_008a8810(local_58,param_1,2,DAT_0323f878 ^ (uint)&stack0xffffff90);
    local_4._0_1_ = 1;
    if (local_34 != puVar1) {
      FID_conflict_assign(puVar1,0,0xffffffff);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
  }
  if ((*(int *)(param_1_00 + 0x3a8) != 0) && (*(int *)(param_1_00 + 0x1f8) != 0)) {
    (**(code **)(*(int *)(param_1_00 + 0x398) + 0x68))(&local_60,local_5c);
    (**(code **)(*(int *)(param_1_00 + 0x1d0) + 0x1c))(unaff_EBP,unaff_EBX,param_1_00 + 0x1f8);
  }
  if ((param_2 & 1) == 0) {
    *(undefined4 *)(param_1_00 + 0x3ac) = 0xfffffffe;
  }
  FUN_00961aa0(param_1_00 + 0x3ac);
  local_4 = CONCAT31(local_4._1_3_,2);
  lParam = local_30[0];
  if (local_1c < 8) {
    lParam = local_30;
  }
  SendMessageW(*(HWND *)(param_1_00 + 0x13c),(-(uint)((param_2 >> 1 & 1) != 0) & 0xb6) + 0xc,
               (uint)((param_2 >> 1 & 1) != 0),(LPARAM)lParam);
  if ((*local_60 != 1) && ((param_2 & 1) != 0)) {
    FUN_009626a0();
  }
  *local_60 = -1;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00963e30(int param_1_00,int param_1)

{
  char cVar1;
  undefined *puVar2;
  int iVar3;
  byte bVar4;
  uint local_b4 [4];
  undefined4 uStack_a4;
  uint uStack_a0;
  void *pvStack_9c;
  undefined local_90 [4];
  undefined4 uStack_8c;
  uint uStack_78;
  void *pvStack_74;
  undefined auStack_70 [4];
  undefined local_6c [36];
  undefined auStack_48 [56];
  uint local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bdd14e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_b4;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x34) == 9) {
    if ((*(byte *)(param_1_00 + 0xe0) & 0x40) != 0) {
      FUN_004325b6(&DAT_00d31a28);
      local_4 = 2;
      (**(code **)(*(int *)(param_1_00 + 0x398) + 0xc))(local_90);
      _free(pvStack_74);
      if (7 < uStack_78) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_8c);
      }
      goto LAB_00964009;
    }
    iVar3 = FUN_0091ac40(DAT_0323f878 ^ (uint)&stack0xffffff44);
    if (iVar3 == param_1_00) {
      bVar4 = (*(byte *)(param_1 + 0x28) & 2) == 0;
      if ((*(byte *)(param_1 + 0x28) & 1) != 0) {
        bVar4 = bVar4 | 2;
      }
      if ((*(int *)(param_1_00 + 0x44) != 0) &&
         (cVar1 = (**(code **)(**(int **)(param_1_00 + 0x44) + 0x240))(bVar4), cVar1 != '\0'))
      goto LAB_00964009;
    }
  }
  else if (*(int *)(param_1 + 0x34) == 0xd) {
    FUN_0092bd60(DAT_032c105c,*(undefined4 *)(param_1_00 + 0x40));
    local_4 = 0;
    FUN_00937340(local_6c);
    puVar2 = (undefined *)(**(code **)(*(int *)(param_1_00 + 0x1d0) + 0x40))(local_b4);
    uStack_8._0_1_ = 1;
    if (auStack_48 != puVar2) {
      FID_conflict_assign(puVar2,0,0xffffffff);
    }
    uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
    _free(pvStack_9c);
    if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_b4[0]);
    }
    local_b4[0] = local_b4[0] & 0xffff0000;
    uStack_a0 = 7;
    uStack_a4 = 0;
    cVar1 = FUN_0091c170(auStack_70);
    if ((cVar1 == '\0') || ((*(uint *)(param_1_00 + 0xe0) >> 5 & 1) != 0)) {
      uStack_8 = (undefined *)0xffffffff;
      FUN_00454a4e();
      *(undefined *)(param_1 + 0x24) = 1;
    }
    else {
      uStack_8 = (undefined *)0xffffffff;
      FUN_00454a4e();
    }
    goto LAB_00964009;
  }
  *(undefined *)(param_1 + 0x24) = 1;
LAB_00964009:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00964040(int param_1_00,int param_1)

{
  char cVar1;
  undefined *puVar2;
  undefined local_90 [32];
  undefined auStack_70 [4];
  undefined local_6c [36];
  undefined auStack_48 [56];
  uint local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bdd193;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_90;
  ExceptionList = &local_c;
  if (param_1 == 0x300) {
    FUN_009626a0(DAT_0323f878 ^ (uint)&stack0xffffff6c);
  }
  else if ((param_1 == 0x501) && (cVar1 = FUN_00962760(), cVar1 == '\0')) {
    FUN_0092bd60(DAT_032c1064,*(undefined4 *)(param_1_00 + 0x40));
    local_4 = 0;
    FUN_00937340(local_6c);
    puVar2 = (undefined *)(**(code **)(*(int *)(param_1_00 + 0x1d0) + 0x40))(local_90);
    uStack_8._0_1_ = 1;
    if (auStack_48 != puVar2) {
      FID_conflict_assign(puVar2,0,0xffffffff);
    }
    uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
    FUN_0040159c();
    thunk_FUN_0091c170(auStack_70);
    uStack_8 = (undefined *)0xffffffff;
    FUN_00454a4e();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00964170(int param_1_00,int param_1)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  void *local_e8;
  uint local_e4;
  void *pvStack_e0;
  void *pvStack_dc;
  void *pvStack_d8;
  void *pvStack_d4;
  void *pvStack_d0;
  void *pvStack_cc;
  uint uStack_c8;
  uint uStack_c4;
  uint local_c0;
  void *pvStack_bc;
  void *pvStack_b8;
  void *pvStack_b4;
  void *pvStack_b0;
  void *pvStack_ac;
  void *pvStack_a8;
  undefined4 uStack_a4;
  undefined4 uStack_a0;
  uint local_9c;
  void *pvStack_98;
  void *pvStack_94;
  void *pvStack_90;
  void *pvStack_8c;
  void *pvStack_88;
  void *pvStack_84;
  uint uStack_74;
  undefined auStack_6c [8];
  undefined4 uStack_64;
  uint uStack_60;
  void *pvStack_5c;
  uint uStack_50;
  undefined auStack_48 [8];
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  uint uStack_2c;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bdd2bc;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x3a8) == 0) {
    *(undefined *)(param_1 + 0x24) = 1;
  }
  else {
    if (*(int *)(param_1_00 + 0x3b0) == 0) {
      local_e8 = operator_new(0xb4);
      local_4 = 0;
      if (local_e8 == (void *)0x0) {
        uVar1 = 0;
      }
      else {
        uVar1 = FUN_004710ac(0);
      }
      *(undefined4 *)(param_1_00 + 0x3b0) = uVar1;
      local_4 = 0xffffffff;
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 1;
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 2;
      FUN_0043c211("&Undo");
      local_4 = CONCAT31(local_4._1_3_,3);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        uVar1 = FUN_0084d360(&local_e4);
      }
      else {
        uVar1 = FUN_0084f210(&local_e4,&local_c0);
      }
      iVar2 = **(int **)(param_1_00 + 0x3b0);
      uVar1 = FUN_0095b210(*(int **)(param_1_00 + 0x3b0),0x138f,uVar1,&local_9c,0,0);
      (**(code **)(iVar2 + 0x6c))(uVar1);
      _free(pvStack_cc);
      if ((void *)0x7 < pvStack_d0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_e4);
      }
      pvStack_d0 = (void *)0x7;
      pvStack_d4 = (void *)0x0;
      local_e4 = local_e4 & 0xffff0000;
      _free(pvStack_a8);
      if ((void *)0x7 < pvStack_ac) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_c0);
      }
      pvStack_ac = (void *)0x7;
      pvStack_b0 = (void *)0x0;
      local_c0 = local_c0 & 0xffff0000;
      uStack_8 = (undefined *)0xffffffff;
      _free(pvStack_84);
      if ((void *)0x7 < pvStack_88) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_9c);
      }
      FUN_004325b6(PTR_DAT_03236318);
      uStack_8 = (undefined *)0x4;
      FUN_004325b6(PTR_DAT_03236318);
      uStack_8._0_1_ = 5;
      FUN_0043c211("&Redo");
      uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,6);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        uVar1 = FUN_0084d360(&local_e8);
      }
      else {
        uVar1 = FUN_0084f210(&local_e8,&uStack_c4);
      }
      iVar2 = **(int **)(param_1_00 + 0x3b0);
      uVar1 = FUN_0095b210(*(int **)(param_1_00 + 0x3b0),0x1390,uVar1,&uStack_a0,0,0);
      (**(code **)(iVar2 + 0x6c))(uVar1);
      _free(pvStack_d0);
      if ((void *)0x7 < pvStack_d4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_e8);
      }
      pvStack_d4 = (void *)0x7;
      pvStack_d8 = (void *)0x0;
      local_e8 = (void *)((uint)local_e8 & 0xffff0000);
      _free(pvStack_ac);
      if ((void *)0x7 < pvStack_b0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_c4);
      }
      pvStack_b0 = (void *)0x7;
      pvStack_b4 = (void *)0x0;
      uStack_c4 = uStack_c4 & 0xffff0000;
      local_c = (void *)0xffffffff;
      _free(pvStack_88);
      if ((void *)0x7 < pvStack_8c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_a0);
      }
      FUN_00470f04();
      FUN_004325b6(PTR_DAT_03236318);
      local_c = (void *)0x7;
      FUN_004325b6(PTR_DAT_03236318);
      local_c._0_1_ = 8;
      FUN_0043c211(&DAT_00d5f3ac);
      local_c = (void *)CONCAT31(local_c._1_3_,9);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        uVar1 = FUN_0084d360(&stack0xffffff14);
      }
      else {
        uVar1 = FUN_0084f210(&stack0xffffff14,&uStack_c8);
      }
      iVar3 = **(int **)(param_1_00 + 0x3b0);
      uVar1 = FUN_0095b210(*(int **)(param_1_00 + 0x3b0),0x13a7,uVar1,&uStack_a4,0,0);
      (**(code **)(iVar3 + 0x6c))(uVar1);
      _free(pvStack_d4);
      if (7 < pvStack_d8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar2);
      }
      pvStack_d8 = (void *)0x7;
      pvStack_dc = (void *)0x0;
      _free(pvStack_b0);
      if (7 < pvStack_b4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_c8);
      }
      pvStack_b4 = (void *)0x7;
      pvStack_b8 = (void *)0x0;
      uStack_c8 = uStack_c8 & 0xffff0000;
      uStack_10 = 0xffffffff;
      _free(pvStack_8c);
      if ((void *)0x7 < pvStack_90) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_a4);
      }
      FUN_004325b6(PTR_DAT_03236318);
      uStack_10 = 10;
      FUN_004325b6(PTR_DAT_03236318);
      uStack_10._0_1_ = 0xb;
      FUN_0043c211("&Copy");
      uStack_10 = CONCAT31(uStack_10._1_3_,0xc);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        uVar1 = FUN_0084d360(&stack0xffffff10);
      }
      else {
        uVar1 = FUN_0084f210(&stack0xffffff10,&pvStack_cc);
      }
      iVar2 = **(int **)(param_1_00 + 0x3b0);
      uVar1 = FUN_0095b210(*(int **)(param_1_00 + 0x3b0),0x13a8,uVar1,&pvStack_a8,0,0);
      (**(code **)(iVar2 + 0x6c))(uVar1);
      _free(pvStack_d8);
      if (7 < pvStack_dc) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar3);
      }
      pvStack_dc = (void *)0x7;
      pvStack_e0 = (void *)0x0;
      _free(pvStack_b4);
      if (7 < pvStack_b8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pvStack_cc);
      }
      pvStack_b8 = (void *)0x7;
      pvStack_bc = (void *)0x0;
      pvStack_cc = (void *)((uint)pvStack_cc & 0xffff0000);
      uStack_14 = (void *)0xffffffff;
      _free(pvStack_90);
      if ((void *)0x7 < pvStack_94) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pvStack_a8);
      }
      FUN_004325b6(PTR_DAT_03236318);
      uStack_14 = (void *)0xd;
      FUN_004325b6(PTR_DAT_03236318);
      uStack_14._0_1_ = 0xe;
      FUN_0043c211("&Paste");
      uStack_14 = (void *)CONCAT31(uStack_14._1_3_,0xf);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        uVar1 = FUN_0084d360(&stack0xffffff0c);
      }
      else {
        uVar1 = FUN_0084f210(&stack0xffffff0c,&pvStack_d0);
      }
      iVar3 = **(int **)(param_1_00 + 0x3b0);
      uVar1 = FUN_0095b210(*(int **)(param_1_00 + 0x3b0),0x13a9,uVar1,&pvStack_ac,0,0);
      (**(code **)(iVar3 + 0x6c))(uVar1);
      _free(pvStack_dc);
      if (7 < pvStack_e0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar2);
      }
      pvStack_e0 = (void *)0x7;
      local_e4 = 0;
      _free(pvStack_b8);
      if (7 < pvStack_bc) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pvStack_d0);
      }
      pvStack_bc = (void *)0x7;
      local_c0 = 0;
      pvStack_d0 = (void *)((uint)pvStack_d0 & 0xffff0000);
      uStack_18 = 0xffffffff;
      _free(pvStack_94);
      if ((void *)0x7 < pvStack_98) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pvStack_ac);
      }
      FUN_004325b6(PTR_DAT_03236318);
      uStack_18 = 0x10;
      FUN_004325b6(PTR_DAT_03236318);
      uStack_18._0_1_ = 0x11;
      FUN_0043c211("&Delete");
      uStack_18 = CONCAT31(uStack_18._1_3_,0x12);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        uVar1 = FUN_0084d360(&stack0xffffff08);
      }
      else {
        uVar1 = FUN_0084f210(&stack0xffffff08,&pvStack_d4);
      }
      iVar2 = **(int **)(param_1_00 + 0x3b0);
      uVar1 = FUN_0095b210(*(int **)(param_1_00 + 0x3b0),0x13aa,uVar1,&pvStack_b0,0,0);
      (**(code **)(iVar2 + 0x6c))(uVar1);
      _free(pvStack_e0);
      if (7 < local_e4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar3);
      }
      local_e4 = 7;
      local_e8 = (void *)0x0;
      _free(pvStack_bc);
      if (7 < local_c0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pvStack_d4);
      }
      local_c0 = 7;
      uStack_c4 = 0;
      pvStack_d4 = (void *)((uint)pvStack_d4 & 0xffff0000);
      uStack_1c = 0xffffffff;
      _free(pvStack_98);
      if (7 < local_9c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(pvStack_b0);
      }
      FUN_00470f04();
      FUN_004325b6(PTR_DAT_03236318);
      uStack_1c = 0x13;
      FUN_004325b6(PTR_DAT_03236318);
      uStack_1c._0_1_ = 0x14;
      FUN_0043c211("Select &All");
      uStack_1c = CONCAT31(uStack_1c._1_3_,0x15);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        uVar1 = FUN_0084d360(&pvStack_90);
      }
      else {
        uVar1 = FUN_0084f210(&pvStack_90,auStack_6c);
      }
      iVar2 = **(int **)(param_1_00 + 0x3b0);
      uVar1 = FUN_0095b210(*(int **)(param_1_00 + 0x3b0),0x13ad,uVar1,auStack_48,0,0);
      (**(code **)(iVar2 + 0x6c))(uVar1);
      _free(pvStack_5c);
      if (7 < uStack_60) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_74);
      }
      uStack_60 = 7;
      uStack_64 = 0;
      uStack_74 = uStack_74 & 0xffff0000;
      _free(pvStack_38);
      if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_50);
      }
      uStack_3c = 7;
      uStack_40 = 0;
      uStack_50 = uStack_50 & 0xffff0000;
      local_4 = 0xffffffff;
      _free(uStack_14);
      if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_2c);
      }
      uStack_18 = 7;
      uStack_1c = 0;
      uStack_2c = uStack_2c & 0xffff0000;
    }
    FUN_0091ca70(*(undefined4 *)(param_1_00 + 0x3b0),DAT_03238d0c,DAT_03238d10);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00964ae0(int *param_1_00,int param_1,uint param_3)

{
  bool bVar1;
  int iVar2;
  bool bVar3;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar3 = false;
  if (*(uint *)(param_1 + 0x14) < 0x401) {
    iVar2 = (**(code **)(*param_1_00 + 0x88))(local_30,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    local_4 = 0;
    bVar3 = true;
    if (*(int *)(param_1 + 0x14) == *(int *)(iVar2 + 0x14)) {
      iVar2 = FUN_00850760(iVar2);
      bVar1 = false;
      if (iVar2 == 0) goto LAB_00964b5d;
    }
  }
  bVar1 = true;
LAB_00964b5d:
  local_4 = 0xffffffff;
  if (bVar3) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (bVar1) {
    FUN_00963c60(param_1,param_3);
    (**(code **)(param_1_00[-0x72] + 0x18))();
    (**(code **)(*param_1_00 + 0x50))(0);
    ExceptionList = pvStack_10;
    return;
  }
  (**(code **)(param_1_00[-0x72] + 0x18))();
  if ((param_3 & 1) != 0) {
    FUN_009626a0();
  }
  ExceptionList = local_c;
  return;
}



void FUN_00964c30(undefined4 param_1)

{
  FUN_00963c60(param_1,3);
  return;
}



void * __thiscall FUN_00964c50(int *param_1_00,void *param_1,undefined4 param_2)

{
  undefined2 *lParam;
  int iVar1;
  LPARAM *pLStack_20;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdd2f9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  iVar1 = (**(code **)(*param_1_00 + 4))(param_2,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  *(undefined4 *)((int)param_1 + 0x18) = 7;
  *(undefined4 *)((int)param_1 + 0x14) = 0;
  *(undefined2 *)((int)param_1 + 4) = 0;
  *(undefined4 *)((int)param_1 + 0x1c) = 0;
  puStack_8 = (undefined *)0x0;
  FUN_00852280(param_1,iVar1 + 3);
  lParam = (undefined2 *)*pLStack_20;
  *lParam = (short)(iVar1 + 3);
  iVar1 = SendMessageW((HWND)param_1_00[-0x25],0xc4,(WPARAM)param_1,(LPARAM)lParam);
  if (param_1_00[0x76] != 0) {
    if ((lParam[iVar1 + -2] == 0xd) && (lParam[iVar1 + -1] == 10)) {
      lParam[iVar1 + -2] = 10;
      iVar1 = iVar1 + -1;
    }
    else if (lParam[iVar1 + -1] == 0xd) {
      lParam[iVar1 + -1] = 10;
    }
  }
  if (lParam[iVar1 + -1] == 10) {
    iVar1 = iVar1 + -1;
  }
  lParam[iVar1] = 0;
  FUN_008a92b0();
  ExceptionList = param_1;
  return param_1;
}



void __thiscall FUN_00964d70(int *param_1_00,undefined *param_1,undefined4 param_2)

{
  char cVar1;
  undefined *puVar2;
  LPARAM lParam;
  undefined auStack_16c [4];
  undefined4 uStack_168;
  undefined *puStack_12c;
  undefined4 local_128;
  uint uStack_110;
  void *pvStack_10c;
  undefined auStack_60 [4];
  undefined4 uStack_5c;
  undefined4 uStack_4c;
  uint uStack_48;
  void *pvStack_44;
  uint uStack_24;
  void *pvStack_20;
  void *pvStack_14;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd372;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&puStack_12c;
  ExceptionList = &local_c;
  local_128 = param_2;
  (**(code **)(*param_1_00 + 0xe8))();
  (**(code **)(*param_1_00 + 0x2c8))();
  FUN_004325b6();
  local_c = (void *)0x0;
  if ((param_1_00[0x38] & 0x1000U) != 0) {
    param_1_00[0x38] = param_1_00[0x38] | 0x8000;
  }
  if ((param_1_00[0x38] & 0x8000U) != 0) {
    param_1_00[0x38] = param_1_00[0x38] | 0x80;
  }
  if ((*(byte *)(param_1_00 + 0x38) & 0x80) != 0) {
    param_1_00[0xea] = 2;
    cVar1 = FUN_00961d70();
    if (cVar1 == '\0') {
      cVar1 = FUN_00961d70();
      if (cVar1 == '\0') {
        param_1_00[0xea] = 1;
      }
      else {
        FUN_00432199();
      }
    }
    else {
      FUN_00432199();
      param_1_00[0xea] = 4;
    }
    if (param_1_00[0xea] == 1) {
      cVar1 = FUN_00961d70();
      if (cVar1 == '\0') {
        if (DAT_032c1240 == '\0') {
          puStack_12c = auStack_16c;
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(1);
          if (cVar1 != '\0') {
            FUN_004325b6();
            local_c._0_1_ = 1;
            FUN_0043c211();
            local_c._0_1_ = 2;
            FUN_00820bf9();
            FUN_008433c0();
            local_c._0_1_ = 3;
            FUN_008423d0();
            local_c._0_1_ = 4;
            FUN_00840b80();
            local_c._0_1_ = 3;
            FUN_00842440();
            local_c = (void *)CONCAT31(local_c._1_3_,2);
            FUN_0081b5bc();
            FUN_0040159c();
            FUN_0040159c();
          }
          DAT_032c1240 = '\x01';
        }
        param_1_00[0xea] = 0;
      }
      else {
        FUN_00432199();
      }
    }
  }
  uStack_48 = 7;
  uStack_4c = 0;
  uStack_5c = (uint)uStack_5c._2_2_ << 0x10;
  pvStack_44 = (void *)0x0;
  local_c._0_1_ = 5;
  if ((*(byte *)(param_1_00 + 0x38) & 0x20) == 0) {
    if (auStack_60 != param_1) {
      FID_conflict_assign();
    }
  }
  else {
    puVar2 = (undefined *)FUN_008a8810();
    local_c._0_1_ = 6;
    if (auStack_60 != puVar2) {
      FID_conflict_assign();
    }
    local_c._0_1_ = 5;
    _free(pvStack_10c);
    if (7 < uStack_110) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  param_1_00[0xeb] = -2;
  cVar1 = FUN_00936b00();
  if (cVar1 == '\0') {
    _free(pvStack_44);
    if (7 < uStack_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_48 = 7;
    uStack_4c = 0;
    uStack_5c = uStack_5c & 0xffff0000;
    _free(pvStack_20);
    if (7 < uStack_24) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  else {
    param_1_00[0xeb] = -1;
    if (param_1_00[0xea] == 0) {
      if ((((uint)param_1_00[0x38] >> 5 & 1) != 0) && (((uint)param_1_00[0x38] >> 4 & 1) != 0)) {
        FUN_00486927();
        local_c._0_1_ = 7;
        (**(code **)(*param_1_00 + 0x17c))();
        local_c._0_1_ = 5;
        FUN_0043d9c0();
      }
    }
    else {
      lParam = 1;
      if (param_1_00[0xea] == 1) {
        lParam = 0x20001;
        (**(code **)(*param_1_00 + 0x288))();
        FUN_0091b600();
      }
      else if ((param_1_00[0x38] & 0x1000U) != 0) {
        lParam = 0x4000001;
        SendMessageW((HWND)param_1_00[0x4f],0x45b,1,0);
      }
      SendMessageW((HWND)param_1_00[0x4f],0x445,0,lParam);
    }
    uStack_168 = 0x965218;
    SetWindowPos((HWND)param_1_00[0x4f],(HWND)0x0,0,0,0,0,0x37);
    _free(pvStack_44);
    if (7 < uStack_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_48 = 7;
    uStack_4c = 0;
    uStack_5c = uStack_5c & 0xffff0000;
    _free(pvStack_20);
    if (7 < uStack_24) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_009652c0(int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  char *pcStack_cc;
  undefined4 uStack_c8;
  char *pcStack_c4;
  undefined auStack_a0 [4];
  undefined4 *puStack_9c;
  undefined4 ***apppuStack_30 [5];
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd3c9;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_a0;
  ExceptionList = &local_c;
  FUN_00919810();
  uVar2 = GetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x10);
  FUN_0095dfc0();
  uStack_4 = 0;
  cVar1 = FUN_00855ef0();
  if (cVar1 == '\0') {
    if (uStack_1c < 8) {
      apppuStack_30[0] = apppuStack_30;
    }
    pcStack_c4 = (char *)0x965389;
    iVar3 = FID_conflict__swscanf((wchar_t *)apppuStack_30[0],L"RichEdit%d0%c");
    if (iVar3 != 2) {
      puStack_9c = &uStack_d4;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        puStack_9c = (undefined4 *)&stack0xffffff44;
        pcStack_c4 = (char *)0x9653de;
        FUN_00432231();
        pcStack_c4 = "wxTextCtrl::AdoptAttributesFromHWND";
        uStack_c8 = 0x20e;
        pcStack_cc = "..\\..\\src\\msw\\textctrl.cpp";
        uStack_d0 = 6;
        uStack_4._0_1_ = 2;
        uStack_d4 = 0x965405;
        FUN_008423d0();
        uStack_4._0_1_ = 4;
        pcStack_c4 = (char *)0x965421;
        FUN_00848860();
        uStack_4._0_1_ = 1;
        FUN_00842440();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_0081b5bc();
      }
      *(undefined4 *)(param_1 + 0x3a8) = 0;
    }
  }
  else {
    *(undefined4 *)(param_1 + 0x3a8) = 0;
  }
  if ((uVar2 & 4) != 0) {
    *(uint *)(param_1 + 0xe0) = *(uint *)(param_1 + 0xe0) | 0x20;
  }
  if ((uVar2 & 0x20) != 0) {
    *(uint *)(param_1 + 0xe0) = *(uint *)(param_1 + 0xe0) | 0x800;
  }
  if ((uVar2 & 0x800) != 0) {
    *(uint *)(param_1 + 0xe0) = *(uint *)(param_1 + 0xe0) | 0x10;
  }
  if ((uVar2 & 0x1000) != 0) {
    *(uint *)(param_1 + 0xe0) = *(uint *)(param_1 + 0xe0) | 0x400;
  }
  if ((uVar2 & 1) != 0) {
    *(uint *)(param_1 + 0xe0) = *(uint *)(param_1 + 0xe0) | 0x100;
  }
  if ((uVar2 & 2) != 0) {
    *(uint *)(param_1 + 0xe0) = *(uint *)(param_1 + 0xe0) | 0x200;
  }
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00965500(int *param_1_00,uint param_1)

{
  HWND hWnd;
  undefined **ppuVar1;
  int iVar2;
  uint uVar3;
  undefined **ppuStack_64;
  int aiStack_60 [2];
  undefined **appuStack_58 [5];
  undefined auStack_44 [8];
  undefined auStack_3c [8];
  undefined auStack_34 [4];
  undefined4 uStack_30;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = -1;
  puStack_8 = &LAB_00bdd420;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&ppuStack_64;
  ppuVar1 = (undefined **)(DAT_0323f878 ^ (uint)&stack0xffffff8c);
  ExceptionList = &local_c;
  if (param_1_00[0xea] == 0) {
    iVar2 = FUN_00894b40(ppuVar1);
    if (iVar2 < 0x501) goto LAB_00965552;
  }
  else {
LAB_00965552:
    uVar3 = (**(code **)(*param_1_00 + 0xe8))();
    if (((uVar3 ^ param_1) & 0x300) != 0) {
      (**(code **)(param_1_00[0x74] + 0x40))(auStack_34);
      puStack_8 = (undefined *)0x0;
      (**(code **)(*param_1_00 + 0x270))(aiStack_60,&stack0xffffff98);
      (**(code **)(*param_1_00 + 0x278))(&stack0xffffff90,&stack0xffffff98);
      hWnd = (HWND)param_1_00[0x4f];
      appuStack_58[0] = ppuVar1;
      (**(code **)(*param_1_00 + 0x220))();
      DestroyWindow(hWnd);
      param_1_00[0x38] = param_1;
      FUN_00964d70(auStack_34,auStack_3c,auStack_44);
      if ((*(byte *)(param_1_00 + 0x37) & 0x40) != 0) {
        aiStack_60[0] = param_1_00[0x22];
        if (aiStack_60[0] != 0) {
          *(int *)(aiStack_60[0] + 4) = *(int *)(aiStack_60[0] + 4) + 1;
        }
        ppuStack_64 = wxFont::vftable;
        uStack_4._0_1_ = 1;
        if (param_1_00 != (int *)&DAT_03238c60) {
          FUN_0083ea60(&PTR_vftable_03238ce4);
        }
        (**(code **)(*param_1_00 + 0x18c))(&ppuStack_64);
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00921450();
      }
      if ((*(byte *)(param_1_00 + 0x37) & 0x20) != 0) {
        FUN_00458700(param_1_00 + 0x28);
        uStack_4._0_1_ = 2;
        FUN_004722cb(&PTR_vftable_03238cd0);
        (**(code **)(*param_1_00 + 0x180))(appuStack_58);
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        appuStack_58[0] = wxObject::vftable;
        FUN_0083e850();
      }
      if ((*(byte *)(param_1_00 + 0x37) & 0x10) != 0) {
        FUN_00458700(param_1_00 + 0x23);
        uStack_4._0_1_ = 3;
        FUN_004722cb(&PTR_vftable_03238cd0);
        (**(code **)(*param_1_00 + 0x17c))(appuStack_58);
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        appuStack_58[0] = wxObject::vftable;
        FUN_0083e850();
      }
      _free(pvStack_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
      goto LAB_00965788;
    }
  }
  if (param_1_00[0xea] != 0) {
    uVar3 = (**(code **)(*param_1_00 + 0xe8))();
    if (((uVar3 ^ param_1) & 0x2000) != 0) {
      SendMessageW((HWND)param_1_00[0x4f],0x44d,((param_1 >> 0xd & 1) == 0) + 2,
                   (-(uint)((param_1 >> 0xd & 1) != 0) & 0x201) - 0x101);
    }
  }
  FUN_009181c0(param_1);
LAB_00965788:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009657b0(undefined *param_1_00,uint *param_1,int param_3,int param_4)

{
  uint *puVar1;
  wchar_t wVar2;
  char cVar3;
  wchar_t *pwVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  WPARAM wParam;
  LRESULT LVar8;
  size_t _Count;
  undefined auStack_188 [8];
  undefined4 uStack_180;
  undefined *puStack_17c;
  char *pcStack_178;
  undefined *local_150 [3];
  undefined auStack_144 [100];
  int local_e0;
  uint local_dc;
  uint local_d8;
  int local_d4;
  uint uStack_cc;
  undefined local_c8;
  undefined local_c7;
  wchar_t local_c6 [35];
  undefined4 uStack_80;
  int local_5c;
  char local_58;
  char local_57;
  undefined local_55;
  undefined local_51;
  wchar_t local_50;
  undefined local_4e [62];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd471;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_150;
  ExceptionList = &local_c;
  local_150[0] = param_1_00;
  _memset(&local_e0,0,0x74);
  local_e0 = (-(uint)(*(int *)(param_1_00 + 0x3a8) != 1) & 0x18) + 0x5c;
  if ((*param_1 & 0x600007c) != 0) {
    local_dc = local_dc | 0xa8000007;
    FUN_00960940();
    local_4 = 0;
    FUN_00984870();
    local_d4 = FUN_00921710();
    local_d4 = local_d4 * 0x14;
    local_c8 = local_55;
    pwVar4 = &local_50;
    local_c7 = local_51;
    do {
      wVar2 = *pwVar4;
      pwVar4 = pwVar4 + 1;
    } while (wVar2 != L'\0');
    uVar5 = (int)pwVar4 - (int)local_4e >> 1;
    _Count = 0x1f;
    if (uVar5 < 0x20) {
      _Count = uVar5;
    }
    _wcsncpy(local_c6,&local_50,_Count);
    local_c6[_Count] = L'\0';
    if (local_58 != '\0') {
      local_d8 = local_d8 | 2;
    }
    if (local_5c == 700) {
      local_d8 = local_d8 | 1;
    }
    if (local_57 != '\0') {
      local_d8 = local_d8 | 4;
    }
    local_4 = 0xffffffff;
    FUN_00921450();
  }
  puVar1 = param_1 + 0x35;
  cVar3 = (**(code **)(param_1[0x35] + 0x24))();
  if ((cVar3 != '\0') && ((*(byte *)param_1 & 1) != 0)) {
    local_dc = local_dc | 0x40000000;
    uVar5 = (**(code **)(*puVar1 + 0x18))();
    uVar6 = (**(code **)(*puVar1 + 0x14))();
    uVar7 = (**(code **)(*puVar1 + 0x10))();
    uStack_cc = uVar7 & 0xff | (uVar6 & 0xff | (uVar5 & 0xff) << 8) << 8;
    param_1_00 = local_150[0];
  }
  if (((*(int *)(param_1_00 + 0x3a8) != 1) &&
      (cVar3 = (**(code **)(param_1[0x3a] + 0x24))(), cVar3 != '\0')) && ((*param_1 >> 1 & 1) != 0))
  {
    local_dc = local_dc | 0x4000000;
    uStack_80 = FUN_0090e430();
  }
  if ((param_3 == -1) && (param_4 == -1)) {
    wParam = 4;
  }
  else {
    (**(code **)(*(int *)(param_1_00 + 0x398) + 0xa8))();
    wParam = 1;
  }
  pcStack_178 = (char *)0x965a35;
  LVar8 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x444,wParam,(LPARAM)&local_e0);
  if (LVar8 == 0) {
    local_150[0] = auStack_188;
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(6);
    if (cVar3 != '\0') {
      FUN_0081c0f1();
      pcStack_178 = (char *)0x6;
      local_4 = 1;
      puStack_17c = (undefined *)0x965a96;
      FUN_008423d0();
      local_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      pcStack_178 = "..\\..\\src\\msw\\textctrl.cpp";
      puStack_17c = auStack_144;
      uStack_180 = 0x965ad0;
      FUN_00847d90();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00965b30(int param_1_00,uint *param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  LRESULT LVar5;
  uint uVar6;
  int local_118;
  uint local_114;
  ushort uStack_10e;
  undefined4 local_10c;
  undefined4 local_108;
  undefined4 local_104;
  undefined2 local_100;
  short local_fe;
  undefined4 auStack_fc [60];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd4b3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  _memset(&local_118,0,0xbc);
  uVar2 = param_1[7];
  local_118 = (-(uint)(*(int *)(param_1_00 + 0x3a8) != 1) & 0x20) + 0x9c;
  if ((uVar2 != 0) && ((*param_1 >> 7 & 1) != 0)) {
    local_114 = local_114 | 8;
    if (uVar2 == 3) {
      local_100 = 2;
    }
    else if (uVar2 == 2) {
      local_100 = 3;
    }
    else if (uVar2 == 4) {
      local_100 = 4;
    }
    else {
      local_100 = 1;
    }
  }
  uVar2 = *param_1;
  if ((uVar2 >> 8 & 1) != 0) {
    local_114 = local_114 | 5;
    local_10c = FUN_00a49750();
    local_104 = FUN_00a49750();
  }
  if ((uVar2 >> 9 & 1) != 0) {
    local_114 = local_114 | 2;
    local_108 = FUN_00a49750();
  }
  if ((uVar2 >> 10 & 1) != 0) {
    uVar2 = param_1[2];
    local_114 = local_114 | 0x10;
    if (0x1f < uVar2) {
      uVar2 = 0x20;
    }
    uVar6 = 0;
    local_fe = (short)uVar2;
    if (local_fe != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[2] <= uVar6)) {
          FUN_008402e0();
        }
        uVar3 = FUN_00a49750();
        auStack_fc[uVar6] = uVar3;
        uVar6 = uVar6 + 1;
      } while (uVar6 < (uint)(int)local_fe);
    }
  }
  if ((1 < *(int *)(param_1_00 + 0x3a8)) &&
     (iVar4 = (**(code **)(*DAT_032bcb68 + 0xe4))(), iVar4 == 2)) {
    local_114 = local_114 | 0x10000;
    uStack_10e = uStack_10e | 1;
  }
  if (local_114 != 0) {
    (**(code **)(*(int *)(param_1_00 + 0x398) + 0xa8))();
    LVar5 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x447,0,(LPARAM)&local_118);
    if (LVar5 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
      ExceptionList = local_c;
      return 0;
    }
  }
  ExceptionList = local_c;
  return 1;
}



bool __thiscall FUN_00965e40(int param_1_00,int param_1,int param_2,uint *param_3)

{
  uint uVar1;
  char cVar2;
  undefined uVar3;
  int unaff_EBX;
  int iVar4;
  int unaff_ESI;
  int iVar5;
  undefined local_8 [4];
  undefined local_4 [4];
  
  if (*(int *)(param_1_00 + 0x1d8) == 0) {
    return false;
  }
  if (((((*(int *)(param_1_00 + 0x1d8) == 1) && ((*param_3 & 0x600007c) == 0)) &&
       (cVar2 = FUN_009603b0(), cVar2 == '\0')) &&
      ((uVar1 = *param_3, (uVar1 >> 8 & 1) == 0 && ((uVar1 >> 9 & 1) == 0)))) &&
     ((cVar2 = FUN_00960410(), cVar2 == '\0' && ((uVar1 >> 10 & 1) == 0)))) {
    cVar2 = FUN_009603e0();
    return cVar2 == '\0';
  }
  iVar4 = param_2;
  iVar5 = param_1;
  if (param_2 < param_1) {
    iVar4 = param_1;
    iVar5 = param_2;
  }
  (**(code **)(*(int *)(param_1_00 + 0x1c8) + 0x68))(local_8,local_4);
  local_4[0] = FUN_009657b0(param_1,iVar5,iVar4);
  cVar2 = FUN_00965b30(param_1,iVar5,iVar4);
  uVar3 = local_4[0];
  if (cVar2 == '\0') {
    uVar3 = 0;
  }
  if ((iVar5 != unaff_ESI) || (iVar4 != unaff_EBX)) {
    (**(code **)(*(int *)(param_1_00 + 0x1c8) + 0xa8))(unaff_ESI,unaff_EBX,0);
  }
  return (bool)uVar3;
}



undefined4 __thiscall
FUN_00965f50(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8)

{
  char cVar1;
  
  cVar1 = FUN_00937250(param_1,param_2,param_4,param_5,param_6,param_7,param_8);
  if (cVar1 != '\0') {
    cVar1 = FUN_00964d70(param_3,param_4,param_5);
    if (cVar1 != '\0') {
      if (*(int *)(param_1_00 + 0x3a8) != 0) {
        *(undefined4 *)(param_1_00 + 0x78) = DAT_0323b294;
      }
      return 1;
    }
  }
  return 0;
}



undefined ** FUN_00965fc0(void)

{
  return &PTR_PTR_00d5f5ec;
}



undefined * FUN_00965fd0(void)

{
  return &DAT_032c1244;
}



undefined FUN_00965fe0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                      uint param_5,undefined4 param_6,undefined4 param_7)

{
  undefined uVar1;
  uint uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  FUN_0043c211(&PTR_02bd3fc0);
  local_4 = 0;
  uVar1 = FUN_0093deb0(param_1,param_2,local_30,param_3,param_4,param_5 | 3,param_6,param_7);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar2);
  }
  ExceptionList = local_c;
  return uVar1;
}



undefined __thiscall
FUN_00966090(int *param_1_00,undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4,
            int *param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  char cVar1;
  
  cVar1 = FUN_00965fe0(param_1,param_2,param_4,param_5,param_6,param_7,param_8);
  if (cVar1 == '\0') {
    return 0;
  }
  cVar1 = (**(code **)(*param_3 + 0x10))();
  if (cVar1 != '\0') {
    (**(code **)(*param_1_00 + 0x35c))(param_3,0);
  }
  if ((*param_5 == -1) || (param_5[1] == -1)) {
    FUN_0091b600(param_5);
  }
  return 1;
}



undefined ** FUN_00966110(void)

{
  return &PTR_u_wxBitmapButton_0323b3ac;
}



undefined4 * FUN_00966120(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x1a0);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0044ced6(uVar1);
    puVar2[0x65] = 0;
    puVar2[0x66] = 0;
    *(undefined *)(puVar2 + 0x67) = 0;
    *puVar2 = wxBitmapButton::vftable;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined ** FUN_009661b0(void)

{
  return &PTR_u_wxFileDialog_0323b3e0;
}



void FUN_00966380(char *param_1)

{
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bdd5f0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  if (*param_1 == '\0') {
    local_8 = 0;
    (**(code **)(param_1 + 4))();
  }
  ExceptionList = local_10;
  return;
}



undefined4 Catch_All_009663d0(void)

{
  return 0x9663be;
}



void __fastcall FUN_009663e0(undefined4 param_1)

{
  FUN_00966380(param_1);
  return;
}



void FUN_009663f0(undefined *param_1,undefined4 param_2)

{
  *param_1 = 0;
  *(undefined4 *)(param_1 + 4) = param_2;
  return;
}



undefined4 FUN_00966410(undefined4 param_1,undefined4 param_2)

{
  FUN_009663f0(param_1,param_2);
  return param_1;
}



undefined4 * __thiscall
FUN_00966440(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8,undefined4 param_9)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd65e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044cc1c(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1_00 = wxFileDialogBase::vftable;
  param_1_00[0x82] = 7;
  param_1_00[0x81] = 0;
  *(undefined2 *)(param_1_00 + 0x7d) = 0;
  param_1_00[0x83] = 0;
  param_1_00[0x8b] = 7;
  param_1_00[0x8a] = 0;
  *(undefined2 *)(param_1_00 + 0x86) = 0;
  param_1_00[0x8c] = 0;
  param_1_00[0x94] = 7;
  param_1_00[0x93] = 0;
  *(undefined2 *)(param_1_00 + 0x8f) = 0;
  param_1_00[0x95] = 0;
  param_1_00[0x9d] = 7;
  param_1_00[0x9c] = 0;
  *(undefined2 *)(param_1_00 + 0x98) = 0;
  param_1_00[0x9e] = 0;
  param_1_00[0xa6] = 7;
  param_1_00[0xa5] = 0;
  *(undefined2 *)(param_1_00 + 0xa1) = 0;
  param_1_00[0xa7] = 0;
  local_4 = 5;
  FUN_009686a0();
  FUN_00968af0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_00966560(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8,undefined4 param_9)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd688;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00966440(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9);
  local_4 = 0;
  *param_1_00 = wxFileDialog::vftable;
  FUN_00853ce0(0);
  *(undefined *)(param_1_00 + 0xb0) = 0;
  param_1_00[0xb1] = 0;
  DAT_0323b3d4 = 0;
  DAT_0323b3d0 = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00966610(undefined4 param_1_00,byte param_1)

{
  FUN_00484d9e();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00966630(void)

{
  uint uVar1;
  int iVar2;
  undefined4 local_58;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd6d0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_58;
  ExceptionList = &local_c;
  DAT_032c1288 = 0;
  FUN_004325b6(L"kernel32.dll");
  local_4 = 0;
  local_58 = 0;
  FUN_0089ed30(local_54,0x68);
  local_4._0_1_ = 2;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  if (DAT_0323b3c4 == (code *)0xffffffff) {
    FUN_0043c211("GetProcessUserModeExceptionPolicy");
    local_4._0_1_ = 3;
    DAT_0323b3c4 = (code *)FUN_0089f2d0(local_58,local_30,uVar1);
    local_4._0_1_ = 2;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    FUN_0043c211("SetProcessUserModeExceptionPolicy");
    local_4._0_1_ = 4;
    DAT_0323b3c8 = (code *)FUN_0089f2d0(local_58,local_30);
    local_4._0_1_ = 2;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  if ((DAT_0323b3c4 != (code *)0x0) && (DAT_0323b3c8 != (code *)0x0)) {
    iVar2 = (*DAT_0323b3c4)(&DAT_032c1284);
    if (iVar2 != 0) {
      iVar2 = (*DAT_0323b3c8)(DAT_032c1284 | 1);
      if (iVar2 != 0) {
        DAT_032c1288 = 1;
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009667c0(int param_1_00,undefined4 param_1)

{
  char cVar1;
  int *piVar2;
  undefined4 uVar3;
  uint uVar4;
  int iVar5;
  uint local_e0;
  undefined4 local_dc;
  undefined local_d8 [4];
  undefined4 local_d4;
  uint local_c0;
  void *local_bc;
  undefined local_34 [4];
  undefined4 local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd70e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_e0;
  ExceptionList = &local_c;
  local_dc = param_1;
  FUN_00853d00(DAT_0323f878 ^ (uint)&stack0xffffff10);
  uVar4 = 0;
  local_1c = 7;
  local_20 = 0;
  local_30 = (uint)local_30._2_2_ << 0x10;
  FID_conflict_assign(param_1_00 + 0x214,0,0xffffffff);
  local_18 = (void *)0x0;
  local_4 = 0;
  if (*(int *)(param_1_00 + 0x228) != 0) {
    piVar2 = (int *)FUN_0085ca50(&local_e0);
    if (*piVar2 == 0x5c) goto LAB_00966878;
  }
  FID_conflict_append(1,0x5c);
LAB_00966878:
  local_e0 = *(uint *)(param_1_00 + 0x2b4);
  if (local_e0 != 0) {
    iVar5 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x2b4) <= uVar4)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      FUN_00432544(*(int *)(param_1_00 + 0x2b8) + iVar5,0);
      local_4._0_1_ = 1;
      cVar1 = FUN_00857bd0(0);
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0043250a();
      if (cVar1 == '\0') {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x2b4) <= uVar4)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                       "nIndex < m_nCount",L"wxArrayString: index out of bounds");
        }
        uVar3 = FUN_008531f0(local_d8,local_34,*(int *)(param_1_00 + 0x2b8) + iVar5);
        local_4._0_1_ = 2;
        FUN_00854700(uVar3,1);
        local_4 = (uint)local_4._1_3_ << 8;
        _free(local_bc);
        if (7 < local_c0) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_d4);
        }
      }
      else {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x2b4) <= uVar4)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                       "nIndex < m_nCount",L"wxArrayString: index out of bounds");
        }
        FUN_00854700(*(int *)(param_1_00 + 0x2b8) + iVar5,1);
      }
      uVar4 = uVar4 + 1;
      iVar5 = iVar5 + 0x24;
    } while (uVar4 < local_e0);
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00966a40(HGLOBAL *param_1_00,SIZE_T param_1,UINT param_2)

{
  char cVar1;
  HGLOBAL pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar2 = GlobalAlloc(param_2,param_1);
  *param_1_00 = pvVar2;
  if (pvVar2 == (HGLOBAL)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00966b50(HGLOBAL *param_1)

{
  char cVar1;
  HGLOBAL pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1 != (HGLOBAL)0x0) {
    pvVar2 = GlobalFree(*param_1);
    if (pvVar2 != (HGLOBAL)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00966c60(HGLOBAL *param_1_00,HGLOBAL param_1)

{
  char cVar1;
  LPVOID pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  pvVar2 = GlobalLock(param_1);
  param_1_00[1] = pvVar2;
  if (pvVar2 == (LPVOID)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00966d70(HGLOBAL *param_1)

{
  char cVar1;
  BOOL BVar2;
  DWORD DVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1 != (HGLOBAL)0x0) {
    BVar2 = GlobalUnlock(*param_1);
    if (BVar2 == 0) {
      DVar3 = GetLastError();
      if (DVar3 != 0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 0;
          FUN_008423d0();
          uStack_4._0_1_ = 1;
          FUN_00843700();
          FUN_00847d90();
          uStack_4 = (uint)uStack_4._1_3_ << 8;
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 FUN_00966e80(uint param_1)

{
  bool bVar1;
  char cVar2;
  int iVar3;
  DWORD DVar4;
  LPOPENFILENAMEW unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd766;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1 = param_1 & 2;
  if (param_1 == 0) {
    iVar3 = GetOpenFileNameW(unaff_ESI);
  }
  else {
    iVar3 = GetSaveFileNameW(unaff_ESI);
  }
  if (iVar3 != 0) {
    ExceptionList = local_c;
    return 1;
  }
  DVar4 = CommDlgExtendedError();
  if (DVar4 == 1) {
    if (unaff_ESI->lStructSize == 0x4c) goto LAB_00966f5b;
    unaff_ESI->lStructSize = 0x4c;
    if (param_1 == 0) {
      iVar3 = GetOpenFileNameW(unaff_ESI);
    }
    else {
      iVar3 = GetSaveFileNameW(unaff_ESI);
    }
    if (iVar3 == 0) {
      DVar4 = CommDlgExtendedError();
      bVar1 = false;
      if (DVar4 != 0) goto LAB_00966f1e;
    }
    else {
      bVar1 = true;
    }
    DAT_0323b3cc = unaff_ESI->lStructSize;
    if (bVar1) {
      ExceptionList = local_c;
      return 1;
    }
  }
LAB_00966f1e:
  if (DVar4 == 0x3002) {
    if (*unaff_ESI->lpstrFile == L'\0') goto LAB_00966f5b;
    *unaff_ESI->lpstrFile = L'\0';
    if (param_1 == 0) {
      iVar3 = GetOpenFileNameW(unaff_ESI);
    }
    else {
      iVar3 = GetSaveFileNameW(unaff_ESI);
    }
    if (iVar3 != 0) {
      ExceptionList = local_c;
      return 1;
    }
    DVar4 = CommDlgExtendedError();
  }
  if (DVar4 == 0) {
    ExceptionList = local_c;
    return 0;
  }
LAB_00966f5b:
  FUN_0043c211(&DAT_00d25fa0);
  cVar2 = FUN_00846b30(1);
  if (cVar2 != '\0') {
    FUN_004325b6();
    uStack_4 = 0;
    FUN_0043c211();
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    uStack_4._0_1_ = 2;
    FUN_008423d0();
    uStack_4._0_1_ = 3;
    FUN_008b7ef0();
    uStack_4._0_1_ = 2;
    FUN_00842440();
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    FUN_0081b5bc();
    FUN_0040159c();
    FUN_0040159c();
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_00967140(int param_1)

{
  wchar_t *pwVar1;
  undefined4 *puVar2;
  wchar_t wVar3;
  short sVar4;
  ushort uVar5;
  ushort *puVar6;
  char cVar7;
  int iVar8;
  uint uVar9;
  int *piVar10;
  undefined4 *puVar11;
  undefined4 *puVar12;
  undefined *puVar13;
  short *psVar14;
  int iVar15;
  wchar_t *pwVar16;
  short *psVar17;
  undefined4 *puVar18;
  int iVar19;
  size_t sVar20;
  uint uVar21;
  undefined auStack_9fc [4];
  uint local_9f8;
  uint uStack_9f4;
  int iStack_9f0;
  int local_9ec;
  uint uStack_9e8;
  undefined4 *puStack_9e4;
  undefined4 uStack_9e0;
  int iStack_9dc;
  undefined4 *puStack_9d8;
  char cStack_9d4;
  uint uStack_9d0;
  int iStack_9cc;
  undefined auStack_9c8 [4];
  uint uStack_9c4;
  undefined4 uStack_9b4;
  uint uStack_9b0;
  void *pvStack_9ac;
  undefined auStack_9a4 [4];
  uint uStack_9a0;
  undefined4 uStack_990;
  uint uStack_98c;
  void *pvStack_988;
  undefined auStack_980 [4];
  uint uStack_97c;
  int iStack_978;
  undefined auStack_970 [8];
  undefined auStack_968 [4];
  uint uStack_964;
  int iStack_960;
  undefined4 uStack_958;
  int iStack_954;
  undefined4 *puStack_950;
  undefined4 *puStack_94c;
  int iStack_940;
  undefined2 *puStack_93c;
  undefined4 uStack_938;
  undefined2 *puStack_934;
  undefined4 uStack_930;
  int iStack_92c;
  int iStack_928;
  uint uStack_924;
  ushort uStack_920;
  ushort uStack_91e;
  int iStack_91c;
  int iStack_918;
  undefined *puStack_914;
  undefined auStack_8ec [12];
  undefined4 uStack_8e0;
  uint uStack_8d0;
  uint uStack_8cc;
  void *pvStack_8c8;
  undefined auStack_8c0 [4];
  uint uStack_8bc;
  undefined4 uStack_8ac;
  uint uStack_8a8;
  void *pvStack_8a4;
  undefined4 uStack_898;
  undefined4 uStack_888;
  uint uStack_884;
  void *pvStack_880;
  undefined auStack_878 [4];
  undefined4 uStack_874;
  undefined4 uStack_864;
  uint uStack_860;
  void *pvStack_85c;
  undefined auStack_854 [4];
  uint uStack_850;
  undefined4 uStack_840;
  uint uStack_83c;
  void *pvStack_838;
  undefined2 local_830 [1034];
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00bdd882;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_9fc;
  ExceptionList = &local_14;
  iVar19 = 0;
  local_9ec = param_1;
  if (((*(int *)(param_1 + 0x44) == 0) ||
      (iVar19 = *(int *)(*(int *)(param_1 + 0x44) + 0x13c), iVar19 == 0)) &&
     (iVar8 = (**(code **)(*DAT_032bcb68 + 0xd4))(DAT_0323f878 ^ (uint)&stack0xfffff5f8), iVar8 != 0
     )) {
    iVar19 = (**(code **)(*DAT_032bcb68 + 0xd4))();
    iVar19 = *(int *)(iVar19 + 0x13c);
  }
  DAT_032c1290 = 0;
  local_830[0] = 0;
  local_9f8 = 4;
  if ((*(uint *)(param_1 + 0xe0) >> 4 & 1) != 0) {
    local_9f8 = 0x1804;
  }
  if ((*(char *)(param_1 + 0x2c0) != '\0') || (*(int *)(param_1 + 0x2ac) != 0)) {
    FUN_00966630();
    local_9f8 = local_9f8 | 0x880020;
  }
  FUN_00966410(auStack_970,&LAB_009661c0);
  uVar9 = *(uint *)(param_1 + 0xe0);
  uStack_c = 0;
  if ((uVar9 >> 5 & 1) != 0) {
    local_9f8 = local_9f8 | 0x80200;
  }
  if ((uVar9 >> 7 & 1) == 0) {
    local_9f8 = local_9f8 | 8;
  }
  if ((uVar9 >> 2 & 1) != 0) {
    local_9f8 = local_9f8 | 2;
  }
  _memset(&uStack_958,0,100);
  uStack_958 = DAT_0323b3cc;
  if (*(uint *)(param_1 + 0x208) < 8) {
    iStack_928 = param_1 + 500;
  }
  else {
    iStack_928 = *(int *)(param_1 + 500);
  }
  puStack_934 = local_830;
  uStack_930 = 0x406;
  uStack_9e0 = 0;
  uStack_c._0_1_ = 1;
  iStack_954 = iVar19;
  if (*(int *)(param_1 + 0x2ac) != 0) {
    local_9f8 = local_9f8 | 0x80;
    FUN_00966a40(0x100,0x40);
    FUN_00966c60(uStack_9e0);
    *(undefined2 *)(puStack_9e4 + 2) = 0;
    *(undefined2 *)((int)puStack_9e4 + 10) = 0;
    uStack_c._0_1_ = 2;
    *puStack_9e4 = 0x44000400;
    *(undefined2 *)(puStack_9e4 + 3) = 0;
    FUN_00969260(&uStack_9d0);
    uVar9 = GetDialogBaseUnits();
    iVar19 = MulDiv(uStack_9d0,4,uVar9 & 0xffff);
    *(short *)((int)puStack_9e4 + 0xe) = (short)iVar19;
    iVar19 = MulDiv(iStack_9cc,8,uVar9 >> 0x10);
    *(short *)(puStack_9e4 + 4) = (short)iVar19;
    puStack_950 = puStack_9e4;
    uStack_c._0_1_ = 1;
    FUN_00966d70();
  }
  uStack_884 = 7;
  uStack_888 = 0;
  uStack_898 = (undefined4 *)((uint)uStack_898._2_2_ << 0x10);
  pvStack_880 = (void *)0x0;
  uVar9 = *(uint *)(param_1 + 0x228);
  uStack_c = CONCAT31(uStack_c._1_3_,3);
  uStack_9e8 = uVar9;
  if ((uVar9 != 7) && (cVar7 = FUN_004182d2(uVar9,1), cVar7 != '\0')) {
    uStack_888 = 0;
    puVar18 = uStack_898;
    if (uStack_884 < 8) {
      puVar18 = &uStack_898;
    }
    *(undefined2 *)puVar18 = 0;
  }
  uStack_9f4 = 0;
  if (uVar9 != 0) {
    iVar19 = param_1 + 0x214;
    iStack_9f0 = iVar19;
    do {
      piVar10 = (int *)FUN_0081b542(auStack_8ec,uStack_9f4);
      iVar8 = *piVar10;
      puVar6 = (ushort *)piVar10[1];
      if (iVar8 != -4) {
        if (iVar8 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar8 + 0x18) < 8) {
          iVar15 = iVar8 + 4;
        }
        else {
          iVar15 = *(int *)(iVar8 + 4);
        }
        if ((ushort *)(iVar15 + *(int *)(iVar8 + 0x14) * 2) <= puVar6) {
          FUN_00a3fb10();
        }
      }
      uVar5 = *puVar6;
      uStack_9d0 = (uint)uVar5;
      if (uVar5 == 0x2f) {
        uStack_9d0 = 0x5c;
LAB_00967470:
        if (uStack_9f4 < uStack_9e8 - 1) {
          do {
            uVar9 = *(uint *)(iVar19 + 0x18);
            puVar18 = (undefined4 *)(iVar19 + 4);
            puVar12 = puVar18;
            if (7 < uVar9) {
              puVar12 = (undefined4 *)*puVar18;
            }
            if (puVar12 == (undefined4 *)0x0) {
LAB_009674be:
              FUN_00a3fb10();
            }
            else {
              puVar11 = puVar18;
              if (7 < uVar9) {
                puVar11 = (undefined4 *)*puVar18;
              }
              if (puVar12 < puVar11) goto LAB_009674be;
              puVar11 = puVar18;
              if (7 < uVar9) {
                puVar11 = (undefined4 *)*puVar18;
              }
              if ((undefined4 *)((int)puVar11 + *(int *)(iVar19 + 0x14) * 2) < puVar12)
              goto LAB_009674be;
            }
            puStack_9d8 = puVar12;
            if (iStack_9f0 != -4) {
              puVar11 = puVar18;
              if (7 < *(uint *)(iStack_9f0 + 0x18)) {
                puVar11 = (undefined4 *)*puVar18;
              }
              puVar2 = (undefined4 *)((int)puVar12 + uStack_9f4 * 2 + 2);
              if (puVar2 <= (undefined4 *)((int)puVar11 + *(int *)(iStack_9f0 + 0x14) * 2)) {
                if (7 < *(uint *)(iStack_9f0 + 0x18)) {
                  puVar18 = (undefined4 *)*puVar18;
                }
                if (puVar18 <= puVar2) goto LAB_00967507;
              }
              FUN_00a3fb10();
            }
LAB_00967507:
            psVar17 = (short *)((int)puVar12 + uStack_9f4 * 2 + 2);
            if (iVar19 != -4) {
              if (iVar19 == 0) {
                FUN_00a3fb10();
              }
              if (*(uint *)(iVar19 + 0x18) < 8) {
                iVar8 = iVar19 + 4;
              }
              else {
                iVar8 = *(int *)(iVar19 + 4);
              }
              if ((short *)(iVar8 + *(int *)(iVar19 + 0x14) * 2) <= psVar17) {
                FUN_00a3fb10();
              }
            }
            sVar4 = *psVar17;
            iVar19 = iStack_9f0;
          } while ((((sVar4 == 0x5c) || (sVar4 == 0x2f)) && (uStack_9f4 != 0)) &&
                  (uStack_9f4 = uStack_9f4 + 1, uStack_9f4 < uStack_9e8 - 1));
        }
      }
      else if (uVar5 == 0x5c) goto LAB_00967470;
      FID_conflict_append(1,uStack_9d0 & 0xffff);
      uStack_9f4 = uStack_9f4 + 1;
      param_1 = local_9ec;
    } while (uStack_9f4 < uStack_9e8);
  }
  piVar10 = (int *)FUN_00432231(&iStack_9dc);
  iStack_92c = *piVar10;
  if (*(uint *)(iStack_92c + 0x18) < 8) {
    iStack_92c = iStack_92c + 4;
  }
  else {
    iStack_92c = *(int *)(iStack_92c + 4);
  }
  iStack_92c = iStack_92c + piVar10[1] * 2;
  if ((cStack_9d4 != '\0') && (iStack_9dc != 0)) {
    _free(*(void **)(iStack_9dc + 0x1c));
    if (7 < *(uint *)(iStack_9dc + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iStack_9dc + 4));
    }
    *(undefined4 *)(iStack_9dc + 0x18) = 7;
    *(undefined4 *)(iStack_9dc + 0x14) = 0;
    *(undefined2 *)(iStack_9dc + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iStack_9dc);
  }
  uStack_924 = local_9f8;
  puStack_914 = &LAB_00967080;
  iStack_918 = param_1;
  FUN_00853ce0(0);
  uVar21 = 0;
  uStack_c._0_1_ = 4;
  FUN_00853ce0(0);
  uStack_c = CONCAT31(uStack_c._1_3_,5);
  uVar9 = FUN_0085d710(param_1 + 0x280,auStack_968,auStack_980);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar9 == 0)) {
    FUN_00840480("..\\..\\src\\msw\\filedlg.cpp",0x251,"wxFileDialog::ShowModal","items > 0",
                 L"empty wildcard list");
  }
  uStack_8cc = 7;
  uStack_8d0 = 0;
  uStack_8e0 = (undefined4 *)((uint)uStack_8e0._2_2_ << 0x10);
  pvStack_8c8 = (void *)0x0;
  uStack_c = CONCAT31(uStack_c._1_3_,6);
  if (uVar9 != 0) {
    iVar19 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_964 <= uVar21)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      FID_conflict_append(iVar19 + iStack_960,0,0xffffffff);
      psVar17 = &DAT_030577d8;
      do {
        psVar14 = psVar17;
        psVar17 = psVar14 + 1;
      } while (*psVar14 != 0);
      FUN_00473ccc(&DAT_030577d8,(int)(psVar14 + -0x182bbec) >> 1);
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_97c <= uVar21)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      FID_conflict_append(iVar19 + iStack_978,0,0xffffffff);
      psVar17 = &DAT_030577d8;
      do {
        psVar14 = psVar17;
        psVar17 = psVar14 + 1;
      } while (*psVar14 != 0);
      FUN_00473ccc(&DAT_030577d8,(int)(psVar14 + -0x182bbec) >> 1);
      uVar21 = uVar21 + 1;
      iVar19 = iVar19 + 0x24;
    } while (uVar21 < uVar9);
  }
  uStack_9f4 = 0;
  if (uStack_8d0 != 0) {
    do {
      uVar9 = uStack_9f4;
      FUN_0081feb2(&uStack_9d0,uStack_9f4);
      if (uStack_9d0 == 0x7c) {
        if (uStack_8cc < 8) {
          puVar18 = &uStack_8e0;
LAB_0096782a:
          puVar12 = uStack_8e0;
          if (uStack_8cc < 8) {
            puVar12 = &uStack_8e0;
          }
          if (puVar18 < puVar12) goto LAB_00967858;
          puVar12 = uStack_8e0;
          if (uStack_8cc < 8) {
            puVar12 = &uStack_8e0;
          }
          if ((undefined4 *)((int)puVar12 + uStack_8d0 * 2) < puVar18) goto LAB_00967858;
        }
        else {
          puVar18 = uStack_8e0;
          if (uStack_8e0 != (undefined4 *)0x0) goto LAB_0096782a;
LAB_00967858:
          FUN_00a3fb10();
        }
        puStack_9d8 = puVar18;
        if (&stack0x00000000 != (undefined *)0x8e0) {
          puVar12 = uStack_8e0;
          if (uStack_8cc < 8) {
            puVar12 = &uStack_8e0;
          }
          puVar11 = (undefined4 *)((int)puVar18 + uVar9 * 2);
          if (puVar11 <= (undefined4 *)((int)puVar12 + uStack_8d0 * 2)) {
            puVar12 = uStack_8e0;
            if (uStack_8cc < 8) {
              puVar12 = &uStack_8e0;
            }
            uVar9 = uStack_9f4;
            if (puVar12 <= puVar11) goto LAB_009678bc;
          }
          FUN_00a3fb10();
          uVar9 = uStack_9f4;
        }
LAB_009678bc:
        psVar17 = (short *)((int)puVar18 + uVar9 * 2);
        if (&stack0x00000000 != (undefined *)0x8e0) {
          if (&stack0x00000000 == (undefined *)0x8e4) {
            FUN_00a3fb10();
          }
          puVar18 = uStack_8e0;
          if (uStack_8cc < 8) {
            puVar18 = &uStack_8e0;
          }
          if ((short *)((int)puVar18 + uStack_8d0 * 2) <= psVar17) {
            FUN_00a3fb10();
          }
        }
        *psVar17 = 0;
      }
      uStack_9f4 = uVar9 + 1;
    } while (uStack_9f4 < uStack_8d0);
  }
  iVar19 = local_9ec;
  if (uStack_8cc < 8) {
    puStack_94c = &uStack_8e0;
  }
  else {
    puStack_94c = uStack_8e0;
  }
  iStack_940 = *(int *)(local_9ec + 0x2a4) + 1;
  piVar10 = (int *)FUN_00432231(&iStack_9dc);
  iVar8 = *piVar10;
  if (*(uint *)(iVar8 + 0x18) < 8) {
    iVar8 = iVar8 + 4;
  }
  else {
    iVar8 = *(int *)(iVar8 + 4);
  }
  pwVar1 = (wchar_t *)(iVar8 + piVar10[1] * 2);
  pwVar16 = pwVar1;
  do {
    wVar3 = *pwVar16;
    pwVar16 = pwVar16 + 1;
  } while (wVar3 != L'\0');
  uVar9 = (int)pwVar16 - (int)(pwVar1 + 1) >> 1;
  sVar20 = 0xfffd;
  if (uVar9 < 0xfffe) {
    sVar20 = uVar9;
  }
  _wcsncpy(&DAT_032c1290,pwVar1,sVar20);
  (&DAT_032c1290)[sVar20] = 0;
  if ((cStack_9d4 != '\0') && (iStack_9dc != 0)) {
    _free(*(void **)(iStack_9dc + 0x1c));
    if (7 < *(uint *)(iStack_9dc + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iStack_9dc + 4));
    }
    *(undefined4 *)(iStack_9dc + 0x18) = 7;
    *(undefined4 *)(iStack_9dc + 0x14) = 0;
    *(undefined2 *)(iStack_9dc + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iStack_9dc);
  }
  puStack_93c = &DAT_032c1290;
  uStack_938 = 0xfffe;
  uStack_860 = 7;
  uStack_864 = 0;
  uStack_874 = (uint)uStack_874._2_2_ << 0x10;
  pvStack_85c = (void *)0x0;
  uStack_c._0_1_ = 7;
  if ((*(uint *)(iVar19 + 0xe0) >> 1 & 1) != 0) {
    puVar18 = uStack_8e0;
    if (uStack_8cc < 8) {
      puVar18 = &uStack_8e0;
    }
    iVar19 = iStack_940 * 2 + -1;
    if (0 < iVar19) {
      do {
        if (puVar18 == (undefined4 *)0x0) {
          iVar8 = 0;
        }
        else {
          puVar12 = puVar18;
          do {
            sVar4 = *(short *)puVar12;
            puVar12 = (undefined4 *)((int)puVar12 + 2);
          } while (sVar4 != 0);
          iVar8 = (int)puVar12 - (int)((int)puVar18 + 2) >> 1;
        }
        iVar19 = iVar19 + -1;
        puVar18 = (undefined4 *)((int)puVar18 + iVar8 * 2 + 2);
      } while (iVar19 != 0);
    }
    if (puVar18 == (undefined4 *)0x0) {
      puVar18 = (undefined4 *)&DAT_00fae9c8;
    }
    uStack_9a0 = uStack_9a0 & 0xffff0000;
    uStack_98c = 7;
    uStack_990 = 0;
    puVar12 = puVar18;
    do {
      sVar4 = *(short *)puVar12;
      puVar12 = (undefined4 *)((int)puVar12 + 2);
    } while (sVar4 != 0);
    FID_conflict_assign(puVar18,(int)puVar12 - (int)((int)puVar18 + 2) >> 1);
    pvStack_988 = (void *)0x0;
    uStack_c._0_1_ = 8;
    uStack_8a8 = 7;
    uStack_8ac = 0;
    uStack_8bc = uStack_8bc & 0xffff0000;
    psVar17 = &DAT_00d24020;
    do {
      psVar14 = psVar17;
      psVar17 = psVar14 + 1;
    } while (*psVar14 != 0);
    FID_conflict_assign(&DAT_00d24020,(int)(psVar14 + -0x692010) >> 1);
    pvStack_8a4 = (void *)0x0;
    uStack_c._0_1_ = 9;
    puVar13 = (undefined *)FUN_00968f70(auStack_9c8,auStack_8c0,auStack_9a4);
    uStack_c._0_1_ = 10;
    if (auStack_878 != puVar13) {
      FID_conflict_assign(puVar13,0,0xffffffff);
    }
    _free(pvStack_9ac);
    if (7 < uStack_9b0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_9c4);
    }
    uStack_9b0 = 7;
    uStack_9b4 = 0;
    uStack_9c4 = uStack_9c4 & 0xffff0000;
    _free(pvStack_8a4);
    if (7 < uStack_8a8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_8bc);
    }
    uStack_8a8 = 7;
    uStack_8ac = 0;
    uStack_8bc = uStack_8bc & 0xffff0000;
    uStack_c._0_1_ = 7;
    _free(pvStack_988);
    if (7 < uStack_98c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_9a0);
    }
    uStack_9a0 = uStack_9a0 & 0xffff0000;
    uStack_98c = 7;
    uStack_990 = 0;
    psVar17 = &DAT_00d5fb4c;
    do {
      psVar14 = psVar17;
      psVar17 = psVar14 + 1;
    } while (*psVar14 != 0);
    FID_conflict_assign(&DAT_00d5fb4c,(int)(psVar14 + -0x6afda6) >> 1);
    pvStack_988 = (void *)0x0;
    uStack_c._0_1_ = 0xb;
    cVar7 = FUN_00852010(auStack_9a4,0);
    uStack_c._0_1_ = 7;
    _free(pvStack_988);
    if (7 < uStack_98c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_9a0);
    }
    if (cVar7 != '\0') {
      puVar13 = (undefined *)FUN_00852560(auStack_9c8,2,0xffffffff);
      uStack_c._0_1_ = 0xc;
      if (auStack_878 != puVar13) {
        FID_conflict_assign(puVar13,0,0xffffffff);
      }
      uStack_c._0_1_ = 7;
      _free(pvStack_9ac);
      if (7 < uStack_9b0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_9c4);
      }
      piVar10 = (int *)FUN_00432231(&iStack_9dc);
      iStack_91c = *piVar10;
      if (*(uint *)(iStack_91c + 0x18) < 8) {
        iStack_91c = iStack_91c + 4;
      }
      else {
        iStack_91c = *(int *)(iStack_91c + 4);
      }
      iStack_91c = iStack_91c + piVar10[1] * 2;
      if ((cStack_9d4 != '\0') && (iStack_9dc != 0)) {
        _free(*(void **)(iStack_9dc + 0x1c));
        if (7 < *(uint *)(iStack_9dc + 0x18)) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(*(undefined4 *)(iStack_9dc + 4));
        }
        *(undefined4 *)(iStack_9dc + 0x18) = 7;
        *(undefined4 *)(iStack_9dc + 0x14) = 0;
        *(undefined2 *)(iStack_9dc + 4) = 0;
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iStack_9dc);
      }
    }
  }
  FUN_0085f2e0(auStack_854);
  iVar19 = local_9ec;
  uStack_c._0_1_ = 0xd;
  cVar7 = FUN_00966e80(*(undefined4 *)(local_9ec + 0xe0));
  if (cVar7 == '\0') {
    _free(pvStack_838);
    if (7 < uStack_83c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_850);
    }
    uStack_83c = 7;
    uStack_840 = 0;
    uStack_850 = uStack_850 & 0xffff0000;
    _free(pvStack_85c);
    if (7 < uStack_860) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_874);
    }
    uStack_860 = 7;
    uStack_864 = 0;
    uStack_874 = uStack_874 & 0xffff0000;
    _free(pvStack_8c8);
    if (7 < uStack_8cc) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_8e0);
    }
    uStack_8cc = 7;
    uStack_8d0 = 0;
    uStack_8e0 = (undefined4 *)((uint)uStack_8e0 & 0xffff0000);
    uStack_c._0_1_ = 4;
    FUN_00853f30();
    uStack_c._0_1_ = 3;
    FUN_00853f30();
    _free(pvStack_880);
    if (7 < uStack_884) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_898);
    }
    uStack_884 = 7;
    uStack_888 = 0;
    uStack_898 = (undefined4 *)((uint)uStack_898 & 0xffff0000);
    uStack_c = (uint)uStack_c._1_3_ << 8;
    FUN_00966b50();
    uStack_c = 0xffffffff;
    FUN_00966380(auStack_970);
  }
  else {
    if ((local_9f8 & 8) != 0) {
      FUN_0085f380(auStack_854);
    }
    uStack_9e8 = iVar19 + 0x2b0;
    FUN_00853d00();
    if (((*(uint *)(iVar19 + 0xe0) >> 5 & 1) == 0) ||
       (*(short *)(&DAT_032c128e + (uint)uStack_920 * 2) != 0)) {
      *(int *)(iVar19 + 0x2a4) = iStack_940 + -1;
      if ((uStack_91e == 0) || ((&DAT_032c1290)[uStack_91e] == 0)) {
        puVar18 = uStack_8e0;
        if (uStack_8cc < 8) {
          puVar18 = &uStack_8e0;
        }
        iVar8 = iStack_940 * 2 + -1;
        if (0 < iVar8) {
          do {
            if (puVar18 == (undefined4 *)0x0) {
              iVar15 = 0;
            }
            else {
              puVar12 = puVar18;
              do {
                sVar4 = *(short *)puVar12;
                puVar12 = (undefined4 *)((int)puVar12 + 2);
              } while (sVar4 != 0);
              iVar15 = (int)puVar12 - (int)((int)puVar18 + 2) >> 1;
            }
            iVar8 = iVar8 + -1;
            puVar18 = (undefined4 *)((int)puVar18 + iVar15 * 2 + 2);
          } while (iVar8 != 0);
        }
        FUN_004325b6(puVar18);
        uStack_c._0_1_ = 0x11;
        FUN_004325b6(&DAT_032c1290);
        uStack_c._0_1_ = 0x12;
        iVar8 = FUN_00968f70(auStack_9c8,auStack_9a4,auStack_8c0);
        uStack_c._0_1_ = 0x13;
        if (iVar19 + 0x25c != iVar8) {
          FID_conflict_assign(iVar8,0,0xffffffff);
        }
        _free(pvStack_9ac);
        if (7 < uStack_9b0) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_9c4);
        }
        uStack_9b0 = 7;
        uStack_9b4 = 0;
        uStack_9c4 = uStack_9c4 & 0xffff0000;
        _free(pvStack_988);
        if (7 < uStack_98c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_9a0);
        }
        uStack_98c = 7;
        uStack_990 = 0;
        uStack_9a0 = uStack_9a0 & 0xffff0000;
        uStack_c._0_1_ = 0xd;
        _free(pvStack_8a4);
        if (7 < uStack_8a8) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_8bc);
        }
        piVar10 = (int *)FUN_00432231(&iStack_9dc);
        iVar19 = *piVar10;
        if (*(uint *)(iVar19 + 0x18) < 8) {
          iVar19 = iVar19 + 4;
        }
        else {
          iVar19 = *(int *)(iVar19 + 4);
        }
        pwVar1 = (wchar_t *)(iVar19 + piVar10[1] * 2);
        pwVar16 = pwVar1;
        do {
          wVar3 = *pwVar16;
          pwVar16 = pwVar16 + 1;
        } while (wVar3 != L'\0');
        uVar9 = (int)pwVar16 - (int)(pwVar1 + 1) >> 1;
        sVar20 = 0xfffd;
        if (uVar9 < 0xfffe) {
          sVar20 = uVar9;
        }
        _wcsncpy(&DAT_032c1290,pwVar1,sVar20);
        (&DAT_032c1290)[sVar20] = 0;
        FUN_00432214();
      }
      iVar19 = local_9ec;
      psVar17 = &DAT_032c1290;
      do {
        psVar14 = psVar17;
        psVar17 = psVar14 + 1;
      } while (*psVar14 != 0);
      FID_conflict_assign(&DAT_032c1290,(int)(psVar14 + -0x1960948) >> 1);
      psVar17 = (short *)FUN_0085d3f0(&DAT_032c1290);
      if (psVar17 == (short *)0x0) {
        FUN_00432156();
      }
      else {
        psVar14 = psVar17;
        do {
          sVar4 = *psVar14;
          psVar14 = psVar14 + 1;
        } while (sVar4 != 0);
        FID_conflict_assign(psVar17,(int)psVar14 - (int)(psVar17 + 1) >> 1);
      }
      FUN_00854700(iVar19 + 0x25c,1);
      FUN_004325b6(&DAT_032c1290);
      uStack_c._0_1_ = 0x14;
      iVar8 = FUN_0085d4d0(auStack_9c8,auStack_9a4);
      uStack_c = CONCAT31(uStack_c._1_3_,0x15);
      if (iVar19 + 0x214 != iVar8) {
        FID_conflict_assign(iVar8,0,0xffffffff);
      }
      _free(pvStack_9ac);
      if (7 < uStack_9b0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_9c4);
      }
      uStack_9b0 = 7;
      uStack_9b4 = 0;
      uStack_9c4 = uStack_9c4 & 0xffff0000;
      _free(pvStack_988);
      if (7 < uStack_98c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_9a0);
      }
      uStack_98c = 7;
      uStack_990 = 0;
      uStack_9a0 = uStack_9a0 & 0xffff0000;
    }
    else {
      iStack_9f0 = iVar19 + 0x214;
      psVar17 = &DAT_032c1290;
      do {
        psVar14 = psVar17;
        psVar17 = psVar14 + 1;
      } while (*psVar14 != 0);
      FID_conflict_assign(&DAT_032c1290,(int)(psVar14 + -0x1960948) >> 1);
      uVar9 = (uint)uStack_920;
      psVar17 = &DAT_032c1290 + uVar9;
      if (psVar17 == (short *)0x0) {
        FUN_00432156();
      }
      else {
        psVar14 = psVar17;
        do {
          sVar4 = *psVar14;
          psVar14 = psVar14 + 1;
        } while (sVar4 != 0);
        FID_conflict_assign(psVar17,(int)psVar14 - (int)(&DAT_032c1292 + uVar9 * 2) >> 1);
      }
      FUN_00854700(iVar19 + 0x25c,1);
      iVar19 = uVar9 + 1 + *(int *)(iVar19 + 0x270);
      psVar17 = &DAT_032c1290 + iVar19;
      sVar4 = *psVar17;
      while (sVar4 != 0) {
        FUN_004325b6(psVar17);
        uStack_c._0_1_ = 0xe;
        FUN_00854700(auStack_9c8,1);
        uStack_c._0_1_ = 0xd;
        _free(pvStack_9ac);
        if (7 < uStack_9b0) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_9c4);
        }
        if (psVar17 == (short *)0x0) {
          iVar8 = 0;
        }
        else {
          psVar14 = psVar17 + 1;
          do {
            sVar4 = *psVar17;
            psVar17 = psVar17 + 1;
          } while (sVar4 != 0);
          iVar8 = (int)psVar17 - (int)psVar14 >> 1;
        }
        iVar19 = iVar19 + 1 + iVar8;
        psVar17 = &DAT_032c1290 + iVar19;
        sVar4 = (&DAT_032c1290)[iVar19];
      }
      uStack_8bc = uStack_8bc & 0xffff0000;
      uStack_8a8 = 7;
      uStack_8ac = 0;
      FID_conflict_assign(iStack_9f0,0,0xffffffff);
      pvStack_8a4 = (void *)0x0;
      uStack_c = CONCAT31(uStack_c._1_3_,0xf);
      piVar10 = (int *)FUN_0081b3d8(&iStack_9dc);
      if (*piVar10 != -4) {
        if (*piVar10 == 0) {
          FUN_00a3fb10();
        }
        iVar19 = *piVar10;
        if (*(uint *)(iVar19 + 0x18) < 8) {
          iVar8 = iVar19 + 4;
        }
        else {
          iVar8 = *(int *)(iVar19 + 4);
        }
        if ((uint)(iVar8 + *(int *)(iVar19 + 0x14) * 2) <= (uint)piVar10[1]) {
          FUN_00a3fb10();
        }
      }
      if (*(short *)piVar10[1] != 0x5c) {
        FID_conflict_append(1,0x5c);
      }
      iVar19 = local_9ec;
      iVar8 = FUN_008531f0(auStack_9c8,auStack_8c0,local_9ec + 0x25c);
      uStack_c = CONCAT31(uStack_c._1_3_,0x10);
      if (iVar19 + 0x238 != iVar8) {
        FID_conflict_assign(iVar8,0,0xffffffff);
      }
      _free(pvStack_9ac);
      if (7 < uStack_9b0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_9c4);
      }
      *(int *)(iVar19 + 0x2a4) = iStack_940 + -1;
      _free(pvStack_8a4);
      if (7 < uStack_8a8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_8bc);
      }
    }
    _free(pvStack_838);
    if (7 < uStack_83c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_850);
    }
    uStack_83c = 7;
    uStack_840 = 0;
    uStack_850 = uStack_850 & 0xffff0000;
    _free(pvStack_85c);
    if (7 < uStack_860) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_874);
    }
    uStack_860 = 7;
    uStack_864 = 0;
    uStack_874 = uStack_874 & 0xffff0000;
    _free(pvStack_8c8);
    if (7 < uStack_8cc) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_8e0);
    }
    uStack_8cc = 7;
    uStack_8d0 = 0;
    uStack_8e0 = (undefined4 *)((uint)uStack_8e0 & 0xffff0000);
    uStack_c._0_1_ = 4;
    FUN_00853f30();
    uStack_c._0_1_ = 3;
    FUN_00853f30();
    _free(pvStack_880);
    if (7 < uStack_884) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_898);
    }
    uStack_884 = 7;
    uStack_888 = 0;
    uStack_898 = (undefined4 *)((uint)uStack_898 & 0xffff0000);
    uStack_c = (uint)uStack_c._1_3_ << 8;
    FUN_00966b50();
    uStack_c = 0xffffffff;
    FUN_00966380(auStack_970);
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_00968690(void)

{
  return &PTR_u_wxFileDialogBase_0323b414;
}



void __fastcall FUN_009686a0(int param_1)

{
  *(undefined4 *)(param_1 + 0x2a4) = 0;
  *(undefined4 *)(param_1 + 0xe0) = 0;
  *(undefined4 *)(param_1 + 0x2a8) = 0;
  *(undefined4 *)(param_1 + 0x2ac) = 0;
  return;
}



undefined4 __fastcall FUN_009686c0(int param_1)

{
  undefined4 uVar1;
  
  if ((*(code **)(param_1 + 0x2ac) != (code *)0x0) && (*(int *)(param_1 + 0x2a8) == 0)) {
    uVar1 = (**(code **)(param_1 + 0x2ac))(param_1);
    *(undefined4 *)(param_1 + 0x2a8) = uVar1;
    return 1;
  }
  return 0;
}



undefined4 * __fastcall FUN_009686f0(undefined4 *param_1)

{
  FUN_0044cc1c();
  *param_1 = wxFileDialogBase::vftable;
  param_1[0x81] = 0;
  param_1[0x82] = 7;
  *(undefined2 *)(param_1 + 0x7d) = 0;
  param_1[0x83] = 0;
  param_1[0x8b] = 7;
  param_1[0x8a] = 0;
  *(undefined2 *)(param_1 + 0x86) = 0;
  param_1[0x8c] = 0;
  param_1[0x94] = 7;
  param_1[0x93] = 0;
  *(undefined2 *)(param_1 + 0x8f) = 0;
  param_1[0x95] = 0;
  param_1[0x9d] = 7;
  param_1[0x9c] = 0;
  *(undefined2 *)(param_1 + 0x98) = 0;
  param_1[0x9e] = 0;
  param_1[0xa6] = 7;
  param_1[0xa5] = 0;
  *(undefined2 *)(param_1 + 0xa1) = 0;
  param_1[0xa7] = 0;
  param_1[0xa9] = 0;
  param_1[0x38] = 0;
  param_1[0xaa] = 0;
  param_1[0xab] = 0;
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x2b0);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009686f0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_00968820(undefined4 param_1,void **param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  void **ppvVar7;
  void **local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd8d9;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  puVar4 = (undefined4 *)FUN_00847c00(param_4,param_2,2);
  local_4 = 1;
  puVar5 = (undefined4 *)FUN_00847c00(param_3,param_2,1);
  uVar1 = *(undefined4 *)*puVar4;
  uVar2 = *(undefined4 *)*puVar5;
  local_4._0_1_ = 2;
  uVar6 = FUN_008854f0(uVar3);
  FUN_00853850(param_1,uVar6,uVar2,uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  ppvVar7 = (void **)FUN_00850350();
  if (param_2 != ppvVar7) {
    *(short *)(param_2 + 2) = *(short *)(param_2 + 2) + -1;
    if (*(short *)(param_2 + 2) == 0) {
      if (*(char *)((int)param_2 + 10) != '\0') {
        _free(*param_2);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_2);
    }
    FUN_00850350();
  }
  local_4 = local_4 & 0xffffff00;
  ppvVar7 = (void **)FUN_00850350();
  if (local_14 != ppvVar7) {
    *(short *)(local_14 + 2) = *(short *)(local_14 + 2) + -1;
    if (*(short *)(local_14 + 2) == 0) {
      if (*(char *)((int)local_14 + 10) != '\0') {
        _free(*local_14);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_14);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4
FUN_00968960(undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4,char param_5,
            int param_6,undefined4 param_7,char param_8,int param_9,undefined4 param_10,
            char param_11)

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdd918;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  local_4 = 2;
  FUN_00840a00(&param_9,param_2,3);
  FUN_00840a00(&param_6,param_2,2);
  FUN_00840a00(&param_3,param_2,1);
  uVar5 = FUN_008854f0(uVar4);
  uVar6 = FUN_00884e20();
  uVar6 = FUN_00884e20(uVar6);
  uVar6 = FUN_00884e20(uVar6);
  FUN_00853850(param_1,uVar5,uVar6);
  iVar3 = param_9;
  iVar2 = param_6;
  iVar1 = param_3;
  if ((param_5 != '\0') && (param_3 != 0)) {
    _free(*(void **)(param_3 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  if ((param_8 != '\0') && (param_6 != 0)) {
    _free(*(void **)(param_6 + 0x1c));
    if (7 < *(uint *)(iVar2 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar2 + 4));
    }
    *(undefined4 *)(iVar2 + 0x18) = 7;
    *(undefined4 *)(iVar2 + 0x14) = 0;
    *(undefined2 *)(iVar2 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
  if ((param_11 != '\0') && (param_9 != 0)) {
    _free(*(void **)(param_9 + 0x1c));
    if (7 < *(uint *)(iVar3 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar3 + 4));
    }
    *(undefined4 *)(iVar3 + 0x18) = 7;
    *(undefined4 *)(iVar3 + 0x14) = 0;
    *(undefined2 *)(iVar3 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar3);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall
FUN_00968af0(int param_1_00,undefined4 param_1,char *param_2,char *param_3,char *param_4,
            char *param_5,uint param_6)

{
  char *pcVar1;
  uint uVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  char *pcVar6;
  undefined auStack_154 [4];
  undefined4 uStack_150;
  undefined4 *puStack_14c;
  undefined4 uStack_148;
  char *pcStack_144;
  char **ppcStack_140;
  char *pcStack_13c;
  char *pcStack_138;
  undefined local_118 [4];
  uint local_114;
  undefined4 local_104;
  uint local_100;
  void *local_fc;
  undefined local_f4 [4];
  uint local_f0;
  undefined4 local_e0;
  uint local_dc;
  void *local_d8;
  undefined local_d0 [12];
  char local_c4 [20];
  undefined local_b0 [44];
  uint local_84;
  void *local_80;
  undefined local_78 [72];
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd99a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((char *)(param_1_00 + 0x1f0) != param_2) {
    pcStack_138 = (char *)0x0;
    pcStack_13c = param_2;
    ppcStack_140 = (char **)0x968b3b;
    FID_conflict_assign();
  }
  if ((char *)(param_1_00 + 0x214) != param_3) {
    pcStack_138 = (char *)0x0;
    pcStack_13c = param_3;
    ppcStack_140 = (char **)0x968b55;
    FID_conflict_assign();
  }
  if ((char *)(param_1_00 + 0x25c) != param_4) {
    pcStack_138 = (char *)0x0;
    pcStack_13c = param_4;
    ppcStack_140 = (char **)0x968b6f;
    FID_conflict_assign();
  }
  pcVar1 = (char *)(param_1_00 + 0x280);
  if (pcVar1 != param_5) {
    pcStack_138 = (char *)0x0;
    pcStack_13c = param_5;
    ppcStack_140 = (char **)0x968b8b;
    FID_conflict_assign();
  }
  *(undefined4 *)(param_1_00 + 0x44) = param_1;
  *(uint *)(param_1_00 + 0xe0) = param_6;
  *(undefined4 *)(param_1_00 + 0x2a4) = 0;
  if (((param_6 & 1) == 0) && ((param_6 >> 1 & 1) == 0)) {
    *(uint *)(param_1_00 + 0xe0) = param_6 | 1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (((*(uint *)(param_1_00 + 0xe0) >> 1 & 1) != 0) && ((*(byte *)(param_1_00 + 0xe0) & 1) != 0))
    {
      pcStack_138 = "!(HasFdFlag(wxFD_SAVE) && HasFdFlag(wxFD_OPEN))";
      pcStack_13c = "wxFileDialogBase::Create";
      ppcStack_140 = (char **)0x4f;
      pcStack_144 = "..\\..\\src\\common\\fldlgcmn.cpp";
      uStack_148 = 0x968bfb;
      FUN_00840480();
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      uVar2 = *(uint *)(param_1_00 + 0xe0);
      if (((uVar2 >> 1 & 1) != 0) && (((uVar2 >> 5 & 1) != 0 || ((uVar2 >> 4 & 1) != 0)))) {
        pcStack_138 = 
        "!HasFdFlag(wxFD_SAVE) || (!HasFdFlag(wxFD_MULTIPLE) && !HasFdFlag(wxFD_FILE_MUST_EXIST))";
        pcStack_13c = "wxFileDialogBase::Create";
        ppcStack_140 = (char **)0x53;
        pcStack_144 = "..\\..\\src\\common\\fldlgcmn.cpp";
        uStack_148 = 0x968c41;
        FUN_00840480();
      }
      if (((PTR_FUN_03235c4c != (undefined *)0x0) && ((*(byte *)(param_1_00 + 0xe0) & 1) != 0)) &&
         ((*(uint *)(param_1_00 + 0xe0) >> 2 & 1) != 0)) {
        pcStack_138 = "!HasFdFlag(wxFD_OPEN) || !HasFdFlag(wxFD_OVERWRITE_PROMPT)";
        pcStack_13c = "wxFileDialogBase::Create";
        ppcStack_140 = (char **)0x56;
        pcStack_144 = "..\\..\\src\\common\\fldlgcmn.cpp";
        uStack_148 = 0x968c7d;
        FUN_00840480();
      }
    }
  }
  if (*(int *)(param_5 + 0x14) != 0) {
    pcStack_138 = param_5;
    pcStack_13c = (char *)0x968c94;
    cVar3 = FUN_00855fb0();
    if (cVar3 == '\0') {
      pcStack_138 = (char *)0x7c;
      pcStack_13c = (char *)0x968cad;
      iVar4 = FUN_00850910();
      if (iVar4 != -1) {
        ExceptionList = local_c;
        return 1;
      }
      pcStack_138 = (char *)0x0;
      pcStack_13c = "*";
      ppcStack_140 = (char **)0x968cca;
      iVar4 = FUN_00821278();
      if (iVar4 == -1) {
        iVar4 = 0;
      }
      else {
        iVar4 = iVar4 + 1;
      }
      pcStack_138 = (char *)0x968cec;
      FUN_004325b6();
      local_4 = 4;
      pcStack_138 = (char *)0x968d08;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,5);
      iVar5 = FUN_0084a340();
      if (iVar5 == 0) {
        pcStack_138 = (char *)0x968d40;
        FUN_0084d360();
      }
      else {
        pcStack_138 = local_78;
        pcStack_13c = (char *)0x968d31;
        FUN_0084f210();
      }
      pcStack_138 = (char *)0x968d50;
      FUN_008433c0();
      ppcStack_140 = &pcStack_13c;
      pcStack_144 = (char *)0x968d61;
      FUN_00432231();
      puStack_14c = &uStack_148;
      uStack_150 = 0x968d72;
      FUN_00432231();
      puStack_14c = (undefined4 *)local_d0;
      uStack_150 = 0x968d7e;
      FUN_00432231();
      local_4._0_1_ = 7;
      FUN_00855d60(auStack_154,iVar4);
      pcVar6 = (char *)FUN_00968960(local_30,local_b0);
      local_4._0_1_ = 8;
      if (pcVar1 != pcVar6) {
        pcStack_138 = (char *)0x0;
        ppcStack_140 = (char **)0x968dc8;
        pcStack_13c = pcVar6;
        FID_conflict_assign();
      }
      FUN_0040159c();
      FUN_00432214();
      local_4 = CONCAT31(local_4._1_3_,5);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
      ExceptionList = local_c;
      return 1;
    }
  }
  pcStack_138 = (char *)0x968e20;
  FUN_004325b6();
  local_4 = 0;
  pcStack_138 = (char *)0x968e35;
  FUN_0043c211();
  local_4 = CONCAT31(local_4._1_3_,1);
  iVar4 = FUN_0084a340();
  if (iVar4 == 0) {
    pcStack_138 = (char *)0x968e66;
    FUN_0084d360();
  }
  else {
    pcStack_138 = local_118;
    pcStack_13c = (char *)0x968e5a;
    FUN_0084f210();
  }
  pcStack_138 = (char *)0x968e73;
  FUN_008433c0();
  pcStack_138 = &DAT_00d5fbd4;
  pcStack_13c = local_c4;
  ppcStack_140 = (char **)local_f4;
  local_4._0_1_ = 2;
  pcStack_144 = (char *)0x968e94;
  pcVar6 = (char *)FUN_00968820();
  local_4._0_1_ = 3;
  if (pcVar1 != pcVar6) {
    pcStack_138 = (char *)0x0;
    ppcStack_140 = (char **)0x968eae;
    pcStack_13c = pcVar6;
    FID_conflict_assign();
  }
  pcStack_138 = (char *)0x968eb8;
  _free(local_d8);
  if (7 < local_dc) {
                    // WARNING: Subroutine does not return
    pcStack_138 = &UNK_00968ed0;
    FUN_00a3f6a1();
  }
  local_f0 = local_f0 & 0xffff0000;
  local_dc = 7;
  local_e0 = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0081b5bc();
  pcStack_138 = (char *)0x968f02;
  _free(local_fc);
  if (7 < local_100) {
                    // WARNING: Subroutine does not return
    pcStack_138 = &UNK_00968f15;
    FUN_00a3f6a1();
  }
  local_100 = 7;
  local_104 = 0;
  local_114 = local_114 & 0xffff0000;
  pcStack_138 = (char *)0x968f34;
  _free(local_80);
  if (local_84 < 8) {
    ExceptionList = local_c;
    return 1;
  }
                    // WARNING: Subroutine does not return
  pcStack_138 = &UNK_00968f4d;
  FUN_00a3f6a1();
}



void FUN_00968f70(int param_1,undefined2 *param_2)

{
  int iVar1;
  undefined *puVar2;
  int *piVar3;
  byte bVar4;
  undefined2 *local_a4;
  undefined auStack_88 [3];
  char local_85;
  undefined2 **local_84;
  undefined4 local_80;
  undefined2 local_7c [18];
  undefined local_58 [4];
  uint local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined2 local_34 [10];
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd9e0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_88;
  ExceptionList = &local_c;
  local_84 = (undefined2 **)&stack0xffffff60;
  local_a4 = local_34;
  local_80 = 0;
  FUN_00852730();
  local_a4 = (undefined2 *)0x2e;
  local_4._0_1_ = 0;
  local_4._1_3_ = 0;
  iVar1 = FUN_00850910();
  if ((iVar1 == -1) || (local_20 + -1 <= iVar1)) {
    local_84 = &local_a4;
    local_a4 = (undefined2 *)0x3b;
    FUN_00852890(local_58);
    local_a4 = (undefined2 *)0x2e;
    local_4._0_1_ = 1;
    iVar1 = FUN_00850910();
    if ((iVar1 != -1) && (iVar1 != local_44 + -1)) {
      local_84 = (undefined2 **)&stack0xffffff60;
      local_a4 = local_7c;
      puVar2 = (undefined *)FUN_00852730();
      local_4._0_1_ = 2;
      if (local_58 != puVar2) {
        local_a4 = (undefined2 *)0x0;
        FID_conflict_assign(puVar2);
      }
      local_4._0_1_ = 1;
      FUN_0040159c();
      local_a4 = (undefined2 *)0x2a;
      iVar1 = FUN_00850910();
      if (iVar1 == -1) {
        local_a4 = (undefined2 *)0x3f;
        iVar1 = FUN_00850910();
        if (iVar1 != -1) goto LAB_0096911d;
        local_a4 = local_7c;
        iVar1 = FUN_00852de0();
        bVar4 = 2;
        if (*(int *)(iVar1 + 0x14) == 0) goto LAB_00969121;
        local_85 = '\0';
      }
      else {
LAB_0096911d:
        bVar4 = (byte)local_80;
LAB_00969121:
        local_85 = '\x01';
      }
      if ((bVar4 & 2) != 0) {
        FUN_0040159c();
      }
      if (local_85 == '\0') {
        local_a4 = (undefined2 *)0x969165;
        piVar3 = (int *)FUN_0085ca50();
        if (*piVar3 != 0x2e) {
          local_a4 = &DAT_00fae798;
          FUN_008535a0(local_7c);
          local_4._0_1_ = 3;
          local_a4 = (undefined2 *)0x969193;
          FUN_0043261a();
          local_4._0_1_ = 1;
          FUN_0040159c();
        }
        local_a4 = param_2;
        FUN_008531f0(param_1);
      }
      else {
        local_a4 = (undefined2 *)0x969142;
        FUN_004325a0();
      }
      FUN_0040159c();
      FUN_0040159c();
      goto LAB_0096922e;
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    local_a4 = (undefined2 *)0x0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(param_2);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    local_a4 = (undefined2 *)0x9691de;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      local_a4 = (undefined2 *)&UNK_009691f6;
      FUN_00a3f6a1();
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    local_a4 = (undefined2 *)0x969215;
    _free(local_18);
  }
  else {
    local_a4 = (undefined2 *)0x0;
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(param_2);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    local_a4 = (undefined2 *)0x96902a;
    _free(local_18);
  }
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    local_a4 = (undefined2 *)&UNK_0096922b;
    FUN_00a3f6a1();
  }
LAB_0096922e:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00969260(int param_1_00,undefined4 *param_1)

{
  uint uVar1;
  int *piVar2;
  undefined4 uStack_250;
  undefined4 uStack_24c;
  undefined local_248 [4];
  uint local_244;
  undefined4 local_234;
  uint local_230;
  void *local_22c;
  undefined local_224 [4];
  uint local_220;
  undefined4 local_210;
  uint local_20c;
  void *local_208;
  undefined local_200 [496];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdda31;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&uStack_250;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffda8;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x2ac) == 0) {
    *param_1 = DAT_03238d04;
    param_1[1] = DAT_03238d08;
  }
  else {
    FUN_0043c211("dialog");
    local_4 = 0;
    FUN_0043c211(&PTR_02bd3fc0);
    local_4._0_1_ = 1;
    FUN_00481a0d(0,0xffffffff,local_248,&DAT_03238d0c,&DAT_03238d04,0x20001800,local_224);
    _free(local_22c);
    if (7 < local_230) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_244,uVar1);
    }
    local_230 = 7;
    local_234 = 0;
    local_244 = local_244 & 0xffff0000;
    local_4 = CONCAT31(local_4._1_3_,4);
    _free(local_208);
    if (7 < local_20c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_220);
    }
    local_20c = 7;
    local_210 = 0;
    local_220 = local_220 & 0xffff0000;
    piVar2 = (int *)(**(code **)(param_1_00 + 0x2ac))(local_200);
    (**(code **)(*piVar2 + 0x278))(&uStack_250,&uStack_24c);
    param_1[1] = uStack_24c;
    *param_1 = uStack_250;
    local_4 = 0xffffffff;
    FUN_00924620();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00969400(int param_1_00,int param_1)

{
  int iVar1;
  undefined local_b0 [4];
  uint local_ac;
  undefined4 local_9c;
  uint local_98;
  void *local_94;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdda76;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1_00 + 0x214 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  FUN_00432475(param_1_00 + 0x214,param_1_00 + 0x25c,0);
  local_4 = 0;
  iVar1 = FUN_008581b0(local_b0,0);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (param_1_00 + 0x238 != iVar1) {
    FID_conflict_assign(iVar1,0,0xffffffff);
  }
  _free(local_94);
  if (7 < local_98) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_ac);
  }
  local_ac = local_ac & 0xffff0000;
  local_98 = 7;
  local_9c = 0;
  local_4 = 0xffffffff;
  FUN_0043250a();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00969500(int param_1_00,int param_1)

{
  int iVar1;
  undefined local_b0 [4];
  uint local_ac;
  undefined4 local_9c;
  uint local_98;
  void *local_94;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdda76;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1_00 + 0x25c != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  FUN_00432475(param_1_00 + 0x214,param_1_00 + 0x25c,0);
  local_4 = 0;
  iVar1 = FUN_008581b0(local_b0,0);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (param_1_00 + 0x238 != iVar1) {
    FID_conflict_assign(iVar1,0,0xffffffff);
  }
  _free(local_94);
  if (7 < local_98) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_ac);
  }
  local_ac = local_ac & 0xffff0000;
  local_98 = 7;
  local_9c = 0;
  local_4 = 0xffffffff;
  FUN_0043250a();
  ExceptionList = local_c;
  return;
}



void FUN_00969600(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5,
                 undefined *param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,
                 undefined4 param_10)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined *puVar4;
  int iVar5;
  uint uVar6;
  int local_378;
  int local_374;
  undefined4 local_370;
  undefined local_36c [4];
  uint local_368;
  undefined4 local_358;
  uint local_354;
  void *local_350;
  undefined local_348 [4];
  uint local_344;
  undefined4 local_338;
  undefined4 local_334;
  undefined local_330 [4];
  undefined4 local_32c;
  uint local_318;
  void *local_314;
  undefined local_30c [16];
  undefined local_2fc [4];
  uint local_2f8;
  undefined4 local_2e8;
  uint local_2e4;
  void *local_2e0;
  uint local_34;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bddb25;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_378;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffc78;
  ExceptionList = &local_c;
  local_370 = 0;
  local_374 = param_1;
  local_378 = param_5;
  local_2e4 = 7;
  local_2e8 = 0;
  local_2f8 = local_2f8 & 0xffff0000;
  local_2e0 = (void *)0x0;
  local_4 = 1;
  if (*(int *)(param_5 + 0x14) == 0) {
    if (*(int *)(param_6 + 0x14) == 0) goto LAB_0096977c;
  }
  else if (*(int *)(param_6 + 0x14) == 0) {
    uVar3 = FUN_004325b6(&DAT_00d49508);
    local_4._0_1_ = 2;
    puVar4 = (undefined *)FUN_008531f0(local_36c,uVar3,local_378);
    local_4._0_1_ = 3;
    if (local_2fc != puVar4) {
      FID_conflict_assign(puVar4,0,0xffffffff);
    }
    _free(local_350);
    if (7 < local_354) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_368,uVar2);
    }
    local_354 = 7;
    local_358 = 0;
    local_368 = local_368 & 0xffff0000;
    local_4 = CONCAT31(local_4._1_3_,1);
    _free(local_314);
    if (7 < local_318) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_32c);
    }
    goto LAB_0096977c;
  }
  if (local_2fc != param_6) {
    FID_conflict_assign(param_6,0,0xffffffff);
  }
LAB_0096977c:
  FUN_0043c211("filedlg");
  local_338 = param_9;
  local_334 = param_10;
  local_4._0_1_ = 4;
  FUN_00966560(param_8,param_2,param_3,param_4,local_2fc,param_7,&local_338,&DAT_03238d04,local_36c)
  ;
  local_4._0_1_ = 6;
  _free(local_350);
  iVar1 = local_378;
  if (7 < local_354) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_368,uVar2);
  }
  uVar2 = 0;
  local_354 = 7;
  local_358 = 0;
  local_368 = local_368 & 0xffff0000;
  if (*(int *)(local_378 + 0x14) != 0) {
    local_378 = 0x7c;
    iVar5 = FUN_00420f3f(&local_378,0,1);
    if (iVar5 != -1) {
      FUN_00853ce0(0);
      local_4._0_1_ = 7;
      FUN_00853ce0(0);
      local_4 = CONCAT31(local_4._1_3_,8);
      FUN_0085d710(local_2fc,local_30c,local_348);
      uVar6 = local_344;
      if (local_344 != 0) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar6 <= uVar2)) {
            FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                         "nIndex < m_nCount",L"wxArrayString: index out of bounds");
            uVar6 = local_344;
          }
          if (*(uint *)(iVar1 + 0x18) < 8) {
            iVar5 = iVar1 + 4;
          }
          else {
            iVar5 = *(int *)(iVar1 + 4);
          }
          iVar5 = FUN_00420f3f(iVar5,0,*(undefined4 *)(iVar1 + 0x14));
          if ((iVar5 != -1) && (iVar5 != -1)) {
            if (0 < (int)uVar2) {
              local_34 = uVar2;
            }
            break;
          }
          uVar2 = uVar2 + 1;
        } while (uVar2 < uVar6);
      }
      local_4._0_1_ = 7;
      FUN_00853f30();
      local_4._0_1_ = 6;
      FUN_00853f30();
    }
  }
  iVar1 = local_374;
  *(undefined4 *)(local_374 + 0x18) = 7;
  *(undefined4 *)(local_374 + 0x14) = 0;
  *(undefined2 *)(local_374 + 4) = 0;
  *(undefined4 *)(local_374 + 0x1c) = 0;
  local_370 = 1;
  iVar5 = FUN_00967140();
  if (iVar5 == 0x13ec) {
    iVar5 = FUN_00484f30(local_330);
    local_4._0_1_ = 9;
    if (iVar1 != iVar5) {
      FID_conflict_assign(iVar5,0,0xffffffff);
    }
    _free(local_314);
    if (7 < local_318) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_32c);
    }
  }
  local_4._0_1_ = 10;
  FUN_00853f30();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00484ee8();
  _free(local_2e0);
  if (local_2e4 < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_2f8);
}



void __thiscall FUN_00969a40(int param_1_00,int param_1)

{
  undefined local_34 [4];
  uint local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcf248;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  FUN_00858c30(param_1,param_1_00 + 0x214,param_1_00 + 0x25c,local_34,0,
               DAT_0323f878 ^ (uint)&stack0xffffffc0);
  if (local_20 != 0) {
    FID_conflict_append(1,0x2e);
    FID_conflict_append(local_34,0,0xffffffff);
  }
  if (param_1_00 + 0x238 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall
FUN_00969b30(undefined4 param_1_00,undefined4 param_2_00,undefined4 param_1,char param_2,
            undefined *param_3,undefined4 param_4)

{
  undefined uVar1;
  undefined3 uVar2;
  int iVar3;
  undefined *puVar4;
  undefined *puStack_134;
  undefined4 local_130;
  undefined4 uStack_12c;
  undefined *puStack_128;
  undefined *puStack_124;
  int local_120;
  undefined *local_11c;
  int *local_118;
  int local_fc;
  undefined local_f8 [4];
  uint local_f4;
  undefined4 local_e4;
  uint local_e0;
  void *local_dc;
  undefined **local_d4;
  undefined4 local_d0;
  undefined4 local_cc;
  undefined4 local_c8;
  undefined local_c4 [24];
  uint local_ac;
  void *local_a8;
  undefined local_a0 [4];
  undefined4 local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bddbdb;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_fc;
  ExceptionList = &local_c;
  local_d0 = param_1;
  local_c8 = param_4;
  local_d4 = (undefined **)0x0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  local_60 = (void *)0x0;
  local_4._1_3_ = 0;
  uVar2 = local_4._1_3_;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  local_cc = param_2_00;
  if (param_2 == '\0') {
    local_118 = (int *)0x969c51;
    local_4._1_3_ = uVar2;
    FUN_004325b6();
    local_4._0_1_ = 4;
    local_118 = (int *)0x969c67;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,5);
    iVar3 = FUN_0084a340();
    if (iVar3 != 0) {
      local_118 = (int *)local_f8;
      local_11c = (undefined *)0x969c89;
      puVar4 = (undefined *)FUN_0084f210();
      goto LAB_00969c98;
    }
  }
  else {
    local_118 = (int *)0x969c00;
    FUN_004325b6();
    local_4._0_1_ = 2;
    local_118 = (int *)0x969c16;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,3);
    iVar3 = FUN_0084a340();
    if (iVar3 != 0) {
      local_118 = (int *)local_f8;
      local_11c = (undefined *)0x969c38;
      puVar4 = (undefined *)FUN_0084f210();
      goto LAB_00969c98;
    }
  }
  local_118 = (int *)0x969c95;
  puVar4 = (undefined *)FUN_0084d360();
LAB_00969c98:
  if (local_7c != puVar4) {
    local_118 = (int *)0x0;
    local_120 = 0x969cac;
    local_11c = puVar4;
    FID_conflict_assign();
  }
  local_118 = (int *)0x969cb6;
  _free(local_dc);
  if (7 < local_e0) {
                    // WARNING: Subroutine does not return
    local_118 = (int *)&UNK_00969cce;
    FUN_00a3f6a1();
  }
  local_4._0_1_ = 1;
  local_e0 = 7;
  local_e4 = 0;
  local_f4 = local_f4 & 0xffff0000;
  local_118 = (int *)0x969cf2;
  _free(local_a8);
  if (7 < local_ac) {
                    // WARNING: Subroutine does not return
    local_118 = (int *)&UNK_00969d05;
    FUN_00a3f6a1();
  }
  local_118 = (int *)0x969d19;
  FUN_008433c0();
  local_d4 = &puStack_134;
  local_11c = (undefined *)0x7;
  local_120 = 0;
  local_4._0_1_ = 6;
  local_130 = (undefined *)((uint)local_130._2_2_ << 0x10);
  FID_conflict_assign(local_fc,0,0xffffffff);
  local_118 = (int *)0x0;
  FUN_00855cc0(local_f8);
  local_4._0_1_ = 1;
  FUN_0081b5bc();
  local_40 = 7;
  local_44 = 0;
  local_54 = (uint)local_54._2_2_ << 0x10;
  local_3c = (void *)0x0;
  local_88 = 7;
  local_8c = 0;
  local_9c = (uint)local_9c._2_2_ << 0x10;
  local_84 = (void *)0x0;
  local_4._0_1_ = 8;
  uVar1 = (undefined)local_4;
  local_4._0_1_ = 8;
  if (*(int *)(param_3 + 0x14) == 0) {
    local_118 = (int *)0x969eb2;
    local_4._0_1_ = uVar1;
    FUN_0083fc60();
  }
  else {
    local_118 = &local_fc;
    local_11c = (undefined *)0x969dc3;
    FUN_0081feb2();
    if (local_fc == 0x2e) {
      local_118 = (int *)0x1;
      local_11c = local_c4;
      local_120 = 0x969ddf;
      puVar4 = (undefined *)FUN_0084c0c0();
      local_4._0_1_ = 9;
      if (local_a0 != puVar4) {
        local_118 = (int *)0x0;
        local_120 = 0x969df8;
        local_11c = puVar4;
        FID_conflict_assign();
      }
      local_4._0_1_ = 8;
      local_118 = (int *)0x969e0a;
      _free(local_a8);
      if (7 < local_ac) {
                    // WARNING: Subroutine does not return
        local_118 = (int *)&UNK_00969e22;
        FUN_00a3f6a1();
      }
    }
    else if (local_a0 != param_3) {
      local_118 = (int *)0x0;
      local_11c = param_3;
      local_120 = 0x969e38;
      FID_conflict_assign();
    }
    local_118 = (int *)0x969e4b;
    FUN_0081c0f1();
    local_d4 = &puStack_134;
    local_11c = (undefined *)0x7;
    local_120 = 0;
    local_4._0_1_ = 10;
    local_130 = (undefined *)((uint)local_130 & 0xffff0000);
    FID_conflict_assign(local_a0,0,0xffffffff);
    local_118 = (int *)0x0;
    FUN_00855cc0(local_f8);
    local_4._0_1_ = 8;
    FUN_0081b5bc();
  }
  local_118 = (int *)0x969ec7;
  FUN_004325b6();
  local_118 = (int *)0xffffffff;
  local_11c = (undefined *)local_c8;
  local_120 = (-(uint)(param_2 != '\0') & 0xf) + 2;
  puStack_124 = local_58;
  puStack_128 = local_a0;
  uStack_12c = local_cc;
  local_130 = local_f8;
  puStack_134 = local_34;
  local_4 = CONCAT31(local_4._1_3_,0xb);
  FUN_00969600(local_d0);
  _free(local_dc);
  if (7 < local_e0) {
                    // WARNING: Subroutine does not return
    local_118 = (int *)&UNK_00969f34;
    FUN_00a3f6a1();
  }
  local_e0 = 7;
  local_e4 = 0;
  local_f4 = local_f4 & 0xffff0000;
  local_118 = (int *)0x969f53;
  _free(local_84);
  if (local_88 < 8) {
    local_88 = 7;
    local_8c = 0;
    local_9c = local_9c & 0xffff0000;
    local_118 = (int *)0x969f8e;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      local_118 = (int *)&UNK_00969fa7;
      FUN_00a3f6a1();
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    local_118 = (int *)0x969fcf;
    _free(local_60);
    if (local_64 < 8) {
      local_64 = 7;
      local_68 = 0;
      local_78 = local_78 & 0xffff0000;
      local_118 = (int *)0x96a010;
      _free(local_18);
      if (local_1c < 8) {
        ExceptionList = local_c;
        ___security_check_cookie_4();
        return;
      }
                    // WARNING: Subroutine does not return
      local_118 = (int *)&UNK_0096a029;
      FUN_00a3f6a1();
    }
                    // WARNING: Subroutine does not return
    local_118 = (int *)&UNK_00969fe8;
    FUN_00a3f6a1();
  }
                    // WARNING: Subroutine does not return
  local_118 = (int *)&UNK_00969f69;
  FUN_00a3f6a1();
}



undefined4
FUN_0096a060(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  FUN_00969b30(param_1,0,param_3,param_5);
  return param_1;
}



void __fastcall FUN_0096a090(int param_1)

{
  *(undefined4 *)(param_1 + 0x1a8) = 0;
  *(undefined *)(param_1 + 0x1b8) = 0;
  *(undefined *)(param_1 + 0x1b9) = 0;
  return;
}



undefined4 __fastcall FUN_0096a1a0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x14);
}



void __fastcall FUN_0096a1f0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bd7486;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxListBox::vftable;
  param_1[0x65] = wxListBox::vftable;
  local_4 = 1;
  FUN_0096be20(uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_0086aa30();
  local_4 = 0xffffffff;
  FUN_0096c070();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0096a270(int param_1,uint param_2)

{
  uint uVar1;
  
  uVar1 = (**(code **)(*(int *)(param_1 + 0x194) + 4))();
  if (param_2 < uVar1) {
    SendMessageW(*(HWND *)(param_1 + 0x13c),0x197,param_2,0);
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\listbox.cpp",0xde,"wxListBox::DoSetFirstItem","IsValid(N)",
                 L"invalid index in wxListBox::SetFirstItem");
  }
  return;
}



void __thiscall FUN_0096a2e0(int *param_1,uint param_2)

{
  uint uVar1;
  int *piVar2;
  
  uVar1 = (**(code **)(*param_1 + 4))();
  if (param_2 < uVar1) {
    if (((uint)param_1[-0x2d] >> 8 & 1) != 0) {
      piVar2 = (int *)FUN_00a142b0(param_2);
      if ((undefined4 *)*piVar2 != (undefined4 *)0x0) {
        (***(code ***)(undefined4 *)*piVar2)(1);
      }
      FUN_0086a1e0(param_2,1);
    }
    SendMessageW((HWND)param_1[-0x16],0x182,param_2,0);
    param_1[5] = param_1[5] + -1;
    *(undefined *)(param_1 + 9) = 1;
    FUN_0091a950();
    FUN_0096c050();
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\listbox.cpp",0xe6,"wxListBox::DoDeleteOneItem","IsValid(n)",
                 L"invalid index in wxListBox::Delete");
  }
  return;
}



void __fastcall FUN_0096a390(int param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  uint uVar3;
  
  if ((*(uint *)(param_1 + -0xb4) >> 8 & 1) != 0) {
    uVar1 = *(uint *)(param_1 + 0x1c);
    uVar3 = 0;
    if (uVar1 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x1c) <= uVar3)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        puVar2 = *(undefined4 **)(*(int *)(param_1 + 0x20) + uVar3 * 4);
        if (puVar2 != (undefined4 *)0x0) {
          (**(code **)*puVar2)(1);
        }
        uVar3 = uVar3 + 1;
      } while (uVar3 < uVar1);
    }
    FUN_0086a880();
  }
  SendMessageW(*(HWND *)(param_1 + -0x58),0x184,0,0);
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 0x24) = 1;
  FUN_0091a950();
  FUN_0096c050();
  return;
}



void __thiscall FUN_0096a440(int param_1_00,WPARAM param_1,byte param_3)

{
  uint uVar1;
  
  if ((param_1 != 0xffffffff) &&
     (uVar1 = (**(code **)(*(int *)(param_1_00 + 0x194) + 4))(), uVar1 <= param_1)) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    FUN_00840480("..\\..\\src\\msw\\listbox.cpp",0x119,"wxListBox::DoSetSelection",
                 "N == (-1) || IsValid(N)",L"invalid index in wxListBox::SetSelection");
    return;
  }
  if ((*(byte *)(param_1_00 + 0xe0) & 0xc0) == 0) {
    if (param_3 == 0) {
      param_1 = 0xffffffff;
    }
    SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x186,param_1,0);
    FUN_0096c050();
    return;
  }
  if (param_1 != 0xffffffff) {
    SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x185,(uint)param_3,param_1);
    FUN_0096c050();
    return;
  }
  SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x185,0,-1);
  FUN_0096c050();
  return;
}



bool __thiscall FUN_0096a520(int param_1,uint param_2)

{
  uint uVar1;
  LRESULT LVar2;
  
  uVar1 = (**(code **)(*(int *)(param_1 + 0x194) + 4))();
  if (param_2 < uVar1) {
    LVar2 = SendMessageW(*(HWND *)(param_1 + 0x13c),0x187,param_2,0);
    return LVar2 != 0;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\listbox.cpp",0x12e,"wxListBox::IsSelected","IsValid(N)",
                 L"invalid index in wxListBox::Selected");
  }
  return false;
}



void __thiscall FUN_0096a590(int param_1_00,WPARAM param_1)

{
  SendMessageW(*(HWND *)(param_1_00 + -0x58),0x199,param_1,0);
  return;
}



LRESULT __fastcall FUN_0096a5b0(int param_1)

{
  LRESULT LVar1;
  
  if ((*(byte *)(param_1 + -0xb4) & 0xc0) == 0) {
    LVar1 = SendMessageW(*(HWND *)(param_1 + -0x58),0x188,0,0);
    return LVar1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\listbox.cpp",0x170,"wxListBox::GetSelection",
                 "!HasMultipleSelection()",
                 L"GetSelection() can\'t be used with multiple-selection listboxes, use GetSelections() instead."
                );
  }
  return -1;
}



uint __thiscall FUN_0096a640(int *param_1_00,int param_1)

{
  int iVar1;
  uint in_EAX;
  uint uVar2;
  DWORD DVar3;
  undefined4 uVar4;
  int aiStack_c [3];
  
  iVar1 = param_1;
  uVar4 = DAT_032bfdc4;
  if (param_1 == 1) {
    if ((*(byte *)(param_1_00 + 0x38) & 0xc0) != 0) {
      uVar2 = FUN_0096c550();
      return uVar2;
    }
    if ((*(char *)((int)param_1_00 + 0x1b9) == '\0') ||
       (uVar2 = SendMessageW((HWND)param_1_00[0x4f],0x19f,0,0), uVar2 == 0xffffffff))
    goto LAB_0096a69a;
  }
  else {
    uVar4 = DAT_032bfdc8;
    if (param_1 != 2) goto LAB_0096a723;
LAB_0096a69a:
    DVar3 = GetMessagePos();
    param_1 = (int)(short)DVar3;
    aiStack_c[0] = (int)(short)(DVar3 >> 0x10);
    (**(code **)(*param_1_00 + 0x260))(&param_1,aiStack_c);
    in_EAX = (**(code **)(*param_1_00 + 900))(&stack0xfffffff0);
    if (in_EAX == 0xffffffff) goto LAB_0096a723;
    uVar2 = in_EAX;
    if (iVar1 != 1) goto LAB_0096a6fe;
  }
  in_EAX = FUN_0096c240(uVar2);
  if ((char)in_EAX != '\0') {
LAB_0096a6fe:
    uVar2 = FUN_0096c390(uVar4,uVar2,1);
    return uVar2;
  }
LAB_0096a723:
  return in_EAX & 0xffffff00;
}



uint __thiscall FUN_0096a730(int param_1,uint param_2,int *param_3)

{
  uint uVar1;
  int iStack_10;
  int iStack_c;
  int iStack_8;
  int iStack_4;
  
  uVar1 = (**(code **)(*(int *)(param_1 + 0x194) + 4))();
  if (param_2 < uVar1) {
    uVar1 = SendMessageW(*(HWND *)(param_1 + 0x13c),0x198,param_2,(LPARAM)&iStack_10);
    if (uVar1 != 0xffffffff) {
      *param_3 = iStack_10;
      param_3[1] = iStack_c;
      param_3[2] = iStack_8 - iStack_10;
      param_3[3] = iStack_4 - iStack_c;
      return CONCAT31((int3)((uint)(iStack_8 - iStack_10) >> 8),1);
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar1 = FUN_00840480("..\\..\\src\\msw\\listbox.cpp",0x29f,"wxListBox::GetItemRect","IsValid(n)"
                         ,L"invalid index in wxListBox::GetItemRect");
  }
  return uVar1 & 0xffffff00;
}



uint __thiscall FUN_0096a7d0(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  BOOL BVar2;
  int local_20;
  int local_1c;
  int local_18;
  int local_14;
  RECT local_10;
  
  local_20 = 0;
  local_1c = 0;
  local_18 = 0;
  local_14 = 0;
  uVar1 = FUN_0096a730(param_1,&local_20);
  if ((char)uVar1 == '\0') {
    return uVar1;
  }
  local_10.right = local_18 + local_20;
  local_10.left = local_20;
  local_10.bottom = local_14 + local_1c;
  local_10.top = local_1c;
  BVar2 = InvalidateRect(*(HWND *)(param_1_00 + 0x13c),&local_10,0);
  return (uint)(BVar2 == 1);
}



undefined4 __fastcall FUN_0096a850(int param_1)

{
  HDC hdc;
  undefined4 uVar1;
  int iVar2;
  int unaff_retaddr;
  undefined auStack_20 [12];
  int *piStack_14;
  int *piStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bddc20;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*(uint *)(param_1 + 0xe0) >> 8 & 1) != 0) {
    hdc = CreateICW(L"DISPLAY",(LPCWSTR)0x0,(LPCWSTR)0x0,(DEVMODEW *)0x0);
    FUN_0090e740(hdc,&DAT_03238d04);
    uStack_4 = 0;
    uVar1 = FUN_0091e100(auStack_20);
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    (**(code **)(*piStack_10 + 0x50))(uVar1);
    puStack_8 = (undefined *)((uint)puStack_8 & 0xffffff00);
    FUN_00921450();
    iVar2 = (**(code **)(*piStack_14 + 0x98))();
    *(int *)(unaff_retaddr + 0x10) = iVar2 + 2;
    uVar1 = (**(code **)(*piStack_14 + 0x9c))();
    *(undefined4 *)(unaff_retaddr + 0xc) = uVar1;
    puStack_8 = (undefined *)0xffffffff;
    FUN_00457221();
    DeleteDC(hdc);
    ExceptionList = piStack_10;
    return 1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\msw\\listbox.cpp",0x2ce,"wxListBox::MSWOnMeasure","HasFlag(0x0100)",0
                 ,DAT_0323f878 ^ (uint)&stack0xffffffd8);
  }
  ExceptionList = local_c;
  return 0;
}



undefined __thiscall FUN_0096a980(int param_1_00,int param_1)

{
  int *piVar1;
  undefined uVar2;
  int **ppiVar3;
  undefined local_28 [12];
  void *local_1c;
  int local_18;
  int local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd6918;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*(uint *)(param_1_00 + 0xe0) >> 8 & 1) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\msw\\listbox.cpp",0x2ed,"wxListBox::MSWOnDraw","HasFlag(0x0100)",0,
                   DAT_0323f878 ^ (uint)&stack0xffffffcc);
    }
  }
  else if (*(int *)(param_1 + 8) != -1) {
    ppiVar3 = (int **)FUN_00a142b0(*(int *)(param_1 + 8));
    piVar1 = *ppiVar3;
    FUN_0090e740(*(undefined4 *)(param_1 + 0x18),&DAT_03238d04);
    local_18 = *(int *)(param_1 + 0x20);
    local_1c = *(void **)(param_1 + 0x1c);
    local_10 = *(int *)(param_1 + 0x28) - local_18;
    local_14 = *(int *)(param_1 + 0x24) - (int)local_1c;
    local_4 = 0;
    uVar2 = (**(code **)(*piVar1 + 0xc))
                      (local_28,&local_1c,*(undefined4 *)(param_1 + 0xc),
                       *(uint *)(param_1 + 0x10) | 0x100);
    local_14 = 0xffffffff;
    FUN_00457221();
    ExceptionList = local_1c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __fastcall FUN_0096aaa0(undefined4 param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x40);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0095aca0(uVar1);
    *puVar2 = wxListBoxItem::vftable;
    puVar2[0xf] = param_1;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



int __thiscall
FUN_0096ab10(int *param_1_00,int param_1,int param_3,undefined4 param_4,undefined4 param_5)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  bool bVar7;
  undefined auStack_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bddc48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  FUN_00936ef0(param_1,0x1a8);
  iVar2 = (**(code **)(*param_1_00 + 4))(uVar1);
  bVar7 = param_3 == iVar2;
  if (bVar7) {
    param_3 = 0;
  }
  uVar1 = *(uint *)(param_1 + 4);
  iVar2 = -1;
  uVar6 = 0;
  if (uVar1 != 0) {
    do {
      iVar2 = !bVar7 + 0x180;
      uVar3 = FUN_009363f0(uVar6);
      iVar2 = FUN_009370c0(param_3,uVar3,iVar2);
      if (iVar2 == -1) {
        ExceptionList = local_c;
        return -1;
      }
      if (!bVar7) {
        param_3 = param_3 + 1;
      }
      param_1_00[5] = param_1_00[5] + 1;
      if (((uint)param_1_00[-0x2d] >> 8 & 1) != 0) {
        iVar4 = (**(code **)(param_1_00[-0x65] + 0x37c))(iVar2);
        iVar5 = FUN_0091e100(auStack_14);
        uStack_4 = 0;
        if (iVar4 + 8 != iVar5) {
          FUN_0083ea60(iVar5);
        }
        *(undefined *)(iVar4 + 4) = 1;
        uStack_4 = 0xffffffff;
        FUN_00921450();
        FUN_0086a0a0(iVar4,iVar2,1);
      }
      FUN_0096bda0(iVar2,param_4,uVar6,param_5);
      uVar6 = uVar6 + 1;
    } while (uVar6 < uVar1);
  }
  *(undefined *)(param_1_00 + 9) = 1;
  FUN_0091a950();
  FUN_0096c050();
  ExceptionList = local_c;
  return iVar2;
}



undefined4 __thiscall FUN_0096ac80(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  
  if ((*(uint *)(param_1_00 + 0xe0) >> 8 & 1) != 0) {
    uVar1 = *(uint *)(param_1_00 + 0x1b0);
    uVar3 = 0;
    if (uVar1 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x1b0) <= uVar3)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar2 = *(int *)(*(int *)(param_1_00 + 0x1b4) + uVar3 * 4);
        if (iVar2 + 8 != param_1) {
          FUN_0083ea60(param_1);
        }
        uVar3 = uVar3 + 1;
        *(undefined *)(iVar2 + 4) = 1;
      } while (uVar3 < uVar1);
    }
  }
  FUN_009372d0(param_1);
  return 1;
}



void __thiscall FUN_0096ad10(int *param_1,uint param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  LPARAM lParam;
  int iVar4;
  int iVar5;
  int iStack_8;
  
  uVar2 = (**(code **)(*param_1 + 4))();
  if (param_2 < uVar2) {
    cVar1 = (**(code **)(param_1[-0x65] + 0x35c))(param_2);
    iVar4 = 0;
    iVar5 = 0;
    iVar3 = (**(code **)(*param_1 + 0x24))();
    if (iVar3 == 2) {
      iVar4 = FUN_0096bd10(param_2);
    }
    else {
      iVar3 = (**(code **)(*param_1 + 0x24))();
      if (iVar3 == 1) {
        iVar5 = FUN_0096bbd0(param_2);
      }
    }
    SendMessageW((HWND)param_1[-0x16],0x182,param_2,0);
    uVar2 = param_2;
    if (param_2 == param_1[5] - 1U) {
      uVar2 = 0xffffffff;
    }
    if (*(uint *)(param_2 + 0x18) < 8) {
      lParam = param_2 + 4;
    }
    else {
      lParam = *(LPARAM *)(param_2 + 4);
    }
    SendMessageW((HWND)param_1[-0x16],0x181,uVar2,lParam);
    if (iVar4 == 0) {
      if (iVar5 != 0) {
        FUN_0096bb00(param_2,iVar5);
      }
    }
    else {
      FUN_0096bc60(param_2,iVar4);
    }
    if (cVar1 != '\0') {
      (**(code **)(*param_1 + 0x14))(param_2);
    }
    *(undefined *)(iStack_8 + 0x1b8) = 1;
    FUN_0091a950();
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\listbox.cpp",0x1c1,"wxListBox::SetString","IsValid(n)",
                 L"invalid index in wxListBox::SetString");
  }
  return;
}



LRESULT __thiscall FUN_0096ae40(int param_1_00,int param_1,char param_2)

{
  LRESULT LVar1;
  
  if (param_2 != '\0') {
    LVar1 = FUN_0048688a();
    return LVar1;
  }
  if (*(uint *)(param_1 + 0x18) < 8) {
    param_1 = param_1 + 4;
  }
  else {
    param_1 = *(LPARAM *)(param_1 + 4);
  }
  LVar1 = SendMessageW(*(HWND *)(param_1_00 + -0x58),0x1a2,0xffffffff,param_1);
  return LVar1;
}



void __thiscall FUN_0096ae80(int *param_1_00,int *param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  LRESULT LVar4;
  int iVar5;
  uint uVar6;
  int *local_3c;
  int iStack_38;
  undefined local_34 [4];
  uint uStack_30;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bddc78;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  iVar5 = 0;
  uVar6 = 0;
  local_3c = param_1;
  if (param_1_00[0x6a] != 0) {
    do {
      (**(code **)(param_1_00[0x65] + 8))(local_34,uVar6,uVar1);
      local_c = (void *)0x0;
      (**(code **)(*param_1_00 + 600))(&local_3c,&stack0xffffffc0,0,0,0,0);
      if (iVar5 < iStack_38) {
        iVar5 = iStack_38;
      }
      uStack_4 = 0xffffffff;
      _free(pvStack_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
      uVar6 = uVar6 + 1;
      uStack_1c = 7;
      uStack_20 = 0;
      uStack_30 = uStack_30 & 0xffff0000;
    } while (uVar6 < (uint)param_1_00[0x6a]);
    if (iVar5 != 0) goto LAB_0096af68;
  }
  iVar5 = 100;
LAB_0096af68:
  iVar2 = (**(code **)(*param_1_00 + 0x198))();
  iVar3 = FUN_008fedb0(0x1c,0);
  uVar1 = param_1_00[0x6a];
  if (uVar1 < 4) {
    uVar1 = 3;
  }
  else if (9 < uVar1) {
    uVar1 = 10;
  }
  LVar4 = SendMessageW((HWND)param_1_00[0x4f],0x1a1,0,0);
  local_3c[1] = LVar4 * uVar1;
  *local_3c = iVar2 * 3 + iVar5 + iVar3;
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_0096b000(int param_1)

{
  void *pvVar1;
  
  pvVar1 = *(void **)(param_1 + 4);
  if (pvVar1 != (void *)0x0) {
    _eh_vector_destructor_iterator_(pvVar1,0x24,*(int *)((int)pvVar1 + -4),FUN_0040159c);
    FUN_00a3f66c((int)pvVar1 + -4);
  }
  return;
}



int __fastcall FUN_0096b030(int *param_1)

{
  uint uVar1;
  uint *puVar2;
  int iVar3;
  uint uVar4;
  uint *puVar5;
  int iVar6;
  uint uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bddcab;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar6 = param_1[1];
  if (iVar6 == 0) {
    uVar1 = *(uint *)(*param_1 + 4);
    uVar4 = -(uint)((int)((ulonglong)uVar1 * 0x24 >> 0x20) != 0) | (uint)((ulonglong)uVar1 * 0x24);
    puVar2 = (uint *)FUN_00823c23(-(uint)(0xfffffffb < uVar4) | uVar4 + 4,
                                  DAT_0323f878 ^ (uint)&stack0xffffffe0);
    uStack_4 = 0;
    if (puVar2 == (uint *)0x0) {
      puVar5 = (uint *)0x0;
    }
    else {
      puVar5 = puVar2 + 1;
      *puVar2 = uVar1;
      _eh_vector_constructor_iterator_(puVar5,0x24,uVar1,FUN_00418b1d,FUN_0040159c);
    }
    uStack_4 = 0xffffffff;
    param_1[1] = (int)puVar5;
    uStack_10 = 0;
    if (uVar1 != 0) {
      iVar6 = 0;
      do {
        iVar3 = *param_1;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar3 + 4) <= uStack_10)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                       "nIndex < m_nCount",L"wxArrayString: index out of bounds");
        }
        iVar3 = *(int *)(iVar3 + 8) + iVar6;
        if (param_1[1] + iVar6 != iVar3) {
          FID_conflict_assign(iVar3,0,0xffffffff);
        }
        uStack_10 = uStack_10 + 1;
        iVar6 = iVar6 + 0x24;
      } while (uStack_10 < uVar1);
    }
    iVar6 = param_1[1];
  }
  ExceptionList = local_c;
  return iVar6;
}



undefined4 __thiscall
FUN_0096b150(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,int param_5,int param_6,undefined4 param_7,undefined4 param_8,
            undefined4 param_9)

{
  char cVar1;
  uint uVar2;
  undefined4 local_3c;
  undefined4 local_38;
  int local_34;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bccb48;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  cVar1 = FUN_00937250(param_1,param_2,param_3,param_4,param_7,param_8,param_9);
  if (cVar1 != '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    cVar1 = FUN_00937200(L"LISTBOX",local_30,param_3,param_4);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar2);
    }
    if (cVar1 != '\0') {
      if (0 < param_5) {
        do {
          local_3c = 1;
          local_38 = 1;
          local_34 = param_6;
          (**(code **)(*(int *)(param_1_00 + 0x194) + 0x28))(&local_3c,0,0);
          param_6 = param_6 + 0x24;
          param_5 = param_5 + -1;
        } while (param_5 != 0);
      }
      FUN_0091b600(param_4);
      ExceptionList = local_c;
      return 1;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_0096b280(int *param_1)

{
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  thunk_FUN_0091abd0(DAT_0323f878 ^ (uint)&stack0xffffffcc);
  if (*(char *)(param_1 + 0x6e) != '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    (**(code **)(*param_1 + 0x380))(local_30);
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    *(undefined *)(param_1 + 0x6e) = 0;
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0096b320(int *param_1_00,int param_1,uint param_3)

{
  uint uVar1;
  LRESULT LVar2;
  undefined auStack_40 [4];
  LPARAM *pLStack_3c;
  undefined4 local_38;
  undefined auStack_34 [4];
  uint uStack_30;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bddcd8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_40;
  ExceptionList = &local_c;
  local_38 = 0;
  uVar1 = (**(code **)(*param_1_00 + 4))(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  if (param_3 < uVar1) {
    LVar2 = SendMessageW((HWND)param_1_00[-0x16],0x18a,param_3,0);
    uStack_1c = 7;
    uStack_20 = 0;
    uStack_30 = uStack_30 & 0xffff0000;
    pvStack_18 = (void *)0x0;
    uStack_4 = 0;
    FUN_00852280(auStack_34,LVar2 + 1);
    SendMessageW((HWND)param_1_00[-0x16],0x189,param_3,*pLStack_3c);
    FUN_00851bf0();
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(auStack_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
  }
  else {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\listbox.cpp",0x179,"wxListBox::GetString","IsValid(n)",
                   L"invalid index in wxListBox::GetString");
    }
    FUN_004325b6(PTR_DAT_03236318);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0096b470(int param_1_00,int param_1)

{
  uint uVar1;
  HDC hdc;
  HGDIOBJ h;
  int *piVar2;
  LRESULT LVar3;
  int iVar4;
  uint uVar5;
  uint uStack_a4;
  tagSIZE tStack_a0;
  HWND local_98;
  int aiStack_94 [2];
  char cStack_8c;
  HDC pHStack_88;
  HGDIOBJ pvStack_84;
  HWND local_80;
  HDC pHStack_7c;
  undefined auStack_78 [8];
  tagTEXTMETRICW tStack_70;
  undefined auStack_34 [4];
  undefined4 uStack_30;
  int iStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bddd1b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&uStack_a4;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff4c;
  ExceptionList = &local_c;
  if ((*(uint *)(param_1_00 + 0xe0) >> 0x1e & 1) == 0) goto LAB_0096b6dd;
  local_98 = *(HWND *)(param_1_00 + 0x13c);
  local_80 = local_98;
  hdc = GetDC(local_98);
  uVar5 = 0;
  uStack_4 = 0;
  pHStack_7c = hdc;
  FUN_0091e100(auStack_78);
  uStack_4._0_1_ = 1;
  h = (HGDIOBJ)FUN_009229f0(uVar1);
  pHStack_88 = hdc;
  pvStack_84 = SelectObject(hdc,h);
  uStack_4 = CONCAT31(uStack_4._1_3_,3);
  FUN_00921450();
  GetTextMetricsW(hdc,&tStack_70);
  if (*(int *)(param_1 + 0x14) == 0) {
    uStack_a4 = 0;
    if (*(int *)(param_1_00 + 0x1a8) != 0) {
      do {
        (**(code **)(*(int *)(param_1_00 + 0x194) + 8))(auStack_34,uStack_a4);
        piVar2 = (int *)FUN_00432231(aiStack_94);
        iVar4 = *piVar2;
        if (*(uint *)(iVar4 + 0x18) < 8) {
          iVar4 = iVar4 + 4;
        }
        else {
          iVar4 = *(int *)(iVar4 + 4);
        }
        GetTextExtentPoint32W(hdc,(LPCWSTR)(iVar4 + piVar2[1] * 2),iStack_20,&tStack_a0);
        if ((cStack_8c != '\0') && (aiStack_94[0] != 0)) {
          _free(*(void **)(aiStack_94[0] + 0x1c));
          if (*(uint *)(aiStack_94[0] + 0x18) < 8) {
            *(undefined4 *)(aiStack_94[0] + 0x18) = 7;
            *(undefined4 *)(aiStack_94[0] + 0x14) = 0;
            *(undefined2 *)(aiStack_94[0] + 4) = 0;
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(aiStack_94[0]);
          }
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(*(undefined4 *)(aiStack_94[0] + 4));
        }
        if ((int)uVar5 < tStack_70.tmAveCharWidth + tStack_a0.cx) {
          uVar5 = tStack_70.tmAveCharWidth + tStack_a0.cx;
        }
        _free(pvStack_18);
        if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_30);
        }
        uStack_a4 = uStack_a4 + 1;
      } while (uStack_a4 < *(uint *)(param_1_00 + 0x1a8));
LAB_0096b6a5:
      if (uVar5 != 0) {
        SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x194,uVar5 & 0xffff,0);
      }
    }
  }
  else {
    LVar3 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x193,0,0);
    piVar2 = (int *)FUN_00432231(aiStack_94);
    iVar4 = *piVar2;
    if (*(uint *)(iVar4 + 0x18) < 8) {
      iVar4 = iVar4 + 4;
    }
    else {
      iVar4 = *(int *)(iVar4 + 4);
    }
    GetTextExtentPoint32W(hdc,(LPCWSTR)(iVar4 + piVar2[1] * 2),*(int *)(param_1 + 0x14),&tStack_a0);
    FUN_00432214();
    uVar5 = tStack_70.tmAveCharWidth + tStack_a0.cx;
    if (LVar3 < (int)uVar5) goto LAB_0096b6a5;
  }
  if (hdc != (HDC)0x0) {
    SelectObject(hdc,pvStack_84);
  }
  ReleaseDC(local_98,hdc);
LAB_0096b6dd:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0096b710(int param_1_00,WPARAM param_1,LPARAM param_2)

{
  char cVar1;
  LRESULT LVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  LVar2 = SendMessageW(*(HWND *)(param_1_00 + -0x58),0x19a,param_1,param_2);
  if (LVar2 == -1) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



uint __thiscall FUN_0096b810(int param_1_00,uint *param_1)

{
  char cVar1;
  uint wParam;
  LPARAM lParam;
  LRESULT LVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd8e39;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  if ((*(byte *)(param_1_00 + 0xe0) & 0xc0) == 0) {
    LVar2 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x188,0,0);
    if (-1 < LVar2) {
      SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x188,0,0);
      FUN_0086a400();
    }
    wParam = param_1[1];
  }
  else {
    wParam = SendMessageW(*(HWND *)(param_1_00 + 0x13c),400,0,0);
    if (wParam == 0xffffffff) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        FUN_008854f0();
        FUN_0083fe90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = wParam;
        FUN_0081b5bc();
      }
    }
    else if (wParam != 0) {
      lParam = FUN_00823c23();
      LVar2 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x191,wParam,lParam);
      if (LVar2 == -1) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 2;
          FUN_008423d0();
          uStack_4._0_1_ = 3;
          FUN_00840b80();
          uStack_4 = CONCAT31(uStack_4._1_3_,2);
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
        FUN_00a3f66c();
        wParam = 0xffffffff;
      }
      else {
        if (*param_1 < wParam) {
          FUN_0086a310();
        }
        iVar3 = 0;
        if (0 < (int)wParam) {
          do {
            FUN_0086a400();
            iVar3 = iVar3 + 1;
          } while (iVar3 < (int)wParam);
        }
        FUN_00a3f66c();
      }
    }
  }
  ExceptionList = local_c;
  return wParam;
}



undefined ** FUN_0096ba80(void)

{
  return &PTR_u_wxControlWithItems_0323b448;
}



void __fastcall FUN_0096ba90(undefined4 *param_1)

{
  *param_1 = wxItemContainerImmutable::vftable;
  return;
}



undefined4 __thiscall FUN_0096baa0(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  
  iVar1 = (**(code **)(*param_1_00 + 0x10))(param_1,0);
  if (iVar1 == -1) {
    return 0;
  }
  (**(code **)(*param_1_00 + 0x14))(iVar1);
  return 1;
}



undefined4 FUN_0096bad0(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\ctrlsub.cpp",0x99,"wxItemContainer::DoInsertOneItem",
                 "Assert failure",L"Must be overridden if DoInsertItemsInLoop() is used");
  }
  return 0xffffffff;
}



void __thiscall FUN_0096bb00(int *param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  undefined4 *puVar3;
  code *pcVar4;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    iVar1 = (**(code **)(*param_1 + 0x24))();
    if (iVar1 == 2) {
      FUN_00840480("..\\..\\src\\common\\ctrlsub.cpp",0xa6,"wxItemContainer::SetClientObject",
                   "!HasClientUntypedData()",L"can\'t have both object and void client data");
    }
  }
  uVar2 = (**(code **)(*param_1 + 4))();
  if (uVar2 <= param_2) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\ctrlsub.cpp",0xa8,"wxItemContainer::SetClientObject",
                   "IsValid(n)","Invalid index passed to SetClientObject()");
    }
    return;
  }
  iVar1 = (**(code **)(*param_1 + 0x24))();
  if (iVar1 == 1) {
    puVar3 = (undefined4 *)(**(code **)(*param_1 + 0x38))(param_2);
    if (puVar3 == (undefined4 *)0x0) goto LAB_0096bb81;
    pcVar4 = *(code **)*puVar3;
  }
  else {
    (**(code **)(*param_1 + 0x30))();
    pcVar4 = *(code **)(*param_1 + 0x48);
  }
  (*pcVar4)(1);
LAB_0096bb81:
  (**(code **)(*param_1 + 0x34))(param_2,param_2);
  return;
}



undefined4 __thiscall FUN_0096bbd0(int *param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  
  iVar1 = (**(code **)(*param_1 + 0x24))();
  if (iVar1 == 1) {
    uVar2 = (**(code **)(*param_1 + 4))();
    if (param_2 < uVar2) {
      uVar3 = (**(code **)(*param_1 + 0x38))(param_2);
      return uVar3;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\ctrlsub.cpp",0xc2,"wxItemContainer::GetClientObject",
                   "IsValid(n)","Invalid index passed to GetClientObject()");
      return 0;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\ctrlsub.cpp",0xbf,"wxItemContainer::GetClientObject",
                 "HasClientObjectData()",L"this window doesn\'t have object client data");
  }
  return 0;
}



void __thiscall FUN_0096bc60(int *param_1,uint param_2,undefined4 param_3)

{
  int iVar1;
  uint uVar2;
  
  iVar1 = (**(code **)(*param_1 + 0x24))();
  if (iVar1 == 0) {
    (**(code **)(*param_1 + 0x30))();
    (**(code **)(*param_1 + 0x48))(2);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    iVar1 = (**(code **)(*param_1 + 0x24))();
    if (iVar1 != 2) {
      FUN_00840480("..\\..\\src\\common\\ctrlsub.cpp",0xdc,"wxItemContainer::SetClientData",
                   "HasClientUntypedData()",L"can\'t have both object and void client data");
    }
  }
  uVar2 = (**(code **)(*param_1 + 4))();
  if (param_2 < uVar2) {
    (**(code **)(*param_1 + 0x34))(param_2,param_3);
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\common\\ctrlsub.cpp",0xde,"wxItemContainer::SetClientData",
                 "IsValid(n)","Invalid index passed to SetClientData()");
  }
  return;
}



undefined4 __thiscall FUN_0096bd10(int *param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  
  iVar1 = (**(code **)(*param_1 + 0x24))();
  if (iVar1 == 2) {
    uVar2 = (**(code **)(*param_1 + 4))();
    if (param_2 < uVar2) {
      uVar3 = (**(code **)(*param_1 + 0x38))(param_2);
      return uVar3;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\ctrlsub.cpp",0xe9,"wxItemContainer::GetClientData",
                   "IsValid(n)","Invalid index passed to GetClientData()");
      return 0;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\ctrlsub.cpp",0xe6,"wxItemContainer::GetClientData",
                 "HasClientUntypedData()",L"this window doesn\'t have void client data");
  }
  return 0;
}



void FUN_0096bda0(undefined4 param_1,int param_2,int param_3,int param_4)

{
  if (param_4 != 0) {
    if (param_4 == 1) {
      FUN_0096bb00(param_1,*(undefined4 *)(param_2 + param_3 * 4));
    }
    else {
      if (param_4 == 2) {
        FUN_0096bc60(param_1,*(undefined4 *)(param_2 + param_3 * 4));
        return;
      }
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\ctrlsub.cpp",0x102,
                     "wxItemContainer::AssignNewItemClientData","Assert failure",
                     L"unknown client data type");
        return;
      }
    }
  }
  return;
}



void __fastcall FUN_0096be20(int *param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 *puVar3;
  uint uVar4;
  
  iVar1 = (**(code **)(*param_1 + 0x24))();
  if (iVar1 == 1) {
    uVar2 = (**(code **)(*param_1 + 4))();
    uVar4 = 0;
    if (uVar2 != 0) {
      do {
        puVar3 = (undefined4 *)FUN_0096bbd0(uVar4);
        if (puVar3 != (undefined4 *)0x0) {
          (**(code **)*puVar3)(1);
          (**(code **)(*param_1 + 0x34))(uVar4,0);
        }
        uVar4 = uVar4 + 1;
      } while (uVar4 < uVar2);
    }
  }
  (**(code **)(*param_1 + 0x48))(0);
                    // WARNING: Could not recover jumptable at 0x0096be7e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x3c))();
  return;
}



void __thiscall FUN_0096be80(int *param_1,uint param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 *puVar3;
  
  uVar1 = (**(code **)(*param_1 + 4))();
  if (param_2 < uVar1) {
    iVar2 = (**(code **)(*param_1 + 0x24))();
    if (iVar2 == 1) {
      puVar3 = (undefined4 *)FUN_0096bbd0(param_2);
      if (puVar3 != (undefined4 *)0x0) {
        (**(code **)*puVar3)(1);
        (**(code **)(*param_1 + 0x34))(param_2,0);
      }
    }
    (**(code **)(*param_1 + 0x40))(param_2);
    iVar2 = (**(code **)(*param_1 + 4))();
    if (iVar2 == 0) {
      (**(code **)(*param_1 + 0x48))(0);
      return;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\ctrlsub.cpp",0x70,"wxItemContainer::Delete",
                 "pos < GetCount()",L"invalid index");
  }
  return;
}



void __thiscall FUN_0096bf20(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  FUN_00937340(param_1);
  if (param_2 != -1) {
    iVar1 = (**(code **)(*(int *)(param_1_00 + 0x194) + 0x24))();
    if (iVar1 == 1) {
      uVar2 = FUN_0096bbd0(param_2);
      *(undefined4 *)(param_1 + 0x58) = uVar2;
      return;
    }
    iVar1 = (**(code **)(*(int *)(param_1_00 + 0x194) + 0x24))();
    if (iVar1 == 2) {
      uVar2 = FUN_0096bd10(param_2);
      *(undefined4 *)(param_1 + 0x54) = uVar2;
    }
  }
  return;
}



int __thiscall FUN_0096bf80(int *param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be0da1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  iVar2 = (**(code **)(*param_1_00 + 0x18))(uVar1);
  if (iVar2 != -1) {
    iVar2 = (**(code **)(*param_1_00 + 8))(auStack_30,iVar2);
    local_4 = 1;
    if (param_1 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



undefined ** FUN_0096c040(void)

{
  return &PTR_u_wxListBox_0323b460;
}



void __fastcall FUN_0096c050(int *param_1)

{
  (**(code **)(*param_1 + 0x368))(param_1 + 0x67);
  return;
}



void __fastcall FUN_0096c070(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bddd58;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxListBoxBase::vftable;
  param_1[0x65] = wxListBoxBase::vftable;
  local_4 = 0;
  FUN_0086aa30(uVar1);
  local_4 = 0xffffffff;
  FUN_0048682d();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0096c120(int *param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  int unaff_retaddr;
  uint local_18;
  int iStack_14;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea298;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*(byte *)(param_1 + 0x38) & 0xc0) == 0) {
    iVar2 = (**(code **)(param_1[0x65] + 0x18))(DAT_0323f878 ^ (uint)&stack0xffffffd8);
    if ((iVar2 != -1) && (iVar2 != unaff_retaddr)) {
      (**(code **)(*param_1 + 0x374))(iVar2,0);
    }
  }
  else {
    FUN_0086a600();
    uVar3 = 0;
    local_4 = 0;
    (**(code **)(*param_1 + 0x368))(&local_18);
    uVar1 = local_18;
    if (local_18 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_18 <= uVar3)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                       "uiIndex < m_nCount",0);
        }
        iVar2 = *(int *)(iStack_14 + uVar3 * 4);
        if (iVar2 != unaff_retaddr) {
          (**(code **)(*param_1 + 0x374))(iVar2,0);
        }
        uVar3 = uVar3 + 1;
      } while (uVar3 < uVar1);
    }
    puStack_8 = (undefined *)0xffffffff;
    FUN_0086aa30();
  }
  ExceptionList = pvStack_10;
  return;
}



undefined4 __thiscall FUN_0096c240(int param_1_00,int param_1)

{
  if ((*(int *)(param_1_00 + 0x1a0) != 0) && (**(int **)(param_1_00 + 0x1a4) == param_1)) {
    return 0;
  }
  FUN_0086a880();
  FUN_0086a400(param_1,1);
  return 1;
}



void __thiscall FUN_0096c2c0(int param_1_00,int param_1)

{
  if (((*(uint *)(param_1_00 + -0xb4) & 0xc0) == 0) &&
     ((*(int *)(param_1_00 + 0xc) == 0 || (**(int **)(param_1_00 + 0x10) != param_1)))) {
    FUN_0086a880();
    FUN_0086a400(param_1,1);
  }
  (**(code **)(*(int *)(param_1_00 + -0x194) + 0x374))(param_1,1);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1bc);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00919c80(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_0096c390(int param_1_00,uint param_1,undefined4 param_2)

{
  uint uVar1;
  undefined *puVar2;
  int iVar3;
  undefined4 unaff_EBX;
  undefined local_90 [12];
  undefined4 uStack_84;
  uint uStack_80;
  void *pvStack_7c;
  undefined **appuStack_74 [4];
  int local_64;
  undefined auStack_4c [4];
  uint uStack_48;
  undefined4 uStack_38;
  uint uStack_34;
  void *pvStack_30;
  uint uStack_24;
  undefined4 local_20;
  undefined4 uStack_1c;
  void *pvStack_14;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4623;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_90;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff60;
  ExceptionList = &local_c;
  FUN_0092bd60(param_1,*(undefined4 *)(param_1_00 + 0x40));
  local_4 = 0;
  local_20 = param_2;
  local_64 = param_1_00;
  puVar2 = (undefined *)(**(code **)(*(int *)(param_1_00 + 0x194) + 8))(local_90,param_2,uVar1);
  local_c._0_1_ = 1;
  if (auStack_4c != puVar2) {
    FID_conflict_assign(puVar2,0,0xffffffff);
  }
  local_c = (void *)((uint)local_c._1_3_ << 8);
  _free(pvStack_7c);
  if (7 < uStack_80) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBX);
  }
  uStack_24 = param_1 & 0xff;
  uStack_80 = 7;
  uStack_84 = 0;
  iVar3 = (**(code **)(*(int *)(param_1_00 + 0x194) + 0x24))();
  if (iVar3 == 1) {
    uStack_1c = FUN_0096bbd0(param_2);
  }
  else {
    iVar3 = (**(code **)(*(int *)(param_1_00 + 0x194) + 0x24))();
    if (iVar3 == 2) {
      local_20 = FUN_0096bd10(param_2);
    }
  }
  FUN_0091c170(appuStack_74);
  local_c = (void *)0xffffffff;
  _free(pvStack_30);
  if (7 < uStack_34) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_48);
  }
  uStack_34 = 7;
  uStack_38 = 0;
  uStack_48 = uStack_48 & 0xffff0000;
  appuStack_74[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



undefined __fastcall FUN_0096c550(int *param_1)

{
  int *piVar1;
  uint uVar2;
  undefined uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  undefined4 uStack_24;
  undefined auStack_1c [4];
  uint local_18;
  int iStack_14;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bddd88;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xffffffcc);
  local_4 = 0;
  (**(code **)(*param_1 + 0x368))(&local_18);
  uVar8 = local_18;
  uStack_24 = 1;
  if ((local_18 != 0) || (param_1[0x68] != 0)) {
    uVar2 = param_1[0x68];
    uVar4 = local_18;
    if (local_18 != uVar2) {
LAB_0096c678:
      if (uVar4 == 0) {
        uStack_24 = 0;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[0x68] == 0)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                       "uiIndex < m_nCount",0);
        }
        iVar7 = *(int *)param_1[0x69];
      }
      else {
        uVar6 = 0;
        if (uVar8 != 0) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar4 <= uVar6)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,
                           "wxBaseArrayInt::Item","uiIndex < m_nCount",0);
            }
            iVar7 = *(int *)(iStack_14 + uVar6 * 4);
            iVar5 = FUN_0086a8b0(iVar7,0);
            if (iVar5 == -1) goto LAB_0096c77b;
            uVar6 = uVar6 + 1;
            uVar4 = local_18;
          } while (uVar6 < uVar8);
        }
        uVar8 = 0;
        if (uVar2 != 0) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x68] <= uVar8)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,
                           "wxBaseArrayInt::Item","uiIndex < m_nCount",0);
            }
            iVar7 = *(int *)(param_1[0x69] + uVar8 * 4);
            iVar5 = FUN_0086a8b0(iVar7,0);
            if (iVar5 == -1) {
              uStack_24 = 0;
              goto LAB_0096c77b;
            }
            uVar8 = uVar8 + 1;
          } while (uVar8 < uVar2);
        }
        iVar7 = -1;
      }
LAB_0096c77b:
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar7 == -1)) {
        FUN_008402e0("..\\..\\src\\common\\lboxcmn.cpp",0x126,"wxListBoxBase::CalcAndSendEvent",
                     "item != wxNOT_FOUND",
                     "Logic error in wxListBox selection event generation code");
      }
      FUN_0086a9a0(auStack_1c);
      uVar3 = FUN_0096c390(DAT_032bfdc4,iVar7,uStack_24);
      puStack_8 = (undefined *)0xffffffff;
      FUN_0086aa30();
      ExceptionList = pvStack_10;
      return uVar3;
    }
    uVar6 = 0;
    if (local_18 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar4 <= uVar6)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                       "uiIndex < m_nCount",0);
          uVar4 = local_18;
        }
        piVar1 = (int *)(iStack_14 + uVar6 * 4);
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x68] <= uVar6)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                       "uiIndex < m_nCount",0);
          uVar4 = local_18;
        }
        if (*piVar1 != *(int *)(param_1[0x69] + uVar6 * 4)) goto LAB_0096c678;
        uVar6 = uVar6 + 1;
      } while (uVar6 < uVar8);
    }
  }
  puStack_8 = (undefined *)0xffffffff;
  FUN_0086aa30();
  ExceptionList = pvStack_10;
  return 0;
}



uint FUN_0096c810(uint param_1,undefined4 param_2)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = FUN_00936390(param_1 & 0xe0ffffff | 0x200000,param_2);
  uVar2 = uVar1 | 0x4300003;
  if ((param_1 & 8) != 0) {
    uVar2 = uVar1 | 0x4300103;
  }
  return uVar2;
}



void __fastcall FUN_0096c850(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdddb8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxChoice::vftable;
  param_1[0x65] = wxChoice::vftable;
  local_4 = 0;
  FUN_0096be20(uVar1);
  local_4 = 0xffffffff;
  FUN_0096dd30();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_0096c8c0(int param_1)

{
  if (*(int *)(param_1 + 8) == -3) {
                    // WARNING: Could not recover jumptable at 0x0096c8da. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*(int *)(param_1 + -0x194) + 0x35c))();
    return;
  }
  return;
}



int __thiscall FUN_0096c930(int *param_1_00,undefined4 param_1,undefined4 param_2,uint param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  
  uVar3 = param_3;
  uVar2 = param_2;
  uVar1 = param_1;
  switch(param_1) {
  case 0x133:
  case 0x134:
  case 0x138:
    FUN_0090d930(param_2,param_3,&param_3,&param_1);
    iVar4 = (**(code **)(*param_1_00 + 0x34c))(param_3,param_1);
    if (iVar4 != 0) {
      return iVar4;
    }
    break;
  case 0x202:
    if (((short)param_3 == -1) && (param_3 >> 0x10 == 0xffff)) {
      return 0;
    }
  }
  iVar4 = FUN_0090d970(uVar1,uVar2,uVar3);
  return iVar4;
}



void FUN_0096caa0(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = FUN_0091b930();
  if (cVar1 == '\0') {
    FUN_00936570(param_1);
    return;
  }
  FUN_00936520(param_1,param_2);
  return;
}



uint __thiscall FUN_0096cae0(int param_1_00,int param_1)

{
  uint uVar1;
  
  if ((*(int *)(param_1 + 4) == 0x100) &&
     ((*(int *)(param_1 + 8) == 0x1b || (*(int *)(param_1 + 8) == 0xd)))) {
    uVar1 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x157,0,0);
    if (uVar1 != 0) {
      return uVar1 & 0xffffff00;
    }
  }
  uVar1 = FUN_0090f6a0(param_1);
  return uVar1;
}



void __thiscall FUN_0096cb50(int param_1_00,WPARAM param_1)

{
  SendMessageW(*(HWND *)(param_1_00 + -0x58),0x14e,param_1,0);
  return;
}



void __fastcall FUN_0096cb70(int param_1)

{
  SendMessageW(*(HWND *)(param_1 + -0x58),0x146,0,0);
  return;
}



void __fastcall FUN_0096cb90(int param_1)

{
  if (*(int *)(param_1 + 0x1a0) != -1) {
    SendMessageW(*(HWND *)(param_1 + 0x13c),0x153,0xffffffff,*(int *)(param_1 + 0x1a0) + -6);
  }
  *(undefined4 *)(param_1 + 0x154) = DAT_03238d0c;
  *(undefined4 *)(param_1 + 0x158) = DAT_03238d10;
  *(undefined4 *)(param_1 + 0x15c) = DAT_03238d04;
  *(undefined4 *)(param_1 + 0x160) = DAT_03238d08;
  return;
}



void __fastcall FUN_0096cbf0(int *param_1)

{
  undefined *puVar1;
  undefined local_8 [4];
  undefined local_4 [4];
  
  puVar1 = local_8;
  (**(code **)(*param_1 + 0x278))(local_4,local_8);
  (**(code **)(*param_1 + 0x288))(0xffffffff,0xffffffff,0xffffffff,puVar1,0);
  return;
}



int __thiscall FUN_0096cc30(int param_1,int param_2)

{
  uint uVar1;
  undefined4 uVar2;
  LRESULT LVar3;
  int local_1c;
  undefined local_18 [4];
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bddde8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  uVar2 = FUN_0091e100(local_14);
  local_4 = 0;
  FUN_0090d9c0(*(undefined4 *)(param_1 + 0x13c),local_18,&local_1c,uVar2,uVar1);
  local_4 = 0xffffffff;
  FUN_00921450();
  LVar3 = SendMessageW(*(HWND *)(param_1 + 0x13c),0x154,0xffffffff,0);
  if (param_2 < 4) {
    param_2 = 3;
  }
  else if (5 < param_2) {
    param_2 = 6;
  }
  ExceptionList = local_c;
  return (local_1c + 8) * param_2 + -1 + LVar3;
}



int __thiscall
FUN_0096ccf0(int *param_1_00,int param_1,int param_3,undefined4 param_4,undefined4 param_5)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  uint uVar5;
  bool bVar6;
  undefined4 unaff_retaddr;
  
  iVar4 = param_1;
  FUN_00936ef0(param_1,0x161);
  iVar2 = (**(code **)(*param_1_00 + 4))();
  bVar6 = param_3 == iVar2;
  if (bVar6) {
    param_3 = 0;
  }
  uVar1 = *(uint *)(iVar4 + 4);
  iVar4 = -1;
  uVar5 = 0;
  if (uVar1 != 0) {
    do {
      iVar4 = (-(uint)bVar6 & 0xfffffff9) + 0x14a;
      uVar3 = FUN_009363f0(uVar5);
      iVar4 = FUN_009370c0(param_3,uVar3,iVar4);
      if (iVar4 == -1) {
        return -1;
      }
      if (!bVar6) {
        param_3 = param_3 + 1;
      }
      FUN_0096bda0(iVar4,param_4,uVar5,param_5);
      uVar5 = uVar5 + 1;
    } while (uVar5 < uVar1);
  }
  if (param_1_00[-0x17] == 0) {
    (**(code **)(param_1_00[-0x65] + 0x278))(&param_1,&param_3);
    (**(code **)(param_1_00[-0x65] + 0x288))(0xffffffff,0xffffffff,0xffffffff,unaff_retaddr,0);
  }
  FUN_0091a950();
  return iVar4;
}



void __thiscall FUN_0096cdf0(int *param_1,uint param_2)

{
  uint uVar1;
  
  uVar1 = (**(code **)(*param_1 + 4))();
  if (param_2 < uVar1) {
    SendMessageW((HWND)param_1[-0x16],0x144,param_2,0);
    if (param_1[-0x17] == 0) {
      FUN_0096cbf0();
    }
    FUN_0091a950();
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\choice.cpp",0xf9,"wxChoice::DoDeleteOneItem","IsValid(n)",
                 L"invalid item index in wxChoice::Delete");
  }
  return;
}



void __fastcall FUN_0096ce70(int param_1)

{
  undefined4 unaff_ESI;
  undefined auStack_8 [4];
  undefined auStack_4 [4];
  
  SendMessageW(*(HWND *)(param_1 + -0x58),0x14b,0,0);
  if (*(int *)(param_1 + -0x5c) == 0) {
    (**(code **)(*(int *)(param_1 + -0x194) + 0x278))(auStack_4,auStack_8);
    (**(code **)(*(int *)(param_1 + -0x194) + 0x288))(0xffffffff,0xffffffff,0xffffffff,unaff_ESI,0);
  }
  FUN_0091a950();
  return;
}



void __thiscall
FUN_0096cee0(int *param_1_00,undefined4 param_1,undefined4 param_2,int param_3,int param_4,
            undefined4 param_6)

{
  int iVar1;
  uint uVar2;
  LRESULT LVar3;
  undefined local_8 [8];
  
  iVar1 = FUN_0091b530(local_8);
  if (param_4 == -1) {
    (**(code **)(*param_1_00 + 0x278))(0,&param_4);
  }
  else if (param_4 == *(int *)(iVar1 + 4)) {
    param_1_00[0x68] = -1;
  }
  else {
    param_1_00[0x68] = param_4;
    if (param_4 < 0x100) {
      if (param_4 < 6) {
        param_1_00[0x68] = 6;
      }
    }
    else {
      param_1_00[0x68] = 0xff;
    }
  }
  uVar2 = (**(code **)(param_1_00[0x65] + 4))();
  if (((uint)param_1_00[0x38] >> 2 & 1) == 0) {
    if (uVar2 == 0) {
      uVar2 = 9;
    }
    else if (0x1e < uVar2) {
      uVar2 = 0x1e;
    }
  }
  LVar3 = SendMessageW((HWND)param_1_00[0x4f],0x154,0,0);
  if (((uint)param_1_00[0x38] >> 2 & 1) == 0) {
    iVar1 = (uVar2 + 1) * LVar3 + param_4;
  }
  else {
    iVar1 = FUN_0096cc30(uVar2);
  }
  FUN_00911700(param_1,param_2,param_3,iVar1,param_6);
  if ((param_1_00[0x57] == DAT_03238d04) && (param_1_00[0x58] == DAT_03238d08)) {
    if (param_1_00[0x68] != -1) {
      SendMessageW((HWND)param_1_00[0x4f],0x153,0xffffffff,param_1_00[0x68] + -6);
      return;
    }
  }
  else {
    param_1_00[0x57] = param_3;
    param_1_00[0x58] = param_4;
  }
  return;
}



void __thiscall FUN_0096d040(int *param_1,uint param_2,int param_3)

{
  uint wParam;
  uint uVar1;
  int iVar2;
  LPARAM lParam;
  int iVar3;
  
  wParam = param_2;
  uVar1 = (**(code **)(*param_1 + 4))();
  if (uVar1 <= param_2) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\choice.cpp",0x15c,"wxChoice::SetString","IsValid(n)",
                   L"invalid item index in wxChoice::SetString");
    }
    return;
  }
  iVar3 = 0;
  param_2 = 0;
  iVar2 = (**(code **)(*param_1 + 0x24))();
  if (iVar2 == 2) {
    iVar3 = FUN_0096bd10(wParam);
  }
  else {
    iVar2 = (**(code **)(*param_1 + 0x24))();
    if (iVar2 == 1) {
      param_2 = FUN_0096bbd0(wParam);
    }
  }
  SendMessageW((HWND)param_1[-0x16],0x144,wParam,0);
  if (*(uint *)(param_3 + 0x18) < 8) {
    lParam = param_3 + 4;
  }
  else {
    lParam = *(LPARAM *)(param_3 + 4);
  }
  SendMessageW((HWND)param_1[-0x16],0x14a,wParam,lParam);
  if (iVar3 != 0) {
    FUN_0096bc60(wParam,iVar3);
    FUN_0091a950();
    return;
  }
  if (param_2 != 0) {
    FUN_0096bb00(wParam,param_2);
  }
  FUN_0091a950();
  return;
}



undefined4 FUN_0096d140(undefined4 param_1)

{
  int iVar1;
  undefined *puVar2;
  undefined auStack_58 [8];
  undefined **appuStack_50 [5];
  undefined local_3c [8];
  undefined auStack_34 [8];
  undefined4 uStack_2c;
  undefined uStack_28;
  undefined uStack_27;
  undefined uStack_26;
  undefined uStack_25;
  undefined uStack_24;
  undefined auStack_20 [8];
  undefined4 uStack_18;
  undefined uStack_14;
  undefined uStack_13;
  undefined uStack_12;
  undefined uStack_11;
  undefined uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdde49;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0091d230(DAT_0323f878 ^ (uint)&stack0xffffff98);
  local_4 = 1;
  iVar1 = (**(code **)(*DAT_032bcb68 + 0xd4))();
  if (iVar1 == 0) {
    FUN_009b7c20(local_3c);
  }
  else {
    puVar2 = (undefined *)FUN_008ff360(auStack_58,0x11);
    local_4._0_1_ = 2;
    if (local_3c != puVar2) {
      FUN_0083ea60(puVar2);
    }
    local_4._0_1_ = 1;
    FUN_00921450();
    puVar2 = (undefined *)FUN_008ff080(appuStack_50,8);
    local_4._0_1_ = 3;
    if (auStack_34 != puVar2) {
      FUN_0083ea60(puVar2);
    }
    uStack_2c = *(undefined4 *)(puVar2 + 8);
    uStack_28 = puVar2[0xc];
    uStack_27 = puVar2[0xd];
    uStack_26 = puVar2[0xe];
    uStack_25 = puVar2[0xf];
    uStack_24 = puVar2[0x10];
    local_4._0_1_ = 1;
    appuStack_50[0] = wxObject::vftable;
    FUN_0083e850();
    puVar2 = (undefined *)FUN_00916990(appuStack_50,L"EDIT",1,1,1,5);
    local_4._0_1_ = 4;
    if (auStack_20 != puVar2) {
      FUN_0083ea60(puVar2);
    }
    uStack_18 = *(undefined4 *)(puVar2 + 8);
    uStack_14 = puVar2[0xc];
    uStack_13 = puVar2[0xd];
    uStack_12 = puVar2[0xe];
    uStack_11 = puVar2[0xf];
    uStack_10 = puVar2[0x10];
    local_4 = CONCAT31(local_4._1_3_,1);
    appuStack_50[0] = wxObject::vftable;
    FUN_0083e850();
    FUN_009b7c20(local_3c);
  }
  local_4 = local_4 & 0xffffff00;
  FUN_0043d9c0();
  ExceptionList = local_c;
  return param_1;
}



uint __thiscall FUN_0096d2f0(int *param_1_00,int param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  LPARAM lParam;
  uint uVar3;
  undefined auStack_24 [4];
  undefined4 uStack_20;
  uint uStack_c;
  void *pvStack_8;
  
  if (*(int *)(param_1 + 0x14) == 0) {
    uVar1 = (**(code **)(*param_1_00 + 4))();
    uVar3 = 0;
    if (uVar1 != 0) {
      do {
        iVar2 = (**(code **)(*param_1_00 + 8))(auStack_24,uVar3);
        iVar2 = *(int *)(iVar2 + 0x14);
        _free(pvStack_8);
        if (7 < uStack_c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_20);
        }
        if (iVar2 == 0) {
          return uVar3;
        }
        uVar3 = uVar3 + 1;
      } while (uVar3 < uVar1);
    }
    uVar1 = 0xffffffff;
  }
  else {
    if ((char)param_2 != '\0') {
      uVar1 = FUN_0048688a(param_1,param_2);
      return uVar1;
    }
    if (*(uint *)(param_1 + 0x18) < 8) {
      lParam = param_1 + 4;
    }
    else {
      lParam = *(LPARAM *)(param_1 + 4);
    }
    uVar1 = SendMessageW((HWND)param_1_00[-0x16],0x158,0xffffffff,lParam);
    if (uVar1 == 0xffffffff) {
      return 0xffffffff;
    }
  }
  return uVar1;
}



int * __thiscall FUN_0096d3c0(int *param_1,int *param_2)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int iStack_34;
  undefined auStack_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdde78;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar5 = 0;
  uVar1 = (**(code **)(param_1[0x65] + 4))(DAT_0323f878 ^ (uint)&stack0xffffffb8);
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      uVar2 = (**(code **)(param_1[0x65] + 8))(auStack_30,uVar4);
      local_c = (void *)0x0;
      (**(code **)(*param_1 + 600))(uVar2,&stack0xffffffc4,0,0,0,0);
      uStack_4 = 0xffffffff;
      _free(pvStack_14);
      if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_2c);
      }
      uStack_18 = 7;
      uStack_1c = 0;
      uStack_2c = uStack_2c & 0xffff0000;
      if (iVar5 < iStack_34) {
        iVar5 = iStack_34;
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
    if (iVar5 != 0) goto LAB_0096d49f;
  }
  iVar5 = 100;
LAB_0096d49f:
  iVar3 = (**(code **)(*param_1 + 0x198))();
  iVar5 = iVar3 * 5 + iVar5;
  if (((uint)param_1[0x38] >> 2 & 1) == 0) {
    iVar3 = (**(code **)(*param_1 + 0x194))();
    iVar3 = iVar3 + 8;
  }
  else {
    iVar3 = FUN_0096cc30(uVar1);
  }
  param_2[1] = iVar3;
  param_1[0x4d] = iVar3;
  *param_2 = iVar5;
  param_1[0x4c] = iVar5;
  ExceptionList = local_c;
  return param_2;
}



undefined4 __thiscall
FUN_0096d510(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,int param_5,int param_6,undefined4 param_7,undefined4 param_8,
            undefined4 param_9)

{
  char cVar1;
  uint uVar2;
  undefined4 local_3c;
  undefined4 local_38;
  int local_34;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bccb48;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  cVar1 = FUN_00937250(param_1,param_2,param_3,param_4,param_7,param_8,param_9);
  if (cVar1 != '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    cVar1 = FUN_00937200(L"COMBOBOX",local_30,param_3,param_4);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar2);
    }
    if (cVar1 != '\0') {
      if (0 < param_5) {
        do {
          local_3c = 1;
          local_38 = 1;
          local_34 = param_6;
          (**(code **)(*(int *)(param_1_00 + 0x194) + 0x28))(&local_3c,0,0);
          param_6 = param_6 + 0x24;
          param_5 = param_5 + -1;
        } while (param_5 != 0);
      }
      FUN_0091b600(param_4);
      ExceptionList = local_c;
      return 1;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_0096d640(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = (**(code **)(*(int *)(param_1_00 + 0x194) + 0x10))(param_1,0);
  if (iVar1 == -1) {
    (**(code **)(*(int *)(param_1_00 + 0x194) + 0x14))(0xffffffff);
  }
  if (param_1_00 + 0x164 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  FUN_0091a950();
  FUN_0095f6a0(param_1);
  return;
}



void __thiscall FUN_0096d6a0(int *param_1_00,int param_1)

{
  code *pcVar1;
  int iVar2;
  undefined *puVar3;
  undefined auStack_90 [36];
  undefined auStack_6c [8];
  int *piStack_64;
  undefined auStack_44 [36];
  int iStack_20;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bddeb3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_90;
  ExceptionList = &local_c;
  if (param_1 == 7) {
    iVar2 = (**(code **)(*param_1_00 + 0x35c))(DAT_0323f878 ^ (uint)&stack0xffffff64);
    param_1_00[0x67] = iVar2;
  }
  else if (param_1 == 8) {
    if (param_1_00[0x67] != -3) {
      (**(code **)(param_1_00[0x65] + 0x14))(param_1_00[0x67]);
      param_1_00[0x67] = -3;
    }
  }
  else if (param_1 == 9) {
    pcVar1 = *(code **)(param_1_00[0x65] + 0x18);
    param_1_00[0x67] = -3;
    iVar2 = (*pcVar1)();
    FUN_0092bd60(DAT_032bfdc0,param_1_00[0x10]);
    uStack_4 = 0;
    piStack_64 = param_1_00;
    iStack_20 = iVar2;
    if (-1 < iVar2) {
      puVar3 = (undefined *)(**(code **)(param_1_00[0x65] + 0x1c))(auStack_90);
      uStack_4._0_1_ = 1;
      if (auStack_44 != puVar3) {
        FID_conflict_assign(puVar3,0,0xffffffff);
      }
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_0040159c();
      FUN_0096bf20(auStack_6c,iVar2);
    }
    thunk_FUN_0091c170(auStack_6c);
    uStack_4 = 0xffffffff;
    FUN_00454a4e();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_0096d820(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,uint param_7,undefined4 param_8,
                 undefined4 param_9)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((param_7 & 0x34) != 0)) {
    FUN_00840480("..\\..\\src\\msw\\choice.cpp",0x40,"wxChoice::Create",
                 "!(style & wxCB_DROPDOWN) && !(style & wxCB_READONLY) && !(style & wxCB_SIMPLE)",
                 L"this style flag is ignored by wxChoice, you probably want to use a wxComboBox");
  }
  FUN_0096d510(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9);
  return;
}



// WARNING: Removing unreachable block (ram,0x0096d91a)

undefined FUN_0096d890(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                      int param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  undefined4 uVar1;
  undefined uVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bddef8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = *(undefined4 *)(param_5 + 4);
  local_4 = 0;
  uVar3 = FUN_0096b030(param_6,param_7,param_8,DAT_0323f878 ^ (uint)&stack0xffffffe0);
  uVar2 = FUN_0096d820(param_1,param_2,param_3,param_4,uVar1,uVar3,param_6,param_7,param_8);
  ExceptionList = local_c;
  return uVar2;
}



int __thiscall FUN_0096d950(int param_1_00,int param_1,WPARAM param_2)

{
  char cVar1;
  LRESULT LVar2;
  LPARAM *pLStack_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bddf49;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  LVar2 = SendMessageW(*(HWND *)(param_1_00 + -0x58),0x149,param_2,0);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  uStack_4 = 0;
  if ((LVar2 != -1) && (0 < LVar2)) {
    FUN_00852280();
    LVar2 = SendMessageW(*(HWND *)(param_1_00 + -0x58),0x148,param_2,*pLStack_78);
    FUN_00851bf0();
    if (LVar2 == -1) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 1;
        FUN_008423d0();
        uStack_4._0_1_ = 2;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4._0_1_ = 1;
        FUN_00842440();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_0081b5bc();
      }
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0096daf0(int param_1_00,WPARAM param_1,LPARAM param_2)

{
  char cVar1;
  LRESULT LVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  LVar2 = SendMessageW(*(HWND *)(param_1_00 + -0x58),0x151,param_1,param_2);
  if (LVar2 == -1) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



LRESULT __thiscall FUN_0096dc10(int param_1_00,WPARAM param_1)

{
  char cVar1;
  LRESULT LVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  LVar2 = SendMessageW(*(HWND *)(param_1_00 + -0x58),0x150,param_1,0);
  if (LVar2 == -1) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    LVar2 = 0;
  }
  ExceptionList = local_c;
  return LVar2;
}



undefined ** FUN_0096dd20(void)

{
  return &PTR_u_wxChoice_0323b478;
}



void __fastcall FUN_0096dd30(undefined4 *param_1)

{
  *param_1 = wxChoiceBase::vftable;
  param_1[0x65] = wxChoiceBase::vftable;
  FUN_0048682d();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1a4);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00919cf0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined ** FUN_0096ddf0(void)

{
  return &PTR_u_wxDirDialog_0323b4ac;
}



undefined4 * __fastcall FUN_0096de00(undefined4 *param_1)

{
  FUN_0044cc1c();
  *param_1 = wxDirDialogBase::vftable;
  param_1[0x81] = 0;
  param_1[0x82] = 7;
  *(undefined2 *)(param_1 + 0x7d) = 0;
  param_1[0x83] = 0;
  param_1[0x8b] = 7;
  param_1[0x8a] = 0;
  *(undefined2 *)(param_1 + 0x86) = 0;
  param_1[0x8c] = 0;
  return param_1;
}



void __thiscall FUN_0096de50(int param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  short *psVar3;
  undefined4 *puVar4;
  int iVar5;
  int *piVar6;
  undefined4 *puVar7;
  undefined4 *puVar8;
  undefined local_5c [4];
  undefined4 *local_58;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bddf80;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = param_1_00 + 0x214;
  if (iVar1 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  FUN_004325b6(&DAT_0305784c);
  local_4 = 0;
  FUN_004325b6(&DAT_03057848);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00852a70(local_54,local_30,1);
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  iVar5 = *(int *)(param_1_00 + 0x228);
  while (iVar5 != 0) {
    uVar2 = *(uint *)(param_1_00 + 0x22c);
    puVar8 = (undefined4 *)(param_1_00 + 0x218);
    puVar7 = puVar8;
    if (7 < uVar2) {
      puVar7 = (undefined4 *)*puVar8;
    }
    iVar5 = *(int *)(param_1_00 + 0x228) * 2;
    puVar7 = (undefined4 *)(iVar5 + (int)puVar7);
    if (puVar7 == (undefined4 *)0x0) {
LAB_0096df7d:
      FUN_00a3fb10();
    }
    else {
      puVar4 = puVar8;
      if (7 < uVar2) {
        puVar4 = (undefined4 *)*puVar8;
      }
      if (puVar7 < puVar4) goto LAB_0096df7d;
      puVar4 = puVar8;
      if (7 < uVar2) {
        puVar4 = (undefined4 *)*puVar8;
      }
      if ((undefined4 *)(iVar5 + (int)puVar4) < puVar7) goto LAB_0096df7d;
    }
    local_58 = puVar7;
    if (iVar1 != -4) {
      puVar4 = puVar8;
      if (7 < *(uint *)(param_1_00 + 0x22c)) {
        puVar4 = (undefined4 *)*puVar8;
      }
      if ((undefined4 *)((int)puVar7 - 2U) <=
          (undefined4 *)((int)puVar4 + *(int *)(param_1_00 + 0x228) * 2)) {
        if (7 < *(uint *)(param_1_00 + 0x22c)) {
          puVar8 = (undefined4 *)*puVar8;
        }
        if (puVar8 <= (undefined4 *)((int)puVar7 - 2U)) goto LAB_0096dfba;
      }
      FUN_00a3fb10();
    }
LAB_0096dfba:
    if (iVar1 != -4) {
      if (param_1_00 == -0x214) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1_00 + 0x22c) < 8) {
        iVar5 = param_1_00 + 0x218;
      }
      else {
        iVar5 = *(int *)(param_1_00 + 0x218);
      }
      if ((short *)(iVar5 + *(int *)(param_1_00 + 0x228) * 2) <= (short *)((int)puVar7 - 2U)) {
        FUN_00a3fb10();
      }
    }
    if (*(short *)((int)puVar7 - 2U) != 0x5c) break;
    FID_conflict_erase(*(int *)(param_1_00 + 0x228) + -1,0xffffffff);
    iVar5 = *(int *)(param_1_00 + 0x228);
  }
  if (*(int *)(param_1_00 + 0x228) != 0) {
    piVar6 = (int *)FUN_0081b397(local_5c);
    iVar1 = *piVar6;
    psVar3 = (short *)piVar6[1];
    FUN_004226c0(0xffffffff);
    if (iVar1 != -4) {
      if (iVar1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar1 + 0x18) < 8) {
        iVar5 = iVar1 + 4;
      }
      else {
        iVar5 = *(int *)(iVar1 + 4);
      }
      if ((short *)(iVar5 + *(int *)(iVar1 + 0x14) * 2) <= psVar3) {
        FUN_00a3fb10();
      }
    }
    if (*psVar3 == 0x3a) {
      FID_conflict_append(1,0x5c);
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_0096e0a0(HWND param_1,int param_2,LPCITEMIDLIST param_3,LPARAM param_4)

{
  uint uVar1;
  BOOL BVar2;
  undefined *puVar3;
  undefined4 uVar4;
  undefined4 ***lParam;
  undefined local_a8 [4];
  LPWSTR *local_a4;
  undefined auStack_a0 [36];
  undefined auStack_7c [72];
  undefined local_34 [4];
  undefined4 ***local_30 [4];
  uint local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bddfc3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_a8;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff4c;
  ExceptionList = &local_c;
  if (param_2 == 1) {
    SendMessageW(param_1,0x467,1,param_4);
  }
  else if (param_2 == 2) {
    local_1c = 7;
    local_20 = 0;
    local_30[0] = (undefined4 ***)((uint)local_30[0] & 0xffff0000);
    local_18 = (void *)0x0;
    local_4 = 0;
    FUN_00852280(local_34,0x104);
    BVar2 = SHGetPathFromIDListW(param_3,*local_a4);
    FUN_00851bf0(uVar1);
    if (BVar2 != 0) {
      if (0x25 < local_20) {
        puVar3 = (undefined *)FUN_00852680(auStack_a0,0x25);
        local_4._0_1_ = 1;
        if (local_34 != puVar3) {
          FID_conflict_assign(puVar3,0,0xffffffff);
        }
        local_4._0_1_ = 0;
        FUN_0040159c();
        uVar4 = FUN_004325b6(&DAT_00d2e8c4);
        local_4._0_1_ = 2;
        puVar3 = (undefined *)FUN_008531f0(auStack_7c,uVar4,local_34);
        local_4 = CONCAT31(local_4._1_3_,3);
        if (local_34 != puVar3) {
          FID_conflict_assign(puVar3,0,0xffffffff);
        }
        FUN_0040159c();
        FUN_0040159c();
      }
      lParam = local_30[0];
      if (local_1c < 8) {
        lParam = local_30;
      }
      SendMessageW(param_1,0x468,0,(LPARAM)lParam);
    }
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30[0]);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int * __thiscall
FUN_0096e2a0(int *param_1_00,int param_1,int *param_2,undefined4 param_3,undefined4 param_4)

{
  code *pcVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde008;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0096de00(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1_00 = (int)wxDirDialog::vftable;
  if (param_1_00 + 0x7c != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  pcVar1 = *(code **)(*param_1_00 + 0xe4);
  param_1_00[0x11] = param_1;
  (*pcVar1)(param_4);
  FUN_0096de50(param_2);
  ExceptionList = param_1_00;
  return param_1_00;
}



undefined4 __thiscall FUN_0096e330(undefined4 param_1,byte param_2)

{
  FUN_00489371();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



int __fastcall FUN_0096e350(int param_1)

{
  uint uVar1;
  int *piVar2;
  LPITEMIDLIST pIVar3;
  int iVar4;
  byte bVar5;
  int local_5c [2];
  char local_54;
  _browseinfoW local_50;
  undefined auStack_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde04e;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x44) == 0) {
    local_50.hwndOwner = (HWND)0x0;
  }
  else {
    local_50.hwndOwner = *(HWND *)(*(int *)(param_1 + 0x44) + 0x13c);
  }
  local_50.pidlRoot = (LPCITEMIDLIST)0x0;
  local_50.pszDisplayName = (LPWSTR)0x0;
  piVar2 = (int *)FUN_00432231(local_5c);
  iVar4 = *piVar2;
  if (*(uint *)(iVar4 + 0x18) < 8) {
    iVar4 = iVar4 + 4;
  }
  else {
    iVar4 = *(int *)(iVar4 + 4);
  }
  local_50.lpszTitle = (LPCWSTR)(iVar4 + piVar2[1] * 2);
  if ((local_54 != '\0') && (local_5c[0] != 0)) {
    _free(*(void **)(local_5c[0] + 0x1c));
    if (*(uint *)(local_5c[0] + 0x18) < 8) {
      *(undefined4 *)(local_5c[0] + 0x18) = 7;
      *(undefined4 *)(local_5c[0] + 0x14) = 0;
      *(undefined2 *)(local_5c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c[0]);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(local_5c[0] + 4));
  }
  local_50.ulFlags = 5;
  local_50.lpfn = FUN_0096e0a0;
  if (*(uint *)(param_1 + 0x22c) < 8) {
    local_50.lParam = param_1 + 0x218;
  }
  else {
    local_50.lParam = *(int *)(param_1 + 0x218);
  }
  if ((DAT_032e1290 & 1) == 0) {
    DAT_032e1290 = DAT_032e1290 | 1;
    local_4 = 0;
    DAT_032e128c = FUN_008fc6f0(uVar1);
  }
  if (0x1d6 < DAT_032e128c) {
    local_50.ulFlags = local_50.ulFlags | 0x10;
  }
  bVar5 = ~(byte)(*(uint *)(param_1 + 0xe0) >> 9) & 1;
  if (((bVar5 != 0) || ((*(uint *)(param_1 + 0xe0) >> 6 & 1) != 0)) && (499 < DAT_032e128c)) {
    if (bVar5 == 0) {
      if (599 < DAT_032e128c) {
        local_50.ulFlags = local_50.ulFlags | 0x240;
      }
    }
    else {
      local_50.ulFlags = local_50.ulFlags | 0x40;
    }
  }
  pIVar3 = SHBrowseForFolderW(&local_50);
  local_4 = 1;
  FUN_008a1190(local_50.pidlRoot);
  if (pIVar3 == (LPITEMIDLIST)0x0) {
    local_4 = 0xffffffff;
    FUN_008a1190(0);
    iVar4 = 0x13ed;
  }
  else {
    iVar4 = FUN_008a12e0(auStack_30);
    local_4._0_1_ = 2;
    if (param_1 + 0x214 != iVar4) {
      FID_conflict_assign(iVar4,0,0xffffffff);
    }
    local_4 = CONCAT31(local_4._1_3_,1);
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
    if ((*(uint *)(param_1 + 0xe0) & 0x100) != 0) {
      FUN_0085f380(param_1 + 0x214);
    }
    iVar4 = 0x13ed - (uint)(*(int *)(param_1 + 0x228) != 0);
    local_4 = 0xffffffff;
    FUN_008a1190(pIVar3);
  }
  ExceptionList = local_c;
  return iVar4;
}



undefined ** FUN_0096e5a0(void)

{
  return &PTR_u_wxGenericDirCtrl_0323b4c4;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x218);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009c2e60(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined ** FUN_0096e620(void)

{
  return &PTR_u_wxTextValidator_0323b4dc;
}



undefined ** FUN_0096e630(void)

{
  return &PTR_DAT_00d613c8;
}



undefined * FUN_0096e640(void)

{
  return &DAT_032e1294;
}



int __fastcall FUN_0096e650(int param_1)

{
  char cVar1;
  
  cVar1 = FUN_0083e950(&PTR_u_wxTextCtrl_0323b24c);
  if (cVar1 == '\0') {
    cVar1 = FUN_0083e950(&PTR_u_wxComboBox_0323a9b4);
    if (cVar1 == '\0') {
      cVar1 = FUN_0083e950(&PTR_u_wxComboCtrl_0323abd4);
      if (cVar1 == '\0') {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_008402e0("..\\..\\src\\common\\valtext.cpp",0x8c,"wxTextValidator::GetTextEntry",
                       "Assert failure",
                       "wxTextValidator can only be used with wxTextCtrl, wxComboBox, or wxComboCtrl"
                      );
        }
      }
      else if (*(int *)(param_1 + 0x40) != 0) {
        return *(int *)(param_1 + 0x40) + 0x194;
      }
    }
    else if (*(int *)(param_1 + 0x40) != 0) {
      return *(int *)(param_1 + 0x40) + 0x1a4;
    }
  }
  else if (*(int *)(param_1 + 0x40) != 0) {
    return *(int *)(param_1 + 0x40) + 0x398;
  }
  return 0;
}



undefined4 __fastcall FUN_0096e6f0(int param_1)

{
  int *piVar1;
  
  if (*(int *)(param_1 + 0x48) != 0) {
    piVar1 = (int *)FUN_0096e650();
    if (piVar1 == (int *)0x0) {
      return 0;
    }
    (**(code **)(*piVar1 + 4))(*(undefined4 *)(param_1 + 0x48));
  }
  return 1;
}



void __thiscall FUN_0096e720(int param_1_00,uint param_1)

{
  uint uVar1;
  
  *(uint *)(param_1_00 + 0x44) = param_1;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (1 < (param_1 >> 5 & 1) + (param_1 >> 4 & 1) + (param_1 >> 3 & 1) + (param_1 >> 2 & 1)) {
      FUN_008402e0("..\\..\\src\\common\\valtext.cpp",0x57,"wxTextValidator::SetStyle","check <= 1",
                   "It makes sense to use only one of the wxFILTER_ALPHA/wxFILTER_ALPHANUMERIC/wxFILTER_SIMPLE_NUMBER/wxFILTER_NUMERIC styles"
                  );
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      uVar1 = *(uint *)(param_1_00 + 0x44);
      if ((1 < (uVar1 >> 7 & 1) + (uVar1 >> 6 & 1)) || (1 < (uVar1 >> 9 & 1) + (uVar1 >> 8 & 1))) {
        FUN_008402e0("..\\..\\src\\common\\valtext.cpp",0x5c,"wxTextValidator::SetStyle",
                     "((int)HasFlag(wxFILTER_INCLUDE_LIST) + (int)HasFlag(wxFILTER_INCLUDE_CHAR_LIST) <= 1) && ((int)HasFlag(wxFILTER_EXCLUDE_LIST) + (int)HasFlag(wxFILTER_EXCLUDE_CHAR_LIST) <= 1)"
                     ,
                     "Using both wxFILTER_[IN|EX]CLUDE_LIST _and_ wxFILTER_[IN|EX]CLUDE_CHAR_LIST doesn\'t work since wxTextValidator internally uses the same array for both"
                    );
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
         (uVar1 = *(uint *)(param_1_00 + 0x44),
         1 < (uVar1 >> 9 & 1) + (uVar1 >> 8 & 1) + (uVar1 >> 7 & 1) + (uVar1 >> 6 & 1))) {
        FUN_008402e0("..\\..\\src\\common\\valtext.cpp",0x61,"wxTextValidator::SetStyle",
                     "check <= 1",
                     "Using both an include/exclude list may lead to unexpected results");
      }
    }
  }
  return;
}



undefined4 * __thiscall FUN_0096e830(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde08e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00940c60(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1_00 = wxTextValidator::vftable;
  FUN_00853ce0(0);
  local_4._0_1_ = 1;
  FUN_00853ce0(0);
  local_4 = CONCAT31(local_4._1_3_,2);
  param_1_00[0x12] = param_2;
  FUN_0096e720(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_0096e8c0(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde0ce;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00940c60(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  local_4 = 0;
  *param_1_00 = wxTextValidator::vftable;
  FUN_00853ce0(0);
  local_4._0_1_ = 1;
  FUN_00853ce0(0);
  param_1_00[0x10] = *(undefined4 *)(param_1 + 0x40);
  param_1_00[0x11] = *(undefined4 *)(param_1 + 0x44);
  local_4 = CONCAT31(local_4._1_3_,2);
  param_1_00[0x12] = *(undefined4 *)(param_1 + 0x48);
  FUN_00855070(param_1 + 0x4c);
  FUN_00855070(param_1 + 0x5c);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_0096e970(int param_1)

{
  wint_t **ppwVar1;
  uint uVar2;
  wint_t **ppwVar3;
  int iVar4;
  int *piVar5;
  wint_t **ppwVar6;
  wint_t **ppwVar7;
  undefined local_10 [4];
  undefined local_c [4];
  int local_8;
  wint_t **local_4;
  
  uVar2 = *(uint *)(param_1 + 0x18);
  ppwVar1 = (wint_t **)(param_1 + 4);
  ppwVar7 = ppwVar1;
  if (7 < uVar2) {
    ppwVar7 = (wint_t **)*ppwVar1;
  }
  if (ppwVar7 != (wint_t **)0x0) {
    ppwVar3 = ppwVar1;
    if (7 < uVar2) {
      ppwVar3 = (wint_t **)*ppwVar1;
    }
    if (ppwVar3 <= ppwVar7) {
      ppwVar3 = ppwVar1;
      if (7 < uVar2) {
        ppwVar3 = (wint_t **)*ppwVar1;
      }
      if (ppwVar7 <= (wint_t **)((int)ppwVar3 + *(int *)(param_1 + 0x14) * 2)) goto LAB_0096e9bc;
    }
  }
  FUN_00a3fb10();
LAB_0096e9bc:
  local_8 = param_1;
  do {
    uVar2 = *(uint *)(param_1 + 0x18);
    ppwVar3 = ppwVar1;
    if (7 < uVar2) {
      ppwVar3 = (wint_t **)*ppwVar1;
    }
    iVar4 = *(int *)(param_1 + 0x14) * 2;
    ppwVar3 = (wint_t **)(iVar4 + (int)ppwVar3);
    local_4 = ppwVar7;
    if (ppwVar3 == (wint_t **)0x0) {
LAB_0096ea09:
      FUN_00a3fb10();
    }
    else {
      ppwVar6 = ppwVar1;
      if (7 < uVar2) {
        ppwVar6 = (wint_t **)*ppwVar1;
      }
      if (ppwVar3 < ppwVar6) goto LAB_0096ea09;
      ppwVar6 = ppwVar1;
      if (7 < uVar2) {
        ppwVar6 = (wint_t **)*ppwVar1;
      }
      if ((wint_t **)(iVar4 + (int)ppwVar6) < ppwVar3) goto LAB_0096ea09;
    }
    if ((param_1 != -4) && (param_1 == 0)) {
      FUN_00a3fb10();
    }
    if (ppwVar7 == ppwVar3) {
      return 1;
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((wint_t **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppwVar7) {
        FUN_00a3fb10();
      }
    }
    iVar4 = _iswdigit(*(wint_t *)ppwVar7);
    if (iVar4 == 0) {
      if (param_1 != -4) {
        if (param_1 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_1 + 0x18) < 8) {
          iVar4 = param_1 + 4;
        }
        else {
          iVar4 = *(int *)(param_1 + 4);
        }
        if ((wint_t **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppwVar7) {
          FUN_00a3fb10();
        }
      }
      if (*(wint_t *)ppwVar7 != 0x2e) {
        if (param_1 != -4) {
          if (param_1 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(param_1 + 0x18) < 8) {
            iVar4 = param_1 + 4;
          }
          else {
            iVar4 = *(int *)(param_1 + 4);
          }
          if ((wint_t **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppwVar7) {
            FUN_00a3fb10();
          }
        }
        if (*(wint_t *)ppwVar7 != 0x2c) {
          if (param_1 != -4) {
            if (param_1 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(param_1 + 0x18) < 8) {
              iVar4 = param_1 + 4;
            }
            else {
              iVar4 = *(int *)(param_1 + 4);
            }
            if ((wint_t **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppwVar7) {
              FUN_00a3fb10();
            }
          }
          if (*(wint_t *)ppwVar7 != 0x65) {
            if (param_1 != -4) {
              if (param_1 == 0) {
                FUN_00a3fb10();
              }
              if (*(uint *)(param_1 + 0x18) < 8) {
                iVar4 = param_1 + 4;
              }
              else {
                iVar4 = *(int *)(param_1 + 4);
              }
              if ((wint_t **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppwVar7) {
                FUN_00a3fb10();
              }
            }
            if (((*(wint_t *)ppwVar7 != 0x45) &&
                (piVar5 = (int *)FUN_00847840(local_10), *piVar5 != 0x2b)) &&
               (piVar5 = (int *)FUN_00847840(local_c), *piVar5 != 0x2d)) {
              return 0;
            }
          }
        }
      }
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((wint_t **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppwVar7) {
        FUN_00a3fb10();
      }
    }
    ppwVar7 = (wint_t **)((int)ppwVar7 + 2);
  } while( true );
}



undefined4 FUN_0096ebb0(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x6c);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0096e830(0,0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_0096ec20(uint param_1_00,code *param_1,int param_2)

{
  ushort **ppuVar1;
  uint uVar2;
  char cVar3;
  ushort **ppuVar4;
  int iVar5;
  ushort **ppuVar6;
  ushort **ppuVar7;
  uint local_4;
  
  uVar2 = *(uint *)(param_2 + 0x18);
  ppuVar1 = (ushort **)(param_2 + 4);
  ppuVar7 = ppuVar1;
  if (7 < uVar2) {
    ppuVar7 = (ushort **)*ppuVar1;
  }
  local_4 = param_1_00;
  if (ppuVar7 != (ushort **)0x0) {
    ppuVar4 = ppuVar1;
    if (7 < uVar2) {
      ppuVar4 = (ushort **)*ppuVar1;
    }
    if (ppuVar4 <= ppuVar7) {
      ppuVar4 = ppuVar1;
      if (7 < uVar2) {
        ppuVar4 = (ushort **)*ppuVar1;
      }
      if (ppuVar7 <= (ushort **)((int)ppuVar4 + *(int *)(param_2 + 0x14) * 2)) goto LAB_0096ec70;
    }
  }
  FUN_00a3fb10();
LAB_0096ec70:
  do {
    uVar2 = *(uint *)(param_2 + 0x18);
    ppuVar4 = ppuVar1;
    if (7 < uVar2) {
      ppuVar4 = (ushort **)*ppuVar1;
    }
    iVar5 = *(int *)(param_2 + 0x14) * 2;
    ppuVar4 = (ushort **)(iVar5 + (int)ppuVar4);
    if (ppuVar4 == (ushort **)0x0) {
LAB_0096ecac:
      FUN_00a3fb10();
    }
    else {
      ppuVar6 = ppuVar1;
      if (7 < uVar2) {
        ppuVar6 = (ushort **)*ppuVar1;
      }
      if (ppuVar4 < ppuVar6) goto LAB_0096ecac;
      ppuVar6 = ppuVar1;
      if (7 < uVar2) {
        ppuVar6 = (ushort **)*ppuVar1;
      }
      if ((ushort **)(iVar5 + (int)ppuVar6) < ppuVar4) goto LAB_0096ecac;
    }
    if ((param_2 != -4) && (param_2 == 0)) {
      FUN_00a3fb10();
    }
    if (ppuVar7 == ppuVar4) {
      return 1;
    }
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 8) {
        iVar5 = param_2 + 4;
      }
      else {
        iVar5 = *(int *)(param_2 + 4);
      }
      if ((ushort **)(iVar5 + *(int *)(param_2 + 0x14) * 2) <= ppuVar7) {
        FUN_00a3fb10();
      }
    }
    local_4 = (uint)*(ushort *)ppuVar7;
    cVar3 = (*param_1)(&local_4);
    if (cVar3 == '\0') {
      return 0;
    }
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 8) {
        iVar5 = param_2 + 4;
      }
      else {
        iVar5 = *(int *)(param_2 + 4);
      }
      if ((ushort **)(iVar5 + *(int *)(param_2 + 0x14) * 2) <= ppuVar7) {
        FUN_00a3fb10();
      }
    }
    ppuVar7 = (ushort **)((int)ppuVar7 + 2);
  } while( true );
}



void __thiscall FUN_0096ed50(int *param_1_00,undefined *param_1)

{
  undefined3 uVar1;
  char cVar2;
  int *piVar3;
  undefined *puVar4;
  int iVar5;
  undefined4 uVar6;
  undefined *puStack_c4;
  undefined *puStack_c0;
  char *pcStack_bc;
  uint uStack_b8;
  undefined auStack_a8 [3];
  char cStack_a5;
  undefined auStack_a4 [36];
  undefined **ppuStack_80;
  undefined auStack_7c [4];
  undefined2 uStack_78;
  undefined4 uStack_68;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined auStack_58 [4];
  undefined2 uStack_54;
  int iStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined local_34 [20];
  int iStack_20;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4._0_1_ = 0xff;
  uStack_4._1_3_ = 0xffffff;
  puStack_8 = &LAB_00bde141;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_a8;
  uStack_b8 = DAT_0323f878 ^ (uint)&stack0xffffff4c;
  ExceptionList = &local_c;
  pcStack_bc = (char *)0x96ed9b;
  cVar2 = FUN_0091b930();
  if (cVar2 == '\0') goto LAB_0096f004;
  pcStack_bc = (char *)0x96edaa;
  piVar3 = (int *)FUN_0096e650();
  if (piVar3 == (int *)0x0) goto LAB_0096f004;
  pcStack_bc = local_34;
  puStack_c0 = (undefined *)0x96edc5;
  (**(code **)(*piVar3 + 0x14))();
  uStack_40 = 7;
  iStack_44 = 0;
  uStack_54 = 0;
  uStack_3c = 0;
  uStack_4._1_3_ = 0;
  uVar1 = uStack_4._1_3_;
  uStack_4._0_1_ = 1;
  uStack_4._1_3_ = 0;
  if (((*(byte *)(param_1_00 + 0x11) & 1) == 0) || (iStack_20 != 0)) {
    pcStack_bc = local_34;
    puStack_c0 = auStack_7c;
    puStack_c4 = (undefined *)0x96ee73;
    uStack_4._1_3_ = uVar1;
    puVar4 = (undefined *)(**(code **)(*param_1_00 + 0x60))();
    uStack_4._0_1_ = 4;
    if (auStack_58 != puVar4) {
      pcStack_bc = (char *)0xffffffff;
      puStack_c0 = (undefined *)0x0;
      puStack_c4 = puVar4;
      FID_conflict_assign();
    }
    cStack_a5 = iStack_44 != 0;
    uStack_4._0_1_ = 1;
    pcStack_bc = (char *)0x96eea6;
    FUN_0040159c();
    if (cStack_a5 != '\0') {
      uStack_64 = 7;
      uStack_68 = 0;
      uStack_78 = 0;
      uStack_60 = 0;
      pcStack_bc = auStack_58;
      uStack_4._0_1_ = 5;
      puStack_c0 = (undefined *)0x96eedd;
      FUN_008433c0();
      ppuStack_80 = &puStack_c4;
      uStack_4._0_1_ = 6;
      FUN_00432231(&puStack_c4);
      FUN_0085cc60(auStack_a4);
      uStack_4 = CONCAT31(uStack_4._1_3_,5);
      pcStack_bc = (char *)0x96ef1a;
      FUN_0081b5bc();
      pcStack_bc = (char *)0xffffffff;
      puStack_c0 = (undefined *)0x0;
      puStack_c4 = auStack_7c;
      FID_conflict_assign();
      goto LAB_0096ef2f;
    }
  }
  else {
    pcStack_bc = PTR_DAT_03236318;
    puStack_c0 = (undefined *)0x96ee0a;
    FUN_004325b6();
    pcStack_bc = "Required information entry is empty.";
    uStack_4._0_1_ = 2;
    puStack_c0 = (undefined *)0x96ee20;
    FUN_0043c211();
    pcStack_bc = auStack_a4;
    puStack_c0 = auStack_7c;
    uStack_4 = CONCAT31(uStack_4._1_3_,3);
    puStack_c4 = (undefined *)0x96ee37;
    puVar4 = (undefined *)FUN_00820bf9();
    if (auStack_58 != puVar4) {
      pcStack_bc = (char *)0xffffffff;
      puStack_c0 = (undefined *)0x0;
      puStack_c4 = puVar4;
      FID_conflict_assign();
    }
    pcStack_bc = (char *)0x96ee54;
    FUN_0040159c();
LAB_0096ef2f:
    uStack_4._0_1_ = 1;
    pcStack_bc = (char *)0x96ef3c;
    FUN_0040159c();
  }
  if (iStack_44 == 0) {
    pcStack_bc = (char *)0x96eff6;
    FUN_0040159c();
    pcStack_bc = (char *)0x96f002;
    FUN_0040159c();
  }
  else {
    pcStack_bc = (char *)0x96ef53;
    (**(code **)(*(int *)param_1_00[0x10] + 0x100))();
    pcStack_bc = PTR_DAT_03236318;
    puStack_c0 = (undefined *)0x96ef63;
    FUN_004325b6();
    pcStack_bc = "Validation conflict";
    uStack_4._0_1_ = 7;
    puStack_c0 = (undefined *)0x96ef79;
    FUN_0043c211();
    uStack_4._0_1_ = 8;
    pcStack_bc = (char *)0x96ef86;
    iVar5 = FUN_0084a340();
    if (iVar5 == 0) {
      pcStack_bc = auStack_7c;
      puStack_c0 = (undefined *)0x96efa7;
      uVar6 = FUN_0084d360();
    }
    else {
      pcStack_bc = auStack_a4;
      puStack_c0 = auStack_7c;
      puStack_c4 = (undefined *)0x96ef9b;
      uVar6 = FUN_0084f210();
    }
    pcStack_bc = (char *)0xffffffff;
    puStack_c0 = (undefined *)0xffffffff;
    puStack_c4 = param_1;
    FUN_008fe490(auStack_58,uVar6,0x104);
    pcStack_bc = (char *)0x96efcb;
    FUN_0040159c();
    pcStack_bc = (char *)0x96efd4;
    FUN_0040159c();
    pcStack_bc = (char *)0x96efdd;
    FUN_0040159c();
    pcStack_bc = (char *)0x96efe9;
    FUN_0040159c();
  }
LAB_0096f004:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __fastcall FUN_0096f030(int param_1)

{
  int *piVar1;
  int iVar2;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x48) != 0) {
    piVar1 = (int *)FUN_0096e650(DAT_0323f878 ^ (uint)&stack0xffffffcc);
    if (piVar1 == (int *)0x0) {
      ExceptionList = local_c;
      return 0;
    }
    iVar2 = (**(code **)(*piVar1 + 0x14))(local_30);
    uStack_4 = 0;
    if (*(int *)(param_1 + 0x48) != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  ExceptionList = local_c;
  return 1;
}



undefined4 FUN_0096f0e0(int param_1)

{
  uint uVar1;
  uint uVar2;
  ushort **ppuVar3;
  int iVar4;
  ushort **ppuVar5;
  ushort **ppuVar6;
  ushort **ppuVar7;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde188;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  uVar1 = *(uint *)(param_1 + 0x18);
  if (uVar1 < 8) {
    ppuVar7 = (ushort **)(param_1 + 4);
  }
  else {
    ppuVar7 = *(ushort ***)(param_1 + 4);
  }
  if (ppuVar7 != (ushort **)0x0) {
    ppuVar3 = (ushort **)(param_1 + 4);
    ppuVar6 = ppuVar3;
    if (7 < uVar1) {
      ppuVar6 = (ushort **)*ppuVar3;
    }
    if (ppuVar6 <= ppuVar7) {
      if (7 < uVar1) {
        ppuVar3 = (ushort **)*ppuVar3;
      }
      if (ppuVar7 <= (ushort **)((int)ppuVar3 + *(int *)(param_1 + 0x14) * 2)) goto LAB_0096f153;
    }
  }
  FUN_00a3fb10(uVar2);
LAB_0096f153:
  do {
    uVar1 = *(uint *)(param_1 + 0x18);
    ppuVar6 = (ushort **)(param_1 + 4);
    ppuVar3 = ppuVar6;
    if (7 < uVar1) {
      ppuVar3 = (ushort **)*ppuVar6;
    }
    iVar4 = *(int *)(param_1 + 0x14) * 2;
    ppuVar3 = (ushort **)(iVar4 + (int)ppuVar3);
    if (ppuVar3 == (ushort **)0x0) {
LAB_0096f194:
      FUN_00a3fb10(uVar2);
    }
    else {
      ppuVar5 = ppuVar6;
      if (7 < uVar1) {
        ppuVar5 = (ushort **)*ppuVar6;
      }
      if (ppuVar3 < ppuVar5) goto LAB_0096f194;
      if (7 < uVar1) {
        ppuVar6 = (ushort **)*ppuVar6;
      }
      if ((ushort **)(iVar4 + (int)ppuVar6) < ppuVar3) goto LAB_0096f194;
    }
    if ((param_1 != -4) && (param_1 == 0)) {
      FUN_00a3fb10(uVar2);
    }
    if (ppuVar7 == ppuVar3) {
      ExceptionList = local_c;
      return 1;
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10(uVar2);
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((ushort **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppuVar7) {
        FUN_00a3fb10();
      }
    }
    local_18 = 7;
    local_14 = (void *)0x0;
    local_1c = 1;
    local_2c = (uint)*(ushort *)ppuVar7;
    local_4 = 2;
    iVar4 = FUN_00853d10(local_30,1,0);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    if (iVar4 == -1) {
      ExceptionList = local_c;
      return 0;
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((ushort **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppuVar7) {
        FUN_00a3fb10();
      }
    }
    ppuVar7 = (ushort **)((int)ppuVar7 + 2);
  } while( true );
}



undefined4 FUN_0096f2b0(int param_1)

{
  uint uVar1;
  uint uVar2;
  ushort **ppuVar3;
  int iVar4;
  ushort **ppuVar5;
  ushort **ppuVar6;
  ushort **ppuVar7;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde188;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  uVar1 = *(uint *)(param_1 + 0x18);
  if (uVar1 < 8) {
    ppuVar7 = (ushort **)(param_1 + 4);
  }
  else {
    ppuVar7 = *(ushort ***)(param_1 + 4);
  }
  if (ppuVar7 != (ushort **)0x0) {
    ppuVar3 = (ushort **)(param_1 + 4);
    ppuVar6 = ppuVar3;
    if (7 < uVar1) {
      ppuVar6 = (ushort **)*ppuVar3;
    }
    if (ppuVar6 <= ppuVar7) {
      if (7 < uVar1) {
        ppuVar3 = (ushort **)*ppuVar3;
      }
      if (ppuVar7 <= (ushort **)((int)ppuVar3 + *(int *)(param_1 + 0x14) * 2)) goto LAB_0096f323;
    }
  }
  FUN_00a3fb10(uVar2);
LAB_0096f323:
  do {
    uVar1 = *(uint *)(param_1 + 0x18);
    ppuVar6 = (ushort **)(param_1 + 4);
    ppuVar3 = ppuVar6;
    if (7 < uVar1) {
      ppuVar3 = (ushort **)*ppuVar6;
    }
    iVar4 = *(int *)(param_1 + 0x14) * 2;
    ppuVar3 = (ushort **)(iVar4 + (int)ppuVar3);
    if (ppuVar3 == (ushort **)0x0) {
LAB_0096f364:
      FUN_00a3fb10(uVar2);
    }
    else {
      ppuVar5 = ppuVar6;
      if (7 < uVar1) {
        ppuVar5 = (ushort **)*ppuVar6;
      }
      if (ppuVar3 < ppuVar5) goto LAB_0096f364;
      if (7 < uVar1) {
        ppuVar6 = (ushort **)*ppuVar6;
      }
      if ((ushort **)(iVar4 + (int)ppuVar6) < ppuVar3) goto LAB_0096f364;
    }
    if ((param_1 != -4) && (param_1 == 0)) {
      FUN_00a3fb10(uVar2);
    }
    if (ppuVar7 == ppuVar3) {
      ExceptionList = local_c;
      return 0;
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10(uVar2);
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((ushort **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppuVar7) {
        FUN_00a3fb10();
      }
    }
    local_18 = 7;
    local_14 = (void *)0x0;
    local_1c = 1;
    local_2c = (uint)*(ushort *)ppuVar7;
    local_4 = 2;
    iVar4 = FUN_00853d10(local_30,1,0);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    if (iVar4 != -1) {
      ExceptionList = local_c;
      return 1;
    }
    if (param_1 != -4) {
      if (param_1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1 + 0x18) < 8) {
        iVar4 = param_1 + 4;
      }
      else {
        iVar4 = *(int *)(param_1 + 4);
      }
      if ((ushort **)(iVar4 + *(int *)(param_1 + 0x14) * 2) <= ppuVar7) {
        FUN_00a3fb10();
      }
    }
    ppuVar7 = (ushort **)((int)ppuVar7 + 2);
  } while( true );
}



void __thiscall FUN_0096f480(int *param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_58 [36];
  undefined local_34 [36];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde1b8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_58;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  if ((((param_1_00[0x10] == 0) || (iVar2 = *(int *)(param_1 + 0x34), iVar2 < 0x20)) ||
      (iVar2 == 0x7f)) || (299 < iVar2)) {
    *(undefined *)(param_1 + 0x24) = 1;
  }
  else {
    FUN_008520d0(iVar2,1);
    local_4 = 0;
    iVar2 = (**(code **)(*param_1_00 + 0x60))(local_58,local_34,uVar1);
    iVar2 = *(int *)(iVar2 + 0x14);
    FUN_0040159c();
    if (iVar2 == 0) {
      *(undefined *)(param_1 + 0x24) = 1;
      FUN_0040159c();
    }
    else {
      if (DAT_032c0390 == '\0') {
        FUN_00894990();
      }
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_0096f560(int param_1_00,int param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  undefined local_a0 [4];
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  undefined4 local_78;
  uint local_64;
  void *local_60;
  undefined4 local_58;
  undefined local_54 [36];
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde288;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_58 = 0;
  if (((*(uint *)(param_1_00 + 0x44) >> 1 & 1) != 0) &&
     (cVar1 = FUN_008507e0(DAT_0323f878 ^ (uint)&stack0xffffff54), cVar1 == '\0')) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    FUN_0043c211("\'%s\' should only contain ASCII characters.");
    local_4 = CONCAT31(local_4._1_3_,1);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      uVar3 = FUN_0084d360(local_a0);
    }
    else {
      uVar3 = FUN_0084f210(local_a0,local_7c);
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(uVar3,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_84);
    if (local_88 < 8) {
      local_88 = 7;
      local_8c = 0;
      local_9c = local_9c & 0xffff0000;
      _free(local_60);
      if (local_64 < 8) {
        ExceptionList = local_c;
        return param_1;
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_78);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_9c);
  }
  if (((*(uint *)(param_1_00 + 0x44) >> 2 & 1) == 0) ||
     (cVar1 = FUN_0096ec20(&LAB_00850310,param_2), cVar1 != '\0')) {
    if (((*(uint *)(param_1_00 + 0x44) >> 3 & 1) == 0) ||
       (cVar1 = FUN_0096ec20(&LAB_00889920,param_2), cVar1 != '\0')) {
      if (((*(uint *)(param_1_00 + 0x44) >> 4 & 1) == 0) ||
         (cVar1 = FUN_0096ec20(&LAB_00850330,param_2), cVar1 != '\0')) {
        if (((*(uint *)(param_1_00 + 0x44) >> 5 & 1) == 0) ||
           (cVar1 = FUN_0096e970(param_2), cVar1 != '\0')) {
          if (((*(uint *)(param_1_00 + 0x44) >> 6 & 1) != 0) &&
             (iVar2 = FUN_00853d10(param_2,1,0), iVar2 == -1)) {
            FUN_004325b6(PTR_DAT_03236318);
            local_4 = 10;
            FUN_0043c211("\'%s\' is invalid");
            local_4 = CONCAT31(local_4._1_3_,0xb);
            uVar3 = FUN_00820bf9(local_7c,local_a0);
            goto LAB_0096f712;
          }
          if (((*(uint *)(param_1_00 + 0x44) >> 7 & 1) != 0) &&
             (cVar1 = FUN_0096f0e0(param_2), cVar1 == '\0')) {
            FUN_004325b6(PTR_DAT_03236318);
            local_4 = 0xc;
            FUN_0043c211("\'%s\' is invalid");
            local_4 = CONCAT31(local_4._1_3_,0xd);
            uVar3 = FUN_00820bf9(local_7c,local_a0);
            goto LAB_0096f712;
          }
          if (((*(uint *)(param_1_00 + 0x44) >> 8 & 1) == 0) ||
             (iVar2 = FUN_00853d10(param_2,1,0), iVar2 == -1)) {
            if (((*(uint *)(param_1_00 + 0x44) >> 9 & 1) != 0) &&
               (cVar1 = FUN_0096f2b0(param_2), cVar1 != '\0')) {
              FUN_004325b6(PTR_DAT_03236318);
              local_4 = 0x10;
              FUN_0043c211("\'%s\' is invalid");
              local_4 = CONCAT31(local_4._1_3_,0x11);
              uVar3 = FUN_00820bf9(local_54,local_30);
              FUN_004325a0(uVar3);
              FUN_0040159c();
              FUN_0040159c();
              ExceptionList = local_c;
              return param_1;
            }
            FUN_004325b6(PTR_DAT_03236318);
            ExceptionList = local_c;
            return param_1;
          }
          FUN_004325b6(PTR_DAT_03236318);
          local_4 = 0xe;
          FUN_0043c211("\'%s\' is invalid");
          local_4 = CONCAT31(local_4._1_3_,0xf);
        }
        else {
          FUN_004325b6(PTR_DAT_03236318);
          local_4 = 8;
          FUN_0043c211("\'%s\' should be numeric.");
          local_4 = CONCAT31(local_4._1_3_,9);
        }
        uVar3 = FUN_00820bf9(local_7c,local_a0);
        goto LAB_0096f712;
      }
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 6;
      FUN_0043c211("\'%s\' should only contain digits.");
      local_4 = CONCAT31(local_4._1_3_,7);
      iVar2 = FUN_0084a340();
      if (iVar2 != 0) {
        uVar3 = FUN_0084f210(local_7c,local_a0);
        goto LAB_0096f712;
      }
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 4;
      FUN_0043c211("\'%s\' should only contain alphabetic or numeric characters.");
      local_4 = CONCAT31(local_4._1_3_,5);
      iVar2 = FUN_0084a340();
      if (iVar2 != 0) {
        uVar3 = FUN_0084f210(local_7c,local_a0);
        goto LAB_0096f712;
      }
    }
  }
  else {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 2;
    FUN_0043c211("\'%s\' should only contain alphabetic characters.");
    local_4 = CONCAT31(local_4._1_3_,3);
    iVar2 = FUN_0084a340();
    if (iVar2 != 0) {
      uVar3 = FUN_0084f210(local_7c,local_a0);
      goto LAB_0096f712;
    }
  }
  uVar3 = FUN_0084d360(local_7c);
LAB_0096f712:
  FUN_004325a0(uVar3);
  FUN_0040159c();
  FUN_0040159c();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_0096fa50(undefined4 *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxImage::vftable;
  FUN_008fff50(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_0096fab0(undefined4 *param_1_00,undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bde373;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  *param_1_00 = wxBitmapVariantData::vftable;
  param_1_00[3] = 0;
  param_1_00[2] = wxBitmap::vftable;
  local_4 = 1;
  if (param_1_00 + 2 != param_1) {
    FUN_0083ea60(param_1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_0096fb20(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x10);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0096fab0(param_1 + 8);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_0096fb90(undefined4 *param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined **local_1c [4];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bde2f8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxBitmap::vftable;
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\bmpbase.cpp",0x9b,"wxBitmap::wxBitmap","bits != NULL",
                   L"invalid bitmap data",uVar2);
    }
  }
  else {
    FUN_0096fa50(param_1);
    local_4._0_1_ = 1;
    cVar1 = FUN_008ff820();
    if (cVar1 == '\0') {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\bmpbase.cpp",0x9f,"wxBitmap::wxBitmap","image.IsOk()",
                     L"invalid bitmap data",uVar2);
      }
    }
    else {
      puVar3 = (undefined4 *)FUN_00414f38(local_1c,0xffffffff);
      local_4._0_1_ = 2;
      if (param_1_00 != puVar3) {
        FUN_0083ea60(puVar3);
      }
      local_4._0_1_ = 1;
      FUN_008f7630();
    }
    local_4 = (uint)local_4._1_3_ << 8;
    local_1c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_0096fcb0(void)

{
  return DAT_032e12d8;
}



undefined4 FUN_0096fcc0(void)

{
  return DAT_032e12d4;
}



void __thiscall FUN_0096fcd0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  bool bVar3;
  type_info *ptVar4;
  type_info *this;
  
  uVar2 = DAT_032e12d8;
  ptVar4 = (type_info *)___RTtypeid(*(undefined4 *)(param_1_00 + 0x10));
  this = (type_info *)___RTtypeid(uVar2);
  bVar3 = type_info::operator==(this,ptVar4);
  if ((!bVar3) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  iVar1 = *(int *)(param_1_00 + 4);
  *param_1 = wxObject::vftable;
  param_1[1] = iVar1;
  *param_1 = wxBitmap::vftable;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  return;
}



void __thiscall FUN_0096fd60(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  bool bVar3;
  type_info *ptVar4;
  type_info *this;
  
  uVar2 = DAT_032e12d4;
  ptVar4 = (type_info *)___RTtypeid(*(undefined4 *)(param_1_00 + 0x10));
  this = (type_info *)___RTtypeid(uVar2);
  bVar3 = type_info::operator==(this,ptVar4);
  if ((!bVar3) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/any.h",0x3cd,"wxAny::As","Assert failure",
                 "Incorrect or non-convertible data type");
  }
  iVar1 = *(int *)(param_1_00 + 4);
  *param_1 = wxObject::vftable;
  param_1[1] = iVar1;
  *param_1 = wxIcon::vftable;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  return;
}



void FUN_0096fdf0(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032e12d8;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



void FUN_0096fe20(undefined4 param_1)

{
  undefined4 uVar1;
  type_info *ptVar2;
  type_info *this;
  
  uVar1 = DAT_032e12d4;
  ptVar2 = (type_info *)___RTtypeid(param_1);
  this = (type_info *)___RTtypeid(uVar1);
  type_info::operator==(this,ptVar2);
  return;
}



undefined4 FUN_0096fe50(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde344;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x10);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0096fcd0(local_14,0);
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar3 = FUN_0096fab0(uVar3);
  }
  local_4 = 0xffffffff;
  if (pvVar2 != (void *)0x0) {
    FUN_008f7630(uVar1);
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 * __thiscall FUN_0096fef0(undefined4 *param_1_00,undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bde373;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  *param_1_00 = wxIconVariantData::vftable;
  param_1_00[3] = 0;
  param_1_00[2] = wxIcon::vftable;
  local_4 = 1;
  if (param_1_00 + 2 != param_1) {
    FUN_0083ea60(param_1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_0096ff60(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd0918;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008f7630(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_0096ffb0(undefined4 param_1_00,byte param_1)

{
  FUN_0096ff60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_0096ffd0(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x10);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_0096fef0(param_1 + 8);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_00970040(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde344;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x10);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_0096fd60(local_14,0);
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar3 = FUN_0096fef0(uVar3);
  }
  local_4 = 0xffffffff;
  if (pvVar2 != (void *)0x0) {
    FUN_008f7630(uVar1);
  }
  ExceptionList = local_c;
  return uVar3;
}



void FUN_009700e0(int param_1,undefined4 *param_2)

{
  int iVar1;
  
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = wxObject::vftable;
    iVar1 = *(int *)(param_1 + 4);
    param_2[1] = iVar1;
    if (iVar1 != 0) {
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    }
    *param_2 = wxBitmap::vftable;
  }
  return;
}



undefined4 __thiscall FUN_00970110(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  (**(code **)(*(int *)param_1[4] + 8))(param_1);
  param_1[4] = DAT_032e12d8;
  *param_1 = wxObject::vftable;
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1 = wxBitmap::vftable;
  return CONCAT31((int3)((uint)iVar1 >> 8),1);
}



void FUN_00970150(int param_1,undefined4 *param_2)

{
  int iVar1;
  
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = wxObject::vftable;
    iVar1 = *(int *)(param_1 + 4);
    param_2[1] = iVar1;
    if (iVar1 != 0) {
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    }
    *param_2 = wxIcon::vftable;
  }
  return;
}



undefined4 __thiscall FUN_00970180(int *param_1_00,int *param_1)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  int iVar4;
  int iVar5;
  undefined4 local_58 [2];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0ae2;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar2 = false;
  bVar1 = false;
  local_58[0] = 0;
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_00970214:
    bVar3 = true;
  }
  else {
    iVar4 = (**(code **)(*param_1 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffff98);
    puStack_8 = (undefined *)0x0;
    iVar5 = (**(code **)(*param_1_00 + 0x18))(local_58);
    uStack_4 = 1;
    bVar2 = true;
    bVar1 = true;
    local_58[0] = 3;
    if (*(int *)(iVar5 + 0x14) == *(int *)(iVar4 + 0x14)) {
      iVar4 = FUN_00850760(iVar4);
      if (iVar4 == 0) goto LAB_00970214;
    }
    bVar3 = false;
  }
  if (bVar1) {
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
  }
  uStack_4 = 0xffffffff;
  if (bVar2) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar3) {
    FUN_008402e0("..\\..\\src\\common\\bmpbase.cpp",0x1f,"wxBitmapVariantData::Eq",
                 "GetType() == data.GetType()",0);
  }
  ExceptionList = local_c;
  return CONCAT31((int3)((uint)param_1[3] >> 8),param_1[3] == param_1_00[3]);
}



undefined4 __thiscall FUN_009702e0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  (**(code **)(*(int *)param_1[4] + 8))(param_1);
  param_1[4] = DAT_032e12d4;
  *param_1 = wxObject::vftable;
  iVar1 = *(int *)(param_1_00 + 0xc);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1 = wxIcon::vftable;
  return CONCAT31((int3)((uint)iVar1 >> 8),1);
}



undefined4 __thiscall FUN_00970320(int *param_1_00,int *param_1)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  int iVar4;
  int iVar5;
  undefined4 local_58 [2];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0ae2;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar2 = false;
  bVar1 = false;
  local_58[0] = 0;
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
LAB_009703b4:
    bVar3 = true;
  }
  else {
    iVar4 = (**(code **)(*param_1 + 0x18))(local_30,DAT_0323f878 ^ (uint)&stack0xffffff98);
    puStack_8 = (undefined *)0x0;
    iVar5 = (**(code **)(*param_1_00 + 0x18))(local_58);
    uStack_4 = 1;
    bVar2 = true;
    bVar1 = true;
    local_58[0] = 3;
    if (*(int *)(iVar5 + 0x14) == *(int *)(iVar4 + 0x14)) {
      iVar4 = FUN_00850760(iVar4);
      if (iVar4 == 0) goto LAB_009703b4;
    }
    bVar3 = false;
  }
  if (bVar1) {
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
  }
  uStack_4 = 0xffffffff;
  if (bVar2) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (!bVar3) {
    FUN_008402e0("..\\..\\src\\common\\bmpbase.cpp",0x20,"wxIconVariantData::Eq",
                 "GetType() == data.GetType()",0);
  }
  ExceptionList = local_c;
  return CONCAT31((int3)((uint)param_1[3] >> 8),param_1[3] == param_1_00[3]);
}



undefined4 __thiscall FUN_00970480(int param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)(***(code ***)(param_1 + 8))();
  FUN_004325b6(*puVar1);
  return param_2;
}



undefined ** FUN_009704b0(void)

{
  return &PTR_u_wxRadioButton_0323b678;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x198);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00919a40(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_009706c0(int param_1)

{
  uint uVar1;
  
  uVar1 = GetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x10);
  if ((uVar1 >> 3 & 1) == 0) {
    uVar1 = GetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x10);
    SetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x10,uVar1 | 8);
    SendMessageW(*(HWND *)(param_1 + 0x13c),0x40a,1,0);
  }
  return;
}



void __fastcall FUN_00970720(int param_1)

{
  uint uVar1;
  
  uVar1 = GetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x10);
  if ((uVar1 >> 3 & 1) != 0) {
    uVar1 = GetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x10);
    SendMessageW(*(HWND *)(param_1 + 0x13c),0x40a,0,0);
    SetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x10,uVar1 & 0xfffffff7);
  }
  return;
}



void __fastcall FUN_00970780(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_008fc6f0();
  if (599 < iVar1) {
    FUN_009706c0();
    SendMessageW(*(HWND *)(param_1 + 0x13c),0x405,0,0);
    return;
  }
  FUN_009709b0();
  return;
}



void __thiscall FUN_009707c0(int param_1,LPARAM param_2)

{
  uint uVar1;
  
  uVar1 = GetWindowLongW(*(HWND *)(param_1 + 0x13c),-0x10);
  if ((uVar1 >> 3 & 1) != 0) {
    FUN_00970720();
  }
  *(LPARAM *)(param_1 + 0x194) = param_2;
  SendMessageW(*(HWND *)(param_1 + 0x13c),0x406,0,param_2);
  return;
}



void __thiscall FUN_00970810(int *param_1,WPARAM param_2)

{
  uint uVar1;
  WPARAM WVar2;
  
  uVar1 = GetWindowLongW((HWND)param_1[0x4f],-0x10);
  if ((uVar1 >> 3 & 1) != 0) {
    FUN_00970720();
  }
  WVar2 = (**(code **)(*param_1 + 0x364))();
  if (WVar2 != param_2) {
    param_1[0x66] = param_2;
    SendMessageW((HWND)param_1[0x4f],0x402,param_2,0);
  }
  return;
}



undefined4 __thiscall
FUN_00970870(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8)

{
  char cVar1;
  uint uVar2;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9388;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  cVar1 = FUN_00937250(param_1,param_2,param_4,param_5,param_6,param_7,param_8);
  if (cVar1 != '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    cVar1 = FUN_00937200(L"msctls_progress32",local_30,param_4,param_5);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    if (cVar1 != '\0') {
      (**(code **)(*param_1_00 + 0x358))(param_3,uVar2);
      param_1_00[0x67] = 0x20;
      ExceptionList = local_c;
      return 1;
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined ** FUN_00970980(void)

{
  return &PTR_u_wxGauge_0323b690;
}



void __thiscall FUN_00970990(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x194) = param_1;
  return;
}



void __fastcall FUN_009709b0(int *param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = (**(code **)(*param_1 + 0x364))();
  iVar2 = (**(code **)(*param_1 + 0x35c))();
  if (param_1[0x67] != 0x20) {
    if (0 < iVar1) {
      (**(code **)(*param_1 + 0x360))(iVar1 + -1);
      return;
    }
    (**(code **)(*param_1 + 0x360))(1);
    param_1[0x67] = 0x20;
    return;
  }
  if (iVar1 < iVar2) {
    (**(code **)(*param_1 + 0x360))(iVar1 + 1);
    return;
  }
  (**(code **)(*param_1 + 0x360))(iVar2 + -1);
  param_1[0x67] = 0x10;
  return;
}



void __fastcall FUN_00970a30(undefined4 *param_1)

{
  *param_1 = wxGaugeBase::vftable;
  FUN_0044cd6b();
  return;
}



undefined4 * FUN_00970a40(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x1a0);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0044ced6(uVar1);
    puVar2[0x66] = 0;
    puVar2[0x65] = 0;
    *puVar2 = wxGauge::vftable;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined ** FUN_00970ad0(void)

{
  return &PTR_u_wxArtProvider_0323b750;
}



undefined ** FUN_00970ae0(void)

{
  return &PTR_u_wxArtProviderModule_0323b768;
}



undefined4 * __thiscall
FUN_00970af0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxwxArtProvidersListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 FUN_00970b70(undefined4 param_1,undefined4 param_2,char param_3)

{
  if ((param_3 == '\0') && (*(int *)(DAT_032e12ec + 0xc) != 0)) {
    (**(code **)(**(int **)(*(int *)(DAT_032e12ec + 0xc) + 8) + 0x10))(param_1,param_2);
    return param_1;
  }
  FUN_009c48a0(param_1,param_2);
  return param_1;
}



undefined FUN_00970bc0(void)

{
  FUN_009c5190();
  FUN_009c4c20();
  FUN_009c4870();
  return 1;
}



undefined4 * FUN_00970be0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxArtProviderModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 * __thiscall FUN_00970c40(int *param_1_00,int param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  int iVar3;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    iVar3 = param_1 + 4;
  }
  else {
    iVar3 = *(int *)(param_1 + 4);
  }
  uVar2 = FUN_00893df0(iVar3);
  puVar1 = *(undefined4 **)(*param_1_00 + (uVar2 % (uint)param_1_00[1]) * 4);
  while( true ) {
    if (puVar1 == (undefined4 *)0x0) {
      return (undefined4 *)0x0;
    }
    if ((puVar1[6] == *(int *)(param_1 + 0x14)) && (iVar3 = FUN_00850760(param_1), iVar3 == 0))
    break;
    puVar1 = (undefined4 *)*puVar1;
  }
  return puVar1;
}



void __fastcall FUN_00970ca0(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bde398;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008f7630(DAT_0323f878 ^ (uint)&stack0xffffffec);
  _free(*(void **)(param_1 + 0x1c));
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00970d20(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bde398;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  *(undefined ***)(param_1 + 0x24) = wxObject::vftable;
  FUN_0083e850(uVar1);
  _free(*(void **)(param_1 + 0x1c));
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return;
}



undefined4 FUN_00970db0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_0081b5f9(local_30,param_2,0x2d,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_4 = 0;
  FUN_008531f0(param_1,uVar1,param_3);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00970e40(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  
  FUN_00820e3f(param_4,param_2,2);
  FUN_00820e3f(param_3,param_2,1);
  uVar1 = FUN_008854f0();
  FUN_00853850(param_1,uVar1,0,param_2);
  return param_1;
}



undefined4
FUN_00970ea0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined local_8c [4];
  uint local_88;
  undefined4 local_78;
  uint local_74;
  void *local_70;
  undefined local_68 [4];
  uint local_64;
  undefined4 local_54;
  uint local_50;
  void *local_4c;
  undefined local_44 [4];
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  void *local_28;
  undefined local_20 [20];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde402;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff64;
  ExceptionList = &local_c;
  FUN_0081c0f1(L"%d-%d");
  local_4 = 1;
  uVar2 = FUN_00970e40(local_44,local_20,*param_4,param_4[1],uVar1);
  local_4._0_1_ = 2;
  uVar3 = FUN_00970db0(local_68,param_2,param_3);
  local_4._0_1_ = 3;
  uVar3 = FUN_0081b5f9(local_8c,uVar3,0x2d);
  local_4._0_1_ = 4;
  FUN_008531f0(param_1,uVar3,uVar2);
  _free(local_70);
  if (7 < local_74) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_88);
  }
  local_74 = 7;
  local_78 = 0;
  local_88 = local_88 & 0xffff0000;
  _free(local_4c);
  if (7 < local_50) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_64);
  }
  local_50 = 7;
  local_54 = 0;
  local_64 = local_64 & 0xffff0000;
  _free(local_28);
  if (7 < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40);
  }
  local_2c = 7;
  local_30 = 0;
  local_40 = local_40 & 0xffff0000;
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return param_1;
}



void FUN_00971030(int param_1)

{
  if (param_1 != 0) {
    FUN_00970ca0();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_00971050(int param_1)

{
  if (param_1 != 0) {
    FUN_00970d20();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void __fastcall FUN_00971070(undefined4 *param_1)

{
  FUN_00893cf0(param_1[1],*param_1,FUN_00971030);
  param_1[2] = 0;
  FUN_00893cf0(param_1[5],param_1[4],FUN_00971050);
  param_1[6] = 0;
  return;
}



undefined4 FUN_009710b0(undefined4 param_1)

{
  char cVar1;
  
  if (DAT_032e12ec == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\artprov.cpp",0xb5,"wxArtProvider::Remove","sm_providers",
                   L"no wxArtProvider exists");
    }
  }
  else {
    cVar1 = FUN_0086b0c0(param_1);
    if (cVar1 != '\0') {
      FUN_00971070();
      return 1;
    }
  }
  return 0;
}



undefined4 FUN_00971110(undefined4 param_1,uint param_2)

{
  param_2 = param_2 & 0x40f00;
  if (param_2 < 0x401) {
    if (param_2 == 0x400) {
      FUN_0043c211("wxART_QUESTION");
      return param_1;
    }
    if (param_2 == 0x100) {
      FUN_0043c211("wxART_WARNING");
      return param_1;
    }
    if (param_2 == 0x200) goto LAB_00971197;
  }
  else if (param_2 == 0x800) {
    FUN_0043c211("wxART_INFORMATION");
    return param_1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\artprov.cpp",0x155,"wxArtProvider::GetMessageBoxIconId",
                 "Assert failure",L"incorrect message box icon flags");
  }
LAB_00971197:
  FUN_0043c211("wxART_ERROR");
  return param_1;
}



undefined4 * __thiscall FUN_009711d0(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  *param_1_00 = 0;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[8] = 0;
  param_1_00[10] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x28);
  param_1_00[0xb] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[10] = wxBitmap::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_00971230(int *param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  float fVar2;
  float fVar3;
  void *pvVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar4 = operator_new(0x30);
  puVar5 = (undefined4 *)0x0;
  local_4 = 0;
  if (pvVar4 != (void *)0x0) {
    puVar5 = (undefined4 *)FUN_009711d0(param_1);
  }
  *puVar5 = *(undefined4 *)(*param_1_00 + param_2 * 4);
  *(undefined4 **)(*param_1_00 + param_2 * 4) = puVar5;
  param_1_00[2] = param_1_00[2] + 1;
  iVar1 = param_1_00[1];
  fVar2 = (float)param_1_00[2];
  local_4 = 0xffffffff;
  if (param_1_00[2] < 0) {
    fVar2 = fVar2 + 4.294967e+09;
  }
  fVar3 = (float)iVar1;
  if (iVar1 < 0) {
    fVar3 = fVar3 + 4.294967e+09;
  }
  if (0.85 <= fVar2 / fVar3) {
    FUN_00b28480(iVar1);
  }
  ExceptionList = local_c;
  return puVar5;
}



undefined4 * __thiscall FUN_009712f0(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  *param_1_00 = 0;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[8] = 0;
  param_1_00[10] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x28);
  param_1_00[0xb] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[10] = wxIconBundle::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_00971350(int *param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  float fVar2;
  float fVar3;
  void *pvVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar4 = operator_new(0x30);
  puVar5 = (undefined4 *)0x0;
  local_4 = 0;
  if (pvVar4 != (void *)0x0) {
    puVar5 = (undefined4 *)FUN_009712f0(param_1);
  }
  *puVar5 = *(undefined4 *)(*param_1_00 + param_2 * 4);
  *(undefined4 **)(*param_1_00 + param_2 * 4) = puVar5;
  param_1_00[2] = param_1_00[2] + 1;
  iVar1 = param_1_00[1];
  fVar2 = (float)param_1_00[2];
  local_4 = 0xffffffff;
  if (param_1_00[2] < 0) {
    fVar2 = fVar2 + 4.294967e+09;
  }
  fVar3 = (float)iVar1;
  if (iVar1 < 0) {
    fVar3 = fVar3 + 4.294967e+09;
  }
  if (0.85 <= fVar2 / fVar3) {
    FUN_00b28480(iVar1);
  }
  ExceptionList = local_c;
  return puVar5;
}



void __fastcall FUN_00971410(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxArtProvider::vftable;
  local_4 = 0;
  FUN_009710b0(param_1,uVar1);
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 FUN_00971480(undefined4 param_1,undefined4 param_2)

{
  FUN_009c48a0(param_1,param_2);
  return param_1;
}



void FUN_009714a0(undefined4 *param_1)

{
  int iVar1;
  
  iVar1 = DAT_03238ccc;
  *param_1 = wxObject::vftable;
  param_1[1] = iVar1;
  *param_1 = wxBitmap::vftable;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  return;
}



void FUN_009714d0(undefined4 *param_1)

{
  int iVar1;
  
  iVar1 = DAT_032bf374;
  *param_1 = wxObject::vftable;
  param_1[1] = iVar1;
  *param_1 = wxIconBundle::vftable;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  return;
}



void __fastcall FUN_00971500(void **param_1)

{
  FUN_00893cf0(param_1[1],*param_1,FUN_00971030);
  param_1[2] = (void *)0x0;
  _free(*param_1);
  return;
}



void __fastcall FUN_00971530(void **param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bde438;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00893cf0(param_1[5],param_1[4],FUN_00971050,DAT_0323f878 ^ (uint)&stack0xffffffec);
  param_1[6] = (void *)0x0;
  _free(param_1[4]);
  local_4 = 0xffffffff;
  FUN_00893cf0(param_1[1],*param_1,FUN_00971030);
  param_1[2] = (void *)0x0;
  _free(*param_1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_009715c0(int *param_1_00,int param_1,undefined *param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    iVar3 = param_1 + 4;
  }
  else {
    iVar3 = *(int *)(param_1 + 4);
  }
  uVar2 = FUN_00893df0(iVar3);
  uVar1 = param_1_00[1];
  puVar4 = *(undefined4 **)(*param_1_00 + (uVar2 % uVar1) * 4);
  while( true ) {
    if (puVar4 == (undefined4 *)0x0) {
      *param_2 = 1;
      puVar4 = (undefined4 *)FUN_00971230(param_1,uVar2 % uVar1);
      return puVar4;
    }
    if ((puVar4[6] == *(int *)(param_1 + 0x14)) && (iVar3 = FUN_00850760(param_1), iVar3 == 0))
    break;
    puVar4 = (undefined4 *)*puVar4;
  }
  *param_2 = 0;
  return puVar4;
}



// WARNING: Removing unreachable block (ram,0x009716b8)

int FUN_00971640(undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_38 [4];
  undefined2 local_34;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bde470;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  local_4 = 0;
  local_20 = 7;
  local_24 = 0;
  local_34 = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  local_1c = 0;
  local_10 = 0;
  local_14 = wxBitmap::vftable;
  local_4._0_1_ = 1;
  iVar2 = FUN_009715c0(local_38,&param_1);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00970ca0(uVar1);
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return iVar2 + 0x28;
}



undefined4 * __thiscall FUN_00971720(int *param_1_00,int param_1,undefined *param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    iVar3 = param_1 + 4;
  }
  else {
    iVar3 = *(int *)(param_1 + 4);
  }
  uVar2 = FUN_00893df0(iVar3);
  uVar1 = param_1_00[1];
  puVar4 = *(undefined4 **)(*param_1_00 + (uVar2 % uVar1) * 4);
  while( true ) {
    if (puVar4 == (undefined4 *)0x0) {
      *param_2 = 1;
      puVar4 = (undefined4 *)FUN_00971350(param_1,uVar2 % uVar1);
      return puVar4;
    }
    if ((puVar4[6] == *(int *)(param_1 + 0x14)) && (iVar3 = FUN_00850760(param_1), iVar3 == 0))
    break;
    puVar4 = (undefined4 *)*puVar4;
  }
  *param_2 = 0;
  return puVar4;
}



int FUN_009717a0(undefined4 param_1)

{
  int iVar1;
  undefined local_38 [4];
  undefined2 local_34;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined **local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde4a0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = FUN_00974660(DAT_0323f878 ^ (uint)&stack0xffffffb4);
  local_4 = 0;
  local_20 = 7;
  local_24 = 0;
  local_34 = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  local_1c = 0;
  local_10 = *(int *)(iVar1 + 4);
  if (local_10 != 0) {
    *(int *)(local_10 + 4) = *(int *)(local_10 + 4) + 1;
  }
  local_14 = wxIconBundle::vftable;
  local_4._0_1_ = 1;
  iVar1 = FUN_00971720(local_38,&param_1);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00970d20();
  local_4 = 0xffffffff;
  FUN_0083e850();
  ExceptionList = local_c;
  return iVar1 + 0x28;
}



void ** __fastcall FUN_00971880(void **param_1)

{
  void *pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde438;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = (void *)FUN_00893ca0(100,DAT_0323f878 ^ (uint)&stack0xffffffec);
  param_1[1] = pvVar1;
  param_1[2] = (void *)0x0;
  pvVar1 = _calloc((size_t)pvVar1,4);
  *param_1 = pvVar1;
  local_4 = 0;
  pvVar1 = (void *)FUN_00893ca0(100);
  param_1[5] = pvVar1;
  param_1[6] = (void *)0x0;
  pvVar1 = _calloc((size_t)pvVar1,4);
  param_1[4] = pvVar1;
  ExceptionList = local_c;
  return param_1;
}



void FUN_00971900(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  int iVar4;
  undefined ***pppuVar5;
  undefined auStack_5c [4];
  undefined **local_58;
  int *local_54;
  undefined4 *local_50;
  undefined **local_4c [2];
  undefined4 local_44;
  undefined local_40 [4];
  undefined4 local_3c;
  uint local_28;
  void *local_24;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00bde4f1;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_5c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_14;
  local_44 = 0;
  local_50 = param_1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     (piVar3 = (int *)FUN_0085ca50(local_4c), *piVar3 != 0x43)) {
    FUN_00840480("..\\..\\src\\common\\artprov.cpp",0x12a,"wxArtProvider::DoGetIconBundle",
                 "client.Last() == wxT(\'C\')",L"invalid \'client\' parameter");
  }
  if (DAT_032e12ec == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\artprov.cpp",300,"wxArtProvider::DoGetIconBundle",
                   "sm_providers",L"no wxArtProvider exists",uVar2);
    }
    *param_1 = wxObject::vftable;
    iVar4 = DAT_032bf374;
    param_1[1] = DAT_032bf374;
    if (iVar4 != 0) {
      piVar3 = (int *)(iVar4 + 4);
      *piVar3 = *piVar3 + 1;
    }
    *param_1 = wxIconBundle::vftable;
  }
  else {
    FUN_00970db0(local_40,param_2,param_3);
    local_c = 1;
    FUN_00974660();
    local_c = CONCAT31(local_c._1_3_,2);
    iVar4 = FUN_00970c40(local_40);
    if (iVar4 == 0) {
      for (iVar4 = *(int *)(DAT_032e12ec + 0xc); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {
        pppuVar5 = (undefined ***)
                   (**(code **)(**(int **)(iVar4 + 8) + 0x18))(local_4c,param_2,param_3);
        local_c._0_1_ = 3;
        if (&local_58 != pppuVar5) {
          FUN_0083ea60(pppuVar5);
        }
        local_c = CONCAT31(local_c._1_3_,2);
        local_4c[0] = wxObject::vftable;
        FUN_0083e850();
        if ((local_54 != (int *)0x0) && (cVar1 = (**(code **)(*local_54 + 4))(), cVar1 != '\0'))
        break;
      }
      pppuVar5 = (undefined ***)FUN_009717a0(local_40);
      param_1 = local_50;
      if (pppuVar5 != &local_58) {
        FUN_0083ea60(&local_58);
        param_1 = local_50;
      }
    }
    else if (&local_58 != (undefined ***)(iVar4 + 0x28)) {
      FUN_0083ea60((undefined ***)(iVar4 + 0x28));
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_54;
    if (local_54 != (int *)0x0) {
      local_54[1] = local_54[1] + 1;
    }
    *param_1 = wxIconBundle::vftable;
    local_44 = 1;
    local_c = CONCAT31(local_c._1_3_,1);
    local_58 = wxObject::vftable;
    FUN_0083e850();
    _free(local_24);
    if (7 < local_28) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_3c);
    }
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void FUN_00971b40(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde536;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  if (DAT_032e12ec == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)operator_new(0x18);
    local_4 = 0;
    if (puVar2 == (undefined4 *)0x0) {
      puVar2 = (undefined4 *)0x0;
    }
    else {
      *puVar2 = wxListBase::vftable;
      FUN_0086ad40(0);
      *puVar2 = wxArtProvidersList::vftable;
    }
    local_4 = 0xffffffff;
    DAT_032e12ec = puVar2;
    pvVar3 = operator_new(0x20);
    local_4 = 1;
    if (pvVar3 == (void *)0x0) {
      DAT_032e12f0 = (undefined4 *)0x0;
    }
    else {
      DAT_032e12f0 = (undefined4 *)FUN_00971880();
    }
  }
  puVar2 = DAT_032e12f0;
  local_4 = 0xffffffff;
  FUN_00893cf0(DAT_032e12f0[1],*DAT_032e12f0,FUN_00971030,uVar1);
  puVar2[2] = 0;
  FUN_00893cf0(puVar2[5],puVar2[4],FUN_00971050);
  puVar2[6] = 0;
  ExceptionList = local_c;
  return;
}



void FUN_00971c30(undefined4 param_1)

{
  FUN_00971b40();
  FUN_0086ae40(0,param_1);
  return;
}



void FUN_00971c50(undefined4 *param_1,undefined **param_2,undefined4 param_3,int *param_4)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  int iVar4;
  undefined ***pppuVar5;
  undefined auStack_74 [4];
  undefined **local_70;
  int *local_6c;
  undefined **local_68;
  int *piStack_64;
  int local_60;
  int *piStack_5c;
  int local_58;
  int *local_54;
  undefined4 *local_50;
  undefined4 local_4c;
  undefined auStack_48 [8];
  undefined local_40 [4];
  undefined4 local_3c;
  uint local_28;
  void *local_24;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00bde5b1;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_74;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_14;
  local_4c = 0;
  local_50 = param_1;
  local_68 = param_2;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     (piVar3 = (int *)FUN_0085ca50(&local_58), *piVar3 != 0x43)) {
    FUN_00840480("..\\..\\src\\common\\artprov.cpp",0xdd,"wxArtProvider::GetBitmap",
                 "client.Last() == wxT(\'C\')",L"invalid \'client\' parameter");
  }
  if (DAT_032e12ec == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\artprov.cpp",0xdf,"wxArtProvider::GetBitmap","sm_providers"
                   ,L"no wxArtProvider exists",uVar2);
    }
    *param_1 = wxObject::vftable;
    iVar4 = DAT_03238ccc;
    param_1[1] = DAT_03238ccc;
    if (iVar4 != 0) {
      piVar3 = (int *)(iVar4 + 4);
      *piVar3 = *piVar3 + 1;
    }
    *param_1 = wxBitmap::vftable;
  }
  else {
    FUN_00970ea0(local_40,local_68,param_3,param_4);
    local_6c = (int *)0x0;
    local_70 = wxBitmap::vftable;
    local_c = 2;
    iVar4 = FUN_00970c40(local_40);
    if (iVar4 == 0) {
      for (iVar4 = *(int *)(DAT_032e12ec + 0xc); iVar4 != 0; iVar4 = *(int *)(iVar4 + 0xc)) {
        pppuVar5 = (undefined ***)
                   (**(code **)(**(int **)(iVar4 + 8) + 0x14))(&local_60,local_68,param_3,param_4);
        local_c._0_1_ = 3;
        if (&local_70 != pppuVar5) {
          FUN_0083ea60(pppuVar5);
        }
        local_c = CONCAT31(local_c._1_3_,2);
        FUN_008f7630();
        if ((local_6c != (int *)0x0) && (cVar1 = (**(code **)(*local_6c + 4))(), cVar1 != '\0'))
        break;
      }
      local_58 = *param_4;
      local_54 = (int *)param_4[1];
      if ((local_6c == (int *)0x0) || (cVar1 = (**(code **)(*local_6c + 4))(), cVar1 == '\0')) {
        FUN_00971900(&local_68,local_68,param_3);
        local_c._0_1_ = 4;
        if ((piStack_64 != (int *)0x0) && (cVar1 = (**(code **)(*piStack_64 + 4))(), cVar1 != '\0'))
        {
          if ((local_58 == DAT_03238d04) && (local_54 == DAT_03238d08)) {
            piVar3 = (int *)FUN_009c48a0(auStack_48,param_3);
            local_58 = *piVar3;
            local_54 = (int *)piVar3[1];
          }
          FUN_009748f0(&local_60,&local_58);
          local_c._0_1_ = 5;
          if ((piStack_5c != (int *)0x0) &&
             (cVar1 = (**(code **)(*piStack_5c + 4))(), cVar1 != '\0')) {
            FUN_008f4c70(&local_60,0);
          }
          local_c._0_1_ = 4;
          FUN_008f7630();
        }
        local_c = CONCAT31(local_c._1_3_,2);
        local_68 = wxObject::vftable;
        FUN_0083e850();
      }
      if (((local_6c != (int *)0x0) && (cVar1 = (**(code **)(*local_6c + 4))(), cVar1 != '\0')) &&
         ((local_58 != DAT_03238d04 || (local_54 != DAT_03238d08)))) {
        if (local_6c == (int *)0x0) {
          local_60 = 0;
          piStack_5c = (int *)0x0;
        }
        else {
          piStack_5c = (int *)local_6c[3];
          local_60 = local_6c[2];
        }
        if ((local_60 != local_58) || (piStack_5c != local_54)) {
          FUN_008f3b70(&local_68);
          local_c._0_1_ = 6;
          FUN_009055a0(local_58,local_54,0);
          pppuVar5 = (undefined ***)FUN_00414f38(&local_68,0xffffffff);
          local_c._0_1_ = 7;
          if (&local_70 != pppuVar5) {
            FUN_0083ea60(pppuVar5);
          }
          local_c._0_1_ = 6;
          FUN_008f7630();
          local_c = CONCAT31(local_c._1_3_,2);
          local_68 = wxObject::vftable;
          FUN_0083e850();
        }
      }
      pppuVar5 = (undefined ***)FUN_00971640(local_40);
      param_1 = local_50;
      if (pppuVar5 != &local_70) {
        FUN_0083ea60(&local_70);
        param_1 = local_50;
      }
    }
    else if (&local_70 != (undefined ***)(iVar4 + 0x28)) {
      FUN_0083ea60((undefined ***)(iVar4 + 0x28));
    }
    *param_1 = wxObject::vftable;
    param_1[1] = local_6c;
    if (local_6c != (int *)0x0) {
      local_6c[1] = local_6c[1] + 1;
    }
    *param_1 = wxBitmap::vftable;
    local_4c = 1;
    local_c = CONCAT31(local_c._1_3_,1);
    FUN_008f7630();
    _free(local_24);
    if (7 < local_28) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_3c);
    }
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



// WARNING: Removing unreachable block (ram,0x00972125)

undefined4 *
FUN_00972060(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  undefined local_14 [4];
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde609;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00971c50(local_14,param_2,param_3,param_4,DAT_0323f878 ^ (uint)&stack0xffffffd8);
  local_4 = 1;
  if ((local_10 == (int *)0x0) || (cVar3 = (**(code **)(*local_10 + 4))(), cVar3 == '\0')) {
    *param_1 = wxObject::vftable;
    iVar2 = DAT_03238cf0;
    param_1[1] = DAT_03238cf0;
    if (iVar2 != 0) {
      piVar1 = (int *)(iVar2 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxIcon::vftable;
  }
  else {
    local_4._0_1_ = 2;
    FUN_0092c6e0(local_14);
    *param_1 = wxObject::vftable;
    param_1[1] = 0;
    *param_1 = wxIcon::vftable;
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_008f7630();
  }
  local_4 = local_4 & 0xffffff00;
  FUN_008f7630();
  ExceptionList = local_c;
  return param_1;
}



void FUN_00972170(void)

{
  int iVar1;
  undefined4 *puVar2;
  
  if (DAT_032e12ec != (undefined4 *)0x0) {
    iVar1 = DAT_032e12ec[1];
    puVar2 = DAT_032e12ec;
    while (iVar1 != 0) {
      if (*(int **)(puVar2[3] + 8) != (int *)0x0) {
        (**(code **)(**(int **)(puVar2[3] + 8) + 4))(1);
        puVar2 = DAT_032e12ec;
      }
      iVar1 = puVar2[1];
    }
    (**(code **)*puVar2)(1);
    iVar1 = DAT_032e12f0;
    DAT_032e12ec = (undefined4 *)0x0;
    if (DAT_032e12f0 != 0) {
      FUN_00971530();
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar1);
    }
  }
  return;
}



void thunk_FUN_00972170(void)

{
  int iVar1;
  undefined4 *puVar2;
  
  if (DAT_032e12ec != (undefined4 *)0x0) {
    iVar1 = DAT_032e12ec[1];
    puVar2 = DAT_032e12ec;
    while (iVar1 != 0) {
      if (*(int **)(puVar2[3] + 8) != (int *)0x0) {
        (**(code **)(**(int **)(puVar2[3] + 8) + 4))(1);
        puVar2 = DAT_032e12ec;
      }
      iVar1 = puVar2[1];
    }
    (**(code **)*puVar2)(1);
    iVar1 = DAT_032e12f0;
    DAT_032e12ec = (undefined4 *)0x0;
    if (DAT_032e12f0 != 0) {
      FUN_00971530();
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar1);
    }
  }
  return;
}



undefined ** FUN_009721f0(void)

{
  return &PTR_PTR_00d6236c;
}



undefined * FUN_00972200(void)

{
  return &DAT_032e12f4;
}



undefined ** FUN_00972210(void)

{
  return &PTR_u_wxTextEntryDialog_0323b7a0;
}



void __fastcall FUN_00972220(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x138))();
  if (cVar1 != '\0') {
    cVar1 = (**(code **)(*param_1 + 0x140))();
    if (cVar1 != '\0') {
      (**(code **)(*param_1 + 0x398))(0x13ec);
    }
  }
  return;
}



int * __thiscall
FUN_00972260(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4,
            uint param_5,undefined4 param_6)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  undefined *puVar7;
  uint *puVar8;
  uint local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  uint local_b4;
  undefined4 *local_b0;
  uint local_ac;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined local_a0 [4];
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  int *local_7c;
  undefined local_78 [96];
  void *pvStack_18;
  undefined uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde6a2;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_c;
  local_b4 = 0;
  local_7c = param_1_00;
  FUN_0043c211("dialog");
  puVar7 = local_a0;
  uVar6 = 0x20001800;
  puVar5 = &DAT_03238d04;
  uVar4 = 0xffffffff;
  local_4 = 0;
  uVar2 = FUN_00938f40(param_1,param_5);
  FUN_00481a0d(uVar2,uVar4,param_3,param_6,puVar5,uVar6,puVar7);
  local_4._0_1_ = 2;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_9c,uVar1);
  }
  *param_1_00 = (int)wxTextEntryDialog::vftable;
  param_1_00[0x82] = 0;
  local_8c = 0;
  local_9c = local_9c & 0xffff0000;
  param_1_00[0x83] = 7;
  local_88 = 7;
  *(undefined2 *)(param_1_00 + 0x7e) = 0;
  FID_conflict_assign(param_4,0,0xffffffff);
  param_1_00[0x84] = 0;
  local_4._0_1_ = 3;
  param_1_00[0x86] = param_5;
  if (param_1_00 + 0x7d != param_4) {
    FID_conflict_assign(param_4,0,0xffffffff);
  }
  uVar2 = FUN_008f7b30(0x14);
  FUN_0095dd80(uVar2);
  puVar5 = (undefined4 *)operator_new(0x58);
  local_4._0_1_ = 4;
  local_b0 = puVar5;
  if (puVar5 == (undefined4 *)0x0) {
    puVar5 = (undefined4 *)0x0;
  }
  else {
    FUN_00445eb9();
    *puVar5 = wxBoxSizer::vftable;
    puVar5[2] = wxBoxSizer::vftable;
    puVar5[0x14] = 0;
    puVar5[0x15] = 0;
    puVar5[0x12] = 8;
    puVar5[0x13] = 0;
  }
  puVar8 = &local_ac;
  local_4._0_1_ = 3;
  local_ac = 0;
  local_a8 = 0xf0;
  local_a4 = 10;
  uVar2 = FUN_00939e10(param_2);
  FUN_00938d70(uVar2,puVar8);
  local_b0 = (undefined4 *)operator_new(0x3b8);
  local_4._0_1_ = 6;
  if (local_b0 == (undefined4 *)0x0) {
    iVar3 = 0;
  }
  else {
    FUN_0043c211(&DAT_00d5ef5c);
    local_4 = CONCAT31(local_4._1_3_,7);
    local_b4 = 1;
    local_c0 = 300;
    local_bc = 0xffffffff;
    iVar3 = FUN_00484074(param_1_00,3000,param_4,&DAT_03238d0c,&local_c0,param_5 & 0xffffffea,
                         &DAT_032c0398,local_a0);
  }
  param_1_00[0x7c] = iVar3;
  local_4 = 3;
  if ((local_b4 & 1) != 0) {
    _free(local_84);
    if (7 < local_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_9c);
    }
  }
  local_c0 = param_5 >> 5 & 1;
  local_bc = 0x2030;
  local_b8 = 0xf;
  FUN_00938cf0(param_1_00[0x7c],&local_c0);
  FUN_0096e830(0,param_1_00 + 0x7d);
  local_4 = CONCAT31(local_4._1_3_,9);
  (**(code **)(*(int *)param_1_00[0x7c] + 0x130))(local_78);
  iVar3 = FUN_0093b290(param_5 & 0x14);
  if (iVar3 != 0) {
    local_c0 = local_ac | 0x2000;
    local_bc = local_a8;
    FUN_00938d70(iVar3,&stack0xffffff3c);
  }
  *(byte *)(param_1_00 + 0x37) = *(byte *)(param_1_00 + 0x37) | 1;
  FUN_0091c600(puVar5,1);
  FUN_00931b00(param_1_00);
  FUN_00931a60(&stack0xffffff3c,param_1_00);
  if ((param_5 & 1) != 0) {
    (**(code **)(*param_1_00 + 0x29c))(0xc);
  }
  (**(code **)(*(int *)(param_1_00[0x7c] + 0x398) + 0x60))(0xffffffff,0xffffffff);
  (**(code **)(*(int *)param_1_00[0x7c] + 0x100))();
  FUN_0095db80();
  uStack_10 = 3;
  FUN_00489fc5();
  ExceptionList = pvStack_18;
  return param_1_00;
}



undefined4 __thiscall FUN_009725f0(undefined4 param_1,byte param_2)

{
  FUN_00821542();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 __thiscall
FUN_00972610(HBITMAP *param_1_00,HBITMAP param_1,HBITMAP param_2,HBITMAP param_3)

{
  char cVar1;
  HBITMAP pHVar2;
  undefined4 uVar3;
  BITMAPINFO local_9c [3];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bde710;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c == (undefined *)0x0) || (param_3 != (HBITMAP)0x0)) {
    if (0x17 < (int)param_3) goto LAB_0097267d;
  }
  else {
    FUN_00840480();
  }
  param_3 = (HBITMAP)0x18;
LAB_0097267d:
  _memset(local_9c,0,0x2c);
  local_9c[0].bmiHeader.biSizeImage =
       ((int)param_1 * (int)param_3 + 0x1f >> 3 & 0xfffffffcU) * (int)param_2;
  local_9c[0].bmiHeader.biPlanes = 1;
  local_9c[0].bmiHeader.biSize = 0x28;
  local_9c[0].bmiHeader.biWidth = (LONG)param_1;
  local_9c[0].bmiHeader.biHeight = (LONG)param_2;
  local_9c[0].bmiHeader.biBitCount = (WORD)param_3;
  pHVar2 = CreateDIBSection((HDC)0x0,local_9c,0,param_1_00 + 1,(HANDLE)0x0,0);
  *param_1_00 = pHVar2;
  if (pHVar2 == (HBITMAP)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    uVar3 = 0;
  }
  else {
    param_1_00[2] = param_1;
    param_1_00[3] = param_2;
    param_1_00[4] = param_3;
    uVar3 = 1;
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 __thiscall FUN_009727e0(HANDLE *param_1,HBITMAP param_2)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  HDC hdc;
  undefined local_b0 [20];
  LPVOID pvStack_9c;
  tagBITMAPINFO atStack_98 [3];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bde753;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = GetObjectW(*param_1,0x54,local_b0);
  if ((iVar2 == 0x54) && (pvStack_9c != (LPVOID)0x0)) {
    hdc = GetDC((HWND)0x0);
    iVar2 = GetDIBits(hdc,param_2,0,(UINT)param_1[3],pvStack_9c,atStack_98,0);
    ReleaseDC((HWND)0x0,hdc);
    if (iVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
      uVar3 = 0;
    }
    else {
      uVar3 = 1;
    }
  }
  else {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    uVar3 = 0;
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 __thiscall FUN_00972980(HANDLE *param_1_00,int param_1)

{
  char cVar1;
  LPCWSTR name;
  HINSTANCE hInst;
  HANDLE pvVar2;
  UINT type;
  int cx;
  int cy;
  UINT fuLoad;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(uint *)(param_1 + 0x18) < 8) {
    name = (LPCWSTR)(param_1 + 4);
  }
  else {
    name = *(LPCWSTR *)(param_1 + 4);
  }
  fuLoad = 0x2010;
  cy = 0;
  cx = 0;
  type = 0;
  hInst = (HINSTANCE)FUN_008a65e0();
  pvVar2 = LoadImageW(hInst,name,type,cx,cy,fuLoad);
  *param_1_00 = pvVar2;
  if (pvVar2 == (HANDLE)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = local_c;
  return 1;
}



bool __fastcall FUN_00972ac0(HANDLE *param_1)

{
  char cVar1;
  int iVar2;
  bool local_119;
  int local_114;
  undefined local_b0 [20];
  int iStack_9c;
  int iStack_98;
  int iStack_84;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde7d2;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1 == (HANDLE)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    ExceptionList = local_c;
    return false;
  }
  FUN_00889060();
  local_119 = local_114 != -1;
  local_4 = 0;
  if (local_119) {
    iVar2 = GetObjectW(*param_1,0x54,local_b0);
    if ((iVar2 != 0x54) || (iStack_9c == 0)) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        local_4._0_1_ = 1;
        FUN_008423d0();
        local_4._0_1_ = 2;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_4._0_1_ = 1;
        FUN_00842440();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_0081b5bc();
      }
      goto LAB_00972dac;
    }
    iVar2 = FUN_00887570();
    if ((iVar2 == 0xe) &&
       ((iVar2 = FUN_00887570(), iVar2 == iStack_98 && (iVar2 = FUN_00887570(), iVar2 == iStack_84))
       )) {
      local_119 = true;
      goto LAB_00972dac;
    }
    local_119 = false;
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(1);
  if (cVar1 != '\0') {
    FUN_004325b6();
    local_4._0_1_ = 3;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,4);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    FUN_00432231();
    local_4._0_1_ = 6;
    FUN_008423d0();
    local_4._0_1_ = 8;
    FUN_00848860();
    local_4._0_1_ = 5;
    FUN_00842440();
    local_4 = CONCAT31(local_4._1_3_,4);
    FUN_0081b5bc();
    FUN_0040159c();
    FUN_0040159c();
  }
LAB_00972dac:
  local_4 = 0xffffffff;
  FUN_008871c0();
  ExceptionList = local_c;
  return local_119;
}



void __fastcall FUN_00972e10(HANDLE *param_1)

{
  char cVar1;
  int iVar2;
  undefined local_b0 [4];
  HANDLE pvStack_ac;
  HANDLE pvStack_a8;
  ushort uStack_9e;
  HANDLE pvStack_9c;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bde813;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*param_1 != (HANDLE)0x0) && (param_1[1] == (HANDLE)0x0)) {
    iVar2 = GetObjectW(*param_1,0x54,local_b0);
    if ((iVar2 == 0x54) && (pvStack_9c != (HANDLE)0x0)) {
      param_1[2] = pvStack_ac;
      param_1[3] = pvStack_a8;
      param_1[4] = (HANDLE)(uint)uStack_9e;
      param_1[1] = pvStack_9c;
    }
    else {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
        ExceptionList = local_c;
        return;
      }
    }
  }
  ExceptionList = local_c;
  return;
}



HBITMAP FUN_00972f80(BITMAPINFOHEADER *param_1,BITMAPINFOHEADER *param_2,DWORD *param_3)

{
  char cVar1;
  HBITMAP pHVar2;
  uint uVar3;
  BITMAPINFOHEADER *hDC;
  bool bVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = (HBITMAP)0xffffffff;
  puStack_8 = &LAB_00bdbb50;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == (BITMAPINFOHEADER *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    ExceptionList = local_c;
    return (HBITMAP)0x0;
  }
  if (param_3 == (DWORD *)0x0) {
    if (param_1->biCompression == 0) {
      uVar3 = param_1->biClrUsed;
      if (uVar3 == 0) {
        if (param_1->biBitCount < 9) {
          uVar3 = 1 << ((byte)param_1->biBitCount & 0x1f);
        }
        else {
          uVar3 = 0;
        }
        uVar3 = uVar3 & 0xffff;
      }
    }
    else {
      uVar3 = (param_1->biCompression != 3) - 1 & 3;
    }
    param_3 = &param_1[1].biSize + uVar3;
  }
  bVar4 = param_2 == (BITMAPINFOHEADER *)0x0;
  hDC = param_1;
  if (bVar4) {
    param_2 = (BITMAPINFOHEADER *)GetDC((HWND)0x0);
    hDC = param_2;
  }
  pHVar2 = CreateDIBitmap((HDC)param_2,param_1,4,param_3,(BITMAPINFO *)param_1,0);
  if (bVar4) {
    ReleaseDC((HWND)0x0,(HDC)hDC);
  }
  if (pHVar2 == (HBITMAP)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = pHVar2;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (HBITMAP)((uint)uStack_4._1_3_ << 8);
      FUN_00842440();
      uStack_4 = (HBITMAP)0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return pHVar2;
}



undefined4 * __fastcall FUN_00973160(HANDLE *param_1)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  HDC hdc;
  LOGPALETTE *plpal;
  HGDIOBJ h;
  BYTE *pBVar4;
  HPALETTE pHVar5;
  undefined4 *puVar6;
  RGBQUAD *prgbq;
  UINT cEntries;
  RGBQUAD **ppRStack_138;
  undefined local_100 [20];
  int iStack_ec;
  ushort uStack_da;
  UINT UStack_c8;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bde88a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1 == (HANDLE)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  else {
    iVar2 = GetObjectW(*param_1,0x54,local_100);
    if ((iVar2 == 0x54) && (iStack_ec != 0)) {
      cEntries = UStack_c8;
      if (UStack_c8 == 0) {
        if (uStack_da < 9) {
          uVar3 = 1 << ((byte)uStack_da & 0x1f);
        }
        else {
          uVar3 = 0;
        }
        cEntries = uVar3 & 0xffff;
        if (cEntries == 0) {
          ExceptionList = local_c;
          return (undefined4 *)0x0;
        }
      }
      hdc = CreateCompatibleDC((HDC)0x0);
      uStack_4 = 2;
      plpal = (LOGPALETTE *)_malloc(cEntries * 4 + 4);
      if (plpal == (LOGPALETTE *)0x0) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480();
        }
        DeleteDC(hdc);
      }
      else {
        plpal->palVersion = 0x300;
        plpal->palNumEntries = (WORD)cEntries;
        FUN_0084aa50();
        prgbq = *ppRStack_138;
        h = SelectObject(hdc,*param_1);
        uStack_4._0_1_ = 4;
        GetDIBColorTable(hdc,0,cEntries,prgbq);
        if (cEntries != 0) {
          pBVar4 = &plpal->palPalEntry[0].peGreen;
          do {
            ((PALETTEENTRY *)(pBVar4 + -1))->peRed = prgbq->rgbRed;
            *pBVar4 = prgbq->rgbGreen;
            pBVar4[1] = prgbq->rgbBlue;
            pBVar4[2] = '\0';
            pBVar4 = pBVar4 + 4;
            prgbq = prgbq + 1;
            cEntries = cEntries - 1;
          } while (cEntries != 0);
        }
        pHVar5 = CreatePalette(plpal);
        _free(plpal);
        if (pHVar5 != (HPALETTE)0x0) {
          puVar6 = (undefined4 *)operator_new(8);
          if (puVar6 == (undefined4 *)0x0) {
            puVar6 = (undefined4 *)0x0;
          }
          else {
            puVar6[1] = 0;
            *puVar6 = wxPalette::vftable;
          }
          FUN_00973fd0();
          if (hdc != (HDC)0x0) {
            SelectObject(hdc,h);
          }
          uStack_4 = CONCAT31(uStack_4._1_3_,2);
          thunk_FUN_0043c1dd();
          DeleteDC(hdc);
          ExceptionList = local_c;
          return puVar6;
        }
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4._0_1_ = 5;
          FUN_008423d0();
          uStack_4._0_1_ = 6;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          uStack_4._0_1_ = 5;
          FUN_00842440();
          uStack_4._0_1_ = 4;
          FUN_0081b5bc();
        }
        if (hdc != (HDC)0x0) {
          SelectObject(hdc,h);
        }
        uStack_4 = CONCAT31(uStack_4._1_3_,2);
        thunk_FUN_0043c1dd();
        DeleteDC(hdc);
      }
    }
    else {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



uint __thiscall FUN_00973530(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  byte bVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  byte *pbVar7;
  byte *pbVar8;
  byte *pbVar9;
  byte *pbVar10;
  int local_10;
  int local_c;
  
  uVar3 = FUN_008ff820();
  if ((char)uVar3 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      uVar3 = FUN_00840480("..\\..\\src\\msw\\dib.cpp",0x297,"wxDIB::Create","image.IsOk()",
                           L"invalid wxImage in wxDIB ctor");
    }
    return uVar3 & 0xffffff00;
  }
  local_c = FUN_00900150();
  iVar4 = FUN_00900100();
  iVar5 = FUN_008ff940();
  iVar1 = (uint)(iVar5 != 0) * 8 + 0x18;
  uVar3 = FUN_00972610(iVar4,local_c,iVar1);
  if ((char)uVar3 != '\0') {
    iVar6 = FUN_008ff850();
    pbVar10 = (byte *)(iVar6 + (local_c + -1) * iVar4 * 3);
    if (iVar5 != 0) {
      iVar5 = FUN_008ff940();
      pbVar7 = (byte *)(iVar5 + (local_c + -1) * iVar4);
    }
    else {
      pbVar7 = (byte *)0x0;
    }
    pbVar9 = *(byte **)(param_1_00 + 4);
    if (0 < local_c) {
      do {
        if (pbVar7 == (byte *)0x0) {
          pbVar8 = pbVar9;
          iVar5 = iVar4;
          if (0 < iVar4) {
            do {
              *pbVar8 = pbVar10[2];
              pbVar8[1] = pbVar10[1];
              pbVar8[2] = *pbVar10;
              pbVar10 = pbVar10 + 3;
              iVar5 = iVar5 + -1;
              pbVar8 = pbVar8 + 3;
            } while (iVar5 != 0);
          }
        }
        else if (param_2 == 0) {
          pbVar8 = pbVar9;
          local_10 = iVar4;
          if (0 < iVar4) {
            do {
              bVar2 = *pbVar7;
              pbVar7 = pbVar7 + 1;
              uVar3 = (uint)bVar2;
              *pbVar8 = (byte)((pbVar10[2] * uVar3 + 0x7f) / 0xff);
              pbVar8[1] = (byte)((pbVar10[1] * uVar3 + 0x7f) / 0xff);
              pbVar8[2] = (byte)((*pbVar10 * uVar3 + 0x7f) / 0xff);
              pbVar8[3] = bVar2;
              pbVar10 = pbVar10 + 3;
              local_10 = local_10 + -1;
              pbVar8 = pbVar8 + 4;
            } while (local_10 != 0);
          }
        }
        else if ((param_2 == 1) && (pbVar8 = pbVar9, iVar5 = iVar4, 0 < iVar4)) {
          do {
            *pbVar8 = pbVar10[2];
            pbVar8[1] = pbVar10[1];
            pbVar8[2] = *pbVar10;
            pbVar8[3] = *pbVar7;
            pbVar7 = pbVar7 + 1;
            pbVar10 = pbVar10 + 3;
            iVar5 = iVar5 + -1;
            pbVar8 = pbVar8 + 4;
          } while (iVar5 != 0);
        }
        pbVar10 = pbVar10 + iVar4 * -6;
        if (pbVar7 != (byte *)0x0) {
          pbVar7 = pbVar7 + iVar4 * -2;
        }
        pbVar9 = pbVar9 + (iVar1 * iVar4 + 0x1f >> 3 & 0xfffffffc);
        local_c = local_c + -1;
      } while (local_c != 0);
    }
    return CONCAT31((int3)((uint)pbVar7 >> 8),1);
  }
  return uVar3;
}



undefined4 __thiscall FUN_00973790(HANDLE *param_1_00,HANDLE param_1)

{
  char cVar1;
  int iVar2;
  undefined local_dc [18];
  short local_ca;
  undefined local_b0 [4];
  HANDLE local_ac;
  HANDLE local_a8;
  ushort local_9e;
  HANDLE local_9c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde8c3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == (HANDLE)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  else {
    iVar2 = GetObjectW(param_1,0x54,local_b0);
    if ((iVar2 == 0x54) && (local_9c != (HANDLE)0x0)) {
      param_1_00[2] = local_ac;
      param_1_00[1] = local_9c;
      *param_1_00 = param_1;
      *(undefined *)(param_1_00 + 5) = 0;
      param_1_00[3] = local_a8;
      param_1_00[4] = (HANDLE)(uint)local_9e;
      ExceptionList = local_c;
      return 1;
    }
    iVar2 = GetObjectW(param_1,0x18,local_dc);
    if (iVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        local_4 = 0;
        FUN_008423d0();
        local_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_00842440();
        local_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    else {
      if (local_ca == 0) {
        FUN_0095de30();
      }
      cVar1 = FUN_00972610();
      if ((cVar1 != '\0') && (cVar1 = FUN_009727e0(), cVar1 != '\0')) {
        ExceptionList = local_c;
        return 1;
      }
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __fastcall FUN_00973970(HANDLE *param_1)

{
  void *_Dst;
  char cVar1;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  HDC hdc;
  HGDIOBJ h;
  UINT cEntries;
  void **ppvStack_d4;
  undefined local_b0 [20];
  int iStack_9c;
  size_t asStack_98 [3];
  ushort uStack_8a;
  UINT UStack_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bde924;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1 == (HANDLE)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  else {
    iVar2 = GetObjectW(*param_1,0x54,local_b0);
    if ((iVar2 == 0x54) && (iStack_9c != 0)) {
      cEntries = UStack_78;
      if (UStack_78 == 0) {
        if (uStack_8a < 9) {
          uVar3 = 1 << ((byte)uStack_8a & 0x1f);
        }
        else {
          uVar3 = 0;
        }
        cEntries = uVar3 & 0xffff;
        if (cEntries == 0) {
          uVar4 = FUN_00972f80();
          ExceptionList = local_c;
          return uVar4;
        }
      }
      FUN_0084aa50();
      _Dst = *ppvStack_d4;
      uStack_4 = 2;
      hdc = CreateCompatibleDC((HDC)0x0);
      h = SelectObject(hdc,*param_1);
      uStack_4 = CONCAT31(uStack_4._1_3_,4);
      GetDIBColorTable(hdc,0,cEntries,(RGBQUAD *)((int)_Dst + 0x28));
      _memcpy(_Dst,asStack_98,asStack_98[0]);
      uVar4 = FUN_00972f80();
      if (hdc != (HDC)0x0) {
        SelectObject(hdc,h);
      }
      DeleteDC(hdc);
      uStack_4 = 0xffffffff;
      thunk_FUN_0043c1dd();
      ExceptionList = local_c;
      return uVar4;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_00973bd0(int *param_1_00,undefined4 *param_1)

{
  int *piVar1;
  byte bVar2;
  int iVar3;
  bool bVar4;
  bool bVar5;
  bool bVar6;
  char cVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  byte *pbVar11;
  byte *pbVar12;
  byte *pbVar13;
  byte *pbVar14;
  byte *local_34;
  int local_30;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde971;
  local_c = ExceptionList;
  uVar8 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  if (*param_1_00 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\dib.cpp",0x2ee,"wxDIB::ConvertToImage","IsOk()",
                   L"can\'t convert invalid DIB to wxImage",uVar8);
    }
    *param_1 = wxObject::vftable;
    iVar10 = DAT_032390e8;
    param_1[1] = DAT_032390e8;
    if (iVar10 != 0) {
      piVar1 = (int *)(iVar10 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxImage::vftable;
    ExceptionList = local_c;
    return param_1;
  }
  FUN_00972e10();
  iVar10 = param_1_00[2];
  FUN_00972e10();
  local_30 = param_1_00[3];
  FUN_00902d80(iVar10,local_30,0);
  local_4 = 1;
  cVar7 = FUN_008ff820();
  if (cVar7 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\dib.cpp",0x2f6,"wxDIB::ConvertToImage","Assert failure",
                   L"could not allocate data for image",uVar8);
    }
    *param_1 = wxObject::vftable;
    iVar10 = DAT_032390e8;
    param_1[1] = DAT_032390e8;
    if (iVar10 != 0) {
      piVar1 = (int *)(iVar10 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxImage::vftable;
    local_4 = local_4 & 0xffffff00;
    FUN_0083e850();
    ExceptionList = local_c;
    return param_1;
  }
  FUN_00972e10();
  iVar3 = param_1_00[4];
  bVar6 = false;
  bVar4 = false;
  bVar5 = false;
  if (iVar3 == 0x20) {
    FUN_008ff8a0(0,0);
  }
  iVar9 = FUN_008ff850();
  pbVar14 = (byte *)(iVar9 + (local_30 + -1) * iVar10 * 3);
  iVar9 = FUN_008ff940();
  if (iVar9 == 0) {
    local_34 = (byte *)0x0;
  }
  else {
    iVar9 = FUN_008ff940();
    local_34 = (byte *)(iVar9 + (local_30 + -1) * iVar10);
  }
  FUN_00972e10();
  pbVar13 = (byte *)param_1_00[1];
  if (0 < local_30) {
    do {
      pbVar11 = pbVar13;
      iVar9 = iVar10;
      if (0 < iVar10) {
        do {
          pbVar14[2] = *pbVar11;
          pbVar14[1] = pbVar11[1];
          pbVar12 = pbVar11 + 3;
          *pbVar14 = pbVar11[2];
          if (iVar3 == 0x20) {
            bVar2 = *pbVar12;
            *local_34 = bVar2;
            local_34 = local_34 + 1;
            if (bVar2 == 0) {
              bVar5 = true;
            }
            else {
              if (bVar2 == 0xff) {
                bVar4 = true;
              }
              else {
                bVar6 = true;
                if (bVar2 == 0) goto LAB_00973de1;
              }
              uVar8 = (uint)bVar2;
              *pbVar14 = (byte)((ulonglong)((uint)*pbVar14 * 0xff) / (ulonglong)(longlong)(int)uVar8
                               );
              pbVar14[1] = (byte)((ulonglong)((uint)pbVar14[1] * 0xff) /
                                 (ulonglong)(longlong)(int)uVar8);
              pbVar14[2] = (byte)((ulonglong)((uint)pbVar14[2] * 0xff) /
                                 (ulonglong)(longlong)(int)uVar8);
            }
LAB_00973de1:
            pbVar12 = pbVar11 + 4;
          }
          pbVar14 = pbVar14 + 3;
          iVar9 = iVar9 + -1;
          pbVar11 = pbVar12;
        } while (iVar9 != 0);
      }
      pbVar14 = pbVar14 + iVar10 * -6;
      if (local_34 != (byte *)0x0) {
        local_34 = local_34 + iVar10 * -2;
      }
      pbVar13 = pbVar13 + (iVar3 * iVar10 + 0x1f >> 3 & 0xfffffffc);
      local_30 = local_30 + -1;
    } while (local_30 != 0);
    if (((bVar4) && (bVar5)) || (bVar6)) goto LAB_00973e41;
  }
  iVar10 = FUN_008ff940();
  if (iVar10 != 0) {
    FUN_009006d0();
  }
LAB_00973e41:
  *param_1 = wxObject::vftable;
  param_1[1] = local_10;
  if (local_10 != 0) {
    *(int *)(local_10 + 4) = *(int *)(local_10 + 4) + 1;
  }
  *param_1 = wxImage::vftable;
  local_4 = local_4 & 0xffffff00;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



undefined * FUN_00973f00(void)

{
  return &DAT_0323b7f0;
}



UINT __fastcall FUN_00973f10(int *param_1)

{
  char cVar1;
  UINT UVar2;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    UVar2 = GetPaletteEntries(*(HPALETTE *)(param_1[1] + 8),0,0,(LPPALETTEENTRY)0x0);
    return UVar2;
  }
  return 0;
}



UINT __thiscall FUN_00973f40(int param_1_00,byte param_1,byte param_2,byte param_3)

{
  UINT UVar1;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    return 0xffffffff;
  }
  UVar1 = GetNearestPaletteIndex
                    (*(HPALETTE *)(*(int *)(param_1_00 + 4) + 8),
                     ((param_3 | 0x200) << 8 | (uint)param_2) << 8 | (uint)param_1);
  return UVar1;
}



undefined4 __thiscall
FUN_00973f80(int param_1_00,tagPALETTEENTRY param_1,BYTE *param_3,BYTE *param_4,BYTE *param_5)

{
  UINT UVar1;
  
  if ((*(int *)(param_1_00 + 4) != 0) && ((uint)param_1 < 0x100)) {
    UVar1 = GetPaletteEntries(*(HPALETTE *)(*(int *)(param_1_00 + 4) + 8),(UINT)param_1,1,&param_1);
    if (UVar1 != 0) {
      *param_3 = param_1.peRed;
      *param_4 = param_1.peGreen;
      *param_5 = param_1.peBlue;
      return 1;
    }
  }
  return 0;
}



void __thiscall FUN_00973fd0(int param_1_00,undefined4 param_1)

{
  FUN_0083eaa0();
  *(undefined4 *)(*(int *)(param_1_00 + 4) + 8) = param_1;
  return;
}



undefined4 * __thiscall
FUN_00973ff0(undefined4 *param_1_00,int param_1,int param_2,BYTE *param_3,int param_4)

{
  LOGPALETTE *plpal;
  BYTE *pBVar1;
  HPALETTE pHVar2;
  
  param_1_00[1] = 1;
  *param_1_00 = wxPaletteRefData::vftable;
  param_1_00[2] = 0;
  plpal = (LOGPALETTE *)_malloc(param_1 * 4 + 8);
  if (plpal != (LOGPALETTE *)0x0) {
    plpal->palVersion = 0x300;
    plpal->palNumEntries = (WORD)param_1;
    if (0 < param_1) {
      param_2 = param_2 - (int)param_3;
      pBVar1 = &plpal->palPalEntry[0].peGreen;
      param_4 = param_4 - (int)param_3;
      do {
        ((PALETTEENTRY *)(pBVar1 + -1))->peRed = param_3[param_2];
        *pBVar1 = *param_3;
        pBVar1[1] = param_3[param_4];
        pBVar1[2] = '\0';
        param_3 = param_3 + 1;
        pBVar1 = pBVar1 + 4;
        param_1 = param_1 + -1;
      } while (param_1 != 0);
    }
    pHVar2 = CreatePalette(plpal);
    param_1_00[2] = pHVar2;
    _free(plpal);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009740a0(undefined4 *param_1_00,int param_1)

{
  UINT UVar1;
  LOGPALETTE *plpal;
  HPALETTE pHVar2;
  
  param_1_00[1] = 1;
  *param_1_00 = wxPaletteRefData::vftable;
  param_1_00[2] = 0;
  UVar1 = GetPaletteEntries(*(HPALETTE *)(param_1 + 8),0,0,(LPPALETTEENTRY)0x0);
  if ((UVar1 != 0) && (plpal = (LOGPALETTE *)_malloc(UVar1 * 4 + 8), plpal != (LOGPALETTE *)0x0)) {
    plpal->palVersion = 0x300;
    plpal->palNumEntries = (WORD)UVar1;
    UVar1 = GetPaletteEntries(*(HPALETTE *)(param_1 + 8),0,UVar1,plpal->palPalEntry);
    if (UVar1 != 0) {
      pHVar2 = CreatePalette(plpal);
      param_1_00[2] = pHVar2;
    }
    _free(plpal);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00974130(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxPaletteRefData::vftable;
  if ((HGDIOBJ)param_1_00[2] != (HGDIOBJ)0x0) {
    DeleteObject((HGDIOBJ)param_1_00[2]);
  }
  *param_1_00 = wxRefCounter::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall
FUN_00974170(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *pvVar1;
  int iVar2;
  
  pvVar1 = operator_new(0xc);
  if (pvVar1 != (void *)0x0) {
    iVar2 = FUN_00973ff0(param_1,param_2,param_3,param_4);
    param_1_00[1] = iVar2;
    (**(code **)(*param_1_00 + 0x10))();
    return;
  }
  param_1_00[1] = 0;
  (**(code **)(*param_1_00 + 0x10))();
  return;
}



undefined4 * FUN_009741c0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 1;
    *puVar1 = wxPaletteRefData::vftable;
    puVar1[2] = 0;
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 FUN_009741f0(void)

{
  void *pvVar1;
  undefined4 uVar2;
  
  pvVar1 = operator_new(0xc);
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009740a0();
    return uVar2;
  }
  return 0;
}



undefined ** FUN_00974230(void)

{
  return &PTR_u_wxCursor_0323b828;
}



void __fastcall FUN_00974240(int param_1)

{
  if (*(HCURSOR *)(param_1 + 0x14) != (HCURSOR)0x0) {
    if (*(char *)(param_1 + 0x18) != '\0') {
      DestroyCursor(*(HCURSOR *)(param_1 + 0x14));
    }
    *(undefined4 *)(param_1 + 0x14) = 0;
  }
  return;
}



undefined4 FUN_00974260(void)

{
  return DAT_032e1334;
}



undefined4 * __thiscall FUN_00974270(undefined4 *param_1_00,int param_1,undefined param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be1688;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  param_1_00[4] = 0;
  param_1_00[3] = 0;
  param_1_00[2] = 0;
  local_4 = 0;
  *param_1_00 = wxCursorRefData::vftable;
  param_1_00[5] = param_1;
  if (param_1 == 0) {
    *(undefined *)(param_1_00 + 6) = param_2;
  }
  else {
    if (DAT_032e1338 == 0) {
      DAT_032e1338 = FUN_008fedb0(4,0,uVar1);
    }
    param_1_00[2] = DAT_032e1338;
    if (DAT_032e133c == 0) {
      DAT_032e133c = FUN_008fedb0(5,0,uVar1);
    }
    param_1_00[3] = DAT_032e133c;
    *(undefined *)(param_1_00 + 6) = param_2;
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00974320(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxCursorRefData::vftable;
  if ((HCURSOR)param_1_00[5] != (HCURSOR)0x0) {
    if (*(char *)(param_1_00 + 6) != '\0') {
      DestroyCursor((HCURSOR)param_1_00[5]);
    }
    param_1_00[5] = 0;
  }
  *param_1_00 = wxRefCounter::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_00974360(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bde9a3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x1c);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 1;
    puVar1[4] = 0;
    puVar1[3] = 0;
    puVar1[2] = 0;
    *puVar1 = wxCursorRefData::vftable;
    puVar1[5] = 0;
    *(undefined *)(puVar1 + 6) = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __fastcall FUN_009743d0(undefined4 *param_1)

{
  param_1[1] = 0;
  *param_1 = wxCursor::vftable;
  return;
}



void __thiscall FUN_00974400(int param_1_00,uint param_1)

{
  char cVar1;
  HINSTANCE pHVar2;
  HCURSOR pHVar3;
  void *pvVar4;
  undefined4 uVar5;
  wchar_t *lpCursorName;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bde9db;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (((int)param_1 < 1) || (0x1b < param_1)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  else {
    if ((&DAT_00d62e98)[param_1 * 8] == '\0') {
      pHVar2 = (HINSTANCE)FUN_008a65e0();
    }
    else {
      pHVar2 = (HINSTANCE)0x0;
    }
    pHVar3 = LoadCursorW(pHVar2,*(LPCWSTR *)(&DAT_00d62e9c + param_1 * 8));
    if (pHVar3 != (HCURSOR)0x0) {
LAB_009745a9:
      pvVar4 = operator_new(0x1c);
      local_4 = 2;
      if (pvVar4 != (void *)0x0) {
        uVar5 = FUN_00974270();
        *(undefined4 *)(param_1_00 + 4) = uVar5;
        ExceptionList = local_c;
        return;
      }
      *(undefined4 *)(param_1_00 + 4) = 0;
      ExceptionList = local_c;
      return;
    }
    if (param_1 == 6) {
      lpCursorName = L"WXCURSOR_HAND";
      pHVar2 = (HINSTANCE)FUN_008a65e0();
      pHVar3 = LoadCursorW(pHVar2,lpCursorName);
      if (pHVar3 != (HCURSOR)0x0) goto LAB_009745a9;
    }
    if (((&DAT_00d62e98)[param_1 * 8] == '\0') && (PTR_FUN_03235c4c != (undefined *)0x0)) {
      FUN_00840480();
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4 = 0;
      FUN_008423d0();
      local_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
      ExceptionList = local_c;
      return;
    }
  }
  ExceptionList = local_c;
  return;
}



undefined ** FUN_00974650(void)

{
  return &PTR_u_wxIconBundle_0323b864;
}



void __fastcall FUN_00974660(undefined4 *param_1)

{
  param_1[1] = 0;
  *param_1 = wxIconBundle::vftable;
  return;
}



undefined4 __fastcall FUN_00974670(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 != '\0') {
    return *(undefined4 *)(param_1[1] + 0xc);
  }
  return 0;
}



undefined4 * __fastcall FUN_009746b0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdea08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1[1] = 1;
  local_4 = 0;
  *param_1 = wxIconBundleRefData::vftable;
  FUN_0086a600(uVar1);
  ExceptionList = local_c;
  return param_1;
}



bool __fastcall FUN_00974710(int param_1)

{
  return *(int *)(param_1 + 0xc) != 0;
}



void __fastcall FUN_00974720(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdea08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_009ce170(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x14);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009746b0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_009747e0(int param_1_00,int param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  uint uVar5;
  
  if (param_2 != 0) {
    puVar3 = (undefined4 *)operator_new(8);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      *puVar3 = wxObject::vftable;
      iVar1 = *(int *)(param_1 + 4);
      puVar3[1] = iVar1;
      if (iVar1 != 0) {
        *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
      }
      *puVar3 = wxIcon::vftable;
    }
    iVar1 = *(int *)(param_1_00 + 4);
    if (puVar3 != (undefined4 *)0x0) {
      FUN_0086a0a0(puVar3,iVar1 * 4 >> 2,param_2);
    }
    uVar5 = 1;
    if (1 < param_2) {
      iVar4 = iVar1 * 4;
      do {
        iVar4 = iVar4 + 4;
        puVar3 = (undefined4 *)operator_new(8);
        if (puVar3 == (undefined4 *)0x0) {
          puVar3 = (undefined4 *)0x0;
        }
        else {
          *puVar3 = wxObject::vftable;
          iVar2 = *(int *)(param_1 + 4);
          puVar3[1] = iVar2;
          if (iVar2 != 0) {
            *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
          }
          *puVar3 = wxIcon::vftable;
        }
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar5 + iVar1))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 **)(iVar4 + *(int *)(param_1_00 + 8)) = puVar3;
        uVar5 = uVar5 + 1;
      } while (uVar5 < param_2);
    }
  }
  return;
}



undefined4 __thiscall FUN_009748d0(undefined4 param_1_00,byte param_1)

{
  FUN_00974720();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009748f0(int *param_1,undefined4 *param_2,int *param_3)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 *puVar6;
  int iVar7;
  uint uVar8;
  uint uStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdea49;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  cVar2 = (**(code **)(*param_1 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffd4);
  if (cVar2 == '\0') {
    uStack_1c = 0;
  }
  else {
    uStack_1c = *(uint *)(param_1[1] + 0xc);
  }
  param_2[1] = 0;
  *param_2 = wxIcon::vftable;
  local_4 = 0;
  if (uStack_1c != 0) {
    if (uStack_1c == 1) {
      puVar6 = (undefined4 *)FUN_009cde80(0);
joined_r0x00974a36:
      if (param_2 != puVar6) {
        FUN_0083ea60(puVar6);
      }
    }
    else {
      iVar3 = FUN_008fedb0(0xf);
      iVar4 = FUN_008fedb0(0x10,0);
      iVar1 = param_1[1];
      uVar8 = 0;
      if (uStack_1c != 0) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar1 + 0xc) <= uVar8)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          puVar6 = *(undefined4 **)(*(int *)(iVar1 + 0x10) + uVar8 * 4);
          iVar5 = puVar6[1];
          if (iVar5 == 0) {
            iVar7 = 0;
            iVar5 = 0;
          }
          else {
            iVar7 = *(int *)(iVar5 + 8);
            iVar5 = *(int *)(iVar5 + 0xc);
          }
          if ((iVar7 == *param_3) && (iVar5 == param_3[1])) goto joined_r0x00974a36;
          if (((((iVar7 == iVar3) && (iVar5 == iVar4)) || ((int *)param_2[1] == (int *)0x0)) ||
              (cVar2 = (**(code **)(*(int *)param_2[1] + 4))(), cVar2 == '\0')) &&
             (param_2 != puVar6)) {
            FUN_0083ea60(puVar6);
          }
          uVar8 = uVar8 + 1;
        } while (uVar8 < uStack_1c);
      }
    }
  }
  ExceptionList = local_c;
  return param_2;
}



undefined ** FUN_00974a60(undefined **param_1,int *param_2)

{
  char cVar1;
  uint uVar2;
  undefined *puVar3;
  int iVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdea89;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_009748f0(param_1,param_2);
  local_4 = 0;
  if ((param_1[1] != (undefined *)0x0) &&
     (cVar1 = (**(code **)(*(int *)param_1[1] + 4))(uVar2), cVar1 != '\0')) {
    puVar3 = param_1[1];
    if (puVar3 == (undefined *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *(int *)(puVar3 + 8);
    }
    if (iVar4 == *param_2) {
      if (puVar3 != (undefined *)0x0) {
        puVar3 = *(undefined **)(puVar3 + 0xc);
      }
      if (puVar3 == (undefined *)param_2[1]) {
        ExceptionList = local_c;
        return param_1;
      }
    }
    if (param_1 != &PTR_vftable_03238cec) {
      FUN_0083ea60(&PTR_vftable_03238cec);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00974b10(int param_1_00,int *param_1)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  char cVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  uint uStack_8;
  
  cVar4 = (**(code **)(*param_1 + 0x10))();
  if (cVar4 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\iconbndl.cpp",0x103,"wxIconBundle::AddIcon","icon.IsOk()",
                   L"invalid icon");
      return;
    }
  }
  else {
    FUN_0083eaa0();
    iVar1 = *(int *)(param_1_00 + 4);
    uVar2 = *(uint *)(iVar1 + 0xc);
    uStack_8 = 0;
    if (uVar2 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar1 + 0xc) <= uStack_8)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        piVar3 = *(int **)(*(int *)(iVar1 + 0x10) + uStack_8 * 4);
        cVar4 = (**(code **)(*piVar3 + 0x10))();
        if (cVar4 != '\0') {
          iVar7 = piVar3[1];
          if (iVar7 == 0) {
            iVar6 = 0;
          }
          else {
            iVar6 = *(int *)(iVar7 + 8);
          }
          iVar5 = FUN_0048a0ab();
          if (iVar6 == iVar5) {
            if (iVar7 != 0) {
              iVar7 = *(int *)(iVar7 + 0xc);
            }
            iVar6 = FUN_00473c08();
            if (iVar7 == iVar6) {
              if (piVar3 == param_1) {
                return;
              }
              FUN_0083ea60(param_1);
              return;
            }
          }
        }
        uStack_8 = uStack_8 + 1;
      } while (uStack_8 < uVar2);
    }
    FUN_009747e0(param_1,1);
  }
  return;
}



void FUN_00974c40(int param_1)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = *(uint *)(param_1 + 4);
  uVar2 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar1 <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      FUN_009747e0(*(undefined4 *)(*(int *)(param_1 + 8) + uVar2 * 4),1);
      uVar1 = *(uint *)(param_1 + 4);
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar1);
  }
  return;
}



undefined4 __thiscall FUN_00974ca0(undefined4 param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  FUN_00974c40(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00974d00(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdea08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  local_4 = 0;
  *param_1_00 = wxIconBundleRefData::vftable;
  FUN_00974ca0(param_1 + 8);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_00974d70(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x14);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00974d00(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00974de0(int *param_1_00,MSG *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1_00 + 0x40))(param_1);
  if (cVar1 == '\0') {
    TranslateMessage(param_1);
    DispatchMessageW(param_1);
  }
  return;
}



int __thiscall FUN_00974e10(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  undefined local_1c [28];
  
  iVar1 = FUN_008b8050(local_1c,param_1);
  if (iVar1 == 1) {
    (**(code **)(*param_1_00 + 0x3c))(local_1c);
    iVar1 = 1;
  }
  return iVar1;
}



void thunk_FUN_0086bdf0(void)

{
  LPCRITICAL_SECTION lpCriticalSection;
  uint uVar1;
  DWORD DVar2;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc98e8;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &pvStack_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bdb68 != 0)) {
    DVar2 = GetCurrentThreadId();
    if (DVar2 != DAT_032bdb68) {
      FUN_00840480("..\\..\\src\\msw\\thread.cpp",0x55f,"wxMutexGuiLeaveOrEnter",
                   "wxThread::IsMain()",L"only main thread may call wxMutexGuiLeaveOrEnter()!",uVar1
                  );
    }
  }
  lpCriticalSection = DAT_032bdb70;
  EnterCriticalSection(DAT_032bdb70);
  uStack_4 = 0;
  if (DAT_032bdb78 == 0) {
    if (DAT_032364d0 == '\0') {
      EnterCriticalSection(DAT_032bdb6c);
      DAT_032364d0 = '\x01';
    }
  }
  else if (DAT_032364d0 != '\0') {
    FUN_00841610();
  }
  LeaveCriticalSection(lpCriticalSection);
  ExceptionList = pvStack_c;
  return;
}



void FUN_00974e60(void)

{
  PostMessageW((HWND)0x0,0,0,0);
  return;
}



undefined4 * __thiscall
FUN_00974e80(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxwxMsgListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __fastcall FUN_00974f00(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 8));
}



undefined4 FUN_00974f10(int param_1)

{
  if (param_1 != 0) {
    do {
      if (param_1 == DAT_032e1340) {
        return 1;
      }
      param_1 = *(int *)(param_1 + 0x44);
    } while (param_1 != 0);
  }
  return 0;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined __fastcall FUN_00974f40(int *param_1)

{
  undefined4 uVar1;
  char cVar2;
  uint uVar3;
  DWORD DVar4;
  int *piVar5;
  int iVar6;
  int *piVar7;
  int *piVar8;
  int local_28 [7];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdeabe;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  cVar2 = FUN_008b7f30(local_28);
  if (cVar2 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032bdb68 != 0)) {
    DVar4 = GetCurrentThreadId();
    if (DVar4 != DAT_032bdb68) {
      FUN_00840480("..\\..\\src\\msw\\evtloop.cpp",0x11d,"wxGUIEventLoop::Dispatch",
                   "wxThread::IsMain()",L"only the main thread can process Windows messages",uVar3);
    }
  }
  if ((DAT_032e135c & 1) == 0) {
    DAT_032e135c = DAT_032e135c | 1;
    local_4 = 0;
    _DAT_032e1344 = wxListBase::vftable;
    FUN_0086ad40(0);
    _DAT_032e1344 = wxMsgList::vftable;
    _atexit((_func_4879 *)&LAB_00c78330);
    local_4 = 0xffffffff;
  }
  cVar2 = FUN_0086bdd0();
  if (cVar2 == '\0') {
    s___AVwxwxMsgListNode___0323b89c[0x16] = cVar2;
    cVar2 = FUN_0086bde0();
    if ((cVar2 == '\0') || (local_28[1] != 0x111)) {
      piVar5 = (int *)operator_new(0x1c);
      if (piVar5 != (int *)0x0) {
        piVar7 = local_28;
        piVar8 = piVar5;
        for (iVar6 = 7; iVar6 != 0; iVar6 = iVar6 + -1) {
          *piVar8 = *piVar7;
          piVar7 = piVar7 + 1;
          piVar8 = piVar8 + 1;
        }
        FUN_0086ad60(piVar5);
        ExceptionList = local_c;
        return 1;
      }
      FUN_0086ad60(0);
      ExceptionList = local_c;
      return 1;
    }
  }
  else {
    if (s___AVwxwxMsgListNode___0323b89c[0x16] == '\0') {
      s___AVwxwxMsgListNode___0323b89c[0x16] = '\x01';
      if (DAT_032e1350 != 0) {
        uVar1 = *(undefined4 *)(DAT_032e1350 + 8);
        FUN_0086b060(DAT_032e1350);
        (**(code **)(*param_1 + 0x3c))(uVar1);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uVar1);
      }
    }
    (**(code **)(*param_1 + 0x3c))(local_28);
  }
  ExceptionList = local_c;
  return 1;
}



void FUN_00975100(char *param_1)

{
  if (*param_1 == '\0') {
    **(char **)(param_1 + 4) = param_1[8];
  }
  return;
}



undefined4 FUN_00975120(LPMSG param_1)

{
  int **ppiVar1;
  char cVar2;
  int *piVar3;
  uint uVar4;
  HWND hWnd;
  BOOL BVar5;
  int *piVar6;
  
  hWnd = param_1->hwnd;
  piVar3 = (int *)FUN_00910ab0(hWnd);
  while( true ) {
    if (piVar3 != (int *)0x0) {
      piVar6 = piVar3;
      if (DAT_032e1340 != (int *)0x0) {
        while( true ) {
          if (piVar6 == (int *)0x0) {
            if (param_1->message == 0xf) {
              ValidateRect(hWnd,(RECT *)0x0);
            }
            return 1;
          }
          if (piVar6 == DAT_032e1340) break;
          piVar6 = (int *)piVar6[0x11];
        }
      }
      if ((param_1->message == 0x200) && (cVar2 = (**(code **)(*piVar3 + 0x2c4))(), cVar2 != '\0'))
      {
        FUN_0098e9c0(param_1);
      }
      cVar2 = (**(code **)(*piVar3 + 0x300))(param_1);
      piVar6 = piVar3;
      if (cVar2 != '\0') {
        do {
          cVar2 = (**(code **)(*piVar6 + 0x308))(param_1);
          if (cVar2 != '\0') {
            return 1;
          }
          cVar2 = (**(code **)(*piVar6 + 0x11c))();
        } while ((cVar2 == '\0') &&
                (ppiVar1 = (int **)(piVar6 + 0x11), piVar6 = *ppiVar1, *ppiVar1 != (int *)0x0));
        do {
          cVar2 = (**(code **)(*piVar3 + 0x304))(param_1);
          if (cVar2 != '\0') {
            return 1;
          }
          cVar2 = (**(code **)(*piVar3 + 0x11c))();
        } while ((cVar2 == '\0') && (piVar3 = (int *)piVar3[0x11], piVar3 != (int *)0x0));
      }
      return 0;
    }
    if (hWnd == (HWND)0x0) {
      return 0;
    }
    uVar4 = GetWindowLongW(hWnd,-0x10);
    if ((uVar4 & 0x40000000) == 0) break;
    hWnd = GetParent(hWnd);
    piVar3 = (int *)FUN_00910ab0(hWnd);
  }
  if (hWnd == (HWND)0x0) {
    return 0;
  }
  BVar5 = IsDialogMessageW(hWnd,param_1);
  if (BVar5 == 0) {
    return 0;
  }
  return 1;
}



void __thiscall FUN_00975280(int param_1_00,undefined4 *param_1,uint param_2)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  
  if (param_2 != 0) {
    puVar1 = (undefined4 *)operator_new(0x1c);
    if (puVar1 == (undefined4 *)0x0) {
      puVar1 = (undefined4 *)0x0;
    }
    else {
      puVar6 = param_1;
      puVar7 = puVar1;
      for (iVar2 = 7; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar7 = *puVar6;
        puVar6 = puVar6 + 1;
        puVar7 = puVar7 + 1;
      }
    }
    iVar2 = *(int *)(param_1_00 + 4);
    if (puVar1 != (undefined4 *)0x0) {
      FUN_0086a0a0(puVar1,iVar2 * 4 >> 2,param_2);
    }
    uVar4 = 1;
    if (1 < param_2) {
      iVar5 = iVar2 * 4;
      do {
        iVar5 = iVar5 + 4;
        puVar1 = (undefined4 *)operator_new(0x1c);
        if (puVar1 == (undefined4 *)0x0) {
          puVar1 = (undefined4 *)0x0;
        }
        else {
          puVar6 = param_1;
          puVar7 = puVar1;
          for (iVar3 = 7; iVar3 != 0; iVar3 = iVar3 + -1) {
            *puVar7 = *puVar6;
            puVar6 = puVar6 + 1;
            puVar7 = puVar7 + 1;
          }
        }
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar4 + iVar2))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 **)(*(int *)(param_1_00 + 8) + iVar5) = puVar1;
        uVar4 = uVar4 + 1;
      } while (uVar4 < param_2);
    }
  }
  return;
}



void __fastcall FUN_00975360(undefined4 param_1)

{
  FUN_00975100(param_1);
  return;
}



void FUN_00975370(undefined *param_1,undefined4 param_2,undefined param_3)

{
  *param_1 = 0;
  *(undefined4 *)(param_1 + 4) = param_2;
  param_1[8] = param_3;
  return;
}



undefined4 __thiscall FUN_00975390(int param_1_00,uint param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  DWORD idThread;
  int iVar4;
  undefined local_3c [8];
  undefined local_34 [12];
  tagMSG local_28;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdeaf0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  iVar4 = 0;
  *(undefined *)(param_1_00 + 4) = 1;
  *(uint *)(param_1_00 + 8) = param_1;
  FUN_00975370(local_34,(undefined *)(param_1_00 + 4),0,uVar2);
  DAT_032bcb9c = DAT_032bcb9c + 1;
  local_4 = 0;
  FUN_00966410(local_3c,&LAB_00974e70);
  local_4 = CONCAT31(local_4._1_3_,1);
  iVar3 = PeekMessageW(&local_28,(HWND)0x0,0,0,0);
  while ((iVar3 != 0 && (local_28.message != 0x12))) {
    FUN_0086bdf0();
    if (local_28.message == 0xf) {
      if ((param_1 & 1) == 0) {
        if (10 < iVar4) break;
        iVar4 = iVar4 + 1;
      }
LAB_0097544c:
      switch(local_28.message) {
      case 0xa0:
      case 0xa1:
      case 0xa2:
      case 0xa3:
      case 0xa4:
      case 0xa5:
      case 0xa6:
      case 0xa7:
      case 0xa8:
      case 0xa9:
      case 0x100:
      case 0x101:
      case 0x102:
      case 0x103:
      case 0x104:
      case 0x105:
      case 0x106:
      case 0x107:
      case 0x109:
      case 0x10d:
      case 0x10e:
      case 0x10f:
      case 0x111:
      case 0x112:
        goto switchD_0097545e_caseD_a0;
      default:
switchD_0097545e_caseD_aa:
        uVar2 = (-(uint)(local_28.message < 0x400) & 0xffffffe1) + 0x20;
        break;
      case 0x113:
        uVar2 = 8;
      }
    }
    else {
      iVar4 = 0;
      if (0x20a < local_28.message) {
        switch(local_28.message) {
        case 0x281:
        case 0x282:
        case 0x283:
        case 0x284:
        case 0x285:
        case 0x286:
        case 0x290:
        case 0x291:
        case 0x2a1:
        case 0x2a2:
        case 0x2a3:
        case 0x300:
        case 0x301:
        case 0x302:
        case 0x303:
        case 0x304:
        case 0x312:
          goto switchD_0097545e_caseD_a0;
        default:
          goto switchD_0097545e_caseD_aa;
        }
      }
      if (local_28.message < 0x200) goto LAB_0097544c;
switchD_0097545e_caseD_a0:
      uVar2 = 2;
    }
    if ((param_1 & uVar2) == 0) {
      GetMessageW(&local_28,(HWND)0x0,0,0);
      FUN_00975280(&local_28,1);
    }
    else {
      cVar1 = (**(code **)(*DAT_032bcb68 + 0xa0))();
      if (cVar1 == '\0') break;
    }
    iVar3 = PeekMessageW(&local_28,(HWND)0x0,0,0,0);
  }
  if (DAT_032bcb68 != (int *)0x0) {
    (**(code **)(*DAT_032bcb68 + 0x98))();
  }
  idThread = GetCurrentThreadId();
  uVar2 = 0;
  if (*(int *)(param_1_00 + 0x18) != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x18) <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar4 = *(int *)(*(int *)(param_1_00 + 0x1c) + uVar2 * 4);
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x18) <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar3 = *(int *)(*(int *)(param_1_00 + 0x1c) + uVar2 * 4);
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x18) <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      PostThreadMessageW(idThread,*(UINT *)(*(int *)(*(int *)(param_1_00 + 0x1c) + uVar2 * 4) + 4),
                         *(WPARAM *)(iVar3 + 8),*(LPARAM *)(iVar4 + 0xc));
      uVar2 = uVar2 + 1;
    } while (uVar2 < *(uint *)(param_1_00 + 0x18));
  }
  FUN_0086cea0();
  FUN_0086a880();
  local_4 = local_4 & 0xffffff00;
  FUN_00966380(local_3c);
  FUN_00975100(local_34);
  ExceptionList = local_c;
  return 1;
}



undefined ** FUN_00975730(void)

{
  return &PTR_PTR_00d631dc;
}



undefined * FUN_00975740(void)

{
  return &DAT_032e1364;
}



void FUN_00975750(undefined4 param_1,undefined4 param_2,uint param_3)

{
  FUN_008fe490(param_1,param_2,param_3 | 4,0,0xffffffff,0xffffffff);
  return;
}



void __fastcall FUN_00975780(int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*(int *)param_1[0x8b] + 0x18))(param_1);
  if (cVar1 != '\0') {
    (**(code **)(*param_1 + 0xcc))(0);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void thunk_FUN_0044cd6b(void)

{
  FUN_0086aa30();
  FUN_009375f0();
  return;
}



void __fastcall FUN_00975820(int param_1)

{
  *(undefined ***)(param_1 + 0x194) = wxControlContainerBase::vftable;
  FUN_0044cd6b();
  return;
}



void __fastcall FUN_00975830(undefined4 *param_1)

{
  uint uVar1;
  int *piVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdeb42;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxLogDialog::vftable;
  local_4 = 3;
  if (param_1[0x86] != 0) {
    piVar2 = (int *)FUN_009c5c20(1);
    if (piVar2 != (int *)0x0) {
      (**(code **)(*piVar2 + 4))(1);
    }
  }
  local_4._0_1_ = 2;
  FUN_0086aa30(uVar1);
  local_4._0_1_ = 1;
  FUN_0086aa30();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00853f30();
  local_4 = 0xffffffff;
  FUN_00924620();
  ExceptionList = local_c;
  return;
}



void FUN_009758e0(int param_1)

{
  FUN_00923970(*(undefined4 *)(param_1 + 8));
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



void __thiscall FUN_00975900(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxListEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



undefined4 * __fastcall FUN_00975950(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdeb89;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1 = wxLogGui::vftable;
  FUN_00853ce0(0);
  local_4._0_1_ = 1;
  FUN_0086a600(uVar1);
  local_4._0_1_ = 2;
  FUN_0086a600();
  local_4 = CONCAT31(local_4._1_3_,3);
  *(undefined *)((int)param_1 + 0x2e) = 0;
  *(undefined *)((int)param_1 + 0x2d) = 0;
  *(undefined *)(param_1 + 0xb) = 0;
  FUN_00853d00();
  param_1[6] = 0;
  param_1[9] = 0;
  ExceptionList = local_c;
  return param_1;
}



void FUN_009759e0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdebce;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 2;
  FUN_0086aa30(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4._0_1_ = 1;
  FUN_0086aa30();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00853f30();
  local_4 = 0xffffffff;
  FUN_00843cb0();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00975a60(undefined4 param_1_00,byte param_1)

{
  FUN_009759e0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00975a80(undefined4 param_1_00,byte param_1)

{
  FUN_00975830();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_00975aa0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxListEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * __thiscall
FUN_00975b10(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdec06;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044ced6(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1_00 = wxListCtrl::vftable;
  param_1_00[0x6c] = 0;
  param_1_00[0x6d] = 0;
  param_1_00[0x6e] = 0;
  local_4 = 1;
  FUN_009c5be0();
  FUN_009c7aa0(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __fastcall FUN_00975bd0(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdec46;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044ced6(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  local_4 = 0;
  *param_1 = wxNavigationEnabled<class_wxCollapsiblePaneBase>::vftable;
  FUN_00922e80();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0044621e(param_1);
  uVar1 = DAT_032bfe6c;
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = wxObjectEventFunctor::vftable;
    puVar2[1] = 0;
    puVar2[2] = &LAB_009757f0;
    puVar2[3] = 0;
  }
  FUN_008461a0(0xffffffff,0xffffffff,uVar1,puVar2,0);
  uVar1 = DAT_032bfe38;
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = wxObjectEventFunctor::vftable;
    puVar2[1] = 0;
    puVar2[2] = &LAB_00975800;
    puVar2[3] = 0;
  }
  FUN_008461a0(0xffffffff,0xffffffff,uVar1,puVar2,0);
  uVar1 = DAT_032bfe40;
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = wxObjectEventFunctor::vftable;
    puVar2[1] = 0;
    puVar2[2] = FUN_009758e0;
    puVar2[3] = 0;
  }
  FUN_008461a0(0xffffffff,0xffffffff,uVar1,puVar2,0);
  ExceptionList = local_c;
  return param_1;
}



void FUN_00975d00(void)

{
  char cVar1;
  
  cVar1 = FUN_009237b0();
  if (cVar1 == '\0') {
    FUN_00915300();
    return;
  }
  return;
}



void FUN_00975d60(undefined4 param_1)

{
  char cVar1;
  
  FUN_00922de0(param_1);
  FUN_0091bc20(param_1);
  cVar1 = FUN_00922e10();
  FUN_00922dc0(cVar1 == '\0');
  return;
}



int __thiscall FUN_00975da0(int param_1_00,byte param_1)

{
  *(undefined ***)(param_1_00 + 0x194) = wxControlContainerBase::vftable;
  FUN_0044cd6b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_00975dd0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdec86;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00975bd0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1_00 = wxGenericCollapsiblePane::vftable;
  param_1_00[0x73] = 7;
  param_1_00[0x72] = 0;
  *(undefined2 *)(param_1_00 + 0x6e) = 0;
  param_1_00[0x74] = 0;
  local_4 = 1;
  FUN_009c9ec0();
  FUN_009ca5c0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_00975eb0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x1ac);
}



undefined4 __thiscall FUN_00975ec0(undefined4 param_1_00,byte param_1)

{
  FUN_009ca1d0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_00975ee0(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5190;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  FUN_0043c211("wxART_MESSAGE_BOX_C");
  local_4 = 0;
  uVar2 = FUN_00971110(local_54,param_2,uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00972060(param_1,uVar2,local_30,&DAT_03238d04);
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00975fc0(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x1b4,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __fastcall FUN_00976010(int param_1)

{
  tm *_Tm;
  size_t sVar1;
  wchar_t *_Format;
  undefined4 local_202c;
  undefined local_2028 [36];
  wchar_t local_2004 [4096];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_202c;
  local_202c = 0;
  _Tm = (tm *)FUN_008a67b0(&stack0x00000004,local_2028);
  if (*(uint *)(param_1 + 0x18) < 8) {
    _Format = (wchar_t *)(param_1 + 4);
  }
  else {
    _Format = *(wchar_t **)(param_1 + 4);
  }
  sVar1 = _wcsftime(local_2004,0x1000,_Format,_Tm);
  if ((sVar1 == 0) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
    FUN_00840480("..\\..\\src\\generic\\logg.cpp",0x62,"TimeStamp","Assert failure",
                 L"strftime() failed");
  }
  FUN_004325b6(local_2004);
  ___security_check_cookie_4();
  return;
}



void FUN_009760c0(int param_1,int param_2)

{
  undefined4 local_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdecb8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  ExceptionList = &local_c;
  local_38 = 0;
  if ((DAT_032e1360 == 0) || (*(uint *)(param_2 + 0x14) <= DAT_032e1360)) {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(param_2,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
  }
  else {
    local_30 = local_30 & 0xffff0000;
    local_1c = 7;
    local_20 = 0;
    FID_conflict_assign(param_2,0,0xffffffff);
    local_18 = (void *)0x0;
    local_4 = 0;
    FUN_00851a60(DAT_032e1360);
    FUN_0084b060(&DAT_00d640d0);
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009761e0(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  char *pcVar3;
  undefined auStack_150 [12];
  undefined4 uStack_144;
  char *pcStack_140;
  undefined4 uStack_13c;
  char *pcStack_138;
  char *pcStack_134;
  undefined4 local_118;
  undefined local_114 [4];
  uint local_110;
  undefined4 local_100;
  uint local_fc;
  void *local_f8;
  undefined local_f0 [4];
  uint local_ec;
  undefined4 local_dc;
  uint local_d8;
  void *local_d4;
  undefined4 local_cc;
  undefined *local_c8;
  undefined local_c4 [4];
  uint local_c0;
  undefined4 local_b0;
  uint local_ac;
  void *local_a8;
  uint local_88;
  void *local_84;
  uint local_64;
  void *local_60;
  uint local_40;
  void *local_3c;
  char local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bded51;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_118;
  ExceptionList = &local_c;
  local_118 = 0;
  local_cc = param_1;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 1;
  if (*(char *)(param_1_00 + 0x2c) == '\0') {
    uVar1 = -(uint)(*(char *)(param_1_00 + 0x2d) != '\0') & 0xfffff900;
    if (uVar1 == 0xfffff900) {
      pcStack_134 = (char *)0x976487;
      FUN_004325b6();
      local_4._0_1_ = 4;
      pcStack_134 = (char *)0x97649d;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,5);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        pcStack_134 = (char *)0x9764ce;
        pcVar3 = (char *)FUN_0084d360();
      }
      else {
        pcStack_134 = local_f0;
        pcStack_138 = (char *)0x9764c2;
        pcVar3 = (char *)FUN_0084f210();
      }
      if (local_34 != pcVar3) {
        pcStack_134 = (char *)0x0;
        uStack_13c = 0x9764e5;
        pcStack_138 = pcVar3;
        FID_conflict_assign();
      }
      pcStack_134 = (char *)0x9764ef;
      _free(local_d4);
      if (7 < local_d8) {
                    // WARNING: Subroutine does not return
        pcStack_134 = &UNK_00976507;
        FUN_00a3f6a1();
      }
      local_d8 = 7;
      local_dc = 0;
      local_ec = local_ec & 0xffff0000;
      local_4 = CONCAT31(local_4._1_3_,1);
      pcStack_134 = (char *)0x97652e;
      _free(local_84);
      local_64 = local_88;
      goto joined_r0x00976380;
    }
    if (uVar1 != 0xfffffa00) {
      if ((uVar1 != 0) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
        pcStack_134 = "Assert failure";
        pcStack_138 = "wxLogGui::GetTitle";
        uStack_13c = 0xf3;
        pcStack_140 = "..\\..\\src\\generic\\logg.cpp";
        uStack_144 = 0x9762b9;
        FUN_008402e0();
      }
      pcStack_134 = (char *)0x9762cf;
      FUN_004325b6();
      local_4._0_1_ = 6;
      pcStack_134 = (char *)0x9762e5;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,7);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        pcStack_134 = (char *)0x976316;
        pcVar3 = (char *)FUN_0084d360();
      }
      else {
        pcStack_134 = local_114;
        pcStack_138 = (char *)0x97630a;
        pcVar3 = (char *)FUN_0084f210();
      }
      if (local_34 != pcVar3) {
        pcStack_134 = (char *)0x0;
        uStack_13c = 0x97632d;
        pcStack_138 = pcVar3;
        FID_conflict_assign();
      }
      pcStack_134 = (char *)0x976337;
      _free(local_f8);
      if (7 < local_fc) {
                    // WARNING: Subroutine does not return
        pcStack_134 = &UNK_0097634f;
        FUN_00a3f6a1();
      }
      local_fc = 7;
      local_100 = 0;
      local_110 = local_110 & 0xffff0000;
      local_4 = CONCAT31(local_4._1_3_,1);
      pcStack_134 = (char *)0x976376;
      _free(local_60);
      goto joined_r0x00976380;
    }
  }
  pcStack_134 = (char *)0x9763a5;
  FUN_004325b6();
  local_4._0_1_ = 2;
  pcStack_134 = (char *)0x9763bb;
  FUN_0043c211();
  local_4 = CONCAT31(local_4._1_3_,3);
  iVar2 = FUN_0084a340();
  if (iVar2 == 0) {
    pcStack_134 = (char *)0x9763ec;
    pcVar3 = (char *)FUN_0084d360();
  }
  else {
    pcStack_134 = local_c4;
    pcStack_138 = (char *)0x9763e0;
    pcVar3 = (char *)FUN_0084f210();
  }
  if (local_34 != pcVar3) {
    pcStack_134 = (char *)0x0;
    uStack_13c = 0x976403;
    pcStack_138 = pcVar3;
    FID_conflict_assign();
  }
  pcStack_134 = (char *)0x976410;
  _free(local_a8);
  if (7 < local_ac) {
                    // WARNING: Subroutine does not return
    pcStack_134 = &UNK_0097642b;
    FUN_00a3f6a1();
  }
  local_ac = 7;
  local_b0 = 0;
  local_c0 = local_c0 & 0xffff0000;
  local_4 = CONCAT31(local_4._1_3_,1);
  pcStack_134 = (char *)0x976458;
  _free(local_3c);
  local_64 = local_40;
joined_r0x00976380:
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    pcStack_134 = &UNK_00976547;
    FUN_00a3f6a1();
  }
  pcStack_134 = (char *)0x97655b;
  FUN_008433c0();
  local_c8 = auStack_150;
  local_4._0_1_ = 8;
  FUN_00841240(auStack_150);
  FUN_0084ae90(param_1,local_114);
  local_118 = 1;
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0081b5bc();
  pcStack_134 = (char *)0x9765ae;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    pcStack_134 = &UNK_009765c7;
    FUN_00a3f6a1();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00976600(int param_1_00,int *param_1,undefined4 param_2,int param_3)

{
  void **ppvVar1;
  char cVar2;
  int *piVar3;
  int iVar4;
  uint uVar5;
  undefined local_30 [28];
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  uVar5 = (uint)param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  if (10000 < param_1) {
    return;
  }
  if (param_1 == (int *)0x2710) {
switchD_0097664c_caseD_0:
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    ExceptionList = &local_c;
    FUN_008402e0("..\\..\\src\\generic\\logg.cpp",0x1aa,"wxLogGui::DoLogRecord","Assert failure",
                 "unexpected log level",DAT_0323f878 ^ (uint)&stack0xffffffc4);
    ExceptionList = local_c;
    return;
  }
  ppvVar1 = &local_c;
  switch(param_1) {
  case (int *)0x0:
    goto switchD_0097664c_caseD_0;
  case (int *)0x1:
    ExceptionList = &local_c;
    if (*(char *)(param_1_00 + 0x2c) == '\0') {
      *(undefined *)(param_1_00 + 0x2c) = 1;
      ppvVar1 = (void **)ExceptionList;
      goto switchD_0097664c_caseD_2;
    }
    break;
  case (int *)0x2:
switchD_0097664c_caseD_2:
    ExceptionList = ppvVar1;
    if (*(char *)(param_1_00 + 0x2c) == '\0') {
      *(undefined *)(param_1_00 + 0x2d) = 1;
    }
    break;
  case (int *)0x4:
    param_1 = (int *)0x0;
    ExceptionList = &local_c;
    FUN_0043c211("wx.frame");
    local_4 = 0;
    cVar2 = FUN_00843390(local_30,&param_1);
    local_4 = 0xffffffff;
    FUN_0040159c();
    if ((cVar2 == '\0') || (piVar3 = param_1, param_1 == (int *)0x0)) {
      piVar3 = (int *)(**(code **)(*DAT_032bcb68 + 0xd4))();
      if (piVar3 == (int *)0x0) {
        ExceptionList = local_c;
        return;
      }
      cVar2 = FUN_0083e950(&PTR_u_wxFrame_03239cfc);
      if (cVar2 == '\0') {
        ExceptionList = local_c;
        return;
      }
    }
    iVar4 = (**(code **)(*piVar3 + 0x3a8))();
    if (iVar4 == 0) {
      ExceptionList = local_c;
      return;
    }
    (**(code **)(*piVar3 + 0x3b0))(param_2,0);
    ExceptionList = pvStack_14;
    return;
  case (int *)0x5:
    if (DAT_032bcb95 == '\0') {
      return;
    }
  case (int *)0x3:
    ExceptionList = &local_c;
    FUN_00854700(param_2,1);
    uVar5 = 3;
    goto LAB_0097674b;
  case (int *)0x6:
  case (int *)0x7:
    ExceptionList = &local_c;
    FUN_00844210(param_1,param_2,param_3);
    ExceptionList = local_c;
    return;
  default:
    return;
  }
  FUN_00854700(param_2,1);
LAB_0097674b:
  FUN_0086a400(uVar5,1);
  FUN_0086a400(*(undefined4 *)(param_3 + 0x10),1);
  *(undefined *)(param_1_00 + 0x2e) = 1;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00976810(int *param_1_00,undefined4 param_1)

{
  short *psVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  short *psVar6;
  undefined *puVar7;
  int iVar8;
  int unaff_EBX;
  void *pvVar9;
  undefined4 uStack_c8;
  void *local_c4;
  int *local_c0;
  uint local_bc;
  undefined4 local_b8;
  undefined4 uStack_b4;
  undefined local_b0 [4];
  uint local_ac;
  undefined4 local_9c;
  uint local_98;
  void *local_94 [2];
  void *pvStack_8c;
  undefined local_84 [4];
  uint local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  undefined auStack_58 [4];
  uint uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_44;
  uint uStack_40;
  void *pvStack_3c;
  void *pvStack_38;
  undefined2 local_30;
  void *pvStack_2c;
  int local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdee31;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&uStack_c8;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_c;
  local_bc = 0;
  local_1c = 7;
  local_20 = 0;
  local_30 = 0;
  FID_conflict_assign(&DAT_03235ef0,0,0xffffffff);
  local_18 = 0;
  local_4 = 0;
  uStack_c8._0_3_ = CONCAT12(local_20 != 0,(undefined2)uStack_c8);
  local_c4 = operator_new(0x1c0);
  local_4._0_1_ = 1;
  if (local_c4 == (void *)0x0) {
    iVar4 = 0;
  }
  else {
    FUN_0043c211("listCtrl");
    local_4 = CONCAT31(local_4._1_3_,2);
    local_bc = 1;
    iVar4 = FUN_00975b10(param_1,0xffffffff,&DAT_03238d0c,&DAT_03238d04,&DAT_02002820,&DAT_032c0398,
                         local_b0);
  }
  param_1_00[0x86] = iVar4;
  local_4 = 0;
  if (((local_bc & 1) != 0) && (_free(local_94[0]), 7 < local_98)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_ac,uVar3);
  }
  FUN_004325b6(L"Message");
  local_4._0_1_ = 4;
  FUN_009c8e20(0,local_b0,0,0xffffffff);
  local_4._0_1_ = 0;
  _free(local_94[0]);
  if (7 < local_98) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_ac);
  }
  if (uStack_c8._2_1_ != '\0') {
    FUN_004325b6(L"Time");
    local_4._0_1_ = 5;
    FUN_009c8e20(1,local_b0,0,0xffffffff);
    local_4._0_1_ = 0;
    _free(local_94[0]);
    if (7 < local_98) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_ac);
    }
  }
  local_c4 = operator_new(0xc);
  local_4._0_1_ = 6;
  if (local_c4 == (void *)0x0) {
    uVar5 = 0;
  }
  else {
    uVar5 = FUN_0093e480(0x10,0x10,1,1);
  }
  local_4._0_1_ = 0;
  uStack_c8 = CONCAT13(1,(undefined3)uStack_c8);
  uVar3 = 0;
  while( true ) {
    FUN_0043c211("wxART_MESSAGE_BOX_C");
    local_4._0_1_ = 7;
    FUN_0043c211(*(undefined4 *)((int)&PTR_s_wxART_ERROR_00d64170 + uVar3));
    local_bc = 0x10;
    local_b8 = 0x10;
    local_4._0_1_ = 8;
    FUN_00971c50(&local_c4,local_b0,local_84,&local_bc);
    _free(local_94[0]);
    if (7 < local_98) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_ac);
    }
    local_98 = 7;
    local_9c = 0;
    local_ac = local_ac & 0xffff0000;
    local_4._0_1_ = 0xb;
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_80);
    }
    local_6c = 7;
    local_70 = 0;
    local_80 = local_80 & 0xffff0000;
    if ((local_c0 == (int *)0x0) || (cVar2 = (**(code **)(*local_c0 + 4))(), cVar2 == '\0')) break;
    FUN_009b6f70(&local_c4,&PTR_vftable_03238cc8);
    local_4._0_1_ = 0;
    FUN_008f7630();
    uVar3 = uVar3 + 4;
    if (0xb < uVar3) {
LAB_00976b4a:
      FUN_009c6130(uVar5,1);
      local_c4 = (void *)param_1_00[0x7d];
      pvStack_8c = (void *)0x0;
      if (local_c4 != (void *)0x0) {
        local_bc = 0;
        do {
          pvVar9 = pvStack_8c;
          if (uStack_c8._3_1_ == '\0') {
            uStack_b4 = 0xffffffff;
          }
          else {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((void *)param_1_00[0x81] <= pvStack_8c))
            {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,
                           "wxBaseArrayInt::Item","uiIndex < m_nCount",0);
            }
            iVar4 = *(int *)(param_1_00[0x82] + (int)pvVar9 * 4);
            if (iVar4 == 1) {
              uStack_b4 = 0;
            }
            else if (iVar4 == 2) {
              uStack_b4 = 1;
            }
            else {
              uStack_b4 = 2;
            }
          }
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((void *)param_1_00[0x7d] <= pvVar9)) {
            FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                         "nIndex < m_nCount",L"wxArrayString: index out of bounds");
          }
          uStack_40 = 7;
          uStack_44 = 0;
          uStack_54 = uStack_54 & 0xffff0000;
          FID_conflict_assign(param_1_00[0x7e] + local_bc,0,0xffffffff);
          pvStack_3c = (void *)0x0;
          local_ac = local_ac & 0xffff0000;
          local_4._0_1_ = 0xc;
          local_98 = 7;
          local_9c = 0;
          psVar1 = &DAT_00d1fc10;
          do {
            psVar6 = psVar1;
            psVar1 = psVar6 + 1;
          } while (*psVar6 != 0);
          FID_conflict_assign(&DAT_00d1fc10,(int)(psVar6 + -0x68fe08) >> 1);
          local_94[0] = (void *)0x0;
          local_4._0_1_ = 0xd;
          local_6c = 7;
          local_70 = 0;
          local_80 = local_80 & 0xffff0000;
          psVar1 = &DAT_00d23e68;
          do {
            psVar6 = psVar1;
            psVar1 = psVar6 + 1;
          } while (*psVar6 != 0);
          FID_conflict_assign(&DAT_00d23e68,(int)(psVar6 + -0x691f34) >> 1);
          local_68 = (void *)0x0;
          local_4._0_1_ = 0xe;
          FUN_00852a70(local_84,local_b0,1);
          _free(local_68);
          if (7 < local_6c) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_80);
          }
          local_6c = 7;
          local_70 = 0;
          local_80 = local_80 & 0xffff0000;
          local_4._0_1_ = 0xc;
          _free(local_94[0]);
          if (7 < local_98) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_ac);
          }
          puVar7 = (undefined *)FUN_009760c0(local_b0,auStack_58);
          local_4._0_1_ = 0xf;
          if (auStack_58 != puVar7) {
            FID_conflict_assign(puVar7,0,0xffffffff);
          }
          local_4 = CONCAT31(local_4._1_3_,0xc);
          _free(local_94[0]);
          pvVar9 = pvStack_8c;
          if (7 < local_98) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_ac);
          }
          FUN_009c7bf0(pvStack_8c,auStack_58,uStack_b4);
          if (uStack_c8._2_1_ != '\0') {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((void *)param_1_00[0x84] <= pvVar9)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x344,
                           "wxBaseArrayLong::Item","uiIndex < m_nCount",0);
            }
            iVar4 = *(int *)(param_1_00[0x85] + (int)pvVar9 * 4);
            uVar5 = FUN_00976010(iVar4,iVar4 >> 0x1f);
            local_4 = CONCAT31(local_4._1_3_,0x10);
            FUN_009c8680(pvStack_8c,1,uVar5,0xffffffff);
            _free(local_94[0]);
            pvVar9 = pvStack_8c;
            if (7 < local_98) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1(local_ac);
            }
          }
          local_4._0_1_ = 0;
          _free(pvStack_3c);
          if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(uStack_54);
          }
          local_bc = local_bc + 0x24;
          pvStack_8c = (void *)((int)pvVar9 + 1);
        } while (pvStack_8c < local_c4);
      }
      pvVar9 = local_c4;
      FUN_009c6040(0,0xffffffff);
      if (uStack_c8._2_1_ != '\0') {
        FUN_009c6040(1,0xffffffff);
      }
      iVar8 = (**(code **)(*param_1_00 + 0x194))();
      iVar8 = iVar8 * ((int)pvVar9 + 4U);
      (**(code **)(*param_1_00 + 0x270))(&uStack_b4,&local_c4);
      iVar4 = (**(code **)(*param_1_00 + 0xa4))(local_94);
      uStack_c8 = *(int *)(iVar4 + 4);
      iVar4 = FUN_008f78a0(&local_6c);
      iVar4 = (int)((*(int *)(iVar4 + 4) + uStack_c8 * -2) * 9 + unaff_EBX * -9) / 10;
      if (iVar8 < iVar4) {
        iVar4 = iVar8;
      }
      (**(code **)(*(int *)param_1_00[0x86] + 0x288))(0xffffffff,0xffffffff,0xffffffff,iVar4,0);
      _free(pvStack_38);
      if (pvStack_3c < (void *)0x8) {
        ExceptionList = pvStack_2c;
        ___security_check_cookie_4();
        return;
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
  }
  uStack_c8 = uStack_c8 & 0xffffff;
  local_4._0_1_ = 0;
  FUN_008f7630();
  goto LAB_00976b4a;
}



void __thiscall FUN_00976fc0(int param_1_00,int param_1)

{
  uint uVar1;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdcc30;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_58;
  ExceptionList = &local_c;
  uVar1 = *(uint *)(param_1 + 0x68);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 500) <= uVar1)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                 "nIndex < m_nCount",L"wxArrayString: index out of bounds",
                 DAT_0323f878 ^ (uint)&stack0xffffffa0);
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = (uint)local_30._2_2_ << 0x10;
  FID_conflict_assign(*(int *)(param_1_00 + 0x1f8) + uVar1 * 0x24,0,0xffffffff);
  local_18 = (void *)0x0;
  local_4 = 0;
  FUN_004325b6(L"Log message");
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_008fe490(local_34,local_58,4,param_1_00,0xffffffff,0xffffffff);
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00977100(undefined4 param_1)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  undefined *puStack_180;
  undefined *puStack_17c;
  undefined4 local_160;
  undefined local_15c [4];
  uint local_158;
  undefined4 local_148;
  uint local_144;
  void *local_140;
  undefined *local_138;
  undefined local_134 [4];
  uint local_130;
  undefined4 local_120;
  uint local_11c;
  void *local_118;
  undefined **local_110;
  undefined local_10c [4];
  uint local_108;
  undefined4 local_f8;
  uint local_f4;
  void *local_f0;
  undefined local_e8 [4];
  uint local_e4;
  undefined4 local_d4;
  uint local_d0;
  void *local_cc;
  undefined local_c4 [4];
  uint local_c0;
  undefined4 local_b0;
  uint local_ac;
  void *local_a8;
  undefined local_a0 [24];
  uint local_88;
  void *local_84;
  undefined local_58 [20];
  int local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined2 local_30;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdeedb;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_160;
  ExceptionList = &local_c;
  local_160 = param_1;
  puStack_17c = (undefined *)0x97715d;
  FUN_004325b6();
  local_4 = 0;
  puStack_17c = (undefined *)0x977177;
  FUN_004325b6();
  local_4._0_1_ = 1;
  puStack_17c = (undefined *)0x97718d;
  FUN_004325b6();
  puStack_17c = local_e8;
  puStack_180 = local_c4;
  local_4._0_1_ = 2;
  FUN_0096a060(local_58,local_10c);
  _free(local_f0);
  if (7 < local_f4) {
                    // WARNING: Subroutine does not return
    puStack_17c = &UNK_009771e0;
    FUN_00a3f6a1();
  }
  local_f4 = 7;
  local_f8 = 0;
  local_108 = local_108 & 0xffff0000;
  puStack_17c = (undefined *)0x977207;
  _free(local_a8);
  if (7 < local_ac) {
                    // WARNING: Subroutine does not return
    puStack_17c = &UNK_00977220;
    FUN_00a3f6a1();
  }
  local_ac = 7;
  local_b0 = 0;
  local_c0 = local_c0 & 0xffff0000;
  local_4._0_1_ = 6;
  puStack_17c = (undefined *)0x977250;
  _free(local_cc);
  if (7 < local_d0) {
                    // WARNING: Subroutine does not return
    puStack_17c = &UNK_00977269;
    FUN_00a3f6a1();
  }
  local_d0 = 7;
  local_d4 = 0;
  local_e4 = local_e4 & 0xffff0000;
  if (local_44 == 0) {
    puStack_17c = (undefined *)0x97729a;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      puStack_17c = &UNK_009772b3;
      FUN_00a3f6a1();
    }
  }
  else {
    puStack_17c = (undefined *)0x9772cb;
    cVar1 = thunk_FUN_00855b70();
    if (cVar1 == '\0') {
      puStack_17c = (undefined *)0x0;
      puStack_180 = local_58;
      FUN_00888500();
    }
    else {
      local_1c = 7;
      local_20 = 0;
      local_30 = 0;
      local_18 = 0;
      local_4._0_1_ = 7;
      puStack_17c = (undefined *)0x97730f;
      FUN_004325b6();
      local_4._0_1_ = 8;
      puStack_17c = (undefined *)0x977325;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,9);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        puStack_17c = (undefined *)0x977356;
        FUN_0084d360();
      }
      else {
        puStack_17c = local_15c;
        puStack_180 = (undefined *)0x97734a;
        FUN_0084f210();
      }
      puStack_17c = (undefined *)0x977363;
      FUN_008433c0();
      local_110 = &puStack_180;
      local_4._0_1_ = 10;
      FUN_00432231(&puStack_180);
      FUN_0085cc60(local_134);
      local_4._0_1_ = 9;
      FUN_0081b5bc();
      puStack_17c = (undefined *)0x9773ad;
      _free(local_140);
      if (7 < local_144) {
                    // WARNING: Subroutine does not return
        puStack_17c = &UNK_009773c0;
        FUN_00a3f6a1();
      }
      local_144 = 7;
      local_148 = 0;
      local_158 = local_158 & 0xffff0000;
      local_4._0_1_ = 7;
      puStack_17c = (undefined *)0x9773e6;
      _free(local_84);
      if (7 < local_88) {
                    // WARNING: Subroutine does not return
        puStack_17c = &UNK_009773ff;
        FUN_00a3f6a1();
      }
      puStack_17c = (undefined *)0x977412;
      FUN_004325b6();
      local_4._0_1_ = 0xb;
      puStack_17c = (undefined *)0x977428;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,0xc);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        puStack_17c = (undefined *)0x977456;
        uVar3 = FUN_0084d360();
      }
      else {
        puStack_17c = local_15c;
        puStack_180 = (undefined *)0x97744a;
        uVar3 = FUN_0084f210();
      }
      puStack_17c = (undefined *)0xffffffff;
      puStack_180 = (undefined *)0x0;
      iVar2 = FUN_008fe490(local_34,uVar3,0x41a);
      _free(local_140);
      if (7 < local_144) {
                    // WARNING: Subroutine does not return
        puStack_17c = &UNK_00977490;
        FUN_00a3f6a1();
      }
      local_144 = 7;
      local_148 = 0;
      local_158 = local_158 & 0xffff0000;
      local_4._0_1_ = 7;
      puStack_17c = (undefined *)0x9774b3;
      _free(local_118);
      if (7 < local_11c) {
                    // WARNING: Subroutine does not return
        puStack_17c = &UNK_009774c6;
        FUN_00a3f6a1();
      }
      local_130 = local_130 & 0xffff0000;
      local_11c = 7;
      local_120 = 0;
      if (iVar2 == 2) {
        puStack_17c = (undefined *)0x3;
        puStack_180 = local_58;
        FUN_008887a0();
        local_4._0_1_ = 6;
        FUN_0040159c();
      }
      else {
        if (iVar2 != 8) {
          if (iVar2 == 0x10) {
            FUN_0040159c();
            FUN_0040159c();
            goto LAB_0097766a;
          }
          if (PTR_FUN_03235c4c != (undefined *)0x0) {
            puStack_17c = (undefined *)0x977513;
            FUN_004325b6();
            local_4._0_1_ = 0xd;
            puStack_17c = (undefined *)0x97752c;
            FUN_0043c211();
            puStack_17c = local_a0;
            local_4._0_1_ = 0xe;
            puStack_180 = (undefined *)0x977549;
            puStack_180 = (undefined *)FUN_00820bf9();
            FUN_008401a0("..\\..\\src\\generic\\logg.cpp",0x41c,"OpenLogFile","Assert failure");
            FUN_0040159c();
            local_4._0_1_ = 7;
            FUN_0040159c();
          }
        }
        puStack_17c = (undefined *)0x1;
        puStack_180 = local_58;
        FUN_00888500();
        local_4._0_1_ = 6;
        FUN_0040159c();
      }
    }
    if ((local_138 != (undefined *)0x0) && (local_138 != local_58)) {
      puStack_17c = (undefined *)0x0;
      puStack_180 = local_58;
      FID_conflict_assign();
    }
    puStack_17c = (undefined *)0x97764c;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      puStack_17c = &UNK_00977665;
      FUN_00a3f6a1();
    }
  }
LAB_0097766a:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_009776a0(int *param_1)

{
  undefined uVar1;
  code *pcVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  undefined4 uVar13;
  int local_84;
  int local_80;
  int local_7c;
  int local_78;
  int local_74;
  int local_70;
  int local_6c;
  int local_68;
  int local_64;
  int local_60;
  undefined local_5c;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 uStack_30;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00bdef3b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_84;
  ExceptionList = &local_c;
  thunk_FUN_00843980(DAT_0323f878 ^ (uint)&stack0xffffff6c);
  if (*(char *)((int)param_1 + 0x2e) != '\0') {
    *(undefined *)((int)param_1 + 0x2e) = 0;
    iVar12 = FUN_00843980();
    local_6c = param_1[2];
    if (iVar12 != 0) {
      thunk_FUN_004325d6(local_6c + -1);
      FUN_0084b060(&DAT_00d2acd8);
      uVar13 = thunk_FUN_004325d6(local_6c + -2);
      FID_conflict_append(uVar13,0,0xffffffff);
      FUN_0084b060(&DAT_03065e6c);
    }
    FUN_009761e0(local_34);
    local_4 = 0;
    if (*(char *)(param_1 + 0xb) == '\0') {
      iVar12 = (-(uint)(*(char *)((int)param_1 + 0x2d) != '\0') & 0xfffff900) + 0x800;
    }
    else {
      iVar12 = 0x200;
    }
    DAT_032bcb9c = DAT_032bcb9c + 1;
    if (local_6c == 1) {
      uVar13 = thunk_FUN_004325d6(0);
      local_40 = 7;
      local_44 = 0;
      local_54 = local_54 & 0xffff0000;
      FID_conflict_assign(uVar13,0,0xffffffff);
      local_3c = (void *)0x0;
      local_4 = CONCAT31(local_4._1_3_,1);
      *(undefined *)((int)param_1 + 0x2e) = 0;
      *(undefined *)((int)param_1 + 0x2d) = 0;
      *(undefined *)(param_1 + 0xb) = 0;
      FUN_00853d00();
      pcVar2 = *(code **)(*param_1 + 0x14);
      param_1[6] = 0;
      param_1[9] = 0;
      (*pcVar2)(local_58,local_34,iVar12);
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_54);
      }
    }
    else {
      FUN_00853ce0(0);
      local_4._0_1_ = 2;
      FUN_0086a600();
      local_4._0_1_ = 3;
      FUN_0086a600();
      iVar3 = param_1[1];
      param_1[1] = local_68;
      iVar4 = param_1[2];
      param_1[2] = local_64;
      iVar5 = param_1[3];
      param_1[3] = local_60;
      uVar1 = *(undefined *)(param_1 + 4);
      *(undefined *)(param_1 + 4) = local_5c;
      iVar6 = param_1[5];
      param_1[5] = local_84;
      iVar7 = param_1[6];
      param_1[6] = local_80;
      iVar8 = param_1[7];
      param_1[7] = local_7c;
      iVar9 = param_1[8];
      param_1[8] = local_78;
      iVar10 = param_1[9];
      param_1[9] = local_74;
      iVar11 = param_1[10];
      param_1[10] = local_70;
      local_4._0_1_ = 4;
      *(undefined *)((int)param_1 + 0x2e) = 0;
      *(undefined *)((int)param_1 + 0x2d) = 0;
      *(undefined *)(param_1 + 0xb) = 0;
      local_84 = iVar6;
      local_80 = iVar7;
      local_7c = iVar8;
      local_78 = iVar9;
      local_74 = iVar10;
      local_70 = iVar11;
      local_68 = iVar3;
      local_64 = iVar4;
      local_60 = iVar5;
      local_5c = uVar1;
      FUN_00853d00();
      pcVar2 = *(code **)(*param_1 + 0x18);
      param_1[6] = 0;
      param_1[9] = 0;
      (*pcVar2)(&local_68,&local_84,&local_78,local_34,iVar12);
      local_4._0_1_ = 3;
      FUN_0086aa30();
      local_4._0_1_ = 2;
      FUN_0086aa30();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00853f30();
    }
    DAT_032bcb9c = DAT_032bcb9c + -1;
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00977990(int *param_1_00,undefined4 param_1,int param_2,uint param_3,int param_4,
            undefined4 param_5,undefined4 param_6)

{
  short sVar1;
  undefined4 *puVar2;
  undefined uVar3;
  uint uVar4;
  int iVar5;
  undefined *puVar6;
  int *piVar7;
  int iVar8;
  undefined4 *puVar9;
  undefined4 uVar10;
  int *piVar11;
  undefined4 uVar12;
  short *psVar13;
  short *psVar14;
  uint unaff_EBP;
  int unaff_ESI;
  uint uVar15;
  undefined4 unaff_EDI;
  uint local_c0;
  undefined4 uStack_bc;
  undefined4 *local_b8;
  undefined4 *local_b4;
  undefined4 local_b0;
  undefined4 *local_ac;
  undefined4 *local_a8;
  int local_a4;
  int local_a0;
  uint local_9c;
  undefined local_98 [4];
  uint local_94;
  undefined4 uStack_8c;
  uint uStack_88;
  void *local_84;
  uint local_80;
  void *local_7c;
  uint uStack_78;
  undefined local_74 [4];
  undefined4 local_70;
  undefined4 uStack_68;
  uint uStack_64;
  void *pvStack_60;
  uint local_5c;
  void *local_58;
  undefined4 local_50;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  undefined auStack_44 [8];
  int *local_3c;
  undefined local_34 [12];
  uint uStack_28;
  void *pvStack_24;
  void *pvStack_18;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdf189;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_c0;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff30;
  ExceptionList = &local_c;
  local_9c = param_3;
  local_a0 = param_2;
  local_a4 = param_4;
  local_c0 = 0;
  local_3c = param_1_00;
  FUN_0043c211("dialog");
  local_4 = 0;
  FUN_00481a0d(param_1,0xffffffff,param_5,&DAT_03238d0c,&DAT_03238d04,0x20001840,local_98);
  local_4._0_1_ = 2;
  _free(local_7c);
  if (7 < local_80) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_94);
  }
  local_80 = 7;
  local_84 = (void *)0x0;
  local_94 = local_94 & 0xffff0000;
  *param_1_00 = (int)wxLogDialog::vftable;
  FUN_00853ce0(0);
  local_4._0_1_ = 3;
  FUN_0086a600(uVar4);
  local_4._0_1_ = 4;
  FUN_0086a600();
  local_4._0_1_ = 5;
  uVar3 = (undefined)local_4;
  local_4._0_1_ = 5;
  if (DAT_0323ba08 == 0) {
    FUN_0083fc60("&Details");
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = CONCAT31(local_4._1_3_,6);
    iVar5 = FUN_0084a340();
    if (iVar5 == 0) {
      puVar6 = (undefined *)FUN_0084d360(&DAT_0323b9f4);
    }
    else {
      puVar6 = (undefined *)FUN_0084f210(&DAT_0323b9f4,local_74);
    }
    if (puVar6 != &DAT_0323b9f4) {
      FID_conflict_assign(puVar6,0,0xffffffff);
    }
    local_4._0_1_ = 5;
    _free(local_58);
    uVar3 = (undefined)local_4;
    if (7 < local_5c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_70);
    }
  }
  local_4._0_1_ = uVar3;
  if (DAT_032e1360 == 0) {
    piVar7 = (int *)FUN_008f78a0(&local_50);
    iVar5 = *piVar7;
    iVar8 = FUN_00911900();
    DAT_032e1360 = ((iVar5 * 2) / 3) / iVar8;
  }
  uVar4 = *(uint *)(local_a0 + 4);
  FUN_008541b0(uVar4);
  if ((uint)param_1_00[0x80] < uVar4) {
    FUN_0086a310(uVar4);
  }
  if ((uint)param_1_00[0x83] < uVar4) {
    FUN_0086a310(uVar4);
  }
  uVar15 = 0;
  if (uVar4 != 0) {
    local_b8 = (undefined4 *)0x0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(local_a0 + 4) <= uVar15)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      FUN_00854700(*(int *)(local_a0 + 8) + (int)local_b8,1);
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(local_9c + 4) <= uVar15)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                     "uiIndex < m_nCount",0);
      }
      FUN_0086a400(*(undefined4 *)(*(int *)(local_9c + 8) + uVar15 * 4),1);
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(local_a4 + 4) <= uVar15)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x344,"wxBaseArrayLong::Item",
                     "uiIndex < m_nCount",0);
      }
      FUN_0086a400(*(undefined4 *)(*(int *)(local_a4 + 8) + uVar15 * 4),1);
      local_b8 = local_b8 + 9;
      uVar15 = uVar15 + 1;
    } while (uVar15 < uVar4);
  }
  param_1_00[0x86] = 0;
  iVar5 = FUN_009b1bf0();
  uStack_bc = (undefined4 *)CONCAT13(iVar5 < 3,(undefined3)uStack_bc);
  puVar9 = (undefined4 *)operator_new(0x58);
  local_4._0_1_ = 7;
  local_b4 = puVar9;
  if (puVar9 == (undefined4 *)0x0) {
    local_b8 = (undefined4 *)0x0;
  }
  else {
    FUN_00445eb9();
    *puVar9 = wxBoxSizer::vftable;
    puVar9[2] = wxBoxSizer::vftable;
    puVar9[0x14] = 0;
    puVar9[0x15] = 0;
    puVar9[0x12] = 8;
    puVar9[0x13] = 0;
    local_b8 = puVar9;
  }
  local_4._0_1_ = 5;
  local_b4 = (undefined4 *)operator_new(0x58);
  local_4._0_1_ = 9;
  if (local_b4 == (undefined4 *)0x0) {
    local_a4 = 0;
  }
  else {
    local_a4 = FUN_00445f46((uStack_bc._3_1_ != '\0') * '\x04' + '\x04');
  }
  uVar12 = local_a4;
  local_4._0_1_ = 5;
  uVar3 = (undefined)local_4;
  local_4._0_1_ = 5;
  if (uStack_bc._3_1_ == '\0') {
    local_b4 = (undefined4 *)operator_new(0x1a0);
    local_4._0_1_ = 10;
    if (local_b4 == (undefined4 *)0x0) {
      uVar10 = 0;
    }
    else {
      FUN_0043c211("staticBitmap");
      local_4 = CONCAT31(local_4._1_3_,0xb);
      local_c0 = 1;
      uVar10 = FUN_00975ee0(&local_50,param_6);
      local_4 = 0xc;
      local_c0 = 3;
      uVar10 = FUN_0044cb56(param_1_00,0xffffffff,uVar10,&DAT_03238d0c,&DAT_03238d04,0,local_98);
    }
    local_4 = 0xd;
    if ((local_c0 & 2) != 0) {
      local_c0 = local_c0 & 0xfffffffd;
      FUN_008f7630();
    }
    local_4._0_1_ = 5;
    local_4._1_3_ = 0;
    if ((local_c0 & 1) != 0) {
      local_c0 = local_c0 & 0xfffffffe;
      _free(local_7c);
      if (7 < local_80) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_94);
      }
      local_80 = 7;
      local_84 = (void *)0x0;
      local_94 = local_94 & 0xffff0000;
    }
    local_b0 = 0;
    local_a8 = (undefined4 *)0x0;
    local_ac = (undefined4 *)0x900;
    FUN_00938cf0(uVar10,&local_b0);
    uVar3 = (undefined)local_4;
  }
  local_4._0_1_ = uVar3;
  uVar10 = FUN_008a1080();
  FUN_009760c0(local_34,uVar10);
  local_4 = CONCAT31(local_4._1_3_,0xf);
  piVar7 = (int *)FUN_00939e10(local_34);
  piVar11 = (int *)FUN_008f78a0(&local_50);
  iVar5 = *piVar11 / 3;
  if (300 < iVar5) {
    iVar5 = 300;
  }
  (**(code **)(*piVar7 + 0x54))(iVar5,0xffffffff);
  local_b8 = (undefined4 *)0x1;
  local_b4 = (undefined4 *)0x930;
  local_b0 = 5;
  FUN_00938d70(piVar7,&local_b8);
  uStack_bc = (undefined4 *)operator_new(0x1a0);
  local_c._0_1_ = 0x10;
  if (uStack_bc == (undefined4 *)0x0) {
    uVar10 = 0;
  }
  else {
    FUN_0043c211("button");
    local_c = (void *)CONCAT31(local_c._1_3_,0x11);
    psVar14 = (short *)PTR_DAT_03236318;
    if (PTR_DAT_03236318 == (undefined *)0x0) {
      psVar14 = &DAT_00fae9c8;
    }
    uStack_88 = 7;
    uStack_8c = 0;
    local_9c = local_9c & 0xffff0000;
    psVar13 = psVar14;
    do {
      sVar1 = *psVar13;
      psVar13 = psVar13 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(psVar14,(int)psVar13 - (int)(psVar14 + 1) >> 1);
    local_84 = (void *)0x0;
    unaff_EBP = unaff_EBP | 0xc;
    local_c._0_1_ = 0x12;
    local_c._1_3_ = 0;
    uVar10 = FUN_0044c65b(param_1_00,0x13ec,&local_a0,&DAT_03238d0c,&DAT_03238d04,0,&DAT_032c0398,
                          &local_7c);
    uVar12 = local_ac;
  }
  if ((unaff_EBP & 8) != 0) {
    unaff_EBP = unaff_EBP & 0xfffffff7;
    _free(local_84);
    if (7 < uStack_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_9c);
    }
    uStack_88 = 7;
    uStack_8c = 0;
    local_9c = local_9c & 0xffff0000;
  }
  local_c = (void *)0xf;
  if ((unaff_EBP & 4) != 0) {
    unaff_EBP = unaff_EBP & 0xfffffffb;
    _free(pvStack_60);
    if (7 < uStack_64) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_78);
    }
    uStack_64 = 7;
    uStack_68 = 0;
    uStack_78 = uStack_78 & 0xffff0000;
  }
  local_b8 = (undefined4 *)0x0;
  local_b0 = 0;
  local_b4 = (undefined4 *)0x900;
  FUN_00938cf0(uVar10,&local_b8);
  local_b8 = (undefined4 *)0x0;
  local_b4 = (undefined4 *)0x20f0;
  local_b0 = 5;
  FUN_00938d70(uVar12,&local_b8);
  uStack_bc = (undefined4 *)operator_new(0x1d8);
  local_c._0_1_ = 0x15;
  if (uStack_bc == (undefined4 *)0x0) {
    piVar7 = (int *)0x0;
  }
  else {
    FUN_0043c211("collapsiblePane");
    unaff_EBP = unaff_EBP | 0x10;
    local_c = (void *)CONCAT31(local_c._1_3_,0x16);
    piVar7 = (int *)FUN_00975dd0(param_1_00,0xffffffff,&DAT_0323b9f4,&DAT_03238d0c,&DAT_03238d04,
                                 0x280000,&DAT_032c0398,&local_7c);
  }
  local_c = (void *)0xf;
  if ((unaff_EBP & 0x10) != 0) {
    unaff_EBP = unaff_EBP & 0xffffffef;
    _free(pvStack_60);
    if (7 < uStack_64) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_78);
    }
    uStack_64 = 7;
    uStack_68 = 0;
    uStack_78 = uStack_78 & 0xffff0000;
  }
  local_b8 = (undefined4 *)0x1;
  local_b4 = (undefined4 *)0x20f0;
  local_b0 = 5;
  FUN_00938cf0(piVar7,&local_b8);
  uVar12 = (**(code **)(*piVar7 + 0x360))();
  local_a4 = uVar12;
  puVar9 = (undefined4 *)operator_new(0x58);
  local_c._0_1_ = 0x18;
  uStack_bc = puVar9;
  if (puVar9 == (undefined4 *)0x0) {
    local_ac = (undefined4 *)0x0;
  }
  else {
    FUN_00445eb9();
    *puVar9 = wxBoxSizer::vftable;
    puVar9[2] = wxBoxSizer::vftable;
    puVar9[0x14] = 0;
    puVar9[0x15] = 0;
    puVar9[0x12] = 8;
    puVar9[0x13] = 0;
    local_ac = puVar9;
  }
  local_c._0_1_ = 0xf;
  FUN_00976810(uVar12);
  local_b8 = (undefined4 *)0x1;
  local_b4 = (undefined4 *)0x2040;
  local_b0 = 5;
  FUN_00938cf0(param_1_00[0x86],&local_b8);
  puVar9 = (undefined4 *)operator_new(0x58);
  local_c._0_1_ = 0x1a;
  uStack_bc = puVar9;
  if (puVar9 == (undefined4 *)0x0) {
    local_a8 = (undefined4 *)0x0;
  }
  else {
    FUN_00445eb9();
    *puVar9 = wxBoxSizer::vftable;
    puVar9[2] = wxBoxSizer::vftable;
    puVar9[0x14] = 0;
    puVar9[0x15] = 0;
    puVar9[0x12] = 4;
    puVar9[0x13] = 0;
    local_a8 = puVar9;
  }
  local_c._0_1_ = 0xf;
  local_50 = 0;
  uStack_4c = 0x10;
  uStack_48 = 5;
  uStack_bc = (undefined4 *)operator_new(0x1a0);
  local_c._0_1_ = 0x1c;
  if (uStack_bc == (undefined4 *)0x0) {
    uVar12 = 0;
  }
  else {
    FUN_0043c211("button");
    local_c = (void *)CONCAT31(local_c._1_3_,0x1d);
    psVar14 = (short *)PTR_DAT_03236318;
    if (PTR_DAT_03236318 == (undefined *)0x0) {
      psVar14 = &DAT_00fae9c8;
    }
    uStack_88 = 7;
    uStack_8c = 0;
    local_9c = local_9c & 0xffff0000;
    psVar13 = psVar14;
    do {
      sVar1 = *psVar13;
      psVar13 = psVar13 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(psVar14,(int)psVar13 - (int)(psVar14 + 1) >> 1);
    local_84 = (void *)0x0;
    unaff_EBP = unaff_EBP | 0x60;
    local_c = (void *)0x1e;
    uVar12 = FUN_0044c65b(local_a4,0x13a8,&local_a0,&DAT_03238d0c,&DAT_03238d04,0,&DAT_032c0398,
                          &local_7c);
  }
  local_c = (void *)0x20;
  FUN_00938cf0(uVar12,&local_50);
  if ((unaff_EBP & 0x40) != 0) {
    unaff_EBP = unaff_EBP & 0xffffffbf;
    _free(local_84);
    if (7 < uStack_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_9c);
    }
    uStack_88 = 7;
    uStack_8c = 0;
    local_9c = local_9c & 0xffff0000;
  }
  local_c = (void *)0xf;
  if ((unaff_EBP & 0x20) != 0) {
    unaff_EBP = unaff_EBP & 0xffffffdf;
    _free(pvStack_60);
    if (7 < uStack_64) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_78);
    }
  }
  uStack_bc = (undefined4 *)operator_new(0x1a0);
  local_c._0_1_ = 0x21;
  if (uStack_bc == (undefined4 *)0x0) {
    uVar12 = 0;
  }
  else {
    FUN_0043c211("button");
    local_c = (void *)CONCAT31(local_c._1_3_,0x22);
    psVar14 = (short *)PTR_DAT_03236318;
    if (PTR_DAT_03236318 == (undefined *)0x0) {
      psVar14 = &DAT_00fae9c8;
    }
    uStack_88 = 7;
    uStack_8c = 0;
    local_9c = local_9c & 0xffff0000;
    psVar13 = psVar14;
    do {
      sVar1 = *psVar13;
      psVar13 = psVar13 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(psVar14,(int)psVar13 - (int)(psVar14 + 1) >> 1);
    local_84 = (void *)0x0;
    unaff_EBP = unaff_EBP | 0x180;
    local_c = (void *)0x23;
    uVar12 = FUN_0044c65b(local_a4,0x138b,&local_a0,&DAT_03238d0c,&DAT_03238d04,0,&DAT_032c0398,
                          &local_7c);
  }
  puVar9 = local_a8;
  local_c = (void *)0x25;
  FUN_00938cf0(uVar12,&local_50);
  if ((unaff_EBP & 0x100) != 0) {
    unaff_EBP = unaff_EBP & 0xfffffeff;
    _free(local_84);
    if (7 < uStack_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_9c);
    }
    uStack_88 = 7;
    uStack_8c = 0;
    local_9c = local_9c & 0xffff0000;
  }
  local_c = (void *)0xf;
  if ((unaff_EBP & 0x80) != 0) {
    _free(pvStack_60);
    if (7 < uStack_64) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_78);
    }
  }
  puVar2 = local_ac;
  local_b8 = (undefined4 *)0x0;
  local_b4 = (undefined4 *)0x240;
  local_b0 = 5;
  FUN_00938d70(puVar9,&local_b8);
  uVar12 = local_a4;
  FUN_0091c600(puVar2,1);
  FUN_00931b00(uVar12);
  FUN_0091c670(local_c0,1);
  (**(code **)(*param_1_00 + 0x29c))(0xc);
  if ((char)(unaff_EBP >> 0x18) != '\0') {
    (**(code **)(*param_1_00 + 0x270))(auStack_44,&stack0xffffff3c);
    (**(code **)(*param_1_00 + 0x270))(&stack0xffffff38,&uStack_64);
    (**(code **)(*param_1_00 + 0x288))(unaff_EDI,unaff_ESI / 2,0xffffffff,0xffffffff,0);
  }
  _free(pvStack_24);
  if (7 < uStack_28) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_3c);
  }
  ExceptionList = pvStack_18;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00978660(int param_1_00,int param_1)

{
  short sVar1;
  char cVar2;
  uint uVar3;
  uint uVar4;
  undefined4 uVar5;
  short *psVar6;
  short *psVar7;
  undefined4 *puVar8;
  int iVar9;
  uint local_6c;
  int local_68;
  uint local_64;
  undefined4 local_60;
  int local_5c;
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  uint local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdf1e9;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_6c;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff84;
  ExceptionList = &local_c;
  local_60 = 0;
  local_4 = 0;
  local_5c = param_1;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  FID_conflict_assign(&DAT_03235ef0,0,0xffffffff);
  local_18 = (void *)0x0;
  local_4 = 1;
  if (local_20 == 0) {
    FUN_0083fc60(&DAT_00d64254);
  }
  local_64 = *(uint *)(param_1_00 + 500);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  puVar8 = (undefined4 *)(param_1 + 4);
  *(undefined2 *)puVar8 = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_60 = 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 500) == 0)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                 "nIndex < m_nCount",L"wxArrayString: index out of bounds",uVar3);
  }
  uVar4 = *(int *)(*(int *)(param_1_00 + 0x1f8) + 0x14) * local_64;
  uVar3 = *(uint *)(param_1 + 0x14);
  if (((uVar3 <= uVar4) && (*(uint *)(param_1 + 0x18) != uVar4)) &&
     (cVar2 = FUN_004182d2(uVar4,1), cVar2 != '\0')) {
    *(uint *)(param_1 + 0x14) = uVar3;
    if (7 < *(uint *)(param_1 + 0x18)) {
      puVar8 = (undefined4 *)*puVar8;
    }
    *(undefined2 *)((int)puVar8 + uVar3 * 2) = 0;
  }
  local_6c = 0;
  if (local_64 != 0) {
    local_68 = 0;
    do {
      uVar3 = local_6c;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x210) <= local_6c)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x344,"wxBaseArrayLong::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar9 = *(int *)(*(int *)(param_1_00 + 0x214) + uVar3 * 4);
      uVar5 = FUN_00976010(iVar9,iVar9 >> 0x1f);
      local_4._0_1_ = 2;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 500) <= local_6c)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      iVar9 = *(int *)(param_1_00 + 0x1f8) + local_68;
      FID_conflict_append(uVar5,0,0xffffffff);
      FUN_0084b060(&DAT_00fac8a8);
      FID_conflict_append(iVar9,0,0xffffffff);
      psVar6 = (short *)FUN_008a8600(2);
      if (psVar6 == (short *)0x0) {
        psVar6 = &DAT_00fae9c8;
      }
      psVar7 = psVar6;
      do {
        sVar1 = *psVar7;
        psVar7 = psVar7 + 1;
      } while (sVar1 != 0);
      FUN_00473ccc(psVar6,(int)psVar7 - (int)(psVar6 + 1) >> 1);
      local_4 = CONCAT31(local_4._1_3_,1);
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_54);
      }
      local_68 = local_68 + 0x24;
      local_6c = local_6c + 1;
    } while (local_6c < local_64);
  }
  _free(local_18);
  if (local_1c < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_30);
}



void __thiscall
FUN_00978920(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  uint uVar1;
  undefined local_22c [540];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdf22b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_22c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdc8;
  ExceptionList = &local_c;
  FUN_00977990(0,param_1,param_2,param_3,param_4,param_5);
  local_4 = 0;
  *(undefined *)(param_1_00 + 0x2e) = 0;
  *(undefined *)(param_1_00 + 0x2d) = 0;
  *(undefined *)(param_1_00 + 0x2c) = 0;
  FUN_00853d00(uVar1);
  *(undefined4 *)(param_1_00 + 0x18) = 0;
  *(undefined4 *)(param_1_00 + 0x24) = 0;
  FUN_009246b0();
  local_4 = 0xffffffff;
  FUN_00975830();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00978a00(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  FUN_0084d020(param_1 + 10,param_2);
  FUN_004325b6(param_3);
  local_4 = 0;
  FUN_0083f9e0(*param_1,local_30,&stack0x00000010);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  ExceptionList = local_c;
  return;
}



void FUN_00978aa0(void)

{
  bool bVar1;
  char cVar2;
  int *piVar3;
  void *pvVar4;
  int *piVar5;
  int iVar6;
  bool bVar7;
  uint uStack_a4;
  void *pvStack_a0;
  uint uStack_7c;
  void *pvStack_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdf2c1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar7 = false;
  piVar3 = (int *)FUN_00933660();
  if (piVar3 != (int *)0x0) {
    (**(code **)(*piVar3 + 0x10))();
  }
  local_4 = 0;
  cVar2 = (**(code **)(*piVar3 + 0x18))();
  if (cVar2 != '\0') {
    pvVar4 = operator_new(0x30);
    local_4._0_1_ = 1;
    bVar7 = pvVar4 != (void *)0x0;
    if (bVar7) {
      FUN_00978660();
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_00449733();
    }
    local_4 = 3;
    piVar5 = (int *)FUN_00933660();
    cVar2 = (**(code **)(*piVar5 + 0x1c))();
    bVar1 = false;
    if (cVar2 != '\0') goto LAB_00978b72;
  }
  bVar1 = true;
LAB_00978b72:
  local_4 = 0;
  if ((bVar7) && (_free(pvStack_a0), 7 < uStack_a4)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (bVar1) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 != '\0') {
      FUN_004325b6();
      local_4._0_1_ = 4;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,5);
      iVar6 = FUN_0084a340();
      if (iVar6 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 6;
      FUN_008423d0();
      local_4._0_1_ = 7;
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 6;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,5);
      FUN_0081b5bc();
      _free(pvStack_78);
      if (7 < uStack_7c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(pvStack_a0);
      if (7 < uStack_a4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  local_4 = 0xffffffff;
  (**(code **)(*piVar3 + 0x14))();
  ExceptionList = local_c;
  return;
}



void FUN_00978d40(void)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  char cVar4;
  int iVar5;
  uint local_b0;
  void *local_ac;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdf365;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar2 = false;
  bVar1 = false;
  local_4 = 0;
  iVar5 = FUN_00977100();
  if (iVar5 == -1) goto LAB_00978f6c;
  if (iVar5 == 0) {
LAB_00978e08:
    bVar3 = true;
  }
  else {
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00978660();
    bVar2 = true;
    bVar1 = true;
    local_4 = 2;
    cVar4 = FUN_00887740();
    if (cVar4 == '\0') goto LAB_00978e08;
    cVar4 = FUN_008871c0();
    bVar3 = false;
    if (cVar4 == '\0') goto LAB_00978e08;
  }
  if ((bVar1) && (_free(local_ac), 7 < local_b0)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_4 = 0;
  if (bVar2) {
    FUN_008603c0();
  }
  if (bVar3) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar4 = FUN_00846b30(1);
    if (cVar4 != '\0') {
      FUN_004325b6();
      local_4._0_1_ = 3;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,4);
      iVar5 = FUN_0084a340();
      if (iVar5 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 5;
      FUN_008423d0();
      local_4._0_1_ = 6;
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 5;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,4);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
LAB_00978f6c:
  local_4 = 0xffffffff;
  FUN_008871c0();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00978fa0(int param_1)

{
  void *pvVar1;
  char cVar2;
  int iVar3;
  undefined auStack_168 [4];
  undefined4 uStack_164;
  undefined *puStack_160;
  undefined4 uStack_15c;
  int iStack_158;
  undefined auStack_134 [7];
  char local_12d;
  undefined *puStack_12c;
  undefined4 local_128;
  undefined4 local_124;
  uint uStack_11c;
  undefined4 uStack_10c;
  uint uStack_108;
  void *pvStack_104;
  undefined auStack_fc [4];
  uint uStack_f8;
  undefined4 uStack_e8;
  uint uStack_e4;
  void *pvStack_e0;
  undefined4 uStack_d8;
  char *pcStack_d0;
  undefined4 uStack_cc;
  char *pcStack_c8;
  undefined *puStack_c4;
  __time64_t _Stack_c0;
  DWORD DStack_b8;
  int iStack_b4;
  undefined4 uStack_ac;
  undefined4 uStack_9c;
  uint uStack_98;
  void *pvStack_94;
  int local_84;
  undefined **ppuStack_80;
  undefined4 uStack_7c;
  uint uStack_4c;
  void *pvStack_48;
  uint local_3c;
  undefined4 local_2c;
  uint local_28;
  void *local_24;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00bdf426;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_134;
  ExceptionList = &local_14;
  local_28 = 7;
  local_2c = 0;
  local_3c = local_3c & 0xffff0000;
  local_24 = (void *)0x0;
  local_128 = 0xffffffff;
  local_124 = 0;
  local_c._0_1_ = 1;
  local_c._1_3_ = 0;
  local_84 = param_1;
  iVar3 = FUN_00977100();
  if (iVar3 == -1) {
    local_c = (uint)local_c._1_3_ << 8;
    FUN_008871c0();
    _free(local_24);
    pvVar1 = ExceptionList;
    ExceptionList = local_14;
  }
  else {
    local_12d = iVar3 != 0;
    puStack_12c = (undefined *)(**(code **)(*(int *)(*(int *)(param_1 + 0x228) + 0x1d0) + 0xc))();
    iVar3 = 0;
    while (local_12d != '\0') {
      if ((int)puStack_12c <= iVar3) {
        if ((local_12d != '\0') && (cVar2 = FUN_008871c0(), cVar2 != '\0')) {
          puStack_12c = auStack_168;
          FUN_0043c211(&DAT_00d25fa0);
          cVar2 = FUN_00846b30(4);
          if (cVar2 == '\0') goto LAB_00979652;
          FUN_004325b6();
          local_c._0_1_ = 9;
          FUN_0043c211();
          local_c = CONCAT31(local_c._1_3_,10);
          iVar3 = FUN_0084a340();
          if (iVar3 == 0) {
            FUN_0084d360();
          }
          else {
            FUN_0084f210();
          }
          FUN_008433c0();
          local_c._0_1_ = 0xb;
          FUN_0043c211();
          puStack_12c = &stack0xfffffeb0;
          iStack_158 = 0x979491;
          FUN_00432231();
          local_c._0_1_ = 0xd;
          uStack_d8 = 4;
          pcStack_d0 = "..\\..\\src\\generic\\logg.cpp";
          pcStack_c8 = "wxLogFrame::OnSave";
          uStack_cc = 0x24a;
          puStack_c4 = &DAT_00d25fa0;
          iStack_158 = 0x9794d3;
          _Stack_c0 = __time64((__time64_t *)0x0);
          DStack_b8 = GetCurrentThreadId();
          iStack_b4 = 0;
          uStack_98 = 7;
          uStack_9c = 0;
          uStack_ac._0_2_ = 0;
          pvStack_94 = (void *)0x0;
          local_c._0_1_ = 0xe;
          uStack_15c = 0;
          puStack_160 = auStack_fc;
          uStack_164 = 0x97953e;
          iStack_158 = param_1;
          FUN_0084d140();
          local_c._0_1_ = 0xf;
          uStack_15c = 0x97954d;
          FUN_00875be0();
          local_c._0_1_ = 0xc;
          _free(pvStack_94);
          if (7 < uStack_98) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          uStack_ac = (uint)uStack_ac._2_2_ << 0x10;
          uStack_98 = 7;
          uStack_9c = 0;
          if (iStack_b4 != 0) {
            FUN_00841af0();
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          _free(pvStack_e0);
          if (7 < uStack_e4) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          uStack_f8 = uStack_f8 & 0xffff0000;
          uStack_e4 = 7;
          uStack_e8 = 0;
          local_c._0_1_ = 10;
          FUN_0081b5bc();
          _free(pvStack_104);
          if (7 < uStack_108) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1();
          }
          uStack_108 = 7;
          uStack_10c = 0;
          uStack_11c = uStack_11c & 0xffff0000;
          _free(pvStack_48);
          if (uStack_4c < 8) goto LAB_00979652;
          goto LAB_0097964a;
        }
        break;
      }
      ppuStack_80 = wxMBConvUTF8::vftable;
      uStack_7c = 0;
      local_c._0_1_ = 2;
      (**(code **)(*(int *)(*(int *)(param_1 + 0x228) + 0x1d0) + 8))();
      local_c._0_1_ = 3;
      FUN_008a8600();
      iStack_158 = 0x979119;
      FUN_008533d0();
      local_c._0_1_ = 4;
      local_12d = FUN_00887740();
      _free(pvStack_e0);
      if (7 < uStack_e4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_e4 = 7;
      uStack_e8 = 0;
      uStack_f8 = uStack_f8 & 0xffff0000;
      _free(pvStack_104);
      if (7 < uStack_108) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_108 = 7;
      uStack_10c = 0;
      uStack_11c = uStack_11c & 0xffff0000;
      local_c._0_1_ = 1;
      FUN_008603c0();
      iVar3 = iVar3 + 1;
      param_1 = local_84;
    }
    puStack_12c = auStack_168;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 != '\0') {
      FUN_004325b6();
      local_c._0_1_ = 5;
      FUN_0043c211();
      local_c = CONCAT31(local_c._1_3_,6);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_c._0_1_ = 7;
      uStack_d8 = 1;
      pcStack_d0 = "..\\..\\src\\generic\\logg.cpp";
      pcStack_c8 = "wxLogFrame::OnSave";
      uStack_cc = 0x247;
      puStack_c4 = &DAT_00d25fa0;
      _Stack_c0 = __time64((__time64_t *)0x0);
      DStack_b8 = GetCurrentThreadId();
      iStack_b4 = 0;
      uStack_98 = 7;
      uStack_9c = 0;
      uStack_ac._0_2_ = 0;
      pvStack_94 = (void *)0x0;
      local_c._0_1_ = 8;
      FUN_008854f0();
      FUN_0083fe90();
      local_c._0_1_ = 7;
      _free(pvStack_94);
      if (7 < uStack_98) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_98 = 7;
      uStack_9c = 0;
      uStack_ac = (uint)uStack_ac._2_2_ << 0x10;
      if (iStack_b4 != 0) {
        FUN_00841af0();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_c._0_1_ = 6;
      FUN_0081b5bc();
      _free(pvStack_104);
      if (7 < uStack_108) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_108 = 7;
      uStack_10c = 0;
      uStack_11c = uStack_11c & 0xffff0000;
      _free(pvStack_e0);
      if (7 < uStack_e4) {
LAB_0097964a:
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
LAB_00979652:
    local_c = (uint)local_c._1_3_ << 8;
    FUN_008871c0();
    _free(local_24);
    pvVar1 = ExceptionList;
    ExceptionList = local_14;
  }
  local_14 = ExceptionList;
  if (local_28 < 8) {
    ___security_check_cookie_4();
    return;
  }
  ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



void __fastcall FUN_009796c0(undefined *param_1)

{
  **(undefined **)(param_1 + 4) = *param_1;
  return;
}



int * FUN_009796d0(void)

{
  char cVar1;
  int *piVar2;
  
  piVar2 = (int *)FUN_008916f0();
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     (cVar1 = (**(code **)(*piVar2 + 8))(), cVar1 != '\0')) {
    FUN_00840480("..\\..\\src\\common\\fontmap.cpp",0xa9,"wxFontMapper::Get",
                 "!fontmapper->IsDummy()",
                 L"GUI code requested a wxFontMapper but we only have a wxFontMapperBase.");
  }
  return piVar2;
}



void __fastcall FUN_00979720(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd5228;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxFontDialogBase::vftable;
  local_4 = 0;
  FUN_0097b200(uVar1);
  local_4 = 0xffffffff;
  FUN_00924620();
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_00979790(int param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= param_1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                 "uiIndex < m_nCount",0);
  }
  return *(int *)(param_1_00 + 8) + param_1 * 4;
}



undefined4 * __fastcall FUN_009797d0(undefined4 *param_1)

{
  FUN_00891630();
  *param_1 = wxFontMapper::vftable;
  param_1[0x10] = 0;
  param_1[0x11] = 7;
  *(undefined2 *)(param_1 + 0xc) = 0;
  param_1[0x12] = 0;
  param_1[0x14] = 0;
  return param_1;
}



undefined4 __thiscall
FUN_00979800(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,uint param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 param_7;
  uint param_8;
  void *param_9;
  undefined4 param_12;
  uint param_13;
  void *param_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc8050;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00840990(&stack0x0000002c,param_1,2);
  FUN_00840990(&param_2,param_1,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  uVar3 = FUN_00884e10(uVar3);
  uVar2 = FUN_00853980(param_1_00,uVar2,uVar3);
  _free(param_9);
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  param_8 = 7;
  param_7 = 0;
  param_3 = param_3 & 0xffff0000;
  _free(param_14);
  if (7 < param_13) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_12);
  }
  ExceptionList = local_c;
  return uVar2;
}



undefined4 * __thiscall FUN_009798f0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxFontMapper::vftable;
  _free((void *)param_1_00[0x12]);
  if (7 < (uint)param_1_00[0x11]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[0xc]);
  }
  param_1_00[0x11] = 7;
  param_1_00[0x10] = 0;
  *(undefined2 *)(param_1_00 + 0xc) = 0;
  FUN_00891660();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined __thiscall FUN_00979950(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 unaff_EBX;
  uint uStack_20;
  void *pvStack_1c;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  uVar3 = FUN_004325b6(param_2);
  local_4 = 0;
  uVar1 = (**(code **)(*param_1_00 + 0x68))(param_1,uVar3,uVar2);
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBX);
  }
  ExceptionList = pvStack_14;
  return uVar1;
}



void __thiscall
FUN_009799e0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined local_84 [4];
  uint local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  undefined local_60 [76];
  char local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdf51b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_84;
  ExceptionList = &local_c;
  cVar1 = FUN_00984670(param_2,param_3,DAT_0323f878 ^ (uint)&stack0xffffff70);
  if ((cVar1 != '\0') && (cVar1 = FUN_00984be0(param_3), cVar1 != '\0')) {
    FUN_004325b6(PTR_u_Encodings_0323ba18);
    local_4 = 0;
    FUN_00892660(param_1_00,local_84);
    local_4._0_1_ = 2;
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_80);
    }
    local_6c = 7;
    local_70 = 0;
    local_80 = local_80 & 0xffff0000;
    if (local_14 != '\0') {
      uVar2 = FUN_00984cf0(local_60);
      local_4 = CONCAT31(local_4._1_3_,3);
      piVar3 = (int *)FUN_00891a60();
      (**(code **)(*piVar3 + 0x68))(param_1,uVar2);
      FUN_0040159c();
    }
    local_4 = 0xffffffff;
    FUN_00892430();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00979b40(undefined4 param_1,undefined *param_2)

{
  char cVar1;
  undefined local_3c [4];
  uint local_38;
  undefined4 local_28;
  uint local_24;
  void *local_20;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdf558;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_3c;
  ExceptionList = &local_c;
  local_24 = 7;
  local_28 = 0;
  local_38 = local_38 & 0xffff0000;
  local_20 = (void *)0x0;
  local_18 = 0xffffffff;
  local_14 = 0;
  local_4 = 0;
  cVar1 = FUN_00984670(param_1,local_3c,DAT_0323f878 ^ (uint)&stack0xffffffb8);
  if (cVar1 == '\0') {
    _free(local_20);
    if (7 < local_24) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_38);
    }
  }
  else {
    if (local_3c != param_2) {
      FID_conflict_assign(param_2,0,0xffffffff);
    }
    FUN_00984be0(local_3c);
    _free(local_20);
    if (7 < local_24) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_38);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00979c40(undefined4 param_1,char param_2)

{
  undefined4 uVar1;
  undefined uVar2;
  char cVar3;
  int iVar4;
  uint uVar5;
  uint *puVar6;
  int *piVar7;
  uint *puVar8;
  uint uVar9;
  uint *puVar10;
  uint uStack_1ac;
  uint *puStack_1a8;
  int iStack_1a4;
  undefined4 uStack_1a0;
  uint *local_174;
  int local_170;
  uint uStack_168;
  undefined4 uStack_158;
  uint uStack_154;
  void *pvStack_150;
  undefined4 local_148;
  int local_144;
  undefined local_140 [188];
  undefined local_84 [4];
  undefined4 local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  undefined local_60 [20];
  int local_4c;
  uint uStack_48;
  void *pvStack_44;
  char cStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdf638;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_174;
  ExceptionList = &local_c;
  local_148 = param_1;
  local_170 = FUN_008926d0();
  if (((local_170 != -2) && (local_170 == -1)) && (param_2 != '\0')) {
    FUN_004325a0();
    uVar9 = 0;
    local_4 = 0;
    if (local_4c == 0) {
      FUN_004325b6();
      local_4._0_1_ = 1;
      FUN_0043c211();
      local_4._0_1_ = 2;
      FUN_00841240();
      local_4 = CONCAT31(local_4._1_3_,3);
      FID_conflict_append();
      FUN_00820bf9();
      FID_conflict_append();
      FUN_0040159c();
      FUN_0040159c();
      FUN_0040159c();
    }
    local_6c = 7;
    local_70 = 0;
    local_80 = (uint)local_80._2_2_ << 0x10;
    local_68 = (void *)0x0;
    local_4._0_1_ = 4;
    FUN_004325b6();
    local_4._0_1_ = 5;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,6);
    iVar4 = FUN_0084a340();
    if (iVar4 == 0) {
      FUN_0084d360();
    }
    else {
      FUN_0084f210();
    }
    FUN_008433c0();
    local_174 = &uStack_1ac;
    local_4._0_1_ = 7;
    FUN_004325a0(param_1);
    FUN_00855cc0(local_140);
    local_4._0_1_ = 6;
    FUN_0081b5bc();
    FUN_0040159c();
    local_4._0_1_ = 4;
    FUN_0040159c();
    uVar5 = FUN_008914b0();
    local_174 = (uint *)FUN_00823c23();
    local_4._0_1_ = 8;
    if (local_174 == (uint *)0x0) {
      puVar8 = (uint *)0x0;
    }
    else {
      puVar8 = local_174 + 1;
      *local_174 = uVar5;
      uStack_1a0 = 0x979eab;
      _eh_vector_constructor_iterator_(puVar8,0x24,uVar5,FUN_00418b1d,FUN_0040159c);
    }
    local_4._0_1_ = 4;
    uVar2 = (undefined)local_4;
    local_4._0_1_ = 4;
    puVar10 = puVar8;
    if (uVar5 != 0) {
      do {
        FUN_008914c0();
        puVar6 = (uint *)FUN_00891ae0();
        local_4._0_1_ = 9;
        if (puVar10 != puVar6) {
          FID_conflict_assign();
        }
        local_4._0_1_ = 4;
        _free(pvStack_150);
        if (7 < uStack_154) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        uVar9 = uVar9 + 1;
        puVar10 = puVar10 + 9;
        uVar2 = (undefined)local_4;
      } while (uVar9 < uVar5);
    }
    local_4._0_1_ = uVar2;
    iStack_1a4 = *(int *)(local_144 + 0x50);
    if (iStack_1a4 == 0) {
      iStack_1a4 = (**(code **)(*DAT_032bcb68 + 0xd4))();
    }
    uStack_1a0 = 0xffffffff;
    uStack_1ac = uVar5;
    puStack_1a8 = puVar8;
    iVar4 = FUN_009cb500(local_84,local_60);
    if (puVar8 != (uint *)0x0) {
      _eh_vector_destructor_iterator_(puVar8,0x24,puVar8[-1],FUN_0040159c);
      FUN_00a3f66c();
    }
    if (iVar4 != -1) {
      local_170 = FUN_008914c0();
    }
    FUN_004325b6();
    local_4._0_1_ = 10;
    FUN_00892660();
    local_4._0_1_ = 0xc;
    _free(pvStack_150);
    if (7 < uStack_154) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_154 = 7;
    uStack_158 = 0;
    uStack_168 = uStack_168 & 0xffff0000;
    if (cStack_14 != '\0') {
      piVar7 = (int *)FUN_00891a60();
      uVar1 = local_148;
      cVar3 = (**(code **)(*piVar7 + 0x6c))();
      if (cVar3 == '\0') {
        local_174 = &uStack_1ac;
        FUN_0043c211(&DAT_00d25fa0);
        cVar3 = FUN_00846b30(1);
        if (cVar3 != '\0') {
          FUN_004325b6();
          local_4._0_1_ = 0xd;
          FUN_0043c211();
          local_4._0_1_ = 0xe;
          FUN_00820bf9();
          FUN_008433c0();
          local_174 = &uStack_1ac;
          local_4._0_1_ = 0xf;
          FUN_004325a0(uVar1);
          local_4._0_1_ = 0x10;
          FUN_008423d0(1,"..\\..\\src\\common\\fontmap.cpp",0xf4,"wxFontMapper::CharsetToEncoding",
                       &DAT_00d25fa0);
          local_4._0_1_ = 0x12;
          FUN_00848780(local_140);
          local_4._0_1_ = 0xf;
          FUN_00842440();
          local_4._0_1_ = 0xe;
          FUN_0081b5bc();
          FUN_0040159c();
          FUN_0040159c();
        }
      }
    }
    local_4 = CONCAT31(local_4._1_3_,4);
    FUN_00892430();
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_6c = 7;
    local_70 = 0;
    local_80 = local_80 & 0xffff0000;
    _free(pvStack_44);
    if (7 < uStack_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0097a210(char *param_1_00,int param_1,char *param_2,char *param_3,char param_4)

{
  undefined uVar1;
  char cVar2;
  int iVar3;
  undefined4 uVar4;
  char *pcVar5;
  char **ppcVar6;
  int *piVar7;
  undefined4 uVar8;
  uint uVar9;
  undefined *puVar10;
  undefined auStack_55c [4];
  undefined2 local_558;
  undefined4 uStack_550;
  undefined4 uStack_54c;
  char *local_548;
  undefined *local_544;
  char *local_540;
  char *pcStack_53c;
  undefined auStack_538 [4];
  undefined2 local_534;
  undefined4 uStack_530;
  undefined *puStack_52c;
  char *pcStack_528;
  char *local_524;
  char *local_520;
  char *local_51c;
  undefined auStack_500 [3];
  char local_4fd;
  char *local_4fc;
  undefined *local_4f8;
  char *local_4f4;
  char local_4f0 [4];
  uint local_4ec;
  undefined4 local_4dc;
  uint local_4d8;
  void *local_4d4;
  undefined *local_4cc;
  char local_4c8 [24];
  uint local_4b0;
  void *local_4ac;
  uint local_4a4;
  char local_4a0 [4];
  undefined *local_49c;
  int local_498;
  char local_494;
  undefined1 *local_490;
  uint local_488;
  undefined4 local_478;
  uint local_474;
  void *local_470;
  undefined local_468 [4];
  uint local_464;
  undefined4 local_454;
  uint local_450;
  void *local_44c;
  char local_440;
  char local_43c [4];
  undefined4 local_438;
  int local_428;
  uint local_424;
  void *local_420;
  char local_418 [4];
  undefined4 local_414;
  undefined4 local_404;
  uint local_400;
  void *local_3fc;
  undefined local_3f4 [4];
  undefined4 local_3f0;
  undefined4 local_3e0;
  uint local_3dc;
  void *local_3d8;
  char local_3d0 [4];
  uint local_3cc;
  int local_3bc;
  uint local_3b8;
  void *local_3b4;
  undefined local_3ac [4];
  uint local_3a8;
  undefined4 local_398;
  uint local_394;
  void *local_390;
  undefined local_388 [4];
  uint local_384;
  undefined4 local_374;
  uint local_370;
  void *local_36c;
  char local_33c;
  int local_32c;
  char local_328 [36];
  undefined4 local_304;
  undefined4 local_300;
  char local_2d4;
  undefined4 local_298;
  char local_294 [40];
  undefined4 local_26c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  cVar2 = DAT_032e1464;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdf86c;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_500;
  ExceptionList = &local_c;
  local_4a4 = 0;
  local_4f4 = param_2;
  local_4fc = param_1_00;
  if ((param_4 != '\0') && (DAT_032e1464 != '\0')) goto LAB_0097b1bb;
  local_494 = DAT_032e1464;
  local_490 = &DAT_032e1464;
  DAT_032e1464 = 1;
  local_4 = 0;
  if (param_2 == (char *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      local_51c = "info";
      local_520 = "wxFontMapper::GetAltForEncoding";
      local_524 = (char *)0x135;
      pcStack_528 = "..\\..\\src\\common\\fontmap.cpp";
      puStack_52c = (undefined *)0x97b1b0;
      FUN_00840480();
    }
    goto LAB_0097b1bb;
  }
  if (param_2 != param_3) {
    local_51c = (char *)0x0;
    local_520 = param_3;
    local_524 = (char *)0x97a2b5;
    FID_conflict_assign();
  }
  if (param_1 == 0) {
    param_1 = DAT_0323abec;
  }
  if (param_1 == -1) {
    local_51c = (char *)0x97a2e8;
    FUN_004325b6();
    local_4._0_1_ = 1;
    local_51c = (char *)0x97a2fe;
    FUN_0043c211();
    local_4 = CONCAT31(local_4._1_3_,2);
    iVar3 = FUN_0084a340();
    if (iVar3 == 0) {
      local_51c = (char *)0x97a32f;
      FUN_0084d360();
    }
    else {
      local_51c = local_4c8;
      local_520 = (char *)0x97a323;
      FUN_0084f210();
    }
    local_51c = (char *)0x97a33f;
    FUN_008433c0();
    local_51c = "wxFontMapper::GetAltForEncoding";
    local_520 = (char *)0x144;
    local_524 = "..\\..\\src\\common\\fontmap.cpp";
    pcStack_528 = (char *)0x0;
    local_4._0_1_ = 3;
    puStack_52c = (undefined *)0x97a368;
    uVar4 = FUN_008423d0();
    local_4._0_1_ = 4;
    FUN_008854f0();
    local_520 = (char *)0x97a385;
    local_51c = (char *)uVar4;
    FUN_0083fe90();
    local_4._0_1_ = 3;
    FUN_00842440();
    local_4 = CONCAT31(local_4._1_3_,2);
    FUN_0081b5bc();
    FUN_0040159c();
    FUN_0040159c();
  }
  local_400 = 7;
  local_404 = 0;
  local_414 = (uint)local_414._2_2_ << 0x10;
  local_3fc = (void *)0x0;
  local_51c = local_3ac;
  local_4._0_1_ = 5;
  local_520 = (char *)0x97a3ff;
  FUN_00891ec0();
  local_4._0_1_ = 6;
  uVar1 = (undefined)local_4;
  local_4._0_1_ = 6;
  if (*(int *)(param_3 + 0x14) != 0) {
    local_520 = local_4c8;
    local_51c = param_3;
    local_524 = (char *)0x97a41f;
    pcVar5 = (char *)FUN_008533d0();
    local_4._0_1_ = 7;
    if (local_418 != pcVar5) {
      local_51c = (char *)0x0;
      local_524 = (char *)0x97a43e;
      local_520 = pcVar5;
      FID_conflict_assign();
    }
    local_4._0_1_ = 6;
    FUN_0040159c();
    uVar1 = (undefined)local_4;
  }
  local_4._0_1_ = uVar1;
  local_51c = (char *)0x0;
  local_520 = local_3ac;
  local_524 = (char *)0x97a466;
  FID_conflict_append();
  local_424 = 7;
  local_428 = 0;
  local_438 = (uint)local_438._2_2_ << 0x10;
  local_420 = (void *)0x0;
  local_4._0_1_ = 8;
  local_51c = (char *)0x97a4a0;
  FUN_004325b6();
  local_51c = local_4fc;
  local_4._0_1_ = 9;
  local_520 = (char *)0x97a4c1;
  FUN_00892660();
  local_4._0_1_ = 0xb;
  local_51c = (char *)0x97a4d6;
  _free(local_470);
  if (7 < local_474) {
                    // WARNING: Subroutine does not return
    local_51c = &UNK_0097a4f0;
    FUN_00a3f6a1();
  }
  local_474 = 7;
  local_478 = 0;
  local_488 = local_488 & 0xffff0000;
  if (local_2d4 != '\0') {
    local_51c = (char *)0x97a524;
    FUN_004325b6();
    local_51c = local_418;
    local_520 = local_4f0;
    local_4._0_1_ = 0xc;
    local_524 = (char *)0x97a547;
    FUN_00891a60();
    local_524 = (char *)0x97a54e;
    pcVar5 = (char *)FUN_00891800();
    local_4._0_1_ = 0xd;
    if (local_43c != pcVar5) {
      local_51c = (char *)0x0;
      local_524 = (char *)0x97a56c;
      local_520 = pcVar5;
      FID_conflict_assign();
    }
    FUN_0040159c();
    local_4._0_1_ = 0xb;
    FUN_0040159c();
  }
  local_51c = (char *)0x97a598;
  iVar3 = FUN_008507a0();
  if (iVar3 == 0) {
    param_4 = '\0';
LAB_0097a76f:
    local_51c = local_4a0;
    local_520 = (char *)0x97a77a;
    FUN_008a27b0();
    local_4._0_1_ = 0x14;
    local_4f8 = local_49c;
    local_4fd = '\0';
    local_4cc = (undefined *)0xffffffff;
    if ((local_49c != (undefined *)0x0) &&
       (puVar10 = (undefined *)0x0, local_49c != (undefined *)0x0)) {
      do {
        if (local_4fd != '\0') break;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_49c <= puVar10)) {
          local_51c = "uiIndex < m_nCount";
          local_520 = "wxBaseArrayInt::Item";
          local_524 = (char *)0x343;
          pcStack_528 = "d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h";
          puStack_52c = (undefined *)0x97a7e3;
          FUN_008402e0();
        }
        if (*(int *)(local_498 + (int)puVar10 * 4) != param_1) {
          local_51c = (char *)0x97a7f9;
          ppcVar6 = (char **)FUN_00979790();
          local_51c = *ppcVar6;
          local_520 = local_418;
          local_524 = (char *)0x97a810;
          cVar2 = FUN_009799e0();
          if (cVar2 != '\0') {
            local_51c = (char *)0x97a81e;
            piVar7 = (int *)FUN_00979790();
            local_4cc = (undefined *)*piVar7;
            local_4fd = '\x01';
          }
        }
        puVar10 = puVar10 + 1;
      } while (puVar10 < local_4f8);
    }
    if (param_4 != '\0') {
      local_520 = local_4fc + 0x2c;
      local_51c = (char *)0x0;
      local_3b8 = 7;
      local_3bc = 0;
      local_3cc = local_3cc & 0xffff0000;
      local_524 = (char *)0x97a871;
      FID_conflict_assign();
      local_3b4 = (void *)0x0;
      local_4._0_1_ = 0x15;
      uVar1 = (undefined)local_4;
      local_4._0_1_ = 0x15;
      if (local_3bc == 0) {
        local_51c = (char *)0x97a89d;
        FUN_004325b6();
        local_4._0_1_ = 0x16;
        local_51c = (char *)0x97a8b6;
        FUN_0043c211();
        local_4._0_1_ = 0x17;
        local_51c = (char *)0x97a8ce;
        uVar4 = FUN_00841240();
        local_4 = CONCAT31(local_4._1_3_,0x18);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          local_51c = (char *)0x97a904;
          uVar8 = FUN_0084d360();
        }
        else {
          local_51c = local_468;
          local_520 = (char *)0x97a8f5;
          uVar8 = FUN_0084f210();
        }
        local_51c = (char *)0x0;
        local_524 = (char *)0x97a919;
        local_520 = (char *)uVar4;
        FID_conflict_append();
        local_51c = (char *)0x0;
        local_524 = (char *)0x97a929;
        local_520 = (char *)uVar8;
        FID_conflict_append();
        local_51c = (char *)0x97a933;
        _free(local_4d4);
        if (7 < local_4d8) {
                    // WARNING: Subroutine does not return
          local_51c = &UNK_0097a947;
          FUN_00a3f6a1();
        }
        local_4d8 = 7;
        local_4dc = 0;
        local_4ec = local_4ec & 0xffff0000;
        local_51c = (char *)0x97a96b;
        _free(local_44c);
        if (7 < local_450) {
                    // WARNING: Subroutine does not return
          local_51c = &UNK_0097a989;
          FUN_00a3f6a1();
        }
        local_450 = 7;
        local_454 = 0;
        local_464 = local_464 & 0xffff0000;
        local_4._0_1_ = 0x15;
        local_51c = (char *)0x97a9b5;
        _free(local_4ac);
        uVar1 = (undefined)local_4;
        if (7 < local_4b0) {
                    // WARNING: Subroutine does not return
          local_51c = &UNK_0097a9c8;
          FUN_00a3f6a1();
        }
      }
      local_4._0_1_ = uVar1;
      local_51c = local_388;
      local_520 = (char *)0x97a9e0;
      FUN_00891ae0();
      local_3dc = 7;
      local_3e0 = 0;
      local_3f0 = (uint)local_3f0._2_2_ << 0x10;
      local_3d8 = (void *)0x0;
      local_4._0_1_ = 0x1a;
      local_51c = (char *)0x97aa1e;
      FUN_004325b6();
      if (local_4fd == '\0') {
        local_4._0_1_ = 0x1f;
        local_51c = (char *)0x97ab79;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,0x20);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          local_51c = (char *)0x97aba8;
          FUN_0084d360();
        }
        else {
          local_51c = local_4f0;
          local_520 = (char *)0x97ab9c;
          FUN_0084f210();
        }
        local_51c = (char *)0x97abb8;
        FUN_008433c0();
        local_4f8 = auStack_538;
        pcStack_53c = (char *)0xffffffff;
        local_520 = (char *)0x7;
        local_524 = (char *)0x0;
        local_540 = (char *)0x0;
        local_544 = local_388;
        local_534 = 0;
        local_4._0_1_ = 0x21;
        local_548 = (char *)0x97abeb;
        FID_conflict_assign();
        pcStack_53c = local_468;
        local_51c = (char *)0x0;
        local_540 = (char *)0x97ac02;
        FUN_00855cc0();
        local_4._0_1_ = 0x20;
        FUN_0081b5bc();
        local_51c = (char *)0x97ac1f;
        _free(local_4d4);
        if (7 < local_4d8) {
                    // WARNING: Subroutine does not return
          local_51c = &UNK_0097ac37;
          FUN_00a3f6a1();
        }
        local_4d8 = 7;
        local_4dc = 0;
        local_4ec = local_4ec & 0xffff0000;
        local_4 = CONCAT31(local_4._1_3_,0x1a);
        local_51c = (char *)0x97ac5f;
        _free(local_4ac);
        cVar2 = local_4fd;
      }
      else {
        local_4._0_1_ = 0x1b;
        local_51c = (char *)0x97aa3f;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,0x1c);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          local_51c = (char *)0x97aa6d;
          FUN_0084d360();
        }
        else {
          local_51c = local_4f0;
          local_520 = (char *)0x97aa61;
          FUN_0084f210();
        }
        local_51c = (char *)0x97aa7d;
        FUN_008433c0();
        local_4f8 = auStack_538;
        local_540 = auStack_538;
        pcStack_53c = local_4cc;
        local_4._0_1_ = 0x1d;
        local_544 = (undefined *)0x97aa9a;
        FUN_00891ae0();
        local_4cc = auStack_55c;
        local_544 = (undefined *)0x7;
        local_548 = (char *)0x0;
        local_4._0_1_ = 0x1e;
        local_558 = 0;
        FID_conflict_assign(local_388,0,0xffffffff);
        local_540 = (char *)0x0;
        local_4._0_1_ = 0x1d;
        FUN_00979800(local_468);
        local_4._0_1_ = 0x1c;
        FUN_0081b5bc();
        local_51c = (char *)0x97ab0c;
        _free(local_4d4);
        if (7 < local_4d8) {
                    // WARNING: Subroutine does not return
          local_51c = &UNK_0097ab24;
          FUN_00a3f6a1();
        }
        local_4d8 = 7;
        local_4dc = 0;
        local_4ec = local_4ec & 0xffff0000;
        local_4 = CONCAT31(local_4._1_3_,0x1a);
        local_51c = (char *)0x97ab4c;
        _free(local_4ac);
        cVar2 = local_4fd;
      }
      local_4fd = cVar2;
      if (7 < local_4b0) {
                    // WARNING: Subroutine does not return
        local_51c = &UNK_0097ac72;
        FUN_00a3f6a1();
      }
      local_520 = *(char **)(local_4fc + 0x50);
      local_51c = (char *)0xffffffff;
      local_524 = (char *)0x40a;
      pcStack_528 = local_3d0;
      puStack_52c = local_3f4;
      uStack_530 = 0x97acac;
      iVar3 = FUN_008fe490();
      if (iVar3 == (-(uint)(cVar2 != '\0') & 6) + 2) {
        FUN_0097b2c0();
        pcVar5 = local_4f4;
        local_4._0_1_ = 0x22;
        local_32c = param_1;
        if (local_328 != local_4f4) {
          local_51c = (char *)0x0;
          local_520 = local_4f4;
          local_524 = (char *)0x97acf3;
          FID_conflict_assign();
        }
        local_304 = *(undefined4 *)(pcVar5 + 0x24);
        local_300 = *(undefined4 *)(pcVar5 + 0x28);
        local_51c = *(char **)(local_4fc + 0x50);
        local_520 = (char *)0x97ad23;
        FUN_008fd320();
        local_4._0_1_ = 0x23;
        iVar3 = FUN_0097b6c0();
        if (iVar3 == 0x13ec) {
          local_51c = (char *)0x97ad56;
          FUN_0097b3f0();
          local_4._0_1_ = 0x24;
          if (pcVar5 != local_294) {
            local_51c = (char *)0x0;
            local_524 = (char *)0x97ad77;
            local_520 = local_294;
            FID_conflict_assign();
          }
          *(undefined4 *)(pcVar5 + 0x28) = local_26c;
          *(undefined4 *)(pcVar5 + 0x24) = local_298;
          local_51c = (char *)0x97ad9b;
          FUN_004325b6();
          local_51c = local_4fc;
          local_4._0_1_ = 0x25;
          local_520 = (char *)0x97adb9;
          FUN_00892660();
          local_4._0_1_ = 0x27;
          FUN_0040159c();
          if (local_440 != '\0') {
            local_51c = (char *)0x97ade0;
            FUN_00984cf0();
            local_4._0_1_ = 0x28;
            piVar7 = (int *)FUN_00891a60();
            local_51c = local_418;
            local_520 = (char *)0x97ae03;
            (**(code **)(*piVar7 + 0x68))();
            FUN_0040159c();
          }
          local_4._0_1_ = 0x24;
          FUN_00892430();
          local_4._0_1_ = 0x23;
          FUN_0097b200();
          local_4._0_1_ = 0x22;
          FUN_00979720();
          local_4._0_1_ = 0x1a;
          FUN_0097b200();
          FUN_0040159c();
          FUN_0040159c();
          FUN_0040159c();
          local_4._0_1_ = 0xb;
          FUN_0086aa30();
          goto LAB_0097a658;
        }
        local_4._0_1_ = 0x22;
        FUN_00979720();
        local_4._0_1_ = 0x1a;
        FUN_0097b200();
      }
      else {
        local_51c = (char *)0x97aed2;
        FUN_004325b6();
        local_51c = local_4fc;
        local_4._0_1_ = 0x29;
        local_520 = (char *)0x97aef0;
        FUN_00892660();
        local_4 = CONCAT31(local_4._1_3_,0x2b);
        local_51c = (char *)0x97af02;
        _free(local_4d4);
        if (7 < local_4d8) {
                    // WARNING: Subroutine does not return
          local_51c = &UNK_0097af15;
          FUN_00a3f6a1();
        }
        local_4d8 = 7;
        local_4dc = 0;
        local_4ec = local_4ec & 0xffff0000;
        if (local_33c != '\0') {
          if (cVar2 != '\0') {
            local_51c = (char *)0x97af4a;
            FUN_00984cf0();
            local_51c = (char *)0x97af59;
            FUN_00432231();
            local_4 = 0x2d;
            local_4a4 = 3;
          }
          uVar9 = local_4a4;
          local_51c = local_418;
          local_520 = (char *)0x97afa3;
          FUN_00891a60();
          local_520 = (char *)0x97afaa;
          FUN_00979950();
          if ((uVar9 & 2) != 0) {
            uVar9 = uVar9 & 0xfffffffd;
            FUN_00432214();
          }
          local_4 = 0x2b;
          if ((uVar9 & 1) != 0) {
            FUN_0040159c();
          }
        }
        local_4._0_1_ = 0x1a;
        FUN_00892430();
      }
      local_51c = (char *)0x97aff8;
      _free(local_3d8);
      if (7 < local_3dc) {
                    // WARNING: Subroutine does not return
        local_51c = &UNK_0097b011;
        FUN_00a3f6a1();
      }
      local_3dc = 7;
      local_3e0 = 0;
      local_3f0 = local_3f0 & 0xffff0000;
      local_51c = (char *)0x97b03e;
      _free(local_36c);
      if (7 < local_370) {
                    // WARNING: Subroutine does not return
        local_51c = &UNK_0097b057;
        FUN_00a3f6a1();
      }
      local_370 = 7;
      local_374 = 0;
      local_384 = local_384 & 0xffff0000;
      local_51c = (char *)0x97b07f;
      _free(local_3b4);
      if (7 < local_3b8) {
                    // WARNING: Subroutine does not return
        local_51c = &UNK_0097b098;
        FUN_00a3f6a1();
      }
    }
    local_4._0_1_ = 0xb;
    FUN_0086aa30();
    local_4 = CONCAT31(local_4._1_3_,8);
    FUN_00892430();
    local_51c = (char *)0x97b0d4;
    _free(local_420);
    if (7 < local_424) {
                    // WARNING: Subroutine does not return
      local_51c = &UNK_0097b0ed;
      FUN_00a3f6a1();
    }
    local_424 = 7;
    local_428 = 0;
    local_438 = local_438 & 0xffff0000;
    local_51c = (char *)0x97b11a;
    _free(local_390);
    if (7 < local_394) {
                    // WARNING: Subroutine does not return
      local_51c = &UNK_0097b133;
      FUN_00a3f6a1();
    }
    local_394 = 7;
    local_398 = 0;
    local_3a8 = local_3a8 & 0xffff0000;
    local_51c = (char *)0x97b15b;
    _free(local_3fc);
    if (7 < local_400) {
                    // WARNING: Subroutine does not return
      local_51c = &UNK_0097b174;
      FUN_00a3f6a1();
    }
    DAT_032e1464 = local_494;
    cVar2 = DAT_032e1464;
  }
  else {
    if (local_428 == 0) goto LAB_0097a76f;
    if (*(int *)(param_3 + 0x14) != 0) {
      local_51c = (char *)0x97a5ca;
      FUN_004325b6();
      local_51c = local_3ac;
      local_520 = local_4f0;
      local_4._0_1_ = 0xe;
      local_524 = (char *)0x97a5ed;
      FUN_00891a60();
      local_524 = (char *)0x97a5f4;
      FUN_00891800();
      local_4._0_1_ = 0xf;
      local_51c = (char *)0x97a609;
      FUN_0043261a();
      FUN_0040159c();
      local_4._0_1_ = 0xb;
      FUN_0040159c();
    }
    if (local_428 == 0) goto LAB_0097a76f;
    local_51c = (char *)0x97a643;
    cVar2 = FUN_009848d0();
    if (cVar2 == '\0') {
      local_4f8 = auStack_538;
      pcStack_53c = &DAT_00d25fa0;
      local_540 = (char *)0x97a6b6;
      FUN_0043c211();
      pcStack_53c = (undefined *)0x6;
      local_540 = (char *)0x97a6bd;
      cVar2 = FUN_00846b30();
      if (cVar2 != '\0') {
        local_51c = (char *)0x97a6d9;
        FUN_0081c0f1();
        local_4f8 = auStack_538;
        pcStack_53c = local_43c;
        local_4._0_1_ = 0x10;
        local_540 = (char *)0x97a6f8;
        FUN_004325a0();
        pcStack_53c = &DAT_00d25fa0;
        local_540 = "wxFontMapper::GetAltForEncoding";
        local_544 = (undefined *)0x177;
        local_548 = "..\\..\\src\\common\\fontmap.cpp";
        uStack_54c = 6;
        local_4._0_1_ = 0x11;
        uStack_550 = 0x97a722;
        FUN_008423d0();
        pcStack_53c = local_468;
        local_4._0_1_ = 0x13;
        local_540 = (char *)0x97a741;
        FUN_00848780();
        local_4._0_1_ = 0x10;
        FUN_00842440();
        local_4._0_1_ = 0xb;
        FUN_0081b5bc();
      }
      goto LAB_0097a76f;
    }
    local_51c = (char *)0x97a64d;
    cVar2 = FUN_00984be0();
    if (cVar2 == '\0') goto LAB_0097a76f;
LAB_0097a658:
    local_4 = CONCAT31(local_4._1_3_,8);
    FUN_00892430();
    FUN_0040159c();
    FUN_0040159c();
    FUN_0040159c();
    DAT_032e1464 = local_494;
    cVar2 = DAT_032e1464;
  }
LAB_0097b1bb:
  DAT_032e1464 = cVar2;
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined * FUN_0097b1f0(void)

{
  return &DAT_0323ba58;
}



void __fastcall FUN_0097b200(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdf8be;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxFontData::vftable;
  local_4 = 2;
  _free((void *)param_1[0x16]);
  if (7 < (uint)param_1[0x15]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x10]);
  }
  param_1[0x15] = 7;
  param_1[0x14] = 0;
  *(undefined2 *)(param_1 + 0x10) = 0;
  FUN_00921450(uVar1);
  local_4._0_1_ = 1;
  FUN_00921450();
  local_4 = (uint)local_4._1_3_ << 8;
  param_1[2] = wxObject::vftable;
  FUN_0083e850();
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_0097b2c0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2968;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = wxFontData::vftable;
  FUN_00453f4b(uVar1);
  param_1[9] = 0;
  param_1[8] = wxFont::vftable;
  param_1[10] = wxFont::vftable;
  param_1[0xb] = 0;
  param_1[0x15] = 7;
  param_1[0x14] = 0;
  *(undefined2 *)(param_1 + 0x10) = 0;
  param_1[0x16] = 0;
  param_1[0x19] = 0;
  param_1[0x18] = 0xffffffff;
  *(undefined *)((int)param_1 + 0x1d) = 1;
  *(undefined *)((int)param_1 + 0x1e) = 1;
  *(undefined *)(param_1 + 7) = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0xffffffff;
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_0097b360(undefined4 param_1_00,byte param_1)

{
  FUN_0097b200();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x68);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_0097b2c0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_0097b3f0(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdf909;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxFontData::vftable;
  param_1_00[2] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0xc);
  param_1_00[3] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[2] = wxColour::vftable;
  param_1_00[4] = *(undefined4 *)(param_1 + 0x10);
  *(undefined *)(param_1_00 + 5) = *(undefined *)(param_1 + 0x14);
  *(undefined *)((int)param_1_00 + 0x15) = *(undefined *)(param_1 + 0x15);
  *(undefined *)((int)param_1_00 + 0x16) = *(undefined *)(param_1 + 0x16);
  *(undefined *)((int)param_1_00 + 0x17) = *(undefined *)(param_1 + 0x17);
  *(undefined *)(param_1_00 + 6) = *(undefined *)(param_1 + 0x18);
  *(undefined *)(param_1_00 + 7) = *(undefined *)(param_1 + 0x1c);
  *(undefined *)((int)param_1_00 + 0x1d) = *(undefined *)(param_1 + 0x1d);
  *(undefined *)((int)param_1_00 + 0x1e) = *(undefined *)(param_1 + 0x1e);
  param_1_00[8] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x24);
  param_1_00[9] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[8] = wxFont::vftable;
  param_1_00[10] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x2c);
  param_1_00[0xb] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[10] = wxFont::vftable;
  param_1_00[0xc] = *(undefined4 *)(param_1 + 0x30);
  param_1_00[0xd] = *(undefined4 *)(param_1 + 0x34);
  param_1_00[0xe] = *(undefined4 *)(param_1 + 0x38);
  param_1_00[0x15] = 7;
  param_1_00[0x14] = 0;
  local_4 = 3;
  *(undefined2 *)(param_1_00 + 0x10) = 0;
  FID_conflict_assign(param_1 + 0x3c,0,0xffffffff);
  param_1_00[0x16] = 0;
  param_1_00[0x18] = *(undefined4 *)(param_1 + 0x60);
  param_1_00[0x19] = *(undefined4 *)(param_1 + 100);
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_0097b520(int param_1_00,int param_1)

{
  if (param_1 != param_1_00) {
    FUN_0083ea60(param_1);
    if (param_1_00 + 8 != param_1 + 8) {
      FUN_0083ea60(param_1 + 8);
    }
    *(undefined4 *)(param_1_00 + 0x10) = *(undefined4 *)(param_1 + 0x10);
    *(undefined *)(param_1_00 + 0x14) = *(undefined *)(param_1 + 0x14);
    *(undefined *)(param_1_00 + 0x15) = *(undefined *)(param_1 + 0x15);
    *(undefined *)(param_1_00 + 0x16) = *(undefined *)(param_1 + 0x16);
    *(undefined *)(param_1_00 + 0x17) = *(undefined *)(param_1 + 0x17);
    *(undefined *)(param_1_00 + 0x18) = *(undefined *)(param_1 + 0x18);
    *(undefined *)(param_1_00 + 0x1c) = *(undefined *)(param_1 + 0x1c);
    *(undefined *)(param_1_00 + 0x1d) = *(undefined *)(param_1 + 0x1d);
    *(undefined *)(param_1_00 + 0x1e) = *(undefined *)(param_1 + 0x1e);
    if (param_1_00 + 0x20 != param_1 + 0x20) {
      FUN_0083ea60(param_1 + 0x20);
    }
    if (param_1_00 + 0x28 != param_1 + 0x28) {
      FUN_0083ea60(param_1 + 0x28);
    }
    *(undefined4 *)(param_1_00 + 0x30) = *(undefined4 *)(param_1 + 0x30);
    *(undefined4 *)(param_1_00 + 0x34) = *(undefined4 *)(param_1 + 0x34);
    *(undefined4 *)(param_1_00 + 0x38) = *(undefined4 *)(param_1 + 0x38);
    if (param_1_00 + 0x3c != param_1 + 0x3c) {
      FID_conflict_assign(param_1 + 0x3c,0,0xffffffff);
    }
    *(undefined4 *)(param_1_00 + 0x60) = *(undefined4 *)(param_1 + 0x60);
    *(undefined4 *)(param_1_00 + 100) = *(undefined4 *)(param_1 + 100);
  }
  return param_1_00;
}



undefined ** FUN_0097b5f0(void)

{
  return &PTR_u_wxFontDialog_0323ba70;
}



undefined4 * __fastcall FUN_0097b600(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5228;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044cc1c(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxFontDialogBase::vftable;
  FUN_0097b2c0();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_0097b660(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(600);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0097b600(uVar1);
    *puVar2 = wxFontDialog::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __fastcall FUN_0097b6c0(int param_1)

{
  int *piVar1;
  WCHAR WVar2;
  char cVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  BOOL BVar7;
  int iVar8;
  WCHAR *pWVar9;
  DWORD DVar10;
  undefined *puVar11;
  undefined auStack_194 [12];
  undefined4 uStack_188;
  undefined4 uStack_184;
  char *pcStack_180;
  undefined *local_15c [2];
  CHOOSEFONTW local_154 [3];
  tagLOGFONTW local_6c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdf967;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_15c;
  ExceptionList = &local_c;
  local_15c[0] = (undefined *)0x1;
  pcStack_180 = (char *)0x97b714;
  _memset(local_154,0,0x3c);
  local_154[0].lStructSize = 0x3c;
  if (*(int *)(param_1 + 0x44) != 0) {
    local_154[0].hwndOwner = *(HWND *)(*(int *)(param_1 + 0x44) + 0x13c);
  }
  local_154[0].lpLogFont = &local_6c;
  cVar3 = (**(code **)(*(int *)(param_1 + 0x210) + 0x10))();
  puVar11 = (undefined *)0x1;
  if (cVar3 != '\0') {
    local_15c[0] = (undefined *)0x41;
    FUN_00984870();
    puVar11 = local_15c[0];
  }
  piVar1 = (int *)(param_1 + 0x1f8);
  cVar3 = (**(code **)(*(int *)(param_1 + 0x1f8) + 0x24))();
  local_154[0].Flags = (DWORD)puVar11;
  if (cVar3 != '\0') {
    uVar4 = (**(code **)(*piVar1 + 0x18))();
    uVar5 = (**(code **)(*piVar1 + 0x14))();
    uVar6 = (**(code **)(*piVar1 + 0x10))();
    local_154[0].rgbColors = uVar6 & 0xff | (uVar5 & 0xff | (uVar4 & 0xff) << 8) << 8;
    local_154[0].Flags = (DWORD)local_15c[0];
  }
  if (*(char *)(param_1 + 0x20d) == '\0') {
    local_154[0].Flags = local_154[0].Flags | 0x400000;
    local_6c.lfCharSet = 0;
  }
  if (*(char *)(param_1 + 0x20e) != '\0') {
    local_154[0].Flags = local_154[0].Flags | 0x100;
  }
  if (*(char *)(param_1 + 0x20c) != '\0') {
    local_154[0].Flags = local_154[0].Flags | 4;
  }
  if ((*(int *)(param_1 + 0x220) != 0) || (*(int *)(param_1 + 0x224) != 0)) {
    local_154[0].nSizeMax = *(INT *)(param_1 + 0x224);
    local_154[0].Flags = local_154[0].Flags | 0x2000;
    local_154[0].nSizeMin = *(int *)(param_1 + 0x220);
  }
  BVar7 = ChooseFontW(local_154);
  if (BVar7 == 0) {
    DVar10 = CommDlgExtendedError();
    if (DVar10 != 0) {
      local_15c[0] = auStack_194;
      FUN_0043c211(&DAT_00d25fa0);
      cVar3 = FUN_00846b30(1);
      if (cVar3 != '\0') {
        FUN_004325b6();
        uStack_4 = 1;
        FUN_0043c211();
        uStack_4 = CONCAT31(uStack_4._1_3_,2);
        iVar8 = FUN_0084a340();
        if (iVar8 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        pcStack_180 = "..\\..\\src\\msw\\fontdlg.cpp";
        uStack_184 = 1;
        uStack_4._0_1_ = 3;
        uStack_188 = 0x97b9a2;
        FUN_008423d0();
        uStack_4._0_1_ = 4;
        FUN_008b7ef0();
        uStack_4._0_1_ = 3;
        FUN_00842440();
        uStack_4 = CONCAT31(uStack_4._1_3_,2);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
  }
  else {
    pcStack_180 = (char *)local_154[0].rgbColors;
    uStack_184 = 0x97b84b;
    (**(code **)(*piVar1 + 0x28))();
    iVar8 = FUN_009846e0();
    uStack_4 = 0;
    if (param_1 + 0x218 != iVar8) {
      FUN_0083ea60();
    }
    uStack_4 = 0xffffffff;
    FUN_00921450();
    pWVar9 = local_6c.lfFaceName;
    do {
      WVar2 = *pWVar9;
      pWVar9 = pWVar9 + 1;
    } while (WVar2 != L'\0');
    FID_conflict_assign();
    *(uint *)(param_1 + 0x254) = (uint)local_6c.lfCharSet;
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_0097ba20(void)

{
  return &PTR_u_wxNotebook_0323ba88;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1cc);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009ccdf0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_0097baa0(int *param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined **local_78 [2];
  int *piStack_70;
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_1c;
  undefined4 local_18;
  undefined4 local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdf9a8;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_78);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032e146c,param_1_00[0x10]);
  local_1c = 1;
  local_78[0] = wxBookCtrlEvent::vftable;
  local_14 = 0xffffffff;
  local_18 = param_1;
  local_4 = 0;
  local_14 = (**(code **)(*param_1_00 + 0x35c))(uVar1);
  piStack_70 = param_1_00;
  (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(local_78);
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_38);
  if (uStack_3c < 8) {
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
    FUN_0083e850();
    ExceptionList = local_10;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(uStack_50);
}



void __thiscall FUN_0097bbc0(int *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  undefined **local_78 [2];
  int *local_70;
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_1c;
  int local_18;
  undefined4 local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdf9d8;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_78);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff84;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032e1468,param_1_00[0x10]);
  local_1c = 1;
  local_78[0] = wxBookCtrlEvent::vftable;
  local_18 = 0xffffffff;
  local_14 = 0xffffffff;
  local_4 = 0;
  if (param_2 == -1) {
    param_2 = (**(code **)(*param_1_00 + 0x35c))(uVar1);
  }
  local_14 = param_1;
  local_70 = param_1_00;
  local_18 = param_2;
  (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(local_78);
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_38);
  if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_50);
  }
  uStack_3c = 7;
  uStack_40 = 0;
  uStack_50 = uStack_50 & 0xffff0000;
  FUN_0083e850();
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_0097bce0(void)

{
  return &PTR_u_wxColourData_0323babc;
}



undefined4 * __fastcall FUN_0097bcf0(undefined4 *param_1)

{
  void *pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdfa29;
  local_c = ExceptionList;
  pvVar1 = (void *)(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = wxColourData::vftable;
  FUN_00453f4b();
  local_4._0_1_ = 1;
  _eh_vector_constructor_iterator_(param_1 + 7,0x14,0x10,FUN_00453f4b,FUN_0045873f);
  *(undefined *)(param_1 + 0x57) = 0;
  local_4 = CONCAT31(local_4._1_3_,2);
  (**(code **)(param_1[2] + 0x28))(0,0,0,0xff);
  ExceptionList = pvVar1;
  return param_1;
}



void __fastcall FUN_0097bd90(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bdfa63;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxColourData::vftable;
  local_4 = 1;
  _eh_vector_destructor_iterator_(param_1 + 7,0x14,0x10,FUN_0045873f);
  local_4 = local_4 & 0xffffff00;
  param_1[2] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x160);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_0097bcf0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_0097be90(undefined4 param_1_00,byte param_1)

{
  FUN_0097bd90();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_0097beb0(int param_1_00,undefined4 param_1,uint param_2)

{
  if (param_2 < 0x10) {
    FUN_00458700(param_1_00 + 0x1c + param_2 * 0x14);
    return param_1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\colourdata.cpp",0x35,"wxColourData::GetCustomColour",
                 "i >= 0 && i < NUM_CUSTOM",L"custom colour index out of range");
  }
  FUN_004561e7(0,0,0,0xff);
  return param_1;
}



undefined ** FUN_0097bf30(void)

{
  return &PTR_u_wxColourDialog_0323bae4;
}



undefined4 * __fastcall FUN_0097c0c0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdfa88;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044cc1c(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  local_4 = 0;
  *param_1 = wxColourDialog::vftable;
  FUN_0097bcf0();
  param_1[0xda] = 7;
  param_1[0xd9] = 0;
  *(undefined2 *)(param_1 + 0xd5) = 0;
  param_1[0xdb] = 0;
  *(undefined *)(param_1 + 0xde) = 0;
  param_1[0xdd] = 0;
  DAT_0323bad8 = 0;
  DAT_0323bad4 = 0;
  ExceptionList = local_c;
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x37c);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_0097c0c0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_0097c1c0(HWND param_1,int param_2,undefined4 param_3,int param_4)

{
  int *piVar1;
  undefined4 ***local_34;
  undefined4 uStack_30;
  int iStack_24;
  uint uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6f98;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_34;
  ExceptionList = &local_c;
  if (param_2 == 0x110) {
    piVar1 = *(int **)(param_4 + 0x18);
    (**(code **)(*piVar1 + 0x36c))(&local_34,DAT_0323f878 ^ (uint)&stack0xffffffc4);
    puStack_8 = (undefined *)0x0;
    if (iStack_24 != 0) {
      if (uStack_20 < 8) {
        local_34 = &local_34;
      }
      SetWindowTextW(param_1,(LPCWSTR)local_34);
    }
    (**(code **)(*piVar1 + 0x3bc))(param_1);
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __fastcall FUN_0097c300(int param_1)

{
  char cVar1;
  int *piVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  BOOL BVar6;
  DWORD DVar7;
  int iVar8;
  undefined4 uVar9;
  uint uVar10;
  int *piVar11;
  tagCHOOSECOLORW local_130;
  undefined **local_10c;
  uint uStack_f4;
  undefined4 uStack_e4;
  uint uStack_e0;
  void *pvStack_dc;
  undefined4 uStack_c0;
  char *pcStack_b8;
  undefined4 uStack_b4;
  char *pcStack_b0;
  undefined *puStack_ac;
  __time64_t _Stack_a8;
  DWORD DStack_a0;
  undefined4 uStack_9c;
  undefined2 uStack_94;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  uint uStack_58;
  void *pvStack_54;
  COLORREF aCStack_4c [16];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdfaef;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_130.lStructSize = 0;
  local_130.hwndOwner = (HWND)0x0;
  local_130.hInstance = (HWND)0x0;
  local_130.rgbResult = 0;
  local_130.lpCustColors = (COLORREF *)0x0;
  local_130.Flags = 0;
  local_130.lCustData = 0;
  local_130.lpfnHook = (LPCCHOOKPROC)0x0;
  local_130.lpTemplateName = (LPCWSTR)0x0;
  uVar10 = 0;
  do {
    piVar2 = (int *)FUN_0097beb0();
    local_4 = 0;
    cVar1 = (**(code **)(*piVar2 + 0x24))();
    local_4 = 0xffffffff;
    local_10c = wxObject::vftable;
    FUN_0083e850();
    if (cVar1 == '\0') {
      aCStack_4c[uVar10] = 0xffffff;
    }
    else {
      piVar2 = (int *)FUN_0097beb0();
      local_4 = 1;
      uVar3 = (**(code **)(*piVar2 + 0x18))();
      uVar4 = (**(code **)(*piVar2 + 0x14))();
      uVar5 = (**(code **)(*piVar2 + 0x10))();
      aCStack_4c[uVar10] = uVar5 & 0xff | (uVar4 & 0xff | (uVar3 & 0xff) << 8) << 8;
      local_4 = 0xffffffff;
      local_10c = wxObject::vftable;
      FUN_0083e850();
    }
    uVar10 = uVar10 + 1;
  } while (uVar10 < 0x10);
  local_130.lStructSize = 0x24;
  if (*(int *)(param_1 + 0x44) != 0) {
    local_130.hwndOwner = *(HWND *)(*(int *)(param_1 + 0x44) + 0x13c);
  }
  piVar2 = (int *)(param_1 + 0x1f8);
  uVar10 = (**(code **)(*(int *)(param_1 + 0x1f8) + 0x18))();
  uVar3 = (**(code **)(*piVar2 + 0x14))();
  uVar4 = (**(code **)(*piVar2 + 0x10))();
  local_130.rgbResult = uVar4 & 0xff | (uVar3 & 0xff | (uVar10 & 0xff) << 8) << 8;
  local_130.lpCustColors = aCStack_4c;
  local_130.Flags = 0x11;
  local_130.lpfnHook = FUN_0097c1c0;
  if (*(char *)(param_1 + 0x34c) != '\0') {
    local_130.Flags = 0x13;
  }
  local_130.lCustData = param_1;
  BVar6 = ChooseColorW(&local_130);
  if (BVar6 == 0) {
    DVar7 = CommDlgExtendedError();
    if (DVar7 != 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 != '\0') {
        FUN_004325b6();
        local_4 = 2;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,3);
        iVar8 = FUN_0084a340();
        if (iVar8 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 4;
        uStack_c0 = 1;
        pcStack_b8 = "..\\..\\src\\msw\\colordlg.cpp";
        pcStack_b0 = "wxColourDialog::ShowModal";
        uStack_b4 = 0x9a;
        puStack_ac = &DAT_00d25fa0;
        _Stack_a8 = __time64((__time64_t *)0x0);
        DStack_a0 = GetCurrentThreadId();
        uStack_9c = 0;
        uStack_80 = 7;
        uStack_84 = 0;
        uStack_94 = 0;
        uStack_7c = 0;
        local_4._0_1_ = 5;
        FUN_00840d00();
        FUN_008854f0();
        FUN_0083fe90();
        local_4._0_1_ = 4;
        FUN_00842440();
        local_4 = CONCAT31(local_4._1_3_,3);
        FUN_0081b5bc();
        _free(pvStack_dc);
        if (7 < uStack_e0) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        uStack_e0 = 7;
        uStack_e4 = 0;
        uStack_f4 = uStack_f4 & 0xffff0000;
        _free(pvStack_54);
        if (7 < uStack_58) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
      }
    }
    uVar9 = 0x13ed;
  }
  else {
    uVar10 = 0;
    piVar11 = (int *)(param_1 + 0x20c);
    do {
      (**(code **)(*piVar11 + 0x28))();
      uVar10 = uVar10 + 1;
      piVar11 = piVar11 + 5;
    } while (uVar10 < 0x10);
    (**(code **)(*piVar2 + 0x28))();
    uVar9 = 0x13ec;
  }
  ExceptionList = local_c;
  return uVar9;
}



undefined4 FUN_0097c730(undefined4 param_1)

{
  switch(param_1) {
  case 5000:
  case 0x1389:
  case 0x138a:
  case 0x138b:
  case 0x138c:
  case 0x138e:
  case 0x138f:
  case 0x1390:
  case 0x1391:
  case 0x1392:
  case 0x1395:
  case 0x1396:
  case 0x139e:
  case 0x13a6:
  case 0x13a7:
  case 0x13a8:
  case 0x13a9:
  case 0x13aa:
  case 0x13ab:
  case 0x13ad:
  case 0x13ae:
  case 0x13af:
  case 0x13b1:
  case 0x13ba:
  case 0x13ec:
  case 0x13ed:
  case 0x13ee:
  case 0x13ef:
  case 0x13f0:
  case 0x13f2:
  case 0x13f3:
  case 0x13fe:
  case 0x13ff:
  case 0x1400:
  case 0x1401:
  case 0x1402:
  case 0x1403:
  case 0x1404:
  case 0x1405:
  case 0x1406:
  case 0x1407:
  case 0x1408:
  case 0x1409:
  case 0x140a:
  case 0x140b:
  case 0x140c:
  case 0x140d:
  case 0x140e:
  case 0x140f:
  case 0x1410:
  case 0x1411:
  case 0x1412:
  case 0x1413:
  case 0x1414:
  case 0x1415:
  case 0x1416:
  case 0x1417:
  case 0x1418:
  case 0x1419:
  case 0x141a:
  case 0x141b:
  case 0x141c:
  case 0x141d:
  case 0x141e:
  case 0x141f:
  case 0x1420:
  case 0x1421:
  case 0x1422:
  case 0x1423:
  case 0x1424:
  case 0x1425:
  case 0x1426:
    return 1;
  default:
    return 0;
  }
}



void FUN_0097c800(undefined4 *param_1,undefined4 param_2)

{
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  switch(param_2) {
  case 5000:
    *param_1 = 2;
    param_1[1] = 0x4f;
    param_1[2] = 5000;
    param_1[3] = 0;
    return;
  default:
    param_1[2] = param_2;
    *param_1 = 0;
    param_1[1] = 0;
    param_1[3] = 0;
    return;
  case 0x138a:
    *param_1 = 2;
    param_1[1] = 0x4e;
    param_1[2] = 0x138a;
    param_1[3] = 0;
    return;
  case 0x138b:
    *param_1 = 2;
    param_1[1] = 0x53;
    param_1[2] = 0x138b;
    param_1[3] = 0;
    return;
  case 0x138f:
    *param_1 = 2;
    param_1[1] = 0x5a;
    param_1[2] = 0x138f;
    param_1[3] = 0;
    return;
  case 0x1390:
    *param_1 = 6;
    param_1[1] = 0x5a;
    param_1[2] = 0x1390;
    param_1[3] = 0;
    return;
  case 0x1391:
    *param_1 = 2;
    param_1[1] = 0x48;
    param_1[2] = 0x1391;
    param_1[3] = 0;
    return;
  case 0x1392:
    *param_1 = 2;
    param_1[1] = 0x50;
    param_1[2] = 0x1392;
    param_1[3] = 0;
    return;
  case 0x13a7:
    *param_1 = 2;
    param_1[1] = 0x58;
    param_1[2] = 0x13a7;
    param_1[3] = 0;
    return;
  case 0x13a8:
    *param_1 = 2;
    param_1[1] = 0x43;
    param_1[2] = 0x13a8;
    param_1[3] = 0;
    return;
  case 0x13a9:
    *param_1 = 2;
    param_1[1] = 0x56;
    param_1[2] = 0x13a9;
    param_1[3] = 0;
    return;
  case 0x13ab:
    *param_1 = 2;
    param_1[1] = 0x46;
    param_1[2] = 0x13ab;
    param_1[3] = 0;
    return;
  case 0x13af:
    *param_1 = 2;
    param_1[1] = 0x52;
    param_1[2] = 0x13af;
    param_1[3] = 0;
    return;
  }
}



void FUN_0097c9d0(int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 local_398;
  undefined local_394 [36];
  undefined local_370 [36];
  undefined local_34c [36];
  undefined local_328 [36];
  undefined local_304 [36];
  undefined local_2e0 [36];
  undefined local_2bc [36];
  undefined local_298 [36];
  undefined local_274 [36];
  undefined local_250 [36];
  undefined local_22c [36];
  undefined local_208 [36];
  undefined local_1e4 [36];
  undefined local_1c0 [36];
  undefined local_19c [36];
  undefined local_178 [36];
  undefined local_154 [36];
  undefined local_130 [36];
  undefined local_10c [36];
  undefined local_e8 [36];
  undefined local_c4 [36];
  undefined local_a0 [36];
  undefined local_7c [36];
  undefined local_58 [36];
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdfc1a;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_398;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffc60;
  ExceptionList = &local_c;
  local_398 = 0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  switch(param_2) {
  case 0x1389:
    if (param_3 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 0x13;
      FUN_0043c211("Close current document");
      local_4 = CONCAT31(local_4._1_3_,0x14);
      uVar2 = FUN_00820bf9(local_19c,local_154);
      FUN_0043261a(uVar2);
      FUN_0040159c();
LAB_0097d01e:
      local_4 = local_4 & 0xffffff00;
      FUN_0040159c();
    }
    break;
  default:
    FUN_004325b6(PTR_DAT_03236318);
    goto LAB_0097d05e;
  case 0x138b:
    if (param_3 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 0x15;
      FUN_0043c211("Save current document");
      local_4 = CONCAT31(local_4._1_3_,0x16);
      uVar2 = FUN_00820bf9(local_10c,local_c4);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      goto LAB_0097d01e;
    }
    break;
  case 0x138c:
    if (param_3 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 0x17;
      FUN_0043c211("Save current document with a different filename");
      local_4 = CONCAT31(local_4._1_3_,0x18);
      uVar2 = FUN_00820bf9(local_58,local_7c);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      goto LAB_0097d01e;
    }
    break;
  case 0x138e:
    if (param_3 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 0xd;
      FUN_0043c211("Quit this program");
      local_4 = CONCAT31(local_4._1_3_,0xe);
      uVar2 = FUN_00820bf9(local_34c,local_304);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      goto LAB_0097d01e;
    }
    break;
  case 0x138f:
    if (param_3 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 0x11;
      FUN_0043c211("Undo last action");
      local_4 = CONCAT31(local_4._1_3_,0x12);
      uVar2 = FUN_00820bf9(local_22c,local_1e4);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      goto LAB_0097d01e;
    }
    break;
  case 0x1390:
    if (param_3 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 0xf;
      FUN_0043c211("Redo last action");
      local_4 = CONCAT31(local_4._1_3_,0x10);
      uVar2 = FUN_00820bf9(local_2bc,local_274);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      goto LAB_0097d01e;
    }
    break;
  case 0x1396:
    if (param_3 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 1;
      FUN_0043c211("Show about dialog");
      local_4 = CONCAT31(local_4._1_3_,2);
      uVar2 = FUN_00820bf9(local_1c0,local_328);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      goto LAB_0097d01e;
    }
    break;
  case 0x13a7:
    if (param_3 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 5;
      FUN_0043c211("Cut selection");
      local_4 = CONCAT31(local_4._1_3_,6);
      uVar2 = FUN_00820bf9(local_178,local_298);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      goto LAB_0097d01e;
    }
    break;
  case 0x13a8:
    if (param_3 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 3;
      FUN_0043c211("Copy selection");
      local_4 = CONCAT31(local_4._1_3_,4);
      uVar2 = FUN_00820bf9(local_e8,local_2e0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      goto LAB_0097d01e;
    }
    break;
  case 0x13a9:
    if (param_3 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 0xb;
      FUN_0043c211("Paste selection");
      local_4 = CONCAT31(local_4._1_3_,0xc);
      uVar2 = FUN_00820bf9(local_394,local_370);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      goto LAB_0097d01e;
    }
    break;
  case 0x13ae:
    if (param_3 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 7;
      FUN_0043c211("Delete selection");
      local_4 = CONCAT31(local_4._1_3_,8);
      uVar2 = FUN_00820bf9(local_a0,local_250);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      goto LAB_0097d01e;
    }
    break;
  case 0x13af:
    if (param_3 == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 9;
      FUN_0043c211("Replace selection");
      local_4 = CONCAT31(local_4._1_3_,10);
      uVar2 = FUN_00820bf9(local_130,local_208);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      goto LAB_0097d01e;
    }
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(local_34,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
LAB_0097d05e:
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30,uVar1);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_0097d110(undefined *param_1,int param_2,uint param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined auStack_28ac [3];
  char local_28a9;
  undefined4 local_28a8;
  undefined *local_28a4;
  undefined local_28a0 [4];
  undefined4 local_289c;
  uint local_2888;
  void *local_2884;
  undefined local_287c [4];
  int local_2878;
  undefined local_286c [36];
  undefined local_2848 [36];
  undefined local_2824 [36];
  undefined local_2800 [36];
  undefined local_27dc [36];
  undefined local_27b8 [36];
  undefined local_2794 [36];
  undefined local_2770 [36];
  undefined local_274c [36];
  undefined local_2728 [36];
  undefined local_2704 [36];
  undefined local_26e0 [36];
  undefined local_26bc [36];
  undefined local_2698 [36];
  undefined local_2674 [36];
  undefined local_2650 [36];
  undefined local_262c [36];
  undefined local_2608 [36];
  undefined local_25e4 [36];
  undefined local_25c0 [36];
  undefined local_259c [36];
  undefined local_2578 [36];
  undefined local_2554 [36];
  undefined local_2530 [36];
  undefined local_250c [36];
  undefined local_24e8 [36];
  undefined local_24c4 [36];
  undefined local_24a0 [36];
  undefined local_247c [36];
  undefined local_2458 [36];
  undefined local_2434 [36];
  undefined local_2410 [36];
  undefined local_23ec [36];
  undefined local_23c8 [36];
  undefined local_23a4 [36];
  undefined local_2380 [36];
  undefined local_235c [36];
  undefined local_2338 [36];
  undefined local_2314 [36];
  undefined local_22f0 [36];
  undefined local_22cc [36];
  undefined local_22a8 [36];
  undefined local_2284 [36];
  undefined local_2260 [36];
  undefined local_223c [36];
  undefined local_2218 [36];
  undefined local_21f4 [36];
  undefined local_21d0 [36];
  undefined local_21ac [36];
  undefined local_2188 [36];
  undefined local_2164 [36];
  undefined local_2140 [36];
  undefined local_211c [36];
  undefined local_20f8 [36];
  undefined local_20d4 [36];
  undefined local_20b0 [36];
  undefined local_208c [36];
  undefined local_2068 [36];
  undefined local_2044 [36];
  undefined local_2020 [36];
  undefined local_1ffc [36];
  undefined local_1fd8 [36];
  undefined local_1fb4 [36];
  undefined local_1f90 [36];
  undefined local_1f6c [36];
  undefined local_1f48 [36];
  undefined local_1f24 [36];
  undefined local_1f00 [36];
  undefined local_1edc [36];
  undefined local_1eb8 [36];
  undefined local_1e94 [36];
  undefined local_1e70 [36];
  undefined local_1e4c [36];
  undefined local_1e28 [36];
  undefined local_1e04 [36];
  undefined local_1de0 [36];
  undefined local_1dbc [36];
  undefined local_1d98 [36];
  undefined local_1d74 [36];
  undefined local_1d50 [36];
  undefined local_1d2c [36];
  undefined local_1d08 [36];
  undefined local_1ce4 [36];
  undefined local_1cc0 [36];
  undefined local_1c9c [36];
  undefined local_1c78 [36];
  undefined local_1c54 [36];
  undefined local_1c30 [36];
  undefined local_1c0c [36];
  undefined local_1be8 [36];
  undefined local_1bc4 [36];
  undefined local_1ba0 [36];
  undefined local_1b7c [36];
  undefined local_1b58 [36];
  undefined local_1b34 [36];
  undefined local_1b10 [36];
  undefined local_1aec [36];
  undefined local_1ac8 [36];
  undefined local_1aa4 [36];
  undefined local_1a80 [36];
  undefined local_1a5c [36];
  undefined local_1a38 [36];
  undefined local_1a14 [36];
  undefined local_19f0 [36];
  undefined local_19cc [36];
  undefined local_19a8 [36];
  undefined local_1984 [36];
  undefined local_1960 [36];
  undefined local_193c [36];
  undefined local_1918 [36];
  undefined local_18f4 [36];
  undefined local_18d0 [36];
  undefined local_18ac [36];
  undefined local_1888 [36];
  undefined local_1864 [36];
  undefined local_1840 [36];
  undefined local_181c [36];
  undefined local_17f8 [36];
  undefined local_17d4 [36];
  undefined local_17b0 [36];
  undefined local_178c [36];
  undefined local_1768 [36];
  undefined local_1744 [36];
  undefined local_1720 [36];
  undefined local_16fc [36];
  undefined local_16d8 [36];
  undefined local_16b4 [36];
  undefined local_1690 [36];
  undefined local_166c [36];
  undefined local_1648 [36];
  undefined local_1624 [36];
  undefined local_1600 [36];
  undefined local_15dc [36];
  undefined local_15b8 [36];
  undefined local_1594 [36];
  undefined local_1570 [36];
  undefined local_154c [36];
  undefined local_1528 [36];
  undefined local_1504 [36];
  undefined local_14e0 [36];
  undefined local_14bc [36];
  undefined local_1498 [36];
  undefined local_1474 [36];
  undefined local_1450 [36];
  undefined local_142c [36];
  undefined local_1408 [36];
  undefined local_13e4 [36];
  undefined local_13c0 [36];
  undefined local_139c [36];
  undefined local_1378 [36];
  undefined local_1354 [36];
  undefined local_1330 [36];
  undefined local_130c [36];
  undefined local_12e8 [36];
  undefined local_12c4 [36];
  undefined local_12a0 [36];
  undefined local_127c [36];
  undefined local_1258 [36];
  undefined local_1234 [36];
  undefined local_1210 [36];
  undefined local_11ec [36];
  undefined local_11c8 [36];
  undefined local_11a4 [36];
  undefined local_1180 [36];
  undefined local_115c [36];
  undefined local_1138 [36];
  undefined local_1114 [36];
  undefined local_10f0 [36];
  undefined local_10cc [36];
  undefined local_10a8 [36];
  undefined local_1084 [36];
  undefined local_1060 [36];
  undefined local_103c [36];
  undefined local_1018 [36];
  undefined local_ff4 [36];
  undefined local_fd0 [36];
  undefined local_fac [36];
  undefined local_f88 [36];
  undefined local_f64 [36];
  undefined local_f40 [36];
  undefined local_f1c [36];
  undefined local_ef8 [36];
  undefined local_ed4 [36];
  undefined local_eb0 [36];
  undefined local_e8c [36];
  undefined local_e68 [36];
  undefined local_e44 [36];
  undefined local_e20 [36];
  undefined local_dfc [36];
  undefined local_dd8 [36];
  undefined local_db4 [36];
  undefined local_d90 [36];
  undefined local_d6c [36];
  undefined local_d48 [36];
  undefined local_d24 [36];
  undefined local_d00 [36];
  undefined local_cdc [36];
  undefined local_cb8 [36];
  undefined local_c94 [36];
  undefined local_c70 [36];
  undefined local_c4c [36];
  undefined local_c28 [36];
  undefined local_c04 [36];
  undefined local_be0 [36];
  undefined local_bbc [36];
  undefined local_b98 [36];
  undefined local_b74 [36];
  undefined local_b50 [36];
  undefined local_b2c [36];
  undefined local_b08 [36];
  undefined local_ae4 [36];
  undefined local_ac0 [36];
  undefined local_a9c [36];
  undefined local_a78 [36];
  undefined local_a54 [36];
  undefined local_a30 [36];
  undefined local_a0c [36];
  undefined local_9e8 [36];
  undefined local_9c4 [36];
  undefined local_9a0 [36];
  undefined local_97c [36];
  undefined local_958 [36];
  undefined local_934 [36];
  undefined local_910 [36];
  undefined local_8ec [36];
  undefined local_8c8 [36];
  undefined local_8a4 [36];
  undefined local_880 [36];
  undefined local_85c [36];
  undefined local_838 [36];
  undefined local_814 [36];
  undefined local_7f0 [36];
  undefined local_7cc [36];
  undefined local_7a8 [36];
  undefined local_784 [36];
  undefined local_760 [36];
  undefined local_73c [36];
  undefined local_718 [36];
  undefined local_6f4 [36];
  undefined local_6d0 [36];
  undefined local_6ac [36];
  undefined local_688 [36];
  undefined local_664 [36];
  undefined local_640 [36];
  undefined local_61c [36];
  undefined local_5f8 [36];
  undefined local_5d4 [36];
  undefined local_5b0 [36];
  undefined local_58c [36];
  undefined local_568 [36];
  undefined local_544 [36];
  undefined local_520 [36];
  undefined local_4fc [36];
  undefined local_4d8 [36];
  undefined local_4b4 [36];
  undefined local_490 [36];
  undefined local_46c [36];
  undefined local_448 [36];
  undefined local_424 [36];
  undefined local_400 [36];
  undefined local_3dc [36];
  undefined local_3b8 [36];
  undefined local_394 [36];
  undefined local_370 [36];
  undefined local_34c [36];
  undefined local_328 [36];
  undefined local_304 [36];
  undefined local_2e0 [36];
  undefined local_2bc [36];
  undefined local_298 [36];
  undefined local_274 [36];
  undefined local_250 [36];
  undefined local_22c [36];
  undefined local_208 [36];
  undefined local_1e4 [36];
  undefined local_1c0 [36];
  undefined local_19c [36];
  undefined local_178 [36];
  undefined local_154 [36];
  undefined local_130 [36];
  undefined local_10c [36];
  undefined local_e8 [36];
  undefined local_c4 [36];
  undefined local_a0 [36];
  undefined local_7c [36];
  undefined local_58 [36];
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be08e7;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_28ac;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffd744;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_28a4 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  local_28a8 = 1;
  if (param_2 == 0x13ed) {
    param_3 = param_3 & 0xfffffffe;
  }
  switch(param_2) {
  case 5000:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xa3;
      FUN_0043c211("Open...");
      local_4._0_1_ = 0xa4;
      uVar2 = FUN_00820bf9(local_235c,local_2314);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xa1;
      FUN_0043c211("&Open...");
      local_4._0_1_ = 0xa2;
      uVar2 = FUN_00820bf9(local_23ec,local_23a4);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1389:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x27;
      FUN_0043c211("Close");
      local_4._0_1_ = 0x28;
      uVar2 = FUN_00820bf9(local_11a4,local_22f0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x25;
      FUN_0043c211("&Close");
      local_4._0_1_ = 0x26;
      uVar2 = FUN_00820bf9(local_4b4,local_2338);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x138a:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x97;
      FUN_0043c211(&DAT_00d64dd8);
      local_4._0_1_ = 0x98;
      uVar2 = FUN_00820bf9(local_26bc,local_2674);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x95;
      FUN_0043c211(&DAT_00d64ddc);
      local_4._0_1_ = 0x96;
      uVar2 = FUN_00820bf9(local_274c,local_2704);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x138b:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xcf;
      FUN_0043c211(&DAT_00d64d04);
      local_4._0_1_ = 0xd0;
      uVar2 = FUN_00820bf9(local_16fc,local_16b4);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xcd;
      FUN_0043c211("&Save");
      local_4._0_1_ = 0xce;
      uVar2 = FUN_00820bf9(local_178c,local_1744);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x138c:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xd3;
      FUN_0043c211("Save as");
      local_4._0_1_ = 0xd4;
      uVar2 = FUN_00820bf9(local_15dc,local_1594);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xd1;
      FUN_0043c211("&Save as");
      local_4._0_1_ = 0xd2;
      uVar2 = FUN_00820bf9(local_166c,local_1624);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\stockitem.cpp",0xd6,"wxGetStockLabel","Assert failure",
                   L"invalid stock item ID",uVar1);
    }
    break;
  case 0x138e:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x47;
      FUN_0043c211(&DAT_00d64f08);
      local_4._0_1_ = 0x48;
      uVar2 = FUN_00820bf9(local_f64,local_1e70);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x45;
      FUN_0043c211("&Quit");
      local_4._0_1_ = 0x46;
      uVar2 = FUN_00820bf9(local_424,local_1eb8);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x138f:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x103;
      FUN_0043c211(&DAT_00d64c10);
      local_4 = CONCAT31(local_4._1_3_,4);
      uVar2 = FUN_00820bf9(local_838,local_7f0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x101;
      FUN_0043c211("&Undo");
      local_4 = CONCAT31(local_4._1_3_,2);
      uVar2 = FUN_00820bf9(local_8c8,local_880);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    break;
  case 0x1390:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xbb;
      FUN_0043c211(&DAT_00d64d48);
      local_4._0_1_ = 0xbc;
      uVar2 = FUN_00820bf9(local_1c9c,local_1c54);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xb9;
      FUN_0043c211("&Redo");
      local_4._0_1_ = 0xba;
      uVar2 = FUN_00820bf9(local_1d2c,local_1ce4);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1391:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 99;
      FUN_0043c211(&DAT_00d47fa0);
      local_4._0_1_ = 100;
      uVar2 = FUN_00820bf9(local_d6c,local_1a80);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x61;
      FUN_0043c211("&Help");
      local_4._0_1_ = 0x62;
      uVar2 = FUN_00820bf9(local_6f4,local_1ac8);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1392:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xb3;
      FUN_0043c211("Print...");
      local_4._0_1_ = 0xb4;
      uVar2 = FUN_00820bf9(local_1edc,local_1e94);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xb1;
      FUN_0043c211("&Print...");
      local_4._0_1_ = 0xb2;
      uVar2 = FUN_00820bf9(local_1f6c,local_1f24);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1395:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xaf;
      FUN_0043c211("Preview...");
      local_4._0_1_ = 0xb0;
      uVar2 = FUN_00820bf9(local_1ffc,local_1fb4);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xad;
      FUN_0043c211("&Preview...");
      local_4._0_1_ = 0xae;
      uVar2 = FUN_00820bf9(local_208c,local_2044);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1396:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 3;
      FUN_0043c211("About...");
      local_4._0_1_ = 4;
      uVar2 = FUN_00820bf9(local_1474,local_2800);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 1;
      FUN_0043c211("&About...");
      local_4._0_1_ = 2;
      uVar2 = FUN_00820bf9(local_28a0,local_34);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x139e:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xab;
      FUN_0043c211("Preferences");
      local_4._0_1_ = 0xac;
      uVar2 = FUN_00820bf9(local_211c,local_20d4);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xa9;
      FUN_0043c211("&Preferences");
      local_4._0_1_ = 0xaa;
      uVar2 = FUN_00820bf9(local_21ac,local_2164);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13a6:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x3f;
      FUN_0043c211(&DAT_00d64f2c);
      local_4._0_1_ = 0x40;
      uVar2 = FUN_00820bf9(local_ff4,local_1f90);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x3d;
      FUN_0043c211("&Edit");
      local_4._0_1_ = 0x3e;
      uVar2 = FUN_00820bf9(local_154,local_1fd8);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13a7:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x33;
      FUN_0043c211(&DAT_00d64f54);
      local_4._0_1_ = 0x34;
      uVar2 = FUN_00820bf9(local_10cc,local_2140);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x31;
      FUN_0043c211(&DAT_00d5f3ac);
      local_4._0_1_ = 0x32;
      uVar2 = FUN_00820bf9(local_8a4,local_2188);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13a8:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x2f;
      FUN_0043c211(&DAT_00d64f58);
      local_4._0_1_ = 0x30;
      uVar2 = FUN_00820bf9(local_1114,local_21d0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x2d;
      FUN_0043c211("&Copy");
      local_4._0_1_ = 0x2e;
      uVar2 = FUN_00820bf9(local_274,local_2218);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13a9:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xa7;
      FUN_0043c211("Paste");
      local_4._0_1_ = 0xa8;
      uVar2 = FUN_00820bf9(local_223c,local_21f4);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xa5;
      FUN_0043c211("&Paste");
      local_4._0_1_ = 0xa6;
      uVar2 = FUN_00820bf9(local_22cc,local_2284);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13aa:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x23;
      FUN_0043c211("Clear");
      local_4._0_1_ = 0x24;
      uVar2 = FUN_00820bf9(local_11ec,local_2380);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x21;
      FUN_0043c211("&Clear");
      local_4._0_1_ = 0x22;
      uVar2 = FUN_00820bf9(local_934,local_23c8);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13ab:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x4f;
      FUN_0043c211(&DAT_00d64ee8);
      local_4._0_1_ = 0x50;
      uVar2 = FUN_00820bf9(local_ed4,local_1d50);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x4d;
      FUN_0043c211("&Find");
      local_4._0_1_ = 0x4e;
      uVar2 = FUN_00820bf9(local_22c,local_1d98);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13ad:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xd7;
      FUN_0043c211("Select All");
      local_4._0_1_ = 0xd8;
      uVar2 = FUN_00820bf9(local_14bc,local_1450);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xd5;
      FUN_0043c211("Select &All");
      local_4._0_1_ = 0xd6;
      uVar2 = FUN_00820bf9(local_154c,local_1504);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13ae:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x37;
      FUN_0043c211("Delete");
      local_4._0_1_ = 0x38;
      uVar2 = FUN_00820bf9(local_1084,local_20b0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x35;
      FUN_0043c211("&Delete");
      local_4._0_1_ = 0x36;
      uVar2 = FUN_00820bf9(local_46c,local_20f8);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13af:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 199;
      FUN_0043c211("Replace");
      local_4._0_1_ = 200;
      uVar2 = FUN_00820bf9(local_193c,local_18f4);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xc5;
      FUN_0043c211("Rep&lace");
      local_4._0_1_ = 0xc6;
      uVar2 = FUN_00820bf9(local_19cc,local_1984);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13b1:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xb7;
      FUN_0043c211("Properties");
      local_4._0_1_ = 0xb8;
      uVar2 = FUN_00820bf9(local_1dbc,local_1d74);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xb5;
      FUN_0043c211("&Properties");
      local_4._0_1_ = 0xb6;
      uVar2 = FUN_00820bf9(local_1e4c,local_1e04);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13ba:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x4b;
      FUN_0043c211(&DAT_00d64ef8);
      local_4._0_1_ = 0x4c;
      uVar2 = FUN_00820bf9(local_f1c,local_1de0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x49;
      FUN_0043c211("&File");
      local_4._0_1_ = 0x4a;
      uVar2 = FUN_00820bf9(local_7cc,local_1e28);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13ec:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x9f;
      FUN_0043c211(&DAT_00d47f94);
      local_4._0_1_ = 0xa0;
      uVar2 = FUN_00820bf9(local_247c,local_2434);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x9d;
      FUN_0043c211(&DAT_00d64dd0);
      local_4._0_1_ = 0x9e;
      uVar2 = FUN_00820bf9(local_250c,local_24c4);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13ed:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x1b;
      FUN_0043c211("Cancel");
      local_4._0_1_ = 0x1c;
      uVar2 = FUN_00820bf9(local_127c,local_24a0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x19;
      FUN_0043c211("&Cancel");
      local_4._0_1_ = 0x1a;
      uVar2 = FUN_00820bf9(local_97c,local_24e8);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13ee:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xb;
      FUN_0043c211("Apply");
      local_4._0_1_ = 0xc;
      uVar2 = FUN_00820bf9(local_139c,local_26e0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 9;
      FUN_0043c211("&Apply");
      local_4._0_1_ = 10;
      uVar2 = FUN_00820bf9(local_a0c,local_2728);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13ef:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x10f;
      FUN_0043c211(&DAT_00d47f8c);
      local_4 = CONCAT31(local_4._1_3_,0x10);
      uVar2 = FUN_00820bf9(local_4d8,local_490);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x10d;
      FUN_0043c211(&DAT_00d64be8);
      local_4 = CONCAT31(local_4._1_3_,0xe);
      uVar2 = FUN_00820bf9(local_568,local_520);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    break;
  case 0x13f0:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x9b;
      FUN_0043c211(&DAT_00d47f90);
      local_4._0_1_ = 0x9c;
      uVar2 = FUN_00820bf9(local_259c,local_2554);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x99;
      FUN_0043c211(&DAT_00d64dd4);
      local_4._0_1_ = 0x9a;
      uVar2 = FUN_00820bf9(local_262c,local_25e4);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13f2:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x5b;
      FUN_0043c211("Forward");
      local_4._0_1_ = 0x5c;
      uVar2 = FUN_00820bf9(local_dfc,local_1ba0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x59;
      FUN_0043c211("&Forward");
      local_4._0_1_ = 0x5a;
      uVar2 = FUN_00820bf9(local_73c,local_1be8);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13f3:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xf;
      FUN_0043c211(&DAT_00d64fc4);
      local_4._0_1_ = 0x10;
      uVar2 = FUN_00820bf9(local_1354,local_2650);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xd;
      FUN_0043c211("&Back");
      local_4._0_1_ = 0xe;
      uVar2 = FUN_00820bf9(local_2bc,local_2698);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13fe:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 7;
      FUN_0043c211(&DAT_00d64fe4);
      local_4._0_1_ = 8;
      uVar2 = FUN_00820bf9(local_13e4,local_2770);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 5;
      FUN_0043c211(&DAT_00d64fe4);
      local_4._0_1_ = 6;
      uVar2 = FUN_00820bf9(local_544,local_27b8);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x13ff:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xc3;
      FUN_0043c211("Remove");
      local_4._0_1_ = 0xc4;
      uVar2 = FUN_00820bf9(local_1a5c,local_1a14);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xc1;
      FUN_0043c211("Remove");
      local_4._0_1_ = 0xc2;
      uVar2 = FUN_00820bf9(local_1aec,local_1aa4);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1400:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x10b;
      FUN_0043c211(&DAT_00d64bf0);
      local_4 = CONCAT31(local_4._1_3_,0xc);
      uVar2 = FUN_00820bf9(local_5f8,local_5b0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x109;
      FUN_0043c211(&DAT_00d64bf4);
      local_4 = CONCAT31(local_4._1_3_,10);
      uVar2 = FUN_00820bf9(local_688,local_640);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    break;
  case 0x1401:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x3b;
      FUN_0043c211(&DAT_00d64f3c);
      local_4._0_1_ = 0x3c;
      uVar2 = FUN_00820bf9(local_103c,local_2020);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x39;
      FUN_0043c211("&Down");
      local_4._0_1_ = 0x3a;
      uVar2 = FUN_00820bf9(local_85c,local_2068);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1402:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x67;
      FUN_0043c211(&DAT_00d64e84);
      local_4._0_1_ = 0x68;
      uVar2 = FUN_00820bf9(local_d24,local_19f0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x65;
      FUN_0043c211("&Home");
      local_4._0_1_ = 0x66;
      uVar2 = FUN_00820bf9(local_394,local_1a38);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1403:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xbf;
      FUN_0043c211("Refresh");
      local_4._0_1_ = 0xc0;
      uVar2 = FUN_00820bf9(local_1b7c,local_1b34);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xbd;
      FUN_0043c211("Refresh");
      local_4._0_1_ = 0xbe;
      uVar2 = FUN_00820bf9(local_1c0c,local_1bc4);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1404:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xef;
      FUN_0043c211(&DAT_00d64c68);
      local_4._0_1_ = 0xf0;
      uVar2 = FUN_00820bf9(local_dd8,local_d90);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xed;
      FUN_0043c211("&Stop");
      local_4._0_1_ = 0xee;
      uVar2 = FUN_00820bf9(local_e68,local_e20);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1405:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x6f;
      FUN_0043c211("Index");
      local_4._0_1_ = 0x70;
      uVar2 = FUN_00820bf9(local_c94,local_18d0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x6d;
      FUN_0043c211("&Index");
      local_4._0_1_ = 0x6e;
      uVar2 = FUN_00820bf9(local_1e4,local_1918);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1406:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x13;
      FUN_0043c211(&DAT_00d64fb4);
      local_4._0_1_ = 0x14;
      uVar2 = FUN_00820bf9(local_130c,local_25c0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x11;
      FUN_0043c211("&Bold");
      local_4._0_1_ = 0x12;
      uVar2 = FUN_00820bf9(local_9c4,local_2608);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1407:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x77;
      FUN_0043c211("Italic");
      local_4._0_1_ = 0x78;
      uVar2 = FUN_00820bf9(local_c04,local_17b0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x75;
      FUN_0043c211("&Italic");
      local_4._0_1_ = 0x76;
      uVar2 = FUN_00820bf9(local_34c,local_17f8);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1408:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x7f;
      FUN_0043c211("Centered");
      local_4._0_1_ = 0x80;
      uVar2 = FUN_00820bf9(local_b74,local_1690);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x7d;
      FUN_0043c211("Centered");
      local_4._0_1_ = 0x7e;
      uVar2 = FUN_00820bf9(local_10c,local_16d8);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1409:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x83;
      FUN_0043c211("Justified");
      local_4._0_1_ = 0x84;
      uVar2 = FUN_00820bf9(local_b2c,local_1600);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x81;
      FUN_0043c211("Justified");
      local_4._0_1_ = 0x82;
      uVar2 = FUN_00820bf9(local_5d4,local_1648);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x140a:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x8b;
      FUN_0043c211("Align Right");
      local_4._0_1_ = 0x8c;
      uVar2 = FUN_00820bf9(local_a9c,local_14e0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x89;
      FUN_0043c211("Align Right");
      local_4._0_1_ = 0x8a;
      uVar2 = FUN_00820bf9(local_58c,local_1528);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x140b:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x87;
      FUN_0043c211("Align Left");
      local_4._0_1_ = 0x88;
      uVar2 = FUN_00820bf9(local_ae4,local_1570);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x85;
      FUN_0043c211("Align Left");
      local_4._0_1_ = 0x86;
      uVar2 = FUN_00820bf9(local_304,local_15b8);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x140c:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xff;
      FUN_0043c211("Underline");
      local_4 = 0x100;
      uVar2 = FUN_00820bf9(local_958,local_910);
      FUN_0043261a(uVar2);
      local_4 = 0xff;
      FUN_0040159c();
      local_4 = local_4 & 0xffffff00;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xfd;
      FUN_0043c211("&Underline");
      local_4._0_1_ = 0xfe;
      uVar2 = FUN_00820bf9(local_9e8,local_9a0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x140d:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x6b;
      FUN_0043c211("Indent");
      local_4._0_1_ = 0x6c;
      uVar2 = FUN_00820bf9(local_cdc,local_1960);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x69;
      FUN_0043c211("Indent");
      local_4._0_1_ = 0x6a;
      uVar2 = FUN_00820bf9(local_6ac,local_19a8);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x140e:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x107;
      FUN_0043c211("Unindent");
      local_4 = CONCAT31(local_4._1_3_,8);
      uVar2 = FUN_00820bf9(local_718,local_6d0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x105;
      FUN_0043c211("&Unindent");
      local_4 = CONCAT31(local_4._1_3_,6);
      uVar2 = FUN_00820bf9(local_7a8,local_760);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    break;
  case 0x140f:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x113;
      FUN_0043c211("Actual Size");
      local_4 = CONCAT31(local_4._1_3_,0x14);
      uVar2 = FUN_00820bf9(local_3b8,local_370);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x111;
      FUN_0043c211("&Actual Size");
      local_4 = CONCAT31(local_4._1_3_,0x12);
      uVar2 = FUN_00820bf9(local_448,local_400);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    break;
  case 0x1410:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x117;
      FUN_0043c211("Zoom to Fit");
      local_4 = CONCAT31(local_4._1_3_,0x18);
      uVar2 = FUN_00820bf9(local_298,local_250);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x115;
      FUN_0043c211("Zoom to &Fit");
      local_4 = CONCAT31(local_4._1_3_,0x16);
      uVar2 = FUN_00820bf9(local_328,local_2e0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    break;
  case 0x1411:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x11b;
      FUN_0043c211("Zoom In");
      local_4 = CONCAT31(local_4._1_3_,0x1c);
      uVar2 = FUN_00820bf9(local_178,local_130);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x119;
      FUN_0043c211("Zoom &In");
      local_4 = CONCAT31(local_4._1_3_,0x1a);
      uVar2 = FUN_00820bf9(local_208,local_1c0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    break;
  case 0x1412:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x11f;
      FUN_0043c211("Zoom Out");
      local_4 = CONCAT31(local_4._1_3_,0x20);
      uVar2 = FUN_00820bf9(local_58,local_286c);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x11d;
      FUN_0043c211("Zoom &Out");
      local_4 = CONCAT31(local_4._1_3_,0x1e);
      uVar2 = FUN_00820bf9(local_e8,local_a0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = 0;
      FUN_0040159c();
    }
    break;
  case 0x1413:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xfb;
      FUN_0043c211("Undelete");
      local_4._0_1_ = 0xfc;
      uVar2 = FUN_00820bf9(local_a78,local_a30);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xf9;
      FUN_0043c211("Undelete");
      local_4._0_1_ = 0xfa;
      uVar2 = FUN_00820bf9(local_b08,local_ac0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1414:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xcb;
      FUN_0043c211("Revert to Saved");
      local_4._0_1_ = 0xcc;
      uVar2 = FUN_00820bf9(local_181c,local_17d4);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xc9;
      FUN_0043c211("Revert to Saved");
      local_4._0_1_ = 0xca;
      uVar2 = FUN_00820bf9(local_18ac,local_1864);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1415:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x1f;
      FUN_0043c211("CD-Rom");
      local_4._0_1_ = 0x20;
      uVar2 = FUN_00820bf9(local_1234,local_2410);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x1d;
      FUN_0043c211("&CD-Rom");
      local_4._0_1_ = 0x1e;
      uVar2 = FUN_00820bf9(local_7c,local_2458);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1416:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x2b;
      FUN_0043c211("Convert");
      local_4._0_1_ = 0x2c;
      uVar2 = FUN_00820bf9(local_115c,local_2260);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x29;
      FUN_0043c211("&Convert");
      local_4._0_1_ = 0x2a;
      uVar2 = FUN_00820bf9(local_8ec,local_22a8);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1417:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x43;
      FUN_0043c211("Execute");
      local_4._0_1_ = 0x44;
      uVar2 = FUN_00820bf9(local_fac,local_1f00);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x41;
      FUN_0043c211("&Execute");
      local_4._0_1_ = 0x42;
      uVar2 = FUN_00820bf9(local_814,local_1f48);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1418:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x57;
      FUN_0043c211("Floppy");
      local_4._0_1_ = 0x58;
      uVar2 = FUN_00820bf9(local_e44,local_1c30);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x55;
      FUN_0043c211("&Floppy");
      local_4._0_1_ = 0x56;
      uVar2 = FUN_00820bf9(local_3dc,local_1c78);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1419:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x5f;
      FUN_0043c211("Harddisk");
      local_4._0_1_ = 0x60;
      uVar2 = FUN_00820bf9(local_db4,local_1b10);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x5d;
      FUN_0043c211("&Harddisk");
      local_4._0_1_ = 0x5e;
      uVar2 = FUN_00820bf9(local_c4,local_1b58);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x141a:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x17;
      FUN_0043c211("Bottom");
      local_4._0_1_ = 0x18;
      uVar2 = FUN_00820bf9(local_12c4,local_2530);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x15;
      FUN_0043c211("&Bottom");
      local_4._0_1_ = 0x16;
      uVar2 = FUN_00820bf9(local_4fc,local_2578);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x141b:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x53;
      FUN_0043c211("First");
      local_4._0_1_ = 0x54;
      uVar2 = FUN_00820bf9(local_e8c,local_1cc0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x51;
      FUN_0043c211("&First");
      local_4._0_1_ = 0x52;
      uVar2 = FUN_00820bf9(local_784,local_1d08);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x141c:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x8f;
      FUN_0043c211(&DAT_00d64df8);
      local_4._0_1_ = 0x90;
      uVar2 = FUN_00820bf9(local_1498,local_a54);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x8d;
      FUN_0043c211("&Last");
      local_4._0_1_ = 0x8e;
      uVar2 = FUN_00820bf9(local_19c,local_2848);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x141d:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xf7;
      FUN_0043c211(&DAT_00d64c3c);
      local_4._0_1_ = 0xf8;
      uVar2 = FUN_00820bf9(local_b98,local_b50);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xf5;
      FUN_0043c211(&DAT_00d64c40);
      local_4._0_1_ = 0xf6;
      uVar2 = FUN_00820bf9(local_c28,local_be0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x141e:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x73;
      FUN_0043c211(&DAT_00d64e5c);
      local_4._0_1_ = 0x74;
      uVar2 = FUN_00820bf9(local_c4c,local_1840);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x71;
      FUN_0043c211("&Info");
      local_4._0_1_ = 0x72;
      uVar2 = FUN_00820bf9(local_664,local_1888);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x141f:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x7b;
      FUN_0043c211("Jump to");
      local_4._0_1_ = 0x7c;
      uVar2 = FUN_00820bf9(local_bbc,local_1720);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x79;
      FUN_0043c211("&Jump to");
      local_4._0_1_ = 0x7a;
      uVar2 = FUN_00820bf9(local_61c,local_1768);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1420:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x93;
      FUN_0043c211("Network");
      local_4._0_1_ = 0x94;
      uVar2 = FUN_00820bf9(local_27dc,local_2794);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0x91;
      FUN_0043c211("&Network");
      local_4._0_1_ = 0x92;
      uVar2 = FUN_00820bf9(local_142c,local_2824);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1421:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xdb;
      FUN_0043c211("Color");
      local_4._0_1_ = 0xdc;
      uVar2 = FUN_00820bf9(local_1378,local_1330);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xd9;
      FUN_0043c211("&Color");
      local_4._0_1_ = 0xda;
      uVar2 = FUN_00820bf9(local_1408,local_13c0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1422:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xdf;
      FUN_0043c211(&DAT_00d64cc4);
      local_4._0_1_ = 0xe0;
      uVar2 = FUN_00820bf9(local_1258,local_1210);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xdd;
      FUN_0043c211("&Font");
      local_4._0_1_ = 0xde;
      uVar2 = FUN_00820bf9(local_12e8,local_12a0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1423:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xe3;
      FUN_0043c211("Ascending");
      local_4._0_1_ = 0xe4;
      uVar2 = FUN_00820bf9(local_1138,local_10f0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xe1;
      FUN_0043c211("&Ascending");
      local_4._0_1_ = 0xe2;
      uVar2 = FUN_00820bf9(local_11c8,local_1180);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1424:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xe7;
      FUN_0043c211("Descending");
      local_4._0_1_ = 0xe8;
      uVar2 = FUN_00820bf9(local_1018,local_fd0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xe5;
      FUN_0043c211("&Descending");
      local_4._0_1_ = 0xe6;
      uVar2 = FUN_00820bf9(local_10a8,local_1060);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1425:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xeb;
      FUN_0043c211("Spell Check");
      local_4._0_1_ = 0xec;
      uVar2 = FUN_00820bf9(local_ef8,local_eb0);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xe9;
      FUN_0043c211("&Spell Check");
      local_4._0_1_ = 0xea;
      uVar2 = FUN_00820bf9(local_f88,local_f40);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    break;
  case 0x1426:
    if ((param_3 & 1) == 0) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xf3;
      FUN_0043c211("Strikethrough");
      local_4._0_1_ = 0xf4;
      uVar2 = FUN_00820bf9(local_cb8,local_c70);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xf1;
      FUN_0043c211("&Strikethrough");
      local_4._0_1_ = 0xf2;
      uVar2 = FUN_00820bf9(local_d48,local_d00);
      FUN_0043261a(uVar2);
      FUN_0040159c();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
  }
  if ((param_3 & 4) != 0) {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 0x121;
    FUN_0043c211(&DAT_00d640d0);
    local_4._0_1_ = 0x22;
    local_28a9 = FUN_00852070(local_28a0,local_34);
    local_4 = CONCAT31(local_4._1_3_,0x21);
    _free(local_2884);
    if (7 < local_2888) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_289c);
    }
    if ((local_28a9 != '\0') && (param_1 != local_34)) {
      FID_conflict_assign(local_34,0,0xffffffff);
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((param_3 & 2) != 0)) {
      FUN_008402e0("..\\..\\src\\common\\stockitem.cpp",0xe6,"wxGetStockLabel",
                   "!(flags & wxSTOCK_WITH_ACCELERATOR)",
                   "labels without ellipsis shouldn\'t use accelerators");
    }
    local_4 = 0;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  if (((*(int *)(param_1 + 0x14) != 0) && ((param_3 & 2) != 0)) &&
     (FUN_0097c800(local_287c,param_2), local_2878 != 0)) {
    uVar2 = FUN_009b0980(local_286c);
    local_4 = 0x123;
    FID_conflict_append(1,9);
    FID_conflict_append(uVar2,0,0xffffffff);
    FUN_0040159c();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_00981b40(void)

{
  return &PTR_u_wxMessageDialog_0323bb00;
}



undefined4 FUN_00981b60(undefined4 param_1)

{
  switch(param_1) {
  case 1:
    return 0x13ec;
  case 2:
    goto switchD_00981b6a_caseD_2;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\msgdlg.cpp",0x353,"wxMSWMessageDialog::MSWTranslateReturnCode"
                   ,"Assert failure",L"unexpected return code");
    }
switchD_00981b6a_caseD_2:
    return 0x13ed;
  case 6:
    return 0x13ef;
  case 7:
    return 0x13f0;
  case 9:
    return 0x1391;
  }
}



int __fastcall FUN_00981be0(int param_1)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1 + 0x25c);
  if ((uVar1 & 0x40000) != 0) {
    return 0x40000;
  }
  if ((uVar1 & 0x200) != 0) {
    return 0x200;
  }
  if ((uVar1 & 0x100) != 0) {
    return 0x100;
  }
  if ((uVar1 & 0x400) != 0) {
    return 0x400;
  }
  if ((uVar1 & 0x800) != 0) {
    return 0x800;
  }
  return (-(uint)((uVar1 & 2) != 0) & 0xfffffc00) + 0x800;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * FUN_00981c40(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be092e;
  local_c = ExceptionList;
  if ((DAT_032e1480 & 1) == 0) {
    DAT_032e1480 = DAT_032e1480 | 1;
    local_4 = 0;
    ExceptionList = &local_c;
    DAT_032e1474 = FUN_00893ca0(100,DAT_0323f878 ^ (uint)&local_c);
    _DAT_032e1478 = 0;
    DAT_032e1470 = _calloc(DAT_032e1474,4);
    _atexit((_func_4879 *)&LAB_00c78460);
  }
  ExceptionList = local_c;
  return &DAT_032e1470;
}



void __thiscall
FUN_00981cc0(int *param_1_00,int param_1,undefined4 param_2,uint param_3,int param_4)

{
  undefined4 *puVar1;
  
  if (*(char *)(param_1_00 + 0x1f) == '\0') {
    *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) | param_3;
  }
  else {
    puVar1 = (undefined4 *)(*param_1_00 + *(int *)(param_1 + 0x24) * 8);
    *puVar1 = param_2;
    if (*(uint *)(param_4 + 0x18) < 8) {
      param_4 = param_4 + 4;
    }
    else {
      param_4 = *(int *)(param_4 + 4);
    }
    puVar1[1] = param_4;
    *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + 1;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (4 < *(uint *)(param_1 + 0x24))) {
      FUN_00840480("..\\..\\src\\msw\\msgdlg.cpp",0x31c,
                   "wxMSWMessageDialog::wxMSWTaskDialogConfig::AddTaskDialogButton",
                   "tdc.cButtons <= MAX_BUTTONS",L"Too many buttons");
      return;
    }
  }
  return;
}



void __fastcall FUN_00981d30(undefined4 *param_1)

{
  _free((void *)param_1[0x4b]);
  if (7 < (uint)param_1[0x4a]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x45]);
  }
  param_1[0x4a] = 7;
  param_1[0x49] = 0;
  *(undefined2 *)(param_1 + 0x45) = 0;
  _free((void *)param_1[0x42]);
  if (7 < (uint)param_1[0x41]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x3c]);
  }
  param_1[0x41] = 7;
  param_1[0x40] = 0;
  *(undefined2 *)(param_1 + 0x3c) = 0;
  _free((void *)param_1[0x39]);
  if (7 < (uint)param_1[0x38]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x33]);
  }
  param_1[0x38] = 7;
  param_1[0x37] = 0;
  *(undefined2 *)(param_1 + 0x33) = 0;
  _free((void *)param_1[0x30]);
  if (7 < (uint)param_1[0x2f]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x2a]);
  }
  param_1[0x2f] = 7;
  param_1[0x2e] = 0;
  *(undefined2 *)(param_1 + 0x2a) = 0;
  _free((void *)param_1[0x27]);
  if (7 < (uint)param_1[0x26]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x21]);
  }
  param_1[0x26] = 7;
  param_1[0x25] = 0;
  *(undefined2 *)(param_1 + 0x21) = 0;
  _free((void *)param_1[0x1b]);
  if (7 < (uint)param_1[0x1a]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x15]);
  }
  param_1[0x1a] = 7;
  param_1[0x19] = 0;
  *(undefined2 *)(param_1 + 0x15) = 0;
  _free((void *)param_1[0x12]);
  if (7 < (uint)param_1[0x11]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xc]);
  }
  param_1[0x11] = 7;
  param_1[0x10] = 0;
  *(undefined2 *)(param_1 + 0xc) = 0;
  _free((void *)param_1[9]);
  if (7 < (uint)param_1[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  FUN_00a3f66c(*param_1);
  return;
}



int __thiscall FUN_00981f00(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x24) = 0xfffffffd;
  return param_1_00;
}



int __thiscall FUN_00981f40(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x238,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int __thiscall FUN_00981f90(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x1f0,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int __thiscall FUN_00981fe0(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x214,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int __thiscall FUN_00982030(int *param_1_00,int param_1)

{
  int iVar1;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaad9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = param_1_00[0x9d];
  if (iVar1 != 0) {
    param_1_00 = param_1_00 + 0x98;
  }
  else {
    param_1_00 = (int *)(**(code **)(*param_1_00 + 0x3d8))
                                  (local_30,DAT_0323f878 ^ (uint)&stack0xffffffc4);
    uStack_4 = 0;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if (iVar1 == 0) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_009820f0(int *param_1_00,int param_1)

{
  int iVar1;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaad9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = param_1_00[0xa6];
  if (iVar1 != 0) {
    param_1_00 = param_1_00 + 0xa1;
  }
  else {
    param_1_00 = (int *)(**(code **)(*param_1_00 + 0x3dc))
                                  (local_30,DAT_0323f878 ^ (uint)&stack0xffffffc4);
    uStack_4 = 0;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if (iVar1 == 0) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_009821b0(int *param_1_00,int param_1)

{
  int iVar1;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaad9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = param_1_00[0xaf];
  if (iVar1 != 0) {
    param_1_00 = param_1_00 + 0xaa;
  }
  else {
    param_1_00 = (int *)(**(code **)(*param_1_00 + 0x3e0))
                                  (local_30,DAT_0323f878 ^ (uint)&stack0xffffffc4);
    uStack_4 = 0;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if (iVar1 == 0) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00982270(int *param_1_00,int param_1)

{
  int iVar1;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaad9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = param_1_00[0xb8];
  if (iVar1 != 0) {
    param_1_00 = param_1_00 + 0xb3;
  }
  else {
    param_1_00 = (int *)(**(code **)(*param_1_00 + 0x3e4))
                                  (local_30,DAT_0323f878 ^ (uint)&stack0xffffffc4);
    uStack_4 = 0;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if (iVar1 == 0) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_00982330(int *param_1_00,int param_1)

{
  int iVar1;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdaad9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = param_1_00[0xc1];
  if (iVar1 != 0) {
    param_1_00 = param_1_00 + 0xbc;
  }
  else {
    param_1_00 = (int *)(**(code **)(*param_1_00 + 1000))
                                  (local_30,DAT_0323f878 ^ (uint)&stack0xffffffc4);
    uStack_4 = 0;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if (iVar1 == 0) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_009823f0(undefined4 *param_1,int *param_2)

{
  char cVar1;
  undefined uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  uint uVar5;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 *local_3c;
  undefined auStack_38 [8];
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be09ff;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_3c = param_1;
  uVar3 = FUN_00823c23(0x20,DAT_0323f878 ^ (uint)&stack0xffffffac);
  *param_1 = uVar3;
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  param_1[9] = 0;
  param_1[0x11] = 7;
  param_1[0x10] = 0;
  *(undefined2 *)(param_1 + 0xc) = 0;
  param_1[0x12] = 0;
  param_1[0x1a] = 7;
  param_1[0x19] = 0;
  *(undefined2 *)(param_1 + 0x15) = 0;
  param_1[0x1b] = 0;
  param_1[0x26] = 7;
  param_1[0x25] = 0;
  *(undefined2 *)(param_1 + 0x21) = 0;
  param_1[0x27] = 0;
  param_1[0x2f] = 7;
  param_1[0x2e] = 0;
  *(undefined2 *)(param_1 + 0x2a) = 0;
  param_1[0x30] = 0;
  param_1[0x38] = 7;
  param_1[0x37] = 0;
  *(undefined2 *)(param_1 + 0x33) = 0;
  param_1[0x39] = 0;
  param_1[0x41] = 7;
  param_1[0x40] = 0;
  *(undefined2 *)(param_1 + 0x3c) = 0;
  param_1[0x42] = 0;
  param_1[0x4a] = 7;
  param_1[0x49] = 0;
  *(undefined2 *)(param_1 + 0x45) = 0;
  param_1[0x4b] = 0;
  uStack_4._0_1_ = 8;
  uStack_4._1_3_ = 0;
  uVar3 = (**(code **)(*param_2 + 0xe8))();
  uVar3 = FUN_00938f40(param_2[0x11],uVar3);
  param_1[1] = uVar3;
  puVar4 = (undefined4 *)FUN_00981f40(auStack_30);
  uStack_4._0_1_ = 9;
  if (param_1 + 2 != puVar4) {
    FID_conflict_assign(puVar4,0,0xffffffff);
  }
  uStack_4._0_1_ = 8;
  _free(pvStack_14);
  if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c);
  }
  puVar4 = (undefined4 *)FUN_00981f90(auStack_30);
  uStack_4._0_1_ = 10;
  if (param_1 + 0xb != puVar4) {
    FID_conflict_assign(puVar4,0,0xffffffff);
  }
  uStack_4._0_1_ = 8;
  _free(pvStack_14);
  if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c);
  }
  puVar4 = (undefined4 *)FUN_00981fe0(auStack_30);
  uStack_4._0_1_ = 0xb;
  if (param_1 + 0x14 != puVar4) {
    FID_conflict_assign(puVar4,0,0xffffffff);
  }
  uStack_4 = CONCAT31(uStack_4._1_3_,8);
  _free(pvStack_14);
  if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c);
  }
  if (param_1[0x19] == 0) {
    uStack_44 = 10;
    uVar5 = FUN_00420f3f(&uStack_44,0,1);
    if ((uVar5 != 0xffffffff) && (uVar5 < param_1[0x10] - 1)) {
      puVar4 = (undefined4 *)FUN_0081b542(auStack_38,uVar5 + 1);
      uStack_44 = *puVar4;
      uStack_40 = puVar4[1];
      cVar1 = FUN_0086f990(10);
      if (cVar1 != '\0') {
        FID_conflict_assign(param_1 + 0xb,uVar5 + 2,0xffffffff);
        FID_conflict_erase(uVar5,0xffffffff);
      }
    }
  }
  uVar3 = FUN_00981be0();
  param_1[0x1d] = uVar3;
  param_1[0x1e] = param_2[0x97];
  if ((((param_2[0xaf] == 0) && (param_2[0xb8] == 0)) && (param_2[0xc1] == 0)) &&
     ((param_2[0x9d] == 0 && (param_2[0xa6] == 0)))) {
    uVar2 = 0;
  }
  else {
    uVar2 = 1;
  }
  *(undefined *)(param_1 + 0x1f) = uVar2;
  puVar4 = (undefined4 *)FUN_00982030(auStack_30);
  uStack_4._0_1_ = 0xc;
  if (param_1 + 0x20 != puVar4) {
    FID_conflict_assign(puVar4,0,0xffffffff);
  }
  uStack_4._0_1_ = 8;
  _free(pvStack_14);
  if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c);
  }
  puVar4 = (undefined4 *)FUN_009820f0(auStack_30);
  uStack_4._0_1_ = 0xd;
  if (param_1 + 0x29 != puVar4) {
    FID_conflict_assign(puVar4,0,0xffffffff);
  }
  uStack_4._0_1_ = 8;
  _free(pvStack_14);
  if (uStack_18 < 8) {
    puVar4 = (undefined4 *)FUN_009821b0(auStack_30);
    uStack_4._0_1_ = 0xe;
    if (param_1 + 0x32 != puVar4) {
      FID_conflict_assign(puVar4,0,0xffffffff);
    }
    uStack_4._0_1_ = 8;
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    puVar4 = (undefined4 *)FUN_00982270(auStack_30);
    uStack_4._0_1_ = 0xf;
    if (param_1 + 0x3b != puVar4) {
      FID_conflict_assign(puVar4,0,0xffffffff);
    }
    uStack_4._0_1_ = 8;
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    puVar4 = (undefined4 *)FUN_00982330(auStack_30);
    uStack_4 = CONCAT31(uStack_4._1_3_,0x10);
    if (param_1 + 0x44 != puVar4) {
      FID_conflict_assign(puVar4,0,0xffffffff);
    }
    _free(pvStack_14);
    if (uStack_18 < 8) {
      ExceptionList = local_c;
      return param_1;
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(uStack_2c);
}



void __thiscall FUN_00982830(undefined4 *param_1_00,int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined auStack_54 [36];
  undefined auStack_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00beff10;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0xc) = 0x1040;
  uVar2 = FUN_008a65e0(uVar1);
  *(undefined4 *)(param_1 + 8) = uVar2;
  if ((uint)param_1_00[8] < 8) {
    puVar4 = param_1_00 + 3;
  }
  else {
    puVar4 = (undefined4 *)param_1_00[3];
  }
  *(undefined4 **)(param_1 + 0x14) = puVar4;
  if (param_1_00[1] == 0) {
    uVar2 = 0;
  }
  else {
    uVar2 = *(undefined4 *)(param_1_00[1] + 0x13c);
  }
  *(undefined4 *)(param_1 + 4) = uVar2;
  iVar3 = (**(code **)(*DAT_032bcb68 + 0xe4))();
  if (iVar3 == 2) {
    *(uint *)(param_1 + 0xc) = *(uint *)(param_1 + 0xc) | 0x2000;
  }
  if (param_1_00[0x19] == 0) {
    if ((uint)param_1_00[0x11] < 8) {
      puVar4 = param_1_00 + 0xc;
    }
    else {
      puVar4 = (undefined4 *)param_1_00[0xc];
    }
  }
  else {
    if ((uint)param_1_00[0x11] < 8) {
      puVar4 = param_1_00 + 0xc;
    }
    else {
      puVar4 = (undefined4 *)param_1_00[0xc];
    }
    *(undefined4 **)(param_1 + 0x1c) = puVar4;
    if ((uint)param_1_00[0x1a] < 8) {
      puVar4 = param_1_00 + 0x15;
    }
    else {
      puVar4 = (undefined4 *)param_1_00[0x15];
    }
  }
  *(undefined4 **)(param_1 + 0x20) = puVar4;
  iVar3 = param_1_00[0x1d];
  if (iVar3 == 0x100) {
    *(undefined4 *)(param_1 + 0x18) = 0xffff;
  }
  else if (iVar3 == 0x200) {
    *(undefined4 *)(param_1 + 0x18) = 0xfffe;
  }
  else if (iVar3 == 0x800) {
    *(undefined4 *)(param_1 + 0x18) = 0xfffd;
  }
  *(undefined4 *)(param_1 + 0x28) = *param_1_00;
  if ((param_1_00[0x1e] & 10) == 0) {
    if ((param_1_00[0x1e] & 0x10) == 0) {
      if (*(char *)(param_1_00 + 0x1f) == '\0') {
        *(undefined *)(param_1_00 + 0x1f) = 1;
        FUN_004325b6(PTR_DAT_03236318);
        uStack_4 = 0;
        FUN_0043c211(&DAT_00d47f94);
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        iVar3 = FUN_0084a340();
        if (iVar3 == 0) {
          puVar4 = (undefined4 *)FUN_0084d360(auStack_54);
        }
        else {
          puVar4 = (undefined4 *)FUN_0084f210(auStack_54,auStack_30);
        }
        if (param_1_00 + 0x32 != puVar4) {
          FID_conflict_assign(puVar4,0,0xffffffff);
        }
        FUN_0040159c();
        uStack_4 = 0xffffffff;
        FUN_0040159c();
      }
      FUN_00981cc0(param_1,2,8,param_1_00 + 0x32);
    }
    else {
      FUN_00981cc0(param_1,1,1,param_1_00 + 0x32);
      FUN_00981cc0(param_1,2,8,param_1_00 + 0x3b);
      if ((param_1_00[0x1e] & 0x80000000) != 0) {
        *(undefined4 *)(param_1 + 0x2c) = 2;
      }
    }
  }
  else {
    FUN_00981cc0(param_1,6,2,param_1_00 + 0x20);
    FUN_00981cc0(param_1,7,4,param_1_00 + 0x29);
    if ((*(byte *)(param_1_00 + 0x1e) & 0x10) != 0) {
      FUN_00981cc0(param_1,2,8,param_1_00 + 0x3b);
    }
    if ((char)param_1_00[0x1e] < '\0') {
      *(undefined4 *)(param_1 + 0x2c) = 7;
    }
    else if ((int)param_1_00[0x1e] < 0) {
      *(undefined4 *)(param_1 + 0x2c) = 2;
    }
  }
  if ((param_1_00[0x1e] & 0x1000) != 0) {
    *(undefined *)(param_1_00 + 0x1f) = 1;
    FUN_00981cc0(param_1,9,0,param_1_00 + 0x44);
  }
  ExceptionList = local_c;
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

int FUN_00982ab0(void)

{
  int iVar1;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be0a40;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((_DAT_032e1488 & 1) == 0) {
    _DAT_032e1488 = _DAT_032e1488 | 1;
    DAT_032e1484 = -1;
  }
  FUN_0086bd90(DAT_0323f878 ^ (uint)&stack0xffffff9c);
  local_4 = 0;
  if (DAT_032e1484 == -1) {
    FUN_0043c211("comctl32.dll");
    local_4._0_1_ = 1;
    FUN_0089ed30(local_54,0x68);
    local_4._0_1_ = 3;
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    FUN_0043c211("TaskDialogIndirect");
    local_4 = CONCAT31(local_4._1_3_,4);
    DAT_032e1484 = FUN_0089f2d0(0,local_30);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
  }
  iVar1 = DAT_032e1484;
  local_4 = 0xffffffff;
  FUN_0086bda0();
  ExceptionList = local_c;
  return iVar1;
}



int __thiscall FUN_00982c00(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc73c9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0;
  FID_conflict_assign(param_1_00 + 0x1f0,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  if (*(int *)(param_1_00 + 0x228) != 0) {
    FUN_0084b060(&DAT_00d6511c);
    FID_conflict_append(param_1_00 + 0x214,0,0xffffffff);
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_00982cb0(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_00894b40();
  if ((0x5ff < iVar1) && (iVar1 = FUN_00982ab0(), iVar1 != 0)) {
    return;
  }
  FUN_00924ec0(param_1);
  return;
}



undefined4 FUN_00982ce0(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 local_5c [23];
  
  iVar1 = FUN_008ff210();
  puVar3 = (undefined4 *)(iVar1 + 0x198);
  puVar4 = local_5c;
  for (iVar2 = 0x17; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar4 = *puVar3;
    puVar3 = puVar3 + 1;
    puVar4 = puVar4 + 1;
  }
  FUN_008fee70(local_5c,0);
  return param_1;
}



void __fastcall FUN_00982d20(int *param_1)

{
  undefined *puVar1;
  undefined *puVar2;
  char cVar3;
  HWND pHVar4;
  uint uVar5;
  int *piVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  HWND__ HVar11;
  undefined *puVar12;
  HWND__ *pHVar13;
  HINSTANCE hInstance;
  WPARAM wParam;
  HWND hWndTo;
  uint uVar14;
  LPCWSTR lpWindowName;
  HWND__ *pHStack_10c;
  undefined *local_108;
  HWND local_104;
  tagPOINT tStack_100;
  int iStack_f8;
  int iStack_f4;
  int *local_ec;
  undefined *local_e8;
  HWND__ *pHStack_e4;
  int iStack_e0;
  int iStack_dc;
  undefined4 uStack_d4;
  uint uStack_d0;
  void *pvStack_cc;
  tagPOINT tStack_c0;
  undefined *puStack_b8;
  int iStack_b4;
  undefined *puStack_b0;
  HWND__ *pHStack_ac;
  int iStack_94;
  undefined auStack_40 [4];
  HWND__ aHStack_3c [4];
  int iStack_2c;
  uint uStack_28;
  void *pvStack_24;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00be0aaa;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&pHStack_10c;
  ExceptionList = &local_14;
  local_ec = param_1;
  FUN_0099a530();
  FUN_0099a810();
  local_c = 0;
  FUN_0099a5f0();
  local_c = 0xffffffff;
  FUN_0099a3d0();
  FUN_0091aed0();
  cVar3 = FUN_008f76e0();
  if (cVar3 == '\0') {
    pHVar4 = FindWindowExW((HWND)param_1[0x4f],(HWND)0x0,L"STATIC",(LPCWSTR)0x0);
    local_104 = pHVar4;
    uVar5 = GetWindowLongW(pHVar4,-0x10);
    if ((uVar5 & 3) != 0) {
      pHVar4 = FindWindowExW((HWND)param_1[0x4f],pHVar4,L"STATIC",(LPCWSTR)0x0);
      local_104 = pHVar4;
    }
    if (pHVar4 != (HWND)0x0) {
      FUN_00982ce0();
      local_c = 3;
      FUN_0091d460();
      local_c = 0xffffffff;
      FUN_00921450();
      piVar6 = (int *)FUN_00917e70();
      tStack_c0.x = *piVar6;
      tStack_c0.y = piVar6[1];
      puStack_b8 = (undefined *)piVar6[2];
      iStack_b4 = piVar6[3];
      MapWindowPoints((HWND)0x0,(HWND)param_1[0x4f],&tStack_c0,2);
      iVar7 = (**(code **)(*param_1 + 0x194))();
      iVar10 = iStack_94 * 7;
      iVar8 = GetSystemMetrics(8);
      iVar9 = GetSystemMetrics(4);
      iVar8 = (iStack_b4 - tStack_c0.y) -
              ((((int)(iVar10 + (iVar10 >> 0x1f & 7U)) >> 3) + iVar7 * -5 + iVar8 * -2) - iVar9);
      iStack_b4 = iStack_b4 - iVar8;
      iVar10 = GetSystemMetrics(0x2d);
      iVar7 = GetSystemMetrics(2);
      local_108 = (undefined *)(iVar7 + iVar10 * 4);
      puStack_b8 = local_108 + (int)puStack_b8;
      FUN_0095df20();
      local_c = 4;
      FUN_0081b397();
      puVar1 = local_e8;
      tStack_100.y = (LONG)pHStack_e4;
      do {
        pHVar13 = (HWND__ *)tStack_100.y;
        if (uStack_28 < 8) {
          pHStack_10c = aHStack_3c;
LAB_00982fff:
          HVar11.unused = aHStack_3c[0].unused;
          if (uStack_28 < 8) {
            HVar11.unused = (int)aHStack_3c;
          }
          if (pHStack_10c < (uint)HVar11.unused) goto LAB_00983034;
          HVar11.unused = aHStack_3c[0].unused;
          if (uStack_28 < 8) {
            HVar11.unused = (int)aHStack_3c;
          }
          if ((HWND__ *)((int)(int *)HVar11.unused + iStack_2c * 2) < pHStack_10c)
          goto LAB_00983034;
        }
        else {
          pHStack_10c = (HWND__ *)aHStack_3c[0].unused;
          if ((HWND__ *)aHStack_3c[0].unused != (HWND__ *)0x0) goto LAB_00982fff;
LAB_00983034:
          FUN_00a3fb10();
        }
        if ((puVar1 != (undefined *)0xfffffffc) &&
           ((puVar1 == (undefined *)0x0 || (puVar1 != auStack_40)))) {
          FUN_00a3fb10();
        }
        if (pHVar13 == pHStack_10c) goto LAB_00983171;
        puStack_b0 = puVar1;
        pHStack_ac = pHVar13;
        FUN_004226c0();
        puVar2 = puStack_b0;
        if (puStack_b0 != (undefined *)0xfffffffc) {
          if (puStack_b0 == (undefined *)0x0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(puVar2 + 0x18) < 8) {
            puVar12 = puVar2 + 4;
          }
          else {
            puVar12 = *(undefined **)(puVar2 + 4);
          }
          if ((HWND__ *)(puVar12 + *(int *)(puVar2 + 0x14) * 2) <= pHStack_ac) {
            FUN_00a3fb10();
          }
        }
        if (*(short *)&pHStack_ac->unused != 10) goto LAB_009830f1;
        if (puVar1 != (undefined *)0xfffffffc) {
          if (puVar1 == (undefined *)0x0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(puVar1 + 0x18) < 8) {
            pHVar13 = (HWND__ *)(puVar1 + 4);
          }
          else {
            pHVar13 = *(HWND__ **)(puVar1 + 4);
          }
          if ((uint)tStack_100.y <= pHVar13) {
            FUN_00a3fb10();
          }
        }
        tStack_100.y = (int)&((HWND__ *)(tStack_100.y + -4))->unused + 2;
      } while( true );
    }
    local_108 = &stack0xfffffec0;
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(6);
    if (cVar3 != '\0') {
      FUN_0083fbe0();
      local_c = 1;
      FUN_008423d0();
      local_c._0_1_ = 2;
      FUN_008854f0();
      FUN_0083fe90();
      local_c = CONCAT31(local_c._1_3_,1);
      FUN_00842440();
      local_c = 0xffffffff;
      FUN_0081b5bc();
    }
  }
LAB_00983482:
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
LAB_009830f1:
  FUN_0081b397();
  pHVar13 = pHStack_e4;
  puStack_b0 = local_e8;
  if ((puVar1 != (undefined *)0xfffffffc) && ((puVar1 == (undefined *)0x0 || (puVar1 != local_e8))))
  {
    FUN_00a3fb10();
  }
  if ((HWND__ *)tStack_100.y != pHVar13) {
    tStack_100.x = (LONG)puVar1;
    FUN_004226c0();
    FUN_0081b397();
    FUN_004320f0();
  }
LAB_00983171:
  iVar10 = FUN_008a8810();
  pHStack_10c = (HWND__ *)local_ec[0x4f];
  if (*(uint *)(iVar10 + 0x18) < 8) {
    lpWindowName = (LPCWSTR)(iVar10 + 4);
  }
  else {
    lpWindowName = *(LPCWSTR *)(iVar10 + 4);
  }
  hInstance = (HINSTANCE)FUN_008a65e0();
  pHVar4 = CreateWindowExW(0,L"EDIT",lpWindowName,0x50200844,tStack_c0.x,tStack_c0.y,
                           (int)puStack_b8 - tStack_c0.x,iStack_b4 - tStack_c0.y,pHStack_10c,
                           (HMENU)0x0,hInstance,(LPVOID)0x0);
  _free(pvStack_cc);
  if (7 < uStack_d0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  uStack_d0 = 7;
  uStack_d4 = 0;
  pHStack_e4 = (HWND__ *)((uint)pHStack_e4 & 0xffff0000);
  if (pHVar4 == (HWND)0x0) {
    local_108 = &stack0xfffffec0;
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(6);
    if (cVar3 != '\0') {
      FUN_0083fbe0();
      local_c._0_1_ = 5;
      FUN_008423d0();
      local_c._0_1_ = 6;
      FUN_008854f0();
      FUN_0083fe90();
      local_c._0_1_ = 5;
      FUN_00842440();
      local_c = CONCAT31(local_c._1_3_,4);
      FUN_0081b5bc();
    }
    _free(pvStack_24);
  }
  else {
    wParam = SendMessageW(local_104,0x31,0,0);
    SendMessageW(pHVar4,0x30,wParam,0);
    DestroyWindow(local_104);
    piVar6 = (int *)FUN_00917e70();
    iStack_e0 = piVar6[2];
    iVar10 = (piVar6[3] - piVar6[1]) - iVar8;
    uVar5 = iStack_94 - iVar10;
    uVar14 = uVar5 & 0x80000001;
    if ((int)uVar14 < 0) {
      uVar14 = (uVar14 - 1 | 0xfffffffe) + 1;
    }
    iVar7 = (int)local_108 / 2;
    local_e8 = (undefined *)(*piVar6 - iVar7);
    MoveWindow((HWND)local_ec[0x4f],(int)local_e8,(int)uVar5 / 2,
               (int)(local_108 + ((iStack_e0 - iVar7) - (int)local_e8)),uVar14 + iVar10,0);
    pHStack_10c = (HWND)0x0;
    do {
      pHVar4 = GetDlgItem((HWND)local_ec[0x4f],pHStack_10c[0xc8eec6].unused);
      if (pHVar4 != (HWND)0x0) {
        piVar6 = (int *)FUN_00917e70();
        iStack_dc = piVar6[3];
        tStack_100.y = piVar6[1] - iVar8;
        tStack_100.x = *piVar6 + iVar7;
        iStack_f4 = iStack_dc - iVar8;
        iStack_f8 = piVar6[2] + iVar7;
        pHStack_e4 = (HWND__ *)tStack_100.y;
        hWndTo = GetParent(pHVar4);
        MapWindowPoints((HWND)0x0,hWndTo,&tStack_100,2);
        MoveWindow(pHVar4,tStack_100.x,tStack_100.y,iStack_f8 - tStack_100.x,
                   iStack_f4 - tStack_100.y,0);
      }
      pHStack_10c = pHStack_10c + 4;
    } while (pHStack_10c < (HWND)0x40);
    _free(pvStack_24);
  }
  if (7 < uStack_28) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  goto LAB_00983482;
}



void __fastcall FUN_009834b0(int *param_1)

{
  undefined4 uVar1;
  HWND pHVar2;
  int *piVar3;
  undefined4 ****lpString;
  undefined4 *puVar4;
  int iVar5;
  HWND hWndTo;
  uint uVar6;
  int iVar7;
  int iVar8;
  undefined auStack_d4 [4];
  uint local_d0;
  tagPOINT tStack_cc;
  int iStack_c4;
  int iStack_c0;
  int local_bc;
  HWND pHStack_b8;
  int local_b4;
  undefined4 local_b0;
  undefined4 uStack_ac;
  int iStack_a8;
  undefined4 uStack_a4;
  int iStack_a0;
  int iStack_9c;
  int iStack_98;
  int iStack_94;
  undefined4 uStack_90;
  undefined4 uStack_8c;
  undefined auStack_88 [20];
  uint auStack_74 [4];
  undefined4 uStack_64;
  uint uStack_60;
  void *pvStack_5c;
  int iStack_4c;
  int iStack_44;
  undefined2 uStack_40;
  undefined4 ****appppuStack_3c [3];
  undefined4 uStack_30;
  undefined4 uStack_2c;
  uint uStack_28;
  void *pvStack_24;
  uint local_1c;
  void *local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  uStack_10 = &LAB_00be0afb;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_d4;
  ExceptionList = &local_14;
  uVar1 = FUN_00982ce0(&local_b0,DAT_0323f878 ^ (uint)&stack0xffffff20);
  uVar6 = 0;
  local_c = 0;
  FUN_0091d460(uVar1);
  local_c = 0xffffffff;
  FUN_00921450();
  local_b4 = 0;
  local_bc = 0;
  local_d0 = 0;
  do {
    pHVar2 = GetDlgItem((HWND)param_1[0x4f],*(int *)((int)&DAT_0323bb18 + uVar6));
    pHStack_b8 = pHVar2;
    if (pHVar2 != (HWND)0x0) {
      local_d0 = local_d0 + 1;
      uVar1 = (**(code **)((int)&DAT_0323bb20 + uVar6))(auStack_74);
      uStack_40 = 0;
      uStack_10 = (undefined *)0x1;
      uStack_2c = 7;
      uStack_30 = 0;
      FID_conflict_assign(uVar1,0,0xffffffff);
      uStack_28 = 0;
      uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,3);
      _free(pvStack_5c);
      if (7 < uStack_60) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(auStack_74[0]);
      }
      auStack_74[0] = auStack_74[0] & 0xffff0000;
      uStack_60 = 7;
      uStack_64 = 0;
      (**(code **)(*param_1 + 600))(&iStack_44,&iStack_94,&uStack_90,0,0,0);
      local_b0 = uStack_90;
      uStack_ac = uStack_8c;
      piVar3 = (int *)FUN_00917e70(auStack_88,pHVar2);
      iStack_44 = piVar3[3];
      iStack_4c = piVar3[1];
      iVar8 = *piVar3;
      if (local_b4 == 0) {
        local_b4 = piVar3[2] - iVar8;
        iStack_9c = piVar3[1];
        iStack_98 = piVar3[2];
        iStack_94 = piVar3[3];
        iStack_a0 = iVar8;
      }
      else if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_b4 != piVar3[2] - iVar8)) {
        FUN_008402e0("..\\..\\src\\msw\\msgdlg.cpp",0x16b,"wxMessageDialog::AdjustButtonLabels",
                     "wBtnOld == rc.right - rc.left","all buttons are supposed to be of same width")
        ;
      }
      piVar3 = (int *)FUN_0093e140(&tStack_cc,param_1,&local_b0,0);
      if (local_bc < *piVar3) {
        local_bc = *piVar3;
      }
      lpString = appppuStack_3c[0];
      if (uStack_28 < 8) {
        lpString = appppuStack_3c;
      }
      SetWindowTextW(pHStack_b8,(LPCWSTR)lpString);
      local_c = 0xffffffff;
      _free(pvStack_24);
      if (7 < uStack_28) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(appppuStack_3c[0]);
      }
    }
    iVar8 = local_bc;
    uVar6 = uVar6 + 0x10;
    if (0x3f < uVar6) {
      if (local_b4 < local_bc) {
        puVar4 = (undefined4 *)FUN_00914ec0(auStack_88,param_1[0x4f]);
        local_b0 = *puVar4;
        uStack_ac = puVar4[1];
        iStack_a8 = puVar4[2];
        uStack_a4 = puVar4[3];
        iVar5 = (**(code **)(*param_1 + 0x198))();
        piVar3 = (int *)FUN_00917e70(auStack_88,param_1[0x4f]);
        tStack_cc.x = *piVar3;
        tStack_cc.y = piVar3[1];
        pHStack_b8 = (HWND)(iVar8 + iVar5);
        iVar7 = (int)pHStack_b8 * local_d0 - iVar5;
        iStack_c4 = piVar3[2];
        iStack_c0 = piVar3[3];
        iVar8 = iVar7 + iVar5 * 4;
        iVar5 = iStack_a8;
        if (iStack_a8 < iVar8) {
          iVar5 = (iVar8 - iStack_a8) / 2;
          iStack_c4 = iStack_c4 + ((iVar8 - iStack_a8) - iVar5);
          tStack_cc.x = tStack_cc.x - iVar5;
          MoveWindow((HWND)param_1[0x4f],tStack_cc.x,tStack_cc.y,iStack_c4 - tStack_cc.x,
                     iStack_c0 - tStack_cc.y,0);
          iVar5 = iVar8;
        }
        puVar4 = (undefined4 *)FUN_00914ec0(auStack_88,param_1[0x4f]);
        local_b0 = *puVar4;
        uStack_ac = puVar4[1];
        uStack_a4 = puVar4[3];
        iVar8 = (((iStack_c4 - puVar4[2]) - iVar7) + tStack_cc.x + iVar5) / 2;
        iStack_98 = iVar8 + local_bc;
        local_d0 = 0;
        do {
          pHVar2 = GetDlgItem((HWND)param_1[0x4f],*(int *)((int)&DAT_0323bb18 + local_d0));
          if (pHVar2 != (HWND)0x0) {
            tStack_cc.y = iStack_9c;
            iStack_c4 = iStack_98;
            iStack_c0 = iStack_94;
            tStack_cc.x = iVar8;
            hWndTo = GetParent(pHVar2);
            MapWindowPoints((HWND)0x0,hWndTo,&tStack_cc,2);
            MoveWindow(pHVar2,tStack_cc.x,tStack_cc.y,iStack_c4 - tStack_cc.x,
                       iStack_c0 - tStack_cc.y,0);
            iVar8 = (int)&pHStack_b8->unused + iVar8;
            iStack_98 = (int)&pHStack_b8->unused + iStack_98;
          }
          local_d0 = local_d0 + 0x10;
        } while (local_d0 < 0x40);
      }
      ExceptionList = local_14;
      ___security_check_cookie_4();
      return;
    }
  } while( true );
}



void __fastcall FUN_00983a50(int *param_1)

{
  uint uVar1;
  char cVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  HHOOK pHVar6;
  int **ppiVar7;
  undefined4 *****lpText;
  HWND hWnd;
  UINT uType;
  DWORD *pDVar8;
  DWORD DStack_13c;
  undefined auStack_138 [36];
  undefined auStack_114 [36];
  undefined auStack_f0 [36];
  undefined auStack_cc [36];
  undefined auStack_a8 [40];
  undefined auStack_80 [44];
  undefined4 uStack_54;
  uint uStack_40;
  void *pvStack_3c;
  undefined auStack_34 [4];
  undefined4 *****apppppuStack_30 [5];
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be0bbe;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&DStack_13c;
  ExceptionList = &local_c;
  iVar3 = (**(code **)(*DAT_032bcb68 + 0xd4))(DAT_0323f878 ^ (uint)&stack0xfffffeb4);
  if (iVar3 == 0) {
    cVar2 = (**(code **)(*DAT_032bcb68 + 0x9c))();
    while (cVar2 != '\0') {
      (**(code **)(*DAT_032bcb68 + 0xa0))();
      cVar2 = (**(code **)(*DAT_032bcb68 + 0x9c))();
    }
  }
  uVar4 = (**(code **)(*param_1 + 0xe8))();
  iVar3 = FUN_00938f40(param_1[0x11],uVar4);
  param_1[0x11] = iVar3;
  if (iVar3 == 0) {
    hWnd = (HWND)0x0;
  }
  else {
    hWnd = *(HWND *)(iVar3 + 0x13c);
  }
  iVar3 = FUN_00847310();
  if ((iVar3 != 0) && (iVar3 = *(int *)(iVar3 + 0x4c), iVar5 = FUN_00847560(), iVar3 != iVar5)) {
    if (((*(byte *)(param_1 + 0x97) & 10) != 0) && ((param_1[0x9d] == 0 && (param_1[0xa6] == 0)))) {
      FUN_004325b6(PTR_DAT_03236318);
      uStack_4 = 0;
      FUN_0043c211(&DAT_00d64dd4);
      uStack_4._0_1_ = 1;
      uVar4 = FUN_00820bf9(auStack_114,auStack_cc);
      FUN_00981f00(uVar4);
      uStack_4._0_1_ = 2;
      FUN_004325b6(PTR_DAT_03236318);
      uStack_4._0_1_ = 3;
      FUN_0043c211(&DAT_00d64be8);
      uStack_4._0_1_ = 4;
      uVar4 = FUN_00820bf9(auStack_f0,auStack_138);
      FUN_00981f00(uVar4);
      uStack_4 = CONCAT31(uStack_4._1_3_,5);
      (**(code **)(*param_1 + 0x3c0))(auStack_80,auStack_a8);
      FUN_008672a0();
      FUN_0040159c();
      FUN_0040159c();
      FUN_008672a0();
      FUN_0040159c();
      uStack_4 = 0xffffffff;
      FUN_0040159c();
    }
    if ((param_1[0xaf] == 0) && (param_1[0xb8] == 0)) {
      FUN_004325b6(PTR_DAT_03236318);
      uStack_4 = 6;
      FUN_0043c211("Cancel");
      uStack_4._0_1_ = 7;
      uVar4 = FUN_00820bf9(auStack_138,auStack_f0);
      FUN_00981f00(uVar4);
      uStack_4._0_1_ = 8;
      FUN_004325b6(PTR_DAT_03236318);
      uStack_4._0_1_ = 9;
      FUN_0043c211(&DAT_00d47f94);
      uStack_4._0_1_ = 10;
      uVar4 = FUN_00820bf9(auStack_cc,auStack_114);
      FUN_00981f00(uVar4);
      uStack_4 = CONCAT31(uStack_4._1_3_,0xb);
      (**(code **)(*param_1 + 0x3cc))(auStack_a8,auStack_80);
      FUN_008672a0();
      FUN_0040159c();
      FUN_0040159c();
      FUN_008672a0();
      FUN_0040159c();
      uStack_4 = 0xffffffff;
      FUN_0040159c();
    }
  }
  uVar1 = param_1[0x97];
  if ((uVar1 & 10) == 0) {
    if ((uVar1 & 0x10) == 0) {
      uType = 0;
    }
    else {
      uType = 1;
      if ((int)uVar1 < 0) {
        uType = 0x101;
      }
    }
  }
  else {
    uType = 4 - ((uVar1 & 0x10) != 0);
    if ((char)uVar1 < '\0') {
      uType = uType | 0x100;
    }
    else if ((int)uVar1 < 0) {
      uType = uType | 0x200;
    }
  }
  if ((uVar1 & 0x1000) != 0) {
    uType = uType | 0x4000;
  }
  iVar3 = FUN_00981be0();
  if (iVar3 < 0x401) {
    if (iVar3 == 0x400) {
      uType = uType | 0x20;
    }
    else if (iVar3 == 0x100) {
      uType = uType | 0x30;
    }
    else if (iVar3 == 0x200) {
      uType = uType | 0x10;
    }
  }
  else if (iVar3 == 0x800) {
    uType = uType | 0x40;
  }
  if ((uVar1 & 0x8000) != 0) {
    uType = uType | 0x40000;
  }
  iVar3 = (**(code **)(*DAT_032bcb68 + 0xe4))();
  if (iVar3 == 2) {
    uType = uType | 0x180000;
  }
  if (hWnd == (HWND)0x0) {
    uType = uType | 0x2000;
  }
  FUN_00982c00(auStack_34);
  uStack_4 = 0xc;
  iVar3 = (**(code **)(*DAT_032bcb68 + 0xe4))();
  if (iVar3 == 2) {
    uVar4 = FUN_00853fa0(0x200f,2);
    uStack_4._0_1_ = 0xd;
    FUN_00855e60(uVar4);
    uStack_4 = CONCAT31(uStack_4._1_3_,0xc);
    _free(pvStack_3c);
    if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_54);
    }
  }
  DStack_13c = GetCurrentThreadId();
  pHVar6 = SetWindowsHookExW(5,(HOOKPROC)&LAB_00983920,(HINSTANCE)0x0,DStack_13c);
  param_1[0xc5] = (int)pHVar6;
  pDVar8 = &DStack_13c;
  FUN_00981c40(pDVar8);
  ppiVar7 = (int **)FUN_009dbfa0(pDVar8);
  *ppiVar7 = param_1;
  if ((uint)param_1[0x94] < 8) {
    param_1 = param_1 + 0x8f;
  }
  else {
    param_1 = (int *)param_1[0x8f];
  }
  lpText = apppppuStack_30[0];
  if (uStack_1c < 8) {
    lpText = apppppuStack_30;
  }
  iVar3 = MessageBoxW(hWnd,(LPCWSTR)lpText,(LPCWSTR)param_1,uType);
  FUN_00981b60(iVar3);
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(apppppuStack_30[0]);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00983fb0(int param_1)

{
  char cVar1;
  int iVar2;
  code *pcVar3;
  undefined auStack_240 [8];
  undefined4 uStack_238;
  undefined *puStack_234;
  char *pcStack_230;
  char *pcStack_22c;
  int local_210;
  undefined *puStack_20c;
  undefined auStack_208 [20];
  undefined4 local_1f4 [121];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00be0c11;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_210;
  ExceptionList = &local_c;
  iVar2 = FUN_00894b40();
  if ((iVar2 < 0x600) || (iVar2 = FUN_00982ab0(), iVar2 == 0)) {
    FUN_00983a50();
  }
  else {
    pcVar3 = (code *)FUN_00982ab0();
    if (pcVar3 == (code *)0x0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        pcStack_22c = (char *)0x250;
        pcStack_230 = "..\\..\\src\\msw\\msgdlg.cpp";
        puStack_234 = (undefined *)0x984195;
        FUN_00840480();
      }
    }
    else {
      pcStack_22c = (char *)0x984025;
      _memset(local_1f4,0,0x60);
      local_1f4[0] = 0x60;
      FUN_009823f0();
      local_4 = 0;
      FUN_00982830();
      pcStack_22c = (char *)local_1f4;
      pcStack_230 = (char *)0x984069;
      iVar2 = (*pcVar3)();
      if (iVar2 < 0) {
        puStack_20c = auStack_240;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          pcStack_22c = "..\\..\\src\\msw\\msgdlg.cpp";
          pcStack_230 = (char *)0x6;
          local_4._0_1_ = 1;
          puStack_234 = (undefined *)0x9840d0;
          FUN_008423d0();
          local_4._0_1_ = 2;
          FUN_00843700();
          pcStack_22c = (char *)0x25a;
          pcStack_230 = "..\\..\\src\\msw\\msgdlg.cpp";
          puStack_234 = auStack_208;
          uStack_238 = 0x984100;
          FUN_00921a90();
          local_4._0_1_ = 1;
          FUN_00842440();
          local_4 = (uint)local_4._1_3_ << 8;
          FUN_0081b5bc();
        }
        FUN_00981d30();
      }
      else {
        if ((local_210 == 2) && ((*(byte *)(param_1 + 0x25c) & 0x1a) == 0)) {
          local_210 = 1;
        }
        FUN_00981b60();
        FUN_00981d30();
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_009841d0(undefined4 *param_1)

{
  *param_1 = wxFontEnumerator::vftable;
  return;
}



undefined FUN_009841e0(void)

{
  return 1;
}



undefined4 * __thiscall FUN_009841f0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxFontEnumerator::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00984210(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00be0c53;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00853f30(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = local_4 & 0xffffff00;
  FUN_00853f30();
  *param_1 = wxFontEnumerator::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_00984270(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be0c53;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1 = wxSimpleFontEnumerator::vftable;
  FUN_00853ce0(0);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00853ce0(0);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_009842e0(undefined4 param_1)

{
  FUN_00854700(param_1,1);
  return 1;
}



undefined4 FUN_00984300(undefined4 param_1,undefined4 param_2)

{
  FUN_00854700(param_2,1);
  return 1;
}



undefined4 __thiscall FUN_00984320(undefined4 param_1_00,byte param_1)

{
  FUN_00984210();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_00984340(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined local_2c [32];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be0c91;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00984270(DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_4 = 1;
  FUN_009cdcd0(param_2,param_3);
  FUN_00855400(local_2c);
  local_4 = local_4 & 0xffffff00;
  FUN_00984210();
  ExceptionList = local_c;
  return param_1;
}



bool FUN_009843d0(undefined4 param_1)

{
  char cVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be0cbe;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((DAT_032e14b4 & 1) == 0) {
    DAT_032e14b4 = DAT_032e14b4 | 1;
    local_4 = 0;
    FUN_00984340(&DAT_032e14a4,0xffffffff,0,DAT_0323f878 ^ (uint)&stack0xfffffff0);
    _atexit((_func_4879 *)&LAB_00c784a0);
  }
  local_4 = 0xffffffff;
  cVar1 = FUN_00855ef0(L"Ms Shell Dlg",0);
  if (cVar1 == '\0') {
    cVar1 = FUN_00855ef0(L"Ms Shell Dlg 2",0);
    if (cVar1 == '\0') {
      iVar2 = FUN_00853d10(param_1,0,0);
      ExceptionList = local_c;
      return iVar2 != -1;
    }
  }
  ExceptionList = local_c;
  return true;
}



undefined4 FUN_00984490(int param_1)

{
  if (param_1 < 0x100) {
    if (param_1 == 0xff) {
      return 0x15;
    }
    switch(param_1) {
    case 0:
      return 0x21;
    case 1:
      return 0xffffffff;
    case 2:
      return 0x58;
    case 0x80:
      return 0x1b;
    case 0x81:
      return 0x1d;
    case 0x86:
      return 0x1c;
    case 0x88:
      return 0x1e;
    case 0xa1:
      return 0x22;
    case 0xa2:
      return 0x23;
    case 0xb1:
      return 0x24;
    case 0xb2:
      return 0x25;
    case 0xba:
      return 0x26;
    case 0xcc:
      return 0x20;
    case 0xde:
      return 0x1a;
    case 0xee:
      return 0x1f;
    }
  }
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    return 0xffffffff;
  }
  FUN_00840480("..\\..\\src\\msw\\fontutil.cpp",0xbd,"wxGetFontEncFromCharSet","Assert failure",
               L"unexpected Win32 charset");
  return 0xffffffff;
}



undefined4 FUN_00984670(int param_1,int param_2)

{
  int iVar1;
  
  if (param_2 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\fontutil.cpp",0x8c,"wxGetNativeFontEncoding",&DAT_00d26b0c,
                   L"bad pointer in wxGetNativeFontEncoding");
    }
    return 0;
  }
  if (param_1 == 0) {
    param_1 = DAT_0323abec;
  }
  iVar1 = FUN_00894bf0(param_1);
  *(int *)(param_2 + 0x28) = iVar1;
  if (iVar1 == -1) {
    return 0;
  }
  *(int *)(param_2 + 0x24) = param_1;
  return 1;
}



void FUN_009846e0(undefined4 param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 local_64;
  undefined4 local_60 [23];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_64;
  local_64 = 0;
  FUN_009217e0();
  puVar2 = local_60;
  for (iVar1 = 0x17; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar2 = *param_2;
    param_2 = param_2 + 1;
    puVar2 = puVar2 + 1;
  }
  FUN_008fee70(local_60,0);
  ___security_check_cookie_4();
  return;
}



void FUN_00984740(int *param_1)

{
  undefined uVar1;
  char cVar2;
  undefined4 uVar3;
  undefined auStack_3c [4];
  undefined4 auStack_38 [4];
  int iStack_28;
  uint uStack_24;
  void *pvStack_20;
  void *pvStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be0ce8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_3c;
  ExceptionList = &local_c;
  uVar3 = (**(code **)(*param_1 + 0x38))(DAT_0323f878 ^ (uint)&stack0xffffffbc);
  FUN_009212a0(uVar3);
  uVar3 = (**(code **)(*param_1 + 0x3c))();
  FUN_009212f0(uVar3);
  uVar1 = (**(code **)(*param_1 + 0x40))();
  FUN_00921360(uVar1);
  cVar2 = (**(code **)(*param_1 + 0x34))();
  if (cVar2 == '\0') {
    uVar3 = (**(code **)(*param_1 + 0x2c))();
    FUN_00921520(uVar3);
  }
  else {
    uVar3 = (**(code **)(*param_1 + 0x30))(auStack_3c);
    FUN_00921570(uVar3);
  }
  uVar3 = FUN_0094a080();
  FUN_00921370(uVar3);
  (**(code **)(*param_1 + 0x44))(auStack_38);
  local_c = (void *)0x0;
  if (iStack_28 != 0) {
    FUN_00921890(auStack_3c);
  }
  uVar3 = (**(code **)(*param_1 + 0x48))();
  FUN_00921950(uVar3);
  _free(pvStack_20);
  if (7 < uStack_24) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(auStack_38[0]);
  }
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



void FUN_00984870(undefined4 *param_1,int *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 local_60 [23];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_60;
  FUN_009217e0();
  puVar1 = (undefined4 *)(**(code **)(*param_2 + 0x4c))();
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00984740(param_2);
    puVar1 = local_60;
  }
  for (iVar2 = 0x17; iVar2 != 0; iVar2 = iVar2 + -1) {
    *param_1 = *puVar1;
    puVar1 = puVar1 + 1;
    param_1 = param_1 + 1;
  }
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009848d0(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 ****_Src;
  uint local_f4;
  undefined local_f0 [4];
  uint local_ec;
  undefined4 local_dc;
  uint local_d8;
  void *local_d4;
  undefined local_cc [4];
  uint local_c8;
  undefined4 local_b8;
  uint local_b4;
  void *local_b0;
  undefined local_a8 [4];
  uint local_a4;
  undefined4 local_94;
  uint local_90;
  void *local_8c;
  undefined local_84 [4];
  undefined4 ****local_80 [4];
  int local_70;
  uint local_6c;
  void *local_68;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be0d44;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_f4;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffefc;
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d27220);
  local_4 = 0;
  FUN_00894710(param_1,local_f0,0);
  local_4._0_1_ = 2;
  _free(local_d4);
  if (7 < local_d8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_ec,uVar2);
  }
  local_d8 = 7;
  local_dc = 0;
  local_ec = local_ec & 0xffff0000;
  FUN_00894270(local_a8);
  local_4 = CONCAT31(local_4._1_3_,3);
  cVar1 = FUN_00850950(&local_f4,10);
  if (cVar1 == '\0') {
    iVar3 = FUN_00892210(local_a8);
    *(int *)(param_1_00 + 0x24) = iVar3;
    if (iVar3 != 0x58) goto LAB_009849bd;
    _free(local_8c);
    if (7 < local_90) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a4);
    }
LAB_00984b1f:
    local_a4 = local_a4 & 0xffff0000;
    local_94 = 0;
    local_90 = 7;
  }
  else {
    if (0x57 < local_f4) {
      _free(local_8c);
      if (7 < local_90) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_a4);
      }
      goto LAB_00984b1f;
    }
    *(uint *)(param_1_00 + 0x24) = local_f4;
LAB_009849bd:
    iVar3 = FUN_00894270(local_cc);
    local_4._0_1_ = 4;
    if (param_1_00 != iVar3) {
      FID_conflict_assign(iVar3,0,0xffffffff);
    }
    local_4 = CONCAT31(local_4._1_3_,3);
    _free(local_b0);
    if (7 < local_b4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_c8);
    }
    local_c8 = local_c8 & 0xffff0000;
    local_b4 = 7;
    local_b8 = 0;
    FUN_00894270(local_84);
    if (local_70 == 0) {
      *(undefined4 *)(param_1_00 + 0x28) = 0;
LAB_00984a44:
      _free(local_68);
      if (7 < local_6c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_80[0]);
      }
      local_6c = 7;
      local_70 = 0;
      local_80[0] = (undefined4 ****)((uint)local_80[0] & 0xffff0000);
      _free(local_8c);
      if (7 < local_90) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_a4);
      }
      local_90 = 7;
      local_94 = 0;
      local_a4 = local_a4 & 0xffff0000;
      local_4 = 0xffffffff;
      FUN_0083fa70();
      goto LAB_00984acd;
    }
    _Src = local_80[0];
    if (local_6c < 8) {
      _Src = local_80;
    }
    iVar3 = FID_conflict__swscanf((wchar_t *)_Src,L"%u",param_1_00 + 0x28);
    if (iVar3 == 1) goto LAB_00984a44;
    FUN_0040159c();
    FUN_0040159c();
  }
  local_4 = 0xffffffff;
  FUN_0083fa70();
LAB_00984acd:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00984be0(int param_1)

{
  wchar_t *_Source;
  wchar_t wVar1;
  int *piVar2;
  wchar_t *pwVar3;
  uint uVar4;
  HFONT ho;
  int iVar5;
  size_t _Count;
  int local_6c [2];
  char local_64;
  LOGFONTW local_60;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_6c;
  _memset(&local_60,0,0x5c);
  local_60.lfCharSet = *(BYTE *)(param_1 + 0x28);
  piVar2 = (int *)FUN_00432231(local_6c);
  iVar5 = *piVar2;
  if (*(uint *)(iVar5 + 0x18) < 8) {
    iVar5 = iVar5 + 4;
  }
  else {
    iVar5 = *(int *)(iVar5 + 4);
  }
  _Source = (wchar_t *)(iVar5 + piVar2[1] * 2);
  pwVar3 = _Source;
  do {
    wVar1 = *pwVar3;
    pwVar3 = pwVar3 + 1;
  } while (wVar1 != L'\0');
  uVar4 = (int)pwVar3 - (int)(_Source + 1) >> 1;
  _Count = 0x1f;
  if (uVar4 < 0x20) {
    _Count = uVar4;
  }
  _wcsncpy(local_60.lfFaceName,_Source,_Count);
  local_60.lfFaceName[_Count] = L'\0';
  if ((local_64 != '\0') && (local_6c[0] != 0)) {
    _free(*(void **)(local_6c[0] + 0x1c));
    if (7 < *(uint *)(local_6c[0] + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(local_6c[0] + 4));
    }
    *(undefined4 *)(local_6c[0] + 0x18) = 7;
    *(undefined4 *)(local_6c[0] + 0x14) = 0;
    *(undefined2 *)(local_6c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_6c[0]);
  }
  ho = CreateFontIndirectW(&local_60);
  if (ho == (HFONT)0x0) {
    ___security_check_cookie_4();
    return;
  }
  DeleteObject(ho);
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_00984cf0(int param_1_00,int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00be0da1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  uVar2 = FUN_00891ec0(local_30,*(undefined4 *)(param_1_00 + 0x24),uVar1);
  local_4 = 1;
  FID_conflict_append(uVar2,0,0xffffffff);
  FID_conflict_append(1,0x3b);
  FID_conflict_append(param_1_00,0,0xffffffff);
  local_4 = local_4 & 0xffffff00;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (*(int *)(param_1_00 + 0x28) != 0) {
    FID_conflict_append(1,0x3b);
    FUN_008758a0(*(undefined4 *)(param_1_00 + 0x28));
  }
  ExceptionList = local_c;
  return param_1;
}



int __fastcall FUN_00984de0(char param_1)

{
  char in_AL;
  byte bVar1;
  
  if (in_AL < 'a') {
    if (in_AL < 'A') {
      bVar1 = in_AL - 0x30;
    }
    else {
      bVar1 = in_AL - 0x37;
    }
  }
  else {
    bVar1 = in_AL + 0xa9;
  }
  if ('`' < param_1) {
    return (uint)bVar1 * 0x10 + (uint)(byte)(param_1 + 0xa9);
  }
  if ('@' < param_1) {
    return (uint)bVar1 * 0x10 + (uint)(byte)(param_1 - 0x37);
  }
  return (uint)bVar1 * 0x10 + (uint)(byte)(param_1 - 0x30);
}



char * FUN_00984e30(void)

{
  char cVar1;
  char cVar2;
  int iVar3;
  char *pcVar4;
  char *unaff_EBX;
  undefined **ppuVar5;
  char *pcVar6;
  char *pcVar7;
  int local_4;
  
  local_4 = 0;
  ppuVar5 = &PTR_DAT_00d66528;
  do {
    pcVar6 = *ppuVar5;
    cVar2 = *unaff_EBX;
    pcVar7 = unaff_EBX;
    while (cVar2 != '\0') {
      if ((*pcVar7 == *pcVar6) && (iVar3 = _isspace((int)pcVar7[-1]), pcVar4 = pcVar7, iVar3 != 0))
      {
        do {
          cVar2 = *pcVar6;
          if (cVar2 == '\0') {
            return pcVar4;
          }
          cVar1 = *pcVar4;
          pcVar6 = pcVar6 + 1;
          pcVar4 = pcVar4 + 1;
        } while (cVar1 == cVar2);
        pcVar6 = *ppuVar5;
      }
      pcVar7 = pcVar7 + 1;
      cVar2 = *pcVar7;
    }
    local_4 = local_4 + 1;
    ppuVar5 = &PTR_DAT_00d66528 + local_4;
  } while ((&PTR_DAT_00d66528)[local_4] != (undefined *)0x0);
  return (char *)0x0;
}



void FUN_00984ec0(int *param_1)

{
  char cVar1;
  int *piVar2;
  undefined **ppuVar3;
  uint uVar4;
  undefined *apuStack_18 [2];
  undefined local_10 [12];
  uint local_4;
  
  apuStack_18[0] = local_10;
  local_4 = DAT_0323f878 ^ (uint)local_10;
  apuStack_18[1] = (undefined *)0x9;
  piVar2 = (int *)(**(code **)(*param_1 + 0x2c))();
  ppuVar3 = apuStack_18;
  cVar1 = (**(code **)(*piVar2 + 0x10))();
  if (cVar1 == '\0') {
    ___security_check_cookie_4();
    return;
  }
  uVar4 = 9;
  piVar2 = &DAT_00d6655c;
  do {
    if (*ppuVar3 != (undefined *)*piVar2) break;
    uVar4 = uVar4 - 4;
    piVar2 = piVar2 + 1;
    ppuVar3 = (undefined **)((int *)ppuVar3 + 1);
  } while (3 < uVar4);
  ___security_check_cookie_4();
  return;
}



undefined4 __fastcall
FUN_00984f80(undefined4 param_1_00,char *param_2_00,undefined *param_1,undefined *param_2,
            undefined *param_3,undefined *param_4)

{
  char cVar1;
  byte bVar2;
  undefined4 uVar3;
  undefined uVar4;
  char *pcVar5;
  byte *_Str;
  int iVar6;
  int iVar7;
  byte *pbVar8;
  byte *pbVar9;
  int iVar10;
  int iVar11;
  bool bVar12;
  
  pcVar5 = param_2_00;
  do {
    cVar1 = *pcVar5;
    pcVar5 = pcVar5 + 1;
  } while (cVar1 != '\0');
  if ((*param_2_00 == '#') &&
     (((int)pcVar5 - (int)(param_2_00 + 1) == 7 || ((int)pcVar5 - (int)(param_2_00 + 1) == 0xd)))) {
    uVar4 = FUN_00984de0();
    *param_2 = uVar4;
    uVar4 = FUN_00984de0();
    *param_3 = uVar4;
    uVar4 = FUN_00984de0();
    *param_4 = uVar4;
    *param_1 = 0;
    return 1;
  }
  _Str = (byte *)__strdup(param_2_00);
  pcVar5 = _strchr((char *)_Str,0x20);
  while (pcVar5 != (char *)0x0) {
    cVar1 = *pcVar5;
    while (cVar1 != '\0') {
      *pcVar5 = pcVar5[1];
      pcVar5 = pcVar5 + 1;
      cVar1 = *pcVar5;
    }
    pcVar5 = _strchr((char *)_Str,0x20);
  }
  bVar2 = *_Str;
  pbVar9 = _Str;
  while (bVar2 != 0) {
    iVar6 = _tolower((int)(char)*pbVar9);
    *pbVar9 = (byte)iVar6;
    pbVar9 = pbVar9 + 1;
    bVar2 = *pbVar9;
  }
  pcVar5 = _strstr((char *)_Str,"grey");
  if (pcVar5 != (char *)0x0) {
    pcVar5[2] = 'a';
  }
  pbVar8 = &DAT_00d66568;
  pbVar9 = _Str;
  do {
    bVar2 = *pbVar9;
    bVar12 = bVar2 < *pbVar8;
    if (bVar2 != *pbVar8) {
LAB_00985087:
      iVar6 = (1 - (uint)bVar12) - (uint)(bVar12 != 0);
      goto LAB_0098508c;
    }
    if (bVar2 == 0) break;
    bVar2 = pbVar9[1];
    bVar12 = bVar2 < pbVar8[1];
    if (bVar2 != pbVar8[1]) goto LAB_00985087;
    pbVar9 = pbVar9 + 2;
    pbVar8 = pbVar8 + 2;
  } while (bVar2 != 0);
  iVar6 = 0;
LAB_0098508c:
  if (iVar6 == 0) {
    *param_1 = 1;
    _free(_Str);
    return 1;
  }
  iVar11 = 0;
  iVar6 = 0xea;
  do {
    iVar10 = (iVar11 + iVar6) / 2;
    pbVar9 = *(byte **)(&UNK_00d65dc8 + iVar10 * 8);
    pbVar8 = _Str;
    do {
      bVar2 = *pbVar8;
      bVar12 = bVar2 < *pbVar9;
      if (bVar2 != *pbVar9) {
LAB_009850e8:
        iVar7 = (1 - (uint)bVar12) - (uint)(bVar12 != 0);
        goto LAB_009850ed;
      }
      if (bVar2 == 0) break;
      bVar2 = pbVar8[1];
      bVar12 = bVar2 < pbVar9[1];
      if (bVar2 != pbVar9[1]) goto LAB_009850e8;
      pbVar8 = pbVar8 + 2;
      pbVar9 = pbVar9 + 2;
    } while (bVar2 != 0);
    iVar7 = 0;
LAB_009850ed:
    if (iVar7 == 0) {
      uVar3 = *(undefined4 *)(&UNK_00d65dcc + iVar10 * 8);
      *param_2 = (char)((uint)uVar3 >> 0x10);
      *param_3 = (char)((uint)uVar3 >> 8);
      *param_4 = (char)uVar3;
      *param_1 = 0;
      _free(_Str);
      return 1;
    }
    if (iVar7 < 0) {
      iVar6 = iVar10 + -1;
    }
    else {
      iVar11 = iVar10 + 1;
    }
    if (iVar6 < iVar11) {
      _free(_Str);
      return 0;
    }
  } while( true );
}



void __thiscall
FUN_00985160(undefined4 param_1_00,void **param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  void **ppvVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5a18;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)FUN_00847c00(param_2,param_1,1);
  local_4 = 0;
  FUN_00820e3f(param_3,param_1,2);
  uVar3 = FUN_008854f0(*(undefined4 *)*puVar2,param_2,uVar1);
  FUN_0083fe90(param_1_00,uVar3);
  local_4 = 0xffffffff;
  ppvVar4 = (void **)FUN_00850350();
  if (param_1 != ppvVar4) {
    *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + -1;
    if (*(short *)(param_1 + 2) == 0) {
      if (*(char *)((int)param_1 + 10) != '\0') {
        _free(*param_1);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_1);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_00985230(undefined4 *param_1_00,int param_1)

{
  *param_1_00 = 0;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[8] = 0;
  *(undefined2 *)(param_1_00 + 10) = *(undefined2 *)(param_1 + 0x24);
  *(undefined *)((int)param_1_00 + 0x2a) = *(undefined *)(param_1 + 0x26);
  return param_1_00;
}



undefined4 * __thiscall FUN_00985290(int *param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  float fVar2;
  float fVar3;
  void *pvVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar4 = operator_new(0x2c);
  puVar5 = (undefined4 *)0x0;
  local_4 = 0;
  if (pvVar4 != (void *)0x0) {
    puVar5 = (undefined4 *)FUN_00985230(param_1);
  }
  *puVar5 = *(undefined4 *)(*param_1_00 + param_2 * 4);
  *(undefined4 **)(*param_1_00 + param_2 * 4) = puVar5;
  param_1_00[2] = param_1_00[2] + 1;
  iVar1 = param_1_00[1];
  fVar2 = (float)param_1_00[2];
  local_4 = 0xffffffff;
  if (param_1_00[2] < 0) {
    fVar2 = fVar2 + 4.294967e+09;
  }
  fVar3 = (float)iVar1;
  if (iVar1 < 0) {
    fVar3 = fVar3 + 4.294967e+09;
  }
  if (0.85 <= fVar2 / fVar3) {
    FUN_00b28480(iVar1);
  }
  ExceptionList = local_c;
  return puVar5;
}



void __fastcall FUN_00985350(void **param_1)

{
  FUN_00893cf0(param_1[1],*param_1,FUN_009e7620);
  param_1[2] = (void *)0x0;
  _free(*param_1);
  return;
}



undefined4 * __thiscall FUN_00985380(int *param_1_00,int param_1,undefined *param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    iVar3 = param_1 + 4;
  }
  else {
    iVar3 = *(int *)(param_1 + 4);
  }
  uVar2 = FUN_00893df0(iVar3);
  uVar1 = param_1_00[1];
  puVar4 = *(undefined4 **)(*param_1_00 + (uVar2 % uVar1) * 4);
  while( true ) {
    if (puVar4 == (undefined4 *)0x0) {
      *param_2 = 1;
      puVar4 = (undefined4 *)FUN_00985290(param_1,uVar2 % uVar1);
      return puVar4;
    }
    if ((puVar4[6] == *(int *)(param_1 + 0x14)) && (iVar3 = FUN_00850760(param_1), iVar3 == 0))
    break;
    puVar4 = (undefined4 *)*puVar4;
  }
  *param_2 = 0;
  return puVar4;
}



int FUN_00985400(undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  undefined2 local_10;
  undefined local_e;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be0dc8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  FID_conflict_assign(param_1,0,0xffffffff);
  local_18 = (void *)0x0;
  local_10 = 0;
  local_e = 0;
  local_4 = 0;
  iVar2 = FUN_00985380(local_34,&param_1);
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30,uVar1);
  }
  ExceptionList = local_c;
  return iVar2 + 0x28;
}



void FUN_009854c0(undefined4 *param_1,char **param_2)

{
  short sVar1;
  char *pcVar2;
  undefined4 *puVar3;
  char cVar4;
  int iVar5;
  char *pcVar6;
  uint uVar7;
  undefined2 *puVar8;
  void *pvVar9;
  int **ppiVar10;
  int *piVar11;
  undefined *puVar12;
  undefined4 uVar13;
  short *psVar14;
  int iVar15;
  undefined4 local_1b8;
  undefined **local_1b4;
  int local_1b0;
  char local_1a9;
  int *local_1a8;
  undefined4 local_1a4;
  void *local_1a0;
  size_t local_19c;
  int local_198;
  undefined **local_190;
  void **ppvStack_18c;
  int *local_188;
  int *local_184;
  undefined4 *local_180;
  void *local_17c;
  uint local_178;
  undefined4 local_174;
  undefined4 local_170;
  undefined4 local_16c;
  char **local_168;
  uint local_160;
  uint local_158;
  undefined4 local_148;
  uint local_144;
  void *local_140;
  int *local_138;
  uint local_134;
  undefined4 local_130;
  char *local_128;
  undefined4 local_124;
  char *local_120;
  undefined *local_11c;
  __time64_t local_118;
  DWORD local_110;
  int local_10c;
  undefined4 local_104;
  undefined4 local_f4;
  uint local_f0;
  void *local_ec;
  uint local_dc;
  undefined4 local_cc;
  uint local_c8;
  void *local_c4;
  uint local_a4;
  void *local_a0;
  undefined4 local_94;
  undefined4 local_84;
  uint local_80;
  void *local_7c;
  undefined4 local_70;
  int local_60;
  uint local_5c;
  void *local_58;
  char local_50 [64];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be0fb1;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_1b8;
  ExceptionList = &local_c;
  local_180 = param_1;
  local_190 = param_2;
  local_1a4 = 0;
  if (param_2 == (char **)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    *param_1 = wxObject::vftable;
    iVar5 = DAT_032390e8;
    param_1[1] = DAT_032390e8;
    if (iVar5 != 0) {
      piVar11 = (int *)(iVar5 + 4);
      *piVar11 = *piVar11 + 1;
    }
    *param_1 = wxImage::vftable;
  }
  else {
    local_1b0 = 0;
    local_1b4 = wxImage::vftable;
    local_4 = 1;
    local_19c = FUN_00893ca0();
    local_198 = 0;
    local_1a0 = _calloc(local_19c,4);
    local_5c = 7;
    local_60 = 0;
    local_70 = (uint)local_70._2_2_ << 0x10;
    local_58 = (void *)0x0;
    local_80 = 7;
    local_84 = 0;
    local_94 = (uint)local_94._2_2_ << 0x10;
    local_7c = (void *)0x0;
    local_4._0_1_ = 4;
    iVar5 = FID_conflict__sscanf(*param_2,"%u %u %u %u");
    if ((iVar5 == 4) && ((int)local_138 * local_134 * (int)local_1a8 != 0)) {
      if (local_160 < 0x40) {
        cVar4 = FUN_00900c30();
        if (cVar4 != '\0') {
          local_50[local_160] = '\0';
          local_1b8 = local_1b8 & 0xff000000;
          local_188 = (int *)0x0;
          if (local_1a8 != (int *)0x0) {
            local_168 = param_2 + 1;
            do {
              pcVar2 = *local_168;
              if (pcVar2 == (char *)0x0) {
LAB_00985afa:
                local_190 = (undefined **)&stack0xfffffe10;
                FUN_0043c211(&DAT_00d25fa0);
                cVar4 = FUN_00846b30(1);
                if (cVar4 != '\0') {
                  FUN_004325b6();
                  local_4._0_1_ = 9;
                  FUN_0043c211();
                  local_4._0_1_ = 10;
                  FUN_00820bf9();
                  FUN_008433c0();
                  local_4._0_1_ = 0xb;
                  FUN_008423d0();
                  local_4._0_1_ = 0xc;
                  FUN_00848820();
                  local_4._0_1_ = 0xb;
                  FUN_00842440();
                  local_4._0_1_ = 10;
                  FUN_0081b5bc();
                  FUN_0040159c();
                  FUN_0040159c();
                }
                *local_180 = wxObject::vftable;
                iVar5 = DAT_032390e8;
                local_180[1] = DAT_032390e8;
                if (iVar5 != 0) {
                  piVar11 = (int *)(iVar5 + 4);
                  *piVar11 = *piVar11 + 1;
                }
                *local_180 = wxImage::vftable;
                local_1a4 = 1;
                FUN_0040159c();
                FUN_0040159c();
                local_4 = CONCAT31(local_4._1_3_,1);
                FUN_00893cf0();
LAB_00985c53:
                local_198 = 0;
                _free(local_1a0);
                goto LAB_00985c60;
              }
              pcVar6 = pcVar2;
              do {
                cVar4 = *pcVar6;
                pcVar6 = pcVar6 + 1;
              } while (cVar4 != '\0');
              if ((uint)((int)pcVar6 - (int)(pcVar2 + 1)) < local_160 + 5) goto LAB_00985afa;
              uVar7 = 0;
              if (local_160 != 0) {
                do {
                  pcVar6 = local_50 + uVar7;
                  uVar7 = uVar7 + 1;
                  *pcVar6 = pcVar6[(int)pcVar2 - (int)local_50];
                } while (uVar7 < local_160);
              }
              iVar5 = FUN_00984e30();
              if (iVar5 == 0) {
                local_190 = (undefined **)&stack0xfffffe10;
                FUN_0043c211(&DAT_00d25fa0);
                cVar4 = FUN_00846b30(1);
                if (cVar4 != '\0') {
                  FUN_004325b6();
                  local_4._0_1_ = 0xd;
                  FUN_0043c211();
                  local_4._0_1_ = 0xe;
                  FUN_00820bf9();
                  FUN_008433c0();
                  local_4._0_1_ = 0xf;
                  FUN_008423d0();
                  local_4._0_1_ = 0x10;
                  FUN_00985160();
                  local_4._0_1_ = 0xf;
                  FUN_00842440();
                  local_4._0_1_ = 0xe;
                  FUN_0081b5bc();
                  FUN_0040159c();
                  FUN_0040159c();
                }
                *local_180 = wxObject::vftable;
                iVar5 = DAT_032390e8;
                local_180[1] = DAT_032390e8;
                if (iVar5 != 0) {
                  piVar11 = (int *)(iVar5 + 4);
                  *piVar11 = *piVar11 + 1;
                }
                *local_180 = wxImage::vftable;
LAB_009859a0:
                local_1a4 = 1;
                FUN_0040159c();
                FUN_0040159c();
                local_4._0_1_ = 1;
                FUN_00985350();
                local_4 = (uint)local_4._1_3_ << 8;
                local_1b4 = wxObject::vftable;
                FUN_0083e850();
                goto LAB_00986c56;
              }
              local_1a9 = '\0';
              cVar4 = FUN_00984f80();
              if (cVar4 == '\0') {
                local_190 = (undefined **)&stack0xfffffe10;
                FUN_0043c211(&DAT_00d25fa0);
                cVar4 = FUN_00846b30(1);
                if (cVar4 != '\0') {
                  FUN_004325b6();
                  local_4._0_1_ = 0x11;
                  FUN_0043c211();
                  local_4._0_1_ = 0x12;
                  FUN_00820bf9();
                  FUN_008433c0();
                  local_4._0_1_ = 0x13;
                  FUN_008423d0();
                  local_4._0_1_ = 0x14;
                  FUN_00985160();
                  local_4._0_1_ = 0x13;
                  FUN_00842440();
                  local_4._0_1_ = 0x12;
                  FUN_0081b5bc();
                  FUN_0040159c();
                  FUN_0040159c();
                }
                FUN_008196af();
                goto LAB_009859a0;
              }
              FUN_0083fc60();
              if (local_1a9 != '\0') {
                FUN_0043261a();
              }
              puVar8 = (undefined2 *)FUN_00985400();
              local_168 = local_168 + 1;
              *puVar8 = (undefined2)local_1b8;
              *(undefined *)(puVar8 + 1) = local_1b8._2_1_;
              local_188 = (int *)((int)local_188 + 1);
            } while (local_188 < local_1a8);
          }
          if (local_60 == 0) {
LAB_00985f71:
            puVar12 = (undefined *)FUN_008ff850();
            local_1b8 = 0;
            piVar11 = local_138;
            if (local_134 != 0) {
              do {
                local_188 = (int *)0x0;
                if (piVar11 != (int *)0x0) {
                  do {
                    pcVar2 = local_190[(int)local_1a8 + local_1b8 + 1];
                    if (pcVar2 == (char *)0x0) {
LAB_009865f2:
                      local_190 = (undefined **)&stack0xfffffe10;
                      FUN_0043c211(&DAT_00d25fa0);
                      cVar4 = FUN_00846b30(1);
                      if (cVar4 != '\0') {
                        psVar14 = (short *)PTR_DAT_03236318;
                        if (PTR_DAT_03236318 == (undefined *)0x0) {
                          psVar14 = &DAT_00fae9c8;
                        }
                        local_dc = local_dc & 0xffff0000;
                        local_c8 = 7;
                        local_cc = 0;
                        do {
                          sVar1 = *psVar14;
                          psVar14 = psVar14 + 1;
                        } while (sVar1 != 0);
                        FID_conflict_assign();
                        local_c4 = (void *)0x0;
                        local_4._0_1_ = 0x1a;
                        FUN_0043c211();
                        local_4 = CONCAT31(local_4._1_3_,0x1b);
                        iVar5 = FUN_0084a340();
                        if (iVar5 == 0) {
                          uVar13 = FUN_0084d360();
                        }
                        else {
                          uVar13 = FUN_0084f210();
                        }
                        local_17c = (void *)FUN_00850350();
                        local_4._0_1_ = 0x1c;
                        local_178 = FUN_00850350();
                        local_4._0_1_ = 0x1d;
                        local_174 = FUN_00850350();
                        local_16c = 0;
                        local_4._0_1_ = 0x1e;
                        local_130 = 1;
                        local_128 = "..\\..\\src\\common\\xpmdecod.cpp";
                        local_120 = "wxXPMDecoder::ReadData";
                        local_124 = 0x30f;
                        local_11c = &DAT_00d25fa0;
                        local_170 = uVar13;
                        local_118 = __time64((__time64_t *)0x0);
                        local_110 = GetCurrentThreadId();
                        local_10c = 0;
                        local_f0 = 7;
                        local_f4 = 0;
                        local_104._0_2_ = 0;
                        local_ec = (void *)0x0;
                        local_4._0_1_ = 0x1f;
                        FUN_00820e3f();
                        FUN_008854f0();
                        FUN_0083fe90();
                        local_4._0_1_ = 0x1e;
                        _free(local_ec);
                        if (7 < local_f0) {
                    // WARNING: Subroutine does not return
                          FUN_00a3f6a1();
                        }
                        local_f0 = 7;
                        local_f4 = 0;
                        local_104 = (uint)local_104._2_2_ << 0x10;
                        if (local_10c != 0) {
                          FUN_00841af0();
                    // WARNING: Subroutine does not return
                          FUN_00a3f6a1();
                        }
                        local_4._0_1_ = 0x1b;
                        FUN_0081b5bc();
                        _free(local_140);
                        if (7 < local_144) {
                    // WARNING: Subroutine does not return
                          FUN_00a3f6a1();
                        }
                        local_144 = 7;
                        local_148 = 0;
                        local_158 = local_158 & 0xffff0000;
                        _free(local_c4);
                        if (7 < local_c8) {
                    // WARNING: Subroutine does not return
                          FUN_00a3f6a1();
                        }
                      }
                      *local_180 = wxObject::vftable;
                      iVar5 = DAT_032390e8;
                      local_180[1] = DAT_032390e8;
                      if (iVar5 != 0) {
                        piVar11 = (int *)(iVar5 + 4);
                        *piVar11 = *piVar11 + 1;
                      }
                      *local_180 = wxImage::vftable;
                      local_1a4 = 1;
                      _free(local_7c);
                      if (7 < local_80) {
                    // WARNING: Subroutine does not return
                        FUN_00a3f6a1();
                      }
                      local_80 = 7;
                      local_84 = 0;
                      local_94 = local_94 & 0xffff0000;
                      _free(local_58);
                      if (7 < local_5c) {
                    // WARNING: Subroutine does not return
                        FUN_00a3f6a1();
                      }
                      local_5c = 7;
                      local_60 = 0;
                      local_70 = local_70 & 0xffff0000;
                      local_4 = CONCAT31(local_4._1_3_,1);
                      FUN_00893cf0();
                      goto LAB_00985c53;
                    }
                    pcVar6 = pcVar2;
                    do {
                      cVar4 = *pcVar6;
                      pcVar6 = pcVar6 + 1;
                    } while (cVar4 != '\0');
                    if ((uint)((int)pcVar6 - (int)(pcVar2 + 1)) < (int)piVar11 * local_160)
                    goto LAB_009865f2;
                    uVar7 = 0;
                    if (local_160 != 0) {
                      do {
                        local_50[uVar7] = pcVar2[uVar7 + (int)local_188 * local_160];
                        uVar7 = uVar7 + 1;
                      } while (uVar7 < local_160);
                    }
                    FUN_0083fc60();
                    iVar5 = FUN_00970c40();
                    if (iVar5 == 0) {
                      local_190 = (undefined **)&stack0xfffffe10;
                      FUN_0043c211(&DAT_00d25fa0);
                      cVar4 = FUN_00846b30(1);
                      if (cVar4 != '\0') {
                        psVar14 = (short *)PTR_DAT_03236318;
                        if (PTR_DAT_03236318 == (undefined *)0x0) {
                          psVar14 = &DAT_00fae9c8;
                        }
                        local_dc = local_dc & 0xffff0000;
                        local_c8 = 7;
                        local_cc = 0;
                        do {
                          sVar1 = *psVar14;
                          psVar14 = psVar14 + 1;
                        } while (sVar1 != 0);
                        FID_conflict_assign();
                        local_c4 = (void *)0x0;
                        local_4._0_1_ = 0x20;
                        FUN_0043c211();
                        local_4 = CONCAT31(local_4._1_3_,0x21);
                        iVar5 = FUN_0084a340();
                        if (iVar5 == 0) {
                          uVar13 = FUN_0084d360();
                        }
                        else {
                          uVar13 = FUN_0084f210();
                        }
                        local_17c = (void *)FUN_00850350();
                        local_4._0_1_ = 0x22;
                        local_178 = FUN_00850350();
                        local_4._0_1_ = 0x23;
                        local_174 = FUN_00850350();
                        local_16c = 0;
                        local_4._0_1_ = 0x24;
                        local_130 = 1;
                        local_128 = "..\\..\\src\\common\\xpmdecod.cpp";
                        local_120 = "wxXPMDecoder::ReadData";
                        local_124 = 0x31d;
                        local_11c = &DAT_00d25fa0;
                        local_170 = uVar13;
                        local_118 = __time64((__time64_t *)0x0);
                        local_110 = GetCurrentThreadId();
                        local_10c = 0;
                        local_f0 = 7;
                        local_f4 = 0;
                        local_104._0_2_ = 0;
                        local_ec = (void *)0x0;
                        local_4._0_1_ = 0x25;
                        FUN_008854f0();
                        FUN_0083fe90();
                        local_4._0_1_ = 0x24;
                        _free(local_ec);
                        if (7 < local_f0) {
                    // WARNING: Subroutine does not return
                          FUN_00a3f6a1();
                        }
                        local_f0 = 7;
                        local_f4 = 0;
                        local_104 = (uint)local_104._2_2_ << 0x10;
                        if (local_10c != 0) {
                          FUN_00841af0();
                    // WARNING: Subroutine does not return
                          FUN_00a3f6a1();
                        }
                        local_4._0_1_ = 0x21;
                        FUN_0081b5bc();
                        _free(local_140);
                        if (7 < local_144) {
                    // WARNING: Subroutine does not return
                          FUN_00a3f6a1();
                        }
                        local_144 = 7;
                        local_148 = 0;
                        local_158 = local_158 & 0xffff0000;
                        _free(local_c4);
                        if (7 < local_c8) {
                    // WARNING: Subroutine does not return
                          FUN_00a3f6a1();
                        }
                      }
                      *local_180 = wxObject::vftable;
                      iVar5 = DAT_032390e8;
                      local_180[1] = DAT_032390e8;
                      if (iVar5 != 0) {
                        piVar11 = (int *)(iVar5 + 4);
                        *piVar11 = *piVar11 + 1;
                      }
                      *local_180 = wxImage::vftable;
                      local_1a4 = 1;
                      _free(local_7c);
                      if (7 < local_80) {
                    // WARNING: Subroutine does not return
                        FUN_00a3f6a1();
                      }
                      local_80 = 7;
                      local_84 = 0;
                      local_94 = local_94 & 0xffff0000;
                      _free(local_58);
                      if (7 < local_5c) {
                    // WARNING: Subroutine does not return
                        FUN_00a3f6a1();
                      }
                      local_5c = 7;
                      local_60 = 0;
                      local_70 = local_70 & 0xffff0000;
                      local_4 = CONCAT31(local_4._1_3_,1);
                      FUN_00893cf0();
                      goto LAB_00985c53;
                    }
                    *puVar12 = *(undefined *)(iVar5 + 0x28);
                    puVar12[1] = *(undefined *)(iVar5 + 0x29);
                    puVar12[2] = *(undefined *)(iVar5 + 0x2a);
                    local_188 = (int *)((int)local_188 + 1);
                    puVar12 = puVar12 + 3;
                    piVar11 = local_138;
                  } while (local_188 < local_138);
                }
                local_1b8 = local_1b8 + 1;
              } while (local_1b8 < local_134);
            }
            local_1b8 = FUN_00823c23();
            puVar12 = (undefined *)FUN_00823c23();
            local_168 = (char **)FUN_00823c23();
            uVar7 = 0;
            if (local_19c != 0) {
              do {
                if (*(int *)((int)local_1a0 + uVar7 * 4) != 0) {
                  local_190 = *(undefined ***)((int)local_1a0 + uVar7 * 4);
                  goto LAB_009860c1;
                }
                uVar7 = uVar7 + 1;
              } while (uVar7 < local_19c);
            }
            local_190 = (undefined **)0x0;
LAB_009860c1:
            ppvStack_18c = &local_1a0;
            local_188 = (int *)0x0;
            if (local_190 != (undefined **)0x0) {
              iVar15 = local_1b8 - (int)puVar12;
              iVar5 = (int)local_168 - (int)puVar12;
              do {
                puVar12[iVar15] = *(undefined *)((int *)local_190 + 10);
                *puVar12 = *(undefined *)((int)local_190 + 0x29);
                puVar12[iVar5] = *(undefined *)((int)local_190 + 0x2a);
                piVar11 = (int *)*local_190;
                if (piVar11 == (int *)0x0) {
                  piVar11 = (int *)FUN_009e74b0();
                }
                local_188 = (int *)((int)local_188 + 1);
                puVar12 = puVar12 + 1;
                local_190 = (undefined **)piVar11;
              } while (piVar11 != (int *)0x0);
            }
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_188 != local_1a8)) {
              FUN_008402e0();
            }
            FUN_009089b0();
            local_4._0_1_ = 0x26;
            FUN_009029b0();
            local_4._0_1_ = 4;
            local_190 = wxObject::vftable;
            FUN_0083e850();
            FUN_00a3f66c();
            FUN_00a3f66c();
            FUN_00a3f66c();
            *local_180 = wxObject::vftable;
            local_180[1] = local_1b0;
            if (local_1b0 != 0) {
              *(int *)(local_1b0 + 4) = *(int *)(local_1b0 + 4) + 1;
            }
            *local_180 = wxImage::vftable;
            local_1a4 = 1;
            _free(local_7c);
            if (7 < local_80) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1();
            }
            local_80 = 7;
            local_84 = 0;
            local_94 = local_94 & 0xffff0000;
            _free(local_58);
            if (7 < local_5c) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1();
            }
            local_5c = 7;
            local_60 = 0;
            local_70 = local_70 & 0xffff0000;
            local_4 = CONCAT31(local_4._1_3_,1);
            FUN_00893cf0();
            local_198 = 0;
            _free(local_1a0);
LAB_00985c60:
            local_1b4 = wxObject::vftable;
            local_4 = local_4 & 0xffffff00;
            FUN_0083e850();
          }
          else {
            local_178 = FUN_00893ca0();
            local_174 = 0;
            pvVar9 = _calloc(local_178,4);
            local_4 = CONCAT31(local_4._1_3_,0x15);
            local_17c = pvVar9;
            ppiVar10 = (int **)FUN_009da970();
            piVar11 = *ppiVar10;
            local_184 = ppiVar10[1];
            for (iVar5 = local_198; local_188 = piVar11, iVar5 != 0; iVar5 = iVar5 + -1) {
              local_168 = (char **)(uint)CONCAT21(CONCAT11(*(undefined *)(piVar11 + 10),
                                                           *(undefined *)((int)piVar11 + 0x29)),
                                                  *(undefined *)((int)piVar11 + 0x2a));
              FUN_009dbfa0();
              piVar11 = (int *)*piVar11;
              if (piVar11 == (int *)0x0) {
                piVar11 = (int *)FUN_009e74b0();
              }
              pvVar9 = local_17c;
            }
            uVar7 = 0;
            do {
              puVar3 = *(undefined4 **)((int)pvVar9 + (uVar7 % local_178) * 4);
              while( true ) {
                if (puVar3 == (undefined4 *)0x0) {
                  if (0xffffff < (int)uVar7) goto LAB_0098580b;
                  puVar12 = (undefined *)FUN_00985400();
                  *puVar12 = (char)(uVar7 >> 0x10);
                  puVar12[1] = (char)(uVar7 >> 8);
                  puVar12[2] = (char)uVar7;
                  FUN_008ff990();
                  local_4._0_1_ = 4;
                  FUN_00893cf0();
                  local_174 = 0;
                  _free(local_17c);
                  goto LAB_00985f71;
                }
                if (puVar3[1] == uVar7) break;
                puVar3 = (undefined4 *)*puVar3;
              }
              uVar7 = uVar7 + 1;
            } while ((int)uVar7 < 0x1000000);
LAB_0098580b:
            local_190 = (undefined **)&stack0xfffffe10;
            FUN_0043c211(&DAT_00d25fa0);
            cVar4 = FUN_00846b30(1);
            if (cVar4 != '\0') {
              FUN_004325b6();
              local_4._0_1_ = 0x16;
              FUN_0043c211();
              local_4 = CONCAT31(local_4._1_3_,0x17);
              iVar5 = FUN_0084a340();
              if (iVar5 == 0) {
                FUN_0084d360();
              }
              else {
                FUN_0084f210();
              }
              FUN_008433c0();
              local_4._0_1_ = 0x18;
              local_130 = 1;
              local_128 = "..\\..\\src\\common\\xpmdecod.cpp";
              local_120 = "wxXPMDecoder::ReadData";
              local_124 = 0x2f4;
              local_11c = &DAT_00d25fa0;
              local_118 = __time64((__time64_t *)0x0);
              local_110 = GetCurrentThreadId();
              local_10c = 0;
              local_f0 = 7;
              local_f4 = 0;
              local_104 = (uint)local_104._2_2_ << 0x10;
              local_ec = (void *)0x0;
              local_4._0_1_ = 0x19;
              FUN_008854f0();
              FUN_0083fe90();
              local_4._0_1_ = 0x18;
              FUN_00842440();
              local_4 = CONCAT31(local_4._1_3_,0x17);
              FUN_0081b5bc();
              _free(local_140);
              if (7 < local_144) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
              local_144 = 7;
              local_148 = 0;
              local_158 = local_158 & 0xffff0000;
              _free(local_a0);
              if (7 < local_a4) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
            }
            *local_180 = wxObject::vftable;
            iVar5 = DAT_032390e8;
            local_180[1] = DAT_032390e8;
            if (iVar5 != 0) {
              piVar11 = (int *)(iVar5 + 4);
              *piVar11 = *piVar11 + 1;
            }
            *local_180 = wxImage::vftable;
            local_1a4 = 1;
            local_4._0_1_ = 4;
            FUN_00893cf0();
            local_174 = 0;
            _free(local_17c);
            _free(local_7c);
            if (7 < local_80) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1();
            }
            local_80 = 7;
            local_84 = 0;
            local_94 = local_94 & 0xffff0000;
            _free(local_58);
            if (7 < local_5c) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1();
            }
            local_5c = 7;
            local_60 = 0;
            local_70 = local_70 & 0xffff0000;
            local_4._0_1_ = 1;
            FUN_00893cf0();
            local_198 = 0;
            _free(local_1a0);
            local_4 = (uint)local_4._1_3_ << 8;
            local_1b4 = wxObject::vftable;
            FUN_0083e850();
          }
          goto LAB_00986c56;
        }
      }
      else if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480();
      }
      FUN_008196af();
      local_1a4 = 1;
      FUN_0040159c();
      FUN_0040159c();
      local_4._0_1_ = 1;
      FUN_00985350();
      local_4 = (uint)local_4._1_3_ << 8;
      local_1b4 = wxObject::vftable;
      FUN_0083e850();
    }
    else {
      local_190 = (undefined **)&stack0xfffffe10;
      FUN_0043c211(&DAT_00d25fa0);
      cVar4 = FUN_00846b30(1);
      if (cVar4 != '\0') {
        FUN_004325b6();
        local_4._0_1_ = 5;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,6);
        iVar5 = FUN_0084a340();
        if (iVar5 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 7;
        FUN_008423d0();
        local_4._0_1_ = 8;
        FUN_008854f0();
        FUN_0083fe90();
        local_4._0_1_ = 7;
        FUN_00842440();
        local_4._0_1_ = 6;
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      *param_1 = wxObject::vftable;
      iVar5 = DAT_032390e8;
      param_1[1] = DAT_032390e8;
      if (iVar5 != 0) {
        piVar11 = (int *)(iVar5 + 4);
        *piVar11 = *piVar11 + 1;
      }
      *param_1 = wxImage::vftable;
      local_1a4 = 1;
      _free(local_7c);
      if (7 < local_80) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_80 = 7;
      local_84 = 0;
      local_94 = local_94 & 0xffff0000;
      _free(local_58);
      if (7 < local_5c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_5c = 7;
      local_60 = 0;
      local_70 = local_70 & 0xffff0000;
      local_4._0_1_ = 1;
      FUN_00893cf0();
      local_198 = 0;
      _free(local_1a0);
      local_4 = (uint)local_4._1_3_ << 8;
      local_1b4 = wxObject::vftable;
      FUN_0083e850();
    }
  }
LAB_00986c56:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * FUN_00986c80(undefined4 *param_1,char **param_2)

{
  int *piVar1;
  char *pcVar2;
  longlong lVar3;
  char cVar4;
  int iVar5;
  int iVar6;
  char *pcVar7;
  char *pcVar8;
  char **ppcVar9;
  char *pcVar10;
  uint uVar11;
  char *pcVar12;
  char *pcVar13;
  uint uVar14;
  undefined **ppuStack_14;
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  uint uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be1001;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar5 = (**(code **)(*param_2 + 0x14))(DAT_0323f878 ^ (uint)&stack0xffffffd4);
  if (iVar5 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\xpmdecod.cpp",0x84,"wxXPMDecoder::ReadFile","length != 0",
                   L"Cannot read XPM from stream of unknown size");
    }
    *param_1 = wxObject::vftable;
    iVar5 = DAT_032390e8;
    param_1[1] = DAT_032390e8;
    if (iVar5 != 0) {
      piVar1 = (int *)(iVar5 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxImage::vftable;
    ExceptionList = local_c;
    return param_1;
  }
  FUN_0084aa50(iVar5);
  pcVar10 = *param_2;
  uStack_4 = 1;
  iVar6 = (**(code **)(*param_2 + 0x2c))(pcVar10,iVar5);
  if (*(int *)(iVar6 + 0xc) == 3) {
    *param_1 = wxObject::vftable;
    iVar5 = DAT_032390e8;
    param_1[1] = DAT_032390e8;
    if (iVar5 != 0) {
      piVar1 = (int *)(iVar5 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxImage::vftable;
    uStack_4 = uStack_4 & 0xffffff00;
    thunk_FUN_0043c1dd();
    ExceptionList = local_c;
    return param_1;
  }
  pcVar10[iVar5] = '\0';
  cVar4 = *pcVar10;
  pcVar12 = pcVar10;
  while (cVar4 != '\0') {
    cVar4 = *pcVar12;
    if (cVar4 == '\"') {
      cVar4 = pcVar12[1];
      pcVar7 = pcVar12;
      while( true ) {
        if (cVar4 == '\0') goto LAB_00986de5;
        pcVar12 = pcVar7 + 1;
        if ((cVar4 == '\"') && (*pcVar7 != '\\')) break;
        cVar4 = pcVar7[2];
        pcVar7 = pcVar12;
      }
LAB_00986dd5:
      if (*pcVar12 == '\0') break;
    }
    else {
      if (cVar4 == '\'') {
        cVar4 = pcVar12[1];
        pcVar7 = pcVar12;
        if (cVar4 != '\0') {
          while ((pcVar12 = pcVar7 + 1, cVar4 != '\'' || (*pcVar7 == '\\'))) {
            cVar4 = pcVar7[2];
            pcVar7 = pcVar12;
            if (cVar4 == '\0') goto LAB_00986de5;
          }
          goto LAB_00986dd5;
        }
        break;
      }
      if ((cVar4 == '/') && (pcVar12[1] == '*')) {
        cVar4 = pcVar12[2];
        for (pcVar7 = pcVar12 + 2; (cVar4 != '\0' && ((cVar4 != '*' || (pcVar7[1] != '/'))));
            pcVar7 = pcVar7 + 1) {
          cVar4 = pcVar7[1];
        }
        pcVar8 = pcVar7 + 2;
        do {
          cVar4 = *pcVar8;
          pcVar8 = pcVar8 + 1;
        } while (cVar4 != '\0');
        _memmove(pcVar12,pcVar7 + 2,(size_t)(pcVar8 + (1 - (int)(pcVar7 + 3))));
      }
    }
    pcVar12 = pcVar12 + 1;
    cVar4 = *pcVar12;
  }
LAB_00986de5:
  pcVar7 = (char *)0x0;
  cVar4 = *pcVar10;
  pcVar12 = pcVar10;
  while (cVar4 != '\0') {
    if (*pcVar12 == '\"') {
      pcVar8 = pcVar12 + 1;
      cVar4 = *pcVar8;
      pcVar13 = pcVar8;
      while ((cVar4 != '\0' && (cVar4 != '\"'))) {
        pcVar2 = pcVar13 + 1;
        pcVar13 = pcVar13 + 1;
        cVar4 = *pcVar2;
      }
      _strncpy(pcVar10 + (int)pcVar7,pcVar8,(size_t)(pcVar13 + (-1 - (int)pcVar12)));
      pcVar10[(int)(pcVar13 + (int)(pcVar7 + (-1 - (int)pcVar12)))] = '\n';
      pcVar7 = pcVar13 + (int)(pcVar7 + (-1 - (int)pcVar12)) + 1;
      pcVar12 = pcVar13 + 1;
    }
    pcVar12 = pcVar12 + 1;
    cVar4 = *pcVar12;
  }
  pcVar10[(int)pcVar7] = '\0';
  cVar4 = *pcVar10;
  uVar14 = 0;
  pcVar12 = pcVar10;
  if (cVar4 == '\0') {
LAB_00986e54:
    *param_1 = wxObject::vftable;
    iVar5 = DAT_032390e8;
    param_1[1] = DAT_032390e8;
    if (iVar5 != 0) {
      piVar1 = (int *)(iVar5 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxImage::vftable;
    uStack_4 = uStack_4 & 0xffffff00;
    ppcVar9 = (char **)FUN_00850350();
    if (param_2 == ppcVar9) {
      ExceptionList = local_c;
      return param_1;
    }
    *(short *)(param_2 + 2) = *(short *)(param_2 + 2) + -1;
    if (*(short *)(param_2 + 2) != 0) {
LAB_00986ec0:
      FUN_00850350();
      ExceptionList = local_c;
      return param_1;
    }
    if (*(char *)((int)param_2 + 10) == '\0') goto LAB_00986eb7;
    pcVar10 = *param_2;
  }
  else {
    do {
      if (cVar4 == '\n') {
        uVar14 = uVar14 + 1;
      }
      cVar4 = pcVar12[1];
      pcVar12 = pcVar12 + 1;
    } while (cVar4 != '\0');
    if (uVar14 == 0) goto LAB_00986e54;
    lVar3 = (ulonglong)(uVar14 + 1) * 4;
    ppcVar9 = (char **)FUN_00823c23(-(uint)((int)((ulonglong)lVar3 >> 0x20) != 0) | (uint)lVar3);
    *ppcVar9 = pcVar10;
    cVar4 = *pcVar10;
    uVar11 = 1;
    while ((cVar4 != '\0' && (uVar11 < uVar14))) {
      if (*pcVar10 == '\n') {
        ppcVar9[uVar11] = pcVar10 + 1;
        *pcVar10 = '\0';
        uVar11 = uVar11 + 1;
      }
      pcVar10 = pcVar10 + 1;
      cVar4 = *pcVar10;
    }
    ppcVar9[uVar14] = (char *)0x0;
    FUN_009854c0(&ppuStack_14,ppcVar9);
    FUN_00a3f66c(ppcVar9);
    *param_1 = wxObject::vftable;
    param_1[1] = iStack_10;
    if (iStack_10 != 0) {
      *(int *)(iStack_10 + 4) = *(int *)(iStack_10 + 4) + 1;
    }
    *param_1 = wxImage::vftable;
    ppuStack_14 = wxObject::vftable;
    FUN_0083e850();
    uStack_4 = uStack_4 & 0xffffff00;
    ppcVar9 = (char **)FUN_00850350();
    if (param_2 == ppcVar9) {
      ExceptionList = local_c;
      return param_1;
    }
    *(short *)(param_2 + 2) = *(short *)(param_2 + 2) + -1;
    if (*(short *)(param_2 + 2) != 0) goto LAB_00986ec0;
    if (*(char *)((int)param_2 + 10) == '\0') goto LAB_00986eb7;
    pcVar10 = *param_2;
  }
  _free(pcVar10);
LAB_00986eb7:
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_2);
}



undefined ** FUN_00987010(void)

{
  return &PTR_u_wxBMPHandler_0323bbf4;
}



undefined ** FUN_00987030(void)

{
  return &PTR_u_wxICOHandler_0323bc0c;
}



undefined4 __thiscall
FUN_00987040(int *param_1_00,undefined4 param_1,int *param_2,undefined4 param_4,undefined4 param_5)

{
  char cVar1;
  undefined4 uVar2;
  longlong lVar3;
  
  cVar1 = (**(code **)(*param_2 + 0x1c))();
  if (cVar1 != '\0') {
    lVar3 = (**(code **)(*param_2 + 0x3c))(0,0,0);
    if (lVar3 == -1) {
      return 0xffffff00;
    }
  }
  uVar2 = (**(code **)(*param_1_00 + 0x20))(param_1,param_2,param_4,param_5);
  return uVar2;
}



undefined2 FUN_00987090(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  undefined2 unaff_SI;
  longlong lVar4;
  undefined auStack_8 [8];
  
  cVar1 = (**(code **)(*param_1 + 0x1c))();
  if ((cVar1 != '\0') && (lVar4 = (**(code **)(*param_1 + 0x3c))(0,0,0), lVar4 == -1)) {
    return 0;
  }
  piVar2 = (int *)(**(code **)(*param_1 + 0x2c))(auStack_8,6);
  iVar3 = (**(code **)(*piVar2 + 0x30))();
  if (iVar3 != 6) {
    return 0;
  }
  return unaff_SI;
}



undefined ** FUN_009870f0(void)

{
  return &PTR_u_wxCURHandler_0323bc24;
}



undefined ** FUN_00987100(void)

{
  return &PTR_u_wxANIHandler_0323bc3c;
}



undefined FUN_00987110(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4)

{
  char cVar1;
  undefined uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1028;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009ce3a0(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  local_4 = 0;
  cVar1 = FUN_009ce570(param_2);
  if (cVar1 == '\0') {
    local_4 = 0xffffffff;
    FUN_009ce410();
    ExceptionList = local_c;
    return 0;
  }
  uVar2 = FUN_009cdf30(-(uint)(param_4 != 0xffffffff) & param_4,param_1);
  local_4 = 0xffffffff;
  FUN_009ce410();
  ExceptionList = local_c;
  return uVar2;
}



undefined4 FUN_009871d0(undefined4 param_1)

{
  char cVar1;
  undefined4 local_3c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1028;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009ce3a0(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  local_4 = 0;
  cVar1 = FUN_009ce570(param_1);
  local_4 = 0xffffffff;
  if (cVar1 == '\0') {
    FUN_009ce410();
    ExceptionList = local_c;
    return 0xffffffff;
  }
  FUN_009ce410();
  ExceptionList = local_c;
  return local_3c;
}



// WARNING: Removing unreachable block (ram,0x0098728b)
// WARNING: Removing unreachable block (ram,0x00987290)

undefined4 FUN_00987260(int *param_1)

{
  int *piVar1;
  undefined4 uVar2;
  
  piVar1 = (int *)(**(code **)(*param_1 + 0x2c))(&param_1);
  uVar2 = (**(code **)(*piVar1 + 0x10))();
  if ((char)uVar2 != '\0') {
    return 0;
  }
  return uVar2;
}



uint FUN_009872a0(void)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  int *unaff_ESI;
  undefined8 uVar4;
  undefined *puVar5;
  short sVar6;
  undefined auStack_8 [4];
  short sStack_4;
  
  cVar1 = (**(code **)(*unaff_ESI + 0x1c))();
  if (cVar1 != '\0') {
    uVar4 = (**(code **)(*unaff_ESI + 0x3c))(0,0,0);
    uVar2 = (uint)uVar4 & (uint)((ulonglong)uVar4 >> 0x20);
    if (uVar2 == 0xffffffff) goto LAB_009872c6;
  }
  puVar5 = auStack_8;
  sVar6 = 6;
  piVar3 = (int *)(**(code **)(*unaff_ESI + 0x2c))();
  uVar2 = (**(code **)(*piVar3 + 0x10))();
  if ((char)uVar2 != '\0') {
    if ((((short)puVar5 == 0) && ((short)((uint)puVar5 >> 0x10) == sStack_4)) && (sVar6 != 0)) {
      return 1;
    }
    return 0;
  }
LAB_009872c6:
  return uVar2 & 0xffffff00;
}



void FUN_00987320(char *param_1)

{
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00be1050;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  if (*param_1 == '\0') {
    local_8 = 0;
    (**(code **)(param_1 + 4))(*(undefined4 *)(param_1 + 8));
  }
  ExceptionList = local_10;
  return;
}



undefined4 Catch_All_00987377(void)

{
  return 0x987365;
}



void FUN_00987380(void)

{
  FUN_009872a0(1);
  return;
}



void FUN_009873a0(void)

{
  FUN_009872a0(2);
  return;
}



void __fastcall FUN_009873c0(undefined4 param_1)

{
  FUN_00987320(param_1);
  return;
}



void FUN_009873d0(undefined *param_1,undefined4 param_2,undefined4 param_3)

{
  *param_1 = 0;
  *(undefined4 *)(param_1 + 4) = param_2;
  *(undefined4 *)(param_1 + 8) = param_3;
  return;
}



undefined4 FUN_009873f0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_009873d0(param_1,param_2,param_3);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void __fastcall thunk_FUN_0043209b(undefined4 *param_1)

{
  FUN_0040159c();
  FUN_00853f30();
  FUN_0040159c();
  FUN_0040159c();
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined4 * __fastcall FUN_00987430(undefined4 *param_1)

{
  wchar_t *pwVar1;
  short *psVar2;
  short *psVar3;
  wchar_t *pwVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1078;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00903be0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxICOHandler::vftable;
  pwVar1 = L"Windows icon file";
  do {
    pwVar4 = pwVar1;
    pwVar1 = pwVar4 + 1;
  } while (*pwVar4 != L'\0');
  FID_conflict_assign(L"Windows icon file",(int)(pwVar4 + -0x6b3404) >> 1);
  psVar2 = &DAT_00d44fc8;
  do {
    psVar3 = psVar2;
    psVar2 = psVar3 + 1;
  } while (*psVar3 != 0);
  FID_conflict_assign(&DAT_00d44fc8,(int)(psVar3 + -0x6a27e4) >> 1);
  param_1[0x21] = 3;
  pwVar1 = L"image/x-ico";
  do {
    pwVar4 = pwVar1;
    pwVar1 = pwVar4 + 1;
  } while (*pwVar4 != L'\0');
  FID_conflict_assign(L"image/x-ico",(int)(pwVar4 + -0x6b33e4) >> 1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __fastcall FUN_00987500(undefined4 *param_1)

{
  wchar_t *pwVar1;
  short *psVar2;
  short *psVar3;
  wchar_t *pwVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1078;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00987430(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxCURHandler::vftable;
  pwVar1 = L"Windows cursor file";
  do {
    pwVar4 = pwVar1;
    pwVar1 = pwVar4 + 1;
  } while (*pwVar4 != L'\0');
  FID_conflict_assign(L"Windows cursor file",(int)(pwVar4 + -0x6b343a) >> 1);
  psVar2 = &DAT_00d66844;
  do {
    psVar3 = psVar2;
    psVar2 = psVar3 + 1;
  } while (*psVar3 != 0);
  FID_conflict_assign(&DAT_00d66844,(int)(psVar3 + -0x6b3422) >> 1);
  param_1[0x21] = 5;
  pwVar1 = L"image/x-cur";
  do {
    pwVar4 = pwVar1;
    pwVar1 = pwVar4 + 1;
  } while (*pwVar4 != L'\0');
  FID_conflict_assign(L"image/x-cur",(int)(pwVar4 + -0x6b3416) >> 1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_009875d0(undefined4 param_1_00,byte param_1)

{
  FUN_0043209b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_009875f0(undefined4 *param_1)

{
  wchar_t *pwVar1;
  short *psVar2;
  short *psVar3;
  wchar_t *pwVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1078;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00987500(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxANIHandler::vftable;
  pwVar1 = L"Windows animated cursor file";
  do {
    pwVar4 = pwVar1;
    pwVar1 = pwVar4 + 1;
  } while (*pwVar4 != L'\0');
  FID_conflict_assign(L"Windows animated cursor file",(int)(pwVar4 + -0x6b3472) >> 1);
  psVar2 = &DAT_00d668b4;
  do {
    psVar3 = psVar2;
    psVar2 = psVar3 + 1;
  } while (*psVar3 != 0);
  FID_conflict_assign(&DAT_00d668b4,(int)(psVar3 + -0x6b345a) >> 1);
  param_1[0x21] = 0x1b;
  pwVar1 = L"image/x-ani";
  do {
    pwVar4 = pwVar1;
    pwVar1 = pwVar4 + 1;
  } while (*pwVar4 != L'\0');
  FID_conflict_assign(L"image/x-ani",(int)(pwVar4 + -0x6b344e) >> 1);
  ExceptionList = local_c;
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x88);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00903be0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x88);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00987430(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x88);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00987500(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x88);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009875f0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// WARNING: Removing unreachable block (ram,0x00988e2b)
// WARNING: Removing unreachable block (ram,0x00988df6)

undefined4 FUN_00987880(int param_1,int *param_2,char param_3,char param_4,char param_5)

{
  byte *pbVar1;
  byte *pbVar2;
  char cVar3;
  undefined uVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  int *piVar8;
  undefined *puVar9;
  void *pvVar10;
  byte *pbVar11;
  int iVar12;
  byte bVar13;
  undefined *puVar14;
  uint uVar15;
  int local_200;
  byte bStack_1fc;
  int *piStack_1f8;
  int iStack_1f4;
  byte bStack_1f0;
  byte bStack_1ec;
  undefined uStack_1e6;
  undefined uStack_1e5;
  byte bStack_1e4;
  byte bStack_1e0;
  undefined uStack_1d9;
  byte bStack_1d8;
  byte bStack_1d4;
  int *piStack_1c4;
  int local_1b8;
  int iStack_1b0;
  uint local_15c;
  void *local_158;
  uint uStack_a0;
  void *pvStack_9c;
  uint uStack_7c;
  void *pvStack_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be11ba;
  local_c = ExceptionList;
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0;
    }
    ExceptionList = &local_c;
    FUN_00840480();
    ExceptionList = local_c;
    return 0;
  }
  ExceptionList = &local_c;
  cVar3 = FUN_008ff820();
  if (cVar3 == '\0') {
    if (param_3 == '\0') {
      ExceptionList = local_c;
      return 0;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(1);
    if (cVar3 == '\0') {
      ExceptionList = local_c;
      return 0;
    }
    FUN_004325b6();
    local_4 = 0;
    FUN_0043c211();
    local_4._0_1_ = 1;
    FUN_00820bf9();
    FUN_008433c0();
    local_4._0_1_ = 2;
    FUN_008423d0();
    local_4._0_1_ = 3;
    FUN_008854f0();
    FUN_0083fe90();
    local_4._0_1_ = 2;
    FUN_00842440();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_0081b5bc();
    FUN_0040159c();
    FUN_0040159c();
    ExceptionList = local_c;
    return 0;
  }
  FUN_004325b6();
  local_4 = 4;
  cVar3 = FUN_008ffc30();
  local_4 = 0xffffffff;
  _free(local_158);
  if (7 < local_15c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (cVar3 == '\0') {
LAB_00987ab7:
    iVar7 = 0x18;
    local_1b8 = 0x18;
    local_200 = 0;
  }
  else {
    FUN_004325b6();
    local_4 = 5;
    local_1b8 = FUN_00903f50();
    local_4 = 0xffffffff;
    FUN_0040159c();
    if ((local_1b8 == 1) || (local_1b8 == 2)) {
      iVar7 = 1;
      local_200 = 2;
    }
    else if (local_1b8 == 4) {
      local_200 = 0x10;
      iVar7 = 4;
    }
    else {
      if (((local_1b8 == 8) || (local_1b8 == 9)) || (local_1b8 == 10)) {
        if (local_1b8 == 0xb) goto LAB_00987ad6;
      }
      else {
        if (local_1b8 != 0xb) goto LAB_00987ab7;
LAB_00987ad6:
        cVar3 = FUN_008ffbb0();
        if (cVar3 == '\0') {
          if (param_3 == '\0') {
            ExceptionList = local_c;
            return 0;
          }
          FUN_0043c211(&DAT_00d25fa0);
          cVar3 = FUN_00846b30(1);
          if (cVar3 == '\0') {
            ExceptionList = local_c;
            return 0;
          }
          FUN_004325b6();
          local_4 = 6;
          FUN_0043c211();
          local_4._0_1_ = 7;
          FUN_00820bf9();
          FUN_008433c0();
          local_4._0_1_ = 8;
          FUN_008423d0();
          local_4._0_1_ = 9;
          FUN_00840b80();
          local_4._0_1_ = 8;
          FUN_00842440();
          local_4 = CONCAT31(local_4._1_3_,7);
          goto LAB_00987bd0;
        }
      }
      iVar7 = 8;
      local_200 = 0x100;
    }
  }
  uVar5 = FUN_00900100();
  uVar6 = iVar7 * uVar5 + 7 >> 3;
  FUN_00900150();
  FUN_00900100();
  FUN_00900150();
  FUN_00900150();
  iVar7 = FUN_00904350();
  if ((iVar7 == 0) || (iVar7 == 1)) {
LAB_00987d2f:
    FUN_00a49750();
    FUN_00a49750();
  }
  else if (iVar7 != 2) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    goto LAB_00987d2f;
  }
  if (param_4 != '\0') {
    piVar8 = (int *)(**(code **)(*param_2 + 0x28))();
    cVar3 = (**(code **)(*piVar8 + 0x10))();
    if (cVar3 != '\0') {
      piVar8 = (int *)(**(code **)(*param_2 + 0x28))();
      cVar3 = (**(code **)(*piVar8 + 0x10))();
      if (cVar3 != '\0') {
        (**(code **)(*param_2 + 0x28))();
        cVar3 = FUN_0089f6b0();
        if (cVar3 == '\0') {
          (**(code **)(*param_2 + 0x28))();
          cVar3 = FUN_0089f6b0();
          if (cVar3 == '\0') goto LAB_00987f06;
        }
      }
    }
    if (param_3 == '\0') {
      ExceptionList = local_c;
      return 0;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(1);
    if (cVar3 == '\0') {
      ExceptionList = local_c;
      return 0;
    }
    FUN_004325b6();
    local_4 = 10;
    FUN_0043c211();
    local_4._0_1_ = 0xb;
    FUN_00820bf9();
    FUN_008433c0();
    local_4._0_1_ = 0xc;
    FUN_008423d0();
    local_4._0_1_ = 0xd;
    FUN_00840b80();
    local_4._0_1_ = 0xc;
    FUN_00842440();
    local_4 = CONCAT31(local_4._1_3_,0xb);
    goto LAB_00987bd0;
  }
LAB_00987f06:
  if (param_5 == '\0') {
    piVar8 = (int *)(**(code **)(*param_2 + 0x28))();
    cVar3 = (**(code **)(*piVar8 + 0x10))();
    if (cVar3 != '\0') {
      (**(code **)(*param_2 + 0x28))();
      cVar3 = FUN_0089f6b0();
      if (cVar3 == '\0') {
        (**(code **)(*param_2 + 0x28))();
        cVar3 = FUN_0089f6b0();
        if (cVar3 == '\0') {
          (**(code **)(*param_2 + 0x28))();
          cVar3 = FUN_0089f6b0();
          if (cVar3 == '\0') {
            (**(code **)(*param_2 + 0x28))();
            cVar3 = FUN_0089f6b0();
            if (cVar3 == '\0') {
              (**(code **)(*param_2 + 0x28))();
              cVar3 = FUN_0089f6b0();
              if (cVar3 == '\0') {
                (**(code **)(*param_2 + 0x28))();
                cVar3 = FUN_0089f6b0();
                if (cVar3 == '\0') {
                  (**(code **)(*param_2 + 0x28))();
                  cVar3 = FUN_0089f6b0();
                  if (cVar3 == '\0') {
                    (**(code **)(*param_2 + 0x28))();
                    cVar3 = FUN_0089f6b0();
                    if (cVar3 == '\0') {
                      (**(code **)(*param_2 + 0x28))();
                      cVar3 = FUN_0089f6b0();
                      if (cVar3 == '\0') {
                        (**(code **)(*param_2 + 0x28))();
                        cVar3 = FUN_0089f6b0();
                        if (cVar3 == '\0') goto LAB_00988178;
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    if (param_3 == '\0') {
      ExceptionList = local_c;
      return 0;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(1);
    if (cVar3 == '\0') {
      ExceptionList = local_c;
      return 0;
    }
    FUN_004325b6();
    local_4 = 0xe;
    FUN_0043c211();
    local_4._0_1_ = 0xf;
    FUN_00820bf9();
    FUN_008433c0();
    local_4._0_1_ = 0x10;
    FUN_008423d0();
    local_4._0_1_ = 0x11;
    FUN_00840b80();
    local_4._0_1_ = 0x10;
    FUN_00842440();
    local_4 = CONCAT31(local_4._1_3_,0xf);
LAB_00987bd0:
    FUN_0081b5bc();
    FUN_0040159c();
    FUN_0040159c();
    ExceptionList = local_c;
    return 0;
  }
LAB_00988178:
  piStack_1f8 = (int *)0x0;
  piStack_1c4 = (int *)0x0;
  if (((local_1b8 == 1) || (local_1b8 == 4)) || (local_1b8 == 8)) {
    if (local_1b8 == 0xb) goto LAB_0098824b;
    piStack_1c4 = (int *)operator_new(8);
    if (piStack_1c4 == (int *)0x0) {
      piStack_1c4 = (int *)0x0;
    }
    else {
      piStack_1c4[1] = 0;
      *piStack_1c4 = (int)wxImage::vftable;
    }
    FUN_009cff50();
LAB_0098828c:
    iStack_1f4 = FUN_00823c23();
    iVar7 = 0;
    if (local_200 != 0) {
      puVar9 = (undefined *)(iStack_1f4 + 2);
      do {
        cVar3 = FUN_00973f80();
        if (cVar3 == '\0') {
          uStack_1e6 = 0;
          uStack_1e5 = 0;
          uStack_1d9 = 0;
        }
        puVar9[-2] = uStack_1d9;
        puVar9[-1] = uStack_1e5;
        *puVar9 = uStack_1e6;
        puVar9[1] = 0;
        iVar7 = iVar7 + 1;
        puVar9 = puVar9 + 4;
      } while (iVar7 < local_200);
    }
  }
  else {
    if (local_1b8 == 0xb) {
LAB_0098824b:
      pvVar10 = operator_new(8);
      local_4 = 0x12;
      if (pvVar10 == (void *)0x0) {
        piStack_1f8 = (int *)0x0;
      }
      else {
        FUN_008ffbe0();
        piStack_1f8 = (int *)FUN_0094fea0();
      }
      local_4 = 0xffffffff;
      goto LAB_0098828c;
    }
    if (((local_1b8 != 9) && (local_1b8 != 10)) && (local_1b8 != 2)) goto LAB_00988490;
    iStack_1f4 = FUN_00823c23();
    iVar7 = 0;
    if (local_200 != 0) {
      puVar9 = (undefined *)(iStack_1f4 + 1);
      do {
        if ((iVar7 < 1) || (local_1b8 != 2)) {
          uVar4 = (undefined)iVar7;
        }
        else {
          uVar4 = 0xff;
        }
        puVar9[1] = uVar4;
        *puVar9 = uVar4;
        puVar9[-1] = uVar4;
        puVar9[2] = 0;
        iVar7 = iVar7 + 1;
        puVar9 = puVar9 + 4;
      } while (iVar7 < local_200);
    }
  }
  if (iStack_1f4 != 0) {
    if (param_5 == '\0') {
      piVar8 = (int *)(**(code **)(*param_2 + 0x28))();
      cVar3 = (**(code **)(*piVar8 + 0x10))();
      if (cVar3 == '\0') {
        if (param_3 != '\0') {
          FUN_0043c211(&DAT_00d25fa0);
          cVar3 = FUN_00846b30(1);
          if (cVar3 != '\0') {
            FUN_004325b6();
            local_4 = 0x13;
            FUN_0043c211();
            local_4._0_1_ = 0x14;
            FUN_00820bf9();
            FUN_008433c0();
            local_4._0_1_ = 0x15;
            FUN_008423d0();
            local_4._0_1_ = 0x16;
            FUN_00840b80();
            local_4._0_1_ = 0x15;
            FUN_00842440();
            local_4 = CONCAT31(local_4._1_3_,0x14);
            FUN_0081b5bc();
            FUN_0040159c();
            local_4 = 0xffffffff;
            FUN_0040159c();
          }
        }
        FUN_00a3f66c();
        if (piStack_1f8 != (int *)0x0) {
          (**(code **)(*piStack_1f8 + 4))();
        }
        if (piStack_1c4 == (int *)0x0) {
          ExceptionList = local_c;
          return 0;
        }
        (**(code **)(*piStack_1c4 + 4))();
        ExceptionList = local_c;
        return 0;
      }
    }
    FUN_00a3f66c();
  }
LAB_00988490:
  iVar7 = FUN_008ff850();
  if ((piStack_1c4 != (int *)0x0) && (cVar3 = FUN_008ff820(), cVar3 != '\0')) {
    iVar7 = FUN_008ff850();
  }
  pvVar10 = (void *)FUN_00823c23();
  _memset(pvVar10,0,uVar6 + (-uVar6 & 3));
  iStack_1b0 = FUN_00900150();
  iStack_1b0 = iStack_1b0 + -1;
  if (-1 < iStack_1b0) {
    iStack_1f4 = iStack_1b0 * uVar5 * 3;
    do {
      if (local_1b8 == 0x18) {
        if (uVar5 != 0) {
          iVar12 = iVar7 + 1;
          puVar9 = (undefined *)(iStack_1f4 + iVar12);
          puVar14 = (undefined *)((int)pvVar10 + 2);
          uVar6 = uVar5;
          do {
            puVar14[-2] = puVar9[(iVar7 - iVar12) + 2];
            puVar14[-1] = *puVar9;
            *puVar14 = puVar9[iVar7 - iVar12];
            puVar9 = puVar9 + 3;
            puVar14 = puVar14 + 3;
            uVar6 = uVar6 - 1;
          } while (uVar6 != 0);
        }
      }
      else if ((local_1b8 == 8) || (local_1b8 == 0xb)) {
        uVar6 = 0;
        if (uVar5 != 0) {
          do {
            uVar4 = FUN_00973f40();
            *(undefined *)((int)pvVar10 + uVar6) = uVar4;
            uVar6 = uVar6 + 1;
          } while (uVar6 < uVar5);
        }
      }
      else if (local_1b8 == 9) {
        if (uVar5 != 0) {
          pbVar11 = (byte *)(iVar7 + iStack_1f4);
          uVar6 = 0;
          do {
            pbVar1 = pbVar11 + 1;
            bVar13 = *pbVar11;
            pbVar2 = pbVar11 + 2;
            uVar15 = uVar6 + 1;
            pbVar11 = pbVar11 + 3;
            bStack_1fc = (byte)(int)ROUND((double)(uint)*pbVar2 * 0.114 +
                                          (double)(uint)bVar13 * 0.299 +
                                          (double)(uint)*pbVar1 * 0.587);
            *(byte *)(uVar6 + (int)pvVar10) = bStack_1fc;
            uVar6 = uVar15;
          } while (uVar15 < uVar5);
        }
      }
      else if (local_1b8 == 10) {
        uVar6 = 0;
        if (uVar5 != 0) {
          puVar9 = (undefined *)(iVar7 + iStack_1f4);
          do {
            *(undefined *)(uVar6 + (int)pvVar10) = *puVar9;
            uVar6 = uVar6 + 1;
            puVar9 = puVar9 + 3;
          } while (uVar6 < uVar5);
        }
      }
      else if (local_1b8 == 4) {
        uVar6 = 0;
        if (uVar5 != 0) {
          do {
            if (uVar5 < uVar6 + 1) {
              bStack_1d4 = 0;
            }
            else {
              bStack_1d4 = FUN_00973f40();
            }
            cVar3 = FUN_00973f40();
            uVar15 = uVar6 >> 1;
            uVar6 = uVar6 + 2;
            *(byte *)(uVar15 + (int)pvVar10) = cVar3 << 4 | bStack_1d4;
          } while (uVar6 < uVar5);
        }
      }
      else if (local_1b8 == 1) {
        if (uVar5 != 0) {
          uVar6 = 2;
          do {
            if (uVar5 < uVar6 - 1) {
              bStack_1fc = 0;
            }
            else {
              uVar15 = FUN_00973f40();
              bStack_1fc = (byte)((uVar15 & 0xff) << 6);
            }
            if (uVar5 < uVar6) {
              bStack_1d4 = 0;
            }
            else {
              uVar15 = FUN_00973f40();
              bStack_1d4 = (byte)((uVar15 & 0xff) << 5);
            }
            if (uVar5 < uVar6 + 1) {
              bStack_1e4 = 0;
            }
            else {
              uVar15 = FUN_00973f40();
              bStack_1e4 = (byte)((uVar15 & 0xff) << 4);
            }
            if (uVar5 < uVar6 + 2) {
              bStack_1e0 = 0;
            }
            else {
              cVar3 = FUN_00973f40();
              bStack_1e0 = cVar3 * '\b';
            }
            if (uVar5 < uVar6 + 3) {
              bStack_1f0 = 0;
            }
            else {
              cVar3 = FUN_00973f40();
              bStack_1f0 = cVar3 * '\x04';
            }
            if (uVar5 < uVar6 + 4) {
              bStack_1d8 = 0;
            }
            else {
              cVar3 = FUN_00973f40();
              bStack_1d8 = cVar3 * '\x02';
            }
            if (uVar5 < uVar6 + 5) {
              bStack_1ec = 0;
            }
            else {
              bStack_1ec = FUN_00973f40();
            }
            cVar3 = FUN_00973f40();
            *(byte *)((uVar6 - 2 >> 3) + (int)pvVar10) =
                 cVar3 << 7 | bStack_1d4 | bStack_1e4 | bStack_1e0 | bStack_1f0 | bStack_1d8 |
                 bStack_1ec | bStack_1fc;
            uVar15 = uVar6 + 6;
            uVar6 = uVar6 + 8;
          } while (uVar15 < uVar5);
        }
      }
      else if ((local_1b8 == 2) && (uVar5 != 0)) {
        iVar12 = iStack_1f4;
        uVar6 = 2;
        do {
          if (uVar5 < uVar6 - 1) {
            bVar13 = 0;
          }
          else {
            bStack_1fc = (byte)(int)ROUND((double)(uint)*(byte *)(iVar12 + 3 + iVar7) * 0.0078125);
            bVar13 = bStack_1fc << 6;
          }
          if (uVar5 < uVar6) {
            bStack_1fc = 0;
          }
          else {
            bStack_1fc = (byte)(((int)ROUND((double)(uint)*(byte *)(iVar12 + 6 + iVar7) * 0.0078125)
                                & 0xffU) << 5);
          }
          if (uVar5 < uVar6 + 1) {
            bStack_1ec = 0;
          }
          else {
            bStack_1ec = (byte)(((int)ROUND((double)(uint)*(byte *)(iVar12 + 9 + iVar7) * 0.0078125)
                                & 0xffU) << 4);
          }
          if (uVar5 < uVar6 + 2) {
            bStack_1d8 = 0;
          }
          else {
            bStack_1d8 = (char)(int)ROUND((double)(uint)*(byte *)(iVar12 + 0xc + iVar7) * 0.0078125)
                         * '\b';
          }
          if (uVar5 < uVar6 + 3) {
            bStack_1f0 = 0;
          }
          else {
            bStack_1f0 = (char)(int)ROUND((double)(uint)*(byte *)(iVar12 + 0xf + iVar7) * 0.0078125)
                         * '\x04';
          }
          if (uVar5 < uVar6 + 4) {
            bStack_1e0 = 0;
          }
          else {
            bStack_1e0 = (char)(int)ROUND((double)(uint)*(byte *)(iVar12 + 0x12 + iVar7) * 0.0078125
                                         ) * '\x02';
          }
          if (uVar5 < uVar6 + 5) {
            bStack_1e4 = 0;
          }
          else {
            bStack_1e4 = (byte)(int)ROUND((double)(uint)*(byte *)(iVar12 + 0x15 + iVar7) * 0.0078125
                                         );
          }
          pbVar11 = (byte *)(iVar12 + iVar7);
          iVar12 = iVar12 + 0x18;
          bStack_1d4 = (byte)(int)ROUND((double)(uint)*pbVar11 * 0.0078125);
          *(byte *)((uVar6 - 2 >> 3) + (int)pvVar10) =
               bStack_1d4 << 7 | bVar13 | bStack_1fc | bStack_1ec | bStack_1d8 | bStack_1f0 |
               bStack_1e0 | bStack_1e4;
          uVar15 = uVar6 + 6;
          uVar6 = uVar6 + 8;
        } while (uVar15 < uVar5);
      }
      piVar8 = (int *)(**(code **)(*param_2 + 0x28))();
      cVar3 = (**(code **)(*piVar8 + 0x10))();
      if (cVar3 == '\0') {
        if (param_3 != '\0') {
          FUN_0043c211(&DAT_00d25fa0);
          cVar3 = FUN_00846b30(1);
          if (cVar3 != '\0') {
            FUN_004325b6();
            local_4 = 0x17;
            FUN_0043c211();
            local_4 = CONCAT31(local_4._1_3_,0x18);
            iVar7 = FUN_0084a340();
            if (iVar7 == 0) {
              FUN_0084d360();
            }
            else {
              FUN_0084f210();
            }
            FUN_008433c0();
            local_4._0_1_ = 0x19;
            __time64((__time64_t *)0x0);
            GetCurrentThreadId();
            local_4._0_1_ = 0x1a;
            FUN_008854f0();
            FUN_0083fe90();
            local_4._0_1_ = 0x19;
            _free((void *)0x0);
            local_4 = CONCAT31(local_4._1_3_,0x18);
            FUN_0081b5bc();
            _free(pvStack_9c);
            if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1();
            }
            local_4 = 0xffffffff;
            _free(pvStack_78);
            if (7 < uStack_7c) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1();
            }
          }
        }
        FUN_00a3f66c();
        if (piStack_1f8 != (int *)0x0) {
          (**(code **)(*piStack_1f8 + 4))();
        }
        if (piStack_1c4 == (int *)0x0) {
          ExceptionList = local_c;
          return 0;
        }
        (**(code **)(*piStack_1c4 + 4))();
        ExceptionList = local_c;
        return 0;
      }
      iStack_1f4 = iStack_1f4 + uVar5 * -3;
      iStack_1b0 = iStack_1b0 + -1;
    } while (-1 < iStack_1b0);
  }
  FUN_00a3f66c();
  if (piStack_1f8 != (int *)0x0) {
    (**(code **)(*piStack_1f8 + 4))();
  }
  if (piStack_1c4 != (int *)0x0) {
    (**(code **)(*piStack_1c4 + 4))();
  }
  ExceptionList = local_c;
  return 1;
}



// WARNING: Removing unreachable block (ram,0x00989755)
// WARNING: Type propagation algorithm not settling

undefined FUN_00988f60(undefined4 param_1,uint param_2,uint *param_3,int param_4,uint param_5,
                      int param_6,uint param_7,int param_8,int *param_9,char param_10,char param_11,
                      char param_12)

{
  undefined *puVar1;
  char cVar2;
  undefined *puVar3;
  undefined4 uVar4;
  undefined *puVar5;
  int iVar6;
  uint uVar7;
  byte bVar8;
  uint uVar9;
  int iVar10;
  undefined uVar11;
  uint *puVar12;
  int iVar13;
  char *pcVar14;
  bool bVar15;
  longlong lVar16;
  undefined *apuStack_194 [3];
  undefined4 uStack_188;
  undefined4 uStack_184;
  char *pcStack_180;
  undefined *puStack_17c;
  char *pcStack_178;
  char *pcStack_174;
  uint uStack_170;
  byte bStack_15a;
  byte bStack_159;
  uint *puStack_158;
  uint *puStack_154;
  uint uStack_150;
  undefined *puStack_14c;
  char cStack_146;
  char cStack_145;
  undefined4 uStack_144;
  ushort uStack_140;
  int local_13c;
  undefined4 uStack_138;
  int local_134;
  uint uStack_130;
  int local_12c;
  uint local_128;
  uint uStack_124;
  uint local_120;
  uint local_11c;
  byte abStack_118 [4];
  int local_114;
  int local_110;
  undefined **ppuStack_10c;
  int local_104;
  uint uStack_100;
  int iStack_fc;
  int iStack_f8;
  uint local_f4;
  undefined4 local_f0;
  uint uStack_ec;
  uint uStack_e8;
  uint uStack_e4;
  undefined local_dc [20];
  undefined auStack_c8 [36];
  undefined auStack_a4 [36];
  undefined auStack_80 [116];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be126b;
  local_c = ExceptionList;
  uStack_170 = DAT_0323f878 ^ (uint)&stack0xfffffe94;
  ExceptionList = &local_c;
  local_120 = 0;
  local_128 = 0;
  local_11c = 0;
  local_f4 = 0;
  local_12c = 0;
  local_13c = 0;
  local_134 = 0;
  local_f0 = 0;
  local_114 = 0;
  local_104 = 0;
  local_110 = 0;
  if (param_4 < 0x10) {
    pcStack_174 = (char *)(-(uint)((int)((ulonglong)param_5 * 3 >> 0x20) != 0) |
                          (uint)((ulonglong)param_5 * 3));
    pcStack_178 = (char *)0x988feb;
    puVar3 = (undefined *)FUN_00823c23();
    if (puVar3 == (undefined *)0x0) {
      if (param_10 != '\0') {
        ppuStack_10c = apuStack_194;
        FUN_0043c211(&DAT_00d25fa0);
        cVar2 = FUN_00846b30(1);
        if (cVar2 != '\0') {
          pcStack_174 = PTR_DAT_03236318;
          pcStack_178 = (char *)0x989040;
          FUN_004325b6();
          pcStack_174 = "BMP: Couldn\'t allocate memory.";
          uStack_4 = 0;
          pcStack_178 = (char *)0x989058;
          FUN_0043c211();
          pcStack_174 = auStack_a4;
          pcStack_178 = auStack_c8;
          uStack_4._0_1_ = 1;
          puStack_17c = (undefined *)0x989075;
          pcStack_174 = (char *)FUN_00820bf9();
          pcStack_178 = (char *)0x989085;
          FUN_008433c0();
          pcStack_174 = &DAT_00d25fa0;
          pcStack_178 = "wxBMPHandler::DoLoadDib";
          puStack_17c = (undefined *)0x20c;
          pcStack_180 = "..\\..\\src\\common\\imagbmp.cpp";
          uStack_184 = 1;
          uStack_4._0_1_ = 2;
          uStack_188 = 0x9890af;
          uVar4 = FUN_008423d0();
          uStack_4._0_1_ = 3;
          pcStack_174 = (char *)0x9890c5;
          pcStack_174 = (char *)FUN_008854f0();
          puStack_17c = (undefined *)0x9890cc;
          pcStack_178 = (char *)uVar4;
          FUN_0083fe90();
          uStack_4._0_1_ = 2;
          pcStack_174 = (char *)0x9890e3;
          FUN_00842440();
          uStack_4 = CONCAT31(uStack_4._1_3_,1);
          pcStack_174 = (char *)0x9890f7;
          FUN_0081b5bc();
          pcStack_174 = (char *)0x989103;
          FUN_0040159c();
          pcStack_174 = (char *)0x98910f;
          FUN_0040159c();
        }
      }
      ExceptionList = local_c;
      return 0;
    }
  }
  else {
    puVar3 = (undefined *)0x0;
  }
  puStack_17c = local_dc;
  pcStack_178 = &LAB_00987020;
  pcStack_180 = (char *)0x98912b;
  pcStack_174 = puVar3;
  FUN_009873f0();
  bVar15 = (int)param_3 < 0;
  uStack_4 = 4;
  if (bVar15) {
    param_3 = (uint *)-(int)param_3;
  }
  cStack_146 = !bVar15;
  pcStack_174 = (char *)0x989165;
  thunk_FUN_0083e850();
  pcStack_174 = (char *)0x1;
  pcStack_178 = (char *)param_3;
  puStack_17c = (undefined *)param_2;
  pcStack_180 = (char *)0x98917e;
  FUN_00900c30();
  pcStack_174 = (char *)0x989185;
  puVar5 = (undefined *)FUN_008ff850();
  puStack_14c = puVar5;
  if (puVar5 == (undefined *)0x0) {
    if (param_10 != '\0') {
      ppuStack_10c = apuStack_194;
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(1);
      if (cVar2 != '\0') {
        pcStack_174 = PTR_DAT_03236318;
        pcStack_178 = (char *)0x9891da;
        FUN_004325b6();
        pcStack_174 = "BMP: Couldn\'t allocate memory.";
        uStack_4._0_1_ = 5;
        pcStack_178 = (char *)0x9891f3;
        FUN_0043c211();
        uStack_4 = CONCAT31(uStack_4._1_3_,6);
        pcStack_174 = (char *)0x989201;
        iVar6 = FUN_0084a340();
        if (iVar6 == 0) {
          pcStack_174 = auStack_c8;
          pcStack_178 = (char *)0x98922b;
          pcStack_174 = (char *)FUN_0084d360();
        }
        else {
          pcStack_174 = auStack_80;
          pcStack_178 = auStack_c8;
          puStack_17c = (undefined *)0x98921c;
          pcStack_174 = (char *)FUN_0084f210();
        }
        pcStack_178 = (char *)0x98923b;
        FUN_008433c0();
        pcStack_174 = &DAT_00d25fa0;
        pcStack_178 = "wxBMPHandler::DoLoadDib";
        puStack_17c = (undefined *)0x22a;
        pcStack_180 = "..\\..\\src\\common\\imagbmp.cpp";
        uStack_184 = 1;
        uStack_4._0_1_ = 7;
        uStack_188 = 0x989265;
        uVar4 = FUN_008423d0();
        uStack_4._0_1_ = 8;
        pcStack_174 = (char *)0x98927b;
        pcStack_174 = (char *)FUN_008854f0();
        puStack_17c = (undefined *)0x989282;
        pcStack_178 = (char *)uVar4;
        FUN_0083fe90();
        uStack_4._0_1_ = 7;
        pcStack_174 = (char *)0x989299;
        FUN_00842440();
        uStack_4 = CONCAT31(uStack_4._1_3_,6);
        pcStack_174 = (char *)0x9892ac;
        FUN_0081b5bc();
        pcStack_174 = (char *)0x9892b8;
        FUN_0040159c();
        pcStack_174 = (char *)0x9892c4;
        FUN_0040159c();
      }
    }
    pcStack_174 = local_dc;
    uStack_4 = 0xffffffff;
    pcStack_178 = (char *)0x9892dc;
    FUN_00987320();
    ExceptionList = local_c;
    return 0;
  }
  if (param_4 == 0x20) {
    pcStack_174 = (char *)0x0;
    pcStack_178 = (char *)0x0;
    puStack_17c = (undefined *)0x989301;
    FUN_008ff8a0();
    pcStack_174 = (char *)0x989308;
    iStack_fc = FUN_008ff940();
    if (iStack_fc != 0) {
LAB_009895ae:
      if (param_6 == 3) {
        pcStack_174 = (char *)0xc;
        pcStack_178 = (char *)&uStack_ec;
        puStack_17c = (undefined *)0x9895d4;
        (**(code **)(*param_9 + 0x2c))();
        iVar6 = param_4 + -1;
        bVar8 = (byte)iVar6 & 0x1f;
        uVar7 = 1 << bVar8 | 1U >> 0x20 - bVar8;
        local_120 = uStack_ec;
        local_128 = uStack_e8;
        local_11c = uStack_e4;
        for (; -1 < iVar6; iVar6 = iVar6 + -1) {
          if ((uStack_e4 & uVar7) != 0) {
            local_134 = iVar6;
          }
          if ((uStack_e8 & uVar7) != 0) {
            local_13c = iVar6;
          }
          if ((uStack_ec & uVar7) != 0) {
            local_12c = iVar6;
          }
          uVar7 = uVar7 >> 1 | (uint)((uVar7 & 1) != 0) << 0x1f;
        }
        uVar7 = 1;
        if (0 < param_4) {
          iVar6 = -local_13c;
          iVar13 = param_4;
          do {
            iVar6 = iVar6 + 1;
            if ((uStack_e4 & uVar7) != 0) {
              local_110 = (local_13c - local_134) + iVar6;
            }
            if ((uStack_e8 & uVar7) != 0) {
              local_104 = iVar6;
            }
            if ((uStack_ec & uVar7) != 0) {
              local_114 = (local_13c - local_12c) + iVar6;
            }
            uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);
            iVar13 = iVar13 + -1;
            puVar5 = puStack_14c;
          } while (iVar13 != 0);
        }
      }
      else {
        if (param_4 == 0x10) {
          local_120 = 0x7c00;
          local_128 = 0x3e0;
          local_11c = 0x1f;
          local_12c = 10;
          local_13c = 5;
        }
        else {
          if (param_4 != 0x20) goto LAB_0098971d;
          local_120 = 0xff0000;
          local_128 = 0xff00;
          local_11c = 0xff;
          local_f4 = 0xff000000;
          local_f0 = 0x18;
          local_12c = 0x10;
          local_13c = 8;
        }
        local_134 = 0;
        local_114 = local_13c;
        local_110 = local_13c;
        local_104 = local_13c;
      }
      goto LAB_0098971d;
    }
    if (param_10 != '\0') {
      ppuStack_10c = apuStack_194;
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(1);
      if (cVar2 != '\0') {
        pcStack_174 = PTR_DAT_03236318;
        pcStack_178 = (char *)0x98935c;
        FUN_004325b6();
        pcStack_174 = "BMP: Couldn\'t allocate memory.";
        uStack_4._0_1_ = 9;
        pcStack_178 = (char *)0x989375;
        FUN_0043c211();
        pcStack_174 = auStack_c8;
        pcStack_178 = auStack_80;
        uStack_4._0_1_ = 10;
        puStack_17c = (undefined *)0x989392;
        pcStack_174 = (char *)FUN_00820bf9();
        pcStack_178 = (char *)0x9893a2;
        FUN_008433c0();
        pcStack_174 = &DAT_00d25fa0;
        pcStack_178 = "wxBMPHandler::DoLoadDib";
        puStack_17c = (undefined *)0x239;
        pcStack_180 = "..\\..\\src\\common\\imagbmp.cpp";
        uStack_184 = 1;
        uStack_4._0_1_ = 0xb;
        uStack_188 = 0x9893cd;
        FUN_008423d0();
        pcStack_174 = auStack_a4;
        uStack_4._0_1_ = 0xc;
        pcStack_178 = (char *)0x9893e4;
        FUN_00840b80();
        uStack_4._0_1_ = 0xb;
        pcStack_174 = (char *)0x9893f7;
        FUN_00842440();
        uStack_4 = CONCAT31(uStack_4._1_3_,10);
        pcStack_174 = (char *)0x98940b;
        FUN_0081b5bc();
        pcStack_174 = (char *)0x989417;
        FUN_0040159c();
        pcStack_174 = (char *)0x989423;
        FUN_0040159c();
      }
    }
LAB_00989423:
    pcStack_174 = local_dc;
    uStack_4 = 0xffffffff;
    pcStack_178 = (char *)0x98943b;
    FUN_00987320();
    uVar11 = 0;
  }
  else {
    iStack_fc = 0;
    if ((param_4 < 0x10) && (param_5 != 0)) {
      pcStack_174 = (char *)param_5;
      pcStack_178 = (char *)0x989464;
      uVar7 = FUN_00823c23();
      pcStack_178 = (char *)param_5;
      puStack_17c = (undefined *)0x989470;
      uStack_130 = uVar7;
      puStack_158 = (uint *)FUN_00823c23();
      puStack_17c = (undefined *)param_5;
      pcStack_180 = (char *)0x98947a;
      uStack_138 = FUN_00823c23();
      puStack_154 = (uint *)0x0;
      if (0 < (int)param_5) {
        iVar6 = uStack_138 - (int)puStack_158;
        uVar9 = uStack_130 - (int)puStack_158;
        pcVar14 = puVar3 + 1;
        puVar12 = puStack_158;
        uStack_150 = uVar9;
        do {
          if (param_12 == '\0') {
            cVar2 = -(puStack_154 != (uint *)0x0);
            pcVar14[1] = cVar2;
            *(char *)(iVar6 + (int)puVar12) = cVar2;
            *pcVar14 = cVar2;
            *(char *)puVar12 = cVar2;
            pcVar14[-1] = cVar2;
            *(char *)(uVar9 + (int)puVar12) = cVar2;
          }
          else {
            pcStack_174 = (char *)0x4;
            pcStack_178 = (char *)&uStack_144;
            puStack_17c = (undefined *)0x9894cf;
            (**(code **)(*param_9 + 0x2c))();
            pcVar14[1] = (char)uStack_144;
            *pcVar14 = uStack_144._1_1_;
            pcVar14[-1] = uStack_144._2_1_;
            *(char *)(uStack_150 + (int)puVar12) = uStack_144._2_1_;
            *(char *)puVar12 = *pcVar14;
            *(char *)(iVar6 + (int)puVar12) = pcVar14[1];
            uVar9 = uStack_150;
          }
          puStack_154 = (uint *)((int)puStack_154 + 1);
          puVar12 = (uint *)((int)puVar12 + 1);
          pcVar14 = pcVar14 + 3;
          uVar7 = uStack_130;
        } while ((int)puStack_154 < (int)param_5);
      }
      pcStack_174 = (char *)uStack_138;
      pcStack_178 = (char *)puStack_158;
      uStack_184 = 0x989556;
      pcStack_180 = (char *)param_5;
      puStack_17c = (undefined *)uVar7;
      pcStack_174 = (char *)FUN_009089b0();
      uStack_4._0_1_ = 0xd;
      pcStack_178 = (char *)0x989566;
      FUN_009029b0();
      uStack_4 = CONCAT31(uStack_4._1_3_,4);
      ppuStack_10c = wxObject::vftable;
      pcStack_174 = (char *)0x98957f;
      FUN_0083e850();
      pcStack_178 = (char *)0x989585;
      pcStack_174 = (char *)uVar7;
      FUN_00a3f66c();
      pcStack_178 = (char *)puStack_158;
      puStack_17c = (undefined *)0x98958f;
      FUN_00a3f66c();
      puStack_17c = (undefined *)uStack_138;
      pcStack_180 = (char *)0x989599;
      FUN_00a3f66c();
      puVar5 = puStack_14c;
    }
    else if (param_4 == 0x10) goto LAB_009895ae;
LAB_0098971d:
    if (param_11 != '\0') {
      pcStack_174 = (char *)0x989738;
      lVar16 = (**(code **)(*param_9 + 0x40))();
      if ((lVar16 != -1) && (lVar16 < CONCAT44(param_8,param_7))) {
        puStack_17c = (undefined *)(param_7 - (uint)lVar16);
        pcStack_174 = (char *)0x1;
        pcStack_178 = (char *)((param_8 - (int)((ulonglong)lVar16 >> 0x20)) -
                              (uint)(param_7 < (uint)lVar16));
        pcStack_180 = (char *)0x989770;
        lVar16 = (**(code **)(*param_9 + 0x3c))();
        if (lVar16 == -1) goto LAB_00989423;
      }
    }
    if ((param_4 < 0x10) &&
       (((param_6 == 2 || (param_6 == 1)) &&
        (iVar6 = param_2 * (int)param_3, puStack_14c = puVar5, 0 < iVar6)))) {
      do {
        *puVar5 = *puVar3;
        puVar5[1] = puVar3[1];
        puVar5[2] = puVar3[2];
        iVar6 = iVar6 + -1;
        puVar5 = puVar5 + 3;
      } while (iVar6 != 0);
    }
    iVar6 = param_2 * param_4 + 0x1f;
    iStack_f8 = ((int)(iVar6 + (iVar6 >> 0x1f & 0x1fU)) >> 5) * 4;
    cStack_145 = '\0';
    puStack_154 = (uint *)0x0;
    if (0 < (int)param_3) {
      do {
        puVar12 = puStack_154;
        if (cStack_146 != '\0') {
          puVar12 = (uint *)((int)param_3 + (-1 - (int)puStack_154));
        }
        iVar6 = 0;
        puStack_158 = (uint *)0x0;
        if (0 < (int)param_2) {
          do {
            if (param_4 < 0x10) {
              puStack_158 = (uint *)((int)puStack_158 + 1);
              pcStack_174 = (char *)0x989862;
              bStack_15a = FUN_00882fb0();
              if (param_4 == 1) {
                iVar13 = 0;
                do {
                  if ((int)param_2 <= iVar6) goto LAB_00989e97;
                  bVar8 = (byte)iVar13;
                  iVar13 = iVar13 + 1;
                  puVar5 = puVar3 + (uint)((bStack_15a & (byte)(0x80 >> (bVar8 & 0x1f))) != 0) * 3;
                  puVar1 = puStack_14c + ((int)puVar12 * param_2 + iVar6) * 3;
                  *puVar1 = *puVar5;
                  puVar1[1] = puVar5[1];
                  iVar6 = iVar6 + 1;
                  puVar1[2] = puVar5[2];
                } while (iVar13 < 8);
              }
              else if (param_4 == 4) {
                if (param_6 == 2) {
                  pcStack_174 = (char *)0x9898fe;
                  bStack_159 = bStack_15a;
                  bStack_15a = FUN_00882fb0();
                  if (bStack_159 == 0) {
                    if (bStack_15a == 0) {
LAB_00989e79:
                      puStack_154 = (uint *)((int)puStack_154 + -1);
                      break;
                    }
                    if (bStack_15a == 1) {
                      puStack_154 = param_3;
                      break;
                    }
                    if (bStack_15a == 2) {
                      pcStack_174 = (char *)0x989928;
                      bStack_15a = FUN_00882fb0();
                      iVar6 = iVar6 + (uint)bStack_15a;
                      puStack_158 = (uint *)((int)(iVar6 * 4 + (iVar6 * 4 >> 0x1f & 3U)) >> 2);
                      pcStack_174 = (char *)0x98994c;
                      bStack_15a = FUN_00882fb0();
                      puStack_154 = (uint *)((int)puStack_154 + (uint)bStack_15a);
                    }
                    else {
                      uStack_124 = (uint)bStack_15a;
                      uStack_150 = 0;
                      uStack_130 = 0;
                      if (uStack_124 != 0) {
                        iVar13 = (int)puVar12 * param_2 + iVar6;
                        iVar6 = iVar6 + uStack_124;
                        puVar5 = puStack_14c + iVar13 * 3 + 2;
                        do {
                          ppuStack_10c = (undefined **)(uStack_130 & 1);
                          if ((undefined **)(uStack_130 & 1) == (undefined **)0x0) {
                            uStack_150 = uStack_150 + 1;
                            pcStack_174 = (char *)0x9899a9;
                            bStack_15a = FUN_00882fb0();
                            abStack_118[0] = bStack_15a >> 4;
                            abStack_118[1] = bStack_15a & 0xf;
                          }
                          puVar1 = puVar3 + (uint)abStack_118[(int)ppuStack_10c] * 3;
                          puVar5[-2] = *puVar1;
                          puVar5[-1] = puVar1[1];
                          *puVar5 = puVar1[2];
                          puVar5 = puVar5 + 3;
                          if (ppuStack_10c != (undefined **)0x0) {
                            puStack_158 = (uint *)((int)puStack_158 + 1);
                          }
                          uStack_130 = uStack_130 + 1;
                        } while ((int)uStack_130 < (int)uStack_124);
                      }
                      if ((uStack_150 & 1) != 0) {
                        pcStack_174 = (char *)0x989a10;
                        bStack_15a = FUN_00882fb0();
                      }
                    }
                  }
                  else {
                    ppuStack_10c = (undefined **)(uint)bStack_159;
                    uStack_138 = CONCAT31(CONCAT21(uStack_138._2_2_,bStack_15a),bStack_15a >> 4) &
                                 0xffff0fff;
                    uStack_150 = 0;
                    if (ppuStack_10c != (undefined **)0x0) {
                      do {
                        if ((int)param_2 <= iVar6) goto LAB_00989e97;
                        uVar7 = uStack_150 & 0x80000001;
                        if ((int)uVar7 < 0) {
                          uVar7 = (uVar7 - 1 | 0xfffffffe) + 1;
                        }
                        puVar5 = puVar3 + (uint)*(byte *)((int)&uStack_138 + uVar7) * 3;
                        puVar1 = puStack_14c + ((int)puVar12 * param_2 + iVar6) * 3;
                        *puVar1 = *puVar5;
                        puVar1[1] = puVar5[1];
                        iVar6 = iVar6 + 1;
                        puVar1[2] = puVar5[2];
                        if (uVar7 != 0) {
                          puStack_158 = (uint *)((int)puStack_158 + 1);
                        }
                        uStack_150 = uStack_150 + 1;
                      } while ((int)uStack_150 < (int)ppuStack_10c);
                    }
                  }
                }
                else {
                  iVar13 = 0;
                  uStack_150 = 0;
                  do {
                    if ((int)param_2 <= iVar6) goto LAB_00989e97;
                    iVar10 = (int)(0xf0 >> ((byte)iVar13 & 0x1f) & (uint)bStack_15a) >>
                             (uStack_150 == 0) * '\x04';
                    if (0xf < iVar10) {
                      iVar10 = 0xf;
                    }
                    uStack_150 = uStack_150 + 1;
                    puVar5 = puVar3 + iVar10 * 3;
                    puVar1 = puStack_14c + ((int)puVar12 * param_2 + iVar6) * 3;
                    *puVar1 = *puVar5;
                    puVar1[1] = puVar5[1];
                    iVar13 = iVar13 + 4;
                    iVar6 = iVar6 + 1;
                    puVar1[2] = puVar5[2];
                  } while (iVar13 < 8);
                }
              }
              else if (param_4 == 8) {
                if (param_6 != 1) {
                  puVar5 = puStack_14c + ((int)puVar12 * param_2 + iVar6) * 3;
                  *puVar5 = puVar3[(uint)bStack_15a * 3];
                  puVar5[1] = puVar3[(uint)bStack_15a * 3 + 1];
                  puVar5[2] = puVar3[(uint)bStack_15a * 3 + 2];
                  goto LAB_00989e69;
                }
                pcStack_174 = (char *)0x989b58;
                bStack_159 = bStack_15a;
                bStack_15a = FUN_00882fb0();
                if (bStack_159 == 0) {
                  if (bStack_15a == 0) goto LAB_00989e79;
                  if (bStack_15a == 1) {
                    puStack_154 = param_3;
                    break;
                  }
                  if (bStack_15a == 2) {
                    pcStack_174 = (char *)0x989b82;
                    bStack_15a = FUN_00882fb0();
                    iVar6 = iVar6 + (uint)bStack_15a;
                    puStack_158 = (uint *)((int)(iVar6 * 8 + (iVar6 * 8 >> 0x1f & 7U)) >> 3);
                    pcStack_174 = (char *)0x989ba6;
                    bStack_15a = FUN_00882fb0();
                    puStack_154 = (uint *)((int)puStack_154 - (uint)bStack_15a);
                  }
                  else {
                    uStack_150 = (uint)bStack_15a;
                    if (uStack_150 != 0) {
                      puStack_158 = (uint *)((int)puStack_158 + uStack_150);
                      puVar5 = puStack_14c + ((int)puVar12 * param_2 + iVar6) * 3 + 2;
                      iVar6 = iVar6 + uStack_150;
                      uStack_124 = uStack_150;
                      do {
                        pcStack_174 = (char *)0x989bee;
                        bStack_15a = FUN_00882fb0();
                        puVar5[-2] = puVar3[(uint)bStack_15a * 3];
                        puVar5[-1] = puVar3[(uint)bStack_15a * 3 + 1];
                        *puVar5 = puVar3[(uint)bStack_15a * 3 + 2];
                        puVar5 = puVar5 + 3;
                        uStack_124 = uStack_124 - 1;
                      } while (uStack_124 != 0);
                      uStack_124 = 0;
                    }
                    if ((uStack_150 & 1) != 0) {
                      pcStack_174 = (char *)0x989c42;
                      bStack_15a = FUN_00882fb0();
                    }
                  }
                }
                else {
                  iVar13 = 0;
                  if (bStack_159 != 0) {
                    do {
                      if ((int)param_2 <= iVar6) goto LAB_00989e97;
                      puVar5 = puStack_14c + ((int)puVar12 * param_2 + iVar6) * 3;
                      *puVar5 = puVar3[(uint)bStack_15a * 3];
                      puStack_158 = (uint *)((int)puStack_158 + 1);
                      puVar5[1] = puVar3[(uint)bStack_15a * 3 + 1];
                      puVar5[2] = puVar3[(uint)bStack_15a * 3 + 2];
                      iVar13 = iVar13 + 1;
                      iVar6 = iVar6 + 1;
                    } while (iVar13 < (int)(uint)bStack_159);
                  }
                }
              }
            }
            else {
              if (param_4 == 0x18) {
                pcStack_174 = (char *)0x3;
                pcStack_178 = (char *)&uStack_144;
                puStack_17c = (undefined *)0x989d24;
                (**(code **)(*param_9 + 0x2c))();
                puStack_158 = (uint *)((int)puStack_158 + 3);
                pcVar14 = puStack_14c + ((int)puVar12 * param_2 + iVar6) * 3;
                *pcVar14 = uStack_144._2_1_;
                pcVar14[1] = uStack_144._1_1_;
                pcVar14[2] = (char)uStack_144;
              }
              else if (param_4 == 0x10) {
                pcStack_174 = (char *)0x2;
                pcStack_178 = (char *)&uStack_140;
                puStack_17c = (undefined *)0x989d70;
                (**(code **)(*param_9 + 0x2c))();
                pcVar14 = puStack_14c + ((int)puVar12 * param_2 + iVar6) * 3;
                puStack_158 = (uint *)((int)puStack_158 + 2);
                *pcVar14 = (char)((int)(uStack_140 & local_120) >> ((byte)local_12c & 0x1f)) <<
                           (8U - (char)local_114 & 0x1f);
                pcVar14[1] = (char)((int)(uStack_140 & local_128) >> ((byte)local_13c & 0x1f)) <<
                             (8U - (char)local_104 & 0x1f);
                pcVar14[2] = (char)((int)(uStack_140 & local_11c) >> ((byte)local_134 & 0x1f)) <<
                             (8U - (char)local_110 & 0x1f);
              }
              else {
                pcStack_174 = (char *)0x4;
                pcStack_178 = (char *)&uStack_100;
                puStack_17c = (undefined *)0x989df5;
                (**(code **)(*param_9 + 0x2c))();
                puVar5 = puStack_14c + (iVar6 + (int)puVar12 * param_2) * 3;
                puStack_158 = puStack_158 + 1;
                *puVar5 = (char)((int)(uStack_100 & local_120) >> ((byte)local_12c & 0x1f));
                puVar5[1] = (char)((int)(uStack_100 & local_128) >> ((byte)local_13c & 0x1f));
                puVar5[2] = (char)((int)(uStack_100 & local_11c) >> ((byte)local_134 & 0x1f));
                if ((iStack_fc != 0) &&
                   (cVar2 = (char)((int)(uStack_100 & local_f4) >> ((byte)local_f0 & 0x1f)),
                   *(char *)(iStack_fc + (int)puVar12 * param_2 + iVar6) = cVar2, cVar2 != '\0')) {
                  cStack_145 = '\x01';
                }
              }
LAB_00989e69:
              iVar6 = iVar6 + 1;
            }
          } while (iVar6 < (int)param_2);
        }
LAB_00989e97:
        puVar12 = puStack_158;
        if ((int)puStack_158 < iStack_f8) {
          while ((param_6 != 1 && (param_6 != 2))) {
            pcStack_174 = (char *)0x1;
            pcStack_178 = (char *)&bStack_15a;
            puStack_17c = (undefined *)0x989eca;
            (**(code **)(*param_9 + 0x2c))();
            puVar12 = (uint *)((int)puVar12 + 1);
            puStack_17c = (undefined *)0x989ed4;
            cVar2 = (**(code **)(*param_9 + 0x10))();
            if ((cVar2 == '\0') || (iStack_f8 <= (int)puVar12)) break;
          }
        }
        puStack_154 = (uint *)((int)puStack_154 + 1);
      } while ((int)puStack_154 < (int)param_3);
    }
    pcStack_174 = (char *)0x0;
    pcStack_178 = (char *)0x989f04;
    FUN_008ffb00();
    if ((iStack_fc != 0) && (cStack_145 == '\0')) {
      pcStack_174 = (char *)0x989f19;
      FUN_009006d0();
    }
    if ((param_9[3] == 0) || (param_9[3] == 1)) {
      uVar11 = 1;
    }
    else {
      uVar11 = 0;
    }
    pcStack_174 = local_dc;
    uStack_4 = 0xffffffff;
    pcStack_178 = (char *)0x989f4a;
    FUN_00987320();
  }
  ExceptionList = local_c;
  return uVar11;
}



undefined4 FUN_00989f70(undefined4 param_1,int *param_2,undefined4 param_3,char param_4)

{
  int iVar1;
  char cVar2;
  char cVar3;
  code *pcVar4;
  int iVar5;
  short unaff_SI;
  bool bVar6;
  char unaff_retaddr;
  undefined **ppuStack_104;
  undefined4 uStack_100;
  int iStack_f4;
  int iStack_f0;
  int local_e4;
  int iStack_e0;
  void *pvStack_1c;
  undefined4 uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be13d8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pcVar4 = *(code **)(*param_2 + 0x2c);
  if (param_4 != '\0') {
    (*pcVar4)();
    pcVar4 = *(code **)(*param_2 + 0x2c);
  }
  (*pcVar4)();
  iStack_f0 = local_e4 >> 0x1f;
  iStack_f4 = local_e4;
  (**(code **)(*param_2 + 0x2c))();
  iStack_e0 = iStack_f4;
  iVar5 = iStack_f0;
  if (param_4 == '\0') {
    iVar5 = iStack_f0 / 2;
  }
  if (0x7fff < iStack_f4) {
    if ((char)uStack_4 != '\0') {
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(1);
      if (cVar2 != '\0') {
        FUN_004325b6();
        uStack_14 = 0;
        FUN_0043c211();
        uStack_14 = CONCAT31(uStack_14._1_3_,1);
        iVar5 = FUN_0084a340();
        if (iVar5 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        uStack_14._0_1_ = 2;
        FUN_008423d0();
        uStack_14._0_1_ = 3;
        FUN_008854f0();
        FUN_0083fe90();
        uStack_14._0_1_ = 2;
        FUN_00842440();
        uStack_14 = CONCAT31(uStack_14._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
    ExceptionList = pvStack_1c;
    return 0;
  }
  if (0x7fff < iVar5) {
    if ((char)uStack_4 == '\0') {
      ExceptionList = pvStack_1c;
      return 0;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 == '\0') {
      ExceptionList = pvStack_1c;
      return 0;
    }
    FUN_004325b6();
    uStack_14 = 4;
    FUN_0043c211();
    uStack_14._0_1_ = 5;
    FUN_00820bf9();
    FUN_008433c0();
    uStack_14._0_1_ = 6;
    FUN_008423d0();
    uStack_14._0_1_ = 7;
    FUN_008854f0();
    FUN_0083fe90();
    uStack_14._0_1_ = 6;
    FUN_00842440();
    uStack_14 = CONCAT31(uStack_14._1_3_,5);
    goto LAB_0098a22f;
  }
  (**(code **)(*param_2 + 0x2c))();
  (**(code **)(*param_2 + 0x2c))();
  if ((((unaff_SI != 1) && (unaff_SI != 4)) && (unaff_SI != 8)) &&
     (((unaff_SI != 0x10 && (unaff_SI != 0x18)) && (unaff_SI != 0x20)))) {
    if ((char)uStack_4 == '\0') {
      ExceptionList = pvStack_1c;
      return 0;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 == '\0') {
      ExceptionList = pvStack_1c;
      return 0;
    }
    FUN_004325b6();
    uStack_14 = 8;
    FUN_0043c211();
    uStack_14._0_1_ = 9;
    FUN_00820bf9();
    FUN_008433c0();
    uStack_14._0_1_ = 10;
    FUN_008423d0();
    uStack_14._0_1_ = 0xb;
    FUN_00840b80();
    uStack_14._0_1_ = 10;
    FUN_00842440();
    uStack_14 = CONCAT31(uStack_14._1_3_,9);
    goto LAB_0098a22f;
  }
  (**(code **)(*param_2 + 0x2c))();
  iVar1 = iStack_f4;
  if (((iStack_f4 != 0) && (iStack_f4 != 2)) && ((iStack_f4 != 1 && (iStack_f4 != 3)))) {
    if ((char)uStack_4 == '\0') {
      ExceptionList = pvStack_1c;
      return 0;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 == '\0') {
      ExceptionList = pvStack_1c;
      return 0;
    }
    FUN_004325b6();
    uStack_14 = 0xc;
    FUN_0043c211();
    uStack_14._0_1_ = 0xd;
    FUN_00820bf9();
    FUN_008433c0();
    uStack_14._0_1_ = 0xe;
    FUN_008423d0();
    uStack_14._0_1_ = 0xf;
    FUN_00840b80();
    uStack_14._0_1_ = 0xe;
    FUN_00842440();
    uStack_14 = CONCAT31(uStack_14._1_3_,0xd);
    goto LAB_0098a22f;
  }
  (**(code **)(*param_2 + 0x2c))();
  cVar2 = (char)uStack_4;
  if (iVar1 == 2) {
    bVar6 = unaff_SI == 4;
LAB_0098a4d4:
    if (!bVar6) {
LAB_0098a620:
      if ((char)uStack_4 == '\0') {
        ExceptionList = pvStack_1c;
        return 0;
      }
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(1);
      if (cVar2 == '\0') {
        ExceptionList = pvStack_1c;
        return 0;
      }
      FUN_004325b6();
      uStack_14 = 0x10;
      FUN_0043c211();
      uStack_14._0_1_ = 0x11;
      FUN_00820bf9();
      FUN_008433c0();
      uStack_14._0_1_ = 0x12;
      FUN_008423d0();
      uStack_14._0_1_ = 0x13;
      FUN_00840b80();
      uStack_14._0_1_ = 0x12;
      FUN_00842440();
      uStack_14 = CONCAT31(uStack_14._1_3_,0x11);
      goto LAB_0098a22f;
    }
  }
  else {
    if (iVar1 == 1) {
      bVar6 = unaff_SI == 8;
      goto LAB_0098a4d4;
    }
    if (((iVar1 == 3) && (unaff_SI != 0x10)) && (unaff_SI != 0x20)) goto LAB_0098a620;
  }
  cVar3 = FUN_00988f60(local_c,iStack_e0,iVar5);
  if (cVar3 != '\0') {
    if (unaff_retaddr == '\0') {
      uStack_100 = 0;
      ppuStack_104 = wxImage::vftable;
      uStack_14 = 0x18;
      cVar3 = FUN_00988f60(&ppuStack_104,iStack_e0,iVar5);
      if (cVar3 == '\0') {
        if (cVar2 != '\0') {
          FUN_0043c211(&DAT_00d25fa0);
          cVar2 = FUN_00846b30(1);
          if (cVar2 != '\0') {
            FUN_004325b6();
            uStack_14._0_1_ = 0x19;
            FUN_0043c211();
            uStack_14._0_1_ = 0x1a;
            FUN_00820bf9();
            FUN_008433c0();
            uStack_14._0_1_ = 0x1b;
            FUN_008423d0();
            uStack_14._0_1_ = 0x1c;
            FUN_00840b80();
            uStack_14._0_1_ = 0x1b;
            FUN_00842440();
            uStack_14 = CONCAT31(uStack_14._1_3_,0x1a);
            FUN_0081b5bc();
            FUN_0040159c();
            FUN_0040159c();
          }
        }
        uStack_14 = 0xffffffff;
        ppuStack_104 = wxObject::vftable;
        FUN_0083e850();
        ExceptionList = pvStack_1c;
        return 0;
      }
      FUN_00906ca0();
      uStack_14 = 0xffffffff;
      ppuStack_104 = wxObject::vftable;
      FUN_0083e850();
    }
    FUN_004325b6();
    uStack_14 = 0x1d;
    FUN_00903db0();
    uStack_14 = 0xffffffff;
    FUN_0040159c();
    FUN_004325b6();
    uStack_14 = 0x1e;
    FUN_00903db0();
    uStack_14 = 0xffffffff;
    FUN_0040159c();
    FUN_004325b6();
    uStack_14 = 0x1f;
    FUN_00903db0();
    FUN_0040159c();
    ExceptionList = pvStack_1c;
    return 1;
  }
  if (cVar2 == '\0') {
    ExceptionList = pvStack_1c;
    return 0;
  }
  FUN_0043c211(&DAT_00d25fa0);
  cVar2 = FUN_00846b30(1);
  if (cVar2 == '\0') {
    ExceptionList = pvStack_1c;
    return 0;
  }
  FUN_004325b6();
  uStack_14 = 0x14;
  FUN_0043c211();
  uStack_14._0_1_ = 0x15;
  FUN_00820bf9();
  FUN_008433c0();
  uStack_14._0_1_ = 0x16;
  FUN_008423d0();
  uStack_14._0_1_ = 0x17;
  FUN_00840b80();
  uStack_14._0_1_ = 0x16;
  FUN_00842440();
  uStack_14 = CONCAT31(uStack_14._1_3_,0x15);
LAB_0098a22f:
  FUN_0081b5bc();
  FUN_0040159c();
  FUN_0040159c();
  ExceptionList = pvStack_1c;
  return 0;
}



void FUN_0098a990(void)

{
  undefined4 param_4;
  
  param_4 = 1;
  FUN_00989f70();
  return;
}



// WARNING: Type propagation algorithm not settling

uint __thiscall
FUN_0098a9a0(int param_1_00,undefined4 *param_1,undefined ***param_2,undefined4 param_3)

{
  wchar_t wVar1;
  char cVar2;
  undefined2 uVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 *puVar7;
  wchar_t *pwVar8;
  undefined2 *puVar9;
  undefined ***pppuVar10;
  undefined4 *puVar11;
  undefined *puVar12;
  undefined4 uStack_218;
  int iStack_214;
  undefined4 uStack_210;
  char *pcStack_20c;
  undefined4 *puStack_208;
  char *pcStack_204;
  uint uStack_200;
  wchar_t *pwStack_1fc;
  uint uStack_1f4;
  undefined auStack_1e4 [4];
  undefined4 uStack_1e0;
  undefined4 uStack_1dc;
  char cStack_1d7;
  char cStack_1d6;
  char cStack_1d5;
  uint local_1d4;
  undefined local_1d0 [4];
  undefined *local_1cc;
  undefined uStack_1c8;
  char cStack_1c7;
  undefined uStack_1c6;
  undefined uStack_1c5;
  undefined2 uStack_1c4;
  undefined2 uStack_1c2;
  undefined *puStack_1c0;
  undefined *puStack_1bc;
  undefined auStack_1b8 [4];
  uint uStack_1b4;
  undefined4 uStack_1a4;
  uint uStack_1a0;
  void *pvStack_19c;
  char acStack_18c [6];
  undefined **ppuStack_186;
  undefined2 local_180;
  undefined2 local_17e;
  undefined2 local_17c;
  int local_178;
  int iStack_174;
  undefined local_170 [24];
  uint uStack_158;
  void *pvStack_154;
  undefined local_14c [36];
  undefined **appuStack_128 [5];
  int local_114;
  undefined **appuStack_110 [2];
  undefined **ppuStack_108;
  undefined auStack_8c [120];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00be15f9;
  local_14 = ExceptionList;
  uStack_1f4 = DAT_0323f878 ^ (uint)&stack0xfffffe10;
  ExceptionList = &local_14;
  local_1d4 = 0;
  local_178 = param_1_00;
  uVar4 = FUN_00900150();
  if (0x7f < (int)uVar4) {
    if ((char)param_3 != '\0') {
      local_1d0 = (undefined  [4])&uStack_218;
      FUN_0043c211(&DAT_00d25fa0);
      uVar4 = FUN_00846b30(1);
      if ((char)uVar4 != '\0') {
        pwStack_1fc = L"\xe468홬贀⒌\x88";
        FUN_004325b6();
        local_c = 0;
        pwStack_1fc = L"蓆\xe824\x01Ā\xe9e8\xebf8㯿瓇贙⒌¨";
        FUN_0043c211();
        local_c = CONCAT31(local_c._1_3_,1);
        iVar5 = FUN_0084a340();
        if (iVar5 == 0) {
          pwStack_1fc = L"쒃倄䲍搤㋨\xeb89棿徠Ò챨홬栀ѿ";
          FUN_0084d360();
        }
        else {
          pwStack_1fc = (wchar_t *)local_170;
          uStack_200 = 0x98aa72;
          FUN_0084f210();
        }
        pwStack_1fc = L"ꁨ퉟栀泌Ö罨\x04栀檴ÖŪ貍ࠤ\x01였⒄Ǽ";
        FUN_008433c0();
        pwStack_1fc = L"wxICOHandler::SaveFile";
        uStack_200 = 0x47f;
        pcStack_204 = "..\\..\\src\\common\\imagbmp.cpp";
        puStack_208 = (undefined4 *)0x1;
        local_c._0_1_ = 2;
        pcStack_20c = (char *)0x98aab8;
        uVar6 = FUN_008423d0();
        local_c._0_1_ = 3;
        FUN_008854f0();
        uStack_200 = 0x98aad2;
        pwStack_1fc = (wchar_t *)uVar6;
        FUN_0083fe90();
        local_c._0_1_ = 2;
        FUN_00842440();
        local_c = CONCAT31(local_c._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        uVar4 = FUN_0040159c();
      }
    }
    ExceptionList = local_14;
    return uVar4 & 0xffffff00;
  }
  uVar4 = FUN_00900100();
  if ((int)uVar4 < 0x100) {
    local_180 = 0;
    local_1cc = (undefined *)0x6;
    local_114 = (*(int *)(param_1_00 + 0x84) == 5) + 1;
    local_17e = (undefined2)local_114;
    local_17c = 1;
    pwStack_1fc = &local_180;
    uStack_200 = 0x98acad;
    (*(code *)(*param_2)[10])();
    uStack_200 = 2;
    pcStack_204 = (char *)&ppuStack_186;
    puStack_208 = (undefined4 *)0x98acbd;
    (*(code *)(*param_2)[10])();
    puStack_208 = (undefined4 *)0x2;
    pcStack_20c = acStack_18c;
    uStack_210 = 0x98accd;
    (*(code *)(*param_2)[10])();
    uStack_210 = 0x98acd6;
    uVar4 = (*(code *)(*param_2)[4])();
    if ((char)uVar4 != '\0') {
      iStack_174 = 0;
      while( true ) {
        puVar11 = (undefined4 *)0x0;
        uStack_1dc = 0;
        uStack_1e0 = wxImage::vftable;
        local_c = 0xc;
        cVar2 = FUN_008ffb60();
        if (cVar2 == '\0') {
          pwStack_1fc = L"䲍ᐤ蓆\xe824\x01฀젻ٴ\xe850㬚￫貍\xec24";
          puVar7 = (undefined4 *)FUN_00900000();
          local_c._0_1_ = 0xe;
          if (&uStack_1e0 != puVar7) {
            pwStack_1fc = L"貍\xec24";
            FUN_0083ea60();
          }
          local_c = CONCAT31(local_c._1_3_,0xc);
          ppuStack_108 = wxObject::vftable;
          FUN_0083e850();
          iVar5 = FUN_00900100();
          if (0 < iVar5) {
            do {
              pppuVar10 = (undefined ***)0x0;
              iVar5 = FUN_00900150();
              if (0 < iVar5) {
                do {
                  pwStack_1fc = (wchar_t *)0x0;
                  uStack_200 = 0;
                  pcStack_20c = (char *)0x98af92;
                  puStack_208 = puVar11;
                  pcStack_204 = (char *)pppuVar10;
                  FUN_00900230();
                  pppuVar10 = (undefined ***)((int)pppuVar10 + 1);
                  iVar5 = FUN_00900150();
                } while ((int)pppuVar10 < iVar5);
              }
              puVar11 = (undefined4 *)((int)puVar11 + 1);
              iVar5 = FUN_00900100();
            } while ((int)puVar11 < iVar5);
          }
        }
        else {
          FUN_008ffab0();
          pwStack_1fc = L"똏僀쮋ﯨ\xf74b࿿좶赑⒔ð";
          uVar4 = FUN_008ffa60();
          pwStack_1fc = (wchar_t *)(uVar4 & 0xff);
          uStack_200 = 0x98ae15;
          uStack_200 = FUN_008ffa10();
          uStack_200 = uStack_200 & 0xff;
          pcStack_204 = (char *)appuStack_110;
          puStack_208 = (undefined4 *)0x98ae28;
          puVar11 = (undefined4 *)FUN_00902460();
          local_c._0_1_ = 0xd;
          if (&uStack_1e0 != puVar11) {
            pwStack_1fc = L"貍\xe424";
            FUN_0083ea60();
          }
          local_c = CONCAT31(local_c._1_3_,0xc);
          appuStack_110[0] = wxObject::vftable;
          FUN_0083e850();
          cStack_1d5 = FUN_008ffa10();
          cStack_1d6 = FUN_008ffa60();
          cStack_1d7 = FUN_008ffab0();
          if (((cStack_1d5 != '\0') || (cStack_1d6 != '\0')) || (cStack_1d7 != '\0')) {
            puVar11 = (undefined4 *)0x0;
            iVar5 = FUN_00900100();
            if (0 < iVar5) {
              do {
                pppuVar10 = (undefined ***)0x0;
                iVar5 = FUN_00900150();
                if (0 < iVar5) {
                  do {
                    uStack_200 = 0x98aecb;
                    pwStack_1fc = (wchar_t *)puVar11;
                    cVar2 = FUN_00900480();
                    if (cStack_1d5 == cVar2) {
                      uStack_200 = 0x98aedc;
                      pwStack_1fc = (wchar_t *)puVar11;
                      cVar2 = FUN_00900500();
                      if (cStack_1d6 == cVar2) {
                        uStack_200 = 0x98aeed;
                        pwStack_1fc = (wchar_t *)puVar11;
                        cVar2 = FUN_00900580();
                        if (cStack_1d7 == cVar2) {
                          pwStack_1fc = (wchar_t *)0x0;
                          uStack_200 = 0;
                          pcStack_20c = (char *)0x98af02;
                          puStack_208 = puVar11;
                          pcStack_204 = (char *)pppuVar10;
                          FUN_00900230();
                        }
                      }
                    }
                    pppuVar10 = (undefined ***)((int)pppuVar10 + 1);
                    iVar5 = FUN_00900150();
                  } while ((int)pppuVar10 < iVar5);
                }
                puVar11 = (undefined4 *)((int)puVar11 + 1);
                iVar5 = FUN_00900100();
              } while ((int)puVar11 < iVar5);
            }
          }
        }
        pwVar8 = L"wxBMP_FORMAT";
        uStack_1b4 = uStack_1b4 & 0xffff0000;
        uStack_1a0 = 7;
        uStack_1a4 = 0;
        do {
          wVar1 = *pwVar8;
          pwVar8 = pwVar8 + 1;
        } while (wVar1 != L'\0');
        pwStack_1fc = L"wxBMP_FORMAT";
        uStack_200 = 0x98afee;
        FID_conflict_assign();
        pvStack_19c = (void *)0x0;
        pwStack_1fc = (wchar_t *)auStack_1b8;
        local_c._0_1_ = 0xf;
        uStack_200 = 0x98b00c;
        FUN_00903db0();
        local_c._0_1_ = 0xc;
        pwStack_1fc = L"쒃㤄⑴牔謍⑔剀烨୆茀ӄ쀳襦⑄례檘Ö䓇吤\a";
        _free(pvStack_19c);
        if (7 < uStack_1a0) {
                    // WARNING: Subroutine does not return
          pwStack_1fc = (wchar_t *)&UNK_0098b031;
          FUN_00a3f6a1();
        }
        uStack_1b4 = uStack_1b4 & 0xffff0000;
        pwVar8 = L"wxBMP_FORMAT";
        uStack_1a0 = 7;
        uStack_1a4 = 0;
        do {
          wVar1 = *pwVar8;
          pwVar8 = pwVar8 + 1;
        } while (wVar1 != L'\0');
        pwStack_1fc = L"wxBMP_FORMAT";
        uStack_200 = 0x98b06e;
        FID_conflict_assign();
        pvStack_19c = (void *)0x0;
        pwStack_1fc = (wchar_t *)auStack_1b8;
        local_c._0_1_ = 0x10;
        uStack_200 = 0x98b08a;
        FUN_00903db0();
        local_c._0_1_ = 0xc;
        pwStack_1fc = L"쒃㤄⑴牔謍⑄偀\xf2e8୅茀ӄ貍찤";
        _free(pvStack_19c);
        if (7 < uStack_1a0) {
                    // WARNING: Subroutine does not return
          pwStack_1fc = (wchar_t *)&UNK_0098b0af;
          FUN_00a3f6a1();
        }
        FUN_00883d60();
        pwStack_1fc = (undefined2 *)0x0;
        uStack_200 = param_3;
        pcStack_204 = (char *)appuStack_128;
        puStack_208 = param_1;
        local_c._0_1_ = 0x11;
        pcStack_20c = (char *)0x98b0e0;
        cVar2 = FUN_00987880();
        if (cVar2 == '\0') break;
        pwStack_1fc = (undefined2 *)0x0;
        uStack_200 = param_3;
        pcStack_204 = (char *)appuStack_128;
        puStack_208 = &uStack_1e0;
        pcStack_20c = (char *)0x98b103;
        cVar2 = FUN_00987880();
        if (cVar2 == '\0') {
          if ((char)param_3 != '\0') {
            local_1d0 = (undefined  [4])&uStack_218;
            FUN_0043c211(&DAT_00d25fa0);
            cVar2 = FUN_00846b30(1);
            if (cVar2 != '\0') {
              pwStack_1fc = L"葨홬贀⒌\x88";
              FUN_004325b6();
              local_c._0_1_ = 0x16;
              pwStack_1fc = L"蓆\xe824\x01ᜀⷨ\xebed㯿瓇贙⒌¨";
              FUN_0043c211();
              local_c = CONCAT31(local_c._1_3_,0x17);
              iVar5 = FUN_0084a340();
              if (iVar5 == 0) {
                pwStack_1fc = L"쒃倄䲍搤盨\xeb7d棿徠Ò챨홬栀ӫ";
                FUN_0084d360();
              }
              else {
                pwStack_1fc = (wchar_t *)local_170;
                uStack_200 = 0x98b62e;
                FUN_0084f210();
              }
              pwStack_1fc = L"ꁨ퉟栀泌Ö\xeb68\x04栀檴ÖᢳŪ貍ࠤ\x01蠀⒜Ǽ";
              FUN_008433c0();
              pwStack_1fc = L"wxICOHandler::SaveFile";
              uStack_200 = 0x4eb;
              pcStack_204 = "..\\..\\src\\common\\imagbmp.cpp";
              puStack_208 = (undefined4 *)0x1;
              local_c._0_1_ = 0x18;
              pcStack_20c = (char *)0x98b675;
              puVar9 = (undefined2 *)FUN_008423d0();
              local_c._0_1_ = 0x19;
              FUN_008854f0();
              uStack_200 = 0x98b68f;
              pwStack_1fc = puVar9;
              FUN_0083fe90();
              local_c._0_1_ = 0x18;
              FUN_00842440();
              local_c._0_1_ = 0x17;
LAB_0098b6ad:
              FUN_0081b5bc();
              FUN_0040159c();
              FUN_0040159c();
            }
          }
          goto LAB_0098b57f;
        }
        local_1d0 = (undefined  [4])FUN_00883c90();
        puVar12 = local_1cc + 0x10;
        uStack_1c8 = FUN_00900100();
        cStack_1c7 = FUN_00900150();
        cStack_1c7 = cStack_1c7 * '\x02';
        uStack_1c6 = 0;
        uStack_1c5 = 0;
        uStack_1c4 = 1;
        uStack_1c2 = 8;
        if (local_114 == 2) {
          pwStack_1fc = L"咍㰤譒웋⒄Ǭ";
          FUN_004325b6();
          local_c._0_1_ = 0x1a;
          pwStack_1fc = L"삄⽴둨풔贀⒌¬";
          cVar2 = FUN_008ffc30();
          if (cVar2 == '\0') {
            iVar5 = FUN_00900100();
            local_1cc = (undefined *)(iVar5 / 2);
          }
          else {
            pwStack_1fc = L"䲃․贁⒄¨";
            FUN_004325b6();
            local_1d4 = local_1d4 | 1;
            local_c = CONCAT31(local_c._1_3_,0x1b);
            pwStack_1fc = L"೫쮋㻨\xf74f駿숫\xf8d1䓶․褁⑄율⒄Ǩ";
            local_1cc = (undefined *)FUN_00903f50();
          }
          local_c = 0x1a;
          if ((local_1d4 & 1) != 0) {
            local_1d4 = local_1d4 & 0xfffffffe;
            FUN_0040159c();
          }
          local_c._0_1_ = 0x11;
          pwStack_1fc = 
          L"쒃茄⑼ࡔ൲咋䀤\xe852䒍\v쒃栄钠Ô䲍䀤釨ꩳ跿⑄值쮋蓆\xec24\x01ᰀ\xf7e8\xf749蓿瓀栱钠Ô貍갤"
          ;
          _free(pvStack_19c);
          if (7 < uStack_1a0) {
                    // WARNING: Subroutine does not return
            pwStack_1fc = (wchar_t *)&UNK_0098b214;
            FUN_00a3f6a1();
          }
          pwStack_1fc = L"䒍㰤譐웋⒄Ǭ";
          FUN_004325b6();
          local_c._0_1_ = 0x1c;
          pwStack_1fc = L"삄ㅴꁨ풔贀⒌¬";
          cVar2 = FUN_008ffc30();
          if (cVar2 == '\0') {
            iVar5 = FUN_00900150();
            uVar3 = (undefined2)(iVar5 / 2);
          }
          else {
            pwStack_1fc = L"䲃․贂⒌¨";
            FUN_004325b6();
            local_1d4 = local_1d4 | 2;
            local_c = CONCAT31(local_c._1_3_,0x1d);
            pwStack_1fc = (wchar_t *)0x98b26a;
            uVar3 = FUN_00903f50();
          }
          local_c = 0x1c;
          if ((local_1d4 & 2) != 0) {
            local_1d4 = local_1d4 & 0xfffffffd;
            FUN_0040159c();
          }
          local_c._0_1_ = 0x11;
          pwStack_1fc = 
          L"쒃茄⑼ࡔ൲䒋䀤\xe850䏜\v쒃昄䲋⠤襦⑌昰璉㈤䒋␤疋謌謖⡒粉㠤\xf803䒉㐤Ū䒍〤譐觎⑼Ｐ诒謆⡐Ū䲍ㄤ譑ￎ诒謆⡐Ū䲍㈤譑ￎ诒謆⡐Ū䲍㌤譑ￎ诒謆⡐ɪ䲍㐤譑ￎ诒謆⡐ɪ䲍㘤譑ￎ诒謆⡐Ѫ䲍㠤譑ￎ诒謆⡐Ѫ䲍㰤譑ￎ诒謆ၐ캋틿삄萏͖"
          ;
          _free(pvStack_19c);
          if (7 < uStack_1a0) {
                    // WARNING: Subroutine does not return
            pwStack_1fc = (wchar_t *)&UNK_0098b2c5;
            FUN_00a3f6a1();
          }
          uStack_1c4 = local_1cc._0_2_;
          uStack_1c2 = uVar3;
        }
        local_1cc = puVar12 + (int)local_1d0;
        puStack_1c0 = (undefined *)local_1d0;
        pwStack_1fc = (wchar_t *)&uStack_1c8;
        uStack_200 = 0x98b2fc;
        puStack_1bc = puVar12;
        (*(code *)(*param_2)[10])();
        uStack_200 = 1;
        pcStack_204 = local_1d0 + 1;
        puStack_208 = (undefined4 *)0x98b30c;
        (*(code *)(*param_2)[10])();
        puStack_208 = (undefined4 *)0x1;
        pcStack_20c = &cStack_1d6;
        uStack_210 = 0x98b31c;
        (*(code *)(*param_2)[10])();
        uStack_210 = 1;
        iStack_214 = (int)&uStack_1e0 + 3;
        uStack_218 = 0x98b32c;
        (*(code *)(*param_2)[10])();
        uStack_218 = 2;
        (*(code *)(*param_2)[10])(auStack_1e4);
        (*(code *)(*param_2)[10])(&stack0xfffffe16,2);
        (*(code *)(*param_2)[10])(&stack0xfffffe10,4);
        (*(code *)(*param_2)[10])(&uStack_1f4,4);
        cVar2 = (*(code *)(*param_2)[4])();
        if (cVar2 == '\0') {
          if ((char)param_3 != '\0') {
            local_1d0 = (undefined  [4])&uStack_218;
            FUN_0043c211(&DAT_00d25fa0);
            cVar2 = FUN_00846b30(1);
            if (cVar2 != '\0') {
              pwStack_1fc = L"葨홬贀⒌\x88";
              FUN_004325b6();
              local_c._0_1_ = 0x1e;
              pwStack_1fc = L"蓆\xe824\x01ἀר\xebec藿瓀贙⒔¨";
              FUN_0043c211();
              local_c = CONCAT31(local_c._1_3_,0x1f);
              iVar5 = FUN_0084a340();
              if (iVar5 == 0) {
                pwStack_1fc = L"쒃倄䲍搤仨\xeb7c棿徠Ò챨홬栀Ԧ";
                FUN_0084d360();
              }
              else {
                pwStack_1fc = (wchar_t *)local_170;
                uStack_200 = 0x98b756;
                FUN_0084f210();
              }
              pwStack_1fc = L"ꁨ퉟栀泌Ö♨\x05栀檴Ö₳Ū貍ࠤ\x01蠀⒜Ǽ";
              FUN_008433c0();
              pwStack_1fc = L"wxICOHandler::SaveFile";
              uStack_200 = 0x526;
              pcStack_204 = "..\\..\\src\\common\\imagbmp.cpp";
              puStack_208 = (undefined4 *)0x1;
              local_c._0_1_ = 0x20;
              pcStack_20c = (char *)0x98b79d;
              puVar9 = (undefined2 *)FUN_008423d0();
              local_c._0_1_ = 0x21;
              FUN_008854f0();
              uStack_200 = 0x98b7b7;
              pwStack_1fc = puVar9;
              FUN_0083fe90();
              local_c._0_1_ = 0x20;
              FUN_00842440();
              local_c._0_1_ = 0x1f;
              goto LAB_0098b6ad;
            }
          }
          goto LAB_0098b57f;
        }
        pwStack_1fc = (undefined2 *)0x0;
        uStack_200 = param_3;
        pcStack_204 = (char *)param_2;
        puStack_208 = param_1;
        pcStack_20c = (char *)0x98b392;
        cVar2 = FUN_00987880();
        if (cVar2 == '\0') {
          if ((char)param_3 != '\0') {
            local_1d0 = (undefined  [4])&uStack_218;
            FUN_0043c211(&DAT_00d25fa0);
            cVar2 = FUN_00846b30(1);
            if (cVar2 != '\0') {
              pwStack_1fc = L"葨홬贀⒌¬";
              FUN_004325b6();
              local_c._0_1_ = 0x22;
              pwStack_1fc = L"貍萤";
              FUN_0043c211();
              pwStack_1fc = (wchar_t *)local_14c;
              local_c._0_1_ = 0x23;
              uStack_200 = 0x98b851;
              FUN_00820bf9();
              pwStack_1fc = L"ꁨ퉟栀泌Ö㉨\x05栀檴Ö⒳Ū貍ࠤ\x01蠀⒜Ǽ";
              FUN_008433c0();
              pwStack_1fc = L"wxICOHandler::SaveFile";
              uStack_200 = 0x532;
              pcStack_204 = "..\\..\\src\\common\\imagbmp.cpp";
              puStack_208 = (undefined4 *)0x1;
              local_c._0_1_ = 0x24;
              pcStack_20c = (char *)0x98b889;
              puVar9 = (undefined2 *)FUN_008423d0();
              local_c._0_1_ = 0x25;
              FUN_008854f0();
              uStack_200 = 0x98b8a3;
              pwStack_1fc = puVar9;
              FUN_0083fe90();
              local_c._0_1_ = 0x24;
              FUN_00842440();
              local_c._0_1_ = 0x23;
              FUN_0081b5bc();
              FUN_0040159c();
              FUN_0040159c();
            }
          }
          goto LAB_0098b57f;
        }
        pwStack_1fc = (undefined2 *)0x0;
        uStack_200 = param_3;
        pcStack_204 = (char *)param_2;
        puStack_208 = &uStack_1e0;
        pcStack_20c = (char *)0x98b3af;
        cVar2 = FUN_00987880();
        if (cVar2 == '\0') {
          if ((char)param_3 != '\0') {
            local_1d0 = (undefined  [4])&uStack_218;
            FUN_0043c211(&DAT_00d25fa0);
            cVar2 = FUN_00846b30(1);
            if (cVar2 != '\0') {
              pwStack_1fc = L"葨홬贀⒌Ŭ";
              FUN_004325b6();
              local_c._0_1_ = 0x26;
              pwStack_1fc = 
              L"貍䐤\x01儀钍氤\x01刀蓆\xf024\x01✀鯨\xe952菿ࣄ赐⑌\xe840穕￫ꁨ퉟栀泌Ö㵨\x05栀檴Ö⢳Ū貍ꀤ\x01蠀⒜Ǽ"
              ;
              FUN_0043c211();
              pwStack_1fc = (wchar_t *)auStack_8c;
              local_c._0_1_ = 0x27;
              uStack_200 = 0x98b95e;
              FUN_00820bf9();
              pwStack_1fc = L"ꁨ퉟栀泌Ö㵨\x05栀檴Ö⢳Ū貍ꀤ\x01蠀⒜Ǽ";
              FUN_008433c0();
              pwStack_1fc = L"wxICOHandler::SaveFile";
              uStack_200 = 0x53d;
              pcStack_204 = "..\\..\\src\\common\\imagbmp.cpp";
              puStack_208 = (undefined4 *)0x1;
              local_c._0_1_ = 0x28;
              pcStack_20c = (char *)0x98b996;
              FUN_008423d0();
              local_c._0_1_ = 0x29;
              pwStack_1fc = (undefined2 *)0x98b9aa;
              FUN_00840b80();
              local_c._0_1_ = 0x28;
              FUN_00842440();
              local_c._0_1_ = 0x27;
              FUN_0081b5bc();
              FUN_0040159c();
              FUN_0040159c();
            }
          }
          goto LAB_0098b57f;
        }
        local_c = CONCAT31(local_c._1_3_,0xc);
        FUN_008f7630();
        local_c = 0xffffffff;
        uStack_1e0 = wxObject::vftable;
        FUN_0083e850();
        iStack_174 = iStack_174 + 1;
        if (0 < iStack_174) {
          ExceptionList = local_14;
          return CONCAT31((int3)((uint)iStack_174 >> 8),1);
        }
      }
      if ((char)param_3 != '\0') {
        local_1d0 = (undefined  [4])&uStack_218;
        FUN_0043c211(&DAT_00d25fa0);
        cVar2 = FUN_00846b30(1);
        if (cVar2 != '\0') {
          pwStack_1fc = L"葨홬贀⑌와⒄Ǭ";
          FUN_004325b6();
          local_c._0_1_ = 0x12;
          pwStack_1fc = L"蓆\xe824\x01ጀ쏨\xebee㯿瓇贖⒌\x84";
          FUN_0043c211();
          local_c = CONCAT31(local_c._1_3_,0x13);
          iVar5 = FUN_0084a340();
          if (iVar5 == 0) {
            pwStack_1fc = L"쒃倄䲍搤የ\xeb7f棿徠Ò챨홬栀Ӡ";
            FUN_0084d360();
          }
          else {
            pwStack_1fc = (wchar_t *)auStack_1b8;
            uStack_200 = 0x98b495;
            FUN_0084f210();
          }
          pwStack_1fc = L"ꁨ퉟栀泌Ö\xe068\x04栀檴ÖᒳŪ貍ࠤ\x01蠀⒜Ǽ";
          FUN_008433c0();
          pwStack_1fc = L"wxICOHandler::SaveFile";
          uStack_200 = 0x4e0;
          pcStack_204 = "..\\..\\src\\common\\imagbmp.cpp";
          puStack_208 = (undefined4 *)0x1;
          local_c._0_1_ = 0x14;
          pcStack_20c = (char *)0x98b4d9;
          uVar6 = FUN_008423d0();
          local_c._0_1_ = 0x15;
          FUN_008854f0();
          uStack_200 = 0x98b4f3;
          pwStack_1fc = (wchar_t *)uVar6;
          FUN_0083fe90();
          local_c._0_1_ = 0x14;
          FUN_00842440();
          local_c._0_1_ = 0x13;
          FUN_0081b5bc();
          pwStack_1fc = L"ࢾ";
          _free(pvStack_19c);
          if (7 < uStack_1a0) {
                    // WARNING: Subroutine does not return
            pwStack_1fc = (wchar_t *)&UNK_0098b53c;
            FUN_00a3f6a1();
          }
          uStack_1a0 = 7;
          uStack_1a4 = 0;
          uStack_1b4 = uStack_1b4 & 0xffff0000;
          pwStack_1fc = (undefined2 *)0x98b563;
          _free(pvStack_154);
          if (7 < uStack_158) {
                    // WARNING: Subroutine does not return
            pwStack_1fc = (wchar_t *)&UNK_0098b57c;
            FUN_00a3f6a1();
          }
        }
      }
LAB_0098b57f:
      local_c = CONCAT31(local_c._1_3_,0xc);
      FUN_008f7630();
      local_c = 0xffffffff;
      uStack_1e0 = wxObject::vftable;
      uVar4 = FUN_0083e850();
      goto LAB_0098ac4a;
    }
    if ((char)param_3 == '\0') goto LAB_0098ac4a;
    local_1d0 = (undefined  [4])&uStack_218;
    FUN_0043c211(&DAT_00d25fa0);
    uVar4 = FUN_00846b30(1);
    if ((char)uVar4 == '\0') goto LAB_0098ac4a;
    pwStack_1fc = L"葨홬贀⒌¬";
    FUN_004325b6();
    local_c = 8;
    pwStack_1fc = L"貍萤";
    FUN_0043c211();
    pwStack_1fc = (wchar_t *)local_14c;
    local_c._0_1_ = 9;
    uStack_200 = 0x98ad57;
    FUN_00820bf9();
    pwStack_1fc = L"ꁨ퉟栀泌Öꍨ\x04栀檴ÖળŪ貍ࠤ\x01蠀⒜Ǽ";
    FUN_008433c0();
    pwStack_1fc = L"wxICOHandler::SaveFile";
    uStack_200 = 0x4a3;
    pcStack_204 = "..\\..\\src\\common\\imagbmp.cpp";
    puStack_208 = (undefined4 *)0x1;
    local_c._0_1_ = 10;
    pcStack_20c = (char *)0x98ad8f;
    FUN_008423d0();
    local_c._0_1_ = 0xb;
    pwStack_1fc = L"貍\xf424";
    FUN_00840b80();
    local_c._0_1_ = 10;
    FUN_00842440();
    local_c = CONCAT31(local_c._1_3_,9);
  }
  else {
    if ((char)param_3 == '\0') goto LAB_0098ac4a;
    local_1d0 = (undefined  [4])&uStack_218;
    FUN_0043c211(&DAT_00d25fa0);
    uVar4 = FUN_00846b30(1);
    if ((char)uVar4 == '\0') goto LAB_0098ac4a;
    pwStack_1fc = L"ꡨ홬贀⒌¬";
    FUN_004325b6();
    local_c = 4;
    pwStack_1fc = L"钍萤";
    FUN_0043c211();
    pwStack_1fc = (wchar_t *)local_14c;
    local_c._0_1_ = 5;
    uStack_200 = 0x98abb9;
    FUN_00820bf9();
    pwStack_1fc = L"ꁨ퉟栀泌Ö蝨\x04栀檴ÖڳŪ貍ࠤ\x01蠀⒜Ǽ";
    FUN_008433c0();
    pwStack_1fc = L"wxICOHandler::SaveFile";
    uStack_200 = 0x487;
    pcStack_204 = "..\\..\\src\\common\\imagbmp.cpp";
    puStack_208 = (undefined4 *)0x1;
    local_c._0_1_ = 6;
    pcStack_20c = (char *)0x98abf1;
    uVar6 = FUN_008423d0();
    local_c._0_1_ = 7;
    FUN_008854f0();
    uStack_200 = 0x98ac0b;
    pwStack_1fc = (wchar_t *)uVar6;
    FUN_0083fe90();
    local_c._0_1_ = 6;
    FUN_00842440();
    local_c = CONCAT31(local_c._1_3_,5);
  }
  FUN_0081b5bc();
  FUN_0040159c();
  uVar4 = FUN_0040159c();
LAB_0098ac4a:
  ExceptionList = local_14;
  return uVar4 & 0xffffff00;
}



// WARNING: Removing unreachable block (ram,0x0098bdce)
// WARNING: Removing unreachable block (ram,0x0098be44)
// WARNING: Removing unreachable block (ram,0x0098bd99)

char FUN_0098b9f0(undefined4 param_1,int *param_2)

{
  short sVar1;
  byte bVar2;
  byte bVar3;
  char cVar4;
  int iVar5;
  int *piVar6;
  uint uVar7;
  short *psVar8;
  byte *pbVar9;
  int *piVar10;
  int *piVar11;
  bool bVar12;
  longlong lVar13;
  uint uVar14;
  int iVar15;
  int *piStack_108;
  short sStack_ee;
  ushort uStack_ec;
  int local_e8;
  uint uStack_58;
  void *pvStack_54;
  void *pvStack_14;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be1659;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(*param_2 + 0x2c))();
  piVar11 = (int *)(uint)uStack_ec;
  iVar5 = FUN_00823c23();
  piVar10 = (int *)0xffffffff;
  bVar2 = 0;
  bVar3 = 0;
  uVar14 = 6;
  iVar15 = 0;
  piStack_108 = (int *)0x0;
  if (piVar11 != (int *)0x0) {
    pbVar9 = (byte *)(iVar5 + 2);
    do {
      piVar6 = (int *)(**(code **)(*param_2 + 0x2c))();
      uVar7 = (**(code **)(*piVar6 + 0x30))();
      bVar12 = CARRY4(uVar14,uVar7);
      uVar14 = uVar14 + uVar7;
      iVar15 = iVar15 + (uint)bVar12;
      if (bVar2 <= pbVar9[-2]) {
        if (*pbVar9 == 0) {
          *pbVar9 = 0xff;
        }
        if (bVar3 <= *pbVar9) {
          piVar10 = piStack_108;
          bVar2 = pbVar9[-2];
          bVar3 = *pbVar9;
        }
      }
      piStack_108 = (int *)((int)piStack_108 + 1);
      pbVar9 = pbVar9 + 0x10;
    } while (piStack_108 < piVar11);
  }
  if (param_2 != (int *)0xffffffff) {
    piVar10 = param_2;
  }
  if (((piVar10 == (int *)0xffffffff) || ((int)piVar10 < 0)) || ((int)piVar11 <= (int)piVar10)) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar4 = FUN_00846b30(1);
    if (cVar4 != '\0') {
      psVar8 = (short *)PTR_DAT_03236318;
      if (PTR_DAT_03236318 == (undefined *)0x0) {
        psVar8 = &DAT_00fae9c8;
      }
      do {
        sVar1 = *psVar8;
        psVar8 = psVar8 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign();
      local_c = (void *)0x0;
      FUN_0043c211();
      local_c = (void *)CONCAT31(local_c._1_3_,1);
      iVar15 = FUN_0084a340();
      if (iVar15 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_c._0_1_ = 2;
      __time64((__time64_t *)0x0);
      GetCurrentThreadId();
      local_c._0_1_ = 3;
      FUN_008854f0();
      FUN_0083fe90();
      local_c._0_1_ = 2;
      _free((void *)0x0);
      local_c = (void *)CONCAT31(local_c._1_3_,1);
      FUN_0081b5bc();
      _free(pvStack_54);
      if (7 < uStack_58) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free((void *)0x0);
    }
    cVar4 = '\0';
  }
  else {
    uVar7 = *(uint *)((int)piVar10 * 0x10 + iVar5 + 0xc);
    if (((uVar7 - uVar14 | -(uint)(uVar7 < uVar14) - iVar15) != 0) &&
       (lVar13 = (**(code **)(*param_2 + 0x3c))(), lVar13 == -1)) {
      ExceptionList = pvStack_14;
      return '\0';
    }
    cVar4 = FUN_00989f70();
    if ((*(int *)(local_e8 + 0x84) == 5) || (*(int *)(local_e8 + 0x84) == 0x1b)) {
      bVar12 = true;
    }
    else {
      bVar12 = false;
    }
    if (((cVar4 != '\0') && (bVar12)) && (sStack_ee == 2)) {
      FUN_004325b6();
      local_c = (void *)0x4;
      FUN_00903db0();
      local_c = (void *)0xffffffff;
      FUN_0040159c();
      FUN_004325b6();
      local_c = (void *)0x5;
      FUN_00903db0();
      FUN_0040159c();
    }
  }
  FUN_00a3f66c();
  ExceptionList = pvStack_14;
  return cVar4;
}



undefined FUN_0098be80(undefined4 param_1)

{
  undefined uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1028;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009ce3a0(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  local_4 = 0;
  uVar1 = FUN_0090c610(param_1);
  local_4 = 0xffffffff;
  FUN_009ce410();
  ExceptionList = local_c;
  return uVar1;
}



void FUN_0098bef0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00987880(param_1,param_2,param_3,1,0);
  return;
}



int __fastcall FUN_0098bf10(int *param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1 == 0)) {
    FUN_008402e0("..\\..\\src\\common\\gifdecod.cpp",0x47,"GIFImagePtr::operator ->","m_ptr != 0",0)
    ;
  }
  return *param_1;
}



uint __thiscall FUN_0098bf40(int param_1_00,int *param_1,int param_2,uint param_3)

{
  byte bVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  
  iVar3 = *(int *)(param_1_00 + 0x34);
  uVar2 = *(uint *)(param_1_00 + 0x3c) >> (8U - (char)iVar3 & 0x1f) &
          (1 << ((byte)param_2 & 0x1f)) - 1U;
  do {
    if (param_2 <= iVar3) {
      *(int *)(param_1_00 + 0x34) = *(int *)(param_1_00 + 0x34) - param_2;
      return uVar2;
    }
    iVar4 = *(int *)(param_1_00 + 0x38);
    if (iVar4 == 0) {
      iVar3 = FUN_00882fb0();
      *(int *)(param_1_00 + 0x38) = iVar3;
      if (iVar3 == 0) {
        *(int *)(param_1_00 + 0x34) = *(int *)(param_1_00 + 0x34) - param_2;
        return param_3;
      }
      (**(code **)(*param_1 + 0x2c))(param_1_00 + 0x40,iVar3);
      iVar4 = *(int *)(param_1_00 + 0x38);
      iVar3 = (**(code **)(*param_1 + 0x30))();
      if (iVar3 != iVar4) {
        return param_3;
      }
      *(int *)(param_1_00 + 0x140) = param_1_00 + 0x40;
    }
    *(uint *)(param_1_00 + 0x3c) = (uint)**(byte **)(param_1_00 + 0x140);
    *(byte **)(param_1_00 + 0x140) = *(byte **)(param_1_00 + 0x140) + 1;
    bVar1 = (byte)*(int *)(param_1_00 + 0x34);
    iVar3 = *(int *)(param_1_00 + 0x34) + 8;
    *(int *)(param_1_00 + 0x38) = iVar4 + -1;
    *(int *)(param_1_00 + 0x34) = iVar3;
    uVar2 = uVar2 + (((1 << ((byte)param_2 - bVar1 & 0x1f)) - 1U & *(uint *)(param_1_00 + 0x3c)) <<
                    (bVar1 & 0x1f));
  } while( true );
}



undefined4 __thiscall
FUN_0098c010(int param_1,undefined4 param_2,uint *param_3,int param_4,int param_5)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  uint uVar9;
  uint uVar10;
  int iStack_24;
  int iStack_20;
  int iStack_1c;
  int iStack_18;
  uint uStack_14;
  int iStack_10;
  
  iVar1 = FUN_00823c23(0x4004);
  uVar9 = 0;
  if (iVar1 == 0) {
    return 2;
  }
  iVar2 = FUN_00823c23(0x4004);
  if (iVar2 == 0) {
    FUN_00a3f66c(iVar1);
    return 2;
  }
  piVar3 = (int *)FUN_00823c23(0x4004);
  if (piVar3 == (int *)0x0) {
    FUN_00a3f66c(iVar1);
    FUN_00a3f66c(iVar2);
    return 2;
  }
  iVar6 = 1 << ((byte)param_5 & 0x1f);
  param_5 = param_5 + 1;
  iStack_24 = iVar6 + 2;
  iStack_18 = -1;
  iStack_20 = (1 << ((byte)param_5 & 0x1f)) + -1;
  iStack_10 = 1;
  uStack_14 = 0;
  *(undefined4 *)(param_1 + 0x34) = 0;
  *(undefined4 *)(param_1 + 0x38) = 0;
  *(undefined4 *)(param_1 + 0x3c) = 0;
  iVar5 = -1;
  iStack_1c = param_5;
  do {
    iVar4 = FUN_0098bf40(param_2,iStack_1c,iVar6 + 1);
    if (iVar4 == iVar6 + 1) break;
    if (iVar4 == iVar6) {
      iStack_24 = iVar6 + 2;
      iStack_20 = (1 << ((byte)param_5 & 0x1f)) + -1;
      iStack_18 = -1;
      iVar8 = iVar4;
      iVar4 = -1;
      iStack_1c = param_5;
    }
    else {
      iVar8 = iVar4;
      if (iStack_24 <= iVar4) {
        *piVar3 = iStack_18;
        iVar8 = iVar5;
      }
      uVar10 = (uint)(iStack_24 <= iVar4);
      iStack_18 = iVar8;
      while (iVar6 < iStack_18) {
        piVar3[uVar10] = *(int *)(iVar2 + iStack_18 * 4);
        iStack_18 = *(int *)(iVar1 + iStack_18 * 4);
        uVar10 = uVar10 + 1;
        if (0x1000 < (int)uVar10) goto LAB_0098c2f3;
      }
      if (0x1000 < (int)uVar10) {
LAB_0098c2f3:
        FUN_00a3f66c(iVar1);
        FUN_00a3f66c(iVar2);
        FUN_00a3f66c(piVar3);
        return 1;
      }
      piVar3[uVar10] = iStack_18;
      if (iVar5 != -1) {
        if (iStack_20 < iStack_24) goto LAB_0098c2f3;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (0x1000 < iStack_24)) {
          FUN_008402e0("..\\..\\src\\common\\gifdecod.cpp",0x1c1,"wxGIFDecoder::dgif",
                       "ab_free < allocSize",0);
        }
        *(int *)(iVar1 + iStack_24 * 4) = iVar5;
        *(int *)(iVar2 + iStack_24 * 4) = iStack_18;
        iStack_24 = iStack_24 + 1;
        if ((iStack_20 < iStack_24) && (iStack_1c < 0xc)) {
          iStack_1c = iStack_1c + 1;
          iStack_20 = (1 << ((byte)iStack_1c & 0x1f)) + -1;
        }
      }
      iVar8 = iStack_18;
      if (-1 < (int)uVar10) {
        uVar7 = *param_3;
        do {
          *(undefined *)(uVar7 * uVar9 + param_3[7] + uStack_14) = *(undefined *)(piVar3 + uVar10);
          uVar7 = *param_3;
          uStack_14 = uStack_14 + 1;
          uVar10 = uVar10 - 1;
          if (uVar7 <= uStack_14) {
            uStack_14 = 0;
            if (param_4 == 0) {
              uVar9 = uVar9 + 1;
              if (param_3[1] <= uVar9) {
                iVar8 = iVar6 + 1;
                break;
              }
            }
            else {
              switch(iStack_10) {
              case 1:
              case 2:
                uVar9 = uVar9 + 8;
                break;
              case 3:
                uVar9 = uVar9 + 4;
                break;
              case 4:
                uVar9 = uVar9 + 2;
              }
              while (param_3[1] <= uVar9) {
                iVar5 = iStack_10 + 1;
                if (iStack_10 == 1) {
                  uVar9 = 4;
                  iStack_10 = iVar5;
                }
                else if (iStack_10 == 2) {
                  uVar9 = 2;
                  iStack_10 = iVar5;
                }
                else if (iStack_10 == 3) {
                  uVar9 = 1;
                  iStack_10 = iVar5;
                }
                else {
                  uVar9 = 0;
                  uVar10 = 0xffffffff;
                  iVar8 = iVar6 + 1;
                  iStack_10 = iVar5;
                }
              }
            }
          }
        } while (-1 < (int)uVar10);
      }
    }
    iVar5 = iVar4;
  } while (iVar8 != iVar6 + 1);
  FUN_00a3f66c(iVar1);
  FUN_00a3f66c(iVar2);
  FUN_00a3f66c(piVar3);
  return 0;
}



undefined4 * __fastcall FUN_0098c360(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be1688;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1[1] = 1;
  *param_1 = wxAnimationDecoder::vftable;
  local_4 = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  FUN_00453f4b(uVar1);
  param_1[4] = 0;
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_0098c3d0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdea08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  param_1[5] = wxObject::vftable;
  FUN_0083e850(uVar1);
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_0098c430(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be16b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0098c360(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxGIFDecoder::vftable;
  FUN_0086a600();
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_0098c490(int param_1_00,undefined4 *param_1,uint param_2)

{
  int iVar1;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x2c) <= param_2)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  iVar1 = *(int *)(param_1_00 + 0x30);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x2c) <= param_2)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  iVar1 = *(int *)(iVar1 + param_2 * 4);
  *param_1 = **(undefined4 **)(param_2 * 4 + *(int *)(param_1_00 + 0x30));
  param_1[1] = *(undefined4 *)(iVar1 + 4);
  return;
}



void __thiscall FUN_0098c520(int param_1_00,undefined4 *param_1,uint param_2)

{
  int iVar1;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x2c) <= param_2)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  iVar1 = *(int *)(param_1_00 + 0x30);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x2c) <= param_2)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  iVar1 = *(int *)(iVar1 + param_2 * 4);
  *param_1 = *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0x30) + param_2 * 4) + 8);
  param_1[1] = *(undefined4 *)(iVar1 + 0xc);
  return;
}



undefined4 __thiscall FUN_0098c5b0(int param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x2c) <= param_1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  return *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0x30) + param_1 * 4) + 0x14);
}



undefined4 __thiscall FUN_0098c600(int param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x2c) <= param_1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  return *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0x30) + param_1 * 4) + 0x18);
}



// WARNING: Removing unreachable block (ram,0x0098c686)
// WARNING: Removing unreachable block (ram,0x0098c67c)
// WARNING: Removing unreachable block (ram,0x0098c690)

undefined4 FUN_0098c650(int *param_1)

{
  int *piVar1;
  undefined4 uVar2;
  
  piVar1 = (int *)(**(code **)(*param_1 + 0x2c))(&param_1);
  uVar2 = (**(code **)(*piVar1 + 0x10))();
  if ((char)uVar2 != '\0') {
    return 0xffffff00;
  }
  return uVar2;
}



undefined4 __thiscall FUN_0098c6b0(undefined4 param_1_00,byte param_1)

{
  FUN_0098c3d0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x144);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_0098c430(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_0098c740(int param_1_00,undefined4 param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  undefined *puVar3;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x2c) <= param_2)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  iVar1 = *(int *)(*(int *)(*(int *)(param_1_00 + 0x30) + param_2 * 4) + 0x20);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x2c) <= param_2)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  iVar2 = *(int *)(*(int *)(*(int *)(param_1_00 + 0x30) + param_2 * 4) + 0x10);
  if (iVar2 == -1) {
    FUN_00458700(&PTR_vftable_03238cd0);
    return param_1;
  }
  iVar1 = iVar1 + iVar2 * 2;
  puVar3 = (undefined *)(iVar2 + iVar1);
  FUN_004561e7(*puVar3,puVar3[1],*(undefined *)(iVar2 + 2 + iVar1),0xff);
  return param_1;
}



void __fastcall FUN_0098c810(undefined4 *param_1)

{
  param_1[0x10] = 7;
  param_1[0xf] = 0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  param_1[0x11] = 0;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0xffffffff;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  return;
}



void __fastcall FUN_0098c850(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  if (iVar1 == 0) {
    return;
  }
  _free(*(void **)(iVar1 + 0x44));
  if (*(uint *)(iVar1 + 0x40) < 8) {
    *(undefined4 *)(iVar1 + 0x40) = 7;
    *(undefined4 *)(iVar1 + 0x3c) = 0;
    *(undefined2 *)(iVar1 + 0x2c) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(iVar1 + 0x2c));
}



void __fastcall FUN_0098c8b0(int param_1)

{
  int iVar1;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     (*(int *)(param_1 + 0x10) != *(int *)(param_1 + 0x2c))) {
    FUN_008402e0("..\\..\\src\\common\\gifdecod.cpp",0x6b,"wxGIFDecoder::Destroy",
                 "m_nFrames==m_frames.GetCount()",0);
  }
  if (*(int *)(param_1 + 0x10) == 0) {
    FUN_0086a880();
    *(undefined4 *)(param_1 + 0x10) = 0;
    return;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x2c) == 0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  iVar1 = **(int **)(param_1 + 0x30);
  _free(*(void **)(iVar1 + 0x1c));
  _free(*(void **)(iVar1 + 0x20));
  _free(*(void **)(iVar1 + 0x44));
  if (7 < *(uint *)(iVar1 + 0x40)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(iVar1 + 0x2c));
  }
  *(undefined4 *)(iVar1 + 0x40) = 7;
  *(undefined4 *)(iVar1 + 0x3c) = 0;
  *(undefined2 *)(iVar1 + 0x2c) = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar1);
}



void __fastcall FUN_0098c990(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00be16f3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxGIFDecoder::vftable;
  local_4 = 1;
  FUN_0098c8b0(uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_0086aa30();
  local_4 = 0xffffffff;
  FUN_0098c3d0();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_0098ca00(int *param_1_00,uint param_1,int param_2)

{
  int iVar1;
  int iVar2;
  short *psVar3;
  char cVar4;
  undefined *puVar5;
  undefined **ppuVar6;
  uint uVar7;
  short *psVar8;
  undefined *puVar9;
  int unaff_EBX;
  byte *pbVar10;
  char *pcVar11;
  int local_378;
  int *local_374;
  undefined **ppuStack_370;
  undefined4 uStack_36c;
  int iStack_368;
  int iStack_364;
  undefined local_360 [4];
  uint uStack_35c;
  undefined4 uStack_34c;
  uint uStack_348;
  void *pvStack_344;
  undefined auStack_33c [4];
  undefined4 uStack_338;
  int iStack_328;
  uint uStack_324;
  void *pvStack_320;
  undefined auStack_318 [256];
  undefined auStack_218 [256];
  undefined auStack_118 [260];
  void *pvStack_14;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  uint uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be173c;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_378;
  ExceptionList = &local_c;
  local_378 = param_2;
  local_374 = param_1_00;
  thunk_FUN_0083e850(DAT_0323f878 ^ (uint)&stack0xfffffc78);
  (**(code **)(*param_1_00 + 0x14))(local_360,param_1);
  FUN_00900c30(iStack_368,iStack_364,1);
  FUN_009001a0(0xd);
  cVar4 = FUN_008ff820();
  if (cVar4 != '\0') {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0xb] <= param_1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    iVar1 = param_1 * 4;
    iVar2 = *(int *)(*(int *)(param_1_00[0xc] + param_1 * 4) + 0x20);
    local_378 = iVar1;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0xb] <= uStack_4)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    pbVar10 = *(byte **)(*(int *)(param_1_00[0xc] + iVar1) + 0x1c);
    puVar5 = (undefined *)FUN_008ff850();
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0xb] <= uStack_4)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    ppuVar6 = *(undefined ***)(*(int *)(param_1_00[0xc] + local_378) + 0x10);
    ppuStack_370 = ppuVar6;
    if (ppuVar6 == (undefined **)0xffffffff) {
      FUN_008ffb00(0);
    }
    else {
      local_374 = (int *)0x0;
      pcVar11 = (char *)(iVar2 + 2);
      while( true ) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_EBX + 0x2c) <= uStack_4)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          ppuVar6 = ppuStack_370;
        }
        if (*(int **)(*(int *)(*(int *)(unaff_EBX + 0x30) + local_378) + 0x24) <= local_374) break;
        if (((pcVar11[-2] == -1) && (pcVar11[-1] == '\0')) && (*pcVar11 == -1)) {
          *pcVar11 = -2;
        }
        local_374 = (int *)((int)local_374 + 1);
        pcVar11 = pcVar11 + 3;
      }
      puVar9 = (undefined *)(iVar2 + (int)ppuVar6 * 3);
      *puVar9 = 0xff;
      puVar9[1] = 0;
      puVar9[2] = 0xff;
      FUN_008ff990(0xff,0,0xff);
    }
    uVar7 = 0;
    puVar9 = (undefined *)(iVar2 + 2);
    do {
      auStack_118[uVar7] = puVar9[-2];
      auStack_218[uVar7] = puVar9[-1];
      auStack_318[uVar7] = *puVar9;
      uVar7 = uVar7 + 1;
      puVar9 = puVar9 + 3;
    } while (uVar7 < 0x100);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_EBX + 0x2c) <= uStack_4)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    uStack_36c = 0;
    local_c = (void *)0x0;
    ppuStack_370 = wxPalette::vftable;
    FUN_00974170(*(undefined4 *)(*(int *)(*(int *)(unaff_EBX + 0x30) + local_378) + 0x24),
                 auStack_118,auStack_218,auStack_318);
    local_c = (void *)0x1;
    FUN_009029b0(&ppuStack_370);
    local_c = (void *)0xffffffff;
    ppuStack_370 = wxObject::vftable;
    FUN_0083e850();
    for (iStack_364 = iStack_364 * iStack_368; iStack_364 != 0; iStack_364 = iStack_364 + -1) {
      *puVar5 = *(undefined *)(iVar2 + (uint)*pbVar10 * 3);
      puVar5[1] = *(undefined *)((uint)*pbVar10 * 3 + 1 + iVar2);
      puVar5[2] = *(undefined *)((uint)*pbVar10 * 3 + 2 + iVar2);
      puVar5 = puVar5 + 3;
      pbVar10 = pbVar10 + 1;
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_EBX + 0x2c) <= uStack_4)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    uStack_324 = 7;
    iStack_328 = 0;
    uStack_338 = (uint)uStack_338._2_2_ << 0x10;
    FID_conflict_assign(*(int *)(*(int *)(unaff_EBX + 0x30) + local_378) + 0x28,0,0xffffffff);
    pvStack_320 = (void *)0x0;
    local_c = (void *)0x2;
    if (iStack_328 != 0) {
      uStack_35c = uStack_35c & 0xffff0000;
      uStack_348 = 7;
      uStack_34c = 0;
      psVar3 = &DAT_00d4a0c0;
      do {
        psVar8 = psVar3;
        psVar3 = psVar8 + 1;
      } while (*psVar8 != 0);
      FID_conflict_assign(&DAT_00d4a0c0,(int)(psVar8 + -0x6a5060) >> 1);
      pvStack_344 = (void *)0x0;
      local_c = (void *)CONCAT31(local_c._1_3_,3);
      FUN_00903cb0(local_360,auStack_33c);
      _free(pvStack_344);
      if (7 < uStack_348) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_35c);
      }
    }
    _free(pvStack_320);
    if (7 < uStack_324) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_338);
    }
  }
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_0098ce80(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  
  FUN_0081a07d(param_4,param_1,3);
  FUN_0081a07d(param_3,param_1,2);
  FUN_0081a07d(param_2,param_1,1);
  uVar1 = FUN_008854f0(param_3,param_4,param_1);
  FUN_0083fe90(param_1_00,uVar1);
  return;
}



undefined4 __thiscall FUN_0098cee0(undefined4 param_1_00,byte param_1)

{
  FUN_0098c990();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_0098cf00(int param_1_00,int *param_1)

{
  byte bVar1;
  char cVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  void *pvVar6;
  uint *puVar7;
  undefined4 *puVar8;
  int iVar9;
  undefined *puVar10;
  int *piVar11;
  void **ppvVar12;
  int **ppiVar13;
  int *piVar14;
  uint uVar15;
  undefined4 *puVar16;
  longlong lVar17;
  undefined auStack_468 [12];
  undefined4 uStack_45c;
  undefined4 uStack_458;
  char *pcStack_454;
  undefined4 **ppuStack_450;
  char *pcStack_44c;
  int *piStack_430;
  char local_42b;
  char cStack_42a;
  char cStack_429;
  void **ppvStack_428;
  int local_424;
  undefined4 uStack_420;
  undefined4 uStack_41c;
  undefined4 uStack_418;
  void **ppvStack_414;
  uint uStack_410;
  undefined uStack_40c;
  int local_400;
  undefined *puStack_3fc;
  undefined4 *apuStack_3f8 [2];
  int aiStack_3f0 [5];
  undefined auStack_3dc [152];
  int iStack_344;
  undefined2 uStack_340;
  undefined4 uStack_330;
  undefined4 uStack_32c;
  undefined4 uStack_328;
  undefined2 local_320;
  undefined2 uStack_31e;
  undefined2 uStack_31c;
  ushort uStack_31a;
  byte bStack_318;
  undefined4 uStack_310;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be17d3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&piStack_430;
  ExceptionList = &local_c;
  local_400 = 0;
  local_42b = '\x01';
  pcStack_44c = (char *)0x98cf5b;
  local_424 = param_1_00;
  cVar2 = FUN_0090c610();
  if (cVar2 == '\0') goto LAB_0098dac0;
  pcStack_44c = (char *)&local_320;
  ppuStack_450 = (undefined4 **)0x98cf77;
  (**(code **)(*param_1 + 0x2c))();
  ppuStack_450 = (undefined4 **)0x98cf81;
  iVar4 = (**(code **)(*param_1 + 0x30))();
  if (iVar4 != 6) goto LAB_0098dac0;
  iVar4 = uStack_31e._1_1_ - 0x38;
  if (iVar4 == 0) {
    iVar4 = (byte)uStack_31c - 0x39;
    if (iVar4 != 0) goto LAB_0098cfb1;
    iVar4 = uStack_31c._1_1_ - 0x61;
    if (iVar4 != 0) goto LAB_0098cfb1;
  }
  else {
LAB_0098cfb1:
    if ((int)(iVar4 >> 0x1f | 1U) < 0) {
      local_42b = '\0';
    }
  }
  pcStack_44c = (char *)&local_320;
  ppuStack_450 = (undefined4 **)0x98cfd2;
  (**(code **)(*param_1 + 0x2c))();
  ppuStack_450 = (undefined4 **)0x98cfdc;
  iVar4 = (**(code **)(*param_1 + 0x30))();
  if (iVar4 == 7) {
    *(uint *)(param_1_00 + 8) = (uint)local_320;
    *(uint *)(param_1_00 + 0xc) = (uint)uStack_31e;
    if ((local_42b == '\0') || ((local_320 != 0 && (uStack_31e != 0)))) {
      if ((char)(byte)uStack_31c < '\0') {
        uVar15 = (uint)uStack_31c._1_1_;
        local_400 = 2 << ((byte)uStack_31c & 7);
        pcStack_44c = (char *)&uStack_310;
        iVar4 = local_400 * 3;
        ppuStack_450 = (undefined4 **)0x98d06a;
        (**(code **)(*param_1 + 0x2c))();
        ppuStack_450 = (undefined4 **)0x98d074;
        iVar5 = (**(code **)(*param_1 + 0x30))();
        if (iVar5 != iVar4) goto LAB_0098dac0;
        iVar4 = uVar15 * 3;
        uStack_418 = (undefined4 *)
                     CONCAT31(uStack_418._1_3_,*(undefined *)((int)&uStack_310 + iVar4 + 2));
        uStack_41c = (int *)CONCAT31(uStack_41c._1_3_,*(undefined *)((int)&uStack_310 + iVar4));
        uStack_420 = (int *)CONCAT31(uStack_420._1_3_,*(undefined *)((int)&uStack_310 + iVar4 + 1));
        pcStack_44c = (char *)uStack_418;
        ppuStack_450 = (undefined4 **)uStack_420;
        pcStack_454 = (char *)uStack_41c;
        uStack_458 = 0x98d0bf;
        (**(code **)(*(int *)(param_1_00 + 0x14) + 0x28))();
      }
      uStack_410 = 0xffffffff;
      uStack_418 = (undefined4 *)0xffffffff;
      uStack_420 = (int *)0xffffffff;
      uStack_32c = 7;
      uStack_330 = 0;
      uStack_340 = 0;
      uStack_328 = 0;
      uStack_4 = 0;
      cStack_42a = '\0';
      iVar4 = local_424;
      do {
        while( true ) {
          while( true ) {
            cVar2 = FUN_00882fb0();
            cStack_429 = cVar2;
            cVar3 = (**(code **)(*param_1 + 0x38))();
            if (cVar3 != '\0') goto LAB_0098d130;
            if (cVar2 != '!') break;
            iVar5 = FUN_00882fb0();
            if (iVar5 == 0xf9) {
              pcStack_44c = (char *)&local_320;
              ppuStack_450 = (undefined4 **)0x98d6fc;
              (**(code **)(*param_1 + 0x2c))();
              ppuStack_450 = (undefined4 **)0x98d706;
              iVar5 = (**(code **)(*param_1 + 0x30))();
              if (iVar5 != 6) goto LAB_0098d944;
              uStack_420 = (int *)((uint)uStack_31e * 10);
              if ((local_320 & 0x100) == 0) {
                uStack_418 = (undefined4 *)((local_320._1_1_ >> 2 & 7) - 1);
                uStack_410 = 0xffffffff;
              }
              else {
                uStack_410 = (uint)(byte)uStack_31c;
                uStack_418 = (undefined4 *)((local_320._1_1_ >> 2 & 7) - 1);
              }
            }
            else if (iVar5 == 0xfe) {
              iVar5 = FUN_00882fb0();
              while (iVar5 != 0) {
                cVar2 = (**(code **)(*param_1 + 0x38))();
                if (cVar2 != '\0') goto LAB_0098d130;
                pcStack_44c = (char *)0x98d5bd;
                FUN_0084aa50();
                pcStack_44c = (char *)*ppvStack_428;
                uStack_4._0_1_ = 1;
                ppuStack_450 = (undefined4 **)0x98d5d7;
                (**(code **)(*param_1 + 0x2c))();
                ppuStack_450 = (undefined4 **)0x98d5e1;
                iVar9 = (**(code **)(*param_1 + 0x30))();
                if (iVar9 != iVar5) {
                  uStack_4 = (uint)uStack_4._1_3_ << 8;
                  thunk_FUN_0043c1dd();
                  goto LAB_0098d130;
                }
                pcStack_44c = (char *)&ppvStack_414;
                ppuStack_450 = (undefined4 **)0x98d600;
                puVar8 = (undefined4 *)FUN_00862440();
                pcStack_44c = *(char **)*puVar8;
                ppuStack_450 = apuStack_3f8;
                uStack_4._0_1_ = 2;
                pcStack_454 = (char *)0x98d61b;
                FUN_00820ebc();
                pcStack_44c = (char *)apuStack_3f8[0];
                ppuStack_450 = (undefined4 **)0x98d634;
                FUN_00473ccc();
                uStack_4 = CONCAT31(uStack_4._1_3_,1);
                ppvVar12 = (void **)FUN_00850350();
                if (ppvStack_414 != ppvVar12) {
                  *(short *)(ppvStack_414 + 2) = *(short *)(ppvStack_414 + 2) + -1;
                  if (*(short *)(ppvStack_414 + 2) == 0) {
                    if (*(char *)((int)ppvStack_414 + 10) != '\0') {
                      pcStack_44c = (char *)0x98d66d;
                      _free(*ppvStack_414);
                    }
                    // WARNING: Subroutine does not return
                    pcStack_44c = &UNK_0098d676;
                    FUN_00a3f6a1();
                  }
                  ppvStack_414 = (void **)FUN_00850350();
                }
                iVar5 = FUN_00882fb0();
                uStack_4 = uStack_4 & 0xffffff00;
                ppvVar12 = (void **)FUN_00850350();
                if (ppvStack_428 != ppvVar12) {
                  *(short *)(ppvStack_428 + 2) = *(short *)(ppvStack_428 + 2) + -1;
                  if (*(short *)(ppvStack_428 + 2) == 0) {
                    if (*(char *)((int)ppvStack_428 + 10) != '\0') {
                      pcStack_44c = (char *)0x98d6c4;
                      _free(*ppvStack_428);
                    }
                    // WARNING: Subroutine does not return
                    pcStack_44c = &UNK_0098d6cd;
                    FUN_00a3f6a1();
                  }
                  ppvStack_428 = (void **)FUN_00850350();
                }
              }
            }
            else {
              piVar14 = (int *)FUN_00882fb0();
              while (piVar14 != (int *)0x0) {
                cVar2 = (**(code **)(*param_1 + 0x38))();
                if ((cVar2 != '\0') || (iVar5 = (**(code **)(*param_1 + 0x30))(), iVar5 == 0))
                goto LAB_0098d130;
                pcStack_44c = (char *)((int)piVar14 >> 0x1f);
                pcStack_454 = (char *)0x98d575;
                ppuStack_450 = (undefined4 **)piVar14;
                lVar17 = (**(code **)(*param_1 + 0x3c))();
                if (lVar17 == -1) goto LAB_0098d130;
                piVar14 = (int *)FUN_00882fb0();
              }
            }
          }
          if (cVar2 == ',') break;
          if (cVar2 == ';') goto LAB_0098d130;
        }
        pcStack_44c = (char *)0x98d19e;
        pvVar6 = operator_new(0x4c);
        if (pvVar6 == (void *)0x0) {
          uStack_41c = (int *)0x0;
        }
        else {
          uStack_41c = (int *)FUN_0098c810();
        }
        piVar14 = uStack_41c;
        ppuStack_450 = (undefined4 **)&uStack_40c;
        pcStack_454 = (char *)0x98d1ce;
        pcStack_44c = (char *)iVar4;
        piStack_430 = uStack_41c;
        FUN_009873f0();
        uStack_4._0_1_ = 4;
        if (piVar14 == (int *)0x0) {
LAB_0098d78d:
          uStack_4 = CONCAT31(uStack_4._1_3_,3);
          pcStack_44c = (char *)0x98d79a;
          FUN_008f9640();
          FUN_0098c850();
          FUN_0040159c();
          goto LAB_0098dac0;
        }
        pcStack_44c = (char *)&local_320;
        ppuStack_450 = (undefined4 **)0x98d1f5;
        (**(code **)(*param_1 + 0x2c))();
        ppuStack_450 = (undefined4 **)0x98d1ff;
        iVar5 = (**(code **)(*param_1 + 0x30))();
        if (iVar5 != 9) {
LAB_0098d8d3:
          uStack_4 = CONCAT31(uStack_4._1_3_,3);
          pcStack_44c = (char *)0x98d8e0;
          FUN_008f9640();
          FUN_0098c850();
          FUN_0040159c();
          goto LAB_0098dac0;
        }
        iVar5 = FUN_0098bf10();
        if ((int *)(iVar5 + 0x28) != &iStack_344) {
          pcStack_44c = (char *)0x0;
          pcStack_454 = (char *)0x98d22d;
          ppuStack_450 = (undefined4 **)&iStack_344;
          FID_conflict_assign();
        }
        FUN_00432156();
        uVar15 = (uint)local_320;
        iVar5 = FUN_0098bf10();
        *(uint *)(iVar5 + 8) = uVar15;
        uVar15 = (uint)uStack_31e;
        iVar5 = FUN_0098bf10();
        *(uint *)(iVar5 + 0xc) = uVar15;
        uVar15 = (uint)uStack_31c;
        puVar7 = (uint *)FUN_0098bf10();
        *puVar7 = uVar15;
        uVar15 = (uint)uStack_31a;
        iVar5 = FUN_0098bf10();
        *(uint *)(iVar5 + 4) = uVar15;
        if (local_42b != '\0') {
          if (*(int *)(iVar4 + 0x10) == 0) {
            puVar7 = (uint *)FUN_0098bf10();
            if (*(uint *)(iVar4 + 8) < *puVar7) {
              puVar8 = (undefined4 *)FUN_0098bf10();
              *(undefined4 *)(iVar4 + 8) = *puVar8;
            }
            iVar5 = FUN_0098bf10();
            if (*(uint *)(iVar4 + 0xc) < *(uint *)(iVar5 + 4)) {
              iVar5 = FUN_0098bf10();
              *(undefined4 *)(iVar4 + 0xc) = *(undefined4 *)(iVar5 + 4);
            }
          }
          else {
            piVar14 = (int *)FUN_0098bf10();
            if ((((*piVar14 == 0) ||
                 (puVar7 = (uint *)FUN_0098bf10(), *(uint *)(iVar4 + 8) < *puVar7)) ||
                (iVar5 = FUN_0098bf10(), *(int *)(iVar5 + 4) == 0)) ||
               (iVar5 = FUN_0098bf10(), *(uint *)(iVar4 + 0xc) < *(uint *)(iVar5 + 4))) {
              puStack_3fc = auStack_468;
              FUN_0043c211(&DAT_00d25fa0);
              cVar2 = FUN_00846b30(1);
              if (cVar2 != '\0') {
                pcStack_44c = (char *)0x98d7f4;
                FUN_004325b6();
                uStack_4._0_1_ = 5;
                pcStack_44c = (char *)0x98d80a;
                FUN_0043c211();
                pcStack_44c = auStack_3dc;
                uStack_4._0_1_ = 6;
                ppuStack_450 = (undefined4 **)0x98d824;
                FUN_00820bf9();
                pcStack_44c = (char *)0x98d831;
                FUN_008433c0();
                pcStack_44c = "wxGIFDecoder::LoadGIF";
                ppuStack_450 = (undefined4 **)0x333;
                pcStack_454 = "..\\..\\src\\common\\gifdecod.cpp";
                uStack_458 = 1;
                uStack_4._0_1_ = 7;
                uStack_45c = 0x98d85b;
                FUN_008423d0();
                uStack_4._0_1_ = 8;
                ppiVar13 = (int **)FUN_0098bf10();
                pcStack_44c = (char *)0x98d881;
                iVar4 = FUN_0098bf10();
                pcStack_44c = *(char **)(iVar4 + 4);
                ppuStack_450 = (undefined4 **)*ppiVar13;
                pcStack_454 = (char *)aiStack_3f0;
                uStack_458 = 0x98d894;
                FUN_0098ce80();
                uStack_4._0_1_ = 7;
                FUN_00842440();
                uStack_4._0_1_ = 6;
                FUN_0081b5bc();
                FUN_0040159c();
                FUN_0040159c();
              }
              goto LAB_0098d8d3;
            }
          }
        }
        bVar1 = bStack_318 >> 6;
        iVar4 = FUN_0098bf10();
        piVar14 = (int *)FUN_0098bf10();
        iVar4 = *(int *)(iVar4 + 4);
        iVar5 = *piVar14;
        iVar9 = FUN_0098bf10();
        *(uint *)(iVar9 + 0x10) = uStack_410;
        iVar9 = FUN_0098bf10();
        *(undefined4 **)(iVar9 + 0x14) = uStack_418;
        iVar9 = FUN_0098bf10();
        *(int **)(iVar9 + 0x18) = uStack_420;
        pcStack_44c = (char *)0x98d3b5;
        pvVar6 = _malloc(iVar4 * iVar5);
        iVar4 = FUN_0098bf10();
        *(void **)(iVar4 + 0x1c) = pvVar6;
        pcStack_44c = (char *)0x98d3d0;
        pvVar6 = _malloc(0x300);
        iVar4 = FUN_0098bf10();
        *(void **)(iVar4 + 0x20) = pvVar6;
        iVar4 = FUN_0098bf10();
        if ((*(int *)(iVar4 + 0x1c) == 0) || (iVar4 = FUN_0098bf10(), *(int *)(iVar4 + 0x20) == 0))
        goto LAB_0098d78d;
        if ((char)bStack_318 < '\0') {
          iVar4 = *param_1;
          iVar9 = 2 << (bStack_318 & 7);
          puStack_3fc = (undefined *)(iVar9 * 3);
          pcStack_44c = (char *)0x98d436;
          iVar5 = FUN_0098bf10();
          pcStack_44c = *(char **)(iVar5 + 0x20);
          ppuStack_450 = (undefined4 **)0x98d440;
          (**(code **)(iVar4 + 0x2c))();
          ppuStack_450 = (undefined4 **)0x98d449;
          iVar4 = FUN_0098bf10();
          *(int *)(iVar4 + 0x24) = iVar9;
          ppuStack_450 = (undefined4 **)0x98d456;
          puVar10 = (undefined *)(**(code **)(*param_1 + 0x30))();
          if (puVar10 != puStack_3fc) goto LAB_0098d8d3;
        }
        else {
          iVar4 = FUN_0098bf10();
          puVar8 = &uStack_310;
          puVar16 = *(undefined4 **)(iVar4 + 0x20);
          for (iVar5 = 0xc0; iVar5 != 0; iVar5 = iVar5 + -1) {
            *puVar16 = *puVar8;
            puVar8 = puVar8 + 1;
            puVar16 = puVar16 + 1;
          }
          iVar4 = FUN_0098bf10();
          *(int *)(iVar4 + 0x24) = local_400;
        }
        iVar5 = FUN_00882fb0();
        piVar14 = uStack_41c;
        iVar4 = local_424;
        if (iVar5 == 0) goto LAB_0098d8d3;
        ppuStack_450 = (undefined4 **)uStack_41c;
        pcStack_454 = (char *)param_1;
        uStack_458 = 0x98d4b2;
        pcStack_44c = (char *)(bVar1 & 1);
        piVar11 = (int *)FUN_0098c010();
        if (piVar11 != (int *)0x0) {
          uStack_4 = CONCAT31(uStack_4._1_3_,3);
          pcStack_44c = (char *)0x98d91b;
          FUN_008f9640();
          FUN_0098c850();
          FUN_0040159c();
          goto LAB_0098dac0;
        }
        pcStack_44c = (char *)piVar14;
        uStack_40c = 1;
        ppuStack_450 = (undefined4 **)0x98d4d0;
        piStack_430 = piVar11;
        FUN_0086a400();
        *(int *)(iVar4 + 0x10) = *(int *)(iVar4 + 0x10) + 1;
        if (local_42b == '\0') {
          cStack_42a = '\x01';
        }
        uStack_4._0_1_ = 3;
        pcStack_44c = (char *)0x98d4f1;
        FUN_008f9640();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_0098c850();
      } while (cStack_42a == '\0');
LAB_0098d130:
      if (*(int *)(local_424 + 0x10) == 0) {
LAB_0098d944:
        FUN_0098c8b0();
        FUN_0040159c();
      }
      else if (cStack_429 == ';') {
LAB_0098dab2:
        FUN_0040159c();
      }
      else {
        do {
          while( true ) {
            while( true ) {
              cVar2 = (**(code **)(*param_1 + 0x10))();
              if (cVar2 == '\0') goto LAB_0098d181;
              cVar2 = FUN_00882fb0();
              if (cVar2 != '!') break;
              FUN_00882fb0();
              piVar14 = (int *)FUN_00882fb0();
              while (piVar14 != (int *)0x0) {
                cVar2 = (**(code **)(*param_1 + 0x38))();
                if ((cVar2 != '\0') || (iVar4 = (**(code **)(*param_1 + 0x30))(), iVar4 == 0))
                goto LAB_0098d944;
                pcStack_44c = (char *)((int)piVar14 >> 0x1f);
                pcStack_454 = (char *)0x98da95;
                ppuStack_450 = (undefined4 **)piVar14;
                lVar17 = (**(code **)(*param_1 + 0x3c))();
                if (lVar17 == -1) goto LAB_0098d944;
                piVar14 = (int *)FUN_00882fb0();
              }
            }
            if (cVar2 != ',') break;
            pcStack_44c = (char *)&local_320;
            ppuStack_450 = (undefined4 **)0x98d975;
            (**(code **)(*param_1 + 0x2c))();
            ppuStack_450 = (undefined4 **)0x98d97f;
            iVar4 = (**(code **)(*param_1 + 0x30))();
            if (iVar4 != 9) goto LAB_0098d944;
            if ((char)bStack_318 < '\0') {
              pcStack_44c = (char *)0x0;
              ppuStack_450 = (undefined4 **)((2 << (bStack_318 & 7)) * 3);
              pcStack_454 = (char *)0x98d9af;
              lVar17 = (**(code **)(*param_1 + 0x3c))();
              if (lVar17 == -1) goto LAB_0098d944;
            }
            FUN_00882fb0();
            cVar2 = (**(code **)(*param_1 + 0x38))();
            if ((cVar2 != '\0') || (iVar4 = (**(code **)(*param_1 + 0x30))(), iVar4 == 0))
            goto LAB_0098d944;
            piVar14 = (int *)FUN_00882fb0();
            while (piVar14 != (int *)0x0) {
              cVar2 = (**(code **)(*param_1 + 0x38))();
              if ((cVar2 != '\0') || (iVar4 = (**(code **)(*param_1 + 0x30))(), iVar4 == 0))
              goto LAB_0098d944;
              pcStack_44c = (char *)((int)piVar14 >> 0x1f);
              pcStack_454 = (char *)0x98da27;
              ppuStack_450 = (undefined4 **)piVar14;
              lVar17 = (**(code **)(*param_1 + 0x3c))();
              if (lVar17 == -1) goto LAB_0098d944;
              piVar14 = (int *)FUN_00882fb0();
            }
          }
          if (cVar2 == ';') goto LAB_0098dab2;
        } while (cVar2 == '\0');
LAB_0098d181:
        FUN_0040159c();
      }
    }
  }
LAB_0098dac0:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



bool FUN_0098daf0(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_0098cf00(param_1);
  return iVar1 == 0;
}



undefined ** FUN_0098db10(void)

{
  return &PTR_u_wxUxThemeModule_0323bc98;
}



void FUN_0098db20(void)

{
  int iVar1;
  
  iVar1 = DAT_032e14b8;
  if (DAT_032e14b8 != 0) {
    DAT_032e14b8 = 0;
    DAT_0323bc94 = 0;
    if (*(int *)(iVar1 + 0xbc) != 0) {
      FUN_0089f290(*(int *)(iVar1 + 0xbc));
      *(undefined4 *)(iVar1 + 0xbc) = 0;
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



undefined4 * FUN_0098db70(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxUxThemeModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 __fastcall FUN_0098dbd0(int *param_1)

{
  undefined uVar1;
  char cVar2;
  int iVar3;
  DWORD DVar4;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1998;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar3 = FUN_008fc6f0(DAT_0323f878 ^ (uint)&stack0xffffffbc);
  uVar1 = DAT_03235e94;
  if (599 < iVar3) {
    if ((DAT_032bdb68 == 0) || (DVar4 = GetCurrentThreadId(), DVar4 == DAT_032bdb68)) {
      uVar1 = DAT_03235e94;
      DAT_03235e94 = 0;
    }
    else {
      uVar1 = FUN_00842f30(0);
    }
    local_4 = 0;
    FUN_004325b6(L"uxtheme.dll");
    local_4._0_1_ = 1;
    cVar2 = FUN_0089ed30(local_30,2);
    local_4._0_1_ = 0;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    if (cVar2 != '\0') {
      FUN_004325b6(L"OpenThemeData");
      local_4._0_1_ = 2;
      iVar3 = FUN_0089f060(local_30,0);
      *param_1 = iVar3;
      local_4._0_1_ = 0;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
      if (*param_1 != 0) {
        FUN_004325b6(L"CloseThemeData");
        local_4._0_1_ = 3;
        iVar3 = FUN_0089f060(local_30,0);
        param_1[1] = iVar3;
        local_4._0_1_ = 0;
        FUN_0040159c();
        if (param_1[1] != 0) {
          FUN_004325b6(L"DrawThemeBackground");
          local_4._0_1_ = 4;
          iVar3 = FUN_0089f060(local_30,0);
          param_1[2] = iVar3;
          local_4._0_1_ = 0;
          FUN_0040159c();
          if (param_1[2] != 0) {
            FUN_004325b6(L"DrawThemeText");
            local_4._0_1_ = 5;
            iVar3 = FUN_0089f060(local_30,0);
            param_1[3] = iVar3;
            local_4._0_1_ = 0;
            FUN_0040159c();
            if (param_1[3] != 0) {
              FUN_004325b6(L"GetThemeBackgroundContentRect");
              local_4._0_1_ = 6;
              iVar3 = FUN_0089f060(local_30,0);
              param_1[4] = iVar3;
              local_4._0_1_ = 0;
              FUN_0040159c();
              if (param_1[4] != 0) {
                FUN_004325b6(L"GetThemeBackgroundExtent");
                local_4._0_1_ = 7;
                iVar3 = FUN_0089f060(local_30,0);
                param_1[5] = iVar3;
                local_4._0_1_ = 0;
                FUN_0040159c();
                if (param_1[5] != 0) {
                  FUN_004325b6(L"GetThemePartSize");
                  local_4._0_1_ = 8;
                  iVar3 = FUN_0089f060(local_30,0);
                  param_1[6] = iVar3;
                  local_4._0_1_ = 0;
                  FUN_0040159c();
                  if (param_1[6] != 0) {
                    FUN_004325b6(L"GetThemeTextExtent");
                    local_4._0_1_ = 9;
                    iVar3 = FUN_0089f060(local_30,0);
                    param_1[7] = iVar3;
                    local_4._0_1_ = 0;
                    FUN_0040159c();
                    if (param_1[7] != 0) {
                      FUN_004325b6(L"GetThemeTextMetrics");
                      local_4._0_1_ = 10;
                      iVar3 = FUN_0089f060(local_30,0);
                      param_1[8] = iVar3;
                      local_4._0_1_ = 0;
                      FUN_0040159c();
                      if (param_1[8] != 0) {
                        FUN_004325b6(L"GetThemeBackgroundRegion");
                        local_4._0_1_ = 0xb;
                        iVar3 = FUN_0089f060(local_30,0);
                        param_1[9] = iVar3;
                        local_4._0_1_ = 0;
                        FUN_0040159c();
                        if (param_1[9] != 0) {
                          FUN_004325b6(L"HitTestThemeBackground");
                          local_4._0_1_ = 0xc;
                          iVar3 = FUN_0089f060(local_30,0);
                          param_1[10] = iVar3;
                          local_4._0_1_ = 0;
                          FUN_0040159c();
                          if (param_1[10] != 0) {
                            FUN_004325b6(L"DrawThemeEdge");
                            local_4._0_1_ = 0xd;
                            iVar3 = FUN_0089f060(local_30,0);
                            param_1[0xb] = iVar3;
                            local_4._0_1_ = 0;
                            FUN_0040159c();
                            if (param_1[0xb] != 0) {
                              FUN_004325b6(L"DrawThemeIcon");
                              local_4._0_1_ = 0xe;
                              iVar3 = FUN_0089f060(local_30,0);
                              param_1[0xc] = iVar3;
                              local_4._0_1_ = 0;
                              FUN_0040159c();
                              if (param_1[0xc] != 0) {
                                FUN_004325b6(L"IsThemePartDefined");
                                local_4._0_1_ = 0xf;
                                iVar3 = FUN_0089f060(local_30,0);
                                param_1[0xd] = iVar3;
                                local_4._0_1_ = 0;
                                FUN_0040159c();
                                if (param_1[0xd] != 0) {
                                  FUN_004325b6(L"IsThemeBackgroundPartiallyTransparent");
                                  local_4._0_1_ = 0x10;
                                  iVar3 = FUN_0089f060(local_30,0);
                                  param_1[0xe] = iVar3;
                                  local_4._0_1_ = 0;
                                  FUN_0040159c();
                                  if (param_1[0xe] != 0) {
                                    FUN_004325b6(L"GetThemeColor");
                                    local_4._0_1_ = 0x11;
                                    iVar3 = FUN_0089f060(local_30,0);
                                    param_1[0xf] = iVar3;
                                    local_4._0_1_ = 0;
                                    FUN_0040159c();
                                    if (param_1[0xf] != 0) {
                                      FUN_004325b6(L"GetThemeMetric");
                                      local_4._0_1_ = 0x12;
                                      iVar3 = FUN_0089f060(local_30,0);
                                      param_1[0x10] = iVar3;
                                      local_4._0_1_ = 0;
                                      FUN_0040159c();
                                      if (param_1[0x10] != 0) {
                                        FUN_004325b6(L"GetThemeString");
                                        local_4._0_1_ = 0x13;
                                        iVar3 = FUN_0089f060(local_30,0);
                                        param_1[0x11] = iVar3;
                                        local_4._0_1_ = 0;
                                        FUN_0040159c();
                                        if (param_1[0x11] != 0) {
                                          FUN_004325b6(L"GetThemeBool");
                                          local_4._0_1_ = 0x14;
                                          iVar3 = FUN_0089f060(local_30,0);
                                          param_1[0x12] = iVar3;
                                          local_4._0_1_ = 0;
                                          FUN_0040159c();
                                          if (param_1[0x12] != 0) {
                                            FUN_004325b6(L"GetThemeInt");
                                            local_4._0_1_ = 0x15;
                                            iVar3 = FUN_0089f060(local_30,0);
                                            param_1[0x13] = iVar3;
                                            local_4._0_1_ = 0;
                                            FUN_0040159c();
                                            if (param_1[0x13] != 0) {
                                              FUN_004325b6(L"GetThemeEnumValue");
                                              local_4._0_1_ = 0x16;
                                              iVar3 = FUN_0089f060(local_30,0);
                                              param_1[0x14] = iVar3;
                                              local_4._0_1_ = 0;
                                              FUN_0040159c();
                                              if (param_1[0x14] != 0) {
                                                FUN_004325b6(L"GetThemePosition");
                                                local_4._0_1_ = 0x17;
                                                iVar3 = FUN_0089f060(local_30,0);
                                                param_1[0x15] = iVar3;
                                                local_4._0_1_ = 0;
                                                FUN_0040159c();
                                                if (param_1[0x15] != 0) {
                                                  FUN_004325b6(L"GetThemeFont");
                                                  local_4._0_1_ = 0x18;
                                                  iVar3 = FUN_0089f060(local_30,0);
                                                  param_1[0x16] = iVar3;
                                                  local_4._0_1_ = 0;
                                                  FUN_0040159c();
                                                  if (param_1[0x16] != 0) {
                                                    FUN_004325b6(L"GetThemeRect");
                                                    local_4._0_1_ = 0x19;
                                                    iVar3 = FUN_0089f060(local_30,0);
                                                    param_1[0x17] = iVar3;
                                                    local_4._0_1_ = 0;
                                                    FUN_0040159c();
                                                    if (param_1[0x17] != 0) {
                                                      FUN_004325b6(L"GetThemeMargins");
                                                      local_4._0_1_ = 0x1a;
                                                      iVar3 = FUN_0089f060(local_30,0);
                                                      param_1[0x18] = iVar3;
                                                      local_4._0_1_ = 0;
                                                      FUN_0040159c();
                                                      if (param_1[0x18] != 0) {
                                                        FUN_004325b6(L"GetThemeIntList");
                                                        local_4._0_1_ = 0x1b;
                                                        iVar3 = FUN_0089f060(local_30,0);
                                                        param_1[0x19] = iVar3;
                                                        local_4._0_1_ = 0;
                                                        FUN_0040159c();
                                                        if (param_1[0x19] != 0) {
                                                          FUN_004325b6(L"GetThemePropertyOrigin");
                                                          local_4._0_1_ = 0x1c;
                                                          iVar3 = FUN_0089f060(local_30,0);
                                                          param_1[0x1a] = iVar3;
                                                          local_4._0_1_ = 0;
                                                          FUN_0040159c();
                                                          if (param_1[0x1a] != 0) {
                                                            FUN_004325b6(L"SetWindowTheme");
                                                            local_4._0_1_ = 0x1d;
                                                            iVar3 = FUN_0089f060(local_30,0);
                                                            param_1[0x1b] = iVar3;
                                                            local_4._0_1_ = 0;
                                                            FUN_0040159c();
                                                            if (param_1[0x1b] != 0) {
                                                              FUN_004325b6(L"GetThemeFilename");
                                                              local_4._0_1_ = 0x1e;
                                                              iVar3 = FUN_0089f060(local_30,0);
                                                              param_1[0x1c] = iVar3;
                                                              local_4._0_1_ = 0;
                                                              FUN_0040159c();
                                                              if (param_1[0x1c] != 0) {
                                                                FUN_004325b6(L"GetThemeSysColor");
                                                                local_4._0_1_ = 0x1f;
                                                                iVar3 = FUN_0089f060(local_30,0);
                                                                param_1[0x1d] = iVar3;
                                                                local_4._0_1_ = 0;
                                                                FUN_0040159c();
                                                                if (param_1[0x1d] != 0) {
                                                                  FUN_004325b6(
                                                  L"GetThemeSysColorBrush");
                                                  local_4._0_1_ = 0x20;
                                                  iVar3 = FUN_0089f060(local_30,0);
                                                  param_1[0x1e] = iVar3;
                                                  local_4._0_1_ = 0;
                                                  FUN_0040159c();
                                                  if (param_1[0x1e] != 0) {
                                                    FUN_004325b6(L"GetThemeSysBool");
                                                    local_4._0_1_ = 0x21;
                                                    iVar3 = FUN_0089f060(local_30,0);
                                                    param_1[0x1f] = iVar3;
                                                    local_4._0_1_ = 0;
                                                    FUN_0040159c();
                                                    if (param_1[0x1f] != 0) {
                                                      FUN_004325b6(L"GetThemeSysSize");
                                                      local_4._0_1_ = 0x22;
                                                      iVar3 = FUN_0089f060(local_30,0);
                                                      param_1[0x20] = iVar3;
                                                      local_4._0_1_ = 0;
                                                      FUN_0040159c();
                                                      if (param_1[0x20] != 0) {
                                                        FUN_004325b6(L"GetThemeSysFont");
                                                        local_4._0_1_ = 0x23;
                                                        iVar3 = FUN_0089f060(local_30,0);
                                                        param_1[0x21] = iVar3;
                                                        local_4._0_1_ = 0;
                                                        FUN_0040159c();
                                                        if (param_1[0x21] != 0) {
                                                          FUN_004325b6(L"GetThemeSysString");
                                                          local_4._0_1_ = 0x24;
                                                          iVar3 = FUN_0089f060(local_30,0);
                                                          param_1[0x22] = iVar3;
                                                          local_4._0_1_ = 0;
                                                          FUN_0040159c();
                                                          if (param_1[0x22] != 0) {
                                                            FUN_004325b6(L"GetThemeSysInt");
                                                            local_4._0_1_ = 0x25;
                                                            iVar3 = FUN_0089f060(local_30,0);
                                                            param_1[0x23] = iVar3;
                                                            local_4._0_1_ = 0;
                                                            FUN_0040159c();
                                                            if (param_1[0x23] != 0) {
                                                              FUN_004325b6(L"IsThemeActive");
                                                              local_4._0_1_ = 0x26;
                                                              iVar3 = FUN_0089f060(local_30,0);
                                                              param_1[0x24] = iVar3;
                                                              local_4._0_1_ = 0;
                                                              FUN_0040159c();
                                                              if (param_1[0x24] != 0) {
                                                                FUN_004325b6(L"IsAppThemed");
                                                                local_4._0_1_ = 0x27;
                                                                iVar3 = FUN_0089f060(local_30,0);
                                                                param_1[0x25] = iVar3;
                                                                local_4._0_1_ = 0;
                                                                FUN_0040159c();
                                                                if (param_1[0x25] != 0) {
                                                                  FUN_004325b6(L"GetWindowTheme");
                                                                  local_4._0_1_ = 0x28;
                                                                  iVar3 = FUN_0089f060(local_30,0);
                                                                  param_1[0x26] = iVar3;
                                                                  local_4._0_1_ = 0;
                                                                  FUN_0040159c();
                                                                  if (param_1[0x26] != 0) {
                                                                    FUN_004325b6(
                                                  L"EnableThemeDialogTexture");
                                                  local_4._0_1_ = 0x29;
                                                  iVar3 = FUN_0089f060(local_30,0);
                                                  param_1[0x27] = iVar3;
                                                  local_4._0_1_ = 0;
                                                  FUN_0040159c();
                                                  if (param_1[0x27] != 0) {
                                                    FUN_004325b6(L"IsThemeDialogTextureEnabled");
                                                    local_4._0_1_ = 0x2a;
                                                    iVar3 = FUN_0089f060(local_30,0);
                                                    param_1[0x28] = iVar3;
                                                    local_4._0_1_ = 0;
                                                    FUN_0040159c();
                                                    if (param_1[0x28] != 0) {
                                                      FUN_004325b6(L"GetThemeAppProperties");
                                                      local_4._0_1_ = 0x2b;
                                                      iVar3 = FUN_0089f060(local_30,0);
                                                      param_1[0x29] = iVar3;
                                                      local_4._0_1_ = 0;
                                                      FUN_0040159c();
                                                      if (param_1[0x29] != 0) {
                                                        FUN_004325b6(L"SetThemeAppProperties");
                                                        local_4._0_1_ = 0x2c;
                                                        iVar3 = FUN_0089f060(local_30,0);
                                                        param_1[0x2a] = iVar3;
                                                        local_4._0_1_ = 0;
                                                        FUN_0040159c();
                                                        if (param_1[0x2a] != 0) {
                                                          FUN_004325b6(L"GetCurrentThemeName");
                                                          local_4._0_1_ = 0x2d;
                                                          iVar3 = FUN_0089f060(local_30,0);
                                                          param_1[0x2b] = iVar3;
                                                          local_4._0_1_ = 0;
                                                          FUN_0040159c();
                                                          if (param_1[0x2b] != 0) {
                                                            FUN_004325b6(
                                                  L"GetThemeDocumentationProperty");
                                                  local_4._0_1_ = 0x2e;
                                                  iVar3 = FUN_0089f060(local_30,0);
                                                  param_1[0x2c] = iVar3;
                                                  local_4._0_1_ = 0;
                                                  FUN_0040159c();
                                                  if (param_1[0x2c] != 0) {
                                                    FUN_004325b6(L"DrawThemeParentBackground");
                                                    local_4._0_1_ = 0x2f;
                                                    iVar3 = FUN_0089f060(local_30,0);
                                                    param_1[0x2d] = iVar3;
                                                    local_4._0_1_ = 0;
                                                    FUN_0040159c();
                                                    if (param_1[0x2d] != 0) {
                                                      FUN_004325b6(L"EnableTheming");
                                                      local_4 = CONCAT31(local_4._1_3_,0x30);
                                                      iVar3 = FUN_0089f060(local_30,0);
                                                      param_1[0x2e] = iVar3;
                                                      FUN_0040159c();
                                                      local_4 = 0xffffffff;
                                                      if (param_1[0x2e] != 0) {
                                                        FUN_008192c6();
                                                        ExceptionList = local_c;
                                                        return 1;
                                                      }
                                                    }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
      local_4 = 0xffffffff;
      FUN_008192c6();
      ExceptionList = local_c;
      return 0;
    }
    local_4 = 0xffffffff;
    if ((DAT_032bdb68 != 0) && (DVar4 = GetCurrentThreadId(), DVar4 != DAT_032bdb68)) {
      FUN_00842f30(uVar1);
      ExceptionList = local_c;
      return 0;
    }
  }
  DAT_03235e94 = uVar1;
  ExceptionList = local_c;
  return 0;
}



void * FUN_0098e820(void)

{
  int *piVar1;
  int iVar2;
  void *pvVar3;
  char cVar4;
  
  if (DAT_0323bc94 != -1) {
    return DAT_032e14b8;
  }
  DAT_032e14b8 = operator_new(0xc0);
  if (DAT_032e14b8 == (void *)0x0) {
    DAT_032e14b8 = (void *)0x0;
  }
  else {
    *(undefined4 *)((int)DAT_032e14b8 + 0xbc) = 0;
  }
  cVar4 = FUN_0098dbd0();
  pvVar3 = DAT_032e14b8;
  if (cVar4 == '\0') {
    if (DAT_032e14b8 != (void *)0x0) {
      piVar1 = (int *)((int)DAT_032e14b8 + 0xbc);
      iVar2 = *piVar1;
      if (iVar2 != 0) {
        FUN_0089f290(iVar2);
        *piVar1 = 0;
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(pvVar3);
    }
    DAT_032e14b8 = (void *)0x0;
    DAT_0323bc94 = 0;
    return (void *)0x0;
  }
  DAT_0323bc94 = 1;
  return DAT_032e14b8;
}



undefined ** FUN_0098e8b0(void)

{
  return &PTR_u_wxToolTip_0323bce8;
}



undefined4 * __thiscall
FUN_0098e8c0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,int *param_3)

{
  int iVar1;
  
  _memset(param_1_00,0,0x30);
  *param_1_00 = 0x28;
  param_1_00[2] = param_1;
  if ((param_3[2] < 1) || (param_3[3] < 1)) {
    param_1_00[1] = 1;
    param_1_00[3] = param_1;
  }
  else {
    param_1_00[4] = *param_3;
    param_1_00[6] = param_3[2] + -1 + *param_3;
    param_1_00[5] = param_3[1];
    param_1_00[7] = param_3[3] + -1 + param_3[1];
    param_1_00[3] = param_2;
  }
  iVar1 = FUN_008fc6f0();
  if (0x1d5 < iVar1) {
    param_1_00[1] = param_1_00[1] | 0x100;
  }
  return param_1_00;
}



HWND FUN_0098e940(void)

{
  int iVar1;
  HINSTANCE hInstance;
  DWORD dwExStyle;
  LPVOID lpParam;
  
  if (DAT_032e14bc == (HWND)0x0) {
    dwExStyle = 0;
    iVar1 = (**(code **)(*DAT_032bcb68 + 0xe4))();
    if (iVar1 == 2) {
      dwExStyle = 0x400000;
    }
    lpParam = (LPVOID)0x0;
    hInstance = (HINSTANCE)FUN_008a65e0();
    DAT_032e14bc = CreateWindowExW(dwExStyle,L"tooltips_class32",(LPCWSTR)0x0,3,-0x80000000,
                                   -0x80000000,-0x80000000,-0x80000000,(HWND)0x0,(HMENU)0x0,
                                   hInstance,lpParam);
    if (DAT_032e14bc != (HWND)0x0) {
      SetWindowPos(DAT_032e14bc,(HWND)0xffffffff,0,0,0,0,0x13);
    }
  }
  return DAT_032e14bc;
}



void FUN_0098e9c0(LPARAM param_1)

{
  HWND hWnd;
  
  hWnd = (HWND)FUN_0098e940();
  if (hWnd != (HWND)0x0) {
    SendMessageW(hWnd,0x407,0,param_1);
  }
  return;
}



void FUN_0098e9e0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  HWND hWnd;
  undefined local_30 [48];
  
  FUN_0098e8c0(param_1,param_2,param_3);
  hWnd = (HWND)FUN_0098e940();
  if (hWnd != (HWND)0x0) {
    SendMessageW(hWnd,0x433,0,(LPARAM)local_30);
  }
  return;
}



void __thiscall FUN_0098eab0(int param_1_00,undefined4 *param_1)

{
  HWND hWnd;
  undefined local_30 [48];
  
  *(undefined4 *)(param_1_00 + 0x34) = *param_1;
  *(undefined4 *)(param_1_00 + 0x38) = param_1[1];
  *(undefined4 *)(param_1_00 + 0x3c) = param_1[2];
  *(undefined4 *)(param_1_00 + 0x40) = param_1[3];
  if (*(int *)(param_1_00 + 0x2c) != 0) {
    FUN_0098e8c0(*(undefined4 *)(*(int *)(param_1_00 + 0x2c) + 0x13c),
                 *(undefined4 *)(param_1_00 + 0x44),param_1_00 + 0x34);
    hWnd = (HWND)FUN_0098e940();
    if (hWnd != (HWND)0x0) {
      SendMessageW(hWnd,0x434,0,(LPARAM)local_30);
    }
  }
  return;
}



void __thiscall FUN_0098eb10(int param_1_00,code *param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  
  if (*(int *)(param_1_00 + 0x2c) != 0) {
    (*param_1)(*(undefined4 *)(*(int *)(param_1_00 + 0x2c) + 0x13c));
  }
  piVar1 = *(int **)(param_1_00 + 0x30);
  if ((piVar1 != (int *)0x0) && (puVar2 = (undefined4 *)piVar1[2], puVar2 != puVar2 + *piVar1)) {
    do {
      (*param_1)(*puVar2);
      puVar2 = puVar2 + 1;
    } while (puVar2 != (undefined4 *)
                       ((*(int **)(param_1_00 + 0x30))[2] + **(int **)(param_1_00 + 0x30) * 4));
  }
  return;
}



void __fastcall FUN_0098ebe0(undefined4 *param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be19d3;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxToolTip::vftable;
  local_4 = 1;
  FUN_0098eb10(&LAB_0098ea20);
  puVar1 = (undefined4 *)param_1[0xc];
  if (puVar1 != (undefined4 *)0x0) {
    _free((void *)puVar1[2]);
    puVar1[2] = 0;
    puVar1[1] = 0;
    *puVar1 = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar1);
  }
  _free((void *)param_1[9]);
  if (7 < (uint)param_1[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850(uVar2);
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_0098ecb0(undefined4 param_1_00,byte param_1)

{
  FUN_0098ebe0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_0098ecd0(undefined4 *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be19f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxToolTip::vftable;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[9] = 0;
  param_1_00[0xd] = 0;
  param_1_00[0xe] = 0;
  param_1_00[0xb] = 0;
  param_1_00[0xc] = 0;
  param_1_00[0xf] = 0;
  param_1_00[0x10] = 0;
  param_1_00[0x11] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_0098ed60(int param_1_00,int param_1)

{
  if (param_1_00 + 8 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  FUN_0098eb10(&LAB_0098eb60);
  return;
}



void __thiscall FUN_0098ed90(int param_1_00,undefined4 param_1)

{
  char cVar1;
  HWND pHVar2;
  LRESULT LVar3;
  int iVar4;
  HGDIOBJ pvVar5;
  HDC hdc;
  undefined4 ****lpString;
  BOOL BVar6;
  int iVar7;
  HDC__ HStack_1e0;
  undefined4 uStack_1dc;
  char *pcStack_1d8;
  tagSIZE *ptStack_1d4;
  char *pcStack_1d0;
  int local_1ac;
  HDC local_1a8;
  HDC__ *local_1a4;
  tagSIZE local_1a0 [3];
  uint local_188;
  undefined4 uStack_178;
  uint local_174;
  void *local_170;
  tagSIZE local_168 [2];
  undefined4 uStack_154;
  char *pcStack_14c;
  undefined4 uStack_148;
  char *pcStack_144;
  undefined *puStack_140;
  __time64_t _Stack_13c;
  DWORD DStack_134;
  undefined4 uStack_130;
  undefined2 uStack_128;
  undefined4 uStack_118;
  undefined4 uStack_114;
  undefined4 uStack_110;
  undefined local_104 [8];
  undefined4 local_fc;
  int local_e0;
  undefined4 ****local_80 [4];
  int local_70;
  uint local_6c;
  void *local_68;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1af6;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_1ac;
  ExceptionList = &local_c;
  FUN_0098e8c0();
  local_fc = param_1;
  local_1ac = param_1_00 + 8;
  if (*(uint *)(param_1_00 + 0x20) < 8) {
    local_e0 = param_1_00 + 0xc;
  }
  else {
    local_e0 = *(int *)(param_1_00 + 0xc);
  }
  pHVar2 = (HWND)FUN_0098e940();
  if (pHVar2 == (HWND)0x0) {
LAB_0098ee3f:
    local_1a8 = &HStack_1e0;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 == '\0') goto LAB_0098f62c;
    FUN_0081c0f1();
    local_1a8 = (HDC)&stack0xfffffe38;
    local_4 = 0;
    pcStack_1d0 = (char *)0x98ee8e;
    FUN_00432231();
    pcStack_1d0 = "wxToolTip::DoAddOtherWindow";
    ptStack_1d4 = (tagSIZE *)0x194;
    pcStack_1d8 = "..\\..\\src\\msw\\tooltip.cpp";
    uStack_1dc = 6;
    local_4._0_1_ = 1;
    HStack_1e0.unused = 0x98eeb8;
    FUN_008423d0();
    local_4._0_1_ = 3;
    pcStack_1d0 = (char *)0x98eed4;
    FUN_00848860();
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_00842440();
  }
  else {
    pcStack_1d0 = (char *)0x98ee37;
    LVar3 = SendMessageW(pHVar2,0x432,0,(LPARAM)local_104);
    if (LVar3 == 0) goto LAB_0098ee3f;
    iVar4 = FUN_008fc6f0();
    if (0x1d5 < iVar4) {
      pHVar2 = (HWND)FUN_0098e940();
      if (pHVar2 == (HWND)0x0) {
LAB_0098ef1d:
        pvVar5 = GetStockObject(0x11);
        if (pvVar5 == (HGDIOBJ)0x0) {
          local_1a8 = &HStack_1e0;
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(6);
          if (cVar1 != '\0') {
            FUN_0081c0f1();
            pcStack_1d0 = (char *)0x6;
            local_4 = 4;
            ptStack_1d4 = (tagSIZE *)0x98ef8d;
            FUN_008423d0();
            local_4._0_1_ = 5;
            GetLastError();
            FUN_00843700();
            GetLastError();
            pcStack_1d0 = "..\\..\\src\\msw\\tooltip.cpp";
            ptStack_1d4 = local_1a0;
            pcStack_1d8 = (char *)0x98efc7;
            FUN_00847d90();
            local_4 = CONCAT31(local_4._1_3_,4);
            FUN_00842440();
            local_4 = 0xffffffff;
            FUN_0081b5bc();
          }
        }
      }
      else {
        pcStack_1d0 = (char *)0x98ef13;
        pvVar5 = (HGDIOBJ)SendMessageW(pHVar2,0x31,0,0);
        if (pvVar5 == (HGDIOBJ)0x0) goto LAB_0098ef1d;
      }
      hdc = CreateCompatibleDC((HDC)0x0);
      local_4 = 6;
      local_1a8 = hdc;
      if (hdc == (HDC)0x0) {
        local_1a4 = &HStack_1e0;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          pcStack_1d0 = (char *)0x6;
          local_4._0_1_ = 7;
          ptStack_1d4 = (tagSIZE *)0x98f06a;
          FUN_008423d0();
          local_4._0_1_ = 8;
          GetLastError();
          FUN_00843700();
          GetLastError();
          pcStack_1d0 = "..\\..\\src\\msw\\tooltip.cpp";
          ptStack_1d4 = local_1a0;
          pcStack_1d8 = (char *)0x98f0a4;
          FUN_00847d90();
          local_4._0_1_ = 7;
          FUN_00842440();
          local_4 = CONCAT31(local_4._1_3_,6);
          FUN_0081b5bc();
          hdc = local_1a8;
        }
      }
      pvVar5 = SelectObject(hdc,pvVar5);
      if (pvVar5 == (HGDIOBJ)0x0) {
        local_1a4 = &HStack_1e0;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          pcStack_1d0 = (char *)0x6;
          local_4._0_1_ = 9;
          ptStack_1d4 = (tagSIZE *)0x98f135;
          FUN_008423d0();
          local_4._0_1_ = 10;
          GetLastError();
          FUN_00843700();
          GetLastError();
          pcStack_1d0 = "..\\..\\src\\msw\\tooltip.cpp";
          ptStack_1d4 = local_1a0;
          pcStack_1d8 = (char *)0x98f16f;
          FUN_00847d90();
          local_4._0_1_ = 9;
          FUN_00842440();
          local_4 = CONCAT31(local_4._1_3_,6);
          FUN_0081b5bc();
        }
      }
      local_1ac = 0;
      FUN_004325b6();
      local_4._0_1_ = 0xb;
      FUN_00894710();
      local_4 = CONCAT31(local_4._1_3_,0xd);
      _free(local_170);
      if (7 < local_174) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_174 = 7;
      uStack_178 = 0;
      local_188 = local_188 & 0xffff0000;
      cVar1 = FUN_00894180();
      iVar4 = 0;
      while (cVar1 != '\0') {
        FUN_00894270();
        local_4._0_1_ = 0xe;
        lpString = local_80[0];
        if (local_6c < 8) {
          lpString = local_80;
        }
        pcStack_1d0 = (char *)0x98f26d;
        BVar6 = GetTextExtentPoint32W(local_1a8,(LPCWSTR)lpString,local_70,local_1a0);
        if (BVar6 == 0) {
          local_1a4 = &HStack_1e0;
          FUN_0043c211(&DAT_00d25fa0);
          cVar1 = FUN_00846b30(6);
          if (cVar1 != '\0') {
            FUN_0081c0f1();
            local_4._0_1_ = 0xf;
            uStack_154 = 6;
            pcStack_14c = "..\\..\\src\\msw\\tooltip.cpp";
            pcStack_144 = "wxToolTip::DoAddOtherWindow";
            uStack_148 = 0x1c0;
            puStack_140 = &DAT_00d25fa0;
            _Stack_13c = __time64((__time64_t *)0x0);
            DStack_134 = GetCurrentThreadId();
            uStack_130 = 0;
            uStack_114 = 7;
            uStack_118 = 0;
            uStack_128 = 0;
            uStack_110 = 0;
            local_4._0_1_ = 0x10;
            GetLastError();
            FUN_00843700();
            GetLastError();
            pcStack_1d0 = "..\\..\\src\\msw\\tooltip.cpp";
            ptStack_1d4 = local_168;
            pcStack_1d8 = (char *)0x98f358;
            FUN_00847d90();
            local_4._0_1_ = 0xf;
            FUN_00842440();
            local_4._0_1_ = 0xe;
            FUN_0081b5bc();
          }
        }
        if (local_1ac < local_1a0[0].cx) {
          local_1ac = local_1a0[0].cx;
        }
        local_4 = CONCAT31(local_4._1_3_,0xd);
        _free(local_68);
        if (7 < local_6c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        cVar1 = FUN_00894180();
        iVar4 = local_1ac;
      }
      if (DAT_032e14c0 == 0) {
        iVar7 = FUN_008f78d0();
        DAT_032e14c0 = *(int *)(iVar7 + 8) / 2;
        if (DAT_032e14c0 < 0x191) goto LAB_0098f407;
        DAT_032e14c0 = 400;
LAB_0098f40c:
        if (DAT_032e14c0 < iVar4) {
          iVar4 = DAT_032e14c0;
          local_1ac = DAT_032e14c0;
        }
      }
      else {
LAB_0098f407:
        if (DAT_032e14c0 != -1) goto LAB_0098f40c;
      }
      pHVar2 = (HWND)FUN_0098e940();
      if (pHVar2 == (HWND)0x0) {
        iVar7 = 0;
      }
      else {
        pcStack_1d0 = (char *)0x98f42f;
        iVar7 = SendMessageW(pHVar2,0x419,0,0);
      }
      if ((iVar7 < iVar4) && (pHVar2 = (HWND)FUN_0098e940(), pHVar2 != (HWND)0x0)) {
        pcStack_1d0 = (char *)0x98f44f;
        SendMessageW(pHVar2,0x418,0,iVar4);
      }
      local_4 = CONCAT31(local_4._1_3_,6);
      FUN_0083fa70();
      DeleteDC(local_1a8);
      goto LAB_0098f62c;
    }
    FUN_004325b6();
    local_4 = 0x11;
    FUN_004325b6();
    local_4 = CONCAT31(local_4._1_3_,0x12);
    FUN_00852a70();
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_6c = 7;
    local_70 = 0;
    local_80[0] = (undefined4 ****)((uint)local_80[0] & 0xffff0000);
    local_4 = 0xffffffff;
    _free(local_170);
    if (7 < local_174) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (*(uint *)(param_1_00 + 0x20) < 8) {
      local_e0 = param_1_00 + 0xc;
    }
    else {
      local_e0 = *(int *)(param_1_00 + 0xc);
    }
    pHVar2 = (HWND)FUN_0098e940();
    if (pHVar2 != (HWND)0x0) {
      pcStack_1d0 = (char *)0x98f565;
      LVar3 = SendMessageW(pHVar2,0x432,0,(LPARAM)local_104);
      if (LVar3 != 0) goto LAB_0098f62c;
    }
    local_1a4 = &HStack_1e0;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 == '\0') goto LAB_0098f62c;
    FUN_0081c0f1();
    local_1a4 = (HDC__ *)&stack0xfffffe38;
    local_4 = 0x13;
    pcStack_1d0 = (char *)0x98f5bf;
    FUN_00432231();
    pcStack_1d0 = "wxToolTip::DoAddOtherWindow";
    ptStack_1d4 = (tagSIZE *)0x1eb;
    pcStack_1d8 = "..\\..\\src\\msw\\tooltip.cpp";
    uStack_1dc = 6;
    local_4._0_1_ = 0x14;
    HStack_1e0.unused = 0x98f5e9;
    FUN_008423d0();
    local_4._0_1_ = 0x16;
    pcStack_1d0 = (char *)0x98f605;
    FUN_00848860();
    local_4 = CONCAT31(local_4._1_3_,0x13);
    FUN_00842440();
  }
  local_4 = 0xffffffff;
  FUN_0081b5bc();
LAB_0098f62c:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_0098f660(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  if (*(int *)(param_1_00 + 0x30) == 0) {
    puVar1 = (undefined4 *)operator_new(0xc);
    if (puVar1 == (undefined4 *)0x0) {
      puVar1 = (undefined4 *)0x0;
    }
    else {
      *puVar1 = 0;
      puVar1[1] = 0;
      puVar1[2] = 0;
    }
    *(undefined4 **)(param_1_00 + 0x30) = puVar1;
  }
  FUN_00850560(&param_1);
  FUN_0098ed90(param_1);
  return;
}



void __thiscall FUN_0098f6b0(int param_1_00,uint param_1)

{
  HWND *ppHVar1;
  undefined4 *puVar2;
  uint uVar3;
  int nIDDlgItem;
  uint *puVar4;
  char cVar5;
  undefined **ppuVar6;
  HWND pHVar7;
  undefined4 *puVar8;
  uint uVar9;
  void *pvVar10;
  uint uVar11;
  
  FUN_0098eb10(&LAB_0098ea20);
  *(uint *)(param_1_00 + 0x2c) = param_1;
  if (param_1 != 0) {
    FUN_0098f660(*(undefined4 *)(param_1 + 0x13c));
  }
  puVar2 = *(undefined4 **)(param_1_00 + 0x2c);
  if ((puVar2 != (undefined4 *)0x0) &&
     (((ppuVar6 = (undefined **)(**(code **)*puVar2)(), ppuVar6 == &PTR_u_wxControl_0323a444 ||
       ((ppuVar6[3] != (undefined *)0x0 &&
        (cVar5 = FUN_0048a047(&PTR_u_wxControl_0323a444), cVar5 != '\0')))) ||
      ((ppuVar6[4] != (undefined *)0x0 &&
       (cVar5 = FUN_0048a047(&PTR_u_wxControl_0323a444), cVar5 != '\0')))))) {
    uVar3 = puVar2[99];
    param_1 = 0;
    if (uVar3 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)puVar2[99] <= param_1)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x344,"wxBaseArrayLong::Item",
                       "uiIndex < m_nCount",0);
        }
        nIDDlgItem = *(int *)(puVar2[100] + param_1 * 4);
        pHVar7 = GetDlgItem(*(HWND *)(*(int *)(param_1_00 + 0x2c) + 0x13c),nIDDlgItem);
        if (pHVar7 == (HWND)0x0) {
          pHVar7 = GetDlgItem(*(HWND *)(*(int *)(*(int *)(param_1_00 + 0x2c) + 0x44) + 0x13c),
                              nIDDlgItem);
        }
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (pHVar7 == (HWND)0x0)) {
          FUN_00840480("..\\..\\src\\msw\\tooltip.cpp",0x20f,"wxToolTip::SetWindow",&DAT_00d3a408,
                       L"no hwnd for subcontrol?");
        }
        if (*(int *)(param_1_00 + 0x30) == 0) {
          puVar8 = (undefined4 *)operator_new(0xc);
          if (puVar8 == (undefined4 *)0x0) {
            puVar8 = (undefined4 *)0x0;
          }
          else {
            *puVar8 = 0;
            puVar8[1] = 0;
            puVar8[2] = 0;
          }
          *(undefined4 **)(param_1_00 + 0x30) = puVar8;
        }
        puVar4 = *(uint **)(param_1_00 + 0x30);
        uVar9 = *puVar4;
        uVar11 = uVar9 + 1;
        if (puVar4[1] < uVar11) {
          if (uVar9 == 0) {
            uVar9 = 0x10;
          }
          else if (0xfff < uVar9) {
            uVar9 = 0x1000;
          }
          uVar9 = uVar9 + puVar4[1];
          if (uVar11 < uVar9) {
            uVar11 = uVar9;
          }
          pvVar10 = _realloc((void *)puVar4[2],uVar11 << 4);
          puVar4[2] = (uint)pvVar10;
          puVar4[1] = uVar11;
        }
        ppHVar1 = (HWND *)(puVar4[2] + *puVar4 * 4);
        if (ppHVar1 != (HWND *)0x0) {
          *ppHVar1 = pHVar7;
        }
        *puVar4 = *puVar4 + 1;
        FUN_0098ed90(pHVar7);
        param_1 = param_1 + 1;
      } while (param_1 < uVar3);
    }
  }
  return;
}



undefined4 * __thiscall
FUN_0098f890(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 *param_4)

{
  undefined4 uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd43a3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxToolTip::vftable;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  FID_conflict_assign(param_3,0,0xffffffff);
  param_1_00[9] = 0;
  param_1_00[0xd] = *param_4;
  param_1_00[0xe] = param_4[1];
  param_1_00[0xf] = param_4[2];
  uVar1 = param_4[3];
  param_1_00[0x11] = param_2;
  local_4 = CONCAT31(local_4._1_3_,1);
  param_1_00[0x10] = uVar1;
  param_1_00[0xb] = 0;
  param_1_00[0xc] = 0;
  FUN_0098f6b0(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined * FUN_0098f940(void)

{
  return &DAT_0323bd98;
}



void __fastcall thunk_FUN_009504a0(undefined4 *param_1)

{
  uint uVar1;
  HWND hWnd;
  HDC hDC;
  void *pvStack_c;
  undefined *puStack_8;
  uint uStack_4;
  
  puStack_8 = &LAB_00bdb7e6;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &pvStack_c;
  *param_1 = wxMSWDCImpl::vftable;
  uStack_4 = 1;
  if (param_1[0x42] != 0) {
    FUN_009502b0(param_1[0x42]);
    if ((*(byte *)(param_1 + 0x41) & 1) == 0) {
      if (param_1[3] == 0) {
        hDC = (HDC)param_1[0x42];
        hWnd = (HWND)0x0;
      }
      else {
        hDC = (HDC)param_1[0x42];
        hWnd = *(HWND *)(param_1[3] + 0x13c);
      }
      ReleaseDC(hWnd,hDC);
    }
    else {
      DeleteDC((HDC)param_1[0x42]);
    }
  }
  uStack_4 = uStack_4 & 0xffffff00;
  FUN_008f7630(uVar1);
  uStack_4 = 0xffffffff;
  FUN_0094c070();
  ExceptionList = pvStack_c;
  return;
}



undefined ** FUN_0098f960(void)

{
  return &PTR_u_wxClientDCImpl_0323bdb0;
}



void __fastcall FUN_0098f970(undefined4 *param_1)

{
  *param_1 = wxClientDCImpl::vftable;
  FUN_009504a0();
  return;
}



undefined ** FUN_0098f980(void)

{
  return &PTR_u_wxPaintDCImpl_0323bdc8;
}



undefined ** FUN_0098f990(void)

{
  return &PTR_u_wxPaintDCEx_0323bde0;
}



void __thiscall FUN_0098f9a0(undefined4 *param_1_00,int param_1,int param_2)

{
  *param_1_00 = *(undefined4 *)(param_1 + 0x13c);
  param_1_00[1] = *(undefined4 *)(param_2 + 0x108);
  param_1_00[2] = 1;
  return;
}



void __fastcall FUN_0098f9d0(int param_1)

{
  if (*(int **)(param_1 + 0xc) != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x0098f9df. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(param_1 + 0xc) + 0x278))();
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\dcclient.cpp",0x78,"wxWindowDCImpl::DoGetSize","m_window",
                 L"wxWindowDCImpl without a window?");
  }
  return;
}



undefined4 * __thiscall FUN_0098fa10(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxClientDCImpl::vftable;
  FUN_009504a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_0098fa40(int param_1)

{
  if (*(int **)(param_1 + 0xc) != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x0098fa4f. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(param_1 + 0xc) + 0x27c))();
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\dcclient.cpp",0xb4,"wxClientDCImpl::DoGetSize","m_window",
                 L"wxClientDCImpl without a window?");
  }
  return;
}



int * __thiscall FUN_0098fa80(int param_1_00,uint *param_1)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = DAT_032e1510;
  uVar3 = 0;
  if (DAT_032e1510 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032e1510 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar1 = *(int **)(DAT_032e1514 + uVar3 * 4);
      if (*piVar1 == *(int *)(*(int *)(param_1_00 + 0xc) + 0x13c)) {
        if (param_1 == (uint *)0x0) {
          return piVar1;
        }
        *param_1 = uVar3;
        return piVar1;
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  return (int *)0x0;
}



int FUN_0098fb00(int param_1)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = DAT_032e1510;
  uVar3 = 0;
  if (DAT_032e1510 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032e1510 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar1 = *(int **)(DAT_032e1514 + uVar3 * 4);
      if (*piVar1 == *(int *)(param_1 + 0x13c)) {
        return piVar1[1];
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  return 0;
}



undefined4 * __thiscall FUN_0098fb70(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_0094d450(param_1);
  *param_1_00 = wxMSWDCImpl::vftable;
  param_1_00[0x40] = 0;
  param_1_00[0x3f] = wxBitmap::vftable;
  *(byte *)(param_1_00 + 0x41) = *(byte *)(param_1_00 + 0x41) & 0xfe;
  param_1_00[0x42] = 0;
  param_1_00[0x43] = 0;
  param_1_00[0x44] = 0;
  param_1_00[0x45] = 0;
  param_1_00[0x46] = 0;
  param_1_00[0x47] = 0;
  return param_1_00;
}



void __thiscall FUN_0098fbd0(int param_1_00,uint param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  if (*(uint *)(param_1_00 + 4) <= param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\dcclient.cpp",0x3a,"wxArrayDCInfo::RemoveAt",
                   "uiIndex < size()",L"bad index in wxArrayDCInfo::RemoveAt()");
    }
    return;
  }
  if (param_2 != 0) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= param_1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 * 4 + *(int *)(param_1_00 + 8)));
  }
  iVar2 = *(int *)(param_1_00 + 8);
  iVar1 = iVar2 + param_1 * 4;
  FUN_0086a1e0(iVar1 - iVar2 >> 2,(int)((param_1 * 4 - iVar1) + iVar2) >> 2);
  return;
}



undefined4 * __thiscall FUN_0098fca0(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  HDC hdc;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be99f8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_0098fb70(param_1);
  local_4 = 0;
  *param_1_00 = wxWindowDCImpl::vftable;
  if (param_2 != 0) {
    param_1_00[3] = param_2;
    hdc = GetWindowDC(*(HWND *)(param_2 + 0x13c));
    param_1_00[0x42] = hdc;
    SetBkMode(hdc,1);
    FUN_009503f0();
    ExceptionList = local_c;
    return param_1_00;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\dcclient.cpp",0x60,"wxWindowDCImpl::wxWindowDCImpl","window",
                 L"invalid window in wxWindowDCImpl",uVar1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_0098fd60(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  HDC hdc;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1b38;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_0098fb70(param_1);
  local_4 = 0;
  *param_1_00 = wxClientDCImpl::vftable;
  if (param_2 != 0) {
    param_1_00[3] = param_2;
    hdc = GetDC(*(HWND *)(param_2 + 0x13c));
    param_1_00[0x42] = hdc;
    SetBkMode(hdc,1);
    FUN_009503f0();
    ExceptionList = local_c;
    return param_1_00;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\dcclient.cpp",0x8b,"wxClientDCImpl::wxClientDCImpl","window",
                 L"invalid window in wxClientDCImpl",uVar1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_0098fe30(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  HDC pHVar3;
  void *pvVar4;
  undefined4 uVar5;
  char *pcVar6;
  wchar_t *pwVar7;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1b68;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_0098fb70(param_1);
  local_4 = 0;
  *param_1_00 = wxPaintDCImpl::vftable;
  if (param_2 == 0) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      ExceptionList = local_c;
      return param_1_00;
    }
    pwVar7 = L"NULL canvas in wxPaintDCImpl ctor";
    pcVar6 = "window";
    uVar5 = 0xd9;
  }
  else {
    if (0 < DAT_032e1508) {
      DAT_032bf64d = 1;
      param_1_00[3] = param_2;
      iVar2 = FUN_0098fa80(0);
      if (iVar2 == 0) {
        pHVar3 = BeginPaint(*(HWND *)(param_1_00[3] + 0x13c),(LPPAINTSTRUCT)&DAT_032e14c8);
        param_1_00[0x42] = pHVar3;
        if (pHVar3 != (HDC)0x0) {
          pvVar4 = operator_new(0xc);
          if (pvVar4 == (void *)0x0) {
            uVar5 = 0;
          }
          else {
            uVar5 = FUN_0098f9a0(param_1_00[3],param_1_00);
          }
          FUN_0086a400(uVar5,1);
        }
      }
      else {
        param_1_00[0x42] = *(undefined4 *)(iVar2 + 4);
        *(int *)(iVar2 + 8) = *(int *)(iVar2 + 8) + 1;
      }
      if ((HDC)param_1_00[0x42] == (HDC)0x0) {
        ExceptionList = local_c;
        return param_1_00;
      }
      SetBkMode((HDC)param_1_00[0x42],1);
      FUN_009503f0(uVar1);
      *(byte *)(param_1_00 + 4) = *(byte *)(param_1_00 + 4) | 4;
      ExceptionList = local_c;
      return param_1_00;
    }
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      ExceptionList = local_c;
      return param_1_00;
    }
    pwVar7 = L"wxPaintDCImpl may be created only in EVT_PAINT handler!";
    pcVar6 = "Assert failure";
    uVar5 = 0xde;
  }
  FUN_00840480("..\\..\\src\\msw\\dcclient.cpp",uVar5,"wxPaintDCImpl::wxPaintDCImpl",pcVar6,pwVar7);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_0098ff90(undefined4 *param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined4 local_14;
  undefined4 *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be1b98;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxPaintDCImpl::vftable;
  local_4 = 0;
  local_10 = param_1;
  if (param_1[0x42] != 0) {
    FUN_009502b0(param_1[0x42]);
    iVar3 = FUN_0098fa80(&local_14);
    if (iVar3 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\msw\\dcclient.cpp",0x10f,"wxPaintDCImpl::~wxPaintDCImpl",
                     &DAT_00d26b0c,L"existing DC should have a cache entry");
      }
    }
    else {
      piVar1 = (int *)(iVar3 + 8);
      *piVar1 = *piVar1 + -1;
      if (*piVar1 == 0) {
        EndPaint(*(HWND *)(param_1[3] + 0x13c),(PAINTSTRUCT *)&DAT_032e14c8);
        FUN_0098fbd0(local_14,1);
        if (DAT_032e1510 == 0) {
          FUN_0086cea0();
          FUN_0086a880();
        }
      }
      param_1[0x42] = 0;
    }
  }
  local_4 = 0xffffffff;
  *param_1 = wxClientDCImpl::vftable;
  FUN_009504a0(uVar2);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall
FUN_009900a0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,HDC param_3)

{
  uint uVar1;
  int iVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1bc8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_0098fb70(param_1);
  local_4 = 0;
  *param_1_00 = wxPaintDCExImpl::vftable;
  if (param_3 == (HDC)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\dcclient.cpp",0x15f,"wxPaintDCExImpl::wxPaintDCExImpl",
                   &DAT_00d680d8,L"wxPaintDCEx requires an existing device context",uVar1);
    }
  }
  else {
    param_1_00[3] = param_2;
    param_1_00[0x48] = 0;
    iVar2 = FUN_0098fa80(0);
    if (iVar2 == 0) {
      param_1_00[0x42] = param_3;
      puVar3 = (undefined4 *)operator_new(0xc);
      if (puVar3 == (undefined4 *)0x0) {
        puVar3 = (undefined4 *)0x0;
      }
      else {
        *puVar3 = *(undefined4 *)(param_1_00[3] + 0x13c);
        puVar3[1] = param_1_00[0x42];
        puVar3[2] = 1;
      }
      FUN_0086a400(puVar3,1);
      iVar2 = SaveDC(param_3);
      param_1_00[0x48] = iVar2;
    }
    else {
      param_1_00[0x42] = *(undefined4 *)(iVar2 + 4);
      *(int *)(iVar2 + 8) = *(int *)(iVar2 + 8) + 1;
    }
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009901b0(undefined4 *param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined4 local_14;
  undefined4 *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be1bc8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxPaintDCExImpl::vftable;
  local_4 = 0;
  local_10 = param_1;
  iVar3 = FUN_0098fa80(&local_14);
  if (iVar3 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\dcclient.cpp",0x178,"wxPaintDCExImpl::~wxPaintDCExImpl",
                   &DAT_00d26b0c,L"existing DC should have a cache entry",uVar2);
    }
  }
  else {
    piVar1 = (int *)(iVar3 + 8);
    *piVar1 = *piVar1 + -1;
    if (*piVar1 == 0) {
      RestoreDC((HDC)param_1[0x42],param_1[0x48]);
      FUN_0098fbd0(local_14,1);
      if (DAT_032e1510 == 0) {
        FUN_0086cea0();
        FUN_0086a880();
      }
    }
    param_1[0x42] = 0;
  }
  local_4 = 0xffffffff;
  FUN_0098ff90();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009902a0(undefined4 param_1_00,byte param_1)

{
  FUN_0098ff90();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009902c0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x128);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_009900a0(param_1_00,param_1,param_2);
  }
  param_1_00[2] = uVar2;
  param_1_00[1] = 0;
  *param_1_00 = wxPaintDCEx::vftable;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00990340(undefined4 param_1_00,byte param_1)

{
  FUN_009901b0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined ** FUN_00990360(void)

{
  return &PTR_u_wxStaticBox_0323bdf8;
}



undefined4 * FUN_00990370(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x194);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0044ced6(uVar1);
    *puVar2 = wxStaticBox::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



uint __thiscall FUN_009903d0(int param_1_00,HWND param_1)

{
  int iVar1;
  HRESULT HVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1c19;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  HVar2 = CoLockObjectExternal(*(LPUNKNOWN *)(param_1_00 + 0xc),1,0);
  if (HVar2 < 0) {
    FUN_0043c211(&DAT_00d25fa0);
    uVar3 = FUN_00846b30(6);
    if ((char)uVar3 != '\0') {
      FUN_0081c0f1();
      local_4 = 0;
      FUN_008423d0();
      local_4._0_1_ = 1;
      FUN_00843700();
      FUN_00847d90();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00842440();
      local_4 = 0xffffffff;
      uVar3 = FUN_0081b5bc();
    }
    uVar3 = uVar3 & 0xffffff00;
  }
  else {
    HVar2 = RegisterDragDrop(param_1,*(LPDROPTARGET *)(param_1_00 + 0xc));
    if (HVar2 < 0) {
      CoLockObjectExternal(*(LPUNKNOWN *)(param_1_00 + 0xc),0,0);
      FUN_0043c211(&DAT_00d25fa0);
      uVar3 = FUN_00846b30(6);
      if ((char)uVar3 != '\0') {
        FUN_0081c0f1();
        local_4 = 2;
        FUN_008423d0();
        local_4._0_1_ = 3;
        FUN_00843700();
        FUN_00847d90();
        local_4 = CONCAT31(local_4._1_3_,2);
        FUN_00842440();
        local_4 = 0xffffffff;
        uVar3 = FUN_0081b5bc();
      }
      uVar3 = uVar3 & 0xffffff00;
    }
    else {
      iVar1 = *(int *)(param_1_00 + 0xc);
      *(HWND *)(iVar1 + 0x10) = param_1;
      uVar3 = CONCAT31((int3)((uint)iVar1 >> 8),1);
    }
  }
  ExceptionList = local_c;
  return uVar3;
}



void __thiscall FUN_009905e0(int param_1_00,HWND param_1)

{
  char cVar1;
  HRESULT HVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  HVar2 = RevokeDragDrop(param_1);
  if (HVar2 < 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      FUN_00843700();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  CoLockObjectExternal(*(LPUNKNOWN *)(param_1_00 + 0xc),0,1);
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x10) = 0;
  ExceptionList = local_c;
  return;
}



undefined ** FUN_00990700(void)

{
  return &PTR_PTR_00d6849c;
}



undefined * FUN_00990710(void)

{
  return &DAT_032e1518;
}



undefined __thiscall FUN_00990770(int param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  WPARAM wParam;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1c48;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  cVar1 = FUN_0091d460(param_1);
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  piVar3 = (int *)FUN_0091e100(local_14);
  local_4 = 0;
  wParam = (**(code **)(*piVar3 + 0x20))(uVar2);
  local_4 = 0xffffffff;
  FUN_00921450();
  SendMessageW(*(HWND *)(param_1_00 + 0x1a0),0x30,wParam,1);
  ExceptionList = local_c;
  return 1;
}



undefined __thiscall FUN_00990820(int param_1_00,uint param_1)

{
  char cVar1;
  
  cVar1 = FUN_0090ea90(param_1);
  if (cVar1 == '\0') {
    return 0;
  }
  ShowWindow(*(HWND *)(param_1_00 + 0x1a0),-(uint)((param_1 & 0xff) != 0) & 5);
  return 1;
}



int FUN_009908d0(uint param_1)

{
  int iVar1;
  undefined4 *puVar2;
  
  for (puVar2 = *(undefined4 **)(DAT_032e1580 + (param_1 % DAT_032e1584) * 4);
      puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)*puVar2) {
    if (puVar2[1] == param_1) goto LAB_009908fd;
  }
  puVar2 = (undefined4 *)0x0;
LAB_009908fd:
  if (puVar2 == (undefined4 *)0x0) {
    return 0;
  }
  iVar1 = puVar2[2];
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar1 + 0x1a0) != param_1)) {
    FUN_00840480("..\\..\\src\\msw\\spinctrl.cpp",0xac,"wxSpinCtrl::GetSpinForTextCtrl",
                 "spin->m_hwndBuddy == hwndBuddy",L"wxSpinCtrl has incorrect buddy HWND!");
  }
  return iVar1;
}



int * __thiscall FUN_009909b0(int param_1_00,int *param_1)

{
  int *piVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  piVar1 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1c48;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_009972a0(param_1);
  *piVar1 = *piVar1 + 0x65;
  uVar3 = FUN_0091e100(local_14);
  local_4 = 0;
  FUN_0090d9c0(*(undefined4 *)(param_1_00 + 0x13c),0,&param_1,uVar3,uVar2);
  local_4 = 0xffffffff;
  FUN_00921450();
  piVar1[1] = (int)(param_1 + 2);
  ExceptionList = local_c;
  return piVar1;
}



void __thiscall FUN_00990a40(int param_1,int *param_2,int *param_3)

{
  tagRECT local_30;
  tagRECT local_20;
  tagRECT local_10;
  
  GetWindowRect(*(HWND *)(param_1 + 0x13c),&local_20);
  GetWindowRect(*(HWND *)(param_1 + 0x1a0),&local_10);
  UnionRect(&local_30,&local_10,&local_20);
  if (param_2 != (int *)0x0) {
    *param_2 = local_30.right - local_30.left;
  }
  if (param_3 != (int *)0x0) {
    *param_3 = local_30.bottom - local_30.top;
  }
  return;
}



void __fastcall FUN_00990af0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be1c78;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxSpinCtrl::vftable;
  local_4 = 0;
  DestroyWindow((HWND)param_1[0x68]);
  FUN_009115c0(param_1 + 0x68);
  local_4 = 0xffffffff;
  FUN_00997290(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 FUN_00990b90(undefined4 param_1,undefined4 param_2)

{
  FUN_00937490(param_1,param_2);
  return param_1;
}



undefined4 __thiscall FUN_00990bf0(undefined4 param_1_00,byte param_1)

{
  FUN_00990af0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00990c10(int param_1)

{
  undefined4 ****_Src;
  int iVar1;
  int local_2c;
  undefined local_28 [4];
  undefined4 ****local_24 [5];
  uint local_10;
  void *local_c;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_2c;
  FUN_0095df20(local_28,*(undefined4 *)(param_1 + 0x1a0));
  _Src = local_24[0];
  if (local_10 < 8) {
    _Src = local_24;
  }
  iVar1 = FID_conflict__swscanf((wchar_t *)_Src,L"%ld",&local_2c);
  if (iVar1 != 1) {
    local_2c = -0x80000000;
  }
  if (local_2c < *(int *)(param_1 + 0x194)) {
    local_2c = *(int *)(param_1 + 0x194);
  }
  if (*(int *)(param_1 + 0x198) < local_2c) {
    local_2c = *(int *)(param_1 + 0x198);
  }
  _free(local_c);
  if (local_10 < 8) {
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_24[0]);
}



void __thiscall FUN_00990cc0(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined **local_6c [2];
  int local_64;
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  void *local_28;
  undefined4 local_20;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1ca8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032e9ff0,*(undefined4 *)(param_1_00 + 0x40));
  local_4 = 0;
  local_20 = param_1;
  local_64 = param_1_00;
  FUN_0091c170(local_6c);
  *(undefined4 *)(param_1_00 + 0x19c) = param_1;
  local_4 = 0xffffffff;
  _free(local_28);
  if (7 < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40);
  }
  local_40 = local_40 & 0xffff0000;
  local_2c = 7;
  local_30 = 0;
  local_6c[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00990e00(int *param_1)

{
  int iVar1;
  int iVar2;
  
  iVar2 = (**(code **)(*param_1 + 0x358))();
  iVar1 = param_1[0x67];
  (**(code **)(*param_1 + 0x364))(iVar2);
  if (iVar2 != iVar1) {
    FUN_00990cc0(iVar2);
  }
  return;
}



void __thiscall FUN_00990e40(int *param_1_00,undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  LPCWSTR lpString;
  undefined local_68 [20];
  undefined local_54 [4];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1cd8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  *(undefined *)(param_1_00 + 0x6a) = 1;
  FUN_00997320(param_1);
  iVar2 = FUN_0095df20(local_30,param_1_00[0x68],uVar1);
  iVar2 = *(int *)(iVar2 + 0x14);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (iVar2 == 0) {
    FUN_0081c0f1(&DAT_00d2b618);
    local_4 = 0;
    iVar2 = FUN_00821558(local_54,local_68,param_1);
    if (*(uint *)(iVar2 + 0x18) < 8) {
      lpString = (LPCWSTR)(iVar2 + 4);
    }
    else {
      lpString = *(LPCWSTR *)(iVar2 + 4);
    }
    SetWindowTextW((HWND)param_1_00[0x68],lpString);
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  iVar2 = (**(code **)(*param_1_00 + 0x358))();
  param_1_00[0x67] = iVar2;
  *(undefined *)(param_1_00 + 0x6a) = 0;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00990f80(int *param_1_00,short param_1)

{
  uint uVar1;
  undefined local_90 [4];
  uint uStack_8c;
  undefined4 uStack_7c;
  uint uStack_78;
  void *pvStack_74;
  undefined local_6c [8];
  int *local_64;
  undefined4 uStack_20;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea253;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_90;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  if ((param_1 == 0x300) && (*(char *)(param_1_00 + 0x6a) == '\0')) {
    FUN_0092bd60(DAT_032c1058,param_1_00[0x10]);
    local_4 = 0;
    local_64 = param_1_00;
    FUN_0095df20(local_90,param_1_00[0x68],uVar1);
    local_4 = CONCAT31(local_4._1_3_,1);
    FID_conflict_assign(local_90,0,0xffffffff);
    uStack_20 = (**(code **)(*param_1_00 + 0x358))();
    FUN_0091c170(local_6c);
    _free(pvStack_74);
    if (7 < uStack_78) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_8c);
    }
    uStack_8c = uStack_8c & 0xffff0000;
    uStack_78 = 7;
    uStack_7c = 0;
    local_4 = 0xffffffff;
    FUN_00454a4e();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009910d0(int *param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined auStack_c4 [4];
  undefined **local_c0 [2];
  int *local_b8;
  undefined4 local_a0;
  uint local_98;
  undefined4 local_94;
  undefined local_90 [36];
  undefined local_6c [76];
  undefined4 uStack_20;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1d1e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_c4;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff34;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x34) == 9) {
    FUN_00845a20(0,DAT_032bfe6c);
    local_c0[0] = wxNavigationKeyEvent::vftable;
    local_94 = 0;
    local_a0 = 0;
    local_4 = 2;
    local_98 = ((~(*(byte *)(param_1 + 0x28) >> 1) & 1) != 0) + 4;
    if ((*(byte *)(param_1 + 0x28) & 1) == 0) {
      local_98 = local_98 & 0xfffffffd;
    }
    else {
      local_98 = local_98 | 2;
    }
    local_b8 = param_1_00;
    cVar1 = FUN_0091c170(local_c0);
    local_4 = 0xffffffff;
    local_c0[0] = wxObject::vftable;
    if (cVar1 != '\0') {
      FUN_0083e850();
      goto LAB_0099127d;
    }
    FUN_0083e850();
  }
  else if (*(int *)(param_1 + 0x34) == 0xd) {
    FUN_0092bd60(DAT_032c105c,param_1_00[0x10]);
    local_4 = 0;
    FUN_00937340(local_6c);
    FUN_0095df20(local_90,param_1_00[0x68],uVar2);
    local_4 = CONCAT31(local_4._1_3_,1);
    FID_conflict_assign(local_90,0,0xffffffff);
    uStack_20 = (**(code **)(*param_1_00 + 0x358))();
    cVar1 = FUN_0091c170(local_6c);
    if (cVar1 != '\0') {
      FUN_0040159c();
      local_4 = 0xffffffff;
      FUN_00454a4e();
      goto LAB_0099127d;
    }
    FUN_0040159c();
    local_4 = 0xffffffff;
    FUN_00454a4e();
  }
  *(undefined *)(param_1 + 0x24) = 1;
LAB_0099127d:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __fastcall FUN_009912b0(int *param_1)

{
  HWND hWnd;
  char cVar1;
  BOOL BVar2;
  uint uStack_7c;
  void *pvStack_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be1d6b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0091aed0();
  cVar1 = FUN_0091bcc0();
  if (cVar1 != '\0') {
    FUN_0086b0c0();
    hWnd = (HWND)param_1[0x4f];
    FUN_00914170();
    BVar2 = DestroyWindow(hWnd);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    (**(code **)(*param_1 + 0x60))();
    puStack_8 = (undefined *)0x2;
    (**(code **)(*param_1 + 0xe8))();
    cVar1 = FUN_00997640();
    uStack_4 = 0xffffffff;
    _free(pvStack_78);
    if (7 < uStack_7c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (cVar1 != '\0') {
      (**(code **)(*param_1 + 0x358))();
      FUN_00997320();
      (**(code **)(*param_1 + 0x370))();
      (**(code **)(*param_1 + 0x288))();
      SetParent((HWND)param_1[0x68],*(HWND *)(param_1[0x11] + 0x13c));
      SendMessageW((HWND)param_1[0x4f],0x469,param_1[0x68],0);
      ExceptionList = local_c;
      return 1;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_00991540(undefined4 param_1,undefined4 param_2,int param_3)

{
  char cVar1;
  int *piVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcbaa0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  piVar2 = (int *)FUN_009972a0();
  if ((param_3 - *piVar2) + -1 < 1) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4 = 0;
      FUN_008423d0();
      local_4._0_1_ = 1;
      FUN_008854f0();
      FUN_0083fe90();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  FUN_00915ef0();
  FUN_00916180();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00991690(int param_1,int *param_2,int *param_3)

{
  LONG *pLVar1;
  RECT local_40;
  RECT local_30;
  tagRECT local_20;
  undefined local_10 [16];
  
  pLVar1 = (LONG *)FUN_00914ec0(local_10,*(undefined4 *)(param_1 + 0x13c));
  local_40.left = *pLVar1;
  local_40.top = pLVar1[1];
  local_40.right = pLVar1[2];
  local_40.bottom = pLVar1[3];
  pLVar1 = (LONG *)FUN_00914ec0(local_10,*(undefined4 *)(param_1 + 0x1a0));
  local_30.left = *pLVar1;
  local_30.top = pLVar1[1];
  local_30.right = pLVar1[2];
  local_30.bottom = pLVar1[3];
  UnionRect(&local_20,&local_30,&local_40);
  if (param_2 != (int *)0x0) {
    *param_2 = local_20.right - local_20.left;
  }
  if (param_3 != (int *)0x0) {
    *param_3 = local_20.bottom - local_20.top;
  }
  return;
}



undefined4 __thiscall FUN_00991740(uint *param_1_00,uint param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*param_1_00 <= param_1) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/msw/subwin.h",0x39,"wxSubwindows::Get",
                   "n < m_count",L"subwindow index out of range");
    }
    return *(undefined4 *)(param_1_00[1] + param_1 * 4);
  }
  return *(undefined4 *)(param_1_00[1] + param_1 * 4);
}



void __thiscall FUN_00991790(uint *param_1_00,char param_1)

{
  uint uVar1;
  
  if (*param_1_00 != 0) {
    uVar1 = 0;
    do {
      if (*(int *)(param_1_00[1] + uVar1 * 4) != 0) {
        ShowWindow(*(HWND *)(param_1_00[1] + uVar1 * 4),-(uint)(param_1 != '\0') & 5);
      }
      uVar1 = uVar1 + 1;
    } while (uVar1 < *param_1_00);
  }
  return;
}



void __thiscall FUN_009917d0(uint *param_1_00,byte param_1)

{
  uint uVar1;
  
  uVar1 = 0;
  if (*param_1_00 != 0) {
    do {
      if (*(int *)(param_1_00[1] + uVar1 * 4) != 0) {
        EnableWindow(*(HWND *)(param_1_00[1] + uVar1 * 4),(uint)param_1);
      }
      uVar1 = uVar1 + 1;
    } while (uVar1 < *param_1_00);
  }
  return;
}



void __fastcall FUN_00991810(uint *param_1)

{
  WPARAM wParam;
  uint uVar1;
  
  wParam = FUN_009229f0();
  if (wParam == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/msw/subwin.h",0x76,"wxSubwindows::SetFont",
                   "hfont",L"invalid font");
      return;
    }
  }
  else {
    uVar1 = 0;
    if (*param_1 != 0) {
      do {
        if (*(int *)(param_1[1] + uVar1 * 4) != 0) {
          SendMessageW(*(HWND *)(param_1[1] + uVar1 * 4),0x30,wParam,0);
          InvalidateRect(*(HWND *)(param_1[1] + uVar1 * 4),(RECT *)0x0,0);
        }
        uVar1 = uVar1 + 1;
      } while (uVar1 < *param_1);
    }
  }
  return;
}



undefined ** FUN_00991890(void)

{
  return &PTR_u_wxRadioBox_0323be70;
}



undefined4 __fastcall FUN_009918a0(int param_1)

{
  if (*(undefined4 **)(param_1 + 0x24) != (undefined4 *)0x0) {
    return **(undefined4 **)(param_1 + 0x24);
  }
  return 0;
}



void __fastcall FUN_009918b0(int param_1)

{
  int iVar1;
  HWND hWnd;
  
  iVar1 = (**(code **)(*(int *)(param_1 + 0x194) + 4))();
  if (iVar1 != 0) {
    hWnd = (HWND)FUN_00991740(-(uint)(*(uint *)(param_1 + 0x1cc) != 0xffffffff) &
                              *(uint *)(param_1 + 0x1cc));
    SetFocus(hWnd);
  }
  return;
}



undefined4 * __fastcall FUN_009919c0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be1dd8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1 = wxRadioBoxBase::vftable;
  FUN_00853ce0(0);
  param_1[1] = 0;
  param_1[3] = 0;
  param_1[2] = 0;
  param_1[4] = 0;
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00991a20(void)

{
  return 0xffffffff;
}



undefined4 __thiscall FUN_00991a30(undefined4 param_1_00,byte param_1)

{
  FUN_009d03d0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_00991a50(uint param_1)

{
  undefined4 *puVar1;
  
  for (puVar1 = *(undefined4 **)(DAT_032e1594 + (param_1 % DAT_032e1598) * 4);
      puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) {
    if (puVar1[1] == param_1) goto LAB_00991a7d;
  }
  puVar1 = (undefined4 *)0x0;
LAB_00991a7d:
  if (puVar1 == (undefined4 *)0x0) {
    return 0;
  }
  return puVar1[2];
}



void __thiscall FUN_00991ad0(int *param_1,uint param_2)

{
  uint uVar1;
  HWND pHVar2;
  UINT UVar3;
  WPARAM WVar4;
  LPARAM LVar5;
  
  uVar1 = (**(code **)(*param_1 + 4))();
  if (param_2 < uVar1) {
    if (param_1[0xe] != -1) {
      LVar5 = 0;
      WVar4 = 0;
      UVar3 = 0xf1;
      pHVar2 = (HWND)FUN_00991740(param_1[0xe]);
      SendMessageW(pHVar2,UVar3,WVar4,LVar5);
    }
    LVar5 = 0;
    WVar4 = 1;
    UVar3 = 0xf1;
    pHVar2 = (HWND)FUN_00991740(param_2);
    SendMessageW(pHVar2,UVar3,WVar4,LVar5);
    param_1[0xe] = param_2;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\radiobox.cpp",0x196,"wxRadioBox::SetSelection","IsValid(N)",
                 L"invalid radiobox index");
  }
  return;
}



uint __thiscall FUN_00991b60(int *param_1,uint param_2,uint param_3)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  
  uVar2 = (**(code **)(*param_1 + 4))();
  if (param_2 < uVar2) {
    uVar2 = param_3;
    uVar3 = FUN_00991740(param_2);
    cVar1 = FUN_0090ea30(uVar3,uVar2);
    return (uint)((uint)(cVar1 == '\0') != (param_3 & 0xff));
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar2 = FUN_00840480("..\\..\\src\\msw\\radiobox.cpp",0x1b9,"wxRadioBox::Enable","IsValid(item)"
                         ,L"invalid item in wxRadioBox::Enable()");
  }
  return uVar2 & 0xffffff00;
}



uint __thiscall FUN_00991be0(int *param_1,uint param_2)

{
  uint uVar1;
  HWND hWnd;
  BOOL BVar2;
  
  uVar1 = (**(code **)(*param_1 + 4))();
  if (param_2 < uVar1) {
    hWnd = (HWND)FUN_00991740(param_2);
    BVar2 = IsWindowEnabled(hWnd);
    return (uint)(BVar2 != 0);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar1 = FUN_00840480("..\\..\\src\\msw\\radiobox.cpp",0x1c3,"wxRadioBox::IsItemEnabled",
                         "IsValid(item)",L"invalid item in wxRadioBox::IsItemEnabled()");
  }
  return uVar1 & 0xffffff00;
}



bool __thiscall FUN_00991c40(int *param_1,uint param_2,byte param_3)

{
  uint uVar1;
  HWND hWnd;
  BOOL BVar2;
  bool bVar3;
  
  uVar1 = (**(code **)(*param_1 + 4))();
  if (param_2 < uVar1) {
    uVar1 = -(uint)(param_3 != 0) & 5;
    hWnd = (HWND)FUN_00991740(param_2);
    BVar2 = ShowWindow(hWnd,uVar1);
    bVar3 = -(uint)param_3 != -(uint)(BVar2 != 0);
    if (bVar3) {
      FUN_0091a950();
    }
    return bVar3;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\radiobox.cpp",0x1cc,"wxRadioBox::Show","IsValid(item)",
                 L"invalid item in wxRadioBox::Show()");
  }
  return false;
}



uint __thiscall FUN_00991cd0(int *param_1,uint param_2)

{
  uint uVar1;
  HWND hWnd;
  int nIndex;
  
  uVar1 = (**(code **)(*param_1 + 4))();
  if (param_2 < uVar1) {
    nIndex = -0x10;
    hWnd = (HWND)FUN_00991740(param_2);
    uVar1 = GetWindowLongW(hWnd,nIndex);
    return uVar1 >> 0x1c & 1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar1 = FUN_00840480("..\\..\\src\\msw\\radiobox.cpp",0x1dc,"wxRadioBox::IsItemShown",
                         "IsValid(item)",L"invalid item in wxRadioBox::IsItemShown()");
  }
  return uVar1 & 0xffffff00;
}



void __thiscall FUN_00991d50(int param_1_00,uint param_1,int param_2)

{
  uint *puVar1;
  undefined4 uVar2;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  puVar1 = *(uint **)(param_1_00 + 0x24);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*puVar1 <= param_1)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/msw/subwin.h",0x39,"wxSubwindows::Get",
                 "n < m_count",L"subwindow index out of range");
  }
  uVar2 = *(undefined4 *)(puVar1[1] + param_1 * 4);
  if (param_2 != 0) {
    FUN_0098f660(uVar2);
    return;
  }
  local_10 = 0;
  local_c = 0;
  local_8 = 0;
  local_4 = 0;
  FUN_0098e9e0(uVar2,0,&local_10);
  return;
}



void __fastcall FUN_00991e50(uint *param_1)

{
  void *pvVar1;
  uint uVar2;
  
  uVar2 = 0;
  if (*param_1 != 0) {
    do {
      if (*(int *)(param_1[1] + uVar2 * 4) != 0) {
        DestroyWindow(*(HWND *)(param_1[1] + uVar2 * 4));
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < *param_1);
  }
  _free((void *)param_1[1]);
  pvVar1 = (void *)param_1[2];
  if (pvVar1 != (void *)0x0) {
    _eh_vector_destructor_iterator_(pvVar1,4,*(int *)((int)pvVar1 + -4),FUN_0091a8c0);
    FUN_00a3f66c((int)pvVar1 + -4);
  }
  return;
}



HRGN __fastcall FUN_00991eb0(int param_1)

{
  uint *puVar1;
  char cVar2;
  HRGN hrgnDst;
  uint uVar3;
  HRGN hrgnSrc2;
  uint uVar4;
  tagRECT local_10;
  
  GetWindowRect(*(HWND *)(param_1 + 0x13c),&local_10);
  hrgnDst = CreateRectRgn(local_10.left,local_10.top,local_10.right + 1,local_10.bottom + 1);
  uVar3 = (**(code **)(*(int *)(param_1 + 0x194) + 4))();
  uVar4 = 0;
  if (uVar3 != 0) {
    do {
      cVar2 = (**(code **)(*(int *)(param_1 + 0x194) + 0x2c))(uVar4);
      if (cVar2 != '\0') {
        puVar1 = *(uint **)(param_1 + 0x1b8);
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*puVar1 <= uVar4)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/msw/subwin.h",0x39,"wxSubwindows::Get",
                       "n < m_count",L"subwindow index out of range");
        }
        GetWindowRect(*(HWND *)(puVar1[1] + uVar4 * 4),&local_10);
        hrgnSrc2 = CreateRectRgnIndirect(&local_10);
        CombineRgn(hrgnDst,hrgnDst,hrgnSrc2,4);
        if (hrgnSrc2 != (HRGN)0x0) {
          DeleteObject(hrgnSrc2);
        }
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar3);
  }
  return hrgnDst;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void __fastcall FUN_00991fa0(undefined4 *param_1)

{
  undefined4 *puVar1;
  uint *puVar2;
  HWND hWnd;
  int iVar3;
  undefined4 *puVar4;
  uint uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be1e2c;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *param_1 = wxRadioBox::vftable;
  param_1[0x65] = wxRadioBox::vftable;
  local_4 = 2;
  FUN_0091e7c0(uVar5);
  uVar5 = 0;
  if (*(int *)param_1[0x6e] != 0) {
    do {
      puVar2 = (uint *)param_1[0x6e];
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*puVar2 <= uVar5)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/msw/subwin.h",0x39,"wxSubwindows::Get",
                     "n < m_count",L"subwindow index out of range");
      }
      hWnd = *(HWND *)(puVar2[1] + uVar5 * 4);
      SetWindowLongW(hWnd,-4,DAT_032e1590);
      puVar1 = (undefined4 *)(DAT_032e1594 + ((uint)hWnd % DAT_032e1598) * 4);
      for (puVar4 = (undefined4 *)*puVar1; puVar4 != (undefined4 *)0x0;
          puVar4 = (undefined4 *)*puVar4) {
        if ((HWND)puVar4[1] == hWnd) {
          _DAT_032e159c = _DAT_032e159c + -1;
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(*puVar1);
        }
        puVar1 = puVar4;
      }
      uVar5 = uVar5 + 1;
    } while (uVar5 < *(uint *)param_1[0x6e]);
  }
  iVar3 = param_1[0x6e];
  if (iVar3 != 0) {
    FUN_00991e50();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar3);
  }
  if ((HWND)param_1[0x6f] != (HWND)0x0) {
    DestroyWindow((HWND)param_1[0x6f]);
  }
  FUN_00a3f66c(param_1[0x71]);
  FUN_00a3f66c(param_1[0x72]);
  local_4._0_1_ = 1;
  FUN_00994360(0xfffffffd);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_009d03d0();
  local_4 = 3;
  FUN_0086aa30();
  local_4 = 0xffffffff;
  FUN_009375f0();
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_00992140(int param_1)

{
  return *(undefined4 *)(param_1 + 0x38);
}



void FUN_00992150(void)

{
  FUN_00a2d030();
  return;
}



void FUN_00992160(void)

{
  FUN_00992170();
  return;
}



undefined4 __thiscall FUN_00992170(undefined4 param_1_00,byte param_1)

{
  FUN_00991fa0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_00992190(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1e58;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044ced6(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  *param_1 = wxStaticBox::vftable;
  local_4 = 0;
  FUN_009919c0();
  *param_1 = wxRadioBox::vftable;
  param_1[0x65] = wxRadioBox::vftable;
  param_1[0x70] = 0xfffffffd;
  param_1[0x73] = 0xffffffff;
  param_1[0x6e] = 0;
  param_1[0x6f] = 0;
  param_1[0x71] = 0;
  param_1[0x72] = 0;
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall
FUN_00992230(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_009d05d0(param_1,param_1_00,param_2,param_3);
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1d0);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00992190(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_009922d0(int *param_1,int *param_2)

{
  uint *puVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  uint uVar5;
  int iStack_40;
  int iStack_3c;
  int local_38;
  int local_34;
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be1e88;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar5 = 0;
  local_38 = 0;
  local_34 = 0;
  uVar2 = (**(code **)(param_1[0x65] + 4))(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  if (uVar2 != 0) {
    do {
      iVar4 = *(int *)(param_1[0x71] + uVar5 * 4);
      if (iVar4 < 0) {
        puVar1 = (uint *)param_1[0x6e];
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*puVar1 <= uVar5)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/msw/subwin.h",0x39,"wxSubwindows::Get",
                       "n < m_count",L"subwindow index out of range");
        }
        uVar3 = FUN_0095df20(auStack_30,*(undefined4 *)(puVar1[1] + uVar5 * 4));
        uStack_4 = 0;
        (**(code **)(*param_1 + 600))(uVar3,&iStack_40,&iStack_3c,0,0,0);
        uStack_4 = 0xffffffff;
        _free(pvStack_14);
        if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_2c);
        }
        iVar4 = iStack_40 + 0x14;
        iStack_3c = (iStack_3c * 3) / 2;
      }
      else {
        iStack_3c = *(int *)(param_1[0x72] + uVar5 * 4);
      }
      if (local_38 < iVar4) {
        local_38 = iVar4;
      }
      if (local_34 < iStack_3c) {
        local_34 = iStack_3c;
      }
      uVar5 = uVar5 + 1;
      iStack_40 = iVar4;
    } while (uVar5 < uVar2);
  }
  *param_2 = local_38;
  param_2[1] = local_34;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00992430(int param_1)

{
  uint uVar1;
  undefined *puVar2;
  undefined4 unaff_EBX;
  undefined local_90 [12];
  undefined4 uStack_84;
  uint uStack_80;
  void *pvStack_7c;
  undefined **appuStack_74 [2];
  int local_6c;
  undefined auStack_4c [4];
  uint uStack_48;
  undefined4 uStack_38;
  uint uStack_34;
  void *pvStack_30;
  undefined4 local_20;
  void *pvStack_14;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea253;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_90;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032bfdd8,*(undefined4 *)(param_1 + 0x40));
  local_20 = *(undefined4 *)(param_1 + 0x1cc);
  local_4 = 0;
  puVar2 = (undefined *)(**(code **)(*(int *)(param_1 + 0x194) + 8))(local_90,local_20,uVar1);
  local_c._0_1_ = 1;
  if (auStack_4c != puVar2) {
    FID_conflict_assign(puVar2,0,0xffffffff);
  }
  local_c = (void *)((uint)local_c._1_3_ << 8);
  _free(pvStack_7c);
  if (7 < uStack_80) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBX);
  }
  uStack_80 = 7;
  uStack_84 = 0;
  local_6c = param_1;
  thunk_FUN_0091c170(appuStack_74);
  local_c = (void *)0xffffffff;
  _free(pvStack_30);
  if (7 < uStack_34) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_48);
  }
  uStack_34 = 7;
  uStack_38 = 0;
  uStack_48 = uStack_48 & 0xffff0000;
  appuStack_74[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00992590(int *param_1,uint param_2)

{
  uint uVar1;
  int *piVar2;
  HWND hWnd;
  int iVar3;
  LPCWSTR lpString;
  undefined auStack_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be1eb8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = (**(code **)(*param_1 + 4))(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  if (param_2 < uVar1) {
    *(undefined4 *)(param_1[0xd] + param_2 * 4) = 0xffffffff;
    *(undefined4 *)(param_1[0xc] + param_2 * 4) = 0xffffffff;
    piVar2 = (int *)FUN_00432231(auStack_18);
    iVar3 = *piVar2;
    uStack_4 = 0;
    if (*(uint *)(iVar3 + 0x18) < 8) {
      iVar3 = iVar3 + 4;
    }
    else {
      iVar3 = *(int *)(iVar3 + 4);
    }
    lpString = (LPCWSTR)(iVar3 + piVar2[1] * 2);
    hWnd = (HWND)FUN_00991740(param_2);
    SetWindowTextW(hWnd,lpString);
    uStack_4 = 0xffffffff;
    FUN_00432214();
    FUN_0091a950();
    ExceptionList = local_c;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\radiobox.cpp",0x18a,"wxRadioBox::SetString","IsValid(item)",
                 L"invalid radiobox index");
  }
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00992690(int *param_1,undefined4 param_2,uint param_3)

{
  uint uVar1;
  undefined4 uVar2;
  
  uVar1 = (**(code **)(*param_1 + 4))();
  if (param_3 < uVar1) {
    uVar2 = FUN_00991740(param_3);
    FUN_0095df20(param_2,uVar2);
    return param_2;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\radiobox.cpp",0x1a6,"wxRadioBox::GetString","IsValid(item)",
                 L"invalid radiobox index");
  }
  FUN_004325b6(PTR_DAT_03236318);
  return param_2;
}



void __thiscall FUN_00992710(int *param_1_00,undefined4 param_1,int *param_2)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int local_68;
  int local_64 [2];
  undefined local_5c [8];
  undefined local_54 [4];
  undefined4 local_50;
  undefined4 uStack_48;
  uint local_3c;
  void *local_38;
  uint uStack_34;
  void *local_30 [2];
  void *pvStack_28;
  int *piStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1ef0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  uVar2 = FUN_0091e100(local_5c);
  local_4 = 0;
  FUN_0090d9c0(param_1_00[0x4f],local_64,&local_68,uVar2);
  local_4 = 0xffffffff;
  FUN_00921450();
  iVar5 = (*param_2 + local_64[0]) * param_1_00[0x67] + local_64[0];
  iVar4 = local_68 / 2 + param_2[1] * param_1_00[0x68] + local_68;
  iVar3 = FUN_0044ce78(local_54);
  iVar3 = *(int *)(iVar3 + 0x14);
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  if (iVar3 != 0) {
    iVar4 = iVar4 + local_68 / 2;
  }
  uVar2 = (**(code **)(*param_1_00 + 0x338))(local_30);
  puStack_8 = (undefined *)0x1;
  (**(code **)(*param_1_00 + 600))(uVar2,local_64,0,0,0,0);
  _free(local_30[0]);
  if (7 < uStack_34) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_48);
  }
  iVar3 = uVar1 + 0x14;
  if (iVar5 < iVar3) {
    iVar5 = iVar3;
  }
  *piStack_18 = iVar5;
  piStack_18[1] = iVar4;
  ExceptionList = pvStack_28;
  return;
}



void __thiscall FUN_00992880(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 local_10;
  undefined4 local_c;
  undefined local_8 [8];
  
  if (*(int *)(param_1_00 + 0x1b8) == 0) {
    *param_1 = 1;
    param_1[1] = 1;
    return;
  }
  uVar1 = FUN_009922d0(local_8);
  FUN_00992710(&local_10,uVar1);
  *(undefined4 *)(param_1_00 + 0x130) = local_10;
  *(undefined4 *)(param_1_00 + 0x134) = local_c;
  *param_1 = local_10;
  param_1[1] = local_c;
  return;
}



void FUN_009928f0(undefined4 param_1,undefined4 param_2,int param_3,int param_4,byte param_5)

{
  undefined4 uVar1;
  int local_10;
  int local_c;
  undefined local_8 [8];
  
  if (((param_3 == -1) && ((param_5 & 1) != 0)) || ((param_4 == -1 && ((param_5 & 2) != 0)))) {
    uVar1 = FUN_009922d0(local_8);
    FUN_00992710(&local_10,uVar1);
    if ((param_3 == -1) && ((param_5 & 1) != 0)) {
      param_3 = local_10;
    }
    if ((param_4 == -1) && ((param_5 & 2) != 0)) {
      param_4 = local_c;
    }
  }
  FUN_00911700(param_1,param_2,param_3,param_4,3);
  return;
}



void __thiscall FUN_00992970(int param_1_00,int param_1,uint param_2,int param_3,int param_4)

{
  uint *puVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  bool bVar7;
  int local_4c;
  int local_48;
  uint uStack_44;
  int local_40 [2];
  int local_38;
  int iStack_34;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  iVar6 = param_2;
  iVar5 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1f18;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  FUN_00916180(param_1,param_2,param_3,param_4);
  FUN_009922d0(&local_38);
  uVar3 = FUN_0091e100(local_40);
  local_4 = 0;
  FUN_0090d9c0(*(undefined4 *)(param_1_00 + 0x13c),&local_4c,&param_1,uVar3,uVar2);
  local_4 = 0xffffffff;
  FUN_00921450();
  iVar5 = iVar5 + local_4c;
  iVar6 = iVar6 + param_1;
  param_4 = iVar6;
  iVar4 = FUN_0044ce78(local_30);
  iVar4 = *(int *)(iVar4 + 0x14);
  _free(local_14);
  if (local_18 < 8) {
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    if (iVar4 != 0) {
      iVar6 = iVar6 + param_1 / 2;
      param_4 = iVar6;
    }
    local_48 = iVar5;
    local_40[0] = iVar6;
    uStack_44 = (**(code **)(*(int *)(param_1_00 + 0x194) + 4))();
    param_2 = 0;
    if (uStack_44 != 0) {
      do {
        if ((*(byte *)(param_1_00 + 0xe0) & 4) == 0) {
          bVar7 = (uStack_44 / *(uint *)(param_1_00 + 0x198)) * *(uint *)(param_1_00 + 0x198) <=
                  param_2;
        }
        else if (((param_2 + 1) % *(uint *)(param_1_00 + 0x198) == 0) || (param_2 + 1 == uStack_44))
        {
          bVar7 = true;
        }
        else {
          bVar7 = false;
        }
        if ((param_2 != 0) && (param_2 % *(uint *)(param_1_00 + 0x198) == 0)) {
          if ((*(byte *)(param_1_00 + 0xe0) & 8) == 0) {
            param_4 = param_4 + iStack_34;
            iVar5 = local_48;
            if (0 < **(int **)(param_1_00 + 0x1c4)) {
              param_4 = param_4 + param_1 / 2;
            }
          }
          else {
            param_4 = local_40[0];
            iVar5 = iVar5 + local_4c + local_38;
          }
        }
        iVar4 = local_38;
        if ((bVar7) && (iVar4 = ((local_48 + local_4c * -2) - iVar5) + param_3, iVar4 < local_38)) {
          iVar4 = local_38;
        }
        puVar1 = *(uint **)(param_1_00 + 0x1b8);
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*puVar1 <= param_2)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/msw/subwin.h",0x39,"wxSubwindows::Get",
                       "n < m_count",L"subwindow index out of range");
        }
        FUN_00915ef0(*(undefined4 *)(puVar1[1] + param_2 * 4),iVar5,param_4,iVar4,iStack_34);
        if ((*(byte *)(param_1_00 + 0xe0) & 8) == 0) {
          iVar5 = iVar5 + iVar4 + local_4c;
        }
        else {
          param_4 = param_4 + iStack_34;
          if (0 < **(int **)(param_1_00 + 0x1c4)) {
            param_4 = param_4 + param_1 / 2;
          }
        }
        param_2 = param_2 + 1;
      } while (param_2 < uStack_44);
    }
    ExceptionList = local_c;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_2c);
}



uint __thiscall FUN_00992cf0(int *param_1,int *param_2)

{
  uint *puVar1;
  uint uVar2;
  int *piVar3;
  uint uVar4;
  undefined auStack_10 [16];
  
  uVar2 = (**(code **)(*param_1 + 4))();
  uVar4 = 0;
  if (uVar2 != 0) {
    do {
      puVar1 = (uint *)param_1[9];
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*puVar1 <= uVar4)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/msw/subwin.h",0x39,"wxSubwindows::Get",
                     "n < m_count",L"subwindow index out of range");
      }
      piVar3 = (int *)FUN_00917e70(auStack_10,*(undefined4 *)(puVar1[1] + uVar4 * 4));
      if ((((*piVar3 <= *param_2) && (*param_2 < piVar3[2])) && (piVar3[1] <= param_2[1])) &&
         (param_2[1] < piVar3[3])) {
        return uVar4;
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar2);
  }
  return 0xffffffff;
}



undefined ** FUN_00992db0(void)

{
  return &PTR_u_wxRegion_0323bec8;
}



undefined ** FUN_00992dc0(void)

{
  return &PTR_u_wxRegionIterator_0323bee0;
}



undefined4 __thiscall
FUN_00992dd0(int param_1_00,int *param_1,int *param_2,int *param_3,int *param_4)

{
  tagRECT local_10;
  
  if (*(int *)(param_1_00 + 4) != 0) {
    GetRgnBox(*(HRGN *)(*(int *)(param_1_00 + 4) + 8),&local_10);
    *param_1 = local_10.left;
    *param_2 = local_10.top;
    *param_3 = local_10.right - local_10.left;
    *param_4 = local_10.bottom - local_10.top;
    return 1;
  }
  *param_4 = 0;
  *param_3 = 0;
  *param_2 = 0;
  *param_1 = 0;
  return 0;
}



bool __thiscall FUN_00992e50(int param_1_00,int param_1)

{
  BOOL BVar1;
  
  BVar1 = EqualRgn(*(HRGN *)(*(int *)(param_1_00 + 4) + 8),*(HRGN *)(*(int *)(param_1 + 4) + 8));
  return BVar1 != 0;
}



uint __thiscall FUN_00992e80(int param_1_00,int param_1,int param_2)

{
  uint uVar1;
  BOOL BVar2;
  
  uVar1 = *(uint *)(param_1_00 + 4);
  if (uVar1 == 0) {
    return uVar1;
  }
  BVar2 = PtInRegion(*(HRGN *)(uVar1 + 8),param_1,param_2);
  return -(uint)(BVar2 != 0) & 2;
}



undefined4 __fastcall FUN_00992eb0(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    return *(undefined4 *)(*(int *)(param_1 + 4) + 8);
  }
  return 0;
}



void __fastcall FUN_00992ec0(int param_1)

{
  if (*(int *)(param_1 + 8) < *(int *)(param_1 + 0xc)) {
    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
  }
  return;
}



undefined4 __fastcall FUN_00992ed0(int param_1)

{
  if (*(int *)(param_1 + 8) < *(int *)(param_1 + 0xc)) {
    return *(undefined4 *)(*(int *)(param_1 + 8) * 0x10 + *(int *)(param_1 + 0x18));
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\region.cpp",0x1b7,"wxRegionIterator::GetX",
                 "m_current < m_numRects",L"invalid wxRegionIterator");
  }
  return 0;
}



undefined4 __fastcall FUN_00992f10(int param_1)

{
  if (*(int *)(param_1 + 8) < *(int *)(param_1 + 0xc)) {
    return *(undefined4 *)(*(int *)(param_1 + 8) * 0x10 + 4 + *(int *)(param_1 + 0x18));
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\region.cpp",0x1be,"wxRegionIterator::GetY",
                 "m_current < m_numRects",L"invalid wxRegionIterator");
  }
  return 0;
}



undefined4 __fastcall FUN_00992f50(int param_1)

{
  if (*(int *)(param_1 + 8) < *(int *)(param_1 + 0xc)) {
    return *(undefined4 *)(*(int *)(param_1 + 8) * 0x10 + 8 + *(int *)(param_1 + 0x18));
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\region.cpp",0x1c5,"wxRegionIterator::GetW",
                 "m_current < m_numRects",L"invalid wxRegionIterator");
  }
  return 0;
}



undefined4 __fastcall FUN_00992f90(int param_1)

{
  if (*(int *)(param_1 + 8) < *(int *)(param_1 + 0xc)) {
    return *(undefined4 *)(*(int *)(param_1 + 8) * 0x10 + 0xc + *(int *)(param_1 + 0x18));
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\region.cpp",0x1cc,"wxRegionIterator::GetH",
                 "m_current < m_numRects",L"invalid wxRegionIterator");
  }
  return 0;
}



undefined4 * __thiscall FUN_00992fd0(undefined4 *param_1_00,int param_1)

{
  uint uVar1;
  DWORD nCount;
  LPRGNDATA lpRgnData;
  HRGN pHVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be1f48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  param_1_00[1] = 1;
  *param_1_00 = wxRegionRefData::vftable;
  local_4 = 0;
  nCount = GetRegionData(*(HRGN *)(param_1 + 8),0,(LPRGNDATA)0x0);
  lpRgnData = (LPRGNDATA)FUN_00823c23(nCount,uVar1);
  GetRegionData(*(HRGN *)(param_1 + 8),nCount,lpRgnData);
  pHVar2 = ExtCreateRegion((XFORM *)0x0,nCount,lpRgnData);
  param_1_00[2] = pHVar2;
  FUN_00a3f66c(lpRgnData);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00993070(undefined4 *param_1,byte param_2)

{
  *param_1 = wxRegionRefData::vftable;
  DeleteObject((HGDIOBJ)param_1[2]);
  param_1[2] = 0;
  *param_1 = wxRefCounter::vftable;
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 * FUN_009930b0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 1;
    *puVar1 = wxRegionRefData::vftable;
    puVar1[2] = 0;
    return puVar1;
  }
  return (undefined4 *)0x0;
}



undefined4 FUN_009930e0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xc);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00992fd0(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __fastcall FUN_00993150(int *param_1)

{
  undefined *puVar1;
  undefined *puVar2;
  undefined local_10 [4];
  undefined local_c [4];
  undefined local_8 [4];
  undefined local_4 [4];
  
  puVar2 = local_8;
  puVar1 = local_4;
  (**(code **)(*param_1 + 0x38))(puVar1,puVar2,local_10,local_c);
  if ((puVar1 == (undefined *)0x0) && (puVar2 == (undefined *)0x0)) {
    return 1;
  }
  return 0;
}



byte __thiscall FUN_00993190(int param_1_00,int *param_1)

{
  BOOL BVar1;
  RECT local_10;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    return 0;
  }
  local_10.left = *param_1;
  local_10.top = param_1[1];
  local_10.right = param_1[2] + local_10.left;
  local_10.bottom = param_1[3] + local_10.top;
  BVar1 = RectInRegion(*(HRGN *)(*(int *)(param_1_00 + 4) + 8),&local_10);
  return -(BVar1 != 0) & 2;
}



void __fastcall FUN_009931f0(undefined4 *param_1)

{
  *param_1 = wxRegion::vftable;
  param_1[1] = 0;
  return;
}



undefined4 * __thiscall FUN_00993200(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxRegion::vftable;
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    *puVar1 = wxRegionRefData::vftable;
    puVar1[2] = 0;
  }
  param_1_00[1] = puVar1;
  puVar1[2] = param_1;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_00993290(undefined4 *param_1_00,int param_1,int param_2,int param_3,int param_4)

{
  undefined4 *puVar1;
  HRGN pHVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxRegion::vftable;
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    *puVar1 = wxRegionRefData::vftable;
    puVar1[2] = 0;
  }
  param_1_00[1] = puVar1;
  pHVar2 = CreateRectRgn(param_1,param_2,param_3 + param_1,param_2 + param_4);
  *(HRGN *)(param_1_00[1] + 8) = pHVar2;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00993330(undefined4 *param_1_00,int *param_1)

{
  undefined4 *puVar1;
  HRGN pHVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcb8a8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxRegion::vftable;
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    *puVar1 = wxRegionRefData::vftable;
    puVar1[2] = 0;
  }
  param_1_00[1] = puVar1;
  pHVar2 = CreateRectRgn(*param_1,param_1[1],param_1[2] + *param_1,param_1[3] + param_1[1]);
  *(HRGN *)(param_1_00[1] + 8) = pHVar2;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009933d0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxRegionIterator::vftable;
  local_4 = 0;
  FUN_00a3f66c(param_1[6],uVar1);
  param_1[4] = wxObject::vftable;
  FUN_0083e850();
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00993450(undefined4 param_1_00,byte param_1)

{
  FUN_009933d0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_009934c0(int param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  longlong lVar5;
  char cVar6;
  uint uVar7;
  DWORD nCount;
  LPRGNDATA lpRgnData;
  void *pvVar8;
  int *piVar9;
  char *pcVar10;
  int iVar11;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be1f7b;
  local_c = ExceptionList;
  uVar7 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 8) = 0;
  if ((int *)(param_1_00 + 0x10) != param_1) {
    FUN_0083ea60(param_1);
  }
  if (*(int *)(param_1_00 + 0x18) != 0) {
    FUN_00a3f66c(*(int *)(param_1_00 + 0x18),uVar7);
    *(undefined4 *)(param_1_00 + 0x18) = 0;
  }
  cVar6 = (**(code **)(*(int *)(param_1_00 + 0x10) + 0x2c))();
  if (cVar6 == '\0') {
    nCount = GetRegionData(*(HRGN *)(param_1[1] + 8),0,(LPRGNDATA)0x0);
    lpRgnData = (LPRGNDATA)FUN_00823c23(nCount);
    GetRegionData(*(HRGN *)(param_1[1] + 8),nCount,lpRgnData);
    uVar7 = (lpRgnData->rdh).nCount;
    lVar5 = (ulonglong)uVar7 * 0x10;
    pvVar8 = (void *)FUN_00823c23(-(uint)((int)((ulonglong)lVar5 >> 0x20) != 0) | (uint)lVar5);
    uStack_4 = 0;
    if (pvVar8 == (void *)0x0) {
      pvVar8 = (void *)0x0;
    }
    else {
      _vector_constructor_iterator_(pvVar8,0x10,uVar7,(_func_void_ptr_void_ptr *)&LAB_00446180);
    }
    iVar11 = 0;
    *(void **)(param_1_00 + 0x18) = pvVar8;
    pcVar10 = lpRgnData->Buffer;
    param_1 = (int *)0x0;
    if ((lpRgnData->rdh).nCount != 0) {
      do {
        iVar1 = *(int *)pcVar10;
        iVar2 = *(int *)(pcVar10 + 8);
        iVar3 = *(int *)(pcVar10 + 4);
        iVar4 = *(int *)(pcVar10 + 0xc);
        piVar9 = (int *)(*(int *)(param_1_00 + 0x18) + iVar11);
        *piVar9 = iVar1;
        piVar9[1] = iVar3;
        piVar9[2] = iVar2 - iVar1;
        piVar9[3] = iVar4 - iVar3;
        param_1 = (int *)((int)param_1 + 1);
        pcVar10 = pcVar10 + 0x10;
        iVar11 = iVar11 + 0x10;
      } while (param_1 < (lpRgnData->rdh).nCount);
    }
    *(DWORD *)(param_1_00 + 0xc) = (lpRgnData->rdh).nCount;
    FUN_00a3f66c(lpRgnData);
  }
  else {
    *(undefined4 *)(param_1_00 + 0xc) = 0;
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_00993620(undefined4 *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be1fb3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxRegionIterator::vftable;
  param_1_00[4] = wxRegion::vftable;
  param_1_00[5] = 0;
  param_1_00[6] = 0;
  local_4 = 1;
  FUN_009934c0(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00993690(int param_1_00,int param_1,int param_2)

{
  char cVar1;
  HRGN hrgn;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(*(int *)(param_1_00 + 4) + 8) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    ExceptionList = local_c;
    return 0;
  }
  if ((param_1 != 0) || (param_2 != 0)) {
    FUN_0083eaa0();
    if (*(int *)(param_1_00 + 4) == 0) {
      hrgn = (HRGN)0x0;
    }
    else {
      hrgn = *(HRGN *)(*(int *)(param_1_00 + 4) + 8);
    }
    iVar2 = OffsetRgn(hrgn,param_1,param_2);
    if (iVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return 0;
      }
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
      ExceptionList = local_c;
      return 0;
    }
  }
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_00993810(int param_1_00,int param_1,undefined4 param_2)

{
  HRGN hrgnDst;
  char cVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  if (*(int *)(param_1_00 + 4) == 0) {
    switch(param_2) {
    case 0:
    case 2:
      return 0;
    case 1:
    case 3:
    case 4:
      if (param_1_00 != param_1) {
        ExceptionList = &local_c;
        FUN_0083ea60();
      }
      break;
    default:
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
        return 0;
      }
      ExceptionList = &local_c;
      FUN_00840480();
      ExceptionList = local_c;
      return 0;
    }
  }
  else {
    ExceptionList = &local_c;
    FUN_0083eaa0();
    switch(param_2) {
    case 0:
      iVar2 = 1;
      break;
    case 2:
      iVar2 = 4;
      break;
    case 3:
      iVar2 = 2;
      break;
    case 4:
      iVar2 = 3;
      break;
    default:
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480();
      }
    case 1:
      iVar2 = 5;
    }
    hrgnDst = *(HRGN *)(*(int *)(param_1_00 + 4) + 8);
    iVar2 = CombineRgn(hrgnDst,hrgnDst,*(HRGN *)(*(int *)(param_1 + 4) + 8),iVar2);
    if (iVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
      ExceptionList = local_c;
      return 0;
    }
  }
  ExceptionList = local_c;
  return 1;
}



void FUN_00993a30(int param_1)

{
  if (param_1 + 32000U < 0x7531) {
    if (*(char *)((int)&DAT_032e92a8 + param_1) == '\0') {
      *(undefined *)((int)&DAT_032e92a8 + param_1) = 0xff;
      return;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\windowid.cpp",0x49,
                   "`anonymous-namespace\'::ReserveIdRefCount",
                   "gs_autoIdsRefCount[winid] == ID_FREE",L"id already in use or already reserved");
      return;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\windowid.cpp",0x44,
                 "`anonymous-namespace\'::ReserveIdRefCount",
                 "winid >= wxID_AUTO_LOWEST && winid <= wxID_AUTO_HIGHEST",L"invalid id range");
  }
  return;
}



uint FUN_00993ab0(int param_1)

{
  uint uVar1;
  uint *puVar2;
  
  if (param_1 + 32000U < 0x7531) {
    uVar1 = (uint)*(byte *)((int)&DAT_032e92a8 + param_1);
    param_1 = param_1 + 32000;
    if (uVar1 == 0xfe) {
      puVar2 = (uint *)FUN_009dbfa0(&param_1);
      return *puVar2;
    }
  }
  else {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\windowid.cpp",0x5e,"`anonymous-namespace\'::GetIdRefCount",
                   "winid >= wxID_AUTO_LOWEST && winid <= wxID_AUTO_HIGHEST",L"invalid id range");
    }
    uVar1 = 0;
  }
  return uVar1;
}



void FUN_00993b20(int *param_1)

{
  void **ppvVar1;
  
  ppvVar1 = (void **)*param_1;
  if (ppvVar1 != (void **)0x0) {
    FUN_00893cf0(ppvVar1[1],*ppvVar1,&LAB_00981b50);
    ppvVar1[2] = (void *)0x0;
    _free(*ppvVar1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(ppvVar1);
  }
  return;
}



// WARNING: Removing unreachable block (ram,0x00993df2)
// WARNING: Removing unreachable block (ram,0x00993e62)
// WARNING: Removing unreachable block (ram,0x00993dcc)

int FUN_00993b60(int param_1)

{
  short sVar1;
  char cVar2;
  int iVar3;
  short *psVar4;
  int iVar5;
  int iVar6;
  uint local_54;
  void *local_50;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1ff3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 < 1)) {
    FUN_00840480();
  }
  iVar5 = DAT_0323bef8;
  if (DAT_0323bef8 + -1 + param_1 < -1999) {
    if (param_1 != 0) {
      do {
        DAT_0323bef8 = DAT_0323bef8 + 1;
        param_1 = param_1 + -1;
        FUN_00993a30();
      } while (param_1 != 0);
    }
  }
  else {
    iVar5 = 0;
    iVar6 = -32000;
    do {
      iVar3 = FUN_00993ab0();
      if (iVar3 == 0) {
        iVar5 = iVar5 + 1;
        if (iVar5 == param_1) {
          if (DAT_0323bef8 <= iVar6) {
            DAT_0323bef8 = iVar6 + 1;
          }
          if (param_1 != 0) {
            do {
              param_1 = param_1 + -1;
              FUN_00993a30();
              iVar6 = iVar6 + -1;
            } while (param_1 != 0);
          }
          ExceptionList = local_c;
          return iVar6 + 1;
        }
      }
      else {
        iVar5 = 0;
      }
      iVar6 = iVar6 + 1;
    } while (iVar6 < -1999);
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 != '\0') {
      psVar4 = (short *)PTR_DAT_03236318;
      if (PTR_DAT_03236318 == (undefined *)0x0) {
        psVar4 = &DAT_00fae9c8;
      }
      do {
        sVar1 = *psVar4;
        psVar4 = psVar4 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign();
      local_4 = 0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar5 = FUN_0084a340();
      if (iVar5 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 2;
      __time64((__time64_t *)0x0);
      GetCurrentThreadId();
      local_4._0_1_ = 3;
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 2;
      _free((void *)0x0);
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      _free(local_50);
      if (7 < local_54) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free((void *)0x0);
    }
    iVar5 = -3;
  }
  ExceptionList = local_c;
  return iVar5;
}



void __thiscall
FUN_00993ea0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  
  FUN_00820e3f(param_4,param_2,2);
  FUN_00820e3f(param_3,param_2,1);
  uVar1 = FUN_008854f0(param_4,param_2);
  FUN_0084d410(param_1_00,param_1,uVar1);
  return;
}



void FUN_00993ef0(int param_1)

{
  byte bVar1;
  char cVar2;
  void *pvVar3;
  undefined4 *puVar4;
  int *piVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be2049;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1 + 32000U < 0x7531) && (bVar1 = *(byte *)((int)&DAT_032e92a8 + param_1), bVar1 != 0))
  {
    if (bVar1 == 0xff) {
      *(undefined *)((int)&DAT_032e92a8 + param_1) = 1;
    }
    else if (bVar1 < 0xfd) {
      *(byte *)((int)&DAT_032e92a8 + param_1) = bVar1 + 1;
    }
    else {
      if (bVar1 == 0xfd) {
        if (DAT_032e8adc == 0) {
          pvVar3 = operator_new(0x10);
          local_4 = 0;
          if (pvVar3 == (void *)0x0) {
            DAT_032e8adc = 0;
          }
          else {
            DAT_032e8adc = FUN_00908980();
          }
        }
        local_4 = 0xffffffff;
        puVar4 = (undefined4 *)FUN_009dbfa0();
        *puVar4 = 0xfd;
        *(undefined *)((int)&DAT_032e92a8 + param_1) = 0xfe;
      }
      piVar5 = (int *)FUN_009dbfa0();
      *piVar5 = *piVar5 + 1;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(7);
    if (cVar2 != '\0') {
      FUN_0081c0f1();
      local_4 = 1;
      FUN_004325b6();
      local_4._0_1_ = 2;
      FUN_008423d0();
      local_4._0_1_ = 3;
      FUN_00993ab0();
      FUN_00993ea0();
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_00842440();
      FUN_0040159c();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
      ExceptionList = local_c;
      return;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480();
  }
  ExceptionList = local_c;
  return;
}



void FUN_00994130(int param_1)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  undefined auStack_c8 [12];
  undefined4 uStack_bc;
  char *pcStack_b8;
  char *pcStack_b4;
  char *pcStack_b0;
  char *pcStack_ac;
  wchar_t *pwStack_a8;
  uint uStack_a4;
  undefined *local_98;
  undefined local_94 [20];
  undefined local_80 [116];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be515b;
  local_c = ExceptionList;
  uStack_a4 = DAT_0323f878 ^ (uint)&stack0xffffff60;
  if (param_1 + 32000U < 0x7531) {
    cVar2 = *(char *)((int)&DAT_032e92a8 + param_1);
    if (cVar2 != '\0') {
      if (cVar2 == -1) {
        ExceptionList = &local_c;
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          pwStack_a8 = L"reserve id being decreased";
          pcStack_ac = "Assert failure";
          pcStack_b0 = "`anonymous-namespace\'::DecIdRefCount";
          pcStack_b4 = (char *)0x99;
          pcStack_b8 = "..\\..\\src\\common\\windowid.cpp";
          uStack_bc = 0x9941b2;
          FUN_00840480();
        }
        *(undefined *)((int)&DAT_032e92a8 + param_1) = 0;
      }
      else if (cVar2 == -2) {
        pwStack_a8 = (wchar_t *)&local_98;
        pcStack_ac = (char *)0x9941d6;
        ExceptionList = &local_c;
        local_98 = (undefined *)(param_1 + 32000);
        piVar3 = (int *)FUN_009dbfa0();
        *piVar3 = *piVar3 + -1;
        if (*piVar3 == 0) {
          pwStack_a8 = (wchar_t *)&local_98;
          pcStack_ac = (char *)0x9941ef;
          local_98 = (undefined *)(param_1 + 32000);
          FUN_009115c0();
          iVar1 = DAT_032e8adc;
          *(undefined *)((int)&DAT_032e92a8 + param_1) = 0;
          if (*(int *)(iVar1 + 8) == 0) {
            pwStack_a8 = (wchar_t *)&DAT_032e8adc;
            pcStack_ac = (char *)0x99420b;
            FUN_00993b20();
          }
        }
      }
      else {
        ExceptionList = &local_c;
        *(char *)((int)&DAT_032e92a8 + param_1) = cVar2 + -1;
      }
      local_98 = auStack_c8;
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(7);
      if (cVar2 == '\0') {
        ExceptionList = local_c;
        return;
      }
      pwStack_a8 = L"Decreasing ref count of ID %d to %d";
      pcStack_ac = (char *)0x99424b;
      FUN_0081c0f1();
      pwStack_a8 = L"windowid";
      local_4 = 0;
      pcStack_ac = (char *)0x994264;
      FUN_004325b6();
      pwStack_a8 = (wchar_t *)&DAT_00d25fa0;
      pcStack_ac = "`anonymous-namespace\'::DecIdRefCount";
      pcStack_b0 = (char *)0xac;
      pcStack_b4 = "..\\..\\src\\common\\windowid.cpp";
      pcStack_b8 = (char *)0x7;
      local_4._0_1_ = 1;
      uStack_bc = 0x99428b;
      FUN_008423d0();
      pwStack_a8 = (wchar_t *)param_1;
      local_4._0_1_ = 2;
      pcStack_ac = (char *)0x9942a1;
      pwStack_a8 = (wchar_t *)FUN_00993ab0();
      pcStack_ac = (char *)param_1;
      pcStack_b0 = local_94;
      pcStack_b4 = local_80;
      pcStack_b8 = (char *)0x9942b7;
      FUN_00993ea0();
      local_4 = CONCAT31(local_4._1_3_,1);
      pwStack_a8 = L"䲍␤쯨ꛒ跿⑌윐⒄\xa0";
      FUN_00842440();
      pwStack_a8 = L"䲍ဤ蓇ꀤ";
      FUN_0040159c();
      local_4 = 0xffffffff;
      pwStack_a8 = L"貋頤";
      FUN_0081b5bc();
      ExceptionList = local_c;
      return;
    }
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    pwStack_a8 = L"id count already 0";
    pcStack_ac = "gs_autoIdsRefCount[winid] != ID_FREE";
    pcStack_b4 = (char *)0x93;
  }
  else {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    pwStack_a8 = L"invalid id range";
    pcStack_ac = "winid >= wxID_AUTO_LOWEST && winid <= wxID_AUTO_HIGHEST";
    pcStack_b4 = (char *)0x8f;
  }
  pcStack_b0 = "`anonymous-namespace\'::DecIdRefCount";
  pcStack_b8 = "..\\..\\src\\common\\windowid.cpp";
  uStack_bc = 0x994343;
  ExceptionList = &local_c;
  FUN_00840480();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00994360(int *param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = *param_1_00;
  if (param_1 != iVar1) {
    if ((-0x7d01 < iVar1) && (iVar1 < -1999)) {
      FUN_00994130(iVar1);
    }
    *param_1_00 = param_1;
    if ((-0x7d01 < param_1) && (param_1 < -1999)) {
      FUN_00993ef0(param_1);
    }
  }
  return;
}



undefined ** FUN_009943b0(void)

{
  return &PTR_u_wxScrollBar_0323befc;
}



undefined4 * FUN_009943c0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x1a0);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0044ced6(uVar1);
    *puVar2 = wxScrollBar::vftable;
    puVar2[0x65] = 0;
    puVar2[0x66] = 0;
    puVar2[0x67] = 0;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __fastcall FUN_00994480(undefined4 *param_1)

{
  *param_1 = wxScrollBar::vftable;
  FUN_0044cd6b();
  return;
}



void __thiscall FUN_00994490(int param_1_00,int param_1)

{
  SCROLLINFO local_1c;
  
  local_1c.nPage = 0;
  local_1c.nMin = 0;
  local_1c.nPos = param_1;
  local_1c.cbSize = 0x1c;
  local_1c.fMask = 4;
  SetScrollInfo(*(HWND *)(param_1_00 + 0x13c),2,&local_1c,1);
  return;
}



void __thiscall FUN_009945a0(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar1 = 100;
  uVar2 = 100;
  if ((*(uint *)(param_1_00 + 0xe0) >> 3 & 1) == 0) {
    uVar2 = FUN_008fedb0(0x1b,0);
  }
  else {
    uVar1 = FUN_008fedb0(0x1c,0);
  }
  param_1[1] = uVar2;
  *(undefined4 *)(param_1_00 + 0x130) = uVar1;
  *(undefined4 *)(param_1_00 + 0x134) = uVar2;
  *param_1 = uVar1;
  return;
}



void __thiscall FUN_00994620(int param_1,undefined4 param_2,ushort param_3)

{
  int iVar1;
  char cVar2;
  BOOL BVar3;
  undefined auStack_128 [8];
  undefined4 uStack_120;
  undefined *puStack_11c;
  char *pcStack_118;
  char *pcStack_114;
  tagSCROLLINFO local_f0;
  undefined *puStack_d4;
  undefined auStack_d0 [100];
  undefined **ppuStack_6c;
  int iStack_64;
  uint uStack_40;
  undefined4 uStack_30;
  uint uStack_2c;
  void *pvStack_28;
  int iStack_20;
  int iStack_1c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be208e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_f0;
  ExceptionList = &local_c;
  local_f0.nMin = 0;
  local_f0.nMax = 0;
  local_f0.nPage = 0;
  local_f0.nPos = 0;
  local_f0.nTrackPos = 0;
  local_f0.cbSize = 0x1c;
  local_f0.fMask = 0x15;
  pcStack_114 = (char *)0x99469f;
  BVar3 = GetScrollInfo(*(HWND *)(param_1 + 0x13c),2,&local_f0);
  iVar1 = local_f0.nPos;
  if (BVar3 == 0) {
    puStack_d4 = auStack_128;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 != '\0') {
      FUN_0081c0f1();
      pcStack_114 = "..\\..\\src\\msw\\scrolbar.cpp";
      pcStack_118 = (char *)0x6;
      uStack_4 = 0;
      puStack_11c = (undefined *)0x994701;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      pcStack_114 = (char *)0x3e;
      pcStack_118 = "..\\..\\src\\msw\\scrolbar.cpp";
      puStack_11c = auStack_d0;
      uStack_120 = 0x994738;
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  else {
    if (param_3 < 9) {
                    // WARNING: Treating indirect jump as call
      (*(code *)(&PTR_LAB_00994944)[param_3])();
      return;
    }
    if ((DAT_032bd44c == DAT_032bfe9c) || (DAT_032bd44c == DAT_032bfea0)) {
      pcStack_114 = (char *)DAT_032bd44c;
      pcStack_118 = (char *)0x99485f;
      FUN_0092bdb0();
      uStack_4 = 2;
      iStack_20 = iVar1;
      iStack_1c = (uint)((*(uint *)(param_1 + 0xe0) >> 3 & 1) != 0) * 4 + 4;
      iStack_64 = param_1;
      FUN_0091c170();
      uStack_4 = 0xffffffff;
      _free(pvStack_28);
      if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_2c = 7;
      uStack_30 = 0;
      uStack_40 = uStack_40 & 0xffff0000;
      ppuStack_6c = wxObject::vftable;
      FUN_0083e850();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int __fastcall FUN_00994970(int param_1)

{
  char cVar1;
  BOOL BVar2;
  undefined auStack_bc [8];
  undefined4 uStack_b4;
  undefined *puStack_b0;
  char *pcStack_ac;
  char *pcStack_a8;
  tagSCROLLINFO local_90;
  undefined *puStack_74;
  undefined auStack_70 [100];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be20d0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_90.nMin = 0;
  local_90.nMax = 0;
  local_90.nPage = 0;
  local_90.nPos = 0;
  local_90.nTrackPos = 0;
  local_90.cbSize = 0x1c;
  local_90.fMask = 4;
  pcStack_a8 = (char *)0x9949dc;
  BVar2 = GetScrollInfo(*(HWND *)(param_1 + 0x13c),2,&local_90);
  if (BVar2 == 0) {
    puStack_74 = auStack_bc;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      pcStack_a8 = "..\\..\\src\\msw\\scrolbar.cpp";
      pcStack_ac = (char *)0x6;
      uStack_4 = 0;
      puStack_b0 = (undefined *)0x994a41;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      pcStack_a8 = (char *)0xa6;
      pcStack_ac = "..\\..\\src\\msw\\scrolbar.cpp";
      puStack_b0 = auStack_70;
      uStack_b4 = 0x994a7b;
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return local_90.nPos;
}



void __thiscall FUN_00994ac0(HDC *param_1_00,HDC param_1,HGDIOBJ param_2)

{
  HDC pHVar1;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 != (HDC)0x0)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/msw/private.h",0x1ce,"SelectInHDC::Init","!m_hdc"
                 ,L"initializing twice?");
  }
  *param_1_00 = param_1;
  pHVar1 = (HDC)SelectObject(param_1,param_2);
  param_1_00[1] = pHVar1;
  return;
}



void FUN_00994b10(LOGFONTW *param_1)

{
  HFONT pHVar1;
  
  pHVar1 = CreateFontIndirectW(param_1);
  FUN_008f24e0(pHVar1);
  return;
}



void FUN_00994b30(int param_1,RECT *param_2)

{
  int iVar1;
  uint uVar2;
  HBRUSH hbr;
  undefined4 uVar3;
  undefined *puVar4;
  undefined local_30 [16];
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be2118;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1 + 8);
  hbr = (HBRUSH)FUN_00910100(*(undefined4 *)(iVar1 + 0x108));
  FUN_0095d530(uVar2);
  local_4 = 0;
  if (hbr == (HBRUSH)0x0) {
    uVar3 = FUN_0091de40(local_20);
    local_4._0_1_ = 1;
    puVar4 = (undefined *)FUN_0095d7e0(uVar3,100);
    local_4._0_1_ = 2;
    if (local_30 != puVar4) {
      FUN_0083ea60(puVar4);
    }
    local_4._0_1_ = 1;
    FUN_008f7630();
    local_4 = (uint)local_4._1_3_ << 8;
    local_20[0] = wxObject::vftable;
    FUN_0083e850();
    hbr = (HBRUSH)FUN_0095db20();
  }
  FillRect(*(HDC *)(iVar1 + 0x108),param_2,hbr);
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00994c20(int *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  uint *puVar3;
  int iVar4;
  int iVar5;
  uint local_68;
  undefined local_64 [4];
  undefined local_60 [4];
  undefined local_5c [4];
  undefined4 uStack_58;
  uint local_54;
  void *pvStack_50;
  undefined4 uStack_44;
  uint local_30;
  void *pvStack_2c;
  void *pvStack_24;
  int *piStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be2158;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  uVar2 = FUN_0091e100(local_5c);
  local_4 = 0;
  FUN_0090d9c0(param_1[0x4f],local_64,&local_68,uVar2,uVar1);
  local_4 = 0xffffffff;
  FUN_00921450();
  uVar2 = FUN_0095df20(&local_30,param_1[0x4f]);
  local_4 = 1;
  uVar2 = FUN_00937650(&local_54,uVar2);
  iVar5 = 0;
  iVar4 = 0;
  puVar3 = &local_68;
  local_4 = CONCAT31(local_4._1_3_,2);
  (**(code **)(*param_1 + 600))(uVar2,local_60);
  _free(pvStack_50);
  if (7 < local_54) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_68);
  }
  local_54 = 7;
  uStack_58 = 0;
  local_68 = local_68 & 0xffff0000;
  _free(pvStack_2c);
  if (7 < local_30) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_44);
  }
  iVar5 = iVar5 + iVar4 * 3;
  *piStack_14 = iVar5;
  piStack_14[1] = (int)(puVar3 + 2);
  param_1[0x4c] = iVar5;
  param_1[0x4d] = (int)(puVar3 + 2);
  ExceptionList = pvStack_24;
  return;
}



void __fastcall FUN_00994db0(int param_1)

{
  HRGN hrgn;
  HWND hWnd;
  BOOL BVar1;
  uint uVar2;
  int iVar3;
  HRGN hrgnSrc2;
  undefined auStack_48 [3];
  char cStack_45;
  tagRECT local_44;
  undefined auStack_34 [4];
  undefined4 uStack_30;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be2188;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_48;
  ExceptionList = &local_c;
  GetWindowRect(*(HWND *)(param_1 + 0x13c),&local_44);
  hrgn = CreateRectRgn(local_44.left,local_44.top,local_44.right + 1,local_44.bottom + 1);
  cStack_45 = '\0';
  hWnd = GetWindow(*(HWND *)(*(int *)(param_1 + 0x44) + 0x13c),5);
  do {
    if (hWnd == (HWND)0x0) {
      ExceptionList = local_c;
      ___security_check_cookie_4();
      return;
    }
    BVar1 = IsWindowVisible(hWnd);
    if (BVar1 != 0) {
      uVar2 = GetWindowLongW(hWnd,-0x10);
      FUN_0095dfc0(auStack_34,hWnd);
      uStack_4 = 0;
      FUN_00850fc0();
      iVar3 = FUN_008507a0(L"BUTTON");
      if ((iVar3 == 0) && (((byte)uVar2 & 7) == 7)) {
        if (hWnd == *(HWND *)(param_1 + 0x13c)) {
          cStack_45 = '\x01';
        }
        else if (cStack_45 == '\0') goto LAB_00994eca;
        uStack_4 = 0xffffffff;
        _free(pvStack_18);
      }
      else {
LAB_00994eca:
        GetWindowRect(hWnd,&local_44);
        BVar1 = RectInRegion(hrgn,&local_44);
        if (BVar1 != 0) {
          if ((uVar2 & 0x4000000) != 0) {
            SetWindowLongW(hWnd,-0x10,uVar2 & 0xfbffffff);
            SetWindowPos(hWnd,(HWND)0x0,0,0,0,0,0x27);
          }
          hrgnSrc2 = CreateRectRgnIndirect(&local_44);
          CombineRgn(hrgn,hrgn,hrgnSrc2,4);
          if (hrgnSrc2 != (HRGN)0x0) {
            DeleteObject(hrgnSrc2);
          }
        }
        uStack_4 = 0xffffffff;
        _free(pvStack_18);
      }
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
    }
    hWnd = GetWindow(hWnd,2);
  } while( true );
}



// WARNING: Removing unreachable block (ram,0x00995224)
// WARNING: Removing unreachable block (ram,0x00995168)
// WARNING: Removing unreachable block (ram,0x00995374)
// WARNING: Removing unreachable block (ram,0x009953a1)
// WARNING: Removing unreachable block (ram,0x009953a8)

void __thiscall FUN_00994fa0(int *param_1_00,int param_1,int param_2)

{
  HDC hdc;
  HDC hDC;
  undefined3 uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  HBRUSH hbr;
  uint uVar6;
  undefined4 *****lpchText;
  int unaff_EBX;
  HGDIOBJ unaff_EBP;
  UINT format;
  int iStack_108;
  undefined4 uStack_104;
  HDC pHStack_100;
  HGDIOBJ pvStack_fc;
  tagRECT tStack_f8;
  int iStack_e8;
  RECT RStack_e0;
  undefined auStack_c4 [4];
  undefined **ppuStack_c0;
  undefined4 uStack_bc;
  uint uStack_a8;
  void *pvStack_a4;
  undefined auStack_a0 [4];
  undefined auStack_9c [4];
  undefined4 *****apppppuStack_98 [4];
  int iStack_88;
  uint uStack_84;
  void *pvStack_80;
  undefined auStack_7c [100];
  void *pvStack_18;
  undefined4 uStack_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be2216;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&iStack_108;
  ExceptionList = &local_c;
  iVar4 = *(int *)(param_1 + 8);
  RStack_e0.right = param_1;
  tStack_f8.bottom = param_2;
  (**(code **)(*param_1_00 + 0x2fc))
            (0xf,*(undefined4 *)(iVar4 + 0x108),0,DAT_0323f878 ^ (uint)&stack0xfffffee8);
  if (((((*(byte *)(param_1_00 + 0x37) & 0x20) != 0) && (iVar2 = FUN_0098e820(), iVar2 != 0)) &&
      (iVar3 = (**(code **)(iVar2 + 0x94))(), iVar3 != 0)) &&
     (iVar2 = (**(code **)(iVar2 + 0x90))(), iVar2 != 0)) {
    hdc = *(HDC *)(iVar4 + 0x108);
    iVar4 = FUN_0091df90(&ppuStack_c0);
    SetTextColor(hdc,*(COLORREF *)(iVar4 + 8));
    ppuStack_c0 = wxObject::vftable;
    FUN_0083e850();
    iVar4 = (**(code **)(*DAT_032bcb68 + 0xe4))();
    if (iVar4 == 2) {
      SetTextAlign(hdc,0x102);
    }
    (**(code **)(*param_1_00 + 0x58))(auStack_9c);
    uStack_104 = 0;
    pHStack_100 = (HDC)0x0;
    uStack_14._1_3_ = 0;
    uVar1 = uStack_14._1_3_;
    uStack_14._0_1_ = 2;
    uStack_14._1_3_ = 0;
    if ((*(byte *)(param_1_00 + 0x37) & 0x40) == 0) {
      uStack_14._1_3_ = uVar1;
      FUN_0090e7e0(param_1_00,L"BUTTON");
      uStack_14._0_1_ = 4;
      if (unaff_EBX != 0) {
        iVar4 = FUN_0098e820();
        iVar4 = (**(code **)(iVar4 + 0x58))(unaff_EBX,hdc,4,1,0xd2,auStack_7c);
        if (iVar4 == 0) {
          FUN_00994b10(auStack_7c);
        }
      }
      uStack_14._0_1_ = 2;
      if (unaff_EBX != 0) {
        iVar4 = FUN_0098e820();
        (**(code **)(iVar4 + 4))(unaff_EBX);
      }
    }
    else {
      FUN_0091e100(&stack0xfffffef4);
      uStack_14._0_1_ = 3;
      uVar5 = FUN_009229f0();
      FUN_00994ac0(hdc,uVar5);
      uStack_14._0_1_ = 2;
      FUN_00921450();
    }
    uVar5 = FUN_008feb60(auStack_c4,auStack_a0,1);
    iVar4 = iStack_e8;
    uStack_14 = CONCAT31(uStack_14._1_3_,5);
    (**(code **)(**(int **)(iStack_e8 + 8) + 0xa4))(uVar5,&stack0xfffffef0,&tStack_f8.bottom,0,0,0);
    local_10 = CONCAT31(local_10._1_3_,2);
    _free(pvStack_a4);
    if (7 < uStack_a8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_bc);
    }
    iStack_108 = iStack_e8;
    RStack_e0.top = 0;
    RStack_e0.left = 7;
    RStack_e0.right = unaff_EBX + 0xb;
    RStack_e0.bottom = iStack_e8 + 2;
    if ((*(byte *)(param_1_00 + 0x37) & 0x10) == 0) {
      (**(code **)(*param_1_00 + 0x364))(iVar4,&RStack_e0);
    }
    else {
      uVar5 = FUN_0091de40(&ppuStack_c0);
      local_10._0_1_ = 6;
      FUN_0095d7e0(uVar5,100);
      local_10._0_1_ = 8;
      ppuStack_c0 = wxObject::vftable;
      FUN_0083e850();
      hDC = *(HDC *)(*(int *)(iVar4 + 8) + 0x108);
      hbr = (HBRUSH)FUN_0095db20();
      FillRect(hDC,&RStack_e0,hbr);
      local_10 = CONCAT31(local_10._1_3_,2);
      FUN_008f7630();
    }
    format = 0x24;
    if ((DAT_032e8ae4 & 1) == 0) {
      DAT_032e8ae4 = DAT_032e8ae4 | 1;
      local_10 = CONCAT31(local_10._1_3_,9);
      iVar4 = FUN_00894b40();
      DAT_032e8ae0 = 0x500 < iVar4;
    }
    if ((DAT_032e8ae0 != '\0') &&
       (uVar6 = SendMessageW((HWND)param_1_00[0x4f],0x129,0,0), (uVar6 & 2) != 0)) {
      format = 0x100024;
    }
    tStack_f8.right = unaff_EBX + 9;
    lpchText = apppppuStack_98[0];
    if (uStack_84 < 8) {
      lpchText = apppppuStack_98;
    }
    tStack_f8.bottom = iStack_108;
    tStack_f8.top = 0;
    tStack_f8.left = 9;
    DrawTextW(hdc,(LPCWSTR)lpchText,iStack_88,&tStack_f8,format);
    if (pHStack_100 != (HDC)0x0) {
      SelectObject(pHStack_100,pvStack_fc);
    }
    if (unaff_EBP != (HGDIOBJ)0x0) {
      DeleteObject(unaff_EBP);
    }
    _free(pvStack_80);
    if (7 < uStack_84) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(apppppuStack_98[0]);
    }
  }
  ExceptionList = pvStack_18;
  ___security_check_cookie_4();
  return;
}



uint FUN_00995440(undefined4 param_1,uint *param_2)

{
  byte bVar1;
  char cVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  uVar4 = FUN_00936390(param_1,param_2);
  if (param_2 == (uint *)0x0) goto LAB_0099550f;
  FUN_004325b6(L"msw.staticbox.optimized-paint");
  local_4 = 0;
  cVar2 = FUN_008970b0(local_30,uVar3);
  if (cVar2 == '\0') {
LAB_009954c1:
    bVar1 = 0;
  }
  else {
    iVar5 = FUN_00897050(local_30);
    if (iVar5 != 0) goto LAB_009954c1;
    bVar1 = 1;
  }
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  *param_2 = -(uint)bVar1 & 0x20;
LAB_0099550f:
  uVar3 = uVar4 & 0xfdffffff | 7;
  iVar5 = (**(code **)(*DAT_032bcb68 + 0xe4))();
  if (iVar5 == 2) {
    uVar3 = uVar4 & 0xfdffffff | 0x207;
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 __thiscall FUN_00995550(int *param_1_00,int param_1,HDC param_2,int param_3)

{
  HWND hWnd;
  int iVar1;
  HDC hDC;
  int iVar2;
  char cVar3;
  HBRUSH hbr;
  int iVar4;
  undefined4 uVar5;
  tagRECT local_40;
  undefined **local_30;
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  iVar2 = param_3;
  hDC = param_2;
  iVar1 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be2268;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == 0x84) {
    if (DAT_0323bf14 == -1) {
      FUN_004325b6(L"msw.staticbox.htclient");
      local_4 = 0;
      DAT_0323bf14 = FUN_00897050(&local_30);
      local_4 = 0xffffffff;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
    }
    if (DAT_0323bf14 == 1) {
      param_1 = (int)(short)((uint)iVar2 >> 0x10);
      param_3 = (int)(short)iVar2;
      (**(code **)(*param_1_00 + 0x260))(&param_3,&param_1);
      if (param_1 < 10) {
        ExceptionList = local_c;
        return 1;
      }
    }
  }
  else {
    if (param_1 == 0x318) {
      cVar3 = FUN_00910170(param_2);
      if (cVar3 == '\0') {
        uVar5 = FUN_0091de40(&local_30);
        local_4 = 1;
        FUN_0095d7e0(uVar5,100);
        local_4 = CONCAT31(local_4._1_3_,3);
        local_30 = wxObject::vftable;
        FUN_0083e850();
        hWnd = (HWND)param_1_00[0x4f];
        hbr = (HBRUSH)FUN_0095db20();
        GetClientRect(hWnd,&local_40);
        FillRect(hDC,&local_40,hbr);
        local_4 = 0xffffffff;
        FUN_008f7630();
      }
      ExceptionList = local_c;
      return 0;
    }
    if ((param_1 == 0x128) && ((*(byte *)(param_1_00 + 0x37) & 0x20) != 0)) {
      iVar4 = FUN_00894b40(DAT_0323f878 ^ (uint)&stack0xffffffac);
      if (iVar4 == 0x501) {
        (**(code **)(*param_1_00 + 0x15c))(1,0);
      }
    }
  }
  uVar5 = FUN_0090d970(iVar1,param_2,iVar2);
  ExceptionList = local_c;
  return uVar5;
}



void __fastcall FUN_00995740(int param_1_00,int param_2_00,int param_1,int param_2)

{
  char cVar1;
  HRGN hrgnSrc2;
  HRGN unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be22a8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  hrgnSrc2 = CreateRectRgn(param_1,param_2_00,param_1_00,param_2);
  uStack_4 = 0;
  if (hrgnSrc2 == (HRGN)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4._0_1_ = 1;
      FUN_008423d0();
      uStack_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4._0_1_ = 1;
      FUN_00842440();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_0081b5bc();
      ExceptionList = local_c;
      return;
    }
  }
  else {
    CombineRgn(unaff_EDI,unaff_EDI,hrgnSrc2,4);
    DeleteObject(hrgnSrc2);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00995900(int param_1)

{
  *(undefined *)(param_1 + 0x194) = 0;
  return;
}



void __thiscall FUN_00995930(int *param_1_00,char param_1)

{
  int *piVar1;
  int iVar2;
  bool bVar3;
  bool bVar4;
  char cVar5;
  int *piVar6;
  undefined4 uVar7;
  int iVar8;
  int iVar9;
  int *piVar10;
  undefined **ppuVar11;
  
  SendMessageW((HWND)param_1_00[0x4f],0xf1,(uint)(param_1 != '\0'),0);
  *(char *)(param_1_00 + 0x65) = param_1;
  if (param_1 != '\0') {
    piVar6 = (int *)FUN_0091ac40();
    uVar7 = FUN_0091cdc0(param_1_00,&PTR_u_wxTopLevelWindow_03239ae4);
    iVar8 = FUN_0048a085(uVar7);
    if (iVar8 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\msw\\radiobut.cpp",0x77,"wxRadioButton::SetValue",&DAT_00d588c4,
                     L"radio button outside of TLW?");
        return;
      }
    }
    else {
      piVar1 = *(int **)(iVar8 + 0x1bc);
      iVar9 = FUN_0086af40(param_1_00);
      if (iVar9 == 0) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\msw\\radiobut.cpp",0x7c,"wxRadioButton::SetValue","nodeThis",
                       L"radio button not a child of its parent?");
          return;
        }
      }
      else {
        bVar3 = false;
        bVar4 = false;
        if (((uint)param_1_00[0x38] >> 2 & 1) == 0) {
          for (iVar2 = *(int *)(iVar9 + 0x10); iVar2 != 0; iVar2 = *(int *)(iVar2 + 0x10)) {
            piVar10 = (int *)FUN_0048a085(*(undefined4 *)(iVar2 + 8),&PTR_u_wxRadioButton_0323b678);
            if (piVar10 != (int *)0x0) {
              if (((uint)piVar10[0x38] >> 3 & 1) != 0) break;
              if (piVar10 == piVar6) {
                bVar3 = true;
              }
              else if (piVar10 == piVar1) {
                bVar4 = true;
              }
              (**(code **)(*piVar10 + 0x358))(0);
              if (((uint)piVar10[0x38] >> 2 & 1) != 0) break;
            }
          }
        }
        for (iVar9 = *(int *)(iVar9 + 0xc); iVar9 != 0; iVar9 = *(int *)(iVar9 + 0xc)) {
          piVar10 = *(int **)(iVar9 + 8);
          if ((piVar10 != (int *)0x0) &&
             (((ppuVar11 = (undefined **)(**(code **)*piVar10)(),
               ppuVar11 == &PTR_u_wxRadioButton_0323b678 ||
               ((ppuVar11[3] != (undefined *)0x0 &&
                (cVar5 = FUN_0048a047(&PTR_u_wxRadioButton_0323b678), cVar5 != '\0')))) ||
              ((ppuVar11[4] != (undefined *)0x0 &&
               (cVar5 = FUN_0048a047(&PTR_u_wxRadioButton_0323b678), cVar5 != '\0')))))) {
            if ((*(byte *)(piVar10 + 0x38) & 0xc) != 0) break;
            if (piVar10 == piVar6) {
              bVar3 = true;
            }
            else if (piVar10 == piVar1) {
              bVar4 = true;
            }
            (**(code **)(*piVar10 + 0x358))(0);
          }
        }
        if (bVar3) {
          (**(code **)(*param_1_00 + 0x100))();
        }
        else if (bVar4) {
          *(int **)(iVar8 + 0x1bc) = param_1_00;
          return;
        }
      }
    }
  }
  return;
}



void __thiscall FUN_00995bf0(int *param_1_00,int param_1)

{
  undefined auStack_6c [4];
  int *piStack_68;
  undefined4 uStack_24;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda698;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_6c;
  ExceptionList = &local_c;
  if ((param_1 == 0) && (*(char *)(param_1_00 + 0x65) == '\0')) {
    (**(code **)(*param_1_00 + 0x358))(1,DAT_0323f878 ^ (uint)&stack0xffffff90);
    FUN_0092bd60(DAT_032bfddc,param_1_00[0x10]);
    puStack_8 = (undefined *)0x0;
    uStack_24 = 1;
    piStack_68 = param_1_00;
    thunk_FUN_0091c170(&stack0xffffff90);
    puStack_8 = (undefined *)0xffffffff;
    FUN_00454a4e();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00995cb0(int *param_1_00,int *param_1)

{
  undefined4 uVar1;
  int iVar2;
  int unaff_ESI;
  int iStack_74;
  undefined4 uStack_70;
  int *piStack_68;
  int *local_64;
  undefined local_60 [4];
  uint uStack_5c;
  void *pvStack_58;
  undefined auStack_38 [4];
  undefined4 local_34 [4];
  int iStack_24;
  undefined4 uStack_20;
  void *pvStack_1c;
  void *local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00be22f0;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&iStack_74);
  ExceptionList = &local_c;
  if (DAT_032e8ae8 == 0) {
    FUN_0094bed0(DAT_0323f878 ^ (uint)&stack0xffffff84);
    local_4 = 0;
    uVar1 = FUN_008ff360(local_60,0x11);
    local_4 = CONCAT31(local_4._1_3_,1);
    (**(code **)(*local_64 + 0x50))(uVar1);
    uStack_8 = (undefined *)((uint)uStack_8 & 0xffffff00);
    FUN_00921450();
    DAT_032e8ae8 = (**(code **)(*piStack_68 + 0x98))();
    local_4 = 0xffffffff;
    FUN_00457221();
  }
  (**(code **)(*param_1_00 + 0x58))(local_34);
  uStack_8 = (undefined *)0x2;
  iVar2 = DAT_032e8ae8;
  if (iStack_24 != 0) {
    uVar1 = FUN_00937650(&uStack_5c,auStack_38);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,3);
    (**(code **)(*param_1_00 + 600))(uVar1,&stack0xffffff88,&iStack_74,0,0,0);
    uStack_20 = CONCAT31(uStack_20._1_3_,2);
    _free(pvStack_58);
    if (7 < uStack_5c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_70);
    }
    iVar2 = (**(code **)(*param_1_00 + 0x198))();
    iVar2 = unaff_ESI + iVar2 + DAT_032e8ae8;
    if (DAT_032e8ae8 <= iStack_74) goto LAB_00995e0d;
  }
  iStack_74 = DAT_032e8ae8;
LAB_00995e0d:
  *param_1 = iVar2;
  param_1[1] = iStack_74;
  param_1_00[0x4c] = iVar2;
  param_1_00[0x4d] = param_1[1];
  _free(pvStack_1c);
  if (uStack_20 < 8) {
    ExceptionList = local_10;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_34[0]);
}



void __fastcall FUN_00995e70(int param_1)

{
  *(undefined4 *)(param_1 + 0x194) = 0;
  *(undefined4 *)(param_1 + 0x1a0) = 1;
  *(undefined4 *)(param_1 + 0x1a4) = 1;
  *(undefined4 *)(param_1 + 0x19c) = 0;
  *(undefined4 *)(param_1 + 0x198) = 0;
  *(undefined4 *)(param_1 + 0x1a8) = 0;
  *(undefined *)(param_1 + 0x1ac) = 0;
  return;
}



undefined4 * __thiscall FUN_00995ff0(uint *param_1_00,undefined4 *param_1)

{
  uint uVar1;
  tagRECT local_20;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  uVar1 = 0;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  if (*param_1_00 != 0) {
    do {
      if (*(int *)(param_1_00[1] + uVar1 * 4) != 0) {
        GetWindowRect(*(HWND *)(param_1_00[1] + uVar1 * 4),&local_20);
        local_8 = local_20.right - local_20.left;
        local_10 = local_20.left;
        local_4 = local_20.bottom - local_20.top;
        local_c = local_20.top;
        FUN_008f7640(&local_10);
      }
      uVar1 = uVar1 + 1;
    } while (uVar1 < *param_1_00);
  }
  return param_1;
}



undefined4 * __thiscall FUN_009960a0(int param_1_00,undefined4 *param_1)

{
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined local_10 [4];
  undefined local_c [12];
  
  FUN_009182b0(&local_20,&local_1c);
  FUN_00918220(&local_18,&local_14);
  *param_1 = local_20;
  param_1[1] = local_1c;
  param_1[2] = local_18;
  param_1[3] = local_14;
  if (*(int *)(param_1_00 + 0x194) != 0) {
    FUN_00995ff0(local_10);
    (**(code **)(**(int **)(param_1_00 + 0x44) + 0x260))(local_10,local_c);
    FUN_008f7640(&local_18);
  }
  return param_1;
}



void FUN_00996130(undefined4 *param_1,undefined4 *param_2)

{
  undefined local_10 [8];
  undefined4 local_8;
  undefined4 local_4;
  
  FUN_009960a0(local_10);
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = local_8;
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = local_4;
  }
  return;
}



void FUN_00996160(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 local_10;
  undefined4 local_c;
  
  FUN_009960a0(&local_10);
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = local_10;
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = local_c;
  }
  return;
}



void __fastcall FUN_00996380(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf0198;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxSlider::vftable;
  iVar1 = param_1[0x65];
  local_4 = 0;
  if (iVar1 != 0) {
    FUN_00991e50();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  local_4 = 0xffffffff;
  FUN_0044cd6b(uVar2);
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_00996400(int *param_1_00,undefined4 param_1,undefined2 param_2,undefined4 param_3,HWND param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  uint uVar3;
  LRESULT LVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined auStack_c8 [4];
  int *piStack_c4;
  int iStack_80;
  undefined auStack_70 [8];
  int *piStack_68;
  int iStack_24;
  uint local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uVar2 = DAT_032bfe9c;
  uVar1 = DAT_032bfe98;
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00be2333;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_c8;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_c;
  uVar7 = DAT_032bfea0;
  switch(param_2) {
  case 0:
    uVar7 = DAT_032bfe88;
    break;
  case 1:
    uVar7 = DAT_032bfe8c;
    break;
  case 2:
    uVar7 = DAT_032bfe90;
    break;
  case 3:
    uVar7 = DAT_032bfe94;
    break;
  case 4:
    if (*(char *)(param_1_00 + 0x6b) != '\0') {
      *(undefined *)(param_1_00 + 0x6b) = 0;
      uVar7 = uVar2;
    }
    break;
  case 5:
    *(undefined *)(param_1_00 + 0x6b) = 1;
    uVar7 = uVar1;
    break;
  case 6:
    uVar7 = DAT_032bfe80;
    break;
  case 7:
    uVar7 = DAT_032bfe84;
    break;
  case 8:
    break;
  default:
    goto switchD_00996457_caseD_9;
  }
  iVar5 = *param_1_00;
  LVar4 = SendMessageW(param_4,0x400,0,0);
  iVar5 = (**(code **)(iVar5 + 0x3a4))(LVar4,uVar3);
  iVar6 = (**(code **)(*param_1_00 + 0x364))();
  if ((iVar6 <= iVar5) && (iVar6 = (**(code **)(*param_1_00 + 0x368))(), iVar5 <= iVar6)) {
    (**(code **)(*param_1_00 + 0x35c))(iVar5);
    FUN_0092bdb0(uVar7,param_1_00[0x10],0,0);
    uStack_8 = (undefined *)0x0;
    piStack_68 = param_1_00;
    iStack_24 = iVar5;
    FUN_0091c170(auStack_70);
    FUN_0092bd60(DAT_032bfdd4,param_1_00[0x10]);
    uStack_8._0_1_ = 1;
    piStack_c4 = param_1_00;
    iStack_80 = iVar5;
    FUN_0091c170(&stack0xffffff34);
    uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
    FUN_00454a4e();
    uStack_4 = 0xffffffff;
    FUN_00a1f4e0();
  }
switchD_00996457_caseD_9:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_009965f0(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined local_20 [20];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5f41;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  FUN_0081c0f1(&DAT_00d2b618);
  local_4 = 1;
  FUN_00821558(param_1,local_20,param_2,uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00996680(int *param_1_00,undefined4 *param_1,int *param_2)

{
  undefined4 *puVar1;
  int *piVar2;
  undefined4 uVar3;
  uint *puStack_6c;
  undefined4 uStack_44;
  uint uStack_3c;
  void *pvStack_38;
  uint local_30;
  void *pvStack_2c;
  undefined4 uStack_1c;
  undefined4 uStack_14;
  undefined auStack_10 [4];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  piVar2 = param_2;
  puVar1 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be2380;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1 != (undefined4 *)0x0) && (param_2 != (int *)0x0)) {
    puStack_6c = &local_30;
    uVar3 = FUN_009965f0();
    puStack_6c = (uint *)0x0;
    local_4 = 0;
    (**(code **)(*param_1_00 + 600))(uVar3,&param_1,&param_2,0);
    *puVar1 = uStack_14;
    uStack_1c = 0xffffffff;
    _free(pvStack_2c);
    if (7 < local_30) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_44);
    }
    uVar3 = FUN_009965f0(&puStack_6c,param_1_00[0x67]);
    uStack_1c = 1;
    (**(code **)(*param_1_00 + 600))(uVar3,&uStack_14,auStack_10,0,0,0);
    *piVar2 = (int)param_1;
    local_4 = 0xffffffff;
    puStack_6c = (uint *)0x99677e;
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      puStack_6c = (uint *)&UNK_00996791;
      FUN_00a3f6a1();
    }
  }
  if ((param_1_00[0x38] & 0x6000U) == 0) {
    ExceptionList = local_c;
    return 0;
  }
  uVar3 = (**(code **)(*param_1_00 + 0x194))();
  ExceptionList = local_c;
  return uVar3;
}



int * __thiscall FUN_00996c60(int *param_1_00,int *param_1)

{
  int *piVar1;
  int *piVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  piVar2 = param_1;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be23a0;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  piVar1 = param_1 + 1;
  *param_1 = 0;
  *piVar1 = 0;
  local_10 = param_1_00;
  if (((uint)param_1_00[0x38] >> 3 & 1) == 0) {
    *param_1 = 100;
    *piVar1 = 0x18;
    piVar5 = piVar1;
    if (param_1_00[0x65] == 0) goto LAB_00996d51;
    if ((param_1_00[0x38] & 0x6000U) == 0) {
      iVar4 = 0;
    }
    else {
      iVar4 = (**(code **)(*param_1_00 + 0x194))(uVar3);
    }
    if ((((uint)param_1_00[0x38] >> 0xd & 1) != 0) && (((uint)param_1_00[0x38] >> 4 & 1) == 0)) {
      *piVar1 = *piVar1 + iVar4;
    }
    if (((uint)param_1_00[0x38] >> 0xe & 1) == 0) goto LAB_00996d51;
  }
  else {
    *param_1 = 0x18;
    *piVar1 = 100;
    piVar5 = param_1;
    if (param_1_00[0x65] == 0) goto LAB_00996d51;
    iVar4 = FUN_00996680(&param_1,&local_10);
    piVar5 = piVar2;
    if (((uint)param_1_00[0x38] >> 0xd & 1) != 0) {
      if ((int)param_1 <= (int)local_10) {
        param_1 = local_10;
      }
      *piVar2 = (int)param_1 + *piVar2 + 5;
    }
  }
  *piVar1 = *piVar1 + iVar4;
LAB_00996d51:
  if (((uint)param_1_00[0x38] >> 4 & 1) != 0) {
    *piVar5 = *piVar5 + 8;
    if (((uint)param_1_00[0x38] >> 10 & 1) != 0) {
      *piVar5 = *piVar5 + 8;
    }
  }
  ExceptionList = local_c;
  return piVar2;
}



void __thiscall FUN_00996da0(int *param_1_00,undefined4 param_1)

{
  LPARAM lParam;
  int iVar1;
  LPCWSTR lpString;
  HWND pHVar2;
  undefined4 uStack_30;
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pHVar2 = (HWND)param_1_00[0x4f];
  lParam = (**(code **)(*param_1_00 + 0x3a4))(param_1,DAT_0323f878 ^ (uint)&stack0xffffffc4);
  SendMessageW(pHVar2,0x405,1,lParam);
  if (param_1_00[0x65] != 0) {
    iVar1 = FUN_009965f0(&stack0xffffffcc,param_1);
    puStack_8 = (undefined *)0x0;
    if (*(uint *)(iVar1 + 0x18) < 8) {
      lpString = (LPCWSTR)(iVar1 + 4);
    }
    else {
      lpString = *(LPCWSTR *)(iVar1 + 4);
    }
    pHVar2 = (HWND)FUN_00991740(2);
    SetWindowTextW(pHVar2,lpString);
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
  }
  ExceptionList = pvStack_10;
  return;
}



void __thiscall FUN_00996e70(int *param_1_00,LPARAM param_1,int param_2)

{
  undefined4 uVar1;
  int iVar2;
  HWND pHVar3;
  LPCWSTR pWVar4;
  LPARAM lParam;
  undefined4 local_58;
  undefined auStack_54 [4];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined auStack_34 [4];
  undefined4 uStack_30;
  uint uStack_1c;
  void *pvStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be5460;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (((uint)param_1_00[0x38] >> 0xc & 1) == 0) {
    local_58 = 0;
  }
  else {
    local_58 = (**(code **)(*param_1_00 + 0x358))(DAT_0323f878 ^ (uint)&stack0xffffff98);
  }
  param_1_00[0x67] = param_2;
  param_1_00[0x66] = param_1;
  SendMessageW((HWND)param_1_00[0x4f],0x407,1,param_1);
  SendMessageW((HWND)param_1_00[0x4f],0x408,1,param_1_00[0x67]);
  if (param_1_00[0x65] != 0) {
    uVar1 = (**(code **)(*param_1_00 + 0x3a4))(param_1_00[0x66]);
    iVar2 = FUN_009965f0(auStack_34,uVar1);
    puStack_8 = (undefined *)0x0;
    if (*(uint *)(iVar2 + 0x18) < 8) {
      pWVar4 = (LPCWSTR)(iVar2 + 4);
    }
    else {
      pWVar4 = *(LPCWSTR *)(iVar2 + 4);
    }
    pHVar3 = (HWND)FUN_00991740(0);
    SetWindowTextW(pHVar3,pWVar4);
    puStack_8 = (undefined *)0xffffffff;
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
    uVar1 = (**(code **)(*param_1_00 + 0x3a4))(param_1_00[0x67]);
    iVar2 = FUN_009965f0(auStack_54,uVar1);
    uStack_4 = 1;
    if (*(uint *)(iVar2 + 0x18) < 8) {
      pWVar4 = (LPCWSTR)(iVar2 + 4);
    }
    else {
      pWVar4 = *(LPCWSTR *)(iVar2 + 4);
    }
    pHVar3 = (HWND)FUN_00991740(1);
    SetWindowTextW(pHVar3,pWVar4);
    uStack_4 = 0xffffffff;
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
  }
  if (((uint)param_1_00[0x38] >> 0xc & 1) != 0) {
    pHVar3 = (HWND)param_1_00[0x4f];
    lParam = (**(code **)(*param_1_00 + 0x3a4))(local_58);
    SendMessageW(pHVar3,0x405,1,lParam);
  }
  ExceptionList = local_c;
  return;
}



undefined ** FUN_00997060(void)

{
  return &PTR_u_wxSlider_0323bf18;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1b0);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00919b60(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined * FUN_009970e0(void)

{
  return &DAT_0323bf4c;
}



undefined ** FUN_009970f0(void)

{
  return &PTR_u_wxSpinEvent_0323bf64;
}



undefined4 * FUN_00997100(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x19c);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0044ced6(uVar1);
    puVar2[0x65] = 0;
    puVar2[0x66] = 100;
    *puVar2 = wxSpinButton::vftable;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_00997190(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x60);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0092bd60(DAT_032bd44c,0);
    *(undefined *)(puVar1 + 0x17) = 1;
    *puVar1 = wxSpinEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __fastcall FUN_00997200(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x60);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a2df(param_1);
    *puVar1 = wxNotifyEvent::vftable;
    *(undefined *)(puVar1 + 0x17) = *(undefined *)(param_1 + 0x5c);
    *puVar1 = wxSpinEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __fastcall FUN_00997270(int *param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *param_1;
  uVar2 = (**(code **)(iVar1 + 0x358))();
  (**(code **)(iVar1 + 0x364))(uVar2);
  return;
}



void __fastcall FUN_00997290(undefined4 *param_1)

{
  *param_1 = wxSpinButton::vftable;
  FUN_0044cd6b();
  return;
}



undefined4 __thiscall FUN_009972a0(int *param_1,undefined4 param_2)

{
  uint uVar1;
  
  uVar1 = (**(code **)(*param_1 + 0xe8))();
  (**(code **)(*param_1 + 0x350))(param_2,(byte)(uVar1 >> 3) & 1);
  return param_2;
}



int __fastcall FUN_009972d0(int param_1)

{
  int iVar1;
  LRESULT LVar2;
  
  iVar1 = FUN_008fc6f0();
  if (iVar1 < 0x244) {
    LVar2 = SendMessageW(*(HWND *)(param_1 + 0x13c),0x468,0,0);
    iVar1 = (int)(short)LVar2;
  }
  else {
    iVar1 = SendMessageW(*(HWND *)(param_1 + 0x13c),0x472,0,0);
  }
  if (iVar1 < *(int *)(param_1 + 0x194)) {
    iVar1 = *(int *)(param_1 + 0x194);
  }
  if (*(int *)(param_1 + 0x198) < iVar1) {
    iVar1 = *(int *)(param_1 + 0x198);
  }
  return iVar1;
}



void __thiscall FUN_00997320(int param_1_00,uint param_1)

{
  int iVar1;
  
  iVar1 = FUN_008fc6f0();
  if (0x243 < iVar1) {
    SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x471,0,param_1);
    return;
  }
  SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x467,0,param_1 & 0xffff);
  return;
}



void __thiscall FUN_00997370(int *param_1_00,WPARAM param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  UINT Msg;
  
  iVar2 = param_1_00[0x65];
  iVar1 = param_1_00[0x66];
  param_1_00[0x65] = param_1;
  param_1_00[0x66] = param_2;
  iVar3 = FUN_008fc6f0();
  if (iVar3 < 0x1d7) {
    param_2 = param_1 << 0x10 | param_2 & 0xffff;
    param_1 = 0;
    Msg = 0x465;
  }
  else {
    Msg = 0x46f;
  }
  SendMessageW((HWND)param_1_00[0x4f],Msg,param_1,param_2);
  (**(code **)(*param_1_00 + 0x374))();
  if (iVar2 < iVar1 != param_1_00[0x65] < param_1_00[0x66]) {
    (**(code **)(*param_1_00 + 0x15c))(1,0);
  }
  return;
}



void __thiscall
FUN_00997410(int param_1_00,undefined4 param_1,short param_2,short param_3,int param_4)

{
  undefined **local_70 [2];
  int local_68;
  int local_24;
  undefined local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23f8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_70;
  ExceptionList = &local_c;
  if (param_4 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\spinbutt.cpp",0xed,"wxSpinButton::MSWOnScroll","control",
                   L"scrolling what?",DAT_0323f878 ^ (uint)&stack0xffffff88);
    }
  }
  else if (param_2 == 4) {
    FUN_0092bd60(DAT_032bfe98,*(undefined4 *)(param_1_00 + 0x40));
    local_14 = 1;
    local_70[0] = wxSpinEvent::vftable;
    local_24 = (int)param_3;
    local_4 = 0;
    local_68 = param_1_00;
    FUN_0091c170(local_70);
    local_4 = 0xffffffff;
    FUN_00a1f4e0();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00997510(int param_1_00,undefined4 param_1,int *param_2,uint *param_3)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined **local_70 [2];
  int local_68;
  uint local_44;
  undefined4 local_34;
  uint local_30;
  void *local_2c;
  int local_24;
  char local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be2428;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_70;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_c;
  if (*param_2 == *(int *)(param_1_00 + 0x13c)) {
    puVar2 = &DAT_032bfe88;
    if (param_2[4] < 1) {
      puVar2 = &DAT_032bfe8c;
    }
    FUN_0092bd60(*puVar2,*(undefined4 *)(param_1_00 + 0x40));
    local_14 = '\x01';
    local_70[0] = wxSpinEvent::vftable;
    local_24 = param_2[3] + param_2[4];
    local_4 = 0;
    local_68 = param_1_00;
    FUN_0091c170(local_70);
    local_4 = 0xffffffff;
    *param_3 = (uint)(local_14 == '\0');
    _free(local_2c);
    if (7 < local_30) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_44);
    }
    local_30 = 7;
    local_34 = 0;
    local_44 = local_44 & 0xffff0000;
    local_70[0] = wxObject::vftable;
    FUN_0083e850(uVar1);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall
FUN_00997640(int *param_1_00,undefined4 param_1,int *param_2,int *param_3,int param_4)

{
  uint uVar1;
  int nID;
  char cVar2;
  HINSTANCE hInst;
  HWND pHVar3;
  undefined4 uVar4;
  int unaff_EBX;
  int cx;
  int *unaff_retaddr;
  HWND hBuddy;
  int nUpper;
  int nLower;
  int nPos;
  uint dwStyle;
  int iStack_84;
  int iStack_80;
  int iStack_7c;
  int iStack_78;
  void *pvStack_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00be20d0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 == (int *)0xffffffff) {
    FUN_00993b60();
  }
  FUN_00994360();
  (**(code **)(*param_1_00 + 0x5c))();
  iStack_7c = *param_2;
  iStack_80 = param_2[1];
  cx = *param_3;
  iStack_78 = param_3[1];
  param_1_00[0x38] = param_4;
  param_1_00[0x11] = (int)unaff_retaddr;
  if ((cx < 1) || (iStack_78 < 1)) {
    (**(code **)(*param_1_00 + 0x280))();
    if (cx < 1) {
      cx = unaff_EBX;
    }
    if (iStack_78 < 1) {
      iStack_78 = iStack_84;
    }
  }
  if (iStack_7c < 0) {
    iStack_7c = 0;
  }
  if (iStack_80 < 0) {
    iStack_80 = 0;
  }
  uVar1 = param_1_00[0x38];
  dwStyle = 0x50010082;
  if ((uVar1 & 0x20000000) != 0) {
    dwStyle = 0x54010082;
  }
  if ((uVar1 & 4) != 0) {
    dwStyle = dwStyle | 0x40;
  }
  if ((uVar1 & 0x4000) != 0) {
    dwStyle = dwStyle | 0x20;
  }
  if ((uVar1 & 0x8000) != 0) {
    dwStyle = dwStyle | 1;
  }
  nLower = param_1_00[0x65];
  nUpper = param_1_00[0x66];
  nID = param_1_00[0x10];
  pHVar3 = (HWND)unaff_retaddr[0x4f];
  hBuddy = (HWND)0x0;
  nPos = nLower;
  hInst = (HINSTANCE)FUN_008a65e0();
  pHVar3 = CreateUpDownControl(dwStyle,iStack_7c,iStack_80,cx,iStack_78,pHVar3,nID,hInst,hBuddy,
                               nUpper,nLower,nPos);
  param_1_00[0x4f] = (int)pHVar3;
  if (pHVar3 == (HWND)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 != '\0') {
      FUN_0081c0f1();
      uStack_8 = (undefined *)0x0;
      FUN_008423d0();
      uStack_8._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
      FUN_00842440();
      uStack_8 = (undefined *)0xffffffff;
      FUN_0081b5bc();
    }
    uVar4 = 0;
  }
  else {
    (**(code **)(*unaff_retaddr + 0x124))();
    FUN_00914900();
    FUN_0091b600();
    uVar4 = 1;
  }
  ExceptionList = pvStack_10;
  return uVar4;
}



void FUN_009978c0(void)

{
  FUN_0091bae0();
  return;
}



undefined ** FUN_009978d0(void)

{
  return &PTR_PTR_00d69994;
}



undefined * FUN_009978e0(void)

{
  return &DAT_032e8af4;
}



int __fastcall FUN_00997a90(int param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((*(uint *)(param_1 + -0xc4) >> 4 & 1) != 0)) {
    FUN_00840480("..\\..\\src\\msw\\combobox.cpp",0x1b0,"wxComboBox::GetEditableWindow",
                 "!HasFlag(wxCB_READONLY)",L"read-only combobox doesn\'t have any edit control");
  }
  return param_1 + -0x1a4;
}



void __thiscall FUN_00997ae0(int *param_1_00,undefined4 param_1)

{
  if (((uint)param_1_00[-0x31] >> 4 & 1) != 0) {
    FUN_0096baa0();
    return;
  }
  (**(code **)(*param_1_00 + 0x84))(param_1,1);
  return;
}



void __thiscall FUN_00997b10(int param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  if ((*(uint *)(param_1_00 + -0xc4) >> 4 & 1) == 0) {
    FUN_00941050();
    return;
  }
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = 0xffffffff;
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = 0xffffffff;
  }
  return;
}



undefined4 __fastcall FUN_00997b50(int param_1)

{
  char cVar1;
  
  if ((*(uint *)(param_1 + -0xc4) >> 4 & 1) == 0) {
    cVar1 = FUN_009410a0();
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



void __thiscall FUN_00997d10(int *param_1,byte param_2)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (((uint)param_1[0x38] >> 2 & 1) != 0)) {
    FUN_00840480("..\\..\\src\\msw\\combobox.cpp",0x288,"wxComboBox::MSWDoPopupOrDismiss",
                 "!HasFlag(wxCB_SIMPLE)",L"can\'t popup/dismiss the list for simple combo box");
  }
  (**(code **)(*param_1 + 0x100))();
  SendMessageW((HWND)param_1[0x4f],0x14f,(uint)param_2,0);
  return;
}



int __thiscall FUN_00997dc0(int param_1_00,uint param_1,int param_2,uint param_3,uint param_4)

{
  undefined4 *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  
  if ((*(uint *)(param_1_00 + 0x14) < param_1) || (*(uint *)(param_2 + 0x14) < param_3)) {
    std::_String_base::_Xran();
  }
  uVar2 = *(int *)(param_2 + 0x14) - param_3;
  if (uVar2 < param_4) {
    param_4 = uVar2;
  }
  if (-*(int *)(param_1_00 + 0x14) - 1U <= param_4) {
    std::_String_base::_Xlen();
  }
  if (param_4 != 0) {
    uVar2 = *(int *)(param_1_00 + 0x14) + param_4;
    if (0x7ffffffe < uVar2) {
      std::_String_base::_Xlen();
    }
    if (*(uint *)(param_1_00 + 0x18) < uVar2) {
      FUN_004181eb(uVar2,*(undefined4 *)(param_1_00 + 0x14));
    }
    else if (uVar2 == 0) {
      *(undefined4 *)(param_1_00 + 0x14) = 0;
      if (7 < *(uint *)(param_1_00 + 0x18)) {
        **(undefined2 **)(param_1_00 + 4) = 0;
        return param_1_00;
      }
      *(undefined2 *)(param_1_00 + 4) = 0;
      return param_1_00;
    }
    if (uVar2 != 0) {
      puVar3 = (undefined4 *)(param_1_00 + 4);
      puVar1 = puVar3;
      if (7 < *(uint *)(param_1_00 + 0x18)) {
        puVar1 = (undefined4 *)*puVar3;
        puVar3 = (undefined4 *)*puVar3;
      }
      _memmove_s((void *)((int)puVar3 + (param_1 + param_4) * 2),
                 ((*(uint *)(param_1_00 + 0x18) - param_1) - param_4) * 2,
                 (void *)((int)puVar1 + param_1 * 2),(*(int *)(param_1_00 + 0x14) - param_1) * 2);
      if (param_1_00 == param_2) {
        if (param_1 < param_3) {
          param_3 = param_3 + param_4;
        }
        puVar3 = (undefined4 *)(param_1_00 + 4);
        puVar1 = puVar3;
        if (7 < *(uint *)(param_1_00 + 0x18)) {
          puVar1 = (undefined4 *)*puVar3;
          puVar3 = (undefined4 *)*puVar3;
        }
        _memmove_s((void *)((int)puVar3 + param_1 * 2),(*(uint *)(param_1_00 + 0x18) - param_1) * 2,
                   (void *)((int)puVar1 + param_3 * 2),param_4 * 2);
      }
      else {
        if (*(uint *)(param_2 + 0x18) < 8) {
          param_2 = param_2 + 4;
        }
        else {
          param_2 = *(int *)(param_2 + 4);
        }
        puVar3 = (undefined4 *)(param_1_00 + 4);
        if (7 < *(uint *)(param_1_00 + 0x18)) {
          puVar3 = (undefined4 *)*puVar3;
        }
        _memcpy_s((void *)((int)puVar3 + param_1 * 2),(*(uint *)(param_1_00 + 0x18) - param_1) * 2,
                  (void *)(param_2 + param_3 * 2),param_4 * 2);
      }
      puVar3 = (undefined4 *)(param_1_00 + 4);
      *(uint *)(param_1_00 + 0x14) = uVar2;
      if (7 < *(uint *)(param_1_00 + 0x18)) {
        puVar3 = (undefined4 *)*puVar3;
      }
      *(undefined2 *)((int)puVar3 + uVar2 * 2) = 0;
    }
  }
  return param_1_00;
}



int __thiscall FUN_00997f50(int param_1_00,uint param_1,undefined4 *param_2,uint param_3)

{
  uint uVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 *puVar4;
  uint uVar5;
  
  uVar1 = param_1;
  if (param_2 != (undefined4 *)0x0) {
    uVar5 = *(uint *)(param_1_00 + 0x18);
    puVar2 = (undefined4 *)(param_1_00 + 4);
    puVar4 = puVar2;
    if (7 < uVar5) {
      puVar4 = (undefined4 *)*puVar2;
    }
    if (puVar4 <= param_2) {
      puVar4 = puVar2;
      if (7 < uVar5) {
        puVar4 = (undefined4 *)*puVar2;
      }
      if (param_2 < (undefined4 *)((int)puVar4 + *(int *)(param_1_00 + 0x14) * 2)) {
        if (7 < uVar5) {
          puVar2 = (undefined4 *)*puVar2;
        }
        iVar3 = FUN_00997dc0(param_1,param_1_00,(int)param_2 - (int)puVar2 >> 1,param_3);
        return iVar3;
      }
    }
  }
  if (*(uint *)(param_1_00 + 0x14) < param_1) {
    std::_String_base::_Xran();
  }
  if (-*(int *)(param_1_00 + 0x14) - 1U <= param_3) {
    std::_String_base::_Xlen();
  }
  if (param_3 != 0) {
    uVar5 = *(int *)(param_1_00 + 0x14) + param_3;
    if (0x7ffffffe < uVar5) {
      std::_String_base::_Xlen();
    }
    if (*(uint *)(param_1_00 + 0x18) < uVar5) {
      FUN_004181eb(uVar5,*(undefined4 *)(param_1_00 + 0x14));
    }
    else if (uVar5 == 0) {
      *(undefined4 *)(param_1_00 + 0x14) = 0;
      if (7 < *(uint *)(param_1_00 + 0x18)) {
        **(undefined2 **)(param_1_00 + 4) = 0;
        return param_1_00;
      }
      *(undefined2 *)(param_1_00 + 4) = 0;
      return param_1_00;
    }
    if (uVar5 != 0) {
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        param_1 = param_1_00 + 4;
        iVar3 = param_1_00 + 4;
      }
      else {
        param_1 = *(int *)(param_1_00 + 4);
        iVar3 = *(int *)(param_1_00 + 4);
      }
      _memmove_s((void *)(iVar3 + (uVar1 + param_3) * 2),
                 ((*(uint *)(param_1_00 + 0x18) - uVar1) - param_3) * 2,
                 (void *)(param_1 + uVar1 * 2),(*(int *)(param_1_00 + 0x14) - uVar1) * 2);
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar3 = param_1_00 + 4;
      }
      else {
        iVar3 = *(int *)(param_1_00 + 4);
      }
      _memcpy_s((void *)(iVar3 + uVar1 * 2),(*(uint *)(param_1_00 + 0x18) - uVar1) * 2,param_2,
                param_3 * 2);
      *(uint *)(param_1_00 + 0x14) = uVar5;
      if (7 < *(uint *)(param_1_00 + 0x18)) {
        *(undefined2 *)(*(int *)(param_1_00 + 4) + uVar5 * 2) = 0;
        return param_1_00;
      }
      *(undefined2 *)(param_1_00 + 4 + uVar5 * 2) = 0;
    }
  }
  return param_1_00;
}



void __fastcall FUN_009980e0(int param_1)

{
  FUN_0096be20();
  if ((*(uint *)(param_1 + -0xc4) >> 4 & 1) == 0) {
    FUN_0045420c();
    return;
  }
  return;
}



void ** __thiscall FUN_00998110(void **param_1_00,undefined4 param_1,undefined4 param_2)

{
  short sVar1;
  short *psVar2;
  void **ppvVar3;
  undefined4 *puVar4;
  short *psVar5;
  void **ppvVar6;
  void **local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5ed8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_10 = param_1_00;
  if (DAT_032bd4d4 == 0) {
    DAT_032bd4d4 = FUN_00861440(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  }
  puVar4 = (undefined4 *)FUN_0043c155(&local_10,param_2,DAT_032bd4d4);
  psVar2 = *(short **)*puVar4;
  local_4 = 0;
  psVar5 = psVar2;
  do {
    sVar1 = *psVar5;
    psVar5 = psVar5 + 1;
  } while (sVar1 != 0);
  FUN_00997f50(param_1,psVar2,(int)psVar5 - (int)(psVar2 + 1) >> 1);
  local_4 = 0xffffffff;
  ppvVar6 = (void **)FUN_00850350();
  ppvVar3 = local_10;
  if (local_10 != ppvVar6) {
    *(short *)(local_10 + 2) = *(short *)(local_10 + 2) + -1;
    if (*(short *)(local_10 + 2) == 0) {
      if (*(char *)((int)local_10 + 10) != '\0') {
        _free(*local_10);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar3);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_009981f0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  code *pcVar1;
  uint uVar2;
  undefined *puVar3;
  undefined4 ****ppppuVar4;
  int iVar5;
  undefined auStack_d8 [36];
  undefined local_b4 [32];
  undefined auStack_94 [4];
  undefined4 ****local_90;
  uint local_8c;
  uint local_7c;
  uint local_78;
  void *local_74;
  undefined auStack_70 [4];
  undefined local_6c [8];
  int *local_64;
  int iStack_24;
  uint local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  uStack_8 = &LAB_00be2491;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_d8;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff18;
  ExceptionList = &local_c;
  iVar5 = -1;
  local_78 = 7;
  local_7c = 0;
  local_8c = local_8c & 0xffff0000;
  local_74 = (void *)0x0;
  local_4 = 0;
  switch(param_1) {
  case 5:
    goto switchD_00998263_caseD_5;
  default:
    FUN_0096d6a0(param_1,param_2);
    _free(local_74);
    if (7 < local_78) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_8c);
    }
    goto LAB_009984d6;
  case 7:
    iVar5 = (**(code **)(*param_1_00 + 0x35c))();
    param_1_00[0x67] = iVar5;
    if (iVar5 == -1) {
      param_1_00[0x67] = -3;
    }
    FUN_0092bd60(DAT_032bfe00,param_1_00[0x10]);
    local_4._0_1_ = 1;
    local_64 = param_1_00;
    break;
  case 8:
    FUN_0092bd60(DAT_032bfe04,param_1_00[0x10]);
    local_4._0_1_ = 2;
    local_64 = param_1_00;
    break;
  case 9:
    pcVar1 = *(code **)(param_1_00[0x65] + 0x18);
    param_1_00[0x67] = -3;
    iVar5 = (*pcVar1)(uVar2);
    puVar3 = (undefined *)(**(code **)(param_1_00[0x65] + 0x1c))(auStack_d8);
    uStack_8._0_1_ = 3;
    if (auStack_94 != puVar3) {
      FID_conflict_assign(puVar3,0,0xffffffff);
    }
    uStack_8._0_1_ = 0;
    FUN_0040159c();
    if (local_7c < 8) {
      local_90 = &local_90;
    }
    SetWindowTextW((HWND)param_1_00[0x4f],(LPCWSTR)local_90);
    FUN_0092bd60(DAT_032bfde8,param_1_00[0x10]);
    uStack_8._0_1_ = 4;
    iStack_24 = iVar5;
    FID_conflict_assign(auStack_94,0,0xffffffff);
    FUN_0096bf20(auStack_70,iVar5);
    thunk_FUN_0091c170(auStack_70);
    uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
    FUN_00454a4e();
switchD_00998263_caseD_5:
    if (*(char *)(param_1_00 + 0x6d) != '\0') {
      FUN_0092bd60(DAT_032c1058,param_1_00[0x10]);
      local_4._0_1_ = 5;
      if (iVar5 == -1) {
        ppppuVar4 = (undefined4 ****)FUN_0095df20(local_b4,param_1_00[0x4f]);
        local_4._0_1_ = 6;
        if (&local_90 != (undefined4 *****)ppppuVar4) {
          FID_conflict_assign(ppppuVar4,0,0xffffffff);
        }
        local_4._0_1_ = 5;
        FUN_0040159c();
      }
      FID_conflict_assign(&local_90,0,0xffffffff);
      FUN_0096bf20(local_6c,iVar5);
      break;
    }
    goto LAB_0099847c;
  }
  thunk_FUN_0091c170(local_6c);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00454a4e();
LAB_0099847c:
  _free(local_74);
  if (7 < local_78) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_8c);
  }
LAB_009984d6:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



HWND __fastcall FUN_00998520(int param_1)

{
  code *pcVar1;
  uint uVar2;
  undefined local_88 [4];
  uint local_84;
  undefined4 local_74;
  uint local_70;
  void *local_6c;
  undefined local_64 [4];
  uint local_60;
  undefined4 local_50;
  uint local_4c;
  void *local_48;
  undefined4 local_40 [11];
  HWND pHStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be24de;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  if (DAT_032e8c40 == '\0') {
    DAT_032e8c40 = '\x01';
    FUN_0043c211("user32.dll");
    local_4 = 0;
    FUN_0089ed30(local_88,0x68);
    local_4._0_1_ = 2;
    _free(local_6c);
    if (7 < local_70) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_84);
    }
    local_70 = 7;
    local_74 = 0;
    local_84 = local_84 & 0xffff0000;
    FUN_0043c211("GetComboBoxInfo");
    local_4 = CONCAT31(local_4._1_3_,3);
    DAT_032e8c3c = (code *)FUN_0089f2d0(0,local_64,uVar2);
    _free(local_48);
    if (7 < local_4c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_60);
    }
    local_4c = 7;
    local_50 = 0;
    local_60 = local_60 & 0xffff0000;
  }
  pcVar1 = DAT_032e8c3c;
  local_4 = 0xffffffff;
  if (DAT_032e8c3c == (code *)0x0) {
    if ((*(uint *)(param_1 + 0xe0) >> 2 & 1) == 0) {
      pHStack_14 = GetWindow(*(HWND *)(param_1 + 0x13c),5);
    }
    else {
      pHStack_14 = ChildWindowFromPoint(*(HWND *)(param_1 + 0x13c),(POINT)0x400000004);
    }
  }
  else {
    _memset(local_40,0,0x34);
    local_40[0] = 0x34;
    (*pcVar1)(*(undefined4 *)(param_1 + 0x13c),local_40);
  }
  ExceptionList = local_c;
  return pHStack_14;
}



int __fastcall FUN_009986c0(int param_1)

{
  int iVar1;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((*(uint *)(param_1 + -0xc4) >> 4 & 1) != 0)) {
    FUN_00840480("..\\..\\src\\msw\\combobox.cpp",0x1a5,"wxComboBox::GetEditHWND",
                 "!HasFlag(wxCB_READONLY)",L"read-only combobox doesn\'t have any edit control");
  }
  iVar1 = FUN_00998520();
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar1 == 0)) {
    FUN_00840480("..\\..\\src\\msw\\combobox.cpp",0x1a8,"wxComboBox::GetEditHWND","hWndEdit",
                 L"combobox without edit control?");
  }
  return iVar1;
}



int __thiscall FUN_00998740(int param_1_00,int param_1)

{
  undefined4 uVar1;
  bool bVar2;
  undefined local_54 [4];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be2532;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar2 = (*(uint *)(param_1_00 + -0xc4) >> 4 & 1) == 0;
  if (bVar2) {
    uVar1 = FUN_009469f0(local_54);
  }
  else {
    uVar1 = (**(code **)(*(int *)(param_1_00 + -0x10) + 0x1c))
                      (local_30,DAT_0323f878 ^ (uint)&stack0xffffff9c);
  }
  local_4 = (uint)bVar2;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar1,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if (bVar2) {
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
  }
  if (!bVar2) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_00998850(undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6f98;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  local_30 = local_30 & 0xffff0000;
  local_1c = 7;
  local_20 = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  local_18 = (void *)0x0;
  local_4 = 0;
  iVar2 = FUN_0098e820(uVar1);
  if (iVar2 != 0) {
    iVar3 = (**(code **)(iVar2 + 0x94))();
    if (iVar3 != 0) {
      iVar2 = (**(code **)(iVar2 + 0x90))();
      if (iVar2 != 0) {
        FUN_00998110(0,&DAT_026b6df4);
      }
    }
  }
  FUN_00941690(local_34);
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00998940(int *param_1_00,int param_1,undefined4 param_2,undefined4 param_3)

{
  int *piVar1;
  bool bVar2;
  int iVar3;
  undefined *puVar4;
  uint unaff_EBP;
  undefined4 unaff_retaddr;
  undefined4 local_94;
  int iStack_90;
  int local_8c;
  int *piStack_88;
  int *local_84 [9];
  undefined auStack_60 [36];
  undefined auStack_3c [4];
  undefined2 uStack_38;
  undefined4 uStack_30;
  int iStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  uint uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be2587;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_94;
  ExceptionList = &local_c;
  local_94 = 0;
  if (((param_1 != 5) && (param_1 != 0x7d)) ||
     (iVar3 = FUN_00998520(DAT_0323f878 ^ (uint)&stack0xffffff5c), iVar3 == 0)) {
    FUN_0096c930(param_1,param_2,param_3);
    goto LAB_00998b67;
  }
  piVar1 = param_1_00 + 0x69;
  (**(code **)(param_1_00[0x69] + 0x68))(local_84,&local_8c);
  uStack_24 = 7;
  iStack_28 = 0;
  uStack_38 = 0;
  uStack_20 = 0;
  local_c = (void *)0x0;
  if ((((uint)param_1_00[0x38] >> 4 & 1) == 0) &&
     (iVar3 = (**(code **)(*param_1_00 + 0x35c))(), iVar3 == -1)) {
    puVar4 = (undefined *)(**(code **)(*piVar1 + 0x14))(local_84);
    local_c._0_1_ = 1;
    if (auStack_3c != puVar4) {
      FID_conflict_assign(puVar4,0,0xffffffff);
    }
    local_c = (void *)((uint)local_c._1_3_ << 8);
    FUN_0040159c();
  }
  piStack_88 = param_1_00;
  FUN_0091ba80();
  local_c._0_1_ = 2;
  FUN_0096c930(param_1,unaff_retaddr,param_1);
  if (iStack_28 == 0) {
LAB_00998ace:
    bVar2 = false;
  }
  else {
    iVar3 = (**(code **)(*piVar1 + 0x14))(auStack_60);
    local_c = (void *)CONCAT31(local_c._1_3_,3);
    unaff_EBP = 1;
    if ((*(int *)(iVar3 + 0x14) == iStack_28) && (iVar3 = FUN_00850760(auStack_3c), iVar3 == 0))
    goto LAB_00998ace;
    bVar2 = true;
  }
  local_c = (void *)0x2;
  if ((unaff_EBP & 1) != 0) {
    FUN_0040159c();
  }
  if (bVar2) {
    (**(code **)(*param_1_00 + 0x54))(auStack_3c);
  }
  (**(code **)(*piVar1 + 0x68))(&iStack_90,&stack0xffffff68);
  if ((local_84[0] != piStack_88) || (local_8c != iStack_90)) {
    (**(code **)(*piVar1 + 0x60))(local_84[0],local_8c);
  }
  uStack_4 = uStack_4 & 0xffffff00;
  FUN_0091bae0();
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_30);
  }
LAB_00998b67:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_00998ba0(void)

{
  return &PTR_u_wxContextHelp_0323bfb4;
}



undefined ** FUN_00998bb0(void)

{
  return &PTR_u_wxHelpProviderModule_0323bfe4;
}



void FUN_00998bc0(void)

{
  if (DAT_032e8c44 != (int *)0x0) {
    (**(code **)(*DAT_032e8c44 + 0x18))(1);
    DAT_032e8c44 = (int *)0x0;
  }
  return;
}



undefined4 __thiscall FUN_00998be0(undefined4 param_1_00,byte param_1)

{
  FUN_00846530();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_00998c00(int param_1)

{
  char cVar1;
  code *pcVar2;
  
  *(undefined *)(param_1 + 8) = 1;
  do {
    cVar1 = (**(code **)(*DAT_032bcb68 + 0x9c))();
    if (cVar1 == '\0') {
      pcVar2 = *(code **)(*DAT_032bcb68 + 0xb0);
    }
    else {
      pcVar2 = *(code **)(*DAT_032bcb68 + 0xa0);
    }
    (*pcVar2)();
  } while (*(char *)(param_1 + 8) != '\0');
  return 1;
}



int __thiscall FUN_00998c50(int param_1_00,int param_1)

{
  int iVar1;
  uint3 uVar2;
  
  iVar1 = *(int *)(param_1 + 0xc);
  uVar2 = (uint3)((uint)iVar1 >> 8);
  if (iVar1 == DAT_032bfe08) {
    *(undefined *)(*(int *)(param_1_00 + 0x40) + 9) = 1;
    *(undefined *)(*(int *)(param_1_00 + 0x40) + 8) = 0;
    return CONCAT31(uVar2,1);
  }
  if ((((iVar1 == DAT_032bfe60) || (iVar1 == DAT_032bfe70)) || (iVar1 == DAT_032bfefc)) ||
     (iVar1 == DAT_032bff14)) {
    *(undefined *)(*(int *)(param_1_00 + 0x40) + 8) = 0;
  }
  else if ((iVar1 == DAT_032bff1c) || (iVar1 == DAT_032bff20)) {
    *(undefined *)(param_1 + 0x24) = 1;
    return (uint)uVar2 << 8;
  }
  return CONCAT31(uVar2,1);
}



undefined4 * __thiscall FUN_00998cc0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxContextHelp::vftable;
  if (*(char *)(param_1_00 + 2) != '\0') {
    *(undefined *)(param_1_00 + 2) = 0;
  }
  *param_1_00 = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_00998d00(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHelpProviderModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void FUN_00998d60(int param_1,undefined4 param_2)

{
  undefined local_c0 [8];
  int local_b8;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be267b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_c0;
  ExceptionList = &local_c;
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\cshelp.cpp",0xeb,"wxContextHelp::DispatchEvent",
                   &DAT_00d517ac,L"win parameter can\'t be NULL",
                   DAT_0323f878 ^ (uint)&stack0xffffff38);
    }
  }
  else {
    FUN_00913960(DAT_032bff8c,*(undefined4 *)(param_1 + 0x40),param_2,2);
    local_b8 = param_1;
    local_4 = 0;
    (**(code **)(**(int **)(param_1 + 0x70) + 0x18))(local_c0);
    local_4 = 0xffffffff;
    FUN_00913a20();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00998e50(int param_1_00,int *param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined local_14 [8];
  void *local_c;
  undefined4 uStack_8;
  uint uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00be26cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1 == (int *)0x0) &&
     (param_1 = (int *)(**(code **)(*DAT_032bcb68 + 0xd4))(DAT_0323f878 ^ (uint)&stack0xffffffcc),
     param_1 == (int *)0x0)) {
    ExceptionList = local_c;
    return 0;
  }
  FUN_008f7ad0(0x10);
  if (param_1[0x20] != 0) {
    piVar1 = (int *)(param_1[0x20] + 4);
    *piVar1 = *piVar1 + 1;
  }
  uStack_4 = 1;
  (**(code **)(*param_1 + 400))(local_14);
  *(undefined *)(param_1_00 + 9) = 0;
  puVar2 = (undefined4 *)operator_new(0x44);
  uStack_8._0_1_ = 2;
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_00845b70();
    *puVar2 = wxContextHelpEvtHandler::vftable;
    puVar2[0x10] = param_1_00;
  }
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
  FUN_0091bd90(puVar2);
  FUN_0091f8e0();
  FUN_00998c00();
  FUN_0091fac0();
  FUN_0091bf10(1);
  (**(code **)(*param_1 + 400))(&stack0xffffffd8);
  if (*(char *)(param_1_00 + 9) != '\0') {
    uStack_1c = 0;
    uStack_18 = 0;
    iVar3 = FUN_00912fa0(&uStack_1c);
    if (iVar3 != 0) {
      FUN_00998d60(iVar3,&uStack_1c);
    }
  }
  uStack_4 = uStack_4 & 0xffffff00;
  FUN_008f7630();
  uStack_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return 1;
}



// WARNING: Removing unreachable block (ram,0x00999015)

void __fastcall FUN_00998fc0(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be26f8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00998e50(*(undefined4 *)(param_1 + 0x44));
  local_4 = 0xffffffff;
  FUN_0083e850(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_00999040(void)

{
  uint uVar1;
  undefined4 *puVar2;
  int *piVar3;
  undefined4 *puVar4;
  int iVar5;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined **ppuStack_1c;
  int iStack_18;
  undefined auStack_14 [8];
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00be274e;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0xc);
  if (puVar2 != (undefined4 *)0x0) {
    puVar2[1] = 0;
    *puVar2 = wxContextHelp::vftable;
    *(undefined *)(puVar2 + 2) = 0;
    local_4._0_1_ = 1;
    local_4._1_3_ = 0;
    piVar3 = (int *)(**(code **)(*DAT_032bcb68 + 0xd4))(uVar1);
    if (piVar3 != (int *)0x0) {
      FUN_008f7ad0(0x10);
      iStack_18 = piVar3[0x20];
      if (iStack_18 != 0) {
        *(int *)(iStack_18 + 4) = *(int *)(iStack_18 + 4) + 1;
      }
      ppuStack_1c = wxCursor::vftable;
      local_4 = CONCAT31(local_4._1_3_,3);
      (**(code **)(*piVar3 + 400))(auStack_14);
      *(undefined *)((int)puVar2 + 9) = 0;
      puVar4 = (undefined4 *)operator_new(0x44);
      uStack_8._0_1_ = 4;
      if (puVar4 == (undefined4 *)0x0) {
        puVar4 = (undefined4 *)0x0;
      }
      else {
        FUN_00845b70();
        *puVar4 = wxContextHelpEvtHandler::vftable;
        puVar4[0x10] = puVar2;
      }
      uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,3);
      FUN_0091bd90(puVar4);
      FUN_0091f8e0();
      FUN_00998c00();
      FUN_0091fac0();
      FUN_0091bf10(1);
      (**(code **)(*piVar3 + 400))(&uStack_20);
      if (*(char *)((int)puVar2 + 9) != '\0') {
        uStack_24 = 0;
        uStack_20 = 0;
        iVar5 = FUN_00912fa0(&uStack_24);
        if (iVar5 != 0) {
          FUN_00998d60(iVar5,&uStack_24);
        }
      }
      local_4._0_1_ = 2;
      FUN_008f7630();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_008f7630();
    }
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined ** FUN_009991e0(void)

{
  return &PTR_u_wxIndividualLayoutConstraint_0323c0b4;
}



undefined ** FUN_009991f0(void)

{
  return &PTR_u_wxLayoutConstraints_0323c0cc;
}



uint __thiscall FUN_00999200(int param_1_00,uint param_1)

{
  if (param_1 == *(uint *)(param_1_00 + 8)) {
    *(undefined4 *)(param_1_00 + 0xc) = 1;
    *(undefined4 *)(param_1_00 + 0x10) = 1;
    *(undefined4 *)(param_1_00 + 0x14) = 0;
    *(undefined4 *)(param_1_00 + 0x18) = 0;
    *(undefined4 *)(param_1_00 + 0x1c) = 0;
    *(undefined4 *)(param_1_00 + 0x20) = 1;
    *(undefined4 *)(param_1_00 + 8) = 0;
    return 1;
  }
  return param_1 & 0xffffff00;
}



void FUN_00999230(int *param_1,undefined4 param_2,undefined4 param_3)

{
  (**(code **)(*param_1 + 0x278))(param_2,param_3);
  return;
}



int FUN_00999250(int param_1,undefined4 param_2,int *param_3)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *piVar4;
  int *piVar5;
  int unaff_ESI;
  int unaff_retaddr;
  undefined4 *puVar6;
  int iStack_4;
  
  piVar2 = param_3;
  iVar3 = FUN_0086af40();
  iVar1 = param_1;
  if (iVar3 != 0) {
    switch(param_1) {
    case 0:
    case 1:
      return 0;
    case 2:
    case 4:
      (**(code **)(*piVar2 + 0x1fc))(&param_1,&param_2);
      return iStack_4;
    case 3:
    case 5:
      (**(code **)(*piVar2 + 0x1fc))(&param_2,&param_1);
      return iStack_4;
    default:
      return -1;
    case 7:
    case 8:
      goto switchD_00999279_caseD_7;
    }
  }
  switch(param_1) {
  case 0:
    iVar1 = piVar2[0x33];
    if (iVar1 == 0) {
      (**(code **)(*piVar2 + 0x270))(&param_1);
      return iStack_4;
    }
    if (*(char *)(iVar1 + 0x2c) != '\0') {
      return *(int *)(iVar1 + 0x20);
    }
    break;
  case 1:
    iVar1 = piVar2[0x33];
    if (iVar1 == 0) {
      (**(code **)(*piVar2 + 0x270))(&param_2);
      return iStack_4;
    }
    if (*(char *)(iVar1 + 0x54) != '\0') {
      return *(int *)(iVar1 + 0x48);
    }
    break;
  case 2:
    iVar1 = piVar2[0x33];
    if (iVar1 == 0) {
      (**(code **)(*piVar2 + 0x270))(&param_1);
      (**(code **)(*piVar2 + 0x278))(&stack0x00000000,&stack0xfffffff4);
      return (int)&param_3 + unaff_ESI;
    }
    if (*(char *)(iVar1 + 0x7c) != '\0') {
      return *(int *)(iVar1 + 0x70);
    }
    break;
  case 3:
    iVar1 = piVar2[0x33];
    if (iVar1 == 0) {
      (**(code **)(*piVar2 + 0x270))(&param_3);
      (**(code **)(*piVar2 + 0x278))(&stack0xfffffff4,&stack0x00000000);
      return (int)&param_1 + unaff_ESI;
    }
    if (*(char *)(iVar1 + 0xa4) != '\0') {
      return *(int *)(iVar1 + 0x98);
    }
    break;
  case 4:
    iVar1 = piVar2[0x33];
    if (iVar1 == 0) {
      (**(code **)(*piVar2 + 0x278))(&param_1);
      return iStack_4;
    }
    if (*(char *)(iVar1 + 0xcc) != '\0') {
      return *(int *)(iVar1 + 0xc0);
    }
    break;
  case 5:
    iVar1 = piVar2[0x33];
    if (iVar1 == 0) {
      (**(code **)(*piVar2 + 0x278))(&param_2);
      return iStack_4;
    }
    if (*(char *)(iVar1 + 0xf4) != '\0') {
      return *(int *)(iVar1 + 0xe8);
    }
    break;
  case 7:
    iVar1 = piVar2[0x33];
    if (iVar1 == 0) {
      puVar6 = &param_3;
      (**(code **)(*piVar2 + 0x270))(&param_2);
      piVar4 = (int *)&stack0xfffffff4;
      piVar5 = &iStack_4;
LAB_00999503:
      (**(code **)(*piVar2 + 0x278))(piVar5,piVar4);
      return (int)puVar6 / 2 + unaff_ESI;
    }
    if (*(char *)(iVar1 + 0x11c) != '\0') {
      return *(int *)(iVar1 + 0x110);
    }
    break;
  case 8:
    iVar1 = piVar2[0x33];
    if (iVar1 == 0) {
      puVar6 = &param_2;
      (**(code **)(*piVar2 + 0x270))(&param_3);
      piVar4 = &iStack_4;
      piVar5 = (int *)&stack0xfffffff4;
      goto LAB_00999503;
    }
    if (*(char *)(iVar1 + 0x144) != '\0') {
      return *(int *)(iVar1 + 0x138);
    }
  }
  return -1;
switchD_00999279_caseD_7:
  (**(code **)(*piVar2 + 0x1fc))(&param_1,&param_2);
  if (iVar1 != 7) {
    return unaff_retaddr / 2;
  }
  return iStack_4 / 2;
}



void __fastcall FUN_00999770(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be2801;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxLayoutConstraints::vftable;
  local_4 = 7;
  param_1[0x48] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4._0_1_ = 6;
  param_1[0x3e] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 5;
  param_1[0x34] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 4;
  param_1[0x2a] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 3;
  param_1[0x20] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 2;
  param_1[0x16] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 1;
  param_1[0xc] = wxObject::vftable;
  FUN_0083e850();
  local_4 = (uint)local_4._1_3_ << 8;
  param_1[2] = wxObject::vftable;
  FUN_0083e850();
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00999870(undefined4 param_1_00,byte param_1)

{
  FUN_00999770();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_009998f0(int param_1_00,int param_1,int *param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  undefined *puVar4;
  undefined4 uVar5;
  undefined *puVar6;
  int unaff_ESI;
  undefined4 uVar7;
  int local_8;
  undefined local_4 [4];
  
  piVar2 = param_2;
  iVar3 = *(int *)(param_1_00 + 0x10);
  if (iVar3 == 8) {
    *(undefined *)(param_1_00 + 0x24) = 1;
    return 1;
  }
  switch(*(undefined4 *)(param_1_00 + 0xc)) {
  case 0:
    switch(iVar3) {
    case 0:
      if ((*(char *)(param_1 + 0x7c) != '\0') && (*(char *)(param_1 + 0xcc) != '\0')) {
        iVar3 = *(int *)(param_1 + 0x70);
        iVar1 = *(int *)(param_1 + 0xc0);
        *(undefined *)(param_1_00 + 0x24) = 1;
        *(int *)(param_1_00 + 0x18) = (iVar3 - iVar1) + *(int *)(param_1_00 + 0x14);
        return 1;
      }
      if (*(char *)(param_1 + 0x11c) == '\0') {
        return 0;
      }
      if (*(char *)(param_1 + 0xcc) == '\0') {
        return 0;
      }
      *(int *)(param_1_00 + 0x18) =
           (*(int *)(param_1 + 0x110) - *(int *)(param_1 + 0xc0) / 2) + *(int *)(param_1_00 + 0x14);
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    case 1:
      (**(code **)(*param_2 + 0x270))(param_1_00 + 0x18,&param_2);
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    case 2:
      param_2 = (int *)FUN_00999250(*(undefined4 *)(param_1_00 + 0x20),param_2,
                                    *(undefined4 *)(param_1_00 + 8));
      if (param_2 == (int *)0xffffffff) {
        return 0;
      }
      uVar5 = FUN_00a49750();
      *(undefined4 *)(param_1_00 + 0x18) = uVar5;
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    default:
      return 0;
    case 5:
      goto switchD_00999a46_caseD_5;
    case 6:
switchD_00999c24_caseD_3:
      iVar3 = FUN_00999250(*(undefined4 *)(param_1_00 + 0x20),param_2,
                           *(undefined4 *)(param_1_00 + 8));
      if (iVar3 == -1) {
        return 0;
      }
      *(int *)(param_1_00 + 0x18) = *(int *)(param_1_00 + 0x14) + iVar3;
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    }
  case 1:
    switch(iVar3) {
    case 0:
      if ((*(char *)(param_1 + 0xa4) != '\0') && (*(char *)(param_1 + 0xf4) != '\0')) {
        iVar3 = *(int *)(param_1 + 0x98);
        iVar1 = *(int *)(param_1 + 0xe8);
        *(undefined *)(param_1_00 + 0x24) = 1;
        *(int *)(param_1_00 + 0x18) = (iVar3 - iVar1) + *(int *)(param_1_00 + 0x14);
        return 1;
      }
      if (*(char *)(param_1 + 0x144) == '\0') {
        return 0;
      }
      if (*(char *)(param_1 + 0xf4) == '\0') {
        return 0;
      }
      *(int *)(param_1_00 + 0x18) =
           (*(int *)(param_1 + 0x138) - *(int *)(param_1 + 0xe8) / 2) + *(int *)(param_1_00 + 0x14);
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    case 1:
      (**(code **)(*param_2 + 0x270))(&param_2,param_1_00 + 0x18);
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    case 2:
switchD_00999de8_caseD_2:
      param_2 = (int *)FUN_00999250(*(undefined4 *)(param_1_00 + 0x20),param_2,
                                    *(undefined4 *)(param_1_00 + 8));
      if (param_2 == (int *)0xffffffff) {
        return 0;
      }
      goto LAB_00999d59;
    case 3:
      goto switchD_00999de8_caseD_3;
    case 4:
switchD_00999de8_caseD_4:
      iVar3 = FUN_00999250(*(undefined4 *)(param_1_00 + 0x20),param_2,
                           *(undefined4 *)(param_1_00 + 8));
      if (iVar3 == -1) {
        return 0;
      }
      *(int *)(param_1_00 + 0x18) = *(int *)(param_1_00 + 0x14) + iVar3;
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    default:
      return 0;
    }
  case 2:
    switch(iVar3) {
    case 0:
      if ((*(char *)(param_1 + 0x2c) != '\0') && (*(char *)(param_1 + 0xcc) != '\0')) {
        iVar3 = *(int *)(param_1 + 0xc0);
        iVar1 = *(int *)(param_1 + 0x20);
        *(undefined *)(param_1_00 + 0x24) = 1;
        *(int *)(param_1_00 + 0x18) = (iVar3 - *(int *)(param_1_00 + 0x14)) + iVar1;
        return 1;
      }
      if (*(char *)(param_1 + 0x11c) == '\0') {
        return 0;
      }
      if (*(char *)(param_1 + 0xcc) == '\0') {
        return 0;
      }
      iVar3 = *(int *)(param_1 + 0xc0);
      iVar1 = *(int *)(param_1 + 0x110);
      *(undefined *)(param_1_00 + 0x24) = 1;
      *(int *)(param_1_00 + 0x18) = (iVar3 / 2 - *(int *)(param_1_00 + 0x14)) + iVar1;
      return 1;
    case 1:
      (**(code **)(*param_2 + 0x278))(&param_2,&local_8);
      puVar4 = &stack0xfffffff4;
      puVar6 = local_4;
LAB_00999cef:
      (**(code **)(*piVar2 + 0x270))(puVar6,puVar4);
      *(int *)(param_1_00 + 0x18) = unaff_ESI + local_8;
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    case 2:
switchD_00999c24_caseD_2:
      param_2 = (int *)FUN_00999250(*(undefined4 *)(param_1_00 + 0x20),param_2,
                                    *(undefined4 *)(param_1_00 + 8));
      if (param_2 == (int *)0xffffffff) {
        return 0;
      }
      uVar5 = FUN_00a49750();
      *(undefined4 *)(param_1_00 + 0x18) = uVar5;
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    default:
      return 0;
    case 5:
switchD_00999a46_caseD_5:
      uVar5 = *(undefined4 *)(param_1_00 + 8);
      uVar7 = *(undefined4 *)(param_1_00 + 0x20);
      break;
    case 6:
      goto switchD_00999c24_caseD_3;
    }
    break;
  case 3:
    switch(iVar3) {
    case 0:
      if ((*(char *)(param_1 + 0x54) != '\0') && (*(char *)(param_1 + 0xf4) != '\0')) {
        iVar3 = *(int *)(param_1 + 0xe8);
        iVar1 = *(int *)(param_1 + 0x48);
        *(undefined *)(param_1_00 + 0x24) = 1;
        *(int *)(param_1_00 + 0x18) = (iVar3 - *(int *)(param_1_00 + 0x14)) + iVar1;
        return 1;
      }
      if (*(char *)(param_1 + 0x144) == '\0') {
        return 0;
      }
      if (*(char *)(param_1 + 0xf4) == '\0') {
        return 0;
      }
      iVar3 = *(int *)(param_1 + 0xe8);
      iVar1 = *(int *)(param_1 + 0x138);
      *(undefined *)(param_1_00 + 0x24) = 1;
      *(int *)(param_1_00 + 0x18) = (iVar3 / 2 - *(int *)(param_1_00 + 0x14)) + iVar1;
      return 1;
    case 1:
      (**(code **)(*param_2 + 0x278))(local_4,&param_2);
      puVar4 = local_4;
      puVar6 = &stack0xfffffff0;
      goto LAB_00999cef;
    case 2:
      goto switchD_00999c24_caseD_2;
    case 3:
      goto switchD_00999c24_caseD_3;
    case 4:
      goto switchD_00999de8_caseD_3;
    default:
      return 0;
    }
  case 4:
    if (iVar3 == 0) {
      if ((*(char *)(param_1 + 0x2c) != '\0') && (*(char *)(param_1 + 0x7c) != '\0')) {
        *(int *)(param_1_00 + 0x18) = *(int *)(param_1 + 0x70) - *(int *)(param_1 + 0x20);
        *(undefined *)(param_1_00 + 0x24) = 1;
        return 1;
      }
      if (*(char *)(param_1 + 0x11c) == '\0') {
        return 0;
      }
      if (*(char *)(param_1 + 0x2c) == '\0') {
        if (*(char *)(param_1 + 0x11c) == '\0') {
          return 0;
        }
        if (*(char *)(param_1 + 0x7c) == '\0') {
          return 0;
        }
        *(int *)(param_1_00 + 0x18) = (*(int *)(param_1 + 0x70) - *(int *)(param_1 + 0x110)) * 2;
        *(undefined *)(param_1_00 + 0x24) = 1;
        return 1;
      }
      *(int *)(param_1_00 + 0x18) = (*(int *)(param_1 + 0x110) - *(int *)(param_1 + 0x20)) * 2;
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    }
    if (iVar3 == 1) {
      if (param_2 == (int *)0x0) {
        return 0;
      }
      FUN_00999230(param_2,param_1_00 + 0x18,&param_2);
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    }
    if (iVar3 != 2) {
      return 0;
    }
    uVar5 = *(undefined4 *)(param_1_00 + 8);
    uVar7 = *(undefined4 *)(param_1_00 + 0x20);
    goto LAB_00999e85;
  case 5:
    if (iVar3 == 0) {
      if (*(char *)(param_1 + 0x54) != '\0') {
        if (*(char *)(param_1 + 0xa4) != '\0') {
          *(int *)(param_1_00 + 0x18) = *(int *)(param_1 + 0x98) - *(int *)(param_1 + 0x48);
          *(undefined *)(param_1_00 + 0x24) = 1;
          return 1;
        }
        if ((*(char *)(param_1 + 0x54) != '\0') && (*(char *)(param_1 + 0x144) != '\0')) {
          *(int *)(param_1_00 + 0x18) = (*(int *)(param_1 + 0x138) - *(int *)(param_1 + 0x48)) * 2;
          *(undefined *)(param_1_00 + 0x24) = 1;
          return 1;
        }
      }
      if (*(char *)(param_1 + 0xa4) == '\0') {
        return 0;
      }
      if (*(char *)(param_1 + 0x144) == '\0') {
        return 0;
      }
      *(int *)(param_1_00 + 0x18) = (*(int *)(param_1 + 0x98) - *(int *)(param_1 + 0x138)) * 2;
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    }
    if (iVar3 == 1) {
      if (param_2 == (int *)0x0) {
        return 0;
      }
      FUN_00999230(param_2,&param_2,param_1_00 + 0x18);
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    }
    if (iVar3 != 2) {
      return 0;
    }
    uVar5 = *(undefined4 *)(param_1_00 + 8);
    uVar7 = *(undefined4 *)(param_1_00 + 0x20);
LAB_00999e85:
    param_2 = (int *)FUN_00999250(uVar7,param_2,uVar5);
    if (param_2 != (int *)0xffffffff) {
LAB_00999d59:
      uVar5 = FUN_00a49750();
      *(undefined4 *)(param_1_00 + 0x18) = uVar5;
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    }
switchD_00999918_caseD_6:
    return 0;
  default:
    goto switchD_00999918_caseD_6;
  case 7:
    switch(iVar3) {
    case 0:
      if ((*(char *)(param_1 + 0x2c) != '\0') && (*(char *)(param_1 + 0xcc) != '\0')) {
        iVar3 = *(int *)(param_1 + 0xc0);
        iVar1 = *(int *)(param_1 + 0x20);
        *(undefined *)(param_1_00 + 0x24) = 1;
        *(int *)(param_1_00 + 0x18) = iVar3 / 2 + iVar1 + *(int *)(param_1_00 + 0x14);
        return 1;
      }
      if (*(char *)(param_1 + 0x7c) == '\0') {
        return 0;
      }
      if (*(char *)(param_1 + 0xcc) == '\0') {
        return 0;
      }
      *(int *)(param_1_00 + 0x18) =
           (*(int *)(param_1 + 0x20) - *(int *)(param_1 + 0xc0) / 2) + *(int *)(param_1_00 + 0x14);
      *(undefined *)(param_1_00 + 0x24) = 1;
      return 1;
    default:
      return 0;
    case 2:
      goto switchD_00999de8_caseD_2;
    case 5:
      goto switchD_00999de8_caseD_3;
    case 6:
      goto switchD_00999de8_caseD_4;
    }
  case 8:
    switch(iVar3) {
    case 0:
      if ((*(char *)(param_1 + 0xa4) != '\0') && (*(char *)(param_1 + 0xf4) != '\0')) {
        *(int *)(param_1_00 + 0x18) =
             (*(int *)(param_1 + 0x98) - *(int *)(param_1 + 0xe8) / 2) + *(int *)(param_1_00 + 0x14)
        ;
        *(undefined *)(param_1_00 + 0x24) = 1;
        return 1;
      }
      if ((*(char *)(param_1 + 0x54) != '\0') && (*(char *)(param_1 + 0xf4) != '\0')) {
        iVar3 = *(int *)(param_1 + 0xe8);
        iVar1 = *(int *)(param_1 + 0x48);
        *(undefined *)(param_1_00 + 0x24) = 1;
        *(int *)(param_1_00 + 0x18) = iVar3 / 2 + iVar1 + *(int *)(param_1_00 + 0x14);
        return 1;
      }
      break;
    case 2:
      goto switchD_00999de8_caseD_2;
    case 3:
      goto switchD_00999de8_caseD_3;
    case 4:
      goto switchD_00999de8_caseD_4;
    }
    goto switchD_00999918_caseD_6;
  }
  goto LAB_0099993c;
switchD_00999de8_caseD_3:
  uVar5 = *(undefined4 *)(param_1_00 + 8);
  uVar7 = *(undefined4 *)(param_1_00 + 0x20);
LAB_0099993c:
  iVar3 = FUN_00999250(uVar7,param_2,uVar5);
  if (iVar3 == -1) {
    return 0;
  }
  *(int *)(param_1_00 + 0x18) = iVar3 - *(int *)(param_1_00 + 0x14);
  *(undefined *)(param_1_00 + 0x24) = 1;
  return 1;
}



undefined4 __thiscall FUN_0099a100(int param_1_00,undefined4 param_1,uint *param_2)

{
  char cVar1;
  char cVar2;
  uint uVar3;
  
  cVar1 = *(char *)(param_1_00 + 0xcc);
  if (cVar1 == '\0') {
    cVar2 = FUN_009998f0(param_1_00,param_1);
  }
  else {
    cVar2 = '\x01';
  }
  uVar3 = (uint)(cVar2 != cVar1);
  cVar1 = *(char *)(param_1_00 + 0xf4);
  if (cVar1 == '\0') {
    cVar2 = FUN_009998f0(param_1_00,param_1);
  }
  else {
    cVar2 = '\x01';
  }
  if (cVar2 != cVar1) {
    uVar3 = uVar3 + 1;
  }
  cVar1 = *(char *)(param_1_00 + 0x2c);
  if (cVar1 == '\0') {
    cVar2 = FUN_009998f0(param_1_00,param_1);
  }
  else {
    cVar2 = '\x01';
  }
  if (cVar2 != cVar1) {
    uVar3 = uVar3 + 1;
  }
  cVar1 = *(char *)(param_1_00 + 0x54);
  if (cVar1 == '\0') {
    cVar2 = FUN_009998f0(param_1_00,param_1);
  }
  else {
    cVar2 = '\x01';
  }
  if (cVar2 != cVar1) {
    uVar3 = uVar3 + 1;
  }
  cVar1 = *(char *)(param_1_00 + 0x7c);
  if (cVar1 == '\0') {
    cVar2 = FUN_009998f0(param_1_00,param_1);
  }
  else {
    cVar2 = '\x01';
  }
  if (cVar2 != cVar1) {
    uVar3 = uVar3 + 1;
  }
  cVar1 = *(char *)(param_1_00 + 0xa4);
  if (cVar1 == '\0') {
    cVar2 = FUN_009998f0(param_1_00,param_1);
  }
  else {
    cVar2 = '\x01';
  }
  if (cVar2 != cVar1) {
    uVar3 = uVar3 + 1;
  }
  cVar1 = *(char *)(param_1_00 + 0x11c);
  if (cVar1 == '\0') {
    cVar2 = FUN_009998f0(param_1_00,param_1);
  }
  else {
    cVar2 = '\x01';
  }
  if (cVar2 != cVar1) {
    uVar3 = uVar3 + 1;
  }
  cVar1 = *(char *)(param_1_00 + 0x144);
  if (cVar1 == '\0') {
    cVar2 = FUN_009998f0(param_1_00,param_1);
  }
  else {
    cVar2 = '\x01';
  }
  if (cVar2 != cVar1) {
    uVar3 = uVar3 + 1;
  }
  *param_2 = uVar3;
  if ((((*(char *)(param_1_00 + 0x2c) != '\0') && (*(char *)(param_1_00 + 0x54) != '\0')) &&
      (*(char *)(param_1_00 + 0xcc) != '\0')) && (*(char *)(param_1_00 + 0xf4) != '\0')) {
    return 1;
  }
  return 0;
}



void __thiscall FUN_0099a240(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0x5c))(param_1,3);
  return;
}



void __thiscall FUN_0099a260(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0x5c))(param_1,0);
  return;
}



void __thiscall FUN_0099a280(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0x5c))(param_1,2);
  return;
}



void __thiscall FUN_0099a2a0(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0x5c))(param_1,4);
  return;
}



undefined __thiscall FUN_0099a2c0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  uint uVar2;
  undefined4 uVar3;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea178;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  uVar3 = FUN_00993330(param_1);
  local_4 = 0;
  uVar1 = (**(code **)(*param_1_00 + 0x5c))(uVar3,param_2,uVar2);
  local_c = (void *)0xffffffff;
  FUN_008f7630();
  ExceptionList = local_14;
  return uVar1;
}



void FUN_0099a340(undefined4 param_1)

{
  FUN_0099a2c0(param_1,3);
  return;
}



undefined4 __thiscall FUN_0099a350(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 4))(param_1);
  return param_1;
}



bool __fastcall FUN_0099a370(int param_1)

{
  return *(int *)(param_1 + 4) == 0;
}



undefined4 FUN_0099a380(undefined4 param_1)

{
  FUN_008f78d0(param_1);
  return param_1;
}



void FUN_0099a3a0(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  return;
}



undefined ** FUN_0099a3c0(void)

{
  return &PTR_u_wxDisplayModule_0323c144;
}



void __fastcall FUN_0099a3d0(int *param_1)

{
  if ((undefined4 *)*param_1 != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)*param_1)(1);
  }
  return;
}



undefined4 * FUN_0099a3e0(int param_1)

{
  undefined4 *puVar1;
  
  if (param_1 == 0) {
    puVar1 = (undefined4 *)operator_new(8);
    if (puVar1 != (undefined4 *)0x0) {
      puVar1[1] = 0;
      *puVar1 = wxDisplayImplSingle::vftable;
      return puVar1;
    }
  }
  return (undefined4 *)0x0;
}



undefined4 FUN_0099a410(int *param_1)

{
  int *piVar1;
  int local_4;
  
  piVar1 = param_1;
  if ((-1 < *param_1) && (-1 < param_1[1])) {
    FUN_0095de70(&param_1,&local_4);
    if ((*piVar1 < (int)param_1) && (piVar1[1] < local_4)) {
      return 0;
    }
  }
  return 0xffffffff;
}



undefined4 * FUN_0099a460(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  FUN_0095de70(param_1 + 2,param_1 + 3);
  return param_1;
}



undefined4 * __thiscall FUN_0099a4a0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxDisplayImpl::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_0099a4c0(void)

{
  if (DAT_032e8c88 != (undefined4 *)0x0) {
    (**(code **)*DAT_032e8c88)(1);
    DAT_032e8c88 = (undefined4 *)0x0;
  }
  return;
}



void FUN_0099a4e0(void)

{
  if (DAT_032e8c88 == (int *)0x0) {
    DAT_032e8c88 = (int *)FUN_009d2ac0();
  }
                    // WARNING: Could not recover jumptable at 0x0099a4fa. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*DAT_032e8c88 + 8))();
  return;
}



void FUN_0099a500(undefined4 param_1)

{
  if (DAT_032e8c88 == (int *)0x0) {
    DAT_032e8c88 = (int *)FUN_009d2ac0();
  }
  (**(code **)(*DAT_032e8c88 + 0xc))(param_1);
  return;
}



undefined4 FUN_0099a530(int param_1)

{
  undefined4 uVar1;
  
  if (param_1 != 0) {
    if (DAT_032e8c88 == (int *)0x0) {
      DAT_032e8c88 = (int *)FUN_009d2ac0();
    }
    uVar1 = (**(code **)(*DAT_032e8c88 + 0x10))(param_1);
    return uVar1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\dpycmn.cpp",0x92,"wxDisplay::GetFromWindow","window",
                 L"invalid window");
  }
  return 0xffffffff;
}



undefined4 * __thiscall FUN_0099a590(int **param_1_00,undefined4 *param_1)

{
  if (*param_1_00 != (int *)0x0) {
    (**(code **)(**param_1_00 + 4))(param_1);
    return param_1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\dpycmn.cpp",0x9d,"wxDisplay::GetGeometry","IsOk()",
                 L"invalid wxDisplay object");
  }
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  return param_1;
}



undefined4 * __thiscall FUN_0099a5f0(int **param_1_00,undefined4 *param_1)

{
  if (*param_1_00 != (int *)0x0) {
    (**(code **)(**param_1_00 + 8))(param_1);
    return param_1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\dpycmn.cpp",0xa4,"wxDisplay::GetClientArea","IsOk()",
                 L"invalid wxDisplay object");
  }
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  return param_1;
}



void __fastcall FUN_0099a650(int *param_1)

{
  int local_18;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  FUN_00924b60(&local_10);
  local_18 = local_8 / 2 + local_10;
  local_14 = local_4 / 2 + local_c;
  (**(code **)(*param_1 + 0xc))(&local_18);
  return;
}



void __thiscall FUN_0099a6a0(int param_1_00,undefined4 *param_1,uint param_2)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  uint uVar4;
  
  if (param_2 != 0) {
    puVar2 = (undefined4 *)operator_new(0x10);
    if (puVar2 == (undefined4 *)0x0) {
      puVar2 = (undefined4 *)0x0;
    }
    else {
      *puVar2 = *param_1;
      puVar2[1] = param_1[1];
      puVar2[2] = param_1[2];
      puVar2[3] = param_1[3];
    }
    iVar1 = *(int *)(param_1_00 + 4);
    if (puVar2 != (undefined4 *)0x0) {
      FUN_0086a0a0(puVar2,iVar1 * 4 >> 2,param_2);
    }
    uVar4 = 1;
    if (1 < param_2) {
      iVar3 = iVar1 * 4;
      do {
        iVar3 = iVar3 + 4;
        puVar2 = (undefined4 *)operator_new(0x10);
        if (puVar2 == (undefined4 *)0x0) {
          puVar2 = (undefined4 *)0x0;
        }
        else {
          *puVar2 = *param_1;
          puVar2[1] = param_1[1];
          puVar2[2] = param_1[2];
          puVar2[3] = param_1[3];
        }
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar4 + iVar1))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 **)(iVar3 + *(int *)(param_1_00 + 8)) = puVar2;
        uVar4 = uVar4 + 1;
      } while (uVar4 < param_2);
    }
  }
  return;
}



undefined4 FUN_0099a790(undefined4 param_1)

{
  FUN_0086a600();
  return param_1;
}



undefined4 * FUN_0099a7b0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxDisplayModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 * __thiscall FUN_0099a810(undefined4 *param_1_00,uint param_1)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (DAT_032e8c88 == (int *)0x0) {
      DAT_032e8c88 = (int *)FUN_009d2ac0();
    }
    uVar1 = (**(code **)(*DAT_032e8c88 + 8))();
    if (uVar1 <= param_1) {
      FUN_00840480("..\\..\\src\\common\\dpycmn.cpp",0x78,"wxDisplay::wxDisplay","n < GetCount()",
                   L"An invalid index was passed to wxDisplay");
    }
  }
  if (DAT_032e8c88 == (int *)0x0) {
    DAT_032e8c88 = (int *)FUN_009d2ac0();
  }
  uVar2 = (**(code **)(*DAT_032e8c88 + 4))(param_1);
  *param_1_00 = uVar2;
  return param_1_00;
}



void FUN_0099a890(int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return;
}



undefined ** FUN_0099a8c0(void)

{
  return &PTR_u_wxGdiPlusModule_0323c160;
}



void FUN_0099a8d0(void)

{
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x0099a8d9. Too many branches
                    // WARNING: Treating indirect jump as call
    (*DAT_032e963c)();
    return;
  }
  return;
}



void FUN_0099a8f0(void)

{
  if (DAT_032e9648 != 0) {
    FUN_0089f290(DAT_032e9648);
    DAT_032e9648 = 0;
  }
  DAT_0323c15c = 0xffffffff;
  return;
}



undefined4 * FUN_0099a920(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxGdiPlusModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}


/*
Unable to decompile 'FUN_0099a980'
Cause: Exception while decompiling 0099a980: process: timeout

*/


undefined4 FUN_009a6770(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a678c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8cd0)();
    return uVar2;
  }
  return 0;
}



void FUN_009a67a0(void)

{
  uint uVar1;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a67bc. Too many branches
                    // WARNING: Treating indirect jump as call
    (*DAT_032e8cd4)();
    return;
  }
  return;
}



undefined4 FUN_009a67d0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a67ec. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9638)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6800(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a681c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8cd8)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6830(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a684c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8ce4)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6860(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a687c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8ce8)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6890(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a68ac. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8d04)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a68c0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a68dc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8d0c)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a68f0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a690c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8d10)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6920(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a693c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8d24)();
    return uVar2;
  }
  return 0x12;
}



undefined4
FUN_009a6950(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e8d28)(param_1,param_2,param_3,param_4,param_5);
    return uVar2;
  }
  return 0x12;
}



undefined4
FUN_009a69b0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e8d30)(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
    return uVar2;
  }
  return 0x12;
}



undefined4
FUN_009a6a20(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
            undefined4 param_9)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e8d34)(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8,param_9)
    ;
    return uVar2;
  }
  return 0x12;
}



undefined4
FUN_009a6aa0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e8d50)(param_1,param_2,param_3,param_4,param_5);
    return uVar2;
  }
  return 0x12;
}



undefined4
FUN_009a6b00(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e8d58)(param_1,param_2,param_3,param_4,param_5);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6b60(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6b7c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8d64)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6b90(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6bac. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8dbc)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6bc0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6bdc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8dc0)();
    return uVar2;
  }
  return 0x12;
}



undefined4
FUN_009a6bf0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e8dc8)(param_1,param_2,param_3,param_4,param_5);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6c40(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6c5c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8e10)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6c70(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6c8c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8e20)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6ca0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6cbc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8e24)();
    return uVar2;
  }
  return 0x12;
}



undefined4
FUN_009a6cd0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e8e28)(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6d40(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6d5c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8e2c)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6d70(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e8e30)(param_1,param_2,param_3,param_4);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6dc0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e8e34)(param_1,param_2,param_3,param_4);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6e10(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e8e38)(param_1,param_2,param_3);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6e50(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6e6c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8e40)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6e80(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6e9c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8e44)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6eb0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6ecc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8e4c)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6ee0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6efc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8e54)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6f10(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6f2c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8e5c)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6f40(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6f5c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8e60)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6f70(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6f8c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8e64)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6fa0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6fbc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8e70)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a6fd0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a6fec. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8e78)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7000(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a701c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8e80)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7030(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a704c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8ea8)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7060(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a707c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8eb0)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7090(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a70ac. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8ee4)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a70c0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a70dc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8ee8)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a70f0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a710c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8ef0)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7120(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a713c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8f00)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7150(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a716c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8f3c)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7180(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a719c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8f48)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a71b0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a71cc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8f8c)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a71e0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a71fc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8fc4)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7210(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a722c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8fcc)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7240(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a725c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8fd4)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7270(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a728c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8fe8)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a72a0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a72bc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e8ff8)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a72d0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a72ec. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e901c)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7300(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e9054)(param_1,param_2,param_3,param_4);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7350(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a736c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9060)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7380(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a739c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9068)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a73b0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a73cc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9074)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a73e0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a73fc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9090)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7410(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a742c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e90dc)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7440(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a745c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e90ec)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7470(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a748c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e90fc)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a74a0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a74bc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e917c)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a74d0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a74ec. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9180)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7500(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a751c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9194)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7530(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a754c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e91a4)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7560(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a757c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e91a8)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7590(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a75ac. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e91bc)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a75c0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a75dc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9220)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a75f0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a760c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9230)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7620(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a763c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9234)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7650(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a766c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9238)();
    return uVar2;
  }
  return 0x12;
}



undefined4
FUN_009a7680(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e9244)(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a76e0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a76fc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e924c)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7710(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a772c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9250)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7740(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a775c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9254)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7770(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a778c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e92a0)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a77a0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a77bc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e92a8)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a77d0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a77ec. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e92b0)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7800(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a781c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e92bc)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7830(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a784c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e92d4)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7860(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a787c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e92dc)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7890(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a78ac. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e92e4)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a78c0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a78dc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e92fc)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a78f0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a790c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9304)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7920(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e9308)(param_1,param_2,param_3,param_4);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7970(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e930c)(param_1,param_2,param_3,param_4);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a79c0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e9310)(param_1,param_2,param_3);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7a00(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7a1c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9314)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7a30(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e9328)(param_1,param_2);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7a70(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7a8c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9330)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7aa0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7abc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e934c)();
    return uVar2;
  }
  return 0x12;
}



undefined4
FUN_009a7ad0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e9368)(param_1,param_2,param_3,param_4,param_5,param_6);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7b30(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7b4c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9390)();
    return uVar2;
  }
  return 0x12;
}



undefined4
FUN_009a7b60(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e93c0)(param_1,param_2,param_3,param_4,param_5,param_6);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7bc0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7bdc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e93d4)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7bf0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7c0c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e93f0)();
    return uVar2;
  }
  return 0x12;
}



undefined4
FUN_009a7c20(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e9410)(param_1,param_2,param_3,param_4,param_5,param_6);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7c80(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7c9c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e942c)();
    return uVar2;
  }
  return 0x12;
}



undefined4
FUN_009a7cb0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e9470)(param_1,param_2,param_3,param_4,param_5,param_6);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7d10(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7d2c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e947c)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7d40(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7d5c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9484)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7d70(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7d8c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e94bc)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7da0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7dbc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e94c0)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7dd0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7dec. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9534)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7e00(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7e1c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9538)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7e30(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7e4c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9540)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7e60(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7e7c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9554)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7e90(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7eac. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9558)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7ec0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7edc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e955c)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7ef0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7f0c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9560)();
    return uVar2;
  }
  return 0x12;
}



undefined4
FUN_009a7f20(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
    uVar2 = (*DAT_032e9570)(param_1,param_2,param_3,param_4,param_5);
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7f70(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7f8c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9578)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7fa0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7fbc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e957c)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a7fd0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a7fec. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9584)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a8000(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a801c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e95b8)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a8030(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a804c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e95bc)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a8060(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a807c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e95c0)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a8090(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a80ac. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e95d4)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a80c0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a80dc. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e95d8)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a80f0(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a810c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e95dc)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a8120(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a813c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e95e0)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a8150(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a816c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e95e4)();
    return uVar2;
  }
  return 0x12;
}



undefined4 FUN_009a8180(void)

{
  uint uVar1;
  undefined4 uVar2;
  
  if (DAT_0323c15c == 0xffffffff) {
    uVar1 = FUN_0099a980();
    DAT_0323c15c = uVar1 & 0xff;
  }
  if (DAT_0323c15c == 1) {
                    // WARNING: Could not recover jumptable at 0x009a819c. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (*DAT_032e9620)();
    return uVar2;
  }
  return 0x12;
}



undefined ** FUN_009a81b0(void)

{
  return &PTR_u_wxGraphicsObject_0323c27c;
}



void FUN_009a81c0(int *param_1)

{
  (**(code **)(*param_1 + 4))();
  return;
}



undefined ** FUN_009a81d0(void)

{
  return &PTR_u_wxGraphicsPen_0323c294;
}



undefined ** FUN_009a81e0(void)

{
  return &PTR_u_wxGraphicsBrush_0323c2ac;
}



undefined ** FUN_009a81f0(void)

{
  return &PTR_u_wxGraphicsFont_0323c2c4;
}



undefined ** FUN_009a8200(void)

{
  return &PTR_u_wxGraphicsBitmap_0323c2dc;
}



undefined ** FUN_009a8210(void)

{
  return &PTR_u_wxGraphicsMatrix_0323c314;
}



undefined ** FUN_009a8220(void)

{
  return &PTR_u_wxGraphicsPath_0323c334;
}



// WARNING: Restarted to delay deadcode elimination for space: stack

void __thiscall FUN_009a8230(int *param_1_00,double param_1,undefined8 param_2,double param_3)

{
  undefined4 unaff_ESI;
  undefined4 unaff_retaddr;
  
  (**(code **)(*param_1_00 + 8))(param_1 + param_3,param_2);
  (**(code **)(*param_1_00 + 0x20))
            (param_2,CONCAT44(unaff_retaddr,unaff_ESI),param_1,0,0x401921fb54442d18,0);
  (**(code **)(*param_1_00 + 0x18))();
  return;
}



void __thiscall
FUN_009a82a0(int *param_1_00,double param_1,double param_2,double param_3,double param_4,
            double param_5)

{
  double dVar1;
  double dVar2;
  double dVar3;
  double dVar4;
  undefined8 uStack_68;
  
  if (NAN(param_5) != (param_5 == 0.0)) {
    (**(code **)(*param_1_00 + 0x28))(param_1,param_2,param_3,param_4);
    return;
  }
  dVar1 = param_4 * 0.5 + param_2;
  (**(code **)(*param_1_00 + 8))(param_1 + param_3,dVar1);
  dVar3 = param_3 * 0.5 + param_1;
  dVar4 = param_5;
  (**(code **)(*param_1_00 + 0x30))(uStack_68,param_2 + param_4,dVar3,param_2 + param_4,param_5);
  dVar2 = param_1;
  (**(code **)(*param_1_00 + 0x30))(param_1,dVar1,param_1,dVar4,param_5);
  dVar1 = param_5;
  (**(code **)(*param_1_00 + 0x30))(param_1,param_2,dVar3,param_2,param_5);
  (**(code **)(*param_1_00 + 0x30))(dVar2,param_2,dVar2,dVar1,param_5);
  (**(code **)(*param_1_00 + 0x18))();
  return;
}



undefined ** FUN_009a83f0(void)

{
  return &PTR_u_wxGraphicsContext_0323c354;
}



void FUN_009a8400(void)

{
  return;
}



void __thiscall FUN_009a8410(int param_1_00,undefined param_1)

{
  *(undefined *)(param_1_00 + 0x3c) = param_1;
  return;
}



void FUN_009a8420(undefined8 *param_1,undefined8 *param_2)

{
  *param_1 = 0x4052000000000000;
  *param_2 = 0x4052000000000000;
  return;
}



void __thiscall FUN_009a8440(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  (**(code **)(*param_1_00 + 0xa4))(param_1,param_2);
  (**(code **)(*param_1_00 + 0xa0))(param_1);
  return;
}



void __thiscall FUN_009a8470(int *param_1_00,undefined4 param_1,double param_2,undefined8 param_3)

{
  double dVar1;
  double dVar2;
  double dVar3;
  
  dVar3 = param_2;
  (**(code **)(*param_1_00 + 0x7c))(param_2,param_3);
  (**(code **)(*param_1_00 + 0x84))(-param_2);
  dVar2 = 0.0;
  dVar1 = 0.0;
  (**(code **)(*param_1_00 + 0xe4))(SUB84(dVar3,0),0,0);
  (**(code **)(*param_1_00 + 0x84))(dVar3);
  (**(code **)(*param_1_00 + 0x7c))(-dVar1,-dVar2);
  return;
}



void FUN_009a8500(undefined4 param_1)

{
  int *piVar1;
  
  piVar1 = (int *)FUN_009d3220();
  (**(code **)(*piVar1 + 0x20))(param_1);
  return;
}



void FUN_009a8520(undefined4 param_1)

{
  int *piVar1;
  
  piVar1 = (int *)FUN_009d3220();
  (**(code **)(*piVar1 + 0x10))(param_1);
  return;
}



void __thiscall FUN_009a8540(undefined4 *param_1_00,undefined4 param_1)

{
  param_1_00[1] = 1;
  *param_1_00 = wxGraphicsObjectRefData::vftable;
  param_1_00[2] = param_1;
  return;
}



void __fastcall FUN_009a8560(undefined4 *param_1)

{
  *param_1 = wxRefCounter::vftable;
  return;
}



undefined4 * __fastcall FUN_009a8570(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 1;
    *puVar1 = wxGraphicsObjectRefData::vftable;
    puVar1[2] = *(undefined4 *)(param_1 + 8);
    return puVar1;
  }
  return (undefined4 *)0x0;
}



void __fastcall FUN_009a85a0(undefined4 *param_1)

{
  param_1[1] = 0;
  *param_1 = wxGraphicsObject::vftable;
  return;
}



undefined4 * __thiscall FUN_009a85b0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxGraphicsObject::vftable;
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    *puVar1 = wxGraphicsObjectRefData::vftable;
    puVar1[2] = param_1;
  }
  param_1_00[1] = puVar1;
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_009a8630(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 4);
  if (iVar1 == 0) {
    return iVar1;
  }
  return *(int *)(iVar1 + 8);
}



void __fastcall FUN_009a8640(int param_1)

{
  FUN_0083eaa0();
                    // WARNING: Could not recover jumptable at 0x009a865c. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 8))();
  return;
}



void __thiscall
FUN_009a8660(int param_1_00,undefined8 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4,undefined8 param_5,undefined8 param_6)

{
  FUN_0083eaa0();
  (**(code **)(**(int **)(param_1_00 + 4) + 0xc))(param_1,param_2,param_3,param_4,param_5,param_6);
  return;
}



void __fastcall FUN_009a86b0(int param_1)

{
  FUN_0083eaa0();
                    // WARNING: Could not recover jumptable at 0x009a86c1. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x14))();
  return;
}



void __fastcall FUN_009a86d0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009a86e3. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x18))();
  return;
}



void __fastcall FUN_009a86f0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009a86f8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x1c))();
  return;
}



void __thiscall FUN_009a8700(int param_1_00,undefined8 param_1,undefined8 param_2)

{
  FUN_0083eaa0();
  (**(code **)(**(int **)(param_1_00 + 4) + 0x20))(param_1,param_2);
  return;
}



void __thiscall FUN_009a8730(int param_1_00,undefined8 param_1,undefined8 param_2)

{
  FUN_0083eaa0();
  (**(code **)(**(int **)(param_1_00 + 4) + 0x24))(param_1,param_2);
  return;
}



void __thiscall FUN_009a8760(int param_1_00,undefined8 param_1)

{
  FUN_0083eaa0();
  (**(code **)(**(int **)(param_1_00 + 4) + 0x28))(param_1);
  return;
}



void __fastcall FUN_009a8780(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009a8788. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x2c))();
  return;
}



void __fastcall FUN_009a8790(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009a8798. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x34))();
  return;
}



void __thiscall FUN_009a87a0(int param_1_00,undefined8 param_1,undefined8 param_2)

{
  FUN_0083eaa0();
  (**(code **)(**(int **)(param_1_00 + 4) + 8))(param_1,param_2);
  return;
}



void __thiscall FUN_009a87d0(int param_1_00,undefined8 param_1,undefined8 param_2)

{
  FUN_0083eaa0();
  (**(code **)(**(int **)(param_1_00 + 4) + 0xc))(param_1,param_2);
  return;
}



void __thiscall
FUN_009a8800(int param_1_00,undefined8 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4,undefined8 param_5,undefined8 param_6)

{
  FUN_0083eaa0();
  (**(code **)(**(int **)(param_1_00 + 4) + 0x10))(param_1,param_2,param_3,param_4,param_5,param_6);
  return;
}



void __fastcall FUN_009a8850(int param_1)

{
  FUN_0083eaa0();
                    // WARNING: Could not recover jumptable at 0x009a886c. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x14))();
  return;
}



void __fastcall FUN_009a8870(int param_1)

{
  FUN_0083eaa0();
                    // WARNING: Could not recover jumptable at 0x009a8881. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x18))();
  return;
}



void __fastcall FUN_009a8890(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009a8898. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x1c))();
  return;
}



void __thiscall
FUN_009a88a0(int param_1_00,undefined8 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4,undefined8 param_5,undefined4 param_6)

{
  FUN_0083eaa0();
  (**(code **)(**(int **)(param_1_00 + 4) + 0x20))(param_1,param_2,param_3,param_4,param_5,param_6);
  return;
}



void __thiscall
FUN_009a88f0(int param_1_00,undefined8 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4)

{
  FUN_0083eaa0();
  (**(code **)(**(int **)(param_1_00 + 4) + 0x24))(param_1,param_2,param_3,param_4);
  return;
}



void __thiscall
FUN_009a8930(int param_1_00,undefined8 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4)

{
  FUN_0083eaa0();
  (**(code **)(**(int **)(param_1_00 + 4) + 0x28))(param_1,param_2,param_3,param_4);
  return;
}



void __thiscall
FUN_009a8970(int param_1_00,undefined8 param_1,undefined8 param_2,undefined8 param_3)

{
  FUN_0083eaa0();
  (**(code **)(**(int **)(param_1_00 + 4) + 0x2c))(param_1,param_2,param_3);
  return;
}



void __thiscall
FUN_009a89a0(int param_1_00,undefined8 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4,undefined8 param_5)

{
  (**(code **)(**(int **)(param_1_00 + 4) + 0x30))(param_1,param_2,param_3,param_4,param_5);
  return;
}



void __thiscall
FUN_009a89e0(int param_1_00,undefined8 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4)

{
  FUN_0083eaa0();
  (**(code **)(**(int **)(param_1_00 + 4) + 0x34))(param_1,param_2,param_3,param_4);
  return;
}



void __thiscall
FUN_009a8a20(int param_1_00,undefined8 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4,undefined8 param_5)

{
  FUN_0083eaa0();
  (**(code **)(**(int **)(param_1_00 + 4) + 0x38))(param_1,param_2,param_3,param_4,param_5);
  return;
}



void __fastcall FUN_009a8a60(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009a8a68. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x3c))();
  return;
}



void __fastcall FUN_009a8a70(int param_1)

{
  FUN_0083eaa0();
                    // WARNING: Could not recover jumptable at 0x009a8a8c. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x44))();
  return;
}



void __fastcall FUN_009a8a90(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009a8a98. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x48))();
  return;
}



void __thiscall
FUN_009a8ad0(int *param_1_00,double param_1,double param_2,double param_3,double param_4)

{
  double dStack_58;
  double local_50;
  undefined8 local_48 [8];
  
  local_50 = 0.0;
  local_48[0] = 0;
  (**(code **)(*param_1_00 + 0x1c))(&local_50,local_48);
  (**(code **)(*param_1_00 + 0x10))
            (dStack_58 * 0.3333333333333333 + param_1 * 0.6666666666666666,
             local_50 * 0.3333333333333333 + param_2 * 0.6666666666666666,
             param_3 * 0.3333333333333333 + param_1 * 0.6666666666666666,
             param_2 * 0.6666666666666666 + param_4 * 0.3333333333333333,param_3,param_4);
  return;
}



void __thiscall
FUN_009a8b70(int *param_1_00,double param_1,double param_2,undefined8 param_3,undefined8 param_4,
            double param_5)

{
  double dVar1;
  double dVar2;
  undefined4 unaff_ESI;
  float10 fVar3;
  float10 fVar4;
  double *pdVar5;
  double *pdVar6;
  undefined4 uStack_bc;
  double dStack_88;
  double local_80;
  double local_78;
  double dStack_70;
  double dStack_68;
  double dStack_60;
  double dStack_58;
  double dStack_50;
  
  local_80 = 0.0;
  local_78 = 0.0;
  pdVar6 = &local_78;
  pdVar5 = &local_80;
  (**(code **)(*param_1_00 + 0x1c))(pdVar5,pdVar6);
  dVar2 = local_80 - param_2;
  fVar3 = (float10)FUN_00a4d440();
  dVar1 = (double)((float10)(dStack_88 - param_1) / fVar3);
  dVar2 = (double)((float10)dVar2 / fVar3);
  FUN_00a4d440();
  FUN_009d9870();
  FUN_009d9870();
  fVar3 = (float10)FUN_00a4d0f0();
  fVar4 = (float10)FUN_00a4d220();
  fVar4 = fVar4 * (float10)(double)((float10)param_5 / fVar3);
  local_78 = (double)((float10)dVar1 * fVar4 + (float10)param_1);
  dStack_70 = (double)((float10)dVar2 * fVar4 + (float10)param_2);
  dStack_68 = dVar1;
  dStack_60 = dVar2;
  fVar3 = (float10)FUN_009d9870();
  FUN_009d98e0((double)(fVar3 - (float10)90.0));
  dStack_58 = dStack_68 * param_5 + local_78;
  dStack_50 = param_5 * dStack_60 + dStack_70;
  FUN_009d9870();
  FUN_009d9870();
  (**(code **)(*param_1_00 + 0xc))(local_78,dStack_70);
  (**(code **)(*param_1_00 + 0x20))
            (dStack_68,dStack_60,param_5,
             ((double)CONCAT44(pdVar6,pdVar5) * 3.141592653589793) / 180.0,
             ((double)CONCAT44(uStack_bc,unaff_ESI) * 3.141592653589793) / 180.0,1);
  (**(code **)(*param_1_00 + 0xc))(param_3,param_4);
  return;
}



void __thiscall FUN_009a8d80(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  *param_1_00 = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 4);
  param_1_00[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1_00 = wxColour::vftable;
  param_1_00[2] = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 3) = *(undefined *)(param_1 + 0xc);
  *(undefined *)((int)param_1_00 + 0xd) = *(undefined *)(param_1 + 0xd);
  *(undefined *)((int)param_1_00 + 0xe) = *(undefined *)(param_1 + 0xe);
  *(undefined *)((int)param_1_00 + 0xf) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 4) = *(undefined *)(param_1 + 0x10);
  param_1_00[5] = *(undefined4 *)(param_1 + 0x14);
  return;
}



// WARNING: Restarted to delay deadcode elimination for space: stack

void __thiscall
FUN_009a8ec0(int *param_1_00,double param_1,double param_2,double param_3,double param_4)

{
  void *pvVar1;
  int *unaff_ESI;
  ulonglong uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined local_a8 [8];
  undefined8 local_a0;
  double local_98;
  double local_90;
  double local_88;
  undefined4 uStack_78;
  void *local_4c;
  undefined *puStack_48;
  undefined4 uStack_44;
  
  uStack_44 = 0xffffffff;
  puStack_48 = &LAB_00be4280;
  local_4c = ExceptionList;
  pvVar1 = (void *)(DAT_0323f878 ^ (uint)&stack0xffffff40);
  if (param_3 < 0.0 != (param_3 == 0.0)) {
    return;
  }
  if (param_4 < 0.0 == (param_4 == 0.0)) {
    local_88 = param_3 * 0.5;
    local_a0 = param_4 * 0.5;
    local_90 = local_88 + param_1;
    local_98 = local_a0 + param_2;
    ExceptionList = &local_4c;
    (**(code **)(*(int *)param_1_00[2] + 0x38))();
    uStack_78 = 0;
    FUN_0083eaa0();
    (**(code **)(iRam3ff00000 + 0x20))();
    FUN_0083eaa0();
    uVar4 = 0xfff80000;
    (**(code **)(iRam00000000 + 0x24))(0xfff8000000000000,0x3ff0000000000000);
    (**(code **)(*(int *)param_1_00[2] + 0x34))();
    FUN_0083eaa0();
    uVar2 = ZEXT48(local_a8);
    (**(code **)(*unaff_ESI + 0x2c))(0,0,uVar2);
    uVar3 = (undefined4)(uVar2 >> 0x20);
    FUN_0083eaa0();
    (*(code *)unaff_ESI[0x11])(uVar4);
    (**(code **)(*param_1_00 + 0x14))(uVar3);
    FUN_0083e850();
    FUN_0083e850();
    ExceptionList = pvVar1;
    return;
  }
  return;
}



undefined4 * __thiscall FUN_009a90a0(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_009a85b0(param_1);
  *param_1_00 = wxGraphicsContext::vftable;
  param_1_00[6] = wxGraphicsPen::vftable;
  param_1_00[7] = 0;
  param_1_00[9] = 0;
  param_1_00[8] = wxGraphicsBrush::vftable;
  param_1_00[0xb] = 0;
  param_1_00[10] = wxGraphicsFont::vftable;
  *(undefined *)(param_1_00 + 0xf) = 0;
  param_1_00[0xc] = 1;
  param_1_00[0xd] = 2;
  return param_1_00;
}



undefined4 __fastcall FUN_009a90f0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x30);
}



undefined4 __fastcall FUN_009a9100(int param_1)

{
  return *(undefined4 *)(param_1 + 0x34);
}



void __fastcall FUN_009a9110(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be42be;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxGraphicsContext::vftable;
  local_4 = 2;
  param_1[10] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4._0_1_ = 1;
  param_1[8] = wxObject::vftable;
  FUN_0083e850();
  local_4 = (uint)local_4._1_3_ << 8;
  param_1[6] = wxObject::vftable;
  FUN_0083e850();
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009a91a0(int *param_1_00,int *param_1)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  void *unaff_ESI;
  undefined auStack_14 [4];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bea178;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  if (cVar1 != '\0') {
    iVar2 = (**(code **)(*param_1 + 0x54))();
    if (iVar2 != 0x6a) {
      uVar3 = (**(code **)(*param_1_00 + 0x24))(auStack_14,param_1);
      local_c = (void *)0x0;
      (**(code **)(*param_1_00 + 0x94))(uVar3);
      pvStack_10 = (void *)0xffffffff;
      FUN_0083e850();
      ExceptionList = unaff_ESI;
      return;
    }
  }
  (**(code **)(*param_1_00 + 0x94))(&PTR_vftable_0323c2f4);
  ExceptionList = pvStack_10;
  return;
}



void __thiscall FUN_009a9260(int param_1_00,int param_1)

{
  if (param_1_00 + 0x28 != param_1) {
    FUN_0083ea60();
    return;
  }
  return;
}



undefined4 __thiscall
FUN_009a9280(int param_1_00,undefined4 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4,undefined8 param_5,undefined8 param_6,undefined8 param_7)

{
  int *piVar1;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    piVar1 = (int *)0x0;
  }
  else {
    piVar1 = *(int **)(*(int *)(param_1_00 + 4) + 8);
  }
  (**(code **)(*piVar1 + 0x38))(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  return param_1;
}



undefined4 __thiscall FUN_009a92e0(int param_1_00,undefined4 param_1)

{
  if (*(int *)(param_1_00 + 4) == 0) {
    (**(code **)(iRam00000000 + 0x34))(param_1);
    return param_1;
  }
  (**(code **)(**(int **)(*(int *)(param_1_00 + 4) + 8) + 0x34))(param_1);
  return param_1;
}



undefined4 __thiscall FUN_009a9320(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    piVar1 = (int *)0x0;
  }
  else {
    piVar1 = *(int **)(*(int *)(param_1_00 + 4) + 8);
  }
  (**(code **)(*piVar1 + 0x3c))(param_1,param_2);
  return param_1;
}



undefined4 __thiscall FUN_009a9350(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    piVar1 = (int *)0x0;
  }
  else {
    piVar1 = *(int **)(*(int *)(param_1_00 + 4) + 8);
  }
  (**(code **)(*piVar1 + 0x40))(param_1,param_2);
  return param_1;
}



undefined4 __thiscall
FUN_009a9380(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int *piVar1;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    piVar1 = (int *)0x0;
  }
  else {
    piVar1 = *(int **)(*(int *)(param_1_00 + 4) + 8);
  }
  (**(code **)(*piVar1 + 0x50))(param_1,param_2,param_3);
  return param_1;
}



undefined4 __thiscall
FUN_009a93c0(int param_1_00,undefined4 param_1,undefined8 param_3_00,undefined4 param_4_00,
            undefined4 param_3,undefined4 param_4)

{
  int *piVar1;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    piVar1 = (int *)0x0;
  }
  else {
    piVar1 = *(int **)(*(int *)(param_1_00 + 4) + 8);
  }
  (**(code **)(*piVar1 + 0x4c))(param_1,param_3_00,param_4_00,param_3,param_4);
  return param_1;
}



undefined4 __thiscall FUN_009a9410(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    piVar1 = (int *)0x0;
  }
  else {
    piVar1 = *(int **)(*(int *)(param_1_00 + 4) + 8);
  }
  (**(code **)(*piVar1 + 0x54))(param_1,param_2);
  return param_1;
}



undefined4 __thiscall
FUN_009a9440(int param_1_00,undefined4 param_1,undefined4 param_2,undefined8 param_3,
            undefined8 param_4,undefined8 param_5,undefined8 param_6)

{
  int *piVar1;
  
  if (*(int *)(param_1_00 + 4) == 0) {
    piVar1 = (int *)0x0;
  }
  else {
    piVar1 = *(int **)(*(int *)(param_1_00 + 4) + 8);
  }
  (**(code **)(*piVar1 + 100))(param_1,param_2,param_3,param_4,param_5,param_6);
  return param_1;
}



undefined4 __thiscall FUN_009a94a0(undefined4 param_1_00,byte param_1)

{
  FUN_009a9110();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_009a94c0(int param_1_00,int param_1)

{
  if (param_1_00 + 0x18 != param_1) {
    FUN_0083ea60();
    return;
  }
  return;
}



void __thiscall
FUN_009a94e0(int *param_1_00,undefined4 param_1,undefined8 param_2,undefined8 param_3,
            undefined4 param_11)

{
  int *piVar1;
  void *pvVar2;
  undefined8 uStack_f8;
  undefined8 uStack_f0;
  undefined8 uStack_e8;
  undefined **ppuStack_e0;
  undefined4 uStack_dc;
  undefined4 uStack_d8;
  undefined *puStack_d4;
  undefined *puStack_d0;
  undefined *puStack_cc;
  undefined *puStack_c8;
  uint uStack_c4;
  undefined4 uStack_b4;
  undefined local_a0 [4];
  uint uStack_9c;
  undefined local_98 [8];
  undefined local_90 [8];
  undefined local_88 [60];
  void *local_4c;
  undefined *puStack_48;
  undefined4 local_44;
  
  puStack_48 = &LAB_00be42f0;
  local_4c = ExceptionList;
  uStack_c4 = DAT_0323f878 ^ (uint)&stack0xffffff40;
  ExceptionList = &local_4c;
  pvVar2 = (void *)param_1_00[9];
  if (pvVar2 != (void *)0x0) {
    *(int *)((int)pvVar2 + 4) = *(int *)((int)pvVar2 + 4) + 1;
  }
  if (param_1_00[7] != 0) {
    piVar1 = (int *)(param_1_00[7] + 4);
    *piVar1 = *piVar1 + 1;
  }
  local_44 = 1;
  puStack_c8 = local_90;
  puStack_cc = local_88;
  puStack_d0 = local_a0;
  puStack_d4 = local_98;
  uStack_d8 = param_1;
  uStack_dc = 0x9a9582;
  (**(code **)(*param_1_00 + 0xac))();
  uStack_dc = param_11;
  ppuStack_e0 = (undefined **)0x9a9592;
  (**(code **)(*param_1_00 + 0x98))();
  ppuStack_e0 = &PTR_vftable_0323c2f4;
  uStack_e8 = CONCAT44(0x9a95a3,(undefined4)uStack_e8);
  (**(code **)(*param_1_00 + 0x94))();
  uStack_f0 = CONCAT44(wxGraphicsPen::vftable,uStack_b4);
  uStack_f8 = param_3;
  (**(code **)(*param_1_00 + 0xd0))();
  (**(code **)(*param_1_00 + 0xe4))(param_1,param_2,param_3);
  (**(code **)(*param_1_00 + 0x98))(&uStack_f8);
  (**(code **)(*param_1_00 + 0x94))(&stack0xfffffefc);
  uStack_9c = uStack_9c & 0xffffff00;
  FUN_0083e850();
  uStack_9c = 0xffffffff;
  FUN_0083e850();
  ExceptionList = pvVar2;
  return;
}



void __thiscall
FUN_009a9650(int *param_1_00,undefined4 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4,undefined4 param_11)

{
  int iVar1;
  int *unaff_EDI;
  float10 fVar2;
  double dStack_148;
  double dStack_140;
  undefined8 uStack_138;
  undefined8 uStack_130;
  undefined8 uStack_128;
  undefined **ppuStack_120;
  int iStack_11c;
  undefined4 uStack_118;
  undefined *puStack_114;
  int *piStack_110;
  undefined8 uStack_10c;
  uint uStack_104;
  undefined auStack_f4 [4];
  int *piStack_f0;
  double dStack_ec;
  double dStack_e4;
  double dStack_dc;
  double dStack_d4;
  undefined8 local_cc;
  int local_c4;
  int local_c0 [4];
  undefined local_b0 [32];
  undefined local_90 [8];
  undefined local_88 [40];
  undefined uStack_60;
  void *local_4c;
  undefined *puStack_48;
  undefined4 local_44;
  
  puStack_48 = &LAB_00be4331;
  local_4c = ExceptionList;
  uStack_104 = DAT_0323f878 ^ (uint)&stack0xffffff00;
  ExceptionList = &local_4c;
  local_c4 = param_1_00[9];
  if (local_c4 != 0) {
    *(int *)(local_c4 + 4) = *(int *)(local_c4 + 4) + 1;
  }
  iVar1 = param_1_00[7];
  local_cc = (double)CONCAT44(wxGraphicsBrush::vftable,iVar1);
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  dStack_d4 = (double)CONCAT44(wxGraphicsPen::vftable,dStack_d4._0_4_);
  uStack_10c._4_4_ = local_90;
  uStack_10c._0_4_ = local_88;
  piStack_110 = local_c0;
  puStack_114 = local_b0;
  uStack_118 = param_1;
  local_44 = 1;
  iStack_11c = 0x9a96f7;
  (**(code **)(*param_1_00 + 0xac))();
  iStack_11c = param_11;
  ppuStack_120 = (undefined **)0x9a9707;
  (**(code **)(*param_1_00 + 0x98))();
  ppuStack_120 = &PTR_vftable_0323c2f4;
  uStack_128 = CONCAT44(0x9a9718,(undefined4)uStack_128);
  (**(code **)(*param_1_00 + 0x94))();
  uStack_128 = CONCAT44(auStack_f4,0x9a9724);
  FUN_009a92e0();
  uStack_60 = 2;
  uStack_128 = CONCAT44(0x9a9735,(undefined4)uStack_128);
  FUN_0083eaa0();
  uStack_128 = param_3;
  uStack_130 = param_2;
  uStack_138 = (double)CONCAT44(0x9a9750,(undefined4)uStack_138);
  (**(code **)(*piStack_f0 + 8))();
  uStack_138 = (double)CONCAT44(0x9a9758,(undefined4)uStack_138);
  fVar2 = (float10)FUN_00a4d0f0();
  dStack_d4 = (double)fVar2;
  uStack_138 = (double)CONCAT44(0x9a9768,(undefined4)uStack_138);
  iVar1 = FUN_00a49750();
  uStack_10c = (double)CONCAT44(uStack_10c._4_4_,iVar1);
  local_cc = (double)iVar1;
  uStack_138 = (double)CONCAT44(0x9a977c,(undefined4)uStack_138);
  fVar2 = (float10)FUN_00a4d220();
  dStack_e4 = (double)fVar2;
  uStack_138 = (double)CONCAT44(0x9a978c,(undefined4)uStack_138);
  iVar1 = FUN_00a49750();
  uStack_10c = (double)iVar1;
  uStack_138 = (double)CONCAT44(0x9a97a1,(undefined4)uStack_138);
  FUN_0083eaa0();
  uStack_138 = uStack_10c;
  dStack_140 = local_cc;
  dStack_148 = (double)CONCAT44(0x9a97be,dStack_148._0_4_);
  (**(code **)(*unaff_EDI + 0xc))();
  dStack_148 = (double)CONCAT44(0x9a97e4,dStack_148._0_4_);
  iStack_11c = FUN_00a49750();
  dStack_d4 = (double)iStack_11c;
  dStack_148 = (double)CONCAT44(0x9a9802,dStack_148._0_4_);
  iStack_11c = FUN_00a49750();
  dStack_dc = (double)iStack_11c;
  dStack_148 = (double)CONCAT44(0x9a9817,dStack_148._0_4_);
  FUN_0083eaa0();
  dStack_148 = dStack_dc;
  (**(code **)(*piStack_110 + 0xc))();
  iVar1 = FUN_00a49750();
  uStack_130 = CONCAT44(iVar1,(undefined4)uStack_130);
  dStack_ec = (double)iVar1;
  iVar1 = FUN_00a49750();
  uStack_130 = CONCAT44(iVar1,(undefined4)uStack_130);
  dStack_e4 = (double)iVar1;
  FUN_0083eaa0();
  (**(code **)(*ppuStack_120 + 0xc))(dStack_ec,dStack_e4);
  (**(code **)(*param_1_00 + 0xa4))((int)&uStack_138 + 4,1);
  (**(code **)(*param_1_00 + 0xe8))(param_1,param_2,param_3,param_4);
  (**(code **)(*param_1_00 + 0x98))(&dStack_148);
  (**(code **)(*param_1_00 + 0x94))(&stack0xfffffeac);
  local_cc._0_1_ = 1;
  FUN_0083e850();
  local_cc = (double)((ulonglong)local_cc._1_7_ << 8);
  FUN_0083e850();
  local_cc = (double)CONCAT44(local_cc._4_4_,0xffffffff);
  FUN_0083e850();
  ExceptionList = dStack_d4._0_4_;
  return;
}



void __thiscall
FUN_009a9950(int *param_1_00,undefined8 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4)

{
  uint uVar1;
  undefined auStack_a8 [20];
  int *piStack_94;
  int *local_84;
  void *pvStack_70;
  undefined4 uStack_68;
  void *local_4c;
  undefined *puStack_48;
  undefined4 local_44;
  
  local_44 = 0xffffffff;
  puStack_48 = &LAB_00be4368;
  local_4c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff40;
  ExceptionList = &local_4c;
  FUN_009a92e0();
  local_44 = 0;
  FUN_0083eaa0(uVar1);
  (**(code **)(*local_84 + 8))(param_1,param_2);
  FUN_0083eaa0();
  (**(code **)(*piStack_94 + 0xc))(param_3,param_4);
  (**(code **)(*param_1_00 + 0xa0))(auStack_a8);
  uStack_68 = 0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_70;
  return;
}



void __thiscall
FUN_009a9a20(int *param_1_00,undefined8 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4)

{
  uint uVar1;
  undefined auStack_a8 [36];
  int *local_84;
  void *pvStack_74;
  undefined4 uStack_6c;
  void *local_4c;
  undefined *puStack_48;
  undefined4 local_44;
  
  local_44 = 0xffffffff;
  puStack_48 = &LAB_00be4368;
  local_4c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff40;
  ExceptionList = &local_4c;
  FUN_009a92e0();
  local_44 = 0;
  FUN_0083eaa0(uVar1);
  (**(code **)(*local_84 + 0x28))(param_1,param_2,param_3,param_4);
  (**(code **)(*param_1_00 + 0xa8))(auStack_a8,1);
  uStack_6c = 0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_74;
  return;
}



void __thiscall
FUN_009a9ae0(int *param_1_00,undefined8 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4)

{
  uint uVar1;
  undefined auStack_a8 [36];
  int *local_84;
  void *pvStack_74;
  undefined4 uStack_6c;
  void *local_4c;
  undefined *puStack_48;
  undefined4 local_44;
  
  local_44 = 0xffffffff;
  puStack_48 = &LAB_00be4368;
  local_4c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff40;
  ExceptionList = &local_4c;
  FUN_009a92e0();
  local_44 = 0;
  FUN_0083eaa0(uVar1);
  (**(code **)(*local_84 + 0x34))(param_1,param_2,param_3,param_4);
  (**(code **)(*param_1_00 + 0xa8))(auStack_a8,1);
  uStack_6c = 0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_74;
  return;
}



void __thiscall
FUN_009a9ba0(int *param_1_00,undefined8 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4,undefined8 param_5)

{
  uint uVar1;
  undefined auStack_b0 [44];
  int *local_84;
  void *pvStack_7c;
  undefined4 uStack_74;
  void *local_4c;
  undefined *puStack_48;
  undefined4 local_44;
  
  local_44 = 0xffffffff;
  puStack_48 = &LAB_00be4368;
  local_4c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff40;
  ExceptionList = &local_4c;
  FUN_009a92e0();
  local_44 = 0;
  FUN_0083eaa0(uVar1);
  (**(code **)(*local_84 + 0x38))(param_1,param_2,param_3,param_4,param_5);
  (**(code **)(*param_1_00 + 0xa8))(auStack_b0,1);
  uStack_74 = 0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_7c;
  return;
}



void __thiscall FUN_009a9c60(int *param_1_00,uint param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  undefined8 uVar2;
  uint uVar3;
  int iVar4;
  int *piStack_a4;
  undefined8 local_98;
  void *pvStack_60;
  void *local_4c;
  undefined *puStack_48;
  undefined4 local_44;
  
  local_44 = 0xffffffff;
  puStack_48 = &LAB_00be4398;
  local_4c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff40;
  ExceptionList = &local_4c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 < 2)) {
    FUN_008402e0();
  }
  FUN_009a92e0();
  uVar1 = *param_2;
  local_44 = 0;
  uVar2 = param_2[1];
  FUN_0083eaa0(uVar3);
  (**(code **)(*local_98._4_4_ + 8))(uVar1,uVar2);
  if (1 < param_1) {
    iVar4 = param_1 - 1;
    do {
      uVar1 = param_2[2];
      uVar2 = param_2[3];
      FUN_0083eaa0();
      (**(code **)(*piStack_a4 + 0xc))(uVar1,uVar2);
      iVar4 = iVar4 + -1;
      param_2 = param_2 + 2;
    } while (iVar4 != 0);
  }
  (**(code **)(*param_1_00 + 0xa0))();
  FUN_0083e850();
  ExceptionList = pvStack_60;
  return;
}



void __thiscall FUN_009a9d90(int *param_1_00,uint param_1,undefined8 *param_2,undefined4 param_3)

{
  uint uVar1;
  int iVar2;
  undefined auStack_a8 [4];
  int *piStack_a4;
  undefined8 uStack_a0;
  undefined8 local_98;
  undefined8 local_90;
  undefined8 local_88;
  void *pvStack_64;
  undefined4 uStack_5c;
  void *local_4c;
  undefined *puStack_48;
  undefined4 local_44;
  
  local_44 = 0xffffffff;
  puStack_48 = &LAB_00be4398;
  local_4c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff40;
  ExceptionList = &local_4c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 < 2)) {
    FUN_008402e0();
  }
  FUN_009a92e0();
  local_88 = *param_2;
  local_44 = 0;
  local_90 = param_2[1];
  FUN_0083eaa0(uVar1);
  (**(code **)(*local_98._4_4_ + 8))(local_88,local_90);
  if (1 < param_1) {
    iVar2 = param_1 - 1;
    do {
      uStack_a0 = param_2[2];
      local_98 = param_2[3];
      FUN_0083eaa0();
      (**(code **)(*piStack_a4 + 0xc))(uStack_a0,local_98);
      iVar2 = iVar2 + -1;
      param_2 = param_2 + 2;
    } while (iVar2 != 0);
  }
  (**(code **)(*param_1_00 + 0xa8))(auStack_a8,param_3);
  uStack_5c = 0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_64;
  return;
}



void __thiscall FUN_009a9ee0(int *param_1_00,int param_1,undefined8 *param_2,int param_3)

{
  undefined8 uVar1;
  undefined8 uVar2;
  uint uVar3;
  undefined8 *puVar4;
  int *piStack_a4;
  int local_a0;
  int *local_9c;
  undefined8 local_98;
  void *pvStack_50;
  void *local_4c;
  undefined *puStack_48;
  undefined4 local_44;
  
  local_44 = 0xffffffff;
  puStack_48 = &LAB_00be4398;
  local_4c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff40;
  ExceptionList = &local_4c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_008402e0();
  }
  FUN_009a92e0();
  local_44 = 0;
  if (param_1 != 0) {
    puVar4 = (undefined8 *)(param_3 + 8);
    param_3 = (int)param_2 - param_3;
    do {
      uVar1 = *param_2;
      uVar2 = *(undefined8 *)(param_3 + (int)puVar4);
      FUN_0083eaa0(uVar3);
      (**(code **)(*local_98._4_4_ + 8))(uVar1,uVar2);
      uVar1 = puVar4[-1];
      local_98 = *puVar4;
      FUN_0083eaa0();
      (**(code **)(*piStack_a4 + 0xc))(uVar1,local_98);
      param_2 = param_2 + 2;
      puVar4 = puVar4 + 2;
      local_a0 = (int)uVar1;
      local_9c = (int *)((ulonglong)uVar1 >> 0x20);
      param_1_00 = local_9c;
    } while (local_a0 != 1);
  }
  (**(code **)(*param_1_00 + 0xa0))();
  puStack_48 = (undefined *)0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_50;
  return;
}



undefined4 FUN_009aa030(void)

{
  char cVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(6);
  if (cVar1 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_008423d0();
    local_4._0_1_ = 1;
    FUN_008854f0();
    FUN_0083fe90();
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_00842440();
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  ExceptionList = local_c;
  return 0;
}



undefined ** FUN_009aa100(void)

{
  return &PTR_PTR_00d7128c;
}



undefined * FUN_009aa110(void)

{
  return &DAT_032e964c;
}



undefined ** FUN_009aa120(void)

{
  return &PTR_u_wxToolBarToolBase_0323c404;
}



undefined __thiscall FUN_009aa130(int param_1_00,char param_1)

{
  if (*(char *)(param_1_00 + 0x1e) == param_1) {
    return 0;
  }
  *(char *)(param_1_00 + 0x1e) = param_1;
  return 1;
}



undefined4 __thiscall FUN_009aa150(int param_1_00,char param_1)

{
  if (*(uint *)(param_1_00 + 0x14) == (uint)(param_1 != '\0')) {
    return 0;
  }
  *(uint *)(param_1_00 + 0x14) = (uint)(param_1 != '\0');
  return 1;
}



void __thiscall FUN_009aa170(int param_1_00,undefined4 param_1)

{
  undefined4 unaff_retaddr;
  
  if (*(int **)(param_1_00 + 0x9c) != (int *)0x0) {
    (**(code **)(**(int **)(param_1_00 + 0x9c) + 4))(1);
    *(undefined4 *)(param_1_00 + 0x9c) = unaff_retaddr;
    return;
  }
  *(undefined4 *)(param_1_00 + 0x9c) = param_1;
  return;
}



undefined4 __fastcall FUN_009aa1d0(int param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0xc) != 1)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/tbarbase.h",0x82,"wxToolBarToolBase::GetKind",
                 "IsButton()",L"only makes sense for buttons");
  }
  return *(undefined4 *)(param_1 + 0x14);
}



void __thiscall FUN_009aa210(int param_1_00,int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  if (param_1 == *(int *)(param_1_00 + 4)) {
    FUN_0086ad60(param_2);
    return;
  }
  uVar1 = FUN_0086aef0(param_1);
  FUN_0086ae40(uVar1,param_2);
  return;
}



undefined4 * __thiscall
FUN_009aa250(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxwxToolBarToolsListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 __thiscall FUN_009aa2d0(int param_1_00,char param_1)

{
  if (((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x14) != 1)) &&
     (*(int *)(param_1_00 + 0x14) != 2)) {
    FUN_00840480("..\\..\\src\\common\\tbarbase.cpp",0x57,"wxToolBarToolBase::Toggle",
                 "CanBeToggled()",L"can\'t toggle this tool");
  }
  if (*(char *)(param_1_00 + 0x1d) == param_1) {
    return 0;
  }
  *(char *)(param_1_00 + 0x1d) = param_1;
  return 1;
}



void __fastcall FUN_009aa320(int param_1)

{
  if ((*(uint *)(param_1 + 0xe0) & 0x600c) == 0) {
    *(uint *)(param_1 + 0xe0) = *(uint *)(param_1 + 0xe0) | 4;
  }
  return;
}



void __thiscall
FUN_009aa340(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8)

{
  FUN_0091a950();
  (**(code **)(*param_1_00 + 0x360))
            (param_1_00[0x66],param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
  return;
}



int * __thiscall
FUN_009aa390(int *param_1_00,uint param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
            undefined4 param_9)

{
  int *piVar1;
  int iVar2;
  
  if ((uint)param_1_00[0x66] < param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\tbarbase.cpp",0xbc,"wxToolBarBase::InsertTool",
                   "pos <= GetToolsCount()",L"invalid position in wxToolBar::InsertTool()");
    }
    return (int *)0x0;
  }
  piVar1 = (int *)(**(code **)(*param_1_00 + 0x420))
                            (param_2,param_3,param_4,param_5,param_6,param_9,param_7,param_8);
  iVar2 = (**(code **)(*param_1_00 + 0x35c))(param_1,piVar1);
  if (iVar2 == 0) {
    if (piVar1 != (int *)0x0) {
      (**(code **)(*piVar1 + 4))(1);
    }
    return (int *)0x0;
  }
  return piVar1;
}



int * __thiscall FUN_009aa460(int *param_1_00,uint param_1,int *param_2)

{
  char cVar1;
  
  if ((uint)param_1_00[0x66] < param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\tbarbase.cpp",0xcb,"wxToolBarBase::InsertTool",
                   "pos <= GetToolsCount()",L"invalid position in wxToolBar::InsertTool()");
    }
    return (int *)0x0;
  }
  if (param_2 != (int *)0x0) {
    cVar1 = (**(code **)(*param_1_00 + 0x408))(param_1,param_2);
    if (cVar1 != '\0') {
      FUN_009aa210(param_1,param_2);
      (**(code **)(*param_2 + 0x34))(param_1_00);
      return param_2;
    }
  }
  return (int *)0x0;
}



int * __thiscall FUN_009aa610(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  int iVar4;
  
  iVar1 = param_1_00[0x68];
  iVar4 = 0;
  while( true ) {
    if (iVar1 == 0) {
      return (int *)0x0;
    }
    piVar2 = *(int **)(iVar1 + 8);
    if (piVar2[4] == param_1) break;
    iVar1 = *(int *)(iVar1 + 0xc);
    iVar4 = iVar4 + 1;
  }
  if (piVar2 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\tbarbase.cpp",0x13a,"wxToolBarBase::RemoveTool",
                   &DAT_00d7158c,"NULL tool in the tools list?");
    }
  }
  else {
    cVar3 = (**(code **)(*param_1_00 + 0x40c))(iVar4,piVar2);
    if (cVar3 != '\0') {
      FUN_0086b060(iVar1);
      (**(code **)(*piVar2 + 0x30))();
      return piVar2;
    }
  }
  return (int *)0x0;
}



undefined __thiscall FUN_009aa6b0(int *param_1_00,uint param_1)

{
  char cVar1;
  int iVar2;
  
  if ((uint)param_1_00[0x66] <= param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\tbarbase.cpp",0x149,"wxToolBarBase::DeleteToolByPos",
                   "pos < GetToolsCount()",L"invalid position in wxToolBar::DeleteToolByPos()");
    }
    return 0;
  }
  iVar2 = FUN_0086aef0(param_1);
  cVar1 = (**(code **)(*param_1_00 + 0x40c))(param_1,*(undefined4 *)(iVar2 + 8));
  if (cVar1 == '\0') {
    return 0;
  }
  if (*(int **)(iVar2 + 8) != (int *)0x0) {
    (**(code **)(**(int **)(iVar2 + 8) + 4))(1);
  }
  FUN_0086b060(iVar2);
  return 1;
}



undefined4 __thiscall FUN_009aa740(int *param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  
  iVar1 = param_1_00[0x68];
  iVar3 = 0;
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    if (*(int *)(*(int *)(iVar1 + 8) + 0x10) == param_1) break;
    iVar1 = *(int *)(iVar1 + 0xc);
    iVar3 = iVar3 + 1;
  }
  cVar2 = (**(code **)(*param_1_00 + 0x40c))(iVar3,*(int *)(iVar1 + 8));
  if (cVar2 == '\0') {
    return 0;
  }
  if (*(int **)(iVar1 + 8) != (int *)0x0) {
    (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
  }
  FUN_0086b060(iVar1);
  return 1;
}



int __thiscall FUN_009aa7b0(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = *(int *)(param_1_00 + 0x1a0);
  while ((iVar2 = 0, iVar1 != 0 && (iVar2 = *(int *)(iVar1 + 8), *(int *)(iVar2 + 0x10) != param_1))
        ) {
    iVar1 = *(int *)(iVar1 + 0xc);
  }
  return iVar2;
}



void __thiscall FUN_009aa7e0(int *param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  int iVar4;
  
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\tbarbase.cpp",0x186,"wxToolBarBase::UnToggleRadioGroup",
                   &DAT_00d7158c,L"NULL tool in wxToolBarTool::UnToggleRadioGroup");
      return;
    }
  }
  else if ((*(int *)(param_1 + 0xc) == 1) && (iVar4 = FUN_009aa1d0(), iVar4 == 2)) {
    iVar4 = FUN_0086af40(param_1);
    if (iVar4 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\common\\tbarbase.cpp",0x18c,"wxToolBarBase::UnToggleRadioGroup",
                     &DAT_00fb76e0,L"invalid tool in wxToolBarTool::UnToggleRadioGroup");
        return;
      }
    }
    else {
      iVar1 = *(int *)(iVar4 + 0xc);
      while (((iVar1 != 0 && (piVar2 = *(int **)(iVar1 + 8), piVar2[3] == 1)) && (piVar2[5] == 2)))
      {
        cVar3 = (**(code **)(*piVar2 + 0x14))(0);
        if (cVar3 != '\0') {
          (**(code **)(*param_1_00 + 0x414))(piVar2,0);
        }
        iVar1 = *(int *)(iVar1 + 0xc);
      }
      iVar4 = *(int *)(iVar4 + 0x10);
      while (((iVar4 != 0 && (piVar2 = *(int **)(iVar4 + 8), piVar2[3] == 1)) && (piVar2[5] == 2)))
      {
        cVar3 = (**(code **)(*piVar2 + 0x14))(0);
        if (cVar3 != '\0') {
          (**(code **)(*param_1_00 + 0x414))(piVar2,0);
        }
        iVar4 = *(int *)(iVar4 + 0x10);
      }
    }
  }
  return;
}



void __fastcall FUN_009aa910(int *param_1)

{
  int iVar1;
  
  iVar1 = param_1[0x66];
  while (iVar1 != 0) {
    (**(code **)(*param_1 + 900))(0);
    iVar1 = param_1[0x66];
  }
  return;
}



void __fastcall FUN_009aa940(int *param_1)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int *piVar4;
  int iVar5;
  int local_28;
  int local_24;
  int iStack_20;
  undefined4 uStack_1c;
  int iStack_18;
  undefined4 uStack_14;
  int local_c;
  
  local_24 = param_1[0x72];
  iVar1 = param_1[0x71];
  iVar5 = param_1[0x68];
  local_28 = iVar1;
  local_c = local_24;
  if (iVar5 != 0) {
    do {
      iVar2 = *(int *)(iVar5 + 8);
      cVar3 = (**(code **)(*(int *)(iVar2 + 0x20) + 0x10))();
      if (cVar3 != '\0') {
        if (*(int *)(iVar2 + 0x24) == 0) {
          iStack_20 = 0;
          uStack_1c = 0;
          piVar4 = &iStack_20;
        }
        else {
          iStack_18 = *(int *)(*(int *)(iVar2 + 0x24) + 8);
          uStack_14 = *(undefined4 *)(*(int *)(iVar2 + 0x24) + 0xc);
          piVar4 = &iStack_18;
        }
        if (local_28 < *piVar4) {
          local_28 = *piVar4;
        }
        if (local_24 < piVar4[1]) {
          local_24 = piVar4[1];
        }
      }
      iVar5 = *(int *)(iVar5 + 0xc);
    } while (iVar5 != 0);
    if ((local_28 != iVar1) || (local_24 != local_c)) {
      (**(code **)(*param_1 + 1000))(&local_28);
    }
  }
  return;
}



undefined __fastcall FUN_009aaa00(int param_1)

{
  if (*(int *)(param_1 + 0x198) == 0) {
    return 0;
  }
  FUN_009aa940();
  return 1;
}



void __fastcall FUN_009aaa20(undefined4 *param_1)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  uint uVar4;
  undefined **ppuVar5;
  undefined4 *puVar6;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_c = ExceptionList;
  puStack_8 = &LAB_00be43de;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  *param_1 = wxToolBarBase::vftable;
  iVar1 = param_1[0x68];
  local_4 = 1;
  for (; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if (*(int **)(iVar1 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar1 + 8) + 4))(1,uVar4);
    }
  }
  FUN_0086b130();
  piVar2 = (int *)param_1[0x11];
  if (((piVar2 != (int *)0x0) &&
      (((ppuVar5 = (undefined **)(**(code **)*piVar2)(), ppuVar5 == &PTR_u_wxFrame_03239cfc ||
        ((ppuVar5[3] != (undefined *)0x0 &&
         (cVar3 = FUN_0048a047(&PTR_u_wxFrame_03239cfc), cVar3 != '\0')))) ||
       ((ppuVar5[4] != (undefined *)0x0 &&
        (cVar3 = FUN_0048a047(&PTR_u_wxFrame_03239cfc), cVar3 != '\0')))))) &&
     (puVar6 = (undefined4 *)(**(code **)(*piVar2 + 0x3c0))(), puVar6 == param_1)) {
    (**(code **)(*piVar2 + 0x3c4))(0);
  }
  local_4 = local_4 & 0xffffff00;
  FUN_0086ade0();
  local_4 = 2;
  FUN_0086aa30();
  local_4 = 0xffffffff;
  FUN_009375f0();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009aab80(int *param_1_00,int param_1,undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  
  iVar3 = param_1_00[0x68];
  if (iVar3 != 0) {
    while (piVar1 = *(int **)(iVar3 + 8), piVar1[4] != param_1) {
      iVar3 = *(int *)(iVar3 + 0xc);
      if (iVar3 == 0) {
        return;
      }
    }
    if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)(*piVar1 + 0x10))(param_2), cVar2 != '\0')) {
      (**(code **)(*param_1_00 + 0x410))(piVar1,param_2);
    }
  }
  return;
}



void __thiscall FUN_009aac50(int *param_1_00,int param_1,undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  
  iVar3 = param_1_00[0x68];
  if (iVar3 != 0) {
    while (piVar1 = *(int **)(iVar3 + 8), piVar1[4] != param_1) {
      iVar3 = *(int *)(iVar3 + 0xc);
      if (iVar3 == 0) {
        return;
      }
    }
    if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)(*piVar1 + 0x18))(param_2), cVar2 != '\0')) {
      (**(code **)(*param_1_00 + 0x418))(piVar1,param_2);
    }
  }
  return;
}



bool __fastcall FUN_009aaee0(int param_1)

{
  return (*(uint *)(param_1 + 0xe0) & 0x4008) != 0;
}



undefined4 __thiscall FUN_009aaf00(undefined4 param_1_00,byte param_1)

{
  FUN_009aaa20();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_009aaf80(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be444a;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxToolBarToolBase::vftable;
  local_4 = 6;
  if ((int *)param_1[0x27] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x27] + 4))(1,uVar1);
  }
  if (param_1[3] == 3) {
    (**(code **)(*(int *)param_1[6] + 0x50))();
  }
  _free((void *)param_1[0x25]);
  if (7 < (uint)param_1[0x24]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x1f]);
  }
  param_1[0x24] = 7;
  param_1[0x23] = 0;
  *(undefined2 *)(param_1 + 0x1f) = 0;
  _free((void *)param_1[0x1c]);
  if (7 < (uint)param_1[0x1b]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x16]);
  }
  param_1[0x1b] = 7;
  param_1[0x1a] = 0;
  *(undefined2 *)(param_1 + 0x16) = 0;
  _free((void *)param_1[0x13]);
  if (7 < (uint)param_1[0x12]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xd]);
  }
  param_1[0x12] = 7;
  param_1[0x11] = 0;
  *(undefined2 *)(param_1 + 0xd) = 0;
  local_4._0_1_ = 2;
  FUN_008f7630();
  local_4._0_1_ = 1;
  FUN_008f7630();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00994360(0xfffffffd);
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009ab0d0(int param_1_00,int param_1)

{
  if (param_1_00 + 0x20 != param_1) {
    FUN_0083ea60();
    return;
  }
  return;
}



undefined4 * __fastcall FUN_009ab0f0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4478;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044ced6(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  *param_1 = wxToolBarBase::vftable;
  local_4 = 0;
  param_1[0x65] = wxListBase::vftable;
  FUN_0086ad40(0);
  param_1[0x65] = wxToolBarToolsList::vftable;
  param_1[0x6c] = 0;
  param_1[0x6b] = 0;
  param_1[0x6e] = 0;
  param_1[0x6d] = 0;
  param_1[0x70] = 0;
  param_1[0x6f] = 0;
  param_1[0x71] = 0x10;
  param_1[0x72] = 0xf;
  ExceptionList = local_c;
  return param_1;
}



void FUN_009ab1a0(undefined4 param_1,byte param_2)

{
  uint uVar1;
  undefined **local_6c [11];
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  void *local_28;
  uint local_20;
  uint local_1c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bda698;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032bfdd0,param_1);
  local_20 = (uint)param_2;
  local_4 = 0;
  local_1c = local_20;
  FUN_0091c170(local_6c);
  local_4 = 0xffffffff;
  _free(local_28);
  if (7 < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40);
  }
  local_2c = 7;
  local_30 = 0;
  local_40 = local_40 & 0xffff0000;
  local_6c[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009ab280(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined local_6c [8];
  int local_64;
  uint uStack_44;
  undefined4 uStack_34;
  uint uStack_30;
  void *pvStack_2c;
  undefined4 local_20;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1ca8;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_6c);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032bfdec,param_1);
  local_20 = param_1;
  local_4 = 0;
  local_64 = param_1_00;
  (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_6c,uVar1);
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_2c);
  if (7 < uStack_30) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_44);
  }
  uStack_30 = 7;
  uStack_34 = 0;
  uStack_44 = uStack_44 & 0xffff0000;
  FUN_0083e850();
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009ab360(int *param_1_00,undefined4 param_1)

{
  int *piVar1;
  undefined4 uVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  int iStack_9c;
  undefined **appuStack_98 [2];
  int *piStack_90;
  undefined uStack_3c;
  undefined uStack_3b;
  undefined uStack_3a;
  char cStack_39;
  undefined uStack_38;
  undefined uStack_37;
  char cStack_36;
  undefined2 uStack_30;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be44ab;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&iStack_9c;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff54;
  ExceptionList = &local_c;
  FUN_0091eb60(param_1);
  cVar3 = (**(code **)(*param_1_00 + 0xdc))(uVar4);
  if ((cVar3 != '\0') &&
     ((iVar5 = FUN_0091cdc0(param_1_00), iVar5 == 0 || (iVar5 = FUN_0086af40(iVar5), iVar5 == 0))))
  {
    piVar1 = (int *)param_1_00[0x1c];
    for (iStack_9c = param_1_00[0x68]; iStack_9c != 0; iStack_9c = *(int *)(iStack_9c + 0xc)) {
      if (*(int *)(*(int *)(iStack_9c + 8) + 0xc) != 2) {
        uVar2 = *(undefined4 *)(*(int *)(iStack_9c + 8) + 0x10);
        FUN_0092bd60(DAT_032bff60,uVar2);
        appuStack_98[0] = wxUpdateUIEvent::vftable;
        uStack_1c = 7;
        uStack_20 = 0;
        uStack_30 = 0;
        uStack_18 = 0;
        cStack_36 = '\0';
        uStack_37 = 0;
        uStack_38 = 0;
        cStack_39 = '\0';
        uStack_3a = 0;
        uStack_3b = 0;
        uStack_3c = 0;
        uStack_4 = 0;
        piStack_90 = param_1_00;
        cVar3 = (**(code **)(*piVar1 + 0x18))(appuStack_98);
        if (cVar3 != '\0') {
          if (cStack_39 != '\0') {
            (**(code **)(*param_1_00 + 0x394))
                      (uVar2,CONCAT13(uStack_38,CONCAT12(cStack_39,CONCAT11(uStack_3a,uStack_3b))));
          }
          if (cStack_36 != '\0') {
            (**(code **)(*param_1_00 + 0x398))
                      (uVar2,CONCAT13(cStack_39,CONCAT12(uStack_3a,CONCAT11(uStack_3b,uStack_3c))));
          }
        }
        uStack_4 = 0xffffffff;
        FUN_0091e450();
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_009ab510(undefined4 param_1_00,byte param_1)

{
  FUN_009aaf80();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_009ab530(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3,
            undefined4 *param_4,undefined4 *param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8,undefined4 param_9)

{
  uint uVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be452a;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxToolBarToolBase::vftable;
  param_1_00[4] = 0xfffffffd;
  param_1_00[9] = 0;
  param_1_00[8] = wxBitmap::vftable;
  param_1_00[0xb] = 0;
  param_1_00[10] = wxBitmap::vftable;
  param_1_00[0x12] = 7;
  param_1_00[0x11] = 0;
  local_4._0_1_ = 3;
  local_4._1_3_ = 0;
  *(undefined2 *)(param_1_00 + 0xd) = 0;
  FID_conflict_assign(param_3,0,0xffffffff);
  param_1_00[0x13] = 0;
  param_1_00[0x1b] = 7;
  param_1_00[0x1a] = 0;
  local_4._0_1_ = 4;
  *(undefined2 *)(param_1_00 + 0x16) = 0;
  FID_conflict_assign(param_8,0,0xffffffff);
  param_1_00[0x1c] = 0;
  param_1_00[0x24] = 7;
  param_1_00[0x23] = 0;
  *(undefined2 *)(param_1_00 + 0x1f) = 0;
  local_4._0_1_ = 5;
  FID_conflict_assign(param_9,0,0xffffffff);
  param_1_00[0x25] = 0;
  local_4 = CONCAT31(local_4._1_3_,6);
  iVar2 = param_2;
  if (param_2 == -1) {
    iVar2 = FUN_00993b60(1,uVar1);
  }
  param_1_00[2] = param_1;
  param_1_00[3] = (param_2 == -2) + 1;
  FUN_00994360(iVar2);
  param_1_00[5] = param_6;
  *(undefined *)(param_1_00 + 7) = 0;
  *(undefined *)((int)param_1_00 + 0x1d) = 0;
  *(undefined *)((int)param_1_00 + 0x1e) = 1;
  param_1_00[0x27] = 0;
  param_1_00[6] = param_7;
  if (param_1_00 + 8 != param_4) {
    FUN_0083ea60(param_4);
  }
  if (param_1_00 + 10 != param_5) {
    FUN_0083ea60(param_5);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_009ab6a0(int param_1_00,int param_1)

{
  if (param_1_00 + 0x30 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  return;
}



undefined4 __fastcall FUN_009ab6c0(int *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *unaff_EBX;
  uint unaff_ESI;
  undefined4 uVar3;
  undefined local_78 [8];
  uint uStack_70;
  undefined4 uStack_60;
  uint uStack_5c;
  void *pvStack_58;
  undefined local_54 [8];
  undefined4 uStack_4c;
  uint uStack_38;
  void *pvStack_34;
  undefined local_30 [4];
  void *pvStack_2c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4568;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  FUN_004325b6(PTR_DAT_03236318);
  local_4._0_1_ = 1;
  FUN_004325b6(PTR_DAT_03236318);
  uVar3 = 0xffffffff;
  local_4 = CONCAT31(local_4._1_3_,2);
  uVar2 = (**(code **)(*param_1 + 0x420))
                    (0xfffffffe,local_78,&PTR_vftable_03238cc8,&PTR_vftable_03238cc8,0xffffffff,0,
                     local_54,local_30,uVar1);
  _free(unaff_EBX);
  if (7 < unaff_ESI) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uVar3);
  }
  _free(pvStack_58);
  if (7 < uStack_5c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_70);
  }
  uStack_5c = 7;
  uStack_60 = 0;
  uStack_70 = uStack_70 & 0xffff0000;
  _free(pvStack_34);
  if (7 < uStack_38) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_4c);
  }
  ExceptionList = pvStack_2c;
  return uVar2;
}



undefined4 FUN_009ab810(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  bool bVar4;
  undefined local_78 [4];
  uint local_74;
  undefined4 local_64;
  uint local_60;
  void *local_5c;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be45e6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0xa0);
  local_4 = 0;
  bVar4 = pvVar2 == (void *)0x0;
  if (bVar4) {
    uVar3 = 0;
  }
  else {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 2;
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 3;
    uVar3 = FUN_009ab530(0,0xfffffffe,local_78,&PTR_vftable_03238cc8,&PTR_vftable_03238cc8,0,0,
                         local_54,local_30);
  }
  if (!bVar4) {
    _free(local_5c);
    if (7 < local_60) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_74,uVar1);
    }
    local_60 = 7;
    local_64 = 0;
    local_74 = local_74 & 0xffff0000;
  }
  if (!bVar4) {
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50,uVar1);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
  }
  if (!bVar4) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 __thiscall FUN_009ab9c0(int param_1_00,int param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 0x68) == *(int *)(param_1 + 0x14)) {
    iVar1 = FUN_00850760(param_1);
    if (iVar1 == 0) {
      return 0;
    }
  }
  if (param_1_00 + 0x54 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  return 1;
}



undefined4 __thiscall FUN_009aba00(int param_1_00,int param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 0x8c) == *(int *)(param_1 + 0x14)) {
    iVar1 = FUN_00850760(param_1);
    if (iVar1 == 0) {
      return 0;
    }
  }
  if (param_1_00 + 0x78 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  return 1;
}



int * __thiscall FUN_009aba50(int *param_1_00,undefined4 param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = (int *)FUN_009ab6c0();
  iVar2 = (**(code **)(*param_1_00 + 0x35c))(param_1,piVar1);
  if (iVar2 == 0) {
    if (piVar1 != (int *)0x0) {
      (**(code **)(*piVar1 + 4))(1);
    }
    return (int *)0x0;
  }
  return piVar1;
}



int * __thiscall FUN_009aba90(int *param_1_00,undefined4 param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = (int *)FUN_009ab6c0();
  if (piVar1 != (int *)0x0) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar1[3] != 2)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/tbarbase.h",0x89,
                   "wxToolBarToolBase::MakeStretchable","IsSeparator()",
                   "only separators can be stretchable");
    }
    *(undefined *)(piVar1 + 7) = 1;
  }
  iVar2 = (**(code **)(*param_1_00 + 0x35c))(param_1,piVar1);
  if (iVar2 == 0) {
    if (piVar1 != (int *)0x0) {
      (**(code **)(*piVar1 + 4))(1);
    }
    return (int *)0x0;
  }
  return piVar1;
}



void __thiscall FUN_009abc70(int param_1_00,int param_1)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  undefined **ppuVar4;
  int iVar5;
  undefined auStack_90 [4];
  uint uStack_8c;
  undefined4 uStack_7c;
  uint uStack_78;
  void *pvStack_74;
  undefined **ppuStack_70;
  undefined local_6c [8];
  int local_64;
  uint uStack_44;
  undefined4 uStack_34;
  uint uStack_30;
  void *pvStack_2c;
  int local_20;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4623;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)auStack_90);
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff60;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032bfdf0,*(undefined4 *)(param_1_00 + 0x40));
  piVar1 = *(int **)(param_1_00 + 0x44);
  local_4 = 0;
  local_20 = param_1;
  local_64 = param_1_00;
  if (piVar1 == (int *)0x0) goto LAB_009abdcd;
  ppuVar4 = (undefined **)(**(code **)*piVar1)(uVar3);
  if (ppuVar4 != &PTR_u_wxFrame_03239cfc) {
    if (ppuVar4[3] != (undefined *)0x0) {
      cVar2 = FUN_0048a047(&PTR_u_wxFrame_03239cfc);
      if (cVar2 != '\0') goto LAB_009abd2e;
    }
    if (ppuVar4[4] == (undefined *)0x0) goto LAB_009abdcd;
    cVar2 = FUN_0048a047(&PTR_u_wxFrame_03239cfc);
    if (cVar2 == '\0') goto LAB_009abdcd;
  }
LAB_009abd2e:
  uStack_78 = 7;
  uStack_7c = 0;
  uStack_8c = uStack_8c & 0xffff0000;
  pvStack_74 = (void *)0x0;
  local_4._0_1_ = 1;
  if (param_1 != -1) {
    iVar5 = FUN_009aa7b0(param_1);
    if ((iVar5 != 0) && (auStack_90 != (undefined *)(iVar5 + 0x78))) {
      FID_conflict_assign((undefined *)(iVar5 + 0x78),0,0xffffffff);
    }
  }
  (**(code **)(*piVar1 + 0x3cc))(auStack_90,param_1 != -1);
  local_4 = (uint)local_4._1_3_ << 8;
  _free(pvStack_74);
  if (7 < uStack_78) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_8c);
  }
  uStack_78 = 7;
  uStack_7c = 0;
  uStack_8c = uStack_8c & 0xffff0000;
LAB_009abdcd:
  (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_6c);
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_2c);
  if (7 < uStack_30) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_44);
  }
  uStack_30 = 7;
  uStack_34 = 0;
  uStack_44 = uStack_44 & 0xffff0000;
  ppuStack_70 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_009abe60(void)

{
  return &PTR_u_wxStatusBarGeneric_0323c41c;
}



undefined ** FUN_009abe70(void)

{
  return &PTR_PTR_00d71db4;
}



undefined * FUN_009abe80(void)

{
  return &DAT_032e9668;
}



void __fastcall FUN_009abe90(int param_1)

{
  *(undefined4 *)(param_1 + 0x1b4) = 2;
  *(undefined4 *)(param_1 + 0x1b8) = 2;
  return;
}



void __thiscall FUN_009abeb0(int *param_1,undefined4 param_2)

{
  (**(code **)(*param_1 + 0x380))();
  FUN_00910040(param_2);
  return;
}



void __fastcall FUN_009abed0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be4684;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxStatusBarGeneric::vftable;
  local_4 = 2;
  param_1[0x71] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4._0_1_ = 1;
  param_1[0x6f] = wxObject::vftable;
  FUN_0083e850();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0086aa30();
  local_4 = 0xffffffff;
  FUN_00933450();
  ExceptionList = local_c;
  return;
}



undefined __thiscall
FUN_009abf60(int *param_1_00,undefined4 param_1,undefined4 param_2,uint param_3,undefined4 param_4)

{
  char cVar1;
  int iVar2;
  int iVar3;
  
  cVar1 = FUN_00917f80(param_1,param_2,&DAT_03238d0c,&DAT_03238d04,param_3 | 0x90000,param_4);
  if (cVar1 == '\0') {
    return 0;
  }
  (**(code **)(*param_1_00 + 0xf8))(1);
  (**(code **)(*param_1_00 + 0x380))();
  iVar2 = (**(code **)(*param_1_00 + 0x194))();
  iVar3 = (**(code **)(*param_1_00 + 0x370))();
  (**(code **)(*param_1_00 + 0x288))
            (0xffffffff,0xffffffff,0xffffffff,(iVar2 * 0xb) / 10 + iVar3 * 2,3);
  (**(code **)(*param_1_00 + 0x358))(1,0);
  return 1;
}



void __thiscall FUN_009ac080(int *param_1_00,undefined4 param_1)

{
  undefined4 *puStack_18;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  puStack_18 = &local_10;
  local_10 = 0;
  local_c = 0;
  local_8 = 0;
  local_4 = 0;
  (**(code **)(*param_1_00 + 0x364))(param_1);
  (**(code **)(*param_1_00 + 0x15c))(1,&puStack_18);
  (**(code **)(*param_1_00 + 0x160))();
  return;
}



void __thiscall FUN_009ac0e0(int *param_1_00,int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  uint uStack_20;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be46a8;
  local_c = ExceptionList;
  uStack_20 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_1 == param_1_00[0x66]) {
    FUN_00932970(param_1,param_2);
    (**(code **)(*param_1_00 + 0x27c))(&param_1,param_1_00 + 0x69);
    uVar1 = FUN_00932b10(&uStack_20,uStack_4);
    local_c = (void *)0x0;
    FUN_0086a9a0(uVar1);
    local_c = (void *)0xffffffff;
    FUN_0086aa30();
    ExceptionList = pvStack_14;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\generic\\statusbr.cpp",0xb3,"wxStatusBarGeneric::SetStatusWidths",
                 "(size_t)n == m_panes.GetCount()",L"status bar field count mismatch");
  }
  ExceptionList = local_c;
  return;
}



int __fastcall FUN_009ac1c0(int param_1)

{
  char cVar1;
  undefined4 uVar2;
  int *piVar3;
  
  if ((*(uint *)(param_1 + 0xe0) >> 4 & 1) == 0) {
    return (*(uint *)(param_1 + 0xe0) >> 0xc) << 8;
  }
  uVar2 = FUN_0091cdc0(*(undefined4 *)(param_1 + 0x44),&PTR_u_wxTopLevelWindow_03239ae4);
  piVar3 = (int *)FUN_0048a085(uVar2);
  if (piVar3 != (int *)0x0) {
    cVar1 = (**(code **)(*piVar3 + 0x34c))();
    if ((cVar1 == '\0') && (((uint)piVar3[0x38] >> 6 & 1) != 0)) {
      return 1;
    }
  }
  return 0;
}



void __thiscall FUN_009ac220(int *param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int *piVar5;
  int unaff_EBX;
  int unaff_EBP;
  int iVar6;
  int unaff_ESI;
  int unaff_EDI;
  int unaff_retaddr;
  int iVar7;
  int local_10;
  undefined4 local_c;
  undefined4 local_8;
  int local_4;
  
  piVar5 = &local_10;
  local_10 = 0;
  local_c = 0;
  local_8 = 0;
  local_4 = 0;
  iVar7 = param_2;
  (**(code **)(*param_1_00 + 0x364))(param_2,piVar5);
  if (0 < local_10) {
    piVar3 = (int *)FUN_009cde80(param_2);
    iVar2 = local_4;
    iVar1 = *piVar3;
    if (iVar1 != 1) {
      piVar3 = param_1_00 + 0x6f;
      if (iVar1 != 2) {
        piVar3 = param_1_00 + 0x71;
      }
      (**(code **)(**(int **)(local_4 + 8) + 0x58))(piVar3);
      param_1_00 = (int *)((int)param_1_00 + unaff_EBP);
      iVar6 = local_10 + unaff_EBX;
      (**(code **)(**(int **)(iVar2 + 8) + 0x140))(param_1_00,unaff_EBX,param_1_00,iVar6);
      iVar7 = unaff_ESI + iVar7;
      iVar4 = (int)piVar5 + unaff_EDI;
      (**(code **)(**(int **)(iVar2 + 8) + 0x140))(iVar4,iVar7,unaff_EDI,iVar7);
      piVar5 = param_1_00 + 0x71;
      if (iVar1 != 2) {
        piVar5 = param_1_00 + 0x6f;
      }
      piVar3 = param_1_00;
      (**(code **)(**(int **)(iVar2 + 8) + 0x58))(piVar5);
      (**(code **)(**(int **)(iVar2 + 8) + 0x140))(piVar3,iVar6 + unaff_EBX,piVar3,unaff_EBX);
      (**(code **)(**(int **)(iVar2 + 8) + 0x140))(iVar4,iVar7,unaff_EDI + iVar4,iVar7);
      param_2 = unaff_retaddr;
    }
    (**(code **)(*param_1_00 + 0x378))(iVar2,&stack0xffffffe8,param_2,param_1);
  }
  return;
}



void __thiscall FUN_009ac4a0(int *param_1,int param_2)

{
  int iVar1;
  
  iVar1 = (**(code **)(*param_1 + 0x194))();
  if ((iVar1 * 0xb) / 10 < param_2) {
    (**(code **)(*param_1 + 0x288))(0xffffffff,0xffffffff,0xffffffff,param_2 + param_1[0x6e] * 2,3);
  }
  return;
}



void __thiscall FUN_009ac4f0(int *param_1,int *param_2)

{
  int iVar1;
  int local_8;
  int local_4;
  
  FUN_00915e00(&local_4,&local_8);
  iVar1 = (**(code **)(*param_1 + 100))();
  param_2[1] = 2;
  if (iVar1 == 2) {
    *param_2 = 2;
    param_2[3] = local_8 + -4;
    param_2[2] = local_8 + -2;
    return;
  }
  *param_2 = (local_4 - local_8) + -2;
  param_2[3] = local_8 + -4;
  param_2[2] = local_8 + -2;
  return;
}



void __fastcall FUN_009ac560(int *param_1)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined4 uVar4;
  uint uVar5;
  undefined local_20 [4];
  undefined auStack_1c [12];
  int *piStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be46e8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  FUN_0094be80(param_1);
  uVar5 = 0;
  local_4 = 0;
  piVar3 = (int *)FUN_0091e100(local_20);
  local_4._0_1_ = 1;
  cVar1 = (**(code **)(*piVar3 + 0x10))(uVar2);
  local_4._0_1_ = 0;
  FUN_00921450();
  if (cVar1 != '\0') {
    uVar4 = FUN_0091e100(local_20);
    local_4._0_1_ = 2;
    (**(code **)(*piStack_10 + 0x50))(uVar4);
    local_4._0_1_ = 0;
    FUN_00921450();
  }
  uVar4 = (**(code **)(*piStack_10 + 0x98))();
  (**(code **)(*piStack_10 + 0x70))(0x6a);
  if (param_1[0x66] != 0) {
    do {
      (**(code **)(*param_1 + 0x37c))(auStack_1c,uVar5,uVar4);
      uVar5 = uVar5 + 1;
    } while (uVar5 < (uint)param_1[0x66]);
  }
  puStack_8 = (undefined *)0xffffffff;
  FUN_00457221();
  ExceptionList = piStack_10;
  return;
}



void __fastcall FUN_009ac670(int *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_1c [8];
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc098;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  (**(code **)(*param_1 + 0x27c))(local_1c,param_1 + 0x69,uVar1);
  uVar2 = FUN_00932b10(&stack0xffffffe0,uVar1);
  local_c = (void *)0x0;
  FUN_0086a9a0(uVar2);
  local_c = (void *)0xffffffff;
  FUN_0086aa30();
  ExceptionList = pvStack_14;
  return;
}



undefined4 * __fastcall FUN_009ac700(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4718;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009333f0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxStatusBarGeneric::vftable;
  FUN_0086a600();
  param_1[0x6f] = wxPen::vftable;
  param_1[0x70] = 0;
  param_1[0x71] = wxPen::vftable;
  param_1[0x72] = 0;
  param_1[0x6d] = 2;
  param_1[0x6e] = 2;
  ExceptionList = local_c;
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1cc);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009ac700(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_009ac800(int param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined **local_34 [5];
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4760;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_008ff080(local_34,0x10,DAT_0323f878 ^ (uint)&stack0xffffffb4);
  local_4 = 0;
  iVar2 = FUN_009566f0(uVar1,1,100);
  local_4._0_1_ = 1;
  if (param_1 + 0x1bc != iVar2) {
    FUN_0083ea60(iVar2);
  }
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0083e850();
  local_4 = 0xffffffff;
  local_34[0] = wxObject::vftable;
  FUN_0083e850();
  uVar1 = FUN_008ff080(local_20,0x14);
  local_4 = 2;
  iVar2 = FUN_009566f0(uVar1,1,100);
  local_4._0_1_ = 3;
  if (param_1 + 0x1c4 != iVar2) {
    FUN_0083ea60(iVar2);
  }
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_0083e850();
  local_4 = 0xffffffff;
  local_20[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009ac900(int *param_1_00,int param_1,int *param_2,int param_3,int param_4)

{
  void *pvVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  undefined *puVar5;
  int *piVar6;
  int iVar7;
  bool bVar8;
  int local_74;
  int local_70;
  int local_6c;
  undefined auStack_68 [4];
  undefined4 uStack_64;
  uint uStack_50;
  void *pvStack_4c;
  undefined auStack_44 [8];
  int iStack_3c;
  undefined local_34 [4];
  undefined4 local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4798;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_74;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff7c;
  ExceptionList = &local_c;
  local_74 = param_1;
  FUN_009331e0(local_34,param_3);
  local_4 = 0;
  if (local_20 == 0) {
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
    goto joined_r0x009ac97e;
  }
  local_6c = *param_2 + 2;
  iVar7 = param_2[2] + -4;
  local_70 = (param_2[3] - param_4) / 2 + param_2[1];
  local_70 = FUN_00a49750(uVar3);
  cVar2 = FUN_009ac1c0();
  if ((cVar2 != '\0') &&
     (((iVar4 = (**(code **)(*param_1_00 + 100))(), iVar4 == 2 && (param_3 == 0)) ||
      ((iVar4 = (**(code **)(*param_1_00 + 100))(), iVar4 != 2 && (param_3 == param_1_00[0x66] + -1)
       ))))) {
    FUN_009ac4f0(auStack_44);
    iVar7 = iVar7 - iStack_3c;
  }
  uVar3 = param_1_00[0x38];
  iVar4 = -1;
  if ((uVar3 >> 6 & 1) == 0) {
    if ((uVar3 >> 7 & 1) != 0) {
      iVar4 = 2;
      goto LAB_009aca28;
    }
    if ((uVar3 >> 8 & 1) != 0) {
      iVar4 = 3;
      goto LAB_009aca28;
    }
    if ((uVar3 >> 5 & 1) != 0) {
      piVar6 = (int *)FUN_007b0d6d(auStack_44,local_34);
      FUN_00932dd0(param_3,iVar7 < *piVar6);
    }
    (**(code **)(**(int **)(local_74 + 8) + 0xb4))(*param_2,param_2[1],param_2[2],param_2[3]);
  }
  else {
    iVar4 = 1;
LAB_009aca28:
    puVar5 = (undefined *)FUN_00938460(auStack_68,local_34,local_74,iVar4,iVar7,2);
    local_4._0_1_ = 1;
    if (local_34 != puVar5) {
      FID_conflict_assign(puVar5,0,0xffffffff);
    }
    local_4._0_1_ = 0;
    _free(pvStack_4c);
    if (7 < uStack_50) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_64);
    }
    iVar7 = FUN_009331e0(auStack_68,param_3);
    local_4._0_1_ = 2;
    if (local_20 == *(int *)(iVar7 + 0x14)) {
      iVar7 = FUN_00850760(iVar7);
      bVar8 = iVar7 == 0;
    }
    else {
      bVar8 = false;
    }
    FUN_00932dd0(param_3,!bVar8);
    local_4 = (uint)local_4._1_3_ << 8;
    _free(pvStack_4c);
    if (7 < uStack_50) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_64);
    }
  }
  iVar7 = local_74;
  (**(code **)(**(int **)(local_74 + 8) + 0x168))(local_34,local_6c,local_70);
  if (iVar4 == -1) {
    (**(code **)(**(int **)(iVar7 + 8) + 0xc0))();
  }
  _free(local_18);
  pvVar1 = ExceptionList;
  ExceptionList = local_c;
joined_r0x009ac97e:
  local_c = ExceptionList;
  if (7 < local_1c) {
    ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_009acc00(void)

{
  return &PTR_u_wxToolBar_0323c454;
}



undefined ** FUN_009acc10(void)

{
  return &PTR_PTR_00d71efc;
}



undefined * FUN_009acc20(void)

{
  return &DAT_032e96f8;
}



void __fastcall FUN_009acc30(int param_1)

{
  *(undefined4 *)(param_1 + 0x1cc) = 0;
  *(undefined4 *)(param_1 + 0x1d0) = 0;
  *(undefined4 *)(param_1 + 0x1d4) = 0;
  *(undefined4 *)(param_1 + 0x1d8) = 0;
  *(undefined4 *)(param_1 + 0x1c4) = 0x10;
  *(undefined4 *)(param_1 + 0x1c8) = 0xf;
  *(undefined4 *)(param_1 + 0x1dc) = 0;
  return;
}



void __fastcall FUN_009acc70(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be4818;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxToolBar::vftable;
  local_4 = 0;
  FUN_0091b850(0);
  if ((HGDIOBJ)param_1[0x73] != (HGDIOBJ)0x0) {
    DeleteObject((HGDIOBJ)param_1[0x73]);
  }
  if ((int *)param_1[0x74] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x74] + 4))(1,uVar1);
  }
  local_4 = 0xffffffff;
  FUN_009aaa20();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009acdf0(undefined4 *param_1)

{
  FUN_00a3f66c(*param_1);
  return;
}



undefined4 * __fastcall FUN_009ace00(undefined4 *param_1)

{
  FUN_009ab0f0();
  param_1[0x73] = 0;
  param_1[0x74] = 0;
  param_1[0x75] = 0;
  param_1[0x76] = 0;
  param_1[0x77] = 0;
  *param_1 = wxToolBar::vftable;
  param_1[0x71] = 0x10;
  param_1[0x72] = 0xf;
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1e0);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009ace00(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



uint * __thiscall FUN_009ad040(int param_1_00,uint *param_1)

{
  int iVar1;
  uint uVar2;
  
  iVar1 = FUN_008fc6f0();
  if (0x1d5 < iVar1) {
    uVar2 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x43a,0,0);
    param_1[1] = uVar2 >> 0x10;
    *param_1 = uVar2 & 0xffff;
    return param_1;
  }
  iVar1 = *(int *)(param_1_00 + 0x1c8);
  *param_1 = *(int *)(param_1_00 + 0x1c4) + 8;
  param_1[1] = iVar1 + 7;
  return param_1;
}



undefined4 __fastcall FUN_009ad0a0(undefined4 param_1,int param_2)

{
  int iVar1;
  int in_EAX;
  int iVar2;
  
  iVar1 = *(int *)(in_EAX + 0xc);
  while( true ) {
    if (iVar1 == 0) {
      return 0;
    }
    if (param_2 == 0) break;
    iVar2 = *(int *)(*(int *)(iVar1 + 8) + 0xa0);
    if (iVar2 == 0) {
      iVar2 = 1;
    }
    else {
      iVar2 = iVar2 + 1;
    }
    iVar1 = *(int *)(iVar1 + 0xc);
    param_2 = param_2 - iVar2;
  }
  return *(undefined4 *)(iVar1 + 8);
}



void __fastcall FUN_009ad150(int *param_1)

{
  undefined *unaff_ESI;
  undefined *puVar1;
  undefined local_10 [4];
  undefined auStack_c [4];
  undefined local_8 [8];
  
  (**(code **)(*param_1 + 0x270))();
  SendMessageW((HWND)param_1[0x4f],0x421,0,0);
  puVar1 = auStack_c;
  (**(code **)(*param_1 + 0x270))(&stack0xffffffec);
  if ((puVar1 != local_10) || (local_8 != unaff_ESI)) {
    (**(code **)(*param_1 + 0x288))(puVar1,local_8,0xffffffff,0xffffffff,0);
  }
  FUN_0091b850(0);
  return;
}



void __thiscall FUN_009ad390(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  
  iVar1 = (**(code **)(*param_1_00 + 0x3f4))
                    ((int)(short)param_2,(int)(short)((uint)param_2 >> 0x10));
  if (iVar1 != param_1_00[0x77]) {
    param_1_00[0x77] = iVar1;
    if (iVar1 != 0) {
      (**(code **)(*param_1_00 + 0x400))(*(undefined4 *)(iVar1 + 0x10));
      return;
    }
    (**(code **)(*param_1_00 + 0x400))(0xffffffff);
  }
  return;
}



void __fastcall FUN_009ad3f0(int param_1)

{
  int *piVar1;
  int unaff_ESI;
  char *pcStack_20;
  char *pcStack_1c;
  int *piStack_18;
  undefined local_8 [4];
  int local_4;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0xc) != 3)) {
    piStack_18 = (int *)0xd71c78;
    pcStack_1c = "IsControl()";
    pcStack_20 = "wxToolBarToolBase::GetControl";
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/tbarbase.h",0x72);
  }
  piVar1 = *(int **)(param_1 + 0x18);
  piStack_18 = &local_4;
  pcStack_1c = local_8;
  pcStack_20 = (char *)0x9ad43e;
  (**(code **)(*piVar1 + 0x270))();
  pcStack_20 = (char *)0x0;
  (**(code **)(*piVar1 + 0x288))(unaff_ESI + local_4,0xffffffff,0xffffffff,0xffffffff);
  if (*(int **)(param_1 + 0xa4) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0xa4) + 0x270))(&piStack_18,&pcStack_20);
    (**(code **)(**(int **)(param_1 + 0xa4) + 0x288))
              (pcStack_20 + local_4,0xffffffff,0xffffffff,0xffffffff,0);
  }
  return;
}



void __fastcall FUN_009ad4b0(int param_1)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  void *pvVar4;
  undefined4 uVar5;
  int iStack_1c;
  int iStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be4853;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int **)(param_1 + 0x1d0) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x1d0) + 4))(1,DAT_0323f878 ^ (uint)&stack0xffffffd4);
    *(undefined4 *)(param_1 + 0x1d0) = 0;
  }
  iVar3 = FUN_008fc6f0();
  if ((0x1d5 < iVar3) && (iVar3 = *(int *)(param_1 + 0x1a0), iVar3 != 0)) {
    while( true ) {
      piVar1 = *(int **)(*(int *)(iVar3 + 8) + 0x2c);
      if (piVar1 != (int *)0x0) {
        piVar1[1] = piVar1[1] + 1;
      }
      uStack_4 = 0;
      if ((piVar1 != (int *)0x0) && (cVar2 = (**(code **)(*piVar1 + 4))(), cVar2 != '\0')) break;
      uStack_4 = 0xffffffff;
      FUN_008f7630();
      iVar3 = *(int *)(iVar3 + 0xc);
      if (iVar3 == 0) {
        ExceptionList = local_c;
        return;
      }
    }
    if (piVar1 == (int *)0x0) {
      iStack_1c = 0;
      iStack_18 = 0;
    }
    else {
      iStack_18 = piVar1[3];
      iStack_1c = piVar1[2];
    }
    pvVar4 = operator_new(0xc);
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    if (pvVar4 == (void *)0x0) {
      uVar5 = 0;
    }
    else {
      uVar5 = *(undefined4 *)(param_1 + 0x198);
      iVar3 = FUN_008f25d0(uVar5);
      uVar5 = FUN_0093e480(iStack_1c,iStack_18,iVar3 != 0,uVar5);
    }
    *(undefined4 *)(param_1 + 0x1d0) = uVar5;
    uStack_4 = 0xffffffff;
    FUN_008f7630();
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009ad620(int *param_1_00,uint param_1)

{
  uint uVar1;
  undefined auStack_10 [16];
  
  if (param_1 != param_1_00[0x6d]) {
    uVar1 = (**(code **)(*param_1_00 + 0xe8))();
    SendMessageW((HWND)param_1_00[0x4f],0x427,(~(uVar1 >> 3) & 1) << 0x10 | param_1 & 0xffff,
                 (LPARAM)auStack_10);
    param_1_00[0x6d] = param_1;
    FUN_009ad150();
  }
  return;
}



void __thiscall FUN_009ad680(int *param_1_00,int param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  
  if (*(int *)(param_1 + 0xc) == DAT_032bfe28) {
    if (param_1_00[0x77] != 0) {
      (**(code **)(*param_1_00 + 0x400))(0xffffffff);
      param_1_00[0x77] = 0;
    }
  }
  else if (*(int *)(param_1 + 0xc) == DAT_032bfe18) {
    uVar1 = *(undefined4 *)(param_1 + 0x2c);
    uVar2 = *(undefined4 *)(param_1 + 0x30);
    iVar3 = (**(code **)(*param_1_00 + 0x3f4))(uVar1,uVar2);
    if (iVar3 == 0) {
      uVar4 = 0xffffffff;
    }
    else {
      uVar4 = *(undefined4 *)(iVar3 + 0x10);
    }
    (**(code **)(*param_1_00 + 0x3fc))(uVar4,uVar1,uVar2);
    return;
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



undefined4 __fastcall FUN_009ad700(int param_1)

{
  int iVar1;
  int *piVar2;
  undefined4 uVar3;
  bool bVar4;
  undefined **local_48;
  int local_44;
  undefined4 local_40;
  undefined local_3c;
  undefined local_3b;
  undefined local_3a;
  undefined local_39;
  undefined local_38;
  undefined **local_34 [5];
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4891;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar3 = 0;
  bVar4 = (*(byte *)(param_1 + 0xdc) & 0x10) == 0;
  if (bVar4) {
    iVar1 = FUN_008ff080(local_34,0xf,DAT_0323f878 ^ (uint)&stack0xffffffa8);
  }
  else {
    iVar1 = FUN_0091de40(local_20);
  }
  local_44 = *(int *)(iVar1 + 4);
  if (local_44 != 0) {
    *(int *)(local_44 + 4) = *(int *)(local_44 + 4) + 1;
  }
  local_48 = wxColour::vftable;
  local_40 = *(undefined4 *)(iVar1 + 8);
  local_3c = *(undefined *)(iVar1 + 0xc);
  local_3b = *(undefined *)(iVar1 + 0xd);
  local_3a = *(undefined *)(iVar1 + 0xe);
  local_39 = *(undefined *)(iVar1 + 0xf);
  local_38 = *(undefined *)(iVar1 + 0x10);
  local_4 = 1;
  if (bVar4) {
    local_34[0] = wxObject::vftable;
    FUN_0083e850();
  }
  local_4 = CONCAT31(local_4._1_3_,2);
  if (!bVar4) {
    local_20[0] = wxObject::vftable;
    FUN_0083e850();
  }
  piVar2 = (int *)FUN_008f7980(&local_48,100);
  if (piVar2 != (int *)0x0) {
    uVar3 = (**(code **)(*piVar2 + 0x20))();
  }
  local_4 = 0xffffffff;
  local_48 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return uVar3;
}



undefined4 * __thiscall
FUN_009ad870(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3)

{
  undefined4 uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be452a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxToolBarToolBase::vftable;
  param_1_00[4] = 0xfffffffd;
  param_1_00[9] = 0;
  param_1_00[8] = wxBitmap::vftable;
  param_1_00[0xb] = 0;
  param_1_00[10] = wxBitmap::vftable;
  param_1_00[0x12] = 7;
  param_1_00[0x11] = 0;
  local_4._0_1_ = 3;
  local_4._1_3_ = 0;
  *(undefined2 *)(param_1_00 + 0xd) = 0;
  FID_conflict_assign(param_3,0,0xffffffff);
  param_1_00[0x13] = 0;
  param_1_00[0x1b] = 7;
  param_1_00[0x1a] = 0;
  *(undefined2 *)(param_1_00 + 0x16) = 0;
  param_1_00[0x1c] = 0;
  param_1_00[0x24] = 7;
  param_1_00[0x23] = 0;
  *(undefined2 *)(param_1_00 + 0x1f) = 0;
  param_1_00[0x25] = 0;
  uVar1 = *(undefined4 *)(param_2 + 0x40);
  param_1_00[2] = param_1;
  local_4 = CONCAT31(local_4._1_3_,6);
  param_1_00[3] = 3;
  FUN_00994360(uVar1);
  param_1_00[5] = 4;
  *(undefined *)(param_1_00 + 7) = 0;
  *(undefined *)((int)param_1_00 + 0x1d) = 0;
  *(undefined *)((int)param_1_00 + 0x1e) = 1;
  param_1_00[0x27] = 0;
  param_1_00[6] = param_2;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009ad970(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be48b8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxToolBarTool::vftable;
  local_4 = 0;
  if ((int *)param_1[0x29] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x29] + 4))(1,uVar1);
  }
  local_4 = 0xffffffff;
  FUN_009aaf80();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009ad9e0(undefined4 param_1_00,byte param_1)

{
  FUN_009ad970();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_009ada00(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be490c;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  FUN_009ad870(param_1,param_2,param_3);
  local_4 = 0;
  *param_1_00 = wxToolBarTool::vftable;
  if ((param_1_00[3] == 3) && (param_1_00[0x11] != 0)) {
    pvVar2 = operator_new(0x194);
    local_4._0_1_ = 1;
    if (pvVar2 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      FUN_0043c211("staticText");
      local_4._0_1_ = 2;
      uVar3 = FUN_00483552(param_1_00[2],0xffffffff,param_1_00 + 0xc,&DAT_03238d0c,&DAT_03238d04,
                           0x901,local_30);
    }
    param_1_00[0x29] = uVar3;
    if (pvVar2 != (void *)0x0) {
      FUN_0040159c(uVar1);
    }
  }
  else {
    param_1_00[0x29] = 0;
  }
  param_1_00[0x28] = 1;
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_009adb00(int param_1_00,int param_1)

{
  int iVar1;
  
  if ((*(int *)(param_1 + 0x14) == *(int *)(param_1_00 + 0x44)) &&
     (iVar1 = FUN_00850760(param_1_00 + 0x30), iVar1 == 0)) {
    return;
  }
  if (param_1_00 + 0x30 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  if (*(int *)(param_1_00 + 0xa4) != 0) {
    (**(code **)(**(int **)(param_1_00 + 0xa4) + 0x54))(param_1);
  }
  return;
}



undefined4 * __thiscall
FUN_009adb60(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0xa8);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_009ab530(param_1_00,param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
    *puVar1 = wxToolBarTool::vftable;
    puVar1[0x28] = 0;
    puVar1[0x29] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_009adc20(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xa8);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009ada00(param_1_00,param_1,param_2);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_009adca0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  cVar1 = FUN_00937200(L"ToolbarWindow32",local_30,param_1,param_2);
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x41e,0x14,0);
  iVar3 = FUN_008fc6f0(uVar2);
  if (0x1d6 < iVar3) {
    SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x454,0,1);
  }
  ExceptionList = local_c;
  return 1;
}



void __fastcall FUN_009addb0(int *param_1)

{
  HWND hWnd;
  int iVar1;
  int *piVar2;
  char cVar3;
  HWND unaff_ESI;
  undefined4 ****ppppuVar4;
  undefined4 ****local_1c;
  undefined local_18 [4];
  HWND local_14;
  
  hWnd = (HWND)param_1[0x4f];
  if (hWnd != (HWND)0x0) {
    ppppuVar4 = &local_1c;
    local_14 = hWnd;
    (**(code **)(*param_1 + 0x270))(ppppuVar4,local_18);
    (**(code **)(*param_1 + 0x278))(&stack0xffffffe0,&stack0xffffffdc);
    local_1c = ppppuVar4;
    FUN_00914170();
    cVar3 = FUN_009adca0(local_18,&stack0xffffffe0);
    if (cVar3 == '\0') {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\msw\\toolbar.cpp",0x17e,"wxToolBar::Recreate","Assert failure",
                     L"recreating the toolbar failed");
        return;
      }
    }
    else {
      for (iVar1 = param_1[0x15]; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
        piVar2 = *(int **)(iVar1 + 8);
        cVar3 = (**(code **)(*piVar2 + 0x11c))();
        if (cVar3 == '\0') {
          SetParent((HWND)piVar2[0x4f],(HWND)param_1[0x4f]);
        }
        hWnd = unaff_ESI;
      }
      DestroyWindow(hWnd);
      if ((HGDIOBJ)param_1[0x73] != (HGDIOBJ)0x0) {
        DeleteObject((HGDIOBJ)param_1[0x73]);
        param_1[0x73] = 0;
      }
      if ((int *)param_1[0x74] != (int *)0x0) {
        (**(code **)(*(int *)param_1[0x74] + 4))(1);
        param_1[0x74] = 0;
      }
      (**(code **)(*param_1 + 0x390))();
    }
  }
  return;
}



void __thiscall FUN_009adef0(int *param_1,uint param_2)

{
  uint uVar1;
  
  uVar1 = (**(code **)(*param_1 + 0xe8))();
  FUN_009181c0(param_2);
  if ((param_1[0x66] != 0) && (((uVar1 ^ param_2) & 0x180) != 0)) {
    FUN_009addb0();
  }
  return;
}



undefined4 __thiscall
FUN_009adf30(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  char cVar1;
  
  cVar1 = FUN_00937250(param_1,param_2,param_3,param_4,param_5,&DAT_032c0398,param_6);
  if (cVar1 != '\0') {
    FUN_009aa320();
    cVar1 = FUN_009adca0(param_3,param_4);
    if (cVar1 != '\0') {
      SendMessageW((HWND)param_1_00[0x4f],0x2005,1,0);
      (**(code **)(*param_1_00 + 0x184))(2);
      return 1;
    }
  }
  return 0;
}



void __thiscall FUN_009adfb0(HWND param_1_00,WPARAM param_1)

{
  char cVar1;
  LRESULT LVar2;
  undefined4 *unaff_EDI;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  LVar2 = SendMessageW(param_1_00,0x41d,param_1,(LPARAM)unaff_EDI);
  if (LVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    unaff_EDI[3] = 0;
    unaff_EDI[2] = 0;
    *unaff_EDI = 0;
    unaff_EDI[1] = 0;
  }
  ExceptionList = local_c;
  return;
}



int * __thiscall FUN_009ae0d0(int *param_1_00,int *param_1)

{
  HWND hWnd;
  char cVar1;
  LRESULT LVar2;
  int *piVar3;
  int iVar4;
  undefined4 *puVar5;
  uint uVar6;
  int local_28;
  int iStack_24;
  undefined4 uStack_20;
  int iStack_1c;
  int iStack_18;
  int iStack_14;
  
  hWnd = (HWND)param_1_00[0x4f];
  *param_1 = 0;
  param_1[1] = 0;
  LVar2 = SendMessageW(hWnd,0x453,0,(LPARAM)&local_28);
  if (LVar2 == 0) {
    piVar3 = (int *)(**(code **)(*param_1_00 + 0x3f0))(&uStack_20);
    iVar4 = piVar3[1];
    *param_1 = *piVar3;
    param_1[1] = iVar4;
    iVar4 = GetSystemMetrics(6);
    param_1[1] = param_1[1] + iVar4 * 2;
    *param_1 = param_1_00[0x66] * *param_1;
    cVar1 = FUN_009aaee0();
    if (cVar1 == '\0') goto LAB_009ae1df;
    iVar4 = param_1[1];
    param_1[1] = *param_1;
  }
  else {
    cVar1 = FUN_009aaee0();
    if (cVar1 == '\0') {
      iVar4 = FUN_008fc6f0();
      if (iVar4 < 600) {
        piVar3 = (int *)FUN_009adfb0(0);
        iStack_1c = piVar3[1];
        iStack_18 = piVar3[2];
        iVar4 = *piVar3;
        iStack_14 = piVar3[3];
        puVar5 = (undefined4 *)FUN_009adfb0(param_1_00[0x66] + -1);
        uStack_20 = *puVar5;
        iStack_1c = puVar5[1];
        iStack_14 = puVar5[3];
        if (local_28 < puVar5[2] - iVar4) {
          local_28 = puVar5[2] - iVar4;
        }
      }
    }
    param_1[1] = iStack_24;
    iVar4 = local_28;
  }
  *param_1 = iVar4;
LAB_009ae1df:
  cVar1 = FUN_009aaee0();
  if (cVar1 == '\0') {
    uVar6 = (**(code **)(*param_1_00 + 0xe8))();
    if ((uVar6 & 0x200) == 0) {
      param_1[1] = param_1[1] + 2;
    }
    param_1[1] = param_1[1] + 1;
  }
  iVar4 = param_1[1];
  param_1_00[0x4c] = *param_1;
  param_1_00[0x4d] = iVar4;
  return param_1;
}



// WARNING: Removing unreachable block (ram,0x009ae478)
// WARNING: Removing unreachable block (ram,0x009ae44f)

undefined4 __thiscall FUN_009ae220(int param_1_00,WPARAM param_1,int param_2)

{
  char cVar1;
  LRESULT LVar2;
  int iVar3;
  int iVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be4970;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar3 = *(int *)(param_1_00 + 0x1a0);
  if (iVar3 != 0) {
    do {
      iVar4 = *(int *)(iVar3 + 8);
      if (iVar4 == param_2) {
        iVar3 = *(int *)(iVar3 + 0xc);
        goto LAB_009ae288;
      }
      if (*(int *)(iVar4 + 0xc) == 3) {
        param_1 = *(int *)(iVar4 + 0xa0) + -1 + param_1;
      }
      iVar3 = *(int *)(iVar3 + 0xc);
    } while (iVar3 != 0);
    iVar3 = 0;
  }
LAB_009ae288:
  iVar4 = 1;
  FUN_009adfb0();
  if (*(int *)(param_2 + 0xc) == 3) {
    iVar4 = *(int *)(param_2 + 0xa0);
  }
  *(int *)(param_1_00 + 0x1d4) = *(int *)(param_1_00 + 0x1d4) - iVar4;
  do {
    if (iVar4 == 0) {
      for (; iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {
        if (*(int *)(*(int *)(iVar3 + 8) + 0xc) == 3) {
          FUN_009ad3f0();
        }
      }
      FUN_0091a950();
      ExceptionList = local_c;
      return 1;
    }
    iVar4 = iVar4 + -1;
    LVar2 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x416,param_1,0);
  } while (LVar2 != 0);
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(6);
  if (cVar1 != '\0') {
    FUN_0081c0f1();
    uStack_4 = 0;
    __time64((__time64_t *)0x0);
    GetCurrentThreadId();
    uStack_4._0_1_ = 1;
    GetLastError();
    FUN_00843700();
    GetLastError();
    FUN_00847d90();
    uStack_4 = (uint)uStack_4._1_3_ << 8;
    _free((void *)0x0);
    uStack_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  ExceptionList = local_c;
  return 0;
}



uint FUN_009ae353(void)

{
  uint uVar1;
  undefined *param_6;
  undefined4 param_11;
  char *param_12;
  undefined4 param_13;
  char *param_14;
  undefined *param_15;
  __time64_t param_16;
  DWORD param_18;
  int param_19;
  uint param_20;
  undefined4 param_21;
  uint param_22;
  void *param_23;
  void *in_stack_00000090;
  undefined param_24;
  uint3 uStack00000099;
  undefined auStack_24 [8];
  undefined4 uStack_1c;
  undefined *puStack_18;
  char *pcStack_14;
  undefined4 uStack_10;
  wchar_t *pwStack_c;
  undefined *puStack_8;
  
  param_6 = auStack_24;
  FUN_0043c211(&DAT_00d25fa0);
  uVar1 = FUN_00846b30(6);
  if ((char)uVar1 != '\0') {
    puStack_8 = (undefined *)0x9ae386;
    FUN_0081c0f1();
    _param_24 = 0;
    param_11 = 6;
    param_12 = "..\\..\\src\\msw\\toolbar.cpp";
    param_14 = "wxToolBar::DoDeleteTool";
    param_13 = 0x249;
    param_15 = &DAT_00d25fa0;
    puStack_8 = (undefined *)0x9ae3bd;
    param_16 = __time64((__time64_t *)0x0);
    puStack_8 = (undefined *)0x9ae3ca;
    param_18 = GetCurrentThreadId();
    param_19 = 0;
    param_22 = 7;
    param_21 = 0;
    param_20 = param_20 & 0xffff0000;
    param_23 = (void *)0x0;
    param_24 = 1;
    puStack_8 = (undefined *)0x9ae400;
    puStack_8 = (undefined *)GetLastError();
    pwStack_c = L"쒃倈凨\xe94b僿㡨휡栀ɉ";
    FUN_00843700();
    puStack_8 = (undefined *)0x9ae40f;
    puStack_8 = (undefined *)GetLastError();
    pwStack_c = L"TB_DELETEBUTTON";
    uStack_10 = 0x249;
    pcStack_14 = "..\\..\\src\\msw\\toolbar.cpp";
    puStack_18 = &stack0x0000001c;
    uStack_1c = 0x9ae42d;
    FUN_00847d90();
    _param_24 = (uint)uStack00000099 << 8;
    puStack_8 = (undefined *)0x9ae442;
    _free(param_23);
    if (7 < param_22) {
                    // WARNING: Subroutine does not return
      puStack_8 = &UNK_009ae459;
      FUN_00a3f6a1();
    }
    param_22 = 7;
    param_21 = 0;
    param_20 = param_20 & 0xffff0000;
    if (param_19 != 0) {
      FUN_00841af0();
                    // WARNING: Subroutine does not return
      puStack_8 = &UNK_009ae483;
      FUN_00a3f6a1();
    }
    _param_24 = 0xffffffff;
    uVar1 = FUN_0081b5bc();
  }
  ExceptionList = in_stack_00000090;
  return uVar1 & 0xffffff00;
}



void __fastcall FUN_009ae4b0(int *param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  ushort uVar4;
  char cVar5;
  int iVar6;
  int *piVar7;
  LRESULT LVar8;
  uint uVar9;
  undefined auStack_108 [8];
  undefined4 uStack_100;
  undefined *puStack_fc;
  char *pcStack_f8;
  int local_d0;
  ushort uStack_c4;
  int iStack_bc;
  uint local_b8;
  undefined4 uStack_b4;
  undefined4 uStack_b0;
  undefined4 uStack_ac;
  undefined4 uStack_a8;
  uint uStack_a4;
  undefined4 uStack_a0;
  undefined4 uStack_9c;
  undefined4 uStack_98;
  undefined *puStack_94;
  undefined4 uStack_90;
  char *pcStack_88;
  undefined4 uStack_84;
  char *pcStack_80;
  undefined *puStack_7c;
  __time64_t _Stack_78;
  DWORD DStack_70;
  undefined4 uStack_6c;
  undefined2 uStack_64;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined auStack_40 [24];
  int iStack_28;
  int iStack_20;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be49b3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar6 = FUN_008fc6f0();
  if (0x1d6 < iVar6) {
    iVar6 = param_1[0x68];
    local_b8 = 0;
    if (iVar6 != 0) {
      do {
        if ((*(int *)(*(int *)(iVar6 + 8) + 0xc) == 2) &&
           (*(char *)(*(int *)(iVar6 + 8) + 0x1c) != '\0')) {
          local_b8 = local_b8 + 1;
        }
        iVar6 = *(int *)(iVar6 + 0xc);
      } while (iVar6 != 0);
      if (local_b8 != 0) {
        cVar5 = FUN_009aaee0();
        if (cVar5 == '\0') {
          (**(code **)(*param_1 + 0x27c))();
        }
        else {
          (**(code **)(*param_1 + 0x27c))();
        }
        uVar9 = local_d0 - param_1[0x76];
        if ((int)uVar9 < 1) {
          uStack_c4 = 1;
          local_d0._0_2_ = 1;
        }
        else {
          uStack_c4 = (ushort)(uVar9 / local_b8);
          local_d0._0_2_ = (short)uVar9 - ((short)local_b8 + -1) * uStack_c4;
        }
        iVar6 = param_1[0x68];
        iStack_bc = 0;
        for (; iVar6 != 0; iVar6 = *(int *)(iVar6 + 0xc)) {
          iVar1 = *(int *)(iVar6 + 8);
          if ((*(int *)(iVar1 + 0xc) == 3) && (iStack_bc != 0)) {
            FUN_009ad3f0();
          }
          else if ((*(int *)(iVar1 + 0xc) == 2) && (*(char *)(iVar1 + 0x1c) != '\0')) {
            piVar7 = (int *)FUN_009adfb0();
            iStack_28 = piVar7[1];
            iStack_20 = piVar7[3];
            iVar2 = *piVar7;
            iVar3 = piVar7[2];
            local_b8 = local_b8 - 1;
            uStack_ac = 0;
            uStack_a8 = 0;
            uStack_a0 = 0;
            uStack_9c = 0;
            uStack_98 = 0;
            uStack_b4 = 0x20;
            uStack_b0 = 0x40;
            uVar4 = (ushort)local_d0;
            if (local_b8 != 0) {
              uVar4 = uStack_c4;
            }
            uStack_a4 = (uint)uVar4 << 0x10;
            pcStack_f8 = (char *)0x9ae697;
            LVar8 = SendMessageW((HWND)param_1[0x4f],0x440,*(WPARAM *)(iVar1 + 0x10),
                                 (LPARAM)&uStack_b4);
            if (LVar8 == 0) {
              puStack_94 = auStack_108;
              FUN_0043c211(&DAT_00d25fa0);
              cVar5 = FUN_00846b30(6);
              if (cVar5 != '\0') {
                FUN_0081c0f1();
                uStack_4 = 0;
                uStack_90 = 6;
                pcStack_88 = "..\\..\\src\\msw\\toolbar.cpp";
                pcStack_80 = "wxToolBar::UpdateStretchableSpacersSize";
                uStack_84 = 0x4e4;
                puStack_7c = &DAT_00d25fa0;
                _Stack_78 = __time64((__time64_t *)0x0);
                DStack_70 = GetCurrentThreadId();
                uStack_6c = 0;
                uStack_50 = 7;
                uStack_54 = 0;
                uStack_64 = 0;
                uStack_4c = 0;
                uStack_4._0_1_ = 1;
                GetLastError();
                FUN_00843700();
                GetLastError();
                pcStack_f8 = "..\\..\\src\\msw\\toolbar.cpp";
                puStack_fc = auStack_40;
                uStack_100 = 0x9ae77f;
                FUN_00847d90();
                uStack_4 = (uint)uStack_4._1_3_ << 8;
                FUN_00842440();
                uStack_4 = 0xffffffff;
                FUN_0081b5bc();
              }
            }
            else {
              iStack_bc = iStack_bc + ((uStack_a4 >> 0x10) - iVar3) + iVar2;
            }
          }
        }
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009ae7f0(int *param_1_00,undefined4 param_1,int *param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  LRESULT LVar6;
  int iVar7;
  undefined4 auStack_8c [8];
  undefined local_6c [92];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be49e8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_8c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff64;
  ExceptionList = &local_c;
  iVar3 = param_2[2];
  if (iVar3 == -0x2c6) {
    FUN_0092bd60(DAT_032bfdfc,param_2[3]);
    local_4 = 0;
    cVar1 = FUN_0091c170(local_6c);
    if (cVar1 == '\0') {
      iVar3 = FUN_009aa7b0(param_2[3]);
      if (iVar3 == 0) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\msw\\toolbar.cpp",0x54b,"wxToolBar::MSWOnNotify",&DAT_00d7158c,
                       L"drop down message for unknown tool",uVar2);
        }
      }
      else {
        iVar3 = *(int *)(iVar3 + 0x9c);
        if (iVar3 != 0) {
          uVar4 = (**(code **)(*param_1_00 + 0x3a8))(param_2[3]);
          puVar5 = (undefined4 *)FUN_009adfb0(uVar4);
          auStack_8c[0] = puVar5[1];
          if (puVar5[2] != 0) {
            FUN_0091ca70(iVar3,*puVar5,puVar5[3]);
          }
          puStack_8 = (undefined *)0xffffffff;
          FUN_00454a4e();
          goto LAB_009ae92a;
        }
      }
    }
    local_4 = 0xffffffff;
    FUN_00454a4e();
  }
  else if (((((uint)param_1_00[0x38] >> 0xc & 1) == 0) &&
           (((iVar3 == -0x208 || (iVar3 == -0x212)) &&
            (LVar6 = SendMessageW((HWND)param_1_00[0x4f],0x423,0,0), LVar6 == *param_2)))) &&
          (iVar7 = FUN_009aa7b0(param_2[1]), iVar7 != 0)) {
    FUN_00914c50(iVar3,param_2,iVar7 + 0x54);
  }
LAB_009ae92a:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_009ae9b0(int *param_1_00,undefined4 param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  char cVar5;
  int *piVar6;
  uint uVar7;
  uint uVar8;
  
  if (param_1_00[0x66] == 0) {
    return 0;
  }
  piVar6 = (int *)FUN_009adfb0(0);
  iVar1 = piVar6[2];
  iVar2 = piVar6[1];
  iVar3 = *piVar6;
  iVar4 = piVar6[3];
  if (iVar1 == 0) {
    return 0;
  }
  cVar5 = FUN_009aaee0();
  if (cVar5 == '\0') {
    uVar7 = iVar4 - iVar2;
    uVar8 = param_2 & 0xffff;
    if (((uint)param_1_00[0x38] >> 5 & 1) != 0) {
      uVar7 = uVar7 - 3;
    }
    if (param_1_00[0x6d] != 0) {
      uVar7 = (uVar7 + ((byte)~(byte)((uint)param_1_00[0x38] >> 9) & 1 | 2) * 2) * param_1_00[0x6d];
    }
  }
  else {
    uVar8 = iVar1 - iVar3;
    if (param_1_00[0x6d] != 0) {
      uVar8 = uVar8 * ((uint)(param_1_00[0x75] + -1 + param_1_00[0x6d]) / (uint)param_1_00[0x6d]);
    }
    uVar7 = param_2 >> 0x10;
  }
  if ((uVar7 << 0x10 | uVar8 & 0xffff) != param_2) {
    (**(code **)(*param_1_00 + 0x288))(0xffffffff,0xffffffff,uVar8,uVar7,0);
  }
  FUN_009ae4b0();
  return 1;
}



undefined4 __fastcall FUN_009aeab0(int *param_1)

{
  int iVar1;
  int iVar2;
  HWND pHVar3;
  HWND hWnd;
  char cVar4;
  int *piVar5;
  HRGN pHVar6;
  BOOL BVar7;
  HDC hdc;
  HBRUSH hbr;
  int iVar8;
  int iVar9;
  int iVar10;
  int *local_cc;
  int local_c4;
  int *local_c0;
  tagRECT local_ac [3];
  int local_70;
  int local_6c;
  undefined4 uStack_68;
  char *pcStack_60;
  undefined4 uStack_5c;
  char *pcStack_58;
  undefined *puStack_54;
  __time64_t _Stack_50;
  DWORD DStack_48;
  undefined4 uStack_44;
  undefined2 uStack_3c;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00be4a49;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  FUN_009931f0();
  local_c = 0;
  FUN_007b0d3e();
  iVar1 = param_1[0x68];
  local_cc = (int *)0x0;
  for (; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    iVar2 = *(int *)(iVar1 + 8);
    if ((*(int *)(iVar2 + 0xc) == 3) ||
       ((*(int *)(iVar2 + 0xc) == 2 && (*(char *)(iVar2 + 0x1c) != '\0')))) {
      for (iVar2 = *(int *)(iVar2 + 0xa0); iVar2 != 0; iVar2 = iVar2 + -1) {
        piVar5 = (int *)FUN_009adfb0();
        local_ac[0].bottom = *piVar5;
        iVar8 = piVar5[1];
        iVar10 = piVar5[2];
        iVar9 = piVar5[3];
        cVar4 = FUN_009aaee0();
        if (cVar4 == '\0') {
          iVar8 = 0;
          local_ac[0].top = local_ac[0].bottom;
          iVar9 = local_6c;
        }
        else {
          local_ac[0].top = 0;
          iVar10 = local_70;
        }
        local_ac[0].top = iVar10 - local_ac[0].top;
        local_ac[0].right = iVar9 - iVar8;
        local_ac[0].left = iVar8;
        (**(code **)(local_c4 + 0x48))();
        local_cc = (int *)((int)local_cc + 1);
      }
    }
    else {
      local_cc = (int *)((int)local_cc + 1);
    }
  }
  if ((local_c0 != (int *)0x0) && (cVar4 = (**(code **)(*local_c0 + 4))(), cVar4 != '\0')) {
    pHVar3 = (HWND)param_1[0x4f];
    pHVar6 = (HRGN)FUN_00992eb0();
    BVar7 = ValidateRgn(pHVar3,pHVar6);
    if (BVar7 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar4 = FUN_00846b30(6);
      if (cVar4 != '\0') {
        FUN_0081c0f1();
        local_c._0_1_ = 1;
        uStack_68 = 6;
        pcStack_60 = "..\\..\\src\\msw\\toolbar.cpp";
        pcStack_58 = "wxToolBar::HandlePaint";
        uStack_5c = 0x6db;
        puStack_54 = &DAT_00d25fa0;
        _Stack_50 = __time64((__time64_t *)0x0);
        DStack_48 = GetCurrentThreadId();
        uStack_44 = 0;
        uStack_28 = 7;
        uStack_2c = 0;
        uStack_3c = 0;
        uStack_24 = 0;
        local_c._0_1_ = 2;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_c._0_1_ = 1;
        FUN_00842440();
        local_c = (uint)local_c._1_3_ << 8;
        FUN_0081b5bc();
      }
    }
  }
  cVar4 = FUN_009100d0();
  if (cVar4 == '\0') {
    FUN_00913670();
  }
  (**(code **)(*param_1 + 0x2fc))();
  if (cVar4 == '\0') {
    FUN_00913670();
  }
  if ((local_cc != (int *)0x0) && (cVar4 = (**(code **)(*local_cc + 4))(), cVar4 != '\0')) {
    pHVar3 = (HWND)param_1[0x4f];
    hdc = GetDC(pHVar3);
    uStack_18 = CONCAT31(uStack_18._1_3_,3);
    pHVar6 = (HRGN)FUN_00992eb0();
    SelectClipRgn(hdc,pHVar6);
    hWnd = (HWND)param_1[0x4f];
    hbr = (HBRUSH)FUN_009ad700();
    GetClientRect(hWnd,local_ac);
    FillRect(hdc,local_ac,hbr);
    ReleaseDC(pHVar3,hdc);
  }
  uStack_18 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_20;
  return 1;
}



undefined4 __thiscall FUN_009aee20(int param_1_00,HDC param_1)

{
  HWND hWnd;
  char cVar1;
  BOOL BVar2;
  undefined4 uVar3;
  HBRUSH hbr;
  tagPOINT local_88;
  tagRECT local_80 [7];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4a80;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = SetWindowOrgEx(param_1,0,0,&local_88);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4 = 0;
      FUN_008423d0();
      local_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    uVar3 = 0;
  }
  else {
    hWnd = *(HWND *)(param_1_00 + 0x13c);
    hbr = (HBRUSH)FUN_009ad700();
    GetClientRect(hWnd,local_80);
    FillRect(param_1,local_80,hbr);
    SetWindowOrgEx(param_1,local_88.x,local_88.y,(LPPOINT)0x0);
    uVar3 = 1;
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 __thiscall
FUN_009aef90(int *param_1_00,int param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 uVar2;
  
  if (param_1 == 5) {
    cVar1 = FUN_009ae9b0(param_2,param_3);
    if (cVar1 != '\0') {
      return 0;
    }
  }
  else if (param_1 == 0xf) {
    cVar1 = (**(code **)(*param_1_00 + 0x16c))();
    if (cVar1 == '\0') {
      cVar1 = FUN_009aeab0(param_2,param_3);
      if (cVar1 != '\0') {
        return 0;
      }
    }
  }
  else if (param_1 == 0x200) {
    FUN_009ad390(param_2,param_3);
  }
  uVar2 = FUN_0090d970(param_1,param_2,param_3);
  return uVar2;
}



HGDIOBJ FUN_009af010(HGDIOBJ param_1,int param_2,int param_3)

{
  COLORREF color;
  char cVar1;
  HDC hdc;
  HGDIOBJ h;
  int iVar2;
  COLORREF CVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  int y;
  uint uVar7;
  int iStack_84;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be4ae0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  hdc = CreateCompatibleDC((HDC)0x0);
  uStack_4 = 0;
  if (hdc == (HDC)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4._0_1_ = 1;
      FUN_008423d0();
      uStack_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4._0_1_ = 1;
      FUN_00842440();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_0081b5bc();
    }
    DeleteDC((HDC)0x0);
  }
  else {
    h = SelectObject(hdc,param_1);
    uStack_4._0_1_ = 3;
    if (h == (HGDIOBJ)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4._0_1_ = 4;
        FUN_008423d0();
        uStack_4._0_1_ = 5;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4._0_1_ = 4;
        FUN_00842440();
        uStack_4._0_1_ = 3;
        FUN_0081b5bc();
      }
      h = (HGDIOBJ)0x0;
    }
    else {
      iVar2 = FUN_009142f0();
      iStack_84 = 0;
      if (0 < param_2) {
        do {
          y = 0;
          if (0 < param_3) {
            do {
              CVar3 = GetPixel(hdc,iStack_84,y);
              uVar7 = 0;
              do {
                uVar5 = *(uint *)(iVar2 + uVar7 * 8);
                uVar4 = (CVar3 & 0xff) - (uVar5 & 0xff);
                uVar6 = (int)uVar4 >> 0x1f;
                if ((((int)((uVar4 ^ uVar6) - uVar6) < 10) &&
                    (uVar4 = (CVar3 >> 8 & 0xff) - (uVar5 >> 8 & 0xff), uVar6 = (int)uVar4 >> 0x1f,
                    (int)((uVar4 ^ uVar6) - uVar6) < 10)) &&
                   (uVar5 = (CVar3 >> 0x10 & 0xff) - (uVar5 >> 0x10 & 0xff),
                   uVar4 = (int)uVar5 >> 0x1f, (int)((uVar5 ^ uVar4) - uVar4) < 10)) {
                  color = *(COLORREF *)(iVar2 + 4 + uVar7 * 8);
                  if (color != CVar3) {
                    SetPixel(hdc,iStack_84,y,color);
                  }
                  break;
                }
                uVar7 = uVar7 + 1;
              } while (uVar7 < 4);
              y = y + 1;
            } while (y < param_3);
          }
          iStack_84 = iStack_84 + 1;
        } while (iStack_84 < param_2);
      }
    }
    SelectObject(hdc,h);
    DeleteDC(hdc);
  }
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_009af330(int *param_1)

{
  undefined *puVar1;
  undefined uVar2;
  undefined *puVar3;
  char cVar4;
  LRESULT LVar5;
  int iVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  int iVar10;
  HGDIOBJ ho;
  int iVar11;
  DWORD DVar12;
  undefined *puVar13;
  int *unaff_EBX;
  int unaff_ESI;
  code *pcVar14;
  undefined4 *puVar15;
  undefined4 uStack_1e8;
  undefined *puStack_1e4;
  undefined4 uStack_1e0;
  void **ppvStack_1dc;
  char *pcStack_1d8;
  uint local_1ac;
  int *piStack_1a8;
  undefined4 *local_1a4;
  int iStack_1a0;
  undefined4 *local_19c;
  undefined4 uStack_198;
  int *piStack_194;
  int *local_190;
  undefined **local_18c;
  int iStack_188;
  int iStack_184;
  int iStack_180;
  undefined4 *puStack_17c;
  int iStack_178;
  undefined4 *puStack_174;
  WPARAM WStack_170;
  int iStack_16c;
  undefined **ppuStack_168;
  int *piStack_164;
  int iStack_160;
  undefined **local_15c;
  int *local_158;
  int *piStack_154;
  int iStack_150;
  uint local_144;
  void *local_140;
  char *pcStack_138;
  undefined4 uStack_134;
  char *pcStack_130;
  undefined *puStack_12c;
  __time64_t _Stack_128;
  undefined8 uStack_120;
  DWORD DStack_118;
  uint uStack_114;
  undefined4 uStack_10c;
  undefined4 uStack_104;
  uint uStack_100;
  void *pvStack_fc;
  uint uStack_f8;
  void *pvStack_f4;
  undefined **ppuStack_e8;
  undefined **ppuStack_e0;
  undefined4 uStack_dc;
  undefined **ppuStack_d8;
  int iStack_d4;
  undefined4 uStack_d0;
  undefined4 uStack_cc;
  uint local_c4;
  undefined2 uStack_be;
  undefined4 local_b4;
  uint local_b0;
  void *local_ac [7];
  undefined4 uStack_90;
  char *pcStack_88;
  undefined4 uStack_84;
  char *pcStack_80;
  undefined *puStack_7c;
  __time64_t _Stack_78;
  DWORD DStack_70;
  undefined4 uStack_6c;
  undefined2 uStack_64;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined4 uStack_38;
  undefined **ppuStack_34;
  undefined4 uStack_30;
  undefined *puStack_2c;
  undefined4 uStack_28;
  int iStack_24;
  WPARAM WStack_20;
  uint local_1c;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  uStack_10 = &LAB_00be4c10;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)&local_1ac;
  ExceptionList = &local_14;
  local_1ac = 0;
  local_190 = param_1;
  cVar4 = FUN_009aaa00();
  if (cVar4 == '\0') goto LAB_009b0753;
  local_19c = (undefined4 *)param_1[0x66];
  FUN_004325b6();
  local_c = 0;
  cVar4 = FUN_008970b0();
  if (cVar4 == '\0') {
    iVar6 = FUN_0095de30();
    local_1a4 = (undefined4 *)((uint)(iVar6 < 9) * 2 + -1);
  }
  else {
    FUN_004325b6();
    local_c = CONCAT31(local_c._1_3_,1);
    local_1ac = 1;
    local_1a4 = (undefined4 *)FUN_00897050();
  }
  if ((local_1ac & 1) != 0) {
    _free(local_ac[0]);
    if (7 < local_b0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_b0 = 7;
    local_b4 = 0;
    local_c4 = local_c4 & 0xffff0000;
  }
  local_c = 0xffffffff;
  _free(local_140);
  if (7 < local_144) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_1ac = 0;
  if (param_1[0x75] != 0) {
    do {
      LVar5 = SendMessageW((HWND)param_1[0x4f],0x416,0,0);
      if (LVar5 == 0) {
        puStack_17c = &uStack_1e0;
        puStack_1e4 = &DAT_00d25fa0;
        uStack_1e8 = 0x9af4c3;
        FUN_0043c211();
        puStack_1e4 = (undefined *)0x6;
        uStack_1e8 = 0x9af4ca;
        cVar4 = FUN_00846b30();
        if (cVar4 != '\0') {
          FUN_0081c0f1();
          local_c = 2;
          uStack_90 = 6;
          pcStack_88 = "..\\..\\src\\msw\\toolbar.cpp";
          pcStack_80 = "wxToolBar::Realize";
          uStack_84 = 0x2a1;
          puStack_7c = &DAT_00d25fa0;
          _Stack_78 = __time64((__time64_t *)0x0);
          DStack_70 = GetCurrentThreadId();
          uStack_6c = 0;
          uStack_50 = 7;
          uStack_54 = 0;
          uStack_64 = 0;
          uStack_4c = 0;
          local_c._0_1_ = 3;
          FUN_008854f0();
          FUN_0083fe90();
          local_c = CONCAT31(local_c._1_3_,2);
          FUN_00842440();
          local_c = 0xffffffff;
          FUN_0081b5bc();
        }
      }
      local_1ac = local_1ac + 1;
    } while (local_1ac < (uint)param_1[0x75]);
  }
  local_18c = (undefined **)0x0;
  if (((uint)param_1[0x38] >> 7 & 1) == 0) {
    iStack_160 = param_1[0x71] * (int)local_19c;
    puStack_17c = (undefined4 *)param_1[0x73];
    puStack_174 = (undefined4 *)param_1[0x72];
    FUN_0094bd80();
    local_c = 4;
    FUN_008f53f0();
    local_c._0_1_ = 5;
    FUN_0094c840();
    if (local_1a4 != (undefined4 *)0x2) {
      FUN_0091de40();
      local_c._0_1_ = 6;
      FUN_0095d7e0();
      local_c._0_1_ = 7;
      (**(code **)(*piStack_154 + 0x68))();
      uStack_10._0_1_ = 6;
      FUN_008f7630();
      uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,5);
      ppuStack_34 = wxObject::vftable;
      FUN_0083e850();
      (**(code **)(*local_158 + 0xb0))();
    }
    iVar6 = iStack_180;
    if (iStack_180 != 0) {
      iVar6 = *(int *)(iStack_180 + 0x14);
    }
    param_1[0x73] = iVar6;
    iStack_178 = iVar6;
    if (local_1a4 == (undefined4 *)0x0) {
      FUN_0094c840();
      iVar6 = FUN_009af010();
      iStack_178 = iVar6;
      FUN_0094c840();
    }
    local_1ac = 0;
    WStack_170 = 0;
    FUN_009ad4b0();
    piStack_194 = (int *)param_1[0x68];
    if (piStack_194 != (int *)0x0) {
      do {
        iVar6 = piStack_194[2];
        iStack_188 = iVar6;
        if (*(int *)(iVar6 + 0xc) == 1) {
          iVar10 = *(int *)(iVar6 + 0x24);
          if (iVar10 == 0) {
            piStack_1a8 = (int *)0x0;
            iStack_1a0 = 0;
          }
          else {
            piStack_1a8 = *(int **)(iVar10 + 8);
            iStack_1a0 = *(int *)(iVar10 + 0xc);
          }
          cVar4 = (**(code **)(*(int *)(iVar6 + 0x20) + 0x10))();
          if (cVar4 == '\0') {
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              FUN_00840480();
            }
          }
          else {
            (**(code **)(*piStack_154 + 0x164))();
            iVar6 = iStack_188;
          }
          if (param_1[0x74] != 0) {
            piStack_164 = *(int **)(iVar6 + 0x2c);
            if (piStack_164 != (int *)0x0) {
              piStack_164[1] = piStack_164[1] + 1;
            }
            ppuStack_168 = wxBitmap::vftable;
            local_c._0_1_ = 8;
            if ((piStack_164 == (int *)0x0) ||
               (cVar4 = (**(code **)(*piStack_164 + 4))(), cVar4 == '\0')) {
              FUN_008f3b70();
              local_c._0_1_ = 9;
              FUN_00903890();
              local_c = CONCAT31(local_c._1_3_,0xb);
              ppuStack_d8 = wxObject::vftable;
              FUN_0083e850();
              if ((local_1a4 == (undefined4 *)0x1) && (iStack_188 = 0, 0 < iStack_1a0)) {
                do {
                  iStack_16c = 0;
                  iVar6 = iStack_188;
                  if (0 < (int)piStack_1a8) {
                    do {
                      iVar10 = iStack_16c;
                      cVar4 = FUN_00900730();
                      if (cVar4 != '\0') {
                        piVar7 = (int *)FUN_008f7e50();
                        piVar8 = (int *)FUN_008f7e50();
                        piVar9 = (int *)FUN_008f7e50();
                        (**(code **)(*piVar7 + 0x18))();
                        (**(code **)(*piVar8 + 0x14))();
                        (**(code **)(*piVar9 + 0x10))();
                        FUN_00900230();
                        param_1 = local_190;
                        iVar10 = iStack_16c;
                        iVar6 = iStack_188;
                      }
                      iStack_16c = iVar10 + 1;
                    } while (iStack_16c < (int)piStack_1a8);
                  }
                  iStack_188 = iVar6 + 1;
                } while (iStack_188 < iStack_1a0);
              }
              uStack_dc = 0;
              local_c._0_1_ = 0xc;
              ppuStack_e0 = wxBitmap::vftable;
              FUN_008f4d60();
              local_c._0_1_ = 0xd;
              FUN_0083ea60();
              local_c._0_1_ = 0xb;
              FUN_008f7630();
              local_c._0_1_ = 8;
              ppuStack_e8 = wxObject::vftable;
              FUN_0083e850();
            }
            if (local_1a4 == (undefined4 *)0x1) {
              FUN_009af010();
            }
            FUN_009b6f70();
            local_c._0_1_ = 5;
            FUN_008f7630();
          }
          local_1ac = local_1ac + param_1[0x71];
          WStack_170 = WStack_170 + 1;
        }
        piStack_194 = (int *)piStack_194[3];
      } while (piStack_194 != (int *)0x0);
      piStack_194 = (int *)0x0;
      iVar6 = iStack_178;
    }
    FUN_0094c840();
    FUN_0083eaa0();
    *(undefined4 *)(iStack_180 + 0x14) = 0;
    if (local_1a4 == (undefined4 *)0x1) {
      iVar6 = FUN_009af010();
    }
    puVar1 = (undefined *)puStack_17c;
    if (puStack_17c == (undefined4 *)0x0) {
LAB_009afb1a:
      pcVar14 = SendMessageW_exref;
      ppuStack_d8 = (undefined **)0x0;
      iStack_d4 = iVar6;
      LVar5 = SendMessageW((HWND)param_1[0x4f],0x413,WStack_170,(LPARAM)&ppuStack_d8);
      if ((LVar5 == -1) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
        FUN_00840480();
      }
    }
    else {
      iVar10 = FUN_008fc6f0();
      pcVar14 = SendMessageW_exref;
      if (iVar10 < 400) {
        local_18c = (undefined **)param_1[0x75];
        goto LAB_009afb1a;
      }
      WStack_20 = WStack_170;
      uStack_30 = 0;
      uStack_28 = 0;
      puStack_2c = puVar1;
      iStack_24 = iVar6;
      LVar5 = SendMessageW((HWND)param_1[0x4f],0x42e,0,(LPARAM)&uStack_30);
      if ((LVar5 == 0) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
        FUN_00840480();
      }
      DeleteObject(puVar1);
    }
    iVar6 = FUN_008fc6f0();
    if ((0x1d5 < iVar6) && (ho = (HGDIOBJ)(*pcVar14)(), ho != (HGDIOBJ)0x0)) {
      DeleteObject(ho);
    }
    local_c = CONCAT31(local_c._1_3_,4);
    FUN_008f7630();
    local_15c = wxDC::vftable;
    local_c = 0xe;
    if (piStack_154 != (int *)0x0) {
      (**(code **)(*piStack_154 + 4))();
    }
    local_c = 0xffffffff;
    local_15c = wxObject::vftable;
    FUN_0083e850();
  }
  iVar6 = FUN_00823c23();
  local_c = 0xf;
  iStack_178 = iVar6;
  FUN_0086a600();
  piStack_194 = (int *)param_1[0x68];
  local_c._0_1_ = 0x10;
  uStack_198 = uStack_198 & 0xffffff;
  local_1ac = 0;
  if (piStack_194 != (int *)0x0) {
    puVar15 = (undefined4 *)(iVar6 + 8);
    do {
      piVar7 = *(int **)((int)piStack_194 + 8);
      cVar4 = FUN_009aaee0();
      if (((cVar4 == '\0') || (piVar7[3] != 2)) || (iVar6 = FUN_008fc6f0(), 0x1d8 < iVar6)) {
        puVar15[-2] = 0;
        puVar15[-1] = 0;
        *puVar15 = 0;
        puVar15[1] = 0;
        puVar15[2] = 0;
        uStack_198._0_3_ = (uint3)(ushort)uStack_198;
        iVar6 = piVar7[3];
        if (iVar6 == 1) {
          if (((uint)param_1[0x38] >> 7 & 1) == 0) {
            puVar15[-2] = local_18c;
          }
          if ((((uint)param_1[0x38] >> 8 & 1) != 0) && (piVar7[0x11] != 0)) {
            if ((uint)piVar7[0x12] < 8) {
              piVar8 = piVar7 + 0xd;
            }
            else {
              piVar8 = (int *)piVar7[0xd];
            }
            puVar15[2] = piVar8;
          }
          puVar15[-1] = piVar7[4];
          if (*(char *)((int)piVar7 + 0x1e) != '\0') {
            *(byte *)puVar15 = *(byte *)puVar15 | 4;
          }
          if (*(char *)((int)piVar7 + 0x1d) != '\0') {
            *(byte *)puVar15 = *(byte *)puVar15 | 1;
          }
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar7[3] != 1)) {
            FUN_00840480();
          }
          switch(piVar7[5]) {
          case 1:
            *(undefined *)((int)puVar15 + 1) = 2;
            break;
          case 2:
            *(undefined *)((int)puVar15 + 1) = 6;
            if (uStack_198._3_1_ == '\0') {
              *(byte *)puVar15 = *(byte *)puVar15 | 1;
              cVar4 = (**(code **)(*piVar7 + 0x14))();
              if (cVar4 != '\0') {
                (**(code **)(*local_190 + 0x414))();
                uStack_198._0_3_ = CONCAT12(1,(ushort)uStack_198);
                uStack_198 = (uint)(uint3)uStack_198;
                break;
              }
            }
            else if ((*(char *)((int)piVar7 + 0x1d) != '\0') &&
                    (iVar6 = *(int *)((int)piStack_194 + 0x10), iVar6 != 0)) {
              local_19c = puVar15 + -5;
              do {
                piVar7 = *(int **)(iVar6 + 8);
                if ((piVar7[3] != 1) || (piVar7[5] != 2)) break;
                cVar4 = (**(code **)(*piVar7 + 0x14))();
                if (cVar4 != '\0') {
                  (**(code **)(*local_190 + 0x414))();
                }
                *(byte *)local_19c = *(byte *)local_19c & 0xfe;
                iVar6 = *(int *)(iVar6 + 0x10);
                local_19c = local_19c + -5;
              } while (iVar6 != 0);
            }
            uStack_198._0_3_ = CONCAT12(1,(ushort)uStack_198);
            uStack_198 = (uint)(uint3)uStack_198;
            break;
          case 3:
            *(undefined *)((int)puVar15 + 1) = 8;
            break;
          default:
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              FUN_00840480();
            }
          case 0:
            *(undefined *)((int)puVar15 + 1) = 0;
          }
          local_18c = (undefined **)((int)local_18c + 1);
          param_1 = local_190;
        }
        else if (iVar6 - 2U < 2) {
          if ((iVar6 == 2) && (*(char *)(piVar7 + 7) != '\0')) {
            if (piVar7[4] == -2) {
              FUN_00993b60();
              FUN_00994360();
            }
            piVar7[0x28] = 1;
            param_1 = local_190;
          }
          puVar15[-1] = piVar7[4];
          *(undefined *)puVar15 = 4;
          *(undefined *)((int)puVar15 + 1) = 1;
        }
        uVar2 = uStack_198._2_1_;
        local_1ac = local_1ac + 1;
        uStack_198 = CONCAT13(uVar2,(uint3)uStack_198);
        puVar15 = puVar15 + 5;
      }
      piStack_194 = *(int **)((int)piStack_194 + 0xc);
    } while (piStack_194 != (int *)0x0);
    piStack_194 = (int *)0x0;
    iVar6 = iStack_178;
  }
  LVar5 = SendMessageW((HWND)param_1[0x4f],0x444,local_1ac,iVar6);
  if (LVar5 == 0) {
    puStack_17c = &uStack_1e0;
    puStack_1e4 = &DAT_00d25fa0;
    uStack_1e8 = 0x9afed8;
    FUN_0043c211();
    puStack_1e4 = (undefined *)0x6;
    uStack_1e8 = 0x9afedf;
    cVar4 = FUN_00846b30();
    if (cVar4 != '\0') {
      FUN_0081c0f1();
      local_c._0_1_ = 0x11;
      pcStack_138 = (char *)0x6;
      pcStack_130 = "..\\..\\src\\msw\\toolbar.cpp";
      puStack_12c = (undefined *)0x404;
      _Stack_128 = 0xd25fa000d723fc;
      uStack_120 = __time64((__time64_t *)0x0);
      DStack_118 = GetCurrentThreadId();
      uStack_114 = 0;
      uStack_f8 = 7;
      pvStack_fc = (void *)0x0;
      uStack_10c._0_2_ = 0;
      pvStack_f4 = (void *)0x0;
      local_c._0_1_ = 0x12;
      GetLastError();
      FUN_00843700();
      GetLastError();
      pcStack_1d8 = (char *)0x9affc5;
      FUN_00847d90();
      local_c._0_1_ = 0x11;
      _free(pvStack_f4);
      if (7 < uStack_f8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_10c = (uint)uStack_10c._2_2_ << 0x10;
      uStack_f8 = 7;
      pvStack_fc = (void *)0x0;
      if (uStack_114 != 0) {
        FUN_00841af0();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_c._0_1_ = 0x10;
      FUN_0081b5bc();
    }
  }
  piStack_194 = (int *)param_1[0x68];
  param_1[0x76] = 0;
  local_1a4 = (undefined4 *)0x0;
  for (; piStack_194 != (int *)0x0; piStack_194 = (int *)piStack_194[3]) {
    iStack_1a0 = piStack_194[2];
    puVar15 = (undefined4 *)FUN_009adfb0();
    local_15c = (undefined **)*puVar15;
    local_158 = (int *)puVar15[1];
    iVar6 = puVar15[3];
    iVar10 = puVar15[2];
    iStack_150 = iVar6;
    if (*(int *)(iStack_1a0 + 0xc) == 3) {
      cVar4 = FUN_009aaee0();
      iVar6 = iStack_1a0;
      if (cVar4 == '\0') {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(iStack_1a0 + 0xc) != 3)) {
          FUN_00840480();
        }
        local_18c = *(undefined ***)(iVar6 + 0x18);
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(iVar6 + 0xc) != 3)) {
          FUN_00840480();
        }
        piStack_1a8 = *(int **)(iStack_1a0 + 0xa4);
        (**(code **)((int)*local_18c + 0x278))();
        iVar6 = iStack_184;
        local_18c = (undefined **)0x0;
        iStack_188 = 0;
        if (unaff_EBX != (int *)0x0) {
          (**(code **)(*unaff_EBX + 0x278))();
          iStack_188 = unaff_ESI + 3;
          local_18c = ppuStack_168;
        }
        iVar11 = FUN_008fc6f0();
        if (iVar11 < 0x1d7) {
          local_190 = (int *)(iVar10 - (int)piStack_164);
          uStack_38 = 0;
          puStack_2c = (undefined *)0x0;
          uStack_28 = 0;
          ppuStack_34 = (undefined **)0x0;
          uStack_30 = 0x104;
          puVar13 = (undefined *)(iVar6 / (int)local_190);
          puVar3 = puVar13;
          puVar1 = (undefined *)local_1a4;
          while (local_1a4 = (undefined4 *)puVar3, local_1a4 != (undefined4 *)0x0) {
            pcStack_1d8 = (char *)0x9b0413;
            LVar5 = SendMessageW(*(HWND *)(uStack_198 + 0x13c),0x443,local_1ac,(LPARAM)&uStack_38);
            if (LVar5 == 0) {
              puStack_174 = &uStack_1e8;
              FUN_0043c211(&DAT_00d25fa0);
              cVar4 = FUN_00846b30(6);
              if (cVar4 != '\0') {
                FUN_0081c0f1();
                local_14._0_1_ = 0x15;
                local_140 = (void *)0x6;
                pcStack_138 = "..\\..\\src\\msw\\toolbar.cpp";
                pcStack_130 = "wxToolBar::Realize";
                uStack_134 = 0x458;
                puStack_12c = &DAT_00d25fa0;
                _Stack_128 = __time64((__time64_t *)0x0);
                DVar12 = GetCurrentThreadId();
                uStack_120 = (ulonglong)DVar12;
                uStack_100 = 7;
                uStack_104 = 0;
                uStack_114 = uStack_114 & 0xffff0000;
                pvStack_fc = (void *)0x0;
                local_14._0_1_ = 0x16;
                GetLastError();
                FUN_00843700();
                GetLastError();
                pcStack_1d8 = "..\\..\\src\\msw\\toolbar.cpp";
                ppvStack_1dc = local_ac;
                uStack_1e0 = 0x9b051a;
                FUN_00847d90();
                local_14._0_1_ = 0x15;
                _free(pvStack_fc);
                if (7 < uStack_100) {
                    // WARNING: Subroutine does not return
                  FUN_00a3f6a1();
                }
                uStack_114 = uStack_114 & 0xffff0000;
                uStack_100 = 7;
                uStack_104 = 0;
                if (uStack_120._4_4_ != 0) {
                  FUN_00841af0();
                    // WARNING: Subroutine does not return
                  FUN_00a3f6a1();
                }
                local_14 = (void *)CONCAT31(local_14._1_3_,0x10);
                FUN_0081b5bc();
              }
            }
            local_1ac = local_1ac + 1;
            puVar1 = (undefined *)((int)local_1a4 + -1);
            puVar3 = puVar1;
          }
          iVar6 = (int)(puVar13 + 1) * (int)local_190;
          piStack_1a8[0x28] = (int)puVar13;
          pcStack_1d8 = (char *)0xffffffff;
          ppvStack_1dc = (void **)0x9b05d3;
          local_1a4 = (undefined4 *)puVar1;
          (**(code **)(*piStack_194 + 0x288))();
        }
        else {
          uStack_d0 = 0x20;
          uStack_cc = 0x40;
          uStack_be = (undefined2)iVar6;
          pcStack_1d8 = (char *)0x9b0203;
          LVar5 = SendMessageW(*(HWND *)(uStack_198 + 0x13c),0x440,piStack_1a8[4],(LPARAM)&uStack_d0
                              );
          if (LVar5 == 0) {
            local_1a4 = &uStack_1e8;
            FUN_0043c211(&DAT_00d25fa0);
            cVar4 = FUN_00846b30(6);
            if (cVar4 != '\0') {
              FUN_0081c0f1();
              local_14._0_1_ = 0x13;
              local_140 = (void *)0x6;
              pcStack_138 = "..\\..\\src\\msw\\toolbar.cpp";
              pcStack_130 = "wxToolBar::Realize";
              uStack_134 = 0x442;
              puStack_12c = &DAT_00d25fa0;
              _Stack_128 = __time64((__time64_t *)0x0);
              DVar12 = GetCurrentThreadId();
              uStack_120 = (ulonglong)DVar12;
              uStack_100 = 7;
              uStack_104 = 0;
              uStack_114 = uStack_114 & 0xffff0000;
              pvStack_fc = (void *)0x0;
              local_14._0_1_ = 0x14;
              GetLastError();
              FUN_00843700();
              GetLastError();
              pcStack_1d8 = "..\\..\\src\\msw\\toolbar.cpp";
              ppvStack_1dc = local_ac;
              uStack_1e0 = 0x9b030d;
              FUN_00847d90();
              local_14._0_1_ = 0x13;
              _free(pvStack_fc);
              if (7 < uStack_100) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
              uStack_114 = uStack_114 & 0xffff0000;
              uStack_100 = 7;
              uStack_104 = 0;
              if (uStack_120._4_4_ != 0) {
                FUN_00841af0();
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
              local_14 = (void *)CONCAT31(local_14._1_3_,0x10);
              FUN_0081b5bc();
            }
          }
        }
        if (((int)local_158 + ((-iStack_160 - iStack_188) - (int)puStack_17c) < 0) ||
           ((*(uint *)(uStack_198 + 0xe0) >> 8 & 1) == 0)) {
          if (unaff_EBX != (int *)0x0) {
            (**(code **)(*unaff_EBX + 0xcc))();
          }
          if ((int)local_158 + (-(int)puStack_17c - iStack_160) < 0) {
            pcStack_1d8 = (char *)0xffffffff;
            ppvStack_1dc = (void **)0x9b0659;
            (**(code **)(*piStack_194 + 0x288))();
          }
        }
        else if (unaff_EBX != (int *)0x0) {
          (**(code **)(*unaff_EBX + 0xcc))();
        }
        pcStack_1d8 = (char *)piStack_164;
        ppvStack_1dc = (void **)0x9b0684;
        (**(code **)(*piStack_194 + 0x288))();
        if (piStack_1a8 != (int *)0x0) {
          (**(code **)(*piStack_1a8 + 0x288))();
        }
        local_190[0x76] = local_190[0x76] + iVar6;
        param_1 = local_190;
      }
    }
    else {
      cVar4 = FUN_009aaee0();
      if (cVar4 == '\0') {
        param_1[0x76] = param_1[0x76] + (iVar10 - (int)local_15c);
      }
      else {
        param_1[0x76] = param_1[0x76] + (iVar6 - (int)local_158);
      }
    }
    local_1a4 = (undefined4 *)((int)local_1a4 + 1);
  }
  param_1[0x75] = (int)local_1a4;
  cVar4 = FUN_009aaee0();
  if (cVar4 == '\0') {
    if (param_1[0x6d] == 0) {
      (**(code **)(*param_1 + 0x3e4))();
    }
  }
  else if (param_1[0x75] != 0) {
    pcVar14 = *(code **)(*param_1 + 0x3e4);
    param_1[0x6d] = 1;
    (*pcVar14)();
  }
  FUN_0091a950();
  FUN_009ad150();
  local_c = CONCAT31(local_c._1_3_,0xf);
  FUN_0086aa30();
  FUN_00a3f66c();
LAB_009b0753:
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_009b0790(undefined4 param_1_00,int param_1,undefined2 *param_2)

{
  int iVar1;
  
  if (param_1 != -4) {
    if (param_1 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(param_1 + 0x18) < 8) {
      iVar1 = param_1 + 4;
    }
    else {
      iVar1 = *(int *)(param_1 + 4);
    }
    if ((undefined2 *)(iVar1 + *(int *)(param_1 + 0x14) * 2) <= param_2) {
      FUN_00a3fb10();
    }
  }
  FID_conflict_append(1,*param_2);
  return param_1_00;
}



undefined __fastcall FUN_009b07e0(undefined4 param_1)

{
  bool bVar1;
  bool bVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined local_7d;
  undefined local_78 [4];
  uint local_74;
  undefined4 local_64;
  uint local_60;
  void *local_5c;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4d7b;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_c;
  FUN_0043c211(param_1);
  local_4 = 0;
  bVar2 = false;
  bVar1 = false;
  iVar4 = FUN_00850470(local_30);
  if (iVar4 != 0) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 1;
    FUN_0043c211(param_1);
    bVar2 = true;
    bVar1 = true;
    local_4 = 2;
    iVar4 = FUN_0084a340(uVar3);
    if (iVar4 == 0) {
      uVar5 = FUN_0084d360(local_78);
    }
    else {
      uVar5 = FUN_0084f210(local_78,local_54);
    }
    iVar4 = FUN_00850470(uVar5);
    local_7d = 0;
    if (iVar4 != 0) goto LAB_009b08b6;
  }
  local_7d = 1;
LAB_009b08b6:
  if (bVar1) {
    _free(local_5c);
    if (7 < local_60) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_74);
    }
    local_60 = 7;
    local_64 = 0;
    local_74 = local_74 & 0xffff0000;
  }
  if (bVar2) {
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
  }
  _free(local_14);
  if (local_18 < 8) {
    ExceptionList = local_c;
    return local_7d;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_2c);
}



int __thiscall FUN_009b0980(uint *param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  uint uVar5;
  uint *puVar6;
  undefined local_60 [4];
  uint local_5c;
  undefined4 local_4c;
  uint local_48;
  void *local_44;
  undefined local_3c [4];
  undefined4 local_38;
  uint local_24;
  void *local_20;
  uint *local_18;
  undefined4 local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be4e29;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar5 = 0;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_10 = param_1;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  uVar1 = *param_1_00;
  local_4 = 0;
  local_14 = 1;
  local_18 = param_1_00;
  if ((uVar1 & 1) != 0) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 1;
    FUN_0043c211(&DAT_00d72974);
    local_4 = CONCAT31(local_4._1_3_,2);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      uVar3 = FUN_0084d360(local_60);
    }
    else {
      uVar3 = FUN_0084f210(local_60,local_3c);
    }
    FID_conflict_append(uVar3,0,0xffffffff);
    _free(local_44);
    if (7 < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c);
    }
    local_48 = 7;
    local_4c = 0;
    local_5c = local_5c & 0xffff0000;
    local_4 = local_4 & 0xffffff00;
    _free(local_20);
    if (7 < local_24) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_38);
    }
  }
  if ((uVar1 & 2) != 0) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 3;
    FUN_0043c211("Ctrl+");
    local_4 = CONCAT31(local_4._1_3_,4);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      uVar3 = FUN_0084d360(local_60);
    }
    else {
      uVar3 = FUN_0084f210(local_60,local_3c);
    }
    FID_conflict_append(uVar3,0,0xffffffff);
    _free(local_44);
    if (7 < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c);
    }
    local_48 = 7;
    local_4c = 0;
    local_5c = local_5c & 0xffff0000;
    local_4 = local_4 & 0xffffff00;
    _free(local_20);
    if (7 < local_24) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_38);
    }
  }
  if ((uVar1 & 4) != 0) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 5;
    FUN_0043c211("Shift+");
    local_4 = CONCAT31(local_4._1_3_,6);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      uVar3 = FUN_0084d360(local_60);
    }
    else {
      uVar3 = FUN_0084f210(local_60,local_3c);
    }
    FID_conflict_append(uVar3,0,0xffffffff);
    _free(local_44);
    if (7 < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c);
    }
    local_48 = 7;
    local_4c = 0;
    local_5c = local_5c & 0xffff0000;
    local_4 = local_4 & 0xffffff00;
    _free(local_20);
    if (7 < local_24) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_38);
    }
  }
  uVar1 = local_18[1];
  if (uVar1 - 0x154 < 0xc) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 7;
    FUN_0043c211(&DAT_00d72960);
    local_4 = CONCAT31(local_4._1_3_,8);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      uVar3 = FUN_0084d360(local_60);
    }
    else {
      uVar3 = FUN_0084f210(local_60,local_3c);
    }
    FID_conflict_append(uVar3,0,0xffffffff);
    FUN_008758a0(uVar1 - 0x153);
    _free(local_44);
    if (7 < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c);
    }
    local_48 = 7;
    local_4c = 0;
    local_5c = local_5c & 0xffff0000;
    _free(local_20);
    if (7 < local_24) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_38);
    }
  }
  else {
    uVar4 = uVar1 - 0x144;
    if (uVar4 < 10) {
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 9;
      FUN_0043c211(&DAT_00d7295c);
      local_4 = CONCAT31(local_4._1_3_,10);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        uVar3 = FUN_0084d360(local_3c);
      }
      else {
        uVar3 = FUN_0084f210(local_3c,local_60);
      }
      FID_conflict_append(uVar3,0,0xffffffff);
    }
    else {
      if (0x13 < uVar1 - 0xc1) {
        puVar6 = &DAT_00d726c8;
        do {
          if (uVar1 == *puVar6) {
            FUN_004325b6(PTR_DAT_03236318);
            local_4 = 0xd;
            FUN_0043c211(puVar6[1]);
            local_4 = CONCAT31(local_4._1_3_,0xe);
            iVar2 = FUN_0084a340();
            if (iVar2 == 0) {
              uVar3 = FUN_0084d360(local_60);
            }
            else {
              uVar3 = FUN_0084f210(local_60,local_3c);
            }
            FID_conflict_append(uVar3,0,0xffffffff);
            _free(local_44);
            if (7 < local_48) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1(local_5c);
            }
            local_48 = 7;
            local_4c = 0;
            local_5c = local_5c & 0xffff0000;
            local_4 = local_4 & 0xffffff00;
            _free(local_20);
            if (7 < local_24) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1(local_38);
            }
            break;
          }
          uVar5 = uVar5 + 1;
          puVar6 = puVar6 + 2;
        } while (uVar5 < 0x41);
        if (uVar5 != 0x41) {
          ExceptionList = local_c;
          return param_1;
        }
        iVar2 = _iswprint((wint_t)uVar1);
        if (iVar2 != 0) {
          FID_conflict_append(1,uVar1 & 0xffff);
          ExceptionList = local_c;
          return param_1;
        }
        if (PTR_FUN_03235c4c == (undefined *)0x0) {
          ExceptionList = local_c;
          return param_1;
        }
        FUN_00840480("..\\..\\src\\common\\accelcmn.cpp",0x165,"wxAcceleratorEntry::ToString",
                     "Assert failure",L"unknown keyboard accelerator code");
        ExceptionList = local_c;
        return param_1;
      }
      FUN_004325b6(PTR_DAT_03236318);
      local_4 = 0xb;
      FUN_0043c211("SPECIAL");
      local_4 = CONCAT31(local_4._1_3_,0xc);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        uVar3 = FUN_0084d360(local_3c);
      }
      else {
        uVar3 = FUN_0084f210(local_3c,local_60);
      }
      FID_conflict_append(uVar3,0,0xffffffff);
      uVar4 = uVar1 - 0xc0;
    }
    FUN_008758a0(uVar4);
    FUN_0040159c();
    FUN_0040159c();
  }
  ExceptionList = local_c;
  return param_1;
}



int __thiscall
FUN_009b0f40(char *param_1_00,undefined4 param_1,int param_2,uint param_3,uint param_4)

{
  char cVar1;
  uint local_98;
  uint local_7c;
  void *local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4e81;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1_00 != (char *)0x0) {
    do {
      cVar1 = *param_1_00;
      param_1_00 = param_1_00 + 1;
    } while (cVar1 != '\0');
  }
  FUN_008527e0();
  local_4 = 0;
  cVar1 = FUN_009b07e0();
  local_4 = 0xffffffff;
  _free(local_78);
  if (local_7c < 8) {
    if (cVar1 != '\0') {
      FUN_00852560();
      local_4 = 1;
      cVar1 = FUN_00850a20();
      local_4 = 0xffffffff;
      _free(local_78);
      if (7 < local_7c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if (cVar1 != '\0') {
        if ((param_3 <= local_98) && (local_98 <= param_4)) {
          ExceptionList = local_c;
          return (local_98 - param_3) + param_2;
        }
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          local_4 = 2;
          FUN_00432231();
          local_4._0_1_ = 3;
          FUN_008423d0();
          local_4._0_1_ = 5;
          FUN_00848860();
          local_4 = CONCAT31(local_4._1_3_,2);
          FUN_00842440();
          local_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
    }
    ExceptionList = local_c;
    return 0;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



void FUN_009b1150(char *param_1,uint *param_2,uint *param_3)

{
  undefined4 ****ppppuVar1;
  short *psVar2;
  ushort _C;
  wint_t *pwVar3;
  ushort *puVar4;
  undefined *puVar5;
  char cVar6;
  wint_t wVar7;
  int iVar8;
  undefined4 ****ppppuVar9;
  undefined4 ****ppppuVar10;
  int *piVar11;
  int iVar12;
  uint uVar13;
  uint *puVar14;
  uint uStack_188;
  undefined4 uStack_184;
  char *pcStack_180;
  undefined4 uStack_17c;
  char *pcStack_178;
  char *pcStack_170;
  char *pcStack_16c;
  uint local_150;
  char **local_14c;
  char **local_148;
  uint *local_144;
  undefined4 local_12c;
  char *local_124;
  undefined4 local_120;
  char *local_11c;
  undefined *local_118;
  __time64_t local_114;
  DWORD local_10c;
  int local_108;
  undefined4 local_100;
  undefined4 local_f0;
  uint local_ec;
  void *local_e8;
  undefined local_dc [8];
  undefined4 local_d4 [2];
  char *local_cc;
  undefined4 local_c8;
  char *local_c4;
  undefined *local_c0;
  __time64_t local_bc;
  DWORD local_b4;
  undefined4 local_b0;
  undefined2 local_a8;
  undefined4 local_98;
  undefined4 local_94;
  undefined4 local_90;
  undefined local_70 [12];
  undefined4 ****local_64;
  undefined local_60 [12];
  undefined4 local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined4 ****local_30 [4];
  undefined *local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4f18;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_150;
  ExceptionList = &local_c;
  local_144 = param_2;
  pcStack_16c = (char *)0x0;
  local_30[0] = (undefined4 ****)((uint)local_30[0] & 0xffff0000);
  pcStack_170 = param_1;
  local_148 = (char **)param_3;
  local_1c = 7;
  local_20 = (undefined *)0x0;
  FID_conflict_assign();
  local_18 = (void *)0x0;
  local_4 = 0;
  pcStack_16c = (char *)0x9b11f3;
  FUN_008517a0();
  pcStack_16c = (undefined *)0x9;
  pcStack_170 = (char *)0x9b1206;
  iVar8 = FUN_00850910();
  if (iVar8 == -1) {
    local_14c = (char **)0x0;
  }
  else {
    local_14c = (char **)(iVar8 + 1);
  }
  local_150 = 0;
  local_40 = 7;
  local_44 = 0;
  local_54 = (uint)local_54._2_2_ << 0x10;
  local_3c = (void *)0x0;
  local_4._0_1_ = 1;
  if (local_14c < local_20) {
    do {
      if (local_1c < 8) {
        ppppuVar10 = local_30;
LAB_009b126d:
        ppppuVar9 = local_30[0];
        if (local_1c < 8) {
          ppppuVar9 = local_30;
        }
        if (ppppuVar10 < ppppuVar9) goto LAB_009b1294;
        ppppuVar9 = local_30[0];
        if (local_1c < 8) {
          ppppuVar9 = local_30;
        }
        if ((undefined4 ****)((int)ppppuVar9 + (int)local_20 * 2) < ppppuVar10) goto LAB_009b1294;
      }
      else {
        ppppuVar10 = local_30[0];
        if (local_30[0] != (undefined4 ****)0x0) goto LAB_009b126d;
LAB_009b1294:
        FUN_00a3fb10();
      }
      local_64 = ppppuVar10;
      if (&stack0x00000000 != (undefined *)0x30) {
        ppppuVar9 = local_30[0];
        if (local_1c < 8) {
          ppppuVar9 = local_30;
        }
        ppppuVar1 = (undefined4 ****)((int)ppppuVar10 + (int)local_14c * 2);
        if (ppppuVar1 <= (undefined4 ****)((int)ppppuVar9 + (int)local_20 * 2)) {
          ppppuVar9 = local_30[0];
          if (local_1c < 8) {
            ppppuVar9 = local_30;
          }
          if (ppppuVar9 <= ppppuVar1) goto LAB_009b12f6;
        }
        FUN_00a3fb10();
      }
LAB_009b12f6:
      psVar2 = (short *)((int)ppppuVar10 + (int)local_14c * 2);
      if (&stack0x00000000 != (undefined *)0x30) {
        if (&stack0x00000000 == (undefined *)0x34) {
          FUN_00a3fb10();
        }
        ppppuVar10 = local_30[0];
        if (local_1c < 8) {
          ppppuVar10 = local_30;
        }
        if ((short *)((int)ppppuVar10 + (int)local_20 * 2) <= psVar2) {
          FUN_00a3fb10();
        }
      }
      puVar5 = (undefined *)local_14c;
      if (*psVar2 == 0x2b) {
LAB_009b13f9:
        cVar6 = FUN_009b07e0();
        if (cVar6 == '\0') {
          cVar6 = FUN_009b07e0();
          if (cVar6 == '\0') {
            cVar6 = FUN_009b07e0();
            if (cVar6 == '\0') {
              cVar6 = FUN_009b07e0();
              if (cVar6 == '\0') {
                if (local_44 == 0) {
                  pcStack_16c = local_dc;
                  pcStack_170 = (char *)0x9b1494;
                  piVar11 = (int *)FUN_0081b542();
                  pcStack_16c = (char *)*piVar11;
                  pcStack_170 = (char *)0x9b14a7;
                  FUN_009b0790();
                  goto LAB_009b156c;
                }
                local_14c = (char **)&uStack_188;
                FUN_0043c211(&DAT_00d25fa0);
                cVar6 = FUN_00846b30(6);
                if (cVar6 != '\0') {
                  pcStack_16c = (undefined *)0x9b14df;
                  FUN_0081c0f1();
                  local_14c = &pcStack_170;
                  pcStack_178 = (char *)0x9b14f5;
                  FUN_00432231();
                  pcStack_178 = "wxAcceleratorEntry::ParseAccel";
                  uStack_17c = 0xce;
                  pcStack_180 = "..\\..\\src\\common\\accelcmn.cpp";
                  uStack_184 = 6;
                  local_4._0_1_ = 3;
                  uStack_188 = 0x9b151f;
                  FUN_008423d0();
                  local_4._0_1_ = 5;
                  pcStack_178 = (char *)0x9b153b;
                  FUN_00848860();
                  local_4._0_1_ = 2;
                  FUN_00842440();
                  local_4._0_1_ = 1;
                  FUN_0081b5bc();
                }
              }
              else {
                local_150 = local_150 | 2;
              }
            }
            else {
              local_150 = local_150 | 4;
            }
          }
          else {
            local_150 = local_150 | 1;
          }
        }
        else {
          local_150 = local_150 | 2;
        }
        FUN_00432156();
      }
      else {
        pcStack_16c = local_60;
        pcStack_170 = (char *)0x9b1359;
        piVar11 = (int *)FUN_0081b542();
        iVar8 = *piVar11;
        psVar2 = (short *)piVar11[1];
        if (iVar8 != -4) {
          if (iVar8 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar8 + 0x18) < 8) {
            iVar12 = iVar8 + 4;
          }
          else {
            iVar12 = *(int *)(iVar8 + 4);
          }
          if ((short *)(iVar12 + *(int *)(iVar8 + 0x14) * 2) <= psVar2) {
            FUN_00a3fb10();
          }
        }
        if (*psVar2 == 0x2d) goto LAB_009b13f9;
        pcStack_16c = local_70;
        pcStack_170 = (char *)0x9b13a6;
        piVar11 = (int *)FUN_0081b542();
        iVar8 = *piVar11;
        pwVar3 = (wint_t *)piVar11[1];
        if (iVar8 != -4) {
          if (iVar8 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar8 + 0x18) < 8) {
            iVar12 = iVar8 + 4;
          }
          else {
            iVar12 = *(int *)(iVar8 + 4);
          }
          if ((wint_t *)(iVar12 + *(int *)(iVar8 + 0x14) * 2) <= pwVar3) {
            FUN_00a3fb10();
          }
        }
        pcStack_16c = (char *)0x9b13df;
        _towlower(*pwVar3);
        pcStack_16c = (undefined *)0x1;
        pcStack_170 = (char *)0x9b13f4;
        FID_conflict_append();
      }
LAB_009b156c:
      local_14c = (char **)(puVar5 + 1);
    } while (local_14c < local_20);
  }
  if (local_44 == 0) {
    local_148 = (char **)&uStack_188;
    FUN_0043c211(&DAT_00d25fa0);
    cVar6 = FUN_00846b30(6);
    if (cVar6 != '\0') {
      pcStack_16c = (char *)0x9b194c;
      FUN_0081c0f1();
      local_4._0_1_ = 6;
      local_d4[0] = 6;
      local_cc = "..\\..\\src\\common\\accelcmn.cpp";
      local_c4 = "wxAcceleratorEntry::ParseAccel";
      local_c8 = 0xe0;
      local_c0 = &DAT_00d25fa0;
      pcStack_16c = (char *)0x9b1991;
      local_bc = __time64((__time64_t *)0x0);
      local_b4 = GetCurrentThreadId();
      local_b0 = 0;
      local_94 = 7;
      local_98 = 0;
      local_a8 = 0;
      local_90 = 0;
      local_4._0_1_ = 7;
      FUN_008854f0();
      pcStack_16c = (char *)local_d4;
      pcStack_170 = (char *)0x9b19fa;
      FUN_0083fe90();
      local_4._0_1_ = 6;
      FUN_00842440();
      local_4._0_1_ = 1;
      FUN_0081b5bc();
    }
    pcStack_16c = (char *)0x9b1a32;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      pcStack_16c = &UNK_009b1a50;
      FUN_00a3f6a1();
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    pcStack_16c = (char *)0x9b1a7c;
    _free(local_18);
joined_r0x009b1a86:
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      pcStack_16c = &UNK_009b1a95;
      FUN_00a3f6a1();
    }
  }
  else {
    if (local_44 == 1) {
      pcStack_16c = local_dc;
      pcStack_170 = (char *)0x9b1812;
      piVar11 = (int *)FUN_0081b542();
      iVar8 = *piVar11;
      puVar4 = (ushort *)piVar11[1];
      if (iVar8 != -4) {
        if (iVar8 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar8 + 0x18) < 8) {
          iVar12 = iVar8 + 4;
        }
        else {
          iVar12 = *(int *)(iVar8 + 4);
        }
        if ((ushort *)(iVar12 + *(int *)(iVar8 + 0x14) * 2) <= puVar4) {
          FUN_00a3fb10();
        }
      }
      _C = *puVar4;
      uVar13 = (uint)_C;
      if (local_150 != 0) {
        pcStack_16c = (char *)0x9b1851;
        wVar7 = _towupper(_C);
        uVar13 = (uint)wVar7;
      }
    }
    else {
      pcStack_16c = (char *)0x1;
      pcStack_170 = (char *)0x154;
      pcStack_178 = (char *)0x9b15b5;
      uVar13 = FUN_009b0f40();
      if (uVar13 == 0) {
        puVar14 = &DAT_00d726c8;
        uVar13 = 0;
        do {
          cVar6 = FUN_009b07e0();
          if (cVar6 != '\0') {
            uVar13 = *puVar14;
            if (uVar13 != 0) goto LAB_009b1857;
            break;
          }
          uVar13 = uVar13 + 8;
          puVar14 = puVar14 + 2;
        } while (uVar13 < 0x208);
        pcStack_16c = (char *)0x0;
        pcStack_170 = (char *)0x144;
        pcStack_178 = (char *)0x9b1618;
        uVar13 = FUN_009b0f40();
        if (uVar13 == 0) {
          pcStack_16c = (char *)0x1;
          pcStack_170 = (char *)0xc1;
          pcStack_178 = (char *)0x9b1640;
          uVar13 = FUN_009b0f40();
          if (uVar13 == 0) {
            local_148 = (char **)&uStack_188;
            FUN_0043c211(&DAT_00d25fa0);
            cVar6 = FUN_00846b30(6);
            if (cVar6 != '\0') {
              pcStack_16c = (char *)0x9b1680;
              FUN_0081c0f1();
              local_148 = &pcStack_170;
              pcStack_178 = (char *)0x9b1696;
              FUN_00432231();
              local_4._0_1_ = 9;
              local_12c = 6;
              local_124 = "..\\..\\src\\common\\accelcmn.cpp";
              local_11c = "wxAcceleratorEntry::ParseAccel";
              local_120 = 0x107;
              local_118 = &DAT_00d25fa0;
              pcStack_178 = (char *)0x9b16cc;
              local_114 = __time64((__time64_t *)0x0);
              local_10c = GetCurrentThreadId();
              local_108 = 0;
              local_ec = 7;
              local_f0 = 0;
              local_100._0_2_ = 0;
              local_e8 = (void *)0x0;
              local_4._0_1_ = 0xb;
              pcStack_178 = (char *)0x9b1723;
              FUN_00848860();
              local_4._0_1_ = 8;
              pcStack_16c = (char *)0x9b1735;
              _free(local_e8);
              if (7 < local_ec) {
                    // WARNING: Subroutine does not return
                pcStack_16c = &UNK_009b174d;
                FUN_00a3f6a1();
              }
              local_100 = (uint)local_100._2_2_ << 0x10;
              local_ec = 7;
              local_f0 = 0;
              if (local_108 != 0) {
                FUN_00841af0();
                    // WARNING: Subroutine does not return
                pcStack_16c = &UNK_009b1774;
                FUN_00a3f6a1();
              }
              local_4._0_1_ = 1;
              FUN_0081b5bc();
            }
            pcStack_16c = (char *)0x9b179f;
            _free(local_3c);
            if (7 < local_40) {
                    // WARNING: Subroutine does not return
              pcStack_16c = &UNK_009b17b8;
              FUN_00a3f6a1();
            }
            local_40 = 7;
            local_44 = 0;
            local_54 = local_54 & 0xffff0000;
            pcStack_16c = (char *)0x9b17e0;
            _free(local_18);
            goto joined_r0x009b1a86;
          }
        }
      }
    }
LAB_009b1857:
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar13 == 0)) {
      pcStack_16c = "keyCode";
      pcStack_170 = "wxAcceleratorEntry::ParseAccel";
      pcStack_178 = "..\\..\\src\\common\\accelcmn.cpp";
      uStack_17c = 0x9b1881;
      FUN_00840480();
    }
    if (local_144 != (uint *)0x0) {
      *local_144 = local_150;
    }
    if (local_148 != (char **)0x0) {
      *local_148 = (char *)uVar13;
    }
    pcStack_16c = (char *)0x9b18a9;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      pcStack_16c = &UNK_009b18c7;
      FUN_00a3f6a1();
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    pcStack_16c = (char *)0x9b18f3;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      pcStack_16c = &UNK_009b190c;
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_009b1ad0(void)

{
  char cVar1;
  undefined4 *puVar2;
  undefined *local_3c;
  undefined4 local_38;
  undefined local_34 [20];
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4f58;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3c;
  ExceptionList = &local_c;
  local_3c = &stack0xffffffb8;
  FUN_008529d0(local_34);
  local_4 = 0;
  if (local_20 == 0) {
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  else {
    cVar1 = FUN_009b1150(local_34,&local_38);
    if (cVar1 == '\0') {
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    else {
      puVar2 = (undefined4 *)operator_new(0x10);
      if (puVar2 != (undefined4 *)0x0) {
        puVar2[2] = 0;
        puVar2[3] = 0;
        *puVar2 = local_38;
        puVar2[1] = local_3c;
      }
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int FUN_009b1bf0(void)

{
  int iVar1;
  int iVar2;
  
  iVar2 = DAT_032e98b4;
  if (DAT_032e98b4 == 0) {
    iVar1 = FUN_008fedb0(0x15,0);
    iVar2 = 4;
    DAT_032e98b4 = 4;
    if (iVar1 < 800) {
      iVar2 = 3;
      DAT_032e98b4 = 3;
    }
    if (iVar1 < 0x280) {
      iVar2 = 2;
      DAT_032e98b4 = 2;
    }
    if (iVar1 < 200) {
      iVar2 = 1;
      DAT_032e98b4 = 1;
    }
    if (iVar1 < 10) {
      DAT_032e98b4 = 4;
      return 4;
    }
  }
  return iVar2;
}



undefined ** FUN_009b1c60(void)

{
  return &PTR_u_wxClipboard_0323c4cc;
}



void __fastcall FUN_009b1c70(int param_1)

{
  *(undefined *)(param_1 + 0x10) = 1;
  return;
}



undefined __fastcall FUN_009b1c80(int param_1)

{
  return *(undefined *)(param_1 + 0x10);
}



uint __thiscall FUN_009b1c90(int *param_1_00,int param_1)

{
  uint in_EAX;
  uint uVar1;
  
  if (*(char *)(param_1_00 + 2) != '\0') {
    return in_EAX & 0xffffff00;
  }
  if (param_1 != 0) {
                    // WARNING: Could not recover jumptable at 0x009b1cac. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (**(code **)(*param_1_00 + 0x1c))();
    return uVar1;
  }
  return 1;
}



void __fastcall FUN_009b1cc0(int param_1)

{
  *(undefined *)(param_1 + 0x10) = 0;
  return;
}



void __thiscall FUN_009b1cd0(int param_1_00,undefined param_1)

{
  *(undefined *)(param_1_00 + 8) = param_1;
  return;
}



bool FUN_009b1ce0(ushort param_1)

{
  BOOL BVar1;
  uint format;
  
  format = (uint)param_1;
  BVar1 = IsClipboardFormatAvailable(format);
  if (BVar1 != 0) {
    return true;
  }
  if (format != 2) {
    if (format != 3) {
      return false;
    }
    BVar1 = IsClipboardFormatAvailable(0xe);
    return BVar1 != 0;
  }
  BVar1 = IsClipboardFormatAvailable(8);
  return BVar1 != 0;
}



undefined4 __thiscall FUN_009b1d30(int param_1_00,undefined2 *param_1)

{
  char cVar1;
  
  if (*(char *)(param_1_00 + 8) == '\0') {
    cVar1 = FUN_009b1ce0(*param_1);
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



bool __fastcall FUN_009b1d60(int param_1)

{
  return *(int *)(param_1 + 0x2c) != 0;
}



void __fastcall FUN_009b1d70(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be4f93;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxEnhMetaFile::vftable;
  local_4 = 1;
  FUN_009d9c00(uVar1);
  _free((void *)param_1[9]);
  if (7 < (uint)param_1[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009b1e10(undefined4 param_1_00,byte param_1)

{
  FUN_009b1d70();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_009b1e30(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bcb8a8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1[1] = 0;
  *(undefined *)(param_1 + 2) = 0;
  local_4 = 0;
  *param_1 = wxClipboard::vftable;
  FUN_008fa950(uVar1);
  param_1[3] = 0;
  *(undefined *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_009b1e90(int param_1)

{
  char cVar1;
  HRESULT HVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4070;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*(char *)(param_1 + 8) == '\0') && (*(LPDATAOBJECT *)(param_1 + 0xc) != (LPDATAOBJECT)0x0)) {
    HVar2 = OleIsCurrentClipboard(*(LPDATAOBJECT *)(param_1 + 0xc));
    if (HVar2 == 0) {
      HVar2 = OleSetClipboard((LPDATAOBJECT)0x0);
      if (HVar2 < 0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          uStack_4 = 0;
          FUN_008423d0();
          uStack_4._0_1_ = 1;
          FUN_00843700();
          FUN_00847d90();
          uStack_4 = (uint)uStack_4._1_3_ << 8;
          FUN_00842440();
          uStack_4 = 0xffffffff;
          FUN_0081b5bc();
        }
      }
    }
    *(undefined4 *)(param_1 + 0xc) = 0;
  }
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_009b1fc0(int param_1)

{
  char cVar1;
  HRESULT HVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(LPDATAOBJECT *)(param_1 + 0xc) != (LPDATAOBJECT)0x0) {
    HVar2 = OleIsCurrentClipboard(*(LPDATAOBJECT *)(param_1 + 0xc));
    *(undefined4 *)(param_1 + 0xc) = 0;
    if (HVar2 == 0) {
      HVar2 = OleFlushClipboard();
      if (-1 < HVar2) {
        ExceptionList = local_c;
        return 1;
      }
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        FUN_00843700();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x14);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009b1e30(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_009b2160(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxClipboard::vftable;
  local_4 = 0;
  if (param_1[3] != 0) {
    FUN_009b1e90(uVar1);
  }
  OleUninitialize();
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009b21d0(int param_1_00,int param_1)

{
  char extraout_AL;
  HRESULT HVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be4fe1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(char *)(param_1_00 + 8) == '\0') {
    if (param_1 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480();
      }
    }
    else {
      HVar1 = OleSetClipboard(*(LPDATAOBJECT *)(param_1 + 4));
      if (-1 < HVar1) {
        *(undefined4 *)(param_1_00 + 0xc) = *(undefined4 *)(param_1 + 4);
        FUN_00934010();
        ExceptionList = local_c;
        return 1;
      }
      FUN_0043c211(&DAT_00d25fa0);
      FUN_00846b30(1);
      if (extraout_AL != '\0') {
        FUN_004325b6();
        uStack_4 = 0;
        FUN_0043c211();
        uStack_4._0_1_ = 1;
        FUN_00820bf9();
        FUN_008433c0();
        uStack_4._0_1_ = 2;
        FUN_0043c211();
        uStack_4._0_1_ = 3;
        FUN_008423d0();
        uStack_4._0_1_ = 4;
        GetLastError();
        FUN_0084d140();
        FUN_008854f0();
        FUN_00978a00();
        uStack_4._0_1_ = 3;
        FUN_00842440();
        FUN_0040159c();
        uStack_4 = CONCAT31(uStack_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
  }
  ExceptionList = local_c;
  return 0;
}



uint __thiscall FUN_009b23b0(int param_1,int *param_2)

{
  ushort uVar1;
  bool bVar2;
  char cVar3;
  HRESULT HVar4;
  _func_5425 *p_Var5;
  IDataObjectVtbl *pIVar6;
  BOOL BVar7;
  int iVar8;
  int *unaff_EBX;
  _func_5425 *p_Var9;
  uint format;
  undefined auStack_1bc [4];
  undefined4 uStack_1b8;
  undefined *puStack_1b4;
  IUnknown IStack_1b0;
  undefined4 uStack_1ac;
  char *pcStack_1a8;
  int *piStack_1a4;
  undefined auStack_178 [4];
  ushort uStack_174;
  IDataObjectVtbl *local_170;
  _func_5422 *p_Stack_16c;
  _func_5425 *p_Stack_168;
  _func_5426 *p_Stack_164;
  _func_5425 *p_Stack_160;
  _func_5428 *p_Stack_15c;
  STGMEDIUM aSStack_158 [27];
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be5068;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(char *)(param_1 + 8) == '\0') {
    local_170 = (IDataObjectVtbl *)0x0;
    HVar4 = OleGetClipboard((LPDATAOBJECT *)&local_170);
    if ((-1 < HVar4) && (local_170 != (IDataObjectVtbl *)0x0)) {
      p_Var5 = (_func_5425 *)(**(code **)(*param_2 + 8))();
      auStack_178 = (undefined  [4])((uint)(ushort)auStack_178._2_2_ << 0x10);
      aSStack_158[0].tymed = (DWORD)p_Var5;
      if (p_Var5 == (_func_5425 *)0x1) {
        pIVar6 = (IDataObjectVtbl *)auStack_178;
      }
      else {
        pIVar6 = (IDataObjectVtbl *)FUN_00823c23();
        puStack_8 = (undefined *)0x5;
        if (pIVar6 == (IDataObjectVtbl *)0x0) {
          pIVar6 = (IDataObjectVtbl *)0x0;
        }
        else {
          piStack_1a4 = (int *)0x9b2478;
          local_170 = pIVar6;
          _vector_constructor_iterator_
                    (pIVar6,2,(int)p_Var5,(_func_void_ptr_void_ptr *)&LAB_00933b90);
        }
        puStack_8 = (undefined *)0xffffffff;
      }
      local_170 = pIVar6;
      (**(code **)(*param_2 + 0xc))();
      p_Var9 = (_func_5425 *)0x0;
      bVar2 = false;
      do {
        if (p_Var5 <= p_Var9) break;
        uVar1 = *(ushort *)((int)&pIVar6->QueryInterface + (int)p_Var9 * 2);
        format = (uint)uVar1;
        BVar7 = IsClipboardFormatAvailable(format);
        if (BVar7 != 0) {
          local_170 = (IDataObjectVtbl *)0x0;
          p_Stack_16c = (_func_5422 *)0x1;
          p_Stack_168 = (_func_5425 *)0xffffffff;
          if (format == 2) {
            p_Stack_164 = (_func_5426 *)0x10;
          }
          else if (format == 3) {
            p_Stack_164 = (_func_5426 *)0x20;
          }
          else if (format == 0xe) {
            p_Stack_164 = (_func_5426 *)0x40;
          }
          else {
            p_Stack_164 = (_func_5426 *)0x1;
          }
          pcStack_1a8 = (char *)0x9b252c;
          piStack_1a4 = unaff_EBX;
          uStack_174 = uVar1;
          iVar8 = (**(code **)(*unaff_EBX + 0xc))();
          if (iVar8 < 0) {
            if (uStack_174 == 2) {
              p_Stack_164 = (_func_5426 *)0x1;
              pcStack_1a8 = (char *)0x9b2552;
              piStack_1a4 = unaff_EBX;
              iVar8 = (**(code **)(*unaff_EBX + 0xc))();
            }
            if (iVar8 < 0) goto LAB_009b2629;
          }
          pcStack_1a8 = *(char **)(puStack_8 + 4);
          piStack_1a4 = (int *)&uStack_174;
          uStack_1ac = 0x9b2577;
          iVar8 = (**(code **)(*(int *)pcStack_1a8 + 0x1c))();
          if (iVar8 < 0) {
            p_Stack_15c = (_func_5428 *)auStack_1bc;
            FUN_0043c211(&DAT_00d25fa0);
            cVar3 = FUN_00846b30(6);
            if (cVar3 != '\0') {
              FUN_0081c0f1();
              piStack_1a4 = (int *)0x362;
              pcStack_1a8 = "..\\..\\src\\msw\\clipbrd.cpp";
              uStack_1ac = 6;
              uStack_10 = 6;
              IStack_1b0.lpVtbl = (IUnknownVtbl *)0x9b25d5;
              FUN_008423d0();
              uStack_10._0_1_ = 7;
              FUN_00840b80();
              uStack_10 = CONCAT31(uStack_10._1_3_,6);
              FUN_00842440();
              uStack_10 = 0xffffffff;
              FUN_0081b5bc();
            }
            ReleaseStgMedium(aSStack_158);
          }
          else {
            bVar2 = true;
          }
        }
LAB_009b2629:
        p_Var9 = p_Var9 + 1;
        pIVar6 = (IDataObjectVtbl *)auStack_178;
        p_Var5 = p_Stack_160;
      } while (!bVar2);
      if (pIVar6 != (IDataObjectVtbl *)&stack0xfffffe80) {
        FUN_00a3f66c();
      }
      (**(code **)(*unaff_EBX + 8))();
      ExceptionList = local_c;
      return (uint)auStack_178 >> 0x18;
    }
    aSStack_158[0].pUnkForRelease = &IStack_1b0;
    puStack_1b4 = &DAT_00d25fa0;
    uStack_1b8 = 0x9b2673;
    FUN_0043c211();
    puStack_1b4 = (undefined *)0x1;
    uStack_1b8 = 0x9b267a;
    cVar3 = FUN_00846b30();
    if (cVar3 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar8 = FUN_0084a340();
      if (iVar8 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_0043c211();
      uStack_4._0_1_ = 3;
      piStack_1a4 = (int *)0x9b272e;
      FUN_008423d0();
      uStack_4._0_1_ = 4;
      GetLastError();
      FUN_0084d140();
      FUN_008854f0();
      FUN_00978a00();
      uStack_4._0_1_ = 3;
      FUN_00842440();
      FUN_0040159c();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_009b27d0(undefined4 param_1_00,byte param_1)

{
  FUN_009b2160();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Different Base Names
//  int __cdecl operator==(struct _GUID const &,struct _GUID const &)
//  int __cdecl IsEqualGUID(struct _GUID const &,struct _GUID const &)
// 
// Library: Visual Studio 2008 Release

bool FID_conflict_operator__(int *param_1,int *param_2)

{
  uint uVar1;
  int iVar2;
  
  uVar1 = 0x10;
  do {
    if (*param_1 != *param_2) {
      iVar2 = (uint)*(byte *)param_1 - (uint)*(byte *)param_2;
      if (((iVar2 == 0) &&
          (iVar2 = (uint)*(byte *)((int)param_1 + 1) - (uint)*(byte *)((int)param_2 + 1), iVar2 == 0
          )) && (iVar2 = (uint)*(byte *)((int)param_1 + 2) - (uint)*(byte *)((int)param_2 + 2),
                iVar2 == 0)) {
        iVar2 = (uint)*(byte *)((int)param_1 + 3) - (uint)*(byte *)((int)param_2 + 3);
      }
      return (iVar2 >> 0x1f | 1U) == 0;
    }
    uVar1 = uVar1 - 4;
    param_2 = param_2 + 1;
    param_1 = param_1 + 1;
  } while (3 < uVar1);
  return true;
}



undefined4 FUN_009b2860(undefined4 param_1,int param_2,uint param_3)

{
  int iVar1;
  uint uVar2;
  
  uVar2 = 0;
  if (param_3 != 0) {
    do {
      iVar1 = FID_conflict_operator__(param_1,*(undefined4 *)(param_2 + uVar2 * 4));
      if (iVar1 != 0) {
        return 1;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < param_3);
  }
  return 0;
}



void FUN_009b28a0(undefined4 param_1)

{
  short sVar1;
  uint uVar2;
  int iVar3;
  short *psVar4;
  short *psVar5;
  int unaff_ESI;
  uint uVar6;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be50b1;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  uVar6 = 0;
  do {
    iVar3 = FID_conflict_operator__(param_1,(&PTR_DAT_00d72d58)[uVar6 * 2],uVar2);
    if (iVar3 != 0) {
      psVar5 = (short *)(&PTR_u_AdviseSink_00d72d5c)[uVar6 * 2];
      if (psVar5 == (short *)0x0) {
        psVar5 = &DAT_00fae9c8;
      }
      *(undefined4 *)(unaff_ESI + 0x18) = 7;
      *(undefined4 *)(unaff_ESI + 0x14) = 0;
      *(undefined2 *)(unaff_ESI + 4) = 0;
      psVar4 = psVar5;
      do {
        sVar1 = *psVar4;
        psVar4 = psVar4 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign(psVar5,(int)psVar4 - (int)(psVar5 + 1) >> 1);
      *(undefined4 *)(unaff_ESI + 0x1c) = 0;
      goto LAB_009b296c;
    }
    uVar6 = uVar6 + 1;
  } while (uVar6 < 0x4c);
  FUN_009da740(param_1);
  local_4 = 1;
  *(undefined4 *)(unaff_ESI + 0x18) = 7;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined2 *)(unaff_ESI + 4) = 0;
  psVar5 = &DAT_00fae9c8;
  do {
    psVar4 = psVar5;
    psVar5 = psVar4 + 1;
  } while (*psVar4 != 0);
  FID_conflict_assign(&DAT_00fae9c8,(int)(psVar4 + -0x7d74e4) >> 1);
  *(undefined4 *)(unaff_ESI + 0x1c) = 0;
  local_4 = local_4 & 0xffffff00;
  FUN_009da6a0();
LAB_009b296c:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_009b29d0(void)

{
  char cVar1;
  uint local_a0;
  void *local_9c;
  uint local_7c;
  void *local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5111;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    FUN_0081c0f1();
    local_4 = 0;
    FUN_004325b6();
    local_4._0_1_ = 1;
    FUN_009b28a0();
    FUN_00432231();
    local_4._0_1_ = 3;
    FUN_008423d0();
    local_4._0_1_ = 5;
    FUN_009235f0();
    local_4 = CONCAT31(local_4._1_3_,2);
    FUN_00842440();
    _free(local_78);
    if (7 < local_7c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    _free(local_9c);
    if (7 < local_a0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  ExceptionList = local_c;
  return;
}



void FUN_009b2b80(undefined4 param_1,int param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined auStack_c8 [12];
  undefined4 uStack_bc;
  undefined4 uStack_b8;
  char *pcStack_b4;
  int iStack_b0;
  char *pcStack_ac;
  undefined local_94 [20];
  undefined local_80 [4];
  uint local_7c;
  undefined4 local_6c;
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be515b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    pcStack_ac = (char *)0x9b2bdd;
    FUN_0081c0f1();
    local_4 = 0;
    pcStack_ac = (char *)0x9b2bf6;
    FUN_004325b6();
    pcStack_ac = "wxLogAddRef";
    iStack_b0 = 0x20b;
    pcStack_b4 = "..\\..\\src\\msw\\ole\\oleutils.cpp";
    uStack_b8 = 7;
    local_4._0_1_ = 1;
    uStack_bc = 0x9b2c1d;
    uVar2 = FUN_008423d0();
    pcStack_ac = local_94;
    iStack_b0 = param_2 + 1;
    local_4._0_1_ = 2;
    pcStack_b4 = (char *)0x9b2c40;
    FUN_00840d00();
    pcStack_ac = local_94;
    iStack_b0 = param_1;
    pcStack_b4 = (char *)0x9b2c58;
    FUN_0083e8f0();
    iStack_b0 = 0x9b2c6b;
    pcStack_ac = auStack_c8;
    iStack_b0 = FUN_008854f0();
    pcStack_b4 = local_80;
    uStack_bc = 0x9b2c77;
    uStack_b8 = uVar2;
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    pcStack_ac = (char *)0x9b2c95;
    _free(local_64);
    if (7 < local_68) {
                    // WARNING: Subroutine does not return
      pcStack_ac = &UNK_009b2ca9;
      FUN_00a3f6a1();
    }
    local_68 = 7;
    local_6c = 0;
    local_7c = local_7c & 0xffff0000;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  ExceptionList = local_c;
  return;
}



void FUN_009b2cf0(undefined4 param_1,int param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined auStack_c8 [12];
  undefined4 uStack_bc;
  undefined4 uStack_b8;
  char *pcStack_b4;
  int iStack_b0;
  char *pcStack_ac;
  undefined local_94 [20];
  undefined local_80 [4];
  uint local_7c;
  undefined4 local_6c;
  uint local_68;
  void *local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be515b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d25fa0);
  cVar1 = FUN_00846b30(7);
  if (cVar1 != '\0') {
    pcStack_ac = (char *)0x9b2d4d;
    FUN_0081c0f1();
    local_4 = 0;
    pcStack_ac = (char *)0x9b2d66;
    FUN_004325b6();
    pcStack_ac = "wxLogRelease";
    iStack_b0 = 0x210;
    pcStack_b4 = "..\\..\\src\\msw\\ole\\oleutils.cpp";
    uStack_b8 = 7;
    local_4._0_1_ = 1;
    uStack_bc = 0x9b2d8d;
    uVar2 = FUN_008423d0();
    pcStack_ac = local_94;
    iStack_b0 = param_2 + -1;
    local_4._0_1_ = 2;
    pcStack_b4 = (char *)0x9b2db0;
    FUN_00840d00();
    pcStack_ac = local_94;
    iStack_b0 = param_1;
    pcStack_b4 = (char *)0x9b2dc8;
    FUN_0083e8f0();
    iStack_b0 = 0x9b2ddb;
    pcStack_ac = auStack_c8;
    iStack_b0 = FUN_008854f0();
    pcStack_b4 = local_80;
    uStack_bc = 0x9b2de7;
    uStack_b8 = uVar2;
    FUN_0084d410();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00842440();
    pcStack_ac = (char *)0x9b2e05;
    _free(local_64);
    if (7 < local_68) {
                    // WARNING: Subroutine does not return
      pcStack_ac = &UNK_009b2e19;
      FUN_00a3f6a1();
    }
    local_68 = 7;
    local_6c = 0;
    local_7c = local_7c & 0xffff0000;
    local_4 = 0xffffffff;
    FUN_0081b5bc();
  }
  ExceptionList = local_c;
  return;
}



undefined ** FUN_009b2e60(void)

{
  return &PTR_u_wxTreeCtrl_0323c53c;
}



undefined ** FUN_009b2e70(void)

{
  return &PTR_u_wxTreeEvent_0323c554;
}



void __fastcall FUN_009b2e80(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf0168;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxTreeCtrlBase::vftable;
  local_4 = 0;
  if ((*(char *)(param_1 + 0x67) != '\0') && ((int *)param_1[0x65] != (int *)0x0)) {
    (**(code **)(*(int *)param_1[0x65] + 4))(1,uVar1);
  }
  if ((*(char *)((int)param_1 + 0x19d) != '\0') && ((int *)param_1[0x66] != (int *)0x0)) {
    (**(code **)(*(int *)param_1[0x66] + 4))(1);
  }
  local_4 = 0xffffffff;
  FUN_0044cd6b();
  ExceptionList = local_c;
  return;
}



void FUN_009b2f10(int *param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  int unaff_EBX;
  int *unaff_retaddr;
  undefined *puStack_30;
  int *piStack_2c;
  undefined4 uStack_28;
  int iStack_18;
  int iStack_14;
  int local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  uStack_28 = 1;
  piStack_2c = &local_10;
  puStack_30 = &stack0x00000008;
  local_10 = 0;
  local_c = 0;
  local_8 = 0;
  local_4 = 0;
  cVar2 = (**(code **)(*param_1 + 0x448))();
  if (cVar2 != '\0') {
    (**(code **)(*param_1 + 0x1b0))(4);
    iVar3 = (**(code **)(*param_1 + 0x1b0))(8);
    iVar1 = iStack_14 + -1 + unaff_EBX;
    iVar3 = local_10 + -1 + iStack_18 + iVar3;
    if (*unaff_retaddr < iVar1) {
      *unaff_retaddr = iVar1;
    }
    if (unaff_retaddr[1] < iVar3) {
      unaff_retaddr[1] = iVar3;
    }
  }
  (**(code **)(*param_1 + 0x3dc))(&local_8,&local_4,&stack0xffffffdc);
  if (iStack_14 != 0) {
    do {
      FUN_009b2f10(param_1,iStack_14,unaff_retaddr);
      piVar4 = (int *)(**(code **)(*param_1 + 0x3e0))(&piStack_2c,&local_10,&puStack_30);
      iStack_14 = *piVar4;
    } while (iStack_14 != 0);
  }
  return;
}



int * __thiscall FUN_009b3000(int *param_1_00,int *param_1)

{
  int *piVar1;
  char cVar2;
  int *piVar3;
  int unaff_EBX;
  int unaff_ESI;
  int unaff_retaddr;
  undefined4 *puStack_28;
  int iStack_18;
  int iStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  piVar1 = param_1;
  *param_1 = 0;
  param_1[1] = 0;
  puStack_28 = &param_1;
  if (*(char *)(param_1_00 + 0x69) == '\0') {
    (**(code **)(*param_1_00 + 0x3c0))();
    if (unaff_retaddr != 0) {
      FUN_009b2f10(param_1_00,unaff_retaddr,piVar1);
    }
  }
  else {
    (**(code **)(*param_1_00 + 0x3c0))();
    if (unaff_retaddr != 0) {
      do {
        iStack_14 = 0;
        uStack_10 = 0;
        uStack_c = 0;
        uStack_8 = 0;
        cVar2 = (**(code **)(*param_1_00 + 0x448))(&stack0x00000000,&iStack_14,1);
        if (cVar2 != '\0') {
          if (*piVar1 < iStack_18 + unaff_ESI) {
            *piVar1 = iStack_18 + unaff_ESI;
          }
          if (piVar1[1] < unaff_EBX + iStack_14) {
            piVar1[1] = unaff_EBX + iStack_14;
          }
        }
        piVar3 = (int *)(**(code **)(*param_1_00 + 0x3e4))(&puStack_28,&uStack_c);
      } while (*piVar3 != 0);
    }
  }
  if ((*piVar1 != 0) && (piVar1[1] != 0)) {
    piVar3 = (int *)(**(code **)(*param_1_00 + 0xc0))(&stack0xffffffe4);
    *piVar1 = *piVar1 + *piVar3;
    piVar1[1] = piVar1[1] + piVar3[1];
    param_1_00[0x4c] = *piVar1;
    param_1_00[0x4d] = piVar1[1];
    return piVar1;
  }
  piVar3 = (int *)FUN_00936480(&stack0xffffffe4);
  *piVar1 = *piVar3;
  piVar1[1] = piVar3[1];
  return piVar1;
}



void __thiscall FUN_009b3120(int *param_1,uint param_2)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  
  iVar3 = (**(code **)(*param_1 + 0x438))();
  uVar2 = param_2;
  if (iVar3 != 0) {
    piVar1 = (int *)(param_2 + 0x34);
    param_2 = param_2 & 0xffffff00;
    if (*piVar1 != 0xd) {
      if (*piVar1 != 0x1b) goto LAB_009b3173;
      param_2 = CONCAT31(SUB43(uVar2,1),1);
    }
    iVar3 = *param_1;
    uVar4 = (**(code **)(iVar3 + 0x3c4))(&param_2,param_2);
    (**(code **)(iVar3 + 0x43c))(uVar4);
    return;
  }
LAB_009b3173:
  *(undefined *)(uVar2 + 0x24) = 1;
  return;
}



int __thiscall FUN_009b3180(int param_1_00,int param_1)

{
  undefined *puVar1;
  undefined *puVar2;
  
  if (param_1 != param_1_00) {
    FUN_00845ac0(param_1);
    if (param_1 == 0) {
      puVar2 = (undefined *)0x0;
    }
    else {
      puVar2 = (undefined *)(param_1 + 0x28);
    }
    if (param_1_00 == 0) {
      puVar1 = (undefined *)0x0;
    }
    else {
      puVar1 = (undefined *)(param_1_00 + 0x28);
    }
    *puVar1 = *puVar2;
    *(undefined4 *)(param_1_00 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);
    *(undefined4 *)(param_1_00 + 0x30) = *(undefined4 *)(param_1 + 0x30);
    *(undefined4 *)(param_1_00 + 0x34) = *(undefined4 *)(param_1 + 0x34);
    *(undefined4 *)(param_1_00 + 0x3c) = *(undefined4 *)(param_1 + 0x3c);
    *(undefined4 *)(param_1_00 + 0x40) = *(undefined4 *)(param_1 + 0x40);
    *(undefined2 *)(param_1_00 + 0x38) = *(undefined2 *)(param_1 + 0x38);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_009b31e0(undefined4 param_1_00,byte param_1)

{
  FUN_009b2e80();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_009b3200(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  uint uStack_4c;
  void *pvStack_48;
  undefined4 uStack_3c;
  undefined local_30 [8];
  uint uStack_28;
  void *pvStack_24;
  void *pvStack_1c;
  undefined uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be5190;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  uVar2 = (**(code **)(*param_1_00 + 0x36c))(local_30,param_2,uVar1);
  local_c = (void *)0x0;
  (**(code **)(*param_1_00 + 0x36c))(&stack0xffffffa4,uStack_4);
  uStack_14 = 1;
  uVar2 = FUN_00850760(uVar2);
  _free(pvStack_48);
  if (7 < uStack_4c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uVar1);
  }
  _free(pvStack_24);
  if (7 < uStack_28) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_3c);
  }
  ExceptionList = pvStack_1c;
  return uVar2;
}



undefined4 * __thiscall
FUN_009b32e0(undefined4 *param_1_00,undefined4 param_1,int *param_2,int *param_3)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be51d1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_0092bd60(param_1,param_2[0x10]);
  *(undefined *)(param_1_00 + 0x17) = 1;
  *param_1_00 = wxTreeEvent::vftable;
  local_4 = 0;
  FUN_0092bbc0(DAT_032bd44c);
  param_1_00[0x2a] = *param_3;
  param_1_00[0x2b] = 0;
  param_1_00[0x2c] = 0;
  param_1_00[0x2d] = 0;
  param_1_00[0x34] = 7;
  param_1_00[0x33] = 0;
  *(undefined2 *)(param_1_00 + 0x2f) = 0;
  param_1_00[0x35] = 0;
  *(undefined *)(param_1_00 + 0x37) = 0;
  param_1_00[2] = param_2;
  local_4 = CONCAT31(local_4._1_3_,2);
  if (*param_3 != 0) {
    uVar2 = (**(code **)(*param_2 + 0x374))(param_3,uVar1);
    param_1_00[0x16] = uVar2;
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009b33c0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5308;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  _free((void *)param_1[0x35]);
  if (7 < (uint)param_1[0x34]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x2f]);
  }
  param_1[0x34] = 7;
  param_1[0x33] = 0;
  *(undefined2 *)(param_1 + 0x2f) = 0;
  param_1[0x18] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4 = 0xffffffff;
  _free((void *)param_1[0x11]);
  if (7 < (uint)param_1[0x10]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xb]);
  }
  param_1[0x10] = 7;
  param_1[0xf] = 0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850(uVar1);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_009b34a0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be51f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0092bd60(param_1,param_2);
  *(undefined *)(param_1_00 + 0x17) = 1;
  *param_1_00 = wxTreeEvent::vftable;
  local_4 = 0;
  FUN_0092bbc0(DAT_032bd44c);
  param_1_00[0x2a] = 0;
  param_1_00[0x2c] = 0;
  param_1_00[0x2d] = 0;
  param_1_00[0x34] = 7;
  param_1_00[0x33] = 0;
  *(undefined2 *)(param_1_00 + 0x2f) = 0;
  param_1_00[0x35] = 0;
  param_1_00[0x2b] = 0;
  *(undefined *)(param_1_00 + 0x37) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __fastcall FUN_009b3550(undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5228;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044ced6(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  *param_1 = wxTreeCtrlBase::vftable;
  param_1[0x66] = 0;
  param_1[0x65] = 0;
  *(undefined *)((int)param_1 + 0x19d) = 0;
  *(undefined *)(param_1 + 0x67) = 0;
  param_1[0x68] = 0x12;
  *(undefined *)(param_1 + 0x69) = 1;
  uVar1 = DAT_032bfe68;
  local_4 = 0;
  puVar2 = (undefined4 *)operator_new(0x10);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = wxObjectEventFunctor::vftable;
    puVar2[1] = 0;
    puVar2[2] = FUN_009b3120;
    puVar2[3] = 0;
  }
  FUN_008461a0(0xffffffff,0xffffffff,uVar1,puVar2,0);
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __fastcall FUN_009b3610(undefined4 *param_1)

{
  size_t _Count;
  void *pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5266;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009b3550(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  *param_1 = wxTreeCtrl::vftable;
  local_4 = 0;
  param_1[0x6b] = 0;
  _Count = FUN_00893ca0(100);
  param_1[0x6d] = _Count;
  param_1[0x6e] = 0;
  pvVar1 = _calloc(_Count,4);
  param_1[0x6c] = pvVar1;
  param_1[0x73] = 0;
  param_1[0x74] = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  param_1[0x75] = 0;
  param_1[0x76] = 0;
  FUN_009dab20();
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_009b36c0(undefined4 param_1_00,byte param_1)

{
  FUN_009df830();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1e4);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009b3610(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_009b3780(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xe0);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009b34a0(DAT_032bd44c,0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_009b37f0(undefined4 param_1_00,byte param_1)

{
  FUN_009b33c0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009b3810(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be52b1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0048a2df(param_1);
  *param_1_00 = wxNotifyEvent::vftable;
  *(undefined *)(param_1_00 + 0x17) = *(undefined *)(param_1 + 0x5c);
  *param_1_00 = wxTreeEvent::vftable;
  local_4 = 0;
  FUN_0092bbc0(DAT_032bd44c);
  param_1_00[0x2a] = 0;
  param_1_00[0x2b] = 0;
  param_1_00[0x2c] = 0;
  param_1_00[0x2d] = 0;
  param_1_00[0x34] = 7;
  param_1_00[0x33] = 0;
  *(undefined2 *)(param_1_00 + 0x2f) = 0;
  param_1_00[0x35] = 0;
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_009b3180(param_1 + 0x60);
  param_1_00[0x2a] = *(undefined4 *)(param_1 + 0xa8);
  param_1_00[0x2b] = *(undefined4 *)(param_1 + 0xac);
  param_1_00[0x2c] = *(undefined4 *)(param_1 + 0xb0);
  param_1_00[0x2d] = *(undefined4 *)(param_1 + 0xb4);
  if (param_1_00 + 0x2e != (undefined4 *)(param_1 + 0xb8)) {
    FID_conflict_assign((undefined4 *)(param_1 + 0xb8),0,0xffffffff);
  }
  *(undefined *)(param_1_00 + 0x37) = *(undefined *)(param_1 + 0xdc);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_009b3920(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xe0);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009b3810(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined ** FUN_009b3990(void)

{
  return &PTR_u_wxListCtrl_0323c5c0;
}



undefined ** FUN_009b39a0(void)

{
  return &PTR_u_wxListView_0323c5d8;
}



undefined ** FUN_009b39b0(void)

{
  return &PTR_u_wxListItem_0323c5f0;
}



undefined ** FUN_009b39c0(void)

{
  return &PTR_u_wxListEvent_0323c608;
}



void __fastcall FUN_009b39d0(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be52e3;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxListItem::vftable;
  iVar1 = param_1[0x14];
  local_4 = 1;
  if (iVar1 != 0) {
    FUN_009dab90(uVar2);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  _free((void *)param_1[0xe]);
  if (7 < (uint)param_1[0xd]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[8]);
  }
  param_1[0xd] = 7;
  param_1[0xc] = 0;
  *(undefined2 *)(param_1 + 8) = 0;
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009b3a80(undefined4 param_1_00,byte param_1)

{
  FUN_009b39d0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009b3aa0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_0092bd60(param_1,param_2);
  *(undefined *)(param_1_00 + 0x17) = 1;
  *param_1_00 = wxListEvent::vftable;
  param_1_00[0x18] = 0xffffffff;
  param_1_00[0x19] = 0xffffffff;
  param_1_00[0x1a] = 0xffffffff;
  param_1_00[0x1b] = 0xffffffff;
  param_1_00[0x1c] = 0;
  param_1_00[0x1d] = 0;
  param_1_00[0x1f] = 0;
  param_1_00[0x1e] = wxListItem::vftable;
  param_1_00[0x2a] = 0;
  param_1_00[0x2b] = 7;
  *(undefined2 *)(param_1_00 + 0x26) = 0;
  param_1_00[0x2c] = 0;
  param_1_00[0x20] = 0;
  param_1_00[0x21] = 0;
  param_1_00[0x22] = 0;
  param_1_00[0x23] = 0;
  param_1_00[0x24] = 0;
  param_1_00[0x2f] = 0;
  param_1_00[0x31] = 0;
  param_1_00[0x32] = 0;
  param_1_00[0x2e] = 0xffffffff;
  param_1_00[0x30] = 2;
  *(undefined *)(param_1_00 + 0x33) = 0;
  return param_1_00;
}



void __thiscall FUN_009b3b50(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  *param_1_00 = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 4);
  param_1_00[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1_00 = wxColour::vftable;
  param_1_00[2] = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 3) = *(undefined *)(param_1 + 0xc);
  *(undefined *)((int)param_1_00 + 0xd) = *(undefined *)(param_1 + 0xd);
  *(undefined *)((int)param_1_00 + 0xe) = *(undefined *)(param_1 + 0xe);
  *(undefined *)((int)param_1_00 + 0xf) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 4) = *(undefined *)(param_1 + 0x10);
  param_1_00[5] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x18);
  param_1_00[6] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[5] = wxColour::vftable;
  param_1_00[7] = *(undefined4 *)(param_1 + 0x1c);
  *(undefined *)(param_1_00 + 8) = *(undefined *)(param_1 + 0x20);
  *(undefined *)((int)param_1_00 + 0x21) = *(undefined *)(param_1 + 0x21);
  *(undefined *)((int)param_1_00 + 0x22) = *(undefined *)(param_1 + 0x22);
  *(undefined *)((int)param_1_00 + 0x23) = *(undefined *)(param_1 + 0x23);
  *(undefined *)(param_1_00 + 9) = *(undefined *)(param_1 + 0x24);
  param_1_00[10] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x2c);
  param_1_00[0xb] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[10] = wxFont::vftable;
  return;
}



void __fastcall FUN_009b3c00(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5308;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_009b39d0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  _free((void *)param_1[0x11]);
  if (7 < (uint)param_1[0x10]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xb]);
  }
  param_1[0x10] = 7;
  param_1[0xf] = 0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_009b3c90(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdec06;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044ced6(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1 = wxListCtrl::vftable;
  param_1[0x6c] = 0;
  param_1[0x6d] = 0;
  param_1[0x6e] = 0;
  local_4 = 1;
  FUN_009c5be0();
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_009b3d00(undefined4 param_1_00,byte param_1)

{
  FUN_009c6d60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1c0);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009b3c90(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * FUN_009b3d90(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x1c0);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_009b3c90(uVar1);
    *puVar2 = wxListView::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 FUN_009b3e50(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xd0);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009b3aa0(DAT_032bd44c,0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_009b3ec0(undefined4 param_1_00,byte param_1)

{
  FUN_009b3c00();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009b3ee0(undefined4 *param_1_00,int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5343;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxListItem::vftable;
  param_1_00[2] = *(undefined4 *)(param_1 + 8);
  param_1_00[3] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[4] = *(undefined4 *)(param_1 + 0x10);
  param_1_00[5] = *(undefined4 *)(param_1 + 0x14);
  param_1_00[6] = *(undefined4 *)(param_1 + 0x18);
  param_1_00[0xd] = 7;
  param_1_00[0xc] = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 8) = 0;
  FID_conflict_assign(param_1 + 0x1c,0,0xffffffff);
  param_1_00[0xe] = 0;
  param_1_00[0x10] = *(undefined4 *)(param_1 + 0x40);
  param_1_00[0x11] = *(undefined4 *)(param_1 + 0x44);
  param_1_00[0x12] = *(undefined4 *)(param_1 + 0x48);
  param_1_00[0x13] = *(undefined4 *)(param_1 + 0x4c);
  param_1_00[0x14] = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  if (*(int *)(param_1 + 0x50) != 0) {
    pvVar1 = operator_new(0x30);
    if (pvVar1 == (void *)0x0) {
      uVar2 = 0;
    }
    else {
      uVar2 = FUN_009b3b50(*(undefined4 *)(param_1 + 0x50));
    }
    param_1_00[0x14] = uVar2;
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_009b3fc0(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be51f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0048a2df(param_1);
  *param_1_00 = wxNotifyEvent::vftable;
  *(undefined *)(param_1_00 + 0x17) = *(undefined *)(param_1 + 0x5c);
  *param_1_00 = wxListEvent::vftable;
  param_1_00[0x18] = *(undefined4 *)(param_1 + 0x60);
  param_1_00[0x19] = *(undefined4 *)(param_1 + 100);
  param_1_00[0x1a] = *(undefined4 *)(param_1 + 0x68);
  param_1_00[0x1b] = *(undefined4 *)(param_1 + 0x6c);
  param_1_00[0x1c] = *(undefined4 *)(param_1 + 0x70);
  local_4 = 0;
  param_1_00[0x1d] = *(undefined4 *)(param_1 + 0x74);
  FUN_009b3ee0(param_1 + 0x78);
  *(undefined *)(param_1_00 + 0x33) = *(undefined *)(param_1 + 0xcc);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_009b4060(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xd0);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009b3fc0(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_009b40d0(undefined4 *param_1)

{
  *param_1 = wxMarkupParserOutput::vftable;
  return;
}



undefined4 * __thiscall FUN_009b40e0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxMarkupParserOutput::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_009b4100(void)

{
  return;
}



void __fastcall FUN_009b4180(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x009b4182. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 8))();
  return;
}



void __fastcall FUN_009b41c0(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x009b41c2. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0xc))();
  return;
}



int __fastcall FUN_009b41f0(uint *param_1)

{
  uint uVar1;
  
  uVar1 = *param_1 - 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1 <= uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                 "wxVector<struct wxMarkupParser::TagAndAttrs>::at","idx < m_size",0);
  }
  return uVar1 * 0xa8 + param_1[2];
}



undefined2 __thiscall FUN_009b4240(int *param_1_00,int *param_1)

{
  short sVar1;
  int iVar2;
  int iVar3;
  
  if (*param_1 != -4) {
    if (*param_1 == 0) {
      FUN_00a3fb10();
    }
    iVar2 = *param_1;
    if (*(uint *)(iVar2 + 0x18) < 8) {
      iVar3 = iVar2 + 4;
    }
    else {
      iVar3 = *(int *)(iVar2 + 4);
    }
    if ((uint)(iVar3 + *(int *)(iVar2 + 0x14) * 2) <= (uint)param_1[1]) {
      FUN_00a3fb10();
    }
  }
  sVar1 = *(short *)param_1[1];
  if (*param_1_00 != -4) {
    if (*param_1_00 == 0) {
      FUN_00a3fb10();
    }
    iVar2 = *param_1_00;
    if (*(uint *)(iVar2 + 0x18) < 8) {
      iVar3 = iVar2 + 4;
    }
    else {
      iVar3 = *(int *)(iVar2 + 4);
    }
    if ((uint)(iVar3 + *(int *)(iVar2 + 0x14) * 2) <= (uint)param_1_00[1]) {
      FUN_00a3fb10();
    }
  }
  return CONCAT11((char)((ushort)*(short *)param_1_00[1] >> 8),*(short *)param_1_00[1] != sVar1);
}



void __fastcall FUN_009b42d0(int param_1)

{
  FUN_008a6d30();
  _free(*(void **)(param_1 + 0x1c));
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  return;
}



void __fastcall FUN_009b4310(undefined4 *param_1)

{
  _free((void *)param_1[8]);
  if (7 < (uint)param_1[7]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[2]);
  }
  param_1[7] = 7;
  param_1[6] = 0;
  *(undefined2 *)(param_1 + 2) = 0;
  *param_1 = wxMarkupParserOutput::vftable;
  return;
}



undefined4 * __thiscall FUN_009b4350(undefined4 *param_1_00,byte param_1)

{
  _free((void *)param_1_00[8]);
  if (7 < (uint)param_1_00[7]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[2]);
  }
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  *param_1_00 = wxMarkupParserOutput::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_009b43b0(uint *param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  
  uVar1 = 0;
  if (*param_1 != 0) {
    iVar2 = 0;
    do {
      iVar3 = param_1[2] + iVar2;
      FUN_008a6d30();
      _free(*(void **)(iVar3 + 0x1c));
      if (7 < *(uint *)(iVar3 + 0x18)) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(iVar3 + 4));
      }
      *(undefined4 *)(iVar3 + 0x18) = 7;
      *(undefined4 *)(iVar3 + 0x14) = 0;
      uVar1 = uVar1 + 1;
      *(undefined2 *)(iVar3 + 4) = 0;
      iVar2 = iVar2 + 0xa8;
    } while (uVar1 < *param_1);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[2]);
}



int __thiscall FUN_009b4430(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x3c) = 7;
  *(undefined4 *)(param_1_00 + 0x38) = 0;
  *(undefined2 *)(param_1_00 + 0x28) = 0;
  *(undefined4 *)(param_1_00 + 0x40) = 0;
  *(undefined4 *)(param_1_00 + 0x60) = 7;
  *(undefined4 *)(param_1_00 + 0x5c) = 0;
  *(undefined2 *)(param_1_00 + 0x4c) = 0;
  *(undefined4 *)(param_1_00 + 100) = 0;
  *(undefined4 *)(param_1_00 + 0x84) = 7;
  *(undefined4 *)(param_1_00 + 0x80) = 0;
  *(undefined2 *)(param_1_00 + 0x70) = 0;
  *(undefined4 *)(param_1_00 + 0x88) = 0;
  *(undefined4 *)(param_1_00 + 0x90) = 0;
  *(undefined4 *)(param_1_00 + 0xa4) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0xa0) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x9c) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x98) = 0xffffffff;
  return param_1_00;
}



void FUN_009b44c0(int param_1,undefined4 param_2,int *param_3,int param_4,int param_5)

{
  ushort uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  undefined4 local_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bc6d58;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  local_38 = 0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  while( true ) {
    iVar2 = *param_3;
    if ((iVar2 != -4) && ((iVar2 == 0 || (iVar2 != param_4)))) {
      FUN_00a3fb10(uVar3);
    }
    if (param_3[1] == param_5) {
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      *(undefined4 *)(param_1 + 0x1c) = 0;
      goto LAB_009b4646;
    }
    if (*param_3 != -4) {
      if (*param_3 == 0) {
        FUN_00a3fb10(uVar3);
      }
      iVar2 = *param_3;
      if (*(uint *)(iVar2 + 0x18) < 8) {
        iVar5 = iVar2 + 4;
      }
      else {
        iVar5 = *(int *)(iVar2 + 4);
      }
      if ((uint)(iVar5 + *(int *)(iVar2 + 0x14) * 2) <= (uint)param_3[1]) {
        FUN_00a3fb10(uVar3);
      }
    }
    uVar1 = *(ushort *)param_3[1];
    if ((byte)param_2 < 0x80) {
      uVar4 = (uint)(char)(byte)param_2;
    }
    else {
      uVar4 = FUN_00884ad0(param_2);
    }
    if (uVar1 == uVar4) break;
    if (*param_3 != -4) {
      if (*param_3 == 0) {
        FUN_00a3fb10(uVar3);
      }
      iVar2 = *param_3;
      if (*(uint *)(iVar2 + 0x18) < 8) {
        iVar5 = iVar2 + 4;
      }
      else {
        iVar5 = *(int *)(iVar2 + 4);
      }
      if ((uint)(iVar5 + *(int *)(iVar2 + 0x14) * 2) <= (uint)param_3[1]) {
        FUN_00a3fb10();
      }
    }
    FID_conflict_append(1,*(undefined2 *)param_3[1]);
    if (*param_3 != -4) {
      if (*param_3 == 0) {
        FUN_00a3fb10();
      }
      iVar2 = *param_3;
      if (*(uint *)(iVar2 + 0x18) < 8) {
        iVar5 = iVar2 + 4;
      }
      else {
        iVar5 = *(int *)(iVar2 + 4);
      }
      if ((uint)(iVar5 + *(int *)(iVar2 + 0x14) * 2) <= (uint)param_3[1]) {
        FUN_00a3fb10();
      }
    }
    param_3[1] = param_3[1] + 2;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(local_34,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
LAB_009b4646:
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_009b4690(int param_1)

{
  short *psVar1;
  bool bVar2;
  undefined uVar3;
  char cVar4;
  int iVar5;
  undefined4 *****pppppuVar6;
  int *piVar7;
  int iVar8;
  undefined **ppuVar9;
  undefined4 *****pppppuVar10;
  undefined *puVar11;
  int param_7;
  uint param_8;
  void *param_9;
  int param_11;
  undefined auStack_194 [4];
  undefined2 local_190;
  undefined4 local_180;
  undefined **local_17c;
  undefined **local_178;
  undefined **local_15c;
  int local_158;
  undefined ***local_154;
  undefined *local_150;
  undefined *local_14c [9];
  undefined *local_128;
  undefined **local_124;
  undefined4 *****local_120;
  undefined *local_11c [4];
  undefined *local_10c;
  undefined4 *****local_108 [4];
  uint local_f8;
  uint local_f4;
  void *local_f0;
  undefined *local_e8;
  uint local_e4;
  undefined4 local_d4;
  uint local_d0;
  void *local_cc;
  undefined local_c4 [4];
  uint local_c0;
  undefined4 local_b0;
  uint local_ac;
  void *local_a8;
  undefined *local_a0;
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be541b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_15c;
  ExceptionList = &local_c;
  local_158 = param_1;
  local_15c = (undefined **)0x0;
  local_4 = 0;
  local_178 = (undefined **)0x9b46fb;
  FUN_0043c211();
  local_4 = CONCAT31(local_4._1_3_,1);
  local_15c = (undefined **)0x1;
  local_178 = (undefined **)0x9b471a;
  iVar5 = FUN_00850470();
  if ((iVar5 == 0) || (param_7 == 0)) {
    bVar2 = false;
  }
  else {
    bVar2 = true;
  }
  local_4 = 0;
  local_178 = (undefined **)0x9b4741;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    local_178 = (undefined **)&UNK_009b475b;
    FUN_00a3f6a1();
  }
  if (bVar2) {
    local_178 = (undefined **)0x9b4774;
    FUN_0083fbe0();
    local_150 = auStack_194;
    local_17c = (undefined **)0x7;
    local_180 = 0;
    local_4._0_1_ = 2;
    local_190 = 0;
    FID_conflict_assign(param_11,0,0xffffffff);
    local_178 = (undefined **)0x0;
    FUN_0084ae90(local_158,local_14c);
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0081b5bc();
    local_178 = (undefined **)0x9b47d3;
    _free(param_9);
    if (7 < param_8) {
                    // WARNING: Subroutine does not return
      local_178 = (undefined **)&UNK_009b47f1;
      FUN_00a3f6a1();
    }
  }
  else {
    local_15c = (undefined **)(param_11 + 0x24);
    while (param_7 != 0) {
      local_64 = 7;
      local_68 = 0;
      local_78 = local_78 & 0xffff0000;
      local_60 = (void *)0x0;
      local_154 = &local_178;
      local_178 = (undefined **)0x20;
      local_17c = (undefined **)local_34;
      local_4._1_3_ = (uint3)((uint)local_4 >> 8);
      local_4._0_1_ = 3;
      local_180 = 0x9b4865;
      FUN_00852890();
      local_178 = (undefined **)0x0;
      local_17c = (undefined **)local_7c;
      local_4._0_1_ = 4;
      local_180 = 0x9b4884;
      FID_conflict_assign();
      local_ac = 7;
      local_b0 = 0;
      local_c0 = local_c0 & 0xffff0000;
      local_a8 = (void *)0x0;
      local_154 = &local_178;
      local_17c = (undefined **)local_58;
      local_4._0_1_ = 5;
      local_178 = (undefined **)0x3d;
      local_180 = 0x9b48d4;
      FUN_00852890();
      local_4._0_1_ = 6;
      local_178 = (undefined **)0x9b48f0;
      FUN_00863b70();
      local_4._0_1_ = 7;
      local_178 = (undefined **)0x9b4909;
      FUN_00863b70();
      local_4._0_1_ = 8;
      uVar3 = (undefined)local_4;
      local_4._0_1_ = 8;
      if (local_f8 < 2) {
LAB_009b527c:
        local_4._0_1_ = uVar3;
        local_178 = (undefined **)0x9b528a;
        FUN_0083fbe0();
        local_154 = (undefined ***)auStack_194;
        local_17c = (undefined **)0x7;
        local_180 = 0;
        local_190 = 0;
        local_4 = CONCAT31(local_4._1_3_,9);
        FID_conflict_assign(local_58,0,0xffffffff);
        local_178 = (undefined **)0x0;
LAB_009b5200:
        FUN_0084ae90(local_158,local_14c);
        local_4 = CONCAT31(local_4._1_3_,8);
        FUN_0081b5bc();
LAB_009b518a:
        FUN_0040159c();
        FUN_0040159c();
        FUN_0040159c();
        FUN_0040159c();
        FUN_0040159c();
        FUN_0040159c();
        goto LAB_009b50f7;
      }
      if (local_f4 < 8) {
        pppppuVar10 = local_108;
LAB_009b4935:
        pppppuVar6 = local_108[0];
        if (local_f4 < 8) {
          pppppuVar6 = local_108;
        }
        if (pppppuVar10 < pppppuVar6) goto LAB_009b4956;
        pppppuVar6 = local_108[0];
        if (local_f4 < 8) {
          pppppuVar6 = local_108;
        }
        if ((undefined4 *****)((int)pppppuVar6 + local_f8 * 2) < pppppuVar10) goto LAB_009b4956;
      }
      else {
        pppppuVar10 = local_108[0];
        if (local_108[0] != (undefined4 *****)0x0) goto LAB_009b4935;
LAB_009b4956:
        FUN_00a3fb10();
      }
      if (&local_10c != (undefined **)0xfffffffc) {
        pppppuVar6 = local_108[0];
        if (local_f4 < 8) {
          pppppuVar6 = local_108;
        }
        if (pppppuVar10 <= (undefined4 *****)((int)pppppuVar6 + local_f8 * 2)) {
          pppppuVar6 = local_108[0];
          if (local_f4 < 8) {
            pppppuVar6 = local_108;
          }
          if (pppppuVar6 <= pppppuVar10) goto LAB_009b4998;
        }
        FUN_00a3fb10();
      }
LAB_009b4998:
      local_178 = (undefined **)0x9b49ae;
      local_124 = &local_10c;
      local_120 = pppppuVar10;
      FUN_0081b3d8();
      local_178 = (undefined **)0x9b49b8;
      cVar4 = FUN_009b4240();
      uVar3 = (undefined)local_4;
      if (cVar4 != '\0') goto LAB_009b527c;
      if (local_f4 < 8) {
        pppppuVar10 = local_108;
LAB_009b49d7:
        pppppuVar6 = local_108[0];
        if (local_f4 < 8) {
          pppppuVar6 = local_108;
        }
        if (pppppuVar10 < pppppuVar6) goto LAB_009b49fc;
        pppppuVar6 = local_108[0];
        if (local_f4 < 8) {
          pppppuVar6 = local_108;
        }
        if ((undefined4 *****)((int)pppppuVar6 + local_f8 * 2) < pppppuVar10) goto LAB_009b49fc;
      }
      else {
        pppppuVar10 = local_108[0];
        if (local_108[0] != (undefined4 *****)0x0) goto LAB_009b49d7;
LAB_009b49fc:
        FUN_00a3fb10();
      }
      if (&stack0x00000000 != (undefined *)0x108) {
        pppppuVar6 = local_108[0];
        if (local_f4 < 8) {
          pppppuVar6 = local_108;
        }
        if ((undefined4 *****)((int)pppppuVar6 + local_f8 * 2) < pppppuVar10) {
LAB_009b4a37:
          FUN_00a3fb10();
        }
        else {
          pppppuVar6 = local_108[0];
          if (local_f4 < 8) {
            pppppuVar6 = local_108;
          }
          if (pppppuVar10 < pppppuVar6) goto LAB_009b4a37;
        }
        if (&stack0x00000000 != (undefined *)0x108) {
          pppppuVar6 = local_108[0];
          if (local_f4 < 8) {
            pppppuVar6 = local_108;
          }
          if ((undefined4 *****)((int)pppppuVar6 + local_f8 * 2) <= pppppuVar10) {
            FUN_00a3fb10();
          }
        }
      }
      if (*(short *)pppppuVar10 != 0x22) {
        local_178 = local_11c;
        local_17c = (undefined **)0x9b4a7d;
        piVar7 = (int *)FUN_0081b542();
        iVar5 = *piVar7;
        psVar1 = (short *)piVar7[1];
        if (iVar5 != -4) {
          if (iVar5 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar5 + 0x18) < 8) {
            iVar8 = iVar5 + 4;
          }
          else {
            iVar8 = *(int *)(iVar5 + 4);
          }
          if ((short *)(iVar8 + *(int *)(iVar5 + 0x14) * 2) <= psVar1) {
            FUN_00a3fb10();
          }
        }
        uVar3 = (undefined)local_4;
        if (*psVar1 != 0x27) goto LAB_009b527c;
      }
      local_178 = (undefined **)0x1;
      local_17c = &local_10c;
      local_180 = 0x9b4ae3;
      FID_conflict_assign();
      local_178 = &local_e8;
      local_17c = (undefined **)0x9b4af5;
      cVar4 = FUN_00855fb0();
      ppuVar9 = local_15c;
      if (cVar4 == '\0') {
        local_178 = &local_e8;
        local_17c = (undefined **)0x9b4b12;
        cVar4 = FUN_00855fb0();
        ppuVar9 = local_15c;
        if (cVar4 != '\0') goto LAB_009b4f4d;
        local_178 = &local_e8;
        local_17c = (undefined **)0x9b4b2f;
        cVar4 = FUN_00855fb0();
        ppuVar9 = local_15c;
        if (cVar4 != '\0') goto LAB_009b4f4d;
        local_178 = &local_e8;
        local_17c = (undefined **)0x9b4b4c;
        cVar4 = FUN_00855fb0();
        if (cVar4 != '\0') {
LAB_009b4f40:
          ppuVar9 = local_15c + 9;
          goto LAB_009b4f4d;
        }
        local_178 = &local_e8;
        local_17c = (undefined **)0x9b4b69;
        cVar4 = FUN_00855fb0();
        if (cVar4 != '\0') goto LAB_009b4f40;
        local_178 = &local_e8;
        local_17c = (undefined **)0x9b4b86;
        cVar4 = FUN_00855fb0();
        if (cVar4 != '\0') {
LAB_009b4f37:
          ppuVar9 = local_15c + 0x12;
          goto LAB_009b4f4d;
        }
        local_178 = &local_e8;
        local_17c = (undefined **)0x9b4ba3;
        cVar4 = FUN_00855fb0();
        if (cVar4 != '\0') goto LAB_009b4f37;
        local_178 = &local_e8;
        local_17c = (undefined **)0x9b4bc0;
        cVar4 = FUN_00855fb0();
        if (cVar4 != '\0') {
LAB_009b4e6d:
          local_178 = &local_10c;
          local_17c = (undefined **)0x9b4e7c;
          cVar4 = FUN_00855fb0();
          if (cVar4 == '\0') {
            local_178 = &local_10c;
            local_17c = (undefined **)0x9b4e96;
            cVar4 = FUN_00855fb0();
            if (cVar4 == '\0') {
              local_178 = &local_10c;
              local_17c = (undefined **)0x9b4eb0;
              cVar4 = FUN_00855fb0();
              if (cVar4 == '\0') {
                local_178 = &local_10c;
                local_17c = (undefined **)0x9b4ec6;
                cVar4 = FUN_00855fb0();
                if (cVar4 == '\0') {
                  local_178 = &local_10c;
                  local_17c = (undefined **)0x9b4edc;
                  cVar4 = FUN_00855fb0();
                  if (cVar4 == '\0') {
                    local_178 = &local_10c;
                    local_17c = (undefined **)0x9b4ef2;
                    cVar4 = FUN_00855fb0();
                    if (cVar4 == '\0') {
                      local_178 = &local_150;
                      local_17c = (undefined **)0x9b4f09;
                      cVar4 = FUN_00850a20();
                      if (cVar4 != '\0') {
                        local_15c[0x1d] = (undefined *)(uint)((undefined *)0x257 < local_150);
                        goto LAB_009b4f60;
                      }
                      local_178 = (undefined **)0x9b5236;
                      FUN_0083fbe0();
                      local_154 = (undefined ***)auStack_194;
                      local_4._0_1_ = 10;
                      FUN_004325a0(local_c4);
                      FUN_0084ae90(local_158,local_14c);
                      local_4 = CONCAT31(local_4._1_3_,8);
                      FUN_0081b5bc();
                      goto LAB_009b518a;
                    }
                  }
                }
                local_15c[0x1d] = (undefined *)0x1;
                goto LAB_009b4f60;
              }
            }
          }
          local_15c[0x1d] = (undefined *)0x0;
          goto LAB_009b4f60;
        }
        local_178 = &local_e8;
        local_17c = (undefined **)0x9b4bdd;
        cVar4 = FUN_00855fb0();
        if (cVar4 != '\0') goto LAB_009b4e6d;
        local_178 = &local_e8;
        local_17c = (undefined **)0x9b4bfa;
        cVar4 = FUN_00855fb0();
        if (cVar4 != '\0') {
LAB_009b4e0f:
          local_178 = &local_10c;
          local_17c = (undefined **)0x9b4e1e;
          cVar4 = FUN_00855fb0();
          if (cVar4 != '\0') {
            local_15c[0x1e] = (undefined *)0x0;
            goto LAB_009b4f60;
          }
          local_178 = &local_10c;
          local_17c = (undefined **)0x9b4e40;
          cVar4 = FUN_00855fb0();
          if (cVar4 != '\0') {
LAB_009b4e61:
            local_15c[0x1e] = (undefined *)0x1;
            goto LAB_009b4f60;
          }
          local_178 = &local_10c;
          local_17c = (undefined **)0x9b4e56;
          cVar4 = FUN_00855fb0();
          if (cVar4 != '\0') goto LAB_009b4e61;
          local_178 = (undefined **)0x9b51e2;
          FUN_0083fbe0();
          local_154 = (undefined ***)auStack_194;
          local_4 = CONCAT31(local_4._1_3_,0xb);
          FUN_004325a0(local_c4);
          goto LAB_009b5200;
        }
        local_178 = &local_e8;
        local_17c = (undefined **)0x9b4c17;
        cVar4 = FUN_00855fb0();
        if (cVar4 != '\0') goto LAB_009b4e0f;
        local_178 = &local_e8;
        local_17c = (undefined **)0x9b4c34;
        cVar4 = FUN_00855fb0();
        if (cVar4 == '\0') goto LAB_009b4f60;
        local_178 = &local_128;
        local_17c = (undefined **)0x9b4c4f;
        cVar4 = FUN_00850a20();
        if (cVar4 != '\0') {
          local_15c[0x1b] = (undefined *)0x3;
          local_15c[0x1c] = local_128;
          goto LAB_009b4f60;
        }
        local_178 = &local_10c;
        local_17c = (undefined **)0x9b4c79;
        cVar4 = FUN_00855fb0();
        if (cVar4 != '\0') {
LAB_009b4de3:
          ppuVar9 = local_15c;
          local_178 = &local_10c;
          local_15c[0x1b] = (undefined *)0x1;
          local_17c = (undefined **)0x9b4df9;
          cVar4 = FUN_00855fb0();
          ppuVar9[0x1c] = (undefined *)((uint)(cVar4 == '\0') * 2 + -1);
          goto LAB_009b4f60;
        }
        local_178 = &local_10c;
        local_17c = (undefined **)0x9b4c93;
        cVar4 = FUN_00855fb0();
        if (cVar4 != '\0') goto LAB_009b4de3;
        puVar11 = (undefined *)0x1;
        local_88 = 7;
        local_8c = 0;
        local_9c = local_9c & 0xffff0000;
        local_84 = (void *)0x0;
        local_4._0_1_ = 0xc;
        local_178 = (undefined **)0x9b4cd9;
        FUN_0043c211();
        local_178 = local_14c;
        local_4._0_1_ = 0xd;
        local_17c = (undefined **)0x9b4cf7;
        cVar4 = FUN_00852010();
        local_4._0_1_ = 0xc;
        FUN_0040159c();
        if (cVar4 == '\0') {
          local_178 = (undefined **)0x9b4d23;
          FUN_0043c211();
          local_178 = local_14c;
          local_4._0_1_ = 0xe;
          local_17c = (undefined **)0x9b4d41;
          cVar4 = FUN_00852010();
          local_4._0_1_ = 0xc;
          FUN_0040159c();
          if (cVar4 != '\0') {
            puVar11 = (undefined *)0x2;
            goto LAB_009b4d8a;
          }
          local_178 = &local_10c;
          local_17c = (undefined **)0x9b4d6e;
          cVar4 = FUN_00855fb0();
          if (cVar4 == '\0') {
            local_178 = (undefined **)0x9b4d8a;
            FUN_0043261a();
            goto LAB_009b4d8a;
          }
          puVar11 = (undefined *)0x0;
LAB_009b4dc4:
          local_15c[0x1b] = (undefined *)0x2;
          local_15c[0x1c] = puVar11;
          FUN_0040159c();
          goto LAB_009b4f60;
        }
        puVar11 = (undefined *)0x3;
LAB_009b4d8a:
        local_178 = &local_a0;
        local_17c = (undefined **)0x9b4d9c;
        cVar4 = FUN_00855fb0();
        if (cVar4 != '\0') {
          puVar11 = (undefined *)-(int)puVar11;
          goto LAB_009b4dc4;
        }
        local_178 = &local_a0;
        local_17c = (undefined **)0x9b4db9;
        cVar4 = FUN_008a4910();
        if (cVar4 == '\0') goto LAB_009b4dc4;
        local_178 = (undefined **)0x9b513d;
        FUN_0083fbe0();
        local_154 = (undefined ***)auStack_194;
        local_4._0_1_ = 0xf;
        FUN_004325a0(local_c4);
        FUN_0084ae90(local_158,local_14c);
        local_4 = CONCAT31(local_4._1_3_,0xc);
        FUN_0081b5bc();
        FUN_0040159c();
        goto LAB_009b518a;
      }
LAB_009b4f4d:
      if (ppuVar9 != &local_10c) {
        local_178 = (undefined **)0x0;
        local_180 = 0x9b4f60;
        local_17c = &local_10c;
        FID_conflict_assign();
      }
LAB_009b4f60:
      local_178 = (undefined **)0x9b4f6d;
      _free(local_f0);
      if (7 < local_f4) {
                    // WARNING: Subroutine does not return
        local_178 = (undefined **)&UNK_009b4f85;
        FUN_00a3f6a1();
      }
      local_f4 = 7;
      local_f8 = 0;
      local_108[0] = (undefined4 *****)((uint)local_108[0] & 0xffff0000);
      local_178 = (undefined **)0x9b4fac;
      _free(local_cc);
      if (7 < local_d0) {
                    // WARNING: Subroutine does not return
        local_178 = (undefined **)&UNK_009b4fc5;
        FUN_00a3f6a1();
      }
      local_d0 = 7;
      local_d4 = 0;
      local_e4 = local_e4 & 0xffff0000;
      local_178 = (undefined **)0x9b4fed;
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        local_178 = (undefined **)&UNK_009b5006;
        FUN_00a3f6a1();
      }
      local_40 = 7;
      local_44 = 0;
      local_54 = local_54 & 0xffff0000;
      local_178 = (undefined **)0x9b502e;
      _free(local_a8);
      if (7 < local_ac) {
                    // WARNING: Subroutine does not return
        local_178 = (undefined **)&UNK_009b5047;
        FUN_00a3f6a1();
      }
      local_ac = 7;
      local_b0 = 0;
      local_c0 = local_c0 & 0xffff0000;
      local_178 = (undefined **)0x9b506f;
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        local_178 = (undefined **)&UNK_009b5088;
        FUN_00a3f6a1();
      }
      local_1c = 7;
      local_20 = 0;
      local_30 = local_30 & 0xffff0000;
      local_4 = (uint)local_4._1_3_ << 8;
      local_178 = (undefined **)0x9b50b7;
      _free(local_60);
      param_1 = local_158;
      if (7 < local_64) {
                    // WARNING: Subroutine does not return
        local_178 = (undefined **)&UNK_009b50d0;
        FUN_00a3f6a1();
      }
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    *(undefined4 *)(param_1 + 0x1c) = 0;
LAB_009b50f7:
    FUN_0040159c();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_009b52d0(int **param_1_00,int param_1,char param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  undefined **ppuVar5;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5460;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  FUN_0043c211(&DAT_00d7480c);
  uVar4 = 0;
  local_4 = 0;
  iVar2 = FUN_00850470(local_30);
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (iVar2 == 0) {
    if (param_2 == '\0') {
      (**(code **)(**param_1_00 + 0x44))(param_1 + 0x24,uVar1);
      uVar3 = 1;
    }
    else {
      (**(code **)(**param_1_00 + 0x40))();
      uVar3 = 1;
    }
  }
  else {
    ppuVar5 = &PTR_DAT_00d74818;
    do {
      FUN_0043c211(*ppuVar5);
      local_4 = 1;
      iVar2 = FUN_00850470(local_54);
      local_4 = 0xffffffff;
      _free(local_38);
      if (7 < local_3c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_50);
      }
      local_3c = 7;
      local_40 = 0;
      local_50 = local_50 & 0xffff0000;
      if (iVar2 == 0) {
        if (param_2 != '\0') {
          (*(code *)ppuVar5[1])();
          ExceptionList = local_c;
          return 1;
        }
        (*(code *)ppuVar5[2])();
        ExceptionList = local_c;
        return 1;
      }
      uVar4 = uVar4 + 0xc;
      ppuVar5 = ppuVar5 + 3;
    } while (uVar4 < 0x54);
    uVar3 = 0;
  }
  ExceptionList = local_c;
  return uVar3;
}



int __thiscall FUN_009b5430(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5493;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x3c) = 7;
  *(undefined4 *)(param_1_00 + 0x38) = 0;
  *(undefined2 *)(param_1_00 + 0x28) = 0;
  local_4 = 0;
  FID_conflict_assign(param_1 + 0x24,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x40) = 0;
  *(undefined4 *)(param_1_00 + 0x60) = 7;
  *(undefined4 *)(param_1_00 + 0x5c) = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  *(undefined2 *)(param_1_00 + 0x4c) = 0;
  FID_conflict_assign(param_1 + 0x48,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 100) = 0;
  *(undefined4 *)(param_1_00 + 0x6c) = *(undefined4 *)(param_1 + 0x6c);
  *(undefined4 *)(param_1_00 + 0x70) = *(undefined4 *)(param_1 + 0x70);
  *(undefined4 *)(param_1_00 + 0x74) = *(undefined4 *)(param_1 + 0x74);
  *(undefined4 *)(param_1_00 + 0x78) = *(undefined4 *)(param_1 + 0x78);
  *(undefined4 *)(param_1_00 + 0x7c) = *(undefined4 *)(param_1 + 0x7c);
  *(undefined4 *)(param_1_00 + 0x80) = *(undefined4 *)(param_1 + 0x80);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall
FUN_009b5510(undefined4 param_1_00,void **param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  void **ppvVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc5a18;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)FUN_00847c00(param_2,param_1,1);
  local_4 = 0;
  FUN_0081a07d(param_3,param_1,2);
  uVar3 = FUN_008854f0(*(undefined4 *)*puVar2,param_2,uVar1);
  FUN_0083fe90(param_1_00,uVar3);
  local_4 = 0xffffffff;
  ppvVar4 = (void **)FUN_00850350();
  if (param_1 != ppvVar4) {
    *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + -1;
    if (*(short *)(param_1 + 2) == 0) {
      if (*(char *)((int)param_1 + 10) != '\0') {
        _free(*param_1);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_1);
    }
    FUN_00850350();
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_009b55e0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,uint param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 param_7;
  uint param_8;
  void *param_9;
  undefined4 param_11;
  undefined4 param_13;
  uint param_14;
  void *param_15;
  undefined4 local_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be54c0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00840990(&stack0x00000030,param_1,3);
  FUN_0081a07d(param_11,param_1,2);
  FUN_00840990(&param_2,param_1,1);
  uVar2 = FUN_008854f0(uVar1);
  uVar3 = FUN_00884e10();
  uVar3 = FUN_00884e10(local_18,uVar3);
  FUN_0083fe90(param_1_00,uVar2,uVar3);
  _free(param_9);
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  param_8 = 7;
  param_7 = 0;
  param_3 = param_3 & 0xffff0000;
  _free(param_15);
  if (7 < param_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_13);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009b56e0(uint *param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  
  uVar1 = 0;
  if (*param_1 != 0) {
    iVar2 = 0;
    do {
      iVar3 = param_1[2] + iVar2;
      FUN_008a6d30();
      _free(*(void **)(iVar3 + 0x1c));
      if (7 < *(uint *)(iVar3 + 0x18)) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(iVar3 + 4));
      }
      *(undefined4 *)(iVar3 + 0x18) = 7;
      *(undefined4 *)(iVar3 + 0x14) = 0;
      uVar1 = uVar1 + 1;
      *(undefined2 *)(iVar3 + 4) = 0;
      iVar2 = iVar2 + 0xa8;
    } while (uVar1 < *param_1);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[2]);
}



void FUN_009b56f0(undefined4 param_1)

{
  FID_conflict_append(param_1,0,0xffffffff);
  return;
}



int __thiscall FUN_009b5710(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6418;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  local_4 = 0;
  FUN_009b5430(param_1 + 0x24);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_009b5790(int param_1,int param_2,uint param_3)

{
  uint uVar1;
  void *pvVar2;
  uint uVar3;
  int iVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be54fa;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  pvVar2 = operator_new(param_2 * 0xa8);
  uVar3 = 0;
  if (param_3 != 0) {
    do {
      iVar4 = uVar3 * 0xa8;
      local_4 = 0;
      if ((void *)((int)pvVar2 + iVar4) != (void *)0x0) {
        FUN_009b5710(iVar4 + param_1);
      }
      local_4 = 0xffffffff;
      FUN_008a6d30(uVar1);
      _free(*(void **)(iVar4 + 0x1c + param_1));
      if (7 < *(uint *)(iVar4 + 0x18 + param_1)) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(iVar4 + 4 + param_1));
      }
      uVar3 = uVar3 + 1;
      *(undefined4 *)(iVar4 + 0x18 + param_1) = 7;
      *(undefined4 *)(iVar4 + 0x14 + param_1) = 0;
      *(undefined2 *)(iVar4 + 4 + param_1) = 0;
    } while (uVar3 < param_3);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



void FUN_009b5880(uint param_1,uint param_2,int param_3)

{
  uint *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5531;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 <= param_1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x55,
                 "wxPrivate::wxVectorMemOpsGeneric<struct wxMarkupParser::TagAndAttrs>::MemmoveBackward"
                 ,"dest < source",0,DAT_0323f878 ^ (uint)&stack0xffffffe4);
  }
  if (param_3 != 0) {
    puVar1 = (uint *)(param_2 + 0x18);
    do {
      local_4 = 0;
      if (param_1 != 0) {
        FUN_009b5710(puVar1 + -6);
      }
      local_4 = 0xffffffff;
      FUN_008a6d30();
      _free((void *)puVar1[1]);
      if (7 < *puVar1) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(puVar1[-5]);
      }
      *puVar1 = 7;
      puVar1[-1] = 0;
      *(undefined2 *)(puVar1 + -5) = 0;
      param_3 = param_3 + -1;
      param_1 = param_1 + 0xa8;
      puVar1 = puVar1 + 0x2a;
    } while (param_3 != 0);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009b5960(uint *param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  
  if (param_1_00[1] < param_1) {
    uVar2 = *param_1_00;
    if (uVar2 == 0) {
      uVar1 = 0x10;
    }
    else {
      uVar1 = uVar2;
      if (0xfff < uVar2) {
        uVar1 = 0x1000;
      }
    }
    uVar1 = uVar1 + param_1_00[1];
    if (param_1 < uVar1) {
      param_1 = uVar1;
    }
    uVar2 = FUN_009b5790(param_1_00[2],param_1 * 0xa8,uVar2);
    param_1_00[2] = uVar2;
    param_1_00[1] = param_1;
  }
  return;
}



uint __thiscall FUN_009b59c0(int *param_1_00,uint param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  uint *puVar6;
  
  if (param_1 == param_2) {
    return param_1;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((uVar4 = *param_1_00 * 0xa8 + param_1_00[2], uVar4 <= param_1 || (uVar4 < param_2)))) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x17f,
                 "wxVector<struct wxMarkupParser::TagAndAttrs>::erase",
                 "first < end() && last <= end()",0);
  }
  iVar1 = (int)(param_1 - param_1_00[2]) / 0xa8;
  iVar2 = (int)(param_2 - param_1) / 0xa8;
  iVar3 = (int)((*param_1_00 * 0xa8 - param_2) + param_1_00[2]) / 0xa8;
  if (param_1 < param_2) {
    puVar6 = (uint *)(param_1 + 0x18);
    iVar5 = ((param_2 - param_1) - 1) / 0xa8 + 1;
    do {
      FUN_008a6d30();
      _free((void *)puVar6[1]);
      if (7 < *puVar6) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(puVar6[-5]);
      }
      *puVar6 = 7;
      puVar6[-1] = 0;
      *(undefined2 *)(puVar6 + -5) = 0;
      puVar6 = puVar6 + 0x2a;
      iVar5 = iVar5 + -1;
    } while (iVar5 != 0);
  }
  if (iVar3 != 0) {
    FUN_009b5880(iVar1 * 0xa8 + param_1_00[2],(iVar1 + iVar2) * 0xa8 + param_1_00[2],iVar3);
  }
  *param_1_00 = *param_1_00 - iVar2;
  return iVar1 * 0xa8 + param_1_00[2];
}



void __thiscall FUN_009b5b20(int *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4d71;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009b5960(*param_1_00 + 1);
  local_4 = 0;
  if (*param_1_00 * 0xa8 + param_1_00[2] != 0) {
    FUN_009b5710(param_1);
  }
  *param_1_00 = *param_1_00 + 1;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009b5b90(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1 * 0xa8 + -0xa8 + param_1[2];
  FUN_009b59c0(iVar1,iVar1 + 0xa8);
  return;
}



void FUN_009b5bb0(undefined **param_1)

{
  byte bVar1;
  short sVar2;
  undefined *puVar3;
  short **ppsVar4;
  undefined uVar5;
  char cVar6;
  char cVar7;
  short **ppsVar8;
  int iVar9;
  int iVar10;
  int *piVar11;
  undefined **ppuVar12;
  undefined **ppuVar13;
  short **ppsVar14;
  uint uVar15;
  undefined **ppuVar16;
  undefined **ppuVar17;
  char *pcVar18;
  undefined **ppuVar19;
  undefined auStack_400 [12];
  undefined4 uStack_3f4;
  undefined4 uStack_3f0;
  char *pcStack_3ec;
  undefined *puStack_3e8;
  char *pcStack_3e4;
  char *pcStack_3e0;
  undefined2 auStack_3d8 [2];
  undefined2 local_3d4;
  undefined4 uStack_3cc;
  char *pcStack_3c8;
  char *local_3c4;
  char *local_3c0;
  undefined **local_3bc;
  undefined4 local_3a0;
  undefined **local_39c;
  short **local_398;
  undefined ***local_394;
  uint local_390;
  undefined4 local_38c;
  int local_388;
  int **local_384;
  undefined **local_380;
  undefined4 uStack_37c;
  undefined **local_378;
  short **local_374;
  undefined *local_370 [2];
  undefined **local_368 [2];
  char *local_360;
  undefined4 local_35c;
  char *local_358;
  undefined *local_354;
  __time64_t local_350;
  DWORD local_348;
  int local_344;
  uint local_33c;
  undefined4 local_32c;
  uint local_328;
  void *local_324;
  undefined **local_318;
  short **local_314;
  undefined local_310 [20];
  undefined *local_2fc [5];
  undefined auStack_2e8 [20];
  undefined **appuStack_2d4 [5];
  undefined *apuStack_2c0 [86];
  uint local_168;
  int local_158;
  uint local_154;
  void *local_150;
  char acStack_148 [4];
  uint uStack_144;
  int iStack_134;
  uint uStack_130;
  void *pvStack_12c;
  undefined auStack_124 [4];
  undefined2 uStack_120;
  undefined4 uStack_110;
  undefined4 uStack_10c;
  undefined4 uStack_108;
  undefined auStack_100 [36];
  undefined auStack_dc [20];
  int iStack_c8;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be564d;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3a0;
  ExceptionList = &local_c;
  local_380 = param_1;
  local_390 = 0;
  local_38c = 0;
  local_388 = 0;
  local_154 = 7;
  local_158 = 0;
  local_168 = local_168 & 0xffff0000;
  local_150 = (void *)0x0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  local_3bc = (undefined **)0x9b5c46;
  FUN_008478e0();
  puVar3 = param_1[6];
  ppsVar8 = (short **)(param_1 + 1);
  local_398 = ppsVar8;
  if ((undefined *)0x7 < puVar3) {
    local_398 = (short **)*ppsVar8;
  }
  if (local_398 != (short **)0x0) {
    ppsVar14 = ppsVar8;
    if ((undefined *)0x7 < puVar3) {
      ppsVar14 = (short **)*ppsVar8;
    }
    if (ppsVar14 <= local_398) {
      if ((undefined *)0x7 < puVar3) {
        ppsVar8 = (short **)*ppsVar8;
      }
      if (local_398 <= (short **)((int)ppsVar8 + (int)param_1[5] * 2)) goto LAB_009b5c80;
    }
  }
  FUN_00a3fb10();
LAB_009b5c80:
  local_39c = param_1;
  ppuVar16 = param_1;
  uVar15 = 0;
  do {
    ppsVar8 = local_398;
    if ((ppuVar16 != (undefined **)0xfffffffc) &&
       ((ppuVar16 == (undefined **)0x0 || (ppuVar16 != local_378)))) {
      FUN_00a3fb10();
    }
    if (ppsVar8 == local_374) {
      if (uVar15 == 0) {
        if (local_158 != 0) {
          local_3bc = (undefined **)0x9b69ee;
          (**(code **)(**local_384 + 4))();
        }
        local_3bc = (undefined **)0x9b69fb;
        _free(local_150);
        if (7 < local_154) {
                    // WARNING: Subroutine does not return
          local_3bc = (undefined **)&UNK_009b6a15;
          FUN_00a3f6a1();
        }
        local_154 = 7;
        local_158 = 0;
        local_168 = local_168 & 0xffff0000;
        FUN_009b43b0();
      }
      else {
        local_3a0 = auStack_3d8;
        pcStack_3e0 = (char *)0x9b6809;
        FUN_0043c211();
        pcStack_3e0 = (undefined *)0x9b6810;
        cVar6 = FUN_00846b30();
        if (cVar6 != '\0') {
          local_3bc = (undefined **)0x9b682c;
          FUN_0083fbe0();
          local_4._0_1_ = 0x16;
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar15 <= uVar15 - 1)) {
            local_3bc = (undefined **)0xd27774;
            local_3c0 = "wxVector<struct wxMarkupParser::TagAndAttrs>::at";
            local_3c4 = (char *)0x13f;
            pcStack_3c8 = "d:\\wxWidgets-2.9.3\\include\\wx/vector.h";
            uStack_3cc = 0x9b685f;
            FUN_008402e0();
          }
          pcStack_3e4 = (char *)((uVar15 - 1) * 0xa8 + local_388);
          local_3a0 = auStack_3d8;
          pcStack_3e0 = (char *)0x0;
          local_3c0 = (char *)0x7;
          local_3c4 = (char *)0x0;
          local_3d4 = 0;
          puStack_3e8 = (undefined *)0x9b6893;
          FID_conflict_assign();
          local_3bc = (undefined **)0x0;
          local_4._0_1_ = 0x17;
          local_368[0] = (undefined **)0x6;
          local_360 = "..\\..\\src\\common\\markupparser.cpp";
          local_358 = "wxMarkupParser::Parse";
          local_35c = 0x18c;
          local_354 = &DAT_00d25fa0;
          pcStack_3e0 = (char *)0x9b68d5;
          local_350 = __time64((__time64_t *)0x0);
          local_348 = GetCurrentThreadId();
          local_344 = 0;
          local_328 = 7;
          local_32c = 0;
          local_33c = local_33c & 0xffff0000;
          local_324 = (void *)0x0;
          local_4._0_1_ = 0x19;
          pcStack_3e0 = (undefined *)0x9b6939;
          FUN_00848780();
          local_4._0_1_ = 0x16;
          local_3bc = (undefined **)0x9b694e;
          _free(local_324);
          if (7 < local_328) {
                    // WARNING: Subroutine does not return
            local_3bc = (undefined **)&UNK_009b6965;
            FUN_00a3f6a1();
          }
          local_33c = local_33c & 0xffff0000;
          local_328 = 7;
          local_32c = 0;
          if (local_344 != 0) {
            FUN_00841af0();
                    // WARNING: Subroutine does not return
            local_3bc = (undefined **)&UNK_009b6992;
            FUN_00a3f6a1();
          }
          local_4._0_1_ = 1;
          FUN_0081b5bc();
        }
        local_3bc = (undefined **)0x9b69bf;
        _free(local_150);
LAB_009b6465:
        if (7 < local_154) {
                    // WARNING: Subroutine does not return
          local_3bc = (undefined **)&UNK_009b6474;
          FUN_00a3f6a1();
        }
LAB_009b647e:
        local_158 = 0;
        local_168 = local_168 & 0xffff0000;
        local_154 = 7;
        FUN_009b43b0();
      }
      goto LAB_009b6a43;
    }
    if (ppuVar16 != (undefined **)0xfffffffc) {
      if (ppuVar16 == (undefined **)0x0) {
        FUN_00a3fb10();
      }
      if (ppuVar16[6] < (undefined *)0x8) {
        ppuVar19 = ppuVar16 + 1;
      }
      else {
        ppuVar19 = (undefined **)ppuVar16[1];
      }
      if ((short **)((int)ppuVar19 + (int)ppuVar16[5] * 2) <= ppsVar8) {
        FUN_00a3fb10();
      }
    }
    sVar2 = *(short *)ppsVar8;
    if (sVar2 == 0x26) {
      puVar3 = param_1[6];
      ppuVar19 = param_1 + 1;
      ppuVar17 = ppuVar19;
      if ((undefined *)0x7 < puVar3) {
        ppuVar17 = (undefined **)*ppuVar19;
      }
      if (ppuVar17 == (undefined **)0x0) {
LAB_009b61c2:
        FUN_00a3fb10();
      }
      else {
        ppuVar12 = ppuVar19;
        if ((undefined *)0x7 < puVar3) {
          ppuVar12 = (undefined **)*ppuVar19;
        }
        if (ppuVar17 < ppuVar12) goto LAB_009b61c2;
        if ((undefined *)0x7 < puVar3) {
          ppuVar19 = (undefined **)*ppuVar19;
        }
        if ((undefined **)((int)ppuVar19 + (int)param_1[5] * 2) < ppuVar17) goto LAB_009b61c2;
      }
      if ((ppuVar16 != (undefined **)0xfffffffc) &&
         ((ppuVar16 == (undefined **)0x0 || (ppuVar16 != param_1)))) {
        FUN_00a3fb10();
      }
      iVar9 = (int)local_398 - (int)ppuVar17;
      uVar15 = 0;
      local_394 = (undefined ***)0x0;
      ppuVar19 = &PTR_DAT_00d745ac;
      do {
        local_3bc = (undefined **)*ppuVar19;
        local_3c0 = ppuVar19[1];
        pcStack_3c8 = (char *)0x9b6207;
        local_3c4 = (char *)((iVar9 >> 1) + 1);
        iVar10 = FUN_008524c0();
        if (iVar10 == 0) {
          local_3bc = local_370;
          local_3c0 = (char *)0x9b621f;
          FUN_0081feb2();
          if (local_370[0] == (undefined *)0x3b) {
            bVar1 = *(byte *)(ppuVar19 + 2);
            if (bVar1 == 0x26) {
              local_3bc = (undefined **)0x9b6252;
              FUN_0084b060();
            }
            else {
              local_3a0 = (undefined2 *)CONCAT31(local_3a0._1_3_,bVar1);
              if (0x7f < bVar1) {
                local_3bc = (undefined **)0x9b626b;
                FUN_00884ad0();
              }
              local_3bc = (undefined **)0x1;
              local_3c0 = (char *)0x9b627d;
              FID_conflict_append();
            }
            local_314 = local_398;
            local_3bc = (undefined **)0x9b62a0;
            local_318 = ppuVar16;
            piVar11 = (int *)FUN_004226c0();
            ppuVar16 = (undefined **)*piVar11;
            local_398 = (short **)piVar11[1];
            local_39c = ppuVar16;
            if (local_394 < (undefined *)0x5) goto LAB_009b62f7;
            break;
          }
        }
        local_394 = (undefined ***)((int)local_394 + 1);
        uVar15 = uVar15 + 0xc;
        ppuVar19 = ppuVar19 + 3;
      } while (uVar15 < 0x3c);
LAB_009b62b4:
      if (ppuVar16 != (undefined **)0xfffffffc) {
        if (ppuVar16 == (undefined **)0x0) {
          FUN_00a3fb10();
        }
        if (ppuVar16[6] < (undefined *)0x8) {
          ppuVar19 = ppuVar16 + 1;
        }
        else {
          ppuVar19 = (undefined **)ppuVar16[1];
        }
        if ((short **)((int)ppuVar19 + (int)ppuVar16[5] * 2) <= local_398) {
          FUN_00a3fb10();
        }
      }
      local_3bc = (undefined **)0x1;
      local_3c0 = (char *)0x9b62f7;
      FID_conflict_append();
    }
    else if (sVar2 == 0x3c) {
      if (local_158 != 0) {
        local_3bc = (undefined **)0x9b5e79;
        (**(code **)(**local_384 + 4))();
        FUN_00432156();
      }
      puVar3 = param_1[6];
      ppuVar19 = param_1 + 1;
      ppuVar17 = ppuVar19;
      if ((undefined *)0x7 < puVar3) {
        ppuVar17 = (undefined **)*ppuVar19;
      }
      if (ppuVar17 == (undefined **)0x0) {
LAB_009b5eba:
        FUN_00a3fb10();
      }
      else {
        ppuVar12 = ppuVar19;
        if ((undefined *)0x7 < puVar3) {
          ppuVar12 = (undefined **)*ppuVar19;
        }
        if (ppuVar17 < ppuVar12) goto LAB_009b5eba;
        if ((undefined *)0x7 < puVar3) {
          ppuVar19 = (undefined **)*ppuVar19;
        }
        if ((undefined **)((int)ppuVar19 + (int)param_1[5] * 2) < ppuVar17) goto LAB_009b5eba;
      }
      if ((ppuVar16 != (undefined **)0xfffffffc) &&
         ((ppuVar16 == (undefined **)0x0 || (ppuVar16 != param_1)))) {
        FUN_00a3fb10();
      }
      ppsVar8 = local_398;
      uStack_37c = CONCAT31(uStack_37c._1_3_,1);
      if (ppuVar16 != (undefined **)0xfffffffc) {
        if (ppuVar16 == (undefined **)0x0) {
          FUN_00a3fb10();
        }
        if (ppuVar16[6] < (undefined *)0x8) {
          ppuVar19 = ppuVar16 + 1;
        }
        else {
          ppuVar19 = (undefined **)ppuVar16[1];
        }
        if ((short **)((int)ppuVar19 + (int)ppuVar16[5] * 2) <= ppsVar8) {
          FUN_00a3fb10();
        }
      }
      ppsVar14 = (short **)((int)ppsVar8 + 2);
      local_398 = ppsVar14;
      if ((ppuVar16 != (undefined **)0xfffffffc) &&
         ((ppuVar16 == (undefined **)0x0 || (ppuVar16 != local_378)))) {
        FUN_00a3fb10();
      }
      ppsVar4 = local_374;
      if (ppsVar14 != local_374) {
        if (ppuVar16 != (undefined **)0xfffffffc) {
          if (ppuVar16 == (undefined **)0x0) {
            FUN_00a3fb10();
          }
          if (ppuVar16[6] < (undefined *)0x8) {
            ppuVar19 = ppuVar16 + 1;
          }
          else {
            ppuVar19 = (undefined **)ppuVar16[1];
          }
          if ((short **)((int)ppuVar19 + (int)ppuVar16[5] * 2) <= ppsVar14) {
            FUN_00a3fb10();
          }
        }
        if (*(short *)ppsVar14 == 0x2f) {
          uStack_37c = uStack_37c & 0xffffff00;
          if (ppuVar16 != (undefined **)0xfffffffc) {
            if (ppuVar16 == (undefined **)0x0) {
              FUN_00a3fb10();
            }
            if (ppuVar16[6] < (undefined *)0x8) {
              ppuVar19 = ppuVar16 + 1;
            }
            else {
              ppuVar19 = (undefined **)ppuVar16[1];
            }
            if ((short **)((int)ppuVar19 + (int)ppuVar16[5] * 2) <= ppsVar14) {
              FUN_00a3fb10();
            }
          }
          local_398 = ppsVar8 + 1;
        }
      }
      ppuVar16 = local_378;
      local_394 = &local_3bc;
      local_3bc = local_378;
      local_3c0 = (char *)&local_39c;
      pcStack_3c8 = acStack_148;
      local_3c4 = (char *)0x3e;
      uStack_3cc = 0x9b5fbe;
      FUN_009b44c0();
      local_4._0_1_ = 2;
      if (iStack_134 == 0) {
        local_3a0 = auStack_3d8;
        pcStack_3e0 = (char *)0x9b634d;
        FUN_0043c211();
        pcStack_3e0 = (undefined *)0x9b6354;
        cVar6 = FUN_00846b30();
        if (cVar6 != '\0') {
          if ((local_39c != (undefined **)0xfffffffc) &&
             ((local_39c == (undefined **)0x0 || (local_39c != ppuVar16)))) {
            FUN_00a3fb10();
          }
          pcVar18 = "Unclosed tag starting";
          if (local_398 != ppsVar4) {
            pcVar18 = "Empty tag";
          }
          local_3bc = (undefined **)0x9b6396;
          FUN_0083fbe0();
          local_3bc = (undefined **)0xd749b0;
          local_3c0 = (char *)0x129;
          local_3c4 = "..\\..\\src\\common\\markupparser.cpp";
          pcStack_3c8 = (char *)0x6;
          local_4._0_1_ = 3;
          uStack_3cc = 0x9b63c1;
          FUN_008423d0();
          local_3c0 = (char *)appuStack_2d4;
          local_4._0_1_ = 4;
          local_3c4 = (char *)0x9b63da;
          local_3bc = (undefined **)pcVar18;
          FUN_009b5510();
          local_4._0_1_ = 3;
          FUN_00842440();
          local_4._0_1_ = 2;
          FUN_0081b5bc();
        }
        local_3bc = (undefined **)0x9b640e;
        _free(pvStack_12c);
        if (7 < uStack_130) {
                    // WARNING: Subroutine does not return
          local_3bc = (undefined **)&UNK_009b642c;
          FUN_00a3f6a1();
        }
        uStack_130 = 7;
        iStack_134 = 0;
        uStack_144 = uStack_144 & 0xffff0000;
        local_3bc = (undefined **)0x9b645b;
        _free(local_150);
        goto LAB_009b6465;
      }
      cVar6 = (char)uStack_37c;
      if ((char)uStack_37c == '\0') {
        if ((local_390 != 0) && (iVar9 = FUN_009b41f0(), *(int *)(iVar9 + 0x14) == iStack_134)) {
          local_3bc = (undefined **)0x9b6136;
          iVar9 = FUN_00850760();
          if (iVar9 == 0) goto LAB_009b6143;
        }
        local_3a0 = auStack_3d8;
        pcStack_3e0 = (char *)0x9b66b9;
        FUN_0043c211();
        pcStack_3e0 = (undefined *)0x9b66c0;
        cVar6 = FUN_00846b30();
        if (cVar6 != '\0') {
          local_3bc = (undefined **)0x9b66dc;
          FUN_0083fbe0();
          local_3a0 = (undefined2 *)&stack0xfffffc24;
          pcStack_3e0 = acStack_148;
          local_4._0_1_ = 0xe;
          pcStack_3e4 = (char *)0x9b66fc;
          FUN_004325a0();
          pcStack_3e0 = &DAT_00d25fa0;
          pcStack_3e4 = "wxMarkupParser::Parse";
          puStack_3e8 = (undefined *)0x145;
          pcStack_3ec = "..\\..\\src\\common\\markupparser.cpp";
          uStack_3f0 = 6;
          local_4._0_1_ = 0xf;
          uStack_3f4 = 0x9b6726;
          FUN_008423d0();
          pcStack_3e0 = local_310;
          local_4._0_1_ = 0x11;
          pcStack_3e4 = (char *)0x9b6745;
          FUN_008af220();
          local_4._0_1_ = 0xe;
          FUN_00842440();
          local_4._0_1_ = 2;
          FUN_0081b5bc();
        }
        local_3bc = (undefined **)0x9b6779;
        _free(pvStack_12c);
        if (7 < uStack_130) {
                    // WARNING: Subroutine does not return
          local_3bc = (undefined **)&UNK_009b6797;
          FUN_00a3f6a1();
        }
        uStack_130 = 7;
        iStack_134 = 0;
        uStack_144 = uStack_144 & 0xffff0000;
        local_3bc = (undefined **)0x9b67c6;
        _free(local_150);
        if (7 < local_154) {
                    // WARNING: Subroutine does not return
          local_3bc = (undefined **)&UNK_009b67df;
          FUN_00a3f6a1();
        }
        goto LAB_009b647e;
      }
      uStack_10c = 7;
      uStack_110 = 0;
      uStack_120 = 0;
      uStack_108 = 0;
      local_394 = &local_3bc;
      local_3c0 = auStack_100;
      local_4._0_1_ = 5;
      local_3bc = (undefined **)0x20;
      local_3c4 = (char *)0x9b603a;
      FUN_00852890();
      local_4._0_1_ = 6;
      local_3bc = (undefined **)0x9b6056;
      FUN_009b4430();
      local_394 = (undefined ***)&stack0xfffffc24;
      local_3c4 = (char *)0x7;
      pcStack_3e0 = (char *)0xffffffff;
      pcStack_3c8 = (char *)0x0;
      pcStack_3e4 = (char *)0x0;
      puStack_3e8 = auStack_124;
      auStack_3d8[0] = 0;
      local_4._0_1_ = 7;
      pcStack_3ec = (char *)0x9b608f;
      FID_conflict_assign();
      pcStack_3e0 = auStack_dc;
      local_3c0 = (char *)0x0;
      pcStack_3e4 = (char *)0x9b60a3;
      FUN_009b4690();
      local_4._0_1_ = 8;
      uVar5 = (undefined)local_4;
      local_4._0_1_ = 8;
      if (iStack_c8 != 0) {
        local_3a0 = auStack_3d8;
        pcStack_3e0 = (char *)0x9b64b2;
        local_4._0_1_ = uVar5;
        FUN_0043c211();
        pcStack_3e0 = (undefined *)0x9b64b9;
        cVar6 = FUN_00846b30();
        if (cVar6 != '\0') {
          local_3bc = (undefined **)0x9b64d5;
          FUN_0083fbe0();
          local_3a0 = auStack_3d8;
          local_4._0_1_ = 9;
          pcStack_3e0 = (undefined *)0x9b64f4;
          FUN_004325a0();
          local_370[0] = auStack_400;
          local_4._0_1_ = 10;
          FUN_004325a0(auStack_100);
          local_4._0_1_ = 0xb;
          FUN_008423d0(6,"..\\..\\src\\common\\markupparser.cpp",0x139,"wxMarkupParser::Parse",
                       &DAT_00d25fa0);
          local_4._0_1_ = 0xd;
          FUN_009b55e0(auStack_2e8);
          local_4._0_1_ = 9;
          FUN_00842440();
          local_4._0_1_ = 8;
          FUN_0081b5bc();
        }
        FUN_0040159c();
        FUN_009b42d0();
        FUN_0040159c();
        FUN_0040159c();
        FUN_0040159c();
        FUN_0040159c();
        FUN_009b43b0();
        goto LAB_009b6a43;
      }
      local_3bc = (undefined **)0x9b60c9;
      FUN_009b5b20();
      FUN_0040159c();
      FUN_009b42d0();
      FUN_0040159c();
      local_4._0_1_ = 2;
      FUN_0040159c();
LAB_009b6143:
      local_3bc = (undefined **)0x9b6151;
      local_3bc = (undefined **)FUN_009b41f0();
      local_3c0 = (char *)0x9b615b;
      cVar7 = FUN_009b52d0();
      if (cVar7 == '\0') {
        local_3a0 = auStack_3d8;
        pcStack_3e0 = (char *)0x9b65f1;
        FUN_0043c211();
        pcStack_3e0 = (undefined *)0x9b65f8;
        cVar6 = FUN_00846b30();
        if (cVar6 != '\0') {
          local_3bc = (undefined **)0x9b6614;
          FUN_0083fbe0();
          local_3bc = (undefined **)0xd749b0;
          local_3c0 = (char *)0x14d;
          local_3c4 = "..\\..\\src\\common\\markupparser.cpp";
          pcStack_3c8 = (char *)0x6;
          local_4._0_1_ = 0x12;
          uStack_3cc = 0x9b663f;
          FUN_008423d0();
          local_3bc = apuStack_2c0;
          local_4._0_1_ = 0x13;
          local_3c0 = (char *)0x9b6657;
          FUN_0086bf20();
          local_4._0_1_ = 0x12;
          FUN_00842440();
          local_4._0_1_ = 2;
          FUN_0081b5bc();
        }
        FUN_0040159c();
        FUN_0040159c();
        FUN_009b43b0();
LAB_009b6a43:
        ExceptionList = local_c;
        ___security_check_cookie_4();
        return;
      }
      if (cVar6 == '\0') {
        FUN_009b5b90();
      }
      local_4._0_1_ = 1;
      FUN_0040159c();
      ppuVar16 = local_39c;
    }
    else {
      if (sVar2 != 0x3e) goto LAB_009b62b4;
      local_394 = (undefined ***)auStack_3d8;
      pcStack_3e0 = (char *)0x9b5d0a;
      FUN_0043c211();
      pcStack_3e0 = (undefined *)0x9b5d11;
      cVar6 = FUN_00846b30();
      if (cVar6 != '\0') {
        local_3bc = (undefined **)0x9b5d2d;
        FUN_0083fbe0();
        local_4._0_1_ = 0x14;
        local_368[0] = (undefined **)0x6;
        local_360 = "..\\..\\src\\common\\markupparser.cpp";
        local_358 = "wxMarkupParser::Parse";
        local_35c = 0x157;
        local_354 = &DAT_00d25fa0;
        local_3bc = (undefined **)0x9b5d65;
        local_350 = __time64((__time64_t *)0x0);
        local_348 = GetCurrentThreadId();
        ppuVar17 = local_380;
        local_344 = 0;
        local_328 = 7;
        local_32c = 0;
        local_33c = local_33c & 0xffff0000;
        local_324 = (void *)0x0;
        puVar3 = local_380[6];
        local_4 = CONCAT31(local_4._1_3_,0x15);
        ppuVar19 = local_380 + 1;
        ppuVar12 = ppuVar19;
        if ((undefined *)0x7 < puVar3) {
          ppuVar12 = (undefined **)*ppuVar19;
        }
        if (ppuVar12 == (undefined **)0x0) {
LAB_009b5dde:
          FUN_00a3fb10();
        }
        else {
          ppuVar13 = ppuVar19;
          if ((undefined *)0x7 < puVar3) {
            ppuVar13 = (undefined **)*ppuVar19;
          }
          if (ppuVar12 < ppuVar13) goto LAB_009b5dde;
          if ((undefined *)0x7 < puVar3) {
            ppuVar19 = (undefined **)*ppuVar19;
          }
          if ((undefined **)((int)ppuVar19 + (int)local_380[5] * 2) < ppuVar12) goto LAB_009b5dde;
        }
        if ((ppuVar16 != (undefined **)0xfffffffc) &&
           ((ppuVar16 == (undefined **)0x0 || (ppuVar16 != ppuVar17)))) {
          FUN_00a3fb10();
        }
        local_3bc = local_2fc;
        local_3c0 = (char *)((int)local_398 - (int)ppuVar12 >> 1);
        local_3c4 = (char *)0x9b5e11;
        FUN_00820e3f();
        local_3bc = (undefined **)0x9b5e22;
        local_3bc = (undefined **)FUN_008854f0();
        local_3c0 = (char *)local_368;
        local_3c4 = (char *)0x9b5e2d;
        FUN_0083fe90();
        local_4._0_1_ = 0x14;
        FUN_00842440();
        local_4._0_1_ = 1;
        FUN_0081b5bc();
      }
    }
LAB_009b62f7:
    if (ppuVar16 != (undefined **)0xfffffffc) {
      if (ppuVar16 == (undefined **)0x0) {
        FUN_00a3fb10();
      }
      if (ppuVar16[6] < (undefined *)0x8) {
        ppuVar19 = ppuVar16 + 1;
      }
      else {
        ppuVar19 = (undefined **)ppuVar16[1];
      }
      if ((short **)((int)ppuVar19 + (int)ppuVar16[5] * 2) <= local_398) {
        FUN_00a3fb10();
      }
    }
    local_398 = (short **)((int)local_398 + 2);
    param_1 = local_380;
    uVar15 = local_390;
  } while( true );
}



void FUN_009b6a70(int param_1,undefined4 param_2)

{
  void *pvVar1;
  char cVar2;
  uint uVar3;
  undefined ***local_3c;
  undefined **local_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5688;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3c;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  local_38 = `public:_static_class_wxString___cdecl_wxMarkupParser::Strip(class_wxString_const&)'::
             `2'::StripOutput::vftable;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_3c = &local_38;
  local_4 = 0;
  cVar2 = FUN_009b5bb0(param_2);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  if (cVar2 == '\0') {
    *(undefined2 *)(param_1 + 4) = 0;
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  else {
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  local_c = ExceptionList;
  if (7 < local_1c) {
    ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30,uVar3);
  }
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_009b6b70(void)

{
  return &PTR_u_wxImageList_0323c694;
}



void __fastcall FUN_009b6b80(int param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 8) == 0)) {
    FUN_00840480("..\\..\\src\\msw\\imaglist.cpp",0x79,"wxImageList::GetImageCount","m_hImageList",
                 L"invalid image list");
  }
  ImageList_GetImageCount(*(HIMAGELIST *)(param_1 + 8));
  return;
}



bool __thiscall FUN_009b6bc0(int param_1_00,undefined4 param_1,int *param_2,int *param_3)

{
  BOOL BVar1;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 8) == 0)) {
    FUN_00840480("..\\..\\src\\msw\\imaglist.cpp",0x81,"wxImageList::GetSize","m_hImageList",
                 L"invalid image list");
  }
  BVar1 = ImageList_GetIconSize(*(HIMAGELIST *)(param_1_00 + 8),param_2,param_3);
  return BVar1 != 0;
}



void __fastcall FUN_009b6c20(undefined4 *param_1)

{
  *param_1 = wxImageList::vftable;
  if ((HIMAGELIST)param_1[2] != (HIMAGELIST)0x0) {
    ImageList_Destroy((HIMAGELIST)param_1[2]);
    param_1[2] = 0;
  }
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined4 __fastcall FUN_009b6c70(int *param_1,undefined4 param_2)

{
  uint uVar1;
  bool bVar2;
  char cVar3;
  int iVar4;
  undefined ***pppuVar5;
  void *pvVar6;
  undefined4 uVar7;
  int *piVar8;
  undefined **appuStack_30 [2];
  undefined **local_28;
  undefined4 local_24;
  undefined **appuStack_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be56db;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_24 = 0;
  local_28 = wxBitmap::vftable;
  local_4._0_1_ = 0;
  local_4._1_3_ = 0;
  bVar2 = false;
  cVar3 = (**(code **)(*param_1 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffbc);
  if (cVar3 == '\0') {
    piVar8 = (int *)FUN_008f25d0();
    bVar2 = false;
    if (piVar8 == (int *)0x0) {
      FUN_008f3b70(appuStack_30);
      local_4._0_1_ = 1;
      iVar4 = FUN_008ff940();
      if (iVar4 != 0) {
        FUN_00907090(0x80);
        pppuVar5 = (undefined ***)FUN_00414f38(appuStack_30,0xffffffff);
        local_4._0_1_ = 2;
        if (&local_28 != pppuVar5) {
          FUN_0083ea60(pppuVar5);
        }
        local_4._0_1_ = 1;
        FUN_008f7630();
        piVar8 = (int *)FUN_008f25d0();
      }
      local_4._0_1_ = 0;
      appuStack_30[0] = wxObject::vftable;
      FUN_0083e850();
      if (piVar8 == (int *)0x0) {
        iVar4 = FUN_009142f0();
        FUN_00453f4b();
        uVar1 = *(uint *)(iVar4 + 0x10);
        local_4._0_1_ = 3;
        (*(code *)appuStack_20[0][10])(uVar1,uVar1 >> 8,uVar1 >> 0x10,0xff);
        pvVar6 = operator_new(0xc);
        local_4._0_1_ = 4;
        if (pvVar6 == (void *)0x0) {
          piVar8 = (int *)0x0;
        }
        else {
          piVar8 = (int *)FUN_008f4f70(param_2,appuStack_20);
        }
        bVar2 = true;
        local_4._0_1_ = 0;
        appuStack_20[0] = wxObject::vftable;
        FUN_0083e850();
      }
    }
    iVar4 = piVar8[2];
  }
  else if (param_1[1] == 0) {
    iVar4 = 0;
    piVar8 = (int *)0x0;
  }
  else {
    iVar4 = *(int *)(param_1[1] + 0x14);
    piVar8 = (int *)0x0;
  }
  uVar7 = FUN_008f4580(iVar4,0,0);
  if ((bVar2) && (piVar8 != (int *)0x0)) {
    (**(code **)(*piVar8 + 4))(1);
  }
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return uVar7;
}



bool __thiscall FUN_009b6e30(int param_1_00,int param_1,int param_2,char param_3,int param_4)

{
  char cVar1;
  UINT flags;
  HIMAGELIST p_Var2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  flags = 0x20;
  if (param_3 != '\0') {
    flags = 0x21;
  }
  p_Var2 = ImageList_Create(param_1,param_2,flags,param_4,1);
  *(HIMAGELIST *)(param_1_00 + 8) = p_Var2;
  if (p_Var2 == (HIMAGELIST)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return *(int *)(param_1_00 + 8) != 0;
}



// WARNING: Removing unreachable block (ram,0x009b71ce)

int __thiscall FUN_009b6f70(int param_1_00,int param_1)

{
  char cVar1;
  HBITMAP hbmMask;
  int iVar2;
  int iVar3;
  HBITMAP hbmImage;
  uint uStack_90;
  void *pvStack_8c;
  uint uStack_68;
  void *pvStack_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5747;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  cVar1 = FUN_008f2600();
  if (cVar1 == '\0') {
    if (*(int *)(param_1 + 4) == 0) {
      hbmImage = (HBITMAP)0x0;
    }
    else {
      hbmImage = *(HBITMAP *)(*(int *)(param_1 + 4) + 0x14);
    }
  }
  else {
    FUN_008f3b70();
    local_4._0_1_ = 1;
    FUN_00973530();
    hbmImage = (HBITMAP)0x0;
    FUN_008f2db0();
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0083e850();
  }
  hbmMask = (HBITMAP)FUN_009b6c70();
  local_4._0_1_ = 2;
  iVar2 = ImageList_Add(*(HIMAGELIST *)(param_1_00 + 8),hbmImage,hbmMask);
  if (iVar2 == -1) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      local_4._0_1_ = 3;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,4);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 5;
      FUN_008423d0();
      local_4._0_1_ = 6;
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 5;
      FUN_00842440();
      local_4._0_1_ = 4;
      FUN_0081b5bc();
      _free(pvStack_8c);
      if (7 < uStack_90) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(pvStack_64);
      if (7 < uStack_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  if (hbmMask != (HBITMAP)0x0) {
    DeleteObject(hbmMask);
  }
  ExceptionList = local_c;
  return iVar2;
}



int __thiscall FUN_009b71f0(int param_1_00,int param_1)

{
  char cVar1;
  HICON hicon;
  int iVar2;
  int iVar3;
  uint uStack_a4;
  void *pvStack_a0;
  uint uStack_68;
  void *pvStack_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be5796;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  hicon = *(HICON *)(param_1 + 4);
  if (hicon != (HICON)0x0) {
    hicon = (HICON)hicon[5].unused;
  }
  iVar2 = ImageList_ReplaceIcon(*(HIMAGELIST *)(param_1_00 + 8),-1,hicon);
  if (iVar2 == -1) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_008423d0();
      uStack_4._0_1_ = 3;
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4._0_1_ = 2;
      FUN_00842440();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      _free(pvStack_a0);
      if (7 < uStack_a4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(pvStack_64);
      if (7 < uStack_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  ExceptionList = local_c;
  return iVar2;
}



// WARNING: Removing unreachable block (ram,0x009b757a)
// WARNING: Removing unreachable block (ram,0x009b7592)

undefined4 __thiscall FUN_009b73b0(int param_1_00,int param_1,int param_2)

{
  char cVar1;
  HBITMAP hbmMask;
  BOOL BVar2;
  undefined4 uVar3;
  HBITMAP local_74;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be57eb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  cVar1 = FUN_008f2600();
  if (cVar1 == '\0') {
    if (*(int *)(param_2 + 4) == 0) {
      local_74 = (HBITMAP)0x0;
    }
    else {
      local_74 = *(HBITMAP *)(*(int *)(param_2 + 4) + 0x14);
    }
  }
  else {
    FUN_008f3b70();
    local_4._0_1_ = 1;
    local_74 = (HBITMAP)0x0;
    FUN_00973530();
    FUN_008f2db0();
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0083e850();
  }
  hbmMask = (HBITMAP)FUN_009b6c70();
  local_4._0_1_ = 2;
  BVar2 = ImageList_Replace(*(HIMAGELIST *)(param_1_00 + 8),param_1,local_74,hbmMask);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4._0_1_ = 3;
      FUN_008423d0();
      local_4._0_1_ = 4;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4._0_1_ = 3;
      FUN_00842440();
      local_4._0_1_ = 2;
      FUN_0081b5bc();
    }
    if (hbmMask != (HBITMAP)0x0) {
      DeleteObject(hbmMask);
    }
    uVar3 = 0;
  }
  else {
    if (hbmMask != (HBITMAP)0x0) {
      DeleteObject(hbmMask);
    }
    uVar3 = 1;
  }
  ExceptionList = local_c;
  return uVar3;
}



bool __thiscall FUN_009b75c0(int param_1_00,int param_1)

{
  char cVar1;
  BOOL BVar2;
  bool bVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  BVar2 = ImageList_Remove(*(HIMAGELIST *)(param_1_00 + 8),param_1);
  bVar3 = BVar2 != 0;
  if (!bVar3) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = CONCAT31(uStack_4._1_3_,bVar3);
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return bVar3;
}



bool __thiscall
FUN_009b76d0(int param_1_00,int param_1,int param_2,int param_4,int param_5,byte param_6,
            char param_7)

{
  undefined4 *puVar1;
  HDC hdcDst;
  char cVar2;
  undefined **ppuVar3;
  int *piVar4;
  UINT fStyle;
  BOOL BVar5;
  COLORREF clrBk;
  bool bVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be582b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = *(undefined4 **)(param_2 + 8);
  if ((puVar1 != (undefined4 *)0x0) &&
     (((ppuVar3 = (undefined **)(**(code **)*puVar1)(), ppuVar3 == &PTR_u_wxMSWDCImpl_0323af3c ||
       ((ppuVar3[3] != (undefined *)0x0 && (cVar2 = FUN_0048a047(), cVar2 != '\0')))) ||
      ((ppuVar3[4] != (undefined *)0x0 && (cVar2 = FUN_0048a047(), cVar2 != '\0')))))) {
    hdcDst = (HDC)puVar1[0x42];
    if (hdcDst != (HDC)0x0) {
      clrBk = 0xffffffff;
      if (param_7 != '\0') {
        piVar4 = (int *)(**(code **)(**(int **)(param_2 + 8) + 0x6c))();
        cVar2 = (**(code **)(*piVar4 + 0x10))();
        if (cVar2 != '\0') {
          (**(code **)(*piVar4 + 0x3c))();
          uStack_4 = 0;
          clrBk = FUN_0090e430();
          uStack_4 = 0xffffffff;
          FUN_0083e850();
        }
      }
      ImageList_SetBkColor(*(HIMAGELIST *)(param_1_00 + 8),clrBk);
      fStyle = (UINT)((param_6 & 2) != 0);
      if ((param_6 & 4) != 0) {
        fStyle = fStyle | 4;
      }
      if ((param_6 & 8) != 0) {
        fStyle = fStyle | 2;
      }
      BVar5 = ImageList_Draw(*(HIMAGELIST *)(param_1_00 + 8),param_1,hdcDst,param_4,param_5,fStyle);
      bVar6 = BVar5 != 0;
      if (bVar6) {
        ExceptionList = local_c;
        return bVar6;
      }
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 == '\0') {
        ExceptionList = local_c;
        return bVar6;
      }
      FUN_0081c0f1();
      uStack_4 = 1;
      FUN_008423d0();
      uStack_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
      ExceptionList = local_c;
      return bVar6;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  ExceptionList = local_c;
  return false;
}



int __thiscall FUN_009b7940(int param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  undefined ***pppuVar2;
  int local_40;
  int local_3c;
  uint uStack_38;
  uint uStack_34;
  uint uStack_30;
  undefined4 local_2c;
  undefined **appuStack_28 [2];
  undefined **appuStack_20 [2];
  undefined auStack_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5891;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_2c = 0;
  local_4 = 0;
  local_3c = 0;
  local_40 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 8) == 0)) {
    FUN_00840480("..\\..\\src\\msw\\imaglist.cpp",0x81,"wxImageList::GetSize","m_hImageList",
                 L"invalid image list",DAT_0323f878 ^ (uint)&stack0xffffffb0);
  }
  ImageList_GetIconSize(*(HIMAGELIST *)(param_1 + 8),&local_3c,&local_40);
  FUN_008f53f0(local_3c,local_40,0xffffffff);
  local_4 = 0;
  local_2c = 1;
  FUN_0094bd80();
  local_4 = 1;
  FUN_0094c840(param_2);
  FUN_009b76d0(param_3,auStack_18,0,0,2,0);
  FUN_0094c840(&PTR_vftable_03238cc8);
  FUN_008f3b70(appuStack_28);
  local_4._0_1_ = 2;
  uStack_30 = uStack_30 & 0xffffff00;
  uStack_34 = uStack_34 & 0xffffff00;
  uStack_38 = uStack_38 & 0xffffff00;
  FUN_00906b20(&uStack_30,&uStack_34,&uStack_38,1,0,0);
  FUN_00900c30(local_3c,local_40,1);
  FUN_00902040(0,0,0,uStack_30,uStack_34,uStack_38);
  iVar1 = FUN_00414f38(appuStack_28,0xffffffff);
  local_4._0_1_ = 3;
  if (param_2 != iVar1) {
    FUN_0083ea60(iVar1);
  }
  local_4._0_1_ = 2;
  FUN_008f7630();
  FUN_0094c840(param_2);
  FUN_009b76d0(param_3,auStack_18,0,0,2,0);
  FUN_0094c840(&PTR_vftable_03238cc8);
  pppuVar2 = (undefined ***)FUN_008f3b70(appuStack_20);
  local_4._0_1_ = 4;
  if (appuStack_28 != pppuVar2) {
    FUN_0083ea60(pppuVar2);
  }
  local_4._0_1_ = 2;
  appuStack_20[0] = wxObject::vftable;
  FUN_0083e850();
  FUN_008ff990(uStack_30,uStack_34,uStack_38);
  iVar1 = FUN_00414f38(appuStack_28,0xffffffff);
  local_4._0_1_ = 5;
  if (param_2 != iVar1) {
    FUN_0083ea60(iVar1);
  }
  local_4._0_1_ = 2;
  FUN_008f7630();
  local_4._0_1_ = 1;
  appuStack_28[0] = wxObject::vftable;
  FUN_0083e850();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00457221();
  ExceptionList = local_c;
  return param_2;
}



void __fastcall FUN_009b7ba0(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00be58c3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 1;
  *(undefined ***)(param_1 + 0x1c) = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4 = local_4 & 0xffffff00;
  *(undefined ***)(param_1 + 8) = wxObject::vftable;
  FUN_0083e850();
  local_4 = 0xffffffff;
  FUN_00921450();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009b7c20(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  *param_1_00 = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 4);
  param_1_00[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1_00 = wxFont::vftable;
  param_1_00[2] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0xc);
  param_1_00[3] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[2] = wxColour::vftable;
  param_1_00[4] = *(undefined4 *)(param_1 + 0x10);
  *(undefined *)(param_1_00 + 5) = *(undefined *)(param_1 + 0x14);
  *(undefined *)((int)param_1_00 + 0x15) = *(undefined *)(param_1 + 0x15);
  *(undefined *)((int)param_1_00 + 0x16) = *(undefined *)(param_1 + 0x16);
  *(undefined *)((int)param_1_00 + 0x17) = *(undefined *)(param_1 + 0x17);
  *(undefined *)(param_1_00 + 6) = *(undefined *)(param_1 + 0x18);
  param_1_00[7] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x20);
  param_1_00[8] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[7] = wxColour::vftable;
  param_1_00[9] = *(undefined4 *)(param_1 + 0x24);
  *(undefined *)(param_1_00 + 10) = *(undefined *)(param_1 + 0x28);
  *(undefined *)((int)param_1_00 + 0x29) = *(undefined *)(param_1 + 0x29);
  *(undefined *)((int)param_1_00 + 0x2a) = *(undefined *)(param_1 + 0x2a);
  *(undefined *)((int)param_1_00 + 0x2b) = *(undefined *)(param_1 + 0x2b);
  *(undefined *)(param_1_00 + 0xb) = *(undefined *)(param_1 + 0x2c);
  return;
}



void __fastcall FUN_009b7cd0(uint *param_1)

{
  uint uVar1;
  
  uVar1 = 0;
  if (*param_1 != 0) {
    do {
      FUN_009b7ba0();
      uVar1 = uVar1 + 1;
    } while (uVar1 < *param_1);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[2]);
}



void FUN_009b7d20(int param_1,int param_2,int param_3)

{
  void *pvVar1;
  int iVar2;
  
  pvVar1 = operator_new(param_2 * 0x30);
  if (param_3 != 0) {
    iVar2 = param_1;
    do {
      if ((int)pvVar1 + (iVar2 - param_1) != 0) {
        FUN_009b7c20(iVar2);
      }
      FUN_009b7ba0();
      iVar2 = iVar2 + 0x30;
      param_3 = param_3 + -1;
    } while (param_3 != 0);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



void __thiscall FUN_009b7d80(undefined4 *param_1_00,int param_1,int param_2,int param_3)

{
  int iVar1;
  
  *param_1_00 = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 4);
  param_1_00[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1_00 = wxFont::vftable;
  param_1_00[2] = wxObject::vftable;
  iVar1 = *(int *)(param_2 + 4);
  param_1_00[3] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[2] = wxColour::vftable;
  param_1_00[4] = *(undefined4 *)(param_2 + 8);
  *(undefined *)(param_1_00 + 5) = *(undefined *)(param_2 + 0xc);
  *(undefined *)((int)param_1_00 + 0x15) = *(undefined *)(param_2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x16) = *(undefined *)(param_2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x17) = *(undefined *)(param_2 + 0xf);
  *(undefined *)(param_1_00 + 6) = *(undefined *)(param_2 + 0x10);
  param_1_00[7] = wxObject::vftable;
  iVar1 = *(int *)(param_3 + 4);
  param_1_00[8] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[7] = wxColour::vftable;
  param_1_00[9] = *(undefined4 *)(param_3 + 8);
  *(undefined *)(param_1_00 + 10) = *(undefined *)(param_3 + 0xc);
  *(undefined *)((int)param_1_00 + 0x29) = *(undefined *)(param_3 + 0xd);
  *(undefined *)((int)param_1_00 + 0x2a) = *(undefined *)(param_3 + 0xe);
  *(undefined *)((int)param_1_00 + 0x2b) = *(undefined *)(param_3 + 0xf);
  *(undefined *)(param_1_00 + 0xb) = *(undefined *)(param_3 + 0x10);
  return;
}



void __thiscall FUN_009b7e30(uint *param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  
  if (param_1_00[1] < param_1) {
    uVar2 = *param_1_00;
    if (uVar2 == 0) {
      uVar1 = 0x10;
    }
    else {
      uVar1 = uVar2;
      if (0xfff < uVar2) {
        uVar1 = 0x1000;
      }
    }
    uVar1 = uVar1 + param_1_00[1];
    if (param_1 < uVar1) {
      param_1 = uVar1;
    }
    uVar2 = FUN_009b7d20(param_1_00[2],param_1 * 0x30,uVar2);
    param_1_00[2] = uVar2;
    param_1_00[1] = param_1;
  }
  return;
}



void __fastcall FUN_009b7e90(uint *param_1)

{
  uint uVar1;
  
  uVar1 = 0;
  if (*param_1 != 0) {
    do {
      FUN_009b7ba0();
      uVar1 = uVar1 + 1;
    } while (uVar1 < *param_1);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[2]);
}



void __fastcall FUN_009b7ea0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be58e8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_009b7cd0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1 = wxMarkupParserOutput::vftable;
  ExceptionList = local_c;
  return;
}



void __fastcall thunk_FUN_009b7ea0(undefined4 *param_1)

{
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00be58e8;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  uStack_4 = 0;
  FUN_009b7cd0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1 = wxMarkupParserOutput::vftable;
  ExceptionList = pvStack_c;
  return;
}



// Library Function - Single Match
//  public: virtual __thiscall CParkingWnd::~CParkingWnd(void)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void __thiscall CParkingWnd::~CParkingWnd(CParkingWnd *this)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5918;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  *(undefined ***)(this + 0x28) = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4 = 0xffffffff;
  FUN_009b7ea0();
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall
FUN_009b7f60(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int *piVar1;
  uint uVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be595b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  piVar1 = param_1_00 + 1;
  *param_1_00 = wxMarkupParserAttrOutput::vftable;
  local_4 = 0;
  *piVar1 = 0;
  param_1_00[2] = 0;
  param_1_00[3] = 0;
  uVar3 = FUN_009b7d80(param_1,param_2,param_3);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_009b7e30(*piVar1 + 1);
  if (*piVar1 * 0x30 + param_1_00[3] != 0) {
    FUN_009b7c20(uVar3);
  }
  *piVar1 = *piVar1 + 1;
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_009b7ba0(uVar2);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009b8010(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x009b8012. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x60))();
  return;
}



void __fastcall FUN_009b8020(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x009b8022. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 100))();
  return;
}



void __fastcall FUN_009b8030(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x009b8032. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x68))();
  return;
}



int * __thiscall FUN_009b80a0(int *param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = (int)wxColour::vftable;
  FUN_0093b2c0(uVar1);
  (**(code **)(*param_1_00 + 0x2c))(param_1);
  ExceptionList = param_1_00;
  return param_1_00;
}



void FUN_009b8100(uint param_1,uint param_2,int param_3)

{
  int iVar1;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 <= param_1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x55,
                 "wxPrivate::wxVectorMemOpsGeneric<struct wxMarkupParserAttrOutput::Attr>::MemmoveBackward"
                 ,"dest < source",0);
  }
  if (param_3 != 0) {
    iVar1 = param_2 - param_1;
    do {
      if (param_1 != 0) {
        FUN_009b7c20(iVar1 + param_1);
      }
      FUN_009b7ba0();
      param_3 = param_3 + -1;
      param_1 = param_1 + 0x30;
    } while (param_3 != 0);
  }
  return;
}



uint __thiscall FUN_009b8170(int *param_1_00,uint param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  
  if (param_1 == param_2) {
    return param_1;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((uVar4 = *param_1_00 * 0x30 + param_1_00[2], uVar4 <= param_1 || (uVar4 < param_2)))) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x17f,
                 "wxVector<struct wxMarkupParserAttrOutput::Attr>::erase",
                 "first < end() && last <= end()",0);
  }
  iVar1 = (int)(param_1 - param_1_00[2]) / 0x30;
  iVar2 = (int)(param_2 - param_1) / 0x30;
  iVar3 = (int)((*param_1_00 * 0x30 - param_2) + param_1_00[2]) / 0x30;
  if (param_1 < param_2) {
    do {
      FUN_009b7ba0();
      param_1 = param_1 + 0x30;
    } while (param_1 < param_2);
  }
  if (iVar3 != 0) {
    FUN_009b8100(iVar1 * 0x30 + param_1_00[2],(iVar2 + iVar1) * 0x30 + param_1_00[2],iVar3);
  }
  *param_1_00 = *param_1_00 - iVar2;
  return iVar1 * 0x30 + param_1_00[2];
}



undefined4 __thiscall FUN_009b8270(undefined4 param_1_00,byte param_1)

{
  FUN_009b7ea0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_009b8290(int *param_1_00,int param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined **local_6c;
  int local_68;
  undefined **local_64 [5];
  undefined **local_50 [4];
  undefined auStack_40 [4];
  undefined local_3c [44];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5998;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  piVar1 = param_1_00 + 1;
  uVar2 = param_1_00[1] - 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[1] <= uVar2)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x139,
                 "wxVector<struct wxMarkupParserAttrOutput::Attr>::at","idx < m_size",0,
                 DAT_0323f878 ^ (uint)&stack0xffffff88);
  }
  local_68 = *(int *)(uVar2 * 0x30 + param_1_00[3] + 4);
  if (local_68 != 0) {
    *(int *)(local_68 + 4) = *(int *)(local_68 + 4) + 1;
  }
  local_6c = wxFont::vftable;
  local_4 = 0;
  if (*(int *)(param_1 + 0x5c) != 0) {
    FUN_00922320(param_1 + 0x48);
  }
  if (*(int *)(param_1 + 0x74) == 0) {
    uVar4 = 0x5a;
LAB_009b8348:
    FUN_009b8020(uVar4);
  }
  else if (*(int *)(param_1 + 0x74) == 1) {
    uVar4 = 0x5c;
    goto LAB_009b8348;
  }
  if (*(int *)(param_1 + 0x78) == 0) {
    uVar4 = 0x5a;
LAB_009b8364:
    FUN_009b8010(uVar4);
  }
  else if (*(int *)(param_1 + 0x78) == 1) {
    uVar4 = 0x5d;
    goto LAB_009b8364;
  }
  if (*(int *)(param_1 + 0x7c) == 0) {
    uVar4 = 0;
  }
  else {
    if (*(int *)(param_1 + 0x7c) != 1) goto LAB_009b8389;
    uVar4 = 1;
  }
  FUN_009b8030(uVar4);
LAB_009b8389:
  iVar3 = *(int *)(param_1 + 0x6c);
  if (iVar3 == 1) {
    if (*(int *)(param_1 + 0x70) < 1) {
      uVar4 = 0x3f555555;
    }
    else {
      uVar4 = 0x3f99999a;
    }
    FUN_0094a110(uVar4);
  }
  else if (iVar3 == 2) {
    FUN_0094a380(*(undefined4 *)(param_1 + 0x70));
  }
  else if (iVar3 == 3) {
    iVar3 = *(int *)(param_1 + 0x70) + 0x3ff;
    FUN_00922240((int)(iVar3 + (iVar3 >> 0x1f & 0x3ffU)) >> 10);
  }
  FUN_009b80a0(param_1 + 0x24);
  local_4._0_1_ = 1;
  FUN_009b80a0(param_1);
  FUN_009b7d80(&local_6c,local_64,local_50);
  local_4._0_1_ = 2;
  local_64[0] = wxObject::vftable;
  FUN_0083e850();
  local_4 = CONCAT31(local_4._1_3_,3);
  local_50[0] = wxObject::vftable;
  FUN_0083e850();
  (**(code **)(*param_1_00 + 0x48))(local_3c);
  FUN_009b7e30(*piVar1 + 1);
  if (*piVar1 * 0x30 + param_1_00[3] != 0) {
    FUN_009b7c20(auStack_40);
  }
  *piVar1 = *piVar1 + 1;
  puStack_8 = (undefined *)((uint)puStack_8 & 0xffffff00);
  FUN_009b7ba0();
  puStack_8 = (undefined *)0xffffffff;
  FUN_00921450();
  ExceptionList = pvStack_10;
  return;
}



void __thiscall FUN_009b84b0(int *param_1_00,undefined4 param_1)

{
  int *piVar1;
  undefined **local_64;
  undefined4 local_60;
  undefined **local_50;
  undefined4 local_4c;
  undefined auStack_40 [4];
  undefined local_3c [44];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be59e0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4c = 0;
  local_4 = 0;
  local_50 = wxColour::vftable;
  FUN_0093b2c0(DAT_0323f878 ^ (uint)&stack0xffffff94);
  local_60 = 0;
  local_4._0_1_ = 2;
  local_4._1_3_ = 0;
  local_64 = wxColour::vftable;
  FUN_0093b2c0();
  FUN_009b7d80(param_1,&local_64,&local_50);
  local_4._0_1_ = 3;
  local_64 = wxObject::vftable;
  FUN_0083e850();
  local_4 = CONCAT31(local_4._1_3_,4);
  local_50 = wxObject::vftable;
  FUN_0083e850();
  (**(code **)(*param_1_00 + 0x48))(local_3c);
  piVar1 = param_1_00 + 1;
  FUN_009b7e30(param_1_00[1] + 1);
  if (*piVar1 * 0x30 + param_1_00[3] != 0) {
    FUN_009b7c20(auStack_40);
  }
  *piVar1 = *piVar1 + 1;
  puStack_8 = (undefined *)0xffffffff;
  FUN_009b7ba0();
  ExceptionList = pvStack_10;
  return;
}



void __thiscall FUN_009b85b0(int param_1_00,code *param_1)

{
  undefined4 uVar1;
  undefined local_14 [4];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be1c48;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     (*(uint *)(param_1_00 + 4) <= *(uint *)(param_1_00 + 4) - 1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x139,
                 "wxVector<struct wxMarkupParserAttrOutput::Attr>::at","idx < m_size",0,
                 DAT_0323f878 ^ (uint)&stack0xffffffe4);
  }
  uVar1 = (*param_1)(local_14);
  puStack_8 = (undefined *)0x0;
  FUN_009b84b0(uVar1);
  puStack_8 = (undefined *)0xffffffff;
  FUN_00921450();
  ExceptionList = pvStack_10;
  return;
}



undefined4 * __thiscall FUN_009b8650(undefined4 *param_1_00,int param_1,undefined4 *param_3)

{
  undefined4 uVar1;
  undefined **local_34;
  undefined4 local_30;
  undefined **local_20;
  undefined4 local_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5a28;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_1c = 0;
  local_4 = 0;
  local_20 = wxColour::vftable;
  FUN_0093b2c0(DAT_0323f878 ^ (uint)&stack0xffffffbc);
  local_30 = 0;
  local_4._0_1_ = 2;
  local_4._1_3_ = 0;
  local_34 = wxColour::vftable;
  FUN_0093b2c0();
  local_4._0_1_ = 3;
  uVar1 = (**(code **)(**(int **)(param_1 + 8) + 0x54))();
  FUN_009b7f60(uVar1,&local_34,&local_20);
  local_4._0_1_ = 5;
  local_34 = wxObject::vftable;
  FUN_0083e850();
  local_4 = CONCAT31(local_4._1_3_,6);
  local_20 = wxObject::vftable;
  FUN_0083e850();
  *param_1_00 = `anonymous_namespace'::wxMarkupParserMeasureOutput::vftable;
  param_1_00[4] = param_1;
  param_1_00[5] = 0;
  param_1_00[6] = 0;
  param_1_00[7] = param_3;
  if (param_3 != (undefined4 *)0x0) {
    *param_3 = 0;
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_009b8740(int param_1_00,undefined4 *param_1)

{
  param_1[5] = 0;
  param_1[4] = 0;
  param_1[3] = 0;
  param_1[2] = 0;
  param_1[1] = 0;
  *param_1 = 0;
  (**(code **)(**(int **)(param_1_00 + 8) + 0xa0))
            (param_1,param_1 + 1,param_1 + 2,param_1 + 3,param_1 + 4,param_1 + 5);
  return param_1;
}



void __fastcall FUN_009b87b0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009b87bb. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(*(int *)(param_1 + 0x10) + 8) + 0x50))();
  return;
}



void __fastcall FUN_009b87c0(int param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     (*(uint *)(param_1 + 4) <= *(uint *)(param_1 + 4) - 1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x139,
                 "wxVector<struct wxMarkupParserAttrOutput::Attr>::at","idx < m_size",0);
  }
                    // WARNING: Could not recover jumptable at 0x009b880f. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(*(int *)(param_1 + 0x10) + 8) + 0x50))();
  return;
}



void __thiscall FUN_009b8820(int param_1_00,undefined4 param_1)

{
  int unaff_ESI;
  uint *puStack_64;
  int iStack_60;
  uint uStack_5c;
  undefined local_54 [4];
  undefined local_50 [8];
  undefined4 uStack_48;
  uint local_34;
  void *pvStack_30;
  void *pvStack_24;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5a58;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_54;
  uStack_5c = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  iStack_60 = param_1;
  puStack_64 = &local_34;
  FUN_00937650();
  iStack_60 = 0;
  puStack_64 = (uint *)0x0;
  local_4 = 0;
  (**(code **)(**(int **)(*(int *)(param_1_00 + 0x10) + 8) + 0xa4))(&local_34,local_50);
  *(undefined4 *)(param_1_00 + 0x14) = *(undefined4 *)(param_1_00 + 0x14);
  if (*(int *)(param_1_00 + 0x18) < (int)local_54) {
    *(undefined **)(param_1_00 + 0x18) = local_54;
  }
  if (*(int *)(param_1_00 + 0x1c) != 0) {
    FUN_009b8740(&puStack_64);
    if (**(int **)(param_1_00 + 0x1c) < iStack_60 - unaff_ESI) {
      **(int **)(param_1_00 + 0x1c) = iStack_60 - unaff_ESI;
    }
  }
  _free(pvStack_30);
  if (7 < local_34) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_48);
  }
  ExceptionList = pvStack_24;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall
FUN_009b8910(undefined4 *param_1_00,int param_1,undefined4 *param_3,undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined **local_20;
  undefined4 local_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5aa3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_1c = 0;
  local_4 = 0;
  local_20 = wxColour::vftable;
  FUN_0093b2c0(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  local_4 = 1;
  uVar1 = (**(code **)(**(int **)(param_1 + 8) + 0x7c))();
  uVar2 = (**(code **)(**(int **)(param_1 + 8) + 0x54))();
  FUN_009b7f60(uVar2,uVar1,&local_20);
  local_4._0_1_ = 3;
  local_20 = wxObject::vftable;
  FUN_0083e850();
  *param_1_00 = `anonymous_namespace'::wxMarkupParserRenderOutput::vftable;
  param_1_00[4] = param_1;
  param_1_00[5] = *param_3;
  param_1_00[6] = param_3[1];
  param_1_00[7] = param_3[2];
  uVar1 = param_3[3];
  param_1_00[9] = param_4;
  param_1_00[8] = uVar1;
  FUN_00453f4b();
  param_1_00[0xf] = param_1_00[5];
  local_4 = CONCAT31(local_4._1_3_,4);
  puVar3 = (undefined4 *)(**(code **)(**(int **)(param_1 + 8) + 0x84))();
  if (param_1_00 + 10 != puVar3) {
    FUN_0083ea60(puVar3);
  }
  param_1_00[0xc] = puVar3[2];
  *(undefined *)(param_1_00 + 0xd) = *(undefined *)(puVar3 + 3);
  *(undefined *)((int)param_1_00 + 0x35) = *(undefined *)((int)puVar3 + 0xd);
  *(undefined *)((int)param_1_00 + 0x36) = *(undefined *)((int)puVar3 + 0xe);
  *(undefined *)((int)param_1_00 + 0x37) = *(undefined *)((int)puVar3 + 0xf);
  *(undefined *)(param_1_00 + 0xe) = *(undefined *)(puVar3 + 4);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_009b8a40(int param_1_00,int param_1)

{
  char cVar1;
  
  (**(code **)(**(int **)(*(int *)(param_1_00 + 0x10) + 8) + 0x50))(param_1);
  cVar1 = (**(code **)(*(int *)(param_1 + 8) + 0x24))();
  if (cVar1 != '\0') {
    (**(code **)(**(int **)(*(int *)(param_1_00 + 0x10) + 8) + 0x78))(param_1 + 8);
  }
  cVar1 = (**(code **)(*(int *)(param_1 + 0x1c) + 0x24))();
  if (cVar1 != '\0') {
    (**(code **)(**(int **)(*(int *)(param_1_00 + 0x10) + 8) + 0x70))(100);
    (**(code **)(**(int **)(*(int *)(param_1_00 + 0x10) + 8) + 0x80))(param_1 + 0x1c);
  }
  return;
}



void __fastcall FUN_009b8ab0(int param_1)

{
  uint uVar1;
  char cVar2;
  int unaff_retaddr;
  char cStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be5ac8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = *(uint *)(param_1 + 4) - 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 4) <= uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x139,
                 "wxVector<struct wxMarkupParserAttrOutput::Attr>::at","idx < m_size",0,
                 DAT_0323f878 ^ (uint)&stack0xffffffd4);
  }
  (**(code **)(**(int **)(*(int *)(param_1 + 0x10) + 8) + 0x50))
            (uVar1 * 0x30 + *(int *)(param_1 + 0xc));
  cVar2 = (**(code **)(*(int *)(unaff_retaddr + 8) + 0x24))();
  if (cVar2 != '\0') {
    uVar1 = *(uint *)(param_1 + 4) - 1;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 4) <= uVar1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x139,
                   "wxVector<struct wxMarkupParserAttrOutput::Attr>::at","idx < m_size",0);
    }
    (**(code **)(**(int **)(*(int *)(param_1 + 0x10) + 8) + 0x78))
              (uVar1 * 0x30 + 8 + *(int *)(param_1 + 0xc));
  }
  cVar2 = (**(code **)(*(int *)(unaff_retaddr + 0x1c) + 0x24))();
  if (cVar2 != '\0') {
    uVar1 = *(uint *)(param_1 + 4) - 1;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 4) <= uVar1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x139,
                   "wxVector<struct wxMarkupParserAttrOutput::Attr>::at","idx < m_size",0);
    }
    FUN_00458700(uVar1 * 0x30 + *(int *)(param_1 + 0xc) + 0x1c);
    puStack_8 = (undefined *)0x0;
    if (cStack_18 == '\0') {
      (**(code **)(**(int **)(*(int *)(param_1 + 0x10) + 8) + 0x70))(0x6a);
      FUN_004722cb(param_1 + 0x28);
    }
    (**(code **)(**(int **)(*(int *)(param_1 + 0x10) + 8) + 0x80))(&stack0xffffffdc);
    puStack_8 = (undefined *)0xffffffff;
    FUN_0083e850();
  }
  ExceptionList = pvStack_10;
  return;
}



void __thiscall FUN_009b8c50(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int unaff_ESI;
  int unaff_EDI;
  undefined4 uStack_78;
  uint *puStack_74;
  uint uStack_70;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  int local_54;
  undefined4 local_50;
  undefined auStack_4c [4];
  undefined4 uStack_48;
  uint local_34;
  void *local_30;
  void *pvStack_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5b00;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_60;
  uStack_70 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  local_1c = 7;
  local_20 = 0;
  local_30 = (void *)((uint)local_30 & 0xffff0000);
  local_18 = 0;
  puStack_74 = &local_34;
  uStack_78 = param_1;
  local_4 = 0;
  uVar1 = FUN_00937b00();
  if ((*(byte *)(param_1_00 + 0x24) & 1) == 0) {
    uVar1 = 0xffffffff;
  }
  local_5c = *(undefined4 *)(param_1_00 + 0x18);
  local_58 = *(undefined4 *)(param_1_00 + 0x1c);
  local_54 = *(int *)(param_1_00 + 0x20);
  local_60 = *(undefined4 *)(param_1_00 + 0x3c);
  puStack_74 = (uint *)0x0;
  uStack_78 = 0;
  (**(code **)(**(int **)(*(int *)(param_1_00 + 0x10) + 8) + 0xa4))
            (&local_34,&local_58,&local_54,&local_50);
  puStack_74 = (uint *)((int)puStack_74 + (*(int *)(param_1_00 + 0x20) - (unaff_EDI - unaff_ESI)));
  local_5c = 0;
  local_58 = 0;
  local_54 = 0;
  local_50 = 0;
  local_60 = 0;
  local_1c._0_1_ = 1;
  FUN_0094e6e0(auStack_4c,&stack0xffffff9c,&uStack_78,0,uVar1,&local_5c);
  local_1c = (uint)local_1c._1_3_ << 8;
  FUN_008f7630();
  *(int *)(param_1_00 + 0x3c) = *(int *)(param_1_00 + 0x3c) + local_54;
  _free(local_30);
  if (7 < local_34) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_48);
  }
  ExceptionList = pvStack_24;
  ___security_check_cookie_4();
  return;
}



CParkingWnd * __thiscall FUN_009b8dc0(CParkingWnd *param_1_00,byte param_1)

{
  CParkingWnd::~CParkingWnd(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_009b8de0(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  char cVar2;
  uint uVar3;
  undefined4 local_18;
  undefined4 local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5b48;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  FUN_009b8650(param_2,param_3);
  local_4 = 0;
  cVar2 = FUN_009b5bb0(param_1_00);
  if (cVar2 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\generic\\markuptext.cpp",0xe9,"wxMarkupText::Measure",
                   "Assert failure","Invalid markup",uVar3);
    }
    uVar1 = DAT_03238d08;
    *param_1 = DAT_03238d04;
    param_1[1] = uVar1;
    local_4 = 1;
  }
  else {
    *param_1 = local_18;
    param_1[1] = local_14;
    local_4 = 2;
  }
  FUN_009b7cd0();
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_009b8ec0(undefined4 param_1_00,int param_1,int *param_2,undefined4 param_3)

{
  int iVar1;
  int *piVar2;
  int local_5c;
  int local_58;
  int local_54;
  int local_50;
  CParkingWnd local_4c [64];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  iVar1 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5b78;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  piVar2 = (int *)FUN_009b8de0(&local_5c,param_1,&param_1);
  local_54 = *piVar2;
  local_5c = (param_2[2] - local_54) / 2 + *param_2;
  local_58 = (param_2[3] - param_1) / 2 + param_2[1];
  local_50 = param_1;
  FUN_009b8910(iVar1,&local_5c,param_3);
  local_4 = 0;
  FUN_009b5bb0(param_1_00);
  local_4 = 0xffffffff;
  CParkingWnd::~CParkingWnd(local_4c);
  ExceptionList = local_c;
  return;
}



void FUN_009b8f90(void)

{
  FUN_009b85b0(FUN_0094a3d0);
  return;
}



void FUN_009b8fa0(void)

{
  FUN_009b85b0(FUN_0094a440);
  return;
}



void FUN_009b8fb0(void)

{
  FUN_009b85b0(FUN_0094a4b0);
  return;
}



void FUN_009b8fc0(void)

{
  FUN_009b85b0(&LAB_009b8040);
  return;
}



void FUN_009b8fd0(void)

{
  FUN_009b85b0(&LAB_009b8070);
  return;
}



void __fastcall FUN_009b8fe0(int param_1)

{
  uint uVar1;
  undefined **local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be1c48;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = *(uint *)(param_1 + 4) - 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 4) <= uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x139,
                 "wxVector<struct wxMarkupParserAttrOutput::Attr>::at","idx < m_size",0,
                 DAT_0323f878 ^ (uint)&stack0xffffffe4);
  }
  local_10 = *(int *)(uVar1 * 0x30 + *(int *)(param_1 + 0xc) + 4);
  if (local_10 != 0) {
    *(int *)(local_10 + 4) = *(int *)(local_10 + 4) + 1;
  }
  local_14 = wxFont::vftable;
  local_4 = 0;
  FUN_00922290(0x4c);
  FUN_009b84b0(&local_14);
  local_4 = 0xffffffff;
  FUN_00921450();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009b90b0(int *param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_3c [44];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5ba8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = param_1[1] - 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[1] <= uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                 "wxVector<struct wxMarkupParserAttrOutput::Attr>::at","idx < m_size",0,
                 DAT_0323f878 ^ (uint)&stack0xffffffb8);
  }
  FUN_009b7c20(uVar1 * 0x30 + param_1[3]);
  iVar2 = param_1[1] * 0x30 + -0x30 + param_1[3];
  local_4 = 0;
  FUN_009b8170(iVar2,iVar2 + 0x30);
  (**(code **)(*param_1 + 0x4c))(local_3c);
  puStack_8 = (undefined *)0xffffffff;
  FUN_009b7ba0();
  ExceptionList = pvStack_10;
  return;
}



void __fastcall thunk_FUN_009b90b0(int *param_1)

{
  uint uVar1;
  int iVar2;
  undefined auStack_3c [44];
  void *pvStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be5ba8;
  pvStack_c = ExceptionList;
  ExceptionList = &pvStack_c;
  uVar1 = param_1[1] - 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[1] <= uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                 "wxVector<struct wxMarkupParserAttrOutput::Attr>::at","idx < m_size",0,
                 DAT_0323f878 ^ (uint)&stack0xffffffb8);
  }
  FUN_009b7c20(uVar1 * 0x30 + param_1[3]);
  iVar2 = param_1[1] * 0x30 + -0x30 + param_1[3];
  uStack_4 = 0;
  FUN_009b8170(iVar2,iVar2 + 0x30);
  (**(code **)(*param_1 + 0x4c))(auStack_3c);
  puStack_8 = (undefined *)0xffffffff;
  FUN_009b7ba0();
  ExceptionList = pvStack_10;
  return;
}



void FUN_009b9190(void)

{
  FUN_009b90b0();
  return;
}



undefined * FUN_009b91a0(void)

{
  return &DAT_0323c78c;
}



undefined ** FUN_009b91b0(void)

{
  return &PTR_u_wxPopupTransientWindow_0323c7a4;
}



undefined ** FUN_009b91c0(void)

{
  return &PTR_DAT_00d74e50;
}



undefined * FUN_009b91d0(void)

{
  return &DAT_032e9964;
}



undefined ** FUN_009b91e0(void)

{
  return &PTR_DAT_00d74e58;
}



undefined * FUN_009b91f0(void)

{
  return &DAT_032e99b8;
}



undefined ** FUN_009b9200(void)

{
  return &PTR_PTR_00d74e60;
}



undefined * FUN_009b9210(void)

{
  return &DAT_032e9a0c;
}



undefined FUN_009b9220(void)

{
  return 1;
}



void __fastcall FUN_009b9230(int param_1)

{
  char cVar1;
  
  if (*(int *)(param_1 + 0x168) != 0) {
    cVar1 = FUN_0091c050(*(undefined4 *)(param_1 + 0x170));
    if (cVar1 == '\0') {
      *(undefined4 *)(param_1 + 0x170) = 0;
    }
    cVar1 = (**(code **)(**(int **)(param_1 + 0x168) + 0x158))();
    if (cVar1 != '\0') {
      FUN_0091fac0();
    }
    *(undefined4 *)(param_1 + 0x168) = 0;
  }
  if (*(int *)(param_1 + 0x16c) == 0) {
    *(undefined4 *)(param_1 + 0x16c) = 0;
  }
  else {
    cVar1 = FUN_0091c050(*(undefined4 *)(param_1 + 0x174));
    *(undefined4 *)(param_1 + 0x16c) = 0;
    if (cVar1 == '\0') {
      *(undefined4 *)(param_1 + 0x174) = 0;
      return;
    }
  }
  return;
}



undefined __thiscall FUN_009b92b0(int param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined uVar2;
  
  if (((char)param_1 == '\0') && (*(int *)(param_1_00 + 0x168) != 0)) {
    cVar1 = (**(code **)(**(int **)(param_1_00 + 0x168) + 0x158))();
    if (cVar1 != '\0') {
      FUN_0091fac0();
    }
  }
  uVar2 = FUN_009b9e60(param_1);
  if (((char)param_1 != '\0') && (*(int *)(param_1_00 + 0x168) != 0)) {
    FUN_0091f8e0();
  }
  return uVar2;
}



void __fastcall FUN_009b9330(undefined4 *param_1)

{
  *param_1 = wxPopupWindowBase::vftable;
  FUN_00927e70();
  return;
}



undefined4 * FUN_009b9340(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x168);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_009280b0(uVar1);
    *puVar2 = wxPopupWindow::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 * FUN_009b93a0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x178);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_009280b0(uVar1);
    *puVar2 = wxPopupTransientWindow::vftable;
    puVar2[0x5b] = 0;
    puVar2[0x5a] = 0;
    puVar2[0x5d] = 0;
    puVar2[0x5c] = 0;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __thiscall FUN_009b9430(int *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  int unaff_EBP;
  int iVar6;
  int *unaff_retaddr;
  int local_38;
  int iStack_34;
  int *local_30;
  int local_2c;
  int *local_28;
  undefined4 local_24;
  undefined4 local_1c;
  int local_18;
  int local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  int *local_4;
  
  local_4 = (int *)0xffffffff;
  puStack_8 = &LAB_00be5bd8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_28 = param_1_00;
  iVar2 = FUN_0099a500(param_1,DAT_0323f878 ^ (uint)&stack0xffffffb8);
  if (iVar2 == -1) {
    iVar6 = 0;
    local_24 = 0;
    piVar3 = (int *)FUN_008f78a0(&local_1c);
    local_38 = *piVar3;
    iVar2 = piVar3[1];
  }
  else {
    FUN_0099a810(iVar2);
    local_4 = (int *)0x0;
    FUN_0099a590(&local_1c);
    local_4 = (int *)0xffffffff;
    FUN_0099a3d0();
    local_24 = local_1c;
    local_38 = local_14;
    iVar6 = local_18;
    iVar2 = local_10;
  }
  (**(code **)(*param_1_00 + 0x278))(&local_2c,&local_30);
  iVar5 = unaff_retaddr[1] + *(int *)(param_1 + 4);
  if ((iVar2 + iVar6 < local_38 + iVar5) && (local_38 < *(int *)(param_1 + 4))) {
    iVar5 = iVar5 - (unaff_retaddr[1] + local_38);
  }
  iVar2 = *local_4;
  iVar4 = (**(code **)(*DAT_032bcb68 + 0xe4))();
  iVar6 = *unaff_retaddr;
  iVar1 = iVar6;
  if (iVar4 == 2) {
    iVar1 = -(iVar6 + iStack_34);
  }
  iVar2 = iVar2 + iVar1;
  if ((unaff_EBP + local_2c < iStack_34 + iVar2) && (iStack_34 < *local_4)) {
    iVar2 = iVar2 - (iVar6 + iStack_34);
  }
  (**(code **)(*local_30 + 0x288))(iVar2,iVar5,0xffffffff,0xffffffff,8);
  ExceptionList = local_28;
  return;
}



undefined4 * __thiscall FUN_009b9590(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5c08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009280b0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  param_1_00[0x5b] = 0;
  param_1_00[0x5a] = 0;
  param_1_00[0x5d] = 0;
  param_1_00[0x5c] = 0;
  *param_1_00 = wxPopupTransientWindow::vftable;
  FUN_009b9d80(param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009b9610(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5c08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxPopupTransientWindow::vftable;
  local_4 = 0;
  if ((param_1[0x5c] != 0) && (*(int *)(param_1[0x5c] + 0xc) != 0)) {
    FUN_009b9230(uVar1);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if ((param_1[0x5d] != 0) && (*(int *)(param_1[0x5d] + 0xc) != 0)) {
      FUN_008402e0("..\\..\\src\\common\\popupcmn.cpp",0xe8,
                   "wxPopupTransientWindow::~wxPopupTransientWindow",
                   "!m_handlerFocus || !m_handlerFocus->GetNextHandler()",0);
    }
    if (((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[0x5c] != 0)) &&
       (*(int *)(param_1[0x5c] + 0xc) != 0)) {
      FUN_008402e0("..\\..\\src\\common\\popupcmn.cpp",0xe9,
                   "wxPopupTransientWindow::~wxPopupTransientWindow",
                   "!m_handlerPopup || !m_handlerPopup->GetNextHandler()",0);
    }
  }
  if ((int *)param_1[0x5d] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x5d] + 4))(1);
  }
  if ((int *)param_1[0x5c] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x5c] + 4))(1);
  }
  local_4 = 0xffffffff;
  *param_1 = wxPopupWindowBase::vftable;
  FUN_00927e70();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009b9720(int *param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  LONG LVar3;
  int iVar4;
  int *unaff_retaddr;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be5c46;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  if (param_1[0x13] == 0) {
    param_1[0x5a] = (int)param_1;
  }
  else {
    param_1[0x5a] = *(int *)(param_1[0x15] + 8);
  }
  (**(code **)(*param_1 + 0xcc))(1,uVar1);
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if ((param_1[0x5d] != 0) && (*(int *)(param_1[0x5d] + 0xc) != 0)) {
      FUN_008402e0("..\\..\\src\\common\\popupcmn.cpp",0x11a,"wxPopupTransientWindow::Popup",
                   "!m_handlerFocus || !m_handlerFocus->GetNextHandler()",0);
    }
    if (((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[0x5c] != 0)) &&
       (*(int *)(param_1[0x5c] + 0xc) != 0)) {
      FUN_008402e0("..\\..\\src\\common\\popupcmn.cpp",0x11b,"wxPopupTransientWindow::Popup",
                   "!m_handlerPopup || !m_handlerPopup->GetNextHandler()",0);
    }
  }
  if (param_1[0x5c] == 0) {
    puVar2 = (undefined4 *)operator_new(0x44);
    puStack_8 = (undefined *)0x0;
    if (puVar2 == (undefined4 *)0x0) {
      puVar2 = (undefined4 *)0x0;
    }
    else {
      FUN_00845b70();
      *puVar2 = wxPopupWindowHandler::vftable;
      puVar2[0x10] = param_1;
    }
    puStack_8 = (undefined *)0xffffffff;
    param_1[0x5c] = (int)puVar2;
  }
  FUN_0091bd90(param_1[0x5c]);
  LVar3 = GetWindowLongW((HWND)param_1[0x4f],-0x10);
  if (LVar3 < 0) {
    if (unaff_retaddr == (int *)0x0) {
      unaff_retaddr = param_1;
    }
    param_1[0x5b] = (int)unaff_retaddr;
    (**(code **)(*unaff_retaddr + 0x100))();
  }
  iVar4 = FUN_0091ac40();
  param_1[0x5b] = iVar4;
  if (iVar4 != 0) {
    if (param_1[0x5d] == 0) {
      puVar2 = (undefined4 *)operator_new(0x44);
      puStack_8 = (undefined *)0x1;
      if (puVar2 == (undefined4 *)0x0) {
        puVar2 = (undefined4 *)0x0;
      }
      else {
        FUN_00845b70();
        *puVar2 = wxPopupFocusHandler::vftable;
        puVar2[0x10] = param_1;
      }
      puStack_8 = (undefined *)0xffffffff;
      param_1[0x5d] = (int)puVar2;
    }
    FUN_0091bd90(param_1[0x5d]);
  }
  ExceptionList = param_1;
  return;
}



undefined4 __fastcall FUN_009b98e0(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_0086af40(param_1);
  if (iVar1 == 0) {
    FUN_0086ad60(param_1);
    return 1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\common\\popupcmn.cpp",399,"wxPopupTransientWindow::Destroy",
                 "!wxPendingDelete.Member(this)",L"Shouldn\'t destroy the popup twice.");
  }
  return 0;
}



void __fastcall FUN_009b9930(int *param_1)

{
  (**(code **)(*param_1 + 0xcc))(0);
  FUN_009b9230();
  return;
}



void __thiscall FUN_009b9a40(int param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  undefined **appuStack_58 [2];
  int *piStack_50;
  undefined auStack_34 [4];
  undefined auStack_30 [4];
  undefined auStack_2c [4];
  undefined auStack_28 [16];
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be5c78;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(**(int **)(param_1_00 + 0x40) + 0x350))
                    (param_1,DAT_0323f878 ^ (uint)&stack0xffffff98);
  if (cVar1 == '\0') {
    iVar2 = (**(code **)(**(int **)(param_1 + 8) + 0x264))
                      (*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30));
    if (iVar2 != 9) {
      if (((iVar2 != 10) && (iVar2 != 0xd)) && (PTR_FUN_03235c4c != (undefined *)0x0)) {
        FUN_00840480("..\\..\\src\\common\\popupcmn.cpp",0x240,"wxPopupWindowHandler::OnLeftDown",
                     "Assert failure",L"unexpected HitTest() return value");
      }
      *(undefined *)(param_1 + 0x24) = 1;
      ExceptionList = pvStack_18;
      return;
    }
    FUN_0092b180(param_1);
    pvStack_10 = (void *)0x0;
    (**(code **)(**(int **)(param_1_00 + 0x40) + 0x25c))(auStack_34,auStack_30);
    piVar3 = *(int **)(param_1_00 + 0x40);
    (**(code **)(*piVar3 + 0x348))();
    (**(code **)(*piVar3 + 0x354))();
    piVar3 = (int *)FUN_00910c10(&stack0xffffffa0);
    if (piVar3 != (int *)0x0) {
      (**(code **)(*piVar3 + 0x260))(auStack_2c,auStack_28);
      piStack_50 = piVar3;
      FUN_0091ad80(piVar3[0x1c],appuStack_58);
    }
    puStack_8 = (undefined *)0xffffffff;
    appuStack_58[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = pvStack_10;
  return;
}



void __thiscall FUN_009b9bf0(int param_1_00,int param_1)

{
  int *piVar1;
  char cVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5ca8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  if (DAT_032e9960 == 0) {
    DAT_032e9960 = DAT_032e9960 + 1;
    cVar2 = (**(code **)(**(int **)(*(int *)(param_1_00 + 0x40) + 0x70) + 0x18))
                      (param_1,DAT_0323f878 ^ (uint)&stack0xffffffe8);
    if (cVar2 == '\0') {
      piVar1 = *(int **)(param_1_00 + 0x40);
      (**(code **)(*piVar1 + 0x348))();
      (**(code **)(*piVar1 + 0x354))();
    }
  }
  else {
    DAT_032e9960 = DAT_032e9960 + 1;
    *(undefined *)(param_1 + 0x24) = 1;
  }
  local_4 = 0xffffffff;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032e9960 < 1)) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/recguard.h",0x26,
                 "wxRecursionGuard::~wxRecursionGuard","m_flag > 0",
                 L"unbalanced wxRecursionGuards!?");
  }
  DAT_032e9960 = DAT_032e9960 + -1;
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_009b9ce0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxPopupWindowBase::vftable;
  FUN_00927e70();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_009b9d50(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_009182b0(param_1,param_2);
  (**(code **)(**(int **)(param_1_00 + 0x44) + 0x25c))(param_1,param_2);
  return;
}



undefined __thiscall FUN_009b9d80(int *param_1,uint param_2)

{
  char cVar1;
  bool bVar2;
  undefined uVar3;
  undefined4 unaff_retaddr;
  undefined4 local_34;
  undefined4 uStack_30;
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0a89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar2 = false;
  local_34 = 0;
  (**(code **)(*param_1 + 0xcc))(0,DAT_0323f878 ^ (uint)&stack0xffffffc0);
  cVar1 = FUN_009b9220(unaff_retaddr,0x200000);
  if (cVar1 != '\0') {
    FUN_0043c211("panel");
    puStack_8 = (undefined *)0x0;
    bVar2 = true;
    cVar1 = FUN_00917f80(unaff_retaddr,0xffffffff,&DAT_03238d0c,&DAT_03238d04,param_2 | 0x20000,
                         &local_34);
    uVar3 = 1;
    if (cVar1 != '\0') goto LAB_009b9e1a;
  }
  uVar3 = 0;
LAB_009b9e1a:
  if (bVar2) {
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
  }
  ExceptionList = pvStack_10;
  return uVar3;
}



undefined __thiscall FUN_009b9e60(int param_1_00,char param_1)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_0090ea90();
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  if (param_1 != '\0') {
    BVar2 = SetWindowPos(*(HWND *)(param_1_00 + 0x13c),(HWND)0x0,0,0,0,0,3);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    SetForegroundWindow(*(HWND *)(param_1_00 + 0x13c));
  }
  ExceptionList = local_c;
  return 1;
}



void __fastcall FUN_009b9fb0(undefined4 *param_1)

{
  *param_1 = wxRendererNative::vftable;
  return;
}



void __thiscall FUN_009b9fc0(int **param_1_00,int *param_1)

{
  if (param_1 != *param_1_00) {
    if (*param_1_00 != (int *)0x0) {
      (**(code **)(**param_1_00 + 0x54))(1);
    }
    *param_1_00 = param_1;
  }
  return;
}



void __fastcall FUN_009b9ff0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009b9ff7. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)**(undefined4 **)(param_1 + 4))();
  return;
}



void __fastcall FUN_009ba000(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ba008. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 4))();
  return;
}



void __fastcall FUN_009ba010(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ba018. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 8))();
  return;
}



void __fastcall FUN_009ba020(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ba028. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0xc))();
  return;
}



void __fastcall FUN_009ba030(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ba038. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x10))();
  return;
}



void __fastcall FUN_009ba040(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ba048. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x14))();
  return;
}



void __fastcall FUN_009ba050(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ba058. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x18))();
  return;
}



void __fastcall FUN_009ba060(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ba068. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x20))();
  return;
}



void __fastcall FUN_009ba070(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ba078. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x24))();
  return;
}



undefined4 __thiscall FUN_009ba080(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  (**(code **)(**(int **)(param_1_00 + 4) + 0x28))(param_1,param_2);
  return param_1;
}



void __fastcall FUN_009ba0a0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ba0a8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x30))();
  return;
}



void __fastcall FUN_009ba0b0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ba0b8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x34))();
  return;
}



void __fastcall FUN_009ba0c0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ba0c8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x38))();
  return;
}



void __fastcall FUN_009ba0d0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ba0d8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x3c))();
  return;
}



void __fastcall FUN_009ba0e0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ba0e8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x40))();
  return;
}



void __fastcall FUN_009ba0f0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ba0f8. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 4) + 0x44))();
  return;
}



undefined4 __thiscall FUN_009ba100(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  (**(code **)(**(int **)(param_1_00 + 4) + 0x4c))(param_1,param_2);
  return param_1;
}



undefined4 __thiscall FUN_009ba120(int param_1_00,undefined4 param_1)

{
  (**(code **)(**(int **)(param_1_00 + 4) + 0x50))(param_1);
  return param_1;
}



undefined4 * __thiscall FUN_009ba140(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxRendererNative::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_009ba160(void)

{
  int *piVar1;
  undefined4 uVar2;
  
  if ((_DAT_032e9a54 & 1) == 0) {
    _DAT_032e9a54 = _DAT_032e9a54 | 1;
    DAT_032e9a4c = 0;
    DAT_032e9a50 = '\0';
    _atexit((_func_4879 *)&LAB_00c78ac0);
  }
  if ((DAT_032e9a50 == '\0') && (DAT_032e9a50 = '\x01', DAT_032bcb68 != 0)) {
    piVar1 = (int *)FUN_00841320();
    if (piVar1 != (int *)0x0) {
      uVar2 = (**(code **)(*piVar1 + 0x14))();
      FUN_009b9fc0(uVar2);
    }
  }
  if (DAT_032e9a4c == 0) {
    FUN_009e3670();
    return;
  }
  return;
}



undefined ** FUN_009ba1e0(void)

{
  return &PTR_u_wxBufferedDC_0323c82c;
}



undefined ** FUN_009ba1f0(void)

{
  return &PTR_u_wxBufferedPaintDC_0323c844;
}



void FUN_009ba200(int *param_1)

{
  if (param_1 == DAT_032e9a58) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032e9a5c == '\0')) {
      FUN_00840480("..\\..\\src\\common\\dcbufcmn.cpp",0x51,"wxSharedDCBufferManager::ReleaseBuffer"
                   ,"ms_usingSharedBuffer",L"shared buffer already released");
    }
    DAT_032e9a5c = 0;
    return;
  }
  if (param_1 != (int *)0x0) {
    (**(code **)(*param_1 + 4))(1);
  }
  return;
}



undefined ** FUN_009ba260(void)

{
  return &PTR_u_wxSharedDCBufferManager_0323c85c;
}



void FUN_009ba270(void)

{
  if (DAT_032e9a58 != (int *)0x0) {
    (**(code **)(*DAT_032e9a58 + 4))(1);
    DAT_032e9a58 = (int *)0x0;
  }
  return;
}



undefined4 * FUN_009ba290(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxSharedDCBufferManager::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __fastcall FUN_009ba2f0(int param_1)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined8 local_24;
  int iStack_20;
  undefined8 local_1c;
  
  if (*(int *)(param_1 + 0xc) == 0) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    local_1c = 0xd75cf000d75ce8;
    local_24 = 0xd75d1800000081;
    FUN_00840480("..\\..\\src\\common\\dcbufcmn.cpp",0x81);
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(int **)(param_1 + 0x10) != (int *)0x0) {
      local_1c = CONCAT44(0x9ba317,(int)local_1c);
      cVar1 = (**(code **)(**(int **)(param_1 + 0x10) + 0x10))();
      if (cVar1 != '\0') goto LAB_009ba33c;
    }
    local_1c = 0xd75d5000d75d30;
    local_24 = 0xd75d1800000082;
    FUN_00840480("..\\..\\src\\common\\dcbufcmn.cpp",0x82);
  }
LAB_009ba33c:
  local_1c = 0x3ff0000000000000;
  local_24 = 0x3ff0000000000000;
  (**(code **)(**(int **)(param_1 + 8) + 0xec))();
  if ((*(byte *)(param_1 + 0x14) & 2) != 0) {
    (**(code **)(**(int **)(param_1 + 8) + 0x108))(&local_1c,&iStack_20);
  }
  iVar5 = (int)&local_1c + 4;
  (**(code **)(**(int **)(*(int *)(param_1 + 0xc) + 8) + 0x20))(&stack0xffffffec,iVar5);
  iVar2 = *(int *)(*(int *)(param_1 + 0x10) + 4);
  if (iVar2 != 0) {
    iVar2 = *(int *)(iVar2 + 8);
  }
  iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 4);
  if (iVar3 != 0) {
    iVar3 = *(int *)(iVar3 + 0xc);
  }
  iVar4 = iStack_20;
  if (iVar3 <= iStack_20) {
    iVar4 = iVar3;
  }
  iVar3 = (int)local_1c;
  if (iVar2 <= (int)local_1c) {
    iVar3 = iVar2;
  }
  (**(code **)(**(int **)(*(int *)(param_1 + 0xc) + 8) + 0x170))
            (0,0,iVar3,iVar4,param_1,-(int)local_24,-iVar5,5,0,0xffffffff,0xffffffff);
  *(undefined4 *)(param_1 + 0xc) = 0;
  if ((*(byte *)(param_1 + 0x14) & 4) == 0) {
    return;
  }
  FUN_009ba200(*(undefined4 *)(param_1 + 0x10));
  return;
}



undefined4 * FUN_009ba450(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0094bd80(uVar1);
    *puVar2 = wxBufferedDC::vftable;
    puVar2[3] = 0;
    puVar2[4] = 0;
    puVar2[5] = 0;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



int * FUN_009ba4d0(int param_1,int param_2)

{
  void **ppvVar1;
  void *pvVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be9c16;
  local_c = ExceptionList;
  if (DAT_032e9a5c != '\0') {
    ExceptionList = &local_c;
    pvVar2 = operator_new(8);
    local_4 = 0;
    if (pvVar2 != (void *)0x0) {
      piVar3 = (int *)FUN_008f53f0(param_1,param_2,0xffffffff);
      ExceptionList = local_c;
      return piVar3;
    }
    ExceptionList = local_c;
    return (int *)0x0;
  }
  ppvVar1 = &local_c;
  if (DAT_032e9a58 != (int *)0x0) {
    iVar5 = DAT_032e9a58[1];
    if (iVar5 == 0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *(int *)(iVar5 + 8);
    }
    if (param_1 <= iVar4) {
      if (iVar5 == 0) {
        iVar5 = 0;
      }
      else {
        iVar5 = *(int *)(iVar5 + 0xc);
      }
      if (param_2 <= iVar5) {
        DAT_032e9a5c = 1;
        return DAT_032e9a58;
      }
    }
    ExceptionList = &local_c;
    (**(code **)(*DAT_032e9a58 + 4))(1,DAT_0323f878 ^ (uint)&stack0xffffffe8);
    ppvVar1 = (void **)ExceptionList;
  }
  ExceptionList = ppvVar1;
  if (param_1 == 0) {
    param_1 = 1;
  }
  if (param_2 == 0) {
    param_2 = 1;
  }
  pvVar2 = operator_new(8);
  local_4 = 1;
  if (pvVar2 == (void *)0x0) {
    DAT_032e9a58 = (int *)0x0;
  }
  else {
    DAT_032e9a58 = (int *)FUN_008f53f0(param_1,param_2,0xffffffff);
  }
  DAT_032e9a5c = 1;
  ExceptionList = local_c;
  return DAT_032e9a58;
}



void __thiscall FUN_009ba5f0(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  char cVar2;
  undefined4 uVar3;
  
  if ((param_1 < -1) || (param_2 < -1)) {
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    FUN_008402e0("..\\..\\src\\common\\dcbufcmn.cpp",0x6c,"wxBufferedDC::UseBuffer",
                 "w >= -1 && h >= -1","Invalid buffer size");
    return;
  }
  if ((*(int **)(param_1_00 + 0x10) == (int *)0x0) ||
     (cVar2 = (**(code **)(**(int **)(param_1_00 + 0x10) + 0x10))(), cVar2 == '\0')) {
    if ((param_1 == -1) || (param_2 == -1)) {
      (**(code **)(**(int **)(*(int *)(param_1_00 + 0xc) + 8) + 0x20))(&param_1,&param_2);
    }
    uVar3 = FUN_009ba4d0(param_1,param_2);
    *(uint *)(param_1_00 + 0x14) = *(uint *)(param_1_00 + 0x14) | 4;
    *(undefined4 *)(param_1_00 + 0x10) = uVar3;
  }
  FUN_0094c840(*(undefined4 *)(param_1_00 + 0x10));
  iVar1 = *(int *)(param_1_00 + 0xc);
  if (((iVar1 != 0) && (*(int *)(iVar1 + 8) != 0)) &&
     (cVar2 = (**(code **)(**(int **)(iVar1 + 8) + 0x10))(), cVar2 != '\0')) {
    FUN_0094c6b0(*(undefined4 *)(param_1_00 + 0xc));
    return;
  }
  return;
}



undefined ** FUN_009ba6c0(void)

{
  return &PTR_u_wxMemoryDCImpl_0323c894;
}



void __fastcall FUN_009ba6d0(int *param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  if ((*(byte *)(param_1 + 4) & 2) != 0) {
    iVar1 = *param_1;
    uVar2 = FUN_008f8a00(10);
    (**(code **)(iVar1 + 0x60))(uVar2);
    iVar1 = *param_1;
    uVar2 = FUN_008f8330(0x1a);
    (**(code **)(iVar1 + 0x58))(uVar2);
    SetBkMode((HDC)param_1[0x42],1);
  }
  return;
}



uint __thiscall FUN_009ba730(int param_1_00,int param_1)

{
  undefined **in_EAX;
  undefined **ppuVar1;
  HDC pHVar2;
  uint uVar3;
  undefined4 *puVar4;
  
  if (param_1 == 0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    puVar4 = *(undefined4 **)(param_1 + 8);
  }
  if (puVar4 != (undefined4 *)0x0) {
    ppuVar1 = (undefined **)(**(code **)*puVar4)();
    in_EAX = ppuVar1;
    if (ppuVar1 == &PTR_u_wxMSWDCImpl_0323af3c) goto LAB_009ba787;
    if (ppuVar1[3] != (undefined *)0x0) {
      in_EAX = (undefined **)FUN_0048a047(&PTR_u_wxMSWDCImpl_0323af3c);
      if ((char)in_EAX != '\0') goto LAB_009ba787;
    }
    if (ppuVar1[4] != (undefined *)0x0) {
      in_EAX = (undefined **)FUN_0048a047(&PTR_u_wxMSWDCImpl_0323af3c);
      if ((char)in_EAX != '\0') goto LAB_009ba787;
    }
  }
  puVar4 = (undefined4 *)0x0;
LAB_009ba787:
  if (param_1 == 0) {
    pHVar2 = (HDC)0x0;
  }
  else {
    if (puVar4 == (undefined4 *)0x0) {
      *(byte *)(param_1_00 + 0x10) = *(byte *)(param_1_00 + 0x10) & 0xfd;
      return (uint)in_EAX & 0xffffff00;
    }
    pHVar2 = (HDC)puVar4[0x42];
  }
  pHVar2 = CreateCompatibleDC(pHVar2);
  *(byte *)(param_1_00 + 0x104) = *(byte *)(param_1_00 + 0x104) | 1;
  *(HDC *)(param_1_00 + 0x108) = pHVar2;
  uVar3 = CONCAT31((int3)((uint)pHVar2 >> 8),
                   (pHVar2 != (HDC)0x0) * '\x02' ^ *(byte *)(param_1_00 + 0x10)) & 0xffffff02;
  *(byte *)(param_1_00 + 0x10) = *(byte *)(param_1_00 + 0x10) ^ (byte)uVar3;
  return CONCAT31((int3)(uVar3 >> 8),*(byte *)(param_1_00 + 0x10) >> 1) & 0xffffff01;
}



void __thiscall FUN_009ba7e0(int param_1,int *param_2,undefined4 *param_3)

{
  char cVar1;
  int iVar2;
  
  cVar1 = (**(code **)(*(int *)(param_1 + 0xfc) + 0x10))();
  if (cVar1 == '\0') {
    *param_2 = 0;
    *param_3 = 0;
    return;
  }
  iVar2 = *(int *)(param_1 + 0x100);
  if (iVar2 != 0) {
    iVar2 = *(int *)(iVar2 + 8);
  }
  *param_2 = iVar2;
  if (*(int *)(param_1 + 0x100) == 0) {
    *param_3 = 0;
    return;
  }
  *param_3 = *(undefined4 *)(*(int *)(param_1 + 0x100) + 0xc);
  return;
}



int * __thiscall FUN_009ba840(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  uint uVar2;
  HDC pHVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5da8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_0098fb70(param_1);
  local_4 = 0;
  *param_1_00 = (int)wxMemoryDCImpl::vftable;
  pHVar3 = CreateCompatibleDC((HDC)0x0);
  *(byte *)(param_1_00 + 0x41) = *(byte *)(param_1_00 + 0x41) | 1;
  param_1_00[0x42] = (int)pHVar3;
  *(byte *)(param_1_00 + 4) =
       *(byte *)(param_1_00 + 4) ^ ((pHVar3 != (HDC)0x0) * '\x02' ^ *(byte *)(param_1_00 + 4)) & 2;
  if ((*(byte *)(param_1_00 + 4) & 2) != 0) {
    iVar1 = *param_1_00;
    uVar4 = FUN_008f8a00(10,uVar2);
    (**(code **)(iVar1 + 0x60))(uVar4);
    iVar1 = *param_1_00;
    uVar4 = FUN_008f8330(0x1a);
    (**(code **)(iVar1 + 0x58))(uVar4);
    SetBkMode((HDC)param_1_00[0x42],1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_009ba900(int *param_1_00,undefined4 *param_1,int param_2)

{
  int iVar1;
  bool bVar2;
  undefined *puVar3;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be5d79;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar2 = param_2 != 0;
  if (bVar2) {
    iVar1 = param_1_00[0x42];
    puVar3 = local_14;
    (**(code **)(*param_1_00 + 0x198))(puVar3,param_2,iVar1,DAT_0323f878 ^ (uint)&stack0xffffffe0);
    iVar1 = FUN_008f5600(puVar3,param_2,iVar1);
  }
  else {
    iVar1 = (**(code **)(*param_1_00 + 0x198))();
  }
  *param_1 = wxObject::vftable;
  iVar1 = *(int *)(iVar1 + 4);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1 = wxBitmap::vftable;
  uStack_4 = 0;
  if (bVar2) {
    FUN_008f7630();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_009ba9c0(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be99f8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_0098fb70(param_1);
  local_4 = 0;
  *param_1_00 = wxMemoryDCImpl::vftable;
  if (param_2 != 0) {
    FUN_009ba730(param_2);
    FUN_009ba6d0();
    ExceptionList = local_c;
    return param_1_00;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\dcmemory.cpp",0x3d,"wxMemoryDCImpl::wxMemoryDCImpl",
                 &DAT_00d680d8,L"NULL dc in wxMemoryDC ctor",uVar1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_009baa70(char *param_1_00,char *param_1)

{
  char cVar1;
  int iVar2;
  int iVar3;
  HGDIOBJ pvVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd4070;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(HGDIOBJ *)(param_1_00 + 0x10c) != (HGDIOBJ)0x0) {
    SelectObject(*(HDC *)(param_1_00 + 0x108),*(HGDIOBJ *)(param_1_00 + 0x10c));
    cVar1 = (**(code **)(*(int *)(param_1_00 + 0xfc) + 0x10))();
    if (cVar1 != '\0') {
      FUN_008f2620();
      if (param_1_00 != s___AVwxBMPResourceHandler___03238bb8 + 0x14) {
        FUN_0083ea60();
      }
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    iVar2 = FUN_008f25e0();
    if (iVar2 != 0) {
      iVar2 = *(int *)(param_1_00 + 8);
      iVar3 = FUN_008f25e0();
      if (iVar3 != iVar2) {
        FUN_00840480();
      }
    }
  }
  if (param_1_00 + 0xfc != param_1) {
    FUN_0083ea60();
  }
  if ((*(int *)(param_1_00 + 0x100) != 0) &&
     (pvVar4 = *(HGDIOBJ *)(*(int *)(param_1_00 + 0x100) + 0x14), pvVar4 != (HGDIOBJ)0x0)) {
    FUN_008f2620();
    pvVar4 = SelectObject(*(HDC *)(param_1_00 + 0x108),pvVar4);
    if (pvVar4 == (HGDIOBJ)0x0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480();
      }
    }
    else if (*(int *)(param_1_00 + 0x10c) == 0) {
      *(HGDIOBJ *)(param_1_00 + 0x10c) = pvVar4;
    }
  }
  ExceptionList = local_c;
  return;
}



int * __thiscall FUN_009bac90(int *param_1_00,undefined4 param_1,undefined4 param_3)

{
  int iVar1;
  uint uVar2;
  HDC pHVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5da8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_0098fb70(param_1);
  local_4 = 0;
  *param_1_00 = (int)wxMemoryDCImpl::vftable;
  pHVar3 = CreateCompatibleDC((HDC)0x0);
  *(byte *)(param_1_00 + 0x41) = *(byte *)(param_1_00 + 0x41) | 1;
  param_1_00[0x42] = (int)pHVar3;
  *(byte *)(param_1_00 + 4) =
       *(byte *)(param_1_00 + 4) ^ ((pHVar3 != (HDC)0x0) * '\x02' ^ *(byte *)(param_1_00 + 4)) & 2;
  if ((*(byte *)(param_1_00 + 4) & 2) != 0) {
    iVar1 = *param_1_00;
    uVar4 = FUN_008f8a00(10,uVar2);
    (**(code **)(iVar1 + 0x60))(uVar4);
    iVar1 = *param_1_00;
    uVar4 = FUN_008f8330(0x1a);
    (**(code **)(iVar1 + 0x58))(uVar4);
    SetBkMode((HDC)param_1_00[0x42],1);
  }
  FUN_009baa70(param_3);
  ExceptionList = local_c;
  return param_1_00;
}



undefined * FUN_009bad60(void)

{
  return &DAT_0323c8cc;
}



undefined4 * __thiscall FUN_009bad70(undefined4 *param_1_00,undefined4 param_1)

{
  HDC hdc;
  
  FUN_0098fb70(param_1);
  *param_1_00 = wxScreenDCImpl::vftable;
  hdc = GetDC((HWND)0x0);
  param_1_00[0x42] = hdc;
  SetBkMode(hdc,1);
  return param_1_00;
}



undefined4 __thiscall FUN_009bada0(undefined4 param_1_00,byte param_1)

{
  FUN_009504a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Different Base Names
//  public: virtual class COleControlContainer * __thiscall COccManager::CreateContainer(class CWnd
// *)
//  public: virtual class COleControlSite * __thiscall COleControlSiteFactory::CreateSite(class
// COleControlContainer *,class CControlCreationInfo const &)
// 
// Library: Visual Studio 2008 Release

undefined4 FID_conflict_CreateContainer(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xbc);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009e38b0(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_009bae30(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xfc);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009e3d10(param_1,param_2,param_3);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_009baeb0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xfc);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009e3d80(param_1,param_2,param_3);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_009baf30(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x2b0);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009e4dc0(param_1,param_2);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_009bafb0(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x2b0);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009e4e80(param_1,param_2);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_009bb030(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(700);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009e50b0(param_1,param_2);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_009bb0b0(undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x1b0);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009e7250(param_1,param_2);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x18);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009e4d90(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined ** FUN_009bb1a0(void)

{
  return &PTR_u_wxPrintNativeDataBase_0323ca18;
}



undefined ** FUN_009bb1b0(void)

{
  return &PTR_u_wxPrintFactoryModule_0323ca30;
}



undefined ** FUN_009bb1c0(void)

{
  return &PTR_u_wxPrinterBase_0323ca48;
}



undefined ** FUN_009bb1d0(void)

{
  return &PTR_PTR_00d76408;
}



undefined * FUN_009bb1e0(void)

{
  return &DAT_032e9a70;
}



undefined4 __fastcall FUN_009bb230(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  
  piVar2 = (int *)(**(code **)(*param_1 + 0x344))();
  if (piVar2 == (int *)0x0) {
    return 0;
  }
  iVar3 = (**(code **)(*piVar2 + 0x14))();
  iVar4 = (**(code **)(*piVar2 + 0x58))();
  if (iVar3 < iVar4) {
    piVar2 = (int *)(**(code **)(*piVar2 + 0x1c))();
    cVar1 = (**(code **)(*piVar2 + 0x24))(iVar3 + 1);
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



undefined4 __fastcall FUN_009bb290(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  
  piVar2 = (int *)(**(code **)(*param_1 + 0x344))();
  if (piVar2 == (int *)0x0) {
    return 0;
  }
  iVar3 = (**(code **)(*piVar2 + 0x14))();
  iVar4 = (**(code **)(*piVar2 + 0x5c))();
  if (iVar4 < iVar3) {
    piVar2 = (int *)(**(code **)(*piVar2 + 0x1c))();
    cVar1 = (**(code **)(*piVar2 + 0x24))(iVar3 + -1);
    if (cVar1 != '\0') {
      return 1;
    }
  }
  return 0;
}



void __fastcall FUN_009bb2f0(int *param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int *piVar5;
  
  if (param_1[0x5f] != 0) {
    uVar1 = (**(code **)(*(int *)(param_1[0x5f] + 0x194) + 0x18))();
    iVar2 = (**(code **)(*(int *)(param_1[0x5f] + 0x194) + 4))();
    if (uVar1 < iVar2 - 1U) {
      iVar2 = *(int *)(param_1[0x5f] + 0x194);
      iVar3 = (**(code **)(*(int *)(param_1[0x5f] + 0x194) + 0x18))();
      (**(code **)(iVar2 + 0x14))(iVar3 + 1);
      uVar4 = (**(code **)(*param_1 + 0x340))();
      iVar2 = (**(code **)(*param_1 + 0x344))();
      if (iVar2 != 0) {
        piVar5 = (int *)(**(code **)(*param_1 + 0x344))();
        (**(code **)(*piVar5 + 0x4c))(uVar4);
      }
    }
  }
  return;
}



void __fastcall FUN_009bb3a0(int *param_1)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int *piVar4;
  
  if ((param_1[0x5f] != 0) &&
     (iVar1 = (**(code **)(*(int *)(param_1[0x5f] + 0x194) + 0x18))(), 0 < iVar1)) {
    iVar1 = *(int *)(param_1[0x5f] + 0x194);
    iVar2 = (**(code **)(*(int *)(param_1[0x5f] + 0x194) + 0x18))();
    (**(code **)(iVar1 + 0x14))(iVar2 + -1);
    uVar3 = (**(code **)(*param_1 + 0x340))();
    iVar1 = (**(code **)(*param_1 + 0x344))();
    if (iVar1 != 0) {
      piVar4 = (int *)(**(code **)(*param_1 + 0x344))();
      (**(code **)(*piVar4 + 0x4c))(uVar3);
    }
  }
  return;
}



undefined ** FUN_009bb430(void)

{
  return &PTR_u_wxPrintPreviewBase_0323cb38;
}



undefined4 __fastcall FUN_009bb440(int param_1)

{
  return *(undefined4 *)(param_1 + 0xd0);
}



void __thiscall FUN_009bb450(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 200) = param_1;
  return;
}



undefined4 __fastcall FUN_009bb460(int param_1)

{
  return *(undefined4 *)(param_1 + 200);
}



undefined4 __fastcall FUN_009bb470(int param_1)

{
  return *(undefined4 *)(param_1 + 0xcc);
}



void __thiscall FUN_009bb480(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0xbc) = param_1;
  return;
}



void __thiscall FUN_009bb490(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0xb8) = param_1;
  return;
}



undefined4 __fastcall FUN_009bb4a0(int param_1)

{
  return *(undefined4 *)(param_1 + 0xbc);
}



undefined4 __fastcall FUN_009bb4b0(int param_1)

{
  return *(undefined4 *)(param_1 + 0xb8);
}



undefined4 __fastcall FUN_009bb4c0(int *param_1)

{
  char cVar1;
  
  if ((param_1[0x30] == 0) && (*(char *)(param_1 + 0x31) == '\0')) {
    cVar1 = (**(code **)(*param_1 + 0x48))(param_1[0x34]);
    if (cVar1 != '\0') {
      return 1;
    }
    *(undefined *)(param_1 + 0x31) = 1;
  }
  return 0;
}



int __fastcall FUN_009bb500(int param_1)

{
  return param_1 + 8;
}



undefined4 __fastcall FUN_009bb510(int param_1)

{
  return *(undefined4 *)(param_1 + 0xd4);
}



undefined4 __fastcall FUN_009bb520(int param_1)

{
  return *(undefined4 *)(param_1 + 0xf4);
}



undefined4 __fastcall FUN_009bb530(int param_1)

{
  return *(undefined4 *)(param_1 + 0xf0);
}



undefined __fastcall FUN_009bb540(int param_1)

{
  return *(undefined *)(param_1 + 0xf8);
}



void __thiscall FUN_009bb550(int param_1_00,undefined param_1)

{
  *(undefined *)(param_1_00 + 0xf8) = param_1;
  return;
}



void __thiscall FUN_009bb680(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  
  if (*(int *)(param_1_00 + 0x17c) == 0) {
    *(undefined *)(param_1 + 0x5f) = 1;
    *(undefined *)(param_1 + 0x5d) = 0;
    return;
  }
  uVar1 = (**(code **)(*(int *)(*(int *)(param_1_00 + 0x17c) + 0x194) + 0x18))();
  iVar2 = (**(code **)(*(int *)(*(int *)(param_1_00 + 0x17c) + 0x194) + 4))();
  *(undefined *)(param_1 + 0x5f) = 1;
  *(bool *)(param_1 + 0x5d) = uVar1 < iVar2 - 1U;
  return;
}



void __fastcall FUN_009bb750(int *param_1)

{
  undefined4 uVar1;
  int iVar2;
  int *piVar3;
  
  uVar1 = (**(code **)(*param_1 + 0x340))();
  iVar2 = (**(code **)(*param_1 + 0x344))();
  if (iVar2 != 0) {
    piVar3 = (int *)(**(code **)(*param_1 + 0x344))();
    (**(code **)(*piVar3 + 0x4c))(uVar1);
  }
  return;
}



undefined4 __thiscall FUN_009bb790(undefined4 param_1_00,byte param_1)

{
  FUN_00924620();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_009bb7b0(void)

{
  if (DAT_032e9a60 == (undefined4 *)0x0) {
    DAT_032e9a60 = (undefined4 *)operator_new(4);
    if (DAT_032e9a60 != (undefined4 *)0x0) {
      *DAT_032e9a60 = wxNativePrintFactory::vftable;
      return;
    }
    DAT_032e9a60 = (undefined4 *)0x0;
  }
  return;
}



undefined4 * __thiscall FUN_009bb7e0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxPrintFactory::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_009bb800(undefined4 *param_1)

{
  param_1[1] = 0;
  *param_1 = wxPrintNativeDataBase::vftable;
  param_1[2] = 1;
  return;
}



void FUN_009bb820(void)

{
  if (DAT_032e9a60 != (undefined4 *)0x0) {
    (**(code **)*DAT_032e9a60)(1);
  }
  DAT_032e9a60 = (undefined4 *)0x0;
  return;
}



undefined4 * FUN_009bb840(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxPrintFactoryModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 * __thiscall FUN_009bb8a0(undefined4 *param_1_00,int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5de3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxPrinterBase::vftable;
  FUN_009be3c0(uVar1);
  param_1_00[0x2e] = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  DAT_032e9a64 = 0;
  DAT_032e9a68 = 0;
  if (param_1 != 0) {
    FUN_009be460(param_1);
  }
  DAT_032e9a6c = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009bb930(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxPrinterBase::vftable;
  local_4 = 0;
  FUN_009be040(uVar1);
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009bb9a0(int *param_1)

{
  uint uVar1;
  undefined local_18 [8];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5e08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_0094be80(param_1);
  local_4 = 0;
  (**(code **)(*param_1 + 0x168))(local_18,uVar1);
  if (param_1[0x78] != 0) {
    (**(code **)(*(int *)param_1[0x78] + 0x38))(param_1,&stack0xffffffe4);
  }
  puStack_8 = (undefined *)0xffffffff;
  FUN_00457221();
  ExceptionList = pvStack_10;
  return;
}



void __fastcall FUN_009bba80(int *param_1)

{
  undefined4 uVar1;
  undefined local_20 [8];
  void *pvStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc9a8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_008ff080(local_20,0xc,DAT_0323f878 ^ (uint)&stack0xffffffdc);
  local_4 = 0;
  (**(code **)(*param_1 + 0x17c))(uVar1);
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  (**(code **)(*param_1 + 0x15c))(1,0);
  FUN_00910040(puStack_8);
  ExceptionList = pvStack_18;
  return;
}



void __fastcall FUN_009bbb20(int *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  int **ppiVar3;
  int **ppiVar4;
  int *local_20;
  int *local_1c;
  int *local_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5e38;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  FUN_0094be80(param_1);
  ppiVar4 = &local_20;
  ppiVar3 = &local_1c;
  local_4 = 0;
  (**(code **)(*param_1 + 0x278))(ppiVar3,ppiVar4,uVar1);
  uVar2 = FUN_008f8330(0x1a);
  (**(code **)(*local_18 + 0x58))(uVar2);
  uVar2 = FUN_008f8a00(9);
  (**(code **)(*local_1c + 0x60))(uVar2);
  (**(code **)(*local_20 + 0x140))(0,(int)ppiVar3 + -1,ppiVar4,(int)ppiVar3 + -1);
  FUN_00457221();
  ExceptionList = ppiVar4;
  return;
}



void __fastcall FUN_009bbc10(int *param_1)

{
  int iVar1;
  
  if (param_1[0x8e] == 0) {
    iVar1 = param_1[0x8d];
    if (iVar1 != 0) {
      FUN_008fd4f0();
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar1);
    }
    param_1[0x8d] = 0;
  }
  else if ((param_1[0x8e] == 1) && ((int *)param_1[0x11] != (int *)0x0)) {
    (**(code **)(*(int *)param_1[0x11] + 0xd8))(1);
    (**(code **)(*param_1 + 0x50))();
    return;
  }
  (**(code **)(*param_1 + 0x50))();
  return;
}



void __thiscall FUN_009bbc80(int param_1_00,int *param_1,undefined4 param_2)

{
  *(undefined *)(param_1_00 + 0xf8) = 1;
  *(int **)(param_1_00 + 200) = param_1;
  if (param_1 != (int *)0x0) {
    (**(code **)(*param_1 + 0x34))(param_1_00);
  }
  *(undefined4 *)(param_1_00 + 0xcc) = param_2;
  *(undefined4 *)(param_1_00 + 0xb8) = 0;
  *(undefined4 *)(param_1_00 + 0xbc) = 0;
  *(undefined4 *)(param_1_00 + 0xc0) = 0;
  *(undefined *)(param_1_00 + 0xc4) = 0;
  *(undefined4 *)(param_1_00 + 0xe8) = 0;
  *(undefined4 *)(param_1_00 + 0xec) = 0;
  *(undefined *)(param_1_00 + 0xf9) = 0;
  *(undefined4 *)(param_1_00 + 0xd0) = 1;
  *(undefined4 *)(param_1_00 + 0xd4) = 0x46;
  *(undefined4 *)(param_1_00 + 0xe4) = 10;
  *(undefined4 *)(param_1_00 + 0xe0) = 10;
  *(undefined4 *)(param_1_00 + 0xf0) = 1;
  *(undefined4 *)(param_1_00 + 0xf4) = 1;
  return;
}



void __fastcall FUN_009bbd10(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00be5e73;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxPrintPreviewBase::vftable;
  local_4 = 1;
  if ((int *)param_1[0x32] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x32] + 4))(1,uVar1);
  }
  if ((int *)param_1[0x30] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x30] + 4))(1);
  }
  if ((int *)param_1[0x33] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x33] + 4))(1);
  }
  local_4 = local_4 & 0xffffff00;
  FUN_009be040();
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009bbdc0(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x009bbdc5. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 100))();
  return;
}



void __thiscall FUN_009bbdd0(int param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  int unaff_EBX;
  int *unaff_retaddr;
  int iStack_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  float fStack_4;
  
  (**(code **)(*param_1 + 0x278))(&local_18,&local_14);
  iVar1 = *(int *)(param_1_00 + 200);
  local_18 = *(undefined4 *)(iVar1 + 0x54);
  local_14 = *(undefined4 *)(iVar1 + 0x58);
  uStack_10 = *(undefined4 *)(iVar1 + 0x5c);
  uStack_c = *(undefined4 *)(iVar1 + 0x60);
  fStack_4 = (*(float *)(param_1_00 + 0xd8) *
             ((float)*(int *)(param_1_00 + 0xd4) / 100.0) * (float)*(int *)(param_1_00 + 0xe8)) /
             (float)*(int *)(iVar1 + 0x34);
  iVar1 = FUN_00a49750();
  param_1[2] = iVar1;
  iVar2 = FUN_00a49750();
  fStack_4 = (float)(unaff_EBX - iVar1);
  param_1[3] = iVar2;
  iVar1 = FUN_00a49750();
  *param_1 = iVar1;
  if (iVar1 < *(int *)(param_1_00 + 0xe4)) {
    *param_1 = *(int *)(param_1_00 + 0xe4);
  }
  fStack_4 = (float)(iStack_1c - iVar2);
  iVar1 = FUN_00a49750();
  param_1[1] = iVar1;
  if (iVar1 < *(int *)(param_1_00 + 0xe0)) {
    param_1[1] = *(int *)(param_1_00 + 0xe0);
  }
  iVar1 = FUN_00a49750();
  *unaff_retaddr = *param_1 - iVar1;
  iVar1 = FUN_00a49750();
  unaff_retaddr[1] = param_1[1] - iVar1;
  iVar1 = FUN_00a49750();
  unaff_retaddr[2] = iVar1;
  iVar1 = FUN_00a49750();
  unaff_retaddr[3] = iVar1;
  return;
}



void __thiscall FUN_009bbf40(int *param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  int unaff_EBP;
  int unaff_EDI;
  int iStack_24;
  int local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  int local_c;
  int local_8;
  undefined4 local_4;
  
  if (param_1 != (int *)0x0) {
    local_10 = 0;
    local_c = 0;
    local_8 = 0;
    local_4 = 0;
    local_20 = 0;
    local_1c = 0;
    local_18 = 0;
    local_14 = 0;
    (**(code **)(*param_1_00 + 0x34))(param_1,&local_10,&local_20);
    local_8 = iStack_24 + param_1_00[0x39] * 2;
    iVar1 = local_20 + param_1_00[0x38] * 2;
    iVar2 = local_8 / 10;
    (**(code **)(*param_1 + 0xb8))(&stack0xffffffcc);
    if ((iVar1 != local_c) || (unaff_EBP != unaff_EDI)) {
      (**(code **)(param_1[0x5e] + 4))(10,10,iVar2,iVar1 / 10,0,0,1);
    }
  }
  return;
}



undefined __thiscall FUN_009bc020(int *param_1_00,undefined4 param_1,undefined4 param_3)

{
  undefined uVar1;
  undefined local_18 [4];
  void *pvStack_14;
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5e98;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0094bd80(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  local_4 = 0;
  FUN_0094c840(param_1);
  (**(code **)(*local_10 + 0xb0))();
  uVar1 = (**(code **)(*param_1_00 + 0x74))(local_18,param_3);
  local_c = (void *)0xffffffff;
  FUN_00457221();
  ExceptionList = pvStack_14;
  return uVar1;
}



undefined4 __thiscall FUN_009bc0b0(int *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int unaff_EDI;
  int iVar5;
  undefined4 *puVar6;
  int iVar7;
  undefined4 *puVar8;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  int local_4;
  
  puVar6 = &local_20;
  puVar8 = &local_10;
  local_10 = 0;
  local_c = 0;
  local_8 = 0;
  local_4 = 0;
  local_20 = 0;
  local_1c = 0;
  local_18 = 0;
  local_14 = 0;
  (**(code **)(*param_1_00 + 0x34))(param_1,puVar8,puVar6);
  iVar2 = FUN_008f8330(0x1a);
  iVar1 = local_4;
  (**(code **)(**(int **)(local_4 + 8) + 0x58))(iVar2);
  iVar3 = FUN_008f8a00(0);
  (**(code **)(**(int **)(iVar1 + 8) + 0x60))(iVar3);
  iVar7 = 4;
  (**(code **)(**(int **)(iVar1 + 8) + 0x150))(param_1 + 4,unaff_EDI + 1 + (int)puVar8,puVar6,4);
  iVar5 = 4;
  iVar7 = iVar7 + 4;
  iVar3 = (int)puVar6 + iVar3;
  (**(code **)(**(int **)(iVar1 + 8) + 0x150))(iVar3,iVar7,4,iVar2);
  uVar4 = FUN_008f8330(0x1a);
  (**(code **)(**(int **)(iVar1 + 8) + 0x58))(uVar4);
  uVar4 = FUN_008f8a00(10);
  (**(code **)(**(int **)(iVar1 + 8) + 0x60))(uVar4);
  (**(code **)(**(int **)(iVar1 + 8) + 0x150))(iVar3 + -2,iVar7 + -1,iVar5 + 3,iVar2 + 2);
  return 1;
}



void __thiscall FUN_009bc1d0(int *param_1_00,int param_1)

{
  if (param_1_00[0x35] != param_1) {
    param_1_00[0x35] = param_1;
    if ((int *)param_1_00[0x30] != (int *)0x0) {
      (**(code **)(*(int *)param_1_00[0x30] + 4))(1);
      param_1_00[0x30] = 0;
    }
    *(undefined *)(param_1_00 + 0x31) = 0;
    if (param_1_00[0x2e] != 0) {
      (**(code **)(*param_1_00 + 0x44))(param_1_00[0x2e]);
      (**(code **)(*(int *)(param_1_00[0x2e] + 0x178) + 0xc))(0,0);
      (**(code **)(*(int *)param_1_00[0x2e] + 0x164))();
      (**(code **)(*(int *)param_1_00[0x2e] + 0x15c))(1,0);
      (**(code **)(*(int *)param_1_00[0x2e] + 0x100))();
    }
  }
  return;
}



undefined4 * __thiscall
FUN_009bc380(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5ed3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxPrintPreviewBase::vftable;
  FUN_009be3c0(uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (param_3 != 0) {
    FUN_009be4d0(param_3);
  }
  FUN_009bbc80(param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_009bc410(undefined4 param_1_00,byte param_1)

{
  FUN_009bbd10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_009bc430(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be5ed3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxPrintPreviewBase::vftable;
  FUN_009be3c0(uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (param_3 != 0) {
    FUN_009be460(param_3);
  }
  FUN_009bbc80(param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_009bc4c0(int *param_1_00,int param_1)

{
  if (param_1_00[0x34] != param_1) {
    param_1_00[0x34] = param_1;
    if ((int *)param_1_00[0x30] != (int *)0x0) {
      (**(code **)(*(int *)param_1_00[0x30] + 4))(1);
      param_1_00[0x30] = 0;
    }
    *(undefined *)(param_1_00 + 0x31) = 0;
    if (param_1_00[0x2e] != 0) {
      (**(code **)(*param_1_00 + 0x44))(param_1_00[0x2e]);
      (**(code **)(*(int *)param_1_00[0x2e] + 0x15c))(1,0);
      (**(code **)(*(int *)param_1_00[0x2e] + 0x100))();
    }
  }
  return 1;
}



undefined4 __thiscall FUN_009bc540(int *param_1_00,int param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 unaff_EBX;
  undefined4 unaff_EBP;
  uint uStack_4c;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be5ef8;
  local_c = ExceptionList;
  uStack_4c = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  (**(code **)(*param_1_00 + 0x40))(param_1,param_2);
  if ((param_1_00[0x30] == 0) || (param_1 == 0)) {
    uVar2 = 0;
  }
  else {
    uStack_34 = 0;
    uStack_30 = 0;
    uStack_2c = 0;
    uStack_28 = 0;
    uStack_24 = 0;
    uStack_20 = 0;
    uStack_1c = 0;
    uStack_18 = 0;
    (**(code **)(*param_1_00 + 0x34))(param_1,&uStack_34,&uStack_24);
    FUN_0094bd80();
    uStack_18 = 0;
    FUN_0094c840(param_1_00[0x30]);
    iVar1 = *(int *)(param_1_00[0x30] + 4);
    if (iVar1 == 0) {
      uVar2 = 0;
    }
    else {
      uVar2 = *(undefined4 *)(iVar1 + 0xc);
    }
    iVar1 = *(int *)(param_1_00[0x30] + 4);
    if (iVar1 == 0) {
      uVar3 = 0;
    }
    else {
      uVar3 = *(undefined4 *)(iVar1 + 8);
    }
    (**(code **)(**(int **)(param_2 + 8) + 0x170))
              (unaff_EBP,unaff_EBX,uVar3,uVar2,&uStack_4c,0,0,5,0,0xffffffff,0xffffffff);
    FUN_0094c840(&PTR_vftable_03238cc8);
    local_c = (void *)0xffffffff;
    FUN_00457221();
    uVar2 = 1;
  }
  ExceptionList = pvStack_14;
  return uVar2;
}



undefined4 FUN_009bc660(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined local_20 [20];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5f41;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  FUN_0083fbe0(&DAT_00d26cac);
  local_4 = 1;
  FUN_00821558(param_1,local_20,param_2,uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_0081b5bc();
  ExceptionList = local_c;
  return param_1;
}



int FUN_009bc6f0(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beff10;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  FUN_0043c211("Generic PostScript");
  local_4 = CONCAT31(local_4._1_3_,1);
  iVar2 = FUN_0084a340(uVar1);
  if (iVar2 == 0) {
    uVar3 = FUN_0084d360(local_54);
  }
  else {
    uVar3 = FUN_0084f210(local_54,local_30);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar3,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



int FUN_009bc800(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beff10;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  FUN_0043c211("Ready");
  local_4 = CONCAT31(local_4._1_3_,1);
  iVar2 = FUN_0084a340(uVar1);
  if (iVar2 == 0) {
    uVar3 = FUN_0084d360(local_54);
  }
  else {
    uVar3 = FUN_0084f210(local_54,local_30);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(uVar3,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



// WARNING: Removing unreachable block (ram,0x009bccdd)
// WARNING: Removing unreachable block (ram,0x009bcd01)
// WARNING: Removing unreachable block (ram,0x009bcd11)

undefined4 * FUN_009bc910(undefined4 param_1,int *param_2)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  bool bVar8;
  undefined4 *local_13c;
  undefined4 *local_138;
  undefined local_134 [4];
  uint uStack_130;
  undefined4 uStack_120;
  uint uStack_11c;
  void *pvStack_118;
  void *local_110 [2];
  undefined local_108 [4];
  undefined4 uStack_104;
  uint uStack_f0;
  void *pvStack_ec;
  undefined local_e4 [4];
  uint uStack_e0;
  undefined4 uStack_d0;
  uint uStack_cc;
  void *pvStack_c8;
  undefined local_c0 [4];
  uint local_bc;
  undefined4 local_ac;
  uint local_a8;
  void *local_a4;
  undefined local_9c [4];
  uint local_98;
  undefined4 local_88;
  uint local_84;
  void *local_80;
  undefined local_78 [4];
  uint local_74;
  undefined4 local_64;
  uint local_60;
  void *local_5c;
  undefined auStack_54 [36];
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be60fd;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xfffffeb0;
  ExceptionList = &local_c;
  bVar2 = false;
  bVar1 = false;
  bVar8 = false;
  local_138 = (undefined4 *)operator_new(0x1f0);
  local_4 = 0;
  if (local_138 == (undefined4 *)0x0) {
    local_138 = (undefined4 *)0x0;
  }
  else {
    FUN_004325b6(L"dialog");
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 2;
    FUN_0043c211("Printing ");
    bVar2 = true;
    bVar1 = true;
    bVar8 = true;
    local_4 = 3;
    iVar5 = FUN_0084a340(uVar4);
    if (iVar5 == 0) {
      uVar6 = FUN_0084d360(local_c0);
    }
    else {
      uVar6 = FUN_0084f210(local_c0,local_9c);
    }
    FUN_00481a0d(param_1,0xffffffff,uVar6,&DAT_03238d0c,&DAT_03238d04,0x20001800,local_78);
    *local_138 = wxPrintAbortDialog::vftable;
  }
  if (bVar1) {
    _free(local_a4);
    if (7 < local_a8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_bc);
    }
    local_a8 = 7;
    local_ac = 0;
    local_bc = local_bc & 0xffff0000;
  }
  if (bVar2) {
    _free(local_80);
    if (7 < local_84) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_98);
    }
    local_84 = 7;
    local_88 = 0;
    local_98 = local_98 & 0xffff0000;
  }
  local_4 = 0xffffffff;
  if (bVar8) {
    _free(local_5c);
    if (7 < local_60) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_74);
    }
    local_60 = 7;
    local_64 = 0;
    local_74 = local_74 & 0xffff0000;
  }
  bVar3 = false;
  bVar2 = false;
  bVar1 = false;
  bVar8 = false;
  local_13c = (undefined4 *)operator_new(0x58);
  local_4 = 7;
  if (local_13c == (undefined4 *)0x0) {
    local_13c = (undefined4 *)0x0;
  }
  else {
    FUN_00445eb9();
    *local_13c = wxBoxSizer::vftable;
    local_13c[2] = wxBoxSizer::vftable;
    local_13c[0x14] = 0;
    local_13c[0x15] = 0;
    local_13c[0x12] = 8;
    local_13c[0x13] = 0;
  }
  local_4 = 0xffffffff;
  local_110[0] = operator_new(0x194);
  local_4 = 9;
  if (local_110[0] == (void *)0x0) {
    uVar6 = 0;
  }
  else {
    FUN_0043c211("staticText");
    local_4 = CONCAT31(local_4._1_3_,10);
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0xb;
    FUN_0043c211("Please wait while printing\n");
    local_4 = 0xc;
    uVar6 = (**(code **)(*param_2 + 0x30))(local_30);
    local_4 = 0xd;
    iVar5 = FUN_0084a340();
    if (iVar5 == 0) {
      uVar7 = FUN_0084d360(local_e4);
    }
    else {
      uVar7 = FUN_0084f210(local_e4,local_134);
    }
    uVar6 = FUN_008531f0(auStack_54,uVar7,uVar6);
    bVar3 = true;
    bVar2 = true;
    bVar1 = true;
    bVar8 = true;
    local_4 = 0xe;
    uVar6 = FUN_00483552(local_138,0xffffffff,uVar6,&DAT_03238d0c,&DAT_03238d04,0,local_108);
  }
  local_4 = 0x13;
  FUN_00445d61(uVar6,0,0xf0,10,0);
  if (bVar8) {
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
  }
  if (bVar1) {
    _free(pvStack_c8);
    if (7 < uStack_cc) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_e0);
    }
    uStack_cc = 7;
    uStack_d0 = 0;
    uStack_e0 = uStack_e0 & 0xffff0000;
  }
  if (bVar2) {
    _free(pvStack_118);
    if (7 < uStack_11c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_130);
    }
    uStack_11c = 7;
    uStack_120 = 0;
    uStack_130 = uStack_130 & 0xffff0000;
  }
  local_4 = 0xffffffff;
  if ((bVar3) && (_free(pvStack_ec), 7 < uStack_f0)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_104);
  }
  local_110[0] = operator_new(0x1a0);
  local_4 = 0x14;
  bVar8 = local_110[0] == (void *)0x0;
  if (bVar8) {
    uVar6 = 0;
  }
  else {
    FUN_0043c211("button");
    local_4 = CONCAT31(local_4._1_3_,0x15);
    FUN_004325b6(L"Cancel");
    local_4 = 0x16;
    uVar6 = FUN_0044c65b(local_138,0x13ed,local_134,&DAT_03238d0c,&DAT_03238d04,0,&DAT_032c0398,
                         local_108);
  }
  local_4 = 0x18;
  FUN_00445d61(uVar6,0,0x9f0,10,0);
  if (!bVar8) {
    _free(pvStack_118);
    if (7 < uStack_11c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_130);
    }
    uStack_11c = 7;
    uStack_120 = 0;
    uStack_130 = uStack_130 & 0xffff0000;
  }
  local_4 = 0xffffffff;
  if ((!bVar8) && (_free(pvStack_ec), 7 < uStack_f0)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_104);
  }
  *(byte *)(local_138 + 0x37) = *(byte *)(local_138 + 0x37) | 1;
  FUN_0091c600(local_13c,1);
  FUN_00931a60(local_110,local_138);
  FUN_00931b00(local_138);
  ExceptionList = local_c;
  return local_138;
}



void FUN_009bcfb0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6130;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_54;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  FUN_0043c211("Printing Error");
  local_4 = CONCAT31(local_4._1_3_,1);
  iVar2 = FUN_0084a340(uVar1);
  if (iVar2 == 0) {
    uVar3 = FUN_0084d360(local_54);
  }
  else {
    uVar3 = FUN_0084f210(local_54,local_30);
  }
  FUN_008fe490(param_3,uVar3,4,param_1,0xffffffff,0xffffffff);
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall thunk_FUN_00924620(undefined4 *param_1)

{
  char cVar1;
  uint uVar2;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bd8278;
  pvStack_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &pvStack_c;
  *param_1 = wxDialog::vftable;
  uStack_4 = 0;
  cVar1 = FUN_0043d95d(uVar2);
  if (cVar1 != '\0') {
    if ((int *)param_1[0x7b] != (int *)0x0) {
      (**(code **)(*(int *)param_1[0x7b] + 0xc))(0);
    }
    FUN_00925da0(0);
  }
  FUN_00924160();
  uStack_4 = 0xffffffff;
  FUN_0044cd0c();
  ExceptionList = pvStack_c;
  return;
}



void __thiscall FUN_009bd0c0(int param_1_00,int param_1)

{
  undefined4 uVar1;
  undefined4 local_30 [5];
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((param_1 < *(int *)(param_1_00 + 0x3bc) || (*(int *)(param_1_00 + 0x3c0) < param_1)))) {
    FUN_008402e0("..\\..\\src\\common\\prntbase.cpp",0x454,"wxPrintPageTextCtrl::SetPageNumber",
                 "IsValidPage(page)",0,DAT_0323f878 ^ (uint)&stack0xffffffc8);
  }
  uVar1 = FUN_009bc660(local_30,param_1);
  local_4 = 0;
  (**(code **)(*(int *)(param_1_00 + 0x1d0) + 0x44))(uVar1);
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  ExceptionList = pvStack_10;
  return;
}



void __thiscall FUN_009bd180(int *param_1,undefined4 param_2)

{
  int *piVar1;
  
  piVar1 = (int *)(**(code **)(*param_1 + 0x344))();
  if (piVar1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\common\\prntbase.cpp",0x527,"wxPreviewControlBar::DoGotoPage",
                   "preview","Shouldn\'t be called if there is no preview.");
      return;
    }
  }
  else {
    (**(code **)(*piVar1 + 0x10))(param_2);
    if (param_1[0x60] != 0) {
      FUN_009bd0c0(param_2);
    }
  }
  return;
}



undefined4 __thiscall FUN_009bd1f0(int param_1_00,undefined4 param_1)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 unaff_EBX;
  undefined4 unaff_retaddr;
  uint uStack_94;
  void *pvStack_90;
  undefined auStack_88 [4];
  uint uStack_84;
  undefined4 uStack_74;
  uint uStack_70;
  void *pvStack_6c;
  undefined auStack_5c [4];
  uint auStack_58 [4];
  undefined4 uStack_48;
  uint uStack_44;
  void *pvStack_40;
  undefined auStack_38 [4];
  undefined4 uStack_34;
  uint uStack_20;
  void *pvStack_1c;
  void *pvStack_14;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be61a3;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff4c;
  ExceptionList = &local_c;
  *(undefined4 *)(*(int *)(param_1_00 + 200) + 0x2c) = param_1;
  uVar5 = *(undefined4 *)(param_1_00 + 0xec);
  iVar4 = *(int *)(param_1_00 + 200);
  *(undefined4 *)(iVar4 + 0x34) = *(undefined4 *)(param_1_00 + 0xe8);
  *(undefined4 *)(iVar4 + 0x38) = uVar5;
  if (*(char *)(param_1_00 + 0xf9) == '\0') {
    *(undefined *)(param_1_00 + 0xf9) = 1;
    (**(code **)(**(int **)(param_1_00 + 200) + 0x20))(uVar3);
    (**(code **)(**(int **)(param_1_00 + 200) + 0x2c))
              ((undefined4 *)(param_1_00 + 0xf0),(undefined4 *)(param_1_00 + 0xf4),auStack_5c,
               auStack_58);
    if ((*(int *)(param_1_00 + 0xbc) != 0) &&
       (piVar1 = *(int **)(*(int *)(param_1_00 + 0xbc) + 0x22c), piVar1 != (int *)0x0)) {
      (**(code **)(*piVar1 + 0x338))
                (*(undefined4 *)(param_1_00 + 0xf0),*(undefined4 *)(param_1_00 + 0xf4));
    }
  }
  (**(code **)(**(int **)(param_1_00 + 200) + 0x18))();
  cVar2 = (**(code **)(**(int **)(param_1_00 + 200) + 0x10))
                    (*(undefined4 *)(param_1_00 + 0x10),*(undefined4 *)(param_1_00 + 0x14));
  if (cVar2 == '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_c = (void *)0x0;
    FUN_0043c211("Print Preview Failure");
    local_c._0_1_ = 1;
    FUN_004325b6(PTR_DAT_03236318);
    local_c._0_1_ = 2;
    FUN_0043c211("Could not start document preview.");
    local_c = (void *)CONCAT31(local_c._1_3_,3);
    iVar4 = FUN_0084a340();
    if (iVar4 == 0) {
      uVar5 = FUN_0084d360(auStack_88);
    }
    else {
      uVar5 = FUN_0084f210(auStack_88,auStack_38);
    }
    iVar4 = FUN_0084a340();
    if (iVar4 == 0) {
      uVar6 = FUN_0084d360(&stack0xffffff54);
    }
    else {
      uVar6 = FUN_0084f210(&stack0xffffff54,auStack_5c);
    }
    FUN_008fe490(uVar6,uVar5,4,0,0xffffffff,0xffffffff);
    _free(pvStack_90);
    if (7 < uStack_94) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(unaff_EBX);
    }
    _free(pvStack_40);
    if (7 < uStack_44) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(auStack_58[0]);
    }
    uStack_44 = 7;
    uStack_48 = 0;
    auStack_58[0] = auStack_58[0] & 0xffff0000;
    _free(pvStack_6c);
    if (7 < uStack_70) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_84);
    }
    uStack_70 = 7;
    uStack_74 = 0;
    uStack_84 = uStack_84 & 0xffff0000;
    _free(pvStack_1c);
    if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_34);
    }
    uVar5 = 0;
  }
  else {
    (**(code **)(**(int **)(param_1_00 + 200) + 0x28))(unaff_retaddr);
    (**(code **)(**(int **)(param_1_00 + 200) + 0x14))();
    (**(code **)(**(int **)(param_1_00 + 200) + 0x1c))();
    *(undefined4 *)(*(int *)(param_1_00 + 200) + 0x2c) = 0;
    uVar5 = 1;
  }
  ExceptionList = pvStack_14;
  return uVar5;
}



void __thiscall FUN_009bd4c0(int *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uVar2;
  int *piVar3;
  int iVar4;
  undefined4 uVar5;
  undefined *puVar6;
  undefined auStack_16c [4];
  undefined4 local_168;
  undefined4 local_164;
  undefined4 local_160;
  undefined4 local_15c;
  undefined4 local_158;
  undefined4 local_154;
  undefined4 local_150;
  undefined4 local_14c;
  undefined auStack_148 [20];
  void *pvStack_134;
  undefined auStack_130 [36];
  undefined auStack_10c [36];
  undefined auStack_e8 [36];
  undefined auStack_c4 [36];
  undefined auStack_a0 [36];
  undefined auStack_7c [36];
  undefined auStack_58 [36];
  undefined auStack_34 [4];
  undefined2 uStack_30;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be629b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_16c;
  ExceptionList = &local_c;
  uVar2 = FUN_008f7b30(0x14,DAT_0323f878 ^ (uint)&stack0xfffffe88);
  FUN_0095dd80(uVar2);
  local_4 = 0;
  if (param_1[0x2e] == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\prntbase.cpp",0x7bd,"wxPrintPreviewBase::RenderPage",
                   "Assert failure",
                   L"wxPrintPreviewBase::RenderPage: must use wxPrintPreviewBase::SetCanvas to let me know about the canvas!"
                  );
    }
    local_4 = 0xffffffff;
    FUN_0095db80();
    goto LAB_009bda73;
  }
  local_168 = 0;
  local_164 = 0;
  local_160 = 0;
  local_15c = 0;
  local_158 = 0;
  local_154 = 0;
  local_150 = 0;
  local_14c = 0;
  (**(code **)(*param_1 + 0x34))(param_1[0x2e],&local_168,&local_158);
  if (param_1[0x30] == 0) {
    pvStack_134 = operator_new(8);
    local_4._0_1_ = 1;
    if (pvStack_134 == (void *)0x0) {
      piVar3 = (int *)0x0;
    }
    else {
      piVar3 = (int *)FUN_008f53f0(local_160,local_15c,0xffffffff);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    param_1[0x30] = (int)piVar3;
    if (piVar3 != (int *)0x0) {
      cVar1 = (**(code **)(*piVar3 + 0x10))();
      if (cVar1 != '\0') goto LAB_009bd725;
    }
    if ((int *)param_1[0x30] != (int *)0x0) {
      (**(code **)(*(int *)param_1[0x30] + 4))(1);
      param_1[0x30] = 0;
    }
    *(undefined *)(param_1 + 0x31) = 0;
    FUN_004325b6(PTR_DAT_03236318);
    local_4._0_1_ = 2;
    FUN_0043c211("Print Preview Failure");
    local_4._0_1_ = 3;
    FUN_004325b6(PTR_DAT_03236318);
    local_4._0_1_ = 4;
    FUN_0043c211("Sorry, not enough memory to create a preview.");
    local_4 = CONCAT31(local_4._1_3_,5);
    iVar4 = FUN_0084a340();
    if (iVar4 == 0) {
      uVar2 = FUN_0084d360(auStack_c4);
    }
    else {
      uVar2 = FUN_0084f210(auStack_c4,auStack_130);
    }
    iVar4 = FUN_0084a340();
    if (iVar4 == 0) {
      uVar5 = FUN_0084d360(auStack_e8);
    }
    else {
      uVar5 = FUN_0084f210(auStack_e8,auStack_10c);
    }
    FUN_008fe490(uVar5,uVar2,4,0,0xffffffff,0xffffffff);
    FUN_0040159c();
    FUN_0040159c();
    FUN_0040159c();
    FUN_0040159c();
    local_4 = 0xffffffff;
    FUN_0095db80();
  }
  else {
LAB_009bd725:
    cVar1 = (**(code **)(*param_1 + 0x78))(param_1[0x30],param_2);
    if (cVar1 == '\0') {
      if ((int *)param_1[0x30] != (int *)0x0) {
        (**(code **)(*(int *)param_1[0x30] + 4))(1);
        param_1[0x30] = 0;
      }
      *(undefined *)(param_1 + 0x31) = 0;
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 6;
      FUN_0043c211("Print Preview Failure");
      local_4._0_1_ = 7;
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 8;
      FUN_0043c211("Sorry, not enough memory to create a preview.");
      local_4 = CONCAT31(local_4._1_3_,9);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        uVar2 = FUN_0084d360(auStack_e8);
      }
      else {
        uVar2 = FUN_0084f210(auStack_e8,auStack_10c);
      }
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        uVar5 = FUN_0084d360(auStack_c4);
      }
      else {
        uVar5 = FUN_0084f210(auStack_c4,auStack_130);
      }
      FUN_008fe490(uVar5,uVar2,4,0,0xffffffff,0xffffffff);
      FUN_0040159c();
      FUN_0040159c();
      FUN_0040159c();
      FUN_0040159c();
      local_4 = 0xffffffff;
      FUN_0095db80();
    }
    else {
      uStack_1c = 7;
      uStack_20 = 0;
      uStack_30 = 0;
      uStack_18 = 0;
      local_4._0_1_ = 10;
      if (param_1[0x3d] == 0) {
        FUN_004325b6(PTR_DAT_03236318);
        local_4._0_1_ = 0xf;
        FUN_0043c211("Page %d");
        local_4._0_1_ = 0x10;
        uVar2 = FUN_00820bf9(auStack_7c,auStack_a0);
        FUN_008433c0(uVar2);
        local_4._0_1_ = 0x11;
        puVar6 = (undefined *)FUN_00821558(auStack_58,auStack_148,param_2);
        local_4._0_1_ = 0x12;
        if (auStack_34 != puVar6) {
          FID_conflict_assign(puVar6,0,0xffffffff);
        }
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,0x10);
        FUN_0081b5bc();
        FUN_0040159c();
      }
      else {
        FUN_004325b6(PTR_DAT_03236318);
        local_4._0_1_ = 0xb;
        FUN_0043c211("Page %d of %d");
        local_4._0_1_ = 0xc;
        uVar2 = FUN_00820bf9(auStack_130,auStack_10c);
        FUN_008433c0(uVar2);
        local_4._0_1_ = 0xd;
        puVar6 = (undefined *)FUN_00970e40(auStack_a0,auStack_148,param_2,param_1[0x3d]);
        local_4._0_1_ = 0xe;
        if (auStack_34 != puVar6) {
          FID_conflict_assign(puVar6,0,0xffffffff);
        }
        FUN_0040159c();
        local_4 = CONCAT31(local_4._1_3_,0xc);
        FUN_0081b5bc();
        FUN_0040159c();
      }
      local_4 = CONCAT31(local_4._1_3_,10);
      FUN_0040159c();
      if ((int *)param_1[0x2f] != (int *)0x0) {
        (**(code **)(*(int *)param_1[0x2f] + 0x3b0))(auStack_34,0);
      }
      FUN_0040159c();
      local_4 = 0xffffffff;
      FUN_0095db80();
    }
  }
LAB_009bda73:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_009bdaa0(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  
  cVar1 = FUN_009bb230();
  if (cVar1 != '\0') {
    piVar2 = (int *)(**(code **)(*param_1 + 0x344))();
    iVar3 = (**(code **)(*piVar2 + 0x14))();
    FUN_009bd180(iVar3 + 1);
  }
  return;
}



void __fastcall FUN_009bdad0(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  
  cVar1 = FUN_009bb290();
  if (cVar1 != '\0') {
    piVar2 = (int *)(**(code **)(*param_1 + 0x344))();
    iVar3 = (**(code **)(*piVar2 + 0x14))();
    FUN_009bd180(iVar3 + -1);
  }
  return;
}



void __fastcall FUN_009bdb00(int *param_1)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  int *piVar4;
  undefined4 uVar5;
  
  piVar3 = (int *)(**(code **)(*param_1 + 0x344))();
  if (piVar3 != (int *)0x0) {
    piVar4 = (int *)(**(code **)(*piVar3 + 0x1c))();
    iVar1 = *piVar4;
    uVar5 = (**(code **)(*piVar3 + 0x5c))();
    cVar2 = (**(code **)(iVar1 + 0x24))(uVar5);
    if (cVar2 != '\0') {
      piVar3 = (int *)(**(code **)(*param_1 + 0x344))();
      uVar5 = (**(code **)(*piVar3 + 0x5c))();
      FUN_009bd180(uVar5);
    }
  }
  return;
}



void __fastcall FUN_009bdb60(int *param_1)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  int *piVar4;
  undefined4 uVar5;
  
  piVar3 = (int *)(**(code **)(*param_1 + 0x344))();
  if (piVar3 != (int *)0x0) {
    piVar4 = (int *)(**(code **)(*piVar3 + 0x1c))();
    iVar1 = *piVar4;
    uVar5 = (**(code **)(*piVar3 + 0x58))();
    cVar2 = (**(code **)(iVar1 + 0x24))(uVar5);
    if (cVar2 != '\0') {
      piVar3 = (int *)(**(code **)(*param_1 + 0x344))();
      uVar5 = (**(code **)(*piVar3 + 0x58))();
      FUN_009bd180(uVar5);
    }
  }
  return;
}



void __fastcall FUN_009bdbc0(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  
  cVar1 = FUN_009bb230();
  if (cVar1 != '\0') {
    piVar2 = (int *)(**(code **)(*param_1 + 0x344))();
    iVar3 = (**(code **)(*piVar2 + 0x14))();
    FUN_009bd180(iVar3 + 1);
  }
  return;
}



void __fastcall FUN_009bdbf0(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  
  cVar1 = FUN_009bb290();
  if (cVar1 != '\0') {
    piVar2 = (int *)(**(code **)(*param_1 + 0x344))();
    iVar3 = (**(code **)(*piVar2 + 0x14))();
    FUN_009bd180(iVar3 + -1);
  }
  return;
}



undefined * FUN_009bdd50(void)

{
  return &DAT_0323cbc8;
}



undefined ** FUN_009bdd60(void)

{
  return &PTR_u_wxPrintDialogData_0323cbe0;
}



undefined ** FUN_009bdd70(void)

{
  return &PTR_u_wxPageSetupDialogData_0323cbf8;
}



void __fastcall FUN_009bdd80(int param_1)

{
  (**(code **)(**(int **)(param_1 + 0x88) + 0x14))(param_1);
  return;
}



void __fastcall FUN_009bdda0(int param_1)

{
  (**(code **)(**(int **)(param_1 + 0x88) + 0x10))(param_1);
  return;
}



void __thiscall FUN_009bddc0(int param_1_00,void *param_1,int param_2)

{
  void *_Dst;
  
  if (*(int *)(param_1_00 + 0x80) != 0) {
    FUN_00a3f66c(*(int *)(param_1_00 + 0x80));
    *(undefined4 *)(param_1_00 + 0x80) = 0;
  }
  *(int *)(param_1_00 + 0x84) = param_2;
  if (0 < param_2) {
    _Dst = (void *)FUN_00823c23(param_2);
    *(void **)(param_1_00 + 0x80) = _Dst;
    _memcpy(_Dst,param_1,*(size_t *)(param_1_00 + 0x84));
  }
  return;
}



void __fastcall FUN_009bde20(int param_1)

{
  int iVar1;
  int local_8;
  int local_4;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032ea194 == 0)) {
    FUN_00840480("..\\..\\src\\common\\cmndata.cpp",0x173,
                 "wxPageSetupDialogData::CalculateIdFromPaperSize",
                 "(wxThePrintPaperDatabase != NULL)",
                 L"wxThePrintPaperDatabase should not be NULL. Do not create global print dialog data objects."
                );
  }
  local_4 = *(int *)(param_1 + 0xc) * 10;
  local_8 = *(int *)(param_1 + 8) * 10;
  iVar1 = FUN_009e7490(&local_8);
  if (iVar1 != 0) {
    *(int *)(param_1 + 0x88) = iVar1;
  }
  return;
}



int __fastcall FUN_009bde90(int param_1)

{
  int iVar1;
  int local_8;
  int local_4;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032ea194 == 0)) {
    FUN_00840480("..\\..\\src\\common\\cmndata.cpp",0x182,
                 "wxPageSetupDialogData::CalculatePaperSizeFromId",
                 "(wxThePrintPaperDatabase != NULL)",
                 L"wxThePrintPaperDatabase should not be NULL. Do not create global print dialog data objects."
                );
  }
  iVar1 = FUN_009e75e0(&local_8,*(undefined4 *)(param_1 + 0x88));
  if ((local_8 != 0) || (local_4 != 0)) {
    *(int *)(param_1 + 8) = local_8 / 10;
    iVar1 = local_4 * 0x66666667;
    *(int *)(param_1 + 0xc) = local_4 / 10;
  }
  return iVar1;
}



void __thiscall FUN_009bdf20(int param_1_00,undefined4 *param_1)

{
  *(undefined4 *)(param_1_00 + 8) = *param_1;
  *(undefined4 *)(param_1_00 + 0xc) = param_1[1];
  FUN_009bde20();
  return;
}



void __fastcall FUN_009bdf40(undefined4 *param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be645e;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxPrintData::vftable;
  *(int *)(param_1[0x22] + 8) = *(int *)(param_1[0x22] + 8) + -1;
  piVar1 = (int *)param_1[0x22];
  local_4 = 2;
  if ((piVar1[2] == 0) && (piVar1 != (int *)0x0)) {
    (**(code **)(*piVar1 + 4))(1,uVar2);
  }
  if (param_1[0x20] != 0) {
    FUN_00a3f66c(param_1[0x20]);
  }
  _free((void *)param_1[0x1e]);
  if (7 < (uint)param_1[0x1d]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x18]);
  }
  param_1[0x1d] = 7;
  param_1[0x1c] = 0;
  *(undefined2 *)(param_1 + 0x18) = 0;
  _free((void *)param_1[0xf]);
  if (7 < (uint)param_1[0xe]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[9]);
  }
  param_1[0xe] = 7;
  param_1[0xd] = 0;
  *(undefined2 *)(param_1 + 9) = 0;
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009be040(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxPrintDialogData::vftable;
  local_4 = 0;
  FUN_009bdf40(uVar1);
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009be0b0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxPageSetupDialogData::vftable;
  local_4 = 0;
  FUN_009bdf40(uVar1);
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009be120(undefined4 param_1_00,byte param_1)

{
  FUN_009bdf40();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_009be140(undefined4 param_1_00,byte param_1)

{
  FUN_009be040();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_009be160(undefined4 param_1_00,byte param_1)

{
  FUN_009be0b0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_009be180(undefined4 *param_1)

{
  short sVar1;
  uint uVar2;
  short *psVar3;
  int *piVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be649e;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  param_1[1] = 0;
  *param_1 = wxPrintData::vftable;
  param_1[0xe] = 7;
  param_1[0xd] = 0;
  *(undefined2 *)(param_1 + 9) = 0;
  param_1[0xf] = 0;
  param_1[0x15] = 0;
  param_1[0x16] = 0;
  param_1[0x1d] = 7;
  param_1[0x1c] = 0;
  *(undefined2 *)(param_1 + 0x18) = 0;
  param_1[0x1e] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 3;
  param_1[6] = 1;
  *(undefined *)(param_1 + 7) = 0;
  param_1[5] = 1;
  *(undefined *)((int)param_1 + 0x1d) = 0;
  local_4 = 2;
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    FUN_00432156(uVar2);
  }
  else {
    psVar3 = (short *)PTR_DAT_03236318;
    do {
      sVar1 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(PTR_DAT_03236318,(int)psVar3 - (int)(PTR_DAT_03236318 + 2) >> 1);
  }
  *(undefined *)(param_1 + 0x11) = 1;
  param_1[0x12] = 0;
  param_1[0x13] = 0xffffffff;
  param_1[0x14] = 0;
  param_1[0x15] = DAT_03238d04;
  param_1[0x16] = DAT_03238d08;
  param_1[0x20] = 0;
  param_1[0x21] = 0;
  piVar4 = (int *)FUN_009bb7b0();
  uVar5 = (**(code **)(*piVar4 + 0x3c))();
  param_1[0x22] = uVar5;
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_009be2a0(int param_1_00,int param_1)

{
  int *piVar1;
  int iVar2;
  void *_Dst;
  
  if (param_1 != param_1_00) {
    *(undefined4 *)(param_1_00 + 0x14) = *(undefined4 *)(param_1 + 0x14);
    *(undefined *)(param_1_00 + 0x1d) = *(undefined *)(param_1 + 0x1d);
    *(undefined4 *)(param_1_00 + 0x18) = *(undefined4 *)(param_1 + 0x18);
    *(undefined *)(param_1_00 + 0x1c) = *(undefined *)(param_1 + 0x1c);
    if (param_1_00 + 0x20 != param_1 + 0x20) {
      FID_conflict_assign(param_1 + 0x20,0,0xffffffff);
    }
    *(undefined *)(param_1_00 + 0x44) = *(undefined *)(param_1 + 0x44);
    *(undefined4 *)(param_1_00 + 0x48) = *(undefined4 *)(param_1 + 0x48);
    *(undefined4 *)(param_1_00 + 0x4c) = *(undefined4 *)(param_1 + 0x4c);
    *(undefined4 *)(param_1_00 + 0x50) = *(undefined4 *)(param_1 + 0x50);
    *(undefined4 *)(param_1_00 + 0x54) = *(undefined4 *)(param_1 + 0x54);
    *(undefined4 *)(param_1_00 + 0x58) = *(undefined4 *)(param_1 + 0x58);
    *(undefined4 *)(param_1_00 + 8) = *(undefined4 *)(param_1 + 8);
    *(undefined4 *)(param_1_00 + 0xc) = *(undefined4 *)(param_1 + 0xc);
    *(undefined4 *)(param_1_00 + 0x10) = *(undefined4 *)(param_1 + 0x10);
    if (param_1_00 + 0x5c != param_1 + 0x5c) {
      FID_conflict_assign(param_1 + 0x5c,0,0xffffffff);
    }
    if (*(int *)(param_1_00 + 0x88) != 0) {
      piVar1 = (int *)(*(int *)(param_1_00 + 0x88) + 8);
      *piVar1 = *piVar1 + -1;
      piVar1 = *(int **)(param_1_00 + 0x88);
      if ((piVar1[2] == 0) && (piVar1 != (int *)0x0)) {
        (**(code **)(*piVar1 + 4))(1);
      }
    }
    iVar2 = *(int *)(param_1 + 0x88);
    *(int *)(param_1_00 + 0x88) = iVar2;
    piVar1 = (int *)(iVar2 + 8);
    *piVar1 = *piVar1 + 1;
    if (*(int *)(param_1_00 + 0x80) != 0) {
      FUN_00a3f66c(*(int *)(param_1_00 + 0x80));
      *(undefined4 *)(param_1_00 + 0x80) = 0;
    }
    iVar2 = *(int *)(param_1 + 0x84);
    *(int *)(param_1_00 + 0x84) = iVar2;
    if (0 < iVar2) {
      _Dst = (void *)FUN_00823c23(iVar2);
      *(void **)(param_1_00 + 0x80) = _Dst;
      _memcpy(_Dst,*(void **)(param_1 + 0x80),*(size_t *)(param_1_00 + 0x84));
    }
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_009be3c0(undefined4 *param_1)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be64d3;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = wxPrintDialogData::vftable;
  FUN_009be180(uVar2);
  local_4 = CONCAT31(local_4._1_3_,1);
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 1;
  *(undefined *)(param_1 + 7) = 0;
  *(undefined *)((int)param_1 + 0x1d) = 0;
  *(undefined *)((int)param_1 + 0x1e) = 0;
  *(undefined *)((int)param_1 + 0x1f) = 0;
  *(undefined *)(param_1 + 8) = 0;
  *(undefined *)((int)param_1 + 0x21) = 1;
  piVar3 = (int *)FUN_009bb7b0();
  cVar1 = (**(code **)(*piVar3 + 0x28))();
  *(bool *)((int)param_1 + 0x23) = cVar1 == '\0';
  *(undefined *)((int)param_1 + 0x22) = 0;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_009be460(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1_00 + 8) = *(undefined4 *)(param_1 + 8);
  *(undefined4 *)(param_1_00 + 0xc) = *(undefined4 *)(param_1 + 0xc);
  *(undefined4 *)(param_1_00 + 0x10) = *(undefined4 *)(param_1 + 0x10);
  *(undefined4 *)(param_1_00 + 0x14) = *(undefined4 *)(param_1 + 0x14);
  *(undefined4 *)(param_1_00 + 0x18) = *(undefined4 *)(param_1 + 0x18);
  *(undefined *)(param_1_00 + 0x1c) = *(undefined *)(param_1 + 0x1c);
  *(undefined *)(param_1_00 + 0x1d) = *(undefined *)(param_1 + 0x1d);
  *(undefined *)(param_1_00 + 0x1e) = *(undefined *)(param_1 + 0x1e);
  *(undefined *)(param_1_00 + 0x1f) = *(undefined *)(param_1 + 0x1f);
  *(undefined *)(param_1_00 + 0x20) = *(undefined *)(param_1 + 0x20);
  *(undefined *)(param_1_00 + 0x21) = *(undefined *)(param_1 + 0x21);
  *(undefined *)(param_1_00 + 0x22) = *(undefined *)(param_1 + 0x22);
  *(undefined *)(param_1_00 + 0x23) = *(undefined *)(param_1 + 0x23);
  FUN_009be2a0();
  return;
}



void FUN_009be4d0(void)

{
  FUN_009be2a0();
  return;
}



undefined4 * __fastcall FUN_009be4e0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be6503;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1[1] = 0;
  *param_1 = wxPageSetupDialogData::vftable;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[9] = 0;
  local_4 = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  FUN_009be180(uVar1);
  param_1[3] = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  param_1[2] = 0;
  FUN_009bde90();
  param_1[10] = 0;
  param_1[8] = 0;
  param_1[6] = 0;
  param_1[4] = 0;
  param_1[0xb] = 0;
  param_1[9] = 0;
  param_1[7] = 0;
  param_1[5] = 0;
  *(undefined *)(param_1 + 0xc) = 0;
  *(undefined *)((int)param_1 + 0x31) = 1;
  *(undefined *)((int)param_1 + 0x32) = 1;
  *(undefined *)((int)param_1 + 0x33) = 1;
  *(undefined *)(param_1 + 0xd) = 1;
  *(undefined *)((int)param_1 + 0x36) = 0;
  *(undefined *)((int)param_1 + 0x35) = 0;
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_009be5a0(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1_00 + 8) = *(undefined4 *)(param_1 + 8);
  *(undefined4 *)(param_1_00 + 0xc) = *(undefined4 *)(param_1 + 0xc);
  *(undefined4 *)(param_1_00 + 0x10) = *(undefined4 *)(param_1 + 0x10);
  *(undefined4 *)(param_1_00 + 0x14) = *(undefined4 *)(param_1 + 0x14);
  *(undefined4 *)(param_1_00 + 0x18) = *(undefined4 *)(param_1 + 0x18);
  *(undefined4 *)(param_1_00 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);
  *(undefined4 *)(param_1_00 + 0x20) = *(undefined4 *)(param_1 + 0x20);
  *(undefined4 *)(param_1_00 + 0x24) = *(undefined4 *)(param_1 + 0x24);
  *(undefined4 *)(param_1_00 + 0x28) = *(undefined4 *)(param_1 + 0x28);
  *(undefined4 *)(param_1_00 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);
  *(undefined *)(param_1_00 + 0x30) = *(undefined *)(param_1 + 0x30);
  *(undefined *)(param_1_00 + 0x31) = *(undefined *)(param_1 + 0x31);
  *(undefined *)(param_1_00 + 0x32) = *(undefined *)(param_1 + 0x32);
  *(undefined *)(param_1_00 + 0x33) = *(undefined *)(param_1 + 0x33);
  *(undefined *)(param_1_00 + 0x34) = *(undefined *)(param_1 + 0x34);
  *(undefined *)(param_1_00 + 0x35) = *(undefined *)(param_1 + 0x35);
  *(undefined *)(param_1_00 + 0x36) = *(undefined *)(param_1 + 0x36);
  FUN_009be2a0(param_1 + 0x38);
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x8c);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009be180(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0xb0);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009be3c0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0xc4);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009be4e0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_009be780(int param_1_00,undefined8 *param_1,undefined8 *param_2)

{
  *(undefined8 *)(param_1_00 + 8) = *param_1;
  *(undefined8 *)(param_1_00 + 0x10) = param_1[1];
  *(undefined8 *)(param_1_00 + 0x18) = param_1[2];
  *(undefined8 *)(param_1_00 + 0x20) = param_1[3];
  *(undefined8 *)(param_1_00 + 0x28) = *param_2;
  *(undefined8 *)(param_1_00 + 0x30) = param_2[1];
  return;
}



void __thiscall FUN_009be7b0(int param_1_00,undefined8 *param_1,undefined8 *param_2)

{
  *param_1 = *(undefined8 *)(param_1_00 + 8);
  param_1[1] = *(undefined8 *)(param_1_00 + 0x10);
  param_1[2] = *(undefined8 *)(param_1_00 + 0x18);
  param_1[3] = *(undefined8 *)(param_1_00 + 0x20);
  if (param_2 != (undefined8 *)0x0) {
    *param_2 = *(undefined8 *)(param_1_00 + 0x28);
    param_2[1] = *(undefined8 *)(param_1_00 + 0x30);
  }
  return;
}



ushort __fastcall FUN_009be7f0(int param_1)

{
  double dVar1;
  double dVar2;
  ushort uVar3;
  
  dVar2 = *(double *)(param_1 + 8) * *(double *)(param_1 + 0x20) -
          *(double *)(param_1 + 0x18) * *(double *)(param_1 + 0x10);
  uVar3 = (ushort)(0.0 < dVar2) << 8 | (ushort)NAN(dVar2) << 10 | (ushort)(dVar2 == 0.0) << 0xe;
  if (NAN(dVar2) != (dVar2 == 0.0)) {
    return uVar3;
  }
  dVar1 = *(double *)(param_1 + 0x30);
  *(double *)(param_1 + 0x30) =
       (*(double *)(param_1 + 0x28) * *(double *)(param_1 + 0x10) -
       *(double *)(param_1 + 8) * *(double *)(param_1 + 0x30)) / dVar2;
  *(double *)(param_1 + 0x28) =
       (*(double *)(param_1 + 0x18) * dVar1 -
       *(double *)(param_1 + 0x28) * *(double *)(param_1 + 0x20)) / dVar2;
  dVar1 = *(double *)(param_1 + 0x20);
  *(double *)(param_1 + 0x10) = -(*(double *)(param_1 + 0x10) / dVar2);
  *(double *)(param_1 + 0x18) = -(*(double *)(param_1 + 0x18) / dVar2);
  *(double *)(param_1 + 0x20) = *(double *)(param_1 + 8) / dVar2;
  *(double *)(param_1 + 8) = dVar1 / dVar2;
  return CONCAT11((char)(uVar3 >> 8),1);
}



void __thiscall FUN_009be860(int param_1_00,double param_1,double param_2)

{
  *(double *)(param_1_00 + 0x28) = param_1 + *(double *)(param_1_00 + 0x28);
  *(double *)(param_1_00 + 0x30) = param_2 + *(double *)(param_1_00 + 0x30);
  return;
}



void __thiscall FUN_009be880(int param_1_00,double param_1,double param_2)

{
  *(double *)(param_1_00 + 8) = param_1 * *(double *)(param_1_00 + 8);
  *(double *)(param_1_00 + 0x10) = param_1 * *(double *)(param_1_00 + 0x10);
  *(double *)(param_1_00 + 0x18) = param_2 * *(double *)(param_1_00 + 0x18);
  *(double *)(param_1_00 + 0x20) = param_2 * *(double *)(param_1_00 + 0x20);
  return;
}



void __fastcall FUN_009be8b0(int param_1)

{
  double dVar1;
  double dVar2;
  float10 fVar3;
  float10 fVar4;
  
  fVar3 = (float10)FUN_00a4d220();
  fVar4 = (float10)FUN_00a4d0f0();
  fVar3 = (float10)(double)fVar3;
  dVar1 = *(double *)(param_1 + 0x18);
  dVar2 = *(double *)(param_1 + 0x20);
  *(double *)(param_1 + 0x18) =
       (double)((float10)*(double *)(param_1 + 0x18) * fVar3 +
               (float10)*(double *)(param_1 + 8) * fVar4);
  *(double *)(param_1 + 0x20) =
       (double)((float10)*(double *)(param_1 + 0x10) * fVar4 +
               (float10)*(double *)(param_1 + 0x20) * fVar3);
  *(double *)(param_1 + 8) =
       (double)((float10)*(double *)(param_1 + 8) * fVar3 - (float10)dVar1 * fVar4);
  *(double *)(param_1 + 0x10) =
       (double)((float10)*(double *)(param_1 + 0x10) * fVar3 - (float10)dVar2 * fVar4);
  return;
}



undefined4 __fastcall FUN_009be920(int param_1)

{
  if ((((NAN(*(double *)(param_1 + 8)) != (*(double *)(param_1 + 8) == 1.0)) &&
       (NAN(*(double *)(param_1 + 0x10)) != (*(double *)(param_1 + 0x10) == 0.0))) &&
      (NAN(*(double *)(param_1 + 0x18)) != (*(double *)(param_1 + 0x18) == 0.0))) &&
     (((NAN(*(double *)(param_1 + 0x20)) != (*(double *)(param_1 + 0x20) == 1.0) &&
       (NAN(*(double *)(param_1 + 0x28)) != (*(double *)(param_1 + 0x28) == 0.0))) &&
      (NAN(*(double *)(param_1 + 0x30)) != (*(double *)(param_1 + 0x30) == 0.0))))) {
    return 1;
  }
  return 0;
}



void __thiscall FUN_009be970(int param_1_00,int *param_1)

{
  double dVar1;
  double dVar2;
  undefined4 unaff_ESI;
  undefined4 uStack_3c;
  double local_38;
  double local_30;
  double local_28;
  double local_20;
  double local_18;
  undefined8 local_10;
  
  local_28 = 1.0;
  local_20 = 0.0;
  local_18 = 0.0;
  local_38 = 0.0;
  local_30 = 0.0;
  local_10 = 0x3ff0000000000000;
  (**(code **)(*param_1 + 8))(&local_28,&local_38);
  *(double *)(param_1_00 + 0x28) =
       *(double *)(param_1_00 + 0x18) * local_38 +
       *(double *)(param_1_00 + 8) * (double)CONCAT44(uStack_3c,unaff_ESI) +
       *(double *)(param_1_00 + 0x28);
  *(double *)(param_1_00 + 0x30) =
       local_38 * *(double *)(param_1_00 + 0x20) +
       *(double *)(param_1_00 + 0x10) * (double)CONCAT44(uStack_3c,unaff_ESI) +
       *(double *)(param_1_00 + 0x30);
  dVar1 = *(double *)(param_1_00 + 0x20);
  dVar2 = *(double *)(param_1_00 + 8);
  *(double *)(param_1_00 + 0x20) =
       *(double *)(param_1_00 + 0x20) * local_18 + *(double *)(param_1_00 + 0x10) * local_20;
  *(double *)(param_1_00 + 8) =
       *(double *)(param_1_00 + 0x18) * local_28 + *(double *)(param_1_00 + 8) * local_30;
  *(double *)(param_1_00 + 0x10) = dVar1 * local_28 + *(double *)(param_1_00 + 0x10) * local_30;
  *(double *)(param_1_00 + 0x18) = *(double *)(param_1_00 + 0x18) * local_18 + dVar2 * local_20;
  return;
}



undefined4 __thiscall FUN_009bea40(int param_1_00,int *param_1)

{
  undefined4 unaff_ESI;
  undefined4 uStack_3c;
  double local_38;
  double local_30;
  double local_28;
  double local_20;
  double local_18;
  undefined8 local_10;
  
  local_28 = 1.0;
  local_20 = 0.0;
  local_18 = 0.0;
  local_38 = 0.0;
  local_30 = 0.0;
  local_10 = 0x3ff0000000000000;
  (**(code **)(*param_1 + 8))(&local_28,&local_38);
  if (((((NAN(local_30) || NAN(*(double *)(param_1_00 + 8))) !=
         (local_30 == *(double *)(param_1_00 + 8))) &&
       ((NAN(local_28) || NAN(*(double *)(param_1_00 + 0x10))) !=
        (local_28 == *(double *)(param_1_00 + 0x10)))) &&
      ((NAN(local_20) || NAN(*(double *)(param_1_00 + 0x18))) !=
       (local_20 == *(double *)(param_1_00 + 0x18)))) &&
     ((((NAN(local_18) || NAN(*(double *)(param_1_00 + 0x20))) !=
        (local_18 == *(double *)(param_1_00 + 0x20)) &&
       ((NAN((double)CONCAT44(uStack_3c,unaff_ESI)) || NAN(*(double *)(param_1_00 + 0x28))) !=
        ((double)CONCAT44(uStack_3c,unaff_ESI) == *(double *)(param_1_00 + 0x28)))) &&
      ((NAN(local_38) || NAN(*(double *)(param_1_00 + 0x30))) !=
       (local_38 == *(double *)(param_1_00 + 0x30)))))) {
    return 1;
  }
  return 0;
}



void __thiscall FUN_009beaf0(int *param_1,double *param_2,double *param_3)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x14))();
  if (cVar1 != '\0') {
    *param_2 = *param_3;
    param_2[1] = param_3[1];
    return;
  }
  *param_2 = *(double *)(param_1 + 2) * *param_3 + *(double *)(param_1 + 6) * param_3[1] +
             *(double *)(param_1 + 10);
  param_2[1] = *(double *)(param_1 + 4) * param_3[1] + *(double *)(param_1 + 8) * param_3[1] +
               *(double *)(param_1 + 0xc);
  return;
}



void __thiscall FUN_009beb40(int *param_1,double *param_2,double *param_3)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x14))();
  if (cVar1 != '\0') {
    *param_2 = *param_3;
    param_2[1] = param_3[1];
    return;
  }
  *param_2 = *(double *)(param_1 + 2) * *param_3 + *(double *)(param_1 + 6) * param_3[1];
  param_2[1] = *(double *)(param_1 + 4) * param_3[1] + *(double *)(param_1 + 8) * param_3[1];
  return;
}



bool __thiscall FUN_009beb90(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_0086a520(param_1,*(undefined4 *)(param_1_00 + 0x14));
  if (*(char *)(param_1_00 + 4) != '\0') {
    return iVar1 == -1;
  }
  return iVar1 != -1;
}



undefined4 __thiscall FUN_009bebd0(int param_1_00,int param_1,char param_2)

{
  bool bVar1;
  uint uVar2;
  
  uVar2 = FUN_0086a180(param_1,*(undefined4 *)(param_1_00 + 0x14));
  if (uVar2 < *(uint *)(param_1_00 + 0xc)) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0xc) <= uVar2)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                   "uiIndex < m_nCount",0);
    }
    if (*(int *)(*(int *)(param_1_00 + 0x10) + uVar2 * 4) == param_1) {
      bVar1 = true;
      goto LAB_009bec2a;
    }
  }
  bVar1 = false;
LAB_009bec2a:
  if (param_2 == *(char *)(param_1_00 + 4)) {
    if (bVar1) {
      FUN_0086a560((int)(uVar2 * 4) >> 2,1);
      return 1;
    }
  }
  else if (!bVar1) {
    FUN_0086a440(param_1,(int)(uVar2 * 4) >> 2,1);
    return 1;
  }
  return 0;
}



bool __thiscall
FUN_009bec90(uint *param_1_00,uint param_1,uint param_2,undefined4 param_3,int param_4)

{
  uint uVar1;
  char cVar2;
  int iVar3;
  uint uVar4;
  uint *puVar5;
  undefined4 *puVar6;
  uint uVar7;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6528;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 < param_1)) {
    FUN_00840480("..\\..\\src\\generic\\selstore.cpp",0x57,"wxSelectionStore::SelectRange",
                 "itemFrom <= itemTo",L"should be in order",DAT_0323f878 ^ (uint)&stack0xffffffd4);
  }
  if (*param_1_00 >> 1 < param_2 - param_1) {
    if ((char)param_3 == *(char *)(param_1_00 + 1)) {
      uVar1 = param_1_00[3];
      uVar4 = FUN_0086a180(param_1,param_1_00[5]);
      uVar7 = FUN_0086a180(param_2,param_1_00[5]);
      if ((uVar4 == uVar1) || (puVar5 = (uint *)FUN_00979790(uVar4), *puVar5 < param_1)) {
        uVar4 = uVar4 + 1;
      }
      if ((uVar7 == uVar1) || (puVar5 = (uint *)FUN_00979790(uVar7), param_2 < *puVar5)) {
        uVar7 = uVar7 - 1;
      }
      if (uVar4 <= uVar7) {
        for (; (int)uVar4 <= (int)uVar7; uVar7 = uVar7 - 1) {
          if (param_4 != 0) {
            if (*(uint *)(param_4 + 4) < 0x65) {
              puVar6 = (undefined4 *)FUN_00979790(uVar7);
              FUN_0086a400(*puVar6,1);
            }
            else {
              param_4 = 0;
            }
          }
          FUN_0086a560((int)(uVar7 * 4) >> 2,1);
        }
      }
    }
    else {
      *(char *)(param_1_00 + 1) = (char)param_3;
      FUN_0086a2a0(param_1_00 + 2);
      uVar1 = param_1_00[5];
      uVar7 = 0;
      local_4 = 0;
      param_1_00[3] = 0;
      if (param_1 != 0) {
        do {
          iVar3 = FUN_0086a520(uVar7,uVar1);
          if (iVar3 == -1) {
            FUN_0086a970(uVar7,param_1_00[5]);
          }
          uVar7 = uVar7 + 1;
        } while (uVar7 < param_1);
      }
      param_2 = param_2 + 1;
      if (param_2 < *param_1_00) {
        do {
          iVar3 = FUN_0086a520(param_2,uVar1);
          if (iVar3 == -1) {
            FUN_0086a970(param_2,param_1_00[5]);
          }
          param_2 = param_2 + 1;
        } while (param_2 < *param_1_00);
      }
      param_4 = 0;
      local_4 = 0xffffffff;
      FUN_0086aa30();
    }
  }
  else {
    if (param_4 != 0) {
      *(undefined4 *)(param_4 + 4) = 0;
    }
    if (param_1 <= param_2) {
      do {
        cVar2 = FUN_009bebd0(param_1,param_3);
        if (((cVar2 != '\0') && (param_4 != 0)) &&
           (FUN_0086a400(param_1,1), 100 < *(uint *)(param_4 + 4))) {
          param_4 = 0;
        }
        param_1 = param_1 + 1;
      } while (param_1 <= param_2);
    }
  }
  ExceptionList = local_c;
  return param_4 != 0;
}



void __thiscall FUN_009beec0(uint *param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  
  if (*param_1_00 <= param_1) {
    *param_1_00 = param_1;
    return;
  }
  uVar1 = param_1_00[3];
  if (uVar1 != 0) {
    iVar3 = uVar1 * 4;
    uVar2 = uVar1;
    do {
      iVar3 = iVar3 + -4;
      uVar2 = uVar2 - 1;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1_00[3] <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                     "uiIndex < m_nCount",0);
      }
      if (param_1 <= *(uint *)(iVar3 + param_1_00[4])) {
        FUN_0086a560(iVar3 >> 2,1);
      }
      uVar1 = uVar1 - 1;
    } while (uVar1 != 0);
    *param_1_00 = param_1;
    return;
  }
  *param_1_00 = param_1;
  return;
}



void __thiscall FUN_009bef80(int param_1,int param_2)

{
  char cVar1;
  int iVar2;
  
  iVar2 = param_1 + 8;
  cVar1 = (**(code **)(*(int *)(param_1 + 8) + 0x10))();
  if (cVar1 == '\0') {
    iVar2 = (**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
  }
  if (param_2 == iVar2) {
    return;
  }
  FUN_0083ea60();
  return;
}



void __thiscall FUN_009befc0(int param_1_00,byte param_1,int param_2,int param_3)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  undefined **local_34 [5];
  undefined **appuStack_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be659a;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1 & 1) != 0) {
    iVar2 = FUN_008ff080(local_34,(-((param_1 & 4) != 0) & 3U) + 0xe);
    local_4 = 0;
    if (param_2 != iVar2) {
      FUN_0083ea60(iVar2);
    }
    *(undefined4 *)(param_2 + 8) = *(undefined4 *)(iVar2 + 8);
    *(undefined *)(param_2 + 0xc) = *(undefined *)(iVar2 + 0xc);
    *(undefined *)(param_2 + 0xd) = *(undefined *)(iVar2 + 0xd);
    *(undefined *)(param_2 + 0xe) = *(undefined *)(iVar2 + 0xe);
    *(undefined *)(param_2 + 0xf) = *(undefined *)(iVar2 + 0xf);
    *(undefined *)(param_2 + 0x10) = *(undefined *)(iVar2 + 0x10);
    local_4 = 0xffffffff;
    local_34[0] = wxObject::vftable;
    FUN_0083e850();
    iVar2 = FUN_008ff080(local_34,0xd);
    local_4 = 1;
    if (param_3 != iVar2) {
      FUN_0083ea60(iVar2);
    }
    *(undefined4 *)(param_3 + 8) = *(undefined4 *)(iVar2 + 8);
    *(undefined *)(param_3 + 0xc) = *(undefined *)(iVar2 + 0xc);
    *(undefined *)(param_3 + 0xd) = *(undefined *)(iVar2 + 0xd);
    *(undefined *)(param_3 + 0xe) = *(undefined *)(iVar2 + 0xe);
    *(undefined *)(param_3 + 0xf) = *(undefined *)(iVar2 + 0xf);
    *(undefined *)(param_3 + 0x10) = *(undefined *)(iVar2 + 0x10);
    local_34[0] = wxObject::vftable;
    goto LAB_009bf1ea;
  }
  if ((param_1 & 4) == 0) {
    iVar2 = param_1_00 + 0x10;
    cVar1 = (**(code **)(*(int *)(param_1_00 + 0x10) + 0x24))(DAT_0323f878 ^ (uint)&stack0xffffffbc)
    ;
    if (cVar1 == '\0') {
      iVar2 = FUN_008ff080(local_34,7);
      local_4 = 3;
    }
    FUN_004722cb(iVar2);
    local_4 = 0xffffffff;
    if (cVar1 == '\0') goto LAB_009bf157;
  }
  else {
    uVar3 = FUN_008ff080(local_34,0x11);
    local_4 = 2;
    FUN_004722cb(uVar3);
LAB_009bf157:
    local_4 = 0xffffffff;
    local_34[0] = wxObject::vftable;
    FUN_0083e850();
  }
  iVar2 = param_1_00 + 0x24;
  cVar1 = (**(code **)(*(int *)(param_1_00 + 0x24) + 0x24))();
  if (cVar1 == '\0') {
    iVar2 = FUN_008ff080(appuStack_20,4);
    local_4 = 4;
  }
  if (param_3 != iVar2) {
    FUN_0083ea60(iVar2);
  }
  *(undefined4 *)(param_3 + 8) = *(undefined4 *)(iVar2 + 8);
  *(undefined *)(param_3 + 0xc) = *(undefined *)(iVar2 + 0xc);
  *(undefined *)(param_3 + 0xd) = *(undefined *)(iVar2 + 0xd);
  *(undefined *)(param_3 + 0xe) = *(undefined *)(iVar2 + 0xe);
  *(undefined *)(param_3 + 0xf) = *(undefined *)(iVar2 + 0xf);
  *(undefined *)(param_3 + 0x10) = *(undefined *)(iVar2 + 0x10);
  if (cVar1 != '\0') {
    ExceptionList = local_c;
    return;
  }
  appuStack_20[0] = wxObject::vftable;
LAB_009bf1ea:
  local_4 = 0xffffffff;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009bf210(int *param_1_00,int *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined **local_74;
  undefined4 local_70;
  undefined4 uStack_6c;
  int *piStack_68;
  int *apiStack_60 [4];
  undefined4 uStack_50;
  uint uStack_4c;
  void *pvStack_48;
  undefined auStack_40 [16];
  uint uStack_30;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be65e0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_74;
  ExceptionList = &local_c;
  if (*(char *)(param_1_00 + 1) == '\0') {
    *param_1 = 0;
    *param_2 = 0;
  }
  else {
    FUN_0094bd80(DAT_0323f878 ^ (uint)&stack0xffffff7c);
    local_70 = 0;
    local_74 = wxFont::vftable;
    local_4._0_1_ = 1;
    local_4._1_3_ = 0;
    (**(code **)(*param_1_00 + 0x10))(&local_74);
    (**(code **)(*apiStack_60[0] + 0x50))(&stack0xffffff88);
    uVar1 = (**(code **)(*param_1_00 + 4))(apiStack_60);
    local_10._0_1_ = 2;
    FUN_008feb60(auStack_40,uVar1,1);
    local_10 = CONCAT31(local_10._1_3_,4);
    _free(pvStack_48);
    if (7 < uStack_4c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(apiStack_60[0]);
    }
    apiStack_60[0] = (int *)((uint)apiStack_60[0] & 0xffff0000);
    uStack_4c = 7;
    uStack_50 = 0;
    (**(code **)(*piStack_68 + 0xa4))(auStack_40,&local_74,&stack0xffffff88,0,0,0);
    *param_1 = param_1_00[0xe] + (int)piStack_68;
    *param_2 = uStack_6c;
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
    uStack_30 = uStack_30 & 0xffff0000;
    uStack_1c = 7;
    uStack_20 = 0;
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_00921450();
    local_4 = 0xffffffff;
    FUN_00457221();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



BOOL FUN_009bf3c0(HDC param_1,HBITMAP param_2,int param_3,int param_4,uint param_5)

{
  int iVar1;
  BOOL BVar2;
  HIMAGELIST himl;
  undefined local_18 [4];
  int iStack_14;
  int iStack_10;
  
  iVar1 = GetObjectW(param_2,0x18,local_18);
  if (iVar1 == 0) {
    return 0;
  }
  if (1 < param_5) {
    if (param_5 == 2) {
      BVar2 = DrawStateW(param_1,(HBRUSH)0x0,(DRAWSTATEPROC)0x0,(LPARAM)param_2,0,param_3,param_4,
                         iStack_14,iStack_10,0x24);
      return BVar2;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\ownerdrw.cpp",0x8f,"wxDrawStateBitmap","Assert failure",
                   L"DrawStateBitmap: unknown wxDSBStates value");
    }
    return 0;
  }
  himl = ImageList_Create(iStack_14,iStack_10,0x21,1,1);
  ImageList_Add(himl,param_2,(HBITMAP)0x0);
  BVar2 = ImageList_Draw(himl,0,param_1,param_3,param_4,(-(uint)(param_5 != 1) & 0xfffffffc) + 4);
  ImageList_Destroy(himl);
  return BVar2;
}



void __thiscall
FUN_009bf4b0(int *param_1_00,int param_1,int *param_2,undefined4 param_4,uint param_5)

{
  HDC hdc;
  HDC hdc_00;
  char cVar1;
  HGDIOBJ h;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  HBRUSH hbr;
  int *piVar5;
  int iVar6;
  undefined4 ***lData;
  undefined4 unaff_EBX;
  int unaff_ESI;
  uint uStack_b0;
  undefined **ppuStack_ac;
  HDC pHStack_a0;
  HDC local_98;
  undefined4 local_94;
  HDC pHStack_90;
  HDC pHStack_8c;
  HDC pHStack_88;
  RECT RStack_84;
  RECT local_74;
  tagSIZE tStack_64;
  undefined4 uStack_5c;
  HGDIOBJ pvStack_58;
  undefined **ppuStack_54;
  undefined auStack_44 [4];
  undefined auStack_40 [16];
  undefined4 ***apppuStack_30 [4];
  WPARAM WStack_20;
  uint uStack_1c;
  void *pvStack_18;
  undefined uStack_14;
  uint local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00be665f;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&uStack_b0;
  ExceptionList = &local_c;
  if (*(char *)(param_1_00 + 1) != '\0') {
    hdc = *(HDC *)(*(int *)(param_1 + 8) + 0x108);
    local_74.left = *param_2;
    local_74.top = param_2[1];
    local_74.right = param_2[2] + local_74.left;
    local_74.bottom = param_2[3] + local_74.top;
    local_94 = 0;
    local_98 = (HDC)wxFont::vftable;
    local_4 = 0;
    (**(code **)(*param_1_00 + 0x10))(&local_98,DAT_0323f878 ^ (uint)&stack0xffffff40);
    FUN_00453f4b();
    uStack_8._0_1_ = 1;
    FUN_00453f4b();
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,2);
    (**(code **)(*param_1_00 + 0x14))(param_4,&pvStack_58,&uStack_b0);
    h = (HGDIOBJ)FUN_009229f0();
    pHStack_8c = hdc;
    pHStack_88 = (HDC)SelectObject(hdc,h);
    uStack_14 = 3;
    local_98 = hdc;
    cVar1 = (**(code **)(unaff_ESI + 0x24))();
    if (cVar1 == '\0') {
      unaff_EBX = 0xffffffff;
    }
    cVar1 = (**(code **)(tStack_64.cx + 0x24))();
    if (cVar1 == '\0') {
      uStack_5c = 0xffffffff;
    }
    FUN_0093f7a0(uStack_5c,unaff_EBX);
    uStack_14 = 4;
    pHStack_a0 = hdc;
    FUN_0093f9b0(0x6a);
    uStack_14 = 5;
    uVar2 = (**(code **)(unaff_ESI + 0x18))();
    uVar3 = (**(code **)(unaff_ESI + 0x14))();
    uVar4 = (**(code **)(unaff_ESI + 0x10))();
    hbr = CreateSolidBrush(uVar4 & 0xff | (uVar3 & 0xff | (uVar2 & 0xff | 0x200) << 8) << 8);
    local_74.right = (LONG)hdc;
    local_74.bottom = (LONG)SelectObject(hdc,hbr);
    uStack_14 = 7;
    FillRect(hdc,&RStack_84,hbr);
    (**(code **)(*param_1_00 + 4))(auStack_44);
    piVar5 = (int *)FUN_00432231(auStack_40);
    iVar6 = *piVar5;
    if (*(uint *)(iVar6 + 0x18) < 8) {
      iVar6 = iVar6 + 4;
    }
    else {
      iVar6 = *(int *)(iVar6 + 4);
    }
    GetTextExtentPoint32W(hdc,(LPCWSTR)(iVar6 + piVar5[1] * 2),WStack_20,&tStack_64);
    FUN_00432214();
    uStack_b0 = 2;
    if (((param_5 & 4) != 0) && ((param_5 & 1) == 0)) {
      uStack_b0 = 0x22;
    }
    if ((param_5 & 0x100) != 0) {
      uStack_b0 = uStack_b0 | 0x200;
    }
    lData = apppuStack_30[0];
    if (uStack_1c < 8) {
      lData = apppuStack_30;
    }
    DrawStateW(hdc,(HBRUSH)0x0,(DRAWSTATEPROC)0x0,(LPARAM)lData,WStack_20,*param_2 + param_1_00[0xe]
               ,(param_2[3] - tStack_64.cy) / 2 + param_2[1],param_2[2] - param_1_00[0xe],
               tStack_64.cy,uStack_b0);
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(apppuStack_30[0]);
    }
    uStack_1c = 7;
    WStack_20 = 0;
    apppuStack_30[0] = (undefined4 ***)((uint)apppuStack_30[0] & 0xffff0000);
    if (hdc != (HDC)0x0) {
      SelectObject(hdc,pvStack_58);
    }
    if (hbr != (HBRUSH)0x0) {
      DeleteObject(hbr);
    }
    if (pHStack_8c != (HDC)0x0) {
      SetBkMode(pHStack_90,(int)pHStack_8c);
    }
    hdc_00 = pHStack_88;
    if (RStack_84.left != 0xffffffff) {
      SetTextColor(pHStack_88,RStack_84.left);
    }
    if (RStack_84.top != 0xffffffff) {
      SetBkColor(hdc_00,RStack_84.top);
    }
    if (hdc != (HDC)0x0) {
      SelectObject(hdc,(HGDIOBJ)RStack_84.bottom);
    }
    local_4._0_1_ = 1;
    ppuStack_ac = wxObject::vftable;
    FUN_0083e850();
    local_4 = (uint)local_4._1_3_ << 8;
    ppuStack_54 = wxObject::vftable;
    FUN_0083e850();
    local_4 = 0xffffffff;
    FUN_00921450();
    if ((param_5 & 0x10) != 0) {
      DrawFocusRect(hdc,&local_74);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_009bf8a0(int param_1)

{
  WCHAR local_c;
  undefined2 local_a;
  undefined2 local_8;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_c;
  if (param_1 - 1U < 0x1f) {
    local_c = (short)param_1 + L'@';
    local_a = 0x3a;
    local_8 = 0;
    SetCurrentDirectoryW(&local_c);
    ___security_check_cookie_4();
    return;
  }
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_009bf920(void)

{
  return &PTR_PTR_00d77488;
}



undefined * FUN_009bf930(void)

{
  return &DAT_032e9d0c;
}



undefined ** FUN_009bf9e0(void)

{
  return &PTR_u_wxDirFilterListCtrl_0323cd5c;
}



undefined ** FUN_009bf9f0(void)

{
  return &PTR_PTR_00d77490;
}



undefined * FUN_009bfa00(void)

{
  return &DAT_032e9da0;
}



undefined ** FUN_009bfa10(void)

{
  return &PTR_u_wxFileIconsTableModule_0323cd74;
}



undefined4 * __thiscall FUN_009bfa20(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxClientData::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_009bfa40(undefined4 *param_1)

{
  *param_1 = wxClientData::vftable;
  return;
}



void __thiscall FUN_009bfa50(int param_1_00,undefined4 *param_1,uint param_2)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= param_2)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  *param_1 = *(undefined4 *)(*(int *)(param_1_00 + 8) + param_2 * 4);
  return;
}



void __fastcall FUN_009bfaf0(int *param_1)

{
  int *piVar1;
  undefined *puStack_18;
  undefined local_c [4];
  undefined local_8 [8];
  
  puStack_18 = local_8;
  (**(code **)(*(int *)param_1[0x84] + 0x3dc))(local_c,param_1 + 0x66);
  while (puStack_18 != (undefined *)0x0) {
    (**(code **)(*param_1 + 0x3cc))(puStack_18);
    piVar1 = (int *)(**(code **)(*(int *)param_1[0x84] + 0x3e0))
                              (&stack0xffffffec,param_1 + 0x66,&puStack_18);
    puStack_18 = (undefined *)*piVar1;
  }
  return;
}



undefined4 __thiscall FUN_009bfb60(int *param_1_00,int param_1)

{
  uint uVar1;
  uint *puVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  uint **ppuVar6;
  uint unaff_EDI;
  uint *puStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined *puStack_20;
  undefined auStack_14 [3];
  undefined local_11;
  undefined auStack_10 [4];
  uint local_c [3];
  
  uStack_28 = param_1_00[0x66];
  puStack_20 = &local_11;
  uStack_24 = param_1;
  puStack_2c = local_c;
  local_11 = 0;
  (**(code **)(*param_1_00 + 0x3b4))();
  uVar1 = unaff_EDI;
  if (unaff_EDI != 0) {
    do {
      local_c[0] = uVar1;
      if (uStack_24._3_1_ != '\0') break;
      (**(code **)(*param_1_00 + 0x3c8))(local_c[0]);
      puVar2 = (uint *)(**(code **)(*param_1_00 + 0x3b4))
                                 (&stack0xffffffe4,puStack_20,param_1,(int)&uStack_28 + 3);
      uVar1 = *puVar2;
    } while (*puVar2 != 0);
    if (local_c[0] != 0) {
      iVar3 = (**(code **)(*(int *)param_1_00[0x84] + 0x374))(local_c);
      if (*(char *)(iVar3 + 0x52) != '\0') {
        (**(code **)(*(int *)param_1_00[0x84] + 0x40c))(auStack_10);
      }
      if ((((uint)param_1_00[0x38] >> 5 & 1) != 0) && (*(char *)(iVar3 + 0x52) != '\0')) {
        (**(code **)(*(int *)param_1_00[0x84] + 0x3dc))(&uStack_24,auStack_10,&stack0xffffffe4);
        while (uStack_24 != 0) {
          iVar3 = (**(code **)(*(int *)param_1_00[0x84] + 0x374))(&uStack_24);
          if (((iVar3 != 0) && (iVar4 = FUN_008507a0(PTR_DAT_03236318), iVar4 != 0)) &&
             (*(char *)(iVar3 + 0x52) == '\0')) {
            (**(code **)(*(int *)param_1_00[0x84] + 0x424))(&uStack_28,1);
            ppuVar6 = &puStack_2c;
            goto LAB_009bfce8;
          }
          piVar5 = (int *)(**(code **)(*(int *)param_1_00[0x84] + 0x3e0))
                                    (&stack0xffffffe4,auStack_14,&puStack_20);
          uStack_24 = *piVar5;
        }
      }
      (**(code **)(*(int *)param_1_00[0x84] + 0x424))(auStack_10,1);
      ppuVar6 = (uint **)&stack0xffffffe8;
LAB_009bfce8:
      (**(code **)(*(int *)param_1_00[0x84] + 0x42c))(ppuVar6);
      return 1;
    }
  }
  return 0;
}



void __fastcall FUN_009bfdf0(int param_1)

{
  int iVar1;
  uint uVar2;
  uint local_18 [2];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6698;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00853f60(DAT_0323f878 ^ (uint)&stack0xffffffdc);
  FUN_0086a600();
  local_4 = 0;
  (**(code **)(**(int **)(param_1 + 0x210) + 0x3c8))(local_18);
  uVar2 = 0;
  if (local_18[0] != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_18[0] <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = (**(code **)(**(int **)(param_1 + 0x210) + 0x374))(&stack0x00000000);
      FUN_00854700(iVar1 + 8,1);
      uVar2 = uVar2 + 1;
    } while (uVar2 < local_18[0]);
  }
  puStack_8 = (undefined *)0xffffffff;
  FUN_0086aa30();
  ExceptionList = pvStack_10;
  return;
}



void __fastcall FUN_009bfee0(int param_1)

{
  int iVar1;
  uint uVar2;
  uint local_18 [2];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6698;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00853f60(DAT_0323f878 ^ (uint)&stack0xffffffdc);
  FUN_0086a600();
  local_4 = 0;
  (**(code **)(**(int **)(param_1 + 0x210) + 0x3c8))(local_18);
  uVar2 = 0;
  if (local_18[0] != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_18[0] <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = (**(code **)(**(int **)(param_1 + 0x210) + 0x374))(&stack0x00000000);
      if (*(char *)(iVar1 + 0x52) == '\0') {
        FUN_00854700(iVar1 + 8,1);
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < local_18[0]);
  }
  puStack_8 = (undefined *)0xffffffff;
  FUN_0086aa30();
  ExceptionList = pvStack_10;
  return;
}



void __thiscall FUN_009bffd0(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  int *piVar3;
  int unaff_EBX;
  undefined4 uStack_18;
  undefined4 uStack_8;
  
  uVar1 = param_1;
  uStack_18 = (int)&uStack_8 + 3;
  uStack_8 = (uint)(uint3)uStack_8;
  (**(code **)(*param_1_00 + 0x3b4))(&param_1,param_1_00[0x66],param_1);
  if (unaff_EBX != 0) {
    do {
      iVar2 = unaff_EBX;
      if (uStack_18._3_1_ != '\0') break;
      piVar3 = (int *)(**(code **)(*param_1_00 + 0x3b4))
                                (&stack0xffffffec,iVar2,uVar1,(int)&uStack_18 + 3);
      unaff_EBX = *piVar3;
    } while (*piVar3 != 0);
    if ((iVar2 != 0) && (uStack_18._3_1_ != '\0')) {
      (**(code **)(*(int *)param_1_00[0x84] + 0x424))(&stack0xfffffff4,uStack_8);
    }
  }
  return;
}



void __thiscall FUN_009c0070(int *param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  
  if (((uint)param_1[0x38] >> 9 & 1) != 0) {
    (**(code **)(*param_1 + 0x3ac))();
    uVar1 = *(uint *)(param_2 + 4);
    uVar3 = 0;
    if (uVar1 != 0) {
      iVar2 = 0;
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar1 <= uVar3)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                       "nIndex < m_nCount",L"wxArrayString: index out of bounds");
        }
        (**(code **)(*param_1 + 0x380))(*(int *)(param_2 + 8) + iVar2,1);
        uVar1 = *(uint *)(param_2 + 4);
        uVar3 = uVar3 + 1;
        iVar2 = iVar2 + 0x24;
      } while (uVar3 < uVar1);
    }
  }
  return;
}



void __fastcall FUN_009c0100(int *param_1)

{
  int iVar1;
  int unaff_ESI;
  int unaff_EDI;
  undefined local_10 [4];
  undefined4 uStack_c;
  undefined local_4 [4];
  
  (**(code **)(*param_1 + 0x27c))(local_4,local_10);
  if (param_1[0x84] != 0) {
    iVar1 = 0;
    if ((int *)param_1[0x85] != (int *)0x0) {
      (**(code **)(*(int *)param_1[0x85] + 0x278))(&stack0xffffffe8,&stack0xffffffec);
      unaff_EDI = (unaff_EDI - unaff_ESI) + -3;
      iVar1 = unaff_ESI;
    }
    (**(code **)(*(int *)param_1[0x84] + 0x288))(0,0,uStack_c,unaff_EDI,3);
    if ((int *)param_1[0x85] != (int *)0x0) {
      (**(code **)(*(int *)param_1[0x85] + 0x288))(0,unaff_EDI + 3,uStack_c,iVar1,3);
      (**(code **)(*(int *)param_1[0x85] + 0x15c))(1,0);
    }
  }
  return;
}



void __thiscall FUN_009c0240(int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  undefined4 uStack_38;
  undefined4 uStack_34;
  int iStack_30;
  undefined auStack_2c [4];
  uint uStack_28;
  int iStack_24;
  undefined auStack_1c [16];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be66d0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0096be20(DAT_0323f878 ^ (uint)&stack0xffffffb8);
  iVar2 = 0;
  FUN_00853ce0(0);
  uStack_4 = 0;
  FUN_00853ce0(0);
  uStack_4 = CONCAT31(uStack_4._1_3_,1);
  uVar1 = FUN_0085d710(param_2,auStack_2c,auStack_1c);
  if ((uVar1 != 0) && (param_3 < (int)uVar1)) {
    uVar3 = 0;
    if (uVar1 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_28 <= uVar3)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                       "nIndex < m_nCount",L"wxArrayString: index out of bounds");
        }
        iStack_30 = iStack_24 + iVar2;
        uStack_38 = 1;
        uStack_34 = 1;
        (**(code **)(*(int *)(param_1 + 0x194) + 0x28))(&uStack_38,0,0);
        uVar3 = uVar3 + 1;
        iVar2 = iVar2 + 0x24;
      } while (uVar3 < uVar1);
    }
    (**(code **)(*(int *)(param_1 + 0x194) + 0x14))(param_3);
  }
  uStack_4 = uStack_4 & 0xffffff00;
  FUN_00853f30();
  uStack_4 = 0xffffffff;
  FUN_00853f30();
  ExceptionList = local_c;
  return;
}



undefined4 FUN_009c0370(void)

{
  DAT_032e9d08 = (undefined4 *)operator_new(8);
  if (DAT_032e9d08 != (undefined4 *)0x0) {
    DAT_032e9d08[1] = 0;
    *DAT_032e9d08 = 0;
    return 1;
  }
  DAT_032e9d08 = (undefined4 *)0x0;
  return 1;
}



undefined4 * FUN_009c03a0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxFileIconsTableModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __fastcall FUN_009c0400(int **param_1)

{
  int *piVar1;
  int iVar2;
  
  if (param_1[1] != (int *)0x0) {
    piVar1 = param_1[1];
    piVar1[7] = 0;
    piVar1[8] = 0;
    iVar2 = FUN_00889270();
    while (iVar2 != 0) {
      if (*(int **)(iVar2 + 8) != (int *)0x0) {
        (**(code **)(**(int **)(iVar2 + 8) + 4))(1);
      }
      iVar2 = FUN_00889270();
    }
    FUN_00889740();
    if (param_1[1] != (int *)0x0) {
      (**(code **)(*param_1[1] + 4))(1);
    }
  }
  if (*param_1 != (int *)0x0) {
    (**(code **)(**param_1 + 4))(1);
  }
  return;
}



void __thiscall FUN_009c0470(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxTreeEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



undefined8 __fastcall FUN_009c04c0(int param_1)

{
  return *(undefined8 *)(param_1 + 8);
}



undefined4 * __thiscall FUN_009c04d0(undefined4 *param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxIcon::vftable;
  FUN_0092c830(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_009c0530(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  size_t _Count;
  void *pvVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5266;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009b3550(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  *param_1_00 = wxTreeCtrl::vftable;
  local_4 = 0;
  param_1_00[0x6b] = 0;
  _Count = FUN_00893ca0(100);
  param_1_00[0x6d] = _Count;
  param_1_00[0x6e] = 0;
  pvVar1 = _calloc(_Count,4);
  param_1_00[0x6c] = pvVar1;
  param_1_00[0x73] = 0;
  param_1_00[0x74] = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  param_1_00[0x75] = 0;
  param_1_00[0x76] = 0;
  FUN_009dc930(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009c0600(int *param_1)

{
  (**(code **)(*param_1 + 0x3c8))(param_1[0x66]);
  if (param_1[0x6c] != 0) {
    (**(code **)(*param_1 + 0x35c))(param_1 + 0x67);
  }
  return;
}



undefined4 * FUN_009c0720(undefined4 *param_1)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  uint uVar4;
  byte *pbVar5;
  byte *pbVar6;
  uint uVar7;
  uint uVar8;
  byte *pbVar9;
  uint local_2c;
  byte *local_24;
  int local_20;
  int local_1c;
  undefined **local_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6719;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  FUN_00902d80(0x10,0x10,1);
  local_4 = 1;
  bVar1 = FUN_008ffa10(uVar4);
  bVar2 = FUN_008ffa60();
  bVar3 = FUN_008ffab0();
  pbVar5 = (byte *)FUN_008ff850();
  pbVar6 = (byte *)FUN_008ff850();
  local_24 = (byte *)FUN_008ff850();
  FUN_008ff990(bVar1,bVar1,bVar1);
  local_1c = 0x10;
  do {
    pbVar6 = pbVar6 + 0x60;
    local_20 = 0x10;
    do {
      pbVar9 = pbVar5;
      uVar4 = 0;
      uVar7 = 0;
      uVar8 = 0;
      local_2c = 0;
      if (((*pbVar9 == bVar1) && (pbVar9[1] == bVar2)) && (pbVar9[2] == bVar3)) {
        local_2c = 1;
      }
      else {
        uVar8 = (uint)pbVar9[1];
        uVar7 = (uint)pbVar9[2];
        uVar4 = (uint)*pbVar9;
      }
      if (((pbVar9[3] == bVar1) && (pbVar9[4] == bVar2)) && (pbVar9[5] == bVar3)) {
        local_2c = local_2c + 1;
      }
      else {
        uVar4 = uVar4 + pbVar9[3];
        uVar8 = uVar8 + pbVar9[4];
        uVar7 = uVar7 + pbVar9[5];
      }
      if (((*pbVar6 == bVar1) && (pbVar6[1] == bVar2)) && (pbVar6[2] == bVar3)) {
        local_2c = local_2c + 1;
      }
      else {
        uVar4 = uVar4 + *pbVar6;
        uVar8 = uVar8 + pbVar6[1];
        uVar7 = uVar7 + pbVar6[2];
      }
      if (((pbVar6[3] == bVar1) && (pbVar6[4] == bVar2)) && (pbVar6[5] == bVar3)) {
        local_2c = local_2c + 1;
      }
      else {
        uVar4 = uVar4 + pbVar6[3];
        uVar8 = uVar8 + pbVar6[4];
        uVar7 = uVar7 + pbVar6[5];
      }
      pbVar6 = pbVar6 + 6;
      if (local_2c < 3) {
        *local_24 = (byte)(uVar4 >> 2);
        local_24[1] = (byte)(uVar8 >> 2);
        local_24[2] = (byte)(uVar7 >> 2);
      }
      else {
        local_24[2] = bVar1;
        local_24[1] = bVar1;
        *local_24 = bVar1;
      }
      local_24 = local_24 + 3;
      local_20 = local_20 + -1;
      pbVar5 = pbVar9 + 6;
    } while (local_20 != 0);
    pbVar5 = pbVar9 + 0x66;
    local_1c = local_1c + -1;
  } while (local_1c != 0);
  param_1[1] = 0;
  local_4._0_1_ = 2;
  *param_1 = wxBitmap::vftable;
  FUN_008f4d60(local_14,0xffffffff);
  local_4 = (uint)local_4._1_3_ << 8;
  local_14[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_009c0950(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxTreeEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void FUN_009c09c0(void)

{
  int iVar1;
  
  iVar1 = DAT_032e9d08;
  if (DAT_032e9d08 != 0) {
    FUN_009c0400();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __fastcall FUN_009c09f0(int param_1)

{
  _free(*(void **)(param_1 + 0x40));
  if (7 < *(uint *)(param_1 + 0x3c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x28));
  }
  *(undefined4 *)(param_1 + 0x3c) = 7;
  *(undefined4 *)(param_1 + 0x38) = 0;
  *(undefined2 *)(param_1 + 0x28) = 0;
  _free(*(void **)(param_1 + 0x1c));
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  return;
}



void FUN_009c0a60(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be6748;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_009ce170(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_009c09f0();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009c0ab0(undefined4 *param_1)

{
  *param_1 = wxGenericDirCtrl::vftable;
  _free((void *)param_1[0x82]);
  if (7 < (uint)param_1[0x81]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x7c]);
  }
  param_1[0x81] = 7;
  param_1[0x80] = 0;
  *(undefined2 *)(param_1 + 0x7c) = 0;
  _free((void *)param_1[0x78]);
  if (7 < (uint)param_1[0x77]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x72]);
  }
  param_1[0x77] = 7;
  param_1[0x76] = 0;
  *(undefined2 *)(param_1 + 0x72) = 0;
  _free((void *)param_1[0x6e]);
  if (7 < (uint)param_1[0x6d]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x68]);
  }
  param_1[0x6d] = 7;
  param_1[0x6c] = 0;
  *(undefined2 *)(param_1 + 0x68) = 0;
  FUN_0044cd6b();
  return;
}



void __thiscall FUN_009c0be0(int *param_1_00,char param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_44 [4];
  uint uStack_40;
  int iStack_3c;
  undefined auStack_38 [4];
  undefined local_34 [4];
  undefined4 uStack_30;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6780;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_44;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  if (*(char *)(param_1_00 + 0x65) != param_1) {
    *(char *)(param_1_00 + 0x65) = param_1;
    if (((uint)param_1_00[0x38] >> 9 & 1) == 0) {
      (**(code **)(*param_1_00 + 0x36c))(local_34,uVar1);
      puStack_8 = (undefined *)0x1;
      (**(code **)(*param_1_00 + 0x3bc))();
      (**(code **)(*param_1_00 + 0x37c))(auStack_38);
      _free(pvStack_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
    }
    else {
      FUN_00853ce0(0);
      local_4 = 0;
      (**(code **)(*param_1_00 + 0x370))(local_44);
      (**(code **)(*param_1_00 + 0x3bc))();
      uVar1 = 0;
      if (uStack_40 != 0) {
        iVar2 = 0;
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_40 <= uVar1)) {
            FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                         "nIndex < m_nCount",L"wxArrayString: index out of bounds");
          }
          (**(code **)(*param_1_00 + 0x35c))(iVar2 + iStack_3c);
          uVar1 = uVar1 + 1;
          iVar2 = iVar2 + 0x24;
        } while (uVar1 < uStack_40);
      }
      local_4 = 0xffffffff;
      FUN_00853f30();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_009c0d50(int param_1)

{
  undefined4 uVar1;
  uint unaff_EBX;
  int iVar2;
  uint uVar3;
  int aiStack_44 [2];
  undefined auStack_3c [4];
  undefined4 uStack_38;
  undefined auStack_34 [16];
  uint uStack_24;
  void *pvStack_20;
  void *pvStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be6780;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)aiStack_44;
  ExceptionList = &local_c;
  uVar1 = (**(code **)(*(int *)(param_1 + 0x194) + 0x18))(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  if (((uint)(*(int **)(param_1 + 0x1a4))[0x38] >> 9 & 1) == 0) {
    (**(code **)(**(int **)(param_1 + 0x1a4) + 0x36c))(auStack_34);
    puStack_8 = (undefined *)0x1;
    (**(code **)(**(int **)(param_1 + 0x1a4) + 0x39c))(uVar1);
    (**(code **)(**(int **)(param_1 + 0x1a4) + 0x3bc))();
    (**(code **)(**(int **)(param_1 + 0x1a4) + 0x35c))(auStack_3c);
    _free(pvStack_20);
    if (7 < uStack_24) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_38);
    }
  }
  else {
    FUN_00853ce0(0);
    uStack_4 = 0;
    (**(code **)(**(int **)(param_1 + 0x1a4) + 0x370))(aiStack_44);
    (**(code **)(**(int **)(param_1 + 0x1a4) + 0x39c))(uVar1);
    (**(code **)(**(int **)(param_1 + 0x1a4) + 0x3bc))();
    uVar3 = 0;
    if (unaff_EBX != 0) {
      iVar2 = 0;
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (unaff_EBX <= uVar3)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                       "nIndex < m_nCount",L"wxArrayString: index out of bounds");
        }
        (**(code **)(**(int **)(param_1 + 0x1a4) + 0x35c))(aiStack_44[0] + iVar2);
        uVar3 = uVar3 + 1;
        iVar2 = iVar2 + 0x24;
      } while (uVar3 < unaff_EBX);
    }
    local_c = (void *)0xffffffff;
    FUN_00853f30();
  }
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_009c0f00(undefined4 param_1_00,byte param_1)

{
  FUN_009c0ab0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_009c0fe0(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x24,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



void FUN_009c1020(int param_1,int param_2,int param_3)

{
  short *psVar1;
  undefined4 uVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  undefined4 uVar6;
  int local_dc;
  uint local_d8;
  int local_d4;
  int local_d0;
  int local_cc;
  undefined local_c8 [4];
  uint local_c4;
  int local_c0;
  undefined local_b8 [4];
  uint local_b4;
  undefined4 local_a4;
  uint local_a0;
  void *local_9c;
  undefined local_94 [8];
  undefined local_8c [4];
  uint local_88;
  undefined4 local_78;
  uint local_74;
  void *local_70;
  uint local_64;
  undefined4 local_54;
  uint local_50;
  void *local_4c;
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  void *local_28;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be67f1;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_dc;
  ExceptionList = &local_c;
  local_d4 = param_1;
  local_cc = param_2;
  local_d0 = param_3;
  FUN_00b29510(local_c8,1,0,DAT_0323f878 ^ (uint)&stack0xffffff14);
  local_4 = 0;
  local_d8 = 0;
  if (local_c4 != 0) {
    local_dc = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_c4 <= local_d8)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      local_88 = local_88 & 0xffff0000;
      local_74 = 7;
      local_78 = 0;
      FID_conflict_assign(local_dc + local_c0,0,0xffffffff);
      local_70 = (void *)0x0;
      local_4._0_1_ = 1;
      FUN_00b29aa0(local_8c);
      local_4._0_1_ = 2;
      FUN_0086a600();
      local_4._0_1_ = 3;
      FUN_009e9f10();
      local_4 = CONCAT31(local_4._1_3_,4);
      uVar2 = FUN_00b289a0();
      switch(uVar2) {
      case 0:
        iVar3 = FUN_008507a0(&DAT_00d77bec);
        if ((iVar3 == 0) || (iVar3 = FUN_008507a0(&DAT_00d77be4), iVar3 == 0)) {
          uVar2 = 5;
        }
        else {
          uVar2 = 6;
        }
        break;
      default:
switchD_009c116d_caseD_1:
        uVar2 = 3;
        break;
      case 2:
      case 3:
        uVar2 = 4;
        break;
      case 4:
        piVar4 = (int *)FUN_0081b542(local_94,0);
        iVar3 = *piVar4;
        psVar1 = (short *)piVar4[1];
        if (iVar3 != -4) {
          if (iVar3 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(iVar3 + 0x18) < 8) {
            iVar5 = iVar3 + 4;
          }
          else {
            iVar5 = *(int *)(iVar3 + 4);
          }
          if ((short *)(iVar5 + *(int *)(iVar3 + 0x14) * 2) <= psVar1) {
            FUN_00a3fb10();
          }
        }
        if (*psVar1 != 0x5c) goto switchD_009c116d_caseD_1;
        local_4._0_1_ = 1;
        FUN_009c0a60();
        local_4 = (uint)local_4._1_3_ << 8;
        _free(local_70);
        if (7 < local_74) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_88);
        }
        goto LAB_009c1391;
      }
      FUN_00854700(local_8c,1);
      uVar6 = FUN_009c0fe0(local_b8);
      local_4._0_1_ = 5;
      FUN_00854700(uVar6,1);
      local_4._0_1_ = 4;
      _free(local_9c);
      if (7 < local_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_b4);
      }
      local_b4 = local_b4 & 0xffff0000;
      local_a0 = 7;
      local_a4 = 0;
      FUN_0086a400(uVar2,1);
      local_4._0_1_ = 6;
      FUN_009ce170();
      _free(local_28);
      if (7 < local_2c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_40);
      }
      local_2c = 7;
      local_30 = 0;
      local_40 = local_40 & 0xffff0000;
      _free(local_4c);
      if (7 < local_50) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_64);
      }
      local_50 = 7;
      local_54 = 0;
      local_64 = local_64 & 0xffff0000;
      local_4 = (uint)local_4._1_3_ << 8;
      _free(local_70);
      if (7 < local_74) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_88);
      }
LAB_009c1391:
      local_88 = local_88 & 0xffff0000;
      local_dc = local_dc + 0x24;
      local_d8 = local_d8 + 1;
      local_78 = 0;
      local_74 = 7;
    } while (local_d8 < local_c4);
  }
  iVar3 = local_d4;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(int *)(local_d4 + 4) != *(int *)(local_cc + 4)) {
      FUN_00840480("..\\..\\src\\generic\\dirctrlg.cpp",0x104,"wxGetAvailableDrives",
                   "(paths.GetCount() == names.GetCount())",
                   L"The number of paths and their human readable names should be equal in number.")
      ;
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(iVar3 + 4) != *(int *)(local_d0 + 4))) {
      FUN_00840480("..\\..\\src\\generic\\dirctrlg.cpp",0x105,"wxGetAvailableDrives",
                   "(paths.GetCount() == icon_ids.GetCount())",
                   L"Wrong number of icons for available drives.");
    }
  }
  local_4 = 0xffffffff;
  FUN_00853f30();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_009c1480(int param_1)

{
  int iVar1;
  ushort *puVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  UINT UStack_40;
  int aiStack_3c [2];
  undefined auStack_34 [4];
  undefined4 uStack_30;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bddcd8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&UStack_40;
  ExceptionList = &local_c;
  UStack_40 = SetErrorMode(0x8001);
  if ((*(int *)(param_1 + 0x14) == 3) && (FUN_0081feb2(aiStack_3c,1), aiStack_3c[0] == 0x3a)) {
    FUN_00863b70(auStack_34);
    iVar3 = __getdrive();
    piVar4 = (int *)FUN_0081b542(aiStack_3c,0);
    iVar1 = *piVar4;
    puVar2 = (ushort *)piVar4[1];
    if (iVar1 != -4) {
      if (iVar1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar1 + 0x18) < 8) {
        iVar5 = iVar1 + 4;
      }
      else {
        iVar5 = *(int *)(iVar1 + 4);
      }
      if ((ushort *)(iVar5 + *(int *)(iVar1 + 0x14) * 2) <= puVar2) {
        FUN_00a3fb10();
      }
    }
    FUN_009bf8a0(*puVar2 - 0x60);
    FUN_009bf8a0(iVar3);
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
  }
  SetErrorMode(UStack_40);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall
FUN_009c15b0(undefined4 *param_1_00,undefined4 *param_1,undefined4 *param_2,undefined param_3)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be683e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxDirItemData::vftable;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  param_1_00[9] = 0;
  param_1_00[0x11] = 7;
  param_1_00[0x10] = 0;
  *(undefined2 *)(param_1_00 + 0xc) = 0;
  param_1_00[0x12] = 0;
  local_4 = 2;
  if (param_1_00 + 2 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  if (param_1_00 + 0xb != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  *(undefined *)(param_1_00 + 0x14) = 0;
  *(undefined *)((int)param_1_00 + 0x51) = 0;
  *(undefined *)((int)param_1_00 + 0x52) = param_3;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009c1660(undefined4 *param_1)

{
  *param_1 = wxDirItemData::vftable;
  _free((void *)param_1[0x12]);
  if (7 < (uint)param_1[0x11]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xc]);
  }
  param_1[0x11] = 7;
  param_1[0x10] = 0;
  *(undefined2 *)(param_1 + 0xc) = 0;
  _free((void *)param_1[9]);
  if (7 < (uint)param_1[8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  *param_1 = wxClientData::vftable;
  return;
}



undefined4 __thiscall FUN_009c16e0(undefined4 param_1_00,byte param_1)

{
  FUN_009c1660();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_009c1700(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  if (param_1_00 + 8 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  iVar2 = FUN_0085caf0(local_30,param_1,uVar1);
  local_4 = 0;
  if (param_1_00 + 0x2c != iVar2) {
    FID_conflict_assign(iVar2,0,0xffffffff);
  }
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009c17a0(int param_1)

{
  short sVar1;
  short *psVar2;
  
  *(undefined *)(param_1 + 0x194) = 0;
  *(undefined4 *)(param_1 + 0x1e8) = 0;
  if (PTR_DAT_03236318 != (undefined *)0x0) {
    psVar2 = (short *)PTR_DAT_03236318;
    do {
      sVar1 = *psVar2;
      psVar2 = psVar2 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(PTR_DAT_03236318,(int)psVar2 - (int)(PTR_DAT_03236318 + 2) >> 1);
    *(undefined4 *)(param_1 + 0x214) = 0;
    *(undefined4 *)(param_1 + 0x210) = 0;
    return;
  }
  FUN_00432156();
  *(undefined4 *)(param_1 + 0x214) = 0;
  *(undefined4 *)(param_1 + 0x210) = 0;
  return;
}



undefined4
FUN_009c1810(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6884;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x1e4);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    FUN_0043c211("treeCtrl");
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar3 = FUN_009c0530(param_1,param_2,param_3,param_4,param_5,&DAT_032c0398,local_30);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar1);
    }
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 __thiscall
FUN_009c18e0(int *param_1_00,undefined4 param_1,undefined4 param_2,void *param_3,undefined4 param_4)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x54);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_009c15b0(param_2,param_3,1);
  }
  local_4 = 0xffffffff;
  (**(code **)(*param_1_00 + 0x3d4))
            (param_1,param_1_00 + 0x66,param_3,param_4,0xffffffff,uVar3,uVar1);
  (**(code **)(*(int *)param_1_00[0x84] + 0x390))(param_1,1);
  ExceptionList = param_3;
  return param_1;
}



void __fastcall FUN_009c1990(int *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  undefined local_3c [4];
  undefined local_38 [4];
  uint local_34;
  int local_30;
  undefined local_2c [4];
  uint local_28;
  int local_24;
  undefined local_1c [4];
  uint local_18;
  int local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be68b8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  iVar4 = 0;
  FUN_00853ce0(0);
  local_4 = 0;
  FUN_00853ce0(0);
  local_4._0_1_ = 1;
  FUN_0086a600(uVar3);
  local_4 = CONCAT31(local_4._1_3_,2);
  uVar3 = FUN_009c1020(local_1c,local_2c,local_38);
  uVar5 = 0;
  if (uVar3 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_34 <= uVar5)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                     "uiIndex < m_nCount",0);
      }
      puVar1 = (undefined4 *)(local_30 + uVar5 * 4);
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_28 <= uVar5)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      iVar2 = local_24 + iVar4;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_18 <= uVar5)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      (**(code **)(*param_1 + 0x3d0))(local_3c,local_14 + iVar4,iVar2,*puVar1);
      uVar5 = uVar5 + 1;
      iVar4 = iVar4 + 0x24;
    } while (uVar5 < uVar3);
  }
  local_4._0_1_ = 1;
  FUN_0086aa30();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00853f30();
  local_4 = 0xffffffff;
  FUN_00853f30();
  ExceptionList = local_c;
  return;
}



int __fastcall FUN_009c1b20(int param_1)

{
  int iVar1;
  int unaff_ESI;
  int unaff_retaddr;
  undefined local_20 [4];
  undefined4 local_1c;
  int local_18 [2];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be68e8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_1c = 0;
  if (((uint)(*(int **)(param_1 + 0x210))[0x38] >> 5 & 1) == 0) {
    (**(code **)(**(int **)(param_1 + 0x210) + 0x3c4))
              (local_20,DAT_0323f878 ^ (uint)&stack0xffffffd8);
    if (unaff_ESI == 0) {
      FUN_004325b6(PTR_DAT_03236318);
    }
    else {
      iVar1 = (**(code **)(**(int **)(param_1 + 0x210) + 0x374))(&stack0xffffffdc);
      *(undefined4 *)(unaff_retaddr + 0x18) = 7;
      *(undefined4 *)(unaff_retaddr + 0x14) = 0;
      *(undefined2 *)(unaff_retaddr + 4) = 0;
      FID_conflict_assign(iVar1 + 8,0,0xffffffff);
      *(undefined4 *)(unaff_retaddr + 0x1c) = 0;
    }
  }
  else {
    FUN_0086a600();
    local_4 = 0;
    (**(code **)(**(int **)(param_1 + 0x210) + 0x3c8))(local_18);
    if (local_18[0] == 0) {
      FUN_004325b6(PTR_DAT_03236318);
    }
    else {
      FUN_009bfa50(local_20,0);
      iVar1 = (**(code **)(**(int **)(param_1 + 0x210) + 0x374))(local_20);
      *(undefined4 *)(unaff_retaddr + 0x18) = 7;
      *(undefined4 *)(unaff_retaddr + 0x14) = 0;
      *(undefined2 *)(unaff_retaddr + 4) = 0;
      FID_conflict_assign(iVar1 + 8,0,0xffffffff);
      *(undefined4 *)(unaff_retaddr + 0x1c) = 0;
    }
    puStack_8 = (undefined *)0xffffffff;
    FUN_0086aa30();
  }
  ExceptionList = pvStack_10;
  return unaff_retaddr;
}



void __thiscall FUN_009c1d30(int *param_1_00,int *param_1)

{
  if (param_1_00 + 0x67 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  if (param_1_00[0x66] != 0) {
    (**(code **)(*param_1_00 + 0x35c))(param_1);
  }
  return;
}



undefined4 FUN_009c1d70(undefined4 param_1,int param_2,int param_3,int param_4)

{
  uint uVar1;
  int iVar2;
  undefined local_2c [16];
  undefined local_1c [16];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6920;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  FUN_00853ce0(0);
  local_4 = 0;
  FUN_00853ce0(0);
  local_4._0_1_ = 1;
  iVar2 = FUN_0085d710(param_1,local_2c,local_1c,uVar1);
  if ((0 < iVar2) && (param_2 < iVar2)) {
    iVar2 = thunk_FUN_004325d6(param_2);
    if (param_3 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    iVar2 = thunk_FUN_004325d6(param_2);
    if (param_4 != iVar2) {
      FID_conflict_assign(iVar2,0,0xffffffff);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_00853f30();
    local_4 = 0xffffffff;
    FUN_00853f30();
    ExceptionList = local_c;
    return 1;
  }
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00853f30();
  local_4 = 0xffffffff;
  FUN_00853f30();
  ExceptionList = local_c;
  return 0;
}



undefined __thiscall
FUN_009c1e80(int param_1_00,int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            uint param_5)

{
  undefined uVar1;
  uint uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  *(int *)(param_1_00 + 0x1a4) = param_1;
  if ((param_5 & 0x1f200000) == 0) {
    param_5 = param_5 | (-(uint)((*(uint *)(param_1 + 0xe0) >> 7 & 1) != 0) & 0x7e00000) + 0x200000;
  }
  FUN_0043c211("choice");
  local_4 = 0;
  uVar1 = FUN_0096d820(param_1,param_2,param_3,param_4,0,0,param_5,&DAT_032c0398,local_30);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar2);
  }
  ExceptionList = local_c;
  return uVar1;
}



void __fastcall FUN_009c1f60(int *param_1)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined4 *puVar4;
  void *local_94;
  undefined4 local_90;
  undefined local_8c [8];
  undefined local_84 [4];
  uint local_80;
  undefined4 local_70;
  uint local_6c;
  void *local_68;
  undefined local_60 [4];
  undefined4 local_5c;
  uint local_48;
  void *local_44;
  undefined local_3c [40];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00be6a67;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if ((*param_1 == 0) && (param_1[1] == 0)) {
    local_94 = operator_new(0x24);
    local_c = 0;
    if (local_94 == (void *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = FUN_0083eb10(2,1000);
    }
    local_c = 0xffffffff;
    param_1[1] = iVar1;
    local_94 = operator_new(0xc);
    local_c = 1;
    if (local_94 == (void *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = FUN_0093e480(0x10,0x10,1,1);
    }
    local_c = 0xffffffff;
    *param_1 = iVar1;
    FUN_0043c211("wxART_CMN_DIALOG_C");
    local_c = 2;
    FUN_0043c211("wxART_FOLDER");
    local_c._0_1_ = 3;
    local_94 = (void *)0x10;
    local_90 = 0x10;
    uVar2 = FUN_00971c50(local_8c,local_84,local_60,&local_94);
    local_c._0_1_ = 4;
    FUN_009b6f70(uVar2,&PTR_vftable_03238cc8);
    local_c = CONCAT31(local_c._1_3_,3);
    FUN_008f7630();
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_80);
    }
    local_6c = 7;
    local_70 = 0;
    local_80 = local_80 & 0xffff0000;
    local_c = 0xffffffff;
    _free(local_44);
    if (7 < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c);
    }
    FUN_0043c211("wxART_CMN_DIALOG_C");
    local_c = 5;
    FUN_0043c211("wxART_FOLDER_OPEN");
    local_c._0_1_ = 6;
    local_94 = (void *)0x10;
    local_90 = 0x10;
    uVar2 = FUN_00971c50(local_8c,local_84,local_60,&local_94);
    local_c._0_1_ = 7;
    FUN_009b6f70(uVar2,&PTR_vftable_03238cc8);
    local_c = CONCAT31(local_c._1_3_,6);
    FUN_008f7630();
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_80);
    }
    local_6c = 7;
    local_70 = 0;
    local_80 = local_80 & 0xffff0000;
    local_c = 0xffffffff;
    _free(local_44);
    if (7 < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c);
    }
    uVar2 = FUN_009c04d0(&PTR_s_16_16_42_1_00d77498);
    local_c = 8;
    FUN_009b71f0(uVar2);
    local_c = 0xffffffff;
    FUN_008f7630();
    FUN_0043c211("wxART_CMN_DIALOG_C");
    local_c = 9;
    FUN_0043c211("wxART_HARDDISK");
    local_c._0_1_ = 10;
    local_94 = (void *)0x10;
    local_90 = 0x10;
    uVar2 = FUN_00971c50(local_8c,local_84,local_60,&local_94);
    local_c._0_1_ = 0xb;
    FUN_009b6f70(uVar2,&PTR_vftable_03238cc8);
    local_c = CONCAT31(local_c._1_3_,10);
    FUN_008f7630();
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_80);
    }
    local_6c = 7;
    local_70 = 0;
    local_80 = local_80 & 0xffff0000;
    local_c = 0xffffffff;
    _free(local_44);
    if (7 < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c);
    }
    FUN_0043c211("wxART_CMN_DIALOG_C");
    local_c = 0xc;
    FUN_0043c211("wxART_CDROM");
    local_c._0_1_ = 0xd;
    local_94 = (void *)0x10;
    local_90 = 0x10;
    uVar2 = FUN_00971c50(local_8c,local_84,local_60,&local_94);
    local_c._0_1_ = 0xe;
    FUN_009b6f70(uVar2,&PTR_vftable_03238cc8);
    local_c = CONCAT31(local_c._1_3_,0xd);
    FUN_008f7630();
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_80);
    }
    local_6c = 7;
    local_70 = 0;
    local_80 = local_80 & 0xffff0000;
    local_c = 0xffffffff;
    _free(local_44);
    if (7 < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c);
    }
    FUN_0043c211("wxART_CMN_DIALOG_C");
    local_c = 0xf;
    FUN_0043c211("wxART_FLOPPY");
    local_c._0_1_ = 0x10;
    local_94 = (void *)0x10;
    local_90 = 0x10;
    uVar2 = FUN_00971c50(local_8c,local_84,local_60,&local_94);
    local_c._0_1_ = 0x11;
    FUN_009b6f70(uVar2,&PTR_vftable_03238cc8);
    local_c = CONCAT31(local_c._1_3_,0x10);
    FUN_008f7630();
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_80);
    }
    local_6c = 7;
    local_70 = 0;
    local_80 = local_80 & 0xffff0000;
    local_c = 0xffffffff;
    _free(local_44);
    if (7 < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c);
    }
    FUN_0043c211("wxART_CMN_DIALOG_C");
    local_c = 0x12;
    FUN_0043c211("wxART_REMOVABLE");
    local_c._0_1_ = 0x13;
    local_94 = (void *)0x10;
    local_90 = 0x10;
    uVar2 = FUN_00971c50(local_8c,local_84,local_60,&local_94);
    local_c._0_1_ = 0x14;
    FUN_009b6f70(uVar2,&PTR_vftable_03238cc8);
    local_c = CONCAT31(local_c._1_3_,0x13);
    FUN_008f7630();
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_80);
    }
    local_6c = 7;
    local_70 = 0;
    local_80 = local_80 & 0xffff0000;
    local_c = 0xffffffff;
    _free(local_44);
    if (7 < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c);
    }
    FUN_0043c211("wxART_CMN_DIALOG_C");
    local_c = 0x15;
    FUN_0043c211("wxART_NORMAL_FILE");
    local_c._0_1_ = 0x16;
    local_94 = (void *)0x10;
    local_90 = 0x10;
    uVar2 = FUN_00971c50(local_8c,local_84,local_60,&local_94);
    local_c._0_1_ = 0x17;
    FUN_009b6f70(uVar2,&PTR_vftable_03238cc8);
    local_c = CONCAT31(local_c._1_3_,0x16);
    FUN_008f7630();
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_80);
    }
    local_6c = 7;
    local_70 = 0;
    local_80 = local_80 & 0xffff0000;
    local_c = 0xffffffff;
    _free(local_44);
    if (7 < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c);
    }
    FUN_004325b6(L"application/x-executable");
    local_c = 0x18;
    FUN_004325b6(PTR_DAT_03236318);
    local_c = CONCAT31(local_c._1_3_,0x19);
    iVar1 = FUN_009c28d0(local_84,local_60);
    _free(local_68);
    if (7 < local_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_80);
    }
    local_6c = 7;
    local_70 = 0;
    local_80 = local_80 & 0xffff0000;
    local_c = 0xffffffff;
    _free(local_44);
    if (7 < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c);
    }
    if (iVar1 == 7) {
      FUN_0043c211("wxART_CMN_DIALOG_C");
      local_c = 0x1a;
      FUN_0043c211("wxART_EXECUTABLE_FILE");
      local_c._0_1_ = 0x1b;
      local_94 = (void *)0x10;
      local_90 = 0x10;
      uVar2 = FUN_00971c50(local_8c,local_60,local_84,&local_94);
      local_c._0_1_ = 0x1c;
      FUN_009b6f70(uVar2,&PTR_vftable_03238cc8);
      local_c = CONCAT31(local_c._1_3_,0x1b);
      FUN_008f7630();
      FUN_0040159c();
      local_c = 0xffffffff;
      FUN_0040159c();
      FUN_004325b6(&DAT_00d77c68);
      local_c = 0x1d;
      uVar2 = FUN_00889330(local_60);
      piVar3 = (int *)FUN_008892a0(local_60,uVar2);
      if (piVar3 != (int *)0x0) {
        (**(code **)(*piVar3 + 4))(1);
      }
      local_c = 0xffffffff;
      FUN_0040159c();
      FUN_004325b6(&DAT_00d77c68);
      local_c = 0x1e;
      uVar2 = FUN_00889330(local_60);
      FUN_00889670(local_60,uVar2);
      local_c = 0xffffffff;
      FUN_0040159c();
      puVar4 = (undefined4 *)operator_new(0xc);
      if (puVar4 == (undefined4 *)0x0) {
        puVar4 = (undefined4 *)0x0;
      }
      else {
        puVar4[2] = 8;
        puVar4[1] = 0;
        *puVar4 = wxFileIconEntry::vftable;
      }
      FUN_004325b6(&DAT_00d77c68);
      local_c = 0x1f;
      uVar2 = FUN_00889330(local_3c,puVar4);
      FUN_008895a0(local_3c,uVar2,puVar4);
      FUN_0040159c();
      ExceptionList = local_14;
      return;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\generic\\dirctrlg.cpp",0x5e7,"wxFileIconsTable::Create",
                 "!m_smallImageList && !m_HashTable",L"creating icons twice",
                 DAT_0323f878 ^ (uint)&stack0xffffff58);
  }
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_009c28d0(int *param_1_00,int param_1,int param_2)

{
  undefined uVar1;
  char cVar2;
  undefined4 uVar3;
  int iVar4;
  DWORD DVar5;
  undefined ***pppuVar6;
  undefined4 *puVar7;
  undefined4 uVar8;
  undefined auStack_94 [4];
  undefined4 local_90;
  undefined **ppuStack_88;
  int *piStack_84;
  undefined **local_80;
  int *local_7c;
  undefined local_75;
  int *local_74;
  undefined local_70 [8];
  undefined local_68 [4];
  uint local_64;
  undefined4 local_54;
  uint local_50;
  void *local_4c;
  undefined local_44 [4];
  undefined4 local_40;
  undefined4 local_30;
  uint local_2c;
  void *local_28;
  undefined4 local_20;
  uint local_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00be6adb;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_94;
  ExceptionList = &local_14;
  local_74 = param_1_00;
  if (*param_1_00 == 0) {
    FUN_009c1f60(DAT_0323f878 ^ (uint)&stack0xffffff60);
  }
  if (*(int *)(param_1 + 0x14) != 0) {
    uVar3 = FUN_00889330(param_1);
    iVar4 = FUN_008892a0(param_1,uVar3);
    if (iVar4 != 0) goto LAB_009c2d4a;
  }
  if (*(int *)(param_2 + 0x14) == 0) {
    iVar4 = FUN_008a3220(param_1);
  }
  else {
    iVar4 = FUN_008a2d70(param_2);
  }
  FUN_004325b6(PTR_DAT_03236318);
  local_40 = (uint)local_40._2_2_ << 0x10;
  local_c = 0;
  local_2c = 7;
  local_30 = 0;
  FID_conflict_assign(local_68,0,0xffffffff);
  local_28 = (void *)0x0;
  local_20 = 0;
  _free(local_4c);
  if (7 < local_50) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_64);
  }
  local_50 = 7;
  local_54 = 0;
  local_64 = local_64 & 0xffff0000;
  local_7c = (int *)0x0;
  local_80 = wxIcon::vftable;
  local_c = CONCAT31(local_c._1_3_,3);
  if ((DAT_032bdb68 == 0) || (DVar5 = GetCurrentThreadId(), DVar5 == DAT_032bdb68)) {
    uVar1 = DAT_03235e94;
    DAT_03235e94 = 0;
  }
  else {
    uVar1 = FUN_00842f30(0);
  }
  local_90 = (undefined **)CONCAT31(local_90._1_3_,uVar1);
  local_c._0_1_ = 4;
  local_75 = uVar1;
  if ((iVar4 != 0) && (cVar2 = FUN_008a31d0(local_44), cVar2 != '\0')) {
    pppuVar6 = (undefined ***)FUN_0092ca00(local_44);
    local_c._0_1_ = 5;
    if (&local_80 != pppuVar6) {
      FUN_0083ea60(pppuVar6);
    }
    local_c._0_1_ = 4;
    FUN_008f7630();
  }
  local_c._0_1_ = 3;
  if ((DAT_032bdb68 != 0) && (DVar5 = GetCurrentThreadId(), DVar5 != DAT_032bdb68)) {
    FUN_00842f30(local_90);
    uVar1 = DAT_03235e94;
  }
  DAT_03235e94 = uVar1;
  if (iVar4 != 0) {
    FUN_008a3150();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar4);
  }
  if ((local_7c == (int *)0x0) || (cVar2 = (**(code **)(*local_7c + 4))(), cVar2 == '\0')) {
    puVar7 = (undefined4 *)operator_new(0xc);
    if (puVar7 == (undefined4 *)0x0) {
      puVar7 = (undefined4 *)0x0;
    }
    else {
      puVar7[1] = 0;
      *puVar7 = wxFileIconEntry::vftable;
      puVar7[2] = 7;
    }
    uVar3 = FUN_00889330(param_1,puVar7);
    FUN_008895a0(param_1,uVar3,puVar7);
    local_c = CONCAT31(local_c._1_3_,2);
    FUN_008f7630();
    _free(local_28);
    if (7 < local_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_40);
    }
  }
  else {
    piStack_84 = (int *)0x0;
    ppuStack_88 = wxBitmap::vftable;
    local_c._0_1_ = 6;
    FUN_008f4c70(&local_80,0);
    if ((piStack_84 == (int *)0x0) || (cVar2 = (**(code **)(*piStack_84 + 4))(), cVar2 == '\0')) {
      puVar7 = (undefined4 *)operator_new(0xc);
      if (puVar7 == (undefined4 *)0x0) {
        puVar7 = (undefined4 *)0x0;
      }
      else {
        puVar7[1] = 0;
        *puVar7 = wxFileIconEntry::vftable;
        puVar7[2] = 7;
      }
      uVar3 = FUN_00889330(param_1,puVar7);
      FUN_008895a0(param_1,uVar3,puVar7);
      local_c._0_1_ = 3;
      FUN_008f7630();
      local_c = CONCAT31(local_c._1_3_,2);
      FUN_008f7630();
      FUN_008672a0();
    }
    else {
      uVar3 = FUN_009b6b80();
      if (((piStack_84 == (int *)0x0) || (piStack_84[2] != 0x10)) || (piStack_84[3] != 0x10)) {
        FUN_008f3b70(&local_90);
        local_c._0_1_ = 7;
        iVar4 = FUN_00900100();
        if ((iVar4 == 0x20) && (iVar4 = FUN_00900150(), iVar4 == 0x20)) {
          uVar8 = FUN_009c0720(local_70);
          local_c._0_1_ = 9;
        }
        else {
          FUN_009055a0(0x20,0x20,0);
          uVar8 = FUN_009c0720(local_70);
          local_c._0_1_ = 8;
        }
        FUN_009b6f70(uVar8,&PTR_vftable_03238cc8);
        local_c._0_1_ = 7;
        FUN_008f7630();
        local_c._0_1_ = 6;
        local_90 = wxObject::vftable;
        FUN_0083e850();
      }
      else {
        FUN_009b6f70(&ppuStack_88,&PTR_vftable_03238cc8);
      }
      puVar7 = (undefined4 *)operator_new(0xc);
      if (puVar7 == (undefined4 *)0x0) {
        puVar7 = (undefined4 *)0x0;
      }
      else {
        puVar7[1] = 0;
        *puVar7 = wxFileIconEntry::vftable;
        puVar7[2] = uVar3;
      }
      uVar3 = FUN_00889330(param_1,puVar7);
      FUN_008895a0(param_1,uVar3,puVar7);
      local_c._0_1_ = 3;
      FUN_008f7630();
      local_c = CONCAT31(local_c._1_3_,2);
      FUN_008f7630();
      FUN_008672a0();
    }
  }
LAB_009c2d4a:
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall
FUN_009c2d70(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6b18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044ced6(DAT_0323f878 ^ (uint)&stack0xffffffec);
  param_1_00[0x65] = wxItemContainer::vftable;
  param_1_00[0x66] = 0;
  param_1_00[0x67] = 0xfffffffd;
  param_1_00[0x68] = 0xffffffff;
  local_4 = 0;
  param_1_00[0x69] = 0;
  *param_1_00 = wxDirFilterListCtrl::vftable;
  param_1_00[0x65] = wxDirFilterListCtrl::vftable;
  FUN_009c1e80(param_1,param_2,param_3,param_4,param_5);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_009c2e20(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxDirFilterListCtrl::vftable;
  param_1_00[0x65] = wxDirFilterListCtrl::vftable;
  FUN_0096c850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_009c2e50(void)

{
  FUN_009c2e20();
  return;
}



undefined4 * __fastcall FUN_009c2e60(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6b72;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044ced6(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1 = wxGenericDirCtrl::vftable;
  param_1[0x66] = 0;
  param_1[0x6d] = 7;
  param_1[0x6c] = 0;
  *(undefined2 *)(param_1 + 0x68) = 0;
  param_1[0x6e] = 0;
  param_1[0x77] = 7;
  param_1[0x76] = 0;
  *(undefined2 *)(param_1 + 0x72) = 0;
  param_1[0x78] = 0;
  param_1[0x81] = 7;
  param_1[0x80] = 0;
  *(undefined2 *)(param_1 + 0x7c) = 0;
  param_1[0x82] = 0;
  local_4 = 3;
  FUN_009c17a0();
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_009c2f20(int param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  undefined auStack_794 [4];
  int local_790;
  int local_78c;
  undefined4 local_788;
  undefined local_784 [4];
  uint local_780;
  undefined4 local_770;
  uint local_76c;
  void *local_768;
  undefined local_760 [4];
  uint local_75c;
  undefined4 local_74c;
  uint local_748;
  void *local_744;
  undefined local_73c [4];
  uint local_738;
  undefined4 local_728;
  uint local_724;
  void *local_720;
  undefined local_718 [4];
  uint local_714;
  undefined4 local_704;
  uint local_700;
  void *local_6fc;
  undefined auStack_6f4 [36];
  undefined auStack_6d0 [36];
  undefined auStack_6ac [36];
  undefined auStack_688 [36];
  undefined auStack_664 [36];
  undefined **local_640;
  undefined4 local_32c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6c56;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_794;
  ExceptionList = &local_c;
  local_790 = param_1;
  local_78c = param_1_00;
  if (*(char *)(param_1 + 0xdc) == '\0') {
    if (*(int *)(param_1 + 0xcc) != 0) {
      iVar2 = FUN_008507a0(&DAT_00fae798);
      if (iVar2 != 0) {
        iVar2 = FUN_008507a0(&DAT_00d240e0);
        if (iVar2 != 0) {
          iVar2 = FUN_00850910(0x2f,0);
          if (iVar2 == -1) {
            iVar2 = FUN_00850910(0x5c,0);
            if (iVar2 == -1) {
              iVar2 = FUN_00850910(0x7c,0);
              if (iVar2 == -1) {
                local_788 = *(undefined4 *)(param_1 + 0xa8);
                iVar2 = (**(code **)(**(int **)(param_1_00 + 0x210) + 0x374))(&local_788);
                if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar2 == 0)) {
                  FUN_008402e0("..\\..\\src\\generic\\dirctrlg.cpp",0x29e,
                               "wxGenericDirCtrl::OnEndEditItem",&DAT_00fb8b30,0);
                }
                FUN_0085d4d0(auStack_664,iVar2 + 8);
                local_4 = 9;
                uVar3 = FUN_00853fa0(0x5c,1);
                local_4._0_1_ = 10;
                FUN_007b0d06(uVar3);
                local_4._0_1_ = 9;
                FUN_0040159c();
                FUN_007b0d06(param_1 + 0xb8);
                FUN_008192b5();
                local_4._0_1_ = 0xb;
                cVar1 = thunk_FUN_00855b70(auStack_664);
                if (cVar1 != '\0') {
                  FUN_004325b6(PTR_DAT_03236318);
                  local_4._0_1_ = 0xc;
                  FUN_0043c211("Error");
                  local_4._0_1_ = 0xd;
                  FUN_004325b6(PTR_DAT_03236318);
                  local_4._0_1_ = 0xe;
                  FUN_0043c211("File name exists already.");
                  puVar6 = &DAT_03238d0c;
                  uVar5 = 0x204;
                  local_4._0_1_ = 0xf;
                  uVar3 = FUN_00820bf9(local_760,local_784,0x204,&DAT_03238d0c);
                  uVar4 = FUN_00820bf9(local_73c,local_718,uVar3);
                  FUN_008fe430(local_78c,uVar4,uVar3,uVar5,puVar6);
                  FUN_0040159c();
                  FUN_0040159c();
                  FUN_0040159c();
                  local_4._0_1_ = 0x14;
                  FUN_0040159c();
                  FUN_00983fb0();
                  *(undefined *)(local_790 + 0x5c) = 0;
                  local_4._0_1_ = 0xb;
                  FUN_008fd650();
                }
                cVar1 = FUN_0085f750(iVar2 + 8,auStack_664,1);
                if (cVar1 == '\0') {
                  FUN_004325b6(PTR_DAT_03236318);
                  local_4._0_1_ = 0x15;
                  FUN_0043c211("Error");
                  local_4._0_1_ = 0x16;
                  FUN_004325b6(PTR_DAT_03236318);
                  local_4._0_1_ = 0x17;
                  FUN_0043c211("Operation not permitted.");
                  puVar6 = &DAT_03238d0c;
                  uVar5 = 0x204;
                  local_4._0_1_ = 0x18;
                  uVar3 = FUN_00820bf9(auStack_688,auStack_6f4,0x204,&DAT_03238d0c);
                  uVar4 = FUN_00820bf9(auStack_6ac,auStack_6d0,uVar3);
                  FUN_008fe430(local_78c,uVar4,uVar3,uVar5,puVar6);
                  FUN_0040159c();
                  FUN_0040159c();
                  FUN_0040159c();
                  local_4._0_1_ = 0x1d;
                  FUN_0040159c();
                  FUN_00983fb0();
                  *(undefined *)(local_790 + 0x5c) = 0;
                  local_4._0_1_ = 0xb;
                  FUN_008fd650();
                }
                else {
                  FUN_009c1700(auStack_664);
                }
                local_4 = CONCAT31(local_4._1_3_,9);
                FUN_008192c6();
                FUN_0040159c();
                goto LAB_009c3518;
              }
            }
          }
        }
      }
    }
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    FUN_0043c211("Error");
    local_4._0_1_ = 1;
    FUN_004325b6(PTR_DAT_03236318);
    local_4._0_1_ = 2;
    FUN_0043c211("Illegal directory name.");
    local_4 = CONCAT31(local_4._1_3_,3);
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      uVar3 = FUN_0084d360(local_760);
    }
    else {
      uVar3 = FUN_0084f210(local_760,local_73c);
    }
    iVar2 = FUN_0084a340();
    if (iVar2 == 0) {
      uVar4 = FUN_0084d360(local_784);
    }
    else {
      uVar4 = FUN_0084f210(local_784,local_718);
    }
    FUN_008fdce0(param_1_00,uVar4,uVar3,0x204);
    local_640 = wxMessageDialog::vftable;
    local_32c = 0;
    _free(local_768);
    if (7 < local_76c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_780);
    }
    local_76c = 7;
    local_770 = 0;
    local_780 = local_780 & 0xffff0000;
    _free(local_6fc);
    if (7 < local_700) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_714);
    }
    local_700 = 7;
    local_704 = 0;
    local_714 = local_714 & 0xffff0000;
    _free(local_744);
    if (7 < local_748) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_75c);
    }
    local_748 = 7;
    local_74c = 0;
    local_75c = local_75c & 0xffff0000;
    local_4 = CONCAT31(local_4._1_3_,8);
    _free(local_720);
    if (7 < local_724) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_738);
    }
    local_724 = 7;
    local_728 = 0;
    local_738 = local_738 & 0xffff0000;
    FUN_00983fb0();
    *(undefined *)(param_1 + 0x5c) = 0;
    local_4 = 0xffffffff;
    FUN_008fd650();
  }
LAB_009c3518:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_009c3550(int *param_1)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  undefined4 uVar4;
  undefined *puVar5;
  DWORD DVar6;
  uint uVar7;
  int unaff_retaddr;
  uint uStack_1b0;
  undefined4 uStack_19c;
  int iStack_198;
  void *pvStack_194;
  undefined4 uStack_190;
  uint uStack_174;
  void *pvStack_170;
  uint uStack_164;
  int iStack_160;
  undefined *puStack_158;
  void *pvStack_150;
  int iStack_14c;
  undefined auStack_144 [8];
  undefined auStack_13c [4];
  undefined4 uStack_138;
  undefined4 uStack_128;
  uint uStack_124;
  void *pvStack_120;
  undefined auStack_118 [4];
  uint uStack_114;
  undefined4 uStack_104;
  uint uStack_100;
  void *pvStack_fc;
  undefined auStack_f4 [4];
  uint uStack_f0;
  undefined4 uStack_e0;
  uint uStack_dc;
  void *pvStack_d8;
  undefined auStack_d0 [4];
  uint uStack_cc;
  undefined4 uStack_bc;
  uint uStack_b8;
  void *pvStack_b4;
  uint uStack_a8;
  undefined4 uStack_98;
  uint uStack_94;
  void *pvStack_90;
  uint uStack_84;
  undefined4 uStack_74;
  uint uStack_70;
  void *pvStack_6c;
  void *local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8._0_1_ = 0x85;
  uStack_8._1_3_ = 0xbe6d;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&uStack_19c);
  uStack_1b0 = DAT_0323f878 ^ (uint)&stack0xfffffe54;
  ExceptionList = &local_c;
  iVar2 = (**(code **)(*(int *)param_1[0x84] + 0x374))();
  if (*(char *)(iVar2 + 0x51) == '\0') {
    *(undefined *)(iVar2 + 0x51) = 1;
    piVar3 = (int *)(**(code **)(*(int *)param_1[0x84] + 0x3c0))();
    if (unaff_retaddr == *piVar3) {
      (**(code **)(*param_1 + 0x3b0))();
    }
    else {
      uStack_70 = 7;
      uStack_74 = 0;
      uStack_84 = uStack_84 & 0xffff0000;
      pvStack_6c = (void *)0x0;
      uStack_100 = 7;
      uStack_104 = 0;
      uStack_114 = uStack_114 & 0xffff0000;
      pvStack_fc = (void *)0x0;
      uStack_94 = 7;
      uStack_98 = 0;
      uStack_a8 = uStack_a8 & 0xffff0000;
      pvStack_90 = (void *)0x0;
      uStack_f0 = uStack_f0 & 0xffff0000;
      uStack_8._0_1_ = 2;
      uStack_8._1_3_ = 0;
      uStack_dc = 7;
      uStack_e0 = 0;
      FID_conflict_assign(iVar2 + 8);
      pvStack_d8 = (void *)0x0;
      uStack_8._0_1_ = 3;
      cVar1 = FUN_009c1480();
      if (cVar1 == '\0') {
        *(undefined *)(iVar2 + 0x51) = 0;
        FUN_0040159c();
        FUN_0040159c();
        FUN_0040159c();
        FUN_0040159c();
      }
      else {
        FUN_008f7b30();
        FUN_0095dd80();
        uStack_8._0_1_ = 4;
        FUN_0081b3d8();
        cVar1 = FUN_0086f990();
        if (cVar1 != '\0') {
          uVar4 = FUN_00853fa0();
          uStack_8._0_1_ = 5;
          FID_conflict_append(uVar4);
          uStack_8._0_1_ = 4;
          FUN_0040159c();
        }
        FUN_00853ce0();
        uStack_8._0_1_ = 6;
        FUN_00853ce0();
        uStack_19c = 0;
        uStack_124 = 7;
        uStack_128 = 0;
        uStack_138 = (uint)uStack_138._2_2_ << 0x10;
        pvStack_120 = (void *)0x0;
        uStack_8._0_1_ = 9;
        FUN_008192b5();
        uStack_8._0_1_ = 10;
        FUN_0089ea80();
        cVar1 = FUN_0089e1b0();
        if (cVar1 != '\0') {
          FUN_004325b6();
          uStack_8._0_1_ = 0xb;
          cVar1 = FUN_0089eb40(auStack_13c);
          uStack_8._0_1_ = 10;
          FUN_0040159c();
          while (cVar1 != '\0') {
            iVar2 = FUN_008507a0();
            if ((iVar2 != 0) && (iVar2 = FUN_008507a0(), iVar2 != 0)) {
              FUN_00854700();
            }
            cVar1 = FUN_0089ea00();
          }
        }
        FUN_00855970();
        if (((uint)param_1[0x38] >> 4 & 1) == 0) {
          FUN_0089ea80();
          cVar1 = FUN_0089e1b0();
          if (cVar1 != '\0') {
            FUN_008d1c00();
            uStack_b8 = 7;
            uStack_bc = 0;
            uStack_cc = uStack_cc & 0xffff0000;
            pvStack_b4 = (void *)0x0;
            uStack_8._0_1_ = 0xd;
            FUN_004325b6();
            uStack_8._0_1_ = 0xe;
            FUN_00894480(param_1 + 0x7b);
            uStack_8 = CONCAT31(uStack_8._1_3_,0xd);
            FUN_0040159c();
            cVar1 = FUN_00894180();
            while (cVar1 != '\0') {
              puVar5 = (undefined *)FUN_00894270();
              uStack_8._0_1_ = 0xf;
              if (auStack_d0 != puVar5) {
                FID_conflict_assign(puVar5);
              }
              uStack_8 = CONCAT31(uStack_8._1_3_,0xd);
              _free(pvStack_170);
              if (7 < uStack_174) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
              cVar1 = FUN_0089eb40(auStack_13c);
              while (cVar1 != '\0') {
                iVar2 = FUN_008507a0();
                if ((iVar2 != 0) && (iVar2 = FUN_008507a0(), iVar2 != 0)) {
                  FUN_00854700();
                }
                cVar1 = FUN_0089ea00();
              }
              cVar1 = FUN_00894180();
            }
            FUN_0040159c();
            uStack_8._0_1_ = 10;
            FUN_0083fa70();
          }
          FUN_00855970();
        }
        (**(code **)(*(int *)param_1[0x84] + 0x390))();
        uVar7 = 0;
        if (uStack_164 != 0) {
          iVar2 = 0;
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_164 <= uVar7)) {
              FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item");
            }
            if (auStack_13c != (undefined *)(iStack_160 + iVar2)) {
              FID_conflict_assign((undefined *)(iStack_160 + iVar2));
            }
            FID_conflict_assign(auStack_f4);
            cVar1 = FUN_0085cac0();
            if (cVar1 == '\0') {
              uVar4 = FUN_00853fa0();
              uStack_8._0_1_ = 0x10;
              FID_conflict_append(uVar4);
              uStack_8._0_1_ = 10;
              _free(pvStack_170);
              if (7 < uStack_174) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
            }
            FID_conflict_append(auStack_13c);
            pvStack_194 = operator_new(0x54);
            uStack_8._0_1_ = 0x11;
            if (pvStack_194 != (void *)0x0) {
              FUN_009c15b0(auStack_118);
            }
            uStack_8._0_1_ = 10;
            (**(code **)(*param_1 + 0x3d4))(&iStack_198,&stack0x00000000,auStack_13c,0);
            (**(code **)(*(int *)param_1[0x84] + 0x388))(&uStack_1b0,1,2);
            (**(code **)(*(int *)param_1[0x84] + 0x390))(&stack0xfffffe44,1);
            uVar7 = uVar7 + 1;
            iVar2 = iVar2 + 0x24;
          } while (uVar7 < uStack_164);
        }
        if ((((uint)param_1[0x38] >> 4 & 1) == 0) &&
           (pvStack_194 = (void *)0x0, pvStack_150 != (void *)0x0)) {
          iStack_198 = 0;
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (pvStack_150 <= pvStack_194)) {
              FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item");
            }
            if (auStack_13c != (undefined *)(iStack_198 + iStack_14c)) {
              FID_conflict_assign((undefined *)(iStack_198 + iStack_14c));
            }
            FID_conflict_assign(auStack_f4);
            cVar1 = FUN_0085cac0();
            if (cVar1 == '\0') {
              uVar4 = FUN_00853fa0();
              uStack_8._0_1_ = 0x12;
              FID_conflict_append(uVar4);
              uStack_8._0_1_ = 10;
              _free(pvStack_170);
              if (7 < uStack_174) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
            }
            FID_conflict_append(auStack_13c);
            puStack_158 = (undefined *)operator_new(0x54);
            uStack_8._0_1_ = 0x13;
            if (puStack_158 != (undefined *)0x0) {
              FUN_009c15b0(auStack_118);
            }
            uStack_8._0_1_ = 10;
            uVar4 = 7;
            iVar2 = FUN_00850910();
            if (iVar2 != -1) {
              FUN_004325b6();
              puStack_158 = &stack0xfffffe48;
              uStack_8._0_1_ = 0x14;
              FUN_00852730();
              uStack_8._0_1_ = 0x15;
              uVar4 = FUN_009c28d0();
              _free(pvStack_b4);
              if (7 < uStack_b8) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
              uStack_b8 = 7;
              uStack_bc = 0;
              uStack_cc = uStack_cc & 0xffff0000;
              uStack_8._0_1_ = 10;
              _free(pvStack_170);
              if (7 < uStack_174) {
                    // WARNING: Subroutine does not return
                FUN_00a3f6a1();
              }
            }
            (**(code **)(*param_1 + 0x3d4))(auStack_144,&stack0x00000000,auStack_13c,uVar4);
            iStack_198 = iStack_198 + 0x24;
            pvStack_194 = (void *)((int)pvStack_194 + 1);
          } while (pvStack_194 < pvStack_150);
        }
        uStack_8 = CONCAT31(uStack_8._1_3_,9);
        if ((DAT_032bdb68 == 0) || (DVar6 = GetCurrentThreadId(), DVar6 == DAT_032bdb68)) {
          DAT_03235e94 = (undefined)uStack_190;
        }
        else {
          FUN_00842f30();
        }
        _free(pvStack_120);
        if (7 < uStack_124) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        uStack_138 = uStack_138 & 0xffff0000;
        uStack_124 = 7;
        uStack_128 = 0;
        uStack_8._0_1_ = 7;
        FUN_0089e9e0();
        uStack_8._0_1_ = 6;
        FUN_00853f30();
        uStack_8._0_1_ = 4;
        FUN_00853f30();
        uStack_8._0_1_ = 3;
        FUN_0095db80();
        _free(pvStack_d8);
        if (7 < uStack_dc) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        uStack_dc = 7;
        uStack_e0 = 0;
        uStack_f0 = uStack_f0 & 0xffff0000;
        _free(pvStack_90);
        if (7 < uStack_94) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        uStack_94 = 7;
        uStack_98 = 0;
        uStack_a8 = uStack_a8 & 0xffff0000;
        _free(pvStack_fc);
        if (7 < uStack_100) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
        uStack_100 = 7;
        uStack_104 = 0;
        uStack_114 = uStack_114 & 0xffff0000;
        _free(pvStack_6c);
        if (7 < uStack_70) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1();
        }
      }
    }
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_009c4070(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *pvVar1;
  char cVar2;
  undefined4 uVar3;
  int iVar4;
  int *piVar5;
  undefined4 unaff_EBX;
  int *unaff_EBP;
  int unaff_ESI;
  undefined local_90 [4];
  undefined4 local_8c;
  undefined4 local_88;
  uint local_84 [3];
  uint local_78;
  uint uStack_74;
  uint uStack_70;
  void *pvStack_6c;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  uint uStack_50;
  uint uStack_4c;
  void *pvStack_48;
  uint local_40;
  void *local_3c;
  undefined2 local_30;
  uint uStack_2c;
  uint uStack_28;
  void *pvStack_24;
  undefined4 local_20;
  undefined4 local_1c;
  void *local_18;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6e08;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_90;
  ExceptionList = &local_c;
  local_8c = param_1;
  local_88 = param_4;
  local_1c = 7;
  local_20 = 0;
  local_30 = 0;
  FID_conflict_assign(param_3,0,0xffffffff);
  local_18 = (void *)0x0;
  local_4 = 0;
  FUN_004325b6(&DAT_0305784c);
  local_4._0_1_ = 1;
  uVar3 = FUN_00853fa0(0x5c,1);
  local_4._0_1_ = 2;
  FUN_00852a70(local_58,uVar3,1);
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  local_4._0_1_ = 0;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  FUN_004325b6(&DAT_03057848);
  local_4._0_1_ = 3;
  uVar3 = FUN_00853fa0(0x5c,1);
  local_4._0_1_ = 4;
  FUN_00852a70(local_58,uVar3,1);
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  local_4._0_1_ = 0;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  uVar3 = FUN_00853fa0(0x5c,1);
  local_4._0_1_ = 5;
  FID_conflict_append(uVar3,0,0xffffffff);
  local_4 = (uint)local_4._1_3_ << 8;
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  FUN_008510e0();
  (**(code **)(**(int **)(param_1_00 + 0x210) + 0x3dc))(local_90,&param_2,local_84);
  if (unaff_ESI != 0) {
    do {
      iVar4 = (**(code **)(**(int **)(param_1_00 + 0x210) + 0x374))(&stack0xffffff64);
      if ((iVar4 != 0) && (*(int *)(iVar4 + 0x1c) != 0)) {
        local_60 = (void *)((uint)local_60 & 0xffff0000);
        uStack_4c = 7;
        uStack_50 = 0;
        FID_conflict_assign(iVar4 + 8,0,0xffffffff);
        pvStack_48 = (void *)0x0;
        local_10 = CONCAT31(local_10._1_3_,6);
        cVar2 = FUN_0085cac0(&local_64);
        if (cVar2 == '\0') {
          uVar3 = FUN_00853fa0(0x5c,1);
          local_10._0_1_ = 7;
          FID_conflict_append(uVar3,0,0xffffffff);
          local_10 = CONCAT31(local_10._1_3_,6);
          _free(pvStack_6c);
          if (7 < uStack_70) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_84[0]);
          }
        }
        FUN_008510e0();
        if (uStack_50 <= uStack_2c) {
          FUN_00852560(&local_88,0,uStack_50);
          local_10 = CONCAT31(local_10._1_3_,8);
          if ((uStack_50 == uStack_74) && (iVar4 = FUN_00850760(&local_88), iVar4 == 0)) {
            *(bool *)unaff_EBX = uStack_74 == uStack_2c;
            *unaff_EBP = unaff_ESI;
            _free(pvStack_6c);
            if (7 < uStack_70) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1(local_84[0]);
            }
            uStack_70 = 7;
            uStack_74 = 0;
            local_84[0] = local_84[0] & 0xffff0000;
            _free(pvStack_48);
            if (7 < uStack_4c) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1(local_60);
            }
            uStack_4c = 7;
            uStack_50 = 0;
            local_60 = (void *)((uint)local_60 & 0xffff0000);
            _free(pvStack_24);
            pvVar1 = ExceptionList;
            ExceptionList = local_18;
            goto joined_r0x009c4511;
          }
          _free(pvStack_6c);
          if (7 < uStack_70) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_84[0]);
          }
        }
        local_10 = local_10 & 0xffffff00;
        _free(pvStack_48);
        if (7 < uStack_4c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_60);
        }
      }
      piVar5 = (int *)(**(code **)(**(int **)(param_1_00 + 0x210) + 0x3e0))
                                (&local_8c,&local_4,local_90);
      unaff_ESI = *piVar5;
    } while (unaff_ESI != 0);
  }
  *unaff_EBP = 0;
  _free(pvStack_24);
  pvVar1 = ExceptionList;
  ExceptionList = local_18;
joined_r0x009c4511:
  local_18 = ExceptionList;
  if (uStack_28 < 8) {
    ___security_check_cookie_4();
    return;
  }
  ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_3c);
}



void __thiscall FUN_009c4530(int param_1_00,undefined4 param_1)

{
  short *psVar1;
  char cVar2;
  uint uVar3;
  short *psVar4;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdcc30;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_58;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x1e8) = param_1;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  local_3c = (void *)0x0;
  local_4 = 1;
  cVar2 = FUN_009c1d70(param_1_00 + 0x1c4,param_1,local_34,local_58);
  if (cVar2 == '\0') {
    psVar1 = &DAT_00d34cc0;
    do {
      psVar4 = psVar1;
      psVar1 = psVar4 + 1;
    } while (*psVar4 != 0);
    FID_conflict_assign(&DAT_00d34cc0,(int)(psVar4 + -0x69a660) >> 1);
  }
  else if ((undefined *)(param_1_00 + 0x1ec) != local_34) {
    FID_conflict_assign(local_34,0,0xffffffff);
  }
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54,uVar3);
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30,uVar3);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009c4680(int *param_1_00,int *param_1)

{
  int *piVar1;
  short *psVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  short *psVar6;
  void *local_5c;
  uint local_58;
  undefined2 local_54;
  undefined4 uStack_48;
  uint local_44;
  void *local_40;
  undefined4 local_3c;
  int local_34;
  undefined2 local_30;
  uint local_20;
  void *local_1c;
  undefined4 local_18;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6e5b;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&local_5c);
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  piVar1 = param_1_00 + 0x71;
  if (piVar1 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  if (param_1[5] != 0) {
    if (param_1_00[0x85] == 0) {
      local_5c = operator_new(0x1a8);
      local_4 = 0;
      if (local_5c == (void *)0x0) {
        param_1_00[0x85] = 0;
      }
      else {
        iVar5 = FUN_009c2d70(param_1_00,0x1b59,&DAT_03238d0c,&DAT_03238d04,0);
        param_1_00[0x85] = iVar5;
      }
      goto LAB_009c473c;
    }
    if (param_1[5] != 0) goto LAB_009c473c;
  }
  if ((int *)param_1_00[0x85] != (int *)0x0) {
    (**(code **)(*(int *)param_1_00[0x85] + 0x50))(uVar4);
    param_1_00[0x85] = 0;
  }
LAB_009c473c:
  local_1c = (void *)0x7;
  local_20 = 0;
  local_30 = 0;
  local_18 = 0;
  local_40 = (void *)0x7;
  local_44 = 0;
  local_54 = 0;
  local_3c = 0;
  local_4 = 2;
  cVar3 = FUN_009c1d70(piVar1,param_1_00[0x7a],&local_34,&local_58);
  if (cVar3 == '\0') {
    psVar2 = &DAT_00d34cc0;
    do {
      psVar6 = psVar2;
      psVar2 = psVar6 + 1;
    } while (*psVar6 != 0);
    FID_conflict_assign(&DAT_00d34cc0,(int)(psVar6 + -0x69a660) >> 1);
  }
  else if (param_1_00 + 0x7b != &local_34) {
    FID_conflict_assign(&local_34,0,0xffffffff);
  }
  (**(code **)(*param_1_00 + 0x39c))(0);
  if (param_1_00[0x85] != 0) {
    FUN_009c0240(piVar1,0);
  }
  _free(local_40);
  if (7 < local_44) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_58);
  }
  local_44 = 7;
  uStack_48 = 0;
  local_58 = local_58 & 0xffff0000;
  _free(local_1c);
  if (7 < local_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_34);
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void FUN_009c4870(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(8);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = wxWindowsArtProvider::vftable;
    FUN_00971c30(puVar1);
    return;
  }
  FUN_00971c30(0);
  return;
}



int * FUN_009c48a0(int *param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  int iVar3;
  
  cVar1 = FUN_00855fb0(param_2,"wxART_TOOLBAR_C");
  if (cVar1 != '\0') {
    *param_1 = 0x18;
    param_1[1] = 0x18;
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_MENU_C");
  if (cVar1 != '\0') {
    *param_1 = 0x10;
    param_1[1] = 0x10;
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_FRAME_ICON_C");
  if (cVar1 != '\0') {
    iVar2 = GetSystemMetrics(0x32);
    iVar3 = GetSystemMetrics(0x31);
    param_1[1] = iVar2;
    *param_1 = iVar3;
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_CMN_DIALOG_C");
  if ((cVar1 == '\0') && (cVar1 = FUN_00855fb0(param_2,"wxART_MESSAGE_BOX_C"), cVar1 == '\0')) {
    cVar1 = FUN_00855fb0(param_2,"wxART_BUTTON_C");
    if (cVar1 == '\0') {
      cVar1 = FUN_00855fb0(param_2,"wxART_LIST_C");
      iVar2 = DAT_03238d08;
      if (cVar1 == '\0') {
        *param_1 = DAT_03238d04;
        param_1[1] = iVar2;
        return param_1;
      }
    }
    *param_1 = 0x10;
    param_1[1] = 0x10;
    return param_1;
  }
  iVar2 = GetSystemMetrics(0xc);
  iVar3 = GetSystemMetrics(0xb);
  param_1[1] = iVar2;
  *param_1 = iVar3;
  return param_1;
}



undefined4 * __thiscall FUN_009c49c0(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined **local_48;
  int local_44;
  undefined local_40 [16];
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be6f49;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0043c211(param_2);
  local_4 = 1;
  FUN_0092c990(local_30,4,0xffffffff,0xffffffff);
  local_4._0_1_ = 3;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  param_1[1] = 0;
  *param_1 = wxBitmap::vftable;
  FUN_008f4c70(local_40,0);
  cVar1 = FUN_008a4910(param_1_00,"wxART_MESSAGE_BOX_C",uVar2);
  if (cVar1 != '\0') {
    cVar1 = FUN_008a4910(param_1_00,"wxART_OTHER_C");
    if (cVar1 != '\0') {
      FUN_009c48a0(&local_48,param_1_00);
      if ((local_48 != DAT_03238d04) || (local_44 != DAT_03238d08)) {
        FUN_008f3b70(&local_48);
        local_4._0_1_ = 4;
        FUN_009055a0(local_48,local_44,0);
        puVar3 = (undefined4 *)FUN_00414f38(&local_48,0xffffffff);
        local_4._0_1_ = 5;
        if (param_1 != puVar3) {
          FUN_0083ea60(puVar3);
        }
        local_4._0_1_ = 4;
        FUN_008f7630();
        local_4._0_1_ = 3;
        local_48 = wxObject::vftable;
        FUN_0083e850();
      }
    }
  }
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_008f7630();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * FUN_009c4b50(undefined4 *param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  char *pcVar4;
  
  cVar3 = FUN_00855fb0(param_2,"wxART_ERROR");
  if (cVar3 == '\0') {
    cVar3 = FUN_00855fb0(param_2,"wxART_INFORMATION");
    if (cVar3 == '\0') {
      cVar3 = FUN_00855fb0(param_2,"wxART_WARNING");
      if (cVar3 == '\0') {
        cVar3 = FUN_00855fb0(param_2,"wxART_QUESTION");
        if (cVar3 == '\0') {
          *param_1 = wxObject::vftable;
          iVar2 = DAT_03238ccc;
          param_1[1] = DAT_03238ccc;
          if (iVar2 != 0) {
            piVar1 = (int *)(iVar2 + 4);
            *piVar1 = *piVar1 + 1;
          }
          *param_1 = wxBitmap::vftable;
          return param_1;
        }
        pcVar4 = "wxICON_QUESTION";
      }
      else {
        pcVar4 = "wxICON_WARNING";
      }
    }
    else {
      pcVar4 = "wxICON_INFORMATION";
    }
  }
  else {
    pcVar4 = "wxICON_ERROR";
  }
  FUN_009c49c0(param_1,pcVar4);
  return param_1;
}



undefined4 __thiscall FUN_009c4c00(undefined4 param_1_00,byte param_1)

{
  FUN_00971410();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_009c4c20(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0xc);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = `anonymous_namespace'::wxTangoArtProvider::vftable;
    *(undefined *)(puVar1 + 2) = 0;
    FUN_00971c30(puVar1);
    return;
  }
  FUN_00971c30(0);
  return;
}



bool FUN_009c4c50(undefined4 param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  bool bVar3;
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  iVar2 = FUN_0043c211(param_1);
  local_4 = 0;
  if (*(int *)(iVar2 + 0x14) == *(int *)(param_2 + 0x14)) {
    iVar2 = FUN_00850760(param_2);
    bVar3 = iVar2 == 0;
  }
  else {
    bVar3 = false;
  }
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  ExceptionList = local_c;
  return !bVar3;
}



undefined4 * FUN_009c4ce0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  bool bVar1;
  bool bVar2;
  char cVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  undefined **ppuVar7;
  uint uVar8;
  int iVar9;
  undefined auStack_e4 [4];
  undefined2 local_e0;
  undefined4 uStack_d8;
  char *pcStack_d4;
  undefined4 local_d0;
  char *local_cc;
  char *local_c8;
  undefined **local_a8;
  undefined4 local_a4;
  undefined *local_a0 [2];
  int local_98;
  undefined4 local_94;
  char *local_8c;
  undefined4 local_88;
  char *local_84;
  undefined *local_80;
  __time64_t local_7c;
  DWORD local_74;
  undefined4 local_70;
  undefined2 local_68;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined local_44 [20];
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6fba;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_a0[0] = (undefined *)0x0;
  ppuVar7 = &PTR_s_wxART_GO_BACK_00d886d8;
  uVar8 = 0;
  while( true ) {
    local_c8 = *ppuVar7;
    local_cc = (char *)0x9c4d30;
    cVar3 = FUN_009c4c50();
    if (cVar3 == '\0') break;
    uVar8 = uVar8 + 0x14;
    ppuVar7 = ppuVar7 + 5;
    if (0x2cf < uVar8) {
      *param_1 = wxObject::vftable;
      iVar9 = DAT_03238ccc;
      param_1[1] = DAT_03238ccc;
      if (iVar9 != 0) {
        piVar4 = (int *)(iVar9 + 4);
        *piVar4 = *piVar4 + 1;
      }
      *param_1 = wxBitmap::vftable;
      ExceptionList = local_c;
      return param_1;
    }
  }
  iVar9 = *param_4;
  if ((iVar9 == DAT_03238d04) && (param_4[1] == DAT_03238d08)) {
    local_c8 = (char *)local_a0;
    local_cc = (char *)0x9c4db2;
    piVar4 = (int *)FUN_009c48a0();
    iVar9 = *piVar4;
    iVar5 = piVar4[1];
    if ((iVar9 == DAT_03238d04) && (iVar5 == DAT_03238d08)) {
      local_c8 = (char *)param_3;
      local_cc = (char *)0x9c4dd5;
      cVar3 = FUN_00855fb0();
      if (cVar3 == '\0') {
        local_c8 = (char *)param_3;
        local_cc = (char *)0x9c4de7;
        cVar3 = FUN_00855fb0();
        iVar5 = 0x18;
        iVar9 = iVar5;
        if (cVar3 == '\0') goto LAB_009c4dfe;
      }
      iVar5 = 0x10;
      iVar9 = iVar5;
    }
LAB_009c4dfe:
    bVar2 = false;
  }
  else {
    iVar5 = param_4[1];
    bVar2 = true;
  }
  if ((iVar9 < 0x11) && (iVar5 < 0x11)) {
    bVar1 = false;
  }
  else {
    bVar1 = true;
  }
  if (bVar1) {
    if (bVar1) {
      local_c8 = ppuVar7[3];
      goto LAB_009c4e60;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      local_c8 = "Assert failure";
      local_cc = "`anonymous-namespace\'::wxTangoArtProvider::CreateBitmap";
      local_d0 = 0x10c;
      pcStack_d4 = "..\\..\\src\\common\\arttango.cpp";
      uStack_d8 = 0x9c4e57;
      FUN_008402e0();
    }
  }
  local_c8 = ppuVar7[1];
LAB_009c4e60:
  local_cc = (char *)0x9c4e6e;
  FUN_00874cb0();
  local_4 = 0;
  if (*(char *)(local_98 + 8) == '\0') {
    local_c8 = (char *)0x9c4e8a;
    iVar6 = FUN_009008b0();
    if (iVar6 == 0) {
      local_c8 = (char *)0x9c4e9b;
      local_a0[0] = (undefined *)operator_new(0x88);
      local_4._0_1_ = 1;
      if (local_a0[0] != (undefined *)0x0) {
        FUN_00431fba();
      }
      local_4 = (uint)local_4._1_3_ << 8;
      local_c8 = (char *)0x9c4ecf;
      FUN_009065d0();
    }
    *(undefined *)(local_98 + 8) = 1;
  }
  local_a4 = 0;
  local_c8 = (char *)0xf;
  local_cc = local_30;
  local_4._0_1_ = 2;
  local_a8 = wxImage::vftable;
  local_d0 = 0x9c4f03;
  FUN_00907230();
  local_4._0_1_ = 3;
  cVar3 = FUN_008ff820();
  if (cVar3 == '\0') {
    local_a0[0] = auStack_e4;
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(6);
    if (cVar3 != '\0') {
      local_c8 = (char *)0x9c4f52;
      FUN_0083fbe0();
      local_a0[0] = auStack_e4;
      local_cc = (undefined *)0x7;
      local_d0 = 0;
      local_e0 = 0;
      local_4._0_1_ = 4;
      FID_conflict_assign(param_2,0,0xffffffff);
      local_c8 = (char *)0x0;
      local_4._0_1_ = 5;
      local_94 = 6;
      local_8c = "..\\..\\src\\common\\arttango.cpp";
      local_84 = "`anonymous-namespace\'::wxTangoArtProvider::CreateBitmap";
      local_88 = 0x131;
      local_80 = &DAT_00d25fa0;
      local_7c = __time64((__time64_t *)0x0);
      local_74 = GetCurrentThreadId();
      local_70 = 0;
      local_54 = 7;
      local_58 = 0;
      local_68 = 0;
      local_50 = 0;
      local_4._0_1_ = 7;
      FUN_00848780(local_44);
      local_4._0_1_ = 4;
      FUN_00842440();
      local_4._0_1_ = 3;
      FUN_0081b5bc();
    }
    *param_1 = wxObject::vftable;
    iVar9 = DAT_03238ccc;
    param_1[1] = DAT_03238ccc;
    if (iVar9 != 0) {
      piVar4 = (int *)(iVar9 + 4);
      *piVar4 = *piVar4 + 1;
    }
    *param_1 = wxBitmap::vftable;
    local_4 = (uint)local_4._1_3_ << 8;
    local_a8 = wxObject::vftable;
    FUN_0083e850();
    local_4 = 0xffffffff;
    FUN_00874b30();
    ExceptionList = local_c;
    return param_1;
  }
  if (!bVar2) {
    local_d0 = 0x9c50a7;
    local_cc = (char *)iVar9;
    local_c8 = (char *)iVar5;
    FUN_009055a0();
  }
  local_c8 = (char *)&local_a8;
  local_cc = (char *)0x9c50bc;
  FUN_00414f38();
  local_4 = (uint)local_4._1_3_ << 8;
  local_a8 = wxObject::vftable;
  FUN_0083e850();
  local_4 = 0xffffffff;
  FUN_00874b30();
  ExceptionList = local_c;
  return param_1;
}



int __thiscall
FUN_009c5100(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  uint uVar1;
  int iVar2;
  undefined **local_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6fe8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  iVar2 = FUN_00907b90(local_14,param_1,param_2,param_3,param_4,param_5);
  local_4 = 0;
  if (param_1_00 != iVar2) {
    FUN_0083ea60(iVar2);
  }
  local_4 = 0xffffffff;
  local_14[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_009c5190(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(8);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = wxDefaultArtProvider::vftable;
    FUN_00971c30(puVar1);
    return;
  }
  FUN_00971c30(0);
  return;
}



undefined4 FUN_009c51c0(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = FUN_00855fb0(param_2,"wxART_HELP_SIDE_PANEL");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_6_1_00d8dab8);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_HELP_SETTINGS");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_2_1_00d8db10);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_HELP_BOOK");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_16_6_1_00d8db58);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_HELP_FOLDER");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_16_6_1_00d8dbe8);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_HELP_PAGE");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_16_4_1_00d8dc78);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_MISSING_IMAGE");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_32_32_5_1_00d8dd00);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_ADD_BOOKMARK");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_3_1_00d8dd98);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_DEL_BOOKMARK");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_3_1_00d8dde8);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_GO_BACK");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_3_1_00d8de38);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_GO_FORWARD");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_3_1_00d8de88);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_GO_UP");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_3_1_00d8ded8);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_GO_DOWN");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_3_1_00d8df28);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_GO_TO_PARENT");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_3_1_00d8df78);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_GO_HOME");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_3_1_00d8e2c0);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_GOTO_FIRST");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_16_3_1_00d8e310);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_GOTO_LAST");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_16_3_1_00d8e360);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_FILE_OPEN");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_36_1_00d8dfc8);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_PRINT");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_39_1_00d8e098);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_HELP");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_32_32_6_1_00d8e178);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_TIP");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_32_32_9_1_00d8e218);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_REPORT_VIEW");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_3_1_00d8e3b0);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_LIST_VIEW");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_4_1_00d8e400);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_NEW_DIR");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_22_1_00d8e450);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_HARDDISK");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_39_1_00d8e4e8);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_FLOPPY");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_18_1_00d8e698);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_CDROM");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_36_1_00d8e5c8);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_REMOVABLE");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_23_1_00d8e720);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_FOLDER");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_22_1_00d8e7c0);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_FOLDER_OPEN");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_31_1_00d8e858);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_GO_DIR_UP");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_31_1_00d8e918);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_EXECUTABLE_FILE");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_16_51_1_00d8e9d8);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_NORMAL_FILE");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_16_32_1_00d8eae8);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_TICK_MARK");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_10_10_2_1_00d8dbb4);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_CROSS_MARK");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_10_10_2_1_00d8dc44);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_FILE_SAVE");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_21_1_00d8ebb0);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_FILE_SAVE_AS");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_23_1_00d8ec48);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_COPY");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_23_1_00d8ece8);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_CUT");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_25_1_00d8ed88);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_PASTE");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_25_1_00d8ee30);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_DELETE");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_21_1_00d8eed8);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_UNDO");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_37_1_00d8f028);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_REDO");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_37_1_00d8f100);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_PLUS");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_16_3_1_00d8f1d8);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_MINUS");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_16_3_1_00d8f228);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_CLOSE");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_12_10_2_1_00d8dccc);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_QUIT");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_69_1_00d8f278);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_FIND");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_41_1_00d8f3d0);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_FIND_AND_REPLACE");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_42_1_00d8f4b8);
    return param_1;
  }
  cVar1 = FUN_00855fb0(param_2,"wxART_NEW");
  if (cVar1 != '\0') {
    FUN_0096fb90(&PTR_s_16_15_29_1_00d8ef70);
    return param_1;
  }
  FUN_008f2970(&PTR_vftable_03238cc8);
  return param_1;
}



int FUN_009c5960(int param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int iStack_2c;
  int iStack_28;
  undefined **appuStack_24 [2];
  undefined **ppuStack_1c;
  int iStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be7051;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_009c51c0(param_1,param_2,DAT_0323f878 ^ (uint)&stack0xffffffc0);
  local_4 = 0;
  if (((((*(int *)(param_1 + 4) != 0) &&
        (cVar1 = (**(code **)(**(int **)(param_1 + 4) + 4))(), cVar1 != '\0')) &&
       (*param_4 == DAT_03238d04)) && (param_4[1] == DAT_03238d08)) &&
     ((FUN_00970b70(&iStack_2c,param_3,0), iStack_2c != DAT_03238d04 || (iStack_28 != DAT_03238d08))
     )) {
    iVar3 = *(int *)(param_1 + 4);
    if (iVar3 == 0) {
      iVar4 = 0;
      iVar3 = 0;
    }
    else {
      iVar4 = *(int *)(iVar3 + 8);
      iVar3 = *(int *)(iVar3 + 0xc);
    }
    if ((iVar3 < iStack_2c) && (iVar4 < iStack_28)) {
      iStack_18 = (iStack_28 - iVar3) / 2;
      ppuStack_1c = (undefined **)((iStack_2c - iVar4) / 2);
      FUN_008f3b70(appuStack_24);
      local_4 = 1;
      FUN_009c5100(&iStack_2c,&ppuStack_1c,0xffffffff,0xffffffff,0xffffffff);
      uVar2 = FUN_00414f38(appuStack_24,0xffffffff);
      local_4._0_1_ = 2;
      FUN_00454997(uVar2);
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_008f7630();
    }
    else {
      FUN_008f3b70(appuStack_24);
      local_4 = 3;
      uVar2 = FUN_00904b70(&ppuStack_1c,iStack_2c,iStack_28,1);
      local_4._0_1_ = 4;
      iVar3 = FUN_00414f38(uVar2,0xffffffff);
      local_4._0_1_ = 5;
      if (param_1 != iVar3) {
        FUN_0083ea60(iVar3);
      }
      local_4._0_1_ = 4;
      FUN_008f7630();
      local_4 = CONCAT31(local_4._1_3_,3);
      ppuStack_1c = wxObject::vftable;
      FUN_0083e850();
    }
    appuStack_24[0] = wxObject::vftable;
    local_4 = local_4 & 0xffffff00;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_009c5b60(int param_1_00,undefined4 param_1)

{
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    *(undefined4 *)(param_1_00 + 4) = param_1;
    return;
  }
  if (*(int *)(param_1_00 + 4) != 0) {
    FUN_00840480("..\\..\\src\\msw\\listctrl.cpp",0x93,"wxLV_ITEM::Init","!m_pItem",
                 L"Init() called twice?");
    *(undefined4 *)(param_1_00 + 4) = param_1;
    return;
  }
  *(undefined4 *)(param_1_00 + 4) = param_1;
  return;
}



undefined ** FUN_009c5bc0(void)

{
  return &PTR_PTR_00d8f6e4;
}



undefined * FUN_009c5bd0(void)

{
  return &DAT_032e9de0;
}



void __fastcall FUN_009c5be0(int param_1)

{
  *(undefined4 *)(param_1 + 0x1a0) = 0;
  *(undefined4 *)(param_1 + 0x19c) = 0;
  *(undefined4 *)(param_1 + 0x198) = 0;
  *(undefined *)(param_1 + 0x1a6) = 0;
  *(undefined *)(param_1 + 0x1a5) = 0;
  *(undefined *)(param_1 + 0x1a4) = 0;
  *(undefined4 *)(param_1 + 0x1a8) = 0;
  *(undefined4 *)(param_1 + 0x1ac) = 0;
  *(undefined4 *)(param_1 + 0x194) = 0;
  *(undefined *)(param_1 + 0x1bc) = 0;
  return;
}



undefined4 __thiscall FUN_009c5c20(int param_1_00,int param_1)

{
  if (param_1 == 0) {
    return *(undefined4 *)(param_1_00 + 0x198);
  }
  if (param_1 == 1) {
    return *(undefined4 *)(param_1_00 + 0x19c);
  }
  if (param_1 == 2) {
    return *(undefined4 *)(param_1_00 + 0x1a0);
  }
  return 0;
}



void FUN_009c5c60(void)

{
  HWND wParam;
  HWND hWnd;
  undefined4 *unaff_ESI;
  HWND *unaff_EDI;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  wParam = unaff_EDI[9];
  hWnd = *unaff_EDI;
  unaff_ESI[1] = 0;
  *unaff_ESI = 0;
  SendMessageW(hWnd,0x1038,(WPARAM)wParam,(LPARAM)unaff_ESI);
  local_c = 0;
  local_10 = 1;
  SendMessageW(*unaff_EDI,0x1038,(WPARAM)unaff_EDI[9],(LPARAM)&local_10);
  *unaff_ESI = local_8;
  return;
}



void FUN_009c5d60(byte param_1,byte param_2)

{
  int in_EAX;
  
  if (((param_2 & 8) != 0) &&
     (*(uint *)(in_EAX + 0x10) = *(uint *)(in_EAX + 0x10) | 4, (param_1 & 8) != 0)) {
    *(uint *)(in_EAX + 0xc) = *(uint *)(in_EAX + 0xc) | 4;
  }
  if (((param_2 & 1) != 0) &&
     (*(uint *)(in_EAX + 0x10) = *(uint *)(in_EAX + 0x10) | 8, (param_1 & 1) != 0)) {
    *(uint *)(in_EAX + 0xc) = *(uint *)(in_EAX + 0xc) | 8;
  }
  if (((param_2 & 2) != 0) &&
     (*(uint *)(in_EAX + 0x10) = *(uint *)(in_EAX + 0x10) | 1, (param_1 & 2) != 0)) {
    *(uint *)(in_EAX + 0xc) = *(uint *)(in_EAX + 0xc) | 1;
  }
  if (((param_2 & 4) != 0) &&
     (*(uint *)(in_EAX + 0x10) = *(uint *)(in_EAX + 0x10) | 2, (param_1 & 4) != 0)) {
    *(uint *)(in_EAX + 0xc) = *(uint *)(in_EAX + 0xc) | 2;
  }
  return;
}



undefined4 FUN_009c5dc0(void)

{
  SHORT SVar1;
  
  SVar1 = GetKeyState(0x10);
  if (-1 < SVar1) {
    SVar1 = GetKeyState(0x11);
    if (-1 < SVar1) {
      SVar1 = GetKeyState(0x12);
      if (-1 < SVar1) {
        return 0;
      }
    }
  }
  return 1;
}



void __fastcall FUN_009c5df0(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_008fc6f0();
  if (0x1d5 < iVar1) {
    SendMessageW(*(HWND *)(param_1 + 0x13c),0x1036,0,0x4032);
  }
  return;
}



void __fastcall FUN_009c5e20(int *param_1)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  uint dwNewLong;
  int *piVar4;
  
  if (param_1[0x4f] != 0) {
    piVar4 = param_1;
    uVar2 = (**(code **)(*param_1 + 0x2c8))(param_1[0x38],0);
    cVar1 = (**(code **)(*param_1 + 0xdc))();
    if (cVar1 != '\0') {
      uVar2 = uVar2 | 0x10000000;
    }
    uVar3 = GetWindowLongW((HWND)param_1[0x4f],-0x10);
    dwNewLong = uVar2 | uVar3 & 0x300000;
    if (((uVar3 != dwNewLong) &&
        (SetWindowLongW((HWND)param_1[0x4f],-0x10,dwNewLong), (uVar3 & 1) == 0)) &&
       ((uVar2 & 1) != 0)) {
      FUN_009c5df0(piVar4);
      return;
    }
  }
  return;
}



void __fastcall FUN_009c5eb0(int param_1)

{
  if (*(int *)(param_1 + 0x194) != 0) {
    FUN_00914170();
    *(undefined4 *)(*(int *)(param_1 + 0x194) + 0x13c) = 0;
    if (*(int **)(param_1 + 0x194) != (int *)0x0) {
      (**(code **)(**(int **)(param_1 + 0x194) + 4))(1);
      *(undefined4 *)(param_1 + 0x194) = 0;
    }
  }
  return;
}



void __thiscall FUN_009c6020(int param_1_00,WPARAM param_1)

{
  SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x101d,param_1,0);
  return;
}



bool __thiscall FUN_009c6040(int param_1_00,WPARAM param_1,uint param_2)

{
  LRESULT LVar1;
  
  if ((*(byte *)(param_1_00 + 0xe0) & 0x10) != 0) {
    param_1 = 0;
  }
  LVar1 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x101e,param_1,param_2 & 0xffff);
  return LVar1 != 0;
}



uint __thiscall FUN_009c6090(int param_1_00,undefined4 param_1)

{
  LRESULT LVar1;
  undefined4 local_3c;
  undefined4 local_38;
  uint uStack_1c;
  
  local_3c = 4;
  local_38 = param_1;
  LVar1 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x104b,0,(LPARAM)&local_3c);
  return -(uint)(LVar1 != 0) & uStack_1c;
}



void __thiscall FUN_009c60d0(int param_1_00,int *param_1)

{
  HWND hWnd;
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  hWnd = *(HWND *)(param_1_00 + 0x13c);
  uVar1 = (**(code **)(*param_1 + 0x18))();
  uVar2 = (**(code **)(*param_1 + 0x14))();
  uVar3 = (**(code **)(*param_1 + 0x10))();
  SendMessageW(hWnd,0x1024,0,uVar3 & 0xff | (uVar2 & 0xff | (uVar1 & 0xff | 0x200) << 8) << 8);
  return;
}



void __thiscall FUN_009c6130(int param_1_00,int param_1,WPARAM param_2)

{
  LPARAM lParam;
  WPARAM WVar1;
  
  WVar1 = 0;
  if (param_2 == 0) {
    if ((*(char *)(param_1_00 + 0x1a4) != '\0') && (*(int **)(param_1_00 + 0x198) != (int *)0x0)) {
      (**(code **)(**(int **)(param_1_00 + 0x198) + 4))(1);
    }
    *(int *)(param_1_00 + 0x198) = param_1;
    *(undefined *)(param_1_00 + 0x1a4) = 0;
  }
  else if (param_2 == 1) {
    if ((*(char *)(param_1_00 + 0x1a5) != '\0') && (*(int **)(param_1_00 + 0x19c) != (int *)0x0)) {
      (**(code **)(**(int **)(param_1_00 + 0x19c) + 4))(1);
    }
    *(int *)(param_1_00 + 0x19c) = param_1;
    *(undefined *)(param_1_00 + 0x1a5) = 0;
    WVar1 = param_2;
  }
  else if (param_2 == 2) {
    if ((*(char *)(param_1_00 + 0x1a6) != '\0') && (*(int **)(param_1_00 + 0x1a0) != (int *)0x0)) {
      (**(code **)(**(int **)(param_1_00 + 0x1a0) + 4))(1);
    }
    *(int *)(param_1_00 + 0x1a0) = param_1;
    *(undefined *)(param_1_00 + 0x1a6) = 0;
    WVar1 = param_2;
  }
  if (param_1 == 0) {
    lParam = 0;
  }
  else {
    lParam = *(LPARAM *)(param_1 + 8);
  }
  SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1003,WVar1,lParam);
  return;
}



void __thiscall FUN_009c6200(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(*(int *)(param_1_00 + 0x194) + 0x13c) = param_1;
  FUN_00914900(param_1);
  *(int *)(*(int *)(param_1_00 + 0x194) + 0x44) = param_1_00;
  (**(code **)(**(int **)(param_1_00 + 0x194) + 0xe8))();
                    // WARNING: Could not recover jumptable at 0x009c624e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1_00 + 0x194) + 0xe4))();
  return;
}



bool __thiscall FUN_009c6250(int param_1_00,WPARAM param_1)

{
  LRESULT LVar1;
  
  LVar1 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1013,param_1,0);
  return LVar1 != 0;
}



void __thiscall FUN_009c62d0(HWND *param_1_00,HGDIOBJ param_1,int param_3)

{
  HDC hdc;
  HWND wParam;
  HWND hWnd;
  int iVar1;
  LRESULT LVar2;
  UINT format;
  HWND local_490;
  HWND local_48c;
  tagRECT tStack_488;
  HGDIOBJ pvStack_474;
  int iStack_470;
  undefined4 uStack_46c;
  HWND pHStack_468;
  HWND pHStack_464;
  WCHAR *pWStack_458;
  undefined4 uStack_454;
  int iStack_450;
  undefined4 uStack_430;
  uint uStack_42c;
  WCHAR aWStack_404 [512];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_490;
  hdc = (HDC)param_1_00[4];
  local_48c = param_1_00[0xe];
  wParam = param_1_00[9];
  hWnd = *param_1_00;
  local_490 = wParam;
  pvStack_474 = SelectObject(hdc,param_1);
  tStack_488.top = (LONG)local_48c;
  if (param_3 != 0) {
    tStack_488.top = (int)&local_48c->unused + 1;
  }
  tStack_488.left = 0;
  SendMessageW(hWnd,0x1038,(WPARAM)wParam,(LPARAM)&tStack_488);
  tStack_488.left = tStack_488.left + 6;
  _memset(&uStack_46c,0,0x3c);
  pHStack_468 = local_490;
  pWStack_458 = aWStack_404;
  uStack_46c = 3;
  pHStack_464 = local_48c;
  uStack_454 = 0x200;
  SendMessageW(hWnd,0x104b,0,(LPARAM)&uStack_46c);
  local_490 = (HWND)SendMessageW(hWnd,0x1002,1,0);
  if (local_490 == (HWND)0x0) goto LAB_009c6413;
  iVar1 = ImageList_GetImageCount((HIMAGELIST)local_490);
  if (iVar1 == 0) goto LAB_009c6413;
  if (iStack_450 == -1) {
LAB_009c63e7:
    if (pHStack_464 != (HWND)0x0) goto LAB_009c6413;
  }
  else {
    ImageList_Draw((HIMAGELIST)local_490,iStack_450,hdc,tStack_488.left,tStack_488.top,
                   (-(uint)(((uint)param_1_00[10] & 1) != 0) & 3) + 1);
    if (iStack_450 == -1) goto LAB_009c63e7;
  }
  ImageList_GetIconSize((HIMAGELIST)local_490,(int *)&local_490,&iStack_470);
  tStack_488.left = (int)&local_490->unused + tStack_488.left + 2;
LAB_009c6413:
  SetBkMode(hdc,1);
  format = 0x40824;
  _memset(&uStack_430,0,0x2c);
  uStack_430 = 1;
  LVar2 = SendMessageW(hWnd,0x105f,(WPARAM)local_48c,(LPARAM)&uStack_430);
  if ((LVar2 != 0) && (uStack_42c = uStack_42c & 3, uStack_42c != 0)) {
    if (uStack_42c == 1) {
      format = 0x40826;
    }
    else if (uStack_42c == 2) {
      format = 0x40825;
    }
  }
  DrawTextW(hdc,aWStack_404,-1,&tStack_488,format);
  if (hdc != (HDC)0x0) {
    SelectObject(hdc,pvStack_474);
  }
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_009c64c0(int *param_1_00,int param_1,int param_2,undefined4 param_3)

{
  undefined4 uVar1;
  LRESULT LVar2;
  
  if (param_1 == 0x7b) {
    LVar2 = SendMessageW((HWND)param_1_00[0x4f],0x101f,0,0);
    if (param_2 == LVar2) {
      return 0;
    }
  }
  else if (param_1 == 0x317) {
    uVar1 = (**(code **)(*param_1_00 + 0x2fc))(0x317,param_2,param_3);
    return uVar1;
  }
  uVar1 = FUN_0090d970(param_1,param_2,param_3);
  return uVar1;
}



undefined4 __thiscall FUN_009c6530(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  LRESULT LVar2;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 *puStack_1c;
  
  if (((uint)param_1_00[0x38] >> 9 & 1) != 0) {
                    // WARNING: Could not recover jumptable at 0x009c654b. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (**(code **)(*param_1_00 + 0x368))();
    return uVar1;
  }
  local_3c = 4;
  local_38 = param_1;
  LVar2 = SendMessageW((HWND)param_1_00[0x4f],0x104b,0,(LPARAM)&local_3c);
  if ((LVar2 != 0) && (puStack_1c != (undefined4 *)0x0)) {
    return *puStack_1c;
  }
  return 0;
}



int __thiscall FUN_009c65a0(uint *param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 <= param_1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                 "wxVector<class wxMSWListItemData *>::at","idx < m_size",0);
  }
  return param_1_00[2] + param_1 * 4;
}



uint __thiscall FUN_009c65e0(int *param_1_00,uint param_1,uint param_2)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  if (param_1 == param_2) {
    return param_1;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((uVar1 = param_1_00[2] + *param_1_00 * 4, uVar1 <= param_1 || (uVar1 < param_2)))) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x17f,
                 "wxVector<class wxMSWListItemData *>::erase","first < end() && last <= end()",0);
  }
  iVar2 = param_1_00[2];
  iVar3 = (int)((*param_1_00 * 4 - param_2) + iVar2) >> 2;
  iVar4 = (int)(param_1 - iVar2) >> 2;
  iVar5 = (int)(param_2 - param_1) >> 2;
  if (iVar3 != 0) {
    _memmove((void *)(iVar2 + iVar4 * 4),(void *)(iVar2 + (iVar5 + iVar4) * 4),iVar3 * 4);
  }
  *param_1_00 = *param_1_00 - iVar5;
  return param_1_00[2] + iVar4 * 4;
}



void __thiscall FUN_009c6680(int *param_1_00,int *param_1)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x24))();
  if (cVar1 != '\0') {
    if (param_1_00 != param_1) {
      FUN_0083ea60(param_1);
    }
    param_1_00[2] = param_1[2];
    *(undefined *)(param_1_00 + 3) = *(undefined *)(param_1 + 3);
    *(undefined *)((int)param_1_00 + 0xd) = *(undefined *)((int)param_1 + 0xd);
    *(undefined *)((int)param_1_00 + 0xe) = *(undefined *)((int)param_1 + 0xe);
    *(undefined *)((int)param_1_00 + 0xf) = *(undefined *)((int)param_1 + 0xf);
    *(undefined *)(param_1_00 + 4) = *(undefined *)(param_1 + 4);
  }
  cVar1 = (**(code **)(param_1[5] + 0x24))();
  if (cVar1 != '\0') {
    if (param_1_00 + 5 != param_1 + 5) {
      FUN_0083ea60(param_1 + 5);
    }
    param_1_00[7] = param_1[7];
    *(undefined *)(param_1_00 + 8) = *(undefined *)(param_1 + 8);
    *(undefined *)((int)param_1_00 + 0x21) = *(undefined *)((int)param_1 + 0x21);
    *(undefined *)((int)param_1_00 + 0x22) = *(undefined *)((int)param_1 + 0x22);
    *(undefined *)((int)param_1_00 + 0x23) = *(undefined *)((int)param_1 + 0x23);
    *(undefined *)(param_1_00 + 9) = *(undefined *)(param_1 + 9);
  }
  cVar1 = (**(code **)(param_1[10] + 0x10))();
  if ((cVar1 != '\0') && (param_1_00 + 10 != param_1 + 10)) {
    FUN_0083ea60(param_1 + 10);
  }
  return;
}



undefined4 __thiscall FUN_009c6740(int param_1,undefined4 param_2)

{
  uint uVar1;
  
  uVar1 = SendMessageW(*(HWND *)(param_1 + 0x13c),0x1023,0,0);
  FUN_004561e7(uVar1,uVar1 >> 8,uVar1 >> 0x10,0xff);
  return param_2;
}



void FUN_009c6790(undefined4 param_1)

{
  HWND *in_EAX;
  HWND pHVar1;
  HWND pHVar2;
  int nIndex;
  LONG *pLVar3;
  HBRUSH hbr;
  HWND pHVar4;
  LRESULT LVar5;
  HDC pHVar6;
  int iVar7;
  HWND *ppHVar8;
  UINT Msg;
  WPARAM wParam;
  LPARAM lParam;
  undefined4 uStack_70;
  LONG LStack_6c;
  LONG LStack_68;
  LONG LStack_64;
  RECT RStack_60;
  RECT RStack_50;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  LONG LStack_38;
  HWND apHStack_30 [9];
  WPARAM WStack_c;
  byte bStack_8;
  
  pHVar4 = *in_EAX;
  pHVar2 = in_EAX[9];
  pHVar1 = (HWND)SendMessageW(pHVar4,0x100c,0xffffffff,2);
  do {
    if (pHVar1 == (HWND)0xffffffff) {
      in_EAX[10] = (HWND)((uint)in_EAX[10] & 0xfffffffe);
LAB_009c67d3:
      pHVar1 = GetFocus();
      if ((pHVar1 == pHVar4) &&
         (pHVar1 = (HWND)SendMessageW(pHVar4,0x100c,0xffffffff,1), pHVar1 == pHVar2)) {
        in_EAX[10] = (HWND)((uint)in_EAX[10] | 0x10);
      }
      else {
        in_EAX[10] = (HWND)((uint)in_EAX[10] & 0xffffffef);
      }
      if ((*(byte *)(in_EAX + 10) & 1) != 0) {
        pHVar2 = GetFocus();
        if (pHVar2 == pHVar4) {
          nIndex = 0xe;
          iVar7 = 0xd;
        }
        else {
          in_EAX[10] = (HWND)((uint)in_EAX[10] & 0xfffffffe);
          nIndex = 8;
          iVar7 = 0xf;
        }
        pHVar2 = (HWND)GetSysColor(nIndex);
        in_EAX[0xc] = pHVar2;
        pHVar2 = (HWND)GetSysColor(iVar7);
        in_EAX[0xd] = pHVar2;
      }
      pHVar6 = (HDC)in_EAX[4];
      pLVar3 = (LONG *)FUN_009c5c60();
      RStack_60.left = *pLVar3;
      RStack_60.top = pLVar3[1];
      RStack_60.right = pLVar3[2];
      RStack_60.bottom = pLVar3[3];
      SetTextColor(pHVar6,(COLORREF)in_EAX[0xc]);
      hbr = CreateSolidBrush((COLORREF)in_EAX[0xd]);
      FillRect(pHVar6,&RStack_60,hbr);
      if (hbr != (HBRUSH)0x0) {
        DeleteObject(hbr);
      }
      lParam = 0;
      wParam = 0;
      Msg = 0x1200;
      pHVar4 = (HWND)SendMessageW(pHVar4,0x101f,0,0);
      LVar5 = SendMessageW(pHVar4,Msg,wParam,lParam);
      pHVar4 = (HWND)0x0;
      if (0 < LVar5) {
        do {
          in_EAX[0xe] = pHVar4;
          FUN_009c62d0(param_1,LVar5);
          pHVar4 = (HWND)((int)&pHVar4->unused + 1);
        } while ((int)pHVar4 < LVar5);
      }
      ppHVar8 = apHStack_30;
      for (iVar7 = 0xc; iVar7 != 0; iVar7 = iVar7 + -1) {
        *ppHVar8 = *in_EAX;
        in_EAX = in_EAX + 1;
        ppHVar8 = ppHVar8 + 1;
      }
      if ((bStack_8 & 0x10) != 0) {
        LStack_6c = 0;
        uStack_70 = 0;
        SendMessageW(apHStack_30[0],0x1038,WStack_c,(LPARAM)&uStack_70);
        uStack_3c = 0;
        uStack_40 = 1;
        SendMessageW(apHStack_30[0],0x1038,WStack_c,(LPARAM)&uStack_40);
        RStack_50.left = LStack_38;
        RStack_50.top = LStack_6c;
        RStack_50.right = LStack_68;
        RStack_50.bottom = LStack_64;
        pHVar6 = GetDC(apHStack_30[0]);
        DrawFocusRect(pHVar6,&RStack_50);
        ReleaseDC(apHStack_30[0],pHVar6);
      }
      return;
    }
    if (pHVar1 == pHVar2) {
      in_EAX[10] = (HWND)((uint)in_EAX[10] | 1);
      goto LAB_009c67d3;
    }
    pHVar1 = (HWND)SendMessageW(pHVar4,0x100c,(WPARAM)pHVar1,2);
  } while( true );
}



undefined4 FUN_009c6970(undefined4 param_1,int param_2)

{
  char cVar1;
  undefined4 uVar2;
  int *piVar3;
  int iVar4;
  HGDIOBJ h;
  int *unaff_EDI;
  undefined **appuStack_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be70aa;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (unaff_EDI != (int *)0x0) {
    cVar1 = (**(code **)(*unaff_EDI + 0x24))(DAT_0323f878 ^ (uint)&stack0xffffffcc);
    if (cVar1 == '\0') {
      FUN_009c6740(appuStack_20);
      uStack_4 = 0;
    }
    uVar2 = FUN_0090e430();
    *(undefined4 *)(param_2 + 0x30) = uVar2;
    uStack_4 = 0xffffffff;
    if (cVar1 == '\0') {
      appuStack_20[0] = wxObject::vftable;
      FUN_0083e850();
    }
    piVar3 = unaff_EDI + 5;
    cVar1 = (**(code **)(unaff_EDI[5] + 0x24))();
    if (cVar1 == '\0') {
      piVar3 = (int *)FUN_0091de40(appuStack_20);
      uStack_4 = 1;
    }
    uVar2 = FUN_0090e430(piVar3);
    *(undefined4 *)(param_2 + 0x34) = uVar2;
    uStack_4 = 0xffffffff;
    if (cVar1 == '\0') {
      appuStack_20[0] = wxObject::vftable;
      FUN_0083e850();
    }
    cVar1 = (**(code **)(unaff_EDI[10] + 0x10))();
    if (cVar1 != '\0') {
      if (unaff_EDI[0xb] != 0) {
        piVar3 = (int *)(unaff_EDI[0xb] + 4);
        *piVar3 = *piVar3 + 1;
      }
      uStack_4 = 2;
      iVar4 = FUN_009216c0();
      if (iVar4 == -1) {
        h = (HGDIOBJ)FUN_009229f0();
        SelectObject(*(HDC *)(param_2 + 0x10),h);
        uStack_4 = 0xffffffff;
        FUN_00921450();
        ExceptionList = local_c;
        return 2;
      }
      uVar2 = FUN_009229f0();
      FUN_009c6790(uVar2);
      uStack_4 = 0xffffffff;
      FUN_00921450();
      ExceptionList = local_c;
      return 4;
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_009c6b30(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 == 1) {
    if ((*(uint *)(param_1_00 + 0xe0) >> 9 & 1) != 0) {
      return 0x20;
    }
    if (*(char *)(param_1_00 + 0x1bc) != '\0') {
      return 0x20;
    }
  }
  else {
    if (iVar1 == 0x10001) {
      return 0x20;
    }
    if (iVar1 == 0x30001) {
      iVar1 = *(int *)(param_1 + 0x24);
      iVar2 = *(int *)(param_1 + 0x38);
      if ((((-1 < iVar1) && (iVar1 < *(int *)(param_1_00 + 0x1ac))) && (-1 < iVar2)) &&
         (iVar2 < *(int *)(param_1_00 + 0x1a8))) {
        FUN_009c6530(iVar1,iVar2);
        uVar3 = FUN_009c6970(param_1_00,param_1);
        return uVar3;
      }
    }
  }
  return 0;
}



uint * __thiscall FUN_009c6bb0(uint *param_1_00,uint param_1)

{
  undefined4 *puVar1;
  void *pvVar2;
  uint uVar3;
  uint uVar4;
  
  *param_1_00 = 0;
  param_1_00[1] = 0;
  param_1_00[2] = 0;
  if (param_1 != 0) {
    uVar4 = param_1;
    if (param_1 < 0x10) {
      uVar4 = 0x10;
    }
    pvVar2 = _realloc((void *)0x0,uVar4 << 4);
    param_1_00[2] = (uint)pvVar2;
    param_1_00[1] = uVar4;
    if (param_1 != 0) {
      do {
        uVar3 = *param_1_00;
        uVar4 = uVar3 + 1;
        if (param_1_00[1] < uVar4) {
          if (uVar3 == 0) {
            uVar3 = 0x10;
          }
          else if (0xfff < uVar3) {
            uVar3 = 0x1000;
          }
          uVar3 = uVar3 + param_1_00[1];
          if (uVar4 < uVar3) {
            uVar4 = uVar3;
          }
          pvVar2 = _realloc((void *)param_1_00[2],uVar4 << 4);
          param_1_00[2] = (uint)pvVar2;
          param_1_00[1] = uVar4;
        }
        puVar1 = (undefined4 *)(param_1_00[2] + *param_1_00 * 4);
        if (puVar1 != (undefined4 *)0x0) {
          *puVar1 = 0;
        }
        *param_1_00 = *param_1_00 + 1;
        param_1 = param_1 - 1;
      } while (param_1 != 0);
    }
  }
  return param_1_00;
}



void FUN_009c6c70(int **param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *param_1;
  if (piVar1 == (int *)0x0) {
    return;
  }
  iVar2 = *piVar1;
  if (iVar2 != 0) {
    FUN_009dab90();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar2);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(piVar1);
}



void __fastcall FUN_009c6cb0(int param_1)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  
  uVar1 = *(uint *)(param_1 + 0x1b0);
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x1b0) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                     "wxVector<class wxMSWListItemData *>::at","idx < m_size",0);
      }
      piVar2 = *(int **)(*(int *)(param_1 + 0x1b8) + uVar4 * 4);
      if (piVar2 != (int *)0x0) {
        iVar3 = *piVar2;
        if (iVar3 == 0) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(piVar2);
        }
        FUN_009dab90();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar3);
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  _free(*(void **)(param_1 + 0x1b8));
  *(undefined4 *)(param_1 + 0x1b8) = 0;
  *(undefined4 *)(param_1 + 0x1b4) = 0;
  *(undefined4 *)(param_1 + 0x1b0) = 0;
  return;
}



void __fastcall FUN_009c6d60(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be70e6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxListCtrl::vftable;
  local_4 = 1;
  FUN_009c6cb0(uVar1);
  if (param_1[0x65] != 0) {
    FUN_00914170();
    *(undefined4 *)(param_1[0x65] + 0x13c) = 0;
    if ((int *)param_1[0x65] != (int *)0x0) {
      (**(code **)(*(int *)param_1[0x65] + 4))(1);
      param_1[0x65] = 0;
    }
  }
  if ((*(char *)(param_1 + 0x69) != '\0') && ((int *)param_1[0x66] != (int *)0x0)) {
    (**(code **)(*(int *)param_1[0x66] + 4))(1);
  }
  if ((*(char *)((int)param_1 + 0x1a5) != '\0') && ((int *)param_1[0x67] != (int *)0x0)) {
    (**(code **)(*(int *)param_1[0x67] + 4))(1);
  }
  if ((*(char *)((int)param_1 + 0x1a6) != '\0') && ((int *)param_1[0x68] != (int *)0x0)) {
    (**(code **)(*(int *)param_1[0x68] + 4))(1);
  }
  _free((void *)param_1[0x6e]);
  param_1[0x6e] = 0;
  param_1[0x6d] = 0;
  param_1[0x6c] = 0;
  local_4 = 0xffffffff;
  FUN_0044cd6b();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009c6e70(int *param_1_00,int param_1)

{
  HWND hWnd;
  uint uVar1;
  undefined4 uVar2;
  int *piVar3;
  LRESULT LVar4;
  WPARAM WVar5;
  LPARAM lParam;
  undefined4 unaff_EBX;
  code *pcVar6;
  int unaff_EBP;
  int *wParam;
  int iVar7;
  uint uVar8;
  undefined4 uStack_84;
  int iStack_80;
  uint local_7c;
  int iStack_78;
  int *piStack_74;
  undefined **ppuStack_70;
  int *piStack_68;
  int *piStack_64;
  int *local_60;
  int *piStack_5c;
  int *local_58;
  uint uStack_54;
  int iStack_50;
  void *pvStack_4c;
  int iStack_48;
  uint uStack_44;
  int iStack_40;
  undefined **ppuStack_3c;
  int iStack_38;
  undefined **ppuStack_28;
  undefined auStack_24 [24];
  undefined4 local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00be7140;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff6c;
  ExceptionList = &local_c;
  uVar8 = param_1_00[0x38];
  local_7c = param_1_00[0x6b];
  uStack_84 = CONCAT13((char)uVar8,(undefined3)uStack_84) & 0x1ffffff;
  if (((uVar8 >> 5 & 1) == 0) ||
     ((((uVar8 >> 1 & 1) == 0 && ((uVar8 & 1) == 0)) || (local_7c == 0)))) {
    *(undefined *)(param_1 + 0x24) = 1;
  }
  else {
    FUN_0094be80(param_1_00);
    local_4 = 0;
    FUN_009100a0(param_1);
    (**(code **)(*local_58 + 0x104))(0,0,uVar1);
    uVar2 = FUN_008ff080(&ppuStack_3c,0x16);
    local_c._0_1_ = 1;
    FUN_009566f0(uVar2,1,100);
    local_c = (void *)CONCAT31(local_c._1_3_,3);
    ppuStack_3c = wxObject::vftable;
    FUN_0083e850();
    (**(code **)(*local_60 + 0x58))(&iStack_78);
    uVar2 = FUN_008f8a00(9);
    (**(code **)(*piStack_64 + 0x60))(uVar2);
    (**(code **)(*param_1_00 + 0x27c))(&stack0xffffff70,&uStack_84);
    pcVar6 = SendMessageW_exref;
    if ((uVar8 >> 1 & 1) != 0) {
      piVar3 = (int *)SendMessageW((HWND)param_1_00[0x4f],0x1027,0,0);
      piStack_74 = piVar3;
      LVar4 = SendMessageW((HWND)param_1_00[0x4f],0x1028,0,0);
      wParam = piVar3;
      if ((int)piVar3 < LVar4 + 1 + (int)piVar3) {
        do {
          if (((int)wParam < 0) || (param_1_00[0x6b] <= (int)wParam)) {
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              FUN_00840480("..\\..\\src\\msw\\listctrl.cpp",0x43b,"wxListCtrl::GetSubItemRect",
                           "item >= 0 && item < GetItemCount()",L"invalid item in GetSubItemRect");
            }
          }
          else {
            iStack_40 = 0;
            uStack_44 = 0;
            LVar4 = SendMessageW((HWND)param_1_00[0x4f],0x1038,(WPARAM)wParam,(LPARAM)&uStack_44);
            iVar7 = iStack_40;
            if (LVar4 != 0) {
              iStack_78 = iStack_38 - iStack_40;
              if (wParam != (int *)0x0) {
                (**(code **)(*local_58 + 0x140))(0,iStack_40,iStack_80,iStack_40);
              }
              piVar3 = piStack_74;
              if (wParam == (int *)(local_7c - 1)) {
                iVar7 = iStack_78 + -1 + iVar7;
                (**(code **)(*local_58 + 0x140))(0,iVar7,iStack_80,iVar7);
                break;
              }
            }
          }
          wParam = (int *)((int)wParam + 1);
          LVar4 = SendMessageW((HWND)param_1_00[0x4f],0x1028,0,0);
        } while ((int)wParam < LVar4 + 1 + (int)piVar3);
      }
    }
    if (uStack_84._3_1_ != '\0') {
      iVar7 = 0;
      if (param_1_00[0x6b] < 1) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\msw\\listctrl.cpp",0x43b,"wxListCtrl::GetSubItemRect",
                       "item >= 0 && item < GetItemCount()",L"invalid item in GetSubItemRect");
        }
      }
      else {
        iStack_50 = 0;
        uStack_54 = 0;
        LVar4 = SendMessageW((HWND)param_1_00[0x4f],0x1038,0,(LPARAM)&uStack_54);
        if (LVar4 != 0) {
          iStack_38 = iStack_48 - iStack_50;
          ppuStack_3c = (undefined **)((int)pvStack_4c - uStack_54);
          uStack_44 = uStack_54;
          iVar7 = iStack_50;
        }
      }
      WVar5 = local_7c - 1;
      if (((int)WVar5 < 0) || (param_1_00[0x6b] <= (int)WVar5)) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\msw\\listctrl.cpp",0x43b,"wxListCtrl::GetSubItemRect",
                       "item >= 0 && item < GetItemCount()",L"invalid item in GetSubItemRect");
        }
      }
      else {
        iStack_40 = 0;
        uStack_44 = 0;
        LVar4 = SendMessageW((HWND)param_1_00[0x4f],0x1038,WVar5,(LPARAM)&uStack_44);
        if (LVar4 != 0) {
          piStack_74 = (int *)(iStack_38 - iStack_40);
          uVar2 = FUN_008f8330(0x24);
          (**(code **)(*local_58 + 0x58))(uVar2);
          uVar2 = FUN_0091de40(auStack_24);
          uStack_8._0_1_ = 4;
          uVar2 = FUN_0095d7e0(uVar2,100);
          uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,5);
          (**(code **)(*piStack_5c + 0x60))(uVar2);
          local_c._0_1_ = 4;
          FUN_008f7630();
          local_c = (void *)CONCAT31(local_c._1_3_,3);
          ppuStack_28 = wxObject::vftable;
          FUN_0083e850();
          iStack_80 = iVar7 + -2;
          (**(code **)(*local_60 + 0x150))(0,iStack_80,unaff_EBX,2);
          (**(code **)((int)*ppuStack_70 + 0x58))(&stack0xffffff78);
          uVar2 = FUN_008f8a00(9);
          (**(code **)(*piStack_74 + 0x60))(uVar2);
          WVar5 = param_1_00[0x6a];
          FUN_009c6bb0(WVar5);
          hWnd = (HWND)param_1_00[0x4f];
          local_4 = CONCAT31(local_4._1_3_,6);
          lParam = FUN_00931670(0);
          LVar4 = SendMessageW(hWnd,0x103b,WVar5,lParam);
          if (LVar4 == 0) {
            if (PTR_FUN_03235c4c != (undefined *)0x0) {
              FUN_00840480("..\\..\\src\\msw\\listctrl.cpp",0xb91,"wxListCtrl::OnPaint",
                           "Assert failure",L"invalid column index array in OnPaint()");
            }
          }
          else {
            local_7c = uStack_44;
            uVar8 = 0;
            if (0 < (int)WVar5) {
              piStack_74 = (int *)(iStack_40 + -1 + (int)piStack_74);
              do {
                if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_54 <= uVar8)) {
                  FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<int>::at"
                               ,"idx < m_size",0);
                }
                iVar7 = (*pcVar6)(param_1_00[0x4f],0x101d,
                                  *(undefined4 *)((int)pvStack_4c + uVar8 * 4),0);
                unaff_EBP = unaff_EBP + iVar7;
                (**(code **)(*piStack_68 + 0x140))
                          (unaff_EBP + -1,unaff_EBX,unaff_EBP + -1,uStack_84);
                uVar8 = uVar8 + 1;
                pcVar6 = SendMessageW_exref;
              } while ((int)uVar8 < (int)WVar5);
            }
          }
          _free(pvStack_4c);
        }
      }
    }
    local_4 = local_4 & 0xffffff00;
    ppuStack_70 = wxObject::vftable;
    FUN_0083e850();
    local_4 = 0xffffffff;
    FUN_00457221();
  }
  ExceptionList = local_c;
  return;
}



void FUN_009c73d0(void)

{
  uint uVar1;
  int unaff_EBX;
  uint *unaff_ESI;
  int unaff_EDI;
  undefined4 uVar2;
  char *pcVar3;
  char *pcVar4;
  
  if ((*(uint *)(unaff_EBX + 0xe0) >> 5 & 1) == 0) {
    if ((PTR_FUN_03235c4c == (undefined *)0x0) || (*(int *)(unaff_EDI + 0x10) == 0))
    goto LAB_009c743b;
    pcVar4 = "columns only exist in report view";
    pcVar3 = "info.m_col == 0";
    uVar2 = 0xc9a;
  }
  else {
    if ((PTR_FUN_03235c4c == (undefined *)0x0) ||
       ((-1 < *(int *)(unaff_EDI + 0x10) &&
        (*(int *)(unaff_EDI + 0x10) < *(int *)(unaff_EBX + 0x1a8))))) goto LAB_009c743b;
    pcVar4 = "wxListCtrl column index out of bounds";
    pcVar3 = "0 <= info.m_col && info.m_col < ctrl->GetColumnCount()";
    uVar2 = 0xc96;
  }
  FUN_008402e0("..\\..\\src\\msw\\listctrl.cpp",uVar2,"wxConvertToMSWListItem",pcVar3,pcVar4);
LAB_009c743b:
  unaff_ESI[1] = *(uint *)(unaff_EDI + 0xc);
  unaff_ESI[7] = *(uint *)(unaff_EDI + 0x40);
  unaff_ESI[4] = 0;
  unaff_ESI[3] = 0;
  *unaff_ESI = 0;
  unaff_ESI[2] = *(uint *)(unaff_EDI + 0x10);
  if ((*(byte *)(unaff_EDI + 8) & 1) != 0) {
    *unaff_ESI = 8;
    FUN_009c5d60(*(undefined4 *)(unaff_EDI + 0x14),*(undefined4 *)(unaff_EDI + 0x18));
  }
  if ((*(byte *)(unaff_EDI + 8) & 2) != 0) {
    *unaff_ESI = *unaff_ESI | 1;
    if ((*(uint *)(unaff_EBX + 0xe0) >> 9 & 1) == 0) {
      if (*(uint *)(unaff_EDI + 0x34) < 8) {
        uVar1 = unaff_EDI + 0x20;
      }
      else {
        uVar1 = *(uint *)(unaff_EDI + 0x20);
      }
      unaff_ESI[5] = uVar1;
      if (uVar1 == 0) {
        unaff_ESI[6] = 0;
      }
      else {
        unaff_ESI[6] = *(uint *)(unaff_EDI + 0x30);
      }
    }
    else {
      unaff_ESI[5] = 0xffffffff;
    }
  }
  if ((*(byte *)(unaff_EDI + 8) & 4) != 0) {
    *unaff_ESI = *unaff_ESI | 2;
  }
  return;
}



void FUN_009c74d0(HWND param_1,WPARAM param_2)

{
  uint uVar1;
  int iVar2;
  LRESULT LVar3;
  uint *unaff_ESI;
  int unaff_EDI;
  undefined4 local_2c;
  uint uStack_28;
  
  _memset(unaff_ESI,0,0x2c);
  if ((*(byte *)(unaff_EDI + 8) & 2) != 0) {
    *unaff_ESI = *unaff_ESI | 4;
    if (*(uint *)(unaff_EDI + 0x34) < 8) {
      uVar1 = unaff_EDI + 0x20;
    }
    else {
      uVar1 = *(uint *)(unaff_EDI + 0x20);
    }
    unaff_ESI[3] = uVar1;
  }
  if ((*(byte *)(unaff_EDI + 8) & 0x40) != 0) {
    *unaff_ESI = *unaff_ESI | 1;
    iVar2 = *(int *)(unaff_EDI + 0x48);
    if (iVar2 == 0) {
      unaff_ESI[1] = 0;
    }
    else if (iVar2 == 1) {
      unaff_ESI[1] = 1;
    }
    else if (iVar2 == 2) {
      unaff_ESI[1] = 2;
    }
  }
  if ((*(byte *)(unaff_EDI + 8) & 0x20) != 0) {
    *unaff_ESI = *unaff_ESI | 2;
    uVar1 = *(uint *)(unaff_EDI + 0x4c);
    if (uVar1 == 0xffffffff) {
      unaff_ESI[2] = 0xffffffff;
    }
    else if (uVar1 == 0xfffffffe) {
      unaff_ESI[2] = 0xfffffffe;
    }
    else {
      unaff_ESI[2] = uVar1;
    }
  }
  if ((*(byte *)(unaff_EDI + 8) & 4) != 0) {
    iVar2 = FUN_008fc6f0();
    if (0x1d5 < iVar2) {
      *unaff_ESI = *unaff_ESI | 0x10;
      if (*(int *)(unaff_EDI + 0x40) != -1) {
        if ((*unaff_ESI & 1) == 0) {
          _memset(&local_2c,0,0x2c);
          local_2c = 1;
          LVar3 = SendMessageW(param_1,0x105f,param_2,(LPARAM)&local_2c);
          if (LVar3 != 0) {
            unaff_ESI[1] = uStack_28;
          }
          *unaff_ESI = *unaff_ESI | 1;
        }
        unaff_ESI[1] = unaff_ESI[1] | 0x1800;
      }
      unaff_ESI[6] = *(uint *)(unaff_EDI + 0x40);
    }
  }
  return;
}



LRESULT __thiscall FUN_009c75c0(int param_1_00,undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *pvVar3;
  undefined4 uVar4;
  LRESULT LVar5;
  LRESULT LVar6;
  undefined4 *puVar7;
  uint local_3c [8];
  undefined4 *local_1c;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((*(uint *)(param_1_00 + 0xe0) >> 9 & 1) != 0)) {
    FUN_00840480("..\\..\\src\\msw\\listctrl.cpp",0x679,"wxListCtrl::InsertItem","!IsVirtual()",
                 L"can\'t be used with virtual controls");
  }
  puVar1 = param_1;
  FUN_009c73d0();
  local_3c[0] = local_3c[0] & 0xfffffffb;
  if (((*(byte *)(puVar1 + 2) & 8) != 0) || (puVar1[0x14] != 0)) {
    local_3c[0] = local_3c[0] | 4;
    puVar2 = (undefined4 *)operator_new(8);
    puVar7 = (undefined4 *)0x0;
    if (puVar2 != (undefined4 *)0x0) {
      *puVar2 = 0;
      puVar2[1] = 0;
      puVar7 = puVar2;
    }
    param_1 = puVar7;
    FUN_00850560(&param_1);
    if ((*(byte *)(puVar1 + 2) & 8) != 0) {
      puVar7[1] = puVar1[0x11];
    }
    local_1c = puVar7;
    if (puVar1[0x14] != 0) {
      pvVar3 = operator_new(0x30);
      if (pvVar3 == (void *)0x0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_009b3b50(puVar1[0x14]);
      }
      *puVar7 = uVar4;
      *(undefined *)(param_1_00 + 0x1bc) = 1;
    }
  }
  LVar5 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x104d,0,(LPARAM)local_3c);
  if (LVar5 != -1) {
    *(int *)(param_1_00 + 0x1ac) = *(int *)(param_1_00 + 0x1ac) + 1;
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      LVar6 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1004,0,0);
      if (*(int *)(param_1_00 + 0x1ac) != LVar6) {
        FUN_00840480("..\\..\\src\\msw\\listctrl.cpp",0x69f,"wxListCtrl::InsertItem",
                     "m_count == ListView_GetItemCount(GetHwnd())",
                     L"m_count should match ListView_GetItemCount");
      }
    }
    return LVar5;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\msw\\listctrl.cpp",0x69b,"wxListCtrl::InsertItem","rv != -1",
                 "failed to insert an item in wxListCtrl");
  }
  return -1;
}



int __fastcall FUN_009c7740(int param_1)

{
  uint uVar1;
  LRESULT LVar2;
  void *pvVar3;
  undefined4 uVar4;
  int iVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  iVar5 = *(int *)(param_1 + 0x194);
  if ((iVar5 == 0) || (*(int *)(iVar5 + 0x13c) == 0)) {
    LVar2 = SendMessageW(*(HWND *)(param_1 + 0x13c),0x1018,0,0);
    if (LVar2 != 0) {
      if (*(int *)(param_1 + 0x194) == 0) {
        pvVar3 = operator_new(0x3b8);
        uStack_4 = 0;
        if (pvVar3 == (void *)0x0) {
          uVar4 = 0;
        }
        else {
          uVar4 = FUN_00919aa0(uVar1);
        }
        uStack_4 = 0xffffffff;
        *(undefined4 *)(param_1 + 0x194) = uVar4;
      }
      FUN_009c6200(LVar2);
    }
    iVar5 = *(int *)(param_1 + 0x194);
  }
  ExceptionList = local_c;
  return iVar5;
}



void FUN_009c7800(int param_1,short param_2)

{
  uint uVar1;
  undefined **local_c8 [11];
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined local_6c [92];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7183;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_c8;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff34;
  ExceptionList = &local_c;
  if (param_1 == 0x400) {
    FUN_0092bd60(DAT_032c1058,(int)param_2);
    local_4 = 0;
    thunk_FUN_0091c170(local_c8);
    local_4 = 0xffffffff;
    _free(local_84);
    if (7 < local_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_9c);
    }
    local_9c = local_9c & 0xffff0000;
    local_88 = 7;
    local_8c = 0;
    local_c8[0] = wxObject::vftable;
    FUN_0083e850(uVar1);
  }
  else if (param_1 == 0x200) {
    FUN_0092bd60(DAT_032bfe3c,(int)param_2);
    local_4 = 1;
    thunk_FUN_0091c170(local_6c);
    local_4 = 0xffffffff;
    FUN_00454a4e();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009c7950(int param_1_00,int param_1)

{
  int iVar1;
  HWND hWnd;
  
  iVar1 = FUN_009c7740();
  if ((iVar1 == 0) || (*(int *)(param_1 + 0x34) != 0x1b)) {
    *(undefined *)(param_1 + 0x24) = 1;
  }
  else {
    hWnd = (HWND)SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1018,0,0);
    if (hWnd != (HWND)0x0) {
      SendMessageW(hWnd,0x100,0x1b,0);
      return;
    }
  }
  return;
}



void __thiscall FUN_009c79a0(undefined4 *param_1_00,undefined4 *param_1)

{
  uint uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8b4b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  puVar3 = param_1;
  puVar5 = param_1_00 + 2;
  for (iVar4 = 0xf; iVar4 != 0; iVar4 = iVar4 + -1) {
    *puVar5 = *puVar3;
    puVar3 = puVar3 + 1;
    puVar5 = puVar5 + 1;
  }
  if (((*(byte *)param_1 & 1) != 0) && (param_1[5] != 0)) {
    pvVar2 = operator_new(4);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      if (DAT_032bd4e0 == 0) {
        DAT_032bd4e0 = FUN_00862fb0(uVar1);
      }
      puVar3 = (undefined4 *)FUN_00862440(pvVar2,param_1[5]);
    }
    *param_1_00 = puVar3;
    param_1_00[7] = *(undefined4 *)*puVar3;
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009c7a40(int **param_1)

{
  short *psVar1;
  int *piVar2;
  void **ppvVar3;
  int iVar4;
  
  piVar2 = *param_1;
  if (piVar2 == (int *)0x0) {
    return;
  }
  iVar4 = FUN_00850350();
  if (*piVar2 != iVar4) {
    psVar1 = (short *)(*piVar2 + 8);
    *psVar1 = *psVar1 + -1;
    ppvVar3 = (void **)*piVar2;
    if ((*(short *)(ppvVar3 + 2) == 0) && (ppvVar3 != (void **)0x0)) {
      if (*(char *)((int)ppvVar3 + 10) != '\0') {
        _free(*ppvVar3);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar3);
    }
    iVar4 = FUN_00850350();
    *piVar2 = iVar4;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(piVar2);
}



undefined4 __thiscall
FUN_009c7aa0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined local_60 [4];
  undefined4 local_5c;
  uint local_48;
  void *local_44;
  undefined auStack_3c [44];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be71d0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  cVar1 = FUN_00937250(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  if (cVar1 != '\0') {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    cVar1 = FUN_00937200(L"SysListView32",local_60,param_3,param_4);
    local_4 = 0xffffffff;
    _free(local_44);
    if (7 < local_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_5c,uVar2);
    }
    if (cVar1 != '\0') {
      SendMessageW((HWND)param_1_00[0x4f],0x2005,1,0);
      iVar3 = (**(code **)(*param_1_00 + 0x178))(auStack_3c);
      puStack_8 = (undefined *)0x1;
      FUN_009c60d0(iVar3 + 8);
      puStack_8 = (undefined *)0xffffffff;
      FUN_0043d9c0();
      if (((uint)param_1_00[0x38] >> 5 & 1) != 0) {
        FUN_009c5df0();
      }
      ExceptionList = pvStack_10;
      return 1;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_009c7bf0(undefined4 param_1,undefined *param_2,int param_3)

{
  uint uVar1;
  undefined **local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined local_48 [4];
  undefined2 local_44;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  int local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be71f8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_64;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  local_60 = 0;
  local_64 = wxListItem::vftable;
  local_30 = 7;
  local_34 = 0;
  local_44 = 0;
  local_2c = 0;
  local_5c = 0;
  local_58 = 0;
  local_54 = 0;
  local_50 = 0;
  local_4c = 0;
  local_20 = 0;
  local_1c = 2;
  local_18 = 0;
  local_14 = 0;
  local_4 = 0;
  local_24 = param_3;
  if (local_48 != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  local_5c = 2;
  if (-1 < param_3) {
    local_5c = 6;
  }
  local_58 = param_1;
  FUN_009c75c0(&local_64);
  local_4 = 0xffffffff;
  FUN_009b39d0(uVar1);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_009c7d40(HWND param_1)

{
  short sVar1;
  uint uVar2;
  short *psVar3;
  uint uVar4;
  short *psVar5;
  int unaff_ESI;
  uint *unaff_EDI;
  bool bVar6;
  
  if (unaff_EDI[8] != 0) {
    *(undefined4 *)(unaff_ESI + 0x44) = *(undefined4 *)(unaff_EDI[8] + 4);
  }
  *(undefined4 *)(unaff_ESI + 8) = 0;
  *(undefined4 *)(unaff_ESI + 0x14) = 0;
  *(undefined4 *)(unaff_ESI + 0x18) = 0;
  *(uint *)(unaff_ESI + 0xc) = unaff_EDI[1];
  uVar2 = *unaff_EDI;
  bVar6 = false;
  if (param_1 != (HWND)0x0) {
    bVar6 = (uVar2 & 1) == 0;
    if (bVar6) {
      uVar4 = FUN_00823c23(0x402);
      unaff_EDI[5] = uVar4;
      unaff_EDI[6] = 0x200;
    }
    *unaff_EDI = *unaff_EDI | 7;
    SendMessageW(param_1,0x104b,0,(LPARAM)unaff_EDI);
  }
  if ((*(byte *)unaff_EDI & 8) != 0) {
    *(uint *)(unaff_ESI + 8) = *(uint *)(unaff_ESI + 8) | 1;
    if (((*(byte *)(unaff_EDI + 4) & 4) != 0) &&
       (*(uint *)(unaff_ESI + 0x18) = *(uint *)(unaff_ESI + 0x18) | 8,
       (*(byte *)(unaff_EDI + 3) & 4) != 0)) {
      *(uint *)(unaff_ESI + 0x14) = *(uint *)(unaff_ESI + 0x14) | 8;
    }
    if (((*(byte *)(unaff_EDI + 4) & 8) != 0) &&
       (*(uint *)(unaff_ESI + 0x18) = *(uint *)(unaff_ESI + 0x18) | 1,
       (*(byte *)(unaff_EDI + 3) & 8) != 0)) {
      *(uint *)(unaff_ESI + 0x14) = *(uint *)(unaff_ESI + 0x14) | 1;
    }
    if (((*(byte *)(unaff_EDI + 4) & 1) != 0) &&
       (*(uint *)(unaff_ESI + 0x18) = *(uint *)(unaff_ESI + 0x18) | 2,
       (*(byte *)(unaff_EDI + 3) & 1) != 0)) {
      *(uint *)(unaff_ESI + 0x14) = *(uint *)(unaff_ESI + 0x14) | 2;
    }
    if (((*(byte *)(unaff_EDI + 4) & 2) != 0) &&
       (*(uint *)(unaff_ESI + 0x18) = *(uint *)(unaff_ESI + 0x18) | 4,
       (*(byte *)(unaff_EDI + 3) & 2) != 0)) {
      *(uint *)(unaff_ESI + 0x14) = *(uint *)(unaff_ESI + 0x14) | 4;
    }
  }
  if ((*(byte *)unaff_EDI & 1) != 0) {
    *(uint *)(unaff_ESI + 8) = *(uint *)(unaff_ESI + 8) | 2;
    psVar3 = (short *)unaff_EDI[5];
    if (psVar3 == (short *)0x0) {
      FUN_00432156();
    }
    else {
      psVar5 = psVar3;
      do {
        sVar1 = *psVar5;
        psVar5 = psVar5 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign(psVar3,(int)psVar5 - (int)(psVar3 + 1) >> 1);
    }
  }
  if ((*(byte *)unaff_EDI & 2) != 0) {
    *(uint *)(unaff_ESI + 8) = *(uint *)(unaff_ESI + 8) | 4;
    *(uint *)(unaff_ESI + 0x40) = unaff_EDI[7];
  }
  if ((*(byte *)unaff_EDI & 4) != 0) {
    *(uint *)(unaff_ESI + 8) = *(uint *)(unaff_ESI + 8) | 8;
  }
  if ((*unaff_EDI & 0x1000) != 0) {
    *(uint *)(unaff_ESI + 8) = *(uint *)(unaff_ESI + 8) | 0x10;
  }
  *(uint *)(unaff_ESI + 0x10) = unaff_EDI[2];
  if (!bVar6) {
    *unaff_EDI = uVar2;
    return;
  }
  if (unaff_EDI[5] == 0) {
    *unaff_EDI = uVar2;
    return;
  }
  FUN_00a3f66c(unaff_EDI[5]);
  *unaff_EDI = uVar2;
  return;
}



void __thiscall
FUN_009c7ea0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  FUN_00820e3f(param_3,param_1,2);
  FUN_00820e3f(param_2,param_1,1);
  uVar1 = FUN_008854f0(param_3,param_1);
  FUN_0083fe90(param_1_00,uVar1);
  return;
}



int FUN_009c7ef0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  
  iVar1 = FUN_00920a90(param_2,&param_1,param_3);
  return -iVar1;
}



uint FUN_009c7f10(uint param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  char cVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdd766;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_00936390();
  uVar3 = uVar1 | 0x48;
  cVar4 = (param_1 & 4) != 0;
  if ((param_1 & 8) != 0) {
    uVar3 = uVar1 | 0x4a;
    cVar4 = cVar4 + '\x01';
  }
  if ((param_1 & 0x10) != 0) {
    uVar3 = uVar3 | 3;
    cVar4 = cVar4 + '\x01';
  }
  if ((param_1 & 0x20) != 0) {
    uVar3 = uVar3 | 1;
    cVar4 = cVar4 + '\x01';
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (cVar4 != '\x01')) {
    FUN_00840480();
  }
  if ((char)param_1 < '\0') {
    uVar3 = uVar3 | 0x800;
  }
  if ((param_1 & 0x100) != 0) {
    uVar3 = uVar3 | 0x100;
  }
  if ((param_1 & 0x1000) != 0) {
    uVar3 = uVar3 | 0x8000;
  }
  if ((param_1 & 0x800) != 0) {
    uVar3 = uVar3 | 0x4000;
  }
  if ((param_1 & 0x400) != 0) {
    uVar3 = uVar3 | 0x200;
  }
  if ((param_1 & 0x2000) != 0) {
    uVar3 = uVar3 | 4;
  }
  if ((param_1 & 0x4000) == 0) {
    if ((param_1 & 0x8000) != 0) {
      uVar3 = uVar3 | 0x20;
    }
  }
  else {
    uVar3 = uVar3 | 0x10;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((param_1 & 0x8000) != 0)) {
      FUN_00840480();
    }
  }
  if ((param_1 & 0x200) != 0) {
    iVar2 = FUN_008fc6f0();
    if (iVar2 < 0x1d6) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar4 = FUN_00846b30(2);
      if (cVar4 != '\0') {
        FUN_004325b6();
        local_4 = 0;
        FUN_0043c211();
        local_4 = CONCAT31(local_4._1_3_,1);
        iVar2 = FUN_0084a340();
        if (iVar2 == 0) {
          FUN_0084d360();
        }
        else {
          FUN_0084f210();
        }
        FUN_008433c0();
        local_4._0_1_ = 2;
        FUN_008423d0();
        local_4._0_1_ = 3;
        FUN_009c7ea0();
        local_4._0_1_ = 2;
        FUN_00842440();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
    }
    uVar3 = uVar3 | 0x1000;
  }
  ExceptionList = local_c;
  return uVar3;
}



bool __thiscall FUN_009c81a0(int param_1_00,int param_1)

{
  uint uVar1;
  char cVar2;
  LRESULT LVar3;
  int iVar4;
  uint local_f4;
  undefined4 local_f0;
  undefined4 local_ec;
  uint uStack_e4;
  int local_e0;
  undefined4 uStack_dc;
  uint uStack_b4;
  undefined4 uStack_a4;
  uint uStack_a0;
  void *pvStack_9c;
  uint uStack_68;
  void *pvStack_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be7246;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  _memset(&local_f4,0,0x3c);
  local_f0 = *(undefined4 *)(param_1 + 0xc);
  local_ec = *(undefined4 *)(param_1 + 0x10);
  if ((*(byte *)(param_1 + 8) & 2) == 0) {
    local_e0 = 0;
  }
  else {
    local_f4 = local_f4 | 1;
    local_e0 = FUN_00823c23();
    uStack_dc = 0x200;
  }
  uVar1 = *(uint *)(param_1 + 8);
  if ((uVar1 & 8) != 0) {
    local_f4 = local_f4 | 4;
  }
  if ((uVar1 & 4) != 0) {
    local_f4 = local_f4 | 2;
  }
  if ((uVar1 & 1) != 0) {
    uVar1 = *(uint *)(param_1 + 0x18);
    local_f4 = local_f4 | 8;
    if ((uVar1 & 8) != 0) {
      uStack_e4 = uStack_e4 | 4;
    }
    if ((uVar1 & 1) != 0) {
      uStack_e4 = uStack_e4 | 8;
    }
    if ((uVar1 & 2) != 0) {
      uStack_e4 = uStack_e4 | 1;
    }
    if ((uVar1 & 4) != 0) {
      uStack_e4 = uStack_e4 | 2;
    }
  }
  LVar3 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x104b,0,(LPARAM)&local_f4);
  if (LVar3 != 0) {
    FUN_009c7d40();
  }
  else {
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_008423d0();
      uStack_4._0_1_ = 3;
      FUN_00820e3f();
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4._0_1_ = 2;
      FUN_00842440();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      _free(pvStack_9c);
      if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_a0 = 7;
      uStack_a4 = 0;
      uStack_b4 = uStack_b4 & 0xffff0000;
      _free(pvStack_64);
      if (7 < uStack_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  if (local_e0 != 0) {
    FUN_00a3f66c();
  }
  ExceptionList = local_c;
  return LVar3 != 0;
}



undefined4 __thiscall FUN_009c8450(int param_1_00,int param_1)

{
  char cVar1;
  int *piVar2;
  void *pvVar3;
  int iVar4;
  LRESULT LVar5;
  uint local_98;
  WPARAM local_94;
  int *local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7283;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*(int *)(param_1 + 0xc) < 0) || (*(int *)(param_1_00 + 0x1ac) <= *(int *)(param_1 + 0xc))) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    ExceptionList = local_c;
    return 0;
  }
  FUN_009c73d0();
  local_98 = local_98 & 0xfffffffb;
  if ((*(int *)(param_1 + 0x50) != 0) || ((*(byte *)(param_1 + 8) & 8) != 0)) {
    piVar2 = (int *)FUN_009c6090();
    if (piVar2 == (int *)0x0) {
      piVar2 = (int *)operator_new(8);
      if (piVar2 == (int *)0x0) {
        piVar2 = (int *)0x0;
      }
      else {
        *piVar2 = 0;
        piVar2[1] = 0;
      }
      FUN_00850560();
      local_98 = local_98 | 4;
      local_78 = piVar2;
    }
    if ((*(byte *)(param_1 + 8) & 8) != 0) {
      piVar2[1] = *(int *)(param_1 + 0x44);
    }
    if (*(int *)(param_1 + 0x50) != 0) {
      if (*piVar2 == 0) {
        pvVar3 = operator_new(0x30);
        if (pvVar3 == (void *)0x0) {
          iVar4 = 0;
        }
        else {
          iVar4 = FUN_009b3b50();
        }
        *piVar2 = iVar4;
      }
      else {
        FUN_009c6680();
      }
    }
  }
  if ((local_98 != 0) &&
     (LVar5 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x104c,0,(LPARAM)&local_98), LVar5 == 0)) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 == '\0') {
      ExceptionList = local_c;
      return 0;
    }
    FUN_0081c0f1();
    local_4 = 0;
    FUN_008423d0();
    local_4._0_1_ = 1;
    FUN_00840b80();
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_00842440();
    local_4 = 0xffffffff;
    FUN_0081b5bc();
    ExceptionList = local_c;
    return 0;
  }
  if (*(int *)(param_1 + 0x50) == 0) {
    if ((*(uint *)(param_1 + 8) >> 2 & 1) == 0) {
      ExceptionList = local_c;
      return 1;
    }
  }
  else {
    *(undefined *)(param_1_00 + 0x1bc) = 1;
  }
  SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1015,local_94,local_94);
  ExceptionList = local_c;
  return 1;
}



void FUN_009c8680(undefined4 param_1,undefined4 param_2,undefined *param_3,int param_4)

{
  uint uVar1;
  undefined **local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined local_48 [4];
  undefined2 local_44;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  int local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be72b8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_64;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  local_60 = 0;
  local_64 = wxListItem::vftable;
  local_30 = 7;
  local_34 = 0;
  local_44 = 0;
  local_2c = 0;
  local_5c = 0;
  local_58 = 0;
  local_54 = 0;
  local_50 = 0;
  local_4c = 0;
  local_24 = -1;
  local_20 = 0;
  local_1c = 2;
  local_18 = 0;
  local_14 = 0;
  local_4 = 0;
  if (local_48 != param_3) {
    FID_conflict_assign(param_3,0,0xffffffff);
  }
  local_58 = param_1;
  local_5c = 2;
  local_54 = param_2;
  if (-1 < param_4) {
    local_24 = param_4;
    local_5c = 6;
  }
  FUN_009c8450(&local_64);
  local_4 = 0xffffffff;
  FUN_009b39d0(uVar1);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_009c8790(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  uint uVar2;
  undefined **local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined2 local_44;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be72b8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_64;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  local_60 = 0;
  local_64 = wxListItem::vftable;
  local_30 = 7;
  local_34 = 0;
  local_44 = 0;
  local_2c = 0;
  local_54 = 0;
  local_50 = 0;
  local_24 = 0xffffffff;
  local_20 = 0;
  local_1c = 2;
  local_18 = 0;
  local_14 = 0;
  local_4 = 0;
  local_4c = param_2;
  local_5c = 1;
  local_58 = param_1;
  cVar1 = FUN_009c81a0(&local_64);
  local_4 = 0xffffffff;
  if (cVar1 == '\0') {
    FUN_009b39d0(uVar2);
  }
  else {
    FUN_009b39d0(uVar2);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_009c8870(int param_1_00,WPARAM param_1,byte param_2,uint param_3)

{
  bool bVar1;
  char cVar2;
  WPARAM wParam;
  LRESULT LVar3;
  undefined4 uVar4;
  uint uVar5;
  undefined auStack_ec [8];
  undefined4 uStack_e4;
  undefined *puStack_e0;
  char *pcStack_dc;
  undefined local_b0 [12];
  uint local_a4;
  uint local_a0;
  undefined *local_74;
  undefined local_70 [100];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be72f0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  _memset(local_b0,0,0x3c);
  if (((param_3 & 8) != 0) && (local_a0 = local_a0 | 4, (param_2 & 8) != 0)) {
    local_a4 = local_a4 | 4;
  }
  if (((param_3 & 1) != 0) && (local_a0 = local_a0 | 8, (param_2 & 1) != 0)) {
    local_a4 = local_a4 | 8;
  }
  if (((param_3 & 2) != 0) && (local_a0 = local_a0 | 1, (param_2 & 2) != 0)) {
    local_a4 = local_a4 | 1;
  }
  if (((param_3 & 4) != 0) && (local_a0 = local_a0 | 2, (param_2 & 4) != 0)) {
    local_a4 = local_a4 | 2;
  }
  if (((param_3 & 2) == 0) || (bVar1 = true, (param_2 & 2) == 0)) {
    bVar1 = false;
  }
  if (((*(uint *)(param_1_00 + 0xe0) >> 9 & 1) == 0) || (!bVar1)) {
    wParam = 0xffffffff;
  }
  else {
    pcStack_dc = (char *)0x9c8955;
    wParam = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x100c,0xffffffff,1);
  }
  pcStack_dc = (char *)0x9c8977;
  LVar3 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x102b,param_1,(LPARAM)local_b0);
  if (LVar3 == 0) {
    local_74 = auStack_ec;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 != '\0') {
      FUN_0081c0f1();
      pcStack_dc = (char *)0x6;
      local_4 = 0;
      puStack_e0 = (undefined *)0x9c89df;
      FUN_008423d0();
      local_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      pcStack_dc = "..\\..\\src\\msw\\listctrl.cpp";
      puStack_e0 = local_70;
      uStack_e4 = 0x9c8a19;
      FUN_00847d90();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    uVar4 = 0;
  }
  else {
    if (wParam != 0xffffffff) {
      uVar5 = FUN_009c8790();
      if ((uVar5 & 4) == 0) {
        pcStack_dc = (char *)0x9c8a65;
        SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1015,wParam,wParam);
      }
    }
    if ((bVar1) && ((*(uint *)(param_1_00 + 0xe0) >> 0xd & 1) == 0)) {
      pcStack_dc = (char *)0x9c8a8b;
      SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1043,0,param_1);
    }
    uVar4 = 1;
  }
  ExceptionList = local_c;
  return uVar4;
}



void FUN_009c8ab0(int param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  uint uVar2;
  undefined4 local_6c;
  int local_68;
  undefined **local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined local_48 [4];
  undefined2 local_44;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00be7341;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_6c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  local_6c = 0;
  local_44 = 0;
  local_68 = param_1;
  local_60 = 0;
  local_64 = wxListItem::vftable;
  local_30 = 7;
  local_34 = 0;
  local_2c = 0;
  local_50 = 0;
  local_4c = 0;
  local_24 = 0xffffffff;
  local_20 = 0;
  local_1c = 2;
  local_18 = 0;
  local_14 = 0;
  local_58 = param_2;
  local_5c = 2;
  local_4 = 1;
  local_54 = param_3;
  cVar1 = FUN_009c81a0(&local_64);
  if (cVar1 == '\0') {
    FUN_004325b6(PTR_DAT_03236318);
  }
  else {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_48,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
  }
  local_6c = 1;
  local_4 = local_4 & 0xffffff00;
  FUN_009b39d0(uVar2);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_009c8bd0(undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined **local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined2 local_44;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be72b8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_64;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  local_60 = 0;
  local_64 = wxListItem::vftable;
  local_30 = 7;
  local_34 = 0;
  local_44 = 0;
  local_2c = 0;
  local_54 = 0;
  local_50 = 0;
  local_4c = 0;
  local_24 = 0xffffffff;
  local_20 = 0;
  local_1c = 2;
  local_18 = 0;
  local_14 = 0;
  local_4 = 0;
  local_5c = 8;
  local_58 = param_1;
  cVar1 = FUN_009c81a0(&local_64);
  local_4 = 0xffffffff;
  if (cVar1 == '\0') {
    FUN_009b39d0(uVar2);
  }
  else {
    FUN_009b39d0(uVar2);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



LRESULT __thiscall FUN_009c8cb0(int param_1_00,WPARAM param_1)

{
  char cVar1;
  LRESULT LVar2;
  uint local_88 [2];
  undefined4 local_80;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be7383;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009c74d0();
  if ((local_88[0] & 2) == 0) {
    local_88[0] = local_88[0] | 2;
    local_80 = 0x50;
  }
  LVar2 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1061,param_1,(LPARAM)local_88);
  if (LVar2 == -1) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      FUN_0083e8f0();
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  else {
    *(int *)(param_1_00 + 0x1a8) = *(int *)(param_1_00 + 0x1a8) + 1;
  }
  ExceptionList = local_c;
  return LVar2;
}



void FUN_009c8e20(undefined4 param_1,undefined *param_2,undefined4 param_3,int param_4)

{
  uint uVar1;
  undefined **local_64;
  undefined4 local_60;
  uint local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined local_48 [4];
  undefined2 local_44;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  int local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be72b8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_64;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  local_60 = 0;
  local_64 = wxListItem::vftable;
  local_30 = 7;
  local_34 = 0;
  local_44 = 0;
  local_2c = 0;
  local_58 = 0;
  local_54 = 0;
  local_50 = 0;
  local_4c = 0;
  local_24 = 0xffffffff;
  local_20 = 0;
  local_1c = 2;
  local_18 = 0;
  local_14 = 0;
  local_4 = 0;
  local_5c = 0x42;
  if (local_48 != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  if (-1 < param_4) {
    local_5c = local_5c | 0x20;
    local_18 = param_4;
  }
  local_1c = param_3;
  FUN_009c8cb0(param_1,&local_64);
  local_4 = 0xffffffff;
  FUN_009b39d0(uVar1);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



WPARAM FUN_009c8f30(HWND *param_1,LPPOINT param_2)

{
  POINT pt;
  char cVar1;
  BOOL BVar2;
  HWND hWnd;
  LRESULT LVar3;
  LRESULT LVar4;
  WPARAM wParam;
  tagPOINT local_88;
  RECT aRStack_80 [7];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be73d0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0090d690();
  local_88.x = param_2->x;
  local_88.y = param_2->y;
  BVar2 = ScreenToClient(*param_1,&local_88);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4 = 0;
      FUN_008423d0();
      local_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  hWnd = GetParent(*param_1);
  BVar2 = ScreenToClient(hWnd,param_2);
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4 = 2;
      FUN_008423d0();
      local_4._0_1_ = 3;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  LVar3 = SendMessageW(*param_1,0x1200,0,0);
  wParam = 0;
  if (0 < LVar3) {
    do {
      LVar4 = SendMessageW(*param_1,0x1207,wParam,(LPARAM)aRStack_80);
      if ((LVar4 != 0) &&
         (pt.y = local_88.y, pt.x = local_88.x, BVar2 = PtInRect(aRStack_80,pt), BVar2 != 0)) {
        ExceptionList = local_c;
        return wParam;
      }
      wParam = wParam + 1;
    } while ((int)wParam < LVar3);
  }
  ExceptionList = local_c;
  return 0xffffffff;
}



void __thiscall FUN_009c91a0(int *param_1_00,undefined4 param_1,int *param_2,uint *param_3)

{
  short sVar1;
  char cVar2;
  LRESULT LVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  uint *puVar7;
  int *piVar8;
  uint uVar9;
  int *piVar10;
  undefined auStack_2a0 [12];
  undefined4 uStack_294;
  char *pcStack_290;
  uint local_268;
  uint *local_264;
  char cStack_25d;
  uint uStack_25c;
  uint uStack_258;
  tagPOINT tStack_254;
  uint uStack_24c;
  int iStack_248;
  undefined4 uStack_244;
  undefined4 uStack_240;
  undefined *puStack_23c;
  int iStack_238;
  undefined4 uStack_230;
  int *piStack_22c;
  int *local_114;
  uint uStack_110;
  byte bStack_c0;
  int iStack_bc;
  uint uStack_b8;
  int iStack_b4;
  int iStack_b0;
  undefined *puStack_ac;
  int iStack_a8;
  int iStack_9c;
  int iStack_98;
  undefined4 uStack_60;
  undefined4 uStack_58;
  undefined uStack_50;
  int aiStack_4c [5];
  int iStack_38;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7458;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_268;
  ExceptionList = &local_c;
  local_264 = param_3;
  FUN_009b3aa0();
  uVar6 = DAT_032bd44c;
  local_4 = 0;
  local_268 = DAT_032bd44c;
  pcStack_290 = (char *)0x9c9237;
  local_114 = param_1_00;
  LVar3 = SendMessageW((HWND)param_1_00[0x4f],0x101f,0,0);
  if (*param_2 == LVar3) {
    uVar9 = param_2[2];
    iStack_b4 = -1;
    if (uVar9 < 0xfffffec1) {
      if (uVar9 != 0xfffffec0) {
        if (uVar9 == 0xfffffeb7) {
          local_4 = 0xffffffff;
          FUN_009b3c00();
          goto LAB_009c96ee;
        }
        if (uVar9 != 0xfffffeb9) {
          if (uVar9 != 0xfffffeba) goto LAB_009c9282;
          goto LAB_009c9388;
        }
        goto LAB_009c93cf;
      }
LAB_009c9392:
      if (uVar6 == DAT_032bd44c) {
        if ((((byte *)param_2[5] == (byte *)0x0) || ((*(byte *)param_2[5] & 1) == 0)) ||
           (iVar4 = FUN_009c6020(), *(int *)(param_2[5] + 4) == iVar4)) goto LAB_009c9282;
        local_268 = DAT_032e9944;
        uVar6 = DAT_032e9944;
        goto LAB_009c93cf;
      }
    }
    else {
      if (uVar9 != 0xfffffecd) {
        if (uVar9 != 0xfffffece) {
          if (uVar9 == 0xfffffffb) {
            local_268 = DAT_032e993c;
            iStack_b0 = FUN_009c8f30();
            puStack_ac = puStack_23c;
            iStack_a8 = iStack_238;
            goto LAB_009c9313;
          }
          goto LAB_009c9282;
        }
LAB_009c9388:
        local_268 = DAT_032e9940;
        uVar6 = DAT_032e9940;
        goto LAB_009c9392;
      }
LAB_009c93cf:
      if (uVar6 == DAT_032bd44c) {
        local_268 = DAT_032e9948;
      }
    }
    uStack_58 = *(undefined4 *)(param_2[5] + 4);
    iStack_b0 = param_2[3];
    goto LAB_009c9313;
  }
  if (*param_2 != param_1_00[0x4f]) {
LAB_009c96d5:
    local_4 = 0xffffffff;
    FUN_009b3c00();
    goto LAB_009c96ee;
  }
  iVar4 = param_2[3];
  puVar7 = (uint *)(param_2 + 3);
  if (((-1 < iVar4) && (iVar4 < param_1_00[0x6b])) && (iVar5 = FUN_009c6090(), iVar5 != 0)) {
    uStack_60 = *(undefined4 *)(iVar5 + 4);
  }
  iVar5 = param_2[2];
  switch(iVar5) {
  case -0xb3:
    if (((uint)param_1_00[0x38] >> 9 & 1) == 0) goto LAB_009c9282;
    *local_264 = 0xffffffff;
    if ((*(byte *)(param_2 + 4) & 2) == 0) goto LAB_009c96d5;
    uStack_25c = param_2[5];
    uStack_258 = FUN_00819224();
    uVar6 = *puVar7;
    local_268 = param_1_00[0x6b];
    if (((int)uVar6 < 0) || ((int)local_268 <= (int)uVar6)) {
      if (uVar6 != local_268) {
        puStack_23c = auStack_2a0;
        FUN_0043c211(&DAT_00d25fa0);
        cVar2 = FUN_00846b30(6);
        if (cVar2 != '\0') {
          FUN_0081c0f1();
          pcStack_290 = (char *)0x6;
          local_4._0_1_ = 5;
          uStack_294 = 0x9c9a2d;
          FUN_008423d0();
          local_4._0_1_ = 6;
          FUN_009c7ea0();
          local_4._0_1_ = 5;
          FUN_00842440();
          local_4 = (uint)local_4._1_3_ << 8;
          FUN_0081b5bc();
        }
      }
      uVar6 = 0;
    }
    FUN_008192d1();
    FUN_009c8ab0();
    local_4._0_1_ = 7;
    iVar4 = FUN_009c7ef0();
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0040159c();
    uVar9 = uVar6;
    while (iVar4 != 0) {
      uVar9 = uVar9 + 1;
      if (uVar9 == local_268) {
        uVar9 = 0;
      }
      if ((uVar9 == uVar6) ||
         (((int)(uVar9 - uVar6) % 1000 == 0 && (iVar4 = FUN_0081a158(), 500 < iVar4))))
      goto LAB_009c9b61;
      FUN_009c8ab0();
      local_4._0_1_ = 7;
      iVar4 = FUN_009c7ef0();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
    }
    *local_264 = uVar9;
    FUN_009c8870();
    FUN_009c6250();
    goto LAB_009c9b61;
  default:
    goto LAB_009c9282;
  case -0xb1:
    if (((uint)param_1_00[0x38] >> 9 & 1) != 0) {
      if ((*(byte *)puVar7 & 1) != 0) {
        (**(code **)(*param_1_00 + 0x358))();
        FUN_00432231();
        thunk_FUN_00432242();
        FUN_00842f70();
        FUN_00432214();
        FUN_0040159c();
      }
      if ((*(byte *)puVar7 & 2) != 0) {
        iVar4 = (**(code **)(*param_1_00 + 0x360))();
        param_2[10] = iVar4;
      }
      if ((*(byte *)puVar7 & 8) != 0) {
        param_2[7] = 0;
      }
      goto LAB_009c9b61;
    }
    goto LAB_009c9282;
  case -0xb0:
  case -0x6a:
    uStack_230 = 0;
    piStack_22c = (int *)0x0;
    local_4 = CONCAT31(local_4._1_3_,2);
    if (iVar5 == -0x6a) {
      FUN_009c79a0();
    }
    else {
      FUN_009c5b60();
    }
    piVar8 = piStack_22c;
    piVar10 = aiStack_4c;
    for (iVar4 = 0xf; iVar4 != 0; iVar4 = iVar4 + -1) {
      *piVar10 = *piVar8;
      piVar8 = piVar8 + 1;
      piVar10 = piVar10 + 1;
    }
    if ((iStack_38 == 0) || (aiStack_4c[1] == -1)) {
      FUN_009c5eb0();
      uStack_50 = 1;
    }
    local_268 = DAT_032e991c;
    FUN_009c7d40();
    iStack_b4 = iStack_98;
    local_4 = local_4 & 0xffffff00;
    FUN_009c7a40();
    break;
  case -0xaf:
  case -0x69:
    uStack_230 = 0;
    piStack_22c = (int *)0x0;
    local_4 = CONCAT31(local_4._1_3_,1);
    if (iVar5 == -0x69) {
      FUN_009c79a0();
    }
    else {
      FUN_009c5b60();
    }
    local_268 = DAT_032e9918;
    FUN_009c7d40();
    iStack_b4 = iStack_98;
    local_4 = local_4 & 0xffffff00;
    FUN_009c7a40();
    break;
  case -0x9b:
    sVar1 = *(short *)puVar7;
    pcStack_290 = (char *)0x9c9731;
    LVar3 = SendMessageW((HWND)param_1_00[0x4f],0x100c,0xffffffff,2);
    if ((LVar3 == -1) ||
       (((sVar1 != 0xd && (sVar1 != 0x20)) || (cVar2 = FUN_009c5dc0(), cVar2 != '\0')))) {
      local_268 = DAT_032e9930;
      iStack_bc = FUN_0090da40();
      if (iStack_bc == 0) goto LAB_009c96d5;
    }
    else {
      local_268 = DAT_032e9954;
    }
    iStack_b4 = LVar3;
    iStack_98 = LVar3;
    if (LVar3 != -1) {
      FUN_009c8ab0();
      local_4._0_1_ = 3;
      FUN_0043261a();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0040159c();
      uStack_60 = FUN_009c8bd0();
    }
    break;
  case -0x71:
    uVar6 = *puVar7;
    iVar4 = param_2[4];
    local_268 = DAT_032e995c;
    if (iVar4 < (int)uVar6) goto LAB_009c96d5;
    uStack_b8 = uVar6;
    iStack_b4 = iVar4;
    if (param_1_00[0x6b] <= iVar4) {
      iStack_b4 = param_1_00[0x6b] + -1;
    }
    break;
  case -0x6f:
    local_268 = DAT_032e9914;
  case -0x6d:
    if (local_268 == DAT_032bd44c) {
      local_268 = DAT_032e9910;
    }
    puStack_ac = (undefined *)param_2[8];
    iStack_a8 = param_2[9];
    iStack_b4 = iVar4;
    break;
  case -0x6c:
    iStack_b0 = param_2[4];
    local_268 = DAT_032e9938;
    iStack_b4 = -1;
    break;
  case -0x68:
    local_268 = DAT_032e9924;
    iStack_b4 = -1;
    break;
  case -0x67:
    if (param_1_00[0x6b] == 0) goto LAB_009c96d5;
    local_268 = DAT_032e9920;
    iStack_b4 = iVar4;
    break;
  case -0x66:
    local_268 = DAT_032e9934;
    iStack_b4 = iVar4;
    break;
  case -0x65:
    if (((*(byte *)(param_2 + 7) & 8) != 0) && (iVar4 != -1)) {
      uStack_258 = param_2[6];
      uStack_25c = param_2[5];
      iStack_9c = 0xe;
      iStack_98 = iVar4;
      FUN_009c81a0();
      if (((uStack_258 & 1) == 0) && ((uStack_25c & 1) != 0)) {
        local_268 = DAT_032e9958;
        iStack_b4 = iVar4;
      }
      uVar6 = uStack_25c & 2;
      if (uVar6 != (uStack_258 & 2)) {
        if (local_268 != DAT_032bd44c) {
          uStack_110 = local_268;
          FUN_0091c170();
          iVar4 = iStack_b4;
        }
        iStack_b4 = iVar4;
        puVar7 = &DAT_032e9928;
        if (uVar6 == 0) {
          puVar7 = &DAT_032e992c;
        }
        local_268 = *puVar7;
      }
    }
    if (local_268 == DAT_032bd44c) goto LAB_009c96d5;
    break;
  case -0xc:
    uVar6 = FUN_009c6b30();
    *local_264 = uVar6;
    goto LAB_009c928b;
  case -5:
    cVar2 = FUN_00936930();
    if (cVar2 != '\0') goto LAB_009c9b61;
    tStack_254.x = 0;
    tStack_254.y = 0;
    uStack_24c = 0;
    iStack_248 = 0;
    uStack_244 = 0;
    uStack_240 = 0;
    FUN_0090d690();
    ScreenToClient((HWND)param_1_00[0x4f],&tStack_254);
    pcStack_290 = (char *)0x9c98d9;
    LVar3 = SendMessageW((HWND)param_1_00[0x4f],0x1012,0,(LPARAM)&tStack_254);
    if ((LVar3 != -1) && ((uStack_24c & 0xe) != 0)) {
      local_268 = DAT_032e994c;
      puStack_ac = (undefined *)tStack_254.x;
      iStack_a8 = tStack_254.y;
      iStack_b4 = iStack_248;
    }
    break;
  case -3:
    cVar2 = FUN_00936930();
    if (cVar2 != '\0') goto LAB_009c9b61;
    if (iVar4 == -1) goto LAB_009c96d5;
    local_268 = DAT_032e9954;
    iStack_b4 = iVar4;
    FUN_009c8ab0();
    local_4._0_1_ = 4;
    FUN_0043261a();
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0040159c();
    uStack_60 = FUN_009c8bd0();
  }
LAB_009c9313:
  uStack_110 = local_268;
  if ((iStack_b4 != -1) && (iStack_9c == 0)) {
    iStack_98 = iStack_b4;
    iStack_9c = 0xe;
    FUN_009c81a0();
  }
  cStack_25d = FUN_0091c170();
  switch(param_2[2]) {
  case -0xb0:
  case -0x6a:
    *local_264 = (uint)bStack_c0;
    FUN_009c5eb0();
    break;
  case -0x68:
    *local_264 = 1;
    FUN_009c6cb0();
    param_1_00[0x6b] = 0;
    break;
  case -0x67:
    local_268 = FUN_009c6090();
    if (local_268 != 0) {
      uVar6 = param_1_00[0x6c];
      uVar9 = 0;
      if (uVar6 != 0) {
        do {
          puVar7 = (uint *)FUN_009c65a0();
          if (*puVar7 == local_268) {
            FUN_009c65e0();
            FUN_009c6c70();
            break;
          }
          uVar9 = uVar9 + 1;
        } while (uVar9 < uVar6);
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_268 != 0)) {
        pcStack_290 = "..\\..\\src\\msw\\listctrl.cpp";
        uStack_294 = 0x9c9ce8;
        FUN_008402e0();
      }
    }
  default:
    if (cStack_25d != '\0') {
      *local_264 = (uint)(bStack_c0 == 0);
    }
LAB_009c928b:
    local_4 = 0xffffffff;
    FUN_009b3c00();
    goto LAB_009c96ee;
  }
LAB_009c9b61:
  local_4 = 0xffffffff;
  FUN_009b3c00();
LAB_009c96ee:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
LAB_009c9282:
  FUN_00936930();
  goto LAB_009c928b;
}



undefined ** FUN_009c9e80(void)

{
  return &PTR_u_wxGenericCollapsiblePane_0323ce2c;
}



undefined ** FUN_009c9e90(void)

{
  return &PTR_u_wxCollapsiblePaneEvent_0323ce44;
}



undefined ** FUN_009c9ea0(void)

{
  return &PTR_PTR_00d90184;
}



undefined * FUN_009c9eb0(void)

{
  return &DAT_032e9e38;
}



void __fastcall FUN_009c9ec0(int param_1)

{
  *(undefined4 *)(param_1 + 0x1a4) = 0;
  *(undefined4 *)(param_1 + 0x1ac) = 0;
  *(undefined4 *)(param_1 + 0x1a8) = 0;
  *(undefined4 *)(param_1 + 0x1b0) = 0;
  return;
}



void __thiscall FUN_009c9ef0(int *param_1_00,undefined4 *param_1)

{
  char cVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined4 uVar4;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  
  uStack_14 = param_1[1];
  uStack_18 = *param_1;
  uStack_10 = 0;
  uStack_1c = 0xffffffff;
  uVar4 = 0xffffffff;
  (**(code **)(*param_1_00 + 0x288))(0xffffffff);
  if (((uint)param_1_00[0x38] >> 1 & 1) == 0) {
    uVar2 = FUN_0091cdc0(param_1_00,&PTR_u_wxTopLevelWindow_03239ae4);
    piVar3 = (int *)FUN_0048a085(uVar2);
    if ((piVar3 != (int *)0x0) && (piVar3[0x35] != 0)) {
      FUN_00931860(&uStack_1c,piVar3);
      (**(code **)(*piVar3 + 0x9c))(&uStack_1c);
      cVar1 = (**(code **)(*piVar3 + 0x34c))();
      if (cVar1 == '\0') {
        (**(code **)(*piVar3 + 0x28c))(uVar4,uStack_1c);
      }
    }
  }
  return;
}



undefined4 __fastcall FUN_009c9f90(int param_1)

{
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8 [2];
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x1a4) == 0)) {
    FUN_008402e0("..\\..\\src\\generic\\collpaneg.cpp",0x100,"wxGenericCollapsiblePane::GetBorder",
                 "m_pButton",0);
  }
  local_10 = 2;
  local_c = 0;
  FUN_0091f410(local_8,&local_10);
  return local_8[0];
}



int * __thiscall FUN_009ca000(int *param_1_00,int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  undefined auStack_8 [8];
  
  FUN_0092fff0(param_1);
  cVar1 = (**(code **)(*param_1_00 + 0x35c))();
  if (cVar1 == '\0') {
    iVar3 = *param_1;
    piVar2 = (int *)FUN_0091b530(auStack_8);
    iVar4 = *piVar2;
    if (*piVar2 < iVar3) {
      iVar4 = iVar3;
    }
    *param_1 = iVar4;
    iVar3 = FUN_0091b530(auStack_8);
    iVar3 = *(int *)(iVar3 + 4);
    iVar4 = FUN_009c9f90();
    param_1[1] = param_1[1] + iVar4 + iVar3;
  }
  return param_1;
}



undefined4 __fastcall FUN_009ca070(int *param_1)

{
  char cVar1;
  int iVar2;
  int iVar3;
  undefined4 local_10;
  int iStack_c;
  undefined4 local_8 [2];
  
  if ((((param_1[0x69] != 0) && (param_1[0x6a] != 0)) && (param_1[0x6b] != 0)) &&
     (param_1[0x6c] != 0)) {
    FUN_004555c3(&local_10);
    iVar2 = FUN_0092fff0(local_8);
    FUN_0091aff0(0,0,local_10,*(undefined4 *)(iVar2 + 4));
    (**(code **)(*(int *)param_1[0x6c] + 0x4c))();
    cVar1 = (**(code **)(*param_1 + 0x35c))();
    if (cVar1 == '\0') {
      local_8[0] = *(undefined4 *)(param_1[0x6c] + 0x14);
      iVar2 = *(int *)(param_1[0x6c] + 0x18);
      iVar3 = FUN_009c9f90();
      iVar3 = iVar3 + iVar2;
      (**(code **)(*(int *)param_1[0x6b] + 0x288))(0,iVar3,local_10,iStack_c - iVar3,3);
      (**(code **)(*(int *)param_1[0x6b] + 0x204))();
    }
    return 1;
  }
  return 0;
}



undefined4 * FUN_009ca160(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x60);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0092bd60(DAT_032bd44c,0);
    *puVar1 = wxCollapsiblePaneEvent::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __fastcall FUN_009ca1d0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdec86;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxGenericCollapsiblePane::vftable;
  local_4 = 1;
  if (param_1[0x69] != 0) {
    FUN_0091ab40(0);
  }
  if (param_1[0x6a] != 0) {
    FUN_0091ab40(0);
  }
  if ((int *)param_1[0x6c] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x6c] + 4))(1,uVar1);
    param_1[0x6c] = 0;
  }
  _free((void *)param_1[0x74]);
  if (7 < (uint)param_1[0x73]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x6e]);
  }
  param_1[0x73] = 7;
  param_1[0x72] = 0;
  *(undefined2 *)(param_1 + 0x6e) = 0;
  local_4 = 0xffffffff;
  param_1[0x65] = wxControlContainerBase::vftable;
  FUN_0044cd6b();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009ca2c0(int *param_1,undefined4 param_2)

{
  char cVar1;
  undefined *puVar2;
  
  cVar1 = (**(code **)(*param_1 + 0x35c))();
  puVar2 = &DAT_00d90200;
  if (cVar1 == '\0') {
    puVar2 = &DAT_00d901f8;
  }
  FUN_008533d0(param_2,param_1 + 0x6d,puVar2);
  return param_2;
}



void __thiscall FUN_009ca300(int *param_1,char param_2)

{
  char cVar1;
  undefined4 uVar2;
  undefined auStack_38 [4];
  undefined auStack_34 [8];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x35c))(DAT_0323f878 ^ (uint)&stack0xffffffc4);
  if (cVar1 != param_2) {
    (**(code **)(*(int *)param_1[0x6b] + 0xcc))(param_2 == '\0');
    uVar2 = FUN_009ca2c0(auStack_34);
    puStack_8 = (undefined *)0x0;
    (**(code **)(*(int *)param_1[0x69] + 0x54))(uVar2);
    uStack_4 = 0xffffffff;
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uVar2 = FUN_0091b530(auStack_38);
    FUN_009c9ef0(uVar2);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009ca3d0(int *param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  undefined uVar3;
  undefined **ppuStack_70;
  int *piStack_6c;
  uint uStack_44;
  undefined4 uStack_34;
  uint uStack_30;
  void *pvStack_2c;
  undefined uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be74c8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&ppuStack_70;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 8) == param_1_00[0x69]) {
    iVar1 = *param_1_00;
    cVar2 = (**(code **)(iVar1 + 0x35c))(DAT_0323f878 ^ (uint)&stack0xffffff84);
    (**(code **)(iVar1 + 0x358))(cVar2 == '\0');
    iVar1 = param_1_00[0x10];
    uVar3 = (**(code **)(*param_1_00 + 0x35c))();
    FUN_0092bd60(DAT_032e9e34,iVar1);
    puStack_8 = (undefined *)0x0;
    piStack_6c = param_1_00;
    uStack_18 = uVar3;
    (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(&stack0xffffff8c);
    uStack_4 = 0xffffffff;
    _free(pvStack_2c);
    if (7 < uStack_30) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_44);
    }
    uStack_30 = 7;
    uStack_34 = 0;
    uStack_44 = uStack_44 & 0xffff0000;
    ppuStack_70 = wxObject::vftable;
    FUN_0083e850();
  }
  else {
    *(undefined *)(param_1 + 0x24) = 1;
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __fastcall FUN_009ca500(undefined4 *param_1)

{
  FUN_00975bd0();
  *param_1 = wxGenericCollapsiblePane::vftable;
  param_1[0x72] = 0;
  param_1[0x73] = 7;
  *(undefined2 *)(param_1 + 0x6e) = 0;
  param_1[0x74] = 0;
  param_1[0x69] = 0;
  param_1[0x6b] = 0;
  param_1[0x6a] = 0;
  param_1[0x6c] = 0;
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1d8);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009ca500(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



char __thiscall
FUN_009ca5c0(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  char cVar1;
  void *pvVar2;
  undefined4 uVar3;
  bool bVar4;
  undefined4 uVar5;
  undefined4 local_80;
  undefined4 local_7c;
  undefined local_78 [4];
  uint local_74;
  undefined4 local_64;
  uint local_60;
  void *local_5c;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be75a4;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_00936340(param_1,param_2,param_4,param_5,param_6,param_7,param_8);
  if (cVar1 != '\0') {
    if (param_1_00 + 0x1b4 != param_3) {
      FID_conflict_assign(param_3,0,0xffffffff);
    }
    pvVar2 = operator_new(0x58);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = FUN_00445f46(4);
    }
    local_4 = 0xffffffff;
    *(undefined4 *)(param_1_00 + 0x1b0) = uVar3;
    pvVar2 = operator_new(0x1a0);
    local_4 = 1;
    bVar4 = pvVar2 == (void *)0x0;
    if (bVar4) {
      uVar3 = 0;
    }
    else {
      FUN_0043c211("button");
      local_4 = CONCAT31(local_4._1_3_,2);
      uVar3 = FUN_009ca2c0(local_54);
      local_80 = 0;
      local_7c = 0;
      local_4 = 3;
      uVar3 = FUN_0044c65b(param_1_00,0xffffffff,uVar3,&local_80,&DAT_03238d04,1,&DAT_032c0398,
                           local_30);
    }
    *(undefined4 *)(param_1_00 + 0x1a4) = uVar3;
    if (!bVar4) {
      _free(local_38);
      if (7 < local_3c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_50);
      }
      local_3c = 7;
      local_40 = 0;
      local_50 = local_50 & 0xffff0000;
    }
    local_4 = 0xffffffff;
    if (!bVar4) {
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
    }
    pvVar2 = operator_new(0x194);
    local_4 = 6;
    if (pvVar2 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      FUN_0043c211("staticLine");
      local_4 = CONCAT31(local_4._1_3_,7);
      uVar3 = FUN_0044a4d9(param_1_00,0xffffffff,&DAT_03238d0c,&DAT_03238d04,4,local_30);
    }
    *(undefined4 *)(param_1_00 + 0x1a8) = uVar3;
    local_4 = 0xffffffff;
    if (pvVar2 != (void *)0x0) {
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
    }
    uVar5 = 0;
    uVar3 = FUN_009c9f90(0);
    FUN_00445d61(*(undefined4 *)(param_1_00 + 0x1a4),0,0xd0,uVar3,uVar5);
    uVar5 = 0;
    uVar3 = FUN_009c9f90(0);
    FUN_00445d61(*(undefined4 *)(param_1_00 + 0x1a8),1,0x930,uVar3,uVar5);
    pvVar2 = operator_new(0x174);
    local_4 = 9;
    if (pvVar2 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      FUN_004325b6(L"wxCollapsiblePanePane");
      local_4 = CONCAT31(local_4._1_3_,10);
      uVar3 = FUN_00445fef(param_1_00,0xffffffff,&DAT_03238d0c,&DAT_03238d04,0x280000,local_78);
    }
    *(undefined4 *)(param_1_00 + 0x1ac) = uVar3;
    local_4 = 0xffffffff;
    if (pvVar2 != (void *)0x0) {
      _free(local_5c);
      if (7 < local_60) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_74);
      }
      local_60 = 7;
      local_64 = 0;
      local_74 = local_74 & 0xffff0000;
    }
    (**(code **)(**(int **)(param_1_00 + 0x1ac) + 0xcc))(0);
    cVar1 = '\x01';
  }
  ExceptionList = local_c;
  return cVar1;
}



void __thiscall FUN_009ca950(int *param_1_00,int *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  uint local_30 [4];
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  if (param_1_00 + 0x6d != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  uVar2 = FUN_009ca2c0(local_30);
  local_4 = 0;
  (**(code **)(*(int *)param_1_00[0x69] + 0x54))(uVar2,uVar1);
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  uStack_1c = 7;
  uStack_20 = 0;
  local_30[0] = local_30[0] & 0xffff0000;
  FUN_0091b600(&DAT_03238d04);
  (**(code **)(*param_1_00 + 0x204))();
  ExceptionList = pvStack_10;
  return;
}



undefined4 * __fastcall FUN_009caa20(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x60);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a2df(param_1);
    *puVar1 = wxCollapsiblePaneEvent::vftable;
    *(undefined *)(puVar1 + 0x17) = *(undefined *)(param_1 + 0x5c);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined ** FUN_009caa90(void)

{
  return &PTR_PTR_00d90298;
}



undefined * FUN_009caaa0(void)

{
  return &DAT_032e9e8c;
}



undefined ** FUN_009caab0(void)

{
  return &PTR_u_wxSingleChoiceDialog_0323cec4;
}



void __thiscall FUN_009caac0(int param_1_00,uint param_1)

{
  uint uVar1;
  
  if (-1 < (int)param_1) {
    uVar1 = (**(code **)(*(int *)(*(int *)(param_1_00 + 0x1f0) + 0x194) + 4))();
    if (param_1 < uVar1) {
      (**(code **)(*(int *)(*(int *)(param_1_00 + 0x1f0) + 0x194) + 0x14))(param_1);
      *(uint *)(param_1_00 + 500) = param_1;
      return;
    }
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\generic\\choicdgg.cpp",0x217,"wxSingleChoiceDialog::SetSelection",
                 "sel >= 0 && (unsigned)sel < m_listbox->GetCount()","Invalid initial selection");
  }
  return;
}



undefined ** FUN_009cab40(void)

{
  return &PTR_u_wxMultiChoiceDialog_0323cedc;
}



undefined4 * __fastcall FUN_009cab50(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7608;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044cc1c(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxMultiChoiceDialog::vftable;
  FUN_0086a600();
  ExceptionList = local_c;
  return param_1;
}



void FUN_009cabb0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be7608;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0086aa30(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  FUN_00924620();
  ExceptionList = local_c;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x200);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009cab50(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __fastcall FUN_009cac80(int param_1)

{
  int *piVar1;
  char cVar2;
  undefined **ppuVar3;
  uint uVar4;
  uint uVar5;
  
  piVar1 = *(int **)(param_1 + 0x1f0);
  *(undefined4 *)(param_1 + 0x1f8) = 0;
  if ((piVar1 != (int *)0x0) &&
     (((ppuVar3 = (undefined **)(**(code **)*piVar1)(), ppuVar3 == &PTR_u_wxCheckListBox_0323d8a8 ||
       ((ppuVar3[3] != (undefined *)0x0 &&
        (cVar2 = FUN_0048a047(&PTR_u_wxCheckListBox_0323d8a8), cVar2 != '\0')))) ||
      ((ppuVar3[4] != (undefined *)0x0 &&
       (cVar2 = FUN_0048a047(&PTR_u_wxCheckListBox_0323d8a8), cVar2 != '\0')))))) {
    uVar4 = (**(code **)(piVar1[0x65] + 4))();
    uVar5 = 0;
    if (uVar4 != 0) {
      do {
        cVar2 = (**(code **)(*piVar1 + 0x388))(uVar5);
        if (cVar2 != '\0') {
          FUN_0086a400(uVar5,1);
        }
        uVar5 = uVar5 + 1;
      } while (uVar5 < uVar4);
    }
    return 1;
  }
  uVar4 = (**(code **)(*(int *)(*(int *)(param_1 + 0x1f0) + 0x194) + 4))();
  uVar5 = 0;
  if (uVar4 != 0) {
    do {
      cVar2 = (**(code **)(**(int **)(param_1 + 0x1f0) + 0x35c))(uVar5);
      if (cVar2 != '\0') {
        FUN_0086a400(uVar5,1);
      }
      uVar5 = uVar5 + 1;
    } while (uVar5 < uVar4);
  }
  return 1;
}



undefined4 __thiscall FUN_009cad70(undefined4 param_1_00,byte param_1)

{
  FUN_009cabb0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_009cad90(int param_1)

{
  _free(*(void **)(param_1 + 0x214));
  if (7 < *(uint *)(param_1 + 0x210)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x1fc));
  }
  *(undefined4 *)(param_1 + 0x210) = 7;
  *(undefined4 *)(param_1 + 0x20c) = 0;
  *(undefined2 *)(param_1 + 0x1fc) = 0;
  FUN_00924620();
  return;
}



undefined4 * FUN_009cade0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x21c);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0044cc1c(uVar1);
    *puVar2 = wxSingleChoiceDialog::vftable;
    puVar2[0x84] = 7;
    puVar2[0x83] = 0;
    *(undefined2 *)(puVar2 + 0x7f) = 0;
    puVar2[0x85] = 0;
    puVar2[0x7d] = 0xffffffff;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_009cae90(undefined4 param_1_00,byte param_1)

{
  FUN_009cad90();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall
FUN_009caeb0(int *param_1_00,undefined4 param_1,undefined4 param_2,uint param_3,int param_4,
            undefined4 param_5,uint param_6,undefined4 param_7,undefined4 param_8)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be764b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  FUN_0043c211("dialog");
  local_4 = 0;
  cVar1 = FUN_00924510(param_1,0xffffffff,param_3,param_7,&DAT_03238d04,param_6 & ~(param_6 & 0x14),
                       local_30);
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (cVar1 == '\0') {
    uVar4 = 0;
  }
  else {
    puVar3 = (undefined4 *)operator_new(0x58);
    local_4 = 1;
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      FUN_00445eb9(uVar2);
      *puVar3 = wxBoxSizer::vftable;
      puVar3[2] = wxBoxSizer::vftable;
      puVar3[0x14] = 0;
      puVar3[0x15] = 0;
      puVar3[0x12] = 8;
      puVar3[0x13] = 0;
    }
    puVar6 = &local_3c;
    local_4 = 0xffffffff;
    local_3c = 0;
    local_38 = 0x20f0;
    local_34 = 0xf;
    uVar4 = FUN_00939e10(param_2);
    FUN_00938d70(uVar4,puVar6);
    iVar5 = (**(code **)(*param_1_00 + 0x3bc))(param_4,param_5,param_8);
    param_1_00[0x7c] = iVar5;
    if (0 < param_4) {
      (**(code **)(*(int *)(iVar5 + 0x194) + 0x14))(0);
    }
    FUN_00938cf0(param_1_00[0x7c],&stack0xffffffb8);
    iVar5 = FUN_0093b290(param_6 & 0x14);
    if (iVar5 != 0) {
      FUN_00938d70(iVar5,&stack0xffffffb8);
    }
    FUN_0091c600(puVar3,1);
    FUN_00931b00(param_1_00);
    FUN_00931a60(&stack0xffffffb0,param_1_00);
    if ((param_3 & 1) != 0) {
      (**(code **)(*param_1_00 + 0x29c))(0xc);
    }
    (**(code **)(*(int *)param_1_00[0x7c] + 0x100))();
    uVar4 = 1;
  }
  ExceptionList = local_c;
  return uVar4;
}



undefined4 __thiscall
FUN_009cb0d0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2d04;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x1bc);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    FUN_0043c211("listBox");
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar3 = FUN_004869bd(param_1_00,3000,&DAT_03238d0c,&DAT_03238d04,param_1,param_2,param_3,
                         &DAT_032c0398,local_30);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar1);
    }
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined __thiscall
FUN_009cb1b0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,
            undefined4 param_5,int param_6,undefined4 param_7,undefined4 param_8)

{
  char cVar1;
  int iVar2;
  
  cVar1 = FUN_009caeb0(param_1,param_2,param_3,param_4,param_5,param_7,param_8,0x200);
  if (cVar1 != '\0') {
    *(uint *)(param_1_00 + 500) = (0 < param_4) - 1;
    if ((param_6 != 0) && (iVar2 = 0, 0 < param_4)) {
      do {
        FUN_0096bc60(iVar2,*(undefined4 *)(param_6 + iVar2 * 4));
        iVar2 = iVar2 + 1;
      } while (iVar2 < param_4);
    }
    return 1;
  }
  return 0;
}



void __fastcall FUN_009cb240(int *param_1)

{
  int iVar1;
  int *piVar2;
  undefined4 uVar3;
  uint auStack_30 [4];
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = (**(code **)(*(int *)(param_1[0x7c] + 0x194) + 0x18))
                    (DAT_0323f878 ^ (uint)&stack0xffffffcc);
  param_1[0x7d] = iVar1;
  piVar2 = (int *)(**(code **)(*(int *)(param_1[0x7c] + 0x194) + 0x1c))(auStack_30);
  puStack_8 = (undefined *)0x0;
  if (param_1 + 0x7e != piVar2) {
    FID_conflict_assign(piVar2,0,0xffffffff);
  }
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(auStack_30[0]);
  }
  auStack_30[0] = auStack_30[0] & 0xffff0000;
  uStack_1c = 7;
  uStack_20 = 0;
  iVar1 = (**(code **)(*(int *)(param_1[0x7c] + 0x194) + 0x24))();
  if (iVar1 == 2) {
    uVar3 = FUN_0096bd10(param_1[0x7d]);
    (**(code **)(*param_1 + 0x48))(uVar3);
  }
  (**(code **)(*param_1 + 0x398))(0x13ec);
  ExceptionList = pvStack_14;
  return;
}



undefined4 __thiscall
FUN_009cb360(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd2d04;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x1bc);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    FUN_0043c211("listBox");
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar3 = FUN_009ea630(param_1_00,3000,&DAT_03238d0c,&DAT_03238d04,param_1,param_2,param_3,
                         &DAT_032c0398,local_30);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar1);
    }
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 * __thiscall
FUN_009cb440(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7686;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044cc1c(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1_00 = wxSingleChoiceDialog::vftable;
  param_1_00[0x84] = 7;
  param_1_00[0x83] = 0;
  *(undefined2 *)(param_1_00 + 0x7f) = 0;
  param_1_00[0x85] = 0;
  local_4 = 1;
  FUN_009cb1b0(param_1,param_2,param_3,param_4,param_5,param_6,param_7,&DAT_03238d0c);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_009cb500(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  uint uVar1;
  undefined4 param_11;
  undefined local_22c [508];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be76bb;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_22c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffdd0;
  ExceptionList = &local_c;
  FUN_009cb440(param_5,param_1,param_2,param_3,param_4,0,0x20001855,&DAT_03238d0c);
  local_4 = 0;
  FUN_009caac0(param_11);
  FUN_009246b0(uVar1);
  local_4 = 0xffffffff;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  FUN_00924620();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_009cb640(void)

{
  return &PTR_PTR_00d90b18;
}



undefined * FUN_009cb650(void)

{
  return &DAT_032e9ee8;
}



void FUN_009cb730(void)

{
  FUN_009cc3a0();
  return;
}



undefined FUN_009cb740(void)

{
  return 1;
}



void __thiscall FUN_009cb7d0(int *param_1_00,uint param_1)

{
  uint uVar1;
  BOOL BVar2;
  
  uVar1 = param_1_00[0x6f];
  if (uVar1 != 0xffffffff) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x69] <= uVar1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    (**(code **)(**(int **)(param_1_00[0x6a] + uVar1 * 4) + 0xcc))(0);
  }
  if (param_1 != 0xffffffff) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x69] <= param_1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    (**(code **)(**(int **)(param_1_00[0x6a] + param_1 * 4) + 0xcc))(1);
  }
  BVar2 = IsWindowVisible((HWND)param_1_00[0x4f]);
  if (BVar2 != 0) {
    (**(code **)(*param_1_00 + 0x100))();
  }
  param_1_00[0x6f] = param_1;
  return;
}



uint __thiscall FUN_009cb8a0(int *param_1,uint param_2)

{
  uint uVar1;
  
  uVar1 = (**(code **)(*param_1 + 0x358))();
  if (param_2 < uVar1) {
    uVar1 = param_1[0x6f];
    if ((uVar1 == 0xffffffff) || (param_2 != uVar1)) {
      SendMessageW((HWND)param_1[0x4f],0x130c,param_2,0);
      FUN_009cb7d0(param_2);
    }
    return uVar1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\notebook.cpp",0x18b,"wxNotebook::ChangeSelection",
                 "((nPage) < GetPageCount())",L"notebook page out of range");
  }
  return 0xffffffff;
}



undefined4 __thiscall FUN_009cb920(int *param_1,uint param_2)

{
  uint uVar1;
  LRESULT LVar2;
  undefined4 auStack_1c [5];
  undefined4 uStack_8;
  
  uVar1 = (**(code **)(*param_1 + 0x358))();
  if (param_2 < uVar1) {
    auStack_1c[0] = 2;
    LVar2 = SendMessageW((HWND)param_1[0x4f],0x133c,param_2,(LPARAM)auStack_1c);
    if (LVar2 != 0) {
      return uStack_8;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\notebook.cpp",0x1c6,"wxNotebook::GetPageImage",
                 "((nPage) < GetPageCount())",L"notebook page out of range");
  }
  return 0xffffffff;
}



uint __thiscall FUN_009cb9a0(int *param_1,uint param_2,undefined4 param_3)

{
  uint uVar1;
  LRESULT LVar2;
  undefined4 auStack_1c [5];
  undefined4 uStack_8;
  
  uVar1 = (**(code **)(*param_1 + 0x358))();
  if (param_2 < uVar1) {
    auStack_1c[0] = 2;
    uStack_8 = param_3;
    LVar2 = SendMessageW((HWND)param_1[0x4f],0x133d,param_2,(LPARAM)auStack_1c);
    return (uint)(LVar2 != 0);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    uVar1 = FUN_00840480("..\\..\\src\\msw\\notebook.cpp",0x1d1,"wxNotebook::SetPageImage",
                         "((nPage) < GetPageCount())",L"notebook page out of range");
  }
  return uVar1 & 0xffffff00;
}



void __thiscall FUN_009cba20(int param_1_00,int param_1)

{
  if (*(char *)(param_1_00 + 8) != '\0') {
    if (*(int **)(param_1_00 + 4) != (int *)0x0) {
      (**(code **)(**(int **)(param_1_00 + 4) + 4))(1);
    }
    *(undefined4 *)(param_1_00 + 4) = 0;
    *(undefined *)(param_1_00 + 8) = 0;
  }
  *(int *)(param_1_00 + 4) = param_1;
  if (param_1 != 0) {
    SendMessageW(*(HWND *)(param_1_00 + -0x58),0x1303,0,*(LPARAM *)(param_1 + 8));
  }
  return;
}



int * __thiscall FUN_009cba70(int param_1_00,int *param_1)

{
  HWND hWnd;
  tagRECT local_10;
  
  hWnd = *(HWND *)(param_1_00 + 0x13c);
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  GetClientRect(hWnd,&local_10);
  if ((0x14 < local_10.right) && (0x14 < local_10.bottom)) {
    SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1328,0,(LPARAM)&local_10);
    *param_1 = local_10.left;
    param_1[1] = local_10.top;
    param_1[2] = local_10.right - local_10.left;
    param_1[3] = local_10.bottom - local_10.top;
  }
  return param_1;
}



void __thiscall FUN_009cbb00(int *param_1_00,int *param_1)

{
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  local_4 = param_1[1];
  local_8 = *param_1;
  local_c = 0;
  local_10 = 0;
  SendMessageW((HWND)param_1_00[0x4f],0x1328,1,(LPARAM)&local_10);
  (**(code **)(*param_1_00 + 0x288))(0xffffffff,0xffffffff,local_8 - local_10,local_4 - local_c,0);
  return;
}



void FUN_009cbc70(int *param_1)

{
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  int local_4;
  
  if (param_1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\notebook.cpp",0x23c,"wxNotebook::AdjustPageSize",&DAT_00d9105c
                   ,L"NULL page in wxNotebook::AdjustPageSize");
    }
  }
  else {
    FUN_009cba70(&local_10);
    if ((0 < local_8) && (0 < local_4)) {
      (**(code **)(*param_1 + 0x288))(local_10,local_c,local_8,local_4,3);
      return;
    }
  }
  return;
}



int * __thiscall FUN_009cbcf0(int *param_1_00,WPARAM param_1)

{
  code *pcVar1;
  int *piVar2;
  LRESULT LVar3;
  int **ppiVar4;
  int iVar5;
  int iVar6;
  
  piVar2 = (int *)FUN_0094ab80(param_1);
  if (piVar2 == (int *)0x0) {
    return (int *)0x0;
  }
  (**(code **)(*piVar2 + 0xcc))(0);
  SendMessageW((HWND)param_1_00[0x4f],0x1308,param_1,0);
  if (param_1_00[0x69] == 0) {
    param_1_00[0x6f] = -1;
    return piVar2;
  }
  LVar3 = SendMessageW((HWND)param_1_00[0x4f],0x130b,0,0);
  if (LVar3 != -1) {
    param_1_00[0x6f] = LVar3;
    ppiVar4 = (int **)thunk_FUN_004562d1(LVar3);
    (**(code **)(**ppiVar4 + 0x15c))(1,0);
    return piVar2;
  }
  if (param_1 == param_1_00[0x6f]) {
    iVar6 = param_1_00[0x6f];
    iVar5 = (**(code **)(*param_1_00 + 0x358))();
    if (iVar6 == iVar5) {
      iVar6 = iVar6 + -1;
    }
    pcVar1 = *(code **)(*param_1_00 + 0x38c);
    param_1_00[0x6f] = -1;
    (*pcVar1)(iVar6);
    return piVar2;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\msw\\notebook.cpp",0x278,"wxNotebook::DoRemovePage","Assert failure",
                 0);
  }
  return piVar2;
}



undefined4 __fastcall FUN_009cbe00(int *param_1)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = (**(code **)(*param_1 + 0x358))();
  uVar3 = 0;
  if (uVar2 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x69] <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar1 = *(int **)(param_1[0x6a] + uVar3 * 4);
      if (piVar1 != (int *)0x0) {
        (**(code **)(*piVar1 + 4))(1);
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  FUN_0086a880();
  SendMessageW((HWND)param_1[0x4f],0x1309,0,0);
  param_1[0x6f] = -1;
  FUN_0091a950();
  return 1;
}



LRESULT __thiscall FUN_009cbea0(int param_1_00,undefined4 *param_1,uint *param_3)

{
  char cVar1;
  LRESULT LVar2;
  undefined4 local_1c;
  undefined4 local_18;
  uint uStack_14;
  undefined auStack_10 [16];
  
  local_1c = *param_1;
  local_18 = param_1[1];
  LVar2 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x130d,0,(LPARAM)&local_1c);
  if (param_3 != (uint *)0x0) {
    *param_3 = 0;
    if ((uStack_14 & 1) != 0) {
      *param_3 = 1;
    }
    if (((byte)uStack_14 & 6) == 6) {
      *param_3 = *param_3 | 6;
    }
    if ((uStack_14 & 2) != 0) {
      *param_3 = *param_3 | 2;
    }
    if ((uStack_14 & 4) != 0) {
      *param_3 = *param_3 | 4;
    }
    if (LVar2 == -1) {
      FUN_009cba70(auStack_10);
      cVar1 = FUN_008f7580(*param_1,param_1[1]);
      if (cVar1 != '\0') {
        *param_3 = *param_3 | 8;
        return -1;
      }
    }
  }
  return LVar2;
}



undefined4 __thiscall FUN_009cc020(int param_1_00,undefined4 param_1,int param_2)

{
  code **ppcVar1;
  int iVar2;
  int iVar3;
  tagPOINT tStack_2c;
  int iStack_24;
  int iStack_20;
  int iStack_1c;
  int iStack_18;
  int iStack_14;
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7728;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = param_2;
  if (param_2 == 0) {
    iVar2 = param_1_00;
  }
  ppcVar1 = (code **)FUN_0098e820();
  if (ppcVar1 == (code **)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = (**ppcVar1)(*(undefined4 *)(iVar2 + 0x13c));
  }
  local_4 = 0;
  if (iVar2 != 0) {
    FUN_009cba70();
    if ((0 < iStack_14) && (0 < iStack_10)) {
      tStack_2c.y = iStack_18;
      iStack_24 = iStack_14 + iStack_1c;
      iStack_20 = iStack_18 + iStack_10;
      tStack_2c.x = iStack_1c;
      if (param_2 != 0) {
        MapWindowPoints(*(HWND *)(param_1_00 + 0x13c),*(HWND *)(param_2 + 0x13c),&tStack_2c,2);
      }
      iVar3 = FUN_0098e820();
      (**(code **)(iVar3 + 0x14))(iVar2,param_1,9,0,&tStack_2c);
      iVar3 = FUN_0098e820();
      (**(code **)(iVar3 + 8))(iVar2,param_1,9,0,&stack0xffffffbc,0);
      iVar3 = FUN_0098e820();
      (**(code **)(iVar3 + 4))(iVar2);
      ExceptionList = local_c;
      return 1;
    }
    local_4 = 0xffffffff;
    iVar2 = FUN_0098e820();
    (**(code **)(iVar2 + 4))();
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_009cc160(int param_1_00,HDC param_1,int param_2)

{
  char cVar1;
  undefined4 uVar2;
  HBRUSH hbr;
  RECT local_30;
  undefined **local_20;
  int local_1c;
  int local_18;
  int local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7760;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*(byte *)(param_1_00 + 0xdc) & 0x10) == 0) {
    cVar1 = FUN_009cc020(param_1,param_2);
    if (cVar1 != '\0') {
      ExceptionList = local_c;
      return 1;
    }
    if ((*(byte *)(param_1_00 + 0xdc) & 0x10) == 0) {
      ExceptionList = local_c;
      return 0;
    }
  }
  FUN_009cba70(&local_20);
  if ((0 < local_18) && (0 < local_14)) {
    local_30.top = local_1c;
    local_30.right = local_18 + (int)local_20;
    local_30.bottom = local_1c + local_14;
    local_30.left = (LONG)local_20;
    if (param_2 != 0) {
      MapWindowPoints(*(HWND *)(param_1_00 + 0x13c),*(HWND *)(param_2 + 0x13c),(LPPOINT)&local_30,2)
      ;
    }
    uVar2 = FUN_0091de40(&local_20);
    local_4 = 0;
    FUN_0095d7e0(uVar2,100);
    local_4 = CONCAT31(local_4._1_3_,2);
    local_20 = wxObject::vftable;
    FUN_0083e850();
    hbr = (HBRUSH)FUN_0095db20();
    FillRect(param_1,&local_30,hbr);
    local_4 = 0xffffffff;
    FUN_008f7630();
    ExceptionList = local_c;
    return 1;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_009cc290(int param_1_00,int param_1)

{
  bool bVar1;
  type_info *ptVar2;
  type_info *this;
  
  ptVar2 = (type_info *)___RTtypeid(param_1_00);
  this = (type_info *)___RTtypeid(param_1);
  bVar1 = type_info::operator!=(this,ptVar2);
  if (bVar1) {
    return 0;
  }
  if ((((*(int *)(param_1_00 + 8) == *(int *)(param_1 + 8)) &&
       ((*(int *)(param_1_00 + 8) == 0 || (*(int *)(param_1_00 + 0xc) == *(int *)(param_1 + 0xc)))))
      || (*(int *)(param_1 + 8) == 0)) &&
     ((*(int *)(param_1_00 + 4) == *(int *)(param_1 + 4) || (*(int *)(param_1 + 4) == 0)))) {
    return 1;
  }
  return 0;
}



void __thiscall FUN_009cc300(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxNavigationKeyEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void __thiscall FUN_009cc350(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxEraseEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



undefined4 * __thiscall FUN_009cc3a0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxNotebook::vftable;
  param_1_00[0x65] = wxNotebook::vftable;
  if ((HGDIOBJ)param_1_00[0x72] != (HGDIOBJ)0x0) {
    DeleteObject((HGDIOBJ)param_1_00[0x72]);
  }
  FUN_004564c0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_009cc3f0(int *param_1,uint param_2)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  
  uVar3 = (**(code **)(*param_1 + 0x358))();
  if (param_2 < uVar3) {
    if ((param_1[0x6f] == 0xffffffff) || (param_2 != param_1[0x6f])) {
      cVar2 = FUN_0097baa0(param_2);
      if (cVar2 != '\0') {
        iVar1 = param_1[0x6f];
        FUN_009cb7d0(param_2);
        SendMessageW((HWND)param_1[0x4f],0x130c,param_2,0);
        FUN_0097bbc0(iVar1,param_2);
      }
    }
    return param_1[0x6f];
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\notebook.cpp",0x15d,"wxNotebook::SetSelection",
                 "((nPage) < GetPageCount())",L"notebook page out of range");
  }
  return -1;
}



HBRUSH __fastcall FUN_009cc490(int param_1)

{
  HWND hWnd;
  char cVar1;
  HDC hdc;
  HDC hdc_00;
  HBITMAP hbm;
  HBRUSH pHVar2;
  HDC local_24;
  HGDIOBJ pvStack_20;
  int local_1c;
  int local_18;
  HWND local_14;
  HDC pHStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be77a0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009cba70(&local_24);
  if ((0 < local_1c) && (0 < local_18)) {
    hWnd = *(HWND *)(param_1 + 0x13c);
    local_14 = hWnd;
    hdc = GetDC(hWnd);
    uStack_4 = 0;
    pHStack_10 = hdc;
    hdc_00 = CreateCompatibleDC(hdc);
    hbm = CreateCompatibleBitmap(hdc,(int)&local_24->unused + local_1c,(int)pvStack_20 + local_18);
    local_24 = hdc_00;
    pvStack_20 = SelectObject(hdc_00,hbm);
    uStack_4 = CONCAT31(uStack_4._1_3_,3);
    cVar1 = FUN_009cc020(hdc_00,0);
    if (cVar1 != '\0') {
      pHVar2 = CreatePatternBrush(hbm);
      if (hdc_00 != (HDC)0x0) {
        SelectObject(hdc_00,pvStack_20);
      }
      if (hbm != (HBITMAP)0x0) {
        DeleteObject(hbm);
      }
      DeleteDC(hdc_00);
      ReleaseDC(hWnd,hdc);
      ExceptionList = local_c;
      return pHVar2;
    }
    if (hdc_00 != (HDC)0x0) {
      SelectObject(hdc_00,pvStack_20);
    }
    if (hbm != (HBITMAP)0x0) {
      DeleteObject(hbm);
    }
    DeleteDC(hdc_00);
    ReleaseDC(hWnd,hdc);
  }
  ExceptionList = local_c;
  return (HBRUSH)0x0;
}



void __fastcall FUN_009cc5e0(int param_1)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  
  if (*(HGDIOBJ *)(param_1 + 0x1c8) != (HGDIOBJ)0x0) {
    DeleteObject(*(HGDIOBJ *)(param_1 + 0x1c8));
  }
  if ((*(byte *)(param_1 + 0xdc) & 0x10) == 0) {
    iVar1 = FUN_0098e820();
    if (iVar1 != 0) {
      iVar2 = (**(code **)(iVar1 + 0x94))();
      if (iVar2 != 0) {
        iVar1 = (**(code **)(iVar1 + 0x90))();
        if (iVar1 != 0) {
          uVar3 = FUN_009cc490();
          *(undefined4 *)(param_1 + 0x1c8) = uVar3;
          return;
        }
      }
    }
  }
  *(undefined4 *)(param_1 + 0x1c8) = 0;
  return;
}



undefined4 * FUN_009cc640(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxNavigationKeyEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_009cc6b0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxEraseEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



bool __thiscall FUN_009cc750(int *param_1,uint param_2,int param_3)

{
  uint uVar1;
  LRESULT LVar2;
  int iVar3;
  int iVar4;
  int **ppiVar5;
  uint uVar6;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 auStack_1c [3];
  int iStack_10;
  
  uVar1 = (**(code **)(*param_1 + 0x358))();
  if (uVar1 <= param_2) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\notebook.cpp",0x19b,"wxNotebook::SetPageText",
                   "((nPage) < GetPageCount())",L"notebook page out of range");
    }
    return false;
  }
  auStack_1c[0] = 1;
  if (*(uint *)(param_3 + 0x18) < 8) {
    iStack_10 = param_3 + 4;
  }
  else {
    iStack_10 = *(int *)(param_3 + 4);
  }
  if (((uint)param_1[0x38] >> 9 & 1) != 0) {
    iVar3 = (**(code **)(*param_1 + 0x3b8))();
    LVar2 = SendMessageW((HWND)param_1[0x4f],0x133d,param_2,(LPARAM)auStack_1c);
    if ((LVar2 != 0) && (iVar4 = (**(code **)(*param_1 + 0x3b8))(), iVar3 != iVar4)) {
      FUN_009cba70(&uStack_2c);
      uVar1 = param_1[0x69];
      uVar6 = 0;
      if (uVar1 != 0) {
        do {
          ppiVar5 = (int **)thunk_FUN_004562d1(uVar6);
          (**(code **)(**ppiVar5 + 0x288))(uStack_2c,uStack_28,uStack_24,uStack_20,3);
          uVar6 = uVar6 + 1;
        } while (uVar6 < uVar1);
      }
    }
    return LVar2 != 0;
  }
  LVar2 = SendMessageW((HWND)param_1[0x4f],0x133d,param_2,(LPARAM)auStack_1c);
  return LVar2 != 0;
}



void __fastcall FUN_009cc8a0(int *param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined *puVar4;
  HBRUSH hbr;
  int *piVar5;
  undefined auStack_58 [16];
  void *local_48;
  int *piStack_44;
  undefined4 uStack_40;
  undefined4 uStack_38;
  undefined auStack_34 [12];
  LONG LStack_28;
  undefined **appuStack_24 [6];
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00be77f0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  FUN_0094be80(param_1);
  local_4 = 0;
  FUN_0094bd80(uVar1);
  local_4._0_1_ = 1;
  GetClientRect((HWND)param_1[0x4f],(LPRECT)(auStack_34 + 4));
  FUN_008f53f0(LStack_28,appuStack_24[0],0xffffffff);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_0094c840(auStack_58);
  iVar2 = (**(code **)(*(int *)auStack_34._0_4_ + 0x34))();
  (**(code **)(*uStack_40 + 0x30))(iVar2);
  hbr = (HBRUSH)param_1[0x72];
  FUN_0095d530();
  uStack_8._0_1_ = 3;
  if (hbr == (HBRUSH)0x0) {
    uVar3 = FUN_0091de40(appuStack_24);
    uStack_8._0_1_ = 4;
    puVar4 = (undefined *)FUN_0095d7e0(uVar3,100);
    uStack_8._0_1_ = 5;
    if (&stack0xffffff9c != puVar4) {
      FUN_0083ea60(puVar4);
    }
    uStack_8._0_1_ = 4;
    FUN_008f7630();
    uStack_8._0_1_ = 3;
    appuStack_24[0] = wxObject::vftable;
    FUN_0083e850();
    hbr = (HBRUSH)FUN_0095db20();
  }
  piVar5 = piStack_44 + 0x42;
  FillRect((HDC)piStack_44[0x42],(RECT *)auStack_34,hbr);
  (**(code **)(*param_1 + 0x2fc))(0xf,*piVar5,0);
  iVar2 = (iVar2 != 2) - 1;
  (**(code **)(*piStack_44 + 0x170))
            (iVar2,0,uStack_38,auStack_34._0_4_,auStack_58,iVar2,0,5,0,0xffffffff,0xffffffff);
  uStack_40._0_1_ = 2;
  FUN_008f7630();
  uStack_40._0_1_ = 1;
  FUN_008f7630();
  uStack_40 = (int *)((uint)uStack_40._1_3_ << 8);
  FUN_00457221();
  uStack_40 = (int *)0xffffffff;
  FUN_00457221();
  ExceptionList = local_48;
  return;
}



void __fastcall FUN_009cca70(int *param_1)

{
  code *pcVar1;
  undefined4 ****ppppuVar2;
  char cVar3;
  int iVar4;
  HWND hWnd;
  int *piVar5;
  int unaff_EBX;
  undefined4 *puVar6;
  int unaff_ESI;
  uint uVar7;
  undefined4 *puVar8;
  uint uVar9;
  undefined4 *puStack_50;
  int iStack_4c;
  int *piStack_48;
  undefined4 ****ppppuStack_44;
  undefined4 *puStack_40;
  undefined4 ****ppppuStack_2c;
  undefined4 uStack_28;
  int iStack_24;
  undefined4 uStack_20;
  int iStack_1c;
  int iStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  int iStack_4;
  
  iVar4 = (**(code **)(*param_1 + 0x358))();
  if (iVar4 == 0) {
    (**(code **)(*param_1 + 0x15c))();
    *(undefined *)(iStack_4 + 0x24) = 1;
    return;
  }
  puStack_40 = &uStack_28;
  ppppuStack_44 = &ppppuStack_2c;
  piStack_48 = (int *)0x9ccabc;
  (**(code **)(*param_1 + 0x27c))();
  iStack_18 = unaff_EBX + -4;
  piStack_48 = &iStack_18;
  iStack_4c = 1;
  uStack_14 = 0;
  uStack_10 = 4;
  puStack_50 = (undefined4 *)0x9ccaf0;
  (**(code **)(*param_1 + 0x15c))();
  iStack_1c = unaff_ESI + -4;
  puStack_50 = &uStack_20;
  uStack_20 = 0;
  uStack_14 = 4;
  (**(code **)(*param_1 + 0x15c))(1);
  iStack_24 = 0;
  puVar8 = &uStack_28;
  uStack_28 = 0;
  uStack_20 = 4;
  iVar4 = 1;
  (**(code **)(*param_1 + 0x15c))(1,puVar8);
  puStack_40 = (undefined4 *)0x0;
  (**(code **)(*param_1 + 0x278))(&stack0xffffffc8,&stack0xffffffcc);
  iStack_4c = -(int)ppppuStack_44;
  puVar6 = (undefined4 *)((int)puStack_40 - (int)piStack_48);
  if (((uint)param_1[0x38] >> 9 & 1) != 0) {
    if (DAT_032e9f64 == '\0') {
      DAT_032e9f64 = 1;
      SendMessageW((HWND)param_1[0x4f],5,0,(uint)puStack_40 & 0xffff);
      DAT_032e9f64 = '\0';
    }
    FUN_0091a950();
  }
  FUN_009cc5e0();
  SendMessageW((HWND)param_1[0x4f],0x1328,0,(LPARAM)&piStack_48);
  puStack_50 = (undefined4 *)((int)puStack_40 - (int)piStack_48);
  ppppuVar2 = (undefined4 ****)-(int)ppppuStack_44;
  uVar9 = param_1[0x69];
  uVar7 = 0;
  if (uVar9 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x69] <= uVar7)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      (**(code **)(**(int **)(param_1[0x6a] + uVar7 * 4) + 0x288))
                (piStack_48,ppppuStack_44,puStack_50,ppppuVar2,3);
      uVar7 = uVar7 + 1;
    } while (uVar7 < uVar9);
  }
  if ((*(byte *)((int)param_1 + 0xe2) & 1) == 0) {
    ppppuStack_2c = ppppuStack_44;
    (**(code **)(*param_1 + 0x15c))(0,&stack0xffffffc8);
    puStack_40 = (undefined4 *)0x0;
    (**(code **)(*param_1 + 0x15c))(0,&puStack_40);
    ppppuStack_44 = (undefined4 ****)iStack_4c;
    piStack_48 = (int *)0x0;
    puStack_40 = puVar6;
    (**(code **)(*param_1 + 0x15c))(0,&piStack_48);
    piStack_48 = (int *)((int)puVar6 - (int)puVar8);
    puStack_50 = puVar8;
    iStack_4c = iVar4;
    ppppuStack_44 = ppppuVar2;
    (**(code **)(*param_1 + 0x15c))(0,&puStack_50);
  }
  if (*(char *)(param_1 + 0x71) == '\0') {
    for (hWnd = GetWindow((HWND)param_1[0x4f],5); hWnd != (HWND)0x0; hWnd = GetWindow(hWnd,2)) {
      iVar4 = FUN_0090f7c0(hWnd);
      if (iVar4 == 0) {
        if (DAT_032e9ee0 == 0) {
          DAT_032e9ee0 = GetWindowLongW(hWnd,-4);
        }
        SetWindowLongW(hWnd,-4,0x9cb6c0);
        *(undefined *)(param_1 + 0x71) = 1;
        break;
      }
    }
  }
  if ((*(char *)((int)param_1 + 0x1c5) == '\0') &&
     (cVar3 = (**(code **)(*param_1 + 0xe0))(), cVar3 != '\0')) {
    pcVar1 = *(code **)(*param_1 + 0x35c);
    *(undefined *)((int)param_1 + 0x1c5) = 1;
    iVar4 = (*pcVar1)();
    if ((iVar4 != -1) && (piVar5 = (int *)FUN_008fd3a0(iVar4), piVar5 != (int *)0x0)) {
      (**(code **)(*piVar5 + 0x160))();
    }
  }
  *(undefined *)(iStack_24 + 0x24) = 1;
  return;
}



undefined4 * __fastcall FUN_009ccdf0(undefined4 *param_1)

{
  FUN_0045624f();
  param_1[0x72] = 0;
  *(undefined *)(param_1 + 0x71) = 0;
  *(undefined *)((int)param_1 + 0x1c5) = 0;
  *param_1 = wxNotebook::vftable;
  param_1[0x65] = wxNotebook::vftable;
  return param_1;
}



void __thiscall FUN_009cce20(int param_1_00,undefined4 param_1,int param_2,uint *param_3)

{
  uint uVar1;
  undefined **local_78 [2];
  int iStack_70;
  undefined4 local_6c;
  uint uStack_4c;
  undefined4 uStack_3c;
  uint uStack_38;
  void *pvStack_34;
  undefined4 uStack_2c;
  char local_1c;
  LRESULT local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7818;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_78;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032bd44c,*(undefined4 *)(param_1_00 + 0x40));
  local_1c = '\x01';
  local_78[0] = wxBookCtrlEvent::vftable;
  local_18 = -1;
  local_14 = 0xffffffff;
  local_4 = 0;
  if (*(int *)(param_2 + 8) == -0x228) {
    local_6c = DAT_032e146c;
  }
  else {
    if (*(int *)(param_2 + 8) != -0x227) {
      FUN_00936930(param_1,param_2,param_3);
      local_4 = 0xffffffff;
      FUN_00a1f4e0(uVar1);
      goto LAB_009ccf9f;
    }
    local_6c = DAT_032e1468;
  }
  local_18 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x130b,0,0);
  local_14 = *(undefined4 *)(param_1_00 + 0x1bc);
  uStack_2c = param_1;
  iStack_70 = param_1_00;
  if (*(int *)(param_2 + 8) == -0x227) {
    FUN_009cb7d0(local_18);
  }
  FUN_0091c170(local_78);
  local_4 = 0xffffffff;
  *param_3 = (uint)(local_1c == '\0');
  _free(pvStack_34);
  if (7 < uStack_38) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_4c);
  }
  uStack_4c = uStack_4c & 0xffff0000;
  uStack_38 = 7;
  uStack_3c = 0;
  local_78[0] = wxObject::vftable;
  FUN_0083e850();
LAB_009ccf9f:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009ccfd0(int *param_1_00,int param_1,uint param_3)

{
  short sVar1;
  uint uVar2;
  LRESULT LVar3;
  short *psVar4;
  undefined4 local_254;
  undefined4 auStack_250 [3];
  short *psStack_244;
  undefined4 uStack_240;
  undefined auStack_234 [4];
  uint uStack_230;
  undefined4 uStack_220;
  uint uStack_21c;
  void *pvStack_218;
  short asStack_210 [256];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be784b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_254;
  ExceptionList = &local_c;
  local_254 = 0;
  uVar2 = (**(code **)(*param_1_00 + 0x358))(DAT_0323f878 ^ (uint)&stack0xfffffda0);
  if (param_3 < uVar2) {
    psStack_244 = asStack_210;
    auStack_250[0] = 1;
    uStack_240 = 0x100;
    uStack_21c = 7;
    uStack_220 = 0;
    uStack_230 = uStack_230 & 0xffff0000;
    pvStack_218 = (void *)0x0;
    uStack_4 = 0;
    LVar3 = SendMessageW((HWND)param_1_00[0x4f],0x133c,param_3,(LPARAM)auStack_250);
    if (LVar3 != 0) {
      if (psStack_244 == (short *)0x0) {
        FUN_00432156();
      }
      else {
        psVar4 = psStack_244;
        do {
          sVar1 = *psVar4;
          psVar4 = psVar4 + 1;
        } while (sVar1 != 0);
        FID_conflict_assign(psStack_244,(int)psVar4 - (int)(psStack_244 + 1) >> 1);
      }
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(auStack_234,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(pvStack_218);
    if (7 < uStack_21c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_230);
    }
  }
  else {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\notebook.cpp",0x1b5,"wxNotebook::GetPageText",
                   "((nPage) < GetPageCount())",L"notebook page out of range");
    }
    FUN_004325b6(PTR_DAT_03236318);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009cd160(int param_1_00,undefined4 param_1)

{
  int iVar1;
  code **ppcVar2;
  int iVar3;
  undefined4 uVar4;
  uint uStack_a88;
  undefined auStack_a74 [4];
  int local_a70;
  undefined **ppuStack_a6c;
  undefined auStack_a24 [512];
  undefined auStack_824 [2060];
  undefined4 uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be78b7;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_a74;
  uStack_a88 = DAT_0323f878 ^ (uint)&stack0xfffff57c;
  ExceptionList = &local_c;
  local_a70 = 0;
  iVar1 = FUN_0098e820();
  if (iVar1 != 0) {
    ppcVar2 = (code **)FUN_0098e820();
    if (ppcVar2 == (code **)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = (**ppcVar2)(*(undefined4 *)(param_1_00 + 0x13c),&DAT_00d910d4);
    }
    local_4 = 0;
    local_a70 = iVar1;
    if (iVar1 != 0) {
      iVar3 = FUN_0098e820();
      iVar3 = (**(code **)(iVar3 + 0x3c))(iVar1,10,1,0xeed,auStack_a74);
      if (iVar3 == 0) {
        if (uStack_a88 == 1) {
          iVar3 = FUN_0098e820();
          (**(code **)(iVar3 + 0x3c))(iVar1,10,1,0xeda,&uStack_a88);
        }
        FUN_008fee20(&stack0xfffff580,uStack_a88);
        uStack_18._0_1_ = 1;
        if (DAT_0323d008 == -1) {
          iVar3 = FUN_0098e820();
          iVar3 = (**(code **)(iVar3 + 0xac))(auStack_824,0x400,auStack_a24,0x100,0,0);
          if (iVar3 == 0) {
            FUN_004325b6(auStack_824);
            uStack_18._0_1_ = 2;
            FUN_004325b6(auStack_a24);
            uStack_18 = CONCAT31(uStack_18._1_3_,3);
            iVar3 = FUN_008213b7(L"Aero");
            if (iVar3 == -1) {
LAB_009cd303:
              DAT_0323d008 = 0;
            }
            else {
              iVar3 = FUN_008507a0(L"NormalColor");
              DAT_0323d008 = 1;
              if (iVar3 != 0) goto LAB_009cd303;
            }
            FUN_0040159c();
            uStack_18._0_1_ = 1;
            FUN_0040159c();
            goto LAB_009cd322;
          }
          DAT_0323d008 = 0;
        }
        else {
LAB_009cd322:
          if (DAT_0323d008 == 1) {
            uVar4 = FUN_004561e7(0xff,0xff,0xff,0xff);
            uStack_18._0_1_ = 4;
            FUN_004722cb(uVar4);
            uStack_18._0_1_ = 1;
            ppuStack_a6c = wxObject::vftable;
            FUN_0083e850();
          }
        }
        FUN_00458700(&stack0xfffff580);
        uStack_18 = (uint)uStack_18._1_3_ << 8;
        FUN_0083e850();
      }
      else {
        FUN_0091de40(param_1);
      }
      uStack_18 = 0xffffffff;
      iVar3 = FUN_0098e820();
      (**(code **)(iVar3 + 4))(iVar1);
      goto LAB_009cd3b6;
    }
    local_4 = 0xffffffff;
  }
  FUN_0091de40(param_1);
LAB_009cd3b6:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall
FUN_009cd3f0(int *param_1_00,uint param_1,int *param_2,int param_4,undefined4 param_5,int param_6)

{
  HWND hWnd;
  void **ppvVar1;
  char cVar2;
  uint uVar3;
  LRESULT LVar4;
  uint uStack_8c;
  undefined4 uStack_88;
  undefined4 uStack_84;
  int iStack_80;
  undefined4 uStack_7c;
  int iStack_78;
  undefined4 uStack_74;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be790b;
  local_c = ExceptionList;
  if (param_2 == (int *)0x0) {
    ppvVar1 = &local_c;
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return 0;
    }
  }
  else {
    ExceptionList = &local_c;
    uVar3 = (**(code **)(*param_1_00 + 0x358))();
    if ((param_1 < uVar3) || (uVar3 = (**(code **)(*param_1_00 + 0x358))(), param_1 == uVar3)) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((int *)param_2[0x11] != param_1_00)) {
        FUN_00840480();
      }
      uVar3 = 0;
      uStack_8c = 0;
      uStack_88 = 0;
      uStack_84 = 0;
      iStack_80 = 0;
      uStack_7c = 0;
      iStack_78 = 0;
      uStack_74 = 0;
      if (param_6 != -1) {
        uVar3 = 2;
        uStack_8c = 2;
        iStack_78 = param_6;
      }
      if (*(int *)(param_4 + 0x14) != 0) {
        uStack_8c = uVar3 | 1;
        if (*(uint *)(param_4 + 0x18) < 8) {
          iStack_80 = param_4 + 4;
        }
        else {
          iStack_80 = *(int *)(param_4 + 4);
        }
      }
      hWnd = (HWND)param_2[0x4f];
      uVar3 = GetWindowLongW(hWnd,-0x10);
      SetWindowLongW(hWnd,-0x10,uVar3 & 0xefffffff);
      (**(code **)(*param_2 + 0xcc))();
      FUN_009cbc70();
      LVar4 = SendMessageW((HWND)param_1_00[0x4f],0x133e,param_1,(LPARAM)&uStack_8c);
      if (LVar4 == -1) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar2 = FUN_00846b30(1);
        if (cVar2 == '\0') {
          ExceptionList = local_c;
          return 0;
        }
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_00432231();
        uStack_4._0_1_ = 1;
        FUN_008423d0();
        uStack_4._0_1_ = 3;
        FUN_00848860();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
        ExceptionList = local_c;
        return 0;
      }
      if (param_1_00[0x69] == 0) {
        FUN_009cc5e0();
      }
      FUN_0086a0a0();
      if ((param_1_00[0x69] == 1) || (((uint)param_1_00[0x38] >> 9 & 1) != 0)) {
        FUN_009cbc70();
      }
      if ((int)param_1 <= param_1_00[0x6f]) {
        param_1_00[0x6f] = param_1_00[0x6f] + 1;
      }
      FUN_0094a910();
      FUN_0091a950();
      ExceptionList = local_c;
      return 1;
    }
    ppvVar1 = (void **)ExceptionList;
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      ExceptionList = local_c;
      return 0;
    }
  }
  ExceptionList = ppvVar1;
  FUN_00840480();
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_009cd6e0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be79a1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  param_1_00[9] = 0;
  param_1_00[0x11] = 7;
  param_1_00[0x10] = 0;
  *(undefined2 *)(param_1_00 + 0xc) = 0;
  param_1_00[0x12] = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_0086a600(uVar1);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00853ce0(0);
  *param_1_00 = param_1;
  param_1_00[1] = 1;
  *(undefined *)(param_1_00 + 0x14) = 0;
  *(undefined *)((int)param_1_00 + 0x51) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009cd780(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be79e1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 2;
  FUN_00853f30(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0086aa30();
  _free(*(void **)(param_1 + 0x48));
  if (7 < *(uint *)(param_1 + 0x44)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x30));
  }
  *(undefined4 *)(param_1 + 0x44) = 7;
  *(undefined4 *)(param_1 + 0x40) = 0;
  *(undefined2 *)(param_1 + 0x30) = 0;
  _free(*(void **)(param_1 + 0x24));
  if (7 < *(uint *)(param_1 + 0x20)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0xc));
  }
  *(undefined4 *)(param_1 + 0x20) = 7;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(undefined2 *)(param_1 + 0xc) = 0;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009cd840(int param_1_00,int param_1)

{
  char cVar1;
  int *piVar2;
  undefined auStack_64 [3];
  char cStack_61;
  undefined local_60 [4];
  undefined4 uStack_5c;
  uint uStack_48;
  void *pvStack_44;
  undefined local_3c [4];
  uint local_38;
  undefined4 local_28;
  uint local_24;
  void *local_20;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00bd7e10;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_64;
  ExceptionList = &local_c;
  if (param_1 != -1) {
    local_24 = 7;
    local_28 = 0;
    local_38 = local_38 & 0xffff0000;
    local_20 = (void *)0x0;
    local_18 = 0xffffffff;
    local_14 = 0;
    local_4 = 0;
    cVar1 = FUN_00984670(param_1,local_3c,DAT_0323f878 ^ (uint)&stack0xffffff90);
    if (cVar1 == '\0') {
      FUN_004325b6(PTR_DAT_03236318);
      local_4._0_1_ = 1;
      piVar2 = (int *)FUN_009796d0();
      cVar1 = (**(code **)(*piVar2 + 0xc))(param_1,local_3c,local_60,1);
      cStack_61 = cVar1 == '\0';
      local_4 = (uint)local_4._1_3_ << 8;
      _free(pvStack_44);
      if (7 < uStack_48) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_5c);
      }
      if (cStack_61 != '\0') {
        FUN_008672a0();
        goto LAB_009cd96a;
      }
    }
    *(undefined4 *)(param_1_00 + 4) = local_14;
    if ((undefined *)(param_1_00 + 8) != local_3c) {
      FID_conflict_assign(local_3c,0,0xffffffff);
    }
    _free(local_20);
    if (7 < local_24) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_38);
    }
  }
LAB_009cd96a:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined __thiscall FUN_009cd990(int **param_1_00,int param_1,int param_2)

{
  undefined uVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined local_78 [4];
  uint uStack_74;
  undefined4 uStack_64;
  uint uStack_60;
  void *pvStack_5c;
  undefined local_54 [4];
  undefined4 uStack_50;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7a28;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_c;
  if (*(char *)((int)param_1_00 + 0x51) == '\0') {
    if ((*(char *)(param_1_00 + 0x14) == '\0') || ((*(byte *)(param_2 + 0x37) & 1) == 0)) {
      if (param_1_00[1] == (int *)0x1) {
        FUN_004325b6(param_1 + 0x1c);
        local_4 = 2;
        iVar3 = FUN_00853d10(local_54,1,0);
        local_4 = 0xffffffff;
        FUN_0040159c();
        if (iVar3 == -1) {
          FUN_004325b6(param_1 + 0x1c);
          local_4 = 3;
          FUN_00854700(local_54,1);
          local_4 = 0xffffffff;
          FUN_0040159c();
          goto LAB_009cdb56;
        }
      }
      else if ((int *)(uint)*(byte *)(param_1 + 0x17) == param_1_00[1]) {
LAB_009cdb56:
        FUN_004325b6(param_1 + 0x1c);
        local_4 = 4;
        uVar1 = (**(code **)(**param_1_00 + 0xc))(local_30);
        FUN_0040159c();
        ExceptionList = local_c;
        return uVar1;
      }
    }
  }
  else {
    uVar1 = *(undefined *)(param_1 + 0x17);
    iVar3 = FUN_0086a8b0(uVar1,0);
    if (iVar3 == -1) {
      FUN_0086a400(uVar1,1);
      uVar4 = FUN_00984490(uVar1,uVar2);
      FUN_004325b6(param_1 + 0x1c);
      local_4 = 0;
      uVar4 = FUN_00891ec0(local_78,uVar4);
      local_4 = CONCAT31(local_4._1_3_,1);
      uVar1 = (**(code **)(**param_1_00 + 0x10))(local_54,uVar4);
      _free(pvStack_5c);
      if (7 < uStack_60) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_74);
      }
      uStack_60 = 7;
      uStack_64 = 0;
      uStack_74 = uStack_74 & 0xffff0000;
      _free(pvStack_38);
      if (uStack_3c < 8) {
        ExceptionList = local_c;
        return uVar1;
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
  }
  ExceptionList = local_c;
  return 1;
}



void __fastcall FUN_009cdbd0(int param_1)

{
  wchar_t *_Source;
  wchar_t wVar1;
  HDC hdc;
  int *piVar2;
  wchar_t *pwVar3;
  uint uVar4;
  int iVar5;
  size_t _Count;
  int aiStack_6c [2];
  char cStack_64;
  tagLOGFONTW tStack_60;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)aiStack_6c;
  hdc = GetDC((HWND)0x0);
  tStack_60.lfCharSet = *(BYTE *)(param_1 + 4);
  piVar2 = (int *)FUN_00432231(aiStack_6c);
  iVar5 = *piVar2;
  if (*(uint *)(iVar5 + 0x18) < 8) {
    iVar5 = iVar5 + 4;
  }
  else {
    iVar5 = *(int *)(iVar5 + 4);
  }
  _Source = (wchar_t *)(iVar5 + piVar2[1] * 2);
  pwVar3 = _Source;
  do {
    wVar1 = *pwVar3;
    pwVar3 = pwVar3 + 1;
  } while (wVar1 != L'\0');
  uVar4 = (int)pwVar3 - (int)(_Source + 1) >> 1;
  _Count = 0x1f;
  if (uVar4 < 0x20) {
    _Count = uVar4;
  }
  _wcsncpy(tStack_60.lfFaceName,_Source,_Count);
  tStack_60.lfFaceName[_Count] = L'\0';
  if ((cStack_64 != '\0') && (aiStack_6c[0] != 0)) {
    _free(*(void **)(aiStack_6c[0] + 0x1c));
    if (7 < *(uint *)(aiStack_6c[0] + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(aiStack_6c[0] + 4));
    }
    *(undefined4 *)(aiStack_6c[0] + 0x18) = 7;
    *(undefined4 *)(aiStack_6c[0] + 0x14) = 0;
    *(undefined2 *)(aiStack_6c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(aiStack_6c[0]);
  }
  tStack_60.lfPitchAndFamily = '\0';
  EnumFontFamiliesExW(hdc,&tStack_60,(FONTENUMPROCW)&LAB_009cdbb0,param_1,0);
  ReleaseDC((HWND)0x0,hdc);
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009cdcd0(undefined4 param_1_00,undefined4 param_1,undefined param_2)

{
  char cVar1;
  uint uVar2;
  undefined local_80 [80];
  undefined local_30;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7a58;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_80;
  uVar2 = DAT_0323f878 ^ (uint)local_80;
  ExceptionList = &local_c;
  FUN_009cd6e0(param_1_00);
  local_4 = 0;
  cVar1 = FUN_009cd840(param_1);
  if (cVar1 != '\0') {
    local_30 = param_2;
    FUN_009cdbd0(uVar2);
  }
  local_4 = 0xffffffff;
  FUN_009cd780();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009cdd80(undefined4 param_1_00,undefined *param_1)

{
  uint uVar1;
  undefined local_80 [44];
  undefined local_54 [37];
  undefined local_2f;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7a88;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_80;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff7c;
  ExceptionList = &local_c;
  FUN_009cd6e0(param_1_00);
  local_4 = 0;
  local_2f = 1;
  if (local_54 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  FUN_009cdbd0(uVar1);
  local_4 = 0xffffffff;
  FUN_009cd780();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009cde30(int param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = *(undefined4 *)(param_1_00 + 0xc);
  *param_1 = *(undefined4 *)(param_1_00 + 8);
  param_1[1] = uVar1;
  return;
}



undefined4 FUN_009cde50(void)

{
  return 1;
}



void __thiscall FUN_009cde60(uint *param_1_00,uint param_1)

{
  if (*param_1_00 < param_1) {
    FUN_0086a310();
    return;
  }
  return;
}



undefined4 __thiscall FUN_009cde80(int param_1_00,uint param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(uint *)(param_1_00 + 4) <= param_1) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    return *(undefined4 *)(*(int *)(param_1_00 + 8) + param_1 * 4);
  }
  return *(undefined4 *)(*(int *)(param_1_00 + 8) + param_1 * 4);
}



void __fastcall FUN_009cded0(int param_1)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = *(uint *)(param_1 + 4);
  uVar3 = 0;
  if (uVar2 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar2 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar1 = *(int **)(*(int *)(param_1 + 8) + uVar3 * 4);
      if (piVar1 != (int *)0x0) {
        (**(code **)(*piVar1 + 4))(1);
      }
      uVar2 = *(uint *)(param_1 + 4);
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  return;
}



void __thiscall FUN_009cdf30(int param_1_00,uint param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x38) <= param_1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  uVar1 = *(uint *)(*(int *)(*(int *)(param_1_00 + 0x3c) + param_1 * 4) + 4);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x2c) <= uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  iVar2 = *(int *)(*(int *)(param_1_00 + 0x30) + uVar1 * 4);
  if (param_2 != iVar2) {
    FUN_0083ea60(iVar2);
  }
  FUN_008ff820();
  return;
}



void FUN_009cdfc0(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  return;
}



undefined4 __thiscall FUN_009cdff0(int param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x38) <= param_1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  return **(undefined4 **)(*(int *)(param_1_00 + 0x3c) + param_1 * 4);
}



undefined FUN_009ce040(int *param_1)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  int unaff_EBP;
  uint unaff_ESI;
  longlong lVar4;
  undefined *puStack_24;
  undefined4 uStack_20;
  undefined *puStack_14;
  int iStack_10;
  undefined auStack_8 [4];
  undefined auStack_4 [4];
  
  iStack_10 = 0x9ce051;
  cVar2 = (**(code **)(*param_1 + 0x1c))();
  if (cVar2 != '\0') {
    iStack_10 = 0;
    puStack_14 = (undefined *)0x0;
    lVar4 = (**(code **)(*param_1 + 0x3c))();
    if (lVar4 == -1) {
      return 0;
    }
  }
  iStack_10 = 4;
  puStack_14 = auStack_8;
  piVar3 = (int *)(**(code **)(*param_1 + 0x2c))();
  cVar2 = (**(code **)(*piVar3 + 0x10))();
  if ((cVar2 != '\0') && (iStack_10 == 0x46464952)) {
    uStack_20 = 0x9ce0a6;
    cVar2 = (**(code **)(*param_1 + 0x10))();
    if (cVar2 == '\0') {
      return 0;
    }
    while( true ) {
      if (iStack_10 == 0x68696e61) {
        return 1;
      }
      uStack_20 = 4;
      puStack_24 = auStack_4;
      (**(code **)(*param_1 + 0x2c))();
      if ((unaff_ESI & 1) != 0) {
        unaff_ESI = unaff_ESI + 1;
      }
      if ((unaff_EBP == 0x46464952) || (unaff_EBP == 0x5453494c)) {
        (**(code **)(*param_1 + 0x2c))(&puStack_14,4);
      }
      else {
        iVar1 = *param_1;
        lVar4 = (**(code **)(iVar1 + 0x40))(0);
        lVar4 = (**(code **)(iVar1 + 0x3c))(lVar4 + (ulonglong)unaff_ESI);
        if (lVar4 == -1) {
          return 0;
        }
      }
      piVar3 = (int *)(**(code **)(*param_1 + 0x2c))(&puStack_24,4);
      cVar2 = (**(code **)(*piVar3 + 0x10))();
      if (cVar2 == '\0') break;
      cVar2 = (**(code **)(*param_1 + 0x10))();
      if (cVar2 == '\0') {
        return 0;
      }
    }
    return 0;
  }
  return 0;
}



void FUN_009ce170(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_009cded0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_0086a880();
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009ce1d0(int param_1_00,int param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  uint uVar5;
  
  if (param_2 != 0) {
    puVar3 = (undefined4 *)operator_new(8);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      *puVar3 = wxObject::vftable;
      iVar1 = *(int *)(param_1 + 4);
      puVar3[1] = iVar1;
      if (iVar1 != 0) {
        *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
      }
      *puVar3 = wxImage::vftable;
    }
    iVar1 = *(int *)(param_1_00 + 4);
    if (puVar3 != (undefined4 *)0x0) {
      FUN_0086a0a0(puVar3,iVar1 * 4 >> 2,param_2);
    }
    uVar5 = 1;
    if (1 < param_2) {
      iVar4 = iVar1 * 4;
      do {
        iVar4 = iVar4 + 4;
        puVar3 = (undefined4 *)operator_new(8);
        if (puVar3 == (undefined4 *)0x0) {
          puVar3 = (undefined4 *)0x0;
        }
        else {
          *puVar3 = wxObject::vftable;
          iVar2 = *(int *)(param_1 + 4);
          puVar3[1] = iVar2;
          if (iVar2 != 0) {
            *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
          }
          *puVar3 = wxImage::vftable;
        }
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar5 + iVar1))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 **)(iVar4 + *(int *)(param_1_00 + 8)) = puVar3;
        uVar5 = uVar5 + 1;
      } while (uVar5 < param_2);
    }
  }
  return;
}



void __thiscall FUN_009ce2c0(int param_1_00,undefined4 *param_1,uint param_2)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  uint uVar4;
  
  if (param_2 != 0) {
    puVar2 = (undefined4 *)operator_new(8);
    if (puVar2 == (undefined4 *)0x0) {
      puVar2 = (undefined4 *)0x0;
    }
    else {
      *puVar2 = *param_1;
      puVar2[1] = param_1[1];
    }
    iVar1 = *(int *)(param_1_00 + 4);
    if (puVar2 != (undefined4 *)0x0) {
      FUN_0086a0a0(puVar2,iVar1 * 4 >> 2,param_2);
    }
    uVar4 = 1;
    if (1 < param_2) {
      iVar3 = iVar1 * 4;
      do {
        iVar3 = iVar3 + 4;
        puVar2 = (undefined4 *)operator_new(8);
        if (puVar2 == (undefined4 *)0x0) {
          puVar2 = (undefined4 *)0x0;
        }
        else {
          *puVar2 = *param_1;
          puVar2[1] = param_1[1];
        }
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar4 + iVar1))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 **)(iVar3 + *(int *)(param_1_00 + 8)) = puVar2;
        uVar4 = uVar4 + 1;
      } while (uVar4 < param_2);
    }
  }
  return;
}



undefined4 * __fastcall FUN_009ce3a0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7ac3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0098c360(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1 = wxANIDecoder::vftable;
  FUN_0086a600();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_0086a600();
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_009ce410(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00be7ac3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxANIDecoder::vftable;
  local_4 = 1;
  FUN_00a15c90(uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_009ce170();
  local_4 = 0xffffffff;
  FUN_0098c3d0();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009ce480(int param_1_00,undefined4 param_1,uint param_2)

{
  uint uVar1;
  char cVar2;
  undefined uVar3;
  uint uVar4;
  uint uVar5;
  undefined4 uVar6;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x38) <= param_2)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  uVar1 = *(uint *)(*(int *)(*(int *)(param_1_00 + 0x3c) + param_2 * 4) + 4);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x2c) <= uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  cVar2 = FUN_008ffb60();
  if (cVar2 == '\0') {
    FUN_00458700(&PTR_vftable_03238cd0);
    return param_1;
  }
  uVar6 = 0xff;
  FUN_009cde80(uVar1);
  uVar4 = FUN_008ffab0(uVar6);
  uVar4 = uVar4 & 0xff;
  FUN_009cde80(uVar1);
  uVar5 = FUN_008ffa60(uVar4);
  uVar5 = uVar5 & 0xff;
  FUN_009cde80(uVar1);
  uVar3 = FUN_008ffa10(uVar5);
  FUN_004561e7(uVar3,uVar5,uVar4,uVar6);
  return param_1;
}



uint __thiscall FUN_009ce570(int param_1_00,int *param_1)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  int *piVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  int iVar8;
  uint uVar9;
  undefined8 uVar10;
  longlong lVar11;
  uint uStack_4c;
  int local_48;
  int iStack_44;
  undefined **ppuStack_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  int iStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  piVar1 = param_1;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be7ae8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar8 = 0;
  local_48 = 0;
  cVar2 = (**(code **)(*param_1 + 0x1c))(DAT_0323f878 ^ (uint)&stack0xffffffa4);
  if (cVar2 != '\0') {
    uVar10 = (**(code **)(*piVar1 + 0x3c))(0,0,0);
    uVar3 = (uint)uVar10 & (uint)((ulonglong)uVar10 >> 0x20);
    if (uVar3 == 0xffffffff) goto LAB_009ceae2;
  }
  piVar4 = (int *)(**(code **)(*piVar1 + 0x2c))(&iStack_44,4);
  uVar3 = (**(code **)(*piVar4 + 0x10))();
  if (((char)uVar3 != '\0') && (iStack_44 == 0x46464952)) {
    *(undefined4 *)(param_1_00 + 0x10) = 0;
    *(int *)(param_1_00 + 8) = DAT_03238d04;
    *(int *)(param_1_00 + 0xc) = DAT_03238d08;
    FUN_009cded0();
    FUN_0086a880();
    FUN_0086cea0();
    FUN_0086a880();
    cVar2 = (**(code **)(*piVar1 + 0x38))();
    while (cVar2 == '\0') {
      piVar4 = (int *)(**(code **)(*piVar1 + 0x2c))(&uStack_4c,4);
      uVar3 = (**(code **)(*piVar4 + 0x10))();
      if ((char)uVar3 == '\0') goto LAB_009ceae2;
      if ((uStack_4c & 1) != 0) {
        uStack_4c = uStack_4c + 1;
      }
      if ((iStack_44 == 0x46464952) || (iStack_44 == 0x5453494c)) {
        piVar4 = (int *)(**(code **)(*piVar1 + 0x2c))(&param_1,4);
        uVar3 = (**(code **)(*piVar4 + 0x10))();
        if ((char)uVar3 == '\0') goto LAB_009ceae2;
      }
      else if (iStack_44 == 0x68696e61) {
        uVar3 = 0x68696e61;
        if ((uStack_4c != 0x24) || (*(int *)(param_1_00 + 0x10) != 0)) goto LAB_009ceae2;
        (**(code **)(*piVar1 + 0x2c))(auStack_30,0x24);
        uVar3 = FUN_0089f6b0();
        if ((char)uVar3 != '\0') goto LAB_009ceae2;
        *(undefined4 *)(param_1_00 + 8) = uStack_24;
        *(undefined4 *)(param_1_00 + 0xc) = uStack_20;
        *(uint *)(param_1_00 + 0x10) = uStack_28;
        uVar3 = uStack_28;
        if (uStack_28 == 0) goto LAB_009ceae2;
        iVar8 = (iStack_14 * 1000) / 0x3c;
        local_48 = iVar8;
        FUN_009cde60(uStack_2c);
        uStack_38 = 0;
        uStack_34 = 0xffffffff;
        FUN_009ce2c0(&uStack_38,*(undefined4 *)(param_1_00 + 0x10));
      }
      else if (iStack_44 == 0x65746172) {
        uVar3 = *(uint *)(param_1_00 + 0x10);
        if (uVar3 == 0) goto LAB_009ceae2;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x38) != uVar3)) {
          FUN_008402e0("..\\..\\src\\common\\anidecod.cpp",0x126,"wxANIDecoder::Load",
                       "m_info.GetCount() == m_nFrames",0);
        }
        uVar9 = 0;
        if (*(int *)(param_1_00 + 0x10) != 0) {
          do {
            piVar4 = (int *)(**(code **)(*piVar1 + 0x2c))(&param_1,4);
            uVar3 = (**(code **)(*piVar4 + 0x10))();
            if ((char)uVar3 == '\0') goto LAB_009ceae2;
            iVar8 = (int)param_1 * 1000;
            piVar4 = (int *)FUN_009cde80(uVar9);
            uVar9 = uVar9 + 1;
            *piVar4 = iVar8 / 0x3c;
            iVar8 = local_48;
          } while (uVar9 < *(uint *)(param_1_00 + 0x10));
        }
      }
      else if (iStack_44 == 0x20716573) {
        uVar3 = *(uint *)(param_1_00 + 0x10);
        if (uVar3 == 0) goto LAB_009ceae2;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x38) != uVar3)) {
          FUN_008402e0("..\\..\\src\\common\\anidecod.cpp",0x134,"wxANIDecoder::Load",
                       "m_info.GetCount() == m_nFrames",0);
        }
        uVar9 = 0;
        if (*(int *)(param_1_00 + 0x10) != 0) {
          do {
            piVar4 = (int *)(**(code **)(*piVar1 + 0x2c))(&param_1,4);
            uVar3 = (**(code **)(*piVar4 + 0x10))();
            if ((char)uVar3 == '\0') goto LAB_009ceae2;
            iVar5 = FUN_009cde80(uVar9);
            uVar9 = uVar9 + 1;
            *(int **)(iVar5 + 4) = param_1;
          } while (uVar9 < *(uint *)(param_1_00 + 0x10));
        }
      }
      else if (iStack_44 == 0x6e6f6369) {
        uStack_3c = 0;
        ppuStack_40 = wxImage::vftable;
        uStack_4 = 0;
        cVar2 = FUN_0098b9f0(&ppuStack_40,piVar1,0,0xffffffff);
        if (cVar2 == '\0') {
          uStack_4 = 0xffffffff;
          ppuStack_40 = wxObject::vftable;
          uVar3 = FUN_0083e850();
          goto LAB_009ceae2;
        }
        FUN_009001a0(0x1b);
        FUN_009ce1d0(&ppuStack_40,1);
        uStack_4 = 0xffffffff;
        ppuStack_40 = wxObject::vftable;
        FUN_0083e850();
      }
      else {
        iVar8 = *piVar1;
        lVar11 = (**(code **)(iVar8 + 0x40))(0);
        uVar10 = (**(code **)(iVar8 + 0x3c))(lVar11 + (ulonglong)uStack_4c);
        uVar3 = (uint)uVar10 & (uint)((ulonglong)uVar10 >> 0x20);
        iVar8 = local_48;
        if (uVar3 == 0xffffffff) goto LAB_009ceae2;
      }
      piVar4 = (int *)(**(code **)(*piVar1 + 0x2c))(&iStack_44,4);
      cVar2 = (**(code **)(*piVar4 + 0x10))();
      if ((cVar2 == '\0') && (uVar3 = (**(code **)(*piVar1 + 0x38))(), (char)uVar3 == '\0'))
      goto LAB_009ceae2;
      cVar2 = (**(code **)(*piVar1 + 0x38))();
    }
    uVar3 = *(uint *)(param_1_00 + 0x10);
    if (uVar3 != 0) {
      if ((uVar3 == *(uint *)(param_1_00 + 0x2c)) && (uVar9 = 0, uVar3 != 0)) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x38) <= uVar9)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          if (*(int *)(*(int *)(*(int *)(param_1_00 + 0x3c) + uVar9 * 4) + 4) == -1) {
            iVar5 = FUN_009cde80(uVar9);
            *(uint *)(iVar5 + 4) = uVar9;
          }
          uVar9 = uVar9 + 1;
        } while (uVar9 < *(uint *)(param_1_00 + 0x10));
      }
      uVar3 = 0;
      if (*(int *)(param_1_00 + 0x10) != 0) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x38) <= uVar3)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          if (**(int **)(*(int *)(param_1_00 + 0x3c) + uVar3 * 4) == 0) {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x38) <= uVar3)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            **(int **)(*(int *)(param_1_00 + 0x3c) + uVar3 * 4) = iVar8;
          }
          uVar3 = uVar3 + 1;
        } while (uVar3 < *(uint *)(param_1_00 + 0x10));
      }
      if ((*(int *)(param_1_00 + 8) == 0) || (*(int *)(param_1_00 + 0xc) == 0)) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x2c) == 0)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 0x2c) == 0)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        uVar6 = FUN_00900150();
        uVar7 = FUN_00900100();
        *(undefined4 *)(param_1_00 + 8) = uVar7;
        *(undefined4 *)(param_1_00 + 0xc) = uVar6;
      }
      if ((*(int *)(param_1_00 + 8) == DAT_03238d04) && (*(int *)(param_1_00 + 0xc) == DAT_03238d08)
         ) {
        ExceptionList = local_c;
        return 0;
      }
      ExceptionList = local_c;
      return 1;
    }
  }
LAB_009ceae2:
  ExceptionList = local_c;
  return uVar3 & 0xffffff00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x40);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009ce3a0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_009ceb80(undefined4 param_1_00,byte param_1)

{
  FUN_009ce410();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_009cec20(int *param_1,int *param_2)

{
  short sVar1;
  int iVar2;
  int iVar3;
  short *psVar4;
  short *psVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int local_18;
  int local_14;
  int local_10;
  int local_c;
  int local_4;
  
  iVar2 = *(int *)(*param_1 + 0x18);
  local_18 = param_2[1];
  iVar7 = param_2[4];
  local_4 = param_2[5];
  param_1 = (int *)param_2[2];
  local_10 = *param_2;
  local_14 = param_2[3];
  iVar3 = local_10;
  if (local_10 < local_18) {
    for (; iVar3 <= local_18; iVar3 = iVar3 + 1) {
      if ((int)param_1 <= local_14) {
        psVar4 = (short *)(*(int *)(iVar2 + iVar3 * 4) + ((int)param_1 * 0x20 + iVar7) * 2);
        iVar6 = iVar7;
        iVar8 = (int)param_1;
        psVar5 = psVar4;
        do {
          for (; iVar6 <= local_4; iVar6 = iVar6 + 1) {
            sVar1 = *psVar4;
            psVar4 = psVar4 + 1;
            if (sVar1 != 0) {
              *param_2 = iVar3;
              local_10 = iVar3;
              goto LAB_009cecd5;
            }
          }
          iVar8 = iVar8 + 1;
          psVar4 = psVar5 + 0x20;
          iVar6 = iVar7;
          psVar5 = psVar4;
        } while (iVar8 <= local_14);
      }
    }
LAB_009cecd5:
    iVar3 = local_18;
    if (local_10 < local_18) {
      do {
        if ((int)param_1 <= local_14) {
          psVar4 = (short *)(*(int *)(iVar2 + iVar3 * 4) + ((int)param_1 * 0x20 + iVar7) * 2);
          iVar6 = iVar7;
          iVar8 = (int)param_1;
          psVar5 = psVar4;
          do {
            for (; iVar6 <= local_4; iVar6 = iVar6 + 1) {
              sVar1 = *psVar4;
              psVar4 = psVar4 + 1;
              if (sVar1 != 0) {
                param_2[1] = iVar3;
                local_18 = iVar3;
                goto LAB_009ced4a;
              }
            }
            iVar8 = iVar8 + 1;
            psVar4 = psVar5 + 0x20;
            iVar6 = iVar7;
            psVar5 = psVar4;
          } while (iVar8 <= local_14);
        }
        iVar3 = iVar3 + -1;
      } while (local_10 <= iVar3);
    }
  }
LAB_009ced4a:
  if ((int)param_1 < local_14) {
    iVar3 = ((int)param_1 * 0x20 + iVar7) * 2;
    iVar6 = local_10;
    local_c = (int)param_1;
    do {
      for (; iVar6 <= local_18; iVar6 = iVar6 + 1) {
        psVar4 = (short *)(*(int *)(iVar2 + iVar6 * 4) + iVar3);
        for (iVar8 = iVar7; iVar8 <= local_4; iVar8 = iVar8 + 1) {
          sVar1 = *psVar4;
          psVar4 = psVar4 + 1;
          if (sVar1 != 0) {
            param_1 = (int *)local_c;
            param_2[2] = local_c;
            goto LAB_009cedc0;
          }
        }
      }
      local_c = local_c + 1;
      iVar3 = iVar3 + 0x40;
      iVar6 = local_10;
    } while (local_c <= local_14);
LAB_009cedc0:
    if ((int)param_1 < local_14) {
      iVar3 = (local_14 * 0x20 + iVar7) * 2;
      iVar6 = local_10;
      local_c = local_14;
      do {
        for (; iVar6 <= local_18; iVar6 = iVar6 + 1) {
          psVar4 = (short *)(*(int *)(iVar2 + iVar6 * 4) + iVar3);
          for (iVar8 = iVar7; iVar8 <= local_4; iVar8 = iVar8 + 1) {
            sVar1 = *psVar4;
            psVar4 = psVar4 + 1;
            if (sVar1 != 0) {
              local_14 = local_c;
              param_2[3] = local_c;
              goto LAB_009cee2a;
            }
          }
        }
        local_c = local_c + -1;
        iVar3 = iVar3 + -0x40;
        iVar6 = local_10;
      } while ((int)param_1 <= local_c);
    }
  }
LAB_009cee2a:
  iVar3 = iVar7;
  if (iVar7 < local_4) {
    do {
      if (local_10 <= local_18) {
        iVar6 = local_10;
        do {
          psVar4 = (short *)(*(int *)(iVar2 + iVar6 * 4) + ((int)param_1 * 0x20 + iVar3) * 2);
          for (iVar8 = (int)param_1; iVar8 <= local_14; iVar8 = iVar8 + 1) {
            if (*psVar4 != 0) {
              param_2[4] = iVar3;
              iVar7 = iVar3;
              goto LAB_009ceea7;
            }
            psVar4 = psVar4 + 0x20;
          }
          iVar6 = iVar6 + 1;
        } while (iVar6 <= local_18);
      }
      iVar3 = iVar3 + 1;
    } while (iVar3 <= local_4);
LAB_009ceea7:
    iVar3 = local_4;
    if (iVar7 < local_4) {
      do {
        if (local_10 <= local_18) {
          iVar6 = local_10;
          do {
            psVar4 = (short *)(*(int *)(iVar2 + iVar6 * 4) + ((int)param_1 * 0x20 + iVar3) * 2);
            for (iVar8 = (int)param_1; iVar8 <= local_14; iVar8 = iVar8 + 1) {
              if (*psVar4 != 0) {
                param_2[5] = iVar3;
                local_4 = iVar3;
                goto LAB_009cef17;
              }
              psVar4 = psVar4 + 0x20;
            }
            iVar6 = iVar6 + 1;
          } while (iVar6 <= local_18);
        }
        iVar3 = iVar3 + -1;
      } while (iVar7 <= iVar3);
    }
  }
LAB_009cef17:
  iVar3 = (local_4 - iVar7) * 8;
  iVar6 = (local_14 - (int)param_1) * 0xc;
  iVar8 = (local_18 - local_10) * 0x10;
  param_2[6] = iVar3 * iVar3 + iVar6 * iVar6 + iVar8 * iVar8;
  iVar3 = 0;
  local_c = local_10;
  if (local_10 <= local_18) {
    do {
      if ((int)param_1 <= local_14) {
        local_10 = (local_14 - (int)param_1) + 1;
        psVar4 = (short *)(*(int *)(iVar2 + local_c * 4) + ((int)param_1 * 0x20 + iVar7) * 2);
        do {
          if (iVar7 <= local_4) {
            iVar6 = (local_4 - iVar7) + 1;
            psVar5 = psVar4;
            do {
              if (*psVar5 != 0) {
                iVar3 = iVar3 + 1;
              }
              psVar5 = psVar5 + 1;
              iVar6 = iVar6 + -1;
            } while (iVar6 != 0);
          }
          psVar4 = psVar4 + 0x20;
          local_10 = local_10 + -1;
        } while (local_10 != 0);
      }
      local_c = local_c + 1;
    } while (local_c <= local_18);
    param_2[7] = iVar3;
    return;
  }
  param_2[7] = 0;
  return;
}



void FUN_009ceff0(undefined4 param_1,int param_2,int param_3,int param_4)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  char cVar4;
  int iVar5;
  int *piVar6;
  int local_4;
  
  if (param_3 < param_4) {
    local_4 = param_3 * 2;
    piVar6 = (int *)(param_3 * 0x20 + 0xc + param_2);
    do {
      iVar3 = 0;
      if (param_4 < local_4) {
        piVar1 = (int *)0x0;
        if (0 < param_3) {
          piVar2 = (int *)(param_2 + 0x18);
          piVar1 = (int *)0x0;
          iVar5 = param_3;
          do {
            if (iVar3 < *piVar2) {
              piVar1 = piVar2 + -6;
              iVar3 = *piVar2;
            }
            piVar2 = piVar2 + 8;
            iVar5 = iVar5 + -1;
          } while (iVar5 != 0);
        }
      }
      else {
        piVar1 = (int *)0x0;
        if (0 < param_3) {
          piVar2 = (int *)(param_2 + 0x1c);
          iVar5 = param_3;
          do {
            if ((iVar3 < *piVar2) && (0 < piVar2[-1])) {
              piVar1 = piVar2 + -7;
              iVar3 = *piVar2;
            }
            piVar2 = piVar2 + 8;
            iVar5 = iVar5 + -1;
          } while (iVar5 != 0);
        }
      }
      if (piVar1 == (int *)0x0) {
        return;
      }
      piVar6[-2] = piVar1[1];
      *piVar6 = piVar1[3];
      piVar6[2] = piVar1[5];
      piVar6[-3] = *piVar1;
      piVar6[-1] = piVar1[2];
      piVar6[1] = piVar1[4];
      iVar5 = (piVar1[1] - *piVar1) * 0x10;
      iVar3 = (piVar1[3] - piVar1[2]) * 0xc;
      cVar4 = iVar5 <= iVar3;
      if (!(bool)cVar4) {
        iVar3 = iVar5;
      }
      if (iVar3 < (piVar1[5] - piVar1[4]) * 8) {
        cVar4 = '\x02';
      }
      if (cVar4 == '\0') {
        iVar3 = (piVar1[1] + *piVar1) / 2;
        piVar1[1] = iVar3;
        piVar6[-3] = iVar3 + 1;
      }
      else if (cVar4 == '\x01') {
        iVar3 = (piVar1[3] + piVar1[2]) / 2;
        piVar1[3] = iVar3;
        piVar6[-1] = iVar3 + 1;
      }
      else if (cVar4 == '\x02') {
        iVar3 = (piVar1[5] + piVar1[4]) / 2;
        piVar1[5] = iVar3;
        piVar6[1] = iVar3 + 1;
      }
      FUN_009cec20(param_1,piVar1);
      FUN_009cec20(param_1,piVar6 + -3);
      local_4 = local_4 + 2;
      param_3 = param_3 + 1;
      piVar6 = piVar6 + 8;
    } while (param_3 < param_4);
  }
  return;
}



void FUN_009cf170(int *param_1,int *param_2,int param_3)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  ushort *puVar11;
  ushort *puVar12;
  int iVar13;
  int iVar14;
  int local_34;
  int local_30;
  int local_2c;
  
  piVar1 = param_2 + 3;
  piVar2 = param_2 + 1;
  piVar3 = param_2 + 5;
  iVar9 = param_2[2];
  iVar4 = param_2[4];
  iVar7 = *param_2;
  iVar14 = 0;
  local_34 = 0;
  local_30 = 0;
  local_2c = 0;
  if (iVar7 <= *piVar2) {
    param_2 = (int *)(iVar7 * 8 + 4);
    do {
      if (iVar9 <= *piVar1) {
        puVar11 = (ushort *)
                  (*(int *)(*(int *)(*param_1 + 0x18) + iVar7 * 4) + (iVar9 * 0x20 + iVar4) * 2);
        iVar5 = (*piVar1 - iVar9) + 1;
        iVar13 = iVar9 * 4 + 2;
        do {
          if (iVar4 <= *piVar3) {
            iVar8 = iVar4 * 8 + 4;
            iVar10 = (*piVar3 - iVar4) + 1;
            puVar12 = puVar11;
            do {
              uVar6 = (uint)*puVar12;
              puVar12 = puVar12 + 1;
              if (uVar6 != 0) {
                local_34 = local_34 + (int)param_2 * uVar6;
                local_30 = local_30 + iVar13 * uVar6;
                iVar14 = iVar14 + uVar6;
                local_2c = local_2c + iVar8 * uVar6;
              }
              iVar8 = iVar8 + 8;
              iVar10 = iVar10 + -1;
            } while (iVar10 != 0);
          }
          puVar11 = puVar11 + 0x20;
          iVar13 = iVar13 + 4;
          iVar5 = iVar5 + -1;
        } while (iVar5 != 0);
      }
      param_2 = (int *)((int)param_2 + 8);
      iVar7 = iVar7 + 1;
    } while (iVar7 <= *piVar2);
  }
  iVar9 = iVar14 >> 1;
  *(char *)(param_3 + *(int *)param_1[2]) = (char)((iVar9 + local_34) / iVar14);
  *(char *)(param_3 + *(int *)(param_1[2] + 4)) = (char)((local_30 + iVar9) / iVar14);
  *(char *)(param_3 + *(int *)(param_1[2] + 8)) = (char)((local_2c + iVar9) / iVar14);
  return;
}



void FUN_009cf2f0(int param_1)

{
  undefined4 *_Memory;
  int iVar1;
  int unaff_EBX;
  int iVar2;
  
  _Memory = (undefined4 *)_malloc(param_1 << 5);
  *_Memory = 0;
  _Memory[1] = 0x1f;
  _Memory[2] = 0;
  _Memory[3] = 0x3f;
  _Memory[4] = 0;
  _Memory[5] = 0x1f;
  FUN_009cec20();
  iVar1 = FUN_009ceff0();
  if (0 < iVar1) {
    iVar2 = 0;
    do {
      FUN_009cf170();
      iVar2 = iVar2 + 1;
    } while (iVar2 < iVar1);
  }
  *(int *)(unaff_EBX + 0xc) = iVar1;
  _free(_Memory);
  return;
}



void __thiscall FUN_009cf370(int param_1_00,int param_1,int param_2,int param_3)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  int in_EAX;
  uint uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int local_428;
  int local_424;
  int aiStack_400 [256];
  
  iVar1 = *(int *)(in_EAX + 0xc);
  iVar7 = param_1_00 + 0x1c;
  local_424 = 0x7fffffff;
  local_428 = 0;
  if (iVar1 < 1) {
    local_424 = 0x7fffffff;
  }
  else {
    piVar2 = *(int **)(in_EAX + 8);
    iVar11 = *piVar2;
    iVar3 = piVar2[1];
    iVar4 = piVar2[2];
    do {
      uVar5 = (uint)*(byte *)(iVar11 + local_428);
      if ((int)uVar5 < param_1) {
        iVar12 = (uVar5 - param_1) * 2;
        iVar12 = iVar12 * iVar12;
        iVar9 = param_1 + 0x18;
LAB_009cf3fc:
        iVar6 = iVar9;
      }
      else {
        iVar6 = param_1 + 0x18;
        iVar9 = param_1;
        if (iVar6 < (int)uVar5) {
          iVar12 = (uVar5 - iVar6) * 2;
          iVar12 = iVar12 * iVar12;
          goto LAB_009cf3fc;
        }
        iVar12 = 0;
        if (param_1 * 2 + 0x18 >> 1 < (int)uVar5) goto LAB_009cf3fc;
      }
      uVar8 = (uint)*(byte *)(iVar3 + local_428);
      iVar6 = (uVar5 - iVar6) * 2;
      if ((int)uVar8 < param_1_00) {
        iVar9 = (uVar8 - param_1_00) * 3;
        iVar12 = iVar12 + iVar9 * iVar9;
        iVar9 = uVar8 - iVar7;
      }
      else {
        if (iVar7 < (int)uVar8) {
          iVar9 = (uVar8 - iVar7) * 3;
          iVar12 = iVar12 + iVar9 * iVar9;
        }
        else if ((int)uVar8 <= iVar7 + param_1_00 >> 1) {
          iVar9 = uVar8 - iVar7;
          goto LAB_009cf465;
        }
        iVar9 = uVar8 - param_1_00;
      }
LAB_009cf465:
      uVar5 = (uint)*(byte *)(iVar4 + local_428);
      if ((int)uVar5 < param_2) {
        iVar12 = iVar12 + (uVar5 - param_2) * (uVar5 - param_2);
        iVar10 = uVar5 - (param_2 + 0x18);
      }
      else {
        iVar10 = param_2 + 0x18;
        if (iVar10 < (int)uVar5) {
          iVar12 = iVar12 + (uVar5 - iVar10) * (uVar5 - iVar10);
        }
        else if ((int)uVar5 <= param_2 * 2 + 0x18 >> 1) {
          iVar10 = uVar5 - iVar10;
          goto LAB_009cf4c3;
        }
        iVar10 = uVar5 - param_2;
      }
LAB_009cf4c3:
      iVar6 = iVar6 * iVar6 + iVar9 * 3 * iVar9 * 3 + iVar10 * iVar10;
      aiStack_400[local_428] = iVar12;
      if (iVar6 < local_424) {
        local_424 = iVar6;
      }
      local_428 = local_428 + 1;
    } while (local_428 < iVar1);
  }
  iVar7 = 0;
  iVar11 = 0;
  if (0 < iVar1) {
    do {
      if (aiStack_400[iVar11] <= local_424) {
        *(char *)(iVar7 + param_3) = (char)iVar11;
        iVar7 = iVar7 + 1;
      }
      iVar11 = iVar11 + 1;
    } while (iVar11 < iVar1);
  }
  return;
}



void FUN_009cf540(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
                 byte *param_7)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int *piVar7;
  byte *pbVar8;
  uint uVar9;
  int local_21c;
  int local_218;
  int local_214;
  int local_210;
  int local_208;
  int local_200 [128];
  
  piVar7 = local_200;
  for (iVar4 = 0x80; iVar4 != 0; iVar4 = iVar4 + -1) {
    *piVar7 = 0x7fffffff;
    piVar7 = piVar7 + 1;
  }
  local_210 = 0;
  if (0 < param_5) {
    do {
      bVar1 = *(byte *)(local_210 + param_6);
      uVar9 = (uint)bVar1;
      piVar7 = *(int **)(param_1 + 8);
      iVar5 = param_3 - (uint)*(byte *)(piVar7[1] + uVar9);
      iVar4 = iVar5 * 3;
      iVar6 = param_4 - (uint)*(byte *)(piVar7[2] + uVar9);
      iVar3 = (param_2 - (uint)*(byte *)(uVar9 + *piVar7)) * 2;
      iVar4 = iVar6 * iVar6 + iVar4 * iVar4 + iVar3 * iVar3;
      iVar6 = (iVar6 + 4) * 0x10;
      local_21c = (iVar3 + 8) * 0x20;
      piVar7 = local_200;
      local_218 = 3;
      pbVar8 = param_7;
      do {
        local_208 = 7;
        iVar3 = iVar4;
        local_214 = (iVar5 * 9 + 0x12) * 8;
        do {
          if (iVar3 < *piVar7) {
            *piVar7 = iVar3;
            *pbVar8 = bVar1;
          }
          iVar2 = iVar3 + iVar6;
          if (iVar2 < piVar7[1]) {
            piVar7[1] = iVar2;
            pbVar8[1] = bVar1;
          }
          iVar2 = iVar2 + iVar6 + 0x80;
          if (iVar2 < piVar7[2]) {
            piVar7[2] = iVar2;
            pbVar8[2] = bVar1;
          }
          iVar2 = iVar2 + iVar6 + 0x100;
          if (iVar2 < piVar7[3]) {
            piVar7[3] = iVar2;
            pbVar8[3] = bVar1;
          }
          iVar3 = iVar3 + local_214;
          local_214 = local_214 + 0x120;
          piVar7 = piVar7 + 4;
          pbVar8 = pbVar8 + 4;
          local_208 = local_208 + -1;
        } while (-1 < local_208);
        iVar4 = iVar4 + local_21c;
        local_21c = local_21c + 0x200;
        local_218 = local_218 + -1;
      } while (-1 < local_218);
      local_210 = local_210 + 1;
    } while (local_210 < param_5);
  }
  return;
}



void __thiscall FUN_009cf6c0(int param_1_00,int *param_1,int param_2,int param_3)

{
  byte *pbVar1;
  undefined4 uVar2;
  short *psVar3;
  byte *pbVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  int *piVar8;
  int *local_18c;
  int local_188;
  byte local_184 [128];
  undefined local_104 [256];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_18c;
  local_188 = *(int *)(*param_1 + 0x18);
  iVar6 = (param_3 >> 2) * 0x20 + 4;
  iVar7 = (param_2 >> 2) * 0x20 + 4;
  local_18c = param_1;
  uVar2 = FUN_009cf370(iVar7,iVar6,local_104);
  FUN_009cf540(local_18c,iVar7,(param_1_00 >> 3) * 0x20 + 2,iVar6,uVar2,local_104,local_184);
  local_18c = (int *)(((param_1_00 >> 3) * 0x100 + (param_3 >> 2) * 4) * 2);
  pbVar4 = local_184;
  piVar8 = (int *)(local_188 + (param_2 >> 2) * 0x10);
  iVar6 = 4;
  do {
    iVar7 = 8;
    piVar5 = local_18c;
    do {
      psVar3 = (short *)(*piVar8 + (int)piVar5);
      *psVar3 = *pbVar4 + 1;
      psVar3[1] = pbVar4[1] + 1;
      psVar3[2] = pbVar4[2] + 1;
      pbVar1 = pbVar4 + 3;
      pbVar4 = pbVar4 + 4;
      piVar5 = piVar5 + 0x10;
      iVar7 = iVar7 + -1;
      psVar3[3] = *pbVar1 + 1;
    } while (iVar7 != 0);
    piVar8 = piVar8 + 1;
    iVar6 = iVar6 + -1;
  } while (iVar6 != 0);
  ___security_check_cookie_4();
  return;
}



void FUN_009cf800(int *param_1,int param_2,int *param_3,int param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  byte *pbVar11;
  int iVar12;
  int iVar13;
  short *psVar14;
  int iVar15;
  uint uVar16;
  int iVar17;
  uint uVar18;
  int iVar19;
  uint uVar20;
  int iVar21;
  undefined *local_5c;
  int local_54;
  int local_50;
  int local_4c;
  int *local_48;
  int local_44;
  int local_40;
  int local_3c;
  int local_38;
  int local_24;
  
  iVar2 = param_1[1];
  iVar3 = *param_1;
  iVar4 = *(int *)(iVar3 + 0x18);
  iVar5 = param_1[5];
  piVar6 = (int *)param_1[2];
  iVar7 = *piVar6;
  iVar8 = piVar6[1];
  iVar9 = piVar6[2];
  iVar10 = *(int *)(iVar3 + 0x28);
  if (0 < param_4) {
    local_48 = param_3;
    local_24 = param_4;
    do {
      iVar12 = 0;
      pbVar11 = *(byte **)((int)local_48 + (param_2 - (int)param_3));
      local_5c = (undefined *)*local_48;
      if (*(char *)(iVar3 + 0x24) == '\0') {
        psVar14 = *(short **)(iVar3 + 0x20);
        local_38 = 1;
        param_4 = 3;
        *(undefined *)(iVar3 + 0x24) = 1;
      }
      else {
        pbVar11 = pbVar11 + iVar2 * 3 + -3;
        local_5c = local_5c + iVar2 + -1;
        psVar14 = (short *)(*(int *)(iVar3 + 0x20) + (iVar2 * 3 + 3) * 2);
        local_38 = -1;
        param_4 = -3;
        *(undefined *)(iVar3 + 0x24) = 0;
      }
      iVar17 = 0;
      iVar15 = 0;
      local_3c = 0;
      local_40 = 0;
      local_44 = 0;
      local_4c = 0;
      local_4c._0_2_ = 0;
      local_50 = 0;
      local_50._0_2_ = 0;
      local_54 = 0;
      local_54._0_2_ = 0;
      for (iVar1 = iVar2; iVar1 != 0; iVar1 = iVar1 + -1) {
        uVar18 = (uint)*(byte *)(*(int *)(iVar10 + (psVar14[param_4] + 8 + iVar17 >> 4) * 4) +
                                 (uint)*pbVar11 + iVar5);
        uVar20 = (uint)*(byte *)(*(int *)(iVar10 + (psVar14[param_4 + 1] + 8 + iVar12 >> 4) * 4) +
                                 (uint)pbVar11[1] + iVar5);
        uVar16 = (uint)*(byte *)(*(int *)(iVar10 + (psVar14[param_4 + 2] + 8 + iVar15 >> 4) * 4) +
                                 (uint)pbVar11[2] + iVar5);
        iVar13 = (int)uVar16 >> 3;
        iVar15 = ((int)uVar20 >> 2) * 0x20 + iVar13;
        iVar17 = (int)uVar18 >> 3;
        iVar12 = *(int *)(iVar4 + iVar17 * 4);
        if (*(short *)(iVar12 + iVar15 * 2) == 0) {
          FUN_009cf6c0(param_1,iVar17,iVar13);
        }
        iVar12 = *(ushort *)(iVar12 + iVar15 * 2) - 1;
        *local_5c = (char)iVar12;
        iVar19 = uVar18 - *(byte *)(iVar12 + iVar7);
        iVar21 = uVar20 - *(byte *)(iVar12 + iVar8);
        iVar13 = uVar16 - *(byte *)(iVar12 + iVar9);
        *psVar14 = (short)local_54 + (short)iVar19 * 3;
        local_54 = local_44 + iVar19 * 5;
        iVar17 = iVar19 * 7;
        psVar14[1] = (short)local_50 + (short)iVar21 * 3;
        local_50 = local_40 + iVar21 * 5;
        iVar12 = iVar21 * 7;
        psVar14[2] = (short)local_4c + (short)iVar13 * 3;
        local_4c = local_3c + iVar13 * 5;
        local_5c = local_5c + local_38;
        iVar15 = iVar13 * 7;
        pbVar11 = pbVar11 + param_4;
        psVar14 = psVar14 + param_4;
        local_3c = iVar13;
        local_40 = iVar21;
        local_44 = iVar19;
      }
      local_48 = local_48 + 1;
      *psVar14 = (short)local_54;
      psVar14[1] = (short)local_50;
      local_24 = local_24 + -1;
      psVar14[2] = (short)local_4c;
    } while (local_24 != 0);
  }
  return;
}



void FUN_009cfac0(void)

{
  int *in_EAX;
  void *pvVar1;
  int *piVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  
  iVar4 = *in_EAX;
  pvVar1 = _malloc(0x7fc);
  piVar2 = (int *)((int)pvVar1 + 0x3fc);
  *(int **)(iVar4 + 0x28) = piVar2;
  iVar4 = 0;
  uVar3 = 0;
  iVar6 = 0;
  piVar5 = piVar2;
  do {
    piVar2[uVar3] = iVar4;
    *piVar5 = iVar6;
    uVar3 = uVar3 + 1;
    piVar5 = piVar5 + -1;
    iVar4 = iVar4 + 1;
    iVar6 = iVar6 + -1;
  } while ((int)uVar3 < 0x10);
  if ((int)uVar3 < 0x30) {
    piVar5 = piVar2 + -uVar3;
    do {
      piVar2[uVar3] = iVar4;
      *piVar5 = -iVar4;
      uVar3 = uVar3 + 1;
      piVar5 = piVar5 + -1;
      iVar4 = iVar4 + (~uVar3 & 1);
    } while ((int)uVar3 < 0x30);
  }
  if ((int)uVar3 < 0x100) {
    piVar5 = piVar2 + -uVar3;
    do {
      piVar2[uVar3] = iVar4;
      *piVar5 = -iVar4;
      uVar3 = uVar3 + 1;
      piVar5 = piVar5 + -1;
    } while ((int)uVar3 < 0x100);
  }
  return;
}



void FUN_009cfb60(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  param_1[2] = *(int *)(iVar1 + 0x10);
  FUN_009cf2f0(*(undefined4 *)(iVar1 + 0x14));
  *(undefined *)(iVar1 + 0x1c) = 1;
  return;
}



void FUN_009cfc50(void **param_1)

{
  void *pvVar1;
  void *pvVar2;
  void *pvVar3;
  int iVar4;
  
  pvVar1 = _malloc(0x2c);
  *param_1 = pvVar1;
  iVar4 = 0;
  *(undefined **)((int)pvVar1 + 8) = &LAB_009cfb90;
  *(undefined **)((int)pvVar1 + 0xc) = &LAB_009cfc40;
  *(undefined4 *)((int)pvVar1 + 0x20) = 0;
  *(undefined4 *)((int)pvVar1 + 0x28) = 0;
  pvVar2 = _malloc(0x80);
  *(void **)((int)pvVar1 + 0x18) = pvVar2;
  do {
    pvVar2 = _malloc(0x1000);
    *(void **)(iVar4 + *(int *)((int)pvVar1 + 0x18)) = pvVar2;
    iVar4 = iVar4 + 4;
  } while (iVar4 < 0x80);
  *(undefined *)((int)pvVar1 + 0x1c) = 1;
  pvVar2 = param_1[4];
  pvVar3 = _malloc(0xc);
  *(void **)((int)pvVar1 + 0x10) = pvVar3;
  pvVar3 = _malloc((size_t)pvVar2);
  **(void ***)((int)pvVar1 + 0x10) = pvVar3;
  pvVar3 = _malloc((size_t)pvVar2);
  *(void **)(*(int *)((int)pvVar1 + 0x10) + 4) = pvVar3;
  pvVar3 = _malloc((size_t)pvVar2);
  *(void **)(*(int *)((int)pvVar1 + 0x10) + 8) = pvVar3;
  *(void **)((int)pvVar1 + 0x14) = pvVar2;
  pvVar2 = _malloc(((int)param_1[1] + 2) * 6);
  *(void **)((int)pvVar1 + 0x20) = pvVar2;
  FUN_009cfac0();
  return;
}



void FUN_009cfd10(int param_1)

{
  void *_Dst;
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  _Dst = _malloc(0x580);
  *(void **)(param_1 + 0x18) = _Dst;
  *(int *)(param_1 + 0x14) = (int)_Dst + 0x100;
  _memset(_Dst,0,0x100);
  iVar1 = 0;
  do {
    *(char *)(iVar1 + (int)_Dst + 0x100) = (char)iVar1;
    iVar1 = iVar1 + 1;
  } while (iVar1 < 0x100);
  _memset((void *)((int)_Dst + 0x200),0xff,0x180);
  _memset((void *)((int)_Dst + 0x380),0,0x180);
  puVar2 = *(undefined4 **)(param_1 + 0x14);
  puVar3 = (undefined4 *)((int)_Dst + 0x500);
  for (iVar1 = 0x20; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar3 = *puVar2;
    puVar2 = puVar2 + 1;
    puVar3 = puVar3 + 1;
  }
  return;
}



undefined * FUN_009cfda0(void)

{
  return &DAT_0323d044;
}



void FUN_009cfdb0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 int param_5,int param_6)

{
  int iVar1;
  undefined *puVar2;
  code **local_1c;
  undefined4 local_18;
  void **ppvStack_14;
  int local_c;
  void *pvStack_4;
  
  local_18 = param_1;
  local_c = param_6;
  FUN_009cfd10(&local_1c);
  FUN_009cfc50(&local_1c);
  (*local_1c[2])(&local_1c,1);
  (*local_1c[1])(&local_1c,param_3,param_4,param_2);
  (**local_1c)(&local_1c);
  (*local_1c[2])(&local_1c,0);
  (*local_1c[1])(&local_1c,param_3,param_4,param_2);
  (**local_1c)(&local_1c);
  iVar1 = 0;
  if (0 < local_c) {
    puVar2 = (undefined *)(param_5 + 2);
    do {
      puVar2[-2] = *(undefined *)(iVar1 + (int)*ppvStack_14);
      puVar2[-1] = *(undefined *)(iVar1 + (int)ppvStack_14[1]);
      *puVar2 = *(undefined *)(iVar1 + (int)ppvStack_14[2]);
      iVar1 = iVar1 + 1;
      puVar2 = puVar2 + 3;
    } while (iVar1 < local_c);
  }
  iVar1 = 0;
  do {
    _free(*(void **)(local_1c[6] + iVar1));
    iVar1 = iVar1 + 4;
  } while (iVar1 < 0x80);
  _free(local_1c[6]);
  _free(*ppvStack_14);
  _free(ppvStack_14[1]);
  _free(ppvStack_14[2]);
  _free(ppvStack_14);
  _free(pvStack_4);
  _free(local_1c[10] + -0x3fc);
  _free(local_1c[8]);
  _free(local_1c);
  return;
}



undefined4 * __thiscall FUN_009cff00(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_009cff50(undefined4 param_1,undefined4 param_2,int **param_3,int param_4,int *param_5,
                 uint param_6)

{
  BYTE BVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  BYTE *pBVar7;
  HDC hdc;
  LPPALETTEENTRY pPalEntries;
  BYTE *pBVar8;
  int *piVar9;
  int iVar10;
  BYTE *pBVar11;
  int iVar12;
  int iStack_32c;
  uint local_328;
  int iStack_324;
  int local_320;
  int *local_31c;
  int **local_318;
  undefined4 local_314;
  BYTE aBStack_310 [768];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be7b29;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&iStack_32c;
  ExceptionList = &local_c;
  local_314 = param_2;
  local_328 = param_6 & 1;
  local_318 = param_3;
  local_31c = param_5;
  local_320 = 0;
  if ((local_328 != 0) && (local_320 = 0x14, 0xec < param_4)) {
    param_4 = 0xec;
  }
  uVar3 = FUN_00900150(DAT_0323f878 ^ (uint)&stack0xfffffcc4);
  iVar4 = FUN_00900100();
  iVar5 = FUN_00823c23(-(uint)((int)((ulonglong)uVar3 * 4 >> 0x20) != 0) |
                       (uint)((ulonglong)uVar3 * 4));
  iStack_324 = iVar5;
  iVar6 = FUN_008ff850();
  iVar10 = 0;
  if (0 < (int)uVar3) {
    do {
      *(int *)(iVar5 + iVar10 * 4) = iVar6;
      iVar10 = iVar10 + 1;
      iVar6 = iVar6 + iVar4 * 3;
    } while (iVar10 < (int)uVar3);
  }
  iVar12 = iVar4 * uVar3;
  iStack_32c = FUN_00823c23(iVar12);
  iVar6 = FUN_00823c23(-(uint)((int)((ulonglong)uVar3 * 4 >> 0x20) != 0) |
                       (uint)((ulonglong)uVar3 * 4));
  iVar10 = 0;
  iVar5 = iStack_32c;
  if (0 < (int)uVar3) {
    do {
      *(int *)(iVar6 + iVar10 * 4) = iVar5;
      iVar10 = iVar10 + 1;
      iVar5 = iVar5 + iVar4;
    } while (iVar10 < (int)uVar3);
  }
  FUN_009cfdb0(iVar4,uVar3,iStack_324,iVar6,aBStack_310,param_4);
  FUN_00a3f66c(iStack_324);
  FUN_00a3f66c(iVar6);
  if ((param_6 & 4) != 0) {
    cVar2 = FUN_008ff820();
    if (cVar2 == '\0') {
      FUN_00900c30(iVar4,uVar3,1);
    }
    iVar4 = FUN_008ff850();
    iVar5 = 0;
    if (0 < iVar12) {
      pBVar7 = (BYTE *)(iVar4 + 2);
      do {
        iVar4 = (uint)*(byte *)(iStack_32c + iVar5) * 3;
        pBVar7[-2] = aBStack_310[iVar4];
        BVar1 = aBStack_310[iVar4 + 2];
        pBVar7[-1] = aBStack_310[iVar4 + 1];
        *pBVar7 = BVar1;
        iVar5 = iVar5 + 1;
        pBVar7 = pBVar7 + 3;
      } while (iVar5 < iVar12);
    }
  }
  if ((local_31c == (int *)0x0) || ((param_6 & 2) == 0)) {
    FUN_00a3f66c(iStack_32c);
  }
  else {
    if ((local_328 != 0) && (iVar4 = 0, 0 < iVar12)) {
      do {
        *(char *)(iStack_32c + iVar4) = *(char *)(iStack_32c + iVar4) + (char)local_320;
        iVar4 = iVar4 + 1;
      } while (iVar4 < iVar12);
    }
    *local_31c = iStack_32c;
  }
  if (local_318 != (int **)0x0) {
    iVar4 = FUN_00823c23(0x100);
    iStack_324 = iVar4;
    pBVar7 = (BYTE *)FUN_00823c23(0x100);
    iStack_32c = FUN_00823c23(0x100);
    if (local_328 != 0) {
      hdc = GetDC((HWND)0x0);
      pPalEntries = (LPPALETTEENTRY)FUN_00823c23(0x50);
      GetSystemPaletteEntries(hdc,0,0x14,pPalEntries);
      ReleaseDC((HWND)0x0,hdc);
      pBVar11 = &pPalEntries->peBlue;
      local_328 = 0x14;
      pBVar8 = pBVar7;
      do {
        pBVar8[iVar4 - (int)pBVar7] = ((tagPALETTEENTRY *)(pBVar11 + -2))->peRed;
        *pBVar8 = pBVar11[-1];
        pBVar8[iStack_32c - (int)pBVar7] = *pBVar11;
        pBVar8 = pBVar8 + 1;
        pBVar11 = pBVar11 + 4;
        local_328 = local_328 - 1;
      } while (local_328 != 0);
      FUN_00a3f66c(pPalEntries);
      iVar4 = iStack_324;
    }
    iVar5 = iStack_32c;
    iVar6 = iVar4;
    if (0 < param_4) {
      pBVar8 = pBVar7 + local_320;
      pBVar11 = aBStack_310 + 1;
      iVar10 = param_4;
      do {
        pBVar8[iVar4 - (int)pBVar7] = pBVar11[-1];
        *pBVar8 = *pBVar11;
        pBVar8[iStack_32c - (int)pBVar7] = pBVar11[1];
        pBVar8 = pBVar8 + 1;
        pBVar11 = pBVar11 + 3;
        iVar10 = iVar10 + -1;
        iVar6 = iStack_324;
      } while (iVar10 != 0);
    }
    local_31c = (int *)(local_320 + param_4);
    if ((int)local_31c < 0x100) {
      pBVar11 = pBVar7 + (int)local_31c;
      iVar4 = 0x100 - (int)local_31c;
      do {
        pBVar11[iVar6 - (int)pBVar7] = '\0';
        *pBVar11 = '\0';
        pBVar11[iStack_32c - (int)pBVar7] = '\0';
        pBVar11 = pBVar11 + 1;
        iVar4 = iVar4 + -1;
      } while (iVar4 != 0);
    }
    piVar9 = (int *)operator_new(8);
    uStack_4 = 0;
    local_31c = piVar9;
    if (piVar9 == (int *)0x0) {
      piVar9 = (int *)0x0;
    }
    else {
      piVar9[1] = 0;
      uStack_4 = 1;
      *piVar9 = (int)wxPalette::vftable;
      FUN_00974170(0x100,iVar6,pBVar7,iVar5);
    }
    *local_318 = piVar9;
    FUN_00a3f66c(iVar6);
    FUN_00a3f66c(pBVar7);
    FUN_00a3f66c(iVar5);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_009d0330(void)

{
  return &PTR_u_wxSpinCtrl_0323d05c;
}



undefined4 * FUN_009d0340(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x1ac);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0044ced6(uVar1);
    puVar2[0x65] = 0;
    puVar2[0x66] = 100;
    *puVar2 = wxSpinCtrl::vftable;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __fastcall FUN_009d03d0(undefined4 *param_1)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  uint uVar5;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00be7b73;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *param_1 = wxRadioBoxBase::vftable;
  local_4 = 1;
  if (param_1[4] != 0) {
    uVar1 = *(uint *)(param_1[4] + 4);
    uVar5 = 0;
    if (uVar1 != 0) {
      do {
        iVar2 = param_1[4];
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 4) <= uVar5)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0,uVar4);
        }
        piVar3 = *(int **)(*(int *)(iVar2 + 8) + uVar5 * 4);
        if (piVar3 != (int *)0x0) {
          (**(code **)(*piVar3 + 4))(1);
        }
        uVar5 = uVar5 + 1;
      } while (uVar5 < uVar1);
    }
    iVar2 = param_1[4];
    if (iVar2 != 0) {
      FUN_0086aa30();
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(iVar2);
    }
  }
  local_4 = local_4 & 0xffffff00;
  FUN_00853f30();
  local_4 = 0xffffffff;
  FUN_0096ba90();
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_009d04b0(int *param_1,int param_2,uint param_3)

{
  int iVar1;
  uint uVar2;
  undefined *puVar3;
  undefined auStack_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be7ba9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = (**(code **)(*param_1 + 4))(DAT_0323f878 ^ (uint)&stack0xffffffc0);
  if (param_3 < uVar2) {
    iVar1 = param_1[6];
    if (iVar1 != 0) {
      puVar3 = (undefined *)thunk_FUN_004325d6(param_3);
    }
    else {
      uStack_18 = 7;
      uStack_1c = 0;
      uStack_2c = uStack_2c & 0xffff0000;
      pvStack_14 = (void *)0x0;
      puVar3 = auStack_30;
      uStack_4 = 0;
    }
    *(undefined4 *)(param_2 + 0x18) = 7;
    *(undefined4 *)(param_2 + 0x14) = 0;
    *(undefined2 *)(param_2 + 4) = 0;
    FID_conflict_assign(puVar3,0,0xffffffff);
    *(undefined4 *)(param_2 + 0x1c) = 0;
    if (iVar1 == 0) {
      _free(pvStack_14);
      if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_2c);
      }
    }
  }
  else {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\common\\radiocmn.cpp",0x14a,"wxRadioBoxBase::GetItemHelpText",
                   "n < GetCount()",L"Invalid item index");
    }
    FUN_004325b6(PTR_DAT_03236318);
  }
  ExceptionList = local_c;
  return param_2;
}



void __thiscall
FUN_009d05d0(int *param_1_00,int param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  undefined4 local_38;
  undefined auStack_34 [4];
  uint uStack_30;
  int iStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6d58;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  ExceptionList = &local_c;
  local_38 = 0;
  if (param_4 != 0) {
    if (param_4 == 1) {
      iVar1 = (**(code **)(*param_1_00 + 0x18))(DAT_0323f878 ^ (uint)&stack0xffffffb8);
    }
    else {
      if (param_4 != 2) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_008402e0("..\\..\\src\\common\\radiocmn.cpp",0x160,
                       "wxRadioBoxBase::DoGetHelpTextAtPoint","Assert failure",
                       "unknown help even origin");
        }
        goto LAB_009d0716;
      }
      iVar1 = (**(code **)(*param_1_00 + 0x30))(param_3);
    }
    if (iVar1 != -1) {
      FUN_009d04b0(auStack_34,iVar1);
      uStack_4 = 0;
      if (iStack_20 != 0) {
        *(undefined4 *)(param_1 + 0x18) = 7;
        *(undefined4 *)(param_1 + 0x14) = 0;
        *(undefined2 *)(param_1 + 4) = 0;
        FID_conflict_assign(auStack_34,0,0xffffffff);
        *(undefined4 *)(param_1 + 0x1c) = 0;
        _free(pvStack_18);
        if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_30);
        }
        goto LAB_009d0724;
      }
      uStack_4 = 0xffffffff;
      _free(pvStack_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
      uStack_1c = 7;
      iStack_20 = 0;
      uStack_30 = uStack_30 & 0xffff0000;
    }
  }
LAB_009d0716:
  FUN_0091f080(param_1,param_3,param_4);
LAB_009d0724:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall
FUN_009d0790(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7bd8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0091ee00(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1_00 = wxWindow::vftable;
  param_1_00[0x55] = 0;
  param_1_00[0x56] = 0;
  local_4 = 0;
  param_1_00[0x57] = 0;
  param_1_00[0x58] = 0;
  FUN_0090d6e0();
  FUN_00917f80(param_1,param_2,param_3,param_4,param_5,param_6);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009d0830(int *param_1)

{
  if ((undefined4 *)param_1[100] != (undefined4 *)0x0) {
    *(undefined4 *)param_1[100] = 0;
    param_1[100] = 0;
  }
  (**(code **)(*param_1 + 0xcc))(0);
  (**(code **)(*param_1 + 0x50))();
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void __fastcall FUN_009d0870(int *param_1)

{
  undefined4 uVar1;
  uint uVar2;
  int iVar3;
  int *unaff_ESI;
  int *unaff_EDI;
  int iVar4;
  int iVar5;
  uint uVar6;
  undefined *puStack_5c;
  void **ppvStack_58;
  int *piStack_54;
  int *piStack_50;
  undefined local_3c [4];
  void *local_38;
  int *piStack_34;
  undefined **ppuStack_30;
  undefined4 local_2c;
  undefined auStack_28 [4];
  undefined uStack_24;
  undefined uStack_14;
  undefined uStack_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7c40;
  local_c = ExceptionList;
  piStack_50 = (int *)(DAT_0323f878 ^ (uint)&stack0xffffffb4);
  ExceptionList = &local_c;
  ppvStack_58 = (void **)0x9d08a3;
  piStack_54 = param_1;
  FUN_0094be80();
  piStack_54 = (int *)local_3c;
  ppvStack_58 = &local_38;
  uVar2 = 0;
  local_4 = 0;
  puStack_5c = (undefined *)0x9d08bf;
  (**(code **)(*param_1 + 0x27c))();
  puStack_5c = auStack_28;
  uVar1 = FUN_0091de40();
  puStack_5c = (undefined *)0x64;
  local_c._0_1_ = 1;
  puStack_5c = (undefined *)FUN_0095d7e0(uVar1);
  local_c = (void *)CONCAT31(local_c._1_3_,2);
  (**(code **)((int)*local_2c + 0x60))();
  uStack_10 = 1;
  FUN_008f7630();
  uStack_10 = 0;
  local_2c = wxObject::vftable;
  FUN_0083e850();
  uVar1 = FUN_0091df90(&local_2c);
  uStack_10 = 3;
  uVar1 = FUN_009566f0(uVar1,1,100);
  uStack_10 = 4;
  (**(code **)((int)*ppuStack_30 + 0x58))(uVar1);
  uStack_14 = 3;
  FUN_0083e850();
  uStack_14 = 0;
  ppuStack_30 = wxObject::vftable;
  FUN_0083e850();
  (**(code **)(*piStack_34 + 0x150))(0,0,unaff_ESI,unaff_EDI);
  uVar1 = FUN_0091de40(&stack0xffffffc0);
  uStack_24 = 5;
  (*_FUN_0083e850)(uVar1);
  auStack_28[0] = 0;
  FUN_0083e850();
  uVar1 = FUN_0091df90(&stack0xffffffbc);
  auStack_28[0] = 6;
  (**(code **)(*unaff_ESI + 0x78))(uVar1);
  local_2c = (undefined **)((uint)local_2c & 0xffffff00);
  FUN_0083e850();
  uVar1 = FUN_0091e100(&puStack_5c);
  local_2c = (undefined **)CONCAT31(local_2c._1_3_,7);
  (**(code **)(*unaff_EDI + 0x50))(uVar1);
  ppuStack_30 = (undefined **)((uint)ppuStack_30 & 0xffffff00);
  FUN_00921450();
  iVar4 = param_1[0x59];
  uVar6 = *(uint *)(iVar4 + 0x17c);
  iVar3 = 3;
  if (uVar6 != 0) {
    iVar5 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar4 + 0x17c) <= uVar2)) {
        FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                     "nIndex < m_nCount",L"wxArrayString: index out of bounds");
      }
      (**(code **)(*piStack_50 + 0x168))(*(int *)(iVar4 + 0x180) + iVar5,3,iVar3);
      iVar4 = param_1[0x59];
      iVar3 = iVar3 + *(int *)(iVar4 + 0x188);
      iVar5 = iVar5 + 0x24;
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar6);
  }
  ppuStack_30 = (undefined **)0xffffffff;
  FUN_00457221();
  ExceptionList = local_38;
  return;
}



undefined ** FUN_009d0b50(void)

{
  return &PTR_u_wxCHMHelpController_0323d0bc;
}



void __fastcall FUN_009d0b60(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x009d0b65. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x28))();
  return;
}



undefined4 FUN_009d0b70(void)

{
  return 0;
}



void __thiscall FUN_009d0b80(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0x10))(param_1);
  return;
}



undefined4 * __thiscall FUN_009d0bd0(undefined4 *param_1_00,byte param_1)

{
  _free((void *)param_1_00[10]);
  if (7 < (uint)param_1_00[9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[4]);
  }
  param_1_00[9] = 7;
  param_1_00[8] = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *param_1_00 = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_009d0c30(int param_1_00,int param_1)

{
  if ((*(int *)(param_1 + 0x14) != 0) && (param_1_00 + 0xc != param_1)) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  return 1;
}



void __thiscall FUN_009d0c50(int param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  int *piVar4;
  undefined4 uVar5;
  int iVar6;
  undefined4 local_f8;
  undefined local_f4 [4];
  uint local_f0;
  undefined4 local_e0;
  uint local_dc;
  void *local_d8;
  undefined local_d0 [4];
  uint local_cc;
  undefined4 local_bc;
  uint local_b8;
  void *local_b4;
  int local_ac;
  undefined local_a8 [8];
  undefined local_a0 [4];
  uint local_9c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be7d6c;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_f8;
  ExceptionList = &local_c;
  local_f8 = 0;
  local_ac = param_1;
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  local_3c = (void *)0x0;
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  local_60 = (void *)0x0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4._0_1_ = 3;
  local_4._1_3_ = 0;
  FUN_00858c30(param_1_00 + 0xc,local_58,local_7c,local_34,0,DAT_0323f878 ^ (uint)&stack0xfffffef8);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_f8 = 1;
  if (local_44 == 0) {
    iVar3 = FUN_008533d0(local_f4,local_7c,L".chm");
    local_4 = CONCAT31(local_4._1_3_,4);
    if (param_1 != iVar3) {
      FID_conflict_assign(iVar3,0,0xffffffff);
    }
    _free(local_d8);
    uVar1 = local_f0;
    uVar2 = local_dc;
  }
  else {
    piVar4 = (int *)FUN_0081b3d8(local_a8);
    if (*piVar4 != -4) {
      if (*piVar4 == 0) {
        FUN_00a3fb10();
      }
      iVar3 = *piVar4;
      if (*(uint *)(iVar3 + 0x18) < 8) {
        iVar6 = iVar3 + 4;
      }
      else {
        iVar6 = *(int *)(iVar3 + 4);
      }
      if ((uint)(iVar6 + *(int *)(iVar3 + 0x14) * 2) <= (uint)piVar4[1]) {
        FUN_00a3fb10();
      }
    }
    if (*(short *)piVar4[1] == 0x5c) {
      uVar5 = FUN_008531f0(local_f4,local_58,local_7c);
      local_4._0_1_ = 5;
      iVar3 = FUN_008533d0(local_d0,uVar5,L".chm");
      local_4 = CONCAT31(local_4._1_3_,6);
      if (param_1 != iVar3) {
        FID_conflict_assign(iVar3,0,0xffffffff);
      }
      _free(local_b4);
      if (7 < local_b8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_cc);
      }
      local_b8 = 7;
      local_bc = 0;
      local_cc = local_cc & 0xffff0000;
      _free(local_d8);
      uVar1 = local_f0;
      uVar2 = local_dc;
    }
    else {
      uVar5 = FUN_008533d0(local_a0,local_58,&DAT_0305784c);
      local_4._0_1_ = 7;
      uVar5 = FUN_008531f0(local_f4,uVar5,local_7c);
      local_4._0_1_ = 8;
      iVar3 = FUN_008533d0(local_d0,uVar5,L".chm");
      local_4 = CONCAT31(local_4._1_3_,9);
      if (param_1 != iVar3) {
        FID_conflict_assign(iVar3,0,0xffffffff);
      }
      _free(local_b4);
      if (7 < local_b8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_cc);
      }
      local_b8 = 7;
      local_bc = 0;
      local_cc = local_cc & 0xffff0000;
      _free(local_d8);
      if (7 < local_dc) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_f0);
      }
      local_dc = 7;
      local_e0 = 0;
      local_f0 = local_f0 & 0xffff0000;
      _free(local_84);
      uVar1 = local_9c;
      uVar2 = local_88;
    }
  }
  if (7 < uVar2) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uVar1);
  }
  _free(local_18);
  if (local_1c < 8) {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    _free(local_60);
    if (7 < local_64) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_78);
    }
    local_64 = 7;
    local_68 = 0;
    local_78 = local_78 & 0xffff0000;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_30);
}



int FUN_009d1070(void)

{
  char cVar1;
  int iVar2;
  uint local_16c;
  void *local_168;
  uint local_148;
  void *local_144;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be7e19;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (DAT_032ea0f8 == 0) {
    if ((DAT_032ea0f4 & 1) == 0) {
      DAT_032ea0f4 = DAT_032ea0f4 | 1;
      local_4 = DAT_032ea0f8;
      FUN_004325b6();
      local_4 = CONCAT31(local_4._1_3_,1);
      DAT_032ea0f0 = 0;
      FUN_0089ed30();
      _free(local_144);
      if (7 < local_148) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _atexit((_func_4879 *)&LAB_00c78f30);
    }
    local_4 = 0xffffffff;
    if (DAT_032ea0f0 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return DAT_032ea0f8;
      }
      FUN_004325b6();
      local_4 = 2;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,3);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      local_4._0_1_ = 4;
      FUN_008423d0();
      local_4._0_1_ = 5;
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 4;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,3);
      FUN_0081b5bc();
      FUN_0040159c();
    }
    else {
      FUN_004325b6();
      local_4 = 6;
      iVar2 = FUN_0089f060();
      local_4 = 0xffffffff;
      DAT_032ea0f8 = iVar2;
      _free(local_168);
      if (7 < local_16c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if (iVar2 != 0) {
        ExceptionList = local_c;
        return iVar2;
      }
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(1);
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return DAT_032ea0f8;
      }
      FUN_004325b6();
      local_4 = 7;
      FUN_0043c211();
      local_4._0_1_ = 8;
      FUN_00820bf9();
      FUN_008433c0();
      local_4._0_1_ = 9;
      FUN_008423d0();
      local_4._0_1_ = 10;
      FUN_008854f0();
      FUN_0083fe90();
      local_4._0_1_ = 9;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,8);
      FUN_0081b5bc();
      FUN_0040159c();
    }
    FUN_0040159c();
  }
  ExceptionList = local_c;
  return DAT_032ea0f8;
}



undefined4 __thiscall FUN_009d13e0(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = FUN_009d1070();
  if (iVar1 == 0) {
    return 0;
  }
  if (param_1_00 + 0xc != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  return 1;
}



undefined4 FUN_009d1410(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  code *pcVar1;
  HWND pHVar2;
  int iVar3;
  
  pcVar1 = (code *)FUN_009d1070();
  if (pcVar1 == (code *)0x0) {
    return 0;
  }
  if ((param_1 == 0) &&
     ((DAT_032bcb68 == (int *)0x0 || (param_1 = (**(code **)(*DAT_032bcb68 + 0xd4))(), param_1 == 0)
      ))) {
    pHVar2 = GetDesktopWindow();
  }
  else {
    pHVar2 = *(HWND *)(param_1 + 0x13c);
  }
  iVar3 = (*pcVar1)(pHVar2,param_2,param_3,param_4);
  if (iVar3 == 0) {
    return 0;
  }
  return 1;
}



undefined __thiscall FUN_009d1470(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined local_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  iVar3 = FUN_009d0c50(local_30);
  local_4 = 0;
  if (*(uint *)(iVar3 + 0x18) < 8) {
    iVar3 = iVar3 + 4;
  }
  else {
    iVar3 = *(int *)(iVar3 + 4);
  }
  uVar4 = (**(code **)(*param_1_00 + 0x50))(iVar3,param_1,param_2,uVar2);
  uVar1 = FUN_009d1410(uVar4);
  _free(pvStack_14);
  if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c);
  }
  ExceptionList = local_c;
  return uVar1;
}



undefined __fastcall FUN_009d1510(int param_1)

{
  undefined uVar1;
  
  if (*(int *)(param_1 + 0x20) == 0) {
    return 0;
  }
  uVar1 = FUN_009d1470(0,0);
  return uVar1;
}



uint __thiscall FUN_009d1530(int *param_1_00,int param_1)

{
  uint in_EAX;
  int iVar1;
  uint uVar2;
  undefined4 local_8;
  undefined4 local_4;
  
  if (param_1_00[8] == 0) {
    return in_EAX & 0xffffff00;
  }
  FUN_00820ebc(&local_8,L".htm",0xffffffff);
  iVar1 = FUN_00420f3f(local_8,0,local_4);
  if ((iVar1 != -1) && (iVar1 != -1)) {
    if (7 < *(uint *)(param_1 + 0x18)) {
      uVar2 = FUN_009d1470(0,*(undefined4 *)(param_1 + 4));
      return uVar2;
    }
    uVar2 = FUN_009d1470(0,param_1 + 4);
    return uVar2;
  }
  uVar2 = (**(code **)(*param_1_00 + 0x38))(param_1,1);
  return uVar2;
}



uint __thiscall FUN_009d15d0(int param_1_00,undefined4 param_1)

{
  uint in_EAX;
  uint uVar1;
  
  if (*(int *)(param_1_00 + 0x20) == 0) {
    return in_EAX & 0xffffff00;
  }
  uVar1 = FUN_009d1470(0xf,param_1);
  return uVar1;
}



void FUN_009d15f0(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  DWORD local_1c;
  DWORD local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_34 = 0x34;
  local_30 = FUN_008a65e0();
  local_2c = param_3;
  local_24 = *param_2;
  local_20 = param_2[1];
  local_28 = param_1;
  local_1c = GetSysColor(0x17);
  local_18 = GetSysColor(0x18);
  local_8 = 0xffffffff;
  local_c = 0xffffffff;
  local_14 = 0xffffffff;
  local_10 = 0xffffffff;
  local_4 = 0;
  FUN_009d1410(param_4,0,0xe,&local_34);
  return;
}



void __thiscall FUN_009d1680(int *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined auStack_8 [8];
  
  uVar1 = (**(code **)(*param_1 + 0x50))();
  uVar1 = FUN_00910c30(auStack_8,param_2,uVar1);
  FUN_009d15f0(0,uVar1);
  return;
}



uint __thiscall FUN_009d16b0(int param_1_00,int param_1)

{
  uint in_EAX;
  uint uVar1;
  undefined4 local_20;
  undefined4 local_1c;
  int local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  if (*(int *)(param_1_00 + 0x20) == 0) {
    return in_EAX & 0xffffff00;
  }
  local_20 = 0x20;
  local_1c = 0;
  if (*(uint *)(param_1 + 0x18) < 8) {
    local_18 = param_1 + 4;
  }
  else {
    local_18 = *(int *)(param_1 + 4);
  }
  local_14 = 0;
  local_10 = 0;
  local_c = 0;
  local_8 = 0;
  local_4 = 1;
  uVar1 = FUN_009d1470(0xd,&local_20);
  return uVar1;
}



undefined4 FUN_009d1710(void)

{
  code *pcVar1;
  int iVar2;
  HWND pHVar3;
  
  pcVar1 = (code *)FUN_009d1070();
  if (pcVar1 == (code *)0x0) {
    return 0;
  }
  if ((DAT_032bcb68 == (int *)0x0) || (iVar2 = (**(code **)(*DAT_032bcb68 + 0xd4))(), iVar2 == 0)) {
    pHVar3 = GetDesktopWindow();
  }
  else {
    pHVar3 = *(HWND *)(iVar2 + 0x13c);
  }
  iVar2 = (*pcVar1)(pHVar3,0,0x12,0);
  if (iVar2 == 0) {
    return 0;
  }
  return 1;
}



void __thiscall FUN_009d1760(int *param_1,int param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  uVar1 = (**(code **)(*param_1 + 0x50))();
  if (7 < *(uint *)(param_2 + 0x18)) {
    FUN_009d15f0(*(undefined4 *)(param_2 + 4),param_3,0,uVar1);
    return;
  }
  FUN_009d15f0(param_2 + 4,param_3,0,uVar1);
  return;
}



void __fastcall FUN_009d17a0(undefined4 *param_1)

{
  *param_1 = wxDisplayFactory::vftable;
  return;
}



void FUN_009d17b0(undefined4 param_1,DEVMODEW *param_2,undefined4 param_3,DWORD param_4)

{
  ChangeDisplaySettingsW(param_2,param_4);
  return;
}



undefined4 * __thiscall FUN_009d17f0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxDisplayFactory::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009d1810(int param_1_00,uint param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc57ab;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 < *(uint *)(param_1_00 + 8)) {
    puVar1 = (undefined4 *)operator_new(0xc);
    local_4 = 0;
    if (puVar1 != (undefined4 *)0x0) {
      puVar2 = (undefined4 *)FUN_00a142b0(param_1);
      puVar1[2] = *puVar2;
      puVar1[1] = param_1;
      *puVar1 = wxDisplayMSW::vftable;
      ExceptionList = local_c;
      return puVar1;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\display.cpp",0x242,"wxDisplayFactoryMSW::CreateDisplay",
                 "n < m_displays.size()",L"An invalid index was passed to wxDisplay",
                 DAT_0323f878 ^ (uint)&stack0xffffffe8);
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



uint __thiscall FUN_009d18d0(int param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  
  if (param_1 != 0) {
    uVar1 = *(uint *)(param_1_00 + 8);
    uVar2 = 0;
    if (uVar1 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 8) <= uVar2)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        if (param_1 == *(int *)(*(int *)(param_1_00 + 0xc) + uVar2 * 4)) {
          return uVar2;
        }
        uVar2 = uVar2 + 1;
      } while (uVar2 < uVar1);
    }
  }
  return 0xffffffff;
}



void FUN_009d1940(undefined4 *param_1)

{
  undefined4 uVar1;
  
  uVar1 = (*DAT_032ea0fc)(*param_1,param_1[1],0);
  FUN_009d18d0(uVar1);
  return;
}



void FUN_009d1970(int param_1)

{
  undefined4 uVar1;
  
  uVar1 = (*DAT_032ea100)(*(undefined4 *)(param_1 + 0x13c),0);
  FUN_009d18d0(uVar1);
  return;
}



void __thiscall FUN_009d19a0(int *param_1_00,int *param_1)

{
  bool bVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  DWORD iModeNum;
  LPCWSTR lpszDeviceName;
  uint uStack_138;
  undefined4 local_134;
  int *local_130 [3];
  uint uStack_124;
  undefined auStack_120 [16];
  undefined4 local_110 [4];
  int iStack_100;
  uint uStack_fc;
  void *pvStack_f8;
  DEVMODEW DStack_f0;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be7e6d;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&uStack_138);
  ExceptionList = &local_c;
  iModeNum = 0;
  local_4 = 0;
  local_130[0] = param_1;
  local_134 = 0;
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xfffffeb8);
  uVar4 = 1;
  bVar1 = false;
  local_4 = 0;
  local_134 = 1;
  (**(code **)(*param_1_00 + 0xc))(local_110);
  puStack_8 = (undefined *)0x1;
  if (iStack_100 == 0) {
    lpszDeviceName = (LPCWSTR)0x0;
  }
  else {
    piVar2 = (int *)FUN_00432231(auStack_120);
    iVar3 = *piVar2;
    uVar4 = 3;
    bVar1 = true;
    uStack_138 = 3;
    if (*(uint *)(iVar3 + 0x18) < 8) {
      iVar3 = iVar3 + 4;
    }
    else {
      iVar3 = *(int *)(iVar3 + 4);
    }
    lpszDeviceName = (LPCWSTR)(iVar3 + piVar2[1] * 2);
  }
  if (bVar1) {
    uStack_138 = uVar4 & 0xfffffffd;
    FUN_00432214();
  }
  DStack_f0.dmSize = 0xdc;
  DStack_f0.dmDriverExtra = 0;
  iVar3 = EnumDisplaySettingsW(lpszDeviceName,0,&DStack_f0);
  piVar2 = local_130[0];
  local_130[0] = (int *)DStack_f0.dmPelsWidth;
  while (iVar3 != 0) {
    uStack_124 = -(uint)(1 < DStack_f0.dmDisplayFrequency) & DStack_f0.dmDisplayFrequency;
    DStack_f0.dmPelsWidth = (DWORD)local_130[0];
    if ((((((int *)*param_1 == (int *)0x0) || (local_130[0] == (int *)*param_1)) &&
         ((param_1[1] == 0 || (DStack_f0.dmPelsHeight == param_1[1])))) &&
        ((param_1[2] == 0 || (DStack_f0.dmBitsPerPel == param_1[2])))) &&
       ((param_1[3] == 0 || (param_1[3] <= (int)uStack_124)))) {
      FUN_0099a6a0(local_130,1);
    }
    iModeNum = iModeNum + 1;
    iVar3 = EnumDisplaySettingsW(lpszDeviceName,iModeNum,&DStack_f0);
    piVar2 = local_130[0];
    local_130[0] = (int *)DStack_f0.dmPelsWidth;
  }
  local_130[0] = piVar2;
  _free(pvStack_f8);
  if (7 < uStack_fc) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_110[0]);
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009d1b90(int *param_1_00,int *param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  undefined *puVar6;
  undefined4 uVar7;
  char *pcVar8;
  wchar_t *pwVar9;
  int local_14c;
  int *local_148;
  undefined local_144 [4];
  uint uStack_140;
  undefined4 uStack_130;
  uint uStack_12c;
  void *pvStack_128;
  undefined local_120 [4];
  uint local_11c;
  undefined4 local_10c;
  uint local_108;
  void *local_104;
  undefined4 uStack_100;
  undefined4 auStack_fc [4];
  undefined local_ec [68];
  undefined2 local_a8;
  undefined2 local_a6;
  uint local_a4;
  int local_44;
  int local_40;
  int local_3c;
  int local_34;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7ecc;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_14c;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_c;
  iVar4 = *param_1;
  local_148 = param_1_00;
  if ((((iVar4 == DAT_032e8c8c) && (param_1[1] == DAT_032e8c90)) && (param_1[2] == DAT_032e8c94)) &&
     (param_1[3] == DAT_032e8c98)) {
    puVar6 = (undefined *)0x0;
    uVar7 = 0;
LAB_009d1c9b:
    if (DAT_032ea110 == (code *)0x0) {
      FUN_004325b6(L"user32.dll");
      local_4 = 0;
      local_14c = 0;
      FUN_0089ed30(local_120,0x28);
      local_4._0_1_ = 2;
      _free(local_104);
      if (7 < local_108) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_11c);
      }
      local_11c = local_11c & 0xffff0000;
      local_108 = 7;
      local_10c = 0;
      if (local_14c != 0) {
        FUN_0043c211("ChangeDisplaySettingsEx");
        local_4 = CONCAT31(local_4._1_3_,3);
        DAT_032ea110 = (code *)FUN_0089f340(local_14c,local_144);
        FUN_0040159c();
      }
      if (DAT_032ea110 == (code *)0x0) {
        DAT_032ea110 = FUN_009d17b0;
      }
      local_4 = 0xffffffff;
      if (local_14c != 0) {
        FUN_0089f290(local_14c);
      }
    }
    iVar4 = (**(code **)(*local_148 + 0xc))(local_144,uVar3);
    puStack_8 = (undefined *)0x4;
    if (*(uint *)(iVar4 + 0x18) < 8) {
      iVar4 = iVar4 + 4;
    }
    else {
      iVar4 = *(int *)(iVar4 + 4);
    }
    iVar4 = (*DAT_032ea110)(iVar4,puVar6,0,uVar7,0);
    local_4 = 0xffffffff;
    _free(pvStack_128);
    if (7 < uStack_12c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_140);
    }
    uStack_12c = 7;
    uStack_130 = 0;
    uStack_140 = uStack_140 & 0xffff0000;
    if (iVar4 == -2) goto LAB_009d1eb6;
    if (iVar4 == 0) {
      uVar7 = (**(code **)(*DAT_032bcb68 + 0xd4))();
      piVar5 = (int *)FUN_0048a085(uVar7,&PTR_u_wxFrame_03239cfc);
      if ((piVar5 != (int *)0x0) && (cVar2 = (**(code **)(*piVar5 + 0x364))(), cVar2 != '\0')) {
        (**(code **)(*local_148 + 0x18))(auStack_fc);
        (**(code **)(*piVar5 + 0x28c))(uStack_100,auStack_fc[0]);
      }
      goto LAB_009d1eb6;
    }
    if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_009d1eb6;
    pwVar9 = L"unexpected ChangeDisplaySettingsEx() return value";
    pcVar8 = "Assert failure";
    uVar7 = 0x1ce;
  }
  else {
    if ((iVar4 != 0) && (iVar1 = param_1[1], iVar1 != 0)) {
      _memset(local_ec,0,0xdc);
      local_a8 = 0xdc;
      local_a6 = 0;
      local_a4 = 0x180000;
      if (param_1[2] != 0) {
        local_a4 = 0x1c0000;
        local_44 = param_1[2];
      }
      if (param_1[3] != 0) {
        local_a4 = local_a4 | 0x400000;
        local_34 = param_1[3];
      }
      puVar6 = local_ec;
      uVar7 = 4;
      local_40 = iVar4;
      local_3c = iVar1;
      goto LAB_009d1c9b;
    }
    if (PTR_FUN_03235c4c == (undefined *)0x0) goto LAB_009d1eb6;
    pwVar9 = L"at least the width and height must be specified";
    pcVar8 = "mode.GetWidth() && mode.GetHeight()";
    uVar7 = 0x178;
  }
  FUN_00840480("..\\..\\src\\msw\\display.cpp",uVar7,"wxDisplayMSW::ChangeMode",pcVar8,pwVar9);
LAB_009d1eb6:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_009d1ee0(int param_1_00,undefined4 param_1)

{
  char cVar1;
  int iVar2;
  undefined auStack_a4 [8];
  undefined4 uStack_9c;
  uint *puStack_98;
  char *pcStack_94;
  char *pcStack_90;
  wchar_t *pwStack_8c;
  char *pcStack_88;
  wchar_t *pwStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  uint uStack_78;
  void *pvStack_14;
  undefined4 local_c;
  undefined *puStack_8;
  undefined *puStack_4;
  
  puStack_4 = (undefined *)0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  uStack_78 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  uStack_80 = *(undefined4 *)(param_1_00 + 8);
  uStack_7c = param_1;
  pwStack_84 = L"삅蔏Ë";
  iVar2 = (*DAT_032ea104)();
  if (iVar2 == 0) {
    puStack_4 = auStack_a4;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      pwStack_84 = L"%s(%d): \'%s\' failed with error 0x%08lx (%s).";
      pcStack_88 = (char *)0x9d1f51;
      FUN_0081c0f1();
      pwStack_84 = (wchar_t *)&DAT_00d25fa0;
      pcStack_88 = "wxDisplayMSW::GetMonInfo";
      pwStack_8c = (wchar_t *)0xfb;
      pcStack_90 = "..\\..\\src\\msw\\display.cpp";
      pcStack_94 = (char *)0x6;
      local_c = (void *)0x0;
      puStack_98 = (uint *)0x9d1f7b;
      FUN_008423d0();
      local_c._0_1_ = 1;
      pwStack_84 = (wchar_t *)0x9d1f87;
      pwStack_84 = (wchar_t *)GetLastError();
      pcStack_88 = (char *)0x9d1f8d;
      pwStack_84 = (wchar_t *)FUN_00843700();
      pcStack_88 = (char *)0x9d1f96;
      pcStack_88 = (char *)GetLastError();
      pwStack_8c = L"GetMonitorInfo";
      pcStack_90 = (char *)0xfb;
      pcStack_94 = "..\\..\\src\\msw\\display.cpp";
      puStack_98 = &uStack_78;
      uStack_9c = 0x9d1fb2;
      FUN_00847d90();
      local_c = (void *)((uint)local_c._1_3_ << 8);
      pwStack_84 = L"䲍ࠤ䓇琤\xffff\xffff\xebe8\xe495㋿诀⑌摬ඉ";
      FUN_00842440();
      local_c = (void *)0xffffffff;
      pwStack_84 = L"쀲䲋氤襤\r";
      FUN_0081b5bc();
    }
    ExceptionList = pvStack_14;
    return 0;
  }
  ExceptionList = pvStack_14;
  return 1;
}



void FUN_009d2000(int *param_1)

{
  char cVar1;
  undefined4 local_6c;
  int local_68;
  int local_64;
  int local_60;
  int local_5c;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_6c;
  _memset(&local_6c,0,0x68);
  local_6c = 0x68;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  cVar1 = FUN_009d1ee0(&local_6c);
  if (cVar1 != '\0') {
    *param_1 = local_68;
    param_1[1] = local_64;
    param_1[2] = local_60 - local_68;
    param_1[3] = local_5c - local_64;
  }
  ___security_check_cookie_4();
  return;
}



void FUN_009d2090(int *param_1)

{
  char cVar1;
  undefined4 local_6c [5];
  int local_58;
  int local_54;
  int local_50;
  int local_4c;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_6c;
  _memset(local_6c,0,0x68);
  local_6c[0] = 0x68;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  cVar1 = FUN_009d1ee0(local_6c);
  if (cVar1 != '\0') {
    *param_1 = local_58;
    param_1[1] = local_54;
    param_1[2] = local_50 - local_58;
    param_1[3] = local_4c - local_54;
  }
  ___security_check_cookie_4();
  return;
}



void FUN_009d2120(int param_1)

{
  short sVar1;
  char cVar2;
  short *psVar3;
  undefined4 local_80;
  int local_7c;
  undefined4 local_78 [10];
  short local_50;
  undefined local_4e [62];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be7f19;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  ExceptionList = &local_c;
  local_7c = param_1;
  local_80 = 0;
  _memset(local_78,0,0x68);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  local_78[0] = 0x68;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  local_80 = 1;
  cVar2 = FUN_009d1ee0(local_78);
  if (cVar2 != '\0') {
    psVar3 = &local_50;
    do {
      sVar1 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(&local_50,(int)psVar3 - (int)local_4e >> 1);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_009d2210(void)

{
  char cVar1;
  undefined4 local_6c [26];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_6c;
  _memset(local_6c,0,0x68);
  local_6c[0] = 0x68;
  cVar1 = FUN_009d1ee0(local_6c);
  if (cVar1 == '\0') {
    ___security_check_cookie_4();
    return;
  }
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009d2270(int *param_1_00,DWORD *param_1)

{
  char cVar1;
  int *piVar2;
  BOOL BVar3;
  int iVar4;
  bool bVar5;
  LPCWSTR lpszDeviceName;
  undefined4 local_178 [30];
  int iStack_100;
  uint uStack_fc;
  void *pvStack_f8;
  DEVMODEW DStack_f0;
  void *local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00be7f71;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_178);
  ExceptionList = &local_c;
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  local_178[0] = 0;
  (**(code **)(*param_1_00 + 0xc))();
  uStack_8 = (undefined *)0x0;
  if (iStack_100 == 0) {
    lpszDeviceName = (LPCWSTR)0x0;
    bVar5 = false;
  }
  else {
    piVar2 = (int *)FUN_00432231();
    iVar4 = *piVar2;
    bVar5 = true;
    if (*(uint *)(iVar4 + 0x18) < 8) {
      iVar4 = iVar4 + 4;
    }
    else {
      iVar4 = *(int *)(iVar4 + 4);
    }
    lpszDeviceName = (LPCWSTR)(iVar4 + piVar2[1] * 2);
  }
  if (bVar5) {
    FUN_00432214();
  }
  DStack_f0.dmSize = 0xdc;
  DStack_f0.dmDriverExtra = 0;
  BVar3 = EnumDisplaySettingsW(lpszDeviceName,0xffffffff,&DStack_f0);
  if (BVar3 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_8._0_1_ = 1;
      FUN_008423d0();
      uStack_8._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_8._0_1_ = 1;
      FUN_00842440();
      uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
      FUN_0081b5bc();
    }
  }
  else {
    *param_1 = DStack_f0.dmPelsWidth;
    param_1[1] = DStack_f0.dmPelsHeight;
    param_1[2] = DStack_f0.dmBitsPerPel;
    param_1[3] = -(uint)(1 < DStack_f0.dmDisplayFrequency) & DStack_f0.dmDisplayFrequency;
  }
  _free(pvStack_f8);
  if (7 < uStack_fc) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_009d2490(undefined4 *param_1)

{
  char cVar1;
  BOOL BVar2;
  HINSTANCE hInstance;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be7fd3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = wxDisplayFactoryMSW::vftable;
  local_4 = 1;
  if ((HWND)param_1[4] != (HWND)0x0) {
    BVar2 = DestroyWindow((HWND)param_1[4]);
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        local_4._0_1_ = 2;
        FUN_008423d0();
        local_4._0_1_ = 3;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        local_4._0_1_ = 2;
        FUN_00842440();
        local_4 = CONCAT31(local_4._1_3_,1);
        FUN_0081b5bc();
      }
    }
    if (param_1[5] != 0) {
      hInstance = (HINSTANCE)FUN_008a65e0();
      BVar2 = UnregisterClassW((LPCWSTR)param_1[5],hInstance);
      if (BVar2 == 0) {
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_0081c0f1();
          local_4._0_1_ = 4;
          FUN_008423d0();
          local_4._0_1_ = 5;
          GetLastError();
          FUN_00843700();
          GetLastError();
          FUN_00847d90();
          local_4._0_1_ = 4;
          FUN_00842440();
          local_4 = CONCAT31(local_4._1_3_,1);
          FUN_0081b5bc();
        }
      }
    }
  }
  DAT_032ea10c = 0;
  local_4 = local_4 & 0xffffff00;
  FUN_0086aa30();
  *param_1 = wxDisplayFactory::vftable;
  ExceptionList = local_c;
  return;
}



void FUN_009d26b0(void)

{
  char cVar1;
  int iVar2;
  undefined auStack_b0 [8];
  undefined4 uStack_a8;
  undefined4 *puStack_a4;
  char *pcStack_a0;
  char *pcStack_9c;
  wchar_t *pwStack_98;
  char *pcStack_94;
  wchar_t *pwStack_90;
  undefined4 uStack_8c;
  undefined4 uStack_88;
  undefined *puStack_84;
  undefined4 uStack_80;
  uint uStack_7c;
  void *pvStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  uStack_7c = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  uStack_80 = 0x9d26de;
  FUN_0086a880();
  puStack_84 = &LAB_009d17d0;
  uStack_88 = 0;
  uStack_8c = 0;
  pwStack_90 = L"삅蔏³";
  iVar2 = (*DAT_032ea108)();
  if (iVar2 == 0) {
    puStack_84 = auStack_b0;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      pwStack_90 = L"%s(%d): \'%s\' failed with error 0x%08lx (%s).";
      pcStack_94 = (char *)0x9d2729;
      FUN_0081c0f1();
      pwStack_90 = (wchar_t *)&DAT_00d25fa0;
      pcStack_94 = "wxDisplayFactoryMSW::DoRefreshMonitors";
      pwStack_98 = (wchar_t *)0x22c;
      pcStack_9c = "..\\..\\src\\msw\\display.cpp";
      pcStack_a0 = (char *)0x6;
      puStack_a4 = (undefined4 *)0x9d2753;
      FUN_008423d0();
      pwStack_90 = (wchar_t *)0x9d275f;
      pwStack_90 = (wchar_t *)GetLastError();
      pcStack_94 = (char *)0x9d2765;
      pwStack_90 = (wchar_t *)FUN_00843700();
      pcStack_94 = (char *)0x9d276e;
      pcStack_94 = (char *)GetLastError();
      pwStack_98 = L"EnumDisplayMonitors";
      pcStack_9c = (char *)0x22c;
      pcStack_a0 = "..\\..\\src\\msw\\display.cpp";
      puStack_a4 = &uStack_80;
      uStack_a8 = 0x9d278a;
      FUN_00847d90();
      pwStack_90 = L"䲍త䓇砤\xffff\xffffᏨ\xe48e诿⑌摰ඉ";
      FUN_00842440();
      pwStack_90 = L"䲋瀤襤\r";
      FUN_0081b5bc();
    }
  }
  ExceptionList = pvStack_1c;
  return;
}



// WARNING: Removing unreachable block (ram,0x009d2a35)

undefined4 * __fastcall FUN_009d27f0(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be8033;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1 = wxDisplayFactoryMSW::vftable;
  FUN_0086a600(uVar1);
  local_4._0_1_ = 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (DAT_032ea10c != (undefined4 *)0x0)) {
    FUN_00840480("..\\..\\src\\msw\\display.cpp",0x1ea,"wxDisplayFactoryMSW::wxDisplayFactoryMSW",
                 "!ms_factory",L"Using more than one factory?");
  }
  DAT_032ea10c = param_1;
  param_1[4] = 0;
  param_1[5] = 0;
  if ((((DAT_032ea0fc == 0) || (DAT_032ea100 == 0)) || (DAT_032ea104 == 0)) || (DAT_032ea108 == 0))
  {
    FUN_004325b6(L"user32.dll");
    local_4._0_1_ = 2;
    FUN_0089ed30(local_54,0x28);
    local_4._0_1_ = 4;
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    FUN_0043c211("MonitorFromPoint");
    local_4._0_1_ = 5;
    DAT_032ea0fc = FUN_0089f2d0(0,local_30);
    local_4._0_1_ = 4;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    FUN_0043c211("MonitorFromWindow");
    local_4._0_1_ = 6;
    DAT_032ea100 = FUN_0089f2d0(0,local_30);
    local_4._0_1_ = 4;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    FUN_0043c211("GetMonitorInfo");
    local_4._0_1_ = 7;
    DAT_032ea104 = FUN_0089f340(0,local_30);
    local_4._0_1_ = 4;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    FUN_0043c211("EnumDisplayMonitors");
    local_4._0_1_ = 8;
    DAT_032ea108 = FUN_0089f2d0(0,local_30);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_4._0_1_ = 1;
  }
  if (((DAT_032ea0fc != 0) && (DAT_032ea100 != 0)) && ((DAT_032ea104 != 0 && (DAT_032ea108 != 0))))
  {
    FUN_009d26b0();
    uVar2 = FUN_008963e0(param_1 + 5,L"wxDisplayHiddenWindow",&LAB_009d27c0);
    param_1[4] = uVar2;
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_009d2aa0(undefined4 param_1_00,byte param_1)

{
  FUN_009d2490();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_009d2ac0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x18);
  local_4 = 0;
  if (local_10 == (void *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2 = (undefined4 *)FUN_009d27f0(uVar1);
  }
  local_4 = 0xffffffff;
  if (puVar2[2] == 0) {
    (**(code **)*puVar2)(1);
    puVar2 = (undefined4 *)operator_new(4);
    if (puVar2 != (undefined4 *)0x0) {
      *puVar2 = wxDisplayFactorySingle::vftable;
      ExceptionList = local_c;
      return puVar2;
    }
    puVar2 = (undefined4 *)0x0;
  }
  ExceptionList = local_c;
  return puVar2;
}



void FUN_009d2b60(undefined4 param_1)

{
  FUN_009a67a0(param_1);
  return;
}



void __fastcall FUN_009d2b80(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  return;
}



int __thiscall FUN_009d2b90(int param_1_00,int param_1,undefined4 param_2,int param_3)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  
  if ((param_3 < 1) || (param_1 == 0)) {
    *(undefined4 *)(param_1_00 + 8) = 2;
    return 2;
  }
  puVar1 = (undefined4 *)FUN_00823c23(param_3 * 4);
  if (puVar1 == (undefined4 *)0x0) {
    *(undefined4 *)(param_1_00 + 8) = 3;
    return 3;
  }
  if (0 < param_3) {
    puVar2 = puVar1;
    iVar3 = param_3;
    do {
      *puVar2 = *(undefined4 *)((param_1 - (int)puVar1) + (int)puVar2);
      puVar2 = puVar2 + 1;
      iVar3 = iVar3 + -1;
    } while (iVar3 != 0);
  }
  iVar3 = FUN_009a71b0(*(undefined4 *)(param_1_00 + 4),puVar1,param_2,param_3);
  if (iVar3 != 0) {
    *(int *)(param_1_00 + 8) = iVar3;
    FUN_00a3f66c(puVar1);
    return iVar3;
  }
  FUN_00a3f66c(puVar1);
  return 0;
}



void __fastcall FUN_009d2c40(undefined4 *param_1)

{
  FUN_009a80c0(*param_1);
  return;
}



undefined4 __thiscall FUN_009d2c50(int param_1_00,uint param_1,uint *param_2)

{
  uint *puVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  int iVar5;
  
  puVar1 = param_2;
  iVar5 = param_1;
  if ((param_1 != 0) && (param_2 != (uint *)0x0)) {
    iVar2 = FUN_009a72a0(*(undefined4 *)(param_1_00 + 4),&param_2);
    if (iVar2 != 0) {
      *(int *)(param_1_00 + 8) = iVar2;
    }
    param_1 = *puVar1;
    if (((int)param_1 <= (int)param_2) && (0 < (int)param_2)) {
      puVar3 = (undefined4 *)
               FUN_00823c23(-(uint)((int)((ulonglong)param_1 * 4 >> 0x20) != 0) |
                            (uint)((ulonglong)param_1 * 4));
      if (puVar3 == (undefined4 *)0x0) {
        *(undefined4 *)(param_1_00 + 8) = 3;
        return 3;
      }
      iVar2 = 0;
      if (0 < (int)param_1) {
        puVar4 = puVar3;
        do {
          *puVar4 = *(undefined4 *)((iVar5 - (int)puVar3) + (int)puVar4);
          iVar2 = iVar2 + 1;
          puVar4 = puVar4 + 1;
        } while (iVar2 < (int)param_1);
      }
      iVar5 = FUN_009a7240(*(undefined4 *)(param_1_00 + 4),puVar3,&param_1);
      if (iVar5 != 0) {
        *(int *)(param_1_00 + 8) = iVar5;
      }
      if (*(int *)(param_1_00 + 8) == 0) {
        *puVar1 = param_1;
      }
      FUN_00a3f66c(puVar3);
      return *(undefined4 *)(param_1_00 + 8);
    }
  }
  *(undefined4 *)(param_1_00 + 8) = 2;
  return 2;
}



int __thiscall FUN_009d2d30(int param_1_00,int param_1,undefined4 param_2,uint param_3)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  uint uVar4;
  
  if (((int)param_3 < 1) || (param_1 == 0)) {
    *(undefined4 *)(param_1_00 + 8) = 2;
    return 2;
  }
  puVar1 = (undefined4 *)
           FUN_00823c23(-(uint)((int)((ulonglong)param_3 * 4 >> 0x20) != 0) |
                        (uint)((ulonglong)param_3 * 4));
  if (puVar1 == (undefined4 *)0x0) {
    *(undefined4 *)(param_1_00 + 8) = 3;
    return 3;
  }
  if (0 < (int)param_3) {
    puVar2 = puVar1;
    uVar4 = param_3;
    do {
      *puVar2 = *(undefined4 *)((param_1 - (int)puVar1) + (int)puVar2);
      puVar2 = puVar2 + 1;
      uVar4 = uVar4 - 1;
    } while (uVar4 != 0);
  }
  iVar3 = FUN_009a72d0(*(undefined4 *)(param_1_00 + 4),puVar1,param_2,param_3);
  if (iVar3 != 0) {
    *(int *)(param_1_00 + 8) = iVar3;
    FUN_00a3f66c(puVar1);
    return iVar3;
  }
  FUN_00a3f66c(puVar1);
  return 0;
}



void __fastcall FUN_009d2df0(undefined4 *param_1)

{
  FUN_009a7e00(*param_1);
  return;
}



undefined4 * __thiscall
FUN_009d2e00(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,int param_5)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined4 local_8;
  undefined4 local_4;
  
  *param_1_00 = 0;
  local_8 = 0;
  if (param_5 == 0) {
    uVar2 = 0;
  }
  else {
    uVar2 = *(undefined4 *)(param_5 + 4);
  }
  iVar1 = FUN_009a7dd0(param_1,uVar2,&local_8);
  local_4 = 0;
  param_1_00[1] = iVar1;
  uVar2 = local_8;
  if (iVar1 != 0) {
    puVar3 = DAT_032ea114;
    if (DAT_032ea114 == (undefined4 *)0x0) {
      DAT_032ea114 = &DAT_032ea120;
      uVar2 = FUN_009a7e30(&DAT_032ea120);
      puVar3 = DAT_032ea114;
      DAT_032ea114[1] = uVar2;
    }
    iVar1 = puVar3[1];
    uVar2 = *puVar3;
    param_1_00[1] = iVar1;
    if (iVar1 != 0) {
      FUN_009a7e00(local_8);
      return param_1_00;
    }
  }
  iVar1 = FUN_009a7f20(uVar2,param_2,param_3,param_4,param_1_00);
  param_1_00[1] = iVar1;
  if (iVar1 != 0) {
    puVar3 = DAT_032ea114;
    if (DAT_032ea114 == (undefined4 *)0x0) {
      DAT_032ea114 = &DAT_032ea120;
      uVar2 = FUN_009a7e30(&DAT_032ea120);
      puVar3 = DAT_032ea114;
      DAT_032ea114[1] = uVar2;
    }
    iVar1 = puVar3[1];
    uVar2 = *puVar3;
    param_1_00[1] = iVar1;
    if (iVar1 != 0) {
      FUN_009a7e00(local_8);
      return param_1_00;
    }
    uVar2 = FUN_009a7f20(uVar2,param_2,param_3,param_4,param_1_00);
    param_1_00[1] = uVar2;
  }
  FUN_009a7e00(local_8);
  return param_1_00;
}



undefined4 __fastcall FUN_009d2f20(int param_1)

{
  int iVar1;
  undefined4 local_4;
  
  local_4 = 0;
  iVar1 = FUN_009a7530(*(undefined4 *)(param_1 + 4),&local_4);
  if (iVar1 != 0) {
    *(int *)(param_1 + 8) = iVar1;
  }
  return local_4;
}



undefined4 __fastcall FUN_009d2f50(int param_1)

{
  int iVar1;
  undefined4 local_4;
  
  local_4 = 0;
  iVar1 = FUN_009a7560(*(undefined4 *)(param_1 + 4),&local_4);
  if (iVar1 != 0) {
    *(int *)(param_1 + 8) = iVar1;
  }
  return local_4;
}



void __fastcall FUN_009d2f80(undefined4 *param_1)

{
  *param_1 = Gdiplus::Image::vftable;
  FUN_009a74d0(param_1[1]);
  return;
}



undefined4 * __thiscall
FUN_009d2f90(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  undefined4 uVar1;
  undefined4 local_4;
  
  *param_1_00 = Gdiplus::Bitmap::vftable;
  local_4 = 0;
  uVar1 = FUN_009a75c0(param_1,param_2,param_3,param_4,param_5,&local_4);
  param_1_00[2] = uVar1;
  param_1_00[1] = local_4;
  return param_1_00;
}



undefined4 * __thiscall
FUN_009d2ff0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 local_4;
  
  *param_1_00 = Gdiplus::Bitmap::vftable;
  local_4 = 0;
  uVar1 = FUN_009a75c0(param_1,param_2,0,param_3,0,&local_4);
  param_1_00[2] = uVar1;
  param_1_00[1] = local_4;
  return param_1_00;
}



undefined4 * FUN_009d3030(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined4 local_4;
  
  puVar1 = (undefined4 *)FUN_009a6770(0x10);
  puVar3 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    local_4 = 0;
    *puVar1 = Gdiplus::Bitmap::vftable;
    uVar2 = FUN_009a75f0(param_1,param_2,&local_4);
    puVar1[2] = uVar2;
    puVar1[1] = local_4;
    puVar3 = puVar1;
  }
  return puVar3;
}



undefined4 * FUN_009d3070(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined4 local_4;
  
  puVar1 = (undefined4 *)FUN_009a6770(0x10);
  puVar3 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    local_4 = 0;
    *puVar1 = Gdiplus::Bitmap::vftable;
    uVar2 = FUN_009a7650(param_1,&local_4);
    puVar1[2] = uVar2;
    puVar1[1] = local_4;
    puVar3 = puVar1;
  }
  return puVar3;
}



void __fastcall FUN_009d30b0(int param_1)

{
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x10) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  return;
}



void __thiscall
FUN_009d30c0(int param_1_00,double *param_1,double *param_2,double *param_3,double *param_4)

{
  undefined4 *puVar1;
  int iVar2;
  float local_10;
  float local_c;
  float local_8;
  float local_4;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  local_4 = 0.0;
  local_8 = 0.0;
  local_c = 0.0;
  local_10 = 0.0;
  iVar2 = FUN_009a6bc0(*puVar1,&local_10,0,0);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  *param_1 = (double)local_10;
  *param_2 = (double)local_c;
  *param_3 = (double)local_8;
  *param_4 = (double)local_4;
  return;
}



undefined4 __fastcall FUN_009d3120(int param_1)

{
  return *(undefined4 *)(param_1 + 0xc);
}



void FUN_009d3130(void)

{
  return;
}



void __thiscall
FUN_009d3140(int *param_1_00,undefined4 param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4,undefined8 param_5)

{
  int *piVar1;
  undefined auStack_90 [8];
  undefined local_88 [16];
  void *pvStack_78;
  undefined4 uStack_70;
  void *local_4c;
  undefined *puStack_48;
  undefined4 uStack_44;
  
  uStack_44 = 0xffffffff;
  puStack_48 = &LAB_00be8058;
  local_4c = ExceptionList;
  ExceptionList = &local_4c;
  piVar1 = (int *)FUN_009a8630(DAT_0323f878 ^ (uint)&stack0xffffff40);
  (**(code **)(*piVar1 + 0x54))(local_88,param_1);
  local_4c = (void *)0x0;
  (**(code **)(*param_1_00 + 0xb8))(auStack_90,param_2,param_3,param_4,param_5);
  uStack_70 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_78;
  return;
}



void __thiscall FUN_009d31f0(int param_1_00,undefined8 *param_1,undefined8 *param_2)

{
  *param_1 = *(undefined8 *)(param_1_00 + 8);
  *param_2 = *(undefined8 *)(param_1_00 + 0x10);
  return;
}



undefined ** FUN_009d3210(void)

{
  return &PTR_u_wxGDIPlusRenderer_0323d4ac;
}



undefined ** FUN_009d3220(void)

{
  return &PTR_vftable_0323d4c4;
}



undefined ** FUN_009d3230(void)

{
  return &PTR_u_wxGDIPlusRendererModule_0323d4d4;
}



void FUN_009d3240(int param_1,int param_2,int param_3)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = (undefined4 *)operator_new(param_2 * 4);
  if (param_3 != 0) {
    iVar2 = param_1 - (int)puVar1;
    do {
      if (puVar1 != (undefined4 *)0x0) {
        *puVar1 = *(undefined4 *)(iVar2 + (int)puVar1);
      }
      puVar1 = puVar1 + 1;
      param_3 = param_3 + -1;
    } while (param_3 != 0);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



undefined4 * __thiscall FUN_009d3290(undefined4 *param_1_00,undefined4 *param_1)

{
  undefined4 uVar1;
  undefined4 local_4;
  
  param_1_00[2] = 6;
  *param_1_00 = Gdiplus::SolidBrush::vftable;
  local_4 = 0;
  uVar1 = FUN_009a7150(*param_1,&local_4);
  param_1_00[2] = uVar1;
  param_1_00[1] = local_4;
  return param_1_00;
}



undefined4 * __thiscall FUN_009d32d0(undefined4 *param_1_00,int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 local_4;
  
  param_1_00[2] = 6;
  *param_1_00 = Gdiplus::TextureBrush::vftable;
  local_4 = 0;
  uVar1 = FUN_009a7120(*(undefined4 *)(param_1 + 4),param_2,&local_4);
  param_1_00[2] = uVar1;
  param_1_00[1] = local_4;
  return param_1_00;
}



undefined4 * __thiscall
FUN_009d3320(undefined4 *param_1_00,undefined4 param_1,undefined4 *param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  undefined4 local_4;
  
  param_1_00[2] = 6;
  *param_1_00 = Gdiplus::HatchBrush::vftable;
  local_4 = 0;
  uVar1 = FUN_009a70f0(param_1,*param_2,*param_3,&local_4);
  param_1_00[2] = uVar1;
  param_1_00[1] = local_4;
  return param_1_00;
}



undefined4 * __thiscall FUN_009d3370(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = Gdiplus::Brush::vftable;
  FUN_009a70c0(param_1_00[1]);
  if ((param_1 & 1) != 0) {
    FUN_009a67a0(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_009d33a0(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = FUN_009a7410(*param_1_00,*(undefined4 *)(param_1 + 4));
  if (iVar1 != 0) {
    param_1_00[1] = iVar1;
    return iVar1;
  }
  return 0;
}



int __thiscall FUN_009d33d0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  
  iVar1 = FUN_009a7470(*param_1_00,param_1,param_2);
  if (iVar1 != 0) {
    param_1_00[1] = iVar1;
    return iVar1;
  }
  return 0;
}



int __thiscall
FUN_009d3400(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8)

{
  int iVar1;
  
  iVar1 = FUN_009a6a20(*param_1_00,param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
  if (iVar1 != 0) {
    param_1_00[1] = iVar1;
    return iVar1;
  }
  return 0;
}



int __thiscall
FUN_009d3460(undefined4 *param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  int iVar1;
  
  iVar1 = FUN_009a7ad0(*param_1_00,*param_1,param_2,param_3,param_4,param_5);
  if (iVar1 != 0) {
    param_1_00[1] = iVar1;
    return iVar1;
  }
  return 0;
}



int __thiscall
FUN_009d34b0(undefined4 *param_1_00,int param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  int iVar1;
  
  iVar1 = FUN_009a7b60(*param_1_00,*(undefined4 *)(param_1 + 4),param_2,param_3,param_4,param_5);
  if (iVar1 != 0) {
    param_1_00[1] = iVar1;
    return iVar1;
  }
  return 0;
}



int __thiscall
FUN_009d3500(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 *param_3,
            undefined4 *param_4,undefined4 *param_5,int param_6)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_10 = *param_4;
  local_c = param_4[1];
  local_8 = 0;
  local_4 = 0;
  if (param_6 == 0) {
    uVar4 = 0;
  }
  else {
    uVar4 = *(undefined4 *)(param_6 + 4);
  }
  if (param_5 == (undefined4 *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = *param_5;
  }
  if (param_3 == (undefined4 *)0x0) {
    uVar1 = 0;
  }
  else {
    uVar1 = *param_3;
  }
  iVar2 = FUN_009a8000(*param_1_00,param_1,param_2,uVar1,&local_10,uVar3,uVar4);
  if (iVar2 != 0) {
    param_1_00[1] = iVar2;
    return iVar2;
  }
  return 0;
}



int __thiscall
FUN_009d3580(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 *param_3,
            undefined4 param_4,undefined4 *param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 uVar3;
  
  if (param_5 == (undefined4 *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = *param_5;
  }
  if (param_3 == (undefined4 *)0x0) {
    uVar1 = 0;
  }
  else {
    uVar1 = *param_3;
  }
  iVar2 = FUN_009a8030(*param_1_00,param_1,param_2,uVar1,param_4,uVar3,param_6,param_7,param_8);
  if (iVar2 != 0) {
    param_1_00[1] = iVar2;
    return iVar2;
  }
  return 0;
}



int __thiscall
FUN_009d35e0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 *param_3,
            undefined4 param_4,undefined4 *param_5,uint param_6,int param_7)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  if ((param_7 == 0) || ((int)param_6 < 1)) {
    return 2;
  }
  iVar1 = FUN_00823c23(-(uint)((int)((ulonglong)param_6 * 4 >> 0x20) != 0) |
                       (uint)((ulonglong)param_6 * 4));
  if (iVar1 == 0) {
    return 3;
  }
  iVar2 = 0;
  if (0 < (int)param_6) {
    do {
      *(undefined4 *)(iVar1 + iVar2 * 4) = *(undefined4 *)(param_7 + iVar2 * 8);
      iVar2 = iVar2 + 1;
    } while (iVar2 < (int)param_6);
  }
  if (param_5 == (undefined4 *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = *param_5;
  }
  if (param_3 == (undefined4 *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = *param_3;
  }
  iVar2 = FUN_009a8060(*param_1_00,param_1,param_2,uVar3,param_4,uVar4,param_6,iVar1);
  if (iVar2 != 0) {
    param_1_00[1] = iVar2;
    FUN_00a3f66c(iVar1);
    return iVar2;
  }
  FUN_00a3f66c(iVar1);
  return 0;
}



int __thiscall
FUN_009d36b0(undefined4 *param_1_00,int param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  undefined4 uVar1;
  int iVar2;
  
  if (param_1 == 0) {
    uVar1 = 0;
  }
  else {
    uVar1 = *(undefined4 *)(param_1 + 4);
  }
  iVar2 = FUN_009a7c20(*param_1_00,uVar1,param_2,param_3,param_4,param_5);
  if (iVar2 != 0) {
    param_1_00[1] = iVar2;
    return iVar2;
  }
  return 0;
}



undefined4 * __thiscall FUN_009d3730(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = Gdiplus::Image::vftable;
  FUN_009a74d0(param_1_00[1]);
  if ((param_1 & 1) != 0) {
    FUN_009a67a0(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_009d3760(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 local_4;
  
  local_4 = 0;
  iVar1 = FUN_009a7680(param_1,param_2,param_3,param_4,param_5,*(undefined4 *)(param_1_00 + 4),
                       &local_4);
  if (iVar1 != 0) {
    *(int *)(param_1_00 + 8) = iVar1;
    return (undefined4 *)0x0;
  }
  puVar2 = (undefined4 *)FUN_009a6770(0x10);
  if (puVar2 != (undefined4 *)0x0) {
    *puVar2 = Gdiplus::Bitmap::vftable;
    puVar2[2] = 0;
    puVar2[1] = local_4;
    return puVar2;
  }
  FUN_009a74d0(local_4);
  return (undefined4 *)0x0;
}



void FUN_009d37f0(uint *param_1,int *param_2)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  uint uVar4;
  
  bVar1 = (**(code **)(*param_2 + 0x18))();
  bVar2 = (**(code **)(*param_2 + 0x14))();
  bVar3 = (**(code **)(*param_2 + 0x10))();
  uVar4 = (**(code **)(*param_2 + 0x1c))();
  *param_1 = (((uVar4 & 0xff) << 8 | (uint)bVar3) << 8 | (uint)bVar2) << 8 | (uint)bVar1;
  return;
}



undefined4 * __thiscall FUN_009d3850(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxGDIPlusRenderer::vftable;
  if (param_1_00[2] == 1) {
    if (param_1_00[3] != 0) {
      FUN_0099a8d0(param_1_00[3]);
      param_1_00[3] = 0;
    }
    param_1_00[2] = 0xffffffff;
  }
  *param_1_00 = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_009d38a0(undefined4 *param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be8088;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxGDIPlusPenData::vftable;
  puVar1 = (undefined4 *)param_1[3];
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_009a7350(*puVar1);
    FUN_009a67a0(puVar1);
  }
  if ((undefined4 *)param_1[4] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[4])(1,uVar2);
  }
  if ((undefined4 *)param_1[5] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[5])(1);
  }
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



float10 __fastcall FUN_009d3930(int param_1)

{
  return (float10)*(double *)(param_1 + 0x18);
}



undefined4 __thiscall FUN_009d3940(undefined4 param_1_00,byte param_1)

{
  FUN_009d38a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009d3960(undefined4 *param_1_00,float param_1,int *param_2)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int *piVar9;
  undefined4 uVar10;
  float *pfVar11;
  bool bVar12;
  undefined auStack_24 [4];
  undefined **appuStack_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8100;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_009a8540(param_1);
  piVar9 = param_2;
  *param_1_00 = wxGDIPlusPenData::vftable;
  param_1_00[3] = 0;
  param_1_00[4] = 0;
  param_1_00[5] = 0;
  local_4 = 0;
  param_1 = (float)(**(code **)(*param_2 + 0x60))(uVar2);
  *(double *)(param_1_00 + 6) = (double)(int)param_1;
  if ((double)(int)param_1 <= 0.0) {
    *(undefined8 *)(param_1_00 + 6) = 0x3fb999999999999a;
  }
  puVar3 = (undefined4 *)FUN_009a6770(8);
  local_4._0_1_ = 1;
  param_2 = puVar3;
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    uVar4 = (**(code **)(*piVar9 + 0x4c))(appuStack_20);
    param_1 = (float)*(double *)(param_1_00 + 6);
    local_4 = CONCAT31(local_4._1_3_,2);
    puVar5 = (undefined4 *)FUN_009d37f0(auStack_24,uVar4);
    *puVar3 = 0;
    uVar4 = FUN_009a7300(*puVar5,param_1,0,puVar3);
    puVar3[1] = uVar4;
  }
  param_1_00[3] = puVar3;
  local_4 = 0;
  if (puVar3 != (undefined4 *)0x0) {
    appuStack_20[0] = wxObject::vftable;
    FUN_0083e850();
  }
  iVar6 = (**(code **)(*piVar9 + 0x5c))();
  if (iVar6 == 0x82) {
    uVar4 = 2;
  }
  else if (iVar6 == 0x83) {
    uVar4 = 1;
  }
  else {
    uVar4 = 0;
  }
  puVar3 = (undefined4 *)param_1_00[3];
  iVar6 = FUN_009a73b0(*puVar3,uVar4,uVar4,0);
  if (iVar6 != 0) {
    puVar3[1] = iVar6;
  }
  iVar6 = (**(code **)(*piVar9 + 0x58))();
  if (iVar6 == 0x78) {
    uVar4 = 1;
  }
  else if ((iVar6 == 0x79) || (iVar6 != 0x7a)) {
    uVar4 = 0;
  }
  else {
    uVar4 = 2;
  }
  puVar3 = (undefined4 *)param_1_00[3];
  iVar6 = FUN_009a73e0(*puVar3,uVar4);
  if (iVar6 != 0) {
    puVar3[1] = iVar6;
  }
  puVar3 = (undefined4 *)param_1_00[3];
  iVar6 = FUN_009a7440(*puVar3,0);
  if (iVar6 != 0) {
    puVar3[1] = iVar6;
  }
  uVar4 = (**(code **)(*piVar9 + 0x54))();
  switch(uVar4) {
  case 100:
    goto switchD_009d3b02_caseD_64;
  case 0x65:
    uVar4 = 2;
    break;
  case 0x66:
  case 0x67:
    uVar4 = 1;
    break;
  case 0x68:
    uVar4 = 3;
    break;
  case 0x69:
    uVar4 = 5;
    uVar2 = (**(code **)(*piVar9 + 100))(&param_1);
    if ((param_1 != 0.0) && (0 < (int)uVar2)) {
      iVar7 = FUN_00823c23(-(uint)((int)((ulonglong)uVar2 * 4 >> 0x20) != 0) |
                           (uint)((ulonglong)uVar2 * 4));
      iVar6 = 0;
      if (3 < (int)uVar2) {
        iVar8 = iVar6;
        pfVar11 = (float *)(iVar7 + 8);
        do {
          iVar6 = iVar8 + 4;
          pfVar11[-2] = (float)(int)*(char *)(iVar8 + (int)param_1);
          pfVar11[-1] = (float)(int)*(char *)(iVar8 + 1 + (int)param_1);
          *pfVar11 = (float)(int)*(char *)(iVar8 + 2 + (int)param_1);
          param_2 = (int *)(int)*(char *)(iVar8 + 3 + (int)param_1);
          pfVar11[1] = (float)(int)param_2;
          iVar8 = iVar6;
          pfVar11 = pfVar11 + 4;
        } while (iVar6 < (int)(uVar2 - 3));
      }
      uVar4 = 5;
      while (iVar6 < (int)uVar2) {
        param_2 = (int *)(int)*(char *)(iVar6 + (int)param_1);
        iVar6 = iVar6 + 1;
        *(float *)(iVar7 + -4 + iVar6 * 4) = (float)(int)param_2;
      }
      FUN_009d33d0(iVar7,uVar2);
      FUN_00a3f66c(iVar7);
    }
    break;
  default:
    iVar6 = (**(code **)(*piVar9 + 0x54))();
    if (iVar6 < 0x6f) {
      ExceptionList = local_c;
      return param_1_00;
    }
    iVar6 = (**(code **)(*piVar9 + 0x54))();
    if (0x74 < iVar6) {
      ExceptionList = local_c;
      return param_1_00;
    }
    uVar4 = (**(code **)(*piVar9 + 0x54))();
    switch(uVar4) {
    case 0x6f:
      uVar4 = 3;
      break;
    case 0x70:
      uVar4 = 5;
      break;
    case 0x71:
      uVar4 = 2;
      break;
    case 0x72:
      uVar4 = 4;
      break;
    default:
      uVar4 = 0;
      break;
    case 0x74:
      uVar4 = 1;
    }
    param_2 = (int *)FUN_009a6770(0xc);
    local_4._0_1_ = 4;
    bVar12 = param_2 == (int *)0x0;
    if (bVar12) {
      uVar4 = 0;
    }
    else {
      param_1 = 2.350989e-38;
      uVar10 = (**(code **)(*piVar9 + 0x4c))(appuStack_20);
      puVar3 = &param_1;
      local_4 = CONCAT31(local_4._1_3_,5);
      uVar10 = FUN_009d37f0(auStack_24,uVar10,puVar3);
      uVar4 = FUN_009d3320(uVar4,uVar10,puVar3);
    }
    param_1_00[5] = uVar4;
    local_4 = 0;
    if (!bVar12) {
      appuStack_20[0] = wxObject::vftable;
      FUN_0083e850();
    }
    puVar3 = (undefined4 *)param_1_00[3];
    iVar6 = FUN_009a7410(*puVar3,*(undefined4 *)(param_1_00[5] + 4));
    goto LAB_009d3b1a;
  case 0x6e:
    piVar9 = (int *)(**(code **)(*piVar9 + 0x50))();
    if ((piVar9 != (int *)0x0) && (cVar1 = (**(code **)(*piVar9 + 0x10))(), cVar1 != '\0')) {
      if (piVar9[1] == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = *(undefined4 *)(piVar9[1] + 0x14);
      }
      FUN_008f25c0();
      uVar10 = FUN_00992eb0();
      uVar4 = FUN_009d3030(uVar4,uVar10);
      param_1_00[4] = uVar4;
      iVar6 = FUN_009a6770(0xc);
      if (iVar6 == 0) {
        param_1_00[5] = 0;
        FUN_009d33a0(0);
      }
      else {
        uVar4 = FUN_009d32d0(param_1_00[4],0);
        param_1_00[5] = uVar4;
        FUN_009d33a0(uVar4);
      }
    }
    goto switchD_009d3b02_caseD_64;
  }
  puVar3 = (undefined4 *)param_1_00[3];
  iVar6 = FUN_009a7440(*puVar3,uVar4);
LAB_009d3b1a:
  if (iVar6 != 0) {
    puVar3[1] = iVar6;
  }
switchD_009d3b02_caseD_64:
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_009d3df0(undefined4 *param_1_00,int param_1,int *param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int *piVar6;
  bool bVar7;
  undefined4 *puVar8;
  undefined auStack_24 [4];
  undefined **appuStack_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8170;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_009a8540(param_1);
  piVar6 = param_2;
  puVar8 = param_1_00 + 4;
  *param_1_00 = wxGDIPlusBrushData::vftable;
  param_1_00[3] = 0;
  *puVar8 = 0;
  param_1_00[5] = 0;
  local_4 = 0;
  iVar3 = (**(code **)(*param_2 + 0x40))(uVar2);
  if (iVar3 == 100) {
    param_1 = FUN_009a6770(0xc);
    local_4._0_1_ = 1;
    bVar7 = param_1 == 0;
    if (bVar7) {
      uVar4 = 0;
    }
    else {
      uVar4 = (**(code **)(*piVar6 + 0x3c))(appuStack_20);
      local_4 = CONCAT31(local_4._1_3_,2);
      uVar4 = FUN_009d37f0(&param_2,uVar4);
      uVar4 = FUN_009d3290(uVar4);
    }
  }
  else {
    cVar1 = (**(code **)(*piVar6 + 0x48))();
    if (cVar1 == '\0') {
      piVar6 = (int *)(**(code **)(*piVar6 + 0x44))();
      if (piVar6 == (int *)0x0) {
        ExceptionList = local_c;
        return param_1_00;
      }
      cVar1 = (**(code **)(*piVar6 + 0x10))();
      if (cVar1 == '\0') {
        ExceptionList = local_c;
        return param_1_00;
      }
      FUN_009faa10(puVar8);
      if (piVar6[1] == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = *(undefined4 *)(piVar6[1] + 0x14);
      }
      FUN_008f25c0();
      uVar5 = FUN_00992eb0();
      uVar4 = FUN_009d3030(uVar4,uVar5);
      *puVar8 = uVar4;
      iVar3 = FUN_009a6770(0xc);
      if (iVar3 == 0) {
        uVar4 = 0;
      }
      else {
        uVar4 = FUN_009d32d0(*puVar8,0);
      }
      param_1_00[3] = uVar4;
      ExceptionList = local_c;
      return param_1_00;
    }
    uVar4 = (**(code **)(*piVar6 + 0x40))();
    switch(uVar4) {
    case 0x6f:
      uVar4 = 3;
      break;
    case 0x70:
      uVar4 = 5;
      break;
    case 0x71:
      uVar4 = 2;
      break;
    case 0x72:
      uVar4 = 4;
      break;
    default:
      uVar4 = 0;
      break;
    case 0x74:
      uVar4 = 1;
    }
    param_2 = (int *)FUN_009a6770(0xc);
    local_4._0_1_ = 4;
    bVar7 = param_2 == (int *)0x0;
    if (bVar7) {
      uVar4 = 0;
    }
    else {
      param_1 = 0xffffff;
      uVar5 = (**(code **)(*piVar6 + 0x3c))(appuStack_20);
      puVar8 = &param_1;
      local_4 = CONCAT31(local_4._1_3_,5);
      uVar5 = FUN_009d37f0(auStack_24,uVar5,puVar8);
      uVar4 = FUN_009d3320(uVar4,uVar5,puVar8);
    }
  }
  local_4 = 0;
  param_1_00[3] = uVar4;
  if (!bVar7) {
    appuStack_20[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009d4020(undefined4 *param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be8088;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxGDIPlusBrushData::vftable;
  local_4 = 0;
  if ((undefined4 *)param_1[3] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[3])(1,uVar2);
  }
  if ((undefined4 *)param_1[4] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[4])(1);
  }
  puVar1 = (undefined4 *)param_1[5];
  if (puVar1 != (undefined4 *)0x0) {
    FUN_009a6860(*puVar1);
    FUN_009a67a0(puVar1);
  }
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009d40b0(undefined4 *param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be8088;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxGDIPlusFontData::vftable;
  local_4 = 0;
  if ((undefined4 *)param_1[3] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[3])(1,uVar2);
  }
  puVar1 = (undefined4 *)param_1[4];
  if (puVar1 != (undefined4 *)0x0) {
    FUN_009a7f70(*puVar1);
    FUN_009a67a0(puVar1);
  }
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009d4130(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  uint *puVar1;
  undefined4 *puVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  int iVar7;
  undefined4 *puVar8;
  uint uVar9;
  undefined4 uVar10;
  uint uVar11;
  byte local_92;
  byte local_91;
  int local_90;
  undefined4 *local_8c;
  uint local_88;
  uint local_84;
  undefined4 *local_80;
  undefined4 local_7c;
  undefined4 *local_78;
  uint local_74;
  undefined4 local_70;
  undefined **local_6c;
  undefined4 local_68;
  int local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  uint local_54;
  uint local_50;
  undefined **local_4c;
  undefined4 local_48;
  int local_44;
  undefined local_3c [8];
  int local_34;
  int local_2c;
  undefined local_24 [8];
  int local_1c;
  int local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be81a8;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff5c;
  ExceptionList = &local_c;
  local_78 = param_1_00;
  FUN_009a8540(param_1);
  local_4 = 0;
  *param_1_00 = wxGDIPlusBitmapData::vftable;
  param_1_00[3] = 0;
  param_1_00[4] = 0;
  iVar5 = FUN_008f25d0(uVar4);
  iVar7 = *(int *)(param_2 + 4);
  if (iVar5 == 0) {
    if (iVar7 == 0) {
      local_90 = 0;
    }
    else {
      local_90 = *(int *)(iVar7 + 0x14);
    }
    FUN_008f25c0();
    uVar10 = FUN_00992eb0();
    puVar8 = (undefined4 *)FUN_009a6770(0x10);
    if (puVar8 == (undefined4 *)0x0) {
      puVar8 = (undefined4 *)0x0;
    }
    else {
      *puVar8 = Gdiplus::Bitmap::vftable;
      local_8c = (undefined4 *)0x0;
      uVar10 = FUN_009a75f0(local_90,uVar10,&local_8c);
      puVar8[2] = uVar10;
      puVar8[1] = local_8c;
    }
    local_8c = puVar8;
    cVar3 = FUN_008f2600();
    if (cVar3 != '\0') {
      iVar7 = FUN_009a7590(puVar8[1],&local_88);
      if (iVar7 != 0) {
        puVar8[2] = iVar7;
      }
      if ((local_88 & 0xff00) == 0x2000) {
        uVar10 = FUN_009d2f20();
        local_60 = FUN_009d2f50();
        puVar2 = local_78;
        local_6c = (undefined **)0x0;
        local_68 = 0;
        local_78[4] = puVar8;
        local_64 = uVar10;
        iVar7 = FUN_009a7590(puVar8[1],&local_88);
        if (iVar7 != 0) {
          puVar8[2] = iVar7;
        }
        iVar7 = puVar2[4];
        iVar5 = FUN_009a76e0(*(undefined4 *)(iVar7 + 4),&local_6c,1,local_88,&DAT_032ea148);
        if (iVar5 != 0) {
          *(int *)(iVar7 + 8) = iVar5;
        }
        iVar7 = FUN_009a6770(0x10);
        if (iVar7 == 0) {
          local_8c = (undefined4 *)0x0;
        }
        else {
          local_8c = (undefined4 *)
                     FUN_009d2f90(DAT_032ea148,DAT_032ea14c,DAT_032ea150,0xe200b,DAT_032ea158);
        }
        iVar7 = puVar2[4];
        iVar5 = FUN_009a7710(*(undefined4 *)(iVar7 + 4),&DAT_032ea148);
        if (iVar5 != 0) {
          *(int *)(iVar7 + 8) = iVar5;
        }
      }
    }
  }
  else {
    if (iVar7 == 0) {
      uVar10 = 0;
    }
    else {
      uVar10 = *(undefined4 *)(iVar7 + 0x14);
    }
    FUN_008f25c0();
    uVar6 = FUN_00992eb0();
    local_6c = Gdiplus::Bitmap::vftable;
    local_7c = 0;
    local_64 = FUN_009a75f0(uVar10,uVar6,&local_7c);
    uVar10 = local_7c;
    local_68 = local_7c;
    local_4 = CONCAT31(local_4._1_3_,1);
    local_74 = 0;
    iVar7 = FUN_009a7530(local_7c,&local_74);
    if (iVar7 != 0) {
      local_64 = iVar7;
    }
    local_84 = 0;
    iVar7 = FUN_009a7560(uVar10,&local_84);
    uVar4 = local_74;
    if (iVar7 != 0) {
      local_64 = iVar7;
    }
    local_5c = 0;
    local_58 = 0;
    local_54 = local_74;
    local_50 = local_84;
    iVar7 = FUN_009a6770(0x10);
    if (iVar7 == 0) {
      local_80 = (undefined4 *)0x0;
    }
    else {
      local_80 = (undefined4 *)FUN_009d2ff0(uVar4,local_84,0xe200b);
    }
    local_8c = local_80;
    iVar7 = FUN_008f25d0();
    local_4c = Gdiplus::Bitmap::vftable;
    local_70 = 0;
    local_44 = FUN_009a75f0(*(undefined4 *)(iVar7 + 8),0,&local_70);
    uVar10 = local_70;
    local_48 = local_70;
    local_4 = CONCAT31(local_4._1_3_,2);
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      iVar7 = FUN_009a7590(local_70,&local_90);
      if (iVar7 != 0) {
        local_44 = iVar7;
      }
      if (local_90 != 0x30101) {
        FUN_008402e0("..\\..\\src\\msw\\graphics.cpp",0x3d2,
                     "wxGDIPlusBitmapData::wxGDIPlusBitmapData",
                     "interimMask.GetPixelFormat() == (1 | ( 1 << 8) | 0x00010000 | 0x00020000)",0);
      }
    }
    FUN_009a7590(uVar10,&local_90);
    FUN_009a76e0(uVar10,&local_5c,1,local_90,local_3c);
    puVar8 = local_80;
    iVar7 = FUN_009a76e0(local_80[1],&local_5c,2,0xe200b,local_24);
    if (iVar7 != 0) {
      puVar8[2] = iVar7;
    }
    uVar11 = 0;
    local_92 = 0;
    local_91 = 0;
    if (local_84 != 0) {
      do {
        uVar9 = 0;
        local_90 = 0;
        if (uVar4 != 0) {
          do {
            if ((uVar9 & 7) == 0) {
              local_90 = local_90 + 1;
              local_91 = *(byte *)(local_34 * uVar11 + local_2c + -1 + local_90);
              local_92 = 0x80;
            }
            else {
              local_92 = local_92 >> 1;
            }
            puVar1 = (uint *)(local_1c * uVar11 + local_14 + uVar9 * 4);
            if ((local_91 & local_92) == 0) {
              *puVar1 = 0;
            }
            else {
              iVar7 = FUN_009a7740(local_7c,uVar9,uVar11,&local_88);
              uVar4 = 0xff000000;
              if (iVar7 == 0) {
                uVar4 = local_88;
              }
              *puVar1 = uVar4 | 0xff000000;
              uVar4 = local_74;
            }
            uVar9 = uVar9 + 1;
            uVar10 = local_70;
          } while (uVar9 < uVar4);
        }
        uVar11 = uVar11 + 1;
      } while (uVar11 < local_84);
    }
    puVar8 = local_80;
    iVar7 = FUN_009a7710(local_80[1],local_24);
    if (iVar7 != 0) {
      puVar8[2] = iVar7;
    }
    FUN_009a7710(uVar10,local_3c);
    uVar6 = local_7c;
    FUN_009a7710(local_7c,local_3c);
    FUN_009a74d0(uVar10);
    FUN_009a74d0(uVar6);
  }
  if (local_8c != (undefined4 *)0x0) {
    local_78[3] = local_8c;
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009d4590(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd0918;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxGDIPlusBitmapData::vftable;
  local_4 = 0;
  if ((undefined4 *)param_1[3] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[3])(1,uVar1);
  }
  if ((undefined4 *)param_1[4] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[4])(1);
  }
  *param_1 = wxRefCounter::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_009d4600(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  FUN_009a8540(param_1);
  *param_1_00 = wxGDIPlusPathData::vftable;
  if (param_2 != 0) {
    param_1_00[3] = param_2;
    return param_1_00;
  }
  puVar1 = (undefined4 *)FUN_009a6770(8);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
    uVar2 = FUN_009a6800(0,puVar1);
    puVar1[1] = uVar2;
    param_1_00[3] = puVar1;
    return param_1_00;
  }
  param_1_00[3] = 0;
  return param_1_00;
}



void __thiscall
FUN_009d4660(int param_1_00,undefined4 param_1,undefined4 param_3,undefined4 param_2,
            undefined4 param_5)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  iVar2 = FUN_009a68c0(*puVar1);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  iVar2 = FUN_009a6950(*puVar1,(float)(double)CONCAT44(param_3,param_1),
                       (float)(double)CONCAT44(param_5,param_2),
                       (float)(double)CONCAT44(param_3,param_1),
                       (float)(double)CONCAT44(param_5,param_2));
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  return;
}



void __thiscall
FUN_009d46c0(int param_1_00,undefined4 param_1,undefined4 param_3,undefined4 param_2,
            undefined4 param_5)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  iVar2 = FUN_009a6950(*puVar1,(float)(double)CONCAT44(param_3,param_1),
                       (float)(double)CONCAT44(param_5,param_2),
                       (float)(double)CONCAT44(param_3,param_1),
                       (float)(double)CONCAT44(param_5,param_2));
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  return;
}



void __fastcall FUN_009d4710(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined4 **)(param_1 + 0xc);
  iVar2 = FUN_009a68f0(*puVar1);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  return;
}



void __thiscall FUN_009d4730(int param_1_00,double *param_1,double *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  float local_8;
  float local_4;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  local_4 = 0.0;
  local_8 = 0.0;
  iVar2 = FUN_009a6920(*puVar1,&local_8);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  *param_1 = (double)local_8;
  *param_2 = (double)local_4;
  return;
}



void __thiscall
FUN_009d4770(int param_1_00,double param_1,double param_2,double param_3,double param_4,
            undefined4 param_5,undefined4 param_7,char param_6)

{
  undefined4 *puVar1;
  float fVar2;
  float fVar3;
  int iVar4;
  
  fVar2 = (float)(double)CONCAT44(param_7,param_5) - (float)param_4;
  fVar3 = 6.283185;
  if (6.283185 < ABS(fVar2) == (ABS(fVar2) == 6.283185)) {
    fVar3 = fVar2;
    if (param_6 == '\0') {
      if (0.0 < fVar2 != NAN(fVar2)) {
        fVar3 = fVar2 - 6.283185;
      }
    }
    else if (0.0 >= fVar2 && fVar2 != 0.0) {
      fVar3 = fVar2 + 6.283185;
    }
  }
  fVar2 = (float)param_3;
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  iVar4 = FUN_009a69b0(*puVar1,(float)param_1 - fVar2,(float)param_2 - fVar2,fVar2 + fVar2,
                       fVar2 + fVar2,((float)param_4 * 180.0) / 3.141593,(fVar3 * 180.0) / 3.141593)
  ;
  if (iVar4 != 0) {
    puVar1[1] = iVar4;
  }
  return;
}



void __thiscall
FUN_009d4840(int param_1_00,double param_1,double param_2,double param_3,double param_4)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  iVar2 = FUN_009a6aa0(*puVar1,(float)param_1,(float)param_2,(float)param_3,(float)param_4);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  return;
}



void __thiscall FUN_009d48a0(int param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 uVar4;
  
  puVar2 = (undefined4 *)(**(code **)(*param_1 + 0x3c))();
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  uVar4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    uVar4 = *puVar2;
  }
  iVar3 = FUN_009a6b60(*puVar1,uVar4,0);
  if (iVar3 != 0) {
    puVar1[1] = iVar3;
  }
  return;
}



void __thiscall FUN_009d48d0(int param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  
  puVar2 = (undefined4 *)(**(code **)(*param_1 + 0x34))();
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  if (puVar2 != (undefined4 *)0x0) {
    iVar3 = FUN_009a6b90(*puVar1,*puVar2);
    if (iVar3 != 0) {
      puVar1[1] = iVar3;
    }
  }
  return;
}



bool __thiscall
FUN_009d4900(int param_1_00,double param_1,undefined4 param_2,undefined4 param_4,int param_3)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  iVar2 = FUN_009a6890(*puVar1,param_3 != 1);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  param_3 = 0;
  iVar2 = FUN_009a6bf0(*puVar1,(float)param_1,(float)(double)CONCAT44(param_4,param_2),0,&param_3);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  return param_3 == 1;
}



void __thiscall FUN_009d4980(int param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  
  puVar2 = (undefined4 *)(**(code **)(*param_1 + 0x34))();
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  iVar3 = FUN_009a6d40(*puVar1,*puVar2,0);
  if (iVar3 != 0) {
    puVar1[1] = iVar3;
  }
  return;
}



void __thiscall
FUN_009d49b0(int param_1_00,double param_1,double param_2,double param_3,double param_4,
            double param_5,undefined4 param_6,undefined4 param_8)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  iVar2 = FUN_009a6cd0(*puVar1,(float)param_1,(float)param_2,(float)param_3,(float)param_4,
                       (float)param_5,(float)(double)CONCAT44(param_8,param_6));
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  return;
}



void __thiscall
FUN_009d4a30(int param_1_00,double *param_1,double *param_2,double *param_3,double *param_4,
            double *param_5,double *param_6)

{
  undefined4 *puVar1;
  int iVar2;
  float local_18;
  float local_14;
  float local_10;
  float local_c;
  float local_8;
  float local_4;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  iVar2 = FUN_009a6ee0(*puVar1,&local_18);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  if (param_1 != (double *)0x0) {
    *param_1 = (double)local_18;
  }
  if (param_2 != (double *)0x0) {
    *param_2 = (double)local_14;
  }
  if (param_3 != (double *)0x0) {
    *param_3 = (double)local_10;
  }
  if (param_4 != (double *)0x0) {
    *param_4 = (double)local_c;
  }
  if (param_5 != (double *)0x0) {
    *param_5 = (double)local_8;
  }
  if (param_6 != (double *)0x0) {
    *param_6 = (double)local_4;
  }
  return;
}



bool __thiscall FUN_009d4ad0(int param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  
  puVar2 = (undefined4 *)(**(code **)(*param_1 + 0x34))();
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  param_1 = (int *)0x0;
  iVar3 = FUN_009a6f40(*puVar1,*puVar2,&param_1);
  if (iVar3 != 0) {
    puVar1[1] = iVar3;
  }
  return param_1 == (int *)0x1;
}



void __thiscall FUN_009d4c00(int param_1_00,double *param_1,double *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  float local_8;
  float local_4;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  local_8 = (float)*param_1;
  local_4 = (float)*param_2;
  iVar2 = FUN_009a6e80(*puVar1,&local_8,1);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  *param_1 = (double)local_8;
  *param_2 = (double)local_4;
  return;
}



void __thiscall FUN_009d4c50(int param_1_00,double *param_1,double *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  float local_8;
  float local_4;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  local_8 = (float)*param_1;
  local_4 = (float)*param_2;
  iVar2 = FUN_009a6eb0(*puVar1,&local_8,1);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  *param_1 = (double)local_8;
  *param_2 = (double)local_4;
  return;
}



void __fastcall FUN_009d4ca0(int *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  
  if (*(char *)(param_1 + 1) != '\0') {
    puVar1 = (undefined4 *)*param_1;
    iVar2 = FUN_009a7920(*puVar1,0xbf000000,0xbf000000,0);
    if (iVar2 != 0) {
      puVar1[1] = iVar2;
    }
  }
  return;
}



void __thiscall FUN_009d4cd0(int param_1_00,undefined4 *param_1,int param_2,int param_3)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = param_1;
  *(double *)(param_1_00 + 8) = (double)param_2;
  *(undefined4 **)(param_1_00 + 0x48) = param_1;
  *(undefined4 *)(param_1_00 + 0x58) = 0;
  *(undefined4 *)(param_1_00 + 0x5c) = 0;
  *(double *)(param_1_00 + 0x10) = (double)param_3;
  *(undefined8 *)(param_1_00 + 0x40) = 0x3ff0000000000000;
  iVar2 = FUN_009a7890(*param_1,0);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  puVar1 = *(undefined4 **)(param_1_00 + 0x48);
  iVar2 = FUN_009a7860(*puVar1,4);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  puVar1 = *(undefined4 **)(param_1_00 + 0x48);
  iVar2 = FUN_009a7830(*puVar1,2);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  puVar1 = *(undefined4 **)(param_1_00 + 0x48);
  iVar2 = FUN_009a7d70(*puVar1,&param_1);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  puVar1 = *(undefined4 **)(param_1_00 + 0x48);
  *(undefined4 **)(param_1_00 + 0x58) = param_1;
  iVar2 = FUN_009a7d70(*puVar1,&param_1);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
    *(undefined4 **)(param_1_00 + 0x5c) = param_1;
    return;
  }
  *(undefined4 **)(param_1_00 + 0x5c) = param_1;
  return;
}



void __thiscall FUN_009d4d90(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  
  uVar2 = FUN_00992eb0();
  param_1 = 0;
  FUN_009a6fd0(uVar2,&param_1);
  uVar2 = param_1;
  puVar1 = *(undefined4 **)(param_1_00 + 0x48);
  iVar3 = FUN_009a7d10(*puVar1,param_1,1);
  if (iVar3 != 0) {
    puVar1[1] = iVar3;
  }
  FUN_009a7000(uVar2);
  return;
}



void __thiscall
FUN_009d4de0(int param_1_00,double param_1,double param_2,double param_3,double param_4)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0x48);
  iVar2 = FUN_009a7cb0(*puVar1,(float)param_1,(float)param_2,(float)param_3,(float)param_4,1);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  return;
}



void __fastcall FUN_009d4e50(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined4 **)(param_1 + 0x48);
  iVar2 = FUN_009a7d40(*puVar1);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  return;
}



void __thiscall
FUN_009d4e70(int *param_1,double param_2,double param_3,double param_4,undefined4 param_5,
            undefined4 param_6)

{
  undefined4 *puVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  char cVar5;
  char cVar6;
  int iVar7;
  int *piVar8;
  int iVar9;
  undefined4 *puVar10;
  undefined4 *puStack_14;
  char cStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1[0xd] != 6) {
    cVar5 = (**(code **)(*param_1 + 0xdc))(DAT_0323f878 ^ (uint)&stack0xffffffd8);
    puVar1 = (undefined4 *)param_1[0x12];
    puStack_14 = puVar1;
    cStack_10 = cVar5;
    if ((cVar5 != '\0') && (iVar7 = FUN_009a7920(*puVar1,0x3f000000,0x3f000000,0), iVar7 != 0)) {
      puVar1[1] = iVar7;
    }
    iVar7 = 0;
    uStack_4 = 0;
    cVar6 = FUN_0099a370();
    if (cVar6 == '\0') {
      iVar7 = (**(code **)(*(int *)param_1[9] + 8))();
    }
    cVar6 = FUN_0099a370();
    if (cVar6 == '\0') {
      piVar8 = (int *)FUN_00b4ffb0();
      puVar10 = (undefined4 *)(**(code **)(*piVar8 + 0xc))();
    }
    else {
      puVar10 = (undefined4 *)0x0;
    }
    if (iVar7 != 0) {
      puStack_14 = (undefined4 *)0x0;
      if ((puVar10 != (undefined4 *)0x0) && (iVar9 = FUN_009a7380(*puVar10,&puStack_14), iVar9 != 0)
         ) {
        puVar10[1] = iVar9;
      }
      fVar2 = (float)puStack_14 * 0.5;
      fVar3 = (float)(double)CONCAT44(param_6,param_5) - (float)puStack_14;
      fVar4 = (float)param_4 - (float)puStack_14;
      puStack_14 = (undefined4 *)(fVar2 + (float)param_2);
      FUN_009d34b0(iVar7,puStack_14,(float)param_3 + fVar2,fVar4,fVar3);
    }
    if (puVar10 != (undefined4 *)0x0) {
      FUN_009d3460(puVar10,(float)param_2,(float)param_3,(float)param_4,
                   (float)(double)CONCAT44(param_6,param_5));
    }
    if ((cVar5 != '\0') && (iVar7 = FUN_009a7920(*puVar1,0xbf000000,0xbf000000,0), iVar7 != 0)) {
      puVar1[1] = iVar7;
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009d5060(int *param_1,uint param_2)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  char cVar3;
  int iVar4;
  void *pvVar5;
  undefined4 uVar6;
  int *piVar7;
  undefined4 *puVar8;
  uint uVar9;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be81e3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1[0xd] != 6) &&
     (cVar3 = FUN_0099a370(DAT_0323f878 ^ (uint)&stack0xffffffd4), cVar3 == '\0')) {
    cVar3 = (**(code **)(*param_1 + 0xdc))();
    puVar1 = (undefined4 *)param_1[0x12];
    if ((cVar3 != '\0') && (iVar4 = FUN_009a7920(*puVar1,0x3f000000,0x3f000000,0), iVar4 != 0)) {
      puVar1[1] = iVar4;
    }
    uStack_4 = 0;
    pvVar5 = (void *)FUN_00823c23(-(uint)((int)((ulonglong)param_2 * 8 >> 0x20) != 0) |
                                  (uint)((ulonglong)param_2 * 8));
    uStack_4._0_1_ = 1;
    if (pvVar5 == (void *)0x0) {
      pvVar5 = (void *)0x0;
    }
    else {
      _vector_constructor_iterator_(pvVar5,8,param_2,(_func_void_ptr_void_ptr *)&LAB_009d2b70);
    }
    uVar9 = 0;
    uStack_4 = (uint)uStack_4._1_3_ << 8;
    if (param_2 != 0) {
      do {
        uVar6 = FUN_00a49750();
        *(undefined4 *)((int)pvVar5 + uVar9 * 8) = uVar6;
        uVar6 = FUN_00a49750();
        *(undefined4 *)((int)pvVar5 + uVar9 * 8 + 4) = uVar6;
        uVar9 = uVar9 + 1;
      } while (uVar9 < param_2);
    }
    piVar7 = (int *)FUN_00b4ffb0();
    puVar8 = (undefined4 *)(**(code **)(*piVar7 + 0xc))();
    puVar2 = (undefined4 *)param_1[0x12];
    iVar4 = FUN_009a7aa0(*puVar2,*puVar8,pvVar5,param_2);
    if (iVar4 != 0) {
      puVar2[1] = iVar4;
    }
    FUN_00a3f66c(pvVar5);
    if ((cVar3 != '\0') && (iVar4 = FUN_009a7920(*puVar1,0xbf000000,0xbf000000,0), iVar4 != 0)) {
      puVar1[1] = iVar4;
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009d51e0(int *param_1,int *param_2)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  char cVar3;
  int iVar4;
  int *piVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1[0xd] != 6) {
    cVar3 = FUN_0099a370(DAT_0323f878 ^ (uint)&stack0xffffffd8);
    if (cVar3 == '\0') {
      cVar3 = (**(code **)(*param_1 + 0xdc))();
      puVar1 = (undefined4 *)param_1[0x12];
      if (cVar3 != '\0') {
        iVar4 = FUN_009a7920(*puVar1,0x3f000000,0x3f000000,0);
        if (iVar4 != 0) {
          puVar1[1] = iVar4;
        }
      }
      uStack_4 = 0;
      piVar5 = (int *)FUN_00b4ffb0();
      puVar6 = (undefined4 *)(**(code **)(*param_2 + 0x44))();
      puVar7 = (undefined4 *)(**(code **)(*piVar5 + 0xc))();
      puVar2 = (undefined4 *)param_1[0x12];
      if (puVar6 == (undefined4 *)0x0) {
        uVar9 = 0;
      }
      else {
        uVar9 = *puVar6;
      }
      if (puVar7 == (undefined4 *)0x0) {
        uVar8 = 0;
      }
      else {
        uVar8 = *puVar7;
      }
      iVar4 = FUN_009a7b30(*puVar2,uVar8,uVar9);
      if (iVar4 != 0) {
        puVar2[1] = iVar4;
      }
      if (cVar3 != '\0') {
        iVar4 = FUN_009a7920(*puVar1,0xbf000000,0xbf000000,0);
        if (iVar4 != 0) {
          puVar1[1] = iVar4;
        }
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009d5300(int *param_1,int *param_2,int param_3)

{
  undefined4 *puVar1;
  int *piVar2;
  char cVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1[0xd] != 6) {
    cVar3 = FUN_0099a370(DAT_0323f878 ^ (uint)&stack0xffffffd8);
    if (cVar3 == '\0') {
      cVar3 = (**(code **)(*param_1 + 0xdc))();
      puVar1 = (undefined4 *)param_1[0x12];
      if (cVar3 != '\0') {
        iVar4 = FUN_009a7920(*puVar1,0x3f000000,0x3f000000,0);
        if (iVar4 != 0) {
          puVar1[1] = iVar4;
        }
      }
      uStack_4 = 0;
      puVar5 = (undefined4 *)(**(code **)(*param_2 + 0x44))();
      iVar4 = FUN_009a6890(*puVar5,param_3 != 1);
      if (iVar4 != 0) {
        puVar5[1] = iVar4;
      }
      piVar2 = (int *)param_1[9];
      puVar6 = (undefined4 *)(**(code **)(*param_2 + 0x44))();
      iVar4 = (**(code **)(*piVar2 + 8))();
      puVar5 = (undefined4 *)param_1[0x12];
      iVar4 = FUN_009a7bf0(*puVar5,*(undefined4 *)(iVar4 + 4),*puVar6);
      if (iVar4 != 0) {
        puVar5[1] = iVar4;
      }
      if (cVar3 != '\0') {
        iVar4 = FUN_009a7920(*puVar1,0xbf000000,0xbf000000,0);
        if (iVar4 != 0) {
          puVar1[1] = iVar4;
        }
      }
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009d5430(int param_1_00,int param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  
  if (*(int *)(param_1_00 + 0x30) != param_1) {
    *(int *)(param_1_00 + 0x30) = param_1;
    if (param_1 == 0) {
      uVar2 = 3;
    }
    else {
      if (param_1 != 1) {
        return 0;
      }
      uVar2 = 2;
    }
    puVar1 = *(undefined4 **)(param_1_00 + 0x48);
    iVar3 = FUN_009a7830(*puVar1,uVar2);
    if (iVar3 != 0) {
      puVar1[1] = iVar3;
    }
  }
  return 1;
}



undefined4 __thiscall FUN_009d5480(int param_1_00,int param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  
  if ((*(int *)(param_1_00 + 0x34) != param_1) &&
     (*(int *)(param_1_00 + 0x34) = param_1, param_1 != 6)) {
    if (param_1 == 1) {
      uVar2 = 1;
    }
    else {
      if (param_1 != 2) {
        return 0;
      }
      uVar2 = 0;
    }
    puVar1 = *(undefined4 **)(param_1_00 + 0x48);
    iVar3 = FUN_009a7800(*puVar1,uVar2);
    if (iVar3 != 0) {
      puVar1[1] = iVar3;
    }
  }
  return 1;
}



void __thiscall FUN_009d54d0(int param_1_00,undefined4 param_1,undefined4 param_3)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0x48);
  iVar2 = FUN_009a79c0(*puVar1,((float)(double)CONCAT44(param_3,param_1) * 180.0) / 3.141593,0);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  return;
}



void __thiscall FUN_009d5510(int param_1_00,double param_1,undefined4 param_2,undefined4 param_4)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0x48);
  iVar2 = FUN_009a7920(*puVar1,(float)param_1,(float)(double)CONCAT44(param_4,param_2),0);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  return;
}



void __thiscall FUN_009d5550(int param_1_00,double param_1,undefined4 param_2,undefined4 param_4)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0x48);
  iVar2 = FUN_009a7970(*puVar1,(float)param_1,(float)(double)CONCAT44(param_4,param_2),0);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  return;
}



void __thiscall
FUN_009d5590(int param_1_00,float param_1,double param_3,double param_4,undefined4 param_5,
            undefined4 param_6,double param_7)

{
  undefined4 *puVar1;
  float fVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined2 in_FPUControlWord;
  float10 extraout_ST0;
  int iStack_14;
  undefined8 uStack_10;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  if ((*(int *)(param_1_00 + 0x34) != 6) &&
     (iVar3 = (**(code **)(**(int **)((int)param_1 + 4) + 8))(), iVar3 != 0)) {
    iStack_14 = 0;
    iVar4 = FUN_009a7530(*(undefined4 *)(iVar3 + 4),&iStack_14);
    if (iVar4 != 0) {
      *(int *)(iVar3 + 8) = iVar4;
    }
    param_1 = (float)CONCAT22(param_1._2_2_,in_FPUControlWord);
    uStack_10 = (longlong)ROUND((double)CONCAT44(param_6,param_5));
    if (iStack_14 == (int)uStack_10) {
      iVar4 = FUN_009d2f50();
      fVar2 = (float)param_7;
      param_7 = (double)(longlong)ROUND(fVar2);
      if (iVar4 == param_7._0_4_) {
        param_1 = (float)param_3;
        FUN_009d36b0(iVar3,param_1,(float)param_4,(float)(double)CONCAT44(param_6,param_5),fVar2);
        return;
      }
    }
    param_1 = (float)param_3;
    uVar5 = FUN_00a49750();
    param_1 = (float)param_4;
    uStack_10 = CONCAT44(uStack_10._4_4_,uVar5);
    uVar5 = FUN_00a49750();
    param_1 = (float)(double)CONCAT44(param_6,param_5);
    uStack_10._4_4_ = uVar5;
    uStack_8 = FUN_00a49750();
    param_1 = (float)extraout_ST0;
    uStack_4 = FUN_00a49750();
    puVar1 = *(undefined4 **)(param_1_00 + 0x48);
    iVar4 = FUN_009a7860(*puVar1,3);
    if (iVar4 != 0) {
      puVar1[1] = iVar4;
    }
    param_1 = 0.0;
    iVar4 = FUN_009a7560(*(undefined4 *)(iVar3 + 4),&param_1);
    uVar5 = param_1;
    if (iVar4 != 0) {
      *(int *)(iVar3 + 8) = iVar4;
    }
    param_5 = 0;
    iVar4 = FUN_009a7530(*(undefined4 *)(iVar3 + 4),&param_5);
    if (iVar4 != 0) {
      *(int *)(iVar3 + 8) = iVar4;
    }
    puVar1 = *(undefined4 **)(param_1_00 + 0x48);
    iVar3 = FUN_009a7c80(*puVar1,*(undefined4 *)(iVar3 + 4),(int)uStack_10,uStack_10._4_4_,uStack_8,
                         uStack_4,0,0,param_5,uVar5,2,0,0,0);
    if (iVar3 != 0) {
      puVar1[1] = iVar3;
    }
    puVar1 = *(undefined4 **)(param_1_00 + 0x48);
    iVar3 = FUN_009a7860(*puVar1,4);
    if (iVar3 != 0) {
      puVar1[1] = iVar3;
    }
  }
  return;
}



void __thiscall
FUN_009d5790(int param_1_00,int param_1,double param_3,double param_4,double param_5,float param_6,
            undefined4 param_7)

{
  undefined4 *puVar1;
  double dVar2;
  bool bVar3;
  HICON pHVar4;
  uint uVar5;
  uint uVar6;
  BOOL BVar7;
  int iVar8;
  undefined4 *puVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  uint uVar12;
  uint uStack_68;
  HICON local_64;
  uint uStack_60;
  int local_5c;
  undefined **ppuStack_58;
  undefined4 uStack_54;
  int iStack_50;
  undefined4 uStack_48;
  undefined4 uStack_44;
  uint uStack_40;
  uint uStack_3c;
  ICONINFO local_38;
  undefined4 uStack_24;
  undefined4 uStack_20;
  int iStack_1c;
  int iStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8238;
  local_c = ExceptionList;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  if (*(int *)(param_1_00 + 0x34) == 6) {
    return;
  }
  if (*(int *)(param_1 + 4) == 0) {
    local_64 = (HICON)0x0;
  }
  else {
    local_64 = *(HICON *)(*(int *)(param_1 + 4) + 0x14);
  }
  pHVar4 = local_64;
  ExceptionList = &local_c;
  local_5c = param_1_00;
  BVar7 = GetIconInfo(local_64,&local_38);
  if (BVar7 == 0) {
    ExceptionList = local_c;
    return;
  }
  ppuStack_58 = Gdiplus::Bitmap::vftable;
  param_1 = 0;
  iStack_50 = FUN_009a75f0(local_38.hbmColor,0,&param_1);
  uVar11 = param_1;
  uStack_54 = param_1;
  uStack_4 = 0;
  iVar8 = FUN_009a7590(param_1,&uStack_60);
  if (iVar8 != 0) {
    iStack_50 = iVar8;
  }
  if ((uStack_60 & 0xff00) != 0x2000) {
    puVar9 = (undefined4 *)FUN_009d3070(pHVar4,uVar6);
    goto LAB_009d59af;
  }
  uStack_60 = 0;
  iVar8 = FUN_009a7530(uVar11,&uStack_60);
  if (iVar8 != 0) {
    iStack_50 = iVar8;
  }
  uStack_68 = 0;
  iVar8 = FUN_009a7560(uVar11,&uStack_68);
  uVar5 = uStack_60;
  uVar6 = uStack_68;
  if (iVar8 != 0) {
    iStack_50 = iVar8;
  }
  uStack_48 = 0;
  uStack_44 = 0;
  uStack_40 = uStack_60;
  uStack_3c = uStack_68;
  iVar8 = FUN_009a7590(uVar11,&uStack_60);
  if (iVar8 != 0) {
    iStack_50 = iVar8;
  }
  iVar8 = FUN_009a76e0(uVar11,&uStack_48,1,uStack_60,&uStack_24);
  if (iVar8 != 0) {
    iStack_50 = iVar8;
  }
  bVar3 = false;
  uVar12 = 0;
  if (uVar6 == 0) {
LAB_009d5962:
    puVar9 = (undefined4 *)FUN_009a6770(0x10);
    if (puVar9 == (undefined4 *)0x0) {
      puVar9 = (undefined4 *)0x0;
    }
    else {
      *puVar9 = Gdiplus::Bitmap::vftable;
      uStack_60 = 0;
      uVar10 = FUN_009a7650(local_64,&uStack_60);
      puVar9[2] = uVar10;
      puVar9[1] = uStack_60;
    }
  }
  else {
    iVar8 = 0;
    do {
      if (bVar3) goto LAB_009d592d;
      uVar6 = 0;
      if (uVar5 != 0) {
        do {
          if (bVar3) break;
          if ((*(uint *)(iStack_14 + iVar8 + uVar6 * 4) & 0xff000000) != 0) {
            bVar3 = true;
          }
          uVar6 = uVar6 + 1;
          uVar11 = param_1;
        } while (uVar6 < uVar5);
      }
      iVar8 = iVar8 + iStack_1c;
      uVar12 = uVar12 + 1;
    } while (uVar12 < uStack_68);
    if (!bVar3) goto LAB_009d5962;
LAB_009d592d:
    iVar8 = FUN_009a6770(0x10);
    if (iVar8 == 0) {
      puVar9 = (undefined4 *)0x0;
    }
    else {
      puVar9 = (undefined4 *)FUN_009d2f90(uStack_24,uStack_20,iStack_1c,0x26200a,iStack_14);
    }
  }
  iVar8 = FUN_009a7710(uVar11,&uStack_24);
  if (iVar8 != 0) {
    iStack_50 = iVar8;
  }
LAB_009d59af:
  puVar1 = *(undefined4 **)(local_5c + 0x48);
  if (puVar9 == (undefined4 *)0x0) {
    uVar10 = 0;
  }
  else {
    uVar10 = puVar9[1];
  }
  dVar2 = (double)CONCAT44(param_7,param_6);
  param_6 = (float)param_3;
  iVar8 = FUN_009a7c20(*puVar1,uVar10,param_6,(float)param_4,(float)param_5,(float)dVar2);
  if (iVar8 != 0) {
    puVar1[1] = iVar8;
  }
  if (puVar9 != (undefined4 *)0x0) {
    (**(code **)*puVar9)(1);
  }
  DeleteObject(local_38.hbmColor);
  DeleteObject(local_38.hbmMask);
  FUN_009a74d0(uVar11);
  ExceptionList = local_c;
  return;
}



uint __fastcall FUN_009d5a80(int param_1)

{
  char cVar1;
  uint in_EAX;
  uint uVar2;
  
  if (*(char *)(param_1 + 0x3c) == '\0') {
    return in_EAX & 0xffffff00;
  }
  uVar2 = 0;
  cVar1 = FUN_0099a370();
  if (cVar1 == '\0') {
    (**(code **)(**(int **)(param_1 + 0x1c) + 8))();
    uVar2 = FUN_00a49750();
    if (uVar2 == 0) {
      uVar2 = 1;
    }
  }
  uVar2 = uVar2 & 0x80000001;
  if ((int)uVar2 < 0) {
    uVar2 = (uVar2 - 1 | 0xfffffffe) + 1;
  }
  return (uint)(uVar2 == 1);
}



void __thiscall FUN_009d5ad0(int param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  
  puVar2 = (undefined4 *)(**(code **)(*param_1 + 0x3c))();
  puVar1 = *(undefined4 **)(param_1_00 + 0x48);
  iVar3 = FUN_009a78f0(*puVar1,*puVar2,0);
  if (iVar3 != 0) {
    puVar1[1] = iVar3;
  }
  return;
}



void __thiscall FUN_009d5b00(int param_1_00,int *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  
  puVar2 = (undefined4 *)(**(code **)(*param_1 + 0x3c))();
  puVar1 = *(undefined4 **)(param_1_00 + 0x48);
  iVar3 = FUN_009a78c0(*puVar1,*puVar2);
  if (iVar3 != 0) {
    puVar1[1] = iVar3;
  }
  return;
}



void FUN_009d5b60(void)

{
  if (DAT_0323d4d0 != 0) {
    FUN_0099a8d0(DAT_0323d4d0);
    DAT_0323d4d0 = 0;
  }
  DAT_0323d4cc = 0xffffffff;
  return;
}



uint __thiscall FUN_009d5b90(int *param_1_00,uint param_1,uint param_2)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  if (param_1 == param_2) {
    return param_1;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
     ((uVar1 = param_1_00[2] + *param_1_00 * 4, uVar1 <= param_1 || (uVar1 < param_2)))) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x17f,"wxVector<unsigned int>::erase",
                 "first < end() && last <= end()",0);
  }
  iVar2 = param_1_00[2];
  iVar3 = (int)((*param_1_00 * 4 - param_2) + iVar2) >> 2;
  iVar4 = (int)(param_1 - iVar2) >> 2;
  iVar5 = (int)(param_2 - param_1) >> 2;
  if (iVar3 != 0) {
    _memmove((void *)(iVar2 + iVar4 * 4),(void *)(iVar2 + (iVar5 + iVar4) * 4),iVar3 * 4);
  }
  *param_1_00 = *param_1_00 - iVar5;
  return param_1_00[2] + iVar4 * 4;
}



void __thiscall FUN_009d5c30(uint *param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  
  if (param_1_00[1] < param_1) {
    uVar2 = *param_1_00;
    if (uVar2 == 0) {
      uVar1 = 0x10;
    }
    else {
      uVar1 = uVar2;
      if (0xfff < uVar2) {
        uVar1 = 0x1000;
      }
    }
    uVar1 = uVar1 + param_1_00[1];
    if (param_1 < uVar1) {
      param_1 = uVar1;
    }
    uVar2 = FUN_009d3240(param_1_00[2],param_1 * 4,uVar2);
    param_1_00[2] = uVar2;
    param_1_00[1] = param_1;
  }
  return;
}



void __thiscall FUN_009d5c90(int *param_1_00,undefined4 *param_1)

{
  undefined uVar1;
  undefined uVar2;
  int iVar3;
  int iVar4;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 == 0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x139,
                 "wxVector<class wxGraphicsGradientStop>::at","idx < m_size",0);
  }
  iVar3 = param_1_00[2];
  iVar4 = *(int *)(iVar3 + 4);
  *param_1 = wxObject::vftable;
  param_1[1] = iVar4;
  if (iVar4 != 0) {
    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
  }
  param_1[2] = *(undefined4 *)(iVar3 + 8);
  *(undefined *)(param_1 + 3) = *(undefined *)(iVar3 + 0xc);
  *(undefined *)((int)param_1 + 0xd) = *(undefined *)(iVar3 + 0xd);
  *(undefined *)((int)param_1 + 0xe) = *(undefined *)(iVar3 + 0xe);
  uVar2 = *(undefined *)(iVar3 + 0xf);
  uVar1 = *(undefined *)(iVar3 + 0x10);
  *param_1 = wxColour::vftable;
  *(undefined *)((int)param_1 + 0xf) = uVar2;
  *(undefined *)(param_1 + 4) = uVar1;
  return;
}



void __thiscall FUN_009d5d20(uint *param_1_00,undefined4 *param_1)

{
  uint uVar1;
  int iVar2;
  undefined uVar3;
  undefined uVar4;
  int iVar5;
  
  uVar1 = *param_1_00 - 1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 <= uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x139,
                 "wxVector<class wxGraphicsGradientStop>::at","idx < m_size",0);
  }
  iVar5 = *(int *)(param_1_00[2] + 4 + uVar1 * 0x18);
  iVar2 = param_1_00[2] + uVar1 * 0x18;
  *param_1 = wxObject::vftable;
  param_1[1] = iVar5;
  if (iVar5 != 0) {
    *(int *)(iVar5 + 4) = *(int *)(iVar5 + 4) + 1;
  }
  param_1[2] = *(undefined4 *)(iVar2 + 8);
  *(undefined *)(param_1 + 3) = *(undefined *)(iVar2 + 0xc);
  *(undefined *)((int)param_1 + 0xd) = *(undefined *)(iVar2 + 0xd);
  *(undefined *)((int)param_1 + 0xe) = *(undefined *)(iVar2 + 0xe);
  uVar4 = *(undefined *)(iVar2 + 0xf);
  uVar3 = *(undefined *)(iVar2 + 0x10);
  *param_1 = wxColour::vftable;
  *(undefined *)((int)param_1 + 0xf) = uVar4;
  *(undefined *)(param_1 + 4) = uVar3;
  return;
}



undefined4 * __fastcall FUN_009d5dc0(undefined4 *param_1)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 local_4;
  
  local_4 = 0;
  iVar1 = FUN_009a6c70(*param_1,&local_4);
  if (iVar1 != 0) {
    param_1[1] = iVar1;
  }
  if (param_1[1] == 0) {
    puVar2 = (undefined4 *)FUN_009a6770(8);
    if (puVar2 != (undefined4 *)0x0) {
      puVar2[1] = 0;
      *puVar2 = local_4;
      return puVar2;
    }
  }
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_009d5e10(int param_1)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 local_4;
  
  local_4 = 0;
  iVar1 = FUN_009a7090(*(undefined4 *)(param_1 + 4),&local_4);
  if (iVar1 != 0) {
    *(int *)(param_1 + 8) = iVar1;
  }
  puVar2 = (undefined4 *)FUN_009a6770(0xc);
  if (puVar2 != (undefined4 *)0x0) {
    puVar2[2] = *(undefined4 *)(param_1 + 8);
    *puVar2 = Gdiplus::Brush::vftable;
    puVar2[1] = local_4;
    return puVar2;
  }
  FUN_009a70c0(local_4);
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_009d5e70(int param_1)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 local_4;
  
  local_4 = 0;
  iVar1 = FUN_009a74a0(*(undefined4 *)(param_1 + 4),&local_4);
  if (iVar1 != 0) {
    *(int *)(param_1 + 8) = iVar1;
  }
  puVar2 = (undefined4 *)FUN_009a6770(0x10);
  if (puVar2 != (undefined4 *)0x0) {
    puVar2[2] = *(undefined4 *)(param_1 + 8);
    *puVar2 = Gdiplus::Image::vftable;
    puVar2[1] = local_4;
    return puVar2;
  }
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_009d5ec0(undefined4 param_1_00,byte param_1)

{
  FUN_009d4020();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall
FUN_009d5ee0(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be826b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  iVar2 = FUN_009a6770(8);
  if (iVar2 == 0) {
    uVar3 = 0;
  }
  else {
    if (*(uint *)((int)param_1 + 0x18) < 8) {
      iVar2 = (int)param_1 + 4;
    }
    else {
      iVar2 = *(int *)((int)param_1 + 4);
    }
    uVar3 = FUN_009d2e00(iVar2,param_2,param_3,param_5,0);
  }
  *(undefined4 *)(param_1_00 + 0x10) = uVar3;
  puVar4 = (undefined4 *)FUN_009a6770(0xc);
  local_4 = 0;
  if (puVar4 != (undefined4 *)0x0) {
    param_1 = puVar4;
    puVar5 = (undefined4 *)FUN_009d37f0(&param_5,param_4,uVar1);
    puVar4[2] = 6;
    *puVar4 = Gdiplus::SolidBrush::vftable;
    param_1 = (undefined4 *)0x0;
    uVar3 = FUN_009a7150(*puVar5,&param_1);
    puVar4[2] = uVar3;
    puVar4[1] = param_1;
    *(undefined4 **)(param_1_00 + 0xc) = puVar4;
    ExceptionList = local_c;
    return;
  }
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009d5fd0(undefined4 param_1_00,byte param_1)

{
  FUN_009d40b0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_009d5ff0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd0918;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009a8540(param_1);
  local_4 = 0;
  *param_1_00 = wxGDIPlusFontData::vftable;
  FUN_009d5ee0(param_2,param_3,param_4,param_5,2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_009d6070(undefined4 param_1_00,byte param_1)

{
  FUN_009d4590();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009d6090(int param_1_00,undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined **local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be82b1;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  local_18 = 0;
  iVar2 = *(int *)(param_1_00 + 0xc);
  iVar5 = FUN_009a7620(*(undefined4 *)(iVar2 + 4),&local_1c,0xffffffff);
  if (iVar5 != 0) {
    *(int *)(iVar2 + 8) = iVar5;
    *param_1 = wxObject::vftable;
    iVar2 = DAT_032390e8;
    param_1[1] = DAT_032390e8;
    if (iVar2 != 0) {
      piVar1 = (int *)(iVar2 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxImage::vftable;
    ExceptionList = local_c;
    return param_1;
  }
  local_10 = 0;
  local_14 = wxBitmap::vftable;
  iVar2 = *(int *)(param_1_00 + 0xc);
  local_4 = 1;
  local_20 = 0;
  iVar5 = FUN_009a7530(*(undefined4 *)(iVar2 + 4),&local_20);
  uVar3 = local_20;
  if (iVar5 != 0) {
    *(int *)(iVar2 + 8) = iVar5;
  }
  FUN_0083eaa0(uVar4);
  *(uint *)(local_10 + 8) = uVar3;
  iVar2 = *(int *)(param_1_00 + 0xc);
  local_20 = 0;
  iVar5 = FUN_009a7560(*(undefined4 *)(iVar2 + 4),&local_20);
  uVar3 = local_20;
  if (iVar5 != 0) {
    *(int *)(iVar2 + 8) = iVar5;
  }
  FUN_0083eaa0(uVar4);
  *(uint *)(local_10 + 0xc) = uVar3;
  FUN_0083eaa0();
  *(undefined4 *)(local_10 + 0x14) = local_1c;
  iVar2 = *(int *)(param_1_00 + 0xc);
  iVar5 = FUN_009a7590(*(undefined4 *)(iVar2 + 4),&local_20);
  if (iVar5 != 0) {
    *(int *)(iVar2 + 8) = iVar5;
  }
  uVar4 = local_20 & 0x40000;
  FUN_0083eaa0();
  *(uint *)(local_10 + 0x10) = (-(uint)(uVar4 != 0) & 8) + 0x18;
  FUN_008f3b70(param_1);
  local_18 = 1;
  local_4 = local_4 & 0xffffff00;
  FUN_008f7630();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_009d6210(undefined4 *param_1_00,byte param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)param_1_00[3];
  *param_1_00 = wxGDIPlusPathData::vftable;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_009a6860(*puVar1);
    FUN_009a67a0(puVar1);
  }
  *param_1_00 = wxRefCounter::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_009d6250(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined4 local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be82db;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  local_10 = operator_new(0x10);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    puVar3 = *(undefined4 **)(param_1 + 0xc);
    local_14 = 0;
    iVar2 = FUN_009a6830(*puVar3,&local_14);
    if (iVar2 != 0) {
      puVar3[1] = iVar2;
    }
    puVar3 = (undefined4 *)FUN_009a6770(8);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      puVar3[1] = 0;
      *puVar3 = local_14;
    }
    uVar4 = FUN_00874c80(puVar3,uVar1);
    uVar4 = FUN_009d4600(uVar4,puVar3);
    ExceptionList = local_c;
    return uVar4;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall
FUN_009d6310(int param_1_00,undefined4 param_1,undefined4 param_3_00,float param_2,float param_5_00,
            float param_3,float param_7,double param_4,double param_5,double param_6)

{
  undefined4 *puVar1;
  double dVar2;
  double dVar3;
  int iVar4;
  
  dVar2 = (double)CONCAT44(param_3_00,param_1);
  dVar3 = (double)CONCAT44(param_5_00,param_2);
  puVar1 = *(undefined4 **)(param_1_00 + 0xc);
  param_3 = (float)(double)CONCAT44(param_7,param_3);
  param_7 = (float)param_4;
  param_2 = (float)param_5;
  param_5_00 = (float)param_6;
  param_3_00 = 0;
  param_1 = 0;
  iVar4 = FUN_009a6920(*puVar1,&param_1);
  if (iVar4 != 0) {
    puVar1[1] = iVar4;
  }
  FUN_009d3400(param_1,param_3_00,(float)dVar2,(float)dVar3,param_3,param_7,param_2,param_5_00);
  return;
}



undefined4 * __thiscall FUN_009d63c0(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  
  FUN_009a8540(param_1);
  *param_1_00 = wxGDIPlusMatrixData::vftable;
  if (param_2 != 0) {
    param_1_00[3] = param_2;
    return param_1_00;
  }
  puVar1 = (undefined4 *)FUN_009a6770(8);
  if (puVar1 != (undefined4 *)0x0) {
    param_1 = 0;
    uVar2 = FUN_009a6c40(&param_1);
    puVar1[1] = uVar2;
    *puVar1 = param_1;
    param_1_00[3] = puVar1;
    return param_1_00;
  }
  param_1_00[3] = 0;
  return param_1_00;
}



void FUN_009d6430(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x10);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    uVar3 = FUN_009d5dc0(uVar1);
    uVar4 = FUN_00874c80(uVar3);
    FUN_009d63c0(uVar4,uVar3);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009d64a0(int *param_1_00,uint param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  char cVar3;
  char cVar4;
  int iVar5;
  void *pvVar6;
  undefined4 uVar7;
  int *piVar8;
  undefined4 *puVar9;
  uint uVar10;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00be8313;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if (param_1_00[0xd] != 6) {
    cVar3 = (**(code **)(*param_1_00 + 0xdc))(DAT_0323f878 ^ (uint)&stack0xffffffc8);
    puVar1 = (undefined4 *)param_1_00[0x12];
    if ((cVar3 != '\0') && (iVar5 = FUN_009a7920(*puVar1,0x3f000000,0x3f000000,0), iVar5 != 0)) {
      puVar1[1] = iVar5;
    }
    uStack_c = 0;
    pvVar6 = (void *)FUN_00823c23(-(uint)((int)((ulonglong)param_1 * 8 >> 0x20) != 0) |
                                  (uint)((ulonglong)param_1 * 8));
    uStack_c._0_1_ = 1;
    if (pvVar6 == (void *)0x0) {
      pvVar6 = (void *)0x0;
    }
    else {
      _vector_constructor_iterator_(pvVar6,8,param_1,(_func_void_ptr_void_ptr *)&LAB_009d2b70);
    }
    uVar10 = 0;
    uStack_c = (uint)uStack_c._1_3_ << 8;
    if (param_1 != 0) {
      do {
        uVar7 = FUN_00a49750();
        *(undefined4 *)((int)pvVar6 + uVar10 * 8) = uVar7;
        uVar7 = FUN_00a49750();
        *(undefined4 *)((int)pvVar6 + uVar10 * 8 + 4) = uVar7;
        uVar10 = uVar10 + 1;
      } while (uVar10 < param_1);
    }
    cVar4 = FUN_0099a370();
    if (cVar4 == '\0') {
      iVar5 = (**(code **)(*(int *)param_1_00[9] + 8))();
      puVar2 = (undefined4 *)param_1_00[0x12];
      iVar5 = FUN_009a7bc0(*puVar2,*(undefined4 *)(iVar5 + 4),pvVar6,param_1,0);
      if (iVar5 != 0) {
        puVar2[1] = iVar5;
      }
    }
    cVar4 = FUN_0099a370();
    if (cVar4 == '\0') {
      piVar8 = (int *)FUN_00b4ffb0();
      puVar9 = (undefined4 *)(**(code **)(*piVar8 + 0xc))();
      puVar2 = (undefined4 *)param_1_00[0x12];
      iVar5 = FUN_009a7aa0(*puVar2,*puVar9,pvVar6,param_1);
      if (iVar5 != 0) {
        puVar2[1] = iVar5;
      }
    }
    FUN_00a3f66c(pvVar6);
    if ((cVar3 != '\0') && (iVar5 = FUN_009a7920(*puVar1,0xbf000000,0xbf000000,0), iVar5 != 0)) {
      puVar1[1] = iVar5;
    }
  }
  ExceptionList = local_14;
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void __thiscall
FUN_009d6650(int param_1_00,int param_1,float param_2,float param_3,double param_4,int param_6)

{
  int *piVar1;
  char cVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  
  if (*(int *)(param_1_00 + 0x34) != 6) {
    cVar2 = FUN_0099a370();
    if (cVar2 == '\0') {
      if (*(int *)(param_1 + 0x14) != 0) {
        piVar1 = *(int **)(param_1_00 + 0x2c);
        if (*(int **)(param_6 + 4) == (int *)0x0) {
          iVar5 = *piVar1;
        }
        else {
          iVar5 = **(int **)(param_6 + 4);
        }
        uVar3 = (**(code **)(iVar5 + 8))();
        _DAT_032ea13c = FUN_009a8090(&DAT_032ea138);
        param_2 = (float)(double)CONCAT44(param_3,param_2);
        param_3 = (float)param_4;
        if (*(uint *)(param_1 + 0x18) < 8) {
          param_1 = param_1 + 4;
        }
        else {
          param_1 = *(int *)(param_1 + 4);
        }
        puVar7 = &DAT_032ea138;
        puVar6 = &param_2;
        uVar4 = (**(code **)(*piVar1 + 0xc))(puVar6,&DAT_032ea138,uVar3);
        FUN_009d3500(param_1,0xffffffff,uVar4,puVar6,puVar7,uVar3);
      }
    }
    else if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\graphics.cpp",0x6ad,"wxGDIPlusContext::DoDrawFilledText",
                   "!m_font.IsNull()",L"wxGDIPlusContext::DrawText - no valid font set");
      return;
    }
  }
  return;
}



undefined4 * FUN_009d6720(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxGDIPlusRendererModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



uint * __thiscall FUN_009d6780(uint *param_1_00,int param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  
  *param_1_00 = 0;
  param_1_00[1] = 0;
  param_1_00[2] = 0;
  FUN_009d5c30(param_1);
  if (param_1 != 0) {
    do {
      uVar2 = *param_1_00;
      uVar4 = uVar2 + 1;
      if (param_1_00[1] < uVar4) {
        if (uVar2 == 0) {
          uVar3 = 0x10;
        }
        else {
          uVar3 = uVar2;
          if (0xfff < uVar2) {
            uVar3 = 0x1000;
          }
        }
        uVar3 = uVar3 + param_1_00[1];
        if (uVar4 < uVar3) {
          uVar4 = uVar3;
        }
        uVar2 = FUN_009d3240(param_1_00[2],uVar4 * 4,uVar2);
        param_1_00[2] = uVar2;
        param_1_00[1] = uVar4;
      }
      puVar1 = (undefined4 *)(param_1_00[2] + *param_1_00 * 4);
      if (puVar1 != (undefined4 *)0x0) {
        *puVar1 = 0xff000000;
      }
      *param_1_00 = *param_1_00 + 1;
      param_1 = param_1 + -1;
    } while (param_1 != 0);
  }
  return param_1_00;
}



void __fastcall FUN_009d6820(int param_1)

{
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(param_1 + 8));
}



uint * __thiscall FUN_009d6840(uint *param_1_00,uint param_1)

{
  undefined4 *puVar1;
  void *pvVar2;
  uint uVar3;
  uint uVar4;
  
  *param_1_00 = 0;
  param_1_00[1] = 0;
  param_1_00[2] = 0;
  if (param_1 != 0) {
    uVar4 = param_1;
    if (param_1 < 0x10) {
      uVar4 = 0x10;
    }
    pvVar2 = _realloc((void *)0x0,uVar4 << 4);
    param_1_00[2] = (uint)pvVar2;
    param_1_00[1] = uVar4;
    if (param_1 != 0) {
      do {
        uVar3 = *param_1_00;
        uVar4 = uVar3 + 1;
        if (param_1_00[1] < uVar4) {
          if (uVar3 == 0) {
            uVar3 = 0x10;
          }
          else if (0xfff < uVar3) {
            uVar3 = 0x1000;
          }
          uVar3 = uVar3 + param_1_00[1];
          if (uVar4 < uVar3) {
            uVar4 = uVar3;
          }
          pvVar2 = _realloc((void *)param_1_00[2],uVar4 << 4);
          param_1_00[2] = (uint)pvVar2;
          param_1_00[1] = uVar4;
        }
        puVar1 = (undefined4 *)(param_1_00[2] + *param_1_00 * 4);
        if (puVar1 != (undefined4 *)0x0) {
          *puVar1 = 0;
        }
        *param_1_00 = *param_1_00 + 1;
        param_1 = param_1 - 1;
      } while (param_1 != 0);
    }
  }
  return param_1_00;
}



undefined4 __thiscall FUN_009d6900(uint *param_1_00,undefined4 param_1,uint param_2)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 <= param_2)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x139,
                 "wxVector<class wxGraphicsGradientStop>::at","idx < m_size",0);
  }
  FUN_009a8d80(param_1_00[2] + param_2 * 0x18);
  return param_1;
}



undefined4 * __thiscall FUN_009d6960(undefined4 *param_1_00,byte param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)param_1_00[3];
  *param_1_00 = wxGDIPlusMatrixData::vftable;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_009a6ca0(*puVar1);
    FUN_009a67a0(puVar1);
  }
  *param_1_00 = wxRefCounter::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_009d69a0(undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = (undefined4 *)param_1[0x12];
  *param_1 = wxGDIPlusContext::vftable;
  if (puVar1 != (undefined4 *)0x0) {
    iVar2 = FUN_009a7da0(*puVar1,param_1[0x17]);
    if (iVar2 != 0) {
      puVar1[1] = iVar2;
    }
    puVar1 = (undefined4 *)param_1[0x12];
    iVar2 = FUN_009a7da0(*puVar1,param_1[0x16]);
    if (iVar2 != 0) {
      puVar1[1] = iVar2;
    }
    puVar1 = (undefined4 *)param_1[0x12];
    if (puVar1 != (undefined4 *)0x0) {
      FUN_009a77d0(*puVar1);
      FUN_009a67a0(puVar1);
    }
  }
  _free((void *)param_1[0x15]);
  param_1[0x15] = 0;
  param_1[0x14] = 0;
  param_1[0x13] = 0;
  FUN_009a9110();
  return;
}



void __thiscall
FUN_009d6a20(int *param_1_00,undefined4 param_1,undefined8 param_2,undefined8 param_3)

{
  (**(code **)(*param_1_00 + 0xec))(param_1,param_2,param_3,&PTR_vftable_0323c2fc);
  return;
}



undefined4 __thiscall FUN_009d6a50(int *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  void *pvVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdea89;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  pvVar4 = (void *)0x0;
  (**(code **)(*param_1_00 + 0x3c))
            (param_1,0x3ff0000000000000,0,0,0x3ff0000000000000,0,0,
             DAT_0323f878 ^ (uint)&stack0xffffffe8);
  puVar2 = (undefined4 *)FUN_009a8790();
  puVar1 = (undefined4 *)param_1_00[0x12];
  iVar3 = FUN_009a7a00(*puVar1,*puVar2);
  if (iVar3 != 0) {
    puVar1[1] = iVar3;
  }
  ExceptionList = pvVar4;
  return param_1;
}



void FUN_009d6b00(undefined4 param_1,uint *param_2)

{
  uint uVar1;
  undefined4 uVar2;
  byte bVar3;
  byte bVar4;
  byte bVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  undefined4 *local_44;
  uint local_3c;
  undefined4 *local_34;
  uint local_30;
  int local_28;
  undefined **local_24 [5];
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8348;
  local_c = ExceptionList;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  uVar1 = *param_2;
  if (2 < uVar1) {
    ExceptionList = &local_c;
    FUN_009d6780(uVar1);
    uVar8 = 0;
    local_4 = 0;
    FUN_009d6840(uVar1);
    local_4._0_1_ = 1;
    if (uVar1 != 0) {
      local_44 = local_34;
      do {
        FUN_009d6900(local_24,uVar8);
        local_4 = CONCAT31(local_4._1_3_,2);
        bVar3 = (*(code *)local_24[0][6])(uVar6);
        bVar4 = (*(code *)local_24[0][5])();
        bVar5 = (*(code *)local_24[0][4])();
        uVar7 = (*(code *)local_24[0][7])();
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_30 <= uVar8)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                       "wxVector<class Gdiplus::Color>::at","idx < m_size",0);
        }
        uVar2 = uStack_10;
        *(uint *)((local_28 - (int)local_34) + (int)local_44) =
             (((uVar7 & 0xff) << 8 | (uint)bVar5) << 8 | (uint)bVar4) << 8 | (uint)bVar3;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_3c <= uVar8)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<float>::at",
                       "idx < m_size",0);
        }
        *local_44 = uVar2;
        local_4._0_1_ = 1;
        local_24[0] = wxObject::vftable;
        FUN_0083e850();
        uVar8 = uVar8 + 1;
        local_44 = local_44 + 1;
      } while (uVar8 < uVar1);
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      if (local_3c == 0) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<float>::at",
                     "idx < m_size",0);
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_30 == 0)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                     "wxVector<class Gdiplus::Color>::at","idx < m_size",0);
      }
    }
    FUN_009d2b90(local_28,local_34,uVar1);
    _free(local_34);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_28);
  }
  return;
}



void FUN_009d6d10(undefined4 param_1,uint *param_2)

{
  uint uVar1;
  undefined4 uVar2;
  byte bVar3;
  byte bVar4;
  byte bVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  undefined4 *local_44;
  uint local_3c;
  undefined4 *local_34;
  uint local_30;
  int local_28;
  undefined **local_24 [5];
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8348;
  local_c = ExceptionList;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  uVar1 = *param_2;
  if (2 < uVar1) {
    ExceptionList = &local_c;
    FUN_009d6780(uVar1);
    uVar8 = 0;
    local_4 = 0;
    FUN_009d6840(uVar1);
    local_4._0_1_ = 1;
    if (uVar1 != 0) {
      local_44 = local_34;
      do {
        FUN_009d6900(local_24,uVar8);
        local_4 = CONCAT31(local_4._1_3_,2);
        bVar3 = (*(code *)local_24[0][6])(uVar6);
        bVar4 = (*(code *)local_24[0][5])();
        bVar5 = (*(code *)local_24[0][4])();
        uVar7 = (*(code *)local_24[0][7])();
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_30 <= uVar8)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                       "wxVector<class Gdiplus::Color>::at","idx < m_size",0);
        }
        uVar2 = uStack_10;
        *(uint *)((local_28 - (int)local_34) + (int)local_44) =
             (((uVar7 & 0xff) << 8 | (uint)bVar5) << 8 | (uint)bVar4) << 8 | (uint)bVar3;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_3c <= uVar8)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<float>::at",
                       "idx < m_size",0);
        }
        *local_44 = uVar2;
        local_4._0_1_ = 1;
        local_24[0] = wxObject::vftable;
        FUN_0083e850();
        uVar8 = uVar8 + 1;
        local_44 = local_44 + 1;
      } while (uVar8 < uVar1);
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      if (local_3c == 0) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<float>::at",
                     "idx < m_size",0);
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_30 == 0)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                     "wxVector<class Gdiplus::Color>::at","idx < m_size",0);
      }
    }
    FUN_009d2d30(local_28,local_34,uVar1);
    _free(local_34);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_28);
  }
  return;
}



void __thiscall
FUN_009d6f20(int param_1_00,double param_1,double param_2,undefined4 param_3,undefined4 param_5_00,
            double param_4,undefined4 param_5)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  bool bVar7;
  undefined local_4c [4];
  undefined local_48 [4];
  float local_44;
  float local_40;
  float local_3c;
  float local_38;
  undefined **local_34 [5];
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be83ad;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)FUN_009a6770(0xc);
  local_4 = 0;
  bVar7 = puVar2 == (undefined4 *)0x0;
  if (bVar7) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    uVar3 = FUN_009d5d20(local_20);
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar4 = FUN_009d5c90(local_34);
    local_44 = (float)(double)CONCAT44(param_5_00,param_3);
    local_40 = (float)param_4;
    local_3c = (float)param_1;
    local_4 = 2;
    local_38 = (float)param_2;
    puVar5 = (undefined4 *)FUN_009d37f0(local_4c,uVar3,uVar1);
    puVar6 = (undefined4 *)FUN_009d37f0(local_48,uVar4);
    puVar2[2] = 6;
    *puVar2 = Gdiplus::LinearGradientBrush::vftable;
    param_3 = 0;
    uVar3 = FUN_009a7180(&local_3c,&local_44,*puVar6,*puVar5,0,&param_3);
    puVar2[2] = uVar3;
    puVar2[1] = param_3;
  }
  local_4 = 3;
  if (!bVar7) {
    local_34[0] = wxObject::vftable;
    FUN_0083e850();
  }
  local_4 = 0xffffffff;
  if (!bVar7) {
    local_20[0] = wxObject::vftable;
    FUN_0083e850();
  }
  *(undefined4 **)(param_1_00 + 0xc) = puVar2;
  FUN_009d6b00(puVar2,param_5);
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_009d70b0(int param_1_00,double param_1,double param_2,double param_3,double param_4,
            float param_5,float param_7,undefined4 param_6)

{
  float fVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  undefined **local_34 [5];
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be83e0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)FUN_009a6770(8);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = 0;
    uVar3 = FUN_009a6800(0,puVar2);
    puVar2[1] = uVar3;
  }
  fVar1 = (float)(double)CONCAT44(param_7,param_5);
  *(undefined4 **)(param_1_00 + 0x14) = puVar2;
  param_5 = (float)param_3 - fVar1;
  iVar4 = FUN_009a6b00(*puVar2,param_5,(float)param_4 - fVar1,fVar1 + fVar1,fVar1 + fVar1);
  if (iVar4 != 0) {
    puVar2[1] = iVar4;
  }
  puVar2 = (undefined4 *)FUN_009a6770(0xc);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar6 = *(undefined4 **)(param_1_00 + 0x14);
    puVar2[2] = 6;
    *puVar2 = Gdiplus::PathGradientBrush::vftable;
    param_5 = 0.0;
    uVar3 = FUN_009a71e0(*puVar6,&param_5);
    puVar2[2] = uVar3;
    puVar2[1] = param_5;
  }
  param_5 = (float)param_1;
  *(undefined4 **)(param_1_00 + 0xc) = puVar2;
  param_7 = (float)param_2;
  iVar4 = FUN_009a7270(puVar2[1],&param_5);
  uVar3 = param_6;
  if (iVar4 != 0) {
    puVar2[2] = iVar4;
  }
  uVar5 = FUN_009d5c90(local_34);
  local_4 = 0;
  puVar6 = (undefined4 *)FUN_009d37f0(&param_6,uVar5);
  iVar4 = FUN_009a7210(puVar2[1],*puVar6);
  if (iVar4 != 0) {
    puVar2[2] = iVar4;
  }
  local_4 = 0xffffffff;
  local_34[0] = wxObject::vftable;
  FUN_0083e850();
  uVar5 = FUN_009d5d20(local_20);
  local_4 = 1;
  FUN_009d37f0(&param_5,uVar5);
  local_4 = 0xffffffff;
  local_20[0] = wxObject::vftable;
  FUN_0083e850();
  param_6 = 1;
  FUN_009d2c50(&param_5,&param_6);
  FUN_009d6d10(puVar2,uVar3);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_009d7280(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  
  FUN_009a90a0(param_1);
  *param_1_00 = wxGDIPlusContext::vftable;
  param_1_00[0x13] = 0;
  param_1_00[0x14] = 0;
  param_1_00[0x15] = 0;
  puVar1 = (undefined4 *)FUN_009a6770(8);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    param_1 = 0;
    uVar2 = FUN_009a7770(param_2,&param_1);
    puVar1[1] = uVar2;
    *puVar1 = param_1;
  }
  uVar2 = FUN_00a49750();
  uVar3 = FUN_00a49750(uVar2);
  FUN_009d4cd0(puVar1,uVar3,uVar2);
  return param_1_00;
}



undefined4 __thiscall FUN_009d7300(undefined4 param_1_00,byte param_1)

{
  FUN_009d69a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009d7320(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  undefined **ppuVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  undefined4 unaff_EBP;
  void *local_14;
  undefined4 *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8413;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  local_10 = param_1_00;
  FUN_009a90a0(param_1);
  *param_1_00 = wxGDIPlusContext::vftable;
  param_1_00[0x13] = 0;
  param_1_00[0x14] = 0;
  param_1_00[0x15] = 0;
  puVar5 = *(undefined4 **)(param_2 + 8);
  local_4 = 1;
  if (puVar5 != (undefined4 *)0x0) {
    ppuVar3 = (undefined **)(**(code **)*puVar5)(uVar2);
    if (ppuVar3 == &PTR_u_wxMSWDCImpl_0323af3c) goto LAB_009d73ba;
    if (ppuVar3[3] != (undefined *)0x0) {
      cVar1 = FUN_0048a047(&PTR_u_wxMSWDCImpl_0323af3c);
      if (cVar1 != '\0') goto LAB_009d73ba;
    }
    if (ppuVar3[4] != (undefined *)0x0) {
      cVar1 = FUN_0048a047(&PTR_u_wxMSWDCImpl_0323af3c);
      if (cVar1 != '\0') goto LAB_009d73ba;
    }
  }
  puVar5 = (undefined4 *)0x0;
LAB_009d73ba:
  uVar4 = puVar5[0x42];
  (**(code **)(**(int **)(param_2 + 8) + 0x20))(&local_14,&param_1);
  puVar5 = (undefined4 *)FUN_009a6770(8);
  if (puVar5 == (undefined4 *)0x0) {
    puVar5 = (undefined4 *)0x0;
  }
  else {
    uVar4 = FUN_009a7770(uVar4,&stack0x00000000);
    puVar5[1] = uVar4;
    *puVar5 = 0;
  }
  FUN_009d4cd0(puVar5,unaff_EBP,local_4);
  ExceptionList = local_14;
  return param_1_00;
}



void __fastcall FUN_009d7430(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  int local_4;
  
  puVar1 = *(undefined4 **)(param_1 + 0x48);
  local_4 = param_1;
  iVar2 = FUN_009a7d70(*puVar1,&local_4);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  FUN_00850560(&local_4);
  return;
}



undefined4 * __thiscall FUN_009d7470(undefined4 *param_1_00,undefined4 param_1,float param_2)

{
  undefined4 *puVar1;
  int iVar2;
  
  FUN_009d7320(param_1,param_2);
  puVar1 = (undefined4 *)param_1_00[0x12];
  *param_1_00 = wxGDIPlusPrintingContext::vftable;
  iVar2 = FUN_009a7a70(*puVar1,&param_2);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  param_2 = 100.0 / param_2;
  iVar2 = FUN_009a7a30(*puVar1,param_2);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  iVar2 = FUN_009a7a70(*puVar1,&param_2);
  if (iVar2 != 0) {
    puVar1[1] = iVar2;
  }
  *(double *)(param_1_00 + 0x10) = (double)(param_2 / 72.0);
  return param_1_00;
}



undefined4 * __thiscall FUN_009d74f0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxGDIPlusPrintingContext::vftable;
  FUN_009d69a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009d7520(undefined4 *param_1_00,int *param_1,undefined4 param_2)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int *piVar6;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  uVar4 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8456;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  FUN_009a90a0(param_1);
  param_1_00[0x13] = 0;
  param_1_00[0x14] = 0;
  param_1_00[0x15] = 0;
  param_1_00[0x12] = 0;
  local_4 = 0;
  *param_1_00 = wxGDIPlusImageContext::vftable;
  param_1_00[0x18] = param_2;
  FUN_00414f38(param_2,0xffffffff);
  local_4._0_1_ = 1;
  FUN_009d4130(uVar4,local_14);
  local_4._0_1_ = 3;
  FUN_008f7630(uVar1);
  piVar2 = (int *)FUN_009a6770(8);
  local_4._0_1_ = 4;
  piVar6 = (int *)0;
  param_1 = piVar2;
  if (piVar2 != (int *)0x0) {
    iVar3 = (**(code **)(param_1_00[0x19] + 8))();
    param_1 = (int *)0x0;
    if (iVar3 != 0) {
      iVar3 = FUN_009a7500(*(undefined4 *)(iVar3 + 4),&param_1);
      piVar2[1] = iVar3;
    }
    *piVar2 = (int)param_1;
    piVar6 = piVar2;
  }
  local_4 = CONCAT31(local_4._1_3_,3);
  uVar4 = FUN_00900150();
  uVar5 = FUN_00900100(uVar4);
  FUN_009d4cd0(piVar6,uVar5,uVar4);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009d7620(undefined4 *param_1)

{
  uint uVar1;
  int iVar2;
  undefined **local_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be849b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *param_1 = wxGDIPlusImageContext::vftable;
  local_4 = 1;
  iVar2 = FUN_009d6090(local_14);
  local_4._0_1_ = 2;
  if (param_1[0x18] != iVar2) {
    FUN_0083ea60(iVar2);
  }
  local_4._0_1_ = 1;
  local_14[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_009d4590();
  local_4 = 0xffffffff;
  FUN_009d69a0();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009d76c0(undefined4 param_1_00,byte param_1)

{
  FUN_009d7620();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009d76e0(undefined4 *param_1,byte param_2)

{
  *param_1 = wxGDIPlusMeasuringContext::vftable;
  ReleaseDC((HWND)0x0,(HDC)param_1[0x18]);
  FUN_009d69a0();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 * __thiscall FUN_009d7720(undefined4 *param_1_00,undefined4 param_1,int *param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  undefined4 uVar6;
  undefined4 auStack_30 [5];
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00be84d0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  FUN_009a8540(param_1);
  *param_1_00 = wxGDIPlusFontData::vftable;
  uVar5 = 0;
  local_4 = 0;
  iVar3 = (**(code **)(*param_2 + 0x38))(uVar2);
  if (iVar3 == 0x5d) {
    uVar5 = 2;
  }
  cVar1 = (**(code **)(*param_2 + 0x40))();
  if (cVar1 != '\0') {
    uVar5 = uVar5 | 4;
  }
  iVar3 = (**(code **)(*param_2 + 0x3c))();
  if (iVar3 == 0x5c) {
    uVar5 = uVar5 | 1;
  }
  uVar4 = (**(code **)(*param_2 + 0x44))(auStack_30);
  uVar6 = 3;
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
  iVar3 = (**(code **)(*param_2 + 0x2c))(uVar5,param_2,3);
  FUN_009d5ee0(uVar4,(float)iVar3,uVar5,param_2,uVar6);
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(auStack_30[0]);
  }
  ExceptionList = pvStack_10;
  return param_1_00;
}



void __fastcall FUN_009d7810(int param_1)

{
  uint uVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int iVar5;
  
  if (*(int *)(param_1 + 0x4c) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\graphics.cpp",0x644,"wxGDIPlusContext::PopState",
                   "!m_stateStack.empty()",L"No state to pop");
    }
  }
  else {
    uVar2 = *(uint *)(param_1 + 0x4c);
    uVar1 = uVar2 - 1;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar2 <= uVar1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,"wxVector<unsigned int>::at",
                   "idx < m_size",0);
    }
    uVar3 = *(undefined4 *)(*(int *)(param_1 + 0x54) + uVar1 * 4);
    iVar5 = *(int *)(param_1 + 0x54) + -4 + *(uint *)(param_1 + 0x4c) * 4;
    FUN_009d5b90(iVar5,iVar5 + 4);
    puVar4 = *(undefined4 **)(param_1 + 0x48);
    iVar5 = FUN_009a7da0(*puVar4,uVar3);
    if (iVar5 != 0) {
      puVar4[1] = iVar5;
      return;
    }
  }
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void __thiscall
FUN_009d78b0(int param_1_00,uint param_1,double *param_3,double *param_4,double *param_5,
            double *param_6)

{
  short sVar1;
  short *psVar2;
  double *pdVar3;
  ushort uVar4;
  char cVar5;
  undefined4 *puVar6;
  int iVar7;
  short *psVar8;
  ushort auStack_5c [2];
  ushort auStack_58 [2];
  short **local_54;
  float fStack_50;
  float fStack_4c;
  float fStack_48;
  float fStack_44;
  float fStack_40;
  int iStack_3c;
  int local_38;
  undefined4 local_34;
  int local_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  float fStack_24;
  float fStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8500;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_38 = param_1_00;
  cVar5 = FUN_0099a370(DAT_0323f878 ^ (uint)&stack0xffffff94);
  if (cVar5 == '\0') {
    if (*(uint *)(param_1 + 0x18) < 8) {
      iVar7 = param_1 + 4;
    }
    else {
      iVar7 = *(int *)(param_1 + 4);
    }
    FUN_008514e0(iVar7,0xffffffff);
    local_34 = 0;
    local_30 = 0;
    local_4 = 1;
    puVar6 = (undefined4 *)(**(code **)(**(int **)(param_1_00 + 0x2c) + 0xc))();
    iVar7 = FUN_009a7fa0(*puVar6,&local_34);
    if (iVar7 != 0) {
      puVar6[1] = iVar7;
      local_30 = iVar7;
    }
    fStack_48 = (float)*(double *)(param_1_00 + 0x40);
    iVar7 = FUN_009a7ec0(local_34,0,auStack_5c);
    uVar4 = auStack_5c[0];
    if (iVar7 != 0) {
      local_30 = iVar7;
    }
    iVar7 = FUN_009a7fd0(*puVar6,&fStack_50);
    if (iVar7 != 0) {
      puVar6[1] = iVar7;
    }
    fStack_4c = fStack_50;
    iVar7 = FUN_009a7e60(local_34,0,auStack_58);
    if (iVar7 != 0) {
      local_30 = iVar7;
    }
    fStack_44 = ((float)(uint)uVar4 * fStack_4c) / (float)(uint)auStack_58[0];
    fStack_4c = (float)(uint)auStack_58[0];
    iVar7 = FUN_009a7e90(local_34,0,auStack_58);
    uVar4 = auStack_58[0];
    if (iVar7 != 0) {
      local_30 = iVar7;
    }
    iVar7 = FUN_009a7fd0(*puVar6,&fStack_4c);
    if (iVar7 != 0) {
      puVar6[1] = iVar7;
    }
    fStack_50 = fStack_4c;
    iVar7 = FUN_009a7e60(local_34,0,auStack_5c);
    if (iVar7 != 0) {
      local_30 = iVar7;
    }
    fStack_4c = (float)(uint)auStack_5c[0];
    fStack_40 = ((float)(uint)uVar4 * fStack_50) / (float)(int)fStack_4c;
    iVar7 = FUN_009a7ef0(local_34,0,auStack_58);
    if (iVar7 != 0) {
      local_30 = iVar7;
    }
    iVar7 = FUN_009a7fd0(*puVar6,&fStack_4c);
    if (iVar7 != 0) {
      puVar6[1] = iVar7;
    }
    fStack_50 = fStack_4c;
    iVar7 = FUN_009a7e60(local_34,0,auStack_5c);
    pdVar3 = param_4;
    if (iVar7 != 0) {
      local_30 = iVar7;
    }
    fStack_4c = ((float)(uint)auStack_58[0] * fStack_50) / (float)(uint)auStack_5c[0];
    if (param_4 != (double *)0x0) {
      *param_4 = (double)(fStack_4c * fStack_48);
    }
    if (param_5 != (double *)0x0) {
      *param_5 = (double)(fStack_44 * fStack_48);
    }
    if (param_6 != (double *)0x0) {
      *param_6 = (double)(((fStack_4c - fStack_40) - fStack_44) * fStack_48);
    }
    if (*(int *)(param_1 + 0x14) == 0) {
      if (param_3 != (double *)0x0) {
        *param_3 = 0.0;
      }
    }
    else {
      uStack_1c = 0;
      uStack_18 = 0;
      uStack_14 = 0x47c35000;
      uStack_10 = 0x47c35000;
      _DAT_032ea13c = FUN_009a8090(&DAT_032ea138);
      fStack_40 = 0.0;
      iStack_3c = FUN_009a80f0(DAT_032ea138,&fStack_40);
      iVar7 = FUN_009a8150(fStack_40,&param_1);
      if (iVar7 != 0) {
        iStack_3c = iVar7;
      }
      iVar7 = FUN_009a8120(fStack_40,param_1 | 0x800);
      if (iVar7 != 0) {
        iStack_3c = iVar7;
      }
      fStack_20 = 0.0;
      fStack_24 = 0.0;
      uStack_28 = 0;
      uStack_2c = 0;
      psVar2 = *local_54;
      psVar8 = psVar2;
      do {
        sVar1 = *psVar8;
        psVar8 = psVar8 + 1;
      } while (sVar1 != 0);
      FUN_009d3580(psVar2,(int)psVar8 - (int)(psVar2 + 1) >> 1,puVar6,&uStack_1c,&fStack_40,
                   &uStack_2c,0,0);
      if (param_3 != (double *)0x0) {
        *param_3 = (double)fStack_24;
      }
      if (pdVar3 != (double *)0x0) {
        *pdVar3 = (double)fStack_20;
      }
      FUN_009a80c0(fStack_40);
    }
    FUN_009a7e00(local_34);
    local_4 = 0xffffffff;
    FUN_0083f900();
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\graphics.cpp",0x6c6,"wxGDIPlusContext::GetTextExtent",
                 "!m_font.IsNull()",L"wxGDIPlusContext::GetTextExtent - no valid font set");
  }
  ExceptionList = local_c;
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void __thiscall FUN_009d7c50(int param_1_00,int param_1,int param_2)

{
  short *psVar1;
  short sVar2;
  char cVar3;
  uint uVar4;
  undefined4 uVar5;
  short *psVar6;
  undefined4 *puVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  short **ppsVar11;
  undefined4 *puVar12;
  uint uVar13;
  short **ppsStack_4c;
  void *pvStack_48;
  undefined4 uStack_34;
  int iStack_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  float fStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8546;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  puVar12 = (undefined4 *)0x0;
  *(undefined4 *)(param_2 + 4) = 0;
  FUN_0086a700(0,*(undefined4 *)(param_1 + 0x14));
  cVar3 = FUN_0099a370(uVar4);
  if (cVar3 == '\0') {
    if (*(int *)(param_1 + 0x14) != 0) {
      uVar5 = (**(code **)(**(int **)(param_1_00 + 0x2c) + 0xc))();
      FUN_008514e0();
      psVar6 = *ppsStack_4c;
      uStack_4 = 0;
      psVar1 = psVar6 + 1;
      do {
        sVar2 = *psVar6;
        psVar6 = psVar6 + 1;
      } while (sVar2 != 0);
      uVar4 = (int)psVar6 - (int)psVar1 >> 1;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x14) != uVar4)) {
        FUN_00840480("..\\..\\src\\msw\\graphics.cpp",0x6ff,
                     "wxGDIPlusContext::GetPartialTextExtents","text.length() == len",
                     L"GetPartialTextExtents not yet implemented for multichar situations");
      }
      uStack_1c = 0;
      uStack_18 = 0;
      uStack_14 = 0x47c35000;
      uStack_10 = 0x47c35000;
      _DAT_032ea13c = FUN_009a8090(&DAT_032ea138);
      uStack_34 = 0;
      iStack_30 = FUN_009a80f0();
      uStack_4._0_1_ = 1;
      param_1 = 0;
      pvStack_48 = (void *)FUN_00823c23(0x100);
      uStack_4._0_1_ = 2;
      if (pvStack_48 == (void *)0x0) {
        pvStack_48 = (void *)0x0;
      }
      else {
        _vector_constructor_iterator_(pvStack_48,8,0x20,FUN_009d2b80);
      }
      puVar7 = (undefined4 *)FUN_009a6770(0x104);
      uStack_4._0_1_ = 3;
      if (puVar7 != (undefined4 *)0x0) {
        puVar12 = puVar7 + 1;
        *puVar7 = 0x20;
        _eh_vector_constructor_iterator_
                  (puVar12,8,0x20,(_func_void_void_ptr *)&LAB_009d3700,FUN_00927e10);
      }
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      for (; uVar4 != 0; uVar4 = uVar4 - uVar13) {
        uVar13 = uVar4;
        if (0x20 < uVar4) {
          uVar13 = 0x20;
        }
        uVar8 = 0;
        if (uVar13 != 0) {
          do {
            *(undefined4 *)((int)pvStack_48 + uVar8 * 8) = 0;
            *(uint *)((int)pvStack_48 + uVar8 * 8 + 4) = param_1 + 1 + uVar8;
            uVar8 = uVar8 + 1;
          } while (uVar8 < uVar13);
        }
        iVar9 = FUN_009a8180(uStack_34,uVar13,pvStack_48);
        if (iVar9 != 0) {
          iStack_30 = iVar9;
        }
        iVar9 = FUN_009a8150();
        if (iVar9 != 0) {
          iStack_30 = iVar9;
        }
        iVar9 = FUN_009a8120();
        if (iVar9 != 0) {
          iStack_30 = iVar9;
        }
        FUN_009d35e0(*ppsStack_4c,0xffffffff,uVar5,&uStack_1c,&uStack_34,uVar13,puVar12);
        uStack_20 = 0;
        uVar8 = 0;
        fStack_24 = 0.0;
        uStack_28 = 0;
        uStack_2c = 0;
        if (uVar13 != 0) {
          iVar9 = param_1 * 8;
          do {
            iVar10 = FUN_009a7030(puVar12[uVar8 * 2],**(undefined4 **)(param_1_00 + 0x48),&uStack_2c
                                 );
            if (iVar10 != 0) {
              puVar12[uVar8 * 2 + 1] = iVar10;
            }
            if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
               (*(uint *)(param_2 + 4) <= uVar8 + param_1)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x346,
                           "wxBaseArrayDouble::Item","uiIndex < m_nCount",0);
            }
            *(double *)(*(int *)(param_2 + 8) + iVar9) = (double)fStack_24;
            uVar8 = uVar8 + 1;
            iVar9 = iVar9 + 8;
          } while (uVar8 < uVar13);
        }
        param_1 = param_1 + uVar13;
      }
      FUN_00a3f66c(pvStack_48);
      if (puVar12 != (undefined4 *)0x0) {
        _eh_vector_destructor_iterator_(puVar12,8,puVar12[-1],FUN_00927e10);
        FUN_009a67a0(puVar12 + -1);
      }
      FUN_009a80c0(uStack_34);
      uStack_4 = 0xffffffff;
      ppsVar11 = (short **)FUN_00850350();
      if (ppsStack_4c != ppsVar11) {
        *(short *)(ppsStack_4c + 2) = *(short *)(ppsStack_4c + 2) + -1;
        if (*(short *)(ppsStack_4c + 2) == 0) {
          if (*(char *)((int)ppsStack_4c + 10) != '\0') {
            _free(*ppsStack_4c);
          }
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(ppsStack_4c);
        }
        FUN_00850350();
      }
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\graphics.cpp",0x6f7,"wxGDIPlusContext::GetPartialTextExtents",
                 "!m_font.IsNull()",L"wxGDIPlusContext::GetPartialTextExtents - no valid font set");
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_009d8010(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int *piVar6;
  undefined4 *puVar7;
  undefined4 uVar8;
  undefined local_1c [16];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8583;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  FUN_009a90a0(param_1);
  *param_1_00 = wxGDIPlusContext::vftable;
  param_1_00[0x13] = 0;
  param_1_00[0x14] = 0;
  param_1_00[0x15] = 0;
  local_4 = 1;
  piVar6 = (int *)FUN_00917e70(local_1c,param_2,uVar5);
  iVar1 = *piVar6;
  iVar2 = piVar6[1];
  iVar3 = piVar6[2];
  iVar4 = piVar6[3];
  puVar7 = (undefined4 *)FUN_009a6770(8);
  if (puVar7 == (undefined4 *)0x0) {
    puVar7 = (undefined4 *)0x0;
  }
  else {
    param_1 = 0;
    uVar8 = FUN_009a77a0(param_2,&param_1);
    puVar7[1] = uVar8;
    *puVar7 = param_1;
  }
  FUN_009d4cd0(puVar7,iVar3 - iVar1,iVar4 - iVar2);
  *(undefined *)(param_1_00 + 0xf) = 1;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009d80f0(int param_1)

{
  char cVar1;
  int iVar2;
  uint local_10c;
  void *local_108;
  uint local_e8;
  void *local_e4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be85df;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar2 = FUN_009a67d0();
  if (iVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(7);
    if (cVar1 != '\0') {
      FUN_0083fbe0();
      local_4 = 0;
      FUN_0043c211();
      local_4._0_1_ = 1;
      FUN_008423d0();
      local_4._0_1_ = 2;
      FUN_008854f0();
      FUN_0084d410();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_00842440();
      _free(local_e4);
      if (7 < local_e8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    *(undefined4 *)(param_1 + 8) = 1;
  }
  else {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(7);
    if (cVar1 != '\0') {
      FUN_0083fbe0();
      local_4 = 3;
      FUN_0043c211();
      local_4._0_1_ = 4;
      FUN_008423d0();
      local_4._0_1_ = 5;
      FUN_008854f0();
      FUN_0084d410();
      local_4 = CONCAT31(local_4._1_3_,4);
      FUN_00842440();
      _free(local_108);
      if (7 < local_10c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
    *(undefined4 *)(param_1 + 8) = 0;
  }
  ExceptionList = local_c;
  return;
}



int * __thiscall FUN_009d8360(int param_1_00,undefined4 param_1)

{
  void *pvVar1;
  int *piVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  if (*(int *)(param_1_00 + 8) != 1) {
    ExceptionList = local_c;
    return (int *)0x0;
  }
  pvVar1 = operator_new(0x60);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    piVar2 = (int *)0x0;
  }
  else {
    piVar2 = (int *)FUN_009d7320(param_1_00,param_1);
  }
  local_4 = 0xffffffff;
  (**(code **)(*piVar2 + 0xe0))(1);
  ExceptionList = pvVar1;
  return piVar2;
}



undefined4 __thiscall FUN_009d8410(int param_1_00,undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  if (*(int *)(param_1_00 + 8) == 1) {
    pvVar1 = operator_new(0x60);
    local_4 = 0;
    if (pvVar1 != (void *)0x0) {
      uVar2 = FUN_009d7470(param_1_00,param_1);
      ExceptionList = local_c;
      return uVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



int * __thiscall FUN_009d84a0(int param_1_00,undefined4 param_1)

{
  void *pvVar1;
  int *piVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  if (*(int *)(param_1_00 + 8) != 1) {
    ExceptionList = local_c;
    return (int *)0x0;
  }
  pvVar1 = operator_new(0x78);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    piVar2 = (int *)0x0;
  }
  else {
    piVar2 = (int *)FUN_009d7520(param_1_00,param_1);
  }
  local_4 = 0xffffffff;
  (**(code **)(*piVar2 + 0xe0))(1);
  ExceptionList = pvVar1;
  return piVar2;
}



undefined4 * __fastcall FUN_009d8550(int param_1)

{
  undefined4 *puVar1;
  HDC pHVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  }
  if (*(int *)(param_1 + 8) != 1) {
    ExceptionList = local_c;
    return (undefined4 *)0x0;
  }
  puVar1 = (undefined4 *)operator_new(0x68);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    pHVar2 = GetDC((HWND)0x0);
    puVar1[0x18] = pHVar2;
    FUN_009d7280(param_1,pHVar2,0x408f400000000000,0x408f400000000000);
    *puVar1 = wxGDIPlusMeasuringContext::vftable;
    puVar3 = puVar1;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 * __thiscall FUN_009d8600(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be860b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  }
  if (*(int *)(param_1_00 + 8) == 1) {
    puVar1 = (undefined4 *)operator_new(0x60);
    local_4 = 0;
    if (puVar1 != (undefined4 *)0x0) {
      FUN_009a90a0(param_1_00);
      *puVar1 = wxGDIPlusContext::vftable;
      puVar1[0x13] = 0;
      puVar1[0x14] = 0;
      puVar1[0x15] = 0;
      FUN_009d4cd0(param_1,0,0);
      ExceptionList = local_c;
      return puVar1;
    }
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 __thiscall FUN_009d86b0(int param_1_00,undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  if (*(int *)(param_1_00 + 8) == 1) {
    pvVar1 = operator_new(0x60);
    local_4 = 0;
    if (pvVar1 != (void *)0x0) {
      uVar2 = FUN_009d8010(param_1_00,param_1);
      ExceptionList = local_c;
      return uVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_009d8740(int param_1_00,int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  if (*(int *)(param_1_00 + 8) == 1) {
    pvVar1 = operator_new(0x60);
    local_4 = 0;
    if (pvVar1 != (void *)0x0) {
      uVar2 = FUN_009d8010(param_1_00,*(undefined4 *)(param_1 + 0x13c));
      ExceptionList = local_c;
      return uVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall FUN_009d87d0(int param_1_00,undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be865c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  }
  if (*(int *)(param_1_00 + 8) != 1) {
    *param_1 = wxObject::vftable;
    iVar2 = DAT_0323c350;
    param_1[1] = DAT_0323c350;
    if (iVar2 != 0) {
      piVar1 = (int *)(iVar2 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxGraphicsPath::vftable;
    ExceptionList = local_c;
    return param_1;
  }
  FUN_009a85a0();
  local_4 = 1;
  puVar3 = (undefined4 *)operator_new(0x10);
  local_4._0_1_ = 2;
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    FUN_009a8540(param_1_00);
    *puVar3 = wxGDIPlusPathData::vftable;
    puVar4 = (undefined4 *)FUN_009a6770(8);
    if (puVar4 == (undefined4 *)0x0) {
      puVar3[3] = 0;
    }
    else {
      *puVar4 = 0;
      uVar5 = FUN_009a6800(0,puVar4);
      puVar4[1] = uVar5;
      puVar3[3] = puVar4;
    }
  }
  *param_1 = wxObject::vftable;
  param_1[1] = puVar3;
  if (puVar3 != (undefined4 *)0x0) {
    puVar3[1] = puVar3[1] + 1;
  }
  *param_1 = wxGraphicsPath::vftable;
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_008f7630();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall
FUN_009d8910(int param_1_00,undefined4 *param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4,undefined8 param_5,undefined8 param_6,undefined8 param_7)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  void *pvVar6;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be86ac;
  local_c = ExceptionList;
  puVar2 = (undefined4 *)(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0();
  }
  if (*(int *)(param_1_00 + 8) != 1) {
    *param_1 = wxObject::vftable;
    iVar1 = DAT_0323c330;
    param_1[1] = DAT_0323c330;
    if (iVar1 != 0) {
      piVar3 = (int *)(iVar1 + 4);
      *piVar3 = *piVar3 + 1;
    }
    *param_1 = wxGraphicsMatrix::vftable;
    ExceptionList = local_c;
    return param_1;
  }
  FUN_009a85a0();
  local_4 = 1;
  piVar3 = (int *)operator_new(0x10);
  local_4._0_1_ = 2;
  if (piVar3 == (int *)0x0) {
    piVar3 = (int *)0x0;
  }
  else {
    FUN_009a8540();
    *piVar3 = (int)wxGDIPlusMatrixData::vftable;
    puVar4 = (undefined4 *)FUN_009a6770();
    if (puVar4 == (undefined4 *)0x0) {
      piVar3[3] = 0;
    }
    else {
      uVar5 = FUN_009a6c40();
      puVar4[1] = uVar5;
      *puVar4 = 0;
      piVar3[3] = (int)puVar4;
    }
  }
  local_4 = CONCAT31(local_4._1_3_,1);
  (**(code **)(*piVar3 + 0xc))(param_2,param_3,param_4,param_5,param_6,param_7);
  pvVar6 = (void *)param_6;
  *puVar2 = wxObject::vftable;
  puVar2[1] = piVar3;
  piVar3[1] = piVar3[1] + 1;
  *puVar2 = wxGraphicsMatrix::vftable;
  FUN_008f7630();
  ExceptionList = pvVar6;
  return puVar2;
}



undefined4 * __thiscall FUN_009d8a90(int param_1_00,undefined4 *param_1,int *param_2)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  void *pvVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be86fc;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffdc);
  }
  if (*(int *)(param_1_00 + 8) != 1) {
    *param_1 = wxObject::vftable;
    iVar3 = DAT_0323c2f8;
    param_1[1] = DAT_0323c2f8;
    if (iVar3 != 0) {
      piVar1 = (int *)(iVar3 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxGraphicsPen::vftable;
    ExceptionList = local_c;
    return param_1;
  }
  cVar2 = (**(code **)(*param_2 + 0x10))();
  if (cVar2 != '\0') {
    iVar3 = (**(code **)(*param_2 + 0x54))();
    if (iVar3 != 0x6a) {
      FUN_009a85a0();
      uStack_4 = 1;
      pvVar4 = operator_new(0x20);
      uStack_4._0_1_ = 2;
      if (pvVar4 == (void *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = FUN_009d3960(param_1_00,param_2);
      }
      *param_1 = wxObject::vftable;
      param_1[1] = iVar3;
      if (iVar3 != 0) {
        *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1;
      }
      *param_1 = wxGraphicsPen::vftable;
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_008f7630();
      ExceptionList = local_c;
      return param_1;
    }
  }
  *param_1 = wxObject::vftable;
  iVar3 = DAT_0323c2f8;
  param_1[1] = DAT_0323c2f8;
  if (iVar3 != 0) {
    piVar1 = (int *)(iVar3 + 4);
    *piVar1 = *piVar1 + 1;
  }
  *param_1 = wxGraphicsPen::vftable;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_009d8bf0(int param_1_00,undefined4 *param_1,int *param_2)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  void *pvVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be86fc;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffdc);
  }
  if (*(int *)(param_1_00 + 8) != 1) {
    *param_1 = wxObject::vftable;
    iVar3 = DAT_0323c300;
    param_1[1] = DAT_0323c300;
    if (iVar3 != 0) {
      piVar1 = (int *)(iVar3 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxGraphicsBrush::vftable;
    ExceptionList = local_c;
    return param_1;
  }
  cVar2 = (**(code **)(*param_2 + 0x10))();
  if (cVar2 != '\0') {
    iVar3 = (**(code **)(*param_2 + 0x40))();
    if (iVar3 != 0x6a) {
      FUN_009a85a0();
      uStack_4 = 1;
      pvVar4 = operator_new(0x18);
      uStack_4._0_1_ = 2;
      if (pvVar4 == (void *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = FUN_009d3df0(param_1_00,param_2);
      }
      *param_1 = wxObject::vftable;
      param_1[1] = iVar3;
      if (iVar3 != 0) {
        *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1;
      }
      *param_1 = wxGraphicsBrush::vftable;
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_008f7630();
      ExceptionList = local_c;
      return param_1;
    }
  }
  *param_1 = wxObject::vftable;
  iVar3 = DAT_0323c300;
  param_1[1] = DAT_0323c300;
  if (iVar3 != 0) {
    piVar1 = (int *)(iVar3 + 4);
    *piVar1 = *piVar1 + 1;
  }
  *param_1 = wxGraphicsBrush::vftable;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall
FUN_009d8d50(int param_1_00,undefined4 *param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4,undefined8 param_5,undefined4 param_11)

{
  int *piVar1;
  int iVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be874c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffd4);
  }
  if (*(int *)(param_1_00 + 8) == 1) {
    FUN_009a85a0();
    local_4 = 1;
    puVar3 = (undefined4 *)operator_new(0x18);
    local_4._0_1_ = 2;
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      FUN_009a8540(param_1_00);
      *puVar3 = wxGDIPlusBrushData::vftable;
      puVar3[3] = 0;
      puVar3[4] = 0;
      puVar3[5] = 0;
    }
    local_4._0_1_ = 1;
    FUN_009d6f20(param_2,param_3,param_4,param_5,param_11);
    *param_1 = wxObject::vftable;
    param_1[1] = puVar3;
    if (puVar3 != (undefined4 *)0x0) {
      puVar3[1] = puVar3[1] + 1;
    }
    *param_1 = wxGraphicsBrush::vftable;
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_008f7630();
  }
  else {
    *param_1 = wxObject::vftable;
    iVar2 = DAT_0323c300;
    param_1[1] = DAT_0323c300;
    if (iVar2 != 0) {
      piVar1 = (int *)(iVar2 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxGraphicsBrush::vftable;
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall
FUN_009d8e90(int param_1_00,undefined4 *param_1,undefined8 param_2,undefined8 param_3,
            undefined8 param_4,undefined8 param_5,undefined8 param_6,undefined4 param_11)

{
  int *piVar1;
  int iVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be874c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffd4);
  }
  if (*(int *)(param_1_00 + 8) == 1) {
    FUN_009a85a0();
    local_4 = 1;
    puVar3 = (undefined4 *)operator_new(0x18);
    local_4._0_1_ = 2;
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      FUN_009a8540(param_1_00);
      *puVar3 = wxGDIPlusBrushData::vftable;
      puVar3[3] = 0;
      puVar3[4] = 0;
      puVar3[5] = 0;
    }
    local_4._0_1_ = 1;
    FUN_009d70b0(param_2,param_3,param_4,param_5,param_6,param_11);
    *param_1 = wxObject::vftable;
    param_1[1] = puVar3;
    if (puVar3 != (undefined4 *)0x0) {
      puVar3[1] = puVar3[1] + 1;
    }
    *param_1 = wxGraphicsBrush::vftable;
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_008f7630();
  }
  else {
    *param_1 = wxObject::vftable;
    iVar2 = DAT_0323c300;
    param_1[1] = DAT_0323c300;
    if (iVar2 != 0) {
      piVar1 = (int *)(iVar2 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxGraphicsBrush::vftable;
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall
FUN_009d8fd0(int param_1_00,undefined4 *param_1,int *param_2,undefined4 param_4)

{
  char cVar1;
  void *pvVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8783;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  }
  iVar3 = DAT_0323c308;
  if (*(int *)(param_1_00 + 8) == 1) {
    cVar1 = (**(code **)(*param_2 + 0x10))();
    iVar3 = DAT_0323c308;
    if (cVar1 != '\0') {
      FUN_009a85a0();
      uStack_4 = 0;
      pvVar2 = operator_new(0x14);
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      if (pvVar2 == (void *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = FUN_009d7720(param_1_00,param_2,param_4);
      }
      *param_1 = wxObject::vftable;
      param_1[1] = iVar3;
      if (iVar3 != 0) {
        *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1;
      }
      *param_1 = wxGraphicsFont::vftable;
      uStack_4 = 0xffffffff;
      FUN_008f7630();
      ExceptionList = local_c;
      return param_1;
    }
    param_1[1] = DAT_0323c308;
  }
  else {
    param_1[1] = DAT_0323c308;
  }
  *param_1 = wxObject::vftable;
  if (iVar3 != 0) {
    *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1;
  }
  *param_1 = wxGraphicsFont::vftable;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall
FUN_009d9100(int param_1_00,undefined4 *param_1,double param_3_00,undefined4 param_4_00,byte param_3
            ,undefined4 param_4)

{
  int *piVar1;
  void *pvVar2;
  int iVar3;
  uint uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be87cc;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar4 = 0;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  }
  if (*(int *)(param_1_00 + 8) != 1) {
    *param_1 = wxObject::vftable;
    iVar3 = DAT_0323c308;
    param_1[1] = DAT_0323c308;
    if (iVar3 != 0) {
      piVar1 = (int *)(iVar3 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxGraphicsFont::vftable;
    ExceptionList = local_c;
    return param_1;
  }
  if ((param_3 & 1) != 0) {
    uVar4 = 2;
  }
  if ((param_3 & 0x40) != 0) {
    uVar4 = uVar4 | 4;
  }
  if ((param_3 & 8) != 0) {
    uVar4 = uVar4 | 1;
  }
  if ((char)param_3 < '\0') {
    uVar4 = uVar4 | 8;
  }
  FUN_009a85a0();
  local_4 = 1;
  pvVar2 = operator_new(0x14);
  local_4._0_1_ = 2;
  if (pvVar2 == (void *)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = FUN_009d5ff0(param_1_00,param_4_00,(float)param_3_00,uVar4,param_4);
  }
  *param_1 = wxObject::vftable;
  param_1[1] = iVar3;
  if (iVar3 != 0) {
    *(int *)(iVar3 + 4) = *(int *)(iVar3 + 4) + 1;
  }
  *param_1 = wxGraphicsFont::vftable;
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_008f7630();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_009d9240(int param_1_00,undefined4 *param_1,int *param_2)

{
  int *piVar1;
  char cVar2;
  void *pvVar3;
  int iVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8783;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  }
  if (*(int *)(param_1_00 + 8) == 1) {
    cVar2 = (**(code **)(*param_2 + 0x10))();
    if (cVar2 != '\0') {
      FUN_009a85a0();
      uStack_4 = 0;
      pvVar3 = operator_new(0x14);
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      if (pvVar3 == (void *)0x0) {
        iVar4 = 0;
      }
      else {
        iVar4 = FUN_009d4130(param_1_00,param_2);
      }
      *param_1 = wxObject::vftable;
      param_1[1] = iVar4;
      if (iVar4 != 0) {
        *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
      }
      *param_1 = wxGraphicsBitmap::vftable;
      uStack_4 = 0xffffffff;
      FUN_008f7630();
      ExceptionList = local_c;
      return param_1;
    }
  }
  iVar4 = DAT_0323c310;
  param_1[1] = DAT_0323c310;
  *param_1 = wxObject::vftable;
  if (iVar4 != 0) {
    piVar1 = (int *)(iVar4 + 4);
    *piVar1 = *piVar1 + 1;
  }
  *param_1 = wxGraphicsBitmap::vftable;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_009d9360(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  int *piVar1;
  char cVar2;
  void *pvVar3;
  int iVar4;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be881c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  }
  if ((*(int *)(param_1_00 + 8) == 1) && (cVar2 = FUN_008ff820(), cVar2 != '\0')) {
    FUN_009a85a0();
    local_4 = 0;
    pvVar3 = operator_new(0x14);
    local_4._0_1_ = 1;
    if (pvVar3 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      FUN_00414f38(param_2,0xffffffff);
      local_4 = CONCAT31(local_4._1_3_,2);
      iVar4 = FUN_009d4130(param_1_00,local_14);
    }
    local_4 = 0;
    if (pvVar3 != (void *)0x0) {
      FUN_008f7630();
    }
    *param_1 = wxObject::vftable;
    param_1[1] = iVar4;
    if (iVar4 != 0) {
      *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
    }
    *param_1 = wxGraphicsBitmap::vftable;
    local_4 = 0xffffffff;
    FUN_008f7630();
    ExceptionList = local_c;
    return param_1;
  }
  iVar4 = DAT_0323c310;
  param_1[1] = DAT_0323c310;
  *param_1 = wxObject::vftable;
  if (iVar4 != 0) {
    piVar1 = (int *)(iVar4 + 4);
    *piVar1 = *piVar1 + 1;
  }
  *param_1 = wxGraphicsBitmap::vftable;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_009d94b0(int param_1_00,undefined4 *param_1)

{
  int *piVar1;
  undefined *puVar2;
  int iVar3;
  undefined **ppuVar4;
  undefined **local_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8859;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  }
  if (*(int *)(param_1_00 + 8) != 1) {
    *param_1 = wxObject::vftable;
    iVar3 = DAT_032390e8;
    param_1[1] = DAT_032390e8;
    if (iVar3 != 0) {
      piVar1 = (int *)(iVar3 + 4);
      *piVar1 = *piVar1 + 1;
    }
    *param_1 = wxImage::vftable;
    ExceptionList = local_c;
    return param_1;
  }
  iVar3 = FUN_00b4ffb0();
  if (iVar3 == 0) {
    ppuVar4 = &PTR_vftable_032390e4;
  }
  else {
    ppuVar4 = (undefined **)FUN_009d6090(local_14);
  }
  *param_1 = wxObject::vftable;
  puVar2 = ppuVar4[1];
  param_1[1] = puVar2;
  if (puVar2 != (undefined *)0x0) {
    *(int *)(puVar2 + 4) = *(int *)(puVar2 + 4) + 1;
  }
  *param_1 = wxImage::vftable;
  local_4 = 0;
  if (iVar3 != 0) {
    local_14[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_009d95b0(int param_1_00,undefined4 *param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8783;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffe0);
  }
  iVar2 = DAT_0323c310;
  if ((*(int *)(param_1_00 + 8) == 1) && (param_2 != 0)) {
    FUN_009a85a0();
    local_4 = 0;
    puVar3 = (undefined4 *)operator_new(0x14);
    local_4 = CONCAT31(local_4._1_3_,1);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      FUN_009a8540(param_1_00);
      *puVar3 = wxGDIPlusBitmapData::vftable;
      puVar3[3] = param_2;
      puVar3[4] = 0;
    }
    *param_1 = wxObject::vftable;
    param_1[1] = puVar3;
    if (puVar3 != (undefined4 *)0x0) {
      puVar3[1] = puVar3[1] + 1;
    }
    *param_1 = wxGraphicsBitmap::vftable;
    local_4 = 0xffffffff;
    FUN_008f7630();
    ExceptionList = local_c;
    return param_1;
  }
  param_1[1] = DAT_0323c310;
  *param_1 = wxObject::vftable;
  if (iVar2 != 0) {
    piVar1 = (int *)(iVar2 + 4);
    *piVar1 = *piVar1 + 1;
  }
  *param_1 = wxGraphicsBitmap::vftable;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall
FUN_009d96e0(int param_1_00,undefined4 *param_1,int param_2,double param_4,double param_5,
            double param_6,double param_7)

{
  int *piVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8893;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 8) == -1) {
    FUN_009d80f0(DAT_0323f878 ^ (uint)&stack0xffffffdc);
  }
  if (*(int *)(param_1_00 + 8) == 1) {
    iVar2 = (**(code **)(**(int **)(param_2 + 4) + 8))();
    if (iVar2 != 0) {
      FUN_009a85a0();
      uStack_4 = 0;
      puVar3 = (undefined4 *)operator_new(0x14);
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      if (puVar3 == (undefined4 *)0x0) {
        puVar3 = (undefined4 *)0x0;
      }
      else {
        uVar4 = FUN_009d3760((float)param_4,(float)param_5,(float)param_6,(float)param_7,0xe200b);
        FUN_009a8540(param_1_00);
        *puVar3 = wxGDIPlusBitmapData::vftable;
        puVar3[3] = uVar4;
        puVar3[4] = 0;
      }
      *param_1 = wxObject::vftable;
      param_1[1] = puVar3;
      if (puVar3 != (undefined4 *)0x0) {
        puVar3[1] = puVar3[1] + 1;
      }
      *param_1 = wxGraphicsBitmap::vftable;
      uStack_4 = 0xffffffff;
      FUN_008f7630();
      ExceptionList = local_c;
      return param_1;
    }
  }
  iVar2 = DAT_0323c310;
  param_1[1] = DAT_0323c310;
  *param_1 = wxObject::vftable;
  if (iVar2 != 0) {
    piVar1 = (int *)(iVar2 + 4);
    *piVar1 = *piVar1 + 1;
  }
  *param_1 = wxGraphicsBitmap::vftable;
  ExceptionList = local_c;
  return param_1;
}



float10 __fastcall FUN_009d9870(double *param_1)

{
  float10 fVar1;
  
  fVar1 = (float10)0;
  if ((NAN(fVar1) || NAN((float10)*param_1)) == (fVar1 == (float10)*param_1)) {
    if ((NAN(fVar1) || NAN((float10)param_1[1])) == (fVar1 == (float10)param_1[1])) {
      fVar1 = (float10)FUN_00a4d5da();
      fVar1 = (fVar1 * (float10)180.0) / (float10)3.141592653589793;
      if (fVar1 < (float10)0) {
        fVar1 = fVar1 + (float10)360.0;
      }
    }
    else if (fVar1 < (float10)*param_1 == (fVar1 == (float10)*param_1)) {
      return (float10)180.0;
    }
    return fVar1;
  }
  if (fVar1 < (float10)param_1[1] != (fVar1 == (float10)param_1[1])) {
    return (float10)90.0;
  }
  return (float10)270.0;
}



void __fastcall FUN_009d98e0(double *param_1)

{
  float10 fVar1;
  float10 fVar2;
  
  fVar1 = (float10)FUN_00a4d440();
  fVar2 = (float10)FUN_00a4d220();
  *param_1 = (double)(fVar2 * (float10)(double)fVar1);
  fVar2 = (float10)FUN_00a4d0f0();
  param_1[1] = (double)(fVar2 * (float10)(double)fVar1);
  return;
}



undefined ** FUN_009d9940(void)

{
  return &PTR_u_wxEnhMetaFile_0323d530;
}



undefined4 FUN_009d9950(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\enhmeta.cpp",0x4a,"wxEnhMetaFile::CreateGDIRefData",
                 "Assert failure",L"must be implemented if used");
  }
  return 0;
}



undefined4 FUN_009d9980(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\enhmeta.cpp",0x52,"wxEnhMetaFile::CloneGDIRefData",
                 "Assert failure",L"must be implemented if used");
  }
  return 0;
}



void __thiscall FUN_009d99b0(int param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = *(undefined4 *)(param_1_00 + 0x120);
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *(undefined4 *)(param_1_00 + 0x124);
  }
  return;
}



undefined ** FUN_009d99e0(void)

{
  return &PTR_u_wxEnhMetaFileDC_0323d548;
}



undefined4 * __thiscall FUN_009d99f0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxEnhMetaFileDCImpl::vftable;
  param_1_00[0x42] = 0;
  FUN_009504a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_009d9a20(int param_1)

{
  char cVar1;
  LPCWSTR lpName;
  HENHMETAFILE pHVar2;
  int iVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be88ec;
  local_c = ExceptionList;
  if (*(int *)(param_1 + 0x1c) == 0) {
    *(undefined4 *)(param_1 + 0x2c) = 0;
    return;
  }
  if (*(uint *)(param_1 + 0x20) < 8) {
    lpName = (LPCWSTR)(param_1 + 0xc);
  }
  else {
    lpName = *(LPCWSTR *)(param_1 + 0xc);
  }
  ExceptionList = &local_c;
  pHVar2 = GetEnhMetaFileW(lpName);
  *(HENHMETAFILE *)(param_1 + 0x2c) = pHVar2;
  if (pHVar2 == (HENHMETAFILE)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_0043c211();
      FUN_00432231();
      uStack_4._0_1_ = 4;
      FUN_008423d0();
      uStack_4._0_1_ = 5;
      GetLastError();
      FUN_0084d140();
      uStack_4._0_1_ = 6;
      FUN_00848860();
      uStack_4._0_1_ = 3;
      FUN_00842440();
      FUN_0040159c();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      FUN_0040159c();
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009d9c00(int param_1)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bcde30;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(HENHMETAFILE *)(param_1 + 0x2c) != (HENHMETAFILE)0x0) {
    BVar2 = DeleteEnhMetaFile(*(HENHMETAFILE *)(param_1 + 0x2c));
    if (BVar2 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  ExceptionList = local_c;
  return;
}



LONG * __thiscall FUN_009d9d10(int *param_1_00,LONG *param_1)

{
  int iVar1;
  code *pcVar2;
  LONG LVar3;
  char cVar4;
  UINT UVar5;
  tagENHMETAHEADER tStack_c8;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  LVar3 = DAT_03238d08;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8923;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = *param_1_00;
  *param_1 = DAT_03238d04;
  pcVar2 = *(code **)(iVar1 + 0x10);
  param_1[1] = LVar3;
  cVar4 = (*pcVar2)();
  if (cVar4 != '\0') {
    UVar5 = GetEnhMetaFileHeader((HENHMETAFILE)param_1_00[0xb],0x6c,&tStack_c8);
    if (UVar5 == 0) {
      FUN_0043c211(&DAT_00d25fa0);
      cVar4 = FUN_00846b30(6);
      if (cVar4 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
    else {
      FUN_0095def0();
      *param_1 = tStack_c8.rclFrame.right;
      param_1[1] = tStack_c8.rclFrame.bottom;
    }
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall
FUN_009d9e90(int param_1_00,HDC param_1,int param_2,int param_3,int param_4,int param_5)

{
  char cVar1;
  LPCWSTR lpFilename;
  HDC pHVar2;
  LPCWSTR lpDesc;
  RECT *lprc;
  RECT local_80 [7];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(int *)(param_1_00 + 0x120) = param_3;
  *(int *)(param_1_00 + 0x124) = param_4;
  if ((param_3 == 0) || (param_4 == 0)) {
    lprc = (RECT *)0x0;
  }
  else {
    local_80[0].right = param_3;
    local_80[0].bottom = param_4;
    local_80[0].left = 0;
    local_80[0].top = 0;
    FUN_0095dc90();
    lprc = local_80;
  }
  if (*(uint *)(param_5 + 0x18) < 8) {
    lpDesc = (LPCWSTR)(param_5 + 4);
  }
  else {
    lpDesc = *(LPCWSTR *)(param_5 + 4);
  }
  if (*(int *)(param_2 + 0x14) == 0) {
    lpFilename = (LPCWSTR)0x0;
  }
  else if (*(uint *)(param_2 + 0x18) < 8) {
    lpFilename = (LPCWSTR)(param_2 + 4);
  }
  else {
    lpFilename = *(LPCWSTR *)(param_2 + 4);
  }
  pHVar2 = CreateEnhMetaFileW(param_1,lpFilename,lprc,lpDesc);
  *(HDC *)(param_1_00 + 0x108) = pHVar2;
  if (pHVar2 == (HDC)0x0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_009da030(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd43a3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxEnhMetaFile::vftable;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[9] = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_009d9a20(uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_009da0c0(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6884;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x30);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = CONCAT31(local_4._1_3_,1);
    uVar3 = FUN_009da030(local_30);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar1);
    }
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined4 __thiscall FUN_009da170(int *param_1,int param_2,int *param_3)

{
  char cVar1;
  int iVar2;
  BOOL BVar3;
  int iStack_88;
  int iStack_84;
  RECT aRStack_80 [7];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be89a0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if ((cVar1 == '\0') || (param_2 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  else {
    if (param_3 == (int *)0x0) {
      FUN_009d9d10();
      aRStack_80[0].left = 0;
      aRStack_80[0].top = 0;
      aRStack_80[0].right = iStack_88;
    }
    else {
      aRStack_80[0].left = *param_3;
      aRStack_80[0].top = param_3[1];
      aRStack_80[0].right = param_3[2] + aRStack_80[0].left;
      iStack_84 = param_3[3] + aRStack_80[0].top;
    }
    aRStack_80[0].bottom = iStack_84;
    iVar2 = FUN_0048a085();
    if (iVar2 != 0) {
      BVar3 = PlayEnhMetaFile(*(HDC *)(iVar2 + 0x108),(HENHMETAFILE)param_1[0xb],aRStack_80);
      if (BVar3 != 0) {
        ExceptionList = local_c;
        return 1;
      }
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        uStack_4 = 0;
        FUN_008423d0();
        uStack_4._0_1_ = 1;
        GetLastError();
        FUN_00843700();
        GetLastError();
        FUN_00847d90();
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_00842440();
        uStack_4 = 0xffffffff;
        FUN_0081b5bc();
      }
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall
FUN_009da370(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be99f8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_0098fb70(param_1);
  local_4 = 0;
  *param_1_00 = wxEnhMetaFileDCImpl::vftable;
  uVar2 = FUN_0094f580(param_3,param_4,param_5,param_6,uVar1);
  FUN_009d9e90(uVar2,param_3,param_4,param_5,param_6);
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_009da3f0(int *param_1)

{
  char cVar1;
  HENHMETAFILE pHVar2;
  void *pvVar3;
  int iVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8a10;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x10))();
  if (cVar1 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  else {
    pHVar2 = CloseEnhMetaFile((HDC)param_1[0x42]);
    if (pHVar2 != (HENHMETAFILE)0x0) {
      pvVar3 = operator_new(0x30);
      uStack_4 = 2;
      if (pvVar3 == (void *)0x0) {
        iVar4 = 0;
      }
      else {
        FUN_004325b6();
        uStack_4 = CONCAT31(uStack_4._1_3_,3);
        iVar4 = FUN_009da030();
      }
      uStack_4 = 0xffffffff;
      if (pvVar3 != (void *)0x0) {
        FUN_0040159c();
      }
      FUN_009d9c00();
      *(HENHMETAFILE *)(iVar4 + 0x2c) = pHVar2;
      ExceptionList = local_c;
      return iVar4;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 * __thiscall
FUN_009da5d0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x128);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_009da370(param_1_00,param_1,param_2,param_3,param_4,param_5);
  }
  param_1_00[2] = uVar2;
  param_1_00[1] = 0;
  *param_1_00 = wxEnhMetaFileDC::vftable;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_009da660(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 8) != 0) {
    uVar1 = FUN_009da3f0();
    return uVar1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\enhmeta.cpp",0x16c,"wxEnhMetaFileDC::Close",&DAT_00d92ef4,
                 L"no wxEnhMetaFileDC implementation");
  }
  return 0;
}



void __fastcall FUN_009da6a0(int param_1)

{
  if (*(int *)(param_1 + 0x10) != 0) {
    RpcStringFreeW((RPC_WSTR *)(param_1 + 0x10));
  }
  if (*(int *)(param_1 + 0x14) != 0) {
    FUN_00a3f66c(*(int *)(param_1 + 0x14));
  }
  return;
}



void __fastcall FUN_009da6d0(undefined4 *param_1)

{
  undefined4 uVar1;
  
  if (param_1[5] == 0) {
    uVar1 = FUN_00823c23(200);
    param_1[5] = uVar1;
  }
  wsprintfW((LPWSTR)param_1[5],
            L"0x%8.8X,0x%4.4X,0x%4.4X,0x%2.2X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X"
            ,*param_1,(uint)*(ushort *)(param_1 + 1),(uint)*(ushort *)((int)param_1 + 6),
            (uint)*(byte *)(param_1 + 2),(uint)*(byte *)((int)param_1 + 9),
            (uint)*(byte *)((int)param_1 + 10),(uint)*(byte *)((int)param_1 + 0xb),
            (uint)*(byte *)(param_1 + 3),(uint)*(byte *)((int)param_1 + 0xd),
            (uint)*(byte *)((int)param_1 + 0xe),(uint)*(byte *)((int)param_1 + 0xf));
  return;
}



void __thiscall FUN_009da740(UUID *param_1_00,ulong *param_1)

{
  undefined2 uVar1;
  
  param_1_00->Data1 = *param_1;
  uVar1 = *(undefined2 *)((int)(param_1 + 1) + 2);
  param_1_00->Data2 = *(undefined2 *)(param_1 + 1);
  param_1_00->Data3 = uVar1;
  *(ulong *)param_1_00->Data4 = param_1[2];
  *(ulong *)(param_1_00->Data4 + 4) = param_1[3];
  UuidToStringW(param_1_00,(RPC_WSTR *)(param_1_00 + 1));
  FUN_009da6d0();
  return;
}



undefined4 __thiscall
FUN_009da780(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  (**(code **)(*param_1_00 + 0x45c))(param_1,param_2,param_3);
  return param_1;
}



void FUN_009da7a0(void)

{
  DAT_032ea170 = 0;
  return;
}



undefined4 FUN_009da7b0(int param_1)

{
  if ((DAT_032ea170 != -1) && (param_1 != DAT_032ea170)) {
    return 1;
  }
  return 0;
}



char ** __thiscall FUN_009da7d0(char **param_1_00,char *param_1)

{
  *param_1_00 = param_1;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1 != '\0')) {
    FUN_008402e0("..\\..\\src\\msw\\treectrl.cpp",0x73,"TempSetter::TempSetter","!m_var",
                 "variable shouldn\'t be already set");
  }
  **param_1_00 = '\x01';
  return param_1_00;
}



void __fastcall FUN_009da810(undefined4 *param_1)

{
  *(undefined *)*param_1 = 0;
  return;
}



void __thiscall FUN_009da820(uint *param_1_00,uint *param_1,uint param_2,uint param_3)

{
  param_1_00[1] = 0;
  param_1_00[2] = 0;
  param_1_00[4] = 0;
  param_1_00[5] = 0;
  param_1_00[6] = 0;
  param_1_00[7] = 0;
  param_1_00[8] = 0;
  param_1_00[9] = 0;
  *param_1_00 = param_2 | 0x10;
  param_1_00[3] = param_3;
  param_1_00[1] = *param_1;
  return;
}



int __thiscall FUN_009da860(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 4 + param_1 * 4);
  if (iVar1 == -1) {
    switch(param_1) {
    case 0:
      break;
    case 1:
    case 2:
switchD_009da873_caseD_1:
      return *(int *)(param_1_00 + 4);
    case 3:
      iVar1 = *(int *)(param_1_00 + 0xc);
      if ((iVar1 == -1) && (iVar1 = *(int *)(param_1_00 + 8), iVar1 == -1))
      goto switchD_009da873_caseD_1;
      break;
    default:
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x1cd,"wxTreeItemParam::GetImage",
                     "Assert failure",L"unsupported wxTreeItemIcon value");
      }
    }
  }
  return iVar1;
}



void __fastcall FUN_009da8e0(undefined4 *param_1)

{
  *param_1 = wxTreeTraversal::vftable;
  return;
}



undefined4 __fastcall FUN_009da8f0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x1a8);
}



void __thiscall FUN_009da970(int *param_1_00,undefined4 *param_1)

{
  uint uVar1;
  
  uVar1 = 0;
  if (param_1_00[1] != 0) {
    do {
      if (*(int *)(*param_1_00 + uVar1 * 4) != 0) {
        *param_1 = *(undefined4 *)(*param_1_00 + uVar1 * 4);
        param_1[1] = param_1_00;
        return;
      }
      uVar1 = uVar1 + 1;
    } while (uVar1 < (uint)param_1_00[1]);
  }
  *param_1 = 0;
  param_1[1] = param_1_00;
  return;
}



undefined4 * __thiscall FUN_009da9b0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be8a53;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxDragImage::vftable;
  FUN_009743d0(uVar1);
  param_1_00[6] = 0;
  param_1_00[7] = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  param_1_00[9] = 0;
  param_1_00[10] = 0;
  param_1_00[0xb] = 0;
  param_1_00[0xc] = 0;
  FUN_009eab10();
  FUN_009eb580(param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_009daa40(undefined4 param_1_00,byte param_1)

{
  FUN_009eaba0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009daa60(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxTreeItemParam::vftable;
  if ((undefined4 *)param_1_00[6] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1_00[6])(1);
  }
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_009daa90(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  char cVar2;
  char cVar3;
  int *piVar4;
  int unaff_EBX;
  int **ppiStack_14;
  int *local_4;
  
  uVar1 = param_1;
  ppiStack_14 = &local_4;
  local_4 = param_1_00;
  (**(code **)(*(int *)param_1_00[1] + 0x3dc))(&param_1,param_1);
  if (unaff_EBX != 0) {
    cVar2 = (char)local_4;
    do {
      if ((cVar2 != '\0') && (cVar3 = FUN_009daa90(&stack0xfffffff8,1), cVar3 == '\0')) {
        return 0;
      }
      cVar3 = (**(code **)(*param_1_00 + 4))(&stack0xfffffff8);
      if (cVar3 == '\0') {
        return 0;
      }
      piVar4 = (int *)(**(code **)(*(int *)param_1_00[1] + 0x3e0))
                                (&stack0xfffffff8,uVar1,&ppiStack_14);
    } while (*piVar4 != 0);
  }
  return 1;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void __fastcall FUN_009dab20(int param_1)

{
  *(undefined4 *)(param_1 + 0x1a8) = 0;
  *(undefined *)(param_1 + 0x1c0) = 0;
  *(undefined4 *)(param_1 + 0x1c4) = 0;
  *(undefined4 *)(param_1 + 0x1c8) = 0;
  *(undefined *)(param_1 + 0x1dc) = 0;
  *(undefined *)(param_1 + 0x1dd) = 1;
  *(undefined *)(param_1 + 0x1de) = 0;
  *(undefined *)(param_1 + 0x1df) = 0;
  *(undefined *)(param_1 + 0x1e0) = 0;
  _DAT_032ea160 = DAT_032e98e0;
  _DAT_032ea164 = DAT_032e98e4;
  _DAT_032ea168 = DAT_032e98d8;
  _DAT_032ea16c = DAT_032e98dc;
  return;
}



void __fastcall FUN_009dab90(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00be8a83;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 1;
  FUN_00921450(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = local_4 & 0xffffff00;
  param_1[5] = wxObject::vftable;
  FUN_0083e850();
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009dac70(int param_1_00,int param_1)

{
  LPARAM lParam;
  
  if ((*(char *)(param_1_00 + 0x19c) != '\0') && (*(int **)(param_1_00 + 0x194) != (int *)0x0)) {
    (**(code **)(**(int **)(param_1_00 + 0x194) + 4))(1);
  }
  *(int *)(param_1_00 + 0x194) = param_1;
  if (param_1 == 0) {
    lParam = 0;
  }
  else {
    lParam = *(LPARAM *)(param_1 + 8);
  }
  SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1109,0,lParam);
  *(undefined *)(param_1_00 + 0x19c) = 0;
  return;
}



void __thiscall FUN_009dacd0(int param_1_00,int param_1)

{
  LPARAM lParam;
  
  if ((*(char *)(param_1_00 + 0x19d) != '\0') && (*(int **)(param_1_00 + 0x198) != (int *)0x0)) {
    (**(code **)(**(int **)(param_1_00 + 0x198) + 4))(1);
  }
  *(int *)(param_1_00 + 0x198) = param_1;
  if (param_1 == 0) {
    lParam = 0;
  }
  else {
    lParam = *(LPARAM *)(param_1 + 8);
  }
  SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1109,2,lParam);
  *(undefined *)(param_1_00 + 0x19d) = 0;
  return;
}



undefined4 __thiscall FUN_009dadb0(int param_1_00,int *param_1)

{
  if ((*param_1 == -0x10000) && ((*(uint *)(param_1_00 + 0xe0) >> 0xb & 1) != 0)) {
    return 1;
  }
  return 0;
}



void __thiscall FUN_009dade0(int *param_1_00,int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0xa8) != 0) {
    uVar1 = (**(code **)(*param_1_00 + 0x374))(param_1 + 0xa8);
    *(undefined4 *)(param_1 + 0x58) = uVar1;
  }
  FUN_0091c170(param_1);
  return;
}



void __thiscall FUN_009dae20(int *param_1_00,int *param_1)

{
  char cVar1;
  undefined4 *puStack_1c;
  undefined4 uStack_18;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  if (*param_1 != -0x10000) {
    uStack_18 = 0;
    local_10 = 0;
    local_c = 0;
    local_8 = 0;
    local_4 = 0;
    puStack_1c = &local_10;
    cVar1 = (**(code **)(*param_1_00 + 0x448))(param_1);
    if (cVar1 != '\0') {
      (**(code **)(*param_1_00 + 0x15c))(1,&puStack_1c);
    }
  }
  return;
}



void __thiscall FUN_009db090(int *param_1_00,undefined4 *param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  int *local_8;
  int iStack_4;
  
  piVar3 = param_2;
  if (*param_2 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x55c,"wxTreeCtrl::GetLastChild","item.IsOk()");
    }
    *param_1 = 0;
    return;
  }
  (**(code **)(*param_1_00 + 0x3dc))(&param_2,param_2,&local_8);
  iVar1 = 0;
  iVar2 = iStack_4;
  while (iVar2 != 0) {
    iStack_4 = iVar2;
    piVar4 = (int *)(**(code **)(*param_1_00 + 0x3e0))(&stack0xfffffff0,piVar3,&stack0xffffffec);
    iVar1 = iVar2;
    iVar2 = *piVar4;
  }
  *local_8 = iVar1;
  return;
}



undefined4 * __thiscall
FUN_009db400(int *param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 local_8;
  undefined4 local_4;
  
  if (((uint)param_1_00[0x38] >> 0xb & 1) == 0) {
    local_8 = 0;
    local_4 = 0;
    (**(code **)(*param_1_00 + 0x458))(param_1,&local_4,&local_8,param_2,param_3,param_4,param_5);
    return param_1;
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1_00[0x72] != 0)) {
    FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x606,"wxTreeCtrl::AddRoot","!m_pVirtualRoot",
                 L"tree can have only a single root");
  }
  puVar1 = (undefined4 *)operator_new(0x1c);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = wxTreeItemParam::vftable;
    puVar1[5] = 0;
    puVar1[6] = 0;
    puVar1[1] = 0xffffffff;
    puVar1[2] = 0xffffffff;
    puVar1[3] = 0xffffffff;
    puVar1[4] = 0xffffffff;
  }
  puVar1[6] = param_5;
  puVar2 = (undefined4 *)operator_new(0x2c);
  if (puVar2 != (undefined4 *)0x0) {
    puVar2[2] = 0;
    puVar2[4] = 0;
    puVar2[5] = 0;
    puVar2[6] = 0;
    puVar2[7] = 0;
    puVar2[8] = 0;
    puVar2[9] = 0;
    puVar2[3] = 0;
    puVar2[10] = puVar1;
    *puVar2 = 0x10;
    puVar2[1] = 0xffff0000;
    param_1_00[0x72] = (int)puVar2;
    *param_1 = 0xffff0000;
    return param_1;
  }
  param_1_00[0x72] = 0;
  *param_1 = 0xffff0000;
  return param_1;
}



undefined4 __thiscall
FUN_009db530(int *param_1_00,undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  undefined4 uVar1;
  int *piVar2;
  int iVar3;
  int local_8;
  undefined auStack_4 [4];
  
  iVar3 = param_3;
  uVar1 = param_2;
  local_8 = 0;
  if (param_3 == -1) {
    local_8 = -0xfffe;
  }
  else {
    (**(code **)(*param_1_00 + 0x3dc))(&param_3,param_2,&param_2);
    if (iVar3 != 0) {
      do {
        if (param_3 == 0) break;
        iVar3 = iVar3 + -1;
        local_8 = param_3;
        piVar2 = (int *)(**(code **)(*param_1_00 + 0x3e0))(auStack_4,uVar1,&param_2);
        param_3 = *piVar2;
      } while (iVar3 != 0);
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar3 != 0)) {
      FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x62f,"wxTreeCtrl::DoInsertItem","index == 0",
                   L"bad index in wxTreeCtrl::InsertItem");
    }
  }
  (**(code **)(*param_1_00 + 0x458))(param_1,uVar1,&local_8,param_4,param_5,param_6,param_7);
  return param_1;
}



void __thiscall FUN_009db610(int *param_1_00,undefined4 param_1)

{
  uint uVar1;
  int *piVar2;
  int unaff_ESI;
  uint uVar3;
  uint local_20;
  int local_1c;
  void *local_18;
  undefined uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be8ab0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  DAT_032ea170 = 0xffffffff;
  local_4 = 0;
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xffffffd0);
  local_4 = CONCAT31(local_4._1_3_,1);
  (**(code **)(*param_1_00 + 0x3dc))(&local_20,param_1,&local_1c);
  if (unaff_ESI != 0) {
    do {
      FUN_0086a400(unaff_ESI,1);
      piVar2 = (int *)(**(code **)(*param_1_00 + 0x3e0))(&puStack_8,param_1,&stack0xffffffd8);
      unaff_ESI = *piVar2;
    } while (unaff_ESI != 0);
  }
  uVar1 = local_20;
  uVar3 = 0;
  if (local_20 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_20 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      puStack_8 = *(undefined **)(local_1c + uVar3 * 4);
      (**(code **)(*param_1_00 + 0x400))(&puStack_8);
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar1);
  }
  uStack_10 = 0;
  FUN_0086aa30();
  DAT_032ea170 = 0;
  ExceptionList = local_18;
  return;
}



void __fastcall FUN_009db7a0(int param_1)

{
  BOOL BVar1;
  
  if (*(int *)(param_1 + 0x1a8) != 0) {
    BVar1 = IsWindow(*(HWND *)(*(int *)(param_1 + 0x1a8) + 0x13c));
    if (BVar1 == 0) {
      *(undefined4 *)(*(int *)(param_1 + 0x1a8) + 0x13c) = 0;
    }
    FUN_00914170();
    *(undefined4 *)(*(int *)(param_1 + 0x1a8) + 0x13c) = 0;
    if (*(int **)(param_1 + 0x1a8) != (int *)0x0) {
      (**(code **)(**(int **)(param_1 + 0x1a8) + 4))(1);
      *(undefined4 *)(param_1 + 0x1a8) = 0;
    }
    *(undefined4 *)(param_1 + 0x1ac) = 0;
  }
  return;
}



void __thiscall FUN_009db8f0(int param_1_00,byte param_1)

{
  SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1116,(uint)param_1,0);
  FUN_009db7a0();
  return;
}



void __thiscall FUN_009db920(int param_1_00,undefined4 *param_1,undefined4 *param_2,uint *param_4)

{
  undefined4 local_10;
  undefined4 local_c;
  uint uStack_8;
  undefined4 uStack_4;
  
  local_10 = *param_2;
  local_c = param_2[1];
  SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1111,0,(LPARAM)&local_10);
  *param_4 = 0;
  if ((uStack_8 & 0x100) != 0) {
    *param_4 = 1;
  }
  if ((uStack_8 & 0x200) != 0) {
    *param_4 = *param_4 | 2;
  }
  if ((uStack_8 & 1) != 0) {
    *param_4 = *param_4 | 4;
  }
  if ((uStack_8 & 0x10) != 0) {
    *param_4 = *param_4 | 8;
  }
  if ((uStack_8 & 2) != 0) {
    *param_4 = *param_4 | 0x10;
  }
  if ((uStack_8 & 8) != 0) {
    *param_4 = *param_4 | 0x20;
  }
  if ((uStack_8 & 4) != 0) {
    *param_4 = *param_4 | 0x40;
  }
  if ((uStack_8 & 0x20) != 0) {
    *param_4 = *param_4 | 0x80;
  }
  if ((uStack_8 & 0x40) != 0) {
    *param_4 = *param_4 | 0x100;
  }
  if ((uStack_8 & 0x800) != 0) {
    *param_4 = *param_4 | 0x200;
  }
  if ((uStack_8 & 0x400) != 0) {
    *param_4 = *param_4 | 0x400;
    *param_1 = uStack_4;
    return;
  }
  *param_1 = uStack_4;
  return;
}



void __thiscall FUN_009dba90(undefined4 *param_1_00,LPARAM *param_1)

{
  undefined **ppuVar1;
  LPARAM LStack_c;
  undefined *puStack_8;
  undefined4 *puStack_4;
  
  if (*param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x864,"wxTreeCtrl::SortChildren","item.IsOk()",
                   L"invalid tree item");
    }
    return;
  }
  ppuVar1 = (undefined **)(**(code **)*param_1_00)();
  if (ppuVar1 == &PTR_u_wxTreeCtrl_0323c53c) {
    SendMessageW((HWND)param_1_00[0x4f],0x1113,0,*param_1);
    return;
  }
  LStack_c = *param_1;
  puStack_8 = &LAB_009da900;
  puStack_4 = param_1_00;
  SendMessageW((HWND)param_1_00[0x4f],0x1115,0,(LPARAM)&LStack_c);
  return;
}



bool __thiscall FUN_009dbb30(int param_1_00,uint param_1)

{
  uint uVar1;
  
  uVar1 = 0x46;
  if ((*(uint *)(param_1_00 + 0xe0) >> 0xd & 1) != 0) {
    uVar1 = 0x6e;
  }
  return (uVar1 & param_1) != 0;
}



undefined4 __thiscall FUN_009dbb60(int param_1_00,int param_1,int param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  if (param_1 == 0x102) {
    if ((param_2 == 0x20) || (param_2 == 0xd)) {
      return 0;
    }
  }
  else if (((param_1 == 0x100) && (param_2 == 0x1b)) && (*(int *)(param_1_00 + 0x1c4) != 0)) {
    FUN_009eb660();
    FUN_00938b80(param_1_00 + 0x1c4);
    SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x110b,8,0);
  }
  uVar1 = FUN_00913420(param_1,param_2,param_3);
  return uVar1;
}



int __fastcall FUN_009dbbe0(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00453f4b(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  FUN_00453f4b();
  *(undefined4 *)(param_1 + 0x2c) = 0;
  *(undefined ***)(param_1 + 0x28) = wxFont::vftable;
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_009dbc40(int *param_1_00,int param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  if (*(int *)(param_1 + 0xa8) != 0) {
    uVar2 = (**(code **)(*param_1_00 + 0x374))(param_1 + 0xa8);
    *(undefined4 *)(param_1 + 0x58) = uVar2;
  }
  cVar1 = FUN_0091c170(param_1);
  if ((cVar1 != '\0') && (*(char *)(param_1 + 0x5c) == '\0')) {
    return 0;
  }
  return 1;
}



undefined4 __thiscall FUN_009dbc90(int param_1_00,undefined4 param_1,uint *param_2)

{
  uint uVar1;
  int *piVar2;
  
  uVar1 = *param_2;
  if (uVar1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x45f,"wxTreeCtrl::GetItemTextColour",
                   "item.IsOk()",L"invalid tree item");
    }
    FUN_00458700(&PTR_vftable_03238cd0);
    return param_1;
  }
  piVar2 = *(int **)(*(int *)(param_1_00 + 0x1b0) + (uVar1 % *(uint *)(param_1_00 + 0x1b4)) * 4);
  if (piVar2 != (int *)0x0) {
    while (piVar2[1] != uVar1) {
      piVar2 = (int *)*piVar2;
      if (piVar2 == (int *)0x0) {
        FUN_00458700(&PTR_vftable_03238cd0);
        return param_1;
      }
    }
    if (piVar2 != (int *)0x0) {
      FUN_00458700(piVar2[2]);
      return param_1;
    }
  }
  FUN_00458700(&PTR_vftable_03238cd0);
  return param_1;
}



undefined4 __thiscall FUN_009dbd60(int param_1_00,undefined4 param_1,uint *param_2)

{
  uint uVar1;
  int *piVar2;
  
  uVar1 = *param_2;
  if (uVar1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x467,"wxTreeCtrl::GetItemBackgroundColour",
                   "item.IsOk()",L"invalid tree item");
    }
    FUN_00458700(&PTR_vftable_03238cd0);
    return param_1;
  }
  piVar2 = *(int **)(*(int *)(param_1_00 + 0x1b0) + (uVar1 % *(uint *)(param_1_00 + 0x1b4)) * 4);
  if (piVar2 != (int *)0x0) {
    while (piVar2[1] != uVar1) {
      piVar2 = (int *)*piVar2;
      if (piVar2 == (int *)0x0) {
        FUN_00458700(&PTR_vftable_03238cd0);
        return param_1;
      }
    }
    if (piVar2 != (int *)0x0) {
      FUN_00458700(piVar2[2] + 0x14);
      return param_1;
    }
  }
  FUN_00458700(&PTR_vftable_03238cd0);
  return param_1;
}



void __thiscall FUN_009dbe30(int param_1_00,undefined4 *param_1,uint *param_2)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  
  iVar2 = DAT_03238ce8;
  uVar1 = *param_2;
  if (uVar1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x46f,"wxTreeCtrl::GetItemFont","item.IsOk()",
                   L"invalid tree item");
    }
    iVar2 = DAT_03238ce8;
    param_1[1] = DAT_03238ce8;
  }
  else {
    piVar3 = *(int **)(*(int *)(param_1_00 + 0x1b0) + (uVar1 % *(uint *)(param_1_00 + 0x1b4)) * 4);
    if (piVar3 == (int *)0x0) {
LAB_009dbe80:
      param_1[1] = DAT_03238ce8;
    }
    else {
      do {
        if (piVar3[1] == uVar1) {
          if (piVar3 == (int *)0x0) goto LAB_009dbe80;
          iVar2 = *(int *)(piVar3[2] + 0x2c);
          param_1[1] = iVar2;
          goto LAB_009dbedc;
        }
        piVar3 = (int *)*piVar3;
      } while (piVar3 != (int *)0x0);
      param_1[1] = DAT_03238ce8;
    }
  }
LAB_009dbedc:
  *param_1 = wxObject::vftable;
  if (iVar2 != 0) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  *param_1 = wxFont::vftable;
  return;
}



undefined4 * __thiscall FUN_009dbfa0(int *param_1_00,uint *param_1)

{
  undefined4 *puVar1;
  uint local_8;
  undefined4 local_4;
  
  local_8 = *param_1;
  local_4 = 0;
  for (puVar1 = *(undefined4 **)(*param_1_00 + (local_8 % (uint)param_1_00[1]) * 4);
      puVar1 != (undefined4 *)0x0; puVar1 = (undefined4 *)*puVar1) {
    if (puVar1[1] == local_8) goto LAB_009dbfdc;
  }
  puVar1 = (undefined4 *)FUN_00911610(&local_8,local_8 % (uint)param_1_00[1]);
LAB_009dbfdc:
  return puVar1 + 2;
}



int * __thiscall FUN_009dbff0(int *param_1_00,int *param_1,int param_2)

{
  int *piVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  piVar1 = param_1;
  puStack_8 = &LAB_00be8ad8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1_00[1] = (int)param_1;
  *param_1_00 = (int)TraverseSelections::vftable;
  param_1_00[2] = param_2;
  *(undefined4 *)(param_2 + 4) = 0;
  local_4 = 0;
  iVar4 = (**(code **)(*param_1 + 0x358))(uVar3);
  if (iVar4 != 0) {
    uVar5 = (**(code **)(*piVar1 + 0x3c0))(&param_1);
    cVar2 = (**(code **)(*param_1_00 + 4))(uVar5);
    if (cVar2 != '\0') {
      FUN_009daa90(uVar5,1);
    }
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_009dc090(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxTreeTraversal::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_009dc0b0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_4)

{
  char cVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be8ad8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = param_1;
  local_4 = 0;
  *param_1_00 = TraverseCounter::vftable;
  param_1_00[2] = 0;
  cVar1 = FUN_009dc130(param_2);
  if (cVar1 != '\0') {
    FUN_009daa90(param_2,param_4);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009dc130(int param_1)

{
  *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + 1;
  return;
}



int FUN_009dc140(int param_1,undefined4 param_2)

{
  int iVar1;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00be8b21;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00937490(param_1,param_2,DAT_0323f878 ^ (uint)&stack0xffffffe0);
  local_4 = 0;
  iVar1 = FUN_008ff580(local_14);
  local_4 = 1;
  if (param_1 != iVar1) {
    FUN_0083ea60(iVar1);
  }
  local_4 = local_4 & 0xffffff00;
  FUN_00921450();
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_009dc230(int param_1_00,uint *param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  int *piVar4;
  int iVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8b4b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = *param_1;
  iVar5 = 0;
  if (uVar1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x478,"wxTreeCtrl::SetItemTextColour",
                   "item.IsOk()",L"invalid tree item",DAT_0323f878 ^ (uint)&stack0xffffffe4);
    }
  }
  else {
    for (puVar2 = *(undefined4 **)
                   (*(int *)(param_1_00 + 0x1b0) + (uVar1 % *(uint *)(param_1_00 + 0x1b4)) * 4);
        puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)*puVar2) {
      if (puVar2[1] == uVar1) {
        if (puVar2 != (undefined4 *)0x0) {
          iVar5 = puVar2[2];
          goto LAB_009dc2ce;
        }
        break;
      }
    }
    *(undefined *)(param_1_00 + 0x1c0) = 1;
    pvVar3 = operator_new(0x30);
    local_4 = 0;
    if (pvVar3 != (void *)0x0) {
      iVar5 = FUN_009dbbe0();
    }
    local_4 = 0xffffffff;
    piVar4 = (int *)FUN_009dbfa0(param_1);
    *piVar4 = iVar5;
LAB_009dc2ce:
    if (iVar5 != param_2) {
      FUN_0083ea60(param_2);
    }
    *(undefined4 *)(iVar5 + 8) = *(undefined4 *)(param_2 + 8);
    *(undefined *)(iVar5 + 0xc) = *(undefined *)(param_2 + 0xc);
    *(undefined *)(iVar5 + 0xd) = *(undefined *)(param_2 + 0xd);
    *(undefined *)(iVar5 + 0xe) = *(undefined *)(param_2 + 0xe);
    *(undefined *)(iVar5 + 0xf) = *(undefined *)(param_2 + 0xf);
    *(undefined *)(iVar5 + 0x10) = *(undefined *)(param_2 + 0x10);
    FUN_009dae20(param_1);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009dc350(int param_1_00,uint *param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  int *piVar4;
  int iVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8b4b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = *param_1;
  iVar5 = 0;
  if (uVar1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x490,"wxTreeCtrl::SetItemBackgroundColour",
                   "item.IsOk()",L"invalid tree item",DAT_0323f878 ^ (uint)&stack0xffffffe4);
    }
  }
  else {
    for (puVar2 = *(undefined4 **)
                   (*(int *)(param_1_00 + 0x1b0) + (uVar1 % *(uint *)(param_1_00 + 0x1b4)) * 4);
        puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)*puVar2) {
      if (puVar2[1] == uVar1) {
        if (puVar2 != (undefined4 *)0x0) {
          iVar5 = puVar2[2];
          goto LAB_009dc3ee;
        }
        break;
      }
    }
    *(undefined *)(param_1_00 + 0x1c0) = 1;
    pvVar3 = operator_new(0x30);
    local_4 = 0;
    if (pvVar3 != (void *)0x0) {
      iVar5 = FUN_009dbbe0();
    }
    local_4 = 0xffffffff;
    piVar4 = (int *)FUN_009dbfa0(param_1);
    *piVar4 = iVar5;
LAB_009dc3ee:
    if (iVar5 + 0x14 != param_2) {
      FUN_0083ea60(param_2);
    }
    *(undefined4 *)(iVar5 + 0x1c) = *(undefined4 *)(param_2 + 8);
    *(undefined *)(iVar5 + 0x20) = *(undefined *)(param_2 + 0xc);
    *(undefined *)(iVar5 + 0x21) = *(undefined *)(param_2 + 0xd);
    *(undefined *)(iVar5 + 0x22) = *(undefined *)(param_2 + 0xe);
    *(undefined *)(iVar5 + 0x23) = *(undefined *)(param_2 + 0xf);
    *(undefined *)(iVar5 + 0x24) = *(undefined *)(param_2 + 0x10);
    FUN_009dae20(param_1);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009dc4a0(int *param_1_00,uint *param_1,int param_2)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  int *piVar4;
  undefined4 uVar5;
  int iVar6;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8b83;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = *param_1;
  iVar6 = 0;
  if (uVar1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x4a7,"wxTreeCtrl::SetItemFont","item.IsOk()",
                   L"invalid tree item",DAT_0323f878 ^ (uint)&stack0xffffffc0);
    }
  }
  else {
    for (puVar2 = *(undefined4 **)(param_1_00[0x6c] + (uVar1 % (uint)param_1_00[0x6d]) * 4);
        puVar2 != (undefined4 *)0x0; puVar2 = (undefined4 *)*puVar2) {
      if (puVar2[1] == uVar1) {
        if (puVar2 != (undefined4 *)0x0) {
          iVar6 = puVar2[2];
          goto LAB_009dc53e;
        }
        break;
      }
    }
    *(undefined *)(param_1_00 + 0x70) = 1;
    pvVar3 = operator_new(0x30);
    local_4 = 0;
    if (pvVar3 != (void *)0x0) {
      iVar6 = FUN_009dbbe0();
    }
    local_4 = 0xffffffff;
    piVar4 = (int *)FUN_009dbfa0(param_1);
    *piVar4 = iVar6;
LAB_009dc53e:
    if (iVar6 + 0x28 != param_2) {
      FUN_0083ea60(param_2);
    }
    uVar5 = (**(code **)(*param_1_00 + 0x36c))(local_30,param_1);
    local_c = (void *)0x1;
    (**(code **)(*param_1_00 + 900))(param_1,uVar5);
    local_4 = 0xffffffff;
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    uStack_18 = 7;
    uStack_1c = 0;
    uStack_2c = uStack_2c & 0xffff0000;
    FUN_009dae20(param_1);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009dc600(int *param_1)

{
  char cVar1;
  LRESULT LVar2;
  undefined4 uStack_1d8;
  undefined4 uStack_1d4;
  undefined auStack_1d0 [172];
  LRESULT LStack_124;
  undefined auStack_f0 [172];
  LRESULT LStack_44;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be9066;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&uStack_1d8;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (((uint)param_1[0x38] >> 5 & 1) != 0)) {
    FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x6ea,"wxTreeCtrl::Unselect",
                 "!HasFlag(wxTR_MULTIPLE)",L"doesn\'t make sense, may be you want UnselectAll()?",
                 DAT_0323f878 ^ (uint)&stack0xfffffe1c);
  }
  LVar2 = SendMessageW((HWND)param_1[0x4f],0x110a,9,0);
  if (LVar2 != 0) {
    if (((uint)param_1[0x38] >> 5 & 1) == 0) {
      (**(code **)(*param_1 + 0x3d0))();
    }
    else {
      uStack_1d4 = 0;
      FUN_009b32e0(DAT_032e98ec,param_1,&uStack_1d4);
      uStack_4 = 0;
      LStack_44 = LVar2;
      cVar1 = FUN_009dbc40(auStack_f0);
      if (cVar1 != '\0') {
        (**(code **)(*param_1 + 0x3d0))();
        uStack_1d8 = 0;
        FUN_009b32e0(DAT_032e98e8,param_1,&uStack_1d8);
        uStack_4._0_1_ = 1;
        LStack_124 = LVar2;
        FUN_009dade0(auStack_1d0);
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_009b33c0();
      }
      uStack_4 = 0xffffffff;
      FUN_009b33c0();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009dc780(int *param_1_00,int param_1,undefined4 param_2)

{
  SHORT SVar1;
  uint uVar2;
  undefined4 uVar3;
  LRESULT LVar4;
  undefined auStack_224 [3];
  undefined uStack_221;
  LRESULT LStack_220;
  undefined4 local_21c;
  undefined **local_218 [18];
  undefined local_1d0 [88];
  undefined4 uStack_178;
  int local_128 [14];
  undefined auStack_f0 [224];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8bc1;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_224;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffdcc;
  ExceptionList = &local_c;
  local_21c = 0;
  FUN_009b32e0(DAT_032e98f0,param_1_00,&local_21c);
  local_4 = 0;
  uVar3 = FUN_00912ad0(local_218,DAT_032bfe70,param_1,param_2);
  local_4._0_1_ = 1;
  FUN_009b3180(uVar3);
  local_4 = (uint)local_4._1_3_ << 8;
  local_218[0] = wxObject::vftable;
  FUN_0083e850(uVar2);
  if (local_128[0] != 0) {
    uStack_178 = (**(code **)(*param_1_00 + 0x374))(local_128);
  }
  uStack_221 = FUN_0091c170(local_1d0);
  SVar1 = GetKeyState(0x11);
  if (-1 < SVar1) {
    SVar1 = GetKeyState(0x10);
    if (-1 < SVar1) {
      SVar1 = GetKeyState(0x12);
      if ((-1 < SVar1) && ((param_1 == 0x20 || (param_1 == 0xd)))) {
        LVar4 = SendMessageW((HWND)param_1_00[0x4f],0x110a,9,0);
        if (LVar4 != 0) {
          LStack_220 = LVar4;
          FUN_009b32e0(DAT_032e98f4,param_1_00,&LStack_220);
          local_4._0_1_ = 2;
          FUN_009dade0(auStack_f0);
          local_4 = (uint)local_4._1_3_ << 8;
          FUN_009b33c0();
        }
      }
    }
  }
  local_4 = 0xffffffff;
  FUN_009b33c0();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall
FUN_009dc930(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,uint param_5,undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  uint uVar6;
  undefined auStack_44 [4];
  undefined4 uStack_40;
  uint uStack_2c;
  void *pvStack_28;
  undefined auStack_24 [4];
  undefined **ppuStack_20;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8c08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009dab20(DAT_0323f878 ^ (uint)&stack0xffffffac);
  uVar2 = param_5;
  if ((param_5 & 0x1f200000) == 0) {
    uVar2 = param_5 | 0x8000000;
  }
  cVar1 = FUN_00937250(param_1,param_2,param_3,param_4,uVar2,param_6,param_7);
  if (cVar1 != '\0') {
    param_5 = 0;
    uVar3 = (**(code **)(*param_1_00 + 0x2c8))(param_1_00[0x38],&param_5);
    uVar2 = param_1_00[0x38];
    uVar6 = uVar3 | 0x10020;
    if ((uVar2 & 4) == 0) {
      uVar6 = uVar3 | 0x10022;
    }
    if ((uVar2 & 1) != 0) {
      uVar6 = uVar6 | 1;
    }
    if ((uVar2 & 0x200) != 0) {
      uVar6 = uVar6 | 8;
    }
    if ((uVar2 & 8) != 0) {
      uVar6 = uVar6 | 4;
    }
    if (((uVar2 & 0x2000) != 0) && (iVar4 = FUN_008fc6f0(), 0x1d6 < iVar4)) {
      uVar6 = uVar6 | 0x1000;
    }
    FUN_004325b6(PTR_DAT_03236318);
    uStack_4 = 0;
    cVar1 = FUN_00936b00(L"SysTreeView32",uVar6 | 0x800,param_3,param_4,auStack_44,0xffffffff);
    uStack_4 = 0xffffffff;
    _free(pvStack_28);
    if (7 < uStack_2c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_40);
    }
    if (cVar1 != '\0') {
      uVar5 = FUN_008ff080(auStack_44,5);
      uStack_4 = 1;
      (**(code **)(*param_1_00 + 0x17c))(uVar5);
      puStack_8 = (undefined *)0xffffffff;
      FUN_0083e850();
      uVar5 = FUN_0091df90(auStack_24);
      puStack_8 = (undefined *)0x2;
      (**(code **)(*param_1_00 + 0x180))(uVar5);
      uStack_4 = 0xffffffff;
      ppuStack_20 = wxObject::vftable;
      FUN_0083e850();
      SendMessageW((HWND)param_1_00[0x4f],0x2005,1,0);
      if ((((*(byte *)(param_1_00 + 0x38) & 0x10) != 0) && (iVar4 = FUN_00894b40(), 0x5ff < iVar4))
         && (iVar4 = FUN_0090d640(), iVar4 != 0)) {
        (**(code **)(iVar4 + 0x6c))(param_1_00[0x4f],L"EXPLORER",0);
      }
      ExceptionList = local_c;
      return 1;
    }
  }
  ExceptionList = local_c;
  return 0;
}



uint __thiscall FUN_009dcb40(HWND param_1_00,undefined4 param_1)

{
  char cVar1;
  LRESULT LVar2;
  undefined4 local_84;
  undefined4 local_80;
  uint uStack_7c;
  undefined4 local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be8c4e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_84 = 0x18;
  local_78 = 2;
  local_80 = param_1;
  DAT_032ea170 = param_1;
  local_4 = 0;
  LVar2 = SendMessageW(param_1_00,0x113e,0,(LPARAM)&local_84);
  if (LVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4._0_1_ = 1;
      FUN_008423d0();
      local_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4._0_1_ = 1;
      FUN_00842440();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0081b5bc();
    }
  }
  DAT_032ea170 = 0;
  ExceptionList = local_c;
  return CONCAT31((uint3)(uStack_7c >> 9),(char)(uStack_7c >> 1)) & 0xffffff01;
}



undefined4 __thiscall FUN_009dcc90(char param_1_00,HWND param_1,undefined4 param_2)

{
  char cVar1;
  LRESULT LVar2;
  undefined4 uVar3;
  undefined4 local_84;
  undefined4 local_80;
  uint local_7c;
  undefined4 local_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be8c4e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_7c = -(uint)(param_1_00 != '\0') & 2;
  local_84 = 0x18;
  local_78 = 2;
  local_80 = param_2;
  DAT_032ea170 = param_2;
  local_4 = 0;
  LVar2 = SendMessageW(param_1,0x113f,0,(LPARAM)&local_84);
  if (LVar2 == -1) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4._0_1_ = 1;
      FUN_008423d0();
      local_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4._0_1_ = 1;
      FUN_00842440();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0081b5bc();
    }
    uVar3 = 0;
  }
  else {
    uVar3 = 1;
  }
  DAT_032ea170 = 0;
  ExceptionList = local_c;
  return uVar3;
}



undefined FUN_009dce00(int param_1,int param_2,byte param_3)

{
  char cVar1;
  int lParam;
  HWND unaff_EDI;
  bool bVar2;
  undefined local_2;
  
  local_2 = 0;
  bVar2 = true;
  lParam = SendMessageW(unaff_EDI,0x110a,0,0);
  while ((lParam != 0 && (bVar2))) {
    if ((lParam == param_1) || (lParam == param_2)) {
      cVar1 = FUN_009dcb40(lParam);
      if (cVar1 == '\0') {
        if ((param_3 & 1) == 0) {
          FUN_009dcc90();
        }
        local_2 = 1;
      }
      bVar2 = false;
    }
    else if (((param_3 & 2) != 0) && (cVar1 = FUN_009dcb40(lParam), cVar1 != '\0')) {
      if ((param_3 & 1) == 0) {
        FUN_009dcc90();
      }
      local_2 = 1;
    }
    lParam = SendMessageW(unaff_EDI,0x110a,6,lParam);
  }
  bVar2 = param_1 != param_2;
  while ((lParam != 0 && (bVar2))) {
    cVar1 = FUN_009dcb40(lParam);
    if (cVar1 == '\0') {
      if ((param_3 & 1) == 0) {
        FUN_009dcc90();
      }
      local_2 = 1;
    }
    if ((lParam == param_1) || (lParam == param_2)) {
      bVar2 = false;
    }
    else {
      bVar2 = true;
    }
    lParam = SendMessageW(unaff_EDI,0x110a,6,lParam);
  }
  if ((param_3 & 2) != 0) {
    for (; lParam != 0; lParam = SendMessageW(unaff_EDI,0x110a,6,lParam)) {
      cVar1 = FUN_009dcb40(lParam);
      if (cVar1 != '\0') {
        if ((param_3 & 1) == 0) {
          FUN_009dcc90();
        }
        local_2 = 1;
      }
    }
  }
  if ((param_3 & 1) == 0) {
    UpdateWindow(unaff_EDI);
  }
  return local_2;
}



undefined4 FUN_009dcf70(void)

{
  char cVar1;
  char cVar2;
  int in_EAX;
  LRESULT LVar3;
  HWND unaff_ESI;
  
  LVar3 = SendMessageW(unaff_ESI,0x110a,9,0);
  if (in_EAX == LVar3) {
    return 0;
  }
  if (in_EAX == 0) {
    cVar1 = FUN_009dcb40(LVar3);
    SendMessageW(unaff_ESI,0x110b,9,0);
    if (cVar1 != '\0') {
      FUN_009dcc90();
    }
  }
  else {
    cVar1 = FUN_009dcb40();
    if (LVar3 != 0) {
      cVar2 = FUN_009dcb40(LVar3);
      if (cVar2 != '\0') {
        SendMessageW(unaff_ESI,0x110b,9,0);
        FUN_009dcc90();
      }
    }
    SendMessageW(unaff_ESI,0x110b,9,in_EAX);
    if (cVar1 == '\0') {
      FUN_009dcc90();
      return 1;
    }
  }
  return 1;
}



undefined4 __fastcall FUN_009dd030(int param_1)

{
  int *piVar1;
  char cVar2;
  int *piVar3;
  int *unaff_retaddr;
  int local_4;
  
  piVar1 = *(int **)(param_1 + 4);
  local_4 = param_1;
  piVar3 = (int *)(**(code **)(*piVar1 + 0x3c0))(&local_4);
  if ((*piVar3 != *unaff_retaddr) || (((uint)piVar1[0x38] >> 0xb & 1) == 0)) {
    cVar2 = FUN_009dcb40(*unaff_retaddr);
    if (cVar2 != '\0') {
      FUN_0086a400(*unaff_retaddr,1);
    }
  }
  return 1;
}



undefined4 __thiscall FUN_009dd090(int param_1_00,int param_1)

{
  char cVar1;
  LRESULT LVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 4) == -0x10000) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
  }
  else {
    LVar2 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x113e,0,param_1);
    if (LVar2 != 0) {
      ExceptionList = local_c;
      return 1;
    }
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
      ExceptionList = local_c;
      return 0;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_009dd210(int param_1_00,int param_1)

{
  char cVar1;
  LRESULT LVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be8c88;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  DAT_032ea170 = *(undefined4 *)(param_1 + 4);
  local_4 = 0;
  LVar2 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x113f,0,param_1);
  if (LVar2 == -1) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      local_4._0_1_ = 1;
      FUN_008423d0();
      local_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4._0_1_ = 1;
      FUN_00842440();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0081b5bc();
    }
  }
  DAT_032ea170 = 0;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009dd430(int param_1_00,int *param_1,int param_2)

{
  HWND hWnd;
  LPCWSTR *lpString;
  undefined4 local_28;
  int local_24;
  undefined4 local_20;
  undefined4 local_1c;
  LPCWSTR *local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_24 = *param_1;
  if (local_24 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x3ba,"wxTreeCtrl::SetItemText","item.IsOk()",
                   L"invalid tree item");
      return;
    }
  }
  else if (local_24 != -0x10000) {
    local_20 = 0;
    local_14 = 0;
    local_10 = 0;
    local_c = 0;
    local_8 = 0;
    local_4 = 0;
    local_28 = 0x11;
    local_1c = 0;
    lpString = (LPCWSTR *)(param_2 + 4);
    local_18 = lpString;
    if (7 < *(uint *)(param_2 + 0x18)) {
      local_18 = (LPCWSTR *)*lpString;
    }
    FUN_009dd210(&local_28);
    hWnd = (HWND)SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x110f,0,0);
    if ((hWnd != (HWND)0x0) && (*param_1 == *(int *)(param_1_00 + 0x1ac))) {
      if (7 < *(uint *)(param_2 + 0x18)) {
        lpString = (LPCWSTR *)*lpString;
      }
      SetWindowTextW(hWnd,(LPCWSTR)lpString);
    }
  }
  return;
}



uint __thiscall FUN_009dd530(int param_1_00,int *param_1)

{
  char cVar1;
  undefined4 local_28;
  int local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  uint local_4;
  
  local_24 = *param_1;
  if (local_24 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x3fc,"wxTreeCtrl::GetItemParam","item.IsOk()",
                   L"invalid tree item");
    }
    return 0;
  }
  local_20 = 0;
  local_18 = 0;
  local_14 = 0;
  local_10 = 0;
  local_c = 0;
  local_8 = 0;
  local_4 = 0;
  local_28 = 0x14;
  local_1c = 0;
  if (local_24 == -0x10000) {
    return *(uint *)(*(int *)(param_1_00 + 0x1c8) + 0x28);
  }
  cVar1 = FUN_009dd090(&local_28);
  return -(uint)(cVar1 != '\0') & local_4;
}



void __thiscall
FUN_009ddad0(int param_1_00,LRESULT *param_1,int *param_2,int *param_3,int param_4,
            undefined4 param_5,undefined4 param_6,int param_7)

{
  bool bVar1;
  char cVar2;
  LRESULT LVar3;
  undefined4 *puVar4;
  uint uVar5;
  undefined4 *puVar6;
  RECT local_c0;
  int local_b0;
  int local_ac;
  uint local_a8;
  int local_98;
  undefined4 local_94;
  undefined4 local_90;
  undefined4 local_8c;
  undefined4 *local_84;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8cc0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((*param_2 == 0) &&
     (LVar3 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x110a,0,0), LVar3 != 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480();
    }
    *param_1 = 0;
    ExceptionList = local_c;
    return;
  }
  local_b0 = *param_2;
  local_ac = *param_3;
  if (local_ac == 0) {
    local_ac = -0xffff;
  }
  uVar5 = 0;
  if (*(int *)(param_4 + 0x14) == 0) {
    local_98 = 0;
    local_94 = 0;
  }
  else {
    uVar5 = 1;
    if (*(uint *)(param_4 + 0x18) < 8) {
      local_98 = param_4 + 4;
    }
    else {
      local_98 = *(int *)(param_4 + 4);
    }
  }
  puVar4 = (undefined4 *)operator_new(0x1c);
  puVar6 = (undefined4 *)0x0;
  if (puVar4 != (undefined4 *)0x0) {
    *puVar4 = wxTreeItemParam::vftable;
    puVar4[5] = 0;
    puVar4[6] = 0;
    puVar4[1] = 0xffffffff;
    puVar4[2] = 0xffffffff;
    puVar4[3] = 0xffffffff;
    puVar4[4] = 0xffffffff;
    puVar6 = puVar4;
  }
  local_90 = 0xffffffff;
  local_8c = 0xffffffff;
  puVar6[1] = param_5;
  puVar6[2] = param_6;
  local_a8 = uVar5 | 0x26;
  local_84 = puVar6;
  if ((*param_2 != -0x10000) || ((*(uint *)(param_1_00 + 0xe0) >> 0xb & 1) == 0)) {
    LVar3 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x110a,4,*param_2);
    bVar1 = true;
    if (LVar3 == 0) goto LAB_009ddc3e;
  }
  bVar1 = false;
LAB_009ddc3e:
  LVar3 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1132,0,(LPARAM)&local_b0);
  if (LVar3 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 != '\0') {
      FUN_0081c0f1();
      local_4 = LVar3;
      FUN_008423d0();
      local_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_00842440();
      local_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  if (bVar1) {
    local_c0.left = *param_2;
    SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x1104,0,(LPARAM)&local_c0);
    InvalidateRect(*(HWND *)(param_1_00 + 0x13c),&local_c0,0);
  }
  puVar6[5] = LVar3;
  if (param_7 != 0) {
    puVar6[6] = param_7;
    *(LRESULT *)(param_7 + 4) = LVar3;
  }
  *param_1 = LVar3;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009ddda0(int param_1)

{
  undefined4 *puVar1;
  char cVar2;
  LRESULT LVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be8d08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  DAT_032ea170 = 0xffffffff;
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x1d0) = 0;
  *(undefined4 *)(param_1 + 0x1cc) = 0;
  if (*(int *)(param_1 + 0x1c8) != 0) {
    puVar1 = *(undefined4 **)(*(int *)(param_1 + 0x1c8) + 0x28);
    if (puVar1 != (undefined4 *)0x0) {
      (**(code **)*puVar1)();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  LVar3 = SendMessageW(*(HWND *)(param_1 + 0x13c),0x1101,0,-0x10000);
  if (LVar3 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 != '\0') {
      FUN_0081c0f1();
      local_4._0_1_ = 1;
      FUN_008423d0();
      local_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4._0_1_ = 1;
      FUN_00842440();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0081b5bc();
    }
  }
  DAT_032ea170 = 0;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009ddf00(int *param_1_00,int *param_1,WPARAM param_2)

{
  char cVar1;
  uint uVar2;
  LRESULT LVar3;
  int iStack_1fc;
  undefined4 local_1f8;
  int local_1f4;
  undefined4 local_1f0;
  undefined4 local_1ec;
  undefined4 local_1e8;
  undefined4 local_1e4;
  undefined4 local_1e0;
  undefined4 local_1dc;
  undefined4 local_1d8;
  undefined4 local_1d4;
  undefined auStack_1d0 [224];
  undefined auStack_f0 [224];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8d46;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&iStack_1fc;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffdf8;
  ExceptionList = &local_c;
  if ((((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 != 1)) && (param_2 != 0x8001)) &&
     ((param_2 != 2 && (param_2 != 3)))) {
    FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x6ad,"wxTreeCtrl::DoExpand",
                 "flag == TVE_COLLAPSE || flag == (TVE_COLLAPSE | TVE_COLLAPSERESET) || flag == TVE_EXPAND || flag == TVE_TOGGLE"
                 ,L"Unknown flag in wxTreeCtrl::DoExpand",uVar2);
  }
  if ((*param_1 == -0x10000) && (((uint)param_1_00[0x38] >> 0xb & 1) != 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x6b1,"wxTreeCtrl::DoExpand",
                   "!IsHiddenRoot(item)",L"Can\'t expand/collapse hidden root node!",uVar2);
    }
    goto LAB_009de0ef;
  }
  local_1e8 = 0;
  local_1e4 = 0;
  local_1e0 = 0;
  local_1dc = 0;
  local_1d8 = 0;
  local_1d4 = 0;
  local_1f8 = 0x18;
  local_1ec = 0x40;
  local_1f0 = 0;
  local_1f4 = *param_1;
  FUN_009dd210(&local_1f8);
  cVar1 = (**(code **)(*param_1_00 + 0x3b0))(param_1);
  if (cVar1 == '\0') {
LAB_009de04f:
    LVar3 = SendMessageW((HWND)param_1_00[0x4f],0x1102,param_2,*param_1);
    if (LVar3 == 0) goto LAB_009de0ef;
    cVar1 = (**(code **)(*param_1_00 + 0x3b0))(param_1);
    if (cVar1 != '\0') goto LAB_009de0ef;
    FUN_009b32e0(DAT_032e98e0,param_1_00,param_1);
    uStack_4 = 1;
    FUN_009dade0(auStack_f0);
  }
  else {
    iStack_1fc = *param_1;
    FUN_009b32e0(DAT_032e98e4,param_1_00,&iStack_1fc);
    uStack_4 = 0;
    cVar1 = FUN_009dbc40(auStack_1d0);
    uStack_4 = 0xffffffff;
    if (cVar1 != '\0') {
      FUN_009b33c0();
      goto LAB_009de04f;
    }
  }
  uStack_4 = 0xffffffff;
  FUN_009b33c0();
LAB_009de0ef:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009de170(int param_1_00,undefined4 *param_1)

{
  char *pcVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8e78;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pcVar1 = (char *)(param_1_00 + 0x1de);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*pcVar1 != '\0')) {
    FUN_008402e0("..\\..\\src\\msw\\treectrl.cpp",0x73,"TempSetter::TempSetter","!m_var",
                 "variable shouldn\'t be already set",DAT_0323f878 ^ (uint)&stack0xffffffe8);
  }
  *pcVar1 = '\x01';
  local_4 = 0;
  FUN_009dcc90(*(undefined4 *)(param_1_00 + 0x13c),*param_1);
  *pcVar1 = '\0';
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009de210(int *param_1_00,int *param_1,char param_3)

{
  char cVar1;
  LRESULT LVar2;
  int *piVar3;
  int iVar4;
  undefined auStack_358 [8];
  undefined4 uStack_350;
  undefined *puStack_34c;
  char *pcStack_348;
  int iStack_320;
  undefined *puStack_31c;
  undefined *puStack_318;
  undefined auStack_314 [272];
  int iStack_204;
  int iStack_124;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be8dcd;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&iStack_320;
  ExceptionList = &local_c;
  if ((*param_1 == -0x10000) && (((uint)param_1_00[0x38] >> 0xb & 1) != 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pcStack_348 = "..\\..\\src\\msw\\treectrl.cpp";
      puStack_34c = (undefined *)0x9de559;
      FUN_00840480();
    }
  }
  else {
    cVar1 = (**(code **)(*param_1_00 + 0x3b4))();
    if (param_3 != cVar1) {
      if (((uint)param_1_00[0x38] >> 5 & 1) == 0) {
        iStack_320 = 0;
        if (param_3 == '\0') {
          iVar4 = *param_1;
        }
        else {
          piVar3 = (int *)(**(code **)(*param_1_00 + 0x3c4))();
          iVar4 = *piVar3;
          iStack_320 = *param_1;
        }
        FUN_009b32e0();
        uStack_4 = 2;
        iStack_204 = iVar4;
        cVar1 = FUN_009dbc40();
        if (cVar1 != '\0') {
          FUN_009da7d0();
          uStack_4._0_1_ = 3;
          pcStack_348 = (char *)0x9de3f9;
          LVar2 = SendMessageW((HWND)param_1_00[0x4f],0x110b,9,iStack_320);
          if (LVar2 == 0) {
            puStack_318 = auStack_358;
            FUN_0043c211(&DAT_00d25fa0);
            cVar1 = FUN_00846b30(6);
            if (cVar1 != '\0') {
              FUN_0081c0f1();
              pcStack_348 = (char *)0x6;
              uStack_4._0_1_ = 4;
              puStack_34c = (undefined *)0x9de45c;
              FUN_008423d0();
              uStack_4._0_1_ = 5;
              GetLastError();
              FUN_00843700();
              GetLastError();
              pcStack_348 = "..\\..\\src\\msw\\treectrl.cpp";
              puStack_34c = auStack_314;
              uStack_350 = 0x9de496;
              FUN_00847d90();
              uStack_4._0_1_ = 4;
              FUN_00842440();
              uStack_4 = CONCAT31(uStack_4._1_3_,3);
              FUN_0081b5bc();
            }
          }
          else {
            FUN_009dcf70();
            FUN_009b32e0();
            uStack_4._0_1_ = 6;
            iStack_124 = iVar4;
            FUN_009dade0();
            uStack_4 = CONCAT31(uStack_4._1_3_,3);
            FUN_009b33c0();
          }
          *puStack_31c = 0;
        }
        uStack_4 = 0xffffffff;
        FUN_009b33c0();
      }
      else {
        FUN_009b32e0();
        uStack_4 = 0;
        cVar1 = FUN_009dbc40();
        if (cVar1 != '\0') {
          pcStack_348 = (char *)0x9de2e3;
          LVar2 = SendMessageW((HWND)param_1_00[0x4f],0x110a,9,0);
          FUN_009de170();
          if (LVar2 == 0) {
            (**(code **)(*param_1_00 + 0x3d4))();
          }
          FUN_009b32e0();
          uStack_4._0_1_ = 1;
          FUN_009dade0();
          uStack_4 = (uint)uStack_4._1_3_ << 8;
          FUN_009b33c0();
        }
        uStack_4 = 0xffffffff;
        FUN_009b33c0();
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009de590(int param_1_00,LPARAM *param_1)

{
  char cVar1;
  LRESULT LVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bda1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  LVar2 = SendMessageW(*(HWND *)(param_1_00 + 0x13c),0x110b,5,*param_1);
  if (LVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009de6a0(int param_1)

{
  char *pcVar1;
  char cVar2;
  LRESULT LVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8e18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pcVar1 = (char *)(param_1 + 0x1de);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*pcVar1 != '\0')) {
    FUN_008402e0();
  }
  *pcVar1 = '\x01';
  local_4 = 0;
  LVar3 = SendMessageW(*(HWND *)(param_1 + 0x13c),0x110b,9,0);
  if (LVar3 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 != '\0') {
      FUN_0081c0f1();
      local_4._0_1_ = 1;
      FUN_008423d0();
      local_4._0_1_ = 2;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      local_4._0_1_ = 1;
      FUN_00842440();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0081b5bc();
    }
  }
  *pcVar1 = '\0';
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009de800(int param_1_00,int *param_1)

{
  char *pcVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8e48;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1 != 0) {
    pcVar1 = (char *)(param_1_00 + 0x1de);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*pcVar1 != '\0')) {
      FUN_008402e0("..\\..\\src\\msw\\treectrl.cpp",0x73,"TempSetter::TempSetter","!m_var",
                   "variable shouldn\'t be already set");
    }
    *pcVar1 = '\x01';
    local_4 = 0;
    FUN_009dcf70();
    *pcVar1 = '\0';
    ExceptionList = local_c;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\treectrl.cpp",0x82e,"wxTreeCtrl::SetFocusedItem","item.IsOk()",
                 L"invalid tree item",DAT_0323f878 ^ (uint)&stack0xffffffe8);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009de8e0(int param_1_00,undefined4 *param_1)

{
  char *pcVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8e78;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pcVar1 = (char *)(param_1_00 + 0x1de);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*pcVar1 != '\0')) {
    FUN_008402e0("..\\..\\src\\msw\\treectrl.cpp",0x73,"TempSetter::TempSetter","!m_var",
                 "variable shouldn\'t be already set",DAT_0323f878 ^ (uint)&stack0xffffffe8);
  }
  *pcVar1 = '\x01';
  local_4 = 0;
  FUN_009dcc90(*(undefined4 *)(param_1_00 + 0x13c),*param_1);
  *pcVar1 = '\0';
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009de980(int param_1_00,undefined4 *param_1)

{
  char *pcVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8ea8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pcVar1 = (char *)(param_1_00 + 0x1de);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*pcVar1 != '\0')) {
    FUN_008402e0("..\\..\\src\\msw\\treectrl.cpp",0x73,"TempSetter::TempSetter","!m_var",
                 "variable shouldn\'t be already set",DAT_0323f878 ^ (uint)&stack0xffffffe4);
  }
  *pcVar1 = '\x01';
  uVar2 = *(undefined4 *)(param_1_00 + 0x13c);
  uVar3 = *param_1;
  local_4 = 0;
  FUN_009dcb40(uVar3);
  FUN_009dcc90(uVar2,uVar3);
  *pcVar1 = '\0';
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009dea30(int *param_1_00,undefined4 param_1,int param_2,uint *param_3)

{
  undefined *puVar1;
  HIMAGELIST himl;
  HWND hWnd;
  int iVar2;
  int iVar3;
  int iVar4;
  char cVar5;
  byte bVar6;
  undefined4 uVar7;
  int *piVar8;
  HGDIOBJ h;
  int iVar9;
  HBITMAP hbmImage;
  DWORD DVar10;
  LRESULT LVar11;
  uint uVar12;
  int *piVar13;
  undefined auStack_228 [12];
  undefined4 uStack_21c;
  undefined *local_1f0;
  uint *local_1ec;
  undefined *local_1e8;
  tagPOINT local_1e4;
  uint uStack_1dc;
  undefined *puStack_1d8;
  undefined4 local_1d0;
  undefined **ppuStack_1cc;
  uint uStack_1c8;
  undefined *local_160;
  int local_e4;
  undefined4 uStack_98;
  byte local_94;
  undefined *local_48;
  undefined4 local_44;
  undefined **local_40;
  uint local_3c;
  undefined local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be8f44;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_1f0;
  ExceptionList = &local_c;
  local_1ec = param_3;
  local_1d0 = 0;
  FUN_009b32e0();
  iVar4 = DAT_032e98cc;
  iVar3 = DAT_032e98c8;
  iVar2 = DAT_032e98c4;
  iVar9 = DAT_032bd44c;
  uVar12 = *(uint *)(param_2 + 8);
  local_4 = 0;
  if (0xfffffff4 < uVar12) {
    if ((uVar12 == 0xfffffffb) || (uVar12 == 0xfffffffd)) {
      FUN_0090d690();
      ScreenToClient((HWND)param_1_00[0x4f],&local_1e4);
      LVar11 = SendMessageW((HWND)param_1_00[0x4f],0x1111,0,(LPARAM)&local_1e4);
      if (LVar11 == 0) goto switchD_009dead8_caseD_fffffdef;
      uVar12 = 0x46;
      if (((uint)param_1_00[0x38] >> 0xd & 1) != 0) {
        uVar12 = 0x6e;
      }
      if ((uStack_1dc & uVar12) != 0) {
        local_48 = puStack_1d8;
        piVar13 = &DAT_032e98f4;
        if (*(int *)(param_2 + 8) != -3) {
          piVar13 = &DAT_032e98f8;
        }
        iVar9 = *piVar13;
        local_3c = local_1e4.y;
        local_40 = (undefined **)local_1e4.x;
      }
    }
    else {
      if (uVar12 != 0xfffffffe) {
switchD_009dead8_caseD_fffffdef:
        FUN_00936930();
        goto switchD_009df281_caseD_fffffe3b;
      }
      DVar10 = GetMessagePos();
      local_1e4.x = DVar10 & 0xffff;
      local_1e4.y = DVar10 >> 0x10;
      MapWindowPoints((HWND)0x0,(HWND)param_1_00[0x4f],&local_1e4,1);
      ppuStack_1cc = (undefined **)local_1e4.x;
      uStack_1c8 = local_1e4.y;
      local_1f0 = (undefined *)0x0;
      (**(code **)(*param_1_00 + 0x45c))();
      if (((uint)local_1f0 & 0x100) != 0) {
        local_48 = local_1e8;
        iVar9 = DAT_032e9904;
      }
    }
    goto LAB_009df222;
  }
  if (uVar12 == 0xfffffff4) {
    iVar9 = *(int *)(param_2 + 0xc);
    if (iVar9 == 1) {
      *param_3 = -(uint)(*(char *)(param_1_00 + 0x70) != '\0') & 0x20;
      if ((param_1_00[0x66] != 0) && (iVar9 = FUN_009b6b80(), 0 < iVar9)) {
        if (DAT_032ea178 == '\0') {
          FUN_004325b6();
          local_4._0_1_ = 3;
          FUN_0089f2a0();
          local_4._0_1_ = 5;
          FUN_0040159c();
          if (local_1f0 != (undefined *)0x0) {
            FUN_0043c211();
            local_4._0_1_ = 6;
            DAT_032ea174 = (code *)FUN_0089f2d0();
            FUN_0040159c();
          }
          local_4 = (uint)local_4._1_3_ << 8;
        }
        if (DAT_032ea174 == (code *)0x0) {
          if (PTR_FUN_03235c4c != (undefined *)0x0) {
            uStack_21c = 0x9df07d;
            FUN_008402e0();
          }
        }
        else {
          himl = *(HIMAGELIST *)(param_1_00[0x66] + 8);
          FUN_009b6bc0();
          uStack_21c = 0x9df0b5;
          hbmImage = CreateBitmap((int)local_1e8,(int)local_1ec,1,1,(void *)0x0);
          iVar9 = ImageList_Add(himl,hbmImage,hbmImage);
          DeleteObject(hbmImage);
          if (iVar9 != -1) {
            for (; 0 < iVar9; iVar9 = iVar9 + -1) {
              uStack_21c = 0x9df0e7;
              (*DAT_032ea174)();
            }
            *param_3 = *param_3 | 0x10;
          }
        }
      }
    }
    else if (iVar9 == 2) {
      if ((param_1_00[0x66] != 0) && (iVar9 = FUN_009b6b80(), 0 < iVar9)) {
        FUN_009b75c0();
      }
    }
    else {
      if (iVar9 == 0x10001) {
        puVar1 = *(undefined **)(param_2 + 0x24);
        local_1f0 = puVar1;
        FUN_0090e870();
        if ((undefined **)local_1e4.x != (undefined **)0x0) {
          piVar13 = *(int **)(local_1e4.x + 8);
          local_1f0 = puVar1;
          FUN_009da820();
          FUN_009dd090();
          local_1f0 = local_160;
          if ((*(byte *)(param_2 + 0x28) & 1) == 0) {
            if (((uint)local_160 & 8) == 0) {
              FUN_00453f4b();
              local_4 = CONCAT31(local_4._1_3_,7);
              cVar5 = (**(code **)(piVar13[5] + 0x24))();
              if (cVar5 != '\0') {
                FUN_004722cb();
                uVar7 = FUN_0090e430();
                *(undefined4 *)(param_2 + 0x34) = uVar7;
              }
              local_4 = local_4 & 0xffffff00;
              local_1e4.x = (LONG)wxObject::vftable;
              FUN_0083e850();
            }
            if ((*(byte *)(param_2 + 0x28) & 1) != 0) goto LAB_009deecc;
LAB_009deed5:
            if (((uint)local_1f0 & 8) == 0) {
              FUN_00453f4b();
              local_4 = CONCAT31(local_4._1_3_,8);
              cVar5 = (**(code **)(*piVar13 + 0x24))();
              if (cVar5 != '\0') {
                FUN_004722cb();
                uVar7 = FUN_0090e430();
                *(undefined4 *)(param_2 + 0x30) = uVar7;
              }
              local_4 = local_4 & 0xffffff00;
              local_1e4.x = (LONG)wxObject::vftable;
              FUN_0083e850();
            }
          }
          else {
LAB_009deecc:
            piVar8 = (int *)FUN_0091ac40();
            if (piVar8 != param_1_00) goto LAB_009deed5;
          }
          cVar5 = (**(code **)(piVar13[10] + 0x10))();
          if (cVar5 == '\0') {
            *local_1ec = 0;
          }
          else {
            h = (HGDIOBJ)FUN_009229f0();
            SelectObject(*(HDC *)(param_2 + 0x10),h);
            *local_1ec = 2;
          }
          goto LAB_009ded56;
        }
      }
      *param_3 = 0;
    }
LAB_009ded56:
    local_4 = 0xffffffff;
    FUN_009b33c0();
    goto LAB_009df5ce;
  }
  switch(uVar12) {
  case 0xfffffdee:
  case 0xfffffdf8:
    *param_3 = 0;
    break;
  default:
    goto switchD_009dead8_caseD_fffffdef;
  case 0xfffffe34:
    local_48 = *(undefined **)(param_2 + 0x10);
    FUN_00432199();
    local_14 = *(int *)(param_2 + 0x1c) == 0;
    iVar9 = iVar3;
    break;
  case 0xfffffe35:
    local_48 = *(undefined **)(param_2 + 0x10);
    param_1_00[0x6b] = (int)local_48;
    FUN_00432199();
    local_14 = 0;
    iVar9 = iVar2;
    break;
  case 0xfffffe36:
    local_48 = *(undefined **)(param_2 + 0x14);
    iVar9 = iVar4;
    if ((*(char *)(param_1_00 + 0x70) != '\0') &&
       (local_1f0 = local_48, FUN_0090e870(), (undefined **)local_1e4.x != (undefined **)0x0)) {
      local_1f0 = *(undefined **)(local_1e4.x + 8);
      if (local_1f0 != (undefined *)0x0) {
        FUN_009dab90();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      FUN_009115c0();
    }
    break;
  case 0xfffffe37:
switchD_009dead8_caseD_fffffe37:
    iVar9 = DAT_032e98c0;
    goto LAB_009deaef;
  case 0xfffffe38:
    iVar9 = DAT_032e98bc;
    if (DAT_032e98bc == DAT_032bd44c) goto switchD_009dead8_caseD_fffffe37;
LAB_009deaef:
    local_48 = *(undefined **)(param_2 + 0x3c);
    local_3c = *(uint *)(param_2 + 100);
    local_40 = *(undefined ***)(param_2 + 0x60);
    local_94 = 0;
    break;
  case 0xfffffe39:
  case 0xfffffe3a:
    if (*(int *)(param_2 + 0xc) == 1) {
      iVar9 = 0;
    }
    else {
      if (*(int *)(param_2 + 0xc) != 2) {
        local_1e8 = auStack_228;
        FUN_0043c211(&DAT_00d25fa0);
        cVar5 = FUN_00846b30(6);
        if (cVar5 != '\0') {
          FUN_0081c0f1();
          local_4._0_1_ = 1;
          uStack_21c = 0x9deca0;
          FUN_008423d0();
          local_4._0_1_ = 2;
          FUN_0086bf20();
          local_4._0_1_ = 1;
          FUN_00842440();
          local_4 = (uint)local_4._1_3_ << 8;
          FUN_0081b5bc();
        }
      }
      iVar9 = 1;
    }
    local_48 = *(undefined **)(param_2 + 0x3c);
    iVar9 = *(int *)(&DAT_032ea160 + ((uint)(*(int *)(param_2 + 8) == -0x1c6) + iVar9 * 2) * 4);
    break;
  case 0xfffffe3b:
switchD_009dead8_caseD_fffffe3b:
    iVar9 = DAT_032e98d4;
    goto LAB_009dec23;
  case 0xfffffe3c:
    iVar9 = DAT_032e98d0;
    if (DAT_032e98d0 == DAT_032bd44c) goto switchD_009dead8_caseD_fffffe3b;
LAB_009dec23:
    local_48 = *(undefined **)(param_2 + 0x10);
    break;
  case 0xfffffe3d:
  case 0xfffffe6e:
    if (*(char *)((int)param_1_00 + 0x1de) == '\0') {
      iVar9 = DAT_032e98e8;
    }
  case 0xfffffe3e:
  case 0xfffffe6f:
    if (*(char *)((int)param_1_00 + 0x1de) == '\0') {
      if (iVar9 == DAT_032bd44c) {
        iVar9 = DAT_032e98ec;
      }
      local_44 = *(undefined4 *)(param_2 + 0x14);
      local_48 = *(undefined **)(param_2 + 0x3c);
      (**(code **)(*param_1_00 + 0x100))();
    }
    break;
  case 0xfffffe5f:
  case 0xfffffe60:
    if ((((uint)param_1_00[0x38] >> 5 & 1) == 0) || (cVar5 = FUN_009da7b0(), cVar5 == '\0')) {
      local_4 = 0xffffffff;
      FUN_009b33c0();
      goto LAB_009df5ce;
    }
    *param_3 = 1;
    goto LAB_009ded56;
  case 0xfffffe62:
    local_48 = *(undefined **)(param_2 + 0x14);
    iVar9 = DAT_032e9908;
    break;
  case 0xfffffe64:
    FUN_0090e4a0();
    FUN_009dc780();
    goto switchD_009df281_caseD_fffffe3b;
  }
LAB_009df222:
  local_e4 = iVar9;
  if (local_48 != (undefined *)0x0) {
    uStack_98 = (**(code **)(*param_1_00 + 0x374))();
  }
  bVar6 = FUN_0091c170();
  uVar12 = *(uint *)(param_2 + 8);
  if (uVar12 < 0xfffffe63) {
    if (uVar12 == 0xfffffe62) {
      if (local_94 != 0) {
        FUN_0091c4a0();
      }
    }
    else {
      switch(uVar12) {
      case 0xfffffe34:
        *local_1ec = (uint)local_94;
        FUN_009db7a0();
        break;
      case 0xfffffe35:
        *local_1ec = (uint)(local_94 == 0);
        if (local_94 == 0) {
          param_1_00[0x6b] = 0;
        }
        else {
          LVar11 = SendMessageW((HWND)param_1_00[0x4f],0x110f,0,0);
          if (LVar11 != 0) {
            if ((param_1_00[0x6a] != 0) && (*(int *)(param_1_00[0x6a] + 0x13c) != 0)) {
              FUN_009db7a0();
            }
            if (param_1_00[0x6a] == 0) {
              local_1e8 = (undefined *)operator_new(0x3b8);
              local_4._0_1_ = 10;
              if (local_1e8 == (undefined *)0x0) {
                iVar9 = 0;
              }
              else {
                iVar9 = FUN_00919aa0();
              }
              local_4 = (uint)local_4._1_3_ << 8;
              param_1_00[0x6a] = iVar9;
            }
            *(int **)(param_1_00[0x6a] + 0x44) = param_1_00;
            *(LRESULT *)(param_1_00[0x6a] + 0x13c) = LVar11;
            FUN_00914900();
            (**(code **)(*(int *)param_1_00[0x6a] + 0xe8))();
            (**(code **)(*(int *)param_1_00[0x6a] + 0xe4))();
          }
        }
        break;
      case 0xfffffe36:
        if (*(undefined4 **)(param_2 + 0x34) != (undefined4 *)0x0) {
          (**(code **)**(undefined4 **)(param_2 + 0x34))();
        }
        break;
      case 0xfffffe37:
      case 0xfffffe38:
        if (local_94 != 0) {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1_00[0x71] != 0)) {
            uStack_21c = 0x9df2c6;
            FUN_00840480();
          }
          local_1e8 = (undefined *)operator_new(0x38);
          local_4._0_1_ = 9;
          if (local_1e8 == (undefined *)0x0) {
            iVar9 = 0;
          }
          else {
            iVar9 = FUN_009da9b0();
          }
          local_4 = (uint)local_4._1_3_ << 8;
          param_1_00[0x71] = iVar9;
          local_1e4.x = 0;
          local_1e4.y = 0;
          FUN_009eac20();
          FUN_009eaec0();
          *(undefined *)(param_1_00 + 0x77) = 1;
        }
        break;
      case 0xfffffe39:
        local_1ec = *(uint **)(param_2 + 0x3c);
        if (*(int *)(param_2 + 0xc) == 1) {
          iVar9 = FUN_008fc6f0();
          if (599 < iVar9) {
            FUN_009dae20();
          }
        }
        else {
          iVar9 = (**(code **)(*param_1_00 + 0x370))();
          if (iVar9 != -1) {
            FUN_009dae20();
          }
        }
        break;
      case 0xfffffe3a:
      case 0xfffffe3e:
        *local_1ec = (uint)(local_94 == 0);
        break;
      case 0xfffffe3c:
        local_1f0 = local_48;
        iVar9 = FUN_009dd530();
        if (iVar9 != 0) {
          if ((*(byte *)(param_2 + 0xc) & 2) != 0) {
            (**(code **)(*param_1_00 + 0x3b0))();
            uVar7 = FUN_009da860();
            *(undefined4 *)(param_2 + 0x24) = uVar7;
          }
          if ((*(byte *)(param_2 + 0xc) & 0x20) != 0) {
            (**(code **)(*param_1_00 + 0x3b0))();
            uVar7 = FUN_009da860();
            *(undefined4 *)(param_2 + 0x28) = uVar7;
          }
        }
      }
    }
  }
  else if (uVar12 == 0xfffffffb) {
    *local_1ec = 1;
    hWnd = (HWND)param_1_00[0x4f];
    DVar10 = GetMessagePos();
    SendMessageW(hWnd,0x7b,(WPARAM)hWnd,DVar10);
  }
  else if (uVar12 == 0xfffffffd) {
    *local_1ec = (uint)bVar6;
  }
switchD_009df281_caseD_fffffe3b:
  local_4 = 0xffffffff;
  FUN_009b33c0();
LAB_009df5ce:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_009df830(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  uint uVar4;
  int **ppiVar5;
  uint uVar6;
  int *piVar7;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00be8f96;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  *param_1 = wxTreeCtrl::vftable;
  local_4 = 1;
  if (*(char *)(param_1 + 0x70) != '\0') {
    ppiVar5 = (int **)FUN_009da970(local_14);
    piVar7 = *ppiVar5;
joined_r0x009df890:
    piVar3 = piVar7;
    if (piVar3 != (int *)0x0) {
      iVar1 = piVar3[2];
      if (iVar1 != 0) {
        FUN_009dab90();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      piVar7 = (int *)*piVar3;
      if ((int *)*piVar3 == (int *)0x0) {
        uVar2 = ppiVar5[1][1];
        uVar6 = (uint)piVar3[1] % uVar2 + 1;
        if (uVar6 < uVar2) {
          iVar1 = *ppiVar5[1];
          piVar7 = (int *)(iVar1 + uVar6 * 4);
          do {
            if (*piVar7 != 0) {
              piVar7 = *(int **)(iVar1 + uVar6 * 4);
              goto joined_r0x009df890;
            }
            uVar6 = uVar6 + 1;
            piVar7 = piVar7 + 1;
          } while (uVar6 < uVar2);
        }
        piVar7 = (int *)0x0;
      }
      goto joined_r0x009df890;
    }
    FUN_00893cf0(param_1[0x6d],param_1[0x6c],&LAB_00981b50);
    param_1[0x6e] = 0;
    *(undefined *)(param_1 + 0x70) = 0;
  }
  FUN_009db7a0(uVar4);
  FUN_009ddda0();
  local_4 = local_4 & 0xffffff00;
  FUN_00893cf0(param_1[0x6d],param_1[0x6c],&LAB_00981b50);
  param_1[0x6e] = 0;
  _free((void *)param_1[0x6c]);
  local_4 = 0xffffffff;
  FUN_009b2e80();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009dfaa0(int *param_1_00,LPARAM *param_1)

{
  char *pcVar1;
  char cVar2;
  LRESULT LVar3;
  undefined auStack_27c [8];
  undefined4 uStack_274;
  undefined *puStack_270;
  char *pcStack_26c;
  undefined auStack_244 [3];
  char cStack_241;
  LRESULT LStack_240;
  undefined *puStack_23c;
  undefined auStack_238 [20];
  char *pcStack_224;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined local_4;
  undefined3 uStack_3;
  
  puStack_8 = &LAB_00be9018;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_244;
  ExceptionList = &local_c;
  DAT_032ea170 = 0xffffffff;
  local_4 = 0;
  uStack_3 = 0;
  if (((uint)param_1_00[0x38] >> 5 & 1) == 0) {
    pcStack_26c = (char *)0x9dfd8d;
    LVar3 = SendMessageW((HWND)param_1_00[0x4f],0x1101,0,*param_1);
    if (LVar3 == 0) {
      puStack_23c = auStack_27c;
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 != '\0') {
        FUN_0081c0f1();
        pcStack_26c = (char *)0x6;
        local_4 = 6;
        puStack_270 = (undefined *)0x9dfdef;
        FUN_008423d0();
        local_4 = 7;
        GetLastError();
        FUN_00843700();
        GetLastError();
        pcStack_26c = "..\\..\\src\\msw\\treectrl.cpp";
        puStack_270 = auStack_238;
        uStack_274 = 0x9dfe29;
        FUN_00847d90();
        local_4 = 6;
        FUN_00842440();
        local_4 = 0;
        FUN_0081b5bc();
      }
    }
  }
  else {
    cStack_241 = (**(code **)(*param_1_00 + 0x3b4))();
    LStack_240 = 0;
    if (cStack_241 != '\0') {
      pcStack_26c = (char *)0x9dfb38;
      LStack_240 = SendMessageW((HWND)param_1_00[0x4f],0x110a,6,*param_1);
      if (LStack_240 == 0) {
        pcStack_26c = (char *)0x9dfb53;
        LStack_240 = SendMessageW((HWND)param_1_00[0x4f],0x110a,7,*param_1);
      }
    }
    pcVar1 = (char *)((int)param_1_00 + 0x1de);
    pcStack_224 = pcVar1;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*pcVar1 != '\0')) {
      pcStack_26c = "..\\..\\src\\msw\\treectrl.cpp";
      puStack_270 = (undefined *)0x9dfb8a;
      FUN_008402e0();
    }
    *pcVar1 = '\x01';
    local_4 = 1;
    pcStack_26c = (char *)0x9dfbab;
    LVar3 = SendMessageW((HWND)param_1_00[0x4f],0x1101,0,*param_1);
    if (LVar3 == 0) {
      puStack_23c = auStack_27c;
      FUN_0043c211(&DAT_00d25fa0);
      cVar2 = FUN_00846b30(6);
      if (cVar2 != '\0') {
        FUN_0081c0f1();
        pcStack_26c = (char *)0x6;
        local_4 = 2;
        puStack_270 = (undefined *)0x9dfc0d;
        FUN_008423d0();
        local_4 = 3;
        GetLastError();
        FUN_00843700();
        GetLastError();
        pcStack_26c = "..\\..\\src\\msw\\treectrl.cpp";
        puStack_270 = auStack_238;
        uStack_274 = 0x9dfc47;
        FUN_00847d90();
        local_4 = 2;
        FUN_00842440();
        local_4 = 1;
        FUN_0081b5bc();
      }
      *pcVar1 = '\0';
    }
    else {
      local_4 = 0;
      *pcVar1 = '\0';
      if (cStack_241 != '\0') {
        if (*param_1 == param_1_00[0x73]) {
          param_1_00[0x73] = 0;
        }
        if (*param_1 == param_1_00[0x74]) {
          param_1_00[0x74] = 0;
        }
        if (LStack_240 != 0) {
          FUN_009b32e0();
          local_4 = 4;
          cVar2 = FUN_009dbc40();
          if (cVar2 == '\0') {
            FUN_009de8e0();
            (**(code **)(*param_1_00 + 0x3d0))();
            local_4 = 0;
            FUN_009b33c0();
          }
          else {
            FUN_009b32e0();
            local_4 = 5;
            FUN_009dade0();
            local_4 = 4;
            FUN_009b33c0();
            local_4 = 0;
            FUN_009b33c0();
          }
        }
      }
    }
  }
  DAT_032ea170 = 0;
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_009dfe80(int *param_1)

{
  uint uVar1;
  uint uVar2;
  uint local_18 [2];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be68e8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  local_4 = 0;
  uVar1 = (**(code **)(*param_1 + 0x3c8))(local_18);
  uVar2 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_18[0] <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      FUN_009de8e0(&stack0xffffffe0);
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar1);
  }
  param_1[0x73] = 0;
  puStack_8 = (undefined *)0xffffffff;
  FUN_0086aa30();
  ExceptionList = pvStack_10;
  return;
}



void __fastcall FUN_009dff50(int *param_1)

{
  char cVar1;
  LRESULT LVar2;
  undefined4 uStack_1d8;
  undefined4 uStack_1d4;
  undefined auStack_1d0 [172];
  LRESULT LStack_124;
  undefined auStack_f0 [172];
  LRESULT LStack_44;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be9066;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&uStack_1d8;
  ExceptionList = &local_c;
  if (((uint)param_1[0x38] >> 5 & 1) == 0) {
    (**(code **)(*param_1 + 0x41c))(DAT_0323f878 ^ (uint)&stack0xfffffe1c);
  }
  else {
    LVar2 = SendMessageW((HWND)param_1[0x4f],0x110a,9,0);
    if (LVar2 != 0) {
      uStack_1d4 = 0;
      FUN_009b32e0(DAT_032e98ec,param_1,&uStack_1d4);
      uStack_4 = 0;
      LStack_44 = LVar2;
      cVar1 = FUN_009dbc40(auStack_f0);
      if (cVar1 != '\0') {
        FUN_009dfe80();
        uStack_1d8 = 0;
        FUN_009b32e0(DAT_032e98e8,param_1,&uStack_1d8);
        uStack_4._0_1_ = 1;
        LStack_124 = LVar2;
        FUN_009dade0(auStack_1d0);
        uStack_4 = (uint)uStack_4._1_3_ << 8;
        FUN_009b33c0();
      }
      uStack_4 = 0xffffffff;
      FUN_009b33c0();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009e00a0(int *param_1_00,int param_1)

{
  int *piVar1;
  int iStack_14;
  undefined *puStack_10;
  undefined local_8 [4];
  undefined local_4 [4];
  
  puStack_10 = (undefined *)0x9e00ab;
  FUN_009dfe80();
  puStack_10 = local_4;
  iStack_14 = param_1;
  (**(code **)(*param_1_00 + 0x3dc))(local_8);
  while (iStack_14 != 0) {
    FUN_009de170(&iStack_14,1);
    piVar1 = (int *)(**(code **)(*param_1_00 + 0x3e0))(local_8,&iStack_14,&puStack_10);
    iStack_14 = *piVar1;
  }
  return;
}



void __thiscall FUN_009e0110(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  LRESULT LVar2;
  undefined4 uStack_1d8;
  undefined4 uStack_1d4;
  undefined auStack_1d0 [88];
  undefined4 uStack_178;
  char cStack_174;
  int iStack_128;
  LRESULT LStack_124;
  undefined auStack_f0 [88];
  undefined4 uStack_98;
  int iStack_48;
  LRESULT LStack_44;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be90b6;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&uStack_1d8;
  ExceptionList = &local_c;
  if (((uint)param_1_00[0x38] >> 5 & 1) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\msw\\treectrl.cpp",0x740,"wxTreeCtrl::SelectChildren",
                   "HasFlag(0x0020)","this only works with multiple selection controls",
                   DAT_0323f878 ^ (uint)&stack0xfffffe18);
    }
  }
  else {
    LVar2 = SendMessageW((HWND)param_1_00[0x4f],0x110a,9,0);
    uStack_1d4 = 0;
    FUN_009b32e0(DAT_032e98ec,param_1_00,&uStack_1d4);
    uStack_4 = 0;
    LStack_124 = LVar2;
    if (iStack_128 != 0) {
      uStack_178 = (**(code **)(*param_1_00 + 0x374))(&iStack_128);
    }
    cVar1 = FUN_0091c170(auStack_1d0);
    if ((cVar1 == '\0') || (cStack_174 != '\0')) {
      FUN_009e00a0(param_1);
      uStack_1d8 = 0;
      FUN_009b32e0(DAT_032e98e8,param_1_00,&uStack_1d8);
      uStack_4._0_1_ = 1;
      LStack_44 = LVar2;
      if (iStack_48 != 0) {
        uStack_98 = (**(code **)(*param_1_00 + 0x374))(&iStack_48);
      }
      FUN_0091c170(auStack_f0);
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_009b33c0();
    }
    uStack_4 = 0xffffffff;
    FUN_009b33c0();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009e02d0(int *param_1_00,int param_1)

{
  char cVar1;
  SHORT SVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint *puVar6;
  HWND hWnd;
  uint uVar7;
  LRESULT LVar8;
  uint extraout_EDX;
  undefined uVar9;
  bool bVar10;
  WPARAM WVar11;
  uint local_3ec;
  char local_3e5;
  uint local_3e4;
  uint local_3e0;
  uint uStack_3dc;
  undefined local_3d8 [8];
  uint uStack_3d0;
  uint auStack_3cc [2];
  uint uStack_3c4;
  uint uStack_3c0;
  uint auStack_3bc [2];
  uint uStack_3b4;
  uint local_3b0;
  uint local_3ac;
  uint auStack_3a8 [2];
  uint local_3a0;
  uint local_39c;
  undefined auStack_398 [4];
  undefined local_394 [4];
  undefined local_390 [172];
  uint local_2e4;
  undefined local_2b0 [172];
  uint local_204;
  undefined auStack_1d0 [172];
  uint uStack_124;
  undefined local_f0 [172];
  uint local_44;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be91cc;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3ec;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xfffffc04;
  ExceptionList = &local_c;
  SVar2 = GetKeyState(0x11);
  bVar10 = SVar2 < 0;
  SVar2 = GetKeyState(0x10);
  local_3e5 = SVar2 < 0;
  uVar4 = SendMessageW((HWND)param_1_00[0x4f],0x110a,9,0);
  switch(param_1) {
  case 0xd:
  case 0x20:
    if (uVar4 == 0) goto LAB_009e0e88;
    if ((param_1 != 0xd) && (bVar10)) {
      local_39c = uVar4;
      FUN_009b32e0(DAT_032e98ec,param_1_00,&local_39c);
      local_4 = 0;
      local_2e4 = uVar4;
      cVar1 = FUN_009dbc40(local_390);
      if (cVar1 != '\0') {
        local_3e4 = uVar4;
        FUN_009de980(&local_3e4);
        local_3b0 = uVar4;
        FUN_009b32e0(DAT_032e98e8,param_1_00,&local_3b0);
        local_4._0_1_ = 1;
        local_204 = uVar4;
        FUN_009dade0(local_2b0);
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_009b33c0();
      }
      local_4 = 0xffffffff;
      FUN_009b33c0();
      goto LAB_009e0e88;
    }
    FUN_0086a600();
    local_4 = 2;
    iVar5 = (**(code **)(*param_1_00 + 0x3c8))(local_3d8);
    if ((iVar5 != 1) || (puVar6 = (uint *)FUN_009bfa50(auStack_398,0), *puVar6 != uVar4)) {
      uStack_3b4 = uVar4;
      FUN_009b32e0(DAT_032e98ec,param_1_00,&uStack_3b4);
      local_4._0_1_ = 3;
      local_204 = uVar4;
      cVar1 = FUN_009dbc40(local_2b0);
      if (cVar1 != '\0') {
        FUN_009dfe80();
        local_3e4 = uVar4;
        FUN_009de170(&local_3e4,1);
        uStack_3c0 = uVar4;
        FUN_009b32e0(DAT_032e98e8,param_1_00,&uStack_3c0);
        local_4._0_1_ = 4;
        local_2e4 = uVar4;
        FUN_009dade0(local_390);
        local_4._0_1_ = 3;
        FUN_009b33c0();
      }
      local_4 = CONCAT31(local_4._1_3_,2);
      goto LAB_009e051e;
    }
    goto LAB_009e052a;
  default:
    goto LAB_009e0e88;
  case 0x21:
  case 0x22:
    if (bVar10) {
      (**(code **)(*param_1_00 + 0x3f0))(&local_3ec);
      uVar3 = SendMessageW((HWND)param_1_00[0x4f],0x1110,0,0);
      if (param_1 == 0x21) {
        WVar11 = 7;
      }
      else {
        WVar11 = 6;
      }
      LVar8 = SendMessageW((HWND)param_1_00[0x4f],0x110a,WVar11,local_3ec);
      if (LVar8 != 0) {
        uVar4 = 1;
        uStack_3dc = local_3ec;
        if (1 < uVar3) {
          do {
            if (param_1 == 0x21) {
              WVar11 = 7;
            }
            else {
              WVar11 = 6;
            }
            uVar7 = SendMessageW((HWND)param_1_00[0x4f],0x110a,WVar11,uStack_3dc);
          } while ((uVar7 != 0) && (uVar4 = uVar4 + 1, uStack_3dc = uVar7, uVar4 < uVar3));
        }
        (**(code **)(*param_1_00 + 0x42c))(&uStack_3dc);
        if (param_1 == 0x22) {
          uVar4 = 1;
          local_3e4 = uStack_3dc;
          if (1 < uVar3) {
            do {
              uVar7 = SendMessageW((HWND)param_1_00[0x4f],0x110a,6,local_3e4);
              if (uVar7 == 0) break;
              uVar4 = uVar4 + 1;
              local_3e4 = uVar7;
            } while (uVar4 < uVar3);
          }
          (**(code **)(*param_1_00 + 0x42c))(&local_3e4);
        }
      }
    }
    else {
      local_3e4 = SendMessageW((HWND)param_1_00[0x4f],0x1110,0,0);
      if (param_1 == 0x21) {
        WVar11 = 7;
      }
      else {
        WVar11 = 6;
      }
      LVar8 = SendMessageW((HWND)param_1_00[0x4f],0x110a,WVar11,uVar4);
      if (LVar8 != 0) {
        uVar7 = 1;
        uVar3 = uVar4;
        local_3e0 = uVar4;
        if (1 < local_3e4) {
          do {
            if (param_1 == 0x21) {
              WVar11 = 7;
            }
            else {
              WVar11 = 6;
            }
            local_3e0 = uVar3;
            uVar3 = SendMessageW((HWND)param_1_00[0x4f],0x110a,WVar11,uVar3);
          } while ((uVar3 != 0) && (uVar7 = uVar7 + 1, local_3e0 = uVar3, uVar7 < local_3e4));
        }
        FUN_009b32e0(DAT_032e98ec,param_1_00,&local_3e0);
        local_4 = 0x12;
        local_44 = uVar4;
        cVar1 = FUN_009dbc40(local_f0);
        if (cVar1 != '\0') {
          FUN_009dfe80();
          param_1_00[0x73] = 0;
          FUN_009de170(&local_3e0,1);
          (**(code **)(*param_1_00 + 0x3d4))(&local_3e0);
          FUN_009b32e0(DAT_032e98e8,param_1_00,&local_3e0);
          local_4._0_1_ = 0x13;
          uStack_124 = uVar4;
          FUN_009dade0(auStack_1d0);
          local_4 = CONCAT31(local_4._1_3_,0x12);
          FUN_009b33c0();
        }
        local_4 = 0xffffffff;
        FUN_009b33c0();
      }
    }
    goto LAB_009e0e88;
  case 0x23:
  case 0x24:
    (**(code **)(*param_1_00 + 0x3c0))(&local_3ec);
    cVar1 = FUN_009dadb0(&local_3ec);
    if (cVar1 != '\0') {
      local_3ec = SendMessageW((HWND)param_1_00[0x4f],0x110a,4,local_3ec);
    }
    if (local_3ec == 0) goto LAB_009e0e88;
    uVar3 = local_3ec;
    if (param_1 == 0x23) {
      uVar7 = SendMessageW((HWND)param_1_00[0x4f],0x110a,6,local_3ec);
      uVar3 = local_3ec;
      while (local_3ec = uVar7, local_3ec != 0) {
        uVar7 = SendMessageW((HWND)param_1_00[0x4f],0x110a,6,local_3ec);
        uVar3 = local_3ec;
      }
    }
    local_3ec = uVar3;
    if (uVar4 == local_3ec) goto LAB_009e0e88;
    if (local_3e5 == '\0') {
      FUN_009b32e0(DAT_032e98ec,param_1_00,&local_3ec);
      local_4 = 0x10;
      local_204 = uVar4;
      cVar1 = FUN_009dbc40(local_2b0);
      if (cVar1 != '\0') {
        FUN_009dfe80();
        FUN_009de170(&local_3ec,1);
        (**(code **)(*param_1_00 + 0x3d4))(&local_3ec);
        FUN_009b32e0(DAT_032e98e8,param_1_00,&local_3ec);
        local_4._0_1_ = 0x11;
        local_2e4 = uVar4;
        FUN_009dade0(local_390);
        local_4 = CONCAT31(local_4._1_3_,0x10);
        goto LAB_009e08e1;
      }
    }
    else {
      if (param_1_00[0x73] == 0) {
        param_1_00[0x73] = uVar4;
      }
      cVar1 = FUN_009dce00(param_1_00[0x73],local_3ec,3);
      if (cVar1 == '\0') goto LAB_009e0e88;
      FUN_009b32e0(DAT_032e98ec,param_1_00,&local_3ec);
      uVar9 = 0xe;
      local_4 = 0xe;
      local_204 = uVar4;
      cVar1 = FUN_009dbc40(local_2b0);
      if (cVar1 != '\0') {
        FUN_009dce00(param_1_00[0x73],local_3ec,2);
        (**(code **)(*param_1_00 + 0x3d4))(&local_3ec);
        FUN_009b32e0(DAT_032e98e8,param_1_00,&local_3ec);
        local_4._0_1_ = 0xf;
        goto LAB_009e08c7;
      }
    }
    break;
  case 0x25:
    local_3ac = uVar4;
    cVar1 = (**(code **)(*param_1_00 + 0x3ac))(&local_3ac);
    if ((cVar1 != '\0') &&
       (auStack_3bc[0] = uVar4, cVar1 = (**(code **)(*param_1_00 + 0x3b0))(auStack_3bc),
       cVar1 != '\0')) {
      auStack_3a8[0] = uVar4;
      (**(code **)(*param_1_00 + 0x410))(auStack_3a8);
      goto LAB_009e0e88;
    }
    uStack_3d0 = uVar4;
    (**(code **)(*param_1_00 + 0x3d8))(&stack0xfffffc10,&uStack_3d0);
    if ((local_3ec == 0) || (cVar1 = FUN_009dadb0(&local_3ec), cVar1 != '\0')) goto LAB_009e0e88;
    FUN_009b32e0(DAT_032e98ec,param_1_00,&local_3ec);
    uVar9 = 10;
    local_4 = 10;
    local_204 = uVar4;
    cVar1 = FUN_009dbc40(local_2b0);
    if (cVar1 != '\0') {
      FUN_009dfe80();
      FUN_009de170(&local_3ec,1);
      (**(code **)(*param_1_00 + 0x3d4))(&local_3ec);
      FUN_009b32e0(DAT_032e98e8,param_1_00,&local_3ec);
      local_4._0_1_ = 0xb;
LAB_009e08c7:
      local_2e4 = uVar4;
      FUN_009dade0(local_390);
      local_4 = CONCAT31(local_4._1_3_,uVar9);
LAB_009e08e1:
      FUN_009b33c0();
    }
    break;
  case 0x26:
  case 0x28:
    if ((bVar10) || ((bool)local_3e5 != bVar10)) {
      if (uVar4 != 0) {
        if (param_1 == 0x26) {
          WVar11 = 7;
        }
        else {
          WVar11 = 6;
        }
        local_3ec = SendMessageW((HWND)param_1_00[0x4f],0x110a,WVar11,uVar4);
        if (local_3ec != 0) {
          if (param_1_00[0x73] == 0) {
            param_1_00[0x73] = uVar4;
          }
          if ((local_3e5 != '\0') &&
             (cVar1 = FUN_009dce00(param_1_00[0x73],local_3ec,3), cVar1 != '\0')) {
            FUN_009b32e0(DAT_032e98ec,param_1_00,&local_3ec);
            local_4 = 8;
            local_204 = uVar4;
            cVar1 = FUN_009dbc40(local_2b0);
            if (cVar1 != '\0') {
              FUN_009dce00(param_1_00[0x73],local_3ec,2);
              FUN_009b32e0(DAT_032e98e8,param_1_00,&local_3ec);
              local_4._0_1_ = 9;
              local_2e4 = uVar4;
              FUN_009dade0(local_390);
              local_4 = CONCAT31(local_4._1_3_,8);
              FUN_009b33c0();
            }
            local_4 = 0xffffffff;
            FUN_009b33c0();
          }
          (**(code **)(*param_1_00 + 0x3d4))(&local_3ec);
        }
      }
      goto LAB_009e0e88;
    }
    FUN_0086a600();
    local_4 = 5;
    local_3ec = 0;
    if (uVar4 == 0) {
      puVar6 = (uint *)(**(code **)(*param_1_00 + 0x3c0))(local_394);
      local_3ec = *puVar6;
      cVar1 = FUN_009dadb0(&local_3ec);
      uVar3 = extraout_EDX;
      if (cVar1 != '\0') {
        hWnd = (HWND)param_1_00[0x4f];
        WVar11 = 4;
        goto LAB_009e05c1;
      }
    }
    else {
      hWnd = (HWND)param_1_00[0x4f];
      uVar3 = uVar4;
      if (param_1 == 0x26) {
        WVar11 = 7;
      }
      else {
        WVar11 = 6;
      }
LAB_009e05c1:
      uVar3 = SendMessageW(hWnd,0x110a,WVar11,uVar3);
      local_3ec = uVar3;
    }
    if (uVar3 != 0) {
      FUN_009b32e0(DAT_032e98ec,param_1_00,&local_3ec);
      local_4._0_1_ = 6;
      local_204 = uVar4;
      cVar1 = FUN_009dbc40(local_2b0);
      if (cVar1 != '\0') {
        FUN_009dfe80();
        FUN_009de170(&local_3ec,1);
        (**(code **)(*param_1_00 + 0x3d4))(&local_3ec);
        FUN_009b32e0(DAT_032e98e8,param_1_00,&local_3ec);
        local_4._0_1_ = 7;
        local_2e4 = uVar4;
        FUN_009dade0(local_390);
        local_4._0_1_ = 6;
        FUN_009b33c0();
      }
      local_4 = CONCAT31(local_4._1_3_,5);
LAB_009e051e:
      FUN_009b33c0();
    }
LAB_009e052a:
    local_4 = 0xffffffff;
    FUN_0086aa30();
    goto LAB_009e0e88;
  case 0x27:
    local_3a0 = uVar4;
    cVar1 = (**(code **)(*param_1_00 + 0x3a8))(&local_3a0,uVar3);
    if (cVar1 == '\0') {
      local_3ac = uVar4;
      (**(code **)(*param_1_00 + 0x42c))(&local_3ac);
    }
    auStack_3cc[0] = uVar4;
    cVar1 = (**(code **)(*param_1_00 + 0x3ac))(auStack_3cc);
    if (cVar1 == '\0') goto LAB_009e0e88;
    uStack_3c4 = uVar4;
    cVar1 = (**(code **)(*param_1_00 + 0x3b0))(&uStack_3c4);
    if (cVar1 == '\0') {
      auStack_3bc[0] = uVar4;
      (**(code **)(*param_1_00 + 0x40c))(auStack_3bc);
      goto LAB_009e0e88;
    }
    local_3ec = SendMessageW((HWND)param_1_00[0x4f],0x110a,4,uVar4);
    FUN_009b32e0(DAT_032e98ec,param_1_00,&local_3ec);
    uVar9 = 0xc;
    local_4 = 0xc;
    local_204 = uVar4;
    cVar1 = FUN_009dbc40(local_2b0);
    if (cVar1 != '\0') {
      FUN_009dfe80();
      FUN_009de170(&local_3ec,1);
      (**(code **)(*param_1_00 + 0x3d4))(&local_3ec);
      FUN_009b32e0(DAT_032e98e8,param_1_00,&local_3ec);
      local_4._0_1_ = 0xd;
      goto LAB_009e08c7;
    }
  }
  local_4 = 0xffffffff;
  FUN_009b33c0();
LAB_009e0e88:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009e0ef0(int *param_1_00,int param_1,uint param_2,undefined4 param_3)

{
  char cVar1;
  uint uVar2;
  HWND *ppHVar3;
  LRESULT LVar4;
  HWND pHVar5;
  uint uVar6;
  uint *puVar7;
  int iVar8;
  int iVar9;
  WPARAM wParam;
  HWND pHVar10;
  short sVar11;
  uint extraout_EDX;
  UINT Msg;
  undefined auStack_30c [3];
  char local_309;
  uint local_308;
  undefined2 local_304;
  HWND local_300;
  HWND local_2fc;
  HWND local_2f8;
  WPARAM WStack_2f4;
  int iStack_2f0;
  int iStack_2ec;
  uint local_2e8;
  RECT local_2e4;
  undefined4 local_2d4;
  uint uStack_2d0;
  uint local_2cc;
  uint local_2c8;
  uint uStack_2c4;
  uint uStack_2c0;
  uint uStack_2bc;
  uint uStack_2b8;
  uint uStack_2b4;
  uint uStack_2b0;
  uint auStack_2ac [2];
  uint uStack_2a4;
  int local_2a0;
  int local_29c;
  uint uStack_298;
  uint uStack_294;
  uint uStack_290;
  uint uStack_28c;
  uint uStack_288;
  uint uStack_284;
  uint uStack_280;
  uint uStack_27c;
  int local_278;
  HWND pHStack_274;
  uint auStack_270 [2];
  undefined4 uStack_268;
  int iStack_264;
  undefined4 uStack_260;
  undefined4 uStack_25c;
  undefined4 uStack_258;
  undefined4 uStack_254;
  undefined4 uStack_250;
  undefined4 uStack_24c;
  undefined4 uStack_248;
  undefined4 uStack_244;
  HWND pHStack_240;
  HWND pHStack_23c;
  HWND pHStack_238;
  WPARAM WStack_234;
  undefined4 uStack_230;
  int iStack_1fc;
  undefined4 uStack_1f8;
  undefined4 uStack_1dc;
  int iStack_1d8;
  HWND pHStack_1d4;
  undefined local_1d0 [88];
  undefined4 uStack_178;
  int iStack_128;
  LRESULT local_124;
  HWND pHStack_120;
  HWND pHStack_11c;
  undefined auStack_f0 [172];
  LRESULT LStack_44;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  short sVar12;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be92a5;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_30c;
  ExceptionList = &local_c;
  uVar2 = (uint)param_1_00[0x38] >> 5;
  local_309 = '\0';
  local_2d4 = 0;
  local_304 = CONCAT11(local_304._1_1_,(char)uVar2) & 0xff01;
  sVar11 = (short)param_3;
  sVar12 = (short)((uint)param_3 >> 0x10);
  if (param_1 == 0x7b) {
    local_300 = (HWND)0x0;
    if ((sVar11 == -1) || (sVar12 == -1)) {
      local_300 = (HWND)SendMessageW((HWND)param_1_00[0x4f],0x110a,9,0);
      if (local_300 == (HWND)0x0) goto switchD_009e118c_caseD_203;
      local_2f8 = (HWND)0x0;
      WStack_2f4 = 0;
      iStack_2f0 = 0;
      iStack_2ec = 0;
      (**(code **)(*param_1_00 + 0x448))(&local_300,&local_2f8,1);
      pHVar5 = (HWND)(iStack_2ec / 2 + WStack_2f4);
      pHVar10 = local_2f8;
    }
    else {
      local_2a0 = (int)sVar11;
      local_29c = (int)sVar12;
      ppHVar3 = (HWND *)FUN_00615428(&local_278,&local_2a0);
      pHVar10 = *ppHVar3;
      pHVar5 = ppHVar3[1];
      local_2e4.left = (LONG)pHVar10;
      local_2e4.top = (LONG)pHVar5;
      LVar4 = SendMessageW((HWND)param_1_00[0x4f],0x1111,0,(LPARAM)&local_2e4);
      if (LVar4 != 0) {
        local_300 = (HWND)local_2e4.bottom;
      }
    }
    if (local_300 != (HWND)0x0) {
      FUN_009b32e0(DAT_032e990c,param_1_00,&local_300);
      local_4 = 0;
      pHStack_120 = pHVar10;
      pHStack_11c = pHVar5;
      if (iStack_128 != 0) {
        uStack_178 = (**(code **)(*param_1_00 + 0x374))(&iStack_128);
      }
      cVar1 = FUN_0091c170(local_1d0);
      if (cVar1 != '\0') {
        local_309 = '\x01';
      }
      local_4 = 0xffffffff;
      FUN_009b33c0();
      goto LAB_009e10b3;
    }
    goto switchD_009e118c_caseD_203;
  }
  if (0xe < param_1 - 0x200U) {
    if ((param_1 == 7) || (param_1 == 8)) {
      if ((uVar2 & 1) != 0) {
        FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xfffffce4);
        local_4 = 0xe;
        local_2e8 = (**(code **)(*param_1_00 + 0x3c8))(&local_2f8);
        uVar2 = 0;
        if (local_2e8 != 0) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (WStack_2f4 <= uVar2)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            local_2e4.left = *(LONG *)(iStack_2f0 + uVar2 * 4);
            LVar4 = SendMessageW((HWND)param_1_00[0x4f],0x1104,1,(LPARAM)&local_2e4);
            if (LVar4 == 1) {
              InvalidateRect((HWND)param_1_00[0x4f],&local_2e4,0);
            }
            uVar2 = uVar2 + 1;
          } while (uVar2 < local_2e8);
        }
        local_4 = 0xffffffff;
        FUN_0086aa30();
      }
      if (param_1 == 8) {
        *(undefined *)((int)param_1_00 + 0x1dd) = 1;
      }
    }
    else if (((param_1 == 0x100) || (param_1 == 0x104)) && ((uVar2 & 1) != 0)) {
      if ((param_2 == 0xd) || ((0x1f < param_2 && (param_2 < 0x29)))) {
        cVar1 = FUN_00912d10(param_2,param_3);
        if ((cVar1 == '\0') && (cVar1 = FUN_009dc780(param_2,param_3), cVar1 == '\0')) {
          FUN_009e02d0(param_2);
        }
        goto LAB_009e10dd;
      }
    }
    else if (((param_1 == 0x111) &&
             (FUN_0090d8d0(param_2,param_3,&local_2fc,&local_2e8,&local_304), local_304 == 0x200))
            && (((int *)param_1_00[0x6a] != (int *)0x0 &&
                (uVar2 = (**(code **)(*(int *)param_1_00[0x6a] + 0x218))(), uVar2 == local_2e8)))) {
      FUN_009db8f0(0);
      goto LAB_009e10dd;
    }
    goto switchD_009e118c_caseD_203;
  }
  local_300 = (HWND)(int)sVar11;
  local_2fc = (HWND)(int)sVar12;
  local_2e4.left = (LONG)local_300;
  local_2e4.top = (LONG)local_2fc;
  LVar4 = SendMessageW((HWND)param_1_00[0x4f],0x110a,9,0);
  uVar2 = SendMessageW((HWND)param_1_00[0x4f],0x1111,0,(LPARAM)&local_2e4);
  switch(param_1) {
  case 0x200:
    if (param_1_00[0x74] != 0) {
      iVar9 = param_1_00[0x75];
      uVar6 = iVar9 - sVar11 >> 0x1f;
      local_308 = param_1_00[0x76] - (int)local_2fc >> 0x1f;
      local_308 = (param_1_00[0x76] - (int)local_2fc ^ local_308) - local_308;
      iVar8 = GetSystemMetrics(0x44);
      if ((iVar8 < (int)((iVar9 - sVar11 ^ uVar6) - uVar6)) ||
         (iVar9 = GetSystemMetrics(0x45), iVar9 < (int)local_308)) {
        _memset(&pHStack_238,0,0x68);
        pHStack_238 = (HWND)param_1_00[0x4f];
        WStack_234 = GetWindowLongW(pHStack_238,-0xc);
        iStack_264 = param_1_00[0x74];
        uStack_230 = 0xfffffe38;
        uStack_260 = 0;
        uStack_258 = 0;
        uStack_254 = 0;
        uStack_250 = 0;
        uStack_24c = 0;
        uStack_248 = 0;
        uStack_244 = 0;
        uStack_268 = 0xc;
        uStack_25c = 0xffffffff;
        iStack_1fc = iStack_264;
        SendMessageW((HWND)param_1_00[0x4f],0x113e,0,(LPARAM)&uStack_268);
        uStack_1f8 = uStack_260;
        iStack_1d8 = (int)sVar11;
        uStack_1dc = uStack_244;
        pHStack_1d4 = local_2fc;
        param_1_00[0x74] = 0;
        SendMessageW(*(HWND *)(param_1_00[0x11] + 0x13c),0x4e,WStack_234,(LPARAM)&pHStack_238);
        local_309 = '\x01';
      }
    }
    if (param_1_00[0x71] != 0) {
      local_278 = (int)sVar11;
      pHStack_274 = local_2fc;
      FUN_009eadd0(&local_278);
      if (uVar2 != 0) {
        FUN_009eaf20();
        SendMessageW((HWND)param_1_00[0x4f],0x110b,8,uVar2);
        FUN_009eaec0();
      }
    }
    goto LAB_009e10b3;
  case 0x201:
    if ((char)local_304 != '\0') {
      param_1_00[0x74] = 0;
      cVar1 = FUN_009dbb30(local_2e4.right);
      if (cVar1 == '\0') {
        if ((extraout_EDX & 0x10) != 0) {
          local_309 = '\x01';
          (**(code **)(*param_1_00 + 0x100))();
          cVar1 = FUN_009103d0(param_1,local_300,local_2fc,param_2);
          if (cVar1 == '\0') {
            auStack_270[0] = uVar2;
            cVar1 = (**(code **)(*param_1_00 + 0x3b0))(auStack_270);
            if (cVar1 == '\0') {
              auStack_2ac[0] = uVar2;
              (**(code **)(*param_1_00 + 0x40c))(auStack_2ac);
              *(undefined *)((int)param_1_00 + 0x1dd) = 0;
              goto LAB_009e10b3;
            }
            auStack_270[0] = uVar2;
            (**(code **)(*param_1_00 + 0x410))(auStack_270);
          }
        }
        *(undefined *)((int)param_1_00 + 0x1dd) = 0;
      }
      else {
        local_309 = '\x01';
        (**(code **)(*param_1_00 + 0x100))();
        pHVar10 = local_300;
        param_1_00[0x74] = uVar2;
        param_1_00[0x75] = (int)local_300;
        param_1_00[0x76] = (int)local_2fc;
        if ((param_2 & 8) == 0) {
          if ((param_2 & 4) == 0) {
            FUN_0086a600();
            local_4 = 5;
            uVar6 = (**(code **)(*param_1_00 + 0x3c8))(&local_2f8);
            if (((uVar6 == 0) || (1 < uVar6)) ||
               (puVar7 = (uint *)FUN_009bfa50(&local_2a0,0), *puVar7 != uVar2)) {
              cVar1 = FUN_009103d0(param_1,pHVar10,local_2fc,param_2);
              if (cVar1 != '\0') {
                param_1_00[0x74] = 0;
                local_4 = 0xffffffff;
                FUN_0086aa30();
                goto LAB_009e10dd;
              }
              cVar1 = FUN_009dcb40(uVar2);
              if (cVar1 == '\0') {
                uStack_284 = uVar2;
                FUN_009b32e0(DAT_032e98ec,param_1_00,&uStack_284);
                local_4._0_1_ = 6;
                local_124 = LVar4;
                cVar1 = FUN_009dbc40(local_1d0);
                if (cVar1 != '\0') {
                  FUN_009dfe80();
                  local_308 = uVar2;
                  FUN_009de170(&local_308,1);
                  auStack_2ac[0] = uVar2;
                  (**(code **)(*param_1_00 + 0x3d4))(auStack_2ac);
                  uStack_2d0 = uVar2;
                  FUN_009b32e0(DAT_032e98e8,param_1_00,&uStack_2d0);
                  local_4._0_1_ = 7;
                  LStack_44 = LVar4;
                  FUN_009dade0(auStack_f0);
                  local_4._0_1_ = 6;
                  FUN_009b33c0();
                }
                local_4 = CONCAT31(local_4._1_3_,5);
                FUN_009b33c0();
              }
              else {
                uStack_2a4 = uVar2;
                (**(code **)(*param_1_00 + 0x3d4))(&uStack_2a4);
                *(undefined *)(param_1_00 + 0x78) = 1;
              }
            }
            else {
              param_1_00[0x74] = 0;
              if (*(char *)((int)param_1_00 + 0x1dd) == '\0') {
                local_309 = '\0';
              }
              else {
                (**(code **)(*param_1_00 + 0x3d0))();
                local_308 = uVar2;
                FUN_009de170(&local_308,1);
                uStack_2b4 = uVar2;
                (**(code **)(*param_1_00 + 0x3d4))(&uStack_2b4);
              }
            }
            param_1_00[0x73] = 0;
            local_4 = 0xffffffff;
            FUN_0086aa30();
          }
          else {
            cVar1 = FUN_009103d0(param_1,local_300,local_2fc,param_2);
            if (cVar1 != '\0') goto LAB_009e12b8;
            if (param_1_00[0x73] == 0) {
              param_1_00[0x73] = LVar4;
            }
            else {
              cVar1 = FUN_009dce00(param_1_00[0x73],uVar2,3);
              if (cVar1 == '\0') goto LAB_009e171e;
            }
            uStack_290 = uVar2;
            FUN_009b32e0(DAT_032e98ec,param_1_00,&uStack_290);
            local_4 = 3;
            local_124 = LVar4;
            cVar1 = FUN_009dbc40(local_1d0);
            if (cVar1 != '\0') {
              if (param_1_00[0x73] == 0) {
                local_308 = uVar2;
                FUN_009de170(&local_308,1);
              }
              else {
                FUN_009dce00(param_1_00[0x73],uVar2,2);
              }
              uStack_2bc = uVar2;
              (**(code **)(*param_1_00 + 0x3d4))(&uStack_2bc);
              uStack_27c = uVar2;
              FUN_009b32e0(DAT_032e98e8,param_1_00,&uStack_27c);
              local_4._0_1_ = 4;
              LStack_44 = LVar4;
              FUN_009dade0(auStack_f0);
              local_4 = CONCAT31(local_4._1_3_,3);
              FUN_009b33c0();
            }
            local_4 = 0xffffffff;
            FUN_009b33c0();
          }
        }
        else {
          cVar1 = FUN_009103d0(param_1,local_300,local_2fc,param_2);
          if (cVar1 != '\0') {
LAB_009e12b8:
            param_1_00[0x74] = 0;
            goto LAB_009e10dd;
          }
          uStack_28c = uVar2;
          FUN_009b32e0(DAT_032e98ec,param_1_00,&uStack_28c);
          local_4 = 1;
          LStack_44 = LVar4;
          cVar1 = FUN_009dbc40(auStack_f0);
          if (cVar1 != '\0') {
            local_308 = uVar2;
            FUN_009de980(&local_308);
            uStack_280 = uVar2;
            (**(code **)(*param_1_00 + 0x3d4))(&uStack_280);
            param_1_00[0x73] = 0;
            uStack_2c4 = uVar2;
            FUN_009b32e0(DAT_032e98e8,param_1_00,&uStack_2c4);
            local_4._0_1_ = 2;
            local_124 = LVar4;
            FUN_009dade0(local_1d0);
            local_4 = CONCAT31(local_4._1_3_,1);
            FUN_009b33c0();
          }
          local_4 = 0xffffffff;
          FUN_009b33c0();
        }
LAB_009e171e:
        *(undefined *)((int)param_1_00 + 0x1dd) = 0;
        if (local_309 == '\0') break;
        pHStack_240 = local_300;
        pHStack_23c = local_2fc;
        local_308 = 0;
        FUN_009da780(&local_300,&pHStack_240,&local_308);
        if ((local_308 & 0x100) != 0) {
          *(undefined *)((int)param_1_00 + 0x1df) = 1;
        }
      }
      goto LAB_009e10b3;
    }
    break;
  case 0x202:
    if ((char)local_304 != '\0') {
      if ((uVar2 != 0) && (*(char *)(param_1_00 + 0x78) != '\0')) {
        *(undefined *)(param_1_00 + 0x78) = 0;
        local_2cc = uVar2;
        FUN_009b32e0(DAT_032e98ec,param_1_00,&local_2cc);
        local_4 = 10;
        local_124 = LVar4;
        cVar1 = FUN_009dbc40(local_1d0);
        if (cVar1 != '\0') {
          FUN_009dfe80();
          local_308 = uVar2;
          FUN_009de170(&local_308,1);
          local_2c8 = uVar2;
          (**(code **)(*param_1_00 + 0x3d4))(&local_2c8);
          uStack_2c0 = uVar2;
          FUN_009b32e0(DAT_032e98e8,param_1_00,&uStack_2c0);
          local_4._0_1_ = 0xb;
          LStack_44 = LVar4;
          FUN_009dade0(auStack_f0);
          local_4 = CONCAT31(local_4._1_3_,10);
          FUN_009b33c0();
        }
        local_4 = 0xffffffff;
        FUN_009b33c0();
      }
      param_1_00[0x74] = 0;
      if ((*(char *)((int)param_1_00 + 0x1df) != '\0') && ((local_2e4.right & 0x40U) != 0)) {
        uStack_2b8 = uVar2;
        FUN_009b32e0(DAT_032e9904,param_1_00,&uStack_2b8);
        local_4 = 0xc;
        FUN_009dade0(auStack_f0);
        *(undefined *)((int)param_1_00 + 0x1df) = 0;
        local_309 = '\x01';
        local_4 = 0xffffffff;
        FUN_009b33c0();
      }
      if ((*(char *)(param_1_00 + 0x77) == '\0') &&
         (cVar1 = FUN_009dbb30(local_2e4.right), cVar1 != '\0')) {
        local_309 = '\x01';
      }
    }
  case 0x205:
    if (param_1_00[0x71] != 0) {
      FUN_009eb660();
      FUN_00938b80(param_1_00 + 0x71);
      uStack_2b0 = uVar2;
      FUN_009b32e0(DAT_032e9900,param_1_00,&uStack_2b0);
      pHStack_11c = local_2fc;
      local_4 = 0xd;
      pHStack_120 = local_300;
      FUN_009dade0(local_1d0);
      SendMessageW((HWND)param_1_00[0x4f],0x110b,8,0);
      local_4 = 0xffffffff;
      FUN_009b33c0();
    }
    if (((char)local_304 != '\0') && (param_1 == 0x205)) {
      local_2f8 = (HWND)param_1_00[0x4f];
      wParam = GetWindowLongW(local_2f8,-0xc);
      ppHVar3 = &local_2f8;
      Msg = 0x4e;
      iStack_2f0 = -5;
      WStack_2f4 = wParam;
      pHVar10 = GetParent((HWND)param_1_00[0x4f]);
      SendMessageW(pHVar10,Msg,wParam,(LPARAM)ppHVar3);
      local_309 = '\x01';
    }
    *(undefined *)(param_1_00 + 0x77) = 0;
LAB_009e10b3:
    if (local_309 != '\0') goto LAB_009e10dd;
    break;
  case 0x204:
    if ((char)local_304 != '\0') {
      (**(code **)(*param_1_00 + 0x100))();
      cVar1 = FUN_009103d0(param_1,local_300,local_2fc,param_2);
      if (((cVar1 == '\0') && (uVar2 != 0)) && (cVar1 = FUN_009dcb40(uVar2), cVar1 == '\0')) {
        uStack_294 = uVar2;
        FUN_009b32e0(DAT_032e98ec,param_1_00,&uStack_294);
        local_4 = 8;
        local_124 = LVar4;
        cVar1 = FUN_009dbc40(local_1d0);
        if (cVar1 != '\0') {
          FUN_009dfe80();
          local_308 = uVar2;
          FUN_009de170(&local_308,1);
          uStack_298 = uVar2;
          (**(code **)(*param_1_00 + 0x3d4))(&uStack_298);
          uStack_288 = uVar2;
          FUN_009b32e0(DAT_032e98e8,param_1_00,&uStack_288);
          local_4._0_1_ = 9;
          LStack_44 = LVar4;
          FUN_009dade0(auStack_f0);
          local_4 = CONCAT31(local_4._1_3_,8);
          FUN_009b33c0();
        }
        local_4 = 0xffffffff;
        FUN_009b33c0();
      }
      goto LAB_009e10dd;
    }
  }
switchD_009e118c_caseD_203:
  local_2d4 = FUN_0090d970(param_1,param_2,param_3);
LAB_009e10dd:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_009e1f10(void)

{
  return 10;
}



void __thiscall
FUN_009e1f20(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uStack_c;
  
  (**(code **)(*param_1_00 + 0x40))(param_1,param_2,param_3,param_4);
  (**(code **)(*param_1_00 + 0x1c))(uStack_c,param_2,&stack0xffffffe0,param_4);
  return;
}



void __fastcall FUN_009e1f90(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x009e1f95. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x3c))();
  return;
}



void __fastcall FUN_009e1fa0(int **param_1)

{
  if (param_1[1] != (int *)0x0) {
    (**(code **)(**param_1 + 0x18))(param_1[1]);
  }
  return;
}



int ** __thiscall FUN_009e1fc0(int *param_1_00,int **param_1)

{
  code *pcVar1;
  int *piVar2;
  
  pcVar1 = *(code **)(*param_1_00 + 0x14);
  *param_1 = param_1_00;
  piVar2 = (int *)(*pcVar1)();
  param_1[1] = piVar2;
  return param_1;
}



void __fastcall FUN_009e1ff0(int *param_1)

{
  char cVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be92eb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  cVar1 = (**(code **)(param_1[1] + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  if (cVar1 != '\0') {
    (**(code **)(**(int **)(*param_1 + 8) + 0x60))(param_1 + 1);
  }
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_009e2060(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be9318;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1 = wxDelegateRendererNative::vftable;
  uVar2 = thunk_FUN_009ece90(uVar1);
  param_1[1] = uVar2;
  ExceptionList = local_c;
  return param_1;
}



void FUN_009e20c0(undefined4 param_1,undefined4 param_2,int *param_3)

{
  int iVar1;
  int *local_18;
  int iStack_14;
  RECT local_10;
  
  local_10.top = param_3[1];
  local_10.left = *param_3;
  local_10.bottom = param_3[3] + local_10.top;
  local_10.right = param_3[2] + local_10.left;
  iVar1 = FUN_009e1fc0(&local_18);
  DrawFocusRect(*(HDC *)(iVar1 + 4),&local_10);
  if (iStack_14 != 0) {
    (**(code **)(*local_18 + 0x18))(iStack_14);
  }
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * FUN_009e2120(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be934e;
  local_c = ExceptionList;
  if ((DAT_032ea184 & 1) == 0) {
    DAT_032ea184 = DAT_032ea184 | 1;
    local_4 = 0;
    ExceptionList = &local_c;
    FUN_009e2060(DAT_0323f878 ^ (uint)&local_c);
    _DAT_032ea17c = wxRendererMSW::vftable;
    _atexit((_func_4879 *)&LAB_00c78fe0);
  }
  ExceptionList = local_c;
  return &DAT_032ea17c;
}



void FUN_009e21a0(undefined4 param_1,uint param_2,undefined4 param_3)

{
  int iVar1;
  int *unaff_ESI;
  UINT UVar2;
  int unaff_EDI;
  int iStack_28;
  int iStack_24;
  int local_20;
  int iStack_1c;
  tagRECT tStack_18;
  
  if (*(int **)(param_2 + 8) == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\renderer.cpp",0x18e,"wxRendererMSW::DrawComboBoxDropButton",
                   "dc.GetImpl()");
    }
  }
  else {
    (**(code **)(**(int **)(param_2 + 8) + 0x128))(&local_20,param_3);
    tStack_18.right = local_20 + iStack_28;
    tStack_18.bottom = iStack_1c + iStack_24;
    UVar2 = 5;
    if ((param_2 & 1) != 0) {
      UVar2 = 0x105;
    }
    if ((param_2 & 4) != 0) {
      UVar2 = UVar2 | 0x4200;
    }
    iVar1 = FUN_009e1fc0(&stack0xffffffd0);
    DrawFrameControl(*(HDC *)(iVar1 + 4),&tStack_18,3,UVar2);
    if (unaff_EDI != 0) {
      (**(code **)(*unaff_ESI + 0x18))(unaff_EDI);
      return;
    }
  }
  return;
}



void FUN_009e2280(void)

{
  int iVar1;
  int *unaff_ESI;
  int unaff_EDI;
  UINT unaff_retaddr;
  char param_4;
  undefined4 param_5;
  int iStack_28;
  int iStack_24;
  int local_20;
  int iStack_1c;
  tagRECT tStack_18;
  UINT UStack_4;
  
  if (*(int **)(_param_4 + 8) == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\renderer.cpp",0x1a6,"wxRendererMSW::DoDrawFrameControl",
                   "dc.GetImpl()");
    }
  }
  else {
    (**(code **)(**(int **)(_param_4 + 8) + 0x128))(&local_20,param_5);
    tStack_18.right = local_20 + iStack_28;
    tStack_18.bottom = iStack_1c + iStack_24;
    if ((_param_4 & 0x40) != 0) {
      unaff_retaddr = unaff_retaddr | 0x400;
    }
    if ((_param_4 & 1) != 0) {
      unaff_retaddr = unaff_retaddr | 0x100;
    }
    if ((_param_4 & 8) != 0) {
      unaff_retaddr = unaff_retaddr | 0x8000;
    }
    if ((_param_4 & 4) != 0) {
      unaff_retaddr = unaff_retaddr | 0x200;
    }
    if ((_param_4 & 0x10) != 0) {
      unaff_retaddr = unaff_retaddr | 0x1000;
    }
    if (param_4 < '\0') {
      unaff_retaddr = unaff_retaddr | 0x500;
    }
    iVar1 = FUN_009e1fc0(&stack0xffffffd0);
    DrawFrameControl(*(HDC *)(iVar1 + 4),&tStack_18,UStack_4,unaff_retaddr);
    if (unaff_EDI != 0) {
      (**(code **)(*unaff_ESI + 0x18))(unaff_EDI);
      return;
    }
  }
  return;
}



void FUN_009e2380(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,
                 undefined4 param_5)

{
  undefined4 uVar1;
  
  if (param_4 < 0x4000001) {
    if (param_4 == 0x4000000) {
      uVar1 = 1;
    }
    else if (param_4 == 0x1000000) {
      uVar1 = 0;
    }
    else {
      if (param_4 != 0x2000000) goto LAB_009e23bb;
      uVar1 = 2;
    }
  }
  else if (param_4 == 0x8000000) {
    uVar1 = 3;
  }
  else {
    if (param_4 != 0x10000000) {
LAB_009e23bb:
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
        return;
      }
      FUN_008402e0("..\\..\\src\\msw\\renderer.cpp",500,"wxRendererMSW::DrawTitleBarBitmap",
                   "Assert failure","unsupported title bar button");
      return;
    }
    uVar1 = 4;
  }
  FUN_009e2280(1,uVar1,param_1,param_2,param_3,param_5);
  return;
}



int * FUN_009e2420(int *param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = GetSystemMetrics(0x48);
  iVar2 = GetSystemMetrics(0x47);
  param_1[1] = iVar1;
  *param_1 = iVar2;
  return param_1;
}



void __thiscall
FUN_009e2450(int param_1_00,int param_1,uint param_3,undefined4 param_4,undefined4 param_5)

{
  undefined4 uVar1;
  uint uVar2;
  code **ppcVar3;
  int iVar4;
  int iVar5;
  char cVar6;
  uint *puVar7;
  int iVar8;
  uint uStack_34;
  void *pvStack_30;
  int iStack_2c;
  int iStack_28;
  uint auStack_24 [2];
  void *pvStack_1c;
  int iStack_18;
  void *pvStack_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be93b0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  ppcVar3 = (code **)FUN_0098e820(uVar2);
  if (ppcVar3 == (code **)0x0) {
    iVar4 = 0;
  }
  else {
    iVar4 = (**ppcVar3)(*(undefined4 *)(param_1 + 0x13c),L"COMBOBOX");
  }
  local_4 = 0;
  if (iVar4 == 0) {
    (**(code **)(**(int **)(param_1_00 + 4) + 0x1c))(param_1,param_3,param_4,param_5);
    ExceptionList = pvStack_1c;
    return;
  }
  if (*(int **)(param_3 + 8) != (int *)0x0) {
    (**(code **)(**(int **)(param_3 + 8) + 0x128))(&iStack_2c,param_4);
    pvStack_1c = (void *)(iStack_2c + uStack_34);
    auStack_24[0] = uStack_34;
    iStack_18 = iStack_28 + (int)pvStack_30;
    if ((param_3 & 4) == 0) {
      if ((param_3 & 0x10) == 0) {
        cVar6 = (-((param_3 & 1) != 0) & 3U) + 1;
      }
      else {
        cVar6 = '\x02';
      }
    }
    else {
      cVar6 = '\x03';
    }
    iVar5 = FUN_009e1fc0(&stack0xffffffc4);
    uVar1 = *(undefined4 *)(iVar5 + 4);
    local_c = (void *)CONCAT31(local_c._1_3_,1);
    iVar5 = FUN_0098e820();
    iVar8 = 0;
    puVar7 = auStack_24;
    (**(code **)(iVar5 + 8))(iVar4,uVar1,1,cVar6);
    auStack_24[0] = auStack_24[0] & 0xffffff00;
    if (iVar8 != 0) {
      (**(code **)(*puVar7 + 0x18))(iVar8);
    }
    auStack_24[0] = 0xffffffff;
    iVar5 = FUN_0098e820();
    (**(code **)(iVar5 + 4))(iVar4);
    ExceptionList = pvStack_30;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\renderer.cpp",0x278,"wxRendererXP::DrawComboBoxDropButton",
                 "dc.GetImpl()",L"Invalid wxDC");
  }
  local_4 = 0xffffffff;
  iVar5 = FUN_0098e820(uVar2);
  (**(code **)(iVar5 + 4))(iVar4);
  ExceptionList = pvStack_10;
  return;
}



undefined4 __thiscall
FUN_009e2610(int param_1_00,int param_1,uint param_3,int *param_4,undefined4 param_5,
            undefined4 param_6,undefined4 param_7)

{
  uint uVar1;
  code **ppcVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  char cVar6;
  int *piVar7;
  int local_3c;
  int local_38;
  void *pvStack_34;
  int iStack_30;
  int iStack_2c;
  int iStack_28;
  void *pvStack_24;
  int iStack_20;
  int iStack_1c;
  int iStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be9380;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  local_38 = param_1_00;
  ppcVar2 = (code **)FUN_0098e820();
  if (ppcVar2 == (code **)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = (**ppcVar2)(*(undefined4 *)(param_1 + 0x13c),L"HEADER");
  }
  local_4 = 0;
  local_3c = iVar3;
  if (iVar3 == 0) {
    uVar4 = (**(code **)**(undefined4 **)(param_1_00 + 4))
                      (param_1,param_3,param_4,param_5,param_6,param_7);
  }
  else if (*(int **)(param_3 + 8) == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\renderer.cpp",0x2a3,"wxRendererXP::DrawHeaderButton",
                   "dc.GetImpl()",L"Invalid wxDC");
    }
    local_4 = 0xffffffff;
    iVar5 = FUN_0098e820();
    (**(code **)(iVar5 + 4))(iVar3);
    uVar4 = 0xffffffff;
  }
  else {
    piVar7 = &iStack_2c;
    (**(code **)(**(int **)(param_3 + 8) + 0x128))();
    iStack_1c = iStack_2c + (int)pvStack_34;
    pvStack_24 = pvStack_34;
    iStack_18 = iStack_28 + iStack_30;
    iStack_20 = iStack_30;
    if ((param_3 & 4) == 0) {
      cVar6 = ((param_3 & 0x10) != 0) + '\x01';
    }
    else {
      cVar6 = '\x03';
    }
    iVar5 = FUN_009e1fc0(&local_3c);
    uVar4 = *(undefined4 *)(iVar5 + 4);
    local_c = (void *)CONCAT31(local_c._1_3_,1);
    iVar5 = FUN_0098e820();
    (**(code **)(iVar5 + 8))(iVar3,uVar4,1,cVar6,&pvStack_24,0);
    pvStack_24 = (void *)((uint)pvStack_24 & 0xffffff00);
    if (uVar1 != 0) {
      (**(code **)(*param_4 + 0x18))(uVar1);
    }
    uVar4 = (**(code **)(*piVar7 + 4))(iStack_1c,param_3,uStack_14,uStack_10,local_c,puStack_8);
    local_3c = -1;
    iVar5 = FUN_0098e820();
    (**(code **)(iVar5 + 4))(iVar3);
  }
  ExceptionList = pvStack_24;
  return uVar4;
}



void __thiscall
FUN_009e27e0(int param_1_00,int param_1,uint param_3,undefined4 param_4,undefined4 param_5)

{
  undefined4 uVar1;
  uint uVar2;
  code **ppcVar3;
  int iVar4;
  int iVar5;
  uint *puVar6;
  int iVar7;
  uint uStack_34;
  void *pvStack_30;
  int iStack_2c;
  int iStack_28;
  uint auStack_24 [2];
  void *pvStack_1c;
  int iStack_18;
  void *pvStack_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be93b0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  ppcVar3 = (code **)FUN_0098e820(uVar2);
  if (ppcVar3 == (code **)0x0) {
    iVar4 = 0;
  }
  else {
    iVar4 = (**ppcVar3)(*(undefined4 *)(param_1 + 0x13c),L"TREEVIEW");
  }
  local_4 = 0;
  if (iVar4 == 0) {
    (**(code **)(**(int **)(param_1_00 + 4) + 0x10))(param_1,param_3,param_4,param_5);
    ExceptionList = pvStack_1c;
    return;
  }
  if (*(int **)(param_3 + 8) != (int *)0x0) {
    (**(code **)(**(int **)(param_3 + 8) + 0x128))(&iStack_2c,param_4);
    pvStack_1c = (void *)(iStack_2c + uStack_34);
    auStack_24[0] = uStack_34;
    iStack_18 = iStack_28 + (int)pvStack_30;
    iVar5 = FUN_009e1fc0(&stack0xffffffc4);
    uVar1 = *(undefined4 *)(iVar5 + 4);
    local_c = (void *)CONCAT31(local_c._1_3_,1);
    iVar5 = FUN_0098e820();
    iVar7 = 0;
    puVar6 = auStack_24;
    (**(code **)(iVar5 + 8))(iVar4,uVar1,2,((param_3 & 8) != 0) + '\x01');
    auStack_24[0] = auStack_24[0] & 0xffffff00;
    if (iVar7 != 0) {
      (**(code **)(*puVar6 + 0x18))(iVar7);
    }
    auStack_24[0] = 0xffffffff;
    iVar5 = FUN_0098e820();
    (**(code **)(iVar5 + 4))(iVar4);
    ExceptionList = pvStack_30;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\renderer.cpp",0x2d1,"wxRendererXP::DrawTreeItemButton",
                 "dc.GetImpl()",L"Invalid wxDC");
  }
  local_4 = 0xffffffff;
  iVar5 = FUN_0098e820(uVar2);
  (**(code **)(iVar5 + 4))(iVar4);
  ExceptionList = pvStack_10;
  return;
}



void FUN_009e2980(undefined4 param_1,undefined4 param_2,uint param_3,undefined4 param_4)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  int unaff_retaddr;
  int *piStack_34;
  int iStack_30;
  int local_2c;
  int iStack_28;
  undefined auStack_24 [8];
  int iStack_1c;
  int iStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be93d8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int **)(param_3 + 8) == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\renderer.cpp",0x2fb,"wxRendererXP::DoDrawButtonLike",
                   "dc.GetImpl()",L"Invalid wxDC",DAT_0323f878 ^ (uint)&stack0xffffffc0);
    }
  }
  else {
    (**(code **)(**(int **)(param_3 + 8) + 0x128))(&local_2c,param_4);
    iStack_1c = local_2c + (int)piStack_34;
    iStack_18 = iStack_28 + iStack_30;
    iVar3 = 1;
    if ((param_3 & 0x40) == 0) {
      if ((char)param_3 < '\0') {
        iVar3 = 9;
      }
    }
    else {
      iVar3 = 5;
    }
    if ((param_3 & 1) == 0) {
      if ((param_3 & 4) == 0) {
        if ((param_3 & 0x10) == 0) {
          if ((unaff_retaddr == 1) && ((param_3 & 8) != 0)) {
            iVar3 = 5;
          }
        }
        else {
          iVar3 = iVar3 + 1;
        }
      }
      else {
        iVar3 = iVar3 + 2;
      }
    }
    else {
      iVar3 = iVar3 + 3;
    }
    iVar2 = FUN_009e1fc0(&stack0xffffffc4);
    uVar1 = *(undefined4 *)(iVar2 + 4);
    local_c = (void *)0x0;
    iVar2 = FUN_0098e820();
    (**(code **)(iVar2 + 8))(uStack_4,uVar1,unaff_retaddr,iVar3,auStack_24,0);
    uStack_4 = 0xffffffff;
    if (iStack_30 != 0) {
      (**(code **)(*piStack_34 + 0x18))(iStack_30);
      ExceptionList = pvStack_10;
      return;
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_009e2ae0(int param_1_00,int param_1,undefined4 param_3,undefined4 param_4,int param_5,
            void *param_6)

{
  uint uVar1;
  code **ppcVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  void *unaff_EBX;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be9408;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  ppcVar2 = (code **)FUN_0098e820(uVar1);
  if (ppcVar2 == (code **)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = (**ppcVar2)(*(undefined4 *)(param_1 + 0x13c),L"WINDOW");
  }
  local_4 = 0;
  if (iVar3 == 0) {
    (**(code **)(**(int **)(param_1_00 + 4) + 0x48))(param_1,param_3,param_4,param_5);
    ExceptionList = param_6;
    return;
  }
  if (param_5 < 0x4000001) {
    if (param_5 == 0x4000000) {
      uVar4 = 0xf;
    }
    else if (param_5 == 0x1000000) {
      uVar4 = 0x12;
    }
    else {
      if (param_5 != 0x2000000) goto LAB_009e2baa;
      uVar4 = 0x11;
    }
  }
  else if (param_5 == 0x8000000) {
    uVar4 = 0x15;
  }
  else {
    if (param_5 != 0x10000000) {
LAB_009e2baa:
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_008402e0("..\\..\\src\\msw\\renderer.cpp",0x353,"wxRendererXP::DrawTitleBarBitmap",
                     "Assert failure","unsupported title bar button");
      }
      local_4 = 0xffffffff;
      iVar5 = FUN_0098e820(uVar1);
      (**(code **)(iVar5 + 4))(iVar3);
      ExceptionList = unaff_EBX;
      return;
    }
    uVar4 = 0x17;
  }
  FUN_009e2980(iVar3,uVar4,param_3,param_4,param_6);
  local_4 = 0xffffffff;
  iVar5 = FUN_0098e820(uVar1);
  (**(code **)(iVar5 + 4))(iVar3);
  ExceptionList = unaff_EBX;
  return;
}



undefined4 * __thiscall FUN_009e2c50(int param_1_00,undefined4 *param_1,int param_2)

{
  if ((*(uint *)(param_2 + 0xe0) >> 10 & 1) != 0) {
    (**(code **)(**(int **)(param_1_00 + 4) + 0x4c))(param_1,param_2);
    return param_1;
  }
  *param_1 = 4;
  param_1[1] = 0;
  *(undefined *)(param_1 + 2) = 0;
  return param_1;
}



void __thiscall
FUN_009e2c90(int param_1_00,int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  if ((*(uint *)(param_1 + 0xe0) >> 10 & 1) != 0) {
    (**(code **)(**(int **)(param_1_00 + 4) + 0x14))(param_1,param_2,param_3,param_4);
  }
  return;
}



void __thiscall
FUN_009e2cd0(int param_1_00,undefined4 *param_1,int param_2,int param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  undefined4 uVar1;
  void *apvStack_24 [6];
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00be9440;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (((uint)param_1[0x38] >> 10 & 1) != 0) {
    (**(code **)(**(int **)(param_1_00 + 4) + 0x18))
              (param_1,param_2,param_3,param_4,param_5,param_6,DAT_0323f878 ^ (uint)&stack0xffffffd4
              );
    ExceptionList = apvStack_24[0];
    return;
  }
  uVar1 = FUN_008f8330(0x24);
  (**(code **)(**(int **)(param_2 + 8) + 0x58))(uVar1);
  uVar1 = FUN_008ff080(apvStack_24,0xf);
  uStack_8 = (undefined *)0x0;
  uVar1 = FUN_0095d7e0(uVar1,100);
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
  (**(code **)(**(int **)(param_2 + 8) + 0x60))(uVar1);
  local_c = (void *)((uint)local_c & 0xffffff00);
  FUN_008f7630();
  local_c = (void *)0xffffffff;
  FUN_0083e850();
  if (param_3 == 8) {
    (**(code **)(**(int **)(param_2 + 8) + 0x150))(param_2,0,4,param_1[1]);
    ExceptionList = apvStack_24[0];
    return;
  }
  (**(code **)(**(int **)(param_2 + 8) + 0x150))(0,param_2,*param_1,4);
  ExceptionList = apvStack_24[0];
  return;
}



void FUN_009e2e20(char *param_1)

{
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00be9460;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  if (*param_1 == '\0') {
    local_8 = 0;
    (**(code **)(param_1 + 4))(*(undefined4 *)(param_1 + 8));
  }
  ExceptionList = local_10;
  return;
}



undefined4 Catch_All_009e2e74(void)

{
  return 0x9e2e62;
}



undefined4 __thiscall FUN_009e2e80(undefined4 param_1_00,byte param_1)

{
  FUN_009b9fb0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_009e2ea0(int param_1,int param_2)

{
  uint uVar1;
  code **ppcVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined ***pppuVar5;
  uint uStack_68;
  undefined **ppuStack_54;
  undefined auStack_50 [4];
  undefined **ppuStack_4c;
  undefined **local_48;
  undefined4 local_44;
  undefined **ppuStack_40;
  undefined uStack_3c;
  undefined uStack_3b;
  undefined uStack_3a;
  undefined uStack_39;
  undefined auStack_38 [4];
  undefined **local_34;
  undefined4 local_30;
  undefined **ppuStack_2c;
  undefined uStack_28;
  undefined uStack_27;
  undefined uStack_26;
  undefined uStack_25;
  undefined4 uStack_24;
  undefined **ppuStack_20;
  undefined4 uStack_1c;
  undefined uStack_18;
  undefined4 local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  uStack_8 = &LAB_00be94d0;
  local_c = ExceptionList;
  uStack_68 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  local_30 = 0;
  local_4 = 0;
  local_34 = wxColour::vftable;
  FUN_0093b2c0();
  local_44 = 0;
  local_4._0_1_ = 2;
  local_4._1_3_ = 0;
  local_48 = wxColour::vftable;
  FUN_0093b2c0();
  local_4 = CONCAT31(local_4._1_3_,3);
  ppcVar2 = (code **)FUN_0098e820();
  if (ppcVar2 == (code **)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    puVar3 = (undefined4 *)(**ppcVar2)(*(undefined4 *)(param_1 + 0x13c),L"EDIT");
  }
  local_4 = CONCAT31(local_4._1_3_,4);
  if (puVar3 == (undefined4 *)0x0) {
    pppuVar5 = (undefined ***)FUN_008ff080(&ppuStack_20,5);
    local_4._0_1_ = 7;
    if (&local_34 != pppuVar5) {
      FUN_0083ea60(pppuVar5);
    }
    ppuStack_2c = pppuVar5[2];
    uStack_28 = *(undefined *)(pppuVar5 + 3);
    uStack_27 = *(undefined *)((int)pppuVar5 + 0xd);
    uStack_26 = *(undefined *)((int)pppuVar5 + 0xe);
    uStack_25 = *(undefined *)((int)pppuVar5 + 0xf);
    uStack_24 = (void *)CONCAT31(uStack_24._1_3_,*(undefined *)(pppuVar5 + 4));
    local_4 = CONCAT31(local_4._1_3_,4);
    ppuStack_20 = wxObject::vftable;
    FUN_0083e850();
    pppuVar5 = (undefined ***)FUN_008f7e50(0xb);
    if (&local_48 != pppuVar5) {
      FUN_0083ea60(pppuVar5);
    }
    ppuStack_40 = pppuVar5[2];
    uStack_3c = *(undefined *)(pppuVar5 + 3);
    uStack_3b = *(undefined *)((int)pppuVar5 + 0xd);
    uStack_3a = *(undefined *)((int)pppuVar5 + 0xe);
    uStack_39 = *(undefined *)((int)pppuVar5 + 0xf);
    auStack_38[0] = *(undefined *)(pppuVar5 + 4);
  }
  else {
    iVar4 = FUN_0098e820();
    (**(code **)(iVar4 + 0x3c))(puVar3,1,1,0xeda,&ppuStack_54);
    pppuVar5 = (undefined ***)FUN_008fee20(&local_34,uStack_68);
    uStack_18 = 5;
    if (&local_48 != pppuVar5) {
      FUN_0083ea60(pppuVar5);
    }
    ppuStack_40 = pppuVar5[2];
    uStack_3c = *(undefined *)(pppuVar5 + 3);
    uStack_3b = *(undefined *)((int)pppuVar5 + 0xd);
    uStack_3a = *(undefined *)((int)pppuVar5 + 0xe);
    uStack_39 = *(undefined *)((int)pppuVar5 + 0xf);
    auStack_38[0] = *(undefined *)(pppuVar5 + 4);
    uStack_18 = 4;
    local_34 = wxObject::vftable;
    FUN_0083e850();
    uVar1 = local_4 & 1;
    iVar4 = FUN_0098e820();
    (**(code **)(iVar4 + 0x3c))(puVar3,1,(-(uVar1 != 0) & 3U) + 1,0xed9,&uStack_68);
    pppuVar5 = (undefined ***)FUN_008fee20(&ppuStack_20,ppuStack_54);
    local_4._0_1_ = 6;
    if (&local_48 != pppuVar5) {
      FUN_0083ea60(pppuVar5);
    }
    ppuStack_40 = pppuVar5[2];
    uStack_3c = *(undefined *)(pppuVar5 + 3);
    uStack_3b = *(undefined *)((int)pppuVar5 + 0xd);
    uStack_3a = *(undefined *)((int)pppuVar5 + 0xe);
    uStack_39 = *(undefined *)((int)pppuVar5 + 0xf);
    auStack_38[0] = *(undefined *)(pppuVar5 + 4);
    local_4 = CONCAT31(local_4._1_3_,4);
    ppuStack_20 = wxObject::vftable;
    FUN_0083e850();
  }
  FUN_009566f0(&local_48,1,100);
  local_4 = CONCAT31(local_4._1_3_,8);
  (**(code **)(**(int **)(param_2 + 8) + 0x58))(auStack_50);
  uStack_8._0_1_ = 4;
  ppuStack_54 = wxObject::vftable;
  FUN_0083e850();
  FUN_0095d7e0(auStack_38,100);
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,9);
  (**(code **)(**(int **)(param_2 + 8) + 0x60))(&ppuStack_54);
  local_c = (void *)CONCAT31(local_c._1_3_,4);
  FUN_008f7630();
  (**(code **)(**(int **)(param_2 + 8) + 0x150))(*puVar3,puVar3[1],puVar3[2],puVar3[3]);
  uStack_1c._0_1_ = 3;
  if (puVar3 != (undefined4 *)0x0) {
    iVar4 = FUN_0098e820();
    (**(code **)(iVar4 + 4))(puVar3);
  }
  uStack_1c = CONCAT31(uStack_1c._1_3_,1);
  FUN_0083e850();
  uStack_1c = 0xffffffff;
  ppuStack_4c = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = uStack_24;
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * FUN_009e31f0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be94fe;
  local_c = ExceptionList;
  if ((DAT_032ea190 & 1) == 0) {
    DAT_032ea190 = DAT_032ea190 | 1;
    local_4 = 0;
    ExceptionList = &local_c;
    _DAT_032ea18c = FUN_009e2120(DAT_0323f878 ^ (uint)&local_c);
    _DAT_032ea188 = wxRendererXP::vftable;
    _atexit((_func_4879 *)&LAB_00c78ff0);
  }
  ExceptionList = local_c;
  return &DAT_032ea188;
}



undefined4
FUN_009e3270(undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5
            )

{
  uint uVar1;
  code **ppcVar2;
  int iVar3;
  int iVar4;
  void *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be9528;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  ppcVar2 = (code **)FUN_0098e820(uVar1);
  if (ppcVar2 == (code **)0x0) {
    iVar3 = 0;
  }
  else {
    iVar3 = (**ppcVar2)(*(undefined4 *)(param_2 + 0x13c),L"BUTTON");
  }
  local_4 = 0;
  if (iVar3 == 0) {
    ExceptionList = local_c;
    return 0;
  }
  FUN_009e2980(iVar3,param_1,param_3,param_4,param_5);
  local_4 = 0xffffffff;
  iVar4 = FUN_0098e820(uVar1);
  (**(code **)(iVar4 + 4))(iVar3);
  ExceptionList = unaff_ESI;
  return 1;
}



int * __thiscall FUN_009e3330(int *param_1_00,int param_1,undefined4 param_3)

{
  uint uVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be955b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  iVar2 = (**(code **)(**(int **)(param_1 + 8) + 100))(uVar1);
  param_1_00[1] = (int)wxObject::vftable;
  iVar2 = *(int *)(iVar2 + 4);
  param_1_00[2] = iVar2;
  if (iVar2 != 0) {
    *(int *)(iVar2 + 4) = *(int *)(iVar2 + 4) + 1;
  }
  param_1_00[1] = (int)wxBrush::vftable;
  uStack_4 = 0;
  (**(code **)(**(int **)(*param_1_00 + 8) + 0x60))(param_3);
  ExceptionList = param_1_00;
  return param_1_00;
}



void FUN_009e33c0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_009e2280(4,0,param_1,param_2,param_3,param_4);
  return;
}



void FUN_009e33e0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_009e2280(4,4,param_1,param_2,param_3,param_4);
  return;
}



void __thiscall
FUN_009e3400(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  char cVar1;
  
  cVar1 = FUN_009e3270(3,param_1,param_2,param_3,param_4);
  if (cVar1 == '\0') {
    (**(code **)(**(int **)(param_1_00 + 4) + 0x24))(param_1,param_2,param_3,param_4);
  }
  return;
}



void __thiscall
FUN_009e3440(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  char cVar1;
  
  cVar1 = FUN_009e3270(1,param_1,param_2,param_3,param_4);
  if (cVar1 == '\0') {
    (**(code **)(**(int **)(param_1_00 + 4) + 0x2c))(param_1,param_2,param_3,param_4);
  }
  return;
}



void __thiscall
FUN_009e3480(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  char cVar1;
  
  cVar1 = FUN_009e3270(2,param_1,param_2,param_3,param_4);
  if (cVar1 == '\0') {
    (**(code **)(**(int **)(param_1_00 + 4) + 0x44))(param_1,param_2,param_3,param_4);
  }
  return;
}



void __thiscall
FUN_009e34c0(int *param_1_00,undefined4 *param_1,int param_2,undefined4 param_3,uint param_4)

{
  undefined4 uVar1;
  undefined *puVar2;
  undefined local_30 [12];
  void *pvStack_24;
  undefined **local_20;
  undefined4 uStack_1c;
  undefined4 uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be95a8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0095d530(DAT_0323f878 ^ (uint)&stack0xffffffc0);
  local_4 = 0;
  if ((param_4 & 0x20) == 0) {
    puVar2 = (undefined *)FUN_008f8a00(9);
    if (local_30 != puVar2) {
      FUN_0083ea60(puVar2);
    }
  }
  else if ((param_4 & 2) == 0) {
    uVar1 = FUN_008ff080(&local_20,0xf);
    local_4._0_1_ = 3;
    puVar2 = (undefined *)FUN_0095d7e0(uVar1,100);
    local_4._0_1_ = 4;
    if (local_30 != puVar2) {
      FUN_0083ea60(puVar2);
    }
    local_4._0_1_ = 3;
    FUN_008f7630();
    local_4 = (uint)local_4._1_3_ << 8;
    local_20 = wxObject::vftable;
    FUN_0083e850();
  }
  else {
    uVar1 = FUN_008ff080(&local_20,0xd);
    local_4._0_1_ = 1;
    puVar2 = (undefined *)FUN_0095d7e0(uVar1,100);
    local_4._0_1_ = 2;
    if (local_30 != puVar2) {
      FUN_0083ea60(puVar2);
    }
    local_4._0_1_ = 1;
    FUN_008f7630();
    local_4 = (uint)local_4._1_3_ << 8;
    local_20 = wxObject::vftable;
    FUN_0083e850();
  }
  (**(code **)(**(int **)(param_2 + 8) + 0x60))(local_30);
  uVar1 = FUN_008f8330(0x24);
  (**(code **)(**(int **)(param_2 + 8) + 0x58))(uVar1);
  (**(code **)(**(int **)(param_2 + 8) + 0x150))(*param_1,param_1[1],param_1[2],param_1[3]);
  if (((param_4 & 2) != 0) && ((param_4 & 0x10) != 0)) {
    (**(code **)(*param_1_00 + 0x34))(uStack_14,param_2,param_1,param_4);
  }
  uStack_1c = 0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_24;
  return;
}



void FUN_009e3670(void)

{
  int iVar1;
  
  iVar1 = FUN_0098e820();
  if (iVar1 != 0) {
    iVar1 = (**(code **)(iVar1 + 0x94))();
    if (iVar1 != 0) {
      FUN_009e31f0();
      return;
    }
  }
  FUN_009e2120();
  return;
}



void FUN_009e3690(undefined4 param_1,int param_2,undefined4 *param_3,uint param_4)

{
  undefined4 uVar1;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be95e0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_1c = *param_3;
  local_18 = param_3[1];
  local_14 = param_3[2];
  local_10 = param_3[3];
  if ((param_4 & 8) != 0) {
    uVar1 = FUN_008f8330(0x1a,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    FUN_0094d3c0(param_2,uVar1);
    local_4 = 0;
    uVar1 = FUN_008f8a00(9);
    FUN_009e3330(param_2,uVar1);
    local_4._0_1_ = 1;
    (**(code **)(**(int **)(param_2 + 8) + 0x150))(local_1c,local_18,local_14,local_10);
    FUN_008f7520(0xffffffff,0xffffffff);
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_009e1ff0();
    local_4 = 0xffffffff;
    FUN_0094bbb0();
  }
  FUN_009e2280(4,0x10,param_1,param_2,&local_1c,param_4);
  ExceptionList = local_c;
  return;
}



undefined4 FUN_009e37a0(void)

{
  HWND hWnd;
  LRESULT LVar1;
  undefined4 uVar2;
  undefined4 *puStack_40;
  undefined4 *puStack_3c;
  undefined auStack_38 [12];
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  hWnd = CreateWindowExW(0,L"SysHeader32",(LPCWSTR)0x0,0,0,0,0,0,(HWND)0x0,(HMENU)0x0,(HINSTANCE)0x0
                         ,(LPVOID)0x0);
  if (hWnd == (HWND)0x0) {
    return 0x14;
  }
  FUN_009873f0(auStack_38,DestroyWindow_exref,hWnd);
  uStack_24 = 100;
  uStack_20 = 100;
  puStack_40 = &uStack_2c;
  puStack_3c = &uStack_1c;
  uStack_2c = 0;
  uStack_28 = 0;
  uStack_1c = 0;
  uStack_18 = 0;
  uStack_14 = 0;
  uStack_10 = 0;
  uStack_c = 0;
  uStack_8 = 0;
  uStack_4 = 0;
  LVar1 = SendMessageW(hWnd,0x1205,0,(LPARAM)&puStack_40);
  uVar2 = uStack_8;
  if (LVar1 == 0) {
    uVar2 = 0x14;
  }
  FUN_009e2e20(auStack_38);
  return uVar2;
}



void __thiscall FUN_009e3860(int param_1_00,undefined4 *param_1)

{
  *(undefined4 *)(param_1_00 + 0x54) = *param_1;
  *(undefined4 *)(param_1_00 + 0x58) = param_1[1];
  *(undefined4 *)(param_1_00 + 0x5c) = param_1[2];
  *(undefined4 *)(param_1_00 + 0x60) = param_1[3];
  return;
}



undefined ** FUN_009e3890(void)

{
  return &PTR_u_wxWindowsPrinter_0323d69c;
}



undefined ** FUN_009e38a0(void)

{
  return &PTR_u_wxWindowsPrintPreview_0323d6b4;
}



undefined4 * __thiscall FUN_009e38b0(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_009bb8a0(param_1);
  *param_1_00 = wxWindowsPrinter::vftable;
  return param_1_00;
}



void thunk_FUN_009bb930(void)

{
  FUN_009bb930();
  return;
}



void __thiscall FUN_009e38e0(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_2c0 [496];
  undefined local_d0 [192];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be960b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_2c0;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffd38;
  ExceptionList = &local_c;
  FUN_009e4dc0(param_1,param_1_00 + 8);
  local_4 = 0;
  iVar2 = FUN_009e4f80(uVar1);
  if (iVar2 == 0x13ec) {
    iVar2 = FUN_009e4800();
    FUN_009be460(local_d0);
    DAT_032e9a6c = (-(uint)(iVar2 != 0) & 0xfffffffe) + 2;
  }
  else {
    DAT_032e9a6c = 1;
  }
  local_4 = 0xffffffff;
  FUN_009e4740();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * FUN_009e39c0(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0xbc);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_009bb8a0(0);
    *puVar1 = wxWindowsPrinter::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 __thiscall FUN_009e3a20(undefined4 param_1_00,byte param_1)

{
  FUN_009bb930();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009e3a40(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxWindowsPrintPreview::vftable;
  FUN_009bbd10();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_009e3a70(int param_1)

{
  HDC hdc;
  int iVar1;
  char cVar2;
  uint uVar3;
  HDC hdc_00;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  undefined4 *puVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  int iStack_58;
  int iStack_54;
  int iStack_50;
  int iStack_48;
  int *piStack_30;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined auStack_1c [12];
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be9650;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  hdc_00 = GetDC((HWND)0x0);
  uStack_4 = 0;
  iVar4 = GetDeviceCaps(hdc_00,0x58);
  iVar5 = GetDeviceCaps(hdc_00,0x5a);
  iVar6 = *(int *)(param_1 + 200);
  *(int *)(iVar6 + 0x48) = iVar5;
  *(int *)(iVar6 + 0x44) = iVar4;
  FUN_0094bff0(param_1 + 0x2c);
  uStack_4 = CONCAT31(uStack_4._1_3_,1);
  if ((piStack_30 == (int *)0x0) ||
     (cVar2 = (**(code **)(*piStack_30 + 0x10))(uVar3), cVar2 == '\0')) {
    iVar6 = 0x5dc;
    iVar7 = 0x9c4;
    uStack_24 = 0x5dc;
    uVar9 = 0;
    iStack_54 = 0x96;
    iStack_50 = 0xfa;
    iStack_58 = 600;
    iStack_48 = 600;
    uVar10 = 0;
    uStack_10 = 0x9c4;
    uStack_20 = 0x9c4;
    *(undefined *)(param_1 + 0xf8) = 0;
  }
  else {
    hdc = (HDC)piStack_30[0x42];
    iStack_54 = GetDeviceCaps(hdc,4);
    iStack_50 = GetDeviceCaps(hdc,6);
    iVar6 = GetDeviceCaps(hdc,8);
    iVar7 = GetDeviceCaps(hdc,10);
    iStack_58 = GetDeviceCaps(hdc,0x58);
    iStack_48 = GetDeviceCaps(hdc,0x5a);
    puVar8 = (undefined4 *)FUN_0094c040(auStack_1c);
    uStack_24 = puVar8[2];
    uVar9 = *puVar8;
    uVar10 = puVar8[1];
    uStack_20 = puVar8[3];
    if ((iStack_58 == 0) || (((iStack_48 == 0 || (iStack_54 == 0)) || (iStack_50 == 0)))) {
      *(undefined *)(param_1 + 0xf8) = 0;
    }
  }
  iVar1 = *(int *)(param_1 + 200);
  *(int *)(param_1 + 0xec) = iVar7;
  *(int *)(param_1 + 0xe8) = iVar6;
  *(int *)(iVar1 + 0x34) = iVar6;
  *(int *)(iVar1 + 0x38) = iVar7;
  iVar6 = *(int *)(param_1 + 200);
  *(int *)(iVar6 + 0x3c) = iStack_54;
  *(int *)(iVar6 + 0x40) = iStack_50;
  iVar6 = *(int *)(param_1 + 200);
  *(undefined4 *)(iVar6 + 0x54) = uVar9;
  *(undefined4 *)(iVar6 + 0x58) = uVar10;
  *(undefined4 *)(iVar6 + 0x5c) = uStack_24;
  *(undefined4 *)(iVar6 + 0x60) = uStack_20;
  iVar6 = *(int *)(param_1 + 200);
  *(int *)(iVar6 + 0x4c) = iStack_58;
  *(int *)(iVar6 + 0x50) = iStack_48;
  uStack_4 = uStack_4 & 0xffffff00;
  *(float *)(param_1 + 0xd8) = (float)iVar4 / (float)iStack_58;
  *(float *)(param_1 + 0xdc) = (float)iVar5 / (float)iStack_48;
  FUN_00457221();
  ReleaseDC((HWND)0x0,hdc_00);
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall
FUN_009e3d10(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be9678;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_009bc430(param_1,param_2,param_3);
  local_4 = 0;
  *param_1_00 = wxWindowsPrintPreview::vftable;
  FUN_009e3a70(uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_009e3d80(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be9678;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_009bc380(param_1,param_2,param_3);
  local_4 = 0;
  *param_1_00 = wxWindowsPrintPreview::vftable;
  FUN_009e3a70(uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_009e3df0(int *param_1)

{
  int iVar1;
  char cVar2;
  undefined4 uVar3;
  int *piVar4;
  uint uStack_a8;
  int *local_98;
  int *local_90 [2];
  int *piStack_88;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 local_7c;
  undefined4 uStack_78;
  undefined auStack_64 [4];
  uint uStack_60;
  undefined local_5c [12];
  undefined4 uStack_50;
  uint uStack_4c;
  void *pvStack_48;
  undefined auStack_40 [4];
  uint uStack_3c;
  undefined4 uStack_2c;
  uint uStack_28;
  void *pvStack_24;
  undefined4 uStack_1c;
  undefined4 uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be96ce;
  local_c = ExceptionList;
  uStack_a8 = DAT_0323f878 ^ (uint)&stack0xffffff5c;
  ExceptionList = &local_c;
  FUN_0094bff0(param_1 + 0xb);
  local_4 = 0;
  FUN_004325b6(PTR_DAT_03236318);
  local_4._0_1_ = 1;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = CONCAT31(local_4._1_3_,2);
  (**(code **)(*local_90[0] + 0x20))(local_5c,&local_7c);
  (**(code **)(*local_98 + 0x20))(&piStack_88,&uStack_60);
  FUN_009da5d0(&uStack_a8,auStack_64,local_90[0],uStack_84,auStack_40);
  _free(pvStack_48);
  if (7 < uStack_4c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_60);
  }
  uStack_4c = 7;
  uStack_50 = 0;
  uStack_60 = uStack_60 & 0xffff0000;
  uStack_14 = CONCAT31(uStack_14._1_3_,5);
  _free(pvStack_24);
  if (uStack_28 < 8) {
    uStack_3c = uStack_3c & 0xffff0000;
    uStack_28 = 7;
    uStack_2c = 0;
    cVar2 = (**(code **)(*param_1 + 0x74))(&stack0xffffff64,puStack_8);
    if ((cVar2 == '\0') || (piVar4 = (int *)FUN_009da660(), piVar4 == (int *)0x0)) {
      uStack_1c = uStack_1c & 0xffffff00;
      FUN_00457221();
      uStack_1c = 0xffffffff;
      FUN_00457221();
      uVar3 = 0;
    }
    else {
      FUN_0094bd80();
      iVar1 = uStack_14;
      uStack_1c._0_1_ = 6;
      FUN_0094c840(uStack_14);
      (**(code **)(*piStack_88 + 0xb0))();
      iVar1 = *(int *)(iVar1 + 4);
      if (iVar1 == 0) {
        uStack_78 = 0;
        local_7c = 0;
      }
      else {
        uStack_78 = *(undefined4 *)(iVar1 + 0xc);
        local_7c = *(undefined4 *)(iVar1 + 8);
      }
      uStack_84 = 0;
      uStack_80 = 0;
      FUN_009da170(local_90,&uStack_84);
      (**(code **)(*piVar4 + 4))(1);
      uStack_1c._0_1_ = 5;
      FUN_00457221();
      uStack_1c = (uint)uStack_1c._1_3_ << 8;
      FUN_00457221();
      uStack_1c = 0xffffffff;
      FUN_00457221();
      uVar3 = 1;
    }
    ExceptionList = pvStack_24;
    return uVar3;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(uStack_3c);
}



bool __thiscall FUN_009e4050(int *param_1_00,undefined4 param_1,int *param_2,char param_3)

{
  code *pcVar1;
  char cVar2;
  int *piVar3;
  void *pvVar4;
  HDC hdc;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int *piVar9;
  int unaff_EBX;
  int unaff_EBP;
  bool bVar10;
  int iVar11;
  int iStack_f8;
  int iStack_e8;
  int iStack_e4;
  int iStack_dc;
  int iStack_d8;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be9742;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  DAT_032e9a68 = '\0';
  DAT_032e9a64 = (int *)0x0;
  if (param_2 != (int *)0x0) {
    if (param_1_00[6] < 1) {
      param_1_00[6] = 1;
    }
    if (param_1_00[7] < 1) {
      param_1_00[7] = 9999;
    }
    if (param_3 == '\0') {
      pvVar4 = operator_new(0xc);
      local_4 = 0;
      if (pvVar4 == (void *)0x0) {
        piVar3 = (int *)0x0;
      }
      else {
        piVar3 = (int *)FUN_0094bff0();
      }
      local_4 = 0xffffffff;
    }
    else {
      (**(code **)(*param_1_00 + 0x24))();
      piVar3 = (int *)FUN_0048a085();
    }
    if (piVar3 == (int *)0x0) {
      ExceptionList = local_c;
      return false;
    }
    if ((piVar3[2] == 0) || (cVar2 = (**(code **)(*(int *)piVar3[2] + 0x10))(), cVar2 == '\0')) {
      (**(code **)(*piVar3 + 4))();
      ExceptionList = local_c;
      return false;
    }
    iVar11 = piVar3[2];
    hdc = GetDC((HWND)0x0);
    iVar5 = GetDeviceCaps(hdc,0x58);
    iVar6 = GetDeviceCaps(hdc,0x5a);
    ReleaseDC((HWND)0x0,hdc);
    iVar7 = GetDeviceCaps(*(HDC *)(iVar11 + 0x108),0x58);
    iVar8 = GetDeviceCaps(*(HDC *)(iVar11 + 0x108),0x5a);
    if ((iVar7 != 0) && (iVar8 != 0)) {
      param_2[0x12] = iVar6;
      param_2[0x14] = iVar8;
      param_2[0x11] = iVar5;
      param_2[0x13] = iVar7;
      param_2[0xb] = (int)piVar3;
      (**(code **)(*(int *)piVar3[2] + 0x20))();
      param_2[0xd] = (int)param_1_00;
      param_2[0xe] = iVar6;
      FUN_0094c040();
      FUN_009e3860();
      (**(code **)(*(int *)piVar3[2] + 0x24))();
      param_2[0xf] = iVar11;
      param_2[0x10] = iVar5;
      FUN_008f7b30();
      FUN_008fcfd0();
      (**(code **)(*param_2 + 0x20))();
      (**(code **)(*param_2 + 0x2c))();
      if (iStack_dc == 0) {
        DAT_032e9a6c = 2;
        local_4 = 0xffffffff;
        FUN_0095db80();
        ExceptionList = local_c;
        return false;
      }
      pcVar1 = *(code **)(*param_1_00 + 0x10);
      param_1_00[7] = iStack_dc;
      param_1_00[6] = iStack_d8;
      piVar9 = (int *)(*pcVar1)();
      FUN_008fd540();
      SetAbortProc(*(HDC *)(unaff_EBP + 0x108),(ABORTPROC)&LAB_009e3c70);
      if (piVar9 == (int *)0x0) {
        FUN_0043c211();
        cVar2 = FUN_00846b30();
        if (cVar2 != '\0') {
          FUN_0081c0f1();
          local_c._0_1_ = 2;
          FUN_008423d0();
          local_c._0_1_ = 3;
          FUN_00840b80();
          local_c._0_1_ = 2;
          FUN_00842440();
          local_c = (void *)CONCAT31(local_c._1_3_,1);
          FUN_0081b5bc();
        }
        DAT_032e9a6c = 2;
        (**(code **)(*piVar3 + 4))();
        local_4 = 0xffffffff;
        FUN_0095db80();
        ExceptionList = local_c;
        return false;
      }
      DAT_032e9a64 = piVar9;
      (**(code **)(*piVar9 + 0xcc))();
      FUN_008fd5c0();
      (**(code **)(*param_2 + 0x18))();
      DAT_032e9a6c = 0;
      iStack_f8 = iStack_e4;
      if (*(char *)(param_1_00 + 9) == '\0') {
        iStack_f8 = param_1_00[4];
        iStack_e8 = param_1_00[5];
      }
      iVar11 = 1;
      if (0 < param_1_00[8]) {
        do {
          cVar2 = (**(code **)(*param_2 + 0x10))();
          if (cVar2 == '\0') {
            FUN_0043c211(&DAT_00d25fa0);
            cVar2 = FUN_00846b30(1);
            if (cVar2 != '\0') {
              FUN_004325b6();
              FUN_0043c211();
              FUN_00820bf9();
              FUN_008433c0();
              FUN_008423d0();
              FUN_00840b80();
              FUN_00842440();
              FUN_0081b5bc();
              FUN_0040159c();
              FUN_0040159c();
            }
            DAT_032e9a6c = 2;
            break;
          }
          iVar5 = iStack_f8;
          if (DAT_032e9a68 != '\0') {
            DAT_032e9a6c = 1;
            break;
          }
          while( true ) {
            if ((iStack_e8 < iVar5) || (cVar2 = (**(code **)(*param_2 + 0x24))(), cVar2 == '\0'))
            goto LAB_009e4467;
            if (DAT_032e9a68 != '\0') break;
            (**(code **)(*(int *)piVar3[2] + 0x40))();
            cVar2 = (**(code **)(*param_2 + 0x28))();
            (**(code **)(*(int *)piVar3[2] + 0x44))();
            if (cVar2 == '\0') break;
            iVar5 = iVar5 + 1;
          }
          DAT_032e9a6c = 1;
LAB_009e4467:
          (**(code **)(*param_2 + 0x14))();
          iVar11 = iVar11 + 1;
        } while (iVar11 <= *(int *)(unaff_EBX + 0x20));
      }
      (**(code **)(*param_2 + 0x1c))();
      if (DAT_032e9a64 != (int *)0x0) {
        (**(code **)(*DAT_032e9a64 + 0xcc))();
        FUN_00938b80();
      }
      (**(code **)(*piVar3 + 4))();
      bVar10 = DAT_032e9a6c == 0;
      local_4 = 0xffffffff;
      FUN_0095db80();
      ExceptionList = local_c;
      return bVar10;
    }
    (**(code **)(*piVar3 + 4))();
  }
  DAT_032e9a6c = 2;
  ExceptionList = local_c;
  return false;
}



void __thiscall FUN_009e4630(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined **local_cc [47];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be977b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_cc;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff2c;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0xcc) != 0) {
    FUN_009bb8a0(param_1_00 + 8);
    local_cc[0] = wxWindowsPrinter::vftable;
    local_4 = 0;
    FUN_009e4050(*(undefined4 *)(param_1_00 + 0xbc),*(undefined4 *)(param_1_00 + 0xcc),param_1);
    local_4 = 0xffffffff;
    FUN_009bb930(uVar1);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



BOOL __fastcall FUN_009e4700(HANDLE *param_1)

{
  BOOL BVar1;
  
  BVar1 = 1;
  if (*param_1 != (HANDLE)0x0) {
    BVar1 = ClosePrinter(*param_1);
    *param_1 = (HANDLE)0x0;
  }
  return BVar1;
}



undefined ** FUN_009e4720(void)

{
  return &PTR_u_wxWindowsPrintNativeData_0323d764;
}



undefined ** FUN_009e4730(void)

{
  return &PTR_u_wxWindowsPrintDialog_0323d77c;
}



void __fastcall FUN_009e4740(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00be97c6;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxWindowsPrintDialog::vftable;
  iVar1 = param_1[0xab];
  local_4 = 1;
  if (iVar1 != 0) {
    if (*(HGLOBAL *)(iVar1 + 8) != (HGLOBAL)0x0) {
      GlobalFree(*(HGLOBAL *)(iVar1 + 8));
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  if ((*(char *)(param_1 + 0xa9) != '\0') && ((int *)param_1[0xa8] != (int *)0x0)) {
    (**(code **)(*(int *)param_1[0xa8] + 4))(1,uVar2);
  }
  local_4 = local_4 & 0xffffff00;
  FUN_009be040();
  local_4 = 0xffffffff;
  FUN_00924620();
  ExceptionList = local_c;
  return;
}



int __fastcall FUN_009e4800(int param_1)

{
  if (*(int *)(param_1 + 0x2a0) != 0) {
    *(undefined *)(param_1 + 0x2a4) = 0;
    return *(int *)(param_1 + 0x2a0);
  }
  return 0;
}



uint __thiscall FUN_009e4820(int param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 *_Dst;
  
  iVar1 = *(int *)(param_1 + 0xac);
  uVar2 = FUN_009bdd80();
  if (*(int *)(param_1_00 + 0x2ac) != 0) {
    return uVar2 & 0xffffff00;
  }
  _Dst = (undefined4 *)operator_new(0x42);
  _memset(_Dst,0,0x42);
  *(undefined4 **)(param_1_00 + 0x2ac) = _Dst;
  *_Dst = 0x42;
  _Dst[1] = 0;
  _Dst[2] = 0;
  _Dst[3] = 0;
  _Dst[5] = 0x400;
  *(undefined2 *)(_Dst + 8) = 1;
  _Dst[2] = *(undefined4 *)(iVar1 + 0xc);
  *(undefined4 *)(iVar1 + 0xc) = 0;
  _Dst[3] = *(undefined4 *)(iVar1 + 0x10);
  *(undefined4 *)(iVar1 + 0x10) = 0;
  _Dst[4] = 0;
  *(undefined2 *)(_Dst + 6) = *(undefined2 *)(param_1 + 8);
  *(undefined2 *)((int)_Dst + 0x1a) = *(undefined2 *)(param_1 + 0xc);
  *(undefined2 *)(_Dst + 7) = *(undefined2 *)(param_1 + 0x10);
  *(undefined2 *)((int)_Dst + 0x1e) = *(undefined2 *)(param_1 + 0x14);
  *(undefined2 *)(_Dst + 8) = *(undefined2 *)(param_1 + 0x18);
  _Dst[5] = 0x100;
  *_Dst = 0x42;
  _Dst[1] = 0;
  *(undefined4 *)((int)_Dst + 0x22) = 0;
  *(undefined4 *)((int)_Dst + 0x26) = 0;
  *(undefined4 *)((int)_Dst + 0x2a) = 0;
  *(undefined4 *)((int)_Dst + 0x2e) = 0;
  *(undefined4 *)((int)_Dst + 0x32) = 0;
  *(undefined4 *)((int)_Dst + 0x36) = 0;
  *(undefined4 *)((int)_Dst + 0x3a) = 0;
  *(undefined4 *)((int)_Dst + 0x3e) = 0;
  if (*(char *)(param_1 + 0x1c) != '\0') {
    _Dst[5] = 0x100;
  }
  if (*(char *)(param_1 + 0x1f) != '\0') {
    _Dst[5] = 0x101;
  }
  if (*(char *)(param_1 + 0x1d) != '\0') {
    _Dst[5] = _Dst[5] | 0x10;
  }
  if (*(char *)(param_1 + 0x1e) != '\0') {
    _Dst[5] = _Dst[5] | 0x20;
  }
  if (*(char *)(param_1 + 0x23) == '\0') {
    _Dst[5] = _Dst[5] | 0x80000;
  }
  if (*(char *)(param_1 + 0x20) == '\0') {
    _Dst[5] = _Dst[5] | 4;
  }
  if (*(char *)(param_1 + 0x21) == '\0') {
    _Dst[5] = _Dst[5] | 8;
  }
  else if ((((*(char *)(param_1 + 0x1c) == '\0') && (*(char *)(param_1 + 0x1f) == '\0')) &&
           (*(int *)(param_1 + 8) != 0)) && (*(int *)(param_1 + 0xc) != 0)) {
    _Dst[5] = _Dst[5] | 2;
  }
  if (*(char *)(param_1 + 0x22) != '\0') {
    _Dst[5] = _Dst[5] | 0x800;
  }
  return 0x101;
}



uint __thiscall FUN_009e4970(int param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  uint in_EAX;
  uint uVar3;
  
  iVar1 = *(int *)(param_1_00 + 0x2ac);
  if (iVar1 == 0) {
    return in_EAX & 0xffffff00;
  }
  piVar2 = *(int **)(param_1 + 0xac);
  if (*(int *)(iVar1 + 8) != 0) {
    if ((HGLOBAL)piVar2[3] != (HGLOBAL)0x0) {
      GlobalFree((HGLOBAL)piVar2[3]);
    }
    piVar2[3] = *(int *)(iVar1 + 8);
    *(undefined4 *)(iVar1 + 8) = 0;
  }
  if (*(int *)(iVar1 + 0xc) != 0) {
    if ((HGLOBAL)piVar2[4] != (HGLOBAL)0x0) {
      GlobalFree((HGLOBAL)piVar2[4]);
    }
    piVar2[4] = *(int *)(iVar1 + 0xc);
    *(undefined4 *)(iVar1 + 0xc) = 0;
  }
  (**(code **)(*piVar2 + 0x10))(param_1 + 0x24);
  *(uint *)(param_1 + 8) = (uint)*(ushort *)(iVar1 + 0x18);
  *(uint *)(param_1 + 0xc) = (uint)*(ushort *)(iVar1 + 0x1a);
  *(uint *)(param_1 + 0x10) = (uint)*(ushort *)(iVar1 + 0x1c);
  *(uint *)(param_1 + 0x14) = (uint)*(ushort *)(iVar1 + 0x1e);
  *(uint *)(param_1 + 0x18) = (uint)*(ushort *)(iVar1 + 0x20);
  *(bool *)(param_1 + 0x1c) = (*(uint *)(iVar1 + 0x14) & 3) == 0;
  *(bool *)(param_1 + 0x1f) = ((byte)*(undefined4 *)(iVar1 + 0x14) & 1) == 1;
  *(bool *)(param_1 + 0x1d) = ((byte)*(undefined4 *)(iVar1 + 0x14) & 0x10) == 0x10;
  *(bool *)(param_1 + 0x1e) = ((byte)*(undefined4 *)(iVar1 + 0x14) & 0x20) == 0x20;
  *(bool *)(param_1 + 0x23) = (*(uint *)(iVar1 + 0x14) & 0x80000) != 0x80000;
  *(bool *)(param_1 + 0x20) = ((byte)*(undefined4 *)(iVar1 + 0x14) & 4) != 4;
  uVar3 = *(uint *)(iVar1 + 0x14) & 0xffffff08;
  *(bool *)(param_1 + 0x21) = (char)uVar3 != '\b';
  *(bool *)(param_1 + 0x22) = (*(uint *)(iVar1 + 0x14) & 0x800) == 0x800;
  return CONCAT31((int3)(uVar3 >> 8),1);
}



undefined ** FUN_009e4a90(void)

{
  return &PTR_u_wxWindowsPageSetupDialog_0323d794;
}



void __fastcall FUN_009e4aa0(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be97f8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *param_1 = wxWindowsPageSetupDialog::vftable;
  iVar1 = param_1[0xae];
  local_4 = 0;
  if (iVar1 != 0) {
    if (*(HGLOBAL *)(iVar1 + 8) != (HGLOBAL)0x0) {
      GlobalFree(*(HGLOBAL *)(iVar1 + 8));
    }
    if (*(HGLOBAL *)(iVar1 + 0xc) != (HGLOBAL)0x0) {
      GlobalFree(*(HGLOBAL *)(iVar1 + 0xc));
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  FUN_009be0b0(uVar2);
  local_4 = 0xffffffff;
  FUN_00924620();
  ExceptionList = local_c;
  return;
}



uint __thiscall FUN_009e4b40(int param_1_00,int param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  int iVar3;
  
  iVar3 = *(int *)(param_1 + 0xc0);
  uVar1 = FUN_009bdd80();
  if (*(int *)(param_1_00 + 0x2b8) != 0) {
    return uVar1 & 0xffffff00;
  }
  puVar2 = (undefined4 *)operator_new(0x54);
  puVar2[2] = 0;
  puVar2[3] = 0;
  *(undefined4 **)(param_1_00 + 0x2b8) = puVar2;
  if ((HGLOBAL)puVar2[2] != (HGLOBAL)0x0) {
    GlobalFree((HGLOBAL)puVar2[2]);
    puVar2[2] = 0;
  }
  puVar2[2] = *(undefined4 *)(iVar3 + 0xc);
  *(undefined4 *)(iVar3 + 0xc) = 0;
  if ((HGLOBAL)puVar2[3] != (HGLOBAL)0x0) {
    GlobalFree((HGLOBAL)puVar2[3]);
    puVar2[3] = 0;
  }
  puVar2[3] = *(undefined4 *)(iVar3 + 0x10);
  *(undefined4 *)(iVar3 + 0x10) = 0;
  puVar2[4] = 3;
  if (*(char *)(param_1 + 0x30) != '\0') {
    puVar2[4] = 3;
  }
  if (*(char *)(param_1 + 0x31) == '\0') {
    puVar2[4] = 0x13;
  }
  if (*(char *)(param_1 + 0x32) == '\0') {
    puVar2[4] = puVar2[4] | 0x100;
  }
  if (*(char *)(param_1 + 0x33) == '\0') {
    puVar2[4] = puVar2[4] | 0x200;
  }
  if (*(char *)(param_1 + 0x34) == '\0') {
    puVar2[4] = puVar2[4] | 0x20;
  }
  if (*(char *)(param_1 + 0x35) != '\0') {
    puVar2[4] = puVar2[4] | 0x400;
  }
  if (*(char *)(param_1 + 0x36) != '\0') {
    puVar2[4] = puVar2[4] | 0x800;
  }
  puVar2[4] = puVar2[4] | 8;
  puVar2[1] = 0;
  puVar2[0xf] = 0;
  *puVar2 = 0x54;
  puVar2[5] = *(int *)(param_1 + 8) * 100;
  puVar2[6] = *(int *)(param_1 + 0xc) * 100;
  puVar2[7] = *(int *)(param_1 + 0x10) * 100;
  puVar2[8] = *(int *)(param_1 + 0x14) * 100;
  puVar2[9] = *(int *)(param_1 + 0x18) * 100;
  puVar2[10] = *(int *)(param_1 + 0x1c) * 100;
  puVar2[0xb] = *(int *)(param_1 + 0x20) * 100;
  puVar2[0xc] = *(int *)(param_1 + 0x24) * 100;
  iVar3 = *(int *)(param_1 + 0x28) * 100;
  puVar2[0xd] = iVar3;
  puVar2[0xe] = *(int *)(param_1 + 0x2c) * 100;
  puVar2[0x10] = 0;
  puVar2[0x11] = 0;
  puVar2[0x12] = 0;
  puVar2[0x14] = 0;
  puVar2[0x13] = 0;
  return CONCAT31((int3)((uint)iVar3 >> 8),1);
}



undefined4 * __thiscall FUN_009e4cf0(undefined4 *param_1_00,undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x1b0);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_009e6440(param_1_00,param_1);
  }
  param_1_00[2] = uVar2;
  param_1_00[1] = 0;
  *param_1_00 = wxPrinterDCFromHDC::vftable;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009e4d70(HANDLE *param_1)

{
  if (*param_1 != (HANDLE)0x0) {
    ClosePrinter(*param_1);
    *param_1 = (HANDLE)0x0;
  }
  return;
}



undefined4 * __fastcall FUN_009e4d90(undefined4 *param_1)

{
  FUN_009bb800();
  param_1[3] = 0;
  param_1[4] = 0;
  *(undefined2 *)(param_1 + 5) = 0;
  *param_1 = wxWindowsPrintNativeData::vftable;
  return param_1;
}



void __fastcall FUN_009e4db0(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x009e4db5. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x1c))();
  return;
}



undefined4 * __thiscall FUN_009e4dc0(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be97c6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044cc1c(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  local_4 = 0;
  *param_1_00 = wxWindowsPrintDialog::vftable;
  FUN_009be3c0();
  local_4 = CONCAT31(local_4._1_3_,1);
  *(undefined *)(param_1_00 + 0xa9) = 1;
  param_1_00[0xaa] = param_1;
  param_1_00[0xa8] = 0;
  param_1_00[0xab] = 0;
  if (param_2 != 0) {
    FUN_009be460(param_2);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_009e4e60(undefined4 param_1_00,byte param_1)

{
  FUN_009e4740();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_009e4e80(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  undefined4 *local_c4;
  undefined local_c0 [176];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be9847;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_c4;
  ExceptionList = &local_c;
  local_c4 = param_1_00;
  FUN_0044cc1c(DAT_0323f878 ^ (uint)&stack0xffffff30);
  local_4 = 0;
  *param_1_00 = wxWindowsPrintDialog::vftable;
  FUN_009be3c0();
  local_4._0_1_ = 1;
  FUN_009be3c0();
  local_4._0_1_ = 2;
  if (param_2 != 0) {
    FUN_009be4d0(param_2);
  }
  param_1_00[0xaa] = param_1;
  param_1_00[0xa8] = 0;
  *(undefined *)(param_1_00 + 0xa9) = 1;
  param_1_00[0xab] = 0;
  FUN_009be460(local_c0);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_009be040();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __fastcall FUN_009e4f80(int param_1)

{
  LPPRINTDLGW pPD;
  uint uVar1;
  int iVar2;
  BOOL BVar3;
  void *pvVar4;
  undefined4 uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be860b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_009e4820(param_1 + 0x1f0);
  pPD = *(LPPRINTDLGW *)(param_1 + 0x2ac);
  if (*(int *)(param_1 + 0x2a8) == 0) {
    iVar2 = (**(code **)(*DAT_032bcb68 + 0xd4))(uVar1);
    if (iVar2 == 0) {
      pPD->hwndOwner = (HWND)0x0;
    }
    else {
      iVar2 = (**(code **)(*DAT_032bcb68 + 0xd4))();
      pPD->hwndOwner = *(HWND *)(iVar2 + 0x13c);
    }
  }
  else {
    pPD->hwndOwner = *(HWND *)(*(int *)(param_1 + 0x2a8) + 0x13c);
  }
  BVar3 = PrintDlgW(pPD);
  pPD->hwndOwner = (HWND)0x0;
  if ((BVar3 != 0) && (pPD->hDC != (HDC)0x0)) {
    pvVar4 = operator_new(0xc);
    uStack_4 = 0;
    if (pvVar4 == (void *)0x0) {
      uVar5 = 0;
    }
    else {
      uVar5 = FUN_009e4cf0(pPD->hDC);
    }
    uStack_4 = 0xffffffff;
    *(undefined4 *)(param_1 + 0x2a0) = uVar5;
    FUN_009e4970(param_1 + 0x1f0);
    ExceptionList = local_c;
    return 0x13ec;
  }
  ExceptionList = local_c;
  return 0x13ed;
}



undefined4 __thiscall FUN_009e5090(undefined4 param_1_00,byte param_1)

{
  FUN_009e4aa0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009e50b0(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be9896;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044cc1c(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  local_4 = 0;
  *param_1_00 = wxWindowsPageSetupDialog::vftable;
  FUN_009be4e0();
  param_1_00[0xad] = param_1;
  local_4 = CONCAT31(local_4._1_3_,1);
  param_1_00[0xae] = 0;
  if (param_2 != 0) {
    FUN_009be5a0(param_2);
  }
  ExceptionList = local_c;
  return param_1_00;
}



uint __thiscall FUN_009e5140(int param_1_00,int param_1)

{
  int iVar1;
  uint in_EAX;
  int iVar2;
  int local_8;
  int local_4;
  
  iVar1 = *(int *)(param_1_00 + 0x2b8);
  if (iVar1 == 0) {
    return in_EAX & 0xffffff00;
  }
  iVar2 = *(int *)(param_1 + 0xc0);
  if (*(int *)(iVar1 + 8) != 0) {
    if (*(HGLOBAL *)(iVar2 + 0xc) != (HGLOBAL)0x0) {
      GlobalFree(*(HGLOBAL *)(iVar2 + 0xc));
    }
    *(undefined4 *)(iVar2 + 0xc) = *(undefined4 *)(iVar1 + 8);
    *(undefined4 *)(iVar1 + 8) = 0;
  }
  if (*(int *)(iVar1 + 0xc) != 0) {
    if (*(HGLOBAL *)(iVar2 + 0x10) != (HGLOBAL)0x0) {
      GlobalFree(*(HGLOBAL *)(iVar2 + 0x10));
    }
    *(undefined4 *)(iVar2 + 0x10) = *(undefined4 *)(iVar1 + 0xc);
    *(undefined4 *)(iVar1 + 0xc) = 0;
  }
  FUN_009bdda0();
  *(undefined4 *)(iVar1 + 0x10) = 3;
  *(undefined *)(param_1 + 0x30) = 1;
  *(bool *)(param_1 + 0x31) = ((byte)*(undefined4 *)(iVar1 + 0x10) & 0x10) != 0x10;
  *(bool *)(param_1 + 0x32) = (*(uint *)(iVar1 + 0x10) & 0x100) != 0x100;
  *(bool *)(param_1 + 0x33) = (*(uint *)(iVar1 + 0x10) & 0x200) != 0x200;
  *(bool *)(param_1 + 0x34) = ((byte)*(undefined4 *)(iVar1 + 0x10) & 0x20) != 0x20;
  *(bool *)(param_1 + 0x35) = (*(uint *)(iVar1 + 0x10) & 0x400) == 0x400;
  *(bool *)(param_1 + 0x36) = (*(uint *)(iVar1 + 0x10) & 0x800) == 0x800;
  if (*(int *)(param_1 + 0x50) == 2) {
    iVar2 = (int)((ulonglong)((longlong)*(int *)(iVar1 + 0x18) * 0x51eb851f) >> 0x20);
    local_4 = *(int *)(iVar1 + 0x14);
  }
  else {
    iVar2 = (int)((ulonglong)((longlong)*(int *)(iVar1 + 0x14) * 0x51eb851f) >> 0x20);
    local_4 = *(int *)(iVar1 + 0x18);
  }
  local_8 = (iVar2 >> 5) - (iVar2 >> 0x1f);
  local_4 = local_4 / 100;
  FUN_009bdf20(&local_8);
  iVar2 = *(int *)(iVar1 + 0x1c);
  *(int *)(param_1 + 0x14) = *(int *)(iVar1 + 0x20) / 100;
  *(int *)(param_1 + 0x10) = iVar2 / 100;
  iVar2 = *(int *)(iVar1 + 0x24);
  *(int *)(param_1 + 0x1c) = *(int *)(iVar1 + 0x28) / 100;
  *(int *)(param_1 + 0x18) = iVar2 / 100;
  iVar2 = *(int *)(iVar1 + 0x2c);
  *(int *)(param_1 + 0x24) = *(int *)(iVar1 + 0x30) / 100;
  *(int *)(param_1 + 0x20) = iVar2 / 100;
  iVar2 = *(int *)(iVar1 + 0x34);
  iVar1 = *(int *)(iVar1 + 0x38) / 100;
  *(int *)(param_1 + 0x2c) = iVar1;
  *(int *)(param_1 + 0x28) = iVar2 / 100;
  return CONCAT31((int3)((uint)iVar1 >> 8),1);
}



undefined4 * __thiscall FUN_009e5340(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxWindowsPrintNativeData::vftable;
  if ((HGLOBAL)param_1_00[3] != (HGLOBAL)0x0) {
    GlobalFree((HGLOBAL)param_1_00[3]);
  }
  if ((HGLOBAL)param_1_00[4] != (HGLOBAL)0x0) {
    GlobalFree((HGLOBAL)param_1_00[4]);
  }
  *param_1_00 = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_009e5390(int param_1)

{
  LPPAGESETUPDLGW ptVar1;
  int iVar2;
  BOOL BVar3;
  
  FUN_009e4b40(param_1 + 0x1f0);
  ptVar1 = *(LPPAGESETUPDLGW *)(param_1 + 0x2b8);
  if (*(int *)(param_1 + 0x2b4) == 0) {
    iVar2 = (**(code **)(*DAT_032bcb68 + 0xd4))();
    if (iVar2 == 0) {
      ptVar1->hwndOwner = (HWND)0x0;
    }
    else {
      iVar2 = (**(code **)(*DAT_032bcb68 + 0xd4))();
      ptVar1->hwndOwner = *(HWND *)(iVar2 + 0x13c);
    }
  }
  else {
    ptVar1->hwndOwner = *(HWND *)(*(int *)(param_1 + 0x2b4) + 0x13c);
  }
  BVar3 = PageSetupDlgW(ptVar1);
  ptVar1->hwndOwner = (HWND)0x0;
  if (BVar3 != 0) {
    FUN_009e5140(param_1 + 0x1f0);
    return 0x13ec;
  }
  return 0x13ed;
}



void __thiscall FUN_009e5420(LPHANDLE param_1_00,int param_1,LPPRINTER_DEFAULTSW param_2)

{
  if (*param_1_00 != (HANDLE)0x0) {
    ClosePrinter(*param_1_00);
    *param_1_00 = (HANDLE)0x0;
  }
  if (7 < *(uint *)(param_1 + 0x18)) {
    OpenPrinterW(*(LPWSTR *)(param_1 + 4),param_1_00,param_2);
    return;
  }
  OpenPrinterW((LPWSTR)(param_1 + 4),param_1_00,param_2);
  return;
}



HGLOBAL FUN_009e5470(int param_1)

{
  short sVar1;
  int in_EAX;
  HGLOBAL hMem;
  short *psVar2;
  ushort uVar3;
  short *psVar4;
  int unaff_EBX;
  short *psVar5;
  
  hMem = (HGLOBAL)0x0;
  if (((*(int *)(in_EAX + 0x14) != 0) || (*(int *)(unaff_EBX + 0x14) != 0)) ||
     (*(int *)(param_1 + 0x14) != 0)) {
    hMem = GlobalAlloc(0x40,(*(int *)(param_1 + 0x14) + *(int *)(unaff_EBX + 0x14) +
                            *(int *)(in_EAX + 0x14)) * 2 + 0xe);
    psVar2 = (short *)GlobalLock(hMem);
    *psVar2 = 4;
    psVar5 = psVar2 + 4;
    if (*(uint *)(in_EAX + 0x18) < 8) {
      psVar4 = (short *)(in_EAX + 4);
    }
    else {
      psVar4 = *(short **)(in_EAX + 4);
    }
    do {
      sVar1 = *psVar4;
      *psVar5 = sVar1;
      psVar4 = psVar4 + 1;
      psVar5 = psVar5 + 1;
    } while (sVar1 != 0);
    uVar3 = *psVar2 + *(short *)(in_EAX + 0x14) + 1;
    psVar2[1] = uVar3;
    psVar5 = psVar2 + uVar3;
    if (*(uint *)(unaff_EBX + 0x18) < 8) {
      psVar4 = (short *)(unaff_EBX + 4);
    }
    else {
      psVar4 = *(short **)(unaff_EBX + 4);
    }
    do {
      sVar1 = *psVar4;
      *psVar5 = sVar1;
      psVar4 = psVar4 + 1;
      psVar5 = psVar5 + 1;
    } while (sVar1 != 0);
    uVar3 = *(short *)(unaff_EBX + 0x14) + psVar2[1] + 1;
    psVar2[2] = uVar3;
    psVar5 = psVar2 + uVar3;
    if (*(uint *)(param_1 + 0x18) < 8) {
      psVar4 = (short *)(param_1 + 4);
    }
    else {
      psVar4 = *(short **)(param_1 + 4);
    }
    do {
      sVar1 = *psVar4;
      *psVar5 = sVar1;
      psVar4 = psVar4 + 1;
      psVar5 = psVar5 + 1;
    } while (sVar1 != 0);
    psVar2[3] = 0;
    GlobalUnlock(hMem);
  }
  return hMem;
}



void FUN_009e5570(void)

{
  DWORD DVar1;
  wchar_t *pwVar2;
  wchar_t *pwVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be98d9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  DVar1 = CommDlgExtendedError();
  FUN_004325b6(L"Unknown");
  local_4 = 0;
  if (DVar1 < 0x1003) {
    if (DVar1 == 0x1002) {
      pwVar3 = L"PDERR_PARSEFAILURE";
      do {
        pwVar2 = pwVar3;
        pwVar3 = pwVar2 + 1;
      } while (*pwVar2 != L'\0');
      FID_conflict_assign(L"PDERR_PARSEFAILURE",(int)(pwVar2 + -0x6ca6b2) >> 1);
      ExceptionList = local_c;
      return;
    }
    switch(DVar1) {
    case 1:
      pwVar3 = L"CDERR_STRUCTSIZE";
      break;
    case 2:
      pwVar3 = L"CDERR_INITIALIZATION";
      break;
    case 3:
      pwVar3 = L"CDERR_NOTEMPLATE";
      break;
    case 4:
      pwVar3 = L"CDERR_NOHINSTANCE";
      break;
    case 5:
      pwVar3 = L"CDERR_LOADSTRFAILURE";
      break;
    case 6:
      pwVar3 = L"CDERR_FINDRESFAILURE";
      break;
    case 7:
      pwVar3 = L"CDERR_LOADRESFAILURE";
      break;
    case 8:
      pwVar3 = L"CDERR_LOCKRESFAILURE";
      break;
    case 9:
      pwVar3 = L"CDERR_MEMALLOCFAILURE";
      break;
    case 10:
      pwVar3 = L"CDERR_MEMLOCKFAILURE";
      break;
    case 0xb:
      pwVar3 = L"CDERR_NOHOOK";
      break;
    default:
      goto switchD_009e55ea_caseD_b;
    }
  }
  else {
    switch(DVar1) {
    case 0x1003:
      pwVar3 = L"PDERR_RETDEFFAILURE";
      break;
    case 0x1004:
      pwVar3 = L"PDERR_LOADDRVFAILURE";
      break;
    case 0x1005:
      pwVar3 = L"PDERR_GETDEVMODEFAIL";
      break;
    case 0x1006:
      pwVar3 = L"PDERR_INITFAILURE";
      break;
    case 0x1007:
      pwVar3 = L"PDERR_NODEVICES";
      break;
    case 0x1008:
      pwVar3 = L"PDERR_NODEFAULTPRN";
      break;
    case 0x1009:
      pwVar3 = L"PDERR_DNDMMISMATCH";
      break;
    case 0x100a:
      pwVar3 = L"PDERR_CREATEICFAILURE";
      break;
    case 0x100b:
      pwVar3 = L"PDERR_PRINTERNOTFOUND";
      break;
    case 0x100c:
      pwVar3 = L"PDERR_DEFAULTDIFFERENT";
      break;
    default:
      goto switchD_009e55ea_caseD_b;
    }
  }
  FUN_00432199(pwVar3);
switchD_009e55ea_caseD_b:
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009e5760(int param_1_00,int param_1,HANDLE param_2)

{
  char cVar1;
  int iVar2;
  SIZE_T dwBytes;
  PDEVMODEW pDevModeOutput;
  LONG LVar3;
  BOOL BVar4;
  LPWSTR pDeviceName;
  tagPDW atStack_fc [3];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be9926;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0xc) == 0) {
    if (*(uint *)(param_1 + 0x18) < 8) {
      pDeviceName = (LPWSTR)(param_1 + 4);
    }
    else {
      pDeviceName = *(LPWSTR *)(param_1 + 4);
    }
    if ((*(int *)(param_1 + 0x14) != 0) && (param_2 != (HANDLE)0x0)) {
      iVar2 = FUN_009e5420();
      if (iVar2 == 1) {
        dwBytes = DocumentPropertiesW((HWND)0x0,param_2,pDeviceName,(PDEVMODEW)0x0,(PDEVMODEW)0x0,0)
        ;
        pDevModeOutput = (PDEVMODEW)GlobalAlloc(0x40,dwBytes);
        LVar3 = DocumentPropertiesW((HWND)0x0,param_2,pDeviceName,pDevModeOutput,(PDEVMODEW)0x0,2);
        if (LVar3 == 1) {
          *(PDEVMODEW *)(param_1_00 + 0xc) = pDevModeOutput;
        }
        else {
          GlobalFree(pDevModeOutput);
          FUN_009e4700();
        }
      }
    }
    if (*(int *)(param_1_00 + 0xc) == 0) {
      _memset(atStack_fc,0,0x42);
      atStack_fc[0].lStructSize = 0x42;
      atStack_fc[0].hwndOwner = (HWND)0x0;
      atStack_fc[0].hDevMode = (HGLOBAL)0x0;
      atStack_fc[0].hDevNames = (HGLOBAL)0x0;
      atStack_fc[0].Flags = 0x400;
      atStack_fc[0].nCopies = 1;
      BVar4 = PrintDlgW(atStack_fc);
      if (BVar4 == 0) {
        if (atStack_fc[0].hDevMode != (HGLOBAL)0x0) {
          GlobalFree(atStack_fc[0].hDevMode);
        }
        if (atStack_fc[0].hDevNames != (HGLOBAL)0x0) {
          GlobalFree(atStack_fc[0].hDevNames);
        }
        atStack_fc[0].hDevMode = (HGLOBAL)0x0;
        atStack_fc[0].hDevNames = (HGLOBAL)0x0;
        FUN_0043c211(&DAT_00d25fa0);
        cVar1 = FUN_00846b30(6);
        if (cVar1 != '\0') {
          FUN_009e5570();
          uStack_4 = 0;
          FUN_008535a0();
          uStack_4._0_1_ = 1;
          FUN_008433c0();
          uStack_4._0_1_ = 2;
          FUN_008423d0();
          uStack_4._0_1_ = 3;
          FUN_008854f0();
          FUN_0083fe90();
          uStack_4._0_1_ = 2;
          FUN_00842440();
          uStack_4 = CONCAT31(uStack_4._1_3_,1);
          FUN_0081b5bc();
          FUN_0040159c();
          FUN_0040159c();
        }
      }
      else {
        *(HGLOBAL *)(param_1_00 + 0xc) = atStack_fc[0].hDevMode;
        atStack_fc[0].hDevMode = (HGLOBAL)0x0;
        if (atStack_fc[0].hDevNames != (HGLOBAL)0x0) {
          GlobalFree(atStack_fc[0].hDevNames);
        }
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009e59b0(int param_1_00,int param_1)

{
  char cVar1;
  short sVar2;
  int iVar3;
  wchar_t wVar4;
  undefined4 ****ppppuVar5;
  uint uVar6;
  int iVar7;
  undefined4 uVar8;
  size_t _Count;
  PDEVMODEW pDevModeOutput;
  undefined4 ****_Source;
  HANDLE local_74;
  int local_70;
  int local_6c;
  LPWSTR local_68;
  PDEVMODEW local_64;
  wchar_t *local_5c;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined4 ****local_30 [4];
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be9970;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_74;
  ExceptionList = &local_c;
  local_74 = (HANDLE)0x0;
  local_70 = param_1 + 0x20;
  local_4 = 0;
  if (*(uint *)(param_1 + 0x38) < 8) {
    local_68 = (LPWSTR)(param_1 + 0x24);
  }
  else {
    local_68 = *(LPWSTR *)(param_1 + 0x24);
  }
  local_6c = param_1_00;
  if (*(int *)(param_1_00 + 0xc) == 0) {
    FUN_009e5760(local_70,&local_74);
  }
  pDevModeOutput = *(PDEVMODEW *)(param_1_00 + 0xc);
  local_64 = pDevModeOutput;
  if (pDevModeOutput == (PDEVMODEW)0x0) goto LAB_009e5d4a;
  FUN_00966c60(pDevModeOutput);
  local_5c[0x26] = (wchar_t)*(undefined4 *)(param_1 + 0x18);
  cVar1 = *(char *)(param_1 + 0x1d);
  *(uint *)(local_5c + 0x24) = *(uint *)(local_5c + 0x24) | 0x8000;
  local_4._0_1_ = 1;
  local_5c[0x32] = (ushort)(cVar1 != '\0');
  local_5c[0x2b] = (wchar_t)*(undefined4 *)(param_1 + 0x14);
  *(uint *)(local_5c + 0x24) = *(uint *)(local_5c + 0x24) | 0x100;
  local_1c = 7;
  local_20 = 0;
  local_30[0] = (undefined4 ****)((uint)local_30[0] & 0xffff0000);
  FID_conflict_assign(local_70,0,0xffffffff);
  local_18 = (void *)0x0;
  local_4 = CONCAT31(local_4._1_3_,2);
  if (local_20 != 0) {
    _Source = local_30[0];
    if (local_1c < 8) {
      _Source = local_30;
    }
    ppppuVar5 = _Source;
    do {
      sVar2 = *(short *)ppppuVar5;
      ppppuVar5 = (undefined4 ****)((int)ppppuVar5 + 2);
    } while (sVar2 != 0);
    uVar6 = (int)ppppuVar5 - ((int)_Source + 2) >> 1;
    _Count = 0x1f;
    if (uVar6 < 0x20) {
      _Count = uVar6;
    }
    _wcsncpy(local_5c,(wchar_t *)_Source,_Count);
    local_5c[_Count] = L'\0';
    pDevModeOutput = local_64;
  }
  if (*(char *)(param_1 + 0x44) == '\0') {
    local_5c[0x2e] = L'\x01';
  }
  else {
    local_5c[0x2e] = L'\x02';
  }
  *(uint *)(local_5c + 0x24) = *(uint *)(local_5c + 0x24) | 0x800;
  if (((*(int *)(param_1 + 0x50) == 0) || (DAT_032ea194 == 0)) ||
     (iVar7 = FUN_009e7500(*(int *)(param_1 + 0x50)), iVar7 == 0)) {
    iVar7 = *(int *)(param_1 + 0x54);
    iVar3 = *(int *)(param_1 + 0x58);
    if ((iVar7 != DAT_03238d04) || (iVar3 != DAT_03238d08)) {
      wVar4 = *(wchar_t *)(local_6c + 0x14);
      if (wVar4 == L'\0') {
        wVar4 = L'Ā';
      }
      *(uint *)(local_5c + 0x24) = *(uint *)(local_5c + 0x24) | 0xc;
      local_5c[0x27] = wVar4;
      local_5c[0x29] = (short)iVar7 * 10;
      local_5c[0x28] = (short)iVar3 * 10;
    }
  }
  else {
    uVar8 = *(undefined4 *)(iVar7 + 0xc);
    *(uint *)(local_5c + 0x24) = *(uint *)(local_5c + 0x24) | 2;
    local_5c[0x27] = (wchar_t)uVar8;
  }
  if (*(int *)(param_1 + 0x48) == 1) {
    wVar4 = L'\x03';
  }
  else if (*(int *)(param_1 + 0x48) == 2) {
    wVar4 = L'\x02';
  }
  else {
    wVar4 = L'\x01';
  }
  *(uint *)(local_5c + 0x24) = *(uint *)(local_5c + 0x24) | 0x1000;
  local_5c[0x2f] = wVar4;
  switch(*(undefined4 *)(param_1 + 0x4c)) {
  case 0xfffffffc:
    wVar4 = L'\xffff';
    break;
  case 0xfffffffd:
    wVar4 = L'\xfffe';
    break;
  case 0xfffffffe:
    wVar4 = L'�';
    break;
  case 0xffffffff:
    wVar4 = L'￼';
    break;
  default:
    wVar4 = (wchar_t)*(undefined4 *)(param_1 + 0x4c);
    local_5c[0x30] = wVar4;
    *(uint *)(local_5c + 0x24) = *(uint *)(local_5c + 0x24) | 0x2000;
  }
  *(uint *)(local_5c + 0x24) = *(uint *)(local_5c + 0x24) | 0x400;
  local_5c[0x2d] = wVar4;
  if (0 < (int)*(size_t *)(param_1 + 0x84)) {
    _memcpy((void *)((uint)(ushort)local_5c[0x22] + (int)local_5c),*(void **)(param_1 + 0x80),
            *(size_t *)(param_1 + 0x84));
    local_5c[0x23] = (wchar_t)*(undefined4 *)(param_1 + 0x84);
  }
  iVar7 = *(int *)(param_1 + 8);
  if (iVar7 == 0) goto LAB_009e5cd6;
  switch(iVar7) {
  case 1:
    wVar4 = L'\x01';
    goto LAB_009e5ccb;
  case 2:
    local_5c[0x2c] = L'\x02';
    break;
  case 3:
    local_5c[0x2c] = L'\x03';
    break;
  case 4:
    wVar4 = L'\x04';
    goto LAB_009e5ccb;
  case 5:
    local_5c[0x2c] = L'\x05';
    break;
  case 6:
    local_5c[0x2c] = L'\x06';
    break;
  case 7:
    wVar4 = L'\a';
    goto LAB_009e5ccb;
  case 8:
    local_5c[0x2c] = L'\b';
    break;
  case 9:
    local_5c[0x2c] = L'\t';
    break;
  case 10:
    wVar4 = L'\n';
    goto LAB_009e5ccb;
  case 0xb:
    local_5c[0x2c] = L'\v';
    break;
  case 0xc:
    local_5c[0x2c] = L'\x0e';
    break;
  case 0xd:
    wVar4 = L'\x0f';
    goto LAB_009e5ccb;
  default:
    wVar4 = (short)iVar7 + L'ò';
LAB_009e5ccb:
    local_5c[0x2c] = wVar4;
  }
  *(uint *)(local_5c + 0x24) = *(uint *)(local_5c + 0x24) | 0x200;
LAB_009e5cd6:
  iVar7 = *(int *)(param_1 + 0xc);
  if (iVar7 != 0) {
    *(uint *)(local_5c + 0x24) = *(uint *)(local_5c + 0x24) | 0x2000000;
    *(int *)(local_5c + 0x62) = iVar7;
  }
  if (local_74 != (HANDLE)0x0) {
    DocumentPropertiesW((HWND)0x0,local_74,local_68,pDevModeOutput,pDevModeOutput,10);
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  local_30[0] = (undefined4 ****)((uint)local_30[0] & 0xffff0000);
  local_4 = local_4 & 0xffffff00;
  local_1c = 7;
  local_20 = 0;
  FUN_00966d70();
  param_1_00 = local_6c;
LAB_009e5d4a:
  if (*(HGLOBAL *)(param_1_00 + 0x10) != (HGLOBAL)0x0) {
    GlobalFree(*(HGLOBAL *)(param_1_00 + 0x10));
  }
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = CONCAT31(local_4._1_3_,3);
  FUN_004325b6(PTR_DAT_03236318);
  uVar8 = FUN_009e5470(local_58);
  *(undefined4 *)(param_1_00 + 0x10) = uVar8;
  _free(local_18);
  if (local_1c < 8) {
    local_1c = 7;
    local_20 = 0;
    local_30[0] = (undefined4 ****)((uint)local_30[0] & 0xffff0000);
    _free(local_3c);
    if (local_40 < 8) {
      if (local_74 != (HANDLE)0x0) {
        ClosePrinter(local_74);
      }
      ExceptionList = local_c;
      ___security_check_cookie_4();
      return;
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_30[0]);
}



void __thiscall FUN_009e5e70(int param_1_00,int param_1)

{
  int iVar1;
  short sVar2;
  uint uVar3;
  int iVar4;
  undefined local_68 [4];
  short *local_64;
  int local_5c;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be99c8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_68;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0xc) == 0) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    FUN_009e5760(local_58,0);
    local_4 = 0xffffffff;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54,uVar3);
    }
  }
  if (*(int *)(param_1_00 + 0xc) == 0) goto LAB_009e62ce;
  FUN_00966c60(*(int *)(param_1_00 + 0xc));
  local_4 = 1;
  if ((*(byte *)(local_64 + 0x24) & 1) != 0) {
    *(int *)(param_1 + 0x18) = (int)local_64[0x26];
  }
  if ((*(uint *)(local_64 + 0x24) & 0x8000) != 0) {
    *(bool *)(param_1 + 0x1d) = local_64[0x32] == 1;
  }
  if ((*(uint *)(local_64 + 0x24) & 0x100) != 0) {
    *(int *)(param_1 + 0x14) = (int)local_64[0x2b];
  }
  if ((*(uint *)(local_64 + 0x24) & 0x200) == 0) {
LAB_009e5fff:
    *(undefined4 *)(param_1 + 8) = 0;
  }
  else {
    sVar2 = local_64[0x2c];
    switch((int)sVar2) {
    case 1:
      *(undefined4 *)(param_1 + 8) = 1;
      break;
    case 2:
      *(undefined4 *)(param_1 + 8) = 2;
      break;
    case 3:
      *(undefined4 *)(param_1 + 8) = 3;
      break;
    case 4:
      *(undefined4 *)(param_1 + 8) = 4;
      break;
    case 5:
      *(undefined4 *)(param_1 + 8) = 5;
      break;
    case 6:
      *(undefined4 *)(param_1 + 8) = 6;
      break;
    case 7:
      *(undefined4 *)(param_1 + 8) = 7;
      break;
    case 8:
      *(undefined4 *)(param_1 + 8) = 8;
      break;
    case 9:
      *(undefined4 *)(param_1 + 8) = 9;
      break;
    case 10:
      *(undefined4 *)(param_1 + 8) = 10;
      break;
    case 0xb:
      *(undefined4 *)(param_1 + 8) = 0xb;
      break;
    default:
      if (sVar2 < 0x100) goto LAB_009e5fff;
      *(int *)(param_1 + 8) = sVar2 + -0xf2;
      break;
    case 0xe:
      *(undefined4 *)(param_1 + 8) = 0xc;
      break;
    case 0xf:
      *(undefined4 *)(param_1 + 8) = 0xd;
    }
  }
  if ((*(uint *)(local_64 + 0x24) & 0x2000000) != 0) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(local_64 + 0x62) == 0)) {
      FUN_008402e0("..\\..\\src\\msw\\printdlg.cpp",0xf9,"wxWindowsPrintNativeData::TransferTo",
                   "(int)devMode->dmMediaType != wxPRINTMEDIA_DEFAULT",0);
    }
    *(undefined4 *)(param_1 + 0xc) = *(undefined4 *)(local_64 + 0x62);
  }
  if (*local_64 != 0) {
    iVar4 = FUN_00852140(local_64,0x20);
    local_4._0_1_ = 2;
    if (param_1 + 0x20 != iVar4) {
      FID_conflict_assign(iVar4,0,0xffffffff);
    }
    local_4 = CONCAT31(local_4._1_3_,1);
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  if ((*(uint *)(local_64 + 0x24) & 0x800) == 0) {
    *(undefined *)(param_1 + 0x44) = 1;
  }
  else {
    *(bool *)(param_1 + 0x44) = local_64[0x2e] == 2;
  }
  if (((*(byte *)(local_64 + 0x24) & 2) == 0) || (0xff < local_64[0x27])) {
LAB_009e616d:
    if (((*(uint *)(local_64 + 0x24) & 8) == 0) || ((*(uint *)(local_64 + 0x24) & 4) == 0)) {
      *(undefined4 *)(param_1 + 0x54) = 0;
      *(undefined4 *)(param_1 + 0x58) = 0;
      *(undefined4 *)(param_1 + 0x50) = 0;
      sVar2 = local_64[0x27];
      goto LAB_009e61c6;
    }
    sVar2 = local_64[0x28];
    *(int *)(param_1 + 0x54) = (int)local_64[0x29] / 10;
    *(int *)(param_1 + 0x58) = (int)sVar2 / 10;
    *(undefined4 *)(param_1 + 0x50) = 0;
    *(short *)(param_1_00 + 0x14) = local_64[0x27];
  }
  else {
    if (DAT_032ea194 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\msw\\printdlg.cpp",0x124,"wxWindowsPrintNativeData::TransferTo",
                     "Assert failure",
                     L"Paper database wasn\'t initialized in wxPrintData::ConvertFromNative.");
      }
      *(undefined4 *)(param_1 + 0x58) = 0;
      *(undefined4 *)(param_1 + 0x50) = 0;
      *(undefined4 *)(param_1 + 0x54) = 0;
      *(undefined2 *)(param_1_00 + 0x14) = 0;
      local_4 = 0xffffffff;
      FUN_00966d70();
      goto LAB_009e62ce;
    }
    iVar4 = FUN_009e7570((int)local_64[0x27]);
    if (iVar4 == 0) goto LAB_009e616d;
    *(undefined4 *)(param_1 + 0x50) = *(undefined4 *)(iVar4 + 8);
    iVar1 = *(int *)(iVar4 + 0x10);
    *(int *)(param_1 + 0x58) = *(int *)(iVar4 + 0x14) / 10;
    sVar2 = 0;
    *(int *)(param_1 + 0x54) = iVar1 / 10;
LAB_009e61c6:
    *(short *)(param_1_00 + 0x14) = sVar2;
  }
  if ((*(uint *)(local_64 + 0x24) & 0x1000) == 0) {
LAB_009e61f3:
    *(undefined4 *)(param_1 + 0x48) = 0;
  }
  else if (local_64[0x2f] == 2) {
    *(undefined4 *)(param_1 + 0x48) = 2;
  }
  else {
    if (local_64[0x2f] != 3) goto LAB_009e61f3;
    *(undefined4 *)(param_1 + 0x48) = 1;
  }
  if ((*(uint *)(local_64 + 0x24) & 0x400) == 0) {
switchD_009e620b_caseD_fffffffc:
    *(undefined4 *)(param_1 + 0x4c) = 0xffffffff;
  }
  else {
    switch((int)local_64[0x2d]) {
    case -4:
      goto switchD_009e620b_caseD_fffffffc;
    case -3:
      *(undefined4 *)(param_1 + 0x4c) = 0xfffffffe;
      break;
    case -2:
      *(undefined4 *)(param_1 + 0x4c) = 0xfffffffd;
      break;
    case -1:
      *(undefined4 *)(param_1 + 0x4c) = 0xfffffffc;
      break;
    default:
      *(int *)(param_1 + 0x4c) = (int)local_64[0x2d];
    }
  }
  sVar2 = local_64[0x23];
  if (sVar2 == 0) {
    sVar2 = 0;
    iVar4 = 0;
  }
  else {
    iVar4 = (uint)(ushort)local_64[0x22] + (int)local_64;
  }
  FUN_009bddc0(iVar4,sVar2);
  if (*(int *)(param_1_00 + 0x10) != 0) {
    FUN_00966c60(*(int *)(param_1_00 + 0x10));
    local_4._0_1_ = 3;
    FUN_004325b6(local_5c + (uint)*(ushort *)(local_5c + 2) * 2);
    local_4._0_1_ = 4;
    if ((local_20 != 0) && ((undefined *)(param_1 + 0x20) != local_34)) {
      FID_conflict_assign(local_34,0,0xffffffff);
    }
    FUN_0040159c();
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00966d70();
  }
  local_4 = 0xffffffff;
  FUN_00966d70();
LAB_009e62ce:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_009e6340(void)

{
  return &PTR_u_wxPrinterDCImpl_0323d7cc;
}



void __fastcall FUN_009e6350(int param_1)

{
  if (*(HDC *)(param_1 + 0x108) != (HDC)0x0) {
    EndDoc(*(HDC *)(param_1 + 0x108));
  }
  return;
}



void __fastcall FUN_009e6370(int param_1)

{
  if (*(HDC *)(param_1 + 0x108) != (HDC)0x0) {
    StartPage(*(HDC *)(param_1 + 0x108));
  }
  return;
}



void __fastcall FUN_009e6390(int param_1)

{
  if (*(HDC *)(param_1 + 0x108) != (HDC)0x0) {
    EndPage(*(HDC *)(param_1 + 0x108));
  }
  return;
}



undefined4 * __thiscall FUN_009e6440(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be99f8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_0098fb70(param_1);
  local_4 = 0;
  *param_1_00 = wxPrinterDCImpl::vftable;
  FUN_009be180(uVar1);
  *(byte *)(param_1_00 + 0x41) = *(byte *)(param_1_00 + 0x41) | 1;
  param_1_00[0x42] = param_2;
  *(byte *)(param_1_00 + 4) = *(byte *)(param_1_00 + 4) & 0xf7 | 2;
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall thunk_FUN_0094f430(int param_1_00,int *param_1,int *param_2)

{
  int iVar1;
  
  if (param_1 != (int *)0x0) {
    iVar1 = GetDeviceCaps(*(HDC *)(param_1_00 + 0x108),8);
    *param_1 = iVar1;
  }
  if (param_2 != (int *)0x0) {
    iVar1 = GetDeviceCaps(*(HDC *)(param_1_00 + 0x108),10);
    *param_2 = iVar1;
  }
  return;
}



void FUN_009e64d0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be99f8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_009bdf40(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  FUN_009504a0();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009e6530(undefined4 param_1_00,byte param_1)

{
  FUN_009e64d0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_009e6550(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x5c,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



uint FUN_009e6590(void)

{
  ushort uVar1;
  BOOL BVar2;
  LPVOID pvVar3;
  int unaff_EDI;
  tagPDW local_44;
  
  FUN_00432156();
  _memset(&local_44,0,0x42);
  local_44.lStructSize = 0x42;
  local_44.hwndOwner = (HWND)0x0;
  local_44.hDevMode = (HGLOBAL)0x0;
  local_44.hDevNames = (HGLOBAL)0x0;
  local_44.Flags = 0x400;
  local_44.nCopies = 1;
  BVar2 = PrintDlgW(&local_44);
  if (BVar2 == 0) {
    if (local_44.hDevMode != (HGLOBAL)0x0) {
      GlobalFree(local_44.hDevMode);
    }
    if (local_44.hDevNames != (HGLOBAL)0x0) {
      local_44.hDevNames = GlobalFree(local_44.hDevNames);
    }
    return (uint)local_44.hDevNames & 0xffffff00;
  }
  if (local_44.hDevNames != (HGLOBAL)0x0) {
    pvVar3 = GlobalLock(local_44.hDevNames);
    uVar1 = *(ushort *)((int)pvVar3 + 4);
    FUN_00432199((LPVOID)((int)pvVar3 + (uint)*(ushort *)((int)pvVar3 + 2) * 2));
    FUN_00432199((LPVOID)((int)pvVar3 + (uint)uVar1 * 2));
    GlobalUnlock(local_44.hDevNames);
    GlobalFree(local_44.hDevNames);
    local_44.hDevNames = (HGLOBAL)0x0;
  }
  if (local_44.hDevMode != (HGLOBAL)0x0) {
    GlobalFree(local_44.hDevMode);
  }
  return (uint)(*(int *)(unaff_EDI + 0x14) != 0);
}



void __thiscall FUN_009e6670(int param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  undefined auStack_e0 [8];
  undefined4 uStack_d8;
  undefined *puStack_d4;
  char *pcStack_d0;
  char *pcStack_cc;
  wchar_t *pwStack_c8;
  DOCINFOW local_b0;
  undefined *puStack_9c;
  undefined auStack_98 [104];
  undefined4 ***local_30 [4];
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be9a3e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_b0;
  ExceptionList = &local_c;
  local_b0.cbSize = 0x14;
  if (*(uint *)(param_1 + 0x18) < 8) {
    local_b0.lpszDocName = (LPCWSTR)(param_1 + 4);
  }
  else {
    local_b0.lpszDocName = *(LPCWSTR *)(param_1 + 4);
  }
  FUN_009e6550();
  local_4 = 0;
  if (local_20 == 0) {
    local_b0.lpszOutput = (LPCWSTR)0x0;
  }
  else if (local_1c < 8) {
    local_b0.lpszOutput = (LPCWSTR)local_30;
  }
  else {
    local_b0.lpszOutput = (LPCWSTR)local_30[0];
  }
  local_b0.lpszDatatype = (LPCWSTR)0x0;
  local_b0.fwType = 0;
  if (*(HDC *)(param_1_00 + 0x108) == (HDC)0x0) {
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  else {
    pwStack_c8 = L"삅輏ç";
    iVar2 = StartDocW(*(HDC *)(param_1_00 + 0x108),&local_b0);
    if (iVar2 < 1) {
      puStack_9c = auStack_e0;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(6);
      if (cVar1 != '\0') {
        FUN_0081c0f1();
        pwStack_c8 = (wchar_t *)0xce;
        pcStack_cc = "..\\..\\src\\msw\\dcprint.cpp";
        pcStack_d0 = (char *)0x6;
        local_4._0_1_ = 1;
        puStack_d4 = (undefined *)0x9e67cc;
        FUN_008423d0();
        local_4._0_1_ = 2;
        GetLastError();
        FUN_00843700();
        GetLastError();
        pwStack_c8 = L"StartDoc";
        pcStack_cc = (char *)0xce;
        pcStack_d0 = "..\\..\\src\\msw\\dcprint.cpp";
        puStack_d4 = auStack_98;
        uStack_d8 = 0x9e6806;
        FUN_00847d90();
        local_4._0_1_ = 1;
        FUN_00842440();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_0081b5bc();
      }
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    else {
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_009e68b0(int param_1)

{
  int *piVar1;
  char cVar2;
  undefined4 *pwszDevice;
  HDC pHVar3;
  undefined auStack_f0 [8];
  undefined4 uStack_e8;
  undefined *puStack_e4;
  char *pcStack_e0;
  DEVMODEW *pDStack_b4;
  undefined *puStack_b0;
  undefined auStack_5c [4];
  uint uStack_58;
  undefined4 uStack_48;
  uint uStack_44;
  void *pvStack_40;
  undefined4 uStack_34;
  int iStack_24;
  uint uStack_20;
  void *pvStack_1c;
  void *local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00be9a9e;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&pDStack_b4);
  ExceptionList = &local_c;
  piVar1 = *(int **)(param_1 + 0x88);
  (**(code **)(*piVar1 + 0x14))();
  uStack_34 = (undefined4 *)((uint)uStack_34._2_2_ << 0x10);
  uStack_20 = 7;
  iStack_24 = 0;
  FID_conflict_assign();
  pvStack_1c = (void *)0x0;
  uStack_8 = (undefined *)0x0;
  if (iStack_24 == 0) {
    uStack_44 = 7;
    uStack_48 = 0;
    uStack_58 = uStack_58 & 0xffff0000;
    pvStack_40 = (void *)0x0;
    uStack_8 = (undefined *)0x1;
    cVar2 = FUN_009e6590();
    if (cVar2 == '\0') {
      _free(pvStack_40);
      if (7 < uStack_44) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_44 = 7;
      uStack_48 = 0;
      uStack_58 = uStack_58 & 0xffff0000;
      _free(pvStack_1c);
      if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      goto LAB_009e6b72;
    }
    _free(pvStack_40);
    if (7 < uStack_44) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
  }
  pDStack_b4 = (DEVMODEW *)0x0;
  uStack_8._0_1_ = 2;
  if (piVar1[3] != 0) {
    FUN_00966c60();
  }
  pwszDevice = uStack_34;
  if (uStack_20 < 8) {
    pwszDevice = &uStack_34;
  }
  pcStack_e0 = (char *)0x9e6a74;
  pHVar3 = CreateDCW((LPCWSTR)0x0,(LPCWSTR)pwszDevice,(LPCWSTR)0x0,pDStack_b4);
  if (pHVar3 == (HDC)0x0) {
    puStack_b0 = auStack_f0;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(6);
    if (cVar2 != '\0') {
      FUN_0081c0f1();
      pcStack_e0 = (char *)0x6;
      uStack_8._0_1_ = 3;
      puStack_e4 = (undefined *)0x9e6ad8;
      FUN_008423d0();
      uStack_8._0_1_ = 4;
      GetLastError();
      FUN_00843700();
      GetLastError();
      pcStack_e0 = "..\\..\\src\\msw\\dcprint.cpp";
      puStack_e4 = auStack_5c;
      uStack_e8 = 0x9e6b15;
      FUN_00847d90();
      uStack_8._0_1_ = 3;
      FUN_00842440();
      uStack_8._0_1_ = 2;
      FUN_0081b5bc();
    }
  }
  uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
  FUN_00966d70();
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
LAB_009e6b72:
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



// WARNING: Removing unreachable block (ram,0x009e6c1d)
// WARNING: Removing unreachable block (ram,0x009e6d1c)
// WARNING: Removing unreachable block (ram,0x009e6d61)
// WARNING: Removing unreachable block (ram,0x009e6d86)
// WARNING: Removing unreachable block (ram,0x009e6e1c)
// WARNING: Removing unreachable block (ram,0x009e6e4a)
// WARNING: Removing unreachable block (ram,0x009e6c33)
// WARNING: Removing unreachable block (ram,0x009e6c58)

uint FUN_009e6ba0(void)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be9b01;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00973790();
  local_4 = 0xffffffff;
  uVar1 = FUN_008f2db0();
  ExceptionList = local_c;
  return uVar1 & 0xffffff00;
}



void __thiscall FUN_009e6e80(int param_1_00,int *param_1,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  uint uVar2;
  undefined4 unaff_EBX;
  undefined4 unaff_retaddr;
  undefined4 auStack_1c [4];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be9b38;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffd4);
  if (cVar1 == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\dcprint.cpp",0x194,"wxPrinterDCImpl::DoDrawBitmap",
                   "bmp.IsOk()",L"invalid bitmap in wxPrinterDC::DrawBitmap");
    }
  }
  else {
    if (param_1[1] == 0) {
      auStack_1c[0] = 0;
    }
    else {
      auStack_1c[0] = *(undefined4 *)(param_1[1] + 8);
    }
    uVar2 = GetDeviceCaps(*(HDC *)(param_1_00 + 0x108),0x26);
    if (((uVar2 & 0x2000) == 0) ||
       (cVar1 = FUN_009e6ba0(*(undefined4 *)(param_1_00 + 0x108),param_1,param_3,param_4),
       cVar1 == '\0')) {
      FUN_0094bd80();
      uStack_4 = 0;
      FUN_0094be70(param_1);
      (**(code **)(**(int **)(*(int *)(param_1_00 + 8) + 8) + 0x170))
                (param_3,param_4,unaff_EBX,unaff_retaddr,auStack_1c,0,0,5,param_4,0xffffffff,
                 0xffffffff);
      FUN_0094c840(&PTR_vftable_03238cc8);
      uStack_4 = 0xffffffff;
      FUN_00457221();
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall
FUN_009e6fd0(int param_1_00,int param_1,int param_2,int param_3,int param_4,int param_5)

{
  int *piVar1;
  HDC pHVar2;
  char cVar3;
  undefined **ppuVar4;
  undefined4 uVar5;
  int iVar6;
  HDC hdc;
  HGDIOBJ h;
  COLORREF CVar7;
  HBRUSH pHVar8;
  uint uVar9;
  COLORREF CVar10;
  int iVar11;
  char in_stack_00000024;
  RECT RStack_10;
  
  piVar1 = *(int **)(param_5 + 8);
  if ((piVar1 != (int *)0x0) &&
     (((ppuVar4 = (undefined **)(**(code **)*piVar1)(), ppuVar4 == &PTR_u_wxMSWDCImpl_0323af3c ||
       ((ppuVar4[3] != (undefined *)0x0 &&
        (cVar3 = FUN_0048a047(&PTR_u_wxMSWDCImpl_0323af3c), cVar3 != '\0')))) ||
      ((ppuVar4[4] != (undefined *)0x0 &&
       (cVar3 = FUN_0048a047(&PTR_u_wxMSWDCImpl_0323af3c), cVar3 != '\0')))))) {
    uVar5 = (**(code **)(*piVar1 + 0x194))();
    if ((in_stack_00000024 != '\0') && (iVar6 = FUN_008f25d0(), iVar6 != 0)) {
      pHVar2 = (HDC)piVar1[0x42];
      hdc = CreateCompatibleDC(pHVar2);
      h = SelectObject(hdc,*(HGDIOBJ *)(iVar6 + 8));
      iVar6 = 0;
      if (0 < param_3) {
        do {
          iVar11 = 0;
          if (0 < param_4) {
            do {
              CVar7 = GetPixel(hdc,iVar6,iVar11);
              if (CVar7 != 0) {
                CVar7 = GetPixel(pHVar2,iVar6,iVar11);
                pHVar8 = CreateSolidBrush(CVar7);
                RStack_10.left = iVar6 + param_1;
                RStack_10.right = RStack_10.left + 1;
                RStack_10.top = param_2 + iVar11;
                RStack_10.bottom = RStack_10.top + 1;
                FillRect(*(HDC *)(param_1_00 + 0x108),&RStack_10,pHVar8);
                DeleteObject(pHVar8);
              }
              iVar11 = iVar11 + 1;
            } while (iVar11 < param_4);
          }
          iVar6 = iVar6 + 1;
        } while (iVar6 < param_3);
      }
      if (hdc != (HDC)0x0) {
        SelectObject(hdc,h);
      }
      DeleteDC(hdc);
      return 1;
    }
    uVar9 = GetDeviceCaps(*(HDC *)(param_1_00 + 0x108),0x26);
    if (((uVar9 & 0x2000) == 0) ||
       (cVar3 = FUN_009e6ba0(*(undefined4 *)(param_1_00 + 0x108),uVar5,param_1,param_2),
       cVar3 == '\0')) {
      pHVar2 = (HDC)piVar1[0x42];
      _in_stack_00000024 = 0;
      if (0 < param_4) {
        do {
          iVar6 = 0;
          if (0 < param_3) {
            do {
              CVar7 = GetPixel(pHVar2,iVar6,_in_stack_00000024);
              pHVar8 = CreateSolidBrush(CVar7);
              RStack_10.left = iVar6 + param_1;
              RStack_10.top = _in_stack_00000024 + param_2;
              iVar11 = iVar6;
              while ((iVar11 = iVar11 + 1, iVar11 < param_3 &&
                     (CVar10 = GetPixel(pHVar2,iVar11,_in_stack_00000024), CVar10 == CVar7))) {
                iVar6 = iVar6 + 1;
              }
              RStack_10.right = param_1 + 1 + iVar6;
              RStack_10.bottom = RStack_10.top + 1;
              FillRect(*(HDC *)(param_1_00 + 0x108),&RStack_10,pHVar8);
              DeleteObject(pHVar8);
              iVar6 = iVar6 + 1;
            } while (iVar6 < param_3);
          }
          _in_stack_00000024 = _in_stack_00000024 + 1;
        } while (_in_stack_00000024 < param_4);
      }
    }
    return 1;
  }
  return 0;
}



int * __thiscall FUN_009e7250(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be9b76;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_0098fb70(param_1);
  local_4 = 0;
  *param_1_00 = (int)wxPrinterDCImpl::vftable;
  FUN_009be180(uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_009be2a0(param_2);
  *(byte *)(param_1_00 + 4) = *(byte *)(param_1_00 + 4) & 0xf7;
  iVar2 = FUN_009e68b0(param_2);
  *(byte *)(param_1_00 + 0x41) = *(byte *)(param_1_00 + 0x41) | 1;
  param_1_00[0x42] = iVar2;
  *(byte *)(param_1_00 + 4) =
       *(byte *)(param_1_00 + 4) ^ ((iVar2 != 0) * '\x02' ^ *(byte *)(param_1_00 + 4)) & 2;
  if (iVar2 != 0) {
    (**(code **)(*param_1_00 + 0xe4))(1);
    iVar2 = *param_1_00;
    uVar3 = FUN_008f8a00(0);
    (**(code **)(iVar2 + 0x60))(uVar3);
    iVar2 = *param_1_00;
    uVar3 = FUN_008f8330(0x1a);
    (**(code **)(iVar2 + 0x58))(uVar3);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined ** FUN_009e7330(void)

{
  return &PTR_u_wxPrintPaperType_0323d878;
}



undefined ** FUN_009e7340(void)

{
  return &PTR_u_wxPrintPaperModule_0323d890;
}



undefined4 * __thiscall
FUN_009e7350(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x18);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0086b5c0(param_1_00,param_1,param_2,param_3,param_4);
    *puVar1 = wxwxPrintPaperTypeListNode::vftable;
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * FUN_009e73d0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxPrintPaperModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



int __thiscall FUN_009e7430(int param_1_00,int *param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  
  uVar4 = 0;
  if (*(int *)(*(int *)(param_1_00 + 4) + 4) != 0) {
    do {
      iVar1 = FUN_0086aef0(uVar4);
      iVar1 = *(int *)(iVar1 + 8);
      uVar2 = *(int *)(iVar1 + 0x10) - *param_1;
      uVar3 = (int)uVar2 >> 0x1f;
      if (((int)((uVar2 ^ uVar3) - uVar3) < 10) &&
         (uVar2 = *(int *)(iVar1 + 0x14) - param_1[1], uVar3 = (int)uVar2 >> 0x1f,
         (int)((uVar2 ^ uVar3) - uVar3) < 10)) {
        return iVar1;
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < *(uint *)(*(int *)(param_1_00 + 4) + 4));
  }
  return 0;
}



undefined4 FUN_009e7490(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_009e7430(param_1);
  if (iVar1 != 0) {
    return *(undefined4 *)(iVar1 + 8);
  }
  return 0;
}



undefined4 __fastcall FUN_009e74b0(int *param_1)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  
  iVar3 = *param_1;
  iVar1 = param_1[1];
  if (*(uint *)(iVar3 + 0x1c) < 8) {
    iVar3 = iVar3 + 8;
  }
  else {
    iVar3 = *(int *)(iVar3 + 8);
  }
  uVar4 = FUN_00893df0(iVar3);
  uVar2 = ((int *)param_1[1])[1];
  uVar4 = uVar4 % *(uint *)(iVar1 + 4) + 1;
  if (uVar4 < uVar2) {
    iVar1 = *(int *)param_1[1];
    piVar5 = (int *)(iVar1 + uVar4 * 4);
    do {
      if (*piVar5 != 0) {
        return *(undefined4 *)(iVar1 + uVar4 * 4);
      }
      uVar4 = uVar4 + 1;
      piVar5 = piVar5 + 1;
    } while (uVar4 < uVar2);
  }
  return 0;
}



int __thiscall FUN_009e7500(int **param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  int *piVar4;
  
  uVar1 = (*param_1_00)[1];
  uVar3 = 0;
  iVar2 = **param_1_00;
  if (uVar1 != 0) {
    do {
      if (*(int *)(iVar2 + uVar3 * 4) != 0) {
        piVar4 = *(int **)(iVar2 + uVar3 * 4);
        goto joined_r0x009e7528;
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar1);
  }
  piVar4 = (int *)0x0;
joined_r0x009e7528:
  while( true ) {
    if (piVar4 == (int *)0x0) {
      return 0;
    }
    if (*(int *)(piVar4[10] + 8) == param_1) break;
    piVar4 = (int *)*piVar4;
    if (piVar4 == (int *)0x0) {
      piVar4 = (int *)FUN_009e74b0();
    }
  }
  return piVar4[10];
}



int __thiscall FUN_009e7570(int **param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  int *piVar4;
  
  uVar1 = (*param_1_00)[1];
  uVar3 = 0;
  iVar2 = **param_1_00;
  if (uVar1 != 0) {
    do {
      if (*(int *)(iVar2 + uVar3 * 4) != 0) {
        piVar4 = *(int **)(iVar2 + uVar3 * 4);
        goto joined_r0x009e7598;
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar1);
  }
  piVar4 = (int *)0x0;
joined_r0x009e7598:
  while( true ) {
    if (piVar4 == (int *)0x0) {
      return 0;
    }
    if (*(int *)(piVar4[10] + 0xc) == param_1) break;
    piVar4 = (int *)*piVar4;
    if (piVar4 == (int *)0x0) {
      piVar4 = (int *)FUN_009e74b0();
    }
  }
  return piVar4[10];
}



undefined4 * FUN_009e75e0(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  
  iVar2 = FUN_009e7500(param_2);
  if (iVar2 != 0) {
    uVar1 = *(undefined4 *)(iVar2 + 0x10);
    param_1[1] = *(undefined4 *)(iVar2 + 0x14);
    *param_1 = uVar1;
    return param_1;
  }
  *param_1 = 0;
  param_1[1] = 0;
  return param_1;
}



void FUN_009e7620(int param_1)

{
  if (param_1 == 0) {
    return;
  }
  _free(*(void **)(param_1 + 0x20));
  if (7 < *(uint *)(param_1 + 0x1c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 8));
  }
  *(undefined4 *)(param_1 + 0x1c) = 7;
  *(undefined4 *)(param_1 + 0x18) = 0;
  *(undefined2 *)(param_1 + 8) = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



undefined4 * __fastcall FUN_009e7670(undefined4 *param_1)

{
  short sVar1;
  uint uVar2;
  short *psVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be9bb3;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  param_1[1] = 0;
  *param_1 = wxPrintPaperType::vftable;
  param_1[0xc] = 7;
  param_1[0xb] = 0;
  *(undefined2 *)(param_1 + 7) = 0;
  param_1[0xd] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  local_4 = 1;
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    FUN_00432156(uVar2);
  }
  else {
    psVar3 = (short *)PTR_DAT_03236318;
    do {
      sVar1 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(PTR_DAT_03236318,(int)psVar3 - (int)(PTR_DAT_03236318 + 2) >> 1);
  }
  param_1[4] = 0;
  param_1[5] = 0;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_009e7720(undefined4 *param_1_00,byte param_1)

{
  _free((void *)param_1_00[0xd]);
  if (7 < (uint)param_1_00[0xc]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[7]);
  }
  param_1_00[0xc] = 7;
  param_1_00[0xb] = 0;
  *(undefined2 *)(param_1_00 + 7) = 0;
  *param_1_00 = wxObject::vftable;
  FUN_0083e850();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_009e7780(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 *param_3,
            undefined4 param_4,undefined4 param_5)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be9be3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxPrintPaperType::vftable;
  param_1_00[0xc] = 7;
  param_1_00[0xb] = 0;
  *(undefined2 *)(param_1_00 + 7) = 0;
  param_1_00[0xd] = 0;
  param_1_00[2] = param_1;
  param_1_00[3] = param_2;
  local_4 = 1;
  if (param_1_00 + 6 != param_3) {
    FID_conflict_assign(param_3,0,0xffffffff);
  }
  param_1_00[4] = param_4;
  param_1_00[5] = param_5;
  ExceptionList = local_c;
  return param_1_00;
}



// Library Function - Single Match
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

CNoTrackObject * __cdecl CThreadLocal<class_AFX_MODULE_THREAD_STATE>::CreateObject(void)

{
  uint uVar1;
  CNoTrackObject *pCVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x3c);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    pCVar2 = (CNoTrackObject *)FUN_009e7670(uVar1);
    ExceptionList = local_c;
    return pCVar2;
  }
  ExceptionList = local_c;
  return (CNoTrackObject *)0x0;
}



void ** __fastcall FUN_009e7890(void **param_1)

{
  uint uVar1;
  void **ppvVar2;
  void *pvVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be9c16;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  ppvVar2 = (void **)operator_new(0x10);
  local_4 = 0;
  if (ppvVar2 == (void **)0x0) {
    ppvVar2 = (void **)0x0;
  }
  else {
    pvVar3 = (void *)FUN_00893ca0(100,uVar1);
    ppvVar2[1] = pvVar3;
    ppvVar2[2] = (void *)0x0;
    pvVar3 = _calloc((size_t)pvVar3,4);
    *ppvVar2 = pvVar3;
  }
  local_4 = 0xffffffff;
  *param_1 = ppvVar2;
  puVar4 = (undefined4 *)operator_new(0x18);
  local_4 = 1;
  if (puVar4 != (undefined4 *)0x0) {
    *puVar4 = wxListBase::vftable;
    FUN_0086ad40(0);
    *puVar4 = wxPrintPaperTypeList::vftable;
    param_1[1] = puVar4;
    ExceptionList = local_c;
    return param_1;
  }
  param_1[1] = (void *)0x0;
  ExceptionList = local_c;
  return param_1;
}



void FUN_009e7960(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  void *pvVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be860b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x3c);
  uVar3 = 0;
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar3 = FUN_009e7780(param_1,param_2,param_3,param_4,param_5);
  }
  local_4 = 0xffffffff;
  puVar2 = (undefined4 *)FUN_008c39e0(param_3);
  *puVar2 = uVar3;
  FUN_0086ad60(uVar3);
  ExceptionList = local_c;
  return;
}



void FUN_009e79f0(void)

{
  uint uVar1;
  undefined local_780 [4];
  undefined4 local_77c;
  uint local_768;
  void *local_764;
  undefined local_75c [36];
  undefined local_738 [36];
  undefined local_714 [36];
  undefined local_6f0 [36];
  undefined local_6cc [36];
  undefined local_6a8 [36];
  undefined local_684 [36];
  undefined local_660 [36];
  undefined local_63c [36];
  undefined local_618 [36];
  undefined local_5f4 [36];
  undefined local_5d0 [36];
  undefined local_5ac [36];
  undefined local_588 [36];
  undefined local_564 [36];
  undefined local_540 [36];
  undefined local_51c [36];
  undefined local_4f8 [36];
  undefined local_4d4 [36];
  undefined local_4b0 [36];
  undefined local_48c [36];
  undefined local_468 [36];
  undefined local_444 [36];
  undefined local_420 [36];
  undefined local_3fc [36];
  undefined local_3d8 [36];
  undefined local_3b4 [36];
  undefined local_390 [36];
  undefined local_36c [36];
  undefined local_348 [36];
  undefined local_324 [36];
  undefined local_300 [36];
  undefined local_2dc [36];
  undefined local_2b8 [36];
  undefined local_294 [36];
  undefined local_270 [36];
  undefined local_24c [36];
  undefined local_228 [36];
  undefined local_204 [36];
  undefined local_1e0 [36];
  undefined local_1bc [36];
  undefined local_198 [36];
  undefined local_174 [36];
  undefined local_150 [36];
  undefined local_12c [36];
  undefined local_108 [36];
  undefined local_e4 [36];
  undefined local_c0 [36];
  undefined local_9c [36];
  undefined local_78 [36];
  undefined local_54 [36];
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea149;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffff874;
  ExceptionList = &local_c;
  FUN_0043c211("Letter, 8 1/2 x 11 in");
  local_4 = 0;
  FUN_009e7960(1,1,local_780,0x86f,0xaea);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c,uVar1);
  }
  FUN_0043c211("Legal, 8 1/2 x 14 in");
  local_4 = 1;
  FUN_009e7960(2,5,local_780,0x86f,0xde4);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("A4 sheet, 210 x 297 mm");
  local_4 = 2;
  FUN_009e7960(3,9,local_780,0x834,0xb9a);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("C sheet, 17 x 22 in");
  local_4 = 3;
  FUN_009e7960(4,0x18,local_780,0x10de,0x15d4);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("D sheet, 22 x 34 in");
  local_4 = 4;
  FUN_009e7960(5,0x19,local_780,0x15d4,0x21bc);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("E sheet, 34 x 44 in");
  local_4 = 5;
  FUN_009e7960(6,0x1a,local_780,0x21bc,0x2ba8);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("Letter Small, 8 1/2 x 11 in");
  local_4 = 6;
  FUN_009e7960(7,2,local_780,0x86f,0xaea);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("Tabloid, 11 x 17 in");
  local_4 = 7;
  FUN_009e7960(8,3,local_780,0xaea,0x10de);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("Ledger, 17 x 11 in");
  local_4 = 8;
  FUN_009e7960(9,4,local_780,0x10de,0xaea);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("Statement, 5 1/2 x 8 1/2 in");
  local_4 = 9;
  FUN_009e7960(10,6,local_780,0x575,0x86f);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("Executive, 7 1/4 x 10 1/2 in");
  local_4 = 10;
  FUN_009e7960(0xb,7,local_780,0x732,0xa6b);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("A3 sheet, 297 x 420 mm");
  local_4 = 0xb;
  FUN_009e7960(0xc,8,local_780,0xb9a,0x1068);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("A4 small sheet, 210 x 297 mm");
  local_4 = 0xc;
  FUN_009e7960(0xd,10,local_780,0x834,0xb9a);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("A5 sheet, 148 x 210 mm");
  local_4 = 0xd;
  FUN_009e7960(0xe,0xb,local_780,0x5c8,0x834);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("B4 sheet, 250 x 354 mm");
  local_4 = 0xe;
  FUN_009e7960(0xf,0xc,local_780,0x9c4,0xdd4);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("B5 sheet, 182 x 257 millimeter");
  local_4 = 0xf;
  FUN_009e7960(0x10,0xd,local_780,0x71c,0xa0a);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("Folio, 8 1/2 x 13 in");
  local_4 = 0x10;
  FUN_009e7960(0x11,0xe,local_780,0x86f,0xce6);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("Quarto, 215 x 275 mm");
  local_4 = 0x11;
  FUN_009e7960(0x12,0xf,local_780,0x866,0xabe);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("10 x 14 in");
  local_4 = 0x12;
  FUN_009e7960(0x13,0x10,local_780,0x9ec,0xde4);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("11 x 17 in");
  local_4 = 0x13;
  FUN_009e7960(0x14,0x11,local_780,0xaea,0x10de);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("Note, 8 1/2 x 11 in");
  local_4 = 0x14;
  FUN_009e7960(0x15,0x12,local_780,0x86f,0xaea);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("#9 Envelope, 3 7/8 x 8 7/8 in");
  local_4 = 0x15;
  FUN_009e7960(0x16,0x13,local_780,0x3d8,0x8ce);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("#10 Envelope, 4 1/8 x 9 1/2 in");
  local_4 = 0x16;
  FUN_009e7960(0x17,0x14,local_780,0x418,0x96d);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("#11 Envelope, 4 1/2 x 10 3/8 in");
  local_4 = 0x17;
  FUN_009e7960(0x18,0x15,local_780,0x477,0xa4b);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("#12 Envelope, 4 3/4 x 11 in");
  local_4 = 0x18;
  FUN_009e7960(0x19,0x16,local_780,0x4b6,0xaea);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("#14 Envelope, 5 x 11 1/2 in");
  local_4 = 0x19;
  FUN_009e7960(0x1a,0x17,local_780,0x4f6,0xb69);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("DL Envelope, 110 x 220 mm");
  local_4 = 0x1a;
  FUN_009e7960(0x1b,0x1b,local_780,0x44c,0x898);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("C5 Envelope, 162 x 229 mm");
  local_4 = 0x1b;
  FUN_009e7960(0x1c,0x1c,local_780,0x654,0x8f2);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("C3 Envelope, 324 x 458 mm");
  local_4 = 0x1c;
  FUN_009e7960(0x1d,0x1d,local_780,0xca8,0x11e4);
  local_4 = 0xffffffff;
  _free(local_764);
  if (7 < local_768) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_77c);
  }
  FUN_0043c211("C4 Envelope, 229 x 324 mm");
  local_4 = 0x1d;
  FUN_009e7960(0x1e,0x1e,local_780,0x8f2,0xca8);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("C6 Envelope, 114 x 162 mm");
  local_4 = 0x1e;
  FUN_009e7960(0x1f,0x1f,local_780,0x474,0x654);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("C65 Envelope, 114 x 229 mm");
  local_4 = 0x1f;
  FUN_009e7960(0x20,0x20,local_780,0x474,0x8f2);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("B4 Envelope, 250 x 353 mm");
  local_4 = 0x20;
  FUN_009e7960(0x21,0x21,local_780,0x9c4,0xdca);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("B5 Envelope, 176 x 250 mm");
  local_4 = 0x21;
  FUN_009e7960(0x22,0x22,local_780,0x6e0,0x9c4);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("B6 Envelope, 176 x 125 mm");
  local_4 = 0x22;
  FUN_009e7960(0x23,0x23,local_780,0x6e0,0x4e2);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Italy Envelope, 110 x 230 mm");
  local_4 = 0x23;
  FUN_009e7960(0x24,0x24,local_780,0x44c,0x8fc);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Monarch Envelope, 3 7/8 x 7 1/2 in");
  local_4 = 0x24;
  FUN_009e7960(0x25,0x25,local_780,0x3d8,0x771);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("6 3/4 Envelope, 3 5/8 x 6 1/2 in");
  local_4 = 0x25;
  FUN_009e7960(0x26,0x26,local_780,0x399,0x673);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("US Std Fanfold, 14 7/8 x 11 in");
  local_4 = 0x26;
  FUN_009e7960(0x27,0x27,local_780,0xec2,0xaea);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("German Std Fanfold, 8 1/2 x 12 in");
  local_4 = 0x27;
  FUN_009e7960(0x28,0x28,local_780,0x86f,0xbe8);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("German Legal Fanfold, 8 1/2 x 13 in");
  local_4 = 0x28;
  FUN_009e7960(0x29,0x29,local_780,0x86f,0xce6);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("B4 (ISO) 250 x 353 mm");
  local_4 = 0x29;
  FUN_009e7960(0x2a,0x2a,local_780,0x9c4,0x9e2);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Japanese Postcard 100 x 148 mm");
  local_4 = 0x2a;
  FUN_009e7960(0x2b,0x2b,local_780,1000,0x5c8);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("9 x 11 in");
  local_4 = 0x2b;
  FUN_009e7960(0x2c,0x2c,local_780,0x8ee,0xaea);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("10 x 11 in");
  local_4 = 0x2c;
  FUN_009e7960(0x2d,0x2d,local_780,0x9ec,0xaea);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("15 x 11 in");
  local_4 = 0x2d;
  FUN_009e7960(0x2e,0x2e,local_780,0xee2,0xaea);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Envelope Invite 220 x 220 mm");
  local_4 = 0x2e;
  FUN_009e7960(0x2f,0x2f,local_780,0x898,0x898);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Letter Extra 9 1/2 x 12 in");
  local_4 = 0x2f;
  FUN_009e7960(0x30,0x32,local_780,0x96d,0xbe8);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Legal Extra 9 1/2 x 15 in");
  local_4 = 0x30;
  FUN_009e7960(0x31,0x33,local_780,0x96d,0xee2);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Tabloid Extra 11.69 x 18 in");
  local_4 = 0x31;
  FUN_009e7960(0x32,0x34,local_780,0xb99,0x11dc);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A4 Extra 9.27 x 12.69 in");
  local_4 = 0x32;
  FUN_009e7960(0x33,0x35,local_780,0x933,0xc97);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Letter Transverse 8 1/2 x 11 in");
  local_4 = 0x33;
  FUN_009e7960(0x34,0x36,local_780,0x86f,0xaea);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A4 Transverse 210 x 297 mm");
  local_4 = 0x34;
  FUN_009e7960(0x35,0x37,local_780,0x834,0xb9a);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Letter Extra Transverse 9.275 x 12 in");
  local_4 = 0x35;
  FUN_009e7960(0x36,0x38,local_780,0x933,0xbe8);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("SuperA/SuperA/A4 227 x 356 mm");
  local_4 = 0x36;
  FUN_009e7960(0x37,0x39,local_780,0x8de,0xde8);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("SuperB/SuperB/A3 305 x 487 mm");
  local_4 = 0x37;
  FUN_009e7960(0x38,0x3a,local_780,0xbea,0x1306);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Letter Plus 8 1/2 x 12.69 in");
  local_4 = 0x38;
  FUN_009e7960(0x39,0x3b,local_780,0x86f,0xc97);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A4 Plus 210 x 330 mm");
  local_4 = 0x39;
  FUN_009e7960(0x3a,0x3c,local_780,0x834,0xce4);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A5 Transverse 148 x 210 mm");
  local_4 = 0x3a;
  FUN_009e7960(0x3b,0x3d,local_780,0x5c8,0x834);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("B5 (JIS) Transverse 182 x 257 mm");
  local_4 = 0x3b;
  FUN_009e7960(0x3c,0x3e,local_780,0x71c,0xa0a);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A3 Extra 322 x 445 mm");
  local_4 = 0x3c;
  FUN_009e7960(0x3d,0x3f,local_780,0xc94,0x1162);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A5 Extra 174 x 235 mm");
  local_4 = 0x3d;
  FUN_009e7960(0x3e,0x40,local_780,0x6cc,0x92e);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("B5 (ISO) Extra 201 x 276 mm");
  local_4 = 0x3e;
  FUN_009e7960(0x3f,0x41,local_780,0x7da,0xac8);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A2 420 x 594 mm");
  local_4 = 0x3f;
  FUN_009e7960(0x40,0x42,local_780,0x1068,0x1734);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A3 Transverse 297 x 420 mm");
  local_4 = 0x40;
  FUN_009e7960(0x41,0x43,local_780,0xb9a,0x1068);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A3 Extra Transverse 322 x 445 mm");
  local_4 = 0x41;
  FUN_009e7960(0x42,0x44,local_780,0xc94,0x1162);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Japanese Double Postcard 200 x 148 mm");
  local_4 = 0x42;
  FUN_009e7960(0x43,0x45,local_3b4,2000,0x5c8);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A6 105 x 148 mm");
  local_4 = 0x43;
  FUN_009e7960(0x44,0x46,local_714,0x41a,0x5c8);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Japanese Envelope Kaku #2");
  local_4 = 0x44;
  FUN_009e7960(0x45,0x47,local_9c,0x960,0xcf8);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Japanese Envelope Kaku #3");
  local_4 = 0x45;
  FUN_009e7960(0x46,0x48,local_6cc,0x870,0xad2);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Japanese Envelope Chou #3");
  local_4 = 0x46;
  FUN_009e7960(0x47,0x49,local_36c,0x4b0,0x92e);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Japanese Envelope Chou #4");
  local_4 = 0x47;
  FUN_009e7960(0x48,0x4a,local_684,900,0x802);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Letter Rotated 11 x 8 1/2 in");
  local_4 = 0x48;
  FUN_009e7960(0x49,0x4b,local_1bc,0xaea,0x86f);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A3 Rotated 420 x 297 mm");
  local_4 = 0x49;
  FUN_009e7960(0x4a,0x4c,local_63c,0x1068,0xb9a);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A4 Rotated 297 x 210 mm");
  local_4 = 0x4a;
  FUN_009e7960(0x4b,0x4d,local_324,0xb9a,0x834);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A5 Rotated 210 x 148 mm");
  local_4 = 0x4b;
  FUN_009e7960(0x4c,0x4e,local_5f4,0x834,0x5c8);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("B4 (JIS) Rotated 364 x 257 mm");
  local_4 = 0x4c;
  FUN_009e7960(0x4d,0x4f,local_e4,0xe38,0xa0a);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("B5 (JIS) Rotated 257 x 182 mm");
  local_4 = 0x4d;
  FUN_009e7960(0x4e,0x50,local_5ac,0xa0a,0x71c);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Japanese Postcard Rotated 148 x 100 mm");
  local_4 = 0x4e;
  FUN_009e7960(0x4f,0x51,local_2dc,0x5c8,1000);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Double Japanese Postcard Rotated 148 x 200 mm");
  local_4 = 0x4f;
  FUN_009e7960(0x50,0x52,local_564,0x5c8,2000);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A6 Rotated 148 x 105 mm");
  local_4 = 0x50;
  FUN_009e7960(0x51,0x53,local_174,0x5c8,0x41a);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Japanese Envelope Kaku #2 Rotated");
  local_4 = 0x51;
  FUN_009e7960(0x52,0x54,local_51c,0xcf8,0x960);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Japanese Envelope Kaku #3 Rotated");
  local_4 = 0x52;
  FUN_009e7960(0x53,0x55,local_294,0xad2,0x870);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Japanese Envelope Chou #3 Rotated");
  local_4 = 0x53;
  FUN_009e7960(0x54,0x56,local_4d4,0x92e,0x4b0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Japanese Envelope Chou #4 Rotated");
  local_4 = 0x54;
  FUN_009e7960(0x55,0x57,local_54,0x802,900);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("B6 (JIS) 128 x 182 mm");
  local_4 = 0x55;
  FUN_009e7960(0x56,0x58,local_48c,0x500,0x71c);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("B6 (JIS) Rotated 182 x 128 mm");
  local_4 = 0x56;
  FUN_009e7960(0x57,0x59,local_24c,0x780,0x500);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("12 x 11 in");
  local_4 = 0x57;
  FUN_009e7960(0x58,0x5a,local_444,0xbe8,0xaea);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Japanese Envelope You #4");
  local_4 = 0x58;
  FUN_009e7960(0x59,0x5b,local_12c,0x92e,0x41a);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("Japanese Envelope You #4 Rotated");
  local_4 = 0x59;
  FUN_009e7960(0x5a,0x5c,local_3fc,0x41a,0x92e);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC 16K 146 x 215 mm");
  local_4 = 0x5a;
  FUN_009e7960(0x5b,0x5d,local_204,0x5b4,0x866);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC 32K 97 x 151 mm");
  local_4 = 0x5b;
  FUN_009e7960(0x5c,0x5e,local_75c,0x3ca,0x5e6);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC 32K(Big) 97 x 151 mm");
  local_4 = 0x5c;
  FUN_009e7960(0x5d,0x5f,local_738,0x3ca,0x5e6);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #1 102 x 165 mm");
  local_4 = 0x5d;
  FUN_009e7960(0x5e,0x60,local_6f0,0x3fc,0x672);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #2 102 x 176 mm");
  local_4 = 0x5e;
  FUN_009e7960(0x5f,0x61,local_6a8,0x3fc,0x6e0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #3 125 x 176 mm");
  local_4 = 0x5f;
  FUN_009e7960(0x60,0x62,local_660,0x4e2,0x6e0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #4 110 x 208 mm");
  local_4 = 0x60;
  FUN_009e7960(0x61,99,local_618,0x44c,0x820);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #5 110 x 220 mm");
  local_4 = 0x61;
  FUN_009e7960(0x62,100,local_5d0,0x44c,0x898);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #6 120 x 230 mm");
  local_4 = 0x62;
  FUN_009e7960(99,0x65,local_588,0x4b0,0x8fc);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #7 160 x 230 mm");
  local_4 = 99;
  FUN_009e7960(100,0x66,local_540,0x640,0x8fc);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #8 120 x 309 mm");
  local_4 = 100;
  FUN_009e7960(0x65,0x67,local_4f8,0x4b0,0xc12);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #9 229 x 324 mm");
  local_4 = 0x65;
  FUN_009e7960(0x66,0x68,local_4b0,0x8f2,0xca8);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #10 324 x 458 mm");
  local_4 = 0x66;
  FUN_009e7960(0x67,0x69,local_468,0xca8,0x11e4);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC 16K Rotated");
  local_4 = 0x67;
  FUN_009e7960(0x68,0x6a,local_420,0x866,0x5b4);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC 32K Rotated");
  local_4 = 0x68;
  FUN_009e7960(0x69,0x6b,local_3d8,0x5e6,0x3ca);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC 32K(Big) Rotated");
  local_4 = 0x69;
  FUN_009e7960(0x6a,0x6c,local_390,0x5e6,0x3ca);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #1 Rotated 165 x 102 mm");
  local_4 = 0x6a;
  FUN_009e7960(0x6b,0x6d,local_348,0x672,0x3fc);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #2 Rotated 176 x 102 mm");
  local_4 = 0x6b;
  FUN_009e7960(0x6c,0x6e,local_300,0x6e0,0x3fc);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #3 Rotated 176 x 125 mm");
  local_4 = 0x6c;
  FUN_009e7960(0x6d,0x6f,local_2b8,0x6e0,0x4e2);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #4 Rotated 208 x 110 mm");
  local_4 = 0x6d;
  FUN_009e7960(0x6e,0x70,local_270,0x820,0x44c);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #5 Rotated 220 x 110 mm");
  local_4 = 0x6e;
  FUN_009e7960(0x6f,0x71,local_228,0x898,0x44c);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #6 Rotated 230 x 120 mm");
  local_4 = 0x6f;
  FUN_009e7960(0x70,0x72,local_1e0,0x8fc,0x4b0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #7 Rotated 230 x 160 mm");
  local_4 = 0x70;
  FUN_009e7960(0x71,0x73,local_198,0x8fc,0x640);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #8 Rotated 309 x 120 mm");
  local_4 = 0x71;
  FUN_009e7960(0x72,0x74,local_150,0xc12,0x4b0);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #9 Rotated 324 x 229 mm");
  local_4 = 0x72;
  FUN_009e7960(0x73,0x75,local_108,0xca8,0x8f2);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("PRC Envelope #10 Rotated 458 x 324 mm");
  local_4 = 0x73;
  FUN_009e7960(0x74,0x76,local_c0,0x11e4,0xca8);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A0 sheet, 841 x 1189 mm");
  local_4 = 0x74;
  FUN_009e7960(0x75,0x88,local_78,0x20da,0x2e70);
  local_4 = 0xffffffff;
  FUN_0040159c();
  FUN_0043c211("A1 sheet, 594 x 841 mm");
  local_4 = 0x75;
  FUN_009e7960(0x76,0x87,local_30,0x1734,0x20da);
  FUN_0040159c();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009e9d80(int **param_1)

{
  int *piVar1;
  void **ppvVar2;
  uint uVar3;
  uint uVar4;
  int *piVar5;
  int *piVar6;
  
  if (param_1[1] != (int *)0x0) {
    (**(code **)*param_1[1])(1);
  }
  piVar1 = *param_1;
  uVar3 = 0;
  if (piVar1[1] != 0) {
    do {
      if (*(int *)(*piVar1 + uVar3 * 4) != 0) {
        piVar5 = *(int **)(*piVar1 + uVar3 * 4);
        goto joined_r0x009e9db5;
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < (uint)piVar1[1]);
  }
  piVar5 = (int *)0x0;
joined_r0x009e9db5:
  do {
    do {
      piVar6 = piVar5;
      if (piVar6 == (int *)0x0) {
        piVar1 = *param_1;
        FUN_00893cf0(piVar1[1],*piVar1,FUN_009e7620);
        piVar1[2] = 0;
        ppvVar2 = (void **)*param_1;
        if (ppvVar2 != (void **)0x0) {
          FUN_00893cf0(ppvVar2[1],*ppvVar2,FUN_009e7620);
          ppvVar2[2] = (void *)0x0;
          _free(*ppvVar2);
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(ppvVar2);
        }
        return;
      }
      if ((int *)piVar6[10] != (int *)0x0) {
        (**(code **)(*(int *)piVar6[10] + 4))(1);
      }
      piVar5 = (int *)*piVar6;
    } while ((int *)*piVar6 != (int *)0x0);
    if ((uint)piVar6[7] < 8) {
      piVar6 = piVar6 + 2;
    }
    else {
      piVar6 = (int *)piVar6[2];
    }
    uVar4 = FUN_00893df0(piVar6);
    uVar3 = piVar1[1];
    uVar4 = uVar4 % uVar3 + 1;
    if (uVar4 < uVar3) {
      piVar5 = (int *)(*piVar1 + uVar4 * 4);
      do {
        if (*piVar5 != 0) {
          piVar5 = *(int **)(*piVar1 + uVar4 * 4);
          goto joined_r0x009e9db5;
        }
        uVar4 = uVar4 + 1;
        piVar5 = piVar5 + 1;
      } while (uVar4 < uVar3);
    }
    piVar5 = (int *)0x0;
  } while( true );
}



undefined4 FUN_009e9e70(void)

{
  uint uVar1;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(8);
  local_4 = 0;
  if (local_10 == (void *)0x0) {
    DAT_032ea194 = 0;
  }
  else {
    DAT_032ea194 = FUN_009e7890(uVar1);
  }
  local_4 = 0xffffffff;
  FUN_009e79f0();
  ExceptionList = local_c;
  return 1;
}



void FUN_009e9ee0(void)

{
  int iVar1;
  
  iVar1 = DAT_032ea194;
  if (DAT_032ea194 != 0) {
    FUN_009e9d80();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  return;
}



void __fastcall FUN_009e9f10(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea178;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (*(uint *)(param_1 + 0x4c) < 4) {
    FUN_0086a310(4);
  }
  local_10 = 0;
  local_14 = wxIcon::vftable;
  local_4 = 0;
  iVar2 = 4;
  do {
    FUN_009747e0(&local_14,1);
    iVar2 = iVar2 + -1;
  } while (iVar2 != 0);
  local_4 = 0xffffffff;
  FUN_008f7630(uVar1);
  ExceptionList = local_c;
  return;
}



undefined ** FUN_009e9fa0(void)

{
  return &PTR_u_wxCheckListBox_0323d8a8;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1bc);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009ea5e0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined ** FUN_009ea020(void)

{
  return &PTR_PTR_00d96284;
}



undefined * FUN_009ea030(void)

{
  return &DAT_032ea198;
}



undefined4 __thiscall FUN_009ea040(int param_1_00,uint param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(uint *)(param_1_00 + 0x1b0) <= param_1) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    return *(undefined4 *)(*(int *)(param_1_00 + 0x1b4) + param_1 * 4);
  }
  return *(undefined4 *)(*(int *)(param_1_00 + 0x1b4) + param_1 * 4);
}



void thunk_FUN_0096a1f0(void)

{
  FUN_0096a1f0();
  return;
}



uint __thiscall FUN_009ea0b0(undefined4 param_1_00,int param_1)

{
  uint uVar1;
  int *piVar2;
  int unaff_ESI;
  int unaff_EDI;
  undefined local_8 [8];
  
  uVar1 = FUN_0096a850(param_1);
  if ((char)uVar1 != '\0') {
    piVar2 = (int *)FUN_009ba160();
    (**(code **)(*piVar2 + 0x28))(local_8,param_1_00);
    *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + unaff_EDI + 2;
    uVar1 = unaff_ESI + 2;
    if (*(uint *)(param_1 + 0x10) < uVar1) {
      *(uint *)(param_1 + 0x10) = uVar1;
    }
    return CONCAT31((int3)(uVar1 >> 8),1);
  }
  return uVar1 & 0xffffff00;
}



undefined __thiscall FUN_009ea110(int param_1,uint param_2)

{
  uint uVar1;
  int iVar2;
  
  uVar1 = (**(code **)(*(int *)(param_1 + 0x194) + 4))();
  if (param_2 < uVar1) {
    iVar2 = FUN_009ea040(param_2);
    return *(undefined *)(iVar2 + 0x40);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\checklst.cpp",0x107,"wxCheckListBox::IsChecked",
                 "IsValid(uiIndex)",L"bad wxCheckListBox index");
  }
  return 0;
}



void __thiscall FUN_009ea170(int param_1,uint param_2,undefined param_3)

{
  uint uVar1;
  int iVar2;
  
  uVar1 = (**(code **)(*(int *)(param_1 + 0x194) + 4))();
  if (param_2 < uVar1) {
    iVar2 = FUN_009ea040(param_2);
    *(undefined *)(iVar2 + 0x40) = param_3;
    FUN_0096a7d0(param_2);
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\checklst.cpp",0x10e,"wxCheckListBox::Check","IsValid(uiIndex)",
                 L"bad wxCheckListBox index");
  }
  return;
}



void __thiscall FUN_009ea1e0(int param_1,uint param_2)

{
  uint uVar1;
  int iVar2;
  
  uVar1 = (**(code **)(*(int *)(param_1 + 0x194) + 4))();
  if (param_2 < uVar1) {
    iVar2 = FUN_009ea040(param_2);
    *(bool *)(iVar2 + 0x40) = *(char *)(iVar2 + 0x40) == '\0';
    FUN_0096a7d0(param_2);
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\msw\\checklst.cpp",0x116,"wxCheckListBox::Toggle","IsValid(uiIndex)",
                 L"bad wxCheckListBox index");
  }
  return;
}



int * __thiscall FUN_009ea250(int param_1_00,int *param_1)

{
  int *piVar1;
  int unaff_ESI;
  int unaff_EDI;
  undefined local_8 [8];
  
  FUN_0096ae80(param_1);
  piVar1 = (int *)FUN_009ba160();
  (**(code **)(*piVar1 + 0x28))(local_8,param_1_00);
  *param_1 = *param_1 + unaff_EDI + 2;
  if (param_1[1] < unaff_ESI + 2) {
    param_1[1] = unaff_ESI + 2;
  }
  *(int *)(param_1_00 + 0x130) = *param_1;
  *(int *)(param_1_00 + 0x134) = param_1[1];
  return param_1;
}



undefined4 * __thiscall FUN_009ea2b0(undefined4 *param_1_00,undefined4 param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  int unaff_EBP;
  undefined **local_28 [5];
  void *pvStack_14;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea1b0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0095aca0(DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_4 = 0;
  *param_1_00 = wxCheckListBoxItem::vftable;
  param_1_00[0xf] = param_1;
  *(undefined *)(param_1_00 + 0x10) = 0;
  piVar1 = (int *)FUN_009ba160();
  (**(code **)(*piVar1 + 0x28))(local_28,param_1);
  param_1_00[0xe] = unaff_EBP + 4;
  puVar2 = (undefined4 *)FUN_0091de40(local_28);
  local_c._0_1_ = 1;
  if (param_1_00 + 9 != puVar2) {
    FUN_0083ea60(puVar2);
  }
  param_1_00[0xb] = puVar2[2];
  *(undefined *)(param_1_00 + 0xc) = *(undefined *)(puVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x31) = *(undefined *)((int)puVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x32) = *(undefined *)((int)puVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x33) = *(undefined *)((int)puVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xd) = *(undefined *)(puVar2 + 4);
  *(undefined *)(param_1_00 + 1) = 1;
  local_c = (void *)((uint)local_c._1_3_ << 8);
  local_28[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_14;
  return param_1_00;
}



char __thiscall
FUN_009ea3a0(int param_1_00,int param_1,int *param_2,undefined4 param_3,uint param_4)

{
  HDC hdc;
  char cVar1;
  uint uVar2;
  int *piVar3;
  HDC hdc_00;
  HBITMAP h;
  int unaff_EBX;
  int iStack_3c;
  HDC local_38;
  HGDIOBJ pvStack_34;
  undefined auStack_30 [4];
  HGDIOBJ pvStack_2c;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = (HDC)0xffffffff;
  puStack_8 = &LAB_00bea1f0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  cVar1 = FUN_009bf4b0(param_1,param_2,param_3,param_4);
  if (cVar1 != '\0') {
    hdc = *(HDC *)(*(int *)(param_1 + 8) + 0x108);
    piVar3 = (int *)FUN_009ba160(uVar2);
    (**(code **)(*piVar3 + 0x28))(&local_38,*(undefined4 *)(param_1_00 + 0x3c));
    hdc_00 = CreateCompatibleDC(hdc);
    local_c = (void *)0x0;
    uStack_4 = hdc_00;
    h = CreateCompatibleBitmap(hdc,unaff_EBX,iStack_3c);
    local_38 = hdc_00;
    pvStack_34 = SelectObject(hdc_00,h);
    local_c._0_1_ = 2;
    param_1 = 8;
    if (*(char *)(param_1_00 + 0x40) != '\0') {
      param_1 = 0x48;
    }
    FUN_0090e740(hdc_00,&DAT_03238d04);
    local_c = (void *)CONCAT31(local_c._1_3_,3);
    piVar3 = (int *)FUN_009ba160();
    uStack_24 = 0;
    uStack_20 = 0;
    (**(code **)(*piVar3 + 0x24))(*(undefined4 *)(param_1_00 + 0x3c),auStack_30,&uStack_24,param_1);
    uStack_4._0_1_ = 2;
    FUN_00457221();
    uStack_4 = (HDC)CONCAT31(uStack_4._1_3_,1);
    if (hdc_00 != (HDC)0x0) {
      SelectObject(hdc_00,pvStack_2c);
    }
    FUN_009bf3c0(hdc,h,*param_2 + 1,(param_2[3] - (int)pvStack_34) / 2 + param_2[1],param_4 & 1);
    if (h != (HBITMAP)0x0) {
      DeleteObject(h);
    }
    DeleteDC(hdc_00);
    cVar1 = '\x01';
  }
  ExceptionList = local_c;
  return cVar1;
}



undefined4 __fastcall FUN_009ea530(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x44);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009ea2b0(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_009ea5a0(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_0086a790(param_1_00,0);
  (**(code **)(*(int *)(*(int *)(param_1_00 + 0x3c) + 0x194) + 8))(param_1,uVar1);
  return param_1;
}



undefined4 * __fastcall FUN_009ea5e0(undefined4 *param_1)

{
  FUN_00919c80();
  *param_1 = wxCheckListBox::vftable;
  param_1[0x65] = wxCheckListBox::vftable;
  return param_1;
}



void FUN_009ea600(void)

{
  FUN_009ea610();
  return;
}



undefined4 __thiscall FUN_009ea610(undefined4 param_1_00,byte param_1)

{
  FUN_0096a1f0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_009ea630(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,uint param_7,undefined4 param_8
            ,undefined4 param_9)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea218;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00919c80(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1_00 = wxCheckListBox::vftable;
  param_1_00[0x65] = wxCheckListBox::vftable;
  FUN_0096b150(param_1,param_2,param_3,param_4,param_5,param_6,param_7 | 0x100,param_8,param_9);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_009ea6d0(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined *puVar2;
  undefined4 unaff_EBX;
  undefined local_90 [12];
  undefined4 uStack_84;
  uint uStack_80;
  void *pvStack_7c;
  undefined **appuStack_74 [4];
  int local_64;
  undefined auStack_4c [4];
  uint uStack_48;
  undefined4 uStack_38;
  uint uStack_34;
  void *pvStack_30;
  undefined4 local_20;
  void *pvStack_14;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea253;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_90;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032bfdcc,*(undefined4 *)(param_1_00 + 0x40));
  local_20 = param_1;
  local_4 = 0;
  local_64 = param_1_00;
  puVar2 = (undefined *)(**(code **)(*(int *)(param_1_00 + 0x194) + 8))(local_90,param_1,uVar1);
  local_c._0_1_ = 1;
  if (auStack_4c != puVar2) {
    FID_conflict_assign(puVar2,0,0xffffffff);
  }
  local_c = (void *)((uint)local_c._1_3_ << 8);
  _free(pvStack_7c);
  if (7 < uStack_80) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBX);
  }
  uStack_80 = 7;
  uStack_84 = 0;
  thunk_FUN_0091c170(appuStack_74);
  local_c = (void *)0xffffffff;
  _free(pvStack_30);
  if (7 < uStack_34) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_48);
  }
  uStack_34 = 7;
  uStack_38 = 0;
  uStack_48 = uStack_48 & 0xffff0000;
  appuStack_74[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009ea830(int *param_1_00,int param_1)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  undefined local_18 [4];
  uint uStack_14;
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea298;
  local_c = ExceptionList;
  iVar2 = *(int *)(param_1 + 0x34);
  if (iVar2 < 0x2e) {
    if (iVar2 == 0x2d) {
LAB_009ea89e:
      uVar4 = 3;
      goto LAB_009ea8aa;
    }
    if (iVar2 == 0x20) {
      uVar4 = 1;
      goto LAB_009ea8aa;
    }
    if (iVar2 != 0x2b) goto LAB_009ea871;
  }
  else if (iVar2 != 0x184) {
    if (iVar2 != 0x186) {
LAB_009ea871:
      *(undefined *)(param_1 + 0x24) = 1;
      return;
    }
    goto LAB_009ea89e;
  }
  uVar4 = 2;
LAB_009ea8aa:
  ExceptionList = &local_c;
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  uVar3 = 0;
  local_4 = 0;
  param_1 = 0;
  if ((param_1_00[0x38] & 0xc0U) == 0) {
    iVar2 = (**(code **)(param_1_00[0x65] + 0x18))();
    if (iVar2 != -1) {
      param_1 = 1;
      FUN_0086a400(iVar2,1);
    }
  }
  else {
    param_1 = (**(code **)(*param_1_00 + 0x368))(local_18);
  }
  if (0 < param_1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_14 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                     "uiIndex < m_nCount",0);
      }
      uVar1 = *(undefined4 *)(iStack_10 + uVar3 * 4);
      if (uVar4 == 1) {
        (**(code **)(*param_1_00 + 0x390))(uVar1);
      }
      else if ((uVar4 < 2) || (3 < uVar4)) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\msw\\checklst.cpp",0x160,"wxCheckListBox::OnKeyDown",
                       "Assert failure",L"what should this key do?");
        }
      }
      else {
        (**(code **)(*param_1_00 + 0x38c))(uVar1,uVar4 == 2);
      }
      FUN_009ea6d0(uVar1);
      uVar3 = uVar3 + 1;
    } while ((int)uVar3 < param_1);
  }
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009ea9d0(int *param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  int unaff_EBX;
  int unaff_ESI;
  int unaff_EDI;
  int local_18;
  int local_14;
  int iStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  
  local_18 = *(int *)(param_1 + 0x2c);
  local_14 = *(int *)(param_1 + 0x30);
  iVar2 = (**(code **)(*param_1_00 + 900))(&local_18);
  if (iVar2 == -1) {
    *(undefined *)(param_1 + 0x24) = 1;
    return;
  }
  local_14 = 0;
  iStack_10 = 0;
  uStack_c = 0;
  uStack_8 = 0;
  FUN_0096a730(iVar2,&local_14);
  piVar3 = (int *)FUN_009ba160();
  (**(code **)(*piVar3 + 0x28))(&stack0xffffffe4,param_1_00);
  local_18 = local_18 + (iStack_10 - unaff_ESI) / 2;
  local_14 = unaff_EDI;
  cVar1 = FUN_008f7580(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30));
  if (cVar1 != '\0') {
    (**(code **)(*param_1_00 + 0x100))();
    piVar3 = (int *)FUN_0091ac40();
    if (piVar3 == param_1_00) {
      (**(code **)(*param_1_00 + 0x390))(iVar2);
      FUN_009ea6d0(iVar2);
      (**(code **)(*param_1_00 + 0x27c))(0,&uStack_c);
      if (local_14 < unaff_EBX + unaff_EDI) {
        (**(code **)(*param_1_00 + 0x1c0))(1);
      }
    }
    return;
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



undefined ** FUN_009eab00(void)

{
  return &PTR_u_wxDragImage_0323d940;
}



void __fastcall FUN_009eab10(int param_1)

{
  *(undefined4 *)(param_1 + 8) = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x20) = 0;
  *(undefined *)(param_1 + 0x34) = 0;
  return;
}



undefined4 * __fastcall FUN_009eab20(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2968;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = wxDragImage::vftable;
  FUN_009743d0(uVar1);
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[8] = 0;
  *(undefined *)(param_1 + 0xd) = 0;
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_009eaba0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd2968;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxDragImage::vftable;
  local_4 = 0;
  if ((HIMAGELIST)param_1[2] != (HIMAGELIST)0x0) {
    ImageList_Destroy((HIMAGELIST)param_1[2]);
  }
  if ((HIMAGELIST)param_1[3] != (HIMAGELIST)0x0) {
    ImageList_Destroy((HIMAGELIST)param_1[3]);
  }
  FUN_008f7630(uVar1);
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall
FUN_009eac20(int param_1_00,int *param_1,int param_2,undefined param_3,undefined4 *param_4)

{
  char cVar1;
  BOOL BVar2;
  int iVar3;
  int iVar4;
  HIMAGELIST p_Var5;
  HICON hicon;
  int iDrag;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(int *)(param_1_00 + 8) == 0) {
      FUN_00840480("..\\..\\src\\msw\\dragimag.cpp",0x120,"wxDragImage::BeginDrag",
                   "(m_hImageList != 0)",L"Image list must not be null in BeginDrag.");
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_2 == 0)) {
      FUN_00840480("..\\..\\src\\msw\\dragimag.cpp",0x121,"wxDragImage::BeginDrag","(window != 0)",
                   L"Window must not be null in BeginDrag.");
    }
  }
  *(undefined *)(param_1_00 + 0x34) = param_3;
  if (param_4 != (undefined4 *)0x0) {
    *(undefined4 *)(param_1_00 + 0x24) = *param_4;
    *(undefined4 *)(param_1_00 + 0x28) = param_4[1];
    *(undefined4 *)(param_1_00 + 0x2c) = param_4[2];
    *(undefined4 *)(param_1_00 + 0x30) = param_4[3];
  }
  BVar2 = ImageList_BeginDrag(*(HIMAGELIST *)(param_1_00 + 8),0,*param_1,param_1[1]);
  if (BVar2 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\msw\\dragimag.cpp",299,"wxDragImage::BeginDrag","Assert failure",
                   L"BeginDrag failed.");
    }
    return 0;
  }
  cVar1 = (**(code **)(*(int *)(param_1_00 + 0x10) + 0x10))();
  if (cVar1 != '\0') {
    if (*(int *)(param_1_00 + 0xc) == 0) {
      iVar3 = GetSystemMetrics(0xd);
      iVar4 = GetSystemMetrics(0xe);
      p_Var5 = ImageList_Create(iVar3,iVar4,1,1,1);
      *(HIMAGELIST *)(param_1_00 + 0xc) = p_Var5;
    }
    hicon = *(HICON *)(param_1_00 + 0x14);
    iVar3 = *param_1;
    iVar4 = param_1[1];
    if (hicon != (HICON)0x0) {
      hicon = (HICON)hicon[5].unused;
    }
    iDrag = ImageList_ReplaceIcon(*(HIMAGELIST *)(param_1_00 + 0xc),-1,hicon);
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      if (iDrag == -1) goto LAB_009ead97;
    }
    else if (iDrag == -1) {
      FUN_00840480("..\\..\\src\\msw\\dragimag.cpp",0x159,"wxDragImage::BeginDrag",
                   "(cursorIndex != -1)",L"ImageList_AddIcon failed in BeginDrag.");
      goto LAB_009ead97;
    }
    ImageList_SetDragCursorImage(*(HIMAGELIST *)(param_1_00 + 0xc),iDrag,iVar3,iVar4);
  }
LAB_009ead97:
  cVar1 = (**(code **)(*(int *)(param_1_00 + 0x10) + 0x10))();
  if (cVar1 != '\0') {
    ShowCursor(0);
  }
  *(int *)(param_1_00 + 0x20) = param_2;
  SetCapture(*(HWND *)(param_2 + 0x13c));
  return 1;
}



bool __thiscall FUN_009eadd0(int param_1_00,int *param_1)

{
  int *piVar1;
  DWORD dwExStyle;
  BOOL BVar2;
  int *x;
  int y;
  int local_14;
  tagRECT local_10;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1_00 + 8) == 0)) {
    FUN_00840480("..\\..\\src\\msw\\dragimag.cpp",0x19f,"wxDragImage::Move","(m_hImageList != 0)",
                 L"Image list must not be null in Move.");
  }
  piVar1 = *(int **)(param_1_00 + 0x20);
  x = (int *)*param_1;
  y = param_1[1];
  if (piVar1 != (int *)0x0) {
    if (*(char *)(param_1_00 + 0x34) == '\0') {
      local_10.left = 0;
      local_10.top = 0;
      local_10.right = 0;
      local_10.bottom = 0;
      param_1 = (int *)GetWindowLongW((HWND)piVar1[0x4f],-0x10);
      dwExStyle = GetWindowLongW(*(HWND *)(*(int *)(param_1_00 + 0x20) + 0x13c),-0x14);
      AdjustWindowRectEx(&local_10,(DWORD)param_1,0,dwExStyle);
      x = (int *)((int)x - local_10.left);
      y = y - local_10.top;
    }
    else if ((piVar1 != (int *)0x0) && (*(char *)(param_1_00 + 0x34) != '\0')) {
      param_1 = x;
      local_14 = y;
      (**(code **)(*piVar1 + 0x25c))(&param_1,&local_14);
      x = param_1;
      y = local_14;
    }
  }
  BVar2 = ImageList_DragMove((int)x,y);
  *(int *)(param_1_00 + 0x1c) = y;
  *(int **)(param_1_00 + 0x18) = x;
  return BVar2 != 0;
}



bool __fastcall FUN_009eaec0(int param_1)

{
  BOOL BVar1;
  HWND hwndLock;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 8) == 0)) {
    FUN_00840480("..\\..\\src\\msw\\dragimag.cpp",0x1c1,"wxDragImage::Show","(m_hImageList != 0)",
                 L"Image list must not be null in Show.");
  }
  hwndLock = (HWND)0x0;
  if ((*(int *)(param_1 + 0x20) != 0) && (*(char *)(param_1 + 0x34) == '\0')) {
    hwndLock = *(HWND *)(*(int *)(param_1 + 0x20) + 0x13c);
  }
  BVar1 = ImageList_DragEnter(hwndLock,*(int *)(param_1 + 0x18),*(int *)(param_1 + 0x1c));
  return BVar1 != 0;
}



bool __fastcall FUN_009eaf20(int param_1)

{
  BOOL BVar1;
  HWND hwndLock;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 8) == 0)) {
    FUN_00840480("..\\..\\src\\msw\\dragimag.cpp",0x1ce,"wxDragImage::Hide","(m_hImageList != 0)",
                 L"Image list must not be null in Hide.");
  }
  hwndLock = (HWND)0x0;
  if ((*(int *)(param_1 + 0x20) != 0) && (*(char *)(param_1 + 0x34) == '\0')) {
    hwndLock = *(HWND *)(*(int *)(param_1 + 0x20) + 0x13c);
  }
  BVar1 = ImageList_DragLeave(hwndLock);
  return BVar1 != 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// CControlSiteFactoryMgr>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CProcessLocal<class
// _AFX_EDIT_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// AFX_MODULE_THREAD_STATE>::CreateObject(void)
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFXCTL_AMBIENT_CACHE>::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x38);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009eab20(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



bool __thiscall FUN_009eaff0(int param_1_00,int param_1,int param_3)

{
  char cVar1;
  int iVar2;
  HIMAGELIST himl;
  int iVar3;
  HBITMAP hbmMask;
  int cy;
  uint uVar4;
  HBITMAP hbmImage;
  uint uStack_a0;
  void *pvStack_9c;
  uint uStack_7c;
  void *pvStack_78;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bea316;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(HIMAGELIST *)(param_1_00 + 8) != (HIMAGELIST)0x0) {
    ImageList_Destroy(*(HIMAGELIST *)(param_1_00 + 8));
  }
  *(undefined4 *)(param_1_00 + 8) = 0;
  iVar3 = *(int *)(param_1 + 4);
  if ((iVar3 == 0) || (*(int *)(iVar3 + 0x10) < 5)) {
    uVar4 = 4;
  }
  else {
    uVar4 = 8;
    if (8 < *(int *)(iVar3 + 0x10)) {
      if (*(int *)(iVar3 + 0x10) < 0x11) {
        uVar4 = 0x10;
      }
      else {
        uVar4 = (uint)(0x18 < *(int *)(iVar3 + 0x10)) * 8 + 0x18;
      }
    }
  }
  iVar2 = FUN_008f25d0();
  iVar3 = *(int *)(param_1 + 4);
  if (iVar3 == 0) {
    cy = 0;
    iVar3 = 0;
  }
  else {
    cy = *(int *)(iVar3 + 0xc);
    iVar3 = *(int *)(iVar3 + 8);
  }
  himl = ImageList_Create(iVar3,cy,uVar4 | 1,1,1);
  *(HIMAGELIST *)(param_1_00 + 8) = himl;
  if (iVar2 == 0) {
    if (*(int *)(param_1 + 4) == 0) {
      iVar3 = ImageList_Add(himl,(HBITMAP)0x0,(HBITMAP)0x0);
    }
    else {
      iVar3 = ImageList_Add(himl,*(HBITMAP *)(*(int *)(param_1 + 4) + 0x14),(HBITMAP)0x0);
    }
  }
  else {
    if (*(int *)(param_1 + 4) == 0) {
      hbmImage = (HBITMAP)0x0;
    }
    else {
      hbmImage = *(HBITMAP *)(*(int *)(param_1 + 4) + 0x14);
    }
    FUN_008f25d0();
    hbmMask = (HBITMAP)FUN_008f4580();
    iVar3 = ImageList_Add(*(HIMAGELIST *)(param_1_00 + 8),hbmImage,hbmMask);
    DeleteObject(hbmMask);
  }
  if (iVar3 == -1) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(1);
    if (cVar1 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      uStack_4._0_1_ = 2;
      FUN_008423d0();
      uStack_4._0_1_ = 3;
      FUN_008854f0();
      FUN_0083fe90();
      uStack_4._0_1_ = 2;
      FUN_00842440();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      _free(pvStack_9c);
      if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_4 = 0xffffffff;
      _free(pvStack_78);
      if (7 < uStack_7c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  if (param_1_00 + 0x10 != param_3) {
    FUN_0083ea60();
  }
  ExceptionList = local_c;
  return iVar3 != -1;
}



undefined FUN_009eb2d0(void)

{
  undefined uVar1;
  undefined4 uVar2;
  int *unaff_EDI;
  int *unaff_retaddr;
  undefined **appuStack_d8 [2];
  undefined4 uStack_d0;
  undefined4 uStack_cc;
  undefined4 uStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_b8;
  undefined4 uStack_b4;
  undefined4 uStack_ac;
  undefined4 uStack_a8;
  int *piStack_a4;
  int *piStack_a0;
  undefined4 uStack_9c;
  undefined4 uStack_98;
  int *piStack_94;
  undefined4 uStack_90;
  int iStack_8c;
  int *piStack_88;
  undefined **ppuStack_84;
  undefined *puStack_80;
  undefined **ppuStack_7c;
  int **ppiStack_74;
  int *piStack_70;
  int iStack_6c;
  undefined4 uStack_68;
  int *piStack_64;
  undefined *puStack_60;
  uint uStack_5c;
  int *local_4c;
  int *local_48;
  int *piStack_44;
  int *piStack_40;
  int *piStack_3c;
  undefined local_34 [8];
  int *piStack_2c;
  undefined uStack_28;
  undefined uStack_24;
  int *piStack_14;
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea370;
  local_c = ExceptionList;
  uStack_5c = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  piStack_64 = (int *)local_34;
  puStack_60 = (undefined *)0x11;
  uStack_68 = 0x9eb304;
  FUN_008ff360();
  local_4 = 0;
  local_48 = (int *)0x0;
  local_4c = (int *)0x0;
  puStack_60 = (undefined *)0x9eb31e;
  FUN_0094bed0();
  puStack_60 = local_34;
  local_4 = CONCAT31(local_4._1_3_,1);
  piStack_64 = (int *)0x9eb333;
  (**(code **)(*local_10 + 0x50))();
  piStack_64 = (int *)0x0;
  uStack_68 = 0;
  iStack_6c = 0;
  piStack_70 = (int *)&stack0xffffffb0;
  ppiStack_74 = &local_4c;
  ppuStack_7c = (undefined **)0x9eb353;
  (**(code **)(*piStack_14 + 0xa4))();
  ppuStack_7c = &PTR_vftable_03238ce4;
  puStack_80 = (undefined *)0x9eb363;
  (**(code **)(*piStack_2c + 0x50))();
  puStack_80 = (undefined *)0x9eb36c;
  FUN_0094bd80();
  puStack_80 = &stack0xffffffac;
  uStack_24 = 2;
  ppuStack_84 = (undefined **)0x9eb381;
  (**(code **)(*piStack_3c + 0x50))();
  ppuStack_84 = (undefined **)0xffffffff;
  piStack_88 = (int *)((int)piStack_70 + 2);
  iStack_8c = iStack_6c + 2;
  uStack_90 = 0x9eb39c;
  FUN_008f53f0();
  ppuStack_84 = &puStack_60;
  uStack_28 = 3;
  piStack_88 = (int *)0x9eb3af;
  FUN_0094c840();
  ppuStack_84 = (undefined **)0xa;
  piStack_88 = (int *)0x9eb3b6;
  ppuStack_84 = (undefined **)FUN_008f8a00();
  piStack_88 = (int *)0x9eb3c5;
  (**(code **)(*piStack_40 + 0x68))();
  piStack_88 = (int *)0x9eb3d3;
  (**(code **)(*piStack_44 + 0xb0))();
  piStack_88 = (int *)0x6a;
  iStack_8c = 0x9eb3e0;
  (**(code **)(*piStack_44 + 0x70))();
  iStack_8c = 0x10;
  uStack_90 = 0x9eb3e7;
  iStack_8c = FUN_008f7e50();
  uStack_90 = 0x9eb3f6;
  (**(code **)(*local_48 + 0x78))();
  uStack_90 = 0;
  piStack_94 = (int *)0x0;
  uStack_9c = 0x9eb407;
  uStack_98 = unaff_retaddr;
  (**(code **)(*local_4c + 0x168))();
  uStack_9c = 0;
  piStack_a0 = (int *)0x1;
  uStack_a8 = 0x9eb419;
  piStack_a4 = unaff_retaddr;
  (**(code **)(*unaff_EDI + 0x168))();
  uStack_a8 = 0;
  uStack_ac = 2;
  uStack_b4 = 0x9eb42b;
  (**(code **)(*piStack_64 + 0x168))();
  uStack_b4 = 1;
  uStack_b8 = 1;
  uStack_c0 = 0x9eb43e;
  (**(code **)(*piStack_70 + 0x168))();
  uStack_c0 = 1;
  uStack_c4 = 2;
  uStack_cc = 0x9eb451;
  (**(code **)(*ppuStack_7c + 0x168))();
  uStack_cc = 2;
  uStack_d0 = 1;
  appuStack_d8[0] = (undefined **)0x9eb464;
  (**(code **)(*piStack_88 + 0x168))();
  appuStack_d8[0] = (undefined **)0x2;
  (**(code **)(*piStack_94 + 0x168))(unaff_retaddr,2);
  uVar2 = FUN_008f7e50(0xb);
  (**(code **)(*piStack_a0 + 0x78))(uVar2);
  (**(code **)(*piStack_a4 + 0x168))(unaff_retaddr,1,1);
  FUN_0094c840(&PTR_vftable_03238cc8);
  FUN_008f3b70(appuStack_d8);
  uStack_98._0_1_ = 4;
  FUN_008ff990(0xff,0xff,0xff);
  uVar2 = FUN_00414f38(appuStack_d8,0xffffffff);
  uStack_98._0_1_ = 5;
  uVar1 = FUN_009eaff0(uVar2,iStack_8c);
  uStack_98._0_1_ = 4;
  FUN_008f7630();
  uStack_98._0_1_ = 3;
  appuStack_d8[0] = wxObject::vftable;
  FUN_0083e850();
  uStack_98._0_1_ = 2;
  FUN_008f7630();
  uStack_98._0_1_ = 1;
  FUN_00457221();
  uStack_98 = (int *)((uint)uStack_98._1_3_ << 8);
  FUN_00457221();
  uStack_98 = (int *)0xffffffff;
  FUN_00921450();
  ExceptionList = piStack_a0;
  return uVar1;
}



undefined __thiscall FUN_009eb580(int param_1_00,int *param_1,LPARAM *param_2)

{
  undefined uVar1;
  uint uVar2;
  LRESULT LVar3;
  undefined4 uVar4;
  undefined4 unaff_EBX;
  undefined auStack_30 [16];
  uint uStack_20;
  void *pvStack_1c;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  if (*(HIMAGELIST *)(param_1_00 + 8) != (HIMAGELIST)0x0) {
    ImageList_Destroy(*(HIMAGELIST *)(param_1_00 + 8));
  }
  LVar3 = SendMessageW((HWND)param_1[0x4f],0x1112,0,*param_2);
  *(LRESULT *)(param_1_00 + 8) = LVar3;
  if (LVar3 == 0) {
    uVar4 = (**(code **)(*param_1 + 0x36c))(auStack_30,param_2,uVar2);
    local_c = (void *)0x0;
    uVar1 = FUN_009eb2d0(uVar4,&DAT_032bf368);
    _free(pvStack_1c);
    if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(unaff_EBX);
    }
    ExceptionList = pvStack_14;
    return uVar1;
  }
  ExceptionList = local_c;
  return 1;
}



undefined4 __fastcall FUN_009eb660(int param_1)

{
  char cVar1;
  BOOL BVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdb960;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 8) == 0)) {
    FUN_00840480();
  }
  ImageList_EndDrag();
  BVar2 = ReleaseCapture();
  if (BVar2 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  ShowCursor(1);
  *(undefined4 *)(param_1 + 0x20) = 0;
  ExceptionList = local_c;
  return 1;
}



void __fastcall FUN_009eb7b0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb7be. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0xb0))();
  return;
}



void __fastcall FUN_009eb7c0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb7cb. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0x50))();
  return;
}



void __fastcall FUN_009eb7d0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb7db. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0x58))();
  return;
}



void __fastcall FUN_009eb7e0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb7eb. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0x60))();
  return;
}



void __fastcall FUN_009eb7f0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb7fb. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0x68))();
  return;
}



void __fastcall FUN_009eb800(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb80b. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0x70))();
  return;
}



void __fastcall FUN_009eb810(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb81e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0x88))();
  return;
}



void __fastcall FUN_009eb820(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb82e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0xc0))();
  return;
}



void __fastcall FUN_009eb830(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb83e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0x98))();
  return;
}



void __fastcall FUN_009eb840(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb84e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0x9c))();
  return;
}



void __fastcall FUN_009eb850(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb85b. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0x14))();
  return;
}



void __fastcall FUN_009eb860(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb86b. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0x18))();
  return;
}



void __fastcall FUN_009eb870(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb87b. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0x28))();
  return;
}



undefined4 __thiscall FUN_009eb880(int param_1_00,undefined4 param_1)

{
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x2c))(param_1);
  return param_1;
}



void __fastcall FUN_009eb8a0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb8ab. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0x10))();
  return;
}



void __fastcall FUN_009eb8b0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb8be. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0xe4))();
  return;
}



void __fastcall FUN_009eb8c0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009eb8ce. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0x90))();
  return;
}



void __thiscall FUN_009eb8d0(int param_1_00,int param_1,int param_2)

{
  undefined4 uVar1;
  int iVar2;
  
  if ((*(char *)(param_1_00 + 0xfc) != '\0') && (iVar2 = 0, 0 < param_1)) {
    do {
      uVar1 = *(undefined4 *)(param_2 + iVar2 * 8);
      *(undefined4 *)(param_2 + iVar2 * 8) = *(undefined4 *)(param_2 + 4 + iVar2 * 8);
      *(undefined4 *)(param_2 + 4 + iVar2 * 8) = uVar1;
      iVar2 = iVar2 + 1;
    } while (iVar2 < param_1);
  }
  return;
}



void __thiscall
FUN_009eb910(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  
  uVar1 = param_2;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar1 = param_1;
    param_1 = param_2;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 300))(uVar1,param_1,param_3,param_4);
  return;
}



void __thiscall
FUN_009eb950(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  uVar1 = param_2;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar1 = param_1;
    param_1 = param_2;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x138))(uVar1,param_1,param_3);
  return;
}



void __thiscall FUN_009eb990(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = param_2;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar1 = param_1;
    param_1 = param_2;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x13c))(uVar1,param_1);
  return;
}



void __thiscall
FUN_009eb9d0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar2 = param_2;
  uVar1 = param_4;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar2 = param_1;
    param_1 = param_2;
    uVar1 = param_3;
    param_3 = param_4;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x140))(uVar2,param_1,uVar1,param_3);
  return;
}



void __thiscall
FUN_009eba20(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/dcmirror.h",0x82,"wxMirrorDCImpl::DoDrawArc",
                 "Assert failure",L"this is probably wrong");
  }
  uVar2 = param_2;
  uVar1 = param_4;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar2 = param_1;
    param_1 = param_2;
    uVar1 = param_3;
    param_3 = param_4;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x144))(uVar2,param_1,uVar1,param_3,param_5,param_6);
  return;
}



void __thiscall
FUN_009ebab0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar2 = param_2;
  uVar1 = param_4;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar2 = param_1;
    param_1 = param_2;
    uVar1 = param_3;
    param_3 = param_4;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x148))(uVar2,param_1,uVar1,param_3);
  return;
}



void __thiscall
FUN_009ebb00(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined8 param_5,undefined8 param_6)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/dcmirror.h",0x93,
                 "wxMirrorDCImpl::DoDrawEllipticArc","Assert failure",L"this is probably wrong");
  }
  uVar2 = param_2;
  uVar1 = param_4;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar2 = param_1;
    param_1 = param_2;
    uVar1 = param_3;
    param_3 = param_4;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x14c))(uVar2,param_1,uVar1,param_3,param_5,param_6);
  return;
}



void __thiscall
FUN_009ebb90(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar2 = param_2;
  uVar1 = param_4;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar2 = param_1;
    param_1 = param_2;
    uVar1 = param_3;
    param_3 = param_4;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x150))(uVar2,param_1,uVar1,param_3);
  return;
}



void __thiscall
FUN_009ebbe0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined8 param_5)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar2 = param_2;
  uVar1 = param_4;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar2 = param_1;
    param_1 = param_2;
    uVar1 = param_3;
    param_3 = param_4;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x154))(uVar2,param_1,uVar1,param_3,param_5);
  return;
}



void __thiscall
FUN_009ebc40(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar2 = param_2;
  uVar1 = param_4;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar2 = param_1;
    param_1 = param_2;
    uVar1 = param_3;
    param_3 = param_4;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x158))(uVar2,param_1,uVar1,param_3);
  return;
}



void __thiscall FUN_009ebc90(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = param_2;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar1 = param_1;
    param_1 = param_2;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x15c))(uVar1,param_1);
  return;
}



void __thiscall
FUN_009ebcd0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  uVar1 = param_3;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar1 = param_2;
    param_2 = param_3;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x160))(param_1,uVar1,param_2);
  return;
}



void __thiscall
FUN_009ebd10(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  
  uVar1 = param_3;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar1 = param_2;
    param_2 = param_3;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x164))(param_1,uVar1,param_2,param_4);
  return;
}



void __fastcall FUN_009ebd50(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ebd5e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0x168))();
  return;
}



void __thiscall
FUN_009ebd60(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined8 param_4)

{
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x16c))(param_1,param_2,param_3,param_4);
  return;
}



void __thiscall
FUN_009ebd90(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            undefined4 param_8,undefined4 param_9,undefined4 param_10,undefined4 param_11)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  
  uVar3 = param_2;
  uVar1 = param_7;
  uVar2 = param_3;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar3 = param_1;
    param_1 = param_2;
    uVar1 = param_6;
    param_6 = param_7;
    uVar2 = param_4;
    param_4 = param_3;
    param_11 = param_10;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x170))
            (uVar3,param_1,param_4,uVar2,param_5,uVar1,param_6,param_8,param_9,param_11,param_11);
  return;
}



void __thiscall FUN_009ebe40(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x20))(param_1,param_2);
    return;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x20))(param_2,param_1);
  return;
}



void __thiscall FUN_009ebe90(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x24))(param_1,param_2);
    return;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x24))(param_2,param_1);
  return;
}



void __thiscall
FUN_009ebee0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  
  FUN_009eb8d0(param_1,param_2);
  uVar1 = param_4;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar1 = param_3;
    param_3 = param_4;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x17c))(param_1,param_2,uVar1,param_3);
  FUN_009eb8d0(param_1,param_2);
  return;
}



void __thiscall
FUN_009ebf40(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  undefined4 uVar1;
  
  uVar1 = param_2;
  FUN_009eb8d0(param_1,param_2);
  param_2 = param_3;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    param_2 = param_4;
    param_4 = param_3;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x184))(param_1,uVar1,param_4,param_2,param_5);
  FUN_009eb8d0(param_1,uVar1);
  return;
}



void FUN_009ebfb0(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/dcmirror.h",0xfc,
                 "wxMirrorDCImpl::DoSetDeviceClippingRegion","Assert failure",L"not implemented");
  }
  return;
}



void __thiscall
FUN_009ebfe0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar2 = param_2;
  uVar1 = param_4;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar2 = param_1;
    param_1 = param_2;
    uVar1 = param_3;
    param_3 = param_4;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0xb4))(uVar2,param_1,uVar1,param_3);
  return;
}



void __fastcall FUN_009ec030(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009ec03e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(**(int **)(param_1 + 0xf8) + 0xa4))();
  return;
}



undefined4 FUN_009ec040(void)

{
  return 5;
}



void __thiscall
FUN_009ec050(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 unaff_ESI;
  
  (**(code **)(*param_1_00 + 0x2c))(param_1,param_2,param_3,param_4);
  (**(code **)(*param_1_00 + 0x20))(unaff_ESI,param_2,param_3,param_4);
  return;
}



void FUN_009ec090(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\generic\\renderg.cpp",0x2f6,"wxRendererGeneric::DrawChoice",
                 "Assert failure","UNIMPLEMENTED: wxRendererGeneric::DrawChoice");
  }
  return;
}



void FUN_009ec0c0(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\generic\\renderg.cpp",0x2fc,"wxRendererGeneric::DrawComboBox",
                 "Assert failure","UNIMPLEMENTED: wxRendererGeneric::DrawComboBox");
  }
  return;
}



void FUN_009ec0f0(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\generic\\renderg.cpp",0x302,"wxRendererGeneric::DrawRadioBitmap",
                 "Assert failure","UNIMPLEMENTED: wxRendererGeneric::DrawRadioBitmap");
  }
  return;
}



void FUN_009ec120(void)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\generic\\renderg.cpp",0x308,"wxRendererGeneric::DrawTextCtrl",
                 "Assert failure","UNIMPLEMENTED: wxRendererGeneric::DrawTextCtrl");
  }
  return;
}



void FUN_009ec150(void)

{
  return;
}



undefined ** FUN_009ec160(void)

{
  return &PTR_u_wxGenericRendererModule_0323d9dc;
}



void __thiscall FUN_009ec170(int param_1_00,undefined8 param_1,undefined8 param_2)

{
  undefined8 uVar1;
  
  uVar1 = param_1;
  if (*(char *)(param_1_00 + 0xfc) != '\0') {
    uVar1 = param_2;
    param_2 = param_1;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0xec))(uVar1,param_2);
  return;
}



void __thiscall FUN_009ec1c0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = param_2;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar1 = param_1;
    param_1 = param_2;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0xfc))(uVar1,param_1);
  return;
}



void __thiscall FUN_009ec200(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = param_2;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar1 = param_1;
    param_1 = param_2;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x104))(uVar1,param_1);
  return;
}



void __thiscall FUN_009ec240(int param_1_00,undefined param_1,undefined param_2)

{
  undefined uVar1;
  
  uVar1 = param_1;
  if (*(char *)(param_1_00 + 0xfc) == '\0') {
    uVar1 = param_2;
    param_2 = param_1;
  }
  (**(code **)(**(int **)(param_1_00 + 0xf8) + 0x124))(param_2,uVar1);
  return;
}



undefined4 * __thiscall FUN_009ec280(undefined4 *param_1_00,int param_1,undefined param_2)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be82db;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x100);
  local_4 = 0;
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    uVar1 = *(undefined4 *)(param_1 + 8);
    FUN_0094d450(param_1_00);
    *puVar2 = wxMirrorDCImpl::vftable;
    puVar2[0x3e] = uVar1;
    *(undefined *)(puVar2 + 0x3f) = param_2;
  }
  param_1_00[1] = 0;
  param_1_00[2] = puVar2;
  *param_1_00 = wxMirrorDC::vftable;
  *(undefined *)(param_1_00 + 3) = param_2;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __fastcall FUN_009ec320(undefined4 *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined **local_34 [5];
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bea3e4;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  local_4 = 0;
  *param_1 = wxRendererGeneric::vftable;
  uVar2 = FUN_008ff080(local_34,0x15,uVar1);
  local_4._0_1_ = 1;
  FUN_009566f0(uVar2,1,100);
  local_4._0_1_ = 3;
  local_34[0] = wxObject::vftable;
  FUN_0083e850();
  uVar2 = FUN_008ff080(local_20,0x10);
  local_4._0_1_ = 4;
  FUN_009566f0(uVar2,1,100);
  local_4._0_1_ = 6;
  local_20[0] = wxObject::vftable;
  FUN_0083e850();
  uVar2 = FUN_008ff080(local_34,0xf);
  local_4._0_1_ = 7;
  FUN_009566f0(uVar2,1,100);
  local_4._0_1_ = 9;
  local_34[0] = wxObject::vftable;
  FUN_0083e850();
  uVar2 = FUN_008ff080(local_20,0x14);
  local_4._0_1_ = 10;
  FUN_009566f0(uVar2,1,100);
  local_4 = CONCAT31(local_4._1_3_,0xc);
  local_20[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



void FUN_009ec440(undefined4 *param_1)

{
  *param_1 = 1;
  param_1[1] = 5;
  return;
}



void __fastcall FUN_009ec460(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bea429;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 3;
  *(undefined ***)(param_1 + 0x1c) = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4._0_1_ = 2;
  *(undefined ***)(param_1 + 0x14) = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 1;
  *(undefined ***)(param_1 + 0xc) = wxObject::vftable;
  FUN_0083e850();
  local_4 = (uint)local_4._1_3_ << 8;
  *(undefined ***)(param_1 + 4) = wxObject::vftable;
  FUN_0083e850();
  local_4 = 0xffffffff;
  FUN_009b9fb0();
  ExceptionList = local_c;
  return;
}



void FUN_009ec500(int *param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  
  (**(code **)(*(int *)param_1[2] + 0x58))(param_3);
  (**(code **)(*(int *)param_1[2] + 0x140))
            (*param_1,param_1[1],*param_1,param_1[1] + -1 + param_1[3]);
  (**(code **)(*(int *)param_1[2] + 0x140))
            (*param_1 + 1,param_1[1],*param_1 + -1 + param_1[2],param_1[1]);
  (**(code **)(*(int *)param_1[2] + 0x58))(param_3);
  iVar1 = param_1[2] + -1 + *param_1;
  (**(code **)(*(int *)param_1[2] + 0x140))(iVar1,param_1[1],iVar1,param_1[1] + -1 + param_1[3]);
  iVar1 = param_1[1] + -1 + param_1[3];
  (**(code **)(*(int *)param_1[2] + 0x140))(*param_1,iVar1,param_1[2] + *param_1,iVar1);
  FUN_008f7520(0xffffffff,0xffffffff);
  return;
}



void FUN_009ec5c0(undefined4 param_1,int param_2,int *param_3)

{
  int iVar1;
  int *piVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  undefined4 unaff_EBX;
  int *piVar9;
  void *pvVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  undefined local_20 [8];
  int iStack_18;
  int iStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea460;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = *param_3;
  piVar2 = (int *)param_3[1];
  uVar3 = FUN_008ff080(local_20,0xf,DAT_0323f878 ^ (uint)&stack0xffffffbc);
  local_4 = 0;
  uVar3 = FUN_0095d7e0(uVar3,100);
  local_4 = CONCAT31(local_4._1_3_,1);
  (**(code **)(**(int **)(param_2 + 8) + 0x60))(uVar3);
  puStack_8 = (undefined *)((uint)puStack_8 & 0xffffff00);
  FUN_008f7630();
  puStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  iVar4 = FUN_008f8330(0x24);
  (**(code **)(**(int **)(param_2 + 8) + 0x58))(iVar4);
  iVar13 = param_3[1];
  iVar11 = *param_3;
  (**(code **)(**(int **)(param_2 + 8) + 0x150))(iVar11,iVar13,param_3[2],param_3[3]);
  uVar3 = FUN_008f8a00(9);
  (**(code **)(**(int **)(param_2 + 8) + 0x60))(uVar3);
  (**(code **)(**(int **)(param_2 + 8) + 0x58))(iVar4 + 4);
  iVar5 = iStack_14 + (int)piVar2;
  iVar7 = iVar4 + iVar1 + -1;
  piVar9 = piVar2;
  iVar12 = iVar7;
  iStack_18 = iVar7;
  (**(code **)(**(int **)(param_2 + 8) + 0x140))(iVar7,piVar2,iVar7,iVar5);
  iVar6 = iVar13 + -1;
  (**(code **)(**(int **)(param_2 + 8) + 0x140))(iVar1,iVar6,iVar11,iVar6);
  (**(code **)(**(int **)(param_2 + 8) + 0x58))(piVar9 + 3);
  iVar8 = (int)piVar9 + -2;
  iVar4 = (int)piVar2 + 1;
  (**(code **)(**(int **)(param_2 + 8) + 0x140))(iVar8,iVar4,iVar8,unaff_EBX);
  pvVar10 = (void *)(iVar1 + 1);
  (**(code **)(**(int **)(param_2 + 8) + 0x140))(pvVar10,iVar11 + -2,iVar5,iVar11 + -2);
  (**(code **)(**(int **)(param_2 + 8) + 0x58))(iVar4 + 0x1c);
  piVar9 = piVar2;
  (**(code **)(**(int **)(param_2 + 8) + 0x140))(iVar1,piVar2,iVar1,iVar13);
  (**(code **)(**(int **)(param_2 + 8) + 0x140))(iVar1,piVar2,iVar12,piVar2);
  (**(code **)(*piVar9 + 4))(iVar6,param_2,param_3,iVar7,iVar8,iVar12);
  ExceptionList = pvVar10;
  return;
}



void FUN_009ec7e0(int *param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  
  uVar1 = *(uint *)(param_2 + 0xe0);
  if ((uVar1 >> 8 & 1) == 0) {
    iVar2 = (-(uint)((uVar1 >> 4 & 1) != 0) & 0xfffffffd) + 3;
  }
  else {
    iVar2 = 7;
  }
  *param_1 = iVar2;
  param_1[1] = (uVar1 >> 9 & 1) * 2;
  *(undefined *)(param_1 + 2) = 0;
  return;
}



void __thiscall FUN_009ec830(int param_1_00,int param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  if ((*(uint *)(param_1 + 0xe0) >> 9 & 1) != 0) {
    local_10 = *param_3;
    local_c = param_3[1];
    local_8 = param_3[2];
    local_4 = param_3[3];
    FUN_009ec500(param_2,&local_10,param_1_00 + 0xc,param_1_00 + 0x1c);
    FUN_009ec500(param_2,&local_10,param_1_00 + 4,param_1_00 + 0x14);
  }
  return;
}



void __thiscall
FUN_009ec8a0(int param_1_00,int param_1,int *param_2,int **param_3,undefined4 param_4,int param_5)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  undefined4 uVar4;
  int *unaff_EBX;
  undefined4 unaff_ESI;
  int *piVar5;
  void *pvStack_74;
  int *piVar6;
  int *piVar7;
  int *local_40;
  int *local_3c;
  int *local_38;
  int *local_30;
  int *piStack_2c;
  undefined **local_28;
  char local_24 [20];
  int *piStack_10;
  undefined4 local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bea498;
  local_c = ExceptionList;
  piVar2 = (int *)(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  ExceptionList = &local_c;
  FUN_009ec280(param_2,param_5 != 8);
  local_4 = 0;
  if (local_24[0] != '\0') {
    local_40 = param_3[1];
    local_3c = *param_3;
    param_3 = &local_40;
  }
  local_38 = *param_3;
  piVar1 = param_3[1];
  piVar3 = (int *)FUN_008f8330(0x24);
  (**(code **)((int)*local_28 + 0x58))();
  uVar4 = FUN_008ff080(local_24,0xf);
  uStack_8._0_1_ = 1;
  uVar4 = FUN_0095d7e0(uVar4,100);
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,2);
  (**(code **)(*piStack_2c + 0x60))(uVar4);
  local_c._0_1_ = 1;
  FUN_008f7630();
  local_c = (void *)((uint)local_c._1_3_ << 8);
  local_28 = wxObject::vftable;
  FUN_0083e850();
  piVar7 = (int *)0x0;
  if ((*(uint *)(param_1 + 0xe0) >> 8 & 1) == 0) {
    (**(code **)(*local_30 + 0x150))(param_2,0,3,piVar1);
  }
  else {
    piVar6 = (int *)((int)param_2 + 2);
    (**(code **)(*local_30 + 0x150))();
    (**(code **)(*local_40 + 0x58))(param_1_00 + 0x14);
    pvStack_74 = (void *)((int)piVar1 - (int)piStack_10);
    piVar5 = param_2;
    (**(code **)(*unaff_EBX + 0x140))(param_2,piStack_10,param_2);
    (**(code **)(*piVar2 + 0x58))(param_1_00 + 0x1c);
    (**(code **)(*piVar3 + 0x140))((int)param_2 + 1,0,(int)param_2 + 1,piVar1);
    (**(code **)(*piVar7 + 0x58))(param_1_00 + 0xc);
    (**(code **)(*piVar6 + 0x140))((int)param_2 + 5,0,(int)param_2 + 5,piVar1);
    (**(code **)(*piStack_10 + 0x58))(param_1_00 + 4);
    (**(code **)(*piVar5 + 0x140))((int)param_2 + 6,unaff_ESI,(int)param_2 + 6,pvStack_74);
  }
  FUN_00457221();
  ExceptionList = pvStack_74;
  return;
}



void FUN_009ecaa0(undefined4 param_1,int param_2,undefined4 *param_3)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_4c [12];
  undefined **ppuStack_40;
  undefined auStack_3c [16];
  undefined auStack_2c [4];
  void *pvStack_28;
  int local_24;
  int local_20;
  int local_1c;
  int local_18;
  int local_14;
  int local_10;
  undefined4 local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bea4e0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  local_10 = (int)param_3[2] / 5;
  local_14 = (int)param_3[2] / 2;
  local_20 = (int)param_3[3] / 2 - local_10 / 2;
  local_24 = local_14 - local_10;
  local_1c = local_14 + local_10;
  local_10 = local_20 + local_10;
  local_18 = local_20;
  uVar2 = FUN_0091df90(local_4c);
  local_4 = 0;
  uVar2 = FUN_0095d7e0(uVar2,100);
  local_4 = CONCAT31(local_4._1_3_,1);
  (**(code **)(**(int **)(param_2 + 8) + 0x60))(uVar2,uVar1);
  uStack_8 = (undefined *)((uint)uStack_8 & 0xffffff00);
  FUN_008f7630();
  uStack_8 = (undefined *)0xffffffff;
  FUN_0083e850();
  uVar2 = FUN_0091df90(auStack_3c);
  uStack_8 = (undefined *)0x2;
  uVar2 = FUN_009566f0(uVar2,1,100);
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,3);
  (**(code **)(**(int **)(param_2 + 8) + 0x58))(uVar2);
  local_c = (void *)CONCAT31(local_c._1_3_,2);
  FUN_0083e850();
  local_c = (void *)0xffffffff;
  ppuStack_40 = wxObject::vftable;
  FUN_0083e850();
  (**(code **)(**(int **)(param_2 + 8) + 0x184))(3,auStack_2c,*param_3,param_3[1],1);
  ExceptionList = pvStack_28;
  return;
}



void FUN_009ecc10(undefined4 *param_1,int param_2,undefined4 param_3,byte param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  if ((param_4 & 1) == 0) {
    uVar3 = 0x1a;
  }
  else {
    uVar3 = 0x20;
  }
  uVar3 = FUN_008f8330(uVar3);
  (**(code **)(**(int **)(param_2 + 8) + 0x58))(uVar3);
  uVar3 = FUN_008f8a00(9);
  (**(code **)(**(int **)(param_2 + 8) + 0x60))(uVar3);
  (**(code **)(**(int **)(param_2 + 8) + 0x150))(*param_1,param_1[1],param_1[2],param_1[3]);
  if ((param_4 & 0x40) != 0) {
    uVar3 = *param_1;
    uVar2 = param_1[1];
    uVar4 = param_1[2];
    uVar1 = param_1[3];
    FUN_008f7520(0xfffffffe,0xfffffffe);
    (**(code **)(**(int **)(param_2 + 8) + 0x148))(uVar3,uVar2,uVar4,uVar1);
  }
  return;
}



void FUN_009eccd0(undefined4 *param_1)

{
  *param_1 = 0x10;
  param_1[1] = 0x10;
  return;
}



void __thiscall FUN_009eccf0(int param_1_00,int param_1,int param_2,int *param_3)

{
  int unaff_EBX;
  int iVar1;
  int unaff_EBP;
  int iVar2;
  
  iVar1 = *param_3;
  iVar2 = param_3[2] + -1 + iVar1;
  (**(code **)(**(int **)(param_2 + 8) + 0x58))(param_1_00 + 4);
  (**(code **)(**(int **)(param_2 + 8) + 0x90))(4);
  for (iVar1 = iVar1 + 1; iVar1 < iVar2; iVar1 = iVar1 + 2) {
    (**(code **)(**(int **)(param_2 + 8) + 0x13c))(iVar1,param_3[1]);
  }
  for (iVar1 = (uint)(iVar1 != iVar2) + param_1; iVar1 < unaff_EBP; iVar1 = iVar1 + 2) {
    (**(code **)(**(int **)(param_2 + 8) + 0x13c))(iVar2,iVar1);
  }
  for (iVar2 = iVar2 - (uint)(iVar1 != unaff_EBP); unaff_EBX < iVar2; iVar2 = iVar2 + -2) {
    (**(code **)(**(int **)(param_2 + 8) + 0x13c))(iVar2,unaff_EBP);
  }
  for (iVar2 = unaff_EBP - (uint)(iVar2 != unaff_EBX); param_1 < iVar2; iVar2 = iVar2 + -2) {
    (**(code **)(**(int **)(param_2 + 8) + 0x13c))(unaff_EBX,iVar2);
  }
  (**(code **)(**(int **)(param_2 + 8) + 0x90))(5);
  return;
}



void FUN_009ece10(void)

{
  if (DAT_032ea1ec != (int *)0x0) {
    (**(code **)(*DAT_032ea1ec + 0x54))(1);
    DAT_032ea1ec = (int *)0x0;
  }
  return;
}



undefined4 * FUN_009ece30(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxGenericRendererModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void FUN_009ece90(void)

{
  uint uVar1;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  if (DAT_032ea1ec == 0) {
    local_10 = operator_new(0x24);
    local_4 = 0;
    if (local_10 != (void *)0x0) {
      DAT_032ea1ec = FUN_009ec320(uVar1);
      ExceptionList = local_c;
      return;
    }
    DAT_032ea1ec = 0;
  }
  ExceptionList = local_c;
  return;
}



void thunk_FUN_009ece90(void)

{
  uint uVar1;
  void *pvStack_10;
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&pvStack_10;
  ExceptionList = &pvStack_c;
  if (DAT_032ea1ec == 0) {
    pvStack_10 = operator_new(0x24);
    uStack_4 = 0;
    if (pvStack_10 != (void *)0x0) {
      DAT_032ea1ec = FUN_009ec320(uVar1);
      ExceptionList = pvStack_c;
      return;
    }
    DAT_032ea1ec = 0;
  }
  ExceptionList = pvStack_c;
  return;
}



undefined4 __thiscall FUN_009ecf20(undefined4 param_1_00,byte param_1)

{
  FUN_009ec460();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_009ecf40(undefined4 *param_1,int param_2,undefined4 param_3,byte param_4)

{
  int iVar1;
  undefined4 uVar2;
  bool bVar3;
  undefined auStack_4c [4];
  undefined **local_48;
  int local_44;
  undefined4 local_40;
  undefined local_3c;
  undefined local_3b;
  undefined local_3a;
  undefined local_39;
  undefined local_38;
  undefined **local_34 [4];
  void *pvStack_24;
  undefined **local_20;
  undefined4 uStack_1c;
  undefined4 local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bea531;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar3 = (param_4 & 1) == 0;
  if (bVar3) {
    iVar1 = FUN_0091de40(local_34);
  }
  else {
    iVar1 = FUN_008ff080(&local_20,0xf,DAT_0323f878 ^ (uint)&stack0xffffffa4);
  }
  local_44 = *(int *)(iVar1 + 4);
  if (local_44 != 0) {
    *(int *)(local_44 + 4) = *(int *)(local_44 + 4) + 1;
  }
  local_48 = wxColour::vftable;
  local_40 = *(undefined4 *)(iVar1 + 8);
  local_3c = *(undefined *)(iVar1 + 0xc);
  local_3b = *(undefined *)(iVar1 + 0xd);
  local_3a = *(undefined *)(iVar1 + 0xe);
  local_39 = *(undefined *)(iVar1 + 0xf);
  local_38 = *(undefined *)(iVar1 + 0x10);
  local_4 = 1;
  if (bVar3) {
    local_34[0] = wxObject::vftable;
    FUN_0083e850();
  }
  local_4._0_1_ = 2;
  if (!bVar3) {
    local_20 = wxObject::vftable;
    FUN_0083e850();
  }
  uVar2 = FUN_0095d7e0(&local_48,100);
  local_4 = CONCAT31(local_4._1_3_,3);
  (**(code **)(**(int **)(param_2 + 8) + 0x60))(uVar2);
  uStack_8._0_1_ = 2;
  FUN_008f7630();
  uVar2 = FUN_009566f0(auStack_4c,1,100);
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,4);
  (**(code **)(**(int **)(param_2 + 8) + 0x58))(uVar2);
  local_c = (void *)CONCAT31(local_c._1_3_,2);
  FUN_0083e850();
  (**(code **)(**(int **)(param_2 + 8) + 0x150))(*param_1,param_1[1],param_1[2],param_1[3]);
  uStack_1c = 0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_24;
  return;
}



void FUN_009ed0e0(undefined4 param_1,int param_2,int *param_3)

{
  undefined4 uVar1;
  int iVar2;
  void *unaff_ESI;
  int iVar3;
  byte bStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea560;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_008f8330(0x20,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  FUN_0094d3c0(param_2,uVar1);
  local_4 = 0;
  uVar1 = FUN_008f8a00(10);
  FUN_009e3330(param_2,uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  (**(code **)(**(int **)(param_2 + 8) + 0x150))(*param_3,param_3[1],param_3[2],param_3[3]);
  iVar2 = *param_3 + param_3[2] / 2;
  puStack_8 = (undefined *)(param_3[2] / 2 + -2);
  iVar3 = param_3[3] / 2 + param_3[1];
  uVar1 = FUN_008f8330(0x1a);
  (**(code **)(**(int **)(param_2 + 8) + 0x58))(uVar1);
  (**(code **)(**(int **)(param_2 + 8) + 0x140))
            (iVar2 - (int)local_c,iVar3,(int)local_c + iVar2 + 1,iVar3);
  if ((bStack_14 & 8) == 0) {
    (**(code **)(**(int **)(param_2 + 8) + 0x140))
              (iVar2,iVar3 - (param_3[3] / 2 + -2),iVar2,param_3[3] / 2 + -1 + iVar3);
  }
  FUN_009e1ff0();
  FUN_0094bbb0();
  ExceptionList = unaff_ESI;
  return;
}



void FUN_009ed220(undefined4 *param_1,int param_2,undefined4 param_3,byte param_4)

{
  undefined4 uVar1;
  undefined *puVar2;
  undefined local_30 [12];
  void *pvStack_24;
  undefined **local_20;
  undefined4 uStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea5a8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0095d530(DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_4 = 0;
  if ((param_4 & 0x20) == 0) {
    puVar2 = (undefined *)FUN_008f8a00(9);
    if (local_30 != puVar2) {
      FUN_0083ea60(puVar2);
    }
  }
  else if ((param_4 & 2) == 0) {
    uVar1 = FUN_008ff080(&local_20,0x10);
    local_4._0_1_ = 3;
    puVar2 = (undefined *)FUN_0095d7e0(uVar1,100);
    local_4._0_1_ = 4;
    if (local_30 != puVar2) {
      FUN_0083ea60(puVar2);
    }
    local_4._0_1_ = 3;
    FUN_008f7630();
    local_4 = (uint)local_4._1_3_ << 8;
    local_20 = wxObject::vftable;
    FUN_0083e850();
  }
  else {
    uVar1 = FUN_008ff080(&local_20,0xd);
    local_4._0_1_ = 1;
    puVar2 = (undefined *)FUN_0095d7e0(uVar1,100);
    local_4._0_1_ = 2;
    if (local_30 != puVar2) {
      FUN_0083ea60(puVar2);
    }
    local_4._0_1_ = 1;
    FUN_008f7630();
    local_4 = (uint)local_4._1_3_ << 8;
    local_20 = wxObject::vftable;
    FUN_0083e850();
  }
  (**(code **)(**(int **)(param_2 + 8) + 0x60))(local_30);
  if (((param_4 & 0x10) == 0) || ((param_4 & 2) == 0)) {
    uVar1 = 0x24;
  }
  else {
    uVar1 = 0x1a;
  }
  uVar1 = FUN_008f8330(uVar1);
  (**(code **)(**(int **)(param_2 + 8) + 0x58))(uVar1);
  (**(code **)(**(int **)(param_2 + 8) + 0x150))(*param_1,param_1[1],param_1[2],param_1[3]);
  uStack_1c = 0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_24;
  return;
}



// WARNING: Type propagation algorithm not settling

void FUN_009ed3b0(undefined4 param_1,undefined **param_2,int *param_3,byte param_4,uint param_5,
                 int *param_6)

{
  int iVar1;
  char cVar2;
  undefined4 *puVar3;
  int *piVar4;
  uint uVar5;
  undefined *puVar6;
  int iVar7;
  int iVar8;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  int iVar9;
  uint local_f4;
  int local_f0;
  undefined **ppuStack_ec;
  undefined **ppuStack_e8;
  int iStack_e4;
  int *local_e0;
  int iStack_dc;
  undefined *apuStack_d8 [2];
  undefined **ppuStack_d0;
  int iStack_cc;
  int iStack_c8;
  int aiStack_c4 [2];
  undefined4 local_bc;
  undefined **ppuStack_b4;
  undefined auStack_b0 [16];
  undefined4 auStack_a0 [5];
  undefined4 uStack_8c;
  undefined **appuStack_7c [5];
  undefined **local_68;
  undefined auStack_58 [4];
  undefined **ppuStack_54;
  undefined auStack_40 [16];
  undefined4 uStack_30;
  undefined uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  undefined4 uStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bea653;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_f4;
  ExceptionList = &local_c;
  local_bc = param_1;
  local_e0 = param_6;
  local_f4 = 0;
  if ((param_4 & 0x20) != 0) {
    local_f0 = param_3[3] + -2 + param_3[1];
    if (param_6 == (int *)0x0) {
LAB_009ed44c:
      piVar4 = (int *)FUN_004561e7(0x66,0x66,0x66,0xff);
      local_f4 = 1;
    }
    else {
      piVar4 = param_6 + 5;
      cVar2 = (**(code **)(param_6[5] + 0x24))(DAT_0323f878 ^ (uint)&stack0xfffffefc);
      if (cVar2 == '\0') goto LAB_009ed44c;
    }
    FUN_00458700(piVar4);
    uStack_4 = 0;
    if ((local_f4 & 1) != 0) {
      local_f4 = local_f4 & 0xfffffffe;
      local_68 = wxObject::vftable;
      FUN_0083e850();
    }
    FUN_009566f0(&ppuStack_b4,3,100);
    uStack_4._0_1_ = 1;
    FUN_009563d0(0x84);
    (**(code **)(*(int *)param_2[2] + 0x58))(&ppuStack_e8);
    (**(code **)(*(int *)param_2[2] + 0x140))(*param_3,local_f4,param_3[2] + *param_3,local_f4);
    uStack_4 = (uint)uStack_4._1_3_ << 8;
    ppuStack_e8 = wxObject::vftable;
    FUN_0083e850();
    uStack_4 = 0xffffffff;
    ppuStack_b4 = wxObject::vftable;
    FUN_0083e850();
  }
  local_f0 = 0;
  if (param_5 != 0) {
    iStack_c8 = param_3[2];
    aiStack_c4[0] = param_3[3];
    iStack_cc = param_3[1] + (aiStack_c4[0] + -4) / 2;
    ppuStack_d0 = (undefined **)(*param_3 + -0xc + param_3[2]);
    local_f0 = 0xc;
    puVar3 = auStack_a0;
    iVar7 = 2;
    do {
      *puVar3 = 0;
      puVar3[1] = 0;
      puVar3 = puVar3 + 2;
      iVar7 = iVar7 + -1;
    } while (-1 < iVar7);
    auStack_a0[2] = 8;
    if ((param_5 & 1) == 0) {
      auStack_a0[0] = 0;
      auStack_a0[3] = 0;
      auStack_a0[4] = 4;
    }
    else {
      auStack_a0[0] = 4;
      auStack_a0[3] = 4;
      auStack_a0[4] = 0;
    }
    auStack_a0[1] = 0;
    uStack_8c = 4;
    if ((param_6 == (int *)0x0) || (cVar2 = (**(code **)(*param_6 + 0x24))(), cVar2 == '\0')) {
      param_6 = (int *)FUN_008ff080(appuStack_7c,0x10);
      local_f4 = local_f4 | 2;
    }
    FUN_00458700(param_6);
    uStack_4 = 2;
    if ((local_f4 & 2) != 0) {
      local_f4 = local_f4 & 0xfffffffd;
      appuStack_7c[0] = wxObject::vftable;
      FUN_0083e850();
    }
    FUN_009566f0(&ppuStack_b4,1,100);
    uStack_4._0_1_ = 3;
    FUN_0094d3c0(param_2,&ppuStack_e8);
    uStack_4._0_1_ = 5;
    ppuStack_e8 = wxObject::vftable;
    FUN_0083e850();
    FUN_0095d7e0(&ppuStack_b4,100);
    uStack_4._0_1_ = 6;
    FUN_009e3330(param_2,apuStack_d8);
    uStack_4._0_1_ = 8;
    FUN_008f7630();
    ppuStack_ec = param_2;
    (**(code **)(*(int *)param_2[2] + 0xb4))(*param_3,param_3[1],param_3[2],param_3[3]);
    uStack_14 = CONCAT31(uStack_14._1_3_,9);
    (**(code **)(*(int *)param_2[2] + 0x184))(3,auStack_b0,local_e0,iStack_dc,1);
    uStack_28 = 8;
    (**(code **)(*(int *)param_2[2] + 0xc0))();
    uStack_4._0_1_ = 5;
    FUN_009e1ff0();
    uStack_4 = CONCAT31(uStack_4._1_3_,2);
    FUN_0094bbb0();
    uStack_4 = 0xffffffff;
    ppuStack_b4 = wxObject::vftable;
    FUN_0083e850();
    param_6 = local_e0;
  }
  iVar7 = local_f0;
  apuStack_d8[0] = (undefined *)0x0;
  if (param_6 == (int *)0x0) goto LAB_009edb45;
  ppuStack_ec = (undefined **)(param_6 + 0x1a);
  cVar2 = (**(code **)(param_6[0x1a] + 0x10))();
  if (cVar2 != '\0') {
    apuStack_d8[0] = ppuStack_ec[1];
    if (apuStack_d8[0] != (undefined *)0x0) {
      apuStack_d8[0] = *(undefined **)(apuStack_d8[0] + 8);
    }
    if (ppuStack_ec[1] == (undefined *)0x0) {
      iVar7 = 0;
    }
    else {
      iVar7 = *(int *)(ppuStack_ec[1] + 0xc);
    }
    apuStack_d8[0] = apuStack_d8[0] + 2;
    iStack_dc = local_f0 + (int)apuStack_d8[0];
    local_f0 = *param_3 + 1;
    iVar7 = (param_3[3] - iVar7) / 2;
    if (iVar7 < 1) {
      iVar7 = 1;
    }
    ppuStack_ec = (undefined **)(iVar7 + param_3[1]);
    iVar7 = param_3[2] - iStack_dc;
    if ((local_e0[0xf] == 0) && (0 < iVar7)) {
      if (local_e0[0x1c] != 0x200) {
        if (local_e0[0x1c] != 0x900) goto LAB_009ed81c;
        iVar7 = iVar7 / 2;
      }
      local_f0 = local_f0 + iVar7;
    }
LAB_009ed81c:
    ppuStack_e8 = param_2;
    (**(code **)(*(int *)param_2[2] + 0xb4))(*param_3,param_3[1],param_3[2],param_3[3]);
    uStack_14 = 10;
    (**(code **)(*(int *)param_2[2] + 0x164))(local_f0 + 0x68,unaff_ESI,unaff_EBP,1);
    uStack_24 = 0xffffffff;
    (**(code **)(*(int *)param_2[2] + 0xc0))();
    iVar7 = iStack_dc;
    param_6 = local_e0;
  }
  if (param_6[0xf] == 0) goto LAB_009edb45;
  cVar2 = (**(code **)(param_6[0x13] + 0x10))();
  if (cVar2 == '\0') {
    piVar4 = (int *)FUN_0091e100(&ppuStack_e8);
    local_f4 = local_f4 | 4;
  }
  else {
    piVar4 = param_6 + 0x13;
  }
  iStack_cc = piVar4[1];
  if (iStack_cc != 0) {
    *(int *)(iStack_cc + 4) = *(int *)(iStack_cc + 4) + 1;
  }
  ppuStack_d0 = wxFont::vftable;
  uStack_4 = 0xb;
  if ((local_f4 & 4) != 0) {
    local_f4 = local_f4 & 0xfffffffb;
    FUN_00921450();
  }
  cVar2 = (**(code **)(param_6[0x15] + 0x24))();
  if (cVar2 == '\0') {
    piVar4 = (int *)FUN_0091df90(appuStack_7c);
    local_f4 = local_f4 | 8;
  }
  else {
    piVar4 = param_6 + 0x15;
  }
  FUN_00458700(piVar4);
  uStack_4._0_1_ = 0xc;
  if ((local_f4 & 8) != 0) {
    appuStack_7c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  uStack_1c = 7;
  uStack_20 = 0;
  uStack_30 = (uint)uStack_30._2_2_ << 0x10;
  FID_conflict_assign(param_6 + 10,0,0xffffffff);
  pvStack_18 = (void *)0x0;
  uStack_4 = CONCAT31(uStack_4._1_3_,0xd);
  (**(code **)(*(int *)param_2[2] + 0x50))(&ppuStack_d0);
  (**(code **)(*(int *)param_2[2] + 0x78))(auStack_58);
  iVar9 = 0x6a;
  (**(code **)(*(int *)param_2[2] + 0x70))();
  (**(code **)(*(int *)param_2[2] + 0xa4))(auStack_40,&stack0xffffff04,&ppuStack_e8,&iStack_cc,0,0);
  iVar8 = *param_3 + 5 + unaff_EBP;
  uVar5 = ((param_3[3] - unaff_ESI) - iStack_e4) / 2;
  iVar1 = param_3[1];
  iVar7 = param_3[2] - (iVar7 + 10);
  if (iVar7 < iVar9) {
    puVar6 = (undefined *)FUN_00938460(aiStack_c4,auStack_58,param_2,3,iVar7,0);
    uStack_28 = 0xe;
    if (auStack_58 != puVar6) {
      FID_conflict_assign(puVar6,0,0xffffffff);
    }
    uStack_28 = 0xd;
    FUN_0040159c();
    FUN_007b0d6d(&local_e0,auStack_58);
  }
  else {
    if (*(int *)(unaff_EDI + 0x70) == 0x200) {
      iVar7 = iVar7 - iVar9;
    }
    else {
      if (*(int *)(unaff_EDI + 0x70) != 0x900) goto LAB_009edaab;
      iVar7 = (iVar7 - iVar9) / 2;
    }
    iVar8 = iVar8 + iVar7;
  }
LAB_009edaab:
  (**(code **)(*(int *)param_2[2] + 0x168))(auStack_58,iVar8,iVar1 + (uVar5 & ((int)uVar5 < 0) - 1))
  ;
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_30);
  }
  uStack_1c = 7;
  uStack_20 = 0;
  uStack_30 = uStack_30 & 0xffff0000;
  uStack_4 = CONCAT31(uStack_4._1_3_,0xb);
  ppuStack_54 = wxObject::vftable;
  FUN_0083e850();
  uStack_4 = 0xffffffff;
  FUN_00921450();
LAB_009edb45:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int FUN_009edb80(int *param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  uint local_30;
  void *pvStack_2c;
  void *pvStack_24;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9388;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  local_34 = 0;
  local_3c = 0xe;
  local_38 = 0;
  if (param_1 == (int *)0x0) {
    return 0x14;
  }
  ExceptionList = &local_c;
  FUN_004325b6(&DAT_00d96f78);
  puVar3 = &local_38;
  puVar2 = &local_3c;
  local_4 = 0;
  (**(code **)(*param_1 + 600))(&local_30,&local_34,puVar2,puVar3,0,0);
  _free(pvStack_2c);
  if (7 < local_30) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uVar1);
  }
  ExceptionList = pvStack_24;
  return (int)puVar3 + 6 + (int)puVar2;
}



void __fastcall FUN_009edc60(undefined4 *param_1)

{
  undefined4 uVar1;
  
  *param_1 = DAT_03238d0c;
  param_1[1] = DAT_03238d10;
  param_1[2] = DAT_03238d0c;
  uVar1 = DAT_03238d10;
  param_1[4] = 0xffffffff;
  param_1[5] = 0xffffffff;
  param_1[3] = uVar1;
  param_1[6] = 0;
  param_1[7] = 0;
  return;
}



undefined4 * __thiscall FUN_009edca0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxHtmlRenderingStyle::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined ** FUN_009edcc0(void)

{
  return &PTR_u_wxHtmlLinkEvent_0323db60;
}



undefined ** FUN_009edcd0(void)

{
  return &PTR_u_wxHtmlCellEvent_0323db78;
}



void __thiscall FUN_009edce0(undefined4 *param_1_00,undefined4 param_1)

{
  *(undefined *)(param_1_00 + 1) = 0;
  param_1_00[2] = 0;
  param_1_00[3] = 0;
  *param_1_00 = wxHtmlWindowMouseHelper::vftable;
  param_1_00[4] = param_1;
  return;
}



void __fastcall FUN_009edd00(int param_1)

{
  *(undefined *)(param_1 + 4) = 1;
  return;
}



int FUN_009edd10(int param_1)

{
  int in_EAX;
  
  if (in_EAX <= param_1) {
    return 0;
  }
  return (int)(in_EAX + 0xf + (in_EAX + 0xf >> 0x1f & 0xfU)) >> 4;
}



void __fastcall FUN_009edd30(undefined4 *param_1)

{
  *param_1 = wxHtmlRenderingStyle::vftable;
  return;
}



void __thiscall FUN_009edd50(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int unaff_ESI;
  int iStack_20;
  undefined auStack_14 [8];
  int local_c;
  int iStack_8;
  
  if (*(int **)(param_1_00 + 0x1f8) == (int *)0x0) {
    return;
  }
  iStack_20 = 1;
  local_c = param_1_00;
  iVar1 = (**(code **)(**(int **)(param_1_00 + 0x1f8) + 0x44))(*param_1,param_1[1]);
  if (iVar1 == 0) {
    return;
  }
  iVar2 = FUN_009f5680(&iStack_20,0);
  iVar2 = *(int *)(iVar2 + 4);
  iStack_8 = 0;
  iStack_20 = 0;
  iVar5 = *(int *)(iVar1 + 0x14) + iVar2;
  iVar3 = *(int *)(iVar1 + 8);
  if (*(int *)(iVar1 + 8) == 0) {
LAB_009edde0:
    iStack_20 = iVar1;
  }
  else {
    do {
      iVar4 = iVar3;
      iVar3 = FUN_009f5680(auStack_14,0);
      if ((*(int *)(iVar4 + 0x14) + *(int *)(iVar3 + 4) <= iVar2) || (iVar5 <= *(int *)(iVar3 + 4)))
      break;
      iVar3 = *(int *)(iVar4 + 8);
      iStack_20 = iVar4;
    } while (*(int *)(iVar4 + 8) != 0);
    if (iStack_20 == 0) goto LAB_009edde0;
  }
  iVar3 = (**(code **)(**(int **)(iVar1 + 0xc) + 0x1c))();
  if (iVar3 != 0) {
    do {
      if (iVar3 == iVar1) break;
      iVar4 = FUN_009f5680(auStack_14,0);
      if ((iVar2 < *(int *)(iVar3 + 0x14) + *(int *)(iVar4 + 4)) && (*(int *)(iVar4 + 4) < iVar5)) {
        if (iStack_8 == 0) {
          iStack_8 = iVar3;
        }
      }
      else {
        iStack_8 = 0;
      }
      iVar3 = *(int *)(iVar3 + 8);
    } while (iVar3 != 0);
    if (iStack_8 != 0) goto LAB_009ede3d;
  }
  iStack_8 = iVar1;
LAB_009ede3d:
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_ESI + 0x2a4));
}



undefined ** FUN_009eded0(void)

{
  return &PTR_u_wxHtmlWindow_0323dba8;
}



undefined ** FUN_009edee0(void)

{
  return &PTR_PTR_00d96fb0;
}



undefined * FUN_009edef0(void)

{
  return &DAT_032ea224;
}



void __fastcall FUN_009edf00(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009edf12. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + -0x1e0) + 0x344))();
  return;
}



void __fastcall FUN_009edf20(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009edf32. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + -0x1e0) + 0x348))();
  return;
}



void __fastcall FUN_009edf40(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009edf4e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + -0x1e0) + 0x34c))();
  return;
}



int __fastcall FUN_009edf50(int param_1)

{
  return param_1 + -0x1e0;
}



void __fastcall FUN_009edf60(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x009edf72. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + -0x1e0) + 0x17c))();
  return;
}



void __thiscall FUN_009edf80(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 0x94);
  if (iVar1 != -1) {
    if (*(int *)(param_1_00 + 0x98) != 0) {
      FUN_00933170(param_1,iVar1);
      return;
    }
    if (*(int *)(param_1_00 + 0x90) != 0) {
      (**(code **)(**(int **)(param_1_00 + 0x90) + 0x3b0))(param_1,iVar1);
    }
  }
  return;
}



undefined ** FUN_009edfd0(void)

{
  return &PTR_u_wxHtmlWinModule_0323dbc0;
}



void FUN_009edfe0(int *param_1)

{
  if (*param_1 != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*param_1);
  }
  return;
}



undefined4 * __fastcall FUN_009ee000(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea69b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = 0;
  FUN_00453f4b(uVar1);
  local_4 = 0;
  FUN_00453f4b();
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_009ee060(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bea69b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  *(undefined ***)(param_1 + 0x18) = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4 = 0xffffffff;
  *(undefined ***)(param_1 + 4) = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009ee0d0(int param_1_00,undefined4 param_1)

{
  FUN_0092b180(param_1_00 + 0x60);
  return param_1;
}



undefined4 * __thiscall
FUN_009ee0f0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  FUN_00454099();
  param_1_00[0x11] = param_1;
  param_1_00[0x14] = param_4;
  *param_1_00 = wxHtmlWinAutoScrollTimer::vftable;
  param_1_00[0x12] = param_2;
  param_1_00[0x13] = param_3;
  return param_1_00;
}



void __fastcall FUN_009ee120(int *param_1)

{
  int *piVar1;
  int *piVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  undefined *puVar6;
  undefined auStack_8c [8];
  undefined local_84 [8];
  int local_7c;
  undefined **ppuStack_64;
  undefined auStack_60 [8];
  int iStack_58;
  int iStack_34;
  int iStack_30;
  undefined auStack_2c [4];
  undefined auStack_28 [12];
  void *pvStack_1c;
  uint uStack_14;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bea6d3;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff70;
  ExceptionList = &local_c;
  iVar5 = FUN_009116e0(uVar4);
  if (iVar5 != param_1[0x11]) {
    (**(code **)(*param_1 + 0x54))();
    ExceptionList = local_c;
    return;
  }
  FUN_0092b080(param_1[0x12],param_1[0x13],param_1[0x14]);
  local_7c = param_1[0x11];
  puVar6 = local_84;
  local_4 = 0;
  cVar3 = (**(code **)(**(int **)(local_7c + 0x70) + 0x18))(puVar6);
  if (cVar3 == '\0') {
    (**(code **)(*param_1 + 0x54))();
  }
  else {
    FUN_0092b130(DAT_032bfe20);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
    FUN_0095dbf0(auStack_2c,auStack_28);
    piVar1 = (int *)param_1[0x11];
    for (piVar2 = (int *)((int *)param_1[0x11])[0x11]; piVar2 != (int *)0x0;
        piVar2 = (int *)piVar2[0x11]) {
      piVar1 = piVar2;
    }
    (**(code **)(*piVar1 + 0x270))(&stack0xffffff70,auStack_8c);
    iStack_58 = param_1[0x11];
    iStack_30 = iStack_30 - uVar4;
    iStack_34 = iStack_34 - (int)puVar6;
    (**(code **)(**(int **)(iStack_58 + 0x70) + 0x18))(auStack_60);
    uStack_14 = uStack_14 & 0xffffff00;
    ppuStack_64 = wxObject::vftable;
    FUN_0083e850();
  }
  uStack_14 = 0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_1c;
  return;
}



uint __thiscall FUN_009ee290(int *param_1_00,int *param_1,int *param_2)

{
  uint in_EAX;
  int iVar1;
  int *piVar2;
  uint uVar3;
  undefined4 unaff_retaddr;
  
  if (param_1 == (int *)0x0) {
    return in_EAX & 0xffffff00;
  }
  iVar1 = (**(code **)(*param_1 + 0x44))(*param_2,param_2[1],1);
  if (iVar1 == 0) {
    return 0;
  }
  piVar2 = (int *)FUN_009f5680(&stack0xffffffec,param_1);
  uVar3 = (**(code **)(*param_1_00 + 8))
                    (iVar1,*param_2 - *piVar2,param_2[1] - piVar2[1],unaff_retaddr);
  return uVar3;
}



void FUN_009ee310(void)

{
  int iVar1;
  
  iVar1 = DAT_032ea218;
  if (DAT_032ea1f0 != (int *)0x0) {
    (**(code **)(*DAT_032ea1f0 + 4))(1);
    DAT_032ea1f0 = (int *)0x0;
    iVar1 = DAT_032ea218;
  }
  for (; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if (*(int **)(iVar1 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
    }
  }
  FUN_0086b130();
  if (DAT_032ea1f4 != (undefined4 *)0x0) {
    for (iVar1 = DAT_032ea1f4[3]; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
      if (*(int **)(iVar1 + 8) != (int *)0x0) {
        (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
      }
    }
    FUN_0086b130();
    if (DAT_032ea1f4 != (undefined4 *)0x0) {
      (**(code **)*DAT_032ea1f4)(1);
      DAT_032ea1f4 = (undefined4 *)0x0;
    }
  }
  if (DAT_032ea1f8 != (int *)0x0) {
    (**(code **)(*DAT_032ea1f8 + 4))(1);
    DAT_032ea1f8 = (int *)0x0;
  }
  if (DAT_032ea1fc != (int *)0x0) {
    (**(code **)(*DAT_032ea1fc + 4))(1);
    DAT_032ea1fc = (int *)0x0;
  }
  return;
}



void __fastcall FUN_009ee400(int *param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  code *pcVar5;
  int iVar6;
  int unaff_EBP;
  int unaff_ESI;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined local_1c [4];
  undefined local_18 [4];
  undefined4 *local_14;
  undefined local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bea708;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar6 = DAT_032ea360 + 1;
  local_14 = &DAT_032ea360;
  local_10 = DAT_032ea360 != 0;
  local_4 = 0;
  DAT_032ea360 = iVar6;
  if ((bool)local_10) {
    local_4 = 0xffffffff;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar6 < 1)) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/recguard.h",0x26,
                   "wxRecursionGuard::~wxRecursionGuard","m_flag > 0",
                   L"unbalanced wxRecursionGuards!?");
    }
    DAT_032ea360 = DAT_032ea360 + -1;
    ExceptionList = local_c;
    return;
  }
  if (param_1[0x7e] == 0) goto LAB_009ee67d;
  (**(code **)(*param_1 + 0x27c))(local_1c,local_18,DAT_0323f878 ^ (uint)&stack0xffffffd4);
  iVar6 = FUN_008fedb0(0x1c,0);
  iVar4 = FUN_008fedb0(0x1b,0);
  FUN_0091b8a0(4);
  cVar3 = FUN_0091b8a0(8);
  if (cVar3 != '\0') {
    unaff_EBP = unaff_EBP + iVar6;
  }
  if (((uint)param_1[0x38] >> 1 & 1) != 0) {
    uVar8 = 0;
    (**(code **)(param_1[0x5e] + 4))(1,1,0,0,0,0,0);
    (**(code **)(*(int *)param_1[0x7e] + 0x24))(uVar8);
    goto LAB_009ee67d;
  }
  (**(code **)(*(int *)param_1[0x7e] + 0x24))(unaff_EBP - iVar6);
  piVar1 = (int *)param_1[0x7e];
  if (unaff_ESI < piVar1[4]) {
    unaff_EBP = unaff_EBP - iVar4;
  }
  if (piVar1[5] <= unaff_EBP) {
    if (unaff_ESI - iVar6 < piVar1[4]) {
      iVar6 = piVar1[4] + 0xf;
      iVar6 = (int)(iVar6 + (iVar6 >> 0x1f & 0xfU)) >> 4;
    }
    else {
      iVar6 = 0;
    }
    uVar8 = 0;
    (**(code **)(param_1[0x5e] + 4))(0x10,0x10,iVar6,0,0,0,0);
    (**(code **)(*(int *)param_1[0x7e] + 0x24))(uVar8);
    goto LAB_009ee67d;
  }
  if (unaff_EBP + 0x3c < piVar1[5]) {
LAB_009ee626:
    iVar4 = *(int *)(param_1[0x7e] + 0x14);
    if (unaff_EBP < iVar4) {
      iVar4 = iVar4 + 0xf;
      iVar4 = (int)(iVar4 + (iVar4 >> 0x1f & 0xfU)) >> 4;
    }
    else {
      iVar4 = 0;
    }
    iVar2 = *(int *)(param_1[0x7e] + 0x10);
    if (unaff_ESI - iVar6 < iVar2) {
      iVar2 = iVar2 + 0xf;
      iVar6 = (int)(iVar2 + (iVar2 >> 0x1f & 0xfU)) >> 4;
    }
    else {
      iVar6 = 0;
    }
    uVar9 = 0;
    uVar7 = 0;
    uVar8 = 0;
    pcVar5 = *(code **)(param_1[0x5e] + 4);
  }
  else {
    (**(code **)(*piVar1 + 0x24))(unaff_ESI);
    if (unaff_EBP < ((int *)param_1[0x7e])[5]) {
      (**(code **)(*(int *)param_1[0x7e] + 0x24))(unaff_ESI - iVar6);
      goto LAB_009ee626;
    }
    uVar9 = 0;
    uVar7 = 0;
    uVar8 = 0;
    iVar2 = param_1[0x5e];
    iVar4 = 0;
    iVar6 = FUN_009edd10(unaff_ESI,0,0,0,0);
    pcVar5 = *(code **)(iVar2 + 4);
  }
  (*pcVar5)(0x10,0x10,iVar6,iVar4,uVar8,uVar7,uVar9);
LAB_009ee67d:
  local_4 = 0xffffffff;
  FUN_00840d70();
  ExceptionList = local_c;
  return;
}



void FUN_009ee6b0(undefined4 param_1)

{
  FUN_0086ad60(param_1);
  return;
}



void __thiscall FUN_009ee6c0(int *param_1,int param_2)

{
  undefined **ppuVar1;
  char cVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int iStack_34;
  int aiStack_30 [2];
  int iStack_28;
  undefined **ppuStack_24;
  undefined auStack_20 [20];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bea740;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar2 = (**(code **)(param_1[0xb1] + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffbc);
  if ((cVar2 == '\0') || (iVar3 = FUN_008f25d0(), iVar3 != 0)) {
    uVar4 = FUN_0091de40(auStack_20);
    uStack_4 = 0;
    FUN_0095d7e0(uVar4,100);
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    (**(code **)(**(int **)(param_2 + 8) + 0x68))(aiStack_30);
    puStack_8 = (undefined *)((uint)puStack_8 & 0xffffff00);
    FUN_008f7630();
    puStack_8 = (undefined *)0xffffffff;
    ppuStack_24 = wxObject::vftable;
    FUN_0083e850();
    (**(code **)(**(int **)(param_2 + 8) + 0xb0))();
  }
  cVar2 = (**(code **)(param_1[0xb1] + 0x10))();
  if (cVar2 != '\0') {
    (**(code **)(*param_1 + 0x27c))(&iStack_28,&ppuStack_24);
    ppuVar1 = ppuStack_24;
    iVar3 = param_1[0xb2];
    if (iVar3 == 0) {
      iStack_34 = 0;
      aiStack_30[0] = 0;
    }
    else {
      iStack_34 = *(int *)(iVar3 + 0xc);
      aiStack_30[0] = *(int *)(iVar3 + 8);
    }
    iVar3 = 0;
    if (0 < iStack_28) {
      do {
        iVar5 = 0;
        if (0 < (int)ppuVar1) {
          do {
            (**(code **)(**(int **)(param_2 + 8) + 0x164))(param_1 + 0xb1,iVar3,iVar5,1);
            iVar5 = iVar5 + iStack_34;
          } while (iVar5 < (int)ppuVar1);
        }
        iVar3 = iVar3 + aiStack_30[0];
      } while (iVar3 < iStack_28);
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_009ee820(void)

{
  FUN_009ee060();
  return;
}



void __fastcall FUN_009ee830(int *param_1)

{
  code *pcVar1;
  
  if (*(char *)(param_1 + 0xaa) != '\0') {
    *(undefined *)(param_1 + 0xaa) = 0;
    if (param_1[0xa9] != 0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_1[0xa9]);
    }
    pcVar1 = *(code **)(*param_1 + 0x15c);
    param_1[0xb5] = 0;
    (*pcVar1)(1,0);
  }
  return;
}



void __thiscall FUN_009ee880(int param_1_00,int param_1)

{
  int unaff_retaddr;
  
  if (*(int *)(param_1_00 + 0x2b8) == 0) {
    *(undefined *)(param_1 + 0x24) = 1;
    return;
  }
  if (*(int **)(param_1_00 + 0x2b8) != (int *)0x0) {
    (**(code **)(**(int **)(param_1_00 + 0x2b8) + 4))(1);
    *(undefined4 *)(param_1_00 + 0x2b8) = 0;
    *(undefined *)(unaff_retaddr + 0x24) = 1;
    return;
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



void __thiscall FUN_009ee8d0(int *param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int *piVar4;
  void *pvVar5;
  undefined4 *puVar6;
  undefined4 uVar7;
  int iVar8;
  int local_1c;
  int local_18;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea76b;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  *(undefined *)(param_1 + 0x24) = 1;
  piVar4 = (int *)FUN_009116e0(uVar3);
  if (piVar4 == param_1_00) {
    iVar8 = *(int *)(param_1 + 0x30);
    iVar1 = *(int *)(param_1 + 0x2c);
    if (iVar1 < 0) {
      uVar7 = 4;
      iVar8 = 0;
    }
    else if (iVar8 < 0) {
      uVar7 = 8;
      iVar8 = 0;
    }
    else {
      FUN_0043d8d2(&local_1c);
      if (local_1c < iVar1) {
        uVar7 = 4;
        (**(code **)(*param_1_00 + 0xb8))(&local_1c);
      }
      else {
        if (iVar8 <= local_18) {
          ExceptionList = local_c;
          return;
        }
        uVar7 = 8;
        iVar8 = FUN_0091af30(local_14);
        local_1c = *(int *)(iVar8 + 4);
      }
      iVar8 = (int)(local_1c + (local_1c >> 0x1f & 0xfU)) >> 4;
    }
    cVar2 = FUN_0091b8a0(uVar7);
    if (cVar2 != '\0') {
      if ((int *)param_1_00[0xae] != (int *)0x0) {
        (**(code **)(*(int *)param_1_00[0xae] + 4))(1);
      }
      pvVar5 = operator_new(0x54);
      local_4 = 0;
      if (pvVar5 == (void *)0x0) {
        piVar4 = (int *)0x0;
      }
      else {
        puVar6 = &DAT_032bfeb8;
        if (iVar8 != 0) {
          puVar6 = &DAT_032bfebc;
        }
        piVar4 = (int *)FUN_009ee0f0(param_1_00,*puVar6,iVar8,uVar7);
      }
      param_1_00[0xae] = (int)piVar4;
      local_4 = 0xffffffff;
      (**(code **)(*piVar4 + 0x50))(0x32,0);
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009eea10(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  if ((*(int **)(param_1_00 + 0x1f8) != (int *)0x0) &&
     (iVar1 = (**(code **)(**(int **)(param_1_00 + 0x1f8) + 0x44))(*param_1,param_1[1],1),
     iVar1 != 0)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0x2a4));
  }
  return;
}



undefined4 * FUN_009eeaf0(undefined4 *param_1,undefined4 param_2,undefined4 *param_3)

{
  param_1[1] = 0;
  *param_1 = 0;
  FUN_0093be00(*param_3,param_3[1],param_1,param_1 + 1);
  return param_1;
}



undefined4 FUN_009eeb20(undefined4 param_1)

{
  FUN_0091de40(param_1);
  return param_1;
}



void thunk_FUN_009ee310(void)

{
  int iVar1;
  
  iVar1 = DAT_032ea218;
  if (DAT_032ea1f0 != (int *)0x0) {
    (**(code **)(*DAT_032ea1f0 + 4))(1);
    DAT_032ea1f0 = (int *)0x0;
    iVar1 = DAT_032ea218;
  }
  for (; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    if (*(int **)(iVar1 + 8) != (int *)0x0) {
      (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
    }
  }
  FUN_0086b130();
  if (DAT_032ea1f4 != (undefined4 *)0x0) {
    for (iVar1 = DAT_032ea1f4[3]; iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
      if (*(int **)(iVar1 + 8) != (int *)0x0) {
        (**(code **)(**(int **)(iVar1 + 8) + 4))(1);
      }
    }
    FUN_0086b130();
    if (DAT_032ea1f4 != (undefined4 *)0x0) {
      (**(code **)*DAT_032ea1f4)(1);
      DAT_032ea1f4 = (undefined4 *)0x0;
    }
  }
  if (DAT_032ea1f8 != (int *)0x0) {
    (**(code **)(*DAT_032ea1f8 + 4))(1);
    DAT_032ea1f8 = (int *)0x0;
  }
  if (DAT_032ea1fc != (int *)0x0) {
    (**(code **)(*DAT_032ea1fc + 4))(1);
    DAT_032ea1fc = (int *)0x0;
  }
  return;
}



undefined4 * FUN_009eeb60(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHtmlWinModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __thiscall FUN_009eebc0(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxClipboardTextEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void __fastcall FUN_009eec10(int *param_1)

{
  int *piVar1;
  char cVar2;
  undefined4 uVar3;
  undefined4 unaff_EBP;
  int unaff_ESI;
  undefined4 unaff_EDI;
  int **ppiVar4;
  undefined **ppuStack_c8;
  undefined ***pppuStack_c4;
  int *piStack_c0;
  uint uStack_bc;
  undefined *puStack_a8;
  undefined **ppuStack_a4;
  int *local_9c [2];
  int iStack_94;
  undefined local_90 [12];
  undefined *puStack_84;
  undefined **local_80 [2];
  int *piStack_78;
  undefined **ppuStack_6c;
  int iStack_64;
  undefined ***pppuStack_60;
  int **ppiStack_58;
  undefined uStack_28;
  undefined uStack_18;
  undefined uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea7c1;
  local_c = ExceptionList;
  uStack_bc = DAT_0323f878 ^ (uint)&stack0xffffff48;
  ExceptionList = &local_c;
  pppuStack_c4 = (undefined ***)0x9eec49;
  piStack_c0 = param_1;
  FUN_0094be80();
  local_4 = 0;
  if ((param_1[0xb6] < 1) && (param_1[0x7e] != 0)) {
    piStack_c0 = (int *)local_90;
    pppuStack_c4 = local_80;
    ppuStack_c8 = (undefined **)0x9eec85;
    (**(code **)(param_1[0x5e] + 0x24))();
    ppuStack_c8 = &puStack_84;
    FUN_0091adc0();
    ppuStack_c8 = &puStack_a8;
    (**(code **)(*param_1 + 0x27c))(&stack0xffffff50);
    FUN_0094bd80();
    uStack_14 = 1;
    cVar2 = (**(code **)(*param_1 + 0x16c))();
    if (cVar2 == '\0') {
      cVar2 = (**(code **)(param_1[0xaf] + 0x10))();
      if (cVar2 == '\0') {
        (**(code **)(param_1[0xaf] + 0x3c))(unaff_EDI,unaff_EBP,0xffffffff);
      }
      FUN_0094c840(param_1 + 0xaf);
      ppiVar4 = local_9c;
    }
    else {
      ppiVar4 = (int **)&stack0xffffff54;
    }
    (**(code **)(*param_1 + 0x168))(ppiVar4);
    FUN_00845a20(param_1[0x10],DAT_032bff20);
    local_80[0] = wxEraseEvent::vftable;
    uStack_18 = 2;
    piStack_78 = param_1;
    ppiStack_58 = ppiVar4;
    cVar2 = (**(code **)(*(int *)param_1[0x1c] + 0x18))(local_80);
    if (cVar2 == '\0') {
      FUN_009ee6c0(ppiVar4);
    }
    (**(code **)(*ppiVar4[2] + 0xe4))(1);
    (**(code **)(*ppiVar4[2] + 0x70))(0x6a);
    uVar3 = (**(code **)(*param_1 + 100))();
    (**(code **)(*ppiVar4[2] + 0x30))(uVar3);
    iStack_64 = 0;
    pppuStack_60 = (undefined ***)0x0;
    FUN_009ee000();
    piVar1 = local_9c[0];
    ppuStack_c8 = wxDefaultHtmlRenderingStyle::vftable;
    iStack_64 = param_1[0xa9];
    pppuStack_60 = &ppuStack_c8;
    uStack_28 = 4;
    (**(code **)(*(int *)param_1[0x7e] + 0x28))
              (ppiVar4,0,0,local_9c[0] + unaff_ESI * 4,
               unaff_ESI * 0x10 + iStack_94 + -1 + (int)local_9c[0],&iStack_64);
    if (ppiVar4 != local_9c) {
      piStack_c0 = (int *)0x0;
      pppuStack_c4 = (undefined ***)0x0;
      ppuStack_c8 = (undefined **)0x9eee15;
      (**(code **)(*ppiVar4[2] + 0x104))();
      ppuStack_c8 = (undefined **)0xffffffff;
      (**(code **)(*local_9c[0] + 0x170))
                (0,piVar1,unaff_EBP,iStack_94,ppiVar4,0,piVar1,5,0,0xffffffff);
    }
    ppuStack_a4 = wxHtmlRenderingStyle::vftable;
    local_4._0_1_ = 2;
    piStack_c0 = (int *)0x9eee54;
    FUN_009ee060();
    local_4._0_1_ = 1;
    ppuStack_6c = wxObject::vftable;
    piStack_c0 = (int *)0x9eee6d;
    FUN_0083e850();
    local_4 = (uint)local_4._1_3_ << 8;
    piStack_c0 = (int *)0x9eee7e;
    FUN_00457221();
  }
  local_4 = 0xffffffff;
  piStack_c0 = (int *)0x9eee92;
  FUN_00457221();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009eef20(int param_1_00,int param_1)

{
  if (param_1_00 + 0xe4 != param_1) {
    FUN_0083ea60();
    return;
  }
  return;
}



undefined4 * FUN_009eef40(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxClipboardTextEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void FUN_009eefb0(undefined4 *param_1,int param_2)

{
  int iVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea806;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 == 1) {
    iVar1 = DAT_032ea1f8;
    if (DAT_032ea1f8 == 0) {
      pvVar2 = operator_new(8);
      local_4 = 0;
      if (pvVar2 == (void *)0x0) {
        iVar1 = 0;
        DAT_032ea1f8 = iVar1;
      }
      else {
        iVar1 = FUN_008f7ad0(6);
        DAT_032ea1f8 = iVar1;
      }
    }
  }
  else if (param_2 == 2) {
    iVar1 = DAT_032ea1fc;
    if (DAT_032ea1fc == 0) {
      pvVar2 = operator_new(8);
      local_4 = 1;
      if (pvVar2 == (void *)0x0) {
        iVar1 = 0;
        DAT_032ea1fc = 0;
      }
      else {
        iVar1 = FUN_008f7ad0(7);
        DAT_032ea1fc = iVar1;
      }
    }
  }
  else {
    iVar1 = FUN_008f7b30(0x15,DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  iVar1 = *(int *)(iVar1 + 4);
  *param_1 = wxObject::vftable;
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1 = wxCursor::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 FUN_009ef0a0(undefined4 param_1,undefined4 param_2)

{
  FUN_009eefb0(param_1,param_2);
  return param_1;
}



undefined4 * __fastcall FUN_009ef0d0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea838;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032bd44c,0);
  *param_1 = wxHtmlCellEvent::vftable;
  local_4 = 0;
  FUN_0092b130(DAT_032bd44c);
  param_1[0x2a] = 0;
  param_1[0x2b] = 0;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall
FUN_009ef150(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 *param_4,undefined4 *param_5)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea873;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0092bd60(param_1,param_2);
  *param_1_00 = wxHtmlCellEvent::vftable;
  local_4 = 0;
  FUN_0092b130(DAT_032bd44c);
  param_1_00[0x2a] = 0;
  param_1_00[0x2b] = 0;
  param_1_00[0x17] = param_3;
  param_1_00[0x2a] = *param_4;
  local_4 = CONCAT31(local_4._1_3_,1);
  param_1_00[0x2b] = param_4[1];
  if (param_5 != param_1_00 + 0x18) {
    FUN_0092abc0(param_5);
  }
  *(undefined *)(param_1_00 + 0x2c) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009ef210(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bea838;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  param_1[0x18] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4 = 0xffffffff;
  _free((void *)param_1[0x11]);
  if (7 < (uint)param_1[0x10]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xb]);
  }
  param_1[0x10] = 7;
  param_1[0xf] = 0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850(uVar1);
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009ef2b0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bea838;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008f2ca0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  _free((void *)param_1[0x11]);
  if (7 < (uint)param_1[0x10]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xb]);
  }
  param_1[0x10] = 7;
  param_1[0xf] = 0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0xb4);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009ef0d0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall
FUN_009ef3b0(int param_1_00,int *param_1,undefined4 param_2,undefined **param_3,undefined4 param_4)

{
  char cVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 auStack_11c [2];
  undefined4 local_114;
  undefined **local_110 [19];
  undefined auStack_c4 [168];
  undefined4 uStack_1c;
  void *local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bea8a6;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)auStack_11c);
  ExceptionList = &local_c;
  local_110[0] = param_3;
  local_114 = param_2;
  iVar2 = (**(code **)(**(int **)(param_1_00 + 0x10) + 0x14))(DAT_0323f878 ^ (uint)&stack0xfffffed8)
  ;
  FUN_009ef150(DAT_032ea200,*(undefined4 *)(iVar2 + 0x40),param_1,&local_114,param_4);
  uStack_4 = 0;
  iVar2 = (**(code **)(**(int **)(param_1_00 + 0x10) + 0x14))();
  cVar1 = (**(code **)(**(int **)(iVar2 + 0x70) + 0x18))(auStack_c4);
  if (cVar1 == '\0') {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == (int *)0x0)) {
      FUN_00840480("..\\..\\src\\html\\htmlwin.cpp",0xfb,"wxHtmlWindowMouseHelper::OnCellClicked",
                   &DAT_00d97194,L"can\'t be called with NULL cell");
    }
    uVar3 = FUN_009ee0d0(local_110);
    auStack_11c[0] = uStack_1c;
    uStack_8._0_1_ = 1;
    (**(code **)(*param_1 + 0x34))(*(undefined4 *)(param_1_00 + 0x10),&stack0xfffffee0,uVar3);
    uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
    local_110[0] = wxObject::vftable;
    FUN_0083e850();
  }
  uStack_8 = (undefined *)0xffffffff;
  FUN_009ef210();
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_009ef530(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 local_114;
  undefined4 local_110;
  undefined **local_10c;
  undefined auStack_c4 [180];
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea8f6;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&local_114);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffee4;
  ExceptionList = &local_c;
  uVar2 = FUN_0092b130(DAT_032bd44c);
  local_114 = param_2;
  local_110 = param_3;
  local_4 = 0;
  iVar3 = (**(code **)(**(int **)(param_1_00 + 0x10) + 0x14))(uVar1);
  FUN_009ef150(DAT_032ea204,*(undefined4 *)(iVar3 + 0x40),param_1,&local_114,uVar2);
  local_4 = CONCAT31(local_4._1_3_,2);
  local_10c = wxObject::vftable;
  FUN_0083e850();
  iVar3 = (**(code **)(**(int **)(param_1_00 + 0x10) + 0x14))();
  (**(code **)(**(int **)(iVar3 + 0x70) + 0x18))(auStack_c4);
  puStack_8 = (undefined *)0xffffffff;
  FUN_009ef210();
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009ef640(int param_1_00,int param_1)

{
  uint uVar1;
  undefined **local_6c [2];
  int local_64;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea938;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  if ((((~(byte)(*(uint *)(param_1_00 + 0xe0) >> 3) & 1) != 0) && (*(int *)(param_1 + 0x34) == 0x43)
      ) && ((*(byte *)(param_1 + 0x28) & 1) != 0)) {
    FUN_0092bd60(DAT_032bff64,*(undefined4 *)(param_1_00 + 0x40));
    local_6c[0] = wxClipboardTextEvent::vftable;
    local_4 = 0;
    local_64 = param_1_00;
    (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_6c,uVar1);
    local_4 = 0xffffffff;
    FUN_00a1f4e0();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_009ef700(undefined4 param_1_00,byte param_1)

{
  FUN_009ef210();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_009ef720(int param_1_00,uint param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  
  if (*(uint *)(param_1_00 + 4) <= param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\html\\htmlwin.cpp",0x96,"wxHtmlHistoryArray::RemoveAt",
                   "uiIndex < size()",L"bad index in wxHtmlHistoryArray::RemoveAt()");
    }
    return;
  }
  uVar3 = 0;
  if (param_2 != 0) {
    iVar2 = param_1 * 4;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar3 + param_1))
      {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1_00 + 8) + iVar2);
      if (iVar1 != 0) {
        FUN_009c09f0();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar3 = uVar3 + 1;
      iVar2 = iVar2 + 4;
    } while (uVar3 < param_2);
  }
  iVar1 = *(int *)(param_1_00 + 8);
  iVar2 = iVar1 + param_1 * 4;
  FUN_0086a1e0(iVar2 - iVar1 >> 2,(int)(((param_1 + param_2) * 4 - iVar2) + iVar1) >> 2);
  return;
}



int __thiscall FUN_009ef800(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 8,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



undefined4 * __fastcall FUN_009ef840(undefined4 *param_1)

{
  short sVar1;
  uint uVar2;
  short *psVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bea97e;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  param_1[1] = 0;
  *param_1 = wxHtmlLinkInfo::vftable;
  param_1[8] = 7;
  param_1[7] = 0;
  *(undefined2 *)(param_1 + 3) = 0;
  param_1[9] = 0;
  param_1[0x11] = 7;
  param_1[0x10] = 0;
  *(undefined2 *)(param_1 + 0xc) = 0;
  param_1[0x12] = 0;
  local_4 = 2;
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    FUN_00432156(uVar2);
  }
  else {
    psVar3 = (short *)PTR_DAT_03236318;
    do {
      sVar1 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(PTR_DAT_03236318,(int)psVar3 - (int)(PTR_DAT_03236318 + 2) >> 1);
  }
  if (param_1 + 2 != param_1 + 0xb) {
    FID_conflict_assign(param_1 + 0xb,0,0xffffffff);
  }
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_009ef910(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdcd18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0048a2df(param_1);
  *param_1_00 = wxHtmlCellEvent::vftable;
  local_4 = 0;
  param_1_00[0x17] = *(undefined4 *)(param_1 + 0x5c);
  FUN_0092b180(param_1 + 0x60);
  param_1_00[0x2a] = *(undefined4 *)(param_1 + 0xa8);
  param_1_00[0x2b] = *(undefined4 *)(param_1 + 0xac);
  *(undefined *)(param_1_00 + 0x2c) = *(undefined *)(param_1 + 0xb0);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __fastcall FUN_009ef9a0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea838;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032bd44c,0);
  local_4 = 0;
  *param_1 = wxHtmlLinkEvent::vftable;
  FUN_009ef840(uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_009efa00(undefined4 param_1_00,byte param_1)

{
  FUN_009ef2b0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009efa20(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bea9be;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxHtmlLinkInfo::vftable;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  param_1_00[9] = 0;
  param_1_00[0x11] = 7;
  param_1_00[0x10] = 0;
  *(undefined2 *)(param_1_00 + 0xc) = 0;
  param_1_00[0x12] = 0;
  local_4 = 2;
  if (param_1_00 + 2 != (undefined4 *)(param_1 + 8)) {
    FID_conflict_assign((undefined4 *)(param_1 + 8),0,0xffffffff);
  }
  if (param_1_00 + 0xb != (undefined4 *)(param_1 + 0x2c)) {
    FID_conflict_assign((undefined4 *)(param_1 + 0x2c),0,0xffffffff);
  }
  param_1_00[0x14] = *(undefined4 *)(param_1 + 0x50);
  param_1_00[0x15] = *(undefined4 *)(param_1 + 0x54);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_009efae0(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea9f3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032ea208,param_1);
  local_4 = 0;
  *param_1_00 = wxHtmlLinkEvent::vftable;
  FUN_009ef840(uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  if (param_1_00 + 0x19 != (undefined4 *)(param_2 + 8)) {
    FID_conflict_assign((undefined4 *)(param_2 + 8),0,0xffffffff);
  }
  if (param_1_00 + 0x22 != (undefined4 *)(param_2 + 0x2c)) {
    FID_conflict_assign((undefined4 *)(param_2 + 0x2c),0,0xffffffff);
  }
  param_1_00[0x2b] = *(undefined4 *)(param_2 + 0x50);
  param_1_00[0x2c] = *(undefined4 *)(param_2 + 0x54);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_009efb90(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bdcd18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0048a2df(param_1);
  local_4 = 0;
  *param_1_00 = wxHtmlLinkEvent::vftable;
  FUN_009efa20(param_1 + 0x5c);
  ExceptionList = local_c;
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0xb4);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009ef9a0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



int __thiscall FUN_009efc70(int param_1_00,int param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beaa23;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x3c) = 7;
  *(undefined4 *)(param_1_00 + 0x38) = 0;
  *(undefined2 *)(param_1_00 + 0x28) = 0;
  *(undefined4 *)(param_1_00 + 0x40) = 0;
  local_4 = 1;
  if (param_1_00 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  if (param_1_00 + 0x24 != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  *(undefined4 *)(param_1_00 + 0x48) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009efd10(int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = *(uint *)(param_1 + 4);
  if (uVar2 != 0) {
    uVar3 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar2 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1 + 8) + uVar3 * 4);
      if (iVar1 != 0) {
        FUN_009c09f0();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar2 = *(uint *)(param_1 + 4);
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  return;
}



void __thiscall FUN_009efd80(int *param_1_00,int *param_1,int *param_2)

{
  int *piVar1;
  int *piVar2;
  undefined *puVar3;
  undefined4 uVar4;
  undefined auStack_38 [8];
  undefined auStack_30 [36];
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  piVar2 = param_1;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00beaa68;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 == (int *)0x0) {
    piVar1 = (int *)0x0;
  }
  else {
    piVar1 = (int *)(**(code **)(*param_1 + 0x44))
                              (*param_2,param_2[1],1,DAT_0323f878 ^ (uint)&stack0xffffffb0);
  }
  if (piVar1 == (int *)param_1_00[3]) {
    if (piVar1 != (int *)0x0) {
      (**(code **)(*param_1_00 + 4))(piVar1,*param_2,param_2[1]);
    }
  }
  else {
    param_1 = (int *)0x0;
    if (piVar1 != (int *)0x0) {
      piVar2 = (int *)FUN_009f5680(auStack_38,piVar2);
      param_1 = (int *)(**(code **)(*piVar1 + 0x14))(*param_2 - *piVar2,param_2[1] - piVar2[1]);
    }
    FUN_009743d0();
    uStack_4 = 0;
    if (piVar1 == (int *)0x0) {
      puVar3 = (undefined *)(**(code **)(*(int *)param_1_00[4] + 0x28))(auStack_38,0);
      local_c = (void *)CONCAT31(local_c._1_3_,2);
    }
    else {
      puVar3 = (undefined *)(**(code **)(*piVar1 + 0x18))(auStack_38,(int *)param_1_00[4]);
      local_c = (void *)CONCAT31(local_c._1_3_,1);
    }
    if (&stack0xffffffb8 != puVar3) {
      FUN_0083ea60(puVar3);
    }
    local_c = (void *)((uint)local_c & 0xffffff00);
    FUN_008f7630();
    piVar2 = (int *)(**(code **)(*(int *)param_1_00[4] + 0x14))();
    (**(code **)(*piVar2 + 400))(&stack0xffffffb8);
    if (param_1 != (int *)param_1_00[2]) {
      if (param_1 == (int *)0x0) {
        FUN_004325b6(PTR_DAT_03236318);
        uStack_4 = CONCAT31(uStack_4._1_3_,4);
        (**(code **)(*(int *)param_1_00[4] + 0x24))(auStack_30);
      }
      else {
        uVar4 = FUN_004585c3(auStack_30);
        uStack_4 = CONCAT31(uStack_4._1_3_,3);
        (**(code **)(*(int *)param_1_00[4] + 0x24))(uVar4);
      }
      FUN_0040159c();
      param_1_00[2] = (int)param_1;
    }
    param_1_00[3] = (int)piVar1;
    uStack_4 = 0xffffffff;
    FUN_008f7630();
  }
  *(undefined *)(param_1_00 + 1) = 0;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009eff30(int param_1)

{
  short sVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  short *psVar5;
  short *psVar6;
  int iVar7;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beaab1;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x2d8) = 0;
  pvVar3 = operator_new(100);
  local_4 = 0;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_008633b0(uVar2);
  }
  *(undefined4 *)(param_1 + 0x26c) = uVar4;
  local_4 = 0xffffffff;
  *(undefined4 *)(param_1 + 0x274) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x278) = 0;
  *(undefined4 *)(param_1 + 0x270) = 0;
  psVar6 = &DAT_00d2629c;
  do {
    psVar5 = psVar6;
    psVar6 = psVar5 + 1;
  } while (*psVar5 != 0);
  FID_conflict_assign(&DAT_00d2629c,(int)(psVar5 + -0x69314e) >> 1);
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    FUN_00432156();
  }
  else {
    psVar6 = (short *)PTR_DAT_03236318;
    do {
      sVar1 = *psVar6;
      psVar6 = psVar6 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(PTR_DAT_03236318,(int)psVar6 - (int)(PTR_DAT_03236318 + 2) >> 1);
  }
  iVar7 = param_1 + 0x224;
  if (iVar7 != param_1 + 0x248) {
    FID_conflict_assign(param_1 + 0x248,0,0xffffffff);
  }
  if (param_1 + 0x200 != iVar7) {
    FID_conflict_assign(iVar7,0,0xffffffff);
  }
  *(undefined4 *)(param_1 + 0x1f8) = 0;
  pvVar3 = operator_new(0x1320);
  local_4 = 1;
  if (pvVar3 == (void *)0x0) {
    iVar7 = 0;
  }
  else {
    iVar7 = FUN_00a04200(param_1 + 0x1e0);
  }
  *(int *)(param_1 + 0x1fc) = iVar7;
  *(undefined4 *)(iVar7 + 0x40) = *(undefined4 *)(param_1 + 0x26c);
  local_4 = 0xffffffff;
  *(undefined4 *)(param_1 + 0x2e4) = 0xffffffff;
  *(undefined *)(param_1 + 0x2e8) = 1;
  pvVar3 = operator_new(0xc);
  local_4 = 2;
  if (pvVar3 == (void *)0x0) {
    pvVar3 = (void *)0x0;
  }
  else {
    FUN_0086a600();
  }
  *(void **)(param_1 + 0x2e0) = pvVar3;
  *(undefined4 *)(param_1 + 0x2dc) = 0;
  *(undefined4 *)(param_1 + 0x2a0) = 10;
  *(undefined4 *)(param_1 + 0x2a4) = 0;
  *(undefined *)(param_1 + 0x2a8) = 0;
  *(undefined4 *)(param_1 + 0x2b8) = 0;
  *(undefined4 *)(param_1 + 0x2b0) = 0;
  *(undefined4 *)(param_1 + 0x2b4) = 0;
  *(undefined4 *)(param_1 + 0x2d4) = 0;
  ExceptionList = local_c;
  return;
}



undefined __thiscall
FUN_009f0100(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,uint param_5,undefined4 param_6)

{
  char cVar1;
  uint uVar2;
  undefined4 unaff_ESI;
  uint uStack_20;
  void *pvStack_1c;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  cVar1 = FUN_0048a172(param_1,param_2,param_3,param_4,param_5 | 0xc0000000,param_6);
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  (**(code **)(*param_1_00 + 0x184))(2,uVar2);
  FUN_004325b6(L"<html><body></body></html>");
  puStack_8 = (undefined *)0x0;
  (**(code **)(*param_1_00 + 0x334))(&stack0xffffffcc);
  local_c = (void *)0xffffffff;
  _free(pvStack_1c);
  if (7 < uStack_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI);
  }
  FUN_0091b600(param_4);
  ExceptionList = pvStack_14;
  return 1;
}



void __fastcall FUN_009f0200(undefined **param_1)

{
  uint uVar1;
  int iVar2;
  uint *puVar3;
  int *piVar4;
  undefined4 uVar5;
  undefined *puVar6;
  int iVar7;
  int iVar8;
  void *local_5c;
  undefined auStack_58 [4];
  undefined4 uStack_54;
  undefined4 auStack_48 [2];
  uint uStack_40;
  void *pvStack_3c;
  uint local_34;
  void *local_30;
  void *pvStack_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00beaafb;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_5c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  local_30 = (void *)((uint)local_30 & 0xffff0000);
  local_1c = 7;
  local_20 = 0;
  FID_conflict_assign();
  local_18 = 0;
  local_4 = 0;
  if (param_1[0xa9] != (undefined *)0x0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xa9]);
  }
  puVar6 = param_1[0xb7];
  param_1[0xb5] = (undefined *)0x0;
  if ((puVar6 == (undefined *)0x0) && (DAT_032ea1f4 == 0)) {
LAB_009f03ad:
    local_5c = operator_new(0xc);
    local_4._0_1_ = 3;
    if (local_5c == (void *)0x0) {
      piVar4 = (int *)0x0;
    }
    else {
      piVar4 = (int *)FUN_0094bd30(param_1);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    (**(code **)(*(int *)piVar4[2] + 0xe4))(1);
    uVar5 = FUN_004561e7(0xff,0xff,0xff,0xff);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,4);
    (**(code **)(*param_1 + 0x17c))(uVar5);
    local_c = (void *)((uint)local_c & 0xffffff00);
    FUN_0083e850();
    if (param_1 != &PTR_s_ENTITIES_03238a04) {
      FUN_0083ea60();
    }
    (**(code **)(*(int *)param_1[0x7f] + 0x38))(piVar4,0x3ff0000000000000);
    if ((int *)param_1[0x7e] != (int *)0x0) {
      (**(code **)(*(int *)param_1[0x7e] + 4))(1);
      param_1[0x7e] = (undefined *)0x0;
    }
    puVar6 = (undefined *)FUN_00a07600(auStack_48);
    param_1[0x7e] = puVar6;
    (**(code **)(*piVar4 + 4))(1);
    FUN_009f5130(param_1[0xa8],0xf0,1);
    puVar6 = param_1[0x7e];
    *(undefined4 *)(puVar6 + 0x78) = 1;
    *(undefined4 *)(puVar6 + 0xcc) = 0xffffffff;
    FUN_009ee400();
    if (param_1[0xb6] == (undefined *)0x0) {
      (**(code **)(*param_1 + 0x15c))(1,0);
    }
    _free(local_30);
    if (7 < local_34) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(auStack_48[0]);
    }
    ExceptionList = pvStack_24;
    ___security_check_cookie_4();
    return;
  }
  iVar7 = 0;
  local_5c = (void *)0x0;
  if (puVar6 != (undefined *)0x0) {
    local_5c = *(void **)(puVar6 + 0xc);
  }
  if (DAT_032ea1f4 != 0) {
    iVar7 = *(int *)(DAT_032ea1f4 + 0xc);
  }
  do {
    if (local_5c == (void *)0x0) {
      if (iVar7 == 0) goto LAB_009f03ad;
      iVar8 = -1;
    }
    else {
      iVar8 = (**(code **)(**(int **)((int)local_5c + 8) + 0x14))(uVar1);
    }
    if (iVar7 == 0) {
      iVar2 = -1;
    }
    else {
      iVar2 = (**(code **)(**(int **)(iVar7 + 8) + 0x14))();
    }
    if (iVar2 < iVar8) {
      if (*(char *)(*(int **)((int)local_5c + 8) + 2) != '\0') {
        puVar3 = (uint *)(**(code **)(**(int **)((int)local_5c + 8) + 0x10))(auStack_58,&local_34);
        local_4._0_1_ = 1;
        if (&local_34 != puVar3) {
          FID_conflict_assign();
        }
        local_4 = (uint)local_4._1_3_ << 8;
        _free(pvStack_3c);
        if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_54);
        }
      }
      local_5c = *(void **)((int)local_5c + 0xc);
    }
    else {
      if (*(char *)(*(int **)(iVar7 + 8) + 2) != '\0') {
        puVar3 = (uint *)(**(code **)(**(int **)(iVar7 + 8) + 0x10))(auStack_58,&local_34);
        local_4._0_1_ = 2;
        if (&local_34 != puVar3) {
          FID_conflict_assign();
        }
        local_4 = (uint)local_4._1_3_ << 8;
        _free(pvStack_3c);
        if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_54);
        }
      }
      iVar7 = *(int *)(iVar7 + 0xc);
    }
  } while( true );
}



void __thiscall FUN_009f0530(int param_1_00,int param_1)

{
  int iStack_68;
  undefined *puStack_64;
  int *local_4c;
  undefined local_48 [24];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd5a50;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_4c;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x270) != 0) {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_4 = 0;
    puStack_64 = (undefined *)0x9f05a0;
    FUN_008433c0();
    local_4c = &iStack_68;
    local_4._0_1_ = 1;
    FUN_00432231(&iStack_68);
    FUN_0085cc60(local_48);
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0081b5bc();
    puStack_64 = (undefined *)0x9f05e6;
    (**(code **)(**(int **)(param_1_00 + 0x270) + 0x368))();
    local_4 = 0xffffffff;
    puStack_64 = (undefined *)0x9f05f8;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      puStack_64 = &UNK_009f060c;
      FUN_00a3f6a1();
    }
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
  }
  if (param_1_00 + 0x248 != param_1) {
    puStack_64 = (undefined *)0x0;
    iStack_68 = param_1;
    FID_conflict_assign();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009f0660(int param_1_00,int *param_1,uint param_2,void *param_4)

{
  int iVar1;
  uint *puVar2;
  undefined4 uVar3;
  undefined4 unaff_EBX;
  int iVar4;
  undefined4 unaff_ESI;
  undefined4 *puStack_98;
  uint uStack_94;
  uint local_80;
  void *pvStack_7c;
  uint uStack_78;
  void *pvStack_74;
  uint uStack_70;
  void *pvStack_6c;
  undefined4 uStack_5c;
  uint uStack_58;
  void *local_54;
  undefined auStack_4c [4];
  uint uStack_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 uStack_38;
  uint uStack_34;
  void *local_30;
  void *pvStack_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined uStack_14;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beab68;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  uStack_94 = DAT_0323f878 ^ (uint)&stack0xffffff70;
  ExceptionList = &local_c;
  iVar4 = 0;
  local_40 = 7;
  local_44 = 0;
  local_54 = (void *)((uint)local_54 & 0xffff0000);
  local_3c = 0;
  local_1c = 7;
  local_20 = 0;
  local_30 = (void *)((uint)local_30 & 0xffff0000);
  local_18 = 0;
  puStack_98 = (undefined4 *)PTR_DAT_03236318;
  local_4 = 2;
  iVar1 = FUN_008507a0();
  if (iVar1 != 0) {
    puStack_98 = (undefined4 *)0x9f06f9;
    puVar2 = (uint *)(**(code **)(*param_1 + 0x14))();
    if (&uStack_58 != puVar2) {
      puStack_98 = (undefined4 *)0xffffffff;
      FID_conflict_assign(puVar2,0);
    }
    puStack_98 = &param_2;
    (**(code **)(*param_1 + 0x10))();
  }
  puStack_98 = (undefined4 *)0xd97364;
  FUN_004325b6();
  puStack_98 = *(undefined4 **)(param_1_00 + 0x2a0);
  local_4 = CONCAT31(local_4._1_3_,3);
  (**(code **)(*param_1 + 0x6c))(&local_80);
  local_c._0_1_ = 2;
  _free(pvStack_6c);
  if (7 < uStack_70) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBX);
  }
  FUN_004325b6(L"wxHtmlWindow/FontFaceFixed");
  local_c = (void *)CONCAT31(local_c._1_3_,4);
  (**(code **)(*param_1 + 0x68))(&stack0xffffff78,*(int *)(param_1_00 + 0x1fc) + 0x12c8);
  uStack_14 = 2;
  _free(pvStack_74);
  if (7 < uStack_78) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_ESI);
  }
  FUN_004325b6(L"wxHtmlWindow/FontFaceNormal");
  uStack_14 = 5;
  (**(code **)(*param_1 + 0x68))(&stack0xffffff70,*(int *)(param_1_00 + 0x1fc) + 0x12ec);
  local_1c = CONCAT31(local_1c._1_3_,2);
  _free(pvStack_7c);
  if (7 < local_80) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_94);
  }
  iVar1 = 0x12ac;
  do {
    FUN_0081c0f1(L"wxHtmlWindow/FontsSize%i");
    local_1c._0_1_ = 6;
    FUN_00820e3f(iVar4,&puStack_98,1);
    uVar3 = FUN_008854f0();
    FUN_00853980(auStack_4c,uVar3,pvStack_74);
    local_1c = CONCAT31(local_1c._1_3_,2);
    FUN_0081b5bc();
    (**(code **)(*param_1 + 0x6c))(auStack_4c,*(undefined4 *)(iVar1 + *(int *)(param_1_00 + 0x1fc)))
    ;
    iVar1 = iVar1 + 4;
    iVar4 = iVar4 + 1;
  } while (iVar1 < 0x12c8);
  iVar1 = FUN_008507a0(PTR_DAT_03236318);
  if (iVar1 != 0) {
    (**(code **)(*param_1 + 0x10))(&uStack_70);
  }
  _free(local_30);
  if (7 < uStack_34) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_48);
  }
  uStack_34 = 7;
  uStack_38 = 0;
  uStack_48 = uStack_48 & 0xffff0000;
  _free(local_54);
  if (7 < uStack_58) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(pvStack_6c);
  }
  uStack_58 = 7;
  uStack_5c = 0;
  pvStack_6c = (void *)((uint)pvStack_6c & 0xffff0000);
  _free(param_4);
  if (7 < param_2) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_c);
  }
  ExceptionList = pvStack_24;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009f0990(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  uint auStack_e8 [4];
  undefined4 uStack_d8;
  uint uStack_d4;
  void *pvStack_d0;
  undefined local_c4 [8];
  int *local_bc;
  int iStack_1c;
  void *local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00beabb6;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)auStack_e8);
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff14;
  ExceptionList = &local_c;
  FUN_009efae0(param_1_00[0x10],param_1);
  local_4 = 0;
  local_bc = param_1_00;
  cVar1 = (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(local_c4,uVar2);
  if ((cVar1 == '\0') && ((iStack_1c == 0 || (*(int *)(iStack_1c + 0xc) == DAT_032bfe0c)))) {
    uVar3 = FUN_004585c3(&stack0xffffff14);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
    (**(code **)(*param_1_00 + 0x338))(uVar3);
    _free(pvStack_d0);
    if (7 < uStack_d4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(auStack_e8[0]);
    }
    uStack_d4 = 7;
    uStack_d8 = 0;
    auStack_e8[0] = auStack_e8[0] & 0xffff0000;
  }
  uStack_8 = (undefined *)0xffffffff;
  FUN_009ef2b0();
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_009f0ab0(int *param_1)

{
  bool bVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  void *pvVar5;
  int iVar6;
  int *piVar7;
  uint uVar8;
  undefined4 unaff_EBX;
  undefined4 unaff_ESI;
  int unaff_EDI;
  int **ppiVar9;
  int iVar10;
  int **ppiVar11;
  int *piVar12;
  undefined4 uStack_20;
  int *piStack_1c;
  int local_18;
  undefined local_14 [20];
  
  thunk_FUN_0091abd0();
  if (param_1[0x7e] == 0) {
    return;
  }
  if (*(char *)(param_1 + 0x7a) == '\0') {
    return;
  }
  FUN_0095dbf0(local_14,&local_18);
  piVar12 = &local_18;
  (**(code **)(*param_1 + 0x260))(local_14);
  FUN_0093be40(piStack_1c,uStack_20,&stack0xffffffd8,&stack0xffffffdc);
  iVar3 = (**(code **)(*(int *)param_1[0x7e] + 0x44))(unaff_EBX,unaff_ESI,1);
  if (*(char *)(param_1 + 0xaa) == '\0') goto LAB_009f0d8d;
  if (param_1[0xb5] == 0) {
    iVar4 = (**(code **)(*(int *)param_1[0x7e] + 0x44))(param_1[0xb3],param_1[0xb4],1);
    param_1[0xb5] = iVar4;
  }
  if (param_1[0xb5] == 0) {
    iVar4 = param_1[0xb3];
    iVar6 = param_1[0xb4];
  }
  else {
    piVar7 = (int *)FUN_009f5680(&piStack_1c,0);
    iVar4 = *piVar7;
    iVar6 = piVar7[1];
    if ((int)piVar12 < param_1[0xb3]) {
      iVar4 = iVar4 + *(int *)(param_1[0xb5] + 0x10);
      iVar6 = iVar6 + *(int *)(param_1[0xb5] + 0x14);
    }
  }
  ppiVar11 = (int **)(param_1 + 0xb3);
  if ((iVar6 < unaff_EDI) || ((iVar6 == unaff_EDI && (iVar4 < (int)piVar12)))) {
    bVar1 = true;
  }
  else {
    bVar1 = false;
  }
  if (param_1[0xb5] == 0) {
    if (bVar1) {
      iVar4 = (**(code **)(*(int *)param_1[0x7e] + 0x44))(*ppiVar11,param_1[0xb4],4);
      param_1[0xb5] = iVar4;
      if (iVar4 == 0) {
        iVar4 = (**(code **)(*(int *)param_1[0x7e] + 0x48))();
LAB_009f0c43:
        param_1[0xb5] = iVar4;
      }
    }
    else {
      iVar4 = (**(code **)(*(int *)param_1[0x7e] + 0x44))(*ppiVar11,param_1[0xb4],2);
      param_1[0xb5] = iVar4;
      if (iVar4 == 0) {
        iVar4 = (**(code **)(*(int *)param_1[0x7e] + 0x4c))();
        goto LAB_009f0c43;
      }
    }
  }
  iVar4 = iVar3;
  if (iVar3 == 0) {
    if (bVar1) {
      iVar4 = (**(code **)(*(int *)param_1[0x7e] + 0x44))(piVar12,unaff_EDI,2);
      if (iVar4 == 0) {
        iVar4 = (**(code **)(*(int *)param_1[0x7e] + 0x4c))();
LAB_009f0ca9:
        if (iVar4 == 0) goto LAB_009f0d8d;
      }
    }
    else {
      iVar4 = (**(code **)(*(int *)param_1[0x7e] + 0x44))(piVar12,unaff_EDI,4);
      if (iVar4 == 0) {
        iVar4 = (**(code **)(*(int *)param_1[0x7e] + 0x48))();
        goto LAB_009f0ca9;
      }
    }
  }
  if (param_1[0xb5] != 0) {
    if (param_1[0xa9] == 0) {
      uVar8 = (int)*ppiVar11 - (int)piVar12 >> 0x1f;
      if ((2 < (int)(((int)*ppiVar11 - (int)piVar12 ^ uVar8) - uVar8)) ||
         (uVar8 = param_1[0xb4] - unaff_EDI >> 0x1f,
         2 < (int)((param_1[0xb4] - unaff_EDI ^ uVar8) - uVar8))) {
        pvVar5 = operator_new(0x20);
        if (pvVar5 == (void *)0x0) {
          iVar6 = 0;
        }
        else {
          iVar6 = FUN_009edc60();
        }
        param_1[0xa9] = iVar6;
      }
      if (param_1[0xa9] == 0) goto LAB_009f0d8d;
    }
    cVar2 = FUN_009f5000(iVar4);
    if (cVar2 == '\0') {
      iVar6 = param_1[0xb5];
      ppiVar9 = &piStack_1c;
      iVar10 = iVar4;
    }
    else {
      ppiVar9 = ppiVar11;
      iVar10 = param_1[0xb5];
      ppiVar11 = &piStack_1c;
      iVar6 = iVar4;
    }
    piStack_1c = piVar12;
    FUN_009f4e60(ppiVar9,iVar10,ppiVar11,iVar6);
    iVar4 = param_1[0xa9];
    *(undefined4 *)(iVar4 + 0x10) = 0xffffffff;
    *(undefined4 *)(iVar4 + 0x14) = 0xffffffff;
    (**(code **)(*param_1 + 0x15c))(1,0);
  }
LAB_009f0d8d:
  piStack_1c = piVar12;
  local_18 = unaff_EDI;
  if (iVar3 != 0) {
    piVar7 = (int *)FUN_009f5680(&stack0xffffffdc,0);
    piStack_1c = (int *)((int)piVar12 - *piVar7);
    local_18 = unaff_EDI - piVar7[1];
  }
  FUN_009efd80(iVar3,&piStack_1c);
  return;
}



undefined4 * __fastcall FUN_009f0de0(undefined4 *param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beac68;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044c722(DAT_0323f878 ^ (uint)&stack0xffffffec);
  puVar1 = param_1 + 0x78;
  *puVar1 = wxHtmlWindowInterface::vftable;
  param_1[0x79] = wxHtmlWindowMouseHelper::vftable;
  *(undefined *)(param_1 + 0x7a) = 0;
  param_1[0x7b] = 0;
  param_1[0x7c] = 0;
  param_1[0x7d] = puVar1;
  *puVar1 = wxHtmlWindow::vftable;
  *param_1 = wxHtmlWindow::vftable;
  param_1[0x5e] = wxHtmlWindow::vftable;
  param_1[0x79] = wxHtmlWindow::vftable;
  param_1[0x86] = 7;
  param_1[0x85] = 0;
  *(undefined2 *)(param_1 + 0x81) = 0;
  param_1[0x87] = 0;
  param_1[0x8f] = 7;
  param_1[0x8e] = 0;
  *(undefined2 *)(param_1 + 0x8a) = 0;
  param_1[0x90] = 0;
  param_1[0x98] = 7;
  param_1[0x97] = 0;
  *(undefined2 *)(param_1 + 0x93) = 0;
  param_1[0x99] = 0;
  param_1[0xa5] = 7;
  param_1[0xa4] = 0;
  *(undefined2 *)(param_1 + 0xa0) = 0;
  param_1[0xa6] = 0;
  param_1[0xac] = 0;
  param_1[0xad] = 0;
  param_1[0xb0] = 0;
  param_1[0xaf] = wxBitmap::vftable;
  param_1[0xb2] = 0;
  param_1[0xb1] = wxBitmap::vftable;
  local_4 = 8;
  param_1[0xb3] = 0;
  param_1[0xb4] = 0;
  FUN_009eff30();
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_009f0f30(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xb4);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009ef910(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __fastcall FUN_009f0fa0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xb4);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_009efb90(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void FUN_009f1010(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_009efd10(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_0086a880();
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009f10f0(int param_1_00,int *param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  int iVar2;
  undefined *puVar3;
  undefined4 uVar4;
  int iVar5;
  uint param_8;
  void *param_9;
  undefined4 local_110;
  undefined local_10c [4];
  uint local_108;
  undefined4 local_f8;
  uint local_f4;
  void *local_f0;
  undefined4 local_e8;
  int local_e4;
  undefined local_e0 [4];
  undefined4 local_dc;
  uint local_c8;
  void *local_c4;
  undefined4 local_bc [7];
  undefined local_a0 [4];
  uint local_9c;
  undefined4 local_8c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beacfd;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_110;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffee0;
  ExceptionList = &local_c;
  local_88 = 7;
  local_8c = 0;
  local_9c = local_9c & 0xffff0000;
  local_84 = (void *)0x0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  local_3c = (void *)0x0;
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  local_60 = (void *)0x0;
  local_4 = 4;
  iVar2 = FUN_008507a0(PTR_DAT_03236318);
  if (iVar2 != 0) {
    puVar3 = (undefined *)(**(code **)(*param_1 + 0x14))(uVar1);
    if (local_a0 != puVar3) {
      FID_conflict_assign(puVar3,0,0xffffffff);
    }
    (**(code **)(*param_1 + 0x10))(&param_2);
  }
  FUN_004325b6(L"wxHtmlWindow/Borders");
  local_4._0_1_ = 5;
  FUN_00889880(local_10c,&local_110,*(undefined4 *)(param_1_00 + 0x2a0));
  *(undefined4 *)(param_1_00 + 0x2a0) = local_110;
  local_4._0_1_ = 4;
  _free(local_f0);
  if (7 < local_f4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_108);
  }
  FUN_004325b6(L"wxHtmlWindow/FontFaceFixed");
  local_4._0_1_ = 6;
  puVar3 = (undefined *)FUN_00891800(local_10c,local_e0,*(int *)(param_1_00 + 0x1fc) + 0x12c8);
  local_4._0_1_ = 7;
  if (local_58 != puVar3) {
    FID_conflict_assign(puVar3,0,0xffffffff);
  }
  _free(local_f0);
  if (7 < local_f4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_108);
  }
  local_f4 = 7;
  local_f8 = 0;
  local_108 = local_108 & 0xffff0000;
  local_4._0_1_ = 4;
  _free(local_c4);
  if (7 < local_c8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_dc);
  }
  FUN_004325b6(L"wxHtmlWindow/FontFaceNormal");
  local_4._0_1_ = 8;
  puVar3 = (undefined *)FUN_00891800(local_10c,local_e0,*(int *)(param_1_00 + 0x1fc) + 0x12ec);
  local_4._0_1_ = 9;
  if (local_7c != puVar3) {
    FID_conflict_assign(puVar3,0,0xffffffff);
  }
  _free(local_f0);
  if (7 < local_f4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_108);
  }
  local_f4 = 7;
  local_f8 = 0;
  local_108 = local_108 & 0xffff0000;
  local_4 = CONCAT31(local_4._1_3_,4);
  _free(local_c4);
  if (7 < local_c8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_dc);
  }
  local_e4 = 0x12ac - (int)local_bc;
  iVar2 = 0;
  do {
    FUN_0081c0f1(L"wxHtmlWindow/FontsSize%i");
    local_4._0_1_ = 10;
    FUN_00820e3f(iVar2,local_10c,1);
    uVar4 = FUN_008854f0();
    FUN_00853980(local_34,uVar4,local_110);
    local_4 = CONCAT31(local_4._1_3_,4);
    FUN_0081b5bc();
    FUN_00889880(local_34,&local_e8,
                 *(undefined4 *)
                  ((int)local_bc + *(int *)(param_1_00 + 0x1fc) + local_e4 + iVar2 * 4));
    iVar5 = iVar2 + 1;
    local_bc[iVar2] = local_e8;
    iVar2 = iVar5;
  } while (iVar5 < 7);
  FUN_00a03400(local_7c,local_58,local_bc);
  FUN_009f0200(*(undefined4 *)(*(int *)(param_1_00 + 0x1fc) + 0x18));
  iVar2 = FUN_008507a0(PTR_DAT_03236318);
  if (iVar2 != 0) {
    (**(code **)(*param_1 + 0x10))(local_a0);
  }
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  local_64 = 7;
  local_68 = 0;
  local_78 = local_78 & 0xffff0000;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_9c);
  }
  local_88 = 7;
  local_8c = 0;
  local_9c = local_9c & 0xffff0000;
  _free(param_9);
  if (7 < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009f1630(undefined4 param_1_00,int param_1,int param_2)

{
  undefined4 uVar1;
  int *piVar2;
  undefined4 local_74;
  int *local_70;
  undefined4 local_6c;
  int local_68;
  undefined local_58 [4];
  undefined4 uStack_54;
  uint uStack_40;
  void *pvStack_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00bead61;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_74;
  ExceptionList = &local_c;
  local_68 = param_1;
  local_6c = 0;
  if (param_2 == 0) {
    FUN_004325b6(PTR_DAT_03236318);
  }
  else {
    FUN_0094bd30(param_1_00);
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_70 = *(int **)(param_2 + 0x18);
    local_74 = *(undefined4 *)(param_2 + 0x1c);
    piVar2 = (int *)0x0;
    local_4._0_1_ = 2;
    local_4._1_3_ = 0;
    while (local_70 != (int *)0x0) {
      if ((piVar2 != (int *)0x0) && (piVar2[3] != local_70[3])) {
        FID_conflict_append(1,10);
      }
      uVar1 = (**(code **)(*local_70 + 0x50))(local_58,param_2);
      local_4._0_1_ = 3;
      FID_conflict_append(uVar1,0,0xffffffff);
      local_4._0_1_ = 2;
      _free(pvStack_3c);
      piVar2 = local_70;
      if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_54);
      }
      FUN_009f55c0();
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_34,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    local_6c = 1;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_00457221();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x2f0);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_009f0de0(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_009f1860(int param_1_00,undefined4 param_1)

{
  FUN_009f1630(param_1,*(undefined4 *)(param_1_00 + 0x2a4));
  return param_1;
}



void __fastcall FUN_009f1890(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beae08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  *param_1 = wxHtmlWindow::vftable;
  param_1[0x5e] = wxHtmlWindow::vftable;
  param_1[0x78] = wxHtmlWindow::vftable;
  param_1[0x79] = wxHtmlWindow::vftable;
  local_4 = 8;
  if ((param_1[0xae] != 0) && ((int *)param_1[0xae] != (int *)0x0)) {
    (**(code **)(*(int *)param_1[0xae] + 4))(1,uVar1);
    param_1[0xae] = 0;
  }
  FUN_009efd10();
  FUN_0086a880();
  param_1[0xb9] = 0xffffffff;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[0xa9]);
}



undefined4 __thiscall FUN_009f1b30(int param_1_00,int param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  uint uStack_a8;
  void *pvStack_a4;
  uint uStack_70;
  void *pvStack_6c;
  void *pvStack_14;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00beae61;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar4 = (**(code **)(**(int **)(param_1_00 + 0x1f8) + 0x30))();
  iVar5 = iVar4;
  if (iVar4 == 0) {
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(2);
    if (cVar3 != '\0') {
      FUN_004325b6();
      local_c = (void *)0x0;
      FUN_0043c211();
      local_c = (void *)CONCAT31(local_c._1_3_,1);
      iVar5 = FUN_0084a340();
      if (iVar5 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      FUN_00432231();
      local_c._0_1_ = 3;
      FUN_008423d0();
      local_c._0_1_ = 5;
      FUN_00848860();
      local_c._0_1_ = 2;
      FUN_00842440();
      local_c = (void *)CONCAT31(local_c._1_3_,1);
      FUN_0081b5bc();
      _free(pvStack_a4);
      if (7 < uStack_a8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      _free(pvStack_6c);
      if (7 < uStack_70) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    uVar6 = 0;
  }
  else {
    do {
      iVar2 = iVar5;
      if ((*(int *)(iVar5 + 0x10) != 0) || (*(int *)(iVar5 + 0x14) != 0)) break;
      piVar1 = (int *)(iVar5 + 8);
      iVar5 = *piVar1;
      iVar2 = iVar4;
    } while (*piVar1 != 0);
    for (; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0xc)) {
    }
    (**(code **)(*(int *)(param_1_00 + 0x178) + 0xc))();
    if (param_1_00 + 0x224 != param_1) {
      FID_conflict_assign();
    }
    uVar6 = 1;
  }
  ExceptionList = pvStack_14;
  return uVar6;
}



void __thiscall FUN_009f1d60(int *param_1_00,int param_1)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  void **ppvVar5;
  int iVar6;
  undefined4 uStack_194;
  undefined4 uStack_190;
  char *pcStack_18c;
  undefined4 uStack_188;
  char *pcStack_184;
  void ***pppvStack_180;
  void **ppvStack_17c;
  void **ppvStack_178;
  char *pcStack_174;
  char *pcStack_170;
  undefined4 uStack_154;
  uint local_150;
  void *local_14c;
  undefined4 local_148;
  undefined auStack_128 [36];
  void *apvStack_104 [2];
  void *pvStack_fc;
  uint uStack_f8;
  undefined4 uStack_e8;
  uint uStack_e4;
  void *apvStack_e0 [2];
  undefined auStack_d8 [28];
  undefined auStack_bc [36];
  undefined auStack_98 [136];
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beafd4;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&uStack_154;
  ExceptionList = &local_c;
  local_150 = 0;
  if (*(int *)(param_1 + 0x14) == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      pcStack_170 = "!location.empty()";
      pcStack_174 = "wxHtmlWindow::LoadPage";
      ppvStack_178 = (void **)0x1f0;
      ppvStack_17c = (void **)0xd97068;
      pppvStack_180 = (void ***)0x9f266f;
      FUN_008402e0();
    }
    goto LAB_009f2674;
  }
  pcStack_170 = (char *)0x9f1dba;
  pcStack_170 = (char *)FUN_008f7b30();
  pcStack_174 = (char *)0x9f1dc0;
  FUN_0095dd80();
  param_1_00[0xb6] = param_1_00[0xb6] + 1;
  local_4 = 0;
  uStack_154._0_3_ = (uint3)(ushort)uStack_154;
  if ((*(char *)(param_1_00 + 0xba) != '\0') && (param_1_00[0xb9] != -1)) {
    pcStack_170 = (char *)&local_14c;
    pcStack_174 = (char *)0x9f1e04;
    (**(code **)(param_1_00[0x5e] + 0x24))();
    pcStack_170 = (char *)0x9f1e1a;
    iVar3 = FUN_009cde80();
    *(undefined4 *)(iVar3 + 0x48) = local_148;
  }
  pcStack_170 = (char *)0x23;
  pcStack_174 = (undefined *)0x9f1e2c;
  iVar3 = FUN_00850910();
  if (iVar3 == -1) {
LAB_009f1f8f:
    uStack_154._0_3_ = CONCAT12(1,(ushort)uStack_154);
    if (param_1_00[0x9d] != -1) {
      pcStack_170 = (char *)0x9f1fb3;
      FUN_004325b6();
      local_4._0_1_ = 5;
      pcStack_170 = (char *)0x9f1fc9;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,6);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        pcStack_170 = (char *)0x9f1ffa;
        FUN_0084d360();
      }
      else {
        pcStack_170 = (char *)&pvStack_fc;
        pcStack_174 = (undefined *)0x9f1fee;
        FUN_0084f210();
      }
      pcStack_170 = (char *)0x9f200f;
      (**(code **)(param_1_00[0x78] + 0x24))();
      pcStack_170 = (char *)0x9f2018;
      FUN_0040159c();
      puStack_8 = (undefined *)((uint)puStack_8 & 0xffffff00);
      pcStack_170 = (char *)0x9f202c;
      FUN_0040159c();
      pcStack_170 = (char *)0x0;
      pcStack_174 = (char *)0x0;
      ppvStack_178 = (void **)0x9f203c;
      (**(code **)(*param_1_00 + 0x15c))();
    }
    pcStack_170 = (char *)0x0;
    pcStack_174 = (char *)0x9f204c;
    piVar4 = (int *)(**(code **)(*(int *)param_1_00[0x7f] + 0x10))();
    if (piVar4 == (int *)0x0) {
      ppvStack_178 = (void **)param_1;
      ppvStack_17c = (void **)0x9f2064;
      pcStack_174 = (char *)piVar4;
      FUN_00432544();
      pcStack_174 = auStack_98;
      ppvStack_178 = (void **)auStack_bc;
      local_c._0_1_ = 7;
      ppvStack_17c = (void **)0x9f2081;
      FUN_008669d0();
      pcStack_174 = auStack_bc;
      local_c._0_1_ = 8;
      ppvStack_17c = (void **)0x9f20a2;
      ppvStack_178 = (void **)piVar4;
      piVar4 = (int *)(**(code **)(*(int *)param_1_00[0x7f] + 0x10))();
      pcStack_174 = (char *)0x9f20b0;
      FUN_0040159c();
      local_c = (void *)((uint)local_c._1_3_ << 8);
      pcStack_174 = (char *)0x9f20c4;
      FUN_0043250a();
      if (piVar4 == (int *)0x0) {
        uStack_154 = (void ***)&uStack_194;
        FUN_0043c211(&DAT_00d25fa0);
        cVar2 = FUN_00846b30(1);
        if (cVar2 != '\0') {
          pcStack_174 = PTR_DAT_03236318;
          ppvStack_178 = (void **)0x9f2101;
          FUN_004325b6();
          pcStack_174 = "Unable to open requested HTML document: %s";
          local_c._0_1_ = 9;
          ppvStack_178 = (void **)0x9f211a;
          FUN_0043c211();
          pcStack_174 = (char *)&local_14c;
          ppvStack_178 = (void **)auStack_bc;
          local_c._0_1_ = 10;
          ppvStack_17c = (void **)0x9f2135;
          pcStack_174 = (char *)FUN_00820bf9();
          ppvStack_178 = (void **)0x9f2142;
          FUN_008433c0();
          uStack_154 = &ppvStack_17c;
          pppvStack_180 = &ppvStack_17c;
          pcStack_184 = (char *)0x9f2153;
          FUN_00432231();
          pppvStack_180 = (void ***)&DAT_00d25fa0;
          pcStack_184 = "wxHtmlWindow::LoadPage";
          uStack_188 = 0x22d;
          pcStack_18c = "..\\..\\src\\html\\htmlwin.cpp";
          uStack_190 = 1;
          local_c._0_1_ = 0xc;
          uStack_194 = 0x9f217d;
          FUN_008423d0();
          pppvStack_180 = (void ***)apvStack_104;
          local_c._0_1_ = 0xe;
          pcStack_184 = (char *)0x9f2199;
          FUN_00848860();
          local_c._0_1_ = 0xb;
          pcStack_174 = (char *)0x9f21ad;
          FUN_00842440();
          local_c._0_1_ = 10;
          pcStack_174 = (char *)0x9f21bd;
          FUN_0081b5bc();
          pcStack_174 = (char *)0x9f21c9;
          FUN_0040159c();
          local_c = (void *)((uint)local_c._1_3_ << 8);
          pcStack_174 = (char *)0x9f21da;
          FUN_0040159c();
        }
        param_1_00[0xb6] = param_1_00[0xb6] + -1;
        pcStack_174 = PTR_DAT_03236318;
        ppvStack_178 = (void **)0x9f21f2;
        FUN_004325b6();
        pcStack_174 = (char *)&local_14c;
        local_c = (void *)CONCAT31(local_c._1_3_,0xf);
        ppvStack_178 = (void **)0x9f2212;
        (**(code **)(param_1_00[0x78] + 0x24))();
        FUN_0040159c();
        local_4 = 0xffffffff;
        FUN_0095db80();
        goto LAB_009f2674;
      }
    }
    pcStack_174 = PTR_DAT_03236318;
    ppvStack_178 = (void **)0x9f223b;
    FUN_004325b6();
    local_c = (void *)CONCAT31(local_c._1_3_,0x10);
    iVar3 = DAT_032ea218;
    if (param_1_00[0x9d] != -1) {
      pcStack_174 = PTR_DAT_03236318;
      ppvStack_178 = (void **)0x9f2260;
      FUN_004325b6();
      pcStack_174 = "Loading : ";
      local_c._0_1_ = 0x11;
      ppvStack_178 = (void **)0x9f2276;
      FUN_0043c211();
      pcStack_174 = (char *)param_1;
      ppvStack_178 = (void **)auStack_128;
      ppvStack_17c = &local_14c;
      local_c._0_1_ = 0x12;
      pppvStack_180 = (void ***)0x9f228e;
      ppvStack_178 = (void **)FUN_00820bf9();
      ppvStack_17c = apvStack_e0;
      pppvStack_180 = (void ***)0x9f229f;
      FUN_008531f0();
      pcStack_174 = (char *)0x9f22ab;
      FUN_0040159c();
      local_c._0_1_ = 0x15;
      pcStack_174 = (char *)0x9f22bc;
      FUN_0040159c();
      pcStack_174 = (char *)apvStack_e0;
      ppvStack_178 = (void **)0x9f22d5;
      (**(code **)(param_1_00[0x78] + 0x24))();
      ppvStack_178 = (void **)0x0;
      ppvStack_17c = (void **)0x0;
      pppvStack_180 = (void ***)0x9f22e5;
      (**(code **)(*param_1_00 + 0x15c))();
      local_c = (void *)CONCAT31(local_c._1_3_,0x10);
      pcStack_174 = (char *)0x9f22f9;
      FUN_0040159c();
      iVar3 = DAT_032ea218;
    }
    for (; iVar3 != 0; iVar3 = *(int *)(iVar3 + 0xc)) {
      piVar1 = *(int **)(iVar3 + 8);
      ppvStack_178 = (void **)0x9f2311;
      pcStack_174 = (char *)piVar4;
      cVar2 = (**(code **)(*piVar1 + 0x10))();
      if (cVar2 != '\0') {
        ppvStack_178 = apvStack_e0;
        ppvStack_17c = (void **)0x9f2331;
        pcStack_174 = (char *)piVar4;
        ppvVar5 = (void **)(**(code **)(*piVar1 + 0x14))();
        local_c._0_1_ = 0x16;
        if (apvStack_104 != ppvVar5) {
          pcStack_174 = (char *)0xffffffff;
          ppvStack_178 = (void **)0x0;
          pppvStack_180 = (void ***)0x9f234b;
          ppvStack_17c = ppvVar5;
          FID_conflict_assign();
        }
        local_c = (void *)CONCAT31(local_c._1_3_,0x10);
        pcStack_174 = (char *)0x9f235f;
        FUN_0040159c();
        break;
      }
    }
    pcStack_174 = PTR_DAT_03236318;
    ppvStack_178 = (void **)0x9f236f;
    iVar3 = FUN_008507a0();
    if (iVar3 == 0) {
      if (DAT_032ea1f0 == (int *)0x0) {
        pcStack_174 = (char *)0x9f2388;
        DAT_032ea1f0 = (int *)(**(code **)(*param_1_00 + 0x350))();
      }
      ppvStack_178 = apvStack_e0;
      ppvStack_17c = (void **)0x9f239f;
      pcStack_174 = (char *)piVar4;
      ppvVar5 = (void **)(**(code **)(*DAT_032ea1f0 + 0x14))();
      local_c._0_1_ = 0x17;
      if (apvStack_104 != ppvVar5) {
        pcStack_174 = (char *)0xffffffff;
        ppvStack_178 = (void **)0x0;
        pppvStack_180 = (void ***)0x9f23b9;
        ppvStack_17c = ppvVar5;
        FID_conflict_assign();
      }
      local_c = (void *)CONCAT31(local_c._1_3_,0x10);
      pcStack_174 = (char *)0x9f23cd;
      FUN_0040159c();
    }
    pcStack_174 = (char *)0x0;
    ppvVar5 = (void **)(piVar4 + 3);
    ppvStack_17c = (void **)0x9f23de;
    ppvStack_178 = ppvVar5;
    FUN_008648f0();
    pcStack_174 = (char *)apvStack_104;
    ppvStack_178 = (void **)0x9f23ef;
    (**(code **)(*param_1_00 + 0x334))();
    if ((void **)(param_1_00 + 0x80) != ppvVar5) {
      pcStack_170 = (char *)0x0;
      ppvStack_178 = (void **)0x9f2405;
      pcStack_174 = (char *)ppvVar5;
      FID_conflict_assign();
    }
    pcStack_170 = (char *)0x9f2415;
    iVar3 = FUN_008507a0();
    if (iVar3 != 0) {
      pcStack_170 = (char *)0x9f2421;
      FUN_009f1b30();
    }
    if (piVar4 != (int *)0x0) {
      pcStack_170 = (char *)0x9f2430;
      (**(code **)(*piVar4 + 4))();
    }
    if (param_1_00[0x9d] != -1) {
      pcStack_170 = (char *)0x9f2449;
      FUN_004325b6();
      local_4._0_1_ = 0x18;
      pcStack_170 = (char *)0x9f2462;
      FUN_0043c211();
      iVar3 = param_1_00[0x78];
      pcStack_170 = auStack_d8;
      local_4 = CONCAT31(local_4._1_3_,0x19);
      pcStack_174 = (char *)0x9f248b;
      FUN_00820bf9();
      pcStack_170 = (char *)0x9f2495;
      (**(code **)(iVar3 + 0x24))();
      FUN_0040159c();
      FUN_0040159c();
    }
    local_4 = local_4 & 0xffffff00;
    FUN_0040159c();
  }
  else {
    if (iVar3 != 0) {
      pcStack_170 = (char *)0x0;
      pcStack_174 = (char *)&pvStack_fc;
      ppvStack_178 = (void **)0x9f1e51;
      FUN_0084c0c0();
      pcStack_170 = (char *)&pvStack_fc;
      local_4._0_1_ = 1;
      pcStack_174 = (undefined *)0x9f1e6a;
      cVar2 = FUN_0043225e();
      if (cVar2 == '\0') {
LAB_009f1ec7:
        uStack_154 = (void ***)((uint)uStack_154 & 0xffffff);
      }
      else {
        pcStack_170 = (char *)0x9f1e81;
        pcStack_170 = (char *)FUN_009ef800();
        pcStack_174 = auStack_d8;
        local_4 = CONCAT31(local_4._1_3_,2);
        local_150 = 1;
        ppvStack_178 = (void **)0x9f1ea4;
        ppvStack_17c = (void **)FUN_008531f0();
        local_4._0_1_ = 3;
        local_4._1_3_ = 0;
        local_150 = 3;
        pppvStack_180 = (void ***)0x9f1ebb;
        ppvStack_178 = (void **)(param_1_00 + 0x80);
        cVar2 = FUN_0043225e();
        uStack_154 = (void ***)CONCAT13(1,(uint3)uStack_154);
        if (cVar2 == '\0') goto LAB_009f1ec7;
      }
      if ((local_150 & 2) != 0) {
        local_150 = local_150 & 0xfffffffd;
        FUN_0040159c();
      }
      local_4 = 1;
      if ((local_150 & 1) != 0) {
        FUN_0040159c();
      }
      if (uStack_154._3_1_ != '\0') {
        iVar3 = -1;
      }
      local_4 = local_4 & 0xffffff00;
      FUN_0040159c();
    }
    if (iVar3 == -1) goto LAB_009f1f8f;
    param_1_00[0xb6] = param_1_00[0xb6] + -1;
    pcStack_170 = (char *)(iVar3 + 1);
    pcStack_174 = (char *)&pvStack_fc;
    ppvStack_178 = (void **)0x9f1f43;
    FUN_0084c0c0();
    local_4._0_1_ = 4;
    pcStack_170 = (char *)0x9f1f53;
    FUN_009f1b30();
    local_4 = (uint)local_4._1_3_ << 8;
    pcStack_170 = (char *)0x9f1f6a;
    _free(apvStack_e0[0]);
    if (7 < uStack_e4) {
                    // WARNING: Subroutine does not return
      pcStack_170 = &UNK_009f1f81;
      FUN_00a3f6a1();
    }
    param_1_00[0xb6] = param_1_00[0xb6] + 1;
  }
  if (*(char *)(param_1_00 + 0xba) != '\0') {
    iVar3 = (*(int *)(param_1_00[0xb8] + 4) - param_1_00[0xb9]) + -1;
    if (-1 < param_1_00[0xb9]) {
      pcStack_170 = (char *)0x9f24e9;
      pcStack_170 = (char *)FUN_009cde80();
      pcStack_174 = (char *)0x9f24f6;
      cVar2 = FUN_0043225e();
      if (cVar2 == '\0') {
        pcStack_170 = (char *)0x9f250f;
        iVar6 = FUN_009cde80();
        pcStack_170 = (char *)(iVar6 + 0x24);
        pcStack_174 = (char *)0x9f251f;
        cVar2 = FUN_0043225e();
        if (cVar2 == '\0') goto LAB_009f2592;
      }
    }
    param_1_00[0xb9] = param_1_00[0xb9] + 1;
    if (0 < iVar3) {
      do {
        pcStack_170 = (char *)param_1_00[0xb9];
        pcStack_174 = (char *)0x9f2544;
        FUN_009ef720();
        iVar3 = iVar3 + -1;
      } while (iVar3 != 0);
    }
    pcStack_170 = (char *)0x9f2550;
    local_14c = operator_new(0x4c);
    local_4._0_1_ = 0x1a;
    if (local_14c == (void *)0x0) {
      pcStack_170 = (char *)0x0;
    }
    else {
      pcStack_170 = (char *)(param_1_00 + 0x80);
      pcStack_174 = (char *)0x9f2578;
      pcStack_170 = (char *)FUN_009efc70();
    }
    local_4 = (uint)local_4._1_3_ << 8;
    pcStack_174 = (char *)0x9f2592;
    FUN_0086a400();
  }
LAB_009f2592:
  pcStack_170 = (char *)0x9f25a3;
  iVar3 = FUN_008507a0();
  if (iVar3 == 0) {
    pcStack_170 = (char *)&pvStack_fc;
    pcStack_174 = (char *)0x9f25b8;
    FUN_0085caf0();
    local_4._0_1_ = 0x1b;
    pcStack_170 = (char *)0x9f25d0;
    (**(code **)(*param_1_00 + 0x344))();
    local_4 = (uint)local_4._1_3_ << 8;
    pcStack_170 = (char *)0x9f25e5;
    _free(apvStack_e0[0]);
    if (7 < uStack_e4) {
                    // WARNING: Subroutine does not return
      pcStack_170 = &UNK_009f25fc;
      FUN_00a3f6a1();
    }
    uStack_e4 = 7;
    uStack_e8 = 0;
    uStack_f8 = uStack_f8 & 0xffff0000;
  }
  param_1_00[0xb6] = param_1_00[0xb6] + -1;
  if (uStack_154._2_1_ != '\0') {
    pcStack_170 = (char *)0x1;
    pcStack_174 = (char *)0x9f2639;
    (**(code **)(*param_1_00 + 0x15c))();
  }
  local_4 = 0xffffffff;
  FUN_0095db80();
LAB_009f2674:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009f26a0(int param_1_00,int param_1)

{
  char cVar1;
  int *piVar2;
  undefined4 uStack_134;
  undefined4 uStack_130;
  char *pcStack_12c;
  undefined4 uStack_128;
  char *pcStack_124;
  undefined4 *puStack_120;
  undefined4 uStack_11c;
  undefined *puStack_118;
  undefined4 *puStack_108;
  undefined auStack_104 [20];
  undefined auStack_f0 [36];
  undefined auStack_cc [188];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4._0_1_ = 0xff;
  uStack_4._1_3_ = 0xffffff;
  puStack_8 = &LAB_00beb068;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&puStack_108;
  ExceptionList = &local_c;
  if ((*(int *)(param_1_00 + 0x2a4) != 0) && (param_1 != 0)) {
    piVar2 = (int *)FUN_00933660();
    cVar1 = (**(code **)(*piVar2 + 0x10))();
    if (cVar1 != '\0') {
      puStack_118 = (undefined *)0x9f271a;
      FUN_009f1860();
      uStack_4 = 0;
      puStack_118 = (undefined *)0x9f272c;
      puStack_108 = (undefined4 *)operator_new(0x30);
      uStack_4._0_1_ = 1;
      if (puStack_108 != (undefined4 *)0x0) {
        puStack_118 = (undefined *)0x9f274e;
        FUN_00449733();
      }
      uStack_4._0_1_ = 0;
      piVar2 = (int *)FUN_00933660();
      puStack_118 = (undefined *)0x9f276b;
      (**(code **)(*piVar2 + 0x20))();
      puStack_118 = (undefined *)0x9f2770;
      piVar2 = (int *)FUN_00933660();
      puStack_118 = (undefined *)0x9f2779;
      (**(code **)(*piVar2 + 0x14))();
      puStack_108 = &uStack_134;
      FUN_0043c211(&DAT_00d25fa0);
      cVar1 = FUN_00846b30(7);
      if (cVar1 != '\0') {
        puStack_118 = (undefined *)0x9f27ae;
        FUN_004325b6();
        uStack_4._0_1_ = 2;
        puStack_118 = (undefined *)0x9f27c4;
        FUN_0043c211();
        puStack_118 = auStack_cc;
        uStack_4._0_1_ = 3;
        uStack_11c = 0x9f27db;
        FUN_00820bf9();
        puStack_118 = (undefined *)0x9f27e8;
        FUN_008433c0();
        uStack_4._0_1_ = 4;
        puStack_118 = (undefined *)0x9f27fe;
        FUN_004325b6();
        puStack_108 = &uStack_11c;
        puStack_120 = &uStack_11c;
        pcStack_124 = (char *)0x9f2814;
        FUN_00432231();
        puStack_120 = (undefined4 *)&DAT_00d25fa0;
        pcStack_124 = "wxHtmlWindow::CopySelection";
        uStack_128 = 0x41c;
        pcStack_12c = "..\\..\\src\\html\\htmlwin.cpp";
        uStack_130 = 7;
        uStack_4._0_1_ = 6;
        uStack_134 = 0x9f283e;
        FUN_008423d0();
        puStack_120 = (undefined4 *)auStack_104;
        pcStack_124 = auStack_f0;
        uStack_4._0_1_ = 8;
        uStack_128 = 0x9f285f;
        FUN_0084dc30();
        uStack_4._0_1_ = 5;
        FUN_00842440();
        FUN_0040159c();
        uStack_4._0_1_ = 3;
        FUN_0081b5bc();
        FUN_0040159c();
        FUN_0040159c();
      }
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009f28e0(int *param_1_00,int param_1)

{
  uint *puVar1;
  int iVar2;
  int local_8;
  int local_4;
  
  if (*(int *)(param_1 + 0xc) != DAT_032bfe08) {
    *(undefined *)(param_1 + 0x24) = 1;
    return;
  }
  if ((~(byte)((uint)param_1_00[0x38] >> 3) & 1) != 0) {
    puVar1 = (uint *)FUN_008a6860(&local_8);
    iVar2 = (puVar1[1] - param_1_00[0xad]) - (uint)(*puVar1 < (uint)param_1_00[0xac]);
    if ((0 < iVar2) || ((-1 < iVar2 && (200 < *puVar1 - param_1_00[0xac])))) {
      *(undefined *)(param_1_00 + 0xaa) = 1;
      if (param_1_00[0xa9] != 0) {
        FUN_009edfe0(param_1_00 + 0xa9);
        (**(code **)(*param_1_00 + 0x15c))(1,0);
      }
      local_8 = 0;
      local_4 = 0;
      FUN_0093be40(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),&local_8,&local_4
                  );
      param_1_00[0xb4] = local_4;
      param_1_00[0xb3] = local_8;
      param_1_00[0xb5] = 0;
      FUN_0091f8e0();
      *(undefined *)(param_1 + 0x24) = 1;
      return;
    }
    local_8 = 0;
    local_4 = 0;
    FUN_0093be40(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),&local_8,&local_4);
    FUN_009edd50(&local_8);
    FUN_009f26a0(1);
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



void __thiscall FUN_009f2a10(int param_1_00,int param_1)

{
  undefined4 local_c;
  undefined4 local_8;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_c;
  if (*(char *)(param_1_00 + 0x2a8) != '\0') {
    FUN_0091fac0();
    *(undefined *)(param_1_00 + 0x2a8) = 0;
    if (*(int *)(param_1_00 + 0x2a4) != 0) goto LAB_009f2a89;
  }
  local_c = 0;
  local_8 = 0;
  FUN_0093be40(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),&local_c,&local_8);
  FUN_009ee290(*(undefined4 *)(param_1_00 + 0x1f8),&local_c,param_1);
LAB_009f2a89:
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009f2ab0(int param_1_00,int param_1)

{
  undefined4 *puVar1;
  undefined4 local_14;
  undefined4 local_10;
  undefined local_c [8];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_14;
  if ((~(byte)(*(uint *)(param_1_00 + 0xe0) >> 3) & 1) != 0) {
    local_14 = 0;
    local_10 = 0;
    FUN_0093be40(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),&local_14,&local_10
                );
    FUN_009eea10(&local_14);
    puVar1 = (undefined4 *)FUN_008a6860(local_c);
    *(undefined4 *)(param_1_00 + 0x2b0) = *puVar1;
    *(undefined4 *)(param_1_00 + 0x2b4) = puVar1[1];
    ___security_check_cookie_4();
    return;
  }
  *(undefined *)(param_1 + 0x24) = 1;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_009f2b50(void)

{
  return &PTR_u_wxHtmlFilterPlainText_0323dc78;
}



undefined ** FUN_009f2b60(void)

{
  return &PTR_u_wxHtmlFilterImage_0323dc90;
}



undefined ** FUN_009f2b70(void)

{
  return &PTR_u_wxHtmlFilterHTML_0323dca8;
}



undefined ** FUN_009f2b80(void)

{
  return &PTR_u_wxHtmlFilterModule_0323dcc0;
}



undefined4 FUN_009f2bb0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(8);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    *puVar1 = wxHtmlFilterHTML::vftable;
  }
  FUN_009ee6b0(puVar1);
  puVar1 = (undefined4 *)operator_new(8);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    *puVar1 = wxHtmlFilterImage::vftable;
    FUN_009ee6b0(puVar1);
    return 1;
  }
  FUN_009ee6b0(0);
  return 1;
}



undefined4 * FUN_009f2c50(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHtmlFilterModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



bool FUN_009f2cb0(void)

{
  int iVar1;
  undefined4 local_8;
  undefined4 local_4;
  
  FUN_00866d40();
  FUN_00820ebc(&local_8,L"text/html",0xffffffff);
  iVar1 = FUN_00420f3f(local_8,0,local_4);
  if (iVar1 == -1) {
    iVar1 = -1;
  }
  return iVar1 == 0;
}



undefined4 * __thiscall FUN_009f2d10(undefined4 *param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb153;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00883d40(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  *param_1_00 = wxStringOutputStream::vftable;
  param_1_00[10] = 7;
  param_1_00[9] = 0;
  *(undefined2 *)(param_1_00 + 5) = 0;
  param_1_00[0xb] = 0;
  local_4 = 1;
  param_1_00[0xf] = param_2;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = 0;
    puVar1[1] = 0;
    puVar1[2] = 0;
    puVar1[3] = 0;
  }
  param_1_00[0x10] = puVar1;
  puVar1[3] = puVar1[3] + 1;
  puVar1 = param_1_00 + 4;
  if (param_1 != (undefined4 *)0x0) {
    puVar1 = param_1;
  }
  param_1_00[0xd] = puVar1;
  param_1_00[0xe] = (uint)puVar1[5] >> 1;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009f2dc0(int param_1)

{
  void **ppvVar1;
  void **ppvVar2;
  
  ppvVar2 = *(void ***)(param_1 + 0x40);
  ppvVar1 = ppvVar2 + 3;
  *ppvVar1 = (void *)((int)*ppvVar1 + -1);
  if (*ppvVar1 == (void *)0x0) {
    _free(*ppvVar2);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(ppvVar2);
  }
  _free(*(void **)(param_1 + 0x2c));
  if (7 < *(uint *)(param_1 + 0x28)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x14));
  }
  *(undefined4 *)(param_1 + 0x28) = 7;
  *(undefined4 *)(param_1 + 0x24) = 0;
  *(undefined2 *)(param_1 + 0x14) = 0;
  FUN_008f7630();
  return;
}



void __thiscall FUN_009f2e20(undefined4 param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined local_54 [68];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb178;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_54;
  uVar1 = DAT_0323f878 ^ (uint)local_54;
  ExceptionList = &local_c;
  FUN_009f2d10(param_1_00,param_1);
  local_4 = 0;
  FUN_008830d0(local_54);
  local_4 = 0xffffffff;
  FUN_009f2dc0(uVar1);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



bool FUN_009f2ea0(void)

{
  int iVar1;
  undefined *puVar2;
  undefined4 uVar3;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar3 = 6;
  puVar2 = local_30;
  FUN_00866d40(puVar2,6,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  FUN_008527e0(puVar2,uVar3);
  local_4 = 0;
  iVar1 = FUN_008507a0(L"image/");
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return iVar1 == 0;
}



undefined4 __thiscall FUN_009f2f30(undefined4 param_1_00,byte param_1)

{
  FUN_009f2dc0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_009f2f50(int param_1,int param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  undefined *puVar3;
  undefined local_a4 [4];
  uint local_a0;
  undefined4 local_90;
  uint local_8c;
  void *local_88;
  undefined local_80 [4];
  undefined4 local_7c;
  uint local_68;
  void *local_64;
  undefined4 local_5c;
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined local_4;
  undefined3 uStack_3;
  
  puStack_8 = &LAB_00beb1fc;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_a4;
  ExceptionList = &local_c;
  local_5c = 0;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_40 = 7;
  local_44 = 0;
  local_54 = local_54 & 0xffff0000;
  local_3c = (void *)0x0;
  local_4 = 1;
  uStack_3 = 0;
  if (*(int *)(param_2 + 8) == 0) {
    FUN_004325b6(PTR_DAT_03236318);
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  else {
    if (DAT_032bd4e4 == 0) {
      DAT_032bd4e4 = FUN_00863050(DAT_0323f878 ^ (uint)&stack0xffffff4c);
    }
    FUN_009f2e20(DAT_032bd4e4);
    FUN_004325b6(&DAT_00d247fc);
    local_4 = 2;
    FUN_004325b6(&DAT_00d1fcb0);
    local_4 = 3;
    FUN_00852a70(local_a4,local_80,1);
    _free(local_88);
    if (7 < local_8c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a0);
    }
    local_8c = 7;
    local_90 = 0;
    local_a0 = local_a0 & 0xffff0000;
    local_4 = 1;
    _free(local_64);
    if (7 < local_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_7c);
    }
    FUN_004325b6(&DAT_00d24814);
    local_4 = 4;
    FUN_004325b6(&DAT_00d25004);
    local_4 = 5;
    FUN_00852a70(local_a4,local_80,1);
    _free(local_88);
    if (7 < local_8c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a0);
    }
    local_8c = 7;
    local_90 = 0;
    local_a0 = local_a0 & 0xffff0000;
    local_4 = 1;
    _free(local_64);
    if (7 < local_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_7c);
    }
    FUN_004325b6(&DAT_00d24808);
    local_4 = 6;
    FUN_004325b6(&DAT_00d24fcc);
    local_4 = 7;
    FUN_00852a70(local_a4,local_80,1);
    _free(local_88);
    if (7 < local_8c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a0);
    }
    local_8c = 7;
    local_90 = 0;
    local_a0 = local_a0 & 0xffff0000;
    local_4 = 1;
    _free(local_64);
    if (7 < local_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_7c);
    }
    uVar2 = FUN_008535a0(local_80,L"<HTML><BODY><PRE>\n",local_34);
    local_4 = 8;
    puVar3 = (undefined *)FUN_008533d0(local_a4,uVar2,L"\n</PRE></BODY></HTML>");
    local_4 = 9;
    if (local_58 != puVar3) {
      FID_conflict_assign(puVar3,0,0xffffffff);
    }
    _free(local_88);
    if (7 < local_8c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a0);
    }
    local_8c = 7;
    local_90 = 0;
    local_a0 = local_a0 & 0xffff0000;
    local_4 = 1;
    _free(local_64);
    if (7 < local_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_7c);
    }
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(local_58,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    _free(local_18);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  local_c = ExceptionList;
  if (7 < local_1c) {
    ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_009f33a0(undefined4 param_1,int param_2)

{
  undefined4 uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_008535a0(local_30,L"<HTML><BODY><IMG SRC=\"",param_2 + 0xc,
                       DAT_0323f878 ^ (uint)&stack0xffffffc8);
  local_4 = 0;
  FUN_008533d0(param_1,uVar1,L"\"></BODY></HTML>");
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return param_1;
}



void FUN_009f3440(undefined *param_1,int param_2)

{
  int *piVar1;
  undefined *puVar2;
  char cVar3;
  int iVar4;
  int **ppiVar5;
  undefined4 uStack_150;
  undefined4 uStack_14c;
  char *pcStack_148;
  undefined4 uStack_144;
  char *pcStack_140;
  int ***pppiStack_13c;
  int ***pppiStack_138;
  wchar_t *pwStack_134;
  int ***local_118;
  int **local_114 [4];
  undefined local_104 [136];
  int *local_7c;
  uint local_78;
  undefined4 uStack_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  uint local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  int *local_34;
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beb2ad;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_118;
  ExceptionList = &local_c;
  local_114[0] = (int **)0x0;
  piVar1 = *(int **)(param_2 + 8);
  local_118 = (int ***)param_1;
  local_1c = 7;
  local_20 = 0;
  local_30 = local_30 & 0xffff0000;
  local_18 = (void *)0x0;
  local_4 = 0;
  if (piVar1 == (int *)0x0) {
    local_118 = (int ***)&uStack_150;
    FUN_0043c211(&DAT_00d25fa0);
    cVar3 = FUN_00846b30(1);
    if (cVar3 != '\0') {
      pwStack_134 = (wchar_t *)0x9f3500;
      FUN_004325b6();
      local_4._0_1_ = 1;
      pwStack_134 = L"蓆⠤\x01Ȁ᫨\xe56e㯿瓃贙⒔°";
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,2);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        pwStack_134 = (wchar_t *)0x9f3550;
        FUN_0084d360();
      }
      else {
        pwStack_134 = (wchar_t *)local_58;
        pppiStack_138 = (int ***)0x9f3541;
        FUN_0084f210();
      }
      pwStack_134 = L"\xec83謌规⑤倠侍\xe80c\xecc2ﾣꁨ퉟栀竔Ù詨";
      FUN_008433c0();
      local_118 = (int ***)&pppiStack_138;
      pppiStack_13c = (int ***)&pppiStack_138;
      pcStack_140 = (char *)0x9f356f;
      FUN_00432231();
      pppiStack_13c = (int ***)&DAT_00d25fa0;
      pcStack_140 = "wxHtmlFilterHTML::ReadFile";
      uStack_144 = 0x8a;
      pcStack_148 = "..\\..\\src\\html\\htmlfilt.cpp";
      uStack_14c = 1;
      local_4._0_1_ = 4;
      uStack_150 = 0x9f3599;
      FUN_008423d0();
      pppiStack_13c = (int ***)local_104;
      local_4._0_1_ = 6;
      pcStack_140 = (char *)0x9f35b5;
      FUN_00848860();
      local_4._0_1_ = 3;
      FUN_00842440();
      local_4._0_1_ = 2;
      FUN_0081b5bc();
      pwStack_134 = L"ࢾ";
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        pwStack_134 = (wchar_t *)&UNK_009f3602;
        FUN_00a3f6a1();
      }
      local_40 = 7;
      local_44 = 0;
      local_54 = local_54 & 0xffff0000;
      local_4 = (uint)local_4._1_3_ << 8;
      pwStack_134 = L"쒃㤄⒴È";
      _free(local_60);
      if (7 < local_64) {
                    // WARNING: Subroutine does not return
        pwStack_134 = (wchar_t *)&UNK_009f364e;
        FUN_00a3f6a1();
      }
    }
    pwStack_134 = L"钋ᐤ\x01刀注ҽ茀ӄ됹ဤ\x01爀謐⒄ü";
    FUN_004325b6();
    pwStack_134 = L"쒃㤄⒴Đ";
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      pwStack_134 = (wchar_t *)&UNK_009f368c;
      FUN_00a3f6a1();
    }
  }
  else {
    FUN_00866d40();
    pppiStack_138 = local_114;
    pwStack_134 = L"; charset=";
    pppiStack_13c = (int ***)0x9f36b5;
    FUN_00820ebc();
    pwStack_134 = (wchar_t *)0x0;
    pppiStack_138 = (int ***)local_114[0];
    pppiStack_13c = (int ***)0x9f36ca;
    iVar4 = FUN_00420f3f();
    if ((iVar4 == -1) || (iVar4 == -1)) {
      iVar4 = (**(code **)(*piVar1 + 0x14))();
      pwStack_134 = L"咋ᠤʋᚋ偗䊋謬웎⒄İ";
      FUN_0084aa50();
      pwStack_134 = (wchar_t *)*local_114[0];
      local_4 = CONCAT31(local_4._1_3_,9);
      pppiStack_138 = (int ***)0x9f37ad;
      (**(code **)(*piVar1 + 0x2c))();
      *(undefined *)((int)*local_114[0] + iVar4) = 0;
      if (DAT_032bd4e4 == 0) {
        DAT_032bd4e4 = FUN_00863050();
      }
      pwStack_134 = (wchar_t *)*local_114[0];
      pppiStack_138 = (int ***)0x9f37dd;
      FUN_0084b3b0();
      pwStack_134 = (wchar_t *)local_58;
      local_4._0_1_ = 10;
      pppiStack_138 = (int ***)0x9f37fa;
      FUN_00a07640();
      local_4._0_1_ = 0xb;
      if (local_44 == 0) {
        pwStack_134 = (wchar_t *)0x0;
        pppiStack_138 = (int ***)&local_7c;
        pppiStack_13c = (int ***)0x9f3825;
        FID_conflict_assign();
      }
      else {
        pwStack_134 = L"䲋ᠤƋ咍⠤偒䲍䐤蓆〤\x01ఀ寨\xe57b跿⒌ø";
        FUN_00862d20();
        pwStack_134 = (wchar_t *)*local_114[0];
        local_4._0_1_ = 0xc;
        pppiStack_138 = (int ***)0x9f3855;
        ppiVar5 = (int **)FUN_0084b3b0();
        local_4._0_1_ = 0xd;
        if (&local_34 != ppiVar5) {
          pwStack_134 = (wchar_t *)0x0;
          pppiStack_13c = (int ***)0x9f3871;
          pppiStack_138 = (int ***)ppiVar5;
          FID_conflict_assign();
        }
        FUN_0040159c();
        local_4._0_1_ = 0xb;
        FUN_00861510();
      }
      pwStack_134 = L"ࢾ";
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        pwStack_134 = (wchar_t *)&UNK_009f38b6;
        FUN_00a3f6a1();
      }
      local_40 = 7;
      local_44 = 0;
      local_54 = local_54 & 0xffff0000;
      pwStack_134 = L"쒃㤄⒴È";
      _free(local_60);
      if (7 < local_64) {
                    // WARNING: Subroutine does not return
        pwStack_134 = (wchar_t *)&UNK_009f38fc;
        FUN_00a3f6a1();
      }
      local_78 = local_78 & 0xffff0000;
      local_64 = 7;
      uStack_68 = 0;
      local_4 = (uint)local_4._1_3_ << 8;
      thunk_FUN_0043c1dd();
    }
    else {
      pwStack_134 = (wchar_t *)(iVar4 + 10);
      pppiStack_138 = (int ***)&local_7c;
      pppiStack_13c = (int ***)0x9f36f5;
      FUN_00866d40();
      pppiStack_13c = (int ***)0x9f36fc;
      FUN_00852560();
      local_4._0_1_ = 7;
      pwStack_134 = L"䲍ᠤ赑⒌ü";
      FUN_00862d20();
      local_4._0_1_ = 8;
      pwStack_134 = L"쒃贄⑌옘⒄Ĩ";
      FUN_009f2e20();
      local_4._0_1_ = 7;
      FUN_00861510();
      local_4 = (uint)local_4._1_3_ << 8;
      pwStack_134 = L"쒃茄ⒼÈ";
      _free(local_60);
      if (7 < local_64) {
                    // WARNING: Subroutine does not return
        pwStack_134 = (wchar_t *)&UNK_009f3774;
        FUN_00a3f6a1();
      }
    }
    puVar2 = (undefined *)local_118;
    pwStack_134 = (wchar_t *)0x0;
    pppiStack_138 = (int ***)&local_34;
    *(undefined4 *)((int)local_118 + 0x18) = 7;
    *(undefined4 *)((int)local_118 + 0x14) = 0;
    *(undefined2 *)((int)local_118 + 4) = 0;
    pppiStack_13c = (int ***)0x9f394d;
    FID_conflict_assign();
    *(undefined4 *)(puVar2 + 0x1c) = 0;
    pwStack_134 = L"쒃茄ⒼĐ";
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      pwStack_134 = (wchar_t *)&UNK_009f3977;
      FUN_00a3f6a1();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_009f39b0(undefined4 *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = param_1 + 1;
  iVar2 = 0x32;
  do {
    puVar1[0x32] = 0xffffffff;
    *puVar1 = 0;
    puVar1 = puVar1 + 1;
    iVar2 = iVar2 + -1;
  } while (iVar2 != 0);
  *param_1 = 0;
  return;
}



undefined4 __thiscall FUN_009f39e0(int param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  
  uVar2 = 0;
  piVar3 = (int *)(param_1_00 + 0xcc);
  do {
    if (*piVar3 == param_1) {
      iVar1 = *(int *)(param_1_00 + 4 + uVar2 * 4);
      return CONCAT31((int3)((uint)iVar1 >> 8),iVar1 != 0);
    }
    uVar2 = uVar2 + 1;
    piVar3 = piVar3 + 1;
  } while (uVar2 < 0x32);
  return 0;
}



void __thiscall FUN_009f3a20(int *param_1_00,int param_1,int param_2)

{
  if ((int *)param_1_00[*param_1_00 + 1] != (int *)0x0) {
    (**(code **)(*(int *)param_1_00[*param_1_00 + 1] + 4))(1);
  }
  param_1_00[*param_1_00 + 1] = param_2;
  param_1_00[*param_1_00 + 0x33] = param_1;
  *param_1_00 = *param_1_00 + 1;
  if (*param_1_00 == 0x32) {
    *param_1_00 = 0;
  }
  return;
}



undefined ** FUN_009f3a60(void)

{
  return &PTR_PTR_00d97be8;
}



undefined * FUN_009f3a70(void)

{
  return &DAT_032ea374;
}



undefined ** FUN_009f3a80(void)

{
  return &PTR_u_wxHtmlListBox_0323dcfc;
}



char __thiscall
thunk_FUN_009572e0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
                  undefined4 param_4,uint param_5,undefined4 param_6)

{
  char cVar1;
  uint uVar2;
  void *pvVar3;
  undefined4 uVar4;
  int **unaff_FS_OFFSET;
  undefined auStack_20 [20];
  int *piStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdc163;
  piStack_c = *unaff_FS_OFFSET;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  *unaff_FS_OFFSET = (int *)&piStack_c;
  if ((param_5 & 0x1f200000) == 0x46) {
    param_5 = param_5 | 0x10000000;
  }
  cVar1 = FUN_0092fcc0(param_1,param_2,param_3,param_4,param_5 | 0x80050000,param_6);
  if (cVar1 != '\0') {
    if ((param_5 & 0x40) != 0) {
      pvVar3 = operator_new(0x18);
      uStack_4 = 0;
      if (pvVar3 == (void *)0x0) {
        pvVar3 = (void *)0x0;
      }
      else {
        FUN_0086a600(uVar2);
        *(undefined **)((int)pvVar3 + 0x14) = &LAB_00956940;
        *(undefined *)((int)pvVar3 + 4) = 0;
      }
      uStack_4 = 0xffffffff;
      param_1_00[0x69] = (int)pvVar3;
    }
    uVar4 = FUN_0091de40(auStack_20);
    uStack_4 = 1;
    (**(code **)(*param_1_00 + 0x17c))(uVar4);
    puStack_8 = (undefined *)0xffffffff;
    FUN_0083e850();
    if (param_1_00 != (int *)0x3238b20) {
      FUN_0083ea60(&PTR_vftable_03238cd0);
    }
    param_1_00[0x6e] = DAT_03238cd8;
    *(undefined *)(param_1_00 + 0x6f) = DAT_03238cdc;
    *(undefined *)((int)param_1_00 + 0x1bd) = DAT_03238cdd;
    *(undefined *)((int)param_1_00 + 0x1be) = DAT_03238cde;
    *(undefined *)((int)param_1_00 + 0x1bf) = DAT_03238cdf;
    *(undefined *)(param_1_00 + 0x70) = DAT_03238ce0;
    (**(code **)(*param_1_00 + 0x184))(2);
    cVar1 = '\x01';
  }
  *unaff_FS_OFFSET = piStack_c;
  return cVar1;
}



int __fastcall FUN_009f3aa0(int param_1)

{
  return param_1 + -0x1c4;
}



undefined4 FUN_009f3ab0(undefined4 param_1,int param_2)

{
  if (param_2 == 2) {
    FUN_009eefb0(param_1,0);
    return param_1;
  }
  FUN_009eefb0(param_1,param_2);
  return param_1;
}



int FUN_009f3af0(int param_1)

{
  char cVar1;
  int iVar2;
  
  if (param_1 == 0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\generic\\htmllbox.cpp",0x21f,"wxHtmlListBox::GetItemForCell",
                   &DAT_00d97194,0xd97c58);
    }
  }
  else {
    iVar2 = FUN_009f4fe0();
    if (iVar2 == 0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\generic\\htmllbox.cpp",0x223,"wxHtmlListBox::GetItemForCell",
                     &DAT_00d97194,L"no root cell");
        return 0;
      }
    }
    else {
      cVar1 = FUN_00850a20(&param_1,10);
      if (cVar1 != '\0') {
        return param_1;
      }
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\generic\\htmllbox.cpp",0x229,"wxHtmlListBox::GetItemForCell",
                     "Assert failure",L"unexpected root cell\'s ID");
        return 0;
      }
    }
  }
  return 0;
}



undefined4 __thiscall FUN_009f3bb0(undefined4 param_1_00,byte param_1)

{
  FUN_00957fc0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_009f3bd0(int param_1)

{
  int **ppiVar1;
  int iVar2;
  
  ppiVar1 = (int **)(param_1 + 4);
  iVar2 = 0x32;
  do {
    ppiVar1[0x32] = (int *)0xffffffff;
    if (*ppiVar1 != (int *)0x0) {
      (**(code **)(**ppiVar1 + 4))(1);
      *ppiVar1 = (int *)0x0;
    }
    ppiVar1 = ppiVar1 + 1;
    iVar2 = iVar2 + -1;
  } while (iVar2 != 0);
  return;
}



void __thiscall FUN_009f3c10(int param_1_00,int *param_1,int *param_2)

{
  int **ppiVar1;
  int iVar2;
  
  ppiVar1 = (int **)(param_1_00 + 4);
  iVar2 = 0x32;
  do {
    if ((param_1 <= ppiVar1[0x32]) && (ppiVar1[0x32] <= param_2)) {
      ppiVar1[0x32] = (int *)0xffffffff;
      if (*ppiVar1 != (int *)0x0) {
        (**(code **)(**ppiVar1 + 4))(1);
        *ppiVar1 = (int *)0x0;
      }
    }
    ppiVar1 = ppiVar1 + 1;
    iVar2 = iVar2 + -1;
  } while (iVar2 != 0);
  return;
}



void __fastcall FUN_009f3c60(undefined4 *param_1)

{
  int **ppiVar1;
  uint uVar2;
  int iVar3;
  int **ppiVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beb312;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *param_1 = wxHtmlListBox::vftable;
  param_1[0x5d] = wxHtmlListBox::vftable;
  param_1[0x71] = wxHtmlListBox::vftable;
  param_1[0x72] = wxHtmlListBox::vftable;
  ppiVar1 = (int **)param_1[0x77];
  local_4 = 3;
  if (ppiVar1 != (int **)0x0) {
    iVar3 = 0x32;
    ppiVar4 = ppiVar1;
    do {
      ppiVar4 = ppiVar4 + 1;
      if (*ppiVar4 != (int *)0x0) {
        (**(code **)(**ppiVar4 + 4))(1);
      }
      iVar3 = iVar3 + -1;
    } while (iVar3 != 0);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(ppiVar1);
  }
  if ((undefined4 *)param_1[0x91] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x91])(1,uVar2);
  }
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00863720();
  param_1[0x72] = wxHtmlWindowMouseHelper::vftable;
  param_1[0x71] = wxHtmlWindowInterface::vftable;
  local_4 = 0xffffffff;
  FUN_00957450();
  ExceptionList = local_c;
  return;
}



void FUN_009f3d50(void)

{
  FUN_009f3f90();
  return;
}



void FUN_009f3d60(void)

{
  FUN_009f3f90();
  return;
}



void FUN_009f3d70(void)

{
  FUN_009f3f90();
  return;
}



void __thiscall FUN_009f3da0(int *param_1_00,undefined4 param_1)

{
  FUN_009f3c10(param_1,param_1);
  (**(code **)(*param_1_00 + 0x2c))(param_1);
  return;
}



void __thiscall FUN_009f3dd0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_009f3c10(param_1,param_2);
  (**(code **)(*param_1_00 + 0x30))(param_1,param_2);
  return;
}



void FUN_009f3e00(void)

{
  FUN_009f3bd0();
  FUN_00957ee0();
  return;
}



void FUN_009f3e20(undefined4 param_1)

{
  FUN_009f3bd0();
  FUN_009569a0(param_1);
  return;
}



void __thiscall
FUN_009f3e40(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined **local_34 [5];
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb340;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  cVar1 = FUN_009569f0(param_3);
  if (cVar1 != '\0') {
    uVar3 = FUN_0091de40(local_20);
    local_4 = 0;
    uVar3 = (**(code **)(*param_1_00 + 0x358))(local_34,uVar3,uVar2);
    local_4._0_1_ = 1;
    cVar1 = FUN_00956f60(uVar3,param_1,param_2,param_3);
    local_4 = (uint)local_4._1_3_ << 8;
    local_34[0] = wxObject::vftable;
    FUN_0083e850();
    local_4 = 0xffffffff;
    local_20[0] = wxObject::vftable;
    FUN_0083e850();
    if (cVar1 != '\0') {
      ExceptionList = local_c;
      return;
    }
  }
  FUN_00957080(param_1,param_2,param_3);
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009f3f10(int param_1_00,int param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *(int *)(param_1_00 + -0x1c4);
  uVar2 = FUN_009f3af0(*(undefined4 *)(param_1 + 0x54));
  (**(code **)(iVar1 + 0x35c))(uVar2,param_1);
  return;
}



undefined4 FUN_009f3f40(undefined4 param_1)

{
  FUN_0091de40(param_1);
  return param_1;
}



undefined4 __thiscall FUN_009f3f90(undefined4 param_1_00,byte param_1)

{
  FUN_009f3c60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_009f3fb0(int param_1)

{
  undefined4 *puVar1;
  void *pvVar2;
  undefined4 uVar3;
  
  puVar1 = (undefined4 *)operator_new(8);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = wxHtmlListBoxStyle::vftable;
    puVar1[1] = param_1;
  }
  *(undefined4 **)(param_1 + 0x244) = puVar1;
  pvVar2 = operator_new(0x194);
  if (pvVar2 != (void *)0x0) {
    uVar3 = FUN_009f39b0();
    *(undefined4 *)(param_1 + 0x1dc) = uVar3;
    return;
  }
  *(undefined4 *)(param_1 + 0x1dc) = 0;
  return;
}



void __thiscall FUN_009f40e0(int param_1_00,int *param_1,undefined4 param_2,int *param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  
  uVar4 = FUN_009f3af0(param_2);
  iVar1 = *(int *)(param_1_00 + -0x1c);
  iVar2 = *(int *)(param_1_00 + -0x18);
  iVar5 = FUN_00957d20(*(undefined4 *)(param_1_00 + -0x3c),uVar4);
  iVar3 = param_3[1];
  *param_1 = *param_3 + iVar1 + 2;
  param_1[1] = iVar3 + iVar5 + 2 + iVar2;
  return;
}



undefined4 * __fastcall FUN_009f4140(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb368;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00446386(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  *param_1 = wxPanel::vftable;
  local_4 = 0;
  FUN_00957f50(param_1);
  param_1[0x5d] = wxVarVScrollHelper::vftable;
  *param_1 = wxVScrolledWindow::vftable;
  param_1[0x5d] = wxVScrolledWindow::vftable;
  ExceptionList = local_c;
  return param_1;
}



void FUN_009f41b0(void)

{
  FUN_009f41c0();
  return;
}



undefined4 __thiscall FUN_009f41c0(undefined4 param_1_00,byte param_1)

{
  FUN_00957160();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_009f41e0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb3a6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009f4140(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1 = wxVListBox::vftable;
  param_1[0x5d] = wxVListBox::vftable;
  local_4 = 0;
  param_1[0x6a] = 0;
  param_1[0x6b] = 0;
  FUN_00453f4b();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00956980();
  ExceptionList = local_c;
  return param_1;
}



int __thiscall FUN_009f4260(int param_1_00,int param_1,undefined4 param_2)

{
  int iVar1;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beb3f1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  (**(code **)(**(int **)(param_1_00 + 4) + 0x354))
            (param_1,param_2,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  local_c = (void *)0x0;
  if (*(char *)(param_1 + 0xc) == '\0') {
    iVar1 = FUN_009f5640(&stack0xffffffd8,param_2);
    local_c = (void *)0x1;
    if (param_1 != iVar1) {
      FUN_0083ea60(iVar1);
    }
    *(undefined4 *)(param_1 + 8) = *(undefined4 *)(iVar1 + 8);
    *(undefined *)(param_1 + 0xc) = *(undefined *)(iVar1 + 0xc);
    *(undefined *)(param_1 + 0xd) = *(undefined *)(iVar1 + 0xd);
    *(undefined *)(param_1 + 0xe) = *(undefined *)(iVar1 + 0xe);
    *(undefined *)(param_1 + 0xf) = *(undefined *)(iVar1 + 0xf);
    *(undefined *)(param_1 + 0x10) = *(undefined *)(iVar1 + 0x10);
    local_c = (void *)((uint)local_c & 0xffffff00);
    FUN_0083e850();
  }
  ExceptionList = pvStack_14;
  return param_1;
}



int __thiscall FUN_009f4340(int param_1_00,int param_1,undefined4 param_2)

{
  int iVar1;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beb3f1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  (**(code **)(**(int **)(param_1_00 + 4) + 0x358))
            (param_1,param_2,DAT_0323f878 ^ (uint)&stack0xffffffcc);
  local_c = (void *)0x0;
  if (*(char *)(param_1 + 0xc) == '\0') {
    iVar1 = FUN_009f5660(&stack0xffffffd8,param_2);
    local_c = (void *)0x1;
    if (param_1 != iVar1) {
      FUN_0083ea60(iVar1);
    }
    *(undefined4 *)(param_1 + 8) = *(undefined4 *)(iVar1 + 8);
    *(undefined *)(param_1 + 0xc) = *(undefined *)(iVar1 + 0xc);
    *(undefined *)(param_1 + 0xd) = *(undefined *)(iVar1 + 0xd);
    *(undefined *)(param_1 + 0xe) = *(undefined *)(iVar1 + 0xe);
    *(undefined *)(param_1 + 0xf) = *(undefined *)(iVar1 + 0xf);
    *(undefined *)(param_1 + 0x10) = *(undefined *)(iVar1 + 0x10);
    local_c = (void *)((uint)local_c & 0xffffff00);
    FUN_0083e850();
  }
  ExceptionList = pvStack_14;
  return param_1;
}



undefined4 * __fastcall FUN_009f4420(undefined4 *param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb442;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009f41e0(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  puVar1 = param_1 + 0x71;
  *puVar1 = wxHtmlWindowInterface::vftable;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_009edce0(-(uint)(param_1 != (undefined4 *)0x0) & (uint)puVar1);
  local_4._0_1_ = 2;
  *param_1 = wxHtmlListBox::vftable;
  param_1[0x5d] = wxHtmlListBox::vftable;
  *puVar1 = wxHtmlListBox::vftable;
  param_1[0x72] = wxHtmlListBox::vftable;
  FUN_008633b0();
  local_4 = CONCAT31(local_4._1_3_,3);
  FUN_009f3fb0();
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall
FUN_009f44d0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb442;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009f41e0(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  puVar1 = param_1_00 + 0x71;
  *puVar1 = wxHtmlWindowInterface::vftable;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_009edce0(-(uint)(param_1_00 != (undefined4 *)0x0) & (uint)puVar1);
  local_4._0_1_ = 2;
  *param_1_00 = wxHtmlListBox::vftable;
  param_1_00[0x5d] = wxHtmlListBox::vftable;
  *puVar1 = wxHtmlListBox::vftable;
  param_1_00[0x72] = wxHtmlListBox::vftable;
  FUN_008633b0();
  local_4 = CONCAT31(local_4._1_3_,3);
  FUN_009f3fb0();
  FUN_009572e0(param_1,param_2,param_3,param_4,param_5,param_6);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_009f45b0(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  (**(code **)(*param_1_00 + 0x34c))(param_1,param_2);
  return param_1;
}



void __fastcall FUN_009f45e0(int *param_1)

{
  char cVar1;
  int *piVar2;
  undefined4 uVar3;
  int *piVar4;
  int unaff_ESI;
  undefined4 unaff_retaddr;
  void *local_88;
  undefined auStack_84 [4];
  uint uStack_80;
  undefined auStack_7c [12];
  undefined4 uStack_70;
  uint uStack_6c;
  void *pvStack_68;
  undefined auStack_60 [16];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined auStack_34 [4];
  uint uStack_30;
  uint uStack_24;
  void *pvStack_20;
  uint uStack_1c;
  void *pvStack_18;
  undefined4 uStack_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00beb4a4;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_009f39e0();
  if (cVar1 == '\0') {
    local_88 = operator_new(0x1320);
    local_4 = 0;
    if (local_88 == (void *)0x0) {
      piVar2 = (int *)0x0;
    }
    else {
      piVar2 = (int *)FUN_00a04200();
    }
    local_4 = 0xffffffff;
    local_88 = operator_new(0xc);
    local_4 = 1;
    if (local_88 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = FUN_0094bd30();
    }
    local_4 = 0xffffffff;
    (**(code **)(*piVar2 + 0x38))(uVar3,0x3ff0000000000000);
    piVar2[0x10] = (int)(param_1 + 0x78);
    FUN_004325b6(PTR_DAT_03236318);
    uStack_10 = 2;
    FUN_004325b6(PTR_DAT_03236318);
    uStack_10 = CONCAT31(uStack_10._1_3_,3);
    FUN_00a03540(0xffffffff,auStack_84,&uStack_3c);
    _free(pvStack_68);
    if (7 < uStack_6c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_80);
    }
    uStack_6c = 7;
    uStack_70 = 0;
    uStack_80 = uStack_80 & 0xffff0000;
    uStack_10 = 0xffffffff;
    _free(pvStack_20);
    if (7 < uStack_24) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(pvStack_38);
    }
    (**(code **)(*param_1 + 0x350))(auStack_60,uStack_8);
    local_4 = 4;
    piVar4 = (int *)FUN_00a07600();
    local_4 = 0xffffffff;
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
    if (piVar4 == (int *)0x0) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\generic\\htmllbox.cpp",0x146,"wxHtmlListBox::CacheItem",
                     &DAT_00d97194,L"wxHtmlParser::Parse() returned NULL?");
      }
    }
    else {
      if ((int *)piVar2[0x1e] != (int *)0x0) {
        (**(code **)(*(int *)piVar2[0x1e] + 4))();
      }
      (**(code **)(*piVar2 + 4))();
      FUN_0081c0f1(&DAT_00d3b284);
      uStack_8 = (undefined *)0x5;
      piVar2 = (int *)FUN_00841f90(auStack_34,auStack_7c,unaff_retaddr);
      uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,6);
      if (piVar4 + 0xd != piVar2) {
        FID_conflict_assign(piVar2,0,0xffffffff);
      }
      _free(pvStack_18);
      if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_30);
      }
      uStack_30 = uStack_30 & 0xffff0000;
      uStack_1c = 7;
      pvStack_20 = (void *)0x0;
      uStack_8 = (undefined *)0xffffffff;
      FUN_0081b5bc();
      (**(code **)(*param_1 + 0x27c))(&stack0xffffff74,&local_88);
      local_88 = (void *)param_1[0x6b];
      (**(code **)(*piVar4 + 0x24))(unaff_ESI + param_1[0x6a] * -2);
      FUN_009f3a20(unaff_retaddr,piVar4);
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009f4920(int *param_1_00,undefined4 param_1,int *param_2,int param_3)

{
  int iVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  char cVar5;
  uint uVar6;
  uint uVar7;
  undefined4 uVar8;
  int *piVar9;
  int *piVar10;
  undefined4 uStack_84;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined4 uStack_78;
  undefined **appuStack_74 [5];
  undefined **local_60;
  undefined4 uStack_5c;
  undefined **ppuStack_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  undefined4 uStack_48;
  undefined4 uStack_44;
  undefined ***local_40;
  int local_3c;
  undefined4 local_38;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb516;
  local_c = ExceptionList;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffff64;
  ExceptionList = &local_c;
  bVar3 = false;
  bVar2 = false;
  FUN_009f45e0(param_3);
  uVar7 = 0;
  piVar10 = (int *)(param_1_00[0x77] + 0xcc);
  do {
    if (*piVar10 == param_3) {
      piVar10 = *(int **)(param_1_00[0x77] + 4 + uVar7 * 4);
      if (piVar10 != (int *)0x0) {
        local_40 = (undefined ***)0x0;
        local_3c = 0;
        FUN_009ee000(uVar6);
        local_4 = 0;
        cVar5 = FUN_009569f0(param_3);
        if (cVar5 == '\0') {
LAB_009f4a81:
          bVar4 = false;
        }
        else {
          iVar1 = *param_1_00;
          uVar8 = FUN_008f7e50(0xb);
          piVar9 = (int *)(**(code **)(iVar1 + 0x354))(&local_60,uVar8);
          bVar2 = false;
          local_c = (void *)CONCAT31(local_c._1_3_,1);
          cVar5 = (**(code **)(*piVar9 + 0x24))();
          if (cVar5 == '\0') {
            iVar1 = *param_1_00;
            uVar8 = FUN_008f7e50(0x12);
            piVar9 = (int *)(**(code **)(iVar1 + 0x358))(appuStack_74,uVar8);
            bVar3 = true;
            bVar2 = true;
            local_c = (void *)0x2;
            cVar5 = (**(code **)(*piVar9 + 0x24))();
            if (cVar5 == '\0') goto LAB_009f4a81;
          }
          bVar3 = true;
          bVar4 = true;
        }
        local_4 = 1;
        if (bVar2) {
          appuStack_74[0] = wxObject::vftable;
          FUN_0083e850();
        }
        local_4 = 0;
        if (bVar3) {
          local_60 = wxObject::vftable;
          FUN_0083e850();
        }
        if (bVar4) {
          uStack_5c = DAT_03238d10;
          uStack_54 = DAT_03238d10;
          local_60 = DAT_03238d0c;
          ppuStack_58 = DAT_03238d0c;
          uStack_50 = 0xffffffff;
          uStack_4c = 0xffffffff;
          uStack_48 = 0;
          uStack_44 = 0;
          uStack_84 = 0x7fffffff;
          uStack_80 = 0x7fffffff;
          uStack_7c = 0;
          uStack_78 = 0;
          FUN_009f4e60(&uStack_7c,piVar10,&uStack_84,piVar10);
          local_3c = param_1_00[0x91];
          local_40 = &local_60;
          local_38 = 1;
        }
        (**(code **)(*piVar10 + 0x28))(param_1,*param_2 + 2,param_2[1] + 2,0,0x7fffffff,&local_40);
        local_4 = 0xffffffff;
        FUN_009ee060();
        ExceptionList = local_c;
        return;
      }
      break;
    }
    uVar7 = uVar7 + 1;
    piVar10 = piVar10 + 1;
  } while (uVar7 < 0x32);
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\generic\\htmllbox.cpp",0x199,"wxHtmlListBox::OnDrawItem",
                 &DAT_00d97194,L"this cell should be cached!");
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009f4c10(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined local_c4 [180];
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb54b;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_c4);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_c;
  FUN_009efae0(*(undefined4 *)(param_1_00 + 0x40),param_2);
  local_4 = 0;
  (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_c4,uVar1);
  puStack_8 = (undefined *)0xffffffff;
  FUN_009ef2b0();
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_009f4cc0(int param_1_00,int *param_1,undefined4 *param_2)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  int *piVar7;
  
  iVar4 = FUN_00957f00(param_1[1]);
  if (iVar4 == -1) {
    return 0xffffff00;
  }
  iVar1 = *(int *)(param_1_00 + 0x1a8);
  iVar2 = *(int *)(param_1_00 + 0x1ac);
  iVar5 = FUN_00957d20(*(undefined4 *)(param_1_00 + 0x188),iVar4);
  *param_1 = *param_1 - (iVar1 + 2);
  param_1[1] = param_1[1] - (iVar5 + 2 + iVar2);
  FUN_009f45e0(iVar4);
  uVar6 = 0;
  piVar7 = (int *)(*(int *)(param_1_00 + 0x1dc) + 0xcc);
  do {
    if (*piVar7 == iVar4) {
      uVar3 = *(undefined4 *)(*(int *)(param_1_00 + 0x1dc) + 4 + uVar6 * 4);
      *param_2 = uVar3;
      return CONCAT31((int3)((uint)uVar3 >> 8),1);
    }
    uVar6 = uVar6 + 1;
    piVar7 = piVar7 + 1;
  } while (uVar6 < 0x32);
  *param_2 = 0;
  return 1;
}



void __fastcall FUN_009f4d70(int *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  undefined4 unaff_ESI;
  undefined4 *local_18;
  undefined4 local_14 [3];
  undefined local_8 [8];
  
  thunk_FUN_0091abd0();
  if (*(char *)(param_1 + 0x73) != '\0') {
    puVar2 = (undefined4 *)FUN_00910c30(local_8);
    local_18 = (undefined4 *)*puVar2;
    local_14[0] = puVar2[1];
    puVar2 = local_14;
    (**(code **)(*param_1 + 0x260))(&local_18,puVar2);
    local_18 = puVar2;
    cVar1 = FUN_009f4cc0(&local_18,&stack0xffffffe4);
    if (cVar1 != '\0') {
      FUN_009efd80(unaff_ESI,&local_18);
    }
  }
  return;
}



void FUN_009f4e00(int param_1)

{
  int iVar1;
  char cVar2;
  undefined4 local_8;
  undefined4 local_4;
  
  iVar1 = param_1;
  local_8 = *(undefined4 *)(param_1 + 0x2c);
  local_4 = *(undefined4 *)(param_1 + 0x30);
  cVar2 = FUN_009f4cc0(&local_8,&param_1);
  if ((cVar2 != '\0') && (cVar2 = FUN_009ee290(param_1,&local_8,iVar1), cVar2 != '\0')) {
    return;
  }
  *(undefined *)(iVar1 + 0x24) = 1;
  return;
}



void __thiscall
FUN_009f4e60(undefined4 *param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 *param_3,
            undefined4 param_4)

{
  param_1_00[6] = param_2;
  param_1_00[7] = param_4;
  *param_1_00 = *param_1;
  param_1_00[1] = param_1[1];
  param_1_00[2] = *param_3;
  param_1_00[3] = param_3[1];
  return;
}



undefined ** FUN_009f4e90(void)

{
  return &PTR_u_wxHtmlCell_0323dd8c;
}



void __thiscall FUN_009f4ea0(int param_1_00,int param_1,int param_2)

{
  *(int *)(param_1_00 + 0x24) = param_1;
  if (param_1 == 2) {
    param_2 = param_2 - (*(int *)(param_1_00 + 0x14) + 1) / 2;
    *(int *)(param_1_00 + 0x18) = *(int *)(param_1_00 + 0x18) + param_2;
    *(int *)(param_1_00 + 0x28) = param_2;
    return;
  }
  if (param_1 == 1) {
    param_2 = (*(int *)(param_1_00 + 0x14) + 1) / 6 + param_2;
    *(int *)(param_1_00 + 0x18) = *(int *)(param_1_00 + 0x18) + param_2;
    *(int *)(param_1_00 + 0x28) = param_2;
    return;
  }
  *(undefined4 *)(param_1_00 + 0x28) = 0;
  *(int *)(param_1_00 + 0x18) = *(int *)(param_1_00 + 0x18) + *(int *)(param_1_00 + 0x28);
  return;
}



undefined4 __fastcall FUN_009f4f00(int *param_1)

{
  int iVar1;
  int *unaff_retaddr;
  
  iVar1 = (**(code **)(*param_1 + 0x14))(0,0);
  if (iVar1 != 0) {
    (**(code **)(*unaff_retaddr + 0x28))(0,1);
    return 0;
  }
  (**(code **)(*unaff_retaddr + 0x28))(0,0);
  return 0;
}



uint __thiscall FUN_009f4f40(int param_1_00,uint *param_1)

{
  uint in_EAX;
  
  if (*(char *)(param_1_00 + 0x30) == '\0') {
    in_EAX = *(uint *)(param_1_00 + 0x20);
    if (((int)in_EAX < (int)*param_1) &&
       ((int)*param_1 < (int)(*(int *)(param_1_00 + 0x14) + in_EAX))) {
      *param_1 = in_EAX;
      return CONCAT31((int3)(in_EAX >> 8),1);
    }
  }
  return in_EAX & 0xffffff00;
}



void __fastcall FUN_009f4f70(int *param_1)

{
  (**(code **)(*param_1 + 0x20))(0,0);
  return;
}



undefined4 FUN_009f4f80(void)

{
  return 0;
}



int __thiscall FUN_009f4f90(int param_1_00,int param_1,int param_2,byte param_3)

{
  if ((((((param_1 < 0) || (*(int *)(param_1_00 + 0x10) <= param_1)) || (param_2 < 0)) ||
       (*(int *)(param_1_00 + 0x14) <= param_2)) &&
      (((param_3 & 4) == 0 ||
       ((-1 < param_2 &&
        ((*(int *)(param_1_00 + 0x14) <= param_2 || (*(int *)(param_1_00 + 0x10) <= param_1))))))))
     && (((param_3 & 2) == 0 ||
         ((param_2 < *(int *)(param_1_00 + 0x14) && ((param_2 < 0 || (param_1 < 0)))))))) {
    param_1_00 = 0;
  }
  return param_1_00;
}



void __fastcall FUN_009f4fe0(int param_1)

{
  int iVar1;
  
  for (iVar1 = *(int *)(param_1 + 0xc); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
  }
  return;
}



undefined4 __thiscall FUN_009f5000(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  
  uVar5 = 0;
  for (iVar2 = *(int *)(param_1_00 + 0xc); iVar2 != 0; iVar2 = *(int *)(iVar2 + 0xc)) {
    uVar5 = uVar5 + 1;
  }
  uVar4 = 0;
  for (iVar2 = *(int *)(param_1 + 0xc); iVar2 != 0; iVar2 = *(int *)(iVar2 + 0xc)) {
    uVar4 = uVar4 + 1;
  }
  iVar2 = param_1_00;
  iVar3 = param_1;
  if (uVar4 < uVar5) {
    iVar6 = uVar5 - uVar4;
    do {
      iVar6 = iVar6 + -1;
      iVar2 = *(int *)(iVar2 + 0xc);
    } while (iVar6 != 0);
  }
  else if (uVar5 < uVar4) {
    iVar6 = uVar4 - uVar5;
    do {
      iVar6 = iVar6 + -1;
      iVar3 = *(int *)(iVar3 + 0xc);
    } while (iVar6 != 0);
  }
  if (param_1 != param_1_00) {
    do {
      iVar1 = iVar3;
      iVar6 = iVar2;
      if ((iVar6 == 0) || (iVar1 == 0)) {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_00840480("..\\..\\src\\html\\htmlcell.cpp",0x158,"wxHtmlCell::IsBefore",
                       "Assert failure",L"Cells are in different trees");
        }
        return 0;
      }
      iVar2 = *(int *)(iVar6 + 0xc);
      iVar3 = *(int *)(iVar1 + 0xc);
    } while (*(int *)(iVar6 + 0xc) != *(int *)(iVar1 + 0xc));
    while (iVar6 != iVar1) {
      iVar6 = *(int *)(iVar6 + 8);
      if (iVar6 == 0) {
        return 0;
      }
    }
  }
  return 1;
}



undefined ** FUN_009f50c0(void)

{
  return &PTR_u_wxHtmlWordCell_0323dda4;
}



undefined4 __fastcall FUN_009f50d0(int *param_1)

{
  int iVar1;
  int *unaff_retaddr;
  
  iVar1 = (**(code **)(*param_1 + 0x14))(0,0);
  if (iVar1 == 0) {
    (**(code **)(*unaff_retaddr + 0x28))(0,2);
    return 0;
  }
  FUN_009f4f00(0,unaff_retaddr);
  return 0;
}



undefined ** FUN_009f5120(void)

{
  return &PTR_u_wxHtmlContainerCell_0323ddbc;
}



void __thiscall FUN_009f5130(int param_1_00,int param_1,byte param_2,int param_3)

{
  if (param_3 != 1) {
    param_1 = -param_1;
  }
  if ((param_2 & 0x10) != 0) {
    *(int *)(param_1_00 + 0x58) = param_1;
  }
  if ((param_2 & 0x20) != 0) {
    *(int *)(param_1_00 + 0x5c) = param_1;
  }
  if ((param_2 & 0x40) != 0) {
    *(int *)(param_1_00 + 0x60) = param_1;
  }
  *(undefined4 *)(param_1_00 + 0xcc) = 0xffffffff;
  if ((char)param_2 < '\0') {
    *(int *)(param_1_00 + 100) = param_1;
  }
  return;
}



char __thiscall FUN_009f5170(int *param_1_00,int *param_1,undefined4 param_3)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  char cVar4;
  int *piStack_4;
  
  if (*(char *)(param_1_00 + 0xc) != '\0') {
    piStack_4 = param_1_00;
    piVar3 = (int *)(**(code **)(*param_1_00 + 0x1c))();
    piStack_4 = (int *)(*param_1 - param_1_00[8]);
    cVar4 = '\0';
    if (piVar3 != (int *)0x0) {
      do {
        cVar2 = (**(code **)(*piVar3 + 0x38))(&piStack_4,param_3);
        if (cVar2 != '\0') {
          cVar4 = '\x01';
        }
        piVar3 = (int *)piVar3[2];
      } while (piVar3 != (int *)0x0);
      if (cVar4 != '\0') {
        *param_1 = param_1_00[8] + (int)piStack_4;
      }
    }
    return cVar4;
  }
  iVar1 = param_1_00[8];
  if ((iVar1 < *param_1) && (*param_1 < param_1_00[5] + iVar1)) {
    *param_1 = iVar1;
    return '\x01';
  }
  return '\0';
}



void __thiscall FUN_009f5200(int param_1_00,undefined4 param_1,int param_2,int param_3,int *param_4)

{
  int iVar1;
  int *piVar2;
  
  piVar2 = *(int **)(param_1_00 + 0x70);
  if (piVar2 != (int *)0x0) {
    iVar1 = *param_4;
    do {
      if ((iVar1 != 0) &&
         ((*(int **)(iVar1 + 0x18) == piVar2 || (*(int **)(iVar1 + 0x1c) == piVar2)))) {
        param_4[2] = 2;
      }
      (**(code **)(*piVar2 + 0x2c))
                (param_1,*(int *)(param_1_00 + 0x1c) + param_2,*(int *)(param_1_00 + 0x20) + param_3
                 ,param_4);
      iVar1 = *param_4;
      if (iVar1 != 0) {
        if (*(int **)(iVar1 + 0x1c) == piVar2) {
          param_4[2] = 0;
        }
        else if (*(int **)(iVar1 + 0x18) == piVar2) {
          param_4[2] = 1;
        }
      }
      piVar2 = (int *)piVar2[2];
    } while (piVar2 != (int *)0x0);
  }
  return;
}



undefined4 __thiscall FUN_009f5280(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  undefined4 uVar2;
  
  piVar1 = (int *)(**(code **)(*param_1_00 + 0x44))(param_1,param_2,1);
  if (piVar1 != (int *)0x0) {
    uVar2 = (**(code **)(*piVar1 + 0x14))(param_1,param_2);
    return uVar2;
  }
  return 0;
}



void __thiscall FUN_009f52b0(int param_1_00,int param_1)

{
  int iVar1;
  
  if (*(int *)(param_1_00 + 0x70) != 0) {
    *(int *)(*(int *)(param_1_00 + 0x74) + 8) = param_1;
    *(int *)(param_1_00 + 0x74) = param_1;
    if (param_1 != 0) {
      for (iVar1 = *(int *)(param_1 + 8); iVar1 != 0; iVar1 = *(int *)(iVar1 + 8)) {
        iVar1 = *(int *)(*(int *)(param_1_00 + 0x74) + 8);
        *(int *)(param_1_00 + 0x74) = iVar1;
      }
    }
    *(int *)(param_1 + 0xc) = param_1_00;
    *(undefined4 *)(param_1_00 + 0xcc) = 0xffffffff;
    return;
  }
  *(int *)(param_1_00 + 0x74) = param_1;
  *(int *)(param_1_00 + 0x70) = param_1;
  *(int *)(param_1 + 0xc) = param_1_00;
  *(undefined4 *)(param_1_00 + 0xcc) = 0xffffffff;
  return;
}



int __thiscall FUN_009f5310(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *(int **)(param_1_00 + 0x70);
  while( true ) {
    if (piVar1 == (int *)0x0) {
      return 0;
    }
    iVar2 = (**(code **)(*piVar1 + 0x30))(param_1,param_2);
    if (iVar2 != 0) break;
    piVar1 = (int *)piVar1[2];
  }
  return iVar2;
}



int __thiscall FUN_009f5340(int param_1_00,int param_1,int param_2,uint param_3)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int local_4;
  
  if ((param_3 & 1) == 0) {
    if ((param_3 & 4) == 0) {
      if ((param_3 & 2) != 0) {
        piVar3 = *(int **)(param_1_00 + 0x70);
        local_4 = 0;
        if (piVar3 != (int *)0x0) {
          do {
            if ((piVar3[4] != 0) || (piVar3[5] != 0)) {
              iVar2 = piVar3[8];
              if ((param_2 < piVar3[5] + iVar2) && ((param_2 < iVar2 || (param_1 < piVar3[7]))))
              break;
              iVar2 = (**(code **)(*piVar3 + 0x44))(param_1 - piVar3[7],param_2 - iVar2,param_3);
              if (iVar2 != 0) {
                local_4 = iVar2;
              }
            }
            piVar3 = (int *)piVar3[2];
          } while (piVar3 != (int *)0x0);
          if (local_4 != 0) {
            return local_4;
          }
        }
      }
    }
    else {
      piVar3 = *(int **)(param_1_00 + 0x70);
      if (piVar3 != (int *)0x0) {
        while ((((piVar3[4] == 0 && (piVar3[5] == 0)) ||
                ((iVar2 = piVar3[8], iVar2 <= param_2 &&
                 ((piVar3[5] + iVar2 <= param_2 || (piVar3[7] + piVar3[4] <= param_1)))))) ||
               (iVar2 = (**(code **)(*piVar3 + 0x44))(param_1 - piVar3[7],param_2 - iVar2,param_3),
               iVar2 == 0))) {
          piVar3 = (int *)piVar3[2];
          if (piVar3 == (int *)0x0) {
            return 0;
          }
        }
        return iVar2;
      }
    }
  }
  else {
    piVar3 = *(int **)(param_1_00 + 0x70);
    if (piVar3 != (int *)0x0) {
      while( true ) {
        iVar2 = piVar3[7];
        iVar1 = piVar3[8];
        if ((((iVar2 <= param_1) && (param_1 < piVar3[4] + iVar2)) && (iVar1 <= param_2)) &&
           (param_2 < piVar3[5] + iVar1)) break;
        piVar3 = (int *)piVar3[2];
        if (piVar3 == (int *)0x0) {
          return 0;
        }
      }
      iVar2 = (**(code **)(*piVar3 + 0x44))(param_1 - iVar2,param_2 - iVar1,param_3);
      return iVar2;
    }
  }
  return 0;
}



undefined4 __thiscall FUN_009f54a0(int *param_1_00,undefined4 param_1,undefined4 *param_2)

{
  int *piVar1;
  undefined4 uVar2;
  undefined4 unaff_ESI;
  undefined4 unaff_retaddr;
  
  piVar1 = (int *)(**(code **)(*param_1_00 + 0x44))(*param_2,param_2[1],1);
  if (piVar1 != (int *)0x0) {
    uVar2 = (**(code **)(*piVar1 + 0x34))(unaff_ESI,param_2,unaff_retaddr);
    return uVar2;
  }
  return 0;
}



int __fastcall FUN_009f54e0(int param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = *(int **)(param_1 + 0x70);
  while( true ) {
    if (piVar1 == (int *)0x0) {
      return 0;
    }
    iVar2 = (**(code **)(*piVar1 + 0x48))();
    if (iVar2 != 0) break;
    piVar1 = (int *)piVar1[2];
  }
  return iVar2;
}



int __fastcall FUN_009f5500(int param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  
  if (*(int *)(param_1 + 0x70) == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = (**(code **)(**(int **)(param_1 + 0x74) + 0x4c))();
    if (iVar2 == 0) {
      iVar2 = 0;
      for (piVar1 = *(int **)(param_1 + 0x70); piVar1 != (int *)0x0; piVar1 = (int *)piVar1[2]) {
        iVar3 = (**(code **)(*piVar1 + 0x4c))();
        if (iVar3 != 0) {
          iVar2 = iVar3;
        }
      }
      return iVar2;
    }
  }
  return iVar2;
}



undefined4 __fastcall FUN_009f5540(int *param_1)

{
  char cVar1;
  int *piVar2;
  
  piVar2 = (int *)(**(code **)(*param_1 + 0x1c))();
  while( true ) {
    if (piVar2 == (int *)0x0) {
      return 1;
    }
    cVar1 = (**(code **)(*piVar2 + 0x40))();
    if (((cVar1 == '\0') || (piVar2[4] != 0)) || (piVar2[5] != 0)) break;
    piVar2 = (int *)piVar2[2];
  }
  return 0;
}



undefined ** FUN_009f5580(void)

{
  return &PTR_u_wxHtmlColourCell_0323ddd4;
}



void __thiscall
FUN_009f5590(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  (**(code **)(*param_1_00 + 0x2c))(param_1,param_2,param_3,param_6);
  return;
}



undefined ** FUN_009f55b0(void)

{
  return &PTR_u_wxHtmlFontCell_0323ddec;
}



int __fastcall FUN_009f55c0(int *param_1)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  
  if (param_1[1] != 0) {
    while (param_1[1] != *param_1) {
      piVar3 = *(int **)(param_1[1] + 8);
      if (piVar3 == (int *)0x0) {
        do {
          iVar2 = *(int *)(param_1[1] + 0xc);
          param_1[1] = iVar2;
          if (iVar2 == 0) {
            return 0;
          }
        } while (*(int *)(iVar2 + 8) == 0);
        piVar3 = *(int **)(iVar2 + 8);
      }
      param_1[1] = (int)piVar3;
      iVar2 = (**(code **)(*piVar3 + 0x1c))();
      while (iVar2 != 0) {
        piVar3 = (int *)(**(code **)(*(int *)param_1[1] + 0x1c))();
        param_1[1] = (int)piVar3;
        iVar2 = (**(code **)(*piVar3 + 0x1c))();
      }
      cVar1 = (**(code **)(*(int *)param_1[1] + 0x40))();
      if (cVar1 != '\0') {
        return param_1[1];
      }
    }
    param_1[1] = 0;
  }
  return 0;
}



undefined4 FUN_009f5640(undefined4 param_1)

{
  FUN_008ff080(param_1,0xe);
  return param_1;
}



undefined4 FUN_009f5660(undefined4 param_1)

{
  FUN_008ff080(param_1,0xd);
  return param_1;
}



void __thiscall FUN_009f5680(int param_1_00,int *param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  
  *param_1 = *(int *)(param_1_00 + 0x1c);
  iVar2 = *(int *)(param_1_00 + 0xc);
  param_1[1] = *(int *)(param_1_00 + 0x20);
  while ((iVar2 != 0 && (iVar2 != param_2))) {
    *param_1 = *param_1 + *(int *)(iVar2 + 0x1c);
    piVar1 = (int *)(iVar2 + 0x20);
    iVar2 = *(int *)(iVar2 + 0xc);
    param_1[1] = param_1[1] + *piVar1;
  }
  return;
}



// WARNING: Removing unreachable block (ram,0x009f598a)

void __fastcall FUN_009f56c0(int *param_1)

{
  int **ppiVar1;
  int *piVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int *piVar10;
  int *piVar11;
  int *piVar12;
  int iVar13;
  int iStack_28;
  int iStack_20;
  int iStack_1c;
  int iStack_14;
  int iStack_c;
  int iStack_4;
  
  (**(code **)(*param_1 + 0x20))(0,0);
  if (param_1[0x33] == iStack_4) {
    return;
  }
  param_1[0x33] = iStack_4;
  if (iStack_4 < 1) {
    param_1[4] = 0;
    piVar11 = (int *)param_1[0x1c];
    if (piVar11 == (int *)0x0) {
      return;
    }
    do {
      (**(code **)(*piVar11 + 0x24))(0);
      piVar11 = (int *)piVar11[2];
    } while (piVar11 != (int *)0x0);
    return;
  }
  iVar7 = param_1[0x18];
  uVar4 = param_1[0x20];
  iStack_c = 0;
  iStack_1c = 0;
  iStack_28 = 0;
  iVar13 = 0;
  iStack_20 = 0;
  param_1[0x34] = 0;
  if (param_1[0x21] == 2) {
    if ((int)uVar4 < 0) {
      param_1[4] = (int)((uVar4 + 100) * iStack_4) / 100;
      goto LAB_009f5791;
    }
    uVar4 = uVar4 * iStack_4;
    iStack_4 = (int)uVar4 / 100 + ((int)uVar4 >> 0x1f);
    uVar4 = uVar4 >> 0x1f;
LAB_009f578c:
    uVar4 = uVar4 + iStack_4;
  }
  else if ((int)uVar4 < 0) goto LAB_009f578c;
  param_1[4] = uVar4;
LAB_009f5791:
  piVar11 = (int *)param_1[0x1c];
  if (piVar11 != (int *)0x0) {
    iVar8 = param_1[0x16];
    if (iVar8 < 0) {
      iVar8 = (int)((ulonglong)((longlong)(param_1[4] * iVar8) * -0x51eb851f) >> 0x20);
      iVar8 = (iVar8 >> 5) - (iVar8 >> 0x1f);
    }
    iVar9 = param_1[0x17];
    if (iVar9 < 0) {
      iVar9 = (int)((ulonglong)((longlong)(param_1[4] * iVar9) * -0x51eb851f) >> 0x20);
      iVar9 = (iVar9 >> 5) - (iVar9 >> 0x1f);
    }
    do {
      (**(code **)(*piVar11 + 0x24))((param_1[4] - iVar9) - iVar8);
      piVar11 = (int *)piVar11[2];
    } while (piVar11 != (int *)0x0);
  }
  iVar8 = param_1[0x16];
  if (iVar8 < 0) {
    iVar8 = (int)((ulonglong)((longlong)(param_1[4] * iVar8) * -0x51eb851f) >> 0x20);
    iVar8 = (iVar8 >> 5) - (iVar8 >> 0x1f);
  }
  iVar9 = param_1[0x17];
  if (iVar9 < 0) {
    iVar9 = (int)((ulonglong)((longlong)(param_1[4] * iVar9) * -0x51eb851f) >> 0x20);
    iVar9 = (iVar9 >> 5) - (iVar9 >> 0x1f);
  }
  piVar11 = (int *)param_1[0x1c];
  iVar9 = (param_1[4] - iVar9) - iVar8;
  piVar12 = piVar11;
joined_r0x009f584c:
  if (piVar11 == (int *)0x0) {
    iVar7 = param_1[0x19] + iVar13 + iStack_28 + iVar7;
    param_1[5] = iVar7;
    if (iVar7 < param_1[0x1a]) {
      if (param_1[0x1b] != 4) {
        iVar7 = param_1[0x1a] - iVar7;
        if (param_1[0x1b] == 1) {
          iVar7 = iVar7 / 2;
        }
        for (piVar11 = (int *)param_1[0x1c]; piVar11 != (int *)0x0; piVar11 = (int *)piVar11[2]) {
          (**(code **)(*piVar11 + 0x20))(piVar11[7],piVar11[8] + iVar7);
        }
      }
      param_1[5] = param_1[0x1a];
    }
    if (param_1[0x34] < iStack_20) {
      param_1[0x34] = iStack_20;
    }
    iVar7 = param_1[0x17];
    iVar13 = iVar7;
    if (iVar7 < 0) {
      iVar13 = (int)((ulonglong)((longlong)(param_1[4] * iVar7) * -0x51eb851f) >> 0x20);
      iVar13 = (iVar13 >> 5) - (iVar13 >> 0x1f);
    }
    param_1[0x34] = param_1[0x34] + iVar13 + iVar8;
    if (iVar7 < 0) {
      iVar7 = (int)((ulonglong)((longlong)(param_1[4] * iVar7) * -0x51eb851f) >> 0x20);
      iVar7 = (iVar7 >> 5) - (iVar7 >> 0x1f);
    }
    if (param_1[4] < iVar7 + iVar8) {
      param_1[4] = iVar7 + iVar8;
    }
    return;
  }
  iVar5 = param_1[0x1f];
  if (iVar5 == 1) {
    iStack_1c = -(piVar11[5] / 2);
  }
  else if (iVar5 == 4) {
    iStack_1c = 0;
  }
  else if (iVar5 == 8) {
    iStack_1c = -piVar11[5];
  }
  iVar5 = piVar11[5] + iStack_1c + piVar11[6];
  if (iVar13 < iVar5) {
    iVar13 = iVar5;
  }
  iVar5 = piVar11[6] + iStack_1c;
  if (SBORROW4(iVar5,-iStack_28) != iVar5 + iStack_28 < 0) {
    iStack_28 = -iVar5;
  }
  (**(code **)(*piVar11 + 0x20))(0,iVar5);
  cVar3 = (**(code **)(*piVar11 + 0x40))();
  if (cVar3 == '\0') {
    if (param_1[0x34] < iStack_28) {
      param_1[0x34] = iStack_28;
    }
    iVar5 = piVar11[4];
    iVar6 = (**(code **)(*piVar11 + 0x10))();
    if (iVar6 < iVar5) {
      iVar6 = iVar5;
    }
    if (param_1[0x34] < iVar6) {
      iVar5 = (**(code **)(*piVar11 + 0x10))();
      param_1[0x34] = iVar5;
    }
    iStack_20 = 0;
  }
  else {
    iVar5 = (**(code **)(*piVar11 + 0x10))();
    iStack_20 = iStack_20 + iVar5;
  }
  piVar11 = (int *)piVar11[2];
  iStack_14 = 0;
  piVar10 = piVar11;
  if (piVar11 != (int *)0x0) goto LAB_009f5940;
  goto LAB_009f598e;
LAB_009f5940:
  do {
    piVar2 = (int *)piVar10[2];
    iStack_14 = iStack_14 + piVar10[4];
    if (piVar2 == (int *)0x0) break;
    cVar3 = (**(code **)(*piVar2 + 0x3c))();
    piVar10 = piVar2;
  } while (cVar3 == '\0');
  if ((iStack_14 <= iVar9) || (cVar3 = (**(code **)(*piVar11 + 0x3c))(), cVar3 == '\0'))
  goto joined_r0x009f584c;
LAB_009f598e:
  iVar5 = 0;
  if (iStack_28 < 0) {
    iStack_28 = 0;
  }
  if (iVar13 < 0) {
    iVar13 = 0;
  }
  switch(param_1[0x1e]) {
  case 0:
  case 0x10:
    goto switchD_009f59b3_caseD_0;
  case 1:
    iStack_c = iVar9 / 2;
    break;
  case 2:
    iStack_c = iVar9;
  }
  iVar5 = iStack_c;
  if (iVar5 < 0) {
    iVar5 = 0;
  }
switchD_009f59b3_caseD_0:
  iStack_c = iVar5 + iVar8;
  iVar7 = iVar7 + iStack_28;
  if ((param_1[0x1e] != 0x10) || (piVar11 == (int *)0x0)) {
    for (; piVar12 != piVar11; piVar12 = (int *)piVar12[2]) {
      (**(code **)(*piVar12 + 0x20))(piVar12[7] + iStack_c,piVar12[8] + iVar7);
    }
    goto LAB_009f5b42;
  }
  if (0 < iVar9) {
    iStack_28 = -1;
    piVar10 = piVar12;
    if (piVar12 == piVar11) goto LAB_009f5b42;
    do {
      cVar3 = (**(code **)(*piVar10 + 0x3c))();
      if (cVar3 != '\0') {
        iStack_28 = iStack_28 + 1;
      }
      ppiVar1 = (int **)(piVar10 + 2);
      piVar10 = *ppiVar1;
    } while (*ppiVar1 != piVar11);
    if (iStack_28 != 0) {
      do {
        cVar3 = (**(code **)(*piVar12 + 0x3c))();
        if (cVar3 != '\0') {
          if (piVar12 != piVar11) {
            (**(code **)(*piVar12 + 0x20))(piVar12[7] + iVar8,piVar12[8] + iVar7);
            piVar12 = (int *)piVar12[2];
            if (piVar12 != piVar11) {
              iStack_14 = 0;
              do {
                cVar3 = (**(code **)(*piVar12 + 0x3c))();
                if (cVar3 != '\0') {
                  iStack_14 = iStack_14 + iVar9;
                }
                (**(code **)(*piVar12 + 0x20))
                          (iStack_14 / iStack_28 + piVar12[7] + iVar8,piVar12[8] + iVar7);
                piVar12 = (int *)piVar12[2];
              } while (piVar12 != piVar11);
            }
          }
          break;
        }
        (**(code **)(*piVar12 + 0x20))(piVar12[7] + iVar8,piVar12[8] + iVar7);
        piVar12 = (int *)piVar12[2];
      } while (piVar12 != piVar11);
      goto LAB_009f5b42;
    }
  }
  for (; piVar12 != piVar11; piVar12 = (int *)piVar12[2]) {
    (**(code **)(*piVar12 + 0x20))(piVar12[7] + iVar8,piVar12[8] + iVar7);
  }
LAB_009f5b42:
  iVar7 = iVar7 + iVar13;
  iVar13 = 0;
  iStack_28 = 0;
  piVar12 = piVar11;
  goto joined_r0x009f584c;
}



void __thiscall
FUN_009f5c60(int param_1_00,int param_1,int param_2,int param_3,undefined **param_4,int param_5,
            int *param_7)

{
  int *piVar1;
  int *piVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  int unaff_EBX;
  undefined **ppuVar9;
  int unaff_EBP;
  undefined **ppuVar10;
  undefined4 unaff_retaddr;
  undefined4 uVar11;
  uint uStack_9c;
  undefined **local_84;
  undefined **local_80;
  undefined auStack_7c [4];
  undefined **local_78;
  undefined **ppuStack_70;
  undefined auStack_6c [8];
  undefined auStack_64 [8];
  int iStack_5c;
  undefined **ppuStack_58;
  undefined **ppuStack_50;
  undefined4 uStack_48;
  int iStack_44;
  undefined4 uStack_40;
  int iStack_3c;
  undefined4 uStack_38;
  int iStack_34;
  int iStack_30;
  int iStack_2c;
  int iStack_28;
  int iStack_24;
  int iStack_20;
  int iStack_1c;
  int iStack_18;
  int iStack_14;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb5f8;
  local_c = ExceptionList;
  uStack_9c = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  ppuVar10 = (undefined **)(*(int *)(param_1_00 + 0x1c) + param_2);
  ppuVar9 = (undefined **)(*(int *)(param_1_00 + 0x20) + param_3);
  local_80 = ppuVar9;
  local_78 = ppuVar10;
  if (*(char *)(param_1_00 + 0x88) != '\0') {
    FUN_0095d7e0();
    local_4 = 0;
    local_84 = param_4;
    if ((int)param_4 <= (int)ppuVar9) {
      local_84 = ppuVar9;
    }
    (**(code **)(**(int **)(param_1 + 8) + 0x60))();
    FUN_008f8330();
    (**(code **)(**(int **)(param_1 + 8) + 0x58))();
    (**(code **)(**(int **)(param_1 + 8) + 0x150))
              (ppuVar10,unaff_EBX,*(undefined4 *)(param_1_00 + 0x10),(unaff_EBP - unaff_EBX) + 1);
    local_4 = 0xffffffff;
    FUN_008f7630();
  }
  if (*(int *)(param_1_00 + 0xa0) == 1) {
    FUN_009566f0(param_1_00 + 0xa4);
    local_4 = 1;
    FUN_009566f0(param_1_00 + 0xb8);
    local_4._0_1_ = 2;
    (**(code **)(**(int **)(param_1 + 8) + 0x58))();
    (**(code **)(**(int **)(param_1 + 8) + 0x140))(ppuVar10,ppuVar9,ppuVar10);
    (**(code **)(**(int **)(param_1 + 8) + 0x140))
              (ppuVar10,ppuVar9,*(int *)(param_1_00 + 0x10) + (int)ppuVar10,ppuVar9);
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(&uStack_9c);
    iVar7 = *(int *)(param_1_00 + 0x10) + -1 + (int)ppuVar10;
    (**(code **)(**(int **)(param_1 + 8) + 0x140))
              (iVar7,ppuVar9,iVar7,*(int *)(param_1_00 + 0x14) + -1 + (int)ppuVar9);
    iVar7 = *(int *)(param_1_00 + 0x14) + -1 + (int)ppuVar9;
    (**(code **)(**(int **)(param_1 + 8) + 0x140))
              (ppuVar10,iVar7,*(int *)(param_1_00 + 0x10) + (int)ppuVar10,iVar7);
    local_4 = CONCAT31(local_4._1_3_,1);
    local_78 = wxObject::vftable;
    FUN_0083e850();
    local_4 = 0xffffffff;
    local_80 = wxObject::vftable;
    FUN_0083e850();
  }
  else if (0 < *(int *)(param_1_00 + 0xa0)) {
    piVar2 = (int *)(param_1_00 + 0xa4);
    FUN_0095d7e0();
    piVar1 = (int *)(param_1_00 + 0xb8);
    local_4 = 3;
    FUN_0095d7e0();
    local_4._0_1_ = 4;
    _vector_constructor_iterator_(&iStack_3c,8,6,(_func_void_ptr_void_ptr *)&LAB_0044642c);
    iStack_3c = *(int *)(param_1_00 + 0x1c);
    uStack_38 = *(int *)(param_1_00 + 0x20);
    iStack_30 = *(int *)(param_1_00 + 0x14) + uStack_38;
    iStack_2c = *(int *)(param_1_00 + 0xa0) + iStack_3c;
    iStack_28 = iStack_30 - *(int *)(param_1_00 + 0xa0);
    iStack_20 = *(int *)(param_1_00 + 0xa0) + *(int *)(param_1_00 + 0x20);
    iStack_1c = (*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xa0)) + iStack_3c;
    iStack_14 = *(int *)(param_1_00 + 0x10) + iStack_3c;
    uStack_10 = *(undefined4 *)(param_1_00 + 0x20);
    iStack_34 = iStack_3c;
    iStack_24 = iStack_2c;
    iStack_18 = iStack_20;
    (**(code **)(**(int **)(param_1 + 8) + 0x60))();
    FUN_008f8330();
    (**(code **)(**(int **)(param_1 + 8) + 0x58))();
    (**(code **)(**(int **)(param_1 + 8) + 0x184))(6,&iStack_44,unaff_retaddr,param_1,1);
    (**(code **)(**(int **)(param_1 + 8) + 0x60))(auStack_7c);
    iStack_44 = iStack_3c;
    iStack_5c = iStack_34;
    uStack_40 = uStack_48;
    ppuStack_58 = ppuStack_50;
    (**(code **)(**(int **)(param_1 + 8) + 0x184))(6,&iStack_5c,iStack_18,iStack_14,1);
    uVar3 = (**(code **)(*piVar1 + 0x18))();
    uVar3 = uVar3 & 0xff;
    uVar4 = (**(code **)(*piVar1 + 0x14))();
    uVar4 = uVar4 & 0xff;
    uVar5 = (**(code **)(*piVar1 + 0x10))();
    uVar11 = 0xff;
    uVar6 = (**(code **)(*piVar2 + 0x18))(0xff);
    iVar7 = (int)((uVar6 & 0xff) + uVar3) / 2;
    uVar3 = (**(code **)(*piVar2 + 0x14))(iVar7);
    iVar8 = (int)((uVar3 & 0xff) + uVar4) / 2;
    uVar3 = (**(code **)(*piVar2 + 0x10))(iVar8);
    FUN_004561e7(((uVar3 & 0xff) + (uVar5 & 0xff)) / 2,iVar8,iVar7,uVar11);
    uStack_38._0_1_ = 5;
    FUN_009566f0(&local_84,1,100);
    uStack_38 = CONCAT31(uStack_38._1_3_,6);
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(&stack0xffffff5c);
    iVar7 = iStack_30;
    iVar8 = iStack_2c + -1;
    (**(code **)(**(int **)(param_1 + 8) + 0x17c))(2,auStack_6c,iStack_30,iVar8);
    (**(code **)(**(int **)(param_1 + 8) + 0x17c))(2,auStack_64,iVar7,iVar8);
    local_4._0_1_ = 5;
    ppuStack_70 = wxObject::vftable;
    FUN_0083e850();
    local_4._0_1_ = 4;
    ppuStack_50 = wxObject::vftable;
    FUN_0083e850();
    local_4 = CONCAT31(local_4._1_3_,3);
    FUN_008f7630();
    local_4 = 0xffffffff;
    FUN_008f7630();
    ppuVar9 = local_80;
    ppuVar10 = local_78;
  }
  for (piVar2 = *(int **)(param_1_00 + 0x70); piVar2 != (int *)0x0; piVar2 = (int *)piVar2[2]) {
    if ((param_5 < piVar2[8] + (int)ppuVar9) ||
       (piVar2[5] + piVar2[8] + (int)ppuVar9 <= (int)param_4)) {
      (**(code **)(*piVar2 + 0x2c))(param_1,ppuVar10);
    }
    else {
      iVar7 = *param_7;
      if ((iVar7 != 0) &&
         ((*(int **)(iVar7 + 0x18) == piVar2 || (*(int **)(iVar7 + 0x1c) == piVar2)))) {
        param_7[2] = 2;
      }
      (**(code **)(*piVar2 + 0x28))(param_1,ppuVar10,ppuVar9,param_4);
      iVar7 = *param_7;
      if (iVar7 != 0) {
        if (*(int **)(iVar7 + 0x1c) == piVar2) {
          param_7[2] = 0;
        }
        else if (*(int **)(iVar7 + 0x18) == piVar2) {
          param_7[2] = 1;
        }
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009f6200(int param_1_00,char param_1,char param_2)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int *piVar4;
  int *piVar5;
  uint uStack_14;
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bea298;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  if (param_1 != '\0') {
    *(undefined4 *)(param_1_00 + 0x60) = 0;
    *(undefined4 *)(param_1_00 + 0xcc) = 0xffffffff;
  }
  if (param_2 != '\0') {
    *(undefined4 *)(param_1_00 + 100) = 0;
    *(undefined4 *)(param_1_00 + 0xcc) = 0xffffffff;
  }
  piVar5 = *(int **)(param_1_00 + 0x70);
  if (piVar5 != (int *)0x0) {
    if (param_1 != '\0') {
      do {
        cVar2 = (**(code **)(*piVar5 + 0x40))(uVar3);
        if (cVar2 == '\0') {
          cVar2 = FUN_009f5540();
          if (cVar2 == '\0') {
            (**(code **)(*piVar5 + 0x54))(1,0);
            break;
          }
          piVar5[0x18] = 0;
          piVar5[0x19] = 0;
          piVar5[0x33] = -1;
        }
        else if ((piVar5[4] != 0) || (piVar5[5] != 0)) break;
        piVar5 = (int *)piVar5[2];
      } while (piVar5 != (int *)0x0);
    }
    if (param_2 != '\0') {
      FUN_0086a600();
      iVar1 = *(int *)(param_1_00 + 0x70);
      uStack_4 = 0;
      for (; iVar1 != 0; iVar1 = *(int *)(iVar1 + 8)) {
        FUN_0086a400(iVar1,1);
      }
      for (uVar3 = uStack_14 - 1; -1 < (int)uVar3; uVar3 = uVar3 - 1) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_14 <= uVar3)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        piVar5 = *(int **)(iStack_10 + uVar3 * 4);
        cVar2 = (**(code **)(*piVar5 + 0x40))();
        if (cVar2 == '\0') {
          for (piVar4 = (int *)(**(code **)(*piVar5 + 0x1c))(); piVar4 != (int *)0x0;
              piVar4 = (int *)piVar4[2]) {
            cVar2 = (**(code **)(*piVar4 + 0x40))();
            if (((cVar2 == '\0') || (piVar4[4] != 0)) || (piVar4[5] != 0)) {
              (**(code **)(*piVar5 + 0x54))(0,1);
              goto LAB_009f6385;
            }
          }
          piVar5[0x18] = 0;
          piVar5[0x19] = 0;
          piVar5[0x33] = -1;
        }
        else if ((piVar5[4] != 0) || (piVar5[5] != 0)) break;
      }
LAB_009f6385:
      uStack_4 = 0xffffffff;
      FUN_0086aa30();
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009f63b0(int param_1_00,int param_1)

{
  (**(code **)(**(int **)(param_1 + 8) + 0x50))(param_1_00 + 0x58);
  return;
}



void __thiscall FUN_009f63d0(int param_1_00,int param_1)

{
  (**(code **)(**(int **)(param_1 + 8) + 0x50))(param_1_00 + 0x58);
  return;
}



void __thiscall FUN_009f63f0(undefined4 *param_1_00,int param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  undefined local_8 [8];
  
  if (param_1 == 0) {
    puVar3 = &DAT_03238d0c;
  }
  else {
    puVar3 = (undefined4 *)FUN_009f5680(local_8,0);
  }
  uVar1 = *puVar3;
  uVar2 = puVar3[1];
  if (param_2 == 0) {
    piVar4 = &DAT_03238d0c;
  }
  else {
    piVar4 = (int *)FUN_009f5680(local_8,0);
  }
  iVar6 = *piVar4;
  iVar5 = piVar4[1];
  if (param_2 != 0) {
    iVar6 = iVar6 + *(int *)(param_2 + 0x10);
    iVar5 = iVar5 + *(int *)(param_2 + 0x14);
  }
  param_1_00[7] = param_2;
  *param_1_00 = uVar1;
  param_1_00[1] = uVar2;
  param_1_00[6] = param_1;
  param_1_00[2] = iVar6;
  param_1_00[3] = iVar5;
  return;
}



void __thiscall
FUN_009f6470(int param_1_00,int param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined auStack_40 [4];
  undefined auStack_3c [8];
  undefined **appuStack_34 [5];
  undefined **local_20 [4];
  undefined uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00beb640;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  if ((*(byte *)(param_1_00 + 0x6c) & 1) != 0) {
    iVar3 = param_1_00 + 0x58;
    if (param_4 + 0xc != iVar3) {
      FUN_0083ea60(iVar3);
    }
    *(undefined4 *)(param_4 + 0x14) = *(undefined4 *)(param_1_00 + 0x60);
    *(undefined *)(param_4 + 0x18) = *(undefined *)(param_1_00 + 100);
    *(undefined *)(param_4 + 0x19) = *(undefined *)(param_1_00 + 0x65);
    *(undefined *)(param_4 + 0x1a) = *(undefined *)(param_1_00 + 0x66);
    *(undefined *)(param_4 + 0x1b) = *(undefined *)(param_1_00 + 0x67);
    *(undefined *)(param_4 + 0x1c) = *(undefined *)(param_1_00 + 0x68);
    if (*(int *)(param_4 + 8) == 1) {
      uVar2 = (**(code **)(**(int **)(param_4 + 4) + 4))(local_20,iVar3,uVar1);
      local_c = (void *)0x0;
      (**(code **)(**(int **)(param_1 + 8) + 0x78))(uVar2);
      uStack_4 = 0xffffffff;
      local_20[0] = wxObject::vftable;
      FUN_0083e850();
    }
    else {
      (**(code **)(**(int **)(param_1 + 8) + 0x78))();
    }
  }
  if ((*(byte *)(param_1_00 + 0x6c) & 2) != 0) {
    iVar3 = param_1_00 + 0x58;
    if (param_4 + 0x20 != iVar3) {
      FUN_0083ea60(iVar3);
    }
    *(undefined4 *)(param_4 + 0x28) = *(undefined4 *)(param_1_00 + 0x60);
    *(undefined *)(param_4 + 0x2c) = *(undefined *)(param_1_00 + 100);
    *(undefined *)(param_4 + 0x2d) = *(undefined *)(param_1_00 + 0x65);
    *(undefined *)(param_4 + 0x2e) = *(undefined *)(param_1_00 + 0x66);
    *(undefined *)(param_4 + 0x2f) = *(undefined *)(param_1_00 + 0x67);
    *(undefined *)(param_4 + 0x30) = *(undefined *)(param_1_00 + 0x68);
    if (*(int *)(param_4 + 8) == 1) {
      (**(code **)(**(int **)(param_4 + 4) + 8))(appuStack_34,iVar3);
      local_c = (void *)0x2;
      (**(code **)(**(int **)(param_1 + 8) + 0x80))(auStack_3c);
      uVar2 = FUN_0095d7e0(auStack_40,100);
      uStack_10 = 3;
      (**(code **)(**(int **)(param_1 + 8) + 0x68))(uVar2);
      uStack_4 = CONCAT31(uStack_4._1_3_,2);
      FUN_008f7630();
      uStack_4 = 0xffffffff;
      appuStack_34[0] = wxObject::vftable;
      FUN_0083e850();
    }
    else {
      (**(code **)(**(int **)(param_1 + 8) + 0x80))();
      uVar2 = FUN_0095d7e0(iVar3,100);
      puStack_8 = (undefined *)0x1;
      (**(code **)(**(int **)(param_1 + 8) + 0x68))(uVar2);
      uStack_4 = 0xffffffff;
      FUN_008f7630();
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_009f6650(char param_1)

{
  undefined4 uVar1;
  int unaff_ESI;
  int unaff_EDI;
  undefined *puStack_64;
  undefined4 uStack_60;
  undefined **ppuStack_5c;
  undefined auStack_50 [8];
  undefined **local_48;
  int local_44;
  undefined4 local_40;
  undefined **local_3c;
  undefined local_38 [4];
  undefined **local_34;
  undefined **local_30;
  undefined4 local_2c;
  undefined local_28;
  undefined local_27;
  undefined local_26;
  undefined local_25;
  undefined local_24 [4];
  undefined uStack_20;
  undefined uStack_1c;
  undefined uStack_14;
  undefined uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beb698;
  local_c = ExceptionList;
  ppuStack_5c = (undefined **)(DAT_0323f878 ^ (uint)&stack0xffffffa8);
  ExceptionList = &local_c;
  local_30 = *(undefined ***)(unaff_ESI + 0x10);
  if (local_30 != (undefined **)0x0) {
    local_30[1] = local_30[1] + 1;
  }
  local_28 = *(undefined *)(unaff_ESI + 0x18);
  local_2c = *(undefined4 *)(unaff_ESI + 0x14);
  local_27 = *(undefined *)(unaff_ESI + 0x19);
  local_26 = *(undefined *)(unaff_ESI + 0x1a);
  local_25 = *(undefined *)(unaff_ESI + 0x1b);
  local_24[0] = *(undefined *)(unaff_ESI + 0x1c);
  local_34 = wxColour::vftable;
  local_44 = *(int *)(unaff_ESI + 0x24);
  if (local_44 != 0) {
    *(int *)(local_44 + 4) = *(int *)(local_44 + 4) + 1;
  }
  local_40 = *(undefined4 *)(unaff_ESI + 0x28);
  local_48 = wxColour::vftable;
  local_38[0] = *(undefined *)(unaff_ESI + 0x30);
  local_3c = *(undefined ***)(unaff_ESI + 0x2c);
  local_4 = 1;
  if (param_1 == '\0') {
    uStack_60 = 0x6a;
    puStack_64 = (undefined *)0x9f67fc;
    (**(code **)(**(int **)(unaff_EDI + 8) + 0x70))();
    puStack_64 = local_38;
    (**(code **)(**(int **)(unaff_EDI + 8) + 0x78))();
    (**(code **)(**(int **)(unaff_EDI + 8) + 0x80))(auStack_50);
    uVar1 = FUN_0095d7e0(&stack0xffffffac,100);
    uStack_10 = 6;
    (**(code **)(**(int **)(unaff_EDI + 8) + 0x68))(uVar1);
    local_2c = CONCAT31(local_2c._1_3_,1);
    FUN_008f7630();
  }
  else {
    uStack_60 = 100;
    puStack_64 = (undefined *)0x9f6730;
    (**(code **)(**(int **)(unaff_EDI + 8) + 0x70))();
    puStack_64 = local_38;
    uVar1 = (**(code **)(**(int **)(unaff_ESI + 4) + 4))(local_24);
    uStack_10 = 2;
    (**(code **)(**(int **)(unaff_EDI + 8) + 0x78))(uVar1);
    uStack_14 = 1;
    local_30 = wxObject::vftable;
    FUN_0083e850();
    uVar1 = (**(code **)(**(int **)(unaff_ESI + 4) + 8))(&local_30,&stack0xffffffa8);
    uStack_1c = 3;
    (**(code **)(**(int **)(unaff_EDI + 8) + 0x80))(uVar1);
    uStack_20 = 1;
    local_3c = wxObject::vftable;
    FUN_0083e850();
    uVar1 = (**(code **)(**(int **)(unaff_ESI + 4) + 8))(&local_3c,&puStack_64);
    local_28 = 4;
    uVar1 = FUN_0095d7e0(uVar1,100);
    local_28 = 5;
    (**(code **)(**(int **)(unaff_EDI + 8) + 0x68))(uVar1);
    local_2c._0_1_ = 4;
    FUN_008f7630();
    local_2c = CONCAT31(local_2c._1_3_,1);
    local_48 = wxObject::vftable;
    FUN_0083e850();
  }
  local_2c = local_2c & 0xffffff00;
  FUN_0083e850();
  local_2c = 0xffffffff;
  ppuStack_5c = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_34;
  return;
}



void __fastcall FUN_009f6890(undefined4 *param_1)

{
  param_1[1] = 0;
  *param_1 = wxHtmlCell::vftable;
  param_1[0x13] = 7;
  param_1[0x12] = 0;
  *(undefined2 *)(param_1 + 0xe) = 0;
  param_1[0x14] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[6] = 0;
  param_1[5] = 0;
  param_1[4] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
  *(undefined *)(param_1 + 0xc) = 1;
  param_1[0xb] = 0;
  return;
}



undefined4 __fastcall FUN_009f68d0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x10);
}



undefined4 __fastcall FUN_009f68e0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x2c);
}



void __thiscall FUN_009f68f0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 0x1c) = param_1;
  *(undefined4 *)(param_1_00 + 0x20) = param_2;
  return;
}



undefined4 __fastcall FUN_009f6910(int param_1)

{
  if ((*(int *)(param_1 + 0x10) == 0) && (*(int *)(param_1 + 0x14) == 0)) {
    return 0;
  }
  return 1;
}



undefined4 __fastcall FUN_009f6940(undefined4 param_1)

{
  return param_1;
}



void __fastcall FUN_009f6950(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beb6d3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxHtmlCell::vftable;
  local_4 = 1;
  if ((int *)param_1[0xb] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0xb] + 4))(1,uVar1);
  }
  _free((void *)param_1[0x14]);
  if (7 < (uint)param_1[0x13]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xe]);
  }
  param_1[0x13] = 7;
  param_1[0x12] = 0;
  *(undefined2 *)(param_1 + 0xe) = 0;
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009f69f0(int param_1_00,int param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 local_10;
  undefined4 local_c;
  undefined local_8 [8];
  
  if ((param_1 != 0) && (*(int *)(param_1_00 + 0xc) == *(int *)(param_1 + 0xc))) {
    uVar1 = FUN_0081b3d8(&local_10);
    FUN_0081b35f(uVar1);
    iVar2 = _iswspace((wint_t)param_1);
    if (iVar2 == 0) {
      puVar3 = (undefined4 *)FUN_0081b542(local_8,0);
      local_10 = *puVar3;
      local_c = puVar3[1];
      FUN_0081b35f(&local_10);
      iVar2 = _iswspace((wint_t)param_1);
      if (iVar2 == 0) {
        *(undefined *)(param_1_00 + 0x7c) = 0;
      }
    }
  }
  return;
}



undefined4 * __thiscall FUN_009f6a80(undefined4 *param_1_00,int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beb714;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  param_1_00[0x13] = 7;
  param_1_00[0x12] = 0;
  *(undefined2 *)(param_1_00 + 0xe) = 0;
  param_1_00[0x14] = 0;
  param_1_00[2] = 0;
  param_1_00[3] = 0;
  param_1_00[6] = 0;
  param_1_00[5] = 0;
  param_1_00[4] = 0;
  param_1_00[9] = 0;
  param_1_00[10] = 0;
  *(undefined *)(param_1_00 + 0xc) = 1;
  param_1_00[0xb] = 0;
  local_4 = 0;
  *param_1_00 = wxHtmlContainerCell::vftable;
  FUN_00453f4b(uVar1);
  local_4._0_1_ = 1;
  FUN_00453f4b();
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00453f4b();
  param_1_00[0x1d] = 0;
  param_1_00[0x1c] = 0;
  param_1_00[3] = param_1;
  param_1_00[0x34] = 0;
  if (param_1 != 0) {
    FUN_009f52b0(param_1_00);
  }
  param_1_00[0x1e] = 0;
  param_1_00[0x1f] = 8;
  param_1_00[0x19] = 0;
  param_1_00[0x18] = 0;
  param_1_00[0x17] = 0;
  param_1_00[0x16] = 0;
  param_1_00[0x20] = 100;
  param_1_00[0x21] = 2;
  *(undefined *)(param_1_00 + 0x22) = 0;
  param_1_00[0x28] = 0;
  param_1_00[0x1a] = 0;
  param_1_00[0x1b] = 4;
  param_1_00[0x33] = 0xffffffff;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_009f6b90(int param_1)

{
  return *(undefined4 *)(param_1 + 0x70);
}



void __fastcall FUN_009f6ba0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_c = ExceptionList;
  puStack_8 = &LAB_00beb762;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxHtmlContainerCell::vftable;
  piVar1 = (int *)param_1[0x1c];
  local_4 = 3;
  while (piVar1 != (int *)0x0) {
    iVar2 = *piVar1;
    piVar1 = (int *)piVar1[2];
    (**(code **)(iVar2 + 4))(1,uVar3);
  }
  local_4._1_3_ = (uint3)((uint)local_4 >> 8);
  local_4._0_1_ = 2;
  param_1[0x2e] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 1;
  param_1[0x29] = wxObject::vftable;
  FUN_0083e850();
  local_4 = (uint)local_4._1_3_ << 8;
  param_1[0x23] = wxObject::vftable;
  FUN_0083e850();
  local_4 = 0xffffffff;
  FUN_009f6950();
  ExceptionList = local_c;
  return;
}



undefined4 FUN_009f6c60(undefined4 param_1)

{
  FUN_004325b6(PTR_DAT_03236318);
  return param_1;
}



void __thiscall FUN_009f6c90(int *param_1_00,int *param_1,undefined4 *param_2,undefined4 param_4)

{
  int iVar1;
  undefined auStack_68 [80];
  undefined4 uStack_18;
  int *piStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00beb788;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_68;
  ExceptionList = &local_c;
  if (param_1 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\html\\htmlcell.cpp",0x99,"wxHtmlCell::ProcessMouseClick","window",
                   L"window interface must be provided",DAT_0323f878 ^ (uint)&stack0xffffff8c);
    }
  }
  else {
    iVar1 = (**(code **)(*param_1_00 + 0x14))(*param_2,param_2[1]);
    if (iVar1 != 0) {
      FUN_009efa20(iVar1);
      uStack_18 = param_4;
      uStack_4 = 0;
      piStack_14 = param_1_00;
      (**(code **)(*param_1 + 8))(auStack_68);
      uStack_4 = 0xffffffff;
      FUN_008f2ca0();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009f6d80(int param_1_00,undefined4 param_1)

{
  int iVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf02e3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int **)(param_1_00 + 0x2c) != (int *)0x0) {
    (**(code **)(**(int **)(param_1_00 + 0x2c) + 4))(1,DAT_0323f878 ^ (uint)&stack0xffffffc4);
    *(undefined4 *)(param_1_00 + 0x2c) = 0;
  }
  FUN_004585c3(local_30);
  uStack_4 = 0;
  iVar1 = FUN_008507a0(PTR_DAT_03236318);
  uStack_4 = 0xffffffff;
  _free(pvStack_14);
  if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_2c);
  }
  uStack_18 = 7;
  uStack_1c = 0;
  uStack_2c = uStack_2c & 0xffff0000;
  if (iVar1 != 0) {
    pvVar2 = operator_new(0x58);
    uStack_4 = 1;
    if (pvVar2 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = FUN_009efa20(param_1);
    }
    *(undefined4 *)(param_1_00 + 0x2c) = uVar3;
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_009f6e70(undefined4 *param_1_00,undefined4 *param_1,int param_2)

{
  uint uVar1;
  void *unaff_ESI;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined local_1c [4];
  undefined local_18 [4];
  undefined local_14 [4];
  undefined4 *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beb7c3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  param_1_00[0x12] = 0;
  param_1_00[0x13] = 7;
  *(undefined2 *)(param_1_00 + 0xe) = 0;
  param_1_00[0x14] = 0;
  param_1_00[2] = 0;
  param_1_00[3] = 0;
  param_1_00[6] = 0;
  param_1_00[5] = 0;
  param_1_00[4] = 0;
  param_1_00[9] = 0;
  param_1_00[10] = 0;
  *(undefined *)(param_1_00 + 0xc) = 1;
  param_1_00[0xb] = 0;
  *param_1_00 = wxHtmlWordCell::vftable;
  param_1_00[0x1c] = 7;
  param_1_00[0x1b] = 0;
  *(undefined2 *)(param_1_00 + 0x17) = 0;
  param_1_00[0x1d] = 0;
  local_4 = 1;
  local_10 = param_1_00;
  if (param_1_00 + 0x16 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  uVar3 = 0;
  uVar2 = 0;
  (**(code **)(**(int **)(param_2 + 8) + 0xa4))(param_1_00 + 0x16,local_1c,local_18,local_14);
  param_1_00[4] = uVar2;
  param_1_00[5] = uVar3;
  param_1_00[6] = uVar1;
  *(undefined *)(param_1_00 + 0xc) = 0;
  *(undefined *)(param_1_00 + 0x1f) = 1;
  ExceptionList = unaff_ESI;
  return param_1_00;
}



undefined __fastcall FUN_009f6f60(int param_1)

{
  return *(undefined *)(param_1 + 0x7c);
}



undefined4 FUN_009f6f70(undefined4 param_1,int param_2,int param_3)

{
  FUN_00852560(param_1,param_2,param_3 - param_2);
  return param_1;
}



void __fastcall FUN_009f6fa0(int param_1)

{
  _free(*(void **)(param_1 + 0x74));
  if (7 < *(uint *)(param_1 + 0x70)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x5c));
  }
  *(undefined4 *)(param_1 + 0x70) = 7;
  *(undefined4 *)(param_1 + 0x6c) = 0;
  *(undefined2 *)(param_1 + 0x5c) = 0;
  FUN_009f6950();
  return;
}



void __thiscall
FUN_009f6fe0(int param_1_00,uint param_1,int *param_2,int *param_3,uint *param_4,uint *param_5)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  int *piVar4;
  int *piVar5;
  int iVar6;
  int *piVar7;
  uint uVar8;
  int *piVar9;
  int iVar10;
  uint uVar11;
  int local_54;
  int local_50;
  int local_4c;
  int local_48;
  int local_44;
  int local_40;
  int local_3c;
  int local_38;
  int local_34;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  piVar9 = param_2;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb810;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  iVar1 = *param_2;
  local_54 = iVar1;
  if ((iVar1 == DAT_03238d0c) && (param_2 = (int *)param_2[1], param_2 == DAT_03238d10)) {
    piVar9 = &DAT_03238d0c;
  }
  else {
    piVar4 = (int *)FUN_009f5680(&local_38,0);
    param_2 = (int *)piVar9[1];
    local_3c = (int)param_2 - piVar4[1];
    local_40 = iVar1 - *piVar4;
    piVar9 = &local_40;
  }
  piVar4 = param_3;
  iVar1 = *param_3;
  local_48 = *piVar9;
  local_44 = piVar9[1];
  if ((iVar1 == DAT_03238d0c) && (piVar7 = (int *)param_3[1], piVar7 == DAT_03238d10)) {
    local_38 = *(int *)(param_1_00 + 0x10);
    local_34 = -1;
  }
  else {
    piVar5 = (int *)FUN_009f5680(&local_38,0);
    piVar7 = (int *)piVar4[1];
    local_34 = (int)piVar7 - piVar5[1];
    local_38 = iVar1 - *piVar5;
  }
  uVar2 = param_1;
  local_50 = local_38;
  iVar6 = local_44;
  iVar10 = local_34;
  if ((((local_54 != DAT_03238d0c) || (param_2 != DAT_03238d10)) &&
      ((iVar1 != DAT_03238d0c || (piVar7 != DAT_03238d10)))) && (iVar1 < local_54)) {
    local_50 = *piVar9;
    local_48 = local_38;
    iVar6 = local_34;
    iVar10 = piVar9[1];
  }
  param_3 = *(int **)(param_1_00 + 0x6c);
  uVar8 = 0;
  *param_4 = 0;
  if (iVar6 < 0) {
    local_48 = 0;
  }
  local_4c = local_34;
  if (*(int *)(param_1_00 + 0x14) <= iVar10) {
    local_50 = *(int *)(param_1_00 + 0x10);
  }
  while ((0 < local_48 && (uVar8 < param_3))) {
    FUN_0081feb2(&param_1,uVar8);
    local_18 = 7;
    local_14 = (void *)0x0;
    local_1c = 1;
    local_2c = param_1 & 0xffff;
    local_4 = 2;
    (**(code **)(**(int **)(uVar2 + 8) + 0xa4))(local_30,&param_2,&local_54,0,0,0);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_48 = local_48 - (int)param_2;
    if (-((int)param_2 / 2) <= local_48) {
      *param_4 = *param_4 + (int)param_2;
      uVar8 = uVar8 + 1;
    }
  }
  uVar11 = *param_4;
  *param_5 = uVar11;
  local_50 = local_50 - uVar11;
  uVar11 = uVar8;
  while ((0 < local_50 && (uVar11 < param_3))) {
    FUN_0081feb2(&param_1,uVar11);
    local_18 = 7;
    local_14 = (void *)0x0;
    local_1c = 1;
    local_2c = param_1 & 0xffff;
    local_4 = 5;
    (**(code **)(**(int **)(uVar2 + 8) + 0xa4))(local_30,&param_2,&local_54,0,0,0);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_50 = local_50 - (int)param_2;
    local_2c = local_2c & 0xffff0000;
    local_18 = 7;
    local_1c = 0;
    if (SBORROW4(local_50,-((int)param_2 / 2)) == local_50 + (int)param_2 / 2 < 0) {
      *param_5 = *param_5 + (int)param_2;
      uVar11 = uVar11 + 1;
    }
  }
  *param_4 = uVar8;
  *param_5 = uVar11;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar11 < *param_4)) {
    FUN_008402e0("..\\..\\src\\html\\htmlcell.cpp",0x1d3,"wxHtmlWordCell::Split","pos2 >= pos1",0,
                 uVar3);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_009f7340(int param_1_00,undefined4 param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  puVar1 = param_2;
  puVar3 = param_2 + 2;
  if (param_1_00 != param_2[7]) {
    puVar3 = &DAT_03238d0c;
  }
  puVar2 = param_2;
  if (param_1_00 != param_2[6]) {
    puVar2 = &DAT_03238d0c;
  }
  FUN_009f6fe0(param_1,puVar2,puVar3,&param_2,&param_1);
  if (param_1_00 == puVar1[6]) {
    puVar1[4] = param_2;
  }
  if (param_1_00 == puVar1[7]) {
    puVar1[5] = param_1;
  }
  return;
}



void __thiscall
FUN_009f73a0(int param_1_00,int param_1,int param_2,int param_3,undefined4 param_4,
            undefined4 param_5,int *param_6)

{
  uint uVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  uint unaff_EBX;
  void *pvVar6;
  undefined4 unaff_EBP;
  undefined4 unaff_ESI;
  char cVar7;
  undefined auStack_70 [3];
  undefined local_6d;
  int *local_6c;
  int local_68;
  uint local_64;
  void *pvStack_60;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined2 local_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  void *pvStack_24;
  undefined4 local_20;
  int local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  cVar7 = (char)((uint)unaff_ESI >> 0x18);
  local_4 = -1;
  puStack_8 = &LAB_00beb850;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_70;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_c;
  iVar3 = param_6[2];
  local_6c = param_6;
  local_6d = 0;
  if (iVar3 == 2) {
    iVar3 = *param_6;
    local_1c = 7;
    local_20 = 0;
    local_30 = 0;
    local_18 = (void *)0x0;
    local_4 = 0;
    if ((*(int *)(iVar3 + 0x14) == -1) || (*(int *)(iVar3 + 0x10) == -1)) {
      FUN_009f7340(param_1,iVar3);
    }
    if (*(int *)(iVar3 + 0x18) == param_1_00) {
      local_64 = *(uint *)(iVar3 + 0x10);
    }
    else {
      local_64 = 0;
    }
    if (*(int *)(iVar3 + 0x1c) == param_1_00) {
      local_68 = *(int *)(iVar3 + 0x14);
    }
    else {
      local_68 = *(int *)(param_1_00 + 0x6c);
    }
    pvVar6 = (void *)0x0;
    if (0 < (int)local_64) {
      puVar2 = (undefined *)FUN_00852560(local_58,0,local_64);
      local_4._0_1_ = 1;
      if (local_34 != puVar2) {
        FID_conflict_assign(puVar2,0,0xffffffff);
      }
      local_4 = (uint)local_4._1_3_ << 8;
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_54);
      }
      (**(code **)(**(int **)(param_1 + 8) + 0x168))
                (local_34,*(int *)(param_1_00 + 0x1c) + param_2,
                 *(int *)(param_1_00 + 0x20) + param_3);
      (**(code **)(**(int **)(param_1 + 8) + 0xa4))(&local_40,&local_6c,&local_68,0,0,0);
      pvVar6 = pvStack_60;
    }
    FUN_009f6650(1);
    puVar2 = (undefined *)FUN_00852560(local_58,local_64,local_68 - local_64);
    local_4._0_1_ = 2;
    if (local_34 != puVar2) {
      FID_conflict_assign(puVar2,0,0xffffffff);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    iVar3 = (int)pvVar6 + param_2 + *(int *)(param_1_00 + 0x1c);
    (**(code **)(**(int **)(param_1 + 8) + 0x168))
              (local_34,iVar3,*(int *)(param_1_00 + 0x20) + param_3);
    if (unaff_EBX < *(uint *)(param_1_00 + 0x6c)) {
      (**(code **)(**(int **)(param_1 + 8) + 0xa4))(&local_40,&local_6c,&local_68,0,0,0);
      FUN_009f6650(0);
      puVar2 = (undefined *)FUN_00852560(&stack0xffffff84,iVar3,0xffffffff);
      uStack_28._0_1_ = 3;
      if (local_58 != puVar2) {
        FID_conflict_assign(puVar2,0,0xffffffff);
      }
      uStack_28 = (uint)uStack_28._1_3_ << 8;
      _free(pvStack_60);
      if (7 < local_64) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(unaff_EBP);
      }
      local_64 = 7;
      local_68 = 0;
      (**(code **)(**(int **)(param_1 + 8) + 0x168))
                (local_58,(int)pvVar6 + local_1c + *(int *)(param_1_00 + 0x1c) + uVar1,
                 *(int *)(param_1_00 + 0x20) + (int)local_18);
    }
    else {
      cVar7 = '\x01';
    }
    local_10 = 0xffffffff;
    _free(pvStack_24);
    if (7 < uStack_28) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_3c);
    }
    uStack_28 = 7;
    uStack_2c = 0;
    local_3c = (void *)((uint)local_3c & 0xffff0000);
    goto LAB_009f771b;
  }
  iVar4 = (**(code **)(**(int **)(param_1 + 8) + 0x74))(uVar1);
  if (iVar3 == 0) {
    if (iVar4 == 100) {
      uVar5 = 0;
      goto LAB_009f76e1;
    }
  }
  else if (iVar4 != 100) {
    uVar5 = 1;
LAB_009f76e1:
    FUN_009f6650(uVar5);
  }
  (**(code **)(**(int **)(param_1 + 8) + 0x168))
            (param_1_00 + 0x58,*(int *)(param_1_00 + 0x1c) + param_2,
             *(int *)(param_1_00 + 0x20) + param_3);
  cVar7 = iVar3 != 0;
LAB_009f771b:
  if ((*(int *)(*(int *)(param_1_00 + 0xc) + 0x78) == 0x10) && (cVar7 != '\0')) {
    for (iVar3 = *(int *)(param_1_00 + 8); iVar3 != 0; iVar3 = *(int *)(iVar3 + 8)) {
      if ((*(int *)(iVar3 + 0x10) != 0) || (*(int *)(iVar3 + 0x14) != 0)) {
        iVar3 = *(int *)(iVar3 + 0x1c);
        if (*(int *)(param_1_00 + 0x10) + *(int *)(param_1_00 + 0x1c) < iVar3) {
          uVar5 = (**(code **)(**(int **)(param_1 + 8) + 0x6c))();
          (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar5);
          uVar5 = FUN_008f8330(0x24);
          (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar5);
          (**(code **)(**(int **)(param_1 + 8) + 0x150))
                    (*(int *)(param_1_00 + 0x10) + *(int *)(param_1_00 + 0x1c) + (int)local_c,
                     puStack_8 + *(int *)(param_1_00 + 0x20),
                     (iVar3 - *(int *)(param_1_00 + 0x10)) - *(int *)(param_1_00 + 0x1c),
                     *(undefined4 *)(param_1_00 + 0x14));
        }
        break;
      }
    }
  }
  ExceptionList = local_18;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_009f77e0(int *param_1_00,undefined4 param_1,int param_2)

{
  uint uVar1;
  uint uVar2;
  
  if (((param_2 == 0) ||
      (((param_1_00 != *(int **)(param_2 + 0x18) && (param_1_00 != *(int **)(param_2 + 0x1c))) ||
       (uVar1 = *(uint *)(param_2 + 0x14), uVar1 == 0xffffffff)))) ||
     (*(uint *)(param_2 + 0x10) == 0xffffffff)) {
    (**(code **)(*param_1_00 + 0x54))(param_1);
    return param_1;
  }
  uVar2 = (*(int **)(param_2 + 0x18) != param_1_00) - 1 & *(uint *)(param_2 + 0x10);
  if (*(int **)(param_2 + 0x1c) != param_1_00) {
    uVar1 = param_1_00[0x1b];
  }
  if (uVar2 == uVar1) {
    FUN_004325b6(PTR_DAT_03236318);
    return param_1;
  }
  (**(code **)(*param_1_00 + 0x58))(param_1,uVar2,uVar1);
  return param_1;
}



int __thiscall FUN_009f7870(int param_1_00,int param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(param_1_00 + 0x80,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



int __thiscall FUN_009f78c0(int param_1_00,int param_1,int param_2,int param_3)

{
  short sVar1;
  uint uVar2;
  short **ppsVar3;
  int iVar4;
  short **ppsVar5;
  short **ppsVar6;
  int iVar7;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beb899;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar7 = 0;
  local_4 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_3 <= param_2)) {
    FUN_008402e0("..\\..\\src\\html\\htmlcell.cpp",0x296,"wxHtmlWordWithTabsCell::GetPartAsText",
                 "begin < end",0,DAT_0323f878 ^ (uint)&stack0xffffffd8);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  uVar2 = *(uint *)(param_1_00 + 0x98);
  local_4 = 0;
  ppsVar3 = (short **)(param_1_00 + 0x84);
  ppsVar6 = ppsVar3;
  if (7 < uVar2) {
    ppsVar6 = (short **)*ppsVar3;
  }
  if (ppsVar6 != (short **)0x0) {
    ppsVar5 = ppsVar3;
    if (7 < uVar2) {
      ppsVar5 = (short **)*ppsVar3;
    }
    if (ppsVar5 <= ppsVar6) {
      if (7 < uVar2) {
        ppsVar3 = (short **)*ppsVar3;
      }
      if (ppsVar6 <= (short **)((int)ppsVar3 + *(int *)(param_1_00 + 0x94) * 2)) goto LAB_009f798d;
    }
  }
  FUN_00a3fb10();
LAB_009f798d:
  if (0 < param_2) {
    do {
      if (param_1_00 != -0x84) {
        if (param_1_00 == -0x80) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_1_00 + 0x98) < 8) {
          iVar4 = param_1_00 + 0x84;
        }
        else {
          iVar4 = *(int *)(param_1_00 + 0x84);
        }
        if ((short **)(iVar4 + *(int *)(param_1_00 + 0x94) * 2) <= ppsVar6) {
          FUN_00a3fb10();
        }
      }
      if (*(short *)ppsVar6 == 9) {
        iVar7 = iVar7 + (8 - (*(int *)(param_1_00 + 0xa4) + iVar7 & 7U));
        if (param_2 <= iVar7) {
          FID_conflict_append(1,9);
        }
      }
      else {
        iVar7 = iVar7 + 1;
      }
      if (param_1_00 != -0x84) {
        if (param_1_00 == -0x80) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_1_00 + 0x98) < 8) {
          iVar4 = param_1_00 + 0x84;
        }
        else {
          iVar4 = *(int *)(param_1_00 + 0x84);
        }
        if ((short **)(iVar4 + *(int *)(param_1_00 + 0x94) * 2) <= ppsVar6) {
          FUN_00a3fb10();
        }
      }
      ppsVar6 = (short **)((int)ppsVar6 + 2);
    } while (iVar7 < param_2);
  }
  while (iVar7 < param_3) {
    if (param_1_00 != -0x84) {
      if (param_1_00 == -0x80) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1_00 + 0x98) < 8) {
        iVar4 = param_1_00 + 0x84;
      }
      else {
        iVar4 = *(int *)(param_1_00 + 0x84);
      }
      if ((short **)(iVar4 + *(int *)(param_1_00 + 0x94) * 2) <= ppsVar6) {
        FUN_00a3fb10();
      }
    }
    sVar1 = *(short *)ppsVar6;
    FID_conflict_append(1,sVar1);
    if (sVar1 == 9) {
      iVar7 = iVar7 + (8 - (*(int *)(param_1_00 + 0xa4) + iVar7 & 7U));
    }
    else {
      iVar7 = iVar7 + 1;
    }
    if (param_1_00 != -0x84) {
      if (param_1_00 == -0x80) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1_00 + 0x98) < 8) {
        iVar4 = param_1_00 + 0x84;
      }
      else {
        iVar4 = *(int *)(param_1_00 + 0x84);
      }
      if ((short **)(iVar4 + *(int *)(param_1_00 + 0x94) * 2) <= ppsVar6) {
        FUN_00a3fb10();
      }
    }
    ppsVar6 = (short **)((int)ppsVar6 + 2);
  }
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_009f7af0(int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb8d8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_7c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  FUN_004325b6(L"ALIGN");
  local_4 = 0;
  cVar1 = FUN_00a07740(local_58);
  local_4 = 0xffffffff;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54,uVar2);
  }
  if (cVar1 == '\0') goto LAB_009f7c8b;
  FUN_004325b6(L"ALIGN");
  local_4 = 1;
  FUN_00a09860(local_34,local_7c,0);
  local_4 = CONCAT31(local_4._1_3_,3);
  _free(local_60);
  if (7 < local_64) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_78);
  }
  local_78 = local_78 & 0xffff0000;
  local_64 = 7;
  local_68 = 0;
  FUN_00850fc0();
  iVar3 = FUN_008507a0(L"CENTER");
  if (iVar3 == 0) {
    *(undefined4 *)(param_1 + 0x78) = 1;
LAB_009f7c5e:
    *(undefined4 *)(param_1 + 0xcc) = 0xffffffff;
  }
  else {
    iVar3 = FUN_008507a0(L"LEFT");
    if (iVar3 == 0) {
      *(undefined4 *)(param_1 + 0x78) = 0;
      goto LAB_009f7c5e;
    }
    iVar3 = FUN_008507a0(L"JUSTIFY");
    if (iVar3 == 0) {
      *(undefined4 *)(param_1 + 0x78) = 0x10;
      goto LAB_009f7c5e;
    }
    iVar3 = FUN_008507a0(L"RIGHT");
    if (iVar3 == 0) {
      *(undefined4 *)(param_1 + 0x78) = 2;
      goto LAB_009f7c5e;
    }
  }
  *(undefined4 *)(param_1 + 0xcc) = 0xffffffff;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
LAB_009f7c8b:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_009f7cb0(int param_1)

{
  int iVar1;
  short *psVar2;
  char cVar3;
  uint uVar4;
  int *piVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 local_68;
  undefined local_64 [12];
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb938;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_68;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  FUN_004325b6(L"WIDTH");
  local_4 = 0;
  cVar3 = FUN_00a07740(local_58);
  local_4 = 0xffffffff;
  _free(local_3c);
  if (7 < local_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54,uVar4);
  }
  if (cVar3 != '\0') {
    FUN_004325b6(L"WIDTH");
    local_4 = 1;
    FUN_00a09860(local_34,local_58,0);
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    piVar5 = (int *)FUN_0081b542(local_64,local_20 + -1);
    iVar1 = *piVar5;
    psVar2 = (short *)piVar5[1];
    if (iVar1 != -4) {
      if (iVar1 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(iVar1 + 0x18) < 8) {
        iVar6 = iVar1 + 4;
      }
      else {
        iVar6 = *(int *)(iVar1 + 4);
      }
      if ((short *)(iVar6 + *(int *)(iVar1 + 0x14) * 2) <= psVar2) {
        FUN_00a3fb10();
      }
    }
    if (*psVar2 == 0x25) {
      uVar7 = FUN_00432231(local_64);
      local_4 = CONCAT31(local_4._1_3_,4);
      FUN_008d4170(uVar7,L"%i%%",&local_68);
      FUN_00432214();
      *(undefined4 *)(param_1 + 0x80) = local_68;
      *(undefined4 *)(param_1 + 0x84) = 2;
    }
    else {
      uVar7 = FUN_00432231(local_64);
      local_4 = CONCAT31(local_4._1_3_,5);
      FUN_008d4170(uVar7,&DAT_00d98870,&local_68);
      FUN_00432214();
      uVar7 = FUN_00a49750();
      *(undefined4 *)(param_1 + 0x80) = uVar7;
      *(undefined4 *)(param_1 + 0x84) = 1;
    }
    *(undefined4 *)(param_1 + 0xcc) = 0xffffffff;
    *(undefined4 *)(param_1 + 0xcc) = 0xffffffff;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_009f7ed0(void)

{
  return &PTR_u_wxHTML_ModuleLayout_0323e04c;
}



uint __thiscall FUN_009f7ee0(int param_1_00,int *param_1,int param_2)

{
  int iVar1;
  uint in_EAX;
  int iVar2;
  
  if ((*(int *)(param_2 + 4) != 0) && (iVar2 = *(int *)(param_1_00 + 0x20), iVar2 < *param_1)) {
    for (iVar1 = *(int *)(param_1_00 + 0xc); iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
      iVar2 = iVar2 + *(int *)(iVar1 + 0x20);
    }
    in_EAX = FUN_0086a8b0(iVar2,0);
    if (in_EAX == 0xffffffff) {
      iVar2 = *(int *)(param_1_00 + 0x20);
      *param_1 = iVar2;
      return CONCAT31((int3)((uint)iVar2 >> 8),1);
    }
  }
  return in_EAX & 0xffffff00;
}



void __thiscall FUN_009f7f30(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 8) = param_1;
  return;
}



void __thiscall FUN_009f7f40(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 8) = param_1;
  *(undefined4 *)(param_1_00 + 0xc) = param_1;
  return;
}



uint __thiscall FUN_009f7f50(int param_1,undefined4 param_2)

{
  int iVar1;
  uint uVar2;
  
  iVar1 = (**(code **)(**(int **)(*(int *)(param_1 + 0xc) + 0x7c) + 0x1c))();
  if (iVar1 != 0) {
    FUN_00a02d30();
    FUN_00a02c90();
  }
  FUN_009f5130(*(undefined4 *)(*(int *)(param_1 + 0xc) + 0x118),0x40,1);
  uVar2 = FUN_009f7af0(param_2);
  return uVar2 & 0xffffff00;
}



uint __thiscall FUN_009f7fa0(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  uint uVar2;
  int iVar3;
  
  uVar1 = *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0xc) + 0x7c) + 0x78);
  FUN_00a02d30();
  iVar3 = FUN_00a02c90();
  *(undefined4 *)(iVar3 + 0x78) = uVar1;
  *(undefined4 *)(iVar3 + 0xcc) = 0xffffffff;
  FUN_009f7af0(param_1);
  uVar2 = *(uint *)(*(int *)(param_1_00 + 0xc) + 0x118);
  *(uint *)(iVar3 + 0x68) = uVar2;
  *(undefined4 *)(iVar3 + 0xcc) = 0xffffffff;
  *(undefined4 *)(iVar3 + 0x6c) = 4;
  return uVar2 & 0xffffff00;
}



void FUN_009f8000(int param_1)

{
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_10 = *(undefined4 *)(param_1 + 0x30);
  local_c = *(undefined4 *)(param_1 + 0x34);
  local_8 = *(undefined4 *)(param_1 + 0x28);
  local_4 = *(undefined4 *)(param_1 + 0x2c);
  FUN_00a070f0(&local_8,&local_10);
  return;
}



undefined4 __thiscall FUN_009f8040(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  iVar3 = *(int *)(param_1 + 0xc);
  piVar1 = *(int **)(iVar3 + 0x7c);
  iVar2 = *(int *)(iVar3 + 0x120);
  *(undefined4 *)(iVar3 + 0x120) = 1;
  iVar3 = (**(code **)(*piVar1 + 0x1c))();
  if (iVar3 == 0) {
    piVar1[0x1e] = 1;
    piVar1[0x33] = -1;
  }
  else {
    FUN_00a02d30();
    FUN_00a02c90();
  }
  if (*(char *)(param_2 + 0x24) != '\0') {
    uStack_10 = *(undefined4 *)(param_2 + 0x30);
    uStack_c = *(undefined4 *)(param_2 + 0x34);
    uStack_8 = *(undefined4 *)(param_2 + 0x28);
    uStack_4 = *(undefined4 *)(param_2 + 0x2c);
    FUN_00a070f0(&uStack_8,&uStack_10);
    *(int *)(*(int *)(param_1 + 0xc) + 0x120) = iVar2;
    iVar3 = (**(code **)(*piVar1 + 0x1c))();
    if (iVar3 != 0) {
      FUN_00a02d30();
      FUN_00a02c90();
      return 1;
    }
    piVar1[0x1e] = iVar2;
    piVar1[0x33] = -1;
    return 1;
  }
  return 0;
}



undefined4 __thiscall FUN_009f8120(int param_1_00,int param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  FUN_00a02d30();
  iVar1 = FUN_00a02c90();
  if (*(int *)(iVar1 + 0x78) == 2) {
    iVar1 = *(int *)(*(int *)(param_1_00 + 0xc) + 0x11c);
    uVar2 = 0x20;
  }
  else {
    iVar1 = *(int *)(*(int *)(param_1_00 + 0xc) + 0x11c);
    uVar2 = 0x10;
  }
  FUN_009f5130(iVar1 * 5,uVar2,1);
  FUN_009f5130(*(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x118),0x40,1);
  FUN_00a02c90();
  local_10 = *(undefined4 *)(param_1 + 0x30);
  local_c = *(undefined4 *)(param_1 + 0x34);
  local_8 = *(undefined4 *)(param_1 + 0x28);
  local_4 = *(undefined4 *)(param_1 + 0x2c);
  FUN_00a070f0(&local_8,&local_10);
  FUN_00a02d30();
  FUN_009f5130(*(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x118),0x80,1);
  FUN_00a02d30();
  FUN_00a02c90();
  return 1;
}



undefined4 * __thiscall FUN_009f8200(undefined4 *param_1_00,undefined4 *param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb973;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009f6890(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  local_4 = 0;
  *param_1_00 = wxHtmlColourCell::vftable;
  FUN_00453f4b();
  local_4 = CONCAT31(local_4._1_3_,1);
  if (param_1_00 + 0x16 != param_1) {
    FUN_0083ea60(param_1);
  }
  param_1_00[0x18] = param_1[2];
  *(undefined *)(param_1_00 + 0x19) = *(undefined *)(param_1 + 3);
  *(undefined *)((int)param_1_00 + 0x65) = *(undefined *)((int)param_1 + 0xd);
  *(undefined *)((int)param_1_00 + 0x66) = *(undefined *)((int)param_1 + 0xe);
  *(undefined *)((int)param_1_00 + 0x67) = *(undefined *)((int)param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x1a) = *(undefined *)(param_1 + 4);
  param_1_00[0x1b] = param_2;
  ExceptionList = local_c;
  return param_1_00;
}



// Library Function - Single Match
//  public: virtual __thiscall CParkingWnd::~CParkingWnd(void)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void __thiscall CParkingWnd::~CParkingWnd(CParkingWnd *this)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beb998;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  *(undefined ***)(this + 0x58) = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4 = 0xffffffff;
  FUN_009f6950();
  ExceptionList = local_c;
  return;
}



CParkingWnd * __thiscall FUN_009f8310(CParkingWnd *param_1_00,byte param_1)

{
  CParkingWnd::~CParkingWnd(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_009f8330(undefined4 *param_1_00,undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beb9d3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009f6890(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1_00 = wxHtmlFontCell::vftable;
  param_1_00[0x17] = 0;
  param_1_00[0x16] = wxFont::vftable;
  local_4 = 1;
  if (param_1_00 + 0x16 != param_1) {
    FUN_0083ea60(param_1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_009f83a0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beb998;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00921450(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  FUN_009f6950();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009f8400(undefined4 param_1_00,byte param_1)

{
  FUN_009f83a0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_009f8420(int param_1_00,int param_1)

{
  if (param_1_00 + 0xa8 != param_1) {
    FUN_0083ea60(param_1);
  }
  *(undefined4 *)(param_1_00 + 0xb0) = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 0xb4) = *(undefined *)(param_1 + 0xc);
  *(undefined *)(param_1_00 + 0xb5) = *(undefined *)(param_1 + 0xd);
  *(undefined *)(param_1_00 + 0xb6) = *(undefined *)(param_1 + 0xe);
  *(undefined *)(param_1_00 + 0xb7) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 0xb8) = *(undefined *)(param_1 + 0x10);
  return;
}



void FUN_009f8470(int *param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_P::vftable;
  }
  (**(code **)(*param_1 + 0x24))(puVar1);
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_BR::vftable;
  }
  (**(code **)(*param_1 + 0x24))(puVar1);
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_CENTER::vftable;
  }
  (**(code **)(*param_1 + 0x24))(puVar1);
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_DIV::vftable;
  }
  (**(code **)(*param_1 + 0x24))(puVar1);
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_TITLE::vftable;
  }
  (**(code **)(*param_1 + 0x24))(puVar1);
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_BODY::vftable;
  }
  (**(code **)(*param_1 + 0x24))(puVar1);
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_BLOCKQUOTE::vftable;
  }
  (**(code **)(*param_1 + 0x24))(puVar1);
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_SUBSUP::vftable;
  }
  (**(code **)(*param_1 + 0x24))(puVar1);
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_DoNothing::vftable;
    (**(code **)(*param_1 + 0x24))(puVar1);
    return;
  }
  (**(code **)(*param_1 + 0x24))(0);
  return;
}



undefined4 * FUN_009f8600(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHTML_ModuleLayout::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 FUN_009f8660(undefined4 param_1)

{
  FUN_004325b6(&DAT_00d98bc0);
  return param_1;
}



undefined4 FUN_009f8690(undefined4 param_1)

{
  FUN_004325b6(&DAT_00d98bc4);
  return param_1;
}



undefined4 FUN_009f86c0(undefined4 param_1)

{
  FUN_004325b6(L"CENTER");
  return param_1;
}



undefined4 FUN_009f86f0(undefined4 param_1)

{
  FUN_004325b6(&DAT_00d98bcc);
  return param_1;
}



undefined4 __thiscall FUN_009f8720(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  char cVar2;
  uint uVar3;
  undefined4 *puVar4;
  int iVar5;
  int iVar6;
  int *piVar7;
  undefined local_78 [4];
  uint local_74;
  undefined4 local_64;
  uint local_60;
  void *local_5c;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beba1b;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_c;
  FUN_004325b6(L"STYLE");
  local_4 = 0;
  cVar2 = FUN_00a07740(local_54);
  local_4 = 0xffffffff;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50,uVar3);
  }
  if (cVar2 == '\0') {
    FUN_004325b6(L"ALIGN");
    local_4 = 4;
    cVar2 = FUN_00a07740(local_78);
    local_4 = 0xffffffff;
    _free(local_5c);
    if (7 < local_60) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_74);
    }
    local_60 = 7;
    local_64 = 0;
    local_74 = local_74 & 0xffff0000;
    if (cVar2 != '\0') {
      piVar7 = *(int **)(*(int *)(param_1_00 + 0xc) + 0x7c);
      iVar6 = *(int *)(*(int *)(param_1_00 + 0xc) + 0x120);
      iVar5 = (**(code **)(*piVar7 + 0x1c))();
      if (iVar5 == 0) {
        FUN_009f7af0(param_1);
        *(int *)(*(int *)(param_1_00 + 0xc) + 0x120) = piVar7[0x1e];
      }
      else {
        FUN_00a02d30();
        FUN_00a02c90();
        piVar7 = *(int **)(*(int *)(param_1_00 + 0xc) + 0x7c);
        FUN_009f7af0(param_1);
        *(int *)(*(int *)(param_1_00 + 0xc) + 0x120) = piVar7[0x1e];
      }
      FUN_009f8000(param_1);
      *(int *)(*(int *)(param_1_00 + 0xc) + 0x120) = iVar6;
      iVar5 = (**(code **)(*piVar7 + 0x1c))();
      if (iVar5 != 0) {
        FUN_00a02d30();
        FUN_00a02c90();
        ExceptionList = local_c;
        return 1;
      }
      piVar7[0x1e] = iVar6;
      piVar7[0x33] = -1;
      ExceptionList = local_c;
      return 1;
    }
    uVar1 = *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0xc) + 0x7c) + 0x78);
    FUN_00a02d30();
    iVar6 = FUN_00a02c90();
    *(undefined4 *)(iVar6 + 0x78) = uVar1;
    *(undefined4 *)(iVar6 + 0xcc) = 0xffffffff;
    FUN_009f7af0(param_1);
    *(undefined4 *)(iVar6 + 0x68) = *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x118);
    *(undefined4 *)(iVar6 + 0x6c) = 4;
    *(undefined4 *)(iVar6 + 0xcc) = 0xffffffff;
  }
  else {
    FUN_004325b6(L"STYLE");
    local_4 = 1;
    FUN_00a09860(local_54,local_30,0);
    local_4 = CONCAT31(local_4._1_3_,2);
    cVar2 = FUN_00855ef0(L"PAGE-BREAK-BEFORE:ALWAYS",0);
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    if (cVar2 != '\0') {
      FUN_00a02d30();
      puVar4 = (undefined4 *)operator_new(0x58);
      local_4 = 3;
      if (puVar4 == (undefined4 *)0x0) {
        puVar4 = (undefined4 *)0x0;
      }
      else {
        FUN_009f6890();
        *puVar4 = wxHtmlPageBreakCell::vftable;
      }
      local_4 = 0xffffffff;
      FUN_00a02c90(puVar4);
      FUN_009f52b0(puVar4);
      FUN_00a02d30();
      FUN_00a02c90();
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_009f8a40(undefined4 param_1)

{
  FUN_004325b6(L"TITLE");
  return param_1;
}



void __thiscall FUN_009f8a70(int param_1_00,int param_1)

{
  int *piVar1;
  uint uVar2;
  undefined *puVar3;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined4 uStack_30;
  uint uStack_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00bdcc30;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_58;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  piVar1 = *(int **)(*(int *)(param_1_00 + 0xc) + 100);
  if (piVar1 != (int *)0x0) {
    FUN_00427fd0(*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),
                 *(undefined4 *)(param_1 + 0x30),*(undefined4 *)(param_1 + 0x34));
    local_18 = (void *)0x0;
    local_4 = 0;
    puVar3 = (undefined *)FUN_00a06860(local_58,local_34);
    local_4._0_1_ = 1;
    if (local_34 != puVar3) {
      FID_conflict_assign(puVar3,0,0xffffffff);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    (**(code **)(*piVar1 + 4))(local_34,uVar2);
    _free(local_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_009f8b90(undefined4 param_1)

{
  FUN_004325b6(L"BODY");
  return param_1;
}



uint __fastcall FUN_009f8bc0(int param_1)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  void *pvVar4;
  undefined4 uVar5;
  int *piVar6;
  uint uVar7;
  undefined **appuStack_78 [2];
  undefined auStack_70 [8];
  undefined **local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined local_5c;
  undefined local_5b;
  undefined local_5a;
  undefined local_59;
  undefined local_58;
  undefined local_54 [4];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 uStack_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bebaa6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_64 = 0;
  local_4 = 0;
  local_68 = wxColour::vftable;
  FUN_0093b2c0(DAT_0323f878 ^ (uint)&stack0xffffff78);
  local_4 = 1;
  FUN_004325b6(L"TEXT");
  local_4._0_1_ = 2;
  cVar3 = FUN_00a099b0(local_30,&local_68);
  local_4 = CONCAT31(local_4._1_3_,1);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (cVar3 != '\0') {
    iVar1 = *(int *)(param_1 + 0xc);
    if ((undefined ***)(iVar1 + 0xa8) != &local_68) {
      FUN_0083ea60(&local_68);
    }
    *(undefined4 *)(iVar1 + 0xb0) = local_60;
    *(undefined *)(iVar1 + 0xb4) = local_5c;
    *(undefined *)(iVar1 + 0xb5) = local_5b;
    *(undefined *)(iVar1 + 0xb6) = local_5a;
    *(undefined *)(iVar1 + 0xb7) = local_59;
    *(undefined *)(iVar1 + 0xb8) = local_58;
    pvVar4 = operator_new(0x70);
    local_4._0_1_ = 3;
    if (pvVar4 == (void *)0x0) {
      uVar5 = 0;
    }
    else {
      uVar5 = FUN_009f8200(&local_68,1);
    }
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_009f52b0(uVar5);
  }
  FUN_004325b6(L"LINK");
  local_4._0_1_ = 4;
  cVar3 = FUN_00a099b0(local_30,&local_68);
  local_4 = CONCAT31(local_4._1_3_,1);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (cVar3 != '\0') {
    iVar1 = *(int *)(param_1 + 0xc);
    if ((undefined ***)(iVar1 + 0x94) != &local_68) {
      FUN_0083ea60(&local_68);
    }
    *(undefined4 *)(iVar1 + 0x9c) = local_60;
    *(undefined *)(iVar1 + 0xa0) = local_5c;
    *(undefined *)(iVar1 + 0xa1) = local_5b;
    *(undefined *)(iVar1 + 0xa2) = local_5a;
    *(undefined *)(iVar1 + 0xa3) = local_59;
    *(undefined *)(iVar1 + 0xa4) = local_58;
  }
  piVar2 = *(int **)(*(int *)(param_1 + 0xc) + 100);
  if (piVar2 != (int *)0x0) {
    FUN_004325b6(L"BACKGROUND");
    local_4._0_1_ = 5;
    cVar3 = FUN_00a07740(local_30);
    local_4._0_1_ = 1;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    if (cVar3 != '\0') {
      FUN_004325b6(L"BACKGROUND");
      local_4._0_1_ = 6;
      uVar5 = FUN_00a09860(local_30,local_54,0);
      local_4._0_1_ = 7;
      piVar6 = (int *)(**(code **)(**(int **)(param_1 + 0xc) + 0x10))(1,uVar5);
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
      local_18 = 7;
      uStack_1c = 0;
      local_2c = local_2c & 0xffff0000;
      local_4._0_1_ = 1;
      _free(pvStack_38);
      if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_50);
      }
      uStack_3c = 7;
      uStack_40 = 0;
      uStack_50 = uStack_50 & 0xffff0000;
      if (piVar6 != (int *)0x0) {
        if (piVar6[2] != 0) {
          FUN_004706ad(piVar6[2],0x32,0xffffffff);
          local_4._0_1_ = 8;
          cVar3 = FUN_008ff820();
          if (cVar3 != '\0') {
            FUN_00414f38(appuStack_78,0xffffffff);
            local_4._0_1_ = 9;
            (**(code **)(*piVar2 + 0x20))(auStack_70);
            local_4._0_1_ = 8;
            FUN_008f7630();
          }
          local_4._0_1_ = 1;
          appuStack_78[0] = wxObject::vftable;
          FUN_0083e850();
        }
        (**(code **)(*piVar6 + 4))(1);
      }
    }
    FUN_004325b6(L"BGCOLOR");
    local_4._0_1_ = 10;
    cVar3 = FUN_00a099b0(local_54,&local_68);
    local_4._0_1_ = 1;
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
    if (cVar3 != '\0') {
      pvVar4 = operator_new(0x70);
      local_4._0_1_ = 0xb;
      if (pvVar4 == (void *)0x0) {
        uVar5 = 0;
      }
      else {
        uVar5 = FUN_009f8200(&local_68,2);
      }
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_009f52b0(uVar5);
      (**(code **)(*piVar2 + 0x1c))(&local_68);
    }
  }
  local_4 = 0xffffffff;
  local_68 = wxObject::vftable;
  uVar7 = FUN_0083e850();
  ExceptionList = local_c;
  return uVar7 & 0xffffff00;
}



undefined4 FUN_009f9060(undefined4 param_1)

{
  FUN_004325b6(L"BLOCKQUOTE");
  return param_1;
}



undefined4 FUN_009f9090(undefined4 param_1)

{
  FUN_004325b6(L"SUB,SUP");
  return param_1;
}



undefined4 __thiscall FUN_009f90c0(int param_1_00,int param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  undefined4 uVar7;
  void *pvVar8;
  undefined4 uVar9;
  void *local_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bebaee;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  FUN_008560c0(local_30);
  local_4 = 0;
  iVar6 = FUN_008507a0(&DAT_00d98c88);
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar5);
  }
  iVar1 = *(int *)(param_1_00 + 0xc);
  uVar9 = *(undefined4 *)(iVar1 + 0x90);
  uVar2 = *(undefined4 *)(iVar1 + 0x124);
  iVar3 = *(int *)(*(int *)(iVar1 + 0x7c) + 0x74);
  iVar4 = *(int *)(iVar1 + 0x128);
  *(uint *)(iVar1 + 0x124) = (iVar6 != 0) + 1;
  if (iVar4 * 0x58 + iVar3 == 0) {
    uVar7 = 0;
  }
  else {
    uVar7 = *(undefined4 *)(iVar3 + 0x28);
  }
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x128) = uVar7;
  FUN_00a02d40(*(int *)(*(int *)(param_1_00 + 0xc) + 0x90) + -2);
  local_40 = operator_new(0x60);
  local_4 = 1;
  if (local_40 == (void *)0x0) {
    uVar7 = 0;
  }
  else {
    uVar7 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
    uVar7 = FUN_009f8330(uVar7);
  }
  local_4 = 0xffffffff;
  FUN_009f52b0(uVar7);
  uStack_3c = *(undefined4 *)(param_1 + 0x34);
  uStack_38 = *(undefined4 *)(param_1 + 0x28);
  local_40 = *(void **)(param_1 + 0x30);
  uStack_34 = *(undefined4 *)(param_1 + 0x2c);
  FUN_00a070f0(&uStack_38,&local_40);
  FUN_00a02d40(uVar9);
  pvVar8 = operator_new(0x60);
  local_4 = 2;
  if (pvVar8 == (void *)0x0) {
    uVar9 = 0;
  }
  else {
    uVar9 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
    uVar9 = FUN_009f8330(uVar9);
  }
  local_4 = 0xffffffff;
  FUN_009f52b0(uVar9);
  *(int *)(*(int *)(param_1_00 + 0xc) + 0x128) = iVar4;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x124) = uVar2;
  ExceptionList = local_c;
  return CONCAT31((int3)((uint)iVar4 >> 8),1);
}



undefined4 FUN_009f9290(undefined4 param_1)

{
  FUN_004325b6(L"SCRIPT");
  return param_1;
}



undefined ** FUN_009f92c0(void)

{
  return &PTR_u_wxHTML_ModuleFonts_0323e194;
}



undefined4 * __fastcall FUN_009f92d0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  param_1[2] = 0;
  local_4 = 0;
  *param_1 = wxHTML_Handler_FONT::vftable;
  FUN_00853ce0(0);
  ExceptionList = local_c;
  return param_1;
}



void FUN_009f9330(int *param_1)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x20);
  local_4 = 0;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_009f92d0(uVar1);
  }
  local_4 = 0xffffffff;
  (**(code **)(*param_1 + 0x24))(uVar3);
  puVar4 = (undefined4 *)operator_new(0x10);
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    puVar4[1] = 0;
    puVar4[2] = 0;
    *puVar4 = wxHTML_Handler_FACES_U::vftable;
  }
  (**(code **)(*param_1 + 0x24))(puVar4);
  puVar4 = (undefined4 *)operator_new(0x10);
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    puVar4[1] = 0;
    puVar4[2] = 0;
    *puVar4 = wxHTML_Handler_FACES_I::vftable;
  }
  (**(code **)(*param_1 + 0x24))();
  puVar5 = (undefined4 *)operator_new(0x10);
  if (puVar5 == (undefined4 *)0x0) {
    puVar5 = (undefined4 *)0x0;
  }
  else {
    puVar5[1] = 0;
    puVar5[2] = 0;
    *puVar5 = wxHTML_Handler_FACES_B::vftable;
  }
  (**(code **)(*param_1 + 0x24))(puVar5);
  puVar5 = (undefined4 *)operator_new(0x10);
  if (puVar5 == (undefined4 *)0x0) {
    puVar5 = (undefined4 *)0x0;
  }
  else {
    puVar5[1] = 0;
    puVar5[2] = 0;
    *puVar5 = wxHTML_Handler_FACES_TT::vftable;
  }
  (**(code **)(*param_1 + 0x24))(puVar5);
  puVar5 = (undefined4 *)operator_new(0x10);
  if (puVar5 == (undefined4 *)0x0) {
    puVar5 = (undefined4 *)0x0;
  }
  else {
    puVar5[1] = 0;
    puVar5[2] = 0;
    *puVar5 = wxHTML_Handler_Hx::vftable;
  }
  (**(code **)(*param_1 + 0x24))(puVar5);
  puVar5 = (undefined4 *)operator_new(0x10);
  if (puVar5 == (undefined4 *)0x0) {
    puVar5 = (undefined4 *)0x0;
  }
  else {
    puVar5[1] = 0;
    puVar5[2] = 0;
    *puVar5 = wxHTML_Handler_BIGSMALL::vftable;
  }
  (**(code **)(*param_1 + 0x24))(puVar5);
  ExceptionList = puVar4;
  return;
}



undefined4 __thiscall FUN_009f9490(int param_1,int param_2)

{
  uint uVar1;
  undefined4 uVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bebb26;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  uVar4 = *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x88);
  *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x88) = 1;
  local_1c = operator_new(0x60);
  uVar2 = 0;
  local_4 = 0;
  if (local_1c != (void *)0x0) {
    uVar2 = (**(code **)(**(int **)(param_1 + 0xc) + 0x3c))(uVar1);
    uVar2 = FUN_009f8330(uVar2);
  }
  local_4 = 0xffffffff;
  FUN_009f52b0(uVar2);
  local_1c = *(void **)(param_2 + 0x30);
  uStack_18 = *(undefined4 *)(param_2 + 0x34);
  uStack_14 = *(undefined4 *)(param_2 + 0x28);
  uStack_10 = *(undefined4 *)(param_2 + 0x2c);
  FUN_00a070f0(&uStack_14,&local_1c);
  *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x88) = uVar4;
  pvVar3 = operator_new(0x60);
  local_4 = 1;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = (**(code **)(**(int **)(param_1 + 0xc) + 0x3c))();
    uVar4 = FUN_009f8330(uVar4);
  }
  local_4 = 0xffffffff;
  FUN_009f52b0(uVar4);
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_009f95b0(int param_1,int param_2)

{
  uint uVar1;
  undefined4 uVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bebb26;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  uVar4 = *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x80);
  *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x80) = 1;
  local_1c = operator_new(0x60);
  uVar2 = 0;
  local_4 = 0;
  if (local_1c != (void *)0x0) {
    uVar2 = (**(code **)(**(int **)(param_1 + 0xc) + 0x3c))(uVar1);
    uVar2 = FUN_009f8330(uVar2);
  }
  local_4 = 0xffffffff;
  FUN_009f52b0(uVar2);
  local_1c = *(void **)(param_2 + 0x30);
  uStack_18 = *(undefined4 *)(param_2 + 0x34);
  uStack_14 = *(undefined4 *)(param_2 + 0x28);
  uStack_10 = *(undefined4 *)(param_2 + 0x2c);
  FUN_00a070f0(&uStack_14,&local_1c);
  *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x80) = uVar4;
  pvVar3 = operator_new(0x60);
  local_4 = 1;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = (**(code **)(**(int **)(param_1 + 0xc) + 0x3c))();
    uVar4 = FUN_009f8330(uVar4);
  }
  local_4 = 0xffffffff;
  FUN_009f52b0(uVar4);
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_009f96d0(int param_1,int param_2)

{
  uint uVar1;
  undefined4 uVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bebb26;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  uVar4 = *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x84);
  *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x84) = 1;
  local_1c = operator_new(0x60);
  uVar2 = 0;
  local_4 = 0;
  if (local_1c != (void *)0x0) {
    uVar2 = (**(code **)(**(int **)(param_1 + 0xc) + 0x3c))(uVar1);
    uVar2 = FUN_009f8330(uVar2);
  }
  local_4 = 0xffffffff;
  FUN_009f52b0(uVar2);
  local_1c = *(void **)(param_2 + 0x30);
  uStack_18 = *(undefined4 *)(param_2 + 0x34);
  uStack_14 = *(undefined4 *)(param_2 + 0x28);
  uStack_10 = *(undefined4 *)(param_2 + 0x2c);
  FUN_00a070f0(&uStack_14,&local_1c);
  *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x84) = uVar4;
  pvVar3 = operator_new(0x60);
  local_4 = 1;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = (**(code **)(**(int **)(param_1 + 0xc) + 0x3c))();
    uVar4 = FUN_009f8330(uVar4);
  }
  local_4 = 0xffffffff;
  FUN_009f52b0(uVar4);
  ExceptionList = local_c;
  return 1;
}



undefined4 __thiscall FUN_009f97f0(int param_1,int param_2)

{
  uint uVar1;
  undefined4 uVar2;
  void *pvVar3;
  undefined4 uVar4;
  void *local_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bebb26;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  uVar4 = *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x8c);
  *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x8c) = 1;
  local_1c = operator_new(0x60);
  uVar2 = 0;
  local_4 = 0;
  if (local_1c != (void *)0x0) {
    uVar2 = (**(code **)(**(int **)(param_1 + 0xc) + 0x3c))(uVar1);
    uVar2 = FUN_009f8330(uVar2);
  }
  local_4 = 0xffffffff;
  FUN_009f52b0(uVar2);
  local_1c = *(void **)(param_2 + 0x30);
  uStack_18 = *(undefined4 *)(param_2 + 0x34);
  uStack_14 = *(undefined4 *)(param_2 + 0x28);
  uStack_10 = *(undefined4 *)(param_2 + 0x2c);
  FUN_00a070f0(&uStack_14,&local_1c);
  *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x8c) = uVar4;
  pvVar3 = operator_new(0x60);
  local_4 = 1;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = (**(code **)(**(int **)(param_1 + 0xc) + 0x3c))();
    uVar4 = FUN_009f8330(uVar4);
  }
  local_4 = 0xffffffff;
  FUN_009f52b0(uVar4);
  ExceptionList = local_c;
  return 1;
}



undefined4 * FUN_009f9910(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHTML_ModuleFonts::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



int __thiscall FUN_009f9970(int param_1_00,int param_1)

{
  int iVar1;
  
  iVar1 = param_1_00 + 0x12c8;
  if (*(int *)(param_1_00 + 0x8c) == 0) {
    iVar1 = param_1_00 + 0x12ec;
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(iVar1,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



undefined4 FUN_009f99c0(undefined4 param_1)

{
  FUN_004325b6(0xd98dc8);
  return param_1;
}



void __thiscall FUN_009f99f0(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  bool bVar5;
  undefined **local_148;
  int local_144;
  undefined4 local_140;
  char local_13c;
  char local_13b;
  char local_13a;
  char local_139;
  char local_138;
  int local_134;
  void *local_130;
  undefined4 uStack_12c;
  int local_120;
  int local_11c;
  undefined4 uStack_118;
  undefined **local_114;
  uint local_110;
  undefined4 local_100;
  uint local_fc;
  void *local_f8;
  undefined auStack_f0 [4];
  uint uStack_ec;
  undefined4 uStack_dc;
  uint uStack_d8;
  void *pvStack_d4;
  undefined auStack_cc [4];
  undefined4 uStack_c8;
  uint uStack_b4;
  void *pvStack_b0;
  undefined local_a8 [4];
  uint local_a4;
  undefined4 uStack_94;
  uint local_90;
  void *local_8c;
  undefined local_84 [4];
  uint uStack_80;
  int iStack_70;
  uint uStack_6c;
  void *pvStack_68;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bebc51;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_148;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffea8;
  ExceptionList = &local_c;
  iVar4 = *(int *)(param_1_00 + 0xc);
  local_144 = *(int *)(iVar4 + 0xac);
  local_11c = param_1;
  if (local_144 != 0) {
    *(int *)(local_144 + 4) = *(int *)(local_144 + 4) + 1;
  }
  local_148 = wxColour::vftable;
  local_140 = *(undefined4 *)(iVar4 + 0xb0);
  local_13c = *(char *)(iVar4 + 0xb4);
  local_13b = *(char *)(iVar4 + 0xb5);
  local_13a = *(char *)(iVar4 + 0xb6);
  local_139 = *(char *)(iVar4 + 0xb7);
  local_138 = *(char *)(iVar4 + 0xb8);
  local_120 = *(int *)(*(int *)(param_1_00 + 0xc) + 0x90);
  local_4 = 0;
  FUN_009f9970(local_84);
  local_4._0_1_ = 1;
  FUN_004325b6(L"COLOR");
  local_4._0_1_ = 2;
  cVar1 = FUN_00a07740(local_a8);
  local_4._0_1_ = 1;
  _free(local_8c);
  if (7 < local_90) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_a4);
  }
  if (cVar1 != '\0') {
    FUN_00453f4b(uVar2);
    local_4._0_1_ = 3;
    FUN_004325b6(L"COLOR");
    local_4._0_1_ = 4;
    cVar1 = FUN_00a099b0(local_a8,&local_114);
    local_4._0_1_ = 3;
    _free(local_8c);
    if (7 < local_90) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a4);
    }
    if (cVar1 != '\0') {
      FUN_009f8420(&local_114);
      local_130 = operator_new(0x70);
      local_4._0_1_ = 5;
      if (local_130 == (void *)0x0) {
        uVar3 = 0;
      }
      else {
        uVar3 = FUN_009f8200(&local_114,1);
      }
      local_4._0_1_ = 3;
      FUN_009f52b0(uVar3);
    }
    local_4._0_1_ = 1;
    local_114 = wxObject::vftable;
    FUN_0083e850();
  }
  FUN_004325b6(L"SIZE");
  local_4._0_1_ = 6;
  cVar1 = FUN_00a07740(local_a8);
  local_4._0_1_ = 1;
  _free(local_8c);
  if (7 < local_90) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_a4);
  }
  if (cVar1 != '\0') {
    local_134 = 0;
    FUN_004325b6(L"SIZE");
    local_4._0_1_ = 7;
    FUN_00a09860(local_a8,&local_114,0);
    local_4._0_1_ = 9;
    _free(local_f8);
    if (7 < local_fc) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_110);
    }
    local_fc = 7;
    local_100 = 0;
    local_110 = local_110 & 0xffff0000;
    cVar1 = FUN_00850950(&local_134,10);
    if (cVar1 != '\0') {
      FUN_0081feb2(&local_130,0);
      if (((short)local_130 == 0x2b) || (iVar4 = local_134, (short)local_130 == 0x2d)) {
        iVar4 = local_134 + local_120;
      }
      FUN_00a02d40(iVar4);
      local_130 = operator_new(0x60);
      local_4._0_1_ = 10;
      if (local_130 == (void *)0x0) {
        uVar3 = 0;
      }
      else {
        uVar3 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
        uVar3 = FUN_009f8330(uVar3);
      }
      local_4._0_1_ = 9;
      FUN_009f52b0(uVar3);
    }
    local_4._0_1_ = 1;
    _free(local_8c);
    if (7 < local_90) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a4);
    }
  }
  FUN_004325b6(L"FACE");
  local_4._0_1_ = 0xb;
  cVar1 = FUN_00a07740(local_a8);
  local_4._0_1_ = 1;
  _free(local_8c);
  if (7 < local_90) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_a4);
  }
  if (cVar1 != '\0') {
    if (*(int *)(param_1_00 + 0x14) == 0) {
      uVar3 = FUN_00984340(&local_130,0xffffffff,0);
      local_4._0_1_ = 0xc;
      FUN_00855070(uVar3);
      local_4._0_1_ = 1;
      FUN_00853f30();
    }
    FUN_004325b6(&DAT_00d3e174);
    local_4._0_1_ = 0xd;
    FUN_004325b6(L"FACE");
    local_4._0_1_ = 0xe;
    uVar3 = FUN_00a09860(local_a8,&local_114,0);
    local_4._0_1_ = 0xf;
    FUN_00894710(uVar3,auStack_f0,0);
    _free(local_8c);
    if (7 < local_90) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a4);
    }
    local_90 = 7;
    uStack_94 = 0;
    local_a4 = local_a4 & 0xffff0000;
    _free(local_f8);
    if (7 < local_fc) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_110);
    }
    local_fc = 7;
    local_100 = 0;
    local_110 = local_110 & 0xffff0000;
    local_4._0_1_ = 0x13;
    _free(pvStack_d4);
    if (7 < uStack_d8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_ec);
    }
    uStack_ec = uStack_ec & 0xffff0000;
    uStack_d8 = 7;
    uStack_dc = 0;
    cVar1 = FUN_00894180();
    while (cVar1 != '\0') {
      uVar3 = FUN_00894270(auStack_cc);
      local_4._0_1_ = 0x14;
      iVar4 = FUN_00853d10(uVar3,0,0);
      local_4._0_1_ = 0x13;
      _free(pvStack_b0);
      if (7 < uStack_b4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_c8);
      }
      if (iVar4 != -1) {
        uVar3 = thunk_FUN_004325d6(iVar4);
        FUN_00a041d0(uVar3);
        local_130 = operator_new(0x60);
        local_4._0_1_ = 0x15;
        if (local_130 == (void *)0x0) {
          uVar3 = 0;
        }
        else {
          uVar3 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
          uVar3 = FUN_009f8330(uVar3);
        }
        local_4._0_1_ = 0x13;
        FUN_009f52b0(uVar3);
        param_1 = local_11c;
        break;
      }
      cVar1 = FUN_00894180();
      param_1 = local_11c;
    }
    local_4._0_1_ = 1;
    FUN_0083fa70();
  }
  uStack_12c = *(undefined4 *)(param_1 + 0x34);
  local_11c = *(int *)(param_1 + 0x28);
  local_130 = *(void **)(param_1 + 0x30);
  uStack_118 = *(undefined4 *)(param_1 + 0x2c);
  FUN_00a070f0(&local_11c,&local_130);
  iVar4 = FUN_009f9970(local_a8);
  local_4._0_1_ = 0x16;
  if (iStack_70 == *(int *)(iVar4 + 0x14)) {
    iVar4 = FUN_00850760(iVar4);
    bVar5 = iVar4 == 0;
  }
  else {
    bVar5 = false;
  }
  local_4._0_1_ = 1;
  _free(local_8c);
  if (7 < local_90) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_a4);
  }
  local_90 = 7;
  uStack_94 = 0;
  local_a4 = local_a4 & 0xffff0000;
  if (!bVar5) {
    FUN_00a041d0(local_84);
    local_130 = operator_new(0x60);
    local_4._0_1_ = 0x17;
    if (local_130 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
      uVar3 = FUN_009f8330(uVar3);
    }
    local_4._0_1_ = 1;
    FUN_009f52b0(uVar3);
  }
  if (local_120 != *(int *)(*(int *)(param_1_00 + 0xc) + 0x90)) {
    FUN_00a02d40(local_120);
    local_130 = operator_new(0x60);
    local_4._0_1_ = 0x18;
    if (local_130 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
      uVar3 = FUN_009f8330(uVar3);
    }
    local_4._0_1_ = 1;
    FUN_009f52b0(uVar3);
  }
  iVar4 = *(int *)(param_1_00 + 0xc);
  if ((((local_13c != *(char *)(iVar4 + 0xb4)) || (local_13b != *(char *)(iVar4 + 0xb5))) ||
      (local_139 != *(char *)(iVar4 + 0xb7))) ||
     ((local_13a != *(char *)(iVar4 + 0xb6) || (local_138 != *(char *)(iVar4 + 0xb8))))) {
    if ((undefined ***)(iVar4 + 0xa8) != &local_148) {
      FUN_0083ea60(&local_148);
    }
    *(undefined4 *)(iVar4 + 0xb0) = local_140;
    *(char *)(iVar4 + 0xb4) = local_13c;
    *(char *)(iVar4 + 0xb5) = local_13b;
    *(char *)(iVar4 + 0xb6) = local_13a;
    *(char *)(iVar4 + 0xb7) = local_139;
    *(char *)(iVar4 + 0xb8) = local_138;
    local_130 = operator_new(0x70);
    local_4._0_1_ = 0x19;
    if (local_130 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = FUN_009f8200(&local_148,1);
    }
    local_4._0_1_ = 1;
    FUN_009f52b0(uVar3);
  }
  _free(pvStack_68);
  if (7 < uStack_6c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_80);
  }
  uStack_6c = 7;
  iStack_70 = 0;
  uStack_80 = uStack_80 & 0xffff0000;
  local_4 = 0xffffffff;
  local_148 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_009fa320(undefined4 param_1)

{
  FUN_004325b6(L"U,STRIKE,DEL");
  return param_1;
}



undefined4 FUN_009fa350(undefined4 param_1)

{
  FUN_004325b6(L"B,STRONG");
  return param_1;
}



undefined4 FUN_009fa380(undefined4 param_1)

{
  FUN_004325b6(L"I,EM,CITE,ADDRESS");
  return param_1;
}



undefined4 FUN_009fa3b0(undefined4 param_1)

{
  FUN_004325b6(L"TT,CODE,KBD,SAMP");
  return param_1;
}



undefined4 FUN_009fa3e0(undefined4 param_1)

{
  FUN_004325b6(L"H1,H2,H3,H4,H5,H6");
  return param_1;
}



undefined4 __thiscall FUN_009fa410(int param_1_00,int param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  uint uVar6;
  int iVar7;
  void *pvVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bebcc6;
  local_c = ExceptionList;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  iVar7 = *(int *)(param_1_00 + 0xc);
  uVar10 = *(undefined4 *)(iVar7 + 0x90);
  uVar1 = *(undefined4 *)(iVar7 + 0x80);
  uVar2 = *(undefined4 *)(iVar7 + 0x84);
  uVar3 = *(undefined4 *)(iVar7 + 0x88);
  uVar4 = *(undefined4 *)(iVar7 + 0x8c);
  uVar5 = *(undefined4 *)(iVar7 + 0x120);
  *(undefined4 *)(iVar7 + 0x80) = 1;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x84) = 0;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x88) = 0;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x8c) = 0;
  FUN_008560c0(local_30);
  local_4 = 0;
  iVar7 = FUN_008507a0(&DAT_00d98ebc);
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar6);
  }
  if (iVar7 == 0) {
    FUN_00a02d40(7);
  }
  else {
    FUN_008560c0(local_30);
    local_4 = 1;
    iVar7 = FUN_008507a0(&DAT_00d98eb4);
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    if (iVar7 == 0) {
      FUN_00a02d40(6);
    }
    else {
      FUN_008560c0(local_30);
      local_4 = 2;
      iVar7 = FUN_008507a0(&DAT_00d98eac);
      local_4 = 0xffffffff;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
      if (iVar7 == 0) {
        FUN_00a02d40(5);
      }
      else {
        FUN_008560c0(local_30);
        local_4 = 3;
        iVar7 = FUN_008507a0(&DAT_00d98ea4);
        local_4 = 0xffffffff;
        FUN_0040159c();
        if (iVar7 == 0) {
          uVar9 = 5;
        }
        else {
          FUN_008560c0(local_30);
          local_4 = 4;
          iVar7 = FUN_008507a0(&DAT_00d98e9c);
          local_4 = 0xffffffff;
          FUN_0040159c();
          if (iVar7 == 0) {
            FUN_00a02d40(4);
            goto LAB_009fa6a6;
          }
          FUN_008560c0(local_30);
          local_4 = 5;
          iVar7 = FUN_008507a0(&DAT_00d98e94);
          local_4 = 0xffffffff;
          FUN_0040159c();
          if (iVar7 != 0) goto LAB_009fa6a6;
          uVar9 = 4;
        }
        FUN_00a02d40(uVar9);
        *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x84) = 1;
        *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x80) = 0;
      }
    }
  }
LAB_009fa6a6:
  iVar7 = (**(code **)(**(int **)(*(int *)(param_1_00 + 0xc) + 0x7c) + 0x1c))();
  if (iVar7 != 0) {
    FUN_00a02d30();
    FUN_00a02c90();
  }
  iVar7 = *(int *)(*(int *)(param_1_00 + 0xc) + 0x7c);
  FUN_009f7af0(param_1);
  pvVar8 = operator_new(0x60);
  local_4 = 6;
  if (pvVar8 == (void *)0x0) {
    uVar9 = 0;
  }
  else {
    uVar9 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
    uVar9 = FUN_009f8330(uVar9);
  }
  local_4 = 0xffffffff;
  FUN_009f52b0(uVar9);
  FUN_009f5130(*(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x118),0x40,1);
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x120) = *(undefined4 *)(iVar7 + 0x78);
  uStack_3c = *(undefined4 *)(param_1 + 0x34);
  uStack_38 = *(undefined4 *)(param_1 + 0x28);
  uStack_40 = *(undefined4 *)(param_1 + 0x30);
  uStack_34 = *(undefined4 *)(param_1 + 0x2c);
  FUN_00a070f0(&uStack_38,&uStack_40);
  FUN_00a02d40(uVar10);
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x80) = uVar1;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x84) = uVar2;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x88) = uVar3;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x8c) = uVar4;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x120) = uVar5;
  pvVar8 = operator_new(0x60);
  local_4 = 7;
  if (pvVar8 == (void *)0x0) {
    uVar10 = 0;
  }
  else {
    uVar10 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
    uVar10 = FUN_009f8330(uVar10);
  }
  local_4 = 0xffffffff;
  FUN_009f52b0(uVar10);
  FUN_00a02d30();
  FUN_00a02c90();
  FUN_009f5130(*(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x118),0x40,1);
  ExceptionList = local_c;
  return 1;
}



undefined4 FUN_009fa840(undefined4 param_1)

{
  FUN_004325b6(L"BIG,SMALL");
  return param_1;
}



undefined4 __thiscall FUN_009fa870(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  void *pvVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bebd0e;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  uVar5 = *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x90);
  FUN_008560c0(local_30);
  local_4 = 0;
  iVar2 = FUN_008507a0(&DAT_00d98ed8);
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  FUN_00a02d40((-(uint)(iVar2 != 0) & 0xfffffffe) + 1);
  pvVar3 = operator_new(0x60);
  local_4 = 1;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
    uVar4 = FUN_009f8330(uVar4);
  }
  local_4 = 0xffffffff;
  FUN_009f52b0(uVar4);
  uStack_3c = *(undefined4 *)(param_1 + 0x34);
  uStack_38 = *(undefined4 *)(param_1 + 0x28);
  uStack_40 = *(undefined4 *)(param_1 + 0x30);
  uStack_34 = *(undefined4 *)(param_1 + 0x2c);
  FUN_00a070f0(&uStack_38,&uStack_40);
  FUN_00a02d40(uVar5);
  pvVar3 = operator_new(0x60);
  local_4 = 2;
  if (pvVar3 == (void *)0x0) {
    uVar5 = 0;
  }
  else {
    uVar5 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
    uVar5 = FUN_009f8330(uVar5);
  }
  local_4 = 0xffffffff;
  FUN_009f52b0(uVar5);
  ExceptionList = local_c;
  return 1;
}



undefined4 __fastcall FUN_009fa9e0(int param_1)

{
  undefined4 uVar1;
  
  if (*(int **)(param_1 + 8) != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x009fa9ee. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (**(code **)(**(int **)(param_1 + 8) + 0x14))();
    return uVar1;
  }
  return *(undefined4 *)(param_1 + 0x2c);
}



undefined ** FUN_009faa00(void)

{
  return &PTR_u_wxHTML_ModuleImage_0323e27c;
}



void FUN_009faa10(int *param_1)

{
  if ((undefined4 *)*param_1 != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)*param_1)(1);
    *param_1 = 0;
  }
  return;
}



undefined4 __thiscall FUN_009faa30(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  bool bVar5;
  uint uVar6;
  int *piVar7;
  int *piVar8;
  undefined4 uVar9;
  int iVar10;
  uint uVar11;
  float10 fVar12;
  
  iVar10 = *(int *)(param_1_00 + 100);
  if (iVar10 == 0) {
    FUN_009cde80(0);
    FUN_009cde80(1);
    piVar7 = (int *)FUN_009cde80(2);
    fVar12 = (float10)FUN_00a4d440();
    if (fVar12 < (float10)*piVar7) {
LAB_009fad8a:
      return *(undefined4 *)(param_1_00 + 0x2c);
    }
  }
  else if (iVar10 == 1) {
    piVar7 = (int *)FUN_009cde80(0);
    iVar10 = *piVar7;
    piVar7 = (int *)FUN_009cde80(1);
    iVar1 = *piVar7;
    piVar7 = (int *)FUN_009cde80(2);
    iVar2 = *piVar7;
    piVar7 = (int *)FUN_009cde80(3);
    if ((((iVar10 <= param_1) && (param_1 <= iVar2)) && (iVar1 <= param_2)) && (param_2 <= *piVar7))
    goto LAB_009fad8a;
  }
  else if ((iVar10 == 2) && (5 < *(uint *)(param_1_00 + 0x5c))) {
    uVar6 = *(uint *)(param_1_00 + 0x5c) & 0xfffffffe;
    bVar5 = false;
    piVar7 = (int *)FUN_009cde80(uVar6 - 2);
    iVar10 = *piVar7;
    piVar7 = (int *)FUN_009cde80(uVar6 - 1);
    iVar1 = *piVar7;
    uVar11 = 1;
    piVar7 = (int *)FUN_009cde80(1);
    if (param_2 <= iVar1 != param_2 <= *piVar7) {
      piVar7 = (int *)FUN_009cde80(0);
      bVar5 = param_1 <= iVar10;
      if (bVar5 != param_1 <= *piVar7) {
        piVar7 = (int *)FUN_009cde80(0);
        iVar2 = *piVar7;
        piVar7 = (int *)FUN_009cde80(1);
        bVar5 = param_1 <= iVar10 - ((iVar2 - iVar10) * (iVar1 - param_2)) / (*piVar7 - iVar1);
      }
    }
    if (1 < (int)uVar6) {
      while( true ) {
        while( true ) {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x5c) <= uVar11)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          iVar10 = uVar11 * 4;
          uVar11 = uVar11 + 2;
          if (**(int **)(*(int *)(param_1_00 + 0x60) + iVar10) < param_2) break;
          while( true ) {
            if ((int)uVar6 <= (int)uVar11) goto LAB_009fabb6;
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x5c) <= uVar11))
            {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            if (**(int **)(*(int *)(param_1_00 + 0x60) + uVar11 * 4) < param_2) break;
            uVar11 = uVar11 + 2;
          }
          if ((int)uVar6 <= (int)uVar11) goto LAB_009fabb6;
          iVar10 = uVar11 - 3;
          piVar7 = (int *)FUN_009cde80(iVar10);
          iVar1 = *piVar7;
          piVar7 = (int *)FUN_009cde80(uVar11 - 1);
          if (param_1 <= iVar1 != param_1 <= *piVar7) goto LAB_009facd0;
          piVar7 = (int *)FUN_009cde80(iVar10);
          bVar5 = (bool)(bVar5 ^ param_1 <= *piVar7);
        }
        while( true ) {
          if ((int)uVar6 <= (int)uVar11) goto LAB_009fabb6;
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x5c) <= uVar11)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          if (param_2 <= **(int **)(*(int *)(param_1_00 + 0x60) + uVar11 * 4)) break;
          uVar11 = uVar11 + 2;
        }
        if ((int)uVar6 <= (int)uVar11) break;
        iVar10 = uVar11 - 3;
        piVar7 = (int *)FUN_009cde80(iVar10);
        iVar1 = *piVar7;
        piVar7 = (int *)FUN_009cde80(uVar11 - 1);
        if (param_1 <= iVar1 == param_1 <= *piVar7) {
          piVar7 = (int *)FUN_009cde80(iVar10);
          bVar5 = (bool)(bVar5 ^ param_1 <= *piVar7);
        }
        else {
LAB_009facd0:
          piVar7 = (int *)FUN_009cde80(iVar10);
          piVar8 = (int *)FUN_009cde80(uVar11 - 1);
          iVar10 = *piVar8;
          iVar1 = *piVar7;
          piVar7 = (int *)FUN_009cde80(uVar11 - 2);
          iVar2 = *piVar7;
          piVar7 = (int *)FUN_009cde80(uVar11 - 2);
          piVar8 = (int *)FUN_009cde80(uVar11);
          iVar3 = *piVar8;
          iVar4 = *piVar7;
          piVar7 = (int *)FUN_009cde80(uVar11 - 3);
          bVar5 = (bool)(bVar5 ^ param_1 <=
                                 *piVar7 - ((iVar2 - param_2) * (iVar10 - iVar1)) / (iVar3 - iVar4))
          ;
        }
      }
    }
LAB_009fabb6:
    if (bVar5) {
      return *(undefined4 *)(param_1_00 + 0x2c);
    }
  }
  if (*(int **)(param_1_00 + 8) != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x009fae06. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar9 = (**(code **)(**(int **)(param_1_00 + 8) + 0x14))();
    return uVar9;
  }
  return 0;
}



undefined4 * __thiscall FUN_009fae20(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00454099();
  param_1_00[0x11] = param_1;
  *param_1_00 = wxGIFTimer::vftable;
  return param_1_00;
}



undefined4 __thiscall FUN_009fae40(undefined4 param_1_00,byte param_1)

{
  FUN_0086bb60();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_009fae60(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  
  if ((*(byte *)(param_1_00 + 0x68) & 1) == 0) {
    uVar3 = FUN_00a49750();
    *(undefined4 *)(param_1_00 + 0x10) = uVar3;
LAB_009faecc:
    iVar2 = FUN_00a49750();
  }
  else {
    iVar2 = (*(int *)(param_1_00 + 0x60) * param_1) / 100;
    *(int *)(param_1_00 + 0x10) = iVar2;
    if (((*(byte *)(param_1_00 + 0x68) & 2) != 0) ||
       (iVar1 = *(int *)(param_1_00 + 0x58), iVar1 == 0)) goto LAB_009faecc;
    iVar4 = *(int *)(iVar1 + 4);
    if (iVar4 != 0) {
      iVar4 = *(int *)(iVar4 + 0xc);
    }
    if (*(int *)(iVar1 + 4) == 0) {
      iVar2 = (iVar2 * iVar4) / 0;
    }
    else {
      iVar2 = (iVar2 * iVar4) / *(int *)(*(int *)(iVar1 + 4) + 8);
    }
  }
  *(int *)(param_1_00 + 0x14) = iVar2;
  if (*(int *)(param_1_00 + 0x5c) == 1) {
    iVar2 = *(int *)(param_1_00 + 0x14) / 2;
  }
  else {
    if (*(int *)(param_1_00 + 0x5c) != 4) {
      *(undefined4 *)(param_1_00 + 0x18) = 0;
      goto LAB_009faf03;
    }
    iVar2 = *(int *)(param_1_00 + 0x14);
  }
  *(int *)(param_1_00 + 0x18) = iVar2;
LAB_009faf03:
  FUN_009f4f70(param_1);
  *(undefined4 *)(param_1_00 + 0x7c) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x78) = 0xffffffff;
  return;
}



void __thiscall FUN_009faf20(int param_1_00,int param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 unaff_EBX;
  undefined4 uStack_74;
  undefined8 uStack_70;
  int iStack_68;
  double dStack_60;
  double dStack_58;
  double dStack_50;
  undefined auStack_48 [68];
  
  if ((*(byte *)(param_1_00 + 0x68) & 4) != 0) {
    uVar3 = FUN_008f8a00(9);
    (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar3);
    uVar3 = FUN_008f8330(0x1a);
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar3);
    (**(code **)(**(int **)(param_1 + 8) + 0x150))
              (*(int *)(param_1_00 + 0x1c) + param_2,*(int *)(param_1_00 + 0x20) + param_3,
               *(undefined4 *)(param_1_00 + 0x10),*(undefined4 *)(param_1_00 + 0x14));
  }
  iVar1 = *(int *)(param_1_00 + 0x58);
  if (iVar1 != 0) {
    iVar4 = *(int *)(iVar1 + 4);
    dStack_58 = 1.0;
    dStack_60 = 1.0;
    if (iVar4 != 0) {
      iVar4 = *(int *)(iVar4 + 8);
    }
    if (*(int *)(param_1_00 + 0x10) != iVar4) {
      if (*(int *)(iVar1 + 4) == 0) {
        iStack_68 = 0;
      }
      else {
        iStack_68 = *(int *)(*(int *)(iVar1 + 4) + 8);
      }
      dStack_58 = (double)*(int *)(param_1_00 + 0x10) / (double)iStack_68;
    }
    iVar4 = *(int *)(iVar1 + 4);
    if (iVar4 != 0) {
      iVar4 = *(int *)(iVar4 + 0xc);
    }
    iVar2 = *(int *)(param_1_00 + 0x14);
    if (iVar2 != iVar4) {
      if (*(int *)(iVar1 + 4) == 0) {
        iStack_68 = 0;
      }
      else {
        iStack_68 = *(int *)(*(int *)(iVar1 + 4) + 0xc);
      }
      dStack_60 = (double)iVar2 / (double)iStack_68;
    }
    (**(code **)(**(int **)(param_1 + 8) + 0xf0))(auStack_48,&dStack_50);
    (**(code **)(**(int **)(param_1 + 8) + 0xec))
              (dStack_50 * dStack_60,dStack_58 * (double)CONCAT44(iVar2,iStack_68));
    iVar1 = **(int **)(param_1 + 8);
    uVar3 = FUN_00a49750(1);
    uVar3 = FUN_00a49750(uVar3);
    (**(code **)(iVar1 + 0x164))(*(undefined4 *)(param_1_00 + 0x58),uVar3);
    (**(code **)(**(int **)(param_1 + 8) + 0xec))(uStack_70,CONCAT44(uStack_74,unaff_EBX));
  }
  return;
}



void FUN_009fb0d0(int *param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_IMG::vftable;
  }
                    // WARNING: Could not recover jumptable at 0x009fb0fd. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x24))();
  return;
}



void __thiscall FUN_009fb100(int param_1_00,undefined4 *param_1,uint param_2)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  uint uVar4;
  
  if (param_2 != 0) {
    puVar2 = (undefined4 *)operator_new(4);
    if (puVar2 == (undefined4 *)0x0) {
      puVar2 = (undefined4 *)0x0;
    }
    else {
      *puVar2 = *param_1;
    }
    iVar1 = *(int *)(param_1_00 + 4);
    if (puVar2 != (undefined4 *)0x0) {
      FUN_0086a0a0(puVar2,iVar1 * 4 >> 2,param_2);
    }
    uVar4 = 1;
    if (1 < param_2) {
      iVar3 = iVar1 * 4;
      do {
        iVar3 = iVar3 + 4;
        puVar2 = (undefined4 *)operator_new(4);
        if (puVar2 == (undefined4 *)0x0) {
          puVar2 = (undefined4 *)0x0;
        }
        else {
          *puVar2 = *param_1;
        }
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar4 + iVar1))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 **)(iVar3 + *(int *)(param_1_00 + 8)) = puVar2;
        uVar4 = uVar4 + 1;
      } while (uVar4 < param_2);
    }
  }
  return;
}



int __thiscall FUN_009fb1d0(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  
  if ((param_1 == 2) && (*(int *)(param_1_00 + 0x6c) == *(int *)(param_2 + 0x14))) {
    iVar1 = FUN_00850760(param_2);
    if (iVar1 == 0) {
      return param_1_00;
    }
  }
  iVar1 = FUN_009f4f80(param_1,param_2);
  return iVar1;
}



void __thiscall FUN_009fb220(int param_1_00,undefined4 param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  void *pvVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc57ab;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = FUN_008ff820(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  if (cVar1 != '\0') {
    if (*(int **)(param_1_00 + 0x58) != (int *)0x0) {
      (**(code **)(**(int **)(param_1_00 + 0x58) + 4))(1);
    }
    uVar2 = FUN_00900100();
    uVar3 = FUN_00900150();
    if (*(int *)(param_1_00 + 0x60) == -1) {
      *(undefined4 *)(param_1_00 + 0x60) = uVar2;
    }
    if (*(int *)(param_1_00 + 100) == -1) {
      *(undefined4 *)(param_1_00 + 100) = uVar3;
    }
    pvVar4 = operator_new(8);
    local_4 = 0;
    if (pvVar4 == (void *)0x0) {
      uVar2 = 0;
    }
    else {
      uVar2 = FUN_00414f38(param_1,0xffffffff);
    }
    *(undefined4 *)(param_1_00 + 0x58) = uVar2;
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_009fb2d0(int param_1)

{
  int iVar1;
  uint uVar2;
  char cVar3;
  undefined uVar4;
  int *piVar5;
  undefined4 *puVar6;
  int *piVar7;
  int iVar8;
  undefined *puStack_74;
  uint *puStack_70;
  int iStack_6c;
  undefined **ppuStack_68;
  uint uStack_64;
  int *piStack_4c;
  undefined4 uStack_48;
  undefined **local_44;
  undefined4 local_40;
  uint auStack_3c [2];
  undefined auStack_34 [4];
  void *pvStack_30;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  int *piStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bebd48;
  local_c = ExceptionList;
  uStack_64 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  local_40 = 0;
  local_44 = wxImage::vftable;
  *(int *)(param_1 + 0x80) = *(int *)(param_1 + 0x80) + 1;
  local_4 = 0;
  if (*(int *)(param_1 + 0x80) == *(int *)(*(int *)(param_1 + 0x70) + 0x10)) {
    *(undefined4 *)(param_1 + 0x80) = 0;
  }
  if (*(int *)(param_1 + 0x78) == -1) {
    *(undefined4 *)(param_1 + 0x7c) = 0;
    *(undefined4 *)(param_1 + 0x78) = 0;
    iVar8 = param_1;
    do {
      *(int *)(param_1 + 0x78) = *(int *)(param_1 + 0x78) + *(int *)(iVar8 + 0x1c);
      *(int *)(param_1 + 0x7c) = *(int *)(param_1 + 0x7c) + *(int *)(iVar8 + 0x20);
      iVar8 = *(int *)(iVar8 + 0xc);
    } while (iVar8 != 0);
  }
  ppuStack_68 = (undefined **)0x9fb350;
  piVar5 = (int *)(**(code **)(**(int **)(param_1 + 0x6c) + 0x14))();
  piStack_4c = *(int **)(param_1 + 0x78);
  uStack_48 = *(undefined4 *)(param_1 + 0x7c);
  ppuStack_68 = (undefined **)&piStack_4c;
  puStack_70 = auStack_3c;
  puStack_74 = (undefined *)0x9fb375;
  iStack_6c = param_1;
  (**(code **)(**(int **)(param_1 + 0x6c) + 0x10))();
  uStack_20 = *(undefined4 *)(param_1 + 0x10);
  uStack_1c = *(undefined4 *)(param_1 + 0x14);
  uStack_28 = uStack_48;
  uStack_24 = local_44;
  puStack_74 = &stack0xffffffa8;
  (**(code **)(*piVar5 + 0x27c))(&stack0xffffffa4);
  uVar2 = uStack_64;
  puVar6 = (undefined4 *)(**(code **)(*piVar5 + 0x78))(&uStack_48);
  local_44 = (undefined **)*puVar6;
  local_40 = puVar6[1];
  auStack_3c[0] = uVar2;
  cVar3 = FUN_008f7940(auStack_34);
  if (cVar3 == '\0') goto LAB_009fb4fa;
  cVar3 = (**(code **)(**(int **)(param_1 + 0x70) + 0x10))
                    (*(undefined4 *)(param_1 + 0x80),&stack0xffffffa4);
  if (cVar3 == '\0') goto LAB_009fb4fa;
  iVar8 = *(int *)(param_1 + 0x14);
  iVar1 = *(int *)(param_1 + 0x10);
  piVar7 = (int *)(**(code **)(**(int **)(param_1 + 0x70) + 0x14))
                            (&piStack_4c,*(undefined4 *)(param_1 + 0x80));
  if ((*piVar7 == iVar1) && (piVar7[1] == iVar8)) {
    piVar7 = (int *)(**(code **)(**(int **)(param_1 + 0x70) + 0x18))
                              (&stack0xffffffac,*(undefined4 *)(param_1 + 0x80));
    if ((*piVar7 != 0) || (piVar7[1] != 0)) goto LAB_009fb45c;
    FUN_009fb220(&uStack_64);
  }
  else {
LAB_009fb45c:
    FUN_00414f38(&uStack_64,0xffffffff);
    uStack_24._0_1_ = 1;
    FUN_0094bd80();
    uStack_24._0_1_ = 2;
    FUN_0094c840(*(undefined4 *)(param_1 + 0x58));
    puVar6 = (undefined4 *)
             (**(code **)(**(int **)(param_1 + 0x70) + 0x18))
                       (&stack0xffffffac,*(undefined4 *)(param_1 + 0x80));
    (**(code **)(*piStack_4c + 0x164))(&puStack_74,*puVar6,puVar6[1],1);
    uStack_24._0_1_ = 1;
    FUN_00457221();
    uStack_24 = (undefined **)((uint)uStack_24._1_3_ << 8);
    FUN_008f7630();
  }
  iVar8 = *piVar5;
  uVar4 = FUN_008ffb60(auStack_3c);
  (**(code **)(iVar8 + 0x15c))(uVar4);
LAB_009fb4fa:
  iVar8 = (**(code **)(**(int **)(param_1 + 0x70) + 0x20))(*(undefined4 *)(param_1 + 0x80));
  if (iVar8 == 0) {
    iVar8 = 1;
  }
  (**(code **)(*piStack_18 + 0x50))(iVar8,1);
  uStack_28 = 0xffffffff;
  ppuStack_68 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_30;
  return;
}



undefined4 * FUN_009fb560(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHTML_ModuleImage::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __fastcall FUN_009fb5c0(undefined4 param_1)

{
  FUN_009fb2d0(param_1);
  return;
}



void __fastcall FUN_009fb5d0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bebd86;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxHtmlImageCell::vftable;
  local_4 = 1;
  if ((int *)param_1[0x16] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x16] + 4))(1,uVar1);
  }
  if ((int *)param_1[0x1d] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x1d] + 4))(1);
  }
  if ((undefined4 *)param_1[0x1c] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x1c])(1);
  }
  _free((void *)param_1[0x2c]);
  if (7 < (uint)param_1[0x2b]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x26]);
  }
  param_1[0x2b] = 7;
  param_1[0x2a] = 0;
  *(undefined2 *)(param_1 + 0x26) = 0;
  local_4 = 0xffffffff;
  FUN_009f6950();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009fb6a0(undefined4 param_1_00,byte param_1)

{
  FUN_009fb5d0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_009fb6c0(int param_1)

{
  int *piVar1;
  int *piVar2;
  int *piVar3;
  int iVar4;
  undefined4 uVar5;
  
  if (*(int *)(param_1 + 0xa8) == 0) {
    return *(undefined4 *)(param_1 + 0x2c);
  }
  if (*(int *)(param_1 + 0x90) == 0) {
    piVar3 = *(int **)(param_1 + 0xc);
    piVar2 = *(int **)(param_1 + 0xc);
    while (piVar1 = piVar3, piVar1 != (int *)0x0) {
      piVar2 = piVar1;
      piVar3 = (int *)piVar1[3];
    }
    iVar4 = (**(code **)(*piVar2 + 0x30))(2,param_1 + 0x94);
    if (iVar4 == 0) {
      FUN_00432156();
      return *(undefined4 *)(param_1 + 0x2c);
    }
    *(int *)(param_1 + 0x90) = iVar4;
  }
                    // WARNING: Could not recover jumptable at 0x009fb725. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar5 = (**(code **)(**(int **)(param_1 + 0x90) + 0x14))();
  return uVar5;
}



undefined4 * __thiscall FUN_009fb730(undefined4 *param_1_00,undefined4 *param_1,undefined4 *param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bebdce;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  *param_1_00 = wxHtmlLinkInfo::vftable;
  param_1_00[8] = 7;
  param_1_00[7] = 0;
  *(undefined2 *)(param_1_00 + 3) = 0;
  param_1_00[9] = 0;
  param_1_00[0x11] = 7;
  param_1_00[0x10] = 0;
  *(undefined2 *)(param_1_00 + 0xc) = 0;
  param_1_00[0x12] = 0;
  local_4 = 2;
  if (param_1_00 + 2 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  if (param_1_00 + 0xb != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  param_1_00[0x14] = 0;
  param_1_00[0x15] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_009fb7e0(undefined4 *param_1_00,undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bebe03;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009f6890(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1_00 = wxHtmlImageMapCell::vftable;
  param_1_00[0x1c] = 7;
  param_1_00[0x1b] = 0;
  *(undefined2 *)(param_1_00 + 0x17) = 0;
  param_1_00[0x1d] = 0;
  local_4 = 1;
  if (param_1_00 + 0x16 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_009fb860(undefined4 *param_1_00,undefined4 param_1,int param_2,undefined4 param_3,byte param_4,
            undefined4 param_5,byte param_6,undefined **param_7,int param_9_00,undefined4 param_8,
            undefined4 *param_9)

{
  int **ppiVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  undefined uVar5;
  char cVar6;
  void *pvVar7;
  int *piVar8;
  int iVar9;
  undefined4 uVar10;
  int iVar11;
  undefined local_54 [36];
  undefined local_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bebecb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar3 = false;
  bVar2 = false;
  FUN_009f6890(DAT_0323f878 ^ (uint)&stack0xffffff94);
  *param_1_00 = wxHtmlImageCell::vftable;
  param_1_00[0x2b] = 7;
  param_1_00[0x2a] = 0;
  *(undefined2 *)(param_1_00 + 0x26) = 0;
  param_1_00[0x2c] = 0;
  *(ulonglong *)(param_1_00 + 0x22) = CONCAT44(param_9_00,param_7);
  param_1_00[0x1b] = param_1;
  param_1_00[0x18] = param_3;
  param_1_00[0x19] = param_5;
  param_1_00[0x17] = param_8;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  param_1_00[0x16] = 0;
  *(byte *)(param_1_00 + 0x1a) =
       (param_6 & 1) * '\x02' | *(byte *)(param_1_00 + 0x1a) & 0xf8 | param_4 & 1;
  param_1_00[0x24] = 0;
  if (param_1_00 + 0x25 != param_9) {
    FID_conflict_assign(param_9,0,0xffffffff);
  }
  param_1_00[0x1f] = 0xffffffff;
  param_1_00[0x1e] = 0xffffffff;
  iVar11 = param_1_00[0x18];
  ppiVar1 = (int **)(param_1_00 + 0x1c);
  *(undefined *)(param_1_00 + 0xc) = 0;
  *ppiVar1 = (int *)0x0;
  param_1_00[0x1d] = 0;
  param_1_00[0x20] = 0;
  if (iVar11 == 0) {
    ExceptionList = local_c;
    return param_1_00;
  }
  iVar9 = param_1_00[0x19];
  if (iVar9 == 0) {
    ExceptionList = local_c;
    return param_1_00;
  }
  if (param_2 == 0) {
    if ((iVar11 == -1) && (iVar9 == -1)) {
      param_1_00[0x18] = 0x1d;
      param_1_00[0x19] = 0x1f;
    }
    else {
      *(byte *)(param_1_00 + 0x1a) = *(byte *)(param_1_00 + 0x1a) | 4;
      if (iVar11 == -1) {
        param_1_00[0x18] = 0x1f;
      }
      if (iVar9 == -1) {
        param_1_00[0x19] = 0x21;
      }
    }
    pvVar7 = operator_new(8);
    local_4._0_1_ = 8;
    uVar5 = (undefined)local_4;
    local_4._0_1_ = 8;
    if (pvVar7 == (void *)0x0) {
      uVar10 = 0;
      local_4._0_1_ = uVar5;
    }
    else {
      FUN_0043c211("wxART_OTHER_C");
      local_4 = CONCAT31(local_4._1_3_,9);
      FUN_0043c211("wxART_MISSING_IMAGE");
      local_4._0_1_ = 10;
      local_4._1_3_ = 0;
      uVar10 = FUN_00971c50(pvVar7,local_30,local_54,&DAT_03238d04);
    }
    param_1_00[0x16] = uVar10;
    if (pvVar7 == (void *)0x0) {
      ExceptionList = local_c;
      return param_1_00;
    }
    FUN_0040159c();
    FUN_0040159c();
    ExceptionList = local_c;
    return param_1_00;
  }
  iVar11 = *(int *)(param_2 + 8);
  if (iVar11 == 0) {
    ExceptionList = local_c;
    return param_1_00;
  }
  if (param_1_00[0x1b] == 0) {
LAB_009fb9ea:
    bVar4 = false;
  }
  else {
    FUN_004325b6(L"*.gif");
    bVar2 = false;
    local_4._0_1_ = 2;
    cVar6 = FUN_00852fc0(local_30);
    if (cVar6 == '\0') {
      FUN_004325b6(L"*.GIF");
      bVar3 = true;
      bVar2 = true;
      local_4._0_1_ = 3;
      local_4._1_3_ = 0;
      cVar6 = FUN_00852fc0(local_54);
      if (cVar6 == '\0') goto LAB_009fb9ea;
    }
    bVar3 = true;
    bVar4 = true;
  }
  if (bVar2) {
    FUN_0040159c();
  }
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  if (bVar3) {
    FUN_0040159c();
  }
  if (bVar4) {
    pvVar7 = operator_new(0x144);
    local_4._0_1_ = 4;
    if (pvVar7 == (void *)0x0) {
      piVar8 = (int *)0x0;
    }
    else {
      piVar8 = (int *)FUN_0098c430();
    }
    local_4._0_1_ = 1;
    *ppiVar1 = piVar8;
    iVar9 = FUN_0098cf00(iVar11);
    if (iVar9 == 0) {
      param_7 = wxImage::vftable;
      local_4 = CONCAT31(local_4._1_3_,5);
      param_9_00 = iVar9;
      cVar6 = (**(code **)(**ppiVar1 + 0x10))(0,&param_7);
      if (cVar6 != '\0') {
        FUN_009fb220(&param_7);
      }
      if ((uint)(*ppiVar1)[4] < 2) {
        FUN_009faa10(ppiVar1);
      }
      else {
        pvVar7 = operator_new(0x48);
        local_4._0_1_ = 6;
        if (pvVar7 == (void *)0x0) {
          uVar10 = 0;
        }
        else {
          uVar10 = FUN_009fae20(param_1_00);
        }
        param_1_00[0x1d] = uVar10;
        local_4 = CONCAT31(local_4._1_3_,5);
        iVar11 = (**(code **)(**ppiVar1 + 0x20))(0);
        if (iVar11 == 0) {
          iVar11 = 1;
        }
        (**(code **)(*(int *)param_1_00[0x1d] + 0x50))(iVar11,1);
      }
      local_4 = CONCAT31(local_4._1_3_,1);
      param_7 = wxObject::vftable;
      FUN_0083e850();
      ExceptionList = local_c;
      return param_1_00;
    }
    FUN_009faa10(ppiVar1);
  }
  FUN_004706ad(iVar11,0x32,0xffffffff);
  local_4 = CONCAT31(local_4._1_3_,7);
  cVar6 = FUN_008ff820();
  if (cVar6 != '\0') {
    FUN_009fb220(&param_7);
  }
  local_4 = CONCAT31(local_4._1_3_,1);
  param_7 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_009fbc80(undefined4 param_1)

{
  FUN_004325b6(L"IMG,MAP,AREA");
  return param_1;
}



void __thiscall FUN_009fbcb0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined *puVar3;
  undefined4 ****ppppuVar4;
  undefined4 local_b4 [2];
  undefined4 ****local_ac [4];
  undefined4 local_9c;
  uint local_98;
  void *local_94;
  int local_8c [2];
  char local_84;
  undefined4 *local_80;
  undefined local_7c [4];
  undefined4 local_78;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined4 local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bebf4f;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_b4;
  ExceptionList = &local_c;
  local_80 = param_1_00;
  FUN_009f6890(DAT_0323f878 ^ (uint)&stack0xffffff3c);
  local_4 = 0;
  *param_1_00 = wxHtmlImageMapAreaCell::vftable;
  FUN_0086a600();
  local_4._0_1_ = 1;
  local_40 = 7;
  local_44 = 0;
  local_54 = (uint)local_54._2_2_ << 0x10;
  FID_conflict_assign(param_2,0,0xffffffff);
  local_3c = (void *)0x0;
  local_1c = 7;
  local_20 = 0;
  local_30 = (uint)local_30._2_2_ << 0x10;
  local_18 = (void *)0x0;
  local_4._0_1_ = 3;
  param_1_00[0x19] = param_1;
  do {
    iVar1 = FUN_00850910(0x2c,0);
    if (iVar1 == -1) {
      uVar2 = FUN_00432231(local_8c);
      local_4._0_1_ = 8;
      FUN_00840a70(uVar2);
      local_4 = CONCAT31(local_4._1_3_,9);
      ppppuVar4 = local_ac[0];
      if (local_98 < 8) {
        ppppuVar4 = local_ac;
      }
      local_b4[0] = FUN_00a4b994(ppppuVar4);
      local_b4[0] = FUN_00a49750();
      FUN_009fb100(local_b4,1);
      _free(local_94);
      if (7 < local_98) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_ac[0]);
      }
      local_98 = 7;
      local_9c = 0;
      local_ac[0] = (undefined4 ****)((uint)local_ac[0] & 0xffff0000);
      if ((local_84 != '\0') && (local_8c[0] != 0)) {
        _free(*(void **)(local_8c[0] + 0x1c));
        if (*(uint *)(local_8c[0] + 0x18) < 8) {
          *(undefined4 *)(local_8c[0] + 0x18) = 7;
          *(undefined4 *)(local_8c[0] + 0x14) = 0;
          *(undefined2 *)(local_8c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_8c[0]);
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(local_8c[0] + 4));
      }
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
      local_1c = 7;
      local_20 = 0;
      local_30 = local_30 & 0xffff0000;
      _free(local_3c);
      if (local_40 < 8) {
        ExceptionList = local_c;
        ___security_check_cookie_4();
        return;
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    FUN_008527e0(local_7c,iVar1);
    uVar2 = FUN_00432231(local_8c);
    local_4._0_1_ = 5;
    FUN_00840a70(uVar2);
    local_4._0_1_ = 6;
    ppppuVar4 = local_ac[0];
    if (local_98 < 8) {
      ppppuVar4 = local_ac;
    }
    local_b4[0] = FUN_00a4b994(ppppuVar4);
    local_b4[0] = FUN_00a49750();
    FUN_009fb100(local_b4,1);
    _free(local_94);
    if (7 < local_98) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_ac[0]);
    }
    local_98 = 7;
    local_9c = 0;
    local_ac[0] = (undefined4 ****)((uint)local_ac[0] & 0xffff0000);
    if ((local_84 != '\0') && (local_8c[0] != 0)) {
      _free(*(void **)(local_8c[0] + 0x1c));
      if (*(uint *)(local_8c[0] + 0x18) < 8) {
        *(undefined4 *)(local_8c[0] + 0x18) = 7;
        *(undefined4 *)(local_8c[0] + 0x14) = 0;
        *(undefined2 *)(local_8c[0] + 4) = 0;
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_8c[0]);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(local_8c[0] + 4));
    }
    local_4._0_1_ = 3;
    _free(local_60);
    if (7 < local_64) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_78);
    }
    puVar3 = (undefined *)FUN_00852560(local_7c,iVar1 + 1,0xffffffff);
    local_4._0_1_ = 7;
    if (local_58 != puVar3) {
      FID_conflict_assign(puVar3,0,0xffffffff);
    }
    local_4._0_1_ = 3;
    _free(local_60);
  } while (local_64 < 8);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_78);
}



void FUN_009fc0a0(void)

{
  return;
}



void FUN_009fc0b0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beb998;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00a15c90(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  FUN_009f6950();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009fc110(undefined4 param_1_00,byte param_1)

{
  FUN_009fc0b0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_009fc130(int param_1_00,int param_1)

{
  bool bVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  undefined *puVar5;
  void **ppvVar6;
  int iVar7;
  undefined4 uVar8;
  int local_1b8;
  int local_1b4;
  void *pvStack_1b0;
  void *pvStack_1ac;
  undefined local_1a8 [4];
  uint local_1a4;
  undefined4 local_194;
  uint local_190;
  void *local_18c;
  undefined4 local_184;
  undefined4 uStack_180;
  undefined4 local_17c;
  undefined4 local_178;
  uint local_174;
  undefined auStack_c4 [4];
  uint uStack_c0;
  undefined4 uStack_b0;
  uint uStack_ac;
  void *pvStack_a8;
  uint local_88;
  void *local_84;
  undefined auStack_7c [4];
  uint uStack_78;
  undefined4 uStack_68;
  uint uStack_64;
  void *pvStack_60;
  undefined local_58 [4];
  uint uStack_54;
  int iStack_44;
  uint uStack_40;
  void *pvStack_3c;
  undefined auStack_34 [4];
  uint uStack_30;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bec18e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_1b8;
  ExceptionList = &local_c;
  local_174 = 0;
  local_1b8 = param_1_00;
  FUN_008560c0();
  local_4 = 0;
  iVar3 = FUN_008507a0();
  local_4 = 0xffffffff;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (iVar3 == 0) {
    FUN_004325b6();
    local_4 = 1;
    cVar2 = FUN_00a07740();
    local_4 = 0xffffffff;
    _free(local_18c);
    if (7 < local_190) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (cVar2 != '\0') {
      local_1b4 = -1;
      local_178 = 0xffffffff;
      local_184 = local_184 & 0xffffff00;
      local_17c = local_17c & 0xffffff00;
      FUN_004325b6();
      local_4 = 2;
      FUN_00a09860();
      local_4._0_1_ = 4;
      _free(local_18c);
      if (7 < local_190) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_1a4 = local_1a4 & 0xffff0000;
      local_190 = 7;
      local_194 = 0;
      FUN_004325b6();
      local_4._0_1_ = 5;
      piVar4 = (int *)(**(code **)(**(int **)(param_1_00 + 0xc) + 0x10))(1);
      FUN_004325b6();
      local_4._0_1_ = 6;
      cVar2 = FUN_00a07740();
      local_4._0_1_ = 5;
      _free(pvStack_a8);
      if (7 < uStack_ac) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if (cVar2 != '\0') {
        FUN_004325b6();
        local_4._0_1_ = 7;
        FUN_00a09860();
        FUN_0040159c();
        FUN_00432231();
        local_4._0_1_ = 10;
        FUN_008d4170();
        local_4._0_1_ = 9;
        FUN_00432214();
        FUN_004325b6();
        local_4._0_1_ = 0xb;
        cVar2 = FUN_00852070(local_1a8,0);
        FUN_0040159c();
        if (cVar2 != '\0') {
          if (local_1b4 < 0) {
            local_1b4 = 0;
          }
          else if (100 < local_1b4) {
            local_1b4 = 100;
          }
          local_184 = CONCAT31(local_184._1_3_,1);
        }
        local_4._0_1_ = 5;
        FUN_0040159c();
      }
      FUN_004325b6();
      local_4._0_1_ = 0xc;
      cVar2 = FUN_00a07740();
      local_4._0_1_ = 5;
      _free(pvStack_a8);
      if (7 < uStack_ac) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if (cVar2 != '\0') {
        FUN_004325b6();
        local_4._0_1_ = 0xd;
        FUN_00a09a60(auStack_c4,&local_178);
        local_4._0_1_ = 5;
        FUN_0040159c();
        local_17c = CONCAT31(local_17c._1_3_,1);
      }
      uVar8 = 8;
      FUN_004325b6();
      local_4._0_1_ = 0xe;
      cVar2 = FUN_00a07740();
      local_4._0_1_ = 5;
      _free(pvStack_a8);
      if (7 < uStack_ac) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if (cVar2 != '\0') {
        FUN_004325b6();
        local_4._0_1_ = 0xf;
        FUN_00a09860();
        local_4 = CONCAT31(local_4._1_3_,0x11);
        FUN_0040159c();
        FUN_00850fc0();
        iVar3 = FUN_008507a0();
        if (iVar3 == 0) {
          uVar8 = 4;
        }
        else {
          iVar3 = FUN_008507a0();
          if ((iVar3 == 0) || (iVar3 = FUN_008507a0(), iVar3 == 0)) {
            uVar8 = 1;
          }
        }
        local_4._0_1_ = 5;
        FUN_0040159c();
      }
      FUN_004325b6();
      local_4._0_1_ = 0x12;
      cVar2 = FUN_00a07740();
      local_4._0_1_ = 5;
      _free(pvStack_a8);
      if (7 < uStack_ac) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      if (cVar2 != '\0') {
        FUN_004325b6();
        local_4._0_1_ = 0x13;
        puVar5 = (undefined *)FUN_00a09860();
        local_4._0_1_ = 0x14;
        if (local_58 != puVar5) {
          FID_conflict_assign();
        }
        FUN_0040159c();
        local_4._0_1_ = 5;
        FUN_0040159c();
        if (iStack_44 != 0) {
          ppvVar6 = (void **)FUN_0081b376();
          pvStack_1b0 = *ppvVar6;
          pvStack_1ac = ppvVar6[1];
          cVar2 = FUN_0086f990();
          if (cVar2 != '\0') {
            FUN_00852560();
            local_4._0_1_ = 0x15;
            FUN_0043261a();
            local_4._0_1_ = 5;
            FUN_0040159c();
          }
        }
      }
      pvStack_1b0 = operator_new(0xb8);
      local_4._0_1_ = 0x16;
      if (pvStack_1b0 == (void *)0x0) {
        iVar3 = 0;
      }
      else {
        iVar3 = FUN_009fb860(*(undefined4 *)(*(int *)(local_1b8 + 0xc) + 100),piVar4,local_1b4,
                             local_184,local_178,local_17c,
                             *(undefined8 *)(*(int *)(local_1b8 + 0xc) + 0x68),uVar8,local_58);
      }
      local_4._0_1_ = 5;
      FUN_00a02df0();
      FUN_004325b6();
      local_4._0_1_ = 0x17;
      iVar7 = FUN_00a09860();
      local_4._0_1_ = 0x18;
      if (iVar3 + 0x34 != iVar7) {
        FID_conflict_assign();
      }
      _free(pvStack_a8);
      if (7 < uStack_ac) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_ac = 7;
      uStack_b0 = 0;
      uStack_c0 = uStack_c0 & 0xffff0000;
      local_4 = CONCAT31(local_4._1_3_,5);
      _free(pvStack_60);
      if (7 < uStack_64) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      FUN_009f52b0();
      if (piVar4 != (int *)0x0) {
        (**(code **)(*piVar4 + 4))();
      }
      _free(pvStack_3c);
      if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_40 = 7;
      iStack_44 = 0;
      uStack_54 = uStack_54 & 0xffff0000;
      local_4 = 0xffffffff;
      _free(local_84);
      if (7 < local_88) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  FUN_008560c0();
  local_4 = 0x19;
  iVar3 = FUN_008507a0();
  local_4 = 0xffffffff;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (iVar3 == 0) {
    FUN_00a02d30();
    FUN_00a02c90();
    FUN_004325b6();
    local_4 = 0x1a;
    cVar2 = FUN_00a07740();
    local_4 = 0xffffffff;
    _free(local_84);
    if (7 < local_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (cVar2 != '\0') {
      FUN_004325b6();
      local_4 = 0x1b;
      FUN_00a09860();
      local_4._0_1_ = 0x1d;
      _free(local_18c);
      if (7 < local_190) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_190 = 7;
      local_194 = 0;
      local_1a4 = local_1a4 & 0xffff0000;
      pvStack_1b0 = operator_new(0x7c);
      local_4._0_1_ = 0x1e;
      if (pvStack_1b0 != (void *)0x0) {
        FUN_009fb7e0();
      }
      local_4 = CONCAT31(local_4._1_3_,0x1d);
      FUN_009f52b0();
      local_4 = 0xffffffff;
      _free(local_84);
      if (7 < local_88) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    pvStack_1ac = *(void **)(param_1 + 0x34);
    pvStack_1b0 = *(void **)(param_1 + 0x30);
    local_184 = *(uint *)(param_1 + 0x28);
    uStack_180 = *(undefined4 *)(param_1 + 0x2c);
    FUN_00a070f0(&local_184,&pvStack_1b0);
    FUN_00a02d30();
    FUN_00a02c90();
  }
  FUN_008560c0();
  local_4 = 0x1f;
  iVar3 = FUN_008507a0();
  local_4 = 0xffffffff;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (iVar3 != 0) goto LAB_009fd0a5;
  FUN_004325b6();
  local_4 = 0x20;
  cVar2 = FUN_00a07740();
  local_4 = 0xffffffff;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (cVar2 == '\0') goto LAB_009fd0a5;
  FUN_004325b6();
  local_4 = 0x21;
  FUN_00a09860();
  local_4._0_1_ = 0x23;
  _free(local_18c);
  if (7 < local_190) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  local_190 = 7;
  local_194 = 0;
  local_1a4 = local_1a4 & 0xffff0000;
  FUN_004325b6();
  local_4._0_1_ = 0x24;
  FUN_00850fc0();
  iVar3 = 0;
  FUN_004325b6();
  local_4._0_1_ = 0x25;
  cVar2 = FUN_00a07740();
  local_4._0_1_ = 0x24;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (cVar2 != '\0') {
    FUN_004325b6();
    local_4._0_1_ = 0x26;
    puVar5 = (undefined *)FUN_00a09860();
    local_4._0_1_ = 0x27;
    if (auStack_34 != puVar5) {
      FID_conflict_assign();
    }
    FUN_0040159c();
    local_4._0_1_ = 0x24;
    FUN_0040159c();
  }
  iVar7 = FUN_008507a0();
  if (iVar7 == 0) {
    pvStack_1b0 = operator_new(0x6c);
    local_4 = CONCAT31(local_4._1_3_,0x28);
    if (pvStack_1b0 == (void *)0x0) {
LAB_009fce43:
      iVar3 = 0;
    }
    else {
      iVar3 = FUN_009fbcb0(2,auStack_34,*(undefined8 *)(*(int *)(local_1b8 + 0xc) + 0x68));
    }
LAB_009fce45:
    local_4._0_1_ = 0x24;
    if (iVar3 == 0) goto LAB_009fce8b;
    FUN_004325b6();
    local_4 = CONCAT31(local_4._1_3_,0x2b);
    local_174 = 1;
    cVar2 = FUN_00a07740();
    if (cVar2 == '\0') goto LAB_009fce8b;
    bVar1 = true;
  }
  else {
    iVar7 = FUN_008507a0();
    if (iVar7 == 0) {
      pvStack_1b0 = operator_new(0x6c);
      local_4 = CONCAT31(local_4._1_3_,0x29);
      if (pvStack_1b0 == (void *)0x0) goto LAB_009fce43;
      iVar3 = FUN_009fbcb0(0,auStack_34,*(undefined8 *)(*(int *)(local_1b8 + 0xc) + 0x68));
      goto LAB_009fce45;
    }
    iVar7 = FUN_008507a0();
    if (iVar7 == 0) {
      pvStack_1b0 = operator_new(0x6c);
      local_4 = CONCAT31(local_4._1_3_,0x2a);
      if (pvStack_1b0 == (void *)0x0) goto LAB_009fce43;
      iVar3 = FUN_009fbcb0(1,auStack_34,*(undefined8 *)(*(int *)(local_1b8 + 0xc) + 0x68));
      goto LAB_009fce45;
    }
LAB_009fce8b:
    bVar1 = false;
  }
  local_4 = 0x24;
  if ((local_174 & 1) != 0) {
    FUN_0040159c();
  }
  if (bVar1) {
    uStack_64 = 7;
    uStack_68 = 0;
    uStack_78 = uStack_78 & 0xffff0000;
    pvStack_60 = (void *)0x0;
    local_4._0_1_ = 0x2c;
    FUN_004325b6();
    local_4._0_1_ = 0x2d;
    cVar2 = FUN_00a07740();
    local_4._0_1_ = 0x2c;
    FUN_0040159c();
    if (cVar2 != '\0') {
      FUN_004325b6();
      local_4._0_1_ = 0x2e;
      puVar5 = (undefined *)FUN_00a09860();
      local_4._0_1_ = 0x2f;
      if (auStack_7c != puVar5) {
        FID_conflict_assign();
      }
      FUN_0040159c();
      local_4._0_1_ = 0x2c;
      FUN_0040159c();
    }
    FUN_004325b6();
    local_4._0_1_ = 0x30;
    uVar8 = FUN_00a09860();
    local_4._0_1_ = 0x31;
    FUN_009fb730(uVar8,auStack_7c);
    local_4._0_1_ = 0x32;
    FUN_009f6d80();
    local_4._0_1_ = 0x31;
    FUN_008f2ca0();
    FUN_0040159c();
    FUN_0040159c();
    local_4 = CONCAT31(local_4._1_3_,0x24);
    FUN_0040159c();
  }
  if (iVar3 != 0) {
    FUN_009f52b0();
  }
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  uStack_1c = 7;
  uStack_20 = 0;
  uStack_30 = uStack_30 & 0xffff0000;
  _free(pvStack_a8);
  if (7 < uStack_ac) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
LAB_009fd0a5:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_009fd0e0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bec1c8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_009f6a80(param_1);
  local_4 = 0;
  *param_1_00 = wxHtmlListCell::vftable;
  FUN_0095d530(uVar1);
  param_1_00[0x37] = 0;
  param_1_00[0x38] = 0;
  param_1_00[0x39] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_009fd160(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bec1f8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxHtmlListCell::vftable;
  local_4 = 0;
  if ((void *)param_1[0x38] != (void *)0x0) {
    _free((void *)param_1[0x38]);
  }
  FUN_008f7630(uVar1);
  local_4 = 0xffffffff;
  FUN_009f6ba0();
  ExceptionList = local_c;
  return;
}



int FUN_009fd1e0(int *param_1)

{
  int iVar1;
  int iVar2;
  
  if (param_1 == (int *)0x0) {
    return 0;
  }
  iVar1 = (**(code **)(*param_1 + 0x1c))();
  while( true ) {
    if (iVar1 == 0) {
      return param_1[5] - param_1[6];
    }
    iVar2 = FUN_009fd1e0(iVar1);
    if (0 < iVar2) break;
    iVar1 = *(int *)(iVar1 + 8);
  }
  return *(int *)(iVar1 + 0x20) + iVar2;
}



void __thiscall FUN_009fd230(int param_1_00,int param_1)

{
  void *pvVar1;
  size_t _NewSize;
  
  _NewSize = param_1 * 0x10;
  pvVar1 = _realloc(*(void **)(param_1_00 + 0xe0),_NewSize);
  *(void **)(param_1_00 + 0xe0) = pvVar1;
  *(undefined4 *)((_NewSize - 0x10) + (int)pvVar1) = 0;
  *(undefined4 *)(*(int *)(param_1_00 + 0xe0) + -0xc + _NewSize) = 0;
  *(undefined4 *)(*(int *)(param_1_00 + 0xe0) + -8 + _NewSize) = 0;
  *(undefined4 *)(*(int *)(param_1_00 + 0xe0) + -4 + _NewSize) = 0;
  *(int *)(param_1_00 + 0xdc) = param_1;
  return;
}



void __fastcall FUN_009fd290(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  
  iVar3 = 0;
  if (*(int *)(param_1 + 0xdc) != 0) {
    iVar4 = 0;
    *(undefined4 *)(param_1 + 0xd0) = 0;
    *(undefined4 *)(param_1 + 0x10) = 0;
    if (0 < *(int *)(param_1 + 0xdc)) {
      do {
        piVar5 = (int *)(*(int *)(param_1 + 0xe0) + iVar3);
        (**(code **)(**(int **)(*(int *)(param_1 + 0xe0) + iVar3) + 0x24))(1);
        (**(code **)(*(int *)piVar5[1] + 0x24))(1);
        iVar2 = (**(code **)(*(int *)piVar5[1] + 0x10))();
        iVar1 = *(int *)(piVar5[1] + 0x10);
        if (*(int *)(param_1 + 0xe4) < *(int *)(*piVar5 + 0x10)) {
          *(int *)(param_1 + 0xe4) = *(int *)(*piVar5 + 0x10);
        }
        if (*(int *)(param_1 + 0xd0) < iVar2) {
          *(int *)(param_1 + 0xd0) = iVar2;
        }
        if (*(int *)(param_1 + 0x10) < iVar1) {
          *(int *)(param_1 + 0x10) = iVar1;
        }
        iVar4 = iVar4 + 1;
        iVar3 = iVar3 + 0x10;
      } while (iVar4 < *(int *)(param_1 + 0xdc));
    }
    *(int *)(param_1 + 0x10) =
         *(int *)(param_1 + 0x10) + *(int *)(param_1 + 0x58) + *(int *)(param_1 + 0xe4);
    *(int *)(param_1 + 0xd0) =
         *(int *)(param_1 + 0xd0) + *(int *)(param_1 + 0x58) + *(int *)(param_1 + 0xe4);
  }
  return;
}



undefined ** FUN_009fd340(void)

{
  return &PTR_u_wxHTML_ModuleList_0323e340;
}



undefined4 * __thiscall FUN_009fd350(undefined4 *param_1_00,int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bec233;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009f6890(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  local_4 = 0;
  *param_1_00 = wxHtmlListmarkCell::vftable;
  FUN_0095d7e0(param_2,100);
  local_4 = CONCAT31(local_4._1_3_,1);
  uVar1 = (**(code **)(**(int **)(param_1 + 8) + 0x98))();
  param_1_00[4] = uVar1;
  iVar2 = (**(code **)(**(int **)(param_1 + 8) + 0x98))();
  param_1_00[5] = iVar2;
  param_1_00[6] = iVar2 / 3;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_009fd3f0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beb998;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008f7630(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  FUN_009f6950();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_009fd450(undefined4 param_1_00,byte param_1)

{
  FUN_009fd3f0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_009fd470(int param_1_00,int param_1,int param_3)

{
  int iVar1;
  
  (**(code **)(**(int **)(param_1 + 8) + 0x60))(param_1_00 + 0x58);
  iVar1 = *(int *)(param_1_00 + 0x10) / 3;
  (**(code **)(**(int **)(param_1 + 8) + 0x158))
            (*(int *)(param_1_00 + 0x1c) + iVar1 + param_1,
             *(int *)(param_1_00 + 0x14) / 3 + *(int *)(param_1_00 + 0x20) + param_3,iVar1,iVar1);
  return;
}



undefined4 __thiscall FUN_009fd4d0(undefined4 param_1_00,byte param_1)

{
  FUN_009fd160();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_009fd4f0(int *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iStack_8;
  int iStack_4;
  
  FUN_009f4f70(param_1);
  FUN_009fd290();
  iVar1 = (**(code **)(*param_1_00 + 0x10))();
  if (param_1 < iVar1) {
    iVar1 = param_1;
  }
  if (iVar1 < param_1_00[4]) {
    iVar1 = param_1_00[4];
  }
  param_1_00[4] = iVar1;
  param_1 = 0;
  iStack_8 = 0;
  if (0 < param_1_00[0x37]) {
    iVar4 = 0;
    iStack_4 = iVar1 - param_1_00[0x16];
    do {
      (**(code **)(**(int **)(param_1_00[0x38] + iVar4) + 0x24))(param_1_00[0x39]);
      (**(code **)(**(int **)(param_1_00[0x38] + 4 + iVar4) + 0x24))(iStack_8 - param_1_00[0x39]);
      iVar1 = FUN_009fd1e0(*(undefined4 *)(param_1_00[0x38] + iVar4));
      iVar2 = FUN_009fd1e0(*(undefined4 *)(param_1_00[0x38] + 4 + iVar4));
      iVar3 = (iVar2 - iVar1 & (iVar2 - iVar1 < 1) - 1) + iStack_4;
      iStack_4 = (iVar1 - iVar2 & (iVar1 - iVar2 < 1) - 1) + iStack_4;
      (**(code **)(**(int **)(param_1_00[0x38] + iVar4) + 0x20))(param_1_00[0x16],iVar3);
      (**(code **)(**(int **)(param_1_00[0x38] + 4 + iVar4) + 0x20))
                (param_1_00[0x16] + param_1_00[0x39],iStack_4);
      param_1 = *(int *)(*(int *)(param_1_00[0x38] + iVar4) + 0x14) + param_1;
      iStack_4 = *(int *)(*(int *)(param_1_00[0x38] + 4 + iVar4) + 0x14) + iStack_4;
      if (param_1 <= iStack_4) {
        param_1 = iStack_4;
      }
      iStack_8 = iStack_8 + 1;
      iVar4 = iVar4 + 0x10;
      iStack_4 = iVar3;
    } while (iStack_8 < param_1_00[0x37]);
    param_1_00[5] = param_1;
    return;
  }
  param_1_00[5] = 0;
  return;
}



void FUN_009fd660(undefined4 param_1)

{
  FUN_009f5130(0,0x40,1);
  FUN_009f56c0(param_1);
  return;
}



undefined4 __thiscall FUN_009fd680(undefined4 param_1_00,byte param_1)

{
  FUN_009f6ba0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_009fd6a0(int *param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x18);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_OLULLI::vftable;
    puVar1[4] = 0;
    puVar1[5] = 0;
  }
                    // WARNING: Could not recover jumptable at 0x009fd6d3. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x24))();
  return;
}



undefined4 * FUN_009fd6e0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHTML_ModuleList::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 FUN_009fd740(undefined4 param_1)

{
  FUN_004325b6(0xd99344);
  return param_1;
}



void __thiscall FUN_009fd770(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  bool bVar8;
  undefined auStack_88 [3];
  char local_85;
  undefined4 *local_84;
  undefined local_80 [4];
  uint local_7c;
  undefined4 local_6c;
  uint local_68;
  void *local_64;
  void *local_5c;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bec308;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_88;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  bVar8 = false;
  local_84 = (undefined4 *)0x0;
  if (*(int *)(param_1_00 + 0x10) == 0) {
LAB_009fd7e9:
    local_85 = '\0';
  }
  else {
    FUN_008560c0(local_34);
    local_4 = 0;
    bVar8 = true;
    local_84 = (undefined4 *)0x1;
    iVar2 = FUN_008507a0(&DAT_00d99374);
    local_85 = '\x01';
    if (iVar2 != 0) goto LAB_009fd7e9;
  }
  local_4 = 0xffffffff;
  if ((bVar8) && (_free(local_18), 7 < local_1c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30,uVar1);
  }
  if (local_85 != '\0') {
    local_84 = (undefined4 *)operator_new(0xd4);
    local_4 = 1;
    if (local_84 == (undefined4 *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = FUN_009f6a80(*(undefined4 *)(param_1_00 + 0x10));
    }
    local_4 = 0xffffffff;
    iVar4 = FUN_00a02d20(uVar3);
    *(undefined4 *)(iVar4 + 0xcc) = 0xffffffff;
    *(undefined4 *)(iVar4 + 0x7c) = 4;
    *(int *)(iVar4 + 0x80) = *(int *)(*(int *)(param_1_00 + 0xc) + 0x11c) * 2;
    *(undefined4 *)(iVar4 + 0xcc) = 0xffffffff;
    *(undefined4 *)(iVar4 + 0x84) = 1;
    iVar2 = *(int *)(param_1_00 + 0x14);
    *(undefined4 *)(iVar4 + 0xcc) = 0xffffffff;
    if (iVar2 == 0) {
      *(undefined4 *)(iVar4 + 0x78) = 1;
      local_84 = (undefined4 *)operator_new(0x60);
      local_4 = 2;
      if (local_84 == (undefined4 *)0x0) {
        local_4 = 0xffffffff;
        FUN_009f52b0(0);
      }
      else {
        uVar3 = FUN_009fd350(*(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x78),
                             *(int *)(param_1_00 + 0xc) + 0xa8);
        local_4 = 0xffffffff;
        FUN_009f52b0(uVar3);
      }
    }
    else {
      *(undefined4 *)(iVar4 + 0x78) = 2;
      local_1c = 7;
      local_20 = 0;
      local_30 = local_30 & 0xffff0000;
      local_18 = (void *)0x0;
      local_4 = 3;
      FUN_0081c0f1(L"%i. ");
      local_4._0_1_ = 4;
      FUN_00820e3f(*(undefined4 *)(param_1_00 + 0x14),local_80,1);
      uVar3 = FUN_008854f0();
      FUN_00853980(local_34,uVar3,local_84);
      local_4._0_1_ = 3;
      FUN_0081b5bc();
      local_84 = (undefined4 *)operator_new(0x80);
      local_4._0_1_ = 5;
      if (local_84 == (undefined4 *)0x0) {
        uVar3 = 0;
      }
      else {
        uVar3 = FUN_009f6e70(local_34,*(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x78));
      }
      local_4 = CONCAT31(local_4._1_3_,3);
      FUN_009f52b0(uVar3);
      local_4 = 0xffffffff;
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
    }
    FUN_00a02d30();
    uVar3 = FUN_00a02c90();
    iVar2 = *(int *)(param_1_00 + 0x10);
    *(int *)(iVar2 + 0xdc) = *(int *)(iVar2 + 0xdc) + 1;
    FUN_009fd230(*(undefined4 *)(iVar2 + 0xdc));
    *(int *)(*(int *)(iVar2 + 0xdc) * 0x10 + -0x10 + *(int *)(iVar2 + 0xe0)) = iVar4;
    *(undefined4 *)(*(int *)(iVar2 + 0xdc) * 0x10 + -0xc + *(int *)(iVar2 + 0xe0)) = uVar3;
    uVar3 = FUN_00a02c90();
    puVar5 = (undefined4 *)operator_new(0xd4);
    local_4 = 6;
    local_84 = puVar5;
    if (puVar5 == (undefined4 *)0x0) {
      puVar5 = (undefined4 *)0x0;
    }
    else {
      FUN_009f6a80(uVar3);
      *puVar5 = wxHtmlListcontentCell::vftable;
    }
    local_4 = 0xffffffff;
    FUN_00a02d20(puVar5);
    if (*(int *)(param_1_00 + 0x14) != 0) {
      *(int *)(param_1_00 + 0x14) = *(int *)(param_1_00 + 0x14) + 1;
    }
    goto LAB_009fdaca;
  }
  FUN_008560c0(local_58);
  puVar5 = (undefined4 *)0x2;
  local_4 = 7;
  local_84 = puVar5;
  iVar2 = FUN_008507a0(&DAT_00d99360);
  if (iVar2 == 0) {
LAB_009fdb4e:
    local_85 = '\x01';
  }
  else {
    FUN_008560c0(local_34);
    puVar5 = (undefined4 *)0x6;
    local_4 = 8;
    local_84 = puVar5;
    iVar2 = FUN_008507a0(&DAT_00d99358);
    local_85 = '\0';
    if (iVar2 == 0) goto LAB_009fdb4e;
  }
  if (((uint)puVar5 & 4) != 0) {
    puVar5 = (undefined4 *)((uint)puVar5 & 0xfffffffb);
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
  }
  local_4 = 0xffffffff;
  if ((((uint)puVar5 & 2) != 0) && (_free(local_3c), 7 < local_40)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_54);
  }
  if (local_85 != '\0') {
    local_84 = *(undefined4 **)(param_1_00 + 0x14);
    FUN_008560c0(local_80);
    local_4 = 9;
    iVar2 = FUN_008507a0(&DAT_00d99360);
    local_4 = 0xffffffff;
    _free(local_64);
    if (7 < local_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_7c);
    }
    local_68 = 7;
    local_6c = 0;
    local_7c = local_7c & 0xffff0000;
    *(uint *)(param_1_00 + 0x14) = (uint)(iVar2 != 0);
    uVar6 = FUN_00a02c90();
    uVar3 = *(undefined4 *)(param_1_00 + 0x10);
    local_5c = operator_new(0xe8);
    local_4 = 10;
    if (local_5c == (void *)0x0) {
      uVar7 = 0;
    }
    else {
      uVar7 = FUN_009fd0e0(uVar6);
    }
    *(undefined4 *)(param_1_00 + 0x10) = uVar7;
    local_4 = 0xffffffff;
    FUN_009f5130(*(int *)(*(int *)(param_1_00 + 0xc) + 0x11c) * 2,0x10,1);
    FUN_009f8000(param_1);
    FUN_00a02d20(uVar6);
    FUN_00a02d30();
    *(undefined4 **)(param_1_00 + 0x14) = local_84;
    *(undefined4 *)(param_1_00 + 0x10) = uVar3;
  }
LAB_009fdaca:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_009fdce0(void)

{
  return &PTR_u_wxHTML_ModuleDefinitionList_0323e3ac;
}



void FUN_009fdcf0(int *param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_DEFLIST::vftable;
  }
                    // WARNING: Could not recover jumptable at 0x009fdd1d. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x24))();
  return;
}



undefined4 * FUN_009fdd20(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHTML_ModuleDefinitionList::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 FUN_009fdd80(undefined4 param_1)

{
  FUN_004325b6(0xd993e0);
  return param_1;
}



undefined4 __thiscall FUN_009fddb0(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 uStack_64;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bec350;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff8c;
  ExceptionList = &local_c;
  FUN_008560c0(local_30);
  local_4 = 0;
  iVar2 = FUN_008507a0(&DAT_00d993fc);
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (iVar2 == 0) {
    iVar2 = (**(code **)(**(int **)(*(int *)(param_1_00 + 0xc) + 0x7c) + 0x1c))(uVar1);
    if (iVar2 != 0) {
      FUN_00a02d30();
      FUN_00a02c90();
    }
    FUN_009f5130(*(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x118),0x40,1);
    uStack_60 = *(undefined4 *)(param_1 + 0x34);
    uStack_5c = *(undefined4 *)(param_1 + 0x28);
    uStack_64 = *(undefined4 *)(param_1 + 0x30);
    uStack_58 = *(undefined4 *)(param_1 + 0x2c);
    FUN_00a070f0(&uStack_5c,&uStack_64);
    iVar2 = (**(code **)(**(int **)(*(int *)(param_1_00 + 0xc) + 0x7c) + 0x1c))();
    if (iVar2 != 0) {
      FUN_00a02d30();
      FUN_00a02c90();
    }
    FUN_009f5130(*(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x118),0x40,1);
    uVar3 = 1;
  }
  else {
    FUN_008560c0(local_54);
    local_4 = 1;
    iVar2 = FUN_008507a0(&DAT_00d993f4);
    local_4 = 0xffffffff;
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_50 = local_50 & 0xffff0000;
    local_3c = 7;
    local_40 = 0;
    FUN_00a02d30();
    iVar4 = FUN_00a02c90();
    if (iVar2 == 0) {
      *(undefined4 *)(iVar4 + 0xcc) = 0xffffffff;
      *(undefined4 *)(iVar4 + 0x78) = 0;
      *(undefined4 *)(iVar4 + 0x68) = *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x118);
      *(undefined4 *)(iVar4 + 0x6c) = 4;
      *(undefined4 *)(iVar4 + 0xcc) = 0xffffffff;
    }
    else {
      FUN_009f5130(*(int *)(*(int *)(param_1_00 + 0xc) + 0x11c) * 5,0x10,1);
    }
    uVar3 = 0;
  }
  ExceptionList = local_c;
  return uVar3;
}



undefined ** FUN_009fdfa0(void)

{
  return &PTR_u_wxHTML_ModulePre_0323e408;
}



void FUN_009fdfb0(int *param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_PRE::vftable;
  }
                    // WARNING: Could not recover jumptable at 0x009fdfdd. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x24))();
  return;
}



undefined4 * FUN_009fdfe0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHTML_ModulePre::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __thiscall FUN_009fe040(int param_1_00,int param_1)

{
  short sVar1;
  uint uVar2;
  void *pvVar3;
  char cVar4;
  uint uVar5;
  undefined4 ******ppppppuVar6;
  short **ppsVar7;
  int iVar8;
  int *piVar9;
  int iVar10;
  short **ppsVar11;
  short **ppsVar12;
  int local_48;
  short **local_44;
  int local_40;
  int local_3c;
  short **local_38;
  undefined local_34 [4];
  undefined4 ******local_30 [4];
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00be2188;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_48;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  local_48 = 0;
  local_40 = param_1;
  local_1c = 7;
  local_20 = 0;
  local_30[0] = (undefined4 ******)((uint)local_30[0] & 0xffff0000);
  local_18 = (void *)0x0;
  local_4 = 0;
  if ((*(int *)(param_1_00 + 0x14) != 7) &&
     (cVar4 = FUN_004182d2(*(int *)(param_1_00 + 0x14),1), cVar4 != '\0')) {
    local_20 = 0;
    ppppppuVar6 = local_30[0];
    if (local_1c < 8) {
      ppppppuVar6 = local_30;
    }
    *(undefined2 *)ppppppuVar6 = 0;
  }
  FUN_008478e0(&local_48);
  uVar2 = *(uint *)(param_1_00 + 0x18);
  ppsVar7 = (short **)(param_1_00 + 4);
  ppsVar12 = ppsVar7;
  if (7 < uVar2) {
    ppsVar12 = (short **)*ppsVar7;
  }
  if (ppsVar12 != (short **)0x0) {
    ppsVar11 = ppsVar7;
    if (7 < uVar2) {
      ppsVar11 = (short **)*ppsVar7;
    }
    if (ppsVar11 <= ppsVar12) {
      if (7 < uVar2) {
        ppsVar7 = (short **)*ppsVar7;
      }
      if (ppsVar12 <= (short **)((int)ppsVar7 + *(int *)(param_1_00 + 0x14) * 2)) goto LAB_009fe115;
    }
  }
  FUN_00a3fb10(uVar5);
LAB_009fe115:
  do {
    if ((param_1_00 != -4) && ((param_1_00 == 0 || (param_1_00 != local_48)))) {
      FUN_00a3fb10(uVar5);
    }
    iVar8 = local_40;
    if (ppsVar12 == local_44) {
      *(undefined4 *)(local_40 + 0x18) = 7;
      *(undefined4 *)(local_40 + 0x14) = 0;
      *(undefined2 *)(local_40 + 4) = 0;
      FID_conflict_assign(local_34,0,0xffffffff);
      *(undefined4 *)(iVar8 + 0x1c) = 0;
      _free(local_18);
      pvVar3 = ExceptionList;
      ExceptionList = local_c;
      goto joined_r0x009fe3d4;
    }
    if (param_1_00 != -4) {
      if (param_1_00 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar8 = param_1_00 + 4;
      }
      else {
        iVar8 = *(int *)(param_1_00 + 4);
      }
      if ((short **)(iVar8 + *(int *)(param_1_00 + 0x14) * 2) <= ppsVar12) {
        FUN_00a3fb10();
      }
    }
    sVar1 = *(short *)ppsVar12;
    if (sVar1 == 10) {
LAB_009fe359:
      FUN_0084b060(&DAT_00d9947c);
    }
    else {
      if (sVar1 == 0xd) {
        local_3c = param_1_00;
        local_38 = ppsVar12;
        piVar9 = (int *)FUN_004226c0(1);
        iVar8 = *piVar9;
        ppsVar7 = (short **)piVar9[1];
        if ((iVar8 != -4) && ((iVar8 == 0 || (iVar8 != local_48)))) {
          FUN_00a3fb10();
        }
        if (ppsVar7 != local_44) {
          if (iVar8 != -4) {
            if (iVar8 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(iVar8 + 0x18) < 8) {
              iVar10 = iVar8 + 4;
            }
            else {
              iVar10 = *(int *)(iVar8 + 4);
            }
            if ((short **)(iVar10 + *(int *)(iVar8 + 0x14) * 2) <= ppsVar7) {
              FUN_00a3fb10();
            }
          }
          if (*(short *)ppsVar7 == 10) {
            ppsVar12 = ppsVar7;
            param_1_00 = iVar8;
          }
        }
        goto LAB_009fe359;
      }
      if (sVar1 == 0x3c) {
        while( true ) {
          if ((param_1_00 != -4) && ((param_1_00 == 0 || (param_1_00 != local_48)))) {
            FUN_00a3fb10();
          }
          if (ppsVar12 == local_44) break;
          if (param_1_00 != -4) {
            if (param_1_00 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(param_1_00 + 0x18) < 8) {
              iVar8 = param_1_00 + 4;
            }
            else {
              iVar8 = *(int *)(param_1_00 + 4);
            }
            if ((short **)(iVar8 + *(int *)(param_1_00 + 0x14) * 2) <= ppsVar12) {
              FUN_00a3fb10();
            }
          }
          if (*(short *)ppsVar12 == 0x3e) break;
          if (param_1_00 != -4) {
            if (param_1_00 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(param_1_00 + 0x18) < 8) {
              iVar8 = param_1_00 + 4;
            }
            else {
              iVar8 = *(int *)(param_1_00 + 4);
            }
            if ((short **)(iVar8 + *(int *)(param_1_00 + 0x14) * 2) <= ppsVar12) {
              FUN_00a3fb10();
            }
          }
          if (param_1_00 != -4) {
            if (param_1_00 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(param_1_00 + 0x18) < 8) {
              iVar8 = param_1_00 + 4;
            }
            else {
              iVar8 = *(int *)(param_1_00 + 4);
            }
            if ((short **)(iVar8 + *(int *)(param_1_00 + 0x14) * 2) <= ppsVar12) {
              FUN_00a3fb10();
            }
          }
          FID_conflict_append(1,*(short *)ppsVar12);
          ppsVar12 = (short **)((int)ppsVar12 + 2);
        }
        FID_conflict_append(1,0x3e);
        if ((param_1_00 != -4) && ((param_1_00 == 0 || (param_1_00 != local_48)))) {
          FUN_00a3fb10();
        }
        iVar8 = local_40;
        if (ppsVar12 == local_44) {
          *(undefined4 *)(local_40 + 0x18) = 7;
          *(undefined4 *)(local_40 + 0x14) = 0;
          *(undefined2 *)(local_40 + 4) = 0;
          FID_conflict_assign(local_34,0,0xffffffff);
          *(undefined4 *)(iVar8 + 0x1c) = 0;
          _free(local_18);
          pvVar3 = ExceptionList;
          ExceptionList = local_c;
joined_r0x009fe3d4:
          local_c = ExceptionList;
          if (local_1c < 8) {
            ___security_check_cookie_4();
            return;
          }
          ExceptionList = pvVar3;
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_30[0]);
        }
      }
      else {
        if (param_1_00 != -4) {
          if (param_1_00 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(param_1_00 + 0x18) < 8) {
            iVar8 = param_1_00 + 4;
          }
          else {
            iVar8 = *(int *)(param_1_00 + 4);
          }
          if ((short **)(iVar8 + *(int *)(param_1_00 + 0x14) * 2) <= ppsVar12) {
            FUN_00a3fb10();
          }
        }
        FID_conflict_append(1,*(short *)ppsVar12);
      }
    }
    if (param_1_00 != -4) {
      if (param_1_00 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar8 = param_1_00 + 4;
      }
      else {
        iVar8 = *(int *)(param_1_00 + 4);
      }
      if ((short **)(iVar8 + *(int *)(param_1_00 + 0x14) * 2) <= ppsVar12) {
        FUN_00a3fb10();
      }
    }
    ppsVar12 = (short **)((int)ppsVar12 + 2);
  } while( true );
}



undefined4 FUN_009fe410(undefined4 param_1)

{
  FUN_004325b6(&DAT_00d99484);
  return param_1;
}



void __thiscall FUN_009fe440(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 local_78;
  undefined4 local_74;
  undefined4 local_70;
  undefined4 local_6c;
  undefined4 local_68;
  void *local_64;
  undefined4 local_60;
  undefined4 local_5c;
  uint uStack_40;
  void *pvStack_3c;
  undefined auStack_34 [24];
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bec396;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_78;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_c;
  iVar2 = *(int *)(param_1_00 + 0xc);
  local_74 = *(undefined4 *)(iVar2 + 0x8c);
  local_78 = *(undefined4 *)(iVar2 + 0x84);
  local_60 = *(undefined4 *)(iVar2 + 0x88);
  local_6c = *(undefined4 *)(iVar2 + 0x90);
  local_5c = *(undefined4 *)(iVar2 + 0x7c);
  local_68 = *(undefined4 *)(iVar2 + 0x80);
  local_70 = *(undefined4 *)(iVar2 + 0x1310);
  *(undefined4 *)(iVar2 + 0x1310) = 1;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x88) = 0;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x80) = 0;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x84) = 0;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x8c) = 1;
  FUN_00a02d40();
  local_64 = operator_new(0x60);
  local_4 = 0;
  if (local_64 != (void *)0x0) {
    (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))(uVar1);
    FUN_009f8330();
  }
  local_4 = 0xffffffff;
  FUN_009f52b0();
  FUN_00a02d30();
  FUN_00a02c90();
  FUN_009f7cb0(param_1,0x3ff0000000000000);
  iVar2 = FUN_00a02c90();
  *(undefined4 *)(iVar2 + 0x78) = 0;
  *(undefined4 *)(iVar2 + 0xcc) = 0xffffffff;
  FUN_009f5130(*(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x118),0x40,1);
  FUN_00a05c50(auStack_34,param_1);
  local_4 = 1;
  FUN_009fe040();
  local_4._0_1_ = 2;
  FUN_00a075d0();
  local_4._0_1_ = 1;
  _free(pvStack_3c);
  if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  FUN_00a02d30();
  FUN_00a02d30();
  FUN_00a02c90();
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x1310) = local_70;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x88) = local_60;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x80) = local_68;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x84) = local_78;
  *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x8c) = local_74;
  FUN_00a02d40();
  local_64 = operator_new(0x60);
  local_4._0_1_ = 3;
  if (local_64 != (void *)0x0) {
    (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
    FUN_009f8330();
  }
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_009f52b0();
  _free(pvStack_18);
  if (uStack_1c < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



undefined ** FUN_009fe6e0(void)

{
  return &PTR_u_wxHTML_ModuleHLine_0323e484;
}



void __thiscall FUN_009fe6f0(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x10) = param_1;
  FUN_009f4f70();
  return;
}



undefined4 __thiscall FUN_009fe700(undefined4 param_1_00,byte param_1)

{
  FUN_009f6950();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_009fe720(int *param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_HR::vftable;
  }
                    // WARNING: Could not recover jumptable at 0x009fe74d. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x24))();
  return;
}



undefined4 * FUN_009fe750(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHTML_ModuleHLine::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __thiscall FUN_009fe7b0(int param_1_00,int param_1)

{
  uint uVar1;
  int unaff_retaddr;
  undefined local_3c [8];
  undefined **local_34 [4];
  void *pvStack_24;
  undefined **local_20;
  undefined4 uStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bec3e0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  FUN_008f7db0(L"GREY");
  local_4 = 0;
  FUN_0095d7e0(local_34,(-(*(char *)(param_1_00 + 0x58) != '\0') & 6U) + 100);
  local_4._0_1_ = 2;
  local_34[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  FUN_008f7db0(L"GREY");
  local_4._0_1_ = 3;
  FUN_009566f0(&local_20,1,100);
  local_4 = CONCAT31(local_4._1_3_,5);
  local_20 = wxObject::vftable;
  FUN_0083e850();
  (**(code **)(**(int **)(param_1 + 8) + 0x60))(local_3c);
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(&stack0xffffffb8);
  (**(code **)(**(int **)(param_1 + 8) + 0x150))
            (*(int *)(param_1_00 + 0x1c) + unaff_retaddr,*(int *)(param_1_00 + 0x20) + param_1,
             *(undefined4 *)(param_1_00 + 0x10),*(undefined4 *)(param_1_00 + 0x14));
  uStack_1c = CONCAT31(uStack_1c._1_3_,2);
  FUN_0083e850();
  uStack_1c = 0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_24;
  return;
}



undefined4 FUN_009fe8e0(undefined4 param_1)

{
  FUN_004325b6(0xd99548);
  return param_1;
}



uint __thiscall FUN_009fe910(int param_1_00,undefined4 param_1)

{
  char cVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  uint uVar5;
  undefined4 local_5c;
  undefined4 *local_58;
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [24];
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bec41b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00a02d30(DAT_0323f878 ^ (uint)&stack0xffffff94);
  iVar2 = FUN_00a02c90();
  FUN_009f5130(*(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x118),0xc0,1);
  *(undefined4 *)(iVar2 + 0x78) = 1;
  *(undefined4 *)(iVar2 + 0xcc) = 0xffffffff;
  FUN_009f7af0();
  FUN_009f7cb0(param_1,0x3ff0000000000000);
  local_5c = 1;
  FUN_004325b6();
  local_4 = 0;
  FUN_00a09a60(local_30,&local_5c);
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  FUN_004325b6();
  local_4 = 1;
  cVar1 = FUN_00a07740();
  local_4 = 0xffffffff;
  _free(local_38);
  if (local_3c < 8) {
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    puVar3 = (undefined4 *)operator_new(0x5c);
    local_4 = 2;
    local_58 = puVar3;
    if (puVar3 != (undefined4 *)0x0) {
      uVar4 = FUN_00a49750();
      FUN_009f6890();
      *puVar3 = wxHtmlLineCell::vftable;
      puVar3[5] = uVar4;
      *(bool *)(puVar3 + 0x16) = cVar1 == '\0';
    }
    local_4 = 0xffffffff;
    FUN_009f52b0();
    FUN_00a02d30();
    uVar5 = FUN_00a02c90();
    ExceptionList = local_c;
    return uVar5 & 0xffffff00;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



undefined ** FUN_009fead0(void)

{
  return &PTR_u_wxHTML_ModuleLinks_0323e500;
}



void FUN_009feae0(int *param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_A::vftable;
  }
                    // WARNING: Could not recover jumptable at 0x009feb0d. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x24))();
  return;
}



undefined4 * FUN_009feb10(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHTML_ModuleLinks::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 * __thiscall FUN_009feb70(undefined4 *param_1_00,undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bebe03;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009f6890(DAT_0323f878 ^ (uint)&stack0xffffffec);
  *param_1_00 = wxHtmlAnchorCell::vftable;
  param_1_00[0x1c] = 7;
  param_1_00[0x1b] = 0;
  *(undefined2 *)(param_1_00 + 0x17) = 0;
  param_1_00[0x1d] = 0;
  local_4 = 1;
  if (param_1_00 + 0x16 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_009febf0(int param_1_00,int param_1,int param_2)

{
  int iVar1;
  
  if ((param_1 == 1) && (*(int *)(param_1_00 + 0x6c) == *(int *)(param_2 + 0x14))) {
    iVar1 = FUN_00850760(param_2);
    if (iVar1 == 0) {
      return param_1_00;
    }
  }
  iVar1 = FUN_009f4f80(param_1,param_2);
  return iVar1;
}



int __thiscall FUN_009fec40(int param_1_00,byte param_1)

{
  _free(*(void **)(param_1_00 + 0x74));
  if (7 < *(uint *)(param_1_00 + 0x70)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0x5c));
  }
  *(undefined4 *)(param_1_00 + 0x70) = 7;
  *(undefined4 *)(param_1_00 + 0x6c) = 0;
  *(undefined2 *)(param_1_00 + 0x5c) = 0;
  FUN_009f6950();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_009feca0(undefined4 param_1)

{
  FUN_004325b6(&DAT_00d99620);
  return param_1;
}



void __thiscall FUN_009fecd0(int param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined *puVar5;
  bool bVar6;
  undefined auStack_180 [3];
  char local_17d;
  undefined4 local_17c;
  void *local_178;
  undefined local_174 [4];
  undefined4 local_170;
  uint local_15c;
  void *local_158;
  undefined **local_150 [2];
  undefined4 uStack_148;
  undefined uStack_144;
  undefined uStack_143;
  undefined uStack_142;
  undefined uStack_141;
  undefined uStack_140;
  undefined local_13c [4];
  uint local_138;
  undefined4 local_128;
  uint local_124;
  void *local_120;
  undefined4 uStack_118;
  undefined4 uStack_114;
  undefined4 uStack_110;
  undefined4 uStack_10c;
  undefined local_b0 [4];
  undefined4 local_ac;
  undefined4 local_9c;
  uint local_98;
  void *local_94;
  undefined local_8c [4];
  uint uStack_88;
  undefined4 uStack_78;
  uint uStack_74;
  void *pvStack_70;
  undefined local_68 [88];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bec540;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_180;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xfffffe70;
  ExceptionList = &local_c;
  local_17c = 0;
  FUN_004325b6(L"NAME");
  local_4 = 0;
  local_17d = FUN_00a07740(local_13c);
  local_4 = 0xffffffff;
  _free(local_120);
  if (7 < local_124) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_138,uVar3);
  }
  if (local_17d != '\0') {
    local_178 = operator_new(0x7c);
    local_4 = 1;
    bVar6 = local_178 == (void *)0x0;
    if (bVar6) {
      uVar4 = 0;
    }
    else {
      FUN_004325b6(L"NAME");
      local_4 = CONCAT31(local_4._1_3_,2);
      local_17c = 1;
      uVar4 = FUN_00a09860(local_13c,local_174,0);
      local_4 = 3;
      local_17c = 3;
      uVar4 = FUN_009feb70(uVar4);
    }
    local_4 = 5;
    FUN_009f52b0(uVar4);
    if (!bVar6) {
      _free(local_120);
      if (7 < local_124) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_138);
      }
      local_124 = 7;
      local_128 = 0;
      local_138 = local_138 & 0xffff0000;
    }
    local_4 = 0xffffffff;
    if ((!bVar6) && (_free(local_158), 7 < local_15c)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_170);
    }
  }
  FUN_004325b6(L"HREF");
  local_4 = 6;
  cVar2 = FUN_00a07740(local_174);
  local_4 = 0xffffffff;
  _free(local_158);
  if (7 < local_15c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_170);
  }
  if (cVar2 != '\0') {
    FUN_009efa20(*(int *)(param_1_00 + 0xc) + 0xbc);
    local_4 = 7;
    FUN_00458700(*(int *)(param_1_00 + 0xc) + 0xa8);
    local_17c = *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x88);
    local_4._0_1_ = 8;
    FUN_004325b6(L"HREF");
    local_4._0_1_ = 9;
    FUN_00a09860(local_8c,local_174,0);
    _free(local_158);
    if (7 < local_15c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_170);
    }
    local_98 = 7;
    local_9c = 0;
    local_ac = (uint)local_ac._2_2_ << 0x10;
    local_94 = (void *)0x0;
    local_4._0_1_ = 0xc;
    FUN_004325b6(L"TARGET");
    local_4._0_1_ = 0xd;
    cVar2 = FUN_00a07740(local_174);
    local_4._0_1_ = 0xc;
    _free(local_158);
    if (7 < local_15c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_170);
    }
    if (cVar2 != '\0') {
      FUN_004325b6(L"TARGET");
      local_4._0_1_ = 0xe;
      puVar5 = (undefined *)FUN_00a09860(local_13c,local_174,0);
      local_4._0_1_ = 0xf;
      if (local_b0 != puVar5) {
        FID_conflict_assign(puVar5,0,0xffffffff);
      }
      _free(local_120);
      if (7 < local_124) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_138);
      }
      local_124 = 7;
      local_128 = 0;
      local_138 = local_138 & 0xffff0000;
      local_4._0_1_ = 0xc;
      _free(local_158);
      if (7 < local_15c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_170);
      }
    }
    iVar1 = *(int *)(param_1_00 + 0xc);
    if (iVar1 + 0xa8 != iVar1 + 0x94) {
      FUN_0083ea60(iVar1 + 0x94);
    }
    *(undefined4 *)(iVar1 + 0xb0) = *(undefined4 *)(iVar1 + 0x9c);
    *(undefined *)(iVar1 + 0xb4) = *(undefined *)(iVar1 + 0xa0);
    *(undefined *)(iVar1 + 0xb5) = *(undefined *)(iVar1 + 0xa1);
    *(undefined *)(iVar1 + 0xb6) = *(undefined *)(iVar1 + 0xa2);
    *(undefined *)(iVar1 + 0xb7) = *(undefined *)(iVar1 + 0xa3);
    *(undefined *)(iVar1 + 0xb8) = *(undefined *)(iVar1 + 0xa4);
    local_178 = operator_new(0x70);
    local_4._0_1_ = 0x10;
    if (local_178 == (void *)0x0) {
      uVar4 = 0;
    }
    else {
      uVar4 = FUN_009f8200(*(int *)(param_1_00 + 0xc) + 0x94,1);
    }
    local_4._0_1_ = 0xc;
    FUN_009f52b0(uVar4);
    *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x88) = 1;
    local_178 = operator_new(0x60);
    local_4._0_1_ = 0x11;
    if (local_178 == (void *)0x0) {
      uVar4 = 0;
    }
    else {
      uVar4 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
      uVar4 = FUN_009f8330(uVar4);
    }
    local_4._0_1_ = 0xc;
    FUN_009f52b0(uVar4);
    uVar4 = FUN_009fb730(local_8c,local_b0);
    local_4._0_1_ = 0x12;
    FUN_00a04100(uVar4);
    local_4._0_1_ = 0xc;
    FUN_008f2ca0();
    uStack_114 = *(undefined4 *)(param_1 + 0x34);
    uStack_118 = *(undefined4 *)(param_1 + 0x30);
    uStack_110 = *(undefined4 *)(param_1 + 0x28);
    uStack_10c = *(undefined4 *)(param_1 + 0x2c);
    FUN_00a070f0(&uStack_110,&uStack_118);
    FUN_00a04100(local_68);
    *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x88) = local_17c;
    local_178 = operator_new(0x60);
    local_4._0_1_ = 0x13;
    if (local_178 == (void *)0x0) {
      uVar4 = 0;
    }
    else {
      uVar4 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
      uVar4 = FUN_009f8330(uVar4);
    }
    local_4 = CONCAT31(local_4._1_3_,0xc);
    FUN_009f52b0(uVar4);
    iVar1 = *(int *)(param_1_00 + 0xc);
    if ((undefined ***)(iVar1 + 0xa8) != local_150) {
      FUN_0083ea60(local_150);
    }
    *(undefined4 *)(iVar1 + 0xb0) = uStack_148;
    *(undefined *)(iVar1 + 0xb4) = uStack_144;
    *(undefined *)(iVar1 + 0xb5) = uStack_143;
    *(undefined *)(iVar1 + 0xb6) = uStack_142;
    *(undefined *)(iVar1 + 0xb7) = uStack_141;
    *(undefined *)(iVar1 + 0xb8) = uStack_140;
    local_178 = operator_new(0x70);
    local_4._0_1_ = 0x14;
    if (local_178 == (void *)0x0) {
      uVar4 = 0;
    }
    else {
      uVar4 = FUN_009f8200(local_150,1);
    }
    local_4._0_1_ = 0xc;
    FUN_009f52b0(uVar4);
    _free(local_94);
    if (7 < local_98) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_ac);
    }
    local_98 = 7;
    local_9c = 0;
    local_ac = local_ac & 0xffff0000;
    _free(pvStack_70);
    if (7 < uStack_74) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_88);
    }
    uStack_74 = 7;
    uStack_78 = 0;
    uStack_88 = uStack_88 & 0xffff0000;
    local_4 = CONCAT31(local_4._1_3_,7);
    local_150[0] = wxObject::vftable;
    FUN_0083e850();
    local_4 = 0xffffffff;
    FUN_008f2ca0();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_009ff3c0(int param_1_00,int param_1)

{
  void *pvVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar4 = 0;
  if (0 < *(int *)(param_1_00 + 0xd8)) {
    do {
      pvVar1 = _realloc(*(void **)(*(int *)(param_1_00 + 0xe0) + iVar4 * 4),param_1 * 0x1c);
      *(void **)(*(int *)(param_1_00 + 0xe0) + iVar4 * 4) = pvVar1;
      iVar3 = *(int *)(param_1_00 + 0xd4);
      if (iVar3 < param_1) {
        iVar2 = iVar3 * 0x1c;
        iVar3 = param_1 - iVar3;
        do {
          *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar4 * 4) + 0x14 + iVar2) = 2;
          iVar2 = iVar2 + 0x1c;
          iVar3 = iVar3 + -1;
        } while (iVar3 != 0);
      }
      iVar4 = iVar4 + 1;
    } while (iVar4 < *(int *)(param_1_00 + 0xd8));
  }
  pvVar1 = _realloc(*(void **)(param_1_00 + 0xdc),param_1 * 0x1c);
  iVar4 = *(int *)(param_1_00 + 0xd4);
  *(void **)(param_1_00 + 0xdc) = pvVar1;
  if (iVar4 < param_1) {
    iVar3 = iVar4 * 0x1c;
    iVar4 = param_1 - iVar4;
    do {
      *(undefined4 *)(iVar3 + *(int *)(param_1_00 + 0xdc)) = 0;
      *(undefined4 *)(*(int *)(param_1_00 + 0xdc) + 4 + iVar3) = 2;
      *(undefined4 *)(*(int *)(param_1_00 + 0xdc) + 0xc + iVar3) = 0xffffffff;
      *(undefined4 *)(*(int *)(param_1_00 + 0xdc) + 8 + iVar3) = 0xffffffff;
      iVar3 = iVar3 + 0x1c;
      iVar4 = iVar4 + -1;
    } while (iVar4 != 0);
  }
  *(int *)(param_1_00 + 0xd4) = param_1;
  return;
}



void __thiscall FUN_009ff4d0(int param_1_00,int param_1)

{
  void *pvVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  pvVar1 = _realloc(*(void **)(param_1_00 + 0xe0),param_1 * 4);
  iVar4 = *(int *)(param_1_00 + 0xd8);
  *(void **)(param_1_00 + 0xe0) = pvVar1;
  for (; iVar4 < param_1; iVar4 = iVar4 + 1) {
    if (*(int *)(param_1_00 + 0xd4) == 0) {
      *(undefined4 *)(*(int *)(param_1_00 + 0xe0) + iVar4 * 4) = 0;
    }
    else {
      pvVar1 = _malloc(*(int *)(param_1_00 + 0xd4) * 0x1c);
      *(void **)(*(int *)(param_1_00 + 0xe0) + iVar4 * 4) = pvVar1;
      iVar2 = 0;
      if (0 < *(int *)(param_1_00 + 0xd4)) {
        iVar3 = 0;
        do {
          *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar4 * 4) + 0x14 + iVar3) = 2;
          iVar2 = iVar2 + 1;
          iVar3 = iVar3 + 0x1c;
        } while (iVar2 < *(int *)(param_1_00 + 0xd4));
      }
    }
  }
  *(int *)(param_1_00 + 0xd8) = param_1;
  return;
}



undefined ** FUN_009ff580(void)

{
  return &PTR_u_wxHTML_ModuleTables_0323e580;
}



void __fastcall FUN_009ff590(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int **ppiVar6;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  if (*(int *)(param_1 + 0xd4) == 0) {
    return;
  }
  if (*(int *)(*(int *)(param_1 + 0xdc) + 8) != -1) {
    return;
  }
  *(undefined4 *)(param_1 + 0xd0) = 0;
  local_10 = 0;
  local_8 = 0;
  iVar2 = 0;
  if (0 < *(int *)(param_1 + 0xd4)) {
    local_14 = 0;
    do {
      local_c = 0;
      if (0 < *(int *)(param_1 + 0xd8)) {
        do {
          ppiVar6 = (int **)(*(int *)(*(int *)(param_1 + 0xe0) + local_c * 4) + local_14);
          if (ppiVar6[5] == (int *)0x1) {
            (**(code **)(**ppiVar6 + 0x24))(*(int *)(param_1 + 0xe8) * 2 + 1);
            iVar1 = (**(code **)(**ppiVar6 + 0x10))();
            iVar2 = iVar1;
            if (*(char *)(ppiVar6 + 6) == '\0') {
              iVar2 = (*ppiVar6)[4];
            }
            piVar4 = ppiVar6[1];
            iVar5 = ((int)piVar4 + -1) * *(int *)(param_1 + 0xe4);
            iVar3 = (iVar2 - iVar5) / (int)piVar4;
            iVar1 = (iVar1 - iVar5) / (int)piVar4;
            iVar5 = 0;
            iVar2 = local_14;
            if (0 < (int)ppiVar6[1]) {
              do {
                if (*(int *)(iVar2 + 8 + *(int *)(param_1 + 0xdc)) < iVar3) {
                  *(int *)(iVar2 + 8 + *(int *)(param_1 + 0xdc)) = iVar3;
                }
                if (*(int *)(iVar2 + 0xc + *(int *)(param_1 + 0xdc)) < iVar1) {
                  *(int *)(iVar2 + 0xc + *(int *)(param_1 + 0xdc)) = iVar1;
                }
                iVar5 = iVar5 + 1;
                iVar2 = iVar2 + 0x1c;
              } while (iVar5 < (int)ppiVar6[1]);
            }
          }
          local_c = local_c + 1;
        } while (local_c < *(int *)(param_1 + 0xd8));
      }
      piVar4 = (int *)(*(int *)(param_1 + 0xdc) + local_14);
      if (piVar4[1] == 1) {
        iVar2 = *piVar4;
        if (*piVar4 <= piVar4[2]) {
          iVar2 = piVar4[2];
        }
        *(int *)(param_1 + 0xd0) = *(int *)(param_1 + 0xd0) + iVar2;
      }
      else if ((piVar4[1] == 2) && (*piVar4 != 0)) {
        local_10 = local_10 + *piVar4;
      }
      else {
        *(int *)(param_1 + 0xd0) = *(int *)(param_1 + 0xd0) + piVar4[3];
      }
      local_14 = local_14 + 0x1c;
      local_8 = local_8 + 1;
    } while (local_8 < *(int *)(param_1 + 0xd4));
    iVar2 = local_10;
    if (99 < local_10) {
      *(undefined4 *)(param_1 + 0xd0) = 0xffffff;
      goto LAB_009ff731;
    }
  }
  *(int *)(param_1 + 0xd0) = (*(int *)(param_1 + 0xd0) * 100) / (100 - iVar2);
LAB_009ff731:
  *(int *)(param_1 + 0xd0) =
       *(int *)(param_1 + 0xd0) +
       (*(int *)(param_1 + 0xd4) + 1) * *(int *)(param_1 + 0xe4) + *(int *)(param_1 + 0xa0) * 2;
  return;
}



void __thiscall FUN_009ff760(int param_1_00,int *param_1)

{
  int **ppiVar1;
  int iVar2;
  code *pcVar3;
  bool bVar4;
  longlong lVar5;
  int iVar6;
  int iVar7;
  int *piVar8;
  int *piVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int *piVar13;
  int iVar14;
  int *piVar15;
  float10 fVar16;
  float10 extraout_ST0;
  float10 fVar17;
  float10 fVar18;
  float10 extraout_ST0_00;
  int *local_10;
  int local_c;
  int local_8;
  
  FUN_009ff590();
  FUN_009f4f70(param_1);
  iVar14 = *(int *)(param_1_00 + 0x80);
  if (*(int *)(param_1_00 + 0x84) == 2) {
    if (iVar14 < 0) {
      if (iVar14 < -100) {
        *(undefined4 *)(param_1_00 + 0x80) = 0xffffff9c;
      }
      iVar14 = ((*(int *)(param_1_00 + 0x80) + 100) * (int)param_1) / 100;
      goto LAB_009ff7ed;
    }
    if (100 < iVar14) {
      *(undefined4 *)(param_1_00 + 0x80) = 100;
    }
    *(int *)(param_1_00 + 0x10) = (*(int *)(param_1_00 + 0x80) * (int)param_1) / 100;
  }
  else {
    if (iVar14 < 0) {
      iVar14 = iVar14 + (int)param_1;
    }
LAB_009ff7ed:
    *(int *)(param_1_00 + 0x10) = iVar14;
  }
  piVar15 = (int *)((*(int *)(param_1_00 + 0xa0) * -2 -
                    (*(int *)(param_1_00 + 0xd4) + 1) * *(int *)(param_1_00 + 0xe4)) +
                   *(int *)(param_1_00 + 0x10));
  iVar14 = 0;
  if (0 < *(int *)(param_1_00 + 0xd4)) {
    iVar10 = *(int *)(param_1_00 + 0xdc);
    iVar6 = 0;
    do {
      if (*(int *)(iVar6 + 4 + iVar10) == 1) {
        iVar7 = *(int *)(iVar6 + 8 + iVar10);
        if (iVar7 < *(int *)(iVar6 + iVar10)) {
          iVar7 = *(int *)(iVar6 + iVar10);
        }
        *(int *)(iVar6 + 0x14 + iVar10) = iVar7;
        iVar10 = *(int *)(param_1_00 + 0xdc);
        piVar15 = (int *)((int)piVar15 - *(int *)(iVar6 + 0x14 + iVar10));
      }
      iVar14 = iVar14 + 1;
      iVar6 = iVar6 + 0x1c;
    } while (iVar14 < *(int *)(param_1_00 + 0xd4));
  }
  iVar14 = 0;
  local_c = 0;
  if (0 < *(int *)(param_1_00 + 0xd4)) {
    piVar8 = *(int **)(param_1_00 + 0xdc);
    iVar10 = *(int *)(param_1_00 + 0xd4);
    do {
      if (*piVar8 == 0) {
        iVar14 = iVar14 + piVar8[3];
      }
      piVar8 = piVar8 + 7;
      iVar10 = iVar10 + -1;
      local_c = iVar14;
    } while (iVar10 != 0);
  }
  if (*(int *)(param_1_00 + 0x80) != 0) goto LAB_009ff917;
  iVar14 = 0;
  if (*(int *)(param_1_00 + 0xd4) < 1) {
LAB_009ff8d5:
    iVar10 = (((*(int *)(param_1_00 + 0x10) - (int)piVar15) + local_c) * 100) / (100 - iVar14);
  }
  else {
    piVar8 = *(int **)(param_1_00 + 0xdc);
    iVar10 = *(int *)(param_1_00 + 0xd4);
    do {
      if ((piVar8[1] == 2) && (*piVar8 != 0)) {
        iVar14 = iVar14 + *piVar8;
      }
      piVar8 = piVar8 + 7;
      iVar10 = iVar10 + -1;
    } while (iVar10 != 0);
    iVar10 = (int)param_1;
    if (iVar14 < 100) goto LAB_009ff8d5;
  }
  iVar14 = (*(int *)(param_1_00 + 0xa0) * -2 -
           (*(int *)(param_1_00 + 0xd4) + 1) * *(int *)(param_1_00 + 0xe4)) + (int)param_1;
  if (iVar14 <= iVar10) {
    iVar10 = iVar14;
  }
  piVar15 = (int *)((int)piVar15 + (iVar10 - *(int *)(param_1_00 + 0x10)));
  *(int *)(param_1_00 + 0x10) = iVar10;
LAB_009ff917:
  local_10 = (int *)0x0;
  param_1 = piVar15;
  if (0 < *(int *)(param_1_00 + 0xd4)) {
    iVar14 = 0;
    do {
      piVar8 = (int *)(iVar14 + *(int *)(param_1_00 + 0xdc));
      if ((*(int *)(iVar14 + 4 + *(int *)(param_1_00 + 0xdc)) == 2) &&
         (iVar10 = *piVar8, iVar10 != 0)) {
        if (99 < iVar10) {
          iVar10 = 100;
        }
        piVar8[5] = (iVar10 * (int)piVar15) / 100;
        iVar10 = *(int *)(param_1_00 + 0xa0);
        iVar6 = 0;
        if (0 < *(int *)(param_1_00 + 0xd4)) {
          piVar8 = *(int **)(param_1_00 + 0xdc);
          do {
            if (((piVar8[1] == 2) && ((int)local_10 < iVar6)) || (*piVar8 == 0)) {
              iVar10 = iVar10 + piVar8[2];
            }
            iVar6 = iVar6 + 1;
            piVar8 = piVar8 + 7;
          } while (iVar6 < *(int *)(param_1_00 + 0xd4));
        }
        iVar6 = *(int *)(*(int *)(param_1_00 + 0xdc) + 0x14 + iVar14);
        iVar11 = *(int *)(param_1_00 + 0xdc) + iVar14;
        iVar7 = (int)param_1 - iVar10;
        if (iVar6 <= (int)param_1 - iVar10) {
          iVar7 = iVar6;
        }
        iVar10 = *(int *)(iVar11 + 8);
        if (iVar7 <= iVar10) {
          iVar7 = iVar10;
        }
        *(int *)(iVar11 + 0x14) = iVar7;
        param_1 = (int *)((int)param_1 - *(int *)(iVar14 + 0x14 + *(int *)(param_1_00 + 0xdc)));
      }
      local_10 = (int *)((int)local_10 + 1);
      iVar14 = iVar14 + 0x1c;
    } while ((int)local_10 < *(int *)(param_1_00 + 0xd4));
  }
  iVar14 = *(int *)(param_1_00 + 0xd4);
  iVar10 = 0;
  local_10 = param_1;
  local_8 = 0;
  if (0 < iVar14) {
    piVar15 = *(int **)(param_1_00 + 0xdc);
    iVar6 = iVar14;
    do {
      if (*piVar15 == 0) {
        iVar10 = iVar10 + 1;
      }
      piVar15 = piVar15 + 7;
      iVar6 = iVar6 + -1;
      local_8 = iVar10;
    } while (iVar6 != 0);
  }
  if ((int)param_1 < (int)*(int **)(param_1_00 + 0xa0)) {
    local_10 = *(int **)(param_1_00 + 0xa0);
  }
  if (0 < iVar14) {
    fVar16 = (float10)0.5;
    iVar10 = 0;
    iVar14 = 1;
    do {
      iVar6 = *(int *)(param_1_00 + 0xdc);
      if (*(int *)(iVar10 + iVar6) == 0) {
        if (local_c == 0) {
          iVar7 = (int)local_10 / local_8;
        }
        else {
          iVar7 = FUN_00a49750();
          fVar16 = extraout_ST0;
        }
        *(int *)(iVar10 + iVar6 + 0x14) = iVar7;
        iVar6 = 0;
        if (iVar14 < *(int *)(param_1_00 + 0xd4)) {
          piVar15 = (int *)(iVar10 + 0x1c + *(int *)(param_1_00 + 0xdc));
          iVar7 = *(int *)(param_1_00 + 0xd4) - iVar14;
          do {
            if (*piVar15 == 0) {
              iVar6 = iVar6 + piVar15[2];
            }
            piVar15 = piVar15 + 7;
            iVar7 = iVar7 + -1;
          } while (iVar7 != 0);
        }
        iVar7 = *(int *)(*(int *)(param_1_00 + 0xdc) + 0x14 + iVar10);
        iVar12 = *(int *)(param_1_00 + 0xdc) + iVar10;
        iVar11 = (int)local_10 - iVar6;
        if (iVar7 <= (int)local_10 - iVar6) {
          iVar11 = iVar7;
        }
        iVar6 = *(int *)(iVar12 + 8);
        if (iVar11 <= iVar6) {
          iVar11 = iVar6;
        }
        *(int *)(iVar12 + 0x14) = iVar11;
        if (local_c != 0) {
          fVar17 = (float10)*(int *)(iVar10 + 0x14 + *(int *)(param_1_00 + 0xdc));
          iVar6 = *(int *)(iVar10 + *(int *)(param_1_00 + 0xdc) + 0xc);
          fVar18 = (float10)(int)local_10 * ((float10)iVar6 / (float10)local_c) + fVar16;
          if (fVar18 < fVar17 == (NAN(fVar18) || NAN(fVar17))) {
            local_c = local_c - iVar6;
          }
          else {
            iVar7 = FUN_00a49750();
            local_c = local_c + (iVar7 - iVar6);
            fVar16 = extraout_ST0_00;
          }
        }
        local_10 = (int *)((int)local_10 - *(int *)(iVar10 + 0x14 + *(int *)(param_1_00 + 0xdc)));
      }
      iVar10 = iVar10 + 0x1c;
      bVar4 = iVar14 < *(int *)(param_1_00 + 0xd4);
      iVar14 = iVar14 + 1;
    } while (bVar4);
  }
  iVar14 = *(int *)(param_1_00 + 0xe4) + *(int *)(param_1_00 + 0xa0);
  iVar10 = 0;
  if (0 < *(int *)(param_1_00 + 0xd4)) {
    iVar6 = *(int *)(param_1_00 + 0xdc);
    iVar7 = 0;
    do {
      *(int *)(iVar6 + 0x10 + iVar7) = iVar14;
      iVar6 = *(int *)(param_1_00 + 0xdc);
      iVar10 = iVar10 + 1;
      iVar14 = iVar14 + *(int *)(iVar6 + 0x14 + iVar7) + *(int *)(param_1_00 + 0xe4);
      iVar7 = iVar7 + 0x1c;
    } while (iVar10 < *(int *)(param_1_00 + 0xd4));
  }
  if (0 < *(int *)(param_1_00 + 0xd4)) {
    if (iVar14 < *(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xa0)) {
      piVar15 = (int *)(*(int *)(param_1_00 + 0xdc) + -8 + *(int *)(param_1_00 + 0xd4) * 0x1c);
      *piVar15 = *piVar15 + ((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xa0)) - iVar14);
    }
  }
  lVar5 = (ulonglong)(*(int *)(param_1_00 + 0xd8) + 1) * 4;
  piVar15 = (int *)FUN_00823c23(-(uint)((int)((ulonglong)lVar5 >> 0x20) != 0) | (uint)lVar5);
  *piVar15 = *(int *)(param_1_00 + 0xe4) + *(int *)(param_1_00 + 0xa0);
  iVar14 = 1;
  if (0 < *(int *)(param_1_00 + 0xd8)) {
    do {
      piVar15[iVar14] = -1;
      iVar14 = iVar14 + 1;
    } while (iVar14 <= *(int *)(param_1_00 + 0xd8));
  }
  iVar14 = 0;
  piVar8 = piVar15;
  if (0 < *(int *)(param_1_00 + 0xd8)) {
    do {
      if (*piVar8 == -1) {
        *piVar8 = piVar8[-1];
      }
      param_1 = (int *)0x0;
      if (0 < *(int *)(param_1_00 + 0xd4)) {
        iVar10 = 0;
        do {
          iVar6 = *(int *)(*(int *)(param_1_00 + 0xe0) + iVar14 * 4);
          ppiVar1 = (int **)(iVar6 + iVar10);
          if (*(int *)(iVar6 + 0x14 + iVar10) == 1) {
            piVar13 = *ppiVar1;
            iVar6 = 0;
            if ((int)param_1 < (int)ppiVar1[1] + (int)param_1) {
              iVar7 = *(int *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar14 * 4) + 4 + iVar10);
              piVar9 = (int *)(*(int *)(param_1_00 + 0xdc) + 0x14 + iVar10);
              do {
                iVar6 = iVar6 + *piVar9;
                piVar9 = piVar9 + 7;
                iVar7 = iVar7 + -1;
              } while (iVar7 != 0);
            }
            iVar7 = *(int *)(*(int *)(param_1_00 + 0xe0) + iVar14 * 4) + iVar10;
            iVar11 = *(int *)(iVar7 + 4);
            iVar12 = *(int *)(param_1_00 + 0xe4);
            iVar2 = *(int *)(iVar7 + 0xc);
            piVar13[0x1b] = *(int *)(iVar7 + 0x10);
            piVar13[0x1a] = iVar2;
            pcVar3 = *(code **)(*piVar13 + 0x24);
            piVar13[0x33] = -1;
            (*pcVar3)(iVar6 + (iVar11 + -1) * iVar12);
            iVar6 = *(int *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar14 * 4) + 8 + iVar10);
            if (piVar15[iVar6 + iVar14] < iVar6 * *(int *)(param_1_00 + 0xe4) + piVar13[5] + *piVar8
               ) {
              iVar6 = *(int *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar14 * 4) + 8 + iVar10);
              piVar15[iVar6 + iVar14] = iVar6 * *(int *)(param_1_00 + 0xe4) + piVar13[5] + *piVar8;
            }
          }
          param_1 = (int *)((int)param_1 + 1);
          iVar10 = iVar10 + 0x1c;
        } while ((int)param_1 < *(int *)(param_1_00 + 0xd4));
      }
      iVar14 = iVar14 + 1;
      local_10 = piVar8 + 1;
      piVar8 = local_10;
    } while (iVar14 < *(int *)(param_1_00 + 0xd8));
  }
  iVar14 = 0;
  if (0 < *(int *)(param_1_00 + 0xd8)) {
    do {
      param_1 = (int *)0x0;
      if (0 < *(int *)(param_1_00 + 0xd4)) {
        iVar10 = 0;
        do {
          iVar6 = *(int *)(*(int *)(param_1_00 + 0xe0) + iVar14 * 4);
          if (*(int *)(iVar6 + 0x14 + iVar10) == 1) {
            iVar7 = *(int *)(iVar6 + 0x10 + iVar10);
            piVar8 = *(int **)(iVar6 + iVar10);
            piVar8[0x1a] = (piVar15[*(int *)(iVar6 + iVar10 + 8) + iVar14] -
                           *(int *)(param_1_00 + 0xe4)) - piVar15[iVar14];
            piVar8[0x1b] = iVar7;
            piVar8[0x33] = -1;
            iVar6 = *(int *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar14 * 4) + 4 + iVar10);
            iVar7 = 0;
            if ((int)param_1 < iVar6 + (int)param_1) {
              iVar11 = *(int *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar14 * 4) + 4 + iVar10);
              piVar13 = (int *)(*(int *)(param_1_00 + 0xdc) + 0x14 + iVar10);
              do {
                iVar7 = iVar7 + *piVar13;
                piVar13 = piVar13 + 7;
                iVar11 = iVar11 + -1;
              } while (iVar11 != 0);
            }
            (**(code **)(*piVar8 + 0x24))((iVar6 + -1) * *(int *)(param_1_00 + 0xe4) + iVar7);
            (**(code **)(*piVar8 + 0x20))
                      (*(undefined4 *)(*(int *)(param_1_00 + 0xdc) + 0x10 + iVar10),local_10[iVar14]
                      );
          }
          param_1 = (int *)((int)param_1 + 1);
          iVar10 = iVar10 + 0x1c;
        } while ((int)param_1 < *(int *)(param_1_00 + 0xd4));
      }
      iVar14 = iVar14 + 1;
    } while (iVar14 < *(int *)(param_1_00 + 0xd8));
  }
  *(int *)(param_1_00 + 0x14) = piVar15[*(int *)(param_1_00 + 0xd8)] + *(int *)(param_1_00 + 0xa0);
  FUN_00a3f66c(piVar15);
  iVar14 = *(int *)(param_1_00 + 0xd4);
  if ((0 < iVar14) &&
     (iVar14 = *(int *)(*(int *)(param_1_00 + 0xdc) + -0xc + iVar14 * 0x1c) +
               *(int *)(*(int *)(param_1_00 + 0xdc) + -8 + iVar14 * 0x1c) +
               *(int *)(param_1_00 + 0xe4) + *(int *)(param_1_00 + 0xa0),
     *(int *)(param_1_00 + 0x10) < iVar14)) {
    *(int *)(param_1_00 + 0x10) = iVar14;
  }
  return;
}



void __thiscall FUN_009fff00(int param_1_00,int param_1)

{
  *(undefined *)(param_1_00 + 0x88) = 1;
  if (param_1_00 + 0x8c != param_1) {
    FUN_0083ea60(param_1);
  }
  *(undefined4 *)(param_1_00 + 0x94) = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 0x98) = *(undefined *)(param_1 + 0xc);
  *(undefined *)(param_1_00 + 0x99) = *(undefined *)(param_1 + 0xd);
  *(undefined *)(param_1_00 + 0x9a) = *(undefined *)(param_1 + 0xe);
  *(undefined *)(param_1_00 + 0x9b) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x9c) = *(undefined *)(param_1 + 0x10);
  return;
}



void __thiscall FUN_009fff50(int param_1_00,int param_1,int param_2,undefined4 param_3)

{
  *(undefined4 *)(param_1_00 + 0xa0) = param_3;
  if (param_1_00 + 0xa4 != param_1) {
    FUN_0083ea60(param_1);
  }
  *(undefined4 *)(param_1_00 + 0xac) = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 0xb0) = *(undefined *)(param_1 + 0xc);
  *(undefined *)(param_1_00 + 0xb1) = *(undefined *)(param_1 + 0xd);
  *(undefined *)(param_1_00 + 0xb2) = *(undefined *)(param_1 + 0xe);
  *(undefined *)(param_1_00 + 0xb3) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 0xb4) = *(undefined *)(param_1 + 0x10);
  if (param_1_00 + 0xb8 != param_2) {
    FUN_0083ea60(param_2);
  }
  *(undefined4 *)(param_1_00 + 0xc0) = *(undefined4 *)(param_2 + 8);
  *(undefined *)(param_1_00 + 0xc4) = *(undefined *)(param_2 + 0xc);
  *(undefined *)(param_1_00 + 0xc5) = *(undefined *)(param_2 + 0xd);
  *(undefined *)(param_1_00 + 0xc6) = *(undefined *)(param_2 + 0xe);
  *(undefined *)(param_1_00 + 199) = *(undefined *)(param_2 + 0xf);
  *(undefined *)(param_1_00 + 200) = *(undefined *)(param_2 + 0x10);
  return;
}



undefined4 * FUN_009ffff0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHTML_ModuleTables::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __fastcall FUN_00a00050(undefined4 *param_1)

{
  uint uVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bec586;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxHtmlTableCell::vftable;
  local_4 = 1;
  if ((void *)param_1[0x37] != (void *)0x0) {
    _free((void *)param_1[0x37]);
  }
  if (param_1[0x38] != 0) {
    iVar2 = 0;
    if (0 < (int)param_1[0x36]) {
      do {
        _free(*(void **)(param_1[0x38] + iVar2 * 4));
        iVar2 = iVar2 + 1;
      } while (iVar2 < (int)param_1[0x36]);
    }
    _free((void *)param_1[0x38]);
  }
  _free((void *)param_1[0x57]);
  if ((uint)param_1[0x56] < 8) {
    param_1[0x56] = 7;
    param_1[0x55] = 0;
    *(undefined2 *)(param_1 + 0x51) = 0;
    _free((void *)param_1[0x4e]);
    if ((uint)param_1[0x4d] < 8) {
      param_1[0x4d] = 7;
      param_1[0x4c] = 0;
      *(undefined2 *)(param_1 + 0x48) = 0;
      param_1[0x42] = wxObject::vftable;
      FUN_0083e850(uVar1);
      local_4 = local_4 & 0xffffff00;
      param_1[0x3d] = wxObject::vftable;
      FUN_0083e850();
      local_4 = 0xffffffff;
      FUN_009f6ba0();
      ExceptionList = local_c;
      return;
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x48]);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[0x51]);
}



undefined4 __thiscall FUN_00a001b0(undefined4 param_1_00,byte param_1)

{
  FUN_00a00050();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a001d0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined8 param_3)

{
  int *piVar1;
  undefined4 *puVar2;
  short sVar3;
  char cVar4;
  uint uVar5;
  undefined4 *puVar6;
  short *psVar7;
  undefined4 uVar8;
  int iVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  undefined **ppuStack_54;
  undefined4 uStack_50;
  uint uStack_3c;
  void *pvStack_38;
  undefined **local_30;
  uint local_2c;
  undefined4 uStack_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bec660;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  FUN_009f6a80(param_1);
  piVar1 = param_1_00 + 0x3d;
  local_4 = 0;
  *param_1_00 = wxHtmlTableCell::vftable;
  FUN_00453f4b(uVar5);
  local_4._0_1_ = 1;
  FUN_00453f4b();
  param_1_00[0x4d] = 7;
  param_1_00[0x4c] = 0;
  *(undefined2 *)(param_1_00 + 0x48) = 0;
  param_1_00[0x4e] = 0;
  param_1_00[0x56] = 7;
  param_1_00[0x55] = 0;
  *(undefined2 *)(param_1_00 + 0x51) = 0;
  param_1_00[0x57] = 0;
  *(undefined8 *)(param_1_00 + 0x5a) = param_3;
  local_4._0_1_ = 4;
  param_1_00[0x37] = 0;
  param_1_00[0x36] = 0;
  param_1_00[0x35] = 0;
  param_1_00[0x38] = 0;
  param_1_00[0x3c] = 0xffffffff;
  param_1_00[0x3b] = 0xffffffff;
  FUN_004325b6(L"BGCOLOR");
  local_4._0_1_ = 5;
  cVar4 = FUN_00a07740(&local_30);
  local_4._0_1_ = 4;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (cVar4 != '\0') {
    FUN_004325b6(L"BGCOLOR");
    local_4._0_1_ = 6;
    FUN_00a099b0(&local_30,piVar1);
    local_4._0_1_ = 4;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    cVar4 = (**(code **)(*piVar1 + 0x24))();
    if (cVar4 != '\0') {
      FUN_009fff00(piVar1);
    }
  }
  FUN_004325b6(L"VALIGN");
  local_4._0_1_ = 7;
  cVar4 = FUN_00a07740(&local_30);
  local_4._0_1_ = 4;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (cVar4 == '\0') {
    if (PTR_DAT_03236318 == (undefined *)0x0) {
      FUN_00432156();
    }
    else {
      psVar7 = (short *)PTR_DAT_03236318;
      do {
        sVar3 = *psVar7;
        psVar7 = psVar7 + 1;
      } while (sVar3 != 0);
      FID_conflict_assign(PTR_DAT_03236318,(int)psVar7 - (int)(PTR_DAT_03236318 + 2) >> 1);
    }
  }
  else {
    FUN_004325b6(L"VALIGN");
    local_4._0_1_ = 8;
    puVar6 = (undefined4 *)FUN_00a09860(&local_30,&ppuStack_54,0);
    local_4._0_1_ = 9;
    if (param_1_00 + 0x47 != puVar6) {
      FID_conflict_assign(puVar6,0,0xffffffff);
    }
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    uStack_1c = 0;
    local_2c = local_2c & 0xffff0000;
    local_4._0_1_ = 4;
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
  }
  FUN_004325b6(L"CELLSPACING");
  puVar6 = param_1_00 + 0x39;
  local_4._0_1_ = 10;
  cVar4 = FUN_00a09a60(&local_30,puVar6);
  local_4._0_1_ = 4;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (cVar4 == '\0') {
    *puVar6 = 2;
  }
  FUN_004325b6(L"CELLPADDING");
  puVar2 = param_1_00 + 0x3a;
  local_4._0_1_ = 0xb;
  cVar4 = FUN_00a09a60(&local_30,puVar2);
  local_4._0_1_ = 4;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (cVar4 == '\0') {
    *puVar2 = 3;
  }
  uVar8 = FUN_00a49750();
  *puVar6 = uVar8;
  uVar8 = FUN_00a49750();
  *puVar2 = uVar8;
  FUN_004325b6(L"BORDER");
  local_4._0_1_ = 0xc;
  cVar4 = FUN_00a07740(&local_30);
  local_4._0_1_ = 4;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  if (cVar4 != '\0') {
    FUN_0043c211("BORDER");
    local_4._0_1_ = 0xd;
    iVar9 = FUN_00a09860(&local_30,&ppuStack_54,0);
    iVar9 = *(int *)(iVar9 + 0x14);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    uStack_1c = 0;
    local_2c = local_2c & 0xffff0000;
    local_4._0_1_ = 4;
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    if (iVar9 == 0) {
      param_1_00[0x28] = 1;
    }
    else {
      FUN_004325b6(L"BORDER");
      local_4._0_1_ = 0xe;
      FUN_00a09a60(&local_30,param_1_00 + 0x28);
      local_4._0_1_ = 4;
      _free(local_14);
      if (7 < local_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_2c);
      }
    }
  }
  if (param_1_00[0x28] == 1) {
    uVar8 = FUN_004561e7(0x62,0x61,0x62,0xff);
    local_4._0_1_ = 0xf;
    uVar10 = FUN_004561e7(0xc5,0xc2,0xc5,0xff);
    local_4._0_1_ = 0x10;
    FUN_009fff50(uVar10,uVar8,param_1_00[0x28]);
    local_4._0_1_ = 0xf;
    ppuStack_54 = wxObject::vftable;
    FUN_0083e850();
    local_4 = CONCAT31(local_4._1_3_,4);
    local_30 = wxObject::vftable;
    FUN_0083e850();
  }
  else if ((int)param_1_00[0x28] < 1) {
    param_1_00[0x28] = 0;
  }
  else {
    uVar8 = FUN_004561e7(0x62,0x61,0x62,0xff);
    local_4._0_1_ = 0x11;
    uVar10 = FUN_004561e7(0xc5,0xc2,0xc5,0xff);
    local_4._0_1_ = 0x12;
    uVar11 = FUN_00a49750();
    FUN_009fff50(uVar10,uVar8,uVar11);
    local_4._0_1_ = 0x11;
    local_30 = wxObject::vftable;
    FUN_0083e850();
    local_4 = CONCAT31(local_4._1_3_,4);
    ppuStack_54 = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00a007c0(int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined local_78 [4];
  uint local_74;
  undefined4 local_64;
  uint local_60;
  void *local_5c;
  undefined local_54 [4];
  undefined4 local_50;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bec6a8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff78;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0xec) = 0xffffffff;
  if (param_1 + 0x108 != param_1 + 0xf4) {
    FUN_0083ea60(param_1 + 0xf4);
  }
  *(undefined4 *)(param_1 + 0x110) = *(undefined4 *)(param_1 + 0xfc);
  *(undefined *)(param_1 + 0x114) = *(undefined *)(param_1 + 0x100);
  *(undefined *)(param_1 + 0x115) = *(undefined *)(param_1 + 0x101);
  *(undefined *)(param_1 + 0x116) = *(undefined *)(param_1 + 0x102);
  *(undefined *)(param_1 + 0x117) = *(undefined *)(param_1 + 0x103);
  *(undefined *)(param_1 + 0x118) = *(undefined *)(param_1 + 0x104);
  FUN_004325b6(L"BGCOLOR");
  local_4 = 0;
  cVar1 = FUN_00a07740(local_54);
  local_4 = 0xffffffff;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50,uVar2);
  }
  if (cVar1 != '\0') {
    FUN_004325b6(L"BGCOLOR");
    local_4 = 1;
    FUN_00a099b0(local_54,param_1 + 0x108);
    local_4 = 0xffffffff;
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
  }
  FUN_004325b6(L"VALIGN");
  local_4 = 2;
  cVar1 = FUN_00a07740(local_54);
  local_4 = 0xffffffff;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  if (cVar1 == '\0') {
    if (param_1 + 0x140 != param_1 + 0x11c) {
      FID_conflict_assign(param_1 + 0x11c,0,0xffffffff);
    }
  }
  else {
    FUN_004325b6(L"VALIGN");
    local_4 = 3;
    iVar3 = FUN_00a09860(local_78,local_30,0);
    local_4 = CONCAT31(local_4._1_3_,4);
    if (param_1 + 0x140 != iVar3) {
      FID_conflict_assign(iVar3,0,0xffffffff);
    }
    _free(local_5c);
    if (7 < local_60) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_74);
    }
    local_60 = 7;
    local_64 = 0;
    local_74 = local_74 & 0xffff0000;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a00a20(int param_1_00,int param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  wchar_t *pwVar3;
  char cVar4;
  int *piVar5;
  undefined4 uVar6;
  int iVar7;
  int iVar8;
  undefined ***pppuVar9;
  wchar_t *pwVar10;
  int iVar11;
  undefined4 uStack_a8;
  undefined4 local_a4;
  int local_a0;
  undefined **local_9c;
  int local_98;
  undefined4 local_94;
  char local_90;
  undefined local_8f;
  undefined local_8e;
  undefined local_8d;
  undefined local_8c;
  int local_88;
  short *local_84;
  undefined local_80 [4];
  undefined4 local_7c;
  undefined4 local_6c;
  uint local_68;
  void *local_64;
  int local_5c;
  undefined **local_58;
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  undefined4 uStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bec76c;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&uStack_a8;
  ExceptionList = &local_c;
  local_a0 = param_1;
  local_a4 = param_2;
  if (*(int *)(param_1_00 + 0xec) == -1) {
    if (*(int *)(param_1_00 + 0xd8) + -1 < *(int *)(param_1_00 + 0xf0) + 1) {
      FUN_009ff4d0(*(int *)(param_1_00 + 0xf0) + 2);
    }
    *(int *)(param_1_00 + 0xf0) = *(int *)(param_1_00 + 0xf0) + 1;
  }
  do {
    *(int *)(param_1_00 + 0xec) = *(int *)(param_1_00 + 0xec) + 1;
    iVar8 = *(int *)(param_1_00 + 0xec);
    if (*(int *)(param_1_00 + 0xd4) <= iVar8) break;
  } while (*(int *)(*(int *)(*(int *)(param_1_00 + 0xe0) + *(int *)(param_1_00 + 0xf0) * 4) + 0x14 +
                   iVar8 * 0x1c) != 2);
  if (*(int *)(param_1_00 + 0xd4) + -1 < iVar8) {
    FUN_009ff3c0(iVar8 + 1);
  }
  iVar8 = *(int *)(param_1_00 + 0xec);
  iVar1 = *(int *)(param_1_00 + 0xf0);
  iVar2 = iVar8 * 0x1c;
  *(int *)(iVar2 + *(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4)) = local_a0;
  *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 4 + iVar2) = 1;
  *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 8 + iVar2) = 1;
  *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 0x14 + iVar2) = 1;
  *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 0xc + iVar2) = 0;
  *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 0x10 + iVar2) = 4;
  local_5c = iVar8;
  FUN_004325b6(L"WIDTH");
  local_4 = 0;
  cVar4 = FUN_00a07740(local_34);
  local_4 = 0xffffffff;
  uStack_a8._3_1_ = cVar4;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  if (uStack_a8._3_1_ != '\0') {
    FUN_004325b6(L"WIDTH");
    local_4 = 1;
    FUN_00a09860(local_34,&local_58,0);
    local_4 = CONCAT31(local_4._1_3_,3);
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
    local_54 = local_54 & 0xffff0000;
    local_40 = 7;
    local_44 = 0;
    piVar5 = (int *)FUN_0081b542(&local_9c,local_20 + -1);
    local_88 = *piVar5;
    local_84 = (short *)piVar5[1];
    if (local_88 != -4) {
      if (local_88 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(local_88 + 0x18) < 8) {
        iVar7 = local_88 + 4;
      }
      else {
        iVar7 = *(int *)(local_88 + 4);
      }
      if ((short *)(iVar7 + *(int *)(local_88 + 0x14) * 2) <= local_84) {
        FUN_00a3fb10();
      }
    }
    if (*local_84 == 0x25) {
      uVar6 = FUN_00432231(&local_9c);
      local_4 = CONCAT31(local_4._1_3_,4);
      iVar7 = FUN_008d4170(uVar6,L"%i%%",*(int *)(param_1_00 + 0xdc) + iVar2);
      uStack_a8._3_1_ = iVar7 == 1;
      FUN_00432214();
      if (uStack_a8._3_1_ != '\0') {
        *(undefined4 *)(iVar2 + 4 + *(int *)(param_1_00 + 0xdc)) = 2;
      }
    }
    else {
      cVar4 = FUN_00850950(&local_88,10);
      if (cVar4 != '\0') {
        uVar6 = FUN_00a49750();
        *(undefined4 *)(iVar2 + *(int *)(param_1_00 + 0xdc)) = uVar6;
        *(undefined4 *)(iVar2 + 4 + *(int *)(param_1_00 + 0xdc)) = 1;
      }
    }
    local_4 = 0xffffffff;
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
  FUN_004325b6(L"COLSPAN");
  local_4 = 5;
  FUN_00a09a60(local_34,*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 4 + iVar2);
  local_4 = 0xffffffff;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  FUN_004325b6(L"ROWSPAN");
  local_4 = 6;
  FUN_00a09a60(local_34,*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 8 + iVar2);
  _free(local_18);
  if (local_1c < 8) {
    piVar5 = (int *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 4 + iVar2);
    if (*piVar5 < 1) {
      *piVar5 = 1;
    }
    iVar7 = *(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4);
    if (*(int *)(iVar7 + 8 + iVar2) < 1) {
      *(undefined4 *)(iVar7 + 8 + iVar2) = 1;
    }
    iVar7 = *(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + iVar2;
    if ((1 < *(int *)(iVar7 + 4)) || (1 < *(int *)(iVar7 + 8))) {
      iVar7 = *(int *)(iVar7 + 8) + iVar1;
      if (*(int *)(param_1_00 + 0xd8) < iVar7) {
        FUN_009ff4d0(iVar7);
      }
      iVar7 = *(int *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 4 + iVar2) + iVar8;
      if (*(int *)(param_1_00 + 0xd4) < iVar7) {
        FUN_009ff3c0(iVar7);
      }
      local_88 = iVar1;
      if (iVar1 < *(int *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 8 + iVar2) + iVar1) {
        do {
          iVar7 = iVar2;
          iVar11 = iVar8;
          if (iVar8 < *(int *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 4 + iVar2) +
                      iVar8) {
            do {
              *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0xe0) + local_88 * 4) + 0x14 + iVar7) =
                   0;
              iVar8 = iVar8 + 1;
              iVar7 = iVar7 + 0x1c;
              iVar11 = local_5c;
            } while (iVar8 < *(int *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 4 + iVar2)
                             + local_5c);
          }
          local_88 = local_88 + 1;
          iVar8 = iVar11;
        } while (local_88 <
                 *(int *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 8 + iVar2) + iVar1);
      }
      *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 0x14 + iVar2) = 1;
    }
    local_98 = *(int *)(param_1_00 + 0x10c);
    if (local_98 != 0) {
      *(int *)(local_98 + 4) = *(int *)(local_98 + 4) + 1;
    }
    local_90 = *(char *)(param_1_00 + 0x114);
    local_8f = *(undefined *)(param_1_00 + 0x115);
    local_94 = *(undefined4 *)(param_1_00 + 0x110);
    local_8d = *(undefined *)(param_1_00 + 0x117);
    local_8c = *(undefined *)(param_1_00 + 0x118);
    local_8e = *(undefined *)(param_1_00 + 0x116);
    local_9c = wxColour::vftable;
    local_4 = 7;
    local_68 = 7;
    local_6c = 0;
    local_7c = (uint)local_7c._2_2_ << 0x10;
    pwVar3 = L"BGCOLOR";
    do {
      pwVar10 = pwVar3;
      pwVar3 = pwVar10 + 1;
    } while (*pwVar10 != L'\0');
    FID_conflict_assign(L"BGCOLOR",(int)(pwVar10 + -0x6cc616) >> 1);
    local_64 = (void *)0x0;
    local_4._0_1_ = 8;
    uStack_a8._3_1_ = FUN_00a07740(local_80);
    local_4._0_1_ = 7;
    _free(local_64);
    if (7 < local_68) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_7c);
    }
    if (uStack_a8._3_1_ != '\0') {
      local_7c = local_7c & 0xffff0000;
      local_68 = 7;
      local_6c = 0;
      pwVar3 = L"BGCOLOR";
      do {
        pwVar10 = pwVar3;
        pwVar3 = pwVar10 + 1;
      } while (*pwVar10 != L'\0');
      FID_conflict_assign(L"BGCOLOR",(int)(pwVar10 + -0x6cc616) >> 1);
      local_64 = (void *)0x0;
      local_4._0_1_ = 9;
      FUN_00a099b0(local_80,&local_9c);
      local_4._0_1_ = 7;
      _free(local_64);
      if (7 < local_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_7c);
      }
    }
    if (local_90 != '\0') {
      *(undefined *)(local_a0 + 0x88) = 1;
      if ((undefined ***)(local_a0 + 0x8c) != &local_9c) {
        FUN_0083ea60(&local_9c);
      }
      *(undefined4 *)(local_a0 + 0x94) = local_94;
      *(char *)(local_a0 + 0x98) = local_90;
      *(undefined *)(local_a0 + 0x99) = local_8f;
      *(undefined *)(local_a0 + 0x9a) = local_8e;
      *(undefined *)(local_a0 + 0x9b) = local_8d;
      *(undefined *)(local_a0 + 0x9c) = local_8c;
    }
    local_4 = 0xffffffff;
    local_9c = wxObject::vftable;
    FUN_0083e850();
    if (0 < *(int *)(param_1_00 + 0xa0)) {
      local_54 = 0;
      local_4 = 10;
      local_58 = wxColour::vftable;
      FUN_0093b2c0();
      (*(code *)local_58[10])(0xc5,0xc2,0xc5,0xff);
      uStack_a8._0_3_ = 0;
      uStack_a8._3_1_ = '\0';
      uStack_14 = 0xc;
      FUN_0093b2c0();
      FUN_0093b2e0(0x62,0x61,0x62,0xff);
      local_4._0_1_ = 0xd;
      FUN_009fff50(&local_9c,&local_58,1);
      local_4 = CONCAT31(local_4._1_3_,0xb);
      local_9c = wxObject::vftable;
      FUN_0083e850();
      local_4 = 0xffffffff;
      local_58 = wxObject::vftable;
      FUN_0083e850();
    }
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    local_3c = (void *)0x0;
    local_68 = 7;
    local_7c = local_7c & 0xffff0000;
    local_4 = 0xe;
    local_6c = 0;
    pwVar3 = L"VALIGN";
    do {
      pwVar10 = pwVar3;
      pwVar3 = pwVar10 + 1;
    } while (*pwVar10 != L'\0');
    FID_conflict_assign(L"VALIGN",(int)(pwVar10 + -0x6ccb8a) >> 1);
    local_64 = (void *)0x0;
    local_4._0_1_ = 0xf;
    uStack_a8._3_1_ = FUN_00a07740(local_80);
    local_4._0_1_ = 0xe;
    _free(local_64);
    if (local_68 < 8) {
      if (uStack_a8._3_1_ == '\0') {
        if (&local_58 != (undefined ***)(param_1_00 + 0x11c)) {
          FID_conflict_assign((undefined ***)(param_1_00 + 0x11c),0,0xffffffff);
        }
      }
      else {
        local_68 = 7;
        local_6c = 0;
        local_7c = local_7c & 0xffff0000;
        pwVar3 = L"VALIGN";
        do {
          pwVar10 = pwVar3;
          pwVar3 = pwVar10 + 1;
        } while (*pwVar10 != L'\0');
        FID_conflict_assign(L"VALIGN",(int)(pwVar10 + -0x6ccb8a) >> 1);
        local_64 = (void *)0x0;
        local_4._0_1_ = 0x10;
        pppuVar9 = (undefined ***)FUN_00a09860(local_34,local_80,0);
        local_4._0_1_ = 0x11;
        if (&local_58 != pppuVar9) {
          FID_conflict_assign(pppuVar9,0,0xffffffff);
        }
        _free(local_18);
        if (7 < local_1c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_30);
        }
        local_1c = 7;
        local_20 = 0;
        local_30 = local_30 & 0xffff0000;
        local_4._0_1_ = 0xe;
        _free(local_64);
        if (7 < local_68) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_7c);
        }
      }
      FUN_00850fc0();
      iVar8 = FUN_008507a0(&DAT_00d99744);
      if (iVar8 == 0) {
        *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 0x10 + iVar2) = 4;
      }
      else {
        iVar8 = FUN_008507a0(L"BOTTOM");
        if (iVar8 == 0) {
          *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 0x10 + iVar2) = 8;
        }
        else {
          *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 0x10 + iVar2) = 1;
        }
      }
      local_4 = 0xffffffff;
      _free(local_3c);
      if (local_40 < 8) {
        local_68 = 7;
        local_6c = 0;
        local_7c = local_7c & 0xffff0000;
        pwVar3 = L"NOWRAP";
        do {
          pwVar10 = pwVar3;
          pwVar3 = pwVar10 + 1;
        } while (*pwVar10 != L'\0');
        FID_conflict_assign(L"NOWRAP",(int)(pwVar10 + -0x6ccb92) >> 1);
        local_64 = (void *)0x0;
        local_4 = 0x12;
        uStack_a8._3_1_ = FUN_00a07740(local_80);
        local_4 = 0xffffffff;
        _free(local_64);
        if (local_68 < 8) {
          local_68 = 7;
          local_6c = 0;
          local_7c = local_7c & 0xffff0000;
          if (uStack_a8._3_1_ == '\0') {
            *(undefined *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 0x18 + iVar2) = 0;
          }
          else {
            *(undefined *)(*(int *)(*(int *)(param_1_00 + 0xe0) + iVar1 * 4) + 0x18 + iVar2) = 1;
          }
          FUN_009f5130(*(undefined4 *)(param_1_00 + 0xe8),0xf0,1);
          ExceptionList = local_c;
          ___security_check_cookie_4();
          return;
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_7c);
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_54);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_7c);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_30);
}



undefined4 * __fastcall FUN_00a015a0(undefined4 *param_1)

{
  short sVar1;
  uint uVar2;
  short *psVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bec7be;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  param_1[1] = 0;
  param_1[2] = 0;
  *param_1 = wxHTML_Handler_TABLE::vftable;
  param_1[0xb] = 7;
  param_1[10] = 0;
  *(undefined2 *)(param_1 + 6) = 0;
  param_1[0xc] = 0;
  param_1[0x14] = 7;
  param_1[0x13] = 0;
  *(undefined2 *)(param_1 + 0xf) = 0;
  param_1[0x15] = 0;
  param_1[4] = 0;
  param_1[0x17] = 0;
  local_4 = 2;
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    FUN_00432156(uVar2);
  }
  else {
    psVar3 = (short *)PTR_DAT_03236318;
    do {
      sVar1 = *psVar3;
      psVar3 = psVar3 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(PTR_DAT_03236318,(int)psVar3 - (int)(PTR_DAT_03236318 + 2) >> 1);
  }
  if (param_1 + 5 != param_1 + 0xe) {
    FID_conflict_assign(param_1 + 0xe,0,0xffffffff);
  }
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00a01670(undefined4 *param_1)

{
  _free((void *)param_1[0x15]);
  if (7 < (uint)param_1[0x14]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xf]);
  }
  param_1[0x14] = 7;
  param_1[0x13] = 0;
  *(undefined2 *)(param_1 + 0xf) = 0;
  _free((void *)param_1[0xc]);
  if (7 < (uint)param_1[0xb]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[6]);
  }
  param_1[0xb] = 7;
  param_1[10] = 0;
  *(undefined2 *)(param_1 + 6) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



undefined4 __thiscall FUN_00a016f0(undefined4 param_1_00,byte param_1)

{
  FUN_00a01670();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_00a01710(undefined4 param_1)

{
  FUN_004325b6(0xd9978c);
  return param_1;
}



void __thiscall FUN_00a01740(int param_1_00,int param_1)

{
  short sVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  short *psVar7;
  undefined *puVar8;
  undefined auStack_ec [3];
  char local_e9;
  void *local_e8;
  undefined4 local_e4;
  void *local_e0;
  undefined local_dc [24];
  uint local_c4;
  void *local_c0;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 local_ac;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined local_a0 [36];
  undefined local_7c [36];
  undefined local_58 [4];
  uint local_54;
  int local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  undefined2 local_30;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bec8cc;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_ec;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff04;
  ExceptionList = &local_c;
  FUN_008560c0();
  local_4 = 0;
  iVar4 = FUN_008507a0();
  local_4._0_1_ = 0xff;
  local_4._1_3_ = 0xffffff;
  _free(local_c0);
  if (7 < local_c4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  if (iVar4 == 0) {
    local_e0 = *(void **)(param_1_00 + 0x5c);
    local_ac = *(undefined4 *)(param_1_00 + 0x10);
    uVar5 = FUN_00a02c90(uVar3);
    *(undefined4 *)(param_1_00 + 0x5c) = uVar5;
    local_e8 = operator_new(0x170);
    local_4 = 1;
    if (local_e8 == (void *)0x0) {
      uVar5 = 0;
    }
    else {
      uVar5 = FUN_00a001d0(uVar5,param_1,*(undefined8 *)(*(int *)(param_1_00 + 0xc) + 0x68));
    }
    local_4 = 0xffffffff;
    *(undefined4 *)(param_1_00 + 0x10) = uVar5;
    FUN_004325b6();
    local_4 = 2;
    cVar2 = FUN_00a07740();
    local_4 = 0xffffffff;
    _free(local_3c);
    if (7 < local_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (cVar2 == '\0') {
      iVar4 = *(int *)(param_1_00 + 0x10);
      *(undefined4 *)(iVar4 + 0x80) = 0;
      *(undefined4 *)(iVar4 + 0x84) = 1;
      *(undefined4 *)(iVar4 + 0xcc) = 0xffffffff;
    }
    else {
      FUN_004325b6();
      local_4 = 3;
      FUN_00a09860(local_58,local_dc,0);
      _free(local_c0);
      if (7 < local_c4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      puVar6 = (undefined4 *)FUN_0081b542(&local_b8,local_44 + -1);
      local_e8 = (void *)*puVar6;
      local_e4 = puVar6[1];
      cVar2 = FUN_00820040();
      local_e8 = (void *)0x0;
      if (cVar2 == '\0') {
        uVar5 = FUN_00432231();
        local_4 = CONCAT31(local_4._1_3_,7);
        FUN_008d4170(uVar5,&DAT_00d98870);
        FUN_00432214();
        uVar5 = FUN_00a49750();
        iVar4 = *(int *)(param_1_00 + 0x10);
        *(undefined4 *)(iVar4 + 0x80) = uVar5;
        *(undefined4 *)(iVar4 + 0x84) = 1;
        *(undefined4 *)(iVar4 + 0xcc) = 0xffffffff;
      }
      else {
        uVar5 = FUN_00432231();
        local_4 = CONCAT31(local_4._1_3_,6);
        FUN_008d4170(uVar5,L"%i%%");
        FUN_00432214();
        iVar4 = *(int *)(param_1_00 + 0x10);
        *(void **)(iVar4 + 0x80) = local_e8;
        *(undefined4 *)(iVar4 + 0x84) = 2;
        *(undefined4 *)(iVar4 + 0xcc) = 0xffffffff;
      }
      local_4 = 0xffffffff;
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    local_e8 = *(void **)(*(int *)(param_1_00 + 0xc) + 0x120);
    if (PTR_DAT_03236318 == (undefined *)0x0) {
      FUN_00432156();
    }
    else {
      psVar7 = (short *)PTR_DAT_03236318;
      do {
        sVar1 = *psVar7;
        psVar7 = psVar7 + 1;
      } while (sVar1 != 0);
      FID_conflict_assign(PTR_DAT_03236318,(int)psVar7 - (int)(PTR_DAT_03236318 + 2) >> 1);
    }
    FUN_004325b6();
    local_4 = 8;
    local_e9 = FUN_00a07740();
    local_4._0_1_ = 0xff;
    local_4._1_3_ = 0xffffff;
    _free(local_c0);
    if (7 < local_c4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (local_e9 != '\0') {
      FUN_004325b6();
      local_4 = 9;
      iVar4 = FUN_00a09860(local_58,local_dc,0);
      local_4 = CONCAT31(local_4._1_3_,10);
      if (param_1_00 + 0x14 != iVar4) {
        FID_conflict_assign(iVar4,0,0xffffffff);
      }
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      local_40 = 7;
      local_44 = 0;
      local_54 = local_54 & 0xffff0000;
      local_4._0_1_ = 0xff;
      local_4._1_3_ = 0xffffff;
      _free(local_c0);
      if (7 < local_c4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
    local_a4 = *(undefined4 *)(param_1 + 0x34);
    local_b8 = *(undefined4 *)(param_1 + 0x28);
    local_a8 = *(undefined4 *)(param_1 + 0x30);
    local_b4 = *(undefined4 *)(param_1 + 0x2c);
    FUN_00a070f0(&local_b8,&local_a8);
    *(void **)(*(int *)(param_1_00 + 0xc) + 0x120) = local_e8;
    FUN_00a02d20();
    FUN_00a02d30();
    *(void **)(param_1_00 + 0x5c) = local_e0;
    *(undefined4 *)(param_1_00 + 0x10) = local_ac;
  }
  else if (*(int *)(param_1_00 + 0x10) != 0) {
    FUN_008560c0();
    local_4 = 0xb;
    iVar4 = FUN_008507a0();
    local_4 = 0xffffffff;
    _free(local_c0);
    if (7 < local_c4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1();
    }
    if (iVar4 == 0) {
      FUN_00a007c0();
      if (param_1_00 + 0x38 != param_1_00 + 0x14) {
        FID_conflict_assign(param_1_00 + 0x14,0,0xffffffff);
      }
      FUN_004325b6();
      local_4 = 0xc;
      cVar2 = FUN_00a07740();
      local_4._0_1_ = 0xff;
      local_4._1_3_ = 0xffffff;
      FUN_0040159c();
      if (cVar2 != '\0') {
        FUN_004325b6();
        local_4 = 0xd;
        iVar4 = FUN_00a09860(local_58,local_dc,0);
        local_4._0_1_ = 0xe;
        if (param_1_00 + 0x38 != iVar4) {
          FID_conflict_assign(iVar4,0,0xffffffff);
        }
        FUN_0040159c();
        FUN_0040159c();
      }
    }
    else {
      local_e0 = operator_new(0xd4);
      local_4 = 0xf;
      if (local_e0 != (void *)0x0) {
        FUN_009f6a80();
      }
      local_4 = 0xffffffff;
      uVar5 = FUN_00a02d20();
      FUN_00a00a20(uVar5,param_1);
      FUN_00a02c90();
      FUN_008560c0();
      local_4 = 0x10;
      iVar4 = FUN_008507a0();
      local_e9 = iVar4 == 0;
      FUN_0040159c();
      local_1c = 7;
      local_20 = 0;
      local_30 = 0;
      local_18 = 0;
      local_4 = 0x11;
      FUN_004325b6();
      local_4._0_1_ = 0x12;
      cVar2 = FUN_00a07740();
      local_4._0_1_ = 0x11;
      FUN_0040159c();
      if (cVar2 == '\0') {
        if (local_34 != (undefined *)(param_1_00 + 0x38)) {
          FID_conflict_assign((undefined *)(param_1_00 + 0x38),0,0xffffffff);
        }
      }
      else {
        FUN_004325b6();
        local_4._0_1_ = 0x13;
        puVar8 = (undefined *)FUN_00a09860(local_7c,local_a0,0);
        local_4._0_1_ = 0x14;
        if (local_34 != puVar8) {
          FID_conflict_assign(puVar8,0,0xffffffff);
        }
        FUN_0040159c();
        local_4._0_1_ = 0x11;
        FUN_0040159c();
      }
      FUN_00850fc0();
      iVar4 = FUN_008507a0();
      if (iVar4 == 0) {
        *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x120) = 2;
      }
      else {
        iVar4 = FUN_008507a0();
        if (iVar4 == 0) {
          *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x120) = 0;
        }
        else {
          iVar4 = FUN_008507a0();
          if (iVar4 == 0) {
            *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x120) = 1;
          }
          else {
            *(uint *)(*(int *)(param_1_00 + 0xc) + 0x120) = (uint)(local_e9 != '\0');
          }
        }
      }
      FUN_00a02c90();
      uVar5 = 0;
      if (local_e9 != '\0') {
        uVar5 = *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x80);
        *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x80) = 1;
        local_e0 = operator_new(0x60);
        local_4._0_1_ = 0x15;
        if (local_e0 != (void *)0x0) {
          (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
          FUN_009f8330();
        }
        local_4._0_1_ = 0x11;
        FUN_009f52b0();
      }
      FUN_009f8000();
      if (local_e9 != '\0') {
        *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x80) = uVar5;
        local_e0 = operator_new(0x60);
        local_4._0_1_ = 0x16;
        if (local_e0 != (void *)0x0) {
          (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
          FUN_009f8330();
        }
        local_4._0_1_ = 0x11;
        FUN_009f52b0();
      }
      FUN_00a02d20();
      FUN_0040159c();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00a02000(int *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x60);
  local_4 = 0;
  if (local_10 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00a015a0(uVar1);
  }
  local_4 = 0xffffffff;
  (**(code **)(*param_1 + 0x24))(uVar2);
  ExceptionList = local_10;
  return;
}



undefined ** FUN_00a02070(void)

{
  return &PTR_u_wxHTML_ModuleSpans_0323e5e0;
}



undefined4 * __fastcall FUN_00a02080(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1[1] = 0;
  param_1[2] = 0;
  local_4 = 0;
  *param_1 = wxHTML_Handler_SPAN::vftable;
  FUN_00853ce0(0);
  ExceptionList = local_c;
  return param_1;
}



void FUN_00a020e0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bec908;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00853f30(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  FUN_00853f30();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00a02140(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bdca18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00853f30(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void FUN_00a021a0(int *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x20);
  local_4 = 0;
  if (local_10 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00a02080(uVar1);
  }
  local_4 = 0xffffffff;
  (**(code **)(*param_1 + 0x24))(uVar2);
  ExceptionList = local_10;
  return;
}



undefined4 __thiscall FUN_00a02210(undefined4 param_1_00,byte param_1)

{
  FUN_00a02140();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * FUN_00a02230(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHTML_ModuleSpans::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



int __thiscall FUN_00a02290(int param_1_00,int param_1,undefined4 param_2)

{
  uint uVar1;
  uint uVar2;
  undefined *puVar3;
  bool bVar4;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bec949;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  bVar4 = false;
  uVar2 = FUN_00853d10(param_2,0,0);
  if (uVar2 == 0xffffffff) {
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    local_14 = (void *)0x0;
    bVar4 = true;
    puVar3 = local_30;
    local_4 = 0;
  }
  else {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x14) <= uVar2)) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                   "nIndex < m_nCount",L"wxArrayString: index out of bounds",uVar1);
    }
    puVar3 = (undefined *)(*(int *)(param_1_00 + 0x18) + uVar2 * 0x24);
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(puVar3,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  if (bVar4) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00a023a0(undefined4 param_1)

{
  FUN_004325b6(L"SPAN");
  return param_1;
}



void __thiscall FUN_00a023d0(int param_1_00,int param_1)

{
  char cVar1;
  undefined *puVar2;
  undefined4 uVar3;
  int iVar4;
  undefined **local_d0;
  int local_cc;
  undefined4 local_c8;
  char local_c4;
  char local_c3;
  char local_c2;
  char local_c1;
  char local_c0;
  void *local_bc;
  undefined4 local_b8;
  void *local_b4;
  undefined4 uStack_b0;
  undefined **local_ac;
  uint local_a8;
  undefined4 local_98;
  uint local_94;
  void *local_90;
  int local_88;
  int local_84;
  undefined local_80 [4];
  undefined4 local_7c;
  uint local_68;
  void *local_64;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined local_34 [4];
  undefined4 local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beca31;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_d0;
  ExceptionList = &local_c;
  iVar4 = *(int *)(param_1_00 + 0xc);
  local_cc = *(int *)(iVar4 + 0xac);
  if (local_cc != 0) {
    *(int *)(local_cc + 4) = *(int *)(local_cc + 4) + 1;
  }
  local_d0 = wxColour::vftable;
  local_c8 = *(undefined4 *)(iVar4 + 0xb0);
  local_c4 = *(char *)(iVar4 + 0xb4);
  local_c3 = *(char *)(iVar4 + 0xb5);
  local_c2 = *(char *)(iVar4 + 0xb6);
  local_c1 = *(char *)(iVar4 + 0xb7);
  local_c0 = *(char *)(iVar4 + 0xb8);
  local_88 = *(int *)(*(int *)(param_1_00 + 0xc) + 0x90);
  local_84 = *(int *)(*(int *)(param_1_00 + 0xc) + 0x80);
  local_4 = 0;
  FUN_00a09b60(param_1);
  local_1c = 7;
  local_20 = 0;
  local_30 = (uint)local_30._2_2_ << 0x10;
  local_18 = (void *)0x0;
  local_4._0_1_ = 2;
  FUN_004325b6(L"color");
  local_4._0_1_ = 3;
  puVar2 = (undefined *)FUN_00a02290(&local_ac,local_80);
  local_4._0_1_ = 4;
  if (local_34 != puVar2) {
    FID_conflict_assign(puVar2,0,0xffffffff);
  }
  _free(local_90);
  if (7 < local_94) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_a8);
  }
  local_94 = 7;
  local_98 = 0;
  local_a8 = local_a8 & 0xffff0000;
  local_4._0_1_ = 2;
  _free(local_64);
  if (7 < local_68) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_7c);
  }
  if (local_20 != 0) {
    FUN_00453f4b();
    local_4._0_1_ = 5;
    cVar1 = FUN_00a094e0(local_34,&local_ac);
    if (cVar1 != '\0') {
      FUN_009f8420(&local_ac);
      local_b4 = operator_new(0x70);
      local_4._0_1_ = 6;
      if (local_b4 == (void *)0x0) {
        uVar3 = 0;
      }
      else {
        uVar3 = FUN_009f8200(&local_ac,1);
      }
      local_4._0_1_ = 5;
      FUN_009f52b0(uVar3);
    }
    local_4._0_1_ = 2;
    local_ac = wxObject::vftable;
    FUN_0083e850();
  }
  FUN_004325b6(L"font-size");
  local_4._0_1_ = 7;
  puVar2 = (undefined *)FUN_00a02290(&local_ac,local_80);
  local_4._0_1_ = 8;
  if (local_34 != puVar2) {
    FID_conflict_assign(puVar2,0,0xffffffff);
  }
  _free(local_90);
  if (7 < local_94) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_a8);
  }
  local_94 = 7;
  local_98 = 0;
  local_a8 = local_a8 & 0xffff0000;
  local_4._0_1_ = 2;
  _free(local_64);
  if (7 < local_68) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_7c);
  }
  if (local_20 != 0) {
    FUN_00820ebc(&local_bc,&DAT_00d99854,0xffffffff);
    iVar4 = FUN_00420f3f(local_bc,0,local_b8);
    if ((iVar4 != -1) && (iVar4 != -1)) {
      FUN_00851a60(iVar4);
      cVar1 = FUN_00850950(&local_b4,10);
      if (cVar1 == '\x01') {
        FUN_00a02d70(local_b4);
        local_bc = operator_new(0x60);
        local_4._0_1_ = 9;
        if (local_bc == (void *)0x0) {
          uVar3 = 0;
        }
        else {
          uVar3 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
          uVar3 = FUN_009f8330(uVar3);
        }
        local_4._0_1_ = 2;
        FUN_009f52b0(uVar3);
      }
    }
  }
  FUN_004325b6(L"font-weight");
  local_4._0_1_ = 10;
  puVar2 = (undefined *)FUN_00a02290(&local_ac,local_80);
  local_4._0_1_ = 0xb;
  if (local_34 != puVar2) {
    FID_conflict_assign(puVar2,0,0xffffffff);
  }
  _free(local_90);
  if (7 < local_94) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_a8);
  }
  local_94 = 7;
  local_98 = 0;
  local_a8 = local_a8 & 0xffff0000;
  local_4._0_1_ = 2;
  _free(local_64);
  if (7 < local_68) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_7c);
  }
  if (local_20 != 0) {
    iVar4 = FUN_008507a0(L"bold");
    if (iVar4 == 0) {
      *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x80) = 1;
      local_bc = operator_new(0x60);
      local_4 = CONCAT31(local_4._1_3_,0xc);
    }
    else {
      iVar4 = FUN_008507a0(L"normal");
      if (iVar4 != 0) goto LAB_00a028cd;
      *(undefined4 *)(*(int *)(param_1_00 + 0xc) + 0x80) = 0;
      local_bc = operator_new(0x60);
      local_4 = CONCAT31(local_4._1_3_,0xd);
    }
    if (local_bc == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
      uVar3 = FUN_009f8330(uVar3);
    }
    local_4._0_1_ = 2;
    FUN_009f52b0(uVar3);
  }
LAB_00a028cd:
  uStack_b0 = *(undefined4 *)(param_1 + 0x34);
  uStack_5c = *(undefined4 *)(param_1 + 0x28);
  local_b4 = *(void **)(param_1 + 0x30);
  uStack_58 = *(undefined4 *)(param_1 + 0x2c);
  FUN_00a070f0(&uStack_5c,&local_b4);
  if (local_84 != *(int *)(*(int *)(param_1_00 + 0xc) + 0x80)) {
    *(int *)(*(int *)(param_1_00 + 0xc) + 0x80) = local_84;
    local_bc = operator_new(0x60);
    local_4._0_1_ = 0xe;
    if (local_bc == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
      uVar3 = FUN_009f8330(uVar3);
    }
    local_4._0_1_ = 2;
    FUN_009f52b0(uVar3);
  }
  if (local_88 != *(int *)(*(int *)(param_1_00 + 0xc) + 0x90)) {
    FUN_00a02d40(local_88);
    local_bc = operator_new(0x60);
    local_4._0_1_ = 0xf;
    if (local_bc == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x3c))();
      uVar3 = FUN_009f8330(uVar3);
    }
    local_4._0_1_ = 2;
    FUN_009f52b0(uVar3);
  }
  iVar4 = *(int *)(param_1_00 + 0xc);
  if ((((local_c4 != *(char *)(iVar4 + 0xb4)) || (local_c3 != *(char *)(iVar4 + 0xb5))) ||
      (local_c1 != *(char *)(iVar4 + 0xb7))) ||
     ((local_c2 != *(char *)(iVar4 + 0xb6) || (local_c0 != *(char *)(iVar4 + 0xb8))))) {
    if ((undefined ***)(iVar4 + 0xa8) != &local_d0) {
      FUN_0083ea60(&local_d0);
    }
    *(undefined4 *)(iVar4 + 0xb0) = local_c8;
    *(char *)(iVar4 + 0xb4) = local_c4;
    *(char *)(iVar4 + 0xb5) = local_c3;
    *(char *)(iVar4 + 0xb6) = local_c2;
    *(char *)(iVar4 + 0xb7) = local_c1;
    *(char *)(iVar4 + 0xb8) = local_c0;
    local_bc = operator_new(0x70);
    local_4._0_1_ = 0x10;
    if (local_bc == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = FUN_009f8200(&local_d0,1);
    }
    local_4._0_1_ = 2;
    FUN_009f52b0(uVar3);
  }
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30);
  }
  local_30 = local_30 & 0xffff0000;
  local_4 = (uint)local_4._1_3_ << 8;
  local_1c = 7;
  local_20 = 0;
  FUN_00a020e0();
  local_4 = 0xffffffff;
  local_d0 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined * FUN_00a02b30(void)

{
  return &DAT_0323e640;
}



void FUN_00a02b40(int *param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
    puVar1[2] = 0;
    *puVar1 = wxHTML_Handler_STYLE::vftable;
  }
                    // WARNING: Could not recover jumptable at 0x00a02b6d. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x24))();
  return;
}



undefined4 * FUN_00a02b70(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHTML_ModuleStyleTag::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined4 FUN_00a02bd0(undefined4 param_1)

{
  FUN_004325b6(L"STYLE");
  return param_1;
}



undefined ** FUN_00a02c00(void)

{
  return &PTR_u_wxHtmlWinParser_0323e6bc;
}



void FUN_00a02c10(int param_1)

{
  undefined4 uVar1;
  undefined4 *unaff_ESI;
  
  uVar1 = FUN_00a49750();
  *unaff_ESI = uVar1;
  uVar1 = FUN_00a49750();
  unaff_ESI[1] = uVar1;
  unaff_ESI[2] = param_1;
  uVar1 = FUN_00a49750();
  unaff_ESI[3] = uVar1;
  uVar1 = FUN_00a49750();
  unaff_ESI[4] = uVar1;
  uVar1 = FUN_00a49750();
  unaff_ESI[5] = uVar1;
  unaff_ESI[6] = param_1 * 2;
  return;
}



void __fastcall FUN_00a02c80(int param_1)

{
  *(undefined4 *)(param_1 + 0x7c) = 0;
  thunk_FUN_00a05540();
  return;
}



undefined4 __fastcall FUN_00a02c90(int param_1)

{
  void *pvVar1;
  int iVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xd4);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_009f6a80(*(undefined4 *)(param_1 + 0x7c));
  }
  *(int *)(param_1 + 0x7c) = iVar2;
  *(undefined4 *)(iVar2 + 0x78) = *(undefined4 *)(param_1 + 0x120);
  *(undefined4 *)(iVar2 + 0xcc) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x1318) = 0;
  *(undefined *)(param_1 + 0x58) = 1;
  ExceptionList = local_c;
  return *(undefined4 *)(param_1 + 0x7c);
}



void __thiscall FUN_00a02d20(int param_1_00,undefined4 param_1)

{
  *(undefined *)(param_1_00 + 0x58) = 1;
  *(undefined4 *)(param_1_00 + 0x7c) = param_1;
  return;
}



void __fastcall FUN_00a02d30(int param_1)

{
  *(undefined4 *)(param_1 + 0x7c) = *(undefined4 *)(*(int *)(param_1 + 0x7c) + 0xc);
  return;
}



void __thiscall FUN_00a02d40(int param_1_00,int param_1)

{
  if (param_1 < 1) {
    *(undefined4 *)(param_1_00 + 0x90) = 1;
    return;
  }
  if (7 < param_1) {
    param_1 = 7;
  }
  *(int *)(param_1_00 + 0x90) = param_1;
  return;
}



void __thiscall FUN_00a02d70(int param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  
  if (param_1 <= *(int *)(param_1_00 + 0x12ac)) {
    *(undefined4 *)(param_1_00 + 0x90) = 1;
    return;
  }
  if (*(int *)(param_1_00 + 0x12c4) <= param_1) {
    *(undefined4 *)(param_1_00 + 0x90) = 7;
    return;
  }
  iVar1 = 0;
  piVar2 = (int *)(param_1_00 + 0x12b0);
  while ((param_1 <= piVar2[-1] || (*piVar2 < param_1))) {
    iVar1 = iVar1 + 1;
    piVar2 = piVar2 + 1;
    if (5 < iVar1) {
      return;
    }
  }
  if (*(int *)(param_1_00 + 0x12b0 + iVar1 * 4) - param_1 <=
      param_1 - *(int *)(param_1_00 + 0x12ac + iVar1 * 4)) {
    iVar1 = iVar1 + 1;
  }
  *(int *)(param_1_00 + 0x90) = iVar1;
  return;
}



void __fastcall FUN_00a02df0(int param_1)

{
  if (*(char *)(param_1 + 0x114) != '\0') {
    FUN_009f6d80(param_1 + 0xbc);
  }
  FUN_009f4ea0(*(undefined4 *)(param_1 + 0x124),*(undefined4 *)(param_1 + 0x128));
  return;
}



undefined ** FUN_00a02e30(void)

{
  return &PTR_u_wxHtmlWinTagHandler_0323e6d4;
}



undefined ** FUN_00a02e40(void)

{
  return &PTR_u_wxHtmlTagsModule_0323e6ec;
}



int * __fastcall FUN_00a02e50(int param_1)

{
  int *piVar1;
  int *piVar2;
  
  *(undefined4 *)(param_1 + 0x7c) = *(undefined4 *)(*(int *)(param_1 + 0x7c) + 0xc);
  FUN_00a02c90();
  piVar1 = *(int **)(param_1 + 0x7c);
  for (piVar2 = (int *)(*(int **)(param_1 + 0x7c))[3]; piVar2 != (int *)0x0;
      piVar2 = (int *)piVar2[3]) {
    piVar1 = piVar2;
  }
  (**(code **)(*piVar1 + 0x54))(1,1);
  return piVar1;
}



void __thiscall FUN_00a02e90(int param_1_00,undefined4 param_1)

{
  if (*(char *)(param_1_00 + 0x114) != '\0') {
    FUN_009f6d80(param_1_00 + 0xbc);
  }
  FUN_009f4ea0(*(undefined4 *)(param_1_00 + 0x124),*(undefined4 *)(param_1_00 + 0x128));
  FUN_009f52b0(param_1);
  FUN_009f69f0(*(undefined4 *)(param_1_00 + 0x1314));
  *(undefined4 *)(param_1_00 + 0x1314) = param_1;
  return;
}



undefined4 * FUN_00a02ef0(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x28);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00847330(uVar1);
    *puVar2 = wxHtmlTagsModule::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



undefined __fastcall FUN_00a02f50(undefined4 param_1)

{
  FUN_0086ad60(param_1);
  return 1;
}



void __fastcall FUN_00a02f60(undefined4 param_1)

{
  FUN_0086b0c0(param_1);
  return;
}



void __thiscall FUN_00a02f70(int param_1_00,undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x80);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_009f6e70(param_1,*(undefined4 *)(param_1_00 + 0x78));
  }
  local_4 = 0xffffffff;
  FUN_00a02e90(uVar2);
  ExceptionList = local_c;
  return;
}



undefined4 FUN_00a02ff0(undefined4 param_1)

{
  FUN_008a5960(param_1,FUN_008a4a70);
  return param_1;
}



void __fastcall FUN_00a03010(undefined4 *param_1)

{
  int iVar1;
  int **ppiVar2;
  int iVar3;
  int local_1c;
  int local_18;
  int local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00becac6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = wxHtmlWinParser::vftable;
  local_4 = 6;
  ppiVar2 = (int **)(param_1 + 0x4b);
  local_14 = 2;
  do {
    local_18 = 2;
    do {
      local_1c = 2;
      do {
        iVar1 = 2;
        do {
          iVar3 = 7;
          do {
            if (*ppiVar2 != (int *)0x0) {
              (**(code **)(**ppiVar2 + 4))(1);
            }
            ppiVar2 = ppiVar2 + 1;
            iVar3 = iVar3 + -1;
          } while (iVar3 != 0);
          iVar1 = iVar1 + -1;
        } while (iVar1 != 0);
        local_1c = local_1c + -1;
      } while (local_1c != 0);
      local_18 = local_18 + -1;
    } while (local_18 != 0);
    local_14 = local_14 + -1;
  } while (local_14 != 0);
  FUN_00a3f66c(param_1[0x17]);
  _free((void *)param_1[0x4c2]);
  if (7 < (uint)param_1[0x4c1]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x4bc]);
  }
  param_1[0x4c1] = 7;
  param_1[0x4c0] = 0;
  *(undefined2 *)(param_1 + 0x4bc) = 0;
  _free((void *)param_1[0x4b9]);
  if (7 < (uint)param_1[0x4b8]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x4b3]);
  }
  param_1[0x4b8] = 7;
  param_1[0x4b7] = 0;
  *(undefined2 *)(param_1 + 0x4b3) = 0;
  local_4._0_1_ = 3;
  _eh_vector_destructor_iterator_(param_1 + 0xbb,0x24,0x70,FUN_0040159c);
  local_4._0_1_ = 2;
  FUN_008f2ca0();
  local_4._0_1_ = 1;
  param_1[0x2a] = wxObject::vftable;
  FUN_0083e850();
  local_4 = (uint)local_4._1_3_ << 8;
  param_1[0x25] = wxObject::vftable;
  FUN_0083e850();
  local_4 = 0xffffffff;
  FUN_00a062d0();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00a031b0(int param_1)

{
  *(undefined *)(param_1 + 0x54) = 1;
  return;
}



void __thiscall FUN_00a031c0(int param_1_00,undefined4 param_1,undefined8 param_2)

{
  *(undefined8 *)(param_1_00 + 0x68) = param_2;
  *(undefined4 *)(param_1_00 + 0x78) = param_1;
  *(undefined8 *)(param_1_00 + 0x70) = param_2;
  return;
}



void __thiscall
FUN_00a031e0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  uint uVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  
  uVar1 = *(uint *)(param_1_00 + 0x18);
  puVar6 = (undefined4 *)(param_1_00 + 4);
  puVar3 = puVar6;
  if (7 < uVar1) {
    puVar3 = (undefined4 *)*puVar6;
  }
  iVar2 = *(int *)(param_1_00 + 0x14) * 2;
  puVar3 = (undefined4 *)(iVar2 + (int)puVar3);
  if (puVar3 == (undefined4 *)0x0) {
LAB_00a03223:
    FUN_00a3fb10();
  }
  else {
    puVar4 = puVar6;
    if (7 < uVar1) {
      puVar4 = (undefined4 *)*puVar6;
    }
    if (puVar3 < puVar4) goto LAB_00a03223;
    puVar4 = puVar6;
    if (7 < uVar1) {
      puVar4 = (undefined4 *)*puVar6;
    }
    if ((undefined4 *)(iVar2 + (int)puVar4) < puVar3) goto LAB_00a03223;
  }
  uVar1 = *(uint *)(param_1_00 + 0x18);
  puVar4 = puVar6;
  if (7 < uVar1) {
    puVar4 = (undefined4 *)*puVar6;
  }
  iVar2 = *(int *)(param_1_00 + 0x14) * 2;
  puVar4 = (undefined4 *)(iVar2 + (int)puVar4);
  if (puVar4 != (undefined4 *)0x0) {
    puVar5 = puVar6;
    if (7 < uVar1) {
      puVar5 = (undefined4 *)*puVar6;
    }
    if (puVar5 <= puVar4) {
      if (7 < uVar1) {
        puVar6 = (undefined4 *)*puVar6;
      }
      if (puVar4 <= (undefined4 *)(iVar2 + (int)puVar6)) goto LAB_00a03263;
    }
  }
  FUN_00a3fb10();
LAB_00a03263:
  FUN_00428440(param_1_00,puVar4,param_1_00,puVar3,param_1,param_2,param_3,param_4);
  return;
}



undefined4 __thiscall FUN_00a03290(undefined4 param_1_00,byte param_1)

{
  FUN_00a03010();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a032b0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00becaf8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_009f6e70(param_1,param_4);
  *param_1_00 = wxHtmlWordWithTabsCell::vftable;
  param_1_00[0x26] = 7;
  param_1_00[0x25] = 0;
  local_4 = 0;
  *(undefined2 *)(param_1_00 + 0x21) = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  param_1_00[0x27] = 0;
  param_1_00[0x29] = param_3;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00a03350(int param_1)

{
  _free(*(void **)(param_1 + 0x9c));
  if (7 < *(uint *)(param_1 + 0x98)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x84));
  }
  *(undefined4 *)(param_1 + 0x98) = 7;
  *(undefined4 *)(param_1 + 0x94) = 0;
  *(undefined2 *)(param_1 + 0x84) = 0;
  _free(*(void **)(param_1 + 0x74));
  if (7 < *(uint *)(param_1 + 0x70)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x5c));
  }
  *(undefined4 *)(param_1 + 0x70) = 7;
  *(undefined4 *)(param_1 + 0x6c) = 0;
  *(undefined2 *)(param_1 + 0x5c) = 0;
  FUN_009f6950();
  return;
}



undefined4 __thiscall FUN_00a033e0(undefined4 param_1_00,byte param_1)

{
  FUN_00a03350();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00a03400(int param_1_00,int param_1,int param_2,undefined4 *param_3)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int **ppiVar4;
  int iVar5;
  
  if (param_3 == (undefined4 *)0x0) {
    if (DAT_032ea3e0 == 0) {
      piVar1 = (int *)(**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
      iVar2 = (**(code **)(*piVar1 + 0x2c))();
      if (iVar2 < 10) {
        iVar2 = 10;
      }
      FUN_00a02c10(iVar2);
    }
    param_3 = &DAT_032ea3e0;
  }
  *(undefined4 *)(param_1_00 + 0x12ac) = *param_3;
  *(undefined4 *)(param_1_00 + 0x12b0) = param_3[1];
  *(undefined4 *)(param_1_00 + 0x12b4) = param_3[2];
  *(undefined4 *)(param_1_00 + 0x12b8) = param_3[3];
  *(undefined4 *)(param_1_00 + 0x12bc) = param_3[4];
  *(undefined4 *)(param_1_00 + 0x12c0) = param_3[5];
  *(undefined4 *)(param_1_00 + 0x12c4) = param_3[6];
  if (param_1_00 + 0x12c8 != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  if (param_1_00 + 0x12ec != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  ppiVar4 = (int **)(param_1_00 + 300);
  param_2 = 2;
  do {
    param_3 = (undefined4 *)0x2;
    do {
      iVar2 = 2;
      do {
        iVar3 = 2;
        do {
          iVar5 = 7;
          do {
            if (*ppiVar4 != (int *)0x0) {
              (**(code **)(**ppiVar4 + 4))(1);
              *ppiVar4 = (int *)0x0;
            }
            ppiVar4 = ppiVar4 + 1;
            iVar5 = iVar5 + -1;
          } while (iVar5 != 0);
          iVar3 = iVar3 + -1;
        } while (iVar3 != 0);
        iVar2 = iVar2 + -1;
      } while (iVar2 != 0);
      param_3 = (undefined4 *)((int)param_3 + -1);
    } while (param_3 != (undefined4 *)0x0);
    param_2 = param_2 + -1;
  } while (param_2 != 0);
  return;
}



void FUN_00a03540(int param_1,undefined4 param_2,undefined4 param_3)

{
  int *piVar1;
  undefined *puVar2;
  undefined4 local_78 [2];
  undefined4 uStack_70;
  uint uStack_5c;
  void *pvStack_58;
  undefined local_50 [28];
  undefined auStack_34 [4];
  undefined4 uStack_30;
  int iStack_20;
  uint uStack_1c;
  void *pvStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00becb30;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_78;
  ExceptionList = &local_c;
  local_78[0] = param_3;
  if (param_1 == -1) {
    piVar1 = (int *)(**(code **)(*(int *)PTR_PTR_03238cac + 4))
                              (0x17,DAT_0323f878 ^ (uint)&stack0xffffff78);
    param_1 = (**(code **)(*piVar1 + 0x2c))();
    if (param_1 < 10) {
      param_1 = 10;
    }
  }
  FUN_00a02c10(param_1);
  uStack_30 = (uint)uStack_30._2_2_ << 0x10;
  uStack_1c = 7;
  iStack_20 = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  pvStack_18 = (void *)0x0;
  uStack_4 = 0;
  if (iStack_20 == 0) {
    piVar1 = (int *)(**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
    puVar2 = (undefined *)(**(code **)(*piVar1 + 0x44))(local_78);
    uStack_4._0_1_ = 1;
    if (auStack_34 != puVar2) {
      FID_conflict_assign(puVar2,0,0xffffffff);
    }
    uStack_4 = (uint)uStack_4._1_3_ << 8;
    _free(pvStack_58);
    if (7 < uStack_5c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_70);
    }
  }
  FUN_00a03400(auStack_34,local_78[0],local_50);
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_30);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a036c0(int *param_1_00,undefined4 param_1)

{
  code *pcVar1;
  uint uVar2;
  int iVar3;
  void *pvVar4;
  undefined4 uVar5;
  undefined4 unaff_EBX;
  int unaff_ESI;
  int unaff_EDI;
  undefined auStack_dc [4];
  undefined4 uStack_d8;
  undefined **ppuStack_d4;
  void *pvStack_d0;
  undefined auStack_a0 [4];
  undefined4 uStack_9c;
  uint uStack_88;
  void *pvStack_84;
  void *pvStack_44;
  undefined4 uStack_3c;
  undefined4 uStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00becbe0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff0c;
  ExceptionList = &local_c;
  FUN_00a06840(param_1);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1_00[0x1e] == 0)) {
    FUN_00840480("..\\..\\src\\html\\winpars.cpp",200,"wxHtmlWinParser::InitParser","m_DC != NULL",
                 L"no DC assigned to wxHtmlWinParser!!",uVar2);
  }
  pcVar1 = *(code **)(*param_1_00 + 0x3c);
  param_1_00[0x23] = 0;
  param_1_00[0x22] = 0;
  param_1_00[0x21] = 0;
  param_1_00[0x20] = 0;
  param_1_00[0x24] = 3;
  (*pcVar1)();
  FUN_004325b6(&DAT_00d999d8);
  uStack_4 = 0;
  (**(code **)(**(int **)(param_1_00[0x1e] + 8) + 0xa4))(&ppuStack_d4,&uStack_d8,auStack_dc,0,0,0);
  uStack_1c = 0xffffffff;
  _free(pvStack_d0);
  if ((undefined **)0x7 < ppuStack_d4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBX);
  }
  param_1_00[0x47] = unaff_ESI;
  param_1_00[0x46] = unaff_EDI;
  *(undefined *)(param_1_00 + 0x45) = 0;
  FUN_004325b6(PTR_DAT_03236318);
  uStack_1c = 1;
  FUN_004325b6(PTR_DAT_03236318);
  uStack_1c._0_1_ = 2;
  iVar3 = FUN_009fb730(&stack0xffffff14,auStack_a0);
  uStack_1c = CONCAT31(uStack_1c._1_3_,3);
  if (param_1_00 + 0x31 != (int *)(iVar3 + 8)) {
    FID_conflict_assign((int *)(iVar3 + 8),0,0xffffffff);
  }
  if (param_1_00 + 0x3a != (int *)(iVar3 + 0x2c)) {
    FID_conflict_assign((int *)(iVar3 + 0x2c),0,0xffffffff);
  }
  param_1_00[0x43] = *(int *)(iVar3 + 0x50);
  param_1_00[0x44] = *(int *)(iVar3 + 0x54);
  uStack_1c = CONCAT31(uStack_1c._1_3_,2);
  FUN_008f2ca0();
  _free(pvStack_d0);
  if ((undefined **)0x7 < ppuStack_d4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBX);
  }
  ppuStack_d4 = (undefined **)0x7;
  uStack_d8 = 0;
  uStack_1c = 0xffffffff;
  _free(pvStack_84);
  if (7 < uStack_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_9c);
  }
  uVar2 = 0;
  (**(code **)(param_1_00[0x25] + 0x28))(0,0,0xff,0xff);
  (**(code **)(param_1_00[0x2a] + 0x28))(0,0,0,0xff);
  param_1_00[0x48] = 0;
  param_1_00[0x49] = 0;
  param_1_00[0x4a] = 0;
  *(undefined *)(param_1_00 + 0x16) = 0;
  param_1_00[0x4c5] = 0;
  FUN_00a02c90();
  FUN_00a02c90();
  pvVar4 = operator_new(0x70);
  uStack_3c = 4;
  if (pvVar4 == (void *)0x0) {
    uVar5 = 0;
  }
  else {
    uVar5 = FUN_009f8200(param_1_00 + 0x2a,1);
  }
  uStack_3c = 0xffffffff;
  FUN_009f52b0(uVar5);
  FUN_008ff080(&stack0xffffff18,5);
  uStack_3c = 5;
  pvVar4 = operator_new(0x70);
  uStack_3c._0_1_ = 6;
  if (pvVar4 == (void *)0x0) {
    uVar5 = 0;
  }
  else if ((int *)param_1_00[0x19] == (int *)0x0) {
    uVar5 = FUN_009f8200(&stack0xffffff18,2);
  }
  else {
    uVar5 = (**(code **)(*(int *)param_1_00[0x19] + 0x18))(&ppuStack_d4);
    uStack_3c = CONCAT31(uStack_3c._1_3_,7);
    uVar2 = 1;
    uVar5 = FUN_009f8200(uVar5,2);
  }
  uStack_3c = 8;
  FUN_009f52b0(uVar5);
  uStack_3c = 5;
  if ((uVar2 & 1) != 0) {
    ppuStack_d4 = wxObject::vftable;
    FUN_0083e850();
  }
  pvVar4 = operator_new(0x60);
  uStack_3c._0_1_ = 9;
  if (pvVar4 == (void *)0x0) {
    uVar5 = 0;
  }
  else {
    uVar5 = (**(code **)(*param_1_00 + 0x3c))();
    uVar5 = FUN_009f8330(uVar5);
  }
  uStack_3c = CONCAT31(uStack_3c._1_3_,5);
  FUN_009f52b0(uVar5);
  uStack_3c = 0xffffffff;
  FUN_0083e850();
  ExceptionList = pvStack_44;
  return;
}



void FUN_00a03ab0(int param_1,int *param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  *(undefined2 *)(param_1 + *param_2 * 2) = 0;
  iVar2 = 0;
  if (0 < *param_2) {
    do {
      if (*(short *)(param_1 + iVar2 * 2) == 0xa0) {
        *(undefined2 *)(param_1 + iVar2 * 2) = 0x20;
      }
      iVar2 = iVar2 + 1;
    } while (iVar2 < *param_2);
  }
  uVar3 = FUN_00852140(param_1,*param_2);
  local_4 = 0;
  FUN_00a02f70(uVar3);
  _free(local_14);
  if (local_18 < 8) {
    *param_2 = 0;
    ExceptionList = local_c;
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_2c,uVar1);
}



void __thiscall FUN_00a03b70(int param_1_00,void *param_1)

{
  uint uVar1;
  void *pvVar2;
  char cVar3;
  int iVar4;
  undefined4 ****ppppuVar5;
  void **ppvVar6;
  undefined4 uVar7;
  short **ppsVar8;
  void *pvVar9;
  short **ppsVar10;
  short **ppsVar11;
  uint local_58;
  void *local_54;
  void *local_50;
  short **local_4c;
  int local_48;
  void *local_44;
  short **local_40;
  void *local_3c;
  short **local_38;
  undefined local_34 [4];
  undefined4 ****local_30 [4];
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00becc23;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_58;
  ExceptionList = &local_c;
  local_54 = param_1;
  local_58 = 9;
  local_48 = param_1_00;
  iVar4 = FUN_00420f3f(&local_58,0,1);
  if (iVar4 == -1) {
    FUN_00a02f70(param_1);
    *(int *)(param_1_00 + 0x1318) = *(int *)(param_1_00 + 0x1318) + *(int *)((int)param_1 + 0x14);
    goto LAB_00a03eb0;
  }
  local_1c = 7;
  local_20 = 0;
  local_30[0] = (undefined4 ****)((uint)local_30[0] & 0xffff0000);
  local_18 = (void *)0x0;
  local_4 = 0;
  if ((*(int *)((int)param_1 + 0x14) != 7) &&
     (cVar3 = FUN_004182d2(*(int *)((int)param_1 + 0x14),1), cVar3 != '\0')) {
    local_20 = 0;
    ppppuVar5 = local_30[0];
    if (local_1c < 8) {
      ppppuVar5 = local_30;
    }
    *(undefined2 *)ppppuVar5 = 0;
  }
  FUN_008478e0(&local_44);
  FUN_00847890(&local_50);
  local_58 = *(uint *)(param_1_00 + 0x1318);
  pvVar9 = local_50;
  ppsVar10 = local_4c;
  while( true ) {
    if ((local_50 != (void *)0xfffffffc) && ((local_50 == (void *)0x0 || (local_50 != local_44)))) {
      FUN_00a3fb10();
    }
    pvVar2 = local_54;
    if (ppsVar10 == local_40) break;
    if (local_50 != (void *)0xfffffffc) {
      if (local_50 == (void *)0x0) {
        FUN_00a3fb10();
      }
      if (*(uint *)((int)local_50 + 0x18) < 8) {
        iVar4 = (int)local_50 + 4;
      }
      else {
        iVar4 = *(int *)((int)local_50 + 4);
      }
      if ((short **)(iVar4 + *(int *)((int)local_50 + 0x14) * 2) <= ppsVar10) {
        FUN_00a3fb10();
      }
    }
    if (*(short *)ppsVar10 == 9) {
      if ((pvVar9 != (void *)0xfffffffc) && ((pvVar9 == (void *)0x0 || (pvVar9 != local_50)))) {
        FUN_00a3fb10();
      }
      if (local_4c != ppsVar10) {
        FUN_00a031e0(pvVar9,local_4c,local_50,ppsVar10);
      }
      iVar4 = 8 - (local_58 & 7);
      FID_conflict_append(iVar4,0x20);
      local_58 = local_58 + iVar4;
      local_3c = local_50;
      local_38 = ppsVar10;
      ppvVar6 = (void **)FUN_004226c0(1);
      local_4c = (short **)ppvVar6[1];
      pvVar9 = *ppvVar6;
      param_1 = local_54;
    }
    else {
      local_58 = local_58 + 1;
    }
    if (local_50 != (void *)0xfffffffc) {
      if (local_50 == (void *)0x0) {
        FUN_00a3fb10();
      }
      if (*(uint *)((int)local_50 + 0x18) < 8) {
        iVar4 = (int)local_50 + 4;
      }
      else {
        iVar4 = *(int *)((int)local_50 + 4);
      }
      if ((short **)(iVar4 + *(int *)((int)local_50 + 0x14) * 2) <= ppsVar10) {
        FUN_00a3fb10();
      }
    }
    ppsVar10 = (short **)((int)ppsVar10 + 2);
  }
  uVar1 = *(uint *)((int)param_1 + 0x18);
  ppsVar11 = (short **)((int)param_1 + 4);
  ppsVar10 = ppsVar11;
  if (7 < uVar1) {
    ppsVar10 = (short **)*ppsVar11;
  }
  iVar4 = *(int *)((int)local_54 + 0x14) * 2;
  ppsVar10 = (short **)(iVar4 + (int)ppsVar10);
  if (ppsVar10 == (short **)0x0) {
LAB_00a03d7f:
    FUN_00a3fb10();
  }
  else {
    ppsVar8 = ppsVar11;
    if (7 < uVar1) {
      ppsVar8 = (short **)*ppsVar11;
    }
    if (ppsVar10 < ppsVar8) goto LAB_00a03d7f;
    ppsVar8 = ppsVar11;
    if (7 < uVar1) {
      ppsVar8 = (short **)*ppsVar11;
    }
    if ((short **)(iVar4 + (int)ppsVar8) < ppsVar10) goto LAB_00a03d7f;
  }
  if ((pvVar9 != (void *)0xfffffffc) && ((pvVar9 == (void *)0x0 || (pvVar9 != pvVar2)))) {
    FUN_00a3fb10();
  }
  if (local_4c != ppsVar10) {
    uVar1 = *(uint *)((int)pvVar2 + 0x18);
    ppsVar10 = ppsVar11;
    if (7 < uVar1) {
      ppsVar10 = (short **)*ppsVar11;
    }
    iVar4 = *(int *)((int)pvVar2 + 0x14) * 2;
    ppsVar10 = (short **)(iVar4 + (int)ppsVar10);
    if (ppsVar10 == (short **)0x0) {
LAB_00a03dd2:
      FUN_00a3fb10();
    }
    else {
      ppsVar8 = ppsVar11;
      if (7 < uVar1) {
        ppsVar8 = (short **)*ppsVar11;
      }
      if (ppsVar10 < ppsVar8) goto LAB_00a03dd2;
      if (7 < uVar1) {
        ppsVar11 = (short **)*ppsVar11;
      }
      if ((short **)(iVar4 + (int)ppsVar11) < ppsVar10) goto LAB_00a03dd2;
    }
    FUN_00a031e0(pvVar9,local_4c,pvVar2,ppsVar10);
  }
  local_54 = operator_new(0xa8);
  iVar4 = local_48;
  local_4._0_1_ = 1;
  if (local_54 == (void *)0x0) {
    uVar7 = 0;
  }
  else {
    uVar7 = FUN_00a032b0(local_34,pvVar2,*(undefined4 *)(local_48 + 0x1318),
                         *(undefined4 *)(local_48 + 0x78));
  }
  local_4 = (uint)local_4._1_3_ << 8;
  if (*(char *)(iVar4 + 0x114) != '\0') {
    FUN_009f6d80(iVar4 + 0xbc);
  }
  FUN_009f4ea0(*(undefined4 *)(iVar4 + 0x124),*(undefined4 *)(iVar4 + 0x128));
  FUN_009f52b0(uVar7);
  FUN_009f69f0(*(undefined4 *)(iVar4 + 0x1314));
  *(undefined4 *)(iVar4 + 0x1314) = uVar7;
  *(uint *)(iVar4 + 0x1318) = local_58;
  _free(local_18);
  if (7 < local_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
LAB_00a03eb0:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00a03ee0(int param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  undefined4 *puVar8;
  undefined4 uVar9;
  undefined4 *local_44;
  int local_40;
  int local_3c;
  int local_38;
  undefined4 local_34;
  undefined2 local_30;
  uint local_20;
  void *local_1c;
  undefined4 local_18;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce1e3;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)&local_44);
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  local_3c = *(int *)(param_1 + 0x88);
  iVar6 = *(int *)(param_1 + 0x8c);
  iVar4 = *(int *)(param_1 + 0x80);
  local_40 = *(int *)(param_1 + 0x90);
  iVar7 = *(int *)(param_1 + 0x84);
  iVar3 = param_1 + 0x12c8;
  if (iVar6 == 0) {
    iVar3 = param_1 + 0x12ec;
  }
  local_1c = (void *)0x7;
  local_20 = 0;
  local_30 = 0;
  local_38 = iVar4;
  FID_conflict_assign(iVar3,0,0xffffffff);
  local_18 = 0;
  local_4 = 0;
  iVar3 = (iVar6 + (local_3c + (iVar7 + iVar4 * 2) * 2) * 2) * 7 + -1 + local_40;
  local_44 = (undefined4 *)(param_1 + 0x2ec + iVar3 * 0x24);
  if (*(int *)(param_1 + 300 + iVar3 * 4) != 0) {
    if ((local_44[5] == local_20) && (iVar4 = FUN_00850760(&local_34), iVar4 == 0)) {
      if (*(int *)(param_1 + 300 + iVar3 * 4) != 0) goto LAB_00a04097;
    }
    else {
      piVar1 = *(int **)(param_1 + 300 + iVar3 * 4);
      if (piVar1 != (int *)0x0) {
        (**(code **)(*piVar1 + 4))(1,uVar2);
        *(undefined4 *)(param_1 + 300 + iVar3 * 4) = 0;
      }
    }
  }
  if (local_44 != &local_34) {
    FID_conflict_assign(&local_34,0,0xffffffff);
  }
  local_44 = (undefined4 *)operator_new(8);
  local_4._0_1_ = 1;
  if (local_44 == (undefined4 *)0x0) {
    uVar5 = 0;
  }
  else {
    uVar9 = 0;
    puVar8 = &local_34;
    uVar2 = (uint)(local_3c != 0);
    iVar7 = (-(uint)(iVar7 != 0) & 3) + 0x5a;
    iVar4 = (uint)(local_38 != 0) * 2 + 0x5a;
    iVar6 = (iVar6 != 0) + 0x4a;
    uVar5 = FUN_00a49750(iVar6,iVar7,iVar4,uVar2,puVar8,0);
    uVar5 = FUN_00473c89(uVar5,iVar6,iVar7,iVar4,uVar2,puVar8,uVar9);
  }
  local_4 = (uint)local_4._1_3_ << 8;
  *(undefined4 *)(param_1 + 300 + iVar3 * 4) = uVar5;
LAB_00a04097:
  (**(code **)(**(int **)(*(int *)(param_1 + 0x78) + 8) + 0x50))
            (*(undefined4 *)(param_1 + 300 + iVar3 * 4));
  _free(local_1c);
  if (local_20 < 8) {
    ExceptionList = local_10;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_34);
}



void __thiscall FUN_00a04100(int param_1_00,int param_1)

{
  int iVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1_00 + 0xc4 != param_1 + 8) {
    FID_conflict_assign(param_1 + 8,0,0xffffffff);
  }
  if (param_1_00 + 0xe8 != param_1 + 0x2c) {
    FID_conflict_assign(param_1 + 0x2c,0,0xffffffff);
  }
  *(undefined4 *)(param_1_00 + 0x10c) = *(undefined4 *)(param_1 + 0x50);
  *(undefined4 *)(param_1_00 + 0x110) = *(undefined4 *)(param_1 + 0x54);
  FUN_004585c3(local_30);
  local_4 = 0;
  iVar1 = FUN_008507a0(PTR_DAT_03236318);
  *(bool *)(param_1_00 + 0x114) = iVar1 != 0;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a041d0(int param_1_00,int param_1)

{
  if (*(int *)(param_1_00 + 0x8c) == 0) {
    param_1_00 = param_1_00 + 0x12ec;
  }
  else {
    param_1_00 = param_1_00 + 0x12c8;
  }
  if (param_1_00 != param_1) {
    FID_conflict_assign(param_1,0,0xffffffff);
  }
  return;
}



undefined4 * __thiscall FUN_00a04200(undefined4 *param_1_00,int param_1)

{
  short sVar1;
  int iVar2;
  short *psVar3;
  short *psVar4;
  void *pvVar5;
  undefined4 *puVar6;
  int local_64;
  int local_60;
  int local_5c;
  undefined local_54 [4];
  undefined4 local_50;
  void *local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  void *local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beccc6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00a06200(DAT_0323f878 ^ (uint)&stack0xffffff8c);
  local_4 = 0;
  *param_1_00 = wxHtmlWinParser::vftable;
  FUN_00453f4b();
  local_4._0_1_ = 1;
  FUN_00453f4b();
  local_4._0_1_ = 2;
  FUN_009ef840();
  local_4._0_1_ = 3;
  _eh_vector_constructor_iterator_(param_1_00 + 0xbb,0x24,0x70,FUN_00418b1d,FUN_0040159c);
  param_1_00[0x4b8] = 7;
  param_1_00[0x4b7] = 0;
  *(undefined2 *)(param_1_00 + 0x4b3) = 0;
  param_1_00[0x4b9] = 0;
  param_1_00[0x4c1] = 7;
  param_1_00[0x4c0] = 0;
  *(undefined2 *)(param_1_00 + 0x4bc) = 0;
  param_1_00[0x4c2] = 0;
  param_1_00[0x17] = 0;
  param_1_00[0x18] = 0;
  param_1_00[0x19] = param_1;
  param_1_00[0x1f] = 0;
  param_1_00[0x1e] = 0;
  param_1_00[0x47] = 0;
  param_1_00[0x46] = 0;
  *(undefined *)(param_1_00 + 0x45) = 0;
  param_1_00[0x4c4] = 0;
  param_1_00[0x4c5] = 0;
  param_1_00[0x4c6] = 0;
  local_4 = CONCAT31(local_4._1_3_,6);
  puVar6 = param_1_00 + 0x4b;
  local_5c = 2;
  do {
    local_60 = 2;
    do {
      local_64 = 2;
      do {
        param_1 = 2;
        do {
          pvVar5 = (void *)0x7;
          do {
            *puVar6 = 0;
            if (PTR_DAT_03236318 == (undefined *)0x0) {
              FUN_00432156();
            }
            else {
              psVar4 = (short *)PTR_DAT_03236318;
              do {
                sVar1 = *psVar4;
                psVar4 = psVar4 + 1;
              } while (sVar1 != 0);
              FID_conflict_assign(PTR_DAT_03236318,(int)psVar4 - (int)(PTR_DAT_03236318 + 2) >> 1);
            }
            puVar6 = puVar6 + 1;
            pvVar5 = (void *)((int)pvVar5 + -1);
          } while (pvVar5 != (void *)0x0);
          param_1 = param_1 + -1;
        } while (param_1 != 0);
        local_64 = local_64 + -1;
      } while (local_64 != 0);
      local_60 = local_60 + -1;
    } while (local_60 != 0);
    local_5c = local_5c + -1;
  } while (local_5c != 0);
  psVar4 = (short *)PTR_DAT_03236318;
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    psVar4 = &DAT_00fae9c8;
  }
  local_18 = 7;
  local_2c = local_2c & 0xffff0000;
  psVar3 = psVar4;
  do {
    sVar1 = *psVar3;
    psVar3 = psVar3 + 1;
  } while (sVar1 != 0);
  local_1c = pvVar5;
  FID_conflict_assign(psVar4,(int)psVar3 - (int)(psVar4 + 1) >> 1);
  local_4._0_1_ = 7;
  psVar4 = (short *)PTR_DAT_03236318;
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    psVar4 = &DAT_00fae9c8;
  }
  local_50 = (uint)local_50._2_2_ << 0x10;
  local_3c = 7;
  psVar3 = psVar4;
  do {
    sVar1 = *psVar3;
    psVar3 = psVar3 + 1;
  } while (sVar1 != 0);
  local_40 = pvVar5;
  local_14 = pvVar5;
  FID_conflict_assign(psVar4,(int)psVar3 - (int)(psVar4 + 1) >> 1);
  local_4._0_1_ = 8;
  local_38 = pvVar5;
  FUN_00a03400(local_54,local_30,0);
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = (void *)0x0;
  local_50 = local_50 & 0xffff0000;
  local_4 = CONCAT31(local_4._1_3_,6);
  _free(local_14);
  iVar2 = DAT_032ea408;
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  for (; iVar2 != 0; iVar2 = *(int *)(iVar2 + 0xc)) {
    (**(code **)(**(int **)(iVar2 + 8) + 0x18))(param_1_00);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00a044e0(int param_1_00,int param_1,undefined4 param_2)

{
  char cVar1;
  undefined *puVar2;
  undefined4 ****ppppuVar3;
  int iVar4;
  undefined4 uVar5;
  int local_3ec;
  undefined local_3e8 [4];
  undefined4 local_3e4;
  uint local_3d0;
  void *local_3cc;
  undefined local_3c4 [4];
  uint local_3c0;
  undefined4 local_3b0;
  uint local_3ac;
  void *local_3a8;
  undefined local_3a0 [4];
  uint local_39c;
  undefined4 local_38c;
  uint local_388;
  void *local_384;
  undefined local_37c [4];
  uint local_378;
  undefined4 local_368;
  uint local_364;
  void *local_360;
  undefined local_358 [4];
  undefined4 local_354;
  uint local_340;
  void *local_33c;
  undefined local_334 [48];
  undefined4 ****local_304 [4];
  undefined4 local_2f4;
  uint local_2f0;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00becd69;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_3ec;
  ExceptionList = &local_c;
  local_3ec = param_1_00;
  if (*(int *)(param_1_00 + 100) == 0) {
    FUN_00a04fd0(param_1,param_2);
LAB_00a049cb:
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
  local_378 = local_378 & 0xffff0000;
  local_364 = 7;
  local_368 = 0;
  FID_conflict_assign(param_2,0,0xffffffff);
  local_360 = (void *)0x0;
  local_4 = 0;
  do {
    local_3ac = 7;
    local_3b0 = 0;
    local_3c0 = local_3c0 & 0xffff0000;
    FID_conflict_assign(local_37c,0,0xffffffff);
    local_3a8 = (void *)0x0;
    local_4._0_1_ = 1;
    FUN_008a62c0(local_37c);
    local_4._0_1_ = 2;
    puVar2 = (undefined *)FUN_00a02ff0(local_358);
    local_4._0_1_ = 3;
    if (local_3c4 != puVar2) {
      FID_conflict_assign(puVar2,0,0xffffffff);
    }
    local_4._0_1_ = 2;
    _free(local_33c);
    if (7 < local_340) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_354);
    }
    cVar1 = FUN_008a3f60();
    if (cVar1 != '\0') {
      FUN_009ef800(local_358);
      local_4._0_1_ = 4;
      FUN_008a62c0(local_358);
      local_4._0_1_ = 5;
      cVar1 = FUN_008a3f60();
      if (cVar1 == '\0') {
        FUN_008a62c0(local_3c4);
        local_4._0_1_ = 6;
        FUN_008a5540(local_334,1);
        puVar2 = (undefined *)FUN_00a02ff0(local_3e8);
        local_4 = CONCAT31(local_4._1_3_,7);
        if (local_3c4 != puVar2) {
          FID_conflict_assign(puVar2,0,0xffffffff);
        }
        _free(local_3cc);
joined_r0x00a047b2:
        if (7 < local_3d0) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_3e4);
        }
        local_4._1_3_ = (uint3)((uint)local_4 >> 8);
        local_4._0_1_ = 5;
        FUN_008a45c0();
      }
      else {
        ppppuVar3 = local_304[0];
        if (local_2f0 < 8) {
          ppppuVar3 = local_304;
        }
        iVar4 = FUN_00420f3f(ppppuVar3,0,local_2f4);
        if ((iVar4 == -1) || (iVar4 == -1)) {
          FID_conflict_append(local_37c,0,0xffffffff);
          FUN_008a62c0(local_358);
          local_4._0_1_ = 8;
          puVar2 = (undefined *)FUN_00a02ff0(local_3e8);
          local_4 = CONCAT31(local_4._1_3_,9);
          if (local_3c4 != puVar2) {
            FID_conflict_assign(puVar2,0,0xffffffff);
          }
          _free(local_3cc);
          goto joined_r0x00a047b2;
        }
      }
      local_4._0_1_ = 4;
      FUN_008a45c0();
      _free(local_33c);
      if (7 < local_340) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_354);
      }
    }
    local_388 = 7;
    local_38c = 0;
    local_39c = local_39c & 0xffff0000;
    local_384 = (void *)0x0;
    local_4._0_1_ = 10;
    iVar4 = (**(code **)(**(int **)(param_1_00 + 100) + 0xc))(param_1,local_3c4,local_3a0);
    if (iVar4 != 2) {
      _free(local_384);
      if (7 < local_388) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_39c);
      }
      local_388 = 7;
      local_38c = 0;
      local_39c = local_39c & 0xffff0000;
      local_4._0_1_ = 1;
      FUN_008a45c0();
      local_4 = (uint)local_4._1_3_ << 8;
      _free(local_3a8);
      if (7 < local_3ac) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_3c0);
      }
      uVar5 = 1;
      if (iVar4 == 1) {
        _free(local_360);
        if (7 < local_364) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_378);
        }
      }
      else {
        if (param_1 == 1) {
          uVar5 = 5;
        }
        FUN_00864c40(local_37c,uVar5);
        _free(local_360);
        if (7 < local_364) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_378);
        }
      }
      goto LAB_00a049cb;
    }
    FID_conflict_assign(local_3a0,0,0xffffffff);
    _free(local_384);
    if (7 < local_388) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_39c);
    }
    local_388 = 7;
    local_38c = 0;
    local_39c = local_39c & 0xffff0000;
    local_4._0_1_ = 1;
    FUN_008a45c0();
    local_4 = (uint)local_4._1_3_ << 8;
    _free(local_3a8);
    param_1_00 = local_3ec;
    if (7 < local_3ac) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_3c0);
    }
  } while( true );
}



void __thiscall FUN_00a04a00(int param_1_00,int param_1)

{
  uint uVar1;
  short sVar2;
  undefined4 uVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  short *psVar7;
  int local_9c;
  short *local_98;
  int local_94;
  int iStack_90;
  short *psStack_8c;
  int local_88;
  short *psStack_84;
  undefined auStack_80 [4];
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [4];
  undefined4 local_54;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00becdb8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_9c;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x1310) == 0) {
    uVar1 = *(int *)(param_1 + 0x14) + 1;
    local_9c = 0;
    local_94 = param_1_00;
    if (*(uint *)(param_1_00 + 0x60) < uVar1) {
      FUN_00a3f66c(*(undefined4 *)(param_1_00 + 0x5c),DAT_0323f878 ^ (uint)&stack0xffffff54);
      uVar3 = FUN_00823c23(-(uint)((int)((ulonglong)uVar1 * 2 >> 0x20) != 0) |
                           (uint)((ulonglong)uVar1 * 2));
      *(undefined4 *)(param_1_00 + 0x5c) = uVar3;
      *(uint *)(param_1_00 + 0x60) = uVar1;
    }
    local_98 = *(short **)(param_1_00 + 0x5c);
    FUN_00847890(&local_88);
    FUN_008478e0(&iStack_90);
    psVar7 = psStack_84;
    if (*(char *)(param_1_00 + 0x58) != '\0') {
      while( true ) {
        psVar7 = psStack_84;
        if ((local_88 != -4) && ((local_88 == 0 || (local_88 != iStack_90)))) {
          FUN_00a3fb10();
        }
        if (psStack_8c <= psVar7) break;
        if (local_88 != -4) {
          if (local_88 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(local_88 + 0x18) < 8) {
            iVar6 = local_88 + 4;
          }
          else {
            iVar6 = *(int *)(local_88 + 4);
          }
          if ((short *)(iVar6 + *(int *)(local_88 + 0x14) * 2) <= psVar7) {
            FUN_00a3fb10();
          }
        }
        if (*psVar7 != 10) {
          if (local_88 != -4) {
            if (local_88 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(local_88 + 0x18) < 8) {
              iVar6 = local_88 + 4;
            }
            else {
              iVar6 = *(int *)(local_88 + 4);
            }
            if ((short *)(iVar6 + *(int *)(local_88 + 0x14) * 2) <= psVar7) {
              FUN_00a3fb10();
            }
          }
          if (*psVar7 != 0xd) {
            if (local_88 != -4) {
              if (local_88 == 0) {
                FUN_00a3fb10();
              }
              if (*(uint *)(local_88 + 0x18) < 8) {
                iVar6 = local_88 + 4;
              }
              else {
                iVar6 = *(int *)(local_88 + 4);
              }
              if ((short *)(iVar6 + *(int *)(local_88 + 0x14) * 2) <= psVar7) {
                FUN_00a3fb10();
              }
            }
            if ((*psVar7 != 0x20) && (piVar4 = (int *)FUN_00847840(auStack_80), *piVar4 != 9))
            break;
          }
        }
        if (local_88 != -4) {
          if (local_88 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(local_88 + 0x18) < 8) {
            iVar6 = local_88 + 4;
          }
          else {
            iVar6 = *(int *)(local_88 + 4);
          }
          if ((short *)(iVar6 + *(int *)(local_88 + 0x14) * 2) <= psVar7) {
            FUN_00a3fb10();
          }
        }
        psStack_84 = psVar7 + 1;
      }
    }
    while( true ) {
      if ((local_88 != -4) && ((local_88 == 0 || (local_88 != iStack_90)))) {
        FUN_00a3fb10();
      }
      if (psStack_8c <= psVar7) break;
      if (local_88 != -4) {
        if (local_88 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(local_88 + 0x18) < 8) {
          iVar6 = local_88 + 4;
        }
        else {
          iVar6 = *(int *)(local_88 + 4);
        }
        if ((short *)(iVar6 + *(int *)(local_88 + 0x14) * 2) <= psVar7) {
          FUN_00a3fb10();
        }
      }
      sVar2 = *psVar7;
      local_98[local_9c] = sVar2;
      local_9c = local_9c + 1;
      if ((((sVar2 == 10) || (sVar2 == 0xd)) || (sVar2 == 0x20)) || (sVar2 == 9)) {
        if (local_88 != -4) {
          if (local_88 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(local_88 + 0x18) < 8) {
            iVar6 = local_88 + 4;
          }
          else {
            iVar6 = *(int *)(local_88 + 4);
          }
          if ((short *)(iVar6 + *(int *)(local_88 + 0x14) * 2) <= psVar7) {
            FUN_00a3fb10();
          }
        }
        iVar6 = 1;
        while( true ) {
          psVar7 = psVar7 + 1;
          if ((local_88 != -4) && ((local_88 == 0 || (local_88 != iStack_90)))) {
            FUN_00a3fb10();
          }
          if (psStack_8c <= psVar7) break;
          if (local_88 != -4) {
            if (local_88 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(local_88 + 0x18) < 8) {
              iVar5 = local_88 + 4;
            }
            else {
              iVar5 = *(int *)(local_88 + 4);
            }
            if ((short *)(iVar5 + *(int *)(local_88 + 0x14) * 2) <= psVar7) {
              FUN_00a3fb10();
            }
          }
          if (*psVar7 != 10) {
            if (local_88 != -4) {
              if (local_88 == 0) {
                FUN_00a3fb10();
              }
              if (*(uint *)(local_88 + 0x18) < 8) {
                iVar5 = local_88 + 4;
              }
              else {
                iVar5 = *(int *)(local_88 + 4);
              }
              if ((short *)(iVar5 + *(int *)(local_88 + 0x14) * 2) <= psVar7) {
                FUN_00a3fb10();
              }
            }
            if (*psVar7 != 0xd) {
              if (local_88 != -4) {
                if (local_88 == 0) {
                  FUN_00a3fb10();
                }
                if (*(uint *)(local_88 + 0x18) < 8) {
                  iVar5 = local_88 + 4;
                }
                else {
                  iVar5 = *(int *)(local_88 + 4);
                }
                if ((short *)(iVar5 + *(int *)(local_88 + 0x14) * 2) <= psVar7) {
                  FUN_00a3fb10();
                }
              }
              if (*psVar7 != 0x20) {
                if (local_88 != -4) {
                  if (local_88 == 0) {
                    FUN_00a3fb10();
                  }
                  if (*(uint *)(local_88 + 0x18) < 8) {
                    iVar5 = local_88 + 4;
                  }
                  else {
                    iVar5 = *(int *)(local_88 + 4);
                  }
                  if ((short *)(iVar5 + *(int *)(local_88 + 0x14) * 2) <= psVar7) {
                    FUN_00a3fb10();
                  }
                }
                if (*psVar7 != 9) break;
              }
            }
          }
          if (local_88 != -4) {
            if (local_88 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(local_88 + 0x18) < 8) {
              iVar5 = local_88 + 4;
            }
            else {
              iVar5 = *(int *)(local_88 + 4);
            }
            if ((short *)(iVar5 + *(int *)(local_88 + 0x14) * 2) <= psVar7) {
              FUN_00a3fb10();
            }
          }
          iVar6 = iVar6 + 1;
        }
        param_1_00 = local_94;
        if (iVar6 != 0) {
          local_98[local_9c + -1] = 0x20;
          FUN_00a03ab0(local_98,&local_9c);
          *(undefined *)(param_1_00 + 0x58) = 1;
        }
      }
      else {
        if (local_88 != -4) {
          if (local_88 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(local_88 + 0x18) < 8) {
            iVar6 = local_88 + 4;
          }
          else {
            iVar6 = *(int *)(local_88 + 4);
          }
          if ((short *)(iVar6 + *(int *)(local_88 + 0x14) * 2) <= psVar7) {
            FUN_00a3fb10();
          }
        }
        psVar7 = psVar7 + 1;
      }
    }
    if ((local_9c == 0) || ((local_9c < 2 && (*local_98 == 0x20)))) goto LAB_00a04f6e;
    FUN_00a03ab0(local_98,&local_9c);
  }
  else {
    local_94 = 0xa0;
    iVar6 = FUN_00420f3f(&local_94,0,1);
    if (iVar6 == -1) {
      FUN_00a03b70(param_1);
    }
    else {
      local_1c = 7;
      local_20 = 0;
      local_30 = local_30 & 0xffff0000;
      FID_conflict_assign(param_1,0,0xffffffff);
      local_18 = (void *)0x0;
      local_4 = 0;
      FUN_00855d90(0x20,1);
      local_4._0_1_ = 1;
      FUN_00853fa0(0xa0,1);
      local_4._0_1_ = 2;
      FUN_00852a70(local_7c,local_58,1);
      _free(local_60);
      if (7 < local_64) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_78);
      }
      local_64 = 7;
      local_68 = 0;
      local_78 = local_78 & 0xffff0000;
      local_4 = (uint)local_4._1_3_ << 8;
      _free(local_3c);
      if (7 < local_40) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_54);
      }
      FUN_00a03b70(local_34);
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
    }
  }
  *(undefined *)(param_1_00 + 0x58) = 0;
LAB_00a04f6e:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_00a04fa0(void)

{
  return &PTR_u_wxHtmlParser_0323e708;
}



undefined ** FUN_00a04fb0(void)

{
  return &PTR_u_wxHtmlTagHandler_0323e720;
}



undefined ** FUN_00a04fc0(void)

{
  return &PTR_u_wxHtmlEntitiesParser_0323e738;
}



undefined4 __thiscall FUN_00a04fd0(int param_1_00,int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = 1;
  if (param_1 == 1) {
    uVar1 = 5;
  }
  if (*(int *)(param_1_00 + 0x40) != 0) {
    uVar1 = FUN_00864c40(param_2,uVar1);
    return uVar1;
  }
  return 0;
}



void FUN_00a05040(int param_1,int param_2,int param_3)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = (undefined4 *)operator_new(param_2 << 4);
  if (param_3 != 0) {
    iVar2 = param_1 - (int)puVar1;
    do {
      if (puVar1 != (undefined4 *)0x0) {
        *puVar1 = *(undefined4 *)(iVar2 + (int)puVar1);
        puVar1[1] = *(undefined4 *)(iVar2 + 4 + (int)puVar1);
        puVar1[2] = *(undefined4 *)(iVar2 + 8 + (int)puVar1);
        puVar1[3] = *(undefined4 *)(iVar2 + 0xc + (int)puVar1);
      }
      puVar1 = puVar1 + 4;
      param_3 = param_3 + -1;
    } while (param_3 != 0);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



undefined4 * __thiscall FUN_00a050a0(int *param_1_00,undefined4 *param_1,int param_2)

{
  int iVar1;
  float fVar2;
  float fVar3;
  undefined4 *puVar4;
  
  puVar4 = (undefined4 *)operator_new(8);
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    *puVar4 = 0;
    puVar4[1] = *param_1;
  }
  *puVar4 = *(undefined4 *)(*param_1_00 + param_2 * 4);
  *(undefined4 **)(*param_1_00 + param_2 * 4) = puVar4;
  param_1_00[2] = param_1_00[2] + 1;
  iVar1 = param_1_00[1];
  fVar2 = (float)param_1_00[2];
  if (param_1_00[2] < 0) {
    fVar2 = fVar2 + 4.294967e+09;
  }
  fVar3 = (float)iVar1;
  if (iVar1 < 0) {
    fVar3 = fVar3 + 4.294967e+09;
  }
  if (0.85 <= fVar2 / fVar3) {
    FUN_0090e820(iVar1);
  }
  return puVar4;
}



void __thiscall FUN_00a05150(uint *param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  
  if (param_1_00[1] < param_1) {
    uVar2 = *param_1_00;
    if (uVar2 == 0) {
      uVar1 = 0x10;
    }
    else {
      uVar1 = uVar2;
      if (0xfff < uVar2) {
        uVar1 = 0x1000;
      }
    }
    uVar1 = uVar1 + param_1_00[1];
    if (param_1 < uVar1) {
      param_1 = uVar1;
    }
    uVar2 = FUN_00a05040(param_1_00[2],param_1 << 4,uVar2);
    param_1_00[2] = uVar2;
    param_1_00[1] = param_1;
  }
  return;
}



undefined4 * __thiscall FUN_00a051b0(int *param_1_00,undefined4 *param_1,uint *param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  uint uVar3;
  
  uVar3 = *param_2 % (uint)param_1_00[1];
  puVar1 = *(undefined4 **)(*param_1_00 + uVar3 * 4);
  while( true ) {
    if (puVar1 == (undefined4 *)0x0) {
      uVar2 = FUN_00a050a0(param_2,uVar3);
      param_1[1] = param_1_00;
      *param_1 = uVar2;
      *(undefined *)(param_1 + 2) = 1;
      return param_1;
    }
    if (puVar1[1] == *param_2) break;
    puVar1 = (undefined4 *)*puVar1;
  }
  param_1[1] = param_1_00;
  *param_1 = puVar1;
  *(undefined *)(param_1 + 2) = 0;
  return param_1;
}



int FUN_00a05210(int param_1)

{
  int iVar1;
  void *pvVar2;
  wchar_t *_Format;
  int local_4;
  
  iVar1 = param_1;
  local_4 = 0;
  if (*(int *)(param_1 + 0x14) != 0) {
    FUN_0081feb2(&param_1,0);
    if (param_1 == 0x23) {
      if (*(uint *)(iVar1 + 0x18) < 8) {
        iVar1 = iVar1 + 4;
      }
      else {
        iVar1 = *(int *)(iVar1 + 4);
      }
      if ((*(short *)(iVar1 + 2) == 0x78) || (*(short *)(iVar1 + 2) == 0x58)) {
        _Format = L"%x";
        iVar1 = iVar1 + 2;
      }
      else {
        _Format = L"%u";
      }
      iVar1 = FID_conflict__swscanf((wchar_t *)(iVar1 + 2),_Format,&local_4);
      if (iVar1 != 1) {
        return 0;
      }
    }
    else {
      if ((DAT_032ea414 == 0) && (DAT_0323e79c != 0)) {
        DAT_032ea414 = 0;
        do {
          DAT_032ea414 = DAT_032ea414 + 1;
        } while ((&DAT_0323e79c)[DAT_032ea414 * 2] != 0);
      }
      if (*(uint *)(iVar1 + 0x18) < 8) {
        pvVar2 = (void *)(iVar1 + 4);
      }
      else {
        pvVar2 = *(void **)(iVar1 + 4);
      }
      pvVar2 = _bsearch(pvVar2,&PTR_u_AElig_0323e798,DAT_032ea414,8,(_PtFuncCompare *)&LAB_00a05000)
      ;
      if (pvVar2 != (void *)0x0) {
        local_4 = *(int *)((int)pvVar2 + 4);
      }
    }
    if (local_4 != 0) {
      return local_4;
    }
  }
  return 0;
}



uint FUN_00a052e0(int **param_1,int *param_2,int *param_3)

{
  short sVar1;
  int *piVar2;
  int **ppiVar3;
  int *piVar4;
  int *piVar5;
  int iVar6;
  undefined4 *puVar7;
  int *local_4;
  
  ppiVar3 = param_1;
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*param_1 != (int *)0xfffffffc) {
      if (*param_1 == (int *)0x0) {
        FUN_00a3fb10();
      }
      piVar2 = *ppiVar3;
      if ((uint)piVar2[6] < 8) {
        piVar4 = piVar2 + 1;
      }
      else {
        piVar4 = (int *)piVar2[1];
      }
      if ((int *)((int)piVar4 + piVar2[5] * 2) <= ppiVar3[1]) {
        FUN_00a3fb10();
      }
    }
    if (*(short *)ppiVar3[1] != 0x3c) {
      FUN_00840480("..\\..\\src\\html\\htmlpars.cpp",0x3bc,"wxHtmlParser::SkipCommentTag",
                   "*start == \'<\'",L"should be called on the tag start");
    }
  }
  local_4 = ppiVar3[1];
  piVar2 = *ppiVar3;
  if ((param_2 != (int *)0xfffffffc) && ((param_2 == (int *)0x0 || (param_2 != piVar2)))) {
    FUN_00a3fb10();
  }
  piVar4 = piVar2;
  if (7 < (int)((int)param_3 - (int)ppiVar3[1] & 0xfffffffeU)) {
    if (piVar2 != (int *)0xfffffffc) {
      if (piVar2 == (int *)0x0) {
        FUN_00a3fb10();
      }
      if ((uint)piVar2[6] < 8) {
        piVar5 = piVar2 + 1;
      }
      else {
        piVar5 = (int *)piVar2[1];
      }
      if ((int *)((int)piVar5 + piVar2[5] * 2) <= local_4) {
        FUN_00a3fb10();
      }
    }
    local_4 = (int *)((int)local_4 + 2);
    if (piVar2 != (int *)0xfffffffc) {
      if (piVar2 == (int *)0x0) {
        FUN_00a3fb10();
      }
      if ((uint)piVar2[6] < 8) {
        piVar4 = piVar2 + 1;
      }
      else {
        piVar4 = (int *)piVar2[1];
      }
      piVar4 = (int *)((int)piVar4 + piVar2[5] * 2);
      if (piVar4 <= local_4) {
        piVar4 = (int *)FUN_00a3fb10();
      }
    }
    if (*(short *)local_4 == 0x21) {
      puVar7 = &param_1;
      FUN_00847800(puVar7);
      piVar4 = (int *)FUN_00847840(puVar7);
      if (*piVar4 == 0x2d) {
        puVar7 = &param_1;
        FUN_00847800(puVar7);
        piVar4 = (int *)FUN_00847840(puVar7);
        if (*piVar4 == 0x2d) {
          *ppiVar3 = piVar2;
          ppiVar3[1] = local_4;
LAB_00a0544a:
          do {
            iVar6 = 0;
            while( true ) {
              do {
                if (piVar2 != (int *)0xfffffffc) {
                  if (piVar2 == (int *)0x0) {
                    FUN_00a3fb10();
                  }
                  if ((uint)piVar2[6] < 8) {
                    piVar4 = piVar2 + 1;
                  }
                  else {
                    piVar4 = (int *)piVar2[1];
                  }
                  if ((int *)((int)piVar4 + piVar2[5] * 2) <= local_4) {
                    FUN_00a3fb10();
                  }
                }
                local_4 = (int *)((int)local_4 + 2);
                if ((piVar2 != (int *)0xfffffffc) && ((piVar2 == (int *)0x0 || (piVar2 != param_2)))
                   ) {
                  FUN_00a3fb10();
                }
                if (param_3 <= local_4) goto LAB_00a0551b;
                if (piVar2 != (int *)0xfffffffc) {
                  if (piVar2 == (int *)0x0) {
                    FUN_00a3fb10();
                  }
                  if ((uint)piVar2[6] < 8) {
                    piVar4 = piVar2 + 1;
                  }
                  else {
                    piVar4 = (int *)piVar2[1];
                  }
                  if ((int *)((int)piVar4 + piVar2[5] * 2) <= local_4) {
                    FUN_00a3fb10();
                  }
                }
                sVar1 = *(short *)local_4;
              } while (((((sVar1 == 0x20) || (sVar1 == 10)) || (sVar1 == 0xd)) || (sVar1 == 9)) &&
                      (1 < iVar6));
              if (sVar1 == 0x3e) break;
              if (sVar1 != 0x2d) goto LAB_00a0544a;
              iVar6 = iVar6 + 1;
            }
            if (1 < iVar6) {
              *ppiVar3 = piVar2;
              ppiVar3[1] = local_4;
LAB_00a0551b:
              return CONCAT31((int3)((uint)piVar2 >> 8),1);
            }
          } while( true );
        }
      }
    }
  }
  return (uint)piVar4 & 0xffffff00;
}



void __fastcall FUN_00a05540(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xc);
  if (iVar1 != 0) {
    FUN_00a08960();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  *(undefined4 *)(param_1 + 8) = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  if (*(int *)(param_1 + 0x10) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(*(int *)(param_1 + 0x10) + 8));
  }
  return;
}



uint __fastcall FUN_00a055a0(int param_1)

{
  int iVar1;
  undefined4 *puVar2;
  uint in_EAX;
  
  if (*(int *)(param_1 + 0x1c) == 0) {
    return in_EAX & 0xffffff00;
  }
  FUN_00a05540();
  iVar1 = *(int *)(param_1 + 0x18);
  if (iVar1 != 0) {
    _free(*(void **)(iVar1 + 0x1c));
    if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
    }
    *(undefined4 *)(iVar1 + 0x18) = 7;
    *(undefined4 *)(iVar1 + 0x14) = 0;
    *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  puVar2 = *(undefined4 **)(param_1 + 0x1c);
  *(undefined4 *)(param_1 + 0x1c) = puVar2[5];
  *(undefined4 *)(param_1 + 8) = *puVar2;
  *(undefined4 *)(param_1 + 0xc) = puVar2[1];
  *(undefined4 *)(param_1 + 0x10) = puVar2[2];
  *(undefined4 *)(param_1 + 0x14) = puVar2[3];
  *(undefined4 *)(param_1 + 0x18) = puVar2[4];
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(puVar2);
}



void thunk_FUN_00a05540(void)

{
  FUN_00a05540();
  return;
}



void __thiscall FUN_00a05640(int param_1_00,int param_1,int *param_2,int *param_3)

{
  uint uVar1;
  short *psVar2;
  bool bVar3;
  char cVar4;
  int *piVar5;
  int *piVar6;
  void *pvVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  undefined4 *puVar11;
  undefined4 *puVar12;
  undefined4 *puVar13;
  bool bVar14;
  int local_78;
  short *local_74;
  int local_70;
  short *local_6c;
  int local_68;
  short *local_64;
  int local_60;
  int local_5c;
  int local_58;
  short *local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  int local_40;
  short *local_3c;
  int local_38;
  short *local_34;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bece1f;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar14 = false;
  iVar8 = *param_2;
  if ((iVar8 != -4) && ((iVar8 == 0 || (iVar8 != *param_3)))) {
    FUN_00a3fb10();
  }
  local_74 = (short *)param_2[1];
  if ((short *)param_3[1] <= local_74) {
    ExceptionList = local_c;
    return;
  }
  iVar8 = *param_2;
  local_78 = iVar8;
  local_70 = iVar8;
  local_6c = local_74;
  if (param_1 != 0) {
    FUN_008560c0();
    bVar14 = true;
    local_4 = 0;
    cVar4 = FUN_00a07b30();
    bVar3 = true;
    if (cVar4 != '\0') goto LAB_00a056fe;
  }
  bVar3 = false;
LAB_00a056fe:
  local_4 = 0xffffffff;
  if ((bVar14) && (_free(local_14), 7 < local_18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  iVar9 = local_78;
  if (bVar3) {
    local_74 = (short *)param_3[1];
    iVar9 = *param_3;
    local_78 = *param_3;
  }
LAB_00a05750:
  do {
    while( true ) {
      if ((iVar9 != -4) && ((iVar9 == 0 || (iVar9 != *param_3)))) {
        FUN_00a3fb10();
        iVar9 = local_78;
      }
      if ((short *)param_3[1] <= local_74) {
        if ((iVar8 != -4) && ((iVar8 == 0 || (iVar8 != *param_3)))) {
          FUN_00a3fb10();
        }
        if (local_6c < (short *)param_3[1]) {
          piVar6 = *(int **)(param_1_00 + 0x10);
          iVar8 = *param_3;
          iVar9 = param_3[1];
          FUN_00a05150();
          piVar5 = (int *)(*piVar6 * 0x10 + piVar6[2]);
          if (piVar5 != (int *)0x0) {
            *piVar5 = local_70;
            piVar5[1] = (int)local_6c;
            piVar5[2] = iVar8;
            piVar5[3] = iVar9;
          }
          *piVar6 = *piVar6 + 1;
        }
        ExceptionList = local_c;
        return;
      }
      if (iVar9 != -4) {
        if (iVar9 == 0) {
          FUN_00a3fb10();
          iVar9 = local_78;
        }
        if (*(uint *)(iVar9 + 0x18) < 8) {
          iVar10 = iVar9 + 4;
        }
        else {
          iVar10 = *(int *)(iVar9 + 4);
        }
        if ((short *)(iVar10 + *(int *)(iVar9 + 0x14) * 2) <= local_74) {
          FUN_00a3fb10();
          iVar9 = local_78;
        }
      }
      if (*local_74 == 0x3c) break;
      if (iVar9 != -4) {
        if (iVar9 == 0) {
          FUN_00a3fb10();
          iVar9 = local_78;
        }
        if (*(uint *)(iVar9 + 0x18) < 8) {
          iVar10 = iVar9 + 4;
        }
        else {
          iVar10 = *(int *)(iVar9 + 4);
        }
        if ((short *)(iVar10 + *(int *)(iVar9 + 0x14) * 2) <= local_74) {
          FUN_00a3fb10();
          iVar9 = local_78;
        }
      }
      local_74 = local_74 + 1;
    }
    if ((iVar8 != -4) && ((iVar8 == 0 || (iVar8 != iVar9)))) {
      FUN_00a3fb10();
      iVar9 = local_78;
    }
    psVar2 = local_74;
    if (local_6c < local_74) {
      piVar6 = *(int **)(param_1_00 + 0x10);
      FUN_00a05150();
      piVar5 = (int *)(*piVar6 * 0x10 + piVar6[2]);
      if (piVar5 != (int *)0x0) {
        *piVar5 = local_70;
        piVar5[1] = (int)local_6c;
        piVar5[2] = iVar9;
        piVar5[3] = (int)psVar2;
      }
      *piVar6 = *piVar6 + 1;
    }
    iVar8 = *(int *)(param_1_00 + 0x18);
    uVar1 = *(uint *)(iVar8 + 0x18);
    puVar11 = (undefined4 *)(iVar8 + 4);
    puVar12 = puVar11;
    if (7 < uVar1) {
      puVar12 = (undefined4 *)*puVar11;
    }
    iVar8 = *(int *)(iVar8 + 0x14) * 2;
    puVar12 = (undefined4 *)((int)puVar12 + iVar8);
    if (puVar12 == (undefined4 *)0x0) {
LAB_00a05856:
      FUN_00a3fb10();
    }
    else {
      puVar13 = puVar11;
      if (7 < uVar1) {
        puVar13 = (undefined4 *)*puVar11;
      }
      if (puVar12 < puVar13) goto LAB_00a05856;
      if (7 < uVar1) {
        puVar11 = (undefined4 *)*puVar11;
      }
      if ((undefined4 *)((int)puVar11 + iVar8) < puVar12) goto LAB_00a05856;
    }
    cVar4 = FUN_00a052e0(&local_78);
    if (cVar4 != '\0') {
      local_68 = local_78;
      local_64 = local_74;
      piVar6 = (int *)FUN_004226c0();
      local_74 = (short *)piVar6[1];
      local_6c = (short *)piVar6[1];
      iVar9 = *piVar6;
      iVar8 = *piVar6;
      local_78 = *piVar6;
      local_70 = *piVar6;
      goto LAB_00a05750;
    }
    local_60 = *param_3;
    local_5c = param_3[1];
    piVar6 = (int *)FUN_004226c0();
    psVar2 = (short *)piVar6[1];
    if ((local_78 != -4) && ((local_78 == 0 || (local_78 != *piVar6)))) {
      FUN_00a3fb10();
    }
    iVar9 = local_78;
    if (local_74 < psVar2) {
      local_54 = local_74;
      local_58 = local_78;
      piVar6 = (int *)FUN_004226c0();
      iVar8 = *piVar6;
      psVar2 = (short *)piVar6[1];
      if (iVar8 != -4) {
        if (iVar8 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(iVar8 + 0x18) < 8) {
          iVar9 = iVar8 + 4;
        }
        else {
          iVar9 = *(int *)(iVar8 + 4);
        }
        if ((short *)(iVar9 + *(int *)(iVar8 + 0x14) * 2) <= psVar2) {
          FUN_00a3fb10();
        }
      }
      iVar9 = local_78;
      if (*psVar2 == 0x2f) goto LAB_00a05a80;
      pvVar7 = operator_new(0x74);
      if (param_1 == 0) {
        local_4 = 2;
        if (pvVar7 == (void *)0x0) {
          iVar8 = 0;
        }
        else {
          iVar8 = FUN_00a08a70(0,*(undefined4 *)(param_1_00 + 0x18),&local_78,param_3);
        }
        local_4 = 0xffffffff;
        if (*(int *)(param_1_00 + 0xc) == 0) {
          *(int *)(param_1_00 + 0xc) = iVar8;
        }
        else {
          iVar9 = FUN_00a07760();
          *(int *)(iVar8 + 100) = iVar9;
          *(int *)(iVar9 + 0x60) = iVar8;
        }
      }
      else {
        local_4 = 1;
        if (pvVar7 == (void *)0x0) {
          local_4 = 0xffffffff;
          iVar8 = 0;
        }
        else {
          iVar8 = FUN_00a08a70(param_1,*(undefined4 *)(param_1_00 + 0x18),&local_78,param_3);
          local_4 = 0xffffffff;
        }
      }
      if (*(char *)(iVar8 + 0x24) == '\0') {
        iVar9 = *(int *)(iVar8 + 0x28);
        local_74 = *(short **)(iVar8 + 0x2c);
        iVar8 = iVar9;
        local_78 = iVar9;
        local_70 = iVar9;
        local_6c = local_74;
      }
      else {
        local_4c = *(undefined4 *)(iVar8 + 0x34);
        local_50 = *(undefined4 *)(iVar8 + 0x30);
        local_48 = *(undefined4 *)(iVar8 + 0x28);
        local_44 = *(undefined4 *)(iVar8 + 0x2c);
        FUN_00a05640(iVar8,&local_48);
        iVar9 = *(int *)(iVar8 + 0x38);
        local_74 = *(short **)(iVar8 + 0x3c);
        iVar8 = iVar9;
        local_78 = iVar9;
        local_70 = iVar9;
        local_6c = local_74;
      }
    }
    else {
LAB_00a05a80:
      while( true ) {
        if ((iVar9 != -4) && ((iVar9 == 0 || (iVar9 != *param_3)))) {
          FUN_00a3fb10();
          iVar9 = local_78;
        }
        if ((short *)param_3[1] <= local_74) break;
        if (iVar9 != -4) {
          if (iVar9 == 0) {
            FUN_00a3fb10();
            iVar9 = local_78;
          }
          if (*(uint *)(iVar9 + 0x18) < 8) {
            iVar8 = iVar9 + 4;
          }
          else {
            iVar8 = *(int *)(iVar9 + 4);
          }
          if ((short *)(iVar8 + *(int *)(iVar9 + 0x14) * 2) <= local_74) {
            FUN_00a3fb10();
            iVar9 = local_78;
          }
        }
        if (*local_74 == 0x3e) break;
        if (iVar9 != -4) {
          if (iVar9 == 0) {
            FUN_00a3fb10();
            iVar9 = local_78;
          }
          if (*(uint *)(iVar9 + 0x18) < 8) {
            iVar8 = iVar9 + 4;
          }
          else {
            iVar8 = *(int *)(iVar9 + 4);
          }
          if ((short *)(iVar8 + *(int *)(iVar9 + 0x14) * 2) <= local_74) {
            FUN_00a3fb10();
            iVar9 = local_78;
          }
        }
        local_74 = local_74 + 1;
      }
      if ((iVar9 != -4) && ((iVar9 == 0 || (iVar9 != *param_3)))) {
        FUN_00a3fb10();
        iVar9 = local_78;
      }
      if (local_74 < (short *)param_3[1]) {
        local_3c = local_74;
        local_40 = iVar9;
        piVar6 = (int *)FUN_004226c0();
        local_38 = *piVar6;
        local_6c = (short *)piVar6[1];
        iVar9 = local_78;
        iVar8 = local_38;
        local_70 = local_38;
        local_34 = local_6c;
      }
      else {
        local_70 = local_78;
        local_6c = local_74;
        iVar8 = local_78;
      }
    }
  } while( true );
}



int FUN_00a05c50(int param_1,int param_2)

{
  FUN_00427fd0(*(undefined4 *)(param_2 + 0x28),*(undefined4 *)(param_2 + 0x2c),
               *(undefined4 *)(param_2 + 0x30),*(undefined4 *)(param_2 + 0x34));
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



undefined4 FUN_00a05c90(undefined4 param_1)

{
  FUN_004325b6(L"META,BODY");
  return param_1;
}



void FUN_00a05cc0(void)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  char cVar4;
  uint uVar5;
  int iVar6;
  undefined auStack_f4 [3];
  char local_f1;
  undefined4 local_f0;
  int local_ec;
  undefined local_e8 [4];
  uint local_e4;
  undefined4 local_d4;
  uint local_d0;
  void *local_cc;
  undefined local_c4 [4];
  uint local_c0;
  undefined4 local_b0;
  uint local_ac;
  void *local_a8;
  undefined local_a0 [4];
  undefined4 local_9c;
  uint local_88;
  void *local_84;
  undefined local_7c [4];
  uint local_78;
  undefined4 local_68;
  uint local_64;
  void *local_60;
  undefined local_58 [36];
  undefined local_34 [4];
  undefined4 local_30;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00becf01;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_f4;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xfffffefc;
  ExceptionList = &local_c;
  local_f0 = 0;
  FUN_008560c0(local_a0);
  local_4 = 0;
  iVar6 = FUN_008507a0(L"BODY");
  local_4._0_1_ = 0xff;
  local_4._1_3_ = 0xffffff;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_9c);
  }
  if (iVar6 == 0) {
    (**(code **)(**(int **)(local_ec + 8) + 0x1c))(uVar5);
    goto LAB_00a060df;
  }
  FUN_004325b6(L"HTTP-EQUIV");
  bVar3 = false;
  bVar2 = false;
  bVar1 = false;
  local_4 = 1;
  local_f0 = 1;
  cVar4 = FUN_00a07740(local_a0);
  if (cVar4 == '\0') {
LAB_00a05e4b:
    local_f1 = '\0';
  }
  else {
    FUN_004325b6(L"HTTP-EQUIV");
    local_4 = 2;
    local_f0 = 3;
    FUN_00a09860(local_c4,local_e8,0);
    bVar3 = true;
    bVar2 = true;
    bVar1 = false;
    local_4 = 3;
    local_f0 = 7;
    cVar4 = FUN_00855ef0(L"Content-Type",0);
    if (cVar4 == '\0') goto LAB_00a05e4b;
    FUN_004325b6(L"CONTENT");
    bVar3 = true;
    bVar2 = true;
    bVar1 = true;
    local_4 = 4;
    local_f0 = 0xf;
    cVar4 = FUN_00a07740(local_7c);
    if (cVar4 == '\0') goto LAB_00a05e4b;
    local_f1 = '\x01';
  }
  if (bVar1) {
    _free(local_60);
    if (7 < local_64) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_78);
    }
    local_64 = 7;
    local_68 = 0;
    local_78 = local_78 & 0xffff0000;
  }
  if (bVar2) {
    _free(local_a8);
    if (7 < local_ac) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_c0);
    }
    local_ac = 7;
    local_b0 = 0;
    local_c0 = local_c0 & 0xffff0000;
  }
  if (bVar3) {
    _free(local_cc);
    if (7 < local_d0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_e4);
    }
    local_d0 = 7;
    local_d4 = 0;
    local_e4 = local_e4 & 0xffff0000;
  }
  local_4._0_1_ = 0xff;
  local_4._1_3_ = 0xffffff;
  _free(local_84);
  if (7 < local_88) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_9c);
  }
  if (local_f1 != '\0') {
    FUN_004325b6(L"CONTENT");
    local_4 = 5;
    FUN_00a09860(local_c4,local_e8,0);
    local_4._0_1_ = 6;
    FUN_00863b70(local_34);
    _free(local_a8);
    if (7 < local_ac) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_c0);
    }
    local_ac = 7;
    local_b0 = 0;
    local_c0 = local_c0 & 0xffff0000;
    local_4._0_1_ = 9;
    _free(local_cc);
    if (7 < local_d0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_e4);
    }
    local_e4 = local_e4 & 0xffff0000;
    local_d0 = 7;
    local_d4 = 0;
    FUN_008527e0(local_a0,0x13);
    local_4._0_1_ = 10;
    iVar6 = FUN_008507a0(L"text/html; charset=");
    local_4._0_1_ = 9;
    _free(local_84);
    if (7 < local_88) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_9c);
    }
    if (iVar6 == 0) {
      iVar6 = FUN_00852560(local_58,0x13,0xffffffff);
      local_4._0_1_ = 0xb;
      if (*(int *)(local_ec + 0xc) != iVar6) {
        FID_conflict_assign(iVar6,0,0xffffffff);
      }
      local_4._0_1_ = 9;
      FUN_0040159c();
      (**(code **)(**(int **)(local_ec + 8) + 0x1c))();
    }
    _free(local_18);
    if (7 < local_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_30);
    }
  }
LAB_00a060df:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00a06110(int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  undefined *puVar8;
  int local_28;
  undefined4 *local_24;
  undefined local_20 [8];
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00becf38;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  FUN_00a07bd0(*(undefined4 *)(param_1 + 0x18));
  local_4 = 0;
  puVar4 = (undefined4 *)operator_new(0xc);
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    *puVar4 = 0;
    puVar4[1] = 0;
    puVar4[2] = 0;
  }
  iVar1 = *(int *)(param_1 + 0x18);
  *(undefined4 **)(param_1 + 0x10) = puVar4;
  uVar2 = *(uint *)(iVar1 + 0x18);
  puVar4 = (undefined4 *)(iVar1 + 4);
  puVar7 = puVar4;
  if (7 < uVar2) {
    puVar7 = (undefined4 *)*puVar4;
  }
  if (puVar7 != (undefined4 *)0x0) {
    puVar6 = puVar4;
    if (7 < uVar2) {
      puVar6 = (undefined4 *)*puVar4;
    }
    if (puVar6 <= puVar7) {
      if (7 < uVar2) {
        puVar4 = (undefined4 *)*puVar4;
      }
      if (puVar7 <= (undefined4 *)((int)puVar4 + *(int *)(iVar1 + 0x14) * 2)) goto LAB_00a061a6;
    }
  }
  FUN_00a3fb10(uVar3);
LAB_00a061a6:
  puVar8 = local_18;
  local_28 = iVar1;
  local_24 = puVar7;
  uVar5 = FUN_008478e0(local_20);
  FUN_00a05640(0,&local_28,uVar5,puVar8);
  *(undefined4 *)(param_1 + 0x14) = 0;
  local_4 = 0xffffffff;
  FUN_00a08920();
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_00a06200(undefined4 *param_1)

{
  uint uVar1;
  size_t sVar2;
  void *pvVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00becf89;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  param_1[1] = 0;
  local_4 = 0;
  *param_1 = wxHtmlParser::vftable;
  sVar2 = FUN_00893ca0(100,uVar1);
  param_1[9] = sVar2;
  param_1[10] = 0;
  pvVar3 = _calloc(sVar2,4);
  param_1[8] = pvVar3;
  local_4._0_1_ = 1;
  sVar2 = FUN_00893ca0(100);
  param_1[0xd] = sVar2;
  param_1[0xe] = 0;
  pvVar3 = _calloc(sVar2,4);
  param_1[0xc] = pvVar3;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  local_4 = CONCAT31(local_4._1_3_,3);
  param_1[6] = 0;
  puVar4 = (undefined4 *)operator_new(8);
  if (puVar4 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    puVar4[1] = 0;
    *puVar4 = wxHtmlEntitiesParser::vftable;
  }
  param_1[0x14] = puVar4;
  param_1[3] = 0;
  param_1[2] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  param_1[7] = 0;
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00a062d0(undefined4 *param_1)

{
  void **ppvVar1;
  int iVar2;
  int *piVar3;
  char cVar4;
  uint uVar5;
  int *piVar6;
  uint uVar7;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00becfd9;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  *param_1 = wxHtmlParser::vftable;
  local_4 = 3;
  do {
    cVar4 = FUN_00a055a0(uVar5);
  } while (cVar4 != '\0');
  FUN_00a05540();
  uVar5 = param_1[0x11];
  uVar7 = 0;
  if (uVar5 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x11] <= uVar7)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                     "wxVector<class wxHtmlTagHandlersHash *>::at","idx < m_size",0);
      }
      ppvVar1 = *(void ***)(param_1[0x13] + uVar7 * 4);
      if (ppvVar1 != (void **)0x0) {
        FUN_00893cf0(ppvVar1[1],*ppvVar1,FUN_009e7620);
        ppvVar1[2] = (void *)0x0;
        _free(*ppvVar1);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(ppvVar1);
      }
      uVar7 = uVar7 + 1;
    } while (uVar7 < uVar5);
  }
  _free((void *)param_1[0x13]);
  ppvVar1 = (void **)(param_1 + 8);
  param_1[0x13] = 0;
  param_1[0x12] = 0;
  param_1[0x11] = 0;
  uVar5 = 0;
  if (param_1[9] != 0) {
    do {
      if (*(int *)((int)*ppvVar1 + uVar5 * 4) != 0) {
        piVar6 = *(int **)((int)*ppvVar1 + uVar5 * 4);
        goto joined_r0x00a063c9;
      }
      uVar5 = uVar5 + 1;
    } while (uVar5 < (uint)param_1[9]);
  }
  piVar6 = (int *)0x0;
joined_r0x00a063c9:
  do {
    do {
      piVar3 = piVar6;
      if (piVar3 == (int *)0x0) {
        FUN_00893cf0(param_1[9],*ppvVar1,&LAB_00981b50);
        param_1[10] = 0;
        if ((int *)param_1[0x14] != (int *)0x0) {
          (**(code **)(*(int *)param_1[0x14] + 4))(1);
        }
        iVar2 = param_1[6];
        if (iVar2 == 0) {
          _free((void *)param_1[0x13]);
          param_1[0x13] = 0;
          param_1[0x12] = 0;
          param_1[0x11] = 0;
          local_4._0_1_ = 1;
          FUN_00893cf0(param_1[0xd],param_1[0xc],FUN_009e7620);
          param_1[0xe] = 0;
          _free((void *)param_1[0xc]);
          local_4 = (uint)local_4._1_3_ << 8;
          FUN_00893cf0(param_1[9],*ppvVar1,&LAB_00981b50);
          param_1[10] = 0;
          _free(*ppvVar1);
          local_4 = 0xffffffff;
          *param_1 = wxObject::vftable;
          FUN_0083e850();
          ExceptionList = local_c;
          return;
        }
        _free(*(void **)(iVar2 + 0x1c));
        if (*(uint *)(iVar2 + 0x18) < 8) {
          *(undefined4 *)(iVar2 + 0x18) = 7;
          *(undefined4 *)(iVar2 + 0x14) = 0;
          *(undefined2 *)(iVar2 + 4) = 0;
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(iVar2);
        }
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(iVar2 + 4));
      }
      if ((int *)piVar3[1] != (int *)0x0) {
        (**(code **)(*(int *)piVar3[1] + 4))(1);
      }
      piVar6 = (int *)*piVar3;
    } while ((int *)*piVar3 != (int *)0x0);
    uVar7 = param_1[9];
    uVar5 = (uint)piVar3[1] % uVar7 + 1;
    if (uVar5 < uVar7) {
      piVar6 = (int *)((int)*ppvVar1 + uVar5 * 4);
      do {
        if (*piVar6 != 0) {
          piVar6 = *(int **)((int)*ppvVar1 + uVar5 * 4);
          goto joined_r0x00a063c9;
        }
        uVar5 = uVar5 + 1;
        piVar6 = piVar6 + 1;
      } while (uVar5 < uVar7);
    }
    piVar6 = (int *)0x0;
  } while( true );
}



void __thiscall FUN_00a06520(int param_1_00,undefined4 param_1)

{
  int iVar1;
  void *pvVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be860b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00a05540(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  iVar1 = *(int *)(param_1_00 + 0x18);
  if (iVar1 == 0) {
    pvVar2 = operator_new(0x24);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      pvVar2 = (void *)0x0;
    }
    else {
      *(undefined4 *)((int)pvVar2 + 0x18) = 7;
      *(undefined4 *)((int)pvVar2 + 0x14) = 0;
      *(undefined2 *)((int)pvVar2 + 4) = 0;
      FID_conflict_assign(param_1,0,0xffffffff);
      *(undefined4 *)((int)pvVar2 + 0x1c) = 0;
    }
    local_4 = 0xffffffff;
    *(void **)(param_1_00 + 0x18) = pvVar2;
    FUN_00a06110();
    *(undefined4 *)(param_1_00 + 8) = 0;
    *(undefined4 *)(param_1_00 + 0x14) = 0;
    ExceptionList = local_c;
    return;
  }
  _free(*(void **)(iVar1 + 0x1c));
  if (7 < *(uint *)(iVar1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(iVar1 + 4));
  }
  *(undefined4 *)(iVar1 + 0x18) = 7;
  *(undefined4 *)(iVar1 + 0x14) = 0;
  *(undefined2 *)(iVar1 + 4) = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar1);
}



void __thiscall FUN_00a06600(undefined4 param_1_00,int *param_1)

{
  char cVar1;
  undefined4 uVar2;
  int **ppiVar3;
  int *unaff_EBX;
  int *local_dc;
  uint uStack_d8;
  undefined4 uStack_c8;
  uint uStack_c4;
  void *pvStack_c0;
  undefined auStack_b8 [4];
  undefined4 uStack_b4;
  uint uStack_a0;
  void *pvStack_9c;
  undefined auStack_94 [12];
  undefined4 uStack_88;
  undefined local_84 [16];
  uint uStack_74;
  void *pvStack_70;
  void *pvStack_14;
  uint local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bed029;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_dc;
  ExceptionList = &local_c;
  local_dc = param_1;
  (**(code **)(*param_1 + 0x14))(local_84,DAT_0323f878 ^ (uint)&stack0xffffff14);
  uStack_8 = (undefined *)0x0;
  FUN_004325b6(&DAT_00d2e8cc);
  uStack_8._0_1_ = 1;
  FUN_00894710(&uStack_88,&local_dc,0);
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,3);
  _free(pvStack_c0);
  if (7 < uStack_c4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_d8);
  }
  uStack_d8 = uStack_d8 & 0xffff0000;
  uStack_c4 = 7;
  uStack_c8 = 0;
  cVar1 = FUN_00894180();
  while (cVar1 != '\0') {
    uVar2 = FUN_00894270(auStack_b8);
    uStack_8._0_1_ = 4;
    ppiVar3 = (int **)FUN_008c39e0(uVar2);
    *ppiVar3 = param_1;
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,3);
    _free(pvStack_9c);
    if (7 < uStack_a0) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_b4);
    }
    cVar1 = FUN_00894180();
  }
  FUN_00a051b0(auStack_94,&stack0xffffff20);
  (**(code **)(*unaff_EBX + 0x10))(param_1_00);
  local_c = (void *)((uint)local_c & 0xffffff00);
  FUN_0083fa70();
  _free(pvStack_70);
  if (7 < uStack_74) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_88);
  }
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a067c0(int param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x18);
  *puVar1 = *(undefined4 *)(param_1_00 + 8);
  puVar1[1] = *(undefined4 *)(param_1_00 + 0xc);
  puVar1[2] = *(undefined4 *)(param_1_00 + 0x10);
  puVar1[3] = *(undefined4 *)(param_1_00 + 0x14);
  puVar1[4] = *(undefined4 *)(param_1_00 + 0x18);
  puVar1[5] = *(undefined4 *)(param_1_00 + 0x1c);
  *(undefined4 **)(param_1_00 + 0x1c) = puVar1;
  *(undefined4 *)(param_1_00 + 8) = 0;
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  *(undefined4 *)(param_1_00 + 0x10) = 0;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined4 *)(param_1_00 + 0x18) = 0;
  FUN_00a06520(param_1);
  return;
}



undefined4 __thiscall FUN_00a06820(undefined4 param_1_00,byte param_1)

{
  FUN_00a062d0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00a06840(int param_1_00,undefined4 param_1)

{
  FUN_00a06520(param_1);
  *(undefined *)(param_1_00 + 0x54) = 0;
  return;
}



void FUN_00a06860(int param_1,undefined *param_2)

{
  ushort uVar1;
  uint uVar2;
  void *pvVar3;
  int iVar4;
  char cVar5;
  short sVar6;
  undefined4 *****pppppuVar7;
  undefined *puVar8;
  undefined *puVar9;
  short **ppsVar10;
  short *psVar11;
  short **ppsVar12;
  short **ppsVar13;
  short **ppsVar14;
  undefined auStack_154 [4];
  undefined2 local_150;
  undefined4 uStack_144;
  undefined *local_140;
  short **local_13c;
  short *local_138;
  undefined *local_11c;
  short **local_118;
  undefined *local_114;
  short **local_110;
  short **local_108;
  int local_104;
  undefined *local_100;
  undefined *local_fc;
  short **local_f8;
  short **local_ec;
  undefined *local_e8;
  short **local_e4;
  undefined local_e0 [4];
  uint local_dc;
  undefined4 local_cc;
  uint local_c8;
  void *local_c4;
  undefined4 local_bc;
  char *local_b4;
  undefined4 local_b0;
  char *local_ac;
  undefined *local_a8;
  __time64_t local_a4;
  DWORD local_9c;
  int local_98;
  uint local_90;
  undefined4 local_80;
  uint local_7c;
  void *local_78;
  undefined local_6c [20];
  undefined local_58 [4];
  undefined4 *****local_54 [4];
  int local_44;
  undefined *local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bed099;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_11c;
  ExceptionList = &local_c;
  local_fc = (undefined *)0x0;
  local_104 = param_1;
  local_100 = param_2;
  local_40 = (undefined *)0x7;
  local_44 = 0;
  local_54[0] = (undefined4 *****)((uint)local_54[0] & 0xffff0000);
  local_3c = (void *)0x0;
  local_4 = 0;
  local_138 = (short *)0xa068f1;
  FUN_008478e0();
  uVar2 = *(uint *)(param_2 + 0x18);
  ppsVar10 = (short **)(param_2 + 4);
  ppsVar13 = ppsVar10;
  if (7 < uVar2) {
    ppsVar13 = (short **)*ppsVar10;
  }
  if (ppsVar13 != (short **)0x0) {
    ppsVar14 = ppsVar10;
    if (7 < uVar2) {
      ppsVar14 = (short **)*ppsVar10;
    }
    if (ppsVar14 <= ppsVar13) {
      if (7 < uVar2) {
        ppsVar10 = (short **)*ppsVar10;
      }
      if (ppsVar13 <= (short **)((int)ppsVar10 + *(int *)(param_2 + 0x14) * 2)) goto LAB_00a0692f;
    }
  }
  FUN_00a3fb10();
LAB_00a0692f:
  local_11c = param_2;
  puVar9 = param_2;
  local_118 = ppsVar13;
  do {
    if ((param_2 != (undefined *)0xfffffffc) &&
       ((param_2 == (undefined *)0x0 || (param_2 != local_114)))) {
      FUN_00a3fb10();
    }
    if (local_110 <= ppsVar13) {
LAB_00a06f8e:
      uVar2 = *(uint *)(puVar9 + 0x18);
      ppsVar10 = (short **)(puVar9 + 4);
      ppsVar13 = ppsVar10;
      if (7 < uVar2) {
        ppsVar13 = (short **)*ppsVar10;
      }
      if (ppsVar13 != (short **)0x0) {
        ppsVar14 = ppsVar10;
        if (7 < uVar2) {
          ppsVar14 = (short **)*ppsVar10;
        }
        if (ppsVar14 <= ppsVar13) {
          if (7 < uVar2) {
            ppsVar10 = (short **)*ppsVar10;
          }
          if (ppsVar13 <= (short **)((int)ppsVar10 + *(int *)(puVar9 + 0x14) * 2))
          goto LAB_00a06fce;
        }
      }
      FUN_00a3fb10();
LAB_00a06fce:
      puVar8 = local_11c;
      if ((local_11c != (undefined *)0xfffffffc) &&
         ((local_11c == (undefined *)0x0 || (local_11c != puVar9)))) {
        FUN_00a3fb10();
      }
      iVar4 = local_104;
      if (local_118 == ppsVar13) {
        local_138 = (short *)0x0;
        *(undefined4 *)(local_104 + 0x18) = 7;
        *(undefined4 *)(local_104 + 0x14) = 0;
        *(undefined2 *)(local_104 + 4) = 0;
        local_140 = (undefined *)0xa07009;
        local_13c = (short **)puVar9;
        FID_conflict_assign();
        *(undefined4 *)(iVar4 + 0x1c) = 0;
        local_138 = (short *)0xa07019;
        _free(local_3c);
        pvVar3 = ExceptionList;
        ExceptionList = local_c;
      }
      else {
        if ((puVar8 != (undefined *)0xfffffffc) &&
           ((puVar8 == (undefined *)0x0 || (puVar8 != local_114)))) {
          FUN_00a3fb10();
        }
        if (local_118 != local_110) {
          local_138 = (short *)local_114;
          local_13c = local_118;
          local_140 = puVar8;
          uStack_144 = 0xa0706d;
          FUN_00a031e0();
        }
        iVar4 = local_104;
        *(undefined4 *)(local_104 + 0x18) = 7;
        *(undefined4 *)(local_104 + 0x14) = 0;
        local_138 = (short *)0x0;
        local_13c = (short **)local_58;
        *(undefined2 *)(local_104 + 4) = 0;
        local_140 = (undefined *)0xa07093;
        FID_conflict_assign();
        *(undefined4 *)(iVar4 + 0x1c) = 0;
        local_138 = (short *)0xa070a3;
        _free(local_3c);
        pvVar3 = ExceptionList;
        ExceptionList = local_c;
      }
      local_c = ExceptionList;
      if ((undefined *)0x7 < local_40) {
                    // WARNING: Subroutine does not return
        local_138 = (short *)&UNK_00a070bd;
        ExceptionList = pvVar3;
        FUN_00a3f6a1();
      }
      ___security_check_cookie_4();
      return;
    }
    if (param_2 != (undefined *)0xfffffffc) {
      if (param_2 == (undefined *)0x0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 8) {
        puVar8 = param_2 + 4;
      }
      else {
        puVar8 = *(undefined **)(param_2 + 4);
      }
      if (puVar8 + *(int *)(param_2 + 0x14) * 2 <= ppsVar13) {
        FUN_00a3fb10();
      }
    }
    if (*(short *)ppsVar13 == 0x26) {
      if ((local_44 == 0) && (local_40 != *(undefined **)(puVar9 + 0x14))) {
        local_13c = (short **)0xa069bb;
        local_138 = (short *)*(undefined **)(puVar9 + 0x14);
        cVar5 = FUN_004182d2();
        if (cVar5 != '\0') {
          local_44 = 0;
          pppppuVar7 = local_54[0];
          if (local_40 < (undefined *)0x8) {
            pppppuVar7 = local_54;
          }
          *(undefined2 *)pppppuVar7 = 0;
        }
      }
      if ((param_2 != (undefined *)0xfffffffc) &&
         ((param_2 == (undefined *)0x0 || (param_2 != local_11c)))) {
        FUN_00a3fb10();
      }
      if (0 < (int)((int)ppsVar13 - (int)local_118 & 0xfffffffeU)) {
        local_138 = (short *)param_2;
        local_13c = local_118;
        local_140 = local_11c;
        uStack_144 = 0xa06a1f;
        FUN_00a031e0();
      }
      if (param_2 != (undefined *)0xfffffffc) {
        if (param_2 == (undefined *)0x0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(param_2 + 0x18) < 8) {
          puVar8 = param_2 + 4;
        }
        else {
          puVar8 = *(undefined **)(param_2 + 4);
        }
        if (puVar8 + *(int *)(param_2 + 0x14) * 2 <= ppsVar13) {
          FUN_00a3fb10();
        }
      }
      ppsVar13 = (short **)((int)ppsVar13 + 2);
      local_108 = ppsVar13;
      if ((param_2 != (undefined *)0xfffffffc) &&
         ((param_2 == (undefined *)0x0 || (param_2 != local_114)))) {
        FUN_00a3fb10();
      }
      ppsVar10 = local_110;
      if (ppsVar13 == local_110) goto LAB_00a06f8e;
      local_1c = 7;
      local_20 = 0;
      local_30 = local_30 & 0xffff0000;
      local_18 = (void *)0x0;
      local_4 = CONCAT31(local_4._1_3_,1);
      ppsVar14 = ppsVar13;
      local_ec = ppsVar13;
      while( true ) {
        if ((param_2 != (undefined *)0xfffffffc) &&
           ((param_2 == (undefined *)0x0 || (param_2 != local_114)))) {
          FUN_00a3fb10();
        }
        if (ppsVar14 == ppsVar10) break;
        if (param_2 != (undefined *)0xfffffffc) {
          if (param_2 == (undefined *)0x0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(param_2 + 0x18) < 8) {
            puVar9 = param_2 + 4;
          }
          else {
            puVar9 = *(undefined **)(param_2 + 4);
          }
          if (puVar9 + *(int *)(param_2 + 0x14) * 2 <= ppsVar14) {
            FUN_00a3fb10();
          }
        }
        uVar1 = *(ushort *)ppsVar14;
        if (((((uVar1 < 0x61) || (0x7a < uVar1)) && ((uVar1 < 0x41 || (0x5a < uVar1)))) &&
            (((uVar1 < 0x30 || (0x39 < uVar1)) && (uVar1 != 0x5f)))) && (uVar1 != 0x23)) break;
        if (param_2 != (undefined *)0xfffffffc) {
          if (param_2 == (undefined *)0x0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(param_2 + 0x18) < 8) {
            puVar9 = param_2 + 4;
          }
          else {
            puVar9 = *(undefined **)(param_2 + 4);
          }
          if (puVar9 + *(int *)(param_2 + 0x14) * 2 <= ppsVar14) {
            FUN_00a3fb10();
          }
        }
        ppsVar14 = (short **)((int)ppsVar14 + 2);
      }
      local_138 = (short *)param_2;
      local_140 = param_2;
      uStack_144 = 0xa06b68;
      local_13c = ppsVar13;
      local_108 = ppsVar14;
      FUN_00a031e0();
      if ((param_2 != (undefined *)0xfffffffc) &&
         ((param_2 == (undefined *)0x0 || (param_2 != local_114)))) {
        FUN_00a3fb10();
      }
      if (ppsVar14 == ppsVar10) {
LAB_00a06bb4:
        if (param_2 != (undefined *)0xfffffffc) {
          if (param_2 == (undefined *)0x0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(param_2 + 0x18) < 8) {
            ppsVar10 = (short **)(param_2 + 4);
          }
          else {
            ppsVar10 = *(short ***)(param_2 + 4);
          }
          if (ppsVar14 <= ppsVar10) {
            FUN_00a3fb10();
          }
        }
        ppsVar14 = (short **)((int)ppsVar14 - 2);
        local_108 = ppsVar14;
      }
      else {
        if (param_2 != (undefined *)0xfffffffc) {
          if (param_2 == (undefined *)0x0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(param_2 + 0x18) < 8) {
            puVar9 = param_2 + 4;
          }
          else {
            puVar9 = *(undefined **)(param_2 + 4);
          }
          if (puVar9 + *(int *)(param_2 + 0x14) * 2 <= ppsVar14) {
            FUN_00a3fb10();
          }
        }
        if (*(short *)ppsVar14 != 0x3b) goto LAB_00a06bb4;
      }
      ppsVar13 = ppsVar14;
      local_f8 = ppsVar14;
      if (param_2 != (undefined *)0xfffffffc) {
        if (param_2 == (undefined *)0x0) {
          FUN_00a3fb10();
        }
        ppsVar10 = (short **)(param_2 + 4);
        ppsVar13 = ppsVar10;
        if (7 < *(uint *)(param_2 + 0x18)) {
          ppsVar13 = (short **)*ppsVar10;
        }
        if ((short *)((int)ppsVar14 + 2U) <= (short *)((int)ppsVar13 + *(int *)(param_2 + 0x14) * 2)
           ) {
          if (7 < *(uint *)(param_2 + 0x18)) {
            ppsVar10 = (short **)*ppsVar10;
          }
          ppsVar13 = local_108;
          if (ppsVar10 <= (short *)((int)ppsVar14 + 2U)) goto LAB_00a06c24;
        }
        FUN_00a3fb10();
        ppsVar13 = local_108;
      }
LAB_00a06c24:
      ppsVar10 = (short **)((int)ppsVar13 + 2);
      local_11c = param_2;
      local_138 = (short *)0xa06c40;
      local_118 = ppsVar10;
      sVar6 = FUN_00a05210();
      if (sVar6 == 0) {
        local_f8 = ppsVar13;
        if (param_2 != (undefined *)0xfffffffc) {
          if (param_2 == (undefined *)0x0) {
            FUN_00a3fb10();
          }
          ppsVar14 = (short **)(param_2 + 4);
          ppsVar12 = ppsVar14;
          if (7 < *(uint *)(param_2 + 0x18)) {
            ppsVar12 = (short **)*ppsVar14;
          }
          if (ppsVar10 <= (short **)((int)ppsVar12 + *(int *)(param_2 + 0x14) * 2)) {
            if (7 < *(uint *)(param_2 + 0x18)) {
              ppsVar14 = (short **)*ppsVar14;
            }
            if (ppsVar14 <= ppsVar10) goto LAB_00a06c9c;
          }
          FUN_00a3fb10();
        }
LAB_00a06c9c:
        local_e8 = param_2;
        local_e4 = local_ec;
        if (param_2 != (undefined *)0xfffffffc) {
          if (param_2 == (undefined *)0x0) {
            FUN_00a3fb10();
          }
          ppsVar10 = (short **)(param_2 + 4);
          ppsVar13 = ppsVar10;
          if (7 < *(uint *)(param_2 + 0x18)) {
            ppsVar13 = (short **)*ppsVar10;
          }
          if ((short *)((int)local_ec - 2U) <=
              (short *)((int)ppsVar13 + *(int *)(param_2 + 0x14) * 2)) {
            if (7 < *(uint *)(param_2 + 0x18)) {
              ppsVar10 = (short **)*ppsVar10;
            }
            ppsVar13 = local_108;
            if (ppsVar10 <= (short *)((int)local_ec - 2U)) goto LAB_00a06cee;
          }
          FUN_00a3fb10();
          ppsVar13 = local_108;
        }
LAB_00a06cee:
        local_138 = (short *)param_2;
        local_13c = (short **)((int)local_ec - 2);
        local_140 = local_e8;
        uStack_144 = 0xa06d0b;
        FUN_00a031e0();
        local_fc = auStack_154;
        FUN_0043c211(&DAT_00d25fa0);
        cVar5 = FUN_00846b30(7);
        if (cVar5 != '\0') {
          local_138 = (short *)0xa06d41;
          FUN_0083fbe0();
          local_4._0_1_ = 2;
          local_138 = (short *)PTR_u_htmldebug_0323e704;
          if (PTR_u_htmldebug_0323e704 == (undefined *)0x0) {
            local_138 = &DAT_00fae9c8;
          }
          local_dc = local_dc & 0xffff0000;
          local_c8 = 7;
          local_cc = 0;
          psVar11 = local_138;
          do {
            sVar6 = *psVar11;
            psVar11 = psVar11 + 1;
          } while (sVar6 != 0);
          local_13c = (short **)0xa06d8c;
          FID_conflict_assign();
          local_c4 = (void *)0x0;
          local_fc = auStack_154;
          local_13c = (short **)0x7;
          local_140 = (undefined *)0x0;
          local_150 = 0;
          local_4._0_1_ = 3;
          FID_conflict_assign(local_34,0,0xffffffff);
          local_138 = (short *)0x0;
          local_4._0_1_ = 4;
          local_bc = 7;
          local_b4 = "..\\..\\src\\html\\htmlpars.cpp";
          local_ac = "wxHtmlEntitiesParser::Parse";
          local_b0 = 0x1fb;
          local_a8 = &DAT_00d25fa0;
          local_a4 = __time64((__time64_t *)0x0);
          local_9c = GetCurrentThreadId();
          local_98 = 0;
          local_7c = 7;
          local_80 = 0;
          local_90 = local_90 & 0xffff0000;
          local_78 = (void *)0x0;
          local_4._0_1_ = 6;
          FUN_0084d7a0(local_e0,local_6c);
          local_4._0_1_ = 3;
          local_138 = (short *)0xa06e8d;
          _free(local_78);
          if (7 < local_7c) {
                    // WARNING: Subroutine does not return
            local_138 = (short *)&UNK_00a06ea7;
            FUN_00a3f6a1();
          }
          local_7c = 7;
          local_80 = 0;
          local_90 = local_90 & 0xffff0000;
          if (local_98 != 0) {
            FUN_00841af0();
                    // WARNING: Subroutine does not return
            local_138 = (short *)&UNK_00a06eda;
            FUN_00a3f6a1();
          }
          local_138 = (short *)0xa06ee7;
          _free(local_c4);
          if (7 < local_c8) {
                    // WARNING: Subroutine does not return
            local_138 = (short *)&UNK_00a06efb;
            FUN_00a3f6a1();
          }
          local_c8 = 7;
          local_cc = 0;
          local_dc = local_dc & 0xffff0000;
          local_4 = CONCAT31(local_4._1_3_,1);
          FUN_0081b5bc();
        }
      }
      else {
        local_138 = (short *)0x1;
        local_13c = (short **)0xa06c5a;
        FID_conflict_append();
      }
      local_4 = local_4 & 0xffffff00;
      local_138 = (short *)0xa06f3a;
      _free(local_18);
      puVar9 = local_100;
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        local_138 = (short *)&UNK_00a06f54;
        FUN_00a3f6a1();
      }
    }
    if (param_2 != (undefined *)0xfffffffc) {
      if (param_2 == (undefined *)0x0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 8) {
        puVar8 = param_2 + 4;
      }
      else {
        puVar8 = *(undefined **)(param_2 + 4);
      }
      if (puVar8 + *(int *)(param_2 + 0x14) * 2 <= ppsVar13) {
        FUN_00a3fb10();
      }
    }
    ppsVar13 = (short **)((int)ppsVar13 + 2);
  } while( true );
}



void __thiscall FUN_00a070f0(int *param_1_00,int *param_1,int *param_2)

{
  uint *puVar1;
  uint uVar2;
  uint uVar3;
  undefined4 uVar4;
  uint uVar5;
  int iVar6;
  undefined4 uVar7;
  int iVar8;
  uint uVar9;
  int *piVar10;
  int iVar11;
  undefined4 *puVar12;
  undefined local_54 [4];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *local_38;
  undefined local_30 [4];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed0e0;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  iVar11 = *param_1;
  uVar9 = param_1[1];
  if ((iVar11 != -4) && ((iVar11 == 0 || (iVar11 != *param_2)))) {
    FUN_00a3fb10(uVar5);
  }
  if (uVar9 < (uint)param_2[1]) {
    puVar1 = (uint *)param_1_00[4];
    uVar2 = *puVar1;
LAB_00a07152:
    do {
      if ((iVar11 != -4) && ((iVar11 == 0 || (iVar11 != *param_2)))) {
        FUN_00a3fb10(uVar5);
      }
      if ((uint)param_2[1] <= uVar9) {
        ExceptionList = local_c;
        return;
      }
      iVar6 = param_1_00[2];
      while (iVar6 != 0) {
        iVar6 = *(int *)(param_1_00[2] + 0x28);
        uVar3 = *(uint *)(param_1_00[2] + 0x2c);
        if ((iVar6 != -4) && ((iVar6 == 0 || (iVar6 != iVar11)))) {
          FUN_00a3fb10(uVar5);
        }
        if (uVar9 <= uVar3) break;
        iVar6 = FUN_00a07780();
        param_1_00[2] = iVar6;
      }
      uVar3 = param_1_00[5];
      while (uVar3 < uVar2) {
        uVar3 = param_1_00[5];
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*puVar1 <= uVar3)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                       "wxVector<class wxHtmlTextPiece>::at","idx < m_size",0);
        }
        piVar10 = (int *)(uVar3 * 0x10 + puVar1[2]);
        iVar6 = *piVar10;
        if ((iVar6 != -4) && ((iVar6 == 0 || (iVar6 != iVar11)))) {
          FUN_00a3fb10();
        }
        if (uVar9 <= (uint)piVar10[1]) break;
        param_1_00[5] = param_1_00[5] + 1;
        uVar3 = param_1_00[5];
      }
      uVar9 = param_1_00[5];
      if (uVar9 < uVar2) {
        iVar11 = param_1_00[2];
        if (iVar11 != 0) {
          iVar6 = *(int *)(iVar11 + 0x28);
          uVar3 = *(uint *)(iVar11 + 0x2c);
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*puVar1 <= uVar9)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                         "wxVector<class wxHtmlTextPiece>::at","idx < m_size",0);
          }
          piVar10 = (int *)(uVar9 * 0x10 + puVar1[2]);
          iVar11 = *piVar10;
          if ((iVar11 != -4) && ((iVar11 == 0 || (iVar11 != iVar6)))) {
            FUN_00a3fb10();
          }
          if (uVar3 <= (uint)piVar10[1]) goto LAB_00a07404;
        }
        uVar9 = param_1_00[5];
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*puVar1 <= uVar9)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                       "wxVector<class wxHtmlTextPiece>::at","idx < m_size",0);
        }
        iVar11 = uVar9 * 0x10 + puVar1[2];
        uVar7 = *(undefined4 *)(iVar11 + 8);
        uVar4 = *(undefined4 *)(iVar11 + 0xc);
        uVar9 = param_1_00[5];
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*puVar1 <= uVar9)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                       "wxVector<class wxHtmlTextPiece>::at","idx < m_size",0);
        }
        puVar12 = (undefined4 *)(uVar9 * 0x10 + puVar1[2]);
        FUN_00427fd0(*puVar12,puVar12[1],uVar7,uVar4);
        local_38 = (void *)0x0;
        local_4 = 0;
        uVar7 = FUN_00a06860(local_30,local_54);
        local_4 = CONCAT31(local_4._1_3_,1);
        (**(code **)(*param_1_00 + 0x30))(uVar7);
        _free(pvStack_14);
        if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_2c);
        }
        uStack_18 = 7;
        uStack_1c = 0;
        uStack_2c = uStack_2c & 0xffff0000;
        local_4 = 0xffffffff;
        _free(local_38);
        if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_50);
        }
        uVar9 = param_1_00[5];
        uStack_3c = 7;
        uStack_40 = 0;
        uStack_50 = uStack_50 & 0xffff0000;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*puVar1 <= uVar9)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                       "wxVector<class wxHtmlTextPiece>::at","idx < m_size",0);
        }
        iVar6 = uVar9 * 0x10;
        iVar11 = *(int *)(iVar6 + 8 + puVar1[2]);
        uVar9 = *(uint *)(iVar6 + 0xc + puVar1[2]);
        param_1_00[5] = param_1_00[5] + 1;
        goto LAB_00a07152;
      }
LAB_00a07404:
      iVar6 = param_1_00[2];
      if (iVar6 == 0) {
        ExceptionList = local_c;
        return;
      }
      if (*(char *)(iVar6 + 0x24) == '\0') {
        iVar11 = *(int *)(iVar6 + 0x28);
        uVar9 = *(uint *)(iVar6 + 0x2c);
      }
      else {
        iVar11 = *(int *)(iVar6 + 0x38);
        uVar9 = *(uint *)(iVar6 + 0x3c);
      }
      iVar8 = FUN_00a07780();
      param_1_00[2] = iVar8;
      (**(code **)(*param_1_00 + 0x34))(iVar6);
    } while (*(char *)(param_1_00 + 0x15) == '\0');
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a07460(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bccb48;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  uVar3 = FUN_008560c0(local_30);
  local_4 = 0;
  iVar4 = FUN_00970c40(uVar3);
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  if (iVar4 != 0) {
    cVar1 = (**(code **)(**(int **)(iVar4 + 0x28) + 0x18))(param_1,uVar2);
    if (*(char *)(param_1_00 + 0x54) != '\0') {
      ExceptionList = local_c;
      return;
    }
    if (cVar1 != '\0') {
      ExceptionList = local_c;
      return;
    }
  }
  if (*(char *)(param_1 + 0x24) != '\0') {
    uStack_3c = *(undefined4 *)(param_1 + 0x34);
    uStack_40 = *(undefined4 *)(param_1 + 0x30);
    uStack_38 = *(undefined4 *)(param_1 + 0x28);
    uStack_34 = *(undefined4 *)(param_1 + 0x2c);
    FUN_00a070f0(&uStack_38,&uStack_40);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00a07550(int param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  int local_10;
  undefined4 *local_c;
  undefined local_8 [8];
  
  iVar1 = *(int *)(param_1 + 0x18);
  *(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_1 + 0xc);
  *(undefined4 *)(param_1 + 0x14) = 0;
  uVar2 = *(uint *)(iVar1 + 0x18);
  puVar3 = (undefined4 *)(iVar1 + 4);
  puVar6 = puVar3;
  if (7 < uVar2) {
    puVar6 = (undefined4 *)*puVar3;
  }
  if (puVar6 != (undefined4 *)0x0) {
    puVar5 = puVar3;
    if (7 < uVar2) {
      puVar5 = (undefined4 *)*puVar3;
    }
    if (puVar5 <= puVar6) {
      if (7 < uVar2) {
        puVar3 = (undefined4 *)*puVar3;
      }
      if (puVar6 <= (undefined4 *)((int)puVar3 + *(int *)(iVar1 + 0x14) * 2)) goto LAB_00a075a2;
    }
  }
  FUN_00a3fb10();
LAB_00a075a2:
  local_10 = iVar1;
  local_c = puVar6;
  uVar4 = FUN_008478e0(local_8);
  FUN_00a070f0(&local_10,uVar4);
  return;
}



void __thiscall FUN_00a075d0(int param_1_00,undefined4 param_1)

{
  (**(code **)(**(int **)(param_1_00 + 8) + 0x28))(param_1);
  FUN_00a07550();
  (**(code **)(**(int **)(param_1_00 + 8) + 0x2c))();
  return;
}



undefined4 __thiscall FUN_00a07600(int *param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  
  (**(code **)(*param_1_00 + 0x14))(param_1);
  FUN_00a07550();
  uVar1 = (**(code **)(*param_1_00 + 0x20))();
  (**(code **)(*param_1_00 + 0x18))();
  return uVar1;
}



int FUN_00a07640(int param_1,undefined4 param_2)

{
  uint uVar1;
  int *piVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bed124;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  local_4 = 0;
  piVar2 = (int *)operator_new(0x58);
  local_4 = 1;
  if (piVar2 == (int *)0x0) {
    piVar2 = (int *)0x0;
  }
  else {
    FUN_00a06200(uVar1);
    *piVar2 = (int)wxMetaTagParser::vftable;
  }
  local_4 = local_4 & 0xffffff00;
  if (piVar2 != (int *)0x0) {
    puVar3 = (undefined4 *)operator_new(0x10);
    if (puVar3 == (undefined4 *)0x0) {
      puVar3 = (undefined4 *)0x0;
    }
    else {
      puVar3[1] = 0;
      puVar3[2] = 0;
      *puVar3 = wxMetaTagHandler::vftable;
      puVar3[3] = param_1;
    }
    (**(code **)(*piVar2 + 0x24))(puVar3);
    (**(code **)(*piVar2 + 0x14))(param_2);
    FUN_00a07550();
    (**(code **)(*piVar2 + 0x20))();
    (**(code **)(*piVar2 + 0x18))();
    (**(code **)(*piVar2 + 4))(1);
  }
  ExceptionList = local_c;
  return param_1;
}



bool FUN_00a07740(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_00853d10(param_1,0,0);
  return iVar1 != -1;
}



int __fastcall FUN_00a07760(int param_1)

{
  int iVar1;
  int iVar2;
  
  if (*(int *)(param_1 + 0x70) == 0) {
    iVar2 = *(int *)(param_1 + 0x60);
    while (iVar1 = iVar2, iVar1 != 0) {
      param_1 = iVar1;
      iVar2 = *(int *)(iVar1 + 0x60);
    }
    return param_1;
  }
  return *(int *)(*(int *)(param_1 + 0x70) + 0x6c);
}



int __fastcall FUN_00a07780(int param_1)

{
  int iVar1;
  int iVar2;
  
  iVar2 = *(int *)(param_1 + 0x68);
  if ((iVar2 == 0) && (iVar2 = *(int *)(param_1 + 0x60), iVar2 == 0)) {
    iVar2 = *(int *)(param_1 + 0x70);
    if (iVar2 == 0) {
      return iVar2;
    }
    iVar1 = *(int *)(iVar2 + 0x70);
    while ((iVar1 != 0 && (*(int *)(iVar2 + 0x60) == 0))) {
      iVar2 = iVar1;
      iVar1 = *(int *)(iVar1 + 0x70);
    }
    iVar2 = *(int *)(iVar2 + 0x60);
  }
  return iVar2;
}



undefined4 FUN_00a077c0(wchar_t *param_1)

{
  wchar_t wVar1;
  int iVar2;
  wchar_t *pwVar3;
  wchar_t *pwVar4;
  bool bVar5;
  
  pwVar3 = L"SCRIPT";
  pwVar4 = param_1;
  do {
    wVar1 = *pwVar4;
    bVar5 = (ushort)wVar1 < (ushort)*pwVar3;
    if (wVar1 != *pwVar3) {
LAB_00a077f6:
      iVar2 = (1 - (uint)bVar5) - (uint)(bVar5 != 0);
      goto LAB_00a077fb;
    }
    if (wVar1 == L'\0') break;
    wVar1 = pwVar4[1];
    bVar5 = (ushort)wVar1 < (ushort)pwVar3[1];
    if (wVar1 != pwVar3[1]) goto LAB_00a077f6;
    pwVar4 = pwVar4 + 2;
    pwVar3 = pwVar3 + 2;
  } while (wVar1 != L'\0');
  iVar2 = 0;
LAB_00a077fb:
  if (iVar2 != 0) {
    pwVar4 = L"STYLE";
    do {
      wVar1 = *param_1;
      bVar5 = (ushort)wVar1 < (ushort)*pwVar4;
      if (wVar1 != *pwVar4) {
LAB_00a0782c:
        iVar2 = (1 - (uint)bVar5) - (uint)(bVar5 != 0);
        goto LAB_00a07831;
      }
      if (wVar1 == L'\0') break;
      wVar1 = param_1[1];
      bVar5 = (ushort)wVar1 < (ushort)pwVar4[1];
      if (wVar1 != pwVar4[1]) goto LAB_00a0782c;
      param_1 = param_1 + 2;
      pwVar4 = pwVar4 + 2;
    } while (wVar1 != L'\0');
    iVar2 = 0;
LAB_00a07831:
    if (iVar2 != 0) {
      return 0;
    }
  }
  return 1;
}



int __thiscall FUN_00a07840(uint *param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*param_1_00 <= param_1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                 "wxVector<struct wxHtmlCacheItem>::at","idx < m_size",0);
  }
  return param_1 * 0x20 + param_1_00[2];
}



void FUN_00a07880(int param_1,int param_2,int param_3)

{
  void *pvVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  pvVar1 = operator_new(param_2 << 5);
  if (param_3 != 0) {
    puVar3 = (undefined4 *)(param_1 + 0x14);
    puVar2 = (undefined4 *)((int)pvVar1 + 8);
    do {
      if (puVar2 != (undefined4 *)0x8) {
        puVar2[-2] = puVar3[-5];
        puVar2[-1] = puVar3[-4];
        *puVar2 = *(undefined4 *)((param_1 - (int)pvVar1) + (int)puVar2);
        puVar2[1] = puVar3[-2];
        puVar2[2] = puVar3[-1];
        puVar2[3] = *puVar3;
        puVar2[4] = puVar3[1];
        puVar2[5] = puVar3[2];
      }
      puVar2 = puVar2 + 8;
      puVar3 = puVar3 + 8;
      param_3 = param_3 + -1;
    } while (param_3 != 0);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1);
}



void __thiscall
FUN_00a07900(int param_1_00,int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4
            ,undefined *param_5)

{
  uint *puVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int *piVar6;
  
  puVar1 = *(uint **)(param_1_00 + 4);
  if (*puVar1 == 0) {
    *param_4 = *param_2;
    param_4[1] = param_2[1];
    *param_3 = *param_2;
    param_3[1] = param_2[1];
    *param_5 = 1;
    return;
  }
  uVar2 = *(uint *)(param_1_00 + 8);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*puVar1 <= uVar2)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                 "wxVector<struct wxHtmlCacheItem>::at","idx < m_size",0);
  }
  piVar6 = (int *)(uVar2 * 0x20 + puVar1[2]);
  iVar5 = *piVar6;
  if ((iVar5 != -4) && ((iVar5 == 0 || (iVar5 != *param_1)))) {
    FUN_00a3fb10();
  }
  if (piVar6[1] != param_1[1]) {
    piVar6 = (int *)FUN_00a07840(*(undefined4 *)(param_1_00 + 8));
    iVar5 = *param_1;
    if ((iVar5 != -4) && ((iVar5 == 0 || (iVar5 != *piVar6)))) {
      FUN_00a3fb10();
    }
    uVar3 = param_1[1];
    uVar2 = piVar6[1];
    do {
      piVar6 = (int *)(param_1_00 + 8);
      *piVar6 = *piVar6 + (-(uint)(uVar3 < uVar2) & 0xfffffffe) + 1;
      uVar4 = *(uint *)(param_1_00 + 8);
      if (*piVar6 < 0) {
LAB_00a07aad:
        *(undefined4 *)(param_1_00 + 8) = 0;
LAB_00a07abe:
        *param_4 = *param_2;
        param_4[1] = param_2[1];
        *param_3 = *param_2;
        param_3[1] = param_2[1];
        *param_5 = 1;
        return;
      }
      puVar1 = *(uint **)(param_1_00 + 4);
      if ((int)*puVar1 <= (int)uVar4) {
        if (-1 < (int)uVar4) {
          *(uint *)(param_1_00 + 8) = *puVar1 - 1;
          goto LAB_00a07abe;
        }
        goto LAB_00a07aad;
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*puVar1 <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                     "wxVector<struct wxHtmlCacheItem>::at","idx < m_size",0);
      }
      piVar6 = (int *)(uVar4 * 0x20 + puVar1[2]);
      iVar5 = *piVar6;
      if ((iVar5 != -4) && ((iVar5 == 0 || (iVar5 != *param_1)))) {
        FUN_00a3fb10();
      }
    } while (piVar6[1] != param_1[1]);
  }
  iVar5 = FUN_00a07840(*(undefined4 *)(param_1_00 + 8));
  iVar5 = *(int *)(iVar5 + 8);
  if (iVar5 == 0) {
    iVar5 = FUN_00a07840(*(undefined4 *)(param_1_00 + 8));
    *param_3 = *(undefined4 *)(iVar5 + 0xc);
    param_3[1] = *(undefined4 *)(iVar5 + 0x10);
    iVar5 = FUN_00a07840(*(undefined4 *)(param_1_00 + 8));
    *param_4 = *(undefined4 *)(iVar5 + 0x14);
    param_4[1] = *(undefined4 *)(iVar5 + 0x18);
    *param_5 = 1;
    return;
  }
  if (iVar5 != 1) {
    if (iVar5 != 2) {
      return;
    }
    if (PTR_FUN_03235c4c != (undefined *)(iVar5 + -2)) {
      FUN_008402e0("..\\..\\src\\html\\htmltag.cpp",0x117,"wxHtmlTagsCache::QueryTag",
                   "Assert failure","QueryTag called for ending tag - can\'t be");
    }
  }
  *param_3 = *param_2;
  param_3[1] = param_2[1];
  *param_4 = *param_2;
  param_4[1] = param_2[1];
  *param_5 = 0;
  return;
}



undefined4 FUN_00a07b30(int param_1)

{
  wchar_t wVar1;
  int **ppiVar2;
  int iVar3;
  int **ppiVar4;
  wchar_t *pwVar5;
  bool bVar6;
  
  ppiVar4 = (int **)(param_1 + 4);
  ppiVar2 = ppiVar4;
  if (7 < *(uint *)(param_1 + 0x18)) {
    ppiVar2 = (int **)*ppiVar4;
  }
  pwVar5 = L"SCRIPT";
  do {
    wVar1 = *(wchar_t *)ppiVar2;
    bVar6 = (ushort)wVar1 < (ushort)*pwVar5;
    if (wVar1 != *pwVar5) {
LAB_00a07b76:
      iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
      goto LAB_00a07b7b;
    }
    if (wVar1 == L'\0') break;
    wVar1 = *(wchar_t *)((int)ppiVar2 + 2);
    bVar6 = (ushort)wVar1 < (ushort)pwVar5[1];
    if (wVar1 != pwVar5[1]) goto LAB_00a07b76;
    ppiVar2 = (int **)((int)ppiVar2 + 4);
    pwVar5 = pwVar5 + 2;
  } while (wVar1 != L'\0');
  iVar3 = 0;
LAB_00a07b7b:
  if (iVar3 != 0) {
    if (7 < *(uint *)(param_1 + 0x18)) {
      ppiVar4 = (int **)*ppiVar4;
    }
    pwVar5 = L"STYLE";
    do {
      wVar1 = *(wchar_t *)ppiVar4;
      bVar6 = (ushort)wVar1 < (ushort)*pwVar5;
      if (wVar1 != *pwVar5) {
LAB_00a07bb6:
        iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
        goto LAB_00a07bbb;
      }
      if (wVar1 == L'\0') break;
      wVar1 = *(wchar_t *)((int)ppiVar4 + 2);
      bVar6 = (ushort)wVar1 < (ushort)pwVar5[1];
      if (wVar1 != pwVar5[1]) goto LAB_00a07bb6;
      ppiVar4 = (int **)((int *)ppiVar4 + 1);
      pwVar5 = pwVar5 + 2;
    } while (wVar1 != L'\0');
    iVar3 = 0;
LAB_00a07bbb:
    if (iVar3 != 0) {
      return 0;
    }
  }
  return 1;
}



void __thiscall FUN_00a07bd0(undefined4 *param_1_00,int param_1)

{
  wint_t **ppwVar1;
  ushort uVar2;
  uint *puVar3;
  char cVar4;
  wint_t wVar5;
  wint_t wVar6;
  undefined4 *puVar7;
  int iVar8;
  uint uVar9;
  undefined4 uVar10;
  int iVar11;
  ushort *puVar12;
  wint_t **ppwVar13;
  int *piVar14;
  ushort *puVar15;
  wint_t **ppwVar16;
  undefined *puVar17;
  undefined *puVar18;
  int iVar19;
  wint_t **ppwVar20;
  wint_t *pwVar21;
  bool bVar22;
  int local_274;
  wint_t **local_270;
  undefined4 *local_26c;
  undefined *local_268;
  int local_264;
  wint_t **local_260;
  undefined *local_25c;
  wint_t **ppwStack_258;
  int local_254;
  wint_t **local_250;
  int iStack_24c;
  wint_t **ppwStack_248;
  int iStack_244;
  wint_t **ppwStack_240;
  undefined4 uStack_23c;
  undefined4 uStack_238;
  wint_t **ppwStack_230;
  wint_t **ppwStack_228;
  undefined4 uStack_21c;
  undefined4 uStack_208;
  wint_t wStack_204;
  ushort auStack_202 [255];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_274;
  *param_1_00 = wxHtmlTagsCache::vftable;
  local_26c = param_1_00;
  puVar7 = (undefined4 *)operator_new(0xc);
  if (puVar7 == (undefined4 *)0x0) {
    puVar7 = (undefined4 *)0x0;
  }
  else {
    *puVar7 = 0;
    puVar7[1] = 0;
    puVar7[2] = 0;
  }
  param_1_00[1] = puVar7;
  param_1_00[2] = 0;
  FUN_008478e0();
  uVar9 = *(uint *)(param_1 + 0x18);
  ppwVar20 = (wint_t **)(param_1 + 4);
  local_270 = ppwVar20;
  if (7 < uVar9) {
    local_270 = (wint_t **)*ppwVar20;
  }
  if (local_270 != (wint_t **)0x0) {
    ppwVar13 = ppwVar20;
    if (7 < uVar9) {
      ppwVar13 = (wint_t **)*ppwVar20;
    }
    if (ppwVar13 <= local_270) {
      if (7 < uVar9) {
        ppwVar20 = (wint_t **)*ppwVar20;
      }
      if (local_270 <= (wint_t **)((int)ppwVar20 + *(int *)(param_1 + 0x14) * 2)) goto LAB_00a07c63;
    }
  }
  FUN_00a3fb10();
LAB_00a07c63:
  local_274 = param_1;
LAB_00a07c70:
  if ((param_1 != -4) && ((param_1 == 0 || (param_1 != local_264)))) {
    FUN_00a3fb10();
    param_1 = local_274;
  }
  if (local_260 <= local_270) {
    iVar19 = ((int *)param_1_00[1])[2];
    if (iVar19 != *(int *)param_1_00[1] * 0x20 + iVar19) {
      do {
        if (*(int *)(iVar19 + 0x1c) != 0) {
          FUN_00a3f66c();
          *(undefined4 *)(iVar19 + 0x1c) = 0;
        }
        iVar19 = iVar19 + 0x20;
      } while (iVar19 != *(int *)param_1_00[1] * 0x20 + ((int *)param_1_00[1])[2]);
    }
    ___security_check_cookie_4();
    return;
  }
  if (param_1 != -4) {
    if (param_1 == 0) {
      FUN_00a3fb10();
      param_1 = local_274;
    }
    if (*(uint *)(param_1 + 0x18) < 8) {
      iVar19 = param_1 + 4;
    }
    else {
      iVar19 = *(int *)(param_1 + 4);
    }
    if ((wint_t **)(iVar19 + *(int *)(param_1 + 0x14) * 2) <= local_270) {
      FUN_00a3fb10();
      param_1 = local_274;
    }
  }
  if (*(wint_t *)local_270 == 0x3c) {
    local_25c = &stack0xfffffd74;
    cVar4 = FUN_00a052e0(&local_274);
    param_1 = local_274;
    if (cVar4 == '\0') {
      local_254 = local_274;
      local_250 = local_270;
      if (local_274 != -4) {
        if (local_274 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(local_274 + 0x18) < 8) {
          iVar19 = local_274 + 4;
        }
        else {
          iVar19 = *(int *)(local_274 + 4);
        }
        if ((wint_t **)(iVar19 + *(int *)(local_274 + 0x14) * 2) <= local_270) {
          FUN_00a3fb10();
        }
      }
      ppwVar20 = local_260;
      iVar19 = local_264;
      puVar18 = (undefined *)0x0;
      local_25c = (undefined *)0x0;
      while( true ) {
        local_270 = (wint_t **)((int)local_270 + 2);
        if ((local_274 != -4) && ((local_274 == 0 || (local_274 != iVar19)))) {
          FUN_00a3fb10();
        }
        if ((ppwVar20 <= local_270) || (0xfe < (int)puVar18)) break;
        if (local_274 != -4) {
          if (local_274 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(local_274 + 0x18) < 8) {
            iVar8 = local_274 + 4;
          }
          else {
            iVar8 = *(int *)(local_274 + 4);
          }
          if ((wint_t **)(iVar8 + *(int *)(local_274 + 0x14) * 2) <= local_270) {
            FUN_00a3fb10();
          }
        }
        if (*(wint_t *)local_270 == 0x3e) break;
        if (local_274 != -4) {
          if (local_274 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(local_274 + 0x18) < 8) {
            iVar8 = local_274 + 4;
          }
          else {
            iVar8 = *(int *)(local_274 + 4);
          }
          if ((wint_t **)(iVar8 + *(int *)(local_274 + 0x14) * 2) <= local_270) {
            FUN_00a3fb10();
          }
        }
        iVar8 = _iswspace(*(wint_t *)local_270);
        if (iVar8 != 0) break;
        if (local_274 != -4) {
          if (local_274 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(local_274 + 0x18) < 8) {
            iVar8 = local_274 + 4;
          }
          else {
            iVar8 = *(int *)(local_274 + 4);
          }
          if ((wint_t **)(iVar8 + *(int *)(local_274 + 0x14) * 2) <= local_270) {
            FUN_00a3fb10();
          }
        }
        wVar5 = _towupper(*(wint_t *)local_270);
        auStack_202[(int)(puVar18 + -1)] = wVar5;
        puVar18 = puVar18 + 1;
        local_25c = puVar18;
        if (local_274 != -4) {
          if (local_274 == 0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(local_274 + 0x18) < 8) {
            iVar8 = local_274 + 4;
          }
          else {
            iVar8 = *(int *)(local_274 + 4);
          }
          if ((wint_t **)(iVar8 + *(int *)(local_274 + 0x14) * 2) <= local_270) {
            FUN_00a3fb10();
          }
        }
      }
      auStack_202[(int)(puVar18 + -1)] = 0;
      param_1 = local_274;
      while( true ) {
        if ((param_1 != -4) && ((param_1 == 0 || (param_1 != iVar19)))) {
          FUN_00a3fb10();
          param_1 = local_274;
        }
        if (ppwVar20 <= local_270) break;
        if (param_1 != -4) {
          if (param_1 == 0) {
            FUN_00a3fb10();
            param_1 = local_274;
          }
          if (*(uint *)(param_1 + 0x18) < 8) {
            iVar8 = param_1 + 4;
          }
          else {
            iVar8 = *(int *)(param_1 + 4);
          }
          if ((wint_t **)(iVar8 + *(int *)(param_1 + 0x14) * 2) <= local_270) {
            FUN_00a3fb10();
            param_1 = local_274;
          }
        }
        if (*(wint_t *)local_270 == 0x3e) break;
        if (param_1 != -4) {
          if (param_1 == 0) {
            FUN_00a3fb10();
            param_1 = local_274;
          }
          if (*(uint *)(param_1 + 0x18) < 8) {
            iVar8 = param_1 + 4;
          }
          else {
            iVar8 = *(int *)(param_1 + 4);
          }
          if ((wint_t **)(iVar8 + *(int *)(param_1 + 0x14) * 2) <= local_270) {
            FUN_00a3fb10();
            param_1 = local_274;
          }
        }
        local_270 = (wint_t **)((int)local_270 + 2);
      }
      if ((param_1 != -4) && ((param_1 == 0 || (param_1 != iVar19)))) {
        FUN_00a3fb10();
        param_1 = local_274;
      }
      if (local_270 == ppwVar20) {
        if (param_1 != -4) {
          if (param_1 == 0) {
            FUN_00a3fb10();
            param_1 = local_274;
          }
          if (*(uint *)(param_1 + 0x18) < 8) {
            ppwVar20 = (wint_t **)(param_1 + 4);
          }
          else {
            ppwVar20 = *(wint_t ***)(param_1 + 4);
          }
          if (local_270 <= ppwVar20) {
            FUN_00a3fb10();
            param_1 = local_274;
          }
        }
        local_270 = (wint_t **)((int)local_270 + -2);
      }
      else {
        puVar3 = (uint *)local_26c[1];
        local_268 = (undefined *)*puVar3;
        puVar18 = local_268 + 1;
        if ((undefined *)puVar3[1] < puVar18) {
          if (local_268 == (undefined *)0x0) {
            puVar17 = (undefined *)0x10;
          }
          else {
            puVar17 = local_268;
            if ((undefined *)0xfff < local_268) {
              puVar17 = (undefined *)0x1000;
            }
          }
          puVar17 = (undefined *)puVar3[1] + (int)puVar17;
          if (puVar18 < puVar17) {
            puVar18 = puVar17;
          }
          uVar9 = FUN_00a07880(puVar3[2]);
          puVar3[2] = uVar9;
          puVar3[1] = (uint)puVar18;
        }
        puVar7 = (undefined4 *)(*puVar3 * 0x20 + puVar3[2]);
        if (puVar7 != (undefined4 *)0x0) {
          *puVar7 = 0;
          puVar7[1] = 0;
          puVar7[2] = uStack_21c;
          puVar7[3] = 0;
          puVar7[4] = 0;
          puVar7[5] = 0;
          puVar7[6] = 0;
          puVar7[7] = uStack_208;
        }
        *puVar3 = *puVar3 + 1;
        puVar3 = (uint *)local_26c[1];
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((undefined *)*puVar3 <= local_268)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                       "wxVector<struct wxHtmlCacheItem>::at");
        }
        puVar18 = local_25c;
        uVar9 = puVar3[2];
        iVar19 = (int)local_268 * 0x20;
        *(int *)(uVar9 + iVar19) = local_254;
        *(wint_t ***)(uVar9 + 4 + iVar19) = local_250;
        uVar10 = FUN_00823c23();
        puVar3 = (uint *)local_26c[1];
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((undefined *)*puVar3 <= local_268)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                       "wxVector<struct wxHtmlCacheItem>::at");
        }
        *(undefined4 *)(puVar3[2] + 0x1c + iVar19) = uVar10;
        puVar3 = (uint *)local_26c[1];
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((undefined *)*puVar3 <= local_268)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                       "wxVector<struct wxHtmlCacheItem>::at");
        }
        _memcpy(*(void **)(puVar3[2] + 0x1c + iVar19),&wStack_204,(int)puVar18 * 2 + 2);
        ppwVar20 = local_250;
        iVar8 = local_254;
        ppwStack_258 = local_250;
        if (local_254 != -4) {
          if (local_254 == 0) {
            FUN_00a3fb10();
          }
          ppwVar13 = (wint_t **)(iVar8 + 4);
          ppwVar16 = ppwVar13;
          if (7 < *(uint *)(iVar8 + 0x18)) {
            ppwVar16 = (wint_t **)*ppwVar13;
          }
          if ((wint_t **)((int)ppwVar20 + 2U) <=
              (wint_t **)((int)ppwVar16 + *(int *)(iVar8 + 0x14) * 2)) {
            if (7 < *(uint *)(iVar8 + 0x18)) {
              ppwVar13 = (wint_t **)*ppwVar13;
            }
            if (ppwVar13 <= (wint_t **)((int)ppwVar20 + 2U)) goto LAB_00a08177;
          }
          FUN_00a3fb10();
        }
LAB_00a08177:
        ppwVar13 = (wint_t **)((int)ppwVar20 + 2);
        if ((iVar8 != -4) && ((iVar8 == 0 || (iVar8 != local_264)))) {
          FUN_00a3fb10();
        }
        if (ppwVar13 < local_260) {
          ppwStack_258 = ppwVar20;
          if (iVar8 != -4) {
            if (iVar8 == 0) {
              FUN_00a3fb10();
            }
            ppwVar20 = (wint_t **)(iVar8 + 4);
            ppwVar16 = ppwVar20;
            if (7 < *(uint *)(iVar8 + 0x18)) {
              ppwVar16 = (wint_t **)*ppwVar20;
            }
            if ((wint_t **)((int)ppwVar16 + *(int *)(iVar8 + 0x14) * 2) < ppwVar13) {
LAB_00a081d2:
              FUN_00a3fb10();
            }
            else {
              if (7 < *(uint *)(iVar8 + 0x18)) {
                ppwVar20 = (wint_t **)*ppwVar20;
              }
              if (ppwVar13 < ppwVar20) goto LAB_00a081d2;
            }
            if (iVar8 != -4) {
              if (iVar8 == 0) {
                FUN_00a3fb10();
              }
              if (*(uint *)(iVar8 + 0x18) < 8) {
                iVar11 = iVar8 + 4;
              }
              else {
                iVar11 = *(int *)(iVar8 + 4);
              }
              if ((wint_t **)(iVar11 + *(int *)(iVar8 + 0x14) * 2) <= ppwVar13) {
                FUN_00a3fb10();
              }
            }
          }
          puVar18 = local_268;
          puVar7 = local_26c;
          if (*(wint_t *)ppwVar13 == 0x2f) {
            puVar3 = (uint *)local_26c[1];
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((undefined *)*puVar3 <= local_268)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                           "wxVector<struct wxHtmlCacheItem>::at");
            }
            *(undefined4 *)(puVar3[2] + 8 + iVar19) = 2;
            param_1 = local_274;
            for (; local_274 = param_1, -1 < (int)puVar18; puVar18 = puVar18 + -1) {
              puVar3 = (uint *)puVar7[1];
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((undefined *)*puVar3 <= puVar18)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                             "wxVector<struct wxHtmlCacheItem>::at");
              }
              if (*(int *)(puVar3[2] + 8 + iVar19) == 1) {
                puVar3 = (uint *)puVar7[1];
                if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((undefined *)*puVar3 <= puVar18)) {
                  FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                               "wxVector<struct wxHtmlCacheItem>::at");
                }
                puVar12 = *(ushort **)(puVar3[2] + 0x1c + iVar19);
                puVar15 = auStack_202;
                do {
                  uVar2 = *puVar12;
                  bVar22 = uVar2 < *puVar15;
                  if (uVar2 != *puVar15) {
LAB_00a082fa:
                    iVar8 = (1 - (uint)bVar22) - (uint)(bVar22 != 0);
                    goto LAB_00a082ff;
                  }
                  if (uVar2 == 0) break;
                  uVar2 = puVar12[1];
                  bVar22 = uVar2 < puVar15[1];
                  if (uVar2 != puVar15[1]) goto LAB_00a082fa;
                  puVar12 = puVar12 + 2;
                  puVar15 = puVar15 + 2;
                } while (uVar2 != 0);
                iVar8 = 0;
LAB_00a082ff:
                if (iVar8 == 0) {
                  puVar3 = (uint *)puVar7[1];
                  local_25c = puVar18;
                  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((undefined *)*puVar3 <= puVar18)) {
                    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                                 "wxVector<struct wxHtmlCacheItem>::at");
                  }
                  iVar19 = (int)puVar18 * 0x20;
                  *(undefined4 *)(puVar3[2] + 8 + iVar19) = 0;
                  puVar3 = (uint *)puVar7[1];
                  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((undefined *)*puVar3 <= puVar18)) {
                    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                                 "wxVector<struct wxHtmlCacheItem>::at");
                  }
                  ppwVar20 = local_270;
                  iVar8 = local_274;
                  uVar9 = puVar3[2];
                  *(int *)(uVar9 + 0xc + iVar19) = local_254;
                  *(wint_t ***)(uVar9 + 0x10 + iVar19) = local_250;
                  if (local_274 != -4) {
                    if (local_274 == 0) {
                      FUN_00a3fb10();
                    }
                    ppwVar13 = (wint_t **)(iVar8 + 4);
                    ppwVar16 = ppwVar13;
                    if (7 < *(uint *)(iVar8 + 0x18)) {
                      ppwVar16 = (wint_t **)*ppwVar13;
                    }
                    ppwVar1 = (wint_t **)((int)ppwVar20 + 2);
                    if (ppwVar1 <= (wint_t **)((int)ppwVar16 + *(int *)(iVar8 + 0x14) * 2)) {
                      if (7 < *(uint *)(iVar8 + 0x18)) {
                        ppwVar13 = (wint_t **)*ppwVar13;
                      }
                      if (ppwVar13 <= ppwVar1) goto LAB_00a08403;
                    }
                    FUN_00a3fb10();
                  }
LAB_00a08403:
                  puVar3 = (uint *)local_26c[1];
                  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((undefined *)*puVar3 <= local_25c))
                  {
                    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                                 "wxVector<struct wxHtmlCacheItem>::at");
                  }
                  uVar9 = puVar3[2];
                  *(int *)(uVar9 + 0x14 + iVar19) = iVar8;
                  *(wint_t **)(uVar9 + 0x18 + iVar19) = (wint_t *)((int)ppwVar20 + 2);
                  param_1 = local_274;
                  break;
                }
              }
              iVar19 = iVar19 + -0x20;
              param_1 = local_274;
            }
            goto LAB_00a08313;
          }
        }
        puVar3 = (uint *)local_26c[1];
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((undefined *)*puVar3 <= local_268)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/vector.h",0x13f,
                       "wxVector<struct wxHtmlCacheItem>::at");
        }
        *(undefined4 *)(puVar3[2] + 8 + iVar19) = 1;
        cVar4 = FUN_00a077c0();
        param_1 = local_274;
        if (cVar4 != '\0') {
          pwVar21 = &wStack_204;
          iStack_24c = local_274;
          ppwStack_248 = local_270;
          do {
            wVar5 = *pwVar21;
            pwVar21 = pwVar21 + 1;
          } while (wVar5 != 0);
          puVar18 = (undefined *)((int)pwVar21 - (int)auStack_202 >> 1);
          iVar19 = local_274;
          local_25c = puVar18;
LAB_00a084e0:
          if ((iVar19 != -4) && ((iVar19 == 0 || (iVar19 != local_264)))) {
            FUN_00a3fb10();
            iVar19 = local_274;
          }
          if (local_270 < local_260) {
            do {
              ppwVar20 = local_270;
              ppwStack_230 = local_270;
              iVar8 = iVar19;
              if (iVar19 != -4) {
                if (iVar19 == 0) {
                  FUN_00a3fb10();
                  iVar8 = local_274;
                }
                ppwVar13 = (wint_t **)(iVar19 + 4);
                ppwVar16 = ppwVar13;
                if (7 < *(uint *)(iVar19 + 0x18)) {
                  ppwVar16 = (wint_t **)*ppwVar13;
                }
                if ((wint_t **)((int)ppwVar20 + 2) <=
                    (wint_t **)((int)ppwVar16 + *(int *)(iVar19 + 0x14) * 2)) {
                  if (7 < *(uint *)(iVar19 + 0x18)) {
                    ppwVar13 = (wint_t **)*ppwVar13;
                  }
                  puVar18 = local_25c;
                  if (ppwVar13 <= (wint_t **)((int)ppwVar20 + 2)) goto LAB_00a08560;
                }
                FUN_00a3fb10();
                iVar8 = local_274;
                puVar18 = local_25c;
              }
LAB_00a08560:
              ppwVar20 = (wint_t **)((int)ppwStack_230 + 2);
              if ((iVar19 != -4) && ((iVar19 == 0 || (iVar19 != local_264)))) {
                FUN_00a3fb10();
                iVar8 = local_274;
              }
              if (local_260 <= ppwVar20) goto LAB_00a08696;
              iVar19 = iVar8;
              if (iVar8 != -4) {
                if (iVar8 == 0) {
                  FUN_00a3fb10();
                  iVar8 = local_274;
                }
                if (*(uint *)(iVar8 + 0x18) < 8) {
                  iVar11 = iVar8 + 4;
                }
                else {
                  iVar11 = *(int *)(iVar8 + 4);
                }
                iVar19 = iVar8;
                if ((wint_t **)(iVar11 + *(int *)(iVar8 + 0x14) * 2) <= local_270) {
                  FUN_00a3fb10();
                  iVar19 = local_274;
                }
              }
              ppwVar20 = local_270;
              iVar8 = iVar19;
              if (*(wint_t *)local_270 == 0x3c) {
                ppwStack_228 = local_270;
                if (iVar19 != -4) {
                  if (iVar19 == 0) {
                    FUN_00a3fb10();
                    iVar8 = local_274;
                  }
                  ppwVar13 = (wint_t **)(iVar19 + 4);
                  ppwVar16 = ppwVar13;
                  if (7 < *(uint *)(iVar19 + 0x18)) {
                    ppwVar16 = (wint_t **)*ppwVar13;
                  }
                  if ((wint_t **)((int)ppwVar20 + 2) <=
                      (wint_t **)((int)ppwVar16 + *(int *)(iVar19 + 0x14) * 2)) {
                    if (7 < *(uint *)(iVar19 + 0x18)) {
                      ppwVar13 = (wint_t **)*ppwVar13;
                    }
                    puVar18 = local_25c;
                    if (ppwVar13 <= (wint_t **)((int)ppwVar20 + 2)) goto LAB_00a0861d;
                  }
                  FUN_00a3fb10();
                  iVar8 = local_274;
                  puVar18 = local_25c;
                }
LAB_00a0861d:
                pwVar21 = (wint_t *)((int)ppwStack_228 + 2);
                if (iVar19 != -4) {
                  if (iVar19 == 0) {
                    FUN_00a3fb10();
                    iVar8 = local_274;
                  }
                  if (*(uint *)(iVar19 + 0x18) < 8) {
                    iVar11 = iVar19 + 4;
                  }
                  else {
                    iVar11 = *(int *)(iVar19 + 4);
                  }
                  if ((wint_t *)(iVar11 + *(int *)(iVar19 + 0x14) * 2) <= pwVar21) {
                    FUN_00a3fb10();
                    iVar8 = local_274;
                  }
                }
                if (*pwVar21 == 0x2f) goto LAB_00a08696;
              }
              iVar19 = iVar8;
              if (iVar8 != -4) {
                if (iVar8 == 0) {
                  FUN_00a3fb10();
                  iVar8 = local_274;
                }
                if (*(uint *)(iVar8 + 0x18) < 8) {
                  iVar11 = iVar8 + 4;
                }
                else {
                  iVar11 = *(int *)(iVar8 + 4);
                }
                iVar19 = iVar8;
                if ((wint_t **)(iVar11 + *(int *)(iVar8 + 0x14) * 2) <= local_270) {
                  FUN_00a3fb10();
                  iVar19 = local_274;
                }
              }
              local_270 = (wint_t **)((int)local_270 + 2);
            } while( true );
          }
          local_274 = iStack_24c;
          local_270 = ppwStack_248;
          param_1 = iStack_24c;
        }
      }
    }
  }
  goto LAB_00a08313;
LAB_00a08696:
  if (iVar8 != -4) {
    if (iVar8 == 0) {
      FUN_00a3fb10();
      iVar8 = local_274;
    }
    if (*(uint *)(iVar8 + 0x18) < 8) {
      iVar19 = iVar8 + 4;
    }
    else {
      iVar19 = *(int *)(iVar8 + 4);
    }
    if ((wint_t **)(iVar19 + *(int *)(iVar8 + 0x14) * 2) <= local_270) {
      FUN_00a3fb10();
      iVar8 = local_274;
    }
  }
  if (*(wint_t *)local_270 == 0x3c) {
    if (iVar8 != -4) {
      if (iVar8 == 0) {
        FUN_00a3fb10();
        iVar8 = local_274;
      }
      if (*(uint *)(iVar8 + 0x18) < 8) {
        iVar19 = iVar8 + 4;
      }
      else {
        iVar19 = *(int *)(iVar8 + 4);
      }
      if ((wint_t **)(iVar19 + *(int *)(iVar8 + 0x14) * 2) <= local_270) {
        FUN_00a3fb10();
        iVar8 = local_274;
      }
    }
    local_270 = (wint_t **)((int)local_270 + 2);
  }
  puVar17 = (undefined *)0x0;
  while( true ) {
    if ((iVar8 != -4) && ((iVar8 == 0 || (iVar8 != local_264)))) {
      FUN_00a3fb10();
      iVar8 = local_274;
    }
    if ((local_260 <= local_270) || ((int)puVar18 <= (int)puVar17)) break;
    if (iVar8 != -4) {
      if (iVar8 == 0) {
        FUN_00a3fb10();
        iVar8 = local_274;
      }
      if (*(uint *)(iVar8 + 0x18) < 8) {
        iVar19 = iVar8 + 4;
      }
      else {
        iVar19 = *(int *)(iVar8 + 4);
      }
      if ((wint_t **)(iVar19 + *(int *)(iVar8 + 0x14) * 2) <= local_270) {
        FUN_00a3fb10();
        iVar8 = local_274;
      }
    }
    wVar5 = *(wint_t *)local_270;
    if ((wVar5 == 0x3e) || (wVar5 == 0x3c)) break;
    wVar6 = _towupper(wVar5);
    if (wVar6 == auStack_202[(int)(puVar17 + -1)]) {
      puVar17 = puVar17 + 1;
    }
    else if ((((wVar5 != 0x20) && (wVar5 != 10)) && (wVar5 != 0xd)) && (wVar5 != 9)) {
      puVar17 = (undefined *)0x0;
    }
    if (local_274 != -4) {
      if (local_274 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(local_274 + 0x18) < 8) {
        iVar19 = local_274 + 4;
      }
      else {
        iVar19 = *(int *)(local_274 + 4);
      }
      if ((wint_t **)(iVar19 + *(int *)(local_274 + 0x14) * 2) <= local_270) {
        FUN_00a3fb10();
      }
    }
    local_270 = (wint_t **)((int)local_270 + 2);
    iVar8 = local_274;
  }
  if (puVar17 == puVar18) goto LAB_00a08839;
  iVar19 = iVar8;
  if (iVar8 != -4) {
    if (iVar8 == 0) {
      FUN_00a3fb10();
      iVar8 = local_274;
    }
    if (*(uint *)(iVar8 + 0x18) < 8) {
      iVar11 = iVar8 + 4;
    }
    else {
      iVar11 = *(int *)(iVar8 + 4);
    }
    iVar19 = iVar8;
    if ((wint_t **)(iVar11 + *(int *)(iVar8 + 0x14) * 2) <= local_270) {
      FUN_00a3fb10();
      iVar19 = local_274;
    }
  }
  local_270 = (wint_t **)((int)local_270 + 2);
  goto LAB_00a084e0;
LAB_00a08839:
  ppwStack_240 = local_270;
  iStack_244 = iVar8;
  puVar7 = (undefined4 *)FUN_004226c0();
  uStack_23c = *puVar7;
  uStack_238 = puVar7[1];
  piVar14 = (int *)FUN_004226c0();
  local_270 = (wint_t **)piVar14[1];
  param_1 = *piVar14;
  local_274 = *piVar14;
LAB_00a08313:
  if (param_1 != -4) {
    if (param_1 == 0) {
      FUN_00a3fb10();
      param_1 = local_274;
    }
    if (*(uint *)(param_1 + 0x18) < 8) {
      iVar19 = param_1 + 4;
    }
    else {
      iVar19 = *(int *)(param_1 + 4);
    }
    if ((wint_t **)(iVar19 + *(int *)(param_1 + 0x14) * 2) <= local_270) {
      FUN_00a3fb10();
      param_1 = local_274;
    }
  }
  local_270 = (wint_t **)((int)local_270 + 2);
  param_1_00 = local_26c;
  goto LAB_00a07c70;
}



void __fastcall FUN_00a08920(undefined4 *param_1)

{
  *param_1 = wxHtmlTagsCache::vftable;
  if (param_1[1] != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1[1] + 8));
  }
  return;
}



void __fastcall FUN_00a08960(int param_1)

{
  int iVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bed15e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1 + 0x68);
  local_4 = 2;
  if (iVar1 != 0) {
    FUN_00a08960();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iVar1);
  }
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  FUN_00853f30(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00853f30();
  _free(*(void **)(param_1 + 0x1c));
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_00a08a20(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxHtmlTagsCache::vftable;
  if (param_1_00[1] != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1_00[1] + 8));
  }
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall
FUN_00a08a70(int param_1_00,int param_1,undefined4 param_2,undefined4 *param_3,uint *param_4,
            undefined4 param_5,int param_6)

{
  uint *puVar1;
  short *psVar2;
  bool bVar3;
  ushort uVar4;
  uint *puVar5;
  int *piVar6;
  int iVar7;
  undefined4 uVar8;
  ushort *puVar9;
  ushort *puVar10;
  int iVar11;
  uint uVar12;
  uint *puVar13;
  uint *puVar14;
  uint local_114;
  uint local_110;
  ushort *local_10c;
  uint local_108;
  ushort *local_104;
  undefined local_100 [4];
  uint local_fc;
  undefined4 local_ec;
  uint local_e8;
  void *local_e4;
  int local_dc;
  undefined local_d8 [4];
  uint local_d4;
  undefined4 local_c4;
  uint local_c0;
  void *local_bc;
  undefined4 local_b4;
  undefined4 local_b0;
  undefined4 *local_ac;
  undefined4 local_a8;
  undefined4 local_a4;
  int local_a0;
  undefined local_7c [36];
  undefined local_58 [4];
  uint local_54;
  undefined4 local_44;
  uint local_40;
  void *local_3c;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bed263;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_114;
  ExceptionList = &local_c;
  local_114 = 0;
  local_a8 = param_2;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  local_ac = param_3;
  local_a4 = param_5;
  local_dc = param_6;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x28) = 0;
  *(undefined4 *)(param_1_00 + 0x2c) = 0;
  *(undefined4 *)(param_1_00 + 0x30) = 0;
  *(undefined4 *)(param_1_00 + 0x34) = 0;
  local_4 = 0;
  *(undefined4 *)(param_1_00 + 0x38) = 0;
  *(undefined4 *)(param_1_00 + 0x3c) = 0;
  local_a0 = param_1_00;
  FUN_00853ce0(0);
  local_4._0_1_ = 1;
  FUN_00853ce0(0);
  local_4 = CONCAT31(local_4._1_3_,2);
  *(undefined4 *)(param_1_00 + 0x60) = 0;
  *(undefined4 *)(param_1_00 + 0x6c) = 0;
  *(undefined4 *)(param_1_00 + 0x68) = 0;
  *(int *)(param_1_00 + 0x70) = param_1;
  if (param_1 == 0) {
    *(undefined4 *)(param_1_00 + 100) = 0;
  }
  else {
    iVar11 = *(int *)(param_1 + 0x6c);
    *(int *)(param_1_00 + 100) = iVar11;
    if (iVar11 == 0) {
      *(int *)(param_1 + 0x68) = param_1_00;
      *(int *)(*(int *)(param_1_00 + 0x70) + 0x6c) = param_1_00;
    }
    else {
      *(int *)(iVar11 + 0x60) = param_1_00;
      *(int *)(*(int *)(param_1_00 + 0x70) + 0x6c) = param_1_00;
    }
  }
  local_b4 = *param_3;
  local_b0 = param_3[1];
  puVar5 = (uint *)FUN_004226c0(1);
  uVar12 = *puVar5;
  local_10c = (ushort *)puVar5[1];
  puVar9 = local_10c;
  local_110 = uVar12;
  while( true ) {
    if ((uVar12 != 0xfffffffc) && ((uVar12 == 0 || (uVar12 != *param_4)))) {
      FUN_00a3fb10();
    }
    puVar10 = puVar9;
    if ((ushort *)param_4[1] <= puVar9) break;
    if (uVar12 != 0xfffffffc) {
      if (uVar12 == 0) {
        FUN_00a3fb10();
        puVar10 = local_10c;
      }
      if (*(uint *)(uVar12 + 0x18) < 8) {
        iVar11 = uVar12 + 4;
      }
      else {
        iVar11 = *(int *)(uVar12 + 4);
      }
      if ((ushort *)(iVar11 + *(int *)(uVar12 + 0x14) * 2) <= puVar10) {
        FUN_00a3fb10();
        puVar10 = local_10c;
      }
    }
    puVar10 = puVar10 + 1;
    local_10c = puVar10;
    if (uVar12 != 0xfffffffc) {
      if (uVar12 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(uVar12 + 0x18) < 8) {
        iVar11 = uVar12 + 4;
      }
      else {
        iVar11 = *(int *)(uVar12 + 4);
      }
      if ((ushort *)(iVar11 + *(int *)(uVar12 + 0x14) * 2) <= puVar9) {
        FUN_00a3fb10();
      }
    }
    uVar4 = *puVar9;
    if (((((uVar4 == 0x20) || (uVar4 == 0xd)) || (uVar4 == 10)) || ((uVar4 == 9 || (uVar4 == 0x3e)))
        ) || (uVar4 == 0x2f)) break;
    if ((0x60 < uVar4) && (uVar4 < 0x7b)) {
      uVar4 = uVar4 - 0x20;
    }
    FID_conflict_append(1,uVar4);
    puVar9 = puVar10;
  }
  local_108 = uVar12;
  local_104 = puVar10;
  piVar6 = (int *)FUN_004226c0(0xffffffff);
  iVar11 = *piVar6;
  psVar2 = (short *)piVar6[1];
  if (iVar11 != -4) {
    if (iVar11 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(iVar11 + 0x18) < 8) {
      iVar7 = iVar11 + 4;
    }
    else {
      iVar7 = *(int *)(iVar11 + 4);
    }
    if ((short *)(iVar7 + *(int *)(iVar11 + 0x14) * 2) <= psVar2) {
      FUN_00a3fb10();
    }
  }
  if (*psVar2 != 0x3e) {
    local_1c = 7;
    local_20 = 0;
    local_30 = local_30 & 0xffff0000;
    local_18 = (void *)0x0;
    local_40 = 7;
    local_44 = 0;
    local_54 = local_54 & 0xffff0000;
    local_3c = (void *)0x0;
    local_4 = CONCAT31(local_4._1_3_,4);
    local_108 = 0;
LAB_00a08d20:
    iVar11 = 1;
    do {
      if ((local_110 != 0xfffffffc) && ((local_110 == 0 || (local_110 != *param_4)))) {
        FUN_00a3fb10();
      }
      puVar9 = local_10c;
      uVar12 = local_110;
      if ((ushort *)param_4[1] <= local_10c) {
LAB_00a090ed:
        _free(local_3c);
        if (7 < local_40) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_54);
        }
        local_40 = 7;
        local_44 = 0;
        local_54 = local_54 & 0xffff0000;
        local_4 = CONCAT31(local_4._1_3_,2);
        _free(local_18);
        if (7 < local_1c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_30);
        }
        break;
      }
      if (local_110 != 0xfffffffc) {
        if (local_110 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(uVar12 + 0x18) < 8) {
          iVar7 = uVar12 + 4;
        }
        else {
          iVar7 = *(int *)(uVar12 + 4);
        }
        if ((ushort *)(iVar7 + *(int *)(uVar12 + 0x14) * 2) <= local_10c) {
          FUN_00a3fb10();
        }
      }
      local_10c = local_10c + 1;
      if (uVar12 != 0xfffffffc) {
        if (uVar12 == 0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(uVar12 + 0x18) < 8) {
          iVar7 = uVar12 + 4;
        }
        else {
          iVar7 = *(int *)(uVar12 + 4);
        }
        if ((ushort *)(iVar7 + *(int *)(uVar12 + 0x14) * 2) <= puVar9) {
          FUN_00a3fb10();
        }
      }
      uVar4 = *puVar9;
      if (uVar4 == 0x3e) {
        if (iVar11 == 5) {
          if ((ushort)local_108 != 0) goto switchD_00a08dea_switchD;
          FUN_00854700(local_34,1);
          if (local_dc == 0) {
            FUN_00854700(local_58,1);
          }
          else {
            uVar8 = FUN_00a06860(local_7c,local_58);
            local_4 = CONCAT31(local_4._1_3_,6);
            FUN_00854700(uVar8,1);
            FUN_0040159c();
          }
        }
        else if ((iVar11 == 3) || (iVar11 == 2)) {
          FUN_00854700(local_34,1);
          local_e8 = 7;
          local_ec = 0;
          local_fc = local_fc & 0xffff0000;
          local_e4 = (void *)0x0;
          local_4 = CONCAT31(local_4._1_3_,5);
          FUN_00854700(local_100,1);
          _free(local_e4);
          if (7 < local_e8) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_fc);
          }
        }
        goto LAB_00a090ed;
      }
switchD_00a08dea_switchD:
      switch(iVar11) {
      case 1:
        if (((uVar4 != 0x20) && (uVar4 != 0xd)) && ((uVar4 != 10 && (uVar4 != 9)))) {
          FUN_00855e10(uVar4);
          iVar11 = 2;
        }
        break;
      case 2:
        if (((uVar4 == 0x20) || (uVar4 == 0xd)) || ((uVar4 == 10 || (uVar4 == 9)))) {
          iVar11 = 3;
        }
        else if (uVar4 == 0x3d) {
          iVar11 = 4;
        }
        else {
          FUN_0083fd50(uVar4);
        }
        break;
      case 3:
        if (uVar4 == 0x3d) {
          iVar11 = 4;
        }
        else if ((((uVar4 != 0x20) && (uVar4 != 0xd)) && (uVar4 != 10)) && (uVar4 != 9)) {
          FUN_00854700(local_34,1);
          local_e8 = 7;
          local_ec = 0;
          local_fc = local_fc & 0xffff0000;
          local_e4 = (void *)0x0;
          local_4._0_1_ = 7;
          FUN_00854700(local_100,1);
          local_4 = CONCAT31(local_4._1_3_,4);
          FUN_0040159c();
          FUN_00855e10(uVar4);
          iVar11 = 2;
        }
        break;
      case 4:
        if (((uVar4 != 0x20) && (uVar4 != 0xd)) && ((uVar4 != 10 && (uVar4 != 9)))) {
          if ((uVar4 == 0x22) || (uVar4 == 0x27)) {
            local_108 = (uint)uVar4;
            local_c0 = 7;
            local_c4 = 0;
            local_d4 = local_d4 & 0xffff0000;
            local_bc = (void *)0x0;
            local_4._0_1_ = 8;
            FUN_0043261a(local_d8);
            local_4 = CONCAT31(local_4._1_3_,4);
            FUN_0040159c();
            iVar11 = 5;
          }
          else {
            local_108 = 0;
            FUN_00855e10(uVar4);
            iVar11 = 5;
          }
        }
        break;
      case 5:
        if ((ushort)local_108 == 0) {
          if ((((uVar4 == 0x20) || (uVar4 == 0xd)) || (uVar4 == 10)) || (uVar4 == 9))
          goto LAB_00a08ffa;
        }
        else if (uVar4 == (ushort)local_108) goto LAB_00a08ffa;
        FID_conflict_append(1,uVar4);
      }
    } while( true );
  }
  iVar11 = param_1_00 + 0x24;
  puVar5 = (uint *)(param_1_00 + 0x38);
  *(uint *)(param_1_00 + 0x28) = local_110;
  puVar1 = (uint *)(param_1_00 + 0x30);
  *(ushort **)(param_1_00 + 0x2c) = local_10c;
  puVar13 = puVar1;
  puVar14 = puVar5;
  uVar8 = FUN_008478e0(&local_b4);
  FUN_00a07900(local_ac,uVar8,puVar13,puVar14,iVar11);
  uVar12 = *param_4;
  if ((uVar12 != 0xfffffffc) && ((uVar12 == 0 || (uVar12 != *puVar1)))) {
    FUN_00a3fb10();
  }
  if (param_4[1] < *(uint *)(param_1_00 + 0x34)) {
    *puVar1 = *param_4;
    *(uint *)(param_1_00 + 0x34) = param_4[1];
  }
  uVar12 = *param_4;
  if ((uVar12 != 0xfffffffc) && ((uVar12 == 0 || (uVar12 != *puVar5)))) {
    FUN_00a3fb10();
  }
  if (param_4[1] < *(uint *)(param_1_00 + 0x3c)) {
    *puVar5 = *param_4;
    *(uint *)(param_1_00 + 0x3c) = param_4[1];
  }
  FUN_00a09b60(param_1_00);
  uVar12 = 0;
  local_4._0_1_ = 10;
  do {
    FUN_0043c211(*(undefined4 *)((int)&PTR_s_text_align_00d9aa44 + uVar12));
    local_114 = local_114 | 1;
    local_4 = CONCAT31(local_4._1_3_,0xb);
    iVar11 = FUN_00853d10(local_d8,0,0);
    if (iVar11 == -1) {
LAB_00a092f4:
      bVar3 = false;
    }
    else {
      FUN_0043c211(*(undefined4 *)((int)&PTR_s_ALIGN_00d9aa48 + uVar12));
      local_114 = local_114 | 2;
      local_4 = 0xc;
      iVar11 = FUN_00853d10(local_100,0,0);
      if (iVar11 != -1) goto LAB_00a092f4;
      bVar3 = true;
    }
    if ((local_114 & 2) != 0) {
      local_114 = local_114 & 0xfffffffd;
      _free(local_e4);
      if (7 < local_e8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_fc);
      }
      local_e8 = 7;
      local_ec = 0;
      local_fc = local_fc & 0xffff0000;
    }
    local_4._0_1_ = 10;
    local_4._1_3_ = 0;
    if ((local_114 & 1) != 0) {
      local_114 = local_114 & 0xfffffffe;
      _free(local_bc);
      if (7 < local_c0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_d4);
      }
    }
    if (bVar3) {
      FUN_0043c211(*(undefined4 *)((int)&PTR_s_ALIGN_00d9aa48 + uVar12));
      local_4._0_1_ = 0xd;
      FUN_00854700(local_d8,1);
      local_4._0_1_ = 10;
      _free(local_bc);
      if (7 < local_c0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_d4);
      }
      FUN_0043c211(*(undefined4 *)((int)&PTR_s_text_align_00d9aa44 + uVar12));
      local_4._0_1_ = 0xe;
      uVar8 = FUN_00a02290(local_100,local_d8);
      local_4._0_1_ = 0xf;
      FUN_00854700(uVar8,1);
      _free(local_e4);
      if (7 < local_e8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_fc);
      }
      local_e8 = 7;
      local_ec = 0;
      local_fc = local_fc & 0xffff0000;
      local_4._0_1_ = 10;
      _free(local_bc);
      if (7 < local_c0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_d4);
      }
    }
    uVar12 = uVar12 + 8;
    if (0x1f < uVar12) {
      local_4._0_1_ = 0x10;
      FUN_00853f30();
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_00853f30();
      ExceptionList = local_c;
      ___security_check_cookie_4();
      return;
    }
  } while( true );
LAB_00a08ffa:
  FUN_00854700(local_34,1);
  if ((ushort)local_108 == 0) {
    FUN_00850fc0();
  }
  if (local_dc == 0) {
    FUN_00854700(local_58,1);
  }
  else {
    uVar8 = FUN_00a06860(local_7c,local_58);
    local_4._0_1_ = 9;
    FUN_00854700(uVar8,1);
    local_4 = CONCAT31(local_4._1_3_,4);
    FUN_0040159c();
  }
  goto LAB_00a08d20;
}



bool FUN_00a094e0(int param_1,int *param_2)

{
  int *piVar1;
  char cVar2;
  
  piVar1 = param_2;
  if (param_2 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\html\\htmltag.cpp",0x215,"wxHtmlTag::ParseAsColour",&DAT_00d9aac4,
                   L"invalid colour argument");
    }
    return false;
  }
  if (1 < *(uint *)(param_1 + 0x14)) {
    FUN_0081feb2(&param_2,0);
    if (param_2 != (int *)0x23) {
      cVar2 = FUN_00855ef0(L"black",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0,0,0,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(L"silver",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0xc0,0xc0,0xc0,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(L"gray",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0x80,0x80,0x80,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(L"white",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0xff,0xff,0xff,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(L"maroon",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0x80,0,0,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(&DAT_00d9ab7c,0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0xff,0,0,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(L"purple",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0x80,0,0x80,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(L"fuchsia",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0xff,0,0xff,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(L"green",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0,0x80,0,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(L"lime",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0,0xff,0,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(L"olive",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0x80,0x80,0,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(L"yellow",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0xff,0xff,0,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(L"navy",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0,0,0x80,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(L"blue",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0,0,0xff,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(L"teal",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0,0x80,0x80,0xff);
        return true;
      }
      cVar2 = FUN_00855ef0(L"aqua",0);
      if (cVar2 != '\0') {
        (**(code **)(*piVar1 + 0x28))(0,0xff,0xff,0xff);
        return true;
      }
    }
  }
  cVar2 = (**(code **)(*piVar1 + 0x2c))(param_1);
  return cVar2 != '\0';
}



void FUN_00a09860(int param_1,undefined4 param_2,char param_3)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 local_38;
  undefined local_34 [4];
  uint local_30;
  undefined4 local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6d58;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_38;
  ExceptionList = &local_c;
  local_38 = 0;
  iVar1 = FUN_00853d10(param_2,0,0);
  if (iVar1 == -1) {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
  }
  else {
    if (param_3 != '\0') {
      local_1c = 7;
      local_20 = 0;
      local_30 = local_30 & 0xffff0000;
      local_18 = (void *)0x0;
      local_4 = 0;
      FID_conflict_append(1,0x22);
      uVar2 = thunk_FUN_004325d6(iVar1);
      FID_conflict_append(uVar2,0,0xffffffff);
      FID_conflict_append(1,0x22);
      *(undefined4 *)(param_1 + 0x18) = 7;
      *(undefined4 *)(param_1 + 0x14) = 0;
      *(undefined2 *)(param_1 + 4) = 0;
      FID_conflict_assign(local_34,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = 0;
      _free(local_18);
      if (7 < local_1c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_30);
      }
      goto LAB_00a0998a;
    }
    uVar2 = thunk_FUN_004325d6(iVar1);
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(uVar2,0,0xffffffff);
  }
  *(undefined4 *)(param_1 + 0x1c) = 0;
LAB_00a0998a:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00a099b0(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined local_34 [4];
  undefined4 local_30;
  int local_20;
  uint local_1c;
  void *local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc6f98;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_34;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_00a09860(local_34,param_1,0);
  local_4 = 0;
  if (local_20 != 0) {
    FUN_00a094e0(local_34,param_2,uVar1);
  }
  _free(local_18);
  if (local_1c < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_30);
}



undefined4 FUN_00a09a60(undefined4 param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  uVar1 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  iVar4 = FUN_00853d10(param_1,0,0);
  if (iVar4 != -1) {
    FUN_00a09860(local_30,uVar1,0);
    local_4 = 0;
    cVar2 = FUN_00850950(&param_1,10);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar3);
    }
    if (cVar2 != '\0') {
      *param_2 = param_1;
      ExceptionList = local_c;
      return 1;
    }
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_00a09b30(undefined4 param_1,int param_2,int param_3)

{
  FUN_00852560(param_1,param_2,(param_3 - param_2) + 1);
  return param_1;
}



void FUN_00a09b60(void)

{
  void *pvVar1;
  char cVar2;
  int iVar3;
  undefined *puVar4;
  undefined4 uVar5;
  undefined local_13c [4];
  undefined4 local_138;
  uint local_124;
  void *local_120;
  undefined local_114 [4];
  uint local_110;
  undefined4 local_100;
  uint local_fc;
  void *local_f8;
  undefined local_f0 [4];
  uint local_ec;
  undefined4 local_dc;
  uint local_d8;
  void *local_d4;
  undefined local_cc [4];
  undefined4 local_c8;
  int local_b8;
  uint local_b4;
  void *local_b0;
  undefined local_a8 [4];
  uint local_a4;
  undefined4 local_94;
  uint local_90;
  void *local_8c;
  undefined local_84 [4];
  undefined4 local_80;
  int local_70;
  uint local_6c;
  void *local_68;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed319;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_13c;
  ExceptionList = &local_c;
  FUN_00853ce0(0);
  local_4 = 0;
  FUN_00853ce0(0);
  local_4._0_1_ = 1;
  FUN_004325b6(L"STYLE");
  local_4._0_1_ = 2;
  FUN_00a09860(local_cc,local_114,0);
  local_4._0_1_ = 4;
  _free(local_f8);
  if (7 < local_fc) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_110);
  }
  uVar5 = 0;
  local_110 = local_110 & 0xffff0000;
  local_fc = 7;
  local_100 = 0;
  FUN_008517a0(1);
  FUN_008517a0(uVar5);
  if (local_b8 == 0) {
    _free(local_b0);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  else {
    iVar3 = FUN_00850910(0x7b,0);
    if (iVar3 == 0) {
      iVar3 = FUN_00850910(0x7d,0);
      if (iVar3 == -1) {
        FUN_0083fc60(&PTR_02bd3fc0);
      }
      else {
        puVar4 = (undefined *)FUN_00a09b30(local_13c,1,iVar3 + -1);
        local_4._0_1_ = 5;
        if (local_cc != puVar4) {
          FID_conflict_assign(puVar4,0,0xffffffff);
        }
        local_4._0_1_ = 4;
        FUN_0040159c();
        uVar5 = 0;
        FUN_008517a0(1);
        FUN_008517a0(uVar5);
      }
    }
    FUN_004325b6(&DAT_00d27220);
    local_4._0_1_ = 6;
    FUN_00894710(local_cc,local_f0,4);
    local_4 = CONCAT31(local_4._1_3_,8);
    _free(local_d4);
    if (7 < local_d8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_ec);
    }
    local_ec = local_ec & 0xffff0000;
    local_d8 = 7;
    local_dc = 0;
    cVar2 = FUN_00894180();
    while (cVar2 != '\0') {
      FUN_00894270(local_84);
      local_4._0_1_ = 9;
      iVar3 = FUN_00850910(0x3a,0);
      if ((iVar3 != -1) && (iVar3 != 0)) {
        local_90 = 7;
        local_94 = 0;
        local_a4 = local_a4 & 0xffff0000;
        local_8c = (void *)0x0;
        local_4._0_1_ = 10;
        puVar4 = (undefined *)FUN_00a09b30(local_13c,0,iVar3 + -1);
        local_4._0_1_ = 0xb;
        if (local_a8 != puVar4) {
          FID_conflict_assign(puVar4,0,0xffffffff);
        }
        local_4._0_1_ = 10;
        _free(local_120);
        if (7 < local_124) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_138);
        }
        uVar5 = 0;
        FUN_008517a0(1);
        FUN_008517a0(uVar5);
        FUN_00854700(local_a8,1);
        puVar4 = (undefined *)FUN_00a09b30(local_13c,iVar3 + 1,local_70 + -1);
        local_4._0_1_ = 0xc;
        if (local_a8 != puVar4) {
          FID_conflict_assign(puVar4,0,0xffffffff);
        }
        local_4._0_1_ = 10;
        _free(local_120);
        if (7 < local_124) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_138);
        }
        uVar5 = 0;
        FUN_008517a0(1);
        FUN_008517a0(uVar5);
        FUN_00854700(local_a8,1);
        _free(local_8c);
        if (7 < local_90) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_a4);
        }
      }
      local_4 = CONCAT31(local_4._1_3_,8);
      _free(local_68);
      if (7 < local_6c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_80);
      }
      cVar2 = FUN_00894180();
    }
    local_4._1_3_ = (undefined3)((uint)local_4 >> 8);
    local_4._0_1_ = 4;
    FUN_0083fa70();
    _free(local_b0);
    pvVar1 = ExceptionList;
    ExceptionList = local_c;
  }
  local_c = ExceptionList;
  if (7 < local_b4) {
    ExceptionList = pvVar1;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_c8);
  }
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00a0a000(undefined4 *param_1)

{
  *param_1 = wxAuiTabArt::vftable;
  return;
}



undefined4 * __thiscall FUN_00a0a010(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxAuiTabArt::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00a0a030(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bed35b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008f7630(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return;
}



undefined ** FUN_00a0a090(void)

{
  return &PTR_u_wxAuiNotebook_0323f114;
}



undefined ** FUN_00a0a0a0(void)

{
  return &PTR_u_wxAuiTabCtrl_0323f12c;
}



undefined ** FUN_00a0a0b0(void)

{
  return &PTR_u_wxAuiNotebookEvent_0323f144;
}



void __thiscall FUN_00a0a0c0(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0xa4) = param_1;
  return;
}



void __thiscall FUN_00a0a0d0(int param_1_00,int *param_1)

{
  if (*(undefined4 **)(param_1_00 + 4) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1_00 + 4))(1);
  }
  *(int **)(param_1_00 + 4) = param_1;
  if (param_1 != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00a0a0fa. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(*param_1 + 8))();
    return;
  }
  return;
}



undefined ** FUN_00a0a100(void)

{
  return &PTR_PTR_00d9ac48;
}



undefined * FUN_00a0a110(void)

{
  return &DAT_032ea460;
}



void __fastcall FUN_00a0a120(int *param_1)

{
  code *pcVar1;
  
  if (param_1[0x7a] != 0) {
    *(undefined4 *)(param_1[0x7a] + 4) = 0;
    pcVar1 = *(code **)(*param_1 + 0x15c);
    param_1[0x7a] = 0;
    (*pcVar1)(1,0);
    (**(code **)(*param_1 + 0x160))();
  }
  return;
}



undefined ** FUN_00a0a180(void)

{
  return &PTR_PTR_00d9ac50;
}



undefined * FUN_00a0a190(void)

{
  return &DAT_032ea5e0;
}



void __fastcall FUN_00a0a1a0(int param_1)

{
  *(undefined4 *)(param_1 + 0x34c) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x350) = 0x1504;
  *(undefined4 *)(param_1 + 0x354) = 0;
  *(undefined4 *)(param_1 + 0x374) = 0x14;
  *(undefined4 *)(param_1 + 0x358) = DAT_03238d04;
  *(undefined4 *)(param_1 + 0x35c) = DAT_03238d08;
  *(undefined4 *)(param_1 + 0x360) = 0xffffffff;
  return;
}



void __thiscall FUN_00a0a2b0(int *param_1,char param_2)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  
  uVar1 = (**(code **)(*param_1 + 0x358))();
  if (1 < uVar1) {
    iVar2 = (**(code **)(*param_1 + 0x35c))();
    if (param_2 == '\0') {
      if (0 < iVar2) {
        (**(code **)(*param_1 + 0x38c))(iVar2 + -1);
      }
    }
    else {
      iVar3 = (**(code **)(*param_1 + 0x358))();
      if (iVar2 != iVar3 + -1) {
        if (iVar2 != -1) {
          (**(code **)(*param_1 + 0x38c))(iVar2 + 1);
          return;
        }
        (**(code **)(*param_1 + 0x38c))(0);
        return;
      }
    }
  }
  return;
}



undefined4 __fastcall FUN_00a0a3e0(int *param_1)

{
  int iVar1;
  
  for (iVar1 = (**(code **)(*param_1 + 0x358))(); iVar1 != 0; iVar1 = iVar1 + -1) {
    (**(code **)(*param_1 + 0x378))(0);
  }
  return 1;
}



uint __thiscall FUN_00a0a410(int param_1_00,int param_1,char param_2)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = *(uint *)(param_1_00 + 4);
  if (param_2 == '\0') {
    uVar2 = 0;
    if (uVar1 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar1 <= uVar2)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        if (*(int *)(*(int *)(param_1_00 + 8) + uVar2 * 4) == param_1) {
          return uVar2;
        }
        uVar1 = *(uint *)(param_1_00 + 4);
        uVar2 = uVar2 + 1;
      } while (uVar2 < uVar1);
    }
  }
  else if (uVar1 != 0) {
    uVar1 = uVar1 - 1;
    while( true ) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar1)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      if (*(int *)(*(int *)(param_1_00 + 8) + uVar1 * 4) == param_1) break;
      uVar1 = uVar1 - 1;
      if (uVar1 == 0) {
        return 0xffffffff;
      }
    }
    return uVar1;
  }
  return 0xffffffff;
}



void __fastcall FUN_00a0a4d0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bed433;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxAuiDefaultTabArt::vftable;
  local_4 = 0xf;
  FUN_008f7630(uVar1);
  local_4._0_1_ = 0xe;
  FUN_008f7630();
  local_4._0_1_ = 0xd;
  FUN_008f7630();
  local_4._0_1_ = 0xc;
  FUN_008f7630();
  local_4._0_1_ = 0xb;
  FUN_008f7630();
  local_4._0_1_ = 10;
  FUN_008f7630();
  local_4._0_1_ = 9;
  FUN_008f7630();
  local_4._0_1_ = 8;
  FUN_008f7630();
  local_4._0_1_ = 7;
  param_1[0x12] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 6;
  FUN_008f7630();
  local_4._0_1_ = 5;
  param_1[0xe] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 4;
  param_1[0xc] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 3;
  param_1[7] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 2;
  FUN_00921450();
  local_4._0_1_ = 1;
  FUN_00921450();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00921450();
  *param_1 = wxAuiTabArt::vftable;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a0a610(int *param_1,int *param_2,int param_3)

{
  code *pcVar1;
  int iVar2;
  int iVar3;
  
  pcVar1 = *(code **)(*param_1 + 0x38);
  param_1[0x27] = 100;
  iVar2 = (*pcVar1)();
  iVar2 = (*param_2 - iVar2) + -4;
  if ((param_1[0x29] & 0x400U) != 0) {
    iVar3 = param_1[0x18];
    if (iVar3 != 0) {
      iVar3 = *(int *)(iVar3 + 8);
    }
    iVar2 = iVar2 - iVar3;
  }
  if ((param_1[0x29] & 0x200U) != 0) {
    iVar3 = param_1[0x24];
    if (iVar3 != 0) {
      iVar3 = *(int *)(iVar3 + 8);
    }
    iVar2 = iVar2 - iVar3;
  }
  if (param_3 != 0) {
    param_1[0x27] = iVar2 / param_3;
  }
  if (param_1[0x27] < 100) {
    param_1[0x27] = 100;
  }
  if (iVar2 / 2 < param_1[0x27]) {
    param_1[0x27] = iVar2 / 2;
  }
  if (0xdc < param_1[0x27]) {
    param_1[0x27] = 0xdc;
    param_1[0x28] = param_2[1];
    return;
  }
  param_1[0x28] = param_2[1];
  return;
}



void __thiscall FUN_00a0a6d0(int param_1_00,int param_1,undefined4 param_2,undefined4 *param_3)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  int iVar6;
  undefined **ppuStack_48;
  undefined4 local_44;
  undefined4 local_40;
  int local_3c;
  int local_38;
  void *local_34 [2];
  uint uStack_2c;
  undefined local_20 [4];
  undefined uStack_1c;
  undefined uStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed468;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  FUN_00920050(local_20,0x5a);
  local_4 = 0;
  FUN_00920050(local_34,0xaa);
  local_40 = param_3[1];
  piVar1 = param_3 + 3;
  piVar2 = param_3 + 2;
  local_44 = *param_3;
  local_4 = CONCAT31(local_4._1_3_,1);
  if ((*(byte *)(param_1_00 + 0xa4) & 8) == 0) {
    local_3c = *piVar2;
    local_38 = *piVar1 + -3;
  }
  else {
    local_3c = *piVar2;
    local_38 = *piVar1;
  }
  local_3c = local_3c + 2;
  (**(code **)(**(int **)(param_1 + 8) + 0x130))(&local_44,local_20,local_34,0x80,uVar4);
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x38);
  iVar6 = *piVar1;
  iVar3 = *piVar2;
  if ((*(byte *)(param_1_00 + 0xa4) & 8) == 0) {
    (**(code **)(**(int **)(param_1 + 8) + 0x60))(param_1_00 + 0x40);
    iVar6 = iVar6 + -4;
  }
  else {
    uVar5 = FUN_0095d7e0(&ppuStack_48,100);
    uStack_18 = 2;
    (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar5);
    uStack_1c = 1;
    FUN_008f7630();
    iVar6 = 0;
  }
  (**(code **)(**(int **)(param_1 + 8) + 0x150))(0xffffffff,iVar6,iVar3 + 2,4);
  uStack_2c = uStack_2c & 0xffffff00;
  FUN_0083e850();
  uStack_2c = 0xffffffff;
  ppuStack_48 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_34[0];
  return;
}



void __thiscall FUN_00a0a850(int param_1_00,undefined4 *param_1)

{
  undefined4 local_8;
  undefined4 local_4;
  
  *(undefined4 *)(param_1_00 + 0x2c) = *param_1;
  *(undefined4 *)(param_1_00 + 0x30) = param_1[1];
  *(undefined4 *)(param_1_00 + 0x34) = param_1[2];
  *(undefined4 *)(param_1_00 + 0x38) = param_1[3];
  if (*(int **)(param_1_00 + 4) != (int *)0x0) {
    local_8 = param_1[2];
    local_4 = param_1[3];
    (**(code **)(**(int **)(param_1_00 + 4) + 0xc))(&local_8,*(undefined4 *)(param_1_00 + 0xc));
  }
  return;
}



undefined __thiscall FUN_00a0a8a0(int param_1_00,int param_1)

{
  uint uVar1;
  int *piVar2;
  undefined uVar3;
  undefined uVar4;
  uint uVar5;
  
  uVar1 = *(uint *)(param_1_00 + 0xc);
  uVar3 = 0;
  uVar5 = 0;
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0xc) <= uVar5)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar2 = *(int **)(*(int *)(param_1_00 + 0x10) + uVar5 * 4);
      if (*piVar2 == param_1) {
        *(undefined *)(piVar2 + 0x10) = 1;
        uVar3 = 1;
      }
      else {
        *(undefined *)(piVar2 + 0x10) = 0;
        uVar3 = uVar4;
      }
      uVar5 = uVar5 + 1;
      uVar4 = uVar3;
    } while (uVar5 < uVar1);
  }
  return uVar3;
}



uint __thiscall FUN_00a0a910(int param_1_00,uint param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  
  if (*(uint *)(param_1_00 + 0xc) <= param_1) {
    return param_1 & 0xffffff00;
  }
  puVar1 = (undefined4 *)FUN_009cde80(param_1);
  uVar2 = FUN_00a0a8a0(*puVar1);
  return uVar2;
}



uint __fastcall FUN_00a0a940(int param_1)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = *(uint *)(param_1 + 0xc);
  uVar2 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0xc) <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      if (*(char *)(*(int *)(*(int *)(param_1 + 0x10) + uVar2 * 4) + 0x40) != '\0') {
        return uVar2;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar1);
  }
  return 0xffffffff;
}



undefined4 __thiscall FUN_00a0a9a0(int param_1_00,uint param_1)

{
  undefined4 *puVar1;
  
  if (*(uint *)(param_1_00 + 0xc) <= param_1) {
    return 0;
  }
  puVar1 = (undefined4 *)FUN_009cde80(param_1);
  return *puVar1;
}



uint __thiscall FUN_00a0a9c0(int param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = *(uint *)(param_1_00 + 0xc);
  uVar2 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0xc) <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      if (**(int **)(*(int *)(param_1_00 + 0x10) + uVar2 * 4) == param_1) {
        return uVar2;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar1);
  }
  return 0xffffffff;
}



undefined4 __thiscall FUN_00a0aa30(int param_1_00,uint param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(uint *)(param_1_00 + 0xc) <= param_1) {
      FUN_00840480("..\\..\\src\\aui\\auibook.cpp",0x623,"wxAuiTabContainer::GetPage",
                   "idx < m_pages.GetCount()",L"Invalid Page index");
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      if (*(uint *)(param_1_00 + 0xc) <= param_1) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
        return *(undefined4 *)(*(int *)(param_1_00 + 0x10) + param_1 * 4);
      }
      return *(undefined4 *)(*(int *)(param_1_00 + 0x10) + param_1 * 4);
    }
  }
  return *(undefined4 *)(*(int *)(param_1_00 + 0x10) + param_1 * 4);
}



undefined4 __thiscall FUN_00a0aac0(int param_1_00,uint param_1)

{
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (*(uint *)(param_1_00 + 0xc) <= param_1) {
      FUN_00840480("..\\..\\src\\aui\\auibook.cpp",0x62a,"wxAuiTabContainer::GetPage",
                   "idx < m_pages.GetCount()",L"Invalid Page index");
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      if (*(uint *)(param_1_00 + 0xc) <= param_1) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
        return *(undefined4 *)(*(int *)(param_1_00 + 0x10) + param_1 * 4);
      }
      return *(undefined4 *)(*(int *)(param_1_00 + 0x10) + param_1 * 4);
    }
  }
  return *(undefined4 *)(*(int *)(param_1_00 + 0x10) + param_1 * 4);
}



undefined4 __thiscall FUN_00a0ab50(int param_1_00,uint param_1,uint param_2,int param_3)

{
  uint uVar1;
  uint uVar2;
  char cVar3;
  int *piVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  int iStack_c;
  
  if (((param_3 == 0) || (*(int *)(param_3 + 8) == 0)) ||
     (cVar3 = (**(code **)(**(int **)(param_3 + 8) + 0x10))(), cVar3 == '\0')) {
    return 0;
  }
  uVar1 = *(uint *)(param_1_00 + 0xc);
  uVar2 = *(uint *)(param_1_00 + 0x18);
  if (*(uint *)(param_1_00 + 0x24) < uVar1) {
    return 1;
  }
  iVar5 = 0;
  uVar6 = 0;
  if (uVar2 != 0) {
    do {
      piVar4 = (int *)FUN_009cde80(uVar6);
      if (((*piVar4 == 0x6b) || (*piVar4 == 0x6c)) && ((*(byte *)(piVar4 + 1) & 0x10) == 0)) {
        iVar5 = iVar5 + 1;
      }
      uVar6 = uVar6 + 1;
    } while (uVar6 < uVar2);
    uVar6 = 0;
    if (iVar5 != 0) {
      if ((int)param_1 < (int)param_2) {
        return 0;
      }
      param_3 = 0;
      iStack_c = 0;
      do {
        iVar5 = FUN_009cde80((uVar2 - uVar6) + -1);
        if ((*(int *)(iVar5 + 8) == 0x20) && ((*(byte *)(iVar5 + 4) & 0x10) == 0)) {
          iStack_c = iStack_c + *(int *)(iVar5 + 0x24);
        }
        uVar6 = uVar6 + 1;
      } while (uVar6 < uVar2);
      uVar6 = 0;
      do {
        uVar7 = (uVar2 - uVar6) - 1;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x18) <= uVar7)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar5 = *(int *)(*(int *)(param_1_00 + 0x1c) + uVar7 * 4);
        if ((*(int *)(iVar5 + 8) == 0x10) && ((*(byte *)(iVar5 + 4) & 0x10) == 0)) {
          param_3 = param_3 + *(int *)(iVar5 + 0x24);
        }
        uVar6 = uVar6 + 1;
      } while (uVar6 < uVar2);
      iVar5 = param_3;
      if (param_3 == 0) {
        iVar5 = (**(code **)(**(int **)(param_1_00 + 4) + 0x38))();
      }
      if (param_2 < uVar1) {
        iVar5 = ((*(int *)(param_1_00 + 0x34) - iVar5) - iStack_c) + -2;
        do {
          if (iVar5 < 1) {
            return 0;
          }
          if (param_2 == param_1) {
            if (0 < iVar5) {
              return 1;
            }
            iStack_c = *(int *)(param_1_00 + 0x34) - iStack_c;
            if (iStack_c == param_3 || iStack_c - param_3 < 0) {
              return 1;
            }
            return 0;
          }
          param_2 = param_2 + 1;
        } while (param_2 < uVar1);
      }
    }
  }
  return 1;
}



void __thiscall FUN_00a0acf0(int param_1_00,undefined4 param_1,int *param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bef5d8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  FUN_0094bd30(param_2);
  iVar3 = 0;
  local_4 = 0;
  cVar1 = FUN_00a0ab50(param_1,*(undefined4 *)(param_1_00 + 0x3c),local_18,param_2);
  if ((cVar1 == '\0') && (0 < *(int *)(param_1_00 + 0xc))) {
    do {
      cVar1 = FUN_00a0ab50(param_1,iVar3,local_18,param_2);
      if (cVar1 != '\0') {
        *(int *)(param_1_00 + 0x3c) = iVar3;
        (**(code **)(*param_2 + 0x15c))(1,0,uVar2);
        break;
      }
      iVar3 = iVar3 + 1;
    } while (iVar3 < *(int *)(param_1_00 + 0xc));
  }
  local_4 = 0xffffffff;
  FUN_00457221();
  ExceptionList = local_c;
  return;
}



undefined __thiscall FUN_00a0adb0(int param_1_00,undefined4 param_1,undefined4 param_2,int *param_3)

{
  uint uVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  
  cVar3 = FUN_008f7580(param_1,param_2);
  if (cVar3 == '\0') {
    return 0;
  }
  uVar1 = *(uint *)(param_1_00 + 0x18);
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x18) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(param_1_00 + 0x1c) + uVar4 * 4);
      cVar3 = FUN_008f7580(param_1,param_2);
      if ((cVar3 != '\0') && ((*(byte *)(iVar2 + 4) & 0x10) == 0)) {
        if (param_3 != (int *)0x0) {
          *param_3 = iVar2;
        }
        return 1;
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  uVar1 = *(uint *)(param_1_00 + 0x24);
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x24) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(param_1_00 + 0x28) + uVar4 * 4);
      cVar3 = FUN_008f7580(param_1,param_2);
      if ((cVar3 != '\0') && ((*(byte *)(iVar2 + 4) & 0x18) == 0)) {
        if (param_3 != (int *)0x0) {
          *param_3 = iVar2;
        }
        return 1;
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  return 0;
}



void __fastcall FUN_00a0aed0(int param_1)

{
  uint uVar1;
  int **ppiVar2;
  uint uVar3;
  
  uVar1 = *(uint *)(param_1 + 0xc);
  uVar3 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0xc) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      ppiVar2 = *(int ***)(*(int *)(param_1 + 0x10) + uVar3 * 4);
      if (*(char *)(ppiVar2 + 0x10) != '\0') {
        (**(code **)(**ppiVar2 + 0xcc))(1);
        break;
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar1);
  }
  uVar3 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0xc) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      ppiVar2 = *(int ***)(*(int *)(param_1 + 0x10) + uVar3 * 4);
      if (*(char *)(ppiVar2 + 0x10) == '\0') {
        (**(code **)(**ppiVar2 + 0xcc))(0);
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar1);
  }
  return;
}



void __fastcall FUN_00a0af90(int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_20 [4];
  undefined auStack_1c [12];
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed4a0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  FUN_0094be80(param_1);
  local_4 = 0;
  uVar2 = FUN_0091e100(local_20);
  local_4 = CONCAT31(local_4._1_3_,1);
  (**(code **)(*local_10 + 0x50))(uVar2,uVar1);
  puStack_8 = (undefined *)((uint)puStack_8 & 0xffffff00);
  FUN_00921450();
  if (*(int *)(param_1 + 0x1a0) != 0) {
    (**(code **)(*(int *)(param_1 + 0x194) + 4))(auStack_1c,param_1);
  }
  puStack_8 = (undefined *)0xffffffff;
  FUN_00457221();
  ExceptionList = local_10;
  return;
}



undefined4 * __fastcall FUN_00a0b0a0(undefined4 *param_1)

{
  FUN_00446436();
  *param_1 = wxTabFrame::vftable;
  param_1[0x5d] = 0;
  param_1[0x5e] = 0;
  param_1[0x5f] = 0;
  param_1[0x60] = 0;
  param_1[0x59] = 0;
  param_1[0x5a] = 0;
  param_1[0x5b] = 200;
  param_1[0x5c] = 200;
  param_1[0x61] = 0;
  param_1[0x62] = 0x14;
  return param_1;
}



void __fastcall FUN_00a0b120(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bed4c8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxTabFrame::vftable;
  local_4 = 0;
  if ((int *)param_1[0x61] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x61] + 4))(1,uVar1);
    param_1[0x61] = 0;
  }
  local_4 = 0xffffffff;
  FUN_009150e0();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00a0b1a0(int param_1)

{
  byte bVar1;
  int *piVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int **ppiVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  uint uVar9;
  
  piVar2 = *(int **)(param_1 + 0x184);
  if (((piVar2 != (int *)0x0) && (piVar2[0x4e] == 0)) && (*(int *)(piVar2[0x11] + 0x138) == 0)) {
    uVar3 = *(undefined4 *)(param_1 + 0x164);
    iVar8 = *(int *)(param_1 + 0x188);
    iVar6 = *(int *)(param_1 + 0x168);
    uVar4 = *(undefined4 *)(param_1 + 0x16c);
    *(undefined4 *)(param_1 + 0x174) = uVar3;
    *(int *)(param_1 + 0x178) = iVar6;
    *(undefined4 *)(param_1 + 0x17c) = uVar4;
    *(int *)(param_1 + 0x180) = iVar8;
    bVar1 = *(byte *)(piVar2 + 0x75);
    *(undefined4 *)(param_1 + 0x174) = uVar3;
    if ((bVar1 & 8) == 0) {
      *(int *)(param_1 + 0x178) = iVar6;
      *(undefined4 *)(param_1 + 0x17c) = uVar4;
      *(int *)(param_1 + 0x180) = iVar8;
      (**(code **)(*piVar2 + 0x288))(uVar3,iVar6,uVar4,iVar8,3);
    }
    else {
      iVar6 = iVar6 + (*(int *)(param_1 + 0x170) - iVar8);
      *(int *)(param_1 + 0x178) = iVar6;
      *(undefined4 *)(param_1 + 0x17c) = uVar4;
      *(int *)(param_1 + 0x180) = iVar8;
      (**(code **)(*piVar2 + 0x288))(uVar3,iVar6);
    }
    FUN_00a0a850(&stack0xffffffdc);
    (**(code **)(**(int **)(param_1 + 0x184) + 0x15c))(1,0);
    (**(code **)(**(int **)(param_1 + 0x184) + 0x160))();
    uVar9 = *(uint *)(*(int *)(param_1 + 0x184) + 0x1a0);
    uVar7 = 0;
    if (uVar9 != 0) {
      do {
        iVar8 = *(int *)(param_1 + 0x170) - *(int *)(param_1 + 0x188);
        if (iVar8 < 0) {
          iVar8 = 0;
        }
        ppiVar5 = (int **)FUN_009cde80(uVar7);
        if ((*(byte *)(*(int *)(param_1 + 0x184) + 0x1d4) & 8) == 0) {
          (**(code **)(**ppiVar5 + 0x288))
                    (*(undefined4 *)(param_1 + 0x164),
                     *(int *)(param_1 + 0x168) + *(int *)(param_1 + 0x188),
                     *(undefined4 *)(param_1 + 0x16c),iVar8,3);
        }
        else {
          (**(code **)(**ppiVar5 + 0x288))
                    (*(undefined4 *)(param_1 + 0x164),*(undefined4 *)(param_1 + 0x168),
                     *(undefined4 *)(param_1 + 0x16c));
        }
        uVar7 = uVar7 + 1;
      } while (uVar7 < uVar9);
    }
  }
  return;
}



undefined4 __thiscall FUN_00a0b3c0(undefined4 param_1_00,byte param_1)

{
  FUN_00a0b120();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00a0b3e0(int *param_1_00,int *param_1)

{
  uint uVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  uint uVar7;
  
  if ((undefined4 *)param_1_00[0xc3] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1_00[0xc3])(1);
  }
  param_1_00[0xc3] = (int)param_1;
  if (param_1 != (int *)0x0) {
    (**(code **)(*param_1 + 8))(param_1_00[0xd2]);
  }
  cVar3 = (**(code **)(*param_1_00 + 0x3c8))();
  if (cVar3 == '\0') {
    iVar4 = FUN_00a14090();
    uVar1 = *(uint *)(iVar4 + 4);
    uVar7 = 0;
    if (uVar1 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar4 + 4) <= uVar7)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar2 = *(int *)(*(int *)(iVar4 + 8) + uVar7 * 4);
        iVar5 = FUN_008507a0(L"dummy");
        if (iVar5 != 0) {
          iVar2 = *(int *)(*(int *)(iVar2 + 0x50) + 0x184);
          piVar6 = (int *)(**(code **)(*param_1 + 4))();
          if (*(undefined4 **)(iVar2 + 0x198) != (undefined4 *)0x0) {
            (**(code **)**(undefined4 **)(iVar2 + 0x198))(1);
          }
          *(int **)(iVar2 + 0x198) = piVar6;
          if (piVar6 != (int *)0x0) {
            (**(code **)(*piVar6 + 8))(*(undefined4 *)(iVar2 + 0x1d4));
          }
        }
        uVar7 = uVar7 + 1;
      } while (uVar7 < uVar1);
    }
  }
  return;
}



undefined4 __fastcall FUN_00a0b4f0(int *param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  uint uStack_10;
  
  iVar4 = (**(code **)(*param_1 + 0x3cc))();
  if (param_1[0xdd] != iVar4) {
    piVar1 = (int *)param_1[0xc3];
    param_1[0xdd] = iVar4;
    iVar4 = FUN_00a14090();
    uVar2 = *(uint *)(iVar4 + 4);
    uStack_10 = 0;
    if (uVar2 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar4 + 4) <= uStack_10)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar3 = *(int *)(*(int *)(iVar4 + 8) + uStack_10 * 4);
        iVar5 = FUN_008507a0(L"dummy");
        if (iVar5 != 0) {
          iVar3 = *(int *)(iVar3 + 0x50);
          iVar5 = *(int *)(iVar3 + 0x184);
          *(int *)(iVar3 + 0x188) = param_1[0xdd];
          piVar6 = (int *)(**(code **)(*piVar1 + 4))();
          if (*(undefined4 **)(iVar5 + 0x198) != (undefined4 *)0x0) {
            (**(code **)**(undefined4 **)(iVar5 + 0x198))(1);
          }
          *(int **)(iVar5 + 0x198) = piVar6;
          if (piVar6 != (int *)0x0) {
            (**(code **)(*piVar6 + 8))(*(undefined4 *)(iVar5 + 0x1d4));
          }
          FUN_00a0b1a0();
        }
        uStack_10 = uStack_10 + 1;
      } while (uStack_10 < uVar2);
    }
    return 1;
  }
  return 0;
}



undefined __thiscall FUN_00a0b6f0(int *param_1_00,uint param_1)

{
  char cVar1;
  int **ppiVar2;
  int *piVar3;
  
  if ((uint)param_1_00[0xc5] <= param_1) {
    return 0;
  }
  if (param_1 < (uint)param_1_00[0xc5]) {
    ppiVar2 = (int **)FUN_009cde80(param_1);
    piVar3 = *ppiVar2;
  }
  else {
    piVar3 = (int *)0x0;
  }
  (**(code **)(*piVar3 + 0xcc))(0);
  cVar1 = (**(code **)(*param_1_00 + 0x37c))(param_1);
  if (cVar1 == '\0') {
    return 0;
  }
  (**(code **)(*piVar3 + 0x50))();
  return 1;
}



void FUN_00a0b760(void)

{
  FUN_00a0a9c0();
  return;
}



undefined4 __thiscall FUN_00a0b780(int param_1_00,uint param_1)

{
  undefined4 *puVar1;
  
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    if (param_1 < *(uint *)(param_1_00 + 0x314)) goto LAB_00a0b7c6;
    FUN_008402e0("..\\..\\src\\aui\\auibook.cpp",0xd67,"wxAuiNotebook::GetPage",
                 "page_idx < m_tabs.GetPageCount()",0);
  }
  if (*(uint *)(param_1_00 + 0x314) <= param_1) {
    return 0;
  }
LAB_00a0b7c6:
  puVar1 = (undefined4 *)FUN_009cde80(param_1);
  return *puVar1;
}



void FUN_00a0b7e0(void)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  
  iVar2 = FUN_00a14090();
  uVar1 = *(uint *)(iVar2 + 4);
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 4) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar3 = FUN_008507a0(L"dummy");
      if (iVar3 != 0) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 4) <= uVar4)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        FUN_00a0b1a0();
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  return;
}



undefined4 FUN_00a0b890(undefined4 param_1,undefined4 *param_2,int *param_3)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  
  iVar2 = FUN_00a14090();
  uVar1 = *(uint *)(iVar2 + 4);
  uVar5 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 4) <= uVar5)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar3 = FUN_008507a0(L"dummy");
      if (iVar3 != 0) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 4) <= uVar5)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar3 = *(int *)(*(int *)(*(int *)(iVar2 + 8) + uVar5 * 4) + 0x50);
        iVar4 = FUN_00a0a9c0(param_1);
        if (iVar4 != -1) {
          *param_2 = *(undefined4 *)(iVar3 + 0x184);
          *param_3 = iVar4;
          return 1;
        }
      }
      uVar5 = uVar5 + 1;
    } while (uVar5 < uVar1);
  }
  return 0;
}



undefined4 FUN_00a0b980(undefined4 *param_1)

{
  uint uVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  
  iVar3 = FUN_00a14090();
  uVar1 = *(uint *)(iVar3 + 4);
  uVar5 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar3 + 4) <= uVar5)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar4 = FUN_008507a0(L"dummy");
      if (iVar4 != 0) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar3 + 4) <= uVar5)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar4 = *(int *)(*(int *)(*(int *)(iVar3 + 8) + uVar5 * 4) + 0x50);
        cVar2 = FUN_008f7580(*param_1,param_1[1]);
        if (cVar2 != '\0') {
          return *(undefined4 *)(iVar4 + 0x184);
        }
      }
      uVar5 = uVar5 + 1;
    } while (uVar5 < uVar1);
  }
  return 0;
}



int FUN_00a0ba60(int param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  
  iVar2 = FUN_00a14090();
  uVar1 = *(uint *)(iVar2 + 4);
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 4) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar3 = FUN_008507a0(L"dummy");
      if (iVar3 != 0) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 4) <= uVar4)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar3 = *(int *)(*(int *)(*(int *)(iVar2 + 8) + uVar4 * 4) + 0x50);
        if (*(int *)(iVar3 + 0x184) == param_1) {
          return iVar3;
        }
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  return 0;
}



void __fastcall FUN_00a0bb20(int param_1)

{
  int *piVar1;
  bool bVar2;
  uint uVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  uint local_20;
  int local_1c;
  uint local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed500;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  uVar4 = FUN_00a14090(uVar3);
  FUN_00a1a360(uVar4);
  uVar7 = 0;
  local_4 = 0;
  if (local_14 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_14 <= uVar7)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar5 = FUN_008507a0(L"dummy");
      if (iVar5 != 0) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_14 <= uVar7)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        piVar1 = *(int **)(*(int *)(local_10 + uVar7 * 4) + 0x50);
        if (*(int *)(piVar1[0x61] + 0x1a0) == 0) {
          FUN_00a18b40(piVar1);
          iVar5 = FUN_0086af40(piVar1[0x61]);
          if (iVar5 == 0) {
            FUN_0086ad60(piVar1[0x61]);
          }
          piVar1[0x61] = 0;
          (**(code **)(*piVar1 + 4))(1);
        }
      }
      uVar7 = uVar7 + 1;
    } while (uVar7 < local_14);
  }
  uVar4 = FUN_00a14090(uVar3);
  FUN_00a1a360(uVar4);
  iVar5 = 0;
  bVar2 = false;
  uVar3 = 0;
  local_4 = CONCAT31(local_4._1_3_,1);
  if (local_20 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_20 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar6 = FUN_008507a0(L"dummy");
      if (iVar6 != 0) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_20 <= uVar3)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        if (*(int *)(*(int *)(local_1c + uVar3 * 4) + 0x5c) == 5) {
          bVar2 = true;
        }
        if (iVar5 == 0) {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_20 <= uVar3)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          iVar5 = *(int *)(*(int *)(local_1c + uVar3 * 4) + 0x50);
        }
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < local_20);
    if ((!bVar2) && (iVar5 != 0)) {
      iVar5 = FUN_00a14dd0(iVar5);
      *(undefined4 *)(iVar5 + 0x5c) = 5;
    }
  }
  if ((*(byte *)(param_1 + 0xdc) & 8) == 0) {
    FUN_00a18ce0();
  }
  local_4 = local_4 & 0xffffff00;
  FUN_00a19bd0();
  local_4 = 0xffffffff;
  FUN_00a19bd0();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a0bdc0(int *param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  
  *(undefined *)(param_1 + 0x24) = 1;
  iVar3 = FUN_00a14090();
  uVar1 = *(uint *)(iVar3 + 4);
  uVar5 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar3 + 4) <= uVar5)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(iVar3 + 8) + uVar5 * 4);
      iVar4 = FUN_008507a0(L"dummy");
      if ((iVar4 != 0) && (*(char *)(*(int *)(*(int *)(iVar2 + 0x50) + 0x184) + 0x1e4) != '\0')) {
        return;
      }
      uVar5 = uVar5 + 1;
    } while (uVar5 < uVar1);
  }
  iVar3 = FUN_00a0a9c0(*(undefined4 *)(param_1 + 8));
  if ((iVar3 != -1) && (iVar3 != param_1_00[0xd3])) {
    (**(code **)(*param_1_00 + 0x38c))(iVar3);
  }
  return;
}



void FUN_00a0bf40(void)

{
  FUN_00a0b7e0();
  FUN_0091bae0();
  return;
}



void __thiscall FUN_00a0bf50(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxChildFocusEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void __fastcall FUN_00a0bfa0(int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed52b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  uVar3 = *(uint *)(param_1 + 4);
  uVar4 = 0;
  if (uVar3 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar3 <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0,uVar2);
      }
      iVar1 = *(int *)(*(int *)(param_1 + 8) + uVar4 * 4);
      if (iVar1 != 0) {
        local_4 = 0;
        FUN_008f7630();
        local_4 = 0xffffffff;
        FUN_008f7630();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar3 = *(uint *)(param_1 + 4);
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar3);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a0c050(int param_1_00,uint param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  
  if (*(uint *)(param_1_00 + 4) <= param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\aui\\auibook.cpp",0x2a,"wxAuiTabContainerButtonArray::RemoveAt",
                   "uiIndex < size()",L"bad index in wxAuiTabContainerButtonArray::RemoveAt()");
    }
    return;
  }
  uVar3 = 0;
  if (param_2 != 0) {
    iVar2 = param_1 * 4;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar3 + param_1))
      {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1_00 + 8) + iVar2);
      if (iVar1 != 0) {
        FUN_00a0a030();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar3 = uVar3 + 1;
      iVar2 = iVar2 + 4;
    } while (uVar3 < param_2);
  }
  iVar1 = *(int *)(param_1_00 + 8);
  iVar2 = iVar1 + param_1 * 4;
  FUN_0086a1e0(iVar2 - iVar1 >> 2,(int)(((param_1 + param_2) * 4 - iVar2) + iVar1) >> 2);
  return;
}



void __thiscall FUN_00a0c120(undefined4 *param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  *param_1_00 = *param_1;
  param_1_00[1] = param_1[1];
  param_1_00[2] = param_1[2];
  param_1_00[3] = wxObject::vftable;
  iVar1 = param_1[4];
  param_1_00[4] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[3] = wxBitmap::vftable;
  param_1_00[5] = wxObject::vftable;
  iVar1 = param_1[6];
  param_1_00[6] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[5] = wxBitmap::vftable;
  param_1_00[7] = param_1[7];
  param_1_00[8] = param_1[8];
  param_1_00[9] = param_1[9];
  param_1_00[10] = param_1[10];
  return;
}



undefined4 __thiscall FUN_00a0c190(undefined4 param_1_00,byte param_1)

{
  FUN_00a0a4d0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00a0c1b0(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  
  *param_1_00 = wxAuiDefaultTabArt::vftable;
  param_1_00[1] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 8);
  param_1_00[2] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[1] = wxFont::vftable;
  param_1_00[3] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x10);
  param_1_00[4] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[3] = wxFont::vftable;
  param_1_00[5] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x18);
  param_1_00[6] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[5] = wxFont::vftable;
  param_1_00[7] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x20);
  param_1_00[8] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[7] = wxColour::vftable;
  param_1_00[9] = *(undefined4 *)(param_1 + 0x24);
  *(undefined *)(param_1_00 + 10) = *(undefined *)(param_1 + 0x28);
  *(undefined *)((int)param_1_00 + 0x29) = *(undefined *)(param_1 + 0x29);
  *(undefined *)((int)param_1_00 + 0x2a) = *(undefined *)(param_1 + 0x2a);
  *(undefined *)((int)param_1_00 + 0x2b) = *(undefined *)(param_1 + 0x2b);
  *(undefined *)(param_1_00 + 0xb) = *(undefined *)(param_1 + 0x2c);
  param_1_00[0xc] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x34);
  param_1_00[0xd] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[0xc] = wxPen::vftable;
  param_1_00[0xe] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x3c);
  param_1_00[0xf] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[0xe] = wxPen::vftable;
  param_1_00[0x10] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x44);
  param_1_00[0x11] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[0x10] = wxBrush::vftable;
  param_1_00[0x12] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x4c);
  param_1_00[0x13] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[0x12] = wxColour::vftable;
  param_1_00[0x14] = *(undefined4 *)(param_1 + 0x50);
  *(undefined *)(param_1_00 + 0x15) = *(undefined *)(param_1 + 0x54);
  *(undefined *)((int)param_1_00 + 0x55) = *(undefined *)(param_1 + 0x55);
  *(undefined *)((int)param_1_00 + 0x56) = *(undefined *)(param_1 + 0x56);
  *(undefined *)((int)param_1_00 + 0x57) = *(undefined *)(param_1 + 0x57);
  *(undefined *)(param_1_00 + 0x16) = *(undefined *)(param_1 + 0x58);
  param_1_00[0x17] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x60);
  param_1_00[0x18] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[0x17] = wxBitmap::vftable;
  param_1_00[0x19] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x68);
  param_1_00[0x1a] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[0x19] = wxBitmap::vftable;
  param_1_00[0x1b] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x70);
  param_1_00[0x1c] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[0x1b] = wxBitmap::vftable;
  param_1_00[0x1d] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x78);
  param_1_00[0x1e] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[0x1d] = wxBitmap::vftable;
  param_1_00[0x1f] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x80);
  param_1_00[0x20] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[0x1f] = wxBitmap::vftable;
  param_1_00[0x21] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x88);
  param_1_00[0x22] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[0x21] = wxBitmap::vftable;
  param_1_00[0x23] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x90);
  param_1_00[0x24] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[0x23] = wxBitmap::vftable;
  param_1_00[0x25] = wxObject::vftable;
  iVar1 = *(int *)(param_1 + 0x98);
  param_1_00[0x26] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[0x25] = wxBitmap::vftable;
  param_1_00[0x27] = *(undefined4 *)(param_1 + 0x9c);
  param_1_00[0x28] = *(undefined4 *)(param_1 + 0xa0);
  param_1_00[0x29] = *(undefined4 *)(param_1 + 0xa4);
  return;
}



void __thiscall
FUN_00a0c3c0(int param_1_00,int param_1,undefined4 param_2,int *param_3,undefined4 param_4,
            uint param_5,int param_6,int *param_7)

{
  char cVar1;
  uint uVar2;
  undefined ***pppuVar3;
  int iVar4;
  int iVar5;
  bool bVar6;
  int iStack_34;
  undefined **local_30;
  int *local_2c;
  int iStack_28;
  int iStack_24;
  int iStack_20;
  int iStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00bed558;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_14;
  iVar4 = 0;
  local_2c = (int *)0x0;
  local_30 = wxBitmap::vftable;
  local_c = 0;
  switch(param_4) {
  case 0x65:
    if ((param_5 & 8) == 0) {
      pppuVar3 = (undefined ***)(param_1_00 + 0x5c);
LAB_00a0c473:
      bVar6 = &local_30 == pppuVar3;
    }
    else {
      pppuVar3 = (undefined ***)(param_1_00 + 100);
      bVar6 = &local_30 == pppuVar3;
    }
    break;
  default:
    goto switchD_00a0c40d_caseD_66;
  case 0x6a:
    if ((param_5 & 8) == 0) {
      pppuVar3 = (undefined ***)(param_1_00 + 0x8c);
      goto LAB_00a0c473;
    }
    pppuVar3 = (undefined ***)(param_1_00 + 0x94);
    bVar6 = &local_30 == pppuVar3;
    break;
  case 0x6b:
    if ((param_5 & 8) == 0) {
      pppuVar3 = (undefined ***)(param_1_00 + 0x6c);
      goto LAB_00a0c473;
    }
    pppuVar3 = (undefined ***)(param_1_00 + 0x74);
    bVar6 = &local_30 == pppuVar3;
    break;
  case 0x6c:
    if ((param_5 & 8) == 0) {
      pppuVar3 = (undefined ***)(param_1_00 + 0x7c);
      goto LAB_00a0c473;
    }
    pppuVar3 = (undefined ***)(param_1_00 + 0x84);
    bVar6 = &local_30 == pppuVar3;
  }
  if (((!bVar6) && (FUN_0083ea60(pppuVar3), local_2c != (int *)0x0)) &&
     (cVar1 = (**(code **)(*local_2c + 4))(), cVar1 != '\0')) {
    iStack_28 = *param_3;
    iStack_24 = param_3[1];
    iStack_1c = param_3[3];
    if (param_6 == 0x10) {
      iVar5 = *param_3;
      if (local_2c != (int *)0x0) {
        iVar4 = local_2c[3];
      }
      iVar4 = (iStack_1c + param_3[1]) / 2 - iVar4 / 2;
      if (local_2c == (int *)0x0) {
        iStack_20 = 0;
        iStack_34 = 0;
      }
      else {
        iStack_20 = local_2c[2];
        iStack_34 = local_2c[3];
      }
    }
    else {
      if (local_2c == (int *)0x0) {
        iStack_20 = 0;
        iStack_34 = 0;
      }
      else {
        iStack_34 = local_2c[3];
        iStack_20 = local_2c[2];
      }
      iVar4 = (param_3[3] + param_3[1]) / 2 - iStack_34 / 2;
      iVar5 = (param_3[2] - iStack_20) + *param_3;
    }
    if (param_5 == 4) {
      iVar5 = iVar5 + 1;
      iVar4 = iVar4 + 1;
    }
    (**(code **)(**(int **)(param_1 + 8) + 0x164))(&local_30,iVar5,iVar4,1);
    *param_7 = iVar5;
    param_7[1] = iVar4;
    param_7[2] = iStack_20;
    param_7[3] = iStack_34;
  }
switchD_00a0c40d_caseD_66:
  local_c = 0xffffffff;
  FUN_008f7630(uVar2);
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_00a0c5d0(int param_1_00,int param_1)

{
  if (param_1_00 + 4 != param_1) {
    FUN_0083ea60();
    return;
  }
  return;
}



void __thiscall FUN_00a0c5f0(int param_1_00,int param_1)

{
  if (param_1_00 + 0xc != param_1) {
    FUN_0083ea60();
    return;
  }
  return;
}



void __thiscall FUN_00a0c610(int param_1_00,int param_1)

{
  if (param_1_00 + 0x14 != param_1) {
    FUN_0083ea60();
    return;
  }
  return;
}



void __thiscall FUN_00a0c630(int param_1_00,int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed5a0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  iVar4 = param_1_00 + 0x1c;
  if (iVar4 != param_1) {
    FUN_0083ea60(param_1);
  }
  *(undefined4 *)(param_1_00 + 0x24) = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 0x28) = *(undefined *)(param_1 + 0xc);
  *(undefined *)(param_1_00 + 0x29) = *(undefined *)(param_1 + 0xd);
  *(undefined *)(param_1_00 + 0x2a) = *(undefined *)(param_1 + 0xe);
  *(undefined *)(param_1_00 + 0x2b) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x2c) = *(undefined *)(param_1 + 0x10);
  uVar2 = FUN_00920050(local_20,0x4b);
  local_4 = 0;
  iVar3 = FUN_009566f0(uVar2,1,100);
  local_4._0_1_ = 1;
  if (param_1_00 + 0x38 != iVar3) {
    FUN_0083ea60(iVar3);
  }
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0083e850(uVar1);
  local_4 = 0xffffffff;
  local_20[0] = wxObject::vftable;
  FUN_0083e850();
  iVar3 = FUN_009566f0(iVar4,1,100);
  local_4 = 2;
  if (param_1_00 + 0x30 != iVar3) {
    FUN_0083ea60(iVar3);
  }
  local_4 = 0xffffffff;
  FUN_0083e850();
  iVar4 = FUN_0095d7e0(iVar4,100);
  local_4 = 3;
  if (param_1_00 + 0x40 != iVar4) {
    FUN_0083ea60(iVar4);
  }
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a0c770(int param_1_00,int param_1)

{
  if (param_1_00 + 0x48 != param_1) {
    FUN_0083ea60(param_1);
  }
  *(undefined4 *)(param_1_00 + 0x50) = *(undefined4 *)(param_1 + 8);
  *(undefined *)(param_1_00 + 0x54) = *(undefined *)(param_1 + 0xc);
  *(undefined *)(param_1_00 + 0x55) = *(undefined *)(param_1 + 0xd);
  *(undefined *)(param_1_00 + 0x56) = *(undefined *)(param_1 + 0xe);
  *(undefined *)(param_1_00 + 0x57) = *(undefined *)(param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x58) = *(undefined *)(param_1 + 0x10);
  return;
}



void __thiscall FUN_00a0c7c0(int param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = *(uint *)(param_1_00 + 0x18);
  uVar2 = 0;
  if (uVar1 != 0) {
    while( true ) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x18) <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      if (**(int **)(*(int *)(param_1_00 + 0x1c) + uVar2 * 4) == param_1) break;
      uVar2 = uVar2 + 1;
      if (uVar1 <= uVar2) {
        return;
      }
    }
    FUN_00a0c050(uVar2,1);
  }
  return;
}



undefined4 __thiscall
FUN_00a0c830(int param_1_00,undefined4 param_1,uint param_2,undefined4 *param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  char cVar3;
  int iVar4;
  uint uVar5;
  
  uVar2 = param_2;
  cVar3 = FUN_008f7580(param_1,param_2);
  if (cVar3 == '\0') {
    return 0;
  }
  param_2 = 0;
  cVar3 = FUN_00a0adb0(param_1,uVar2,&param_2);
  if (((cVar3 != '\0') && ((*(byte *)(param_2 + 4) & 8) == 0)) &&
     (iVar4 = FUN_00a0a410(param_2,0), iVar4 != -1)) {
    return 0;
  }
  param_2 = *(uint *)(param_1_00 + 0xc);
  uVar5 = *(uint *)(param_1_00 + 0x3c);
  if (uVar5 < param_2) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0xc) <= uVar5)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      puVar1 = *(undefined4 **)(*(int *)(param_1_00 + 0x10) + uVar5 * 4);
      cVar3 = FUN_008f7580(param_1,uVar2);
      if (cVar3 != '\0') {
        if (param_3 != (undefined4 *)0x0) {
          *param_3 = *puVar1;
        }
        return 1;
      }
      uVar5 = uVar5 + 1;
    } while (uVar5 < param_2);
  }
  return 0;
}



undefined4 __thiscall FUN_00a0c940(int *param_1_00,uint param_1,int *param_2)

{
  int *piVar1;
  int *piVar2;
  char cVar3;
  undefined4 *puVar4;
  int iVar5;
  
  if ((uint)param_1_00[0xc5] <= param_1) {
    return 0;
  }
  puVar4 = (undefined4 *)FUN_00a0aa30(param_1);
  piVar1 = param_2;
  if (puVar4 + 10 != param_2) {
    FUN_0083ea60(param_2);
  }
  (**(code **)(*param_1_00 + 0x3c8))();
  cVar3 = FUN_00a0b890(*puVar4,&param_2,&param_1);
  piVar2 = param_2;
  if (cVar3 != '\0') {
    iVar5 = FUN_00a0aa30(param_1);
    if ((int *)(iVar5 + 0x28) != piVar1) {
      FUN_0083ea60(piVar1);
    }
    (**(code **)(*piVar2 + 0x15c))(1,0);
    (**(code **)(*piVar2 + 0x160))();
  }
  return 1;
}



undefined4 __thiscall FUN_00a0c9f0(int param_1_00,int param_1)

{
  void *pvVar1;
  uint uVar2;
  undefined **local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed5d0;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  FUN_009372d0(param_1);
  pvVar1 = *(void **)(param_1 + 4);
  if (pvVar1 != (void *)0x0) {
    *(int *)((int)pvVar1 + 4) = *(int *)((int)pvVar1 + 4) + 1;
  }
  local_14 = wxFont::vftable;
  if (pvVar1 != (void *)0x0) {
    *(int *)((int)pvVar1 + 4) = *(int *)((int)pvVar1 + 4) + 1;
  }
  local_4 = 1;
  local_10 = pvVar1;
  FUN_009222f0(0x5c);
  if ((undefined ***)(param_1_00 + 0x36c) != &local_14) {
    FUN_0083ea60(&local_14);
  }
  (**(code **)(**(int **)(param_1_00 + 0x30c) + 0x10))(&local_14,uVar2);
  if ((undefined *)(param_1_00 + 0x364) != &stack0xffffffe0) {
    FUN_0083ea60(&stack0xffffffe0);
  }
  (**(code **)(**(int **)(param_1_00 + 0x30c) + 0x14))(&stack0xffffffe0);
  (**(code **)(**(int **)(param_1_00 + 0x30c) + 0x18))(&stack0xffffffdc);
  local_10 = (void *)((uint)local_10 & 0xffffff00);
  FUN_00921450();
  local_10 = (void *)0xffffffff;
  FUN_00921450();
  ExceptionList = pvVar1;
  return 1;
}



undefined FUN_00a0cb10(undefined4 param_1,undefined4 param_2)

{
  undefined uVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea178;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  uVar3 = FUN_009b7940(local_14,param_2);
  local_4 = 0;
  uVar1 = FUN_00a0c940(param_1,uVar3);
  local_4 = 0xffffffff;
  FUN_008f7630(uVar2);
  ExceptionList = local_c;
  return uVar1;
}



undefined4 * FUN_00a0cb90(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxChildFocusEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void FUN_00a0cc00(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00a0bfa0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_0086a880();
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a0cc60(int param_1_00,undefined4 param_1,uint param_2)

{
  int iVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  
  if (param_2 != 0) {
    pvVar2 = operator_new(0x2c);
    if (pvVar2 == (void *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = FUN_00a0c120(param_1);
    }
    iVar1 = *(int *)(param_1_00 + 4);
    if (iVar3 != 0) {
      FUN_0086a0a0(iVar3,iVar1 * 4 >> 2,param_2);
    }
    uVar5 = 1;
    if (1 < param_2) {
      iVar3 = iVar1 * 4;
      do {
        iVar3 = iVar3 + 4;
        pvVar2 = operator_new(0x2c);
        if (pvVar2 == (void *)0x0) {
          uVar4 = 0;
        }
        else {
          uVar4 = FUN_00a0c120(param_1);
        }
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar5 + iVar1))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 *)(iVar3 + *(int *)(param_1_00 + 8)) = uVar4;
        uVar5 = uVar5 + 1;
      } while (uVar5 < param_2);
    }
  }
  return;
}



undefined ** __fastcall FUN_00a0cd40(undefined **param_1)

{
  undefined ***pppuVar1;
  uint uVar2;
  undefined **ppuVar3;
  undefined **ppuVar4;
  undefined ***pppuVar5;
  undefined4 uVar6;
  undefined **ppuStack_68;
  undefined **local_60 [2];
  undefined **ppuStack_58;
  undefined uStack_54;
  byte bStack_53;
  byte bStack_52;
  byte bStack_51;
  undefined uStack_50;
  undefined **appuStack_4c [5];
  undefined **appuStack_38 [6];
  void *pvStack_20;
  undefined uStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  ppuStack_68 = (undefined **)&stack0xfffffffc;
  puStack_10 = &LAB_00bed741;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_14;
  *param_1 = (undefined *)wxAuiDefaultTabArt::vftable;
  param_1[2] = (undefined *)0x0;
  param_1[1] = (undefined *)wxFont::vftable;
  param_1[4] = (undefined *)0x0;
  param_1[3] = (undefined *)wxFont::vftable;
  param_1[6] = (undefined *)0x0;
  param_1[5] = (undefined *)wxFont::vftable;
  pppuVar1 = (undefined ***)(param_1 + 7);
  local_c._0_1_ = 3;
  local_c._1_3_ = 0;
  local_60[0] = param_1;
  FUN_00453f4b(uVar2);
  param_1[0xd] = (undefined *)0x0;
  param_1[0xc] = (undefined *)wxPen::vftable;
  param_1[0xf] = (undefined *)0x0;
  param_1[0xe] = (undefined *)wxPen::vftable;
  local_c._0_1_ = 6;
  FUN_0095d530();
  local_c._0_1_ = 7;
  FUN_00453f4b();
  param_1[0x18] = (undefined *)0x0;
  param_1[0x17] = (undefined *)wxBitmap::vftable;
  param_1[0x1a] = (undefined *)0x0;
  param_1[0x19] = (undefined *)wxBitmap::vftable;
  param_1[0x1c] = (undefined *)0x0;
  param_1[0x1b] = (undefined *)wxBitmap::vftable;
  param_1[0x1e] = (undefined *)0x0;
  param_1[0x1d] = (undefined *)wxBitmap::vftable;
  param_1[0x20] = (undefined *)0x0;
  param_1[0x1f] = (undefined *)wxBitmap::vftable;
  param_1[0x22] = (undefined *)0x0;
  param_1[0x21] = (undefined *)wxBitmap::vftable;
  param_1[0x24] = (undefined *)0x0;
  param_1[0x23] = (undefined *)wxBitmap::vftable;
  param_1[0x26] = (undefined *)0x0;
  param_1[0x25] = (undefined *)wxBitmap::vftable;
  local_c = CONCAT31(local_c._1_3_,0x10);
  ppuVar3 = (undefined **)(**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
  if (param_1 + 1 != ppuVar3) {
    FUN_0083ea60(ppuVar3);
  }
  ppuVar4 = (undefined **)(**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
  ppuVar3 = param_1 + 3;
  if (ppuVar3 != ppuVar4) {
    FUN_0083ea60(ppuVar4);
  }
  (**(code **)(*ppuVar3 + 100))(0x5c);
  if (param_1 + 5 != ppuVar3) {
    FUN_0083ea60(ppuVar3);
  }
  param_1[0x27] = (undefined *)0x64;
  param_1[0x28] = (undefined *)0x0;
  FUN_008ff080(local_60,0xf);
  uStack_18 = 0x11;
  if ((int)(((0x2fd - (uint)bStack_52) - (uint)bStack_51) - (uint)bStack_53) < 0x3c) {
    pppuVar5 = (undefined ***)FUN_00920050(appuStack_38,0x5c);
    uStack_18 = 0x12;
    if (local_60 != pppuVar5) {
      FUN_0083ea60(pppuVar5);
    }
    ppuStack_58 = pppuVar5[2];
    uStack_54 = *(undefined *)(pppuVar5 + 3);
    bStack_53 = *(byte *)((int)pppuVar5 + 0xd);
    bStack_52 = *(byte *)((int)pppuVar5 + 0xe);
    bStack_51 = *(byte *)((int)pppuVar5 + 0xf);
    uStack_50 = *(undefined *)(pppuVar5 + 4);
    uStack_18 = 0x11;
    appuStack_38[0] = wxObject::vftable;
    FUN_0083e850();
  }
  if ((undefined ***)(param_1 + 0x12) != local_60) {
    FUN_0083ea60(local_60);
  }
  param_1[0x14] = (undefined *)ppuStack_58;
  *(undefined *)(param_1 + 0x15) = uStack_54;
  *(byte *)((int)param_1 + 0x55) = bStack_53;
  *(byte *)((int)param_1 + 0x56) = bStack_52;
  *(byte *)((int)param_1 + 0x57) = bStack_51;
  *(undefined *)(param_1 + 0x16) = uStack_50;
  if (pppuVar1 != local_60) {
    FUN_0083ea60(local_60);
  }
  param_1[9] = (undefined *)ppuStack_58;
  *(byte *)((int)param_1 + 0x29) = bStack_53;
  *(undefined *)(param_1 + 10) = uStack_54;
  *(byte *)((int)param_1 + 0x2a) = bStack_52;
  *(undefined *)(param_1 + 0xb) = uStack_50;
  *(byte *)((int)param_1 + 0x2b) = bStack_51;
  FUN_00920050(appuStack_4c,0x4b);
  uStack_18 = 0x13;
  ppuVar3 = (undefined **)FUN_009566f0(appuStack_4c,1,100);
  uStack_18 = 0x14;
  if (param_1 + 0xe != ppuVar3) {
    FUN_0083ea60(ppuVar3);
  }
  uStack_18 = 0x13;
  ppuStack_68 = wxObject::vftable;
  FUN_0083e850();
  ppuVar3 = (undefined **)FUN_009566f0(pppuVar1,1,100);
  uStack_18 = 0x15;
  if (param_1 + 0xc != ppuVar3) {
    FUN_0083ea60(ppuVar3);
  }
  uStack_18 = 0x13;
  ppuStack_68 = wxObject::vftable;
  FUN_0083e850();
  ppuVar3 = (undefined **)FUN_0095d7e0(pppuVar1,100);
  uStack_18 = 0x16;
  if (param_1 + 0x10 != ppuVar3) {
    FUN_0083ea60(ppuVar3);
  }
  uStack_18 = 0x13;
  FUN_008f7630();
  uVar6 = FUN_008f7e50(0xb);
  ppuVar3 = (undefined **)FUN_00a242f0(&ppuStack_68,&DAT_00d9abc8,0x10,0x10,uVar6);
  uStack_18 = 0x17;
  if (param_1 + 0x17 != ppuVar3) {
    FUN_0083ea60(ppuVar3);
  }
  uStack_18 = 0x13;
  FUN_008f7630();
  uVar6 = FUN_004561e7(0x80,0x80,0x80,0xff);
  uStack_18 = 0x18;
  ppuVar3 = (undefined **)FUN_00a242f0(&ppuStack_68,&DAT_00d9abc8,0x10,0x10,uVar6);
  uStack_18 = 0x19;
  if (param_1 + 0x19 != ppuVar3) {
    FUN_0083ea60(ppuVar3);
  }
  uStack_18 = 0x18;
  FUN_008f7630();
  uStack_18 = 0x13;
  appuStack_38[0] = wxObject::vftable;
  FUN_0083e850();
  uVar6 = FUN_008f7e50(0xb);
  ppuVar3 = (undefined **)FUN_00a242f0(&ppuStack_68,&DAT_00d9abe8,0x10,0x10,uVar6);
  uStack_18 = 0x1a;
  if (param_1 + 0x1b != ppuVar3) {
    FUN_0083ea60(ppuVar3);
  }
  uStack_18 = 0x13;
  FUN_008f7630();
  uVar6 = FUN_004561e7(0x80,0x80,0x80,0xff);
  uStack_18 = 0x1b;
  ppuVar3 = (undefined **)FUN_00a242f0(&ppuStack_68,&DAT_00d9abe8,0x10,0x10,uVar6);
  uStack_18 = 0x1c;
  if (param_1 + 0x1d != ppuVar3) {
    FUN_0083ea60(ppuVar3);
  }
  uStack_18 = 0x1b;
  FUN_008f7630();
  uStack_18 = 0x13;
  appuStack_38[0] = wxObject::vftable;
  FUN_0083e850();
  uVar6 = FUN_008f7e50(0xb);
  ppuVar3 = (undefined **)FUN_00a242f0(&ppuStack_68,&DAT_00d9ac08,0x10,0x10,uVar6);
  uStack_18 = 0x1d;
  if (param_1 + 0x1f != ppuVar3) {
    FUN_0083ea60(ppuVar3);
  }
  uStack_18 = 0x13;
  FUN_008f7630();
  uVar6 = FUN_004561e7(0x80,0x80,0x80,0xff);
  uStack_18 = 0x1e;
  ppuVar3 = (undefined **)FUN_00a242f0(&ppuStack_68,&DAT_00d9ac08,0x10,0x10,uVar6);
  uStack_18 = 0x1f;
  if (param_1 + 0x21 != ppuVar3) {
    FUN_0083ea60(ppuVar3);
  }
  uStack_18 = 0x1e;
  FUN_008f7630();
  uStack_18 = 0x13;
  appuStack_38[0] = wxObject::vftable;
  FUN_0083e850();
  uVar6 = FUN_008f7e50(0xb);
  ppuVar3 = (undefined **)FUN_00a242f0(&ppuStack_68,&DAT_00d9ac28,0x10,0x10,uVar6);
  uStack_18 = 0x20;
  if (param_1 + 0x23 != ppuVar3) {
    FUN_0083ea60(ppuVar3);
  }
  uStack_18 = 0x13;
  FUN_008f7630();
  uVar6 = FUN_004561e7(0x80,0x80,0x80,0xff);
  uStack_18 = 0x21;
  ppuVar3 = (undefined **)FUN_00a242f0(&ppuStack_68,&DAT_00d9ac28,0x10,0x10,uVar6);
  uStack_18 = 0x22;
  if (param_1 + 0x25 != ppuVar3) {
    FUN_0083ea60(ppuVar3);
  }
  uStack_18 = 0x21;
  FUN_008f7630();
  uStack_18 = 0x13;
  appuStack_38[0] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x29] = (undefined *)0x0;
  uStack_18 = 0x11;
  appuStack_4c[0] = wxObject::vftable;
  FUN_0083e850();
  uStack_18 = 0x10;
  local_60[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_20;
  return param_1;
}



undefined4 __fastcall FUN_00a0d370(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  
  pvVar1 = operator_new(0xa8);
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00a0c1b0(param_1);
    return uVar2;
  }
  return 0;
}



void FUN_00a0d3a0(undefined4 param_1,undefined4 param_2,undefined ***param_3,undefined ***param_4)

{
  uint uVar1;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined **local_2c;
  undefined4 local_28;
  undefined **local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bed768;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  local_28 = 0;
  local_2c = wxBitmap::vftable;
  local_20 = 0;
  local_24 = wxBitmap::vftable;
  local_1c = 0;
  local_18 = 0;
  local_14 = 0;
  local_10 = 0;
  local_38 = param_1;
  local_4 = 0;
  if (&local_2c != param_3) {
    FUN_0083ea60(param_3);
  }
  if (&local_24 != param_4) {
    FUN_0083ea60(param_4);
  }
  local_30 = param_2;
  local_34 = 0;
  FUN_00a0cc60(&local_38,1);
  local_4 = 0xffffffff;
  FUN_00a0a030(uVar1);
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a0d460(int param_1_00,int param_1,undefined4 param_3)

{
  uint uVar1;
  uint *puVar2;
  uint uVar3;
  undefined4 *puVar4;
  int iVar5;
  char cVar6;
  undefined4 uVar7;
  int iVar8;
  int *piVar9;
  uint uVar10;
  int iVar11;
  uint unaff_ESI;
  uint uVar12;
  uint uStack_9c;
  int iStack_98;
  undefined auStack_94 [3];
  char cStack_91;
  uint uStack_90;
  int *piStack_8c;
  undefined **ppuStack_88;
  int iStack_84;
  int *piStack_80;
  int iStack_7c;
  undefined4 uStack_78;
  int iStack_6c;
  undefined **ppuStack_68;
  int iStack_64;
  undefined4 uStack_60;
  int *piStack_5c;
  int iStack_54;
  int *piStack_50;
  int iStack_4c;
  undefined4 uStack_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined **ppuStack_38;
  undefined4 uStack_34;
  undefined **ppuStack_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bed7be;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar10 = 0;
  if (((param_1 != 0) && (*(int *)(param_1 + 8) != 0)) &&
     (cVar6 = (**(code **)(**(int **)(param_1 + 8) + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffff50),
     cVar6 != '\0')) {
    FUN_0094bd80();
    uStack_4 = 0;
    uVar7 = (**(code **)(**(int **)(param_1 + 8) + 0x34))();
    (**(code **)(*piStack_80 + 0x30))(uVar7);
    iStack_64 = 0;
    ppuStack_68 = wxBitmap::vftable;
    uVar12 = *(uint *)(param_1_00 + 0x18);
    uVar3 = *(uint *)(param_1_00 + 0xc);
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    uStack_90 = uVar3;
    FUN_008f4cb0(*(undefined4 *)(param_1_00 + 0x34),*(undefined4 *)(param_1_00 + 0x38),0xffffffff);
    FUN_0094c840(&ppuStack_68);
    if ((piStack_80 == (int *)0x0) || (cVar6 = (**(code **)(*piStack_80 + 0x10))(), cVar6 == '\0'))
    {
      uStack_4 = uStack_4 & 0xffffff00;
      FUN_008f7630();
      uStack_4 = 0xffffffff;
      FUN_00457221();
    }
    else {
      uStack_9c = 0;
      iStack_98 = 0;
      if (uVar3 != 0) {
        do {
          iVar8 = FUN_009cde80(uVar10);
          cStack_91 = '\0';
          if (((*(uint *)(param_1_00 + 0x40) & 0x1000) != 0) ||
             (((*(uint *)(param_1_00 + 0x40) & 0x800) != 0 && (*(char *)(iVar8 + 0x40) != '\0')))) {
            cStack_91 = '\x01';
          }
          piStack_8c = (int *)0x0;
          (**(code **)(**(int **)(param_1_00 + 4) + 0x30))
                    (&piStack_50,&ppuStack_88,param_3,iVar8 + 4,iVar8 + 0x28,
                     *(undefined *)(iVar8 + 0x40),(cStack_91 != '\0') - 1U & 0x10,&piStack_8c);
          uVar1 = uVar10 + 1;
          piVar9 = piStack_50;
          if (uVar1 < uVar3) {
            piVar9 = piStack_8c;
          }
          uStack_9c = uStack_9c + (int)piVar9;
          if (*(uint *)(param_1_00 + 0x3c) <= uVar10) {
            if (uVar1 < uVar3) {
              iStack_98 = iStack_98 + (int)piStack_8c;
            }
            else {
              iStack_98 = iStack_98 + (int)piStack_50;
            }
          }
          uVar10 = uVar1;
        } while (uVar1 < uVar3);
      }
      if ((*(int *)(param_1_00 + 0x34) < (int)uStack_9c) || (*(int *)(param_1_00 + 0x3c) != 0)) {
        uVar10 = 0;
        if (uVar12 != 0) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x18) <= uVar10))
            {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            piVar9 = *(int **)(*(int *)(param_1_00 + 0x1c) + uVar10 * 4);
            iVar8 = *piVar9;
            if ((iVar8 == 0x6b) || (iVar8 == 0x6c)) {
              puVar2 = (uint *)(piVar9 + 1);
              *puVar2 = *puVar2 & 0xffffffef;
            }
            uVar10 = uVar10 + 1;
          } while (uVar10 < uVar12);
        }
      }
      else {
        uVar10 = 0;
        if (uVar12 != 0) {
          do {
            piVar9 = (int *)FUN_009cde80(uVar10);
            if ((*piVar9 == 0x6b) || (*piVar9 == 0x6c)) {
              piVar9[1] = piVar9[1] | 0x10;
            }
            uVar10 = uVar10 + 1;
          } while (uVar10 < uVar12);
        }
      }
      uVar10 = 0;
      if (uVar12 != 0) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x18) <= uVar10)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          piVar9 = *(int **)(*(int *)(param_1_00 + 0x1c) + uVar10 * 4);
          if (*piVar9 == 0x6b) {
            if (*(int *)(param_1_00 + 0x3c) == 0) {
              piVar9[1] = piVar9[1] | 8;
            }
            else {
              piVar9[1] = piVar9[1] & 0xfffffff7;
            }
          }
          if (*piVar9 == 0x6c) {
            if (iStack_98 < (int)(*(int *)(param_1_00 + 0x34) + uVar12 * -0x10)) {
              piVar9[1] = piVar9[1] | 8;
            }
            else {
              piVar9[1] = piVar9[1] & 0xfffffff7;
            }
          }
          uVar10 = uVar10 + 1;
        } while (uVar10 < uVar12);
      }
      piVar9 = (int *)(param_1_00 + 0x2c);
      piStack_50 = piVar9;
      (**(code **)(**(int **)(param_1_00 + 4) + 0x24))(&ppuStack_88,param_3,piVar9);
      iVar11 = *(int *)(param_1_00 + 0x34) + *piVar9;
      iVar8 = 0;
      iStack_98 = 0;
      uVar10 = 0;
      if (unaff_ESI != 0) {
        do {
          uVar12 = (unaff_ESI - uVar10) - 1;
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x18) <= uVar12)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          puVar4 = *(undefined4 **)(*(int *)(param_1_00 + 0x1c) + uVar12 * 4);
          if ((puVar4[2] == 0x20) && ((*(byte *)(puVar4 + 1) & 0x10) == 0)) {
            iStack_6c = *piVar9;
            uStack_60 = *(undefined4 *)(param_1_00 + 0x38);
            ppuStack_68 = (undefined **)0x1;
            iStack_64 = iVar11;
            (**(code **)(**(int **)(param_1_00 + 4) + 0x2c))
                      (auStack_94,uStack_4,&iStack_6c,*puVar4,puVar4[1],0x20,puVar4 + 7);
            iVar11 = iVar11 - puVar4[9];
            iStack_98 = iStack_98 + puVar4[9];
          }
          uVar10 = uVar10 + 1;
        } while (uVar10 < unaff_ESI);
      }
      iVar11 = 0;
      uVar10 = 0;
      if (unaff_ESI != 0) {
        iVar8 = 0;
        do {
          uVar12 = (unaff_ESI - uVar10) - 1;
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x18) <= uVar12)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          puVar4 = *(undefined4 **)(*(int *)(param_1_00 + 0x1c) + uVar12 * 4);
          if ((puVar4[2] == 0x10) && ((*(byte *)(puVar4 + 1) & 0x10) == 0)) {
            uStack_60 = *(undefined4 *)(param_1_00 + 0x38);
            ppuStack_68 = (undefined **)0x1;
            iStack_64 = 1000;
            iStack_6c = iVar11;
            (**(code **)(**(int **)(param_1_00 + 4) + 0x2c))
                      (auStack_94,uStack_4,&iStack_6c,*puVar4,puVar4[1],0x10,puVar4 + 7);
            iVar11 = iVar11 + puVar4[9];
            iVar8 = iVar8 + puVar4[9];
          }
          uVar10 = uVar10 + 1;
        } while (uVar10 < unaff_ESI);
      }
      if (iVar8 == 0) {
        iVar8 = (**(code **)(**(int **)(param_1_00 + 4) + 0x38))();
      }
      uVar10 = uStack_9c;
      if (uStack_9c < *(uint *)(param_1_00 + 0x24)) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x24) <= uVar10)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          uVar12 = uVar10 + 1;
          *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0x28) + uVar10 * 4) + 4) = 0x10;
          uVar10 = uVar12;
        } while (uVar12 < *(uint *)(param_1_00 + 0x24));
      }
      uVar10 = *(uint *)(param_1_00 + 0x24);
      while (uVar10 < uStack_9c) {
        uStack_34 = 0;
        ppuStack_38 = wxBitmap::vftable;
        uStack_2c = 0;
        ppuStack_30 = wxBitmap::vftable;
        uStack_28 = 0;
        uStack_24 = 0;
        uStack_20 = 0;
        uStack_1c = 0;
        uStack_10 = 2;
        uStack_44 = 0x65;
        uStack_3c = 1;
        uStack_40 = 0x10;
        FUN_00a0cc60(&uStack_44,1);
        uStack_10 = 3;
        FUN_008f7630();
        uStack_10 = 1;
        FUN_008f7630();
        uVar10 = *(uint *)(param_1_00 + 0x24);
      }
      uVar10 = 0;
      if (*(int *)(param_1_00 + 0x3c) != 0) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x24) <= uVar10)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          iVar11 = uVar10 * 4;
          uVar10 = uVar10 + 1;
          *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0x28) + iVar11) + 4) = 0x10;
        } while (uVar10 < *(uint *)(param_1_00 + 0x3c));
      }
      iStack_84 = *piStack_5c;
      uVar10 = *(uint *)(param_1_00 + 0x3c);
      iStack_7c = piStack_5c[2];
      iVar11 = 0;
      iStack_54 = 0;
      piStack_50 = (int *)0x0;
      iStack_4c = 0;
      uStack_48 = 0;
      ppuStack_88 = (undefined **)0x0;
      piStack_80 = (int *)0x0;
      uStack_78 = *(undefined4 *)(param_1_00 + 0x38);
      uVar12 = 999;
      for (; uVar10 < uStack_9c; uVar10 = uVar10 + 1) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0xc) <= uVar10)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar5 = *(int *)(*(int *)(param_1_00 + 0x10) + uVar10 * 4);
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x24) <= uVar10)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        puVar4 = *(undefined4 **)(*(int *)(param_1_00 + 0x28) + uVar10 * 4);
        if (((*(uint *)(param_1_00 + 0x40) & 0x1000) == 0) &&
           (((*(uint *)(param_1_00 + 0x40) & 0x800) == 0 || (*(char *)(iVar5 + 0x40) == '\0')))) {
          puVar4[1] = 0x10;
        }
        else if (puVar4[1] == 0x10) {
          *puVar4 = 0x65;
          puVar4[1] = 0;
          puVar4[2] = 1;
        }
        iStack_7c = ((*(int *)(param_1_00 + 0x34) - iVar8) - iStack_98) + -2;
        iStack_84 = iVar8;
        if (iStack_7c < 1) break;
        (**(code **)(**(int **)(param_1_00 + 4) + 0x28))
                  (auStack_94,uStack_4,iVar5,&iStack_84,puVar4[1],iVar5 + 0x30,puVar4 + 7,
                   &ppuStack_88);
        if (*(char *)(iVar5 + 0x40) != '\0') {
          iStack_54 = iStack_84;
          piStack_50 = piStack_80;
          iStack_4c = iStack_7c;
          uStack_48 = uStack_78;
          iVar11 = iVar8;
          uVar12 = uVar10;
        }
        iVar8 = iVar8 + (int)ppuStack_88;
      }
      uVar10 = uVar10 + 1;
      if (uVar10 < *(uint *)(param_1_00 + 0x24)) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x24) <= uVar10)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          iVar8 = uVar10 * 4;
          uVar10 = uVar10 + 1;
          *(undefined4 *)(*(int *)(*(int *)(param_1_00 + 0x28) + iVar8) + 4) = 0x10;
        } while (uVar10 < *(uint *)(param_1_00 + 0x24));
      }
      if ((*(uint *)(param_1_00 + 0x3c) <= uVar12) && (uVar12 < *(uint *)(param_1_00 + 0xc))) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0xc) <= uVar12)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar8 = *(int *)(*(int *)(param_1_00 + 0x10) + uVar12 * 4);
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x24) <= uVar12)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar5 = *(int *)(*(int *)(param_1_00 + 0x28) + uVar12 * 4);
        iStack_84 = iVar11;
        (**(code **)(**(int **)(param_1_00 + 4) + 0x28))
                  (auStack_94,uStack_4,iVar8,&iStack_54,*(undefined4 *)(iVar5 + 4),iVar8 + 0x30,
                   iVar5 + 0x1c,&ppuStack_88);
      }
      (**(code **)(**(int **)(puStack_8 + 8) + 0x170))
                (*piStack_5c,*(undefined4 *)(param_1_00 + 0x30),*(undefined4 *)(param_1_00 + 0x34),
                 *(undefined4 *)(param_1_00 + 0x38),auStack_94,0,0,5,0,0xffffffff,0xffffffff);
      uStack_4 = uStack_4 & 0xffffff00;
      FUN_008f7630();
      ppuStack_88 = wxDC::vftable;
      uStack_4 = 4;
      if (piStack_80 != (int *)0x0) {
        (**(code **)(*piStack_80 + 4))(1);
      }
      uStack_4 = 0xffffffff;
      ppuStack_88 = wxObject::vftable;
      FUN_0083e850();
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a0dd80(int param_1,int param_2)

{
  int *piVar1;
  undefined4 uVar2;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bed7e8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(*(int *)(param_1 + 0x1d8) + 0x5c))(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  piVar1 = *(int **)(param_2 + 8);
  if (piVar1 != (int *)0x0) {
    uVar2 = FUN_008f7ad0(1);
    uStack_4 = 0;
    (**(code **)(*piVar1 + 400))(uVar2);
    puStack_8 = (undefined *)0xffffffff;
    FUN_008f7630();
    ExceptionList = pvStack_10;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\aui\\auibook.cpp",0xfc2,"wxAuiNotebook::OnTabCancelDrag","src_tabs",
                 L"no source object?");
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a0de50(int param_1_00,uint param_1)

{
  *(uint *)(param_1_00 + 0x40) = param_1;
  FUN_00a0c7c0(0x6b);
  FUN_00a0c7c0(0x6c);
  FUN_00a0c7c0(0x6a);
  FUN_00a0c7c0(0x65);
  if ((param_1 & 0x100) != 0) {
    FUN_00a0d3a0(0x6b,0x10,&PTR_vftable_03238cc8,&PTR_vftable_03238cc8);
    FUN_00a0d3a0(0x6c,0x20,&PTR_vftable_03238cc8,&PTR_vftable_03238cc8);
  }
  if ((param_1 & 0x200) != 0) {
    FUN_00a0d3a0(0x6a,0x20,&PTR_vftable_03238cc8,&PTR_vftable_03238cc8);
  }
  if ((param_1 & 0x400) != 0) {
    FUN_00a0d3a0(0x65,0x20,&PTR_vftable_03238cc8,&PTR_vftable_03238cc8);
  }
  if (*(int **)(param_1_00 + 4) != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00a0defe. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(param_1_00 + 4) + 8))();
    return;
  }
  return;
}



undefined4 * __thiscall FUN_00a0e000(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_0092bd60(param_1,param_2);
  param_1_00[0x18] = 0xffffffff;
  param_1_00[0x19] = 0xffffffff;
  *(undefined *)(param_1_00 + 0x17) = 1;
  *param_1_00 = wxAuiNotebookEvent::vftable;
  param_1_00[0x1a] = 0;
  return param_1_00;
}



void __fastcall FUN_00a0e040(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bccd9b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008f7630(DAT_0323f878 ^ (uint)&stack0xffffffec);
  _free(*(void **)(param_1 + 0x20));
  if (7 < *(uint *)(param_1 + 0x1c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 8));
  }
  *(undefined4 *)(param_1 + 0x1c) = 7;
  *(undefined4 *)(param_1 + 0x18) = 0;
  *(undefined2 *)(param_1 + 8) = 0;
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_00a0e0c0(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x6c);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0092bd60(DAT_032bd44c,0);
    puVar1[0x18] = 0xffffffff;
    puVar1[0x19] = 0xffffffff;
    *(undefined *)(puVar1 + 0x17) = 1;
    *puVar1 = wxAuiNotebookEvent::vftable;
    puVar1[0x1a] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __thiscall FUN_00a0e150(int *param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int local_80;
  undefined **local_7c [2];
  int *local_74;
  undefined local_20;
  int local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed818;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  ExceptionList = &local_c;
  FUN_0091f8e0(DAT_0323f878 ^ (uint)&stack0xffffff70);
  param_1_00[0x76] = DAT_03238d0c;
  param_1_00[0x77] = DAT_03238d10;
  *(undefined *)(param_1_00 + 0x79) = 0;
  param_1_00[0x78] = 0;
  param_1_00[0x7b] = 0;
  cVar1 = FUN_00a0c830(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),&local_80);
  if (cVar1 == '\0') goto LAB_00a0e29a;
  iVar2 = FUN_00a0a9c0(local_80);
  iVar3 = FUN_00a0a940();
  if (iVar2 == iVar3) {
    cVar1 = FUN_0083e950(&PTR_u_wxAuiNotebook_0323f114);
    if (cVar1 != '\0') goto LAB_00a0e20a;
  }
  else {
LAB_00a0e20a:
    FUN_0092bd60(DAT_032ea428,param_1_00[0x10]);
    local_20 = 1;
    local_18 = 0xffffffff;
    local_7c[0] = wxAuiNotebookEvent::vftable;
    local_14 = 0;
    local_4 = 0;
    local_1c = iVar2;
    local_18 = FUN_00a0a940();
    local_74 = param_1_00;
    (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(local_7c);
    local_4 = 0xffffffff;
    FUN_00a1f4e0();
  }
  param_1_00[0x76] = *(int *)(param_1 + 0x2c);
  param_1_00[0x77] = *(int *)(param_1 + 0x30);
  param_1_00[0x78] = local_80;
LAB_00a0e29a:
  iVar2 = param_1_00[0x7a];
  if (iVar2 != 0) {
    param_1_00[0x7b] = iVar2;
    *(undefined4 *)(iVar2 + 4) = 4;
    (**(code **)(*param_1_00 + 0x15c))(1,0);
    (**(code **)(*param_1_00 + 0x160))();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00a0e300(int param_1)

{
  uint uVar1;
  undefined **local_7c [2];
  int local_74;
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beda78;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_7c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff7c;
  ExceptionList = &local_c;
  if (*(char *)(param_1 + 0x1e4) != '\0') {
    *(undefined *)(param_1 + 0x1e4) = 0;
    FUN_0092bd60(DAT_032ea43c,*(undefined4 *)(param_1 + 0x40));
    local_20 = 1;
    local_1c = 0xffffffff;
    local_18 = 0xffffffff;
    local_7c[0] = wxAuiNotebookEvent::vftable;
    local_14 = 0;
    local_4 = 0;
    local_1c = FUN_00a0a9c0(*(undefined4 *)(param_1 + 0x1e0));
    local_74 = param_1;
    local_18 = local_1c;
    (**(code **)(**(int **)(param_1 + 0x70) + 0x18))(local_7c,uVar1);
    local_4 = 0xffffffff;
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
    local_7c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0e420(int *param_1_00,int param_1)

{
  char cVar1;
  int *piVar2;
  int local_ec;
  undefined **local_e8 [2];
  int *local_e0;
  uint uStack_bc;
  undefined4 uStack_ac;
  uint uStack_a8;
  void *pvStack_a4;
  undefined local_8c;
  undefined4 local_88;
  undefined4 local_84;
  undefined4 local_80;
  undefined auStack_7c [8];
  int *piStack_74;
  undefined4 uStack_30;
  undefined4 uStack_1c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed863;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_ec;
  ExceptionList = &local_c;
  piVar2 = (int *)FUN_009116e0(DAT_0323f878 ^ (uint)&stack0xffffff08);
  if (piVar2 == param_1_00) {
    FUN_0091fac0();
  }
  if (*(char *)(param_1_00 + 0x79) != '\0') {
    *(undefined *)(param_1_00 + 0x79) = 0;
    FUN_0092bd60(DAT_032ea438,param_1_00[0x10]);
    local_8c = 1;
    local_88 = 0xffffffff;
    local_84 = 0xffffffff;
    local_e8[0] = wxAuiNotebookEvent::vftable;
    local_80 = 0;
    local_4 = 0;
    local_88 = FUN_00a0a9c0(param_1_00[0x78]);
    local_e0 = param_1_00;
    local_84 = local_88;
    (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(local_e8);
    local_4 = 0xffffffff;
    _free(pvStack_a4);
    if (7 < uStack_a8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_bc);
    }
    uStack_a8 = 7;
    uStack_ac = 0;
    uStack_bc = uStack_bc & 0xffff0000;
    local_e8[0] = wxObject::vftable;
    FUN_0083e850();
    goto LAB_00a0e654;
  }
  if (param_1_00[0x7b] != 0) {
    local_ec = 0;
    cVar1 = FUN_00a0adb0(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),&local_ec);
    if ((cVar1 == '\0') || ((*(byte *)(local_ec + 4) & 8) != 0)) goto LAB_00a0e654;
    if (local_ec != param_1_00[0x7b]) {
      param_1_00[0x7b] = 0;
      goto LAB_00a0e654;
    }
    (**(code **)(*param_1_00 + 0x15c))(1,0);
    (**(code **)(*param_1_00 + 0x160))();
    if ((*(byte *)(param_1_00[0x7b] + 4) & 8) == 0) {
      FUN_00a0e000(DAT_032ea430,param_1_00[0x10]);
      local_4 = 1;
      uStack_1c = FUN_00a0a9c0(param_1_00[0x78]);
      uStack_30 = *(undefined4 *)param_1_00[0x7b];
      piStack_74 = param_1_00;
      (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(auStack_7c);
      local_4 = 0xffffffff;
      FUN_00a1f4e0();
    }
    param_1_00[0x7b] = 0;
  }
  param_1_00[0x76] = DAT_03238d0c;
  param_1_00[0x77] = DAT_03238d10;
  *(undefined *)(param_1_00 + 0x79) = 0;
  param_1_00[0x78] = 0;
LAB_00a0e654:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0e680(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 local_80;
  undefined **local_7c [2];
  int local_74;
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed8a8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  local_80 = 0;
  cVar1 = FUN_00a0c830(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),&local_80);
  if (cVar1 != '\0') {
    FUN_0092bd60(DAT_032ea450,*(undefined4 *)(param_1_00 + 0x40));
    local_20 = 1;
    local_1c = 0xffffffff;
    local_18 = 0xffffffff;
    local_7c[0] = wxAuiNotebookEvent::vftable;
    local_14 = 0;
    local_4 = 0;
    local_74 = param_1_00;
    local_1c = FUN_00a0a9c0(local_80);
    (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_7c,uVar2);
    local_4 = 0xffffffff;
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
    local_7c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0e7c0(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 local_80;
  undefined **local_7c [2];
  int local_74;
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed8a8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  local_80 = 0;
  cVar1 = FUN_00a0c830(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),&local_80);
  if (cVar1 != '\0') {
    FUN_0092bd60(DAT_032ea454,*(undefined4 *)(param_1_00 + 0x40));
    local_20 = 1;
    local_1c = 0xffffffff;
    local_18 = 0xffffffff;
    local_7c[0] = wxAuiNotebookEvent::vftable;
    local_14 = 0;
    local_4 = 0;
    local_74 = param_1_00;
    local_1c = FUN_00a0a9c0(local_80);
    (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_7c,uVar2);
    local_4 = 0xffffffff;
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
    local_7c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0e900(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 local_80;
  undefined **local_7c [2];
  int local_74;
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed8a8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  local_80 = 0;
  cVar1 = FUN_00a0c830(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),&local_80);
  if (cVar1 != '\0') {
    FUN_0092bd60(DAT_032ea458,*(undefined4 *)(param_1_00 + 0x40));
    local_20 = 1;
    local_1c = 0xffffffff;
    local_18 = 0xffffffff;
    local_7c[0] = wxAuiNotebookEvent::vftable;
    local_14 = 0;
    local_4 = 0;
    local_74 = param_1_00;
    local_1c = FUN_00a0a9c0(local_80);
    (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_7c,uVar2);
    local_4 = 0xffffffff;
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
    local_7c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0ea40(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 local_80;
  undefined **local_7c [2];
  int local_74;
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed8a8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_80;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  local_80 = 0;
  cVar1 = FUN_00a0c830(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),&local_80);
  if (cVar1 != '\0') {
    FUN_0092bd60(DAT_032ea45c,*(undefined4 *)(param_1_00 + 0x40));
    local_20 = 1;
    local_1c = 0xffffffff;
    local_18 = 0xffffffff;
    local_7c[0] = wxAuiNotebookEvent::vftable;
    local_14 = 0;
    local_4 = 0;
    local_74 = param_1_00;
    local_1c = FUN_00a0a9c0(local_80);
    (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_7c,uVar2);
    local_4 = 0xffffffff;
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
    local_7c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0eb80(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined local_80 [4];
  undefined **local_7c [2];
  int local_74;
  undefined local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed8a8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_80;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  cVar1 = FUN_00a0c830(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),local_80);
  if (cVar1 == '\0') {
    cVar1 = FUN_00a0adb0(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),local_80);
    if (cVar1 == '\0') {
      FUN_0092bd60(DAT_032ea448,*(undefined4 *)(param_1_00 + 0x40));
      local_20 = 1;
      local_1c = 0xffffffff;
      local_18 = 0xffffffff;
      local_7c[0] = wxAuiNotebookEvent::vftable;
      local_14 = 0;
      local_4 = 0;
      local_74 = param_1_00;
      (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_7c,uVar2);
      local_4 = 0xffffffff;
      FUN_00a1f4e0();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0ec80(int *param_1_00,int param_1)

{
  code *pcVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int local_f8;
  int local_f4;
  int local_f0;
  undefined local_e8 [8];
  int *local_e0;
  undefined4 local_88;
  undefined4 local_84;
  undefined local_7c [8];
  int *local_74;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed8f3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_f8;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xfffffef8;
  ExceptionList = &local_c;
  local_f4 = *(int *)(param_1 + 0x30);
  local_f0 = *(int *)(param_1 + 0x2c);
  cVar2 = FUN_00a0adb0(local_f0,local_f4,&local_f8);
  if ((cVar2 == '\0') || ((*(byte *)(local_f8 + 4) & 8) != 0)) {
    if (param_1_00[0x7a] != 0) {
      *(undefined4 *)(param_1_00[0x7a] + 4) = 0;
      pcVar1 = *(code **)(*param_1_00 + 0x15c);
      param_1_00[0x7a] = 0;
      (*pcVar1)(1,0,uVar3);
      (**(code **)(*param_1_00 + 0x160))();
    }
  }
  else {
    iVar4 = param_1_00[0x7a];
    if ((iVar4 != 0) && (local_f8 != iVar4)) {
      *(undefined4 *)(iVar4 + 4) = 0;
      pcVar1 = *(code **)(*param_1_00 + 0x15c);
      param_1_00[0x7a] = 0;
      (*pcVar1)(1,0);
      (**(code **)(*param_1_00 + 0x160))();
    }
    if (*(int *)(local_f8 + 4) != 2) {
      *(undefined4 *)(local_f8 + 4) = 2;
      (**(code **)(*param_1_00 + 0x15c))(1,0);
      (**(code **)(*param_1_00 + 0x160))();
      param_1_00[0x7a] = local_f8;
      goto LAB_00a0eec9;
    }
  }
  if (((*(byte *)(param_1 + 0x29) & 1) != 0) &&
     ((param_1_00[0x76] != DAT_03238d0c || (param_1_00[0x77] != DAT_03238d10)))) {
    if (*(char *)(param_1_00 + 0x79) == '\0') {
      iVar4 = FUN_008fedb0(8,0);
      iVar5 = FUN_008fedb0(9,0);
      uVar3 = local_f0 - param_1_00[0x76] >> 0x1f;
      if (((int)((local_f0 - param_1_00[0x76] ^ uVar3) - uVar3) <= iVar4) &&
         (uVar3 = local_f4 - param_1_00[0x77] >> 0x1f,
         (int)((local_f4 - param_1_00[0x77] ^ uVar3) - uVar3) <= iVar5)) goto LAB_00a0eec9;
      FUN_00a0e000(DAT_032ea434,param_1_00[0x10]);
      local_4 = 1;
      local_1c = FUN_00a0a9c0(param_1_00[0x78]);
      local_74 = param_1_00;
      local_18 = local_1c;
      (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(local_7c);
      *(undefined *)(param_1_00 + 0x79) = 1;
    }
    else {
      FUN_00a0e000(DAT_032ea440,param_1_00[0x10]);
      local_4 = 0;
      local_88 = FUN_00a0a9c0(param_1_00[0x78]);
      local_e0 = param_1_00;
      local_84 = local_88;
      (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(local_e8);
    }
    local_4 = 0xffffffff;
    FUN_00a1f4e0();
  }
LAB_00a0eec9:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0ef00(int *param_1_00,int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined auStack_7c [8];
  int *piStack_74;
  int iStack_1c;
  undefined4 uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00beda38;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_7c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  iVar3 = *(int *)(param_1 + 0x4c);
  if (iVar3 == 0x6b) {
    if (param_1_00[0x74] == 0) goto LAB_00a0f01f;
    param_1_00[0x74] = param_1_00[0x74] + -1;
  }
  else {
    if (iVar3 != 0x6c) {
      if (iVar3 == 0x6a) {
        iVar3 = *(int *)param_1_00[0x66];
        uVar2 = FUN_00a0a940();
        iVar3 = (**(code **)(iVar3 + 0x34))(param_1_00,param_1_00 + 0x67,uVar2);
        if (iVar3 != -1) {
          FUN_00a0e000(DAT_032ea428,param_1_00[0x10]);
          uStack_4 = 0;
          iStack_1c = iVar3;
          uStack_18 = FUN_00a0a940();
          piStack_74 = param_1_00;
          (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(auStack_7c);
          uStack_4 = 0xffffffff;
          FUN_00a1f4e0();
        }
      }
      else {
        *(undefined *)(param_1 + 0x24) = 1;
      }
      goto LAB_00a0f01f;
    }
    param_1_00[0x74] = param_1_00[0x74] + 1;
  }
  (**(code **)(*param_1_00 + 0x15c))(1,0,uVar1);
  (**(code **)(*param_1_00 + 0x160))();
LAB_00a0f01f:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0f050(int *param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int **ppiVar6;
  undefined auStack_b4 [2];
  char local_b2;
  char local_b1;
  int local_b0;
  undefined **local_ac [2];
  int local_a4;
  undefined4 local_8c;
  uint local_84;
  undefined4 local_80;
  undefined auStack_7c [8];
  int *piStack_74;
  int iStack_1c;
  int iStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed943;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_b4;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff3c;
  ExceptionList = &local_c;
  local_b0 = param_1;
  iVar3 = FUN_00a0a940(uVar2);
  if (iVar3 == -1) goto LAB_00a0f0aa;
  iVar3 = *(int *)(param_1 + 0x34);
  if (iVar3 == 0x17c) {
    iVar3 = 0x16e;
  }
  else {
    if (iVar3 != 0x17d) {
      if (iVar3 == 0x177) {
        iVar3 = 0x139;
      }
      else if (iVar3 == 0x17e) {
        iVar3 = 0x138;
      }
      else if (iVar3 == 0x178) {
        iVar3 = 0x13a;
      }
      else if (iVar3 == 0x17a) {
        iVar3 = 0x13c;
      }
      else if (((iVar3 == 9) || (iVar3 == 0x16e)) || (iVar3 == 0x16f)) goto LAB_00a0f0c3;
      if (1 < (uint)param_1_00[0x68]) {
        iVar5 = (**(code **)(*param_1_00 + 100))();
        if (iVar5 == 2) {
          iVar4 = 0x13a;
          iVar5 = 0x13c;
        }
        else {
          iVar4 = 0x13c;
          iVar5 = 0x13a;
        }
        if (iVar3 == iVar4) {
          if (1 < (uint)param_1_00[0x68]) {
            iVar3 = FUN_00a0a940(uVar2);
            if (iVar3 == -1) {
LAB_00a0f18b:
              iVar3 = 0;
              goto LAB_00a0f21b;
            }
            iVar3 = param_1_00[0x68];
            iVar5 = FUN_00a0a940(uVar2);
            if (iVar5 < iVar3 + -1) {
              iVar3 = FUN_00a0a940(uVar2);
              iVar3 = iVar3 + 1;
              goto LAB_00a0f212;
            }
          }
        }
        else if (iVar3 == iVar5) {
          if (1 < (uint)param_1_00[0x68]) {
            iVar3 = FUN_00a0a940(uVar2);
            if (iVar3 == -1) goto LAB_00a0f209;
            iVar3 = FUN_00a0a940(uVar2);
            if (0 < iVar3) {
              iVar3 = FUN_00a0a940(uVar2);
              iVar3 = iVar3 + -1;
              goto LAB_00a0f212;
            }
          }
        }
        else {
          if (iVar3 == 0x139) goto LAB_00a0f18b;
          if (iVar3 != 0x138) {
            *(undefined *)(param_1 + 0x24) = 1;
            *(undefined *)(param_1 + 0x24) = 1;
            goto LAB_00a0f37a;
          }
LAB_00a0f209:
          iVar3 = param_1_00[0x68] + -1;
LAB_00a0f212:
          if (iVar3 != -1) {
LAB_00a0f21b:
            FUN_00a0e000(DAT_032ea428,param_1_00[0x10]);
            local_4 = 1;
            piStack_74 = param_1_00;
            iStack_1c = iVar3;
            iStack_18 = iVar3;
            (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(auStack_7c);
            local_4 = 0xffffffff;
            FUN_00a1f4e0();
            goto LAB_00a0f37a;
          }
        }
      }
LAB_00a0f0aa:
      *(undefined *)(param_1 + 0x24) = 1;
      goto LAB_00a0f37a;
    }
    iVar3 = 0x16f;
  }
LAB_00a0f0c3:
  if (iVar3 == 9) {
    local_b2 = (*(byte *)(param_1 + 0x28) >> 1 & 1) == 0;
  }
  else {
    local_b2 = iVar3 == 0x16f;
  }
  if (((iVar3 == 0x16e) || (iVar3 == 0x16f)) ||
     (local_b1 = '\0', (*(byte *)(param_1 + 0x28) & 1) != 0)) {
    local_b1 = '\x01';
  }
  iVar5 = FUN_0048a085(param_1_00[0x11],&PTR_u_wxAuiNotebook_0323f114);
  if (iVar5 == 0) {
    *(undefined *)(local_b0 + 0x24) = 1;
  }
  else {
    FUN_00845a20(0,DAT_032bfe6c);
    local_ac[0] = wxNavigationKeyEvent::vftable;
    local_80 = 0;
    local_8c = 0;
    local_4 = 0;
    local_84 = (local_b2 != '\0') + 4;
    if (local_b1 == '\0') {
      local_84 = local_84 & 0xfffffffd;
    }
    else {
      local_84 = local_84 | 2;
    }
    if (iVar3 == 9) {
      local_84 = local_84 | 4;
    }
    else {
      local_84 = local_84 & 0xfffffffb;
    }
    local_a4 = iVar5;
    cVar1 = (**(code **)(**(int **)(iVar5 + 0x70) + 0x18))(local_ac);
    if ((cVar1 == '\0') && (uVar2 = FUN_00a0a940(uVar2), uVar2 < (uint)param_1_00[0x68])) {
      ppiVar6 = (int **)FUN_009cde80(uVar2);
      if (*ppiVar6 != (int *)0x0) {
        (**(code **)(**ppiVar6 + 0x100))();
      }
    }
    local_4 = 0xffffffff;
    local_ac[0] = wxObject::vftable;
    FUN_0083e850();
  }
LAB_00a0f37a:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0f3b0(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  undefined local_6c [92];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed988;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  iVar3 = FUN_00a0a9c0(param_1);
  if (iVar3 == -1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\aui\\auibook.cpp",0xd48,"wxAuiNotebook::SetSelectionToWindow",
                   "idx != (-1)",L"invalid notebook page",uVar2);
    }
  }
  else {
    iVar1 = param_1_00[0x11];
    if (iVar1 != 0) {
      FUN_0092bed0(param_1_00);
      local_4 = 0;
      (**(code **)(**(int **)(iVar1 + 0x70) + 0x18))(local_6c);
      local_4 = 0xffffffff;
      FUN_00a1f4e0();
    }
    (**(code **)(*param_1_00 + 0x38c))(iVar3);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00a0f520(int param_1)

{
  uint uVar1;
  undefined **local_7c [2];
  int local_74;
  uint uStack_54;
  undefined4 uStack_44;
  uint uStack_40;
  void *pvStack_3c;
  undefined local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed9b8;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_7c);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_c;
  FUN_0092bd60(DAT_032ea448,*(undefined4 *)(param_1 + 0x40));
  local_20 = 1;
  local_1c = 0xffffffff;
  local_18 = 0xffffffff;
  local_7c[0] = wxAuiNotebookEvent::vftable;
  local_14 = 0;
  local_4 = 0;
  local_74 = param_1;
  (**(code **)(**(int **)(param_1 + 0x70) + 0x18))(local_7c,uVar1);
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_3c);
  if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_54);
  }
  uStack_40 = 7;
  uStack_44 = 0;
  uStack_54 = uStack_54 & 0xffff0000;
  FUN_0083e850();
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0f620(int *param_1_00,int param_1)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  undefined4 local_ec;
  undefined local_e8 [8];
  int *local_e0;
  char cStack_8c;
  undefined4 local_88;
  undefined4 local_84;
  undefined auStack_7c [8];
  int *piStack_74;
  undefined4 uStack_1c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bed9f3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_ec;
  ExceptionList = &local_c;
  iVar3 = *(int *)(param_1 + 8);
  if (*(int *)(param_1 + 0x4c) == 0x65) {
    uVar1 = *(uint *)(param_1 + 0x60);
    if (uVar1 == 0xffffffff) {
      uVar1 = FUN_00a0a940(DAT_0323f878 ^ (uint)&stack0xffffff04);
      if (uVar1 == 0xffffffff) goto LAB_00a0f797;
    }
    if (uVar1 < *(uint *)(iVar3 + 0x1a0)) {
      piVar2 = (int *)FUN_009cde80(uVar1);
      iVar3 = *piVar2;
      if (iVar3 != 0) {
        FUN_00a0e000(DAT_032ea420,param_1_00[0x10]);
        local_4 = 0;
        local_88 = FUN_00a0a9c0(iVar3);
        local_ec = FUN_00a0a9c0(iVar3);
        local_84 = *(undefined4 *)(param_1 + 0x60);
        local_e0 = param_1_00;
        local_88 = local_ec;
        (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(local_e8);
        if (cStack_8c != '\0') {
          iVar3 = FUN_00a0a9c0(iVar3);
          if (iVar3 != -1) {
            (**(code **)(*param_1_00 + 0x378))(iVar3);
          }
          FUN_00a0e000(DAT_032ea424,param_1_00[0x10]);
          uStack_1c = local_ec;
          local_4._0_1_ = 1;
          piStack_74 = param_1_00;
          (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(auStack_7c);
          local_4 = (uint)local_4._1_3_ << 8;
          FUN_00a1f4e0();
        }
        local_4 = 0xffffffff;
        FUN_00a1f4e0();
      }
    }
  }
LAB_00a0f797:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0f7d0(int param_1_00,int param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined **local_7c [2];
  int local_74;
  uint uStack_54;
  undefined4 uStack_44;
  uint uStack_40;
  void *pvStack_3c;
  undefined local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beda78;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_7c);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff7c;
  ExceptionList = &local_c;
  if (*(uint *)(param_1 + 0x60) < *(uint *)(*(int *)(param_1 + 8) + 0x1a0)) {
    puVar2 = (undefined4 *)FUN_009cde80(*(uint *)(param_1 + 0x60));
    uVar3 = *puVar2;
  }
  else {
    uVar3 = 0;
  }
  FUN_0092bd60(DAT_032ea454,*(undefined4 *)(param_1_00 + 0x40));
  local_20 = 1;
  local_1c = 0xffffffff;
  local_18 = 0xffffffff;
  local_7c[0] = wxAuiNotebookEvent::vftable;
  local_14 = 0;
  local_4 = 0;
  local_1c = FUN_00a0a9c0(uVar3);
  local_74 = param_1_00;
  (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_7c,uVar1);
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_3c);
  if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_54);
  }
  uStack_40 = 7;
  uStack_44 = 0;
  uStack_54 = uStack_54 & 0xffff0000;
  FUN_0083e850();
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0f910(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined **local_7c [2];
  int local_74;
  uint uStack_54;
  undefined4 uStack_44;
  uint uStack_40;
  void *pvStack_3c;
  char cStack_24;
  undefined local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beda38;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_7c);
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  if (*(uint *)(param_1 + 0x60) < *(uint *)(*(int *)(param_1 + 8) + 0x1a0)) {
    puVar3 = (undefined4 *)FUN_009cde80(*(uint *)(param_1 + 0x60));
    uVar4 = *puVar3;
  }
  else {
    uVar4 = 0;
  }
  FUN_0092bd60(DAT_032ea450,*(undefined4 *)(param_1_00 + 0x40));
  local_20 = 1;
  local_1c = 0xffffffff;
  local_18 = 0xffffffff;
  local_7c[0] = wxAuiNotebookEvent::vftable;
  local_14 = 0;
  local_4 = 0;
  local_1c = FUN_00a0a9c0(uVar4);
  local_74 = param_1_00;
  cVar1 = (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_7c,uVar2);
  if (cVar1 == '\0') {
    if ((cStack_24 != '\0') && ((*(uint *)(param_1_00 + 0x37c) & 0x2000) != 0)) {
      *(undefined4 *)(param_1 + 0x4c) = 0x65;
      FUN_00a0f620(param_1);
    }
    puStack_8 = (undefined *)0xffffffff;
    FUN_00a1f4e0();
  }
  else {
    puStack_8 = (undefined *)0xffffffff;
    _free(pvStack_3c);
    if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_54);
    }
    uStack_40 = 7;
    uStack_44 = 0;
    uStack_54 = uStack_54 & 0xffff0000;
    FUN_0083e850();
  }
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0fa80(int param_1_00,int param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined **local_7c [2];
  int local_74;
  uint uStack_54;
  undefined4 uStack_44;
  uint uStack_40;
  void *pvStack_3c;
  undefined local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beda78;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_7c);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff7c;
  ExceptionList = &local_c;
  if (*(uint *)(param_1 + 0x60) < *(uint *)(*(int *)(param_1 + 8) + 0x1a0)) {
    puVar2 = (undefined4 *)FUN_009cde80(*(uint *)(param_1 + 0x60));
    uVar3 = *puVar2;
  }
  else {
    uVar3 = 0;
  }
  FUN_0092bd60(DAT_032ea45c,*(undefined4 *)(param_1_00 + 0x40));
  local_20 = 1;
  local_1c = 0xffffffff;
  local_18 = 0xffffffff;
  local_7c[0] = wxAuiNotebookEvent::vftable;
  local_14 = 0;
  local_4 = 0;
  local_1c = FUN_00a0a9c0(uVar3);
  local_74 = param_1_00;
  (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_7c,uVar1);
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_3c);
  if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_54);
  }
  uStack_40 = 7;
  uStack_44 = 0;
  uStack_54 = uStack_54 & 0xffff0000;
  FUN_0083e850();
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0fbc0(int param_1_00,int param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined **local_7c [2];
  int local_74;
  uint uStack_54;
  undefined4 uStack_44;
  uint uStack_40;
  void *pvStack_3c;
  undefined local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beda78;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_7c);
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff7c;
  ExceptionList = &local_c;
  if (*(uint *)(param_1 + 0x60) < *(uint *)(*(int *)(param_1 + 8) + 0x1a0)) {
    puVar2 = (undefined4 *)FUN_009cde80(*(uint *)(param_1 + 0x60));
    uVar3 = *puVar2;
  }
  else {
    uVar3 = 0;
  }
  FUN_0092bd60(DAT_032ea458,*(undefined4 *)(param_1_00 + 0x40));
  local_20 = 1;
  local_1c = 0xffffffff;
  local_18 = 0xffffffff;
  local_7c[0] = wxAuiNotebookEvent::vftable;
  local_14 = 0;
  local_4 = 0;
  local_1c = FUN_00a0a9c0(uVar3);
  local_74 = param_1_00;
  (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_7c,uVar1);
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_3c);
  if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_54);
  }
  uStack_40 = 7;
  uStack_44 = 0;
  uStack_54 = uStack_54 & 0xffff0000;
  FUN_0083e850();
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0fd00(int param_1_00,uint param_1,char param_2)

{
  char cVar1;
  uint uVar2;
  int **ppiVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  int *piVar7;
  int *local_8c;
  uint uStack_88;
  undefined4 local_84;
  int *local_80;
  undefined **local_7c [2];
  int local_74;
  undefined4 uStack_70;
  char local_20;
  uint local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bedaa8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_8c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff64;
  ExceptionList = &local_c;
  if (*(uint *)(param_1_00 + 0x314) <= param_1) goto LAB_00a0ff8d;
  ppiVar3 = (int **)FUN_009cde80(param_1);
  piVar4 = *ppiVar3;
  local_80 = piVar4;
  if (piVar4 == (int *)0x0) goto LAB_00a0ff8d;
  if (param_1 == *(uint *)(param_1_00 + 0x34c)) {
    cVar1 = FUN_00a0b890(piVar4,&local_8c,&local_84);
    if ((cVar1 != '\0') && (piVar4 = (int *)FUN_0091ac40(), piVar4 != local_8c)) {
      (**(code **)(*local_8c + 0x100))();
    }
    goto LAB_00a0ff8d;
  }
  FUN_0092bd60(DAT_032ea428,*(undefined4 *)(param_1_00 + 0x40));
  local_1c = 0xffffffff;
  local_18 = 0xffffffff;
  local_20 = '\x01';
  local_7c[0] = wxAuiNotebookEvent::vftable;
  local_14 = 0;
  local_4 = 0;
  if (param_2 == '\0') {
LAB_00a0fe2c:
    local_84 = *(undefined4 *)(param_1_00 + 0x34c);
    *(uint *)(param_1_00 + 0x34c) = param_1;
    if (param_2 != '\0') {
      uStack_70 = DAT_032ea42c;
      (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_7c);
    }
    cVar1 = FUN_00a0b890(piVar4,&local_8c,&uStack_88);
    if (cVar1 != '\0') {
      FUN_00a0a8a0(piVar4);
      piVar4 = local_8c;
      FUN_00a0a910(uStack_88);
      FUN_00a0b7e0();
      FUN_00a0aed0();
      FUN_00a0acf0(uStack_88,piVar4);
      iVar5 = FUN_00a14090();
      uStack_88 = *(uint *)(iVar5 + 4);
      uVar2 = 0;
      if (uStack_88 != 0) {
        do {
          iVar5 = FUN_009cde80(uVar2);
          iVar6 = FUN_008507a0(L"dummy");
          if (iVar6 != 0) {
            piVar4 = *(int **)(*(int *)(iVar5 + 0x50) + 0x184);
            if (piVar4 == local_8c) {
              (**(code **)(*(int *)piVar4[0x66] + 0x14))(param_1_00 + 0x364);
            }
            else {
              (**(code **)(*(int *)piVar4[0x66] + 0x14))(param_1_00 + 0x36c);
            }
            (**(code **)(*piVar4 + 0x15c))(1,0);
          }
          uVar2 = uVar2 + 1;
        } while (uVar2 < uStack_88);
      }
      piVar4 = local_80;
      cVar1 = (**(code **)(*local_80 + 0xe0))();
      if ((cVar1 != '\0') && (piVar7 = (int *)FUN_0091ac40(), piVar7 != local_8c)) {
        (**(code **)(*piVar4 + 0x100))();
      }
      local_4 = 0xffffffff;
      FUN_00a1f4e0();
      goto LAB_00a0ff8d;
    }
  }
  else {
    local_18 = *(undefined4 *)(param_1_00 + 0x34c);
    local_1c = param_1;
    local_74 = param_1_00;
    (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_7c,uVar2);
    if (local_20 != '\0') goto LAB_00a0fe2c;
  }
  local_4 = 0xffffffff;
  FUN_00a1f4e0();
LAB_00a0ff8d:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a0ffc0(int param_1_00,uint param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  
  if (*(uint *)(param_1_00 + 4) <= param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\aui\\auibook.cpp",0x29,"wxAuiNotebookPageArray::RemoveAt",
                   "uiIndex < size()",L"bad index in wxAuiNotebookPageArray::RemoveAt()");
    }
    return;
  }
  uVar3 = 0;
  if (param_2 != 0) {
    iVar2 = param_1 * 4;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar3 + param_1))
      {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1_00 + 8) + iVar2);
      if (iVar1 != 0) {
        FUN_00a0e040();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar3 = uVar3 + 1;
      iVar2 = iVar2 + 4;
    } while (uVar3 < param_2);
  }
  iVar1 = *(int *)(param_1_00 + 8);
  iVar2 = iVar1 + param_1 * 4;
  FUN_0086a1e0(iVar2 - iVar1 >> 2,(int)(((param_1 + param_2) * 4 - iVar2) + iVar1) >> 2);
  return;
}



undefined4 __thiscall FUN_00a10090(int param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  undefined4 local_8;
  undefined4 local_4;
  
  uVar1 = *(uint *)(param_1_00 + 0xc);
  uVar2 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0xc) <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      if (**(int **)(*(int *)(param_1_00 + 0x10) + uVar2 * 4) == param_1) {
        FUN_00a0ffc0(uVar2,1);
        if (*(int *)(param_1_00 + 4) != 0) {
          local_8 = *(undefined4 *)(param_1_00 + 0x34);
          local_4 = *(undefined4 *)(param_1_00 + 0x38);
          (**(code **)(**(int **)(param_1_00 + 4) + 0xc))
                    (&local_8,*(undefined4 *)(param_1_00 + 0xc));
        }
        return 1;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar1);
  }
  return 0;
}



void __fastcall FUN_00a10130(int *param_1)

{
  int iVar1;
  undefined4 unaff_ESI;
  undefined4 local_38;
  undefined auStack_34 [4];
  uint uStack_30;
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc9388;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(*param_1 + 0x3d0))(&local_38,DAT_0323f878 ^ (uint)&stack0xffffffc0);
  FUN_004325b6(L"dummy");
  puStack_8 = (undefined *)0x0;
  iVar1 = FUN_00a162a0(auStack_34);
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_30);
  }
  uStack_1c = 7;
  uStack_20 = 0;
  uStack_30 = uStack_30 & 0xffff0000;
  if (*(int *)(iVar1 + 0x50) != 0) {
    *(undefined4 *)(iVar1 + 0x74) = unaff_ESI;
    *(undefined4 *)(iVar1 + 0x78) = local_38;
    *(undefined4 *)(iVar1 + 0x6c) = unaff_ESI;
    *(undefined4 *)(iVar1 + 0x70) = local_38;
    (**(code **)(*(int *)param_1[0xd5] + 0x288))(0xffffffff,0xffffffff,unaff_ESI,local_38,0);
  }
  ExceptionList = pvStack_10;
  return;
}



undefined4 __thiscall FUN_00a10230(int param_1_00,uint param_1)

{
  uint uVar1;
  char cVar2;
  char cVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  uVar1 = *(uint *)(param_1_00 + 0x34c);
  local_c = 0;
  if (-1 < (int)uVar1) {
    if (uVar1 < *(uint *)(param_1_00 + 0x314)) {
      piVar5 = (int *)FUN_009cde80(uVar1);
      local_c = *piVar5;
    }
    else {
      local_c = 0;
    }
  }
  if (param_1 < *(uint *)(param_1_00 + 0x314)) {
    piVar5 = (int *)FUN_009cde80(param_1);
    iVar6 = *piVar5;
  }
  else {
    iVar6 = 0;
  }
  local_10 = 0;
  if (iVar6 == 0) {
    return 0;
  }
  cVar2 = FUN_00a0b890(iVar6,&local_8,&local_4);
  if (cVar2 == '\0') {
    return 0;
  }
  uVar1 = *(uint *)(param_1_00 + 0x34c);
  iVar4 = FUN_00a0aa30(local_4);
  cVar2 = *(char *)(iVar4 + 0x40);
  cVar3 = FUN_00a10090(iVar6);
  if (cVar3 == '\0') {
    return 0;
  }
  FUN_00a10090(iVar6);
  if (cVar2 == '\0') {
    local_10 = local_c;
LAB_00a10336:
    if (local_10 != 0) goto LAB_00a1037b;
  }
  else {
    iVar4 = *(int *)(local_8 + 0x1a0);
    iVar6 = local_4;
    if (iVar4 <= local_4) {
      iVar6 = iVar4 + -1;
    }
    if (((-1 < iVar6) && (iVar6 < iVar4)) && (FUN_00a0a910(iVar6), uVar1 == param_1)) {
      local_10 = FUN_00a0a9a0(iVar6);
      goto LAB_00a10336;
    }
  }
  if (param_1 < *(uint *)(param_1_00 + 0x314)) {
    piVar5 = (int *)FUN_00a0aa30(param_1);
    local_10 = *piVar5;
    if (local_10 != 0) goto LAB_00a1037b;
  }
  if (*(int *)(param_1_00 + 0x314) != 0) {
    piVar5 = (int *)FUN_00a0aa30(0);
    local_10 = *piVar5;
  }
LAB_00a1037b:
  FUN_00a0bb20();
  *(undefined4 *)(param_1_00 + 0x34c) = 0xffffffff;
  if ((local_10 != 0) && ((*(byte *)(param_1_00 + 0xdc) & 8) == 0)) {
    FUN_00a0f3b0(local_10);
  }
  return 1;
}



int __thiscall FUN_00a10460(int param_1_00,int param_1,uint param_2)

{
  int iVar1;
  
  if (*(uint *)(param_1_00 + 0x314) <= param_2) {
    FUN_004325b6(PTR_DAT_03236318);
    return param_1;
  }
  iVar1 = FUN_00a0aac0(param_2);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  FID_conflict_assign(iVar1 + 4,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = 0;
  return param_1;
}



void FUN_00a104d0(int param_1)

{
  FUN_00a10130();
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



undefined4 * __fastcall FUN_00a104e0(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x6c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a2df(param_1);
    *puVar1 = wxNotifyEvent::vftable;
    *(undefined *)(puVar1 + 0x17) = *(undefined *)(param_1 + 0x5c);
    *puVar1 = wxBookCtrlEvent::vftable;
    puVar1[0x18] = *(undefined4 *)(param_1 + 0x60);
    puVar1[0x19] = *(undefined4 *)(param_1 + 100);
    *puVar1 = wxAuiNotebookEvent::vftable;
    puVar1[0x1a] = *(undefined4 *)(param_1 + 0x68);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __fastcall FUN_00a10570(int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = *(uint *)(param_1 + 4);
  if (uVar2 != 0) {
    uVar3 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar2 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1 + 8) + uVar3 * 4);
      if (iVar1 != 0) {
        FUN_00a0e040();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar2 = *(uint *)(param_1 + 4);
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  return;
}



undefined4 * __thiscall FUN_00a105e0(undefined4 *param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  *param_1_00 = *param_1;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_1 + 1,0,0xffffffff);
  param_1_00[8] = 0;
  param_1_00[10] = wxObject::vftable;
  iVar1 = param_1[0xb];
  param_1_00[0xb] = iVar1;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  param_1_00[10] = wxBitmap::vftable;
  param_1_00[0xc] = param_1[0xc];
  param_1_00[0xd] = param_1[0xd];
  param_1_00[0xe] = param_1[0xe];
  param_1_00[0xf] = param_1[0xf];
  *(undefined *)(param_1_00 + 0x10) = *(undefined *)(param_1 + 0x10);
  return param_1_00;
}



void __thiscall FUN_00a10660(int param_1_00,undefined4 param_1,int param_2,uint param_3)

{
  void *pvVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bedaf6;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_3 != 0) {
    pvVar1 = operator_new(0x44);
    local_4 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar2 = 0;
    }
    else {
      iVar2 = FUN_00a105e0(param_1);
    }
    local_4 = 0xffffffff;
    if (iVar2 != 0) {
      FUN_0086a0a0(iVar2,param_2 * 4 >> 2,param_3);
    }
    uVar4 = 1;
    if (1 < param_3) {
      iVar2 = param_2 * 4;
      do {
        iVar2 = iVar2 + 4;
        pvVar1 = operator_new(0x44);
        local_4 = 1;
        if (pvVar1 == (void *)0x0) {
          uVar3 = 0;
        }
        else {
          uVar3 = FUN_00a105e0(param_1);
        }
        local_4 = 0xffffffff;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar4 + param_2)
           ) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 *)(iVar2 + *(int *)(param_1_00 + 8)) = uVar3;
        uVar4 = uVar4 + 1;
      } while (uVar4 < param_3);
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_00a10790(int *param_1_00,undefined **param_1,undefined4 param_2,undefined *param_3,int **param_4
            ,undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  short *psVar1;
  char cVar2;
  short *psVar3;
  int ***pppiVar4;
  undefined4 uVar5;
  int **ppiVar6;
  int iVar7;
  int *piVar8;
  int iVar9;
  void *unaff_EBP;
  int **ppiVar10;
  int **unaff_ESI;
  int **ppiVar11;
  int *piVar12;
  int **ppiVar13;
  int ***pppiStack_1f4;
  int ****ppppiStack_1f0;
  int ***pppiStack_1ec;
  int ***pppiStack_1e8;
  int ***pppiStack_1e4;
  int ***pppiStack_1e0;
  undefined *puStack_1dc;
  int ***pppiStack_1d8;
  int **ppiStack_1d4;
  int *piStack_1d0;
  undefined **ppuStack_1cc;
  int *piStack_1c8;
  int ***pppiStack_1c4;
  int **ppiStack_1c0;
  int ***pppiStack_1bc;
  int ***pppiStack_1b8;
  undefined **ppuStack_1b4;
  int ***pppiStack_1b0;
  int ***pppiStack_1ac;
  int ***pppiStack_1a8;
  int ***pppiStack_1a4;
  int ***pppiStack_1a0;
  undefined **ppuStack_19c;
  int **ppiStack_198;
  undefined *puStack_194;
  int ***pppiStack_190;
  int **ppiStack_18c;
  undefined *puStack_188;
  undefined **ppuStack_184;
  int iStack_180;
  int *piStack_17c;
  undefined4 uStack_178;
  int **ppiStack_174;
  int **ppiStack_170;
  undefined *puStack_16c;
  undefined *puStack_168;
  undefined *puStack_164;
  undefined *puStack_160;
  int ***pppiStack_15c;
  int **ppiStack_158;
  undefined4 uStack_154;
  int **ppiStack_150;
  undefined *puStack_14c;
  undefined4 uStack_148;
  undefined4 *puStack_144;
  int **ppiStack_140;
  undefined *puStack_13c;
  undefined2 *puStack_138;
  int *piStack_134;
  int **ppiStack_130;
  undefined auStack_11c [4];
  uint uStack_118;
  undefined4 local_114;
  int **local_110 [4];
  void *pvStack_100;
  int **ppiStack_fc;
  int iStack_f8;
  int **local_f4;
  int iStack_f0;
  undefined4 uStack_ec;
  int iStack_e8;
  undefined4 uStack_e4;
  undefined uStack_e0;
  int iStack_d4;
  undefined *local_c8;
  undefined uStack_c4;
  int iStack_bc;
  undefined uStack_b4;
  undefined auStack_b0 [4];
  undefined4 local_ac [2];
  undefined uStack_a4;
  undefined uStack_a0;
  undefined auStack_9c [16];
  undefined auStack_8c [16];
  undefined auStack_7c [4];
  int *piStack_78;
  undefined uStack_74;
  undefined4 local_70;
  undefined4 local_68;
  undefined auStack_5c [8];
  undefined2 local_54;
  int local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 uStack_24;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bedb9e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_11c;
  ppiStack_130 = (int **)(DAT_0323f878 ^ (uint)&stack0xfffffed4);
  ExceptionList = &local_c;
  local_ac[0] = param_2;
  local_68 = param_6;
  piStack_134 = (int *)0xffffffff;
  local_114 = param_8;
  puStack_138 = (undefined2 *)0x0;
  puStack_13c = param_3 + 4;
  local_54 = 0;
  local_c8 = param_3;
  local_f4 = param_4;
  local_70 = param_7;
  local_40 = 7;
  local_44 = 0;
  ppiStack_140 = (int **)0xa10852;
  FID_conflict_assign();
  local_3c = 0;
  local_4 = 0;
  if (local_44 == 0) {
    local_110[0] = (int **)&DAT_00d9b4b6;
    psVar1 = &DAT_00d9b4b4;
    do {
      psVar3 = psVar1;
      psVar1 = psVar3 + 1;
    } while (*psVar3 != 0);
    piStack_134 = (int *)((int)(psVar3 + -0x6cda5a) >> 1);
    puStack_138 = &DAT_00d9b4b4;
    puStack_13c = (undefined *)0xa1089a;
    FID_conflict_assign();
  }
  piStack_134 = param_1_00 + 3;
  puStack_138 = (undefined2 *)0xa108a8;
  (**(code **)(*(int *)param_1[2] + 0x50))();
  puStack_138 = (undefined2 *)0x0;
  puStack_13c = (undefined *)0x0;
  ppiStack_140 = (int **)0x0;
  puStack_144 = local_ac;
  uStack_148 = &piStack_78;
  puStack_14c = auStack_5c;
  ppiStack_150 = (int **)0xa108d3;
  (**(code **)(*(int *)param_1[2] + 0xa4))();
  ppiStack_150 = (int **)(param_1_00 + 1);
  uStack_154 = 0xa108e1;
  (**(code **)(*(int *)param_1[2] + 0x50))();
  uStack_154 = 0;
  ppiStack_158 = (int **)0x0;
  pppiStack_15c = (int ***)0x0;
  puStack_160 = auStack_8c;
  puStack_164 = auStack_7c;
  puStack_168 = (undefined *)&piStack_78;
  puStack_16c = (undefined *)0xa1090c;
  (**(code **)(*(int *)param_1[2] + 0xa4))();
  puStack_16c = puStack_14c;
  ppiStack_170 = (int **)uStack_24;
  ppiStack_174 = (int **)(uint)(byte)param_3[0x40];
  uStack_178 = (int **)(param_3 + 0x28);
  piStack_17c = (int *)(param_3 + 4);
  iStack_180 = (int)uStack_e4;
  ppuStack_184 = param_1;
  puStack_188 = auStack_9c;
  ppiStack_18c = (int **)0xa10944;
  (**(code **)(*param_1_00 + 0x30))();
  ppiVar11 = (int **)*param_4;
  puStack_138 = (undefined2 *)(param_1_00[0x28] + -3);
  ppiVar10 = (int **)((int)param_4[3] + (*(int *)(puStack_14c + 4) - (int)puStack_138));
  puStack_13c = (undefined *)iStack_bc;
  local_110[2] = ppiVar11;
  if (auStack_b0 != param_3 + 0x2c) {
    ppiStack_18c = (int **)0xffffffff;
    pppiStack_190 = (int ***)0x0;
    ppiStack_198 = (int **)0xa1098e;
    puStack_194 = param_3 + 0x2c;
    FID_conflict_assign();
  }
  if (param_3[0x68] == '\0') {
    ppiStack_18c = (int **)(param_1_00 + 1);
    pppiStack_190 = (int ***)0xa109b8;
    (**(code **)(*(int *)param_1[2] + 0x50))();
    local_110[3] = (int **)local_c8;
  }
  else {
    ppiStack_18c = (int **)(param_1_00 + 3);
    pppiStack_190 = (int ***)0xa109a6;
    (**(code **)(*(int *)param_1[2] + 0x50))();
  }
  ppiStack_170 = (int **)*ppiStack_150;
  uStack_178 = ppiStack_140;
  if ((int)ppiStack_170 + (int)ppiStack_150[2] < (int)ppiStack_140 + (int)ppiVar11) {
    uStack_178 = (int **)(((int)ppiStack_150[2] - (int)ppiVar11) + (int)ppiStack_170);
  }
  pppiStack_190 = (int ***)((int)puStack_13c + -3);
  puStack_194 = (undefined *)((int)uStack_178 + 1);
  pppiStack_1a0 = (int ***)0xa10a07;
  ppuStack_19c = (undefined **)ppiVar11;
  ppiStack_198 = ppiVar10;
  puStack_16c = (undefined *)local_110[3];
  (**(code **)(*(int *)param_1[2] + 0xb4))();
  pppiVar4 = local_110;
  iVar9 = 5;
  do {
    *pppiVar4 = (int **)0x0;
    pppiVar4[1] = (int **)0x0;
    pppiVar4 = pppiVar4 + 2;
    iVar9 = iVar9 + -1;
  } while (-1 < iVar9);
  if ((*(byte *)(param_1_00 + 0x29) & 8) == 0) {
    local_110[1] = (int **)(puStack_14c + -4 + (int)ppiVar10);
    local_110[3] = (int **)((int)ppiVar10 + 2);
    uStack_ec = (undefined *)((int)ppiVar10 + 2);
    ppiStack_fc = ppiVar10;
    local_f4 = ppiVar10;
  }
  else {
    local_110[3] = (int **)(puStack_14c + -6 + (int)ppiVar10);
    uStack_ec = puStack_14c + -6 + (int)ppiVar10;
    local_110[1] = ppiVar10;
    ppiStack_fc = (int **)(puStack_14c + -4 + (int)ppiVar10);
    local_f4 = (int **)(puStack_14c + -4 + (int)ppiVar10);
  }
  iStack_e8 = (int)ppiStack_150 + (int)ppiVar11;
  iStack_f0 = (int)ppiStack_150 + (int)ppiVar11;
  iStack_f8 = iStack_f0 + -2;
  pvStack_100 = (void *)((int)ppiVar11 + 2);
  iStack_180 = (int)local_110[1] - (int)local_110[3];
  puStack_160 = (undefined *)local_110[3];
  local_110[0] = ppiVar11;
  uStack_e4 = local_110[1];
  if (*(char *)(piStack_134 + 0x10) == '\0') {
    ppiStack_130 = (int **)((int)ppiVar11 + 3);
    unaff_EBP = (void *)((int)(puStack_14c + -3) / 2 + -1);
    unaff_ESI = ppiStack_150 + -1;
    pppiStack_1a0 = (int ***)(param_1_00 + 7);
    pppiStack_1a4 = (int ***)0xa10dc5;
    local_110[2] = ppiVar11;
    FUN_00458700();
    pppiStack_1a0 = (int ***)0xa0;
    pppiStack_1a4 = (int ***)&uStack_178;
    local_70._0_1_ = 6;
    pppiStack_1a8 = (int ***)0xa10de0;
    FUN_00920050();
    pppiStack_1a0 = (int ***)0x40;
    pppiStack_1a4 = (int ***)&uStack_148;
    pppiStack_1a8 = (int ***)&uStack_178;
    pppiStack_1ac = &ppiStack_130;
    local_70 = CONCAT31(local_70._1_3_,7);
    pppiStack_1b0 = (int ***)0xa10e06;
    (**(code **)(*(int *)param_1[2] + 0x130))();
    puStack_13c = (undefined *)((int)puStack_13c + -1 + (int)piStack_134);
    pppiStack_1b0 = (int ***)(param_1_00 + 7);
    if (&ppiStack_158 != pppiStack_1b0) {
      ppuStack_1b4 = (undefined **)0xa10e27;
      FUN_0083ea60();
    }
    ppiStack_150 = (int **)param_1_00[9];
    pppiStack_1b0 = (int ***)(param_1_00 + 7);
    puStack_14c = (undefined *)param_1_00[10];
    uStack_148 = (int **)CONCAT31(uStack_148._1_3_,*(undefined *)(param_1_00 + 0xb));
    if ((int ***)&puStack_188 != pppiStack_1b0) {
      ppuStack_1b4 = (undefined **)0xa10e69;
      FUN_0083ea60();
    }
    iStack_180 = param_1_00[9];
    uStack_178 = (int **)CONCAT31(uStack_178._1_3_,*(undefined *)(param_1_00 + 0xb));
    pppiStack_1b0 = (int ***)0x80;
    piStack_17c = (int *)param_1_00[10];
    ppuStack_1b4 = &puStack_188;
    pppiStack_1b8 = &ppiStack_158;
    pppiStack_1bc = &ppiStack_140;
    ppiStack_1c0 = (int **)0xa10eb8;
    (**(code **)(*(int *)param_1[2] + 0x130))();
    uStack_c4 = 6;
    ppuStack_1cc = wxObject::vftable;
    pppiStack_1f4 = (int ***)0xa10ed1;
    FUN_0083e850();
    uStack_c4 = 0;
    ppuStack_19c = wxObject::vftable;
    pppiStack_1f4 = (int ***)0xa10eea;
    FUN_0083e850();
  }
  else {
    pppiStack_1a0 = (int ***)0x64;
    pppiStack_1a4 = (int ***)0x1;
    pppiVar4 = (int ***)(param_1_00 + 0x12);
    ppiStack_170 = ppiStack_150;
    puStack_16c = puStack_14c;
    pppiStack_1ac = (int ***)0xa10b62;
    pppiStack_1a8 = pppiVar4;
    uStack_178 = ppiVar11;
    ppiStack_174 = ppiVar10;
    local_110[2] = ppiVar11;
    pppiStack_1a0 = (int ***)FUN_009566f0();
    local_70 = CONCAT31(local_70._1_3_,1);
    pppiStack_1a4 = (int ***)0xa10b75;
    (**(code **)(*(int *)param_1[2] + 0x58))();
    uStack_74 = 0;
    ppiStack_18c = (int **)wxObject::vftable;
    pppiStack_1a4 = (int ***)0xa10b8e;
    FUN_0083e850();
    pppiStack_1a4 = (int ***)0x64;
    pppiStack_1ac = (int ***)0xa10b9a;
    pppiStack_1a8 = pppiVar4;
    pppiStack_1a4 = (int ***)FUN_0095d7e0();
    uStack_74 = 2;
    pppiStack_1a8 = (int ***)0xa10bad;
    (**(code **)(*(int *)param_1[2] + 0x60))();
    piStack_78._0_1_ = 0;
    pppiStack_1a8 = (int ***)0xa10bbe;
    FUN_008f7630();
    pppiStack_1ac = (int ***)((int)uStack_178 + -1);
    pppiStack_1a8 = (int ***)(ppiStack_174 + -1);
    pppiStack_1b0 = (int ***)((int)piStack_17c + 1);
    ppuStack_1b4 = (undefined **)(iStack_180 + 1);
    pppiStack_1b8 = (int ***)0xa10bfd;
    pppiStack_190 = pppiStack_1ac;
    puStack_16c = (undefined *)ppuStack_1b4;
    puStack_164 = (undefined *)pppiStack_1b0;
    (**(code **)(*(int *)param_1[2] + 0x150))();
    pppiStack_1b8 = (int ***)0x25;
    pppiStack_1bc = (int ***)0xa10c04;
    pppiStack_1b8 = (int ***)FUN_008f8330();
    pppiStack_1bc = (int ***)0xa10c12;
    (**(code **)(*(int *)param_1[2] + 0x58))();
    pppiStack_1bc = (int ***)0xa;
    ppiStack_1c0 = (int **)0xa10c19;
    pppiStack_1bc = (int ***)FUN_008f8a00();
    ppiStack_1c0 = (int **)0xa10c27;
    (**(code **)(*(int *)param_1[2] + 0x60))();
    pppiStack_1c4 = (int ***)((int)pppiStack_190 + -3);
    ppiStack_1c0 = ppiStack_18c + -1;
    piStack_1c8 = (int *)((int)puStack_194 + 1);
    ppuStack_1cc = (undefined **)((int)ppiStack_198 + 2);
    piStack_1d0 = (int *)0xa10c6a;
    pppiStack_1a8 = pppiStack_1c4;
    ppuStack_184 = ppuStack_1cc;
    piStack_17c = piStack_1c8;
    (**(code **)(*(int *)param_1[2] + 0x150))();
    piStack_1d0 = (int *)0x64;
    ppiStack_1d4 = (int **)0x1;
    puStack_1dc = (undefined *)0xa10c78;
    pppiStack_1d8 = pppiVar4;
    piStack_1d0 = (int *)FUN_009566f0();
    uStack_a0 = 3;
    ppiStack_1d4 = (int **)0xa10c8b;
    (**(code **)(*(int *)param_1[2] + 0x58))();
    uStack_a4 = 0;
    pppiStack_1bc = (int ***)wxObject::vftable;
    ppiStack_1d4 = (int **)0xa10ca4;
    FUN_0083e850();
    pppiStack_1d8 = (int ***)((int)pppiStack_1ac + 2);
    ppiStack_1d4 = (int **)((int)pppiStack_1a8 + 1);
    puStack_1dc = (undefined *)0xa10cc7;
    pppiStack_1bc = pppiStack_1d8;
    (**(code **)(*(int *)param_1[2] + 0x13c))();
    pppiStack_1e0 = (int ***)((undefined *)((int)ppuStack_1b4 + -2) + (int)pppiStack_1ac);
    puStack_1dc = (undefined *)((int)pppiStack_1b0 + 1);
    pppiStack_1e4 = (int ***)0xa10cef;
    pppiStack_1c4 = pppiStack_1e0;
    (**(code **)(*(int *)param_1[2] + 0x13c))();
    pppiStack_1bc = (int ***)((int)pppiStack_1bc + 2);
    ppuStack_1b4 = (undefined **)((int)ppuStack_1b4 + -3);
    pppiStack_1b0 = (int ***)((int)pppiStack_1b0 / 2);
    pppiStack_1b8 = (int ***)((int)pppiStack_1b8 + (int)pppiStack_1b0 + -2);
    pppiStack_1e4 = (int ***)0x12;
    pppiStack_1e8 = (int ***)0xa10d19;
    pppiStack_1e4 = (int ***)FUN_008f7e50();
    pppiStack_1e8 = (int ***)0xa10d26;
    FUN_00458700();
    pppiStack_1e8 = (int ***)0xa10d30;
    pppiStack_1e4 = pppiVar4;
    FUN_00458700();
    uStack_b4 = 5;
    pppiStack_1e4 = (int ***)0x40;
    pppiStack_1e8 = &ppiStack_174;
    pppiStack_1ec = &ppiStack_18c;
    ppppiStack_1f0 = &pppiStack_1bc;
    pppiStack_1f4 = (int ***)0xa10d56;
    (**(code **)(*(int *)param_1[2] + 0x130))();
    uStack_c4 = 4;
    ppuStack_19c = wxObject::vftable;
    pppiStack_1f4 = (int ***)0xa10d70;
    FUN_0083e850();
    uStack_c4 = 0;
    ppuStack_184 = wxObject::vftable;
    pppiStack_1f4 = (int ***)0xa10d85;
    FUN_0083e850();
    ppiVar11 = ppiStack_170;
  }
  pppiStack_1f4 = (int ***)(param_1_00 + 0xe);
  (**(code **)(*(int *)param_1[2] + 0x58))();
  uVar5 = FUN_008f8a00(9);
  (**(code **)(*(int *)param_1[2] + 0x60))(uVar5);
  iVar9 = 1;
  piVar12 = (int *)0x0;
  (**(code **)(*(int *)param_1[2] + 0x184))(6,&puStack_16c,0,0,1);
  if (*(char *)(pppiStack_1a4 + 0x10) != '\0') {
    if ((*(byte *)(param_1_00 + 0x29) & 8) == 0) {
      (**(code **)(*(int *)param_1[2] + 0x58))(param_1_00 + 0xc);
    }
    else {
      uVar5 = FUN_00920050(&pppiStack_1b8,0xaa);
      uStack_e0 = 8;
      uVar5 = FUN_009566f0(uVar5,1,100);
      uStack_e0 = 9;
      (**(code **)(*(int *)param_1[2] + 0x58))(uVar5);
      uStack_e4._0_1_ = 8;
      FUN_0083e850();
      uStack_e4 = (int **)((uint)uStack_e4._1_3_ << 8);
      pppiStack_1bc = (int ***)wxObject::vftable;
      FUN_0083e850();
    }
    iVar9 = (int)ppuStack_184 + 1;
    (**(code **)(*(int *)param_1[2] + 0x140))(iVar9,iStack_180,pppiStack_15c,ppiStack_158);
  }
  ppiVar13 = (int **)0x0;
  if (local_c8 != (undefined *)0x10) {
    if (param_1_00[0x18] == 0) {
      ppiVar13 = (int **)0x0;
    }
    else {
      ppiVar13 = *(int ***)(param_1_00[0x18] + 8);
    }
  }
  ppuStack_1cc = (undefined **)0x0;
  cVar2 = (*(code *)(*pppiStack_1c4)[4])();
  pppiVar4 = pppiStack_1c4;
  if (cVar2 == '\0') {
    ppiStack_1d4 = ppiVar11 + 2;
  }
  else {
    ppiVar6 = pppiStack_1c4[1];
    ppuStack_1cc = (undefined **)(ppiVar11 + 2);
    if (ppiVar6 != (int **)0x0) {
      ppiVar6 = (int **)ppiVar6[3];
    }
    (**(code **)(*(int *)param_1[2] + 0x164))
              (pppiStack_1c4,ppuStack_1cc,
               ((int)ppppiStack_1f0 / 2 - (int)ppiVar6 / 2) + (int)piStack_1d0,1);
    ppiVar11 = ppiStack_18c;
    if (pppiVar4[1] == (int **)0x0) {
      ppiStack_1d4 = (int **)((int)ppuStack_1cc + 3);
    }
    else {
      ppiStack_1d4 = (int **)((int)pppiVar4[1][2] + 3 + (int)ppuStack_1cc);
    }
  }
  ppiStack_18c = (int **)((int)ppiVar11 - (int)ppiVar13);
  FUN_00a24cf0(local_110,param_1,&piStack_134,
               ((int)ppiStack_18c - (int)ppiStack_1d4) + (int)ppiStack_1c0);
  ppppiStack_1f0 = (int ****)((int)ppppiStack_1f0 / 2);
  pppiStack_1ec = (int ***)((int)piStack_1d0 + (-1 - (int)pppiStack_1ec / 2) + (int)ppppiStack_1f0);
  uStack_e0 = 10;
  (**(code **)(*(int *)param_1[2] + 0x168))(local_110,ppiStack_1d4,pppiStack_1ec);
  if ((*(char *)((int)pppiStack_1b0 + 0x40) != '\0') &&
     (iVar7 = FUN_0091ac40(), (undefined *)iVar7 == puStack_194)) {
    pppiStack_1c4 = pppiStack_1e0;
    pppiStack_1bc = pppiStack_15c;
    pppiStack_1b8 = pppiStack_190;
    pppiStack_1f4 = (int ***)0x0;
    ppppiStack_1f0 = (int ****)0x0;
    pppiStack_1ec = (int ***)0x0;
    pppiStack_1e8 = (int ***)0x0;
    pppiStack_1ac = (int ***)0x0;
    pppiStack_1a8 = (int ***)0x0;
    pppiStack_1a4 = (int ***)0x0;
    pppiStack_1a0 = (int ***)0x0;
    ppiStack_1c0 = ppiVar13;
    cVar2 = (**(code **)(*piStack_1d0 + 0x10))();
    if (cVar2 != '\0') {
      pppiStack_1a4 = (int ***)0x0;
      if (piStack_1d0[1] == 0) {
        pppiStack_1a0 = (int ***)0x0;
      }
      else {
        pppiStack_1a0 = *(int ****)(piStack_1d0[1] + 0xc);
      }
      iVar7 = piStack_1d0[1];
      if (iVar7 != 0) {
        pppiStack_1a4 = *(int ****)(iVar7 + 8);
        iVar7 = *(int *)(iVar7 + 0xc);
      }
      pppiStack_1a8 = (int ***)(puStack_1dc + (iVar9 - iVar7 / 2));
      pppiStack_1ac = pppiStack_1d8;
    }
    cVar2 = (**(code **)(*piStack_1d0 + 0x10))();
    if ((cVar2 == '\0') || (local_110[2] != (int **)0x0)) {
      cVar2 = (**(code **)(*piStack_1d0 + 0x10))();
      if ((cVar2 == '\0') && (local_110[2] != (int **)0x0)) {
        pppiStack_1f4 = pppiStack_1c4;
        ppppiStack_1f0 = (int ****)ppiStack_1c0;
        pppiStack_1ec = pppiStack_1bc;
        pppiStack_1e8 = pppiStack_1b8;
      }
      else {
        cVar2 = (**(code **)(*piStack_1d0 + 0x10))();
        if ((cVar2 != '\0') && (local_110[2] != (int **)0x0)) {
          ppiVar13 = (int **)FUN_008f7640(&pppiStack_1ac);
          pppiStack_1f4 = (int ***)*ppiVar13;
          ppppiStack_1f0 = (int ****)ppiVar13[1];
          pppiStack_1ec = (int ***)ppiVar13[2];
          pppiStack_1e8 = (int ***)ppiVar13[3];
        }
      }
    }
    else {
      pppiStack_1f4 = pppiStack_1ac;
      ppppiStack_1f0 = (int ****)pppiStack_1a8;
      pppiStack_1ec = pppiStack_1a4;
      pppiStack_1e8 = pppiStack_1a0;
    }
    FUN_008f7520(2,2);
    piVar8 = (int *)FUN_009ba160();
    (**(code **)(*piVar8 + 0x34))(puStack_194,param_1,&pppiStack_1f4,0);
  }
  if (iStack_d4 != 0x10) {
    ppiStack_1d4 = (int **)param_1_00[0x1a];
    if (ppiStack_1d4 != (int **)0x0) {
      ppiStack_1d4[1] = (int *)((int)ppiStack_1d4[1] + 1);
    }
    pppiStack_1d8 = (int ***)wxBitmap::vftable;
    uStack_ec._0_1_ = 0xb;
    if (((iStack_d4 == 2) || (iStack_d4 == 4)) && (&pppiStack_1d8 != (int ****)(param_1_00 + 0x17)))
    {
      FUN_0083ea60(param_1_00 + 0x17);
    }
    iVar9 = (int)ppiVar10 + -1;
    if ((*(byte *)(param_1_00 + 0x29) & 8) != 0) {
      iVar9 = 1;
    }
    ppiVar13 = ppiStack_1d4;
    if (ppiStack_1d4 != (int **)0x0) {
      ppiVar13 = (int **)ppiStack_1d4[3];
    }
    pppiStack_1c4 = (int ***)((int)ppiStack_198 + -1 + (int)ppuStack_1cc);
    piVar8 = (int *)(((int)piStack_1c8 / 2 - (int)ppiVar13 / 2) + iVar9);
    if (iStack_d4 == 4) {
      pppiStack_1c4 = (int ***)((int)pppiStack_1c4 + 1);
      piVar8 = (int *)((int)piVar8 + 1);
    }
    (**(code **)(*(int *)param_1[2] + 0x164))(&pppiStack_1d8,pppiStack_1c4,piVar8,1);
    *ppiStack_158 = (int *)pppiStack_1c4;
    ppiStack_158[1] = piVar8;
    ppiStack_158[2] = piVar12;
    ppiStack_158[3] = piStack_1c8;
    uStack_ec = (undefined *)CONCAT31(uStack_ec._1_3_,10);
    FUN_008f7630();
  }
  *ppiStack_150 = (int *)ppiVar11;
  ppiStack_150[1] = (int *)ppiVar10;
  ppiStack_150[2] = (int *)ppuStack_1cc;
  ppiStack_150[3] = piStack_1c8;
  (**(code **)(*(int *)param_1[2] + 0xc0))();
  _free(pvStack_100);
  if (local_110[3] < (undefined *)0x8) {
    local_110[3] = (int **)0x7;
    local_110[2] = (int **)0x0;
    uStack_118 = uStack_118 & 0xffff0000;
    _free(unaff_EBP);
    if (unaff_ESI < (int **)0x8) {
      ExceptionList = local_f4;
      ___security_check_cookie_4();
      return;
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puStack_13c);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(uStack_118);
}



void __thiscall FUN_00a114b0(int param_1_00,undefined4 param_1,int param_2,undefined4 param_4)

{
  char cVar1;
  int iVar2;
  void *unaff_EBP;
  void *unaff_EDI;
  int iVar3;
  undefined *puVar4;
  int iStack_50;
  uint uStack_4c;
  int *piStack_30;
  int iStack_2c;
  int iStack_18;
  int *apiStack_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  iVar2 = param_2;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdde78;
  local_c = ExceptionList;
  uStack_4c = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  iStack_50 = param_1_00 + 0x14;
  (**(code **)(**(int **)(param_2 + 8) + 0x50))();
  puVar4 = (undefined *)&param_1;
  (**(code **)(**(int **)(iVar2 + 8) + 0xa4))(param_4,&stack0xffffffc4,puVar4,0,0,0);
  FUN_004325b6(L"ABCDEFXj");
  iVar3 = 0;
  (**(code **)(**(int **)(iVar2 + 8) + 0xa4))(&uStack_4c,&iStack_50,apiStack_14,0,0);
  _free(unaff_EDI);
  if (7 < uStack_4c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(puVar4);
  }
  uStack_4c = 7;
  iStack_50 = 0;
  if (iStack_18 != 0x10) {
    if (*(int *)(param_1_00 + 0x60) == 0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *(int *)(*(int *)(param_1_00 + 0x60) + 8);
    }
    iVar3 = iVar2 + 3 + iVar3;
  }
  cVar1 = (**(code **)(iRam00000000 + 0x10))();
  if (cVar1 != '\0') {
    if (iRam00000004 == 0) {
      iVar2 = 0;
    }
    else {
      iVar2 = *(int *)(iRam00000004 + 8);
    }
    iVar3 = iVar3 + 3 + iVar2;
    iVar2 = iRam00000004;
    if (iRam00000004 != 0) {
      iVar2 = *(int *)(iRam00000004 + 0xc);
    }
    if (iStack_2c <= iVar2) {
      iStack_2c = iVar2;
    }
  }
  iVar3 = iVar3 + 0x10;
  if ((*(byte *)(param_1_00 + 0xa4) & 0x80) != 0) {
    iVar3 = *(int *)(param_1_00 + 0x9c);
  }
  *apiStack_14[0] = iVar3;
  *piStack_30 = iVar3;
  piStack_30[1] = iStack_2c + 10;
  ExceptionList = unaff_EBP;
  return;
}



void FUN_00a11610(int *param_1,int param_2)

{
  short sVar1;
  char cVar2;
  uint uVar3;
  short *psVar4;
  int iVar5;
  undefined4 *puVar6;
  short *psVar7;
  int unaff_EBP;
  uint uVar8;
  int iVar9;
  undefined4 *local_130;
  int local_12c;
  uint local_128;
  undefined4 *local_124;
  int iStack_120;
  int *local_11c;
  void *local_118;
  int local_114;
  undefined local_10c [4];
  uint local_108;
  undefined4 local_f8;
  uint local_f4;
  void *local_f0;
  undefined local_e8 [4];
  uint local_e4;
  undefined auStack_d8 [4];
  int local_d4;
  uint local_d0;
  void *local_cc;
  int local_c4;
  void *pvStack_20;
  undefined4 uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bedc24;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_130;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xfffffec0;
  ExceptionList = &local_c;
  local_11c = param_1;
  local_12c = param_2;
  local_130 = (undefined4 *)0x0;
  FUN_004710ac(0);
  local_128 = *(uint *)(param_2 + 4);
  uVar8 = 0;
  local_4 = 0;
  if (local_128 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_2 + 4) <= uVar8)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0,uVar3);
      }
      local_114 = *(int *)(*(int *)(param_2 + 8) + uVar8 * 4);
      local_e4 = local_e4 & 0xffff0000;
      local_d0 = 7;
      local_d4 = 0;
      FID_conflict_assign(local_114 + 4,0,0xffffffff);
      local_cc = (void *)0x0;
      local_4._0_1_ = 1;
      if (local_d4 == 0) {
        psVar7 = &DAT_00d1fc10;
        do {
          psVar4 = psVar7;
          psVar7 = psVar4 + 1;
        } while (*psVar4 != 0);
        FID_conflict_assign(&DAT_00d1fc10,(int)(psVar4 + -0x68fe08) >> 1);
      }
      local_118 = operator_new(0xb8);
      local_4._0_1_ = 2;
      if (local_118 == (void *)0x0) {
        iVar5 = 0;
      }
      else {
        psVar7 = (short *)PTR_DAT_03236318;
        if (PTR_DAT_03236318 == (undefined *)0x0) {
          psVar7 = &DAT_00fae9c8;
        }
        local_108 = local_108 & 0xffff0000;
        local_f4 = 7;
        local_f8 = 0;
        psVar4 = psVar7;
        do {
          sVar1 = *psVar4;
          psVar4 = psVar4 + 1;
        } while (sVar1 != 0);
        FID_conflict_assign(psVar7,(int)psVar4 - (int)(psVar7 + 1) >> 1);
        local_f0 = (void *)0x0;
        local_130 = (undefined4 *)((uint)local_130 | 1);
        local_4 = CONCAT31(local_4._1_3_,3);
        iVar5 = FUN_0095b150(0,uVar8 + 1000,local_e8,local_10c,0,0);
      }
      local_4 = 1;
      if (((uint)local_130 & 1) != 0) {
        local_130 = (undefined4 *)((uint)local_130 & 0xfffffffe);
        _free(local_f0);
        if (7 < local_f4) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_108);
        }
        local_f4 = 7;
        local_f8 = 0;
        local_108 = local_108 & 0xffff0000;
      }
      iVar9 = local_114 + 0x28;
      cVar2 = (**(code **)(*(int *)(local_114 + 0x28) + 0x10))();
      if (cVar2 != '\0') {
        if (iVar5 + 0xa0 != iVar9) {
          FUN_0083ea60(iVar9);
        }
        *(undefined *)(iVar5 + 0x68) = 1;
      }
      (**(code **)(local_c4 + 0x6c))(iVar5);
      local_4 = local_4 & 0xffffff00;
      _free(local_cc);
      if (7 < local_d0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_e4);
      }
      uVar8 = uVar8 + 1;
      param_2 = local_12c;
      param_1 = local_11c;
    } while (uVar8 < local_128);
  }
  FUN_00910c30(&local_124);
  local_130 = local_124;
  local_12c = iStack_120;
  (**(code **)(*param_1 + 0x260))(&local_130,&local_12c);
  (**(code **)(*param_1 + 0x27c))(&iStack_120,&local_130);
  iVar5 = (**(code **)(*param_1 + 0x78))(&local_124);
  iVar5 = *(int *)(iVar5 + 4);
  puVar6 = (undefined4 *)operator_new(0x44);
  uStack_18._0_1_ = 5;
  local_130 = puVar6;
  if (puVar6 == (undefined4 *)0x0) {
    puVar6 = (undefined4 *)0x0;
  }
  else {
    FUN_00845b70();
    *puVar6 = wxAuiCommandCapture::vftable;
    puVar6[0x10] = 0;
  }
  uStack_18 = (uint)uStack_18._1_3_ << 8;
  FUN_0091bd90(puVar6);
  FUN_0091ca70(auStack_d8,unaff_EBP,unaff_EBP + iVar5);
  iVar5 = puVar6[0x10];
  FUN_0091bf10(1);
  uStack_18 = 0xffffffff;
  if (iVar5 < 1000) {
    FUN_0092de10();
  }
  else {
    FUN_0092de10();
  }
  ExceptionList = pvStack_20;
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_00a119b0(int *param_1_00,undefined4 param_1,int param_2,int *param_3)

{
  int iVar1;
  wchar_t *pwVar2;
  char cVar3;
  uint uVar4;
  undefined ***pppuVar5;
  wchar_t *pwVar6;
  uint uStack_74;
  int iStack_70;
  undefined4 uStack_6c;
  uint uStack_68;
  undefined **ppuStack_64;
  int *piStack_60;
  undefined **ppuStack_5c;
  undefined4 uStack_58;
  undefined auStack_54 [4];
  int iStack_50;
  undefined auStack_4c [12];
  int *local_40;
  uint uStack_3c;
  undefined4 uStack_2c;
  uint uStack_28;
  void *pvStack_24;
  void *pvStack_18;
  void *local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  uStack_10 = &LAB_00bedc80;
  local_14 = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_14;
  FUN_0094bd30(param_1);
  local_c = 0;
  (**(code **)(*local_40 + 0x50))(param_1_00 + 5,uVar4);
  piStack_60 = (int *)0x0;
  ppuStack_64 = wxBitmap::vftable;
  uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,1);
  if ((*param_3 != -1) && (param_3[1] != -1)) {
    FUN_008f4cb0(*param_3,param_3[1],0xffffffff);
  }
  uStack_68 = *(uint *)(param_2 + 4);
  iStack_70 = 0;
  uStack_74 = 0;
  if (uStack_68 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_2 + 4) <= uStack_74)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_2 + 8) + uStack_74 * 4);
      uStack_58 = 0;
      ppuStack_5c = wxBitmap::vftable;
      uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,2);
      if ((piStack_60 == (int *)0x0) || (cVar3 = (**(code **)(*piStack_60 + 4))(), cVar3 == '\0')) {
        pppuVar5 = (undefined ***)(iVar1 + 0x28);
        if (&ppuStack_5c != pppuVar5) goto LAB_00a11ac9;
      }
      else {
        pppuVar5 = &ppuStack_64;
LAB_00a11ac9:
        FUN_0083ea60(pppuVar5);
      }
      uStack_3c = uStack_3c & 0xffff0000;
      uStack_6c = 0;
      uStack_28 = 7;
      uStack_2c = 0;
      pwVar2 = L"ABCDEFGHIj";
      do {
        pwVar6 = pwVar2;
        pwVar2 = pwVar6 + 1;
      } while (*pwVar6 != L'\0');
      FID_conflict_assign(L"ABCDEFGHIj",(int)(pwVar6 + -0x6cda68) >> 1);
      pvStack_24 = (void *)0x0;
      uStack_10._0_1_ = 3;
      (**(code **)(*param_1_00 + 0x30))
                (auStack_54,auStack_4c,param_1,&local_40,&ppuStack_5c,1,0x10,&uStack_6c);
      _free(pvStack_24);
      if (7 < uStack_28) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_3c);
      }
      uStack_3c = uStack_3c & 0xffff0000;
      uStack_28 = 7;
      uStack_2c = 0;
      if (iStack_70 <= iStack_50) {
        iStack_70 = iStack_50;
      }
      uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,1);
      FUN_008f7630();
      uStack_74 = uStack_74 + 1;
    } while (uStack_74 < uStack_68);
  }
  uStack_10 = (undefined *)((uint)uStack_10 & 0xffffff00);
  FUN_008f7630();
  uStack_10 = (undefined *)0xffffffff;
  FUN_00457221();
  ExceptionList = pvStack_18;
  return iStack_70 + 2;
}



undefined4 * __thiscall FUN_00a11bf0(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = *param_1;
  if (param_1_00 + 1 != param_1 + 1) {
    FID_conflict_assign(param_1 + 1,0,0xffffffff);
  }
  if (param_1_00 + 10 != param_1 + 10) {
    FUN_0083ea60(param_1 + 10);
  }
  param_1_00[0xc] = param_1[0xc];
  param_1_00[0xd] = param_1[0xd];
  param_1_00[0xe] = param_1[0xe];
  param_1_00[0xf] = param_1[0xf];
  *(undefined *)(param_1_00 + 0x10) = *(undefined *)(param_1 + 0x10);
  return param_1_00;
}



void FUN_00a11c50(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00a10570(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_0086a880();
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a11cb0(int param_1_00,undefined4 param_1,uint param_2)

{
  int iVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce226;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    pvVar2 = operator_new(0x44);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = FUN_00a105e0(param_1);
    }
    iVar1 = *(int *)(param_1_00 + 4);
    local_4 = 0xffffffff;
    if (iVar3 != 0) {
      FUN_0086a0a0(iVar3,iVar1 * 4 >> 2,param_2);
    }
    uVar5 = 1;
    if (1 < param_2) {
      iVar3 = iVar1 * 4;
      do {
        iVar3 = iVar3 + 4;
        pvVar2 = operator_new(0x44);
        local_4 = 1;
        if (pvVar2 == (void *)0x0) {
          uVar4 = 0;
        }
        else {
          uVar4 = FUN_00a105e0(param_1);
        }
        local_4 = 0xffffffff;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar5 + iVar1))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 *)(*(int *)(param_1_00 + 8) + iVar3) = uVar4;
        uVar5 = uVar5 + 1;
      } while (uVar5 < param_2);
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_00a11de0(undefined4 *param_1)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bedccc;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *param_1 = wxAuiTabContainer::vftable;
  FUN_0086a600(uVar1);
  local_4 = 0;
  FUN_0086a600();
  local_4._0_1_ = 1;
  FUN_0086a600();
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  local_4._0_1_ = 2;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  pvVar2 = operator_new(0xa8);
  local_4._0_1_ = 3;
  if (pvVar2 == (void *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = FUN_00a0cd40();
  }
  local_4 = CONCAT31(local_4._1_3_,2);
  param_1[1] = uVar3;
  FUN_00a0d3a0(0x6b,0x10,&PTR_vftable_03238cc8,&PTR_vftable_03238cc8);
  FUN_00a0d3a0(0x6c,0x20,&PTR_vftable_03238cc8,&PTR_vftable_03238cc8);
  FUN_00a0d3a0(0x6a,0x20,&PTR_vftable_03238cc8,&PTR_vftable_03238cc8);
  FUN_00a0d3a0(0x65,0x20,&PTR_vftable_03238cc8,&PTR_vftable_03238cc8);
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00a11ee0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bedd11;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxAuiTabContainer::vftable;
  local_4 = 2;
  if ((undefined4 *)param_1[1] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[1])(1,uVar1);
  }
  local_4._0_1_ = 1;
  FUN_00a0cc00();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00a0cc00();
  local_4 = 0xffffffff;
  FUN_00a11c50();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a11f60(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54 [2];
  undefined2 local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined **local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bedd38;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_5c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  local_38 = 7;
  local_3c = 0;
  local_4c = 0;
  local_34 = 0;
  local_28 = 0;
  local_2c = wxBitmap::vftable;
  local_24 = 0;
  local_20 = 0;
  local_1c = 0;
  local_18 = 0;
  local_4 = 0;
  FUN_00a11bf0(param_2);
  local_54[0] = param_1;
  FUN_00a11cb0(local_54,1);
  if (*(int *)(param_1_00 + 4) != 0) {
    local_58 = *(undefined4 *)(param_1_00 + 0x38);
    local_5c = *(undefined4 *)(param_1_00 + 0x34);
    (**(code **)(**(int **)(param_1_00 + 4) + 0xc))
              (&local_5c,*(undefined4 *)(param_1_00 + 0xc),uVar1);
  }
  local_4 = 0xffffffff;
  FUN_00a0e040();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a12050(int param_1_00,undefined4 param_1,undefined4 param_2,uint param_3)

{
  uint uVar1;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54 [2];
  undefined2 local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined **local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bedd38;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_5c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff98;
  ExceptionList = &local_c;
  local_38 = 7;
  local_3c = 0;
  local_4c = 0;
  local_34 = 0;
  local_28 = 0;
  local_2c = wxBitmap::vftable;
  local_24 = 0;
  local_20 = 0;
  local_1c = 0;
  local_18 = 0;
  local_4 = 0;
  FUN_00a11bf0(param_2);
  local_54[0] = param_1;
  if (param_3 < *(uint *)(param_1_00 + 0xc)) {
    FUN_00a10660(local_54,param_3,1);
  }
  else {
    FUN_00a11cb0(local_54,1);
  }
  if (*(int *)(param_1_00 + 4) != 0) {
    local_58 = *(undefined4 *)(param_1_00 + 0x38);
    local_5c = *(undefined4 *)(param_1_00 + 0x34);
    (**(code **)(**(int **)(param_1_00 + 4) + 0xc))
              (&local_5c,*(undefined4 *)(param_1_00 + 0xc),uVar1);
  }
  local_4 = 0xffffffff;
  FUN_00a0e040();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00a12160(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined local_54 [68];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bedd68;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_54;
  ExceptionList = &local_c;
  iVar1 = FUN_00a0a9c0(param_1);
  if (iVar1 != -1) {
    uVar2 = FUN_00a0aa30(iVar1);
    FUN_00a105e0(uVar2);
    local_4 = 0;
    FUN_00a10090(param_1);
    FUN_00a12050(param_1,local_54,param_2);
    local_4 = 0xffffffff;
    FUN_00a0e040();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall
FUN_00a12210(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  uint uVar1;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined4 local_30;
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beddb6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  FUN_0043c211("control");
  local_4 = 0;
  FUN_0081b619(param_1,param_2,param_3,param_4,param_5,&DAT_032c0398,local_54);
  local_4._0_1_ = 2;
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  FUN_00a11de0(uVar1);
  *param_1_00 = wxAuiTabCtrl::vftable;
  param_1_00[0x65] = wxAuiTabCtrl::vftable;
  local_4._0_1_ = 3;
  param_1_00[0x76] = 0;
  param_1_00[0x77] = 0;
  FUN_004325b6(L"wxAuiTabCtrl");
  local_4 = CONCAT31(local_4._1_3_,4);
  if (param_1_00 + 0x3a != &local_30) {
    FID_conflict_assign(&local_30,0,0xffffffff);
  }
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  param_1_00[0x76] = DAT_03238d0c;
  param_1_00[0x77] = DAT_03238d10;
  *(undefined *)(param_1_00 + 0x79) = 0;
  param_1_00[0x7a] = 0;
  param_1_00[0x7b] = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_00a12370(void)

{
  FUN_00a13a30();
  return;
}



void __fastcall FUN_00a12380(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf0168;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxAuiTabCtrl::vftable;
  param_1[0x65] = wxAuiTabCtrl::vftable;
  local_4 = 0;
  FUN_00a11ee0(uVar1);
  local_4 = 0xffffffff;
  FUN_0044cd6b();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00a123f0(int *param_1)

{
  uint uVar1;
  int *piVar2;
  void *pvVar3;
  undefined4 uVar4;
  int iVar5;
  undefined *puVar6;
  uint unaff_EDI;
  int unaff_retaddr;
  undefined4 local_120;
  undefined4 uStack_11c;
  undefined auStack_118 [4];
  undefined4 uStack_114;
  undefined auStack_10c [4];
  uint local_108 [2];
  uint uStack_100;
  void *pvStack_fc;
  undefined4 uStack_f8;
  uint uStack_f4;
  void *pvStack_f0;
  void *pvStack_34;
  undefined4 uStack_2c;
  undefined4 uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bede3f;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xfffffed0;
  ExceptionList = &local_c;
  local_120 = 0;
  FUN_004325b6(L"wxAuiNotebook");
  local_4 = 0;
  (**(code **)(*param_1 + 0x5c))(local_108,uVar1);
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_f0);
  if (7 < uStack_f4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_108[0]);
  }
  param_1[0xdf] = unaff_retaddr;
  param_1[0xd3] = -1;
  param_1[0xd4] = 0x1504;
  param_1[0xd5] = 0;
  param_1[0xdd] = 0x14;
  piVar2 = (int *)(**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
  if (param_1 + 0xdb != piVar2) {
    FUN_0083ea60(piVar2);
  }
  piVar2 = (int *)(**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
  if (param_1 + 0xd9 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  (**(code **)(param_1[0xd9] + 100))(0x5c);
  pvVar3 = operator_new(0xa8);
  uStack_14 = 1;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_00a0cd40();
  }
  uStack_14 = 0xffffffff;
  FUN_00a0b3e0(uVar4);
  pvVar3 = operator_new(0x164);
  uStack_14 = 2;
  if (pvVar3 == (void *)0x0) {
    iVar5 = 0;
  }
  else {
    FUN_0043c211("panel");
    uStack_14 = CONCAT31(uStack_14._1_3_,3);
    unaff_EDI = 1;
    local_120 = 0;
    uStack_11c = 0;
    iVar5 = FUN_009d0790(param_1,0xffffffff,&stack0xfffffed8,&local_120,0,auStack_118);
  }
  param_1[0xd5] = iVar5;
  uStack_14 = 0xffffffff;
  if ((unaff_EDI & 1) != 0) {
    _free(pvStack_fc);
    if (7 < uStack_100) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_114);
    }
  }
  (**(code **)(*(int *)param_1[0xd5] + 0x288))(0xffffffff,0xffffffff,200,200,0);
  (**(code **)(*(int *)param_1[0xd5] + 0xcc))(0);
  FUN_00a1ccb0();
  FUN_00a1a5d0();
  FUN_00a153a0(0x3ff0000000000000,0x3ff0000000000000);
  FUN_004325b6();
  uStack_2c = 5;
  puVar6 = (undefined *)FUN_00445933();
  uStack_2c._0_1_ = 6;
  if (puVar6 != auStack_10c) {
    FID_conflict_assign();
  }
  *(undefined4 *)(puVar6 + 0x5c) = 3;
  FUN_00445ccb(0x400,0);
  uVar4 = FUN_00445ccb(2,1);
  FUN_00a1c410(param_1[0xd5],uVar4);
  uStack_2c = CONCAT31(uStack_2c._1_3_,5);
  FUN_00445bb2();
  uStack_2c = 0xffffffff;
  _free(pvStack_f0);
  if (7 < uStack_f4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1();
  }
  uStack_f4 = 7;
  uStack_f8 = 0;
  local_108[0] = local_108[0] & 0xffff0000;
  FUN_00a18ce0();
  ExceptionList = pvStack_34;
  return;
}



void __fastcall FUN_00a12710(int *param_1)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  uint uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bedea0;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = (int)wxAuiNotebook::vftable;
  param_1[0x65] = (int)wxAuiNotebook::vftable;
  local_4 = 4;
  FUN_0091e7c0(uVar4);
  iVar1 = param_1[0xc5];
  if (iVar1 != 0) {
    while (iVar1 != 0) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[0xc5] == 0)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar2 = **(int ***)param_1[0xc6];
      (**(code **)(*piVar2 + 0xcc))(0);
      cVar3 = (**(code **)(*param_1 + 0x37c))(0);
      if (cVar3 != '\0') {
        (**(code **)(*piVar2 + 0x50))();
      }
      iVar1 = param_1[0xc5];
    }
  }
  FUN_00a140b0();
  local_4._0_1_ = 3;
  FUN_00921450();
  local_4._0_1_ = 2;
  FUN_00921450();
  local_4._0_1_ = 1;
  FUN_00a11ee0();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00a19e90();
  local_4 = 0xffffffff;
  param_1[0x71] = (int)wxControlContainerBase::vftable;
  FUN_004564c0();
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_00a12850(int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  int *piVar7;
  uint uVar8;
  int local_c8;
  void *local_c4 [46];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bedee7;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff28;
  ExceptionList = &local_c;
  iVar4 = *(int *)(param_1 + 0x34c);
  if ((-1 < iVar4) && (iVar4 < *(int *)(param_1 + 0x314))) {
    puVar3 = (undefined4 *)FUN_00a0aa30(iVar4);
    cVar1 = FUN_00a0b890(*puVar3,&local_c8,local_c4);
    if (cVar1 != '\0') {
      ExceptionList = local_c;
      return local_c8;
    }
  }
  local_c8 = param_1 + 0x1d8;
  iVar4 = FUN_00a14090(uVar2);
  uVar2 = *(uint *)(iVar4 + 4);
  uVar8 = 0;
  if (uVar2 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar4 + 4) <= uVar8)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar5 = FUN_008507a0(L"dummy");
      if (iVar5 != 0) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar4 + 4) <= uVar8)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        ExceptionList = local_c;
        return *(undefined4 *)(*(int *)(*(int *)(*(int *)(iVar4 + 8) + uVar8 * 4) + 0x50) + 0x184);
      }
      uVar8 = uVar8 + 1;
    } while (uVar8 < uVar2);
  }
  local_c4[0] = operator_new(0x18c);
  local_4 = 0;
  if (local_c4[0] == (void *)0x0) {
    iVar4 = 0;
  }
  else {
    iVar4 = FUN_00a0b0a0();
  }
  local_4 = 0xffffffff;
  *(undefined4 *)(iVar4 + 0x188) = *(undefined4 *)(param_1 + 0x374);
  local_c4[0] = operator_new(0x1f0);
  local_4 = 1;
  if (local_c4[0] == (void *)0x0) {
    uVar6 = 0;
  }
  else {
    iVar5 = *(int *)(param_1 + 0x350);
    *(int *)(param_1 + 0x350) = iVar5 + 1;
    uVar6 = FUN_00a12210(param_1,iVar5,&DAT_03238d0c,&DAT_03238d04,0x240000);
  }
  *(undefined4 *)(iVar4 + 0x184) = uVar6;
  local_4 = 0xffffffff;
  FUN_00a0de50(*(undefined4 *)(param_1 + 0x37c));
  piVar7 = (int *)(**(code **)(**(int **)(param_1 + 0x30c) + 4))();
  iVar5 = *(int *)(iVar4 + 0x184);
  if (*(undefined4 **)(iVar5 + 0x198) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(iVar5 + 0x198))(1);
  }
  *(int **)(iVar5 + 0x198) = piVar7;
  if (piVar7 != (int *)0x0) {
    (**(code **)(*piVar7 + 8))(*(undefined4 *)(iVar5 + 0x1d4));
  }
  iVar5 = FUN_00445933();
  local_4 = 2;
  *(undefined4 *)(iVar5 + 0x5c) = 5;
  uVar6 = FUN_00445ccb(0x400,0);
  FUN_00a1c410(iVar4,uVar6);
  local_4 = 0xffffffff;
  FUN_00445bb2();
  FUN_00a18ce0();
  ExceptionList = local_c;
  return *(undefined4 *)(iVar4 + 0x184);
}



void __fastcall FUN_00a12ac0(int *param_1)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  undefined4 uVar6;
  int iVar7;
  int iVar8;
  int unaff_retaddr;
  int *piStack_1dc;
  int aiStack_1d8 [3];
  void *local_1cc;
  undefined local_1c8 [184];
  undefined4 auStack_110 [16];
  undefined uStack_d0;
  undefined auStack_cc [92];
  undefined4 uStack_70;
  void *pvStack_14;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bedf4d;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&piStack_1dc;
  ExceptionList = &local_c;
  (**(code **)(*param_1 + 0x27c))(local_1c8,&local_1cc,DAT_0323f878 ^ (uint)&stack0xfffffe14);
  iVar3 = FUN_00a0b780(uStack_4);
  iVar8 = 0;
  if ((iVar3 != 0) && (uVar4 = (**(code **)(*param_1 + 0x358))(), 1 < uVar4)) {
    aiStack_1d8[0] = -1;
    piStack_1dc = (int *)0x0;
    cVar2 = FUN_00a0b890(iVar3,&piStack_1dc,aiStack_1d8);
    if ((cVar2 != '\0') && ((piStack_1dc != (int *)0x0 && (aiStack_1d8[0] != -1)))) {
      uVar4 = (**(code **)(*param_1 + 0x358))();
      if (uVar4 < 3) {
        piVar5 = (int *)FUN_0043d8d2(&local_1cc);
        iVar3 = *piVar5 / 2;
        iVar7 = piVar5[1] / 2;
      }
      else {
        piVar5 = (int *)(**(code **)(*param_1 + 0x3d0))(&local_1cc);
        iVar3 = *piVar5;
        iVar7 = piVar5[1];
      }
      local_1cc = operator_new(0x18c);
      local_c = (void *)0x0;
      if (local_1cc != (void *)0x0) {
        iVar8 = FUN_00a0b0a0();
      }
      *(undefined4 *)(iVar8 + 0x164) = 0;
      *(undefined4 *)(iVar8 + 0x168) = 0;
      *(int *)(iVar8 + 0x16c) = iVar3;
      *(int *)(iVar8 + 0x170) = iVar7;
      local_c = (void *)0xffffffff;
      *(int *)(iVar8 + 0x188) = param_1[0xdd];
      local_1cc = operator_new(0x1f0);
      local_c = (void *)0x1;
      if (local_1cc == (void *)0x0) {
        uVar6 = 0;
      }
      else {
        iVar3 = param_1[0xd4];
        param_1[0xd4] = iVar3 + 1;
        uVar6 = FUN_00a12210(param_1,iVar3,&DAT_03238d0c,&DAT_03238d04,0x240000);
      }
      *(undefined4 *)(iVar8 + 0x184) = uVar6;
      local_c = (void *)0xffffffff;
      uVar6 = (**(code **)(*(int *)param_1[0xc3] + 4))();
      FUN_00a0a0d0(uVar6);
      FUN_00a0de50(param_1[0xdf]);
      piVar5 = *(int **)(iVar8 + 0x184);
      iVar3 = FUN_00445933();
      local_c = (void *)0x2;
      *(undefined4 *)(iVar3 + 0x5c) = 3;
      uVar6 = FUN_00445ccb(0x400,0);
      FUN_00445a53(uVar6);
      local_c._0_1_ = 4;
      FUN_00445bb2();
      if (unaff_retaddr == 0x10) {
        uStack_70 = 4;
      }
      else if (unaff_retaddr == 0x20) {
        uStack_70 = 2;
      }
      else if (unaff_retaddr == 0x40) {
        uStack_70 = 1;
      }
      else if (unaff_retaddr == 0x80) {
        uStack_70 = 3;
      }
      FUN_00a1c830(iVar8,auStack_cc,&stack0xfffffe1c);
      FUN_00a18ce0();
      piVar1 = piStack_1dc;
      uVar6 = FUN_00a0aa30(aiStack_1d8[0]);
      FUN_00a105e0(uVar6);
      local_c = (void *)CONCAT31(local_c._1_3_,5);
      uStack_d0 = 0;
      FUN_00a10090(auStack_110[0]);
      if (piVar1[0x68] != 0) {
        FUN_00a0a910(0);
        FUN_00a0aed0();
        (**(code **)(*piVar1 + 0x15c))(1,0);
      }
      FUN_00a12050(auStack_110[0],auStack_110,0);
      if (piVar1[0x68] == 0) {
        FUN_00a0bb20();
      }
      FUN_00a0b7e0();
      FUN_00a0aed0();
      (**(code **)(*piVar5 + 0x15c))(1,0);
      param_1[0xd3] = -1;
      FUN_00a0f3b0(auStack_110[0]);
      FUN_00a10130();
      local_c = (void *)CONCAT31(local_c._1_3_,4);
      FUN_00a0e040();
      local_c = (void *)0xffffffff;
      FUN_00445bb2();
    }
  }
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00a12ef0(int *param_1)

{
  int *piVar1;
  char cVar2;
  int *piVar3;
  undefined4 uVar4;
  int iVar5;
  int *piVar6;
  undefined4 local_48;
  undefined4 local_44 [2];
  int iStack_3c;
  undefined4 uStack_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined auStack_24 [4];
  undefined auStack_20 [12];
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  int iStack_4;
  
  iStack_4 = -1;
  puStack_8 = &LAB_00bedf90;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00910c30(&local_34,DAT_0323f878 ^ (uint)&stack0xffffffa8);
  local_48 = local_34;
  local_44[0] = local_30;
  (**(code **)(*param_1 + 0x260))(&local_48,local_44);
  piVar1 = *(int **)(iStack_4 + 8);
  uStack_2c = 0;
  uStack_28 = 0;
  piVar3 = (int *)FUN_00a0b980(&local_34);
  if (piVar3 == piVar1) {
    if (piVar1 != (int *)0x0) {
      uVar4 = FUN_008f7ad0(1);
      local_c = (void *)0x0;
      (**(code **)(*piVar1 + 400))(uVar4);
      local_c = (void *)0xffffffff;
      FUN_008f7630();
    }
    (**(code **)(param_1[0x76] + 0x5c))();
    if ((*(byte *)(param_1 + 0xdf) & 0x20) != 0) {
      (**(code **)(*piVar3 + 0x260))(&stack0xffffffb0,&stack0xffffffb4);
      cVar2 = FUN_00a0c830(iStack_3c,uStack_38,&stack0xffffffb4);
      if (cVar2 != '\0') {
        iStack_4 = *(int *)(iStack_4 + 0x60);
        iVar5 = FUN_00a0a9c0(uStack_38);
        if ((((iStack_4 == iVar5) || (iVar5 == -1)) ||
            ((iVar5 < iStack_4 && (param_1[0xde] <= iStack_3c)))) ||
           ((iStack_4 < iVar5 && (iStack_3c <= param_1[0xde])))) {
          param_1[0xde] = iStack_3c;
        }
        else {
          uVar4 = FUN_00a0a9a0(iStack_4);
          FUN_00a12160(uVar4,iVar5);
          FUN_00a0a910(iVar5);
          FUN_00a0aed0();
          (**(code **)(*piVar3 + 0x15c))(1,0);
          param_1[0xde] = iStack_3c;
        }
      }
    }
  }
  else {
    if ((*(byte *)(param_1 + 0xdf) & 0x40) != 0) {
      piVar6 = (int *)FUN_00910c10(&iStack_3c);
      if (piVar6 == (int *)0x0) {
        ExceptionList = pvStack_14;
        return;
      }
      cVar2 = FUN_0083e950(&PTR_u_wxFrame_03239cfc);
      if (cVar2 == '\0') {
        do {
          cVar2 = FUN_0083e950(&PTR_u_wxAuiTabCtrl_0323f12c);
          if (cVar2 != '\0') {
            if ((piVar6 != (int *)0x0) && ((int *)piVar6[0x11] != param_1)) {
              FUN_007b0d3e(&stack0xffffffb4);
              (**(code **)(*piVar6 + 0x25c))(&stack0xffffffb4,&local_48);
              (**(code **)(param_1[0x76] + 0x58))(&stack0xffffffac);
              ExceptionList = pvStack_14;
              return;
            }
            break;
          }
          piVar6 = (int *)piVar6[0x11];
        } while (piVar6 != (int *)0x0);
      }
      else if (piVar3 == (int *)0x0) {
        ExceptionList = pvStack_14;
        return;
      }
    }
    if ((1 < (uint)param_1[0xc5]) && ((*(byte *)(param_1 + 0xdf) & 0x10) != 0)) {
      if (piVar1 != (int *)0x0) {
        uVar4 = FUN_008f7ad0(0x16);
        local_c = (void *)0x1;
        (**(code **)(*piVar1 + 400))(uVar4);
        local_c = (void *)0xffffffff;
        FUN_008f7630();
      }
      if (piVar3 == (int *)0x0) {
        FUN_00a1bae0(param_1[0xd5],&local_34,&uStack_2c);
      }
      else {
        FUN_0091aed0(auStack_24);
        (**(code **)(*param_1 + 0x25c))(auStack_24,auStack_20);
        (**(code **)(param_1[0x76] + 0x58))(&uStack_2c);
      }
    }
  }
  ExceptionList = pvStack_14;
  return;
}



// WARNING: Removing unreachable block (ram,0x00a134ca)

void __thiscall FUN_00a13220(int *param_1_00,int param_1)

{
  int *piVar1;
  undefined4 uVar2;
  char cVar3;
  undefined4 uVar4;
  int *piVar5;
  int *piVar6;
  int iVar7;
  undefined4 *puVar8;
  int iVar9;
  int **ppiVar10;
  int *piStack_2d0;
  void *pvStack_2cc;
  undefined4 uStack_2c8;
  int local_2c4;
  int *local_2c0;
  undefined4 uStack_2bc;
  int *apiStack_2b8 [2];
  int *piStack_2b0;
  void *pvStack_2ac;
  undefined4 uStack_2a8;
  undefined4 uStack_2a4;
  undefined auStack_2a0 [8];
  int iStack_298;
  int iStack_294;
  undefined auStack_1dc [8];
  int *piStack_1d4;
  char cStack_180;
  undefined4 uStack_17c;
  undefined4 uStack_178;
  int *piStack_174;
  undefined4 auStack_170 [13];
  undefined4 uStack_13c;
  undefined4 uStack_134;
  undefined uStack_130;
  undefined **appuStack_e8 [2];
  int *piStack_e0;
  undefined auStack_8c [4];
  int *piStack_88;
  int *piStack_84;
  undefined4 uStack_80;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined uStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee016;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&piStack_2d0;
  ExceptionList = &local_c;
  local_2c0 = param_1_00 + 0x76;
  local_2c4 = param_1;
  (**(code **)(param_1_00[0x76] + 0x5c))(DAT_0323f878 ^ (uint)&stack0xfffffd20);
  piVar6 = *(int **)(param_1 + 8);
  if (piVar6 == (int *)0x0) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\aui\\auibook.cpp",0xede,"wxAuiNotebook::OnTabEndDrag","src_tabs",
                   L"no source object?");
    }
  }
  else {
    uVar4 = FUN_008f7ad0(1);
    uStack_4 = 0;
    (**(code **)(*piVar6 + 400))(uVar4);
    puStack_8 = (undefined *)0xffffffff;
    FUN_008f7630();
    FUN_00910c30(&uStack_2bc);
    piStack_2d0 = apiStack_2b8[0];
    (**(code **)(*param_1_00 + 0x260))(&stack0xfffffd2c,&piStack_2d0);
    piStack_2b0 = piStack_2d0;
    pvStack_2ac = pvStack_2cc;
    if ((*(byte *)(param_1_00 + 0xdf) & 0x40) != 0) {
      for (piVar5 = (int *)FUN_00910c10(apiStack_2b8); piVar5 != (int *)0x0;
          piVar5 = (int *)piVar5[0x11]) {
        cVar3 = FUN_0083e950(&PTR_u_wxAuiTabCtrl_0323f12c);
        if (cVar3 != '\0') {
          if ((piVar5 != (int *)0x0) && (piVar1 = (int *)piVar5[0x11], piVar1 != param_1_00)) {
            FUN_00a0e000(DAT_032ea444,param_1_00[0x10]);
            uStack_17c = *(undefined4 *)(local_2c4 + 0x60);
            cStack_180 = '\0';
            uStack_4 = 1;
            piStack_1d4 = param_1_00;
            uStack_178 = uStack_17c;
            piStack_174 = param_1_00;
            (**(code **)(*(int *)piVar1[0x1c] + 0x18))(auStack_1dc);
            if (cStack_180 != '\0') {
              piVar6 = (int *)FUN_00a0a9a0(*(undefined4 *)(local_2c4 + 0x60));
              piStack_2d0 = piVar1;
              goto LAB_00a13414;
            }
            (**(code **)(*local_2c0 + 0x5c))();
            goto LAB_00a133d2;
          }
          break;
        }
      }
    }
    if (((*(byte *)(param_1_00 + 0xdf) & 0x10) != 0) && (1 < (uint)param_1_00[0xc5])) {
      uVar4 = FUN_00910c10(apiStack_2b8);
      iVar7 = FUN_00a0ba60(uVar4);
      piStack_2d0 = (int *)0xffffffff;
      if (iVar7 == 0) {
        uStack_2a8 = 0;
        uStack_2a4 = 0;
        FUN_00a1b510(auStack_2a0,param_1_00[0xd5],&piStack_2b0,&uStack_2a8);
        if ((iStack_298 < 1) || (iStack_294 < 1)) goto LAB_00a139d9;
        pvStack_2cc = operator_new(0x18c);
        uStack_4 = 4;
        if (pvStack_2cc == (void *)0x0) {
          iVar7 = 0;
        }
        else {
          iVar7 = FUN_00a0b0a0();
        }
        uStack_4 = 0xffffffff;
        puVar8 = (undefined4 *)(**(code **)(*param_1_00 + 0x3d0))(&pvStack_2cc);
        uVar4 = *puVar8;
        uVar2 = puVar8[1];
        *(undefined4 *)(iVar7 + 0x164) = 0;
        *(undefined4 *)(iVar7 + 0x168) = 0;
        *(undefined4 *)(iVar7 + 0x16c) = uVar4;
        *(undefined4 *)(iVar7 + 0x170) = uVar2;
        *(int *)(iVar7 + 0x188) = param_1_00[0xdd];
        piStack_2d0 = (int *)operator_new(0x1f0);
        puStack_8 = (undefined *)0x5;
        if (piStack_2d0 == (int *)0x0) {
          uVar4 = 0;
        }
        else {
          iVar9 = param_1_00[0xd4];
          param_1_00[0xd4] = iVar9 + 1;
          uVar4 = FUN_00a12210(param_1_00,iVar9,&DAT_03238d0c,&DAT_03238d04,0x240000);
        }
        *(undefined4 *)(iVar7 + 0x184) = uVar4;
        puStack_8 = (undefined *)0xffffffff;
        uVar4 = (**(code **)(*(int *)param_1_00[0xc3] + 4))();
        FUN_00a0a0d0(uVar4);
        FUN_00a0de50(param_1_00[0xdf]);
        iVar9 = FUN_00445933();
        ppiVar10 = &piStack_2b0;
        uStack_4 = 6;
        *(undefined4 *)(iVar9 + 0x5c) = 3;
        uVar4 = FUN_00445ccb(0x400,0);
        FUN_00a1c830(iVar7,uVar4,ppiVar10);
        uStack_4 = 0xffffffff;
        FUN_00445bb2();
        FUN_00a18ce0();
        piVar5 = *(int **)(iVar7 + 0x184);
      }
      else {
        piVar5 = *(int **)(iVar7 + 0x184);
        if (piVar5 == piVar6) goto LAB_00a139d9;
        FUN_00615428(&local_2c0,apiStack_2b8);
        pvStack_2cc = (void *)0x0;
        FUN_00a0c830(local_2c0,uStack_2bc,&pvStack_2cc);
        if (pvStack_2cc != (void *)0x0) {
          piStack_2d0 = (int *)FUN_00a0a9c0(pvStack_2cc);
        }
      }
      uVar4 = FUN_00a0aa30(*(undefined4 *)(local_2c4 + 0x60));
      FUN_00a105e0(uVar4);
      uStack_4 = 7;
      uStack_130 = 0;
      FUN_00a10090(auStack_170[0]);
      if (piVar6[0x68] != 0) {
        FUN_00a0a910(0);
        FUN_00a0aed0();
        (**(code **)(*piVar6 + 0x15c))(1,0);
      }
      if (piStack_2d0 == (int *)0xffffffff) {
        piStack_2d0 = (int *)piVar5[0x68];
      }
      FUN_00a12050(auStack_170[0],auStack_170,piStack_2d0);
      if (piVar6[0x68] == 0) {
        FUN_00a0bb20();
      }
      FUN_00a0b7e0();
      FUN_00a0aed0();
      (**(code **)(*piVar5 + 0x15c))(1,0);
      param_1_00[0xd3] = -1;
      FUN_00a0f3b0(auStack_170[0]);
      FUN_00a10130();
      uStack_4 = 0xffffffff;
      FUN_00a0e040();
    }
    FUN_0092bd60(DAT_032ea44c,param_1_00[0x10]);
    auStack_8c[0] = 1;
    appuStack_e8[0] = wxAuiNotebookEvent::vftable;
    uStack_80 = 0;
    piStack_88 = *(int **)(local_2c4 + 0x60);
    uStack_4 = 8;
    piStack_e0 = param_1_00;
    piStack_84 = piStack_88;
    (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(appuStack_e8);
    uStack_4 = 0xffffffff;
    FUN_00a1f4e0();
  }
  goto LAB_00a139d9;
  while( true ) {
    if (piStack_2d0 == piVar6) goto LAB_00a133d2;
    piStack_2d0 = (int *)piStack_2d0[0x11];
    if (piStack_2d0 == (int *)0x0) break;
LAB_00a13414:
    cVar3 = (**(code **)(*piStack_2d0 + 0x11c))();
    if (cVar3 != '\0') break;
  }
  pvStack_2cc = (void *)FUN_00a0a9c0(piVar6);
  if (pvStack_2cc == (void *)0xffffffff) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\aui\\auibook.cpp",0xf1d,"wxAuiNotebook::OnTabEndDrag",
                   "main_idx != (-1)",L"no source page?");
    }
  }
  else {
    uVar4 = FUN_00a0aa30(pvStack_2cc);
    FUN_00a105e0(uVar4);
    uStack_4._0_1_ = 2;
    (**(code **)(*param_1_00 + 0x37c))(pvStack_2cc);
    (**(code **)(*piVar6 + 0x120))(piVar1);
    FUN_00615428(&uStack_2c8,&local_2c0);
    FUN_00a0c830(uStack_2c8,local_2c4,&stack0xfffffd2c);
    FUN_00a12050(uStack_134,&uStack_134,piVar5[0x68]);
    FUN_00a11f60(uStack_134,&uStack_134);
    FUN_00a0b7e0();
    FUN_00a0aed0();
    (**(code **)(*piVar5 + 0x15c))(1,0);
    FUN_00a0f3b0(uStack_13c);
    FUN_00a0e000(DAT_032ea44c,param_1_00[0x10]);
    uStack_2c = uRam00000060;
    uStack_14 = 3;
    piStack_84 = param_1_00;
    uStack_28 = uStack_2c;
    (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(auStack_8c);
    uStack_4._0_1_ = 2;
    FUN_00a1f4e0();
    uStack_4 = CONCAT31(uStack_4._1_3_,1);
    FUN_00a0e040();
  }
LAB_00a133d2:
  uStack_4 = 0xffffffff;
  FUN_00a1f4e0();
LAB_00a139d9:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00a13a10(undefined4 param_1_00,byte param_1)

{
  FUN_00a11ee0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00a13a30(undefined4 param_1_00,byte param_1)

{
  FUN_00a12380();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4
FUN_00a13a50(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  char cVar1;
  uint uVar2;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_0043c211("control");
  local_4 = 0;
  cVar1 = FUN_00936340(param_1,param_2,param_3,param_4,param_5,&DAT_032c0398,local_30);
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar2);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  FUN_00a123f0(param_5);
  ExceptionList = local_c;
  return 1;
}



void __thiscall
FUN_00a13b40(int *param_1_00,undefined4 param_1,int *param_2,undefined *param_3,char param_4,
            int *param_5)

{
  int iVar1;
  undefined ***unaff_EBX;
  uint unaff_retaddr;
  int *local_58;
  undefined auStack_54 [4];
  undefined2 uStack_50;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined **ppuStack_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee058;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_58;
  ExceptionList = &local_c;
  local_58 = param_5;
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    if (param_2 == (int *)0x0) goto LAB_00a13cf3;
  }
  else if (param_2 == (int *)0x0) {
    FUN_00840480("..\\..\\src\\aui\\auibook.cpp",0xc38,"wxAuiNotebook::InsertPage",&DAT_00d9105c,
                 L"page pointer must be non-NULL");
    goto LAB_00a13cf3;
  }
  (**(code **)(*param_2 + 0x120))(param_1_00,DAT_0323f878 ^ (uint)&stack0xffffff98);
  uStack_3c = 7;
  uStack_40 = 0;
  uStack_50 = 0;
  uStack_38 = 0;
  uStack_2c = 0;
  ppuStack_30 = wxBitmap::vftable;
  uStack_28 = 0;
  uStack_24 = 0;
  uStack_20 = 0;
  uStack_1c = 0;
  puStack_8 = (undefined *)0x0;
  local_58 = param_2;
  if (auStack_54 != param_3) {
    FID_conflict_assign(param_3,0,0xffffffff);
  }
  if (&ppuStack_30 != unaff_EBX) {
    FUN_0083ea60(unaff_EBX);
  }
  uStack_18 = param_1_00[0xc5] == 0;
  FUN_00a12050(param_2,&local_58,unaff_retaddr);
  iVar1 = FUN_00a12850();
  if (unaff_retaddr < *(uint *)(iVar1 + 0x1a0)) {
    FUN_00a12050(param_2,&local_58,unaff_retaddr);
  }
  else {
    FUN_00a11f60(param_2,&local_58);
  }
  (**(code **)(*param_1_00 + 0x3c8))();
  FUN_00a0b7e0();
  FUN_00a0aed0();
  if ((int)unaff_retaddr <= param_1_00[0xd3]) {
    param_1_00[0xd3] = param_1_00[0xd3] + 1;
  }
  if (param_4 != '\0') {
    FUN_00a0f3b0(param_2);
  }
  uStack_4 = 0xffffffff;
  FUN_00a0e040();
LAB_00a13cf3:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined __thiscall
FUN_00a13d20(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  undefined uVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea178;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x198) != 0) {
    uVar3 = FUN_009b7940(local_14,param_5);
    local_4 = 0;
    uVar1 = FUN_00a13b40(param_1,param_2,param_3,param_4,uVar3);
    local_4 = 0xffffffff;
    FUN_008f7630(uVar2);
    ExceptionList = local_c;
    return uVar1;
  }
  uVar1 = FUN_00a13b40(param_1,param_2,param_3,param_4,&PTR_vftable_03238cc8);
  ExceptionList = local_c;
  return uVar1;
}



void __thiscall
FUN_00a13df0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  
  uVar1 = (**(code **)(*param_1_00 + 0x358))(param_1,param_2,param_3,param_4);
  FUN_00a13b40(uVar1,param_1,param_2,param_3,param_4);
  return;
}



undefined __thiscall
FUN_00a13e20(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined **ppuVar4;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea178;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1_00[0x66] != 0) {
    uVar2 = FUN_009b7940(local_14,param_4);
    local_4 = 0;
    uVar3 = (**(code **)(*param_1_00 + 0x358))(param_1,param_2,param_3,uVar2);
    uVar1 = FUN_00a13b40(uVar3,param_1,param_2,param_3,uVar2);
    local_4 = 0xffffffff;
    FUN_008f7630();
    ExceptionList = local_c;
    return uVar1;
  }
  ppuVar4 = &PTR_vftable_03238cc8;
  uVar2 = (**(code **)(*param_1_00 + 0x358))
                    (param_1,param_2,param_3,&PTR_vftable_03238cc8,
                     DAT_0323f878 ^ (uint)&stack0xffffffe4);
  uVar1 = FUN_00a13b40(uVar2,param_1,param_2,param_3,ppuVar4);
  ExceptionList = local_c;
  return uVar1;
}



undefined4 __fastcall FUN_00a13f00(int param_1)

{
  if ((*(int *)(param_1 + 0x1c) != 1) && (*(int *)(param_1 + 0x1c) != 3)) {
    return 0;
  }
  return 1;
}



undefined4 __fastcall FUN_00a13f20(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x1c);
  if (((iVar1 != 4) && (iVar1 != 2)) && (iVar1 != 5)) {
    return 0;
  }
  return 1;
}



undefined ** FUN_00a13f40(void)

{
  return &PTR_u_wxAuiManagerEvent_0323f2a0;
}



undefined ** FUN_00a13f50(void)

{
  return &PTR_u_wxAuiManager_0323f2b8;
}



undefined ** FUN_00a13f60(void)

{
  return &PTR_u_wxPseudoTransparentFrame_0323f2d0;
}



undefined ** FUN_00a13f70(void)

{
  return &PTR_PTR_00d9bd54;
}



undefined * FUN_00a13f80(void)

{
  return &DAT_032ea830;
}



undefined ** FUN_00a13fb0(void)

{
  return &PTR_DAT_00d9bd5c;
}



undefined * FUN_00a13fc0(void)

{
  return &DAT_032ea884;
}



undefined4 __thiscall FUN_00a13fd0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x3a8);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00a26510(param_1,param_1_00,param_2,0xffffffff,0x2040084a);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 FUN_00a14060(void)

{
  char cVar1;
  
  cVar1 = FUN_0090dfd0(0x134);
  if (cVar1 == '\0') {
    cVar1 = FUN_0090dfd0(0x133);
    if (cVar1 == '\0') {
      return 1;
    }
  }
  return 0;
}



int __fastcall FUN_00a14090(int param_1)

{
  return param_1 + 0x4c;
}



void __fastcall FUN_00a140b0(int param_1)

{
  if (*(int *)(param_1 + 0x40) != 0) {
    FUN_0091c050(param_1);
  }
  return;
}



undefined4 __fastcall FUN_00a140c0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x40);
}



undefined4 __fastcall FUN_00a140d0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x44);
}



void __thiscall FUN_00a140e0(int param_1_00,undefined4 param_1)

{
  undefined4 unaff_retaddr;
  
  if (*(undefined4 **)(param_1_00 + 0x44) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1_00 + 0x44))(1);
    *(undefined4 *)(param_1_00 + 0x44) = unaff_retaddr;
    return;
  }
  *(undefined4 *)(param_1_00 + 0x44) = param_1;
  return;
}



void __thiscall FUN_00a14110(int param_1_00,int param_1)

{
  char cVar1;
  undefined4 uVar2;
  
  if (*(int *)(param_1_00 + 0x40) == 0) {
    *(undefined4 *)(param_1 + 0x28) = 0;
    return;
  }
  cVar1 = FUN_0083e950(&PTR_u_wxAuiFloatingFrame_0323f4f8);
  if (cVar1 != '\0') {
    uVar2 = FUN_00a25cb0();
    *(undefined4 *)(param_1 + 0x28) = uVar2;
    return;
  }
  *(int *)(param_1 + 0x28) = param_1_00;
  return;
}



undefined4 FUN_00a14180(int *param_1,int *param_2)

{
  if ((((*param_1 == *param_2) && (param_1[1] == param_2[1])) && (param_1[2] == param_2[2])) &&
     (param_1[3] == param_2[3])) {
    return 0;
  }
  return 1;
}



undefined __thiscall FUN_00a141d0(int *param_1_00,undefined4 param_1)

{
  undefined uVar1;
  uint uVar2;
  undefined4 uVar3;
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea178;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  uVar3 = FUN_00993330(param_1);
  local_4 = 0;
  uVar1 = (**(code **)(*param_1_00 + 0x54))(uVar3,uVar2);
  puStack_8 = (undefined *)0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_10;
  return uVar1;
}



undefined4 * __thiscall
FUN_00a14240(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxImage::vftable;
  FUN_00900d20(param_1,param_2,param_3,param_4);
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_00a142b0(int param_1_00,uint param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= param_1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  return *(int *)(param_1_00 + 8) + param_1 * 4;
}



undefined4 * __thiscall FUN_00a142f0(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00845a20(0,param_1);
  param_1_00[10] = 0;
  param_1_00[0xb] = 0;
  param_1_00[0xc] = 0;
  *(undefined *)(param_1_00 + 0xd) = 0;
  param_1_00[0xe] = 0;
  *param_1_00 = wxAuiManagerEvent::vftable;
  *(undefined *)((int)param_1_00 + 0x35) = 1;
  return param_1_00;
}



undefined4 * __fastcall FUN_00a14330(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x3c);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a60(param_1);
    *puVar1 = wxAuiManagerEvent::vftable;
    puVar1[10] = *(undefined4 *)(param_1 + 0x28);
    puVar1[0xb] = *(undefined4 *)(param_1 + 0x2c);
    puVar1[0xc] = *(undefined4 *)(param_1 + 0x30);
    *(undefined *)(puVar1 + 0xd) = *(undefined *)(param_1 + 0x34);
    *(undefined *)((int)puVar1 + 0x35) = *(undefined *)(param_1 + 0x35);
    puVar1[0xe] = *(undefined4 *)(param_1 + 0x38);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



int __thiscall FUN_00a143c0(int param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee238;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  *(undefined4 *)(param_1_00 + 0x10) = 0;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined4 *)(param_1_00 + 0x18) = 0;
  local_4 = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);
  *(undefined4 *)(param_1_00 + 0x20) = *(undefined4 *)(param_1 + 0x20);
  *(undefined4 *)(param_1_00 + 0x24) = *(undefined4 *)(param_1 + 0x24);
  *(undefined4 *)(param_1_00 + 0x28) = *(undefined4 *)(param_1 + 0x28);
  *(undefined4 *)(param_1_00 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);
  *(undefined *)(param_1_00 + 0x30) = *(undefined *)(param_1 + 0x30);
  *(undefined *)(param_1_00 + 0x32) = *(undefined *)(param_1 + 0x32);
  *(undefined *)(param_1_00 + 0x31) = *(undefined *)(param_1 + 0x31);
  FUN_0086a9a0(param_1);
  *(undefined4 *)(param_1_00 + 0xc) = *(undefined4 *)(param_1 + 0xc);
  *(undefined4 *)(param_1_00 + 0x10) = *(undefined4 *)(param_1 + 0x10);
  *(undefined4 *)(param_1_00 + 0x14) = *(undefined4 *)(param_1 + 0x14);
  *(undefined4 *)(param_1_00 + 0x18) = *(undefined4 *)(param_1 + 0x18);
  *(undefined *)(param_1_00 + 0x33) = *(undefined *)(param_1 + 0x33);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * FUN_00a14480(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x3c);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bd44c);
    *puVar1 = wxAuiManagerEvent::vftable;
    puVar1[10] = 0;
    puVar1[0xb] = 0;
    puVar1[0xc] = 0;
    *(undefined *)(puVar1 + 0xd) = 0;
    *(undefined *)((int)puVar1 + 0x35) = 1;
    puVar1[0xe] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 __fastcall FUN_00a14510(int *param_1)

{
  int *piVar1;
  int unaff_EBP;
  int unaff_ESI;
  uint uVar2;
  undefined4 local_18;
  uint local_14;
  int iStack_10;
  undefined4 uStack_c;
  undefined uStack_4;
  
  if (*(char *)(param_1 + 0x8d) != '\0') {
    local_18 = 100;
    local_14 = 100;
    (**(code **)(*param_1 + 0x27c))(&local_18,&local_14);
    piVar1 = param_1 + 0x90;
    param_1[0x8c] = unaff_ESI;
    param_1[0x8b] = unaff_EBP;
    *(undefined *)(param_1 + 0x8a) = uStack_4;
    (**(code **)(*piVar1 + 0x30))();
    if ((*(char *)(param_1 + 0x8a) != '\0') && (uVar2 = 0, 0 < param_1[0x8c])) {
      do {
        if (((uVar2 >> 2 & 2 | uVar2 & 4) >> 1 | ((uVar2 & 1) * 4 | uVar2 & 2) * 2) * 0x10 + 8 <
            (uint)*(byte *)(param_1 + 0x8a)) {
          iStack_10 = param_1[0x8b];
          local_18 = 0;
          uStack_c = 1;
          local_14 = uVar2;
          (**(code **)(*piVar1 + 0x48))(&local_18);
        }
        uVar2 = uVar2 + 1;
      } while ((int)uVar2 < param_1[0x8c]);
    }
    FUN_00927ee0(piVar1);
    (**(code **)(*param_1 + 0x15c))(1,0);
  }
  return 1;
}



void __fastcall FUN_00a14620(int param_1)

{
  char cVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined auStack_50 [12];
  int *piStack_44;
  undefined **ppuStack_40;
  undefined auStack_3c [28];
  int iStack_20;
  int iStack_1c;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bee280;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa4;
  ExceptionList = &local_c;
  FUN_0094be80(param_1);
  local_4 = 0;
  cVar1 = (**(code **)(*(int *)(param_1 + 0x240) + 0x2c))(uVar2);
  if (cVar1 == '\0') {
    uVar3 = FUN_008ff080(auStack_3c,2);
    local_4._0_1_ = 1;
    FUN_0095d7e0(uVar3,100);
    local_4._0_1_ = 2;
    (**(code **)(*ppuStack_40 + 0x60))(auStack_50);
    uStack_8._0_1_ = 1;
    FUN_008f7630();
    uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
    ppuStack_40 = wxObject::vftable;
    FUN_0083e850();
    uVar3 = FUN_008f8330(0x24);
    (**(code **)(*piStack_44 + 0x58))(uVar3);
    FUN_00993620(param_1 + 0xb8);
    local_4._0_1_ = 3;
    if (iStack_20 < iStack_1c) {
      do {
        uVar3 = FUN_00992f90();
        uVar4 = FUN_00992f50();
        uVar5 = FUN_00992f10();
        uVar6 = FUN_00992ed0();
        (**(code **)(*ppuStack_40 + 0x150))(uVar6,uVar5,uVar4,uVar3);
        FUN_00992ec0();
      } while (iStack_20 < iStack_1c);
    }
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_009933d0();
  }
  local_4 = 0xffffffff;
  FUN_00457221();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a14790(int *param_1_00,int param_1)

{
  if ((*(int *)(param_1 + 0x28) != param_1_00[0x8e]) ||
     (*(int *)(param_1 + 0x2c) != param_1_00[0x8f])) {
    param_1_00[0x8e] = *(int *)(param_1 + 0x28);
    param_1_00[0x8f] = *(int *)(param_1 + 0x2c);
    (**(code **)(*param_1_00 + 0x208))(*(undefined *)(param_1_00 + 0x8a));
    FUN_0091ae40(&stack0xffffffec);
    FUN_00927ee0(param_1_00 + 0x90);
    (**(code **)(*param_1_00 + 0x15c))(1,0);
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



int FUN_00a14860(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int unaff_EDI;
  
  iVar1 = *(int *)(unaff_EDI + 4);
  iVar3 = 0;
  uVar4 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_EDI + 4) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(unaff_EDI + 8) + uVar4 * 4);
      if (((*(int *)(iVar2 + 0x1c) == param_1) && (iVar3 < *(int *)(iVar2 + 0x20))) &&
         (*(char *)(iVar2 + 0x32) == '\0')) {
        iVar3 = *(int *)(iVar2 + 0x20);
      }
      uVar4 = uVar4 + 1;
    } while ((int)uVar4 < iVar1);
  }
  return iVar3;
}



int FUN_00a148d0(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int unaff_EDI;
  
  iVar1 = *(int *)(unaff_EDI + 4);
  iVar3 = 0;
  uVar4 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_EDI + 4) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(unaff_EDI + 8) + uVar4 * 4);
      if (((*(int *)(iVar2 + 0x5c) == param_1) && (*(int *)(iVar2 + 0x60) == param_2)) &&
         (iVar3 < *(int *)(iVar2 + 100))) {
        iVar3 = *(int *)(iVar2 + 100);
      }
      uVar4 = uVar4 + 1;
    } while ((int)uVar4 < iVar1);
  }
  return iVar3;
}



void FUN_00a14940(int param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  int unaff_EDI;
  
  iVar1 = *(int *)(unaff_EDI + 4);
  uVar3 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_EDI + 4) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(unaff_EDI + 8) + uVar3 * 4);
      if (((((*(byte *)(iVar2 + 0x58) & 1) == 0) && (*(int *)(iVar2 + 0x5c) == param_1)) &&
          (*(int *)(iVar2 + 0x60) == param_2)) && (param_3 <= *(int *)(iVar2 + 100))) {
        *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;
      }
      uVar3 = uVar3 + 1;
    } while ((int)uVar3 < iVar1);
  }
  return;
}



void FUN_00a149b0(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  int unaff_EDI;
  
  iVar1 = *(int *)(unaff_EDI + 4);
  uVar3 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_EDI + 4) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(unaff_EDI + 8) + uVar3 * 4);
      if (((((*(byte *)(iVar2 + 0x58) & 1) == 0) && (*(int *)(iVar2 + 0x5c) == param_1)) &&
          (*(int *)(iVar2 + 0x60) == param_2)) &&
         ((*(int *)(iVar2 + 100) == param_3 && (param_4 <= *(int *)(iVar2 + 0x68))))) {
        *(int *)(iVar2 + 0x68) = *(int *)(iVar2 + 0x68) + 1;
      }
      uVar3 = uVar3 + 1;
    } while ((int)uVar3 < iVar1);
  }
  return;
}



void FUN_00a14a30(int param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int in_EAX;
  int iVar3;
  uint uVar4;
  int iVar5;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  iVar1 = *(int *)(param_1 + 4);
  iVar3 = 0;
  iVar5 = 0;
  uVar4 = 0;
  local_8 = param_3;
  local_14 = param_3;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 4) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(*(int *)(param_1 + 8) + uVar4 * 4) + 0x24);
      if (iVar3 <= iVar2) {
        iVar3 = iVar2;
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 4) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(*(int *)(param_1 + 8) + uVar4 * 4) + 0x20);
      if (iVar5 <= iVar2) {
        iVar5 = iVar2;
      }
      uVar4 = uVar4 + 1;
    } while ((int)uVar4 < iVar1);
  }
  local_10 = in_EAX;
  local_c = in_EAX;
  if (in_EAX == -1) {
    local_c = 0;
    local_10 = iVar5;
  }
  if (param_3 == -1) {
    local_8 = 0;
    local_14 = iVar3;
  }
  FUN_0086a880();
  for (; iVar3 = local_8, local_c <= local_10; local_c = local_c + 1) {
    for (; iVar3 <= local_14; iVar3 = iVar3 + 1) {
      uVar4 = 0;
      if (0 < iVar1) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 4) <= uVar4)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          iVar5 = *(int *)(*(int *)(param_1 + 8) + uVar4 * 4);
          if ((((param_2 == -1) || (param_2 == *(int *)(iVar5 + 0x1c))) &&
              (*(int *)(iVar5 + 0x20) == local_c)) && (*(int *)(iVar5 + 0x24) == iVar3)) {
            FUN_0086a400(iVar5,1);
          }
          uVar4 = uVar4 + 1;
        } while ((int)uVar4 < iVar1);
      }
    }
  }
  return;
}



int FUN_00a14be0(int param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  int unaff_EDI;
  
  iVar1 = *(int *)(unaff_EDI + 4);
  uVar3 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_EDI + 4) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(unaff_EDI + 8) + uVar3 * 4);
      if (*(int *)(iVar2 + 0x50) == param_1) {
        return iVar2;
      }
      uVar3 = uVar3 + 1;
    } while ((int)uVar3 < iVar1);
  }
  return 0;
}



void FUN_00a14c40(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int unaff_EBX;
  uint uVar3;
  
  iVar1 = *(int *)(unaff_EBX + 4);
  uVar3 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_EBX + 4) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      if ((*(int *)(*(int *)(unaff_EBX + 8) + uVar3 * 4) != param_2) &&
         (iVar2 = FUN_00a14be0(*(undefined4 *)(param_1 + 0x50)), iVar2 != 0)) {
        iVar2 = FUN_0086a790(iVar2,0);
        if (iVar2 == -1) {
          if (PTR_FUN_03235c4c != (undefined *)0x0) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/aui/framemanager.h",0x8a,
                         "wxAuiPaneInfoPtrArray::Remove","iIndex != (-1)",
                         "removing inexistent element in wxArray::Remove");
          }
        }
        else {
          FUN_0086a1e0(iVar2,1);
        }
      }
      uVar3 = uVar3 + 1;
    } while ((int)uVar3 < iVar1);
  }
  return;
}



void FUN_00a14cf0(int param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  int unaff_EDI;
  
  iVar1 = *(int *)(unaff_EDI + 4);
  uVar3 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_EDI + 4) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(unaff_EDI + 8) + uVar3 * 4);
      *(uint *)(iVar2 + 0x58) = *(uint *)(iVar2 + 0x58) & 0xffffbfff;
      if (*(int *)(iVar2 + 0x50) == param_1) {
        *(uint *)(iVar2 + 0x58) = *(uint *)(iVar2 + 0x58) | 0x4000;
      }
      uVar3 = uVar3 + 1;
    } while ((int)uVar3 < iVar1);
  }
  return;
}



undefined4 __fastcall FUN_00a14d60(int param_1)

{
  char cVar1;
  undefined **ppuVar2;
  
  if (*(undefined4 **)(param_1 + 0x50) == (undefined4 *)0x0) {
    return 1;
  }
  ppuVar2 = (undefined **)(**(code **)**(undefined4 **)(param_1 + 0x50))();
  if ((ppuVar2 != &PTR_u_wxAuiToolBar_0323f370) &&
     ((ppuVar2[3] == (undefined *)0x0 ||
      (cVar1 = FUN_0048a047(&PTR_u_wxAuiToolBar_0323f370), cVar1 == '\0')))) {
    if (ppuVar2[4] == (undefined *)0x0) {
      return 1;
    }
    cVar1 = FUN_0048a047(&PTR_u_wxAuiToolBar_0323f370);
    if (cVar1 == '\0') {
      return 1;
    }
  }
  cVar1 = FUN_00a1e5d0(param_1);
  if (cVar1 != '\0') {
    return 1;
  }
  return 0;
}



undefined * __thiscall FUN_00a14dd0(int param_1_00,int param_1)

{
  int iVar1;
  undefined *puVar2;
  uint uVar3;
  
  iVar1 = *(int *)(param_1_00 + 0x50);
  uVar3 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x50) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      puVar2 = *(undefined **)(*(int *)(param_1_00 + 0x54) + uVar3 * 4);
      if (*(int *)(puVar2 + 0x50) == param_1) {
        return puVar2;
      }
      uVar3 = uVar3 + 1;
    } while ((int)uVar3 < iVar1);
  }
  return &DAT_032ea730;
}



int * __thiscall FUN_00a14e30(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  char cVar4;
  int *piVar5;
  uint uVar6;
  
  iVar1 = *(int *)(param_1_00 + 0x68);
  piVar5 = (int *)0x0;
  uVar6 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x68) <= uVar6)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar2 = *(int **)(*(int *)(param_1_00 + 0x6c) + uVar6 * 4);
      iVar3 = *piVar2;
      if (((iVar3 != 2) && (((iVar3 != 4 && (iVar3 != 7)) || (piVar5 == (int *)0x0)))) &&
         (cVar4 = FUN_008f7580(param_1,param_2), cVar4 != '\0')) {
        piVar5 = piVar2;
      }
      uVar6 = uVar6 + 1;
    } while ((int)uVar6 < iVar1);
  }
  return piVar5;
}



undefined4 FUN_00a14ec0(int param_1)

{
  char cVar1;
  uint uVar2;
  undefined **local_48 [8];
  undefined4 local_28;
  undefined4 uStack_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined local_14;
  undefined local_13;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee2a8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  FUN_00845a20(0,DAT_032ea82c);
  local_48[0] = wxAuiManagerEvent::vftable;
  local_1c = 0;
  local_18 = 0;
  local_14 = 0;
  local_13 = 1;
  local_10 = (void *)0x0;
  local_20 = 0;
  local_28 = 0x7fffffff;
  local_4 = 0;
  cVar1 = (**(code **)(**(int **)(param_1 + 0x70) + 0x18))(local_48,uVar2);
  puStack_8 = (undefined *)0xffffffff;
  if (cVar1 == '\0') {
    FUN_0083e850();
    ExceptionList = local_10;
    return 0;
  }
  FUN_0083e850();
  ExceptionList = local_10;
  return uStack_24;
}



void __thiscall FUN_00a14f90(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  
  if ((param_1_00[0x10] != 0) &&
     (cVar1 = (**(code **)(**(int **)(param_1_00[0x10] + 0x70) + 0x18))(param_1), cVar1 != '\0')) {
    return;
  }
  (**(code **)(*param_1_00 + 0x18))(param_1);
  return;
}



int __fastcall FUN_00a14fc0(int param_1)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  int unaff_retaddr;
  uint uVar11;
  int iStack_14;
  int iStack_4;
  
  iVar4 = (**(code **)(**(int **)(param_1 + 0x44) + 4))(1);
  iVar5 = (**(code **)(**(int **)(param_1 + 0x44) + 4))(3);
  iVar6 = (**(code **)(**(int **)(param_1 + 0x44) + 4))(2);
  uVar9 = 0;
  *(undefined4 *)(iStack_4 + 4) = 0;
  *(undefined4 *)(unaff_retaddr + 4) = 0;
  iVar2 = *(int *)(iVar4 + 4);
  uVar11 = 0xffffffff;
  iVar7 = iStack_4;
  uVar8 = uVar11;
  if (0 < iVar2) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar4 + 4) <= uVar9)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar7 = *(int *)(*(int *)(iVar4 + 8) + uVar9 * 4);
      uVar11 = uVar8;
      if (((*(int *)(iVar7 + 0x58) < 0) && (uVar11 = uVar9, PTR_FUN_03235c4c != (undefined *)0x0))
         && (uVar8 != 0xffffffff)) {
        iVar7 = FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0x68c,
                             "wxAuiManager::GetPanePositionsAndSizes","action_pane==-1",
                             L"Too many fixed action panes");
      }
      uVar9 = uVar9 + 1;
      uVar8 = uVar11;
    } while ((int)uVar9 < iVar2);
  }
  uVar8 = 0;
  if (0 < iVar2) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar4 + 4) <= uVar8)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar7 = *(int *)(*(int *)(iVar4 + 8) + uVar8 * 4);
      FUN_0086a400(*(undefined4 *)(iVar7 + 0x68),1);
      uVar9 = *(uint *)(iVar7 + 0x58);
      iVar10 = 0;
      if ((uVar9 >> 9 & 1) != 0) {
        iVar10 = iStack_14 * 2;
      }
      cVar3 = FUN_00a13f00();
      if (cVar3 == '\0') {
        if (((uVar9 >> 0xb & 1) != 0) && ((uVar9 >> 0xf & 1) != 0)) {
          iVar10 = iVar10 + iVar6;
        }
        if ((uVar9 >> 10 & 1) != 0) {
          iVar10 = iVar10 + iVar5;
        }
        iVar10 = iVar10 + *(int *)(iVar7 + 0x70);
      }
      else {
        if (((uVar9 >> 0xb & 1) != 0) && ((uVar9 >> 0xf & 1) == 0)) {
          iVar10 = iVar10 + iVar6;
        }
        iVar10 = iVar10 + *(int *)(iVar7 + 0x6c);
      }
      iVar7 = FUN_0086a400(iVar10,1);
      uVar8 = uVar8 + 1;
    } while ((int)uVar8 < iVar2);
  }
  uVar9 = uVar11;
  uVar8 = uVar11;
  if (uVar11 != 0xffffffff) {
    while (uVar8 = uVar8 - 1, -1 < (int)uVar8) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iStack_4 + 4) <= uVar9)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar5 = *(int *)(iStack_4 + 8);
      iVar4 = uVar8 * 4;
      iVar7 = iStack_4;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iStack_4 + 4) <= uVar8)) {
        iVar7 = FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,
                             "wxBaseArrayInt::Item","uiIndex < m_nCount",0);
      }
      iVar6 = *(int *)(iStack_4 + 8);
      if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
         (iVar7 = unaff_retaddr, *(uint *)(unaff_retaddr + 4) <= uVar8)) {
        iVar7 = FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,
                             "wxBaseArrayInt::Item","uiIndex < m_nCount",0);
      }
      iVar5 = (*(int *)(iVar4 + 4 + iVar5) - *(int *)(iVar4 + *(int *)(unaff_retaddr + 8))) -
              *(int *)(iVar6 + iVar4);
      if (iVar5 < 0) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iStack_4 + 4) <= uVar8)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                       "uiIndex < m_nCount",0);
        }
        iVar7 = *(int *)(iStack_4 + 8);
        piVar1 = (int *)(iVar4 + iVar7);
        *piVar1 = *piVar1 + iVar5;
        iVar7 = iVar4 + iVar7;
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) &&
         (iVar7 = unaff_retaddr, *(uint *)(unaff_retaddr + 4) <= uVar8)) {
        iVar7 = FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,
                             "wxBaseArrayInt::Item","uiIndex < m_nCount",0);
      }
      uVar9 = uVar9 - 1;
    }
    iVar4 = 0;
    for (; (int)uVar11 < iVar2; uVar11 = uVar11 + 1) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iStack_4 + 4) <= uVar11)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar7 = *(int *)(*(int *)(iStack_4 + 8) + uVar11 * 4) - iVar4;
      if (iVar7 < 0) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iStack_4 + 4) <= uVar11)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                       "uiIndex < m_nCount",0);
        }
        piVar1 = (int *)(*(int *)(iStack_4 + 8) + uVar11 * 4);
        *piVar1 = *piVar1 - iVar7;
      }
      else {
        iVar4 = iVar4 + iVar7;
      }
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_retaddr + 4) <= uVar11)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar7 = *(int *)(unaff_retaddr + 8);
      iVar4 = iVar4 + *(int *)(iVar7 + uVar11 * 4);
    }
  }
  return iVar7;
}



void __thiscall FUN_00a153a0(int param_1_00,double param_1,double param_2)

{
  double dVar1;
  double dVar2;
  
  dVar2 = 1.0;
  if ((1.0 < param_1 == NAN(param_1)) && (dVar2 = param_1, param_1 < 0.0 != NAN(param_1))) {
    dVar2 = 0.0;
  }
  dVar1 = 1.0;
  *(double *)(param_1_00 + 0xd0) = dVar2;
  if ((param_2 <= 1.0) && (dVar1 = param_2, param_2 < 0.0 != NAN(param_2))) {
    *(undefined8 *)(param_1_00 + 0xd8) = 0;
    return;
  }
  *(double *)(param_1_00 + 0xd8) = dVar1;
  return;
}



void __fastcall FUN_00a15410(int param_1)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  uint uVar6;
  undefined auStack_10 [16];
  
  (**(code **)(**(int **)(param_1 + 0x40) + 0x204))();
  iVar1 = *(int *)(param_1 + 0x68);
  uVar6 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x68) <= uVar6)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar2 = *(int **)(*(int *)(param_1 + 0x6c) + uVar6 * 4);
      piVar5 = (int *)(**(code **)(*(int *)piVar2[6] + 0x20))(auStack_10);
      piVar2[7] = *piVar5;
      piVar2[8] = piVar5[1];
      piVar2[9] = piVar5[2];
      piVar2[10] = piVar5[3];
      uVar3 = *(uint *)(piVar2[6] + 0x28);
      iVar4 = *(int *)(piVar2[6] + 0x24);
      if ((uVar3 & 0x40) != 0) {
        piVar2[8] = piVar2[8] - iVar4;
        piVar2[10] = piVar2[10] + iVar4;
      }
      if ((uVar3 & 0x10) != 0) {
        piVar2[7] = piVar2[7] - iVar4;
        piVar2[9] = piVar2[9] + iVar4;
      }
      if ((char)uVar3 < '\0') {
        piVar2[10] = piVar2[10] + iVar4;
      }
      if ((uVar3 & 0x20) != 0) {
        piVar2[9] = piVar2[9] + iVar4;
      }
      if (*piVar2 == 2) {
        iVar4 = piVar2[2];
        *(int *)(iVar4 + 0xc) = piVar2[7];
        *(int *)(iVar4 + 0x10) = piVar2[8];
        *(int *)(iVar4 + 0x14) = piVar2[9];
        *(int *)(iVar4 + 0x18) = piVar2[10];
      }
      if (*piVar2 == 4) {
        iVar4 = piVar2[3];
        *(int *)(iVar4 + 0xa4) = piVar2[7];
        *(int *)(iVar4 + 0xa8) = piVar2[8];
        *(int *)(iVar4 + 0xac) = piVar2[9];
        *(int *)(iVar4 + 0xb0) = piVar2[10];
      }
      uVar6 = uVar6 + 1;
    } while ((int)uVar6 < iVar1);
  }
  return;
}



int * __thiscall FUN_00a15510(int param_1_00,int param_1)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  
  iVar1 = *(int *)(param_1_00 + 0x68);
  uVar3 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x68) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar2 = *(int **)(*(int *)(param_1_00 + 0x6c) + uVar3 * 4);
      if (((*piVar2 == 7) && (piVar2[3] != 0)) && (*(int *)(piVar2[3] + 0x50) == param_1)) {
        return piVar2;
      }
      uVar3 = uVar3 + 1;
    } while ((int)uVar3 < iVar1);
  }
  iVar1 = *(int *)(param_1_00 + 0x68);
  uVar3 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x68) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar2 = *(int **)(*(int *)(param_1_00 + 0x6c) + uVar3 * 4);
      if (((*piVar2 == 4) && (piVar2[3] != 0)) && (*(int *)(piVar2[3] + 0x50) == param_1)) {
        return piVar2;
      }
      uVar3 = uVar3 + 1;
    } while ((int)uVar3 < iVar1);
  }
  return (int *)0x0;
}



void __thiscall FUN_00a155d0(int param_1_00,undefined4 param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  int iVar2;
  int unaff_retaddr;
  undefined4 local_20;
  undefined4 local_1c;
  int iStack_18;
  int iStack_14;
  undefined local_10 [12];
  int iStack_4;
  
  uVar1 = param_1;
  iVar2 = FUN_00a14dd0(param_1);
  if (*(int *)(iVar2 + 0x50) != 0) {
    *(uint *)(param_1_00 + 0x70) = (byte)~(byte)(*(uint *)(iVar2 + 0x58) >> 0xd) & 1 | 4;
    *(undefined4 *)(param_1_00 + 0x88) = uVar1;
    *(undefined4 *)(param_1_00 + 0x7c) = *param_2;
    *(undefined4 *)(param_1_00 + 0x80) = param_2[1];
    FUN_0091f8e0();
    if (*(int *)(iVar2 + 0x54) != 0) {
      FUN_0091aed0(local_10);
      FUN_007b0d3e(&local_20);
      param_2 = (undefined4 *)local_1c;
      param_1 = local_20;
      (**(code **)(**(int **)(iVar2 + 0x54) + 0x25c))(&param_1,&param_2);
      *(int *)(param_1_00 + 0x7c) = *(int *)(param_1_00 + 0x7c) + (iStack_4 - iStack_18);
      *(int *)(param_1_00 + 0x80) = *(int *)(param_1_00 + 0x80) + (unaff_retaddr - iStack_14);
    }
  }
  return;
}



void __thiscall FUN_00a15690(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_00a14dd0(param_1);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(iVar1 + 0x50) == 0)) {
    FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0xdf5,"wxAuiManager::OnFloatingPaneMoveStart",
                 "pane.IsOk()",L"Pane window not found");
  }
  if ((*(int *)(iVar1 + 0x54) != 0) && ((*(byte *)(param_1_00 + 0x48) & 4) != 0)) {
                    // WARNING: Could not recover jumptable at 0x00a156f1. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(iVar1 + 0x54) + 0x208))();
    return;
  }
  return;
}



void FUN_00a15700(undefined4 param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  int iVar2;
  
  iVar2 = FUN_00a14dd0(param_1);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(iVar2 + 0x50) == 0)) {
    FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0xeba,"wxAuiManager::OnFloatingPaneResized",
                 "pane.IsOk()",L"Pane window not found");
  }
  uVar1 = param_2[3];
  *(undefined4 *)(iVar2 + 0x8c) = param_2[2];
  *(undefined4 *)(iVar2 + 0x90) = uVar1;
  uVar1 = param_2[1];
  *(undefined4 *)(iVar2 + 0x84) = *param_2;
  *(undefined4 *)(iVar2 + 0x88) = uVar1;
  return;
}



void __thiscall FUN_00a15900(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  undefined **local_48 [10];
  int *local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined local_14;
  undefined local_13;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee2a8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  FUN_00845a20(0,DAT_032ea828);
  local_48[0] = wxAuiManagerEvent::vftable;
  local_1c = 0;
  local_18 = 0;
  local_14 = 0;
  local_13 = 1;
  local_4 = 0;
  local_10 = param_1;
  local_20 = param_1_00;
  if (param_1_00[0x10] != 0) {
    cVar1 = (**(code **)(**(int **)(param_1_00[0x10] + 0x70) + 0x18))(local_48,uVar2);
    if (cVar1 != '\0') goto LAB_00a1598c;
  }
  (**(code **)(*param_1_00 + 0x18))(local_48);
LAB_00a1598c:
  local_4 = 0xffffffff;
  local_48[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00a159c0(int param_1)

{
  int unaff_EBX;
  int *piVar1;
  int *piVar2;
  int local_1c;
  void *local_18 [3];
  int *local_c;
  undefined *puStack_8;
  int *piStack_4;
  
  piStack_4 = (int *)0xffffffff;
  puStack_8 = &LAB_00bee2db;
  local_c = (int *)ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(**(int **)(param_1 + 0x40) + 0x27c))
            (local_18,&local_1c,DAT_0323f878 ^ (uint)&stack0xffffffd4);
  piVar2 = piStack_4;
  piVar1 = (int *)0x0;
  if (piStack_4 == (int *)0x0) {
    piStack_4 = (int *)operator_new(0xc);
    local_c = piVar2;
    if (piStack_4 == (int *)0x0) {
      piVar1 = (int *)0x0;
    }
    else {
      piVar1 = (int *)FUN_0094bd30(*(undefined4 *)(param_1 + 0x40));
    }
    local_c = (int *)0xffffffff;
    piVar2 = piVar1;
  }
  (**(code **)(**(int **)(param_1 + 0x40) + 0x78))(&local_1c);
  if ((unaff_EBX != 0) || (local_1c != 0)) {
    (**(code **)(*(int *)piVar2[2] + 0x104))(unaff_EBX,local_1c);
  }
  FUN_00a15900(piVar2);
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 4))(1);
  }
  ExceptionList = local_18[0];
  return;
}



void __fastcall FUN_00a15aa0(int param_1)

{
  uint uVar1;
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be5e08;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_0094be80(*(undefined4 *)(param_1 + 0x40));
  local_4 = 0;
  FUN_00a159c0(local_18);
  local_4 = 0xffffffff;
  FUN_00457221(uVar1);
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a15b10(int param_1_00,int param_1)

{
  char cVar1;
  
  if (*(int *)(param_1_00 + 0x40) != 0) {
    FUN_00a15410();
    FUN_00a159c0(0);
    cVar1 = FUN_0083e950(&PTR_u_wxMDIParentFrame_03245b24);
    if (cVar1 != '\0') {
      return;
    }
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



void __thiscall FUN_00a15b80(int param_1_00,int param_1)

{
  int iVar1;
  
  if ((*(byte *)(param_1_00 + 0x48) & 2) == 0) {
    *(undefined *)(param_1 + 0x24) = 1;
    return;
  }
  iVar1 = FUN_00a14dd0(*(undefined4 *)(param_1 + 8));
  if ((*(int *)(iVar1 + 0x50) != 0) && ((*(uint *)(iVar1 + 0x58) & 0x4000) == 0)) {
    FUN_00a14cf0(*(undefined4 *)(param_1 + 8));
    (**(code **)(**(int **)(param_1_00 + 0x40) + 0x15c))(1,0);
    *(undefined *)(param_1 + 0x24) = 1;
    return;
  }
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



void __thiscall FUN_00a15bf0(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxAuiManagerEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void __thiscall FUN_00a15c40(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxSetCursorEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



void FUN_00a15c90(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_0086cea0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_0086a880();
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a15cf0(int param_1_00,uint param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  if (*(uint *)(param_1_00 + 4) <= param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0x33,"wxAuiDockUIPartArray::RemoveAt",
                   "uiIndex < size()",L"bad index in wxAuiDockUIPartArray::RemoveAt()");
    }
    return;
  }
  if (param_2 != 0) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= param_1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 * 4 + *(int *)(param_1_00 + 8)));
  }
  iVar2 = *(int *)(param_1_00 + 8);
  iVar1 = iVar2 + param_1 * 4;
  FUN_0086a1e0(iVar1 - iVar2 >> 2,(int)((param_1 * 4 - iVar1) + iVar2) >> 2);
  return;
}



void __thiscall FUN_00a15dc0(int param_1_00,undefined4 *param_1,uint param_2)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  
  if (param_2 != 0) {
    puVar1 = (undefined4 *)operator_new(0x2c);
    if (puVar1 == (undefined4 *)0x0) {
      puVar1 = (undefined4 *)0x0;
    }
    else {
      puVar6 = param_1;
      puVar7 = puVar1;
      for (iVar2 = 0xb; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar7 = *puVar6;
        puVar6 = puVar6 + 1;
        puVar7 = puVar7 + 1;
      }
    }
    iVar2 = *(int *)(param_1_00 + 4);
    if (puVar1 != (undefined4 *)0x0) {
      FUN_0086a0a0(puVar1,iVar2 * 4 >> 2,param_2);
    }
    uVar4 = 1;
    if (1 < param_2) {
      iVar5 = iVar2 * 4;
      do {
        iVar5 = iVar5 + 4;
        puVar1 = (undefined4 *)operator_new(0x2c);
        if (puVar1 == (undefined4 *)0x0) {
          puVar1 = (undefined4 *)0x0;
        }
        else {
          puVar6 = param_1;
          puVar7 = puVar1;
          for (iVar3 = 0xb; iVar3 != 0; iVar3 = iVar3 + -1) {
            *puVar7 = *puVar6;
            puVar6 = puVar6 + 1;
            puVar7 = puVar7 + 1;
          }
        }
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar4 + iVar2))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 **)(*(int *)(param_1_00 + 8) + iVar5) = puVar1;
        uVar4 = uVar4 + 1;
      } while (uVar4 < param_2);
    }
  }
  return;
}



void __fastcall FUN_00a15ea0(int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = *(uint *)(param_1 + 4);
  if (uVar2 != 0) {
    uVar3 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar2 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1 + 8) + uVar3 * 4);
      if (iVar1 != 0) {
        FUN_0086aa30();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar2 = *(uint *)(param_1 + 4);
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  return;
}



void __thiscall FUN_00a15f10(int param_1_00,uint param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  
  if (*(uint *)(param_1_00 + 4) <= param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0x34,"wxAuiDockInfoArray::RemoveAt",
                   "uiIndex < size()",L"bad index in wxAuiDockInfoArray::RemoveAt()");
    }
    return;
  }
  uVar3 = 0;
  if (param_2 != 0) {
    iVar2 = param_1 * 4;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar3 + param_1))
      {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1_00 + 8) + iVar2);
      if (iVar1 != 0) {
        FUN_0086aa30();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar3 = uVar3 + 1;
      iVar2 = iVar2 + 4;
    } while (uVar3 < param_2);
  }
  iVar1 = *(int *)(param_1_00 + 8);
  iVar2 = iVar1 + param_1 * 4;
  FUN_0086a1e0(iVar2 - iVar1 >> 2,(int)(((param_1 + param_2) * 4 - iVar2) + iVar1) >> 2);
  return;
}



void __thiscall FUN_00a15fe0(int param_1_00,undefined4 param_1,uint param_2)

{
  int iVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce226;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    pvVar2 = operator_new(0x34);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = FUN_00a143c0(param_1);
    }
    iVar1 = *(int *)(param_1_00 + 4);
    local_4 = 0xffffffff;
    if (iVar3 != 0) {
      FUN_0086a0a0(iVar3,iVar1 * 4 >> 2,param_2);
    }
    uVar5 = 1;
    if (1 < param_2) {
      iVar3 = iVar1 * 4;
      do {
        iVar3 = iVar3 + 4;
        pvVar2 = operator_new(0x34);
        local_4 = 1;
        if (pvVar2 == (void *)0x0) {
          uVar4 = 0;
        }
        else {
          uVar4 = FUN_00a143c0(param_1);
        }
        local_4 = 0xffffffff;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar5 + iVar1))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 *)(*(int *)(param_1_00 + 8) + iVar3) = uVar4;
        uVar5 = uVar5 + 1;
      } while (uVar5 < param_2);
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_00a16110(void)

{
  uint uVar1;
  undefined **local_2c [2];
  undefined4 local_24;
  undefined local_1c;
  undefined local_1b;
  undefined local_1a;
  undefined local_19;
  undefined local_18;
  undefined local_17;
  undefined local_16;
  undefined local_15;
  undefined local_14;
  undefined local_13;
  undefined local_12;
  undefined local_11;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee321;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_2c;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  local_24 = 0;
  local_19 = 0xc0;
  local_18 = 0xc0;
  local_17 = 0xc0;
  local_16 = 0xc0;
  local_15 = 0xc0;
  local_14 = 0xc0;
  local_1c = 0;
  local_1b = 0;
  local_1a = 0;
  local_13 = 0;
  local_12 = 0;
  local_11 = 0;
  FUN_00a14240(2,2,&local_1c,1);
  local_4 = 1;
  FUN_00414f38(local_2c,0xffffffff);
  local_24 = 1;
  local_4 = local_4 & 0xffffff00;
  local_2c[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a161e0(int *param_1_00,int param_1)

{
  undefined local_1c [8];
  undefined local_14 [4];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee360;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00a16110(DAT_0323f878 ^ (uint)&stack0xffffffd8);
  local_4 = 0;
  FUN_0095d860(local_14);
  local_4 = CONCAT31(local_4._1_3_,1);
  (**(code **)(**(int **)(param_1 + 8) + 0x60))(local_1c);
  PatBlt(*(HDC *)(*(int *)(param_1 + 8) + 0x108),*param_1_00,param_1_00[1],param_1_00[2],
         param_1_00[3],0x5a0049);
  puStack_8 = (undefined *)((uint)puStack_8 & 0xffffff00);
  FUN_008f7630();
  puStack_8 = (undefined *)0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_10;
  return;
}



undefined * __thiscall FUN_00a162a0(int param_1_00,int param_1)

{
  int iVar1;
  undefined *puVar2;
  int iVar3;
  uint uVar4;
  
  iVar1 = *(int *)(param_1_00 + 0x50);
  uVar4 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x50) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      puVar2 = *(undefined **)(*(int *)(param_1_00 + 0x54) + uVar4 * 4);
      if ((*(int *)(puVar2 + 0x14) == *(int *)(param_1 + 0x14)) &&
         (iVar3 = FUN_00850760(param_1), iVar3 == 0)) {
        return puVar2;
      }
      uVar4 = uVar4 + 1;
    } while ((int)uVar4 < iVar1);
  }
  return &DAT_032ea730;
}



void __thiscall FUN_00a16330(int param_1,char param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int *piVar5;
  int *piVar6;
  void *pvVar7;
  int *piVar8;
  int iVar9;
  undefined4 unaff_EBX;
  int iVar10;
  uint uVar11;
  int unaff_retaddr;
  undefined4 uVar12;
  undefined4 uVar13;
  undefined4 uVar14;
  undefined4 uVar15;
  undefined4 uStack_58;
  undefined4 uStack_48;
  undefined4 uStack_44;
  undefined *puStack_40;
  int iStack_3c;
  undefined4 uStack_38;
  int *piStack_34;
  undefined4 uStack_30;
  void *local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  int *piStack_4;
  
  piStack_4 = (int *)0xffffffff;
  puStack_8 = &LAB_00bee3b1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_1c = (void *)0x0;
  local_18 = 0;
  local_14 = 0;
  local_10 = 0;
  uVar3 = (**(code **)(**(int **)(param_1 + 0x44) + 4))(1,DAT_0323f878 ^ (uint)&stack0xffffff98);
  (**(code **)(**(int **)(param_1 + 0x44) + 4))(2);
  uStack_48 = (**(code **)(**(int **)(param_1 + 0x44) + 4))(3);
  uVar4 = (**(code **)(**(int **)(param_1 + 0x44) + 4))(4);
  iVar2 = (int)piStack_4;
  if ((*(int *)(puStack_8 + 0x1c) == 1) || (*(int *)(puStack_8 + 0x1c) == 3)) {
    uVar14 = 4;
  }
  else {
    uVar14 = 8;
  }
  uVar15 = *(undefined4 *)((int)piStack_4 + 0x94);
  piVar5 = (int *)operator_new(0x58);
  local_14 = 0;
  piStack_4 = piVar5;
  if (piVar5 == (int *)0x0) {
    piVar5 = (int *)0x0;
  }
  else {
    FUN_00445eb9();
    *piVar5 = (int)wxBoxSizer::vftable;
    piVar5[2] = (int)wxBoxSizer::vftable;
    piVar5[0x14] = 0;
    piVar5[0x15] = 0;
    piVar5[0x12] = 4;
    piVar5[0x13] = 0;
  }
  local_14 = 0xffffffff;
  piVar6 = (int *)operator_new(0x58);
  local_14 = 2;
  if (piVar6 == (int *)0x0) {
    piStack_4 = (int *)0x0;
  }
  else {
    piStack_4 = piVar6;
    FUN_00445eb9();
    piVar6[2] = (int)wxBoxSizer::vftable;
    *piVar6 = (int)wxBoxSizer::vftable;
    piVar6[0x14] = 0;
    piVar6[0x15] = 0;
    piVar6[0x12] = 8;
    piVar6[0x13] = 0;
    piStack_4 = piVar6;
  }
  piVar6 = piStack_4;
  local_14 = 0xffffffff;
  if ((*(uint *)(iVar2 + 0x58) >> 0xb & 1) != 0) {
    if ((*(uint *)(iVar2 + 0x58) >> 0xf & 1) == 0) {
      uVar13 = 1;
      uVar12 = unaff_EBX;
    }
    else {
      uVar12 = 1;
      uVar13 = unaff_EBX;
    }
    uStack_30 = FUN_00445db1(uVar12,uVar13,0,0x2000,0,0);
    puStack_40 = puStack_8;
    uStack_48 = 1;
    iStack_3c = iVar2;
    uStack_38 = 0;
    uStack_44 = uVar14;
    piStack_34 = piVar5;
    FUN_00a15dc0(&uStack_48,1);
  }
  if ((*(uint *)(iVar2 + 0x58) >> 10 & 1) != 0) {
    pvVar7 = operator_new(0x58);
    local_14 = 4;
    if (pvVar7 == (void *)0x0) {
      piVar8 = (int *)0x0;
    }
    else {
      piVar8 = (int *)FUN_00445f46(4);
    }
    local_14 = 0xffffffff;
    uStack_48 = 0;
    puStack_40 = puStack_8;
    iStack_3c = iVar2;
    uStack_38 = 0;
    uStack_44 = uVar14;
    piStack_34 = piVar6;
    uStack_30 = FUN_00445db1(1,uStack_58,1,0x2000,0,0);
    uVar1 = *(uint *)(unaff_retaddr + 4);
    FUN_00a15dc0(&uStack_48,1);
    iVar9 = *(int *)(iVar2 + 0x9c);
    uVar11 = 0;
    if (0 < iVar9) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 0x9c) <= uVar11)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        uStack_38 = *(undefined4 *)(*(int *)(iVar2 + 0xa0) + uVar11 * 4);
        puStack_40 = puStack_8;
        uStack_48 = 8;
        iStack_3c = iVar2;
        uStack_44 = uVar14;
        piStack_34 = piVar8;
        uStack_30 = FUN_00445db1(uVar4,uStack_58,0,0x2000,0,0);
        FUN_00a15dc0(&uStack_48,1);
        uVar11 = uVar11 + 1;
      } while ((int)uVar11 < iVar9);
    }
    if (0 < iVar9) {
      FUN_00445db1(3,1,0,0,0,0);
    }
    uVar4 = FUN_0044c6ab(piVar8,0,0x2000,0,0);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_retaddr + 4) <= uVar1)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    *(undefined4 *)(*(int *)(*(int *)(unaff_retaddr + 8) + uVar1 * 4) + 0x18) = uVar4;
    piVar6 = piStack_4;
  }
  if (param_2 == '\0') {
    uVar4 = FUN_00445d61(*(undefined4 *)(iVar2 + 0x50),1,0x2000,0,0);
    (**(code **)(*piVar6 + 0x60))(*(undefined4 *)(iVar2 + 0x50),1,1);
  }
  else {
    uVar4 = FUN_00445db1(1,1,1,0x2000,0,0);
  }
  uStack_48 = 4;
  puStack_40 = puStack_8;
  iStack_3c = iVar2;
  uStack_38 = 0;
  uStack_44 = uVar14;
  piStack_34 = piVar6;
  uStack_30 = uVar4;
  FUN_00a15dc0(&uStack_48,1);
  iVar9 = *(int *)(iVar2 + 0x74);
  iVar10 = *(int *)(iVar2 + 0x78);
  if ((~(byte)((uint)*(undefined4 *)(iVar2 + 0x58) >> 8) & 1) == 0) {
LAB_00a16751:
    if ((iVar9 == DAT_03238d04) && (iVar10 == DAT_03238d08)) goto LAB_00a16769;
  }
  else if (iVar9 == DAT_03238d04) {
    if (iVar10 == DAT_03238d08) {
      iVar9 = *(int *)(iVar2 + 0x6c);
      iVar10 = *(int *)(iVar2 + 0x70);
      uVar15 = 0;
    }
    goto LAB_00a16751;
  }
  (**(code **)(*piVar6 + 0x58))(piVar6[0xc] + -1,iVar9,iVar10);
LAB_00a16769:
  FUN_0044c6ab(piVar6,1,0x2000,0,0);
  if ((*(uint *)(iVar2 + 0x58) >> 9 & 1) == 0) {
    FUN_0044c6ab(piVar5,uVar15,0x2000,0,0);
  }
  else {
    puStack_40 = puStack_8;
    uStack_48 = 7;
    iStack_3c = iVar2;
    uStack_38 = 0;
    piStack_34 = (int *)local_c;
    uStack_44 = uVar14;
    uStack_30 = FUN_0044c6ab(piVar5,uVar15,0x20f0,uVar3,0);
    FUN_00a15dc0(&uStack_48,1);
  }
  ExceptionList = local_1c;
  return;
}



void __thiscall FUN_00a16810(int param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  bool bVar4;
  char cVar5;
  undefined4 uVar6;
  void *pvVar7;
  int *piVar8;
  int unaff_EBP;
  int iVar9;
  uint uVar10;
  int *unaff_retaddr;
  int iVar11;
  int iVar12;
  undefined4 uVar13;
  uint uStack_6c;
  int iStack_68;
  int local_64;
  undefined auStack_54 [4];
  uint uStack_50;
  int iStack_4c;
  undefined4 uStack_48;
  uint uStack_44;
  int iStack_40;
  undefined4 uStack_3c;
  int iStack_38;
  int iStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  int *piStack_28;
  undefined4 uStack_24;
  void *local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bee3eb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_1c = (void *)0x0;
  local_18 = 0;
  local_14 = 0;
  local_10 = 0;
  uVar6 = (**(code **)(**(int **)(param_1 + 0x44) + 4))(0,DAT_0323f878 ^ (uint)&stack0xffffff84);
  iVar2 = *(int *)(param_2 + 0x1c);
  if ((iVar2 == 1) || (iVar2 == 3)) {
    bVar4 = true;
  }
  else {
    bVar4 = false;
  }
  iVar1 = (uint)!bVar4 * 4 + 4;
  if (((*(char *)(iStack_68 + 0xcd) == '\0') && (*(char *)(param_2 + 0x32) == '\0')) &&
     ((iVar2 == 3 || (iVar2 == 2)))) {
    uStack_24 = FUN_00445db1(uVar6,uVar6,0,0x2000,0,0);
    uStack_3c = 3;
    iStack_34 = param_2;
    uStack_30 = 0;
    uStack_2c = 0;
    iStack_38 = iVar1;
    piStack_28 = unaff_retaddr;
    FUN_00a15dc0(&uStack_3c,1);
  }
  pvVar7 = operator_new(0x58);
  uStack_8 = (undefined *)0x0;
  if (pvVar7 == (void *)0x0) {
    piVar8 = (int *)0x0;
  }
  else {
    piVar8 = (int *)FUN_00445f46(iVar1);
  }
  iVar2 = *(int *)(param_2 + 4);
  uStack_8 = (undefined *)0xffffffff;
  bVar4 = false;
  if (*(char *)(param_2 + 0x32) == '\0') {
    uVar10 = 0;
    local_64 = param_1;
    if (0 < iVar2) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_2 + 4) <= uVar10)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        local_64 = *(int *)(*(int *)(param_2 + 8) + uVar10 * 4);
        if ((*(byte *)(local_64 + 0x5a) & 1) != 0) {
          bVar4 = true;
        }
        if ((*(char *)(iStack_68 + 0xcd) == '\0') && (0 < (int)uVar10)) {
          uVar13 = FUN_00445db1(uVar6,uVar6,0,0x2000,0,0);
          uStack_3c = 5;
          iStack_34 = param_2;
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_2 + 4) <= uVar10 - 1)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          uStack_30 = *(undefined4 *)(*(int *)(param_2 + 8) + -4 + uVar10 * 4);
          uStack_2c = 0;
          iStack_38 = (uint)(iVar1 == 4) * 4 + 4;
          piStack_28 = piVar8;
          uStack_24 = uVar13;
          FUN_00a15dc0(&uStack_3c,1);
        }
        FUN_00a16330(piVar8,param_2,local_64,param_3,param_4);
        uVar10 = uVar10 + 1;
      } while ((int)uVar10 < iVar2);
    }
  }
  else {
    FUN_0086a600();
    uStack_8 = (undefined *)0x1;
    FUN_0086a600();
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,2);
    FUN_00a14fc0(param_2,&uStack_48,auStack_54);
    local_64 = 0;
    uStack_6c = 0;
    if (0 < iVar2) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_2 + 4) <= uStack_6c)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar3 = *(int *)(*(int *)(param_2 + 8) + uStack_6c * 4);
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_44 <= uStack_6c)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                       "uiIndex < m_nCount",0);
        }
        if ((*(byte *)(iVar3 + 0x5a) & 1) != 0) {
          bVar4 = true;
        }
        iVar9 = *(int *)(iStack_40 + uStack_6c * 4) - local_64;
        if (0 < iVar9) {
          cVar5 = FUN_00a13f20();
          if (cVar5 == '\0') {
            iVar12 = 1;
            iVar11 = iVar9;
          }
          else {
            iVar11 = 1;
            iVar12 = iVar9;
          }
          uStack_24 = FUN_00445db1(iVar11,iVar12,0,0x2000,0,0);
          uStack_3c = 6;
          iStack_34 = param_2;
          uStack_30 = 0;
          uStack_2c = 0;
          iStack_38 = (uint)(iVar1 == 4) * 4 + 4;
          piStack_28 = piVar8;
          FUN_00a15dc0(&uStack_3c,1);
          local_64 = local_64 + iVar9;
        }
        FUN_00a16330(piVar8,param_2,iVar3,param_3,param_4);
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_50 <= uStack_6c)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,"wxBaseArrayInt::Item",
                       "uiIndex < m_nCount",0);
        }
        local_64 = local_64 + *(int *)(iStack_4c + uStack_6c * 4);
        uStack_6c = uStack_6c + 1;
      } while ((int)uStack_6c < iVar2);
    }
    uStack_24 = FUN_00445db1(0,0,1,0x2000,0,0);
    uStack_3c = 6;
    iStack_34 = param_2;
    uStack_30 = 0;
    uStack_2c = 0;
    iStack_38 = iVar1;
    piStack_28 = piVar8;
    FUN_00a15dc0(&uStack_3c,1);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
    FUN_0086aa30();
    uStack_8 = (undefined *)0xffffffff;
    FUN_0086aa30();
  }
  if ((*(int *)(param_2 + 0x1c) == 5) || (bVar4)) {
    uVar6 = 1;
  }
  else {
    uVar6 = 0;
  }
  uStack_24 = FUN_0044c6ab(piVar8,uVar6,0x2000,0,0);
  uStack_3c = 2;
  iStack_34 = param_2;
  uStack_30 = 0;
  uStack_2c = 0;
  iStack_38 = iVar1;
  FUN_00a15dc0(&uStack_3c,1);
  if ((*(int *)(param_2 + 0x1c) == 1) || (*(int *)(param_2 + 0x1c) == 3)) {
    uVar6 = *(undefined4 *)(param_2 + 0x28);
    uVar13 = 0;
  }
  else {
    uVar13 = *(undefined4 *)(param_2 + 0x28);
    uVar6 = 0;
  }
  (**(code **)(*unaff_retaddr + 0x5c))(piVar8,uVar13,uVar6);
  if (((*(char *)(unaff_EBP + 0xcd) == '\0') && (*(char *)(param_2 + 0x32) == '\0')) &&
     ((*(int *)(param_2 + 0x1c) == 1 || (*(int *)(param_2 + 0x1c) == 4)))) {
    uStack_48 = 3;
    iStack_40 = param_2;
    uStack_3c = 0;
    iStack_38 = 0;
    uStack_30 = FUN_00445db1(local_64,local_64,0,0x2000,0,0);
    FUN_00a15dc0(&uStack_48,1);
  }
  ExceptionList = local_1c;
  return;
}



undefined4 __fastcall FUN_00a16db0(int param_1)

{
  uint uVar1;
  int iVar2;
  bool bVar3;
  bool bVar4;
  char cVar5;
  uint uVar6;
  int iVar7;
  int *piVar8;
  int *piVar9;
  undefined4 *puVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  undefined4 *puVar14;
  undefined4 uVar15;
  int iVar16;
  undefined *puVar17;
  undefined4 unaff_retaddr;
  int *piVar18;
  int iVar19;
  uint uStack_8c;
  undefined4 *puStack_88;
  int iStack_84;
  uint uStack_80;
  int *piStack_7c;
  undefined4 *puStack_70;
  undefined4 uStack_6c;
  int *local_68;
  int iStack_64;
  undefined4 uStack_60;
  int *local_5c;
  undefined4 uStack_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  int *piStack_4c;
  undefined4 uStack_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined uStack_30;
  undefined uStack_2f;
  undefined uStack_2e;
  undefined uStack_2d;
  int *piStack_2c;
  undefined auStack_28 [4];
  uint uStack_24;
  int iStack_20;
  void *pvStack_1c;
  undefined4 uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee484;
  local_c = ExceptionList;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffff64;
  ExceptionList = &local_c;
  local_5c = (int *)operator_new(0x58);
  local_4 = 0;
  local_68 = local_5c;
  if (local_5c == (int *)0x0) {
    local_5c = (int *)0x0;
  }
  else {
    FUN_00445eb9(uVar6);
    *local_5c = (int)wxBoxSizer::vftable;
    local_5c[2] = (int)wxBoxSizer::vftable;
    local_5c[0x14] = 0;
    local_5c[0x15] = 0;
    local_5c[0x12] = 8;
    local_5c[0x13] = 0;
  }
  local_4 = 0xffffffff;
  uStack_58 = (**(code **)(**(int **)(param_1 + 0x44) + 4))(3);
  (**(code **)(**(int **)(param_1 + 0x44) + 4))(1);
  (**(code **)(**(int **)(param_1 + 0x40) + 0x27c))(&local_68,&puStack_70);
  puVar17 = puStack_8;
  iVar19 = *(int *)(puStack_8 + 4);
  uVar6 = 0;
  if (0 < iVar19) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(puVar17 + 4) <= uVar6)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar12 = *(int *)(*(int *)(puVar17 + 8) + uVar6 * 4);
      *(undefined4 *)(iVar12 + 4) = 0;
      if (*(char *)(iVar12 + 0x32) != '\0') {
        *(undefined4 *)(iVar12 + 0x28) = 0;
      }
      uVar6 = uVar6 + 1;
    } while ((int)uVar6 < iVar19);
  }
  iVar19 = *(int *)((int)local_c + 4);
  uVar6 = 0;
  if (0 < iVar19) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)((int)local_c + 4) <= uVar6)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar12 = *(int *)(*(int *)((int)local_c + 8) + uVar6 * 4);
      FUN_0086a600();
      uStack_14 = 2;
      FUN_00a14a30(puStack_8,*(undefined4 *)(iVar12 + 0x5c),*(undefined4 *)(iVar12 + 100),
                   &stack0xffffff70);
      if (uStack_8c == 0) {
        FUN_0086a600();
        puVar17 = puStack_8;
        uStack_54 = 0;
        uStack_50 = 0;
        piStack_4c = (int *)0x0;
        uStack_48 = 0;
        uStack_38 = 0;
        uStack_34 = 0;
        uStack_30 = 1;
        uStack_2e = 0;
        uStack_2f = 0;
        uStack_2d = 0;
        uStack_44 = *(undefined4 *)(iVar12 + 0x5c);
        uStack_3c = *(undefined4 *)(iVar12 + 100);
        uStack_40 = *(undefined4 *)(iVar12 + 0x60);
        uStack_14 = CONCAT31(uStack_14._1_3_,3);
        FUN_00a15fe0(&uStack_60,1);
        uVar1 = *(uint *)(puVar17 + 4) - 1;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(puVar17 + 4) <= uVar1)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        uVar15 = *(undefined4 *)(*(int *)(puStack_8 + 8) + uVar1 * 4);
        uStack_14 = CONCAT31(uStack_14._1_3_,2);
        FUN_0086aa30();
      }
      else {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_8c == 0)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        uVar15 = *puStack_88;
      }
      if (((~*(byte *)(iVar12 + 0x58) & 1) == 0) ||
         ((~(byte)(*(uint *)(iVar12 + 0x58) >> 1) & 1) == 0)) {
        FUN_00a14c40(iVar12,0);
      }
      else {
        FUN_00a14c40(iVar12,uVar15);
        iVar7 = FUN_00a14be0(*(undefined4 *)(iVar12 + 0x50));
        if (iVar7 == 0) {
          FUN_0086a400(iVar12,1);
        }
      }
      uStack_14 = 0xffffffff;
      FUN_0086aa30();
      uVar6 = uVar6 + 1;
    } while ((int)uVar6 < iVar19);
  }
  puVar17 = puStack_8;
  uVar6 = *(uint *)(puStack_8 + 4);
  while (uVar6 = uVar6 - 1, -1 < (int)uVar6) {
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(puVar17 + 4) <= uVar6)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    if (*(int *)(*(int *)(*(int *)(puVar17 + 8) + uVar6 * 4) + 4) == 0) {
      FUN_00a15f10(uVar6,1);
    }
  }
  iVar19 = *(int *)(puVar17 + 4);
  uStack_80 = 0;
  if (0 < iVar19) {
    do {
      uVar6 = 0;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(puStack_8 + 4) <= uStack_80)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar12 = *(int *)(*(int *)(puStack_8 + 8) + uStack_80 * 4);
      iVar7 = *(int *)(iVar12 + 4);
      FUN_0086a280(&LAB_00a13f90);
      if (*(int *)(iVar12 + 0x28) == 0) {
        piVar18 = (int *)0x0;
        if (0 < iVar7) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar12 + 4) <= uVar6)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            iVar16 = *(int *)(*(int *)(iVar12 + 8) + uVar6 * 4);
            piVar8 = *(int **)(iVar16 + 0x6c);
            piVar9 = *(int **)(iVar16 + 0x70);
            if (piVar8 == DAT_03238d04) {
              if (piVar9 == DAT_03238d08) {
                piVar8 = *(int **)(iVar16 + 0x74);
                piVar9 = *(int **)(iVar16 + 0x78);
              }
              if ((piVar8 == DAT_03238d04) && (piVar9 == DAT_03238d08)) {
                (**(code **)(**(int **)(iVar16 + 0x50) + 0x278))(&piStack_2c,&local_68);
                piVar8 = piStack_2c;
                piVar9 = local_68;
              }
            }
            cVar5 = FUN_00a13f00();
            if (cVar5 == '\0') {
              if ((int)piVar18 < (int)piVar8) {
                piVar18 = piVar8;
              }
            }
            else if ((int)piVar18 < (int)piVar9) {
              piVar18 = piVar9;
            }
            uVar6 = uVar6 + 1;
          } while ((int)uVar6 < iVar7);
        }
        uVar6 = 0;
        if (0 < iVar7) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar12 + 4) <= uVar6)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            if ((*(uint *)(*(int *)(*(int *)(iVar12 + 8) + uVar6 * 4) + 0x58) >> 9 & 1) != 0) {
              piVar18 = (int *)((int)piVar18 + iStack_64 * 2);
              break;
            }
            uVar6 = uVar6 + 1;
          } while ((int)uVar6 < iVar7);
        }
        if (((*(int *)(iVar12 + 0x1c) == 1) || (*(int *)(iVar12 + 0x1c) == 3)) &&
           (uVar6 = 0, 0 < iVar7)) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar12 + 4) <= uVar6)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            if ((*(uint *)(*(int *)(*(int *)(iVar12 + 8) + uVar6 * 4) + 0x58) >> 10 & 1) != 0) {
              piVar18 = (int *)((int)piVar18 + (int)piStack_7c);
              break;
            }
            uVar6 = uVar6 + 1;
          } while ((int)uVar6 < iVar7);
        }
        piVar8 = (int *)FUN_00a49750();
        piVar9 = (int *)FUN_00a49750();
        if ((*(int *)(iVar12 + 0x1c) == 1) || (*(int *)(iVar12 + 0x1c) == 3)) {
          if ((int)piVar9 <= (int)piVar18) {
            piVar18 = piVar9;
          }
        }
        else if ((int)piVar8 <= (int)piVar18) {
          piVar18 = piVar8;
        }
        if ((int)piVar18 < 10) {
          piVar18 = (int *)0xa;
        }
        *(int **)(iVar12 + 0x28) = piVar18;
      }
      iVar16 = 0;
      uVar6 = 0;
      bVar4 = false;
      bVar3 = false;
      if (0 < iVar7) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar12 + 4) <= uVar6)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          iVar13 = *(int *)(*(int *)(iVar12 + 8) + uVar6 * 4);
          if ((*(int **)(iVar13 + 0x74) != DAT_03238d04) ||
             (*(int **)(iVar13 + 0x78) != DAT_03238d08)) {
            if ((*(uint *)(iVar13 + 0x58) >> 9 & 1) != 0) {
              bVar3 = true;
            }
            if ((*(uint *)(iVar13 + 0x58) >> 10 & 1) != 0) {
              bVar4 = true;
            }
            cVar5 = FUN_00a13f00();
            if (cVar5 == '\0') {
              iVar13 = *(int *)(iVar13 + 0x74);
            }
            else {
              iVar13 = *(int *)(iVar13 + 0x78);
            }
            if (iVar16 < iVar13) {
              iVar16 = iVar13;
            }
          }
          uVar6 = uVar6 + 1;
        } while ((int)uVar6 < iVar7);
        if (bVar3) {
          iVar16 = iVar16 + iStack_64 * 2;
        }
        if ((bVar4) && ((*(int *)(iVar12 + 0x1c) == 1 || (*(int *)(iVar12 + 0x1c) == 3)))) {
          iVar16 = iVar16 + (int)piStack_7c;
        }
      }
      *(int *)(iVar12 + 0x2c) = iVar16;
      if (*(int *)(iVar12 + 0x28) < iVar16) {
        *(int *)(iVar12 + 0x28) = iVar16;
      }
      bVar3 = false;
      uVar6 = 0;
      *(undefined *)(iVar12 + 0x32) = 1;
      *(undefined *)(iVar12 + 0x31) = 1;
      if (0 < iVar7) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar12 + 4) <= uVar6)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          iVar16 = *(int *)(*(int *)(iVar12 + 8) + uVar6 * 4);
          if ((~(byte)((uint)*(undefined4 *)(iVar16 + 0x58) >> 8) & 1) == 0) {
            *(undefined *)(iVar12 + 0x32) = 0;
          }
          if ((*(uint *)(iVar16 + 0x58) >> 0xd & 1) == 0) {
            *(undefined *)(iVar12 + 0x31) = 0;
          }
          if ((*(uint *)(iVar16 + 0x58) >> 0x11 & 1) != 0) {
            *(undefined *)(iVar12 + 0x32) = 1;
          }
          if (*(int *)(iVar16 + 0x58) < 0) {
            bVar3 = true;
          }
          uVar6 = uVar6 + 1;
        } while ((int)uVar6 < iVar7);
      }
      if (*(char *)(iVar12 + 0x32) == '\0') {
        uVar6 = 0;
        if (0 < iVar7) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar12 + 4) <= uVar6)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            *(uint *)(*(int *)(*(int *)(iVar12 + 8) + uVar6 * 4) + 0x68) = uVar6;
            uVar6 = uVar6 + 1;
          } while ((int)uVar6 < iVar7);
        }
        if (*(char *)(iVar12 + 0x32) != '\0') goto LAB_00a17517;
      }
      else {
LAB_00a17517:
        if (!bVar3) {
          FUN_0086a600();
          uStack_14 = 4;
          FUN_0086a600();
          uStack_14 = CONCAT31(uStack_14._1_3_,5);
          FUN_00a14fc0(iVar12,auStack_28,&stack0xffffff70);
          uVar6 = 0;
          iVar16 = 0;
          if (0 < iVar7) {
            do {
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar12 + 4) <= uVar6)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                             "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
              }
              iVar13 = *(int *)(*(int *)(iVar12 + 8) + uVar6 * 4);
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_24 <= uVar6)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,
                             "wxBaseArrayInt::Item","uiIndex < m_nCount",0);
              }
              iVar2 = *(int *)(iStack_20 + uVar6 * 4);
              iVar11 = iVar2 - iVar16;
              *(int *)(iVar13 + 0x68) = iVar2;
              if (iVar11 < 0) {
                *(int *)(iVar13 + 0x68) = iVar2 - iVar11;
              }
              else {
                iVar16 = iVar16 + iVar11;
              }
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_8c <= uVar6)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x343,
                             "wxBaseArrayInt::Item","uiIndex < m_nCount",0);
              }
              iVar16 = iVar16 + puStack_88[uVar6];
              uVar6 = uVar6 + 1;
            } while ((int)uVar6 < iVar7);
          }
          uStack_14 = CONCAT31(uStack_14._1_3_,4);
          FUN_0086aa30();
          uStack_14 = 0xffffffff;
          FUN_0086aa30();
        }
      }
      uStack_80 = uStack_80 + 1;
    } while ((int)uStack_80 < iVar19);
  }
  puVar17 = puStack_8;
  iVar12 = 0;
  uVar6 = 0;
  uStack_80 = 0;
  if (0 < iVar19) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(puVar17 + 4) <= uVar6)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar7 = *(int *)(*(int *)(*(int *)(puVar17 + 8) + uVar6 * 4) + 0x20);
      if (iVar12 <= iVar7) {
        iVar12 = iVar7;
      }
      uVar6 = uVar6 + 1;
      uStack_80 = iVar12;
    } while ((int)uVar6 < iVar19);
  }
  FUN_0086cea0();
  FUN_0086a880();
  puVar14 = (undefined4 *)0x0;
  piStack_7c = (int *)0x0;
  iVar19 = 0;
  if (-1 < (int)uStack_80) {
    do {
      FUN_0086a600();
      uStack_14 = 6;
      FUN_00a14a30(puVar17,0xffffffff,0xffffffff,&stack0xffffff70);
      if (uStack_8c == 0) {
        uStack_14 = 0xffffffff;
        FUN_0086aa30();
      }
      else {
        puVar10 = (undefined4 *)operator_new(0x58);
        uStack_14._0_1_ = 7;
        if (puVar10 == (undefined4 *)0x0) {
          puVar10 = (undefined4 *)0x0;
        }
        else {
          puStack_70 = puVar10;
          FUN_00445eb9();
          *puVar10 = wxBoxSizer::vftable;
          puVar10[2] = wxBoxSizer::vftable;
          puVar10[0x14] = 0;
          puVar10[0x15] = 0;
          puVar10[0x12] = 8;
          puVar10[0x13] = 0;
        }
        uStack_14 = CONCAT31(uStack_14._1_3_,6);
        puStack_70 = puVar10;
        FUN_00a14a30(puVar17,1,0xffffffff,&stack0xffffff70);
        if ((uStack_8c != 0) && (uVar6 = 0, 0 < (int)uStack_8c)) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_8c <= uVar6)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            FUN_00a16810(puVar10,puStack_88[uVar6],local_4,unaff_retaddr);
            uVar6 = uVar6 + 1;
          } while ((int)uVar6 < (int)uStack_8c);
        }
        piVar18 = (int *)operator_new(0x58);
        uStack_14._0_1_ = 9;
        local_68 = piVar18;
        if (piVar18 == (int *)0x0) {
          piStack_7c = (int *)0x0;
        }
        else {
          FUN_00445eb9();
          *piVar18 = (int)wxBoxSizer::vftable;
          piVar18[2] = (int)wxBoxSizer::vftable;
          piVar18[0x14] = 0;
          piVar18[0x15] = 0;
          piVar18[0x12] = 4;
          piVar18[0x13] = 0;
          piStack_7c = piVar18;
        }
        uStack_14 = CONCAT31(uStack_14._1_3_,6);
        FUN_00a14a30(puStack_8,4,0xffffffff,&stack0xffffff70);
        if ((uStack_8c != 0) && (uVar6 = 0, 0 < (int)uStack_8c)) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_8c <= uVar6)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            FUN_00a16810(piStack_7c,puStack_88[uVar6],local_4,unaff_retaddr);
            uVar6 = uVar6 + 1;
          } while ((int)uVar6 < (int)uStack_8c);
        }
        uVar6 = 0;
        if (puVar14 == (undefined4 *)0x0) {
          FUN_00a14a30(puStack_8,5,0xffffffff,&stack0xffffff70);
          if (uStack_8c == 0) {
            if (*(char *)(iStack_84 + 0xcd) == '\0') {
              uStack_48 = FUN_00445db1(1,1,1,0x2000,0,0);
              uStack_44 = 0;
              uStack_40 = 0;
              uStack_3c = 0;
              uStack_38 = 0;
              uStack_60 = 6;
              uStack_54 = 0;
              uStack_58 = 0;
              uStack_50 = 0;
              piStack_4c = piStack_7c;
              FUN_00a15dc0(&uStack_60,1);
            }
          }
          else if (0 < (int)uStack_8c) {
            do {
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_8c <= uVar6)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                             "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
              }
              FUN_00a16810(piStack_7c,puStack_88[uVar6],local_4,unaff_retaddr);
              uVar6 = uVar6 + 1;
            } while ((int)uVar6 < (int)uStack_8c);
          }
        }
        else {
          FUN_0044c6ab(puVar14,1,0x2000,0,0);
        }
        FUN_00a14a30(puStack_8,2,0xffffffff,&stack0xffffff70);
        uVar15 = local_4;
        if (uStack_8c != 0) {
          for (uVar6 = uStack_8c - 1; -1 < (int)uVar6; uVar6 = uVar6 - 1) {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_8c <= uVar6)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            FUN_00a16810(piStack_7c,puStack_88[uVar6],uVar15,unaff_retaddr);
          }
        }
        if (piStack_7c[0xc] == 0) {
          (**(code **)(*piStack_7c + 4))(1);
        }
        else {
          FUN_0044c6ab(piStack_7c,1,0x2000,0,0);
        }
        FUN_00a14a30(puStack_8,3,0xffffffff,&stack0xffffff70);
        uVar15 = local_4;
        if (uStack_8c != 0) {
          for (uVar6 = uStack_8c - 1; -1 < (int)uVar6; uVar6 = uVar6 - 1) {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_8c <= uVar6)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            FUN_00a16810(puVar10,puStack_88[uVar6],uVar15,unaff_retaddr);
          }
        }
        uStack_14 = 0xffffffff;
        FUN_0086aa30();
        puVar14 = puStack_70;
        puVar17 = puStack_8;
      }
      iVar19 = iVar19 + 1;
    } while (iVar19 <= (int)uStack_80);
    if (puVar14 != (undefined4 *)0x0) goto LAB_00a17c3b;
  }
  puVar14 = (undefined4 *)operator_new(0x58);
  uStack_14 = 0xb;
  if (puVar14 == (undefined4 *)0x0) {
    puVar14 = (undefined4 *)0x0;
  }
  else {
    FUN_00445eb9();
    *puVar14 = wxBoxSizer::vftable;
    puVar14[2] = wxBoxSizer::vftable;
    puVar14[0x14] = 0;
    puVar14[0x15] = 0;
    puVar14[0x12] = 8;
    puVar14[0x13] = 0;
  }
  uStack_14 = 0xffffffff;
  uStack_44 = 0;
  uStack_40 = 0;
  uStack_3c = 0;
  uStack_38 = 0;
  uStack_60 = 6;
  uStack_54 = 0;
  uStack_58 = 0;
  uStack_50 = 0;
  piStack_4c = piStack_7c;
  uStack_48 = FUN_00445db1(1,1,1,0x2000,0,0);
  FUN_00a15dc0(&uStack_60,1);
LAB_00a17c3b:
  FUN_0044c6ab(puVar14,1,0x2000,0,0);
  ExceptionList = pvStack_1c;
  return uStack_6c;
}



void __thiscall FUN_00a17cf0(int param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  char cVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  uint uVar6;
  int *unaff_ESI;
  undefined *puVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  int **ppiVar10;
  undefined4 uVar11;
  undefined local_40 [4];
  int *apiStack_3c [2];
  undefined auStack_34 [8];
  int *piStack_2c;
  int *local_28;
  int *piStack_24;
  int *piStack_20;
  undefined auStack_1c [16];
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bee4d0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar6 = 0;
  if (*(int *)(param_1_00 + 0xe0) == 0) {
    if ((*(byte *)(param_1_00 + 0x48) & 0x20) != 0) {
      cVar3 = FUN_00a14180((int *)(param_1_00 + 0xb0),param_1,DAT_0323f878 ^ (uint)&stack0xffffffb0)
      ;
      if (cVar3 != '\0') {
        *(int *)(param_1_00 + 0xb0) = *param_1;
        *(int *)(param_1_00 + 0xb4) = param_1[1];
        *(int *)(param_1_00 + 0xb8) = param_1[2];
        *(int *)(param_1_00 + 0xbc) = param_1[3];
        (**(code **)(**(int **)(param_1_00 + 0x40) + 0x15c))(1,0);
        (**(code **)(**(int **)(param_1_00 + 0x40) + 0x160))();
      }
      FUN_0094bed0();
      local_4 = 0;
      FUN_00993290(1,1,10000,10000);
      iVar1 = *(int *)(param_1_00 + 0x50);
      local_4._0_1_ = 1;
      if (0 < iVar1) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x50) <= uVar6)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          iVar2 = *(int *)(*(int *)(param_1_00 + 0x54) + uVar6 * 4);
          if (((*(byte *)(iVar2 + 0x58) & 1) != 0) && (*(int *)(iVar2 + 0x54) != 0)) {
            cVar3 = (**(code **)(**(int **)(iVar2 + 0x54) + 0xdc))();
            if (cVar3 != '\0') {
              FUN_0091aed0(auStack_1c);
              FUN_00a141d0(auStack_1c);
            }
          }
          uVar6 = uVar6 + 1;
        } while ((int)uVar6 < iVar1);
      }
      uVar5 = FUN_0091aed0(auStack_1c);
      FUN_0091ae40(uVar5);
      (**(code **)(*piStack_20 + 0xb8))(local_40);
      FUN_00a16110();
      uStack_8._0_1_ = 2;
      FUN_0095d860(auStack_34);
      ppiVar10 = apiStack_3c;
      uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,3);
      (**(code **)(*piStack_24 + 0x60))();
      uVar5 = FUN_008f8330(0x24);
      (**(code **)(*local_28 + 0x58))(uVar5);
      (**(code **)(*piStack_2c + 0x150))(*param_1,param_1[1],5,param_1[3]);
      (**(code **)(*apiStack_3c[0] + 0x150))(*param_1 + 5,param_1[1],param_1[2] + -10,5);
      (**(code **)(*unaff_ESI + 0x150))(param_1[2] + -5 + *param_1,param_1[1],5,param_1[3]);
      (*(code *)(*ppiVar10)[0x54])(*param_1 + 5,param_1[1] + -5 + param_1[3],param_1[2] + -10,5);
      local_4._0_1_ = 2;
      FUN_008f7630();
      local_4._0_1_ = 1;
      FUN_008f7630();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_008f7630();
      local_4 = 0xffffffff;
      FUN_00457221();
    }
  }
  else if ((((*(int *)(param_1_00 + 0xb0) != *param_1) ||
            (*(int *)(param_1_00 + 0xb4) != param_1[1])) ||
           (*(int *)(param_1_00 + 0xb8) != param_1[2])) ||
          (*(int *)(param_1_00 + 0xbc) != param_1[3])) {
    *(int *)(param_1_00 + 0xb0) = *param_1;
    *(int *)(param_1_00 + 0xb4) = param_1[1];
    *(int *)(param_1_00 + 0xb8) = param_1[2];
    *(int *)(param_1_00 + 0xbc) = param_1[3];
    *(undefined *)(param_1_00 + 0x128) = *(undefined *)(param_1_00 + 0x129);
    if ((*(byte *)(param_1_00 + 0x48) & 0x40) != 0) {
      cVar3 = FUN_0083e950(&PTR_u_wxPseudoTransparentFrame_0323f2d0);
      if ((cVar3 == '\0') || ((*(byte *)(param_1_00 + 0x48) & 0x80) == 0)) {
        *(undefined *)(param_1_00 + 0x128) = 0;
      }
    }
    (**(code **)(**(int **)(param_1_00 + 0xe0) + 0x288))
              (*param_1,param_1[1],param_1[2],param_1[3],3);
    (**(code **)(**(int **)(param_1_00 + 0xe0) + 0x208))(*(undefined *)(param_1_00 + 0x128));
    cVar3 = (**(code **)(**(int **)(param_1_00 + 0xe0) + 0xdc))();
    if (cVar3 == '\0') {
      (**(code **)(**(int **)(param_1_00 + 0xe0) + 0xcc))(1);
    }
    if ((*(int *)(param_1_00 + 0x70) == 5) && (*(int **)(param_1_00 + 0x88) != (int *)0x0)) {
      (**(code **)(**(int **)(param_1_00 + 0x88) + 0x100))();
    }
    (**(code **)(**(int **)(param_1_00 + 0xe0) + 0x70))();
    if (*(char *)(param_1_00 + 0x128) != *(char *)(param_1_00 + 0x129)) {
      FUN_0086b960(param_1_00,0xffffffff);
      (**(code **)(*(int *)(param_1_00 + 0xe4) + 0x50))(5,0);
      uVar11 = 0;
      uVar9 = 0;
      uVar8 = 0;
      puVar7 = &LAB_00a17c70;
      uVar5 = DAT_032bdb64;
      uVar4 = FUN_0086bb20(DAT_032bdb64,&LAB_00a17c70,0,0,0);
      FUN_0044588b(uVar4,uVar5,puVar7,uVar8,uVar9,uVar11);
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00a180d0(int param_1)

{
  undefined4 uVar1;
  char cVar2;
  undefined4 uVar3;
  
  if (*(int **)(param_1 + 0xe0) == (int *)0x0) {
    if (*(int *)(param_1 + 0xb8) < 1) {
      return;
    }
    if (*(int *)(param_1 + 0xbc) < 1) {
      return;
    }
    (**(code **)(**(int **)(param_1 + 0x40) + 0x15c))(1,0);
    (**(code **)(**(int **)(param_1 + 0x40) + 0x160))();
  }
  else {
    cVar2 = (**(code **)(**(int **)(param_1 + 0xe0) + 0xdc))();
    if (cVar2 != '\0') {
      (**(code **)(**(int **)(param_1 + 0xe0) + 0xcc))(0);
    }
    (**(code **)(**(int **)(param_1 + 0xe0) + 0x208))(0);
    (**(code **)(*(int *)(param_1 + 0xe4) + 0x54))();
    uVar1 = DAT_032bdb64;
    uVar3 = FUN_0086bb20();
    FUN_0091cf30(uVar3,0xffffffff,uVar1,&LAB_00a17c70,0,0,0);
  }
  *(undefined4 *)(param_1 + 0xb0) = 0;
  *(undefined4 *)(param_1 + 0xb4) = 0;
  *(undefined4 *)(param_1 + 0xb8) = 0;
  *(undefined4 *)(param_1 + 0xbc) = 0;
  return;
}



void __thiscall FUN_00a181b0(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  if (((*(byte *)(param_1_00 + 0x48) & 2) != 0) &&
     (iVar1 = FUN_00a14dd0(param_1), *(int *)(iVar1 + 0x50) != 0)) {
    FUN_00a14cf0(param_1);
    FUN_00a159c0(0);
  }
  return;
}



void __thiscall FUN_00a181f0(int param_1_00,int param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int local_20;
  int iStack_1c;
  undefined local_18 [8];
  int *piStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee4f8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  iVar3 = FUN_00a14e30(*(undefined4 *)(param_2 + 0x2c),*(undefined4 *)(param_2 + 0x30));
  if ((iVar3 != 0) && (param_1 != 0)) {
    cVar1 = '\0';
    if (iVar3 == param_1) {
      cVar1 = (*(int *)(param_2 + 0xc) == DAT_032bfe08) * '\x02' + '\x02';
    }
    else if (*(int *)(param_2 + 0xc) == DAT_032bfe08) {
      cVar1 = '\x02';
    }
    FUN_0094bd30(*(undefined4 *)(param_1_00 + 0x40));
    local_4 = 0;
    (**(code **)(**(int **)(param_1_00 + 0x40) + 0x78))(&local_20,uVar2);
    if ((local_20 != 0) || (iStack_1c != 0)) {
      (**(code **)(*piStack_10 + 0x104))(local_20,iStack_1c);
    }
    if (*(int *)(iVar3 + 0xc) != 0) {
      (**(code **)(**(int **)(param_1_00 + 0x44) + 0x30))
                (local_18,*(undefined4 *)(param_1_00 + 0x40),**(undefined4 **)(param_1 + 0x10),cVar1
                 ,param_1 + 0x1c,*(int *)(iVar3 + 0xc));
    }
    local_4 = 0xffffffff;
    FUN_00457221();
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a18310(int param_1_00,int param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  char cVar4;
  int *piVar5;
  int *piVar6;
  int local_8;
  int local_4;
  
  *(undefined4 *)(param_1_00 + 200) = 0xffffffff;
  piVar5 = (int *)FUN_00a14e30(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30));
  if (piVar5 == (int *)0x0) goto LAB_00a184c3;
  iVar1 = *piVar5;
  if (iVar1 == 3) {
    if (((piVar5[2] != 0) && (*(int *)(piVar5[2] + 4) == 1)) &&
       (piVar6 = (int *)FUN_00a142b0(0),
       (~(byte)((uint)*(undefined4 *)(*piVar6 + 0x58) >> 8) & 1) != 0)) {
      return;
    }
LAB_00a18459:
    if ((piVar5[3] != 0) && ((~(byte)((uint)*(undefined4 *)(piVar5[3] + 0x58) >> 8) & 1) != 0)) {
      return;
    }
    *(undefined4 *)(param_1_00 + 0x8c) = 0;
    *(undefined4 *)(param_1_00 + 0x90) = 0;
    *(undefined4 *)(param_1_00 + 0x94) = 0;
    *(undefined4 *)(param_1_00 + 0x70) = 1;
    *(undefined4 *)(param_1_00 + 0x98) = 0;
  }
  else {
    if (iVar1 == 5) goto LAB_00a18459;
    if (iVar1 == 8) {
      *(undefined4 *)(param_1_00 + 0x70) = 2;
      *(int **)(param_1_00 + 0x84) = piVar5;
      uVar2 = *(undefined4 *)(param_1 + 0x2c);
      *(undefined4 *)(param_1_00 + 0x78) = *(undefined4 *)(param_1 + 0x30);
      *(undefined4 *)(param_1_00 + 0x74) = uVar2;
      FUN_0091f8e0();
      FUN_00a181f0(piVar5,param_1);
      *(undefined *)(param_1 + 0x24) = 1;
      return;
    }
    if ((iVar1 != 0) && (iVar1 != 1)) goto LAB_00a184c3;
    if ((piVar5[3] != 0) &&
       (((*(int *)(piVar5[3] + 0x50) != 0 && (*(int *)(param_1_00 + 0x40) != 0)) &&
        (cVar4 = FUN_0083e950(&PTR_u_wxAuiFloatingFrame_0323f4f8), cVar4 != '\0')))) {
      FUN_00a25cb0();
      local_8 = *(int *)(param_1 + 0x2c) - piVar5[7];
      local_4 = *(int *)(param_1 + 0x30) - piVar5[8];
      FUN_00a155d0(*(undefined4 *)(piVar5[3] + 0x50),&local_8);
      return;
    }
    if ((*(byte *)(param_1_00 + 0x48) & 2) != 0) {
      FUN_00a14cf0(*(undefined4 *)(piVar5[3] + 0x50));
      FUN_00a159c0(0);
    }
    if ((piVar5[2] != 0) && (*(int *)(piVar5[2] + 0x1c) == 5)) {
      return;
    }
    *(undefined4 *)(param_1_00 + 0x70) = 3;
  }
  *(int **)(param_1_00 + 0x84) = piVar5;
  uVar2 = *(undefined4 *)(param_1 + 0x2c);
  *(undefined4 *)(param_1_00 + 0x78) = *(undefined4 *)(param_1 + 0x30);
  *(undefined4 *)(param_1_00 + 0x74) = uVar2;
  iVar1 = *(int *)(param_1 + 0x2c);
  iVar3 = piVar5[7];
  *(int *)(param_1_00 + 0x80) = *(int *)(param_1 + 0x30) - piVar5[8];
  *(int *)(param_1_00 + 0x7c) = iVar1 - iVar3;
  FUN_0091f8e0();
LAB_00a184c3:
  *(undefined *)(param_1 + 0x24) = 1;
  return;
}



undefined4 * FUN_00a184e0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxAuiManagerEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * FUN_00a18550(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxSetCursorEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __thiscall
FUN_00a185c0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  undefined4 uVar1;
  
  FUN_00840d00(param_5,param_1,4);
  FUN_0081a07d(param_4,param_1,3);
  FUN_0081a07d(param_3,param_1,2);
  FUN_00840d00(param_2,param_1,1);
  uVar1 = FUN_008854f0();
  FUN_00853980(param_1_00,uVar1,param_3,param_4,param_5,param_1);
  return;
}



void FUN_00a18640(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00a15ea0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_0086a880();
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



void FUN_00a186a0(int param_1)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = *(uint *)(param_1 + 4);
  uVar2 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar1 <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      FUN_00a15fe0(*(undefined4 *)(*(int *)(param_1 + 8) + uVar2 * 4),1);
      uVar1 = *(uint *)(param_1 + 4);
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar1);
  }
  return;
}



void FUN_00a18700(int param_1)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = *(uint *)(param_1 + 4);
  uVar2 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar1 <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      FUN_009fb100(*(undefined4 *)(*(int *)(param_1 + 8) + uVar2 * 4),1);
      uVar1 = *(uint *)(param_1 + 4);
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar1);
  }
  return;
}



undefined4 __thiscall FUN_00a18760(undefined4 param_1_00,undefined4 param_1)

{
  FUN_0086cea0();
  FUN_0086a880();
  FUN_00a18700(param_1);
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a18790(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,uint param_6,undefined4 param_7)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee56e;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  FUN_00820a7b(param_1,param_2,param_3,param_4,param_5,param_6 | 0x10,param_7);
  local_4 = 0;
  *param_1_00 = wxPseudoTransparentFrame::vftable;
  FUN_009931f0(uVar1);
  local_4._0_1_ = 1;
  param_1_00[0x44] = 2;
  *(undefined *)(param_1_00 + 0x8a) = 0;
  param_1_00[0x8b] = 0;
  param_1_00[0x8c] = 0;
  param_1_00[0x8e] = 0;
  param_1_00[0x8f] = 0;
  *(undefined *)(param_1_00 + 0x8d) = 1;
  puVar2 = (undefined4 *)FUN_00993290(0,0,0,0);
  local_4._0_1_ = 2;
  if (param_1_00 + 0x90 != puVar2) {
    FUN_0083ea60(puVar2);
  }
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_008f7630();
  FUN_00a14510(0);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_00a18890(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00befc48;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008f7630(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0xffffffff;
  FUN_00928690();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00a188f0(undefined4 param_1_00,byte param_1)

{
  FUN_00a18890();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00a18910(int param_1)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  undefined ***pppuVar4;
  int *piVar5;
  bool bVar6;
  undefined **local_28;
  int local_24;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00bee5b0;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_14;
  piVar3 = (int *)FUN_00a14e30(*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c));
  local_24 = DAT_032bf36c;
  if (DAT_032bf36c != 0) {
    *(int *)(DAT_032bf36c + 4) = *(int *)(DAT_032bf36c + 4) + 1;
  }
  local_28 = wxCursor::vftable;
  local_c = 0;
  if (piVar3 != (int *)0x0) {
    iVar1 = *piVar3;
    if (iVar1 == 3) {
      if ((piVar3[2] != 0) && (*(int *)(piVar3[2] + 4) == 1)) {
        piVar5 = (int *)FUN_00a142b0(0);
        if ((~(byte)((uint)*(undefined4 *)(*piVar5 + 0x58) >> 8) & 1) != 0) goto LAB_00a18a3d;
      }
LAB_00a189cd:
      if ((piVar3[3] != 0) && ((~(byte)((uint)*(undefined4 *)(piVar3[3] + 0x58) >> 8) & 1) != 0))
      goto LAB_00a18a3d;
      if (piVar3[1] == 8) {
        pppuVar4 = (undefined ***)FUN_008f7ad0(0x15);
        local_c = CONCAT31(local_c._1_3_,1);
        bVar6 = &local_28 == pppuVar4;
      }
      else {
        pppuVar4 = (undefined ***)FUN_008f7ad0(0x13);
        local_c = CONCAT31(local_c._1_3_,2);
        bVar6 = &local_28 == pppuVar4;
      }
    }
    else {
      if (iVar1 == 5) goto LAB_00a189cd;
      if (iVar1 != 1) goto LAB_00a18a2a;
      pppuVar4 = (undefined ***)FUN_008f7ad0(0x16);
      local_c = CONCAT31(local_c._1_3_,3);
      bVar6 = &local_28 == pppuVar4;
    }
    if (!bVar6) {
      FUN_0083ea60(pppuVar4);
    }
    local_c = local_c & 0xffffff00;
    FUN_008f7630(uVar2);
  }
LAB_00a18a2a:
  if ((undefined ***)(param_1 + 0x30) != &local_28) {
    FUN_0083ea60(&local_28);
  }
LAB_00a18a3d:
  local_c = 0xffffffff;
  FUN_008f7630(uVar2);
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_00a18a70(int param_1_00,uint param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  
  if (*(uint *)(param_1_00 + 4) <= param_1) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0x36,"wxAuiPaneInfoArray::RemoveAt",
                   "uiIndex < size()",L"bad index in wxAuiPaneInfoArray::RemoveAt()");
    }
    return;
  }
  uVar3 = 0;
  if (param_2 != 0) {
    iVar2 = param_1 * 4;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar3 + param_1))
      {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1_00 + 8) + iVar2);
      if (iVar1 != 0) {
        FUN_00445bb2();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar3 = uVar3 + 1;
      iVar2 = iVar2 + 4;
    } while (uVar3 < param_2);
  }
  iVar1 = *(int *)(param_1_00 + 8);
  iVar2 = iVar1 + param_1 * 4;
  FUN_0086a1e0(iVar2 - iVar1 >> 2,(int)(((param_1 + param_2) * 4 - iVar2) + iVar1) >> 2);
  return;
}



undefined4 __thiscall FUN_00a18b40(int param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0x4c9,"wxAuiManager::DetachPane","window",
                 L"NULL window ptrs are not allowed");
  }
  iVar4 = *(int *)(param_1_00 + 0x50);
  uVar3 = 0;
  if (0 < iVar4) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x50) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1_00 + 0x54) + uVar3 * 4);
      if (*(int *)(iVar1 + 0x50) == param_1) {
        uVar5 = 0;
        if (*(int *)(iVar1 + 0x54) != 0) {
          (**(code **)(**(int **)(iVar1 + 0x50) + 0x288))(0xffffffff,0xffffffff,1,1,0);
          cVar2 = (**(code **)(**(int **)(iVar1 + 0x54) + 0xdc))();
          if (cVar2 != '\0') {
            (**(code **)(**(int **)(iVar1 + 0x54) + 0xcc))(0);
          }
          if (*(int *)(param_1_00 + 0x88) == *(int *)(iVar1 + 0x54)) {
            *(undefined4 *)(param_1_00 + 0x88) = 0;
          }
          (**(code **)(**(int **)(iVar1 + 0x50) + 0x120))(*(undefined4 *)(param_1_00 + 0x40));
          FUN_0091c600(0,1);
          (**(code **)(**(int **)(iVar1 + 0x54) + 0x50))();
          *(undefined4 *)(iVar1 + 0x54) = 0;
        }
        iVar4 = *(int *)(param_1_00 + 0x68);
        if (0 < iVar4) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x68) <= uVar5)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            if (*(int *)(*(int *)(*(int *)(param_1_00 + 0x6c) + uVar5 * 4) + 0xc) == iVar1) {
              FUN_00a15cf0(uVar5,1);
              iVar4 = iVar4 + -1;
              uVar5 = uVar5 - 1;
            }
            uVar5 = uVar5 + 1;
          } while ((int)uVar5 < iVar4);
        }
        FUN_00a18a70(uVar3,1);
        return 1;
      }
      uVar3 = uVar3 + 1;
    } while ((int)uVar3 < iVar4);
  }
  return 0;
}



void __fastcall FUN_00a18ce0(int *param_1)

{
  uint uVar1;
  int iVar2;
  char cVar3;
  byte bVar4;
  uint uVar5;
  int iVar6;
  int *piVar7;
  int iVar8;
  code *pcVar9;
  uint uVar10;
  uint uVar11;
  bool bVar12;
  uint uStack_68;
  int iStack_64;
  int iStack_60;
  int *piStack_5c;
  int *local_54;
  undefined4 uStack_50;
  uint uStack_48;
  int iStack_44;
  undefined4 uStack_40;
  undefined4 uStack_3c;
  undefined4 uStack_38;
  undefined4 uStack_34;
  uint uStack_28;
  void *pvStack_24;
  undefined4 uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee5e8;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffff84;
  ExceptionList = &local_c;
  uVar1 = param_1[0x14];
  uVar11 = 0;
  param_1[0x2b] = 0;
  param_1[0x21] = 0;
  uVar10 = uVar1;
  local_54 = param_1;
  if (0 < (int)uVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x14] <= uVar11)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(param_1[0x15] + uVar11 * 4);
      if (((*(byte *)(iVar2 + 0x58) & 1) == 0) && (*(int *)(iVar2 + 0x54) != 0)) {
        (**(code **)(**(int **)(iVar2 + 0x50) + 0x288))(0xffffffff,0xffffffff,1,1,0);
        if (param_1[0x22] == *(int *)(iVar2 + 0x54)) {
          iVar8 = param_1[0x10];
          iVar6 = FUN_009116e0();
          if (iVar6 == iVar8) {
            FUN_0091fac0();
          }
          param_1[0x1c] = 0;
          param_1[0x22] = 0;
          uVar10 = uVar5;
        }
        cVar3 = (**(code **)(**(int **)(iVar2 + 0x54) + 0xdc))();
        if (cVar3 != '\0') {
          (**(code **)(**(int **)(iVar2 + 0x54) + 0xcc))(0);
        }
        if (param_1[0x22] == *(int *)(iVar2 + 0x54)) {
          param_1[0x22] = 0;
        }
        (**(code **)(**(int **)(iVar2 + 0x50) + 0x120))(param_1[0x10]);
        FUN_0091c600(0,1);
        (**(code **)(**(int **)(iVar2 + 0x54) + 0x50))();
        *(undefined4 *)(iVar2 + 0x54) = 0;
      }
      uVar11 = uVar11 + 1;
    } while ((int)uVar11 < (int)uVar10);
  }
  FUN_0091c600(0,1);
  uStack_50 = FUN_00a16db0(param_1 + 0x13,param_1 + 0x16,param_1 + 0x19,0);
  uStack_68 = 0;
  if (0 < (int)uVar10) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x14] <= uStack_68)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(param_1[0x15] + uStack_68 * 4);
      if ((*(byte *)(iVar2 + 0x58) & 1) == 0) {
        uVar10 = *(uint *)(iVar2 + 0x58);
        bVar4 = (**(code **)(**(int **)(iVar2 + 0x50) + 0xdc))();
        if (bVar4 != (~(byte)(uVar10 >> 1) & 1)) {
          pcVar9 = *(code **)(**(int **)(iVar2 + 0x50) + 0xcc);
          bVar4 = ~(byte)(*(uint *)(iVar2 + 0x58) >> 1) & 1;
LAB_00a1909b:
          (*pcVar9)(bVar4);
        }
      }
      else if (*(int **)(iVar2 + 0x54) == (int *)0x0) {
        piVar7 = (int *)(**(code **)(*param_1 + 0x50))(param_1[0x10],iVar2);
        if ((param_1[0x1c] == 5) && ((*(byte *)(param_1 + 0x12) & 4) != 0)) {
          (**(code **)(*piVar7 + 0x208))(0x96);
        }
        FUN_00a26790(iVar2);
        *(int **)(iVar2 + 0x54) = piVar7;
        if (((~(byte)(*(uint *)(iVar2 + 0x58) >> 1) & 1) != 0) &&
           (cVar3 = (**(code **)(*piVar7 + 0xdc))(), cVar3 == '\0')) {
          pcVar9 = *(code **)(*piVar7 + 0xcc);
          bVar4 = 1;
          goto LAB_00a1909b;
        }
      }
      else {
        (**(code **)(**(int **)(iVar2 + 0x54) + 0x270))(&iStack_64,&iStack_60);
        if ((((uVar1 != *(uint *)(iVar2 + 0x84)) || (uStack_68 != *(uint *)(iVar2 + 0x88))) ||
            ((**(code **)(**(int **)(iVar2 + 0x54) + 0x278))(&iStack_64,&iStack_60),
            iStack_64 != *(int *)(iVar2 + 0x8c))) || (iStack_60 != *(int *)(iVar2 + 0x90))) {
          (**(code **)(**(int **)(iVar2 + 0x54) + 0x288))
                    (*(undefined4 *)(iVar2 + 0x84),*(undefined4 *)(iVar2 + 0x88),
                     *(undefined4 *)(iVar2 + 0x8c),*(undefined4 *)(iVar2 + 0x90),0);
          param_1 = piStack_5c;
        }
        uVar10 = (**(code **)(**(int **)(iVar2 + 0x54) + 0xe8))();
        if ((~(byte)((uint)*(undefined4 *)(iVar2 + 0x58) >> 8) & 1) == 0) {
          uVar10 = uVar10 | 0x40;
        }
        else {
          uVar10 = uVar10 & 0xffffffbf;
        }
        (**(code **)(**(int **)(iVar2 + 0x54) + 0xe4))(uVar10);
        iVar8 = (**(code **)(**(int **)(iVar2 + 0x54) + 0x58))(&uStack_3c);
        uStack_14 = 0;
        if (*(int *)(iVar8 + 0x14) == *(int *)(iVar2 + 0x38)) {
          iVar8 = FUN_00850760(iVar2 + 0x24);
          bVar12 = iVar8 == 0;
        }
        else {
          bVar12 = false;
        }
        uStack_14 = 0xffffffff;
        _free(pvStack_24);
        if (7 < uStack_28) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_3c);
        }
        if (!bVar12) {
          (**(code **)(**(int **)(iVar2 + 0x54) + 0x54))(iVar2 + 0x24);
        }
        uVar10 = *(uint *)(iVar2 + 0x58);
        bVar4 = (**(code **)(**(int **)(iVar2 + 0x54) + 0xdc))();
        if (bVar4 != (~(byte)(uVar10 >> 1) & 1)) {
          (**(code **)(**(int **)(iVar2 + 0x54) + 0xcc))(~(byte)(*(uint *)(iVar2 + 0x58) >> 1) & 1);
        }
      }
      if ((*(byte *)(param_1 + 0x12) & 2) == 0) {
        *(uint *)(iVar2 + 0x58) = *(uint *)(iVar2 + 0x58) & 0xffffbfff;
      }
      uStack_68 = uStack_68 + 1;
      uVar10 = uVar1;
    } while ((int)uStack_68 < (int)uVar1);
  }
  FUN_0086a600();
  uVar5 = 0;
  uStack_4 = 1;
  if (0 < (int)uVar10) {
    do {
      uStack_40 = 0;
      uStack_3c = 0;
      uStack_38 = 0;
      uStack_34 = 0;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x14] <= uVar5)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(param_1[0x15] + uVar5 * 4);
      if (((*(int *)(iVar2 + 0x50) != 0) && ((~(byte)(*(uint *)(iVar2 + 0x58) >> 1) & 1) != 0)) &&
         ((~*(byte *)(iVar2 + 0x58) & 1) != 0)) {
        uStack_40 = *(undefined4 *)(iVar2 + 0xa4);
        uStack_3c = *(undefined4 *)(iVar2 + 0xa8);
        uStack_38 = *(undefined4 *)(iVar2 + 0xac);
        uStack_34 = *(undefined4 *)(iVar2 + 0xb0);
      }
      FUN_0099a6a0(&uStack_40,1);
      uVar5 = uVar5 + 1;
    } while ((int)uVar5 < (int)uVar10);
  }
  FUN_0091c600(uStack_50,1);
  *(byte *)(param_1[0x10] + 0xdc) = *(byte *)(param_1[0x10] + 0xdc) & 0xfe;
  FUN_00a15410();
  uVar10 = 0;
  if (0 < (int)uVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x14] <= uVar10)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(param_1[0x15] + uVar10 * 4);
      if (((*(int *)(iVar2 + 0x50) != 0) &&
          (cVar3 = (**(code **)(**(int **)(iVar2 + 0x50) + 0xdc))(), cVar3 != '\0')) &&
         ((~*(byte *)(iVar2 + 0x58) & 1) != 0)) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_48 <= uVar10)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        piVar7 = *(int **)(iStack_44 + uVar10 * 4);
        if ((((*(int *)(iVar2 + 0xa4) != *piVar7) || (*(int *)(iVar2 + 0xa8) != piVar7[1])) ||
            (*(int *)(iVar2 + 0xac) != piVar7[2])) || (*(int *)(iVar2 + 0xb0) != piVar7[3])) {
          (**(code **)(**(int **)(iVar2 + 0x50) + 0x15c))(1,0);
          (**(code **)(**(int **)(iVar2 + 0x50) + 0x160))();
        }
      }
      uVar10 = uVar10 + 1;
    } while ((int)uVar10 < (int)uVar1);
  }
  FUN_00a159c0(0);
  uStack_4 = 2;
  FUN_0086cea0();
  FUN_0086a880();
  uStack_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_00a192e0(int param_1)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int unaff_EBX;
  int iVar9;
  uint uVar10;
  int unaff_ESI;
  uint uVar11;
  int local_24;
  uint uStack_20;
  int iStack_1c;
  int local_18;
  int iStack_14;
  int local_10 [2];
  int iStack_8;
  
  piVar4 = *(int **)(param_1 + 0x84);
  if (piVar4 == (int *)0x0) {
    return 1;
  }
  if (*piVar4 != 3) {
    if (piVar4 == (int *)0x0) {
      return 1;
    }
    if (*piVar4 != 5) {
      return 1;
    }
    local_24 = piVar4[2];
    iVar9 = piVar4[3];
    local_18 = 0;
    local_10[0] = iVar9;
    iStack_8 = (**(code **)(**(int **)(param_1 + 0x44) + 4))(1);
    iStack_14 = (**(code **)(**(int **)(param_1 + 0x44) + 4))(3);
    iVar5 = (**(code **)(**(int **)(param_1 + 0x44) + 4))(0);
    iVar8 = *(int *)(iStack_8 + 0x2c);
    iVar7 = *(int *)(iStack_8 + 0x30);
    iVar6 = *(int *)(param_1 + 0x7c);
    iVar1 = *(int *)(param_1 + 0x80);
    iVar9 = FUN_00a15510(*(undefined4 *)(iVar9 + 0x50));
    iStack_14 = iVar9;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar9 == 0)) {
      FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0x10af,"wxAuiManager::DoEndResizeAction",
                   "pane_part",L"Pane border part not found -- shouldn\'t happen");
    }
    iVar2 = *(int *)(unaff_ESI + 0x1c);
    if ((iVar2 == 1) || (iVar2 == 3)) {
      iVar9 = (iVar8 - iVar6) - *(int *)(iVar9 + 0x1c);
    }
    else {
      iVar9 = (iVar7 - iVar1) - *(int *)(iVar9 + 0x20);
    }
    if ((iVar2 == 1) || (iVar2 == 3)) {
      iStack_8 = *(int *)(unaff_ESI + 0x14);
    }
    else {
      iStack_8 = *(int *)(unaff_ESI + 0x18);
    }
    iVar8 = *(int *)(unaff_ESI + 4);
    uVar10 = 0;
    uStack_20 = 0xffffffff;
    if (0 < iVar8) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_ESI + 4) <= uVar10)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar7 = *(int *)(*(int *)(unaff_ESI + 8) + uVar10 * 4);
        if (*(int *)(iVar7 + 0x50) == *(int *)(iStack_1c + 0x50)) {
          uStack_20 = uVar10;
        }
        if (0 < (int)uVar10) {
          iStack_8 = iStack_8 - iVar5;
        }
        if ((~(byte)((uint)*(undefined4 *)(iVar7 + 0x58) >> 8) & 1) == 0) {
          local_24 = local_24 + *(int *)(iVar7 + 0x94);
        }
        else {
          cVar3 = FUN_00a13f00();
          if (cVar3 == '\0') {
            iStack_8 = iStack_8 - *(int *)(iVar7 + 0x70);
          }
          else {
            iStack_8 = iStack_8 - *(int *)(iVar7 + 0x6c);
          }
        }
        uVar10 = uVar10 + 1;
      } while ((int)uVar10 < iVar8);
    }
    if (iStack_8 < iVar9) {
      iVar9 = iStack_8;
    }
    uVar10 = uStack_20;
    do {
      uVar10 = uVar10 + 1;
      uVar11 = 0xffffffff;
      if (iVar8 <= (int)uVar10) break;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_ESI + 4) <= uVar10)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      uVar11 = uVar10;
    } while ((~(byte)((uint)*(undefined4 *)(*(int *)(*(int *)(unaff_ESI + 8) + uVar10 * 4) + 0x58)
                     >> 8) & 1) != 0);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_20 == 0xffffffff)) {
      FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0x10f6,"wxAuiManager::DoEndResizeAction",
                   "pane_position != -1",L"Pane not found in dock");
    }
    iVar8 = iStack_1c;
    if (((iStack_8 == 0) || (local_24 == 0)) || (uVar11 == 0xffffffff)) {
      *(undefined4 *)(param_1 + 0x70) = 0;
      return 0;
    }
    iVar7 = (iVar9 * local_24) / iStack_8;
    iVar9 = 0;
    if ((*(int *)(iStack_1c + 0x74) != -1) && (*(int *)(iStack_1c + 0x78) != -1)) {
      if ((*(uint *)(iStack_1c + 0x58) >> 9 & 1) != 0) {
        iVar9 = local_18 * 2;
      }
      if (*(int *)(iStack_14 + 4) == 8) {
        iVar9 = iVar9 + *(int *)(iStack_1c + 0x78);
        if ((*(uint *)(iStack_1c + 0x58) >> 10 & 1) != 0) {
          iVar9 = iVar9 + local_10[0];
        }
      }
      else {
        iVar9 = iVar9 + *(int *)(iStack_1c + 0x74);
      }
    }
    iStack_8 = ((iVar9 + 1) * local_24) / iStack_8;
    if (iVar7 < iStack_8) {
      iVar7 = iStack_8;
    }
    iVar9 = *(int *)(iStack_1c + 0x94);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_ESI + 4) <= uVar11)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    iVar6 = *(int *)(*(int *)(*(int *)(unaff_ESI + 8) + uVar11 * 4) + 0x94) - (iVar7 - iVar9);
    iVar9 = iStack_8;
    if (-1 < iVar6) {
      iVar9 = iVar6;
    }
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(unaff_ESI + 4) <= uVar11)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0);
    }
    *(int *)(*(int *)(*(int *)(unaff_ESI + 8) + uVar11 * 4) + 0x94) = iVar9;
    *(int *)(iVar8 + 0x94) = iVar7;
    goto switchD_00a19415_caseD_4;
  }
  uVar11 = 0;
  iStack_14 = (**(code **)(**(int **)(param_1 + 0x44) + 4))(0);
  iVar9 = 0;
  iStack_1c = 0;
  (**(code **)(**(int **)(param_1 + 0x40) + 0x27c))(&local_18,&uStack_20);
  uVar10 = *(uint *)(param_1 + 0x5c);
  if (uVar10 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x5c) <= uVar11)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar8 = *(int *)(*(int *)(param_1 + 0x60) + uVar11 * 4);
      iVar7 = *(int *)(iVar8 + 0x1c);
      if ((iVar7 == 1) || (iVar7 == 3)) {
        local_24 = local_24 + *(int *)(iVar8 + 0x28);
      }
      if ((iVar7 == 4) || (iVar7 == 2)) {
        iVar9 = iVar9 + *(int *)(iVar8 + 0x28);
      }
      if (*(char *)(iVar8 + 0x30) != '\0') {
        iVar9 = iVar9 + iStack_1c;
      }
      uVar11 = uVar11 + 1;
    } while (uVar11 < uVar10);
  }
  uStack_20 = uStack_20 - iVar9;
  iVar9 = unaff_EBX - local_24;
  if (((*(int *)(param_1 + 0x40) != 0) &&
      (cVar3 = FUN_0083e950(&PTR_u_wxFrame_03239cfc), cVar3 != '\0')) &&
     (piVar4 = (int *)(**(code **)(**(int **)(param_1 + 0x40) + 0x3a8))(), piVar4 != (int *)0x0)) {
    (**(code **)(*piVar4 + 0x27c))(local_10,&iStack_1c);
    iVar9 = iVar9 - iStack_1c;
  }
  iVar6 = *(int *)(*(int *)(param_1 + 0x84) + 8);
  iVar7 = *(int *)(iStack_8 + 0x2c) - *(int *)(param_1 + 0x7c);
  iVar8 = *(int *)(iStack_8 + 0x30) - *(int *)(param_1 + 0x80);
  iVar1 = *(int *)(iVar6 + 0x28);
  switch(*(undefined4 *)(iVar6 + 0x1c)) {
  case 1:
    iVar8 = iVar8 - *(int *)(iVar6 + 0x10);
    if (iVar9 < iVar8 - iVar1) {
      iVar8 = iVar1 + iVar9;
    }
    *(int *)(*(int *)(*(int *)(param_1 + 0x84) + 8) + 0x28) = iVar8;
    break;
  case 2:
    iVar9 = ((*(int *)(iVar6 + 0x14) - *(int *)(*(int *)(param_1 + 0x84) + 0x24)) - iVar7) +
            *(int *)(iVar6 + 0xc);
    if ((int)uStack_20 < iVar9 - iVar1) {
      iVar9 = iVar1 + uStack_20;
    }
    *(int *)(*(int *)(*(int *)(param_1 + 0x84) + 8) + 0x28) = iVar9;
    break;
  case 3:
    iVar7 = ((*(int *)(iVar6 + 0x18) - *(int *)(*(int *)(param_1 + 0x84) + 0x28)) +
            *(int *)(iVar6 + 0x10)) - iVar8;
    if (iVar9 < iVar7 - iVar1) {
      iVar7 = iVar1 + iVar9;
    }
    iVar9 = *(int *)(*(int *)(param_1 + 0x84) + 8);
    goto LAB_00a1949c;
  case 4:
    iVar7 = iVar7 - *(int *)(iVar6 + 0xc);
    if ((int)uStack_20 < iVar7 - iVar1) {
      iVar7 = iVar1 + uStack_20;
    }
    iVar9 = *(int *)(*(int *)(param_1 + 0x84) + 8);
LAB_00a1949c:
    *(int *)(iVar9 + 0x28) = iVar7;
  }
switchD_00a19415_caseD_4:
  FUN_00a18ce0();
  FUN_00a159c0(0);
  return 1;
}



void __fastcall FUN_00a19b60(int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = *(uint *)(param_1 + 4);
  if (uVar2 != 0) {
    uVar3 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar2 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1 + 8) + uVar3 * 4);
      if (iVar1 != 0) {
        FUN_00445bb2();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar2 = *(uint *)(param_1 + 4);
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  return;
}



void FUN_00a19bd0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00a19b60(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_0086a880();
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a19c30(int param_1_00,undefined4 param_1,uint param_2)

{
  int iVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce226;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    pvVar2 = operator_new(0xb4);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = FUN_00445a53(param_1);
    }
    iVar1 = *(int *)(param_1_00 + 4);
    local_4 = 0xffffffff;
    if (iVar3 != 0) {
      FUN_0086a0a0(iVar3,iVar1 * 4 >> 2,param_2);
    }
    uVar5 = 1;
    if (1 < param_2) {
      iVar3 = iVar1 * 4;
      do {
        iVar3 = iVar3 + 4;
        pvVar2 = operator_new(0xb4);
        local_4 = 1;
        if (pvVar2 == (void *)0x0) {
          uVar4 = 0;
        }
        else {
          uVar4 = FUN_00445a53(param_1);
        }
        local_4 = 0xffffffff;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar5 + iVar1))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 *)(*(int *)(param_1_00 + 8) + iVar3) = uVar4;
        uVar5 = uVar5 + 1;
      } while (uVar5 < param_2);
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 FUN_00a19d60(void)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  bool bVar4;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee69d;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x248);
  local_4 = 0;
  bVar4 = pvVar2 == (void *)0x0;
  if (bVar4) {
    uVar3 = 0;
  }
  else {
    FUN_004325b6(L"frame");
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 2;
    uVar3 = FUN_00a18790(0,0xffffffff,local_54,&DAT_03238d0c,&DAT_03238d04,0x20401e40,local_30);
  }
  if (!bVar4) {
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50,uVar1);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
  }
  if (!bVar4) {
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c,uVar1);
    }
  }
  ExceptionList = local_c;
  return uVar3;
}



void __fastcall FUN_00a19e90(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee6f7;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxAuiManager::vftable;
  local_4 = 4;
  if ((undefined4 *)param_1[0x11] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x11])(1,uVar1);
  }
  local_4._0_1_ = 3;
  FUN_0086bb60();
  local_4._0_1_ = 2;
  FUN_00a15c90();
  local_4._0_1_ = 1;
  FUN_00a18640();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00a19bd0();
  local_4 = 0xffffffff;
  FUN_00846530();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00a19f30(int param_1)

{
  int *piVar1;
  void **ppvVar2;
  char cVar3;
  char cVar4;
  uint uVar5;
  void *pvVar6;
  undefined4 uVar7;
  bool bVar8;
  undefined4 uStack_ac;
  undefined4 uStack_a8;
  undefined4 uStack_a4;
  undefined4 uStack_a0;
  undefined auStack_9c [4];
  uint uStack_98;
  undefined4 uStack_88;
  uint uStack_84;
  void *pvStack_80;
  undefined **appuStack_78 [9];
  undefined auStack_54 [4];
  undefined4 uStack_50;
  uint uStack_3c;
  void *pvStack_38;
  undefined auStack_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee7c3;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffff3c;
  piVar1 = *(int **)(param_1 + 0x40);
  cVar4 = '\0';
  ppvVar2 = &local_c;
  local_c = ExceptionList;
  do {
    ExceptionList = ppvVar2;
    if (piVar1 == (int *)0x0) {
LAB_00a19f97:
      if (*(int **)(param_1 + 0xe0) != (int *)0x0) {
        (**(code **)(**(int **)(param_1 + 0xe0) + 0x50))(uVar5);
        *(undefined4 *)(param_1 + 0xe0) = 0;
      }
      uVar5 = *(uint *)(param_1 + 0x48) & 8;
      *(undefined *)(param_1 + 0x129) = 0x32;
      *(undefined4 *)(param_1 + 0xe0) = 0;
      if ((uVar5 == 0) || (cVar4 == '\0')) {
        if ((uVar5 != 0) || ((*(uint *)(param_1 + 0x48) & 0x10) != 0)) {
          pvVar6 = operator_new(0x248);
          uStack_4 = 6;
          bVar8 = pvVar6 == (void *)0x0;
          if (bVar8) {
            uVar7 = 0;
          }
          else {
            FUN_004325b6(L"frame");
            uStack_4 = CONCAT31(uStack_4._1_3_,7);
            FUN_004325b6(PTR_DAT_03236318);
            uStack_4 = 8;
            uStack_ac = 1;
            uStack_a8 = 1;
            uVar7 = FUN_00a18790(*(undefined4 *)(param_1 + 0x40),0xffffffff,auStack_9c,&DAT_03238d0c
                                 ,&uStack_ac,0x20000e,auStack_54);
          }
          *(undefined4 *)(param_1 + 0xe0) = uVar7;
          if (!bVar8) {
            _free(pvStack_80);
            if (7 < uStack_84) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1(uStack_98);
            }
            uStack_84 = 7;
            uStack_88 = 0;
            uStack_98 = uStack_98 & 0xffff0000;
          }
          if ((!bVar8) && (_free(pvStack_38), 7 < uStack_3c)) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(uStack_50);
          }
          *(undefined *)(param_1 + 0x129) = 0x80;
        }
      }
      else {
        pvVar6 = operator_new(0x228);
        uStack_4 = 0;
        bVar8 = pvVar6 == (void *)0x0;
        if (bVar8) {
          uVar7 = 0;
        }
        else {
          FUN_0043c211("frame");
          uStack_4 = CONCAT31(uStack_4._1_3_,1);
          FUN_004325b6(PTR_DAT_03236318);
          uStack_4 = 2;
          uStack_a4 = 1;
          uStack_a0 = 1;
          uVar7 = FUN_00820a7b(*(undefined4 *)(param_1 + 0x40),0xffffffff,appuStack_78,&DAT_03238d0c
                               ,&uStack_a4,0x20000e,auStack_30);
        }
        *(undefined4 *)(param_1 + 0xe0) = uVar7;
        if (!bVar8) {
          FUN_0040159c();
        }
        uStack_4 = 0xffffffff;
        if (!bVar8) {
          FUN_0040159c();
        }
        uVar7 = FUN_008ff080(appuStack_78,2);
        uStack_4 = 5;
        (**(code **)(**(int **)(param_1 + 0xe0) + 0x17c))(uVar7);
        uStack_4 = 0xffffffff;
        appuStack_78[0] = wxObject::vftable;
        FUN_0083e850();
      }
      ExceptionList = local_c;
      return;
    }
    cVar3 = FUN_0083e950(&PTR_u_wxFrame_03239cfc);
    if (cVar3 != '\0') {
      cVar4 = (**(code **)(*piVar1 + 0x20c))();
      goto LAB_00a19f97;
    }
    piVar1 = (int *)piVar1[0x11];
    ppvVar2 = (void **)ExceptionList;
  } while( true );
}



byte FUN_00a1a230(int param_1,int param_2)

{
  int iVar1;
  byte bVar2;
  int local_8;
  int local_4;
  
  bVar2 = 0;
  switch(*(int *)(param_2 + 0x5c) + -1) {
  case 0:
    bVar2 = (byte)(*(uint *)(param_1 + 0x58) >> 4);
    break;
  case 1:
    bVar2 = (byte)(*(uint *)(param_1 + 0x58) >> 3);
    break;
  case 2:
    bVar2 = (byte)(*(uint *)(param_1 + 0x58) >> 5);
    break;
  case 3:
    bVar2 = (byte)(*(uint *)(param_1 + 0x58) >> 2);
    break;
  default:
    goto switchD_00a1a248_caseD_4;
  }
  bVar2 = bVar2 & 1;
  if (bVar2 != 0) {
    FUN_00445bf6(param_2);
    iVar1 = FUN_0048a085(*(undefined4 *)(param_1 + 0x50),&PTR_u_wxAuiToolBar_0323f370);
    if ((iVar1 != 0) &&
       ((FUN_00a1d290(&local_8,*(undefined4 *)(param_1 + 0x5c)), *(int *)(param_1 + 0x6c) != local_8
        || (*(int *)(param_1 + 0x70) != local_4)))) {
      *(int *)(param_1 + 0x6c) = local_8;
      *(int *)(param_1 + 0x70) = local_4;
      *(undefined4 *)(param_1 + 0x8c) = DAT_03238d04;
      *(undefined4 *)(param_1 + 0x90) = DAT_03238d08;
    }
  }
switchD_00a1a248_caseD_4:
  return bVar2;
}



void FUN_00a1a300(int param_1)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = *(uint *)(param_1 + 4);
  uVar2 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar1 <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      FUN_00a19c30(*(undefined4 *)(*(int *)(param_1 + 8) + uVar2 * 4),1);
      uVar1 = *(uint *)(param_1 + 4);
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar1);
  }
  return;
}



undefined4 __thiscall FUN_00a1a360(undefined4 param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  FUN_00a1a300(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_00a1a3c0(int param_1,int param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  uint uVar7;
  uint local_14;
  uint local_10;
  
  FUN_00a15ea0();
  FUN_0086a880();
  FUN_00a186a0(param_3);
  FUN_00a19b60();
  FUN_0086a880();
  FUN_00a1a300(param_4);
  iVar1 = *(int *)(param_1 + 4);
  local_10 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 4) <= local_10)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(param_1 + 8) + local_10 * 4);
      iVar3 = *(int *)(iVar2 + 4);
      local_14 = 0;
      if (0 < iVar3) {
        do {
          iVar4 = *(int *)(param_4 + 4);
          uVar7 = 0;
          if (0 < iVar4) {
            do {
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 4) <= local_14)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                             "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
              }
              iVar5 = *(int *)(iVar2 + 8);
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_4 + 4) <= uVar7)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                             "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
              }
              if (*(int *)(iVar5 + local_14 * 4) == *(int *)(*(int *)(param_4 + 8) + uVar7 * 4)) {
                if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_2 + 4) <= uVar7)) {
                  FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                               "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
                }
                uVar6 = *(undefined4 *)(*(int *)(param_2 + 8) + uVar7 * 4);
                if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 4) <= local_14)) {
                  FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                               "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
                }
                *(undefined4 *)(*(int *)(iVar2 + 8) + local_14 * 4) = uVar6;
              }
              uVar7 = uVar7 + 1;
            } while ((int)uVar7 < iVar4);
          }
          local_14 = local_14 + 1;
        } while ((int)local_14 < iVar3);
      }
      local_10 = local_10 + 1;
    } while ((int)local_10 < iVar1);
  }
  return;
}



undefined4 __thiscall FUN_00a1a5b0(undefined4 param_1_00,byte param_1)

{
  FUN_00a19e90();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00a1a5d0(int param_1_00,uint param_1)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1_00 + 0x48);
  *(uint *)(param_1_00 + 0x48) = param_1;
  if (((uVar1 ^ param_1) & 0x38) != 0) {
    FUN_00a19f30();
  }
  return;
}



void __thiscall FUN_00a1a600(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  
  iVar1 = *(int *)(param_1_00 + 0x50);
  uVar4 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x50) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(param_1_00 + 0x54) + uVar4 * 4);
      if (((*(uint *)(iVar2 + 0x58) >> 0xd & 1) == 0) && ((*(byte *)(iVar2 + 0x58) & 1) == 0)) {
        FUN_00445ccb(0x10000,0);
        FUN_00445ccb(0x40000000,(byte)(*(uint *)(iVar2 + 0x58) >> 1) & 1);
        FUN_00445ccb(2,1);
      }
      uVar4 = uVar4 + 1;
    } while ((int)uVar4 < iVar1);
  }
  FUN_00445ccb(0x10000,1);
  FUN_00445ccb(2,0);
  *(undefined *)(param_1_00 + 0xcd) = 1;
  if (*(int *)(param_1 + 0x50) != 0) {
    cVar3 = (**(code **)(**(int **)(param_1 + 0x50) + 0xdc))();
    if (cVar3 == '\0') {
                    // WARNING: Could not recover jumptable at 0x00a1a6db. Too many branches
                    // WARNING: Treating indirect jump as call
      (**(code **)(**(int **)(param_1 + 0x50) + 0xcc))();
      return;
    }
  }
  return;
}



void __thiscall FUN_00a1a6f0(int param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  char cVar3;
  uint uVar4;
  
  iVar1 = *(int *)(param_1_00 + 0x50);
  uVar4 = 0;
  if (0 < iVar1) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x50) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      uVar2 = *(uint *)(*(int *)(*(int *)(param_1_00 + 0x54) + uVar4 * 4) + 0x58);
      if (((uVar2 >> 0xd & 1) == 0) && ((uVar2 & 1) == 0)) {
        FUN_00445ccb(2,(byte)(uVar2 >> 0x1e) & 1);
      }
      uVar4 = uVar4 + 1;
    } while ((int)uVar4 < iVar1);
  }
  FUN_00445ccb(0x10000,0);
  *(undefined *)(param_1_00 + 0xcd) = 0;
  if ((*(int *)(param_1 + 0x50) != 0) &&
     (cVar3 = (**(code **)(**(int **)(param_1 + 0x50) + 0xdc))(), cVar3 == '\0')) {
                    // WARNING: Could not recover jumptable at 0x00a1a79e. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(param_1 + 0x50) + 0xcc))();
    return;
  }
  return;
}



void __fastcall FUN_00a1a7b0(int param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  
  iVar1 = *(int *)(param_1 + 0x50);
  uVar3 = 0;
  if (0 < iVar1) {
    while( true ) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x50) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(param_1 + 0x54) + uVar3 * 4);
      if ((*(byte *)(iVar2 + 0x5a) & 1) != 0) break;
      uVar3 = uVar3 + 1;
      if (iVar1 <= (int)uVar3) {
        return;
      }
    }
    FUN_00a1a6f0(iVar2);
  }
  return;
}



undefined4 __thiscall FUN_00a1a810(int param_1_00,int param_1)

{
  code *pcVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int *piVar8;
  int *piVar9;
  uint unaff_EBX;
  int unaff_EBP;
  uint uVar10;
  undefined4 uVar11;
  uint uVar12;
  uint uVar13;
  int local_40;
  undefined local_3c [8];
  uint uStack_34;
  int local_30 [3];
  void *local_24 [2];
  undefined4 uStack_1c;
  undefined local_18 [8];
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee820;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0086a600(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  local_4 = 0;
  FUN_0086a600();
  local_4._0_1_ = 1;
  FUN_0086a600();
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00a1a3c0(local_30,local_18,param_1_00 + 0x58,param_1_00 + 0x4c);
  FUN_00a19c30(param_1,1);
  piVar8 = (int *)FUN_00a16db0(local_18,local_30,local_24,1);
  (**(code **)(**(int **)(param_1_00 + 0x40) + 0x27c))(&local_40,local_3c);
  piVar8[9] = 0;
  pcVar1 = *(code **)(*piVar8 + 0x4c);
  piVar8[10] = 0;
  piVar8[5] = unaff_EBP;
  piVar8[6] = unaff_EBX;
  (*pcVar1)();
  (**(code **)(*piVar8 + 0x40))(4,unaff_EBP,unaff_EBX);
  (**(code **)(*piVar8 + 0x4c))();
  uVar10 = uStack_34;
  uVar12 = 0;
  if (0 < (int)uStack_34) {
    do {
      uVar13 = uVar12;
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_34 <= uVar12)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar2 = *(int **)(local_30[0] + uVar12 * 4);
      piVar9 = (int *)piVar2[6];
      iVar3 = piVar9[4];
      iVar4 = piVar9[5];
      piVar9 = (int *)(**(code **)(*piVar9 + 0x14))(&stack0xffffffb4);
      iVar5 = *piVar9;
      iVar6 = piVar9[1];
      piVar2[7] = iVar3;
      piVar2[8] = iVar4;
      piVar2[9] = iVar5;
      piVar2[10] = iVar6;
      if (*piVar2 == 2) {
        iVar7 = piVar2[2];
        *(int *)(iVar7 + 0xc) = iVar3;
        *(int *)(iVar7 + 0x10) = iVar4;
        *(int *)(iVar7 + 0x14) = iVar5;
        *(int *)(iVar7 + 0x18) = iVar6;
      }
      uVar12 = uVar13 + 1;
      param_1 = iStack_10;
    } while ((int)uVar12 < (int)uVar10);
  }
  (**(code **)(*piVar8 + 4))(1);
  uVar10 = 0;
  if (0 < (int)unaff_EBX) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (unaff_EBX <= uVar10)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar3 = *(int *)(local_40 + uVar10 * 4);
      if (((*(int *)(param_1 + 0x5c) == *(int *)(iVar3 + 0x1c)) &&
          (*(int *)(param_1 + 0x60) == *(int *)(iVar3 + 0x20))) &&
         (*(int *)(param_1 + 100) == *(int *)(iVar3 + 0x24))) {
        iVar4 = *(int *)(iVar3 + 0x1c);
        if (((iVar4 == 4) || (iVar4 == 2)) || (iVar4 == 5)) {
          uVar11 = *(undefined4 *)(iVar3 + 0x10);
        }
        else {
          uVar11 = *(undefined4 *)(iVar3 + 0xc);
        }
        uStack_1c._0_1_ = 1;
        FUN_00a15c90();
        uStack_1c = (uint)uStack_1c._1_3_ << 8;
        FUN_00a19bd0();
        uStack_1c = 0xffffffff;
        FUN_00a18640();
        ExceptionList = local_24[0];
        return uVar11;
      }
      uVar10 = uVar10 + 1;
    } while ((int)uVar10 < (int)unaff_EBX);
  }
  uStack_1c._0_1_ = 3;
  FUN_0086cea0();
  FUN_0086a880();
  uStack_1c._0_1_ = 1;
  FUN_0086aa30();
  uStack_1c._0_1_ = 4;
  FUN_00a19b60();
  FUN_0086a880();
  uStack_1c = (uint)uStack_1c._1_3_ << 8;
  FUN_0086aa30();
  uStack_1c = 5;
  FUN_00a15ea0();
  FUN_0086a880();
  uStack_1c = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_24[0];
  return 0;
}



void __thiscall
FUN_00a1aaf0(int *param_1_00,undefined4 param_1,int param_2,int *param_3,int *param_4)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  undefined4 unaff_EBP;
  undefined4 uVar7;
  int *local_e4;
  int local_e0;
  int *local_dc;
  int iStack_d8;
  int iStack_d4;
  int iStack_d0;
  undefined local_cc [4];
  undefined local_c8 [84];
  uint uStack_74;
  int iStack_68;
  int iStack_64;
  void *pvStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00befd1b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_e4;
  ExceptionList = &local_c;
  local_e0 = param_2;
  local_e4 = param_3;
  local_dc = param_4;
  (**(code **)(*(int *)param_1_00[0x10] + 0x27c))
            (local_c8,local_cc,DAT_0323f878 ^ (uint)&stack0xffffff0c);
  FUN_00445a53(param_3);
  local_c = (void *)0x0;
  FUN_00445ccb(2,0);
  iVar2 = 5;
  if ((uStack_74 >> 0xd & 1) != 0) {
    iVar2 = 0;
  }
  iVar3 = *param_4;
  if ((((iVar3 < iVar2) && (iVar2 + -0x28 < iVar3)) && (0 < param_4[1])) && (param_4[1] < iStack_d4)
     ) {
    iVar2 = FUN_00a14860(3);
    iVar3 = FUN_00a14860(4);
    if (iVar2 < iVar3) {
      iVar2 = iVar3;
    }
    iVar3 = FUN_00a14860(1);
    if (iVar3 < iVar2) {
      iVar3 = iVar2;
    }
    iVar3 = iVar3 + 1;
    if ((uStack_74 >> 0xd & 1) != 0) {
      iVar3 = 10;
    }
    iVar2 = FUN_00445ccb(1,0);
    *(undefined4 *)(iVar2 + 0x5c) = 4;
LAB_00a1ac28:
    *(undefined4 *)(iVar2 + 100) = 0;
    *(int *)(iVar2 + 0x60) = iVar3;
    iVar3 = FUN_00a1a810(local_cc);
    iVar5 = param_4[1] - param_3[1];
LAB_00a1ac46:
    *(int *)(iVar2 + 0x68) = iVar5 - iVar3;
    goto LAB_00a1ac4b;
  }
  iVar5 = param_4[1];
  if (((iVar5 < iVar2) && (iVar2 + -0x28 < iVar5)) && ((0 < iVar3 && (iVar3 < iStack_d0)))) {
    iVar2 = FUN_00a14860(4);
    iVar3 = FUN_00a14860(1);
    if (iVar2 < iVar3) {
      iVar2 = iVar3;
    }
    iVar3 = FUN_00a14860(2);
    if (iVar3 < iVar2) {
      iVar3 = iVar2;
    }
    iVar3 = iVar3 + 1;
    if ((uStack_74 >> 0xd & 1) != 0) {
      iVar3 = 10;
    }
    iVar2 = FUN_00445ccb(1,0);
    *(undefined4 *)(iVar2 + 0x5c) = 1;
LAB_00a1acde:
    *(int *)(iVar2 + 0x60) = iVar3;
    *(undefined4 *)(iVar2 + 100) = 0;
    iVar3 = FUN_00a1a810(local_cc);
    iVar5 = *param_4 - *param_3;
    goto LAB_00a1ac46;
  }
  if (((iStack_d0 - iVar2 <= iVar3) && (iVar3 < (iStack_d0 - iVar2) + 0x28)) &&
     ((0 < iVar5 && (iVar5 < iStack_d4)))) {
    iVar2 = FUN_00a14860(1);
    iVar3 = FUN_00a14860(2);
    if (iVar2 < iVar3) {
      iVar2 = iVar3;
    }
    iVar3 = FUN_00a14860(3);
    if (iVar3 < iVar2) {
      iVar3 = iVar2;
    }
    iVar3 = iVar3 + 1;
    if ((uStack_74 >> 0xd & 1) != 0) {
      iVar3 = 10;
    }
    iVar2 = FUN_00445ccb(1,0);
    *(undefined4 *)(iVar2 + 0x5c) = 2;
    goto LAB_00a1ac28;
  }
  if ((((iStack_d4 - iVar2 <= iVar5) && (iVar5 < (iStack_d4 - iVar2) + 0x28)) && (0 < iVar3)) &&
     (iVar3 < iStack_d0)) {
    iVar2 = FUN_00a14860(4);
    iVar3 = FUN_00a14860(3);
    if (iVar2 < iVar3) {
      iVar2 = iVar3;
    }
    iVar3 = FUN_00a14860(2);
    if (iVar3 < iVar2) {
      iVar3 = iVar2;
    }
    iVar3 = iVar3 + 1;
    if ((uStack_74 >> 0xd & 1) != 0) {
      iVar3 = 10;
    }
    iVar2 = FUN_00445ccb(1,0);
    *(undefined4 *)(iVar2 + 0x5c) = 3;
    goto LAB_00a1acde;
  }
  piVar4 = (int *)FUN_00a14e30(iVar3,iVar5);
  if ((uStack_74 >> 0xd & 1) != 0) {
    if ((piVar4 == (int *)0x0) || (iVar2 = piVar4[2], iVar2 == 0)) goto LAB_00a1b0ca;
    if ((*(int *)(iVar2 + 0x1c) == 1) || (*(int *)(iVar2 + 0x1c) == 3)) {
      iVar3 = (*param_4 - *(int *)(iVar2 + 0xc)) - *param_3;
    }
    else {
      iVar3 = (param_4[1] - *(int *)(iVar2 + 0x10)) - param_3[1];
    }
    if (((*(char *)(iVar2 + 0x32) != '\0') && (*(int *)(iVar2 + 0x1c) != 5)) &&
       ((*param_4 < iStack_d0 && (((0 < *param_4 && (param_4[1] < iStack_d4)) && (0 < param_4[1]))))
       )) {
      *(undefined *)(param_1_00 + 0x33) = 0;
      iVar2 = piVar4[2];
      param_1_00[0x27] = *(int *)(iVar2 + 0xc);
      param_1_00[0x28] = *(int *)(iVar2 + 0x10);
      param_1_00[0x29] = *(int *)(iVar2 + 0x14);
      param_1_00[0x2a] = *(int *)(iVar2 + 0x18);
      FUN_008f7520(0xf,0xf);
      iVar2 = FUN_00445ccb(1,0);
      *(undefined4 *)(iVar2 + 0x5c) = *(undefined4 *)(piVar4[2] + 0x1c);
      *(undefined4 *)(iVar2 + 0x60) = *(undefined4 *)(piVar4[2] + 0x20);
      *(undefined4 *)(iVar2 + 100) = *(undefined4 *)(piVar4[2] + 0x24);
      *(int *)(iVar2 + 0x68) = iVar3;
      iVar2 = piVar4[2];
      if ((((param_4[1] < *(int *)(iVar2 + 0x10) + 1) && (cVar1 = FUN_00a13f00(), cVar1 != '\0')) ||
          ((iVar2 = piVar4[2], *param_4 < *(int *)(iVar2 + 0xc) + 1 &&
           (cVar1 = FUN_00a13f20(), cVar1 != '\0')))) && (1 < *(uint *)(iVar2 + 4))) {
        if ((*(int *)(iVar2 + 0x1c) == 1) || (*(int *)(iVar2 + 0x1c) == 4)) {
          iVar2 = piVar4[2];
          iStack_d8 = iStack_68;
          FUN_00a14940(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x20),
                       *(undefined4 *)(iVar2 + 0x24));
          iStack_68 = iStack_d8;
        }
        else {
          iVar2 = piVar4[2];
          FUN_00a14940(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x20),
                       *(int *)(iVar2 + 0x24) + 1);
          iStack_68 = *(int *)(piVar4[2] + 0x24) + 1;
        }
      }
      iVar2 = iStack_68;
      if ((((*(int *)(piVar4[2] + 0x18) + -2 + *(int *)(piVar4[2] + 0x10) < param_4[1]) &&
           (cVar1 = FUN_00a13f00(), cVar1 != '\0')) ||
          ((*(int *)(piVar4[2] + 0x14) + -2 + *(int *)(piVar4[2] + 0xc) < *param_4 &&
           (cVar1 = FUN_00a13f20(), cVar1 != '\0')))) && (1 < *(uint *)(piVar4[2] + 4))) {
        iVar3 = *(int *)(piVar4[2] + 0x1c);
        if ((iVar3 == 1) || (iVar3 == 4)) {
          iVar2 = piVar4[2];
          FUN_00a14940(*(undefined4 *)(iVar2 + 0x1c),*(undefined4 *)(iVar2 + 0x20),
                       *(int *)(iVar2 + 0x24) + 1);
          iStack_68 = *(int *)(piVar4[2] + 0x24) + 1;
        }
        else {
          iVar3 = piVar4[2];
          FUN_00a14940(*(undefined4 *)(iVar3 + 0x1c),*(undefined4 *)(iVar3 + 0x20),
                       *(undefined4 *)(iVar3 + 0x24));
          iStack_68 = iVar2;
        }
      }
      goto LAB_00a1ac4b;
    }
    if (((param_1_00[0x29] < 1) || (param_1_00[0x2a] < 1)) ||
       (cVar1 = FUN_008f7580(*param_4,param_4[1]), cVar1 != '\0')) {
      *(undefined *)(param_1_00 + 0x33) = 1;
      iStack_64 = FUN_00a1a810(local_cc);
      iStack_64 = (*param_4 - *param_3) - iStack_64;
      goto LAB_00a1ac4b;
    }
    if (((*(byte *)(param_1_00 + 0x12) & 1) != 0) && ((uStack_74 >> 6 & 1) != 0)) {
      FUN_00445ccb(1,1);
    }
    *(undefined *)(param_1_00 + 0x33) = 0;
    goto LAB_00a1b48d;
  }
  if (piVar4 == (int *)0x0) {
LAB_00a1b0ca:
    local_c = (void *)0xffffffff;
    FUN_00445bb2();
    goto LAB_00a1b4b9;
  }
  iVar2 = *piVar4;
  if (((iVar2 != 7) && (iVar2 != 0)) &&
     ((iVar2 != 1 && (((iVar2 != 8 && (iVar2 != 4)) && (iVar2 != 5)))))) {
    if (iVar2 != 3) {
      if (iVar2 != 6) goto LAB_00a1b0ca;
      goto LAB_00a1b112;
    }
LAB_00a1b117:
    if (*(int *)(piVar4[2] + 4) == 1) {
      piVar4 = (int *)FUN_00a142b0(0);
      piVar4 = (int *)FUN_00a15510(*(undefined4 *)(*piVar4 + 0x50));
      if (piVar4 != (int *)0x0) goto LAB_00a1b13c;
    }
    goto LAB_00a1b0ca;
  }
LAB_00a1b112:
  if (iVar2 == 3) goto LAB_00a1b117;
LAB_00a1b13c:
  iVar2 = piVar4[2];
  if ((iVar2 == 0) || (*(char *)(iVar2 + 0x31) == '\0')) {
    if ((piVar4[3] == 0) || (iVar2 = FUN_00a15510(*(undefined4 *)(piVar4[3] + 0x50)), iVar2 == 0))
    goto LAB_00a1b0ca;
    iVar3 = *(int *)(iVar2 + 0xc);
    iVar5 = *(int *)(iVar3 + 100);
    uVar7 = *(undefined4 *)(iVar3 + 0x5c);
    local_dc = *(int **)(iVar3 + 0x60);
    local_e0 = iVar5;
    switch(uVar7) {
    case 1:
      iVar3 = local_e4[1];
      iVar6 = *(int *)(iVar2 + 0x20);
      break;
    case 2:
      iVar6 = *(int *)(iVar2 + 0x1c) + *(int *)(iVar2 + 0x24);
      iVar3 = *local_e4;
      goto LAB_00a1b2d7;
    case 3:
      iVar6 = *(int *)(iVar2 + 0x28) + *(int *)(iVar2 + 0x20);
      iVar3 = local_e4[1];
LAB_00a1b2d7:
      if ((iVar3 <= iVar6 + -10) || (iVar6 < iVar3)) goto switchD_00a1b24c_caseD_5;
      goto LAB_00a1b274;
    case 4:
      iVar3 = *local_e4;
      iVar6 = *(int *)(iVar2 + 0x1c);
      break;
    case 5:
      iVar3 = (*(int *)(iVar2 + 0x24) * 0x14) / 100;
      iStack_d8 = 0x28;
      local_e0 = 0x28;
      if (iVar3 < 0x28) {
        iStack_d8 = iVar3;
      }
      iVar3 = (*(int *)(iVar2 + 0x28) * 0x14) / 100;
      if (iVar3 < 0x28) {
        local_e0 = iVar3;
      }
      iVar3 = *local_e4;
      iVar5 = *(int *)(iVar2 + 0x1c);
      local_dc = (int *)0x0;
      if ((iVar3 < iVar5) || (iVar5 + iStack_d8 <= iVar3)) {
        iVar6 = local_e4[1];
        if ((iVar6 < *(int *)(iVar2 + 0x20)) || (*(int *)(iVar2 + 0x20) + local_e0 <= iVar6)) {
          if ((iVar3 < (*(int *)(iVar2 + 0x24) - iStack_d8) + iVar5) ||
             (*(int *)(iVar2 + 0x24) + iVar5 <= iVar3)) {
            iVar2 = *(int *)(iVar2 + 0x28) + *(int *)(iVar2 + 0x20);
            if ((iVar6 < iVar2 - local_e0) || (iVar2 <= iVar6)) goto LAB_00a1b0ca;
            uVar7 = 3;
          }
          else {
            uVar7 = 2;
          }
        }
        else {
          uVar7 = 1;
        }
      }
      else {
        uVar7 = 4;
      }
      iVar5 = FUN_00a148d0(uVar7,0);
      iVar5 = iVar5 + 1;
      goto LAB_00a1b274;
    default:
      goto switchD_00a1b24c_caseD_5;
    }
    if ((iVar3 < iVar6) || (iVar6 + 10 <= iVar3)) {
switchD_00a1b24c_caseD_5:
      if (*(int *)(iVar2 + 4) == 8) {
        local_dc = (int *)(local_e4[1] - *(int *)(iVar2 + 0x20));
        iStack_d8 = *(int *)(iVar2 + 0x28);
      }
      else {
        local_dc = (int *)(*local_e4 - *(int *)(iVar2 + 0x1c));
        iStack_d8 = *(int *)(iVar2 + 0x24);
      }
      iStack_d8 = iStack_d8 / 2;
      if (iStack_d8 < (int)local_dc) {
LAB_00a1b440:
        iVar5 = *(int *)(iVar2 + 0xc);
        iVar3 = *(int *)(iVar5 + 0x68) + 1;
        FUN_00a149b0(*(undefined4 *)(iVar5 + 0x5c),*(undefined4 *)(iVar5 + 0x60),
                     *(undefined4 *)(iVar5 + 100),iVar3);
      }
      else {
        iVar5 = *(int *)(iVar2 + 0xc);
        iVar3 = *(int *)(iVar5 + 0x68);
        FUN_00a149b0(*(undefined4 *)(iVar5 + 0x5c),*(undefined4 *)(iVar5 + 0x60),
                     *(undefined4 *)(iVar5 + 100),iVar3);
        if (iStack_d8 < (int)local_dc) goto LAB_00a1b440;
      }
      iVar5 = FUN_00445ccb(1,0);
      *(undefined4 *)(iVar5 + 0x5c) = *(undefined4 *)(*(int *)(iVar2 + 8) + 0x1c);
      *(undefined4 *)(iVar5 + 0x60) = *(undefined4 *)(*(int *)(iVar2 + 8) + 0x20);
      *(undefined4 *)(iVar5 + 100) = *(undefined4 *)(*(int *)(iVar2 + 8) + 0x24);
      *(int *)(iVar5 + 0x68) = iVar3;
    }
    else {
LAB_00a1b274:
      FUN_00a14940(uVar7,local_dc,iVar5);
      iVar2 = FUN_00445ccb(1,0);
      *(undefined4 *)(iVar2 + 0x5c) = uVar7;
      *(int **)(iVar2 + 0x60) = local_dc;
      *(int *)(iVar2 + 100) = iVar5;
      *(undefined4 *)(iVar2 + 0x68) = 0;
    }
LAB_00a1b48d:
    (**(code **)(*param_1_00 + 0x60))(unaff_EBP,local_cc);
    goto LAB_00a1b4a1;
  }
  iVar3 = 0;
  switch(*(undefined4 *)(iVar2 + 0x1c)) {
  case 1:
    iVar3 = FUN_00a14860(4);
    uVar7 = 1;
    goto LAB_00a1b1b1;
  case 2:
    iVar3 = FUN_00a14860(1);
    iVar2 = FUN_00a14860(2);
    if (iVar3 < iVar2) {
      iVar3 = iVar2;
    }
    uVar7 = 3;
    break;
  case 3:
    iVar3 = FUN_00a14860(4);
    uVar7 = 3;
LAB_00a1b1b1:
    iVar2 = FUN_00a14860(uVar7);
    if (iVar3 < iVar2) {
      iVar3 = iVar2;
    }
    uVar7 = 2;
    break;
  case 4:
    iVar3 = FUN_00a14860(3);
    iVar2 = FUN_00a14860(4);
    if (iVar3 < iVar2) {
      iVar3 = iVar2;
    }
    uVar7 = 1;
    break;
  default:
    goto switchD_00a1b15c_caseD_4;
  }
  iVar2 = FUN_00a14860(uVar7);
  if (iVar3 <= iVar2) {
    iVar3 = iVar2;
  }
switchD_00a1b15c_caseD_4:
  FUN_00a14940(*(undefined4 *)(piVar4[2] + 0x1c),iVar3,0);
  iVar2 = FUN_00445ccb(1,0);
  *(undefined4 *)(iVar2 + 0x5c) = *(undefined4 *)(piVar4[2] + 0x1c);
  *(int *)(iVar2 + 0x60) = iVar3;
  *(undefined4 *)(iVar2 + 100) = 0;
  *(undefined4 *)(iVar2 + 0x68) = 0;
LAB_00a1ac4b:
  (**(code **)(*param_1_00 + 0x60))(unaff_EBP,local_cc);
LAB_00a1b4a1:
  local_c = (void *)0xffffffff;
  FUN_00445bb2();
LAB_00a1b4b9:
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a1b510(int param_1_00,int *param_1,int param_2,int param_3,undefined4 param_4)

{
  code *pcVar1;
  int *piVar2;
  wchar_t *pwVar3;
  char cVar4;
  uint uVar5;
  undefined4 uVar6;
  wchar_t *pwVar7;
  int *piVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  int local_114;
  int local_110;
  int local_10c;
  uint local_108;
  int local_104;
  uint local_100;
  int local_fc;
  undefined local_f8 [4];
  uint uStack_f4;
  int iStack_f0;
  undefined local_ec [4];
  int iStack_e8;
  int local_e0 [2];
  undefined4 local_d8;
  int local_d4;
  int local_d0;
  uint local_cc;
  undefined local_c4 [80];
  int local_74;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee8cf;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_114;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xfffffedc;
  ExceptionList = &local_c;
  local_d8 = param_4;
  local_d0 = param_2;
  local_e0[0] = param_3;
  local_114 = 0;
  local_110 = 0;
  local_10c = 0;
  local_108 = 0;
  local_d4 = param_1_00;
  FUN_0086a600(uVar5);
  local_4 = 0;
  FUN_0086a600();
  local_4._0_1_ = 1;
  FUN_0086a600();
  local_4._0_1_ = 2;
  uVar6 = FUN_00a14dd0(param_2);
  FUN_00445a53(uVar6);
  local_4._0_1_ = 3;
  pwVar3 = L"__HINT__";
  do {
    pwVar7 = pwVar3;
    pwVar3 = pwVar7 + 1;
  } while (*pwVar7 != L'\0');
  FID_conflict_assign(L"__HINT__",(int)(pwVar7 + -0x6ce398) >> 1);
  FUN_00445ccb(0x200,1);
  FUN_00445ccb(2,0);
  if (local_74 == 0) {
    *param_1 = local_114;
    param_1[1] = local_110;
    param_1[2] = local_10c;
    param_1[3] = local_108;
    local_4._0_1_ = 2;
    FUN_00445bb2();
    local_4._0_1_ = 1;
    FUN_00a15c90();
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_00a19bd0();
    local_4 = 0xffffffff;
    FUN_00a18640();
  }
  else {
    FUN_00a1a3c0(local_ec,&local_104,param_1_00 + 0x58,param_1_00 + 0x4c);
    uVar11 = 0;
    local_cc = local_100;
    uVar10 = local_100;
    if (0 < (int)local_100) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar10 <= uVar11)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          uVar10 = local_100;
        }
        if (*(int *)(*(int *)(local_fc + uVar11 * 4) + 0x50) == local_d0) {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar10 <= uVar11)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          FUN_00a14c40(*(undefined4 *)(local_fc + uVar11 * 4),0);
          FUN_00a18a70(uVar11,1);
          param_1_00 = local_d4;
          break;
        }
        uVar11 = uVar11 + 1;
      } while ((int)uVar11 < (int)local_cc);
    }
    cVar4 = FUN_00a1aaf0(local_ec,&local_104,local_c4,local_e0[0],local_d8);
    if (cVar4 == '\0') {
      *param_1 = local_114;
      param_1[1] = local_110;
      param_1[2] = local_10c;
      param_1[3] = local_108;
      local_4._0_1_ = 2;
      FUN_00445bb2();
      local_4._0_1_ = 4;
      FUN_0086cea0();
      FUN_0086a880();
      local_4._0_1_ = 1;
      FUN_0086aa30();
      local_4._0_1_ = 5;
      FUN_00a19b60();
      FUN_0086a880();
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_0086aa30();
      local_4 = 6;
    }
    else {
      FUN_00a19c30(local_c4,1);
      piVar8 = (int *)FUN_00a16db0(&local_104,local_ec,local_f8,1);
      (**(code **)(**(int **)(param_1_00 + 0x40) + 0x27c))(local_e0,&local_d8);
      iVar9 = local_e0[0];
      piVar8[9] = 0;
      pcVar1 = *(code **)(*piVar8 + 0x4c);
      piVar8[10] = 0;
      piVar8[5] = iStack_e8;
      piVar8[6] = local_e0[0];
      (*pcVar1)();
      (**(code **)(*piVar8 + 0x40))(4,iStack_e8,iVar9);
      (**(code **)(*piVar8 + 0x4c))();
      uVar10 = 0;
      uStack_f4 = local_108;
      if (0 < (int)local_108) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_108 <= uVar10)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          piVar2 = *(int **)(local_104 + uVar10 * 4);
          if (((*piVar2 == 7) && (piVar2[3] != 0)) &&
             (iVar9 = FUN_008507a0(L"__HINT__"), iVar9 == 0)) {
            piVar2 = (int *)piVar2[6];
            iStack_f0 = piVar2[5];
            uVar5 = piVar2[4];
            (**(code **)(*piVar2 + 0x14))(local_e0);
            break;
          }
          uVar10 = uVar10 + 1;
        } while ((int)uVar10 < (int)uStack_f4);
      }
      (**(code **)(*piVar8 + 4))(1);
      iVar9 = local_d4;
      if ((local_10c < 1) || ((int)local_108 < 1)) {
        *param_1 = local_114;
        param_1[1] = local_110;
        param_1[2] = local_10c;
        param_1[3] = local_108;
        local_4._0_1_ = 2;
        FUN_00445bb2();
        local_4._0_1_ = 7;
        FUN_0086cea0();
        FUN_0086a880();
        local_4._0_1_ = 1;
        FUN_0086aa30();
        local_4._0_1_ = 8;
        FUN_00a19b60();
        FUN_0086a880();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_0086aa30();
        local_4 = 9;
      }
      else {
        (**(code **)(**(int **)(local_d4 + 0x40) + 0x25c))(&local_114,&local_110,uVar5);
        iVar9 = (**(code **)(**(int **)(iVar9 + 0x40) + 100))();
        if (iVar9 == 2) {
          local_114 = local_114 - local_10c;
        }
        *param_1 = local_114;
        param_1[1] = local_110;
        param_1[2] = local_10c;
        param_1[3] = local_108;
        local_4._0_1_ = 2;
        FUN_00445bb2();
        local_4._0_1_ = 10;
        FUN_0086cea0();
        FUN_0086a880();
        local_4._0_1_ = 1;
        FUN_0086aa30();
        local_4._0_1_ = 0xb;
        FUN_00a19b60();
        FUN_0086a880();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_0086aa30();
        local_4 = 0xc;
      }
    }
    FUN_00a15ea0();
    FUN_0086a880();
    local_4 = 0xffffffff;
    FUN_0086aa30();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00a1bae0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined local_10 [8];
  int local_8;
  int local_4;
  
  FUN_00a1b510(local_10,param_1,param_2,param_3);
  if ((0 < local_8) && (0 < local_4)) {
    (**(code **)(*param_1_00 + 0x58))(local_10);
    return;
  }
  (**(code **)(*param_1_00 + 0x5c))();
  return;
}



void __thiscall FUN_00a1bb40(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int unaff_EBP;
  int local_104;
  int iStack_100;
  int local_fc;
  int local_f8;
  int local_f4;
  undefined auStack_f0 [8];
  undefined auStack_e8 [12];
  undefined auStack_dc [24];
  undefined auStack_c4 [88];
  byte bStack_6c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee92c;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_104;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffeec;
  ExceptionList = &local_c;
  iVar3 = FUN_00a14dd0(param_1);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(iVar3 + 0x50) == 0)) {
    FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0xe02,"wxAuiManager::OnFloatingPaneMoving",
                 "pane.IsOk()",L"Pane window not found",uVar2);
  }
  if (*(int *)(iVar3 + 0x54) != 0) {
    FUN_00910c30(&local_f8);
    local_104 = local_f4;
    local_fc = local_f8;
    (**(code **)(*(int *)param_1_00[0x10] + 0x260))(&local_fc,&local_104);
    local_f8 = local_104;
    local_f4 = unaff_EBP;
    (**(code **)(**(int **)(iVar3 + 0x54) + 0x270))(&local_104,&stack0xfffffef4);
    iStack_100 = local_f4 - local_104;
    local_104 = local_f8 - local_fc;
    if (((*(uint *)(iVar3 + 0x58) >> 0xd & 1) == 0) || (param_1_00[0x1c] != 5)) {
      cVar1 = (**(code **)(*param_1_00 + 0x54))(iVar3);
      if (cVar1 == '\0') {
        (**(code **)(*param_1_00 + 0x5c))();
      }
      else {
        FUN_00a1bae0(param_1,&local_f4,&stack0xfffffef8);
        (**(code **)(*(int *)param_1_00[0x10] + 0x160))();
      }
    }
    else {
      FUN_0086a600();
      uStack_4 = 0;
      FUN_0086a600();
      uStack_4._0_1_ = 1;
      FUN_0086a600();
      uStack_4._0_1_ = 2;
      FUN_00445a53(iVar3);
      uStack_4 = CONCAT31(uStack_4._1_3_,3);
      FUN_00a1a3c0(auStack_e8,auStack_dc,param_1_00 + 0x16,param_1_00 + 0x13);
      local_104 = 0;
      iStack_100 = 0;
      cVar1 = FUN_00a1aaf0(auStack_e8,auStack_dc,auStack_c4,auStack_f0,&local_104);
      if ((cVar1 != '\0') && ((bStack_6c & 1) == 0)) {
        FUN_00445bf6(auStack_c4);
        param_1_00[0x1c] = 4;
        param_1_00[0x22] = *(int *)(iVar3 + 0x50);
        FUN_00a18ce0();
      }
      uStack_4._0_1_ = 2;
      FUN_00445bb2();
      uStack_4._0_1_ = 1;
      FUN_00a15c90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00a19bd0();
      uStack_4 = 0xffffffff;
      FUN_00a18640();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a1bdc0(int *param_1_00,undefined4 param_1)

{
  char cVar1;
  int iVar2;
  int unaff_EDI;
  char *pcStack_30;
  char *pcStack_2c;
  wchar_t *pwStack_28;
  int local_1c;
  undefined4 local_18;
  int local_14;
  undefined4 auStack_10 [3];
  undefined4 uStack_4;
  
  pwStack_28 = (wchar_t *)param_1;
  pcStack_2c = (char *)0xa1bdd1;
  iVar2 = FUN_00a14dd0();
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(iVar2 + 0x50) == 0)) {
    pwStack_28 = L"Pane window not found";
    pcStack_2c = "pane.IsOk()";
    pcStack_30 = "wxAuiManager::OnFloatingPaneMoved";
    FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0xe69);
  }
  if (*(int *)(iVar2 + 0x54) != 0) {
    pwStack_28 = (wchar_t *)&local_18;
    pcStack_2c = (char *)0xa1be17;
    FUN_00910c30();
    local_1c = local_14;
    pwStack_28 = (wchar_t *)&local_1c;
    param_1 = local_18;
    pcStack_2c = (char *)&param_1;
    pcStack_30 = (char *)0xa1be41;
    (**(code **)(*(int *)param_1_00[0x10] + 0x260))();
    auStack_10[0] = uStack_4;
    pcStack_30 = &stack0xffffffdc;
    (**(code **)(**(int **)(iVar2 + 0x54) + 0x270))(&uStack_4);
    local_1c = unaff_EDI - (int)pcStack_2c;
    cVar1 = (**(code **)(*param_1_00 + 0x54))(iVar2);
    if (cVar1 != '\0') {
      FUN_00a1aaf0(param_1_00 + 0x16,param_1_00 + 0x13,iVar2,&local_1c,&stack0xffffffdc);
    }
    if ((*(byte *)(iVar2 + 0x58) & 1) == 0) {
      if (*(char *)((int)param_1_00 + 0xcd) != '\0') {
        FUN_00a1a7b0();
      }
    }
    else {
      (**(code **)(**(int **)(iVar2 + 0x54) + 0x270))(auStack_10,&pcStack_30);
      *(undefined4 *)(iVar2 + 0x84) = auStack_10[0];
      *(char **)(iVar2 + 0x88) = pcStack_30;
      if ((*(byte *)(param_1_00 + 0x12) & 4) != 0) {
        (**(code **)(**(int **)(iVar2 + 0x54) + 0x208))(0xff);
      }
    }
    FUN_00a18ce0();
    (**(code **)(*param_1_00 + 0x5c))();
  }
  return;
}



void __thiscall FUN_00a1bf20(int param_1_00,int param_1)

{
  undefined4 uVar1;
  int *piVar2;
  char cVar3;
  uint uVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  int iVar7;
  int iVar8;
  int *piVar9;
  uint uVar10;
  uint local_48;
  uint local_44;
  int local_40;
  int local_3c;
  undefined local_38 [12];
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined local_1c [16];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee968;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  iVar7 = *(int *)(param_1 + 0x30);
  if ((*(int *)(param_1_00 + 0xc0) != *(int *)(param_1 + 0x2c)) ||
     (*(int *)(param_1_00 + 0xc4) != iVar7)) {
    *(int *)(param_1_00 + 0xc0) = *(int *)(param_1 + 0x2c);
    iVar8 = *(int *)(param_1_00 + 0x70);
    *(int *)(param_1_00 + 0xc4) = iVar7;
    if (iVar8 == 1) {
      if (*(int *)(param_1_00 + 200) == -1) {
        uVar5 = FUN_00a0a410(*(undefined4 *)(param_1_00 + 0x84),0);
        *(undefined4 *)(param_1_00 + 200) = uVar5;
      }
      else {
        uVar5 = FUN_009cde80(*(int *)(param_1_00 + 200));
        *(undefined4 *)(param_1_00 + 0x84) = uVar5;
      }
      iVar7 = *(int *)(param_1_00 + 0x84);
      if (iVar7 != 0) {
        local_48 = *(uint *)(iVar7 + 0x1c);
        local_44 = *(uint *)(iVar7 + 0x20);
        if (*(int *)(iVar7 + 4) == 4) {
          local_44 = *(int *)(param_1 + 0x30) - *(int *)(param_1_00 + 0x80);
          local_44 = ((int)local_44 < 0) - 1 & local_44;
        }
        else {
          local_48 = *(int *)(param_1 + 0x2c) - *(int *)(param_1_00 + 0x7c);
          local_48 = ((int)local_48 < 0) - 1 & local_48;
        }
        if ((*(uint *)(param_1_00 + 0x48) & 0x100) == 0) {
          uVar5 = *(undefined4 *)(iVar7 + 0x28);
          uVar1 = *(undefined4 *)(iVar7 + 0x24);
          puVar6 = (undefined4 *)FUN_008fd080(&local_40,&local_48);
          local_2c = *puVar6;
          local_28 = puVar6[1];
          local_24 = uVar1;
          local_20 = uVar5;
          FUN_0094bed0();
          local_4 = 0;
          if ((0 < *(int *)(param_1_00 + 0x94)) && (0 < *(int *)(param_1_00 + 0x98))) {
            FUN_00a161e0(local_38);
            *(undefined4 *)(param_1_00 + 0x8c) = 0;
            *(undefined4 *)(param_1_00 + 0x90) = 0;
            *(undefined4 *)(param_1_00 + 0x94) = 0;
            *(undefined4 *)(param_1_00 + 0x98) = 0;
          }
          FUN_00924b60(local_1c);
          cVar3 = FUN_008f76e0(&local_2c);
          if (cVar3 != '\0') {
            FUN_00a161e0(local_38);
            *(undefined4 *)(param_1_00 + 0x8c) = local_2c;
            *(undefined4 *)(param_1_00 + 0x90) = local_28;
            *(undefined4 *)(param_1_00 + 0x94) = local_24;
            *(undefined4 *)(param_1_00 + 0x98) = local_20;
          }
          local_4 = 0xffffffff;
          FUN_00457221();
        }
        else {
          FUN_0091fac0();
          FUN_00a192e0(param_1);
          FUN_0091f8e0();
        }
      }
    }
    else if (iVar8 == 3) {
      iVar7 = FUN_008fedb0(8,0,uVar4);
      iVar8 = FUN_008fedb0(9,0);
      if ((*(int *)(param_1_00 + 0x84) != 0) &&
         ((uVar4 = *(int *)(param_1 + 0x2c) - *(int *)(param_1_00 + 0x74),
          uVar10 = (int)uVar4 >> 0x1f, iVar7 < (int)((uVar4 ^ uVar10) - uVar10) ||
          (uVar4 = *(int *)(param_1 + 0x30) - *(int *)(param_1_00 + 0x78),
          uVar10 = (int)uVar4 >> 0x1f, iVar8 < (int)((uVar4 ^ uVar10) - uVar10))))) {
        iVar7 = *(int *)(*(int *)(param_1_00 + 0x84) + 0xc);
        if ((*(uint *)(iVar7 + 0x58) >> 0xd & 1) == 0) {
          if (((*(byte *)(param_1_00 + 0x48) & 1) != 0) && ((*(uint *)(iVar7 + 0x58) >> 6 & 1) != 0)
             ) {
            *(undefined4 *)(param_1_00 + 0x70) = 5;
            local_48 = *(uint *)(param_1 + 0x2c);
            local_44 = *(undefined4 *)(param_1 + 0x30);
            FUN_008fd080(&local_40,&local_48);
            iVar8 = *(int *)(param_1_00 + 0x80);
            *(int *)(iVar7 + 0x84) = local_40 - *(int *)(param_1_00 + 0x7c);
            *(int *)(iVar7 + 0x88) = local_3c - iVar8;
            if ((*(byte *)(iVar7 + 0x5a) & 1) != 0) {
              FUN_00a1a6f0(iVar7);
            }
            FUN_00445ccb(1,1);
            FUN_00a18ce0();
            *(undefined4 *)(param_1_00 + 0x88) = *(undefined4 *)(iVar7 + 0x54);
            FUN_004555c3(&local_40);
            if (local_40 <= *(int *)(param_1_00 + 0x7c)) {
              *(undefined4 *)(param_1_00 + 0x7c) = 0x1e;
            }
          }
        }
        else {
          *(undefined4 *)(param_1_00 + 0x70) = 4;
          *(undefined4 *)(param_1_00 + 0x88) = *(undefined4 *)(iVar7 + 0x50);
        }
      }
    }
    else if (iVar8 == 5) {
      if (*(int *)(param_1_00 + 0x88) != 0) {
        cVar3 = FUN_0083e950(&PTR_u_wxAuiFloatingFrame_0323f4f8);
        if (cVar3 == '\0') {
          iVar7 = FUN_00a14dd0(*(undefined4 *)(param_1_00 + 0x88));
          *(undefined4 *)(param_1_00 + 0x88) = *(undefined4 *)(iVar7 + 0x54);
        }
        local_40 = *(int *)(param_1 + 0x2c);
        local_3c = *(undefined4 *)(param_1 + 0x30);
        FUN_008fd080(&local_48,&local_40);
        FUN_004555a8(local_48 - *(int *)(param_1_00 + 0x7c),local_44 - *(int *)(param_1_00 + 0x80),0
                    );
      }
    }
    else if (iVar8 == 4) {
      iVar7 = FUN_00a14dd0(*(undefined4 *)(param_1_00 + 0x88));
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(iVar7 + 0x50) == 0)) {
        FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0x1223,"wxAuiManager::OnMotion",
                     "pane.IsOk()",L"Pane window not found");
      }
      FUN_00445ccb(0x80000000,1);
      local_40 = *(int *)(param_1 + 0x2c);
      local_3c = *(undefined4 *)(param_1 + 0x30);
      FUN_00a1aaf0(param_1_00 + 0x58,param_1_00 + 0x4c,iVar7,&local_40,(int *)(param_1_00 + 0x7c));
      if ((*(byte *)(iVar7 + 0x58) & 1) != 0) {
        local_40 = *(int *)(param_1 + 0x2c);
        local_3c = *(undefined4 *)(param_1 + 0x30);
        FUN_008fd080(&local_48,&local_40);
        iVar8 = *(int *)(param_1_00 + 0x80);
        *(uint *)(iVar7 + 0x84) = local_48 - *(int *)(param_1_00 + 0x7c);
        *(uint *)(iVar7 + 0x88) = local_44 - iVar8;
      }
      FUN_00a18ce0();
      if ((*(byte *)(iVar7 + 0x58) & 1) != 0) {
        *(uint *)(iVar7 + 0x58) = *(uint *)(iVar7 + 0x58) & 0x7fffffff;
        *(undefined4 *)(param_1_00 + 0x70) = 5;
        *(undefined4 *)(param_1_00 + 0x88) = *(undefined4 *)(iVar7 + 0x54);
      }
    }
    else {
      piVar9 = (int *)FUN_00a14e30(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30));
      if ((piVar9 == (int *)0x0) || (*piVar9 != 8)) {
        if (*(int *)(param_1_00 + 0xac) == 0) {
          *(undefined *)(param_1 + 0x24) = 1;
        }
        else {
          *(undefined4 *)(param_1_00 + 0xac) = 0;
          FUN_00a159c0(0);
        }
      }
      else {
        piVar2 = *(int **)(param_1_00 + 0xac);
        if (piVar9 != piVar2) {
          if (piVar2 != (int *)0x0) {
            FUN_00a181f0(piVar2,param_1);
            FUN_00a159c0(0);
          }
          FUN_00a181f0(piVar9,param_1);
          *(int **)(param_1_00 + 0xac) = piVar9;
        }
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a1c410(int param_1_00,int param_1,int param_2)

{
  undefined4 uVar1;
  int iVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  int *piVar6;
  clock_t cVar7;
  undefined4 *puVar8;
  __time64_t _Var9;
  undefined4 uVar10;
  undefined auStack_198 [3];
  char local_195;
  undefined4 uStack_194;
  undefined4 uStack_190;
  undefined auStack_18c [200];
  undefined local_c4 [80];
  int local_74;
  uint local_6c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee9b1;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_198;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xfffffe58;
  ExceptionList = &local_c;
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    if (param_1 == 0) goto LAB_00a1c770;
  }
  else if (param_1 == 0) {
    FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0x3d5,"wxAuiManager::AddPane","window",
                 L"NULL window ptrs are not allowed",uVar4);
    goto LAB_00a1c770;
  }
  iVar5 = FUN_00a14dd0(*(undefined4 *)(param_2 + 0x50));
  if (*(int *)(iVar5 + 0x50) != 0) goto LAB_00a1c770;
  local_195 = '\0';
  if ((*(int *)(param_2 + 0x14) != 0) &&
     (iVar5 = FUN_00a162a0(param_2), *(int *)(iVar5 + 0x50) != 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0x3e4,"wxAuiManager::AddPane",
                   "Assert failure",L"A pane with that name already exists in the manager!",uVar4);
    }
    local_195 = '\x01';
  }
  if ((~*(byte *)(param_2 + 0x58) & 1) != 0) {
    FUN_00a1a7b0();
  }
  FUN_00445a53(param_2);
  local_4 = 0;
  piVar6 = (int *)FUN_0048a085(param_1,&PTR_u_wxAuiToolBar_0323f370);
  if (piVar6 != (int *)0x0) {
    FUN_00445933();
    local_4._0_1_ = 1;
    iVar5 = FUN_004458ab();
    uVar4 = *(uint *)(iVar5 + 0x58);
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_00445bb2();
    if ((local_6c & 0x3c) == (uVar4 & 0x3c)) {
      uVar4 = (**(code **)(*piVar6 + 0xe8))();
      if ((uVar4 & 0x20) == 0) {
        cVar3 = (**(code **)(*piVar6 + 0xe8))();
        if (-1 < cVar3) goto LAB_00a1c5a0;
        FUN_00445ccb(4,0);
        uVar10 = 8;
      }
      else {
        FUN_00445ccb(0x10,0);
        uVar10 = 0x20;
      }
      FUN_00445ccb(uVar10,0);
    }
    else {
      local_74 = param_1;
      cVar3 = FUN_00a14d60();
      if (cVar3 == '\0') {
        if (PTR_FUN_03235c4c != (undefined *)0x0) {
          FUN_008402e0("..\\..\\src\\aui\\framemanager.cpp",0x409,"wxAuiManager::AddPane",
                       "test.IsValid()","toolbar style and pane docking flags are incompatible");
        }
        local_4 = 0xffffffff;
        FUN_00445bb2();
        goto LAB_00a1c770;
      }
    }
  }
LAB_00a1c5a0:
  FUN_00a19c30(local_c4,1);
  iVar5 = FUN_00a1d330();
  *(int *)(iVar5 + 0x50) = param_1;
  if ((*(int *)(iVar5 + 0x14) == 0) || (local_195 != '\0')) {
    FUN_0081c0f1(L"%08lx%08x%08x%08lx");
    uVar10 = *(undefined4 *)(param_1_00 + 0x50);
    local_4._0_1_ = 2;
    _Var9 = __time64((__time64_t *)0x0);
    uStack_190 = (undefined4)((ulonglong)_Var9 >> 0x20);
    uVar1 = *(undefined4 *)(iVar5 + 0x50);
    cVar7 = _clock();
    FUN_00a185c0(auStack_18c,uVar1,(int)_Var9,cVar7,uVar10);
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0081b5bc();
  }
  if (*(int *)(iVar5 + 0x94) == 0) {
    *(undefined4 *)(iVar5 + 0x94) = 100000;
  }
  if ((*(uint *)(iVar5 + 0x58) >> 0x16 & 1) != 0) {
    uStack_194 = 0x66;
    FUN_009fb100(&uStack_194,1);
  }
  if ((*(byte *)(iVar5 + 0x5b) & 1) != 0) {
    uStack_194 = 0x68;
    FUN_009fb100(&uStack_194,1);
  }
  if ((*(uint *)(iVar5 + 0x58) >> 0x15 & 1) != 0) {
    uStack_194 = 0x65;
    FUN_009fb100(&uStack_194,1);
  }
  if (((*(uint *)(iVar5 + 0x58) >> 0xb & 1) != 0) &&
     (cVar3 = FUN_0083e950(&PTR_u_wxAuiToolBar_0323f370), cVar3 != '\0')) {
    FUN_00445ccb(0x800,0);
    FUN_00a23840(1);
  }
  if (((*(int *)(iVar5 + 0x6c) == DAT_03238d04) && (*(int *)(iVar5 + 0x70) == DAT_03238d08)) &&
     (*(int *)(iVar5 + 0x50) != 0)) {
    puVar8 = (undefined4 *)FUN_0043d8d2(&uStack_194);
    *(undefined4 *)(iVar5 + 0x6c) = *puVar8;
    *(undefined4 *)(iVar5 + 0x70) = puVar8[1];
    cVar3 = FUN_0083e950(&PTR_u_wxToolBar_0323c454);
    if (cVar3 != '\0') {
      puVar8 = (undefined4 *)FUN_0091b530(&uStack_194);
      *(undefined4 *)(iVar5 + 0x6c) = *puVar8;
      *(undefined4 *)(iVar5 + 0x70) = puVar8[1];
    }
    cVar3 = FUN_00457169((int *)(iVar5 + 0x74),&DAT_03238d04);
    if (cVar3 != '\0') {
      iVar2 = *(int *)(iVar5 + 0x74);
      if (*(int *)(iVar5 + 0x6c) < iVar2) {
        *(int *)(iVar5 + 0x6c) = iVar2;
      }
      if (*(int *)(iVar5 + 0x70) < *(int *)(iVar5 + 0x78)) {
        *(int *)(iVar5 + 0x70) = *(int *)(iVar5 + 0x78);
      }
    }
  }
  local_4 = 0xffffffff;
  FUN_00445bb2();
LAB_00a1c770:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined __thiscall
FUN_00a1c830(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 local_8;
  undefined4 local_4;
  
  cVar1 = FUN_00a1c410(param_1,param_2);
  if (cVar1 == '\0') {
    return 0;
  }
  uVar2 = FUN_00a14dd0(param_1);
  local_8 = 0;
  local_4 = 0;
  FUN_00a1aaf0(param_1_00 + 0x58,param_1_00 + 0x4c,uVar2,param_3,&local_8);
  return 1;
}



void __thiscall FUN_00a1c890(int param_1_00,int param_1)

{
  int *piVar1;
  char cVar2;
  
  if ((*(byte *)(param_1 + 0x5a) & 1) != 0) {
    FUN_00a1a6f0(param_1);
  }
  if (*(int **)(param_1 + 0x50) != (int *)0x0) {
    cVar2 = (**(code **)(**(int **)(param_1 + 0x50) + 0xdc))();
    if (cVar2 != '\0') {
      (**(code **)(**(int **)(param_1 + 0x50) + 0xcc))(0);
    }
  }
  piVar1 = *(int **)(param_1 + 0x50);
  if ((piVar1 != (int *)0x0) && (piVar1[0x11] != *(int *)(param_1_00 + 0x40))) {
    (**(code **)(*piVar1 + 0x120))(*(int *)(param_1_00 + 0x40));
  }
  if (*(int **)(param_1 + 0x54) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0x54) + 0x50))();
    *(undefined4 *)(param_1 + 0x54) = 0;
  }
  if ((*(uint *)(param_1 + 0x58) >> 0xc & 1) == 0) {
    FUN_00445ccb(2,1);
  }
  else {
    piVar1 = *(int **)(param_1 + 0x50);
    FUN_00a18b40(piVar1);
    if (piVar1 != (int *)0x0) {
      (**(code **)(*piVar1 + 0x50))();
      return;
    }
  }
  return;
}



void __thiscall FUN_00a1c930(int *param_1_00,undefined4 param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  undefined **local_48 [10];
  undefined4 local_20;
  int local_1c;
  undefined4 local_18;
  char local_14;
  undefined local_13;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bee9e8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  iVar3 = FUN_00a14dd0(param_1);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(iVar3 + 0x50) == 0)) {
    FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0xec7,"wxAuiManager::OnFloatingPaneClosed",
                 "pane.IsOk()",L"Pane window not found",uVar2);
  }
  FUN_00845a20(0,DAT_032ea81c);
  local_48[0] = wxAuiManagerEvent::vftable;
  local_20 = 0;
  local_18 = 0;
  local_14 = '\0';
  local_10 = 0;
  local_13 = *(undefined *)(param_2 + 0x2a);
  local_4 = 0;
  local_1c = iVar3;
  if (param_1_00[0x10] != 0) {
    cVar1 = (**(code **)(**(int **)(param_1_00[0x10] + 0x70) + 0x18))(local_48);
    if (cVar1 != '\0') goto LAB_00a1c9fb;
  }
  (**(code **)(*param_1_00 + 0x18))(local_48);
LAB_00a1c9fb:
  if (local_14 == '\0') {
    iVar4 = FUN_00a14dd0(param_1);
    if (*(int *)(iVar4 + 0x50) != 0) {
      FUN_00a1c890(iVar3);
    }
  }
  else if (*(char *)(param_2 + 0x2a) == '\0') {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x849,"wxCloseEvent::Veto","m_canVeto"
                   ,L"call to Veto() ignored (can\'t veto this event)");
    }
  }
  else {
    *(undefined *)(param_2 + 0x29) = 1;
  }
  local_4 = 0xffffffff;
  local_48[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a1ca80(int *param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  undefined **local_84 [10];
  int *local_5c;
  undefined4 local_58;
  undefined4 local_54;
  char local_50;
  undefined local_4f;
  undefined4 local_4c;
  undefined **local_48 [10];
  int *local_20;
  undefined4 local_1c;
  char local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beea2e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 0x2c) == 0)) {
    FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0x1291,"wxAuiManager::OnPaneButton","evt.pane"
                 ,L"Pane Info passed to wxAuiManager::OnPaneButton must be non-null",
                 DAT_0323f878 ^ (uint)&stack0xffffff6c);
  }
  iVar3 = *(int *)(param_1 + 0x30);
  iVar1 = *(int *)(param_1 + 0x2c);
  local_5c = param_1_00;
  if (iVar3 == 0x65) {
    FUN_00845a20(0,DAT_032ea81c);
    local_84[0] = wxAuiManagerEvent::vftable;
    local_54 = 0;
    local_50 = '\0';
    local_4f = 1;
    local_4c = 0;
    local_58 = *(undefined4 *)(param_1 + 0x2c);
    local_4 = 0;
    if ((param_1_00[0x10] == 0) ||
       (cVar2 = (**(code **)(**(int **)(param_1_00[0x10] + 0x70) + 0x18))(local_84), cVar2 == '\0'))
    {
      (**(code **)(*param_1_00 + 0x18))(local_84);
    }
    if (local_50 == '\0') {
      iVar3 = FUN_00a14dd0(*(undefined4 *)(iVar1 + 0x50));
      if (*(int *)(iVar3 + 0x50) != 0) {
        FUN_00a1c890(iVar1);
      }
LAB_00a1cbc8:
      FUN_00a18ce0();
    }
LAB_00a1cbcf:
    local_4 = 0xffffffff;
    local_84[0] = wxObject::vftable;
    FUN_0083e850();
  }
  else {
    if (iVar3 == 0x66) {
      if ((*(byte *)(iVar1 + 0x5a) & 1) == 0) {
        FUN_00a142f0(DAT_032ea820);
        local_58 = *(undefined4 *)(param_1 + 0x2c);
        local_4 = 1;
        FUN_00a14f90(local_84);
        if (local_50 == '\0') {
          FUN_00a1a600(iVar1);
          goto LAB_00a1cbc8;
        }
        goto LAB_00a1cbcf;
      }
      if ((*(byte *)(iVar1 + 0x5a) & 1) != 0) {
        FUN_00a142f0(DAT_032ea824);
        local_1c = *(undefined4 *)(param_1 + 0x2c);
        local_4 = 2;
        local_20 = param_1_00;
        FUN_00a14f90(local_48);
        if (local_14 == '\0') {
          FUN_00a1a6f0(iVar1);
          FUN_00a18ce0();
        }
        local_4 = 0xffffffff;
        local_48[0] = wxObject::vftable;
        FUN_0083e850();
        ExceptionList = local_c;
        return;
      }
    }
    if (iVar3 == 0x68) {
      if (((*(byte *)(param_1_00 + 0x12) & 1) != 0) && ((*(uint *)(iVar1 + 0x58) >> 6 & 1) != 0)) {
        FUN_00445ccb(1,1);
      }
      FUN_00a18ce0();
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a1ccb0(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined *puVar3;
  undefined4 uVar4;
  int iVar5;
  undefined local_1bc [4];
  uint local_1b8;
  undefined4 local_1a8;
  uint local_1a4;
  void *local_1a0;
  undefined local_198 [4];
  undefined4 local_194;
  uint local_180;
  void *local_17c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beea7c;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffe34;
  ExceptionList = &local_c;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1 == 0)) {
    FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0x37c,"wxAuiManager::SetManagedWindow",
                 &DAT_00fb7634,L"specified window must be non-NULL",uVar2);
  }
  *(int *)(param_1_00 + 0x40) = param_1;
  FUN_0091bd90(param_1_00);
  cVar1 = FUN_0083e950(&PTR_u_wxMDIParentFrame_03245b24);
  if (cVar1 == '\0') {
    cVar1 = FUN_0083e950(&PTR_u_wxAuiMDIParentFrame_0323f57c);
    if (cVar1 != '\0') {
      iVar5 = FUN_00a26b40();
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar5 == 0)) {
        FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0x395,"wxAuiManager::SetManagedWindow",
                     "client_window",L"Client window is NULL!");
      }
      FUN_004325b6(L"mdiclient");
      local_4 = 2;
      puVar3 = (undefined *)FUN_00445933();
      local_4._0_1_ = 3;
      if (puVar3 != local_1bc) {
        FID_conflict_assign(local_1bc,0,0xffffffff);
      }
      *(undefined4 *)(puVar3 + 0x58) = 0;
      *(undefined4 *)(puVar3 + 0x5c) = 5;
      FUN_00445ccb(0x200,1);
      FUN_00445ccb(0x100,1);
      uVar4 = FUN_00445ccb(0x200,0);
      FUN_00a1c410(iVar5,uVar4);
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_00445bb2();
      local_4 = 0xffffffff;
      _free(local_1a0);
      if (7 < local_1a4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_1b8);
      }
      local_1a4 = 7;
      local_1a8 = 0;
      local_1b8 = local_1b8 & 0xffff0000;
    }
  }
  else {
    iVar5 = *(int *)(*(int *)(param_1_00 + 0x40) + 0x228);
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar5 == 0)) {
      FUN_00840480("..\\..\\src\\aui\\framemanager.cpp",0x38b,"wxAuiManager::SetManagedWindow",
                   "client_window",L"Client window is NULL!",uVar2);
    }
    FUN_004325b6(L"mdiclient");
    local_4 = 0;
    puVar3 = (undefined *)FUN_00445933();
    local_4._0_1_ = 1;
    if (puVar3 != local_198) {
      FID_conflict_assign(local_198,0,0xffffffff);
    }
    *(undefined4 *)(puVar3 + 0x58) = 0;
    *(undefined4 *)(puVar3 + 0x5c) = 5;
    FUN_00445ccb(0x200,1);
    FUN_00445ccb(0x100,1);
    uVar4 = FUN_00445ccb(0x200,0);
    FUN_00a1c410(iVar5,uVar4);
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_00445bb2();
    local_4 = 0xffffffff;
    _free(local_17c);
    if (7 < local_180) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_194);
    }
  }
  FUN_00a19f30();
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_00a1cf70(undefined4 *param_1_00,int param_1,undefined4 param_2)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beeae2;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00845b70(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  local_4 = 0;
  *param_1_00 = wxAuiManager::vftable;
  FUN_0086a600();
  local_4._0_1_ = 1;
  FUN_0086a600();
  local_4._0_1_ = 2;
  FUN_0086a600();
  param_1_00[0x1d] = 0;
  param_1_00[0x1e] = 0;
  param_1_00[0x1f] = 0;
  param_1_00[0x20] = 0;
  param_1_00[0x23] = 0;
  param_1_00[0x24] = 0;
  param_1_00[0x25] = 0;
  param_1_00[0x26] = 0;
  param_1_00[0x27] = 0;
  param_1_00[0x28] = 0;
  param_1_00[0x29] = 0;
  param_1_00[0x2a] = 0;
  param_1_00[0x2c] = 0;
  param_1_00[0x2d] = 0;
  param_1_00[0x2e] = 0;
  param_1_00[0x2f] = 0;
  local_4._0_1_ = 3;
  param_1_00[0x30] = 0;
  param_1_00[0x31] = 0;
  FUN_00454099();
  local_4._0_1_ = 4;
  param_1_00[0x1c] = 0;
  param_1_00[0x22] = 0;
  param_1_00[0x30] = 0;
  param_1_00[0x31] = 0;
  param_1_00[0x2b] = 0;
  pvVar1 = operator_new(0x128);
  local_4._0_1_ = 5;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00a24f40();
  }
  param_1_00[0x11] = uVar2;
  *(undefined8 *)(param_1_00 + 0x34) = 0x3fd3333333333333;
  param_1_00[0x12] = param_2;
  *(undefined8 *)(param_1_00 + 0x36) = 0x3fd3333333333333;
  local_4 = CONCAT31(local_4._1_3_,4);
  param_1_00[0x38] = 0;
  *(undefined *)(param_1_00 + 0x33) = 0;
  *(undefined *)((int)param_1_00 + 0xcd) = 0;
  param_1_00[0x10] = 0;
  param_1_00[0x4b] = 0;
  param_1_00[0x32] = 0xffffffff;
  if (param_1 != 0) {
    FUN_00a1ccb0(param_1);
  }
  ExceptionList = local_c;
  return param_1_00;
}



undefined ** FUN_00a1d100(void)

{
  return &PTR_u_wxAuiToolBar_0323f370;
}



undefined ** FUN_00a1d110(void)

{
  return &PTR_u_wxAuiToolBarEvent_0323f388;
}



void __thiscall FUN_00a1d120(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x54) = param_1;
  return;
}



void __thiscall FUN_00a1d130(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x58) = param_1;
  return;
}



undefined4 __fastcall FUN_00a1d140(int param_1)

{
  return *(undefined4 *)(param_1 + 0x54);
}



undefined4 __fastcall FUN_00a1d150(int param_1)

{
  return *(undefined4 *)(param_1 + 0x58);
}



undefined4 __thiscall FUN_00a1d160(int param_1_00,int param_1)

{
  if (param_1 == 0) {
    return *(undefined4 *)(param_1_00 + 0x74);
  }
  if (param_1 != 1) {
    if (param_1 != 2) {
      return 0;
    }
    return *(undefined4 *)(param_1_00 + 0x7c);
  }
  return *(undefined4 *)(param_1_00 + 0x78);
}



void __thiscall FUN_00a1d190(int param_1_00,int param_1,undefined4 param_2)

{
  if (param_1 == 0) {
    *(undefined4 *)(param_1_00 + 0x74) = param_2;
  }
  else {
    if (param_1 == 1) {
      *(undefined4 *)(param_1_00 + 0x78) = param_2;
      return;
    }
    if (param_1 == 2) {
      *(undefined4 *)(param_1_00 + 0x7c) = param_2;
      return;
    }
  }
  return;
}



undefined4 FUN_00a1d1d0(void)

{
  uint *in_EAX;
  uint uVar1;
  
  uVar1 = *in_EAX & 0xa0;
  if (uVar1 != 0) {
    if (uVar1 == 0x20) {
      return 8;
    }
    if (uVar1 == 0x80) {
      return 4;
    }
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("..\\..\\src\\aui\\auibar.cpp",0x306,"GetOrientation","Assert failure",
                   "toolbar cannot be locked in both horizontal and vertical orientations (maybe no lock was intended?)"
                  );
    }
  }
  return 0xc;
}



undefined ** FUN_00a1d230(void)

{
  return &PTR_PTR_00d9ca94;
}



undefined * FUN_00a1d240(void)

{
  return &DAT_032ea9e4;
}



undefined __thiscall FUN_00a1d260(int param_1_00,undefined4 param_1)

{
  undefined uVar1;
  
  uVar1 = FUN_0090eb40(param_1);
  if (*(int *)(param_1_00 + 0x1a0) != 0) {
    (**(code **)(**(int **)(param_1_00 + 0x1a0) + 0x10))(param_1);
  }
  return uVar1;
}



void __thiscall FUN_00a1d290(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  switch(param_2) {
  case 1:
  case 3:
    uVar1 = *(undefined4 *)(param_1_00 + 0x224);
    *param_1 = *(undefined4 *)(param_1_00 + 0x220);
    param_1[1] = uVar1;
    return;
  case 2:
  case 4:
    uVar1 = *(undefined4 *)(param_1_00 + 0x22c);
    *param_1 = *(undefined4 *)(param_1_00 + 0x228);
    param_1[1] = uVar1;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\aui\\auibar.cpp",0x683,"wxAuiToolBar::GetHintSize","Assert failure",
                 "invalid dock location value");
  }
  uVar1 = DAT_03238d08;
  *param_1 = DAT_03238d04;
  param_1[1] = uVar1;
  return;
}



undefined4 __fastcall FUN_00a1d330(int param_1)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1 + 4) - 1;
  if (PTR_FUN_03235c4c == (undefined *)0x0) {
    return *(undefined4 *)(*(int *)(param_1 + 8) + uVar1 * 4);
  }
  if (*(uint *)(param_1 + 4) <= uVar1) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
    return *(undefined4 *)(*(int *)(param_1 + 8) + uVar1 * 4);
  }
  return *(undefined4 *)(*(int *)(param_1 + 8) + uVar1 * 4);
}



uint __thiscall FUN_00a1d380(int param_1_00,uint param_1)

{
  undefined4 uVar1;
  uint uVar2;
  
  if (*(int *)(param_1 + 0xc) == DAT_032bfdd0) {
    uVar1 = *(undefined4 *)(param_1 + 0x14);
    *(undefined4 *)(param_1_00 + 0x40) = uVar1;
    return CONCAT31((int3)((uint)uVar1 >> 8),1);
  }
  if (*(int **)(param_1_00 + 0xc) != (int *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00a1d3aa. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar2 = (**(code **)(**(int **)(param_1_00 + 0xc) + 0x18))();
    return uVar2;
  }
  return param_1 & 0xffffff00;
}



void FUN_00a1d3c0(int param_1,undefined4 param_2,undefined4 *param_3)

{
  uint uVar1;
  undefined **local_44;
  undefined4 local_40;
  undefined4 local_3c;
  int local_38;
  undefined local_34 [4];
  undefined **ppuStack_30;
  undefined local_20 [4];
  void *pvStack_1c;
  uint uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beebe0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  local_44 = (undefined **)*param_3;
  local_40 = param_3[1];
  local_3c = param_3[2];
  local_38 = param_3[3] + 1;
  FUN_00920050(local_20,0x96);
  local_4 = 0;
  FUN_00920050(local_34,0x5a);
  local_4 = CONCAT31(local_4._1_3_,1);
  (**(code **)(**(int **)(param_1 + 8) + 0x130))(&local_44,local_20,local_34,0x80,uVar1);
  uStack_14 = uStack_14 & 0xffffff00;
  local_44 = wxObject::vftable;
  FUN_0083e850();
  uStack_14 = 0xffffffff;
  ppuStack_30 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_1c;
  return;
}



void __thiscall FUN_00a1d4a0(int param_1_00,int param_1,undefined4 param_2,int *param_3)

{
  uint uVar1;
  int iVar2;
  bool bVar3;
  undefined **local_44;
  int local_40;
  int local_3c;
  int local_38;
  undefined local_34 [4];
  undefined **ppuStack_30;
  undefined local_20 [4];
  void *pvStack_1c;
  uint uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beec10;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  bVar3 = (*(byte *)(param_1_00 + 0x54) & 0x20) == 0;
  iVar2 = param_3[2];
  local_40 = param_3[3];
  if (bVar3) {
    iVar2 = iVar2 / 2;
    local_38 = (int)(local_40 * 3 + (local_40 * 3 >> 0x1f & 3U)) >> 2;
    local_40 = local_40 / 2 - local_38 / 2;
    local_3c = 1;
  }
  else {
    local_40 = local_40 / 2;
    local_3c = (int)(iVar2 * 3 + (iVar2 * 3 >> 0x1f & 3U)) >> 2;
    iVar2 = iVar2 / 2 - local_3c / 2;
    local_38 = 1;
  }
  local_40 = param_3[1] + local_40;
  local_44 = (undefined **)(*param_3 + iVar2);
  FUN_00920050(local_20,0x50);
  local_4 = 0;
  FUN_00920050(local_34,0x50);
  local_4 = CONCAT31(local_4._1_3_,1);
  (**(code **)(**(int **)(param_1 + 8) + 0x130))
            (&local_44,local_20,local_34,(-bVar3 & 0x60U) + 0x20,uVar1);
  uStack_14 = uStack_14 & 0xffffff00;
  local_44 = wxObject::vftable;
  FUN_0083e850();
  uStack_14 = 0xffffffff;
  ppuStack_30 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_1c;
  return;
}



void __thiscall FUN_00a1d610(int param_1_00,int param_1,undefined4 param_2,int *param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  bool bVar4;
  bool bVar5;
  int iVar6;
  int local_8;
  
  local_8 = 0;
  while( true ) {
    if ((*(byte *)(param_1_00 + 0x54) & 0x20) == 0) {
      iVar2 = param_3[1] + 5 + local_8;
      iVar1 = param_3[3] + -5;
      iVar3 = *param_3 + 3;
      bVar5 = SBORROW4(iVar2,iVar1);
      iVar6 = iVar2 - iVar1;
      bVar4 = iVar2 == iVar1;
    }
    else {
      iVar3 = local_8 + 5 + *param_3;
      iVar1 = param_3[2] + -5;
      iVar2 = param_3[1] + 3;
      bVar5 = SBORROW4(iVar3,iVar1);
      iVar6 = iVar3 - iVar1;
      bVar4 = iVar3 == iVar1;
    }
    if (!bVar4 && bVar5 == iVar6 < 0) break;
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x5c);
    iVar1 = iVar3;
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(iVar3,iVar2);
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 100);
    iVar6 = iVar3;
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(iVar3,iVar2 + 1);
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(iVar3 + 1,iVar2);
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(iVar1 + 0x6c);
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(iVar3 + 2,iVar2 + 1);
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(iVar3 + 2,iVar2 + 2);
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(iVar6,iVar2 + 2);
    local_8 = local_8 + 4;
  }
  return;
}



void __thiscall
FUN_00a1d730(undefined **param_1_00,int param_1,undefined4 param_2,int *param_3,byte param_4)

{
  undefined **ppuVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined **local_20;
  undefined4 uStack_1c;
  undefined uStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beec68;
  local_c = ExceptionList;
  ppuVar1 = (undefined **)(DAT_0323f878 ^ (uint)&stack0xffffffc4);
  ExceptionList = &local_c;
  if ((param_4 & 6) != 0) {
    FUN_00920050(&local_20,0xaa);
    local_4 = 0;
    if ((*(byte *)(param_1_00 + 0x15) & 0x20) == 0) {
      uVar2 = FUN_009566f0(param_1_00 + 0xe,1,100);
      local_4 = CONCAT31(local_4._1_3_,4);
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar2);
      puStack_8 = (undefined *)((uint)puStack_8 & 0xffffff00);
      FUN_0083e850();
      (**(code **)(**(int **)(param_1 + 8) + 0x140))
                (*param_3,param_3[1],*param_3,param_3[3] + param_3[1]);
      uVar2 = FUN_009566f0(&stack0xffffffcc,1,100);
      uStack_18 = 5;
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar2);
      uStack_1c = (void *)((uint)uStack_1c & 0xffffff00);
      ppuVar1 = wxObject::vftable;
      FUN_0083e850();
      uVar2 = FUN_0095d7e0(&stack0xffffffc8,100);
      uStack_1c = (void *)CONCAT31(uStack_1c._1_3_,6);
      (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar2);
      local_20 = (undefined **)((uint)local_20 & 0xffffff00);
      FUN_008f7630();
      iVar6 = param_3[3];
      iVar5 = param_3[2];
      iVar3 = param_3[1];
      iVar4 = *param_3 + 1;
    }
    else {
      uVar2 = FUN_009566f0(param_1_00 + 0xe,1,100);
      local_4 = CONCAT31(local_4._1_3_,1);
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar2);
      puStack_8 = (undefined *)((uint)puStack_8 & 0xffffff00);
      FUN_0083e850();
      (**(code **)(**(int **)(param_1 + 8) + 0x140))
                (*param_3,param_3[1],param_3[2] + *param_3,param_3[1]);
      uVar2 = FUN_009566f0(&stack0xffffffcc,1,100);
      uStack_18 = 2;
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar2);
      uStack_1c = (void *)((uint)uStack_1c & 0xffffff00);
      ppuVar1 = wxObject::vftable;
      FUN_0083e850();
      uVar2 = FUN_0095d7e0(&stack0xffffffc8,100);
      uStack_1c = (void *)CONCAT31(uStack_1c._1_3_,3);
      (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar2);
      local_20 = (undefined **)((uint)local_20 & 0xffffff00);
      FUN_008f7630();
      iVar6 = param_3[3];
      iVar5 = param_3[2];
      iVar3 = param_3[1] + 1;
      iVar4 = *param_3;
    }
    (**(code **)(**(int **)(param_1 + 8) + 0x150))(iVar4,iVar3,iVar5,iVar6);
    local_4 = 0xffffffff;
    local_20 = wxObject::vftable;
    FUN_0083e850();
    param_1_00 = wxObject::vftable;
  }
  iVar6 = 0;
  if (param_1_00[6] == (undefined *)0x0) {
    iVar5 = 0;
  }
  else {
    iVar5 = *(int *)(param_1_00[6] + 8);
  }
  if (param_1_00[6] != (undefined *)0x0) {
    iVar6 = *(int *)(param_1_00[6] + 0xc);
  }
  (**(code **)(**(int **)(param_1 + 8) + 0x164))
            (param_1_00 + 5,(param_3[2] - iVar5) / 2 + 1 + *param_3,
             (param_3[3] - iVar6) / 2 + 1 + param_3[1],1,ppuVar1);
  ExceptionList = uStack_1c;
  return;
}



void __thiscall FUN_00a1d9b0(int param_1_00,int *param_1)

{
  uint uVar1;
  
  if (*(undefined4 **)(param_1_00 + 0x1a0) != (undefined4 *)0x0) {
    (**(code **)**(undefined4 **)(param_1_00 + 0x1a0))(1);
  }
  *(int **)(param_1_00 + 0x1a0) = param_1;
  if (param_1 != (int *)0x0) {
    uVar1 = *(uint *)(param_1_00 + 0x218) & 0xffffff5f;
    if (*(int *)(param_1_00 + 0x21c) == 8) {
      uVar1 = uVar1 | 0x20;
    }
    (**(code **)(*param_1 + 8))(uVar1);
                    // WARNING: Could not recover jumptable at 0x00a1da08. Too many branches
                    // WARNING: Treating indirect jump as call
    (**(code **)(**(int **)(param_1_00 + 0x1a0) + 0x18))();
    return;
  }
  return;
}



int __thiscall FUN_00a1da10(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  
  uVar1 = *(uint *)(param_1_00 + 0x198);
  uVar3 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x198) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(param_1_00 + 0x19c) + uVar3 * 4);
      if (*(int *)(iVar2 + 0x98) == param_1) {
        return iVar2;
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar1);
  }
  return 0;
}



void __thiscall FUN_00a1da80(int param_1_00,int param_1)

{
  if ((param_1 == 4) || (param_1 == 8)) {
    if (param_1 != *(int *)(param_1_00 + 0x21c)) {
      *(int *)(param_1_00 + 0x21c) = param_1;
                    // WARNING: Could not recover jumptable at 0x00a1daeb. Too many branches
                    // WARNING: Treating indirect jump as call
      (**(code **)(**(int **)(param_1_00 + 0x1a0) + 8))();
      return;
    }
  }
  else if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_008402e0("..\\..\\src\\aui\\auibar.cpp",0x53e,"wxAuiToolBar::SetOrientation",
                 "orientation == wxHORIZONTAL || orientation == wxVERTICAL",
                 "invalid orientation value");
  }
  return;
}



void __thiscall FUN_00a1daf0(int *param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  
  uVar1 = param_1_00[0x66];
  iVar3 = 0;
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x66] <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(param_1_00[0x67] + uVar4 * 4);
      if ((*(uint *)(iVar2 + 0xa0) & 2) != 0) {
        iVar3 = iVar2;
      }
      uVar4 = uVar4 + 1;
      *(uint *)(iVar2 + 0xa0) = *(uint *)(iVar2 + 0xa0) & 0xfffffffd;
    } while (uVar4 < uVar1);
  }
  if (param_1 != 0) {
    *(uint *)(param_1 + 0xa0) = *(uint *)(param_1 + 0xa0) | 2;
  }
  if (iVar3 != param_1) {
    (**(code **)(*param_1_00 + 0x15c))(0,0);
    (**(code **)(*param_1_00 + 0x160))();
  }
  return;
}



void __thiscall FUN_00a1db90(int *param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  
  uVar1 = param_1_00[0x66];
  iVar3 = 0;
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x66] <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(param_1_00[0x67] + uVar4 * 4);
      if ((*(uint *)(iVar2 + 0xa0) & 4) != 0) {
        iVar3 = iVar2;
      }
      uVar4 = uVar4 + 1;
      *(uint *)(iVar2 + 0xa0) = *(uint *)(iVar2 + 0xa0) & 0xfffffffb;
    } while (uVar4 < uVar1);
  }
  if (param_1 != 0) {
    *(uint *)(param_1 + 0xa0) = *(uint *)(param_1 + 0xa0) & 0xfffffffd | 4;
  }
  if (iVar3 != param_1) {
    (**(code **)(*param_1_00 + 0x15c))(0,0);
    (**(code **)(*param_1_00 + 0x160))();
  }
  return;
}



void FUN_00a1dc40(undefined4 param_1,char param_2)

{
  int iVar1;
  
  iVar1 = FUN_00a1da10(param_1);
  if (iVar1 != 0) {
    if (param_2 == '\x01') {
      *(uint *)(iVar1 + 0xa0) = *(uint *)(iVar1 + 0xa0) & 0xfffffff7;
      return;
    }
    *(uint *)(iVar1 + 0xa0) = *(uint *)(iVar1 + 0xa0) | 8;
  }
  return;
}



uint FUN_00a1dc70(byte param_1,int param_2)

{
  undefined4 in_EAX;
  uint uVar1;
  
  uVar1 = CONCAT31((int3)((uint)in_EAX >> 8),param_1);
  if ((char)param_1 < '\0') {
    uVar1 = *(uint *)(param_2 + 0x58);
    if (((uVar1 >> 2 & 1) != 0) || (uVar1 = uVar1 >> 3, (uVar1 & 1) != 0)) {
      return uVar1 & 0xffffff00;
    }
  }
  else if (((param_1 & 0x20) != 0) &&
          ((uVar1 = *(uint *)(param_2 + 0x58), (uVar1 >> 4 & 1) != 0 ||
           (uVar1 = uVar1 >> 5, (uVar1 & 1) != 0)))) {
    return uVar1 & 0xffffff00;
  }
  return CONCAT31((int3)(uVar1 >> 8),1);
}



undefined4 __thiscall FUN_00a1dcc0(undefined4 param_1_00,byte param_1)

{
  int iVar1;
  
  iVar1 = FUN_00a14ec0(param_1_00);
  if (iVar1 != 0) {
    iVar1 = FUN_00a14dd0(param_1_00);
    if ((char)param_1 < '\0') {
      if (((*(uint *)(iVar1 + 0x58) >> 2 & 1) != 0) || ((*(uint *)(iVar1 + 0x58) >> 3 & 1) != 0)) {
        return 0;
      }
    }
    else if (((param_1 & 0x20) != 0) &&
            (((*(uint *)(iVar1 + 0x58) >> 4 & 1) != 0 || ((*(uint *)(iVar1 + 0x58) >> 5 & 1) != 0)))
            ) {
      return 0;
    }
  }
  return 1;
}



uint __thiscall FUN_00a1dd20(int param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  
  if (param_1 == -1) {
    return 0xffffffff;
  }
  uVar1 = *(uint *)(param_1_00 + 0x198);
  uVar2 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x198) <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      if (*(int *)(*(int *)(*(int *)(param_1_00 + 0x19c) + uVar2 * 4) + 0x98) == param_1) {
        return uVar2;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar1);
  }
  return 0xffffffff;
}



undefined4 __thiscall FUN_00a1dda0(int *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int unaff_EBX;
  int unaff_ESI;
  bool bVar4;
  bool bVar5;
  undefined4 *puVar6;
  int local_1c;
  int iStack_18;
  int iStack_14;
  int iStack_10;
  int iStack_8;
  
  iVar2 = param_1;
  if ((param_1 < 0) || (param_1_00[0x66] <= param_1)) {
    return 0;
  }
  iVar1 = FUN_009cde80(param_1);
  if (*(int *)(iVar1 + 0x88) != 0) {
    puVar6 = &param_1;
    (**(code **)(*param_1_00 + 0x27c))(&local_1c);
    iVar2 = FUN_009cde80(iVar2);
    (**(code **)(**(int **)(iVar2 + 0x88) + 0x20))(&iStack_18);
    if (param_1_00[0x87] == 8) {
      if (*(char *)((int)param_1_00 + 0x216) != '\0') {
        iVar2 = (**(code **)(*(int *)param_1_00[0x6f] + 0x14))(&stack0xffffffdc);
        iStack_8 = iStack_8 - *(int *)(iVar2 + 4);
      }
      bVar5 = SBORROW4(iStack_10 + iStack_18,iStack_8);
      bVar4 = (iStack_10 + iStack_18) - iStack_8 < 0;
    }
    else if (*(char *)((int)param_1_00 + 0x216) == '\0') {
      bVar5 = SBORROW4(iStack_14 + local_1c,unaff_EBX);
      bVar4 = (iStack_14 + local_1c) - unaff_EBX < 0;
    }
    else {
      piVar3 = (int *)(**(code **)(*(int *)param_1_00[0x6f] + 0x14))(&stack0xffffffdc);
      bVar5 = SBORROW4(iStack_18 + unaff_ESI,(int)puVar6 - *piVar3);
      bVar4 = (iStack_18 + unaff_ESI) - ((int)puVar6 - *piVar3) < 0;
    }
    if (bVar5 != bVar4) {
      return 1;
    }
  }
  return 0;
}



int * __fastcall FUN_00a1deb0(int *param_1)

{
  int iVar1;
  undefined local_8 [4];
  int *local_4;
  
  (**(code **)(*param_1 + 0x27c))();
  (**(code **)(*(int *)param_1[0x6f] + 0x20))(local_4);
  iVar1 = (**(code **)(*(int *)param_1[0x68] + 0x48))(2);
  if (param_1[0x87] == 8) {
    local_4[3] = iVar1;
    local_4[1] = (int)&local_4 - iVar1;
    *local_4 = 0;
    local_4[2] = (int)local_8;
    return local_4;
  }
  local_4[2] = iVar1;
  *local_4 = (int)local_8 - iVar1;
  local_4[1] = 0;
  local_4[3] = (int)&local_4;
  return local_4;
}



void __thiscall FUN_00a1df40(int param_1,uint param_2,uint param_3,undefined4 param_4)

{
  int unaff_EBX;
  int unaff_EBP;
  int unaff_retaddr;
  undefined local_8 [4];
  int local_4;
  
  (**(code **)(**(int **)(param_1 + 0x44) + 0x27c))(local_8,&local_4);
  if (unaff_EBP < (int)(local_4 + param_2)) {
    param_2 = (unaff_EBP - local_4 < 0) - 1 & unaff_EBP - local_4;
  }
  if (unaff_EBX < (int)(unaff_retaddr + param_3)) {
    param_3 = (unaff_EBX - unaff_retaddr < 0) - 1 & unaff_EBX - unaff_retaddr;
  }
  FUN_00911700(local_4,unaff_retaddr,param_2,param_3,param_4);
  return;
}



void __fastcall FUN_00a1dfc0(undefined4 *param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  uStack_8 = &LAB_00beed06;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxAuiDefaultToolBarArt::vftable;
  local_4 = 10;
  puVar2 = (undefined4 *)(**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17,uVar1);
  if (param_1 + 0x13 != puVar2) {
    FUN_0083ea60(puVar2);
  }
  uStack_8._0_1_ = 9;
  param_1[0x1b] = wxObject::vftable;
  FUN_0083e850();
  uStack_8._0_1_ = 8;
  param_1[0x19] = wxObject::vftable;
  FUN_0083e850();
  uStack_8._0_1_ = 7;
  param_1[0x17] = wxObject::vftable;
  FUN_0083e850();
  uStack_8._0_1_ = 6;
  FUN_00921450();
  uStack_8._0_1_ = 5;
  param_1[0xe] = wxObject::vftable;
  FUN_0083e850();
  uStack_8._0_1_ = 4;
  param_1[9] = wxObject::vftable;
  FUN_0083e850();
  uStack_8._0_1_ = 3;
  FUN_008f7630();
  uStack_8._0_1_ = 2;
  FUN_008f7630();
  uStack_8._0_1_ = 1;
  FUN_008f7630();
  uStack_8 = (undefined *)((uint)uStack_8._1_3_ << 8);
  FUN_008f7630();
  *param_1 = wxAuiToolBarArt::vftable;
  ExceptionList = param_1;
  return;
}



void __thiscall FUN_00a1e0d0(int param_1_00,int param_1)

{
  if (param_1_00 + 0x4c != param_1) {
    FUN_0083ea60();
    return;
  }
  return;
}



void __thiscall FUN_00a1e0f0(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1_00 + 0x50);
  *param_1 = wxObject::vftable;
  param_1[1] = iVar1;
  *param_1 = wxFont::vftable;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  return;
}



uint __thiscall FUN_00a1e210(int param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  uint uVar2;
  char cVar3;
  uint uVar4;
  undefined local_10 [16];
  
  uVar1 = *(uint *)(param_1 + 0x198);
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x198) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      uVar2 = *(uint *)(*(int *)(param_1 + 0x19c) + uVar4 * 4);
      if (*(int *)(uVar2 + 0x88) != 0) {
        (**(code **)(**(int **)(uVar2 + 0x88) + 0x20))(local_10);
        cVar3 = FUN_008f7580(param_2,param_3);
        if (cVar3 != '\0') {
          cVar3 = FUN_00a1dda0(uVar4);
          return -(uint)(cVar3 != '\0') & uVar2;
        }
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  return 0;
}



uint __thiscall FUN_00a1e2c0(int param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  uint uVar2;
  char cVar3;
  uint uVar4;
  undefined local_10 [8];
  int iStack_8;
  
  uVar1 = *(uint *)(param_1 + 0x198);
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x198) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      uVar2 = *(uint *)(*(int *)(param_1 + 0x19c) + uVar4 * 4);
      if (*(int *)(uVar2 + 0x88) != 0) {
        (**(code **)(**(int **)(uVar2 + 0x88) + 0x20))(local_10);
        if (uVar4 + 1 < uVar1) {
          iStack_8 = iStack_8 + *(int *)(param_1 + 0x204);
        }
        cVar3 = FUN_008f7580(param_2,param_3);
        if (cVar3 != '\0') {
          cVar3 = FUN_00a1dda0(uVar4);
          return -(uint)(cVar3 != '\0') & uVar2;
        }
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  return 0;
}



void __fastcall FUN_00a1e390(int *param_1)

{
  code *pcVar1;
  char cVar2;
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  int iVar3;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined local_10 [16];
  
  if (param_1[0x6f] == 0) {
    param_1[0x84] = 0;
    return;
  }
  iVar3 = 0;
  FUN_00a1deb0(local_10);
  FUN_00910c30(&local_24);
  local_28 = local_20;
  local_2c = local_24;
  (**(code **)(*param_1 + 0x260))(&local_2c,&local_28);
  cVar2 = FUN_008f7580(unaff_EDI,unaff_ESI);
  if (cVar2 != '\0') {
    iVar3 = FUN_00910950(&local_24);
    iVar3 = (uint)((*(byte *)(iVar3 + 1) & 1) != 0) * 2 + 2;
  }
  if (iVar3 != param_1[0x84]) {
    pcVar1 = *(code **)(*param_1 + 0x15c);
    param_1[0x84] = iVar3;
    (*pcVar1)(0,0);
    (**(code **)(*param_1 + 0x160))();
  }
  param_1[0x84] = iVar3;
  return;
}



void __thiscall FUN_00a1e460(int param_1_00,undefined4 param_1,char param_2)

{
  uint *puVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  
  iVar4 = FUN_00a1da10(param_1);
  if ((iVar4 != 0) && ((iVar2 = *(int *)(iVar4 + 0x9c), iVar2 == 1 || (iVar2 == 2)))) {
    if (iVar2 == 2) {
      uVar5 = FUN_00a1dd20(param_1);
      iVar2 = *(int *)(param_1_00 + 0x198);
      if ((-1 < (int)uVar5) && (uVar3 = uVar5, (int)uVar5 < iVar2)) {
        while ((uVar3 = uVar3 + 1, (int)uVar3 < iVar2 &&
               (iVar6 = FUN_009cde80(uVar3), *(int *)(iVar6 + 0x9c) == 2))) {
          iVar6 = FUN_009cde80(uVar3);
          *(uint *)(iVar6 + 0xa0) = *(uint *)(iVar6 + 0xa0) & 0xffffffdf;
        }
        while (uVar5 = uVar5 - 1, -1 < (int)uVar5) {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x198) <= uVar5)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          if (*(int *)(*(int *)(*(int *)(param_1_00 + 0x19c) + uVar5 * 4) + 0x9c) != 2) break;
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x198) <= uVar5)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          puVar1 = (uint *)(*(int *)(*(int *)(param_1_00 + 0x19c) + uVar5 * 4) + 0xa0);
          *puVar1 = *puVar1 & 0xffffffdf;
        }
      }
      *(uint *)(iVar4 + 0xa0) = *(uint *)(iVar4 + 0xa0) | 0x20;
      return;
    }
    if (iVar2 == 1) {
      if (param_2 == '\x01') {
        *(uint *)(iVar4 + 0xa0) = *(uint *)(iVar4 + 0xa0) | 0x20;
        return;
      }
      *(uint *)(iVar4 + 0xa0) = *(uint *)(iVar4 + 0xa0) & 0xffffffdf;
    }
  }
  return;
}



uint __thiscall FUN_00a1e5d0(int param_1_00,int param_1)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1_00 + 0x218);
  if ((char)uVar1 < '\0') {
    uVar1 = *(uint *)(param_1 + 0x58);
    if (((uVar1 >> 2 & 1) != 0) || (uVar1 = uVar1 >> 3, (uVar1 & 1) != 0)) {
      return uVar1 & 0xffffff00;
    }
  }
  else if (((uVar1 & 0x20) != 0) &&
          ((uVar1 = *(uint *)(param_1 + 0x58), (uVar1 >> 4 & 1) != 0 ||
           (uVar1 = uVar1 >> 5, (uVar1 & 1) != 0)))) {
    return uVar1 & 0xffffff00;
  }
  return CONCAT31((int3)(uVar1 >> 8),1);
}



void __fastcall FUN_00a1e620(int *param_1)

{
  int iVar1;
  int *piVar2;
  code *pcVar3;
  char cVar4;
  undefined4 *puVar5;
  int unaff_EBX;
  int unaff_EBP;
  uint uVar6;
  undefined4 *puVar7;
  undefined4 *puVar8;
  uint local_18;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00beed3b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(*param_1 + 0x27c))(local_14,&local_18,DAT_0323f878 ^ (uint)&stack0xffffffd8);
  if (unaff_EBX < unaff_EBP) {
LAB_00a1e67b:
    if (param_1[0x71] <= unaff_EBP) {
LAB_00a1e715:
      local_18 = param_1[0x66];
      uVar6 = 0;
      if (local_18 != 0) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x66] <= uVar6)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          iVar1 = *(int *)(param_1[0x67] + uVar6 * 4);
          if (((*(int *)(iVar1 + 0x88) != 0) && (0 < *(int *)(iVar1 + 0xa4))) &&
             (cVar4 = FUN_00930b50(), cVar4 == '\0')) {
            FUN_00930ab0(1);
            *(undefined4 *)(*(int *)(iVar1 + 0x88) + 0x20) = *(undefined4 *)(iVar1 + 0xa4);
          }
          uVar6 = uVar6 + 1;
        } while (uVar6 < local_18);
      }
      goto LAB_00a1e7a4;
    }
  }
  else if (param_1[0x70] <= unaff_EBX) {
    if (unaff_EBX < unaff_EBP) goto LAB_00a1e67b;
    goto LAB_00a1e715;
  }
  local_18 = param_1[0x66];
  uVar6 = 0;
  if (local_18 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x66] <= uVar6)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(param_1[0x67] + uVar6 * 4);
      if (((*(int *)(iVar1 + 0x88) != 0) && (0 < *(int *)(iVar1 + 0xa4))) &&
         (cVar4 = FUN_00930b50(), cVar4 != '\0')) {
        FUN_00930ab0(0);
        *(undefined4 *)(*(int *)(iVar1 + 0x88) + 0x20) = 0;
      }
      uVar6 = uVar6 + 1;
    } while (uVar6 < local_18);
  }
LAB_00a1e7a4:
  piVar2 = (int *)param_1[0x69];
  piVar2[9] = 0;
  pcVar3 = *(code **)(*piVar2 + 0x4c);
  piVar2[10] = 0;
  piVar2[5] = unaff_EBX;
  piVar2[6] = unaff_EBP;
  (*pcVar3)();
  (**(code **)(*piVar2 + 0x40))(4,unaff_EBX,unaff_EBP);
  (**(code **)(*param_1 + 0x15c))(0,0);
  (**(code **)(*param_1 + 0x160))();
  puVar5 = (undefined4 *)operator_new(0x2c);
  if (puVar5 == (undefined4 *)0x0) {
    puVar7 = (undefined4 *)0x0;
  }
  else {
    puVar8 = puVar5;
    FUN_00845a20(0,DAT_032bd450);
    *puVar5 = wxIdleEvent::vftable;
    *(undefined *)(puVar5 + 10) = 0;
    puVar7 = puVar5;
    puVar5 = puVar8;
  }
  (**(code **)(*param_1 + 0x1c))(puVar7);
  ExceptionList = puVar5;
  return;
}



void __fastcall FUN_00a1e850(int *param_1)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  uint uVar5;
  code *pcVar6;
  int iVar7;
  int *piVar8;
  int unaff_EBP;
  uint uVar9;
  undefined3 unaff_ESI;
  int unaff_EDI;
  char cStack_7d;
  char cStack_79;
  uint uStack_70;
  int iVar10;
  int iStack_60;
  undefined local_5c [4];
  undefined local_58 [4];
  int iStack_54;
  int iStack_50;
  undefined **ppuStack_4c;
  undefined4 uStack_48;
  undefined4 uStack_44;
  int iStack_40;
  undefined auStack_38 [16];
  void *pvStack_28;
  undefined4 uStack_20;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beed80;
  local_c = ExceptionList;
  uStack_70 = DAT_0323f878 ^ (uint)&stack0xffffff94;
  ExceptionList = &local_c;
  FUN_00957210(param_1);
  local_4 = 0;
  (**(code **)(*param_1 + 0x27c))(local_5c,local_58);
  uStack_48 = 0;
  uStack_44 = 0;
  iVar10 = CONCAT13(param_1[0x87] == 4,unaff_ESI);
  iStack_40 = unaff_EBP;
  (**(code **)(*(int *)param_1[0x68] + 0x20))(auStack_38);
  iVar4 = (**(code **)(*(int *)param_1[0x68] + 0x48))(1);
  uVar5 = (**(code **)(*(int *)param_1[0x68] + 0x48))(2);
  uStack_70 = uVar5;
  if ((0 < iVar4) && (param_1[0x6e] != 0)) {
    (**(code **)(*(int *)param_1[0x6e] + 0x20))(&stack0xffffff94);
    cStack_7d = (char)((uint)param_1 >> 0x18);
    if (cStack_7d != '\0') {
      iVar10 = iVar4;
      iVar4 = unaff_EBP;
    }
    unaff_EBP = iVar4;
    (**(code **)(*(int *)param_1[0x68] + 0x38))(&iStack_50,param_1,&uStack_70);
  }
  cStack_79 = (char)((uint)&uStack_48 >> 0x18);
  iVar4 = iStack_50;
  if (cStack_79 != '\0') {
    iVar4 = iStack_54;
  }
  if (*(char *)((int)param_1 + 0x216) != '\0') {
    iVar4 = iVar4 - uVar5;
  }
  uVar5 = param_1[0x66];
  uVar9 = 0;
  if (uVar5 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x66] <= uVar9)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(param_1[0x67] + uVar9 * 4);
      if ((*(int *)(iVar1 + 0x88) != 0) && (cVar3 = FUN_00930b50(), cVar3 != '\0')) {
        (**(code **)(**(int **)(iVar1 + 0x88) + 0x20))(&stack0xffffff94);
        if (cStack_79 == '\0') {
          iVar7 = iStack_60 + iVar10;
          iVar2 = iVar7 - iVar4;
        }
        else {
          iVar7 = unaff_EBP + unaff_EDI;
          iVar2 = iVar7 - iVar4;
        }
        if (SBORROW4(iVar7,iVar4) == iVar2 < 0) break;
        iVar2 = *(int *)(iVar1 + 0x9c);
        if (iVar2 == -1) {
          (**(code **)(*(int *)param_1[0x68] + 0x34))(&ppuStack_4c,param_1,&stack0xffffff94);
        }
        else if (iVar2 == 5) {
          pcVar6 = *(code **)(*(int *)param_1[0x68] + 0x24);
LAB_00a1eab9:
          (*pcVar6)(&ppuStack_4c,param_1,iVar1,&stack0xffffff94);
        }
        else {
          if (iVar2 == 0) {
            piVar8 = (int *)param_1[0x68];
            cVar3 = *(char *)(iVar1 + 0xa9);
joined_r0x00a1ea85:
            if (cVar3 != '\0') {
              pcVar6 = *(code **)(*piVar8 + 0x2c);
              goto LAB_00a1eab9;
            }
          }
          else {
            if (iVar2 == 1) {
              cVar3 = *(char *)(iVar1 + 0xa9);
              piVar8 = (int *)param_1[0x68];
              goto joined_r0x00a1ea85;
            }
            if (iVar2 != 2) {
              if (iVar2 != 4) goto LAB_00a1eac7;
              pcVar6 = *(code **)(*(int *)param_1[0x68] + 0x30);
              goto LAB_00a1eab9;
            }
            piVar8 = (int *)param_1[0x68];
          }
          (**(code **)(*piVar8 + 0x28))(&ppuStack_4c,param_1,iVar1,&stack0xffffff94);
        }
LAB_00a1eac7:
        (**(code **)(*param_1 + 0x358))(&ppuStack_4c,iVar1,&stack0xffffff94);
      }
      uVar9 = uVar9 + 1;
    } while (uVar9 < uVar5);
  }
  if ((0 < (int)uStack_70) && (param_1[0x6f] != 0)) {
    FUN_00a1deb0(&stack0xffffff94);
    (**(code **)(*(int *)param_1[0x68] + 0x3c))(&ppuStack_4c,param_1,&stack0xffffff94,param_1[0x84])
    ;
  }
  ppuStack_4c = wxBufferedPaintDC::vftable;
  uStack_20 = 2;
  FUN_009ba2f0();
  uStack_20 = CONCAT31(uStack_20._1_3_,1);
  FUN_00457221();
  ppuStack_4c = wxBufferedDC::vftable;
  uStack_20 = 3;
  if (iStack_40 != 0) {
    FUN_009ba2f0();
  }
  uStack_20 = 0xffffffff;
  FUN_00457221();
  ExceptionList = pvStack_28;
  return;
}



void __fastcall FUN_00a1eba0(int *param_1)

{
  char cVar1;
  int iVar2;
  int unaff_ESI;
  int unaff_EDI;
  undefined local_18 [4];
  undefined local_14 [16];
  int iStack_4;
  
  (**(code **)(*param_1 + 0x27c))(local_18,local_14);
  if ((int *)param_1[0x6e] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x6e] + 0x20))(local_18);
    cVar1 = FUN_008f7580(*(undefined4 *)(iStack_4 + 0x2c),*(undefined4 *)(iStack_4 + 0x30));
    if (cVar1 != '\0') {
      return;
    }
  }
  if (((((param_1[0x6f] != 0) && (iVar2 = (**(code **)(*(int *)param_1[0x68] + 0x48))(2), 0 < iVar2)
        ) && (unaff_EDI - iVar2 < *(int *)(iStack_4 + 0x2c))) &&
      ((-1 < *(int *)(iStack_4 + 0x30) && (*(int *)(iStack_4 + 0x30) < unaff_ESI)))) &&
     (param_1[0x68] != 0)) {
    return;
  }
  iVar2 = *(int *)(iStack_4 + 0x2c);
  param_1[0x73] = *(int *)(iStack_4 + 0x30);
  param_1[0x72] = iVar2;
  iVar2 = FUN_00a1e210(*(undefined4 *)(iStack_4 + 0x2c),*(undefined4 *)(iStack_4 + 0x30));
  param_1[0x6a] = iVar2;
  if ((iVar2 != 0) && ((*(byte *)(iVar2 + 0xa0) & 8) != 0)) {
    param_1[0x72] = -1;
    param_1[0x73] = -1;
    param_1[0x6a] = 0;
    return;
  }
  (**(code **)(*param_1 + 0x2a0))(0);
  return;
}



void __thiscall FUN_00a1eca0(int *param_1,int param_2)

{
  char cVar1;
  
  cVar1 = (**(code **)(*param_1 + 0x158))();
  if (cVar1 != '\0') {
    *(undefined *)(param_2 + 0x24) = 1;
    return;
  }
  FUN_00a1e390();
  FUN_00a1daf0(0);
  FUN_00a1db90(0);
  param_1[0x6b] = 0;
  param_1[0x72] = -1;
  param_1[0x73] = -1;
  param_1[0x6a] = 0;
  return;
}



void __fastcall FUN_00a1ed00(int param_1)

{
  *(undefined *)(param_1 + 0x214) = 0;
  FUN_00a1e390();
  FUN_00a1daf0(0);
  FUN_00a1db90(0);
  *(undefined4 *)(param_1 + 0x1ac) = 0;
  *(undefined4 *)(param_1 + 0x1c8) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x1cc) = 0xffffffff;
  *(undefined4 *)(param_1 + 0x1a8) = 0;
  return;
}



int FUN_00a1ed50(int param_1)

{
  int iVar1;
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00beedc1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_008ff080(param_1,0xf,DAT_0323f878 ^ (uint)&stack0xffffffd0);
  local_4 = 0;
  if ((int)(((0x2fd - (uint)*(byte *)(param_1 + 0xe)) - (uint)*(byte *)(param_1 + 0xf)) -
           (uint)*(byte *)(param_1 + 0xd)) < 0x3c) {
    iVar1 = FUN_00920050(local_20,0x5c);
    local_4 = 1;
    if (param_1 != iVar1) {
      FUN_0083ea60(iVar1);
    }
    *(undefined4 *)(param_1 + 8) = *(undefined4 *)(iVar1 + 8);
    *(undefined *)(param_1 + 0xc) = *(undefined *)(iVar1 + 0xc);
    *(undefined *)(param_1 + 0xd) = *(undefined *)(iVar1 + 0xd);
    *(undefined *)(param_1 + 0xe) = *(undefined *)(iVar1 + 0xe);
    *(undefined *)(param_1 + 0xf) = *(undefined *)(iVar1 + 0xf);
    *(undefined *)(param_1 + 0x10) = *(undefined *)(iVar1 + 0x10);
    local_4 = local_4 & 0xffffff00;
    local_20[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __fastcall FUN_00a1ee40(undefined4 *param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined **local_90 [2];
  undefined **local_88 [5];
  undefined **local_74;
  undefined local_70 [16];
  undefined **ppuStack_60;
  undefined local_5c [16];
  undefined **ppuStack_4c;
  undefined local_48 [16];
  undefined **ppuStack_38;
  undefined local_34 [16];
  undefined **ppuStack_24;
  undefined local_20 [16];
  void *pvStack_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  uStack_8 = &LAB_00beeeec;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff60;
  ExceptionList = &local_c;
  *param_1 = wxAuiDefaultToolBarArt::vftable;
  param_1[2] = 0;
  param_1[1] = wxBitmap::vftable;
  param_1[4] = 0;
  param_1[3] = wxBitmap::vftable;
  param_1[6] = 0;
  param_1[5] = wxBitmap::vftable;
  param_1[8] = 0;
  param_1[7] = wxBitmap::vftable;
  local_4._0_1_ = 4;
  local_4._1_3_ = 0;
  local_74 = (undefined **)param_1;
  FUN_00453f4b(uVar1);
  local_4._0_1_ = 5;
  FUN_00453f4b();
  param_1[0x14] = 0;
  param_1[0x13] = wxFont::vftable;
  param_1[0x18] = 0;
  param_1[0x17] = wxPen::vftable;
  param_1[0x1a] = 0;
  param_1[0x19] = wxPen::vftable;
  param_1[0x1c] = 0;
  param_1[0x1b] = wxPen::vftable;
  local_4._0_1_ = 10;
  puVar2 = (undefined4 *)FUN_00a1ed50(local_88);
  local_4._0_1_ = 0xb;
  if (param_1 + 9 != puVar2) {
    FUN_0083ea60(puVar2);
  }
  param_1[0xb] = puVar2[2];
  *(undefined *)(param_1 + 0xc) = *(undefined *)(puVar2 + 3);
  *(undefined *)((int)param_1 + 0x31) = *(undefined *)((int)puVar2 + 0xd);
  *(undefined *)((int)param_1 + 0x32) = *(undefined *)((int)puVar2 + 0xe);
  *(undefined *)((int)param_1 + 0x33) = *(undefined *)((int)puVar2 + 0xf);
  *(undefined *)(param_1 + 0xd) = *(undefined *)(puVar2 + 4);
  local_4._0_1_ = 10;
  local_88[0] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x15] = 0;
  param_1[0x16] = 3;
  puVar2 = (undefined4 *)FUN_008ff080(local_88,0xd);
  local_4._0_1_ = 0xc;
  if (param_1 + 0xe != puVar2) {
    FUN_0083ea60(puVar2);
  }
  param_1[0x10] = puVar2[2];
  *(undefined *)(param_1 + 0x11) = *(undefined *)(puVar2 + 3);
  *(undefined *)((int)param_1 + 0x45) = *(undefined *)((int)puVar2 + 0xd);
  *(undefined *)((int)param_1 + 0x46) = *(undefined *)((int)puVar2 + 0xe);
  *(undefined *)((int)param_1 + 0x47) = *(undefined *)((int)puVar2 + 0xf);
  *(undefined *)(param_1 + 0x12) = *(undefined *)(puVar2 + 4);
  local_4._0_1_ = 10;
  local_88[0] = wxObject::vftable;
  FUN_0083e850();
  param_1[0x1d] = 7;
  param_1[0x1e] = 7;
  param_1[0x1f] = 0x10;
  FUN_00920050(local_20,0x55);
  local_4._0_1_ = 0xd;
  FUN_00920050(local_34,0x4b);
  local_4._0_1_ = 0xe;
  FUN_00920050(local_70,0x3c);
  local_4._0_1_ = 0xf;
  FUN_00920050(local_48,0x32);
  local_4._0_1_ = 0x10;
  FUN_00920050(local_5c,0x28);
  local_4._0_1_ = 0x11;
  puVar2 = (undefined4 *)FUN_009566f0(local_5c,1,100);
  local_4._0_1_ = 0x12;
  if (param_1 + 0x17 != puVar2) {
    FUN_0083ea60(puVar2);
  }
  local_4._0_1_ = 0x11;
  local_90[0] = wxObject::vftable;
  FUN_0083e850();
  puVar2 = (undefined4 *)FUN_009566f0(local_70,1,100);
  local_4._0_1_ = 0x13;
  if (param_1 + 0x19 != puVar2) {
    FUN_0083ea60(puVar2);
  }
  local_4 = CONCAT31(local_4._1_3_,0x11);
  local_90[0] = wxObject::vftable;
  FUN_0083e850();
  puVar2 = (undefined4 *)FUN_008f8330(0x25);
  if (param_1 + 0x1b != puVar2) {
    FUN_0083ea60(puVar2);
  }
  uVar3 = FUN_008f7e50(0xb);
  puVar2 = (undefined4 *)FUN_00a242f0(local_90,&DAT_00d9cd28,5,3,uVar3);
  local_4._0_1_ = 0x14;
  if (param_1 + 1 != puVar2) {
    FUN_0083ea60(puVar2);
  }
  local_4._0_1_ = 0x11;
  FUN_008f7630();
  uVar3 = FUN_004561e7(0x80,0x80,0x80,0xff);
  local_4._0_1_ = 0x15;
  puVar2 = (undefined4 *)FUN_00a242f0(local_90,&DAT_00d9cd28,5,3,uVar3);
  local_4._0_1_ = 0x16;
  if (param_1 + 3 != puVar2) {
    FUN_0083ea60(puVar2);
  }
  local_4._0_1_ = 0x15;
  FUN_008f7630();
  local_4._0_1_ = 0x11;
  local_88[0] = wxObject::vftable;
  FUN_0083e850();
  uVar3 = FUN_008f7e50(0xb);
  puVar2 = (undefined4 *)FUN_00a242f0(local_90,&DAT_00d9cd20,7,6,uVar3);
  local_4._0_1_ = 0x17;
  if (param_1 + 5 != puVar2) {
    FUN_0083ea60(puVar2);
  }
  local_4._0_1_ = 0x11;
  FUN_008f7630();
  uVar3 = FUN_004561e7(0x80,0x80,0x80,0xff);
  local_4._0_1_ = 0x18;
  puVar2 = (undefined4 *)FUN_00a242f0(local_90,&DAT_00d9cd20,7,6,uVar3);
  local_4._0_1_ = 0x19;
  if (param_1 + 7 != puVar2) {
    FUN_0083ea60(puVar2);
  }
  local_4._0_1_ = 0x18;
  FUN_008f7630();
  local_4 = CONCAT31(local_4._1_3_,0x11);
  local_88[0] = wxObject::vftable;
  FUN_0083e850();
  puVar2 = (undefined4 *)(**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
  if (param_1 + 0x13 != puVar2) {
    FUN_0083ea60(puVar2);
  }
  uStack_8._0_1_ = 0x10;
  ppuStack_60 = wxObject::vftable;
  FUN_0083e850();
  uStack_8._0_1_ = 0xf;
  ppuStack_4c = wxObject::vftable;
  FUN_0083e850();
  uStack_8._0_1_ = 0xe;
  local_74 = wxObject::vftable;
  FUN_0083e850();
  uStack_8._0_1_ = 0xd;
  ppuStack_38 = wxObject::vftable;
  FUN_0083e850();
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,10);
  ppuStack_24 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_10;
  return param_1;
}



undefined4 __thiscall FUN_00a1f310(undefined4 param_1_00,byte param_1)

{
  FUN_00a1dfc0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x80);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00a1ee40(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00a1f3a0(int param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  undefined ***pppuVar3;
  undefined **local_2c;
  int local_28;
  undefined local_1c [16];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beef20;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  local_28 = DAT_032bf36c;
  if (DAT_032bf36c != 0) {
    *(int *)(DAT_032bf36c + 4) = *(int *)(DAT_032bf36c + 4) + 1;
  }
  local_2c = wxCursor::vftable;
  local_4 = 0;
  if (*(int *)(param_1_00 + 0x1b8) != 0) {
    (**(code **)(**(int **)(param_1_00 + 0x1b8) + 0x20))(local_1c,uVar2);
    cVar1 = FUN_008f7580(*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c));
    if (cVar1 != '\0') {
      pppuVar3 = (undefined ***)FUN_008f7ad0(0x16);
      local_4._0_1_ = 1;
      if (&local_2c != pppuVar3) {
        FUN_0083ea60(pppuVar3);
      }
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_008f7630();
    }
  }
  if ((undefined ***)(param_1 + 0x30) != &local_2c) {
    FUN_0083ea60(&local_2c);
  }
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_00a1f490(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_0092bd60(param_1,param_2);
  param_1_00[0x1b] = 0xffffffff;
  param_1_00[0x1c] = 0xffffffff;
  param_1_00[0x1d] = 0;
  *(undefined *)(param_1_00 + 0x18) = 0;
  param_1_00[0x1e] = 0;
  *(undefined *)(param_1_00 + 0x17) = 1;
  *param_1_00 = wxAuiToolBarEvent::vftable;
  param_1_00[0x19] = 0xffffffff;
  param_1_00[0x1a] = 0xffffffff;
  param_1_00[0x1f] = 0xffffffff;
  return param_1_00;
}



void __fastcall FUN_00a1f4e0(undefined4 *param_1)

{
  _free((void *)param_1[0x11]);
  if (7 < (uint)param_1[0x10]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0xb]);
  }
  param_1[0x10] = 7;
  param_1[0xf] = 0;
  *(undefined2 *)(param_1 + 0xb) = 0;
  *param_1 = wxObject::vftable;
  FUN_0083e850();
  return;
}



void __fastcall FUN_00a1f530(undefined4 *param_1)

{
  param_1[7] = 7;
  param_1[6] = 0;
  *(undefined2 *)(param_1 + 2) = 0;
  param_1[8] = 0;
  param_1[0xb] = 0;
  param_1[10] = wxBitmap::vftable;
  param_1[0xc] = wxBitmap::vftable;
  param_1[0xd] = 0;
  param_1[0xe] = wxBitmap::vftable;
  param_1[0xf] = 0;
  param_1[0x16] = 7;
  param_1[0x15] = 0;
  *(undefined2 *)(param_1 + 0x11) = 0;
  param_1[0x17] = 0;
  param_1[0x1f] = 7;
  param_1[0x1e] = 0;
  *(undefined2 *)(param_1 + 0x1a) = 0;
  param_1[0x20] = 0;
  param_1[0x23] = 0;
  param_1[0x24] = 0;
  *param_1 = 0;
  param_1[0x22] = 0;
  param_1[0x25] = 0;
  param_1[0x26] = 0;
  param_1[0x27] = 0;
  param_1[0x28] = 0;
  param_1[0x29] = 0;
  *(undefined *)(param_1 + 0x2a) = 1;
  *(undefined *)((int)param_1 + 0xa9) = 1;
  *(undefined *)((int)param_1 + 0xaa) = 1;
  param_1[0x2b] = 0;
  param_1[0x2c] = 0x900;
  return;
}



void __fastcall FUN_00a1f5e0(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beef61;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 2;
  _free(*(void **)(param_1 + 0x80));
  if (7 < *(uint *)(param_1 + 0x7c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x68));
  }
  *(undefined4 *)(param_1 + 0x7c) = 7;
  *(undefined4 *)(param_1 + 0x78) = 0;
  *(undefined2 *)(param_1 + 0x68) = 0;
  _free(*(void **)(param_1 + 0x5c));
  if (7 < *(uint *)(param_1 + 0x58)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x44));
  }
  *(undefined4 *)(param_1 + 0x58) = 7;
  *(undefined4 *)(param_1 + 0x54) = 0;
  *(undefined2 *)(param_1 + 0x44) = 0;
  FUN_008f7630(uVar1);
  local_4._0_1_ = 1;
  FUN_008f7630();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_008f7630();
  _free(*(void **)(param_1 + 0x20));
  if (7 < *(uint *)(param_1 + 0x1c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 8));
  }
  *(undefined4 *)(param_1 + 0x1c) = 7;
  *(undefined4 *)(param_1 + 0x18) = 0;
  *(undefined2 *)(param_1 + 8) = 0;
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_00a1f6e0(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x80);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0092bd60(DAT_032bd44c,0);
    puVar1[0x1b] = 0xffffffff;
    puVar1[0x1c] = 0xffffffff;
    puVar1[0x19] = 0xffffffff;
    puVar1[0x1d] = 0;
    *(undefined *)(puVar1 + 0x17) = 1;
    *puVar1 = wxAuiToolBarEvent::vftable;
    *(undefined *)(puVar1 + 0x18) = 0;
    puVar1[0x1a] = 0xffffffff;
    puVar1[0x1e] = 0;
    puVar1[0x1f] = 0xffffffff;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __fastcall FUN_00a1f780(int *param_1)

{
  int **ppiVar1;
  char cVar2;
  byte bVar3;
  uint uVar4;
  int *piVar5;
  uint uVar6;
  undefined auStack_a4 [3];
  char local_a1;
  int *local_a0;
  uint local_9c;
  undefined **local_98 [2];
  int *local_90;
  byte local_3c;
  undefined4 local_3b;
  undefined local_37;
  char local_36;
  undefined2 local_30;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beef8b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_a4;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff4c;
  ExceptionList = &local_c;
  local_a0 = (int *)param_1[0x1c];
  local_9c = param_1[0x66];
  uVar6 = 0;
  local_a1 = '\0';
  if (local_9c != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x66] <= uVar6)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0,uVar4);
      }
      ppiVar1 = *(int ***)(param_1[0x67] + uVar6 * 4);
      if (ppiVar1[0x26] != (int *)0xffffffff) {
        FUN_0092bd60(DAT_032bff60,ppiVar1[0x26]);
        local_98[0] = wxUpdateUIEvent::vftable;
        local_1c = 7;
        local_20 = 0;
        local_30 = 0;
        local_18 = 0;
        local_36 = '\0';
        local_37 = 0;
        local_3b = 0;
        local_3c = 0;
        local_4 = 0;
        local_90 = param_1;
        cVar2 = (**(code **)(*local_a0 + 0x18))(local_98);
        if (cVar2 != '\0') {
          if (local_3b._2_1_ != '\0') {
            if (*ppiVar1 == (int *)0x0) {
              bVar3 = ~(byte)((uint)ppiVar1[0x28] >> 3) & 1;
            }
            else {
              bVar3 = FUN_0091b930();
            }
            if ((byte)local_3b != bVar3) {
              if (*ppiVar1 == (int *)0x0) {
                if ((byte)local_3b == 0) {
                  ppiVar1[0x28] = (int *)((uint)ppiVar1[0x28] | 8);
                }
                else {
                  ppiVar1[0x28] = (int *)((uint)ppiVar1[0x28] & 0xfffffff7);
                }
              }
              else {
                (**(code **)(**ppiVar1 + 0xd8))(local_3b);
              }
              local_a1 = '\x01';
            }
          }
          if ((local_36 != '\0') &&
             (((ppiVar1[0x27] == (int *)0x1 || (ppiVar1[0x27] == (int *)0x2)) &&
              (piVar5 = ppiVar1[0x28], local_3c != ((byte)((uint)piVar5 >> 5) & 1))))) {
            if (local_3c == 0) {
              piVar5 = (int *)((uint)piVar5 & 0xffffffdf);
            }
            else {
              piVar5 = (int *)((uint)piVar5 | 0x20);
            }
            ppiVar1[0x28] = piVar5;
            local_a1 = '\x01';
          }
        }
        local_4 = 0xffffffff;
        FUN_0091e450();
      }
      uVar6 = uVar6 + 1;
    } while (uVar6 < local_9c);
    if (local_a1 != '\0') {
      (**(code **)(*param_1 + 0x15c))(0,0);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00a1f9b0(uint param_1)

{
  if ((param_1 & 2) != 0) {
    FUN_00a1f780();
  }
  FUN_0091eb60(param_1);
  return;
}



void __thiscall FUN_00a1f9d0(int *param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  byte bVar3;
  undefined4 unaff_EBX;
  undefined auStack_70 [8];
  int *piStack_68;
  uint uStack_24;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00beefc8;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_70;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1_00 + 0x158))(DAT_0323f878 ^ (uint)&stack0xffffff84);
  if (cVar1 != '\0') {
    FUN_00a1db90(0);
    iVar2 = FUN_00a1e210(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30));
    if ((iVar2 != 0) && ((*(byte *)(iVar2 + 0xa0) & 8) == 0)) {
      FUN_00a1daf0(iVar2);
    }
    if (((*(char *)(param_1_00 + 0x85) == '\0') && (param_1_00[0x6a] != 0)) &&
       (iVar2 == param_1_00[0x6a])) {
      (**(code **)(*param_1_00 + 0x2a0))(0);
      FUN_0092bd60(DAT_032bfdd0,*(undefined4 *)(param_1_00[0x6a] + 0x98));
      puStack_8 = (undefined *)0x0;
      piStack_68 = param_1_00;
      if ((*(int *)(iVar2 + 0x9c) == 1) || (*(int *)(iVar2 + 0x9c) == 2)) {
        bVar3 = ~(byte)(*(uint *)(param_1_00[0x6a] + 0xa0) >> 5);
        FUN_00a1e460(*(undefined4 *)(param_1_00[0x6a] + 0x98),
                     CONCAT31((int3)((uint)unaff_EBX >> 8),bVar3) & 0xffffff01);
        (**(code **)(*param_1_00 + 0x15c))(0,0);
        (**(code **)(*param_1_00 + 0x160))();
        uStack_24 = (uint)(bVar3 & 1);
      }
      FUN_0091fac0();
      (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(auStack_70);
      FUN_00a1f780();
      local_c = (void *)0xffffffff;
      FUN_00454a4e();
    }
    else {
      FUN_0091fac0();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a1fb60(int param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  undefined **local_110 [2];
  int local_108;
  uint uStack_e8;
  undefined4 uStack_d8;
  uint uStack_d4;
  void *pvStack_d0;
  undefined local_b4;
  undefined local_b0;
  undefined4 local_ac;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined4 local_a0;
  undefined4 local_9c;
  undefined4 local_98;
  undefined4 local_94;
  undefined local_90 [8];
  int local_88;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_14;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bef006;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_110);
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffee4;
  ExceptionList = &local_c;
  iVar3 = FUN_00a1e210(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30));
  iVar1 = *(int *)(param_1_00 + 0x1a8);
  if ((iVar1 == 0) || (iVar3 != iVar1)) {
    FUN_0092bd60(DAT_032ea9c0,0xffffffff);
    local_b4 = 1;
    local_110[0] = wxAuiToolBarEvent::vftable;
    local_b0 = 0;
    local_a4 = 0xffffffff;
    local_a0 = 0xffffffff;
    local_9c = 0;
    local_98 = 0;
    local_ac = *(undefined4 *)(param_1_00 + 0x1c8);
    local_a8 = *(undefined4 *)(param_1_00 + 0x1cc);
    local_94 = 0xffffffff;
    local_4 = 1;
    local_108 = param_1_00;
    (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_110,uVar2);
    FUN_00a1f780();
    puStack_8 = (undefined *)0xffffffff;
    _free(pvStack_d0);
    if (7 < uStack_d4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_e8);
    }
    uStack_d4 = 7;
    uStack_d8 = 0;
    uStack_e8 = uStack_e8 & 0xffff0000;
    FUN_0083e850();
  }
  else {
    FUN_00a1f490(DAT_032ea9c0,*(undefined4 *)(iVar1 + 0x98));
    local_2c = *(undefined4 *)(param_1_00 + 0x1c8);
    local_14 = *(undefined4 *)(*(int *)(param_1_00 + 0x1a8) + 0x98);
    local_28 = *(undefined4 *)(param_1_00 + 0x1cc);
    local_4 = 0;
    local_88 = param_1_00;
    (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_90);
    FUN_00a1f780();
    puStack_8 = (undefined *)0xffffffff;
    FUN_00a1f4e0();
  }
  *(undefined4 *)(param_1_00 + 0x1c8) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x1cc) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x1a8) = 0;
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a1fd70(int param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  undefined local_90 [8];
  int local_88;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bef04b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_90;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff6c;
  ExceptionList = &local_c;
  iVar3 = FUN_00a1e210(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30));
  iVar1 = *(int *)(param_1_00 + 0x1a8);
  if (((iVar1 != 0) && (iVar3 == iVar1)) && (*(int *)(iVar3 + 0x9c) == 0)) {
    FUN_00a1f490(DAT_032ea9c4,*(undefined4 *)(iVar1 + 0x98));
    local_2c = *(undefined4 *)(param_1_00 + 0x1c8);
    local_14 = *(undefined4 *)(*(int *)(param_1_00 + 0x1a8) + 0x98);
    local_28 = *(undefined4 *)(param_1_00 + 0x1cc);
    local_4 = 0;
    local_88 = param_1_00;
    (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_90,uVar2);
    FUN_00a1f780();
    local_4 = 0xffffffff;
    FUN_00a1f4e0();
  }
  *(undefined4 *)(param_1_00 + 0x1c8) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x1cc) = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x1a8) = 0;
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a1fea0(int *param_1_00,int param_1)

{
  char cVar1;
  char cVar2;
  undefined uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  undefined auStack_90 [8];
  int *piStack_88;
  char cStack_6c;
  undefined4 uStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bef08b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_90;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1_00 + 0x158))(DAT_0323f878 ^ (uint)&stack0xffffff60);
  if (*(char *)(param_1_00 + 0x85) == '\0') {
    if ((cVar1 != '\0') &&
       (uVar4 = *(int *)(param_1 + 0x30) - param_1_00[0x73], uVar7 = (int)uVar4 >> 0x1f,
       uVar5 = *(int *)(param_1 + 0x2c) - param_1_00[0x72], uVar8 = (int)uVar5 >> 0x1f,
       5 < (int)(((uVar4 ^ uVar7) - uVar7) + ((uVar5 ^ uVar8) - uVar8)))) {
      FUN_00a1f490(DAT_032ea9c8,param_1_00[0x10]);
      uStack_14 = *(undefined4 *)(param_1_00[0x6a] + 0x98);
      uStack_4 = 0;
      piStack_88 = param_1_00;
      cVar2 = (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(auStack_90);
      if ((cVar2 == '\0') || (cStack_6c != '\0')) {
        uVar3 = 0;
      }
      else {
        uVar3 = 1;
      }
      *(undefined *)(param_1_00 + 0x85) = uVar3;
      FUN_00a1f780();
      uStack_4 = 0xffffffff;
      FUN_00a1f4e0();
    }
    if (*(char *)(param_1_00 + 0x85) == '\0') {
      iVar6 = FUN_00a1e210(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30));
      if (cVar1 == '\0') {
        if ((iVar6 != 0) && ((*(byte *)(iVar6 + 0xa0) & 8) != 0)) {
          iVar6 = 0;
        }
        FUN_00a1daf0(iVar6);
        iVar6 = FUN_00a1e2c0(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30));
        if (iVar6 == 0) {
          (**(code **)(*param_1_00 + 0x2a0))(0);
          param_1_00[0x6b] = 0;
        }
        else if (iVar6 != param_1_00[0x6b]) {
          param_1_00[0x6b] = iVar6;
          if (*(int *)(iVar6 + 0x54) == 0) {
            (**(code **)(*param_1_00 + 0x2a0))(0);
          }
          else {
            FUN_0091c4a0(iVar6 + 0x40);
          }
        }
        FUN_00a1e390();
      }
      else if (iVar6 == param_1_00[0x6a]) {
        FUN_00a1db90(param_1_00[0x6a]);
      }
      else {
        FUN_00a1db90(0);
        FUN_00a1daf0(param_1_00[0x6a]);
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_00a200a0(undefined4 *param_1_00,int param_1)

{
  FUN_0048a2df(param_1);
  *param_1_00 = wxNotifyEvent::vftable;
  *(undefined *)(param_1_00 + 0x17) = *(undefined *)(param_1 + 0x5c);
  *param_1_00 = wxAuiToolBarEvent::vftable;
  param_1_00[0x19] = 0;
  param_1_00[0x1a] = 0;
  param_1_00[0x1b] = 0;
  param_1_00[0x1c] = 0;
  param_1_00[0x1d] = 0;
  param_1_00[0x1e] = 0;
  *(undefined *)(param_1_00 + 0x18) = *(undefined *)(param_1 + 0x60);
  param_1_00[0x19] = *(undefined4 *)(param_1 + 100);
  param_1_00[0x1a] = *(undefined4 *)(param_1 + 0x68);
  param_1_00[0x1b] = *(undefined4 *)(param_1 + 0x6c);
  param_1_00[0x1c] = *(undefined4 *)(param_1 + 0x70);
  param_1_00[0x1d] = *(undefined4 *)(param_1 + 0x74);
  param_1_00[0x1e] = *(undefined4 *)(param_1 + 0x78);
  param_1_00[0x1f] = *(undefined4 *)(param_1 + 0x7c);
  return param_1_00;
}



undefined4 __fastcall FUN_00a20110(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x80);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00a200a0(param_1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00a20180(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = *param_1;
  if (param_1_00 + 1 != param_1 + 1) {
    FID_conflict_assign(param_1 + 1,0,0xffffffff);
  }
  if (param_1_00 + 10 != param_1 + 10) {
    FUN_0083ea60(param_1 + 10);
  }
  if (param_1_00 + 0xc != param_1 + 0xc) {
    FUN_0083ea60(param_1 + 0xc);
  }
  if (param_1_00 + 0xe != param_1 + 0xe) {
    FUN_0083ea60(param_1 + 0xe);
  }
  if (param_1_00 + 0x10 != param_1 + 0x10) {
    FID_conflict_assign(param_1 + 0x10,0,0xffffffff);
  }
  if (param_1_00 + 0x19 != param_1 + 0x19) {
    FID_conflict_assign(param_1 + 0x19,0,0xffffffff);
  }
  param_1_00[0x22] = param_1[0x22];
  param_1_00[0x23] = param_1[0x23];
  param_1_00[0x24] = param_1[0x24];
  param_1_00[0x25] = param_1[0x25];
  param_1_00[0x26] = param_1[0x26];
  param_1_00[0x27] = param_1[0x27];
  param_1_00[0x28] = param_1[0x28];
  param_1_00[0x29] = param_1[0x29];
  *(undefined *)(param_1_00 + 0x2a) = *(undefined *)(param_1 + 0x2a);
  *(undefined *)((int)param_1_00 + 0xa9) = *(undefined *)((int)param_1 + 0xa9);
  *(undefined *)((int)param_1_00 + 0xaa) = *(undefined *)((int)param_1 + 0xaa);
  param_1_00[0x2b] = param_1[0x2b];
  param_1_00[0x2c] = param_1[0x2c];
  return;
}



void __fastcall FUN_00a202a0(int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = *(uint *)(param_1 + 4);
  if (uVar2 != 0) {
    uVar3 = 0;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uVar2 <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(*(int *)(param_1 + 8) + uVar3 * 4);
      if (iVar1 != 0) {
        FUN_00a1f5e0();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar1);
      }
      uVar2 = *(uint *)(param_1 + 4);
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar2);
  }
  return;
}



void __thiscall FUN_00a20310(int param_1_00,int param_1)

{
  undefined4 uVar1;
  void *unaff_EBX;
  uint uStack_38;
  void *pvStack_34;
  int iStack_2c;
  int iStack_24;
  int *piStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bef0c8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(**(int **)(param_1 + 8) + 0x50))
            (param_1_00 + 0x4c,DAT_0323f878 ^ (uint)&stack0xffffffac);
  uVar1 = FUN_008f7e50(0xb);
  (**(code **)(**(int **)(param_1 + 8) + 0x78))(uVar1);
  uStack_4 = 0;
  FUN_004325b6(L"ABCDHgj");
  local_c = (void *)0x0;
  (**(code **)(**(int **)(param_1 + 8) + 0xa4))(&uStack_38,&stack0xffffffb4,&uStack_4,0,0,0);
  iStack_24 = -1;
  _free(pvStack_34);
  if (7 < uStack_38) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(0);
  }
  uStack_38 = 7;
  (**(code **)(**(int **)(param_1 + 8) + 0xb4))
            (*piStack_10,piStack_10[1],piStack_10[2] + -1,piStack_10[3]);
  (**(code **)(**(int **)(param_1 + 8) + 0x168))
            (iStack_24 + 4,*piStack_10 + 1,(piStack_10[3] - iStack_2c) / 2 + piStack_10[1]);
  (**(code **)(**(int **)(param_1 + 8) + 0xc0))();
  ExceptionList = unaff_EBX;
  return;
}



void __thiscall FUN_00a20450(int param_1_00,int param_1,int param_2,int param_3,int *param_4)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  char cVar4;
  undefined4 uVar5;
  undefined ***pppuVar6;
  int iVar7;
  bool bVar8;
  uint uStack_84;
  int local_64;
  undefined **ppuStack_5c;
  undefined **ppuStack_58;
  undefined **ppuStack_4c;
  uint uStack_48;
  void *pvStack_44;
  undefined auStack_24 [4];
  undefined **ppuStack_20;
  void *pvStack_10;
  undefined4 local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  piVar3 = param_4;
  iVar2 = param_1;
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bef158;
  local_c = ExceptionList;
  uStack_84 = DAT_0323f878 ^ (uint)&stack0xffffff80;
  ExceptionList = &local_c;
  iVar7 = 0;
  if ((*(byte *)(param_1_00 + 0x54) & 1) != 0) {
    (**(code **)(**(int **)(param_1 + 8) + 0x50))(param_1_00 + 0x4c);
    FUN_004325b6(L"ABCDHgj");
    uStack_8 = (undefined *)0x0;
    (**(code **)(**(int **)(param_1 + 8) + 0xa4))
              (&uStack_48,&stack0x00000000,&stack0xffffff8c,0,0,0);
    ppuStack_20 = (undefined **)0xffffffff;
    _free(pvStack_44);
    if (7 < uStack_48) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppuStack_5c);
    }
    uStack_84 = 0;
    (**(code **)(**(int **)(param_1 + 8) + 0xa4))
              ((int)pvStack_10 + 4,&uStack_84,&stack0xffffff84,0,0,0);
  }
  param_1 = 0;
  local_64 = 0;
  if (*(int *)(param_1_00 + 0x58) == 3) {
    if (*(int *)(param_3 + 0x2c) == 0) {
      iVar7 = 0;
    }
    else {
      iVar7 = *(int *)(*(int *)(param_3 + 0x2c) + 8);
    }
    param_1 = (*param_4 - iVar7 / 2) + param_4[2] / 2;
    if (*(int *)(param_3 + 0x2c) == 0) {
      param_4 = (int *)0x0;
    }
    else {
      param_4 = *(int **)(*(int *)(param_3 + 0x2c) + 0xc);
    }
    iVar7 = (piVar3[3] / 2 - (int)param_4 / 2) + piVar3[1];
    local_64 = piVar3[1] + -1 + piVar3[3];
  }
  else if (*(int *)(param_1_00 + 0x58) == 1) {
    param_1 = *param_4 + 3;
    if (*(int *)(param_3 + 0x2c) == 0) {
      iVar7 = 0;
    }
    else {
      iVar7 = *(int *)(*(int *)(param_3 + 0x2c) + 0xc);
    }
    iVar7 = (param_4[1] - iVar7 / 2) + param_4[3] / 2;
    local_64 = param_4[1] + param_4[3] / 2;
  }
  uVar1 = *(uint *)(param_3 + 0xa0);
  if ((uVar1 & 8) != 0) goto LAB_00a20940;
  if ((uVar1 & 4) == 0) {
    if (((uVar1 & 2) == 0) && (*(char *)(param_3 + 0xaa) == '\0')) {
      if ((uVar1 & 0x20) != 0) {
        uVar5 = FUN_009566f0(param_1_00 + 0x38,1,100);
        local_4 = 9;
        (**(code **)(**(int **)(iVar2 + 8) + 0x58))(uVar5);
        uStack_8 = (undefined *)0xffffffff;
        ppuStack_58 = wxObject::vftable;
        FUN_0083e850();
        uVar5 = FUN_00920050(auStack_24,0xaa);
        uStack_8 = (undefined *)0xa;
        uVar5 = FUN_0095d7e0(uVar5,100);
        uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,0xb);
        (**(code **)(**(int **)(iVar2 + 8) + 0x60))(uVar5);
        local_4 = CONCAT31(local_4._1_3_,10);
        FUN_008f7630();
        local_4 = 0xffffffff;
        ppuStack_20 = wxObject::vftable;
        FUN_0083e850();
        FUN_007b0d9e(piVar3);
      }
      goto LAB_00a20940;
    }
    uVar5 = FUN_009566f0(param_1_00 + 0x38,1,100);
    local_4 = 4;
    (**(code **)(**(int **)(iVar2 + 8) + 0x58))(uVar5);
    uStack_8 = (undefined *)0xffffffff;
    ppuStack_58 = wxObject::vftable;
    FUN_0083e850();
    uVar5 = FUN_00920050(&uStack_48,0xaa);
    uStack_8 = (undefined *)0x5;
    uVar5 = FUN_0095d7e0(uVar5,100);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,6);
    (**(code **)(**(int **)(iVar2 + 8) + 0x60))(uVar5);
    local_c = (void *)CONCAT31(local_c._1_3_,5);
    FUN_008f7630();
    local_c = (void *)0xffffffff;
    ppuStack_4c = wxObject::vftable;
    FUN_0083e850();
    if ((*(byte *)(param_1 + 0xa0) & 0x20) != 0) {
      uVar5 = FUN_00920050(&ppuStack_4c,0xb4);
      local_c = (void *)0x7;
      uVar5 = FUN_0095d7e0(uVar5,100);
      local_c._0_1_ = 8;
      (**(code **)(**(int **)(iVar2 + 8) + 0x60))(uVar5);
      local_c = (void *)CONCAT31(local_c._1_3_,7);
      goto LAB_00a208f4;
    }
  }
  else {
    uVar5 = FUN_009566f0(param_1_00 + 0x38,1,100);
    local_4 = 1;
    (**(code **)(**(int **)(iVar2 + 8) + 0x58))(uVar5);
    uStack_8 = (undefined *)0xffffffff;
    ppuStack_58 = wxObject::vftable;
    FUN_0083e850();
    uVar5 = FUN_00920050(&uStack_48,0x96);
    uStack_8 = (undefined *)0x2;
    uVar5 = FUN_0095d7e0(uVar5,100);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,3);
    (**(code **)(**(int **)(iVar2 + 8) + 0x60))(uVar5);
    local_c = (void *)CONCAT31(local_c._1_3_,2);
LAB_00a208f4:
    FUN_008f7630();
    local_c = (void *)0xffffffff;
    ppuStack_4c = wxObject::vftable;
    FUN_0083e850();
  }
  (**(code **)(**(int **)(iVar2 + 8) + 0x150))(*piVar3,piVar3[1],piVar3[2],piVar3[3]);
LAB_00a20940:
  ppuStack_58 = (undefined **)0x0;
  ppuStack_5c = wxBitmap::vftable;
  local_4 = 0xc;
  if ((*(byte *)(param_3 + 0xa0) & 8) == 0) {
    pppuVar6 = (undefined ***)(param_3 + 0x28);
    bVar8 = &ppuStack_5c == pppuVar6;
  }
  else {
    pppuVar6 = (undefined ***)(param_3 + 0x30);
    bVar8 = &ppuStack_5c == pppuVar6;
  }
  if (((!bVar8) && (FUN_0083ea60(pppuVar6), ppuStack_58 != (undefined **)0x0)) &&
     (cVar4 = (**(code **)((int)*ppuStack_58 + 4))(), cVar4 != '\0')) {
    (**(code **)(**(int **)(iVar2 + 8) + 0x164))(&ppuStack_5c,param_1,iVar7,1);
  }
  uVar5 = FUN_008f7e50(0xb);
  (**(code **)(**(int **)(iVar2 + 8) + 0x78))(uVar5);
  if ((*(byte *)(param_2 + 0xa0) & 8) != 0) {
    (**(code **)(**(int **)(iVar2 + 8) + 0x78))(&DAT_032ea9d0);
  }
  if (((*(byte *)(param_1_00 + 0x54) & 1) != 0) && (*(int *)(param_2 + 0x18) != 0)) {
    (**(code **)(**(int **)(iVar2 + 8) + 0x168))(param_2 + 4,local_64,0);
  }
  uStack_8 = (undefined *)0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_10;
  return;
}



void __thiscall FUN_00a20a40(int param_1_00,int param_1,int param_2,int param_3,int *param_4)

{
  int iVar1;
  undefined **ppuVar2;
  uint uVar3;
  char cVar4;
  int iVar5;
  undefined4 uVar6;
  undefined ***pppuVar7;
  int unaff_EBX;
  undefined **local_a4;
  undefined auStack_9c [4];
  int local_98;
  int local_94;
  undefined **ppuStack_90;
  int *piStack_8c;
  undefined **ppuStack_88;
  undefined4 uStack_84;
  int local_80;
  int local_7c;
  int local_78;
  int iStack_74;
  int iStack_70;
  int local_6c;
  int local_64;
  undefined **local_60;
  int local_5c;
  int local_58;
  int local_54;
  undefined **local_50;
  undefined **local_4c;
  int local_48;
  undefined4 uStack_44;
  uint uStack_30;
  void *pvStack_2c;
  undefined auStack_24 [4];
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bef208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_64 = *param_4;
  iVar1 = param_4[3];
  ppuVar2 = (undefined **)param_4[1];
  local_7c = 0;
  local_98 = 0;
  local_a4 = (undefined **)0x0;
  local_78 = 0;
  local_94 = 0;
  local_80 = 0;
  local_6c = param_4[2] + -10;
  local_54 = local_64 + -0xb + param_4[2];
  local_4c = (undefined **)0xb;
  local_60 = ppuVar2;
  local_5c = local_6c;
  local_58 = iVar1;
  local_50 = ppuVar2;
  local_48 = iVar1;
  if ((*(byte *)(param_1_00 + 0x54) & 1) != 0) {
    (**(code **)(**(int **)(param_1 + 8) + 0x50))
              (param_1_00 + 0x4c,DAT_0323f878 ^ (uint)&stack0xffffff48);
    if ((*(byte *)(unaff_EBX + 0x54) & 1) != 0) {
      FUN_004325b6(L"ABCDHgj");
      uStack_8 = (undefined *)0x0;
      (**(code **)(**(int **)(param_1 + 8) + 0xa4))(&local_48,&iStack_74,auStack_9c,0,0,0);
      uStack_8 = (undefined *)0xffffffff;
      _free(pvStack_2c);
      if (7 < uStack_30) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_44);
      }
      local_80 = 0;
    }
    (**(code **)(**(int **)(param_1 + 8) + 0xa4))(param_2 + 4,&local_80,&local_78,0,0,0);
  }
  iVar5 = *(int *)(param_1_00 + 8);
  if (iVar5 != 0) {
    iVar5 = *(int *)(iVar5 + 8);
  }
  iStack_70 = (local_54 - iVar5 / 2) + 5;
  iVar5 = *(int *)(param_1_00 + 8);
  if (iVar5 != 0) {
    iVar5 = *(int *)(iVar5 + 0xc);
  }
  iStack_74 = (iVar1 / 2 - iVar5 / 2) + (int)ppuVar2;
  if (*(int *)(param_1_00 + 0x58) == 3) {
    iVar5 = *(int *)(param_3 + 0x2c);
    if (iVar5 != 0) {
      iVar5 = *(int *)(iVar5 + 8);
    }
    local_94 = (local_6c / 2 - iVar5 / 2) + local_64;
    if (*(int *)(param_3 + 0x2c) == 0) {
      local_a4 = (undefined **)0x0;
    }
    else {
      local_a4 = *(undefined ***)(*(int *)(param_3 + 0x2c) + 0xc);
    }
    local_80 = ((iVar1 - local_98) / 2 - (int)local_a4 / 2) + (int)ppuVar2;
    local_a4 = (undefined **)((param_4[2] / 2 - local_7c / 2) + 1 + *param_4);
    local_78 = (param_4[1] - local_98) + -1 + param_4[3];
  }
  else if (*(int *)(param_1_00 + 0x58) == 1) {
    local_94 = *param_4 + 3;
    if (*(int *)(param_3 + 0x2c) == 0) {
      local_a4 = (undefined **)0x0;
    }
    else {
      local_a4 = *(undefined ***)(*(int *)(param_3 + 0x2c) + 0xc);
    }
    local_80 = (param_4[3] / 2 - (int)local_a4 / 2) + param_4[1];
    iVar5 = *(int *)(param_3 + 0x2c);
    if (iVar5 != 0) {
      iVar5 = *(int *)(iVar5 + 8);
    }
    local_a4 = (undefined **)(iVar5 + 3 + local_94);
    local_78 = (param_4[3] / 2 - local_98 / 2) + param_4[1];
  }
  uVar3 = *(uint *)(param_3 + 0xa0);
  if ((uVar3 & 4) == 0) {
    if (((uVar3 & 2) == 0) && (*(char *)(param_3 + 0xaa) == '\0')) {
      if ((uVar3 & 0x20) == 0) goto LAB_00a2102e;
      uVar6 = FUN_009566f0(param_1_00 + 0x38,1,100);
      uStack_4 = 9;
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar6);
      uStack_8 = (undefined *)0xffffffff;
      FUN_0083e850();
      uVar6 = FUN_00920050(auStack_24,0xaa);
      uStack_8 = (undefined *)0xa;
      uVar6 = FUN_0095d7e0(uVar6,100);
      uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,0xb);
      (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar6);
      uStack_4 = CONCAT31(uStack_4._1_3_,10);
      FUN_008f7630();
      uStack_4 = 0xffffffff;
      uStack_20 = wxObject::vftable;
      FUN_0083e850();
      FUN_007b0d9e(&local_64);
      FUN_007b0d9e(&local_54);
    }
    else {
      uVar6 = FUN_009566f0(param_1_00 + 0x38,1,100);
      uStack_4 = 6;
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar6);
      uStack_8 = (undefined *)0xffffffff;
      FUN_0083e850();
      uVar6 = FUN_00920050(&local_48,0xaa);
      uStack_8 = (undefined *)0x7;
      uVar6 = FUN_0095d7e0(uVar6,100);
      uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,8);
      (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar6);
      local_c = (void *)CONCAT31(local_c._1_3_,7);
      FUN_008f7630();
      local_c = (void *)0xffffffff;
      local_4c = wxObject::vftable;
      FUN_0083e850();
      (**(code **)(**(int **)(param_1 + 8) + 0x150))(local_6c,ppuVar2,iStack_74,iVar1);
      (**(code **)(**(int **)(param_1 + 8) + 0x150))(local_6c,ppuVar2,0xb,iVar1);
    }
  }
  else {
    uVar6 = FUN_009566f0(param_1_00 + 0x38,1,100);
    uStack_4 = 1;
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar6);
    uStack_8 = (undefined *)0xffffffff;
    FUN_0083e850();
    uVar6 = FUN_00920050(&local_48,0x8c);
    uStack_8 = (undefined *)0x2;
    uVar6 = FUN_0095d7e0(uVar6,100);
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,3);
    (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar6);
    local_c = (void *)CONCAT31(local_c._1_3_,2);
    FUN_008f7630();
    local_c = (void *)0xffffffff;
    local_4c = wxObject::vftable;
    FUN_0083e850();
    (**(code **)(**(int **)(param_1 + 8) + 0x150))(local_6c,ppuVar2,iStack_74,iVar1);
    uVar6 = FUN_00920050(&local_5c,0xaa);
    uStack_1c = 4;
    uVar6 = FUN_0095d7e0(uVar6,100);
    uStack_1c = CONCAT31(uStack_1c._1_3_,5);
    (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar6);
    uStack_20 = (undefined **)CONCAT31(uStack_20._1_3_,4);
    FUN_008f7630();
    uStack_20 = (undefined **)0xffffffff;
    local_60 = wxObject::vftable;
    FUN_0083e850();
    (**(code **)(**(int **)(param_1 + 8) + 0x150))(iStack_70,ppuVar2,0xb,iVar1);
  }
  local_a4 = wxObject::vftable;
LAB_00a2102e:
  piStack_8c = (int *)0x0;
  ppuStack_90 = wxBitmap::vftable;
  uStack_84 = 0;
  ppuStack_88 = wxBitmap::vftable;
  uStack_4 = 0xd;
  if ((*(byte *)(param_3 + 0xa0) & 8) == 0) {
    if (&ppuStack_90 != (undefined ***)(param_3 + 0x28)) {
      FUN_0083ea60((undefined ***)(param_3 + 0x28));
    }
    pppuVar7 = (undefined ***)(param_1_00 + 4);
  }
  else {
    if (&ppuStack_90 != (undefined ***)(param_3 + 0x30)) {
      FUN_0083ea60((undefined ***)(param_3 + 0x30));
    }
    pppuVar7 = (undefined ***)(param_1_00 + 0xc);
  }
  if (&ppuStack_88 != pppuVar7) {
    FUN_0083ea60(pppuVar7);
  }
  if (piStack_8c != (int *)0x0) {
    cVar4 = (**(code **)(*piStack_8c + 4))();
    if (cVar4 != '\0') {
      (**(code **)(**(int **)(param_1 + 8) + 0x164))(&ppuStack_90,local_94,local_80,1);
      (**(code **)(**(int **)(param_1 + 8) + 0x164))(&local_98,local_80,uStack_84,1);
      uVar6 = FUN_008f7e50(0xb);
      (**(code **)(**(int **)(param_1 + 8) + 0x78))(uVar6);
      if ((*(byte *)(param_3 + 0xa0) & 8) != 0) {
        (**(code **)(**(int **)(param_1 + 8) + 0x78))(&DAT_032ea9d0);
      }
      if (((*(byte *)(param_1_00 + 0x54) & 1) != 0) && (*(int *)(param_3 + 0x18) != 0)) {
        (**(code **)(**(int **)(param_1 + 8) + 0x168))(param_3 + 4,local_a4,local_78);
      }
    }
  }
  uStack_4 = CONCAT31(uStack_4._1_3_,0xc);
  FUN_008f7630();
  uStack_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a211a0(int param_1_00,int param_1,int param_3,int param_4,int *param_5)

{
  undefined4 uVar1;
  int local_3c;
  int local_38;
  undefined auStack_34 [40];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bccb48;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (((*(byte *)(param_1_00 + 0x54) & 1) != 0) && (*(int *)(param_1_00 + 0x58) == 3)) {
    local_3c = 0;
    local_38 = 0;
    (**(code **)(**(int **)(param_1 + 8) + 0x50))
              (param_1_00 + 0x4c,DAT_0323f878 ^ (uint)&stack0xffffffb4);
    if ((*(byte *)(param_1_00 + 0x54) & 1) != 0) {
      FUN_004325b6(L"ABCDHgj");
      puStack_8 = (undefined *)0x0;
      (**(code **)(**(int **)(param_1 + 8) + 0xa4))(auStack_34,&stack0x00000000,&local_3c,0,0,0);
      puStack_8 = (undefined *)0xffffffff;
      FUN_0040159c();
    }
    (**(code **)(**(int **)(param_1 + 8) + 0xa4))(param_3 + 4,&stack0xffffffc0,&local_38,0,0,0);
    if (local_3c <= param_5[2]) {
      uVar1 = FUN_008f7e50(0xb);
      (**(code **)(**(int **)(param_1 + 8) + 0x78))(uVar1);
      if (((*(byte *)(param_1_00 + 0x54) & 1) != 0) && (*(int *)(param_4 + 0x18) != 0)) {
        (**(code **)(**(int **)(param_1 + 8) + 0x168))
                  (param_3 + 4,*param_5 + 1 + (param_5[2] / 2 - local_3c / 2),
                   ((param_5[3] + param_5[1]) - local_38) + -1);
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a212f0(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  wchar_t *pwStack_48;
  int iStack_44;
  uint uStack_40;
  uint uStack_34;
  void *pvStack_30;
  void *pvStack_28;
  undefined4 uStack_20;
  void **ppvStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  iVar1 = param_2;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be4938;
  local_c = ExceptionList;
  uStack_40 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  iStack_44 = param_1_00 + 0x4c;
  pwStack_48 = (wchar_t *)0xa21328;
  (**(code **)(**(int **)(param_2 + 8) + 0x50))();
  pwStack_48 = L"ABCDHgj";
  param_1 = 0;
  uStack_4c = 0xa21346;
  FUN_004325b6();
  pwStack_48 = (wchar_t *)0x0;
  uStack_4c = 0;
  uStack_50 = 0;
  puStack_8 = (undefined *)0x0;
  (**(code **)(**(int **)(iVar1 + 8) + 0xa4))(&uStack_34,&param_1);
  uStack_20 = 0xffffffff;
  _free(pvStack_30);
  if (7 < uStack_34) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(pwStack_48);
  }
  pvStack_14 = *(void **)((int)local_c + 0x8c);
  if (pvStack_14 == (void *)0xffffffff) {
    (**(code **)(**(int **)(iVar1 + 8) + 0xa4))((int)local_c + 4,&local_c,&uStack_50,0,0,0);
    pvStack_14 = local_c;
  }
  *ppvStack_18 = pvStack_14;
  ppvStack_18[1] = &stack0xffffffc4;
  ExceptionList = pvStack_28;
  return;
}



void __thiscall FUN_00a21400(int param_1_00,int *param_1,int param_2,undefined4 param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  undefined auStack_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  iVar2 = param_4;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bef238;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar3 = (**(code **)(*(int *)(param_4 + 0x28) + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffbc);
  iVar1 = param_2;
  if ((cVar3 == '\0') && ((*(byte *)(param_1_00 + 0x54) & 1) == 0)) {
    *param_1 = 0x10;
    param_1[1] = 0x10;
  }
  else {
    iVar4 = *(int *)(iVar2 + 0x2c);
    if (iVar4 == 0) {
      iVar5 = 0;
      iVar4 = 0;
    }
    else {
      iVar5 = *(int *)(iVar4 + 8);
      iVar4 = *(int *)(iVar4 + 0xc);
    }
    if ((*(byte *)(param_1_00 + 0x54) & 1) != 0) {
      (**(code **)(**(int **)(param_2 + 8) + 0x50))(param_1_00 + 0x4c);
      if (*(int *)(param_1_00 + 0x58) == 3) {
        FUN_004325b6(L"ABCDHgj");
        uStack_4 = 0;
        (**(code **)(**(int **)(iVar1 + 8) + 0xa4))(auStack_30,&param_4,&param_2,0,0,0);
        uStack_4 = 0xffffffff;
        FUN_0040159c();
        iVar4 = iVar4 + param_2;
        if (*(int *)(iVar2 + 0x18) != 0) {
          (**(code **)(**(int **)(iVar1 + 8) + 0xa4))(iVar2 + 4,&param_4,&param_2,0,0,0);
          if (iVar5 <= param_4 + 6) {
            iVar5 = param_4 + 6;
          }
        }
      }
      else if ((*(int *)(param_1_00 + 0x58) == 1) && (*(int *)(iVar2 + 0x18) != 0)) {
        (**(code **)(**(int **)(iVar1 + 8) + 0xa4))(iVar2 + 4,&param_4,&param_2,0,0,0);
        iVar5 = iVar5 + 6 + param_4;
        if (iVar4 <= param_2) {
          iVar4 = param_2;
        }
      }
    }
    if (*(char *)(iVar2 + 0xa9) != '\0') {
      iVar5 = iVar5 + 0xe;
    }
    *param_1 = iVar5;
    param_1[1] = iVar4;
  }
  ExceptionList = local_c;
  return;
}



void FUN_00a215a0(int *param_1,int param_2)

{
  short *psVar1;
  uint uVar2;
  short *psVar3;
  int iVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 unaff_EBX;
  int unaff_ESI;
  uint uVar7;
  uint local_108;
  undefined4 *local_104;
  uint local_100 [2];
  uint local_f8;
  uint uStack_f4;
  int local_f0;
  void *local_ec;
  undefined local_e8 [4];
  uint local_e4;
  undefined auStack_d8 [4];
  int local_d4;
  uint local_d0;
  void *local_cc;
  int local_c4 [41];
  void *pvStack_20;
  undefined4 uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bef292;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_108;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xfffffee8;
  ExceptionList = &local_c;
  local_f0 = param_2;
  FUN_004710ac(0);
  local_104 = *(undefined4 **)(param_2 + 4);
  local_4 = 0;
  local_108 = 0;
  local_100[0] = 0;
  if (local_104 != (undefined4 *)0x0) {
    do {
      uVar7 = local_100[0];
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_2 + 4) <= local_100[0])) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0,uVar2);
      }
      iVar5 = *(int *)(*(int *)(param_2 + 8) + uVar7 * 4);
      if (*(int *)(iVar5 + 0x9c) == 0) {
        local_e4 = local_e4 & 0xffff0000;
        local_d0 = 7;
        local_d4 = 0;
        FID_conflict_assign(iVar5 + 0x40,0,0xffffffff);
        local_cc = (void *)0x0;
        local_4._0_1_ = 1;
        if ((local_d4 == 0) &&
           ((local_e8 == (undefined *)(iVar5 + 4) ||
            (FID_conflict_assign((undefined *)(iVar5 + 4),0,0xffffffff), local_d4 == 0)))) {
          psVar1 = &DAT_00d1fc10;
          do {
            psVar3 = psVar1;
            psVar1 = psVar3 + 1;
          } while (*psVar3 != 0);
          FID_conflict_assign(&DAT_00d1fc10,(int)(psVar3 + -0x68fe08) >> 1);
        }
        local_ec = operator_new(0xb8);
        local_4._0_1_ = 2;
        if (local_ec == (void *)0x0) {
          iVar4 = 0;
        }
        else {
          iVar4 = FUN_0095b150(local_c4,*(undefined4 *)(iVar5 + 0x98),local_e8,iVar5 + 0x40,0,0);
        }
        local_4._0_1_ = 1;
        if (iVar4 + 0xa0 != iVar5 + 0x28) {
          FUN_0083ea60(iVar5 + 0x28);
        }
        *(undefined *)(iVar4 + 0x68) = 1;
        (**(code **)(local_c4[0] + 0x6c))(iVar4);
        local_108 = local_108 + 1;
        local_4 = (uint)local_4._1_3_ << 8;
        _free(local_cc);
        uVar7 = local_100[0];
        if (7 < local_d0) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_e4);
        }
      }
      else if ((*(int *)(iVar5 + 0x9c) == -1) && (local_108 != 0)) {
        FUN_00470f04();
      }
      local_100[0] = uVar7 + 1;
      param_2 = local_f0;
    } while (local_100[0] < local_104);
  }
  FUN_00910c30(&local_f8);
  local_100[0] = local_f8;
  local_108 = uStack_f4;
  (**(code **)(*param_1 + 0x260))(local_100,&local_108);
  local_100[0] = local_108;
  (**(code **)(*param_1 + 0x27c))(&uStack_f4,&stack0xfffffef4);
  iVar5 = (**(code **)(*param_1 + 0x78))(&stack0xfffffef0);
  local_108 = unaff_ESI + *(int *)(iVar5 + 4);
  puVar6 = (undefined4 *)operator_new(0x44);
  uStack_18._0_1_ = 3;
  local_104 = puVar6;
  if (puVar6 == (undefined4 *)0x0) {
    puVar6 = (undefined4 *)0x0;
  }
  else {
    FUN_00845b70();
    *puVar6 = ToolbarCommandCapture::vftable;
    puVar6[0x10] = 0;
  }
  uStack_18 = (uint)uStack_18._1_3_ << 8;
  FUN_0091bd90(puVar6);
  FUN_0091ca70(auStack_d8,unaff_EBX,local_108);
  FUN_0091bf10(1);
  uStack_18 = 0xffffffff;
  FUN_0092de10();
  ExceptionList = pvStack_20;
  ___security_check_cookie_4();
  return;
}



undefined4 * __fastcall FUN_00a218d0(int param_1)

{
  int *unaff_EBX;
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uStack_68;
  undefined4 uStack_64;
  wchar_t *pwStack_60;
  int iStack_5c;
  uint uStack_58;
  undefined4 local_4c;
  uint local_48 [2];
  void *pvStack_40;
  int *piStack_38;
  int *local_34;
  undefined4 *puStack_30;
  undefined uStack_20;
  undefined4 uStack_14;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bef2d0;
  local_c = ExceptionList;
  uStack_58 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  pwStack_60 = (wchar_t *)0xa21901;
  iStack_5c = param_1;
  FUN_0094bd30();
  local_4c = 0;
  local_48[0] = 0;
  iStack_5c = param_1 + 0x84;
  local_4 = 0;
  pwStack_60 = (wchar_t *)0xa21921;
  (**(code **)(*local_34 + 0x50))();
  pwStack_60 = L"ABCDHgj";
  uStack_64 = 0xa2192f;
  FUN_004325b6();
  pwStack_60 = (wchar_t *)0x0;
  uStack_64 = 0;
  uStack_68 = 0;
  uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
  (**(code **)(*piStack_38 + 0xa4))(&local_34,local_48,&local_4c);
  uStack_20 = 0;
  _free(puStack_30);
  if ((int *)0x7 < local_34) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_48[0]);
  }
  uVar2 = 0;
  local_48[0] = local_48[0] & 0xffff0000;
  uVar1 = 0;
  local_34 = (int *)0x7;
  piStack_38 = (int *)0x0;
  (**(code **)(*unaff_EBX + 0xa4))(uStack_14,&uStack_68,&iStack_5c,0,0,0);
  puStack_30[1] = uVar2;
  *puStack_30 = uVar1;
  piStack_38 = (int *)0xffffffff;
  FUN_00457221();
  ExceptionList = pvStack_40;
  return puStack_30;
}



int __thiscall FUN_00a219f0(int param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bef332;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x1c) = 7;
  *(undefined4 *)(param_1_00 + 0x18) = 0;
  *(undefined2 *)(param_1_00 + 8) = 0;
  *(undefined4 *)(param_1_00 + 0x20) = 0;
  *(undefined4 *)(param_1_00 + 0x2c) = 0;
  *(undefined ***)(param_1_00 + 0x28) = wxBitmap::vftable;
  *(undefined4 *)(param_1_00 + 0x34) = 0;
  *(undefined ***)(param_1_00 + 0x30) = wxBitmap::vftable;
  *(undefined4 *)(param_1_00 + 0x3c) = 0;
  *(undefined ***)(param_1_00 + 0x38) = wxBitmap::vftable;
  *(undefined4 *)(param_1_00 + 0x58) = 7;
  *(undefined4 *)(param_1_00 + 0x54) = 0;
  *(undefined2 *)(param_1_00 + 0x44) = 0;
  *(undefined4 *)(param_1_00 + 0x5c) = 0;
  *(undefined4 *)(param_1_00 + 0x7c) = 7;
  *(undefined4 *)(param_1_00 + 0x78) = 0;
  *(undefined2 *)(param_1_00 + 0x68) = 0;
  *(undefined4 *)(param_1_00 + 0x80) = 0;
  *(undefined4 *)(param_1_00 + 0x8c) = 0;
  *(undefined4 *)(param_1_00 + 0x90) = 0;
  local_4 = 5;
  FUN_00a20180(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_00a21aa0(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd90b8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00a202a0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  FUN_0086a880();
  local_4 = 0xffffffff;
  FUN_0086aa30();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a21b00(int param_1_00,undefined4 param_1,uint param_2)

{
  int iVar1;
  void *pvVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bce226;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    pvVar2 = operator_new(0xb4);
    local_4 = 0;
    if (pvVar2 == (void *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = FUN_00a219f0(param_1);
    }
    iVar1 = *(int *)(param_1_00 + 4);
    local_4 = 0xffffffff;
    if (iVar3 != 0) {
      FUN_0086a0a0(iVar3,iVar1 * 4 >> 2,param_2);
    }
    uVar5 = 1;
    if (1 < param_2) {
      iVar3 = iVar1 * 4;
      do {
        iVar3 = iVar3 + 4;
        pvVar2 = operator_new(0xb4);
        local_4 = 1;
        if (pvVar2 == (void *)0x0) {
          uVar4 = 0;
        }
        else {
          uVar4 = FUN_00a219f0(param_1);
        }
        local_4 = 0xffffffff;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar5 + iVar1))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 *)(*(int *)(param_1_00 + 8) + iVar3) = uVar4;
        uVar5 = uVar5 + 1;
      } while (uVar5 < param_2);
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall
FUN_00a21c30(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,uint param_3,
            undefined4 param_4,uint param_5)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  undefined4 uVar4;
  int iVar5;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bef3b6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  FUN_0043c211("control");
  param_5 = param_5 | 0x200000;
  local_4 = 0;
  FUN_0081b619(param_1,param_2,param_3,param_4,param_5,&DAT_032c0398,local_30);
  local_4._0_1_ = 2;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_2c = local_2c & 0xffff0000;
  local_18 = 7;
  local_1c = 0;
  *param_1_00 = wxAuiToolBar::vftable;
  FUN_0086a600(uVar1);
  param_1_00[0x6d] = 0;
  param_1_00[0x6c] = wxBitmap::vftable;
  param_1_00[0x70] = 0;
  param_1_00[0x71] = 0;
  local_4._0_1_ = 4;
  param_1_00[0x72] = 0;
  param_1_00[0x73] = 0;
  FUN_0086a600();
  local_4._0_1_ = 5;
  FUN_0086a600();
  param_1_00[0x88] = 0;
  param_1_00[0x89] = 0;
  local_4._0_1_ = 6;
  param_1_00[0x8a] = 0;
  param_1_00[0x8b] = 0;
  puVar2 = (undefined4 *)operator_new(0x58);
  local_4._0_1_ = 7;
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    FUN_00445eb9();
    *puVar2 = wxBoxSizer::vftable;
    puVar2[2] = wxBoxSizer::vftable;
    puVar2[0x14] = 0;
    puVar2[0x15] = 0;
    puVar2[0x12] = 4;
    puVar2[0x13] = 0;
  }
  local_4._0_1_ = 6;
  param_1_00[0x69] = puVar2;
  param_1_00[0x7a] = 0xffffffff;
  param_1_00[0x7b] = 0xffffffff;
  param_1_00[0x7c] = 0;
  param_1_00[0x72] = 0xffffffff;
  param_1_00[0x73] = 0xffffffff;
  param_1_00[0x6a] = 0;
  param_1_00[0x6b] = 0;
  pvVar3 = operator_new(0x80);
  local_4._0_1_ = 9;
  if (pvVar3 == (void *)0x0) {
    uVar4 = 0;
  }
  else {
    uVar4 = FUN_00a1ee40();
  }
  param_1_00[0x68] = uVar4;
  param_1_00[0x82] = 3;
  param_1_00[0x83] = 3;
  local_4 = CONCAT31(local_4._1_3_,6);
  param_1_00[0x81] = 2;
  param_1_00[0x6e] = 0;
  param_1_00[0x6f] = 0;
  *(undefined *)(param_1_00 + 0x85) = 0;
  iVar5 = FUN_00a1d1d0();
  param_1_00[0x87] = iVar5;
  if (iVar5 == 0xc) {
    param_1_00[0x87] = 4;
  }
  *(byte *)((int)param_1_00 + 0x216) = (byte)(param_5 >> 4) & 1;
  param_1_00[0x7d] = 5;
  param_1_00[0x7e] = 5;
  param_1_00[0x86] = param_5;
  *(byte *)((int)param_1_00 + 0x215) = (byte)(param_5 >> 3) & 1;
  param_1_00[0x84] = 0;
  param_1_00[0x7f] = 2;
  param_1_00[0x80] = 2;
  uVar4 = (**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
  FUN_0090eb40(uVar4);
  if ((int *)param_1_00[0x68] != (int *)0x0) {
    (**(code **)(*(int *)param_1_00[0x68] + 0x10))(uVar4);
  }
  uVar1 = param_1_00[0x86] & 0xffffff5f;
  if (param_1_00[0x87] == 8) {
    uVar1 = uVar1 | 0x20;
  }
  (**(code **)(*(int *)param_1_00[0x68] + 8))(uVar1);
  FUN_009181f0(0x10);
  if ((param_3 & 0x40) != 0) {
    param_1_00[0x83] = 1;
    if ((int *)param_1_00[0x68] != (int *)0x0) {
      (**(code **)(*(int *)param_1_00[0x68] + 0x18))(1);
    }
  }
  param_1_00[0x44] = 2;
  ExceptionList = local_14;
  return param_1_00;
}



void __fastcall FUN_00a21f40(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bef420;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxAuiToolBar::vftable;
  local_4 = 4;
  if ((undefined4 *)param_1[0x68] != (undefined4 *)0x0) {
    (***(code ***)(undefined4 *)param_1[0x68])(1,uVar1);
  }
  if ((int *)param_1[0x69] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x69] + 4))(1);
  }
  local_4._0_1_ = 3;
  FUN_00a21aa0();
  local_4._0_1_ = 2;
  FUN_00a21aa0();
  local_4._0_1_ = 1;
  FUN_008f7630();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00a21aa0();
  local_4 = 0xffffffff;
  FUN_0044cd6b();
  ExceptionList = local_c;
  return;
}



void FUN_00a22000(int param_1,undefined *param_2,undefined *param_3,undefined *param_4,
                 undefined4 param_5,undefined *param_6,undefined *param_7)

{
  char cVar1;
  undefined *puVar2;
  undefined *local_d4 [3];
  undefined *local_c8;
  undefined4 local_c4;
  undefined local_c0 [36];
  undefined local_9c [4];
  int *local_98;
  undefined local_94 [4];
  int *local_90;
  undefined local_84 [36];
  undefined local_60 [36];
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  int local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined local_1c;
  undefined local_1b;
  undefined local_1a;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bef456;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_d4;
  ExceptionList = &local_c;
  local_d4[0] = param_7;
  local_c8 = param_4;
  FUN_00a1f530(DAT_0323f878 ^ (uint)&stack0xffffff1c);
  local_4 = 0;
  local_c4 = 0;
  if (local_c0 != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  if (local_9c != param_3) {
    FUN_0083ea60(param_3);
  }
  if (local_94 != local_c8) {
    FUN_0083ea60(local_c8);
  }
  if (local_84 != param_6) {
    FID_conflict_assign(param_6,0,0xffffffff);
  }
  if (local_60 != local_d4[0]) {
    FID_conflict_assign(local_d4[0],0,0xffffffff);
  }
  local_28 = param_5;
  local_1c = 1;
  local_1b = 0;
  local_30 = 0;
  local_2c = param_1;
  local_24 = 0;
  local_20 = 0;
  local_3c = 0;
  local_38 = DAT_03238d04;
  local_34 = DAT_03238d08;
  local_18 = 0;
  local_1a = 0;
  if (param_1 == -1) {
    local_2c = FUN_0089f690();
  }
  if (local_90 != (int *)0x0) {
    cVar1 = (**(code **)(*local_90 + 4))();
    if (cVar1 != '\0') goto LAB_00a221bf;
  }
  if (local_98 != (int *)0x0) {
    cVar1 = (**(code **)(*local_98 + 4))();
    if (cVar1 != '\0') {
      puVar2 = (undefined *)FUN_0093e7c0(local_d4,0xff);
      local_4._0_1_ = 1;
      if (local_94 != puVar2) {
        FUN_0083ea60(puVar2);
      }
      local_4 = (uint)local_4._1_3_ << 8;
      FUN_008f7630();
    }
  }
LAB_00a221bf:
  FUN_00a21b00(&local_c4,1);
  FUN_00a1d330();
  local_4 = 0xffffffff;
  FUN_00a1f5e0();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00a22220(int *param_1,undefined *param_2)

{
  undefined4 *puVar1;
  undefined local_cc [4];
  undefined auStack_c8 [4];
  int *local_c4;
  undefined local_c0 [132];
  undefined4 local_3c;
  undefined4 uStack_38;
  undefined4 local_30;
  int local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bef49b;
  local_c = ExceptionList;
  local_10 = (void *)(DAT_0323f878 ^ (uint)local_cc);
  ExceptionList = &local_c;
  FUN_00a1f530(DAT_0323f878 ^ (uint)&stack0xffffff24);
  local_4 = 0;
  local_c4 = param_1;
  if (local_c0 != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  FUN_0083ea60(&PTR_vftable_03238cc8);
  FUN_0083ea60(&PTR_vftable_03238cc8);
  local_2c = param_1[0x10];
  local_1c = CONCAT22(local_1c._2_2_,1);
  local_30 = 0;
  local_24 = 0;
  local_20 = 0;
  local_28 = 4;
  local_3c = 0;
  puVar1 = (undefined4 *)(**(code **)(*param_1 + 0x84))(local_cc);
  local_3c = *puVar1;
  uStack_38 = puVar1[1];
  local_1c = 0;
  local_20._0_3_ = (uint3)(ushort)local_20;
  FUN_00a21b00(auStack_c8,1);
  FUN_00a1d330();
  puStack_8 = (undefined *)0xffffffff;
  FUN_00a1f5e0();
  ExceptionList = local_10;
  ___security_check_cookie_4();
  return;
}



void FUN_00a22380(undefined4 param_1)

{
  short sVar1;
  short *psVar2;
  undefined4 local_c4 [34];
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined local_1c;
  undefined local_1b;
  undefined local_1a;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bef4db;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_c4;
  ExceptionList = &local_c;
  FUN_00a1f530(DAT_0323f878 ^ (uint)&stack0xffffff30);
  local_4 = 0;
  local_c4[0] = 0;
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    FUN_00432156();
  }
  else {
    psVar2 = (short *)PTR_DAT_03236318;
    do {
      sVar1 = *psVar2;
      psVar2 = psVar2 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(PTR_DAT_03236318,(int)psVar2 - (int)(PTR_DAT_03236318 + 2) >> 1);
  }
  FUN_0083ea60(&PTR_vftable_03238cc8);
  FUN_0083ea60(&PTR_vftable_03238cc8);
  local_30 = param_1;
  local_38 = DAT_03238d04;
  local_1c = 1;
  local_1b = 0;
  local_2c = 0xffffffff;
  local_24 = 0;
  local_20 = 0;
  local_28 = 6;
  local_3c = 0;
  local_34 = DAT_03238d08;
  local_18 = 0;
  local_1a = 0;
  FUN_00a21b00(local_c4,1);
  FUN_00a1d330();
  local_4 = 0xffffffff;
  FUN_00a1f5e0();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00a224f0(undefined4 param_1)

{
  short sVar1;
  short *psVar2;
  undefined4 local_c4 [34];
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined local_1c;
  undefined local_1b;
  undefined local_1a;
  undefined4 local_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bef4db;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_c4;
  ExceptionList = &local_c;
  FUN_00a1f530(DAT_0323f878 ^ (uint)&stack0xffffff30);
  local_4 = 0;
  local_c4[0] = 0;
  if (PTR_DAT_03236318 == (undefined *)0x0) {
    FUN_00432156();
  }
  else {
    psVar2 = (short *)PTR_DAT_03236318;
    do {
      sVar1 = *psVar2;
      psVar2 = psVar2 + 1;
    } while (sVar1 != 0);
    FID_conflict_assign(PTR_DAT_03236318,(int)psVar2 - (int)(PTR_DAT_03236318 + 2) >> 1);
  }
  FUN_0083ea60(&PTR_vftable_03238cc8);
  FUN_0083ea60(&PTR_vftable_03238cc8);
  local_20 = param_1;
  local_38 = DAT_03238d04;
  local_1c = 1;
  local_1b = 0;
  local_30 = 0;
  local_2c = 0xffffffff;
  local_24 = 0;
  local_28 = 6;
  local_3c = 0;
  local_34 = DAT_03238d08;
  local_18 = 0;
  local_1a = 0;
  FUN_00a21b00(local_c4,1);
  FUN_00a1d330();
  local_4 = 0xffffffff;
  FUN_00a1f5e0();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00a22660(int param_1)

{
  FUN_00a202a0();
  FUN_0086a880();
  *(undefined4 *)(param_1 + 0x1f0) = 0;
  return;
}



undefined4 __thiscall FUN_00a22690(int *param_1_00,undefined4 param_1,char param_2)

{
  undefined4 *puVar1;
  void *pvVar2;
  uint uVar3;
  int *piVar4;
  int iVar5;
  undefined4 *puVar6;
  code *pcVar7;
  uint uVar8;
  int unaff_ESI;
  bool bVar9;
  char unaff_retaddr;
  int iVar10;
  int iVar11;
  int iVar12;
  undefined4 uVar13;
  undefined4 uVar14;
  int iStack_44;
  int iStack_40;
  int iStack_3c;
  void *local_38;
  int iStack_34;
  int iStack_30;
  int iStack_2c;
  void *pvStack_28;
  int iStack_24;
  int iStack_20;
  undefined auStack_1c [4];
  undefined4 uStack_18;
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  void *local_4;
  
  local_4 = (void *)0xffffffff;
  puStack_8 = &LAB_00bef539;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_c;
  local_38 = operator_new(0x58);
  local_4 = (void *)0x0;
  if (local_38 == (void *)0x0) {
    piVar4 = (int *)0x0;
  }
  else {
    piVar4 = (int *)FUN_00445f46((param_2 == '\0') * '\x04' + '\x04');
  }
  local_4 = (void *)0xffffffff;
  iStack_3c = (**(code **)(*(int *)param_1_00[0x68] + 0x48))(0,uVar3);
  iVar5 = (**(code **)(*(int *)param_1_00[0x68] + 0x48))(1);
  if ((iVar5 < 1) || (*(char *)((int)param_1_00 + 0x215) == '\0')) {
    param_1_00[0x6e] = 0;
  }
  else if (unaff_retaddr == '\0') {
    iVar5 = FUN_00445db1(1,iVar5,0,0x2000,0,0);
    param_1_00[0x6e] = iVar5;
  }
  else {
    iVar5 = FUN_00445db1(iVar5,1,0,0x2000,0,0);
    param_1_00[0x6e] = iVar5;
  }
  iVar5 = param_1_00[0x7d];
  if (0 < iVar5) {
    if (unaff_retaddr == '\0') {
      iVar10 = 1;
    }
    else {
      iVar10 = iVar5;
      iVar5 = 1;
    }
    FUN_00445db1(iVar10,iVar5,0,0,0,0);
  }
  uVar3 = param_1_00[0x66];
  if (uVar3 != 0) {
    iStack_44 = 0;
    uVar8 = 1;
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x66] <= uVar8 - 1)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      puVar1 = *(undefined4 **)(iStack_44 + param_1_00[0x67]);
      iVar5 = 0;
      switch(puVar1[0x27]) {
      case 0:
      case 1:
      case 2:
        (**(code **)(*(int *)param_1_00[0x68] + 0x44))(&iStack_2c,local_4,param_1_00,puVar1);
        iVar5 = FUN_00445db1(param_1_00[0x82] * 2 + iStack_2c,
                             (void *)(param_1_00[0x82] * 2 + (int)pvStack_28),0,puVar1[0x2c],0,0);
        goto LAB_00a22a80;
      case 4:
        puVar6 = (undefined4 *)operator_new(0x58);
        local_c = (void *)0x1;
        if (puVar6 == (undefined4 *)0x0) {
          puVar6 = (undefined4 *)0x0;
        }
        else {
          FUN_00445eb9();
          *puVar6 = wxBoxSizer::vftable;
          puVar6[2] = wxBoxSizer::vftable;
          puVar6[0x14] = 0;
          puVar6[0x15] = 0;
          puVar6[0x12] = 8;
          puVar6[0x13] = 0;
        }
        local_c = (void *)0xffffffff;
        FUN_00445db1(0,0,1,0,0,0);
        iVar10 = FUN_00445d61(*puVar1,0,0x2000,0,0);
        FUN_00445db1(0,0,1,0,0,0);
        if ((((*(byte *)(param_1_00 + 0x86) & 1) != 0) && (param_1_00[0x83] == 3)) &&
           (puVar1[6] != 0)) {
          FUN_00a218d0(auStack_1c,puVar1 + 1);
          FUN_00445db1(1,uStack_18,0,0,0,0);
        }
        iVar5 = FUN_0044c6ab(puVar6,puVar1[0x29],0x2000,0,0);
        local_38 = (void *)puVar1[0x24];
        iStack_3c = puVar1[0x23];
        if (puVar1[0x29] == 0) {
          if (iStack_3c == -1) goto LAB_00a22a80;
        }
        else {
          iStack_3c = 1;
        }
        if (local_38 != (void *)0xffffffff) {
          if (*(int *)(iVar5 + 8) == 1) {
            (**(code **)(**(int **)(iVar5 + 0xc) + 0x94))(&iStack_3c);
          }
          *(int *)(iVar5 + 0x18) = iStack_3c;
          *(void **)(iVar5 + 0x1c) = local_38;
          if (*(int *)(iVar10 + 8) == 1) {
            (**(code **)(**(int **)(iVar10 + 0xc) + 0x94))(&iStack_3c);
          }
          *(int *)(iVar10 + 0x18) = iStack_3c;
          *(void **)(iVar10 + 0x1c) = local_38;
        }
LAB_00a22a80:
        if (uVar3 <= uVar8) break;
        iVar10 = param_1_00[0x81];
        pcVar7 = *(code **)(*piVar4 + 0x10);
        goto LAB_00a22a96;
      case 5:
        (**(code **)(*(int *)param_1_00[0x68] + 0x40))(&iStack_34,local_4,param_1_00,puVar1);
        uVar14 = puVar1[0x2c];
        uVar13 = puVar1[0x29];
        iVar5 = param_1_00[0x82] * 2 + iStack_30;
        iVar10 = param_1_00[0x82] * 2 + iStack_34;
LAB_00a2283c:
        iVar5 = FUN_00445db1(iVar10,iVar5,uVar13,uVar14,0,0);
        if (uVar8 < uVar3) {
          iVar10 = param_1_00[0x81];
          pcVar7 = *(code **)(*piVar4 + 0x10);
LAB_00a22a96:
          (*pcVar7)(iVar10);
        }
        break;
      case 6:
        if ((int)puVar1[0x29] < 1) {
          iVar5 = FUN_00445db1(puVar1[0x25],1,0,0,0,0);
        }
        else {
          iVar5 = FUN_00445db1(0,0,puVar1[0x29],0,0,0);
        }
        break;
      case 0xffffffff:
        uVar14 = 0x2000;
        uVar13 = 0;
        if (unaff_retaddr == '\0') {
          iVar10 = 1;
          iVar5 = iStack_40;
        }
        else {
          iVar5 = 1;
          iVar10 = iStack_40;
        }
        goto LAB_00a2283c;
      }
      iStack_44 = iStack_44 + 4;
      puVar1[0x22] = iVar5;
      bVar9 = uVar8 < uVar3;
      uVar8 = uVar8 + 1;
    } while (bVar9);
  }
  iVar5 = param_1_00[0x7e];
  if (0 < iVar5) {
    if (unaff_retaddr == '\0') {
      iVar10 = 1;
    }
    else {
      iVar10 = iVar5;
      iVar5 = 1;
    }
    FUN_00445db1(iVar10,iVar5,0,0,0,0);
  }
  param_1_00[0x6f] = 0;
  if ((*(byte *)(param_1_00 + 0x86) & 0x10) != 0) {
    iVar5 = (**(code **)(*(int *)param_1_00[0x68] + 0x48))(2);
    if ((iVar5 < 1) || (*(char *)((int)param_1_00 + 0x216) == '\0')) {
      param_1_00[0x6f] = 0;
    }
    else if (unaff_retaddr == '\0') {
      iVar5 = FUN_00445db1(1,iVar5,0,0x2000,0,0);
      param_1_00[0x6f] = iVar5;
    }
    else {
      iVar5 = FUN_00445db1(iVar5,1,0,0x2000,0,0);
      param_1_00[0x6f] = iVar5;
    }
  }
  local_4 = operator_new(0x58);
  local_c = (void *)0x3;
  if (local_4 == (void *)0x0) {
    iVar5 = 0;
  }
  else {
    iVar5 = FUN_00445f46((unaff_retaddr != '\0') * '\x04' + '\x04');
  }
  iVar10 = param_1_00[0x7f];
  local_c = (void *)0xffffffff;
  if (0 < iVar10) {
    if (unaff_retaddr == '\0') {
      iVar12 = 1;
      iVar11 = iVar10;
    }
    else {
      iVar11 = 1;
      iVar12 = iVar10;
    }
    FUN_00445db1(iVar11,iVar12,0,0,0,0);
  }
  FUN_0044c6ab(piVar4,1,0x2000,0,0);
  iVar10 = param_1_00[0x80];
  if (0 < iVar10) {
    if (unaff_retaddr == '\0') {
      iVar12 = 1;
      iVar11 = iVar10;
    }
    else {
      iVar11 = 1;
      iVar12 = iVar10;
    }
    FUN_00445db1(iVar11,iVar12,0,0,0,0);
  }
  if ((int *)param_1_00[0x69] != (int *)0x0) {
    (**(code **)(*(int *)param_1_00[0x69] + 4))(1);
  }
  uVar3 = param_1_00[0x66];
  uVar8 = 0;
  param_1_00[0x69] = iVar5;
  if (uVar3 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x66] <= uVar8)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar5 = *(int *)(param_1_00[0x67] + uVar8 * 4);
      iVar10 = *(int *)(iVar5 + 0x88);
      if ((((iVar10 != 0) && (0 < *(int *)(iVar5 + 0xa4))) && (*(int *)(iVar5 + 0x8c) != -1)) &&
         (*(int *)(iVar5 + 0x90) != -1)) {
        iStack_3c = 0;
        local_38 = (void *)0x0;
        if (*(int *)(iVar10 + 8) == 1) {
          (**(code **)(**(int **)(iVar10 + 0xc) + 0x94))(&iStack_3c);
        }
        *(int *)(iVar10 + 0x18) = iStack_3c;
        *(void **)(iVar10 + 0x1c) = local_38;
      }
      uVar8 = uVar8 + 1;
    } while (uVar8 < uVar3);
  }
  piVar4 = (int *)FUN_0092fff0(auStack_1c);
  param_1_00[0x70] = *piVar4;
  uVar3 = param_1_00[0x66];
  uVar8 = 0;
  param_1_00[0x71] = piVar4[1];
  if (uVar3 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x66] <= uVar8)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar5 = *(int *)(param_1_00[0x67] + uVar8 * 4);
      iVar10 = *(int *)(iVar5 + 0x88);
      if (((iVar10 != 0) && (0 < *(int *)(iVar5 + 0xa4))) &&
         ((*(int *)(iVar5 + 0x8c) != -1 && (*(int *)(iVar5 + 0x90) != -1)))) {
        if (*(int *)(iVar10 + 8) == 1) {
          (**(code **)(**(int **)(iVar10 + 0xc) + 0x94))((undefined4 *)(iVar5 + 0x8c));
        }
        *(undefined4 *)(iVar10 + 0x18) = *(undefined4 *)(iVar5 + 0x8c);
        *(undefined4 *)(iVar10 + 0x1c) = *(undefined4 *)(iVar5 + 0x90);
      }
      uVar8 = uVar8 + 1;
    } while (uVar8 < uVar3);
  }
  FUN_0092fff0(&iStack_24);
  param_1_00[0x18] = iStack_24;
  param_1_00[0x19] = iStack_20;
  if ((*(byte *)(param_1_00 + 0x86) & 4) == 0) {
    (**(code **)(*param_1_00 + 0x27c))(&stack0x00000000,&local_4);
    (**(code **)(*param_1_00 + 0xa4))(&iStack_34);
    pvVar2 = local_c;
    if ((local_38 == local_c) && (iStack_34 == iStack_10)) {
      piVar4 = (int *)param_1_00[0x69];
      piVar4[9] = 0;
      pcVar7 = *(code **)(*piVar4 + 0x4c);
      piVar4[10] = 0;
      piVar4[5] = (int)local_c;
      piVar4[6] = iStack_10;
      (*pcVar7)();
      (**(code **)(*piVar4 + 0x40))(4,pvVar2,iStack_10);
    }
    else {
      (**(code **)(*param_1_00 + 0x28c))(local_38,iStack_34);
    }
  }
  else {
    (**(code **)(*param_1_00 + 0x27c))(&iStack_44,&stack0xffffffb4);
    piVar4 = (int *)param_1_00[0x69];
    piVar4[9] = 0;
    pcVar7 = *(code **)(*piVar4 + 0x4c);
    piVar4[10] = 0;
    piVar4[5] = uVar3;
    piVar4[6] = unaff_ESI;
    (*pcVar7)();
    (**(code **)(*piVar4 + 0x40))(4,uVar3,unaff_ESI);
  }
  ExceptionList = pvStack_28;
  return 1;
}



void __thiscall FUN_00a22e90(int *param_1_00,int param_1)

{
  uint uVar1;
  code *pcVar2;
  char cVar3;
  int iVar4;
  undefined4 uVar5;
  uint uVar6;
  undefined4 uVar7;
  undefined local_140 [4];
  undefined auStack_13c [8];
  int iStack_134;
  undefined4 uStack_130;
  int iStack_12c;
  undefined4 uStack_128;
  undefined auStack_120 [8];
  undefined **ppuStack_118;
  int *local_114;
  int *piStack_110;
  char cStack_f4;
  uint uStack_ec;
  undefined4 uStack_dc;
  uint uStack_d8;
  void *pvStack_d4;
  char cStack_c0;
  undefined4 uStack_bc;
  undefined4 uStack_b8;
  int iStack_b4;
  undefined4 uStack_b0;
  int iStack_ac;
  undefined4 uStack_a8;
  undefined4 uStack_a0;
  undefined **appuStack_98 [2];
  int *piStack_90;
  uint uStack_6c;
  undefined4 uStack_5c;
  uint uStack_58;
  void *pvStack_54;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_1c;
  void *pvStack_14;
  uint local_10;
  undefined4 local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bef597;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_140;
  ExceptionList = &local_c;
  (**(code **)(*param_1_00 + 0x27c))(local_140,&local_114,DAT_0323f878 ^ (uint)&stack0xfffffeb0);
  if ((int *)param_1_00[0x6e] != (int *)0x0) {
    (**(code **)(*(int *)param_1_00[0x6e] + 0x20))(auStack_13c);
    cVar3 = FUN_008f7580(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30));
    if (cVar3 != '\0') {
      iVar4 = FUN_00a14ec0(param_1_00);
      if (iVar4 != 0) {
        FUN_00a155d0(param_1_00,&stack0xfffffeb8);
      }
      goto LAB_00a233ad;
    }
  }
  if ((((param_1_00[0x6f] == 0) || (FUN_00a1deb0(auStack_13c), param_1_00[0x68] == 0)) ||
      (*(char *)((int)param_1_00 + 0x216) == '\0')) ||
     (cVar3 = FUN_008f7580(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30)),
     cVar3 == '\0')) {
    *(undefined *)(param_1_00 + 0x85) = 0;
    iVar4 = *(int *)(param_1 + 0x30);
    param_1_00[0x72] = *(int *)(param_1 + 0x2c);
    param_1_00[0x73] = iVar4;
    iVar4 = FUN_00a1e210(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30));
    param_1_00[0x6a] = iVar4;
    if (iVar4 != 0) {
      if ((*(byte *)(iVar4 + 0xa0) & 8) == 0) {
        (**(code **)(*param_1_00 + 0x2a0))(0);
        FUN_00a1f490(DAT_032ea9b8,*(undefined4 *)(param_1_00[0x6a] + 0x98));
        iVar4 = *(int *)(param_1 + 0x2c);
        uStack_a0 = *(undefined4 *)(param_1_00[0x6a] + 0x98);
        local_10 = 4;
        local_114 = param_1_00;
        (**(code **)(**(int **)(param_1_00[0x6a] + 0x88) + 0x20))(&uStack_130);
        if (((*(char *)(param_1_00[0x6a] + 0xa9) == '\0') ||
            (iVar4 < iStack_12c + -0xb + iStack_134)) || (iStack_12c + iStack_134 <= iVar4)) {
          cVar3 = '\0';
        }
        else {
          cVar3 = '\x01';
        }
        uStack_b8 = *(undefined4 *)(param_1 + 0x30);
        uStack_bc = *(undefined4 *)(param_1 + 0x2c);
        uStack_b0 = uStack_130;
        iStack_ac = iStack_12c;
        iStack_b4 = iStack_134;
        uStack_a8 = uStack_128;
        cStack_c0 = cVar3;
        FUN_00a1db90(param_1_00[0x6a] & (cVar3 != '\0') - 1);
        if (cVar3 != '\0') {
          param_1_00[0x72] = -1;
          param_1_00[0x73] = -1;
          param_1_00[0x6a] = 0;
        }
        cVar3 = (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(auStack_120);
        if ((cVar3 == '\0') || (cStack_f4 != '\0')) {
          FUN_0091f8e0();
        }
        FUN_00a1f780();
        local_c = (void *)0xffffffff;
        FUN_00a1f4e0();
      }
      else {
        param_1_00[0x72] = -1;
        param_1_00[0x73] = -1;
        param_1_00[0x6a] = 0;
      }
    }
  }
  else {
    FUN_00a1f490(DAT_032ea9bc,0xffffffff);
    uStack_30 = *(undefined4 *)(param_1 + 0x30);
    uStack_34 = *(undefined4 *)(param_1 + 0x2c);
    uStack_1c = 0xffffffff;
    local_c = (void *)0x0;
    piStack_90 = param_1_00;
    cVar3 = (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(appuStack_98);
    if (cVar3 == '\0') {
      FUN_0086a600();
      uVar1 = param_1_00[0x75];
      uVar6 = 0;
      local_c = (void *)CONCAT31(local_c._1_3_,1);
      if (uVar1 != 0) {
        do {
          uVar7 = 1;
          uVar5 = FUN_009cde80(uVar6);
          FUN_00a21b00(uVar5,uVar7);
          uVar6 = uVar6 + 1;
        } while (uVar6 < uVar1);
      }
      uVar1 = param_1_00[0x66];
      uVar6 = 0;
      if (uVar1 != 0) {
        do {
          cVar3 = FUN_00a1dda0(uVar6);
          if (cVar3 == '\0') {
            uVar7 = 1;
            uVar5 = FUN_009cde80(uVar6);
            FUN_00a21b00(uVar5,uVar7);
          }
          uVar6 = uVar6 + 1;
        } while (uVar6 < uVar1);
      }
      uVar1 = param_1_00[0x78];
      uVar6 = 0;
      if (uVar1 != 0) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x78] <= uVar6)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          FUN_00a21b00(*(undefined4 *)(param_1_00[0x79] + uVar6 * 4),1);
          uVar6 = uVar6 + 1;
        } while (uVar6 < uVar1);
      }
      iVar4 = (**(code **)(*(int *)param_1_00[0x68] + 0x50))(param_1_00,&stack0xfffffeb8);
      pcVar2 = *(code **)(*param_1_00 + 0x15c);
      param_1_00[0x84] = 0;
      (*pcVar2)(0,0);
      if (iVar4 != -1) {
        FUN_0092bd60(DAT_032bfdd0,iVar4);
        local_c._0_1_ = 2;
        piStack_110 = param_1_00;
        (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(&ppuStack_118);
        local_c = (void *)CONCAT31(local_c._1_3_,1);
        _free(pvStack_d4);
        if (7 < uStack_d8) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_ec);
        }
        uStack_d8 = 7;
        uStack_dc = 0;
        uStack_ec = uStack_ec & 0xffff0000;
        ppuStack_118 = wxObject::vftable;
        FUN_0083e850();
      }
      local_c._0_1_ = 3;
      FUN_00a202a0();
      FUN_0086a880();
      local_c = (void *)((uint)local_c._1_3_ << 8);
      FUN_0086aa30();
    }
    else {
      FUN_00a1f780();
    }
    local_c = (void *)0xffffffff;
    _free(pvStack_54);
    if (7 < uStack_58) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_6c);
    }
    uStack_58 = 7;
    uStack_5c = 0;
    uStack_6c = uStack_6c & 0xffff0000;
    appuStack_98[0] = wxObject::vftable;
    FUN_0083e850();
  }
LAB_00a233ad:
  ExceptionList = pvStack_14;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00a233e0(undefined4 param_1_00,byte param_1)

{
  FUN_00a21f40();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4
FUN_00a23400(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  FUN_004325b6(PTR_DAT_03236318);
  local_4 = 0;
  uVar2 = FUN_00a22000(param_1,param_2,param_3,&PTR_vftable_03238cc8,param_5,param_4,local_30,0);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  ExceptionList = local_c;
  return uVar2;
}



undefined __fastcall FUN_00a234b0(int *param_1)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  undefined uVar4;
  undefined auStack_20 [8];
  undefined local_18 [4];
  void *pvStack_14;
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bef5d8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  FUN_0094bd30(param_1);
  local_4 = 0;
  if (local_10 == (int *)0x0) {
LAB_00a234fc:
    local_4 = 0xffffffff;
    FUN_00457221();
    ExceptionList = local_c;
    return 0;
  }
  cVar1 = (**(code **)(*local_10 + 0x10))(uVar2);
  if (cVar1 == '\0') goto LAB_00a234fc;
  uVar4 = 0;
  if (param_1[0x87] == 4) {
    cVar1 = FUN_00a22690(local_18,0);
    if (cVar1 == '\0') goto LAB_00a235ea;
    piVar3 = (int *)FUN_004555c3(auStack_20);
    param_1[0x8a] = *piVar3;
    param_1[0x8b] = piVar3[1];
    cVar1 = FUN_00a22690(local_18,1);
    if (cVar1 == '\0') goto LAB_00a235ea;
    piVar3 = (int *)FUN_004555c3(auStack_20);
    param_1[0x88] = *piVar3;
    param_1[0x89] = piVar3[1];
  }
  else {
    cVar1 = FUN_00a22690(local_18,1);
    if (cVar1 == '\0') goto LAB_00a235ea;
    piVar3 = (int *)FUN_004555c3(auStack_20);
    param_1[0x88] = *piVar3;
    param_1[0x89] = piVar3[1];
    cVar1 = FUN_00a22690(local_18,0);
    if (cVar1 == '\0') goto LAB_00a235ea;
    piVar3 = (int *)FUN_004555c3(auStack_20);
    param_1[0x8a] = *piVar3;
    param_1[0x8b] = piVar3[1];
  }
  uVar4 = 1;
LAB_00a235ea:
  (**(code **)(*param_1 + 0x15c))(0,0);
  local_c = (void *)0xffffffff;
  FUN_00457221();
  ExceptionList = pvStack_14;
  return uVar4;
}



void __thiscall FUN_00a23840(int *param_1_00,char param_1)

{
  *(char *)((int)param_1_00 + 0x215) = param_1;
  if (param_1 == '\0') {
    param_1_00[0x86] = param_1_00[0x86] & 0xfffffff7;
  }
  else {
    param_1_00[0x86] = param_1_00[0x86] | 8;
  }
  FUN_00a234b0();
  (**(code **)(*param_1_00 + 0x15c))(0,0);
  return;
}



undefined4 __thiscall FUN_00a23880(int param_1_00,undefined4 param_1)

{
  switch(param_1) {
  case 0:
    return *(undefined4 *)(param_1_00 + 0x118);
  case 1:
    return *(undefined4 *)(param_1_00 + 0x114);
  case 2:
    return *(undefined4 *)(param_1_00 + 0x120);
  case 3:
    return *(undefined4 *)(param_1_00 + 0x110);
  case 4:
    return *(undefined4 *)(param_1_00 + 0x11c);
  case 0x10:
    return *(undefined4 *)(param_1_00 + 0x124);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\aui\\dockart.cpp",0x12a,"wxAuiDefaultDockArt::GetMetric",
                 "Assert failure",L"Invalid Metric Ordinal");
  }
  return 0;
}



void __thiscall FUN_00a23930(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  switch(param_1) {
  case 0:
    *(undefined4 *)(param_1_00 + 0x118) = param_2;
    return;
  case 1:
    *(undefined4 *)(param_1_00 + 0x114) = param_2;
    return;
  case 2:
    *(undefined4 *)(param_1_00 + 0x120) = param_2;
    return;
  case 3:
    *(undefined4 *)(param_1_00 + 0x110) = param_2;
    return;
  case 4:
    *(undefined4 *)(param_1_00 + 0x11c) = param_2;
    return;
  case 0x10:
    *(undefined4 *)(param_1_00 + 0x124) = param_2;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\aui\\dockart.cpp",0x13a,"wxAuiDefaultDockArt::SetMetric",
                 "Assert failure",L"Invalid Metric Ordinal");
  }
  return;
}



undefined4 FUN_00a23a00(undefined4 param_1,int *param_2)

{
  byte bVar1;
  undefined4 uVar2;
  
  uVar2 = 0x78;
  bVar1 = (**(code **)(*param_2 + 0x10))();
  if (bVar1 < 0x80) {
    bVar1 = (**(code **)(*param_2 + 0x14))();
    if (bVar1 < 0x80) {
      bVar1 = (**(code **)(*param_2 + 0x18))();
      if (bVar1 < 0x80) {
        uVar2 = 0xa0;
      }
    }
  }
  FUN_00920050(param_1,uVar2);
  return param_1;
}



void __thiscall FUN_00a23a60(int *param_1,undefined4 param_2,int param_3,int param_4)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int *unaff_EDI;
  int iVar9;
  int iStack_4c;
  int iStack_44;
  int iStack_40;
  int iStack_3c;
  int iStack_38;
  int iStack_34;
  undefined **ppuStack_30;
  int iStack_2c;
  undefined **ppuStack_28;
  undefined **ppuStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_14;
  int *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bef6e8;
  local_c = (int *)ExceptionList;
  ExceptionList = &local_c;
  uVar2 = (**(code **)(*unaff_EDI + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffa8);
  uVar3 = (**(code **)(*param_1 + 0x10))();
  uVar4 = (**(code **)(*unaff_EDI + 0x14))();
  uVar5 = (**(code **)(*param_1 + 0x14))();
  iStack_38 = (uVar5 & 0xff) - (uVar4 & 0xff);
  uVar4 = (**(code **)(*unaff_EDI + 0x18))();
  uVar5 = (**(code **)(*param_1 + 0x18))();
  if (param_4 == 1) {
    iVar6 = *(int *)(param_3 + 0xc);
  }
  else {
    iVar6 = *(int *)(param_3 + 8);
  }
  iVar6 = iVar6 + -1;
  iStack_4c = 0;
  if (-1 < iVar6) {
    iStack_2c = ((uVar5 & 0xff) - (uVar4 & 0xff)) * 100;
    ppuStack_30 = (undefined **)(iStack_38 * 100);
    iStack_34 = ((uVar3 & 0xff) - (uVar2 & 0xff)) * 100;
    iStack_3c = 0;
    iStack_40 = 0;
    iStack_44 = 0;
    do {
      iVar8 = 0;
      if (0 < iVar6) {
        iVar8 = (iStack_44 / iVar6) / 100;
      }
      uVar2 = (**(code **)(*unaff_EDI + 0x10))();
      iStack_38 = (uVar2 & 0xff) + iVar8;
      if (iVar6 < 1) {
        iVar8 = 0;
      }
      else {
        iVar8 = (iStack_40 / iVar6) / 100;
      }
      uVar2 = (**(code **)(*unaff_EDI + 0x14))();
      if (iVar6 < 1) {
        iVar7 = 0;
      }
      else {
        iVar7 = (iStack_3c / iVar6) / 100;
      }
      uVar3 = (**(code **)(*unaff_EDI + 0x18))();
      uStack_1c = 0;
      uStack_4 = 0;
      ppuStack_20 = wxColour::vftable;
      FUN_0093b2c0();
      iVar9 = 0xff;
      (*(code *)ppuStack_20[10])(iStack_38,(uVar2 & 0xff) + iVar8,(uVar3 & 0xff) + iVar7,0xff);
      uStack_14 = 1;
      FUN_009566f0(&ppuStack_30,1,100);
      uStack_14 = CONCAT31(uStack_14._1_3_,3);
      ppuStack_30 = wxObject::vftable;
      FUN_0083e850();
      piVar1 = local_c;
      (**(code **)(*(int *)local_c[2] + 0x58))(&iStack_38);
      if (puStack_8 == (undefined *)0x1) {
        (**(code **)(*(int *)piVar1[2] + 0x140))
                  (*local_c,iVar9 + local_c[1],local_c[2] + *local_c,iVar9 + local_c[1]);
      }
      else {
        (**(code **)(*(int *)piVar1[2] + 0x140))
                  (iVar9 + *local_c,local_c[1],iVar9 + *local_c,local_c[3] + local_c[1]);
      }
      uStack_4 = 0xffffffff;
      ppuStack_28 = wxObject::vftable;
      FUN_0083e850();
      iStack_44 = iStack_44 + iStack_34;
      iStack_40 = iStack_40 + (int)ppuStack_30;
      iStack_3c = iStack_3c + iStack_2c;
      iStack_4c = iStack_4c + 1;
    } while (iStack_4c <= iVar6);
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a23cf0(int param_1_00,int param_1,undefined4 *param_3)

{
  undefined4 uVar1;
  
  uVar1 = FUN_008f8330(0x24);
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar1);
  (**(code **)(**(int **)(param_1 + 8) + 0x60))(param_1_00 + 0xc);
  (**(code **)(**(int **)(param_1 + 8) + 0x150))(*param_3,param_3[1],param_3[2],param_3[3]);
  return;
}



void __thiscall FUN_00a23d40(int param_1_00,int param_1,undefined4 *param_3)

{
  undefined4 uVar1;
  
  uVar1 = FUN_008f8330(0x24);
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar1);
  (**(code **)(**(int **)(param_1 + 8) + 0x60))(param_1_00 + 0x14);
  (**(code **)(**(int **)(param_1 + 8) + 0x150))(*param_3,param_3[1],param_3[2],param_3[3]);
  return;
}



void __thiscall FUN_00a23d90(int *param_1_00,int *param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int unaff_EBP;
  int iVar6;
  int unaff_EDI;
  int *piVar7;
  int iVar8;
  int *piVar9;
  int iVar10;
  int iVar11;
  int *piVar12;
  int iStack_8;
  
  piVar1 = param_1_00 + 1;
  piVar9 = piVar1;
  (**(code **)(*(int *)param_1[2] + 0x58))(piVar1);
  iVar3 = FUN_008f8a00(9);
  (**(code **)(*(int *)param_1[2] + 0x60))(iVar3);
  iVar2 = *param_1;
  iVar6 = param_1[1];
  iVar8 = param_1[2];
  iStack_8 = (**(code **)(*param_1_00 + 4))(3);
  if (((uint)param_1[0x16] >> 0xd & 1) == 0) {
    if (0 < iStack_8) {
      do {
        (**(code **)(*(int *)param_1[2] + 0x150))(unaff_EDI,iVar2,iVar6,iVar8);
        FUN_008f7520(0xffffffff,0xffffffff);
        iStack_8 = iStack_8 + -1;
      } while (iStack_8 != 0);
    }
  }
  else if (0 < iStack_8) {
    do {
      iVar4 = FUN_008f8330(0x25);
      (**(code **)(*(int *)param_1[2] + 0x58))(iVar4);
      iVar6 = iVar2 + (int)piVar9;
      iVar10 = unaff_EDI;
      piVar12 = piVar9;
      (**(code **)(*(int *)param_1[2] + 0x140))(piVar9,unaff_EDI,iVar6,unaff_EDI);
      iVar5 = iVar3 + unaff_EBP;
      iVar8 = iVar4;
      iVar11 = unaff_EBP;
      (**(code **)(*(int *)param_1[2] + 0x140))(iVar4,unaff_EBP,iVar4,iVar5);
      piVar7 = piVar1;
      (**(code **)(*(int *)param_1[2] + 0x58))(piVar1);
      iVar6 = iVar6 + -1 + (int)piVar9;
      (**(code **)(*(int *)param_1[2] + 0x140))(iVar5,iVar6,iVar10 + iVar5,iVar6);
      iVar6 = unaff_EBP + -1 + (int)piVar7;
      (**(code **)(*(int *)param_1[2] + 0x140))(iVar6,iVar4,iVar6,iVar8 + iVar4);
      FUN_008f7520(0xffffffff,0xffffffff);
      iStack_8 = iStack_8 + -1;
      unaff_EBP = iVar11;
      piVar9 = piVar12;
    } while (iStack_8 != 0);
    return;
  }
  return;
}



void __thiscall FUN_00a23f20(int param_1_00,undefined4 *param_1,undefined4 param_2,char param_3)

{
  undefined4 uVar1;
  void *unaff_ESI;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bef720;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x124) == 0) {
    if (param_3 == '\0') {
      uVar1 = FUN_0095d7e0(param_1_00 + 0xd4,100);
      local_4 = 1;
      (**(code **)(*(int *)param_1[2] + 0x60))(uVar1);
    }
    else {
      uVar1 = FUN_0095d7e0(param_1_00 + 0x98,100);
      local_4 = 0;
      (**(code **)(*(int *)param_1[2] + 0x60))(uVar1);
    }
    puStack_8 = (undefined *)0xffffffff;
    FUN_008f7630();
    (**(code **)(*(int *)param_1[2] + 0x150))(*param_1,param_1[1],param_1[2],param_1[3]);
    ExceptionList = unaff_ESI;
    return;
  }
  FUN_00a23a60(param_1,param_2,*(int *)(param_1_00 + 0x124),DAT_0323f878 ^ (uint)&stack0xffffffdc);
  ExceptionList = local_c;
  return;
}



void FUN_00a24050(int param_1,int *param_2,int param_3)

{
  int iVar1;
  
  if (*(int *)(param_3 + 0x4c) == 0) {
    iVar1 = 0;
  }
  else {
    iVar1 = *(int *)(*(int *)(param_3 + 0x4c) + 0xc);
  }
  (**(code **)(**(int **)(param_1 + 8) + 0x164))
            (param_3 + 0x48,*param_2 + 2,(param_2[3] - iVar1) / 2 + param_2[1],1);
  return;
}



void __thiscall FUN_00a240a0(int param_1_00,int *param_1)

{
  undefined4 uVar1;
  int iVar2;
  int unaff_EBP;
  int iVar3;
  int iVar4;
  
  uVar1 = FUN_008f8330(0x24);
  (**(code **)(*(int *)param_1[2] + 0x58))(uVar1);
  iVar3 = param_1_00 + 0x1c;
  (**(code **)(*(int *)param_1[2] + 0x60))(iVar3);
  (**(code **)(*(int *)param_1[2] + 0x150))(*param_1,param_1[1],param_1[2],param_1[3]);
  iVar2 = 5;
  if ((*(uint *)(unaff_EBP + 0x58) >> 0xf & 1) == 0) {
    iVar4 = param_1_00 + 0x6c;
    do {
      (**(code **)(*(int *)param_1[2] + 0x58))(iVar4);
      (**(code **)(*(int *)param_1[2] + 0x13c))(*param_1 + 3,param_1[1] + iVar2);
      (**(code **)(*(int *)param_1[2] + 0x58))(iVar3);
      (**(code **)(*(int *)param_1[2] + 0x13c))(*param_1 + 3,param_1[1] + 1 + iVar2);
      (**(code **)(*(int *)param_1[2] + 0x13c))(*param_1 + 4,param_1[1] + iVar2);
      (**(code **)(*(int *)param_1[2] + 0x58))(param_1_00 + 0x7c);
      (**(code **)(*(int *)param_1[2] + 0x13c))(*param_1 + 5,param_1[1] + 1 + iVar2);
      (**(code **)(*(int *)param_1[2] + 0x13c))(*param_1 + 5,param_1[1] + 2 + iVar2);
      (**(code **)(*(int *)param_1[2] + 0x13c))(*param_1 + 4,param_1[1] + 2 + iVar2);
      iVar2 = iVar2 + 4;
    } while (iVar2 <= param_1[3] + -5);
    return;
  }
  iVar4 = param_1_00 + 0x6c;
  do {
    (**(code **)(*(int *)param_1[2] + 0x58))(iVar4);
    (**(code **)(*(int *)param_1[2] + 0x13c))(*param_1 + iVar2,param_1[1] + 3);
    (**(code **)(*(int *)param_1[2] + 0x58))(iVar3);
    (**(code **)(*(int *)param_1[2] + 0x13c))(*param_1 + 1 + iVar2,param_1[1] + 3);
    (**(code **)(*(int *)param_1[2] + 0x13c))(*param_1 + iVar2,param_1[1] + 4);
    (**(code **)(*(int *)param_1[2] + 0x58))(param_1_00 + 0x7c);
    (**(code **)(*(int *)param_1[2] + 0x13c))(*param_1 + 1 + iVar2,param_1[1] + 5);
    (**(code **)(*(int *)param_1[2] + 0x13c))(*param_1 + 2 + iVar2,param_1[1] + 5);
    (**(code **)(*(int *)param_1[2] + 0x13c))(*param_1 + 2 + iVar2,param_1[1] + 4);
    iVar2 = iVar2 + 4;
  } while (iVar2 <= param_1[2] + -5);
  return;
}



undefined4
FUN_00a242f0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            int *param_5)

{
  undefined uVar1;
  uint uVar2;
  uint uVar3;
  undefined **local_1c [4];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bef769;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  FUN_008f31a0(param_2,param_3,param_4,1);
  local_4 = 1;
  FUN_008f3b70(local_1c);
  local_4._0_1_ = 3;
  FUN_008f7630(uVar2);
  FUN_00902040(0,0,0,0x7b,0x7b,0x7b);
  uVar2 = (**(code **)(*param_5 + 0x18))();
  uVar2 = uVar2 & 0xff;
  uVar3 = (**(code **)(*param_5 + 0x14))(uVar2);
  uVar3 = uVar3 & 0xff;
  uVar1 = (**(code **)(*param_5 + 0x10))(uVar3);
  FUN_00902040(0xff,0xff,0xff,uVar1,uVar3,uVar2);
  FUN_008ff990(0x7b,0x7b,0x7b);
  FUN_00414f38(local_1c,0xffffffff);
  local_4 = (uint)local_4._1_3_ << 8;
  local_1c[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00a24410(int param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined local_28 [8];
  undefined local_20 [12];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00bef7d0;
  local_14 = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_14;
  iVar4 = param_1 + 0xfc;
  iVar2 = FUN_00a242f0(local_28,&DAT_00d9d258,0x10,0x10,iVar4,uVar1);
  local_c = 0;
  if (param_1 + 0x2c != iVar2) {
    FUN_0083ea60(iVar2);
  }
  local_c = 0xffffffff;
  FUN_008f7630();
  iVar2 = param_1 + 0xc0;
  iVar3 = FUN_00a242f0(local_28,&DAT_00d9d258,0x10,0x10,iVar2,uVar1);
  local_c = 1;
  if (param_1 + 0x4c != iVar3) {
    FUN_0083ea60(iVar3);
  }
  local_c = 0xffffffff;
  FUN_008f7630();
  iVar3 = FUN_00a242f0(local_28,&DAT_00d9d238,0x10,0x10,iVar4);
  local_c = 2;
  if (param_1 + 0x3c != iVar3) {
    FUN_0083ea60(iVar3);
  }
  local_c = 0xffffffff;
  FUN_008f7630();
  iVar3 = FUN_00a242f0(local_28,&DAT_00d9d238,0x10,0x10,iVar2);
  local_c = 3;
  if (param_1 + 0x5c != iVar3) {
    FUN_0083ea60(iVar3);
  }
  local_c = 0xffffffff;
  FUN_008f7630();
  iVar3 = FUN_00a242f0(local_28,&DAT_00d9d218,0x10,0x10,iVar4);
  local_c = 4;
  if (param_1 + 0x44 != iVar3) {
    FUN_0083ea60(iVar3);
  }
  local_c = 0xffffffff;
  FUN_008f7630();
  iVar3 = FUN_00a242f0(local_28,&DAT_00d9d218,0x10,0x10,iVar2);
  local_c = 5;
  if (param_1 + 100 != iVar3) {
    FUN_0083ea60(iVar3);
  }
  local_c = 0xffffffff;
  FUN_008f7630();
  iVar4 = FUN_00a242f0(local_28,&DAT_00d9d1f8,0x10,0x10,iVar4);
  local_c = 6;
  if (param_1 + 0x34 != iVar4) {
    FUN_0083ea60(iVar4);
  }
  local_c = 0xffffffff;
  FUN_008f7630();
  iVar4 = FUN_00a242f0(local_20,&DAT_00d9d1f8,0x10,0x10,iVar2);
  local_c = 7;
  if (param_1 + 0x54 != iVar4) {
    FUN_0083ea60(iVar4);
  }
  local_c = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_00a24630(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined auStack_28 [8];
  undefined **ppuStack_20;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bef800;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  switch(param_1) {
  case 5:
    (**(code **)(*(int *)(param_1_00 + 0x14) + 0x30))(param_2);
    break;
  case 6:
    (**(code **)(*(int *)(param_1_00 + 0xc) + 0x30))(param_2);
    break;
  case 7:
    FUN_004722cb(param_2);
    break;
  case 8:
    FUN_004722cb(param_2);
    break;
  case 9:
    FUN_004722cb(param_2);
    break;
  case 10:
    FUN_004722cb(param_2);
    break;
  case 0xb:
    FUN_004722cb(param_2);
    break;
  case 0xc:
    FUN_004722cb(param_2);
    break;
  case 0xd:
    (**(code **)(*(int *)(param_1_00 + 4) + 0x30))(param_2);
    break;
  case 0xe:
    (**(code **)(*(int *)(param_1_00 + 0x1c) + 0x30))(param_2);
    uVar1 = FUN_00920050(&stack0xffffffc8,0x28);
    puStack_8 = (undefined *)0x0;
    (**(code **)(*(int *)(param_1_00 + 0x6c) + 0x30))(uVar1);
    local_c = (void *)0xffffffff;
    FUN_0083e850();
    uVar1 = FUN_00920050(auStack_28,0x3c);
    local_c = (void *)0x1;
    (**(code **)(*(int *)(param_1_00 + 0x74) + 0x30))(uVar1);
    uStack_4 = 0xffffffff;
    ppuStack_20 = wxObject::vftable;
    FUN_0083e850();
    break;
  default:
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_00840480("..\\..\\src\\aui\\dockart.cpp",0x164,"wxAuiDefaultDockArt::SetColour",
                   "Assert failure",L"Invalid Metric Ordinal",DAT_0323f878 ^ (uint)&stack0xffffffc4)
      ;
    }
  }
  FUN_00a24410();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a24820(int param_1_00,int param_1,int param_2)

{
  if ((param_1 == 0xf) && (param_1_00 + 0x24 != param_2)) {
    FUN_0083ea60(param_2);
  }
  return;
}



void __thiscall FUN_00a24840(int param_1_00,undefined4 *param_1,int param_2)

{
  int iVar1;
  
  *param_1 = wxObject::vftable;
  iVar1 = DAT_03238ce8;
  if (param_2 == 0xf) {
    iVar1 = *(int *)(param_1_00 + 0x28);
    param_1[1] = iVar1;
  }
  else {
    param_1[1] = DAT_03238ce8;
  }
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1 = wxFont::vftable;
  return;
}



void __thiscall
FUN_00a24880(int param_1_00,int param_1,undefined4 param_2,int param_3,int param_4,int *param_5,
            int param_6)

{
  uint uVar1;
  uint uVar2;
  undefined ***pppuVar3;
  int iVar4;
  undefined4 uVar5;
  bool bVar6;
  undefined **local_44;
  int local_40;
  int local_3c;
  int local_38;
  undefined **local_34;
  undefined **ppuStack_30;
  undefined local_2c [24];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  uStack_10 = &LAB_00bef868;
  local_14 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffa8;
  ExceptionList = &local_14;
  local_40 = 0;
  local_44 = wxBitmap::vftable;
  local_c = 0;
  if (param_6 == 0) goto LAB_00a24b3b;
  if (param_3 == 0x66) {
    uVar1 = *(uint *)(param_6 + 0x58);
    if ((uVar1 >> 0x10 & 1) == 0) {
      if ((uVar1 & 0x4000) == 0) {
        pppuVar3 = (undefined ***)(param_1_00 + 0x3c);
        goto LAB_00a24943;
      }
      pppuVar3 = (undefined ***)(param_1_00 + 0x5c);
      bVar6 = &local_44 == pppuVar3;
    }
    else {
      if ((uVar1 & 0x4000) == 0) {
        pppuVar3 = (undefined ***)(param_1_00 + 0x44);
        goto LAB_00a24943;
      }
      pppuVar3 = (undefined ***)(param_1_00 + 100);
      bVar6 = &local_44 == pppuVar3;
    }
  }
  else if (param_3 == 0x68) {
    if ((*(uint *)(param_6 + 0x58) & 0x4000) != 0) {
      pppuVar3 = (undefined ***)(param_1_00 + 0x54);
      goto LAB_00a24943;
    }
    pppuVar3 = (undefined ***)(param_1_00 + 0x34);
    bVar6 = &local_44 == pppuVar3;
  }
  else if ((*(uint *)(param_6 + 0x58) & 0x4000) == 0) {
    pppuVar3 = (undefined ***)(param_1_00 + 0x2c);
    bVar6 = &local_44 == pppuVar3;
  }
  else {
    pppuVar3 = (undefined ***)(param_1_00 + 0x4c);
LAB_00a24943:
    bVar6 = &local_44 == pppuVar3;
  }
  if (!bVar6) {
    FUN_0083ea60(pppuVar3);
  }
  local_3c = *param_5;
  local_34 = (undefined **)param_5[2];
  iVar4 = local_40;
  if (local_40 != 0) {
    iVar4 = *(int *)(local_40 + 0xc);
  }
  local_38 = param_5[1] + (param_5[3] / 2 - iVar4 / 2);
  if (param_4 == 4) {
    local_3c = local_3c + 1;
    local_38 = local_38 + 1;
LAB_00a249b1:
    if ((*(uint *)(param_6 + 0x58) & 0x4000) == 0) {
      uVar5 = FUN_00920050(local_2c,0x78);
      local_c._0_1_ = 5;
      uVar5 = FUN_0095d7e0(uVar5,100);
      local_c = CONCAT31(local_c._1_3_,6);
      (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar5);
      uStack_10._0_1_ = 5;
      FUN_008f7630();
      uStack_10._0_1_ = 0;
      ppuStack_30 = wxObject::vftable;
      FUN_0083e850();
      uVar5 = FUN_00920050(&ppuStack_30,0x46);
      uStack_10._0_1_ = 7;
      uVar5 = FUN_009566f0(uVar5,1,100);
      uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,8);
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar5);
      local_14._0_1_ = 7;
    }
    else {
      uVar5 = FUN_00920050(local_2c,0x78);
      local_c._0_1_ = 1;
      uVar5 = FUN_0095d7e0(uVar5,100);
      local_c = CONCAT31(local_c._1_3_,2);
      (**(code **)(**(int **)(param_1 + 8) + 0x60))(uVar5);
      uStack_10._0_1_ = 1;
      FUN_008f7630();
      uStack_10._0_1_ = 0;
      ppuStack_30 = wxObject::vftable;
      FUN_0083e850();
      uVar5 = FUN_00920050(&ppuStack_30,0x46);
      uStack_10._0_1_ = 3;
      uVar5 = FUN_009566f0(uVar5,1,100);
      uStack_10 = (undefined *)CONCAT31(uStack_10._1_3_,4);
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar5);
      local_14._0_1_ = 3;
    }
    FUN_0083e850();
    local_14 = (void *)((uint)local_14._1_3_ << 8);
    local_34 = wxObject::vftable;
    FUN_0083e850();
    (**(code **)(**(int **)(param_1 + 8) + 0x150))(local_44,local_40,0xf,0xf);
  }
  else if (param_4 == 2) goto LAB_00a249b1;
  (**(code **)(**(int **)(param_1 + 8) + 0x164))(&local_44,local_3c,local_38,1,uVar2);
LAB_00a24b3b:
  local_c = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_14;
  return;
}



undefined4 __thiscall FUN_00a24b70(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  switch(param_2) {
  case 5:
    (**(code **)(*(int *)(param_1_00 + 0x14) + 0x3c))(param_1);
    return param_1;
  case 6:
    (**(code **)(*(int *)(param_1_00 + 0xc) + 0x3c))(param_1);
    return param_1;
  case 7:
    FUN_00458700(param_1_00 + 0x98);
    return param_1;
  case 8:
    FUN_00458700(param_1_00 + 0xac);
    return param_1;
  case 9:
    FUN_00458700(param_1_00 + 0xd4);
    return param_1;
  case 10:
    FUN_00458700(param_1_00 + 0xe8);
    return param_1;
  case 0xb:
    FUN_00458700(param_1_00 + 0xc0);
    return param_1;
  case 0xc:
    FUN_00458700(param_1_00 + 0xfc);
    return param_1;
  case 0xd:
    (**(code **)(*(int *)(param_1_00 + 4) + 0x4c))(param_1);
    return param_1;
  case 0xe:
    (**(code **)(*(int *)(param_1_00 + 0x1c) + 0x3c))(param_1);
    return param_1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\aui\\dockart.cpp",0x14c,"wxAuiDefaultDockArt::GetColour",
                 "Assert failure",L"Invalid Metric Ordinal");
  }
  FUN_00453f4b();
  return param_1;
}



void FUN_00a24cf0(int param_1,int param_2,int param_3)

{
  uint uVar1;
  short *psVar2;
  short *psVar3;
  int unaff_EBP;
  uint uVar4;
  int iStack_84;
  uint uStack_80;
  uint local_6c [2];
  undefined4 local_64;
  undefined local_60 [4];
  int local_5c;
  uint uStack_58;
  void *pvStack_54;
  undefined auStack_4c [4];
  undefined4 uStack_48;
  uint uStack_34;
  void *pvStack_30;
  void *pvStack_24;
  undefined4 uStack_1c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bef8a0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_6c;
  uStack_80 = DAT_0323f878 ^ (uint)&stack0xffffff84;
  ExceptionList = &local_c;
  iStack_84 = 0;
  local_5c = param_2;
  local_64 = 0;
  (**(code **)(**(int **)(param_2 + 8) + 0xa4))(param_3,local_6c,local_60,0,0);
  if ((int)puStack_8 < iStack_84) {
    uVar1 = *(uint *)(param_3 + 0x14);
    uVar4 = 0;
    uStack_80 = 0;
    if (uVar1 != 0) {
      do {
        FUN_008527e0(&stack0xffffff90,uVar4);
        uStack_1c = 0;
        psVar2 = &DAT_00d2e8c4;
        do {
          psVar3 = psVar2;
          psVar2 = psVar3 + 1;
        } while (*psVar3 != 0);
        FUN_00473ccc(&DAT_00d2e8c4,(int)(psVar3 + -0x697462) >> 1);
        (**(code **)(**(int **)(unaff_EBP + 8) + 0xa4))
                  (&stack0xffffff90,&iStack_84,&stack0xffffff88,0,0,0);
        uStack_1c = 0xffffffff;
        if ((int)puStack_8 < iStack_84) {
          _free(pvStack_54);
          if (7 < uStack_58) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_6c[0]);
          }
          uStack_58 = 7;
          local_5c = 0;
          local_6c[0] = local_6c[0] & 0xffff0000;
          break;
        }
        uStack_80 = uVar4;
        _free(pvStack_54);
        if (7 < uStack_58) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_6c[0]);
        }
        uVar4 = uVar4 + 1;
        uStack_58 = 7;
        local_5c = 0;
        local_6c[0] = local_6c[0] & 0xffff0000;
      } while (uVar4 < uVar1);
    }
    FUN_008527e0(auStack_4c,uStack_80);
    uStack_1c = 1;
    psVar2 = &DAT_00d2e8c4;
    do {
      psVar3 = psVar2;
      psVar2 = psVar3 + 1;
    } while (*psVar3 != 0);
    FUN_00473ccc(&DAT_00d2e8c4,(int)(psVar3 + -0x697462) >> 1);
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(auStack_4c,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
    _free(pvStack_30);
    if (7 < uStack_34) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_48);
    }
  }
  else {
    *(undefined4 *)(param_1 + 0x18) = 7;
    *(undefined4 *)(param_1 + 0x14) = 0;
    *(undefined2 *)(param_1 + 4) = 0;
    FID_conflict_assign(param_3,0,0xffffffff);
    *(undefined4 *)(param_1 + 0x1c) = 0;
  }
  ExceptionList = pvStack_24;
  ___security_check_cookie_4();
  return;
}



undefined4 * __fastcall FUN_00a24f40(undefined4 *param_1)

{
  undefined uVar1;
  uint uVar2;
  undefined ***pppuVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  undefined **local_ac [2];
  undefined **local_a4;
  undefined local_a0;
  byte local_9f;
  byte local_9e;
  byte local_9d;
  undefined local_9c;
  undefined **local_98 [2];
  undefined4 local_90;
  undefined local_8c;
  undefined local_8b;
  undefined local_8a;
  undefined local_89;
  undefined local_88;
  undefined **local_84 [5];
  undefined **local_70;
  undefined4 local_6c;
  uint local_58;
  void *local_54;
  undefined4 *local_4c;
  undefined **local_48 [5];
  undefined **local_34 [5];
  undefined **local_20 [5];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00befaa6;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff3c;
  ExceptionList = &local_c;
  *param_1 = wxAuiDefaultDockArt::vftable;
  param_1[2] = 0;
  param_1[1] = wxPen::vftable;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  local_4c = param_1;
  FUN_0095d530(uVar2);
  local_4._0_1_ = 2;
  FUN_0095d530();
  local_4._0_1_ = 3;
  FUN_0095d530();
  param_1[10] = 0;
  param_1[9] = wxFont::vftable;
  param_1[0xc] = 0;
  param_1[0xb] = wxBitmap::vftable;
  param_1[0xe] = 0;
  param_1[0xd] = wxBitmap::vftable;
  param_1[0x10] = 0;
  param_1[0xf] = wxBitmap::vftable;
  param_1[0x12] = 0;
  param_1[0x11] = wxBitmap::vftable;
  param_1[0x14] = 0;
  param_1[0x13] = wxBitmap::vftable;
  param_1[0x16] = 0;
  param_1[0x15] = wxBitmap::vftable;
  param_1[0x18] = 0;
  param_1[0x17] = wxBitmap::vftable;
  param_1[0x1a] = 0;
  param_1[0x19] = wxBitmap::vftable;
  param_1[0x1c] = 0;
  param_1[0x1b] = wxPen::vftable;
  param_1[0x1e] = 0;
  param_1[0x1d] = wxPen::vftable;
  param_1[0x20] = 0;
  param_1[0x1f] = wxPen::vftable;
  local_4._0_1_ = 0x10;
  FUN_00453f4b();
  local_4._0_1_ = 0x11;
  FUN_00453f4b();
  local_4._0_1_ = 0x12;
  FUN_00453f4b();
  local_4._0_1_ = 0x13;
  FUN_00453f4b();
  local_4._0_1_ = 0x14;
  FUN_00453f4b();
  local_4._0_1_ = 0x15;
  FUN_00453f4b();
  local_4._0_1_ = 0x16;
  FUN_00453f4b();
  local_4._0_1_ = 0x17;
  FUN_008ff080(local_ac,0xf);
  local_4._0_1_ = 0x18;
  uVar1 = (undefined)local_4;
  local_4._0_1_ = 0x18;
  if ((int)(((0x2fd - (uint)local_9e) - (uint)local_9d) - (uint)local_9f) < 0x3c) {
    pppuVar3 = (undefined ***)FUN_00920050(local_84,0x5c);
    local_4._0_1_ = 0x19;
    if (local_ac != pppuVar3) {
      FUN_0083ea60(pppuVar3);
    }
    local_a4 = pppuVar3[2];
    local_a0 = *(undefined *)(pppuVar3 + 3);
    local_9f = *(byte *)((int)pppuVar3 + 0xd);
    local_9e = *(byte *)((int)pppuVar3 + 0xe);
    local_9d = *(byte *)((int)pppuVar3 + 0xf);
    local_9c = *(undefined *)(pppuVar3 + 4);
    local_4._0_1_ = 0x18;
    local_84[0] = wxObject::vftable;
    FUN_0083e850();
    uVar1 = (undefined)local_4;
  }
  local_4._0_1_ = uVar1;
  if ((undefined ***)(param_1 + 0x21) != local_ac) {
    FUN_0083ea60(local_ac);
  }
  param_1[0x23] = local_a4;
  *(undefined *)(param_1 + 0x24) = local_a0;
  *(byte *)((int)param_1 + 0x91) = local_9f;
  *(byte *)((int)param_1 + 0x92) = local_9e;
  *(byte *)((int)param_1 + 0x93) = local_9d;
  *(undefined *)(param_1 + 0x25) = local_9c;
  FUN_00920050(local_98,0x55);
  local_4._0_1_ = 0x1a;
  FUN_00920050(local_20,0x4b);
  local_4._0_1_ = 0x1b;
  FUN_00920050(local_34,0x3c);
  local_4._0_1_ = 0x1c;
  FUN_00920050(local_48,0x28);
  local_4._0_1_ = 0x1d;
  puVar4 = (undefined4 *)FUN_008ff080(local_84,0xd);
  local_4._0_1_ = 0x1e;
  if (param_1 + 0x26 != puVar4) {
    FUN_0083ea60(puVar4);
  }
  param_1[0x28] = puVar4[2];
  *(undefined *)(param_1 + 0x29) = *(undefined *)(puVar4 + 3);
  *(undefined *)((int)param_1 + 0xa5) = *(undefined *)((int)puVar4 + 0xd);
  *(undefined *)((int)param_1 + 0xa6) = *(undefined *)((int)puVar4 + 0xe);
  *(undefined *)((int)param_1 + 0xa7) = *(undefined *)((int)puVar4 + 0xf);
  *(undefined *)(param_1 + 0x2a) = *(undefined *)(puVar4 + 4);
  local_4._0_1_ = 0x1d;
  local_84[0] = wxObject::vftable;
  FUN_0083e850();
  uVar5 = FUN_008ff080(&local_70,0xd);
  local_4._0_1_ = 0x1f;
  puVar4 = (undefined4 *)FUN_00a23a00(local_84,uVar5);
  local_4._0_1_ = 0x20;
  if (param_1 + 0x2b != puVar4) {
    FUN_0083ea60(puVar4);
  }
  param_1[0x2d] = puVar4[2];
  *(undefined *)(param_1 + 0x2e) = *(undefined *)(puVar4 + 3);
  *(undefined *)((int)param_1 + 0xb9) = *(undefined *)((int)puVar4 + 0xd);
  *(undefined *)((int)param_1 + 0xba) = *(undefined *)((int)puVar4 + 0xe);
  *(undefined *)((int)param_1 + 0xbb) = *(undefined *)((int)puVar4 + 0xf);
  *(undefined *)(param_1 + 0x2f) = *(undefined *)(puVar4 + 4);
  local_4._0_1_ = 0x1f;
  local_84[0] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x1d;
  local_70 = wxObject::vftable;
  FUN_0083e850();
  puVar4 = (undefined4 *)FUN_008ff080(&local_70,0xe);
  local_4._0_1_ = 0x21;
  if (param_1 + 0x30 != puVar4) {
    FUN_0083ea60(puVar4);
  }
  param_1[0x32] = puVar4[2];
  *(undefined *)(param_1 + 0x33) = *(undefined *)(puVar4 + 3);
  *(undefined *)((int)param_1 + 0xcd) = *(undefined *)((int)puVar4 + 0xd);
  *(undefined *)((int)param_1 + 0xce) = *(undefined *)((int)puVar4 + 0xe);
  *(undefined *)((int)param_1 + 0xcf) = *(undefined *)((int)puVar4 + 0xf);
  *(undefined *)(param_1 + 0x34) = *(undefined *)(puVar4 + 4);
  local_4 = CONCAT31(local_4._1_3_,0x1d);
  local_70 = wxObject::vftable;
  FUN_0083e850();
  if ((undefined ***)(param_1 + 0x35) != local_98) {
    FUN_0083ea60(local_98);
  }
  param_1[0x37] = local_90;
  *(undefined *)((int)param_1 + 0xe2) = local_8a;
  *(undefined *)(param_1 + 0x38) = local_8c;
  *(undefined *)((int)param_1 + 0xe1) = local_8b;
  *(undefined *)((int)param_1 + 0xe3) = local_89;
  *(undefined *)(param_1 + 0x39) = local_88;
  puVar4 = (undefined4 *)FUN_00920050(&local_70,0x61);
  local_4._0_1_ = 0x22;
  if (param_1 + 0x3a != puVar4) {
    FUN_0083ea60(puVar4);
  }
  param_1[0x3c] = puVar4[2];
  *(undefined *)(param_1 + 0x3d) = *(undefined *)(puVar4 + 3);
  *(undefined *)((int)param_1 + 0xf5) = *(undefined *)((int)puVar4 + 0xd);
  *(undefined *)((int)param_1 + 0xf6) = *(undefined *)((int)puVar4 + 0xe);
  *(undefined *)((int)param_1 + 0xf7) = *(undefined *)((int)puVar4 + 0xf);
  *(undefined *)(param_1 + 0x3e) = *(undefined *)(puVar4 + 4);
  local_4 = CONCAT31(local_4._1_3_,0x1d);
  local_70 = wxObject::vftable;
  FUN_0083e850();
  puVar4 = (undefined4 *)FUN_008f7e50(0xb);
  if (param_1 + 0x3f != puVar4) {
    FUN_0083ea60(puVar4);
  }
  param_1[0x41] = puVar4[2];
  *(undefined *)(param_1 + 0x42) = *(undefined *)(puVar4 + 3);
  *(undefined *)((int)param_1 + 0x109) = *(undefined *)((int)puVar4 + 0xd);
  *(undefined *)((int)param_1 + 0x10a) = *(undefined *)((int)puVar4 + 0xe);
  *(undefined *)((int)param_1 + 0x10b) = *(undefined *)((int)puVar4 + 0xf);
  *(undefined *)(param_1 + 0x43) = *(undefined *)(puVar4 + 4);
  puVar4 = (undefined4 *)FUN_0095d7e0(local_ac,100);
  local_4._0_1_ = 0x23;
  if (param_1 + 3 != puVar4) {
    FUN_0083ea60(puVar4);
  }
  local_4._0_1_ = 0x1d;
  FUN_008f7630();
  puVar4 = (undefined4 *)FUN_0095d7e0(local_ac,100);
  local_4._0_1_ = 0x24;
  if (param_1 + 5 != puVar4) {
    FUN_0083ea60(puVar4);
  }
  local_4._0_1_ = 0x1d;
  FUN_008f7630();
  puVar4 = (undefined4 *)FUN_0095d7e0(local_ac,100);
  local_4._0_1_ = 0x25;
  if (param_1 + 7 != puVar4) {
    FUN_0083ea60(puVar4);
  }
  local_4._0_1_ = 0x1d;
  FUN_008f7630();
  puVar4 = (undefined4 *)FUN_009566f0(local_20,1,100);
  local_4._0_1_ = 0x26;
  if (param_1 + 1 != puVar4) {
    FUN_0083ea60(puVar4);
  }
  local_4._0_1_ = 0x1d;
  FUN_0083e850();
  puVar4 = (undefined4 *)FUN_009566f0(local_48,1,100);
  local_4._0_1_ = 0x27;
  if (param_1 + 0x1b != puVar4) {
    FUN_0083ea60(puVar4);
  }
  local_4._0_1_ = 0x1d;
  FUN_0083e850();
  puVar4 = (undefined4 *)FUN_009566f0(local_34,1,100);
  local_4._0_1_ = 0x28;
  if (param_1 + 0x1d != puVar4) {
    FUN_0083ea60(puVar4);
  }
  local_4 = CONCAT31(local_4._1_3_,0x1d);
  FUN_0083e850();
  puVar4 = (undefined4 *)FUN_008f8330(0x25);
  if (param_1 + 0x1f != puVar4) {
    FUN_0083ea60(puVar4);
  }
  FUN_004325b6(PTR_DAT_03236318);
  local_4._0_1_ = 0x29;
  puVar4 = (undefined4 *)FUN_00473c89(8,0x46,0x5a,0x5a,0,&local_70,0);
  local_4._0_1_ = 0x2a;
  if (param_1 + 9 != puVar4) {
    FUN_0083ea60(puVar4);
  }
  local_4._0_1_ = 0x29;
  FUN_00921450();
  local_4._0_1_ = 0x1d;
  _free(local_54);
  if (7 < local_58) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_6c);
  }
  param_1[0x46] = 4;
  param_1[0x45] = 0x11;
  param_1[0x44] = 1;
  param_1[0x47] = 0xe;
  param_1[0x48] = 9;
  param_1[0x49] = 1;
  FUN_00a24410();
  local_4._0_1_ = 0x1c;
  local_48[0] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x1b;
  local_34[0] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x1a;
  local_20[0] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x18;
  local_98[0] = wxObject::vftable;
  FUN_0083e850();
  local_4 = CONCAT31(local_4._1_3_,0x17);
  local_ac[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00a25740(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00befbdc;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0x16;
  param_1[0x3f] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4._0_1_ = 0x15;
  param_1[0x3a] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x14;
  param_1[0x35] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x13;
  param_1[0x30] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x12;
  param_1[0x2b] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x11;
  param_1[0x26] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x10;
  param_1[0x21] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0xf;
  param_1[0x1f] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0xe;
  param_1[0x1d] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0xd;
  param_1[0x1b] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0xc;
  FUN_008f7630();
  local_4._0_1_ = 0xb;
  FUN_008f7630();
  local_4._0_1_ = 10;
  FUN_008f7630();
  local_4._0_1_ = 9;
  FUN_008f7630();
  local_4._0_1_ = 8;
  FUN_008f7630();
  local_4._0_1_ = 7;
  FUN_008f7630();
  local_4._0_1_ = 6;
  FUN_008f7630();
  local_4._0_1_ = 5;
  FUN_008f7630();
  local_4._0_1_ = 4;
  FUN_00921450();
  local_4._0_1_ = 3;
  FUN_008f7630();
  local_4._0_1_ = 2;
  FUN_008f7630();
  local_4._0_1_ = 1;
  FUN_008f7630();
  local_4 = (uint)local_4._1_3_ << 8;
  param_1[1] = wxObject::vftable;
  FUN_0083e850();
  *param_1 = wxAuiDockArt::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00a25910(undefined4 param_1_00,byte param_1)

{
  FUN_00a25740();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall
FUN_00a25930(int param_1_00,int param_1,undefined4 param_2,undefined4 param_3,int *param_4,
            int param_5)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  undefined4 uVar5;
  int iVar6;
  int unaff_EBP;
  undefined *puVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int local_7c;
  uint uStack_78;
  undefined4 local_70;
  undefined4 uStack_68;
  uint uStack_64;
  void *pvStack_60;
  uint uStack_5c;
  void *apvStack_58 [3];
  void *pvStack_4c;
  undefined4 uStack_28;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00befc10;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_7c;
  ExceptionList = &local_c;
  local_70 = param_3;
  local_7c = param_1_00;
  uVar5 = FUN_008f8330(0x24,DAT_0323f878 ^ (uint)&stack0xffffff74);
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar5);
  (**(code **)(**(int **)(param_1 + 8) + 0x50))(param_1_00 + 0x24);
  FUN_00a23f20(param_1,param_4,(byte)(*(uint *)(param_5 + 0x58) >> 0xe) & 1);
  cVar4 = (**(code **)(*(int *)(param_5 + 0x48) + 0x10))();
  if (cVar4 != '\0') {
    FUN_00a24050(param_1,param_4,param_5);
  }
  if ((*(uint *)(param_5 + 0x58) & 0x4000) == 0) {
    (**(code **)(**(int **)(param_1 + 8) + 0x78))(unaff_EBP + 0xfc);
  }
  else {
    (**(code **)(**(int **)(param_1 + 8) + 0x78))(unaff_EBP + 0xc0);
  }
  FUN_004325b6(L"ABCDEFHXfgkj");
  iVar9 = 0;
  iVar8 = 0;
  puVar7 = &stack0xffffff80;
  local_10 = 0;
  (**(code **)(**(int **)(param_1 + 8) + 0xa4))(&uStack_64,&uStack_68,puVar7,0,0);
  uStack_28 = 0xffffffff;
  _free(pvStack_60);
  if (uStack_64 < 8) {
    iVar10 = *param_4;
    uVar1 = *(uint *)(param_5 + 0x58);
    iVar2 = param_4[1];
    uStack_68 = 0;
    uStack_78 = uStack_78 & 0xffff0000;
    iVar3 = param_4[3];
    iVar6 = param_4[2] + -5;
    uStack_64 = 7;
    if ((uVar1 >> 0x15 & 1) != 0) {
      iVar6 = iVar6 - *(int *)(iVar9 + 0x11c);
    }
    if ((uVar1 >> 0x18 & 1) != 0) {
      iVar6 = iVar6 - *(int *)(iVar9 + 0x11c);
    }
    if ((uVar1 >> 0x16 & 1) != 0) {
      iVar6 = iVar6 - *(int *)(iVar9 + 0x11c);
    }
    FUN_00a24cf0(apvStack_58,param_1,uVar5,iVar6);
    uStack_28 = 1;
    (**(code **)(**(int **)(param_1 + 8) + 0xb4))(iVar10,iVar2,iVar6,iVar3);
    (**(code **)(**(int **)(param_1 + 8) + 0x168))
              (&uStack_68,puVar7 + *param_4 + 3,((param_4[3] / 2 + param_4[1]) - iVar8 / 2) + -1);
    (**(code **)(**(int **)(param_1 + 8) + 0xc0))();
    _free(apvStack_58[0]);
    if (uStack_5c < 8) {
      ExceptionList = pvStack_4c;
      ___security_check_cookie_4();
      return;
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_70);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(uStack_78);
}



void thunk_FUN_00928690(void)

{
  FUN_00928690();
  return;
}



undefined ** FUN_00a25bd0(void)

{
  return &PTR_u_wxAuiFloatingFrame_0323f4f8;
}



undefined ** FUN_00a25be0(void)

{
  return &PTR_PTR_00d9d30c;
}



undefined * FUN_00a25bf0(void)

{
  return &DAT_032eab68;
}



undefined4 * __thiscall
FUN_00a25c00(undefined4 *param_1_00,int param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,uint param_6,undefined4 param_7)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00befc48;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0043d6c2(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1_00 = wxMiniFrame::vftable;
  FUN_00928810(param_1,param_2,param_3,param_4,param_5,-(uint)(param_1 != 0) & 8 | param_6 | 4,
               param_7);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00a25c90(undefined4 param_1_00,byte param_1)

{
  FUN_00928690();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_00a25cb0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x274);
}



void __fastcall FUN_00a25cc0(int param_1)

{
  undefined4 uVar1;
  undefined local_10 [16];
  
  if (*(int *)(param_1 + 0x274) != 0) {
    uVar1 = FUN_0091aed0(local_10);
    FUN_00a15700(*(undefined4 *)(param_1 + 0x228),uVar1);
  }
  return;
}



void __thiscall FUN_00a25d00(int *param_1_00,int param_1)

{
  if (param_1_00[0x9d] != 0) {
    FUN_00a1c930(param_1_00[0x8a],param_1);
  }
  if ((*(char *)(param_1 + 0x2a) == '\0') || (*(char *)(param_1 + 0x29) == '\0')) {
    FUN_00a18b40(param_1_00[0x8a]);
    (**(code **)(*param_1_00 + 0x50))();
  }
  return;
}



void __thiscall FUN_00a25d70(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  if (*(int *)(param_1_00 + 0x274) != 0) {
    FUN_00a1bb40(*(undefined4 *)(param_1_00 + 0x228),param_2);
    *(undefined4 *)(param_1_00 + 0x268) = param_2;
    return;
  }
  *(undefined4 *)(param_1_00 + 0x268) = param_2;
  return;
}



uint FUN_00a25e00(void)

{
  int iVar1;
  undefined local_c [12];
  
  iVar1 = FUN_00910950(local_c);
  return CONCAT31((int3)((uint)iVar1 >> 8),*(undefined *)(iVar1 + 1)) & 0xffffff01;
}



void __fastcall FUN_00a25e20(int param_1)

{
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(int *)(param_1 + 8) == 0)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/weakref.h",0x43,
                 "wxWeakRefStatic<class wxAuiManager>::OnObjectDestroy","m_pobj != 0",0);
  }
  *(undefined4 *)(param_1 + 8) = 0;
  return;
}



void __thiscall FUN_00a25e60(int param_1_00,int param_1,undefined4 param_2)

{
  if ((*(int *)(param_1_00 + 4) == 0) && (param_1 == 0)) {
    if (PTR_FUN_03235c4c != (undefined *)0x0) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/event.h",0x185,
                   "wxEventFunctorMethod<class wxEventTypeTag<class wxMoveEvent>,class wxEvtHandler,class wxEvent,class wxEvtHandler>::operator ()"
                   ,"realHandler","invalid event handler");
      return;
    }
  }
  else {
    (**(code **)(param_1_00 + 8))(param_2);
  }
  return;
}



undefined4 __thiscall FUN_00a25eb0(undefined4 param_1_00,byte param_1)

{
  FUN_00845630();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00a25ed0(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  int local_24;
  int local_20;
  int local_1c;
  int local_18;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  if (*(char *)(param_1 + 0x8b) == '\0') {
    iVar4 = FUN_00910950(&local_1c);
    if ((*(byte *)(iVar4 + 1) & 1) != 0) {
      (**(code **)(*param_1 + 0x3f4))();
      local_10 = *(int *)(param_2 + 0x30);
      local_c = *(undefined4 *)(param_2 + 0x34);
      local_8 = *(undefined4 *)(param_2 + 0x38);
      local_4 = *(undefined4 *)(param_2 + 0x3c);
      (**(code **)(*param_1 + 0x3f8))(&local_10,0x40);
      *(undefined *)((int)param_1 + 0x22d) = 1;
      return;
    }
  }
  else {
    FUN_0091aed0(&local_10);
    iVar4 = local_4;
    if ((((local_10 != param_1[0x8c]) || (local_c != param_1[0x8d])) || (local_8 != param_1[0x8e]))
       || (local_4 != param_1[0x8f])) {
      if ((param_1[0x8e] < 1) || (param_1[0x8f] < 1)) {
        param_1[0x8c] = local_10;
        param_1[0x8d] = local_c;
        param_1[0x8e] = local_8;
        param_1[0x8f] = local_4;
        return;
      }
      uVar5 = local_10 - param_1[0x8c] >> 0x1f;
      if (((int)((local_10 - param_1[0x8c] ^ uVar5) - uVar5) < 4) &&
         (uVar5 = local_c - param_1[0x8d] >> 0x1f,
         (int)((local_c - param_1[0x8d] ^ uVar5) - uVar5) < 4)) {
        local_18 = param_1[0x8f];
        local_24 = local_8;
        local_1c = param_1[0x8e];
        local_20 = local_4;
        cVar3 = FUN_00457169(&local_1c,&local_24);
        if (cVar3 != '\0') {
          param_1[0x94] = param_1[0x90];
          param_1[0x95] = param_1[0x91];
          param_1[0x96] = param_1[0x92];
          param_1[0x90] = param_1[0x8c];
          iVar1 = param_1[0x8f];
          param_1[0x91] = param_1[0x8d];
          param_1[0x97] = param_1[0x93];
          iVar2 = param_1[0x8e];
          param_1[0x8c] = local_10;
          param_1[0x8d] = local_c;
          param_1[0x8e] = local_8;
          param_1[0x8f] = iVar4;
          param_1[0x92] = iVar2;
          param_1[0x93] = iVar1;
          return;
        }
        uVar5 = local_10 - param_1[0x94] >> 0x1f;
        uVar6 = local_c - param_1[0x95] >> 0x1f;
        if ((int)((local_c - param_1[0x95] ^ uVar6) - uVar6) <
            (int)((local_10 - param_1[0x94] ^ uVar5) - uVar5)) {
          local_24 = ((param_1[0x94] <= local_10) - 1 & 0xfffffff0) + 0x20;
        }
        else {
          local_24 = ((param_1[0x95] <= local_c) - 1 & 0xffffffc0) + 0x80;
        }
        param_1[0x94] = param_1[0x90];
        param_1[0x95] = param_1[0x91];
        param_1[0x96] = param_1[0x92];
        param_1[0x90] = param_1[0x8c];
        param_1[0x97] = param_1[0x93];
        param_1[0x91] = param_1[0x8d];
        param_1[0x8c] = local_10;
        param_1[0x92] = param_1[0x8e];
        param_1[0x8d] = local_c;
        param_1[0x8e] = local_8;
        param_1[0x93] = param_1[0x8f];
        param_1[0x8f] = local_4;
        cVar3 = FUN_00a25e00();
        if (cVar3 != '\0') {
          if (*(char *)((int)param_1 + 0x22d) == '\0') {
            (**(code **)(*param_1 + 0x3f4))();
            *(undefined *)((int)param_1 + 0x22d) = 1;
          }
          cVar3 = FUN_008ffd30();
          if (cVar3 == '\0') {
            local_10 = *(int *)(param_2 + 0x30);
            local_c = *(undefined4 *)(param_2 + 0x34);
            local_8 = *(undefined4 *)(param_2 + 0x38);
            local_4 = *(undefined4 *)(param_2 + 0x3c);
            (**(code **)(*param_1 + 0x3f8))(&local_10,local_24);
            return;
          }
        }
      }
      else {
        param_1[0x94] = param_1[0x90];
        param_1[0x95] = param_1[0x91];
        param_1[0x96] = param_1[0x92];
        param_1[0x97] = param_1[0x93];
        param_1[0x90] = param_1[0x8c];
        iVar4 = param_1[0x8e];
        param_1[0x91] = param_1[0x8d];
        param_1[0x8c] = local_10;
        param_1[0x8d] = local_c;
        param_1[0x8e] = local_8;
        param_1[0x92] = iVar4;
        param_1[0x93] = param_1[0x8f];
        param_1[0x8f] = local_4;
        if (param_1[0x9d] != 0) {
          iVar4 = FUN_00a14dd0(param_1[0x8a]);
          *(int *)(iVar4 + 0x84) = local_10;
          *(int *)(iVar4 + 0x88) = local_c;
        }
      }
    }
  }
  return;
}



void __thiscall FUN_00a262a0(int *param_1_00,int param_1)

{
  code *pcVar1;
  int iVar2;
  undefined local_c [12];
  
  if (*(char *)((int)param_1_00 + 0x22d) != '\0') {
    iVar2 = FUN_00910950(local_c);
    if ((*(byte *)(iVar2 + 1) & 1) == 0) {
      pcVar1 = *(code **)(*param_1_00 + 0x3fc);
      *(undefined *)((int)param_1_00 + 0x22d) = 0;
      (*pcVar1)();
      return;
    }
    *(undefined *)(param_1 + 0x28) = 1;
  }
  return;
}



undefined4 * FUN_00a262f0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bee533;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = wxEventFunctorMethod<class_wxEventTypeTag<class_wxMoveEvent>,class_wxEvtHandler,class_wxEvent,class_wxEvtHandler>
              ::vftable;
    puVar1[1] = 0;
    puVar1[2] = param_2;
    puVar1[3] = param_3;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __thiscall FUN_00a26360(undefined4 *param_1_00,int param_1)

{
  param_1_00[1] = 0;
  param_1_00[2] = 0;
  *param_1_00 = wxWeakRef<class_wxAuiManager>::vftable;
  if (param_1 != 0) {
    param_1_00[1] = *(undefined4 *)(param_1 + 8);
    *(undefined4 **)(param_1 + 8) = param_1_00;
    param_1_00[2] = param_1;
  }
  return;
}



void __fastcall FUN_00a263c0(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bd8378;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = wxWeakRef<class_wxAuiManager>::vftable;
  local_4 = 0;
  if (param_1[2] != 0) {
    FUN_00845930(param_1);
    param_1[2] = 0;
  }
  *param_1 = wxTrackerNode::vftable;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00a26430(undefined4 param_1_00,byte param_1)

{
  FUN_00a263c0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00a26450(undefined4 *param_1)

{
  int iVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00befc94;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxAuiFloatingFrame::vftable;
  iVar1 = param_1[0x9d];
  local_4 = 2;
  if ((iVar1 != 0) && (*(undefined4 **)(iVar1 + 0x88) == param_1)) {
    *(undefined4 *)(iVar1 + 0x88) = 0;
  }
  FUN_00a140b0(uVar2);
  local_4._0_1_ = 1;
  FUN_00a19e90();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00a263c0();
  local_4 = 0xffffffff;
  FUN_00928690();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00a264f0(undefined4 param_1_00,byte param_1)

{
  FUN_00a26450();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a26510(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,int param_3,
            undefined4 param_4,uint param_5)

{
  undefined4 *puVar1;
  uint uVar2;
  uint uVar3;
  int local_68;
  undefined4 *local_64;
  int local_58;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00befcec;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  local_64 = param_1_00;
  FUN_0043c211("frame");
  local_4 = 0;
  FUN_004325b6(PTR_DAT_03236318);
  uVar2 = *(uint *)(param_3 + 0x58);
  local_4._0_1_ = 1;
  FUN_00a25c00(param_1,param_4,local_54,param_3 + 0x84,param_3 + 0x8c,
               -(uint)((uVar2 >> 0x15 & 1) != 0) & 0x1000 |
               -(uint)((uVar2 >> 0x16 & 1) != 0) & 0x200 |
               ((~(byte)(uVar2 >> 8) & 1) != 0) - 1 & 0x40 | param_5,local_30);
  _free(local_38);
  if (7 < local_3c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_50,uVar3);
  }
  local_3c = 7;
  local_40 = 0;
  local_50 = local_50 & 0xffff0000;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  *param_1_00 = wxAuiFloatingFrame::vftable;
  param_1_00[0x8c] = 0;
  param_1_00[0x8d] = 0;
  param_1_00[0x8e] = 0;
  param_1_00[0x8f] = 0;
  param_1_00[0x90] = 0;
  param_1_00[0x91] = 0;
  param_1_00[0x92] = 0;
  param_1_00[0x93] = 0;
  param_1_00[0x94] = 0;
  param_1_00[0x95] = 0;
  param_1_00[0x96] = 0;
  param_1_00[0x97] = 0;
  puVar1 = param_1_00 + 0x9b;
  param_1_00[0x98] = 0;
  param_1_00[0x99] = 0;
  param_1_00[0x9c] = 0;
  param_1_00[0x9d] = 0;
  *puVar1 = wxWeakRef<class_wxAuiManager>::vftable;
  local_4._0_1_ = 5;
  FUN_00a1cf70(0,0xc9);
  local_4._0_1_ = 6;
  FUN_00a26360(param_2);
  local_4._0_1_ = 7;
  if (param_1_00[0x9d] != local_58) {
    if (param_1_00[0x9d] != 0) {
      FUN_00845930(puVar1);
      param_1_00[0x9d] = 0;
    }
    if (local_58 != 0) {
      param_1_00[0x9c] = *(undefined4 *)(local_58 + 8);
      *(undefined4 **)(local_58 + 8) = puVar1;
      param_1_00[0x9d] = local_58;
    }
  }
  local_4 = CONCAT31(local_4._1_3_,6);
  FUN_00a263c0();
  *(undefined *)((int)param_1_00 + 0x22d) = 0;
  FUN_00a1ccb0(param_1_00);
  *(undefined *)(param_1_00 + 0x8b) = 1;
  local_68 = 1;
  SystemParametersInfoW(0x26,0,&local_68,0);
  *(bool *)(param_1_00 + 0x8b) = local_68 != 0;
  FUN_009181f0(0x10);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00a26790(int *param_1_00,int param_1)

{
  int *piVar1;
  code *pcVar2;
  bool bVar3;
  int iVar4;
  undefined4 uVar5;
  uint uVar6;
  int iVar7;
  int unaff_EDI;
  uint uStack_f8;
  undefined auStack_e4 [4];
  int iStack_e0;
  int iStack_dc;
  undefined auStack_d8 [8];
  undefined auStack_d0 [152];
  void *pvStack_38;
  undefined4 uStack_30;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00befd1b;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_e4;
  uStack_f8 = DAT_0323f878 ^ (uint)&stack0xffffff0c;
  ExceptionList = &local_c;
  piVar1 = *(int **)(param_1 + 0x50);
  param_1_00[0x8a] = (int)piVar1;
  (**(code **)(*piVar1 + 0x120))();
  FUN_00445a53(param_1);
  puStack_8 = (undefined *)0x0;
  iVar4 = FUN_00445ccb(1,0);
  *(undefined4 *)(iVar4 + 0x5c) = 5;
  FUN_00445ccb(2,0);
  FUN_00445ccb(0x400,0);
  iVar4 = FUN_00445ccb(0x200,0);
  *(undefined4 *)(iVar4 + 0x60) = 0;
  *(undefined4 *)(iVar4 + 100) = 0;
  *(undefined4 *)(iVar4 + 0x68) = 0;
  (**(code **)(**(int **)(param_1 + 0x50) + 0xa4))(auStack_d0);
  (**(code **)(*param_1_00 + 0xa8))(&iStack_dc);
  if (((iStack_e0 != -1) && (iStack_dc != -1)) &&
     ((iStack_e0 < *(int *)(param_1 + 0x74) || (iStack_dc < *(int *)(param_1 + 0x78))))) {
    (**(code **)(*param_1_00 + 0x98))(auStack_d8);
  }
  iVar4 = *param_1_00;
  uVar5 = (**(code **)(**(int **)(param_1 + 0x50) + 0xa4))(&stack0xffffff18);
  (**(code **)(iVar4 + 0x94))(uVar5);
  FUN_00a1c410(param_1_00[0x8a],auStack_d8);
  FUN_00a18ce0();
  if ((*(int *)(param_1 + 0x74) != -1) && (*(int *)(param_1 + 0x78) != -1)) {
    (**(code **)(*param_1_00 + 0x278))(&stack0xffffff10,&stack0xffffff0c);
    FUN_00931b00(param_1_00);
    (**(code **)(*param_1_00 + 0x288))(0xffffffff,0xffffffff,uStack_f8,param_1_00,0);
  }
  (**(code **)(*param_1_00 + 0x368))(param_1 + 0x24);
  if ((*(int *)(param_1 + 0x8c) != DAT_03238d04) ||
     (bVar3 = false, *(uint *)(param_1 + 0x90) != DAT_03238d08)) {
    bVar3 = true;
  }
  if ((~(byte)((uint)*(undefined4 *)(param_1 + 0x58) >> 8) & 1) != 0) {
    iVar4 = *param_1_00;
    uVar6 = (**(code **)(iVar4 + 0xe8))();
    (**(code **)(iVar4 + 0xe4))(uVar6 & 0xffffffbf);
  }
  if (bVar3) {
    (**(code **)(*param_1_00 + 0x288))
              (0xffffffff,0xffffffff,*(undefined4 *)(param_1 + 0x8c),*(undefined4 *)(param_1 + 0x90)
               ,0);
  }
  else {
    iVar4 = *(int *)(param_1 + 0x6c);
    uVar6 = *(uint *)(param_1 + 0x70);
    if (iVar4 == DAT_03238d04) {
      if (uVar6 == DAT_03238d08) {
        iVar4 = *(int *)(param_1 + 0x74);
        uVar6 = *(uint *)(param_1 + 0x78);
      }
      if ((iVar4 == DAT_03238d04) && (uVar6 == DAT_03238d08)) {
        (**(code **)(*(int *)param_1_00[0x8a] + 0x278))(&stack0xffffff0c,&uStack_f8);
        uVar6 = uStack_f8;
        iVar4 = unaff_EDI;
      }
    }
    if ((param_1_00[0x9d] != 0) && ((*(uint *)(param_1 + 0x58) >> 0xb & 1) != 0)) {
      pcVar2 = *(code **)(**(int **)(param_1_00[0x9d] + 0x44) + 4);
      if ((*(uint *)(param_1 + 0x58) >> 0xf & 1) == 0) {
        iVar7 = (*pcVar2)(2);
        iVar4 = iVar4 + iVar7;
      }
      else {
        iVar7 = (*pcVar2)(2);
        uVar6 = uVar6 + iVar7;
      }
    }
    (**(code **)(*param_1_00 + 0x28c))(iVar4,uVar6);
  }
  uStack_30 = 0xffffffff;
  FUN_00445bb2();
  ExceptionList = pvStack_38;
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_00a26a70(void)

{
  return &PTR_u_wxAuiMDIParentFrame_0323f57c;
}



undefined ** FUN_00a26a80(void)

{
  return &PTR_PTR_00d9dc1c;
}



undefined * FUN_00a26a90(void)

{
  return &DAT_032eac10;
}



void __thiscall FUN_00a26aa0(int *param_1_00,int *param_1)

{
  undefined4 uVar1;
  int iVar2;
  
  if (param_1 != (int *)0x0) {
    iVar2 = (**(code **)(*param_1 + 0x338))();
    if (iVar2 != 0) {
      if (param_1_00[0x8e] == 0) {
        iVar2 = (**(code **)(*param_1_00 + 0x398))();
        param_1_00[0x8e] = iVar2;
      }
      iVar2 = *param_1_00;
      uVar1 = (**(code **)(*param_1 + 0x338))();
      (**(code **)(iVar2 + 0x394))(uVar1);
    }
    return;
  }
  if (param_1_00[0x8e] != 0) {
    (**(code **)(*param_1_00 + 0x394))(param_1_00[0x8e]);
    param_1_00[0x8e] = 0;
    return;
  }
  iVar2 = *param_1_00;
  uVar1 = (**(code **)(iVar2 + 0x398))();
  (**(code **)(iVar2 + 0x394))(uVar1);
  param_1_00[0x8e] = 0;
  return;
}



undefined4 __fastcall FUN_00a26b40(int param_1)

{
  return *(undefined4 *)(param_1 + 0x228);
}



void __fastcall FUN_00a26bb0(int param_1)

{
  int iVar1;
  
  if (*(int *)(param_1 + 0x228) != 0) {
    iVar1 = (**(code **)(**(int **)(param_1 + 0x228) + 0x35c))();
    if (iVar1 != -1) {
      iVar1 = (**(code **)(**(int **)(param_1 + 0x228) + 0x35c))();
      iVar1 = iVar1 + -1;
      if (iVar1 < 0) {
        iVar1 = (**(code **)(**(int **)(param_1 + 0x228) + 0x358))();
        iVar1 = iVar1 + -1;
      }
      (**(code **)(**(int **)(param_1 + 0x228) + 0x38c))(iVar1);
    }
  }
  return;
}



undefined ** FUN_00a26ca0(void)

{
  return &PTR_u_wxAuiMDIChildFrame_0323f594;
}



undefined ** FUN_00a26cb0(void)

{
  return &PTR_PTR_00d9dc24;
}



undefined * FUN_00a26cc0(void)

{
  return &DAT_032eac50;
}



undefined ** FUN_00a26d40(void)

{
  return &PTR_u_wxAuiMDIClientWindow_0323f5ac;
}



undefined ** FUN_00a26d50(void)

{
  return &PTR_PTR_00d9dc2c;
}



undefined * FUN_00a26d60(void)

{
  return &DAT_032eacb8;
}



uint __thiscall FUN_00a26d80(int param_1_00,int param_1)

{
  int iVar1;
  uint in_EAX;
  uint uVar2;
  
  if (*(int *)(param_1_00 + 0x230) == param_1) {
    return in_EAX & 0xffffff00;
  }
  *(int *)(param_1_00 + 0x230) = param_1;
  if ((((((*(int *)(param_1_00 + 0x22c) != 0) && (*(char *)(param_1 + 0x25) != '\0')) &&
        (*(int *)(param_1 + 8) != *(int *)(param_1_00 + 0x228))) &&
       ((iVar1 = *(int *)(param_1 + 0xc), iVar1 != DAT_032bfefc && (iVar1 != DAT_032bfe38)))) &&
      ((iVar1 != DAT_032bfe3c && ((iVar1 != DAT_032bfe40 && (iVar1 != DAT_032bff80)))))) &&
     (iVar1 != DAT_032bff84)) {
    uVar2 = (**(code **)(**(int **)(*(int *)(param_1_00 + 0x22c) + 0x70) + 0x18))(param_1);
    if ((char)uVar2 != '\0') goto LAB_00a26e02;
  }
  uVar2 = FUN_008469f0(param_1);
LAB_00a26e02:
  *(undefined4 *)(param_1_00 + 0x230) = 0;
  return uVar2;
}



void __thiscall FUN_00a26e20(int *param_1_00,int param_1)

{
  char cVar1;
  
  switch(*(undefined4 *)(param_1 + 0x14)) {
  case 0xfa1:
    if (param_1_00[0x8b] != 0) {
      FUN_0091cfd0();
      return;
    }
    break;
  case 0xfa2:
    if (param_1_00[0x8b] != 0) {
      while (cVar1 = FUN_0091cfd0(0), cVar1 != '\0') {
        if (param_1_00[0x8b] == 0) {
          return;
        }
      }
    }
    break;
  case 0xfa3:
    (**(code **)(*param_1_00 + 0x404))();
    return;
  case 0xfa4:
    (**(code **)(*param_1_00 + 0x408))();
    return;
  default:
    *(undefined *)(param_1 + 0x24) = 1;
  }
  return;
}



uint __fastcall FUN_00a26ec0(uint param_1)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  uint uVar6;
  uint uVar7;
  undefined **local_38 [2];
  uint local_30;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf5698;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  piVar1 = *(int **)(param_1 + 0x174);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar1 == (int *)0x0)) {
    FUN_00840480("..\\..\\src\\aui\\tabmdi.cpp",0x1e3,"wxAuiMDIChildFrame::Destroy","pParentFrame",
                 L"Missing MDI Parent Frame",uVar4);
  }
  piVar2 = (int *)piVar1[0x8a];
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar2 == (int *)0x0)) {
    FUN_00840480("..\\..\\src\\aui\\tabmdi.cpp",0x1e6,"wxAuiMDIChildFrame::Destroy","pClientWindow",
                 L"Missing MDI Client Window",uVar4);
  }
  if (piVar1[0x8b] == param_1) {
    FUN_00845a20(*(undefined4 *)(param_1 + 0x40),DAT_032bfefc);
    local_38[0] = wxActivateEvent::vftable;
    local_10 = (void *)((uint)local_10 & 0xffffff00);
    local_4 = 0;
    local_30 = param_1;
    (**(code **)(**(int **)(param_1 + 0x70) + 0x18))(local_38);
    piVar1[0x8b] = 0;
    if (piVar1[0x8e] == 0) {
      iVar3 = *piVar1;
      uVar5 = (**(code **)(iVar3 + 0x398))();
      (**(code **)(iVar3 + 0x394))(uVar5);
    }
    else {
      (**(code **)(*piVar1 + 0x394))(piVar1[0x8e]);
    }
    piVar1[0x8e] = 0;
    local_4 = 0xffffffff;
    local_38[0] = wxObject::vftable;
    FUN_0083e850();
  }
  uVar6 = (**(code **)(*piVar2 + 0x358))();
  uVar7 = 0;
  uVar4 = uVar6;
  if (uVar6 != 0) {
    do {
      uVar4 = FUN_00a0b780(uVar7);
      if (uVar4 == param_1) {
        uVar4 = (**(code **)(*piVar2 + 0x378))(uVar7);
        ExceptionList = local_10;
        return uVar4;
      }
      uVar7 = uVar7 + 1;
    } while (uVar7 < uVar6);
  }
  ExceptionList = local_c;
  return uVar4 & 0xffffff00;
}



void __thiscall FUN_00a27100(int *param_1_00,int *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_14 [4];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bea178;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  uVar2 = FUN_00924bc0(local_14,0xffffffff);
  local_4 = 0;
  (**(code **)(*param_1_00 + 0x34c))(uVar2,uVar1);
  puStack_8 = (undefined *)0xffffffff;
  FUN_008f7630();
  if (param_1_00 + 0x71 != param_1) {
    FUN_0083ea60(param_1);
  }
  ExceptionList = pvStack_10;
  return;
}



void __fastcall FUN_00a27280(int param_1)

{
  if ((((*(int *)(param_1 + 0x188) != *(int *)(param_1 + 0x178)) ||
       (*(int *)(param_1 + 0x18c) != *(int *)(param_1 + 0x17c))) ||
      (*(int *)(param_1 + 400) != *(int *)(param_1 + 0x180))) ||
     (*(int *)(param_1 + 0x194) != *(int *)(param_1 + 0x184))) {
    FUN_00916180(*(undefined4 *)(param_1 + 0x178),*(undefined4 *)(param_1 + 0x17c),
                 *(undefined4 *)(param_1 + 0x180),*(undefined4 *)(param_1 + 0x184));
    *(undefined4 *)(param_1 + 0x188) = *(undefined4 *)(param_1 + 0x178);
    *(undefined4 *)(param_1 + 0x18c) = *(undefined4 *)(param_1 + 0x17c);
    *(undefined4 *)(param_1 + 400) = *(undefined4 *)(param_1 + 0x180);
    *(undefined4 *)(param_1 + 0x194) = *(undefined4 *)(param_1 + 0x184);
  }
  return;
}



undefined __thiscall FUN_00a27310(int *param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined4 uStack_38;
  undefined **ppuStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined auStack_28 [8];
  void *pvStack_20;
  undefined4 uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00befdb8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(*param_1_00 + 0xe4))(param_2,DAT_0323f878 ^ (uint)&stack0xffffffc0);
  uVar2 = FUN_008fedb0(0x1a,0);
  FUN_008fedb0(0x19,0);
  uStack_38 = uVar2;
  (**(code **)(*param_1_00 + 0x3b8))(&stack0xffffffc4);
  uStack_38 = 100;
  ppuStack_34 = (undefined **)0x64;
  uStack_30 = 0;
  uStack_2c = 0;
  cVar1 = FUN_00a13a50(uStack_4,0xffffffff,&uStack_30,&uStack_38,0x202931);
  if (cVar1 == '\0') {
    ExceptionList = pvStack_14;
    return 0;
  }
  FUN_008ff080(auStack_28,0xc);
  local_c = (void *)0x0;
  cVar1 = (**(code **)(*param_1_00 + 0x17c))(auStack_28);
  if (cVar1 != '\0') {
    *(byte *)(param_1_00 + 0x37) = *(byte *)(param_1_00 + 0x37) & 0x7f;
  }
  piVar3 = (int *)FUN_00a140d0();
  (**(code **)(*piVar3 + 0x18))(5,&uStack_2c);
  uStack_18 = 0xffffffff;
  ppuStack_34 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_20;
  return 1;
}



void __thiscall FUN_00a27450(int *param_1_00,int param_1,int param_2)

{
  int iVar1;
  undefined **appuStack_64 [2];
  int iStack_5c;
  undefined uStack_3c;
  undefined **appuStack_38 [2];
  int iStack_30;
  undefined uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00befdf0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_1 != param_2) {
    if (param_1 != -1) {
      iVar1 = (**(code **)(*param_1_00 + 0x358))(DAT_0323f878 ^ (uint)&stack0xffffff90);
      if (param_1 < iVar1) {
        iVar1 = FUN_00a0b780(param_1);
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar1 == 0)) {
          FUN_00840480("..\\..\\src\\aui\\tabmdi.cpp",0x30b,"wxAuiMDIClientWindow::PageChanged",
                       "old_child",L"wxAuiMDIClientWindow::PageChanged - null page pointer");
        }
        FUN_00845a20(*(undefined4 *)(iVar1 + 0x40),DAT_032bfefc);
        appuStack_64[0] = wxActivateEvent::vftable;
        uStack_3c = 0;
        uStack_4 = 0;
        iStack_5c = iVar1;
        (**(code **)(**(int **)(iVar1 + 0x70) + 0x18))(appuStack_64);
        uStack_4 = 0xffffffff;
        appuStack_64[0] = wxObject::vftable;
        FUN_0083e850();
      }
    }
    if (param_2 != -1) {
      iVar1 = FUN_00a0b780(param_2);
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar1 == 0)) {
        FUN_00840480("..\\..\\src\\aui\\tabmdi.cpp",0x316,"wxAuiMDIClientWindow::PageChanged",
                     "active_child",L"wxAuiMDIClientWindow::PageChanged - null page pointer");
      }
      FUN_00845a20(*(undefined4 *)(iVar1 + 0x40),DAT_032bfefc);
      appuStack_38[0] = wxActivateEvent::vftable;
      uStack_10 = 1;
      uStack_4 = 1;
      iStack_30 = iVar1;
      (**(code **)(**(int **)(iVar1 + 0x70) + 0x18))(appuStack_38);
      if (*(int *)(iVar1 + 0x174) != 0) {
        *(int *)(*(int *)(iVar1 + 0x174) + 0x22c) = iVar1;
        FUN_00a26aa0(iVar1);
      }
      uStack_4 = 0xffffffff;
      appuStack_38[0] = wxObject::vftable;
      FUN_0083e850();
    }
  }
  ExceptionList = local_c;
  return;
}



void FUN_00a27600(int param_1)

{
  FUN_00a0b780(*(undefined4 *)(param_1 + 0x60));
  FUN_0091cfd0(0);
  *(undefined *)(param_1 + 0x5c) = 0;
  return;
}



undefined4 * FUN_00a27690(void)

{
  uint uVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x23c);
  local_4 = 0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_0043d6c2(uVar1);
    *puVar2 = wxAuiMDIParentFrame::vftable;
    puVar2[0x8c] = 0;
    puVar2[0x8a] = 0;
    puVar2[0x8b] = 0;
    puVar2[0x8d] = 0;
    puVar2[0x8e] = 0;
    ExceptionList = local_c;
    return puVar2;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __thiscall FUN_00a27730(int param_1_00,int param_1)

{
  int iVar1;
  undefined **local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00befe18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1_00 + 0x174);
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && (iVar1 == 0)) {
    FUN_00840480("..\\..\\src\\aui\\tabmdi.cpp",0x243,"wxAuiMDIChildFrame::SetIcon","pParentFrame",
                 L"Missing MDI Parent Frame",DAT_0323f878 ^ (uint)&stack0xffffffe0);
  }
  if (param_1_00 + 0x1bc != param_1) {
    FUN_0083ea60(param_1);
  }
  local_10 = 0;
  local_14 = wxBitmap::vftable;
  local_4 = 0;
  FUN_008f4c70(param_1_00 + 0x1bc,0);
  if (*(int *)(iVar1 + 0x228) != 0) {
    iVar1 = FUN_00a0b760(param_1_00);
    if (iVar1 != -1) {
      FUN_00a0c940(iVar1,&local_14);
    }
  }
  local_4 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_00a27810(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00befe64;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00446386(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  *param_1 = wxAuiMDIChildFrame::vftable;
  param_1[0x5e] = 0;
  param_1[0x5f] = 0;
  param_1[0x60] = 0;
  param_1[0x61] = 0;
  param_1[0x62] = 0;
  param_1[99] = 0;
  param_1[100] = 0;
  param_1[0x65] = 0;
  param_1[0x6c] = 7;
  param_1[0x6b] = 0;
  *(undefined2 *)(param_1 + 0x67) = 0;
  param_1[0x6d] = 0;
  param_1[0x70] = 0;
  param_1[0x6f] = wxIcon::vftable;
  local_4 = 2;
  FUN_00974660();
  *(undefined *)(param_1 + 0x73) = 1;
  param_1[0x5d] = 0;
  param_1[0x74] = 0;
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00a278e0(void)

{
  return 0;
}



void __fastcall FUN_00a278f0(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  code *pcVar4;
  int iVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00befeb2;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  *param_1 = wxAuiMDIChildFrame::vftable;
  piVar1 = (int *)param_1[0x5d];
  local_4 = 3;
  if (piVar1 != (int *)0x0) {
    if ((undefined4 *)piVar1[0x8b] == param_1) {
      iVar5 = piVar1[0x8e];
      piVar1[0x8b] = 0;
      if (iVar5 == 0) {
        iVar2 = *piVar1;
        iVar5 = (**(code **)(iVar2 + 0x398))(uVar3);
        pcVar4 = *(code **)(iVar2 + 0x394);
      }
      else {
        pcVar4 = *(code **)(*piVar1 + 0x394);
      }
      (*pcVar4)(iVar5);
      piVar1[0x8e] = 0;
    }
    piVar1 = (int *)piVar1[0x8a];
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (piVar1 == (int *)0x0)) {
      FUN_008402e0("..\\..\\src\\aui\\tabmdi.cpp",0x1ac,"wxAuiMDIChildFrame::~wxAuiMDIChildFrame",
                   "pClientWindow",0);
    }
    iVar5 = FUN_00a0b760(param_1);
    if (iVar5 != -1) {
      (**(code **)(*piVar1 + 0x37c))(iVar5);
    }
  }
  if ((int *)param_1[0x74] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x74] + 4))(1);
    param_1[0x74] = 0;
  }
  local_4._0_1_ = 2;
  param_1[0x71] = wxObject::vftable;
  FUN_0083e850();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_008f7630();
  _free((void *)param_1[0x6d]);
  if (7 < (uint)param_1[0x6c]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x67]);
  }
  param_1[0x6c] = 7;
  param_1[0x6b] = 0;
  *(undefined2 *)(param_1 + 0x67) = 0;
  local_4 = 0xffffffff;
  param_1[0x59] = wxControlContainerBase::vftable;
  FUN_009150e0();
  ExceptionList = local_c;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static class CNoTrackObject * __cdecl CThreadLocal<class
// _AFX_THREAD_STATE>::CreateObject(void)
//  public: static class CObject * __cdecl CFrameWnd::CreateObject(void)
// 
// Library: Visual Studio 2008 Release

undefined4 CreateObject(void)

{
  uint uVar1;
  undefined4 uVar2;
  void *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be23cb;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&local_10;
  ExceptionList = &local_c;
  local_10 = operator_new(0x1d4);
  local_4 = 0;
  if (local_10 != (void *)0x0) {
    uVar2 = FUN_00a27810(uVar1);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



undefined4 __thiscall FUN_00a27ae0(undefined4 param_1_00,byte param_1)

{
  FUN_00a278f0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00a27b00(void)

{
  FUN_00a27b10();
  return;
}



undefined4 __thiscall FUN_00a27b10(undefined4 param_1_00,byte param_1)

{
  FUN_00a12710();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00a27b30(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00befed8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00456680(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  *param_1_00 = wxAuiMDIClientWindow::vftable;
  param_1_00[0x65] = wxAuiMDIClientWindow::vftable;
  FUN_00a27310(param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_00a27ba0(undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x380);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00a27b30(param_1,0);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00a27c10(int param_1_00,int *param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  undefined local_54 [4];
  uint local_50;
  undefined4 local_40;
  uint local_3c;
  void *local_38;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00beff10;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  if ((param_1 != (int *)0x0) && (*(int *)(param_1_00 + 0x234) != 0)) {
    FUN_004325b6(PTR_DAT_03236318);
    local_4 = 0;
    FUN_0043c211("&Window");
    local_4 = CONCAT31(local_4._1_3_,1);
    iVar2 = FUN_0084a340(uVar1);
    if (iVar2 == 0) {
      uVar3 = FUN_0084d360(local_54);
    }
    else {
      uVar3 = FUN_0084f210(local_54,local_30);
    }
    iVar2 = FUN_00959bd0(uVar3);
    _free(local_38);
    if (7 < local_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_50);
    }
    local_3c = 7;
    local_40 = 0;
    local_50 = local_50 & 0xffff0000;
    local_4 = 0xffffffff;
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    local_18 = 7;
    local_1c = 0;
    local_2c = local_2c & 0xffff0000;
    if (iVar2 != -1) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        iVar4 = FUN_00959160(iVar2);
        if (*(int *)(param_1_00 + 0x234) != iVar4) {
          FUN_008402e0("..\\..\\src\\aui\\tabmdi.cpp",0x131,"wxAuiMDIParentFrame::RemoveWindowMenu",
                       "m_pWindowMenu == pMenuBar->GetMenu(pos)",0);
        }
      }
      (**(code **)(*param_1 + 0x340))(iVar2);
    }
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a27d90(int param_1_00,int *param_1)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  undefined local_9c [4];
  undefined4 uStack_98;
  uint uStack_84;
  void *pvStack_80;
  undefined auStack_78 [36];
  undefined auStack_54 [36];
  undefined auStack_30 [36];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00beff5e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((param_1 != (int *)0x0) && (*(int *)(param_1_00 + 0x234) != 0)) {
    uVar1 = FUN_0097d110(local_9c,0x1391,0,DAT_0323f878 ^ (uint)&stack0xffffff58);
    uStack_4 = 0;
    iVar2 = FUN_00959bd0(uVar1);
    uStack_4 = 0xffffffff;
    _free(pvStack_80);
    if (7 < uStack_84) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_98);
    }
    if (iVar2 == -1) {
      FUN_004325b6(PTR_DAT_03236318);
      uStack_4 = 1;
      FUN_0043c211("&Window");
      uStack_4 = CONCAT31(uStack_4._1_3_,2);
      iVar2 = FUN_0084a340();
      if (iVar2 == 0) {
        uVar1 = FUN_0084d360(local_9c);
      }
      else {
        uVar1 = FUN_0084f210(local_9c,auStack_54);
      }
      (**(code **)(*param_1 + 0x334))(*(undefined4 *)(param_1_00 + 0x234),uVar1);
      FUN_0040159c();
    }
    else {
      FUN_004325b6(PTR_DAT_03236318);
      uStack_4 = 3;
      FUN_0043c211("&Window");
      uStack_4 = CONCAT31(uStack_4._1_3_,4);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        uVar1 = FUN_0084d360(auStack_78);
      }
      else {
        uVar1 = FUN_0084f210(auStack_78,auStack_30);
      }
      (**(code **)(*param_1 + 0x338))(iVar2,*(undefined4 *)(param_1_00 + 0x234),uVar1);
      FUN_0040159c();
    }
    FUN_0040159c();
  }
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_00a28050(void)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(0x380);
  local_4 = 0;
  puVar3 = (undefined4 *)0x0;
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00456680(uVar1);
    *puVar2 = wxAuiMDIClientWindow::vftable;
    puVar2[0x65] = wxAuiMDIClientWindow::vftable;
    puVar3 = puVar2;
  }
  ExceptionList = local_c;
  return puVar3;
}



void __fastcall FUN_00a280c0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00beff88;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *param_1 = wxAuiMDIParentFrame::vftable;
  local_4 = 0;
  if ((int *)param_1[0x8a] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x8a] + 4))(1,uVar1);
    param_1[0x8a] = 0;
  }
  if ((int *)param_1[0x8e] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x8e] + 4))(1);
    param_1[0x8e] = 0;
  }
  FUN_00a27c10(param_1[0x71]);
  if ((int *)param_1[0x8d] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x8d] + 4))(1);
    param_1[0x8d] = 0;
  }
  local_4 = 0xffffffff;
  FUN_00928690();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a28170(int *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = (**(code **)(*param_1 + 0x398))();
  FUN_00a27c10(uVar1);
  FUN_00a27d90(param_2);
  FUN_00929d80(param_2);
  return;
}



undefined4 __thiscall FUN_00a281a0(undefined4 param_1_00,byte param_1)

{
  FUN_00a280c0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined ** FUN_00a281c0(void)

{
  return &PTR_u_wxRibbonBar_0323f5e4;
}



undefined ** FUN_00a281d0(void)

{
  return &PTR_u_wxRibbonBarEvent_0323f5fc;
}



undefined ** FUN_00a281e0(void)

{
  return &PTR_PTR_00d9ee8c;
}



undefined * FUN_00a281f0(void)

{
  return &DAT_032ead3c;
}



void __thiscall FUN_00a28260(int param_1_00,int *param_1)

{
  undefined4 *puVar1;
  uint uVar2;
  int *piVar3;
  uint uVar4;
  
  puVar1 = *(undefined4 **)(param_1_00 + 0x194);
  *(int **)(param_1_00 + 0x194) = param_1;
  if (param_1 != (int *)0x0) {
    (**(code **)(*param_1 + 8))(*(undefined4 *)(param_1_00 + 0x1c4));
  }
  uVar2 = *(uint *)(param_1_00 + 0x19c);
  uVar4 = 0;
  if (uVar2 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x19c) <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar3 = *(int **)(*(int *)(*(int *)(param_1_00 + 0x1a0) + uVar4 * 4) + 0x10);
      if ((int *)piVar3[0x65] != param_1) {
        (**(code **)(*piVar3 + 0x358))(param_1);
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar2);
  }
  if (puVar1 == (undefined4 *)0x0) {
    return;
  }
                    // WARNING: Could not recover jumptable at 0x00a2830e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)*puVar1)();
  return;
}



void __fastcall FUN_00a28320(int *param_1)

{
  undefined4 *puVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *puStack_10;
  int iStack_c;
  undefined4 uStack_4;
  
  puVar1 = &local_14;
  (**(code **)(*param_1 + 0x278))(&local_18,puVar1);
  iStack_c = param_1[0x76];
  local_18 = 0;
  local_14 = 0;
  puStack_10 = puVar1;
  (**(code **)(*(int *)param_1[0x65] + 0x30))(uStack_4,param_1,&local_18);
  return;
}



void __fastcall FUN_00a28380(int *param_1)

{
  undefined4 unaff_ESI;
  undefined *puVar1;
  undefined local_8 [4];
  undefined local_4 [4];
  
  puVar1 = local_8;
  (**(code **)(*param_1 + 0x278))(local_4,local_8);
  FUN_00a2d240(0,param_1[0x76],unaff_ESI,(int)puVar1 - param_1[0x76]);
  return;
}



undefined4 __thiscall FUN_00a283d0(int *param_1,uint *param_2)

{
  uint uVar1;
  undefined4 uVar2;
  char cVar3;
  int unaff_EBP;
  uint uVar4;
  undefined4 unaff_retaddr;
  int local_18;
  undefined4 local_14;
  int iStack_10;
  int iStack_c;
  undefined4 uStack_4;
  
  (**(code **)(*param_1 + 0x27c))(&local_18,&local_14);
  local_18 = param_1[0x74];
  iStack_10 = (unaff_EBP - param_1[0x75]) - local_18;
  iStack_c = param_1[0x76];
  uVar4 = 0;
  local_14 = 0;
  if (*(char *)(param_1 + 0x7c) != '\0') {
    local_18 = local_18 + param_1[0x6b];
    iStack_10 = iStack_10 - (param_1[0x6f] + param_1[0x6b]);
  }
  cVar3 = FUN_008f7580(uStack_4,unaff_retaddr);
  if ((cVar3 != '\0') && (uVar1 = param_1[0x67], uVar1 != 0)) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x67] <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      uVar2 = *(undefined4 *)(param_1[0x68] + uVar4 * 4);
      cVar3 = FUN_008f7580(uStack_4,unaff_retaddr);
      if (cVar3 != '\0') {
        if (param_2 != (uint *)0x0) {
          *param_2 = uVar4;
        }
        return uVar2;
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  if (param_2 != (uint *)0x0) {
    *param_2 = 0xffffffff;
  }
  return 0;
}



void __fastcall FUN_00a284f0(int *param_1)

{
  undefined4 *puVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *puStack_10;
  int iStack_c;
  
  puVar1 = &local_14;
  (**(code **)(*param_1 + 0x27c))(&local_18,puVar1);
  iStack_c = param_1[0x76];
  local_18 = 0;
  local_14 = 0;
  puStack_10 = puVar1;
  (**(code **)(*param_1 + 0x15c))(0,&local_18);
  return;
}



void __fastcall FUN_00a28540(int param_1)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  int local_c;
  int local_8;
  int iStack_4;
  
  uVar1 = *(uint *)(param_1 + 0x19c);
  iVar3 = -1;
  local_c = -1;
  if (uVar1 != 0) {
    iVar3 = FUN_009cde80(0);
    piVar2 = (int *)(**(code **)(**(int **)(iVar3 + 0x10) + 0xa4))(&local_8);
    iVar3 = *piVar2;
    local_c = piVar2[1];
    uVar4 = 1;
    if (1 < uVar1) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x19c) <= uVar4)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        (**(code **)(**(int **)(*(int *)(*(int *)(param_1 + 0x1a0) + uVar4 * 4) + 0x10) + 0xa4))
                  (&local_8);
        if (iVar3 <= local_8) {
          iVar3 = local_8;
        }
        if (local_c <= iStack_4) {
          local_c = iStack_4;
        }
        uVar4 = uVar4 + 1;
      } while (uVar4 < uVar1);
    }
    if (local_c != -1) {
      local_c = local_c + *(int *)(param_1 + 0x1d8);
    }
  }
  *(int *)(param_1 + 0x60) = iVar3;
  if (*(char *)(param_1 + 0x1f1) == '\0') {
    *(undefined4 *)(param_1 + 100) = *(undefined4 *)(param_1 + 0x1d8);
    return;
  }
  *(int *)(param_1 + 100) = local_c;
  return;
}



undefined4 * __thiscall FUN_00a28640(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  undefined *puVar4;
  undefined local_8 [8];
  
  iVar1 = *(int *)(param_1_00 + 0x1e0);
  *param_1 = 0;
  param_1[1] = 0;
  if (iVar1 != -1) {
    puVar4 = local_8;
    FUN_009cde80(iVar1);
    puVar3 = (undefined4 *)FUN_0091b530(puVar4);
    uVar2 = puVar3[1];
    *param_1 = *puVar3;
    param_1[1] = uVar2;
  }
  iVar1 = *(int *)(param_1_00 + 0x1d8);
  if (param_1[1] == -1) {
    param_1[1] = iVar1;
  }
  else {
    param_1[1] = param_1[1] + iVar1;
  }
  if (*(char *)(param_1_00 + 0x1f1) == '\0') {
    param_1[1] = iVar1;
  }
  return param_1;
}



void __thiscall FUN_00a286c0(int param_1_00,undefined4 *param_1,uint param_2)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  
  if (param_2 != 0) {
    puVar1 = (undefined4 *)operator_new(0x28);
    if (puVar1 == (undefined4 *)0x0) {
      puVar1 = (undefined4 *)0x0;
    }
    else {
      puVar6 = param_1;
      puVar7 = puVar1;
      for (iVar2 = 10; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar7 = *puVar6;
        puVar6 = puVar6 + 1;
        puVar7 = puVar7 + 1;
      }
    }
    iVar2 = *(int *)(param_1_00 + 4);
    if (puVar1 != (undefined4 *)0x0) {
      FUN_0086a0a0(puVar1,iVar2 * 4 >> 2,param_2);
    }
    uVar4 = 1;
    if (1 < param_2) {
      iVar5 = iVar2 * 4;
      do {
        iVar5 = iVar5 + 4;
        puVar1 = (undefined4 *)operator_new(0x28);
        if (puVar1 == (undefined4 *)0x0) {
          puVar1 = (undefined4 *)0x0;
        }
        else {
          puVar6 = param_1;
          puVar7 = puVar1;
          for (iVar3 = 10; iVar3 != 0; iVar3 = iVar3 + -1) {
            *puVar7 = *puVar6;
            puVar6 = puVar6 + 1;
            puVar7 = puVar7 + 1;
          }
        }
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 4) <= uVar4 + iVar2))
        {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(undefined4 **)(*(int *)(param_1_00 + 8) + iVar5) = puVar1;
        uVar4 = uVar4 + 1;
      } while (uVar4 < param_2);
    }
  }
  return;
}



void __thiscall FUN_00a287a0(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  bool bVar3;
  char cVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int local_4;
  
  iVar1 = *(int *)(param_1 + 0x30);
  iVar2 = *(int *)(param_1 + 0x2c);
  local_4 = -1;
  bVar3 = false;
  iVar6 = -1;
  if (iVar1 < *(int *)(param_1_00 + 0x1d8)) {
    if (*(int *)(param_1_00 + 0x1e4) != -1) {
      iVar6 = iVar2;
      iVar5 = iVar1;
      FUN_009cde80(*(int *)(param_1_00 + 0x1e4));
      cVar4 = FUN_008f7580(iVar6,iVar5);
      if (cVar4 != '\0') {
        iVar6 = *(int *)(param_1_00 + 0x1e4);
        if ((*(char *)(param_1_00 + 0x1f0) != '\0') &&
           ((*(int *)(param_1_00 + 0x1b4) <= iVar2 ||
            (iVar2 < *(int *)(param_1_00 + 0x1ac) + -1 + *(int *)(param_1_00 + 0x1a4))))) {
          iVar6 = -1;
        }
        goto LAB_00a2883a;
      }
    }
    FUN_00a283d0(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),&local_4);
    iVar6 = local_4;
  }
LAB_00a2883a:
  iVar5 = *(int *)(param_1_00 + 0x1e4);
  if (iVar6 != iVar5) {
    if (iVar5 != -1) {
      iVar5 = FUN_009cde80(iVar5);
      *(undefined *)(iVar5 + 0x25) = 0;
    }
    *(int *)(param_1_00 + 0x1e4) = iVar6;
    if (iVar6 != -1) {
      iVar6 = FUN_009cde80(iVar6);
      *(undefined *)(iVar6 + 0x25) = 1;
    }
    bVar3 = true;
  }
  if (*(char *)(param_1_00 + 0x1f0) == '\0') goto LAB_00a28913;
  cVar4 = FUN_008f7580(iVar2,iVar1);
  uVar7 = *(uint *)(param_1_00 + 0x1e8);
  if (cVar4 == '\0') {
    if ((uVar7 & 4) != 0) {
      uVar7 = uVar7 & 0xfffffffb;
      goto LAB_00a288b1;
    }
  }
  else if ((uVar7 & 4) == 0) {
    uVar7 = uVar7 | 4;
LAB_00a288b1:
    bVar3 = true;
    *(uint *)(param_1_00 + 0x1e8) = uVar7;
  }
  cVar4 = FUN_008f7580(iVar2,iVar1);
  uVar7 = *(uint *)(param_1_00 + 0x1ec);
  if (cVar4 == '\0') {
    if ((uVar7 & 4) != 0) {
      *(uint *)(param_1_00 + 0x1ec) = uVar7 & 0xfffffffb;
      FUN_00a284f0();
      return;
    }
  }
  else if ((uVar7 & 4) == 0) {
    *(uint *)(param_1_00 + 0x1ec) = uVar7 | 4;
    FUN_00a284f0();
    return;
  }
LAB_00a28913:
  if (bVar3) {
    FUN_00a284f0();
  }
  return;
}



void __fastcall FUN_00a28930(int param_1)

{
  int iVar1;
  int iVar2;
  bool bVar3;
  
  iVar1 = *(int *)(param_1 + 0x1e4);
  if (iVar1 != -1) {
    iVar2 = FUN_009cde80(iVar1);
    *(undefined *)(iVar2 + 0x25) = 0;
    *(undefined4 *)(param_1 + 0x1e4) = 0xffffffff;
  }
  bVar3 = (*(uint *)(param_1 + 0x1e8) & 4) != 0;
  if (bVar3) {
    *(uint *)(param_1 + 0x1e8) = *(uint *)(param_1 + 0x1e8) & 0xfffffffb;
  }
  if ((*(uint *)(param_1 + 0x1ec) & 4) != 0) {
    *(uint *)(param_1 + 0x1ec) = *(uint *)(param_1 + 0x1ec) & 0xfffffffb;
    FUN_00a284f0();
    return;
  }
  if (bVar3 || iVar1 != -1) {
    FUN_00a284f0();
  }
  return;
}



undefined4 __thiscall FUN_00a289a0(int *param_1_00,uint param_1)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  
  uVar1 = param_1_00[0x78];
  if (uVar1 != param_1) {
    if ((uint)param_1_00[0x67] <= param_1) {
      return 0;
    }
    if (uVar1 != 0xffffffff) {
      iVar3 = FUN_009cde80(uVar1);
      *(undefined *)(iVar3 + 0x24) = 0;
      iVar3 = FUN_009cde80(param_1_00[0x78]);
      (**(code **)(**(int **)(iVar3 + 0x10) + 0xcc))(0);
    }
    param_1_00[0x78] = param_1;
    iVar3 = FUN_009cde80(param_1);
    *(undefined *)(iVar3 + 0x24) = 1;
    iVar3 = FUN_009cde80(param_1);
    piVar2 = *(int **)(iVar3 + 0x10);
    FUN_00a28380(piVar2);
    (**(code **)(*piVar2 + 0x204))();
    (**(code **)(*piVar2 + 0xcc))(1);
    (**(code **)(*param_1_00 + 0x15c))(1,0);
  }
  return 1;
}



uint __thiscall FUN_00a28a60(int param_1_00,int param_1)

{
  uint in_EAX;
  uint uVar1;
  uint uVar2;
  
  uVar1 = *(uint *)(param_1_00 + 0x19c);
  uVar2 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x19c) <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      in_EAX = *(uint *)(param_1_00 + 0x1a0);
      if (*(int *)(*(int *)(in_EAX + uVar2 * 4) + 0x10) == param_1) {
        uVar1 = FUN_00a289a0(uVar2);
        return uVar1;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar1);
  }
  return in_EAX & 0xffffff00;
}



void __fastcall FUN_00a28ad0(int *param_1)

{
  uint uVar1;
  code *pcVar2;
  int *piVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  int iStack_40;
  int iStack_3c;
  uint uStack_38;
  int iStack_34;
  uint local_30;
  int local_2c;
  undefined auStack_28 [8];
  uint uStack_20;
  int iStack_1c;
  undefined auStack_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0078;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = param_1[0x67];
  if (uVar1 != 0) {
    (**(code **)(*param_1 + 0x278))(&local_2c,&local_30,DAT_0323f878 ^ (uint)&stack0xffffffb0);
    iVar6 = (iStack_34 - param_1[0x75]) - param_1[0x74];
    iStack_34 = (**(code **)(*(int *)param_1[0x65] + 0x10))(0);
    iVar5 = param_1[0x74];
    iStack_3c = iVar5;
    if (param_1[0x72] <= iVar6) {
      uVar7 = 0;
      if (uVar1 != 0) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x67] <= uVar7)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          piVar3 = *(int **)(param_1[0x68] + uVar7 * 4);
          *piVar3 = iVar5;
          piVar3[2] = piVar3[5];
          piVar3[1] = 0;
          piVar3[3] = param_1[0x76];
          uVar7 = uVar7 + 1;
          iVar5 = iVar5 + piVar3[5] + iStack_34;
        } while (uVar7 < uVar1);
      }
      *(undefined *)(param_1 + 0x7c) = 0;
      param_1[0x6b] = 0;
      param_1[0x6f] = 0;
      ExceptionList = local_c;
      return;
    }
    uVar7 = 0;
    if (iVar6 < param_1[0x73]) {
      if (uVar1 != 0) {
        do {
          piVar3 = (int *)FUN_009cde80(uVar7);
          *piVar3 = iStack_3c;
          piVar3[2] = piVar3[8];
          piVar3[1] = 0;
          piVar3[3] = param_1[0x76];
          iStack_3c = iStack_3c + piVar3[8] + iStack_34;
          uVar7 = uVar7 + 1;
        } while (uVar7 < uVar1);
      }
      if (*(char *)(param_1 + 0x7c) == '\0') {
        param_1[0x7a] = 0;
        param_1[0x7b] = 0;
        *(undefined *)(param_1 + 0x7c) = 1;
      }
      FUN_0094bd30(param_1);
      uStack_4 = 0;
      piVar3 = (int *)(**(code **)(*(int *)param_1[0x65] + 0x70))(&local_2c,auStack_18,param_1,0x10)
      ;
      param_1[0x6b] = *piVar3;
      param_1[0x6c] = param_1[0x76];
      param_1[0x69] = param_1[0x74];
      param_1[0x6a] = 0;
      piVar3 = (int *)(**(code **)(*(int *)param_1[0x65] + 0x70))
                                (&iStack_3c,auStack_28,param_1,0x11);
      pcVar2 = *(code **)(*param_1 + 0x27c);
      param_1[0x6f] = *piVar3;
      param_1[0x70] = param_1[0x76];
      (*pcVar2)(&stack0xffffffb4,&stack0xffffffb0);
      param_1[0x6e] = 0;
      param_1[0x6d] = (local_2c - param_1[0x75]) - param_1[0x6f];
      uStack_4 = 0xffffffff;
      FUN_00457221();
      if (param_1[0x77] == 0) {
        param_1[0x6b] = 0;
      }
      else if (param_1[0x73] <= param_1[0x77] + iVar6) {
        param_1[0x6d] = param_1[0x6d] + param_1[0x6f];
        param_1[0x77] = param_1[0x73] - iVar6;
        param_1[0x6f] = 0;
      }
      uVar7 = 0;
      if (uVar1 != 0) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x67] <= uVar7)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          piVar3 = *(int **)(param_1[0x68] + uVar7 * 4);
          *piVar3 = *piVar3 - param_1[0x77];
          uVar7 = uVar7 + 1;
        } while (uVar7 < uVar1);
        ExceptionList = local_c;
        return;
      }
    }
    else {
      iStack_40 = (uVar1 - 1) * iStack_34;
      *(undefined *)(param_1 + 0x7c) = 0;
      param_1[0x6b] = 0;
      param_1[0x6f] = 0;
      local_30 = 0x7fffffff;
      uStack_38 = iStack_40;
      if (uVar1 != 0) {
        do {
          iVar5 = FUN_009cde80(uVar7);
          uVar8 = *(uint *)(iVar5 + 0x1c);
          if ((int)uVar8 < (int)local_30) {
            local_30 = uVar8;
          }
          iStack_40 = iStack_40 + uVar8;
          uVar7 = uVar7 + 1;
        } while (uVar7 < uVar1);
      }
      uVar7 = 0;
      if (iVar6 < iStack_40) {
        iStack_40 = uStack_38;
        uVar8 = local_30;
        if (uVar1 != 0) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x67] <= uVar7)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
              uVar8 = local_30;
            }
            uVar4 = *(uint *)(*(int *)(param_1[0x68] + uVar7 * 4) + 0x20);
            if ((int)uVar4 < (int)uVar8) {
              uVar4 = uVar8;
            }
            iStack_40 = iStack_40 + uVar4;
            uVar7 = uVar7 + 1;
          } while (uVar7 < uVar1);
        }
        if (iStack_40 <= iVar6) {
          FUN_0086a600();
          uVar7 = 0;
          uStack_4 = 1;
          if (uVar1 != 0) {
            do {
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x67] <= uVar7)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                             "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
              }
              FUN_0086a400(*(undefined4 *)(param_1[0x68] + uVar7 * 4),1);
              uVar7 = uVar7 + 1;
            } while (uVar7 < uVar1);
          }
          FUN_0086a280(&LAB_00a28240);
          uVar8 = iVar6 - uStack_38;
          uStack_38 = 0;
          uVar7 = uVar1;
          if (uVar1 != 0) {
            do {
              local_30 = uVar7;
              uVar7 = uStack_38;
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_20 <= uStack_38)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                             "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
              }
              iVar5 = *(int *)(iStack_1c + uVar7 * 4);
              uVar4 = *(uint *)(iVar5 + 0x1c);
              if (local_30 * uVar4 - uVar8 != 0 && (int)uVar8 <= (int)(local_30 * uVar4)) {
                uVar4 = uVar8 / (uVar1 - uVar7);
                uVar7 = uStack_38;
              }
              local_30 = local_30 - 1;
              uStack_38 = uVar7 + 1;
              uVar8 = uVar8 - uVar4;
              *(uint *)(iVar5 + 8) = uVar4;
              uVar7 = local_30;
            } while (uStack_38 < uVar1);
          }
          uVar7 = 0;
          if (uVar1 != 0) {
            do {
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x67] <= uVar7)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                             "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
              }
              piVar3 = *(int **)(param_1[0x68] + uVar7 * 4);
              *piVar3 = iStack_3c;
              piVar3[1] = 0;
              piVar3[3] = param_1[0x76];
              iStack_3c = iStack_3c + piVar3[2] + iStack_34;
              uVar8 = (uVar1 - uVar7) - 1;
              if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_20 <= uVar8)) {
                FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                             "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
              }
              FUN_0086a1e0((int)(uVar8 * 4) >> 2,1);
              uVar7 = uVar7 + 1;
            } while (uVar7 < uVar1);
          }
          uStack_4 = 2;
          FUN_0086cea0();
          FUN_0086a880();
          uStack_4 = 0xffffffff;
          FUN_0086aa30();
          ExceptionList = local_c;
          return;
        }
        local_2c = ((uVar8 + iStack_34) * uVar1 - param_1[0x73]) - iStack_34;
        iStack_40 = param_1[0x73] - uStack_38;
        iVar6 = iVar6 - uStack_38;
        uStack_38 = 0;
        if (uVar1 != 0) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x67] <= uStack_38)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            piVar3 = *(int **)(param_1[0x68] + uStack_38 * 4);
            *piVar3 = iStack_3c;
            iVar5 = (int)((iVar6 - iStack_40) * (local_30 - piVar3[8])) / local_2c;
            local_2c = local_2c - (local_30 - piVar3[8]);
            piVar3[1] = 0;
            iVar5 = iVar5 + piVar3[8];
            piVar3[2] = iVar5;
            iVar6 = iVar6 - piVar3[2];
            piVar3[3] = param_1[0x76];
            iStack_3c = iStack_3c + iVar5 + iStack_34;
            iStack_40 = iStack_40 - piVar3[8];
            uStack_38 = uStack_38 + 1;
          } while (uStack_38 < uVar1);
        }
      }
      else {
        local_30 = param_1[0x72] - iStack_40;
        iStack_40 = iStack_40 - uStack_38;
        iVar6 = iVar6 - uStack_38;
        uStack_38 = 0;
        if (uVar1 != 0) {
          do {
            uVar7 = uStack_38;
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x67] <= uStack_38)) {
              FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                           "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
            }
            piVar3 = *(int **)(param_1[0x68] + uVar7 * 4);
            local_2c = piVar3[5] - piVar3[7];
            *piVar3 = iStack_3c;
            iVar5 = iVar6 - iStack_40;
            iStack_40 = iStack_40 - piVar3[7];
            piVar3[1] = 0;
            iVar5 = (iVar5 * local_2c) / (int)local_30 + piVar3[7];
            piVar3[2] = iVar5;
            iVar6 = iVar6 - piVar3[2];
            piVar3[3] = param_1[0x76];
            iStack_3c = iStack_3c + iVar5 + iStack_34;
            local_30 = local_30 - local_2c;
            uStack_38 = uStack_38 + 1;
          } while (uStack_38 < uVar1);
          ExceptionList = local_c;
          return;
        }
      }
    }
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00a29210(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bf00b6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxRibbonBar::vftable;
  local_4 = 1;
  FUN_00a28260(0);
  local_4 = local_4 & 0xffffff00;
  FUN_00a15c90(uVar1);
  local_4 = 0xffffffff;
  FUN_0044cd6b();
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00a29280(int *param_1)

{
  undefined4 *puVar1;
  int *piVar2;
  double dVar3;
  char cVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  undefined7 uStack_ec;
  char cStack_e5;
  int iStack_e4;
  uint uStack_e0;
  undefined8 uStack_dc;
  undefined local_d4 [4];
  int iStack_d0;
  undefined4 uStack_cc;
  int iStack_c8;
  int iStack_c4;
  int iStack_c0;
  int iStack_bc;
  int iStack_b8;
  uint uStack_b4;
  undefined **appuStack_b0 [2];
  int *piStack_a8;
  int local_a4;
  void *pvStack_58;
  undefined4 uStack_50;
  void *local_4c;
  undefined *puStack_48;
  undefined4 local_44;
  
  local_44 = 0xffffffff;
  puStack_48 = &LAB_00bf0108;
  local_4c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffff00;
  ExceptionList = &local_4c;
  FUN_00957210(param_1);
  uVar7 = 0;
  local_44 = 0;
  (**(code **)(*param_1 + 0x27c))((int)&uStack_dc + 4,local_d4,uVar5);
  appuStack_b0[0] = (undefined **)param_1[0x76];
  uStack_b4 = uStack_e0;
  iStack_bc = 0;
  iStack_b8 = 0;
  iVar6 = (**(code **)(param_1[0x2e] + 0x40))(&iStack_bc);
  if (iVar6 == 0) {
    uStack_50 = 0xffffffff;
    appuStack_b0[0] = wxAutoBufferedPaintDC::vftable;
    FUN_009475a0();
  }
  else {
    FUN_00a28320(appuStack_b0);
    uStack_dc = 0.0;
    uVar5 = param_1[0x67];
    cStack_e5 = '\0';
    (**(code **)(*param_1 + 0x27c))(&iStack_e4,&uStack_e0);
    iStack_d0 = param_1[0x74];
    iStack_c4 = param_1[0x76];
    iStack_c8 = (iStack_e4 - param_1[0x75]) - iStack_d0;
    uStack_cc = 0;
    if (*(char *)(param_1 + 0x7c) != '\0') {
      iStack_d0 = iStack_d0 + param_1[0x6b];
      iStack_c8 = (iStack_c8 - param_1[0x6f]) - param_1[0x6b];
    }
    if (uVar5 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x67] <= uVar7)) {
          FUN_008402e0();
        }
        puVar1 = *(undefined4 **)(param_1[0x68] + uVar7 * 4);
        (**(code **)(*piStack_a8 + 0xc0))();
        if (*(char *)(param_1 + 0x7c) == '\0') {
LAB_00a29430:
          (**(code **)(*piStack_a8 + 0xb4))(*puVar1,puVar1[1],puVar1[2],puVar1[3]);
          (**(code **)(*(int *)param_1[0x65] + 0x34))(&iStack_c0,param_1,puVar1);
          iVar6 = puVar1[2];
          if (iVar6 < (int)puVar1[6]) {
            cStack_e5 = '\x01';
            if (iVar6 < (int)puVar1[7]) {
              uStack_dc = uStack_dc + 1.0;
            }
            else {
              iStack_e4 = puVar1[6] - puVar1[7];
              uStack_dc = (double)(puVar1[6] - iVar6) / (double)iStack_e4 + uStack_dc;
            }
          }
        }
        else {
          cVar4 = FUN_008f7940(puVar1);
          if (cVar4 != '\0') {
            (**(code **)(*piStack_a8 + 0xb4))(iStack_d0,uStack_cc,iStack_c8,iStack_c4);
            goto LAB_00a29430;
          }
        }
        uVar7 = uVar7 + 1;
      } while (uVar7 < uVar5);
      if (cStack_e5 != '\0') {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_1[0x67] == 0)) {
          FUN_008402e0();
        }
        piVar2 = *(int **)param_1[0x68];
        iStack_c0 = *piVar2;
        iStack_bc = piVar2[1];
        iStack_b8 = piVar2[2];
        uStack_b4 = piVar2[3];
        iStack_b8 = (**(code **)(*(int *)param_1[0x65] + 0x10))(0);
        dVar3 = (double)uVar5;
        if ((int)uVar5 < 0) {
          dVar3 = dVar3 + 4294967296.0;
        }
        uStack_dc = uStack_dc / dVar3;
        uVar7 = 0;
        uStack_e0 = uVar5;
        if (uVar5 != 1) {
          do {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x67] <= uVar7)) {
              FUN_008402e0();
            }
            piVar2 = *(int **)(param_1[0x68] + uVar7 * 4);
            iStack_c0 = piVar2[2] + *piVar2;
            if ((*(char *)(param_1 + 0x7c) == '\0') ||
               (cVar4 = FUN_008f7940(&iStack_c0), cVar4 != '\0')) {
              (**(code **)(*piStack_a8 + 0xc0))();
              (**(code **)(*piStack_a8 + 0xb4))(iStack_c0,iStack_bc,iStack_b8,uStack_b4);
              (**(code **)(*(int *)param_1[0x65] + 0x38))
                        (&iStack_c0,param_1,&iStack_d0,CONCAT17(cStack_e5,uStack_ec));
            }
            uVar7 = uVar7 + 1;
          } while (uVar7 < uVar5 - 1);
        }
      }
    }
    if (*(char *)(param_1 + 0x7c) != '\0') {
      (**(code **)(*piStack_a8 + 0xc0))();
      if (param_1[0x6b] != 0) {
        (**(code **)(*(int *)param_1[0x65] + 0x40))
                  (appuStack_b0,param_1,param_1 + 0x69,param_1[0x7a] | 0x10);
      }
      if (param_1[0x6f] != 0) {
        (**(code **)(*(int *)param_1[0x65] + 0x40))
                  (appuStack_b0,param_1,param_1 + 0x6d,param_1[0x7b] | 0x11);
      }
    }
    appuStack_b0[0] = wxBufferedPaintDC::vftable;
    uStack_50 = 2;
    FUN_009ba2f0();
    uStack_50 = CONCAT31(uStack_50._1_3_,1);
    FUN_00457221();
    appuStack_b0[0] = wxBufferedDC::vftable;
    uStack_50 = 3;
    if (local_a4 != 0) {
      FUN_009ba2f0();
    }
    appuStack_b0[0] = wxDC::vftable;
    uStack_50 = 4;
    if (piStack_a8 != (int *)0x0) {
      (**(code **)(*piStack_a8 + 4))(1);
    }
    uStack_50 = 0xffffffff;
    appuStack_b0[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = pvStack_58;
  return;
}



void __thiscall FUN_00a29720(int *param_1,int param_2)

{
  int local_8;
  undefined4 local_4;
  
  FUN_00a28ad0();
  if (param_1[0x78] != -1) {
    FUN_009cde80(param_1[0x78]);
    (**(code **)(*param_1 + 0x278))(&local_4,&local_8);
    FUN_00a2d240(0,param_1[0x76],local_4,local_8 - param_1[0x76]);
  }
  FUN_00a284f0();
  *(undefined *)(param_2 + 0x24) = 1;
  return;
}



void __thiscall FUN_00a29790(int *param_1_00,int param_1)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  bool local_3a;
  bool local_39;
  undefined local_38 [4];
  undefined local_34 [4];
  undefined local_30 [8];
  undefined local_28 [4];
  undefined4 uStack_24;
  undefined4 uStack_20;
  int iStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  iVar5 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0138;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar3 = param_1_00[0x77];
  local_3a = true;
  local_39 = true;
  if (iVar3 + param_1 < 1) {
    iVar5 = -iVar3;
    local_3a = false;
  }
  else {
    (**(code **)(*param_1_00 + 0x27c))(&param_1,local_34,DAT_0323f878 ^ (uint)&stack0xffffffb4);
    iVar3 = param_1_00[0x77];
    if (param_1_00[0x73] <= ((iVar3 - param_1_00[0x75]) - param_1_00[0x74]) + param_1 + iVar5) {
      (**(code **)(*param_1_00 + 0x27c))(&param_1,local_34);
      iVar3 = param_1_00[0x77];
      local_39 = false;
      iVar5 = ((param_1_00[0x75] - iVar3) - param_1) + param_1_00[0x74] + param_1_00[0x73];
    }
  }
  if (iVar5 == 0) {
    ExceptionList = local_c;
    return;
  }
  uVar1 = param_1_00[0x67];
  uVar4 = 0;
  param_1_00[0x77] = iVar3 + iVar5;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x67] <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar2 = *(int **)(param_1_00[0x68] + uVar4 * 4);
      uVar4 = uVar4 + 1;
      *piVar2 = *piVar2 - iVar5;
    } while (uVar4 < uVar1);
  }
  if ((local_39 == (param_1_00[0x6f] != 0)) && (local_3a == (param_1_00[0x6b] != 0)))
  goto LAB_00a29989;
  FUN_0094bd30(param_1_00);
  local_4 = 0;
  if (local_3a == false) {
    param_1_00[0x6b] = 0;
  }
  else {
    piVar2 = (int *)(**(code **)(*(int *)param_1_00[0x65] + 0x70))
                              (local_30,local_28,param_1_00,0x10);
    param_1_00[0x6b] = *piVar2;
  }
  if (local_39 == false) {
    if (param_1_00[0x6f] != 0) {
      iVar3 = param_1_00[0x6f] + param_1_00[0x6d];
      param_1_00[0x6f] = 0;
      goto LAB_00a29972;
    }
  }
  else if (param_1_00[0x6f] == 0) {
    piVar2 = (int *)(**(code **)(*(int *)param_1_00[0x65] + 0x70))
                              (local_30,local_28,param_1_00,0x11);
    iVar3 = *piVar2;
    param_1_00[0x6f] = iVar3;
    iVar3 = param_1_00[0x6d] - iVar3;
LAB_00a29972:
    param_1_00[0x6d] = iVar3;
  }
  local_4 = 0xffffffff;
  FUN_00457221();
LAB_00a29989:
  (**(code **)(*param_1_00 + 0x27c))(local_38,local_30);
  iStack_18 = param_1_00[0x76];
  uStack_24 = 0;
  uStack_20 = 0;
  (**(code **)(*param_1_00 + 0x15c))(0,&uStack_24);
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00a299f0(undefined4 param_1_00,byte param_1)

{
  FUN_00a29210();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a29a60(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0168;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044ced6(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4 = 0;
  param_1_00[0x65] = 0;
  *param_1_00 = wxRibbonControl::vftable;
  FUN_00a30b40(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * FUN_00a29ae0(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(100);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0092bd60(DAT_032bd44c,0);
    *(undefined *)(puVar1 + 0x17) = 1;
    *puVar1 = wxRibbonBarEvent::vftable;
    puVar1[0x18] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



undefined4 * __fastcall FUN_00a29b70(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0198;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_0044ced6(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  param_1[0x65] = 0;
  local_4 = 0;
  *param_1 = wxRibbonBar::vftable;
  FUN_0086a600();
  param_1[0x69] = 0;
  param_1[0x6a] = 0;
  param_1[0x6b] = 0;
  param_1[0x6c] = 0;
  param_1[0x6d] = 0;
  param_1[0x6e] = 0;
  param_1[0x6f] = 0;
  param_1[0x70] = 0;
  param_1[0x78] = 0xffffffff;
  param_1[0x79] = 0xffffffff;
  param_1[0x71] = 0;
  param_1[0x72] = 0;
  param_1[0x73] = 0;
  param_1[0x74] = 0;
  param_1[0x75] = 0;
  param_1[0x76] = 0;
  param_1[0x77] = 0;
  param_1[0x7a] = 0;
  param_1[0x7b] = 0;
  *(undefined *)(param_1 + 0x7c) = 0;
  *(undefined *)((int)param_1 + 0x1f1) = 1;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00a29c60(int param_1_00,int param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  undefined **local_d8 [2];
  int local_d0;
  char local_7c;
  undefined4 local_78;
  undefined **appuStack_74 [2];
  int iStack_6c;
  undefined uStack_18;
  undefined4 uStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf01d3;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_d8;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff1c;
  ExceptionList = &local_c;
  iVar5 = FUN_00a283d0(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),0);
  if (iVar5 == 0) {
    cVar3 = FUN_008f7580(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30));
    if (cVar3 == '\0') {
      cVar3 = FUN_008f7580(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30));
      if (cVar3 == '\0') goto LAB_00a29df8;
      *(uint *)(param_1_00 + 0x1ec) = *(uint *)(param_1_00 + 0x1ec) | 0xc;
    }
    else {
      *(uint *)(param_1_00 + 0x1e8) = *(uint *)(param_1_00 + 0x1e8) | 0xc;
    }
    FUN_00a284f0(uVar4);
  }
  else {
    iVar6 = FUN_009cde80(*(undefined4 *)(param_1_00 + 0x1e0));
    if (iVar5 != iVar6) {
      uVar1 = *(undefined4 *)(iVar5 + 0x10);
      FUN_0092bd60(DAT_032ead24,*(undefined4 *)(param_1_00 + 0x40));
      local_7c = '\x01';
      local_d8[0] = wxRibbonBarEvent::vftable;
      local_4 = 0;
      local_d0 = param_1_00;
      local_78 = uVar1;
      (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_d8);
      if (local_7c != '\0') {
        FUN_00a28a60(local_78);
        uVar1 = *(undefined4 *)(param_1_00 + 0x40);
        iVar5 = FUN_009cde80(*(undefined4 *)(param_1_00 + 0x1e0));
        uVar2 = *(undefined4 *)(iVar5 + 0x10);
        FUN_0092bd60(DAT_032ead20,uVar1);
        uStack_18 = 1;
        appuStack_74[0] = wxRibbonBarEvent::vftable;
        local_4._0_1_ = 1;
        iStack_6c = param_1_00;
        uStack_14 = uVar2;
        (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(appuStack_74);
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_00a1f4e0();
      }
      local_4 = 0xffffffff;
      FUN_00a1f4e0();
    }
  }
LAB_00a29df8:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a29e30(int param_1_00,int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  uint uVar2;
  int iVar3;
  undefined **local_74 [2];
  int local_6c;
  uint uStack_48;
  undefined4 uStack_38;
  uint uStack_34;
  void *pvStack_30;
  undefined local_18;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2098;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_74;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff84;
  ExceptionList = &local_c;
  iVar3 = FUN_00a283d0(*(undefined4 *)(param_1 + 0x2c),*(undefined4 *)(param_1 + 0x30),0);
  if (iVar3 != 0) {
    uVar1 = *(undefined4 *)(iVar3 + 0x10);
    FUN_0092bd60(param_2,*(undefined4 *)(param_1_00 + 0x40));
    local_18 = 1;
    local_74[0] = wxRibbonBarEvent::vftable;
    local_4 = 0;
    local_6c = param_1_00;
    local_14 = uVar1;
    (**(code **)(**(int **)(param_1_00 + 0x70) + 0x18))(local_74,uVar2);
    local_4 = 0xffffffff;
    _free(pvStack_30);
    if (7 < uStack_34) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_48);
    }
    uStack_34 = 7;
    uStack_38 = 0;
    uStack_48 = uStack_48 & 0xffff0000;
    local_74[0] = wxObject::vftable;
    FUN_0083e850();
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __fastcall FUN_00a29fe0(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(100);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a2df(param_1);
    *puVar1 = wxNotifyEvent::vftable;
    *(undefined *)(puVar1 + 0x17) = *(undefined *)(param_1 + 0x5c);
    *puVar1 = wxRibbonBarEvent::vftable;
    puVar1[0x18] = *(undefined4 *)(param_1 + 0x60);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



void __thiscall FUN_00a2a060(int param_1_00,int *param_1)

{
  void **ppvVar1;
  int iVar2;
  int unaff_EBX;
  undefined *puStack_ac;
  undefined **local_94;
  int local_90;
  int local_8c;
  undefined4 local_88;
  undefined4 local_84;
  undefined4 local_80;
  int *local_7c;
  undefined auStack_78 [4];
  undefined auStack_74 [4];
  undefined auStack_70 [8];
  undefined local_68;
  undefined local_67;
  undefined local_64 [12];
  uint local_58;
  uint uStack_54;
  undefined4 uStack_48;
  uint uStack_44;
  void *pvStack_40;
  void *pvStack_3c;
  void *local_34 [2];
  undefined4 uStack_2c;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0233;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_94;
  ExceptionList = &local_c;
  local_8c = 0;
  local_88 = 0;
  local_84 = 0;
  local_80 = 0;
  local_7c = param_1;
  local_68 = 0;
  local_67 = 0;
  puStack_ac = (undefined *)0xa2a0cb;
  FUN_0094bd30();
  local_4 = 0;
  puStack_ac = (undefined *)0xa2a0e1;
  FUN_004325b6();
  local_4._0_1_ = 1;
  if ((*(byte *)(param_1_00 + 0x1c4) & 1) != 0) {
    puStack_ac = (undefined *)0xa2a100;
    ppvVar1 = (void **)(**(code **)(*param_1 + 0x58))();
    local_4._0_1_ = 2;
    if (local_34 != ppvVar1) {
      puStack_ac = (undefined *)0x0;
      FID_conflict_assign(ppvVar1);
    }
    puStack_ac = (undefined *)0xa2a123;
    _free(pvStack_3c);
    if ((void *)0x7 < pvStack_40) {
                    // WARNING: Subroutine does not return
      puStack_ac = &UNK_00a2a137;
      FUN_00a3f6a1();
    }
    pvStack_40 = (void *)0x7;
    uStack_44 = 0;
    uStack_54 = uStack_54 & 0xffff0000;
  }
  local_90 = DAT_03238ccc;
  if (DAT_03238ccc != 0) {
    *(int *)(DAT_03238ccc + 4) = *(int *)(DAT_03238ccc + 4) + 1;
  }
  local_94 = wxBitmap::vftable;
  local_4 = CONCAT31(local_4._1_3_,3);
  if (((*(byte *)(param_1_00 + 0x1c4) & 2) != 0) && (&local_94 != (undefined ***)(param_1 + 0x69)))
  {
    puStack_ac = (undefined *)0xa2a194;
    FUN_0083ea60();
  }
  puStack_ac = auStack_70;
  (**(code **)(**(int **)(param_1_00 + 0x194) + 0x68))
            (local_64,param_1_00,local_34,&local_94,auStack_78,auStack_74);
  if (*(int *)(param_1_00 + 0x19c) == 0) {
    *(int *)(param_1_00 + 0x1c8) = unaff_EBX;
    *(int *)(param_1_00 + 0x1cc) = local_8c;
  }
  else {
    iVar2 = (**(code **)(**(int **)(param_1_00 + 0x194) + 0x10))(0);
    *(int *)(param_1_00 + 0x1c8) = *(int *)(param_1_00 + 0x1c8) + iVar2 + unaff_EBX;
    *(int *)(param_1_00 + 0x1cc) = *(int *)(param_1_00 + 0x1cc) + iVar2 + local_8c;
  }
  FUN_00a286c0(&puStack_ac,1);
  (**(code **)(*param_1 + 0xcc))(0);
  (**(code **)(*param_1 + 0x358))(*(undefined4 *)(param_1_00 + 0x194));
  if (*(int *)(param_1_00 + 0x19c) == 1) {
    FUN_00a289a0(0);
  }
  uStack_2c = CONCAT31(uStack_2c._1_3_,1);
  FUN_008f7630();
  _free(pvStack_40);
  if (7 < uStack_44) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_58);
  }
  uStack_44 = 7;
  uStack_48 = 0;
  local_58 = local_58 & 0xffff0000;
  uStack_2c = 0xffffffff;
  FUN_00457221();
  ExceptionList = local_34[0];
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00a2a2e0(int *param_1)

{
  int *piVar1;
  int *piVar2;
  short sVar3;
  uint uVar4;
  short *psVar5;
  undefined *puVar6;
  int iVar7;
  short *psVar8;
  uint auStack_94 [2];
  undefined4 uStack_8c;
  int *piStack_88;
  undefined auStack_84 [4];
  int iStack_80;
  uint uStack_7c;
  undefined auStack_78 [4];
  undefined auStack_74 [4];
  undefined local_70 [4];
  uint uStack_6c;
  undefined4 uStack_5c;
  uint uStack_58;
  void *pvStack_54;
  undefined auStack_4c [4];
  undefined2 uStack_48;
  uint uStack_40;
  undefined4 uStack_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  void *pvStack_2c;
  void *pvStack_28;
  undefined4 uStack_24;
  uint local_1c;
  undefined uStack_18;
  void *local_14;
  undefined4 uStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  uStack_10 = &LAB_00bf0293;
  local_14 = ExceptionList;
  local_1c = DAT_0323f878 ^ (uint)auStack_94;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffff60;
  ExceptionList = &local_14;
  auStack_94[0] = CONCAT13(1,(undefined3)auStack_94[0]);
  FUN_0094bd30(param_1);
  local_c = 0;
  piStack_88 = (int *)(**(code **)(*(int *)param_1[0x65] + 0x10))(0,uVar4);
  uStack_7c = param_1[0x67];
  auStack_94[0] = 0;
  if (uStack_7c != 0) {
    do {
      uVar4 = auStack_94[0];
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x67] <= auStack_94[0])) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar7 = *(int *)(param_1[0x68] + uVar4 * 4);
      (**(code **)(*param_1 + 0x278))(auStack_84,auStack_78);
      FUN_00a2d240(0,param_1[0x76],uStack_8c,iStack_80 - param_1[0x76]);
      (**(code **)(**(int **)(iVar7 + 0x10) + 0x360))();
      psVar8 = (short *)PTR_DAT_03236318;
      if (PTR_DAT_03236318 == (undefined *)0x0) {
        psVar8 = &DAT_00fae9c8;
      }
      uStack_48 = 0;
      uStack_34 = 7;
      uStack_38 = 0;
      psVar5 = psVar8;
      do {
        sVar3 = *psVar5;
        psVar5 = psVar5 + 1;
      } while (sVar3 != 0);
      FID_conflict_assign(psVar8,(int)psVar5 - (int)(psVar8 + 1) >> 1);
      uStack_30 = 0;
      uStack_18 = 1;
      if ((*(byte *)(param_1 + 0x71) & 1) != 0) {
        puVar6 = (undefined *)(**(code **)(**(int **)(iVar7 + 0x10) + 0x58))(local_70);
        uStack_18 = 2;
        if (auStack_4c != puVar6) {
          FID_conflict_assign(puVar6,0,0xffffffff);
        }
        _free(pvStack_54);
        if (7 < uStack_58) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_6c);
        }
        uStack_58 = 7;
        uStack_5c = 0;
        uStack_6c = uStack_6c & 0xffff0000;
      }
      auStack_94[0] = DAT_03238ccc;
      if (DAT_03238ccc != 0) {
        *(int *)(DAT_03238ccc + 4) = *(int *)(DAT_03238ccc + 4) + 1;
      }
      uStack_18 = 3;
      if (((*(byte *)(param_1 + 0x71) & 2) != 0) &&
         (puVar6 = (undefined *)(*(int *)(iVar7 + 0x10) + 0x1a4), &stack0xffffff68 != puVar6)) {
        FUN_0083ea60(puVar6);
      }
      piVar1 = (int *)(iVar7 + 0x14);
      piVar2 = (int *)(iVar7 + 0x20);
      piStack_88 = piVar1;
      (**(code **)(*(int *)param_1[0x65] + 0x68))
                (&uStack_7c,param_1,auStack_4c,&stack0xffffff68,piVar1,iVar7 + 0x18,iVar7 + 0x1c,
                 piVar2);
      if (auStack_94[0] == 0) {
        param_1[0x72] = *piVar1;
        param_1[0x73] = *piVar2;
      }
      else {
        param_1[0x72] = (int)piStack_88 + param_1[0x72] + *piVar1;
        param_1[0x73] = (int)piStack_88 + param_1[0x73] + *piVar2;
      }
      uStack_10._0_1_ = 1;
      FUN_008f7630();
      uStack_10 = (undefined *)((uint)uStack_10._1_3_ << 8);
      _free(pvStack_28);
      if ((void *)0x7 < pvStack_2c) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_40);
      }
      auStack_94[0] = auStack_94[0] + 1;
      pvStack_2c = (void *)0x7;
      uStack_30 = 0;
      uStack_40 = uStack_40 & 0xffff0000;
    } while (auStack_94[0] < uStack_7c);
  }
  iVar7 = (**(code **)(*(int *)param_1[0x65] + 0x6c))(auStack_74,param_1,param_1 + 0x66);
  param_1[0x76] = iVar7;
  FUN_00a28540();
  FUN_00a28ad0();
  (**(code **)(*param_1 + 0x15c))(1,0);
  uStack_24 = 0xffffffff;
  FUN_00457221();
  ExceptionList = pvStack_2c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00a2a630(int *param_1)

{
  uint uVar1;
  void *pvVar2;
  undefined4 uVar3;
  int unaff_retaddr;
  uint local_30 [4];
  undefined4 uStack_20;
  uint uStack_1c;
  void *pvStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf02e3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_004325b6(L"wxRibbonBar");
  local_4 = 0;
  (**(code **)(*param_1 + 0x5c))(local_30,uVar1);
  puStack_8 = (undefined *)0xffffffff;
  _free(pvStack_18);
  if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_30[0]);
  }
  param_1[0x71] = unaff_retaddr;
  uStack_1c = 7;
  uStack_20 = 0;
  local_30[0] = local_30[0] & 0xffff0000;
  param_1[0x72] = 0;
  param_1[0x73] = 0;
  param_1[0x74] = 0x32;
  param_1[0x75] = 0x14;
  param_1[0x76] = 0x14;
  param_1[0x77] = 0;
  param_1[0x78] = -1;
  param_1[0x79] = -1;
  param_1[0x7a] = 0;
  param_1[0x7b] = 0;
  *(undefined *)(param_1 + 0x7c) = 0;
  *(undefined *)((int)param_1 + 0x1f1) = 1;
  if (param_1[0x65] == 0) {
    pvVar2 = operator_new(0x628);
    puStack_8 = (undefined *)0x1;
    if (pvVar2 == (void *)0x0) {
      uVar3 = 0;
    }
    else {
      uVar3 = FUN_00a3b070(1);
    }
    puStack_8 = (undefined *)0xffffffff;
    (**(code **)(*param_1 + 0x358))(uVar3);
  }
  (**(code **)(*param_1 + 0x184))(2);
  ExceptionList = pvStack_14;
  return;
}



undefined4
FUN_00a2a780(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  char cVar1;
  uint uVar2;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  FUN_0043c211("control");
  local_4 = 0;
  cVar1 = FUN_00a30b40(param_1,param_2,param_3,param_4,0x200000,&DAT_032c0398,local_30);
  local_4 = 0xffffffff;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar2);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  if (cVar1 == '\0') {
    ExceptionList = local_c;
    return 0;
  }
  FUN_00a2a630(param_5);
  ExceptionList = local_c;
  return 1;
}



undefined ** FUN_00a2a870(void)

{
  return &PTR_u_wxRibbonButtonBarEvent_0323f63c;
}



undefined ** FUN_00a2a880(void)

{
  return &PTR_u_wxRibbonButtonBar_0323f654;
}



undefined ** FUN_00a2a890(void)

{
  return &PTR_PTR_00d9f5d0;
}



undefined * FUN_00a2a8a0(void)

{
  return &DAT_032eae68;
}



void __thiscall FUN_00a2a980(int param_1_00,int param_1,int param_2,undefined4 param_3)

{
  undefined *puVar1;
  undefined uVar2;
  
  puVar1 = (undefined *)(param_2 * 0x2c + 0x68 + param_1);
  if (*(int *)(param_1_00 + 0x194) != 0) {
    uVar2 = (**(code **)(**(int **)(param_1_00 + 0x194) + 0x88))
                      (param_3,param_1_00,*(undefined4 *)(param_1 + 0xf4),param_2,param_1,
                       *(undefined4 *)(param_1_00 + 0x1c0),*(undefined4 *)(param_1_00 + 0x1c4),
                       *(undefined4 *)(param_1_00 + 0x1c8),*(undefined4 *)(param_1_00 + 0x1cc),
                       puVar1 + 4,puVar1 + 0xc,puVar1 + 0x1c);
    *puVar1 = uVar2;
    return;
  }
  *puVar1 = 0;
  return;
}



void __fastcall FUN_00a2aa70(int *param_1)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  
  uVar1 = param_1[3];
  uVar5 = 0;
  *param_1 = 0;
  param_1[1] = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[3] <= uVar5)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar2 = *(int **)(param_1[4] + uVar5 * 4);
      iVar4 = *piVar2 + *(int *)(piVar2[3] * 0x2c + 0x6c + piVar2[2]);
      iVar3 = piVar2[1] + *(int *)(piVar2[3] * 0x2c + 0x70 + piVar2[2]);
      if (*param_1 < iVar4) {
        *param_1 = iVar4;
      }
      if (param_1[1] < iVar3) {
        param_1[1] = iVar3;
      }
      uVar5 = uVar5 + 1;
    } while (uVar5 < uVar1);
  }
  return;
}



int __thiscall FUN_00a2ab00(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  
  if (param_1 == 0) {
    return 0;
  }
  uVar1 = *(uint *)(param_1_00 + 0xc);
  uVar3 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0xc) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(param_1_00 + 0x10) + uVar3 * 4);
      if (*(int *)(iVar2 + 8) == *(int *)(param_1 + 8)) {
        return iVar2;
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar1);
  }
  return 0;
}



undefined4 __thiscall FUN_00a2ab70(int *param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = param_1_00[0x6a];
  uVar2 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x6a] <= uVar2)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      if (*(int *)(*(int *)(param_1_00[0x6b] + uVar2 * 4) + 0xf0) == param_1) {
        *(undefined *)(param_1_00 + 0x75) = 0;
        FUN_0086a1e0(uVar2,1);
        (**(code **)(*param_1_00 + 0x360))();
        (**(code **)(*param_1_00 + 0x15c))(1,0);
        return 1;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < uVar1);
  }
  return 0;
}



void __thiscall FUN_00a2ac20(int *param_1_00,int param_1,char param_2)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = param_1_00[0x6a];
  uVar3 = 0;
  if (uVar2 != 0) {
    while( true ) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x6a] <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(param_1_00[0x6b] + uVar3 * 4);
      if (*(int *)(iVar1 + 0xf0) == param_1) break;
      uVar3 = uVar3 + 1;
      if (uVar2 <= uVar3) {
        return;
      }
    }
    uVar2 = *(uint *)(iVar1 + 0xf8);
    if (param_2 == '\0') {
      if ((char)uVar2 < '\0') {
        return;
      }
      uVar2 = uVar2 | 0x80;
    }
    else {
      if (-1 < (char)uVar2) {
        return;
      }
      uVar2 = uVar2 & 0xffffff7f;
    }
    *(uint *)(iVar1 + 0xf8) = uVar2;
    (**(code **)(*param_1_00 + 0x15c))(1,0);
  }
  return;
}



void __thiscall FUN_00a2acd0(int *param_1_00,int param_1,char param_2)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = param_1_00[0x6a];
  uVar3 = 0;
  if (uVar2 != 0) {
    while( true ) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x6a] <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar1 = *(int *)(param_1_00[0x6b] + uVar3 * 4);
      if (*(int *)(iVar1 + 0xf0) == param_1) break;
      uVar3 = uVar3 + 1;
      if (uVar2 <= uVar3) {
        return;
      }
    }
    uVar2 = *(uint *)(iVar1 + 0xf8);
    if (param_2 == '\0') {
      if ((uVar2 & 0x100) == 0) {
        return;
      }
      uVar2 = uVar2 & 0xfffffeff;
    }
    else {
      if ((uVar2 & 0x100) != 0) {
        return;
      }
      uVar2 = uVar2 | 0x100;
    }
    *(uint *)(iVar1 + 0xf8) = uVar2;
    (**(code **)(*param_1_00 + 0x15c))(1,0);
  }
  return;
}



void __thiscall FUN_00a2ad90(int *param_1_00,int param_1)

{
  uint uVar1;
  undefined4 uVar2;
  code *pcVar3;
  uint uVar4;
  uint uVar5;
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bef5d8;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  if (param_1 != param_1_00[0x65]) {
    FUN_00970990(param_1);
    FUN_0094bd30(param_1_00);
    uVar1 = param_1_00[0x6a];
    uVar5 = 0;
    local_4 = 0;
    if (uVar1 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x6a] <= uVar5)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0,uVar4);
        }
        uVar2 = *(undefined4 *)(param_1_00[0x6b] + uVar5 * 4);
        FUN_00a2a980(uVar2,0,local_18);
        FUN_00a2a980(uVar2,1,local_18);
        FUN_00a2a980(uVar2,2,local_18);
        uVar5 = uVar5 + 1;
      } while (uVar5 < uVar1);
    }
    pcVar3 = *(code **)(*param_1_00 + 0x360);
    *(undefined *)(param_1_00 + 0x75) = 0;
    (*pcVar3)();
    local_4 = 0xffffffff;
    FUN_00457221();
  }
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a2ae90(int param_1_00,int *param_1,int param_2,int param_3,int param_4)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  bool bVar5;
  uint uVar6;
  int iVar7;
  
  uVar1 = *(uint *)(param_1_00 + 0x19c);
  uVar6 = 0;
  iVar7 = param_3;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x19c) <= uVar6)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar2 = *(int **)(*(int *)(param_1_00 + 0x1a0) + uVar6 * 4);
      iVar3 = *piVar2;
      iVar4 = piVar2[1];
      if (param_2 == 4) {
        if ((iVar3 < param_3) && (iVar7 = iVar3, iVar4 <= param_4)) break;
      }
      else if (param_2 == 8) {
        bVar5 = iVar3 <= param_3;
        iVar3 = param_3;
        if (bVar5) goto joined_r0x00a2af2e;
      }
      else {
        iVar7 = param_3;
        if (param_2 != 0xc) break;
        if (iVar3 < param_3) {
joined_r0x00a2af2e:
          if (iVar4 < param_4) {
            *param_1 = iVar3;
            param_1[1] = iVar4;
            return;
          }
        }
      }
      uVar6 = uVar6 + 1;
      if (uVar1 <= uVar6) {
        *param_1 = param_3;
        param_1[1] = param_4;
        return;
      }
    } while( true );
  }
  *param_1 = iVar7;
  param_1[1] = param_4;
  return;
}



void __thiscall FUN_00a2b040(int *param_1_00,int param_1)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  
  iVar6 = *(int *)(param_1 + 0x28);
  iVar1 = *(int *)(param_1 + 0x2c);
  uVar2 = param_1_00[0x67];
  uVar7 = 0;
  param_1_00[0x74] = uVar2 - 1;
  if (uVar2 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x67] <= uVar7)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar3 = *(int **)(param_1_00[0x68] + uVar7 * 4);
      iVar4 = *piVar3;
      iVar5 = piVar3[1];
      if ((iVar4 <= iVar6) && (iVar5 <= iVar1)) {
        param_1_00[0x6e] = (iVar6 - iVar4) / 2;
        param_1_00[0x6f] = (iVar1 - iVar5) / 2;
        param_1_00[0x74] = uVar7;
        break;
      }
      uVar7 = uVar7 + 1;
    } while (uVar7 < uVar2);
  }
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x67] <= (uint)param_1_00[0x74]))
  {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  iVar6 = FUN_00a2ab00(param_1_00[0x6c]);
  param_1_00[0x6c] = iVar6;
  (**(code **)(*param_1_00 + 0x15c))(1,0);
  return;
}



void __thiscall FUN_00a2b210(int *param_1_00,uint param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  char cVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  uint uVar9;
  int iVar10;
  uint local_2c;
  int *local_28;
  
  iVar8 = *(int *)(param_1 + 0x2c);
  iVar7 = *(int *)(param_1 + 0x30);
  uVar9 = param_1_00[0x74];
  local_28 = (int *)0x0;
  param_1 = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x67] <= uVar9)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  iVar6 = *(int *)(param_1_00[0x68] + uVar9 * 4);
  uVar9 = *(uint *)(iVar6 + 0xc);
  local_2c = 0;
  if (uVar9 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar6 + 0xc) <= local_2c)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar1 = *(int **)(*(int *)(iVar6 + 0x10) + local_2c * 4);
      iVar10 = piVar1[1];
      iVar2 = param_1_00[0x6e];
      iVar3 = *piVar1;
      iVar4 = param_1_00[0x6f];
      cVar5 = FUN_008f7580(iVar8,iVar7);
      if (cVar5 != '\0') {
        if (-1 < (char)*(uint *)(piVar1[2] + 0xf8)) {
          param_1 = *(uint *)(piVar1[2] + 0xf8) & 0xffffffe7;
          iVar10 = iVar7 - (iVar10 + iVar4);
          iVar6 = iVar8 - (iVar2 + iVar3);
          cVar5 = FUN_008f7580(iVar6,iVar10);
          if (cVar5 != '\0') {
            param_1 = param_1 | 8;
          }
          cVar5 = FUN_008f7580(iVar6,iVar10);
          local_28 = piVar1;
          if (cVar5 != '\0') {
            param_1 = param_1 | 0x10;
          }
        }
        break;
      }
      local_2c = local_2c + 1;
    } while (local_2c < uVar9);
  }
  piVar1 = (int *)param_1_00[0x6c];
  if ((local_28 != piVar1) || ((piVar1 != (int *)0x0 && (param_1 != *(uint *)(piVar1[2] + 0xf8)))))
  {
    if (piVar1 != (int *)0x0) {
      *(uint *)(piVar1[2] + 0xf8) = *(uint *)(piVar1[2] + 0xf8) & 0xffffffe7;
    }
    param_1_00[0x6c] = (int)local_28;
    if (local_28 != (int *)0x0) {
      *(uint *)(local_28[2] + 0xf8) = param_1;
    }
    (**(code **)(*param_1_00 + 0x15c))(0,0);
  }
  piVar1 = (int *)param_1_00[0x6d];
  if ((piVar1 != (int *)0x0) && (*(char *)((int)param_1_00 + 0x1d5) == '\0')) {
    iVar6 = param_1_00[0x6f];
    iVar10 = piVar1[1];
    iVar2 = param_1_00[0x6e];
    iVar3 = *piVar1;
    uVar9 = *(uint *)(piVar1[2] + 0xf8) & 0xffffff9f;
    cVar5 = FUN_008f7580(iVar8,iVar7);
    if (cVar5 != '\0') {
      iVar7 = iVar7 - (iVar6 + iVar10);
      iVar8 = iVar8 - (iVar2 + iVar3);
      cVar5 = FUN_008f7580(iVar8,iVar7);
      if (cVar5 != '\0') {
        uVar9 = uVar9 | 0x20;
      }
      cVar5 = FUN_008f7580(iVar8,iVar7);
      if (cVar5 != '\0') {
        uVar9 = uVar9 | 0x40;
      }
    }
    if (uVar9 != *(uint *)(*(int *)(param_1_00[0x6d] + 8) + 0xf8)) {
      *(uint *)(*(int *)(param_1_00[0x6d] + 8) + 0xf8) = uVar9;
      (**(code **)(*param_1_00 + 0x15c))(0,0);
    }
  }
  return;
}



void __thiscall FUN_00a2b4d0(int *param_1_00,uint param_1)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  char cVar8;
  int iVar9;
  int iVar10;
  
  iVar10 = *(int *)(param_1 + 0x30);
  iVar9 = *(int *)(param_1 + 0x2c);
  uVar1 = param_1_00[0x74];
  param_1_00[0x6d] = 0;
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x67] <= uVar1)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  iVar2 = *(int *)(param_1_00[0x68] + uVar1 * 4);
  uVar1 = *(uint *)(iVar2 + 0xc);
  param_1 = 0;
  if (uVar1 != 0) {
    while( true ) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 0xc) <= param_1)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar3 = *(int **)(*(int *)(iVar2 + 0x10) + param_1 * 4);
      iVar4 = *piVar3;
      iVar5 = piVar3[1];
      iVar6 = param_1_00[0x6f];
      iVar7 = param_1_00[0x6e];
      cVar8 = FUN_008f7580(iVar9,iVar10);
      if (cVar8 != '\0') break;
      param_1 = param_1 + 1;
      if (uVar1 <= param_1) {
        return;
      }
    }
    if ((*(byte *)(piVar3[2] + 0xf8) & 0x80) == 0) {
      iVar10 = iVar10 - (iVar5 + iVar6);
      iVar9 = iVar9 - (iVar4 + iVar7);
      param_1_00[0x6d] = (int)piVar3;
      param_1 = 0;
      cVar8 = FUN_008f7580(iVar9,iVar10);
      if (cVar8 == '\0') {
        cVar8 = FUN_008f7580(iVar9,iVar10);
        if (cVar8 != '\0') {
          param_1 = 0x40;
        }
      }
      else {
        param_1 = 0x20;
      }
      *(uint *)(piVar3[2] + 0xf8) = *(uint *)(piVar3[2] + 0xf8) | param_1;
      (**(code **)(*param_1_00 + 0x15c))(0,0);
    }
  }
  return;
}



undefined4 FUN_00a2b720(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined **local_14 [2];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf03c1;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  FUN_008f3b70(local_14);
  local_4 = 1;
  FUN_009055a0(param_3,param_4,1);
  FUN_00414f38(local_14,0xffffffff);
  local_4 = local_4 & 0xffffff00;
  local_14[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  ExceptionList = local_c;
  return param_1;
}



undefined4 FUN_00a2b7c0(undefined4 param_1)

{
  uint uVar1;
  undefined4 uVar2;
  undefined **local_1c [2];
  undefined **local_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0409;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  FUN_008f3b70(local_1c);
  local_4 = 1;
  uVar2 = FUN_00903890(local_14);
  local_4._0_1_ = 2;
  FUN_00414f38(uVar2,0xffffffff);
  local_4._0_1_ = 1;
  local_14[0] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4 = (uint)local_4._1_3_ << 8;
  local_1c[0] = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = local_c;
  return param_1;
}



void __fastcall FUN_00a2b870(int *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  int local_50;
  undefined4 local_4c;
  undefined4 uStack_48;
  undefined **appuStack_44 [3];
  int aiStack_38 [6];
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0450;
  local_c = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  FUN_00957210(param_1);
  uVar6 = 0;
  local_4 = 0;
  (**(code **)(*param_1 + 0x278))(&local_4c,&local_50,uVar5);
  uStack_48 = 0;
  appuStack_44[0] = (undefined **)0x0;
  (**(code **)(*(int *)param_1[0x65] + 0x54))(aiStack_38,param_1,&uStack_48);
  uVar5 = param_1[0x74];
  if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x67] <= uVar5)) {
    FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                 "uiIndex < m_nCount",0);
  }
  iVar2 = *(int *)(param_1[0x68] + uVar5 * 4);
  uVar5 = *(uint *)(iVar2 + 0xc);
  if (uVar5 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 0xc) <= uVar6)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar3 = *(int *)(*(int *)(iVar2 + 0x10) + uVar6 * 4);
      iVar4 = *(int *)(iVar3 + 8);
      iVar8 = iVar4 + 0x48;
      iVar7 = iVar4 + 0x58;
      if ((*(byte *)(iVar4 + 0xf8) & 0x80) != 0) {
        iVar8 = iVar4 + 0x50;
        iVar7 = iVar4 + 0x60;
      }
      local_50 = *(int *)(iVar3 + 4) + param_1[0x6f];
      puVar1 = (undefined4 *)(iVar4 + 0x6c + *(int *)(iVar3 + 0xc) * 0x2c);
      local_4c = *puVar1;
      uStack_48 = puVar1[1];
      (**(code **)(*(int *)param_1[0x65] + 0x58))
                (appuStack_44,param_1,&stack0xffffffac,*(undefined4 *)(iVar4 + 0xf4),
                 *(uint *)(iVar4 + 0xf8) | *(uint *)(iVar3 + 0xc),iVar4,iVar8,iVar7);
      uVar6 = uVar6 + 1;
    } while (uVar6 < uVar5);
  }
  appuStack_44[0] = wxBufferedPaintDC::vftable;
  uStack_18 = 2;
  FUN_009ba2f0();
  uStack_18 = CONCAT31(uStack_18._1_3_,1);
  FUN_00457221();
  appuStack_44[0] = wxBufferedDC::vftable;
  uStack_18 = 3;
  if (aiStack_38[0] != 0) {
    FUN_009ba2f0();
  }
  uStack_18 = 0xffffffff;
  FUN_00457221();
  ExceptionList = pvStack_20;
  return;
}



void __fastcall FUN_00a2ba80(int *param_1)

{
  code *pcVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be860b;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  param_1[0x70] = 0x20;
  param_1[0x71] = 0x20;
  param_1[0x72] = 0x10;
  param_1[0x73] = 0x10;
  puVar3 = (undefined4 *)operator_new(0x14);
  local_4 = 0;
  if (puVar3 == (undefined4 *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    *puVar3 = 0;
    puVar3[1] = 0;
    FUN_0086a600(uVar2);
    puVar4 = puVar3;
  }
  puVar4[1] = 0x14;
  local_4 = 0xffffffff;
  *puVar4 = 0x14;
  FUN_0086a400(puVar4,1);
  param_1[0x6e] = 0;
  pcVar1 = *(code **)(*param_1 + 0x184);
  param_1[0x6f] = 0;
  param_1[0x74] = 0;
  param_1[0x6c] = 0;
  param_1[0x6d] = 0;
  *(undefined *)((int)param_1 + 0x1d5) = 0;
  (*pcVar1)(2);
  ExceptionList = puVar3;
  return;
}



undefined4 __thiscall FUN_00a2bb70(int param_1_00,int *param_1,uint param_2,uint *param_3)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  bool bVar4;
  void **ppvVar5;
  uint uVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 *puVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  uint uVar14;
  uint uVar15;
  int local_24;
  int local_20;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0483;
  uVar6 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  uVar1 = *(uint *)(param_1_00 + 0x1a8);
  iVar12 = 0;
  iVar13 = 0;
  local_20 = 0;
  local_24 = 0;
  ppvVar5 = &local_c;
  uVar15 = param_2 + 1;
  local_c = ExceptionList;
  while (ExceptionList = ppvVar5, uVar15 != 0) {
    uVar14 = uVar15 - 1;
    if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x1a8) <= uVar14)) {
      FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                   "uiIndex < m_nCount",0,uVar6);
    }
    iVar2 = *(int *)(*(int *)(param_1_00 + 0x1ac) + uVar14 * 4);
    if (*(char *)(iVar2 + 0xc0) == '\0') {
      if (*(char *)(iVar2 + 0x94) == '\0') {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(iVar2 + 0x68) == '\0')) {
          FUN_008402e0("..\\..\\src\\ribbon\\buttonbar.cpp",0x51,
                       "wxRibbonButtonBarButtonBase::GetLargestSize",
                       "sizes[wxRIBBON_BUTTONBAR_BUTTON_SMALL].is_supported",0,uVar6);
        }
        iVar7 = 0;
      }
      else {
        iVar7 = 1;
      }
    }
    else {
      iVar7 = 2;
    }
    iVar10 = iVar7 * 0x2c;
    iVar11 = *(int *)(iVar10 + 0x70 + iVar2);
    if (iVar13 <= iVar11) {
      iVar13 = iVar11;
    }
    iVar11 = 1;
    do {
      if (iVar7 == 1) {
LAB_00a2bc7e:
        if (*(char *)(iVar2 + 0x68) == '\0') goto LAB_00a2bf03;
        iVar7 = 0;
      }
      else {
        if (iVar7 != 2) goto LAB_00a2bf03;
        if (*(char *)(iVar2 + 0x94) == '\0') goto LAB_00a2bc7e;
        iVar7 = 1;
      }
      iVar11 = iVar11 + -1;
    } while (0 < iVar11);
    iVar11 = *(int *)(iVar7 * 0x2c + 0x6c + iVar2);
    iVar12 = *(int *)(iVar7 * 0x2c + 0x70 + iVar2) + iVar12;
    if (iVar11 < local_20) {
      iVar11 = local_20;
    }
    if (iVar13 < iVar12) break;
    local_24 = *(int *)(iVar10 + 0x6c + iVar2) + local_24;
    ppvVar5 = (void **)ExceptionList;
    uVar15 = uVar14;
    local_20 = iVar11;
  }
  if ((uVar15 < param_2) && (local_20 < local_24)) {
    if (param_3 != (uint *)0x0) {
      *param_3 = uVar15;
    }
    param_3 = (uint *)operator_new(0x14);
    local_4 = 0;
    if (param_3 == (uint *)0x0) {
      param_3 = (uint *)0x0;
    }
    else {
      *param_3 = 0;
      ((int *)param_3)[1] = 0;
      FUN_0086a600();
    }
    uVar6 = param_1[3];
    local_4 = 0xffffffff;
    if (param_3[2] < uVar6) {
      FUN_0086a310(uVar6);
    }
    uVar14 = 0;
    if (uVar6 != 0) {
      do {
        uVar8 = FUN_009cde80(uVar14);
        FUN_0099a6a0(uVar8,1);
        uVar14 = uVar14 + 1;
      } while (uVar14 < uVar6);
    }
    puVar9 = (undefined4 *)FUN_009cde80(uVar15);
    uVar8 = *puVar9;
    local_10 = puVar9[1];
    bVar4 = false;
    if (uVar15 == 0) {
      bVar4 = true;
    }
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_3[3] <= uVar15)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      puVar9 = *(undefined4 **)(param_3[4] + uVar15 * 4);
      iVar12 = 1;
      do {
        if (puVar9[3] == 1) {
LAB_00a2bde0:
          if (*(char *)(puVar9[2] + 0x68) == '\0') break;
          puVar9[3] = 0;
        }
        else {
          if (puVar9[3] != 2) break;
          if (*(char *)(puVar9[2] + 0x94) == '\0') goto LAB_00a2bde0;
          puVar9[3] = 1;
        }
        iVar12 = iVar12 + -1;
      } while (0 < iVar12);
      *puVar9 = uVar8;
      puVar9[1] = local_10;
      local_10 = local_10 + *(int *)(puVar9[3] * 0x2c + 0x70 + puVar9[2]);
      uVar15 = uVar15 + 1;
    } while (uVar15 <= param_2);
    for (; uVar15 < uVar1; uVar15 = uVar15 + 1) {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (param_3[3] <= uVar15)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      piVar3 = *(int **)(param_3[4] + uVar15 * 4);
      *piVar3 = *piVar3 - (local_24 - local_20);
    }
    FUN_00a2aa70();
    if ((*param_1 <= (int)*param_3) || (param_1[1] < (int)param_3[1])) {
      local_4 = 1;
      FUN_0086cea0();
      FUN_0086a880();
      local_4 = 0xffffffff;
      FUN_0086aa30();
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(param_3);
    }
    if (bVar4) {
      param_3[1] = param_1[1];
    }
    FUN_0086a400(param_3,1);
    uVar8 = 1;
  }
  else {
LAB_00a2bf03:
    uVar8 = 0;
  }
  ExceptionList = local_c;
  return uVar8;
}



void __fastcall FUN_00a2bf20(int param_1)

{
  uint *puVar1;
  uint uVar2;
  char cVar3;
  uint uVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  uint local_24;
  int *local_20;
  int local_1c;
  undefined4 local_18;
  int local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf04ab;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  if ((*(char *)(param_1 + 0x1d4) == '\0') && (uVar8 = 0, *(int *)(param_1 + 0x194) != 0)) {
    if (*(int *)(param_1 + 0x1b0) != 0) {
      puVar1 = (uint *)(*(int *)(*(int *)(param_1 + 0x1b0) + 8) + 0xf8);
      *puVar1 = *puVar1 & 0xffffffe7;
      *(undefined4 *)(param_1 + 0x1b0) = 0;
    }
    if (*(int *)(param_1 + 0x1b4) != 0) {
      puVar1 = (uint *)(*(int *)(*(int *)(param_1 + 0x1b4) + 8) + 0xf8);
      *puVar1 = *puVar1 & 0xffffff9f;
      *(undefined4 *)(param_1 + 0x1b4) = 0;
    }
    uVar2 = *(uint *)(param_1 + 0x19c);
    if (uVar2 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x19c) <= uVar8)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0,uVar4);
        }
        iVar7 = *(int *)(*(int *)(param_1 + 0x1a0) + uVar8 * 4);
        if (iVar7 != 0) {
          FUN_00a15c90();
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(iVar7);
        }
        uVar8 = uVar8 + 1;
      } while (uVar8 < uVar2);
    }
    FUN_0086a880();
    local_24 = *(uint *)(param_1 + 0x1a8);
    piVar5 = (int *)operator_new(0x14);
    uVar4 = 0;
    local_4 = 0;
    local_20 = piVar5;
    if (piVar5 == (int *)0x0) {
      piVar5 = (int *)0x0;
    }
    else {
      *piVar5 = 0;
      piVar5[1] = 0;
      FUN_0086a600();
    }
    iVar7 = 0;
    local_4 = 0xffffffff;
    piVar5[1] = 0;
    if (local_24 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x1a8) <= uVar4)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar6 = *(int *)(*(int *)(param_1 + 0x1ac) + uVar4 * 4);
        local_18 = 0;
        local_1c = iVar7;
        local_14 = iVar6;
        if (*(char *)(iVar6 + 0xc0) == '\0') {
          if (*(char *)(iVar6 + 0x94) == '\0') {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(char *)(iVar6 + 0x68) == '\0')) {
              FUN_008402e0("..\\..\\src\\ribbon\\buttonbar.cpp",0x51,
                           "wxRibbonButtonBarButtonBase::GetLargestSize",
                           "sizes[wxRIBBON_BUTTONBAR_BUTTON_SMALL].is_supported",0);
            }
            local_10 = 0;
          }
          else {
            local_10 = 1;
          }
        }
        else {
          local_10 = 2;
        }
        iVar7 = iVar7 + *(int *)(local_10 * 0x2c + 0x6c + iVar6);
        iVar6 = *(int *)(local_10 * 0x2c + iVar6 + 0x70);
        if (iVar6 < piVar5[1]) {
          iVar6 = piVar5[1];
        }
        piVar5[1] = iVar6;
        FUN_0099a6a0(&local_1c,1);
        uVar4 = uVar4 + 1;
      } while (uVar4 < local_24);
    }
    uVar4 = local_24;
    *piVar5 = iVar7;
    FUN_0086a400(piVar5,1);
    local_24 = uVar4;
    if (1 < uVar4) {
      do {
        uVar8 = local_24 - 1;
        uVar4 = *(uint *)(param_1 + 0x19c) - 1;
        local_24 = uVar8;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1 + 0x19c) <= uVar4)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        cVar3 = FUN_00a2bb70(*(undefined4 *)(*(int *)(param_1 + 0x1a0) + uVar4 * 4),uVar8,&local_24)
        ;
      } while ((cVar3 != '\0') && (local_24 != 0));
    }
  }
  ExceptionList = local_c;
  return;
}



undefined4 * FUN_00a2c1c0(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x60);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0092bd60(DAT_032bd44c,0);
    *puVar1 = wxRibbonButtonBarEvent::vftable;
    puVar1[0x17] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __fastcall FUN_00a2c240(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf0504;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 4;
  FUN_008f7630(DAT_0323f878 ^ (uint)&stack0xffffffec);
  local_4._0_1_ = 3;
  FUN_008f7630();
  local_4._0_1_ = 2;
  FUN_008f7630();
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_008f7630();
  _free(*(void **)(param_1 + 0x40));
  if (7 < *(uint *)(param_1 + 0x3c)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x28));
  }
  *(undefined4 *)(param_1 + 0x3c) = 7;
  *(undefined4 *)(param_1 + 0x38) = 0;
  *(undefined2 *)(param_1 + 0x28) = 0;
  _free(*(void **)(param_1 + 0x1c));
  if (7 < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00a2c320(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined2 *)(param_1 + 4) = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0;
  *(undefined4 *)(param_1 + 0x3c) = 7;
  *(undefined4 *)(param_1 + 0x38) = 0;
  *(undefined2 *)(param_1 + 0x28) = 0;
  *(undefined4 *)(param_1 + 0x40) = 0;
  *(undefined ***)(param_1 + 0x48) = wxBitmap::vftable;
  *(undefined4 *)(param_1 + 0x4c) = 0;
  *(undefined ***)(param_1 + 0x50) = wxBitmap::vftable;
  *(undefined4 *)(param_1 + 0x54) = 0;
  *(undefined ***)(param_1 + 0x58) = wxBitmap::vftable;
  *(undefined4 *)(param_1 + 0x5c) = 0;
  *(undefined ***)(param_1 + 0x60) = wxBitmap::vftable;
  *(undefined4 *)(param_1 + 100) = 0;
  iVar2 = 2;
  puVar1 = (undefined4 *)(param_1 + 0x78);
  do {
    puVar1[-3] = 0;
    puVar1[-2] = 0;
    puVar1[-1] = 0;
    *puVar1 = 0;
    puVar1[1] = 0;
    puVar1[2] = 0;
    puVar1[3] = 0;
    puVar1[4] = 0;
    puVar1[5] = 0;
    puVar1[6] = 0;
    puVar1 = puVar1 + 0xb;
    iVar2 = iVar2 + -1;
  } while (-1 < iVar2);
  return;
}



undefined __fastcall FUN_00a2c3a0(int param_1)

{
  if (*(char *)(param_1 + 0x1d4) == '\0') {
    FUN_00a2bf20();
    *(undefined *)(param_1 + 0x1d4) = 1;
    return 1;
  }
  return 1;
}



void __thiscall FUN_00a2c3c0(int *param_1_00,int param_1)

{
  uint *puVar1;
  int iVar2;
  int *piVar3;
  char cVar4;
  uint uVar5;
  undefined4 uVar6;
  int iVar7;
  int iVar8;
  int local_84;
  int local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined4 local_74;
  undefined **local_70 [2];
  int *local_68;
  uint uStack_44;
  undefined4 uStack_34;
  uint uStack_30;
  void *pvStack_2c;
  uint local_24;
  int *local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0528;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_84;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffff6c;
  ExceptionList = &local_c;
  iVar7 = *(int *)(param_1 + 0x30);
  iVar8 = *(int *)(param_1 + 0x2c);
  piVar3 = (int *)param_1_00[0x6d];
  if ((piVar3 != (int *)0x0) && ((*(byte *)(piVar3[2] + 0xf8) & 0x80) == 0)) {
    local_80 = param_1_00[0x6f] + piVar3[1];
    local_84 = *piVar3 + param_1_00[0x6e];
    iVar2 = piVar3[3] * 0x2c + 0x68 + piVar3[2];
    local_7c = *(undefined4 *)(iVar2 + 4);
    local_78 = *(undefined4 *)(iVar2 + 8);
    cVar4 = FUN_008f7580(iVar8,iVar7);
    if (cVar4 != '\0') {
      iVar7 = iVar7 - local_80;
      iVar8 = iVar8 - local_84;
      local_74 = *(undefined4 *)(*(int *)(param_1_00[0x6d] + 8) + 0xf0);
      cVar4 = FUN_008f7580(iVar8,iVar7);
      uVar6 = DAT_032eae60;
      if ((cVar4 != '\0') ||
         (cVar4 = FUN_008f7580(iVar8,iVar7), uVar6 = DAT_032eae64, cVar4 != '\0')) {
        FUN_0092bd60(uVar6,local_74);
        local_70[0] = wxRibbonButtonBarEvent::vftable;
        local_4 = 0;
        if (*(int *)(*(int *)(param_1_00[0x6d] + 8) + 0xf4) == 4) {
          puVar1 = (uint *)(*(int *)(param_1_00[0x6d] + 8) + 0xf8);
          *puVar1 = *puVar1 ^ 0x100;
          local_24 = *(uint *)(*(int *)(param_1_00[0x6d] + 8) + 0xf8) & 0x100;
        }
        *(undefined *)((int)param_1_00 + 0x1d5) = 1;
        local_68 = param_1_00;
        local_14 = param_1_00;
        (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(local_70,uVar5);
        *(undefined *)((int)param_1_00 + 0x1d5) = 0;
        local_4 = 0xffffffff;
        _free(pvStack_2c);
        if (7 < uStack_30) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_44);
        }
        uStack_30 = 7;
        uStack_34 = 0;
        uStack_44 = uStack_44 & 0xffff0000;
        local_70[0] = wxObject::vftable;
        FUN_0083e850();
      }
      if (param_1_00[0x6d] != 0) {
        puVar1 = (uint *)(*(int *)(param_1_00[0x6d] + 8) + 0xf8);
        *puVar1 = *puVar1 & 0xffffff9f;
        param_1_00[0x6d] = 0;
      }
      (**(code **)(*param_1_00 + 0x15c))(0,0);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __fastcall FUN_00a2c680(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x60);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a2df(param_1);
    *puVar1 = wxRibbonButtonBarEvent::vftable;
    puVar1[0x17] = *(undefined4 *)(param_1 + 0x5c);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



undefined4 * __thiscall
FUN_00a2c6f0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  uint uVar1;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf058c;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_0043c211("control");
  local_4 = 0;
  FUN_00a29a60(param_1,param_2,param_3,param_4,0x200000,&DAT_032c0398,local_30);
  local_4._0_1_ = 2;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_2c = local_2c & 0xffff0000;
  local_18 = 7;
  local_1c = 0;
  *param_1_00 = wxRibbonButtonBar::vftable;
  FUN_0086a600(uVar1);
  local_4._0_1_ = 3;
  FUN_0086a600();
  param_1_00[0x6e] = 0;
  param_1_00[0x6f] = 0;
  param_1_00[0x70] = 0;
  param_1_00[0x71] = 0;
  param_1_00[0x72] = 0;
  param_1_00[0x73] = 0;
  local_4 = CONCAT31(local_4._1_3_,4);
  *(undefined *)(param_1_00 + 0x75) = 0;
  FUN_00a2ba80(param_5);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00a2c810(undefined4 *param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf05e4;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd8;
  ExceptionList = &local_c;
  *param_1 = wxRibbonButtonBar::vftable;
  uVar1 = param_1[0x6a];
  uVar4 = 0;
  local_4 = 2;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x6a] <= uVar4)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0,uVar3);
      }
      iVar2 = *(int *)(param_1[0x6b] + uVar4 * 4);
      if (iVar2 != 0) {
        FUN_00a2c240();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar2);
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < uVar1);
  }
  FUN_0086a880();
  uVar1 = param_1[0x67];
  uVar3 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x67] <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(param_1[0x68] + uVar3 * 4);
      if (iVar2 != 0) {
        local_4._0_1_ = 3;
        FUN_0086cea0();
        FUN_0086a880();
        local_4 = CONCAT31(local_4._1_3_,2);
        FUN_0086aa30();
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar2);
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 < uVar1);
  }
  FUN_0086a880();
  local_4._0_1_ = 1;
  FUN_0086aa30();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0086aa30();
  local_4 = 4;
  FUN_0086aa30();
  local_4 = 0xffffffff;
  FUN_009375f0();
  ExceptionList = local_c;
  return;
}



int __thiscall
FUN_00a2c9a0(int param_1_00,undefined4 param_1,int param_2,int *param_3,int *param_4,int param_5,
            int param_6,undefined4 param_7,int param_8,undefined4 param_9)

{
  int *piVar1;
  char cVar2;
  undefined4 uVar3;
  void *pvVar4;
  int iVar5;
  int *piVar6;
  int iVar7;
  int iStack_34;
  int iStack_30;
  undefined auStack_2c [8];
  undefined auStack_24 [16];
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00bf0638;
  local_14 = ExceptionList;
  ExceptionList = &local_14;
  if (((PTR_FUN_03235c4c != (undefined *)0x0) &&
      (cVar2 = (**(code **)(*param_3 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffc0), cVar2 == '\0')
      ) && (cVar2 = (**(code **)(*param_4 + 0x10))(), cVar2 == '\0')) {
    FUN_008402e0("..\\..\\src\\ribbon\\buttonbar.cpp",0x11b,"wxRibbonButtonBar::AddButton",
                 "bitmap.IsOk() || bitmap_small.IsOk()",0);
  }
  if (*(int *)(param_1_00 + 0x1a8) == 0) {
    cVar2 = (**(code **)(*param_3 + 0x10))();
    if (cVar2 != '\0') {
      iStack_34 = 0;
      if (param_3[1] == 0) {
        iStack_30 = 0;
      }
      else {
        iStack_30 = *(int *)(param_3[1] + 0xc);
        iStack_34 = *(int *)(param_3[1] + 8);
      }
      *(int *)(param_1_00 + 0x1c0) = iStack_34;
      *(int *)(param_1_00 + 0x1c4) = iStack_30;
      cVar2 = (**(code **)(*param_4 + 0x10))();
      if (cVar2 == '\0') {
        *(undefined4 *)(param_1_00 + 0x1c8) = *(undefined4 *)(param_1_00 + 0x1c0);
        *(undefined4 *)(param_1_00 + 0x1cc) = *(undefined4 *)(param_1_00 + 0x1c4);
        uVar3 = FUN_00a49750();
        *(undefined4 *)(param_1_00 + 0x1c8) = uVar3;
        uVar3 = FUN_00a49750();
        *(undefined4 *)(param_1_00 + 0x1cc) = uVar3;
      }
    }
    cVar2 = (**(code **)(*param_4 + 0x10))();
    if (cVar2 != '\0') {
      if (param_4[1] == 0) {
        iStack_34 = 0;
        iStack_30 = 0;
      }
      else {
        iStack_30 = *(int *)(param_4[1] + 0xc);
        iStack_34 = *(int *)(param_4[1] + 8);
      }
      *(int *)(param_1_00 + 0x1c8) = iStack_34;
      *(int *)(param_1_00 + 0x1cc) = iStack_30;
      cVar2 = (**(code **)(*param_3 + 0x10))();
      if (cVar2 == '\0') {
        *(undefined4 *)(param_1_00 + 0x1c0) = *(undefined4 *)(param_1_00 + 0x1c8);
        *(undefined4 *)(param_1_00 + 0x1c4) = *(undefined4 *)(param_1_00 + 0x1cc);
        uVar3 = FUN_00a49750();
        *(undefined4 *)(param_1_00 + 0x1c0) = uVar3;
        uVar3 = FUN_00a49750();
        *(undefined4 *)(param_1_00 + 0x1c4) = uVar3;
      }
    }
  }
  pvVar4 = operator_new(0xfc);
  if (pvVar4 == (void *)0x0) {
    iVar5 = 0;
  }
  else {
    iVar5 = FUN_00a2c320();
  }
  *(undefined4 *)(iVar5 + 0xf0) = param_1;
  if (iVar5 != param_2) {
    FID_conflict_assign(param_2,0,0xffffffff);
  }
  piVar1 = (int *)(iVar5 + 0x48);
  if (piVar1 != param_3) {
    FUN_0083ea60(param_3);
  }
  cVar2 = (**(code **)(*piVar1 + 0x10))();
  if (cVar2 == '\0') {
    piVar6 = (int *)FUN_00a2b720(&iStack_34,iVar5 + 0x58,*(undefined4 *)(param_1_00 + 0x1c0),
                                 *(undefined4 *)(param_1_00 + 0x1c4));
    uStack_c = 0;
LAB_00a2cc3d:
    if (piVar1 != piVar6) {
      FUN_0083ea60(piVar6);
    }
    uStack_c = 0xffffffff;
    FUN_008f7630();
  }
  else {
    if (*(int *)(iVar5 + 0x4c) == 0) {
      iStack_34 = 0;
      iStack_30 = 0;
    }
    else {
      iStack_30 = *(int *)(*(int *)(iVar5 + 0x4c) + 0xc);
      iStack_34 = *(int *)(*(int *)(iVar5 + 0x4c) + 8);
    }
    if ((iStack_34 != *(int *)(param_1_00 + 0x1c0)) || (iStack_30 != *(int *)(param_1_00 + 0x1c4)))
    {
      piVar6 = (int *)FUN_00a2b720(&iStack_34,piVar1,*(undefined4 *)(param_1_00 + 0x1c0),
                                   *(undefined4 *)(param_1_00 + 0x1c4));
      uStack_c = 1;
      goto LAB_00a2cc3d;
    }
  }
  piVar1 = (int *)(iVar5 + 0x58);
  if (piVar1 != param_4) {
    FUN_0083ea60(param_4);
  }
  cVar2 = (**(code **)(*piVar1 + 0x10))();
  if (cVar2 == '\0') {
    piVar6 = (int *)FUN_00a2b720(&iStack_34,iVar5 + 0x48,*(undefined4 *)(param_1_00 + 0x1c8),
                                 *(undefined4 *)(param_1_00 + 0x1cc));
    uStack_c = 2;
  }
  else {
    iStack_34 = 0;
    if (*(int *)(iVar5 + 0x5c) == 0) {
      iStack_30 = 0;
    }
    else {
      iStack_30 = *(int *)(*(int *)(iVar5 + 0x5c) + 0xc);
      iStack_34 = *(int *)(*(int *)(iVar5 + 0x5c) + 8);
    }
    if ((iStack_34 == *(int *)(param_1_00 + 0x1c8)) && (iStack_30 == *(int *)(param_1_00 + 0x1cc)))
    goto LAB_00a2cd1a;
    piVar6 = (int *)FUN_00a2b720(&iStack_34,piVar1,*(undefined4 *)(param_1_00 + 0x1c8),
                                 *(undefined4 *)(param_1_00 + 0x1cc));
    uStack_c = 3;
  }
  if (piVar1 != piVar6) {
    FUN_0083ea60(piVar6);
  }
  uStack_c = 0xffffffff;
  FUN_008f7630();
LAB_00a2cd1a:
  if (iVar5 + 0x50 != param_5) {
    FUN_0083ea60(param_5);
  }
  cVar2 = (**(code **)(*(int *)(iVar5 + 0x50) + 0x10))();
  if (cVar2 == '\0') {
    iVar7 = FUN_00a2b7c0(&iStack_34,iVar5 + 0x48);
    uStack_c = 4;
    if (iVar5 + 0x50 != iVar7) {
      FUN_0083ea60(iVar7);
    }
    uStack_c = 0xffffffff;
    FUN_008f7630();
  }
  if (iVar5 + 0x60 != param_6) {
    FUN_0083ea60(param_6);
  }
  cVar2 = (**(code **)(*(int *)(iVar5 + 0x60) + 0x10))();
  if (cVar2 == '\0') {
    iVar7 = FUN_00a2b7c0(auStack_2c,piVar1);
    uStack_c = 5;
    if (iVar5 + 0x60 != iVar7) {
      FUN_0083ea60(iVar7);
    }
    uStack_c = 0xffffffff;
    FUN_008f7630();
  }
  *(undefined4 *)(iVar5 + 0xf4) = param_7;
  if (iVar5 + 0x24 != param_8) {
    FID_conflict_assign(param_8,0,0xffffffff);
  }
  *(undefined4 *)(iVar5 + 0xec) = param_9;
  *(undefined4 *)(iVar5 + 0xf8) = 0;
  FUN_0094bd30(param_1_00);
  uStack_c = 6;
  FUN_00a2a980(iVar5,0,auStack_24);
  FUN_00a2a980(iVar5,1,auStack_24);
  FUN_00a2a980(iVar5,2,auStack_24);
  FUN_0086a400(iVar5,1);
  *(undefined *)(param_1_00 + 0x1d4) = 0;
  uStack_c = 0xffffffff;
  FUN_00457221();
  ExceptionList = local_14;
  return iVar5;
}



undefined4 __thiscall FUN_00a2ce70(undefined4 param_1_00,byte param_1)

{
  FUN_00a2c810();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined ** FUN_00a2ce90(void)

{
  return &PTR_u_wxRibbonPageScrollButton_0323f694;
}



undefined ** FUN_00a2cea0(void)

{
  return &PTR_PTR_00d9faf8;
}



undefined * FUN_00a2ceb0(void)

{
  return &DAT_032eaf38;
}



void __fastcall FUN_00a2cf20(int *param_1)

{
  if ((param_1[0x67] & 8U) != 0) {
    param_1[0x67] = param_1[0x67] & 0xfffffff7;
    (**(code **)(*param_1 + 0x15c))(0,0);
    switch(param_1[0x67] & 3) {
    case 0:
    case 2:
                    // WARNING: Could not recover jumptable at 0x00a2cf89. Too many branches
                    // WARNING: Treating indirect jump as call
      (**(code **)(*(int *)param_1[0x66] + 0x1c0))(0xffffffff);
      return;
    case 1:
    case 3:
                    // WARNING: Could not recover jumptable at 0x00a2cf70. Too many branches
                    // WARNING: Treating indirect jump as call
      (**(code **)(*(int *)param_1[0x66] + 0x1c0))(1);
      return;
    }
  }
  return;
}



undefined ** FUN_00a2cfa0(void)

{
  return &PTR_u_wxRibbonPage_0323f6ac;
}



undefined ** FUN_00a2cfb0(void)

{
  return &PTR_PTR_00d9fb00;
}



undefined * FUN_00a2cfc0(void)

{
  return &DAT_032eafdc;
}



void __thiscall FUN_00a2cfd0(int param_1_00,undefined4 param_1)

{
  if (*(int *)(param_1_00 + 0x1b4) != 0) {
    (**(code **)(**(int **)(param_1_00 + 0x1b4) + 0xcc))(param_1);
  }
  if (*(int *)(param_1_00 + 0x1b8) != 0) {
    (**(code **)(**(int **)(param_1_00 + 0x1b8) + 0xcc))(param_1);
  }
  FUN_0090ea90(param_1);
  return;
}



undefined4 FUN_00a2d030(void)

{
  return 0x200000;
}



void __fastcall FUN_00a2d040(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bf06e6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxRibbonPage::vftable;
  local_4 = 1;
  FUN_00a3f66c(param_1[0x6f],uVar1);
  FUN_008f7630();
  local_4 = local_4 & 0xffffff00;
  FUN_0086aa30();
  local_4 = 0xffffffff;
  FUN_0044cd6b();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a2d140(int param_1_00,int *param_1)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int *piVar4;
  undefined auStack_8 [8];
  
  if (*(char *)(param_1_00 + 0x1d0) != '\0') {
    if ((*(int *)(param_1_00 + 0x194) == 0) ||
       (uVar2 = (**(code **)(**(int **)(param_1_00 + 0x194) + 0xc))(), (uVar2 & 4) == 0)) {
      if (*(int *)(param_1_00 + 0x1b4) != 0) {
        iVar1 = *param_1;
        piVar4 = (int *)FUN_004555c3(auStack_8);
        *param_1 = iVar1 - *piVar4;
        iVar1 = param_1[2];
        piVar4 = (int *)FUN_004555c3(auStack_8);
        param_1[2] = *piVar4 + iVar1;
      }
      if (*(int *)(param_1_00 + 0x1b8) != 0) {
        iVar1 = param_1[2];
        piVar4 = (int *)FUN_004555c3(auStack_8);
        param_1[2] = *piVar4 + iVar1;
      }
    }
    else {
      if (*(int *)(param_1_00 + 0x1b4) != 0) {
        iVar1 = param_1[1];
        iVar3 = FUN_004555c3(auStack_8);
        param_1[1] = iVar1 - *(int *)(iVar3 + 4);
        iVar1 = param_1[3];
        iVar3 = FUN_004555c3(auStack_8);
        param_1[3] = *(int *)(iVar3 + 4) + iVar1;
      }
      if (*(int *)(param_1_00 + 0x1b8) != 0) {
        iVar1 = param_1[3];
        iVar3 = FUN_004555c3(auStack_8);
        param_1[3] = *(int *)(iVar3 + 4) + iVar1;
        return;
      }
    }
  }
  return;
}



void __thiscall FUN_00a2d240(int *param_1_00,int param_1,int param_2,int param_3,int param_4)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  undefined auStack_8 [8];
  
  if (*(char *)(param_1_00 + 0x74) != '\0') {
    if ((param_1_00[0x65] == 0) ||
       (uVar1 = (**(code **)(*(int *)param_1_00[0x65] + 0xc))(), (uVar1 & 4) == 0)) {
      if (param_1_00[0x6d] != 0) {
        piVar2 = (int *)FUN_004555c3(auStack_8);
        iVar3 = *piVar2;
        (**(code **)(*(int *)param_1_00[0x6d] + 0x288))(param_1,param_2,0xffffffff,0xffffffff,0);
        param_1 = param_1 + iVar3;
        param_3 = param_3 - iVar3;
      }
      if (param_1_00[0x6e] != 0) {
        piVar2 = (int *)FUN_004555c3(auStack_8);
        param_3 = param_3 - *piVar2;
        (**(code **)(*(int *)param_1_00[0x6e] + 0x288))
                  (param_1 + param_3,param_2,0xffffffff,0xffffffff,0);
      }
    }
    else {
      if (param_1_00[0x6d] != 0) {
        iVar3 = FUN_004555c3(auStack_8);
        iVar3 = *(int *)(iVar3 + 4);
        (**(code **)(*(int *)param_1_00[0x6d] + 0x288))(param_1,param_2,0xffffffff,0xffffffff,0);
        param_2 = param_2 + iVar3;
        param_4 = param_4 - iVar3;
      }
      if (param_1_00[0x6e] != 0) {
        iVar3 = FUN_004555c3(auStack_8);
        param_4 = param_4 - *(int *)(iVar3 + 4);
        (**(code **)(*(int *)param_1_00[0x6e] + 0x288))
                  (param_1,param_4 + param_2,0xffffffff,0xffffffff,0);
      }
    }
  }
  if (param_3 < 0) {
    param_3 = 0;
  }
  if (param_4 < 0) {
    param_4 = 0;
  }
  (**(code **)(*param_1_00 + 0x288))(param_1,param_2,param_3,param_4,3);
  return;
}



void __thiscall
FUN_00a2d3c0(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_6)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  undefined auStack_8 [8];
  
  if (*(int **)(param_1_00 + 0x194) == (int *)0x0) {
LAB_00a2d3e5:
    *(undefined4 *)(param_1_00 + 0x1cc) = param_3;
    if (*(char *)(param_1_00 + 0x1d0) == '\0') goto LAB_00a2d471;
    if (*(int *)(param_1_00 + 0x1b4) != 0) {
      piVar2 = (int *)FUN_004555c3(auStack_8);
      *(int *)(param_1_00 + 0x1cc) = *(int *)(param_1_00 + 0x1cc) + *piVar2;
    }
    if (*(int *)(param_1_00 + 0x1b8) == 0) goto LAB_00a2d471;
    piVar2 = (int *)FUN_004555c3(auStack_8);
    iVar3 = *piVar2;
  }
  else {
    uVar1 = (**(code **)(**(int **)(param_1_00 + 0x194) + 0xc))();
    if ((uVar1 & 4) == 0) goto LAB_00a2d3e5;
    *(undefined4 *)(param_1_00 + 0x1cc) = param_4;
    if (*(char *)(param_1_00 + 0x1d0) == '\0') goto LAB_00a2d471;
    if (*(int *)(param_1_00 + 0x1b4) != 0) {
      iVar3 = FUN_004555c3(auStack_8);
      *(int *)(param_1_00 + 0x1cc) = *(int *)(param_1_00 + 0x1cc) + *(int *)(iVar3 + 4);
    }
    if (*(int *)(param_1_00 + 0x1b8) == 0) goto LAB_00a2d471;
    iVar3 = FUN_004555c3(auStack_8);
    iVar3 = *(int *)(iVar3 + 4);
  }
  *(int *)(param_1_00 + 0x1cc) = *(int *)(param_1_00 + 0x1cc) + iVar3;
LAB_00a2d471:
  FUN_00911700(param_1,param_2,param_3,param_4,param_6);
  return;
}



void __thiscall FUN_00a2d4a0(int *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  undefined local_28 [12];
  undefined local_1c [16];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0718;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1 + 0x28);
  iVar2 = *(int *)(param_1 + 0x2c);
  if (param_1_00[0x65] != 0) {
    FUN_0094bd80(DAT_0323f878 ^ (uint)&stack0xffffffc8);
    local_4 = 0;
    (**(code **)(*(int *)param_1_00[0x65] + 0x84))
              (local_1c,local_28,param_1_00,param_1_00[0x6b],param_1_00[0x6c],iVar1,iVar2);
    (**(code **)(*param_1_00 + 0x15c))(1,&stack0xffffffc8);
    local_4 = 0xffffffff;
    FUN_00457221();
  }
  param_1_00[0x6b] = iVar1;
  param_1_00[0x6c] = iVar2;
  if ((0 < iVar1) && (0 < iVar2)) {
    (**(code **)(*param_1_00 + 0x204))();
  }
  *(undefined *)(param_1 + 0x24) = 1;
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a2d580(int param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  
  uVar1 = *(uint *)(param_1_00 + 0x19c);
  uVar3 = 0;
  uVar4 = 0;
  if (uVar1 != 0) {
    do {
      if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x19c) <= uVar3)) {
        FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,"wxBaseArrayPtrVoid::Item",
                     "uiIndex < m_nCount",0);
      }
      iVar2 = *(int *)(*(int *)(param_1_00 + 0x1a0) + uVar3 * 4);
      if ((iVar2 == param_1) && (uVar3 = uVar3 + 1, uVar3 == uVar1)) break;
      if (uVar3 != uVar4) {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x19c) <= uVar4)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        *(int *)(*(int *)(param_1_00 + 0x1a0) + uVar4 * 4) = iVar2;
      }
      uVar3 = uVar3 + 1;
      uVar4 = uVar4 + 1;
    } while (uVar3 < uVar1);
    if (uVar4 < uVar3) {
      FUN_0086a1e0(uVar4,uVar3 - uVar4);
    }
  }
  FUN_0091bc20();
  return;
}



void __thiscall FUN_00a2d650(int param_1,code *param_2)

{
  uint uVar1;
  int iVar2;
  void *pvVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  void *apvStack_14 [2];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf074b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1 + 0x1c0) != *(int *)(param_1 + 0x4c)) {
    FUN_00a3f66c(*(undefined4 *)(param_1 + 0x1bc),DAT_0323f878 ^ (uint)&stack0xffffffe0);
    uVar1 = *(uint *)(param_1 + 0x4c);
    *(uint *)(param_1 + 0x1c0) = uVar1;
    pvVar3 = (void *)FUN_00823c23(-(uint)((int)((ulonglong)uVar1 * 8 >> 0x20) != 0) |
                                  (uint)((ulonglong)uVar1 * 8));
    uStack_4 = 0;
    apvStack_14[0] = pvVar3;
    if (pvVar3 == (void *)0x0) {
      pvVar3 = (void *)0x0;
    }
    else {
      _vector_constructor_iterator_(pvVar3,8,uVar1,(_func_void_ptr_void_ptr *)&LAB_0044642c);
    }
    *(void **)(param_1 + 0x1bc) = pvVar3;
  }
  uStack_4 = 0xffffffff;
  puVar5 = *(undefined4 **)(param_1 + 0x1bc);
  for (iVar2 = *(int *)(param_1 + 0x54); iVar2 != 0; iVar2 = *(int *)(iVar2 + 0xc)) {
    puVar4 = (undefined4 *)(*param_2)(apvStack_14);
    *puVar5 = *puVar4;
    puVar5[1] = puVar4[1];
    puVar5 = puVar5 + 2;
  }
  ExceptionList = local_c;
  return;
}



undefined __thiscall FUN_00a2d730(int param_1_00,int *param_1,int param_2)

{
  int *piVar1;
  uint uVar2;
  char cVar3;
  undefined uVar4;
  undefined **ppuVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int *piVar9;
  undefined local_21;
  int local_20;
  int *local_1c;
  int local_18;
  int iStack_10;
  int iStack_c;
  int iStack_8;
  int iStack_4;
  
  uVar2 = (uint)param_1;
  local_21 = 0;
  uVar4 = 0;
  if (0 < param_2) {
    do {
      piVar9 = *(int **)(param_1_00 + 0x1bc);
      local_18 = *(int *)(param_1_00 + 0x54);
      local_20 = 0x7fffffff;
      local_1c = (int *)0x0;
      param_1 = (int *)0x0;
      if (local_18 == 0) {
        return local_21;
      }
      do {
        piVar1 = *(int **)(local_18 + 8);
        if ((piVar1 != (int *)0x0) &&
           (((ppuVar5 = (undefined **)(**(code **)*piVar1)(),
             ppuVar5 == &PTR_u_wxRibbonPanel_0323f6e0 ||
             ((ppuVar5[3] != (undefined *)0x0 &&
              (cVar3 = FUN_0048a047(&PTR_u_wxRibbonPanel_0323f6e0), cVar3 != '\0')))) ||
            ((ppuVar5[4] != (undefined *)0x0 &&
             (cVar3 = FUN_0048a047(&PTR_u_wxRibbonPanel_0323f6e0), cVar3 != '\0')))))) {
          cVar3 = (**(code **)(*piVar1 + 0x35c))();
          iVar6 = piVar9[1];
          if (cVar3 == '\0') {
            iVar7 = *piVar9;
            if ((uVar2 != 4) && (iVar7 = iVar6, uVar2 != 8)) {
              if (uVar2 == 0xc) {
                iVar7 = iVar6 * *piVar9;
              }
              else {
                iVar7 = 0;
              }
            }
            if ((iVar7 < local_20) &&
               ((FUN_00a30b10(&iStack_10,uVar2,*piVar9,piVar9[1]), iStack_10 != *piVar9 ||
                (iStack_c != piVar9[1])))) {
              iVar6 = iStack_10;
              if ((uVar2 != 4) && (iVar6 = iStack_c, uVar2 != 8)) {
                if (uVar2 == 0xc) {
                  iVar6 = iStack_c * iStack_10;
                }
                else {
                  iVar6 = 0;
                }
              }
              if (iVar7 < iVar6) goto LAB_00a2d87a;
            }
          }
          else {
            iVar7 = *piVar9;
            if ((uVar2 != 4) && (iVar7 = iVar6, uVar2 != 8)) {
              if (uVar2 == 0xc) {
                iVar7 = iVar6 * *piVar9;
              }
              else {
                iVar7 = 0;
              }
            }
            if (iVar7 < local_20) {
LAB_00a2d87a:
              local_20 = iVar7;
              param_1 = piVar9;
              local_1c = piVar1;
            }
          }
        }
        local_18 = *(int *)(local_18 + 0xc);
        piVar9 = piVar9 + 2;
      } while (local_18 != 0);
      if (local_1c == (int *)0x0) {
        return local_21;
      }
      cVar3 = (**(code **)(*local_1c + 0x35c))();
      if (cVar3 == '\0') {
        FUN_00a30b10(&iStack_8,uVar2,*param_1,param_1[1]);
        iVar8 = iStack_8 - *param_1;
        iVar7 = iStack_4 - param_1[1];
        iVar6 = iVar8;
        if ((uVar2 != 4) && (iVar6 = iVar7, uVar2 != 8)) {
          if (uVar2 == 0xc) {
            iVar6 = iVar7 * iVar8;
          }
          else {
            iVar6 = 0;
          }
        }
        if (param_2 < iVar6) {
          return local_21;
        }
        *param_1 = iStack_8;
        param_1[1] = iStack_4;
        iVar6 = iVar8;
        if ((uVar2 != 4) && (iVar6 = iVar7, uVar2 != 8)) {
          if (uVar2 == 0xc) {
            iVar6 = iVar7 * iVar8;
          }
          else {
            iVar6 = 0;
          }
        }
      }
      else {
        iVar6 = param_2;
        if (0x20 < param_2) {
          iVar6 = 0x20;
        }
        if ((uVar2 & 4) != 0) {
          *param_1 = *param_1 + iVar6;
        }
        if ((uVar2 & 8) != 0) {
          param_1[1] = param_1[1] + iVar6;
        }
      }
      param_2 = param_2 - iVar6;
      FUN_0086a400(local_1c,1);
      local_21 = 1;
      uVar4 = local_21;
    } while (0 < param_2);
  }
  return uVar4;
}



undefined __thiscall FUN_00a2d990(int param_1_00,uint param_1,int param_2)

{
  uint uVar1;
  int *piVar2;
  char cVar3;
  undefined uVar4;
  undefined **ppuVar5;
  int iVar6;
  int iVar7;
  int *piVar8;
  int iVar9;
  int *piVar10;
  undefined local_21;
  int *local_20;
  int *local_1c;
  int local_14;
  int iStack_10;
  int iStack_c;
  int iStack_8;
  int iStack_4;
  
  local_21 = 0;
  uVar4 = 0;
  if (0 < param_2) {
    do {
      piVar8 = *(int **)(param_1_00 + 0x1bc);
      iVar9 = 0;
      local_20 = (int *)0x0;
      local_1c = (int *)0x0;
      if (*(int *)(param_1_00 + 0x19c) == 0) {
        local_14 = *(int *)(param_1_00 + 0x54);
        if (local_14 == 0) {
          return local_21;
        }
        do {
          piVar2 = *(int **)(local_14 + 8);
          if ((piVar2 != (int *)0x0) &&
             (((ppuVar5 = (undefined **)(**(code **)*piVar2)(),
               ppuVar5 == &PTR_u_wxRibbonPanel_0323f6e0 ||
               ((ppuVar5[3] != (undefined *)0x0 &&
                (cVar3 = FUN_0048a047(&PTR_u_wxRibbonPanel_0323f6e0), cVar3 != '\0')))) ||
              ((ppuVar5[4] != (undefined *)0x0 &&
               (cVar3 = FUN_0048a047(&PTR_u_wxRibbonPanel_0323f6e0), cVar3 != '\0')))))) {
            cVar3 = (**(code **)(*piVar2 + 0x35c))();
            iVar6 = piVar8[1];
            if (cVar3 == '\0') {
              iVar7 = *piVar8;
              if ((param_1 != 4) && (iVar7 = iVar6, param_1 != 8)) {
                if (param_1 == 0xc) {
                  iVar7 = iVar6 * *piVar8;
                }
                else {
                  iVar7 = 0;
                }
              }
              if ((iVar9 < iVar7) &&
                 ((FUN_00a30ae0(&iStack_10,param_1,*piVar8,piVar8[1]), iStack_10 != *piVar8 ||
                  (iStack_c != piVar8[1])))) {
                iVar6 = iStack_10;
                if ((param_1 != 4) && (iVar6 = iStack_c, param_1 != 8)) {
                  if (param_1 == 0xc) {
                    iVar6 = iStack_c * iStack_10;
                  }
                  else {
                    iVar6 = 0;
                  }
                }
                if (iVar6 < iVar7) goto LAB_00a2dbfe;
              }
            }
            else {
              iVar7 = *piVar8;
              if ((param_1 != 4) && (iVar7 = iVar6, param_1 != 8)) {
                if (param_1 == 0xc) {
                  iVar7 = iVar6 * *piVar8;
                }
                else {
                  iVar7 = 0;
                }
              }
              if (iVar9 < iVar7) {
LAB_00a2dbfe:
                iVar9 = iVar7;
                local_20 = piVar2;
                local_1c = piVar8;
              }
            }
          }
          local_14 = *(int *)(local_14 + 0xc);
          piVar8 = piVar8 + 2;
          piVar2 = local_1c;
        } while (local_14 != 0);
      }
      else {
        uVar1 = *(uint *)(param_1_00 + 0x19c) - 1;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_1_00 + 0x19c) <= uVar1)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        local_20 = *(int **)(*(int *)(param_1_00 + 0x1a0) + uVar1 * 4);
        if ((local_20 == (int *)0x0) ||
           (((ppuVar5 = (undefined **)(**(code **)*local_20)(),
             ppuVar5 != &PTR_u_wxRibbonPanel_0323f6e0 &&
             ((ppuVar5[3] == (undefined *)0x0 ||
              (cVar3 = FUN_0048a047(&PTR_u_wxRibbonPanel_0323f6e0), cVar3 == '\0')))) &&
            ((ppuVar5[4] == (undefined *)0x0 ||
             (cVar3 = FUN_0048a047(&PTR_u_wxRibbonPanel_0323f6e0), cVar3 == '\0')))))) {
          local_20 = (int *)0x0;
        }
        FUN_0086a1e0(*(int *)(param_1_00 + 0x19c) + -1,1);
        for (iVar9 = *(int *)(param_1_00 + 0x54); piVar2 = local_1c, iVar9 != 0;
            iVar9 = *(int *)(iVar9 + 0xc)) {
          piVar10 = *(int **)(iVar9 + 8);
          if ((piVar10 == (int *)0x0) ||
             (((ppuVar5 = (undefined **)(**(code **)*piVar10)(),
               ppuVar5 != &PTR_u_wxRibbonPanel_0323f6e0 &&
               ((ppuVar5[3] == (undefined *)0x0 ||
                (cVar3 = FUN_0048a047(&PTR_u_wxRibbonPanel_0323f6e0), cVar3 == '\0')))) &&
              ((ppuVar5[4] == (undefined *)0x0 ||
               (cVar3 = FUN_0048a047(&PTR_u_wxRibbonPanel_0323f6e0), cVar3 == '\0')))))) {
            piVar10 = (int *)0x0;
          }
          piVar2 = piVar8;
          if (piVar10 == local_20) break;
          piVar8 = piVar8 + 2;
        }
      }
      local_1c = piVar2;
      if (local_20 == (int *)0x0) {
        return local_21;
      }
      cVar3 = (**(code **)(*local_20 + 0x35c))();
      if (cVar3 == '\0') {
        FUN_00a30ae0(&iStack_8,param_1,*local_1c,local_1c[1]);
        iVar9 = *local_1c;
        iVar6 = local_1c[1];
        *local_1c = iStack_8;
        local_1c[1] = iStack_4;
        iVar7 = iVar9 - iStack_8;
        if ((param_1 != 4) && (iVar7 = iVar6 - iStack_4, param_1 != 8)) {
          if (param_1 == 0xc) {
            iVar7 = (iVar6 - iStack_4) * (iVar9 - iStack_8);
          }
          else {
            iVar7 = 0;
          }
        }
      }
      else {
        iVar7 = param_2;
        if (0x20 < param_2) {
          iVar7 = 0x20;
        }
        if ((param_1 & 4) != 0) {
          *local_1c = *local_1c - iVar7;
        }
        if ((param_1 & 8) != 0) {
          local_1c[1] = local_1c[1] - iVar7;
        }
      }
      param_2 = param_2 - iVar7;
      local_21 = 1;
      uVar4 = local_21;
    } while (0 < param_2);
  }
  return uVar4;
}



int * __thiscall FUN_00a2dce0(int param_1_00,int *param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int local_8;
  int iStack_4;
  
  iVar3 = *(int *)(param_1_00 + 0x54);
  *param_1 = -1;
  param_1[1] = -1;
  while (iVar3 != 0) {
    (**(code **)(**(int **)(iVar3 + 8) + 0xa4))(&local_8);
    iVar4 = *param_1;
    if (*param_1 <= local_8) {
      iVar4 = local_8;
    }
    *param_1 = iVar4;
    iVar4 = param_1[1];
    if (param_1[1] <= iStack_4) {
      iVar4 = iStack_4;
    }
    iVar3 = *(int *)(iVar3 + 0xc);
    param_1[1] = iVar4;
  }
  if ((*(int *)(param_1_00 + 0x194) == 0) ||
     (uVar2 = (**(code **)(**(int **)(param_1_00 + 0x194) + 0xc))(), (uVar2 & 4) == 0)) {
    *param_1 = -1;
    if (param_1[1] != -1) {
      piVar1 = *(int **)(param_1_00 + 0x194);
      iVar3 = (**(code **)(*piVar1 + 0x10))(4);
      iVar4 = (**(code **)(*piVar1 + 0x10))(2);
      param_1[1] = param_1[1] + iVar3 + iVar4;
      return param_1;
    }
  }
  else {
    if (*param_1 != -1) {
      piVar1 = *(int **)(param_1_00 + 0x194);
      iVar3 = (**(code **)(*piVar1 + 0x10))(3);
      iVar4 = (**(code **)(*piVar1 + 0x10))(1);
      *param_1 = *param_1 + iVar3 + iVar4;
    }
    param_1[1] = -1;
  }
  return param_1;
}



int * __thiscall FUN_00a2ddd0(int param_1_00,int *param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int iStack_8;
  int iStack_4;
  
  *param_1 = 0;
  param_1[1] = 0;
  if ((*(int *)(param_1_00 + 0x194) == 0) ||
     (uVar2 = (**(code **)(**(int **)(param_1_00 + 0x194) + 0xc))(), (uVar2 & 4) == 0)) {
    iVar3 = *(int *)(param_1_00 + 0x54);
    param_1[1] = -1;
    uVar2 = 0;
    if (iVar3 != 0) {
      do {
        uVar5 = uVar2;
        FUN_0091b530(&iStack_8);
        if (iStack_8 != -1) {
          *param_1 = *param_1 + iStack_8;
        }
        iVar4 = param_1[1];
        if (param_1[1] <= iStack_4) {
          iVar4 = iStack_4;
        }
        iVar3 = *(int *)(iVar3 + 0xc);
        uVar2 = uVar5 + 1;
        param_1[1] = iVar4;
      } while (iVar3 != 0);
      if (1 < uVar2) {
        iVar3 = (**(code **)(**(int **)(param_1_00 + 0x194) + 0x10))(5);
        *param_1 = *param_1 + iVar3 * uVar5;
      }
    }
  }
  else {
    iVar3 = *(int *)(param_1_00 + 0x54);
    *param_1 = -1;
    uVar2 = 0;
    if (iVar3 == 0) goto LAB_00a2dee1;
    do {
      uVar5 = uVar2;
      FUN_0091b530(&iStack_8);
      iVar4 = *param_1;
      if (*param_1 <= iStack_8) {
        iVar4 = iStack_8;
      }
      *param_1 = iVar4;
      if (iStack_4 != -1) {
        param_1[1] = param_1[1] + iStack_4;
      }
      iVar3 = *(int *)(iVar3 + 0xc);
      uVar2 = uVar5 + 1;
    } while (iVar3 != 0);
    if (1 < uVar2) {
      iVar3 = (**(code **)(**(int **)(param_1_00 + 0x194) + 0x10))(6);
      param_1[1] = param_1[1] + iVar3 * uVar5;
    }
  }
  if (*param_1 != -1) {
    piVar1 = *(int **)(param_1_00 + 0x194);
    iVar3 = (**(code **)(*piVar1 + 0x10))(3);
    iVar4 = (**(code **)(*piVar1 + 0x10))(1);
    *param_1 = *param_1 + iVar3 + iVar4;
  }
LAB_00a2dee1:
  if (param_1[1] != -1) {
    piVar1 = *(int **)(param_1_00 + 0x194);
    iVar3 = (**(code **)(*piVar1 + 0x10))(4);
    iVar4 = (**(code **)(*piVar1 + 0x10))(2);
    param_1[1] = param_1[1] + iVar3 + iVar4;
  }
  return param_1;
}



undefined4 * __thiscall FUN_00a2df20(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxRibbonPageScrollButton::vftable;
  FUN_0044cd6b();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00a2df50(int *param_1)

{
  uint uVar1;
  undefined4 local_48;
  undefined4 local_44;
  uint uStack_40;
  undefined auStack_38 [8];
  undefined **local_30;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0778;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  FUN_00957210(param_1);
  local_4 = 0;
  if (param_1[0x65] != 0) {
    (**(code **)(*param_1 + 0x278))(&local_48,&local_44);
    local_48 = 0;
    local_44 = 0;
    uStack_40 = uVar1;
    (**(code **)(*(int *)param_1[0x65] + 0x40))(auStack_38,param_1,&local_48,param_1[0x67]);
  }
  local_4 = 0xffffffff;
  local_30 = wxAutoBufferedPaintDC::vftable;
  FUN_009475a0();
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00a2e020(undefined4 param_1_00,byte param_1)

{
  FUN_00a2d040();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00a2e040(int *param_1_00,undefined4 param_1)

{
  code *pcVar1;
  char cVar2;
  undefined **ppuVar3;
  int *unaff_retaddr;
  
  (**(code **)(*param_1_00 + 0x5c))(param_1);
  (**(code **)(*param_1_00 + 0x54))(param_1);
  param_1_00[0x6b] = 0;
  param_1_00[0x6c] = 0;
  if (param_1_00 + 0x69 != unaff_retaddr) {
    FUN_0083ea60(unaff_retaddr);
  }
  pcVar1 = *(code **)(*param_1_00 + 0x184);
  param_1_00[0x6d] = 0;
  param_1_00[0x6e] = 0;
  param_1_00[0x6f] = 0;
  param_1_00[0x70] = 0;
  param_1_00[0x71] = 0;
  *(undefined *)(param_1_00 + 0x74) = 0;
  (*pcVar1)(2);
  if ((undefined4 *)param_1_00[0x11] != (undefined4 *)0x0) {
    ppuVar3 = (undefined **)(***(code ***)(undefined4 *)param_1_00[0x11])();
    if (ppuVar3 == &PTR_u_wxRibbonBar_0323f5e4) {
LAB_00a2e0f8:
      FUN_00a2a060(param_1_00);
      return;
    }
    if (ppuVar3[3] != (undefined *)0x0) {
      cVar2 = FUN_0048a047(&PTR_u_wxRibbonBar_0323f5e4);
      if (cVar2 != '\0') goto LAB_00a2e0f8;
    }
    if (ppuVar3[4] != (undefined *)0x0) {
      cVar2 = FUN_0048a047(&PTR_u_wxRibbonBar_0323f5e4);
      if (cVar2 != '\0') goto LAB_00a2e0f8;
    }
  }
  FUN_00a2a060(param_1_00);
  return;
}



void __fastcall FUN_00a2e120(int *param_1)

{
  uint uVar1;
  undefined4 local_48;
  undefined **local_44;
  uint uStack_40;
  undefined auStack_38 [24];
  void *pvStack_20;
  undefined4 uStack_18;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0778;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb4;
  ExceptionList = &local_c;
  FUN_00957210(param_1);
  local_4 = 0;
  (**(code **)(*param_1 + 0x278))(&local_48,&local_44);
  local_48 = 0;
  local_44 = (undefined **)0x0;
  uStack_40 = uVar1;
  FUN_00a2d140(&local_48);
  (**(code **)(*(int *)param_1[0x65] + 0x3c))(auStack_38,param_1,&local_48);
  uStack_18 = 0xffffffff;
  local_44 = wxAutoBufferedPaintDC::vftable;
  FUN_009475a0();
  ExceptionList = pvStack_20;
  return;
}



undefined4 * __thiscall
FUN_00a2e1e0(undefined4 *param_1_00,int param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,uint param_5)

{
  uint uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  FUN_0043c211("control");
  local_4 = 0;
  FUN_00a29a60(*(undefined4 *)(param_1 + 0x44),param_2,param_3,param_4,0x200000,&DAT_032c0398,
               local_30);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  *param_1_00 = wxRibbonPageScrollButton::vftable;
  param_1_00[0x44] = 2;
  param_1_00[0x66] = param_1;
  param_1_00[0x67] = param_5 & 3 | 0x20;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a2e2b0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  uint uVar1;
  undefined local_30 [4];
  uint local_2c;
  undefined4 local_1c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf07cc;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_0043c211("control");
  local_4 = 0;
  FUN_00a29a60(param_1,param_2,&DAT_03238d0c,&DAT_03238d04,0x200000,&DAT_032c0398,local_30);
  local_4._0_1_ = 2;
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  local_18 = 7;
  local_1c = 0;
  local_2c = local_2c & 0xffff0000;
  *param_1_00 = wxRibbonPage::vftable;
  FUN_0086a600(uVar1);
  param_1_00[0x6a] = 0;
  param_1_00[0x69] = wxBitmap::vftable;
  local_4 = CONCAT31(local_4._1_3_,4);
  param_1_00[0x6b] = 0;
  param_1_00[0x6c] = 0;
  FUN_00a2e040(param_3,param_4);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00a2e3b0(int *param_1)

{
  bool bVar1;
  undefined uVar2;
  char cVar3;
  uint uVar4;
  uint uVar5;
  int *piVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 *puVar9;
  void *pvVar10;
  int unaff_EBX;
  undefined4 uVar11;
  int unaff_EDI;
  bool bVar12;
  undefined4 uStack_50;
  int iStack_4c;
  int iStack_48;
  undefined4 uStack_44;
  undefined4 uStack_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined local_2c [8];
  undefined local_24 [12];
  undefined auStack_18 [4];
  undefined uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0816;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  bVar1 = false;
  uStack_50 = (void *)CONCAT13(1,(uint3)uStack_50);
  bVar12 = param_1[0x71] != 0;
  if (param_1[0x72] <= param_1[0x71]) {
    uStack_50 = (void *)(uint)(uint3)uStack_50;
    param_1[0x71] = param_1[0x72];
  }
  uVar11 = 0;
  if ((bVar12) || ((bool)uStack_50._3_1_ != bVar12)) {
    uVar2 = 1;
  }
  else {
    uVar2 = 0;
  }
  *(undefined *)(param_1 + 0x74) = uVar2;
  if (bVar12) {
    if (param_1[0x6d] == 0) {
      FUN_0094bd80();
      local_4 = 0;
      local_3c = 0;
      local_38 = 0;
      if (((int *)param_1[0x65] == (int *)0x0) ||
         (uVar5 = (**(code **)(*(int *)param_1[0x65] + 0xc))(), (uVar5 & 4) == 0)) {
        piVar6 = (int *)(**(code **)(*(int *)param_1[0x65] + 0x70))
                                  (local_2c,local_24,param_1[0x11],0);
        iStack_4c = *piVar6;
        iStack_48 = piVar6[1];
        iVar7 = FUN_004555c3(&local_3c);
        iStack_48 = *(int *)(iVar7 + 4);
      }
      else {
        uVar11 = 2;
        piVar6 = (int *)(**(code **)(*(int *)param_1[0x65] + 0x70))
                                  (local_2c,local_24,param_1[0x11],2);
        iStack_4c = *piVar6;
        iStack_48 = piVar6[1];
        piVar6 = (int *)FUN_004555c3(&local_3c);
        iStack_4c = *piVar6;
      }
      uStack_50 = operator_new(0x1a0);
      uStack_14 = 1;
      if (uStack_50 == (void *)0x0) {
        iVar7 = 0;
      }
      else {
        piVar6 = &iStack_4c;
        uVar8 = FUN_008192ee(&local_3c);
        iVar7 = FUN_00a2e1e0(param_1,0xffffffff,uVar8,piVar6,uVar11);
      }
      param_1[0x6d] = iVar7;
      uStack_14 = 0;
      cVar3 = (**(code **)(*param_1 + 0xdc))();
      if (cVar3 == '\0') {
        (**(code **)(*(int *)param_1[0x6d] + 0xcc))(0);
      }
      bVar1 = true;
      local_4 = 0xffffffff;
      FUN_00457221();
    }
  }
  else if ((int *)param_1[0x6d] != (int *)0x0) {
    (**(code **)(*(int *)param_1[0x6d] + 0x50))(uVar4);
    param_1[0x6d] = 0;
    bVar1 = true;
  }
  if (uStack_50._3_1_ == '\0') {
    if ((int *)param_1[0x6e] != (int *)0x0) {
      (**(code **)(*(int *)param_1[0x6e] + 0x50))();
      param_1[0x6e] = 0;
      goto LAB_00a2e71f;
    }
  }
  else if (param_1[0x6e] == 0) {
    FUN_0094bd80();
    local_4 = 2;
    uStack_34 = 0;
    uStack_30 = 0;
    if (((int *)param_1[0x65] == (int *)0x0) ||
       (uVar5 = (**(code **)(*(int *)param_1[0x65] + 0xc))(), (uVar5 & 4) == 0)) {
      uVar11 = 1;
      puVar9 = (undefined4 *)
               (**(code **)(*(int *)param_1[0x65] + 0x70))(&local_3c,auStack_18,param_1[0x11],1);
      uStack_44 = *puVar9;
      uStack_40 = puVar9[1];
      iVar7 = FUN_004555c3(&iStack_4c);
      uStack_40 = *(undefined4 *)(iVar7 + 4);
    }
    else {
      uVar11 = 3;
      puVar9 = (undefined4 *)
               (**(code **)(*(int *)param_1[0x65] + 0x70))(&local_3c,auStack_18,param_1[0x11],3);
      uStack_44 = *puVar9;
      uStack_40 = puVar9[1];
      puVar9 = (undefined4 *)FUN_004555c3(&iStack_4c);
      uStack_44 = *puVar9;
    }
    (**(code **)(*param_1 + 0x278))(&stack0xffffffa4,&stack0xffffffa8);
    uVar5 = uVar4;
    (**(code **)(*param_1 + 0x270))(&stack0xffffffa8,&stack0xffffffa4);
    iStack_48 = (uVar5 + unaff_EDI) - (int)uStack_50;
    iStack_4c = (unaff_EDI + uVar4) - unaff_EBX;
    pvVar10 = operator_new(0x1a0);
    local_24[0] = 3;
    if (pvVar10 == (void *)0x0) {
      iVar7 = 0;
    }
    else {
      iVar7 = FUN_00a2e1e0(param_1,0xffffffff,&iStack_4c,&stack0xffffffac,uVar11);
    }
    param_1[0x6e] = iVar7;
    local_24[0] = 2;
    cVar3 = (**(code **)(*param_1 + 0xdc))();
    if (cVar3 == '\0') {
      (**(code **)(*(int *)param_1[0x6e] + 0xcc))(0);
    }
    local_4 = 0xffffffff;
    FUN_00457221();
    goto LAB_00a2e71f;
  }
  if (!bVar1) {
    ExceptionList = local_c;
    return;
  }
LAB_00a2e71f:
  FUN_0048a085(param_1[0x11],&PTR_u_wxRibbonBar_0323f5e4,param_1);
  FUN_00a28380(param_1);
  ExceptionList = local_c;
  return;
}



// WARNING: Removing unreachable block (ram,0x00a2ea55)
// WARNING: Removing unreachable block (ram,0x00a2ea63)
// WARNING: Removing unreachable block (ram,0x00a2e940)
// WARNING: Removing unreachable block (ram,0x00a2eaf5)

undefined4 __fastcall FUN_00a2e860(int *param_1)

{
  int *piVar1;
  bool bVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int unaff_EBP;
  int unaff_EDI;
  bool bVar10;
  undefined auStack_1c [4];
  undefined auStack_18 [8];
  int iStack_10;
  int iStack_c;
  
  iVar4 = (**(code **)(*(int *)param_1[0x65] + 0x10))();
  iVar5 = (**(code **)(*(int *)param_1[0x65] + 0x10))();
  iStack_10 = iVar5;
  iStack_c = iVar4;
  if (((int *)param_1[0x65] == (int *)0x0) ||
     (uVar6 = (**(code **)(*(int *)param_1[0x65] + 0xc))(), (uVar6 & 4) == 0)) {
    iVar7 = (**(code **)(*(int *)param_1[0x65] + 0x10))();
    (**(code **)(*param_1 + 0x278))(auStack_18,auStack_1c);
    iVar8 = (**(code **)(*(int *)param_1[0x65] + 0x10))(4);
    iVar8 = (unaff_EBP - iVar4) - iVar8;
    iVar9 = (**(code **)(*(int *)param_1[0x65] + 0x10))(3);
    iVar5 = param_1[0x73] - iVar5;
  }
  else {
    iVar7 = (**(code **)(*(int *)param_1[0x65] + 0x10))();
    (**(code **)(*param_1 + 0x278))(auStack_1c,auStack_18);
    iVar8 = (**(code **)(*(int *)param_1[0x65] + 0x10))(3);
    iVar8 = (unaff_EBP - iVar5) - iVar8;
    iVar9 = (**(code **)(*(int *)param_1[0x65] + 0x10))(4);
    iVar5 = param_1[0x73] - iVar4;
  }
  iVar5 = iVar5 - iVar9;
  if (iVar8 < 0) {
    iVar8 = 0;
  }
  uVar6 = 0;
  if (param_1[0x70] != 0) {
    do {
      piVar1 = (int *)(param_1[0x6f] + uVar6 * 8);
      *piVar1 = iVar8;
      iVar5 = iVar5 - piVar1[1];
      if (uVar6 != 0) {
        iVar5 = iVar5 + -2;
      }
      uVar6 = uVar6 + 1;
    } while (uVar6 < (uint)param_1[0x70]);
  }
  bVar10 = false;
  bVar2 = false;
  if (iVar5 < 0) {
    if (*(char *)(param_1 + 0x74) == '\0') {
      cVar3 = FUN_00a2d990(1,-iVar5);
      if (cVar3 == '\0') {
        param_1[0x71] = 0;
        param_1[0x72] = -iVar5;
        goto LAB_00a2ea3a;
      }
    }
    else {
      iVar9 = -iVar5;
      iVar8 = param_1[0x71];
      param_1[0x72] = iVar9;
      if (iVar8 != iVar9 && SBORROW4(iVar8,iVar9) == iVar8 + iVar5 < 0) {
        param_1[0x71] = iVar9;
LAB_00a2ea3a:
        bVar10 = false;
        bVar2 = true;
      }
    }
  }
  else {
    bVar10 = *(char *)(param_1 + 0x74) != '\0';
    bVar2 = false;
    if (0 < iVar5) {
      FUN_00a2d730(1,iVar5);
    }
  }
  if (*(char *)(param_1 + 0x74) != '\0') {
    iVar7 = iVar4 - param_1[0x71];
    if ((int *)param_1[0x6d] != (int *)0x0) {
      (**(code **)(*(int *)param_1[0x6d] + 0x278))(&stack0xffffffd8,&stack0xffffffd4);
      iVar7 = iVar7 - unaff_EDI;
    }
  }
  iVar4 = param_1[0x15];
  if (iVar4 != 0) {
    iVar5 = 0;
    do {
      iVar8 = *(int *)(iVar5 + 4 + param_1[0x6f]);
      (**(code **)(**(int **)(iVar4 + 8) + 0x288))
                (unaff_EBP,iVar7,*(undefined4 *)(iVar5 + param_1[0x6f]),iVar8,3);
      iVar7 = iVar7 + iVar8 + 2;
      iVar4 = *(int *)(iVar4 + 0xc);
      iVar5 = iVar5 + 8;
    } while (iVar4 != 0);
  }
  if (!bVar2) {
    if (!bVar10) goto LAB_00a2eb3a;
    param_1[0x71] = 0;
    param_1[0x72] = 0;
  }
  FUN_00a2e3b0();
LAB_00a2eb3a:
  (**(code **)(*param_1 + 0x15c))(1,0);
  return 1;
}



undefined4 __fastcall FUN_00a2ec10(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0x4c) == 0) {
    return 1;
  }
  FUN_00a2d650(FUN_004555c3,0);
  uVar1 = FUN_00a2e860();
  return uVar1;
}



undefined ** FUN_00a2ec40(void)

{
  return &PTR_u_wxRibbonPanel_0323f6e0;
}



undefined ** FUN_00a2ec50(void)

{
  return &PTR_PTR_00da0238;
}



undefined * FUN_00a2ec60(void)

{
  return &DAT_032eb048;
}



undefined __fastcall FUN_00a2ec70(int param_1)

{
  return *(undefined *)(param_1 + 0x1cd);
}



undefined4 __fastcall FUN_00a2ec80(int param_1)

{
  return *(undefined4 *)(param_1 + 0x1bc);
}



void __fastcall FUN_00a2ec90(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf0904;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxRibbonPanel::vftable;
  local_4 = 2;
  if (param_1[0x70] != 0) {
    *(undefined4 *)(param_1[0x70] + 0x1bc) = 0;
    (**(code **)(**(int **)(param_1[0x70] + 0x44) + 0x50))(uVar1);
  }
  local_4._0_1_ = 1;
  FUN_008f7630();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_008f7630();
  local_4 = 0xffffffff;
  FUN_0044cd6b();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a2edc0(int *param_1_00,int *param_1)

{
  code *pcVar1;
  int *piVar2;
  char cVar3;
  int *local_4;
  
  piVar2 = param_1;
  cVar3 = '\0';
  local_4 = param_1_00;
  if ((-1 < *param_1) && (-1 < param_1[1])) {
    (**(code **)(*param_1_00 + 0x278))(&param_1,&local_4);
    if ((*piVar2 < (int)param_1) && (piVar2[1] < (int)local_4)) {
      cVar3 = '\x01';
    }
  }
  if (cVar3 != *(char *)((int)param_1_00 + 0x1cd)) {
    pcVar1 = *(code **)(*param_1_00 + 0x15c);
    *(char *)((int)param_1_00 + 0x1cd) = cVar3;
    (*pcVar1)(0,0);
  }
  return;
}



undefined4 __thiscall FUN_00a2ee60(int *param_1,undefined4 param_2)

{
  char cVar1;
  void *pvVar2;
  undefined auStack_18 [8];
  void *pvStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be5e08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  cVar1 = (**(code **)(*param_1 + 0xdc))(DAT_0323f878 ^ (uint)&stack0xffffffe4);
  if ((cVar1 != '\0') && ((param_1[0x6a] == -1 || (param_1[0x6b] == -1)))) {
    (**(code **)(*(int *)param_1[0x35] + 0x44))(param_2);
    ExceptionList = pvStack_10;
    return param_2;
  }
  FUN_0094bd30(param_1);
  pvVar2 = (void *)0x0;
  uStack_4 = 0;
  (**(code **)(*(int *)param_1[0x65] + 0x78))
            (param_2,auStack_18,param_1,param_1[0x6a],param_1[0x6b]);
  FUN_00457221();
  ExceptionList = pvVar2;
  return param_2;
}



undefined4 FUN_00a2ef30(undefined4 param_1)

{
  FUN_00a2ee60(param_1);
  return param_1;
}



undefined4 __thiscall FUN_00a2ef50(int *param_1_00,undefined4 param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 unaff_retaddr;
  undefined local_34 [8];
  undefined local_2c [4];
  void *apvStack_28 [2];
  undefined4 uStack_20;
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0a20;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  if (param_1_00[0x35] != 0) {
    FUN_0094bd30(param_1_00);
    iVar1 = *(int *)param_1_00[0x65];
    local_4 = 0;
    puVar3 = (undefined4 *)(**(code **)(*param_1_00 + 0x36c))(local_34,uVar2);
    (**(code **)(iVar1 + 0x74))(unaff_retaddr,apvStack_28,param_1_00,*puVar3,puVar3[1],0);
    uStack_20 = 0xffffffff;
    FUN_00457221();
    ExceptionList = apvStack_28[0];
    return unaff_retaddr;
  }
  if (param_1_00[0x13] == 1) {
    FUN_0086aef0(0);
    FUN_0094bd30(param_1_00);
    iVar1 = *(int *)param_1_00[0x65];
    local_4 = 1;
    puVar3 = (undefined4 *)FUN_0091b530(local_2c);
    (**(code **)(iVar1 + 0x74))(param_1,local_18,param_1_00,*puVar3,puVar3[1],0);
    local_4 = 0xffffffff;
    FUN_00457221();
  }
  else {
    FUN_00936480(param_1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __fastcall FUN_00a2f090(int *param_1)

{
  uint uVar1;
  undefined3 uVar3;
  int iVar2;
  undefined3 extraout_var;
  undefined4 unaff_EBP;
  undefined4 unaff_ESI;
  undefined local_30 [4];
  undefined local_2c [4];
  undefined4 local_28;
  undefined4 local_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0928;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  uVar3 = (undefined3)((uint)ExceptionList >> 8);
  if (*(char *)(param_1 + 0x73) == '\0') {
    local_28 = 0;
    local_24 = 0;
    FUN_0094bd30(param_1);
    local_4 = 0;
    (**(code **)(*param_1 + 0x278))(local_30,local_2c,uVar1);
    (**(code **)(*(int *)param_1[0x65] + 0x78))
              (&local_28,&uStack_20,param_1,unaff_ESI,unaff_EBP,local_30);
    if (param_1[0x35] == 0) {
      if (param_1[0x13] == 1) {
        iVar2 = FUN_0086aef0(0);
        (**(code **)(**(int **)(iVar2 + 8) + 0x288))(local_28,local_24,uStack_20,uStack_1c,3);
      }
    }
    else {
      FUN_0091afa0(local_30,&uStack_20);
    }
    local_4 = 0xffffffff;
    FUN_00457221();
    uVar3 = extraout_var;
  }
  ExceptionList = local_c;
  return CONCAT31(uVar3,1);
}



void __thiscall FUN_00a2f1a0(int param_1_00,int param_1)

{
  uint uVar1;
  void *unaff_ESI;
  int unaff_retaddr;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0958;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  if (((*(int *)(param_1_00 + 0x1bc) != 0) && (*(char *)(param_1 + 0x25) != '\0')) &&
     (*(int *)(param_1 + 0xc) != DAT_032bfe40)) {
    FUN_0091ad20(param_1);
    local_4 = 0;
    (**(code **)(**(int **)(*(int *)(param_1_00 + 0x1bc) + 0x70) + 0x18))(param_1,uVar1);
    *(int *)(unaff_retaddr + 0x20) = *(int *)(unaff_retaddr + 0x20) + 1;
    ExceptionList = unaff_ESI;
    return;
  }
  FUN_0091cc20(param_1);
  ExceptionList = local_c;
  return;
}



undefined4 __fastcall FUN_00a2f240(int *param_1)

{
  int *piVar1;
  int iVar2;
  
  iVar2 = param_1[0x6f];
  while( true ) {
    if (iVar2 != 0) {
      iVar2 = param_1[0x13];
      while (iVar2 != 0) {
        piVar1 = *(int **)(param_1[0x15] + 8);
        (**(code **)(*piVar1 + 0x120))(param_1[0x6f]);
        (**(code **)(*piVar1 + 0xcc))(0);
        iVar2 = param_1[0x13];
      }
      iVar2 = param_1[0x35];
      if (iVar2 != 0) {
        FUN_0091c600(0,0);
        FUN_0091c600(iVar2,1);
      }
      *(undefined4 *)(param_1[0x6f] + 0x1c0) = 0;
      (**(code **)(*(int *)param_1[0x6f] + 0x360))();
      (**(code **)(*(int *)param_1[0x6f] + 0x15c))(1,0);
      piVar1 = (int *)param_1[0x11];
      (**(code **)(*param_1 + 0x50))();
      (**(code **)(*piVar1 + 0x50))();
      return 1;
    }
    param_1 = (int *)param_1[0x70];
    if (param_1 == (int *)0x0) break;
    iVar2 = param_1[0x6f];
  }
  return 0;
}



void FUN_00a2f320(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
                 int param_7,int param_8)

{
  bool bVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int local_60;
  int local_5c;
  uint uStack_58;
  int iStack_4c;
  int iStack_48;
  int iStack_44;
  int iStack_40;
  int local_3c;
  int local_38;
  int local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  int iStack_1c;
  int iStack_18;
  int iStack_14;
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0988;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  bVar1 = false;
  local_60 = 0;
  local_5c = 0;
  if (param_8 == 0x20) {
    local_3c = param_4 + -1;
    local_60 = -1;
  }
  else {
    if (param_8 == 0x40) {
      local_3c = (param_4 - param_6) / 2 + param_2;
      local_38 = param_3 - param_7;
      bVar1 = true;
      local_5c = 1;
      goto LAB_00a2f41c;
    }
    if (param_8 == 0x80) {
      local_3c = (param_4 - param_6) / 2 + param_2;
      local_38 = param_5 + -1 + param_3;
      bVar1 = true;
      local_5c = -1;
      goto LAB_00a2f41c;
    }
    local_3c = -param_6;
    local_60 = 1;
  }
  local_3c = param_2 + local_3c;
  local_38 = (param_5 - param_7) / 2 + param_3;
LAB_00a2f41c:
  local_34 = param_6;
  local_30 = param_7;
  local_24 = param_6;
  local_20 = param_7;
  param_8 = 0x7fffffff;
  local_2c = local_3c;
  local_28 = local_38;
  uVar3 = FUN_0099a4e0(DAT_0323f878 ^ (uint)&stack0xffffff8c);
  uStack_58 = 0;
  if (uVar3 != 0) {
    do {
      FUN_0099a810(uStack_58);
      uStack_4 = 0;
      FUN_0099a590(&iStack_1c);
      uStack_4 = 0xffffffff;
      FUN_0099a3d0();
      cVar2 = FUN_008f76e0(&local_3c);
      if (cVar2 != '\0') {
        *param_1 = local_3c;
        param_1[1] = local_38;
        local_24 = local_34;
        local_20 = local_30;
        goto LAB_00a2f475;
      }
      cVar2 = FUN_008f7940(&local_3c);
      if (cVar2 != '\0') {
        iVar6 = 0;
        iStack_4c = local_3c;
        iStack_48 = local_38;
        iStack_44 = local_34;
        iStack_40 = local_30;
        if (bVar1) {
          if (iStack_14 + -1 + iStack_1c < local_34 + -1 + local_3c) {
            iVar6 = ((local_34 - iStack_14) - iStack_1c) + local_3c;
            iStack_4c = local_3c - iVar6;
          }
          else if (local_3c < iStack_1c) {
            iVar6 = iStack_1c - local_3c;
            iStack_4c = local_3c + iVar6;
          }
        }
        else {
          if (iStack_18 + -1 + iStack_10 < local_38 + -1 + local_30) {
            iVar6 = ((local_30 - iStack_18) - iStack_10) + local_38;
            iStack_48 = -iVar6;
          }
          else {
            if (iStack_18 <= local_38) goto LAB_00a2f574;
            iVar6 = iStack_18 - local_38;
            iStack_48 = iVar6;
          }
          iStack_48 = local_38 + iStack_48;
        }
LAB_00a2f574:
        cVar2 = FUN_008f76e0(&iStack_4c);
        if (cVar2 == '\0') {
          iVar4 = (param_6 + param_4) * local_60;
          iVar5 = (param_5 + param_7) * local_5c;
          iStack_48 = iStack_48 + iVar5;
          iStack_4c = iStack_4c + iVar4;
          iVar6 = iVar4 * iVar4 + iVar6 + iVar5 * iVar5;
        }
        cVar2 = FUN_008f76e0(&iStack_4c);
        if ((cVar2 != '\0') && (iVar6 < param_8)) {
          local_2c = iStack_4c;
          local_28 = iStack_48;
          local_24 = iStack_44;
          local_20 = iStack_40;
          param_8 = iVar6;
        }
      }
      uStack_58 = uStack_58 + 1;
    } while (uStack_58 < uVar3);
  }
  *param_1 = local_2c;
  param_1[1] = local_28;
LAB_00a2f475:
  param_1[2] = local_24;
  param_1[3] = local_20;
  ExceptionList = local_c;
  return;
}



undefined4 __thiscall FUN_00a2f640(undefined4 param_1_00,byte param_1)

{
  FUN_00a2ec90();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00a2f660(int *param_1_00,int param_1)

{
  code *pcVar1;
  int iVar2;
  int *unaff_retaddr;
  
  (**(code **)(*param_1_00 + 0x5c))(param_1);
  (**(code **)(*param_1_00 + 0x54))(param_1);
  param_1_00[0x6c] = DAT_03238d04;
  param_1_00[0x6d] = DAT_03238d08;
  param_1_00[0x6a] = DAT_03238d04;
  param_1_00[0x6b] = DAT_03238d08;
  param_1_00[0x72] = param_1;
  param_1_00[0x6e] = 0x80;
  param_1_00[0x6f] = 0;
  param_1_00[0x70] = 0;
  if (param_1_00 + 0x66 != unaff_retaddr) {
    FUN_0083ea60(unaff_retaddr);
  }
  *(undefined *)(param_1_00 + 0x73) = 0;
  *(undefined *)((int)param_1_00 + 0x1cd) = 0;
  if (param_1_00[0x65] == 0) {
    iVar2 = FUN_0048a085(param_1_00[0x11],&PTR_u_wxRibbonControl_0323f6f8);
    if (iVar2 != 0) {
      param_1_00[0x65] = *(int *)(iVar2 + 0x194);
    }
  }
  pcVar1 = *(code **)(*param_1_00 + 0x184);
  *(byte *)(param_1_00 + 0x37) = *(byte *)(param_1_00 + 0x37) | 1;
  (*pcVar1)(2);
  (**(code **)(*param_1_00 + 0x94))(&stack0xffffffec);
  return;
}



void FUN_00a2f760(int param_1)

{
  undefined4 local_8;
  undefined4 local_4;
  
  local_8 = *(undefined4 *)(param_1 + 0x2c);
  local_4 = *(undefined4 *)(param_1 + 0x30);
  FUN_00a2edc0(&local_8);
  return;
}



void FUN_00a2f790(int param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  char cVar4;
  undefined **ppuVar5;
  int unaff_ESI;
  int iStack_10;
  int local_c;
  int local_4;
  
  iVar3 = param_1;
  piVar1 = *(int **)(param_1 + 8);
  local_4 = *(int *)(param_1 + 0x30);
  iVar2 = *(int *)(param_1 + 0x2c);
  if ((piVar1 != (int *)0x0) &&
     (((ppuVar5 = (undefined **)(**(code **)*piVar1)(), ppuVar5 == &PTR_u_wxWindow_03239714 ||
       ((ppuVar5[3] != (undefined *)0x0 &&
        (cVar4 = FUN_0048a047(&PTR_u_wxWindow_03239714), cVar4 != '\0')))) ||
      ((ppuVar5[4] != (undefined *)0x0 &&
       (cVar4 = FUN_0048a047(&PTR_u_wxWindow_03239714), cVar4 != '\0')))))) {
    (**(code **)(*piVar1 + 0x270))(&param_1,&iStack_10);
    iStack_10 = iVar2 + local_4;
    local_c = local_c + unaff_ESI;
    FUN_00a2edc0(&iStack_10);
  }
  *(undefined *)(iVar3 + 0x24) = 1;
  return;
}



void __fastcall FUN_00a2f920(int *param_1)

{
  uint uVar1;
  undefined4 local_48;
  undefined4 local_44 [3];
  undefined auStack_38 [8];
  undefined **local_30;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf09b8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  FUN_00957210(param_1);
  local_4 = 0;
  if (param_1[0x65] != 0) {
    if (*(char *)(param_1 + 0x73) == '\0') {
      (**(code **)(*param_1 + 0x278))(local_44,&local_48,uVar1);
      local_48 = 0;
      local_44[0] = 0;
      (**(code **)(*(int *)param_1[0x65] + 0x44))(auStack_38,param_1,&local_48);
    }
    else {
      (**(code **)(*param_1 + 0x278))(&local_48,local_44);
      local_48 = 0;
      local_44[0] = 0;
      (**(code **)(*(int *)param_1[0x65] + 0x50))(auStack_38,param_1,&local_48,param_1 + 0x68);
    }
  }
  local_4 = 0xffffffff;
  local_30 = wxAutoBufferedPaintDC::vftable;
  FUN_009475a0();
  ExceptionList = local_c;
  return;
}



int * __thiscall FUN_00a2fa30(int *param_1_00,int *param_1,uint param_2,int param_3,int param_4)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int local_38;
  int iStack_34;
  int iStack_30;
  int iStack_2c;
  int local_28;
  int iStack_24;
  undefined auStack_20 [8];
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf09e8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffb8;
  ExceptionList = &local_c;
  if ((int *)param_1_00[0x70] != (int *)0x0) {
    (**(code **)(*(int *)param_1_00[0x70] + 0x364))(param_1,param_2,param_3,param_4);
    ExceptionList = local_c;
    return param_1;
  }
  if (param_1_00[0x65] == 0) goto LAB_00a2fc5a;
  FUN_0094bd30(param_1_00);
  local_4 = 0;
  (**(code **)(*(int *)param_1_00[0x65] + 0x78))(&local_38,local_18,param_1_00,param_3,param_4,0);
  if (param_1_00[0x35] == 0) {
    if (param_1_00[0x13] == 1) {
      iVar5 = FUN_0086aef0(0);
      iVar5 = FUN_0048a085(*(undefined4 *)(iVar5 + 8),&PTR_u_wxRibbonControl_0323f6f8);
      if (iVar5 != 0) {
        piVar3 = (int *)FUN_00a30ae0(auStack_20,param_2,local_38,iStack_34);
        iVar5 = *piVar3;
        iVar6 = piVar3[1];
        iStack_30 = iVar5;
        iStack_2c = iVar6;
        cVar1 = FUN_0090bd20(&iStack_30,&local_38);
        goto LAB_00a2fb89;
      }
    }
  }
  else {
    piVar3 = (int *)(**(code **)(*param_1_00 + 0xa4))(&iStack_30);
    iVar5 = *piVar3;
    iVar6 = piVar3[1];
    uVar4 = (**(code **)(*(int *)param_1_00[0x65] + 0xc))();
    if ((uVar4 & 4) == 0) {
      cVar1 = local_38 <= iVar5;
      if (iVar6 < iStack_34) {
        iVar6 = iStack_34;
      }
    }
    else {
      cVar1 = iStack_34 <= iVar6;
      if (iVar5 < local_38) {
        iVar5 = local_38;
      }
    }
LAB_00a2fb89:
    if (cVar1 != '\0') {
      if ((((*(byte *)(param_1_00 + 0x72) & 1) == 0) && (param_1_00[0x6c] != -1)) &&
         (param_1_00[0x6d] != -1)) {
        iVar5 = param_1_00[0x6c];
        if ((param_2 != 4) && (param_4 = param_1_00[0x6d], param_2 == 8)) {
          iVar5 = param_3;
        }
        local_4 = 0xffffffff;
        *param_1 = iVar5;
        param_1[1] = param_4;
        FUN_00457221();
        ExceptionList = local_c;
        return param_1;
      }
      local_4 = 0xffffffff;
      *param_1 = param_3;
      param_1[1] = param_4;
      FUN_00457221();
      ExceptionList = local_c;
      return param_1;
    }
    if ((iVar5 != -1) && (iVar6 != -1)) {
      (**(code **)(*(int *)param_1_00[0x65] + 0x74))(param_1,local_18,param_1_00,iVar5,iVar6,0);
      local_4 = 0xffffffff;
      FUN_00457221();
      ExceptionList = local_c;
      return param_1;
    }
  }
  local_4 = 0xffffffff;
  FUN_00457221();
LAB_00a2fc5a:
  (**(code **)(*param_1_00 + 0xa4))(&local_28,uVar2);
  if (((param_2 & 4) != 0) && (param_3 = (param_3 * 4) / 5, param_3 < local_28)) {
    param_3 = local_28;
  }
  if (((param_2 & 8) != 0) && (param_4 = (param_4 * 4) / 5, param_4 < iStack_24)) {
    param_4 = iStack_24;
  }
  *param_1 = param_3;
  param_1[1] = param_4;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_00a2fcf0(int param_1_00,undefined4 *param_1)

{
  int *piVar1;
  undefined4 uVar2;
  uint uVar3;
  undefined4 *puVar4;
  int iVar5;
  undefined4 *unaff_retaddr;
  undefined local_34 [8];
  undefined local_2c [4];
  void *pvStack_28;
  void *local_24;
  undefined4 uStack_20;
  undefined4 auStack_1c [4];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0a20;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  if (*(int *)(param_1_00 + 0xd4) != 0) {
    ExceptionList = &local_c;
    FUN_0094bd30(param_1_00);
    iVar5 = **(int **)(param_1_00 + 0x194);
    local_4 = 0;
    puVar4 = (undefined4 *)FUN_00a2ee60(local_34);
    (**(code **)(iVar5 + 0x74))(param_1,&local_24,param_1_00,*puVar4,puVar4[1],0,uVar3);
    auStack_1c[0] = 0xffffffff;
    FUN_00457221();
    ExceptionList = local_24;
    return param_1;
  }
  if (*(int *)(param_1_00 + 0x4c) == 1) {
    ExceptionList = &local_c;
    iVar5 = FUN_0086aef0(0);
    piVar1 = *(int **)(iVar5 + 8);
    FUN_0094bd30(param_1_00);
    iVar5 = **(int **)(param_1_00 + 0x194);
    local_4 = 1;
    puVar4 = (undefined4 *)(**(code **)(*piVar1 + 0xa4))(local_2c);
    (**(code **)(iVar5 + 0x74))(unaff_retaddr,auStack_1c,param_1_00,*puVar4,puVar4[1],0);
    uStack_20 = 0xffffffff;
    FUN_00457221();
    ExceptionList = pvStack_28;
    return unaff_retaddr;
  }
  uVar2 = *(undefined4 *)(param_1_00 + 100);
  *param_1 = *(undefined4 *)(param_1_00 + 0x60);
  param_1[1] = uVar2;
  return param_1;
}



undefined4 __fastcall FUN_00a2fe40(int *param_1)

{
  int iVar1;
  bool bVar2;
  void **ppvVar3;
  char cVar4;
  undefined **ppuVar5;
  undefined4 *puVar6;
  int *piVar7;
  uint uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  uint uStack_58;
  undefined **ppuStack_40;
  int iStack_3c;
  undefined **ppuStack_38;
  int iStack_34;
  int iStack_30;
  int iStack_2c;
  undefined auStack_20 [8];
  undefined auStack_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0a58;
  uStack_58 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  bVar2 = true;
  ppvVar3 = &local_c;
  local_c = ExceptionList;
  for (iVar1 = param_1[0x15]; ExceptionList = ppvVar3, iVar1 != 0; iVar1 = *(int *)(iVar1 + 0xc)) {
    piVar7 = *(int **)(iVar1 + 8);
    if (((piVar7 != (int *)0x0) &&
        (((ppuVar5 = (undefined **)(**(code **)*piVar7)(),
          ppuVar5 == &PTR_u_wxRibbonControl_0323f6f8 ||
          ((ppuVar5[3] != (undefined *)0x0 &&
           (cVar4 = FUN_0048a047(&PTR_u_wxRibbonControl_0323f6f8), cVar4 != '\0')))) ||
         ((ppuVar5[4] != (undefined *)0x0 &&
          (cVar4 = FUN_0048a047(&PTR_u_wxRibbonControl_0323f6f8), cVar4 != '\0')))))) &&
       (cVar4 = (**(code **)(*piVar7 + 0x360))(), cVar4 == '\0')) {
      bVar2 = false;
    }
    ppvVar3 = (void **)ExceptionList;
  }
  uVar9 = 0;
  uVar10 = 0;
  if (param_1[0x35] == 0) {
    if (param_1[0x13] == 1) {
      puVar6 = (undefined4 *)(**(code **)(**(int **)(param_1[0x15] + 8) + 0xa4))(auStack_20);
      goto LAB_00a2ff0a;
    }
  }
  else {
    puVar6 = (undefined4 *)FUN_00a2ee60(auStack_20);
LAB_00a2ff0a:
    uVar9 = puVar6[1];
    uVar10 = *puVar6;
  }
  if (param_1[0x65] == 0) {
    param_1[0x6c] = -1;
    param_1[0x6d] = -1;
    goto LAB_00a300eb;
  }
  FUN_0094bd30(param_1);
  uStack_4 = 0;
  piVar7 = (int *)(**(code **)(*(int *)param_1[0x65] + 0x74))
                            (auStack_20,auStack_18,param_1,uVar10,uVar9,0);
  param_1[0x6a] = *piVar7;
  param_1[0x6b] = piVar7[1];
  uStack_58 = 0;
  FUN_00a2fcf0(&stack0xffffffb8);
  piVar7 = (int *)(**(code **)(*(int *)param_1[0x65] + 0x8c))
                            (&ppuStack_38,&iStack_30,param_1,&uStack_58,param_1 + 0x6e);
  param_1[0x6c] = *piVar7;
  param_1[0x6d] = piVar7[1];
  cVar4 = (**(code **)(param_1[0x66] + 0x10))();
  if (cVar4 == '\0') {
LAB_00a30065:
    if (param_1 + 0x68 != param_1 + 0x66) {
      FUN_0083ea60(param_1 + 0x66);
    }
  }
  else {
    if (param_1[0x67] == 0) {
      ppuStack_38 = (undefined **)0x0;
      iStack_34 = 0;
    }
    else {
      iStack_34 = *(int *)(param_1[0x67] + 0xc);
      ppuStack_38 = *(undefined ***)(param_1[0x67] + 8);
    }
    if ((ppuStack_38 == ppuStack_40) && (iStack_34 == iStack_3c)) goto LAB_00a30065;
    FUN_008f3b70(&ppuStack_38);
    uStack_4._0_1_ = 1;
    FUN_009055a0(ppuStack_40,iStack_3c,1);
    piVar7 = (int *)FUN_00414f38(&ppuStack_38,0xffffffff);
    uStack_4._0_1_ = 2;
    if (param_1 + 0x68 != piVar7) {
      FUN_0083ea60(piVar7);
    }
    uStack_4._0_1_ = 1;
    FUN_008f7630();
    uStack_4 = (uint)uStack_4._1_3_ << 8;
    ppuStack_38 = wxObject::vftable;
    FUN_0083e850();
  }
  if ((iStack_30 < param_1[0x6c]) && (iStack_2c < param_1[0x6d])) {
    param_1[0x6c] = -1;
    param_1[0x6d] = -1;
  }
  else {
    uVar8 = (**(code **)(*(int *)param_1[0x65] + 0xc))();
    if ((uVar8 & 4) == 0) {
      param_1[0x6d] = iStack_2c;
    }
    else {
      param_1[0x6c] = iStack_30;
    }
  }
  uStack_4 = 0xffffffff;
  FUN_00457221();
LAB_00a300eb:
  cVar4 = (**(code **)(*param_1 + 0x204))();
  if ((cVar4 != '\0') && (bVar2)) {
    ExceptionList = local_c;
    return 1;
  }
  ExceptionList = local_c;
  return 0;
}



void __thiscall FUN_00a30140(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  
  if (*(int *)(param_1_00 + 0x1c4) != 0) {
    FUN_0091cf30(0xffffffff,0xffffffff,DAT_032bfe3c,FUN_00a30140,0,0,param_1_00);
    *(undefined4 *)(param_1_00 + 0x1c4) = 0;
    iVar1 = *(int *)(param_1 + 0x28);
    if (iVar1 == param_1_00) {
LAB_00a301a2:
      *(int *)(param_1_00 + 0x1c4) = iVar1;
      FUN_0044634a(DAT_032bfe3c,FUN_00a30140,0,0,param_1_00);
    }
    else {
      iVar2 = iVar1;
      if (iVar1 == 0) {
LAB_00a30196:
        FUN_00a2f240();
        return;
      }
      do {
        iVar2 = *(int *)(iVar2 + 0x44);
        if (iVar2 == param_1_00) goto LAB_00a301a2;
      } while (iVar2 != 0);
      if (iVar1 != *(int *)(param_1_00 + 0x1bc)) goto LAB_00a30196;
    }
    *(undefined *)(param_1 + 0x24) = 1;
  }
  return;
}



undefined4 __thiscall FUN_00a301d0(int param_1_00,int param_1,int param_2)

{
  int local_8;
  int local_4;
  
  if (*(int *)(param_1_00 + 0xd4) == 0) {
    if ((*(int *)(param_1_00 + 0x1b0) != -1) && (*(int *)(param_1_00 + 0x1b4) != -1)) {
      if (((*(int *)(param_1_00 + 0x1b0) < param_1) || (*(int *)(param_1_00 + 0x1b4) < param_2)) &&
         ((*(int *)(param_1_00 + 0x1a8) <= param_1 && (*(int *)(param_1_00 + 0x1ac) <= param_2)))) {
        return 0;
      }
      return 1;
    }
  }
  else {
    FUN_00a2fcf0(&local_8);
    if ((param_1 < local_8) || (param_2 < local_4)) {
      return 1;
    }
  }
  return 0;
}



int * __thiscall FUN_00a30260(int *param_1_00,int *param_1,uint param_2,int param_3,int param_4)

{
  char cVar1;
  int *piVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int local_30;
  int local_2c;
  int local_28;
  int iStack_24;
  undefined auStack_20 [8];
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0a88;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if ((int *)param_1_00[0x70] != (int *)0x0) {
    (**(code **)(*(int *)param_1_00[0x70] + 0x368))
              (param_1,param_2,param_3,param_4,DAT_0323f878 ^ (uint)&stack0xffffffc0);
    ExceptionList = local_c;
    return param_1;
  }
  cVar1 = FUN_00a301d0(param_3,param_4);
  if (cVar1 != '\0') {
    FUN_00a2fcf0(&local_30);
    if (param_2 == 4) {
      if ((param_3 < local_30) && (local_2c == param_4)) {
LAB_00a30322:
        *param_1 = local_30;
        param_1[1] = local_2c;
        ExceptionList = local_c;
        return param_1;
      }
    }
    else if (param_2 == 8) {
      if ((local_30 == param_3) && (param_4 < local_2c)) goto LAB_00a30322;
    }
    else if (((param_2 == 0xc) && (param_3 < local_30)) && (param_4 < local_2c)) {
      *param_1 = local_30;
      param_1[1] = local_2c;
      ExceptionList = local_c;
      return param_1;
    }
  }
  if (param_1_00[0x65] == 0) goto LAB_00a3047c;
  FUN_0094bd30(param_1_00);
  local_4 = 0;
  (**(code **)(*(int *)param_1_00[0x65] + 0x78))(&local_28,local_18,param_1_00,param_3,param_4,0);
  if (param_1_00[0x35] == 0) {
    if (param_1_00[0x13] == 1) {
      iVar4 = FUN_0086aef0(0);
      iVar4 = FUN_0048a085(*(undefined4 *)(iVar4 + 8),&PTR_u_wxRibbonControl_0323f6f8);
      if (iVar4 != 0) {
        piVar2 = (int *)FUN_00a30b10(auStack_20,param_2,local_28,iStack_24);
        iVar4 = *piVar2;
        iVar5 = piVar2[1];
        goto LAB_00a30411;
      }
    }
  }
  else {
    piVar2 = (int *)(**(code **)(*param_1_00 + 0x36c))(&local_30);
    iVar4 = *piVar2;
    iVar5 = piVar2[1];
    uVar3 = (**(code **)(*(int *)param_1_00[0x65] + 0xc))();
    if ((uVar3 & 4) == 0) {
      if (iVar5 != iStack_24) {
        iVar5 = iStack_24;
      }
    }
    else if (iVar4 != local_28) {
      iVar4 = local_28;
    }
LAB_00a30411:
    if ((iVar4 != -1) && (iVar5 != -1)) {
      if ((iVar4 == local_28) && (iVar5 == iStack_24)) {
        *param_1 = param_3;
        param_1[1] = param_4;
      }
      else {
        (**(code **)(*(int *)param_1_00[0x65] + 0x74))(param_1,local_18,param_1_00,iVar4,iVar5,0);
      }
      local_4 = 0xffffffff;
      FUN_00457221();
      ExceptionList = local_c;
      return param_1;
    }
  }
  local_4 = 0xffffffff;
  FUN_00457221();
LAB_00a3047c:
  if ((param_2 & 4) != 0) {
    iVar4 = param_3 * 5 + 3;
    param_3 = (int)(iVar4 + (iVar4 >> 0x1f & 3U)) >> 2;
  }
  if ((param_2 & 8) != 0) {
    iVar4 = param_4 * 5 + 3;
    param_4 = (int)(iVar4 + (iVar4 >> 0x1f & 3U)) >> 2;
  }
  *param_1 = param_3;
  param_1[1] = param_4;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall
FUN_00a305a0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  char cVar1;
  int iVar2;
  
  if (((*(byte *)(param_1_00 + 0x72) & 1) == 0) &&
     (cVar1 = FUN_00a301d0(param_3,param_4), cVar1 != '\0')) {
    cVar1 = '\x01';
  }
  else {
    cVar1 = '\0';
  }
  if (cVar1 != *(char *)(param_1_00 + 0x73)) {
    iVar2 = param_1_00[0x15];
    *(char *)(param_1_00 + 0x73) = cVar1;
    if (iVar2 != 0) {
      do {
        (**(code **)(**(int **)(iVar2 + 8) + 0xcc))(cVar1 == '\0');
        iVar2 = *(int *)(iVar2 + 0xc);
      } while (iVar2 != 0);
    }
    (**(code **)(*param_1_00 + 0x15c))(1,0);
  }
  FUN_00911700(param_1,param_2,param_3,param_4,param_5);
  return;
}



undefined4 * __thiscall
FUN_00a30630(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  uint uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0adc;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc4;
  ExceptionList = &local_c;
  FUN_0043c211("control");
  local_4 = 0;
  FUN_00a29a60(param_1,param_2,param_5,param_6,0x200000,&DAT_032c0398,local_30);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  *param_1_00 = wxRibbonPanel::vftable;
  param_1_00[0x67] = 0;
  param_1_00[0x66] = wxBitmap::vftable;
  param_1_00[0x69] = 0;
  param_1_00[0x68] = wxBitmap::vftable;
  param_1_00[0x6a] = 0;
  param_1_00[0x6b] = 0;
  local_4 = CONCAT31(local_4._1_3_,4);
  param_1_00[0x6c] = 0;
  param_1_00[0x6d] = 0;
  FUN_00a2f660(param_3,param_4,param_7);
  ExceptionList = local_c;
  return param_1_00;
}



undefined * __fastcall FUN_00a30730(int *param_1)

{
  int *piVar1;
  void *pvVar2;
  int iVar3;
  undefined *puVar4;
  int *piVar5;
  undefined auStackY_100 [20];
  undefined4 uStackY_ec;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf0b7c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (((*(char *)(param_1 + 0x73) == '\0') || (param_1[0x6f] != 0)) || (param_1[0x70] != 0)) {
    puVar4 = auStackY_100;
  }
  else {
    FUN_0091b530();
    FUN_004555c3();
    FUN_0093bfc0();
    FUN_00a2f320();
    uStackY_ec = 0xa307f9;
    pvVar2 = operator_new(0x228);
    piVar5 = (int *)0x0;
    local_4 = 0;
    if (pvVar2 != (void *)0x0) {
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      (**(code **)(*param_1 + 0x58))();
      local_4 = 2;
      piVar5 = (int *)FUN_00820a7b();
      FUN_0040159c();
    }
    local_4 = 0xffffffff;
    if (pvVar2 != (void *)0x0) {
      FUN_0040159c();
    }
    pvVar2 = operator_new(0x1d0);
    local_4 = 5;
    if (pvVar2 == (void *)0x0) {
      iVar3 = 0;
    }
    else {
      (**(code **)(*param_1 + 0x58))();
      local_4 = CONCAT31(local_4._1_3_,6);
      iVar3 = FUN_00a30630();
    }
    param_1[0x70] = iVar3;
    local_4 = 0xffffffff;
    if (pvVar2 != (void *)0x0) {
      FUN_0040159c();
    }
    (**(code **)(*(int *)param_1[0x70] + 0x358))();
    *(int **)(param_1[0x70] + 0x1bc) = param_1;
    iVar3 = param_1[0x13];
    while (iVar3 != 0) {
      piVar1 = *(int **)(param_1[0x15] + 8);
      (**(code **)(*piVar1 + 0x120))();
      (**(code **)(*piVar1 + 0xcc))();
      iVar3 = param_1[0x13];
    }
    if (param_1[0x35] != 0) {
      FUN_0091c600();
      FUN_0091c600();
    }
    (**(code **)(*(int *)param_1[0x70] + 0x360))();
    (**(code **)(*param_1 + 0x15c))();
    (**(code **)(*piVar5 + 0xcc))();
    (**(code **)(*(int *)param_1[0x70] + 0x100))();
    puVar4 = (undefined *)0x1;
  }
  ExceptionList = local_c;
  return puVar4;
}



undefined ** FUN_00a30a50(void)

{
  return &PTR_u_wxRibbonControl_0323f6f8;
}



undefined4 __thiscall
FUN_00a30ae0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  (**(code **)(*param_1_00 + 0x364))(param_1,param_2,param_3,param_4);
  return param_1;
}



undefined4 __thiscall
FUN_00a30b10(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  (**(code **)(*param_1_00 + 0x368))(param_1,param_2,param_3,param_4);
  return param_1;
}



undefined __thiscall
FUN_00a30b40(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  int iVar2;
  
  cVar1 = FUN_00936340(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
  if (cVar1 == '\0') {
    return 0;
  }
  iVar2 = FUN_0048a085(param_1,&PTR_u_wxRibbonControl_0323f6f8);
  if (iVar2 != 0) {
    *(undefined4 *)(param_1_00 + 0x194) = *(undefined4 *)(iVar2 + 0x194);
  }
  return 1;
}



undefined4 __fastcall FUN_00a30ba0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x5f0);
}



undefined4 __thiscall FUN_00a30bb0(int param_1_00,undefined4 param_1)

{
  switch(param_1) {
  case 0:
    return *(undefined4 *)(param_1_00 + 0x5f4);
  case 1:
    return *(undefined4 *)(param_1_00 + 0x5f8);
  case 2:
    return *(undefined4 *)(param_1_00 + 0x5fc);
  case 3:
    return *(undefined4 *)(param_1_00 + 0x600);
  case 4:
    return *(undefined4 *)(param_1_00 + 0x604);
  case 5:
    return *(undefined4 *)(param_1_00 + 0x608);
  case 6:
    return *(undefined4 *)(param_1_00 + 0x60c);
  case 7:
    return *(undefined4 *)(param_1_00 + 0x610);
  case 8:
    return *(undefined4 *)(param_1_00 + 0x614);
  case 9:
    return *(undefined4 *)(param_1_00 + 0x618);
  case 10:
    return *(undefined4 *)(param_1_00 + 0x61c);
  case 0xb:
    return *(undefined4 *)(param_1_00 + 0x620);
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\ribbon\\art_msw.cpp",0x1ba,"wxRibbonMSWArtProvider::GetMetric",
                 "Assert failure",L"Invalid Metric Ordinal");
  }
  return 0;
}



void __thiscall FUN_00a30c90(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  switch(param_1) {
  case 0:
    *(undefined4 *)(param_1_00 + 0x5f4) = param_2;
    return;
  case 1:
    *(undefined4 *)(param_1_00 + 0x5f8) = param_2;
    return;
  case 2:
    *(undefined4 *)(param_1_00 + 0x5fc) = param_2;
    return;
  case 3:
    *(undefined4 *)(param_1_00 + 0x600) = param_2;
    return;
  case 4:
    *(undefined4 *)(param_1_00 + 0x604) = param_2;
    return;
  case 5:
    *(undefined4 *)(param_1_00 + 0x608) = param_2;
    return;
  case 6:
    *(undefined4 *)(param_1_00 + 0x60c) = param_2;
    return;
  case 7:
    *(undefined4 *)(param_1_00 + 0x610) = param_2;
    return;
  case 8:
    *(undefined4 *)(param_1_00 + 0x614) = param_2;
    return;
  case 9:
    *(undefined4 *)(param_1_00 + 0x618) = param_2;
    return;
  case 10:
    *(undefined4 *)(param_1_00 + 0x61c) = param_2;
    return;
  case 0xb:
    *(undefined4 *)(param_1_00 + 0x620) = param_2;
    return;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\ribbon\\art_msw.cpp",0x1ea,"wxRibbonMSWArtProvider::SetMetric",
                 "Assert failure",L"Invalid Metric Ordinal");
  }
  return;
}



void __fastcall FUN_00a30da0(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf10e9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1 = wxRibbonMSWArtProvider::vftable;
  local_4 = 0x57;
  param_1[0x178] = wxObject::vftable;
  FUN_0083e850(uVar1);
  local_4._0_1_ = 0x56;
  param_1[0x176] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x55;
  param_1[0x174] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x54;
  param_1[0x172] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x53;
  param_1[0x170] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x52;
  param_1[0x16e] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x51;
  param_1[0x16c] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x50;
  param_1[0x16a] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x4f;
  param_1[0x168] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x4e;
  param_1[0x166] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x4d;
  param_1[0x164] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x4c;
  FUN_00921450();
  local_4._0_1_ = 0x4b;
  FUN_00921450();
  local_4._0_1_ = 0x4a;
  FUN_00921450();
  local_4._0_1_ = 0x49;
  FUN_008f7630();
  local_4._0_1_ = 0x48;
  FUN_008f7630();
  local_4._0_1_ = 0x47;
  FUN_008f7630();
  local_4._0_1_ = 0x46;
  FUN_008f7630();
  local_4._0_1_ = 0x45;
  FUN_008f7630();
  local_4._0_1_ = 0x44;
  FUN_008f7630();
  local_4._0_1_ = 0x43;
  FUN_008f7630();
  local_4._0_1_ = 0x42;
  FUN_008f7630();
  local_4._0_1_ = 0x41;
  param_1[0x149] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x40;
  param_1[0x144] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x3f;
  param_1[0x13f] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x3e;
  param_1[0x13a] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x3d;
  param_1[0x135] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x3c;
  param_1[0x130] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x3b;
  param_1[299] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x3a;
  param_1[0x126] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x39;
  param_1[0x121] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x38;
  param_1[0x11c] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x37;
  param_1[0x117] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x36;
  param_1[0x112] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x35;
  param_1[0x10d] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x34;
  param_1[0x108] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x33;
  param_1[0x103] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x32;
  param_1[0xfe] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x31;
  param_1[0xf9] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x30;
  param_1[0xf4] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x2f;
  param_1[0xef] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x2e;
  param_1[0xea] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x2d;
  param_1[0xe5] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x2c;
  param_1[0xe0] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x2b;
  param_1[0xdb] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x2a;
  param_1[0xd6] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x29;
  param_1[0xd1] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x28;
  param_1[0xcc] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x27;
  param_1[199] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x26;
  param_1[0xc2] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x25;
  param_1[0xbd] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x24;
  param_1[0xb8] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x23;
  param_1[0xb3] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x22;
  param_1[0xae] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x21;
  param_1[0xa9] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x20;
  param_1[0xa4] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x1f;
  param_1[0x9f] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x1e;
  param_1[0x9a] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x1d;
  param_1[0x95] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x1c;
  param_1[0x90] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x1b;
  param_1[0x8b] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x1a;
  param_1[0x86] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x19;
  param_1[0x81] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x18;
  param_1[0x7c] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x17;
  param_1[0x77] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x16;
  param_1[0x72] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x15;
  param_1[0x6d] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x14;
  param_1[0x68] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x13;
  param_1[99] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x12;
  param_1[0x5e] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x11;
  param_1[0x59] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0x10;
  param_1[0x54] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0xf;
  param_1[0x4f] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0xe;
  param_1[0x4a] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0xd;
  param_1[0x45] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0xc;
  param_1[0x40] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 0xb;
  param_1[0x3b] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 10;
  param_1[0x36] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 9;
  param_1[0x31] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 8;
  param_1[0x2c] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 7;
  param_1[0x27] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 6;
  param_1[0x22] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 5;
  param_1[0x1d] = wxObject::vftable;
  FUN_0083e850();
  local_4._0_1_ = 4;
  FUN_008f7630();
  local_4._0_1_ = 3;
  _eh_vector_destructor_iterator_(param_1 + 0x13,8,4,FUN_008f7630);
  local_4._0_1_ = 2;
  _eh_vector_destructor_iterator_(param_1 + 0xb,8,4,FUN_008f7630);
  local_4._0_1_ = 1;
  _eh_vector_destructor_iterator_(param_1 + 3,8,4,FUN_008f7630);
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_008f7630();
  local_4 = 0xffffffff;
  FUN_00a3da50();
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a31530(int *param_1_00,uint param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined **ppuStack_54;
  undefined4 *puStack_50;
  undefined *puStack_4c;
  uint uStack_48;
  undefined4 local_34 [2];
  undefined4 uStack_2c;
  undefined4 uStack_24;
  undefined4 uStack_1c;
  undefined4 uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf1130;
  local_c = ExceptionList;
  uStack_48 = DAT_0323f878 ^ (uint)&stack0xffffffbc;
  ExceptionList = &local_c;
  if (((param_1_00[0x17c] ^ param_1) & 4) != 0) {
    if ((param_1 & 4) == 0) {
      param_1_00[0x17e] = param_1_00[0x17e] + -1;
      param_1_00[0x180] = param_1_00[0x180] + -1;
      param_1_00[0x17f] = param_1_00[0x17f] + 1;
      param_1_00[0x181] = param_1_00[0x181] + 1;
    }
    else {
      param_1_00[0x17e] = param_1_00[0x17e] + 1;
      param_1_00[0x180] = param_1_00[0x180] + 1;
      param_1_00[0x17f] = param_1_00[0x17f] + -1;
      param_1_00[0x181] = param_1_00[0x181] + -1;
    }
  }
  pcVar1 = *(code **)(*param_1_00 + 0x20);
  param_1_00[0x17c] = param_1;
  puStack_4c = &DAT_0000001f;
  puStack_50 = local_34;
  ppuStack_54 = (undefined **)0xa315be;
  ppuStack_54 = (undefined **)(*pcVar1)();
  local_c = (void *)0x0;
  (**(code **)(*param_1_00 + 0x24))(0x1f);
  uStack_14 = 0xffffffff;
  FUN_0083e850();
  uVar2 = (**(code **)(*param_1_00 + 0x20))(&stack0xffffffbc,0x23);
  uStack_1c = 1;
  (**(code **)(*param_1_00 + 0x24))(0x23,uVar2);
  uStack_24 = 0xffffffff;
  ppuStack_54 = wxObject::vftable;
  FUN_0083e850();
  uVar2 = (**(code **)(*param_1_00 + 0x20))(&ppuStack_54,0x27);
  uStack_2c = 2;
  (**(code **)(*param_1_00 + 0x24))(0x27,uVar2);
  local_34[0] = 0xffffffff;
  FUN_0083e850();
  uVar2 = (**(code **)(*param_1_00 + 0x20))(&puStack_50,0x2b);
  (**(code **)(*param_1_00 + 0x24))(0x2b,uVar2);
  FUN_0083e850();
  ExceptionList = puStack_4c;
  return;
}



void __thiscall FUN_00a316a0(int param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  
  uVar4 = FUN_008f8330(0x24);
  (**(code **)(*(int *)param_1[2] + 0x58))(uVar4);
  (**(code **)(*(int *)param_1[2] + 0x60))(param_1_00 + 0x538);
  (**(code **)(*(int *)param_1[2] + 0x150))(*param_1,param_1[1],param_1[2],param_1[3]);
  (**(code **)(*(int *)param_1[2] + 0x58))(param_1_00 + 0x590);
  iVar2 = param_1[2];
  iVar3 = *param_1;
  iVar1 = param_1[1] + -1 + param_1[3];
  if (6 < iVar2) {
    (**(code **)(*(int *)param_1[2] + 0x140))(iVar3 + 3,iVar1,iVar3 + -3 + iVar2);
    return;
  }
  (**(code **)(*(int *)param_1[2] + 0x140))(iVar3,iVar1,iVar2 + iVar3,iVar1);
  return;
}



void __thiscall FUN_00a31750(int param_1_00,int *param_1)

{
  int iVar1;
  undefined4 uStack_9c;
  int iStack_98;
  int iStack_94;
  int iStack_90;
  int iStack_8c;
  int iStack_88;
  int iStack_84;
  int iStack_80;
  int iStack_7c;
  int iStack_78;
  int iStack_74;
  int iStack_70;
  int iStack_6c;
  int iStack_68;
  undefined4 uStack_64;
  
  uStack_64 = 0x24;
  iStack_68 = 0xa31760;
  uStack_64 = FUN_008f8330();
  iStack_68 = 0xa31772;
  (**(code **)(*(int *)param_1[2] + 0x58))();
  iStack_68 = param_1_00 + 0x538;
  iStack_6c = 0xa31783;
  (**(code **)(*(int *)param_1[2] + 0x60))();
  iStack_6c = param_1[3];
  iStack_74 = param_1[1];
  iVar1 = *param_1;
  iStack_70 = 2;
  iStack_7c = 0xa317b3;
  iStack_78 = iVar1;
  (**(code **)(*(int *)param_1[2] + 0x150))();
  iStack_88 = param_1[2] + -2 + iVar1;
  iStack_80 = 2;
  iStack_84 = uStack_64;
  iStack_8c = 0xa317d4;
  (**(code **)(*(int *)param_1[2] + 0x150))();
  iStack_6c = param_1[3];
  iStack_90 = param_1[2];
  iStack_98 = *param_1;
  iStack_94 = param_1[1] + -2 + iStack_6c;
  iStack_8c = 2;
  uStack_9c = 0xa31801;
  iStack_74 = iStack_94;
  (**(code **)(*(int *)param_1[2] + 0x150))();
  iStack_84 = param_1[1];
  iStack_88 = *param_1 + 2;
  iStack_80 = param_1[2] + -4;
  iStack_7c = (param_1[3] + -2) / 5;
  uStack_9c = 0x80;
  (**(code **)(*(int *)param_1[2] + 0x130))(&iStack_88,param_1_00 + 0x22c,param_1_00 + 0x240);
  iStack_94 = iStack_94 + iStack_8c;
  iStack_8c = (param_1[3] - iStack_8c) + -2;
  (**(code **)(*(int *)param_1[2] + 0x130))(&iStack_98,param_1_00 + 0x204,param_1_00 + 0x218,0x80);
  iStack_98 = 2;
  iStack_94 = 0;
  iStack_90 = 1;
  iStack_88 = 1;
  iStack_8c = 1;
  iStack_84 = param_1[3] + -4;
  iStack_7c = param_1[3] + -2;
  iStack_80 = 3;
  iStack_78 = param_1[2] + -4;
  iStack_70 = param_1[2] + -2;
  uStack_64 = 1;
  iStack_74 = iStack_7c;
  iStack_6c = iStack_84;
  iStack_68 = iStack_70;
  (**(code **)(*(int *)param_1[2] + 0x58))(param_1_00 + 0x590);
  (**(code **)(*(int *)param_1[2] + 0x17c))(8,&uStack_9c,*param_1,param_1[1]);
  return;
}



void __thiscall
FUN_00a31940(int param_1_00,int param_1,undefined4 param_2,int *param_3,byte param_4)

{
  undefined4 uVar1;
  int iVar2;
  int unaff_EBX;
  undefined4 unaff_EBP;
  int iVar3;
  int unaff_EDI;
  int *piVar4;
  int *piStack_bc;
  int iStack_b8;
  int iStack_b4;
  undefined4 uStack_b0;
  int *piStack_ac;
  int iStack_a8;
  uint uStack_a4;
  undefined4 uStack_a0;
  uint uStack_9c;
  int local_7c;
  int local_78;
  int iStack_70;
  int local_6c;
  int local_68;
  int local_64;
  int iStack_60;
  void *pvStack_5c;
  undefined4 uStack_58;
  int iStack_54;
  int iStack_50;
  int iStack_4c;
  int iStack_48;
  int iStack_44;
  int iStack_40;
  undefined4 uStack_3c;
  int iStack_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  byte bStack_28;
  byte bStack_24;
  uint uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf115b;
  local_c = ExceptionList;
  uStack_9c = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  iVar2 = *param_3;
  local_78 = param_3[1];
  piVar4 = (int *)param_3[2];
  iVar3 = param_3[3];
  local_7c = iVar2;
  if ((param_4 & 0x30) != 0x20) goto switchD_00a31a04_caseD_4;
  uStack_a0 = 0x24;
  uStack_a4 = 0xa319a9;
  uStack_a0 = FUN_008f8330();
  uStack_a4 = 0xa319b7;
  (**(code **)(**(int **)(param_1 + 8) + 0x58))();
  uStack_a4 = unaff_EBX + 0x538;
  iStack_a8 = 0xa319cb;
  (**(code **)(**(int **)(param_1 + 8) + 0x60))();
  iStack_b8 = 0xa319e0;
  iStack_b4 = iVar2;
  piStack_ac = piVar4;
  iStack_a8 = iVar3;
  (**(code **)(**(int **)(param_1 + 8) + 0x150))();
  piStack_bc = piVar4;
  iStack_b8 = iVar3;
  (**(code **)(**(int **)(param_1 + 8) + 0xb4))(iVar2,unaff_EBP);
  switch(param_4 & 3) {
  case 0:
    iVar2 = iVar2 + 1;
    local_7c = iVar2;
  case 1:
    local_78 = local_78 + -1;
    piVar4 = (int *)((int)piVar4 + -1);
    break;
  case 2:
    local_78 = local_78 + -1;
    iVar3 = iVar3 + 1;
    goto LAB_00a31a27;
  case 3:
    iVar3 = iVar3 + -1;
LAB_00a31a27:
    piVar4 = (int *)((int)piVar4 + -2);
    iVar2 = iVar2 + 1;
    local_7c = iVar2;
  }
switchD_00a31a04_caseD_4:
  local_6c = iVar2 + 1;
  local_68 = local_78 + 1;
  local_64 = (int)piVar4 + -2;
  if ((param_4 & 2) == 0) {
    iStack_60 = (iVar3 + -2) / 5;
  }
  else {
    iStack_60 = (iVar3 + -2) / 2;
  }
  uStack_a0 = 0x80;
  uStack_a4 = param_1_00 + 0x240;
  iStack_a8 = param_1_00 + 0x22c;
  piStack_ac = &local_6c;
  uStack_b0 = 0xa31a9a;
  (**(code **)(**(int **)(param_1 + 8) + 0x130))();
  local_78 = local_78 + iStack_70;
  uStack_b0 = 0x80;
  iStack_b4 = unaff_EDI + 0x218;
  iStack_70 = (iVar3 - iStack_70) + -2;
  iStack_b8 = unaff_EDI + 0x204;
  piStack_bc = &local_7c;
  (**(code **)(**(int **)(param_1 + 8) + 0x130))();
  uStack_a4 = uStack_10 & 3;
  local_64 = 0;
  pvStack_5c = (void *)0x0;
  iStack_54 = 0;
  iStack_50 = 0;
  iStack_4c = 0;
  iStack_48 = 0;
  iStack_44 = 0;
  iStack_40 = 0;
  iStack_38 = 0;
  switch(uStack_a4) {
  case 0:
    pvStack_5c = (void *)((int)piVar4 + -1);
    iStack_50 = iVar3 + -1;
    local_64 = 2;
    iStack_4c = 2;
    iStack_48 = iVar3 + -1;
    iStack_40 = iVar3 + -3;
    iStack_44 = 0;
    iStack_38 = 2;
    break;
  case 1:
    pvStack_5c = (void *)((int)piVar4 + -3);
    iStack_50 = 2;
    iStack_4c = (int)piVar4 + -1;
    iStack_48 = iVar3 + -3;
    iStack_44 = (int)piVar4 + -3;
    iStack_38 = iVar3 + -1;
    goto LAB_00a31c45;
  case 2:
    pvStack_5c = (void *)((int)piVar4 + -3);
    local_64 = 2;
    iStack_50 = 2;
    iStack_4c = (int)piVar4 + -1;
    iStack_48 = iVar3 + -1;
    iStack_40 = iVar3 + -1;
    iStack_44 = 0;
    iStack_38 = 2;
    break;
  case 3:
    pvStack_5c = (void *)((int)piVar4 + -1);
    iStack_50 = iVar3 + -3;
    iStack_4c = (int)piVar4 + -3;
    iStack_48 = iVar3 + -1;
    iStack_44 = 2;
    iStack_38 = iVar3 + -3;
LAB_00a31c45:
    iStack_40 = iVar3 + -1;
    local_64 = 0;
    break;
  default:
    goto switchD_00a31b28_caseD_4;
  }
  iStack_54 = (int)piVar4 + -1;
switchD_00a31b28_caseD_4:
  uStack_3c = 0;
  uStack_58 = 0;
  iStack_60 = 0;
  uStack_30 = 0;
  iVar2 = iStack_a8 + 0x590;
  uStack_34 = local_64;
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(iVar2);
  (**(code **)(**(int **)(param_1 + 8) + 0x17c))(7,&local_68,uStack_a0,uStack_9c);
  local_7c = 0;
  switch(iStack_b8) {
  case 0:
    iVar3 = iVar3 / 2;
    if ((bStack_24 & 8) != 0) {
      iVar3 = iVar3 + 1;
    }
    local_7c = iVar3 + 3;
    break;
  case 1:
    iVar3 = iVar3 / 2;
    if ((bStack_24 & 8) != 0) {
      iVar3 = iVar3 + 1;
    }
    local_7c = iVar3 + 3;
    break;
  case 2:
    local_7c = iVar3 / 2 + -2;
    if ((bStack_24 & 8) != 0) {
      local_7c = iVar3 / 2 + -1;
    }
    local_7c = local_7c + 3;
    break;
  case 3:
    local_7c = iVar3 / 2 + 2;
    if ((bStack_24 & 8) != 0) {
      local_7c = iVar3 / 2 + 3;
    }
    local_7c = local_7c + -3;
  }
  uVar1 = FUN_008f8330(0x24);
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar1);
  if ((bStack_28 & 4) == 0) {
    iVar2 = iVar2 + 0xc4;
  }
  else {
    iVar2 = iVar2 + 0x100;
  }
  FUN_0095d7e0(iVar2,100);
  uStack_3c = 0;
  (**(code **)(**(int **)(param_1 + 8) + 0x60))(&piStack_bc);
  (**(code **)(**(int **)(param_1 + 8) + 0x184))(3,&stack0xffffff68,iStack_b8,iStack_b4,1);
  iStack_54 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_5c;
  return;
}



void FUN_00a31e90(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 unaff_retaddr;
  undefined local_2c [4];
  void *pvStack_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf1188;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  local_24 = 0;
  local_20 = 0;
  local_1c = 0;
  local_18 = 0;
  local_14 = 0;
  local_10 = 0;
  FUN_0095d7e0(param_4,100);
  local_24 = 1;
  local_20 = 2;
  local_1c = 0xfffffffe;
  local_18 = 0xffffffff;
  local_4 = 0;
  local_14 = 4;
  local_10 = 0xffffffff;
  uVar2 = FUN_008f8330(0x24,uVar1);
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar2);
  (**(code **)(**(int **)(param_1 + 8) + 0x60))(&stack0xffffffd0);
  (**(code **)(**(int **)(param_1 + 8) + 0x184))(3,local_2c,unaff_retaddr,param_1,1);
  local_20 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_28;
  return;
}



void __thiscall FUN_00a31f80(int param_1_00,int param_1,undefined4 param_2,int *param_3)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  int *piVar4;
  int iVar5;
  int *piVar6;
  int iVar7;
  int *piVar8;
  int *piVar9;
  int iVar10;
  int *piVar11;
  int iVar12;
  int iVar13;
  
  iVar12 = *param_3;
  if ((*(byte *)(param_1_00 + 0x5f0) & 4) == 0) {
    iVar12 = param_3[2] + -0xf + iVar12;
    (**(code **)(**(int **)(param_1 + 8) + 0x140))(iVar12,param_3[1],iVar12,param_3[3] + param_3[1])
    ;
    piVar3 = (int *)(param_3[2] + -0xf + *param_3);
    iVar7 = param_3[3];
    iVar5 = iVar7 / 3 + param_3[1];
    piVar11 = (int *)((int)piVar3 + 0xe);
    piVar8 = piVar3;
    iVar10 = iVar5;
    iVar13 = iVar5;
    (**(code **)(**(int **)(param_1 + 8) + 0x140))(piVar3,iVar5,piVar11,iVar5);
    iVar5 = iVar5 + iVar7 / 3;
    piVar6 = (int *)((int)piVar3 + 0xe);
    iVar7 = iVar5;
  }
  else {
    iVar13 = param_3[3] + -0xf + param_3[1];
    (**(code **)(**(int **)(param_1 + 8) + 0x140))(iVar12,iVar13,param_3[2] + iVar12,iVar13);
    iVar5 = param_3[3] + -0xf + param_3[1];
    iVar7 = param_3[2];
    piVar3 = (int *)(iVar7 / 3 + *param_3);
    iVar13 = iVar5 + 0xe;
    piVar8 = piVar3;
    iVar10 = iVar5;
    piVar11 = piVar3;
    (**(code **)(**(int **)(param_1 + 8) + 0x140))(piVar3,iVar5,piVar3,iVar13);
    piVar3 = (int *)(iVar7 / 3 + (int)piVar3);
    piVar6 = piVar3;
    iVar7 = iVar5 + 0xe;
  }
  piVar4 = piVar3;
  (**(code **)(**(int **)(param_1 + 8) + 0x140))(piVar3,iVar5,piVar6,iVar7);
  iVar1 = *piVar8;
  piVar9 = piVar8;
  uVar2 = FUN_00a3e530(piVar8 + 3);
  (**(code **)(iVar1 + 0x94))(param_1,iVar10,piVar11,iVar13,iVar12,uVar2);
  iVar12 = *piVar8;
  uVar2 = FUN_00a3e540(piVar8 + 0xb);
  (**(code **)(iVar12 + 0x94))(param_1,piVar6,iVar7,piVar9,iVar10,uVar2);
  iVar12 = *piVar8;
  uVar2 = FUN_00a3e550(piVar8 + 0x13);
  (**(code **)(iVar12 + 0x94))(param_1,piVar3,piVar4,iVar5,piVar6,uVar2);
  return;
}



void FUN_00a321f0(undefined4 param_1,int *param_2,undefined4 param_3,int *param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int iVar6;
  uint unaff_EBP;
  undefined auStack_b4 [4];
  undefined auStack_b0 [4];
  int iStack_ac;
  undefined4 uStack_a8;
  int local_a4;
  undefined4 local_a0;
  int local_9c;
  undefined4 local_98;
  int local_94;
  undefined4 local_90;
  int local_8c;
  int local_88;
  int local_84;
  int local_80;
  undefined4 local_7c;
  int local_78;
  undefined4 local_74;
  int local_70;
  int local_6c;
  undefined4 local_68;
  undefined **local_64;
  undefined4 local_60 [2];
  undefined4 uStack_58;
  undefined **ppuStack_50;
  undefined **ppuStack_28;
  undefined4 local_20;
  void *local_c;
  undefined *puStack_8;
  int iStack_4;
  
  iStack_4 = -1;
  puStack_8 = &LAB_00bf11c8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_a4 = 2;
  local_a0 = 0;
  local_9c = param_2[2] + -3;
  local_98 = 0;
  local_94 = param_2[2] + -1;
  local_90 = 2;
  local_80 = param_2[3] + -1;
  local_7c = 2;
  local_68 = 2;
  local_88 = param_2[3] + -3;
  local_74 = 0;
  local_6c = 0;
  local_64 = (undefined **)0x0;
  local_60[0] = 0;
  local_8c = local_94;
  local_84 = local_9c;
  local_78 = local_80;
  local_70 = local_88;
  iVar1 = (**(code **)(*param_4 + 0x4c))(&local_20,DAT_0323f878 ^ (uint)&stack0xffffff38);
  puStack_8 = (undefined *)0x0;
  iVar2 = (**(code **)(*param_2 + 0x4c))(local_60);
  if ((((*(char *)(iVar2 + 0xc) != *(char *)(iVar1 + 0xc)) ||
       (*(char *)(iVar2 + 0xd) != *(char *)(iVar1 + 0xd))) ||
      (*(char *)(iVar2 + 0xf) != *(char *)(iVar1 + 0xf))) ||
     ((*(char *)(iVar2 + 0xe) != *(char *)(iVar1 + 0xe) ||
      (unaff_EBP = CONCAT13(1,(int3)unaff_EBP), *(char *)(iVar2 + 0x10) != *(char *)(iVar1 + 0x10)))
     )) {
    unaff_EBP = unaff_EBP & 0xffffff;
  }
  local_64 = wxObject::vftable;
  FUN_0083e850();
  local_c = (void *)0xffffffff;
  ppuStack_28 = wxObject::vftable;
  FUN_0083e850();
  iVar1 = iStack_4;
  if ((char)(unaff_EBP >> 0x18) == '\0') {
    (**(code **)(**(int **)(iStack_4 + 8) + 0x58))(param_2);
    iVar3 = param_2[1];
    (**(code **)(**(int **)(iVar1 + 8) + 0x17c))(3,auStack_b0,*param_2,iVar3);
    iVar2 = param_2[1] + local_84;
    iVar6 = local_88 + *param_2;
    iVar3 = param_2[1] + iVar3;
    (**(code **)(**(int **)(iVar1 + 8) + 0x140))(*param_2 + unaff_EBP,iVar3,iVar6,iVar2);
    (**(code **)(**(int **)(iVar1 + 8) + 0x58))(param_4);
    (**(code **)(**(int **)(iVar1 + 8) + 0x17c))(3,auStack_b4,*param_2,param_2[1]);
    (**(code **)(**(int **)(iVar1 + 8) + 0x140))
              (*param_2 + iVar6,param_2[1] + unaff_EBP,iVar2 + *param_2,param_2[1] + iVar3);
    uVar4 = (**(code **)(*param_4 + 0x4c))(&local_98);
    uStack_58 = 1;
    uVar5 = (**(code **)(*param_2 + 0x4c))(&local_88);
    local_20._0_1_ = 2;
    FUN_00a3dae0(iVar1,2,&local_90,0,1,(local_a4 - iStack_ac) + 1,*param_2,param_2[1],uVar5,uVar4);
    local_20 = CONCAT31(local_20._1_3_,1);
    ppuStack_50 = wxObject::vftable;
    FUN_0083e850();
    local_20 = 0xffffffff;
    local_64 = wxObject::vftable;
    FUN_0083e850();
  }
  else {
    local_6c = iStack_ac;
    local_68 = uStack_a8;
    (**(code **)(**(int **)(iStack_4 + 8) + 0x58))();
    (**(code **)(**(int **)(iVar1 + 8) + 0x17c))(9,auStack_b0,*param_2,param_2[1]);
  }
  ExceptionList = ppuStack_28;
  return;
}



void __thiscall FUN_00a32540(int param_1_00,int param_1,undefined4 *param_3)

{
  int unaff_retaddr;
  
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x5e0);
  (**(code **)(**(int **)(unaff_retaddr + 8) + 0x17c))(9,&stack0xffffffb4,*param_3,param_3[1]);
  return;
}



void FUN_00a32600(undefined4 *param_1)

{
  *param_1 = 0xc;
  param_1[1] = 0xc;
  return;
}



void __thiscall
FUN_00a32620(int param_1_00,int *param_1,undefined4 param_2,undefined4 param_3,int param_4,
            int param_5)

{
  if ((*(byte *)(param_1_00 + 0x5f0) & 4) != 0) {
    param_1[1] = param_5 + 0x11;
    *param_1 = param_4 + 3;
    return;
  }
  param_1[1] = param_5 + 2;
  *param_1 = param_4 + 0x12;
  return;
}



void __thiscall
FUN_00a32660(int param_1_00,int *param_1,undefined4 param_2,undefined4 param_3,int param_4,
            int param_5,undefined4 *param_6,int *param_7,int *param_8,int *param_9)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  int local_1c;
  int local_18;
  int local_14;
  int local_c;
  
  if ((*(byte *)(param_1_00 + 0x5f0) & 4) == 0) {
    local_1c = (param_5 + 2) / 3;
    local_18 = 0xf;
    local_28 = 0xf;
    local_2c = local_1c * 2;
    local_24 = param_5 + local_1c * -2;
    iVar3 = param_4 + -0xf;
    iVar1 = -0x10;
    local_c = 0;
    iVar2 = -1;
    local_30 = iVar3;
    local_20 = iVar3;
    local_14 = local_1c;
  }
  else {
    local_2c = param_5 + -0xf;
    local_18 = (param_4 + 2) / 3;
    local_14 = 0xf;
    local_24 = 0xf;
    local_28 = param_4 + local_18 * -2;
    iVar3 = 0;
    iVar1 = -1;
    iVar2 = -0x10;
    local_30 = local_18 * 2;
    local_20 = local_18;
    local_1c = local_2c;
    local_c = local_2c;
  }
  if (param_6 != (undefined4 *)0x0) {
    *param_6 = 2;
    param_6[1] = 1;
  }
  if (param_7 != (int *)0x0) {
    *param_7 = iVar3;
    param_7[1] = local_c;
    param_7[2] = local_18;
    param_7[3] = local_14;
  }
  if (param_8 != (int *)0x0) {
    *param_8 = local_20;
    param_8[1] = local_1c;
    param_8[2] = local_18;
    param_8[3] = local_14;
  }
  if (param_9 != (int *)0x0) {
    *param_9 = local_30;
    param_9[1] = local_2c;
    param_9[2] = local_28;
    param_9[3] = local_24;
  }
  *param_1 = param_4 + iVar1 + -2;
  param_1[1] = param_5 + iVar2 + -1;
  return;
}



void FUN_00a327c0(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,
                 int param_6,int param_7)

{
  int local_20;
  undefined4 local_1c;
  undefined4 local_18;
  int local_14;
  undefined4 local_10;
  undefined4 local_c;
  int local_8;
  int local_4;
  
  if (param_6 == param_4) {
    *param_1 = 0;
    param_1[1] = 0;
    if (param_7 == param_5) {
      param_1[2] = 0;
      param_1[3] = 0;
      return;
    }
    param_1[2] = param_6;
    param_1[3] = param_7;
    return;
  }
  if (param_7 != param_5) {
    param_1[3] = param_7;
    *param_1 = 0;
    param_1[1] = 0;
    param_1[2] = param_6;
    return;
  }
  local_20 = param_4 + -4;
  local_1c = 0;
  local_18 = 4;
  local_14 = param_5;
  FUN_008f7640(&local_20);
  local_8 = param_6;
  local_10 = 0;
  local_c = 0;
  local_4 = param_7;
  FUN_008f7750(&local_10);
  *param_1 = param_6 + -4;
  param_1[1] = 0;
  param_1[2] = 4;
  param_1[3] = param_7;
  return;
}



void FUN_00a328c0(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,
                 int param_6,undefined4 param_7,char param_8,int *param_9)

{
  int iVar1;
  int iVar2;
  
  *param_1 = param_4;
  *param_1 = *param_1 + 7;
  param_1[1] = param_5;
  param_1[1] = param_1[1] + 6;
  iVar1 = param_1[1];
  if (param_8 != '\0') {
    *param_1 = *param_1 + 1;
    param_1[1] = iVar1;
  }
  if (param_6 == 1) {
    if (param_9 != (int *)0x0) {
      *param_9 = 0;
      param_9[1] = 0;
      param_9[2] = 0;
      param_9[3] = 0;
    }
  }
  else {
    *param_1 = *param_1 + 8;
    iVar2 = *param_1;
    param_1[1] = iVar1;
    if (param_9 != (int *)0x0) {
      if (param_6 == 2) {
        *param_9 = 0;
        param_9[1] = 0;
        param_9[2] = iVar2;
        param_9[3] = iVar1;
        return;
      }
      *param_9 = iVar2 + -8;
      param_9[1] = 0;
      param_9[2] = 8;
      param_9[3] = iVar1;
      return;
    }
  }
  return;
}



undefined4 * __thiscall FUN_00a32960(undefined4 *param_1_00,undefined4 *param_1,undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bee208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  param_1_00[1] = 0;
  local_4 = 0;
  *param_1_00 = wxBitmap::vftable;
  FUN_008f4cb0(*param_1,param_1[1],param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall FUN_00a329d0(undefined4 param_1_00,byte param_1)

{
  FUN_00a30da0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00a329f0(int param_1_00,int param_1,int param_2,int param_3)

{
  if (param_1 != 0) {
    if (param_1 != param_1_00 + 0x74) {
      FUN_0083ea60(param_1_00 + 0x74);
    }
    *(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_1_00 + 0x7c);
    *(undefined *)(param_1 + 0xc) = *(undefined *)(param_1_00 + 0x80);
    *(undefined *)(param_1 + 0xd) = *(undefined *)(param_1_00 + 0x81);
    *(undefined *)(param_1 + 0xe) = *(undefined *)(param_1_00 + 0x82);
    *(undefined *)(param_1 + 0xf) = *(undefined *)(param_1_00 + 0x83);
    *(undefined *)(param_1 + 0x10) = *(undefined *)(param_1_00 + 0x84);
  }
  if (param_2 != 0) {
    if (param_2 != param_1_00 + 0x88) {
      FUN_0083ea60(param_1_00 + 0x88);
    }
    *(undefined4 *)(param_2 + 8) = *(undefined4 *)(param_1_00 + 0x90);
    *(undefined *)(param_2 + 0xc) = *(undefined *)(param_1_00 + 0x94);
    *(undefined *)(param_2 + 0xd) = *(undefined *)(param_1_00 + 0x95);
    *(undefined *)(param_2 + 0xe) = *(undefined *)(param_1_00 + 0x96);
    *(undefined *)(param_2 + 0xf) = *(undefined *)(param_1_00 + 0x97);
    *(undefined *)(param_2 + 0x10) = *(undefined *)(param_1_00 + 0x98);
  }
  if (param_3 != 0) {
    if (param_3 != param_1_00 + 0x9c) {
      FUN_0083ea60(param_1_00 + 0x9c);
    }
    *(undefined4 *)(param_3 + 8) = *(undefined4 *)(param_1_00 + 0xa4);
    *(undefined *)(param_3 + 0xc) = *(undefined *)(param_1_00 + 0xa8);
    *(undefined *)(param_3 + 0xd) = *(undefined *)(param_1_00 + 0xa9);
    *(undefined *)(param_3 + 0xe) = *(undefined *)(param_1_00 + 0xaa);
    *(undefined *)(param_3 + 0xf) = *(undefined *)(param_1_00 + 0xab);
    *(undefined *)(param_3 + 0x10) = *(undefined *)(param_1_00 + 0xac);
  }
  return;
}



void __thiscall FUN_00a32ac0(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  iVar1 = param_1;
  iVar2 = param_1_00 - param_1;
  iVar5 = param_1_00 + 0x4c;
  iVar4 = param_1 + 0xc;
  param_1 = 4;
  do {
    iVar3 = iVar2 + iVar4;
    if (iVar4 != iVar3) {
      FUN_0083ea60(iVar3);
    }
    if (iVar4 + 0x20 != iVar5 + -0x20) {
      FUN_0083ea60(iVar5 + -0x20);
    }
    if (iVar4 + 0x40 != iVar5) {
      FUN_0083ea60(iVar5);
    }
    iVar5 = iVar5 + 8;
    iVar4 = iVar4 + 8;
    param_1 = param_1 + -1;
  } while (param_1 != 0);
  if (iVar1 + 0x6c != param_1_00 + 0x6c) {
    FUN_0083ea60(param_1_00 + 0x6c);
  }
  if (iVar1 + 0x74 != param_1_00 + 0x74) {
    FUN_0083ea60(param_1_00 + 0x74);
  }
  *(undefined4 *)(iVar1 + 0x7c) = *(undefined4 *)(param_1_00 + 0x7c);
  *(undefined *)(iVar1 + 0x80) = *(undefined *)(param_1_00 + 0x80);
  *(undefined *)(iVar1 + 0x81) = *(undefined *)(param_1_00 + 0x81);
  *(undefined *)(iVar1 + 0x82) = *(undefined *)(param_1_00 + 0x82);
  *(undefined *)(iVar1 + 0x83) = *(undefined *)(param_1_00 + 0x83);
  *(undefined *)(iVar1 + 0x84) = *(undefined *)(param_1_00 + 0x84);
  if (iVar1 + 0x88 != param_1_00 + 0x88) {
    FUN_0083ea60(param_1_00 + 0x88);
  }
  *(undefined4 *)(iVar1 + 0x90) = *(undefined4 *)(param_1_00 + 0x90);
  *(undefined *)(iVar1 + 0x94) = *(undefined *)(param_1_00 + 0x94);
  *(undefined *)(iVar1 + 0x95) = *(undefined *)(param_1_00 + 0x95);
  *(undefined *)(iVar1 + 0x96) = *(undefined *)(param_1_00 + 0x96);
  *(undefined *)(iVar1 + 0x97) = *(undefined *)(param_1_00 + 0x97);
  *(undefined *)(iVar1 + 0x98) = *(undefined *)(param_1_00 + 0x98);
  if (iVar1 + 0x9c != param_1_00 + 0x9c) {
    FUN_0083ea60(param_1_00 + 0x9c);
  }
  *(undefined4 *)(iVar1 + 0xa4) = *(undefined4 *)(param_1_00 + 0xa4);
  *(undefined *)(iVar1 + 0xa8) = *(undefined *)(param_1_00 + 0xa8);
  *(undefined *)(iVar1 + 0xa9) = *(undefined *)(param_1_00 + 0xa9);
  *(undefined *)(iVar1 + 0xaa) = *(undefined *)(param_1_00 + 0xaa);
  *(undefined *)(iVar1 + 0xab) = *(undefined *)(param_1_00 + 0xab);
  *(undefined *)(iVar1 + 0xac) = *(undefined *)(param_1_00 + 0xac);
  if (iVar1 + 0xb0 != param_1_00 + 0xb0) {
    FUN_0083ea60(param_1_00 + 0xb0);
  }
  *(undefined4 *)(iVar1 + 0xb8) = *(undefined4 *)(param_1_00 + 0xb8);
  *(undefined *)(iVar1 + 0xbc) = *(undefined *)(param_1_00 + 0xbc);
  *(undefined *)(iVar1 + 0xbd) = *(undefined *)(param_1_00 + 0xbd);
  *(undefined *)(iVar1 + 0xbe) = *(undefined *)(param_1_00 + 0xbe);
  *(undefined *)(iVar1 + 0xbf) = *(undefined *)(param_1_00 + 0xbf);
  *(undefined *)(iVar1 + 0xc0) = *(undefined *)(param_1_00 + 0xc0);
  if (iVar1 + 0xc4 != param_1_00 + 0xc4) {
    FUN_0083ea60(param_1_00 + 0xc4);
  }
  *(undefined4 *)(iVar1 + 0xcc) = *(undefined4 *)(param_1_00 + 0xcc);
  *(undefined *)(iVar1 + 0xd0) = *(undefined *)(param_1_00 + 0xd0);
  *(undefined *)(iVar1 + 0xd1) = *(undefined *)(param_1_00 + 0xd1);
  *(undefined *)(iVar1 + 0xd2) = *(undefined *)(param_1_00 + 0xd2);
  *(undefined *)(iVar1 + 0xd3) = *(undefined *)(param_1_00 + 0xd3);
  *(undefined *)(iVar1 + 0xd4) = *(undefined *)(param_1_00 + 0xd4);
  if (iVar1 + 0xd8 != param_1_00 + 0xd8) {
    FUN_0083ea60(param_1_00 + 0xd8);
  }
  *(undefined4 *)(iVar1 + 0xe0) = *(undefined4 *)(param_1_00 + 0xe0);
  *(undefined *)(iVar1 + 0xe4) = *(undefined *)(param_1_00 + 0xe4);
  *(undefined *)(iVar1 + 0xe5) = *(undefined *)(param_1_00 + 0xe5);
  *(undefined *)(iVar1 + 0xe6) = *(undefined *)(param_1_00 + 0xe6);
  *(undefined *)(iVar1 + 0xe7) = *(undefined *)(param_1_00 + 0xe7);
  *(undefined *)(iVar1 + 0xe8) = *(undefined *)(param_1_00 + 0xe8);
  if (iVar1 + 0xec != param_1_00 + 0xec) {
    FUN_0083ea60(param_1_00 + 0xec);
  }
  *(undefined4 *)(iVar1 + 0xf4) = *(undefined4 *)(param_1_00 + 0xf4);
  *(undefined *)(iVar1 + 0xf8) = *(undefined *)(param_1_00 + 0xf8);
  *(undefined *)(iVar1 + 0xf9) = *(undefined *)(param_1_00 + 0xf9);
  *(undefined *)(iVar1 + 0xfa) = *(undefined *)(param_1_00 + 0xfa);
  *(undefined *)(iVar1 + 0xfb) = *(undefined *)(param_1_00 + 0xfb);
  *(undefined *)(iVar1 + 0xfc) = *(undefined *)(param_1_00 + 0xfc);
  iVar5 = param_1_00 + 0x128;
  if (iVar1 + 0x100 != iVar5) {
    FUN_0083ea60(iVar5);
  }
  *(undefined4 *)(iVar1 + 0x108) = *(undefined4 *)(param_1_00 + 0x130);
  *(undefined *)(iVar1 + 0x10c) = *(undefined *)(param_1_00 + 0x134);
  *(undefined *)(iVar1 + 0x10d) = *(undefined *)(param_1_00 + 0x135);
  *(undefined *)(iVar1 + 0x10e) = *(undefined *)(param_1_00 + 0x136);
  *(undefined *)(iVar1 + 0x10f) = *(undefined *)(param_1_00 + 0x137);
  *(undefined *)(iVar1 + 0x110) = *(undefined *)(param_1_00 + 0x138);
  iVar4 = param_1_00 + 0x13c;
  if (iVar1 + 0x114 != iVar4) {
    FUN_0083ea60(iVar4);
  }
  *(undefined4 *)(iVar1 + 0x11c) = *(undefined4 *)(param_1_00 + 0x144);
  *(undefined *)(iVar1 + 0x120) = *(undefined *)(param_1_00 + 0x148);
  *(undefined *)(iVar1 + 0x121) = *(undefined *)(param_1_00 + 0x149);
  *(undefined *)(iVar1 + 0x122) = *(undefined *)(param_1_00 + 0x14a);
  *(undefined *)(iVar1 + 0x123) = *(undefined *)(param_1_00 + 0x14b);
  *(undefined *)(iVar1 + 0x124) = *(undefined *)(param_1_00 + 0x14c);
  if (iVar1 + 0x128 != iVar5) {
    FUN_0083ea60(iVar5);
  }
  *(undefined4 *)(iVar1 + 0x130) = *(undefined4 *)(param_1_00 + 0x130);
  *(undefined *)(iVar1 + 0x134) = *(undefined *)(param_1_00 + 0x134);
  *(undefined *)(iVar1 + 0x135) = *(undefined *)(param_1_00 + 0x135);
  *(undefined *)(iVar1 + 0x136) = *(undefined *)(param_1_00 + 0x136);
  *(undefined *)(iVar1 + 0x137) = *(undefined *)(param_1_00 + 0x137);
  *(undefined *)(iVar1 + 0x138) = *(undefined *)(param_1_00 + 0x138);
  if (iVar1 + 0x13c != iVar4) {
    FUN_0083ea60(iVar4);
  }
  *(undefined4 *)(iVar1 + 0x144) = *(undefined4 *)(param_1_00 + 0x144);
  *(undefined *)(iVar1 + 0x148) = *(undefined *)(param_1_00 + 0x148);
  *(undefined *)(iVar1 + 0x149) = *(undefined *)(param_1_00 + 0x149);
  *(undefined *)(iVar1 + 0x14a) = *(undefined *)(param_1_00 + 0x14a);
  *(undefined *)(iVar1 + 0x14b) = *(undefined *)(param_1_00 + 0x14b);
  *(undefined *)(iVar1 + 0x14c) = *(undefined *)(param_1_00 + 0x14c);
  if (iVar1 + 0x150 != param_1_00 + 0x150) {
    FUN_0083ea60(param_1_00 + 0x150);
  }
  *(undefined4 *)(iVar1 + 0x158) = *(undefined4 *)(param_1_00 + 0x158);
  *(undefined *)(iVar1 + 0x15c) = *(undefined *)(param_1_00 + 0x15c);
  *(undefined *)(iVar1 + 0x15d) = *(undefined *)(param_1_00 + 0x15d);
  *(undefined *)(iVar1 + 0x15e) = *(undefined *)(param_1_00 + 0x15e);
  *(undefined *)(iVar1 + 0x15f) = *(undefined *)(param_1_00 + 0x15f);
  *(undefined *)(iVar1 + 0x160) = *(undefined *)(param_1_00 + 0x160);
  if (iVar1 + 0x164 != param_1_00 + 0x164) {
    FUN_0083ea60(param_1_00 + 0x164);
  }
  *(undefined4 *)(iVar1 + 0x16c) = *(undefined4 *)(param_1_00 + 0x16c);
  *(undefined *)(iVar1 + 0x170) = *(undefined *)(param_1_00 + 0x170);
  *(undefined *)(iVar1 + 0x171) = *(undefined *)(param_1_00 + 0x171);
  *(undefined *)(iVar1 + 0x172) = *(undefined *)(param_1_00 + 0x172);
  *(undefined *)(iVar1 + 0x173) = *(undefined *)(param_1_00 + 0x173);
  *(undefined *)(iVar1 + 0x174) = *(undefined *)(param_1_00 + 0x174);
  if (iVar1 + 0x178 != param_1_00 + 0x178) {
    FUN_0083ea60(param_1_00 + 0x178);
  }
  *(undefined4 *)(iVar1 + 0x180) = *(undefined4 *)(param_1_00 + 0x180);
  *(undefined *)(iVar1 + 0x184) = *(undefined *)(param_1_00 + 0x184);
  *(undefined *)(iVar1 + 0x185) = *(undefined *)(param_1_00 + 0x185);
  *(undefined *)(iVar1 + 0x186) = *(undefined *)(param_1_00 + 0x186);
  *(undefined *)(iVar1 + 0x187) = *(undefined *)(param_1_00 + 0x187);
  *(undefined *)(iVar1 + 0x188) = *(undefined *)(param_1_00 + 0x188);
  if (iVar1 + 0x1a0 != param_1_00 + 0x1a0) {
    FUN_0083ea60(param_1_00 + 0x1a0);
  }
  *(undefined4 *)(iVar1 + 0x1a8) = *(undefined4 *)(param_1_00 + 0x1a8);
  *(undefined *)(iVar1 + 0x1ac) = *(undefined *)(param_1_00 + 0x1ac);
  *(undefined *)(iVar1 + 0x1ad) = *(undefined *)(param_1_00 + 0x1ad);
  *(undefined *)(iVar1 + 0x1ae) = *(undefined *)(param_1_00 + 0x1ae);
  *(undefined *)(iVar1 + 0x1af) = *(undefined *)(param_1_00 + 0x1af);
  *(undefined *)(iVar1 + 0x1b0) = *(undefined *)(param_1_00 + 0x1b0);
  if (iVar1 + 0x18c != param_1_00 + 0x18c) {
    FUN_0083ea60(param_1_00 + 0x18c);
  }
  *(undefined4 *)(iVar1 + 0x194) = *(undefined4 *)(param_1_00 + 0x194);
  *(undefined *)(iVar1 + 0x198) = *(undefined *)(param_1_00 + 0x198);
  *(undefined *)(iVar1 + 0x199) = *(undefined *)(param_1_00 + 0x199);
  *(undefined *)(iVar1 + 0x19a) = *(undefined *)(param_1_00 + 0x19a);
  *(undefined *)(iVar1 + 0x19b) = *(undefined *)(param_1_00 + 0x19b);
  *(undefined *)(iVar1 + 0x19c) = *(undefined *)(param_1_00 + 0x19c);
  if (iVar1 + 0x1b4 != param_1_00 + 0x1b4) {
    FUN_0083ea60(param_1_00 + 0x1b4);
  }
  *(undefined4 *)(iVar1 + 0x1bc) = *(undefined4 *)(param_1_00 + 0x1bc);
  *(undefined *)(iVar1 + 0x1c0) = *(undefined *)(param_1_00 + 0x1c0);
  *(undefined *)(iVar1 + 0x1c1) = *(undefined *)(param_1_00 + 0x1c1);
  *(undefined *)(iVar1 + 0x1c2) = *(undefined *)(param_1_00 + 0x1c2);
  *(undefined *)(iVar1 + 0x1c3) = *(undefined *)(param_1_00 + 0x1c3);
  *(undefined *)(iVar1 + 0x1c4) = *(undefined *)(param_1_00 + 0x1c4);
  if (iVar1 + 0x1c8 != param_1_00 + 0x1c8) {
    FUN_0083ea60(param_1_00 + 0x1c8);
  }
  *(undefined4 *)(iVar1 + 0x1d0) = *(undefined4 *)(param_1_00 + 0x1d0);
  *(undefined *)(iVar1 + 0x1d4) = *(undefined *)(param_1_00 + 0x1d4);
  *(undefined *)(iVar1 + 0x1d5) = *(undefined *)(param_1_00 + 0x1d5);
  *(undefined *)(iVar1 + 0x1d6) = *(undefined *)(param_1_00 + 0x1d6);
  *(undefined *)(iVar1 + 0x1d7) = *(undefined *)(param_1_00 + 0x1d7);
  *(undefined *)(iVar1 + 0x1d8) = *(undefined *)(param_1_00 + 0x1d8);
  if (iVar1 + 0x1dc != param_1_00 + 0x1dc) {
    FUN_0083ea60(param_1_00 + 0x1dc);
  }
  *(undefined4 *)(iVar1 + 0x1e4) = *(undefined4 *)(param_1_00 + 0x1e4);
  *(undefined *)(iVar1 + 0x1e8) = *(undefined *)(param_1_00 + 0x1e8);
  *(undefined *)(iVar1 + 0x1e9) = *(undefined *)(param_1_00 + 0x1e9);
  *(undefined *)(iVar1 + 0x1ea) = *(undefined *)(param_1_00 + 0x1ea);
  *(undefined *)(iVar1 + 0x1eb) = *(undefined *)(param_1_00 + 0x1eb);
  *(undefined *)(iVar1 + 0x1ec) = *(undefined *)(param_1_00 + 0x1ec);
  if (iVar1 + 0x1f0 != param_1_00 + 0x1f0) {
    FUN_0083ea60(param_1_00 + 0x1f0);
  }
  *(undefined4 *)(iVar1 + 0x1f8) = *(undefined4 *)(param_1_00 + 0x1f8);
  *(undefined *)(iVar1 + 0x1fc) = *(undefined *)(param_1_00 + 0x1fc);
  *(undefined *)(iVar1 + 0x1fd) = *(undefined *)(param_1_00 + 0x1fd);
  *(undefined *)(iVar1 + 0x1fe) = *(undefined *)(param_1_00 + 0x1fe);
  *(undefined *)(iVar1 + 0x1ff) = *(undefined *)(param_1_00 + 0x1ff);
  *(undefined *)(iVar1 + 0x200) = *(undefined *)(param_1_00 + 0x200);
  if (iVar1 + 0x204 != param_1_00 + 0x204) {
    FUN_0083ea60(param_1_00 + 0x204);
  }
  *(undefined4 *)(iVar1 + 0x20c) = *(undefined4 *)(param_1_00 + 0x20c);
  *(undefined *)(iVar1 + 0x210) = *(undefined *)(param_1_00 + 0x210);
  *(undefined *)(iVar1 + 0x211) = *(undefined *)(param_1_00 + 0x211);
  *(undefined *)(iVar1 + 0x212) = *(undefined *)(param_1_00 + 0x212);
  *(undefined *)(iVar1 + 0x213) = *(undefined *)(param_1_00 + 0x213);
  *(undefined *)(iVar1 + 0x214) = *(undefined *)(param_1_00 + 0x214);
  if (iVar1 + 0x218 != param_1_00 + 0x218) {
    FUN_0083ea60(param_1_00 + 0x218);
  }
  *(undefined4 *)(iVar1 + 0x220) = *(undefined4 *)(param_1_00 + 0x220);
  *(undefined *)(iVar1 + 0x224) = *(undefined *)(param_1_00 + 0x224);
  *(undefined *)(iVar1 + 0x225) = *(undefined *)(param_1_00 + 0x225);
  *(undefined *)(iVar1 + 0x226) = *(undefined *)(param_1_00 + 0x226);
  *(undefined *)(iVar1 + 0x227) = *(undefined *)(param_1_00 + 0x227);
  *(undefined *)(iVar1 + 0x228) = *(undefined *)(param_1_00 + 0x228);
  if (iVar1 + 0x22c != param_1_00 + 0x22c) {
    FUN_0083ea60(param_1_00 + 0x22c);
  }
  *(undefined4 *)(iVar1 + 0x234) = *(undefined4 *)(param_1_00 + 0x234);
  *(undefined *)(iVar1 + 0x238) = *(undefined *)(param_1_00 + 0x238);
  *(undefined *)(iVar1 + 0x239) = *(undefined *)(param_1_00 + 0x239);
  *(undefined *)(iVar1 + 0x23a) = *(undefined *)(param_1_00 + 0x23a);
  *(undefined *)(iVar1 + 0x23b) = *(undefined *)(param_1_00 + 0x23b);
  *(undefined *)(iVar1 + 0x23c) = *(undefined *)(param_1_00 + 0x23c);
  if (iVar1 + 0x240 != param_1_00 + 0x240) {
    FUN_0083ea60(param_1_00 + 0x240);
  }
  *(undefined4 *)(iVar1 + 0x248) = *(undefined4 *)(param_1_00 + 0x248);
  *(undefined *)(iVar1 + 0x24c) = *(undefined *)(param_1_00 + 0x24c);
  *(undefined *)(iVar1 + 0x24d) = *(undefined *)(param_1_00 + 0x24d);
  *(undefined *)(iVar1 + 0x24e) = *(undefined *)(param_1_00 + 0x24e);
  *(undefined *)(iVar1 + 0x24f) = *(undefined *)(param_1_00 + 0x24f);
  *(undefined *)(iVar1 + 0x250) = *(undefined *)(param_1_00 + 0x250);
  if (iVar1 + 0x254 != param_1_00 + 0x254) {
    FUN_0083ea60(param_1_00 + 0x254);
  }
  *(undefined4 *)(iVar1 + 0x25c) = *(undefined4 *)(param_1_00 + 0x25c);
  *(undefined *)(iVar1 + 0x260) = *(undefined *)(param_1_00 + 0x260);
  *(undefined *)(iVar1 + 0x261) = *(undefined *)(param_1_00 + 0x261);
  *(undefined *)(iVar1 + 0x262) = *(undefined *)(param_1_00 + 0x262);
  *(undefined *)(iVar1 + 0x263) = *(undefined *)(param_1_00 + 0x263);
  *(undefined *)(iVar1 + 0x264) = *(undefined *)(param_1_00 + 0x264);
  if (iVar1 + 0x268 != param_1_00 + 0x268) {
    FUN_0083ea60(param_1_00 + 0x268);
  }
  *(undefined4 *)(iVar1 + 0x270) = *(undefined4 *)(param_1_00 + 0x270);
  *(undefined *)(iVar1 + 0x274) = *(undefined *)(param_1_00 + 0x274);
  *(undefined *)(iVar1 + 0x275) = *(undefined *)(param_1_00 + 0x275);
  *(undefined *)(iVar1 + 0x276) = *(undefined *)(param_1_00 + 0x276);
  *(undefined *)(iVar1 + 0x277) = *(undefined *)(param_1_00 + 0x277);
  *(undefined *)(iVar1 + 0x278) = *(undefined *)(param_1_00 + 0x278);
  if (iVar1 + 0x27c != param_1_00 + 0x27c) {
    FUN_0083ea60(param_1_00 + 0x27c);
  }
  *(undefined4 *)(iVar1 + 0x284) = *(undefined4 *)(param_1_00 + 0x284);
  *(undefined *)(iVar1 + 0x288) = *(undefined *)(param_1_00 + 0x288);
  *(undefined *)(iVar1 + 0x289) = *(undefined *)(param_1_00 + 0x289);
  *(undefined *)(iVar1 + 0x28a) = *(undefined *)(param_1_00 + 0x28a);
  *(undefined *)(iVar1 + 0x28b) = *(undefined *)(param_1_00 + 0x28b);
  *(undefined *)(iVar1 + 0x28c) = *(undefined *)(param_1_00 + 0x28c);
  if (iVar1 + 0x290 != param_1_00 + 0x290) {
    FUN_0083ea60(param_1_00 + 0x290);
  }
  *(undefined4 *)(iVar1 + 0x298) = *(undefined4 *)(param_1_00 + 0x298);
  *(undefined *)(iVar1 + 0x29c) = *(undefined *)(param_1_00 + 0x29c);
  *(undefined *)(iVar1 + 0x29d) = *(undefined *)(param_1_00 + 0x29d);
  *(undefined *)(iVar1 + 0x29e) = *(undefined *)(param_1_00 + 0x29e);
  *(undefined *)(iVar1 + 0x29f) = *(undefined *)(param_1_00 + 0x29f);
  *(undefined *)(iVar1 + 0x2a0) = *(undefined *)(param_1_00 + 0x2a0);
  if (iVar1 + 0x2a4 != param_1_00 + 0x2a4) {
    FUN_0083ea60(param_1_00 + 0x2a4);
  }
  *(undefined4 *)(iVar1 + 0x2ac) = *(undefined4 *)(param_1_00 + 0x2ac);
  *(undefined *)(iVar1 + 0x2b0) = *(undefined *)(param_1_00 + 0x2b0);
  *(undefined *)(iVar1 + 0x2b1) = *(undefined *)(param_1_00 + 0x2b1);
  *(undefined *)(iVar1 + 0x2b2) = *(undefined *)(param_1_00 + 0x2b2);
  *(undefined *)(iVar1 + 0x2b3) = *(undefined *)(param_1_00 + 0x2b3);
  *(undefined *)(iVar1 + 0x2b4) = *(undefined *)(param_1_00 + 0x2b4);
  if (iVar1 + 0x2b8 != param_1_00 + 0x2b8) {
    FUN_0083ea60(param_1_00 + 0x2b8);
  }
  *(undefined4 *)(iVar1 + 0x2c0) = *(undefined4 *)(param_1_00 + 0x2c0);
  *(undefined *)(iVar1 + 0x2c4) = *(undefined *)(param_1_00 + 0x2c4);
  *(undefined *)(iVar1 + 0x2c5) = *(undefined *)(param_1_00 + 0x2c5);
  *(undefined *)(iVar1 + 0x2c6) = *(undefined *)(param_1_00 + 0x2c6);
  *(undefined *)(iVar1 + 0x2c7) = *(undefined *)(param_1_00 + 0x2c7);
  *(undefined *)(iVar1 + 0x2c8) = *(undefined *)(param_1_00 + 0x2c8);
  if (iVar1 + 0x2cc != param_1_00 + 0x2cc) {
    FUN_0083ea60(param_1_00 + 0x2cc);
  }
  *(undefined4 *)(iVar1 + 0x2d4) = *(undefined4 *)(param_1_00 + 0x2d4);
  *(undefined *)(iVar1 + 0x2d8) = *(undefined *)(param_1_00 + 0x2d8);
  *(undefined *)(iVar1 + 0x2d9) = *(undefined *)(param_1_00 + 0x2d9);
  *(undefined *)(iVar1 + 0x2da) = *(undefined *)(param_1_00 + 0x2da);
  *(undefined *)(iVar1 + 0x2db) = *(undefined *)(param_1_00 + 0x2db);
  *(undefined *)(iVar1 + 0x2dc) = *(undefined *)(param_1_00 + 0x2dc);
  if (iVar1 + 0x2e0 != param_1_00 + 0x2e0) {
    FUN_0083ea60(param_1_00 + 0x2e0);
  }
  *(undefined4 *)(iVar1 + 0x2e8) = *(undefined4 *)(param_1_00 + 0x2e8);
  *(undefined *)(iVar1 + 0x2ec) = *(undefined *)(param_1_00 + 0x2ec);
  *(undefined *)(iVar1 + 0x2ed) = *(undefined *)(param_1_00 + 0x2ed);
  *(undefined *)(iVar1 + 0x2ee) = *(undefined *)(param_1_00 + 0x2ee);
  *(undefined *)(iVar1 + 0x2ef) = *(undefined *)(param_1_00 + 0x2ef);
  *(undefined *)(iVar1 + 0x2f0) = *(undefined *)(param_1_00 + 0x2f0);
  if (iVar1 + 0x2f4 != param_1_00 + 0x2f4) {
    FUN_0083ea60(param_1_00 + 0x2f4);
  }
  *(undefined4 *)(iVar1 + 0x2fc) = *(undefined4 *)(param_1_00 + 0x2fc);
  *(undefined *)(iVar1 + 0x300) = *(undefined *)(param_1_00 + 0x300);
  *(undefined *)(iVar1 + 0x301) = *(undefined *)(param_1_00 + 0x301);
  *(undefined *)(iVar1 + 0x302) = *(undefined *)(param_1_00 + 0x302);
  *(undefined *)(iVar1 + 0x303) = *(undefined *)(param_1_00 + 0x303);
  *(undefined *)(iVar1 + 0x304) = *(undefined *)(param_1_00 + 0x304);
  if (iVar1 + 0x308 != param_1_00 + 0x308) {
    FUN_0083ea60(param_1_00 + 0x308);
  }
  *(undefined4 *)(iVar1 + 0x310) = *(undefined4 *)(param_1_00 + 0x310);
  *(undefined *)(iVar1 + 0x314) = *(undefined *)(param_1_00 + 0x314);
  *(undefined *)(iVar1 + 0x315) = *(undefined *)(param_1_00 + 0x315);
  *(undefined *)(iVar1 + 0x316) = *(undefined *)(param_1_00 + 0x316);
  *(undefined *)(iVar1 + 0x317) = *(undefined *)(param_1_00 + 0x317);
  *(undefined *)(iVar1 + 0x318) = *(undefined *)(param_1_00 + 0x318);
  if (iVar1 + 0x31c != param_1_00 + 0x31c) {
    FUN_0083ea60(param_1_00 + 0x31c);
  }
  *(undefined4 *)(iVar1 + 0x324) = *(undefined4 *)(param_1_00 + 0x324);
  *(undefined *)(iVar1 + 0x328) = *(undefined *)(param_1_00 + 0x328);
  *(undefined *)(iVar1 + 0x329) = *(undefined *)(param_1_00 + 0x329);
  *(undefined *)(iVar1 + 0x32a) = *(undefined *)(param_1_00 + 0x32a);
  *(undefined *)(iVar1 + 0x32b) = *(undefined *)(param_1_00 + 0x32b);
  *(undefined *)(iVar1 + 0x32c) = *(undefined *)(param_1_00 + 0x32c);
  if (iVar1 + 0x330 != param_1_00 + 0x330) {
    FUN_0083ea60(param_1_00 + 0x330);
  }
  *(undefined4 *)(iVar1 + 0x338) = *(undefined4 *)(param_1_00 + 0x338);
  *(undefined *)(iVar1 + 0x33c) = *(undefined *)(param_1_00 + 0x33c);
  *(undefined *)(iVar1 + 0x33d) = *(undefined *)(param_1_00 + 0x33d);
  *(undefined *)(iVar1 + 0x33e) = *(undefined *)(param_1_00 + 0x33e);
  *(undefined *)(iVar1 + 0x33f) = *(undefined *)(param_1_00 + 0x33f);
  *(undefined *)(iVar1 + 0x340) = *(undefined *)(param_1_00 + 0x340);
  if (iVar1 + 0x344 != param_1_00 + 0x344) {
    FUN_0083ea60(param_1_00 + 0x344);
  }
  *(undefined4 *)(iVar1 + 0x34c) = *(undefined4 *)(param_1_00 + 0x34c);
  *(undefined *)(iVar1 + 0x350) = *(undefined *)(param_1_00 + 0x350);
  *(undefined *)(iVar1 + 0x351) = *(undefined *)(param_1_00 + 0x351);
  *(undefined *)(iVar1 + 0x352) = *(undefined *)(param_1_00 + 0x352);
  *(undefined *)(iVar1 + 0x353) = *(undefined *)(param_1_00 + 0x353);
  *(undefined *)(iVar1 + 0x354) = *(undefined *)(param_1_00 + 0x354);
  if (iVar1 + 0x358 != param_1_00 + 0x358) {
    FUN_0083ea60(param_1_00 + 0x358);
  }
  *(undefined4 *)(iVar1 + 0x360) = *(undefined4 *)(param_1_00 + 0x360);
  *(undefined *)(iVar1 + 0x364) = *(undefined *)(param_1_00 + 0x364);
  *(undefined *)(iVar1 + 0x365) = *(undefined *)(param_1_00 + 0x365);
  *(undefined *)(iVar1 + 0x366) = *(undefined *)(param_1_00 + 0x366);
  *(undefined *)(iVar1 + 0x367) = *(undefined *)(param_1_00 + 0x367);
  *(undefined *)(iVar1 + 0x368) = *(undefined *)(param_1_00 + 0x368);
  if (iVar1 + 0x36c != param_1_00 + 0x36c) {
    FUN_0083ea60(param_1_00 + 0x36c);
  }
  *(undefined4 *)(iVar1 + 0x374) = *(undefined4 *)(param_1_00 + 0x374);
  *(undefined *)(iVar1 + 0x378) = *(undefined *)(param_1_00 + 0x378);
  *(undefined *)(iVar1 + 0x379) = *(undefined *)(param_1_00 + 0x379);
  *(undefined *)(iVar1 + 0x37a) = *(undefined *)(param_1_00 + 0x37a);
  *(undefined *)(iVar1 + 0x37b) = *(undefined *)(param_1_00 + 0x37b);
  *(undefined *)(iVar1 + 0x37c) = *(undefined *)(param_1_00 + 0x37c);
  if (iVar1 + 0x380 != param_1_00 + 0x380) {
    FUN_0083ea60(param_1_00 + 0x380);
  }
  *(undefined4 *)(iVar1 + 0x388) = *(undefined4 *)(param_1_00 + 0x388);
  *(undefined *)(iVar1 + 0x38c) = *(undefined *)(param_1_00 + 0x38c);
  *(undefined *)(iVar1 + 0x38d) = *(undefined *)(param_1_00 + 0x38d);
  *(undefined *)(iVar1 + 0x38e) = *(undefined *)(param_1_00 + 0x38e);
  *(undefined *)(iVar1 + 0x38f) = *(undefined *)(param_1_00 + 0x38f);
  *(undefined *)(iVar1 + 0x390) = *(undefined *)(param_1_00 + 0x390);
  if (iVar1 + 0x394 != param_1_00 + 0x394) {
    FUN_0083ea60(param_1_00 + 0x394);
  }
  *(undefined4 *)(iVar1 + 0x39c) = *(undefined4 *)(param_1_00 + 0x39c);
  *(undefined *)(iVar1 + 0x3a0) = *(undefined *)(param_1_00 + 0x3a0);
  *(undefined *)(iVar1 + 0x3a1) = *(undefined *)(param_1_00 + 0x3a1);
  *(undefined *)(iVar1 + 0x3a2) = *(undefined *)(param_1_00 + 0x3a2);
  *(undefined *)(iVar1 + 0x3a3) = *(undefined *)(param_1_00 + 0x3a3);
  *(undefined *)(iVar1 + 0x3a4) = *(undefined *)(param_1_00 + 0x3a4);
  if (iVar1 + 0x3a8 != param_1_00 + 0x3a8) {
    FUN_0083ea60(param_1_00 + 0x3a8);
  }
  *(undefined4 *)(iVar1 + 0x3b0) = *(undefined4 *)(param_1_00 + 0x3b0);
  *(undefined *)(iVar1 + 0x3b4) = *(undefined *)(param_1_00 + 0x3b4);
  *(undefined *)(iVar1 + 0x3b5) = *(undefined *)(param_1_00 + 0x3b5);
  *(undefined *)(iVar1 + 0x3b6) = *(undefined *)(param_1_00 + 0x3b6);
  *(undefined *)(iVar1 + 0x3b7) = *(undefined *)(param_1_00 + 0x3b7);
  *(undefined *)(iVar1 + 0x3b8) = *(undefined *)(param_1_00 + 0x3b8);
  if (iVar1 + 0x3bc != param_1_00 + 0x3bc) {
    FUN_0083ea60(param_1_00 + 0x3bc);
  }
  *(undefined4 *)(iVar1 + 0x3c4) = *(undefined4 *)(param_1_00 + 0x3c4);
  *(undefined *)(iVar1 + 0x3c8) = *(undefined *)(param_1_00 + 0x3c8);
  *(undefined *)(iVar1 + 0x3c9) = *(undefined *)(param_1_00 + 0x3c9);
  *(undefined *)(iVar1 + 0x3ca) = *(undefined *)(param_1_00 + 0x3ca);
  *(undefined *)(iVar1 + 0x3cb) = *(undefined *)(param_1_00 + 0x3cb);
  *(undefined *)(iVar1 + 0x3cc) = *(undefined *)(param_1_00 + 0x3cc);
  if (iVar1 + 0x3d0 != param_1_00 + 0x3d0) {
    FUN_0083ea60(param_1_00 + 0x3d0);
  }
  *(undefined4 *)(iVar1 + 0x3d8) = *(undefined4 *)(param_1_00 + 0x3d8);
  *(undefined *)(iVar1 + 0x3dc) = *(undefined *)(param_1_00 + 0x3dc);
  *(undefined *)(iVar1 + 0x3dd) = *(undefined *)(param_1_00 + 0x3dd);
  *(undefined *)(iVar1 + 0x3de) = *(undefined *)(param_1_00 + 0x3de);
  *(undefined *)(iVar1 + 0x3df) = *(undefined *)(param_1_00 + 0x3df);
  *(undefined *)(iVar1 + 0x3e0) = *(undefined *)(param_1_00 + 0x3e0);
  if (iVar1 + 0x3e4 != param_1_00 + 0x3e4) {
    FUN_0083ea60(param_1_00 + 0x3e4);
  }
  *(undefined4 *)(iVar1 + 0x3ec) = *(undefined4 *)(param_1_00 + 0x3ec);
  *(undefined *)(iVar1 + 0x3f0) = *(undefined *)(param_1_00 + 0x3f0);
  *(undefined *)(iVar1 + 0x3f1) = *(undefined *)(param_1_00 + 0x3f1);
  *(undefined *)(iVar1 + 0x3f2) = *(undefined *)(param_1_00 + 0x3f2);
  *(undefined *)(iVar1 + 0x3f3) = *(undefined *)(param_1_00 + 0x3f3);
  *(undefined *)(iVar1 + 0x3f4) = *(undefined *)(param_1_00 + 0x3f4);
  if (iVar1 + 0x3f8 != param_1_00 + 0x3f8) {
    FUN_0083ea60(param_1_00 + 0x3f8);
  }
  *(undefined4 *)(iVar1 + 0x400) = *(undefined4 *)(param_1_00 + 0x400);
  *(undefined *)(iVar1 + 0x404) = *(undefined *)(param_1_00 + 0x404);
  *(undefined *)(iVar1 + 0x405) = *(undefined *)(param_1_00 + 0x405);
  *(undefined *)(iVar1 + 0x406) = *(undefined *)(param_1_00 + 0x406);
  *(undefined *)(iVar1 + 0x407) = *(undefined *)(param_1_00 + 0x407);
  *(undefined *)(iVar1 + 0x408) = *(undefined *)(param_1_00 + 0x408);
  if (iVar1 + 0x40c != param_1_00 + 0x40c) {
    FUN_0083ea60(param_1_00 + 0x40c);
  }
  *(undefined4 *)(iVar1 + 0x414) = *(undefined4 *)(param_1_00 + 0x414);
  *(undefined *)(iVar1 + 0x418) = *(undefined *)(param_1_00 + 0x418);
  *(undefined *)(iVar1 + 0x419) = *(undefined *)(param_1_00 + 0x419);
  *(undefined *)(iVar1 + 0x41a) = *(undefined *)(param_1_00 + 0x41a);
  *(undefined *)(iVar1 + 0x41b) = *(undefined *)(param_1_00 + 0x41b);
  *(undefined *)(iVar1 + 0x41c) = *(undefined *)(param_1_00 + 0x41c);
  if (iVar1 + 0x420 != param_1_00 + 0x420) {
    FUN_0083ea60(param_1_00 + 0x420);
  }
  *(undefined4 *)(iVar1 + 0x428) = *(undefined4 *)(param_1_00 + 0x428);
  *(undefined *)(iVar1 + 0x42c) = *(undefined *)(param_1_00 + 0x42c);
  *(undefined *)(iVar1 + 0x42d) = *(undefined *)(param_1_00 + 0x42d);
  *(undefined *)(iVar1 + 0x42e) = *(undefined *)(param_1_00 + 0x42e);
  *(undefined *)(iVar1 + 0x42f) = *(undefined *)(param_1_00 + 0x42f);
  *(undefined *)(iVar1 + 0x430) = *(undefined *)(param_1_00 + 0x430);
  if (iVar1 + 0x538 != param_1_00 + 0x538) {
    FUN_0083ea60(param_1_00 + 0x538);
  }
  if (iVar1 + 0x540 != param_1_00 + 0x540) {
    FUN_0083ea60(param_1_00 + 0x540);
  }
  if (iVar1 + 0x548 != param_1_00 + 0x548) {
    FUN_0083ea60(param_1_00 + 0x548);
  }
  if (iVar1 + 0x550 != param_1_00 + 0x550) {
    FUN_0083ea60(param_1_00 + 0x550);
  }
  if (iVar1 + 0x558 != param_1_00 + 0x558) {
    FUN_0083ea60(param_1_00 + 0x558);
  }
  if (iVar1 + 0x560 != param_1_00 + 0x560) {
    FUN_0083ea60(param_1_00 + 0x560);
  }
  if (iVar1 + 0x568 != param_1_00 + 0x568) {
    FUN_0083ea60(param_1_00 + 0x568);
  }
  if (iVar1 + 0x570 != param_1_00 + 0x570) {
    FUN_0083ea60(param_1_00 + 0x570);
  }
  if (iVar1 + 0x578 != param_1_00 + 0x578) {
    FUN_0083ea60(param_1_00 + 0x578);
  }
  if (iVar1 + 0x588 != param_1_00 + 0x588) {
    FUN_0083ea60(param_1_00 + 0x588);
  }
  if (iVar1 + 0x580 != param_1_00 + 0x580) {
    FUN_0083ea60(param_1_00 + 0x580);
  }
  if (iVar1 + 0x590 != param_1_00 + 0x590) {
    FUN_0083ea60(param_1_00 + 0x590);
  }
  if (iVar1 + 0x598 != param_1_00 + 0x598) {
    FUN_0083ea60(param_1_00 + 0x598);
  }
  if (iVar1 + 0x5a0 != param_1_00 + 0x5a0) {
    FUN_0083ea60(param_1_00 + 0x5a0);
  }
  if (iVar1 + 0x5a8 != param_1_00 + 0x5a8) {
    FUN_0083ea60(param_1_00 + 0x5a8);
  }
  if (iVar1 + 0x5b0 != param_1_00 + 0x5b0) {
    FUN_0083ea60(param_1_00 + 0x5b0);
  }
  if (iVar1 + 0x5b8 != param_1_00 + 0x5b8) {
    FUN_0083ea60(param_1_00 + 0x5b8);
  }
  if (iVar1 + 0x5d0 != param_1_00 + 0x5d0) {
    FUN_0083ea60(param_1_00 + 0x5d0);
  }
  if (iVar1 + 0x5c0 != param_1_00 + 0x5c0) {
    FUN_0083ea60(param_1_00 + 0x5c0);
  }
  if (iVar1 + 0x5c8 != param_1_00 + 0x5c8) {
    FUN_0083ea60(param_1_00 + 0x5c8);
  }
  if (iVar1 + 0x5d8 != param_1_00 + 0x5d8) {
    FUN_0083ea60(param_1_00 + 0x5d8);
  }
  if (iVar1 + 0x5e0 != param_1_00 + 0x5e0) {
    FUN_0083ea60(param_1_00 + 0x5e0);
  }
  *(undefined4 *)(iVar1 + 0x5f0) = *(undefined4 *)(param_1_00 + 0x5f0);
  *(undefined4 *)(iVar1 + 0x5f4) = *(undefined4 *)(param_1_00 + 0x5f4);
  *(undefined4 *)(iVar1 + 0x5f8) = *(undefined4 *)(param_1_00 + 0x5f8);
  *(undefined4 *)(iVar1 + 0x5fc) = *(undefined4 *)(param_1_00 + 0x5fc);
  *(undefined4 *)(iVar1 + 0x600) = *(undefined4 *)(param_1_00 + 0x600);
  *(undefined4 *)(iVar1 + 0x604) = *(undefined4 *)(param_1_00 + 0x604);
  *(undefined4 *)(iVar1 + 0x608) = *(undefined4 *)(param_1_00 + 0x608);
  *(undefined4 *)(iVar1 + 0x60c) = *(undefined4 *)(param_1_00 + 0x60c);
  *(undefined4 *)(iVar1 + 0x614) = *(undefined4 *)(param_1_00 + 0x614);
  *(undefined4 *)(iVar1 + 0x618) = *(undefined4 *)(param_1_00 + 0x618);
  *(undefined4 *)(iVar1 + 0x61c) = *(undefined4 *)(param_1_00 + 0x61c);
  *(undefined4 *)(iVar1 + 0x620) = *(undefined4 *)(param_1_00 + 0x620);
  return;
}



void __thiscall FUN_00a339c0(int param_1_00,int param_1,int param_2)

{
  if (param_1 == 0xc) {
    param_1_00 = param_1_00 + 0x580;
  }
  else if (param_1 == 0xd) {
    param_1_00 = param_1_00 + 0x588;
  }
  else {
    if (param_1 != 0xe) {
      if (PTR_FUN_03235c4c == (undefined *)0x0) {
        return;
      }
      FUN_00840480("..\\..\\src\\ribbon\\art_msw.cpp",0x1fd,"wxRibbonMSWArtProvider::SetFont",
                   "Assert failure",L"Invalid Metric Ordinal");
      return;
    }
    param_1_00 = param_1_00 + 0x578;
  }
  if (param_1_00 != param_2) {
    FUN_0083ea60(param_2);
  }
  return;
}



void __thiscall FUN_00a33a30(int param_1_00,undefined4 *param_1,int param_2)

{
  int iVar1;
  
  if (param_2 == 0xc) {
    iVar1 = *(int *)(param_1_00 + 0x584);
  }
  else if (param_2 == 0xd) {
    iVar1 = *(int *)(param_1_00 + 0x58c);
  }
  else {
    if (param_2 != 0xe) {
      if (PTR_FUN_03235c4c != (undefined *)0x0) {
        FUN_00840480("..\\..\\src\\ribbon\\art_msw.cpp",0x20d,"wxRibbonMSWArtProvider::GetFont",
                     "Assert failure",L"Invalid Metric Ordinal",0);
      }
      iVar1 = DAT_03238ce8;
      param_1[1] = DAT_03238ce8;
      goto LAB_00a33aa1;
    }
    iVar1 = *(int *)(param_1_00 + 0x57c);
  }
  param_1[1] = iVar1;
LAB_00a33aa1:
  *param_1 = wxObject::vftable;
  if (iVar1 != 0) {
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
  }
  *param_1 = wxFont::vftable;
  return;
}



void __thiscall FUN_00a33ac0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined local_c0 [8];
  undefined local_b8 [8];
  undefined local_b0 [8];
  undefined local_a8 [8];
  undefined local_a0 [8];
  undefined local_98 [8];
  undefined local_90 [8];
  undefined local_88 [8];
  undefined local_80 [8];
  undefined local_78 [8];
  undefined local_70 [8];
  undefined local_68 [8];
  undefined local_60 [8];
  undefined local_58 [8];
  undefined local_50 [8];
  undefined local_48 [8];
  undefined local_40 [8];
  undefined local_38 [8];
  undefined local_30 [8];
  undefined local_28 [8];
  undefined local_20 [8];
  void *pvStack_18;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00bf12ad;
  local_14 = ExceptionList;
  switch(param_1) {
  case 0xf:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x10:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x5c0) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x11:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x12:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x13:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x14:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x15:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x5c8) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x16:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x17:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x18:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x19:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x1a:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x5d0) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x1b:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x550) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x1c:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x1d:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x1e:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x558) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x1f:
    ExceptionList = &local_14;
    FUN_004722cb();
    if ((*(byte *)(param_1_00 + 0x5f0) & 4) == 0) {
      FUN_00458700(param_2);
      FUN_00a3e280(local_a8,&PTR_s_5_5_2_1_00da0644);
      local_c = 2;
      FUN_00454997();
      local_c = 0xffffffff;
      FUN_008f7630();
      FUN_00458700(param_2);
      FUN_00a3e280(local_28,&PTR_s_5_5_2_1_00da0664);
      local_c = 3;
      FUN_00454997();
    }
    else {
      FUN_00458700(param_2);
      FUN_00a3e280(local_48,&PTR_s_5_5_2_1_00da0684);
      local_c = 0;
      FUN_00454997();
      local_c = 0xffffffff;
      FUN_008f7630();
      FUN_00458700(param_2);
      FUN_00a3e280(local_68,&PTR_s_5_5_2_1_00da06a4);
      local_c = 1;
      FUN_00454997();
    }
    local_c = 0xffffffff;
    FUN_008f7630();
    FUN_00458700(param_2);
    FUN_00a3e280(local_98,&PTR_s_5_5_2_1_00da06c4);
    local_c = 4;
    FUN_00454997();
    local_c = 0xffffffff;
    FUN_008f7630();
    ExceptionList = local_14;
    return;
  case 0x20:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x21:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x22:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x560) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x23:
    ExceptionList = &local_14;
    FUN_004722cb();
    if ((*(byte *)(param_1_00 + 0x5f0) & 4) == 0) {
      FUN_00458700(param_2);
      FUN_00a3e280(local_38,&PTR_s_5_5_2_1_00da0644);
      local_c = 7;
      FUN_00454997();
      local_c = 0xffffffff;
      FUN_008f7630();
      FUN_00458700(param_2);
      FUN_00a3e280(local_78,&PTR_s_5_5_2_1_00da0664);
      local_c = 8;
      FUN_00454997();
    }
    else {
      FUN_00458700(param_2);
      FUN_00a3e280(local_58,&PTR_s_5_5_2_1_00da0684);
      local_c = 5;
      FUN_00454997();
      local_c = 0xffffffff;
      FUN_008f7630();
      FUN_00458700(param_2);
      FUN_00a3e280(local_88,&PTR_s_5_5_2_1_00da06a4);
      local_c = 6;
      FUN_00454997();
    }
    local_c = 0xffffffff;
    FUN_008f7630();
    FUN_00458700(param_2);
    FUN_00a3e280(local_c0,&PTR_s_5_5_2_1_00da06c4);
    local_c = 9;
    FUN_00454997();
    local_c = 0xffffffff;
    FUN_008f7630();
    ExceptionList = local_14;
    return;
  case 0x24:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x25:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x26:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x558) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x27:
    ExceptionList = &local_14;
    FUN_004722cb();
    if ((*(byte *)(param_1_00 + 0x5f0) & 4) == 0) {
      FUN_00458700(param_2);
      FUN_00a3e280(local_a0,&PTR_s_5_5_2_1_00da0644);
      local_c = 0xc;
      FUN_00454997();
      local_c = 0xffffffff;
      FUN_008f7630();
      FUN_00458700(param_2);
      FUN_00a3e280(local_90,&PTR_s_5_5_2_1_00da0664);
      local_c = 0xd;
      FUN_00454997();
    }
    else {
      FUN_00458700(param_2);
      FUN_00a3e280(local_b8,&PTR_s_5_5_2_1_00da0684);
      local_c = 10;
      FUN_00454997();
      local_c = 0xffffffff;
      FUN_008f7630();
      FUN_00458700(param_2);
      FUN_00a3e280(local_b0,&PTR_s_5_5_2_1_00da06a4);
      local_c = 0xb;
      FUN_00454997();
    }
    local_c = 0xffffffff;
    FUN_008f7630();
    FUN_00458700(param_2);
    FUN_00a3e280(local_80,&PTR_s_5_5_2_1_00da06c4);
    local_c = 0xe;
    FUN_00454997();
    local_c = 0xffffffff;
    FUN_008f7630();
    ExceptionList = local_14;
    return;
  case 0x28:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x29:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x2a:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x570) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x2b:
    ExceptionList = &local_14;
    FUN_004722cb();
    if ((*(byte *)(param_1_00 + 0x5f0) & 4) == 0) {
      FUN_00458700(param_2);
      FUN_00a3e280(local_50,&PTR_s_5_5_2_1_00da0644);
      local_c = 0x11;
      FUN_00454997();
      local_c = 0xffffffff;
      FUN_008f7630();
      FUN_00458700(param_2);
      FUN_00a3e280(local_40,&PTR_s_5_5_2_1_00da0664);
      local_c = 0x12;
      FUN_00454997();
    }
    else {
      FUN_00458700(param_2);
      FUN_00a3e280(local_70,&PTR_s_5_5_2_1_00da0684);
      local_c = 0xf;
      FUN_00454997();
      local_c = 0xffffffff;
      FUN_008f7630();
      FUN_00458700(param_2);
      FUN_00a3e280(local_60,&PTR_s_5_5_2_1_00da06a4);
      local_c = 0x10;
      FUN_00454997();
    }
    local_c = 0xffffffff;
    FUN_008f7630();
    FUN_00458700(param_2);
    FUN_00a3e280(local_30,&PTR_s_5_5_2_1_00da06c4);
    local_c = 0x13;
    FUN_00454997();
    local_c = 0xffffffff;
    FUN_008f7630();
    ExceptionList = local_14;
    return;
  case 0x2c:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x5d8) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x2d:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x2e:
    break;
  case 0x2f:
    break;
  case 0x30:
  case 0x31:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x538) + 0x30))();
    *(undefined8 *)(param_1_00 + 0x5e8) = 0xbff0000000000000;
    ExceptionList = pvStack_18;
    return;
  case 0x32:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x33:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x34:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x35:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x36:
  case 0x37:
    return;
  case 0x38:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x39:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x3a:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x5b8) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x3b:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x598) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x3c:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x5a0) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x3d:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x5a8) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x3e:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x5b0) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x3f:
  case 0x40:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x540) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x41:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x42:
  case 0x43:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x548) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x44:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x45:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x46:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x47:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x48:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x49:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x4a:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x590) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x4b:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x4c:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x4d:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x4e:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x4f:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x50:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x51:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x52:
    ExceptionList = &local_14;
    FUN_004722cb();
    ExceptionList = local_14;
    return;
  case 0x53:
  case 0x54:
    ExceptionList = &local_14;
    (**(code **)(*(int *)(param_1_00 + 0x5e0) + 0x30))();
    ExceptionList = pvStack_18;
    return;
  case 0x55:
    ExceptionList = &local_14;
    FUN_004722cb();
    FUN_00458700(param_2);
    FUN_00a3e280(local_20,&PTR_s_5_5_2_1_00da0664);
    local_c = 0x14;
    FUN_00454997();
    local_c = 0xffffffff;
    FUN_008f7630();
    ExceptionList = local_14;
    return;
  default:
    if (PTR_FUN_03235c4c == (undefined *)0x0) {
      return;
    }
    ExceptionList = &local_14;
    FUN_00840480();
    ExceptionList = local_14;
    return;
  }
  ExceptionList = &local_14;
  FUN_004722cb();
  *(undefined8 *)(param_1_00 + 0x5e8) = 0xbff0000000000000;
  ExceptionList = local_14;
  return;
}



void __thiscall FUN_00a34ca0(int *param_1_00,undefined4 param_1,int *param_2,double param_3)

{
  int iVar1;
  int iVar2;
  double dVar3;
  double dVar4;
  char cVar5;
  int *piVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  uint uStack_cc;
  int iStack_b4;
  undefined **ppuStack_b0;
  undefined **ppuStack_ac;
  undefined **ppuStack_a8;
  undefined **ppuStack_a4;
  int iStack_a0;
  int *local_9c;
  double dStack_90;
  undefined8 uStack_88;
  double dStack_80;
  double dStack_78;
  double dStack_70;
  double dStack_68;
  double dStack_60;
  double dStack_58;
  undefined4 uStack_50;
  undefined auStack_4c [8];
  undefined4 uStack_44;
  double dStack_40;
  undefined auStack_38 [5];
  undefined3 uStack_33;
  undefined4 uStack_30;
  void *pvStack_2c;
  undefined4 uStack_24;
  undefined uStack_20;
  undefined uStack_1c;
  void *local_14;
  undefined *puStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0xffffffff;
  puStack_10 = &LAB_00bf1325;
  local_14 = ExceptionList;
  uStack_cc = DAT_0323f878 ^ (uint)&stack0xffffff38;
  ExceptionList = &local_14;
  local_9c = param_1_00;
  cVar5 = (**(code **)(param_1_00[1] + 0x10))();
  if (cVar5 != '\0') {
    ppuStack_b0 = (undefined **)param_2[2];
    ppuStack_a4 = (undefined **)0x0;
    if (param_1_00[2] == 0) {
      iStack_a0 = 0;
    }
    else {
      iStack_a0 = *(int *)(param_1_00[2] + 0xc);
      ppuStack_a4 = *(undefined ***)(param_1_00[2] + 8);
    }
    if ((ppuStack_a4 == ppuStack_b0) && (iStack_a0 == param_2[3])) goto LAB_00a34d70;
  }
  ppuStack_b0 = (undefined **)param_2[2];
  ppuStack_ac = (undefined **)param_2[3];
  piVar6 = (int *)FUN_00a32960(&ppuStack_b0,0xffffffff);
  uStack_c = 0;
  if (param_1_00 + 1 != piVar6) {
    FUN_0083ea60(piVar6);
  }
  uStack_c = 0xffffffff;
  FUN_008f7630();
LAB_00a34d70:
  FUN_0094bdd0(param_1_00 + 1);
  uStack_c = 1;
  (**(code **)(*param_1_00 + 0x30))((int)&uStack_88 + 4,param_1,param_2);
  iVar1 = param_2[2];
  iVar9 = param_2[3] + -1;
  unique0x10000101 = (double)iVar9;
  iVar2 = *param_2;
  piVar6 = (int *)(**(code **)(param_1_00[0x14e] + 0x3c))(&ppuStack_a4);
  uStack_1c = 2;
  uVar7 = (**(code **)(*piVar6 + 0x10))();
  uStack_1c = 1;
  ppuStack_a8 = wxObject::vftable;
  dStack_78 = (double)(uVar7 & 0xff) * (1.0 - param_3) + 0.5;
  FUN_0083e850();
  piVar6 = (int *)(**(code **)(param_1_00[0x14e] + 0x3c))(&ppuStack_a8);
  uStack_20 = 3;
  uStack_cc = (**(code **)(*piVar6 + 0x14))();
  uStack_cc = uStack_cc & 0xff;
  uStack_20 = 1;
  ppuStack_ac = wxObject::vftable;
  auStack_4c = (undefined  [8])
               ((double)uStack_cc * (double)CONCAT44(SUB84(1.0 - param_3,0),iVar9) + 0.5);
  FUN_0083e850();
  piVar6 = (int *)(**(code **)(param_1_00[0x14e] + 0x3c))(&ppuStack_ac);
  uStack_24._0_1_ = 4;
  uVar8 = (**(code **)(*piVar6 + 0x18))();
  uStack_24 = CONCAT31(uStack_24._1_3_,1);
  ppuStack_b0 = wxObject::vftable;
  dStack_78 = (double)(uVar8 & 0xff) * (double)(CONCAT44(iVar9,uVar7) & 0xffffffff000000ff) + 0.5;
  FUN_0083e850();
  uVar7 = (**(code **)(*(int *)(iStack_b4 + 0xd8) + 0x10))();
  unique0x100001d5 = (double)(uVar7 & 0xff);
  uVar7 = (**(code **)(*(int *)(iStack_b4 + 0xd8) + 0x14))();
  dStack_90 = (double)(uVar7 & 0xff);
  uVar7 = (**(code **)(*(int *)(iStack_b4 + 0xd8) + 0x18))();
  dStack_60 = (double)(uVar7 & 0xff);
  uVar7 = (**(code **)(*(int *)(iStack_b4 + 0xec) + 0x10))();
  _auStack_38 = (double)(uVar7 & 0xff);
  uVar7 = (**(code **)(*(int *)(iStack_b4 + 0xec) + 0x14))();
  dStack_70 = (double)(uVar7 & 0xff);
  uVar7 = (**(code **)(*(int *)(iStack_b4 + 0xec) + 0x18))();
  uStack_88 = (double)(uVar7 & 0xff);
  iVar9 = 0;
  if (param_2[3] != 1 && -1 < param_2[3] + -1) {
    do {
      ppuStack_ac = (undefined **)0x0;
      dVar3 = (double)iVar9 / dStack_40;
      dVar4 = 1.0 - dVar3;
      dStack_58 = (dVar3 * _auStack_38 + unique0x100005ab * dVar4) * param_3 + dStack_80;
      dStack_68 = (dVar3 * dStack_70 + dVar4 * dStack_90) * param_3 +
                  (double)CONCAT44(auStack_4c._0_4_,uStack_50);
      dVar3 = param_3 * (dVar3 * uStack_88 + dVar4 * dStack_60) + dStack_78;
      uStack_24._0_1_ = 5;
      ppuStack_b0 = wxColour::vftable;
      FUN_0093b2c0();
      (*(code *)ppuStack_b0[10])
                ((int)ROUND(dStack_58) & 0xff,(int)ROUND(dStack_68) & 0xff,(int)ROUND(dVar3) & 0xff,
                 0xff);
      auStack_38[4] = 6;
      FUN_009566f0(&stack0xffffff40,1,100);
      stack0xffffffcc = CONCAT31(uStack_33,8);
      FUN_0083e850();
      (**(code **)(*ppuStack_a4 + 0x58))(&uStack_cc);
      (**(code **)(*ppuStack_a8 + 0x13c))(iVar1 / 2 + iVar2,param_2[1] + iVar9);
      uStack_24 = CONCAT31(uStack_24._1_3_,1);
      FUN_0083e850();
      iVar9 = iVar9 + 1;
    } while (iVar9 < param_2[3] + -1);
  }
  *(double *)(iStack_b4 + 0x5e8) = param_3;
  uStack_24 = 0xffffffff;
  FUN_00457221();
  ExceptionList = pvStack_2c;
  return;
}



void FUN_00a35170(int *param_1,int param_2,int param_3,int *param_4,char param_5)

{
  int iVar1;
  char cVar2;
  undefined **ppuStack_d8;
  undefined4 uStack_d4;
  undefined4 uStack_d0;
  undefined uStack_cc;
  undefined uStack_cb;
  undefined uStack_ca;
  undefined uStack_c9;
  undefined uStack_c8;
  undefined **ppuStack_c4;
  undefined4 uStack_c0;
  undefined4 uStack_bc;
  undefined uStack_b8;
  undefined uStack_b7;
  undefined uStack_b6;
  undefined uStack_b5;
  undefined uStack_b4;
  undefined **ppuStack_b0;
  undefined4 uStack_ac;
  undefined4 uStack_a8;
  undefined uStack_a4;
  undefined uStack_a3;
  undefined uStack_a2;
  undefined uStack_a1;
  undefined uStack_a0;
  undefined **ppuStack_9c;
  undefined4 uStack_98;
  undefined4 uStack_94;
  undefined uStack_90;
  undefined uStack_8f;
  undefined uStack_8e;
  undefined uStack_8d;
  undefined uStack_8c;
  undefined4 uStack_88;
  int iStack_84;
  int local_80;
  int local_7c;
  int local_78;
  int local_74;
  int local_70;
  int local_6c;
  int iStack_68;
  int iStack_64;
  undefined4 uStack_60;
  int iStack_5c;
  undefined4 uStack_58;
  int iStack_54;
  undefined4 uStack_50;
  int iStack_4c;
  undefined4 uStack_48;
  int iStack_44;
  int iStack_40;
  undefined **appuStack_3c [5];
  undefined **appuStack_28 [5];
  void *pvStack_14;
  undefined4 local_c;
  undefined *puStack_8;
  int iStack_4;
  
  iStack_4 = -1;
  puStack_8 = &LAB_00bf13c8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_80 = 0;
  local_7c = 0;
  local_78 = 0;
  local_74 = 0;
  if ((*(int *)(param_2 + 0xd4) == 0) || (*(int **)(param_2 + 0x44) == param_4)) {
    (**(code **)(*param_4 + 0x278))(&local_70,&local_6c,DAT_0323f878 ^ (uint)&stack0xffffff10);
    uStack_88 = 0;
    iStack_84 = 0;
    local_80 = local_78;
    local_7c = local_74;
    FUN_00a2d140(&uStack_88);
    local_7c = local_7c + -2;
  }
  else {
    (**(code **)(**(int **)(param_2 + 0x44) + 0x278))(&local_6c,&local_70);
    iStack_84 = 0;
    param_3 = 0;
    param_4 = (int *)0x0;
    local_7c = local_78;
  }
  iStack_44 = local_7c / 5;
  iStack_54 = local_7c - iStack_44;
  iStack_5c = iStack_84 + iStack_44;
  local_6c = param_1[1] + (int)param_4;
  local_70 = *param_1 + param_3;
  iStack_68 = param_1[2];
  iStack_64 = param_1[3];
  uStack_88 = 0;
  local_80 = 0x7fffffff;
  uStack_50 = 0;
  uStack_48 = 0x7fffffff;
  uStack_60 = 0;
  uStack_58 = 0x7fffffff;
  uStack_ac = 0;
  local_c = (void *)0x0;
  ppuStack_b0 = wxColour::vftable;
  iStack_4c = iStack_84;
  FUN_0093b2c0();
  uStack_d4 = 0;
  local_c._0_1_ = 2;
  local_c._1_3_ = 0;
  ppuStack_d8 = wxColour::vftable;
  FUN_0093b2c0();
  uStack_98 = 0;
  local_c._0_1_ = 4;
  ppuStack_9c = wxColour::vftable;
  FUN_0093b2c0();
  uStack_c0 = 0;
  local_c._0_1_ = 6;
  ppuStack_c4 = wxColour::vftable;
  FUN_0093b2c0();
  local_c = (void *)CONCAT31(local_c._1_3_,7);
  if (param_5 == '\0') {
    if (&ppuStack_b0 != (undefined ***)(iStack_40 + 0x22c)) {
      FUN_0083ea60((undefined ***)(iStack_40 + 0x22c));
    }
    uStack_a8 = *(undefined4 *)(iStack_40 + 0x234);
    uStack_a4 = *(undefined *)(iStack_40 + 0x238);
    uStack_a3 = *(undefined *)(iStack_40 + 0x239);
    uStack_a2 = *(undefined *)(iStack_40 + 0x23a);
    uStack_a1 = *(undefined *)(iStack_40 + 0x23b);
    uStack_a0 = *(undefined *)(iStack_40 + 0x23c);
    if (&ppuStack_d8 != (undefined ***)(iStack_40 + 0x240)) {
      FUN_0083ea60((undefined ***)(iStack_40 + 0x240));
    }
    uStack_d0 = *(undefined4 *)(iStack_40 + 0x248);
    uStack_cc = *(undefined *)(iStack_40 + 0x24c);
    uStack_cb = *(undefined *)(iStack_40 + 0x24d);
    uStack_ca = *(undefined *)(iStack_40 + 0x24e);
    uStack_c9 = *(undefined *)(iStack_40 + 0x24f);
    uStack_c8 = *(undefined *)(iStack_40 + 0x250);
    if (&ppuStack_9c != (undefined ***)(iStack_40 + 0x204)) {
      FUN_0083ea60((undefined ***)(iStack_40 + 0x204));
    }
    uStack_94 = *(undefined4 *)(iStack_40 + 0x20c);
    uStack_90 = *(undefined *)(iStack_40 + 0x210);
    uStack_8f = *(undefined *)(iStack_40 + 0x211);
    uStack_8e = *(undefined *)(iStack_40 + 0x212);
    uStack_8d = *(undefined *)(iStack_40 + 0x213);
    uStack_8c = *(undefined *)(iStack_40 + 0x214);
    if (&ppuStack_c4 != (undefined ***)(iStack_40 + 0x218)) {
      FUN_0083ea60((undefined ***)(iStack_40 + 0x218));
    }
    uStack_b8 = *(undefined *)(iStack_40 + 0x224);
    uStack_b7 = *(undefined *)(iStack_40 + 0x225);
    uStack_bc = *(undefined4 *)(iStack_40 + 0x220);
    uStack_b5 = *(undefined *)(iStack_40 + 0x227);
    uStack_b4 = *(undefined *)(iStack_40 + 0x228);
    uStack_b6 = *(undefined *)(iStack_40 + 0x226);
  }
  else {
    if (&ppuStack_b0 != (undefined ***)(iStack_40 + 0x27c)) {
      FUN_0083ea60((undefined ***)(iStack_40 + 0x27c));
    }
    uStack_a8 = *(undefined4 *)(iStack_40 + 0x284);
    uStack_a4 = *(undefined *)(iStack_40 + 0x288);
    uStack_a3 = *(undefined *)(iStack_40 + 0x289);
    uStack_a2 = *(undefined *)(iStack_40 + 0x28a);
    uStack_a1 = *(undefined *)(iStack_40 + 0x28b);
    uStack_a0 = *(undefined *)(iStack_40 + 0x28c);
    if (&ppuStack_d8 != (undefined ***)(iStack_40 + 0x290)) {
      FUN_0083ea60((undefined ***)(iStack_40 + 0x290));
    }
    uStack_d0 = *(undefined4 *)(iStack_40 + 0x298);
    uStack_cc = *(undefined *)(iStack_40 + 0x29c);
    uStack_cb = *(undefined *)(iStack_40 + 0x29d);
    uStack_ca = *(undefined *)(iStack_40 + 0x29e);
    uStack_c9 = *(undefined *)(iStack_40 + 0x29f);
    uStack_c8 = *(undefined *)(iStack_40 + 0x2a0);
    if (&ppuStack_9c != (undefined ***)(iStack_40 + 0x254)) {
      FUN_0083ea60((undefined ***)(iStack_40 + 0x254));
    }
    uStack_94 = *(undefined4 *)(iStack_40 + 0x25c);
    uStack_90 = *(undefined *)(iStack_40 + 0x260);
    uStack_8f = *(undefined *)(iStack_40 + 0x261);
    uStack_8e = *(undefined *)(iStack_40 + 0x262);
    uStack_8d = *(undefined *)(iStack_40 + 0x263);
    uStack_8c = *(undefined *)(iStack_40 + 0x264);
    if (&ppuStack_c4 != (undefined ***)(iStack_40 + 0x268)) {
      FUN_0083ea60((undefined ***)(iStack_40 + 0x268));
    }
    uStack_b8 = *(undefined *)(iStack_40 + 0x274);
    uStack_b7 = *(undefined *)(iStack_40 + 0x275);
    uStack_bc = *(undefined4 *)(iStack_40 + 0x270);
    uStack_b5 = *(undefined *)(iStack_40 + 0x277);
    uStack_b4 = *(undefined *)(iStack_40 + 0x278);
    uStack_b6 = *(undefined *)(iStack_40 + 0x276);
  }
  cVar2 = FUN_008f7940(&uStack_50);
  iVar1 = iStack_4;
  if (cVar2 != '\0') {
    FUN_008f7750(&local_70);
    FUN_00a3e360(appuStack_28,&ppuStack_b0,&ppuStack_d8,local_6c,iStack_4c,iStack_4c + iStack_44);
    local_c._0_1_ = 8;
    FUN_00a3e360(appuStack_3c,&ppuStack_b0,&ppuStack_d8,iStack_64 + local_6c,iStack_4c,
                 iStack_4c + iStack_44);
    local_c._0_1_ = 9;
    (**(code **)(**(int **)(iVar1 + 8) + 0x130))(&stack0xffffff18,appuStack_28,appuStack_3c,0x80);
    local_c._0_1_ = 8;
    appuStack_3c[0] = wxObject::vftable;
    FUN_0083e850();
    local_c = (void *)CONCAT31(local_c._1_3_,7);
    appuStack_28[0] = wxObject::vftable;
    FUN_0083e850();
  }
  cVar2 = FUN_008f7940(&uStack_60);
  if (cVar2 != '\0') {
    FUN_008f7750(&local_70);
    FUN_00a3e360(appuStack_3c,&ppuStack_9c,&ppuStack_c4,local_6c,iStack_5c,iStack_54 + iStack_5c);
    local_c._0_1_ = 10;
    FUN_00a3e360(appuStack_28,&ppuStack_9c,&ppuStack_c4,iStack_64 + local_6c,iStack_5c,
                 iStack_54 + iStack_5c);
    local_c._0_1_ = 0xb;
    (**(code **)(**(int **)(iVar1 + 8) + 0x130))(&stack0xffffff18,appuStack_3c,appuStack_28,0x80);
    local_c._0_1_ = 10;
    appuStack_28[0] = wxObject::vftable;
    FUN_0083e850();
    local_c = (void *)CONCAT31(local_c._1_3_,7);
    appuStack_3c[0] = wxObject::vftable;
    FUN_0083e850();
  }
  local_c._0_1_ = 5;
  ppuStack_c4 = wxObject::vftable;
  FUN_0083e850();
  local_c._0_1_ = 3;
  ppuStack_9c = wxObject::vftable;
  FUN_0083e850();
  local_c = (void *)CONCAT31(local_c._1_3_,1);
  ppuStack_d8 = wxObject::vftable;
  FUN_0083e850();
  local_c = (void *)0xffffffff;
  ppuStack_b0 = wxObject::vftable;
  FUN_0083e850();
  ExceptionList = pvStack_14;
  return;
}



void __thiscall
FUN_00a358f0(int param_1_00,int param_1,int param_2,int param_3,undefined **param_4,int param_5,
            undefined4 param_6,undefined ***param_7)

{
  bool bVar1;
  int iStack_88;
  undefined **ppuStack_84;
  int iStack_80;
  int *piStack_7c;
  undefined **ppuStack_78;
  uint uStack_74;
  undefined **local_60;
  int local_5c;
  undefined local_58 [12];
  void *pvStack_4c;
  undefined4 uStack_44;
  undefined **local_40;
  undefined4 local_3c;
  undefined **local_2c;
  undefined4 local_28;
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  puStack_10 = &LAB_00bf1420;
  local_14 = ExceptionList;
  uStack_74 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_14;
  local_5c = 0;
  local_60 = wxBitmap::vftable;
  local_c = 0;
  ppuStack_78 = (undefined **)0xa35939;
  FUN_0095d530();
  local_28 = 0;
  local_c._0_1_ = 2;
  local_2c = wxColour::vftable;
  ppuStack_78 = (undefined **)0xa35954;
  FUN_0093b2c0();
  local_3c = 0;
  local_c._0_1_ = 4;
  local_40 = wxColour::vftable;
  ppuStack_78 = (undefined **)0xa3596a;
  FUN_0093b2c0();
  local_c = CONCAT31(local_c._1_3_,5);
  switch(param_6) {
  case 0:
    ppuStack_78 = (undefined **)(param_1_00 + 0x558);
    if ((undefined **)local_58 != ppuStack_78) {
      piStack_7c = (int *)0xa35996;
      FUN_0083ea60();
    }
    ppuStack_78 = (undefined **)(param_1_00 + 0x344);
    piStack_7c = (int *)0xa359a6;
    FUN_004722cb();
    ppuStack_78 = (undefined **)(param_1_00 + 0x358);
    piStack_7c = (int *)0xa359b6;
    FUN_004722cb();
    bVar1 = &local_60 == param_7;
    break;
  case 1:
    ppuStack_78 = (undefined **)(param_1_00 + 0x560);
    if ((undefined **)local_58 != ppuStack_78) {
      piStack_7c = (int *)0xa359da;
      FUN_0083ea60();
    }
    ppuStack_78 = (undefined **)(param_1_00 + 0x36c);
    piStack_7c = (int *)0xa359ea;
    FUN_004722cb();
    ppuStack_78 = (undefined **)(param_1_00 + 0x380);
    piStack_7c = (int *)0xa359fa;
    FUN_004722cb();
    param_7 = param_7 + 2;
    goto LAB_00a35a80;
  case 2:
    ppuStack_78 = (undefined **)(param_1_00 + 0x568);
    if ((undefined **)local_58 != ppuStack_78) {
      piStack_7c = (int *)0xa35a16;
      FUN_0083ea60();
    }
    ppuStack_78 = (undefined **)(param_1_00 + 0x394);
    piStack_7c = (int *)0xa35a26;
    FUN_004722cb();
    ppuStack_78 = (undefined **)(param_1_00 + 0x3a8);
    piStack_7c = (int *)0xa35a36;
    FUN_004722cb();
    param_7 = param_7 + 4;
    bVar1 = &local_60 == param_7;
    break;
  case 3:
    ppuStack_78 = (undefined **)(param_1_00 + 0x570);
    if ((undefined **)local_58 != ppuStack_78) {
      piStack_7c = (int *)0xa35a5a;
      FUN_0083ea60();
    }
    ppuStack_78 = (undefined **)(param_1_00 + 0x3bc);
    piStack_7c = (int *)0xa35a6a;
    FUN_004722cb();
    ppuStack_78 = (undefined **)(param_1_00 + 0x3d0);
    piStack_7c = (int *)0xa35a7a;
    FUN_004722cb();
    param_7 = param_7 + 6;
LAB_00a35a80:
    bVar1 = &local_60 == param_7;
    break;
  default:
    goto switchD_00a3597b_caseD_4;
  }
  if (!bVar1) {
    piStack_7c = (int *)0xa35a92;
    ppuStack_78 = (undefined **)param_7;
    FUN_0083ea60();
  }
switchD_00a3597b_caseD_4:
  if ((*(byte *)(param_1_00 + 0x5f0) & 4) == 0) {
    param_4 = (undefined **)((int)param_4 + -2);
    param_5 = param_5 + -1;
  }
  else {
    param_4 = (undefined **)((int)param_4 + -1);
    param_5 = param_5 + -2;
  }
  ppuStack_78 = (undefined **)0x24;
  piStack_7c = (int *)0xa35abd;
  ppuStack_78 = (undefined **)FUN_008f8330();
  piStack_7c = (int *)0xa35ace;
  (**(code **)(**(int **)(param_1 + 8) + 0x58))();
  piStack_7c = &local_5c;
  iStack_80 = 0xa35add;
  (**(code **)(**(int **)(param_1 + 8) + 0x60))();
  iStack_80 = param_5 / 2;
  ppuStack_84 = param_4;
  iStack_88 = param_3 + 1;
  (**(code **)(**(int **)(param_1 + 8) + 0x150))(param_2 + 1);
  local_60 = param_4;
  local_5c = (param_5 + 1) / 2;
  (**(code **)(**(int **)(param_1 + 8) + 0x130))(&stack0xffffff98,&uStack_44,local_58,0x80);
  (**(code **)(**(int **)(param_1 + 8) + 0x164))
            (&iStack_88,(int)param_4 / 2 + -2 + param_2 + 1,uStack_74 - 2,1);
  uStack_44._0_1_ = 3;
  ppuStack_78 = wxObject::vftable;
  FUN_0083e850();
  uStack_44._0_1_ = 1;
  FUN_0083e850();
  uStack_44 = (uint)uStack_44._1_3_ << 8;
  FUN_008f7630();
  uStack_44 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_4c;
  return;
}



void __thiscall FUN_00a35bf0(int param_1_00,int param_1,int *param_2,undefined4 param_3,int param_4)

{
  undefined *puVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  int iVar7;
  int iStack_a4;
  int iStack_a0;
  int iStack_9c;
  int iStack_98;
  int iStack_94;
  int iStack_90;
  int iStack_8c;
  int iStack_88;
  int iStack_84;
  int iStack_80;
  int iStack_7c;
  int iStack_78;
  uint uStack_74;
  int iStack_34;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf1458;
  local_c = ExceptionList;
  uStack_74 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  iStack_78 = 0xa35c28;
  iVar3 = FUN_009da8f0();
  if (iVar3 != param_4) {
    iStack_78 = 0xa35c3a;
    iVar3 = FUN_00975eb0();
    if (iVar3 != param_4) {
      iStack_78 = 0xa35c45;
      iVar3 = FUN_00a3e520();
      if (iVar3 != param_4) {
        ExceptionList = local_c;
        return;
      }
    }
  }
  iStack_78 = param_1_00 + 0x5d8;
  iStack_7c = 0xa35c62;
  (**(code **)(**(int **)(param_1 + 8) + 0x58))();
  iStack_84 = param_2[1];
  iStack_80 = param_2[2] + -1 + *param_2;
  iStack_88 = *param_2 + 1;
  iStack_8c = 0xa35c89;
  iStack_7c = iStack_84;
  (**(code **)(**(int **)(param_1 + 8) + 0x140))();
  iStack_98 = *param_2;
  iStack_8c = param_2[1] + -1 + param_2[3];
  iStack_94 = param_2[1] + 1;
  iStack_9c = 0xa35ca7;
  iStack_90 = iStack_98;
  (**(code **)(**(int **)(param_1 + 8) + 0x140))();
  iStack_a4 = param_2[3] + -1 + param_2[1];
  iStack_a0 = param_2[2] + -1 + *param_2;
  iVar3 = *param_2 + 1;
  iStack_9c = iStack_a4;
  (**(code **)(**(int **)(param_1 + 8) + 0x140))(iVar3);
  iVar7 = param_2[2] + -1 + *param_2;
  (**(code **)(**(int **)(param_1 + 8) + 0x140))
            (iVar7,param_2[1] + 1,iVar7,param_2[1] + -1 + param_2[3]);
  FUN_0095d530();
  FUN_00453f4b();
  FUN_00453f4b();
  iVar4 = FUN_00975eb0();
  if ((iVar4 == iStack_34) || (iVar5 = FUN_00a3e520(), iVar4 = iStack_a4, iVar5 == iStack_34)) {
    iVar4 = iStack_a4;
    if (&iStack_a0 != (int *)(iStack_a4 + 0x568)) {
      FUN_0083ea60((int *)(iStack_a4 + 0x568));
    }
    puVar1 = (undefined *)(iVar4 + 0x394);
    if (&stack0xffffff9c != puVar1) {
      FUN_0083ea60(puVar1);
    }
    piVar2 = (int *)(iVar4 + 0x3a8);
    if (&iStack_78 != piVar2) {
      FUN_0083ea60(piVar2);
    }
  }
  else {
    if (&iStack_a0 != (int *)(iStack_a4 + 0x560)) {
      FUN_0083ea60((int *)(iStack_a4 + 0x560));
    }
    FUN_004722cb(iVar4 + 0x36c);
    FUN_004722cb(iVar4 + 0x380);
  }
  iVar4 = param_2[1];
  iStack_98 = *param_2 + 1;
  iStack_90 = param_2[2] + -2;
  iVar5 = param_2[3] / 3;
  uVar6 = FUN_008f8330(0x24);
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar6);
  (**(code **)(**(int **)(param_1 + 8) + 0x60))(&iStack_a4);
  (**(code **)(**(int **)(param_1 + 8) + 0x150))(iStack_a0,iVar4 + 1,iStack_98,iVar5);
  iStack_9c = iVar4 + 1 + iVar5;
  iStack_94 = (param_2[3] - iVar5) + -2;
  iStack_a0 = iVar7;
  iStack_98 = iVar3;
  (**(code **)(**(int **)(param_1 + 8) + 0x130))(&iStack_a0,&iStack_7c,&iStack_90,0x80);
  uStack_4._0_1_ = 1;
  iStack_78 = 0xa35ee2;
  FUN_0083e850();
  uStack_4 = (uint)uStack_4._1_3_ << 8;
  iStack_78 = 0xa35ef4;
  FUN_0083e850();
  uStack_4 = 0xffffffff;
  iStack_78 = 0xa35f05;
  FUN_008f7630();
  ExceptionList = local_c;
  return;
}



void FUN_00a35f20(undefined4 param_1,int *param_2)

{
  int *piVar1;
  undefined4 *puVar2;
  char cVar3;
  undefined **ppuVar4;
  int iVar5;
  int *piVar6;
  undefined4 uVar7;
  int unaff_EBX;
  int unaff_EBP;
  int *piVar8;
  int unaff_retaddr;
  undefined local_14 [4];
  int iStack_10;
  int local_c;
  undefined4 *puStack_4;
  
  piVar1 = param_2;
  (**(code **)(*param_2 + 0x270))(&param_2,local_14);
  piVar6 = (int *)piVar1[0x11];
  iStack_10 = unaff_retaddr;
  local_c = unaff_EBP;
  ppuVar4 = (undefined **)(**(code **)*piVar1)();
  piVar8 = piVar1;
  if (((ppuVar4 != &PTR_u_wxRibbonPanel_0323f6e0) &&
      ((ppuVar4[3] == (undefined *)0x0 ||
       (cVar3 = FUN_0048a047(&PTR_u_wxRibbonPanel_0323f6e0), cVar3 == '\0')))) &&
     ((ppuVar4[4] == (undefined *)0x0 ||
      (cVar3 = FUN_0048a047(&PTR_u_wxRibbonPanel_0323f6e0), cVar3 == '\0')))) {
    piVar8 = (int *)0x0;
  }
  uVar7 = 0;
  if (piVar8 == (int *)0x0) goto joined_r0x00a36003;
  if ((char)param_2 == '\0') {
LAB_00a35fba:
    uVar7 = 0;
  }
  else {
    cVar3 = FUN_00a2ec70();
    uVar7 = 1;
    if (cVar3 == '\0') goto LAB_00a35fba;
  }
  iVar5 = FUN_00a2ec80();
  if (iVar5 != 0) {
    piVar6 = (int *)FUN_00a2ec80();
    (**(code **)(*piVar6 + 0x270))(&stack0xffffffe4,&stack0xffffffe8);
    iStack_10 = unaff_EBP;
    local_c = unaff_EBX;
    iVar5 = FUN_00a2ec80();
    piVar6 = *(int **)(iVar5 + 0x44);
  }
joined_r0x00a36003:
  do {
    if (piVar6 == (int *)0x0) {
      uVar7 = FUN_008f8a00(10);
      puVar2 = puStack_4;
      (**(code **)(*(int *)puStack_4[2] + 0x60))(uVar7);
      uVar7 = FUN_008f8330(0x24);
      (**(code **)(*(int *)puVar2[2] + 0x58))(uVar7);
      (**(code **)(*(int *)puVar2[2] + 0x150))(*puStack_4,puStack_4[1],puStack_4[2],puStack_4[3]);
      return;
    }
    if (piVar8 == (int *)0x0) {
      ppuVar4 = (undefined **)(**(code **)*piVar6)();
      if (((ppuVar4 == &PTR_u_wxRibbonPanel_0323f6e0) ||
          ((ppuVar4[3] != (undefined *)0x0 &&
           (cVar3 = FUN_0048a047(&PTR_u_wxRibbonPanel_0323f6e0), cVar3 != '\0')))) ||
         ((ppuVar4[4] != (undefined *)0x0 &&
          (cVar3 = FUN_0048a047(&PTR_u_wxRibbonPanel_0323f6e0), cVar3 != '\0')))) {
        if ((char)param_2 == '\0') {
LAB_00a36071:
          uVar7 = 0;
        }
        else {
          cVar3 = FUN_00a2ec70();
          uVar7 = 1;
          if (cVar3 == '\0') goto LAB_00a36071;
        }
        iVar5 = FUN_00a2ec80();
        piVar8 = piVar6;
        if (iVar5 != 0) {
          piVar6 = (int *)FUN_00a2ec80();
        }
      }
      else {
        piVar8 = (int *)0x0;
      }
    }
    if ((piVar6 != (int *)0x0) &&
       (((ppuVar4 = (undefined **)(**(code **)*piVar6)(), ppuVar4 == &PTR_u_wxRibbonPage_0323f6ac ||
         ((ppuVar4[3] != (undefined *)0x0 &&
          (cVar3 = FUN_0048a047(&PTR_u_wxRibbonPage_0323f6ac), cVar3 != '\0')))) ||
        ((ppuVar4[4] != (undefined *)0x0 &&
         (cVar3 = FUN_0048a047(&PTR_u_wxRibbonPage_0323f6ac), cVar3 != '\0')))))) {
      FUN_00a35170(puStack_4,piVar1,param_1,piVar6,iStack_10,local_c,uVar7);
      return;
    }
    (**(code **)(*piVar6 + 0x270))(&stack0xffffffe8,&stack0xffffffe4);
    piVar6 = (int *)piVar6[0x11];
    iStack_10 = iStack_10 + unaff_EBX;
    local_c = local_c + unaff_EBP;
  } while( true );
}



void FUN_00a361a0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a35f20(param_1,param_2,param_3,1);
  return;
}



void __thiscall
FUN_00a361c0(int param_1_00,int param_1,undefined4 param_2,int *param_3,undefined4 param_4,
            undefined4 param_5,uint param_6)

{
  uint uVar1;
  int iVar2;
  undefined ***pppuVar3;
  int iVar4;
  int unaff_EDI;
  int *piVar5;
  char cVar6;
  int *piVar7;
  int *piVar8;
  int iVar9;
  int *piVar10;
  undefined ***pppuVar11;
  undefined4 uVar13;
  int local_a4;
  undefined **local_9c;
  int local_98;
  undefined4 local_94;
  undefined local_90;
  undefined local_8f;
  undefined local_8e;
  undefined local_8d;
  undefined local_8c;
  undefined **local_88;
  int local_84;
  int local_80;
  undefined local_7c;
  undefined local_7b;
  undefined local_7a;
  undefined local_79;
  undefined local_78;
  undefined **local_74;
  int local_70;
  undefined4 local_6c;
  undefined4 local_68;
  undefined4 local_64;
  undefined **local_60;
  int local_5c;
  undefined4 local_58;
  undefined local_54;
  undefined local_53;
  undefined local_52;
  undefined local_51;
  undefined4 local_50;
  uint local_4c;
  undefined4 uStack_48;
  int local_2c;
  int local_28;
  undefined4 local_24;
  int local_20;
  int local_1c;
  int local_18;
  int local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  char cVar12;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf14ae;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff40;
  ExceptionList = &local_c;
  iVar9 = *param_3;
  iVar4 = param_3[1];
  local_a4 = param_3[2];
  iVar2 = param_3[3];
  FUN_008f7520(0xffffffff,0xffffffff);
  local_4c = param_6 & 2;
  if (local_4c == 0) {
    local_a4 = local_a4 + 1;
  }
  local_24 = local_a4;
  local_20 = (iVar2 * 2) / 5;
  local_18 = iVar4 + local_20;
  local_10 = iVar2 - local_20;
  local_98 = *(int *)(param_1_00 + 0x44c);
  local_14 = local_a4;
  if (local_98 != 0) {
    *(int *)(local_98 + 4) = *(int *)(local_98 + 4) + 1;
  }
  local_94 = *(undefined4 *)(param_1_00 + 0x450);
  local_90 = *(undefined *)(param_1_00 + 0x454);
  local_8f = *(undefined *)(param_1_00 + 0x455);
  local_8e = *(undefined *)(param_1_00 + 0x456);
  local_8d = *(undefined *)(param_1_00 + 0x457);
  local_8c = *(undefined *)(param_1_00 + 0x458);
  local_9c = wxColour::vftable;
  local_5c = *(int *)(param_1_00 + 0x460);
  if (local_5c != 0) {
    *(int *)(local_5c + 4) = *(int *)(local_5c + 4) + 1;
  }
  local_58 = *(undefined4 *)(param_1_00 + 0x464);
  local_54 = *(undefined *)(param_1_00 + 0x468);
  local_53 = *(undefined *)(param_1_00 + 0x469);
  local_52 = *(undefined *)(param_1_00 + 0x46a);
  local_51 = *(undefined *)(param_1_00 + 0x46b);
  local_60 = wxColour::vftable;
  local_50 = (void *)CONCAT31(local_50._1_3_,*(undefined *)(param_1_00 + 0x46c));
  local_70 = *(int *)(param_1_00 + 0x474);
  if (local_70 != 0) {
    *(int *)(local_70 + 4) = *(int *)(local_70 + 4) + 1;
  }
  local_6c = *(undefined4 *)(param_1_00 + 0x478);
  local_68 = *(undefined4 *)(param_1_00 + 0x47c);
  local_74 = wxColour::vftable;
  local_64 = CONCAT31(local_64._1_3_,*(undefined *)(param_1_00 + 0x480));
  local_84 = *(int *)(param_1_00 + 0x488);
  if (local_84 != 0) {
    *(int *)(local_84 + 4) = *(int *)(local_84 + 4) + 1;
  }
  local_7b = *(undefined *)(param_1_00 + 0x491);
  local_80 = *(int *)(param_1_00 + 0x48c);
  local_88 = wxColour::vftable;
  local_7c = *(undefined *)(param_1_00 + 0x490);
  local_79 = *(undefined *)(param_1_00 + 0x493);
  local_78 = *(undefined *)(param_1_00 + 0x494);
  local_7a = *(undefined *)(param_1_00 + 0x492);
  local_4 = 3;
  local_2c = iVar9;
  local_28 = iVar4;
  local_1c = iVar9;
  if ((param_6 & 0x60) == 0) {
    if ((param_6 & 0x18) != 0) {
      FUN_004722cb(param_1_00 + 0x498);
      FUN_004722cb(param_1_00 + 0x4ac);
      FUN_004722cb(param_1_00 + 0x4c0);
      FUN_004722cb(param_1_00 + 0x4d4);
    }
  }
  else {
    if (&local_9c != (undefined ***)(param_1_00 + 0x4e8)) {
      FUN_0083ea60((undefined ***)(param_1_00 + 0x4e8));
    }
    local_94 = *(undefined4 *)(param_1_00 + 0x4f0);
    local_90 = *(undefined *)(param_1_00 + 0x4f4);
    local_8f = *(undefined *)(param_1_00 + 0x4f5);
    local_8e = *(undefined *)(param_1_00 + 0x4f6);
    local_8d = *(undefined *)(param_1_00 + 0x4f7);
    local_8c = *(undefined *)(param_1_00 + 0x4f8);
    if (&local_60 != (undefined ***)(param_1_00 + 0x4fc)) {
      FUN_0083ea60((undefined ***)(param_1_00 + 0x4fc));
    }
    local_58 = *(undefined4 *)(param_1_00 + 0x504);
    local_54 = *(undefined *)(param_1_00 + 0x508);
    local_53 = *(undefined *)(param_1_00 + 0x509);
    local_52 = *(undefined *)(param_1_00 + 0x50a);
    local_51 = *(undefined *)(param_1_00 + 0x50b);
    local_50 = (void *)CONCAT31(local_50._1_3_,*(undefined *)(param_1_00 + 0x50c));
    if (&local_74 != (undefined ***)(param_1_00 + 0x510)) {
      FUN_0083ea60((undefined ***)(param_1_00 + 0x510));
    }
    local_6c = *(undefined4 *)(param_1_00 + 0x518);
    local_68 = *(undefined4 *)(param_1_00 + 0x51c);
    local_64 = CONCAT31(local_64._1_3_,*(undefined *)(param_1_00 + 0x520));
    if (&local_88 != (undefined ***)(param_1_00 + 0x524)) {
      FUN_0083ea60((undefined ***)(param_1_00 + 0x524));
    }
    local_7c = *(undefined *)(param_1_00 + 0x530);
    local_7b = *(undefined *)(param_1_00 + 0x531);
    local_80 = *(int *)(param_1_00 + 0x52c);
    local_79 = *(undefined *)(param_1_00 + 0x533);
    local_78 = *(undefined *)(param_1_00 + 0x534);
    local_7a = *(undefined *)(param_1_00 + 0x532);
  }
  uVar13 = 0x80;
  pppuVar3 = &local_60;
  pppuVar11 = &local_9c;
  piVar10 = &local_2c;
  (**(code **)(**(int **)(param_1 + 8) + 0x130))(piVar10,pppuVar11,pppuVar3,0x80);
  cVar12 = (char)((uint)pppuVar11 >> 0x18);
  iVar9 = 0x80;
  piVar8 = &local_98;
  piVar7 = &local_84;
  piVar5 = &local_2c;
  (**(code **)(**(int **)(param_1 + 8) + 0x130))(piVar5,piVar7,piVar8,0x80);
  cVar6 = (char)((uint)piVar5 >> 0x18);
  if (cVar12 != '\0') {
    if (((uint)puStack_8 & 0x50) == 0) {
      pppuVar3 = (undefined ***)((int)pppuVar3 + (uVar1 - 8));
      local_60 = (undefined **)0x8;
    }
    else {
      local_60 = (undefined **)(uVar1 - 8);
    }
    local_64 = uVar13;
    local_5c = unaff_EDI;
    FUN_0095d7e0(param_1_00 + 0x498,100);
    local_24._0_1_ = 4;
    uVar13 = FUN_008f8330(0x24);
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar13);
    (**(code **)(**(int **)(param_1 + 8) + 0x60))(&local_58);
    (**(code **)(**(int **)(param_1 + 8) + 0x150))(pppuVar3,local_6c,local_68,local_64);
    local_24 = CONCAT31(local_24._1_3_,3);
    FUN_008f7630();
    param_6._0_1_ = (byte)puStack_8;
  }
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x5e0);
  iVar4 = param_3[1];
  iVar2 = *param_3;
  if (((byte)param_6 & 1) == 0) {
    local_5c = iVar4 + 1;
    (**(code **)(**(int **)(param_1 + 8) + 0x140))(iVar2,local_5c,iVar2,param_3[3] + -1 + iVar4);
  }
  else {
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(iVar2 + 1,iVar4 + 1);
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + 1,param_3[1] + -2 + param_3[3]);
  }
  if (local_80 != 0) {
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + -2 + param_3[2],param_3[1] + 1);
    (**(code **)(**(int **)(param_1 + 8) + 0x13c))
              (*param_3 + -2 + param_3[2],param_3[1] + -2 + param_3[3]);
  }
  iVar4 = iVar9;
  if (local_20 != 1) {
    iVar4 = iVar9 + -8;
    if (cVar6 != '\0') {
      iVar2 = *param_3 + 1 + iVar4;
      (**(code **)(**(int **)(param_1 + 8) + 0x140))(iVar2,param_3[1],iVar2,param_3[3] + param_3[1])
      ;
    }
    (**(code **)(**(int **)(param_1 + 8) + 0x164))
              (param_1_00 + 0x6c,(int)piVar7 + iVar9 + -6,(int)piVar10 / 2 + -2 + (int)piVar8,1);
  }
  iVar9 = *(int *)(local_24 + 4);
  if (iVar9 == 0) {
    iVar2 = 0;
    iVar9 = 0;
  }
  else {
    iVar2 = *(int *)(iVar9 + 0xc);
    iVar9 = *(int *)(iVar9 + 8);
  }
  (**(code **)(**(int **)(param_1 + 8) + 0x164))
            (local_24,(iVar4 - iVar9) / 2 + (int)piVar7,((int)piVar10 - iVar2) / 2 + (int)piVar8,1);
  uStack_48._0_1_ = 2;
  FUN_0083e850();
  uStack_48._0_1_ = 1;
  FUN_0083e850();
  uStack_48 = (uint)uStack_48._1_3_ << 8;
  FUN_0083e850();
  uStack_48 = 0xffffffff;
  FUN_0083e850();
  ExceptionList = local_50;
  return;
}



void __thiscall
FUN_00a368c0(int param_1_00,int param_1,undefined4 param_2,int param_3,int *param_4,int *param_6,
            int *param_7,int *param_8,int *param_9)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  int unaff_ESI;
  int iVar5;
  int local_4;
  
  piVar1 = param_4;
  iVar3 = param_3;
  local_4 = 0;
  iVar5 = 0;
  if (((*(byte *)(param_1_00 + 0x5f0) & 1) != 0) && (*(int *)(param_3 + 0x14) != 0)) {
    (**(code **)(**(int **)(param_1 + 8) + 0x50))(param_1_00 + 0x578);
    (**(code **)(**(int **)(param_1 + 8) + 0xa4))(iVar3,&param_3,&param_2,0,0,0);
    cVar2 = (**(code **)(*piVar1 + 0x10))();
    iVar5 = unaff_ESI;
    if (cVar2 != '\0') {
      iVar5 = unaff_ESI + 4;
      local_4 = 2;
    }
  }
  if (((*(byte *)(param_1_00 + 0x5f0) & 2) != 0) &&
     (cVar2 = (**(code **)(*piVar1 + 0x10))(), cVar2 != '\0')) {
    iVar3 = piVar1[1];
    if (iVar3 == 0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *(int *)(iVar3 + 8);
    }
    iVar5 = iVar5 + iVar4;
    if (iVar3 != 0) {
      iVar3 = *(int *)(iVar3 + 8);
    }
    local_4 = local_4 + iVar3;
  }
  if (param_6 != (int *)0x0) {
    *param_6 = iVar5 + 0x1e;
  }
  if (param_7 != (int *)0x0) {
    *param_7 = iVar5 + 0x14;
  }
  if (param_8 != (int *)0x0) {
    *param_8 = iVar5 + 10;
  }
  if (param_9 != (int *)0x0) {
    *param_9 = local_4;
  }
  return;
}



void __thiscall FUN_00a369b0(int *param_1_00,int *param_1,int *param_2,int *param_3)

{
  bool bVar1;
  int *piVar2;
  float10 fVar3;
  undefined *puVar4;
  float *pfVar5;
  undefined ***pppuVar6;
  undefined ***pppuVar7;
  float *pfVar8;
  int iVar9;
  undefined *puVar10;
  undefined ***pppuVar11;
  undefined *puVar12;
  undefined4 uVar13;
  undefined **ppuVar14;
  undefined4 uVar15;
  undefined4 uStack_c0;
  undefined **local_bc;
  undefined4 uStack_b8;
  undefined **ppuStack_b4;
  undefined **local_a0;
  undefined **ppuStack_9c;
  undefined auStack_98 [3];
  char local_95;
  undefined **local_94;
  undefined auStack_90 [4];
  undefined auStack_8c [4];
  undefined auStack_88 [4];
  undefined auStack_84 [4];
  undefined local_80 [4];
  undefined auStack_7c [4];
  undefined auStack_78 [4];
  undefined local_74 [4];
  undefined auStack_70 [4];
  undefined **ppuStack_6c;
  undefined local_68 [16];
  float local_58;
  float local_54;
  float local_4c;
  float local_48;
  undefined auStack_40 [12];
  void *pvStack_34;
  undefined4 uStack_2c;
  undefined4 uStack_24;
  undefined4 uStack_1c;
  undefined4 uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf18cc;
  local_c = ExceptionList;
  ppuStack_b4 = (undefined **)(DAT_0323f878 ^ (uint)&stack0xffffff50);
  ExceptionList = &local_c;
  if (param_1_00 + 0x1d != param_1) {
    uStack_b8 = (undefined ***)param_1;
    local_bc = (undefined **)0xa369f5;
    FUN_0083ea60();
  }
  param_1_00[0x1f] = param_1[2];
  *(undefined *)(param_1_00 + 0x20) = *(undefined *)(param_1 + 3);
  *(undefined *)((int)param_1_00 + 0x81) = *(undefined *)((int)param_1 + 0xd);
  *(undefined *)((int)param_1_00 + 0x82) = *(undefined *)((int)param_1 + 0xe);
  *(undefined *)((int)param_1_00 + 0x83) = *(undefined *)((int)param_1 + 0xf);
  *(undefined *)(param_1_00 + 0x21) = *(undefined *)(param_1 + 4);
  if (param_1_00 + 0x22 != param_2) {
    uStack_b8 = (undefined ***)param_2;
    local_bc = (undefined **)0xa36a36;
    FUN_0083ea60();
  }
  param_1_00[0x24] = param_2[2];
  *(undefined *)(param_1_00 + 0x25) = *(undefined *)(param_2 + 3);
  *(undefined *)((int)param_1_00 + 0x95) = *(undefined *)((int)param_2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x96) = *(undefined *)((int)param_2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x97) = *(undefined *)((int)param_2 + 0xf);
  *(undefined *)(param_1_00 + 0x26) = *(undefined *)(param_2 + 4);
  if (param_1_00 + 0x27 != param_3) {
    uStack_b8 = (undefined ***)param_3;
    local_bc = (undefined **)0xa36a77;
    FUN_0083ea60();
  }
  param_1_00[0x29] = param_3[2];
  *(undefined *)(param_1_00 + 0x2a) = *(undefined *)(param_3 + 3);
  *(undefined *)((int)param_1_00 + 0xa9) = *(undefined *)((int)param_3 + 0xd);
  *(undefined *)((int)param_1_00 + 0xaa) = *(undefined *)((int)param_3 + 0xe);
  *(undefined *)((int)param_1_00 + 0xab) = *(undefined *)((int)param_3 + 0xf);
  uStack_b8 = (undefined ***)param_1;
  *(undefined *)(param_1_00 + 0x2b) = *(undefined *)(param_3 + 4);
  local_bc = (undefined **)0xa36ab0;
  FUN_00a3dd60();
  uStack_b8 = (undefined ***)param_2;
  local_bc = (undefined **)0xa36aba;
  FUN_00a3dd60();
  bVar1 = local_58 < 0.01 == (local_58 == 0.01);
  if (bVar1) {
    uStack_b8 = (undefined ***)0xa36ade;
    fVar3 = (float10)FUN_00a4d220();
    local_58 = (float)((float10)0.5 - fVar3 * (float10)0.25);
  }
  uStack_b8 = (undefined ***)0xa36afd;
  fVar3 = (float10)FUN_00a4d220();
  local_95 = '\0';
  local_54 = (float)((float10)0.53 - fVar3 * (float10)0.3);
  if (local_4c < 0.01 == (local_4c == 0.01)) {
    uStack_b8 = (undefined ***)0xa36b37;
    fVar3 = (float10)FUN_00a4d220();
    local_4c = (float)((float10)0.5 - fVar3 * (float10)0.34);
  }
  else {
    local_95 = '\x01';
  }
  uStack_b8 = (undefined ***)0xa36b56;
  fVar3 = (float10)FUN_00a4d220();
  uStack_b8 = &local_94;
  uStack_c0 = (undefined **)local_68;
  puVar4 = local_80;
  local_48 = (float)((float10)0.5 - fVar3 * (float10)0.4);
  local_bc = (undefined **)0xbda3d70a;
  uVar13 = 0;
  FUN_00a3daa0(local_74,0x3fb33333);
  FUN_00a3da80(puVar4,uVar13);
  FUN_00a3da60();
  local_bc = (undefined **)0xa36bb2;
  uStack_c0 = (undefined **)FUN_00a3df60();
  uStack_b8 = (undefined ***)0x64;
  local_bc = (undefined **)0x1;
  local_4 = 0;
  FUN_009566f0();
  uStack_b8 = &local_a0;
  local_4._0_1_ = 1;
  if ((undefined ***)(param_1_00 + 0x164) != uStack_b8) {
    local_bc = (undefined **)0xa36be9;
    FUN_0083ea60();
  }
  local_4 = (uint)local_4._1_3_ << 8;
  local_a0 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa36c03;
  FUN_0083e850();
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa36c1b;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbcf5c28f;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3df5c28f;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0xbdcccccd);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa36c7b;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 2;
  if (param_1_00 + 0x8b != piVar2) {
    local_bc = (undefined **)0xa36c98;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x8d] = piVar2[2];
  *(undefined *)(param_1_00 + 0x8e) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x239) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x23a) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x23b) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x8f) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa36cea;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3e8a3d71;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3e2e147b;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0xc0333333);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa36d4a;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 3;
  if (param_1_00 + 0x9f != piVar2) {
    local_bc = (undefined **)0xa36d67;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0xa1] = piVar2[2];
  *(undefined *)(param_1_00 + 0xa2) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x289) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x28a) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x28b) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xa3) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa36db9;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbdcccccd;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3da3d70a;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3dcccccd);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa36e19;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 4;
  if (param_1_00 + 0x90 != piVar2) {
    local_bc = (undefined **)0xa36e36;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x92] = piVar2[2];
  *(undefined *)(param_1_00 + 0x93) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x24d) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x24e) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x24f) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x94) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa36e88;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3e23d70a;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3e051eb8;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x404ccccd);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa36ee8;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 5;
  if (param_1_00 + 0xa4 != piVar2) {
    local_bc = (undefined **)0xa36f05;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0xa6] = piVar2[2];
  *(undefined *)(param_1_00 + 0xa7) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x29d) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x29e) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x29f) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xa8) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa36f57;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbdb851ec;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3d4ccccd;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3ecccccd);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa36fb7;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 6;
  if (param_1_00 + 0x81 != piVar2) {
    local_bc = (undefined **)0xa36fd4;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x83] = piVar2[2];
  *(undefined *)(param_1_00 + 0x84) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x211) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x212) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x213) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x85) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37026;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3e428f5c;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3dcccccd;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3dcccccd);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa37080;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 7;
  if (param_1_00 + 0x95 != piVar2) {
    local_bc = (undefined **)0xa3709d;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x97] = piVar2[2];
  *(undefined *)(param_1_00 + 0x98) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x261) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x262) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x263) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x99) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa370ef;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3e8a3d71;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3dcccccd;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0xc04ccccd);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa3714f;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 8;
  if (param_1_00 + 0x86 != piVar2) {
    local_bc = (undefined **)0xa3716c;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x88] = piVar2[2];
  *(undefined *)(param_1_00 + 0x89) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x225) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x226) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x227) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x8a) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa371be;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3c23d70a;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3e19999a;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3fe66666);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa3721e;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 9;
  if (param_1_00 + 0x9a != piVar2) {
    local_bc = (undefined **)0xa3723b;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x9c] = piVar2[2];
  *(undefined *)(param_1_00 + 0x9d) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x275) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x276) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x277) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x9e) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa3728d;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbe9eb852;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3e23d70a;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0xbdcccccd);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa372ed;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 10;
  if (param_1_00 + 0x40 != piVar2) {
    local_bc = (undefined **)0xa3730a;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x42] = piVar2[2];
  *(undefined *)(param_1_00 + 0x43) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x10d) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x10e) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x10f) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x44) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa3735c;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbcf5c28f;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3df5c28f;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0xbdcccccd);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa373bc;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 0xb;
  if (param_1_00 + 0x45 != piVar2) {
    local_bc = (undefined **)0xa373d9;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x47] = piVar2[2];
  *(undefined *)(param_1_00 + 0x48) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x121) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x122) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x123) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x49) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa3742b;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3e75c28f;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3d4ccccd;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3f666666);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa3748b;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 0xc;
  if (param_1_00 + 0x36 != piVar2) {
    local_bc = (undefined **)0xa374a8;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x38] = piVar2[2];
  *(undefined *)(param_1_00 + 0x39) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0xe5) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0xe6) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0xe7) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x3a) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa374f9;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3ec7ae14;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3d8f5c29;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3f800000);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa37555;
  local_bc = (undefined **)FUN_00a3df60();
  uStack_b8 = (undefined ***)0x64;
  local_4 = 0xd;
  uStack_c0 = (undefined **)0xa3756c;
  FUN_0095d7e0();
  uStack_b8 = &local_a0;
  local_4._0_1_ = 0xe;
  if ((undefined ***)(param_1_00 + 0x14e) != uStack_b8) {
    local_bc = (undefined **)0xa3758a;
    FUN_0083ea60();
  }
  local_4 = CONCAT31(local_4._1_3_,0xd);
  uStack_b8 = (undefined ***)0xa3759b;
  FUN_008f7630();
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa375af;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3e19999a;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3dcccccd;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3fa66666);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa3760f;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 0xf;
  if (param_1_00 + 0x4a != piVar2) {
    local_bc = (undefined **)0xa3762c;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x4c] = piVar2[2];
  *(undefined *)(param_1_00 + 0x4d) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x135) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x136) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x137) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x4e) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa3767e;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3eb851ec;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3da3d70a;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3fb33333);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa376de;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 0x10;
  if (param_1_00 + 0x54 != piVar2) {
    local_bc = (undefined **)0xa37701;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x56] = piVar2[2];
  *(undefined *)(param_1_00 + 0x57) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x15d) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x15e) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x15f) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x58) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37753;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3cf5c28f;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0xbd4ccccd;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3fb33333);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa377b3;
  uStack_c0 = (undefined **)FUN_00a3df60();
  uStack_b8 = (undefined ***)0x64;
  local_bc = (undefined **)0x1;
  local_4 = 0x11;
  FUN_009566f0();
  uStack_b8 = &local_a0;
  local_4._0_1_ = 0x12;
  if ((undefined ***)(param_1_00 + 0x16e) != uStack_b8) {
    local_bc = (undefined **)0xa377ea;
    FUN_0083ea60();
  }
  local_4 = CONCAT31(local_4._1_3_,0x11);
  local_a0 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa377ff;
  FUN_0083e850();
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37817;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbe19999a;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0xbe3851ec;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3fd9999a);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa37877;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 0x13;
  if (param_1_00 + 0x3b != piVar2) {
    local_bc = (undefined **)0xa37894;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x3d] = piVar2[2];
  *(undefined *)(param_1_00 + 0x3e) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0xf9) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0xfa) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0xfb) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x3f) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa378e6;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3eae147b;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3e051eb8;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3fe66666);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa37946;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 0x14;
  if (param_1_00 + 0x59 != piVar2) {
    local_bc = (undefined **)0xa37963;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x5b] = piVar2[2];
  *(undefined *)(param_1_00 + 0x5c) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x171) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x172) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x173) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x5d) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa379b5;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3e051eb8;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0xbefae148;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x4089999a);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa37a15;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 0x15;
  if (param_1_00 + 0x31 != piVar2) {
    local_bc = (undefined **)0xa37a32;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x33] = piVar2[2];
  *(undefined *)(param_1_00 + 0x34) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0xd1) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0xd2) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0xd3) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x35) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37a84;
  FUN_0083e850();
  if (local_95 == '\0') {
    ppuVar14 = (undefined **)0xbeae147b;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3c23d70a;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0xbfc00000);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa37aea;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 0x16;
  if (param_1_00 + 0x4f != piVar2) {
    local_bc = (undefined **)0xa37b0d;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x51] = piVar2[2];
  *(undefined *)(param_1_00 + 0x52) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x149) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x14a) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x14b) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x53) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37b5f;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbe2e147b;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0xbdb851ec;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0xc0dccccd);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa37bbf;
  uStack_c0 = (undefined **)FUN_00a3df60();
  uStack_b8 = (undefined ***)0x64;
  local_bc = (undefined **)0x1;
  local_4 = 0x17;
  FUN_009566f0();
  uStack_b8 = &local_a0;
  local_4._0_1_ = 0x18;
  if ((undefined ***)(param_1_00 + 0x16c) != uStack_b8) {
    local_bc = (undefined **)0xa37bf6;
    FUN_0083ea60();
  }
  local_4 = CONCAT31(local_4._1_3_,0x17);
  local_a0 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37c0b;
  FUN_0083e850();
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37c22;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbe75c28f;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0xbd75c28f;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0xc0a9999a);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa37c82;
  uStack_c0 = (undefined **)FUN_00a3df60();
  uStack_b8 = (undefined ***)0x64;
  local_bc = (undefined **)0x1;
  local_4 = 0x19;
  FUN_009566f0();
  uStack_b8 = &local_a0;
  local_4._0_1_ = 0x1a;
  if ((undefined ***)(param_1_00 + 0x16a) != uStack_b8) {
    local_bc = (undefined **)0xa37cb9;
    FUN_0083ea60();
  }
  local_4 = CONCAT31(local_4._1_3_,0x19);
  local_a0 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37cce;
  FUN_0083e850();
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37ce2;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbe19999a;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0xbd75c28f;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0xc0a66666);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa37d42;
  uStack_c0 = (undefined **)FUN_00a3df60();
  uStack_b8 = (undefined ***)0x64;
  local_bc = (undefined **)0x1;
  local_4 = 0x1b;
  FUN_009566f0();
  uStack_b8 = &local_a0;
  local_4._0_1_ = 0x1c;
  if ((undefined ***)(param_1_00 + 0x168) != uStack_b8) {
    local_bc = (undefined **)0xa37d79;
    FUN_0083ea60();
  }
  local_4 = CONCAT31(local_4._1_3_,0x1b);
  local_a0 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37d8e;
  FUN_0083e850();
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37da2;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbea3d70a;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3ca3d70a;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0xc0333333);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa37e02;
  uStack_c0 = (undefined **)FUN_00a3df60();
  uStack_b8 = (undefined ***)0x64;
  local_bc = (undefined **)0x1;
  local_4 = 0x1d;
  FUN_009566f0();
  uStack_b8 = &local_a0;
  local_4._0_1_ = 0x1e;
  if ((undefined ***)(param_1_00 + 0x166) != uStack_b8) {
    local_bc = (undefined **)0xa37e39;
    FUN_0083ea60();
  }
  local_4 = CONCAT31(local_4._1_3_,0x1d);
  local_a0 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37e4e;
  FUN_0083e850();
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37e62;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3cf5c28f;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3d4ccccd;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0xbfc00000);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa37ec2;
  local_bc = (undefined **)FUN_00a3df60();
  uStack_b8 = (undefined ***)0x64;
  local_4 = 0x1f;
  uStack_c0 = (undefined **)0xa37ed9;
  FUN_0095d7e0();
  uStack_b8 = &local_a0;
  local_4._0_1_ = 0x20;
  if ((undefined ***)(param_1_00 + 0x150) != uStack_b8) {
    local_bc = (undefined **)0xa37ef7;
    FUN_0083ea60();
  }
  local_4 = CONCAT31(local_4._1_3_,0x1f);
  uStack_b8 = (undefined ***)0xa37f08;
  FUN_008f7630();
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37f1c;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3eae147b;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3d4ccccd;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3f000000);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa37f7c;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 0x21;
  if (param_1_00 + 0x72 != piVar2) {
    local_bc = (undefined **)0xa37f9f;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x74] = piVar2[2];
  *(undefined *)(param_1_00 + 0x75) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x1d5) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x1d6) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x1d7) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x76) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa37ff1;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3e99999a;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3db851ec;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3f800000);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa3804d;
  local_bc = (undefined **)FUN_00a3df60();
  uStack_b8 = (undefined ***)0x64;
  local_4 = 0x22;
  uStack_c0 = (undefined **)0xa38064;
  FUN_0095d7e0();
  uStack_b8 = &local_a0;
  local_4._0_1_ = 0x23;
  if ((undefined ***)(param_1_00 + 0x152) != uStack_b8) {
    local_bc = (undefined **)0xa38082;
    FUN_0083ea60();
  }
  local_4 = CONCAT31(local_4._1_3_,0x22);
  uStack_b8 = (undefined ***)0xa38093;
  FUN_008f7630();
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa380ab;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbe2e147b;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0xbe051eb8;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3fb33333);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa3810b;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 0x24;
  if (param_1_00 + 0x7c != piVar2) {
    local_bc = (undefined **)0xa38128;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x7e] = piVar2[2];
  *(undefined *)(param_1_00 + 0x7f) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x1fd) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x1fe) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x1ff) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x80) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa3817a;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbe3851ec;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0xbe3851ec;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3fcccccd);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa381da;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 0x25;
  if (param_1_00 + 0x6d != piVar2) {
    local_bc = (undefined **)0xa381f7;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x6f] = piVar2[2];
  *(undefined *)(param_1_00 + 0x70) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x1c1) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x1c2) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x1c3) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x71) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa38249;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbe4ccccd;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0xbcf5c28f;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3fd9999a);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa382a9;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 0x26;
  if (param_1_00 + 0x77 != piVar2) {
    local_bc = (undefined **)0xa382c6;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0x79] = piVar2[2];
  *(undefined *)(param_1_00 + 0x7a) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x1e9) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x1ea) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x1eb) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x7b) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa38318;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbe0f5c29;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0xbeb33333;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x40333333);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa38378;
  uStack_b8 = (undefined ***)FUN_00a3df60();
  ppuVar14 = (undefined **)(param_1_00 + 0x5e);
  local_4 = 0x27;
  local_a0 = (undefined **)uStack_b8;
  if ((undefined ***)ppuVar14 != uStack_b8) {
    local_bc = (undefined **)0xa3839b;
    FUN_0083ea60();
  }
  param_1_00[0x60] = (int)local_a0[2];
  *(undefined *)(param_1_00 + 0x61) = *(undefined *)(local_a0 + 3);
  *(undefined *)((int)param_1_00 + 0x185) = *(undefined *)((int)local_a0 + 0xd);
  *(undefined *)((int)param_1_00 + 0x186) = *(undefined *)((int)local_a0 + 0xe);
  *(undefined *)((int)param_1_00 + 0x187) = *(undefined *)((int)local_a0 + 0xf);
  *(undefined *)(param_1_00 + 0x62) = *(undefined *)(local_a0 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa383df;
  FUN_0083e850();
  if ((undefined **)(param_1_00 + 0x68) != ppuVar14) {
    local_bc = (undefined **)0xa383f5;
    uStack_b8 = (undefined ***)ppuVar14;
    FUN_0083ea60();
  }
  param_1_00[0x6a] = param_1_00[0x60];
  *(undefined *)(param_1_00 + 0x6b) = *(undefined *)(param_1_00 + 0x61);
  *(undefined *)((int)param_1_00 + 0x1ad) = *(undefined *)((int)param_1_00 + 0x185);
  *(undefined *)((int)param_1_00 + 0x1ae) = *(undefined *)((int)param_1_00 + 0x186);
  *(undefined *)((int)param_1_00 + 0x1af) = *(undefined *)((int)param_1_00 + 0x187);
  *(undefined *)(param_1_00 + 0x6c) = *(undefined *)(param_1_00 + 0x62);
  if (param_1_00 + 99 != param_1_00 + 0x31) {
    uStack_b8 = (undefined ***)(param_1_00 + 0x31);
    local_bc = (undefined **)0xa3844d;
    FUN_0083ea60();
  }
  param_1_00[0x65] = param_1_00[0x33];
  *(undefined *)(param_1_00 + 0x66) = *(undefined *)(param_1_00 + 0x34);
  *(undefined *)((int)param_1_00 + 0x199) = *(undefined *)((int)param_1_00 + 0xd1);
  *(undefined *)((int)param_1_00 + 0x19a) = *(undefined *)((int)param_1_00 + 0xd2);
  *(undefined *)((int)param_1_00 + 0x19b) = *(undefined *)((int)param_1_00 + 0xd3);
  *(undefined *)(param_1_00 + 0x67) = *(undefined *)(param_1_00 + 0x35);
  if (bVar1) {
    ppuVar14 = (undefined **)0xbeeb851f;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3db851ec;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0xc0333333);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa384e7;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 0x28;
  if (param_1_00 + 0xef != piVar2) {
    local_bc = (undefined **)0xa38504;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0xf1] = piVar2[2];
  *(undefined *)(param_1_00 + 0xf2) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x3c9) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x3ca) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x3cb) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xf3) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa38555;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbeb851ec;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3e19999a;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0xc0333333);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa385b5;
  local_bc = (undefined **)FUN_00a3df60();
  uStack_b8 = (undefined ***)0x64;
  local_4 = 0x29;
  uStack_c0 = (undefined **)0xa385cc;
  FUN_0095d7e0();
  uStack_b8 = &local_a0;
  local_4._0_1_ = 0x2a;
  if ((undefined ***)(param_1_00 + 0x15c) != uStack_b8) {
    local_bc = (undefined **)0xa385ea;
    FUN_0083ea60();
  }
  local_4 = CONCAT31(local_4._1_3_,0x29);
  uStack_b8 = (undefined ***)0xa385fb;
  FUN_008f7630();
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa3860f;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3d4ccccd;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3e19999a;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0xbf4ccccd);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa3866f;
  local_bc = (undefined **)FUN_00a3df60();
  uStack_b8 = (undefined ***)0x64;
  local_4 = 0x2b;
  uStack_c0 = (undefined **)0xa38686;
  FUN_0095d7e0();
  uStack_b8 = &local_a0;
  local_4._0_1_ = 0x2c;
  if ((undefined ***)(param_1_00 + 0x154) != uStack_b8) {
    local_bc = (undefined **)0xa386a4;
    FUN_0083ea60();
  }
  local_4 = CONCAT31(local_4._1_3_,0x2b);
  uStack_b8 = (undefined ***)0xa386b5;
  FUN_008f7630();
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa386c9;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbca3d70a;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3cf5c28f;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3f333333);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa38729;
  uStack_c0 = (undefined **)FUN_00a3df60();
  uStack_b8 = (undefined ***)0x64;
  local_bc = (undefined **)0x1;
  local_4 = 0x2d;
  FUN_009566f0();
  uStack_b8 = &local_a0;
  local_4._0_1_ = 0x2e;
  if ((undefined ***)(param_1_00 + 0x174) != uStack_b8) {
    local_bc = (undefined **)0xa38760;
    FUN_0083ea60();
  }
  local_4 = CONCAT31(local_4._1_3_,0x2d);
  local_a0 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa38775;
  FUN_0083e850();
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa38789;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3eae147b;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3e051eb8;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3f4ccccd);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa387e9;
  local_bc = (undefined **)FUN_00a3df60();
  uStack_b8 = (undefined ***)0x64;
  local_4 = 0x2f;
  uStack_c0 = (undefined **)0xa38800;
  FUN_0095d7e0();
  uStack_b8 = &local_a0;
  local_4._0_1_ = 0x30;
  if ((undefined ***)(param_1_00 + 0x156) != uStack_b8) {
    local_bc = (undefined **)0xa3881e;
    FUN_0083ea60();
  }
  local_4 = CONCAT31(local_4._1_3_,0x2f);
  uStack_b8 = (undefined ***)0xa3882f;
  FUN_008f7630();
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa38843;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0x3dcccccd;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0x3da3d70a;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3fa66666);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa388a3;
  piVar2 = (int *)FUN_00a3df60();
  local_4 = 0x31;
  if (param_1_00 + 0xd1 != piVar2) {
    local_bc = (undefined **)0xa388c6;
    uStack_b8 = (undefined ***)piVar2;
    FUN_0083ea60();
  }
  param_1_00[0xd3] = piVar2[2];
  *(undefined *)(param_1_00 + 0xd4) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x351) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x352) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x353) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xd5) = *(undefined *)(piVar2 + 4);
  local_4 = 0xffffffff;
  local_94 = wxObject::vftable;
  uStack_b8 = (undefined ***)0xa38918;
  FUN_0083e850();
  if (bVar1) {
    ppuVar14 = (undefined **)0xbe570a3d;
  }
  else {
    ppuVar14 = (undefined **)0x0;
  }
  uStack_b8 = &local_94;
  local_bc = (undefined **)0xbe6b851f;
  uStack_c0 = (undefined **)local_74;
  puVar4 = local_80;
  local_a0 = ppuVar14;
  FUN_00a3daa0(local_68,0x3fb33333);
  FUN_00a3da80(puVar4,ppuVar14);
  FUN_00a3da60();
  local_bc = (undefined **)0xa38978;
  uStack_b8 = (undefined ***)FUN_00a3df60();
  local_bc = (undefined **)0x1f;
  local_4 = 0x32;
  uStack_c0 = (undefined **)0xa3898f;
  (**(code **)(*param_1_00 + 0x24))();
  local_c = (void *)0xffffffff;
  ppuStack_9c = wxObject::vftable;
  uStack_c0 = (undefined **)0xa389a6;
  FUN_0083e850();
  if (bVar1) {
    uVar13 = 0xbe75c28f;
  }
  else {
    uVar13 = 0;
  }
  uStack_c0 = (undefined **)&ppuStack_9c;
  uVar15 = 0xbe947ae1;
  puVar4 = auStack_7c;
  puVar12 = auStack_88;
  FUN_00a3daa0(auStack_70,0x3fc00000);
  FUN_00a3da80(puVar12,uVar13);
  FUN_00a3da60(puVar4,uVar15);
  uStack_c0 = (undefined **)FUN_00a3df60();
  local_c = (void *)0x33;
  (**(code **)(*param_1_00 + 0x24))(0x23);
  uStack_14 = 0xffffffff;
  FUN_0083e850();
  if (bVar1) {
    uVar13 = 0xbe75c28f;
  }
  else {
    uVar13 = 0;
  }
  puVar4 = &stack0xffffff5c;
  uVar15 = 0xbe947ae1;
  puVar12 = auStack_84;
  puVar10 = auStack_90;
  FUN_00a3daa0(auStack_78,0x3fc00000);
  FUN_00a3da80(puVar10,uVar13);
  FUN_00a3da60(puVar12,uVar15);
  uVar13 = FUN_00a3df60(puVar4);
  uStack_14 = 0x34;
  (**(code **)(*param_1_00 + 0x24))(0x27,uVar13);
  uStack_1c = 0xffffffff;
  FUN_0083e850();
  if (bVar1) {
    uStack_b8 = (undefined ***)0xbf800000;
  }
  else {
    uStack_b8 = (undefined ***)0x0;
  }
  puVar4 = &stack0xffffff54;
  uVar15 = 0;
  puVar12 = auStack_8c;
  puVar10 = auStack_98;
  uVar13 = uStack_b8;
  FUN_00a3daa0(local_80,0);
  FUN_00a3da80(puVar10,uVar13);
  FUN_00a3da60(puVar12,uVar15);
  uVar13 = FUN_00a3df60(puVar4);
  uStack_1c = 0x35;
  (**(code **)(*param_1_00 + 0x24))(0x2b,uVar13);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (bVar1) {
    iVar9 = -0x4123d70a;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0x3df5c28f;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0x3fc00000);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_24 = 0x36;
  if (param_1_00 + 0xf4 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0xf6] = piVar2[2];
  *(undefined *)(param_1_00 + 0xf7) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x3dd) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x3de) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x3df) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xf8) = *(undefined *)(piVar2 + 4);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (bVar1) {
    iVar9 = 0x3de147ae;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0x3db851ec;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0x3fd9999a);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_24 = 0x37;
  if (param_1_00 + 0xd6 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0xd8] = piVar2[2];
  *(undefined *)(param_1_00 + 0xd9) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x365) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x366) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x367) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xda) = *(undefined *)(piVar2 + 4);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = -0x41dc28f6;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0xbe0f5c29;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0xc079999a);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  uVar13 = FUN_00a3df60(pppuVar11);
  uStack_24 = 0x38;
  FUN_009566f0(uVar13,1,100);
  uStack_24._0_1_ = 0x39;
  if (param_1_00 + 0x176 != &uStack_c0) {
    FUN_0083ea60(&uStack_c0);
  }
  uStack_24 = CONCAT31(uStack_24._1_3_,0x38);
  uStack_c0 = wxObject::vftable;
  FUN_0083e850();
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = 0x3e23d70a;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0xbd8f5c29;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0xbf666666);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_24 = 0x3a;
  if (param_1_00 + 0xdb != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0xdd] = piVar2[2];
  *(undefined *)(param_1_00 + 0xde) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x379) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x37a) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x37b) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xdf) = *(undefined *)(piVar2 + 4);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = 0x3df5c28f;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0x3cf5c28f;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0x3dcccccd);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_24 = 0x3b;
  if (param_1_00 + 0xe0 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0xe2] = piVar2[2];
  *(undefined *)(param_1_00 + 0xe3) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x38d) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x38e) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x38f) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xe4) = *(undefined *)(piVar2 + 4);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = 0x3e23d70a;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0x3e2e147b;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0x4089999a);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  uVar13 = FUN_00a3df60(pppuVar11);
  uStack_24 = 0x3c;
  FUN_0095d7e0(uVar13,100);
  uStack_24._0_1_ = 0x3d;
  if (param_1_00 + 0x158 != &uStack_c0) {
    FUN_0083ea60(&uStack_c0);
  }
  uStack_24 = CONCAT31(uStack_24._1_3_,0x3c);
  FUN_008f7630();
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = 0x3cf5c28f;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0xbe6147ae;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0xc11e6666);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_24 = 0x3e;
  if (param_1_00 + 0xe5 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0xe7] = piVar2[2];
  *(undefined *)(param_1_00 + 0xe8) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x3a1) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x3a2) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x3a3) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xe9) = *(undefined *)(piVar2 + 4);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = 0x3e0f5c29;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0xbde147ae;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0xc1180000);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_24 = 0x3f;
  if (param_1_00 + 0xea != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0xec] = piVar2[2];
  *(undefined *)(param_1_00 + 0xed) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x3b5) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x3b6) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x3b7) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xee) = *(undefined *)(piVar2 + 4);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = 0x3e19999a;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0xbda3d70a;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0xc1100000);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  uVar13 = FUN_00a3df60(pppuVar11);
  uStack_24 = 0x40;
  FUN_0095d7e0(uVar13,100);
  uStack_24._0_1_ = 0x41;
  if (param_1_00 + 0x15a != &uStack_c0) {
    FUN_0083ea60(&uStack_c0);
  }
  uStack_24 = CONCAT31(uStack_24._1_3_,0x40);
  FUN_008f7630();
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (param_1_00 + 0x2c != param_1_00 + 0x31) {
    FUN_0083ea60(param_1_00 + 0x31);
  }
  param_1_00[0x2e] = param_1_00[0x33];
  *(undefined *)(param_1_00 + 0x2f) = *(undefined *)(param_1_00 + 0x34);
  *(undefined *)((int)param_1_00 + 0xbd) = *(undefined *)((int)param_1_00 + 0xd1);
  *(undefined *)((int)param_1_00 + 0xbe) = *(undefined *)((int)param_1_00 + 0xd2);
  *(undefined *)((int)param_1_00 + 0xbf) = *(undefined *)((int)param_1_00 + 0xd3);
  *(undefined *)(param_1_00 + 0x30) = *(undefined *)(param_1_00 + 0x35);
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = -0x410f5c29;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0xbe0f5c29;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0xc0c66666);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  uVar13 = FUN_00a3df60(pppuVar11);
  uStack_24 = 0x42;
  FUN_009566f0(uVar13,1,100);
  uStack_24._0_1_ = 0x43;
  if (param_1_00 + 0x170 != &uStack_c0) {
    FUN_0083ea60(&uStack_c0);
  }
  uStack_24 = CONCAT31(uStack_24._1_3_,0x42);
  uStack_c0 = wxObject::vftable;
  FUN_0083e850();
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = 0x3e23d70a;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0x3d23d70a;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0xbf19999a);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_24 = 0x44;
  if (param_1_00 + 0xae != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0xb0] = piVar2[2];
  *(undefined *)(param_1_00 + 0xb1) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x2c5) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x2c6) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x2c7) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xb2) = *(undefined *)(piVar2 + 4);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = 0x3e23d70a;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0xbdcccccd;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0xbe4ccccd);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_24 = 0x45;
  if (param_1_00 + 0xa9 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0xab] = piVar2[2];
  *(undefined *)(param_1_00 + 0xac) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x2b1) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x2b2) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x2b3) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xad) = *(undefined *)(piVar2 + 4);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = 0x3e23d70a;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0x3cf5c28f;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0x3e4ccccd);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_24 = 0x46;
  if (param_1_00 + 0xb8 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0xba] = piVar2[2];
  *(undefined *)(param_1_00 + 0xbb) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x2ed) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x2ee) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x2ef) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xbc) = *(undefined *)(piVar2 + 4);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = 0x3e23d70a;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0x3e2e147b;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0x410ccccd);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_24 = 0x47;
  if (param_1_00 + 0xb3 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0xb5] = piVar2[2];
  *(undefined *)(param_1_00 + 0xb6) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x2d9) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x2da) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x2db) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xb7) = *(undefined *)(piVar2 + 4);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = -0x410f5c29;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0xbe800000;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0xc0c66666);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  uVar13 = FUN_00a3df60(pppuVar11);
  uStack_24 = 0x48;
  FUN_009566f0(uVar13,1,100);
  uStack_24._0_1_ = 0x49;
  if (param_1_00 + 0x172 != &uStack_c0) {
    FUN_0083ea60(&uStack_c0);
  }
  uStack_24 = CONCAT31(uStack_24._1_3_,0x48);
  uStack_c0 = wxObject::vftable;
  FUN_0083e850();
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = 0x3da3d70a;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0x3d75c28f;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0xc1066666);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_24 = 0x4a;
  if (param_1_00 + 199 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0xc9] = piVar2[2];
  *(undefined *)(param_1_00 + 0xca) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x329) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x32a) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x32b) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xcb) = *(undefined *)(piVar2 + 4);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = 0x3e051eb8;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0xbd8f5c29;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0xc11b3333);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_24 = 0x4b;
  if (param_1_00 + 0xcc != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0xce] = piVar2[2];
  *(undefined *)(param_1_00 + 0xcf) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x33d) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x33e) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x33f) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xd0) = *(undefined *)(piVar2 + 4);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = 0x3e0f5c29;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0xbe0f5c29;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0xc11e6666);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_24 = 0x4c;
  if (param_1_00 + 0xbd != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0xbf] = piVar2[2];
  *(undefined *)(param_1_00 + 0xc0) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x301) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x302) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x303) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xc1) = *(undefined *)(piVar2 + 4);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (uStack_b8._3_1_ == '\0') {
    iVar9 = 0x3e2e147b;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0xbcf5c28f;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0xc10b3333);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_24 = 0x4d;
  if (param_1_00 + 0xc2 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0xc4] = piVar2[2];
  *(undefined *)(param_1_00 + 0xc5) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x315) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x316) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x317) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0xc6) = *(undefined *)(piVar2 + 4);
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (bVar1) {
    iVar9 = -0x41a8f5c3;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0xbe23d70a;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0x3fb33333);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  uVar13 = FUN_00a3df60(pppuVar11);
  uStack_24 = 0x4e;
  FUN_009566f0(uVar13,1,100);
  uStack_24._0_1_ = 0x4f;
  if (param_1_00 + 0x178 != &uStack_c0) {
    FUN_0083ea60(&uStack_c0);
  }
  uStack_24 = CONCAT31(uStack_24._1_3_,0x4e);
  uStack_c0 = wxObject::vftable;
  FUN_0083e850();
  uStack_24 = 0xffffffff;
  ppuStack_b4 = wxObject::vftable;
  FUN_0083e850();
  if (bVar1) {
    iVar9 = -0x41d1eb85;
  }
  else {
    iVar9 = 0;
  }
  pppuVar11 = &ppuStack_b4;
  uVar13 = 0xbe6147ae;
  pppuVar7 = &local_94;
  pppuVar6 = &local_a0;
  uStack_c0 = (undefined **)iVar9;
  FUN_00a3daa0(auStack_88,0x3fb33333);
  FUN_00a3da80(pppuVar6,iVar9);
  FUN_00a3da60(pppuVar7,uVar13);
  uVar13 = FUN_00a3df60(pppuVar11);
  uStack_24 = 0x50;
  (**(code **)(*param_1_00 + 0x24))(0x55,uVar13);
  uStack_2c = 0xffffffff;
  local_bc = wxObject::vftable;
  FUN_0083e850();
  if (bVar1) {
    uVar13 = 0xbd8f5c29;
  }
  else {
    uVar13 = 0;
  }
  pppuVar11 = &local_bc;
  uVar15 = 0x3d75c28f;
  pppuVar7 = &ppuStack_9c;
  puVar4 = &stack0xffffff58;
  FUN_00a3daa0(auStack_90,0xbff33333);
  FUN_00a3da80(puVar4,uVar13);
  FUN_00a3da60(pppuVar7,uVar15);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_2c = 0x51;
  if (param_1_00 + 0x112 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0x114] = piVar2[2];
  *(undefined *)(param_1_00 + 0x115) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x455) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x456) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x457) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x116) = *(undefined *)(piVar2 + 4);
  uStack_2c = 0xffffffff;
  local_bc = wxObject::vftable;
  FUN_0083e850();
  if (bVar1) {
    uVar13 = 0x3df5c28f;
  }
  else {
    uVar13 = 0;
  }
  pppuVar11 = &local_bc;
  uVar15 = 0x3da3d70a;
  pppuVar7 = &ppuStack_9c;
  puVar4 = &stack0xffffff58;
  FUN_00a3daa0(auStack_90,0x3fb33333);
  FUN_00a3da80(puVar4,uVar13);
  FUN_00a3da60(pppuVar7,uVar15);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_2c = 0x52;
  if (param_1_00 + 0x117 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0x119] = piVar2[2];
  *(undefined *)(param_1_00 + 0x11a) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x469) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x46a) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x46b) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x11b) = *(undefined *)(piVar2 + 4);
  uStack_2c = 0xffffffff;
  local_bc = wxObject::vftable;
  FUN_0083e850();
  if (bVar1) {
    uVar13 = 0xbdb851ec;
  }
  else {
    uVar13 = 0;
  }
  pppuVar11 = &local_bc;
  uVar15 = 0x3cf5c28f;
  pppuVar7 = &ppuStack_9c;
  puVar4 = &stack0xffffff58;
  FUN_00a3daa0(auStack_90,0x3fb33333);
  FUN_00a3da80(puVar4,uVar13);
  FUN_00a3da60(pppuVar7,uVar15);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_2c = 0x53;
  if (param_1_00 + 0x11c != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0x11e] = piVar2[2];
  *(undefined *)(param_1_00 + 0x11f) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x47d) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x47e) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x47f) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x120) = *(undefined *)(piVar2 + 4);
  uStack_2c = 0xffffffff;
  local_bc = wxObject::vftable;
  FUN_0083e850();
  if (bVar1) {
    uVar13 = 0x3de147ae;
  }
  else {
    uVar13 = 0;
  }
  pppuVar11 = &local_bc;
  uVar15 = 0x3db851ec;
  pppuVar7 = &ppuStack_9c;
  puVar4 = &stack0xffffff58;
  FUN_00a3daa0(auStack_90,0x3ff33333);
  FUN_00a3da80(puVar4,uVar13);
  FUN_00a3da60(pppuVar7,uVar15);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_2c = 0x54;
  if (param_1_00 + 0x121 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0x123] = piVar2[2];
  *(undefined *)(param_1_00 + 0x124) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x491) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x492) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x493) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x125) = *(undefined *)(piVar2 + 4);
  uStack_2c = 0xffffffff;
  local_bc = wxObject::vftable;
  FUN_0083e850();
  if (uStack_c0._3_1_ == '\0') {
    uVar13 = 0x3de147ae;
  }
  else {
    uVar13 = 0;
  }
  pppuVar11 = &local_bc;
  uVar15 = 0x3e23d70a;
  pppuVar7 = &ppuStack_9c;
  puVar4 = &stack0xffffff58;
  FUN_00a3daa0(auStack_90,0x4059999a);
  FUN_00a3da80(puVar4,uVar13);
  FUN_00a3da60(pppuVar7,uVar15);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_2c = 0x55;
  if (param_1_00 + 0x126 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0x128] = piVar2[2];
  *(undefined *)(param_1_00 + 0x129) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x4a5) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x4a6) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x4a7) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x12a) = *(undefined *)(piVar2 + 4);
  uStack_2c = 0xffffffff;
  local_bc = wxObject::vftable;
  FUN_0083e850();
  if (uStack_c0._3_1_ == '\0') {
    uVar13 = 0x3d23d70a;
  }
  else {
    uVar13 = 0;
  }
  pppuVar11 = &local_bc;
  uVar15 = 0x3da3d70a;
  pppuVar7 = &ppuStack_9c;
  puVar4 = &stack0xffffff58;
  FUN_00a3daa0(auStack_90,0xbfb33333);
  FUN_00a3da80(puVar4,uVar13);
  FUN_00a3da60(pppuVar7,uVar15);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_2c = 0x56;
  if (param_1_00 + 299 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0x12d] = piVar2[2];
  *(undefined *)(param_1_00 + 0x12e) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x4b9) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x4ba) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x4bb) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x12f) = *(undefined *)(piVar2 + 4);
  uStack_2c = 0xffffffff;
  local_bc = wxObject::vftable;
  FUN_0083e850();
  if (uStack_c0._3_1_ == '\0') {
    uVar13 = 0x3e23d70a;
  }
  else {
    uVar13 = 0;
  }
  pppuVar11 = &local_bc;
  uVar15 = 0xbdf5c28f;
  pppuVar7 = &ppuStack_9c;
  puVar4 = &stack0xffffff58;
  FUN_00a3daa0(auStack_90,0xbfe66666);
  FUN_00a3da80(puVar4,uVar13);
  FUN_00a3da60(pppuVar7,uVar15);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_2c = 0x57;
  if (param_1_00 + 0x130 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0x132] = piVar2[2];
  *(undefined *)(param_1_00 + 0x133) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x4cd) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x4ce) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x4cf) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x134) = *(undefined *)(piVar2 + 4);
  uStack_2c = 0xffffffff;
  local_bc = wxObject::vftable;
  FUN_0083e850();
  if (uStack_c0._3_1_ == '\0') {
    uVar13 = 0x3e23d70a;
  }
  else {
    uVar13 = 0;
  }
  pppuVar11 = &local_bc;
  uVar15 = 0x3d4ccccd;
  pppuVar7 = &ppuStack_9c;
  puVar4 = &stack0xffffff58;
  FUN_00a3daa0(auStack_90,0xc0266666);
  FUN_00a3da80(puVar4,uVar13);
  FUN_00a3da60(pppuVar7,uVar15);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_2c = 0x58;
  if (param_1_00 + 0x135 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0x137] = piVar2[2];
  *(undefined *)(param_1_00 + 0x138) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x4e1) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x4e2) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x4e3) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x139) = *(undefined *)(piVar2 + 4);
  uStack_2c = 0xffffffff;
  local_bc = wxObject::vftable;
  FUN_0083e850();
  if (uStack_c0._3_1_ == '\0') {
    uVar13 = 0xbdf5c28f;
  }
  else {
    uVar13 = 0;
  }
  pppuVar11 = &local_bc;
  uVar15 = 0xbdb851ec;
  pppuVar7 = &ppuStack_9c;
  puVar4 = &stack0xffffff58;
  FUN_00a3daa0(auStack_90,0xc11e6666);
  FUN_00a3da80(puVar4,uVar13);
  FUN_00a3da60(pppuVar7,uVar15);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_2c = 0x59;
  if (param_1_00 + 0x13a != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0x13c] = piVar2[2];
  *(undefined *)(param_1_00 + 0x13d) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x4f5) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x4f6) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x4f7) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x13e) = *(undefined *)(piVar2 + 4);
  uStack_2c = 0xffffffff;
  local_bc = wxObject::vftable;
  FUN_0083e850();
  if (uStack_c0._3_1_ == '\0') {
    uVar13 = 0x3e23d70a;
  }
  else {
    uVar13 = 0;
  }
  pppuVar11 = &local_bc;
  uVar15 = 0xbdf5c28f;
  pppuVar7 = &ppuStack_9c;
  puVar4 = &stack0xffffff58;
  FUN_00a3daa0(auStack_90,0xc1080000);
  FUN_00a3da80(puVar4,uVar13);
  FUN_00a3da60(pppuVar7,uVar15);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_2c = 0x5a;
  if (param_1_00 + 0x13f != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0x141] = piVar2[2];
  *(undefined *)(param_1_00 + 0x142) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x509) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x50a) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x50b) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x143) = *(undefined *)(piVar2 + 4);
  uStack_2c = 0xffffffff;
  local_bc = wxObject::vftable;
  FUN_0083e850();
  if (uStack_c0._3_1_ == '\0') {
    uVar13 = 0x3e23d70a;
  }
  else {
    uVar13 = 0;
  }
  pppuVar11 = &local_bc;
  uVar15 = 0xbe4ccccd;
  pppuVar7 = &ppuStack_9c;
  puVar4 = &stack0xffffff58;
  FUN_00a3daa0(auStack_90,0xc0fccccd);
  FUN_00a3da80(puVar4,uVar13);
  FUN_00a3da60(pppuVar7,uVar15);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_2c = 0x5b;
  if (param_1_00 + 0x144 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0x146] = piVar2[2];
  *(undefined *)(param_1_00 + 0x147) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x51d) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x51e) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x51f) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x148) = *(undefined *)(piVar2 + 4);
  uStack_2c = 0xffffffff;
  local_bc = wxObject::vftable;
  FUN_0083e850();
  if (uStack_c0._3_1_ == '\0') {
    uVar13 = 0x3e23d70a;
  }
  else {
    uVar13 = 0;
  }
  pppuVar11 = &ppuStack_6c;
  uVar15 = 0xbdcccccd;
  pfVar8 = &local_58;
  pfVar5 = &local_4c;
  FUN_00a3daa0(auStack_40,0xc0d33333);
  FUN_00a3da80(pfVar5,uVar13);
  FUN_00a3da60(pfVar8,uVar15);
  piVar2 = (int *)FUN_00a3df60(pppuVar11);
  uStack_2c = 0x5c;
  if (param_1_00 + 0x149 != piVar2) {
    FUN_0083ea60(piVar2);
  }
  param_1_00[0x14b] = piVar2[2];
  *(undefined *)(param_1_00 + 0x14c) = *(undefined *)(piVar2 + 3);
  *(undefined *)((int)param_1_00 + 0x531) = *(undefined *)((int)piVar2 + 0xd);
  *(undefined *)((int)param_1_00 + 0x532) = *(undefined *)((int)piVar2 + 0xe);
  *(undefined *)((int)param_1_00 + 0x533) = *(undefined *)((int)piVar2 + 0xf);
  *(undefined *)(param_1_00 + 0x14d) = *(undefined *)(piVar2 + 4);
  uStack_2c = 0xffffffff;
  ppuStack_6c = wxObject::vftable;
  FUN_0083e850();
  *(undefined8 *)(param_1_00 + 0x17a) = 0xbff0000000000000;
  ExceptionList = pvStack_34;
  return;
}



undefined4 __thiscall FUN_00a3a610(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  switch(param_2) {
  case 0xf:
    FUN_00458700(param_1_00 + 0xb0);
    return param_1;
  case 0x10:
    (**(code **)(*(int *)(param_1_00 + 0x5c0) + 0x4c))(param_1);
    return param_1;
  case 0x11:
    FUN_00458700(param_1_00 + 0x2cc);
    return param_1;
  case 0x12:
    FUN_00458700(param_1_00 + 0x2e0);
    return param_1;
  case 0x13:
    FUN_00458700(param_1_00 + 0x2a4);
    return param_1;
  case 0x14:
    FUN_00458700(param_1_00 + 0x2b8);
    return param_1;
  case 0x15:
    (**(code **)(*(int *)(param_1_00 + 0x5c8) + 0x4c))(param_1);
    return param_1;
  case 0x16:
    FUN_00458700(param_1_00 + 0x31c);
    return param_1;
  case 0x17:
    FUN_00458700(param_1_00 + 0x330);
    return param_1;
  case 0x18:
    FUN_00458700(param_1_00 + 0x2f4);
    return param_1;
  case 0x19:
    FUN_00458700(param_1_00 + 0x308);
    return param_1;
  case 0x1a:
    (**(code **)(*(int *)(param_1_00 + 0x5d0) + 0x4c))(param_1);
    return param_1;
  case 0x1b:
    (**(code **)(*(int *)(param_1_00 + 0x550) + 0x3c))(param_1);
    return param_1;
  case 0x1c:
    FUN_00458700(param_1_00 + 0x344);
    return param_1;
  case 0x1d:
    FUN_00458700(param_1_00 + 0x358);
    return param_1;
  case 0x1e:
  case 0x26:
    (**(code **)(*(int *)(param_1_00 + 0x558) + 0x3c))(param_1);
    return param_1;
  case 0x1f:
  case 0x23:
    FUN_00458700(param_1_00 + 0x3e4);
    return param_1;
  case 0x20:
    FUN_00458700(param_1_00 + 0x36c);
    return param_1;
  case 0x21:
    FUN_00458700(param_1_00 + 0x380);
    return param_1;
  case 0x22:
    (**(code **)(*(int *)(param_1_00 + 0x560) + 0x3c))(param_1);
    return param_1;
  case 0x24:
    FUN_00458700(param_1_00 + 0x394);
    return param_1;
  case 0x25:
    FUN_00458700(param_1_00 + 0x3a8);
    return param_1;
  case 0x27:
    FUN_00458700(param_1_00 + 0x40c);
    return param_1;
  case 0x28:
    FUN_00458700(param_1_00 + 0x3bc);
    return param_1;
  case 0x29:
    FUN_00458700(param_1_00 + 0x3d0);
    return param_1;
  case 0x2a:
    (**(code **)(*(int *)(param_1_00 + 0x570) + 0x3c))(param_1);
    return param_1;
  case 0x2b:
    FUN_00458700(param_1_00 + 0x420);
    return param_1;
  case 0x2c:
    (**(code **)(*(int *)(param_1_00 + 0x5d8) + 0x4c))(param_1);
    return param_1;
  case 0x2d:
    FUN_00458700(param_1_00 + 0xc4);
    return param_1;
  case 0x2e:
    FUN_00458700(param_1_00 + 0xd8);
    return param_1;
  case 0x2f:
    FUN_00458700(param_1_00 + 0xec);
    return param_1;
  case 0x30:
  case 0x31:
    (**(code **)(*(int *)(param_1_00 + 0x538) + 0x3c))(param_1);
    return param_1;
  case 0x32:
    FUN_00458700(param_1_00 + 0x150);
    return param_1;
  case 0x33:
    FUN_00458700(param_1_00 + 0x164);
    return param_1;
  case 0x34:
    FUN_00458700(param_1_00 + 0x128);
    return param_1;
  case 0x35:
    FUN_00458700(param_1_00 + 0x13c);
    return param_1;
  case 0x36:
  case 0x37:
    FUN_004561e7(0,0,0,0xff);
    return param_1;
  case 0x38:
    FUN_00458700(param_1_00 + 0x100);
    return param_1;
  case 0x39:
    FUN_00458700(param_1_00 + 0x114);
    return param_1;
  case 0x3a:
    (**(code **)(*(int *)(param_1_00 + 0x5b8) + 0x4c))(param_1);
    return param_1;
  case 0x3b:
    (**(code **)(*(int *)(param_1_00 + 0x598) + 0x4c))(param_1);
    return param_1;
  case 0x3c:
    (**(code **)(*(int *)(param_1_00 + 0x5a0) + 0x4c))(param_1);
    return param_1;
  case 0x3d:
    (**(code **)(*(int *)(param_1_00 + 0x5a8) + 0x4c))(param_1);
    return param_1;
  case 0x3e:
    (**(code **)(*(int *)(param_1_00 + 0x5b0) + 0x4c))(param_1);
    return param_1;
  case 0x3f:
  case 0x40:
    (**(code **)(*(int *)(param_1_00 + 0x540) + 0x3c))(param_1);
    return param_1;
  case 0x41:
    FUN_00458700(param_1_00 + 0x178);
    return param_1;
  case 0x42:
  case 0x43:
    (**(code **)(*(int *)(param_1_00 + 0x548) + 0x3c))(param_1);
    return param_1;
  case 0x44:
    FUN_00458700(param_1_00 + 0x1a0);
    return param_1;
  case 0x45:
    FUN_00458700(param_1_00 + 0x18c);
    return param_1;
  case 0x46:
    FUN_00458700(param_1_00 + 0x1dc);
    return param_1;
  case 0x47:
    FUN_00458700(param_1_00 + 0x1f0);
    return param_1;
  case 0x48:
    FUN_00458700(param_1_00 + 0x1b4);
    return param_1;
  case 0x49:
    FUN_00458700(param_1_00 + 0x1c8);
    return param_1;
  case 0x4a:
    (**(code **)(*(int *)(param_1_00 + 0x590) + 0x4c))(param_1);
    return param_1;
  case 0x4b:
    FUN_00458700(param_1_00 + 0x22c);
    return param_1;
  case 0x4c:
    FUN_00458700(param_1_00 + 0x240);
    return param_1;
  case 0x4d:
    FUN_00458700(param_1_00 + 0x204);
    return param_1;
  case 0x4e:
    FUN_00458700(param_1_00 + 0x218);
    return param_1;
  case 0x4f:
    FUN_00458700(param_1_00 + 0x27c);
    return param_1;
  case 0x50:
    FUN_00458700(param_1_00 + 0x290);
    return param_1;
  case 0x51:
    FUN_00458700(param_1_00 + 0x254);
    return param_1;
  case 0x52:
    FUN_00458700(param_1_00 + 0x268);
    return param_1;
  case 0x53:
  case 0x54:
    (**(code **)(*(int *)(param_1_00 + 0x5e0) + 0x4c))(param_1);
    return param_1;
  case 0x55:
    FUN_00458700(param_1_00 + 0x434);
    return param_1;
  }
  if (PTR_FUN_03235c4c != (undefined *)0x0) {
    FUN_00840480("..\\..\\src\\ribbon\\art_msw.cpp",0x2a2,"wxRibbonMSWArtProvider::GetColour",
                 "Assert failure",L"Invalid Metric Ordinal");
  }
  FUN_00453f4b();
  return param_1;
}



void __thiscall
FUN_00a3ae20(int param_1_00,int param_1,undefined4 param_2,undefined4 *param_3,double param_4)

{
  char cVar1;
  int iStack_10;
  int iStack_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  if (param_4 < 0.0 != (param_4 == 0.0)) {
    return;
  }
  if (1.0 < param_4 != NAN(param_4)) {
    param_4 = 1.0;
  }
  cVar1 = (**(code **)(*(int *)(param_1_00 + 4) + 0x10))();
  if (cVar1 != '\0') {
    iStack_c = 0;
    if (*(int *)(param_1_00 + 8) == 0) {
      iStack_10 = 0;
    }
    else {
      iStack_10 = *(int *)(*(int *)(param_1_00 + 8) + 8);
      iStack_c = *(int *)(*(int *)(param_1_00 + 8) + 0xc);
    }
    if (((iStack_10 == param_3[2]) && (iStack_c == param_3[3])) &&
       ((NAN(*(double *)(param_1_00 + 0x5e8)) || NAN(param_4)) !=
        (*(double *)(param_1_00 + 0x5e8) == param_4))) goto LAB_00a3aee1;
  }
  uStack_4 = param_3[3];
  uStack_8 = param_3[2];
  iStack_10 = 0;
  iStack_c = 0;
  FUN_00a34ca0(param_2,&iStack_10,param_4);
LAB_00a3aee1:
  (**(code **)(**(int **)(param_1 + 8) + 0x164))(param_1_00 + 4,*param_3,param_3[1],0);
  return;
}



void __thiscall FUN_00a3af10(int param_1_00,int param_1,undefined4 param_2,int *param_3)

{
  int iVar1;
  char cVar2;
  undefined4 uVar3;
  int iVar4;
  
  FUN_00a35f20(param_1,param_2,param_3,1);
  cVar2 = FUN_00a3e510();
  if (cVar2 != '\0') {
    uVar3 = FUN_008f8330(0x24);
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(uVar3);
    (**(code **)(**(int **)(param_1 + 8) + 0x60))(param_1_00 + 0x550);
    if ((*(byte *)(param_1_00 + 0x5f0) & 4) == 0) {
      (**(code **)(**(int **)(param_1 + 8) + 0x150))
                (*param_3 + 1,param_3[1] + 1,param_3[2] + -0x10,param_3[3] + -2);
    }
    else {
      (**(code **)(**(int **)(param_1 + 8) + 0x150))
                (*param_3 + 1,param_3[1] + 1,param_3[2] + -2,param_3[3] + -0x10);
    }
  }
  (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x5d0);
  (**(code **)(**(int **)(param_1 + 8) + 0x140))
            (*param_3 + 1,param_3[1],*param_3 + -1 + param_3[2],param_3[1]);
  (**(code **)(**(int **)(param_1 + 8) + 0x140))
            (*param_3,param_3[1] + 1,*param_3,param_3[1] + -1 + param_3[3]);
  iVar4 = param_3[3] + -1 + param_3[1];
  (**(code **)(**(int **)(param_1 + 8) + 0x140))
            (*param_3 + 1,iVar4,*param_3 + -1 + param_3[2],iVar4);
  iVar1 = param_3[2] + -1 + *param_3;
  (**(code **)(**(int **)(param_1 + 8) + 0x140))
            (iVar1,param_3[1] + 1,iVar1,param_3[1] + -1 + param_3[3]);
  FUN_00a31f80(param_1,iVar4,param_3);
  return;
}



undefined4 * __fastcall FUN_00a3b070(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  char unaff_retaddr;
  void *pvStack_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  uStack_8 = &LAB_00bf1def;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00a3da40(DAT_0323f878 ^ (uint)&stack0xffffffa4);
  *param_1 = wxRibbonMSWArtProvider::vftable;
  param_1[2] = 0;
  param_1[1] = wxBitmap::vftable;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  _eh_vector_constructor_iterator_
            (param_1 + 3,8,4,(_func_void_void_ptr *)&LAB_00445a46,FUN_008f7630);
  local_4._0_1_ = 2;
  _eh_vector_constructor_iterator_
            (param_1 + 0xb,8,4,(_func_void_void_ptr *)&LAB_00445a46,FUN_008f7630);
  local_4._0_1_ = 3;
  _eh_vector_constructor_iterator_
            (param_1 + 0x13,8,4,(_func_void_void_ptr *)&LAB_00445a46,FUN_008f7630);
  param_1[0x1c] = 0;
  param_1[0x1b] = wxBitmap::vftable;
  local_4._0_1_ = 5;
  FUN_00453f4b();
  local_4._0_1_ = 6;
  FUN_00453f4b();
  local_4._0_1_ = 7;
  FUN_00453f4b();
  local_4._0_1_ = 8;
  FUN_00453f4b();
  local_4._0_1_ = 9;
  FUN_00453f4b();
  local_4._0_1_ = 10;
  FUN_00453f4b();
  local_4._0_1_ = 0xb;
  FUN_00453f4b();
  local_4._0_1_ = 0xc;
  FUN_00453f4b();
  local_4._0_1_ = 0xd;
  FUN_00453f4b();
  local_4._0_1_ = 0xe;
  FUN_00453f4b();
  local_4._0_1_ = 0xf;
  FUN_00453f4b();
  local_4._0_1_ = 0x10;
  FUN_00453f4b();
  local_4._0_1_ = 0x11;
  FUN_00453f4b();
  local_4._0_1_ = 0x12;
  FUN_00453f4b();
  local_4._0_1_ = 0x13;
  FUN_00453f4b();
  local_4._0_1_ = 0x14;
  FUN_00453f4b();
  local_4._0_1_ = 0x15;
  FUN_00453f4b();
  local_4._0_1_ = 0x16;
  FUN_00453f4b();
  local_4._0_1_ = 0x17;
  FUN_00453f4b();
  local_4._0_1_ = 0x18;
  FUN_00453f4b();
  local_4._0_1_ = 0x19;
  FUN_00453f4b();
  local_4._0_1_ = 0x1a;
  FUN_00453f4b();
  local_4._0_1_ = 0x1b;
  FUN_00453f4b();
  local_4._0_1_ = 0x1c;
  FUN_00453f4b();
  local_4._0_1_ = 0x1d;
  FUN_00453f4b();
  local_4._0_1_ = 0x1e;
  FUN_00453f4b();
  local_4._0_1_ = 0x1f;
  FUN_00453f4b();
  local_4._0_1_ = 0x20;
  FUN_00453f4b();
  local_4._0_1_ = 0x21;
  FUN_00453f4b();
  local_4._0_1_ = 0x22;
  FUN_00453f4b();
  local_4._0_1_ = 0x23;
  FUN_00453f4b();
  local_4._0_1_ = 0x24;
  FUN_00453f4b();
  local_4._0_1_ = 0x25;
  FUN_00453f4b();
  local_4._0_1_ = 0x26;
  FUN_00453f4b();
  local_4._0_1_ = 0x27;
  FUN_00453f4b();
  local_4._0_1_ = 0x28;
  FUN_00453f4b();
  local_4._0_1_ = 0x29;
  FUN_00453f4b();
  local_4._0_1_ = 0x2a;
  FUN_00453f4b();
  local_4._0_1_ = 0x2b;
  FUN_00453f4b();
  local_4._0_1_ = 0x2c;
  FUN_00453f4b();
  local_4._0_1_ = 0x2d;
  FUN_00453f4b();
  local_4._0_1_ = 0x2e;
  FUN_00453f4b();
  local_4._0_1_ = 0x2f;
  FUN_00453f4b();
  local_4._0_1_ = 0x30;
  FUN_00453f4b();
  local_4._0_1_ = 0x31;
  FUN_00453f4b();
  local_4._0_1_ = 0x32;
  FUN_00453f4b();
  local_4._0_1_ = 0x33;
  FUN_00453f4b();
  local_4._0_1_ = 0x34;
  FUN_00453f4b();
  local_4._0_1_ = 0x35;
  FUN_00453f4b();
  local_4._0_1_ = 0x36;
  FUN_00453f4b();
  local_4._0_1_ = 0x37;
  FUN_00453f4b();
  local_4._0_1_ = 0x38;
  FUN_00453f4b();
  local_4._0_1_ = 0x39;
  FUN_00453f4b();
  local_4._0_1_ = 0x3a;
  FUN_00453f4b();
  local_4._0_1_ = 0x3b;
  FUN_00453f4b();
  local_4._0_1_ = 0x3c;
  FUN_00453f4b();
  local_4._0_1_ = 0x3d;
  FUN_00453f4b();
  local_4._0_1_ = 0x3e;
  FUN_00453f4b();
  local_4._0_1_ = 0x3f;
  FUN_00453f4b();
  local_4._0_1_ = 0x40;
  FUN_00453f4b();
  local_4._0_1_ = 0x41;
  FUN_00453f4b();
  local_4._0_1_ = 0x42;
  FUN_0095d530();
  local_4._0_1_ = 0x43;
  FUN_0095d530();
  local_4._0_1_ = 0x44;
  FUN_0095d530();
  local_4._0_1_ = 0x45;
  FUN_0095d530();
  local_4._0_1_ = 0x46;
  FUN_0095d530();
  local_4._0_1_ = 0x47;
  FUN_0095d530();
  local_4._0_1_ = 0x48;
  FUN_0095d530();
  local_4._0_1_ = 0x49;
  FUN_0095d530();
  puVar1 = param_1 + 0x15e;
  param_1[0x15f] = 0;
  *puVar1 = wxFont::vftable;
  param_1[0x161] = 0;
  param_1[0x160] = wxFont::vftable;
  param_1[0x163] = 0;
  param_1[0x162] = wxFont::vftable;
  param_1[0x165] = 0;
  param_1[0x164] = wxPen::vftable;
  param_1[0x167] = 0;
  param_1[0x166] = wxPen::vftable;
  param_1[0x169] = 0;
  param_1[0x168] = wxPen::vftable;
  param_1[0x16b] = 0;
  param_1[0x16a] = wxPen::vftable;
  param_1[0x16d] = 0;
  param_1[0x16c] = wxPen::vftable;
  param_1[0x16f] = 0;
  param_1[0x16e] = wxPen::vftable;
  param_1[0x171] = 0;
  param_1[0x170] = wxPen::vftable;
  param_1[0x173] = 0;
  param_1[0x172] = wxPen::vftable;
  param_1[0x175] = 0;
  param_1[0x174] = wxPen::vftable;
  param_1[0x177] = 0;
  param_1[0x176] = wxPen::vftable;
  param_1[0x179] = 0;
  param_1[0x178] = wxPen::vftable;
  param_1[0x17c] = 0;
  local_4 = CONCAT31(local_4._1_3_,0x58);
  puVar2 = (undefined4 *)(**(code **)(*(int *)PTR_PTR_03238cac + 4))(0x17);
  if (puVar1 != puVar2) {
    FUN_0083ea60(puVar2);
  }
  if (param_1 + 0x162 != puVar1) {
    FUN_0083ea60(puVar1);
  }
  if (param_1 + 0x160 != puVar1) {
    FUN_0083ea60(puVar1);
  }
  if (unaff_retaddr != '\0') {
    uVar3 = FUN_004561e7(0,0,0,0xff);
    uStack_8._0_1_ = 0x59;
    uVar4 = FUN_004561e7(0xff,0xdf,0x72,0xff);
    uStack_8._0_1_ = 0x5a;
    uVar5 = FUN_004561e7(0xc2,0xd8,0xf1,0xff);
    uStack_8._0_1_ = 0x5b;
    FUN_00a369b0(uVar5,uVar4,uVar3);
    uStack_8._0_1_ = 0x5a;
    FUN_0083e850();
    uStack_8._0_1_ = 0x59;
    FUN_0083e850();
    uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,0x58);
    FUN_0083e850();
  }
  param_1[0x17d] = 3;
  *(undefined8 *)(param_1 + 0x17a) = 0xc024000000000000;
  param_1[0x181] = 3;
  param_1[0x184] = 3;
  param_1[0x185] = 4;
  param_1[0x186] = 4;
  param_1[0x187] = 4;
  param_1[0x188] = 4;
  param_1[0x17e] = 2;
  param_1[0x17f] = 1;
  param_1[0x180] = 2;
  param_1[0x182] = 1;
  param_1[0x183] = 1;
  ExceptionList = pvStack_10;
  return param_1;
}



undefined4 FUN_00a3b790(void)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x628);
  uVar2 = 0;
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00a3b070(1);
  }
  local_4 = 0xffffffff;
  FUN_00a32ac0(uVar2);
  ExceptionList = local_c;
  return uVar2;
}



void __thiscall FUN_00a3b800(int param_1_00,int param_1,undefined4 param_2,int *param_3)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  code *pcVar8;
  int unaff_EDI;
  undefined **local_7c;
  int *local_78;
  int local_74;
  int local_70;
  undefined auStack_68 [4];
  undefined4 local_64;
  int iStack_60;
  undefined4 uStack_5c;
  undefined4 uStack_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  int iStack_4c;
  undefined4 uStack_48;
  int iStack_44;
  undefined4 uStack_40;
  int iStack_3c;
  int iStack_38;
  undefined auStack_34 [4];
  undefined4 uStack_30;
  int iStack_20;
  uint uStack_1c;
  void *pvStack_18;
  undefined4 uStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf1e28;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_7c;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff74;
  ExceptionList = &local_c;
  if (param_3[3] < 3) goto LAB_00a3bd22;
  if (*(char *)(param_3 + 9) == '\0') {
    if (*(char *)((int)param_3 + 0x25) != '\0') {
      if (*(char *)((int)param_3 + 0x25) != '\0') {
        iVar6 = param_3[3];
        local_78 = (int *)(param_3[1] + 2);
        local_74 = param_3[2] + -4;
        local_70 = (iVar6 + -3) / 2;
        local_7c = (undefined **)(*param_3 + 2);
        (**(code **)(**(int **)(param_1 + 8) + 0x130))
                  (&local_7c,param_1_00 + 0x150,param_1_00 + 0x164,0x80);
        local_78 = (int *)((int)local_78 + local_70);
        iVar7 = param_1_00 + 0x13c;
        local_70 = (iVar6 + -3) - local_70;
        iVar6 = param_1_00 + 0x128;
        goto LAB_00a3b913;
      }
      goto LAB_00a3b92a;
    }
  }
  else {
    local_74 = param_3[2] + -4;
    iVar7 = param_1_00 + 0x114;
    local_7c = (undefined **)(*param_3 + 2);
    local_78 = (int *)(param_3[1] + 2);
    local_70 = param_3[3] + -2;
    iVar6 = param_1_00 + 0x100;
LAB_00a3b913:
    (**(code **)(**(int **)(param_1 + 8) + 0x130))(&local_7c,iVar6,iVar7,0x80);
LAB_00a3b92a:
    _vector_constructor_iterator_(&local_64,8,6,(_func_void_ptr_void_ptr *)&LAB_0044642c);
    iStack_60 = param_3[3] + -2;
    local_64 = 1;
    uStack_5c = 1;
    uStack_58 = 3;
    uStack_54 = 3;
    uStack_50 = 1;
    iStack_4c = param_3[2] + -4;
    iStack_44 = param_3[2] + -2;
    iStack_38 = param_3[3] + -1;
    uStack_40 = 3;
    uStack_48 = 1;
    iStack_3c = iStack_44;
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(param_1_00 + 0x5b8);
    (**(code **)(**(int **)(param_1 + 8) + 0x17c))(6,auStack_68,*param_3,param_3[1]);
    if (*(char *)(param_3 + 9) != '\0') {
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3,param_3[3] + -2 + param_3[1]);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))
                (param_3[2] + -1 + *param_3,param_3[3] + -2 + param_3[1]);
      FUN_009566f0(param_1_00 + 0x114,1,100);
      uStack_14 = 0;
      (**(code **)(**(int **)(param_1 + 8) + 0x58))(&stack0xffffff74);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + 1,param_3[3] + -2 + param_3[1]);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))
                (param_3[2] + -2 + *param_3,param_3[3] + -2 + param_3[1]);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3 + 1,param_3[3] + -1 + param_3[1]);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))(*param_3,param_3[3] + -1 + param_3[1]);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))
                (param_3[2] + -2 + *param_3,param_3[3] + -1 + param_3[1]);
      (**(code **)(**(int **)(param_1 + 8) + 0x13c))
                (param_3[2] + -1 + *param_3,param_3[3] + -1 + param_3[1]);
      uStack_4 = 0xffffffff;
      local_7c = wxObject::vftable;
      FUN_0083e850();
    }
  }
  if ((*(byte *)(param_1_00 + 0x5f0) & 2) != 0) {
    local_78 = *(int **)(param_3[4] + 0x1a8);
    if (local_78 != (int *)0x0) {
      local_78[1] = local_78[1] + 1;
    }
    local_7c = wxBitmap::vftable;
    uStack_4 = 1;
    if ((local_78 != (int *)0x0) && (cVar2 = (**(code **)(*local_78 + 4))(), cVar2 != '\0')) {
      if ((*(byte *)(param_1_00 + 0x5f0) & 1) == 0) {
        if (local_78 == (int *)0x0) {
          iVar7 = 0;
        }
        else {
          iVar7 = local_78[2];
        }
        iVar7 = (param_3[2] - iVar7) / 2 + 4 + *param_3;
      }
      else {
        iVar7 = *param_3 + 0x10;
      }
      piVar5 = local_78;
      if (local_78 != (int *)0x0) {
        piVar5 = (int *)local_78[3];
      }
      (**(code **)(**(int **)(param_1 + 8) + 0x164))
                (&local_7c,iVar7,((param_3[3] - (int)piVar5) + -1) / 2 + 1 + param_3[1],1);
    }
    uStack_4 = 0xffffffff;
    FUN_008f7630();
  }
  if ((*(byte *)(param_1_00 + 0x5f0) & 1) != 0) {
    (**(code **)(*(int *)param_3[4] + 0x58))(auStack_34);
    uStack_4 = 2;
    if (iStack_20 != 0) {
      (**(code **)(**(int **)(param_1 + 8) + 0x50))(param_1_00 + 0x578);
      (**(code **)(**(int **)(param_1 + 8) + 0x78))(param_1_00 + 0xc4);
      (**(code **)(**(int **)(param_1 + 8) + 0x70))(0x6a);
      (**(code **)(**(int **)(param_1 + 8) + 0xa4))(&uStack_40,&local_78,&local_74,0,0,0);
      iVar6 = param_3[2] + -5;
      iVar7 = *param_3 + 3;
      if ((*(byte *)(param_1_00 + 0x5f0) & 2) != 0) {
        iVar7 = *(int *)(param_3[4] + 0x1a8);
        if (iVar7 != 0) {
          iVar7 = *(int *)(iVar7 + 8);
        }
        iVar4 = *(int *)(param_3[4] + 0x1a8);
        iVar7 = *param_3 + 6 + iVar7;
        if (iVar4 != 0) {
          iVar4 = *(int *)(iVar4 + 8);
        }
        iVar6 = iVar6 + (-3 - iVar4);
      }
      iVar4 = param_3[1];
      iVar1 = param_3[3];
      if ((int)uVar3 < iVar6) {
        pcVar8 = *(code **)(**(int **)(param_1 + 8) + 0x168);
        iVar7 = (int)(iVar6 - uVar3) / 2 + 1 + iVar7;
      }
      else {
        (**(code **)(**(int **)(param_1 + 8) + 0xb4))(iVar7,iVar4,iVar6,iVar1);
        pcVar8 = *(code **)(**(int **)(param_1 + 8) + 0x168);
      }
      (*pcVar8)(&uStack_58,iVar7,(iVar1 - unaff_EDI) / 2 + iVar4);
    }
    _free(pvStack_18);
    if (7 < uStack_1c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_30);
    }
  }
LAB_00a3bd22:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00a3bd50(int param_1_00,int *param_1,undefined4 param_2,int *param_3,int *param_4)

{
  int iVar1;
  undefined4 uVar2;
  void ***pppvVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined *puStack_c4;
  undefined *puStack_c0;
  void **appvStack_bc [5];
  uint uStack_a8;
  int iStack_84;
  undefined auStack_78 [4];
  undefined4 uStack_74;
  uint uStack_70;
  void *pvStack_6c;
  int local_64;
  void *pvStack_5c;
  undefined4 uStack_54;
  undefined4 uStack_4c;
  undefined4 uStack_3c;
  uint uStack_38;
  void *apvStack_34 [2];
  undefined4 uStack_2c;
  undefined4 uStack_24;
  int *piStack_1c;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf1e78;
  local_c = ExceptionList;
  uStack_a8 = DAT_0323f878 ^ (uint)&stack0xffffff5c;
  ExceptionList = &local_c;
  if ((*(byte *)(param_1_00 + 0x5f0) & 4) == 0) {
    local_64 = (param_3[2] + -0x20) / 2 + *param_3;
    iVar5 = param_3[1] + 4;
  }
  else {
    local_64 = *param_3 + 4;
    iVar5 = (param_3[3] + -0x20) / 2 + param_3[1];
  }
  if (param_4 != (int *)0x0) {
    *param_4 = local_64;
    param_4[1] = iVar5;
    param_4[2] = 0x20;
    param_4[3] = 0x20;
  }
  appvStack_bc[4] = (void **)(param_1_00 + 0x580);
  appvStack_bc[3] = (void **)0xa3bdfb;
  (**(code **)(*(int *)param_1[2] + 0x50))();
  appvStack_bc[3] = apvStack_34;
  appvStack_bc[2] = (void **)0xa3be0e;
  iVar1 = (**(code **)(*param_1 + 0x58))();
  appvStack_bc[2] = (void **)0x0;
  appvStack_bc[1] = (void **)0x0;
  appvStack_bc[0] = (void **)0x0;
  puStack_c0 = &stack0xffffff64;
  puStack_c4 = &stack0xffffff68;
  local_c = (void *)0x0;
  (**(code **)(*(int *)param_1[2] + 0xa4))(iVar1);
  uStack_24 = 0xffffffff;
  _free(apvStack_34[0]);
  if (7 < uStack_38) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_4c);
  }
  iVar6 = ((param_3[2] - (int)appvStack_bc[3]) + 1) / 2 + *param_3;
  iVar5 = iVar5 + 0x25;
  if ((*(byte *)((int)appvStack_bc[4] + 0x5f0) & 4) != 0) {
    iVar6 = iStack_84 + 0x25;
    iVar5 = (param_3[3] - (int)appvStack_bc[2]) / 2 + param_3[1];
  }
  (**(code **)(*(int *)param_1[2] + 0x78))((int)appvStack_bc[4] + 0x18c);
  uVar2 = (**(code **)(*piStack_1c + 0x58))(auStack_78);
  uStack_2c = 1;
  (**(code **)(*(int *)param_1[2] + 0x168))(uVar2,iVar6,iVar5);
  uStack_38 = 0xffffffff;
  _free(pvStack_6c);
  if (7 < uStack_70) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(iStack_84);
  }
  uStack_70 = 7;
  uStack_74 = 0;
  pppvVar3 = appvStack_bc;
  iVar4 = 2;
  do {
    *pppvVar3 = (void **)0x0;
    pppvVar3[1] = (void **)0x0;
    pppvVar3 = pppvVar3 + 2;
    iVar4 = iVar4 + -1;
  } while (-1 < iVar4);
  if ((puStack_c0[0x5f0] & 4) == 0) {
    appvStack_bc[0] = (void **)(param_3[2] / 2);
    appvStack_bc[1] = (void **)(iVar5 + iVar1 + 5);
    appvStack_bc[3] = (void **)(iVar5 + iVar1 + 2);
    appvStack_bc[2] = (void **)((int)appvStack_bc[0] + -3);
    appvStack_bc[4] = (void **)((int)appvStack_bc[0] + 3);
    uStack_a8 = (uint)appvStack_bc[3];
  }
  else {
    appvStack_bc[1] = (void **)(iVar1 / 2 + iVar5);
    appvStack_bc[0] = (void **)(puStack_c4 + iVar6 + 5);
    appvStack_bc[2] = (void **)(puStack_c4 + iVar6 + 2);
    appvStack_bc[3] = (void **)((int)appvStack_bc[1] + 3);
    uStack_a8 = (int)appvStack_bc[1] + -3;
    appvStack_bc[4] = appvStack_bc[2];
  }
  uVar2 = FUN_008f8330(0x24);
  (**(code **)(*(int *)param_1[2] + 0x58))(uVar2);
  FUN_0095d7e0(uStack_a8,100);
  uStack_3c = 2;
  (**(code **)(*(int *)param_1[2] + 0x60))(&stack0xffffff5c);
  (**(code **)(*(int *)param_1[2] + 0x184))(3,&puStack_c4,*param_3,param_3[1],1);
  uStack_54 = 0xffffffff;
  FUN_008f7630();
  ExceptionList = pvStack_5c;
  return;
}



void __thiscall
FUN_00a3c040(int param_1_00,int param_1,int *param_2,int param_3,uint param_4,int param_5,
            int param_6,int param_7)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int unaff_EBP;
  uint uVar5;
  int unaff_ESI;
  int unaff_EDI;
  int local_74;
  int local_70;
  int iStack_6c;
  int iStack_68;
  int local_64;
  int iStack_60;
  undefined auStack_58 [4];
  undefined4 uStack_54;
  uint uStack_40;
  void *pvStack_3c;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  int iStack_4;
  
  iStack_4 = -1;
  puStack_8 = &LAB_00bf1eb0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_74;
  ExceptionList = &local_c;
  local_70 = param_6;
  local_74 = param_7;
  local_64 = param_1_00;
  if ((param_4 & 3) == 1) {
    iVar4 = *param_2;
    iVar3 = *(int *)(param_7 + 4);
    if (iVar3 != 0) {
      iVar3 = *(int *)(iVar3 + 0xc);
    }
    local_70 = **(int **)(param_1 + 8);
    (**(code **)(local_70 + 0x164))
              (param_7,iVar4 + 2,(param_2[3] - iVar3) / 2 + param_2[1],1,
               DAT_0323f878 ^ (uint)&stack0xffffff7c);
    iVar3 = *(int *)(unaff_EDI + 4);
    if (iVar3 != 0) {
      iVar3 = *(int *)(iVar3 + 8);
    }
    iVar2 = 0;
    (**(code **)(**(int **)(param_1 + 8) + 0xa4))(param_5,&local_70,&iStack_6c,0,0,0);
    (**(code **)(**(int **)(param_1 + 8) + 0x168))
              (param_5,iVar2,(param_2[3] - (iVar3 + 2 + iVar4 + 2)) / 2 + param_2[1]);
    if (param_3 == 1) goto LAB_00a3c3ec;
    iStack_68 = param_2[3] / 2 + param_2[1];
    iVar2 = iStack_60 + 3 + iVar2;
  }
  else {
    if ((param_4 & 3) != 2) goto LAB_00a3c3ec;
    iVar4 = *(int *)(param_6 + 4);
    if (iVar4 != 0) {
      iVar4 = *(int *)(iVar4 + 8);
    }
    (**(code **)(**(int **)(param_1 + 8) + 0x164))
              (param_6,(param_2[2] - iVar4) / 2 + *param_2,param_2[1] + 2,1);
    uVar5 = -(uint)(iStack_4 != 1) & 8;
    (**(code **)(**(int **)(param_1 + 8) + 0xa4))(param_5,&stack0xffffff84,&stack0xffffff80,0,0,0);
    if (param_2[2] < iStack_6c + 4) {
      local_74 = *(int *)(param_5 + 0x14);
      do {
        local_74 = local_74 + -1;
        cVar1 = FUN_00a3e4e0(param_5,local_74);
        if (cVar1 != '\0') {
          FUN_00852560(auStack_58,0,local_74);
          iStack_4 = 0;
          (**(code **)(**(int **)(param_1 + 8) + 0xa4))(auStack_58,&iStack_6c,&local_70,0,0,0);
          if (iStack_6c + 4 <= param_2[2]) {
            iVar3 = (param_2[2] - iStack_6c) / 2 + *param_2;
            (**(code **)(**(int **)(param_1 + 8) + 0x168))(auStack_58,iVar3,iStack_68);
            local_74 = local_74 + unaff_EBP;
            FUN_00852560(&uStack_40,unaff_ESI + 1,0xffffffff);
            local_10 = CONCAT31(local_10._1_3_,1);
            iVar4 = iStack_68;
            (**(code **)(**(int **)(param_1 + 8) + 0xa4))
                      (&uStack_40,&stack0xffffff88,&stack0xffffff84,0,0,0);
            iVar3 = (int)(param_2[2] - (iVar3 + uVar5)) / 2 + *param_2;
            (**(code **)(**(int **)(param_1 + 8) + 0x168))(auStack_58,iVar3,iVar4);
            if (uVar5 != 0) {
              FUN_00a31e90(param_1,(iVar3 - uVar5) + 2 + iStack_6c,local_70 / 2 + 1 + iVar4,
                           local_64 + 0xb0);
            }
            FUN_0040159c();
            FUN_0040159c();
            break;
          }
          iStack_4 = -1;
          _free(pvStack_3c);
          if (7 < uStack_40) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(uStack_54);
          }
        }
      } while (local_74 != 0);
      goto LAB_00a3c3ec;
    }
    local_74 = **(int **)(param_1 + 8);
    (**(code **)(local_74 + 0x168))(param_5,(param_2[2] - iStack_6c) / 2 + *param_2,iStack_68);
    if (uVar5 == 0) goto LAB_00a3c3ec;
    iStack_68 = (local_70 * 3) / 2 + iStack_68;
    iVar2 = param_2[2] / 2 + *param_2;
  }
  FUN_00a31e90(param_1,iVar2,iStack_68,local_64 + 0xb0);
LAB_00a3c3ec:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a3c410(int param_1_00,undefined4 param_1,int *param_2)

{
  int iVar1;
  int *piVar2;
  undefined4 uVar3;
  void *unaff_ESI;
  uint uVar4;
  uint unaff_EDI;
  int iVar5;
  undefined4 uVar6;
  void *pvStack_2c;
  int *piStack_1c;
  int iStack_18;
  int iStack_10;
  void *local_c;
  undefined4 *puStack_8;
  undefined4 uStack_4;
  
  piVar2 = param_2;
  uStack_4 = 0xffffffff;
  puStack_8 = (undefined4 *)&LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(*(int *)param_2[2] + 0x50))(param_1_00 + 0x580,DAT_0323f878 ^ (uint)&stack0xffffffc8)
  ;
  uVar3 = (**(code **)(*param_2 + 0x58))(&stack0xffffffcc);
  uVar6 = 0;
  local_c = (void *)0x0;
  (**(code **)(*(int *)piVar2[2] + 0xa4))(uVar3,&param_1,&stack0x00000000,0,0,0);
  _free(unaff_ESI);
  if (7 < unaff_EDI) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uVar6);
  }
  uVar4 = *(uint *)(param_1_00 + 0x5f0) & 4;
  if (uVar4 == 0) {
    iVar5 = iStack_10 + 6;
    iVar1 = iStack_18 + 6;
  }
  else {
    iVar5 = iStack_10 + 4;
    iVar1 = iStack_18 + 8;
  }
  if (puStack_8 != (undefined4 *)0x0) {
    if (uVar4 == 0) {
      uVar6 = 3;
      uVar3 = 2;
    }
    else {
      uVar6 = 2;
      uVar3 = 3;
    }
    puStack_8[1] = uVar3;
    *puStack_8 = uVar6;
  }
  *piStack_1c = iVar5;
  piStack_1c[1] = (int)local_c + iVar1;
  ExceptionList = pvStack_2c;
  return;
}



void __thiscall FUN_00a3c510(int param_1_00,undefined4 param_1,int *param_2)

{
  int *piVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  void *unaff_ESI;
  uint uVar5;
  uint unaff_EDI;
  undefined4 uVar6;
  void *pvStack_2c;
  int *piStack_1c;
  int iStack_18;
  int iStack_10;
  void *local_c;
  undefined4 *puStack_8;
  undefined4 uStack_4;
  
  piVar1 = param_2;
  uStack_4 = 0xffffffff;
  puStack_8 = (undefined4 *)&LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(*(int *)param_2[2] + 0x50))(param_1_00 + 0x580,DAT_0323f878 ^ (uint)&stack0xffffffc8)
  ;
  uVar2 = (**(code **)(*param_2 + 0x58))(&stack0xffffffcc);
  uVar6 = 0;
  local_c = (void *)0x0;
  (**(code **)(*(int *)piVar1[2] + 0xa4))(uVar2,&param_1,&stack0x00000000,0,0,0);
  _free(unaff_ESI);
  if (7 < unaff_EDI) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uVar6);
  }
  uVar5 = *(uint *)(param_1_00 + 0x5f0) & 4;
  if (uVar5 == 0) {
    iVar4 = -6;
    iVar3 = -6;
  }
  else {
    iVar4 = -4;
    iVar3 = -8;
  }
  iVar4 = iStack_10 + iVar4;
  iVar3 = (int)local_c + (iVar3 - iStack_18);
  if (puStack_8 != (undefined4 *)0x0) {
    if (uVar5 == 0) {
      uVar6 = 3;
      uVar2 = 2;
    }
    else {
      uVar6 = 2;
      uVar2 = 3;
    }
    puStack_8[1] = uVar2;
    *puStack_8 = uVar6;
  }
  if (iVar4 < 0) {
    iVar4 = 0;
  }
  if (iVar3 < 0) {
    iVar3 = 0;
  }
  *piStack_1c = iVar4;
  piStack_1c[1] = iVar3;
  ExceptionList = pvStack_2c;
  return;
}



undefined4 __thiscall
FUN_00a3c620(int *param_1_00,int param_1,int param_3,uint param_4,int param_5,int param_6,
            int param_7,int *param_8,int param_9,int *param_10,undefined4 *param_11,int *param_12)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  undefined4 *puVar5;
  int unaff_EBX;
  uint uVar6;
  int iStack_d0;
  int iStack_cc;
  int *piStack_c8;
  int *piStack_c4;
  int *piStack_c0;
  undefined4 *puStack_bc;
  undefined4 uVar7;
  int iStack_9c;
  int iStack_98;
  int iStack_94;
  int iStack_90;
  int iStack_8c;
  int iStack_88;
  int iStack_84;
  int aiStack_80 [2];
  undefined auStack_78 [4];
  uint uStack_74;
  undefined4 uStack_64;
  uint uStack_60;
  void *pvStack_5c;
  undefined auStack_54 [4];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  void *pvStack_10;
  void *local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  uStack_8 = &LAB_00bf1ef0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  (**(code **)(**(int **)(param_1 + 8) + 0x50))();
  param_4 = param_4 & 3;
  if (param_4 == 0) {
    *param_10 = (int)param_8 + 6;
    param_10[1] = param_9 + 4;
    switch(param_3) {
    case 1:
    case 4:
      iVar2 = *param_10;
      iVar3 = param_10[1];
      *param_11 = 0;
      param_11[1] = 0;
      param_11[2] = iVar2;
      param_11[3] = iVar3;
      *param_12 = 0;
      param_12[1] = 0;
      param_12[2] = 0;
      param_12[3] = 0;
      break;
    case 2:
      *param_10 = *param_10 + 8;
      puStack_bc = (undefined4 *)0xa3ca2d;
      piVar4 = (int *)FUN_0090e0d0();
      *param_12 = *piVar4;
      param_12[1] = piVar4[1];
      param_12[2] = piVar4[2];
      param_12[3] = piVar4[3];
      *param_11 = 0;
      param_11[1] = 0;
      param_11[2] = 0;
      param_11[3] = 0;
      break;
    case 3:
      puStack_bc = (undefined4 *)0xa3ca73;
      puVar5 = (undefined4 *)FUN_0090e0d0();
      *param_11 = *puVar5;
      param_11[1] = puVar5[1];
      param_11[2] = puVar5[2];
      param_11[3] = puVar5[3];
      iVar2 = param_10[1];
      *param_12 = *param_10;
      param_12[1] = 0;
      param_12[2] = 8;
      param_12[3] = iVar2;
      *param_10 = *param_10 + 8;
    }
  }
  else if (param_4 == 1) {
    puStack_bc = param_11;
    piStack_c0 = param_10;
    piStack_c4 = (int *)param_9;
    piStack_c8 = param_8;
    iStack_cc = param_7;
    iStack_d0 = param_6;
    (**(code **)(*param_1_00 + 0x88))(param_1,param_1,param_3,0,param_5);
    (**(code **)(**(int **)(param_1 + 8) + 0xa4))(param_5,&iStack_d0,&piStack_c8,0,0,0);
    *param_10 = *param_10 + unaff_EBX;
    switch(param_3) {
    case 2:
      param_12[2] = param_12[2] + unaff_EBX;
      break;
    case 3:
      *param_12 = *param_12 + unaff_EBX;
    case 1:
    case 4:
      param_11[2] = param_11[2] + unaff_EBX;
    }
  }
  else if (param_4 == 2) {
    iStack_94 = param_6 + 4;
    puStack_bc = (undefined4 *)0x0;
    piStack_c0 = (int *)0x0;
    piStack_c4 = &iStack_8c;
    piStack_c8 = &iStack_9c;
    param_7 = param_7 + 4;
    iStack_cc = param_5;
    iStack_d0 = 0xa3c6d1;
    iStack_90 = param_7;
    (**(code **)(**(int **)(param_1 + 8) + 0xa4))();
    uVar6 = 0;
    iStack_98 = 0;
    if ((param_3 != 1) && (param_3 != 4)) {
      iStack_98 = 8;
    }
    if (*(int *)(param_5 + 0x14) != 0) {
      do {
        puStack_bc = (undefined4 *)param_5;
        piStack_c0 = (int *)0xa3c707;
        cVar1 = FUN_00a3e4e0();
        if (cVar1 != '\0') {
          puStack_bc = (undefined4 *)(uVar6 + 1);
          piStack_c0 = (int *)auStack_78;
          piStack_c4 = (int *)0xa3c728;
          iVar2 = FUN_00852560();
          puStack_bc = (undefined4 *)0x0;
          piStack_c0 = (int *)auStack_54;
          uStack_8 = (undefined *)0x0;
          piStack_c4 = (int *)0xa3c744;
          FUN_00852560();
          uVar7 = 0;
          puStack_bc = (undefined4 *)0x0;
          piStack_c0 = (int *)0x0;
          piStack_c4 = aiStack_80;
          piStack_c8 = &iStack_84;
          uStack_8 = (undefined *)CONCAT31(uStack_8._1_3_,1);
          iStack_d0 = 0xa3c76e;
          iStack_cc = iVar2;
          (**(code **)(**(int **)(param_1 + 8) + 0xa4))();
          iVar2 = iStack_9c;
          iStack_d0 = 0;
          (**(code **)(**(int **)(param_1 + 8) + 0xa4))(uVar7,&stack0xffffff60,&iStack_94,0,0);
          iVar3 = iVar2 + iStack_98;
          if (iVar2 + iStack_98 < iStack_88) {
            iVar3 = iStack_88;
          }
          puStack_bc = (undefined4 *)0xa3c7b2;
          _free(pvStack_38);
          if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
            puStack_bc = (undefined4 *)&UNK_00a3c7c6;
            FUN_00a3f6a1();
          }
          uStack_3c = 7;
          uStack_40 = 0;
          uStack_50 = uStack_50 & 0xffff0000;
          uStack_8 = (undefined *)0xffffffff;
          puStack_bc = (undefined4 *)0xa3c7f5;
          _free(pvStack_5c);
          if (7 < uStack_60) {
                    // WARNING: Subroutine does not return
            puStack_bc = (undefined4 *)&UNK_00a3c809;
            FUN_00a3f6a1();
          }
          uStack_60 = 7;
          uStack_64 = 0;
          uStack_74 = uStack_74 & 0xffff0000;
          param_7 = iStack_90;
          if (iVar3 + 4 < iStack_9c) {
            iStack_9c = iVar3 + 4;
          }
        }
        uVar6 = uVar6 + 1;
      } while (uVar6 < *(uint *)(param_5 + 0x14));
    }
    if (iStack_94 <= iStack_9c) {
      iStack_94 = iStack_9c;
    }
    iStack_94 = iStack_94 + 6;
    param_7 = param_7 + iStack_8c * 2;
    *param_10 = iStack_94;
    param_10[1] = param_7;
    switch(param_3) {
    case 1:
    case 4:
      *param_11 = 0;
      param_11[1] = 0;
      param_11[2] = iStack_94;
      param_11[3] = param_7;
      break;
    case 2:
      *param_12 = 0;
      param_12[1] = 0;
      param_12[2] = iStack_94;
      param_12[3] = param_7;
      break;
    case 3:
      *param_11 = 0;
      param_11[1] = 0;
      param_11[2] = iStack_94;
      param_11[3] = param_7;
      param_11[3] = param_11[3] + iStack_8c * -2 + -2;
      *param_12 = 0;
      param_12[1] = param_11[3];
      param_12[2] = iStack_94;
      param_12[3] = param_7 - param_11[3];
    }
  }
  ExceptionList = pvStack_10;
  return 1;
}



void __thiscall
FUN_00a3cb00(int param_1_00,undefined4 param_1,int *param_2,undefined4 param_3,undefined4 *param_4,
            int *param_5)

{
  int *piVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  void *unaff_ESI;
  uint unaff_EDI;
  undefined4 uVar6;
  void *pvStack_2c;
  int *piStack_1c;
  int iStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  piVar1 = param_2;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffc8;
  ExceptionList = &local_c;
  if (param_4 != (undefined4 *)0x0) {
    *param_4 = 0x10;
    param_4[1] = 0x10;
  }
  if (param_5 != (int *)0x0) {
    *param_5 = (-(uint)((*(byte *)(param_1_00 + 0x5f0) & 4) != 0) & 0xffffffa0) + 0x80;
  }
  (**(code **)(*(int *)param_2[2] + 0x50))(param_1_00 + 0x580,uVar2);
  uVar3 = (**(code **)(*param_2 + 0x58))(&stack0xffffffcc);
  uVar6 = 0;
  local_c = (void *)0x0;
  (**(code **)(*(int *)piVar1[2] + 0xa4))(uVar3,&param_2,&param_3,0,0,0);
  _free(unaff_ESI);
  if (7 < unaff_EDI) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uVar6);
  }
  iVar4 = (int)local_c * 2 + 4;
  if ((*(byte *)(param_1_00 + 0x5f0) & 4) == 0) {
    iVar5 = 0x2a;
    if (0x29 < iStack_10 + 8) {
      iVar5 = iStack_10 + 8;
    }
    iVar4 = (int)local_c * 2 + 0x2e;
  }
  else {
    if (iVar4 < 0x2a) {
      iVar4 = 0x2a;
    }
    iVar5 = iStack_10 + 0x32;
  }
  piStack_1c[1] = iVar4;
  *piStack_1c = iVar5;
  ExceptionList = pvStack_2c;
  return;
}



void __thiscall FUN_00a3cc20(int param_1_00,int param_1,undefined4 param_2,int *param_3)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int unaff_EBX;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  int iVar5;
  int iStack_68;
  int iStack_64;
  int *piStack_60;
  int iStack_5c;
  int *piStack_58;
  int *piStack_54;
  int local_40;
  int local_3c;
  int local_38;
  int local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int iStack_20;
  int iStack_1c;
  int *piStack_18;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  piStack_54 = (int *)0x0;
  piStack_58 = param_3;
  iStack_5c = param_2;
  piStack_60 = (int *)param_1;
  iStack_64 = 0xa3cc3f;
  FUN_00a35f20();
  local_30 = *param_3;
  local_2c = param_3[1];
  local_28 = param_3[2];
  iVar5 = param_3[3];
  if ((*(byte *)(param_1_00 + 0x5f0) & 4) == 0) {
    local_30 = local_30 + 1;
    local_28 = local_28 + -2;
  }
  else {
    local_2c = local_2c + 1;
    iVar5 = iVar5 + -2;
  }
  piStack_54 = (int *)0xa3cc83;
  local_24 = iVar5;
  iVar2 = FUN_00929eb0();
  if (iVar2 == 0) {
    piStack_54 = (int *)0xa3cd37;
    cVar1 = FUN_00a2ec70();
    if (cVar1 != '\0') {
      local_8 = local_28 + -2;
      local_10 = local_30 + 1;
      piStack_54 = (int *)0x1;
      piStack_58 = &local_10;
      iStack_5c = param_2;
      local_c = local_2c + 1;
      local_4 = iVar5 + -2;
      piStack_60 = (int *)param_1;
      iStack_64 = 0xa3cd77;
      FUN_00a35f20();
    }
  }
  else {
    local_3c = local_2c + 1;
    local_38 = local_28 + -2;
    local_40 = local_30 + 1;
    local_34 = (param_3[3] / 5 + param_3[1]) - local_40;
    piStack_54 = (int *)0x80;
    piStack_58 = (int *)(param_1_00 + 0x1f0);
    iStack_5c = param_1_00 + 0x1dc;
    piStack_60 = &local_40;
    iStack_64 = 0xa3ccf1;
    (**(code **)(**(int **)(param_1 + 8) + 0x130))();
    unaff_ESI = unaff_ESI + unaff_EBX;
    unaff_EBX = (iVar5 - unaff_ESI) + local_3c;
    iStack_64 = 0x80;
    iStack_68 = param_1_00 + 0x1c8;
    (**(code **)(**(int **)(param_1 + 8) + 0x130))(&stack0xffffffb0,param_1_00 + 0x1b4);
  }
  local_40 = 0;
  local_3c = 0;
  local_38 = 0;
  local_34 = 0;
  piStack_54 = &local_40;
  piStack_58 = &local_30;
  iStack_5c = param_2;
  piStack_60 = (int *)param_1;
  iStack_64 = 0xa3cda0;
  FUN_00a3bd50();
  piStack_54 = (int *)(param_1_00 + 0x548);
  piStack_58 = (int *)0xa3cdb1;
  (**(code **)(**(int **)(param_1 + 8) + 0x60))();
  piStack_58 = (int *)0x24;
  iStack_5c = 0xa3cdb8;
  piStack_58 = (int *)FUN_008f8330();
  iStack_5c = 0xa3cdc6;
  (**(code **)(**(int **)(param_1 + 8) + 0x58))();
  piStack_60 = (int *)(local_40 + -2);
  iStack_5c = 7;
  iStack_68 = unaff_EBP + 1;
  iStack_64 = local_3c + -8 + unaff_EBX;
  (**(code **)(**(int **)(param_1 + 8) + 0x150))();
  iVar5 = (int)piStack_54;
  iVar2 = (param_3[3] / 5 + param_3[1]) - (int)piStack_54;
  if ((iVar2 < 0) || (unaff_ESI <= iVar2)) {
    local_2c = unaff_ESI + -9;
    local_38 = (int)piStack_58 + 1;
    local_34 = (int)piStack_54 + 1;
    local_30 = unaff_EDI + -2;
    if (iVar2 < 0) {
      (**(code **)(**(int **)(param_1 + 8) + 0x130))
                (&local_38,param_1_00 + 0x254,param_1_00 + 0x268,0x80);
      goto LAB_00a3cf3a;
    }
    iVar2 = param_1_00 + 0x290;
    iVar4 = param_1_00 + 0x27c;
    piVar3 = &local_38;
  }
  else {
    local_34 = (int)piStack_54 + 1;
    local_30 = unaff_EDI + -2;
    local_38 = (int)piStack_58 + 1;
    local_2c = iVar2;
    (**(code **)(**(int **)(param_1 + 8) + 0x130))
              (&local_38,param_1_00 + 0x27c,param_1_00 + 0x290,0x80);
    local_24 = iVar2 + iVar5;
    iStack_20 = local_30;
    local_28 = local_38;
    iStack_1c = (unaff_ESI - local_24) + -7 + iVar5;
    iVar2 = param_1_00 + 0x268;
    iVar4 = param_1_00 + 0x254;
    piVar3 = &local_28;
  }
  (**(code **)(**(int **)(param_1 + 8) + 0x130))(piVar3,iVar4,iVar2,0x80);
LAB_00a3cf3a:
  piVar3 = piStack_18;
  cVar1 = (**(code **)(*piStack_18 + 0x10))();
  if (cVar1 != '\0') {
    iVar2 = piVar3[1];
    if (iVar2 == 0) {
      iVar4 = 0;
      iStack_20 = 0;
    }
    else {
      iVar4 = *(int *)(iVar2 + 0xc);
      iStack_20 = *(int *)(iVar2 + 8);
    }
    (**(code **)(**(int **)(param_1 + 8) + 0x164))
              (piStack_18,((int)piStack_60 - iStack_20) / 2 + iStack_68,
               ((iStack_5c - iVar4) + -7) / 2 + iVar5,1);
  }
  FUN_00a321f0(param_1,&iStack_68,param_1_00 + 0x598,param_1_00 + 0x5a0);
  FUN_00a321f0(param_1,&piStack_58,param_1_00 + 0x5a8,param_1_00 + 0x5b0);
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void __thiscall
FUN_00a3cff0(int param_1_00,int param_1,undefined4 param_2,int *param_3,uint param_4,uint param_5,
            int param_7)

{
  code *pcVar1;
  int unaff_EBX;
  int iVar2;
  int iVar3;
  uint local_7c;
  int iStack_78;
  int iStack_74;
  int iStack_70;
  uint uStack_6c;
  int iStack_68;
  int iStack_64;
  int iStack_60;
  int iStack_5c;
  int iStack_58;
  int iStack_54;
  int iStack_50;
  int iStack_4c;
  int iStack_48;
  undefined4 uStack_44;
  int iStack_40;
  undefined4 uStack_3c;
  int iStack_38;
  undefined4 uStack_34;
  undefined4 uStack_30;
  undefined4 uStack_2c;
  undefined4 uStack_28;
  
  if ((param_4 == 4) && (param_4 = 1, (param_5 & 0x100) != 0)) {
    param_5 = param_5 ^ 0x60;
  }
  if ((param_5 & 0x78) != 0) {
    local_7c = param_5 & 0x60;
    if (local_7c == 0) {
      iVar3 = param_1_00 + 0x5c0;
    }
    else {
      iVar3 = param_1_00 + 0x5c8;
    }
    (**(code **)(**(int **)(param_1 + 8) + 0x58))(iVar3);
    iVar3 = *param_3;
    iVar2 = param_3[2];
    local_7c = iVar3 + 1;
    iStack_70 = (param_3[3] + -2) / 3;
    iStack_78 = param_3[1] + 1;
    iStack_74 = iVar2 + -2;
    iStack_68 = iStack_78 + iStack_70;
    iStack_60 = (param_3[3] + -2) - iStack_70;
    uStack_6c = local_7c;
    iStack_64 = iStack_74;
    if (param_3 == (int *)0x3) {
      if ((param_4 & 3) == 1) {
        if ((param_4 & 8) == 0) {
          uStack_6c = iVar3 + -7 + iStack_74;
          local_7c = iVar3 + -7 + iStack_74;
          iStack_64 = 8;
          iStack_74 = 8;
          iVar3 = local_7c - 1;
        }
        else {
          iStack_64 = iVar2 + -0xb;
          iStack_74 = iVar2 + -0xb;
          iVar3 = local_7c + iStack_74;
        }
        (**(code **)(**(int **)(param_1 + 8) + 0x140))
                  (iVar3,iRam00000007,iVar3,_DAT_0000000f + iRam00000007);
      }
      else if ((param_4 & 3) == 2) {
        iVar3 = *(int *)(param_7 + 4);
        if (iVar3 != 0) {
          iVar3 = *(int *)(iVar3 + 0xc);
        }
        iStack_54 = _DAT_0000000b;
        iVar3 = iRam00000007 + 4 + iVar3;
        iStack_5c = iRam00000003;
        iStack_58 = iRam00000007;
        if ((param_4 & 8) == 0) {
          iStack_50 = (iRam00000007 - iVar3) + -1 + _DAT_0000000f;
          iStack_58 = iVar3 + 1;
        }
        else {
          iStack_50 = iVar3 - iRam00000007;
        }
        (**(code **)(**(int **)(param_1 + 8) + 0x140))
                  (iRam00000003,iVar3,_DAT_0000000b + iRam00000003,iVar3);
        FUN_008f7750(&iStack_5c);
        FUN_008f7750(&iStack_5c);
      }
    }
    pcVar1 = *(code **)(**(int **)(param_1 + 8) + 0x130);
    if (param_1_00 == 0) {
      (*pcVar1)(&local_7c,unaff_EBX + 0x2cc,unaff_EBX + 0x2e0,0x80);
      iVar3 = unaff_EBX + 0x2b8;
      iVar2 = unaff_EBX + 0x2a4;
    }
    else {
      (*pcVar1)(&local_7c,unaff_EBX + 0x31c,unaff_EBX + 0x330,0x80);
      iVar3 = unaff_EBX + 0x308;
      iVar2 = unaff_EBX + 0x2f4;
    }
    (**(code **)(**(int **)(param_1 + 8) + 0x130))(&local_7c,iVar2,iVar3,0x80);
    iStack_60 = 0;
    iStack_64 = param_3[2] + -3;
    iStack_58 = 2;
    iStack_5c = param_3[2] + -1;
    iStack_50 = param_3[3] + -3;
    uStack_6c = 2;
    uStack_2c = 2;
    iStack_48 = param_3[3] + -1;
    iStack_68 = 0;
    uStack_28 = 0;
    uStack_3c = 0;
    uStack_34 = 0;
    uStack_44 = 2;
    uStack_30 = 2;
    iStack_54 = iStack_5c;
    iStack_4c = iStack_64;
    iStack_40 = iStack_48;
    iStack_38 = iStack_50;
    (**(code **)(**(int **)(param_1 + 8) + 0x17c))(9,&uStack_6c,*param_3,param_3[1]);
  }
  (**(code **)(**(int **)(param_1 + 8) + 0x50))(param_1_00 + 0x588);
  (**(code **)(**(int **)(param_1 + 8) + 0x78))(param_1_00 + 0xb0);
  FUN_00a3c040(param_1,param_3,param_2,param_5,param_4,param_5,param_7);
  return;
}



void __thiscall FUN_00a3d340(uint param_1_00,int param_1,int *param_2,int *param_3)

{
  undefined *puVar1;
  int *piVar2;
  char cVar3;
  int *piVar4;
  int unaff_EBX;
  undefined *puVar5;
  undefined *unaff_EDI;
  int iVar6;
  undefined *puVar7;
  undefined *puVar8;
  int *piStack_154;
  undefined *puStack_150;
  undefined *puVar9;
  char cStack_141;
  undefined *puStack_140;
  undefined *puStack_13c;
  undefined *puStack_138;
  int iStack_134;
  undefined *puStack_130;
  undefined *puStack_12c;
  int *piStack_128;
  int *piStack_124;
  int iStack_120;
  uint uStack_11c;
  undefined4 uStack_108;
  int iStack_104;
  undefined *puStack_100;
  undefined *local_fc;
  int local_f8;
  int local_f4;
  int local_f0;
  undefined *puStack_ec;
  undefined4 uStack_dc;
  uint local_d8;
  void *pvStack_d4;
  int iStack_cc;
  int *local_c8;
  undefined4 uStack_b8;
  uint uStack_b4;
  void *pvStack_b0;
  undefined4 uStack_ac;
  int iStack_a8;
  undefined auStack_a4 [12];
  uint uStack_98;
  void *pvStack_94;
  uint uStack_90;
  void *pvStack_8c;
  int iStack_70;
  undefined auStack_68 [4];
  void *pvStack_64;
  int iStack_60;
  uint uStack_5c;
  undefined uStack_50;
  uint uStack_48;
  void *pvStack_44;
  undefined uStack_30;
  undefined4 uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf1f59;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&uStack_108;
  uStack_11c = DAT_0323f878 ^ (uint)&stack0xfffffee8;
  ExceptionList = &local_c;
  iStack_120 = 0;
  piStack_124 = param_3;
  piStack_128 = param_2;
  puStack_12c = (undefined *)param_1;
  local_c8 = param_2;
  puStack_130 = (undefined *)0xa3d3a4;
  local_d8 = param_1_00;
  FUN_00a35f20();
  local_fc = (undefined *)*param_3;
  local_f8 = param_3[1];
  local_f4 = param_3[2];
  local_f0 = param_3[3];
  if ((*(byte *)(param_1_00 + 0x5f0) & 4) == 0) {
    local_fc = (undefined *)((int)local_fc + 1);
    local_f4 = local_f4 + -2;
  }
  else {
    local_f8 = local_f8 + 1;
    local_f0 = local_f0 + -2;
  }
  iStack_120 = param_1_00 + 0x580;
  piStack_124 = (int *)0xa3d3ed;
  (**(code **)(**(int **)(param_1 + 8) + 0x50))();
  piStack_124 = (int *)0x24;
  piStack_128 = (int *)0xa3d3f4;
  piStack_124 = (int *)FUN_008f8330();
  piStack_128 = (int *)0xa3d402;
  (**(code **)(**(int **)(param_1 + 8) + 0x58))();
  piStack_128 = (int *)0xa3d409;
  cVar3 = FUN_00a2ec70();
  if (cVar3 == '\0') {
    piStack_128 = (int *)(param_1_00 + 0x540);
    puStack_12c = (undefined *)0xa3d43f;
    (**(code **)(**(int **)(param_1 + 8) + 0x60))();
    puStack_12c = (undefined *)(param_1_00 + 0x178);
    puStack_130 = (undefined *)0xa3d450;
    (**(code **)(**(int **)(param_1 + 8) + 0x78))();
  }
  else {
    piStack_128 = (int *)(param_1_00 + 0x548);
    puStack_12c = (undefined *)0xa3d41e;
    (**(code **)(**(int **)(param_1 + 8) + 0x60))();
    puStack_12c = (undefined *)(param_1_00 + 0x1a0);
    puStack_130 = (undefined *)0xa3d42f;
    (**(code **)(**(int **)(param_1 + 8) + 0x78))();
  }
  local_f4 = uStack_108;
  puStack_130 = auStack_68;
  puStack_ec = puStack_100;
  iStack_134 = 0xa3d47e;
  (**(code **)(*param_2 + 0x58))();
  iStack_134 = 0;
  puStack_138 = (undefined *)0x0;
  puStack_13c = (undefined *)0x0;
  puStack_140 = &stack0xfffffeec;
  uStack_18 = 0;
  uStack_11c = uStack_11c & 0xffffff;
  (**(code **)(**(int **)(param_1 + 8) + 0xa4))();
  puVar1 = puStack_12c + 2;
  iVar6 = iStack_104 + -2;
  piVar2 = (int *)((uStack_11c - (int)puVar1) + -1 + (int)piStack_124);
  local_fc = puStack_130;
  puVar5 = puStack_12c;
  puStack_12c = (undefined *)(unaff_EBX + 1);
  if (iVar6 < (int)puStack_130) {
    puStack_150 = (undefined *)0x0;
    piStack_154 = &iStack_cc;
    puStack_150 = (undefined *)FUN_00852560();
    piStack_154 = &iStack_60;
    uStack_30 = 1;
    FUN_008533d0();
    uStack_30 = 3;
    _free(pvStack_b0);
    if (7 < uStack_b4) {
                    // WARNING: Subroutine does not return
      puStack_150 = &UNK_00a3d546;
      FUN_00a3f6a1();
    }
    puStack_150 = (undefined *)0x0;
    piStack_154 = (int *)0x0;
    local_c8 = (int *)((uint)local_c8 & 0xffff0000);
    uStack_b4 = 7;
    uStack_b8 = 0;
    (**(code **)(**(int **)(param_1 + 8) + 0xa4))(&iStack_60,&puStack_130,&stack0xfffffee8);
    local_fc = puStack_130;
    puVar5 = unaff_EDI;
    if (iVar6 < (int)puStack_130) {
      iStack_134 = CONCAT13(1,(undefined3)iStack_134);
    }
    else {
      puVar7 = (undefined *)(iStack_70 - 1);
      while (puStack_130 = puVar7, (undefined *)0x2 < puStack_130) {
        puStack_150 = (undefined *)0x0;
        piStack_154 = &iStack_a8;
        puStack_150 = (undefined *)FUN_00852560();
        piStack_154 = &local_f0;
        uStack_30 = 4;
        piVar4 = (int *)FUN_008533d0();
        uStack_30 = 5;
        if (&iStack_60 != piVar4) {
          puStack_150 = (undefined *)0x0;
          piStack_154 = piVar4;
          FID_conflict_assign();
        }
        puStack_150 = (undefined *)0xa3d61f;
        _free(pvStack_d4);
        if (7 < local_d8) {
                    // WARNING: Subroutine does not return
          puStack_150 = &UNK_00a3d637;
          FUN_00a3f6a1();
        }
        local_d8 = 7;
        uStack_dc = 0;
        puStack_ec = (undefined *)((uint)puStack_ec & 0xffff0000);
        uStack_30 = 3;
        puStack_150 = (undefined *)0xa3d666;
        _free(pvStack_8c);
        if (7 < uStack_90) {
                    // WARNING: Subroutine does not return
          puStack_150 = &UNK_00a3d67f;
          FUN_00a3f6a1();
        }
        puStack_150 = (undefined *)0x0;
        piStack_154 = (int *)0x0;
        (**(code **)(**(int **)(param_1 + 8) + 0xa4))(&iStack_60,&stack0xfffffee8,&puStack_100);
        puVar5 = puStack_100;
        local_fc = unaff_EDI;
        if ((int)unaff_EDI <= iVar6) {
          puStack_150 = (undefined *)0x0;
          piStack_154 = &iStack_60;
          FID_conflict_assign();
          break;
        }
        puVar7 = puStack_130 + -1;
      }
    }
    uStack_30 = 0;
    puStack_150 = (undefined *)0xa3d6f8;
    _free(pvStack_44);
    if (7 < uStack_48) {
                    // WARNING: Subroutine does not return
      puStack_150 = &UNK_00a3d712;
      FUN_00a3f6a1();
    }
  }
  puVar8 = puStack_12c;
  piStack_154 = piVar2;
  puStack_150 = (undefined *)iVar6;
  puVar9 = puVar1;
  (**(code **)(**(int **)(param_1 + 8) + 0x150))(puStack_12c);
  puVar7 = puStack_13c;
  cStack_141 = (char)((uint)&stack0xfffffee8 >> 0x18);
  if (cStack_141 == '\0') {
    puVar7 = puVar8;
    (**(code **)(**(int **)(param_1 + 8) + 0x168))
              (&pvStack_94,puStack_13c + (iVar6 - unaff_EBX) / 2,
               ((int)puVar1 - (int)puVar5) / 2 + iStack_120);
  }
  else {
    (**(code **)(**(int **)(param_1 + 8) + 0xb4))(puStack_13c,iStack_120,iVar6,puVar1);
    uStack_50 = 6;
    (**(code **)(**(int **)(param_1 + 8) + 0x168))
              (auStack_a4,puVar7,puStack_130 + ((int)puVar1 - (int)puVar5) / 2);
    uStack_5c = uStack_5c & 0xffffff00;
    (**(code **)(**(int **)(param_1 + 8) + 0xc0))();
  }
  uStack_5c = 0xffffffff;
  _free(pvStack_94);
  iVar6 = iStack_120;
  if (7 < uStack_98) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_ac);
  }
  cVar3 = FUN_00a2ec70();
  puVar5 = puStack_130;
  if (cVar3 != '\0') {
    puStack_138 = puVar9 + -2;
    puStack_13c = (undefined *)((int)puStack_150 + 1);
    iStack_134 = (int)&iStack_70 + (2 - (int)puVar1);
    puStack_140 = puVar7;
    FUN_00a35f20(param_1,iVar6,&puStack_140,1);
  }
  FUN_00a321f0(param_1,&piStack_154,puVar5 + 0x598,puVar5 + 0x5a0);
  ExceptionList = pvStack_64;
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_00a3d8a0(int param_1_00,int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  int iVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  int local_38;
  undefined auStack_34 [8];
  uint uStack_2c;
  undefined4 uStack_1c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  iVar2 = param_3;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bdde78;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar5 = 0;
  local_38 = 0;
  if ((*(uint *)(param_3 + 4) < 2) && ((*(byte *)(param_1_00 + 0x5f0) & 0x20) == 0)) {
    local_38 = 2;
  }
  else {
    if ((*(byte *)(param_1_00 + 0x5f0) & 1) != 0) {
      (**(code **)(**(int **)(param_1 + 8) + 0x50))
                (param_1_00 + 0x578,DAT_0323f878 ^ (uint)&stack0xffffffb8);
      FUN_004325b6(L"ABCDEFXj");
      puStack_8 = (undefined *)0x0;
      (**(code **)(**(int **)(param_1 + 8) + 0xa4))(auStack_34,&local_38,&param_2,0,0,0);
      local_38 = param_3 + 10;
      uStack_4 = 0xffffffff;
      _free(pvStack_14);
      if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_2c);
      }
      uStack_18 = 7;
      uStack_1c = 0;
      uStack_2c = uStack_2c & 0xffff0000;
    }
    if ((*(byte *)(param_1_00 + 0x5f0) & 2) != 0) {
      uVar1 = *(uint *)(iVar2 + 4);
      uVar6 = 0;
      if (uVar1 != 0) {
        do {
          if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(iVar2 + 4) <= uVar6)) {
            FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                         "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
          }
          iVar4 = *(int *)(*(int *)(iVar2 + 8) + uVar6 * 4);
          cVar3 = (**(code **)(*(int *)(*(int *)(iVar4 + 0x10) + 0x1a4) + 0x10))();
          if (cVar3 != '\0') {
            iVar4 = *(int *)(*(int *)(iVar4 + 0x10) + 0x1a8);
            if (iVar4 != 0) {
              iVar4 = *(int *)(iVar4 + 0xc);
            }
            if (iVar5 <= iVar4 + 4) {
              iVar5 = iVar4 + 4;
            }
          }
          uVar6 = uVar6 + 1;
        } while (uVar6 < uVar1);
      }
    }
    if (local_38 <= iVar5) {
      local_38 = iVar5;
    }
  }
  ExceptionList = local_c;
  return local_38;
}



void __fastcall FUN_00a3da40(undefined4 *param_1)

{
  *param_1 = wxRibbonArtProvider::vftable;
  return;
}



void __fastcall FUN_00a3da50(undefined4 *param_1)

{
  *param_1 = wxRibbonArtProvider::vftable;
  return;
}



void __thiscall FUN_00a3da60(undefined4 *param_1_00,undefined4 *param_1,float param_2)

{
  *param_1 = *param_1_00;
  param_1[1] = param_1_00[1];
  param_1[2] = (float)param_1_00[2] + param_2;
  return;
}



void __thiscall FUN_00a3da80(undefined4 *param_1_00,undefined4 *param_1,float param_2)

{
  *param_1 = *param_1_00;
  param_1[1] = (float)param_1_00[1] + param_2;
  param_1[2] = param_1_00[2];
  return;
}



void __thiscall FUN_00a3daa0(float *param_1_00,float *param_1,float param_2)

{
  *param_1 = *param_1_00 + param_2;
  param_1[1] = param_1_00[1];
  param_1[2] = param_1_00[2];
  return;
}



undefined4 * __thiscall FUN_00a3dac0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = wxRibbonArtProvider::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00a3dae0(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
                 int param_7,int param_8,int *param_9,int *param_10)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  int iStack_40;
  int iStack_3c;
  uint uStack_38;
  int iStack_34;
  undefined **ppuStack_30;
  int iStack_2c;
  undefined **ppuStack_28;
  undefined **ppuStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  piVar2 = param_9;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf1fa8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar3 = (**(code **)(*param_9 + 0x10))(DAT_0323f878 ^ (uint)&stack0xffffffb0);
  uVar4 = (**(code **)(*param_10 + 0x10))();
  uVar5 = (**(code **)(*param_9 + 0x14))();
  uVar6 = (**(code **)(*param_10 + 0x14))();
  uVar7 = (**(code **)(*param_9 + 0x18))();
  uVar8 = (**(code **)(*param_10 + 0x18))();
  if (0 < param_6) {
    iStack_2c = ((uVar8 & 0xff) - (uVar7 & 0xff)) * 100;
    ppuStack_30 = (undefined **)(((uVar6 & 0xff) - (uVar5 & 0xff)) * 100);
    iStack_34 = ((uVar4 & 0xff) - (uVar3 & 0xff)) * 100;
    iStack_40 = 0;
    param_10 = (int *)0x0;
    param_9 = (int *)0x0;
    iStack_3c = param_6;
    do {
      uVar3 = (**(code **)(*piVar2 + 0x10))();
      uStack_38 = (**(code **)(*piVar2 + 0x14))();
      uStack_38 = uStack_38 & 0xff;
      iVar9 = uStack_38 + ((int)param_10 / param_6) / 100;
      uStack_38 = (**(code **)(*piVar2 + 0x18))();
      uStack_38 = uStack_38 & 0xff;
      iVar10 = uStack_38 + (iStack_40 / param_6) / 100;
      uStack_1c = 0;
      uStack_4 = 0;
      ppuStack_20 = wxColour::vftable;
      FUN_0093b2c0();
      (*(code *)ppuStack_20[10])((uVar3 & 0xff) + ((int)param_9 / param_6) / 100,iVar9,iVar10,0xff);
      uStack_14 = 1;
      FUN_009566f0(&ppuStack_30,1,100);
      uStack_14 = CONCAT31(uStack_14._1_3_,3);
      ppuStack_30 = wxObject::vftable;
      FUN_0083e850();
      (**(code **)(**(int **)((int)local_c + 8) + 0x58))(&uStack_38);
      iVar9 = 0;
      if (0 < param_2) {
        do {
          iVar10 = *(int *)(param_3 + 4 + iVar9 * 8);
          iVar1 = *(int *)(param_3 + iVar9 * 8);
          uStack_38 = iVar1 + param_7;
          (**(code **)(**(int **)(param_1 + 8) + 0x140))
                    (uStack_38,param_8 + iVar10,param_4 + iVar1 + param_7,param_5 + iVar10 + param_8
                    );
          iVar9 = iVar9 + 1;
        } while (iVar9 < param_2);
      }
      param_7 = param_7 + param_4;
      param_8 = param_8 + param_5;
      uStack_4 = 0xffffffff;
      ppuStack_28 = wxObject::vftable;
      FUN_0083e850();
      param_9 = (int *)((int)param_9 + iStack_34);
      param_10 = (int *)((int)param_10 + (int)ppuStack_30);
      iStack_40 = iStack_40 + iStack_2c;
      iStack_3c = iStack_3c + -1;
    } while (iStack_3c != 0);
  }
  ExceptionList = local_c;
  return;
}



float * __thiscall FUN_00a3dd60(float *param_1_00,int *param_1)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  uint uVar6;
  float fStack_c;
  float fStack_8;
  
  uVar6 = (**(code **)(*param_1 + 0x10))();
  fVar1 = (float)(uVar6 & 0xff) / 255.0;
  uVar6 = (**(code **)(*param_1 + 0x14))();
  fVar2 = (float)(uVar6 & 0xff) / 255.0;
  uVar6 = (**(code **)(*param_1 + 0x18))();
  fVar3 = (float)(uVar6 & 0xff) / 255.0;
  fStack_c = fVar3;
  if (fVar2 < fVar3) {
    fStack_c = fVar2;
  }
  fStack_8 = fVar1;
  if (fStack_c <= fVar1) {
    fStack_8 = fStack_c;
  }
  fStack_c = fVar3;
  if (fVar3 < fVar2) {
    fStack_c = fVar2;
  }
  if (fStack_c < fVar1 != (NAN(fStack_c) || NAN(fVar1))) {
    fStack_c = fVar1;
  }
  fVar4 = fStack_8 + fStack_c;
  fVar5 = fVar4 * 0.5;
  param_1_00[2] = fVar5;
  if ((NAN(fStack_c) || NAN(fStack_8)) == (fStack_c == fStack_8)) {
    fStack_8 = fStack_c - fStack_8;
    if (fVar5 < 0.5 == (fVar5 == 0.5)) {
      fVar4 = 2.0 - fVar4;
    }
    param_1_00[1] = fStack_8 / fVar4;
    if ((NAN(fVar1) || NAN(fStack_c)) == (fVar1 == fStack_c)) {
      if ((NAN(fVar2) || NAN(fStack_c)) == (fVar2 == fStack_c)) {
        *param_1_00 = ((fVar1 - fVar2) * 60.0) / fStack_8 + 240.0;
        return param_1_00;
      }
      *param_1_00 = ((fVar3 - fVar1) * 60.0) / fStack_8 + 120.0;
      return param_1_00;
    }
    fStack_8 = ((fVar2 - fVar3) * 60.0) / fStack_8;
    *param_1_00 = fStack_8;
    if (0.0 <= fStack_8) {
      return param_1_00;
    }
    *param_1_00 = fStack_8 + 360.0;
    return param_1_00;
  }
  *param_1_00 = 0.0;
  param_1_00[1] = 0.0;
  return param_1_00;
}



undefined4 __thiscall FUN_00a3df60(float *param_1_00,undefined4 param_1)

{
  float fVar1;
  float fVar2;
  float fVar3;
  float fVar4;
  float fVar5;
  float10 fVar6;
  float local_14;
  float local_10;
  
  fVar1 = *param_1_00;
  fVar6 = (float10)FUN_00a4cda0((double)(fVar1 / 360.0));
  fVar1 = fVar1 - (float)fVar6 * 360.0;
  fVar2 = param_1_00[1];
  local_14 = param_1_00[2];
  if (fVar2 <= 1.0) {
    if (fVar2 < 0.0) {
      fVar2 = 0.0;
    }
  }
  else {
    fVar2 = 1.0;
  }
  if (local_14 <= 1.0) {
    if (local_14 < 0.0 != NAN(local_14)) {
      local_14 = 0.0;
    }
  }
  else {
    local_14 = 1.0;
  }
  local_10 = local_14;
  fVar5 = local_14;
  if (NAN(fVar2) == (fVar2 == 0.0)) {
    if (0.5 <= local_14) {
      fVar2 = (local_14 + fVar2) - local_14 * fVar2;
    }
    else {
      fVar2 = (fVar2 + 1.0) * local_14;
    }
    fVar4 = (local_14 + local_14) - fVar2;
    fVar3 = fVar1 + 120.0;
    if (360.0 < fVar3) {
      fVar3 = fVar3 - 360.0;
    }
    if (60.0 <= fVar3) {
      fVar5 = fVar2;
      if ((180.0 <= fVar3) && (fVar5 = fVar4, fVar3 < 240.0)) {
        fVar5 = ((fVar2 - fVar4) * (240.0 - fVar3)) / 60.0 + fVar4;
      }
    }
    else {
      fVar5 = ((fVar2 - fVar4) * fVar3) / 60.0 + fVar4;
    }
    fVar3 = fVar1;
    if (360.0 < fVar1) {
      fVar3 = fVar1 - 360.0;
    }
    if (fVar3 < 60.0 == NAN(fVar3)) {
      local_10 = fVar2;
      if ((180.0 <= fVar3) && (local_10 = fVar4, fVar3 < 240.0 != NAN(fVar3))) {
        local_10 = ((fVar2 - fVar4) * (240.0 - fVar3)) / 60.0 + fVar4;
      }
    }
    else {
      local_10 = ((fVar2 - fVar4) * fVar3) / 60.0 + fVar4;
    }
    fVar1 = fVar1 + 240.0;
    if (360.0 < fVar1) {
      fVar1 = fVar1 - 360.0;
    }
    if (60.0 <= fVar1) {
      local_14 = fVar2;
      if ((180.0 <= fVar1) && (local_14 = fVar4, fVar1 < 240.0 != NAN(fVar1))) {
        local_14 = fVar4 + ((fVar2 - fVar4) * (240.0 - fVar1)) / 60.0;
      }
    }
    else {
      local_14 = ((fVar2 - fVar4) * fVar1) / 60.0 + fVar4;
    }
  }
  FUN_004561e7((int)ROUND(fVar5 * 255.0) & 0xff,(int)ROUND(local_10 * 255.0) & 0xff,
               (int)ROUND(local_14 * 255.0) & 0xff,0xff);
  return param_1;
}


/*
Unable to decompile 'FUN_00a3e280'
Cause: 
Low-level Error: Cannot properly adjust input varnodes
*/


undefined4
FUN_00a3e360(undefined4 param_1,int *param_2,int *param_3,int param_4,int param_5,int param_6)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  
  if (param_4 <= param_5) {
    FUN_00458700(param_2);
    return param_1;
  }
  if (param_6 <= param_4) {
    FUN_00458700(param_3);
    return param_1;
  }
  param_6 = param_6 - param_5;
  param_4 = param_4 - param_5;
  uVar1 = (**(code **)(*param_2 + 0x10))();
  uVar2 = (**(code **)(*param_3 + 0x10))();
  uVar3 = (**(code **)(*param_2 + 0x14))();
  uVar4 = (**(code **)(*param_3 + 0x14))();
  uVar5 = (**(code **)(*param_2 + 0x18))();
  uVar6 = (**(code **)(*param_3 + 0x18))();
  uVar7 = (**(code **)(*param_2 + 0x10))();
  uVar8 = (**(code **)(*param_2 + 0x14))();
  uVar9 = (**(code **)(*param_2 + 0x18))();
  FUN_004561e7((uVar7 & 0xff) +
               ((int)(((uVar2 & 0xff) - (uVar1 & 0xff)) * param_4 * 100) / param_6) / 100,
               (uVar8 & 0xff) +
               ((int)(((uVar4 & 0xff) - (uVar3 & 0xff)) * param_4 * 100) / param_6) / 100,
               (uVar9 & 0xff) +
               ((int)(((uVar6 & 0xff) - (uVar5 & 0xff)) * param_4 * 100) / param_6) / 100,0xff);
  return param_1;
}



bool FUN_00a3e4e0(undefined4 param_1,undefined4 param_2)

{
  int local_4;
  
  FUN_0081feb2(&local_4,param_2);
  return local_4 == 0x20;
}



undefined * FUN_00a3e500(void)

{
  return &DAT_0323f780;
}



undefined __fastcall FUN_00a3e510(int param_1)

{
  return *(undefined *)(param_1 + 0x228);
}



undefined4 __fastcall FUN_00a3e520(int param_1)

{
  return *(undefined4 *)(param_1 + 0x1a4);
}



undefined4 __fastcall FUN_00a3e530(int param_1)

{
  return *(undefined4 *)(param_1 + 0x21c);
}



undefined4 __fastcall FUN_00a3e540(int param_1)

{
  return *(undefined4 *)(param_1 + 0x220);
}



undefined4 __fastcall FUN_00a3e550(int param_1)

{
  return *(undefined4 *)(param_1 + 0x224);
}



void __thiscall FUN_00a3e5a0(int *param_1_00,int param_1)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  uint uVar4;
  int *piVar5;
  int local_8;
  int local_4;
  
  local_8 = *(int *)(param_1 + 0x2c);
  local_4 = *(int *)(param_1 + 0x30);
  uVar4 = 0;
  param_1_00[0x82] = 0;
  cVar2 = FUN_008f7580(local_8,local_4);
  if (cVar2 == '\0') {
    piVar5 = param_1_00 + 0x76;
    cVar2 = FUN_008f7580(local_8,local_4);
    if (cVar2 == '\0') {
      piVar5 = param_1_00 + 0x7a;
      cVar2 = FUN_008f7580(local_8,local_4);
      if (cVar2 == '\0') {
        piVar5 = param_1_00 + 0x7e;
        cVar2 = FUN_008f7580(local_8,local_4);
        if ((cVar2 == '\0') || (param_1_00[0x89] == 3)) goto LAB_00a3e703;
        param_1_00[0x89] = 2;
      }
      else {
        if (param_1_00[0x88] == 3) goto LAB_00a3e703;
        param_1_00[0x88] = 2;
      }
    }
    else {
      if (param_1_00[0x87] == 3) goto LAB_00a3e703;
      param_1_00[0x87] = 2;
    }
    param_1_00[0x82] = (int)piVar5;
  }
  else {
    if (((int *)param_1_00[0x65] == (int *)0x0) ||
       (uVar3 = (**(code **)(*(int *)param_1_00[0x65] + 0xc))(), (uVar3 & 4) == 0)) {
      local_4 = local_4 + param_1_00[0x85];
    }
    else {
      local_8 = local_8 + param_1_00[0x85];
    }
    uVar3 = param_1_00[0x67];
    if (uVar3 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x67] <= uVar4)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar1 = *(int *)(param_1_00[0x68] + uVar4 * 4);
        if (*(char *)(iVar1 + 0x28) != '\0') {
          cVar2 = FUN_008f7580(local_8,local_4);
          if (cVar2 != '\0') {
            param_1_00[0x6b] = iVar1;
            param_1_00[0x82] = iVar1 + 0x14;
            break;
          }
        }
        uVar4 = uVar4 + 1;
      } while (uVar4 < uVar3);
    }
  }
LAB_00a3e703:
  if (param_1_00[0x82] != 0) {
    (**(code **)(*param_1_00 + 0x15c))(0,0);
  }
  return;
}



void __fastcall FUN_00a3e730(int *param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  int unaff_EBX;
  uint uVar4;
  int unaff_EBP;
  undefined4 uStack_54;
  uint local_50;
  int local_4c;
  undefined4 uStack_48;
  int *piStack_44;
  int iStack_40;
  int iStack_3c;
  int *piStack_38;
  undefined4 uStack_34;
  undefined **local_30 [9];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2028;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  FUN_00957210(param_1);
  local_4 = 0;
  if (param_1[0x65] != 0) {
    (**(code **)(*param_1 + 0x278))(&local_50,&local_4c,uVar2);
    iStack_3c = uStack_54;
    uStack_48 = 0;
    piStack_44 = (int *)0x0;
    iStack_40 = unaff_EBX;
    (**(code **)(*(int *)param_1[0x65] + 0x48))(&piStack_38,param_1,&uStack_48);
    (**(code **)(*(int *)param_1[0x65] + 0x10))(10);
    uVar3 = (**(code **)(*(int *)param_1[0x65] + 0x10))(8);
    (**(code **)(*piStack_44 + 0xb4))(param_1[0x72],param_1[0x73],param_1[0x74],param_1[0x75]);
    uVar2 = (**(code **)(*(int *)param_1[0x65] + 0xc))();
    if ((uVar2 & 4) != 0) {
      uStack_54 = 0;
    }
    uVar2 = param_1[0x67];
    local_50 = 0;
    piStack_44 = (int *)uVar2;
    if (uVar2 != 0) {
      do {
        uVar4 = local_50;
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1[0x67] <= local_50)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0,uVar3);
        }
        iVar1 = *(int *)(param_1[0x68] + uVar4 * 4);
        if (*(char *)(iVar1 + 0x28) != '\0') {
          iStack_40 = *(int *)(iVar1 + 0x14);
          iStack_3c = *(int *)(iVar1 + 0x18);
          piStack_38 = *(int **)(iVar1 + 0x1c);
          uStack_34 = *(undefined4 *)(iVar1 + 0x20);
          if (uStack_54._3_1_ == '\0') {
            iStack_40 = iStack_40 - param_1[0x85];
          }
          else {
            iStack_3c = iStack_3c - param_1[0x85];
          }
          (**(code **)(*(int *)param_1[0x65] + 0x4c))(local_30,param_1,&iStack_40,iVar1);
          (**(code **)(*piStack_38 + 0x164))(iVar1,local_50 + unaff_EBP,local_4c + unaff_EBX,0);
          uVar4 = local_50;
          uVar2 = (uint)piStack_44;
        }
        local_50 = uVar4 + 1;
      } while (local_50 < uVar2);
    }
  }
  local_4 = 0xffffffff;
  local_30[0] = wxAutoBufferedPaintDC::vftable;
  FUN_009475a0();
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall
FUN_00a3e940(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  FUN_0092bd60(param_1,param_2);
  param_1_00[0x18] = param_4;
  *param_1_00 = wxRibbonGalleryEvent::vftable;
  param_1_00[0x17] = param_3;
  return param_1_00;
}



undefined4 * FUN_00a3e970(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(100);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0092bd60(DAT_032bd44c,0);
    *puVar1 = wxRibbonGalleryEvent::vftable;
    puVar1[0x17] = 0;
    puVar1[0x18] = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __thiscall FUN_00a3ea00(int *param_1_00,int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  undefined auStack_8c [3];
  char local_89;
  int local_88;
  int local_84;
  int local_80;
  int local_7c;
  uint local_78;
  undefined **appuStack_74 [2];
  int *piStack_6c;
  uint uStack_48;
  undefined4 uStack_38;
  uint uStack_34;
  void *pvStack_30;
  int *piStack_18;
  int iStack_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2058;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_8c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff64;
  ExceptionList = &local_c;
  iVar4 = *(int *)(param_1 + 0x30);
  local_88 = *(int *)(param_1 + 0x2c);
  local_89 = '\0';
  local_84 = iVar4;
  if (param_1_00[0x87] != 3) {
    cVar1 = FUN_008f7580(local_88,iVar4);
    if (cVar1 == '\0') {
      iVar3 = 0;
    }
    else {
      iVar3 = ((int *)param_1_00[0x82] == param_1_00 + 0x76) + 1;
    }
    if (iVar3 != param_1_00[0x87]) {
      param_1_00[0x87] = iVar3;
      local_89 = '\x01';
    }
  }
  if (param_1_00[0x88] != 3) {
    cVar1 = FUN_008f7580(local_88,iVar4);
    if (cVar1 == '\0') {
      iVar3 = 0;
    }
    else {
      iVar3 = ((int *)param_1_00[0x82] == param_1_00 + 0x7a) + 1;
    }
    if (iVar3 != param_1_00[0x88]) {
      param_1_00[0x88] = iVar3;
      local_89 = '\x01';
    }
  }
  if (param_1_00[0x89] != 3) {
    cVar1 = FUN_008f7580(local_88,iVar4);
    if (cVar1 == '\0') {
      iVar3 = 0;
    }
    else {
      iVar3 = ((int *)param_1_00[0x82] == param_1_00 + 0x7e) + 1;
    }
    if (iVar3 != param_1_00[0x89]) {
      param_1_00[0x89] = iVar3;
      local_89 = '\x01';
    }
  }
  local_80 = 0;
  local_7c = 0;
  cVar1 = FUN_008f7580(local_88,iVar4);
  if (cVar1 != '\0') {
    if (((int *)param_1_00[0x65] == (int *)0x0) ||
       (uVar2 = (**(code **)(*(int *)param_1_00[0x65] + 0xc))(uVar2), (uVar2 & 4) == 0)) {
      iVar4 = param_1_00[0x85] + iVar4;
    }
    else {
      local_88 = local_88 + param_1_00[0x85];
      iVar4 = local_84;
    }
    local_78 = param_1_00[0x67];
    uVar2 = 0;
    if (local_78 != 0) {
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && ((uint)param_1_00[0x67] <= uVar2)) {
          FUN_008402e0("d:\\wxWidgets-2.9.3\\include\\wx/dynarray.h",0x340,
                       "wxBaseArrayPtrVoid::Item","uiIndex < m_nCount",0);
        }
        iVar3 = *(int *)(param_1_00[0x68] + uVar2 * 4);
        if ((*(char *)(iVar3 + 0x28) != '\0') &&
           (cVar1 = FUN_008f7580(local_88,iVar4), cVar1 != '\0')) {
          local_80 = iVar3;
          if (param_1_00[0x82] == iVar3 + 0x14) {
            local_7c = iVar3;
          }
          break;
        }
        uVar2 = uVar2 + 1;
      } while (uVar2 < local_78);
    }
  }
  iVar4 = local_80;
  cVar1 = local_89;
  if (local_7c != param_1_00[0x6b]) {
    param_1_00[0x6b] = local_7c;
    cVar1 = '\x01';
  }
  if (local_80 == param_1_00[0x6a]) {
    if (cVar1 == '\0') goto LAB_00a3ecc3;
  }
  else {
    param_1_00[0x6a] = local_80;
    FUN_0092bd60(DAT_032eb100,param_1_00[0x10]);
    appuStack_74[0] = wxRibbonGalleryEvent::vftable;
    iStack_14 = iVar4;
    uStack_4 = 0;
    piStack_6c = param_1_00;
    piStack_18 = param_1_00;
    (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(appuStack_74);
    uStack_4 = 0xffffffff;
    _free(pvStack_30);
    if (7 < uStack_34) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_48);
    }
    uStack_34 = 7;
    uStack_38 = 0;
    uStack_48 = uStack_48 & 0xffff0000;
    appuStack_74[0] = wxObject::vftable;
    FUN_0083e850();
  }
  (**(code **)(*param_1_00 + 0x15c))(0,0);
LAB_00a3ecc3:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00a3ecf0(int *param_1)

{
  uint uVar1;
  undefined **local_74 [2];
  int *local_6c;
  uint uStack_48;
  undefined4 uStack_38;
  uint uStack_34;
  void *pvStack_30;
  int *local_18;
  void *local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2098;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_74;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff84;
  ExceptionList = &local_c;
  *(undefined *)(param_1 + 0x8a) = 0;
  param_1[0x6b] = 0;
  if (param_1[0x87] != 3) {
    param_1[0x87] = 0;
  }
  if (param_1[0x88] != 3) {
    param_1[0x88] = 0;
  }
  if (param_1[0x89] != 3) {
    param_1[0x89] = 0;
  }
  if (param_1[0x6a] != 0) {
    param_1[0x6a] = 0;
    FUN_0092bd60(DAT_032eb100,param_1[0x10]);
    local_74[0] = wxRibbonGalleryEvent::vftable;
    local_14 = (void *)0x0;
    local_4 = 0;
    local_6c = param_1;
    local_18 = param_1;
    (**(code **)(*(int *)param_1[0x1c] + 0x18))(local_74);
    local_4 = 0xffffffff;
    _free(pvStack_30);
    if (7 < uStack_34) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_48);
    }
    uStack_34 = 7;
    uStack_38 = 0;
    uStack_48 = uStack_48 & 0xffff0000;
    local_74[0] = wxObject::vftable;
    FUN_0083e850();
  }
  (**(code **)(*param_1 + 0x15c))(0,0,uVar1);
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a3ee30(int *param_1_00,int param_1)

{
  int *piVar1;
  code *pcVar2;
  char cVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  undefined auStack_134 [8];
  int *piStack_12c;
  int *piStack_d8;
  int iStack_d4;
  undefined auStack_d0 [8];
  int *piStack_c8;
  int *piStack_74;
  int iStack_70;
  undefined auStack_6c [8];
  int *piStack_64;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf20de;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_134;
  ExceptionList = &local_c;
  if (param_1_00[0x82] == 0) goto LAB_00a3f07a;
  iVar6 = *(int *)(param_1 + 0x30);
  iVar5 = *(int *)(param_1 + 0x2c);
  if (param_1_00[0x6b] != 0) {
    if ((int *)param_1_00[0x65] != (int *)0x0) {
      uVar4 = (**(code **)(*(int *)param_1_00[0x65] + 0xc))(DAT_0323f878 ^ (uint)&stack0xfffffebc);
      if ((uVar4 & 4) != 0) {
        iVar5 = iVar5 + param_1_00[0x85];
        goto LAB_00a3eeb7;
      }
    }
    iVar6 = param_1_00[0x85] + iVar6;
  }
LAB_00a3eeb7:
  cVar3 = FUN_008f7580(iVar5,iVar6);
  if (cVar3 != '\0') {
    piVar1 = (int *)param_1_00[0x82];
    if (piVar1 == param_1_00 + 0x76) {
      pcVar2 = *(code **)(*param_1_00 + 0x1c0);
      param_1_00[0x87] = 1;
      (*pcVar2)(0xffffffff);
    }
    else if (piVar1 == param_1_00 + 0x7a) {
      pcVar2 = *(code **)(*param_1_00 + 0x1c0);
      param_1_00[0x88] = 1;
      (*pcVar2)(1);
    }
    else if (piVar1 == param_1_00 + 0x7e) {
      param_1_00[0x89] = 1;
      FUN_0092bd60(DAT_032bfdb8,param_1_00[0x10]);
      uStack_4 = 0;
      piStack_64 = param_1_00;
      (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(auStack_6c);
      puStack_8 = (undefined *)0xffffffff;
      FUN_00454a4e();
    }
    else {
      iVar6 = param_1_00[0x6b];
      if (iVar6 != 0) {
        if (param_1_00[0x69] != iVar6) {
          param_1_00[0x69] = iVar6;
          FUN_00a3e940(DAT_032eb104,param_1_00[0x10],0,0);
          iStack_d4 = param_1_00[0x69];
          uStack_4 = 1;
          piStack_12c = param_1_00;
          piStack_d8 = param_1_00;
          (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(auStack_134);
          uStack_4 = 0xffffffff;
          FUN_00a1f4e0();
        }
        FUN_00a3e940(DAT_032eb108,param_1_00[0x10],0,0);
        iStack_70 = param_1_00[0x69];
        uStack_4 = 2;
        piStack_c8 = param_1_00;
        piStack_74 = param_1_00;
        (**(code **)(*(int *)param_1_00[0x1c] + 0x18))(auStack_d0);
        uStack_4 = 0xffffffff;
        FUN_00a1f4e0();
      }
    }
  }
  param_1_00[0x82] = 0;
  param_1_00[0x6b] = 0;
  (**(code **)(*param_1_00 + 0x15c))(0,0);
LAB_00a3f07a:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 * __fastcall FUN_00a3f0d0(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(100);
  local_4 = 0;
  puVar2 = (undefined4 *)0x0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_0048a2df(param_1);
    *puVar1 = wxRibbonGalleryEvent::vftable;
    puVar1[0x17] = *(undefined4 *)(param_1 + 0x5c);
    puVar1[0x18] = *(undefined4 *)(param_1 + 0x60);
    puVar2 = puVar1;
  }
  ExceptionList = local_c;
  return puVar2;
}



// Library Function - Single Match
//  @__security_check_cookie@4
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release

void __fastcall ___security_check_cookie_4(int param_1)

{
  if (param_1 == DAT_0323f878) {
    return;
  }
                    // WARNING: Subroutine does not return
  ___report_gsfailure();
}



// Library Function - Single Match
//  _memmove_s
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

errno_t __cdecl _memmove_s(void *_Dst,rsize_t _DstSize,void *_Src,rsize_t _MaxCount)

{
  int *piVar1;
  errno_t eVar2;
  
  if (_MaxCount == 0) {
LAB_00a3f1a3:
    eVar2 = 0;
  }
  else {
    if ((_Dst == (void *)0x0) || (_Src == (void *)0x0)) {
      piVar1 = __errno();
      eVar2 = 0x16;
      *piVar1 = 0x16;
    }
    else {
      if (_MaxCount <= _DstSize) {
        _memmove(_Dst,_Src,_MaxCount);
        goto LAB_00a3f1a3;
      }
      piVar1 = __errno();
      eVar2 = 0x22;
      *piVar1 = 0x22;
    }
    __invalid_parameter(0,0,0,0,0);
  }
  return eVar2;
}



void __fastcall FUN_00a3f1a9(undefined4 *param_1)

{
  param_1[1] = 0;
  param_1[2] = 0;
  *param_1 = std::exception::vftable;
  return;
}



// Library Function - Single Match
//  public: __thiscall std::exception::exception(char const * const &)
// 
// Library: Visual Studio 2008 Release

exception * __thiscall std::exception::exception(exception *this,char **param_1)

{
  size_t sVar1;
  char *_Dst;
  
  *(undefined ***)this = vftable;
  if (*param_1 == (char *)0x0) {
    *(undefined4 *)(this + 4) = 0;
  }
  else {
    sVar1 = _strlen(*param_1);
    _Dst = (char *)_malloc(sVar1 + 1);
    *(char **)(this + 4) = _Dst;
    if (_Dst != (char *)0x0) {
      _strcpy_s(_Dst,sVar1 + 1,*param_1);
    }
  }
  *(undefined4 *)(this + 8) = 1;
  return this;
}



// Library Function - Single Match
//  public: __thiscall std::exception::exception(char const * const &,int)
// 
// Library: Visual Studio 2008 Release

void __thiscall std::exception::exception(exception *this,char **param_1,int param_2)

{
  char *pcVar1;
  
  *(undefined ***)this = vftable;
  pcVar1 = *param_1;
  *(undefined4 *)(this + 8) = 0;
  *(char **)(this + 4) = pcVar1;
  return;
}



// Library Function - Single Match
//  public: __thiscall std::exception::exception(class std::exception const &)
// 
// Library: Visual Studio 2008 Release

exception * __thiscall std::exception::exception(exception *this,exception *param_1)

{
  int iVar1;
  size_t sVar2;
  char *pcVar3;
  
  *(undefined ***)this = vftable;
  iVar1 = *(int *)(param_1 + 8);
  *(int *)(this + 8) = iVar1;
  pcVar3 = *(char **)(param_1 + 4);
  if (iVar1 == 0) {
    *(char **)(this + 4) = pcVar3;
  }
  else if (pcVar3 == (char *)0x0) {
    *(undefined4 *)(this + 4) = 0;
  }
  else {
    sVar2 = _strlen(pcVar3);
    pcVar3 = (char *)_malloc(sVar2 + 1);
    *(char **)(this + 4) = pcVar3;
    if (pcVar3 != (char *)0x0) {
      _strcpy_s(pcVar3,sVar2 + 1,*(char **)(param_1 + 4));
    }
  }
  return this;
}



// Library Function - Single Match
//  public: virtual __thiscall exception::~exception(void)
// 
// Library: Visual Studio 2003 Release

void __thiscall exception::~exception(exception *this)

{
  *(undefined ***)this = std::exception::vftable;
  if (*(int *)(this + 8) != 0) {
    _free(*(void **)(this + 4));
  }
  return;
}



char * __fastcall FUN_00a3f29d(int param_1)

{
  char *pcVar1;
  
  pcVar1 = *(char **)(param_1 + 4);
  if (pcVar1 == (char *)0x0) {
    pcVar1 = "Unknown exception";
  }
  return pcVar1;
}



// Library Function - Single Match
//  public: __thiscall std::bad_cast::bad_cast(char const *)
// 
// Library: Visual Studio 2008 Release

bad_cast * __thiscall std::bad_cast::bad_cast(bad_cast *this,char *param_1)

{
  exception::exception((exception *)this,&param_1);
  *(undefined ***)this = vftable;
  return this;
}



undefined4 * __thiscall FUN_00a3f2c8(undefined4 *param_1_00,exception *param_1)

{
  std::exception::exception((exception *)param_1_00,param_1);
  *param_1_00 = std::bad_cast::vftable;
  return param_1_00;
}



void __fastcall FUN_00a3f2e5(undefined4 *param_1)

{
  *param_1 = std::bad_cast::vftable;
  exception::~exception((exception *)param_1);
  return;
}



// Library Function - Single Match
//  public: __thiscall std::bad_typeid::bad_typeid(char const *)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release

bad_typeid * __thiscall std::bad_typeid::bad_typeid(bad_typeid *this,char *param_1)

{
  exception::exception((exception *)this,&param_1);
  *(undefined ***)this = vftable;
  return this;
}



undefined4 * __thiscall FUN_00a3f30e(undefined4 *param_1_00,exception *param_1)

{
  std::exception::exception((exception *)param_1_00,param_1);
  *param_1_00 = std::bad_typeid::vftable;
  return param_1_00;
}



// Library Function - Single Match
//  public: __thiscall std::__non_rtti_object::__non_rtti_object(char const *)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release

__non_rtti_object * __thiscall
std::__non_rtti_object::__non_rtti_object(__non_rtti_object *this,char *param_1)

{
  bad_typeid::bad_typeid((bad_typeid *)this,param_1);
  *(undefined ***)this = vftable;
  return this;
}



undefined4 * __thiscall FUN_00a3f348(undefined4 *param_1_00,undefined4 param_1)

{
  FUN_00a3f30e(param_1);
  *param_1_00 = std::__non_rtti_object::vftable;
  return param_1_00;
}



exception * __thiscall FUN_00a3f370(exception *param_1_00,byte param_1)

{
  exception::~exception(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00a3f391(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::bad_cast::vftable;
  exception::~exception((exception *)param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00a3f3b8(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::bad_typeid::vftable;
  exception::~exception((exception *)param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _free
// 
// Library: Visual Studio 2008 Release

void __cdecl _free(void *_Memory)

{
  int iVar1;
  BOOL BVar2;
  int *piVar3;
  DWORD DVar4;
  
  if (_Memory != (void *)0x0) {
    if (DAT_032f181c == 3) {
      __lock(4);
      iVar1 = ___sbh_find_block(_Memory);
      if (iVar1 != 0) {
        ___sbh_free_block(iVar1,_Memory);
      }
      FUN_00a3f435();
      if (iVar1 != 0) {
        return;
      }
    }
    BVar2 = HeapFree(DAT_032eb654,0,_Memory);
    if (BVar2 == 0) {
      piVar3 = __errno();
      DVar4 = GetLastError();
      iVar1 = __get_errno_from_oserr(DVar4);
      *piVar3 = iVar1;
    }
  }
  return;
}



void FUN_00a3f435(void)

{
  FUN_00a4d824(4);
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  void __stdcall __ArrayUnwind(void *,unsigned int,int,void (__thiscall*)(void *))
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release

void __ArrayUnwind(void *param_1,uint param_2,int param_3,_func_void_void_ptr *param_4)

{
  void *in_stack_ffffffc8;
  
  while( true ) {
    param_3 = param_3 + -1;
    if (param_3 < 0) break;
    (*param_4)(in_stack_ffffffc8);
  }
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  void __stdcall `eh vector destructor iterator'(void *,unsigned int,int,void (__thiscall*)(void
// *))
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release

void _eh_vector_destructor_iterator_
               (void *param_1,uint param_2,int param_3,_func_void_void_ptr *param_4)

{
  void *in_stack_ffffffd0;
  
  while( true ) {
    param_3 = param_3 + -1;
    if (param_3 < 0) break;
    (*param_4)(in_stack_ffffffd0);
  }
  FUN_00a3f516();
  return;
}



void FUN_00a3f516(void)

{
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + -0x1c) == 0) {
    __ArrayUnwind(*(void **)(unaff_EBP + 8),*(uint *)(unaff_EBP + 0xc),*(int *)(unaff_EBP + 0x10),
                  *(_func_void_void_ptr **)(unaff_EBP + 0x14));
  }
  return;
}



// Library Function - Single Match
//  __onexit_nolock
// 
// Library: Visual Studio 2008 Release

undefined4 __onexit_nolock(undefined4 param_1)

{
  undefined4 *_Memory;
  undefined4 *puVar1;
  size_t sVar2;
  size_t sVar3;
  void *pvVar4;
  undefined4 uVar5;
  int iVar6;
  
  _Memory = (undefined4 *)__decode_pointer(DAT_032f284c);
  puVar1 = (undefined4 *)__decode_pointer(DAT_032f2848);
  if ((puVar1 < _Memory) || (iVar6 = (int)puVar1 - (int)_Memory, iVar6 + 4U < 4)) {
    return 0;
  }
  sVar2 = __msize(_Memory);
  if (sVar2 < iVar6 + 4U) {
    sVar3 = 0x800;
    if (sVar2 < 0x800) {
      sVar3 = sVar2;
    }
    if ((sVar3 + sVar2 < sVar2) ||
       (pvVar4 = __realloc_crt(_Memory,sVar3 + sVar2), pvVar4 == (void *)0x0)) {
      if (sVar2 + 0x10 < sVar2) {
        return 0;
      }
      pvVar4 = __realloc_crt(_Memory,sVar2 + 0x10);
      if (pvVar4 == (void *)0x0) {
        return 0;
      }
    }
    puVar1 = (undefined4 *)((int)pvVar4 + (iVar6 >> 2) * 4);
    DAT_032f284c = __encode_pointer(pvVar4);
  }
  uVar5 = __encode_pointer(param_1);
  *puVar1 = uVar5;
  DAT_032f2848 = __encode_pointer(puVar1 + 1);
  return param_1;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __onexit
// 
// Library: Visual Studio 2008 Release

_onexit_t __cdecl __onexit(_onexit_t _Func)

{
  _onexit_t p_Var1;
  
  FUN_00a4734d();
  p_Var1 = (_onexit_t)__onexit_nolock(_Func);
  FUN_00a3f64f();
  return p_Var1;
}



void FUN_00a3f64f(void)

{
  FUN_00a47356();
  return;
}



// Library Function - Single Match
//  _atexit
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl _atexit(_func_4879 *param_1)

{
  _onexit_t p_Var1;
  
  p_Var1 = __onexit((_onexit_t)param_1);
  return (p_Var1 != (_onexit_t)0x0) - 1;
}



void FUN_00a3f66c(void)

{
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



// Library Function - Single Match
//  __purecall
// 
// Library: Visual Studio 2008 Release

void __purecall(void)

{
  code *pcVar1;
  
  pcVar1 = (code *)__decode_pointer(DAT_032ebadc);
  if (pcVar1 != (code *)0x0) {
    (*pcVar1)();
  }
  __NMSG_WRITE(0x19);
  __set_abort_behavior(0,1);
                    // WARNING: Subroutine does not return
  _abort();
}



void FUN_00a3f6a1(void *param_1)

{
  _free(param_1);
  return;
}



// Library Function - Single Match
//  _memcpy_s
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

errno_t __cdecl _memcpy_s(void *_Dst,rsize_t _DstSize,void *_Src,rsize_t _MaxCount)

{
  errno_t eVar1;
  int *piVar2;
  
  if (_MaxCount == 0) {
LAB_00a3f6bc:
    eVar1 = 0;
  }
  else {
    if (_Dst == (void *)0x0) {
LAB_00a3f6c5:
      piVar2 = __errno();
      eVar1 = 0x16;
      *piVar2 = 0x16;
    }
    else {
      if ((_Src != (void *)0x0) && (_MaxCount <= _DstSize)) {
        _memcpy(_Dst,_Src,_MaxCount);
        goto LAB_00a3f6bc;
      }
      _memset(_Dst,0,_DstSize);
      if (_Src == (void *)0x0) goto LAB_00a3f6c5;
      if (_MaxCount <= _DstSize) {
        return 0x16;
      }
      piVar2 = __errno();
      eVar1 = 0x22;
      *piVar2 = 0x22;
    }
    __invalid_parameter(0,0,0,0,0);
  }
  return eVar1;
}



// Library Function - Single Match
//  public: char const * __thiscall type_info::name(struct __type_info_node *)const 
// 
// Library: Visual Studio 2008 Release

char * __thiscall type_info::name(type_info *this,__type_info_node *param_1)

{
  char *pcVar1;
  
  pcVar1 = _Name_base(this,param_1);
  return pcVar1;
}



// Library Function - Single Match
//  public: virtual __thiscall type_info::~type_info(void)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release

void __thiscall type_info::~type_info(type_info *this)

{
  *(undefined ***)this = vftable;
  _Type_info_dtor(this);
  return;
}



type_info * __thiscall FUN_00a3f74d(type_info *param_1_00,byte param_1)

{
  type_info::~type_info(param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Single Match
//  public: bool __thiscall type_info::operator==(class type_info const &)const 
// 
// Library: Visual Studio 2008 Release

bool __thiscall type_info::operator==(type_info *this,type_info *param_1)

{
  int iVar1;
  
  iVar1 = _strcmp((char *)(param_1 + 9),(char *)(this + 9));
  return (bool)('\x01' - (iVar1 != 0));
}



// Library Function - Single Match
//  public: bool __thiscall type_info::operator!=(class type_info const &)const 
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

bool __thiscall type_info::operator!=(type_info *this,type_info *param_1)

{
  int iVar1;
  
  iVar1 = _strcmp((char *)(param_1 + 9),(char *)(this + 9));
  return iVar1 != 0;
}



// Library Function - Single Match
//  public: int __thiscall type_info::before(class type_info const &)const 
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __thiscall type_info::before(type_info *this,type_info *param_1)

{
  int iVar1;
  
  iVar1 = _strcmp((char *)(param_1 + 9),(char *)(this + 9));
  return (uint)(0 < iVar1);
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  void * __cdecl operator new(unsigned int)
// 
// Library: Visual Studio 2008 Release

void * __cdecl operator_new(uint param_1)

{
  code *pcVar1;
  int iVar2;
  void *pvVar3;
  undefined local_10 [12];
  
  do {
    pvVar3 = _malloc(param_1);
    if (pvVar3 != (void *)0x0) {
      return pvVar3;
    }
    iVar2 = __callnewh(param_1);
  } while (iVar2 != 0);
  if ((_DAT_032eb1fc & 1) == 0) {
    _DAT_032eb1fc = _DAT_032eb1fc | 1;
    std::bad_alloc::bad_alloc((bad_alloc *)&DAT_032eb1f0);
    _atexit((_func_4879 *)&LAB_00c79824);
  }
  FUN_00401da3(&DAT_032eb1f0);
  __CxxThrowException_8(local_10,&DAT_031153a4);
  pcVar1 = (code *)swi(3);
  pvVar3 = (void *)(*pcVar1)();
  return pvVar3;
}



// Library Function - Single Match
//  _sprintf
// 
// Library: Visual Studio 2008 Release

int __cdecl _sprintf(char *_Dest,char *_Format,...)

{
  int *piVar1;
  int iVar2;
  FILE local_24;
  
  if ((_Format == (char *)0x0) || (_Dest == (char *)0x0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    iVar2 = -1;
  }
  else {
    local_24._base = _Dest;
    local_24._ptr = _Dest;
    local_24._cnt = 0x7fffffff;
    local_24._flag = 0x42;
    iVar2 = __output_l(&local_24,_Format,(_locale_t)0x0,&stack0x0000000c);
    local_24._cnt = local_24._cnt + -1;
    if (local_24._cnt < 0) {
      __flsbuf(0,&local_24);
    }
    else {
      *local_24._ptr = '\0';
    }
  }
  return iVar2;
}



// Library Function - Single Match
//  _sprintf_s
// 
// Library: Visual Studio 2008 Release

int __cdecl _sprintf_s(char *_DstBuf,size_t _SizeInBytes,char *_Format,...)

{
  int iVar1;
  
  iVar1 = __vsprintf_s_l(_DstBuf,_SizeInBytes,_Format,(_locale_t)0x0,&stack0x00000010);
  return iVar1;
}



// Library Function - Single Match
//  _memchr
// 
// Library: Visual Studio 2008 Release

void * __cdecl _memchr(void *_Buf,int _Val,size_t _MaxCount)

{
  uint uVar1;
  uint uVar2;
  uint *puVar3;
  char cVar4;
  uint uVar5;
  bool bVar6;
  
  if (_MaxCount != 0) {
    uVar5 = _Val & 0xff;
    uVar2 = (uint)_Buf & 3;
    while (uVar2 != 0) {
                    // WARNING: Load size is inaccurate
      cVar4 = *_Buf;
      _Buf = (void *)((int)_Buf + 1);
      if (cVar4 == (char)_Val) goto LAB_00a3f976;
      _MaxCount = _MaxCount - 1;
      if (_MaxCount == 0) {
        return (void *)0x0;
      }
      uVar2 = (uint)_Buf & 3;
    }
    uVar2 = _MaxCount - 4;
    if (3 < _MaxCount) {
      uVar5 = uVar5 * 0x1010101;
      puVar3 = (uint *)_Buf;
      do {
        _Buf = puVar3 + 1;
        if (((*puVar3 ^ uVar5 ^ 0xffffffff ^ (*puVar3 ^ uVar5) + 0x7efefeff) & 0x81010100) != 0) {
          uVar1 = *puVar3;
          cVar4 = (char)uVar5;
          if ((char)uVar1 == cVar4) {
            return puVar3;
          }
          if ((char)(uVar1 >> 8) == cVar4) {
            return (char *)((int)puVar3 + 1);
          }
          if ((char)(uVar1 >> 0x10) == cVar4) {
            return (char *)((int)puVar3 + 2);
          }
          if ((char)(uVar1 >> 0x18) == cVar4) goto LAB_00a3f976;
        }
        bVar6 = 3 < uVar2;
        uVar2 = uVar2 - 4;
        puVar3 = (uint *)_Buf;
      } while (bVar6);
    }
    for (_MaxCount = uVar2 + 4; (void *)_MaxCount != (void *)0x0; _MaxCount = _MaxCount + -1) {
                    // WARNING: Load size is inaccurate
      cVar4 = *_Buf;
      _Buf = (void *)((int)_Buf + 1);
      if (cVar4 == (char)uVar5) {
LAB_00a3f976:
        return (char *)((int)_Buf + -1);
      }
    }
  }
  return (void *)_MaxCount;
}



// Library Function - Single Match
//  _localeconv
// 
// Library: Visual Studio 2008 Release

lconv * __cdecl _localeconv(void)

{
  _ptiddata p_Var1;
  
  p_Var1 = __getptd();
  if ((p_Var1->ptlocinfo != (pthreadlocinfo)PTR_DAT_03240170) &&
     ((p_Var1->_ownlocale & DAT_03240088) == 0)) {
    ___updatetlocinfo();
  }
  return (lconv *)PTR_PTR_DAT_0323f854;
}



void FUN_00a3f9b3(undefined4 param_1)

{
  DAT_032eb204 = param_1;
  return;
}



// Library Function - Single Match
//  __invoke_watson
// 
// Library: Visual Studio 2008 Release

void __cdecl
__invoke_watson(wchar_t *param_1,wchar_t *param_2,wchar_t *param_3,uint param_4,uintptr_t param_5)

{
  BOOL BVar1;
  LONG LVar2;
  HANDLE hProcess;
  UINT uExitCode;
  EXCEPTION_RECORD local_32c;
  _EXCEPTION_POINTERS local_2dc;
  undefined4 local_2d4;
  
  local_32c.ExceptionCode = 0;
  _memset(&local_32c.ExceptionFlags,0,0x4c);
  local_2dc.ExceptionRecord = &local_32c;
  local_2dc.ContextRecord = (PCONTEXT)&local_2d4;
  local_2d4 = 0x10001;
  local_32c.ExceptionCode = 0xc0000417;
  local_32c.ExceptionFlags = 1;
  BVar1 = IsDebuggerPresent();
  SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)0x0);
  LVar2 = UnhandledExceptionFilter(&local_2dc);
  if ((LVar2 == 0) && (BVar1 == 0)) {
    FUN_00a50065();
  }
  uExitCode = 0xc0000417;
  hProcess = GetCurrentProcess();
  TerminateProcess(hProcess,uExitCode);
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  __invalid_parameter
// 
// Library: Visual Studio 2008 Release

void __invalid_parameter(wchar_t *param_1,wchar_t *param_2,wchar_t *param_3,uint param_4,
                        uintptr_t param_5)

{
  code *UNRECOVERED_JUMPTABLE;
  
  UNRECOVERED_JUMPTABLE = (code *)__decode_pointer(DAT_032eb204);
  if (UNRECOVERED_JUMPTABLE != (code *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00a3fb00. Too many branches
                    // WARNING: Treating indirect jump as call
    (*UNRECOVERED_JUMPTABLE)();
    return;
  }
  FUN_00a50065(2);
                    // WARNING: Subroutine does not return
  __invoke_watson(param_1,param_2,param_3,param_4,param_5);
}



void FUN_00a3fb10(void)

{
  __invalid_parameter(0,0,0,0,0);
  return;
}



// Library Function - Single Match
//  _strcspn
// 
// Library: Visual Studio 2008 Release

size_t __cdecl _strcspn(char *_Str,char *_Control)

{
  byte bVar1;
  byte *pbVar2;
  size_t sVar3;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0;
  uStack_10 = 0;
  uStack_14 = 0;
  uStack_18 = 0;
  uStack_1c = 0;
  uStack_20 = 0;
  uStack_24 = 0;
  uStack_28 = 0;
  while( true ) {
    bVar1 = *_Control;
    if (bVar1 == 0) break;
    _Control = (char *)((byte *)_Control + 1);
    pbVar2 = (byte *)((int)&uStack_28 + ((int)(uint)bVar1 >> 3));
    *pbVar2 = *pbVar2 | '\x01' << (bVar1 & 7);
  }
  sVar3 = 0xffffffff;
  do {
    sVar3 = sVar3 + 1;
    bVar1 = *_Str;
    if (bVar1 == 0) {
      return sVar3;
    }
    _Str = (char *)((byte *)_Str + 1);
  } while ((*(byte *)((int)&uStack_28 + ((int)(uint)bVar1 >> 3)) >> (bVar1 & 7) & 1) == 0);
  return sVar3;
}



// Library Function - Single Match
//  _fast_error_exit
// 
// Library: Visual Studio 2008 Release

void _fast_error_exit(int param_1)

{
  if (DAT_032eb210 == 1) {
    __FF_MSGBANNER();
  }
  __NMSG_WRITE(param_1);
  ___crtExitProcess(0xff);
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00a3fbf6)
// Library Function - Single Match
//  ___tmainCRTStartup
// 
// Library: Visual Studio 2008 Release

int ___tmainCRTStartup(void)

{
  int iVar1;
  undefined4 uVar2;
  undefined local_6c [48];
  WORD local_3c;
  int local_24;
  int local_20;
  undefined4 uStack_c;
  undefined4 local_8;
  
  uStack_c = 0xa3fb9b;
  local_8 = 0;
  GetStartupInfoA((LPSTARTUPINFOA)local_6c);
  local_8 = 0xfffffffe;
  local_20 = 0;
  iVar1 = __heap_init();
  if (iVar1 == 0) {
    _fast_error_exit(0x1c);
  }
  iVar1 = __mtinit();
  if (iVar1 == 0) {
    _fast_error_exit(0x10);
  }
  __RTC_Initialize();
  local_8 = 1;
  iVar1 = __ioinit();
  if (iVar1 < 0) {
    __amsg_exit(0x1b);
  }
  DAT_032f2858 = GetCommandLineA();
  DAT_032eb208 = ___crtGetEnvironmentStringsA();
  iVar1 = __setargv();
  if (iVar1 < 0) {
    __amsg_exit(8);
  }
  iVar1 = __setenvp();
  if (iVar1 < 0) {
    __amsg_exit(9);
  }
  iVar1 = __cinit(1);
  if (iVar1 != 0) {
    __amsg_exit(iVar1);
  }
  uVar2 = __wincmdln();
  if ((local_6c[0x2c] & 1) == 0) {
    local_3c = 10;
  }
  local_24 = FUN_004183fa(0x400000,0,uVar2,local_3c);
  if (local_20 != 0) {
    __cexit();
    return local_24;
  }
                    // WARNING: Subroutine does not return
  _exit(local_24);
}



void entry(void)

{
  ___security_init_cookie();
  ___tmainCRTStartup();
  return;
}



// Library Function - Single Match
//  _rand
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release, Visual Studio 2008 Release

int __cdecl _rand(void)

{
  _ptiddata p_Var1;
  uint uVar2;
  
  p_Var1 = __getptd();
  uVar2 = p_Var1->_holdrand * 0x343fd + 0x269ec3;
  p_Var1->_holdrand = uVar2;
  return uVar2 >> 0x10 & 0x7fff;
}



// Library Function - Single Match
//  public: __thiscall _LocaleUpdate::_LocaleUpdate(struct localeinfo_struct *)
// 
// Library: Visual Studio 2008 Release

_LocaleUpdate * __thiscall
_LocaleUpdate::_LocaleUpdate(_LocaleUpdate *this,localeinfo_struct *param_1)

{
  uint *puVar1;
  _ptiddata p_Var2;
  pthreadlocinfo ptVar3;
  pthreadmbcinfo ptVar4;
  
  this[0xc] = (_LocaleUpdate)0x0;
  if (param_1 == (localeinfo_struct *)0x0) {
    p_Var2 = __getptd();
    *(_ptiddata *)(this + 8) = p_Var2;
    *(pthreadlocinfo *)this = p_Var2->ptlocinfo;
    *(pthreadmbcinfo *)(this + 4) = p_Var2->ptmbcinfo;
    if ((*(undefined **)this != PTR_DAT_03240170) && ((p_Var2->_ownlocale & DAT_03240088) == 0)) {
      ptVar3 = ___updatetlocinfo();
      *(pthreadlocinfo *)this = ptVar3;
    }
    if ((*(undefined **)(this + 4) != PTR_DAT_032405f8) &&
       ((*(uint *)(*(int *)(this + 8) + 0x70) & DAT_03240088) == 0)) {
      ptVar4 = ___updatetmbcinfo();
      *(pthreadmbcinfo *)(this + 4) = ptVar4;
    }
    if ((*(byte *)(*(int *)(this + 8) + 0x70) & 2) == 0) {
      puVar1 = (uint *)(*(int *)(this + 8) + 0x70);
      *puVar1 = *puVar1 | 2;
      this[0xc] = (_LocaleUpdate)0x1;
    }
  }
  else {
    *(pthreadlocinfo *)this = param_1->locinfo;
    *(pthreadmbcinfo *)(this + 4) = param_1->mbcinfo;
  }
  return this;
}



// Library Function - Single Match
//  __isalpha_l
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl __isalpha_l(int _C,_locale_t _Locale)

{
  uint uVar1;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
  if ((int)(local_14.locinfo)->locale_name[3] < 2) {
    uVar1 = *(ushort *)(local_14.locinfo[1].lc_category[0].locale + _C * 2) & 0x103;
  }
  else {
    uVar1 = __isctype_l(_C,0x103,&local_14);
  }
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return uVar1;
}



// Library Function - Single Match
//  _isalpha
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl _isalpha(int _C)

{
  int iVar1;
  
  if (DAT_032eb230 == 0) {
    return *(ushort *)(PTR_DAT_03240160 + _C * 2) & 0x103;
  }
  iVar1 = __isalpha_l(_C,(_locale_t)0x0);
  return iVar1;
}



// Library Function - Single Match
//  __isupper_l
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl __isupper_l(int _C,_locale_t _Locale)

{
  uint uVar1;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
  if ((int)(local_14.locinfo)->locale_name[3] < 2) {
    uVar1 = *(ushort *)(local_14.locinfo[1].lc_category[0].locale + _C * 2) & 1;
  }
  else {
    uVar1 = __isctype_l(_C,1,&local_14);
  }
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return uVar1;
}



// Library Function - Single Match
//  _isupper
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl _isupper(int _C)

{
  int iVar1;
  
  if (DAT_032eb230 == 0) {
    return *(ushort *)(PTR_DAT_03240160 + _C * 2) & 1;
  }
  iVar1 = __isupper_l(_C,(_locale_t)0x0);
  return iVar1;
}



// Library Function - Single Match
//  __islower_l
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl __islower_l(int _C,_locale_t _Locale)

{
  uint uVar1;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
  if ((int)(local_14.locinfo)->locale_name[3] < 2) {
    uVar1 = *(ushort *)(local_14.locinfo[1].lc_category[0].locale + _C * 2) & 2;
  }
  else {
    uVar1 = __isctype_l(_C,2,&local_14);
  }
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return uVar1;
}



// Library Function - Single Match
//  _islower
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl _islower(int _C)

{
  int iVar1;
  
  if (DAT_032eb230 == 0) {
    return *(ushort *)(PTR_DAT_03240160 + _C * 2) & 2;
  }
  iVar1 = __islower_l(_C,(_locale_t)0x0);
  return iVar1;
}



// Library Function - Single Match
//  __isdigit_l
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl __isdigit_l(int _C,_locale_t _Locale)

{
  uint uVar1;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
  if ((int)(local_14.locinfo)->locale_name[3] < 2) {
    uVar1 = *(ushort *)(local_14.locinfo[1].lc_category[0].locale + _C * 2) & 4;
  }
  else {
    uVar1 = __isctype_l(_C,4,&local_14);
  }
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return uVar1;
}



// Library Function - Single Match
//  _isdigit
// 
// Library: Visual Studio 2008 Release

int __cdecl _isdigit(int _C)

{
  int iVar1;
  
  if (DAT_032eb230 == 0) {
    return *(ushort *)(PTR_DAT_03240160 + _C * 2) & 4;
  }
  iVar1 = __isdigit_l(_C,(_locale_t)0x0);
  return iVar1;
}



// Library Function - Single Match
//  __isxdigit_l
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl __isxdigit_l(int _C,_locale_t _Locale)

{
  uint uVar1;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
  if ((int)(local_14.locinfo)->locale_name[3] < 2) {
    uVar1 = *(ushort *)(local_14.locinfo[1].lc_category[0].locale + _C * 2) & 0x80;
  }
  else {
    uVar1 = __isctype_l(_C,0x80,&local_14);
  }
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return uVar1;
}



// Library Function - Single Match
//  _isxdigit
// 
// Library: Visual Studio 2008 Release

int __cdecl _isxdigit(int _C)

{
  int iVar1;
  
  if (DAT_032eb230 == 0) {
    return *(ushort *)(PTR_DAT_03240160 + _C * 2) & 0x80;
  }
  iVar1 = __isxdigit_l(_C,(_locale_t)0x0);
  return iVar1;
}



// Library Function - Single Match
//  __isspace_l
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl __isspace_l(int _C,_locale_t _Locale)

{
  uint uVar1;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
  if ((int)(local_14.locinfo)->locale_name[3] < 2) {
    uVar1 = *(ushort *)(local_14.locinfo[1].lc_category[0].locale + _C * 2) & 8;
  }
  else {
    uVar1 = __isctype_l(_C,8,&local_14);
  }
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return uVar1;
}



// Library Function - Single Match
//  _isspace
// 
// Library: Visual Studio 2008 Release

int __cdecl _isspace(int _C)

{
  int iVar1;
  
  if (DAT_032eb230 == 0) {
    return *(ushort *)(PTR_DAT_03240160 + _C * 2) & 8;
  }
  iVar1 = __isspace_l(_C,(_locale_t)0x0);
  return iVar1;
}



// Library Function - Single Match
//  __ispunct_l
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl __ispunct_l(int _C,_locale_t _Locale)

{
  uint uVar1;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
  if ((int)(local_14.locinfo)->locale_name[3] < 2) {
    uVar1 = *(ushort *)(local_14.locinfo[1].lc_category[0].locale + _C * 2) & 0x10;
  }
  else {
    uVar1 = __isctype_l(_C,0x10,&local_14);
  }
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return uVar1;
}



// Library Function - Single Match
//  _ispunct
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl _ispunct(int _C)

{
  int iVar1;
  
  if (DAT_032eb230 == 0) {
    return *(ushort *)(PTR_DAT_03240160 + _C * 2) & 0x10;
  }
  iVar1 = __ispunct_l(_C,(_locale_t)0x0);
  return iVar1;
}



// Library Function - Single Match
//  __isalnum_l
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl __isalnum_l(int _C,_locale_t _Locale)

{
  uint uVar1;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
  if ((int)(local_14.locinfo)->locale_name[3] < 2) {
    uVar1 = *(ushort *)(local_14.locinfo[1].lc_category[0].locale + _C * 2) & 0x107;
  }
  else {
    uVar1 = __isctype_l(_C,0x107,&local_14);
  }
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return uVar1;
}



// Library Function - Single Match
//  _isalnum
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl _isalnum(int _C)

{
  int iVar1;
  
  if (DAT_032eb230 == 0) {
    return *(ushort *)(PTR_DAT_03240160 + _C * 2) & 0x107;
  }
  iVar1 = __isalnum_l(_C,(_locale_t)0x0);
  return iVar1;
}



// Library Function - Single Match
//  __isleadbyte_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __isleadbyte_l(int _C,_locale_t _Locale)

{
  ushort uVar1;
  int local_14 [2];
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)local_14,_Locale);
  uVar1 = *(ushort *)(*(int *)(local_14[0] + 200) + (_C & 0xffU) * 2);
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return uVar1 & 0x8000;
}



// Library Function - Single Match
//  _isleadbyte
// 
// Library: Visual Studio 2008 Release

int __cdecl _isleadbyte(int _C)

{
  int iVar1;
  
  iVar1 = __isleadbyte_l(_C,(_locale_t)0x0);
  return iVar1;
}



// Library Function - Single Match
//  _iswalpha
// 
// Library: Visual Studio 2008 Release

int __cdecl _iswalpha(wint_t _C)

{
  int iVar1;
  
  iVar1 = _iswctype(_C,0x103);
  return iVar1;
}



// Library Function - Single Match
//  _iswdigit
// 
// Library: Visual Studio 2008 Release

int __cdecl _iswdigit(wint_t _C)

{
  int iVar1;
  
  iVar1 = _iswctype(_C,4);
  return iVar1;
}



// Library Function - Single Match
//  _iswspace
// 
// Library: Visual Studio 2008 Release

int __cdecl _iswspace(wint_t _C)

{
  int iVar1;
  
  iVar1 = _iswctype(_C,8);
  return iVar1;
}



// Library Function - Single Match
//  _iswpunct
// 
// Library: Visual Studio 2008 Release

int __cdecl _iswpunct(wint_t _C)

{
  int iVar1;
  
  iVar1 = _iswctype(_C,0x10);
  return iVar1;
}



// Library Function - Single Match
//  _iswalnum
// 
// Library: Visual Studio 2008 Release

int __cdecl _iswalnum(wint_t _C)

{
  int iVar1;
  
  iVar1 = _iswctype(_C,0x107);
  return iVar1;
}



// Library Function - Single Match
//  _iswprint
// 
// Library: Visual Studio 2008 Release

int __cdecl _iswprint(wint_t _C)

{
  int iVar1;
  
  iVar1 = _iswctype(_C,0x157);
  return iVar1;
}



void FUN_00a40293(uint param_1,nothrow_t *param_2)

{
  operator_new(param_1,param_2);
  return;
}



// Library Function - Single Match
//  __wcsdup
// 
// Library: Visual Studio 2008 Release

wchar_t * __cdecl __wcsdup(wchar_t *_Str)

{
  wchar_t *_Dst;
  int iVar1;
  errno_t eVar2;
  
  if (_Str == (wchar_t *)0x0) {
    _Dst = (wchar_t *)0x0;
  }
  else {
    iVar1 = FUN_00a51355(_Str);
    _Dst = (wchar_t *)_calloc(iVar1 + 1U,2);
    if (_Dst == (wchar_t *)0x0) {
      _Dst = (wchar_t *)0x0;
    }
    else {
      eVar2 = _wcscpy_s(_Dst,iVar1 + 1U,_Str);
      if (eVar2 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
    }
  }
  return _Dst;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _V6_HeapAlloc
// 
// Library: Visual Studio 2008 Release

undefined4 _V6_HeapAlloc(uint param_1)

{
  undefined4 local_20;
  
  local_20 = 0;
  if (param_1 <= DAT_032f180c) {
    __lock(4);
    local_20 = ___sbh_alloc_block(param_1);
    FUN_00a4033c();
  }
  return local_20;
}



void FUN_00a4033c(void)

{
  FUN_00a4d824(4);
  return;
}



// Library Function - Single Match
//  _malloc
// 
// Library: Visual Studio 2008 Release

void * __cdecl _malloc(size_t _Size)

{
  LPVOID pvVar1;
  int iVar2;
  int *piVar3;
  size_t sVar4;
  uint dwBytes;
  
  if (_Size < 0xffffffe1) {
    do {
      if (DAT_032eb654 == (HANDLE)0x0) {
        __FF_MSGBANNER();
        __NMSG_WRITE(0x1e);
        ___crtExitProcess(0xff);
      }
      if (DAT_032f181c == 1) {
        dwBytes = _Size;
        if (_Size == 0) {
          dwBytes = 1;
        }
LAB_00a403b4:
        pvVar1 = HeapAlloc(DAT_032eb654,0,dwBytes);
      }
      else if ((DAT_032f181c != 3) || (pvVar1 = (LPVOID)_V6_HeapAlloc(_Size), pvVar1 == (LPVOID)0x0)
              ) {
        sVar4 = _Size;
        if (_Size == 0) {
          sVar4 = 1;
        }
        dwBytes = sVar4 + 0xf & 0xfffffff0;
        goto LAB_00a403b4;
      }
      if (pvVar1 != (LPVOID)0x0) {
        return pvVar1;
      }
      if (DAT_032ebc38 == 0) {
        piVar3 = __errno();
        *piVar3 = 0xc;
        break;
      }
      iVar2 = __callnewh(_Size);
    } while (iVar2 != 0);
    piVar3 = __errno();
    *piVar3 = 0xc;
  }
  else {
    __callnewh(_Size);
    piVar3 = __errno();
    *piVar3 = 0xc;
  }
  return (void *)0x0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  ___RTtypeid
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release, Visual Studio 2012 Release

void ___RTtypeid(int *param_1)

{
  undefined *puVar1;
  bad_typeid local_28 [28];
  undefined4 uStack_c;
  undefined *local_8;
  
  local_8 = &DAT_03110650;
  uStack_c = 0xa4041b;
  if (param_1 != (int *)0x0) goto LAB_00a4043d;
  std::bad_typeid::bad_typeid(local_28,"Attempted a typeid of NULL pointer!");
  puVar1 = &DAT_0311063c;
  while( true ) {
    param_1 = (int *)__CxxThrowException_8(local_28,puVar1);
LAB_00a4043d:
    local_8 = (undefined *)0x0;
    if (*(int *)(*(int *)(*param_1 + -4) + 0xc) != 0) break;
    std::__non_rtti_object::__non_rtti_object
              ((__non_rtti_object *)local_28,"Bad read pointer - no RTTI data!");
    puVar1 = &DAT_0311062c;
  }
  return;
}



int __fastcall FUN_00a4048c(int *param_1)

{
  int iVar1;
  int iVar2;
  
  iVar2 = (int)param_1 - *(int *)(*(int *)(*param_1 + -4) + 4);
  iVar1 = *(int *)(*(int *)(*param_1 + -4) + 8);
  if (iVar1 != 0) {
    iVar2 = iVar2 - *(int *)((int)param_1 - iVar1);
  }
  return iVar2;
}



// Library Function - Single Match
//  struct _s_RTTIBaseClassDescriptor const * __cdecl FindSITargetTypeInstance(struct
// _s_RTTICompleteObjectLocator const *,struct TypeDescriptor *,struct TypeDescriptor *)
// 
// Library: Visual Studio 2008 Release

_s_RTTIBaseClassDescriptor * __cdecl
FindSITargetTypeInstance
          (_s_RTTICompleteObjectLocator *param_1,TypeDescriptor *param_2,TypeDescriptor *param_3)

{
  uint uVar1;
  int iVar2;
  TypeDescriptor **ppTVar3;
  _s_RTTICompleteObjectLocator **pp_Var4;
  _s_RTTICompleteObjectLocator *p_Var5;
  int in_EAX;
  int iVar6;
  uint uVar7;
  
  uVar1 = *(uint *)(*(int *)(in_EAX + 0x10) + 8);
  uVar7 = 0;
  iVar2 = *(int *)(*(int *)(in_EAX + 0x10) + 0xc);
  if (uVar1 != 0) {
    do {
      ppTVar3 = *(TypeDescriptor ***)(iVar2 + uVar7 * 4);
      if ((*ppTVar3 == param_2) ||
         (iVar6 = _strcmp((char *)(*ppTVar3 + 1),(char *)(param_2 + 1)), iVar6 == 0)) {
        do {
          uVar7 = uVar7 + 1;
          if (uVar1 <= uVar7) {
            return (_s_RTTIBaseClassDescriptor *)0x0;
          }
          pp_Var4 = *(_s_RTTICompleteObjectLocator ***)(iVar2 + uVar7 * 4);
          if ((*(byte *)(pp_Var4 + 5) & 4) != 0) {
            return (_s_RTTIBaseClassDescriptor *)0x0;
          }
          p_Var5 = *pp_Var4;
          if (p_Var5 == param_1) {
            return (_s_RTTIBaseClassDescriptor *)ppTVar3;
          }
          iVar6 = _strcmp((char *)(p_Var5 + 8),(char *)(param_1 + 8));
        } while (iVar6 != 0);
        return (_s_RTTIBaseClassDescriptor *)ppTVar3;
      }
      uVar7 = uVar7 + 1;
    } while (uVar7 < uVar1);
  }
  return (_s_RTTIBaseClassDescriptor *)0x0;
}



// Library Function - Single Match
//  int __cdecl PMDtoOffset(void *,struct PMD const &)
// 
// Library: Visual Studio 2008 Release

int __cdecl PMDtoOffset(void *param_1,PMD *param_2)

{
  int iVar1;
  int *in_EAX;
  int iVar2;
  
  iVar1 = in_EAX[1];
  iVar2 = 0;
  if (-1 < iVar1) {
    iVar2 = iVar1 + *(int *)(*(int *)(iVar1 + (int)param_1) + in_EAX[2]);
  }
  return *in_EAX + iVar2;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  ___RTCastToVoid
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release

undefined4 ___RTCastToVoid(int param_1)

{
  undefined4 uVar1;
  
  if (param_1 == 0) {
    uVar1 = 0;
  }
  else {
    uVar1 = FUN_00a4048c();
  }
  return uVar1;
}



// Library Function - Single Match
//  struct _s_RTTIBaseClassDescriptor const * __cdecl FindMITargetTypeInstance(void *,struct
// _s_RTTICompleteObjectLocator const *,struct TypeDescriptor *,int,struct TypeDescriptor *)
// 
// Library: Visual Studio 2008 Release

_s_RTTIBaseClassDescriptor * __cdecl
FindMITargetTypeInstance
          (void *param_1,_s_RTTICompleteObjectLocator *param_2,TypeDescriptor *param_3,int param_4,
          TypeDescriptor *param_5)

{
  byte bVar1;
  uint uVar2;
  int iVar3;
  _s_RTTICompleteObjectLocator **pp_Var4;
  int in_EAX;
  int iVar5;
  TypeDescriptor *pTVar6;
  PMD *unaff_EDI;
  _s_RTTICompleteObjectLocator **local_18;
  _s_RTTICompleteObjectLocator **local_14;
  _s_RTTICompleteObjectLocator *local_10;
  uint local_c;
  uint local_8;
  
  local_c = 0xffffffff;
  uVar2 = *(uint *)(*(int *)(in_EAX + 0x10) + 8);
  iVar3 = *(int *)(*(int *)(in_EAX + 0x10) + 0xc);
  local_14 = (_s_RTTICompleteObjectLocator **)0x0;
  local_18 = (_s_RTTICompleteObjectLocator **)0x0;
  local_10 = (_s_RTTICompleteObjectLocator *)0x0;
  local_8 = 0;
  if (uVar2 != 0) {
    do {
      pp_Var4 = *(_s_RTTICompleteObjectLocator ***)(iVar3 + local_8 * 4);
      if ((local_10 < (_s_RTTICompleteObjectLocator *)(local_8 - local_c)) &&
         ((*pp_Var4 == (_s_RTTICompleteObjectLocator *)param_4 ||
          (iVar5 = _strcmp((char *)(*pp_Var4 + 8),(char *)(param_4 + 8)), iVar5 == 0)))) {
        local_14 = pp_Var4;
        if (local_18 != (_s_RTTICompleteObjectLocator **)0x0) {
          if ((*(byte *)(pp_Var4 + 5) & 3) != 0) {
            return (_s_RTTIBaseClassDescriptor *)0x0;
          }
          bVar1 = *(byte *)(local_18 + 5);
          goto joined_r0x00a40656;
        }
        local_c = local_8;
        local_10 = pp_Var4[1];
      }
      if ((((*pp_Var4 == param_2) ||
           (iVar5 = _strcmp((char *)(*pp_Var4 + 8),(char *)(param_2 + 8)), iVar5 == 0)) &&
          (pTVar6 = (TypeDescriptor *)PMDtoOffset(param_1,unaff_EDI), pTVar6 == param_3)) &&
         (local_18 = pp_Var4, local_14 != (_s_RTTICompleteObjectLocator **)0x0)) {
        if (local_10 < (_s_RTTICompleteObjectLocator *)(local_8 - local_c)) {
          if ((*(byte *)(local_14 + 5) & 3) != 0) {
            return (_s_RTTIBaseClassDescriptor *)0x0;
          }
        }
        else {
          if ((*(byte *)(local_14 + 5) & 0x40) != 0) {
            return (_s_RTTIBaseClassDescriptor *)
                   (~-(uint)((*(byte *)(*(int *)(*(int *)(local_14[6] + 0xc) +
                                                (int)(_s_RTTICompleteObjectLocator *)
                                                     (local_8 - local_c) * 4) + 0x14) & 1) != 0) &
                   (uint)local_14);
          }
          if (local_c != 0) {
            return (_s_RTTIBaseClassDescriptor *)local_14;
          }
        }
        bVar1 = *(byte *)(pp_Var4 + 5);
joined_r0x00a40656:
        if ((bVar1 & 1) != 0) {
          return (_s_RTTIBaseClassDescriptor *)0x0;
        }
        return (_s_RTTIBaseClassDescriptor *)local_14;
      }
      local_8 = local_8 + 1;
    } while (local_8 < uVar2);
  }
  return (_s_RTTIBaseClassDescriptor *)0x0;
}



// Library Function - Single Match
//  struct _s_RTTIBaseClassDescriptor const * __cdecl FindVITargetTypeInstance(void *,struct
// _s_RTTICompleteObjectLocator const *,struct TypeDescriptor *,int,struct TypeDescriptor *)
// 
// Library: Visual Studio 2008 Release

_s_RTTIBaseClassDescriptor * __cdecl
FindVITargetTypeInstance
          (void *param_1,_s_RTTICompleteObjectLocator *param_2,TypeDescriptor *param_3,int param_4,
          TypeDescriptor *param_5)

{
  int iVar1;
  uint uVar2;
  _s_RTTICompleteObjectLocator **pp_Var3;
  uint uVar4;
  bool bVar5;
  byte bVar6;
  int in_EAX;
  int iVar7;
  int iVar8;
  TypeDescriptor *pTVar9;
  PMD *unaff_EDI;
  _s_RTTICompleteObjectLocator **pp_Var10;
  bool bVar11;
  _s_RTTICompleteObjectLocator **local_24;
  _s_RTTICompleteObjectLocator **local_20;
  int local_1c;
  _s_RTTICompleteObjectLocator **local_18;
  _s_RTTICompleteObjectLocator *local_14;
  uint local_10;
  uint local_c;
  
  iVar1 = *(int *)(*(int *)(in_EAX + 0x10) + 0xc);
  local_10 = 0xffffffff;
  local_1c = -1;
  uVar2 = *(uint *)(*(int *)(in_EAX + 0x10) + 8);
  pp_Var10 = (_s_RTTICompleteObjectLocator **)0x0;
  local_18 = (_s_RTTICompleteObjectLocator **)0x0;
  local_20 = (_s_RTTICompleteObjectLocator **)0x0;
  local_24 = (_s_RTTICompleteObjectLocator **)0x0;
  local_14 = (_s_RTTICompleteObjectLocator *)0x0;
  bVar5 = true;
  local_c = 0;
  if (uVar2 != 0) {
    do {
      pp_Var3 = *(_s_RTTICompleteObjectLocator ***)(iVar1 + local_c * 4);
      if ((local_14 < (_s_RTTICompleteObjectLocator *)(local_c - local_10)) &&
         ((*pp_Var3 == (_s_RTTICompleteObjectLocator *)param_4 ||
          (iVar7 = _strcmp((char *)(*pp_Var3 + 8),(char *)(param_4 + 8)), iVar7 == 0)))) {
        if ((*(byte *)(pp_Var3 + 5) & 3) == 0) {
          local_24 = pp_Var3;
        }
        local_10 = local_c;
        local_14 = pp_Var3[1];
        pp_Var10 = pp_Var3;
      }
      iVar7 = local_1c;
      if (((*pp_Var3 == param_2) ||
          (iVar8 = _strcmp((char *)(*pp_Var3 + 8),(char *)(param_2 + 8)), iVar8 == 0)) &&
         (pTVar9 = (TypeDescriptor *)PMDtoOffset(param_1,unaff_EDI), pTVar9 == param_3)) {
        if (local_14 < (_s_RTTICompleteObjectLocator *)(local_c - local_10)) {
          if ((*(byte *)(pp_Var3 + 5) & 5) == 0) {
            local_20 = pp_Var3;
          }
        }
        else if (bVar5) {
          if ((*(byte *)(pp_Var10 + 5) & 0x40) == 0) {
            if ((local_10 == 0) && ((*(byte *)(pp_Var3 + 5) & 1) != 0)) {
              bVar5 = false;
            }
            bVar6 = 1;
          }
          else {
            uVar4 = *(uint *)(*(int *)(*(int *)(pp_Var10[6] + 0xc) +
                                      (int)(_s_RTTICompleteObjectLocator *)(local_c - local_10) * 4)
                             + 0x14);
            if ((uVar4 & 1) != 0) {
              bVar5 = false;
            }
            bVar6 = ~(byte)(uVar4 >> 2) & 1;
          }
          if (((bVar5) && (bVar6 != 0)) &&
             ((iVar7 = PMDtoOffset(param_1,unaff_EDI),
              bVar11 = local_18 != (_s_RTTICompleteObjectLocator **)0x0, local_18 = pp_Var10, bVar11
              && (local_1c != iVar7)))) {
            return (_s_RTTIBaseClassDescriptor *)0x0;
          }
        }
      }
      local_1c = iVar7;
      local_c = local_c + 1;
    } while (local_c < uVar2);
    if ((bVar5) && (local_18 != (_s_RTTICompleteObjectLocator **)0x0)) {
      return (_s_RTTIBaseClassDescriptor *)local_18;
    }
    if ((local_20 != (_s_RTTICompleteObjectLocator **)0x0) &&
       (local_24 != (_s_RTTICompleteObjectLocator **)0x0)) {
      return (_s_RTTIBaseClassDescriptor *)local_24;
    }
  }
  return (_s_RTTIBaseClassDescriptor *)0x0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  ___RTDynamicCast
// 
// Library: Visual Studio 2008 Release

uint ___RTDynamicCast(int *param_1,int param_2,_s_RTTICompleteObjectLocator *param_3,
                     TypeDescriptor *param_4,int param_5)

{
  uint uVar1;
  void *pvVar2;
  _s_RTTIBaseClassDescriptor *p_Var3;
  int iVar4;
  TypeDescriptor *pTVar5;
  PMD *in_stack_ffffffc4;
  bad_cast local_2c [12];
  undefined4 local_20;
  int **local_18;
  undefined4 uStack_c;
  undefined4 local_8;
  
  uStack_c = 0xa40807;
  if (param_1 == (int *)0x0) {
    uVar1 = 0;
  }
  else {
    local_8 = 0;
    pvVar2 = (void *)FUN_00a4048c();
    pTVar5 = (TypeDescriptor *)((int)param_1 + (-(int)pvVar2 - param_2));
    uVar1 = *(uint *)(*(int *)(*(int *)(*param_1 + -4) + 0x10) + 4);
    if ((uVar1 & 1) == 0) {
      p_Var3 = FindSITargetTypeInstance(param_3,param_4,(TypeDescriptor *)in_stack_ffffffc4);
    }
    else if ((uVar1 & 2) == 0) {
      p_Var3 = FindMITargetTypeInstance
                         (pvVar2,param_3,pTVar5,(int)param_4,(TypeDescriptor *)in_stack_ffffffc4);
    }
    else {
      p_Var3 = FindVITargetTypeInstance
                         (pvVar2,param_3,pTVar5,(int)param_4,(TypeDescriptor *)in_stack_ffffffc4);
    }
    if (p_Var3 == (_s_RTTIBaseClassDescriptor *)0x0) {
      uVar1 = 0;
      local_20 = 0;
      if (param_5 != 0) {
        std::bad_cast::bad_cast(local_2c,"Bad dynamic_cast!");
        __CxxThrowException_8(local_2c,&DAT_03115570);
        return (uint)(**local_18 == -0x3ffffffb);
      }
    }
    else {
      iVar4 = PMDtoOffset(pvVar2,in_stack_ffffffc4);
      uVar1 = iVar4 + (int)pvVar2;
    }
  }
  return uVar1;
}



// Library Function - Single Match
//  __gmtime64_s
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl __gmtime64_s(tm *_Tm,__time64_t *_Time)

{
  tm *ptVar1;
  uint uVar2;
  bool bVar3;
  tm *ptVar4;
  int *piVar5;
  int iVar6;
  uint uVar7;
  undefined4 *puVar8;
  int iVar9;
  bool bVar10;
  longlong lVar11;
  longlong lVar12;
  longlong lVar13;
  
  ptVar4 = _Tm;
  bVar3 = false;
  if ((_Tm == (tm *)0x0) || (_memset(_Tm,0xff,0x24), _Time == (__time64_t *)0x0)) {
    piVar5 = __errno();
    *piVar5 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return 0x16;
  }
  uVar7 = *(uint *)_Time;
  uVar2 = *(uint *)((int)_Time + 4);
  lVar12 = *_Time;
  if (((0x7fffffff < uVar2) && (((int)uVar2 < -1 || (uVar7 < 0xffff5740)))) ||
     ((6 < (int)uVar2 && ((7 < (int)uVar2 || (0x934126cf < uVar7)))))) {
    piVar5 = __errno();
    *piVar5 = 0x16;
    return 0x16;
  }
  iVar6 = __alldiv(uVar7,uVar2,&DAT_01e13380,0);
  _Tm = (tm *)(iVar6 + 0x46);
  ptVar1 = (tm *)(iVar6 + 0x45);
  lVar11 = __allmul(iVar6,iVar6 >> 0x1f,0xfffffe93,0xffffffff);
  lVar11 = __allmul(lVar11 - (((iVar6 + 0x171) / 400 - (int)ptVar1 / 100) + -0x11 +
                             ((int)((int)&ptVar1->tm_sec + ((int)ptVar1 >> 0x1f & 3U)) >> 2)),
                    0x15180,0);
  lVar11 = lVar11 + lVar12;
  iVar9 = (int)lVar11;
  if ((lVar11 < 0x100000000) && (lVar11 < 0)) {
    lVar11 = lVar11 + 0x1e13380;
    uVar7 = (uint)ptVar1 & 0x80000003;
    bVar10 = uVar7 == 0;
    if ((int)uVar7 < 0) {
      bVar10 = (uVar7 - 1 | 0xfffffffc) == 0xffffffff;
    }
    _Tm = ptVar1;
    if (((!bVar10) || ((int)ptVar1 % 100 == 0)) && ((iVar6 + 0x7b1) % 400 != 0)) goto LAB_00a40a54;
    lVar11 = CONCAT44((int)((ulonglong)lVar11 >> 0x20) + (uint)(0xfffeae7f < (uint)lVar11),
                      &UNK_01e28500 + iVar9);
  }
  else {
    uVar7 = (uint)_Tm & 0x80000003;
    bVar10 = uVar7 == 0;
    if ((int)uVar7 < 0) {
      bVar10 = (uVar7 - 1 | 0xfffffffc) == 0xffffffff;
    }
    if (((!bVar10) || ((int)_Tm % 100 == 0)) && ((iVar6 + 0x7b2) % 400 != 0)) goto LAB_00a40a54;
  }
  bVar3 = true;
LAB_00a40a54:
  ptVar4->tm_year = (int)_Tm;
  iVar6 = __alldiv(lVar11,0x15180,0);
  ptVar4->tm_yday = iVar6;
  lVar12 = __allmul(iVar6,iVar6 >> 0x1f,0xfffeae80,0xffffffff);
  puVar8 = (undefined4 *)&DAT_032406f4;
  if (!bVar3) {
    puVar8 = &DAT_03240728;
  }
  iVar9 = 1;
  iVar6 = puVar8[1];
  while (iVar6 < ptVar4->tm_yday) {
    iVar9 = iVar9 + 1;
    iVar6 = puVar8[iVar9];
  }
  ptVar4->tm_mon = iVar9 + -1;
  ptVar4->tm_mday = ptVar4->tm_yday - puVar8[iVar9 + -1];
  iVar6 = __alldiv(*(undefined4 *)_Time,*(undefined4 *)((int)_Time + 4),0x15180,0);
  ptVar4->tm_wday = (iVar6 + 4) % 7;
  iVar6 = __alldiv(lVar12 + lVar11,0xe10,0);
  ptVar4->tm_hour = iVar6;
  lVar13 = __allmul(iVar6,iVar6 >> 0x1f,0xfffff1f0,0xffffffff);
  lVar13 = lVar12 + lVar11 + lVar13;
  iVar6 = __alldiv(lVar13,0x3c,0);
  ptVar4->tm_min = iVar6;
  ptVar4->tm_isdst = 0;
  ptVar4->tm_sec = (int)lVar13 + iVar6 * -0x3c;
  return 0;
}



// Library Function - Single Match
//  __gmtime64
// 
// Library: Visual Studio 2008 Release

tm * __cdecl __gmtime64(__time64_t *_Time)

{
  tm *_Tm;
  errno_t eVar1;
  
  _Tm = ___getgmtimebuf();
  if (_Tm != (tm *)0x0) {
    eVar1 = __gmtime64_s(_Tm,_Time);
    _Tm = (tm *)(~-(uint)(eVar1 != 0) & (uint)_Tm);
  }
  return _Tm;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _fputc
// 
// Library: Visual Studio 2008 Release

int __cdecl _fputc(int _Ch,FILE *_File)

{
  int *piVar1;
  uint uVar2;
  undefined *puVar3;
  uint local_20;
  
  local_20 = 0;
  if (_File == (FILE *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return -1;
  }
  __lock_file(_File);
  if ((*(byte *)&_File->_flag & 0x40) == 0) {
    uVar2 = __fileno(_File);
    if ((uVar2 == 0xffffffff) || (uVar2 == 0xfffffffe)) {
      puVar3 = &DAT_03240190;
    }
    else {
      puVar3 = (undefined *)((uVar2 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar2 >> 5]);
    }
    if ((puVar3[0x24] & 0x7f) == 0) {
      if ((uVar2 == 0xffffffff) || (uVar2 == 0xfffffffe)) {
        puVar3 = &DAT_03240190;
      }
      else {
        puVar3 = (undefined *)((uVar2 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar2 >> 5]);
      }
      if ((puVar3[0x24] & 0x80) == 0) goto LAB_00a40c00;
    }
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    local_20 = 0xffffffff;
  }
LAB_00a40c00:
  if (local_20 == 0) {
    piVar1 = &_File->_cnt;
    *piVar1 = *piVar1 + -1;
    if (*piVar1 < 0) {
      local_20 = __flsbuf(_Ch,_File);
    }
    else {
      *_File->_ptr = (char)_Ch;
      local_20 = _Ch & 0xff;
      _File->_ptr = _File->_ptr + 1;
    }
  }
  FUN_00a40c3e();
  return local_20;
}



void FUN_00a40c3e(void)

{
  FILE *unaff_ESI;
  
  __unlock_file(unaff_ESI);
  return;
}



// Library Function - Single Match
//  __fwrite_nolock
// 
// Library: Visual Studio 2008 Release

size_t __cdecl __fwrite_nolock(void *_DstBuf,size_t _Size,size_t _Count,FILE *_File)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint _Size_00;
  uint uVar5;
  uint uVar6;
  char *_Buf;
  uint local_c;
  char *local_8;
  
  if ((_Size != 0) && (_Count != 0)) {
    if ((_File != (FILE *)0x0) &&
       ((_DstBuf != (void *)0x0 && (_Count <= (uint)(0xffffffff / (ulonglong)_Size))))) {
      uVar6 = _Size * _Count;
      uVar5 = uVar6;
      if ((_File->_flag & 0x10cU) == 0) {
        local_c = 0x1000;
      }
      else {
        local_c = _File->_bufsiz;
      }
      do {
        while( true ) {
          if (uVar5 == 0) {
            return _Count;
          }
          uVar4 = _File->_flag & 0x108;
          if (uVar4 == 0) break;
          uVar3 = _File->_cnt;
          if (uVar3 == 0) break;
          if ((int)uVar3 < 0) {
            _File->_flag = _File->_flag | 0x20;
            goto LAB_00a40d93;
          }
          _Size_00 = uVar5;
          if (uVar3 <= uVar5) {
            _Size_00 = uVar3;
          }
          _memcpy(_File->_ptr,_DstBuf,_Size_00);
          _File->_cnt = _File->_cnt - _Size_00;
          _File->_ptr = _File->_ptr + _Size_00;
          uVar5 = uVar5 - _Size_00;
LAB_00a40d4f:
          local_8 = (char *)((int)_DstBuf + _Size_00);
          _DstBuf = local_8;
        }
        if (local_c <= uVar5) {
          if ((uVar4 != 0) && (iVar2 = __flush(_File), iVar2 != 0)) goto LAB_00a40d93;
          uVar4 = uVar5;
          if (local_c != 0) {
            uVar4 = uVar5 - uVar5 % local_c;
          }
          _Buf = (char *)_DstBuf;
          uVar3 = uVar4;
          iVar2 = __fileno(_File);
          uVar3 = __write(iVar2,_Buf,uVar3);
          if (uVar3 != 0xffffffff) {
            _Size_00 = uVar4;
            if (uVar3 <= uVar4) {
              _Size_00 = uVar3;
            }
            uVar5 = uVar5 - _Size_00;
            if (uVar4 <= uVar3) goto LAB_00a40d4f;
          }
          _File->_flag = _File->_flag | 0x20;
LAB_00a40d93:
          return (uVar6 - uVar5) / _Size;
        }
                    // WARNING: Load size is inaccurate
        iVar2 = __flsbuf((int)*_DstBuf,_File);
        if (iVar2 == -1) goto LAB_00a40d93;
        _DstBuf = (void *)((int)_DstBuf + 1);
        local_c = _File->_bufsiz;
        uVar5 = uVar5 - 1;
        if ((int)local_c < 1) {
          local_c = 1;
        }
      } while( true );
    }
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  return 0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _fwrite
// 
// Library: Visual Studio 2008 Release

size_t __cdecl _fwrite(void *_Str,size_t _Size,size_t _Count,FILE *_File)

{
  int *piVar1;
  size_t sVar2;
  
  if ((_Size != 0) && (_Count != 0)) {
    if (_File != (FILE *)0x0) {
      __lock_file(_File);
      sVar2 = __fwrite_nolock(_Str,_Size,_Count,_File);
      FUN_00a40e20();
      return sVar2;
    }
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  return 0;
}



void FUN_00a40e20(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 0x14));
  return;
}



// Library Function - Single Match
//  __ungetc_nolock
// 
// Library: Visual Studio 2008 Release

int __cdecl __ungetc_nolock(int _Ch,FILE *_File)

{
  char *pcVar1;
  uint uVar2;
  int *piVar3;
  undefined *puVar4;
  
  if ((*(byte *)&_File->_flag & 0x40) != 0) {
LAB_00a40eb3:
    if (_Ch != -1) {
      uVar2 = _File->_flag;
      if (((uVar2 & 1) != 0) || (((char)uVar2 < '\0' && ((uVar2 & 2) == 0)))) {
        if (_File->_base == (char *)0x0) {
          __getbuf(_File);
        }
        if (_File->_ptr == _File->_base) {
          if (_File->_cnt != 0) {
            return -1;
          }
          _File->_ptr = _File->_ptr + 1;
        }
        _File->_ptr = _File->_ptr + -1;
        pcVar1 = _File->_ptr;
        if ((*(byte *)&_File->_flag & 0x40) == 0) {
          *pcVar1 = (char)_Ch;
        }
        else if (*pcVar1 != (char)_Ch) {
          _File->_ptr = pcVar1 + 1;
          return -1;
        }
        _File->_cnt = _File->_cnt + 1;
        _File->_flag = _File->_flag & 0xffffffefU | 1;
        return _Ch & 0xff;
      }
    }
    return -1;
  }
  uVar2 = __fileno(_File);
  if ((uVar2 == 0xffffffff) || (uVar2 == 0xfffffffe)) {
    puVar4 = &DAT_03240190;
  }
  else {
    puVar4 = (undefined *)((uVar2 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar2 >> 5]);
  }
  if ((puVar4[0x24] & 0x7f) == 0) {
    if ((uVar2 == 0xffffffff) || (uVar2 == 0xfffffffe)) {
      puVar4 = &DAT_03240190;
    }
    else {
      puVar4 = (undefined *)((uVar2 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar2 >> 5]);
    }
    if ((puVar4[0x24] & 0x80) == 0) goto LAB_00a40eb3;
  }
  piVar3 = __errno();
  *piVar3 = 0x16;
  __invalid_parameter(0,0,0,0,0);
  return -1;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _ungetc
// 
// Library: Visual Studio 2008 Release

int __cdecl _ungetc(int _Ch,FILE *_File)

{
  int *piVar1;
  int iVar2;
  
  if (_File == (FILE *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    iVar2 = -1;
  }
  else {
    __lock_file(_File);
    iVar2 = __ungetc_nolock(_Ch,_File);
    FUN_00a40f83();
  }
  return iVar2;
}



void FUN_00a40f83(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 0xc));
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _fgetc
// 
// Library: Visual Studio 2008 Release

int __cdecl _fgetc(FILE *_File)

{
  int *piVar1;
  uint uVar2;
  undefined *puVar3;
  uint local_20;
  
  local_20 = 0;
  if (_File == (FILE *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return -1;
  }
  __lock_file(_File);
  if ((*(byte *)&_File->_flag & 0x40) == 0) {
    uVar2 = __fileno(_File);
    if ((uVar2 == 0xffffffff) || (uVar2 == 0xfffffffe)) {
      puVar3 = &DAT_03240190;
    }
    else {
      puVar3 = (undefined *)((uVar2 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar2 >> 5]);
    }
    if ((puVar3[0x24] & 0x7f) == 0) {
      if ((uVar2 == 0xffffffff) || (uVar2 == 0xfffffffe)) {
        puVar3 = &DAT_03240190;
      }
      else {
        puVar3 = (undefined *)((uVar2 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar2 >> 5]);
      }
      if ((puVar3[0x24] & 0x80) == 0) goto LAB_00a41056;
    }
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    local_20 = 0xffffffff;
  }
LAB_00a41056:
  if (local_20 == 0) {
    piVar1 = &_File->_cnt;
    *piVar1 = *piVar1 + -1;
    if (*piVar1 < 0) {
      local_20 = __filbuf(_File);
    }
    else {
      local_20 = (uint)(byte)*_File->_ptr;
      _File->_ptr = _File->_ptr + 1;
    }
  }
  FUN_00a4108c();
  return local_20;
}



void FUN_00a4108c(void)

{
  FILE *unaff_ESI;
  
  __unlock_file(unaff_ESI);
  return;
}



// Library Function - Single Match
//  __fseek_nolock
// 
// Library: Visual Studio 2008 Release

int __cdecl __fseek_nolock(FILE *_File,long _Offset,int _Origin)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  long lVar4;
  
  if ((_File->_flag & 0x83U) == 0) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    iVar3 = -1;
  }
  else {
    _File->_flag = _File->_flag & 0xffffffef;
    if (_Origin == 1) {
      lVar4 = __ftell_nolock(_File);
      _Offset = _Offset + lVar4;
      _Origin = 0;
    }
    __flush(_File);
    uVar1 = _File->_flag;
    if ((char)uVar1 < '\0') {
      _File->_flag = uVar1 & 0xfffffffc;
    }
    else if ((((uVar1 & 1) != 0) && ((uVar1 & 8) != 0)) && ((uVar1 & 0x400) == 0)) {
      _File->_bufsiz = 0x200;
    }
    iVar3 = __fileno(_File);
    lVar4 = __lseek(iVar3,_Offset,_Origin);
    iVar3 = (lVar4 != -1) - 1;
  }
  return iVar3;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _fseek
// 
// Library: Visual Studio 2008 Release

int __cdecl _fseek(FILE *_File,long _Offset,int _Origin)

{
  int *piVar1;
  int iVar2;
  
  if ((_File == (FILE *)0x0) || (((_Origin != 0 && (_Origin != 1)) && (_Origin != 2)))) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    iVar2 = -1;
  }
  else {
    __lock_file(_File);
    iVar2 = __fseek_nolock(_File,_Offset,_Origin);
    FUN_00a41199();
  }
  return iVar2;
}



void FUN_00a41199(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 8));
  return;
}



// Library Function - Single Match
//  _fgetpos
// 
// Library: Visual Studio 2008 Release

int __cdecl _fgetpos(FILE *_File,fpos_t *_Pos)

{
  int *piVar1;
  int iVar2;
  longlong lVar3;
  
  if (_File == (FILE *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    iVar2 = -1;
  }
  else if (_Pos == (fpos_t *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    iVar2 = -1;
  }
  else {
    lVar3 = __ftelli64(_File);
    iVar2 = -1;
    *_Pos = lVar3;
    if (lVar3 != -1) {
      iVar2 = 0;
    }
  }
  return iVar2;
}



// Library Function - Single Match
//  _fsetpos
// 
// Library: Visual Studio 2008 Release

int __cdecl _fsetpos(FILE *_File,fpos_t *_Pos)

{
  int *piVar1;
  int iVar2;
  int unaff_ESI;
  
  if ((_File == (FILE *)0x0) || (_Pos == (fpos_t *)0x0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    iVar2 = -1;
  }
  else {
    iVar2 = __fseeki64(_File,(ulonglong)*(uint *)((int)_Pos + 4),unaff_ESI);
  }
  return iVar2;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  _setvbuf
// 
// Library: Visual Studio 2008 Release

int __cdecl _setvbuf(FILE *_File,char *_Buf,int _Mode,size_t _Size)

{
  int *piVar1;
  uint uVar2;
  uint _Size_00;
  int local_20;
  
  local_20 = 0;
  if (_File == (FILE *)0x0) goto LAB_00a41275;
  if (_Mode == 4) {
LAB_00a412a6:
    if ((_Mode == 0) || (_Mode == 0x40)) goto LAB_00a412af;
  }
  else {
    if (_Mode != 0) {
      if (_Mode != 0x40) goto LAB_00a41275;
      goto LAB_00a412a6;
    }
LAB_00a412af:
    if (0x7ffffffd < _Size - 2) {
LAB_00a41275:
      piVar1 = __errno();
      *piVar1 = 0x16;
      __invalid_parameter(0,0,0,0,0);
      return -1;
    }
  }
  _Size_00 = _Size & 0xfffffffe;
  __lock_file(_File);
  __flush(_File);
  __freebuf(_File);
  _File->_flag = _File->_flag & 0xffffc2f3;
  if ((_Mode & 4U) == 0) {
    if (_Buf != (char *)0x0) {
      uVar2 = _File->_flag | 0x500;
      goto LAB_00a41327;
    }
    _Buf = (char *)__malloc_crt(_Size_00);
    if ((int *)_Buf == (int *)0x0) {
      _DAT_032eb274 = _DAT_032eb274 + 1;
      local_20 = -1;
      goto LAB_00a41335;
    }
    _File->_flag = _File->_flag | 0x408;
  }
  else {
    uVar2 = _File->_flag | 4;
    _Buf = (char *)&_File->_charbuf;
    _Size_00 = 2;
LAB_00a41327:
    _File->_flag = uVar2;
  }
  _File->_bufsiz = _Size_00;
  _File->_base = _Buf;
  _File->_ptr = _Buf;
  _File->_cnt = 0;
LAB_00a41335:
  FUN_00a4134a();
  return local_20;
}



void FUN_00a4134a(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 8));
  return;
}



// Library Function - Single Match
//  __flush
// 
// Library: Visual Studio 2008 Release

int __cdecl __flush(FILE *_File)

{
  int _FileHandle;
  uint uVar1;
  int iVar2;
  uint uVar3;
  char *_Buf;
  
  iVar2 = 0;
  if ((((byte)_File->_flag & 3) == 2) && ((_File->_flag & 0x108U) != 0)) {
    _Buf = _File->_base;
    uVar3 = (int)_File->_ptr - (int)_Buf;
    if (0 < (int)uVar3) {
      uVar1 = uVar3;
      _FileHandle = __fileno(_File);
      uVar1 = __write(_FileHandle,_Buf,uVar1);
      if (uVar1 == uVar3) {
        if ((char)_File->_flag < '\0') {
          _File->_flag = _File->_flag & 0xfffffffd;
        }
      }
      else {
        _File->_flag = _File->_flag | 0x20;
        iVar2 = -1;
      }
    }
  }
  _File->_cnt = 0;
  _File->_ptr = _File->_base;
  return iVar2;
}



// Library Function - Single Match
//  __fflush_nolock
// 
// Library: Visual Studio 2008 Release

int __cdecl __fflush_nolock(FILE *_File)

{
  int iVar1;
  
  if (_File == (FILE *)0x0) {
    iVar1 = _flsall(0);
  }
  else {
    iVar1 = __flush(_File);
    if (iVar1 == 0) {
      if ((_File->_flag & 0x4000U) == 0) {
        iVar1 = 0;
      }
      else {
        iVar1 = __fileno(_File);
        iVar1 = __commit(iVar1);
        iVar1 = -(uint)(iVar1 != 0);
      }
    }
    else {
      iVar1 = -1;
    }
  }
  return iVar1;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _flsall
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int _flsall(int param_1)

{
  void **ppvVar1;
  void *_File;
  FILE *_File_00;
  int iVar2;
  int _Index;
  int local_28;
  int local_20;
  
  local_20 = 0;
  local_28 = 0;
  __lock(1);
  for (_Index = 0; _Index < DAT_032f2840; _Index = _Index + 1) {
    ppvVar1 = (void **)(DAT_032f1820 + _Index * 4);
    if ((*ppvVar1 != (void *)0x0) && (_File = *ppvVar1, (*(byte *)((int)_File + 0xc) & 0x83) != 0))
    {
      __lock_file2(_Index,_File);
      _File_00 = *(FILE **)(DAT_032f1820 + _Index * 4);
      if ((_File_00->_flag & 0x83U) != 0) {
        if (param_1 == 1) {
          iVar2 = __fflush_nolock(_File_00);
          if (iVar2 != -1) {
            local_20 = local_20 + 1;
          }
        }
        else if ((param_1 == 0) && ((_File_00->_flag & 2U) != 0)) {
          iVar2 = __fflush_nolock(_File_00);
          if (iVar2 == -1) {
            local_28 = -1;
          }
        }
      }
      FUN_00a414a6();
    }
  }
  FUN_00a414d5();
  if (param_1 != 1) {
    local_20 = local_28;
  }
  return local_20;
}



void FUN_00a414a6(void)

{
  int unaff_ESI;
  
  __unlock_file2(unaff_ESI,*(void **)(DAT_032f1820 + unaff_ESI * 4));
  return;
}



void FUN_00a414d5(void)

{
  FUN_00a4d824(1);
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _fflush
// 
// Library: Visual Studio 2008 Release

int __cdecl _fflush(FILE *_File)

{
  int iVar1;
  
  if (_File == (FILE *)0x0) {
    iVar1 = _flsall(0);
  }
  else {
    __lock_file(_File);
    iVar1 = __fflush_nolock(_File);
    FUN_00a41527();
  }
  return iVar1;
}



void FUN_00a41527(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 8));
  return;
}



// Library Function - Single Match
//  __fclose_nolock
// 
// Library: Visual Studio 2008 Release

int __cdecl __fclose_nolock(FILE *_File)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  
  iVar3 = -1;
  if (_File == (FILE *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    iVar3 = -1;
  }
  else {
    if ((*(byte *)&_File->_flag & 0x83) != 0) {
      iVar3 = __flush(_File);
      __freebuf(_File);
      iVar2 = __fileno(_File);
      iVar2 = __close(iVar2);
      if (iVar2 < 0) {
        iVar3 = -1;
      }
      else if (_File->_tmpfname != (char *)0x0) {
        _free(_File->_tmpfname);
        _File->_tmpfname = (char *)0x0;
      }
    }
    _File->_flag = 0;
  }
  return iVar3;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _fclose
// 
// Library: Visual Studio 2008 Release

int __cdecl _fclose(FILE *_File)

{
  int *piVar1;
  int local_20;
  
  local_20 = -1;
  if (_File == (FILE *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    local_20 = -1;
  }
  else if ((*(byte *)&_File->_flag & 0x40) == 0) {
    __lock_file(_File);
    local_20 = __fclose_nolock(_File);
    FUN_00a41625();
  }
  else {
    _File->_flag = 0;
  }
  return local_20;
}



void FUN_00a41625(void)

{
  FILE *unaff_ESI;
  
  __unlock_file(unaff_ESI);
  return;
}



// WARNING: Removing unreachable block (ram,0x00a41664)
// Library Function - Single Match
//  __time64
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

__time64_t __cdecl __time64(__time64_t *_Time)

{
  longlong lVar1;
  _FILETIME local_c;
  
  GetSystemTimeAsFileTime(&local_c);
  lVar1 = __aulldiv(local_c.dwLowDateTime + 0x2ac18000,
                    local_c.dwHighDateTime + 0xfe624e21 + (uint)(0xd53e7fff < local_c.dwLowDateTime)
                    ,10000000,0);
  if (0x793406fff < lVar1) {
    lVar1 = -1;
  }
  if (_Time != (__time64_t *)0x0) {
    *_Time = lVar1;
  }
  return lVar1;
}



// Library Function - Single Match
//  __localtime64_s
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl __localtime64_s(tm *_Tm,__time64_t *_Time)

{
  uint uVar1;
  int *piVar2;
  errno_t eVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  bool bVar8;
  longlong lVar9;
  uint local_18;
  int local_14;
  uint local_10;
  int local_c;
  uint local_8;
  
  local_c = 0;
  local_10 = 0;
  local_8 = 0;
  if (_Tm == (tm *)0x0) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return 0x16;
  }
  _memset(_Tm,0xff,0x24);
  if (_Time == (__time64_t *)0x0) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return 0x16;
  }
  iVar4 = *(int *)((int)_Time + 4);
  if (((iVar4 < 1) && (iVar4 < 0)) ||
     ((6 < iVar4 && ((7 < iVar4 || (0x93406fff < *(uint *)_Time)))))) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    return 0x16;
  }
  ___tzset();
  eVar3 = __get_daylight(&local_c);
  if (eVar3 != 0) {
                    // WARNING: Subroutine does not return
    __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
  }
  eVar3 = __get_dstbias((long *)&local_10);
  if (eVar3 != 0) {
                    // WARNING: Subroutine does not return
    __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
  }
  eVar3 = __get_timezone((long *)&local_8);
  if (eVar3 != 0) {
                    // WARNING: Subroutine does not return
    __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
  }
  iVar4 = *(int *)((int)_Time + 4);
  uVar1 = *(uint *)_Time;
  if ((-1 < iVar4) && ((0 < iVar4 || (0x3f480 < uVar1)))) {
    local_18 = uVar1 - local_8;
    local_14 = (iVar4 - ((int)local_8 >> 0x1f)) - (uint)(uVar1 < local_8);
    eVar3 = __gmtime64_s(_Tm,(__time64_t *)&local_18);
    if (eVar3 != 0) {
      return eVar3;
    }
    if (local_c == 0) {
      return 0;
    }
    iVar4 = __isindst(_Tm);
    if (iVar4 == 0) {
      return 0;
    }
    bVar8 = local_18 < local_10;
    local_18 = local_18 - local_10;
    local_14 = (local_14 - ((int)local_10 >> 0x1f)) - (uint)bVar8;
    eVar3 = __gmtime64_s(_Tm,(__time64_t *)&local_18);
    if (eVar3 == 0) {
      _Tm->tm_isdst = 1;
      return 0;
    }
    return eVar3;
  }
  eVar3 = __gmtime64_s(_Tm,_Time);
  if (eVar3 != 0) {
    return eVar3;
  }
  if ((local_c == 0) || (iVar4 = __isindst(_Tm), iVar4 == 0)) {
    uVar1 = _Tm->tm_sec;
    uVar7 = uVar1 - local_8;
    iVar4 = (((int)uVar1 >> 0x1f) - ((int)local_8 >> 0x1f)) - (uint)(uVar1 < local_8);
  }
  else {
    uVar5 = local_8 + local_10;
    uVar1 = _Tm->tm_sec;
    uVar7 = uVar1 - uVar5;
    iVar4 = (((int)uVar1 >> 0x1f) - ((int)uVar5 >> 0x1f)) - (uint)(uVar1 < uVar5);
    _Tm->tm_isdst = 1;
  }
  iVar6 = __allrem(uVar7,iVar4,0x3c,0);
  _Tm->tm_sec = iVar6;
  if (iVar6 < 0) {
    bVar8 = 0x3b < uVar7;
    uVar7 = uVar7 - 0x3c;
    _Tm->tm_sec = iVar6 + 0x3c;
    iVar4 = iVar4 + -1 + (uint)bVar8;
  }
  lVar9 = __alldiv(uVar7,iVar4,0x3c,0);
  lVar9 = lVar9 + _Tm->tm_min;
  iVar4 = __allrem(lVar9,0x3c,0);
  _Tm->tm_min = iVar4;
  if (iVar4 < 0) {
    _Tm->tm_min = iVar4 + 0x3c;
    lVar9 = lVar9 + -0x3c;
  }
  lVar9 = __alldiv(lVar9,0x3c,0);
  lVar9 = lVar9 + _Tm->tm_hour;
  iVar4 = __allrem(lVar9,0x18,0);
  _Tm->tm_hour = iVar4;
  if (iVar4 < 0) {
    _Tm->tm_hour = iVar4 + 0x18;
    lVar9 = lVar9 + -0x18;
  }
  lVar9 = __alldiv(lVar9,0x18,0);
  iVar4 = (int)lVar9;
  if (-1 < lVar9) {
    if ((0xffffffff < lVar9) || (iVar4 != 0)) {
      _Tm->tm_mday = _Tm->tm_mday + iVar4;
      _Tm->tm_wday = (_Tm->tm_wday + iVar4) % 7;
      goto LAB_00a418ed;
    }
    if (0xffffffff < lVar9) {
      return 0;
    }
    if (-1 < lVar9) {
      return 0;
    }
  }
  _Tm->tm_mday = _Tm->tm_mday + iVar4;
  _Tm->tm_wday = (iVar4 + 7 + _Tm->tm_wday) % 7;
  if (_Tm->tm_mday < 1) {
    _Tm->tm_yday = _Tm->tm_yday + iVar4 + 0x16d;
    _Tm->tm_year = _Tm->tm_year + -1;
    _Tm->tm_mday = _Tm->tm_mday + 0x1f;
    _Tm->tm_mon = 0xb;
    return 0;
  }
LAB_00a418ed:
  _Tm->tm_yday = _Tm->tm_yday + iVar4;
  return 0;
}



// Library Function - Single Match
//  __localtime64
// 
// Library: Visual Studio 2008 Release

tm * __cdecl __localtime64(__time64_t *_Time)

{
  tm *_Tm;
  errno_t eVar1;
  
  _Tm = ___getgmtimebuf();
  if (_Tm != (tm *)0x0) {
    eVar1 = __localtime64_s(_Tm,_Time);
    _Tm = (tm *)(~-(uint)(eVar1 != 0) & (uint)_Tm);
  }
  return _Tm;
}



// Library Function - Single Match
//  __tolower_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __tolower_l(int _C,_locale_t _Locale)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int *piVar4;
  CHAR CVar5;
  localeinfo_struct local_1c;
  int local_14;
  char local_10;
  byte local_c;
  undefined local_b;
  CHAR local_8;
  CHAR local_7;
  undefined local_6;
  
  iVar1 = _C;
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_1c,_Locale);
  if ((uint)_C < 0x100) {
    if ((int)(local_1c.locinfo)->locale_name[3] < 2) {
      uVar2 = *(ushort *)(local_1c.locinfo[1].lc_category[0].locale + _C * 2) & 1;
    }
    else {
      uVar2 = __isctype_l(_C,1,&local_1c);
    }
    if (uVar2 == 0) {
LAB_00a419be:
      if (local_10 == '\0') {
        return iVar1;
      }
      *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
      return iVar1;
    }
    uVar2 = (uint)*(byte *)((int)local_1c.locinfo[1].lc_category[0].wlocale + _C);
  }
  else {
    CVar5 = (CHAR)_C;
    if (((int)(local_1c.locinfo)->locale_name[3] < 2) ||
       (iVar3 = __isleadbyte_l(_C >> 8 & 0xff,&local_1c), iVar3 == 0)) {
      piVar4 = __errno();
      *piVar4 = 0x2a;
      local_7 = '\0';
      iVar3 = 1;
      local_8 = CVar5;
    }
    else {
      _C._0_1_ = (CHAR)((uint)_C >> 8);
      local_8 = (CHAR)_C;
      local_6 = 0;
      iVar3 = 2;
      local_7 = CVar5;
    }
    iVar3 = ___crtLCMapStringA(&local_1c,(local_1c.locinfo)->lc_category[0].wlocale,0x100,&local_8,
                               iVar3,(LPSTR)&local_c,3,(local_1c.locinfo)->lc_codepage,1);
    if (iVar3 == 0) goto LAB_00a419be;
    uVar2 = (uint)local_c;
    if (iVar3 != 1) {
      uVar2 = (uint)CONCAT11(local_c,local_b);
    }
  }
  if (local_10 != '\0') {
    *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
  }
  return uVar2;
}



// Library Function - Single Match
//  _tolower
// 
// Library: Visual Studio 2008 Release

int __cdecl _tolower(int _C)

{
  if (DAT_032eb230 == 0) {
    if (_C - 0x41U < 0x1a) {
      return _C + 0x20;
    }
  }
  else {
    _C = __tolower_l(_C,(_locale_t)0x0);
  }
  return _C;
}



// Library Function - Single Match
//  __toupper_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __toupper_l(int _C,_locale_t _Locale)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int *piVar4;
  CHAR CVar5;
  localeinfo_struct local_1c;
  int local_14;
  char local_10;
  byte local_c;
  undefined local_b;
  CHAR local_8;
  CHAR local_7;
  undefined local_6;
  
  iVar1 = _C;
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_1c,_Locale);
  if ((uint)_C < 0x100) {
    if ((int)(local_1c.locinfo)->locale_name[3] < 2) {
      uVar2 = *(ushort *)(local_1c.locinfo[1].lc_category[0].locale + _C * 2) & 2;
    }
    else {
      uVar2 = __isctype_l(_C,2,&local_1c);
    }
    if (uVar2 == 0) {
LAB_00a41afd:
      if (local_10 == '\0') {
        return iVar1;
      }
      *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
      return iVar1;
    }
    uVar2 = (uint)*(byte *)((int)local_1c.locinfo[1].lc_category[0].refcount + _C);
  }
  else {
    CVar5 = (CHAR)_C;
    if (((int)(local_1c.locinfo)->locale_name[3] < 2) ||
       (iVar3 = __isleadbyte_l(_C >> 8 & 0xff,&local_1c), iVar3 == 0)) {
      piVar4 = __errno();
      *piVar4 = 0x2a;
      local_7 = '\0';
      iVar3 = 1;
      local_8 = CVar5;
    }
    else {
      _C._0_1_ = (CHAR)((uint)_C >> 8);
      local_8 = (CHAR)_C;
      local_6 = 0;
      iVar3 = 2;
      local_7 = CVar5;
    }
    iVar3 = ___crtLCMapStringA(&local_1c,(local_1c.locinfo)->lc_category[0].wlocale,0x200,&local_8,
                               iVar3,(LPSTR)&local_c,3,(local_1c.locinfo)->lc_codepage,1);
    if (iVar3 == 0) goto LAB_00a41afd;
    uVar2 = (uint)local_c;
    if (iVar3 != 1) {
      uVar2 = (uint)CONCAT11(local_c,local_b);
    }
  }
  if (local_10 != '\0') {
    *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
  }
  return uVar2;
}



// Library Function - Single Match
//  _toupper
// 
// Library: Visual Studio 2008 Release

int __cdecl _toupper(int _C)

{
  if (DAT_032eb230 == 0) {
    if (_C - 0x61U < 0x1a) {
      return _C + -0x20;
    }
  }
  else {
    _C = __toupper_l(_C,(_locale_t)0x0);
  }
  return _C;
}



// Library Function - Single Match
//  _memset
// 
// Libraries: Visual Studio 2005 Debug, Visual Studio 2005 Release, Visual Studio 2008 Debug, Visual
// Studio 2008 Release

void * __cdecl _memset(void *_Dst,int _Val,size_t _Size)

{
  uint uVar1;
  void *pvVar2;
  uint uVar3;
  size_t sVar4;
  uint *puVar5;
  
  if (_Size == 0) {
    return _Dst;
  }
  uVar1 = _Val & 0xff;
  if ((((char)_Val == '\0') && (0xff < _Size)) && (DAT_032f16e0 != 0)) {
    pvVar2 = (void *)__VEC_memzero();
    return pvVar2;
  }
  puVar5 = (uint *)_Dst;
  if (3 < _Size) {
    uVar3 = -(int)_Dst & 3;
    sVar4 = _Size;
    if (uVar3 != 0) {
      sVar4 = _Size - uVar3;
      do {
        *(char *)puVar5 = (char)_Val;
        puVar5 = (uint *)((int)puVar5 + 1);
        uVar3 = uVar3 - 1;
      } while (uVar3 != 0);
    }
    uVar1 = uVar1 * 0x1010101;
    _Size = sVar4 & 3;
    uVar3 = sVar4 >> 2;
    if (uVar3 != 0) {
      for (; uVar3 != 0; uVar3 = uVar3 - 1) {
        *puVar5 = uVar1;
        puVar5 = puVar5 + 1;
      }
      if (_Size == 0) {
        return _Dst;
      }
    }
  }
  do {
    *(char *)puVar5 = (char)uVar1;
    puVar5 = (uint *)((int)puVar5 + 1);
    _Size = _Size - 1;
  } while (_Size != 0);
  return _Dst;
}



// Library Function - Single Match
//  __alldiv
// 
// Library: Visual Studio 2008 Release

undefined8 __alldiv(uint param_1,uint param_2,uint param_3,uint param_4)

{
  ulonglong uVar1;
  longlong lVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  bool bVar10;
  char cVar11;
  uint uVar9;
  
  cVar11 = (int)param_2 < 0;
  if ((bool)cVar11) {
    bVar10 = param_1 != 0;
    param_1 = -param_1;
    param_2 = -(uint)bVar10 - param_2;
  }
  if ((int)param_4 < 0) {
    cVar11 = cVar11 + '\x01';
    bVar10 = param_3 != 0;
    param_3 = -param_3;
    param_4 = -(uint)bVar10 - param_4;
  }
  uVar3 = param_1;
  uVar5 = param_3;
  uVar6 = param_2;
  uVar9 = param_4;
  if (param_4 == 0) {
    uVar3 = param_2 / param_3;
    iVar4 = (int)(((ulonglong)param_2 % (ulonglong)param_3 << 0x20 | (ulonglong)param_1) /
                 (ulonglong)param_3);
  }
  else {
    do {
      uVar8 = uVar9 >> 1;
      uVar5 = uVar5 >> 1 | (uint)((uVar9 & 1) != 0) << 0x1f;
      uVar7 = uVar6 >> 1;
      uVar3 = uVar3 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;
      uVar6 = uVar7;
      uVar9 = uVar8;
    } while (uVar8 != 0);
    uVar1 = CONCAT44(uVar7,uVar3) / (ulonglong)uVar5;
    iVar4 = (int)uVar1;
    lVar2 = (ulonglong)param_3 * (uVar1 & 0xffffffff);
    uVar3 = (uint)((ulonglong)lVar2 >> 0x20);
    uVar5 = uVar3 + iVar4 * param_4;
    if (((CARRY4(uVar3,iVar4 * param_4)) || (param_2 < uVar5)) ||
       ((param_2 <= uVar5 && (param_1 < (uint)lVar2)))) {
      iVar4 = iVar4 + -1;
    }
    uVar3 = 0;
  }
  if (cVar11 == '\x01') {
    bVar10 = iVar4 != 0;
    iVar4 = -iVar4;
    uVar3 = -(uint)bVar10 - uVar3;
  }
  return CONCAT44(uVar3,iVar4);
}



// Library Function - Single Match
//  void __stdcall _JumpToContinuation(void *,struct EHRegistrationNode *)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release

void _JumpToContinuation(void *param_1,EHRegistrationNode *param_2)

{
                    // WARNING: Load size is inaccurate
  ExceptionList = *ExceptionList;
                    // WARNING: Could not recover jumptable at 0x00a41d35. Too many branches
                    // WARNING: Treating indirect jump as call
  (*(code *)param_1)();
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  void __stdcall _CallMemberFunction1(void *,void *,void *)
//  void __stdcall _CallMemberFunction2(void *,void *,void *,int)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release

void FID_conflict__CallMemberFunction1(undefined4 param_1,code *param_2)

{
  LOCK();
  UNLOCK();
                    // WARNING: Could not recover jumptable at 0x00a41d41. Too many branches
                    // WARNING: Treating indirect jump as call
  (*param_2)();
  return;
}



// Library Function - Single Match
//  void __stdcall _UnwindNestedFrames(struct EHRegistrationNode *,struct EHExceptionRecord *)
// 
// Library: Visual Studio 2008 Release

void _UnwindNestedFrames(EHRegistrationNode *param_1,EHExceptionRecord *param_2)

{
  void *pvVar1;
  
  pvVar1 = ExceptionList;
  RtlUnwind(param_1,(PVOID)0xa41d6e,(PEXCEPTION_RECORD)param_2,(PVOID)0x0);
  *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) & 0xfffffffd;
  *(void **)pvVar1 = ExceptionList;
  ExceptionList = pvVar1;
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  ___CxxFrameHandler
//  ___CxxFrameHandler2
//  ___CxxFrameHandler3
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release

undefined4
FID_conflict____CxxFrameHandler3
          (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  
  uVar1 = ___InternalCxxFrameHandler(param_1,param_2,param_3,param_4);
  return uVar1;
}



// Library Function - Single Match
//  ___CxxLongjmpUnwind@4
// 
// Library: Visual Studio 2008 Release

void ___CxxLongjmpUnwind_4(int param_1)

{
  ___FrameUnwindToState
            (*(undefined4 *)(param_1 + 0x18),0,*(undefined4 *)(param_1 + 0x28),
             *(undefined4 *)(param_1 + 0x1c));
  return;
}



// Library Function - Single Match
//  enum _EXCEPTION_DISPOSITION __cdecl CatchGuardHandler(struct EHExceptionRecord *,struct
// CatchGuardRN *,void *,void *)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

_EXCEPTION_DISPOSITION __cdecl
CatchGuardHandler(EHExceptionRecord *param_1,CatchGuardRN *param_2,void *param_3,void *param_4)

{
  _EXCEPTION_DISPOSITION _Var1;
  
  ___security_check_cookie_4();
  _Var1 = ___InternalCxxFrameHandler
                    (param_1,*(undefined4 *)(param_2 + 0x10),param_3,0,
                     *(undefined4 *)(param_2 + 0xc),*(undefined4 *)(param_2 + 0x14),param_2,0);
  return _Var1;
}



// Library Function - Single Match
//  int __cdecl _CallSETranslator(struct EHExceptionRecord *,struct EHRegistrationNode *,void *,void
// *,struct _s_FuncInfo const *,int,struct EHRegistrationNode *)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

int __cdecl
_CallSETranslator(EHExceptionRecord *param_1,EHRegistrationNode *param_2,void *param_3,void *param_4
                 ,_s_FuncInfo *param_5,int param_6,EHRegistrationNode *param_7)

{
  _ptiddata p_Var1;
  int local_3c;
  EHExceptionRecord *local_38;
  void *local_34;
  code *local_30;
  undefined4 *local_2c;
  code *local_28;
  uint local_24;
  _s_FuncInfo *local_20;
  EHRegistrationNode *local_1c;
  int local_18;
  EHRegistrationNode *local_14;
  undefined *local_10;
  undefined *local_c;
  int local_8;
  
  local_c = &stack0xfffffffc;
  local_10 = &stack0xffffffc0;
  if (param_1 == (EHExceptionRecord *)0x123) {
    *(undefined4 *)param_2 = 0xa41eca;
    local_3c = 1;
  }
  else {
    local_28 = TranslatorGuardHandler;
    local_24 = DAT_0323f878 ^ (uint)&local_2c;
    local_20 = param_5;
    local_1c = param_2;
    local_18 = param_6;
    local_14 = param_7;
    local_8 = 0;
    local_2c = (undefined4 *)ExceptionList;
    ExceptionList = &local_2c;
    local_38 = param_1;
    local_34 = param_3;
    p_Var1 = __getptd();
    local_30 = (code *)p_Var1->_translator;
    (*local_30)(*(undefined4 *)param_1,&local_38);
    local_3c = 0;
    if (local_8 != 0) {
                    // WARNING: Load size is inaccurate
      *local_2c = *ExceptionList;
    }
    ExceptionList = local_2c;
  }
  return local_3c;
}



// Library Function - Single Match
//  enum _EXCEPTION_DISPOSITION __cdecl TranslatorGuardHandler(struct EHExceptionRecord *,struct
// TranslatorGuardRN *,void *,void *)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release

_EXCEPTION_DISPOSITION __cdecl
TranslatorGuardHandler
          (EHExceptionRecord *param_1,TranslatorGuardRN *param_2,void *param_3,void *param_4)

{
  _EXCEPTION_DISPOSITION _Var1;
  code *local_8;
  
  ___security_check_cookie_4();
  if ((*(uint *)(param_1 + 4) & 0x66) != 0) {
    *(undefined4 *)(param_2 + 0x24) = 1;
    return 1;
  }
  ___InternalCxxFrameHandler
            (param_1,*(undefined4 *)(param_2 + 0x10),param_3,0,*(undefined4 *)(param_2 + 0xc),
             *(undefined4 *)(param_2 + 0x14),*(undefined4 *)(param_2 + 0x18),1);
  if (*(int *)(param_2 + 0x24) == 0) {
    _UnwindNestedFrames((EHRegistrationNode *)param_2,param_1);
  }
  _CallSETranslator((EHExceptionRecord *)0x123,(EHRegistrationNode *)&local_8,(void *)0x0,
                    (void *)0x0,(_s_FuncInfo *)0x0,0,(EHRegistrationNode *)0x0);
                    // WARNING: Could not recover jumptable at 0x00a41f8d. Too many branches
                    // WARNING: Treating indirect jump as call
  _Var1 = (*local_8)();
  return _Var1;
}



// Library Function - Single Match
//  struct _s_TryBlockMapEntry const * __cdecl _GetRangeOfTrysToCheck(struct _s_FuncInfo const
// *,int,int,unsigned int *,unsigned int *)
// 
// Library: Visual Studio 2008 Release

_s_TryBlockMapEntry * __cdecl
_GetRangeOfTrysToCheck(_s_FuncInfo *param_1,int param_2,int param_3,uint *param_4,uint *param_5)

{
  TryBlockMapEntry *pTVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  
  pTVar1 = param_1->pTryBlockMap;
  uVar5 = param_1->nTryBlocks;
  uVar2 = uVar5;
  uVar3 = uVar5;
  while (uVar4 = uVar2, -1 < param_2) {
    if (uVar5 == 0xffffffff) {
      _inconsistency();
    }
    uVar5 = uVar5 - 1;
    if (((pTVar1[uVar5].tryHigh < param_3) && (param_3 <= pTVar1[uVar5].catchHigh)) ||
       (uVar2 = uVar4, uVar5 == 0xffffffff)) {
      param_2 = param_2 + -1;
      uVar2 = uVar5;
      uVar3 = uVar4;
    }
  }
  uVar5 = uVar5 + 1;
  *param_4 = uVar5;
  *param_5 = uVar3;
  if ((param_1->nTryBlocks < uVar3) || (uVar3 < uVar5)) {
    _inconsistency();
  }
  return pTVar1 + uVar5;
}



// Library Function - Single Match
//  __CreateFrameInfo
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

undefined4 * __CreateFrameInfo(undefined4 *param_1,undefined4 param_2)

{
  _ptiddata p_Var1;
  
  *param_1 = param_2;
  p_Var1 = __getptd();
  param_1[1] = p_Var1->_pFrameInfoChain;
  p_Var1 = __getptd();
  p_Var1->_pFrameInfoChain = param_1;
  return param_1;
}



// Library Function - Single Match
//  __IsExceptionObjectToBeDestroyed
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

undefined4 __IsExceptionObjectToBeDestroyed(int param_1)

{
  _ptiddata p_Var1;
  int *piVar2;
  
  p_Var1 = __getptd();
  piVar2 = (int *)p_Var1->_pFrameInfoChain;
  while( true ) {
    if (piVar2 == (int *)0x0) {
      return 1;
    }
    if (*piVar2 == param_1) break;
    piVar2 = (int *)piVar2[1];
  }
  return 0;
}



// Library Function - Single Match
//  __FindAndUnlinkFrame
// 
// Library: Visual Studio 2008 Release

void __FindAndUnlinkFrame(void *param_1)

{
  void *pvVar1;
  _ptiddata p_Var2;
  void *pvVar3;
  
  p_Var2 = __getptd();
  if (param_1 == p_Var2->_pFrameInfoChain) {
    p_Var2 = __getptd();
    p_Var2->_pFrameInfoChain = *(void **)((int)param_1 + 4);
  }
  else {
    p_Var2 = __getptd();
    pvVar1 = p_Var2->_pFrameInfoChain;
    do {
      pvVar3 = pvVar1;
      if (*(int *)((int)pvVar3 + 4) == 0) {
        _inconsistency();
        return;
      }
      pvVar1 = *(void **)((int)pvVar3 + 4);
    } while (param_1 != *(void **)((int)pvVar3 + 4));
    *(undefined4 *)((int)pvVar3 + 4) = *(undefined4 *)((int)param_1 + 4);
  }
  return;
}



// Library Function - Single Match
//  void * __cdecl _CallCatchBlock2(struct EHRegistrationNode *,struct _s_FuncInfo const *,void
// *,int,unsigned long)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release

void * __cdecl
_CallCatchBlock2(EHRegistrationNode *param_1,_s_FuncInfo *param_2,void *param_3,int param_4,
                ulong param_5)

{
  void *pvVar1;
  void *local_1c;
  code *local_18;
  uint local_14;
  _s_FuncInfo *local_10;
  EHRegistrationNode *local_c;
  int local_8;
  
  local_14 = DAT_0323f878 ^ (uint)&local_1c;
  local_10 = param_2;
  local_8 = param_4 + 1;
  local_18 = CatchGuardHandler;
  local_c = param_1;
  local_1c = ExceptionList;
  ExceptionList = &local_1c;
  pvVar1 = (void *)__CallSettingFrame_12(param_3,param_1,param_5);
  ExceptionList = local_1c;
  return pvVar1;
}



// WARNING: This is an inlined function
// WARNING: Unable to track spacebase fully for stack
// Library Function - Single Match
//  __EH_prolog3
// 
// Libraries: Visual Studio 2005, Visual Studio 2008, Visual Studio 2010, Visual Studio 2012

void __EH_prolog3(int param_1)

{
  undefined4 unaff_EBX;
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  undefined4 unaff_retaddr;
  uint auStack_1c [5];
  undefined local_8 [8];
  
  param_1 = -param_1;
  *(undefined4 *)((int)auStack_1c + param_1 + 0x10) = unaff_EBX;
  *(undefined4 *)((int)auStack_1c + param_1 + 0xc) = unaff_ESI;
  *(undefined4 *)((int)auStack_1c + param_1 + 8) = unaff_EDI;
  *(uint *)((int)auStack_1c + param_1 + 4) = DAT_0323f878 ^ (uint)&stack0x00000004;
  *(undefined4 *)((int)auStack_1c + param_1) = unaff_retaddr;
  ExceptionList = local_8;
  return;
}



// WARNING: This is an inlined function
// WARNING: Unable to track spacebase fully for stack
// Library Function - Single Match
//  __EH_prolog3_catch
// 
// Libraries: Visual Studio 2005, Visual Studio 2008, Visual Studio 2010, Visual Studio 2012

void __EH_prolog3_catch(int param_1)

{
  undefined4 unaff_EBX;
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  undefined4 unaff_retaddr;
  uint auStack_1c [5];
  undefined local_8 [8];
  
  param_1 = -param_1;
  *(undefined4 *)((int)auStack_1c + param_1 + 0x10) = unaff_EBX;
  *(undefined4 *)((int)auStack_1c + param_1 + 0xc) = unaff_ESI;
  *(undefined4 *)((int)auStack_1c + param_1 + 8) = unaff_EDI;
  *(uint *)((int)auStack_1c + param_1 + 4) = DAT_0323f878 ^ (uint)&stack0x00000004;
  *(undefined4 *)((int)auStack_1c + param_1) = unaff_retaddr;
  ExceptionList = local_8;
  return;
}



// WARNING: This is an inlined function
// WARNING: Unable to track spacebase fully for stack
// Library Function - Single Match
//  __EH_prolog3_GS
// 
// Libraries: Visual Studio 2005, Visual Studio 2008, Visual Studio 2010, Visual Studio 2012

void __EH_prolog3_GS(int param_1)

{
  undefined4 unaff_EBX;
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  undefined4 unaff_retaddr;
  uint auStack_1c [5];
  undefined local_8 [8];
  
  param_1 = -param_1;
  *(undefined4 *)((int)auStack_1c + param_1 + 0x10) = unaff_EBX;
  *(undefined4 *)((int)auStack_1c + param_1 + 0xc) = unaff_ESI;
  *(undefined4 *)((int)auStack_1c + param_1 + 8) = unaff_EDI;
  *(uint *)((int)auStack_1c + param_1 + 4) = DAT_0323f878 ^ (uint)&stack0x00000004;
  *(undefined4 *)((int)auStack_1c + param_1) = unaff_retaddr;
  ExceptionList = local_8;
  return;
}



// WARNING: This is an inlined function
// WARNING: Unable to track spacebase fully for stack
// Library Function - Single Match
//  __EH_prolog3_catch_GS
// 
// Libraries: Visual Studio 2005, Visual Studio 2008, Visual Studio 2010, Visual Studio 2012

void __EH_prolog3_catch_GS(int param_1)

{
  undefined4 unaff_EBX;
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  undefined4 unaff_retaddr;
  uint auStack_1c [5];
  undefined local_8 [8];
  
  param_1 = -param_1;
  *(undefined4 *)((int)auStack_1c + param_1 + 0x10) = unaff_EBX;
  *(undefined4 *)((int)auStack_1c + param_1 + 0xc) = unaff_ESI;
  *(undefined4 *)((int)auStack_1c + param_1 + 8) = unaff_EDI;
  *(uint *)((int)auStack_1c + param_1 + 4) = DAT_0323f878 ^ (uint)&stack0x00000004;
  *(undefined4 *)((int)auStack_1c + param_1) = unaff_retaddr;
  ExceptionList = local_8;
  return;
}



// WARNING: This is an inlined function
// Library Function - Single Match
//  __EH_epilog3
// 
// Libraries: Visual Studio 2005, Visual Studio 2008, Visual Studio 2010, Visual Studio 2012

void __EH_epilog3(void)

{
  undefined4 *unaff_EBP;
  undefined4 unaff_retaddr;
  
  ExceptionList = (void *)unaff_EBP[-3];
  *unaff_EBP = unaff_retaddr;
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00a421fb(void)

{
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00a4220a(void)

{
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  _memcpy
// 
// Libraries: Visual Studio 2005 Debug, Visual Studio 2005 Release, Visual Studio 2008 Debug, Visual
// Studio 2008 Release

void * __cdecl _memcpy(void *_Dst,void *_Src,size_t _Size)

{
  void *pvVar1;
  uint uVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  
  if ((_Src < _Dst) && (_Dst < (void *)(_Size + (int)_Src))) {
    puVar4 = (undefined4 *)((_Size - 4) + (int)_Src);
    puVar5 = (undefined4 *)((_Size - 4) + (int)_Dst);
    if (((uint)puVar5 & 3) == 0) {
      uVar2 = _Size >> 2;
      uVar3 = _Size & 3;
      if (7 < uVar2) {
        for (; uVar2 != 0; uVar2 = uVar2 - 1) {
          *puVar5 = *puVar4;
          puVar4 = puVar4 + -1;
          puVar5 = puVar5 + -1;
        }
        switch(uVar3) {
        case 0:
          return _Dst;
        case 2:
          goto switchD_00a42403_caseD_2;
        case 3:
          goto switchD_00a42403_caseD_3;
        }
        goto switchD_00a42403_caseD_1;
      }
    }
    else {
      switch(_Size) {
      case 0:
        goto switchD_00a42403_caseD_0;
      case 1:
        goto switchD_00a42403_caseD_1;
      case 2:
        goto switchD_00a42403_caseD_2;
      case 3:
        goto switchD_00a42403_caseD_3;
      default:
        uVar2 = _Size - ((uint)puVar5 & 3);
        switch((uint)puVar5 & 3) {
        case 1:
          uVar3 = uVar2 & 3;
          *(undefined *)((int)puVar5 + 3) = *(undefined *)((int)puVar4 + 3);
          puVar4 = (undefined4 *)((int)puVar4 + -1);
          uVar2 = uVar2 >> 2;
          puVar5 = (undefined4 *)((int)puVar5 - 1);
          if (7 < uVar2) {
            for (; uVar2 != 0; uVar2 = uVar2 - 1) {
              *puVar5 = *puVar4;
              puVar4 = puVar4 + -1;
              puVar5 = puVar5 + -1;
            }
            switch(uVar3) {
            case 0:
              return _Dst;
            case 2:
              goto switchD_00a42403_caseD_2;
            case 3:
              goto switchD_00a42403_caseD_3;
            }
            goto switchD_00a42403_caseD_1;
          }
          break;
        case 2:
          uVar3 = uVar2 & 3;
          *(undefined *)((int)puVar5 + 3) = *(undefined *)((int)puVar4 + 3);
          uVar2 = uVar2 >> 2;
          *(undefined *)((int)puVar5 + 2) = *(undefined *)((int)puVar4 + 2);
          puVar4 = (undefined4 *)((int)puVar4 + -2);
          puVar5 = (undefined4 *)((int)puVar5 - 2);
          if (7 < uVar2) {
            for (; uVar2 != 0; uVar2 = uVar2 - 1) {
              *puVar5 = *puVar4;
              puVar4 = puVar4 + -1;
              puVar5 = puVar5 + -1;
            }
            switch(uVar3) {
            case 0:
              return _Dst;
            case 2:
              goto switchD_00a42403_caseD_2;
            case 3:
              goto switchD_00a42403_caseD_3;
            }
            goto switchD_00a42403_caseD_1;
          }
          break;
        case 3:
          uVar3 = uVar2 & 3;
          *(undefined *)((int)puVar5 + 3) = *(undefined *)((int)puVar4 + 3);
          *(undefined *)((int)puVar5 + 2) = *(undefined *)((int)puVar4 + 2);
          uVar2 = uVar2 >> 2;
          *(undefined *)((int)puVar5 + 1) = *(undefined *)((int)puVar4 + 1);
          puVar4 = (undefined4 *)((int)puVar4 + -3);
          puVar5 = (undefined4 *)((int)puVar5 - 3);
          if (7 < uVar2) {
            for (; uVar2 != 0; uVar2 = uVar2 - 1) {
              *puVar5 = *puVar4;
              puVar4 = puVar4 + -1;
              puVar5 = puVar5 + -1;
            }
            switch(uVar3) {
            case 0:
              return _Dst;
            case 2:
              goto switchD_00a42403_caseD_2;
            case 3:
              goto switchD_00a42403_caseD_3;
            }
            goto switchD_00a42403_caseD_1;
          }
        }
      }
    }
    switch(uVar2) {
    case 7:
      puVar5[7 - uVar2] = puVar4[7 - uVar2];
    case 6:
      puVar5[6 - uVar2] = puVar4[6 - uVar2];
    case 5:
      puVar5[5 - uVar2] = puVar4[5 - uVar2];
    case 4:
      puVar5[4 - uVar2] = puVar4[4 - uVar2];
    case 3:
      puVar5[3 - uVar2] = puVar4[3 - uVar2];
    case 2:
      puVar5[2 - uVar2] = puVar4[2 - uVar2];
    case 1:
      puVar5[1 - uVar2] = puVar4[1 - uVar2];
      puVar4 = puVar4 + -uVar2;
      puVar5 = puVar5 + -uVar2;
    }
    switch(uVar3) {
    case 1:
switchD_00a42403_caseD_1:
      *(undefined *)((int)puVar5 + 3) = *(undefined *)((int)puVar4 + 3);
      return _Dst;
    case 2:
switchD_00a42403_caseD_2:
      *(undefined *)((int)puVar5 + 3) = *(undefined *)((int)puVar4 + 3);
      *(undefined *)((int)puVar5 + 2) = *(undefined *)((int)puVar4 + 2);
      return _Dst;
    case 3:
switchD_00a42403_caseD_3:
      *(undefined *)((int)puVar5 + 3) = *(undefined *)((int)puVar4 + 3);
      *(undefined *)((int)puVar5 + 2) = *(undefined *)((int)puVar4 + 2);
      *(undefined *)((int)puVar5 + 1) = *(undefined *)((int)puVar4 + 1);
      return _Dst;
    }
switchD_00a42403_caseD_0:
    return _Dst;
  }
  if (((0xff < _Size) && (DAT_032f16e0 != 0)) && (((uint)_Dst & 0xf) == ((uint)_Src & 0xf))) {
    pvVar1 = (void *)__VEC_memcpy();
    return pvVar1;
  }
  puVar4 = (undefined4 *)_Dst;
  if (((uint)_Dst & 3) == 0) {
    uVar2 = _Size >> 2;
    uVar3 = _Size & 3;
    if (7 < uVar2) {
                    // WARNING: Load size is inaccurate
      for (; uVar2 != 0; uVar2 = uVar2 - 1) {
        *puVar4 = *_Src;
        _Src = (undefined4 *)((int)_Src + 4);
        puVar4 = puVar4 + 1;
      }
      switch(uVar3) {
      case 0:
        return _Dst;
      case 2:
        goto switchD_00a4227c_caseD_2;
      case 3:
        goto switchD_00a4227c_caseD_3;
      }
      goto switchD_00a4227c_caseD_1;
    }
  }
  else {
    switch(_Size) {
    case 0:
      goto switchD_00a4227c_caseD_0;
    case 1:
      goto switchD_00a4227c_caseD_1;
    case 2:
      goto switchD_00a4227c_caseD_2;
    case 3:
      goto switchD_00a4227c_caseD_3;
    default:
      uVar2 = (_Size - 4) + ((uint)_Dst & 3);
      switch((uint)_Dst & 3) {
      case 1:
        uVar3 = uVar2 & 3;
                    // WARNING: Load size is inaccurate
        *(undefined *)_Dst = *_Src;
        *(undefined *)((int)_Dst + 1) = *(undefined *)((int)_Src + 1);
        uVar2 = uVar2 >> 2;
        *(undefined *)((int)_Dst + 2) = *(undefined *)((int)_Src + 2);
        _Src = (void *)((int)_Src + 3);
        puVar4 = (undefined4 *)((int)_Dst + 3);
        if (7 < uVar2) {
                    // WARNING: Load size is inaccurate
          for (; uVar2 != 0; uVar2 = uVar2 - 1) {
            *puVar4 = *_Src;
            _Src = (undefined4 *)((int)_Src + 4);
            puVar4 = puVar4 + 1;
          }
          switch(uVar3) {
          case 0:
            return _Dst;
          case 2:
            goto switchD_00a4227c_caseD_2;
          case 3:
            goto switchD_00a4227c_caseD_3;
          }
          goto switchD_00a4227c_caseD_1;
        }
        break;
      case 2:
        uVar3 = uVar2 & 3;
                    // WARNING: Load size is inaccurate
        *(undefined *)_Dst = *_Src;
        uVar2 = uVar2 >> 2;
        *(undefined *)((int)_Dst + 1) = *(undefined *)((int)_Src + 1);
        _Src = (void *)((int)_Src + 2);
        puVar4 = (undefined4 *)((int)_Dst + 2);
        if (7 < uVar2) {
                    // WARNING: Load size is inaccurate
          for (; uVar2 != 0; uVar2 = uVar2 - 1) {
            *puVar4 = *_Src;
            _Src = (undefined4 *)((int)_Src + 4);
            puVar4 = puVar4 + 1;
          }
          switch(uVar3) {
          case 0:
            return _Dst;
          case 2:
            goto switchD_00a4227c_caseD_2;
          case 3:
            goto switchD_00a4227c_caseD_3;
          }
          goto switchD_00a4227c_caseD_1;
        }
        break;
      case 3:
        uVar3 = uVar2 & 3;
                    // WARNING: Load size is inaccurate
        *(undefined *)_Dst = *_Src;
        _Src = (void *)((int)_Src + 1);
        uVar2 = uVar2 >> 2;
        puVar4 = (undefined4 *)((int)_Dst + 1);
        if (7 < uVar2) {
                    // WARNING: Load size is inaccurate
          for (; uVar2 != 0; uVar2 = uVar2 - 1) {
            *puVar4 = *_Src;
            _Src = (undefined4 *)((int)_Src + 4);
            puVar4 = puVar4 + 1;
          }
          switch(uVar3) {
          case 0:
            return _Dst;
          case 2:
            goto switchD_00a4227c_caseD_2;
          case 3:
            goto switchD_00a4227c_caseD_3;
          }
          goto switchD_00a4227c_caseD_1;
        }
      }
    }
  }
  switch(uVar2) {
  case 7:
    puVar4[uVar2 - 7] = *(undefined4 *)((int)_Src + (uVar2 - 7) * 4);
  case 6:
    puVar4[uVar2 - 6] = *(undefined4 *)((int)_Src + (uVar2 - 6) * 4);
  case 5:
    puVar4[uVar2 - 5] = *(undefined4 *)((int)_Src + (uVar2 - 5) * 4);
  case 4:
    puVar4[uVar2 - 4] = *(undefined4 *)((int)_Src + (uVar2 - 4) * 4);
  case 3:
    puVar4[uVar2 - 3] = *(undefined4 *)((int)_Src + (uVar2 - 3) * 4);
  case 2:
    puVar4[uVar2 - 2] = *(undefined4 *)((int)_Src + (uVar2 - 2) * 4);
  case 1:
    puVar4[uVar2 - 1] = *(undefined4 *)((int)_Src + (uVar2 - 1) * 4);
    _Src = (void *)((int)_Src + uVar2 * 4);
    puVar4 = puVar4 + uVar2;
  }
  switch(uVar3) {
  case 1:
switchD_00a4227c_caseD_1:
                    // WARNING: Load size is inaccurate
    *(undefined *)puVar4 = *_Src;
    return _Dst;
  case 2:
switchD_00a4227c_caseD_2:
                    // WARNING: Load size is inaccurate
    *(undefined *)puVar4 = *_Src;
    *(undefined *)((int)puVar4 + 1) = *(undefined *)((int)_Src + 1);
    return _Dst;
  case 3:
switchD_00a4227c_caseD_3:
                    // WARNING: Load size is inaccurate
    *(undefined *)puVar4 = *_Src;
    *(undefined *)((int)puVar4 + 1) = *(undefined *)((int)_Src + 1);
    *(undefined *)((int)puVar4 + 2) = *(undefined *)((int)_Src + 2);
    return _Dst;
  }
switchD_00a4227c_caseD_0:
  return _Dst;
}



// Library Function - Single Match
//  __CxxThrowException@8
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __CxxThrowException_8(undefined4 param_1,byte *param_2)

{
  int iVar1;
  DWORD *pDVar2;
  DWORD *pDVar3;
  DWORD local_24 [4];
  DWORD local_14;
  undefined *local_10;
  undefined4 local_c;
  byte *local_8;
  
  pDVar2 = &DAT_00da0c04;
  pDVar3 = local_24;
  for (iVar1 = 8; iVar1 != 0; iVar1 = iVar1 + -1) {
    *pDVar3 = *pDVar2;
    pDVar2 = pDVar2 + 1;
    pDVar3 = pDVar3 + 1;
  }
  local_c = param_1;
  local_8 = param_2;
  if ((param_2 != (byte *)0x0) && ((*param_2 & 8) != 0)) {
    local_10 = &DAT_01994000;
  }
  RaiseException(local_24[0],local_24[1],local_14,(ULONG_PTR *)&local_10);
  return;
}



// Library Function - Single Match
//  __cfltcvt_init
// 
// Library: Visual Studio 2008 Release

void __cfltcvt_init(void)

{
  PTR_LAB_03240760 = __cfltcvt;
  PTR_LAB_03240764 = __cropzeros;
  PTR_LAB_03240768 = __fassign;
  PTR_LAB_0324076c = __forcdecpt;
  PTR_LAB_03240770 = __positive;
  PTR_LAB_03240774 = __cfltcvt;
  PTR_LAB_03240778 = __cfltcvt_l;
  PTR_LAB_0324077c = __fassign_l;
  PTR_LAB_03240780 = __cropzeros_l;
  PTR_LAB_03240784 = __forcdecpt_l;
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  __fpmath
// 
// Library: Visual Studio 2008 Release

void __cdecl __fpmath(int param_1)

{
  __cfltcvt_init();
  _DAT_032eb220 = __ms_p5_mp_test_fdiv();
  if (param_1 != 0) {
    __setdefaultprecision();
  }
  return;
}



undefined4 FUN_00a42654(LPCWSTR param_1)

{
  BOOL BVar1;
  ulong uVar2;
  
  BVar1 = DeleteFileW(param_1);
  if (BVar1 == 0) {
    uVar2 = GetLastError();
  }
  else {
    uVar2 = 0;
  }
  if (uVar2 != 0) {
    __dosmaperr(uVar2);
    return 0xffffffff;
  }
  return 0;
}



undefined4 FUN_00a42684(LPCWSTR param_1)

{
  BOOL BVar1;
  ulong uVar2;
  
  BVar1 = CreateDirectoryW(param_1,(LPSECURITY_ATTRIBUTES)0x0);
  if (BVar1 == 0) {
    uVar2 = GetLastError();
  }
  else {
    uVar2 = 0;
  }
  if (uVar2 != 0) {
    __dosmaperr(uVar2);
    return 0xffffffff;
  }
  return 0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _fgets
// 
// Library: Visual Studio 2008 Release

char * __cdecl _fgets(char *_Buf,int _MaxCount,FILE *_File)

{
  int *piVar1;
  uint uVar2;
  undefined *puVar3;
  char *pcVar4;
  char *local_20;
  
  local_20 = _Buf;
  if ((((_Buf == (char *)0x0) && (_MaxCount != 0)) || (_MaxCount < 0)) || (_File == (FILE *)0x0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else if (_MaxCount != 0) {
    __lock_file(_File);
    if ((*(byte *)&_File->_flag & 0x40) == 0) {
      uVar2 = __fileno(_File);
      if ((uVar2 == 0xffffffff) || (uVar2 == 0xfffffffe)) {
        puVar3 = &DAT_03240190;
      }
      else {
        puVar3 = (undefined *)((uVar2 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar2 >> 5]);
      }
      if ((puVar3[0x24] & 0x7f) == 0) {
        if ((uVar2 == 0xffffffff) || (uVar2 == 0xfffffffe)) {
          puVar3 = &DAT_03240190;
        }
        else {
          puVar3 = (undefined *)((uVar2 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar2 >> 5]);
        }
        if ((puVar3[0x24] & 0x80) == 0) goto LAB_00a4279d;
      }
      piVar1 = __errno();
      *piVar1 = 0x16;
      __invalid_parameter(0,0,0,0,0);
      local_20 = (char *)0x0;
    }
LAB_00a4279d:
    pcVar4 = _Buf;
    if (local_20 != (char *)0x0) {
      do {
        _MaxCount = _MaxCount + -1;
        if (_MaxCount == 0) break;
        piVar1 = &_File->_cnt;
        *piVar1 = *piVar1 + -1;
        if (*piVar1 < 0) {
          uVar2 = __filbuf(_File);
        }
        else {
          uVar2 = (uint)(byte)*_File->_ptr;
          _File->_ptr = _File->_ptr + 1;
        }
        if (uVar2 == 0xffffffff) {
          if (pcVar4 == _Buf) {
            local_20 = (char *)0x0;
            goto LAB_00a427de;
          }
          break;
        }
        *pcVar4 = (char)uVar2;
        pcVar4 = pcVar4 + 1;
      } while ((char)uVar2 != '\n');
      *pcVar4 = '\0';
    }
LAB_00a427de:
    FUN_00a427f6();
    return local_20;
  }
  return (char *)0x0;
}



void FUN_00a427f6(void)

{
  FILE *unaff_ESI;
  
  __unlock_file(unaff_ESI);
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __fsopen
// 
// Library: Visual Studio 2008 Release

FILE * __cdecl __fsopen(char *_Filename,char *_Mode,int _ShFlag)

{
  int *piVar1;
  FILE *pFVar2;
  undefined local_14 [8];
  undefined4 uStack_c;
  undefined *local_8;
  
  local_8 = &DAT_03110848;
  uStack_c = 0xa4280a;
  if (((_Filename == (char *)0x0) || (_Mode == (char *)0x0)) || (*_Mode == '\0')) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else {
    pFVar2 = __getstream();
    if (pFVar2 == (FILE *)0x0) {
      piVar1 = __errno();
      *piVar1 = 0x18;
    }
    else {
      local_8 = (undefined *)0x0;
      if (*_Filename != '\0') {
        pFVar2 = __openfile(_Filename,_Mode,_ShFlag,pFVar2);
        local_8 = (undefined *)0xfffffffe;
        FUN_00a428b8();
        return pFVar2;
      }
      piVar1 = __errno();
      *piVar1 = 0x16;
      __local_unwind4(&DAT_0323f878,local_14,0xfffffffe);
    }
  }
  return (FILE *)0x0;
}



void FUN_00a428b8(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 8));
  return;
}



// Library Function - Single Match
//  _fopen
// 
// Library: Visual Studio 2008 Release

FILE * __cdecl _fopen(char *_Filename,char *_Mode)

{
  FILE *pFVar1;
  
  pFVar1 = __fsopen(_Filename,_Mode,0x40);
  return pFVar1;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  void __stdcall `eh vector constructor iterator'(void *,unsigned int,int,void (__thiscall*)(void
// *),void (__thiscall*)(void *))
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release

void _eh_vector_constructor_iterator_
               (void *param_1,uint param_2,int param_3,_func_void_void_ptr *param_4,
               _func_void_void_ptr *param_5)

{
  void *in_stack_ffffffcc;
  int local_20;
  
  for (local_20 = 0; local_20 < param_3; local_20 = local_20 + 1) {
    (*param_4)(in_stack_ffffffcc);
  }
  FUN_00a42926();
  return;
}



void FUN_00a42926(void)

{
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + -0x20) == 0) {
    __ArrayUnwind(*(void **)(unaff_EBP + 8),*(uint *)(unaff_EBP + 0xc),*(int *)(unaff_EBP + -0x1c),
                  *(_func_void_void_ptr **)(unaff_EBP + 0x18));
  }
  return;
}



// Library Function - Single Match
//  __fread_nolock_s
// 
// Library: Visual Studio 2008 Release

size_t __cdecl
__fread_nolock_s(void *_DstBuf,size_t _DstSize,size_t _ElementSize,size_t _Count,FILE *_File)

{
  uint uVar1;
  undefined *puVar2;
  int *piVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  undefined *_DstBuf_00;
  uint local_10;
  
  if ((_ElementSize != 0) && (_Count != 0)) {
    if (_DstBuf != (void *)0x0) {
      if ((_File != (FILE *)0x0) && (_Count <= (uint)(0xffffffff / (ulonglong)_ElementSize))) {
LAB_00a429b9:
        uVar8 = _ElementSize * _Count;
        uVar7 = uVar8;
        puVar2 = (undefined *)_DstBuf;
        uVar1 = _DstSize;
        if ((_File->_flag & 0x10cU) == 0) {
          local_10 = 0x1000;
        }
        else {
          local_10 = _File->_bufsiz;
        }
joined_r0x00a429df:
        do {
          while( true ) {
            if (uVar7 == 0) {
              return _Count;
            }
            if ((_File->_flag & 0x10cU) == 0) break;
            uVar4 = _File->_cnt;
            if (uVar4 == 0) break;
            if ((int)uVar4 < 0) {
LAB_00a42b30:
              _File->_flag = _File->_flag | 0x20;
LAB_00a42b34:
              return (uVar8 - uVar7) / _ElementSize;
            }
            uVar6 = uVar7;
            if (uVar4 <= uVar7) {
              uVar6 = uVar4;
            }
            if (uVar1 < uVar6) {
              if (_DstSize != 0xffffffff) {
                _memset(_DstBuf,0,_DstSize);
              }
              piVar3 = __errno();
              *piVar3 = 0x22;
              goto LAB_00a42975;
            }
            _memcpy_s(puVar2,uVar1,_File->_ptr,uVar6);
            _File->_cnt = _File->_cnt - uVar6;
            _File->_ptr = _File->_ptr + uVar6;
            uVar7 = uVar7 - uVar6;
            uVar1 = uVar1 - uVar6;
            puVar2 = puVar2 + uVar6;
          }
          if (local_10 <= uVar7) {
            if (local_10 == 0) {
              uVar4 = 0x7fffffff;
              if (uVar7 < 0x80000000) {
                uVar4 = uVar7;
              }
            }
            else {
              if (uVar7 < 0x80000000) {
                uVar6 = uVar7 % local_10;
                uVar4 = uVar7;
              }
              else {
                uVar6 = (uint)(0x7fffffff % (ulonglong)local_10);
                uVar4 = 0x7fffffff;
              }
              uVar4 = uVar4 - uVar6;
            }
            if (uVar1 < uVar4) {
LAB_00a42b03:
              if (_DstSize != 0xffffffff) {
                _memset(_DstBuf,0,_DstSize);
              }
              piVar3 = __errno();
              *piVar3 = 0x22;
              goto LAB_00a42975;
            }
            _DstBuf_00 = puVar2;
            iVar5 = __fileno(_File);
            iVar5 = __read(iVar5,_DstBuf_00,uVar4);
            if (iVar5 == 0) {
              _File->_flag = _File->_flag | 0x10;
              goto LAB_00a42b34;
            }
            if (iVar5 == -1) goto LAB_00a42b30;
            uVar7 = uVar7 - iVar5;
            uVar1 = uVar1 - iVar5;
            puVar2 = puVar2 + iVar5;
            goto joined_r0x00a429df;
          }
          iVar5 = __filbuf(_File);
          if (iVar5 == -1) goto LAB_00a42b34;
          if (uVar1 == 0) goto LAB_00a42b03;
          *puVar2 = (char)iVar5;
          local_10 = _File->_bufsiz;
          uVar7 = uVar7 - 1;
          uVar1 = uVar1 - 1;
          puVar2 = puVar2 + 1;
        } while( true );
      }
      if (_DstSize != 0xffffffff) {
        _memset(_DstBuf,0,_DstSize);
      }
      if ((_File != (FILE *)0x0) && (_Count <= (uint)(0xffffffff / (ulonglong)_ElementSize)))
      goto LAB_00a429b9;
    }
    piVar3 = __errno();
    *piVar3 = 0x16;
LAB_00a42975:
    __invalid_parameter(0,0,0,0,0);
  }
  return 0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _fread_s
// 
// Library: Visual Studio 2008 Release

size_t __cdecl _fread_s(void *_DstBuf,size_t _DstSize,size_t _ElementSize,size_t _Count,FILE *_File)

{
  int *piVar1;
  size_t sVar2;
  
  if ((_ElementSize != 0) && (_Count != 0)) {
    if (_File != (FILE *)0x0) {
      __lock_file(_File);
      sVar2 = __fread_nolock_s(_DstBuf,_DstSize,_ElementSize,_Count,_File);
      FUN_00a42bd4();
      return sVar2;
    }
    if (_DstSize != 0xffffffff) {
      _memset(_DstBuf,0,_DstSize);
    }
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  return 0;
}



void FUN_00a42bd4(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 0x18));
  return;
}



// Library Function - Single Match
//  _fread
// 
// Library: Visual Studio 2008 Release

size_t __cdecl _fread(void *_DstBuf,size_t _ElementSize,size_t _Count,FILE *_File)

{
  size_t sVar1;
  
  sVar1 = _fread_s(_DstBuf,0xffffffff,_ElementSize,_Count,_File);
  return sVar1;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  _clock
// 
// Library: Visual Studio 2003 Release

clock_t __cdecl _clock(void)

{
  clock_t cVar1;
  longlong lVar2;
  _FILETIME local_c;
  
  GetSystemTimeAsFileTime(&local_c);
  lVar2 = __allmul(local_c.dwHighDateTime,0,0,1);
  cVar1 = __aulldiv((lVar2 - CONCAT44(_DAT_032eb22c,_DAT_032eb228)) +
                    (ulonglong)local_c.dwLowDateTime,10000,0);
  return cVar1;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  ___inittime
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release, Visual Studio 2008 Release

undefined4 ___inittime(void)

{
  longlong lVar1;
  _FILETIME local_c;
  
  GetSystemTimeAsFileTime(&local_c);
  lVar1 = __allmul(local_c.dwHighDateTime,0,0,1);
  _DAT_032eb228 = (int)(lVar1 + (ulonglong)local_c.dwLowDateTime);
  _DAT_032eb22c = (int)(lVar1 + (ulonglong)local_c.dwLowDateTime >> 0x20);
  return 0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __wfsopen
// 
// Library: Visual Studio 2008 Release

FILE * __cdecl __wfsopen(wchar_t *_Filename,wchar_t *_Mode,int _ShFlag)

{
  int *piVar1;
  FILE *pFVar2;
  undefined local_14 [8];
  undefined4 uStack_c;
  undefined *local_8;
  
  local_8 = &DAT_031108a8;
  uStack_c = 0xa42c85;
  if (((_Filename == (wchar_t *)0x0) || (_Mode == (wchar_t *)0x0)) || (*_Mode == L'\0')) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else {
    pFVar2 = __getstream();
    if (pFVar2 == (FILE *)0x0) {
      piVar1 = __errno();
      *piVar1 = 0x18;
    }
    else {
      local_8 = (undefined *)0x0;
      if (*_Filename != L'\0') {
        pFVar2 = __wopenfile(_Filename,_Mode,_ShFlag,pFVar2);
        local_8 = (undefined *)0xfffffffe;
        FUN_00a42d35();
        return pFVar2;
      }
      piVar1 = __errno();
      *piVar1 = 0x16;
      __local_unwind4(&DAT_0323f878,local_14,0xfffffffe);
    }
  }
  return (FILE *)0x0;
}



void FUN_00a42d35(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 8));
  return;
}



// Library Function - Single Match
//  __wfopen
// 
// Library: Visual Studio 2008 Release

FILE * __cdecl __wfopen(wchar_t *_Filename,wchar_t *_Mode)

{
  FILE *pFVar1;
  
  pFVar1 = __wfsopen(_Filename,_Mode,0x40);
  return pFVar1;
}



// Library Function - Single Match
//  _strspn
// 
// Library: Visual Studio

size_t __cdecl _strspn(char *_Str,char *_Control)

{
  byte bVar1;
  byte *pbVar2;
  size_t sVar3;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0;
  uStack_10 = 0;
  uStack_14 = 0;
  uStack_18 = 0;
  uStack_1c = 0;
  uStack_20 = 0;
  uStack_24 = 0;
  uStack_28 = 0;
  while( true ) {
    bVar1 = *_Control;
    if (bVar1 == 0) break;
    _Control = (char *)((byte *)_Control + 1);
    pbVar2 = (byte *)((int)&uStack_28 + ((int)(uint)bVar1 >> 3));
    *pbVar2 = *pbVar2 | '\x01' << (bVar1 & 7);
  }
  sVar3 = 0xffffffff;
  do {
    sVar3 = sVar3 + 1;
    bVar1 = *_Str;
    if (bVar1 == 0) {
      return sVar3;
    }
    _Str = (char *)((byte *)_Str + 1);
  } while ((*(byte *)((int)&uStack_28 + ((int)(uint)bVar1 >> 3)) >> (bVar1 & 7) & 1) != 0);
  return sVar3;
}



// Library Function - Single Match
//  _strncpy_s
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl _strncpy_s(char *_Dst,rsize_t _SizeInBytes,char *_Src,rsize_t _MaxCount)

{
  char cVar1;
  int *piVar2;
  char *pcVar3;
  rsize_t rVar4;
  errno_t eVar5;
  
  if (_MaxCount == 0) {
    if (_Dst == (char *)0x0) {
      if (_SizeInBytes == 0) {
        return 0;
      }
    }
    else {
LAB_00a42dcc:
      if (_SizeInBytes != 0) {
        if (_MaxCount == 0) {
          *_Dst = '\0';
          return 0;
        }
        if (_Src != (char *)0x0) {
          pcVar3 = _Dst;
          rVar4 = _SizeInBytes;
          if (_MaxCount == 0xffffffff) {
            do {
              cVar1 = *_Src;
              *pcVar3 = cVar1;
              pcVar3 = pcVar3 + 1;
              _Src = _Src + 1;
              if (cVar1 == '\0') break;
              rVar4 = rVar4 - 1;
            } while (rVar4 != 0);
          }
          else {
            do {
              cVar1 = *_Src;
              *pcVar3 = cVar1;
              pcVar3 = pcVar3 + 1;
              _Src = _Src + 1;
              if ((cVar1 == '\0') || (rVar4 = rVar4 - 1, rVar4 == 0)) break;
              _MaxCount = _MaxCount - 1;
            } while (_MaxCount != 0);
            if (_MaxCount == 0) {
              *pcVar3 = '\0';
            }
          }
          if (rVar4 != 0) {
            return 0;
          }
          if (_MaxCount == 0xffffffff) {
            _Dst[_SizeInBytes - 1] = '\0';
            return 0x50;
          }
          *_Dst = '\0';
          piVar2 = __errno();
          eVar5 = 0x22;
          *piVar2 = 0x22;
          goto LAB_00a42ddd;
        }
        *_Dst = '\0';
      }
    }
  }
  else if (_Dst != (char *)0x0) goto LAB_00a42dcc;
  piVar2 = __errno();
  eVar5 = 0x16;
  *piVar2 = 0x16;
LAB_00a42ddd:
  __invalid_parameter(0,0,0,0,0);
  return eVar5;
}



// Library Function - Single Match
//  _vscan_fn
// 
// Library: Visual Studio 2008 Release

undefined4 _vscan_fn(code *param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  int *piVar1;
  undefined4 uVar2;
  char *unaff_ESI;
  
  _strlen(unaff_ESI);
  if ((unaff_ESI == (char *)0x0) || (param_2 == 0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    uVar2 = 0xffffffff;
  }
  else {
    uVar2 = (*param_1)(&stack0xffffffdc,param_2,param_3,param_4);
  }
  return uVar2;
}



// Library Function - Multiple Matches With Different Base Names
//  _sscanf
//  _sscanf_s
// 
// Library: Visual Studio 2008 Release

int __cdecl FID_conflict__sscanf(char *_Src,char *_Format,...)

{
  int iVar1;
  
  iVar1 = _vscan_fn(__input_l,_Format,0,&stack0x0000000c);
  return iVar1;
}



// Library Function - Multiple Matches With Different Base Names
//  _sscanf
//  _sscanf_s
// 
// Library: Visual Studio 2008 Release

int __cdecl FID_conflict__sscanf(char *_Src,char *_Format,...)

{
  int iVar1;
  
  iVar1 = _vscan_fn(__input_s_l,_Format,0,&stack0x0000000c);
  return iVar1;
}



// Library Function - Single Match
//  __ftell_nolock
// 
// Library: Visual Studio 2008 Release

long __cdecl __ftell_nolock(FILE *_File)

{
  uint uVar1;
  char *pcVar2;
  int *piVar3;
  uint _FileHandle;
  FILE *pFVar4;
  long lVar5;
  char *pcVar6;
  FILE *pFVar7;
  char *pcVar8;
  int iVar9;
  bool bVar10;
  int local_10;
  int local_c;
  
  pFVar7 = _File;
  if (_File == (FILE *)0x0) {
    piVar3 = __errno();
    *piVar3 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return -1;
  }
  _FileHandle = __fileno(_File);
  if (_File->_cnt < 0) {
    _File->_cnt = 0;
  }
  local_c = __lseek(_FileHandle,0,1);
  if (local_c < 0) {
    return -1;
  }
  uVar1 = _File->_flag;
  if ((uVar1 & 0x108) == 0) {
    return local_c - _File->_cnt;
  }
  pcVar6 = _File->_ptr;
  pcVar8 = _File->_base;
  local_10 = (int)pcVar6 - (int)pcVar8;
  if ((uVar1 & 3) == 0) {
    if (-1 < (char)uVar1) {
      piVar3 = __errno();
      *piVar3 = 0x16;
      return -1;
    }
  }
  else {
    pcVar2 = pcVar8;
    if ((*(byte *)((&DAT_032f1700)[(int)_FileHandle >> 5] + 4 + (_FileHandle & 0x1f) * 0x40) & 0x80)
        != 0) {
      for (; pcVar2 < pcVar6; pcVar2 = pcVar2 + 1) {
        if (*pcVar2 == '\n') {
          local_10 = local_10 + 1;
        }
      }
    }
  }
  if (local_c != 0) {
    if ((*(byte *)&_File->_flag & 1) != 0) {
      if (_File->_cnt == 0) {
        local_10 = 0;
      }
      else {
        pFVar4 = (FILE *)(pcVar6 + (_File->_cnt - (int)pcVar8));
        iVar9 = (_FileHandle & 0x1f) * 0x40;
        if ((*(byte *)((&DAT_032f1700)[(int)_FileHandle >> 5] + 4 + iVar9) & 0x80) != 0) {
          lVar5 = __lseek(_FileHandle,0,2);
          if (lVar5 == local_c) {
            pcVar6 = _File->_base;
            pcVar8 = pcVar6 + (int)&pFVar4->_ptr;
            _File = pFVar4;
            for (; pcVar6 < pcVar8; pcVar6 = pcVar6 + 1) {
              if (*pcVar6 == '\n') {
                _File = (FILE *)((int)&_File->_ptr + 1);
              }
            }
            bVar10 = (pFVar7->_flag & 0x2000U) == 0;
          }
          else {
            lVar5 = __lseek(_FileHandle,local_c,0);
            if (lVar5 < 0) {
              return -1;
            }
            pFVar7 = (FILE *)0x200;
            if ((((FILE *)0x200 < pFVar4) || ((_File->_flag & 8U) == 0)) ||
               ((_File->_flag & 0x400U) != 0)) {
              pFVar7 = (FILE *)_File->_bufsiz;
            }
            bVar10 = (*(byte *)((&DAT_032f1700)[(int)_FileHandle >> 5] + 4 + iVar9) & 4) == 0;
            _File = pFVar7;
          }
          pFVar4 = _File;
          if (!bVar10) {
            pFVar4 = (FILE *)((int)&_File->_ptr + 1);
          }
        }
        _File = pFVar4;
        local_c = local_c - (int)_File;
      }
    }
    return local_10 + local_c;
  }
  return local_10;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3

long FUN_00a430a6(FILE *param_1)

{
  int *piVar1;
  long lVar2;
  
  if (param_1 == (FILE *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    lVar2 = -1;
  }
  else {
    __lock_file(param_1);
    lVar2 = __ftell_nolock(param_1);
    FUN_00a4310a();
  }
  return lVar2;
}



void FUN_00a4310a(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 8));
  return;
}



// Library Function - Single Match
//  __mbsicmp_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __mbsicmp_l(uchar *_Str1,uchar *_Str2,_locale_t _Locale)

{
  byte bVar1;
  ushort uVar2;
  ushort uVar3;
  int *piVar4;
  int iVar5;
  pthreadmbcinfo ptVar6;
  byte *pbVar7;
  localeinfo_struct local_18;
  int local_10;
  char local_c;
  byte local_8;
  byte local_7;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_18,_Locale);
  if (_Str1 == (uchar *)0x0) {
    piVar4 = __errno();
    *piVar4 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_c != '\0') {
      *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
    }
    iVar5 = 0x7fffffff;
  }
  else if (_Str2 == (uchar *)0x0) {
    piVar4 = __errno();
    *piVar4 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_c != '\0') {
      *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
    }
    iVar5 = 0x7fffffff;
  }
  else {
    ptVar6 = local_18.mbcinfo;
    if ((local_18.mbcinfo)->ismbcodepage == 0) {
      iVar5 = __stricmp_l((char *)_Str1,(char *)_Str2,&local_18);
      if (local_c != '\0') {
        *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
      }
    }
    else {
      do {
        bVar1 = *_Str1;
        pbVar7 = _Str1 + 1;
        if ((ptVar6->mbctype[bVar1 + 5] & 4) == 0) {
          if ((ptVar6->mbctype[bVar1 + 5] & 0x10) == 0) {
            uVar2 = (ushort)bVar1;
            _Str1 = pbVar7;
          }
          else {
            uVar2 = (ushort)ptVar6->mbcasemap[bVar1 + 4];
            _Str1 = pbVar7;
          }
        }
        else if (*pbVar7 == 0) {
          uVar2 = 0;
          _Str1 = pbVar7;
        }
        else {
          iVar5 = ___crtLCMapStringA(&local_18,*(LPCWSTR *)ptVar6->mbulinfo,0x200,(LPCSTR)_Str1,2,
                                     (LPSTR)&local_8,2,ptVar6->mbcodepage,1);
          if (iVar5 == 1) {
            uVar2 = (ushort)local_8;
          }
          else {
            if (iVar5 != 2) goto LAB_00a43401;
            uVar2 = (ushort)local_8 * 0x100 + (ushort)local_7;
          }
          ptVar6 = local_18.mbcinfo;
          _Str1 = _Str1 + 2;
        }
        bVar1 = *_Str2;
        pbVar7 = _Str2 + 1;
        if ((ptVar6->mbctype[bVar1 + 5] & 4) == 0) {
          if ((ptVar6->mbctype[bVar1 + 5] & 0x10) == 0) {
            uVar3 = (ushort)bVar1;
          }
          else {
            uVar3 = (ushort)ptVar6->mbcasemap[bVar1 + 4];
          }
        }
        else if (*pbVar7 == 0) {
          uVar3 = 0;
        }
        else {
          iVar5 = ___crtLCMapStringA(&local_18,*(LPCWSTR *)ptVar6->mbulinfo,0x200,(LPCSTR)_Str2,2,
                                     (LPSTR)&local_8,2,ptVar6->mbcodepage,1);
          if (iVar5 == 1) {
            uVar3 = (ushort)local_8;
          }
          else {
            if (iVar5 != 2) {
LAB_00a43401:
              piVar4 = __errno();
              *piVar4 = 0x16;
              if (local_c != '\0') {
                *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
              }
              return 0x7fffffff;
            }
            uVar3 = (ushort)local_8 * 0x100 + (ushort)local_7;
          }
          pbVar7 = _Str2 + 2;
          ptVar6 = local_18.mbcinfo;
        }
        if (uVar3 != uVar2) {
          iVar5 = (-(uint)(uVar3 < uVar2) & 2) - 1;
          if (local_c == '\0') {
            return iVar5;
          }
          *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
          return iVar5;
        }
        _Str2 = pbVar7;
      } while (uVar2 != 0);
      if (local_c != '\0') {
        *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
      }
      iVar5 = 0;
    }
  }
  return iVar5;
}



// Library Function - Single Match
//  __mbsicmp
// 
// Library: Visual Studio 2008 Release

int __cdecl __mbsicmp(uchar *_Str1,uchar *_Str2)

{
  int iVar1;
  
  iVar1 = __mbsicmp_l(_Str1,_Str2,(_locale_t)0x0);
  return iVar1;
}



// Library Function - Single Match
//  __wcsicmp_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __wcsicmp_l(wchar_t *_Str1,wchar_t *_Str2,_locale_t _Locale)

{
  wchar_t wVar1;
  wchar_t wVar2;
  wint_t wVar3;
  wint_t wVar4;
  int *piVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
  if (_Str1 == (wchar_t *)0x0) {
    piVar5 = __errno();
    *piVar5 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
    iVar6 = 0x7fffffff;
  }
  else if (_Str2 == (wchar_t *)0x0) {
    piVar5 = __errno();
    *piVar5 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
    iVar6 = 0x7fffffff;
  }
  else {
    if ((local_14.locinfo)->lc_category[0].wlocale == (wchar_t *)0x0) {
      do {
        wVar1 = *_Str1;
        if ((0x40 < (ushort)wVar1) && ((ushort)wVar1 < 0x5b)) {
          wVar1 = wVar1 + L' ';
        }
        uVar8 = (uint)(ushort)wVar1;
        wVar2 = *_Str2;
        if ((0x40 < (ushort)wVar2) && ((ushort)wVar2 < 0x5b)) {
          wVar2 = wVar2 + L' ';
        }
        _Str1 = _Str1 + 1;
        _Str2 = _Str2 + 1;
        uVar7 = (uint)(ushort)wVar2;
      } while ((wVar1 != L'\0') && (wVar1 == wVar2));
    }
    else {
      do {
        wVar3 = __towlower_l(*_Str1,&local_14);
        uVar8 = (uint)wVar3;
        _Str1 = _Str1 + 1;
        wVar4 = __towlower_l(*_Str2,&local_14);
        _Str2 = _Str2 + 1;
        uVar7 = (uint)wVar4;
        if (wVar3 == 0) break;
      } while (wVar3 == wVar4);
    }
    iVar6 = uVar8 - uVar7;
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
  }
  return iVar6;
}



// Library Function - Single Match
//  __wcsicmp
// 
// Library: Visual Studio 2008 Release

int __cdecl __wcsicmp(wchar_t *_Str1,wchar_t *_Str2)

{
  wchar_t wVar1;
  wchar_t wVar2;
  int *piVar3;
  int iVar4;
  
  if (DAT_032eb230 == 0) {
    if ((_Str1 == (wchar_t *)0x0) || (_Str2 == (wchar_t *)0x0)) {
      piVar3 = __errno();
      *piVar3 = 0x16;
      __invalid_parameter(0,0,0,0,0);
      iVar4 = 0x7fffffff;
    }
    else {
      do {
        wVar1 = *_Str1;
        if ((0x40 < (ushort)wVar1) && ((ushort)wVar1 < 0x5b)) {
          wVar1 = wVar1 + L' ';
        }
        wVar2 = *_Str2;
        if ((0x40 < (ushort)wVar2) && ((ushort)wVar2 < 0x5b)) {
          wVar2 = wVar2 + L' ';
        }
        _Str1 = _Str1 + 1;
        _Str2 = _Str2 + 1;
      } while ((wVar1 != L'\0') && (wVar1 == wVar2));
      iVar4 = (uint)(ushort)wVar1 - (uint)(ushort)wVar2;
    }
  }
  else {
    iVar4 = __wcsicmp_l(_Str1,_Str2,(_locale_t)0x0);
  }
  return iVar4;
}



// Library Function - Single Match
//  _memmove
// 
// Libraries: Visual Studio 2005 Debug, Visual Studio 2005 Release, Visual Studio 2008 Debug, Visual
// Studio 2008 Release

void * __cdecl _memmove(void *_Dst,void *_Src,size_t _Size)

{
  void *pvVar1;
  uint uVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  
  if ((_Src < _Dst) && (_Dst < (void *)(_Size + (int)_Src))) {
    puVar4 = (undefined4 *)((_Size - 4) + (int)_Src);
    puVar5 = (undefined4 *)((_Size - 4) + (int)_Dst);
    if (((uint)puVar5 & 3) == 0) {
      uVar2 = _Size >> 2;
      uVar3 = _Size & 3;
      if (7 < uVar2) {
        for (; uVar2 != 0; uVar2 = uVar2 - 1) {
          *puVar5 = *puVar4;
          puVar4 = puVar4 + -1;
          puVar5 = puVar5 + -1;
        }
        switch(uVar3) {
        case 0:
          return _Dst;
        case 2:
          goto switchD_00a437f3_caseD_2;
        case 3:
          goto switchD_00a437f3_caseD_3;
        }
        goto switchD_00a437f3_caseD_1;
      }
    }
    else {
      switch(_Size) {
      case 0:
        goto switchD_00a437f3_caseD_0;
      case 1:
        goto switchD_00a437f3_caseD_1;
      case 2:
        goto switchD_00a437f3_caseD_2;
      case 3:
        goto switchD_00a437f3_caseD_3;
      default:
        uVar2 = _Size - ((uint)puVar5 & 3);
        switch((uint)puVar5 & 3) {
        case 1:
          uVar3 = uVar2 & 3;
          *(undefined *)((int)puVar5 + 3) = *(undefined *)((int)puVar4 + 3);
          puVar4 = (undefined4 *)((int)puVar4 + -1);
          uVar2 = uVar2 >> 2;
          puVar5 = (undefined4 *)((int)puVar5 - 1);
          if (7 < uVar2) {
            for (; uVar2 != 0; uVar2 = uVar2 - 1) {
              *puVar5 = *puVar4;
              puVar4 = puVar4 + -1;
              puVar5 = puVar5 + -1;
            }
            switch(uVar3) {
            case 0:
              return _Dst;
            case 2:
              goto switchD_00a437f3_caseD_2;
            case 3:
              goto switchD_00a437f3_caseD_3;
            }
            goto switchD_00a437f3_caseD_1;
          }
          break;
        case 2:
          uVar3 = uVar2 & 3;
          *(undefined *)((int)puVar5 + 3) = *(undefined *)((int)puVar4 + 3);
          uVar2 = uVar2 >> 2;
          *(undefined *)((int)puVar5 + 2) = *(undefined *)((int)puVar4 + 2);
          puVar4 = (undefined4 *)((int)puVar4 + -2);
          puVar5 = (undefined4 *)((int)puVar5 - 2);
          if (7 < uVar2) {
            for (; uVar2 != 0; uVar2 = uVar2 - 1) {
              *puVar5 = *puVar4;
              puVar4 = puVar4 + -1;
              puVar5 = puVar5 + -1;
            }
            switch(uVar3) {
            case 0:
              return _Dst;
            case 2:
              goto switchD_00a437f3_caseD_2;
            case 3:
              goto switchD_00a437f3_caseD_3;
            }
            goto switchD_00a437f3_caseD_1;
          }
          break;
        case 3:
          uVar3 = uVar2 & 3;
          *(undefined *)((int)puVar5 + 3) = *(undefined *)((int)puVar4 + 3);
          *(undefined *)((int)puVar5 + 2) = *(undefined *)((int)puVar4 + 2);
          uVar2 = uVar2 >> 2;
          *(undefined *)((int)puVar5 + 1) = *(undefined *)((int)puVar4 + 1);
          puVar4 = (undefined4 *)((int)puVar4 + -3);
          puVar5 = (undefined4 *)((int)puVar5 - 3);
          if (7 < uVar2) {
            for (; uVar2 != 0; uVar2 = uVar2 - 1) {
              *puVar5 = *puVar4;
              puVar4 = puVar4 + -1;
              puVar5 = puVar5 + -1;
            }
            switch(uVar3) {
            case 0:
              return _Dst;
            case 2:
              goto switchD_00a437f3_caseD_2;
            case 3:
              goto switchD_00a437f3_caseD_3;
            }
            goto switchD_00a437f3_caseD_1;
          }
        }
      }
    }
    switch(uVar2) {
    case 7:
      puVar5[7 - uVar2] = puVar4[7 - uVar2];
    case 6:
      puVar5[6 - uVar2] = puVar4[6 - uVar2];
    case 5:
      puVar5[5 - uVar2] = puVar4[5 - uVar2];
    case 4:
      puVar5[4 - uVar2] = puVar4[4 - uVar2];
    case 3:
      puVar5[3 - uVar2] = puVar4[3 - uVar2];
    case 2:
      puVar5[2 - uVar2] = puVar4[2 - uVar2];
    case 1:
      puVar5[1 - uVar2] = puVar4[1 - uVar2];
      puVar4 = puVar4 + -uVar2;
      puVar5 = puVar5 + -uVar2;
    }
    switch(uVar3) {
    case 1:
switchD_00a437f3_caseD_1:
      *(undefined *)((int)puVar5 + 3) = *(undefined *)((int)puVar4 + 3);
      return _Dst;
    case 2:
switchD_00a437f3_caseD_2:
      *(undefined *)((int)puVar5 + 3) = *(undefined *)((int)puVar4 + 3);
      *(undefined *)((int)puVar5 + 2) = *(undefined *)((int)puVar4 + 2);
      return _Dst;
    case 3:
switchD_00a437f3_caseD_3:
      *(undefined *)((int)puVar5 + 3) = *(undefined *)((int)puVar4 + 3);
      *(undefined *)((int)puVar5 + 2) = *(undefined *)((int)puVar4 + 2);
      *(undefined *)((int)puVar5 + 1) = *(undefined *)((int)puVar4 + 1);
      return _Dst;
    }
switchD_00a437f3_caseD_0:
    return _Dst;
  }
  if (((0xff < _Size) && (DAT_032f16e0 != 0)) && (((uint)_Dst & 0xf) == ((uint)_Src & 0xf))) {
    pvVar1 = (void *)__VEC_memcpy();
    return pvVar1;
  }
  puVar4 = (undefined4 *)_Dst;
  if (((uint)_Dst & 3) == 0) {
    uVar2 = _Size >> 2;
    uVar3 = _Size & 3;
    if (7 < uVar2) {
                    // WARNING: Load size is inaccurate
      for (; uVar2 != 0; uVar2 = uVar2 - 1) {
        *puVar4 = *_Src;
        _Src = (undefined4 *)((int)_Src + 4);
        puVar4 = puVar4 + 1;
      }
      switch(uVar3) {
      case 0:
        return _Dst;
      case 2:
        goto switchD_00a4366c_caseD_2;
      case 3:
        goto switchD_00a4366c_caseD_3;
      }
      goto switchD_00a4366c_caseD_1;
    }
  }
  else {
    switch(_Size) {
    case 0:
      goto switchD_00a4366c_caseD_0;
    case 1:
      goto switchD_00a4366c_caseD_1;
    case 2:
      goto switchD_00a4366c_caseD_2;
    case 3:
      goto switchD_00a4366c_caseD_3;
    default:
      uVar2 = (_Size - 4) + ((uint)_Dst & 3);
      switch((uint)_Dst & 3) {
      case 1:
        uVar3 = uVar2 & 3;
                    // WARNING: Load size is inaccurate
        *(undefined *)_Dst = *_Src;
        *(undefined *)((int)_Dst + 1) = *(undefined *)((int)_Src + 1);
        uVar2 = uVar2 >> 2;
        *(undefined *)((int)_Dst + 2) = *(undefined *)((int)_Src + 2);
        _Src = (void *)((int)_Src + 3);
        puVar4 = (undefined4 *)((int)_Dst + 3);
        if (7 < uVar2) {
                    // WARNING: Load size is inaccurate
          for (; uVar2 != 0; uVar2 = uVar2 - 1) {
            *puVar4 = *_Src;
            _Src = (undefined4 *)((int)_Src + 4);
            puVar4 = puVar4 + 1;
          }
          switch(uVar3) {
          case 0:
            return _Dst;
          case 2:
            goto switchD_00a4366c_caseD_2;
          case 3:
            goto switchD_00a4366c_caseD_3;
          }
          goto switchD_00a4366c_caseD_1;
        }
        break;
      case 2:
        uVar3 = uVar2 & 3;
                    // WARNING: Load size is inaccurate
        *(undefined *)_Dst = *_Src;
        uVar2 = uVar2 >> 2;
        *(undefined *)((int)_Dst + 1) = *(undefined *)((int)_Src + 1);
        _Src = (void *)((int)_Src + 2);
        puVar4 = (undefined4 *)((int)_Dst + 2);
        if (7 < uVar2) {
                    // WARNING: Load size is inaccurate
          for (; uVar2 != 0; uVar2 = uVar2 - 1) {
            *puVar4 = *_Src;
            _Src = (undefined4 *)((int)_Src + 4);
            puVar4 = puVar4 + 1;
          }
          switch(uVar3) {
          case 0:
            return _Dst;
          case 2:
            goto switchD_00a4366c_caseD_2;
          case 3:
            goto switchD_00a4366c_caseD_3;
          }
          goto switchD_00a4366c_caseD_1;
        }
        break;
      case 3:
        uVar3 = uVar2 & 3;
                    // WARNING: Load size is inaccurate
        *(undefined *)_Dst = *_Src;
        _Src = (void *)((int)_Src + 1);
        uVar2 = uVar2 >> 2;
        puVar4 = (undefined4 *)((int)_Dst + 1);
        if (7 < uVar2) {
                    // WARNING: Load size is inaccurate
          for (; uVar2 != 0; uVar2 = uVar2 - 1) {
            *puVar4 = *_Src;
            _Src = (undefined4 *)((int)_Src + 4);
            puVar4 = puVar4 + 1;
          }
          switch(uVar3) {
          case 0:
            return _Dst;
          case 2:
            goto switchD_00a4366c_caseD_2;
          case 3:
            goto switchD_00a4366c_caseD_3;
          }
          goto switchD_00a4366c_caseD_1;
        }
      }
    }
  }
  switch(uVar2) {
  case 7:
    puVar4[uVar2 - 7] = *(undefined4 *)((int)_Src + (uVar2 - 7) * 4);
  case 6:
    puVar4[uVar2 - 6] = *(undefined4 *)((int)_Src + (uVar2 - 6) * 4);
  case 5:
    puVar4[uVar2 - 5] = *(undefined4 *)((int)_Src + (uVar2 - 5) * 4);
  case 4:
    puVar4[uVar2 - 4] = *(undefined4 *)((int)_Src + (uVar2 - 4) * 4);
  case 3:
    puVar4[uVar2 - 3] = *(undefined4 *)((int)_Src + (uVar2 - 3) * 4);
  case 2:
    puVar4[uVar2 - 2] = *(undefined4 *)((int)_Src + (uVar2 - 2) * 4);
  case 1:
    puVar4[uVar2 - 1] = *(undefined4 *)((int)_Src + (uVar2 - 1) * 4);
    _Src = (void *)((int)_Src + uVar2 * 4);
    puVar4 = puVar4 + uVar2;
  }
  switch(uVar3) {
  case 1:
switchD_00a4366c_caseD_1:
                    // WARNING: Load size is inaccurate
    *(undefined *)puVar4 = *_Src;
    return _Dst;
  case 2:
switchD_00a4366c_caseD_2:
                    // WARNING: Load size is inaccurate
    *(undefined *)puVar4 = *_Src;
    *(undefined *)((int)puVar4 + 1) = *(undefined *)((int)_Src + 1);
    return _Dst;
  case 3:
switchD_00a4366c_caseD_3:
                    // WARNING: Load size is inaccurate
    *(undefined *)puVar4 = *_Src;
    *(undefined *)((int)puVar4 + 1) = *(undefined *)((int)_Src + 1);
    *(undefined *)((int)puVar4 + 2) = *(undefined *)((int)_Src + 2);
    return _Dst;
  }
switchD_00a4366c_caseD_0:
  return _Dst;
}



// Library Function - Single Match
//  _strlen
// 
// Library: Visual Studio

size_t __cdecl _strlen(char *_Str)

{
  char cVar1;
  uint uVar2;
  uint *puVar3;
  uint *puVar4;
  
  uVar2 = (uint)_Str & 3;
  puVar3 = (uint *)_Str;
  while (uVar2 != 0) {
    cVar1 = *(char *)puVar3;
    puVar3 = (uint *)((int)puVar3 + 1);
    if (cVar1 == '\0') goto LAB_00a439e3;
    uVar2 = (uint)puVar3 & 3;
  }
  do {
    do {
      puVar4 = puVar3;
      puVar3 = puVar4 + 1;
    } while (((*puVar4 ^ 0xffffffff ^ *puVar4 + 0x7efefeff) & 0x81010100) == 0);
    uVar2 = *puVar4;
    if ((char)uVar2 == '\0') {
      return (int)puVar4 - (int)_Str;
    }
    if ((char)(uVar2 >> 8) == '\0') {
      return (size_t)((int)puVar4 + (1 - (int)_Str));
    }
    if ((uVar2 & 0xff0000) == 0) {
      return (size_t)((int)puVar4 + (2 - (int)_Str));
    }
  } while ((uVar2 & 0xff000000) != 0);
LAB_00a439e3:
  return (size_t)((int)puVar3 + (-1 - (int)_Str));
}



// Library Function - Single Match
//  ___freetlocinfo
// 
// Library: Visual Studio 2008 Release

void ___freetlocinfo(void *param_1)

{
  int *piVar1;
  undefined **ppuVar2;
  void *_Memory;
  int **ppiVar3;
  
  _Memory = param_1;
  if ((((*(undefined ***)((int)param_1 + 0xbc) != (undefined **)0x0) &&
       (*(undefined ***)((int)param_1 + 0xbc) != &PTR_DAT_0323f824)) &&
      (*(int **)((int)param_1 + 0xb0) != (int *)0x0)) && (**(int **)((int)param_1 + 0xb0) == 0)) {
    piVar1 = *(int **)((int)param_1 + 0xb8);
    if ((piVar1 != (int *)0x0) && (*piVar1 == 0)) {
      _free(piVar1);
      ___free_lconv_mon(*(undefined4 *)((int)param_1 + 0xbc));
    }
    piVar1 = *(int **)((int)param_1 + 0xb4);
    if ((piVar1 != (int *)0x0) && (*piVar1 == 0)) {
      _free(piVar1);
      ___free_lconv_num(*(undefined4 *)((int)param_1 + 0xbc));
    }
    _free(*(void **)((int)param_1 + 0xb0));
    _free(*(void **)((int)param_1 + 0xbc));
  }
  if ((*(int **)((int)param_1 + 0xc0) != (int *)0x0) && (**(int **)((int)param_1 + 0xc0) == 0)) {
    _free((void *)(*(int *)((int)param_1 + 0xc4) + -0xfe));
    _free((void *)(*(int *)((int)param_1 + 0xcc) + -0x80));
    _free((void *)(*(int *)((int)param_1 + 0xd0) + -0x80));
    _free(*(void **)((int)param_1 + 0xc0));
  }
  ppuVar2 = *(undefined ***)(void **)((int)param_1 + 0xd4);
  if ((ppuVar2 != &PTR_DAT_03240788) && (ppuVar2[0x2d] == (undefined *)0x0)) {
    ___free_lc_time(ppuVar2);
    _free(*(void **)((int)param_1 + 0xd4));
  }
  ppiVar3 = (int **)((int)param_1 + 0x50);
  param_1 = (void *)0x6;
  do {
    if (((ppiVar3[-2] != (int *)&DAT_03240090) && (piVar1 = *ppiVar3, piVar1 != (int *)0x0)) &&
       (*piVar1 == 0)) {
      _free(piVar1);
    }
    if (((ppiVar3[-1] != (int *)0x0) && (piVar1 = ppiVar3[1], piVar1 != (int *)0x0)) &&
       (*piVar1 == 0)) {
      _free(piVar1);
    }
    ppiVar3 = ppiVar3 + 4;
    param_1 = (void *)((int)param_1 + -1);
  } while (param_1 != (void *)0x0);
  _free(_Memory);
  return;
}



// Library Function - Single Match
//  ___addlocaleref
// 
// Library: Visual Studio 2008 Release

void ___addlocaleref(LONG *param_1)

{
  LONG *pLVar1;
  LONG **ppLVar2;
  
  pLVar1 = param_1;
  InterlockedIncrement(param_1);
  if ((LONG *)param_1[0x2c] != (LONG *)0x0) {
    InterlockedIncrement((LONG *)param_1[0x2c]);
  }
  if ((LONG *)param_1[0x2e] != (LONG *)0x0) {
    InterlockedIncrement((LONG *)param_1[0x2e]);
  }
  if ((LONG *)param_1[0x2d] != (LONG *)0x0) {
    InterlockedIncrement((LONG *)param_1[0x2d]);
  }
  if ((LONG *)param_1[0x30] != (LONG *)0x0) {
    InterlockedIncrement((LONG *)param_1[0x30]);
  }
  ppLVar2 = (LONG **)(param_1 + 0x14);
  param_1 = (LONG *)0x6;
  do {
    if ((ppLVar2[-2] != (LONG *)&DAT_03240090) && (*ppLVar2 != (LONG *)0x0)) {
      InterlockedIncrement(*ppLVar2);
    }
    if ((ppLVar2[-1] != (LONG *)0x0) && (ppLVar2[1] != (LONG *)0x0)) {
      InterlockedIncrement(ppLVar2[1]);
    }
    ppLVar2 = ppLVar2 + 4;
    param_1 = (LONG *)((int)param_1 + -1);
  } while (param_1 != (LONG *)0x0);
  InterlockedIncrement((LONG *)(pLVar1[0x35] + 0xb4));
  return;
}



// Library Function - Single Match
//  ___removelocaleref
// 
// Library: Visual Studio 2008 Release

LONG * ___removelocaleref(LONG *param_1)

{
  LONG *pLVar1;
  LONG **ppLVar2;
  
  pLVar1 = param_1;
  if (param_1 != (LONG *)0x0) {
    InterlockedDecrement(param_1);
    if ((LONG *)param_1[0x2c] != (LONG *)0x0) {
      InterlockedDecrement((LONG *)param_1[0x2c]);
    }
    if ((LONG *)param_1[0x2e] != (LONG *)0x0) {
      InterlockedDecrement((LONG *)param_1[0x2e]);
    }
    if ((LONG *)param_1[0x2d] != (LONG *)0x0) {
      InterlockedDecrement((LONG *)param_1[0x2d]);
    }
    if ((LONG *)param_1[0x30] != (LONG *)0x0) {
      InterlockedDecrement((LONG *)param_1[0x30]);
    }
    ppLVar2 = (LONG **)(param_1 + 0x14);
    param_1 = (LONG *)0x6;
    do {
      if ((ppLVar2[-2] != (LONG *)&DAT_03240090) && (*ppLVar2 != (LONG *)0x0)) {
        InterlockedDecrement(*ppLVar2);
      }
      if ((ppLVar2[-1] != (LONG *)0x0) && (ppLVar2[1] != (LONG *)0x0)) {
        InterlockedDecrement(ppLVar2[1]);
      }
      ppLVar2 = ppLVar2 + 4;
      param_1 = (LONG *)((int)param_1 + -1);
    } while (param_1 != (LONG *)0x0);
    InterlockedDecrement((LONG *)(pLVar1[0x35] + 0xb4));
  }
  return pLVar1;
}



// Library Function - Single Match
//  __copytlocinfo_nolock
// 
// Library: Visual Studio 2008 Release

void __fastcall __copytlocinfo_nolock(undefined4 *param_1)

{
  undefined4 *in_EAX;
  int iVar1;
  undefined4 *puVar2;
  
  if (((param_1 != (undefined4 *)0x0) && (in_EAX != (undefined4 *)0x0)) && (in_EAX != param_1)) {
    puVar2 = in_EAX;
    for (iVar1 = 0x36; iVar1 != 0; iVar1 = iVar1 + -1) {
      *puVar2 = *param_1;
      param_1 = param_1 + 1;
      puVar2 = puVar2 + 1;
    }
    *in_EAX = 0;
    ___addlocaleref();
  }
  return;
}



// Library Function - Single Match
//  __updatetlocinfoEx_nolock
// 
// Library: Visual Studio 2008 Release

int * __updatetlocinfoEx_nolock(void)

{
  int *piVar1;
  int **in_EAX;
  int *unaff_EDI;
  
  if ((unaff_EDI != (int *)0x0) && (in_EAX != (int **)0x0)) {
    piVar1 = *in_EAX;
    if (piVar1 != unaff_EDI) {
      *in_EAX = unaff_EDI;
      ___addlocaleref();
      if (piVar1 != (int *)0x0) {
        ___removelocaleref(piVar1);
        if ((*piVar1 == 0) && (piVar1 != (int *)&DAT_03240098)) {
          ___freetlocinfo(piVar1);
        }
      }
    }
    return unaff_EDI;
  }
  return (int *)0x0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  ___updatetlocinfo
// 
// Library: Visual Studio 2008 Release

pthreadlocinfo __cdecl ___updatetlocinfo(void)

{
  _ptiddata p_Var1;
  
  p_Var1 = __getptd();
  if (((p_Var1->_ownlocale & DAT_03240088) == 0) || (p_Var1->ptlocinfo == (pthreadlocinfo)0x0)) {
    __lock(0xc);
    __updatetlocinfoEx_nolock();
    FUN_00a43d4a();
  }
  else {
    p_Var1 = __getptd();
    p_Var1 = (_ptiddata)p_Var1->ptlocinfo;
  }
  if (p_Var1 == (_ptiddata)0x0) {
    __amsg_exit(0x20);
  }
  return (pthreadlocinfo)p_Var1;
}



void FUN_00a43d4a(void)

{
  FUN_00a4d824(0xc);
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  _sync_legacy_variables_lk
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void _sync_legacy_variables_lk(void)

{
  _DAT_032ebb04 = *(undefined4 *)(PTR_DAT_03240170 + 4);
  _DAT_032ebb08 = *(undefined4 *)(PTR_DAT_03240170 + 8);
  _DAT_03240174 = *(undefined4 *)(PTR_DAT_03240170 + 0xa8);
  PTR_PTR_DAT_03240840 = *(undefined **)(PTR_DAT_03240170 + 0xd4);
  PTR_PTR_DAT_0323f854 = *(undefined **)(PTR_DAT_03240170 + 0xbc);
  PTR_DAT_0323f884 = *(undefined **)(PTR_DAT_03240170 + 200);
  _DAT_03240844 = *(undefined4 *)(PTR_DAT_03240170 + 0xac);
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __free_locale
// 
// Library: Visual Studio 2008 Release

void __cdecl __free_locale(_locale_t _Locale)

{
  pthreadlocinfo ptVar1;
  LONG LVar2;
  
  if (_Locale != (_locale_t)0x0) {
    __lock(0xd);
    if (_Locale->mbcinfo != (pthreadmbcinfo)0x0) {
      LVar2 = InterlockedDecrement(&_Locale->mbcinfo->refcount);
      if ((LVar2 == 0) && (_Locale->mbcinfo != (pthreadmbcinfo)&DAT_032401d0)) {
        _free(_Locale->mbcinfo);
      }
    }
    FUN_00a43e56();
    if (_Locale->locinfo != (pthreadlocinfo)0x0) {
      __lock(0xc);
      ___removelocaleref(_Locale->locinfo);
      ptVar1 = _Locale->locinfo;
      if (((ptVar1 != (pthreadlocinfo)0x0) && (ptVar1->refcount == 0)) &&
         (ptVar1 != (pthreadlocinfo)&DAT_03240098)) {
        ___freetlocinfo(ptVar1);
      }
      FUN_00a43e62();
    }
    _Locale->locinfo = (pthreadlocinfo)0xbaadf00d;
    _Locale->mbcinfo = (pthreadmbcinfo)0xbaadf00d;
    _free(_Locale);
  }
  return;
}



void FUN_00a43e56(void)

{
  FUN_00a4d824(0xd);
  return;
}



void FUN_00a43e62(void)

{
  FUN_00a4d824(0xc);
  return;
}



// Library Function - Single Match
//  __strcats
// 
// Library: Visual Studio 2008 Release

void __strcats(char *param_1,rsize_t param_2,char *param_3)

{
  errno_t eVar1;
  char **ppcVar2;
  char *pcVar3;
  
  if (0 < (int)param_3) {
    ppcVar2 = &param_3;
    pcVar3 = param_3;
    do {
      ppcVar2 = ppcVar2 + 1;
      eVar1 = _strcat_s(param_1,param_2,*ppcVar2);
      if (eVar1 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      pcVar3 = pcVar3 + -1;
    } while (pcVar3 != (char *)0x0);
  }
  return;
}



// Library Function - Single Match
//  ___lc_strtolc
// 
// Library: Visual Studio 2008 Release

undefined4 ___lc_strtolc(char *param_1,char *param_2)

{
  char cVar1;
  errno_t eVar2;
  uint _MaxCount;
  char *_Dst;
  char *_Str;
  rsize_t _SizeInBytes;
  
  _Str = param_2;
  _memset(param_1,0,0x90);
  if (*param_2 != '\0') {
    if ((*param_2 != '.') || (param_2[1] == '\0')) {
      param_2 = (char *)0x0;
      _MaxCount = _strcspn(_Str,"_.,");
      while( true ) {
        if (_MaxCount == 0) {
          return 0xffffffff;
        }
        cVar1 = _Str[_MaxCount];
        if (param_2 == (char *)0x0) {
          if (0x3f < _MaxCount) {
            return 0xffffffff;
          }
          if (cVar1 == '.') {
            return 0xffffffff;
          }
          _SizeInBytes = 0x40;
          _Dst = param_1;
        }
        else if (param_2 == (char *)0x1) {
          if (0x3f < _MaxCount) {
            return 0xffffffff;
          }
          if (cVar1 == '_') {
            return 0xffffffff;
          }
          _SizeInBytes = 0x40;
          _Dst = param_1 + 0x40;
        }
        else {
          if (param_2 != (char *)0x2) {
            return 0xffffffff;
          }
          if (0xf < _MaxCount) {
            return 0xffffffff;
          }
          if ((cVar1 != '\0') && (cVar1 != ',')) {
            return 0xffffffff;
          }
          _SizeInBytes = 0x10;
          _Dst = param_1 + 0x80;
        }
        eVar2 = _strncpy_s(_Dst,_SizeInBytes,_Str,_MaxCount);
        if (eVar2 != 0) {
                    // WARNING: Subroutine does not return
          __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
        }
        if (cVar1 == ',') break;
        if (cVar1 == '\0') {
          return 0;
        }
        param_2 = (char *)((int)param_2 + 1);
        _Str = _Str + _MaxCount + 1;
        _MaxCount = _strcspn(_Str,"_.,");
      }
      return 0;
    }
    eVar2 = _strncpy_s(param_1 + 0x80,0x10,param_2 + 1,0xf);
    if (eVar2 != 0) {
                    // WARNING: Subroutine does not return
      __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
    }
    param_1[0x8f] = '\0';
  }
  return 0;
}



// Library Function - Single Match
//  ___lc_lctostr
// 
// Library: Visual Studio 2008 Release

void ___lc_lctostr(char *param_1,rsize_t param_2,char *param_3)

{
  errno_t eVar1;
  
  eVar1 = _strcpy_s(param_1,param_2,param_3);
  if (eVar1 != 0) {
                    // WARNING: Subroutine does not return
    __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
  }
  if (param_3[0x40] != '\0') {
    __strcats(param_1,param_2,2,&DAT_00d2757c,param_3 + 0x40);
  }
  if (param_3[0x80] != '\0') {
    __strcats(param_1,param_2,2,&DAT_00fae794,param_3 + 0x80);
  }
  return;
}



// Library Function - Single Match
//  __setlocale_get_all
// 
// Library: Visual Studio 2008 Release

undefined4 * __setlocale_get_all(void)

{
  bool bVar1;
  undefined4 *_Memory;
  errno_t eVar2;
  int iVar3;
  LONG LVar4;
  undefined4 *_Dst;
  int unaff_ESI;
  char **local_10;
  int local_c;
  undefined **local_8;
  
  bVar1 = true;
  _Memory = (undefined4 *)__malloc_crt(0x355);
  _Dst = _Memory;
  if (_Memory != (undefined4 *)0x0) {
    _Dst = _Memory + 1;
    *(undefined *)_Dst = 0;
    *_Memory = 1;
    local_c = 1;
    iVar3 = unaff_ESI + 0x10;
    local_10 = (char **)(unaff_ESI + 0x58);
    __strcats(_Dst,0x351,3,"LC_COLLATE",&DAT_00da0d40,*local_10);
    local_8 = &PTR_s_LC_COLLATE_00da0c7c;
    do {
      eVar2 = _strcat_s((char *)_Dst,0x351,";");
      if (eVar2 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      iVar3 = _strcmp(*local_10,*(char **)(iVar3 + 0x58));
      if (iVar3 != 0) {
        bVar1 = false;
      }
      local_c = local_c + 1;
      local_8 = local_8 + 3;
      iVar3 = local_c * 0x10 + unaff_ESI;
      local_10 = (char **)(iVar3 + 0x48);
      __strcats(_Dst,0x351,3,*local_8,&DAT_00da0d40,*local_10);
    } while ((int)local_8 < 0xda0cac);
    if (bVar1) {
      _free(_Memory);
      if ((*(LONG **)(unaff_ESI + 0x50) != (LONG *)0x0) &&
         (LVar4 = InterlockedDecrement(*(LONG **)(unaff_ESI + 0x50)), LVar4 == 0)) {
        _free(*(void **)(unaff_ESI + 0x50));
      }
      if ((*(LONG **)(unaff_ESI + 0x54) != (LONG *)0x0) &&
         (LVar4 = InterlockedDecrement(*(LONG **)(unaff_ESI + 0x54)), LVar4 == 0)) {
        _free(*(void **)(unaff_ESI + 0x54));
      }
      _Dst = *(undefined4 **)(unaff_ESI + 0x68);
      *(undefined4 *)(unaff_ESI + 0x54) = 0;
      *(undefined4 *)(unaff_ESI + 0x4c) = 0;
      *(undefined4 *)(unaff_ESI + 0x50) = 0;
      *(undefined4 *)(unaff_ESI + 0x48) = 0;
    }
    else {
      if ((*(LONG **)(unaff_ESI + 0x50) != (LONG *)0x0) &&
         (LVar4 = InterlockedDecrement(*(LONG **)(unaff_ESI + 0x50)), LVar4 == 0)) {
        _free(*(void **)(unaff_ESI + 0x50));
      }
      if ((*(LONG **)(unaff_ESI + 0x54) != (LONG *)0x0) &&
         (LVar4 = InterlockedDecrement(*(LONG **)(unaff_ESI + 0x54)), LVar4 == 0)) {
        _free(*(void **)(unaff_ESI + 0x54));
      }
      *(undefined4 *)(unaff_ESI + 0x54) = 0;
      *(undefined4 *)(unaff_ESI + 0x4c) = 0;
      *(undefined4 **)(unaff_ESI + 0x50) = _Memory;
      *(undefined4 **)(unaff_ESI + 0x48) = _Dst;
    }
  }
  return _Dst;
}



// Library Function - Single Match
//  __expandlocale
// 
// Library: Visual Studio 2008 Release

void __expandlocale(undefined **param_1,char *param_2,rsize_t param_3,undefined2 *param_4,
                   undefined4 *param_5)

{
  wchar_t *_Src;
  wchar_t *_Str1;
  wchar_t *_LpCodePage;
  _ptiddata p_Var1;
  char *_Str1_00;
  errno_t eVar2;
  size_t sVar3;
  int iVar4;
  BOOL BVar5;
  undefined local_98 [144];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  p_Var1 = __getptd();
  _Src = (p_Var1->_setloc_data)._cachein + 6;
  _Str1 = (p_Var1->_setloc_data)._cachein + 8;
  _LpCodePage = (p_Var1->_setloc_data)._cachein + 2;
  _Str1_00 = (char *)((int)(p_Var1->_setloc_data)._cachein + 0x93);
  if (((param_1 != (undefined **)0x0) && (param_2 != (char *)0x0)) && (param_3 != 0)) {
    if ((*(char *)param_1 == 'C') && (*(char *)((int)param_1 + 1) == '\0')) {
      eVar2 = _strcpy_s(param_2,param_3,"C");
      if (eVar2 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      if (param_4 != (undefined2 *)0x0) {
        *param_4 = 0;
        param_4[1] = 0;
        param_4[2] = 0;
      }
      if (param_5 != (undefined4 *)0x0) {
        *param_5 = 0;
      }
    }
    else {
      sVar3 = _strlen((char *)param_1);
      if ((0x82 < sVar3) ||
         ((iVar4 = _strcmp(_Str1_00,(char *)param_1), iVar4 != 0 &&
          (iVar4 = _strcmp((char *)_Str1,(char *)param_1), iVar4 != 0)))) {
        iVar4 = ___lc_strtolc(local_98,param_1);
        if ((iVar4 != 0) ||
           (BVar5 = ___get_qualified_locale
                              ((LPLC_STRINGS)local_98,(UINT *)_LpCodePage,(LPLC_STRINGS)local_98),
           BVar5 == 0)) goto LAB_00a443e0;
        *(uint *)_Src = (uint)(ushort)(p_Var1->_setloc_data)._cachein[4];
        ___lc_lctostr(_Str1_00,0x83,local_98);
        if ((*(char *)param_1 == '\0') || (0x82 < sVar3)) {
          sVar3 = 0;
          param_1 = &PTR_02bd3fc0;
        }
        eVar2 = _strncpy_s((char *)_Str1,0x83,(char *)param_1,sVar3 + 1);
        if (eVar2 != 0) {
                    // WARNING: Subroutine does not return
          __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
        }
      }
      if (param_4 != (undefined2 *)0x0) {
        _memcpy(param_4,_LpCodePage,6);
      }
      if (param_5 != (undefined4 *)0x0) {
        _memcpy(param_5,_Src,4);
      }
      eVar2 = _strcpy_s(param_2,param_3,_Str1_00);
      if (eVar2 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
    }
  }
LAB_00a443e0:
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  __setlocale_set_cat
// 
// Library: Visual Studio 2008 Release

void __thiscall __setlocale_set_cat(undefined4 param_1_00,int param_1)

{
  LONG **ppLVar1;
  void *pvVar2;
  _ptiddata p_Var3;
  int iVar4;
  int iVar5;
  errno_t eVar6;
  wchar_t *pwVar7;
  BOOL BVar8;
  uint uVar9;
  LONG LVar10;
  int unaff_ESI;
  wchar_t *pwVar11;
  undefined local_1c8 [8];
  int local_1c0;
  undefined4 local_1b8;
  ushort local_1b4 [4];
  uint local_1ac;
  undefined *local_1a8;
  void *local_1a0;
  undefined4 local_19c;
  uint *local_198;
  undefined4 *local_194;
  size_t local_190;
  WORD local_18c [128];
  char local_8c [132];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  p_Var3 = __getptd();
  pwVar11 = (p_Var3->_setloc_data)._cacheout + 9;
  iVar4 = __expandlocale(param_1_00,local_8c,0x83,local_1b4,&local_19c,param_1);
  if (iVar4 != 0) {
    iVar4 = param_1 * 0x10 + unaff_ESI;
    iVar5 = _strcmp(local_8c,*(char **)(iVar4 + 0x48));
    if (iVar5 != 0) {
      local_190 = _strlen(local_8c);
      local_190 = local_190 + 5;
      local_194 = (undefined4 *)__malloc_crt(local_190);
      if (local_194 != (undefined4 *)0x0) {
        local_1a8 = *(undefined **)(iVar4 + 0x48);
        local_198 = (uint *)(unaff_ESI + 0xc + param_1 * 4);
        local_1ac = *local_198;
        local_1a0 = (void *)((param_1 + 6) * 6 + unaff_ESI);
        _memcpy(local_1c8,local_1a0,6);
        local_1b8 = *(undefined4 *)(unaff_ESI + 4);
        eVar6 = _strcpy_s((char *)(local_194 + 1),local_190 - 4,local_8c);
        if (eVar6 != 0) {
                    // WARNING: Subroutine does not return
          __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
        }
        *(undefined4 **)(iVar4 + 0x48) = local_194 + 1;
        *local_198 = (uint)local_1b4[0];
        _memcpy(local_1a0,local_1b4,6);
        if (param_1 == 2) {
          local_190 = 0;
          *(undefined4 *)(unaff_ESI + 4) = local_19c;
          pwVar7 = pwVar11;
          iVar5 = *(int *)((p_Var3->_setloc_data)._cacheout + 0x19);
          local_1a0 = *(void **)((p_Var3->_setloc_data)._cacheout + 0x1b);
          do {
            if (*(int *)(unaff_ESI + 4) == *(int *)pwVar7) {
              if (local_190 != 0) {
                pwVar7 = pwVar11 + local_190 * 4;
                *(int *)pwVar11 = *(int *)pwVar7;
                *(int *)((p_Var3->_setloc_data)._cacheout + 0xb) = *(int *)(pwVar7 + 2);
                *(int *)pwVar7 = iVar5;
                *(void **)(pwVar7 + 2) = local_1a0;
              }
              break;
            }
            local_1c0 = *(int *)pwVar7;
            local_190 = local_190 + 1;
            *(int *)pwVar7 = iVar5;
            pvVar2 = *(void **)(pwVar7 + 2);
            *(void **)(pwVar7 + 2) = local_1a0;
            pwVar7 = pwVar7 + 4;
            iVar5 = local_1c0;
            local_1a0 = pvVar2;
          } while ((int)local_190 < 5);
          if (local_190 == 5) {
            BVar8 = ___crtGetStringTypeA
                              ((_locale_t)0x0,1,
                               "\x01\x02\x03\x04\x05\x06\a\b\t\n\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f"
                               ,0x7f,local_18c,*(int *)(unaff_ESI + 4),*(BOOL *)(unaff_ESI + 0x14));
            if (BVar8 == 0) {
              *(undefined4 *)((p_Var3->_setloc_data)._cacheout + 0xb) = 0;
            }
            else {
              uVar9 = 0;
              do {
                local_18c[uVar9] = local_18c[uVar9] & 0x1ff;
                uVar9 = uVar9 + 1;
              } while (uVar9 < 0x7f);
              iVar5 = _memcmp(local_18c,PTR_DAT_0323f880,0xfe);
              *(uint *)((p_Var3->_setloc_data)._cacheout + 0xb) = (uint)(iVar5 == 0);
            }
            *(int *)pwVar11 = *(int *)(unaff_ESI + 4);
          }
          *(undefined4 *)(unaff_ESI + 0xa8) =
               *(undefined4 *)((p_Var3->_setloc_data)._cacheout + 0xb);
        }
        if (param_1 == 1) {
          *(undefined4 *)(unaff_ESI + 8) = local_19c;
        }
        iVar5 = (**(code **)(&DAT_00da0c78 + param_1 * 0xc))();
        if (iVar5 == 0) {
          if (local_1a8 != &DAT_03240090) {
            ppLVar1 = (LONG **)((param_1 + 5) * 0x10 + unaff_ESI);
            LVar10 = InterlockedDecrement(*ppLVar1);
            if (LVar10 == 0) {
              _free(*ppLVar1);
              _free(*(void **)(iVar4 + 0x54));
              *(undefined4 *)(iVar4 + 0x4c) = 0;
            }
          }
          *local_194 = 1;
          *(undefined4 **)((param_1 + 5) * 0x10 + unaff_ESI) = local_194;
        }
        else {
          *(undefined **)(iVar4 + 0x48) = local_1a8;
          _free(local_194);
          *local_198 = local_1ac;
          *(undefined4 *)(unaff_ESI + 4) = local_1b8;
        }
      }
    }
  }
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  __setlocale_nolock
// 
// Library: Visual Studio 2008 Release

void __fastcall __setlocale_nolock(char *param_1_00,int param_2,int param_1)

{
  bool bVar1;
  char *pcVar2;
  size_t sVar3;
  int iVar4;
  size_t sVar5;
  errno_t eVar6;
  int iVar7;
  int iVar8;
  undefined **ppuVar9;
  char **ppcVar10;
  int local_98;
  int local_90;
  char local_8c [132];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  iVar8 = 0;
  iVar4 = param_2;
  if (param_1 != 0) {
    if (param_1_00 != (char *)0x0) {
      __setlocale_set_cat(param_1);
      iVar4 = param_2;
    }
    goto LAB_00a448fd;
  }
  bVar1 = true;
  local_90 = 0;
  if (param_1_00 != (char *)0x0) {
    if (((*param_1_00 == 'L') && (param_1_00[1] == 'C')) && (param_1_00[2] == '_')) {
      do {
        pcVar2 = _strpbrk(param_1_00,"=;");
        iVar4 = param_2;
        if (((pcVar2 == (char *)0x0) || (sVar3 = (int)pcVar2 - (int)param_1_00, sVar3 == 0)) ||
           (*pcVar2 == ';')) goto LAB_00a448fd;
        local_98 = 1;
        ppuVar9 = &PTR_s_LC_COLLATE_00da0c7c;
        do {
          iVar4 = _strncmp(*ppuVar9,param_1_00,sVar3);
          if ((iVar4 == 0) && (sVar5 = _strlen(*ppuVar9), sVar3 == sVar5)) break;
          local_98 = local_98 + 1;
          ppuVar9 = ppuVar9 + 3;
        } while ((int)ppuVar9 < 0xda0cad);
        pcVar2 = pcVar2 + 1;
        sVar3 = _strcspn(pcVar2,";");
        if ((sVar3 == 0) && (iVar4 = param_2, *pcVar2 != ';')) goto LAB_00a448fd;
        if (local_98 < 6) {
          eVar6 = _strncpy_s(local_8c,0x83,pcVar2,sVar3);
          if (eVar6 != 0) {
                    // WARNING: Subroutine does not return
            __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
          }
          local_8c[sVar3] = '\0';
          iVar4 = __setlocale_set_cat(local_98);
          if (iVar4 != 0) {
            local_90 = local_90 + 1;
          }
        }
      } while ((pcVar2[sVar3] != '\0') && (param_1_00 = pcVar2 + sVar3 + 1, *param_1_00 != '\0'));
    }
    else {
      iVar7 = __expandlocale(param_1_00,local_8c,0x83,0,0,0);
      if (iVar7 == 0) goto LAB_00a448fd;
      ppcVar10 = (char **)(param_2 + 0x48);
      param_2 = iVar4;
      do {
        if (iVar8 != 0) {
          iVar4 = _strcmp(local_8c,*ppcVar10);
          if ((iVar4 == 0) || (iVar4 = __setlocale_set_cat(iVar8), iVar4 != 0)) {
            local_90 = local_90 + 1;
          }
          else {
            bVar1 = false;
          }
        }
        iVar8 = iVar8 + 1;
        ppcVar10 = ppcVar10 + 4;
      } while (iVar8 < 6);
      if (bVar1) goto LAB_00a448f8;
    }
    iVar4 = param_2;
    if (local_90 == 0) goto LAB_00a448fd;
  }
LAB_00a448f8:
  __setlocale_get_all();
  iVar4 = param_2;
LAB_00a448fd:
  ___security_check_cookie_4(iVar4);
  return;
}



// Library Function - Single Match
//  __create_locale
// 
// Library: Visual Studio 2008 Release

_locale_t __cdecl __create_locale(int _Category,char *_Locale)

{
  _locale_t _Memory;
  int *piVar1;
  pthreadlocinfo ptVar2;
  pthreadmbcinfo ptVar3;
  int iVar4;
  
  if (((uint)_Category < 6) && (_Locale != (char *)0x0)) {
    _Memory = (_locale_t)__calloc_crt(8,1);
    if (_Memory != (_locale_t)0x0) {
      ptVar2 = (pthreadlocinfo)__calloc_crt(0xd8,1);
      _Memory->locinfo = ptVar2;
      if (ptVar2 == (pthreadlocinfo)0x0) {
        _free(_Memory);
      }
      else {
        ptVar3 = (pthreadmbcinfo)__calloc_crt(0x220,1);
        _Memory->mbcinfo = ptVar3;
        if (ptVar3 != (pthreadmbcinfo)0x0) {
          __copytlocinfo_nolock();
          iVar4 = __setlocale_nolock(_Category);
          if (iVar4 == 0) {
            ___removelocaleref(_Memory->locinfo);
            ___freetlocinfo(_Memory->locinfo);
            _free(_Memory);
          }
          else {
            iVar4 = __setmbcp_nolock(_Memory->locinfo->lc_codepage,_Memory->mbcinfo);
            if (iVar4 == 0) {
              _Memory->mbcinfo->refcount = 1;
              _Memory->mbcinfo->refcount = 1;
              return _Memory;
            }
            _free(_Memory->mbcinfo);
            ___removelocaleref(_Memory->locinfo);
            ___freetlocinfo(_Memory->locinfo);
            _free(_Memory);
          }
          return (_locale_t)0x0;
        }
        _free(_Memory->locinfo);
        _free(_Memory);
      }
    }
    piVar1 = __errno();
    *piVar1 = 0xc;
  }
  return (_locale_t)0x0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _setlocale
// 
// Library: Visual Studio 2008 Release

char * __cdecl _setlocale(int _Category,char *_Locale)

{
  int *piVar1;
  _ptiddata p_Var2;
  void *pvVar3;
  int iVar4;
  char *local_24;
  
  local_24 = (char *)0x0;
  if ((uint)_Category < 6) {
    p_Var2 = __getptd();
    ___updatetlocinfo();
    p_Var2->_ownlocale = p_Var2->_ownlocale | 0x10;
    pvVar3 = __calloc_crt(0xd8,1);
    if (pvVar3 != (void *)0x0) {
      __lock(0xc);
      __copytlocinfo_nolock();
      FUN_00a44b2f();
      local_24 = (char *)__setlocale_nolock(_Category);
      if (local_24 == (char *)0x0) {
        ___removelocaleref(pvVar3);
        ___freetlocinfo(pvVar3);
      }
      else {
        if (_Locale != (char *)0x0) {
          iVar4 = _strcmp(_Locale,&DAT_03240090);
          if (iVar4 != 0) {
            DAT_032eb230 = 1;
          }
        }
        __lock(0xc);
        __updatetlocinfoEx_nolock();
        ___removelocaleref(pvVar3);
        if (((*(byte *)&p_Var2->_ownlocale & 2) == 0) && (((byte)DAT_03240088 & 1) == 0)) {
          __updatetlocinfoEx_nolock();
          _memcpy(&DAT_032ebaec,PTR_DAT_03240170 + 0xc,0x18);
          _sync_legacy_variables_lk();
        }
        FUN_00a44b3b();
      }
    }
    FUN_00a44b6c();
  }
  else {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    local_24 = (char *)0x0;
  }
  return local_24;
}



void FUN_00a44b2f(void)

{
  FUN_00a4d824(0xc);
  return;
}



void FUN_00a44b3b(void)

{
  FUN_00a4d824(0xc);
  return;
}



void FUN_00a44b6c(void)

{
  int unaff_ESI;
  
  *(uint *)(unaff_ESI + 0x70) = *(uint *)(unaff_ESI + 0x70) & 0xffffffef;
  return;
}



// Library Function - Single Match
//  _xtoa_s@20
// 
// Library: Visual Studio 2008 Release

int __thiscall _xtoa_s_20(char *param_1_00,uint param_1,uint param_2,int param_3)

{
  ulonglong uVar1;
  char *pcVar2;
  uint in_EAX;
  int *piVar3;
  char *pcVar4;
  char cVar5;
  char *pcVar6;
  int iVar7;
  uint local_8;
  
  if (param_1_00 == (char *)0x0) {
    piVar3 = __errno();
    *piVar3 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return 0x16;
  }
  if (param_1 == 0) {
LAB_00a44ba5:
    piVar3 = __errno();
    iVar7 = 0x16;
  }
  else {
    *param_1_00 = '\0';
    if ((param_3 != 0) + 1 < param_1) {
      if (0x22 < param_2 - 2) goto LAB_00a44ba5;
      pcVar6 = param_1_00;
      if (param_3 != 0) {
        *param_1_00 = '-';
        pcVar6 = param_1_00 + 1;
        in_EAX = -in_EAX;
      }
      local_8 = (uint)(param_3 != 0);
      pcVar2 = pcVar6;
      do {
        pcVar4 = pcVar2;
        uVar1 = (ulonglong)in_EAX;
        in_EAX = in_EAX / param_2;
        cVar5 = (char)(uVar1 % (ulonglong)param_2);
        if ((uint)(uVar1 % (ulonglong)param_2) < 10) {
          cVar5 = cVar5 + '0';
        }
        else {
          cVar5 = cVar5 + 'W';
        }
        *pcVar4 = cVar5;
        local_8 = local_8 + 1;
      } while ((in_EAX != 0) && (pcVar2 = pcVar4 + 1, local_8 < param_1));
      if (local_8 < param_1) {
        pcVar4[1] = '\0';
        do {
          cVar5 = *pcVar4;
          *pcVar4 = *pcVar6;
          pcVar4 = pcVar4 + -1;
          *pcVar6 = cVar5;
          pcVar6 = pcVar6 + 1;
        } while (pcVar6 < pcVar4);
        return 0;
      }
      *param_1_00 = '\0';
    }
    piVar3 = __errno();
    iVar7 = 0x22;
  }
  *piVar3 = iVar7;
  __invalid_parameter(0,0,0,0,0);
  return iVar7;
}



// Library Function - Single Match
//  __itoa_s
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl __itoa_s(int _Value,char *_DstBuf,size_t _Size,int _Radix)

{
  errno_t eVar1;
  undefined4 uVar2;
  
  if ((_Radix == 10) && (_Value < 0)) {
    uVar2 = 1;
    _Radix = 10;
  }
  else {
    uVar2 = 0;
  }
  eVar1 = _xtoa_s_20(_Size,_Radix,uVar2);
  return eVar1;
}



// Library Function - Single Match
//  @x64toa_s@24
// 
// Library: Visual Studio 2008 Release

int _x64toa_s_24(int param_1,int param_2,uint param_3,int param_4,char *param_5)

{
  char *pcVar1;
  int *piVar2;
  char cVar3;
  uint extraout_ECX;
  char *pcVar4;
  char *unaff_EDI;
  bool bVar5;
  bool bVar6;
  longlong lVar7;
  int iVar8;
  uint local_8;
  
  if ((unaff_EDI == (char *)0x0) || (param_3 == 0)) {
LAB_00a44c88:
    piVar2 = __errno();
    iVar8 = 0x16;
  }
  else {
    *unaff_EDI = '\0';
    if ((param_5 != (char *)0x0) + 1 < param_3) {
      if (param_4 - 2U < 0x23) {
        bVar6 = param_5 != (char *)0x0;
        param_5 = unaff_EDI;
        if (bVar6) {
          bVar5 = param_1 != 0;
          param_1 = -param_1;
          *unaff_EDI = '-';
          param_5 = unaff_EDI + 1;
          param_2 = -(param_2 + (uint)bVar5);
        }
        lVar7 = CONCAT44(param_2,param_1);
        local_8 = (uint)bVar6;
        pcVar1 = param_5;
        do {
          pcVar4 = pcVar1;
          lVar7 = __aulldvrm(lVar7,param_4,0);
          if (extraout_ECX < 10) {
            cVar3 = (char)extraout_ECX + '0';
          }
          else {
            cVar3 = (char)extraout_ECX + 'W';
          }
          *pcVar4 = cVar3;
          local_8 = local_8 + 1;
        } while ((lVar7 != 0) && (pcVar1 = pcVar4 + 1, local_8 < param_3));
        if (local_8 < param_3) {
          pcVar4[1] = '\0';
          do {
            cVar3 = *pcVar4;
            *pcVar4 = *param_5;
            pcVar4 = pcVar4 + -1;
            *param_5 = cVar3;
            param_5 = param_5 + 1;
          } while (param_5 < pcVar4);
          return 0;
        }
        *unaff_EDI = '\0';
        piVar2 = __errno();
        iVar8 = 0x22;
        *piVar2 = 0x22;
        goto LAB_00a44c92;
      }
      goto LAB_00a44c88;
    }
    piVar2 = __errno();
    iVar8 = 0x22;
  }
  *piVar2 = iVar8;
LAB_00a44c92:
  __invalid_parameter(0,0,0,0,0);
  return iVar8;
}



// Library Function - Single Match
//  __ui64toa_s
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl __ui64toa_s(ulonglong _Val,char *_DstBuf,size_t _Size,int _Radix)

{
  errno_t eVar1;
  
  eVar1 = _x64toa_s_24(_Val,_Size,_Radix,0);
  return eVar1;
}



// Library Function - Single Match
//  __malloc_crt
// 
// Library: Visual Studio 2008 Release

void * __cdecl __malloc_crt(size_t _Size)

{
  void *pvVar1;
  uint dwMilliseconds;
  
  dwMilliseconds = 0;
  while( true ) {
    pvVar1 = _malloc(_Size);
    if (pvVar1 != (void *)0x0) {
      return pvVar1;
    }
    if (DAT_032eb234 == 0) break;
    Sleep(dwMilliseconds);
    dwMilliseconds = dwMilliseconds + 1000;
    if (DAT_032eb234 < dwMilliseconds) {
      dwMilliseconds = 0xffffffff;
    }
    if (dwMilliseconds == 0xffffffff) {
      return (void *)0x0;
    }
  }
  return (void *)0x0;
}



// Library Function - Single Match
//  __calloc_crt
// 
// Library: Visual Studio 2008 Release

void * __cdecl __calloc_crt(size_t _Count,size_t _Size)

{
  void *pvVar1;
  uint dwMilliseconds;
  
  dwMilliseconds = 0;
  while( true ) {
    pvVar1 = (void *)__calloc_impl(_Count,_Size,0);
    if (pvVar1 != (void *)0x0) {
      return pvVar1;
    }
    if (DAT_032eb234 == 0) break;
    Sleep(dwMilliseconds);
    dwMilliseconds = dwMilliseconds + 1000;
    if (DAT_032eb234 < dwMilliseconds) {
      dwMilliseconds = 0xffffffff;
    }
    if (dwMilliseconds == 0xffffffff) {
      return (void *)0x0;
    }
  }
  return (void *)0x0;
}



// Library Function - Single Match
//  __realloc_crt
// 
// Library: Visual Studio 2008 Release

void * __cdecl __realloc_crt(void *_Ptr,size_t _NewSize)

{
  void *pvVar1;
  uint dwMilliseconds;
  
  dwMilliseconds = 0;
  do {
    pvVar1 = _realloc(_Ptr,_NewSize);
    if (pvVar1 != (void *)0x0) {
      return pvVar1;
    }
    if (_NewSize == 0) {
      return (void *)0x0;
    }
    if (DAT_032eb234 == 0) {
      return (void *)0x0;
    }
    Sleep(dwMilliseconds);
    dwMilliseconds = dwMilliseconds + 1000;
    if (DAT_032eb234 < dwMilliseconds) {
      dwMilliseconds = 0xffffffff;
    }
  } while (dwMilliseconds != 0xffffffff);
  return (void *)0x0;
}



// Library Function - Single Match
//  __recalloc_crt
// 
// Library: Visual Studio 2008 Release

void * __cdecl __recalloc_crt(void *_Ptr,size_t _Count,size_t _Size)

{
  void *pvVar1;
  uint dwMilliseconds;
  
  dwMilliseconds = 0;
  do {
    pvVar1 = __recalloc(_Ptr,_Count,_Size);
    if (pvVar1 != (void *)0x0) {
      return pvVar1;
    }
    if (_Size == 0) {
      return (void *)0x0;
    }
    if (DAT_032eb234 == 0) {
      return (void *)0x0;
    }
    Sleep(dwMilliseconds);
    dwMilliseconds = dwMilliseconds + 1000;
    if (DAT_032eb234 < dwMilliseconds) {
      dwMilliseconds = 0xffffffff;
    }
  } while (dwMilliseconds != 0xffffffff);
  return (void *)0x0;
}



// Library Function - Single Match
//  ___pctype_func
// 
// Library: Visual Studio 2008 Release

ushort * __cdecl ___pctype_func(void)

{
  _ptiddata p_Var1;
  pthreadlocinfo ptVar2;
  
  p_Var1 = __getptd();
  ptVar2 = p_Var1->ptlocinfo;
  if ((ptVar2 != (pthreadlocinfo)PTR_DAT_03240170) && ((p_Var1->_ownlocale & DAT_03240088) == 0)) {
    ptVar2 = ___updatetlocinfo();
  }
  return (ushort *)ptVar2[1].lc_category[0].locale;
}



// Library Function - Single Match
//  __get_errno_from_oserr
// 
// Library: Visual Studio 2008 Release

int __cdecl __get_errno_from_oserr(ulong param_1)

{
  uint uVar1;
  
  uVar1 = 0;
  do {
    if (param_1 == (&DAT_0323f890)[uVar1 * 2]) {
      return (&DAT_0323f894)[uVar1 * 2];
    }
    uVar1 = uVar1 + 1;
  } while (uVar1 < 0x2d);
  if (param_1 - 0x13 < 0x12) {
    return 0xd;
  }
  return (-(uint)(0xe < param_1 - 0xbc) & 0xe) + 8;
}



// Library Function - Single Match
//  __errno
// 
// Library: Visual Studio 2008 Release

int * __cdecl __errno(void)

{
  _ptiddata p_Var1;
  
  p_Var1 = __getptd_noexit();
  if (p_Var1 == (_ptiddata)0x0) {
    return (int *)&DAT_0323f9f8;
  }
  return &p_Var1->_terrno;
}



// Library Function - Single Match
//  ___doserrno
// 
// Library: Visual Studio 2008 Release

ulong * __cdecl ___doserrno(void)

{
  _ptiddata p_Var1;
  
  p_Var1 = __getptd_noexit();
  if (p_Var1 == (_ptiddata)0x0) {
    return (ulong *)&DAT_0323f9fc;
  }
  return &p_Var1->_tdoserrno;
}



// Library Function - Single Match
//  __dosmaperr
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __cdecl __dosmaperr(ulong param_1)

{
  ulong *puVar1;
  int iVar2;
  int *piVar3;
  
  puVar1 = ___doserrno();
  *puVar1 = param_1;
  iVar2 = __get_errno_from_oserr(param_1);
  piVar3 = __errno();
  *piVar3 = iVar2;
  return;
}



// Library Function - Single Match
//  ___init_ctype
// 
// Library: Visual Studio 2008 Release

int __cdecl ___init_ctype(threadlocinfo *_LocInfo)

{
  BYTE *pBVar1;
  byte bVar2;
  LONG *lpAddend;
  void *_Dst;
  int iVar3;
  BOOL BVar4;
  BYTE *pBVar5;
  LONG LVar6;
  BYTE *pBVar7;
  BYTE *pBVar8;
  uint uVar9;
  localeinfo_struct local_50;
  wchar_t *local_48;
  LPWORD local_44;
  undefined2 *local_40;
  int *local_3c;
  BYTE *local_38;
  wchar_t *local_34;
  undefined4 *local_30;
  void *local_2c;
  LPCSTR local_28;
  void *local_24;
  BYTE *local_20;
  _cpinfo local_1c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_30 = (undefined4 *)0x0;
  local_20 = (BYTE *)0x0;
  local_24 = (void *)0x0;
  local_2c = (void *)0x0;
  local_28 = (LPCSTR)0x0;
  local_50.locinfo = _LocInfo;
  local_50.mbcinfo = (pthreadmbcinfo)0x0;
  if (_LocInfo->lc_category[0].wlocale == (wchar_t *)0x0) {
    lpAddend = (LONG *)_LocInfo[1].lc_collate_cp;
    if (lpAddend != (LONG *)0x0) {
      InterlockedDecrement(lpAddend);
    }
    _LocInfo[1].lc_collate_cp = 0;
    _LocInfo[1].lc_time_cp = 0;
    _LocInfo[1].lc_category[0].locale = " ";
    _LocInfo[1].lc_category[0].wlocale = (wchar_t *)&DAT_00da12d0;
    _LocInfo[1].lc_category[0].refcount = (int *)&DAT_00da1450;
    _LocInfo->locale_name[3] = (wchar_t *)0x1;
    goto LAB_00a45307;
  }
  if ((_LocInfo->lc_codepage == 0) &&
     (iVar3 = ___getlocaleinfo(&local_50,0,
                               (LPCWSTR)(uint)*(ushort *)&_LocInfo->lc_category[2].locale,0x1004,
                               &_LocInfo->lc_codepage), iVar3 != 0)) {
LAB_00a4529a:
    _free(local_30);
    _free(local_20);
    _free(local_24);
    _free(local_2c);
  }
  else {
    local_30 = (undefined4 *)__malloc_crt(4);
    local_20 = (BYTE *)__calloc_crt(0x180,2);
    local_24 = __calloc_crt(0x180,1);
    local_2c = __calloc_crt(0x180,1);
    local_28 = (LPCSTR)__calloc_crt(0x101,1);
    if ((local_30 == (undefined4 *)0x0) ||
       ((((local_20 == (BYTE *)0x0 || (local_28 == (LPCSTR)0x0)) || (local_24 == (void *)0x0)) ||
        (local_2c == (void *)0x0)))) goto LAB_00a4529a;
    *local_30 = 0;
    iVar3 = 0;
    do {
      local_28[iVar3] = (CHAR)iVar3;
      iVar3 = iVar3 + 1;
    } while (iVar3 < 0x100);
    BVar4 = GetCPInfo(_LocInfo->lc_codepage,&local_1c);
    if ((BVar4 == 0) || (5 < local_1c.MaxCharSize)) goto LAB_00a4529a;
    local_34 = (wchar_t *)(local_1c.MaxCharSize & 0xffff);
    if (((wchar_t *)0x1 < local_34) && (local_1c.LeadByte[0] != '\0')) {
      pBVar5 = local_1c.LeadByte + 1;
      do {
        bVar2 = *pBVar5;
        if (bVar2 == 0) break;
        for (uVar9 = (uint)pBVar5[-1]; (int)uVar9 <= (int)(uint)bVar2; uVar9 = uVar9 + 1) {
          local_28[uVar9] = ' ';
          bVar2 = *pBVar5;
        }
        pBVar7 = pBVar5 + 1;
        pBVar5 = pBVar5 + 2;
      } while (*pBVar7 != 0);
    }
    local_44 = (LPWORD)(local_20 + 0x100);
    BVar4 = ___crtGetStringTypeA((_locale_t)0x0,1,local_28,0x100,local_44,_LocInfo->lc_codepage,0);
    if (((BVar4 == 0) ||
        (iVar3 = ___crtLCMapStringA((_locale_t)0x0,_LocInfo->lc_category[0].wlocale,0x100,
                                    local_28 + 1,0xff,(LPSTR)((int)local_24 + 0x81),0xff,
                                    _LocInfo->lc_codepage,0), iVar3 == 0)) ||
       (iVar3 = ___crtLCMapStringA((_locale_t)0x0,_LocInfo->lc_category[0].wlocale,0x200,
                                   local_28 + 1,0xff,(LPSTR)((int)local_2c + 0x81),0xff,
                                   _LocInfo->lc_codepage,0), pBVar5 = local_20, _Dst = local_24,
       iVar3 == 0)) goto LAB_00a4529a;
    local_40 = (undefined2 *)(local_20 + 0xfe);
    *local_40 = 0;
    local_48 = (wchar_t *)((int)local_24 + 0x80);
    *(undefined *)((int)local_24 + 0x7f) = 0;
    *(undefined *)((int)local_2c + 0x7f) = 0;
    *(undefined *)local_48 = 0;
    local_3c = (int *)((int)local_2c + 0x80);
    *(undefined *)local_3c = 0;
    pBVar7 = local_20;
    if ((1 < (int)local_34) && (local_1c.LeadByte[0] != '\0')) {
      pBVar7 = local_1c.LeadByte + 1;
      do {
        if (*pBVar7 == 0) break;
        local_24 = (void *)(uint)pBVar7[-1];
        if (local_24 <= (void *)(uint)*pBVar7) {
          local_38 = local_20 + (int)local_24 * 2 + 0x100;
          do {
            local_24 = (void *)((int)local_24 + 1);
            *(undefined2 *)local_38 = 0x8000;
            local_38 = local_38 + 2;
          } while ((int)local_24 <= (int)(uint)*pBVar7);
        }
        pBVar8 = pBVar7 + 2;
        pBVar1 = pBVar7 + 1;
        pBVar7 = pBVar8;
      } while (*pBVar1 != 0);
    }
    local_20 = pBVar7;
    _memcpy(pBVar5,pBVar5 + 0x200,0xfe);
    _memcpy(_Dst,(void *)((int)_Dst + 0x100),0x7f);
    _memcpy(local_2c,(void *)((int)local_2c + 0x100),0x7f);
    if (((LONG *)_LocInfo[1].lc_collate_cp != (LONG *)0x0) &&
       (LVar6 = InterlockedDecrement((LONG *)_LocInfo[1].lc_collate_cp), LVar6 == 0)) {
      _free((void *)(_LocInfo[1].lc_time_cp - 0xfe));
      _free(_LocInfo[1].lc_category[0].wlocale + -0x40);
      _free(_LocInfo[1].lc_category[0].refcount + -0x20);
      _free((void *)_LocInfo[1].lc_collate_cp);
    }
    *local_30 = 1;
    _LocInfo[1].lc_collate_cp = (uint)local_30;
    _LocInfo[1].lc_category[0].locale = (char *)local_44;
    _LocInfo[1].lc_time_cp = (uint)local_40;
    _LocInfo[1].lc_category[0].wlocale = local_48;
    _LocInfo[1].lc_category[0].refcount = local_3c;
    _LocInfo->locale_name[3] = local_34;
  }
  _free(local_28);
LAB_00a45307:
  iVar3 = ___security_check_cookie_4();
  return iVar3;
}



// Library Function - Single Match
//  ____mb_cur_max_func
// 
// Library: Visual Studio 2008 Release

int __cdecl ____mb_cur_max_func(void)

{
  _ptiddata p_Var1;
  pthreadlocinfo ptVar2;
  
  p_Var1 = __getptd();
  ptVar2 = p_Var1->ptlocinfo;
  if ((ptVar2 != (pthreadlocinfo)PTR_DAT_03240170) && ((p_Var1->_ownlocale & DAT_03240088) == 0)) {
    ptVar2 = ___updatetlocinfo();
  }
  return (int)ptVar2->locale_name[3];
}



// Library Function - Single Match
//  ____mb_cur_max_l_func
// 
// Library: Visual Studio 2008 Release

int __cdecl ____mb_cur_max_l_func(_locale_t param_1)

{
  int iVar1;
  
  if (param_1 == (_locale_t)0x0) {
    iVar1 = ____mb_cur_max_func();
    return iVar1;
  }
  return (int)param_1->locinfo->locale_name[3];
}



// Library Function - Single Match
//  ____lc_codepage_func
// 
// Library: Visual Studio 2008 Release

UINT __cdecl ____lc_codepage_func(void)

{
  _ptiddata p_Var1;
  pthreadlocinfo ptVar2;
  
  p_Var1 = __getptd();
  ptVar2 = p_Var1->ptlocinfo;
  if ((ptVar2 != (pthreadlocinfo)PTR_DAT_03240170) && ((p_Var1->_ownlocale & DAT_03240088) == 0)) {
    ptVar2 = ___updatetlocinfo();
  }
  return ptVar2->lc_codepage;
}



// Library Function - Single Match
//  ____lc_collate_cp_func
// 
// Library: Visual Studio 2008 Release

UINT __cdecl ____lc_collate_cp_func(void)

{
  _ptiddata p_Var1;
  pthreadlocinfo ptVar2;
  
  p_Var1 = __getptd();
  ptVar2 = p_Var1->ptlocinfo;
  if ((ptVar2 != (pthreadlocinfo)PTR_DAT_03240170) && ((p_Var1->_ownlocale & DAT_03240088) == 0)) {
    ptVar2 = ___updatetlocinfo();
  }
  return ptVar2->lc_collate_cp;
}



// Library Function - Single Match
//  ____lc_handle_func
// 
// Library: Visual Studio 2008 Release

uint * ____lc_handle_func(void)

{
  _ptiddata p_Var1;
  pthreadlocinfo ptVar2;
  
  p_Var1 = __getptd();
  ptVar2 = p_Var1->ptlocinfo;
  if ((ptVar2 != (pthreadlocinfo)PTR_DAT_03240170) && ((p_Var1->_ownlocale & DAT_03240088) == 0)) {
    ptVar2 = ___updatetlocinfo();
  }
  return &ptVar2->lc_time_cp;
}



// Library Function - Single Match
//  _abort
// 
// Library: Visual Studio 2008 Release

void __cdecl _abort(void)

{
  code *pcVar1;
  _PHNDLR p_Var2;
  EXCEPTION_RECORD local_32c;
  _EXCEPTION_POINTERS local_2dc;
  undefined4 local_2d4;
  
  if (((byte)DAT_0323fa00 & 1) != 0) {
    __NMSG_WRITE(10);
  }
  p_Var2 = ___get_sigabrt();
  if (p_Var2 != (_PHNDLR)0x0) {
    _raise(0x16);
  }
  if (((byte)DAT_0323fa00 & 2) != 0) {
    local_2d4 = 0x10001;
    _memset(&local_32c,0,0x50);
    local_2dc.ExceptionRecord = &local_32c;
    local_2dc.ContextRecord = (PCONTEXT)&local_2d4;
    local_32c.ExceptionCode = 0x40000015;
    SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)0x0);
    UnhandledExceptionFilter(&local_2dc);
  }
  __exit(3);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// Library Function - Single Match
//  __set_abort_behavior
// 
// Library: Visual Studio 2008 Release

uint __cdecl __set_abort_behavior(uint _Flags,uint _Mask)

{
  uint uVar1;
  
  uVar1 = DAT_0323fa00;
  DAT_0323fa00 = ~_Mask & DAT_0323fa00 | _Flags & _Mask;
  return uVar1;
}



// Library Function - Single Match
//  ___TypeMatch
// 
// Library: Visual Studio 2008 Release

undefined4 ___TypeMatch(byte *param_1,byte *param_2,uint *param_3)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *(int *)(param_1 + 4);
  if ((iVar1 == 0) || (*(char *)(iVar1 + 8) == '\0')) {
LAB_00a4555d:
    uVar2 = 1;
  }
  else {
    if (iVar1 == *(int *)(param_2 + 4)) {
LAB_00a4553c:
      if (((((*param_2 & 2) == 0) || ((*param_1 & 8) != 0)) &&
          (((*param_3 & 1) == 0 || ((*param_1 & 1) != 0)))) &&
         (((*param_3 & 2) == 0 || ((*param_1 & 2) != 0)))) goto LAB_00a4555d;
    }
    else {
      iVar1 = _strcmp((char *)(iVar1 + 8),(char *)(*(int *)(param_2 + 4) + 8));
      if (iVar1 == 0) goto LAB_00a4553c;
    }
    uVar2 = 0;
  }
  return uVar2;
}



// Library Function - Single Match
//  ___FrameUnwindFilter
// 
// Library: Visual Studio 2008 Release

_ptiddata ___FrameUnwindFilter(int **param_1)

{
  _ptiddata p_Var1;
  
  if (**param_1 == -0x1fbcb0b3) {
    p_Var1 = __getptd();
    if (0 < p_Var1->_ProcessingThrow) {
      p_Var1 = __getptd();
      p_Var1->_ProcessingThrow = p_Var1->_ProcessingThrow + -1;
    }
  }
  else if (**param_1 == -0x1f928c9d) {
    p_Var1 = __getptd();
    p_Var1->_ProcessingThrow = 0;
    terminate();
    return p_Var1;
  }
  return (_ptiddata)0x0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  ___FrameUnwindToState
// 
// Library: Visual Studio 2008 Release

void ___FrameUnwindToState(int param_1,undefined4 param_2,int param_3,int param_4)

{
  _ptiddata p_Var1;
  int iVar2;
  int *piVar3;
  int iVar4;
  
  if (*(int *)(param_3 + 4) < 0x81) {
    iVar4 = (int)*(char *)(param_1 + 8);
  }
  else {
    iVar4 = *(int *)(param_1 + 8);
  }
  p_Var1 = __getptd();
  p_Var1->_ProcessingThrow = p_Var1->_ProcessingThrow + 1;
  while (iVar4 != param_4) {
    if ((iVar4 < 0) || (*(int *)(param_3 + 4) <= iVar4)) {
      _inconsistency();
    }
    iVar2 = iVar4 * 8;
    piVar3 = (int *)(*(int *)(param_3 + 8) + iVar2);
    iVar4 = *piVar3;
    if (piVar3[1] != 0) {
      *(int *)(param_1 + 8) = iVar4;
      __CallSettingFrame_12(*(undefined4 *)(*(int *)(param_3 + 8) + 4 + iVar2),param_1,0x103);
    }
  }
  FUN_00a45673();
  if (iVar4 != param_4) {
    _inconsistency();
  }
  *(int *)(param_1 + 8) = iVar4;
  return;
}



void FUN_00a45673(void)

{
  _ptiddata p_Var1;
  
  p_Var1 = __getptd();
  if (0 < p_Var1->_ProcessingThrow) {
    p_Var1 = __getptd();
    p_Var1->_ProcessingThrow = p_Var1->_ProcessingThrow + -1;
  }
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  ___DestructExceptionObject
// 
// Library: Visual Studio 2008 Release

void ___DestructExceptionObject(int *param_1)

{
  int iVar1;
  
  if ((((param_1 != (int *)0x0) && (*param_1 == -0x1f928c9d)) && (param_1[7] != 0)) &&
     (iVar1 = *(int *)(param_1[7] + 4), iVar1 != 0)) {
    FID_conflict__CallMemberFunction1(param_1[6],iVar1);
  }
  return;
}



// Library Function - Single Match
//  ___AdjustPointer
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int ___AdjustPointer(int param_1,int *param_2)

{
  int iVar1;
  
  iVar1 = *param_2 + param_1;
  if (-1 < param_2[1]) {
    iVar1 = iVar1 + *(int *)(*(int *)(param_2[1] + param_1) + param_2[2]) + param_2[1];
  }
  return iVar1;
}



bool FUN_00a45751(void)

{
  _ptiddata p_Var1;
  
  p_Var1 = __getptd();
  return p_Var1->_ProcessingThrow != 0;
}



// Library Function - Single Match
//  unsigned char __cdecl IsInExceptionSpec(struct EHExceptionRecord *,struct _s_ESTypeList const *)
// 
// Library: Visual Studio 2008 Release

uchar __cdecl IsInExceptionSpec(EHExceptionRecord *param_1,_s_ESTypeList *param_2)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int *unaff_EDI;
  int local_c;
  uchar local_5;
  
  if (unaff_EDI == (int *)0x0) {
    _inconsistency();
    terminate();
  }
  local_c = 0;
  local_5 = '\0';
  if (0 < *unaff_EDI) {
    do {
      piVar3 = *(int **)(*(int *)(param_1 + 0x1c) + 0xc);
      iVar2 = *piVar3;
      if (0 < iVar2) {
        do {
          piVar3 = piVar3 + 1;
          iVar1 = ___TypeMatch(unaff_EDI[1] + local_c * 0x10,*piVar3,*(undefined4 *)(param_1 + 0x1c)
                              );
          if (iVar1 != 0) {
            local_5 = '\x01';
            break;
          }
          iVar2 = iVar2 + -1;
        } while (0 < iVar2);
      }
      local_c = local_c + 1;
    } while (local_c < *unaff_EDI);
  }
  return local_5;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void FUN_00a457df(void *param_1)

{
  code *pcVar1;
  _ptiddata p_Var2;
  
  p_Var2 = __getptd();
  if (p_Var2->_curexcspec != (void *)0x0) {
    _inconsistency();
  }
  FUN_00a4e48a();
  terminate();
  p_Var2 = __getptd();
  p_Var2->_curexcspec = param_1;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void Catch_All_00a45810(void)

{
  code *pcVar1;
  _ptiddata p_Var2;
  int unaff_EBP;
  
  p_Var2 = __getptd();
  p_Var2->_curexcspec = *(void **)(unaff_EBP + 8);
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  void * __cdecl CallCatchBlock(struct EHExceptionRecord *,struct EHRegistrationNode *,struct
// _CONTEXT *,struct _s_FuncInfo const *,void *,int,unsigned long)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void * __cdecl
CallCatchBlock(EHExceptionRecord *param_1,EHRegistrationNode *param_2,_CONTEXT *param_3,
              _s_FuncInfo *param_4,void *param_5,int param_6,ulong param_7)

{
  _ptiddata p_Var1;
  void *in_ECX;
  undefined local_40 [8];
  undefined4 local_38;
  void *local_34;
  void *local_30;
  undefined4 local_2c;
  undefined4 local_28;
  void *local_20;
  undefined4 uStack_c;
  undefined *local_8;
  
  local_8 = &DAT_03110a28;
  uStack_c = 0xa45834;
  local_38 = 0;
  local_28 = *(undefined4 *)(param_2 + -4);
  local_2c = __CreateFrameInfo(local_40,*(undefined4 *)(param_1 + 0x18));
  p_Var1 = __getptd();
  local_30 = p_Var1->_curexception;
  p_Var1 = __getptd();
  local_34 = p_Var1->_curcontext;
  p_Var1 = __getptd();
  p_Var1->_curexception = param_1;
  p_Var1 = __getptd();
  p_Var1->_curcontext = param_3;
  local_8 = (undefined *)0x1;
  local_20 = _CallCatchBlock2(param_2,param_4,in_ECX,(int)param_5,param_6);
  local_8 = (undefined *)0xfffffffe;
  FUN_00a4594e();
  return local_20;
}



void FUN_00a4594e(void)

{
  _ptiddata p_Var1;
  int iVar2;
  int unaff_EBP;
  int *unaff_ESI;
  int unaff_EDI;
  
  *(undefined4 *)(unaff_EDI + -4) = *(undefined4 *)(unaff_EBP + -0x24);
  __FindAndUnlinkFrame(*(undefined4 *)(unaff_EBP + -0x28));
  p_Var1 = __getptd();
  p_Var1->_curexception = *(void **)(unaff_EBP + -0x2c);
  p_Var1 = __getptd();
  p_Var1->_curcontext = *(void **)(unaff_EBP + -0x30);
  if ((((*unaff_ESI == -0x1f928c9d) && (unaff_ESI[4] == 3)) &&
      ((iVar2 = unaff_ESI[5], iVar2 == 0x19930520 ||
       ((iVar2 == 0x19930521 || (iVar2 == 0x19930522)))))) &&
     ((*(int *)(unaff_EBP + -0x34) == 0 && (*(int *)(unaff_EBP + -0x1c) != 0)))) {
    iVar2 = __IsExceptionObjectToBeDestroyed(unaff_ESI[6]);
    if (iVar2 != 0) {
      ___DestructExceptionObject();
    }
  }
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  ___BuildCatchObjectHelper
// 
// Library: Visual Studio 2008 Release

char ___BuildCatchObjectHelper(int param_1,int *param_2,uint *param_3,byte *param_4)

{
  int iVar1;
  void *pvVar2;
  size_t _Size;
  uint in_stack_ffffffd0;
  
  if (((param_3[1] == 0) || (*(char *)(param_3[1] + 8) == '\0')) ||
     ((param_3[2] == 0 && ((*param_3 & 0x80000000) == 0)))) {
    return '\0';
  }
  if (-1 < (int)*param_3) {
    param_2 = (int *)(param_3[2] + 0xc + (int)param_2);
  }
  if ((*param_3 & 8) == 0) {
    pvVar2 = *(void **)(param_1 + 0x18);
    if ((*param_4 & 1) == 0) {
      if (*(int *)(param_4 + 0x18) == 0) {
        iVar1 = _ValidateRead(pvVar2,1);
        if ((iVar1 != 0) && (iVar1 = _ValidateRead(param_2,1), iVar1 != 0)) {
          _Size = *(size_t *)(param_4 + 0x14);
          pvVar2 = (void *)___AdjustPointer(*(undefined4 *)(param_1 + 0x18),param_4 + 8);
          _memmove(param_2,pvVar2,_Size);
          return '\0';
        }
      }
      else {
        iVar1 = _ValidateRead(pvVar2,1);
        if (((iVar1 != 0) && (iVar1 = _ValidateRead(param_2,1), iVar1 != 0)) &&
           (iVar1 = _ValidateRead(*(void **)(param_4 + 0x18),in_stack_ffffffd0), iVar1 != 0)) {
          return ((*param_4 & 4) != 0) + '\x01';
        }
      }
    }
    else {
      iVar1 = _ValidateRead(pvVar2,1);
      if ((iVar1 != 0) && (iVar1 = _ValidateRead(param_2,1), iVar1 != 0)) {
        _memmove(param_2,*(void **)(param_1 + 0x18),*(size_t *)(param_4 + 0x14));
        if (*(int *)(param_4 + 0x14) != 4) {
          return '\0';
        }
        iVar1 = *param_2;
        if (iVar1 == 0) {
          return '\0';
        }
        goto LAB_00a45a49;
      }
    }
  }
  else {
    iVar1 = _ValidateRead(*(void **)(param_1 + 0x18),1);
    if ((iVar1 != 0) && (iVar1 = _ValidateRead(param_2,1), iVar1 != 0)) {
      iVar1 = *(int *)(param_1 + 0x18);
      *param_2 = iVar1;
LAB_00a45a49:
      iVar1 = ___AdjustPointer(iVar1,param_4 + 8);
      *param_2 = iVar1;
      return '\0';
    }
  }
  _inconsistency();
  return '\0';
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  ___BuildCatchObject
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void ___BuildCatchObject(int param_1,int param_2,uint *param_3,int param_4)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  
  iVar3 = param_2;
  if ((*param_3 & 0x80000000) == 0) {
    iVar3 = param_3[2] + 0xc + param_2;
  }
  iVar1 = ___BuildCatchObjectHelper(param_1,param_2,param_3,param_4);
  if (iVar1 == 1) {
    uVar2 = ___AdjustPointer(*(undefined4 *)(param_1 + 0x18),param_4 + 8);
    FID_conflict__CallMemberFunction1(iVar3,*(undefined4 *)(param_4 + 0x18),uVar2);
  }
  else if (iVar1 == 2) {
    uVar2 = ___AdjustPointer(*(undefined4 *)(param_1 + 0x18),param_4 + 8,1);
    FID_conflict__CallMemberFunction1(iVar3,*(undefined4 *)(param_4 + 0x18),uVar2);
  }
  return;
}



// Library Function - Single Match
//  void __cdecl CatchIt(struct EHExceptionRecord *,struct EHRegistrationNode *,struct _CONTEXT
// *,void *,struct _s_FuncInfo const *,struct _s_HandlerType const *,struct _s_CatchableType const
// *,struct _s_TryBlockMapEntry const *,int,struct EHRegistrationNode *,unsigned char)
// 
// Library: Visual Studio 2008 Release

void __cdecl
CatchIt(EHExceptionRecord *param_1,EHRegistrationNode *param_2,_CONTEXT *param_3,void *param_4,
       _s_FuncInfo *param_5,_s_HandlerType *param_6,_s_CatchableType *param_7,
       _s_TryBlockMapEntry *param_8,int param_9,EHRegistrationNode *param_10,uchar param_11)

{
  void *pvVar1;
  EHRegistrationNode *unaff_ESI;
  int unaff_EDI;
  EHRegistrationNode *pEVar2;
  
  if (param_5 != (_s_FuncInfo *)0x0) {
    ___BuildCatchObject(param_1);
  }
  if (param_7 == (_s_CatchableType *)0x0) {
    param_7 = (_s_CatchableType *)unaff_ESI;
  }
  _UnwindNestedFrames((EHRegistrationNode *)param_7,param_1);
  pEVar2 = unaff_ESI;
  ___FrameUnwindToState();
  *(int *)(unaff_ESI + 8) = *(int *)(unaff_EDI + 4) + 1;
  pvVar1 = CallCatchBlock(param_1,unaff_ESI,(_CONTEXT *)param_2,(_s_FuncInfo *)param_4,param_6,0x100
                          ,(ulong)pEVar2);
  if (pvVar1 != (void *)0x0) {
    _JumpToContinuation(pvVar1,unaff_ESI);
  }
  return;
}



// Library Function - Single Match
//  void __cdecl FindHandlerForForeignException(struct EHExceptionRecord *,struct EHRegistrationNode
// *,struct _CONTEXT *,void *,struct _s_FuncInfo const *,int,int,struct EHRegistrationNode *)
// 
// Library: Visual Studio 2008 Release

void __cdecl
FindHandlerForForeignException
          (EHExceptionRecord *param_1,EHRegistrationNode *param_2,_CONTEXT *param_3,void *param_4,
          _s_FuncInfo *param_5,int param_6,int param_7,EHRegistrationNode *param_8)

{
  TypeDescriptor *pTVar1;
  _ptiddata p_Var2;
  void *pvVar3;
  int iVar4;
  _s_TryBlockMapEntry *p_Var5;
  _s_TryBlockMapEntry *unaff_EBX;
  EHRegistrationNode *unaff_ESI;
  int unaff_EDI;
  uint extraout_var;
  uint uVar6;
  uint local_8;
  
  if (*(int *)param_1 != -0x7ffffffd) {
    p_Var2 = __getptd();
    uVar6 = extraout_var;
    if (p_Var2->_translator != (void *)0x0) {
      p_Var2 = __getptd();
      pvVar3 = (void *)__encoded_null();
      if (((p_Var2->_translator != pvVar3) && (*(int *)param_1 != -0x1fbcb0b3)) &&
         (iVar4 = _CallSETranslator(param_1,param_2,param_3,param_4,param_5,param_7,param_8),
         iVar4 != 0)) {
        return;
      }
    }
    if (param_5->nTryBlocks == 0) {
      _inconsistency();
    }
    p_Var5 = _GetRangeOfTrysToCheck(param_5,param_7,param_6,&local_8,(uint *)&stack0xfffffff4);
    if (local_8 < uVar6) {
      do {
        if ((p_Var5->tryLow <= param_6) && (param_6 <= p_Var5->tryHigh)) {
          pTVar1 = p_Var5->pHandlerArray[p_Var5->nCatches + -1].pType;
          if (((pTVar1 == (TypeDescriptor *)0x0) || (*(char *)&pTVar1[1].pVFTable == '\0')) &&
             ((*(byte *)&p_Var5->pHandlerArray[p_Var5->nCatches + -1].adjectives & 0x40) == 0)) {
            CatchIt(param_1,(EHRegistrationNode *)param_3,(_CONTEXT *)param_4,param_5,
                    (_s_FuncInfo *)0x0,(_s_HandlerType *)param_7,(_s_CatchableType *)param_8,
                    unaff_EBX,unaff_EDI,unaff_ESI,(uchar)uVar6);
          }
        }
        local_8 = local_8 + 1;
        p_Var5 = p_Var5 + 1;
      } while (local_8 < uVar6);
    }
  }
  return;
}



// Library Function - Single Match
//  void __cdecl FindHandler(struct EHExceptionRecord *,struct EHRegistrationNode *,struct _CONTEXT
// *,void *,struct _s_FuncInfo const *,unsigned char,int,struct EHRegistrationNode *)
// 
// Library: Visual Studio 2008 Release

void __cdecl
FindHandler(EHExceptionRecord *param_1,EHRegistrationNode *param_2,_CONTEXT *param_3,void *param_4,
           _s_FuncInfo *param_5,uchar param_6,int param_7,EHRegistrationNode *param_8)

{
  int *piVar1;
  _s_FuncInfo *p_Var2;
  uchar uVar3;
  bool bVar4;
  _ptiddata p_Var5;
  int iVar6;
  _s_TryBlockMapEntry *p_Var7;
  EHRegistrationNode *unaff_EBX;
  _s_FuncInfo *p_Var8;
  _s_FuncInfo **pp_Var9;
  int unaff_ESI;
  _s_FuncInfo *p_Var10;
  _s_TryBlockMapEntry *unaff_EDI;
  EHRegistrationNode *pEVar11;
  uchar in_stack_ffffffd0;
  uint local_20;
  int local_1c;
  _s_FuncInfo *local_18;
  uint local_14;
  HandlerType *local_10;
  int local_c;
  char local_5;
  
  local_5 = '\0';
  if (param_5->maxState < 0x81) {
    local_c = (int)(char)param_2[8];
  }
  else {
    local_c = *(int *)(param_2 + 8);
  }
  if ((local_c < -1) || (param_5->maxState <= local_c)) {
    _inconsistency();
  }
  p_Var10 = (_s_FuncInfo *)param_1;
  if (*(int *)param_1 != -0x1f928c9d) goto LAB_00a4603a;
  p_Var8 = (_s_FuncInfo *)0x19930520;
  if (*(int *)(param_1 + 0x10) != 3) goto LAB_00a45ea7;
  iVar6 = *(int *)(param_1 + 0x14);
  if (((iVar6 != 0x19930520) && (iVar6 != 0x19930521)) && (iVar6 != 0x19930522)) goto LAB_00a45ea7;
  if (*(int *)(param_1 + 0x1c) != 0) goto LAB_00a45ea7;
  p_Var5 = __getptd();
  if (p_Var5->_curexception != (void *)0x0) {
    p_Var5 = __getptd();
    param_1 = (EHExceptionRecord *)p_Var5->_curexception;
    p_Var5 = __getptd();
    param_3 = (_CONTEXT *)p_Var5->_curcontext;
    iVar6 = _ValidateRead(param_1,1);
    if (iVar6 == 0) {
      _inconsistency();
    }
    if ((((*(int *)param_1 == -0x1f928c9d) && (*(int *)((int)param_1 + 0x10) == 3)) &&
        ((iVar6 = *(int *)((int)param_1 + 0x14), iVar6 == 0x19930520 ||
         ((iVar6 == 0x19930521 || (iVar6 == 0x19930522)))))) && (*(int *)((int)param_1 + 0x1c) == 0)
       ) {
      _inconsistency();
    }
    p_Var5 = __getptd();
    if (p_Var5->_curexcspec == (void *)0x0) goto LAB_00a45ea7;
    p_Var5 = __getptd();
    piVar1 = (int *)p_Var5->_curexcspec;
    p_Var5 = __getptd();
    iVar6 = 0;
    p_Var5->_curexcspec = (void *)0x0;
    uVar3 = IsInExceptionSpec(param_1,(_s_ESTypeList *)unaff_EDI);
    if (uVar3 != '\0') goto LAB_00a45ea7;
    p_Var8 = (_s_FuncInfo *)0x0;
    if (0 < *piVar1) {
      do {
        bVar4 = type_info::operator==
                          (*(type_info **)((int)&p_Var8->maxState + piVar1[1]),
                           (type_info *)&std::bad_exception::RTTI_Type_Descriptor);
        if (bVar4) goto LAB_00a45e78;
        iVar6 = iVar6 + 1;
        p_Var8 = (_s_FuncInfo *)&p_Var8->pTryBlockMap;
      } while (iVar6 < *piVar1);
    }
    do {
      terminate();
LAB_00a45e78:
      ___DestructExceptionObject(param_1,1);
      FUN_00401000("bad exception");
      __CxxThrowException_8(&stack0xffffffd0,&DAT_03110a8c);
LAB_00a45ea7:
      p_Var10 = (_s_FuncInfo *)param_1;
      if (((*(int *)param_1 == -0x1f928c9d) && (*(int *)(param_1 + 0x10) == 3)) &&
         ((p_Var2 = *(_s_FuncInfo **)(param_1 + 0x14), p_Var2 == p_Var8 ||
          ((p_Var2 == (_s_FuncInfo *)0x19930521 || (p_Var2 == (_s_FuncInfo *)0x19930522)))))) {
        if (param_5->nTryBlocks != 0) {
          p_Var7 = _GetRangeOfTrysToCheck(param_5,param_7,local_c,&local_14,&local_20);
          for (; local_14 < local_20; local_14 = local_14 + 1) {
            if ((p_Var7->tryLow <= local_c) && (local_c <= p_Var7->tryHigh)) {
              local_10 = p_Var7->pHandlerArray;
              for (local_1c = p_Var7->nCatches; 0 < local_1c; local_1c = local_1c + -1) {
                pp_Var9 = *(_s_FuncInfo ***)(*(int *)(param_1 + 0x1c) + 0xc);
                for (local_18 = *pp_Var9; 0 < (int)local_18;
                    local_18 = (_s_FuncInfo *)((int)&local_18[-1].EHFlags + 3)) {
                  pp_Var9 = pp_Var9 + 1;
                  p_Var10 = *pp_Var9;
                  iVar6 = ___TypeMatch(local_10,p_Var10,*(undefined4 *)(param_1 + 0x1c));
                  if (iVar6 != 0) {
                    local_5 = '\x01';
                    CatchIt(param_1,(EHRegistrationNode *)param_3,(_CONTEXT *)param_4,param_5,
                            p_Var10,(_s_HandlerType *)param_7,(_s_CatchableType *)param_8,unaff_EDI,
                            unaff_ESI,unaff_EBX,in_stack_ffffffd0);
                    goto LAB_00a45f90;
                  }
                }
                local_10 = local_10 + 1;
              }
            }
LAB_00a45f90:
            p_Var7 = p_Var7 + 1;
          }
        }
        if (param_6 != '\0') {
          ___DestructExceptionObject(param_1,1);
        }
        if ((((local_5 != '\0') || ((param_5->magicNumber_and_bbtFlags & 0x1fffffff) < 0x19930521))
            || (param_5->pESTypeList == (ESTypeList *)0x0)) ||
           (uVar3 = IsInExceptionSpec(param_1,(_s_ESTypeList *)unaff_EDI), uVar3 != '\0'))
        goto LAB_00a46066;
        __getptd();
        __getptd();
        p_Var5 = __getptd();
        p_Var5->_curexception = param_1;
        p_Var5 = __getptd();
        p_Var5->_curcontext = param_3;
        pEVar11 = param_8;
        if (param_8 == (EHRegistrationNode *)0x0) {
          pEVar11 = param_2;
        }
        _UnwindNestedFrames(pEVar11,param_1);
        ___FrameUnwindToState(param_2,param_4,param_5,0xffffffff);
        FUN_00a457df(param_5->pESTypeList);
        p_Var10 = param_5;
      }
LAB_00a4603a:
      if (param_5->nTryBlocks == 0) goto LAB_00a46066;
      p_Var8 = param_5;
    } while (param_6 != '\0');
    FindHandlerForForeignException
              ((EHExceptionRecord *)p_Var10,param_2,param_3,param_4,param_5,local_c,param_7,param_8)
    ;
LAB_00a46066:
    p_Var5 = __getptd();
    if (p_Var5->_curexcspec != (void *)0x0) {
      _inconsistency();
    }
  }
  return;
}



// Library Function - Single Match
//  ___InternalCxxFrameHandler
// 
// Library: Visual Studio 2008 Release

undefined4
___InternalCxxFrameHandler
          (int *param_1,EHRegistrationNode *param_2,_CONTEXT *param_3,void *param_4,
          _s_FuncInfo *param_5,int param_6,EHRegistrationNode *param_7,uchar param_8)

{
  _ptiddata p_Var1;
  undefined4 uVar2;
  
  p_Var1 = __getptd();
  if ((((*(int *)((p_Var1->_setloc_data)._cacheout + 0x27) != 0) || (*param_1 == -0x1f928c9d)) ||
      (*param_1 == -0x7fffffda)) ||
     (((param_5->magicNumber_and_bbtFlags & 0x1fffffff) < 0x19930522 ||
      ((*(byte *)&param_5->EHFlags & 1) == 0)))) {
    if ((*(byte *)(param_1 + 1) & 0x66) == 0) {
      if ((param_5->nTryBlocks != 0) ||
         ((0x19930520 < (param_5->magicNumber_and_bbtFlags & 0x1fffffff) &&
          (param_5->pESTypeList != (ESTypeList *)0x0)))) {
        if ((*param_1 == -0x1f928c9d) &&
           (((2 < (uint)param_1[4] && (0x19930522 < (uint)param_1[5])) &&
            (*(code **)(param_1[7] + 8) != (code *)0x0)))) {
          uVar2 = (**(code **)(param_1[7] + 8))
                            (param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8);
          return uVar2;
        }
        FindHandler((EHExceptionRecord *)param_1,param_2,param_3,param_4,param_5,param_8,param_6,
                    param_7);
      }
    }
    else if ((param_5->maxState != 0) && (param_6 == 0)) {
      ___FrameUnwindToState(param_2,param_4,param_5,0xffffffff);
    }
  }
  return 1;
}



// Library Function - Single Match
//  ___crtGetStringTypeW
// 
// Library: Visual Studio 2008 Release

BOOL ___crtGetStringTypeW
               (localeinfo_struct *param_1,DWORD param_2,LPCWSTR param_3,int param_4,LPWORD param_5)

{
  BOOL BVar1;
  _LocaleUpdate local_14 [8];
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate(local_14,param_1);
  if (param_4 < -1) {
    BVar1 = 0;
  }
  else {
    BVar1 = GetStringTypeW(param_2,param_3,param_4,param_5);
  }
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return BVar1;
}



// Library Function - Single Match
//  __freea
// 
// Library: Visual Studio 2008 Release

void __cdecl __freea(void *_Memory)

{
  if ((_Memory != (void *)0x0) && (*(int *)((int)_Memory + -8) == 0xdddd)) {
    _free((int *)((int)_Memory + -8));
  }
  return;
}



// WARNING: Function: __alloca_probe_16 replaced with injection: alloca_probe
// Library Function - Single Match
//  int __cdecl __crtLCMapStringA_stat(struct localeinfo_struct *,unsigned long,unsigned long,char
// const *,int,char *,int,int,int)
// 
// Library: Visual Studio 2008 Release

int __cdecl
__crtLCMapStringA_stat
          (localeinfo_struct *param_1,ulong param_2,ulong param_3,char *param_4,int param_5,
          char *param_6,int param_7,int param_8,int param_9)

{
  uint uVar1;
  bool bVar2;
  int iVar3;
  DWORD DVar4;
  char *pcVar5;
  uint cchWideChar;
  undefined4 *puVar6;
  int *in_ECX;
  char *pcVar7;
  LPSTR lpMultiByteStr;
  void *local_14;
  undefined4 *local_10;
  uint local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  if (DAT_032eb238 == 0) {
    iVar3 = LCMapStringW(0,0x100,(LPCWSTR)&PTR_03065574,1,(LPWSTR)0x0,0);
    if (iVar3 == 0) {
      DVar4 = GetLastError();
      if (DVar4 == 0x78) {
        DAT_032eb238 = 2;
      }
    }
    else {
      DAT_032eb238 = 1;
    }
  }
  pcVar5 = (char *)param_3;
  pcVar7 = param_4;
  if (0 < (int)param_4) {
    do {
      pcVar7 = pcVar7 + -1;
      if (*pcVar5 == '\0') goto LAB_00a46233;
      pcVar5 = pcVar5 + 1;
    } while (pcVar7 != (char *)0x0);
    pcVar7 = (char *)0xffffffff;
LAB_00a46233:
    pcVar5 = param_4 + -(int)pcVar7;
    bVar2 = (int)(pcVar5 + -1) < (int)param_4;
    param_4 = pcVar5 + -1;
    if (bVar2) {
      param_4 = pcVar5;
    }
  }
  if ((DAT_032eb238 == 2) || (DAT_032eb238 == 0)) {
    local_10 = (undefined4 *)0x0;
    local_14 = (void *)0x0;
    if (param_1 == (localeinfo_struct *)0x0) {
      param_1 = *(localeinfo_struct **)(*in_ECX + 0x14);
    }
    if (param_7 == 0) {
      param_7 = *(int *)(*in_ECX + 4);
    }
    iVar3 = ___ansicp(param_1);
    if (iVar3 == -1) goto LAB_00a46555;
    if (iVar3 == param_7) {
      LCMapStringA((LCID)param_1,param_2,(LPCSTR)param_3,(int)param_4,(LPSTR)param_5,(int)param_6);
    }
    else {
      local_10 = (undefined4 *)___convertcp(param_7,iVar3,param_3,&param_4,0,0);
      if (local_10 == (undefined4 *)0x0) goto LAB_00a46555;
      local_c = LCMapStringA((LCID)param_1,param_2,(LPCSTR)local_10,(int)param_4,(LPSTR)0x0,0);
      if (local_c != 0) {
        if (((int)local_c < 1) || (0xffffffe0 < local_c)) {
          puVar6 = (undefined4 *)0x0;
        }
        else if (local_c + 8 < 0x401) {
          if (&stack0x00000000 == (undefined *)0x24) goto LAB_00a46532;
          puVar6 = (undefined4 *)&stack0xffffffe4;
        }
        else {
          puVar6 = (undefined4 *)_malloc(local_c + 8);
          if (puVar6 != (undefined4 *)0x0) {
            *puVar6 = 0xdddd;
            puVar6 = puVar6 + 2;
          }
        }
        if (puVar6 != (undefined4 *)0x0) {
          _memset(puVar6,0,local_c);
          local_c = LCMapStringA((LCID)param_1,param_2,(LPCSTR)local_10,(int)param_4,(LPSTR)puVar6,
                                 local_c);
          if (local_c != 0) {
            local_14 = (void *)___convertcp(iVar3,param_7,puVar6,&local_c,param_5,param_6);
          }
          __freea(puVar6);
        }
      }
    }
LAB_00a46532:
    if (local_10 != (undefined4 *)0x0) {
      _free(local_10);
    }
    if ((local_14 != (void *)0x0) && ((void *)param_5 != local_14)) {
      _free(local_14);
    }
    goto LAB_00a46555;
  }
  if (DAT_032eb238 != 1) goto LAB_00a46555;
  local_c = 0;
  if (param_7 == 0) {
    param_7 = *(int *)(*in_ECX + 4);
  }
  cchWideChar = MultiByteToWideChar(param_7,(uint)(param_8 != 0) * 8 + 1,(LPCSTR)param_3,
                                    (int)param_4,(LPWSTR)0x0,0);
  if (cchWideChar == 0) goto LAB_00a46555;
  if (((int)cchWideChar < 1) || (0xffffffe0 / cchWideChar < 2)) {
    local_10 = (undefined4 *)0x0;
  }
  else {
    uVar1 = cchWideChar * 2 + 8;
    if (uVar1 < 0x401) {
      puVar6 = (undefined4 *)&stack0xffffffdc;
      local_10 = (undefined4 *)&stack0xffffffdc;
      if (&stack0x00000000 != (undefined *)0x24) {
LAB_00a462db:
        local_10 = puVar6 + 2;
      }
    }
    else {
      puVar6 = (undefined4 *)_malloc(uVar1);
      local_10 = puVar6;
      if (puVar6 != (undefined4 *)0x0) {
        *puVar6 = 0xdddd;
        goto LAB_00a462db;
      }
    }
  }
  if (local_10 == (undefined4 *)0x0) goto LAB_00a46555;
  iVar3 = MultiByteToWideChar(param_7,1,(LPCSTR)param_3,(int)param_4,(LPWSTR)local_10,cchWideChar);
  if ((iVar3 != 0) &&
     (local_c = LCMapStringW((LCID)param_1,param_2,(LPCWSTR)local_10,cchWideChar,(LPWSTR)0x0,0),
     local_c != 0)) {
    if ((param_2 & 0x400) == 0) {
      if (((int)local_c < 1) || (0xffffffe0 / local_c < 2)) {
        puVar6 = (undefined4 *)0x0;
      }
      else {
        uVar1 = local_c * 2 + 8;
        if (uVar1 < 0x401) {
          if (&stack0x00000000 == (undefined *)0x24) goto LAB_00a463eb;
          puVar6 = (undefined4 *)&stack0xffffffe4;
        }
        else {
          puVar6 = (undefined4 *)_malloc(uVar1);
          if (puVar6 != (undefined4 *)0x0) {
            *puVar6 = 0xdddd;
            puVar6 = puVar6 + 2;
          }
        }
      }
      if (puVar6 != (undefined4 *)0x0) {
        iVar3 = LCMapStringW((LCID)param_1,param_2,(LPCWSTR)local_10,cchWideChar,(LPWSTR)puVar6,
                             local_c);
        if (iVar3 != 0) {
          lpMultiByteStr = (LPSTR)param_5;
          pcVar5 = param_6;
          if (param_6 == (char *)0x0) {
            lpMultiByteStr = (LPSTR)0x0;
            pcVar5 = (char *)0x0;
          }
          local_c = WideCharToMultiByte(param_7,0,(LPCWSTR)puVar6,local_c,lpMultiByteStr,(int)pcVar5
                                        ,(LPCSTR)0x0,(LPBOOL)0x0);
        }
        __freea(puVar6);
      }
    }
    else if ((param_6 != (char *)0x0) && ((int)local_c <= (int)param_6)) {
      LCMapStringW((LCID)param_1,param_2,(LPCWSTR)local_10,cchWideChar,(LPWSTR)param_5,(int)param_6)
      ;
    }
  }
LAB_00a463eb:
  __freea(local_10);
LAB_00a46555:
  iVar3 = ___security_check_cookie_4();
  return iVar3;
}



// Library Function - Single Match
//  ___crtLCMapStringA
// 
// Library: Visual Studio 2008 Release

int __cdecl
___crtLCMapStringA(_locale_t _Plocinfo,LPCWSTR _LocaleName,DWORD _DwMapFlag,LPCSTR _LpSrcStr,
                  int _CchSrc,LPSTR _LpDestStr,int _CchDest,int _Code_page,BOOL _BError)

{
  int iVar1;
  int in_stack_ffffffec;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&stack0xffffffec,_Plocinfo);
  iVar1 = __crtLCMapStringA_stat
                    ((localeinfo_struct *)_LocaleName,_DwMapFlag,(ulong)_LpSrcStr,(char *)_CchSrc,
                     (int)_LpDestStr,(char *)_CchDest,_Code_page,_BError,in_stack_ffffffec);
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return iVar1;
}



// Library Function - Single Match
//  ___crtLCMapStringW
// 
// Library: Visual Studio 2008 Release

int __cdecl
___crtLCMapStringW(LPCWSTR _LocaleName,DWORD _DWMapFlag,LPCWSTR _LpSrcStr,int _CchSrc,
                  LPWSTR _LpDestStr,int _CchDest)

{
  int iVar1;
  short *psVar2;
  LPWSTR pWVar3;
  int in_stack_0000001c;
  _LocaleUpdate local_14 [8];
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate(local_14,(localeinfo_struct *)_LocaleName);
  psVar2 = (short *)_CchSrc;
  pWVar3 = _LpDestStr;
  if (0 < (int)_LpDestStr) {
    do {
      pWVar3 = (LPWSTR)((int)pWVar3 + -1);
      if (*psVar2 == 0) goto LAB_00a465db;
      psVar2 = psVar2 + 1;
    } while (pWVar3 != (LPWSTR)0x0);
    pWVar3 = (LPWSTR)0xffffffff;
LAB_00a465db:
    _LpDestStr = (LPWSTR)((int)_LpDestStr + (-1 - (int)pWVar3));
  }
  iVar1 = LCMapStringW(_DWMapFlag,(DWORD)_LpSrcStr,(LPCWSTR)_CchSrc,(int)_LpDestStr,(LPWSTR)_CchDest
                       ,in_stack_0000001c);
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return iVar1;
}



// Library Function - Single Match
//  __aulldiv
// 
// Library: Visual Studio 2008 Release

undefined8 __aulldiv(uint param_1,uint param_2,uint param_3,uint param_4)

{
  ulonglong uVar1;
  longlong lVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  
  uVar3 = param_1;
  uVar8 = param_4;
  uVar6 = param_2;
  uVar9 = param_3;
  if (param_4 == 0) {
    uVar3 = param_2 / param_3;
    iVar4 = (int)(((ulonglong)param_2 % (ulonglong)param_3 << 0x20 | (ulonglong)param_1) /
                 (ulonglong)param_3);
  }
  else {
    do {
      uVar5 = uVar8 >> 1;
      uVar9 = uVar9 >> 1 | (uint)((uVar8 & 1) != 0) << 0x1f;
      uVar7 = uVar6 >> 1;
      uVar3 = uVar3 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;
      uVar8 = uVar5;
      uVar6 = uVar7;
    } while (uVar5 != 0);
    uVar1 = CONCAT44(uVar7,uVar3) / (ulonglong)uVar9;
    iVar4 = (int)uVar1;
    lVar2 = (ulonglong)param_3 * (uVar1 & 0xffffffff);
    uVar3 = (uint)((ulonglong)lVar2 >> 0x20);
    uVar8 = uVar3 + iVar4 * param_4;
    if (((CARRY4(uVar3,iVar4 * param_4)) || (param_2 < uVar8)) ||
       ((param_2 <= uVar8 && (param_1 < (uint)lVar2)))) {
      iVar4 = iVar4 + -1;
    }
    uVar3 = 0;
  }
  return CONCAT44(uVar3,iVar4);
}



// Library Function - Single Match
//  __allmul
// 
// Library: Visual Studio 2008 Release

longlong __allmul(uint param_1,uint param_2,uint param_3,uint param_4)

{
  if ((param_4 | param_2) == 0) {
    return (ulonglong)param_1 * (ulonglong)param_3;
  }
  return CONCAT44((int)((ulonglong)param_1 * (ulonglong)param_3 >> 0x20) +
                  param_2 * param_3 + param_1 * param_4,
                  (int)((ulonglong)param_1 * (ulonglong)param_3));
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

float10 FUN_00a466b4(byte *param_1,byte **param_2,localeinfo_struct *param_3)

{
  int *piVar1;
  uint uVar2;
  _locale_t _Locale;
  FLT p_Var3;
  byte *_Str;
  _flt local_34;
  localeinfo_struct local_1c;
  int local_14;
  char local_10;
  double local_c;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_1c,param_3);
  if (param_2 != (byte **)0x0) {
    *param_2 = param_1;
  }
  _Str = param_1;
  if (param_1 == (byte *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_10 != '\0') {
      *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
    }
    return (float10)0;
  }
  while( true ) {
    if ((int)(local_1c.locinfo)->locale_name[3] < 2) {
      uVar2 = *(ushort *)(local_1c.locinfo[1].lc_category[0].locale + (uint)*_Str * 2) & 8;
    }
    else {
      uVar2 = __isctype_l((uint)*_Str,8,&local_1c);
    }
    if (uVar2 == 0) break;
    _Str = _Str + 1;
  }
  _Locale = (_locale_t)_strlen((char *)_Str);
  p_Var3 = __fltin2(&local_34,(char *)_Str,_Locale);
  if (param_2 != (byte **)0x0) {
    *param_2 = _Str + p_Var3->nbytes;
  }
  uVar2 = p_Var3->flags;
  if ((uVar2 & 0x240) == 0) {
    if ((uVar2 & 0x81) == 0) {
      if (((uVar2 & 0x100) == 0) || (local_c = 0.0, NAN(p_Var3->dval) == (p_Var3->dval == 0.0))) {
        local_c = p_Var3->dval;
        goto LAB_00a467be;
      }
    }
    else {
      local_c = _DAT_0323fe50;
      if (*_Str == 0x2d) {
        local_c = -_DAT_0323fe50;
      }
    }
    piVar1 = __errno();
    *piVar1 = 0x22;
  }
  else {
    local_c = 0.0;
    if (param_2 != (byte **)0x0) {
      *param_2 = param_1;
    }
  }
LAB_00a467be:
  if (local_10 != '\0') {
    *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
  }
  return (float10)local_c;
}



void FUN_00a467d3(undefined4 param_1,undefined4 param_2)

{
  FUN_00a466b4(param_1,param_2,0);
  return;
}



// Library Function - Single Match
//  __mbstowcs_l_helper
// 
// Library: Visual Studio 2008 Release

uint __mbstowcs_l_helper(LPWSTR param_1,byte *param_2,uint param_3,localeinfo_struct *param_4)

{
  int *piVar1;
  int iVar2;
  DWORD DVar3;
  size_t sVar4;
  byte *pbVar5;
  localeinfo_struct local_18;
  int local_10;
  char local_c;
  uint local_8;
  
  local_8 = 0;
  if (param_1 != (LPWSTR)0x0) {
    if (param_3 == 0) {
      return 0;
    }
    if (param_3 != 0) {
      *param_1 = L'\0';
    }
  }
  if (param_2 == (byte *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return 0xffffffff;
  }
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_18,param_4);
  if (param_1 == (LPWSTR)0x0) {
    if ((local_18.locinfo)->lc_category[0].wlocale == (wchar_t *)0x0) {
      sVar4 = _strlen((char *)param_2);
      goto LAB_00a4697a;
    }
    iVar2 = MultiByteToWideChar((local_18.locinfo)->lc_codepage,9,(LPCSTR)param_2,-1,(LPWSTR)0x0,0);
    if (iVar2 == 0) {
      piVar1 = __errno();
      *piVar1 = 0x2a;
      goto LAB_00a46968;
    }
  }
  else {
    if ((local_18.locinfo)->lc_category[0].wlocale == (wchar_t *)0x0) {
      if (param_3 != 0) {
        do {
          *param_1 = (ushort)param_2[local_8];
          if (param_2[local_8] == 0) {
            if (local_c != '\0') {
              *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
              return local_8;
            }
            return local_8;
          }
          local_8 = local_8 + 1;
          param_1 = param_1 + 1;
        } while (local_8 < param_3);
      }
      if (local_c != '\0') {
        *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
        return local_8;
      }
      return local_8;
    }
    iVar2 = MultiByteToWideChar((local_18.locinfo)->lc_codepage,9,(LPCSTR)param_2,-1,param_1,param_3
                               );
    if (iVar2 == 0) {
      DVar3 = GetLastError();
      if (DVar3 == 0x7a) {
        local_8 = param_3;
        pbVar5 = param_2;
        if (param_3 != 0) {
          do {
            local_8 = local_8 - 1;
            if (*pbVar5 == 0) break;
            iVar2 = __isleadbyte_l((uint)*pbVar5,&local_18);
            if ((iVar2 != 0) && (pbVar5 = pbVar5 + 1, *pbVar5 == 0)) goto LAB_00a46926;
            pbVar5 = pbVar5 + 1;
          } while (local_8 != 0);
        }
        sVar4 = MultiByteToWideChar((local_18.locinfo)->lc_codepage,1,(LPCSTR)param_2,
                                    (int)pbVar5 - (int)param_2,param_1,param_3);
        if (sVar4 != 0) goto LAB_00a4697a;
LAB_00a46926:
        piVar1 = __errno();
        *piVar1 = 0x2a;
        *param_1 = L'\0';
      }
      else {
        piVar1 = __errno();
        *piVar1 = 0x2a;
        *param_1 = L'\0';
      }
LAB_00a46968:
      if (local_c != '\0') {
        *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
      }
      return 0xffffffff;
    }
  }
  sVar4 = iVar2 - 1;
LAB_00a4697a:
  if (local_c != '\0') {
    *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
    return sVar4;
  }
  return sVar4;
}



// Library Function - Single Match
//  __mbstowcs_s_l
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl
__mbstowcs_s_l(size_t *_PtNumOfCharConverted,wchar_t *_DstBuf,size_t _SizeInWords,char *_SrcBuf,
              size_t _MaxCount,_locale_t _Locale)

{
  int *piVar1;
  size_t sVar2;
  uint uVar3;
  int iVar4;
  _LocaleUpdate local_18 [8];
  int local_10;
  char local_c;
  errno_t local_8;
  
  local_8 = 0;
  if (_DstBuf == (wchar_t *)0x0) {
    if (_SizeInWords != 0) {
LAB_00a469ad:
      piVar1 = __errno();
      *piVar1 = 0x16;
      __invalid_parameter(0,0,0,0,0);
      return 0x16;
    }
  }
  else {
    if (_SizeInWords == 0) goto LAB_00a469ad;
    *_DstBuf = L'\0';
  }
  if (_PtNumOfCharConverted != (size_t *)0x0) {
    *_PtNumOfCharConverted = 0;
  }
  _LocaleUpdate::_LocaleUpdate(local_18,_Locale);
  sVar2 = _MaxCount;
  if (_SizeInWords < _MaxCount) {
    sVar2 = _SizeInWords;
  }
  if (0x7fffffff < sVar2) {
    piVar1 = __errno();
    iVar4 = 0x16;
LAB_00a46a50:
    *piVar1 = iVar4;
    __invalid_parameter(0,0,0,0,0);
    if (local_c == '\0') {
      return iVar4;
    }
    *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
    return iVar4;
  }
  iVar4 = __mbstowcs_l_helper(_DstBuf,_SrcBuf,sVar2,local_18);
  if (iVar4 == -1) {
    if (_DstBuf != (wchar_t *)0x0) {
      *_DstBuf = L'\0';
    }
    piVar1 = __errno();
    iVar4 = *piVar1;
    if (local_c == '\0') {
      return iVar4;
    }
    *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
    return iVar4;
  }
  uVar3 = iVar4 + 1;
  if (_DstBuf != (wchar_t *)0x0) {
    if (_SizeInWords < uVar3) {
      if (_MaxCount != 0xffffffff) {
        *_DstBuf = L'\0';
        piVar1 = __errno();
        iVar4 = 0x22;
        goto LAB_00a46a50;
      }
      local_8 = 0x50;
      uVar3 = _SizeInWords;
    }
    _DstBuf[uVar3 - 1] = L'\0';
  }
  if (_PtNumOfCharConverted != (size_t *)0x0) {
    *_PtNumOfCharConverted = uVar3;
  }
  if (local_c == '\0') {
    return local_8;
  }
  *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
  return local_8;
}



// Library Function - Single Match
//  ___ascii_stricmp
// 
// Library: Visual Studio 2008 Release

int __cdecl ___ascii_stricmp(char *_Str1,char *_Str2)

{
  uint uVar1;
  uint uVar2;
  
  do {
    uVar1 = (uint)(byte)*_Str1;
    _Str1 = (char *)((byte *)_Str1 + 1);
    if (uVar1 - 0x41 < 0x1a) {
      uVar1 = uVar1 + 0x20;
    }
    uVar2 = (uint)(byte)*_Str2;
    _Str2 = (char *)((byte *)_Str2 + 1);
    if (uVar2 - 0x41 < 0x1a) {
      uVar2 = uVar2 + 0x20;
    }
  } while ((uVar1 != 0) && (uVar1 == uVar2));
  return uVar1 - uVar2;
}



// Library Function - Single Match
//  __stricmp_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __stricmp_l(char *_Str1,char *_Str2,_locale_t _Locale)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
  if (_Str1 == (char *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
    iVar2 = 0x7fffffff;
  }
  else if (_Str2 == (char *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
    iVar2 = 0x7fffffff;
  }
  else {
    if ((local_14.locinfo)->lc_category[0].wlocale == (wchar_t *)0x0) {
      iVar2 = ___ascii_stricmp(_Str1,_Str2);
    }
    else {
      do {
        iVar2 = __tolower_l((uint)(byte)*_Str1,&local_14);
        _Str1 = _Str1 + 1;
        iVar3 = __tolower_l((uint)(byte)*_Str2,&local_14);
        _Str2 = (char *)((byte *)_Str2 + 1);
        if (iVar2 == 0) break;
      } while (iVar2 == iVar3);
      iVar2 = iVar2 - iVar3;
    }
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
  }
  return iVar2;
}



// Library Function - Single Match
//  __stricmp
// 
// Library: Visual Studio 2008 Release

int __cdecl __stricmp(char *_Str1,char *_Str2)

{
  int *piVar1;
  int iVar2;
  
  if (DAT_032eb230 == 0) {
    if ((_Str1 != (char *)0x0) && (_Str2 != (char *)0x0)) {
      iVar2 = ___ascii_stricmp(_Str1,_Str2);
      return iVar2;
    }
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    iVar2 = 0x7fffffff;
  }
  else {
    iVar2 = __stricmp_l(_Str1,_Str2,(_locale_t)0x0);
  }
  return iVar2;
}



// WARNING: This is an inlined function

void __alloca_probe(void)

{
  undefined *in_EAX;
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 unaff_retaddr;
  undefined auStack_4 [4];
  
  puVar2 = (undefined4 *)((int)&stack0x00000000 - (int)in_EAX & ~-(uint)(&stack0x00000000 < in_EAX))
  ;
  for (puVar1 = (undefined4 *)((uint)auStack_4 & 0xfffff000); puVar2 < puVar1;
      puVar1 = puVar1 + -0x400) {
  }
  *puVar2 = unaff_retaddr;
  return;
}



// Library Function - Single Match
//  __get_sys_err_msg
// 
// Library: Visual Studio 2008 Release

char * __cdecl __get_sys_err_msg(int m)

{
  int *piVar1;
  int iVar2;
  
  if (-1 < m) {
    piVar1 = (int *)FUN_00a595c3();
    if (m < *piVar1) goto LAB_00a46c48;
  }
  piVar1 = (int *)FUN_00a595c3();
  m = *piVar1;
LAB_00a46c48:
  iVar2 = FUN_00a595c9();
  return *(char **)(iVar2 + m * 4);
}



// Library Function - Single Match
//  _strerror
// 
// Library: Visual Studio 2008 Release

char * __cdecl _strerror(char *_ErrMsg)

{
  _ptiddata p_Var1;
  char *pcVar2;
  char *_Src;
  errno_t eVar3;
  
  p_Var1 = __getptd_noexit();
  if (p_Var1 == (_ptiddata)0x0) {
    pcVar2 = "Visual C++ CRT: Not enough memory to complete call to strerror.";
  }
  else {
    if (p_Var1->_errmsg == (char *)0x0) {
      pcVar2 = (char *)__calloc_crt(0x86,1);
      p_Var1->_errmsg = pcVar2;
      if (pcVar2 == (char *)0x0) {
        return "Visual C++ CRT: Not enough memory to complete call to strerror.";
      }
    }
    pcVar2 = p_Var1->_errmsg;
    _Src = __get_sys_err_msg((int)_ErrMsg);
    eVar3 = _strcpy_s(pcVar2,0x86,_Src);
    if (eVar3 != 0) {
                    // WARNING: Subroutine does not return
      __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
    }
  }
  return pcVar2;
}



// Library Function - Single Match
//  __allrem
// 
// Library: Visual Studio 2008 Release

undefined8 __allrem(uint param_1,uint param_2,uint param_3,uint param_4)

{
  ulonglong uVar1;
  longlong lVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  bool bVar12;
  bool bVar13;
  
  bVar13 = (int)param_2 < 0;
  if (bVar13) {
    bVar12 = param_1 != 0;
    param_1 = -param_1;
    param_2 = -(uint)bVar12 - param_2;
  }
  uVar11 = (uint)bVar13;
  if ((int)param_4 < 0) {
    bVar13 = param_3 != 0;
    param_3 = -param_3;
    param_4 = -(uint)bVar13 - param_4;
  }
  uVar3 = param_1;
  uVar4 = param_3;
  uVar8 = param_2;
  uVar9 = param_4;
  if (param_4 == 0) {
    iVar5 = (int)(((ulonglong)param_2 % (ulonglong)param_3 << 0x20 | (ulonglong)param_1) %
                 (ulonglong)param_3);
    iVar6 = 0;
    if ((int)(uVar11 - 1) < 0) goto LAB_00a46d6d;
  }
  else {
    do {
      uVar10 = uVar9 >> 1;
      uVar4 = uVar4 >> 1 | (uint)((uVar9 & 1) != 0) << 0x1f;
      uVar7 = uVar8 >> 1;
      uVar3 = uVar3 >> 1 | (uint)((uVar8 & 1) != 0) << 0x1f;
      uVar8 = uVar7;
      uVar9 = uVar10;
    } while (uVar10 != 0);
    uVar1 = CONCAT44(uVar7,uVar3) / (ulonglong)uVar4;
    uVar3 = (int)uVar1 * param_4;
    lVar2 = (uVar1 & 0xffffffff) * (ulonglong)param_3;
    uVar8 = (uint)((ulonglong)lVar2 >> 0x20);
    uVar4 = (uint)lVar2;
    uVar9 = uVar8 + uVar3;
    if (((CARRY4(uVar8,uVar3)) || (param_2 < uVar9)) || ((param_2 <= uVar9 && (param_1 < uVar4)))) {
      bVar13 = uVar4 < param_3;
      uVar4 = uVar4 - param_3;
      uVar9 = (uVar9 - param_4) - (uint)bVar13;
    }
    iVar5 = uVar4 - param_1;
    iVar6 = (uVar9 - param_2) - (uint)(uVar4 < param_1);
    if (-1 < (int)(uVar11 - 1)) goto LAB_00a46d6d;
  }
  bVar13 = iVar5 != 0;
  iVar5 = -iVar5;
  iVar6 = -(uint)bVar13 - iVar6;
LAB_00a46d6d:
  return CONCAT44(iVar6,iVar5);
}



// Library Function - Single Match
//  __endthreadex
// 
// Library: Visual Studio 2008 Release

void __cdecl __endthreadex(uint _Retval)

{
  BOOL BVar1;
  _ptiddata _Ptd;
  
  BVar1 = __IsNonwritableInCurrentImage((PBYTE)&PTR_FUN_00da0c2c);
  if (BVar1 != 0) {
    FUN_007a491c();
  }
  _Ptd = __getptd_noexit();
  if (_Ptd != (_ptiddata)0x0) {
    __freeptd(_Ptd);
  }
                    // WARNING: Subroutine does not return
  ExitThread(_Retval);
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// Library Function - Single Match
//  __callthreadstartex
// 
// Library: Visual Studio 2008 Release

void __callthreadstartex(void)

{
  _ptiddata p_Var1;
  uint _Retval;
  _EXCEPTION_POINTERS *local_18;
  
  p_Var1 = __getptd();
  _Retval = (*(code *)p_Var1->_initaddr)(p_Var1->_initarg);
  __endthreadex(_Retval);
  __XcptFilter(local_18->ExceptionRecord->ExceptionCode,local_18);
  return;
}



// Library Function - Single Match
//  __threadstartex@4
// 
// Library: Visual Studio 2008 Release

void __threadstartex_4(DWORD *param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  int iVar3;
  DWORD DVar4;
  BOOL BVar5;
  DWORD *pDVar6;
  
  ___set_flsgetvalue();
  uVar2 = FUN_00a4e5f6();
  iVar3 = ___fls_getvalue_4(uVar2);
  if (iVar3 == 0) {
    pDVar6 = param_1;
    uVar2 = FUN_00a4e5f6(param_1);
    iVar3 = ___fls_setvalue_8(uVar2,pDVar6);
    if (iVar3 == 0) {
      DVar4 = GetLastError();
                    // WARNING: Subroutine does not return
      ExitThread(DVar4);
    }
    DVar4 = GetCurrentThreadId();
    *param_1 = DVar4;
  }
  else {
    *(DWORD *)(iVar3 + 0x54) = param_1[0x15];
    *(DWORD *)(iVar3 + 0x58) = param_1[0x16];
    *(DWORD *)(iVar3 + 4) = param_1[1];
    __freefls_4(param_1);
  }
  BVar5 = __IsNonwritableInCurrentImage((PBYTE)&PTR_FUN_00da0c28);
  if (BVar5 != 0) {
    FUN_007a491c();
  }
  __callthreadstartex();
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// Library Function - Single Match
//  __beginthreadex
// 
// Library: Visual Studio 2008 Release

uintptr_t __cdecl
__beginthreadex(void *_Security,uint _StackSize,_StartAddress *_StartAddress,void *_ArgList,
               uint _InitFlag,uint *_ThrdAddr)

{
  _StartAddress *p_Var1;
  int *piVar2;
  _ptiddata _Ptd;
  _ptiddata p_Var3;
  _StartAddress **lpThreadId;
  HANDLE pvVar4;
  DWORD local_8;
  
  p_Var1 = _StartAddress;
  local_8 = 0;
  if (_StartAddress == (_StartAddress *)0x0) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else {
    ___set_flsgetvalue();
    _Ptd = (_ptiddata)__calloc_crt(1,0x214);
    if (_Ptd != (_ptiddata)0x0) {
      p_Var3 = __getptd();
      __initptd(_Ptd,p_Var3->ptlocinfo);
      _Ptd->_thandle = 0xffffffff;
      _Ptd->_initarg = _ArgList;
      _Ptd->_initaddr = p_Var1;
      lpThreadId = (_StartAddress **)_ThrdAddr;
      if (_ThrdAddr == (uint *)0x0) {
        lpThreadId = &_StartAddress;
      }
      pvVar4 = CreateThread((LPSECURITY_ATTRIBUTES)_Security,_StackSize,__threadstartex_4,_Ptd,
                            _InitFlag,(LPDWORD)lpThreadId);
      if (pvVar4 != (HANDLE)0x0) {
        return (uintptr_t)pvVar4;
      }
      local_8 = GetLastError();
    }
    _free(_Ptd);
    if (local_8 != 0) {
      __dosmaperr(local_8);
    }
  }
  return 0;
}



// Library Function - Single Match
//  __aulldvrm
// 
// Library: Visual Studio 2008 Release

undefined8 __aulldvrm(uint param_1,uint param_2,uint param_3,uint param_4)

{
  ulonglong uVar1;
  longlong lVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  
  uVar3 = param_1;
  uVar8 = param_4;
  uVar6 = param_2;
  uVar9 = param_3;
  if (param_4 == 0) {
    uVar3 = param_2 / param_3;
    iVar4 = (int)(((ulonglong)param_2 % (ulonglong)param_3 << 0x20 | (ulonglong)param_1) /
                 (ulonglong)param_3);
  }
  else {
    do {
      uVar5 = uVar8 >> 1;
      uVar9 = uVar9 >> 1 | (uint)((uVar8 & 1) != 0) << 0x1f;
      uVar7 = uVar6 >> 1;
      uVar3 = uVar3 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;
      uVar8 = uVar5;
      uVar6 = uVar7;
    } while (uVar5 != 0);
    uVar1 = CONCAT44(uVar7,uVar3) / (ulonglong)uVar9;
    iVar4 = (int)uVar1;
    lVar2 = (ulonglong)param_3 * (uVar1 & 0xffffffff);
    uVar3 = (uint)((ulonglong)lVar2 >> 0x20);
    uVar8 = uVar3 + iVar4 * param_4;
    if (((CARRY4(uVar3,iVar4 * param_4)) || (param_2 < uVar8)) ||
       ((param_2 <= uVar8 && (param_1 < (uint)lVar2)))) {
      iVar4 = iVar4 + -1;
    }
    uVar3 = 0;
  }
  return CONCAT44(uVar3,iVar4);
}



// Library Function - Single Match
//  __mbtowc_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __mbtowc_l(wchar_t *_DstCh,char *_SrcCh,size_t _SrcSizeInBytes,_locale_t _Locale)

{
  wchar_t *pwVar1;
  int iVar2;
  int *piVar3;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  if ((_SrcCh != (char *)0x0) && (_SrcSizeInBytes != 0)) {
    if (*_SrcCh != '\0') {
      _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
      if ((local_14.locinfo)->lc_category[0].wlocale != (wchar_t *)0x0) {
        iVar2 = __isleadbyte_l((uint)(byte)*_SrcCh,&local_14);
        if (iVar2 == 0) {
          iVar2 = MultiByteToWideChar((local_14.locinfo)->lc_codepage,9,_SrcCh,1,_DstCh,
                                      (uint)(_DstCh != (wchar_t *)0x0));
          if (iVar2 != 0) goto LAB_00a47014;
        }
        else {
          pwVar1 = (local_14.locinfo)->locale_name[3];
          if ((((1 < (int)pwVar1) && ((int)pwVar1 <= (int)_SrcSizeInBytes)) &&
              (iVar2 = MultiByteToWideChar((local_14.locinfo)->lc_codepage,9,_SrcCh,(int)pwVar1,
                                           _DstCh,(uint)(_DstCh != (wchar_t *)0x0)), iVar2 != 0)) ||
             (((local_14.locinfo)->locale_name[3] <= _SrcSizeInBytes && (_SrcCh[1] != '\0')))) {
            pwVar1 = (local_14.locinfo)->locale_name[3];
            if (local_8 == '\0') {
              return (int)pwVar1;
            }
            *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
            return (int)pwVar1;
          }
        }
        piVar3 = __errno();
        *piVar3 = 0x2a;
        if (local_8 != '\0') {
          *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
        }
        return -1;
      }
      if (_DstCh != (wchar_t *)0x0) {
        *_DstCh = (ushort)(byte)*_SrcCh;
      }
LAB_00a47014:
      if (local_8 != '\0') {
        *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
      }
      return 1;
    }
    if (_DstCh != (wchar_t *)0x0) {
      *_DstCh = L'\0';
    }
  }
  return 0;
}



// Library Function - Single Match
//  _mbtowc
// 
// Library: Visual Studio 2008 Release

int __cdecl _mbtowc(wchar_t *_DstCh,char *_SrcCh,size_t _SrcSizeInBytes)

{
  int iVar1;
  
  iVar1 = __mbtowc_l(_DstCh,_SrcCh,_SrcSizeInBytes,(_locale_t)0x0);
  return iVar1;
}



// Library Function - Single Match
//  __wctomb_s_l
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl
__wctomb_s_l(int *_SizeConverted,char *_MbCh,size_t _SizeInBytes,wchar_t _WCh,_locale_t _Locale)

{
  char *lpMultiByteStr;
  size_t _Size;
  int iVar1;
  int *piVar2;
  DWORD DVar3;
  int local_14 [2];
  int local_c;
  char local_8;
  
  _Size = _SizeInBytes;
  lpMultiByteStr = _MbCh;
  if ((_MbCh == (char *)0x0) && (_SizeInBytes != 0)) {
    if (_SizeConverted != (int *)0x0) {
      *_SizeConverted = 0;
    }
LAB_00a4711a:
    iVar1 = 0;
  }
  else {
    if (_SizeConverted != (int *)0x0) {
      *_SizeConverted = -1;
    }
    if (0x7fffffff < _SizeInBytes) {
      piVar2 = __errno();
      *piVar2 = 0x16;
      __invalid_parameter(0,0,0,0,0);
      return 0x16;
    }
    _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)local_14,_Locale);
    if (*(int *)(local_14[0] + 0x14) == 0) {
      if ((ushort)_WCh < 0x100) {
        if (lpMultiByteStr != (char *)0x0) {
          if (_Size == 0) goto LAB_00a471b1;
          *lpMultiByteStr = (char)_WCh;
        }
        if (_SizeConverted != (int *)0x0) {
          *_SizeConverted = 1;
        }
LAB_00a471ec:
        if (local_8 != '\0') {
          *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
        }
        goto LAB_00a4711a;
      }
      if ((lpMultiByteStr != (char *)0x0) && (_Size != 0)) {
        _memset(lpMultiByteStr,0,_Size);
      }
    }
    else {
      _MbCh = (char *)0x0;
      iVar1 = WideCharToMultiByte(*(UINT *)(local_14[0] + 4),0,&_WCh,1,lpMultiByteStr,_Size,
                                  (LPCSTR)0x0,(LPBOOL)&_MbCh);
      if (iVar1 == 0) {
        DVar3 = GetLastError();
        if (DVar3 == 0x7a) {
          if ((lpMultiByteStr != (char *)0x0) && (_Size != 0)) {
            _memset(lpMultiByteStr,0,_Size);
          }
LAB_00a471b1:
          piVar2 = __errno();
          *piVar2 = 0x22;
          __invalid_parameter(0,0,0,0,0);
          if (local_8 == '\0') {
            return 0x22;
          }
          *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
          return 0x22;
        }
      }
      else if (_MbCh == (char *)0x0) {
        if (_SizeConverted != (int *)0x0) {
          *_SizeConverted = iVar1;
        }
        goto LAB_00a471ec;
      }
    }
    piVar2 = __errno();
    *piVar2 = 0x2a;
    piVar2 = __errno();
    iVar1 = *piVar2;
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
  }
  return iVar1;
}



// Library Function - Single Match
//  _wctomb_s
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl _wctomb_s(int *_SizeConverted,char *_MbCh,rsize_t _SizeInBytes,wchar_t _WCh)

{
  errno_t eVar1;
  
  eVar1 = __wctomb_s_l(_SizeConverted,_MbCh,_SizeInBytes,_WCh,(_locale_t)0x0);
  return eVar1;
}



// Library Function - Single Match
//  _wctomb
// 
// Library: Visual Studio 2008 Release

int __cdecl _wctomb(char *_MbCh,wchar_t _WCh)

{
  size_t _SizeInBytes;
  errno_t eVar1;
  _locale_t _Locale;
  int local_8;
  
  local_8 = -1;
  _Locale = (_locale_t)0x0;
  _SizeInBytes = ____mb_cur_max_func();
  eVar1 = __wctomb_s_l(&local_8,_MbCh,_SizeInBytes,_WCh,_Locale);
  if (eVar1 == 0) {
    return local_8;
  }
  return -1;
}



// Library Function - Single Match
//  __crt_waiting_on_module_handle
// 
// Library: Visual Studio 2008 Release

void __crt_waiting_on_module_handle(LPCWSTR param_1)

{
  HMODULE pHVar1;
  DWORD dwMilliseconds;
  
  dwMilliseconds = 1000;
  do {
    Sleep(dwMilliseconds);
    pHVar1 = GetModuleHandleW(param_1);
    dwMilliseconds = dwMilliseconds + 1000;
    if (60000 < dwMilliseconds) {
      return;
    }
  } while (pHVar1 == (HMODULE)0x0);
  return;
}



// Library Function - Single Match
//  __amsg_exit
// 
// Library: Visual Studio 2008 Release

void __cdecl __amsg_exit(int param_1)

{
  code *pcVar1;
  
  __FF_MSGBANNER();
  __NMSG_WRITE(param_1);
  pcVar1 = (code *)__decode_pointer(PTR___exit_0323fa10);
  (*pcVar1)(0xff);
  return;
}



// Library Function - Single Match
//  ___crtCorExitProcess
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __cdecl ___crtCorExitProcess(int param_1)

{
  HMODULE hModule;
  FARPROC pFVar1;
  
  hModule = GetModuleHandleW(L"mscoree.dll");
  if (hModule != (HMODULE)0x0) {
    pFVar1 = GetProcAddress(hModule,"CorExitProcess");
    if (pFVar1 != (FARPROC)0x0) {
      (*pFVar1)(param_1);
    }
  }
  return;
}



// Library Function - Single Match
//  ___crtExitProcess
// 
// Library: Visual Studio 2008 Release

void __cdecl ___crtExitProcess(int param_1)

{
  ___crtCorExitProcess(param_1);
                    // WARNING: Subroutine does not return
  ExitProcess(param_1);
}



void FUN_00a4734d(void)

{
  __lock(8);
  return;
}



void FUN_00a47356(void)

{
  FUN_00a4d824(8);
  return;
}



// Library Function - Single Match
//  __initterm
// 
// Library: Visual Studio 2008 Release

void __initterm(code **param_1)

{
  code **in_EAX;
  
  for (; in_EAX < param_1; in_EAX = in_EAX + 1) {
    if (*in_EAX != (code *)0x0) {
      (**in_EAX)();
    }
  }
  return;
}



// Library Function - Single Match
//  __initterm_e
// 
// Library: Visual Studio 2008 Release

void __initterm_e(code **param_1,code **param_2)

{
  int iVar1;
  
  iVar1 = 0;
  while ((param_1 < param_2 && (iVar1 == 0))) {
    if (*param_1 != (code *)0x0) {
      iVar1 = (**param_1)();
    }
    param_1 = param_1 + 1;
  }
  return;
}



// Library Function - Single Match
//  __cinit
// 
// Library: Visual Studio 2008 Release

int __cdecl __cinit(int param_1)

{
  BOOL BVar1;
  int iVar2;
  
  BVar1 = __IsNonwritableInCurrentImage((PBYTE)&PTR___fpmath_00da0c24);
  if (BVar1 != 0) {
    __fpmath(param_1);
  }
  __initp_misc_cfltcvt_tab();
  iVar2 = __initterm_e(&DAT_00d1e0e8,&DAT_00d1e110);
  if (iVar2 == 0) {
    _atexit((_func_4879 *)&LAB_00a50960);
    __initterm(&DAT_00d1e0e4);
    if ((DAT_032f2854 != (code *)0x0) &&
       (BVar1 = __IsNonwritableInCurrentImage((PBYTE)&DAT_032f2854), BVar1 != 0)) {
      (*DAT_032f2854)(0,2,0);
    }
    iVar2 = 0;
  }
  return iVar2;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// WARNING: Removing unreachable block (ram,0x00a47542)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  _doexit
// 
// Library: Visual Studio 2008 Release

void _doexit(int param_1,int param_2,int param_3)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  code *pcVar4;
  int *piVar5;
  int *piVar6;
  int *local_2c;
  int *local_24;
  int *local_20;
  
  __lock(8);
  if (DAT_032eb270 != 1) {
    _DAT_032eb26c = 1;
    DAT_032eb268 = (undefined)param_3;
    if (param_2 == 0) {
      piVar1 = (int *)__decode_pointer(DAT_032f284c);
      if (piVar1 != (int *)0x0) {
        piVar2 = (int *)__decode_pointer(DAT_032f2848);
        local_2c = piVar1;
        local_24 = piVar2;
        local_20 = piVar1;
        while (piVar2 = piVar2 + -1, piVar1 <= piVar2) {
          iVar3 = __encoded_null();
          if (*piVar2 != iVar3) {
            if (piVar2 < piVar1) break;
            pcVar4 = (code *)__decode_pointer(*piVar2);
            iVar3 = __encoded_null();
            *piVar2 = iVar3;
            (*pcVar4)();
            piVar5 = (int *)__decode_pointer(DAT_032f284c);
            piVar6 = (int *)__decode_pointer(DAT_032f2848);
            if ((local_20 != piVar5) || (piVar1 = local_2c, local_24 != piVar6)) {
              piVar2 = piVar6;
              piVar1 = piVar5;
              local_2c = piVar5;
              local_24 = piVar6;
              local_20 = piVar5;
            }
          }
        }
      }
      __initterm(&DAT_00d1e12c);
    }
    __initterm(&DAT_00d1e138);
  }
  FUN_00a4753c();
  if (param_3 == 0) {
    DAT_032eb270 = 1;
    FUN_00a4d824(8);
    ___crtExitProcess(param_1);
    return;
  }
  return;
}



void FUN_00a4753c(void)

{
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + 0x10) != 0) {
    FUN_00a4d824(8);
  }
  return;
}



// Library Function - Single Match
//  _exit
// 
// Library: Visual Studio 2008 Release

void __cdecl _exit(int _Code)

{
  _doexit(_Code,0,0);
  return;
}



// Library Function - Single Match
//  __exit
// 
// Library: Visual Studio 2008 Release

void __exit(undefined4 param_1)

{
  _doexit(param_1,1,0);
  return;
}



// Library Function - Single Match
//  __cexit
// 
// Library: Visual Studio 2008 Release

void __cdecl __cexit(void)

{
  _doexit(0,0,1);
  return;
}



// Library Function - Single Match
//  __init_pointers
// 
// Library: Visual Studio 2008 Release

void __cdecl __init_pointers(void)

{
  undefined4 uVar1;
  
  uVar1 = __encoded_null();
  FUN_00a4f138(uVar1);
  FUN_00a5972c(uVar1);
  FUN_00a3f9b3(uVar1);
  FUN_00a4ef34(uVar1);
  FUN_00a5971d(uVar1);
  __initp_misc_winsig(uVar1);
  FUN_007a491c(uVar1);
  __initp_eh_hooks(uVar1);
  PTR___exit_0323fa10 = (undefined *)__encode_pointer(__exit);
  return;
}



undefined ** FUN_00a475e9(void)

{
  return &PTR_DAT_0323fa18;
}



// Library Function - Single Match
//  __lock_file
// 
// Library: Visual Studio 2008 Release

void __cdecl __lock_file(FILE *_File)

{
  if ((_File < &PTR_DAT_0323fa18) || ((FILE *)&DAT_0323fc78 < _File)) {
    EnterCriticalSection((LPCRITICAL_SECTION)(_File + 1));
  }
  else {
    __lock(((int)&_File[-0x191fd1]._base >> 5) + 0x10);
    _File->_flag = _File->_flag | 0x8000;
  }
  return;
}



// Library Function - Single Match
//  __lock_file2
// 
// Library: Visual Studio 2008 Release

void __cdecl __lock_file2(int _Index,void *_File)

{
  if (_Index < 0x14) {
    __lock(_Index + 0x10);
    *(uint *)((int)_File + 0xc) = *(uint *)((int)_File + 0xc) | 0x8000;
    return;
  }
  EnterCriticalSection((LPCRITICAL_SECTION)((int)_File + 0x20));
  return;
}



// Library Function - Single Match
//  __unlock_file
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __cdecl __unlock_file(FILE *_File)

{
  if (((FILE *)0x323fa17 < _File) && (_File < (FILE *)0x323fc79)) {
    _File->_flag = _File->_flag & 0xffff7fff;
    FUN_00a4d824(((int)&_File[-0x191fd1]._base >> 5) + 0x10);
    return;
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)(_File + 1));
  return;
}



// Library Function - Single Match
//  __unlock_file2
// 
// Library: Visual Studio 2008 Release

void __cdecl __unlock_file2(int _Index,void *_File)

{
  if (_Index < 0x14) {
    *(uint *)((int)_File + 0xc) = *(uint *)((int)_File + 0xc) & 0xffff7fff;
    FUN_00a4d824(_Index + 0x10);
    return;
  }
  LeaveCriticalSection((LPCRITICAL_SECTION)((int)_File + 0x20));
  return;
}



// Library Function - Single Match
//  _wcsncpy
// 
// Library: Visual Studio 2008 Release

wchar_t * __cdecl _wcsncpy(wchar_t *_Dest,wchar_t *_Source,size_t _Count)

{
  wchar_t wVar1;
  uint uVar2;
  uint uVar3;
  undefined4 *puVar4;
  
  puVar4 = (undefined4 *)_Dest;
  if (_Count != 0) {
    do {
      wVar1 = *_Source;
      *(wchar_t *)puVar4 = wVar1;
      puVar4 = (undefined4 *)((int)puVar4 + 2);
      _Source = _Source + 1;
      if (wVar1 == L'\0') break;
      _Count = _Count - 1;
    } while (_Count != 0);
    if ((_Count != 0) && (uVar2 = _Count - 1, uVar2 != 0)) {
      for (uVar3 = uVar2 >> 1; uVar3 != 0; uVar3 = uVar3 - 1) {
        *puVar4 = 0;
        puVar4 = puVar4 + 1;
      }
      for (uVar2 = (uint)((uVar2 & 1) != 0); uVar2 != 0; uVar2 = uVar2 - 1) {
        *(undefined2 *)puVar4 = 0;
        puVar4 = (undefined4 *)((int)puVar4 + 2);
      }
    }
  }
  return _Dest;
}



// Library Function - Single Match
//  __towlower_l
// 
// Library: Visual Studio 2008 Release

wint_t __cdecl __towlower_l(wint_t _C,_locale_t _Locale)

{
  wchar_t *_DWMapFlag;
  wint_t wVar1;
  int iVar2;
  undefined2 in_stack_00000006;
  localeinfo_struct local_18;
  int local_10;
  char local_c;
  ushort local_8 [2];
  
  wVar1 = 0xffff;
  if (_C != 0xffff) {
    _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_18,_Locale);
    _DWMapFlag = (local_18.locinfo)->lc_category[0].wlocale;
    if (_DWMapFlag == (wchar_t *)0x0) {
      wVar1 = _C;
      if ((ushort)(_C - 0x41) < 0x1a) {
        wVar1 = _C + 0x20;
      }
    }
    else if (_C < 0x100) {
      iVar2 = __iswctype_l(_C,1,&local_18);
      wVar1 = _C;
      if (iVar2 != 0) {
        wVar1 = (wint_t)*(byte *)((int)local_18.locinfo[1].lc_category[0].wlocale + (__C & 0xffff));
      }
    }
    else {
      iVar2 = ___crtLCMapStringW((LPCWSTR)&local_18,(DWORD)_DWMapFlag,(LPCWSTR)0x100,(int)&_C,
                                 (LPWSTR)0x1,(int)local_8);
      wVar1 = _C;
      if (iVar2 != 0) {
        wVar1 = local_8[0];
      }
    }
    if (local_c != '\0') {
      *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
    }
  }
  return wVar1;
}



// Library Function - Single Match
//  _towlower
// 
// Library: Visual Studio 2008 Release

wint_t __cdecl _towlower(wint_t _C)

{
  wint_t wVar1;
  
  wVar1 = __towlower_l(_C,(_locale_t)0x0);
  return wVar1;
}



// Library Function - Single Match
//  _calloc
// 
// Library: Visual Studio 2008 Release

void * __cdecl _calloc(size_t _Count,size_t _Size)

{
  void *pvVar1;
  int *piVar2;
  int local_8;
  
  local_8 = 0;
  pvVar1 = (void *)__calloc_impl(_Count,_Size,&local_8);
  if ((pvVar1 == (void *)0x0) && (local_8 != 0)) {
    piVar2 = __errno();
    if (piVar2 != (int *)0x0) {
      piVar2 = __errno();
      *piVar2 = local_8;
    }
  }
  return pvVar1;
}



// Library Function - Single Match
//  __strdup
// 
// Library: Visual Studio 2008 Release

char * __cdecl __strdup(char *_Src)

{
  char *_Dst;
  size_t sVar1;
  errno_t eVar2;
  
  if (_Src == (char *)0x0) {
    _Dst = (char *)0x0;
  }
  else {
    sVar1 = _strlen(_Src);
    _Dst = (char *)_malloc(sVar1 + 1);
    if (_Dst == (char *)0x0) {
      _Dst = (char *)0x0;
    }
    else {
      eVar2 = _strcpy_s(_Dst,sVar1 + 1,_Src);
      if (eVar2 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
    }
  }
  return _Dst;
}



// Library Function - Single Match
//  _strchr
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

char * __cdecl _strchr(char *_Str,int _Val)

{
  uint uVar1;
  char cVar2;
  uint uVar3;
  uint uVar4;
  uint *puVar5;
  
  uVar1 = (uint)_Str & 3;
  while (uVar1 != 0) {
    if (*_Str == (char)_Val) {
      return (char *)(uint *)_Str;
    }
    if (*_Str == '\0') {
      return (char *)0x0;
    }
    uVar1 = (uint)(uint *)((int)_Str + 1) & 3;
    _Str = (char *)(uint *)((int)_Str + 1);
  }
  while( true ) {
    while( true ) {
      uVar1 = *(uint *)_Str;
      uVar4 = uVar1 ^ CONCAT22(CONCAT11((char)_Val,(char)_Val),CONCAT11((char)_Val,(char)_Val));
      uVar3 = uVar1 ^ 0xffffffff ^ uVar1 + 0x7efefeff;
      puVar5 = (uint *)((int)_Str + 4);
      if (((uVar4 ^ 0xffffffff ^ uVar4 + 0x7efefeff) & 0x81010100) != 0) break;
      _Str = (char *)puVar5;
      if ((uVar3 & 0x81010100) != 0) {
        if ((uVar3 & 0x1010100) != 0) {
          return (char *)0x0;
        }
        if ((uVar1 + 0x7efefeff & 0x80000000) == 0) {
          return (char *)0x0;
        }
      }
    }
    uVar1 = *(uint *)_Str;
    if ((char)uVar1 == (char)_Val) {
      return (char *)(uint *)_Str;
    }
    if ((char)uVar1 == '\0') {
      return (char *)0x0;
    }
    cVar2 = (char)(uVar1 >> 8);
    if (cVar2 == (char)_Val) {
      return (char *)((int)_Str + 1);
    }
    if (cVar2 == '\0') break;
    cVar2 = (char)(uVar1 >> 0x10);
    if (cVar2 == (char)_Val) {
      return (char *)((int)_Str + 2);
    }
    if (cVar2 == '\0') {
      return (char *)0x0;
    }
    cVar2 = (char)(uVar1 >> 0x18);
    if (cVar2 == (char)_Val) {
      return (char *)((int)_Str + 3);
    }
    _Str = (char *)puVar5;
    if (cVar2 == '\0') {
      return (char *)0x0;
    }
  }
  return (char *)0x0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _realloc
// 
// Library: Visual Studio 2008 Release

void * __cdecl _realloc(void *_Memory,size_t _NewSize)

{
  void *pvVar1;
  int iVar2;
  uint uVar3;
  int *piVar4;
  DWORD DVar5;
  LPVOID pvVar6;
  int local_24;
  LPVOID local_20;
  
  if (_Memory == (void *)0x0) {
    pvVar1 = _malloc(_NewSize);
    return pvVar1;
  }
  if (_NewSize == 0) {
    _free(_Memory);
    return (void *)0x0;
  }
  if (DAT_032f181c == 3) {
    do {
      local_20 = (void *)0x0;
      if (0xffffffe0 < _NewSize) goto LAB_00a47bf7;
      __lock(4);
      local_24 = ___sbh_find_block(_Memory);
      if (local_24 != 0) {
        if (_NewSize <= DAT_032f180c) {
          iVar2 = ___sbh_resize_block(local_24,_Memory,_NewSize);
          if (iVar2 == 0) {
            local_20 = (LPVOID)___sbh_alloc_block(_NewSize);
            if (local_20 != (void *)0x0) {
              uVar3 = *(int *)((int)_Memory + -4) - 1;
              if (_NewSize <= uVar3) {
                uVar3 = _NewSize;
              }
              _memcpy(local_20,_Memory,uVar3);
              local_24 = ___sbh_find_block(_Memory);
              ___sbh_free_block(local_24,_Memory);
            }
          }
          else {
            local_20 = _Memory;
          }
        }
        if (local_20 == (void *)0x0) {
          if (_NewSize == 0) {
            _NewSize = 1;
          }
          _NewSize = _NewSize + 0xf & 0xfffffff0;
          local_20 = HeapAlloc(DAT_032eb654,0,_NewSize);
          if (local_20 != (LPVOID)0x0) {
            uVar3 = *(int *)((int)_Memory + -4) - 1;
            if (_NewSize <= uVar3) {
              uVar3 = _NewSize;
            }
            _memcpy(local_20,_Memory,uVar3);
            ___sbh_free_block(local_24,_Memory);
          }
        }
      }
      FUN_00a47b62();
      if (local_24 == 0) {
        if (_NewSize == 0) {
          _NewSize = 1;
        }
        _NewSize = _NewSize + 0xf & 0xfffffff0;
        local_20 = HeapReAlloc(DAT_032eb654,0,_Memory,_NewSize);
      }
      if (local_20 != (void *)0x0) {
        return local_20;
      }
      if (DAT_032ebc38 == 0) {
        piVar4 = __errno();
        if (local_24 != 0) {
          *piVar4 = 0xc;
          return (void *)0x0;
        }
        goto LAB_00a47c24;
      }
      iVar2 = __callnewh(_NewSize);
    } while (iVar2 != 0);
    piVar4 = __errno();
    if (local_24 != 0) goto LAB_00a47c03;
  }
  else {
    do {
      if (0xffffffe0 < _NewSize) goto LAB_00a47bf7;
      if (_NewSize == 0) {
        _NewSize = 1;
      }
      pvVar6 = HeapReAlloc(DAT_032eb654,0,_Memory,_NewSize);
      if (pvVar6 != (LPVOID)0x0) {
        return pvVar6;
      }
      if (DAT_032ebc38 == 0) {
        piVar4 = __errno();
LAB_00a47c24:
        DVar5 = GetLastError();
        iVar2 = __get_errno_from_oserr(DVar5);
        *piVar4 = iVar2;
        return (void *)0x0;
      }
      iVar2 = __callnewh(_NewSize);
    } while (iVar2 != 0);
    piVar4 = __errno();
  }
  DVar5 = GetLastError();
  iVar2 = __get_errno_from_oserr(DVar5);
  *piVar4 = iVar2;
  return (void *)0x0;
LAB_00a47bf7:
  __callnewh(_NewSize);
  piVar4 = __errno();
LAB_00a47c03:
  *piVar4 = 0xc;
  return (void *)0x0;
}



void FUN_00a47b62(void)

{
  FUN_00a4d824(4);
  return;
}



// Library Function - Single Match
//  _strnlen
// 
// Library: Visual Studio 2008 Release

size_t __cdecl _strnlen(char *_Str,size_t _MaxCount)

{
  uint uVar1;
  
  uVar1 = 0;
  if (_MaxCount != 0) {
    do {
      if (*_Str == '\0') {
        return uVar1;
      }
      uVar1 = uVar1 + 1;
      _Str = _Str + 1;
    } while (uVar1 < _MaxCount);
  }
  return uVar1;
}



// Library Function - Single Match
//  _strncpy
// 
// Library: Visual Studio

char * __cdecl _strncpy(char *_Dest,char *_Source,size_t _Count)

{
  uint uVar1;
  uint uVar2;
  char cVar3;
  uint uVar4;
  uint *puVar5;
  
  if (_Count == 0) {
    return _Dest;
  }
  puVar5 = (uint *)_Dest;
  if (((uint)_Source & 3) != 0) {
    while( true ) {
      cVar3 = *_Source;
      _Source = (char *)((int)_Source + 1);
      *(char *)puVar5 = cVar3;
      puVar5 = (uint *)((int)puVar5 + 1);
      _Count = _Count - 1;
      if (_Count == 0) {
        return _Dest;
      }
      if (cVar3 == '\0') break;
      if (((uint)_Source & 3) == 0) {
        uVar4 = _Count >> 2;
        goto joined_r0x00a47cac;
      }
    }
    do {
      if (((uint)puVar5 & 3) == 0) {
        uVar4 = _Count >> 2;
        cVar3 = '\0';
        if (uVar4 == 0) goto LAB_00a47cf3;
        goto LAB_00a47d69;
      }
      *(undefined *)puVar5 = 0;
      puVar5 = (uint *)((int)puVar5 + 1);
      _Count = _Count - 1;
    } while (_Count != 0);
    return _Dest;
  }
  uVar4 = _Count >> 2;
  if (uVar4 != 0) {
    do {
      uVar1 = *(uint *)_Source;
      uVar2 = *(uint *)_Source;
      _Source = (char *)((int)_Source + 4);
      if (((uVar1 ^ 0xffffffff ^ uVar1 + 0x7efefeff) & 0x81010100) != 0) {
        if ((char)uVar2 == '\0') {
          *puVar5 = 0;
joined_r0x00a47d65:
          while( true ) {
            uVar4 = uVar4 - 1;
            puVar5 = puVar5 + 1;
            if (uVar4 == 0) break;
LAB_00a47d69:
            *puVar5 = 0;
          }
          cVar3 = '\0';
          _Count = _Count & 3;
          if (_Count != 0) goto LAB_00a47cf3;
          return _Dest;
        }
        if ((char)(uVar2 >> 8) == '\0') {
          *puVar5 = uVar2 & 0xff;
          goto joined_r0x00a47d65;
        }
        if ((uVar2 & 0xff0000) == 0) {
          *puVar5 = uVar2 & 0xffff;
          goto joined_r0x00a47d65;
        }
        if ((uVar2 & 0xff000000) == 0) {
          *puVar5 = uVar2;
          goto joined_r0x00a47d65;
        }
      }
      *puVar5 = uVar2;
      puVar5 = puVar5 + 1;
      uVar4 = uVar4 - 1;
joined_r0x00a47cac:
    } while (uVar4 != 0);
    _Count = _Count & 3;
    if (_Count == 0) {
      return _Dest;
    }
  }
  do {
    cVar3 = *_Source;
    _Source = (char *)((int)_Source + 1);
    *(char *)puVar5 = cVar3;
    puVar5 = (uint *)((int)puVar5 + 1);
    if (cVar3 == '\0') {
      while (_Count = _Count - 1, _Count != 0) {
LAB_00a47cf3:
        *(char *)puVar5 = cVar3;
        puVar5 = (uint *)((int)puVar5 + 1);
      }
      return _Dest;
    }
    _Count = _Count - 1;
  } while (_Count != 0);
  return _Dest;
}



// Library Function - Single Match
//  _strstr
// 
// Libraries: Visual Studio 2005, Visual Studio 2008, Visual Studio 2010, Visual Studio 2019

char * __cdecl _strstr(char *_Str,char *_SubStr)

{
  char *pcVar1;
  char *pcVar2;
  char cVar3;
  uint uVar4;
  char cVar5;
  uint uVar6;
  uint uVar7;
  char *pcVar8;
  uint *puVar9;
  char *pcVar10;
  
  cVar3 = *_SubStr;
  if (cVar3 == '\0') {
    return _Str;
  }
  if (_SubStr[1] == '\0') {
    uVar4 = (uint)_Str & 3;
    while (uVar4 != 0) {
      if (*_Str == cVar3) {
        return (char *)(uint *)_Str;
      }
      if (*_Str == '\0') {
        return (char *)0x0;
      }
      uVar4 = (uint)(uint *)((int)_Str + 1) & 3;
      _Str = (char *)(uint *)((int)_Str + 1);
    }
    while( true ) {
      while( true ) {
        uVar4 = *(uint *)_Str;
        uVar7 = uVar4 ^ CONCAT22(CONCAT11(cVar3,cVar3),CONCAT11(cVar3,cVar3));
        uVar6 = uVar4 ^ 0xffffffff ^ uVar4 + 0x7efefeff;
        puVar9 = (uint *)((int)_Str + 4);
        if (((uVar7 ^ 0xffffffff ^ uVar7 + 0x7efefeff) & 0x81010100) != 0) break;
        _Str = (char *)puVar9;
        if ((uVar6 & 0x81010100) != 0) {
          if ((uVar6 & 0x1010100) != 0) {
            return (char *)0x0;
          }
          if ((uVar4 + 0x7efefeff & 0x80000000) == 0) {
            return (char *)0x0;
          }
        }
      }
      uVar4 = *(uint *)_Str;
      if ((char)uVar4 == cVar3) {
        return (char *)(uint *)_Str;
      }
      if ((char)uVar4 == '\0') {
        return (char *)0x0;
      }
      cVar5 = (char)(uVar4 >> 8);
      if (cVar5 == cVar3) {
        return (char *)((int)_Str + 1);
      }
      if (cVar5 == '\0') break;
      cVar5 = (char)(uVar4 >> 0x10);
      if (cVar5 == cVar3) {
        return (char *)((int)_Str + 2);
      }
      if (cVar5 == '\0') {
        return (char *)0x0;
      }
      cVar5 = (char)(uVar4 >> 0x18);
      if (cVar5 == cVar3) {
        return (char *)((int)_Str + 3);
      }
      _Str = (char *)puVar9;
      if (cVar5 == '\0') {
        return (char *)0x0;
      }
    }
    return (char *)0x0;
  }
  do {
    cVar5 = *_Str;
    do {
      while (_Str = _Str + 1, cVar5 != cVar3) {
        if (cVar5 == '\0') {
          return (char *)0x0;
        }
        cVar5 = *_Str;
      }
      cVar5 = *_Str;
      pcVar10 = _Str + 1;
      pcVar8 = _SubStr;
    } while (cVar5 != _SubStr[1]);
    do {
      if (pcVar8[2] == '\0') {
LAB_00a47e09:
        return _Str + -1;
      }
      if (*pcVar10 != pcVar8[2]) break;
      pcVar1 = pcVar8 + 3;
      if (*pcVar1 == '\0') goto LAB_00a47e09;
      pcVar2 = pcVar10 + 1;
      pcVar8 = pcVar8 + 2;
      pcVar10 = pcVar10 + 2;
    } while (*pcVar1 == *pcVar2);
  } while( true );
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

float10 FUN_00a47e16(wchar_t *param_1,wchar_t **param_2,localeinfo_struct *param_3)

{
  wchar_t _C;
  uint uVar1;
  int *piVar2;
  int iVar3;
  _locale_t _Locale;
  FLT p_Var4;
  wchar_t *_Str;
  _flt local_34;
  localeinfo_struct local_1c;
  int local_14;
  char local_10;
  double local_c;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_1c,param_3);
  if (param_2 != (wchar_t **)0x0) {
    *param_2 = param_1;
  }
  if (param_1 == (wchar_t *)0x0) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_10 != '\0') {
      *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
    }
    return (float10)0;
  }
  _C = *param_1;
  _Str = param_1;
  while (iVar3 = __iswctype_l(_C,8,&local_1c), iVar3 != 0) {
    _Str = _Str + 1;
    _C = *_Str;
  }
  _Locale = (_locale_t)FUN_00a51355(_Str,0,0);
  p_Var4 = __wfltin2(&local_34,_Str,_Locale);
  if (param_2 != (wchar_t **)0x0) {
    *param_2 = _Str + p_Var4->nbytes;
  }
  uVar1 = p_Var4->flags;
  if ((uVar1 & 0x240) == 0) {
    if ((uVar1 & 0x81) == 0) {
      if (((uVar1 & 0x100) == 0) || (local_c = 0.0, NAN(p_Var4->dval) == (p_Var4->dval == 0.0))) {
        local_c = p_Var4->dval;
        goto LAB_00a47f08;
      }
    }
    else {
      local_c = _DAT_0323fe50;
      if (*_Str == L'-') {
        local_c = -_DAT_0323fe50;
      }
    }
    piVar2 = __errno();
    *piVar2 = 0x22;
  }
  else {
    local_c = 0.0;
    if (param_2 != (wchar_t **)0x0) {
      *param_2 = param_1;
    }
  }
LAB_00a47f08:
  if (local_10 != '\0') {
    *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
  }
  return (float10)local_c;
}



void FUN_00a47f1d(undefined4 param_1,undefined4 param_2)

{
  FUN_00a47e16(param_1,param_2,0);
  return;
}



// Library Function - Single Match
//  unsigned long __cdecl wcstoxl(struct localeinfo_struct *,wchar_t const *,wchar_t const *
// *,int,int)
// 
// Library: Visual Studio 2008 Release

ulong __cdecl
wcstoxl(localeinfo_struct *param_1,wchar_t *param_2,wchar_t **param_3,int param_4,int param_5)

{
  wchar_t _C;
  wchar_t *pwVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  ushort uVar6;
  uint uVar7;
  wchar_t *pwVar8;
  localeinfo_struct local_1c;
  int local_14;
  char local_10;
  uint local_c;
  ulong uVar9;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_1c,param_1);
  if (param_3 != (wchar_t **)0x0) {
    *param_3 = param_2;
  }
  if ((param_2 == (wchar_t *)0x0) || ((param_4 != 0 && ((param_4 < 2 || (0x24 < param_4)))))) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_10 != '\0') {
      *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
    }
    return 0;
  }
  _C = *param_2;
  uVar9 = 0;
  pwVar1 = param_2;
  while( true ) {
    pwVar8 = pwVar1 + 1;
    iVar3 = __iswctype_l(_C,8,&local_1c);
    if (iVar3 == 0) break;
    _C = *pwVar8;
    pwVar1 = pwVar8;
  }
  if (_C == L'-') {
    param_5 = param_5 | 2;
LAB_00a47fcd:
    _C = *pwVar8;
    pwVar8 = pwVar1 + 2;
  }
  else if (_C == L'+') goto LAB_00a47fcd;
  uVar7 = (uint)(ushort)_C;
  if (param_4 == 0) {
    iVar3 = __wchartodigit(uVar7);
    if (iVar3 != 0) {
      param_4 = 10;
      goto LAB_00a48031;
    }
    if ((*pwVar8 != L'x') && (*pwVar8 != L'X')) {
      param_4 = 8;
      goto LAB_00a48031;
    }
    param_4 = 0x10;
  }
  if (((param_4 == 0x10) && (iVar3 = __wchartodigit(uVar7), iVar3 == 0)) &&
     ((*pwVar8 == L'x' || (*pwVar8 == L'X')))) {
    uVar7 = (uint)(ushort)pwVar8[1];
    pwVar8 = pwVar8 + 2;
  }
LAB_00a48031:
  uVar4 = (uint)(0xffffffff / (ulonglong)(uint)param_4);
  local_c = (uint)(0xffffffff % (ulonglong)(uint)param_4);
  do {
    uVar5 = __wchartodigit(uVar7);
    if (uVar5 == 0xffffffff) {
      uVar6 = (ushort)uVar7;
      if (((uVar6 < 0x41) || (0x5a < uVar6)) && (0x19 < (ushort)(uVar6 - 0x61))) {
LAB_00a48092:
        pwVar8 = pwVar8 + -1;
        if ((param_5 & 8U) == 0) {
          if (param_3 != (wchar_t **)0x0) {
            pwVar8 = param_2;
          }
          uVar9 = 0;
        }
        else if (((param_5 & 4U) != 0) ||
                (((param_5 & 1U) == 0 &&
                 ((((param_5 & 2U) != 0 && (0x80000000 < uVar9)) ||
                  (((param_5 & 2U) == 0 && (0x7fffffff < uVar9)))))))) {
          piVar2 = __errno();
          *piVar2 = 0x22;
          if ((param_5 & 1U) == 0) {
            uVar9 = ((param_5 & 2U) != 0) + 0x7fffffff;
          }
          else {
            uVar9 = 0xffffffff;
          }
        }
        if (param_3 != (wchar_t **)0x0) {
          *param_3 = pwVar8;
        }
        if ((param_5 & 2U) != 0) {
          uVar9 = -uVar9;
        }
        if (local_10 != '\0') {
          *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
        }
        return uVar9;
      }
      if ((ushort)(uVar6 - 0x61) < 0x1a) {
        uVar7 = uVar7 - 0x20;
      }
      uVar5 = uVar7 - 0x37;
    }
    if ((uint)param_4 <= uVar5) goto LAB_00a48092;
    if ((uVar9 < uVar4) || ((uVar9 == uVar4 && (uVar5 <= local_c)))) {
      uVar9 = uVar9 * param_4 + uVar5;
      param_5 = param_5 | 8;
    }
    else {
      param_5 = param_5 | 0xc;
      if (param_3 == (wchar_t **)0x0) goto LAB_00a48092;
    }
    uVar7 = (uint)(ushort)*pwVar8;
    pwVar8 = pwVar8 + 1;
  } while( true );
}



// Library Function - Single Match
//  _wcstol
// 
// Library: Visual Studio 2008 Release

long __cdecl _wcstol(wchar_t *_Str,wchar_t **_EndPtr,int _Radix)

{
  ulong uVar1;
  undefined **ppuVar2;
  
  if (DAT_032eb230 == 0) {
    ppuVar2 = &PTR_DAT_03240178;
  }
  else {
    ppuVar2 = (undefined **)0x0;
  }
  uVar1 = wcstoxl((localeinfo_struct *)ppuVar2,_Str,_EndPtr,_Radix,0);
  return uVar1;
}



// Library Function - Single Match
//  _wcstoul
// 
// Library: Visual Studio 2008 Release

ulong __cdecl _wcstoul(wchar_t *_Str,wchar_t **_EndPtr,int _Radix)

{
  ulong uVar1;
  undefined **ppuVar2;
  
  if (DAT_032eb230 == 0) {
    ppuVar2 = &PTR_DAT_03240178;
  }
  else {
    ppuVar2 = (undefined **)0x0;
  }
  uVar1 = wcstoxl((localeinfo_struct *)ppuVar2,_Str,_EndPtr,_Radix,1);
  return uVar1;
}



// Library Function - Single Match
//  _wcspbrk
// 
// Library: Visual Studio 2008 Release

wchar_t * __cdecl _wcspbrk(wchar_t *_Str,wchar_t *_Control)

{
  wchar_t wVar1;
  wchar_t *pwVar2;
  wchar_t wVar3;
  
  wVar3 = *_Str;
  if (wVar3 != L'\0') {
    wVar1 = *_Control;
    pwVar2 = _Control;
    do {
      while (wVar1 != L'\0') {
        if (wVar1 == wVar3) {
          return _Str;
        }
        wVar1 = pwVar2[1];
        pwVar2 = pwVar2 + 1;
      }
      _Str = _Str + 1;
      wVar3 = *_Str;
      wVar1 = *_Control;
      pwVar2 = _Control;
    } while (wVar3 != L'\0');
  }
  return (wchar_t *)0x0;
}



// WARNING: Removing unreachable block (ram,0x00a48350)
// WARNING: Removing unreachable block (ram,0x00a483de)
// Library Function - Single Match
//  unsigned __int64 __cdecl wcstoxq(struct localeinfo_struct *,wchar_t const *,wchar_t const *
// *,int,int)
// 
// Library: Visual Studio 2008 Release

__uint64 __cdecl
wcstoxq(localeinfo_struct *param_1,wchar_t *param_2,wchar_t **param_3,int param_4,int param_5)

{
  wchar_t _C;
  wchar_t *pwVar1;
  __uint64 _Var2;
  int *piVar3;
  int iVar4;
  uint uVar5;
  uint extraout_ECX;
  ushort uVar6;
  uint uVar7;
  wchar_t *pwVar8;
  longlong lVar9;
  localeinfo_struct local_34;
  int local_2c;
  char local_28;
  int local_24;
  int local_20;
  uint local_1c;
  int local_18;
  undefined8 local_14;
  undefined8 local_c;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_34,param_1);
  if (param_3 != (wchar_t **)0x0) {
    *param_3 = param_2;
  }
  if ((param_2 == (wchar_t *)0x0) || ((param_4 != 0 && ((param_4 < 2 || (0x24 < param_4)))))) {
    piVar3 = __errno();
    *piVar3 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_28 != '\0') {
      *(uint *)(local_2c + 0x70) = *(uint *)(local_2c + 0x70) & 0xfffffffd;
    }
    return 0;
  }
  local_c._0_4_ = 0;
  local_c._4_4_ = 0;
  _C = *param_2;
  pwVar1 = param_2;
  while( true ) {
    pwVar8 = pwVar1 + 1;
    iVar4 = __iswctype_l(_C,8,&local_34);
    if (iVar4 == 0) break;
    _C = *pwVar8;
    pwVar1 = pwVar8;
  }
  if (_C == L'-') {
    param_5 = param_5 | 2;
LAB_00a48267:
    _C = *pwVar8;
    pwVar8 = pwVar1 + 2;
  }
  else if (_C == L'+') goto LAB_00a48267;
  uVar7 = (uint)(ushort)_C;
  if (((param_4 < 0) || (param_4 == 1)) || (0x24 < param_4)) {
    if (param_3 != (wchar_t **)0x0) {
      *param_3 = param_2;
    }
    if (local_28 != '\0') {
      *(uint *)(local_2c + 0x70) = *(uint *)(local_2c + 0x70) & 0xfffffffd;
    }
    return 0;
  }
  if (param_4 == 0) {
    iVar4 = __wchartodigit(uVar7);
    if (iVar4 != 0) {
      param_4 = 10;
      goto LAB_00a482e5;
    }
    if ((*pwVar8 != L'x') && (*pwVar8 != L'X')) {
      param_4 = 8;
      goto LAB_00a482e5;
    }
    param_4 = 0x10;
  }
  if (((param_4 == 0x10) && (iVar4 = __wchartodigit(uVar7), iVar4 == 0)) &&
     ((*pwVar8 == L'x' || (*pwVar8 == L'X')))) {
    uVar7 = (uint)(ushort)pwVar8[1];
    pwVar8 = pwVar8 + 2;
  }
LAB_00a482e5:
  local_20 = param_4 >> 0x1f;
  local_24 = param_4;
  local_14 = __aulldvrm(0xffffffff,0xffffffff,param_4,local_20);
  local_18 = 0x10;
  local_1c = extraout_ECX;
  do {
    uVar5 = __wchartodigit(uVar7);
    if (uVar5 == 0xffffffff) {
      uVar6 = (ushort)uVar7;
      if (((uVar6 < 0x41) || (0x5a < uVar6)) && (0x19 < (ushort)(uVar6 - 0x61))) {
LAB_00a4837d:
        pwVar8 = pwVar8 + -1;
        if ((param_5 & 8U) == 0) {
          if (param_3 != (wchar_t **)0x0) {
            pwVar8 = param_2;
          }
          _Var2 = 0;
        }
        else if (((param_5 & 4U) != 0) ||
                ((_Var2 = local_c, (param_5 & 1U) == 0 &&
                 ((((param_5 & 2U) != 0 && (0x8000000000000000 < local_c)) ||
                  (((param_5 & 2U) == 0 &&
                   ((0x7ffffffeffffffff < local_c && (0x7fffffffffffffff < local_c)))))))))) {
          piVar3 = __errno();
          *piVar3 = 0x22;
          if ((param_5 & 1U) == 0) {
            if ((param_5 & 2U) == 0) {
              _Var2 = 0x7fffffffffffffff;
            }
            else {
              _Var2 = 0x8000000000000000;
            }
          }
          else {
            _Var2 = 0xffffffffffffffff;
          }
        }
        local_c._4_4_ = (int)(_Var2 >> 0x20);
        local_c._0_4_ = (int)_Var2;
        if (param_3 != (wchar_t **)0x0) {
          *param_3 = pwVar8;
        }
        if ((param_5 & 2U) != 0) {
          _Var2 = CONCAT44(-(local_c._4_4_ + (uint)((int)local_c != 0)),-(int)local_c);
        }
        if (local_28 == '\0') {
          return _Var2;
        }
        *(uint *)(local_2c + 0x70) = *(uint *)(local_2c + 0x70) & 0xfffffffd;
        return _Var2;
      }
      if ((ushort)(uVar6 - 0x61) < 0x1a) {
        uVar7 = uVar7 - 0x20;
      }
      uVar5 = uVar7 - 0x37;
    }
    if ((uint)param_4 <= uVar5) goto LAB_00a4837d;
    if ((local_c < local_14) || ((local_14 == local_c && ((local_18 != 0 || (uVar5 <= local_1c))))))
    {
      lVar9 = __allmul(local_24,local_20,local_c);
      local_c = lVar9 + (ulonglong)uVar5;
      param_5 = param_5 | 8;
    }
    else {
      param_5 = param_5 | 0xc;
      if (param_3 == (wchar_t **)0x0) goto LAB_00a4837d;
    }
    uVar7 = (uint)(ushort)*pwVar8;
    pwVar8 = pwVar8 + 1;
  } while( true );
}



// Library Function - Single Match
//  __wcstoi64
// 
// Library: Visual Studio 2008 Release

longlong __cdecl __wcstoi64(wchar_t *_Str,wchar_t **_EndPtr,int _Radix)

{
  __uint64 _Var1;
  undefined **ppuVar2;
  
  if (DAT_032eb230 == 0) {
    ppuVar2 = &PTR_DAT_03240178;
  }
  else {
    ppuVar2 = (undefined **)0x0;
  }
  _Var1 = wcstoxq((localeinfo_struct *)ppuVar2,_Str,_EndPtr,_Radix,0);
  return _Var1;
}



// Library Function - Single Match
//  __wcstoui64
// 
// Library: Visual Studio 2008 Release

ulonglong __cdecl __wcstoui64(wchar_t *_Str,wchar_t **_EndPtr,int _Radix)

{
  __uint64 _Var1;
  undefined **ppuVar2;
  
  if (DAT_032eb230 == 0) {
    ppuVar2 = &PTR_DAT_03240178;
  }
  else {
    ppuVar2 = (undefined **)0x0;
  }
  _Var1 = wcstoxq((localeinfo_struct *)ppuVar2,_Str,_EndPtr,_Radix,1);
  return _Var1;
}



// Library Function - Single Match
//  __towupper_l
// 
// Library: Visual Studio 2008 Release

wint_t __cdecl __towupper_l(wint_t _C,_locale_t _Locale)

{
  wchar_t *_DWMapFlag;
  wint_t wVar1;
  int iVar2;
  undefined2 in_stack_00000006;
  localeinfo_struct local_18;
  int local_10;
  char local_c;
  ushort local_8 [2];
  
  wVar1 = 0xffff;
  if (_C != 0xffff) {
    _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_18,_Locale);
    _DWMapFlag = (local_18.locinfo)->lc_category[0].wlocale;
    if (_DWMapFlag == (wchar_t *)0x0) {
      wVar1 = _C;
      if ((ushort)(_C - 0x61) < 0x1a) {
        wVar1 = _C - 0x20;
      }
    }
    else if (_C < 0x100) {
      iVar2 = __iswctype_l(_C,2,&local_18);
      wVar1 = _C;
      if (iVar2 != 0) {
        wVar1 = (wint_t)*(byte *)((int)local_18.locinfo[1].lc_category[0].refcount + (__C & 0xffff))
        ;
      }
    }
    else {
      iVar2 = ___crtLCMapStringW((LPCWSTR)&local_18,(DWORD)_DWMapFlag,(LPCWSTR)0x200,(int)&_C,
                                 (LPWSTR)0x1,(int)local_8);
      wVar1 = _C;
      if (iVar2 != 0) {
        wVar1 = local_8[0];
      }
    }
    if (local_c != '\0') {
      *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
    }
  }
  return wVar1;
}



// Library Function - Single Match
//  _towupper
// 
// Library: Visual Studio 2008 Release

wint_t __cdecl _towupper(wint_t _C)

{
  wint_t wVar1;
  
  wVar1 = __towupper_l(_C,(_locale_t)0x0);
  return wVar1;
}



// Library Function - Single Match
//  _wcsstr
// 
// Library: Visual Studio 2008 Release

wchar_t * __cdecl _wcsstr(wchar_t *_Str,wchar_t *_SubStr)

{
  wchar_t wVar1;
  wchar_t *pwVar2;
  int iVar3;
  
  if (*_SubStr != L'\0') {
    wVar1 = *_Str;
    if (wVar1 != L'\0') {
      iVar3 = (int)_Str - (int)_SubStr;
      pwVar2 = _SubStr;
joined_r0x00a485c3:
      do {
        if (wVar1 != L'\0') {
          if (*pwVar2 == L'\0') {
            return _Str;
          }
          if (*(wchar_t *)(iVar3 + (int)pwVar2) == *pwVar2) {
            wVar1 = *(wchar_t *)(iVar3 + (int)(pwVar2 + 1));
            pwVar2 = pwVar2 + 1;
            goto joined_r0x00a485c3;
          }
        }
        if (*pwVar2 == L'\0') {
          return _Str;
        }
        _Str = _Str + 1;
        wVar1 = *_Str;
        iVar3 = iVar3 + 2;
        pwVar2 = _SubStr;
      } while (wVar1 != L'\0');
    }
    _Str = (wchar_t *)0x0;
  }
  return _Str;
}



// Library Function - Single Match
//  __getenv_helper_nolock
// 
// Library: Visual Studio 2008 Release

char * __cdecl __getenv_helper_nolock(char *param_1)

{
  int iVar1;
  size_t _MaxCount;
  size_t sVar2;
  uchar **ppuVar3;
  
  if (((DAT_032f2844 != 0) &&
      ((DAT_032eb250 != (uchar **)0x0 ||
       (((DAT_032eb258 != 0 && (iVar1 = ___wtomb_environ(), iVar1 == 0)) &&
        (DAT_032eb250 != (uchar **)0x0)))))) && (ppuVar3 = DAT_032eb250, param_1 != (char *)0x0)) {
    _MaxCount = _strlen(param_1);
    for (; *ppuVar3 != (uchar *)0x0; ppuVar3 = ppuVar3 + 1) {
      sVar2 = _strlen((char *)*ppuVar3);
      if (((_MaxCount < sVar2) && ((*ppuVar3)[_MaxCount] == '=')) &&
         (iVar1 = __mbsnbicoll(*ppuVar3,(uchar *)param_1,_MaxCount), iVar1 == 0)) {
        return (char *)(*ppuVar3 + _MaxCount + 1);
      }
    }
  }
  return (char *)0x0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _getenv
// 
// Library: Visual Studio 2008 Release

char * __cdecl _getenv(char *_VarName)

{
  int *piVar1;
  size_t sVar2;
  char *pcVar3;
  
  if ((_VarName != (char *)0x0) && (sVar2 = _strnlen(_VarName,0x7fff), sVar2 < 0x7fff)) {
    __lock(7);
    pcVar3 = __getenv_helper_nolock(_VarName);
    FUN_00a486fd();
    return pcVar3;
  }
  piVar1 = __errno();
  *piVar1 = 0x16;
  __invalid_parameter(0,0,0,0,0);
  return (char *)0x0;
}



void FUN_00a486fd(void)

{
  FUN_00a4d824(7);
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  int __cdecl _open(char const *,int,int)
//  int __cdecl _wopen(wchar_t const *,int,int)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

int __cdecl FID_conflict__wopen(wchar_t *_Filename,int _OpenFlag,...)

{
  errno_t eVar1;
  int in_stack_0000000c;
  int local_8;
  
  eVar1 = __wsopen_helper(_Filename,_OpenFlag,0x40,in_stack_0000000c,&local_8,0);
  if (eVar1 != 0) {
    return -1;
  }
  return local_8;
}



// Library Function - Single Match
//  __set_osfhnd
// 
// Library: Visual Studio 2008 Release

int __cdecl __set_osfhnd(int param_1,intptr_t param_2)

{
  int *piVar1;
  ulong *puVar2;
  int iVar3;
  DWORD nStdHandle;
  
  if ((-1 < param_1) && ((uint)param_1 < DAT_032f16e4)) {
    iVar3 = (param_1 & 0x1fU) * 0x40;
    if (*(int *)(iVar3 + (&DAT_032f1700)[param_1 >> 5]) == -1) {
      if (DAT_0323f860 == 1) {
        if (param_1 == 0) {
          nStdHandle = 0xfffffff6;
        }
        else if (param_1 == 1) {
          nStdHandle = 0xfffffff5;
        }
        else {
          if (param_1 != 2) goto LAB_00a48790;
          nStdHandle = 0xfffffff4;
        }
        SetStdHandle(nStdHandle,(HANDLE)param_2);
      }
LAB_00a48790:
      *(intptr_t *)(iVar3 + (&DAT_032f1700)[param_1 >> 5]) = param_2;
      return 0;
    }
  }
  piVar1 = __errno();
  *piVar1 = 9;
  puVar2 = ___doserrno();
  *puVar2 = 0;
  return -1;
}



// Library Function - Single Match
//  __free_osfhnd
// 
// Library: Visual Studio 2008 Release

int __cdecl __free_osfhnd(int param_1)

{
  int *piVar1;
  ulong *puVar2;
  int iVar3;
  DWORD nStdHandle;
  
  if ((-1 < param_1) && ((uint)param_1 < DAT_032f16e4)) {
    iVar3 = (param_1 & 0x1fU) * 0x40;
    piVar1 = (int *)((&DAT_032f1700)[param_1 >> 5] + iVar3);
    if (((*(byte *)(piVar1 + 1) & 1) != 0) && (*piVar1 != -1)) {
      if (DAT_0323f860 == 1) {
        if (param_1 == 0) {
          nStdHandle = 0xfffffff6;
        }
        else if (param_1 == 1) {
          nStdHandle = 0xfffffff5;
        }
        else {
          if (param_1 != 2) goto LAB_00a48816;
          nStdHandle = 0xfffffff4;
        }
        SetStdHandle(nStdHandle,(HANDLE)0x0);
      }
LAB_00a48816:
      *(undefined4 *)(iVar3 + (&DAT_032f1700)[param_1 >> 5]) = 0xffffffff;
      return 0;
    }
  }
  piVar1 = __errno();
  *piVar1 = 9;
  puVar2 = ___doserrno();
  *puVar2 = 0;
  return -1;
}



// Library Function - Single Match
//  __get_osfhandle
// 
// Library: Visual Studio 2008 Release

intptr_t __cdecl __get_osfhandle(int _FileHandle)

{
  ulong *puVar1;
  int *piVar2;
  intptr_t *piVar3;
  intptr_t iVar4;
  
  if (_FileHandle == -2) {
    puVar1 = ___doserrno();
    *puVar1 = 0;
    piVar2 = __errno();
    *piVar2 = 9;
    return -1;
  }
  if (((_FileHandle < 0) || (DAT_032f16e4 <= (uint)_FileHandle)) ||
     (piVar3 = (intptr_t *)((_FileHandle & 0x1fU) * 0x40 + (&DAT_032f1700)[_FileHandle >> 5]),
     (*(byte *)(piVar3 + 1) & 1) == 0)) {
    puVar1 = ___doserrno();
    *puVar1 = 0;
    piVar2 = __errno();
    *piVar2 = 9;
    __invalid_parameter(0,0,0,0,0);
    iVar4 = -1;
  }
  else {
    iVar4 = *piVar3;
  }
  return iVar4;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  ___lock_fhandle
// 
// Library: Visual Studio 2008 Release

int __cdecl ___lock_fhandle(int _Filehandle)

{
  int iVar1;
  int iVar2;
  uint local_20;
  
  iVar2 = (_Filehandle & 0x1fU) * 0x40 + (&DAT_032f1700)[_Filehandle >> 5];
  local_20 = 1;
  if (*(int *)(iVar2 + 8) == 0) {
    __lock(10);
    if (*(int *)(iVar2 + 8) == 0) {
      iVar1 = ___crtInitCritSecAndSpinCount(iVar2 + 0xc,4000);
      local_20 = (uint)(iVar1 != 0);
      *(int *)(iVar2 + 8) = *(int *)(iVar2 + 8) + 1;
    }
    FUN_00a48948();
  }
  if (local_20 != 0) {
    EnterCriticalSection
              ((LPCRITICAL_SECTION)
               ((&DAT_032f1700)[_Filehandle >> 5] + 0xc + (_Filehandle & 0x1fU) * 0x40));
  }
  return local_20;
}



void FUN_00a48948(void)

{
  FUN_00a4d824(10);
  return;
}



// Library Function - Single Match
//  __unlock_fhandle
// 
// Library: Visual Studio 2008 Release

void __cdecl __unlock_fhandle(int _Filehandle)

{
  LeaveCriticalSection
            ((LPCRITICAL_SECTION)
             ((&DAT_032f1700)[_Filehandle >> 5] + 0xc + (_Filehandle & 0x1fU) * 0x40));
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __alloc_osfhnd
// 
// Library: Visual Studio 2008 Release

int __cdecl __alloc_osfhnd(void)

{
  bool bVar1;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  int local_20;
  
  local_20 = -1;
  iVar4 = 0;
  bVar1 = false;
  iVar2 = __mtinitlocknum(0xb);
  if (iVar2 == 0) {
    local_20 = -1;
  }
  else {
    __lock(0xb);
    for (; iVar4 < 0x40; iVar4 = iVar4 + 1) {
      puVar3 = (undefined4 *)(&DAT_032f1700)[iVar4];
      if (puVar3 == (undefined4 *)0x0) {
        puVar3 = (undefined4 *)__calloc_crt(0x20,0x40);
        if (puVar3 != (undefined4 *)0x0) {
          (&DAT_032f1700)[iVar4] = puVar3;
          DAT_032f16e4 = DAT_032f16e4 + 0x20;
          for (; puVar3 < (undefined4 *)((&DAT_032f1700)[iVar4] + 0x800); puVar3 = puVar3 + 0x10) {
            *(undefined *)(puVar3 + 1) = 0;
            *puVar3 = 0xffffffff;
            *(undefined *)((int)puVar3 + 5) = 10;
            puVar3[2] = 0;
          }
          local_20 = iVar4 << 5;
          *(undefined *)((&DAT_032f1700)[local_20 >> 5] + 4) = 1;
          iVar2 = ___lock_fhandle(local_20);
          if (iVar2 == 0) {
            local_20 = -1;
          }
        }
        break;
      }
      for (; puVar3 < (undefined4 *)((&DAT_032f1700)[iVar4] + 0x800); puVar3 = puVar3 + 0x10) {
        if ((*(byte *)(puVar3 + 1) & 1) == 0) {
          if (puVar3[2] == 0) {
            __lock(10);
            if (puVar3[2] == 0) {
              iVar2 = ___crtInitCritSecAndSpinCount(puVar3 + 3,4000);
              if (iVar2 == 0) {
                bVar1 = true;
              }
              else {
                puVar3[2] = puVar3[2] + 1;
              }
            }
            FUN_00a48a4b();
          }
          if (!bVar1) {
            EnterCriticalSection((LPCRITICAL_SECTION)(puVar3 + 3));
            if ((*(byte *)(puVar3 + 1) & 1) == 0) {
              *(undefined *)(puVar3 + 1) = 1;
              *puVar3 = 0xffffffff;
              local_20 = ((int)puVar3 - (&DAT_032f1700)[iVar4] >> 6) + iVar4 * 0x20;
              break;
            }
            LeaveCriticalSection((LPCRITICAL_SECTION)(puVar3 + 3));
          }
        }
      }
      if (local_20 != -1) break;
    }
    FUN_00a48b09();
  }
  return local_20;
}



void FUN_00a48a4b(void)

{
  FUN_00a4d824(10);
  return;
}



void FUN_00a48b09(void)

{
  FUN_00a4d824(0xb);
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __open_osfhandle
// 
// Library: Visual Studio 2008 Release

int __cdecl __open_osfhandle(intptr_t _OSFileHandle,int _Flags)

{
  byte *pbVar1;
  DWORD DVar2;
  uint uVar3;
  int *piVar4;
  ulong *puVar5;
  int iVar6;
  byte bVar7;
  
  bVar7 = 0;
  if ((_Flags & 8U) != 0) {
    bVar7 = 0x20;
  }
  if ((_Flags & 0x4000U) != 0) {
    bVar7 = bVar7 | 0x80;
  }
  if ((_Flags & 0x80U) != 0) {
    bVar7 = bVar7 | 0x10;
  }
  DVar2 = GetFileType((HANDLE)_OSFileHandle);
  if (DVar2 == 0) {
    DVar2 = GetLastError();
    __dosmaperr(DVar2);
  }
  else {
    if (DVar2 == 2) {
      bVar7 = bVar7 | 0x40;
    }
    else if (DVar2 == 3) {
      bVar7 = bVar7 | 8;
    }
    uVar3 = __alloc_osfhnd();
    if (uVar3 != 0xffffffff) {
      __set_osfhnd(uVar3,_OSFileHandle);
      piVar4 = &DAT_032f1700 + ((int)uVar3 >> 5);
      iVar6 = (uVar3 & 0x1f) * 0x40;
      *(byte *)(*piVar4 + 4 + iVar6) = bVar7 | 1;
      pbVar1 = (byte *)(*piVar4 + 0x24 + iVar6);
      *pbVar1 = *pbVar1 & 0x80;
      pbVar1 = (byte *)(*piVar4 + 0x24 + iVar6);
      *pbVar1 = *pbVar1 & 0x7f;
      FUN_00a48c00();
      return uVar3;
    }
    piVar4 = __errno();
    *piVar4 = 0x18;
    puVar5 = ___doserrno();
    *puVar5 = 0;
  }
  return -1;
}



void FUN_00a48c00(void)

{
  byte *pbVar1;
  int unaff_EBP;
  uint unaff_ESI;
  int unaff_EDI;
  
  if (*(int *)(unaff_EBP + -0x1c) == unaff_EDI) {
    pbVar1 = (byte *)((&DAT_032f1700)[(int)unaff_ESI >> 5] + 4 + (unaff_ESI & 0x1f) * 0x40);
    *pbVar1 = *pbVar1 & 0xfe;
  }
  __unlock_fhandle(unaff_ESI);
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  __fdopen
// 
// Library: Visual Studio 2008 Release

FILE * __cdecl __fdopen(int _FileHandle,char *_Mode)

{
  char cVar1;
  bool bVar2;
  bool bVar3;
  int *piVar4;
  FILE *pFVar5;
  uint uVar6;
  uint uVar7;
  
  if (_Mode != (char *)0x0) {
    if (_FileHandle == -2) {
      piVar4 = __errno();
      *piVar4 = 9;
      return (FILE *)0x0;
    }
    if (((_FileHandle < 0) || (DAT_032f16e4 <= (uint)_FileHandle)) ||
       (uVar7 = 1,
       (*(byte *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + (_FileHandle & 0x1fU) * 0x40) & 1) == 0))
    {
      piVar4 = __errno();
      *piVar4 = 9;
      goto LAB_00a48c4f;
    }
    for (; *_Mode == ' '; _Mode = _Mode + 1) {
    }
    cVar1 = *_Mode;
    if (cVar1 != 'a') {
      uVar6 = uVar7;
      if (cVar1 == 'r') goto LAB_00a48ccc;
      if (cVar1 != 'w') goto LAB_00a48c44;
    }
    uVar6 = 2;
LAB_00a48ccc:
    bVar2 = false;
    bVar3 = false;
    uVar6 = uVar6 | DAT_032ebc64;
LAB_00a48d41:
    do {
      _Mode = _Mode + 1;
      cVar1 = *_Mode;
      if ((cVar1 == '\0') || (uVar7 == 0)) goto LAB_00a48d4b;
    } while (cVar1 == ' ');
    if (cVar1 == '+') {
      if (-1 < (char)uVar6) {
        uVar6 = uVar6 & 0xfffffffc | 0x80;
        goto LAB_00a48d41;
      }
    }
    else if (cVar1 == 'b') {
LAB_00a48d04:
      if (!bVar3) {
        bVar3 = true;
        goto LAB_00a48d41;
      }
    }
    else if (cVar1 == 'c') {
      if (!bVar2) {
        bVar2 = true;
        uVar6 = uVar6 | 0x4000;
        goto LAB_00a48d41;
      }
    }
    else {
      if (cVar1 != 'n') {
        if (cVar1 == 't') goto LAB_00a48d04;
        goto LAB_00a48c44;
      }
      if (!bVar2) {
        bVar2 = true;
        uVar6 = uVar6 & 0xffffbfff;
        goto LAB_00a48d41;
      }
    }
    uVar7 = 0;
    goto LAB_00a48d41;
  }
  goto LAB_00a48c44;
LAB_00a48d4b:
  for (; *_Mode == ' '; _Mode = _Mode + 1) {
  }
  if (*_Mode == '\0') {
    pFVar5 = __getstream();
    if (pFVar5 == (FILE *)0x0) {
      piVar4 = __errno();
      *piVar4 = 0x18;
      return (FILE *)0x0;
    }
    _DAT_032eb274 = _DAT_032eb274 + 1;
    pFVar5->_flag = uVar6;
    pFVar5->_file = _FileHandle;
    FUN_00a48da6();
    return pFVar5;
  }
LAB_00a48c44:
  piVar4 = __errno();
  *piVar4 = 0x16;
LAB_00a48c4f:
  __invalid_parameter(0,0,0,0,0);
  return (FILE *)0x0;
}



void FUN_00a48da6(void)

{
  FILE *unaff_ESI;
  
  __unlock_file(unaff_ESI);
  return;
}



// Library Function - Single Match
//  __fileno
// 
// Library: Visual Studio 2008 Release

int __cdecl __fileno(FILE *_File)

{
  int *piVar1;
  int iVar2;
  
  if (_File == (FILE *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    iVar2 = -1;
  }
  else {
    iVar2 = _File->_file;
  }
  return iVar2;
}



undefined4 FUN_00a48de0(LPCWSTR param_1,LPCWSTR param_2)

{
  BOOL BVar1;
  ulong uVar2;
  
  BVar1 = MoveFileW(param_1,param_2);
  if (BVar1 == 0) {
    uVar2 = GetLastError();
  }
  else {
    uVar2 = 0;
  }
  if (uVar2 != 0) {
    __dosmaperr(uVar2);
    return 0xffffffff;
  }
  return 0;
}



// Library Function - Single Match
//  __wgetdcwd_nolock
// 
// Library: Visual Studio 2008 Release

void __wgetdcwd_nolock(uint param_1,LPWSTR param_2,size_t param_3)

{
  int iVar1;
  ulong *puVar2;
  int *piVar3;
  DWORD DVar4;
  LPWSTR lpBuffer;
  LPWSTR local_18;
  DWORD local_14;
  WCHAR local_10;
  undefined2 local_e;
  undefined2 local_c;
  undefined2 local_a;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  if (param_1 != 0) {
    iVar1 = __validdrive(param_1);
    if (iVar1 != 0) goto LAB_00a48e6e;
    puVar2 = ___doserrno();
    *puVar2 = 0xf;
    piVar3 = __errno();
    *piVar3 = 0xd;
LAB_00a48e55:
    __invalid_parameter(0,0,0,0,0);
    goto LAB_00a48f50;
  }
  param_1 = __getdrive();
LAB_00a48e6e:
  if (param_2 == (LPWSTR)0x0) {
    local_14 = 0;
  }
  else {
    if ((int)param_3 < 1) {
      piVar3 = __errno();
      *piVar3 = 0x16;
      goto LAB_00a48e55;
    }
    local_14 = param_3;
    *param_2 = L'\0';
  }
  if (param_1 == 0) {
    local_10 = L'.';
    local_e = 0;
  }
  else {
    local_e = 0x3a;
    local_10 = (short)param_1 + L'@';
    local_c = 0x2e;
    local_a = 0;
  }
  DVar4 = GetFullPathNameW(&local_10,local_14,param_2,&local_18);
  if (DVar4 != 0) {
    if (param_2 != (LPWSTR)0x0) {
      if ((int)local_14 <= (int)DVar4) {
        piVar3 = __errno();
        *piVar3 = 0x22;
        *param_2 = L'\0';
      }
      goto LAB_00a48f50;
    }
    if ((int)param_3 < (int)DVar4) {
      param_3 = DVar4;
    }
    lpBuffer = (LPWSTR)_calloc(param_3,2);
    if (lpBuffer == (LPWSTR)0x0) {
      piVar3 = __errno();
      *piVar3 = 0xc;
      puVar2 = ___doserrno();
      *puVar2 = 8;
      goto LAB_00a48f50;
    }
    DVar4 = GetFullPathNameW(&local_10,param_3,lpBuffer,&local_18);
    if ((DVar4 != 0) && ((int)DVar4 < (int)param_3)) goto LAB_00a48f50;
  }
  DVar4 = GetLastError();
  __dosmaperr(DVar4);
LAB_00a48f50:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __wgetcwd
// 
// Library: Visual Studio 2008 Release

wchar_t * __cdecl __wgetcwd(wchar_t *_DstBuf,int _SizeInWords)

{
  wchar_t *pwVar1;
  
  __lock(7);
  pwVar1 = (wchar_t *)__wgetdcwd_nolock(0,_DstBuf,_SizeInWords);
  FUN_00a48f9f();
  return pwVar1;
}



void FUN_00a48f9f(void)

{
  FUN_00a4d824(7);
  return;
}



// Library Function - Single Match
//  _swap
// 
// Library: Visual Studio 2008 Release

void __fastcall _swap(undefined *param_1,int param_2)

{
  undefined uVar1;
  undefined *in_EAX;
  
  if ((in_EAX != param_1) && (param_2 != 0)) {
    do {
      uVar1 = *in_EAX;
      *in_EAX = *param_1;
      param_2 = param_2 + -1;
      *param_1 = uVar1;
      in_EAX = in_EAX + 1;
      param_1 = param_1 + 1;
    } while (param_2 != 0);
  }
  return;
}



// Library Function - Single Match
//  _shortsort
// 
// Library: Visual Studio 2008 Release

void _shortsort(undefined *param_1,int param_2,code *param_3)

{
  undefined uVar1;
  undefined *in_EAX;
  int iVar2;
  undefined *puVar3;
  undefined *puVar4;
  
  if (param_1 < in_EAX) {
    puVar3 = param_1 + param_2;
    puVar4 = param_1;
    do {
      for (; puVar3 <= in_EAX; puVar3 = puVar3 + param_2) {
        iVar2 = (*param_3)(puVar3,puVar4);
        if (0 < iVar2) {
          puVar4 = puVar3;
        }
      }
      if ((puVar4 != in_EAX) && (param_2 != 0)) {
        puVar3 = in_EAX;
        iVar2 = param_2;
        do {
          uVar1 = puVar3[(int)puVar4 - (int)in_EAX];
          puVar3[(int)puVar4 - (int)in_EAX] = *puVar3;
          iVar2 = iVar2 + -1;
          *puVar3 = uVar1;
          puVar3 = puVar3 + 1;
        } while (iVar2 != 0);
      }
      in_EAX = in_EAX + -param_2;
      puVar3 = param_1 + param_2;
      puVar4 = param_1;
    } while (param_1 < in_EAX);
  }
  return;
}



// Library Function - Single Match
//  _qsort
// 
// Library: Visual Studio 2008 Release

void __cdecl
_qsort(void *_Base,size_t _NumOfElements,size_t _SizeOfElements,_PtFuncCompare *_PtFuncCompare)

{
  undefined uVar1;
  int *piVar2;
  uint uVar3;
  undefined *puVar4;
  int iVar5;
  undefined *puVar6;
  undefined *puVar7;
  undefined *puVar8;
  undefined4 auStack_104 [30];
  undefined4 auStack_8c [30];
  size_t local_14;
  int local_10;
  undefined *local_c;
  undefined *local_8;
  
  if ((_Base == (void *)0x0) && (_NumOfElements != 0)) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return;
  }
  if ((_SizeOfElements == 0) || (_PtFuncCompare == (_PtFuncCompare *)0x0)) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else if (1 < _NumOfElements) {
    local_10 = 0;
    local_8 = (undefined *)_Base;
    local_c = (undefined *)((_NumOfElements - 1) * _SizeOfElements + (int)_Base);
LAB_00a490f8:
    while (puVar7 = local_8, puVar8 = local_c,
          uVar3 = (uint)((int)local_c - (int)local_8) / _SizeOfElements + 1, 8 < uVar3) {
      puVar4 = local_8 + (uVar3 >> 1) * _SizeOfElements;
      iVar5 = (*_PtFuncCompare)(local_8,puVar4);
      if (0 < iVar5) {
        _swap();
      }
      iVar5 = (*_PtFuncCompare)(puVar7,puVar8);
      if (0 < iVar5) {
        _swap();
      }
      iVar5 = (*_PtFuncCompare)(puVar4,puVar8);
      if (0 < iVar5) {
        _swap();
      }
LAB_00a49170:
      if (puVar7 < puVar4) {
        do {
          puVar7 = puVar7 + _SizeOfElements;
          if (puVar4 <= puVar7) goto LAB_00a49190;
          iVar5 = (*_PtFuncCompare)(puVar7,puVar4);
        } while (iVar5 < 1);
        if (puVar4 <= puVar7) goto LAB_00a49190;
      }
      else {
LAB_00a49190:
        do {
          puVar7 = puVar7 + _SizeOfElements;
          if (local_c < puVar7) break;
          iVar5 = (*_PtFuncCompare)(puVar7,puVar4);
        } while (iVar5 < 1);
      }
      do {
        puVar8 = puVar8 + -_SizeOfElements;
        if (puVar8 <= puVar4) break;
        iVar5 = (*_PtFuncCompare)(puVar8,puVar4);
      } while (0 < iVar5);
      if (puVar7 <= puVar8) {
        if (puVar7 != puVar8) {
          puVar6 = puVar8;
          local_14 = _SizeOfElements;
          do {
            local_14 = local_14 - 1;
            uVar1 = puVar6[(int)puVar7 - (int)puVar8];
            puVar6[(int)puVar7 - (int)puVar8] = *puVar6;
            *puVar6 = uVar1;
            puVar6 = puVar6 + 1;
          } while (local_14 != 0);
        }
        if (puVar4 == puVar8) {
          puVar4 = puVar7;
        }
        goto LAB_00a49170;
      }
      puVar8 = puVar8 + _SizeOfElements;
      if (puVar4 < puVar8) {
        do {
          puVar8 = puVar8 + -_SizeOfElements;
          if (puVar8 <= puVar4) goto LAB_00a49210;
          iVar5 = (*_PtFuncCompare)(puVar8,puVar4);
        } while (iVar5 == 0);
        if (puVar8 <= puVar4) goto LAB_00a49210;
      }
      else {
LAB_00a49210:
        do {
          puVar8 = puVar8 + -_SizeOfElements;
          if (puVar8 <= local_8) break;
          iVar5 = (*_PtFuncCompare)(puVar8,puVar4);
        } while (iVar5 == 0);
      }
      puVar6 = local_8;
      puVar4 = local_c;
      if ((int)puVar8 - (int)local_8 < (int)local_c - (int)puVar7) goto LAB_00a49263;
      if (local_8 < puVar8) {
        auStack_8c[local_10] = local_8;
        auStack_104[local_10] = puVar8;
        local_10 = local_10 + 1;
      }
      local_8 = puVar7;
      if (puVar4 <= puVar7) goto LAB_00a49291;
    }
    _shortsort(local_8,_SizeOfElements,_PtFuncCompare);
    goto LAB_00a49291;
  }
  return;
LAB_00a49263:
  if (puVar7 < local_c) {
    auStack_8c[local_10] = puVar7;
    auStack_104[local_10] = local_c;
    local_10 = local_10 + 1;
  }
  local_c = puVar8;
  if (puVar8 <= puVar6) {
LAB_00a49291:
    local_10 = local_10 + -1;
    if (local_10 < 0) {
      return;
    }
    local_c = (undefined *)auStack_104[local_10];
    local_8 = (undefined *)auStack_8c[local_10];
  }
  goto LAB_00a490f8;
}



void * FUN_00a492bd(void *param_1)

{
  void *pvVar1;
  _ptiddata p_Var2;
  
  p_Var2 = __getptd();
  pvVar1 = p_Var2->_translator;
  p_Var2 = __getptd();
  p_Var2->_translator = param_1;
  return pvVar1;
}



// Library Function - Single Match
//  __except_handler4
// 
// Library: Visual Studio 2008 Release

undefined4 __except_handler4(int *param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  BOOL BVar2;
  int iVar3;
  int *piVar4;
  int *local_1c;
  undefined4 local_18;
  int *local_14;
  undefined4 local_10;
  int local_c;
  char local_5;
  
  piVar4 = (int *)(*(uint *)(param_2 + 8) ^ DAT_0323f878);
  local_5 = '\0';
  local_10 = 1;
  if (*piVar4 != -2) {
    ___security_check_cookie_4();
  }
  ___security_check_cookie_4();
  iVar3 = param_2;
  if ((*(byte *)(param_1 + 1) & 0x66) == 0) {
    *(int ***)(param_2 + -4) = &local_1c;
    iVar3 = *(int *)(param_2 + 0xc);
    local_1c = param_1;
    local_18 = param_3;
    if (iVar3 == -2) {
      return local_10;
    }
    do {
      local_14 = piVar4 + iVar3 * 3 + 4;
      local_c = *local_14;
      if (piVar4[iVar3 * 3 + 5] != 0) {
        iVar1 = __EH4_CallFilterFunc_8();
        local_5 = '\x01';
        if (iVar1 < 0) {
          local_10 = 0;
          goto LAB_00a49398;
        }
        if (0 < iVar1) {
          if ((*param_1 == -0x1f928c9d) &&
             (BVar2 = __IsNonwritableInCurrentImage((PBYTE)&PTR____DestructExceptionObject_00da1550)
             , BVar2 != 0)) {
            ___DestructExceptionObject(param_1,1);
          }
          __EH4_GlobalUnwind_4();
          if (*(int *)(param_2 + 0xc) != iVar3) {
            __EH4_LocalUnwind_16(param_2 + 0x10,&DAT_0323f878);
          }
          *(int *)(param_2 + 0xc) = local_c;
          if (*piVar4 != -2) {
            ___security_check_cookie_4();
          }
          ___security_check_cookie_4();
          __EH4_TransferToHandler_8();
          goto LAB_00a4945c;
        }
      }
      iVar3 = local_c;
    } while (local_c != -2);
    if (local_5 == '\0') {
      return local_10;
    }
  }
  else {
LAB_00a4945c:
    if (*(int *)(iVar3 + 0xc) == -2) {
      return local_10;
    }
    __EH4_LocalUnwind_16(param_2 + 0x10,&DAT_0323f878);
  }
LAB_00a49398:
  if (*piVar4 != -2) {
    ___security_check_cookie_4();
  }
  ___security_check_cookie_4();
  return local_10;
}



// Library Function - Single Match
//  __make__time64_t
// 
// Library: Visual Studio 2008 Release

longlong __make__time64_t(int param_1)

{
  int *in_EAX;
  int *piVar1;
  uint uVar2;
  errno_t eVar3;
  int iVar4;
  tm *ptVar5;
  bool bVar6;
  longlong lVar7;
  undefined8 uVar8;
  longlong lVar9;
  tm local_4c;
  int local_28;
  int local_24;
  uint local_20;
  int local_1c;
  undefined8 local_18;
  int local_10;
  uint local_c;
  uint local_8;
  
  local_c = 0;
  local_8 = 0;
  if (in_EAX == (int *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return -1;
  }
  local_18._0_4_ = in_EAX[5];
  local_18._4_4_ = (int)(uint)local_18 >> 0x1f;
  lVar7 = (longlong)(int)(uint)local_18;
  if ((local_18._4_4_ + -1 + (uint)(0x44 < (uint)local_18) == 0) &&
     (lVar7 = (longlong)(int)(uint)local_18, (uint)local_18 - 0x45 < 0x409)) {
    iVar4 = in_EAX[4];
    if ((iVar4 < 0) || (0xb < iVar4)) {
      uVar2 = iVar4 / 0xc;
      iVar4 = iVar4 % 0xc;
      bVar6 = CARRY4((uint)local_18,uVar2);
      local_18._0_4_ = (uint)local_18 + uVar2;
      in_EAX[4] = iVar4;
      local_18._4_4_ = local_18._4_4_ + ((int)uVar2 >> 0x1f) + (uint)bVar6;
      if (iVar4 < 0) {
        bVar6 = (uint)local_18 != 0;
        local_18._0_4_ = (uint)local_18 - 1;
        in_EAX[4] = iVar4 + 0xc;
        local_18._4_4_ = local_18._4_4_ + -1 + (uint)bVar6;
      }
      lVar7 = CONCAT44(local_18._4_4_,(uint)local_18);
      if ((local_18._4_4_ + -1 + (uint)(0x44 < (uint)local_18) != 0) ||
         (lVar7 = CONCAT44(local_18._4_4_,(uint)local_18), 0x408 < (uint)local_18 - 0x45))
      goto LAB_00a4971c;
    }
    iVar4 = in_EAX[4];
    local_20 = (&DAT_03240728)[iVar4];
    local_1c = (int)local_20 >> 0x1f;
    lVar7 = __allrem((uint)local_18,local_18._4_4_,4,0);
    if ((((lVar7 == 0) && (lVar7 = __allrem((uint)local_18,local_18._4_4_,100,0), lVar7 != 0)) ||
        (lVar7 = __allrem((uint)local_18 + 0x76c,
                          local_18._4_4_ + (uint)(0xfffff893 < (uint)local_18),400,0), lVar7 == 0))
       && (1 < iVar4)) {
      bVar6 = 0xfffffffe < local_20;
      local_20 = local_20 + 1;
      local_1c = local_1c + (uint)bVar6;
    }
    iVar4 = (uint)local_18 - 1;
    local_24 = local_18._4_4_ - (uint)((uint)local_18 == 0);
    local_28 = iVar4;
    lVar7 = __alldiv((uint)local_18 + 299,local_18._4_4_ + (uint)(0xfffffed4 < (uint)local_18),400,0
                    );
    uVar2 = (uint)(lVar7 + in_EAX[3]);
    local_10 = (int)((ulonglong)(lVar7 + in_EAX[3]) >> 0x20);
    uVar8 = __alldiv(iVar4,local_24,100,0);
    local_10 = (local_10 - (int)((ulonglong)uVar8 >> 0x20)) - (uint)(uVar2 < (uint)uVar8);
    lVar7 = __alldiv(iVar4,local_24,4,0);
    lVar7 = lVar7 + CONCAT44(local_10,uVar2 - (uint)uVar8);
    local_10 = (int)((ulonglong)lVar7 >> 0x20);
    lVar9 = __allmul((uint)local_18,local_18._4_4_,0x16d,0);
    lVar7 = lVar9 + CONCAT44(local_10,(int)lVar7) + CONCAT44(local_1c,local_20);
    uVar2 = (uint)lVar7;
    lVar7 = __allmul(uVar2 - 0x63df,(int)((ulonglong)lVar7 >> 0x20) - (uint)(uVar2 < 0x63df),0x18,0)
    ;
    lVar7 = __allmul(lVar7 + in_EAX[2],0x3c,0);
    local_18 = __allmul(lVar7 + in_EAX[1],0x3c,0);
    local_18 = local_18 + *in_EAX;
    if (param_1 == 0) {
      iVar4 = __gmtime64_s(&local_4c,&local_18);
LAB_00a49706:
      lVar7 = local_18;
      if (iVar4 != 0) goto LAB_00a4971c;
    }
    else {
      ___tzset();
      eVar3 = __get_dstbias((long *)&local_c);
      if (eVar3 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      eVar3 = __get_timezone((long *)&local_8);
      if (eVar3 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      local_18 = local_18 + (int)local_8;
      eVar3 = __localtime64_s(&local_4c,&local_18);
      lVar7 = local_18;
      if (eVar3 != 0) goto LAB_00a4971c;
      if ((0 < in_EAX[8]) || ((in_EAX[8] < 0 && (0 < local_4c.tm_isdst)))) {
        local_18 = local_18 + (int)local_c;
        iVar4 = __localtime64_s(&local_4c,&local_18);
        goto LAB_00a49706;
      }
    }
    ptVar5 = &local_4c;
    for (iVar4 = 9; iVar4 != 0; iVar4 = iVar4 + -1) {
      *in_EAX = ptVar5->tm_sec;
      ptVar5 = (tm *)&ptVar5->tm_min;
      in_EAX = in_EAX + 1;
    }
  }
  else {
LAB_00a4971c:
    local_18 = lVar7;
    piVar1 = __errno();
    *piVar1 = 0x16;
    local_18 = -1;
  }
  return local_18;
}



// Library Function - Single Match
//  __mktime64
// 
// Library: Visual Studio 2008 Release

__time64_t __cdecl __mktime64(tm *_Tm)

{
  __time64_t _Var1;
  
  _Var1 = __make__time64_t(1);
  return _Var1;
}



ulonglong __fastcall FUN_00a49750(undefined4 param_1,undefined4 param_2)

{
  ulonglong uVar1;
  uint uVar2;
  float fVar3;
  float10 in_ST0;
  uint uStack_20;
  float fStack_1c;
  
  if (DAT_032f16e0 == 0) {
    uVar1 = (ulonglong)ROUND(in_ST0);
    uStack_20 = (uint)uVar1;
    fStack_1c = (float)(uVar1 >> 0x20);
    fVar3 = (float)in_ST0;
    if ((uStack_20 != 0) || (fVar3 = fStack_1c, (uVar1 & 0x7fffffff00000000) != 0)) {
      if ((int)fVar3 < 0) {
        uVar1 = uVar1 + (0x80000000 < ((uint)(float)(in_ST0 - (float10)uVar1) ^ 0x80000000));
      }
      else {
        uVar2 = (uint)(0x80000000 < (uint)(float)(in_ST0 - (float10)uVar1));
        uVar1 = CONCAT44((int)fStack_1c - (uint)(uStack_20 < uVar2),uStack_20 - uVar2);
      }
    }
    return uVar1;
  }
  return CONCAT44(param_2,(int)in_ST0);
}



ulonglong FUN_00a49786(void)

{
  ulonglong uVar1;
  uint uVar2;
  float fVar3;
  float10 in_ST0;
  uint local_20;
  float fStack_1c;
  
  uVar1 = (ulonglong)ROUND(in_ST0);
  local_20 = (uint)uVar1;
  fStack_1c = (float)(uVar1 >> 0x20);
  fVar3 = (float)in_ST0;
  if ((local_20 != 0) || (fVar3 = fStack_1c, (uVar1 & 0x7fffffff00000000) != 0)) {
    if ((int)fVar3 < 0) {
      uVar1 = uVar1 + (0x80000000 < ((uint)(float)(in_ST0 - (float10)uVar1) ^ 0x80000000));
    }
    else {
      uVar2 = (uint)(0x80000000 < (uint)(float)(in_ST0 - (float10)uVar1));
      uVar1 = CONCAT44((int)fStack_1c - (uint)(local_20 < uVar2),local_20 - uVar2);
    }
  }
  return uVar1;
}



// WARNING: Function: __alloca_probe_16 replaced with injection: alloca_probe
// Library Function - Single Match
//  unsigned int __cdecl _wcsftime_l_stat(wchar_t *,unsigned int,wchar_t const *,struct tm const
// *,struct localeinfo_struct *)
// 
// Library: Visual Studio 2008 Release

uint __cdecl
_wcsftime_l_stat(wchar_t *param_1,uint param_2,wchar_t *param_3,tm *param_4,
                localeinfo_struct *param_5)

{
  uint uVar1;
  size_t _DstSizeInBytes;
  int *piVar2;
  undefined4 *puVar3;
  errno_t eVar4;
  int iVar5;
  uint uVar6;
  undefined4 *local_14;
  undefined4 *local_10;
  uint local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_c = 0;
  if ((param_1 != (wchar_t *)0x0) && (param_2 != 0)) {
    if (param_2 != 0) {
      *param_1 = L'\0';
    }
    if (param_3 != (wchar_t *)0x0) {
      uVar6 = FUN_00a51355(param_3);
      if (param_2 - 1 < 0x7ffffff0) {
        uVar1 = param_2 * 2 + 8;
        if (uVar1 < 0x401) {
          puVar3 = (undefined4 *)&stack0xffffffe0;
          local_14 = (undefined4 *)&stack0xffffffe0;
          if (&stack0x00000000 != (undefined *)0x20) {
LAB_00a49898:
            local_14 = puVar3 + 2;
          }
        }
        else {
          puVar3 = (undefined4 *)_malloc(uVar1);
          local_14 = puVar3;
          if (puVar3 != (undefined4 *)0x0) {
            *puVar3 = 0xdddd;
            goto LAB_00a49898;
          }
        }
      }
      else {
        local_14 = (undefined4 *)0x0;
      }
      if (local_14 == (undefined4 *)0x0) goto LAB_00a499bf;
      if (uVar6 < 0x7ffffff0) {
        uVar1 = uVar6 + 9 + uVar6 + 1;
        if (uVar1 < 0x401) {
          puVar3 = (undefined4 *)&stack0xffffffe0;
          local_10 = (undefined4 *)&stack0xffffffe0;
          if (&stack0x00000000 != (undefined *)0x20) {
LAB_00a498de:
            local_10 = puVar3 + 2;
          }
        }
        else {
          puVar3 = (undefined4 *)_malloc(uVar1);
          local_10 = puVar3;
          if (puVar3 != (undefined4 *)0x0) {
            *puVar3 = 0xdddd;
            goto LAB_00a498de;
          }
        }
      }
      else {
        local_10 = (undefined4 *)0x0;
      }
      if (local_10 != (undefined4 *)0x0) {
        _DstSizeInBytes = (uVar6 + 1) * 2;
        eVar4 = __wcstombs_s_l((size_t *)0x0,(char *)local_10,_DstSizeInBytes,param_3,
                               _DstSizeInBytes - 1,param_5);
        if (eVar4 == 0) {
          iVar5 = __Strftime_l(local_14,param_2 * 2,local_10,param_4,0,param_5);
          if (iVar5 == 0) {
            local_c = 0;
          }
          else {
            eVar4 = __mbstowcs_s_l(&local_c,param_1,param_2,(char *)local_14,0xffffffff,param_5);
            if (eVar4 != 0) {
              if ((eVar4 == 0x16) || (eVar4 == 0x22)) {
                    // WARNING: Subroutine does not return
                __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
              }
              if (param_2 <= local_c) {
                piVar2 = __errno();
                *piVar2 = 0x22;
              }
              local_c = 0;
            }
            if (local_c != 0) {
              local_c = local_c - 1;
            }
          }
        }
        else if ((eVar4 == 0x16) || (eVar4 == 0x22)) {
                    // WARNING: Subroutine does not return
          __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
        }
        __freea(local_10);
      }
      __freea(local_14);
      if (local_c == 0) {
        *param_1 = L'\0';
      }
      goto LAB_00a499bf;
    }
  }
  piVar2 = __errno();
  *piVar2 = 0x16;
  __invalid_parameter(0,0,0,0,0);
LAB_00a499bf:
  uVar6 = ___security_check_cookie_4();
  return uVar6;
}



// Library Function - Single Match
//  __wcsftime_l
// 
// Library: Visual Studio 2008 Release

size_t __cdecl
__wcsftime_l(wchar_t *_Buf,size_t _SizeInWords,wchar_t *_Format,tm *_Tm,_locale_t _Locale)

{
  uint uVar1;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
  uVar1 = _wcsftime_l_stat(_Buf,_SizeInWords,_Format,_Tm,&local_14);
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return uVar1;
}



// Library Function - Single Match
//  _wcsftime
// 
// Library: Visual Studio 2008 Release

size_t __cdecl _wcsftime(wchar_t *_Buf,size_t _SizeInWords,wchar_t *_Format,tm *_Tm)

{
  size_t sVar1;
  
  sVar1 = __wcsftime_l(_Buf,_SizeInWords,_Format,_Tm,(_locale_t)0x0);
  return sVar1;
}



// Library Function - Single Match
//  _wcschr
// 
// Library: Visual Studio 2008 Release

wchar_t * __cdecl _wcschr(wchar_t *_Str,wchar_t _Ch)

{
  while( true ) {
    if (*_Str == L'\0') {
      if (*_Str != _Ch) {
        _Str = (wchar_t *)0x0;
      }
      return _Str;
    }
    if (*_Str == _Ch) break;
    _Str = _Str + 1;
  }
  return _Str;
}



// Library Function - Single Match
//  _feof
// 
// Library: Visual Studio 2008 Release

int __cdecl _feof(FILE *_File)

{
  int *piVar1;
  uint uVar2;
  
  if (_File == (FILE *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    uVar2 = 0;
  }
  else {
    uVar2 = _File->_flag & 0x10;
  }
  return uVar2;
}



// Library Function - Single Match
//  _ferror
// 
// Library: Visual Studio 2008 Release

int __cdecl _ferror(FILE *_File)

{
  int *piVar1;
  uint uVar2;
  
  if (_File == (FILE *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    uVar2 = 0;
  }
  else {
    uVar2 = _File->_flag & 0x20;
  }
  return uVar2;
}



// Library Function - Single Match
//  __close_nolock
// 
// Library: Visual Studio 2008 Release

int __cdecl __close_nolock(int _FileHandle)

{
  intptr_t iVar1;
  intptr_t iVar2;
  HANDLE hObject;
  BOOL BVar3;
  DWORD DVar4;
  int iVar5;
  
  iVar1 = __get_osfhandle(_FileHandle);
  if (iVar1 != -1) {
    if (((_FileHandle == 1) && ((*(byte *)(DAT_032f1700 + 0x84) & 1) != 0)) ||
       ((_FileHandle == 2 && ((*(byte *)(DAT_032f1700 + 0x44) & 1) != 0)))) {
      iVar1 = __get_osfhandle(2);
      iVar2 = __get_osfhandle(1);
      if (iVar2 == iVar1) goto LAB_00a49b1c;
    }
    hObject = (HANDLE)__get_osfhandle(_FileHandle);
    BVar3 = CloseHandle(hObject);
    if (BVar3 == 0) {
      DVar4 = GetLastError();
      goto LAB_00a49b1e;
    }
  }
LAB_00a49b1c:
  DVar4 = 0;
LAB_00a49b1e:
  __free_osfhnd(_FileHandle);
  *(undefined *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + (_FileHandle & 0x1fU) * 0x40) = 0;
  if (DVar4 == 0) {
    iVar5 = 0;
  }
  else {
    __dosmaperr(DVar4);
    iVar5 = -1;
  }
  return iVar5;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __close
// 
// Library: Visual Studio 2008 Release

int __cdecl __close(int _FileHandle)

{
  ulong *puVar1;
  int *piVar2;
  int iVar3;
  int local_20;
  
  if (_FileHandle == -2) {
    puVar1 = ___doserrno();
    *puVar1 = 0;
    piVar2 = __errno();
    *piVar2 = 9;
  }
  else {
    if ((-1 < _FileHandle) && ((uint)_FileHandle < DAT_032f16e4)) {
      iVar3 = (_FileHandle & 0x1fU) * 0x40;
      if ((*(byte *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + iVar3) & 1) != 0) {
        ___lock_fhandle(_FileHandle);
        if ((*(byte *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + iVar3) & 1) == 0) {
          piVar2 = __errno();
          *piVar2 = 9;
          local_20 = -1;
        }
        else {
          local_20 = __close_nolock(_FileHandle);
        }
        FUN_00a49c15();
        return local_20;
      }
    }
    puVar1 = ___doserrno();
    *puVar1 = 0;
    piVar2 = __errno();
    *piVar2 = 9;
    __invalid_parameter(0,0,0,0,0);
  }
  return -1;
}



void FUN_00a49c15(void)

{
  int unaff_EBP;
  
  __unlock_fhandle(*(int *)(unaff_EBP + 8));
  return;
}



// Library Function - Single Match
//  __read_nolock
// 
// Library: Visual Studio 2008 Release

int __cdecl __read_nolock(int _FileHandle,void *_DstBuf,uint _MaxCharCount)

{
  byte *pbVar1;
  uint uVar2;
  byte bVar3;
  char cVar4;
  ulong *puVar5;
  int *piVar6;
  uint uVar7;
  short *psVar8;
  BOOL BVar9;
  DWORD DVar10;
  ulong uVar11;
  short *psVar12;
  int iVar13;
  int iVar14;
  int unaff_EDI;
  bool bVar15;
  longlong lVar16;
  short sVar17;
  uint local_1c;
  int local_18;
  short *local_14;
  short *local_10;
  undefined2 local_c;
  char local_6;
  char local_5;
  
  uVar2 = _MaxCharCount;
  local_18 = -2;
  if (_FileHandle == -2) {
    puVar5 = ___doserrno();
    *puVar5 = 0;
    piVar6 = __errno();
    *piVar6 = 9;
    return -1;
  }
  if ((_FileHandle < 0) || (DAT_032f16e4 <= (uint)_FileHandle)) {
    puVar5 = ___doserrno();
    *puVar5 = 0;
    piVar6 = __errno();
    *piVar6 = 9;
    __invalid_parameter(0,0,0,0,0);
    return -1;
  }
  piVar6 = &DAT_032f1700 + (_FileHandle >> 5);
  iVar14 = (_FileHandle & 0x1fU) * 0x40;
  bVar3 = *(byte *)(*piVar6 + iVar14 + 4);
  if ((bVar3 & 1) == 0) {
    puVar5 = ___doserrno();
    *puVar5 = 0;
    piVar6 = __errno();
    *piVar6 = 9;
    goto LAB_00a49d29;
  }
  if (_MaxCharCount < 0x80000000) {
    local_14 = (short *)0x0;
    if ((_MaxCharCount == 0) || ((bVar3 & 2) != 0)) {
      return 0;
    }
    if (_DstBuf != (void *)0x0) {
      local_6 = (char)(*(char *)(*piVar6 + iVar14 + 0x24) * '\x02') >> 1;
      if (local_6 == '\x01') {
        if ((~_MaxCharCount & 1) == 0) goto LAB_00a49d17;
        uVar7 = _MaxCharCount >> 1;
        _MaxCharCount = 4;
        if (3 < uVar7) {
          _MaxCharCount = uVar7;
        }
        local_10 = (short *)__malloc_crt(_MaxCharCount);
        if (local_10 == (short *)0x0) {
          piVar6 = __errno();
          *piVar6 = 0xc;
          puVar5 = ___doserrno();
          *puVar5 = 8;
          return -1;
        }
        lVar16 = __lseeki64_nolock(_FileHandle,0x100000000,unaff_EDI);
        iVar13 = *piVar6;
        *(int *)(iVar14 + 0x28 + iVar13) = (int)lVar16;
        *(int *)(iVar14 + 0x2c + iVar13) = (int)((ulonglong)lVar16 >> 0x20);
      }
      else {
        if (local_6 == '\x02') {
          if ((~_MaxCharCount & 1) == 0) goto LAB_00a49d17;
          _MaxCharCount = _MaxCharCount & 0xfffffffe;
        }
        local_10 = (short *)_DstBuf;
      }
      psVar8 = local_10;
      uVar7 = _MaxCharCount;
      if ((((*(byte *)(*piVar6 + iVar14 + 4) & 0x48) != 0) &&
          (cVar4 = *(char *)(*piVar6 + iVar14 + 5), cVar4 != '\n')) && (_MaxCharCount != 0)) {
        *(char *)local_10 = cVar4;
        psVar8 = (short *)((int)local_10 + 1);
        uVar7 = _MaxCharCount - 1;
        local_14 = (short *)0x1;
        *(undefined *)(iVar14 + 5 + *piVar6) = 10;
        if (((local_6 != '\0') && (cVar4 = *(char *)(iVar14 + 0x25 + *piVar6), cVar4 != '\n')) &&
           (uVar7 != 0)) {
          *(char *)psVar8 = cVar4;
          psVar8 = local_10 + 1;
          uVar7 = _MaxCharCount - 2;
          local_14 = (short *)0x2;
          *(undefined *)(iVar14 + 0x25 + *piVar6) = 10;
          if (((local_6 == '\x01') && (cVar4 = *(char *)(iVar14 + 0x26 + *piVar6), cVar4 != '\n'))
             && (uVar7 != 0)) {
            *(char *)psVar8 = cVar4;
            psVar8 = (short *)((int)local_10 + 3);
            local_14 = (short *)0x3;
            *(undefined *)(iVar14 + 0x26 + *piVar6) = 10;
            uVar7 = _MaxCharCount - 3;
          }
        }
      }
      _MaxCharCount = uVar7;
      BVar9 = ReadFile(*(HANDLE *)(iVar14 + *piVar6),psVar8,_MaxCharCount,&local_1c,
                       (LPOVERLAPPED)0x0);
      if (((BVar9 == 0) || ((int)local_1c < 0)) || (_MaxCharCount < local_1c)) {
        uVar11 = GetLastError();
        if (uVar11 != 5) {
          if (uVar11 == 0x6d) {
            local_18 = 0;
            goto LAB_00a4a036;
          }
          goto LAB_00a4a02b;
        }
        piVar6 = __errno();
        *piVar6 = 9;
        puVar5 = ___doserrno();
        *puVar5 = 5;
      }
      else {
        local_14 = (short *)((int)local_14 + local_1c);
        pbVar1 = (byte *)(iVar14 + 4 + *piVar6);
        if ((*pbVar1 & 0x80) == 0) goto LAB_00a4a036;
        if (local_6 == '\x02') {
          if ((local_1c == 0) || (*local_10 != 10)) {
            *pbVar1 = *pbVar1 & 0xfb;
          }
          else {
            *pbVar1 = *pbVar1 | 4;
          }
          local_14 = (short *)((int)local_14 + (int)local_10);
          _MaxCharCount = (uint)local_10;
          psVar8 = local_10;
          if (local_10 < local_14) {
            do {
              sVar17 = *(short *)_MaxCharCount;
              if (sVar17 == 0x1a) {
                pbVar1 = (byte *)(iVar14 + 4 + *piVar6);
                if ((*pbVar1 & 0x40) == 0) {
                  *pbVar1 = *pbVar1 | 2;
                }
                else {
                  *psVar8 = *(short *)_MaxCharCount;
                  psVar8 = psVar8 + 1;
                }
                break;
              }
              if (sVar17 == 0xd) {
                if (_MaxCharCount < local_14 + -1) {
                  if (*(short *)(_MaxCharCount + 2) == 10) {
                    uVar2 = _MaxCharCount + 4;
                    goto LAB_00a4a0d9;
                  }
LAB_00a4a16c:
                  _MaxCharCount = _MaxCharCount + 2;
                  sVar17 = 0xd;
LAB_00a4a16e:
                  *psVar8 = sVar17;
                }
                else {
                  uVar2 = _MaxCharCount + 2;
                  BVar9 = ReadFile(*(HANDLE *)(iVar14 + *piVar6),&local_c,2,&local_1c,
                                   (LPOVERLAPPED)0x0);
                  if (((BVar9 == 0) && (DVar10 = GetLastError(), DVar10 != 0)) || (local_1c == 0))
                  goto LAB_00a4a16c;
                  if ((*(byte *)(iVar14 + 4 + *piVar6) & 0x48) == 0) {
                    if ((psVar8 == local_10) && (local_c == 10)) goto LAB_00a4a0d9;
                    __lseeki64_nolock(_FileHandle,0x1ffffffff,unaff_EDI);
                    if (local_c == 10) goto LAB_00a4a174;
                    goto LAB_00a4a16c;
                  }
                  if (local_c == 10) {
LAB_00a4a0d9:
                    _MaxCharCount = uVar2;
                    sVar17 = 10;
                    goto LAB_00a4a16e;
                  }
                  *psVar8 = 0xd;
                  *(undefined *)(iVar14 + 5 + *piVar6) = (undefined)local_c;
                  *(undefined *)(iVar14 + 0x25 + *piVar6) = local_c._1_1_;
                  *(undefined *)(iVar14 + 0x26 + *piVar6) = 10;
                  _MaxCharCount = uVar2;
                }
                psVar8 = psVar8 + 1;
                uVar2 = _MaxCharCount;
              }
              else {
                *psVar8 = sVar17;
                psVar8 = psVar8 + 1;
                uVar2 = _MaxCharCount + 2;
              }
LAB_00a4a174:
              _MaxCharCount = uVar2;
            } while (_MaxCharCount < local_14);
          }
          local_14 = (short *)((int)psVar8 - (int)local_10);
          goto LAB_00a4a036;
        }
        if ((local_1c == 0) || (*(char *)local_10 != '\n')) {
          *pbVar1 = *pbVar1 & 0xfb;
        }
        else {
          *pbVar1 = *pbVar1 | 4;
        }
        local_14 = (short *)((int)local_14 + (int)local_10);
        _MaxCharCount = (uint)local_10;
        psVar8 = local_10;
        if (local_10 < local_14) {
          do {
            cVar4 = *(char *)_MaxCharCount;
            if (cVar4 == '\x1a') {
              pbVar1 = (byte *)(iVar14 + 4 + *piVar6);
              if ((*pbVar1 & 0x40) == 0) {
                *pbVar1 = *pbVar1 | 2;
              }
              else {
                *(undefined *)psVar8 = *(undefined *)_MaxCharCount;
                psVar8 = (short *)((int)psVar8 + 1);
              }
              break;
            }
            if (cVar4 == '\r') {
              if (_MaxCharCount < (undefined *)((int)local_14 + -1)) {
                if (*(char *)(_MaxCharCount + 1) == '\n') {
                  uVar7 = _MaxCharCount + 2;
                  goto LAB_00a49eb6;
                }
LAB_00a49f2d:
                _MaxCharCount = _MaxCharCount + 1;
                *(undefined *)psVar8 = 0xd;
              }
              else {
                uVar7 = _MaxCharCount + 1;
                BVar9 = ReadFile(*(HANDLE *)(iVar14 + *piVar6),&local_5,1,&local_1c,
                                 (LPOVERLAPPED)0x0);
                if (((BVar9 == 0) && (DVar10 = GetLastError(), DVar10 != 0)) || (local_1c == 0))
                goto LAB_00a49f2d;
                if ((*(byte *)(iVar14 + 4 + *piVar6) & 0x48) == 0) {
                  if ((psVar8 == local_10) && (local_5 == '\n')) goto LAB_00a49eb6;
                  __lseeki64_nolock(_FileHandle,0x1ffffffff,unaff_EDI);
                  if (local_5 == '\n') goto LAB_00a49f31;
                  goto LAB_00a49f2d;
                }
                if (local_5 == '\n') {
LAB_00a49eb6:
                  _MaxCharCount = uVar7;
                  *(undefined *)psVar8 = 10;
                }
                else {
                  *(undefined *)psVar8 = 0xd;
                  *(char *)(iVar14 + 5 + *piVar6) = local_5;
                  _MaxCharCount = uVar7;
                }
              }
              psVar8 = (short *)((int)psVar8 + 1);
              uVar7 = _MaxCharCount;
            }
            else {
              *(char *)psVar8 = cVar4;
              psVar8 = (short *)((int)psVar8 + 1);
              uVar7 = _MaxCharCount + 1;
            }
LAB_00a49f31:
            _MaxCharCount = uVar7;
          } while (_MaxCharCount < local_14);
        }
        local_14 = (short *)((int)psVar8 - (int)local_10);
        if ((local_6 != '\x01') || (local_14 == (short *)0x0)) goto LAB_00a4a036;
        bVar3 = *(byte *)(short *)((int)psVar8 + -1);
        if ((char)bVar3 < '\0') {
          iVar13 = 1;
          psVar8 = (short *)((int)psVar8 + -1);
          while ((((&DAT_0323fca0)[bVar3] == '\0' && (iVar13 < 5)) && (local_10 <= psVar8))) {
            psVar8 = (short *)((int)psVar8 + -1);
            bVar3 = *(byte *)psVar8;
            iVar13 = iVar13 + 1;
          }
          if ((char)(&DAT_0323fca0)[*(byte *)psVar8] == 0) {
            piVar6 = __errno();
            *piVar6 = 0x2a;
            goto LAB_00a4a032;
          }
          if ((char)(&DAT_0323fca0)[*(byte *)psVar8] + 1 == iVar13) {
            psVar8 = (short *)((int)psVar8 + iVar13);
          }
          else if ((*(byte *)(*piVar6 + iVar14 + 4) & 0x48) == 0) {
            __lseeki64_nolock(_FileHandle,CONCAT44(1,-iVar13 >> 0x1f),unaff_EDI);
          }
          else {
            psVar12 = (short *)((int)psVar8 + 1);
            *(byte *)(*piVar6 + iVar14 + 5) = *(byte *)psVar8;
            if (1 < iVar13) {
              *(undefined *)(iVar14 + 0x25 + *piVar6) = *(undefined *)psVar12;
              psVar12 = psVar8 + 1;
            }
            if (iVar13 == 3) {
              *(undefined *)(iVar14 + 0x26 + *piVar6) = *(undefined *)psVar12;
              psVar12 = (short *)((int)psVar12 + 1);
            }
            psVar8 = (short *)((int)psVar12 - iVar13);
          }
        }
        iVar13 = (int)psVar8 - (int)local_10;
        local_14 = (short *)MultiByteToWideChar(0xfde9,0,(LPCSTR)local_10,iVar13,(LPWSTR)_DstBuf,
                                                uVar2 >> 1);
        if (local_14 != (short *)0x0) {
          bVar15 = local_14 != (short *)iVar13;
          local_14 = (short *)((int)local_14 * 2);
          *(uint *)(iVar14 + 0x30 + *piVar6) = (uint)bVar15;
          goto LAB_00a4a036;
        }
        uVar11 = GetLastError();
LAB_00a4a02b:
        __dosmaperr(uVar11);
      }
LAB_00a4a032:
      local_18 = -1;
LAB_00a4a036:
      if (local_10 != (short *)_DstBuf) {
        _free(local_10);
      }
      if (local_18 == -2) {
        return (int)local_14;
      }
      return local_18;
    }
  }
LAB_00a49d17:
  puVar5 = ___doserrno();
  *puVar5 = 0;
  piVar6 = __errno();
  *piVar6 = 0x16;
LAB_00a49d29:
  __invalid_parameter(0,0,0,0,0);
  return -1;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __read
// 
// Library: Visual Studio 2008 Release

int __cdecl __read(int _FileHandle,void *_DstBuf,uint _MaxCharCount)

{
  ulong *puVar1;
  int *piVar2;
  int iVar3;
  int local_20;
  
  if (_FileHandle == -2) {
    puVar1 = ___doserrno();
    *puVar1 = 0;
    piVar2 = __errno();
    *piVar2 = 9;
    return -1;
  }
  if ((-1 < _FileHandle) && ((uint)_FileHandle < DAT_032f16e4)) {
    iVar3 = (_FileHandle & 0x1fU) * 0x40;
    if ((*(byte *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + iVar3) & 1) != 0) {
      if (_MaxCharCount < 0x80000000) {
        ___lock_fhandle(_FileHandle);
        if ((*(byte *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + iVar3) & 1) == 0) {
          piVar2 = __errno();
          *piVar2 = 9;
          puVar1 = ___doserrno();
          *puVar1 = 0;
          local_20 = -1;
        }
        else {
          local_20 = __read_nolock(_FileHandle,_DstBuf,_MaxCharCount);
        }
        FUN_00a4a2d4();
        return local_20;
      }
      puVar1 = ___doserrno();
      *puVar1 = 0;
      piVar2 = __errno();
      *piVar2 = 0x16;
      goto LAB_00a4a230;
    }
  }
  puVar1 = ___doserrno();
  *puVar1 = 0;
  piVar2 = __errno();
  *piVar2 = 9;
LAB_00a4a230:
  __invalid_parameter(0,0,0,0,0);
  return -1;
}



void FUN_00a4a2d4(void)

{
  int unaff_EBP;
  
  __unlock_fhandle(*(int *)(unaff_EBP + 8));
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe
// WARNING: Type propagation algorithm not settling
// Library Function - Single Match
//  __write_nolock
// 
// Library: Visual Studio 2008 Release

int __cdecl __write_nolock(int _FileHandle,void *_Buf,uint _MaxCharCount)

{
  WCHAR WVar1;
  wint_t wVar2;
  ulong *puVar3;
  int *piVar4;
  int iVar5;
  _ptiddata p_Var6;
  BOOL BVar7;
  DWORD nNumberOfBytesToWrite;
  int iVar8;
  uint uVar9;
  char cVar10;
  WCHAR *pWVar11;
  char *pcVar12;
  int unaff_EDI;
  WCHAR *pWVar13;
  ushort uVar14;
  UINT local_1ae8;
  uint local_1ae4;
  char local_1add;
  int *local_1adc;
  char *local_1ad8;
  int local_1ad4;
  WCHAR *local_1ad0;
  char *local_1acc;
  WCHAR *local_1ac8;
  DWORD local_1ac4;
  WCHAR *local_1ac0;
  WCHAR local_1abc [852];
  CHAR local_1414 [3416];
  WCHAR local_6bc [854];
  undefined2 local_10;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_1ad0 = (WCHAR *)_Buf;
  local_1acc = (char *)0x0;
  local_1ad4 = 0;
  if (_MaxCharCount == 0) goto LAB_00a4aa04;
  if (_Buf == (void *)0x0) {
    puVar3 = ___doserrno();
    *puVar3 = 0;
    piVar4 = __errno();
    *piVar4 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    goto LAB_00a4aa04;
  }
  piVar4 = &DAT_032f1700 + (_FileHandle >> 5);
  iVar8 = (_FileHandle & 0x1fU) * 0x40;
  cVar10 = (char)(*(char *)(*piVar4 + iVar8 + 0x24) * '\x02') >> 1;
  local_1add = cVar10;
  local_1adc = piVar4;
  if (((cVar10 == '\x02') || (cVar10 == '\x01')) && ((~_MaxCharCount & 1) == 0)) {
    puVar3 = ___doserrno();
    *puVar3 = 0;
    piVar4 = __errno();
    *piVar4 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    goto LAB_00a4aa04;
  }
  if ((*(byte *)(*piVar4 + iVar8 + 4) & 0x20) != 0) {
    __lseeki64_nolock(_FileHandle,0x200000000,unaff_EDI);
  }
  iVar5 = __isatty(_FileHandle);
  if ((iVar5 == 0) || ((*(byte *)(iVar8 + 4 + *piVar4) & 0x80) == 0)) {
LAB_00a4a675:
    if ((*(byte *)((HANDLE *)(*piVar4 + iVar8) + 1) & 0x80) == 0) {
      BVar7 = WriteFile(*(HANDLE *)(*piVar4 + iVar8),local_1ad0,_MaxCharCount,(LPDWORD)&local_1ad8,
                        (LPOVERLAPPED)0x0);
      if (BVar7 == 0) {
LAB_00a4a975:
        local_1ac4 = GetLastError();
      }
      else {
        local_1ac4 = 0;
        local_1acc = local_1ad8;
      }
LAB_00a4a981:
      if (local_1acc != (char *)0x0) goto LAB_00a4aa04;
      goto LAB_00a4a98a;
    }
    local_1ac4 = 0;
    if (cVar10 == '\0') {
      local_1ac8 = local_1ad0;
      if (_MaxCharCount == 0) goto LAB_00a4a9c6;
      do {
        local_1ac0 = (WCHAR *)0x0;
        uVar9 = (int)local_1ac8 - (int)local_1ad0;
        pWVar11 = local_1abc;
        do {
          if (_MaxCharCount <= uVar9) break;
          pWVar13 = (WCHAR *)((int)local_1ac8 + 1);
          cVar10 = *(char *)local_1ac8;
          uVar9 = uVar9 + 1;
          if (cVar10 == '\n') {
            local_1ad4 = local_1ad4 + 1;
            *(char *)pWVar11 = '\r';
            pWVar11 = (WCHAR *)((int)pWVar11 + 1);
            local_1ac0 = (WCHAR *)((int)local_1ac0 + 1);
          }
          *(char *)pWVar11 = cVar10;
          pWVar11 = (WCHAR *)((int)pWVar11 + 1);
          local_1ac0 = (WCHAR *)((int)local_1ac0 + 1);
          local_1ac8 = pWVar13;
        } while (local_1ac0 < (WCHAR *)0x13ff);
        BVar7 = WriteFile(*(HANDLE *)(iVar8 + *piVar4),local_1abc,(int)pWVar11 - (int)local_1abc,
                          (LPDWORD)&local_1ad8,(LPOVERLAPPED)0x0);
        if (BVar7 == 0) goto LAB_00a4a975;
        local_1acc = local_1acc + (int)local_1ad8;
      } while (((int)pWVar11 - (int)local_1abc <= (int)local_1ad8) &&
              (piVar4 = local_1adc, (uint)((int)local_1ac8 - (int)local_1ad0) < _MaxCharCount));
      goto LAB_00a4a981;
    }
    local_1ac0 = local_1ad0;
    if (cVar10 == '\x02') {
      if (_MaxCharCount != 0) {
        do {
          local_1ac8 = (WCHAR *)0x0;
          uVar9 = (int)local_1ac0 - (int)local_1ad0;
          pWVar11 = local_1abc;
          do {
            if (_MaxCharCount <= uVar9) break;
            pWVar13 = local_1ac0 + 1;
            WVar1 = *local_1ac0;
            uVar9 = uVar9 + 2;
            if (WVar1 == L'\n') {
              local_1ad4 = local_1ad4 + 2;
              *pWVar11 = L'\r';
              pWVar11 = pWVar11 + 1;
              local_1ac8 = local_1ac8 + 1;
            }
            local_1ac8 = local_1ac8 + 1;
            *pWVar11 = WVar1;
            pWVar11 = pWVar11 + 1;
            local_1ac0 = pWVar13;
          } while (local_1ac8 < (WCHAR *)0x13fe);
          BVar7 = WriteFile(*(HANDLE *)(iVar8 + *piVar4),local_1abc,(int)pWVar11 - (int)local_1abc,
                            (LPDWORD)&local_1ad8,(LPOVERLAPPED)0x0);
          if (BVar7 == 0) goto LAB_00a4a975;
          local_1acc = local_1acc + (int)local_1ad8;
        } while (((int)pWVar11 - (int)local_1abc <= (int)local_1ad8) &&
                (piVar4 = local_1adc, (uint)((int)local_1ac0 - (int)local_1ad0) < _MaxCharCount));
        goto LAB_00a4a981;
      }
    }
    else if (_MaxCharCount != 0) {
      do {
        local_1ac8 = (WCHAR *)0x0;
        uVar9 = (int)local_1ac0 - (int)local_1ad0;
        pWVar11 = local_6bc;
        do {
          if (_MaxCharCount <= uVar9) break;
          WVar1 = *local_1ac0;
          local_1ac0 = local_1ac0 + 1;
          uVar9 = uVar9 + 2;
          if (WVar1 == L'\n') {
            *pWVar11 = L'\r';
            pWVar11 = pWVar11 + 1;
            local_1ac8 = local_1ac8 + 1;
          }
          local_1ac8 = local_1ac8 + 1;
          *pWVar11 = WVar1;
          pWVar11 = pWVar11 + 1;
        } while (local_1ac8 < (WCHAR *)0x6a8);
        pcVar12 = (char *)0x0;
        iVar5 = WideCharToMultiByte(0xfde9,0,local_6bc,((int)pWVar11 - (int)local_6bc) / 2,
                                    local_1414,0xd55,(LPCSTR)0x0,(LPBOOL)0x0);
        if (iVar5 == 0) goto LAB_00a4a975;
        do {
          BVar7 = WriteFile(*(HANDLE *)(iVar8 + *local_1adc),local_1414 + (int)pcVar12,
                            iVar5 - (int)pcVar12,(LPDWORD)&local_1ad8,(LPOVERLAPPED)0x0);
          if (BVar7 == 0) {
            local_1ac4 = GetLastError();
            break;
          }
          pcVar12 = pcVar12 + (int)local_1ad8;
        } while ((int)pcVar12 < iVar5);
      } while ((iVar5 <= (int)pcVar12) &&
              (local_1acc = (char *)((int)local_1ac0 - (int)local_1ad0), local_1acc < _MaxCharCount)
              );
      goto LAB_00a4a981;
    }
  }
  else {
    p_Var6 = __getptd();
    local_1ae4 = (uint)(p_Var6->ptlocinfo->lc_category[0].wlocale == (wchar_t *)0x0);
    BVar7 = GetConsoleMode(*(HANDLE *)(iVar8 + *piVar4),&local_1ae8);
    if ((BVar7 == 0) || ((local_1ae4 != 0 && (cVar10 == '\0')))) goto LAB_00a4a675;
    local_1ae8 = GetConsoleCP();
    local_1ac8 = (WCHAR *)0x0;
    if (_MaxCharCount != 0) {
      local_1ac0 = (WCHAR *)0x0;
      pWVar11 = local_1ad0;
      do {
        piVar4 = local_1adc;
        if (local_1add == '\0') {
          cVar10 = *(char *)pWVar11;
          local_1ae4 = (uint)(cVar10 == '\n');
          iVar5 = *local_1adc + iVar8;
          if (*(int *)(iVar5 + 0x38) == 0) {
            iVar5 = _isleadbyte(CONCAT22(cVar10 >> 7,(short)cVar10));
            if (iVar5 == 0) {
              uVar14 = 1;
              pWVar13 = pWVar11;
              goto LAB_00a4a4dc;
            }
            if ((char *)((int)local_1ad0 + (_MaxCharCount - (int)pWVar11)) < (char *)0x2) {
              local_1acc = local_1acc + 1;
              *(undefined *)(iVar8 + 0x34 + *piVar4) = *(undefined *)pWVar11;
              *(undefined4 *)(iVar8 + 0x38 + *piVar4) = 1;
              break;
            }
            iVar5 = _mbtowc((wchar_t *)&local_1ac4,(char *)pWVar11,2);
            if (iVar5 == -1) break;
            pWVar11 = (WCHAR *)((int)pWVar11 + 1);
            local_1ac0 = (WCHAR *)((int)local_1ac0 + 1);
          }
          else {
            local_10._0_1_ = *(CHAR *)(iVar5 + 0x34);
            *(undefined4 *)(iVar5 + 0x38) = 0;
            uVar14 = 2;
            pWVar13 = &local_10;
            local_10._1_1_ = cVar10;
LAB_00a4a4dc:
            iVar5 = _mbtowc((wchar_t *)&local_1ac4,(char *)pWVar13,(uint)uVar14);
            if (iVar5 == -1) break;
          }
          pWVar11 = (WCHAR *)((int)pWVar11 + 1);
          local_1ac0 = (WCHAR *)((int)local_1ac0 + 1);
          nNumberOfBytesToWrite =
               WideCharToMultiByte(local_1ae8,0,(LPCWSTR)&local_1ac4,1,(LPSTR)&local_10,5,
                                   (LPCSTR)0x0,(LPBOOL)0x0);
          if (nNumberOfBytesToWrite == 0) break;
          BVar7 = WriteFile(*(HANDLE *)(iVar8 + *local_1adc),&local_10,nNumberOfBytesToWrite,
                            (LPDWORD)&local_1ac8,(LPOVERLAPPED)0x0);
          if (BVar7 == 0) goto LAB_00a4a975;
          local_1acc = (char *)((int)local_1ac0 + local_1ad4);
          if ((int)local_1ac8 < (int)nNumberOfBytesToWrite) break;
          if (local_1ae4 != 0) {
            local_10._0_1_ = '\r';
            BVar7 = WriteFile(*(HANDLE *)(iVar8 + *local_1adc),&local_10,1,(LPDWORD)&local_1ac8,
                              (LPOVERLAPPED)0x0);
            if (BVar7 == 0) goto LAB_00a4a975;
            if ((int)local_1ac8 < 1) break;
            local_1ad4 = local_1ad4 + 1;
            local_1acc = local_1acc + 1;
          }
        }
        else {
          if ((local_1add == '\x01') || (local_1add == '\x02')) {
            local_1ac4 = (DWORD)(ushort)*pWVar11;
            local_1ae4 = (uint)(*pWVar11 == L'\n');
            pWVar11 = pWVar11 + 1;
            local_1ac0 = local_1ac0 + 1;
          }
          if ((local_1add == '\x01') || (local_1add == '\x02')) {
            wVar2 = __putwch_nolock((wchar_t)local_1ac4);
            if (wVar2 != (wint_t)local_1ac4) goto LAB_00a4a975;
            local_1acc = local_1acc + 2;
            if (local_1ae4 != 0) {
              local_1ac4 = 0xd;
              wVar2 = __putwch_nolock(L'\r');
              if (wVar2 != (wint_t)local_1ac4) goto LAB_00a4a975;
              local_1acc = local_1acc + 1;
              local_1ad4 = local_1ad4 + 1;
            }
          }
        }
      } while (local_1ac0 < _MaxCharCount);
      goto LAB_00a4a981;
    }
LAB_00a4a98a:
    piVar4 = local_1adc;
    if (local_1ac4 != 0) {
      if (local_1ac4 == 5) {
        piVar4 = __errno();
        *piVar4 = 9;
        puVar3 = ___doserrno();
        *puVar3 = 5;
      }
      else {
        __dosmaperr(local_1ac4);
      }
      goto LAB_00a4aa04;
    }
  }
LAB_00a4a9c6:
  if (((*(byte *)(iVar8 + 4 + *piVar4) & 0x40) == 0) || (*(char *)local_1ad0 != '\x1a')) {
    piVar4 = __errno();
    *piVar4 = 0x1c;
    puVar3 = ___doserrno();
    *puVar3 = 0;
  }
LAB_00a4aa04:
  iVar8 = ___security_check_cookie_4();
  return iVar8;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __write
// 
// Library: Visual Studio 2008 Release

int __cdecl __write(int _FileHandle,void *_Buf,uint _MaxCharCount)

{
  ulong *puVar1;
  int *piVar2;
  int iVar3;
  int local_20;
  
  if (_FileHandle == -2) {
    puVar1 = ___doserrno();
    *puVar1 = 0;
    piVar2 = __errno();
    *piVar2 = 9;
  }
  else {
    if ((-1 < _FileHandle) && ((uint)_FileHandle < DAT_032f16e4)) {
      iVar3 = (_FileHandle & 0x1fU) * 0x40;
      if ((*(byte *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + iVar3) & 1) != 0) {
        ___lock_fhandle(_FileHandle);
        if ((*(byte *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + iVar3) & 1) == 0) {
          piVar2 = __errno();
          *piVar2 = 9;
          puVar1 = ___doserrno();
          *puVar1 = 0;
          local_20 = -1;
        }
        else {
          local_20 = __write_nolock(_FileHandle,_Buf,_MaxCharCount);
        }
        FUN_00a4aae3();
        return local_20;
      }
    }
    puVar1 = ___doserrno();
    *puVar1 = 0;
    piVar2 = __errno();
    *piVar2 = 9;
    __invalid_parameter(0,0,0,0,0);
  }
  return -1;
}



void FUN_00a4aae3(void)

{
  int unaff_EBP;
  
  __unlock_fhandle(*(int *)(unaff_EBP + 8));
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __commit
// 
// Library: Visual Studio 2008 Release

int __cdecl __commit(int _FileHandle)

{
  int *piVar1;
  HANDLE hFile;
  BOOL BVar2;
  ulong *puVar3;
  int iVar4;
  DWORD local_20;
  
  if (_FileHandle == -2) {
    piVar1 = __errno();
    *piVar1 = 9;
  }
  else {
    if ((-1 < _FileHandle) && ((uint)_FileHandle < DAT_032f16e4)) {
      iVar4 = (_FileHandle & 0x1fU) * 0x40;
      if ((*(byte *)(iVar4 + 4 + (&DAT_032f1700)[_FileHandle >> 5]) & 1) != 0) {
        ___lock_fhandle(_FileHandle);
        if ((*(byte *)(iVar4 + 4 + (&DAT_032f1700)[_FileHandle >> 5]) & 1) != 0) {
          hFile = (HANDLE)__get_osfhandle(_FileHandle);
          BVar2 = FlushFileBuffers(hFile);
          if (BVar2 == 0) {
            local_20 = GetLastError();
          }
          else {
            local_20 = 0;
          }
          if (local_20 == 0) goto LAB_00a4abaf;
          puVar3 = ___doserrno();
          *puVar3 = local_20;
        }
        piVar1 = __errno();
        *piVar1 = 9;
        local_20 = 0xffffffff;
LAB_00a4abaf:
        FUN_00a4abc4();
        return local_20;
      }
    }
    piVar1 = __errno();
    *piVar1 = 9;
    __invalid_parameter(0,0,0,0,0);
  }
  return -1;
}



void FUN_00a4abc4(void)

{
  int unaff_EBP;
  
  __unlock_fhandle(*(int *)(unaff_EBP + 8));
  return;
}



// Library Function - Single Match
//  __lseeki64_nolock
// 
// Library: Visual Studio 2008 Release

longlong __cdecl __lseeki64_nolock(int _FileHandle,longlong _Offset,int _Origin)

{
  byte *pbVar1;
  HANDLE hFile;
  int *piVar2;
  DWORD DVar3;
  DWORD DVar4;
  LONG in_stack_00000008;
  LONG local_8;
  
  local_8 = (LONG)_Offset;
  hFile = (HANDLE)__get_osfhandle(_FileHandle);
  if (hFile == (HANDLE)0xffffffff) {
    piVar2 = __errno();
    *piVar2 = 9;
LAB_00a4abff:
    DVar3 = 0xffffffff;
    local_8 = -1;
  }
  else {
    DVar3 = SetFilePointer(hFile,in_stack_00000008,&local_8,_Offset._4_4_);
    if (DVar3 == 0xffffffff) {
      DVar4 = GetLastError();
      if (DVar4 != 0) {
        __dosmaperr(DVar4);
        goto LAB_00a4abff;
      }
    }
    pbVar1 = (byte *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + (_FileHandle & 0x1fU) * 0x40);
    *pbVar1 = *pbVar1 & 0xfd;
  }
  return CONCAT44(local_8,DVar3);
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __lseeki64
// 
// Library: Visual Studio 2008 Release

longlong __cdecl __lseeki64(int _FileHandle,longlong _Offset,int _Origin)

{
  ulong *puVar1;
  int *piVar2;
  int iVar3;
  int in_stack_ffffffc8;
  undefined8 local_28;
  
  if (_FileHandle == -2) {
    puVar1 = ___doserrno();
    *puVar1 = 0;
    piVar2 = __errno();
    *piVar2 = 9;
  }
  else {
    if ((-1 < _FileHandle) && ((uint)_FileHandle < DAT_032f16e4)) {
      iVar3 = (_FileHandle & 0x1fU) * 0x40;
      if ((*(byte *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + iVar3) & 1) == 0) {
        puVar1 = ___doserrno();
        *puVar1 = 0;
        piVar2 = __errno();
        *piVar2 = 9;
        __invalid_parameter(0,0,0,0,0);
        local_28._4_4_ = 0xffffffff;
        local_28._0_4_ = 0xffffffff;
      }
      else {
        ___lock_fhandle(_FileHandle);
        if ((*(byte *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + iVar3) & 1) == 0) {
          piVar2 = __errno();
          *piVar2 = 9;
          puVar1 = ___doserrno();
          *puVar1 = 0;
          local_28 = -1;
        }
        else {
          local_28 = __lseeki64_nolock(_FileHandle,_Offset,in_stack_ffffffc8);
        }
        FUN_00a4ad62();
      }
      goto LAB_00a4ad5c;
    }
    puVar1 = ___doserrno();
    *puVar1 = 0;
    piVar2 = __errno();
    *piVar2 = 9;
    __invalid_parameter(0,0,0,0,0);
  }
  local_28._0_4_ = 0xffffffff;
  local_28._4_4_ = 0xffffffff;
LAB_00a4ad5c:
  return CONCAT44(local_28._4_4_,(undefined4)local_28);
}



void FUN_00a4ad62(void)

{
  int unaff_EBP;
  
  __unlock_fhandle(*(int *)(unaff_EBP + 8));
  return;
}



// Library Function - Single Match
//  __telli64
// 
// Library: Visual Studio 2008 Release

longlong __cdecl __telli64(int _FileHandle)

{
  int unaff_EBP;
  longlong lVar1;
  
  lVar1 = __lseeki64(_FileHandle,0x100000000,unaff_EBP);
  return lVar1;
}



// Library Function - Single Match
//  _vscan_fn
// 
// Library: Visual Studio 2008 Release

undefined4 _vscan_fn(code *param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  int *piVar1;
  undefined4 uVar2;
  int unaff_ESI;
  
  FUN_00a51355();
  if ((unaff_ESI == 0) || (param_2 == 0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    uVar2 = 0xffffffff;
  }
  else {
    uVar2 = (*param_1)(&stack0xffffffdc,param_2,param_3,param_4);
  }
  return uVar2;
}



// Library Function - Multiple Matches With Different Base Names
//  _swscanf
//  _swscanf_s
// 
// Library: Visual Studio 2008 Release

int __cdecl FID_conflict__swscanf(wchar_t *_Src,wchar_t *_Format,...)

{
  int iVar1;
  
  iVar1 = _vscan_fn(__winput_l,_Format,0,&stack0x0000000c);
  return iVar1;
}



// Library Function - Single Match
//  __wcstombs_l_helper
// 
// Library: Visual Studio 2008 Release

void __wcstombs_l_helper(LPSTR param_1,LPCWSTR param_2,uint param_3,localeinfo_struct *param_4)

{
  char cVar1;
  WCHAR WVar2;
  int *piVar3;
  LPCWSTR pWVar4;
  int iVar5;
  DWORD DVar6;
  uint uVar7;
  uint uVar8;
  LPCWSTR local_30;
  uint local_28;
  int local_24 [2];
  int local_1c;
  char local_18;
  int local_14;
  CHAR local_10 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_30 = param_2;
  local_28 = 0;
  local_14 = 0;
  if ((param_1 != (LPSTR)0x0) && (param_3 == 0)) goto LAB_00a4af9b;
  if (param_2 == (LPCWSTR)0x0) {
    piVar3 = __errno();
    *piVar3 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    goto LAB_00a4af9b;
  }
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)local_24,param_4);
  if (param_1 == (LPSTR)0x0) {
    if (*(int *)(local_24[0] + 0x14) == 0) {
      FUN_00a51355(param_2);
    }
    else {
      iVar5 = WideCharToMultiByte(*(UINT *)(local_24[0] + 4),0,param_2,-1,(LPSTR)0x0,0,(LPCSTR)0x0,
                                  &local_14);
      if ((iVar5 == 0) || (local_14 != 0)) goto LAB_00a4af81;
    }
LAB_00a4aed0:
    if (local_18 != '\0') {
      *(uint *)(local_1c + 0x70) = *(uint *)(local_1c + 0x70) & 0xfffffffd;
    }
  }
  else {
    if (*(int *)(local_24[0] + 0x14) == 0) {
      if (param_3 != 0) {
        do {
          if (0xff < (ushort)*param_2) goto LAB_00a4af81;
          param_1[local_28] = *(CHAR *)param_2;
          WVar2 = *param_2;
          param_2 = param_2 + 1;
          if (WVar2 == L'\0') goto LAB_00a4aed0;
          local_28 = local_28 + 1;
        } while (local_28 < param_3);
      }
      if (local_18 != '\0') {
        *(uint *)(local_1c + 0x70) = *(uint *)(local_1c + 0x70) & 0xfffffffd;
      }
      goto LAB_00a4af9b;
    }
    if (*(int *)(local_24[0] + 0xac) == 1) {
      pWVar4 = param_2;
      uVar8 = param_3;
      if (param_3 != 0) {
        do {
          if (*pWVar4 == L'\0') break;
          pWVar4 = pWVar4 + 1;
          uVar8 = uVar8 - 1;
        } while (uVar8 != 0);
        if ((uVar8 != 0) && (*pWVar4 == L'\0')) {
          param_3 = ((int)pWVar4 - (int)param_2 >> 1) + 1;
        }
      }
      iVar5 = WideCharToMultiByte(*(UINT *)(local_24[0] + 4),0,param_2,param_3,param_1,param_3,
                                  (LPCSTR)0x0,&local_14);
      if (iVar5 != 0) {
joined_r0x00a4af63:
        if (local_14 == 0) goto LAB_00a4aed0;
      }
    }
    else {
      iVar5 = WideCharToMultiByte(*(UINT *)(local_24[0] + 4),0,param_2,-1,param_1,param_3,
                                  (LPCSTR)0x0,&local_14);
      if (iVar5 != 0) goto joined_r0x00a4af63;
      if (local_14 == 0) {
        DVar6 = GetLastError();
        uVar8 = 0;
        if (DVar6 == 0x7a) {
          while (uVar8 < param_3) {
            uVar7 = WideCharToMultiByte(*(UINT *)(local_24[0] + 4),0,local_30,1,local_10,
                                        *(int *)(local_24[0] + 0xac),(LPCSTR)0x0,&local_14);
            if ((((uVar7 == 0) || (local_14 != 0)) || ((int)uVar7 < 0)) || (5 < uVar7))
            goto LAB_00a4af81;
            if (param_3 < uVar7 + uVar8) break;
            iVar5 = 0;
            if (0 < (int)uVar7) {
              do {
                cVar1 = local_10[iVar5];
                param_1[uVar8] = cVar1;
                if (cVar1 == '\0') goto LAB_00a4b009;
                iVar5 = iVar5 + 1;
                uVar8 = uVar8 + 1;
              } while (iVar5 < (int)uVar7);
            }
            local_30 = local_30 + 1;
          }
LAB_00a4b009:
          if (local_18 != '\0') {
            *(uint *)(local_1c + 0x70) = *(uint *)(local_1c + 0x70) & 0xfffffffd;
          }
          goto LAB_00a4af9b;
        }
      }
    }
LAB_00a4af81:
    piVar3 = __errno();
    *piVar3 = 0x2a;
    if (local_18 != '\0') {
      *(uint *)(local_1c + 0x70) = *(uint *)(local_1c + 0x70) & 0xfffffffd;
    }
  }
LAB_00a4af9b:
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  __wcstombs_s_l
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl
__wcstombs_s_l(size_t *_PtNumOfCharConverted,char *_Dst,size_t _DstSizeInBytes,wchar_t *_Src,
              size_t _MaxCountInBytes,_locale_t _Locale)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  size_t sVar4;
  errno_t local_8;
  
  local_8 = 0;
  if (_DstSizeInBytes == 0) {
    if (_Dst != (char *)0x0) {
      *_Dst = '\0';
    }
    if (_PtNumOfCharConverted != (size_t *)0x0) {
      *_PtNumOfCharConverted = 0;
    }
    uVar1 = _MaxCountInBytes;
    if (_MaxCountInBytes != 0) {
      uVar1 = 0;
    }
    if (uVar1 < 0x80000000) {
      iVar2 = __wcstombs_l_helper(_Dst,_Src,uVar1,_Locale);
      if (iVar2 == -1) {
        if (_Dst != (char *)0x0) {
          *_Dst = '\0';
        }
        piVar3 = __errno();
        return *piVar3;
      }
      sVar4 = iVar2 + 1;
      if (_Dst != (char *)0x0) {
        if (sVar4 != 0) {
          if (_MaxCountInBytes != 0xffffffff) {
            *_Dst = '\0';
            piVar3 = __errno();
            iVar2 = 0x22;
            goto LAB_00a4b0c2;
          }
          local_8 = 0x50;
          sVar4 = 0;
        }
        _Dst[sVar4 - 1] = '\0';
      }
      if (_PtNumOfCharConverted == (size_t *)0x0) {
        return local_8;
      }
      *_PtNumOfCharConverted = sVar4;
      return local_8;
    }
  }
  piVar3 = __errno();
  iVar2 = 0x16;
LAB_00a4b0c2:
  *piVar3 = iVar2;
  __invalid_parameter(0,0,0,0,0);
  return iVar2;
}



// Library Function - Single Match
//  _wcstombs_s
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl
_wcstombs_s(size_t *_PtNumOfCharConverted,char *_Dst,size_t _DstSizeInBytes,wchar_t *_Src,
           size_t _MaxCountInBytes)

{
  errno_t eVar1;
  
  eVar1 = __wcstombs_s_l(_PtNumOfCharConverted,_Dst,_DstSizeInBytes,_Src,_MaxCountInBytes,
                         (_locale_t)0x0);
  return eVar1;
}



// Library Function - Single Match
//  __vswprintf_l
// 
// Library: Visual Studio 2008 Release

int __cdecl
__vswprintf_l(wchar_t *_String,size_t _Count,wchar_t *_Format,_locale_t _Plocinfo,va_list _Ap)

{
  int *piVar1;
  int iVar2;
  FILE local_24;
  
  if ((_Count == 0) || (_String == (wchar_t *)0x0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    iVar2 = -1;
  }
  else {
    local_24._base = (char *)_String;
    local_24._ptr = (char *)_String;
    local_24._flag = 0x42;
    local_24._cnt = 0x7fffffff;
    iVar2 = __woutput_l(&local_24,(wchar_t *)_Count,(_locale_t)_Format,(va_list)_Plocinfo);
    local_24._cnt = local_24._cnt + -1;
    if (local_24._cnt < 0) {
      __flsbuf(0,&local_24);
    }
    else {
      *local_24._ptr = 0;
      local_24._ptr = (char *)((int)local_24._ptr + 1);
    }
    local_24._cnt = local_24._cnt + -1;
    if (local_24._cnt < 0) {
      __flsbuf(0,&local_24);
    }
    else {
      *local_24._ptr = 0;
    }
  }
  return iVar2;
}



// Library Function - Single Match
//  __vswprintf
// 
// Library: Visual Studio 2008 Release

int __cdecl __vswprintf(wchar_t *_Dest,wchar_t *_Format,va_list _Args)

{
  int iVar1;
  va_list unaff_EBP;
  
  iVar1 = __vswprintf_l(_Dest,(size_t)_Format,(wchar_t *)0x0,(_locale_t)_Args,unaff_EBP);
  return iVar1;
}



// Library Function - Single Match
//  _strpbrk
// 
// Library: Visual Studio 2008 Release

char * __cdecl _strpbrk(char *_Str,char *_Control)

{
  byte bVar1;
  byte *pbVar2;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  
  uStack_c = 0;
  uStack_10 = 0;
  uStack_14 = 0;
  uStack_18 = 0;
  uStack_1c = 0;
  uStack_20 = 0;
  uStack_24 = 0;
  uStack_28 = 0;
  while( true ) {
    bVar1 = *_Control;
    if (bVar1 == 0) break;
    _Control = (char *)((byte *)_Control + 1);
    pbVar2 = (byte *)((int)&uStack_28 + ((int)(uint)bVar1 >> 3));
    *pbVar2 = *pbVar2 | '\x01' << (bVar1 & 7);
  }
  do {
    pbVar2 = (byte *)_Str;
    bVar1 = *pbVar2;
    if (bVar1 == 0) {
      return (char *)(uint)bVar1;
    }
    _Str = (char *)(pbVar2 + 1);
  } while ((*(byte *)((int)&uStack_28 + ((int)(char *)(uint)bVar1 >> 3)) >> (bVar1 & 7) & 1) == 0);
  return (char *)pbVar2;
}



// Library Function - Single Match
//  __fputwc_nolock
// 
// Library: Visual Studio 2008 Release

wint_t __cdecl __fputwc_nolock(wchar_t _Ch,FILE *_File)

{
  int *piVar1;
  wint_t wVar2;
  int iVar3;
  uint uVar4;
  undefined *puVar5;
  errno_t eVar6;
  int local_14;
  char local_10 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  if ((*(byte *)&_File->_flag & 0x40) == 0) {
    iVar3 = __fileno(_File);
    if ((iVar3 == -1) || (iVar3 = __fileno(_File), iVar3 == -2)) {
      puVar5 = &DAT_03240190;
    }
    else {
      iVar3 = __fileno(_File);
      uVar4 = __fileno(_File);
      puVar5 = (undefined *)((uVar4 & 0x1f) * 0x40 + (&DAT_032f1700)[iVar3 >> 5]);
    }
    if ((puVar5[0x24] & 0x7f) != 2) {
      iVar3 = __fileno(_File);
      if ((iVar3 == -1) || (iVar3 = __fileno(_File), iVar3 == -2)) {
        puVar5 = &DAT_03240190;
      }
      else {
        iVar3 = __fileno(_File);
        uVar4 = __fileno(_File);
        puVar5 = (undefined *)((uVar4 & 0x1f) * 0x40 + (&DAT_032f1700)[iVar3 >> 5]);
      }
      if ((puVar5[0x24] & 0x7f) != 1) {
        iVar3 = __fileno(_File);
        if ((iVar3 == -1) || (iVar3 = __fileno(_File), iVar3 == -2)) {
          puVar5 = &DAT_03240190;
        }
        else {
          iVar3 = __fileno(_File);
          uVar4 = __fileno(_File);
          puVar5 = (undefined *)((uVar4 & 0x1f) * 0x40 + (&DAT_032f1700)[iVar3 >> 5]);
        }
        if ((puVar5[4] & 0x80) != 0) {
          eVar6 = _wctomb_s(&local_14,local_10,5,_Ch);
          if ((eVar6 == 0) && (iVar3 = 0, 0 < local_14)) {
            do {
              piVar1 = &_File->_cnt;
              *piVar1 = *piVar1 + -1;
              if (*piVar1 < 0) {
                uVar4 = __flsbuf((int)local_10[iVar3],_File);
              }
              else {
                *_File->_ptr = local_10[iVar3];
                uVar4 = (uint)(byte)*_File->_ptr;
                _File->_ptr = _File->_ptr + 1;
              }
            } while ((uVar4 != 0xffffffff) && (iVar3 = iVar3 + 1, iVar3 < local_14));
          }
          goto LAB_00a4b3a8;
        }
      }
    }
  }
  piVar1 = &_File->_cnt;
  *piVar1 = *piVar1 + -2;
  if (*piVar1 < 0) {
    __flswbuf((uint)(ushort)_Ch,_File);
  }
  else {
    *(wchar_t *)_File->_ptr = _Ch;
    _File->_ptr = _File->_ptr + 2;
  }
LAB_00a4b3a8:
  wVar2 = ___security_check_cookie_4();
  return wVar2;
}



// Library Function - Single Match
//  __vswprintf_helper
// 
// Library: Visual Studio 2008 Release

int __vswprintf_helper(code *param_1,char *param_2,uint param_3,int param_4,undefined4 param_5,
                      undefined4 param_6)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  FILE local_24;
  
  if (param_4 == 0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return -1;
  }
  if ((param_3 != 0) && (param_2 == (char *)0x0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return -1;
  }
  local_24._flag = 0x42;
  local_24._base = param_2;
  local_24._ptr = param_2;
  if (param_3 < 0x40000000) {
    local_24._cnt = param_3 * 2;
  }
  else {
    local_24._cnt = 0x7fffffff;
  }
  iVar2 = (*param_1)(&local_24,param_4,param_5,param_6);
  if (param_2 == (char *)0x0) {
    return iVar2;
  }
  if (-1 < iVar2) {
    local_24._cnt = local_24._cnt + -1;
    if (local_24._cnt < 0) {
      iVar3 = __flsbuf(0,&local_24);
      if (iVar3 == -1) goto LAB_00a4b49b;
    }
    else {
      *local_24._ptr = '\0';
      local_24._ptr = local_24._ptr + 1;
    }
    local_24._cnt = local_24._cnt + -1;
    if (-1 < local_24._cnt) {
      *local_24._ptr = '\0';
      return iVar2;
    }
    iVar3 = __flsbuf(0,&local_24);
    if (iVar3 != -1) {
      return iVar2;
    }
  }
LAB_00a4b49b:
  *(undefined2 *)(param_2 + param_3 * 2 + -2) = 0;
  return (-1 < local_24._cnt) - 2;
}



// Library Function - Single Match
//  __vsnwprintf_s_l
// 
// Library: Visual Studio 2008 Release

int __cdecl
__vsnwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t _MaxCount,wchar_t *_Format,
                _locale_t _Locale,va_list _ArgList)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  
  if (_Format == (wchar_t *)0x0) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return -1;
  }
  if (_MaxCount == 0) {
    if (_DstBuf == (wchar_t *)0x0) {
      if (_DstSize == 0) {
        return 0;
      }
    }
    else {
LAB_00a4b4fa:
      if (_DstSize != 0) {
        piVar2 = __errno();
        if (_MaxCount < _DstSize) {
          iVar1 = *piVar2;
          iVar3 = __vswprintf_helper(__woutput_s_l,_DstBuf,_MaxCount + 1,_Format,_Locale,_ArgList);
          if (iVar3 == -2) {
            piVar2 = __errno();
            if (*piVar2 != 0x22) {
              return -1;
            }
            piVar2 = __errno();
            *piVar2 = iVar1;
            return -1;
          }
LAB_00a4b589:
          if (-1 < iVar3) {
            return iVar3;
          }
        }
        else {
          iVar1 = *piVar2;
          iVar3 = __vswprintf_helper(__woutput_s_l,_DstBuf,_DstSize,_Format,_Locale,_ArgList);
          _DstBuf[_DstSize - 1] = L'\0';
          if (iVar3 != -2) goto LAB_00a4b589;
          if (_MaxCount == 0xffffffff) {
            piVar2 = __errno();
            if (*piVar2 != 0x22) {
              return -1;
            }
            piVar2 = __errno();
            *piVar2 = iVar1;
            return -1;
          }
        }
        *_DstBuf = L'\0';
        if (iVar3 != -2) {
          return -1;
        }
        piVar2 = __errno();
        *piVar2 = 0x22;
        goto LAB_00a4b5a6;
      }
    }
  }
  else if (_DstBuf != (wchar_t *)0x0) goto LAB_00a4b4fa;
  piVar2 = __errno();
  *piVar2 = 0x16;
LAB_00a4b5a6:
  __invalid_parameter(0,0,0,0,0);
  return -1;
}



// Library Function - Single Match
//  __vsnwprintf_s
// 
// Library: Visual Studio 2008 Release

int __cdecl
__vsnwprintf_s(wchar_t *_DstBuf,size_t _SizeInWords,size_t _MaxCount,wchar_t *_Format,
              va_list _ArgList)

{
  int iVar1;
  
  iVar1 = __vsnwprintf_s_l(_DstBuf,_SizeInWords,_MaxCount,_Format,(_locale_t)0x0,_ArgList);
  return iVar1;
}



// Library Function - Multiple Matches With Different Base Names
//  __vswprintf_c
//  __vswprintf_p
// 
// Library: Visual Studio 2008 Release

int __cdecl
FID_conflict___vswprintf_c(wchar_t *_DstBuf,size_t _SizeInWords,wchar_t *_Format,va_list _ArgList)

{
  int iVar1;
  
  iVar1 = __vswprintf_helper(__woutput_p_l,_DstBuf,_SizeInWords,_Format,0,_ArgList);
  if (iVar1 < 0) {
    iVar1 = -1;
  }
  return iVar1;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _fputws
// 
// Library: Visual Studio 2008 Release

int __cdecl _fputws(wchar_t *_Str,FILE *_File)

{
  wchar_t _Ch;
  wint_t wVar1;
  int *piVar2;
  int local_24;
  int local_20;
  
  local_24 = 0;
  if ((_Str == (wchar_t *)0x0) || (_File == (FILE *)0x0)) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    local_24 = 0xffff;
  }
  else {
    local_20 = FUN_00a51355(_Str);
    __lock_file(_File);
    do {
      if (local_20 == 0) goto LAB_00a4b691;
      _Ch = *_Str;
      _Str = _Str + 1;
      wVar1 = __fputwc_nolock(_Ch,_File);
      local_20 = local_20 + -1;
    } while (wVar1 != 0xffff);
    local_24 = -1;
LAB_00a4b691:
    FUN_00a4b6a6();
  }
  return local_24;
}



void FUN_00a4b6a6(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 0xc));
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _fprintf
// 
// Library: Visual Studio 2008 Release

int __cdecl _fprintf(FILE *_File,char *_Format,...)

{
  int *piVar1;
  uint uVar2;
  int _Flag;
  undefined *puVar3;
  int local_20;
  
  local_20 = 0;
  if ((_File == (FILE *)0x0) || (_Format == (char *)0x0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return -1;
  }
  __lock_file(_File);
  if ((*(byte *)&_File->_flag & 0x40) == 0) {
    uVar2 = __fileno(_File);
    if ((uVar2 == 0xffffffff) || (uVar2 == 0xfffffffe)) {
      puVar3 = &DAT_03240190;
    }
    else {
      puVar3 = (undefined *)((uVar2 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar2 >> 5]);
    }
    if ((puVar3[0x24] & 0x7f) == 0) {
      if ((uVar2 == 0xffffffff) || (uVar2 == 0xfffffffe)) {
        puVar3 = &DAT_03240190;
      }
      else {
        puVar3 = (undefined *)((uVar2 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar2 >> 5]);
      }
      if ((puVar3[0x24] & 0x80) == 0) goto LAB_00a4b785;
    }
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    local_20 = -1;
  }
LAB_00a4b785:
  if (local_20 == 0) {
    _Flag = __stbuf(_File);
    local_20 = __output_l(_File,_Format,(_locale_t)0x0,&stack0x0000000c);
    __ftbuf(_Flag,_File);
  }
  FUN_00a4b7c2();
  return local_20;
}



void FUN_00a4b7c2(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 8));
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _fwprintf
// 
// Library: Visual Studio 2008 Release

int __cdecl _fwprintf(FILE *_File,wchar_t *_Format,...)

{
  int *piVar1;
  int iVar2;
  int _Flag;
  
  if ((_File == (FILE *)0x0) || (_Format == (wchar_t *)0x0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    iVar2 = -1;
  }
  else {
    __lock_file(_File);
    _Flag = __stbuf(_File);
    iVar2 = __woutput_l(_File,_Format,(_locale_t)0x0,&stack0x0000000c);
    __ftbuf(_Flag,_File);
    FUN_00a4b856();
  }
  return iVar2;
}



void FUN_00a4b856(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 8));
  return;
}



// Library Function - Single Match
//  __wgetenv_helper_nolock
// 
// Library: Visual Studio 2008 Release

wchar_t * __cdecl __wgetenv_helper_nolock(wchar_t *param_1)

{
  int iVar1;
  uint _MaxCount;
  uint uVar2;
  wchar_t **ppwVar3;
  
  if (DAT_032f2844 == 0) {
    return (wchar_t *)0x0;
  }
  if (DAT_032eb258 == (wchar_t **)0x0) {
    if (DAT_032eb250 == 0) {
      return (wchar_t *)0x0;
    }
    DAT_032eb20c = ___crtGetEnvironmentStringsW();
    iVar1 = __wsetenvp();
    if ((iVar1 < 0) && (iVar1 = ___mbtow_environ(), iVar1 != 0)) {
      return (wchar_t *)0x0;
    }
    if (DAT_032eb258 == (wchar_t **)0x0) {
      return (wchar_t *)0x0;
    }
  }
  ppwVar3 = DAT_032eb258;
  if (param_1 != (wchar_t *)0x0) {
    _MaxCount = FUN_00a51355(param_1);
    for (; *ppwVar3 != (wchar_t *)0x0; ppwVar3 = ppwVar3 + 1) {
      uVar2 = FUN_00a51355(*ppwVar3);
      if (((_MaxCount < uVar2) && ((*ppwVar3)[_MaxCount] == L'=')) &&
         (iVar1 = __wcsnicoll(*ppwVar3,param_1,_MaxCount), iVar1 == 0)) {
        return *ppwVar3 + _MaxCount + 1;
      }
    }
  }
  return (wchar_t *)0x0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __wgetenv
// 
// Library: Visual Studio 2008 Release

wchar_t * __cdecl __wgetenv(wchar_t *_VarName)

{
  int *piVar1;
  size_t sVar2;
  wchar_t *pwVar3;
  
  if ((_VarName != (wchar_t *)0x0) && (sVar2 = _wcsnlen(_VarName,0x7fff), sVar2 < 0x7fff)) {
    __lock(7);
    pwVar3 = __wgetenv_helper_nolock(_VarName);
    FUN_00a4b975();
    return pwVar3;
  }
  piVar1 = __errno();
  *piVar1 = 0x16;
  __invalid_parameter(0,0,0,0,0);
  return (wchar_t *)0x0;
}



void FUN_00a4b975(void)

{
  FUN_00a4d824(7);
  return;
}



void FUN_00a4b97e(wchar_t *param_1)

{
  _wcstol(param_1,(wchar_t **)0x0,10);
  return;
}



void FUN_00a4b994(void)

{
  FUN_00a4b97e();
  return;
}



// Library Function - Single Match
//  __fseeki64_nolock
// 
// Library: Visual Studio 2008 Release

int __cdecl __fseeki64_nolock(FILE *_File,longlong _Offset,int _Origin)

{
  uint uVar1;
  int _FileHandle;
  int *piVar2;
  int unaff_EDI;
  longlong lVar3;
  undefined4 in_stack_00000008;
  
  if (((_File->_flag & 0x83U) == 0) ||
     (((_Offset._4_4_ != 0 && (_Offset._4_4_ != 1)) && (_Offset._4_4_ != 2)))) {
    piVar2 = __errno();
    *piVar2 = 0x16;
  }
  else {
    _File->_flag = _File->_flag & 0xffffffef;
    lVar3 = _Offset;
    if (_Offset._4_4_ == 1) {
      lVar3 = __ftelli64_nolock(_File);
      lVar3 = lVar3 + CONCAT44((undefined4)_Offset,in_stack_00000008);
      in_stack_00000008 = (undefined4)lVar3;
      lVar3 = CONCAT44(1,(int)((ulonglong)lVar3 >> 0x20));
      _Offset._4_4_ = 0;
    }
    __flush(_File);
    _Offset._0_4_ = (undefined4)lVar3;
    uVar1 = _File->_flag;
    if ((char)uVar1 < '\0') {
      _File->_flag = uVar1 & 0xfffffffc;
    }
    else if ((((uVar1 & 1) != 0) && ((uVar1 & 8) != 0)) && ((uVar1 & 0x400) == 0)) {
      _File->_bufsiz = 0x200;
    }
    _FileHandle = __fileno(_File);
    lVar3 = __lseeki64(_FileHandle,CONCAT44(_Offset._4_4_,(undefined4)_Offset),unaff_EDI);
    if (lVar3 != -1) {
      return 0;
    }
  }
  return -1;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __fseeki64
// 
// Library: Visual Studio 2008 Release

int __cdecl __fseeki64(FILE *_File,longlong _Offset,int _Origin)

{
  int iVar1;
  int in_stack_ffffffd0;
  
  __lock_file(_File);
  iVar1 = __fseeki64_nolock(_File,_Offset,in_stack_ffffffd0);
  FUN_00a4ba80();
  return iVar1;
}



void FUN_00a4ba80(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 8));
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe
// Library Function - Single Match
//  __ftelli64_nolock
// 
// Library: Visual Studio 2008 Release

longlong __cdecl __ftelli64_nolock(FILE *_File)

{
  char *pcVar1;
  uint _FileHandle;
  int iVar2;
  HANDLE *ppvVar3;
  BOOL BVar4;
  byte *pbVar5;
  int *piVar6;
  char *pcVar7;
  uint uVar8;
  char *pcVar9;
  int iVar10;
  int unaff_EDI;
  uint uVar11;
  longlong lVar12;
  longlong lVar13;
  uint local_1010;
  byte local_1009 [4097];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  _FileHandle = __fileno(_File);
  if (_File->_cnt < 0) {
    _File->_cnt = 0;
  }
  lVar12 = __lseeki64(_FileHandle,0x100000000,unaff_EDI);
  uVar8 = (uint)((ulonglong)lVar12 >> 0x20);
  if ((uVar8 != 0 && -1 < lVar12) || (-1 < lVar12)) {
    iVar10 = (_FileHandle & 0x1f) * 0x40;
    iVar2 = (&DAT_032f1700)[(int)_FileHandle >> 5] + iVar10;
    local_1009[0] = (char)(*(char *)(iVar2 + 0x24) * '\x02') >> 1;
    if ((_File->_flag & 0x108U) != 0) {
      pcVar1 = _File->_ptr;
      local_1010 = (int)pcVar1 - (int)_File->_base;
      if ((_File->_flag & 3U) == 0) {
        if (-1 < (char)_File->_flag) {
          piVar6 = __errno();
          *piVar6 = 0x16;
          goto LAB_00a4bdc7;
        }
      }
      else {
        if ((local_1009[0] == 1) && (*(int *)(iVar2 + 0x30) != 0)) {
          uVar11 = local_1010 >> 1;
          if (_File->_cnt != 0) {
            lVar12 = __lseeki64(_FileHandle,(ulonglong)*(uint *)(iVar2 + 0x2c),unaff_EDI);
            ppvVar3 = (HANDLE *)((&DAT_032f1700)[(int)_FileHandle >> 5] + iVar10);
            if ((((HANDLE)lVar12 == ppvVar3[10]) &&
                ((HANDLE)((ulonglong)lVar12 >> 0x20) == ppvVar3[0xb])) &&
               (BVar4 = ReadFile(*ppvVar3,local_1009 + 1,0x1000,&local_1010,(LPOVERLAPPED)0x0),
               BVar4 != 0)) {
              lVar12 = __lseeki64(_FileHandle,(ulonglong)uVar8,unaff_EDI);
              if ((((int)((ulonglong)lVar12 >> 0x20) != 0 && -1 < lVar12) || (-1 < lVar12)) &&
                 ((uVar11 <= local_1010 && (pbVar5 = local_1009, uVar11 != 0)))) {
                do {
                  pbVar5 = pbVar5 + 1;
                  uVar11 = uVar11 - 1;
                  if (local_1009 + local_1010 + 1 <= pbVar5) break;
                  if (*pbVar5 == 0xd) {
                    if ((pbVar5 < local_1009 + local_1010) && (pbVar5[1] == 10)) {
                      pbVar5 = pbVar5 + 1;
                    }
                  }
                  else {
                    pbVar5 = pbVar5 + (char)(&DAT_0323fca0)[*pbVar5];
                  }
                } while (uVar11 != 0);
              }
            }
          }
          goto LAB_00a4bdc7;
        }
        if ((*(byte *)(iVar2 + 4) & 0x80) != 0) {
          for (pcVar9 = _File->_base; pcVar9 < pcVar1; pcVar9 = pcVar9 + 1) {
            if (*pcVar9 == '\n') {
              local_1010 = local_1010 + 1;
            }
          }
        }
      }
      if (lVar12 != 0) {
        if ((*(byte *)&_File->_flag & 1) != 0) {
          iVar10 = _File->_cnt;
          if (iVar10 == 0) {
            local_1010 = 0;
          }
          else {
            pcVar9 = _File->_base;
            if ((*(byte *)(iVar2 + 4) & 0x80) != 0) {
              lVar13 = __lseeki64(_FileHandle,0x200000000,unaff_EDI);
              if (lVar13 == lVar12) {
                pcVar7 = _File->_base;
                pcVar1 = pcVar7 + (int)(pcVar1 + (iVar10 - (int)pcVar9));
                for (; pcVar7 < pcVar1; pcVar7 = pcVar7 + 1) {
                }
              }
              else {
                lVar12 = __lseeki64(_FileHandle,(ulonglong)uVar8,unaff_EDI);
                if (((int)((ulonglong)lVar12 >> 0x20) == 0 || lVar12 < 0) && (lVar12 < 0))
                goto LAB_00a4bdc7;
              }
            }
          }
        }
        if (local_1009[0] == 1) {
          local_1010 = local_1010 >> 1;
        }
      }
    }
  }
LAB_00a4bdc7:
  lVar12 = ___security_check_cookie_4();
  return lVar12;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __ftelli64
// 
// Library: Visual Studio 2008 Release

longlong __cdecl __ftelli64(FILE *_File)

{
  longlong lVar1;
  
  __lock_file(_File);
  lVar1 = __ftelli64_nolock(_File);
  FUN_00a4be16();
  return lVar1;
}



void FUN_00a4be16(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 8));
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _clearerr_s
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl _clearerr_s(FILE *_File)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  undefined *puVar4;
  
  if (_File != (FILE *)0x0) {
    __lock_file(_File);
    _File->_flag = _File->_flag & 0xffffffcf;
    iVar2 = __fileno(_File);
    if ((iVar2 == -1) || (iVar2 = __fileno(_File), iVar2 == -2)) {
      puVar4 = &DAT_03240190;
    }
    else {
      iVar2 = __fileno(_File);
      uVar3 = __fileno(_File);
      puVar4 = (undefined *)((uVar3 & 0x1f) * 0x40 + (&DAT_032f1700)[iVar2 >> 5]);
    }
    puVar4[4] = puVar4[4] & 0xfd;
    FUN_00a4bec5();
    return 0;
  }
  piVar1 = __errno();
  *piVar1 = 0x16;
  __invalid_parameter(0,0,0,0,0);
  return 0x16;
}



void FUN_00a4bec5(void)

{
  FILE *unaff_EDI;
  
  __unlock_file(unaff_EDI);
  return;
}



void FUN_00a4becd(FILE *param_1)

{
  _clearerr_s(param_1);
  return;
}



// Library Function - Single Match
//  __aullrem
// 
// Library: Visual Studio 2008 Release

undefined8 __aullrem(uint param_1,uint param_2,uint param_3,uint param_4)

{
  ulonglong uVar1;
  longlong lVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  bool bVar11;
  
  uVar3 = param_1;
  uVar4 = param_4;
  uVar9 = param_2;
  uVar10 = param_3;
  if (param_4 == 0) {
    iVar6 = (int)(((ulonglong)param_2 % (ulonglong)param_3 << 0x20 | (ulonglong)param_1) %
                 (ulonglong)param_3);
    iVar7 = 0;
  }
  else {
    do {
      uVar5 = uVar4 >> 1;
      uVar10 = uVar10 >> 1 | (uint)((uVar4 & 1) != 0) << 0x1f;
      uVar8 = uVar9 >> 1;
      uVar3 = uVar3 >> 1 | (uint)((uVar9 & 1) != 0) << 0x1f;
      uVar4 = uVar5;
      uVar9 = uVar8;
    } while (uVar5 != 0);
    uVar1 = CONCAT44(uVar8,uVar3) / (ulonglong)uVar10;
    uVar3 = (int)uVar1 * param_4;
    lVar2 = (uVar1 & 0xffffffff) * (ulonglong)param_3;
    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);
    uVar4 = (uint)lVar2;
    uVar10 = uVar9 + uVar3;
    if (((CARRY4(uVar9,uVar3)) || (param_2 < uVar10)) || ((param_2 <= uVar10 && (param_1 < uVar4))))
    {
      bVar11 = uVar4 < param_3;
      uVar4 = uVar4 - param_3;
      uVar10 = (uVar10 - param_4) - (uint)bVar11;
    }
    iVar6 = -(uVar4 - param_1);
    iVar7 = -(uint)(uVar4 - param_1 != 0) - ((uVar10 - param_2) - (uint)(uVar4 < param_1));
  }
  return CONCAT44(iVar7,iVar6);
}



// Library Function - Single Match
//  __allshr
// 
// Library: Visual Studio

undefined8 __fastcall __allshr(byte param_1,int param_2)

{
  uint in_EAX;
  int iVar1;
  
  iVar1 = param_2 >> 0x1f;
  if (0x3f < param_1) {
    return CONCAT44(iVar1,iVar1);
  }
  if (param_1 < 0x20) {
    return CONCAT44(param_2 >> (param_1 & 0x1f),
                    in_EAX >> (param_1 & 0x1f) | param_2 << 0x20 - (param_1 & 0x1f));
  }
  return CONCAT44(iVar1,param_2 >> (param_1 & 0x1f));
}



// Library Function - Single Match
//  __alldvrm
// 
// Library: Visual Studio 2008 Release

undefined8 __alldvrm(uint param_1,uint param_2,uint param_3,uint param_4)

{
  ulonglong uVar1;
  longlong lVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  bool bVar10;
  char cVar11;
  uint uVar9;
  
  cVar11 = (int)param_2 < 0;
  if ((bool)cVar11) {
    bVar10 = param_1 != 0;
    param_1 = -param_1;
    param_2 = -(uint)bVar10 - param_2;
  }
  if ((int)param_4 < 0) {
    cVar11 = cVar11 + '\x01';
    bVar10 = param_3 != 0;
    param_3 = -param_3;
    param_4 = -(uint)bVar10 - param_4;
  }
  uVar3 = param_1;
  uVar5 = param_3;
  uVar6 = param_2;
  uVar9 = param_4;
  if (param_4 == 0) {
    uVar3 = param_2 / param_3;
    iVar4 = (int)(((ulonglong)param_2 % (ulonglong)param_3 << 0x20 | (ulonglong)param_1) /
                 (ulonglong)param_3);
  }
  else {
    do {
      uVar8 = uVar9 >> 1;
      uVar5 = uVar5 >> 1 | (uint)((uVar9 & 1) != 0) << 0x1f;
      uVar7 = uVar6 >> 1;
      uVar3 = uVar3 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;
      uVar6 = uVar7;
      uVar9 = uVar8;
    } while (uVar8 != 0);
    uVar1 = CONCAT44(uVar7,uVar3) / (ulonglong)uVar5;
    iVar4 = (int)uVar1;
    lVar2 = (ulonglong)param_3 * (uVar1 & 0xffffffff);
    uVar3 = (uint)((ulonglong)lVar2 >> 0x20);
    uVar5 = uVar3 + iVar4 * param_4;
    if (((CARRY4(uVar3,iVar4 * param_4)) || (param_2 < uVar5)) ||
       ((param_2 <= uVar5 && (param_1 < (uint)lVar2)))) {
      iVar4 = iVar4 + -1;
    }
    uVar3 = 0;
  }
  if (cVar11 == '\x01') {
    bVar10 = iVar4 != 0;
    iVar4 = -iVar4;
    uVar3 = -(uint)bVar10 - uVar3;
  }
  return CONCAT44(uVar3,iVar4);
}



// Library Function - Single Match
//  _bsearch
// 
// Library: Visual Studio 2008 Release

void * __cdecl
_bsearch(void *_Key,void *_Base,size_t _NumOfElements,size_t _SizeOfElements,
        _PtFuncCompare *_PtFuncCompare)

{
  int *piVar1;
  uint uVar2;
  void *pvVar3;
  int iVar4;
  uint uVar5;
  void *pvVar6;
  
  pvVar6 = (void *)((_NumOfElements - 1) * _SizeOfElements + (int)_Base);
  if ((((_Base == (void *)0x0) && (_NumOfElements != 0)) || (_SizeOfElements == 0)) ||
     (_PtFuncCompare == (_PtFuncCompare *)0x0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else if (_Base <= pvVar6) {
    do {
      uVar5 = _NumOfElements >> 1;
      if (uVar5 == 0) {
        if (_NumOfElements == 0) {
          return (void *)0x0;
        }
        iVar4 = (*_PtFuncCompare)(_Key,_Base);
        return (void *)(~-(uint)(iVar4 != 0) & (uint)_Base);
      }
      uVar2 = uVar5;
      if ((_NumOfElements & 1) == 0) {
        uVar2 = uVar5 - 1;
      }
      pvVar3 = (void *)(uVar2 * _SizeOfElements + (int)_Base);
      iVar4 = (*_PtFuncCompare)(_Key,pvVar3);
      if (iVar4 == 0) {
        return pvVar3;
      }
      if (iVar4 < 0) {
        pvVar6 = (void *)((int)pvVar3 - _SizeOfElements);
        if ((_NumOfElements & 1) == 0) {
          uVar5 = uVar5 - 1;
        }
      }
      else {
        _Base = (void *)((int)pvVar3 + _SizeOfElements);
      }
      _NumOfElements = uVar5;
    } while (_Base <= pvVar6);
  }
  return (void *)0x0;
}



// Library Function - Single Match
//  __get_daylight
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl __get_daylight(int *_Daylight)

{
  int *piVar1;
  errno_t eVar2;
  
  if (_Daylight == (int *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    eVar2 = 0x16;
  }
  else {
    *_Daylight = DAT_0323fda4;
    eVar2 = 0;
  }
  return eVar2;
}



// Library Function - Single Match
//  __get_dstbias
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl __get_dstbias(long *_Daylight_savings_bias)

{
  int *piVar1;
  errno_t eVar2;
  
  if (_Daylight_savings_bias == (long *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    eVar2 = 0x16;
  }
  else {
    *_Daylight_savings_bias = DAT_0323fda8;
    eVar2 = 0;
  }
  return eVar2;
}



// Library Function - Single Match
//  __get_timezone
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl __get_timezone(long *_Timezone)

{
  int *piVar1;
  errno_t eVar2;
  
  if (_Timezone == (long *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    eVar2 = 0x16;
  }
  else {
    *_Timezone = DAT_0323fda0;
    eVar2 = 0;
  }
  return eVar2;
}



undefined4 * FUN_00a4c1dc(void)

{
  return &DAT_0323fda4;
}



undefined4 * FUN_00a4c1e2(void)

{
  return &DAT_0323fda8;
}



undefined4 * FUN_00a4c1e8(void)

{
  return &DAT_0323fda0;
}



undefined ** FUN_00a4c1ee(void)

{
  return &PTR_DAT_0323fe30;
}



// Library Function - Multiple Matches With Different Base Names
//  __set_daylight
//  __set_dstbias
//  __set_timezone
// 
// Library: Visual Studio 2008 Release

void __cdecl FID_conflict___set_dstbias(long _Value)

{
  long *plVar1;
  
  plVar1 = (long *)FUN_00a4c1dc();
  *plVar1 = _Value;
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  __set_daylight
//  __set_dstbias
//  __set_timezone
// 
// Library: Visual Studio 2008 Release

void __cdecl FID_conflict___set_dstbias(long _Value)

{
  long *plVar1;
  
  plVar1 = (long *)FUN_00a4c1e2();
  *plVar1 = _Value;
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  __set_daylight
//  __set_dstbias
//  __set_timezone
// 
// Library: Visual Studio 2008 Release

void __cdecl FID_conflict___set_dstbias(long _Value)

{
  long *plVar1;
  
  plVar1 = (long *)FUN_00a4c1e8();
  *plVar1 = _Value;
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __tzset_nolock
// 
// Library: Visual Studio 2008 Release

void __tzset_nolock(void)

{
  char cVar1;
  char cVar2;
  LPSTR *ppCVar3;
  int iVar4;
  errno_t eVar5;
  UINT CodePage;
  char *_Str1;
  int iVar6;
  size_t sVar7;
  DWORD DVar8;
  long lVar9;
  int *piVar10;
  char *pcVar11;
  int local_34;
  int local_30;
  int local_2c;
  int local_28;
  LPSTR *local_24;
  int local_20 [5];
  undefined4 uStack_c;
  undefined *local_8;
  
  local_8 = &DAT_03110d70;
  uStack_c = 0xa4c233;
  local_30 = 0;
  local_20[0] = 0;
  local_28 = 0;
  local_2c = 0;
  local_24 = (LPSTR *)0x0;
  __lock(7);
  local_8 = (undefined *)0x0;
  local_24 = (LPSTR *)FUN_00a4c1ee();
  eVar5 = __get_timezone(local_20);
  if (eVar5 != 0) {
                    // WARNING: Subroutine does not return
    __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
  }
  eVar5 = __get_daylight(&local_28);
  if (eVar5 != 0) {
                    // WARNING: Subroutine does not return
    __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
  }
  eVar5 = __get_dstbias(&local_2c);
  if (eVar5 != 0) {
                    // WARNING: Subroutine does not return
    __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
  }
  CodePage = ____lc_codepage_func();
  DAT_032eb324 = 0;
  DAT_0323fe44 = 0xffffffff;
  DAT_0323fe38 = 0xffffffff;
  _Str1 = __getenv_helper_nolock("TZ");
  if ((_Str1 == (char *)0x0) || (*_Str1 == '\0')) {
    if (DAT_032eb328 != (char *)0x0) {
      _free(DAT_032eb328);
      DAT_032eb328 = (char *)0x0;
    }
    DVar8 = GetTimeZoneInformation((LPTIME_ZONE_INFORMATION)&DAT_032eb278);
    if (DVar8 != 0xffffffff) {
      DAT_032eb324 = 1;
      local_20[0] = DAT_032eb278 * 0x3c;
      if (DAT_032eb2be != 0) {
        local_20[0] = local_20[0] + DAT_032eb2cc * 0x3c;
      }
      if ((DAT_032eb312 == 0) || (DAT_032eb320 == 0)) {
        local_28 = 0;
        local_2c = 0;
      }
      else {
        local_28 = 1;
        local_2c = (DAT_032eb320 - DAT_032eb2cc) * 0x3c;
      }
      iVar6 = WideCharToMultiByte(CodePage,0,(LPCWSTR)&DAT_032eb27c,-1,*local_24,0x3f,(LPCSTR)0x0,
                                  &local_34);
      if ((iVar6 == 0) || (local_34 != 0)) {
        **local_24 = '\0';
      }
      else {
        (*local_24)[0x3f] = '\0';
      }
      iVar6 = WideCharToMultiByte(CodePage,0,(LPCWSTR)&DAT_032eb2d0,-1,local_24[1],0x3f,(LPCSTR)0x0,
                                  &local_34);
      if ((iVar6 == 0) || (local_34 != 0)) {
        *local_24[1] = '\0';
      }
      else {
        local_24[1][0x3f] = '\0';
      }
    }
  }
  else {
    if (DAT_032eb328 != (char *)0x0) {
      iVar6 = _strcmp(_Str1,DAT_032eb328);
      if (iVar6 == 0) goto LAB_00a4c443;
      if (DAT_032eb328 != (char *)0x0) {
        _free(DAT_032eb328);
      }
    }
    sVar7 = _strlen(_Str1);
    DAT_032eb328 = (char *)__malloc_crt(sVar7 + 1);
    if (DAT_032eb328 != (char *)0x0) {
      pcVar11 = _Str1;
      sVar7 = _strlen(_Str1);
      eVar5 = _strcpy_s(DAT_032eb328,sVar7 + 1,pcVar11);
      if (eVar5 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      goto LAB_00a4c44a;
    }
  }
LAB_00a4c443:
  local_30 = 1;
LAB_00a4c44a:
  FID_conflict___set_dstbias(local_20[0]);
  FID_conflict___set_dstbias(local_28);
  FID_conflict___set_dstbias(local_2c);
  local_8 = (undefined *)0xfffffffe;
  FUN_00a4c4d3();
  ppCVar3 = local_24;
  if (local_30 == 0) {
    eVar5 = _strncpy_s(*local_24,0x40,_Str1,3);
    if (eVar5 != 0) {
                    // WARNING: Subroutine does not return
      __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
    }
    pcVar11 = _Str1 + 3;
    cVar2 = *pcVar11;
    if (cVar2 == '-') {
      pcVar11 = _Str1 + 4;
    }
    lVar9 = _atol(pcVar11);
    local_20[0] = lVar9 * 0xe10;
    for (; (cVar1 = *pcVar11, cVar1 == '+' || (('/' < cVar1 && (cVar1 < ':'))));
        pcVar11 = pcVar11 + 1) {
    }
    if (*pcVar11 == ':') {
      pcVar11 = pcVar11 + 1;
      lVar9 = _atol(pcVar11);
      local_20[0] = local_20[0] + lVar9 * 0x3c;
      for (; ('/' < *pcVar11 && (*pcVar11 < ':')); pcVar11 = pcVar11 + 1) {
      }
      if (*pcVar11 == ':') {
        pcVar11 = pcVar11 + 1;
        lVar9 = _atol(pcVar11);
        local_20[0] = local_20[0] + lVar9;
        for (; ('/' < *pcVar11 && (*pcVar11 < ':')); pcVar11 = pcVar11 + 1) {
        }
      }
    }
    if (cVar2 == '-') {
      local_20[0] = -local_20[0];
    }
    local_28 = (int)*pcVar11;
    if (local_28 == 0) {
      *ppCVar3[1] = '\0';
    }
    else {
      eVar5 = _strncpy_s(ppCVar3[1],0x40,pcVar11,3);
      if (eVar5 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
    }
    iVar4 = local_20[0];
    piVar10 = (int *)FUN_00a4c1e8();
    iVar6 = local_28;
    *piVar10 = iVar4;
    piVar10 = (int *)FUN_00a4c1dc();
    *piVar10 = iVar6;
  }
  return;
}



void FUN_00a4c4d3(void)

{
  FUN_00a4d824(7);
  return;
}



// Library Function - Single Match
//  _cvtdate
// 
// Library: Visual Studio 2008 Release

int __thiscall
_cvtdate(int param_1_00,int param_1,int param_2,uint param_3,int param_4,int param_5,int param_6,
        int param_7,int param_8,int param_9)

{
  int in_EAX;
  uint uVar1;
  int iVar2;
  errno_t eVar3;
  undefined *puVar4;
  undefined *puVar5;
  bool bVar6;
  int local_8;
  
  local_8 = 0;
  if (param_2 == 1) {
    uVar1 = param_3 & 0x80000003;
    if ((int)uVar1 < 0) {
      uVar1 = (uVar1 - 1 | 0xfffffffc) + 1;
    }
    if (((uVar1 == 0) && ((int)param_3 % 100 != 0)) || ((int)(param_3 + 0x76c) % 400 == 0)) {
      puVar4 = (&PTR_s_bad_allocation_032406f0)[in_EAX];
    }
    else {
      puVar4 = *(undefined **)(&DAT_03240724 + in_EAX * 4);
    }
    puVar5 = puVar4 + 1;
    iVar2 = (param_4 * 7 -
            (int)(puVar5 + param_3 * 0x16d + -0x63db +
                           ((int)(param_3 + 299) / 400 - (int)(param_3 - 1) / 100) +
                           ((int)((param_3 - 1) + ((int)(param_3 - 1) >> 0x1f & 3U)) >> 2)) % 7) +
            param_5;
    if ((int)(puVar5 + param_3 * 0x16d + -0x63db +
                       ((int)(param_3 + 299) / 400 - (int)(param_3 - 1) / 100) +
                       ((int)((param_3 - 1) + ((int)(param_3 - 1) >> 0x1f & 3U)) >> 2)) % 7 <=
        param_5) {
      puVar5 = puVar4 + -6;
    }
    puVar5 = puVar5 + iVar2;
    if (param_4 == 5) {
      if (((uVar1 == 0) && ((int)param_3 % 100 != 0)) || ((int)(param_3 + 0x76c) % 400 == 0)) {
        iVar2 = *(int *)(&DAT_032406f4 + in_EAX * 4);
      }
      else {
        iVar2 = (&DAT_03240728)[in_EAX];
      }
      if (iVar2 < (int)puVar5) {
        puVar5 = puVar5 + -7;
      }
    }
  }
  else {
    uVar1 = param_3 & 0x80000003;
    bVar6 = uVar1 == 0;
    if ((int)uVar1 < 0) {
      bVar6 = (uVar1 - 1 | 0xfffffffc) == 0xffffffff;
    }
    if (((bVar6) && (iVar2 = (int)param_3 / 100, (int)param_3 % 100 != 0)) ||
       (iVar2 = (int)(param_3 + 0x76c) / 400, (int)(param_3 + 0x76c) % 400 == 0)) {
      puVar5 = (&PTR_s_bad_allocation_032406f0)[in_EAX];
    }
    else {
      puVar5 = *(undefined **)(&DAT_03240724 + in_EAX * 4);
    }
    puVar5 = puVar5 + param_6;
  }
  param_9 = ((param_1_00 * 0x3c + param_7) * 0x3c + param_8) * 1000 + param_9;
  if (param_1 == 1) {
    DAT_0323fe38 = param_3;
    DAT_0323fe3c = puVar5;
    DAT_0323fe40 = param_9;
  }
  else {
    DAT_0323fe48 = puVar5;
    DAT_0323fe4c = param_9;
    eVar3 = __get_dstbias(&local_8);
    if (eVar3 != 0) {
                    // WARNING: Subroutine does not return
      __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
    }
    iVar2 = local_8 * 1000;
    DAT_0323fe4c = DAT_0323fe4c + iVar2;
    if (DAT_0323fe4c < 0) {
      DAT_0323fe4c = DAT_0323fe4c + 86400000;
      DAT_0323fe48 = DAT_0323fe48 + -1;
    }
    else {
      iVar2 = 86400000;
      if (86399999 < DAT_0323fe4c) {
        DAT_0323fe4c = DAT_0323fe4c + -86400000;
        DAT_0323fe48 = DAT_0323fe48 + 1;
      }
    }
    DAT_0323fe44 = param_3;
  }
  return iVar2;
}



// Library Function - Single Match
//  __isindst_nolock
// 
// Library: Visual Studio 2008 Release

bool __isindst_nolock(void)

{
  bool bVar1;
  errno_t eVar2;
  int iVar3;
  undefined4 uVar4;
  int *unaff_EDI;
  int iVar5;
  undefined2 uVar6;
  undefined2 uVar7;
  undefined2 uVar8;
  undefined4 local_c;
  int local_8;
  
  local_8 = 0;
  eVar2 = __get_daylight(&local_8);
  if (eVar2 != 0) {
                    // WARNING: Subroutine does not return
    __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
  }
  if (local_8 == 0) {
    return false;
  }
  iVar5 = unaff_EDI[5];
  if ((iVar5 != DAT_0323fe38) || (iVar5 != DAT_0323fe44)) {
    if (DAT_032eb324 == 0) {
      uVar4 = 2;
      local_c = 1;
      if (iVar5 < 0x6b) {
        uVar4 = 1;
        local_c = 5;
      }
      _cvtdate(1,1,iVar5,uVar4,0,0,0,0,0);
      _cvtdate(0,1,unaff_EDI[5],local_c,0,0,0,0,0);
    }
    else {
      if (DAT_032eb310 != 0) {
        uVar7 = 0;
        uVar6 = 0;
        uVar8 = DAT_032eb316;
      }
      else {
        uVar7 = DAT_032eb314;
        uVar6 = DAT_032eb316;
        uVar8 = 0;
      }
      _cvtdate(1,DAT_032eb310 == 0,iVar5,uVar6,uVar7,uVar8,DAT_032eb31a,DAT_032eb31c,DAT_032eb31e);
      if (DAT_032eb2bc != 0) {
        uVar7 = 0;
        uVar6 = 0;
        iVar5 = unaff_EDI[5];
        uVar8 = DAT_032eb2c2;
      }
      else {
        iVar5 = unaff_EDI[5];
        uVar7 = DAT_032eb2c0;
        uVar6 = DAT_032eb2c2;
        uVar8 = 0;
      }
      _cvtdate(0,DAT_032eb2bc == 0,iVar5,uVar6,uVar7,uVar8,DAT_032eb2c6,DAT_032eb2c8,DAT_032eb2ca);
    }
  }
  iVar5 = unaff_EDI[7];
  if (DAT_0323fe3c < DAT_0323fe48) {
    if ((iVar5 < DAT_0323fe3c) || (DAT_0323fe48 < iVar5)) {
      return false;
    }
    if ((DAT_0323fe3c < iVar5) && (iVar5 < DAT_0323fe48)) {
      return true;
    }
  }
  else {
    if (iVar5 < DAT_0323fe48) {
      return true;
    }
    if (DAT_0323fe3c < iVar5) {
      return true;
    }
    if ((DAT_0323fe48 < iVar5) && (iVar5 < DAT_0323fe3c)) {
      return false;
    }
  }
  iVar3 = ((unaff_EDI[2] * 0x3c + unaff_EDI[1]) * 0x3c + *unaff_EDI) * 1000;
  if (iVar5 == DAT_0323fe3c) {
    bVar1 = DAT_0323fe40 <= iVar3;
  }
  else {
    bVar1 = iVar3 < DAT_0323fe4c;
  }
  return bVar1;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  ___tzset
// 
// Library: Visual Studio 2008 Release

void ___tzset(void)

{
  if (DAT_032eb32c == 0) {
    __lock(6);
    if (DAT_032eb32c == 0) {
      __tzset_nolock();
      DAT_032eb32c = DAT_032eb32c + 1;
    }
    FUN_00a4c982();
  }
  return;
}



void FUN_00a4c982(void)

{
  FUN_00a4d824(6);
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __tzset
// 
// Library: Visual Studio 2008 Release

void __cdecl __tzset(void)

{
  __lock(6);
  __tzset_nolock();
  FUN_00a4c9ba();
  return;
}



void FUN_00a4c9ba(void)

{
  FUN_00a4d824(6);
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __isindst
// 
// Library: Visual Studio 2008 Release

int __cdecl __isindst(tm *_Time)

{
  int iVar1;
  
  __lock(6);
  iVar1 = __isindst_nolock();
  FUN_00a4c9fb();
  return iVar1;
}



void FUN_00a4c9fb(void)

{
  FUN_00a4d824(6);
  return;
}



// Library Function - Single Match
//  _atol
// 
// Library: Visual Studio 2008 Release

long __cdecl _atol(char *_Str)

{
  long lVar1;
  
  lVar1 = _strtol(_Str,(char **)0x0,10);
  return lVar1;
}



void FUN_00a4ca1a(char *param_1)

{
  _atol(param_1);
  return;
}



// Library Function - Single Match
//  __aullshr
// 
// Library: Visual Studio 2008 Release

ulonglong __fastcall __aullshr(byte param_1,uint param_2)

{
  uint in_EAX;
  
  if (0x3f < param_1) {
    return 0;
  }
  if (param_1 < 0x20) {
    return CONCAT44(param_2 >> (param_1 & 0x1f),
                    in_EAX >> (param_1 & 0x1f) | param_2 << 0x20 - (param_1 & 0x1f));
  }
  return (ulonglong)(param_2 >> (param_1 & 0x1f));
}



// Library Function - Single Match
//  __atof_l
// 
// Library: Visual Studio 2008 Release

double __cdecl __atof_l(char *_String,_locale_t _Locale)

{
  double dVar1;
  int *piVar2;
  uint uVar3;
  _locale_t _Locale_00;
  FLT p_Var4;
  _flt local_2c;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
  if (_String == (char *)0x0) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
    dVar1 = 0.0;
  }
  else {
    while( true ) {
      if ((int)(local_14.locinfo)->locale_name[3] < 2) {
        uVar3 = *(ushort *)(local_14.locinfo[1].lc_category[0].locale + (uint)(byte)*_String * 2) &
                8;
      }
      else {
        uVar3 = __isctype_l((uint)(byte)*_String,8,&local_14);
      }
      if (uVar3 == 0) break;
      _String = (char *)((byte *)_String + 1);
    }
    _Locale_00 = (_locale_t)_strlen(_String);
    p_Var4 = __fltin2(&local_2c,_String,_Locale_00);
    dVar1 = p_Var4->dval;
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
  }
  return dVar1;
}



// Library Function - Single Match
//  _atof
// 
// Library: Visual Studio 2008 Release

double __cdecl _atof(char *_String)

{
  double dVar1;
  
  dVar1 = __atof_l(_String,(_locale_t)0x0);
  return dVar1;
}



// Library Function - Single Match
//  unsigned long __cdecl strtoxl(struct localeinfo_struct *,char const *,char const * *,int,int)
// 
// Library: Visual Studio 2008 Release

ulong __cdecl
strtoxl(localeinfo_struct *param_1,char *param_2,char **param_3,int param_4,int param_5)

{
  ushort uVar1;
  byte *pbVar2;
  int *piVar3;
  uint uVar4;
  pthreadlocinfo ptVar5;
  uint uVar6;
  int iVar7;
  byte bVar8;
  byte *pbVar9;
  localeinfo_struct local_18;
  int local_10;
  char local_c;
  ulong local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_18,param_1);
  if (param_3 != (char **)0x0) {
    *param_3 = param_2;
  }
  if ((param_2 == (char *)0x0) || ((param_4 != 0 && ((param_4 < 2 || (0x24 < param_4)))))) {
    piVar3 = __errno();
    *piVar3 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_c != '\0') {
      *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
    }
    return 0;
  }
  bVar8 = *param_2;
  local_8 = 0;
  ptVar5 = local_18.locinfo;
  pbVar2 = (byte *)param_2;
  while( true ) {
    pbVar9 = pbVar2 + 1;
    if ((int)ptVar5->locale_name[3] < 2) {
      uVar4 = *(ushort *)(ptVar5[1].lc_category[0].locale + (uint)bVar8 * 2) & 8;
    }
    else {
      uVar4 = __isctype_l((uint)bVar8,8,&local_18);
      ptVar5 = local_18.locinfo;
    }
    if (uVar4 == 0) break;
    bVar8 = *pbVar9;
    pbVar2 = pbVar9;
  }
  if (bVar8 == 0x2d) {
    param_5 = param_5 | 2;
LAB_00a4cbc6:
    bVar8 = *pbVar9;
    pbVar9 = pbVar2 + 2;
  }
  else if (bVar8 == 0x2b) goto LAB_00a4cbc6;
  if (((param_4 < 0) || (param_4 == 1)) || (0x24 < param_4)) {
    if (param_3 != (char **)0x0) {
      *param_3 = param_2;
    }
    if (local_c != '\0') {
      *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
    }
    return 0;
  }
  if (param_4 == 0) {
    if (bVar8 != 0x30) {
      param_4 = 10;
      goto LAB_00a4cc2c;
    }
    if ((*pbVar9 != 0x78) && (*pbVar9 != 0x58)) {
      param_4 = 8;
      goto LAB_00a4cc2c;
    }
    param_4 = 0x10;
  }
  else if ((param_4 != 0x10) || (bVar8 != 0x30)) goto LAB_00a4cc2c;
  if ((*pbVar9 == 0x78) || (*pbVar9 == 0x58)) {
    bVar8 = pbVar9[1];
    pbVar9 = pbVar9 + 2;
  }
LAB_00a4cc2c:
  uVar4 = (uint)(0xffffffff / (ulonglong)(uint)param_4);
  do {
    uVar1 = *(ushort *)(ptVar5[1].lc_category[0].locale + (uint)bVar8 * 2);
    if ((uVar1 & 4) == 0) {
      if ((uVar1 & 0x103) == 0) {
LAB_00a4cc89:
        pbVar9 = pbVar9 + -1;
        if ((param_5 & 8U) == 0) {
          if (param_3 != (char **)0x0) {
            pbVar9 = (byte *)param_2;
          }
          local_8 = 0;
        }
        else if (((param_5 & 4U) != 0) ||
                (((param_5 & 1U) == 0 &&
                 ((((param_5 & 2U) != 0 && (0x80000000 < local_8)) ||
                  (((param_5 & 2U) == 0 && (0x7fffffff < local_8)))))))) {
          piVar3 = __errno();
          *piVar3 = 0x22;
          if ((param_5 & 1U) == 0) {
            local_8 = ((param_5 & 2U) != 0) + 0x7fffffff;
          }
          else {
            local_8 = 0xffffffff;
          }
        }
        if (param_3 != (char **)0x0) {
          *param_3 = (char *)pbVar9;
        }
        if ((param_5 & 2U) != 0) {
          local_8 = -local_8;
        }
        if (local_c == '\0') {
          return local_8;
        }
        *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
        return local_8;
      }
      iVar7 = (int)(char)bVar8;
      if ((byte)(bVar8 + 0x9f) < 0x1a) {
        iVar7 = iVar7 + -0x20;
      }
      uVar6 = iVar7 - 0x37;
    }
    else {
      uVar6 = (int)(char)bVar8 - 0x30;
    }
    if ((uint)param_4 <= uVar6) goto LAB_00a4cc89;
    if ((local_8 < uVar4) ||
       ((local_8 == uVar4 && (uVar6 <= (uint)(0xffffffff % (ulonglong)(uint)param_4))))) {
      local_8 = local_8 * param_4 + uVar6;
      param_5 = param_5 | 8;
    }
    else {
      param_5 = param_5 | 0xc;
      if (param_3 == (char **)0x0) goto LAB_00a4cc89;
    }
    bVar8 = *pbVar9;
    pbVar9 = pbVar9 + 1;
  } while( true );
}



// Library Function - Single Match
//  _strtol
// 
// Library: Visual Studio 2008 Release

long __cdecl _strtol(char *_Str,char **_EndPtr,int _Radix)

{
  ulong uVar1;
  undefined **ppuVar2;
  
  if (DAT_032eb230 == 0) {
    ppuVar2 = &PTR_DAT_03240178;
  }
  else {
    ppuVar2 = (undefined **)0x0;
  }
  uVar1 = strtoxl((localeinfo_struct *)ppuVar2,_Str,_EndPtr,_Radix,0);
  return uVar1;
}



// Library Function - Single Match
//  _strtoul
// 
// Library: Visual Studio 2008 Release

ulong __cdecl _strtoul(char *_Str,char **_EndPtr,int _Radix)

{
  ulong uVar1;
  undefined **ppuVar2;
  
  if (DAT_032eb230 == 0) {
    ppuVar2 = &PTR_DAT_03240178;
  }
  else {
    ppuVar2 = (undefined **)0x0;
  }
  uVar1 = strtoxl((localeinfo_struct *)ppuVar2,_Str,_EndPtr,_Radix,1);
  return uVar1;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

float10 FUN_00a4cda0(double param_1,undefined2 param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  bool bVar4;
  ushort in_FPUControlWord;
  float10 fVar5;
  double dVar6;
  ulonglong uVar7;
  undefined4 uVar8;
  undefined8 uVar9;
  
  if (DAT_032f16d8 != 0) {
    bVar4 = (MXCSR & 0x1f80) == 0x1f80;
    if (bVar4) {
      bVar4 = (in_FPUControlWord & 0x7f) == 0x7f;
    }
    if (bVar4) {
      uVar2 = (uint)((ulonglong)param_1 >> 0x20);
      uVar1 = uVar2 >> 0x14;
      uVar7 = (ulonglong)(0x433 - (uVar2 >> 0x14 & 0x7ff));
      if ((uVar1 & 0x800) == 0) {
        if (uVar1 < 0x3ff) {
          return (float10)0;
        }
        if (uVar1 < 0x433) {
          return (float10)(double)(((ulonglong)param_1 >> uVar7) << uVar7);
        }
      }
      else {
        dVar6 = (double)(((ulonglong)param_1 >> uVar7) << uVar7);
        if (uVar1 < 0xbff) {
          return (float10)(double)((-(ulonglong)(param_1 < -0.0) | SUB168(_DAT_00da1640,0)) &
                                  0xbff0000000000000);
        }
        if (uVar1 < 0xc33) {
          return (float10)(dVar6 - (double)(-(ulonglong)(param_1 < dVar6) & 0x3ff0000000000000));
        }
      }
      if (NAN(param_1)) {
        ___libm_error_support(&param_1,&param_1,&param_1,0x3ed);
      }
      return (float10)(double)CONCAT26(param_1._6_2_,param_1._0_6_);
    }
  }
  uVar2 = __ctrlfp(DAT_03240a3c,0xffff);
  if ((param_1._6_2_ & 0x7ff0) == 0x7ff0) {
    iVar3 = __sptype();
    if (0 < iVar3) {
      if (iVar3 < 3) {
        __ctrlfp(uVar2,0xffff);
        return (float10)(double)CONCAT26(param_1._6_2_,param_1._0_6_);
      }
      if (iVar3 == 3) {
        fVar5 = (float10)__handle_qnan1();
        return fVar5;
      }
    }
    dVar6 = (double)CONCAT26(param_1._6_2_,param_1._0_6_) + 1.0;
    uVar9 = CONCAT26(param_1._6_2_,param_1._0_6_);
    uVar8 = 8;
  }
  else {
    fVar5 = (float10)__frnd((int)param_1._0_6_,(int)(CONCAT26(param_1._6_2_,param_1._0_6_) >> 0x20))
    ;
    dVar6 = (double)fVar5;
    if (((NAN((double)CONCAT26(param_1._6_2_,param_1._0_6_)) || NAN(dVar6)) !=
         ((double)CONCAT26(param_1._6_2_,param_1._0_6_) == dVar6)) || ((uVar2 & 0x20) != 0)) {
      __ctrlfp(uVar2,0xffff);
      return (float10)dVar6;
    }
    uVar9 = CONCAT26(param_1._6_2_,param_1._0_6_);
    uVar8 = 0x10;
  }
  fVar5 = (float10)__except1(uVar8,0xb,uVar9,dVar6,uVar2);
                    // WARNING: Read-only address (ram,0x00da1640) is written
  return fVar5;
}



// Library Function - Single Match
//  _strncmp
// 
// Library: Visual Studio 2008 Release

int __cdecl _strncmp(char *_Str1,char *_Str2,size_t _MaxCount)

{
  byte *pbVar1;
  uint uVar2;
  byte *pbVar3;
  uint uVar4;
  uint local_8;
  
  local_8 = 0;
  if (_MaxCount != 0) {
    if ((3 < _MaxCount) && (pbVar1 = (byte *)_Str1, pbVar3 = (byte *)_Str2, _MaxCount != 4)) {
      do {
        _Str1 = (char *)(pbVar1 + 4);
        _Str2 = (char *)(pbVar3 + 4);
        if ((*pbVar1 == 0) || (*pbVar1 != *pbVar3)) {
          uVar2 = (uint)*pbVar1;
          uVar4 = (uint)*pbVar3;
          goto LAB_00a4cf7d;
        }
        if ((pbVar1[1] == 0) || (pbVar1[1] != pbVar3[1])) {
          uVar2 = (uint)pbVar1[1];
          uVar4 = (uint)pbVar3[1];
          goto LAB_00a4cf7d;
        }
        if ((pbVar1[2] == 0) || (pbVar1[2] != pbVar3[2])) {
          uVar2 = (uint)pbVar1[2];
          uVar4 = (uint)pbVar3[2];
          goto LAB_00a4cf7d;
        }
        if ((pbVar1[3] == 0) || (pbVar1[3] != pbVar3[3])) {
          uVar2 = (uint)pbVar1[3];
          uVar4 = (uint)pbVar3[3];
          goto LAB_00a4cf7d;
        }
        local_8 = local_8 + 4;
        pbVar1 = (byte *)_Str1;
        pbVar3 = (byte *)_Str2;
      } while (local_8 < _MaxCount - 4);
    }
    for (; local_8 < _MaxCount; local_8 = local_8 + 1) {
      if ((*_Str1 == 0) || (*_Str1 != *_Str2)) {
        uVar2 = (uint)(byte)*_Str1;
        uVar4 = (uint)(byte)*_Str2;
LAB_00a4cf7d:
        return uVar2 - uVar4;
      }
      _Str1 = (char *)((byte *)_Str1 + 1);
      _Str2 = (char *)((byte *)_Str2 + 1);
    }
  }
  return 0;
}



void FUN_00a4d0f0(void)

{
  bool bVar1;
  ushort in_FPUControlWord;
  float10 in_ST0;
  
  if (DAT_032f16d8 != 0) {
    bVar1 = (MXCSR & 0x1f80) == 0x1f80;
    if (bVar1) {
      bVar1 = (in_FPUControlWord & 0x7f) == 0x7f;
    }
    if (bVar1) {
      FUN_00a61020();
      return;
    }
  }
  FUN_00a61448((double)in_ST0);
  FUN_00a4d148();
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

ushort FUN_00a4d13f(int param_1)

{
  ushort uVar1;
  uint uVar2;
  undefined in_ZF;
  ushort in_FPUStatusWord;
  unkbyte10 extraout_ST0;
  float10 fVar3;
  
  uVar2 = __fload_withFB();
  if ((bool)in_ZF) {
    if (((uVar2 & 0xfffff) == 0) && (param_1 == 0)) {
      in_FPUStatusWord = 1;
    }
    else {
      in_FPUStatusWord = FUN_00a613ec();
    }
    if (DAT_032eb21c == 0) {
      uVar1 = __startOneArgErrorHandling();
      return uVar1;
    }
  }
  else {
    fVar3 = (float10)fsin(extraout_ST0);
    if ((in_FPUStatusWord & 0x400) != 0) {
      do {
        fVar3 = fVar3 - (fVar3 / _DAT_00da33aa) * _DAT_00da33aa;
      } while ((in_FPUStatusWord & 0x400) != 0);
      fsin(fVar3);
    }
    if (DAT_032eb21c == 0) {
      uVar1 = __math_exit();
      return uVar1;
    }
  }
  return in_FPUStatusWord;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

ushort FUN_00a4d148(int param_1)

{
  ushort uVar1;
  uint in_EAX;
  bool in_ZF;
  ushort in_FPUStatusWord;
  unkbyte10 in_ST0;
  float10 fVar2;
  
  if (in_ZF) {
    if (((in_EAX & 0xfffff) == 0) && (param_1 == 0)) {
      in_FPUStatusWord = 1;
    }
    else {
      in_FPUStatusWord = FUN_00a613ec();
    }
    if (DAT_032eb21c == 0) {
      uVar1 = __startOneArgErrorHandling();
      return uVar1;
    }
  }
  else {
    fVar2 = (float10)fsin(in_ST0);
    if ((in_FPUStatusWord & 0x400) != 0) {
      do {
        fVar2 = fVar2 - (fVar2 / _DAT_00da33aa) * _DAT_00da33aa;
      } while ((in_FPUStatusWord & 0x400) != 0);
      fsin(fVar2);
    }
    if (DAT_032eb21c == 0) {
      uVar1 = __math_exit();
      return uVar1;
    }
  }
  return in_FPUStatusWord;
}



void FUN_00a4d220(void)

{
  bool bVar1;
  ushort in_FPUControlWord;
  float10 in_ST0;
  
  if (DAT_032f16d8 != 0) {
    bVar1 = (MXCSR & 0x1f80) == 0x1f80;
    if (bVar1) {
      bVar1 = (in_FPUControlWord & 0x7f) == 0x7f;
    }
    if (bVar1) {
      FUN_00a615b0();
      return;
    }
  }
  FUN_00a61448((double)in_ST0);
  FUN_00a4d278();
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

ushort FUN_00a4d26f(int param_1)

{
  ushort uVar1;
  uint uVar2;
  undefined in_ZF;
  ushort in_FPUStatusWord;
  unkbyte10 extraout_ST0;
  float10 fVar3;
  
  uVar2 = __fload_withFB();
  if ((bool)in_ZF) {
    if (((uVar2 & 0xfffff) == 0) && (param_1 == 0)) {
      in_FPUStatusWord = 1;
    }
    else {
      in_FPUStatusWord = FUN_00a613ec();
    }
    if (DAT_032eb21c == 0) {
      uVar1 = __startOneArgErrorHandling();
      return uVar1;
    }
  }
  else {
    fVar3 = (float10)fcos(extraout_ST0);
    if ((in_FPUStatusWord & 0x400) != 0) {
      do {
        fVar3 = fVar3 - (fVar3 / _DAT_00da33aa) * _DAT_00da33aa;
      } while ((in_FPUStatusWord & 0x400) != 0);
      fcos(fVar3);
    }
    if (DAT_032eb21c == 0) {
      uVar1 = __math_exit();
      return uVar1;
    }
  }
  return in_FPUStatusWord;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

ushort FUN_00a4d278(int param_1)

{
  ushort uVar1;
  uint in_EAX;
  bool in_ZF;
  ushort in_FPUStatusWord;
  unkbyte10 in_ST0;
  float10 fVar2;
  
  if (in_ZF) {
    if (((in_EAX & 0xfffff) == 0) && (param_1 == 0)) {
      in_FPUStatusWord = 1;
    }
    else {
      in_FPUStatusWord = FUN_00a613ec();
    }
    if (DAT_032eb21c == 0) {
      uVar1 = __startOneArgErrorHandling();
      return uVar1;
    }
  }
  else {
    fVar2 = (float10)fcos(in_ST0);
    if ((in_FPUStatusWord & 0x400) != 0) {
      do {
        fVar2 = fVar2 - (fVar2 / _DAT_00da33aa) * _DAT_00da33aa;
      } while ((in_FPUStatusWord & 0x400) != 0);
      fcos(fVar2);
    }
    if (DAT_032eb21c == 0) {
      uVar1 = __math_exit();
      return uVar1;
    }
  }
  return in_FPUStatusWord;
}



// WARNING: Unable to track spacebase fully for stack
// Library Function - Multiple Matches With Different Base Names
//  ___longjmp_internal
//  _longjmp
// 
// Library: Visual Studio 2019 Release

void __cdecl FID_conflict____longjmp_internal(int *_Buf,int _Value)

{
  int iVar1;
  PVOID TargetFrame;
  EXCEPTION_RECORD local_54;
  
  local_54.ExceptionCode = 0x80000026;
  local_54.ExceptionFlags = 0;
  local_54.ExceptionRecord = (_EXCEPTION_RECORD *)0x0;
  local_54.ExceptionAddress = (PVOID)0x0;
  local_54.NumberParameters = 0;
  TargetFrame = (PVOID)_Buf[6];
  if (TargetFrame != ExceptionList) {
    RtlUnwind(TargetFrame,(PVOID)0xa4d35a,&local_54,(PVOID)0x0);
  }
  if (TargetFrame != (PVOID)0x0) {
    iVar1 = __rt_probe_read4_4(_Buf + 8);
    if ((iVar1 == 0) || (_Buf[8] != 0x56433230)) {
      __local_unwind2(TargetFrame,_Buf[7]);
    }
    else if ((code *)_Buf[9] != (code *)0x0) {
      (*(code *)_Buf[9])(_Buf);
    }
  }
  __NLG_Notify(0);
                    // WARNING: Could not recover jumptable at 0x00a4d3b6. Too many branches
                    // WARNING: Treating indirect jump as call
  (*(code *)_Buf[5])();
  return;
}



// Library Function - Single Match
//  __setjmp3
// 
// Library: Visual Studio

undefined4 __setjmp3(undefined4 *param_1,int param_2,void *param_3,undefined4 param_4)

{
  void *pvVar1;
  uint uVar2;
  undefined4 unaff_EBX;
  undefined4 unaff_EBP;
  undefined4 unaff_ESI;
  undefined4 *puVar3;
  undefined4 unaff_EDI;
  undefined4 *puVar4;
  undefined4 unaff_retaddr;
  
  *param_1 = unaff_EBP;
  param_1[1] = unaff_EBX;
  param_1[2] = unaff_EDI;
  param_1[3] = unaff_ESI;
  param_1[4] = register0x00000010;
  param_1[5] = unaff_retaddr;
  param_1[8] = 0x56433230;
  param_1[9] = 0;
  pvVar1 = ExceptionList;
  param_1[6] = ExceptionList;
  if (pvVar1 == (void *)0xffffffff) {
    param_1[7] = 0xffffffff;
  }
  else if ((param_2 == 0) || (param_1[9] = param_3, pvVar1 = param_3, param_2 == 1)) {
    param_1[7] = *(undefined4 *)((int)pvVar1 + 0xc);
  }
  else {
    param_1[7] = param_4;
    uVar2 = param_2 - 2;
    if (uVar2 != 0) {
      puVar3 = (undefined4 *)&stack0x00000014;
      puVar4 = param_1 + 10;
      if (6 < uVar2) {
        uVar2 = 6;
      }
      for (; uVar2 != 0; uVar2 = uVar2 - 1) {
        *puVar4 = *puVar3;
        puVar3 = puVar3 + 1;
        puVar4 = puVar4 + 1;
      }
    }
  }
  return 0;
}



void FUN_00a4d440(void)

{
  float10 in_ST0;
  
  FUN_00a61448((double)in_ST0);
  FUN_00a4d45d();
  return;
}



uint FUN_00a4d45d(int param_1,uint param_2)

{
  uint uVar1;
  bool in_ZF;
  short in_FPUControlWord;
  
  if (in_ZF) {
    if (((param_2 & 0xfffff) != 0) || (param_1 != 0)) {
      uVar1 = FUN_00a613ec();
      goto LAB_00a4d4db;
    }
    param_2 = param_2 & 0x80000000;
    if (param_2 == 0) goto LAB_00a4d47e;
  }
  else {
    if (in_FPUControlWord != 0x27f) {
      param_2 = FUN_00a613d5();
    }
    if (((param_2 & 0x80000000) == 0) ||
       ((((param_2 & 0x7ff00000) == 0 && ((param_2 & 0xfffff) == 0)) && (param_1 == 0)))) {
LAB_00a4d47e:
      if (DAT_032eb21c != 0) {
        return param_2;
      }
      uVar1 = __math_exit();
      return uVar1;
    }
  }
  uVar1 = 1;
LAB_00a4d4db:
  if (DAT_032eb21c != 0) {
    return uVar1;
  }
  uVar1 = __startOneArgErrorHandling();
  return uVar1;
}



// Library Function - Single Match
//  __getdrive
// 
// Library: Visual Studio 2008 Release

int __cdecl __getdrive(void)

{
  bool bVar1;
  DWORD DVar2;
  byte *lpBuffer;
  int *piVar3;
  int iVar4;
  byte local_110 [264];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  bVar1 = false;
  lpBuffer = local_110;
  DVar2 = GetCurrentDirectoryA(0x105,(LPSTR)lpBuffer);
  if (0x104 < (int)DVar2) {
    lpBuffer = (byte *)__calloc_crt(DVar2 + 1,1);
    if (lpBuffer == (byte *)0x0) {
      piVar3 = __errno();
      *piVar3 = 0xc;
      DVar2 = 0;
    }
    else {
      bVar1 = true;
      if (DVar2 != 0) {
        DVar2 = GetCurrentDirectoryA(DVar2 + 1,(LPSTR)lpBuffer);
      }
    }
  }
  if (DVar2 == 0) {
    piVar3 = __errno();
    *piVar3 = 0xc;
  }
  else if (lpBuffer[1] == 0x3a) {
    _toupper((uint)*lpBuffer);
  }
  if (bVar1) {
    _free(lpBuffer);
  }
  iVar4 = ___security_check_cookie_4();
  return iVar4;
}



void FUN_00a4d5da(void)

{
  __cintrindisp2();
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  ___report_gsfailure
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release

void __cdecl ___report_gsfailure(void)

{
  undefined4 in_EAX;
  HANDLE hProcess;
  undefined4 in_ECX;
  undefined4 in_EDX;
  undefined4 unaff_EBX;
  undefined4 unaff_EBP;
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  undefined2 in_ES;
  undefined2 in_CS;
  undefined2 in_SS;
  undefined2 in_DS;
  undefined2 in_FS;
  undefined2 in_GS;
  byte in_AF;
  byte in_TF;
  byte in_IF;
  byte in_NT;
  byte in_AC;
  byte in_VIF;
  byte in_VIP;
  byte in_ID;
  undefined4 unaff_retaddr;
  UINT uExitCode;
  undefined4 local_32c;
  undefined4 local_328;
  
  _DAT_032eb448 =
       (uint)(in_NT & 1) * 0x4000 | (uint)SBORROW4((int)&stack0xfffffffc,0x328) * 0x800 |
       (uint)(in_IF & 1) * 0x200 | (uint)(in_TF & 1) * 0x100 | (uint)((int)&local_32c < 0) * 0x80 |
       (uint)(&stack0x00000000 == (undefined *)0x32c) * 0x40 | (uint)(in_AF & 1) * 0x10 |
       (uint)((POPCOUNT((uint)&local_32c & 0xff) & 1U) == 0) * 4 |
       (uint)(&stack0xfffffffc < (undefined *)0x328) | (uint)(in_ID & 1) * 0x200000 |
       (uint)(in_VIP & 1) * 0x100000 | (uint)(in_VIF & 1) * 0x80000 | (uint)(in_AC & 1) * 0x40000;
  _DAT_032eb44c = &stack0x00000004;
  _DAT_032eb388 = 0x10001;
  _DAT_032eb330 = 0xc0000409;
  _DAT_032eb334 = 1;
  local_32c = DAT_0323f878;
  local_328 = DAT_0323f87c;
  _DAT_032eb33c = unaff_retaddr;
  _DAT_032eb414 = in_GS;
  _DAT_032eb418 = in_FS;
  _DAT_032eb41c = in_ES;
  _DAT_032eb420 = in_DS;
  _DAT_032eb424 = unaff_EDI;
  _DAT_032eb428 = unaff_ESI;
  _DAT_032eb42c = unaff_EBX;
  _DAT_032eb430 = in_EDX;
  _DAT_032eb434 = in_ECX;
  _DAT_032eb438 = in_EAX;
  _DAT_032eb43c = unaff_EBP;
  DAT_032eb440 = unaff_retaddr;
  _DAT_032eb444 = in_CS;
  _DAT_032eb450 = in_SS;
  DAT_032eb380 = IsDebuggerPresent();
  FUN_00a50065(1);
  SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)0x0);
  UnhandledExceptionFilter((_EXCEPTION_POINTERS *)&PTR_DAT_00da16a8);
  if (DAT_032eb380 == 0) {
    FUN_00a50065(1);
  }
  uExitCode = 0xc0000409;
  hProcess = GetCurrentProcess();
  TerminateProcess(hProcess,uExitCode);
  return;
}



// Library Function - Single Match
//  _strcpy_s
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl _strcpy_s(char *_Dst,rsize_t _SizeInBytes,char *_Src)

{
  char cVar1;
  int *piVar2;
  char *pcVar3;
  errno_t eVar4;
  
  if ((_Dst != (char *)0x0) && (_SizeInBytes != 0)) {
    pcVar3 = _Dst;
    if (_Src != (char *)0x0) {
      do {
        cVar1 = *_Src;
        *pcVar3 = cVar1;
        _Src = _Src + 1;
        if (cVar1 == '\0') break;
        _SizeInBytes = _SizeInBytes - 1;
        pcVar3 = pcVar3 + 1;
      } while (_SizeInBytes != 0);
      if (_SizeInBytes != 0) {
        return 0;
      }
      *_Dst = '\0';
      piVar2 = __errno();
      eVar4 = 0x22;
      *piVar2 = 0x22;
      goto LAB_00a4d70c;
    }
    *_Dst = '\0';
  }
  piVar2 = __errno();
  eVar4 = 0x16;
  *piVar2 = 0x16;
LAB_00a4d70c:
  __invalid_parameter(0,0,0,0,0);
  return eVar4;
}



// Library Function - Single Match
//  __heap_init
// 
// Library: Visual Studio 2008 Release

int __cdecl __heap_init(void)

{
  int in_stack_00000004;
  
  DAT_032eb654 = HeapCreate((uint)(in_stack_00000004 == 0),0x1000,0);
  if (DAT_032eb654 == (HANDLE)0x0) {
    return 0;
  }
  DAT_032f181c = 1;
  return 1;
}



// Library Function - Single Match
//  __mtinitlocks
// 
// Library: Visual Studio 2008 Release

int __cdecl __mtinitlocks(void)

{
  int iVar1;
  int iVar2;
  undefined *puVar3;
  
  iVar2 = 0;
  puVar3 = &DAT_032eb658;
  do {
    if ((&DAT_0323fe9c)[iVar2 * 2] == 1) {
      (&DAT_0323fe98)[iVar2 * 2] = puVar3;
      puVar3 = puVar3 + 0x18;
      iVar1 = ___crtInitCritSecAndSpinCount((&DAT_0323fe98)[iVar2 * 2],4000);
      if (iVar1 == 0) {
        (&DAT_0323fe98)[iVar2 * 2] = 0;
        return 0;
      }
    }
    iVar2 = iVar2 + 1;
  } while (iVar2 < 0x24);
  return 1;
}



// Library Function - Single Match
//  __mtdeletelocks
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void __cdecl __mtdeletelocks(void)

{
  LPCRITICAL_SECTION lpCriticalSection;
  LPCRITICAL_SECTION *pp_Var1;
  
  pp_Var1 = (LPCRITICAL_SECTION *)&DAT_0323fe98;
  do {
    lpCriticalSection = *pp_Var1;
    if ((lpCriticalSection != (LPCRITICAL_SECTION)0x0) && (pp_Var1[1] != (LPCRITICAL_SECTION)0x1)) {
      DeleteCriticalSection(lpCriticalSection);
      _free(lpCriticalSection);
      *pp_Var1 = (LPCRITICAL_SECTION)0x0;
    }
    pp_Var1 = pp_Var1 + 2;
  } while ((int)pp_Var1 < 0x323ffb8);
  pp_Var1 = (LPCRITICAL_SECTION *)&DAT_0323fe98;
  do {
    if ((*pp_Var1 != (LPCRITICAL_SECTION)0x0) && (pp_Var1[1] == (LPCRITICAL_SECTION)0x1)) {
      DeleteCriticalSection(*pp_Var1);
    }
    pp_Var1 = pp_Var1 + 2;
  } while ((int)pp_Var1 < 0x323ffb8);
  return;
}



void FUN_00a4d824(int param_1)

{
  LeaveCriticalSection((LPCRITICAL_SECTION)(&DAT_0323fe98)[param_1 * 2]);
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __mtinitlocknum
// 
// Library: Visual Studio 2008 Release

int __cdecl __mtinitlocknum(int _LockNum)

{
  void **ppvVar1;
  void *_Memory;
  int *piVar2;
  int iVar3;
  int local_20;
  
  iVar3 = 1;
  local_20 = 1;
  if (DAT_032eb654 == 0) {
    __FF_MSGBANNER();
    __NMSG_WRITE(0x1e);
    ___crtExitProcess(0xff);
  }
  ppvVar1 = (void **)(&DAT_0323fe98 + _LockNum * 2);
  if (*ppvVar1 == (void *)0x0) {
    _Memory = __malloc_crt(0x18);
    if (_Memory == (void *)0x0) {
      piVar2 = __errno();
      *piVar2 = 0xc;
      iVar3 = 0;
    }
    else {
      __lock(10);
      if (*ppvVar1 == (void *)0x0) {
        iVar3 = ___crtInitCritSecAndSpinCount(_Memory,4000);
        if (iVar3 == 0) {
          _free(_Memory);
          piVar2 = __errno();
          *piVar2 = 0xc;
          local_20 = 0;
        }
        else {
          *ppvVar1 = _Memory;
        }
      }
      else {
        _free(_Memory);
      }
      FUN_00a4d8f5();
      iVar3 = local_20;
    }
  }
  return iVar3;
}



void FUN_00a4d8f5(void)

{
  FUN_00a4d824(10);
  return;
}



// Library Function - Single Match
//  __lock
// 
// Library: Visual Studio 2008 Release

void __cdecl __lock(int _File)

{
  int iVar1;
  
  if ((LPCRITICAL_SECTION)(&DAT_0323fe98)[_File * 2] == (LPCRITICAL_SECTION)0x0) {
    iVar1 = __mtinitlocknum(_File);
    if (iVar1 == 0) {
      __amsg_exit(0x11);
    }
  }
  EnterCriticalSection((LPCRITICAL_SECTION)(&DAT_0323fe98)[_File * 2]);
  return;
}



// Library Function - Single Match
//  ___sbh_find_block
// 
// Library: Visual Studio 2008 Release

uint ___sbh_find_block(int param_1)

{
  uint uVar1;
  
  uVar1 = DAT_032f1808;
  while( true ) {
    if (DAT_032f1804 * 0x14 + DAT_032f1808 <= uVar1) {
      return 0;
    }
    if ((uint)(param_1 - *(int *)(uVar1 + 0xc)) < 0x100000) break;
    uVar1 = uVar1 + 0x14;
  }
  return uVar1;
}



// Library Function - Single Match
//  ___sbh_free_block
// 
// Library: Visual Studio 2008 Release

void ___sbh_free_block(uint *param_1,int param_2)

{
  int *piVar1;
  char *pcVar2;
  uint *puVar3;
  int *piVar4;
  char cVar5;
  uint uVar6;
  uint uVar7;
  byte bVar8;
  uint uVar9;
  uint *puVar10;
  uint *puVar11;
  uint *puVar12;
  uint uVar13;
  uint uVar14;
  uint local_8;
  
  uVar6 = param_1[4];
  puVar12 = (uint *)(param_2 + -4);
  uVar14 = param_2 - param_1[3] >> 0xf;
  piVar4 = (int *)(uVar14 * 0x204 + 0x144 + uVar6);
  local_8 = *puVar12 - 1;
  if ((local_8 & 1) == 0) {
    puVar10 = (uint *)(local_8 + (int)puVar12);
    uVar13 = *puVar10;
    uVar7 = *(uint *)(param_2 + -8);
    if ((uVar13 & 1) == 0) {
      uVar9 = ((int)uVar13 >> 4) - 1;
      if (0x3f < uVar9) {
        uVar9 = 0x3f;
      }
      if (puVar10[1] == puVar10[2]) {
        if (uVar9 < 0x20) {
          pcVar2 = (char *)(uVar9 + 4 + uVar6);
          uVar9 = ~(0x80000000U >> ((byte)uVar9 & 0x1f));
          puVar11 = (uint *)(uVar6 + 0x44 + uVar14 * 4);
          *puVar11 = *puVar11 & uVar9;
          *pcVar2 = *pcVar2 + -1;
          if (*pcVar2 == '\0') {
            *param_1 = *param_1 & uVar9;
          }
        }
        else {
          pcVar2 = (char *)(uVar9 + 4 + uVar6);
          uVar9 = ~(0x80000000U >> ((byte)uVar9 - 0x20 & 0x1f));
          puVar11 = (uint *)(uVar6 + 0xc4 + uVar14 * 4);
          *puVar11 = *puVar11 & uVar9;
          *pcVar2 = *pcVar2 + -1;
          if (*pcVar2 == '\0') {
            param_1[1] = param_1[1] & uVar9;
          }
        }
      }
      local_8 = local_8 + uVar13;
      *(uint *)(puVar10[2] + 4) = puVar10[1];
      *(uint *)(puVar10[1] + 8) = puVar10[2];
    }
    puVar10 = (uint *)(((int)local_8 >> 4) + -1);
    if ((uint *)0x3f < puVar10) {
      puVar10 = (uint *)0x3f;
    }
    puVar11 = param_1;
    if ((uVar7 & 1) == 0) {
      puVar12 = (uint *)((int)puVar12 - uVar7);
      puVar11 = (uint *)(((int)uVar7 >> 4) + -1);
      if ((uint *)0x3f < puVar11) {
        puVar11 = (uint *)0x3f;
      }
      local_8 = local_8 + uVar7;
      puVar10 = (uint *)(((int)local_8 >> 4) + -1);
      if ((uint *)0x3f < puVar10) {
        puVar10 = (uint *)0x3f;
      }
      if (puVar11 != puVar10) {
        if (puVar12[1] == puVar12[2]) {
          if (&DAT_0000001f < puVar11) {
            uVar13 = ~(0x80000000U >> ((byte)puVar11 - 0x20 & 0x1f));
            puVar3 = (uint *)(uVar6 + 0xc4 + uVar14 * 4);
            *puVar3 = *puVar3 & uVar13;
            pcVar2 = (char *)((int)puVar11 + uVar6 + 4);
            *pcVar2 = *pcVar2 + -1;
            if (*pcVar2 == '\0') {
              param_1[1] = param_1[1] & uVar13;
            }
          }
          else {
            uVar13 = ~(0x80000000U >> ((byte)puVar11 & 0x1f));
            puVar3 = (uint *)(uVar6 + 0x44 + uVar14 * 4);
            *puVar3 = *puVar3 & uVar13;
            pcVar2 = (char *)((int)puVar11 + uVar6 + 4);
            *pcVar2 = *pcVar2 + -1;
            if (*pcVar2 == '\0') {
              *param_1 = *param_1 & uVar13;
            }
          }
        }
        *(uint *)(puVar12[2] + 4) = puVar12[1];
        *(uint *)(puVar12[1] + 8) = puVar12[2];
      }
    }
    if (((uVar7 & 1) != 0) || (puVar11 != puVar10)) {
      piVar1 = piVar4 + (int)puVar10 * 2;
      uVar13 = piVar1[1];
      puVar12[2] = (uint)piVar1;
      puVar12[1] = uVar13;
      piVar1[1] = (int)puVar12;
      *(uint **)(puVar12[1] + 8) = puVar12;
      if (puVar12[1] == puVar12[2]) {
        cVar5 = *(char *)((int)puVar10 + uVar6 + 4);
        *(char *)((int)puVar10 + uVar6 + 4) = cVar5 + '\x01';
        bVar8 = (byte)puVar10;
        if (&DAT_0000001f < puVar10) {
          if (cVar5 == '\0') {
            param_1[1] = param_1[1] | 0x80000000U >> (bVar8 - 0x20 & 0x1f);
          }
          puVar10 = (uint *)(uVar6 + 0xc4 + uVar14 * 4);
          *puVar10 = *puVar10 | 0x80000000U >> (bVar8 - 0x20 & 0x1f);
        }
        else {
          if (cVar5 == '\0') {
            *param_1 = *param_1 | 0x80000000U >> (bVar8 & 0x1f);
          }
          puVar10 = (uint *)(uVar6 + 0x44 + uVar14 * 4);
          *puVar10 = *puVar10 | 0x80000000U >> (bVar8 & 0x1f);
        }
      }
    }
    *puVar12 = local_8;
    *(uint *)((local_8 - 4) + (int)puVar12) = local_8;
    *piVar4 = *piVar4 + -1;
    if (*piVar4 == 0) {
      if (DAT_032eb7a8 != (uint *)0x0) {
        VirtualFree((LPVOID)(DAT_032f1818 * 0x8000 + DAT_032eb7a8[3]),0x8000,0x4000);
        DAT_032eb7a8[2] = DAT_032eb7a8[2] | 0x80000000U >> ((byte)DAT_032f1818 & 0x1f);
        *(undefined4 *)(DAT_032eb7a8[4] + 0xc4 + DAT_032f1818 * 4) = 0;
        *(char *)(DAT_032eb7a8[4] + 0x43) = *(char *)(DAT_032eb7a8[4] + 0x43) + -1;
        if (*(char *)(DAT_032eb7a8[4] + 0x43) == '\0') {
          DAT_032eb7a8[1] = DAT_032eb7a8[1] & 0xfffffffe;
        }
        if (DAT_032eb7a8[2] == 0xffffffff) {
          VirtualFree((LPVOID)DAT_032eb7a8[3],0,0x8000);
          HeapFree(DAT_032eb654,0,(LPVOID)DAT_032eb7a8[4]);
          _memmove(DAT_032eb7a8,DAT_032eb7a8 + 5,
                   (DAT_032f1804 * 0x14 - (int)DAT_032eb7a8) + -0x14 + DAT_032f1808);
          DAT_032f1804 = DAT_032f1804 + -1;
          if (DAT_032eb7a8 < param_1) {
            param_1 = param_1 + -5;
          }
          DAT_032f1810 = DAT_032f1808;
        }
      }
      DAT_032eb7a8 = param_1;
      DAT_032f1818 = uVar14;
    }
  }
  return;
}



// Library Function - Single Match
//  ___sbh_alloc_new_region
// 
// Library: Visual Studio 2008 Release

undefined4 * ___sbh_alloc_new_region(void)

{
  LPVOID pvVar1;
  undefined4 *puVar2;
  
  if (DAT_032f1804 == DAT_032f1814) {
    pvVar1 = HeapReAlloc(DAT_032eb654,0,DAT_032f1808,(DAT_032f1814 + 0x10) * 0x14);
    if (pvVar1 == (LPVOID)0x0) {
      return (undefined4 *)0x0;
    }
    DAT_032f1814 = DAT_032f1814 + 0x10;
    DAT_032f1808 = pvVar1;
  }
  puVar2 = (undefined4 *)(DAT_032f1804 * 0x14 + (int)DAT_032f1808);
  pvVar1 = HeapAlloc(DAT_032eb654,8,0x41c4);
  puVar2[4] = pvVar1;
  if (pvVar1 != (LPVOID)0x0) {
    pvVar1 = VirtualAlloc((LPVOID)0x0,0x100000,0x2000,4);
    puVar2[3] = pvVar1;
    if (pvVar1 != (LPVOID)0x0) {
      puVar2[2] = 0xffffffff;
      *puVar2 = 0;
      puVar2[1] = 0;
      DAT_032f1804 = DAT_032f1804 + 1;
      *(undefined4 *)puVar2[4] = 0xffffffff;
      return puVar2;
    }
    HeapFree(DAT_032eb654,0,(LPVOID)puVar2[4]);
  }
  return (undefined4 *)0x0;
}



// Library Function - Single Match
//  ___sbh_alloc_new_group
// 
// Library: Visual Studio 2008 Release

int ___sbh_alloc_new_group(int param_1)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  LPVOID pvVar5;
  int *piVar6;
  int iVar7;
  int iVar8;
  LPVOID lpAddress;
  
  iVar2 = *(int *)(param_1 + 0x10);
  iVar8 = 0;
  for (iVar3 = *(int *)(param_1 + 8); -1 < iVar3; iVar3 = iVar3 * 2) {
    iVar8 = iVar8 + 1;
  }
  iVar3 = iVar8 * 0x204 + 0x144 + iVar2;
  iVar7 = 0x3f;
  iVar4 = iVar3;
  do {
    *(int *)(iVar4 + 8) = iVar4;
    *(int *)(iVar4 + 4) = iVar4;
    iVar4 = iVar4 + 8;
    iVar7 = iVar7 + -1;
  } while (iVar7 != 0);
  lpAddress = (LPVOID)(iVar8 * 0x8000 + *(int *)(param_1 + 0xc));
  pvVar5 = VirtualAlloc(lpAddress,0x8000,0x1000,4);
  if (pvVar5 == (LPVOID)0x0) {
    iVar8 = -1;
  }
  else {
    if (lpAddress <= (LPVOID)((int)lpAddress + 0x7000U)) {
      piVar6 = (int *)((int)lpAddress + 0x10);
      iVar7 = ((uint)((int)(LPVOID)((int)lpAddress + 0x7000U) - (int)lpAddress) >> 0xc) + 1;
      do {
        piVar6[-2] = -1;
        piVar6[0x3fb] = -1;
        *piVar6 = (int)(piVar6 + 0x3ff);
        piVar6[-1] = 0xff0;
        piVar6[1] = (int)(piVar6 + -0x401);
        piVar6[0x3fa] = 0xff0;
        piVar6 = piVar6 + 0x400;
        iVar7 = iVar7 + -1;
      } while (iVar7 != 0);
    }
    *(int *)(iVar3 + 0x1fc) = (int)lpAddress + 0xc;
    *(int *)((int)lpAddress + 0x14) = iVar3 + 0x1f8;
    *(int *)(iVar3 + 0x200) = (int)lpAddress + 0x700c;
    *(int *)((int)lpAddress + 0x7010) = iVar3 + 0x1f8;
    *(undefined4 *)(iVar2 + 0x44 + iVar8 * 4) = 0;
    *(undefined4 *)(iVar2 + 0xc4 + iVar8 * 4) = 1;
    cVar1 = *(char *)(iVar2 + 0x43);
    *(char *)(iVar2 + 0x43) = cVar1 + '\x01';
    if (cVar1 == '\0') {
      *(uint *)(param_1 + 4) = *(uint *)(param_1 + 4) | 1;
    }
    *(uint *)(param_1 + 8) = *(uint *)(param_1 + 8) & ~(0x80000000U >> ((byte)iVar8 & 0x1f));
  }
  return iVar8;
}



// Library Function - Single Match
//  ___sbh_resize_block
// 
// Library: Visual Studio 2008 Release

undefined4 ___sbh_resize_block(uint *param_1,int param_2,int param_3)

{
  char *pcVar1;
  uint *puVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  int iVar6;
  char cVar7;
  uint uVar8;
  uint *puVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint local_c;
  
  uVar8 = param_1[4];
  uVar10 = param_2 - param_1[3] >> 0xf;
  iVar5 = uVar10 * 0x204 + 0x144 + uVar8;
  uVar12 = param_3 + 0x17U & 0xfffffff0;
  param_3 = *(int *)(param_2 + -4) + -1;
  puVar9 = (uint *)(*(int *)(param_2 + -4) + -5 + param_2);
  uVar13 = *puVar9;
  if (param_3 < (int)uVar12) {
    if (((uVar13 & 1) != 0) || ((int)(uVar13 + param_3) < (int)uVar12)) {
      return 0;
    }
    local_c = ((int)uVar13 >> 4) - 1;
    if (0x3f < local_c) {
      local_c = 0x3f;
    }
    if (puVar9[1] == puVar9[2]) {
      if (local_c < 0x20) {
        pcVar1 = (char *)(local_c + 4 + uVar8);
        uVar11 = ~(0x80000000U >> ((byte)local_c & 0x1f));
        puVar2 = (uint *)(uVar8 + 0x44 + uVar10 * 4);
        *puVar2 = *puVar2 & uVar11;
        *pcVar1 = *pcVar1 + -1;
        if (*pcVar1 == '\0') {
          *param_1 = *param_1 & uVar11;
        }
      }
      else {
        pcVar1 = (char *)(local_c + 4 + uVar8);
        uVar11 = ~(0x80000000U >> ((byte)local_c - 0x20 & 0x1f));
        puVar2 = (uint *)(uVar8 + 0xc4 + uVar10 * 4);
        *puVar2 = *puVar2 & uVar11;
        *pcVar1 = *pcVar1 + -1;
        if (*pcVar1 == '\0') {
          param_1[1] = param_1[1] & uVar11;
        }
      }
    }
    *(uint *)(puVar9[2] + 4) = puVar9[1];
    *(uint *)(puVar9[1] + 8) = puVar9[2];
    iVar6 = uVar13 + (param_3 - uVar12);
    if (0 < iVar6) {
      uVar13 = (iVar6 >> 4) - 1;
      iVar3 = param_2 + -4 + uVar12;
      if (0x3f < uVar13) {
        uVar13 = 0x3f;
      }
      iVar5 = iVar5 + uVar13 * 8;
      *(undefined4 *)(iVar3 + 4) = *(undefined4 *)(iVar5 + 4);
      *(int *)(iVar3 + 8) = iVar5;
      *(int *)(iVar5 + 4) = iVar3;
      *(int *)(*(int *)(iVar3 + 4) + 8) = iVar3;
      if (*(int *)(iVar3 + 4) == *(int *)(iVar3 + 8)) {
        cVar7 = *(char *)(uVar13 + 4 + uVar8);
        *(char *)(uVar13 + 4 + uVar8) = cVar7 + '\x01';
        if (uVar13 < 0x20) {
          if (cVar7 == '\0') {
            *param_1 = *param_1 | 0x80000000U >> ((byte)uVar13 & 0x1f);
          }
          puVar9 = (uint *)(uVar8 + 0x44 + uVar10 * 4);
        }
        else {
          if (cVar7 == '\0') {
            param_1[1] = param_1[1] | 0x80000000U >> ((byte)uVar13 - 0x20 & 0x1f);
          }
          puVar9 = (uint *)(uVar8 + 0xc4 + uVar10 * 4);
          uVar13 = uVar13 - 0x20;
        }
        *puVar9 = *puVar9 | 0x80000000U >> ((byte)uVar13 & 0x1f);
      }
      piVar4 = (int *)(param_2 + -4 + uVar12);
      *piVar4 = iVar6;
      *(int *)(iVar6 + -4 + (int)piVar4) = iVar6;
    }
    *(uint *)(param_2 + -4) = uVar12 + 1;
    *(uint *)(param_2 + -8 + uVar12) = uVar12 + 1;
  }
  else if ((int)uVar12 < param_3) {
    param_3 = param_3 - uVar12;
    *(uint *)(param_2 + -4) = uVar12 + 1;
    piVar4 = (int *)(param_2 + -4 + uVar12);
    uVar11 = (param_3 >> 4) - 1;
    piVar4[-1] = uVar12 + 1;
    if (0x3f < uVar11) {
      uVar11 = 0x3f;
    }
    if ((uVar13 & 1) == 0) {
      uVar12 = ((int)uVar13 >> 4) - 1;
      if (0x3f < uVar12) {
        uVar12 = 0x3f;
      }
      if (puVar9[1] == puVar9[2]) {
        if (uVar12 < 0x20) {
          pcVar1 = (char *)(uVar12 + 4 + uVar8);
          uVar12 = ~(0x80000000U >> ((byte)uVar12 & 0x1f));
          puVar2 = (uint *)(uVar8 + 0x44 + uVar10 * 4);
          *puVar2 = *puVar2 & uVar12;
          *pcVar1 = *pcVar1 + -1;
          if (*pcVar1 == '\0') {
            *param_1 = *param_1 & uVar12;
          }
        }
        else {
          pcVar1 = (char *)(uVar12 + 4 + uVar8);
          uVar12 = ~(0x80000000U >> ((byte)uVar12 - 0x20 & 0x1f));
          puVar2 = (uint *)(uVar8 + 0xc4 + uVar10 * 4);
          *puVar2 = *puVar2 & uVar12;
          *pcVar1 = *pcVar1 + -1;
          if (*pcVar1 == '\0') {
            param_1[1] = param_1[1] & uVar12;
          }
        }
      }
      *(uint *)(puVar9[2] + 4) = puVar9[1];
      *(uint *)(puVar9[1] + 8) = puVar9[2];
      param_3 = param_3 + uVar13;
      uVar11 = (param_3 >> 4) - 1;
      if (0x3f < uVar11) {
        uVar11 = 0x3f;
      }
    }
    iVar5 = iVar5 + uVar11 * 8;
    iVar6 = *(int *)(iVar5 + 4);
    piVar4[2] = iVar5;
    piVar4[1] = iVar6;
    *(int **)(iVar5 + 4) = piVar4;
    *(int **)(piVar4[1] + 8) = piVar4;
    if (piVar4[1] == piVar4[2]) {
      cVar7 = *(char *)(uVar11 + 4 + uVar8);
      *(char *)(uVar11 + 4 + uVar8) = cVar7 + '\x01';
      if (uVar11 < 0x20) {
        if (cVar7 == '\0') {
          *param_1 = *param_1 | 0x80000000U >> ((byte)uVar11 & 0x1f);
        }
        puVar9 = (uint *)(uVar8 + 0x44 + uVar10 * 4);
      }
      else {
        if (cVar7 == '\0') {
          param_1[1] = param_1[1] | 0x80000000U >> ((byte)uVar11 - 0x20 & 0x1f);
        }
        puVar9 = (uint *)(uVar8 + 0xc4 + uVar10 * 4);
        uVar11 = uVar11 - 0x20;
      }
      *puVar9 = *puVar9 | 0x80000000U >> ((byte)uVar11 & 0x1f);
    }
    *piVar4 = param_3;
    *(int *)(param_3 + -4 + (int)piVar4) = param_3;
  }
  return 1;
}



// Library Function - Single Match
//  ___sbh_alloc_block
// 
// Library: Visual Studio 2008 Release

int * ___sbh_alloc_block(uint *param_1)

{
  int *piVar1;
  char *pcVar2;
  int *piVar3;
  char cVar4;
  int *piVar5;
  undefined4 uVar6;
  byte bVar7;
  uint uVar8;
  int iVar9;
  uint *puVar10;
  int iVar11;
  uint uVar12;
  int *piVar13;
  uint *puVar14;
  uint *puVar15;
  uint uVar16;
  int iVar17;
  uint local_c;
  int local_8;
  
  puVar10 = DAT_032f1808 + DAT_032f1804 * 5;
  uVar8 = (int)param_1 + 0x17U & 0xfffffff0;
  iVar9 = ((int)((int)param_1 + 0x17U) >> 4) + -1;
  bVar7 = (byte)iVar9;
  param_1 = DAT_032f1810;
  if (iVar9 < 0x20) {
    uVar16 = 0xffffffff >> (bVar7 & 0x1f);
    local_c = 0xffffffff;
  }
  else {
    uVar16 = 0;
    local_c = 0xffffffff >> (bVar7 - 0x20 & 0x1f);
  }
  for (; (param_1 < puVar10 && ((param_1[1] & local_c | *param_1 & uVar16) == 0));
      param_1 = param_1 + 5) {
  }
  puVar14 = DAT_032f1808;
  if (param_1 == puVar10) {
    for (; (puVar14 < DAT_032f1810 && ((puVar14[1] & local_c | *puVar14 & uVar16) == 0));
        puVar14 = puVar14 + 5) {
    }
    param_1 = puVar14;
    if (puVar14 == DAT_032f1810) {
      for (; (puVar14 < puVar10 && (puVar14[2] == 0)); puVar14 = puVar14 + 5) {
      }
      puVar15 = DAT_032f1808;
      param_1 = puVar14;
      if (puVar14 == puVar10) {
        for (; (puVar15 < DAT_032f1810 && (puVar15[2] == 0)); puVar15 = puVar15 + 5) {
        }
        param_1 = puVar15;
        if ((puVar15 == DAT_032f1810) &&
           (param_1 = (uint *)___sbh_alloc_new_region(), param_1 == (uint *)0x0)) {
          return (int *)0x0;
        }
      }
      uVar6 = ___sbh_alloc_new_group(param_1);
      *(undefined4 *)param_1[4] = uVar6;
      if (*(int *)param_1[4] == -1) {
        return (int *)0x0;
      }
    }
  }
  piVar5 = (int *)param_1[4];
  local_8 = *piVar5;
  if ((local_8 == -1) || ((piVar5[local_8 + 0x31] & local_c | piVar5[local_8 + 0x11] & uVar16) == 0)
     ) {
    local_8 = 0;
    puVar10 = (uint *)(piVar5 + 0x11);
    uVar12 = piVar5[0x31];
    while ((uVar12 & local_c | *puVar10 & uVar16) == 0) {
      local_8 = local_8 + 1;
      puVar14 = puVar10 + 0x21;
      puVar10 = puVar10 + 1;
      uVar12 = *puVar14;
    }
  }
  piVar3 = piVar5 + local_8 * 0x81 + 0x51;
  iVar9 = 0;
  uVar16 = piVar5[local_8 + 0x11] & uVar16;
  if (uVar16 == 0) {
    uVar16 = piVar5[local_8 + 0x31] & local_c;
    iVar9 = 0x20;
  }
  for (; -1 < (int)uVar16; uVar16 = uVar16 * 2) {
    iVar9 = iVar9 + 1;
  }
  piVar13 = (int *)piVar3[iVar9 * 2 + 1];
  iVar11 = *piVar13 - uVar8;
  iVar17 = (iVar11 >> 4) + -1;
  if (0x3f < iVar17) {
    iVar17 = 0x3f;
  }
  DAT_032f1810 = param_1;
  if (iVar17 != iVar9) {
    if (piVar13[1] == piVar13[2]) {
      if (iVar9 < 0x20) {
        pcVar2 = (char *)((int)piVar5 + iVar9 + 4);
        uVar16 = ~(0x80000000U >> ((byte)iVar9 & 0x1f));
        piVar5[local_8 + 0x11] = uVar16 & piVar5[local_8 + 0x11];
        *pcVar2 = *pcVar2 + -1;
        if (*pcVar2 == '\0') {
          *param_1 = *param_1 & uVar16;
        }
      }
      else {
        pcVar2 = (char *)((int)piVar5 + iVar9 + 4);
        uVar16 = ~(0x80000000U >> ((byte)iVar9 - 0x20 & 0x1f));
        piVar5[local_8 + 0x31] = piVar5[local_8 + 0x31] & uVar16;
        *pcVar2 = *pcVar2 + -1;
        if (*pcVar2 == '\0') {
          param_1[1] = param_1[1] & uVar16;
        }
      }
    }
    *(int *)(piVar13[2] + 4) = piVar13[1];
    *(int *)(piVar13[1] + 8) = piVar13[2];
    if (iVar11 == 0) goto LAB_00a4e3b2;
    piVar1 = piVar3 + iVar17 * 2;
    iVar9 = piVar1[1];
    piVar13[2] = (int)piVar1;
    piVar13[1] = iVar9;
    piVar1[1] = (int)piVar13;
    *(int **)(piVar13[1] + 8) = piVar13;
    if (piVar13[1] == piVar13[2]) {
      cVar4 = *(char *)(iVar17 + 4 + (int)piVar5);
      *(char *)(iVar17 + 4 + (int)piVar5) = cVar4 + '\x01';
      bVar7 = (byte)iVar17;
      if (iVar17 < 0x20) {
        if (cVar4 == '\0') {
          *param_1 = *param_1 | 0x80000000U >> (bVar7 & 0x1f);
        }
        piVar5[local_8 + 0x11] = piVar5[local_8 + 0x11] | 0x80000000U >> (bVar7 & 0x1f);
      }
      else {
        if (cVar4 == '\0') {
          param_1[1] = param_1[1] | 0x80000000U >> (bVar7 - 0x20 & 0x1f);
        }
        piVar5[local_8 + 0x31] = piVar5[local_8 + 0x31] | 0x80000000U >> (bVar7 - 0x20 & 0x1f);
      }
    }
  }
  if (iVar11 != 0) {
    *piVar13 = iVar11;
    *(int *)(iVar11 + -4 + (int)piVar13) = iVar11;
  }
LAB_00a4e3b2:
  piVar13 = (int *)((int)piVar13 + iVar11);
  *piVar13 = uVar8 + 1;
  *(uint *)((int)piVar13 + (uVar8 - 4)) = uVar8 + 1;
  iVar9 = *piVar3;
  *piVar3 = iVar9 + 1;
  if (((iVar9 == 0) && (param_1 == DAT_032eb7a8)) && (local_8 == DAT_032f1818)) {
    DAT_032eb7a8 = (uint *)0x0;
  }
  *piVar5 = local_8;
  return piVar13 + 1;
}



// WARNING: This is an inlined function
// WARNING: Unable to track spacebase fully for stack
// Library Function - Single Match
//  __SEH_prolog4
// 
// Library: Visual Studio

void __SEH_prolog4(undefined4 param_1,int param_2)

{
  undefined4 unaff_EBX;
  undefined4 unaff_ESI;
  undefined4 unaff_EDI;
  undefined4 unaff_retaddr;
  uint auStack_1c [5];
  undefined local_8 [8];
  
  param_2 = -param_2;
  *(undefined4 *)((int)auStack_1c + param_2 + 0x10) = unaff_EBX;
  *(undefined4 *)((int)auStack_1c + param_2 + 0xc) = unaff_ESI;
  *(undefined4 *)((int)auStack_1c + param_2 + 8) = unaff_EDI;
  *(uint *)((int)auStack_1c + param_2 + 4) = DAT_0323f878 ^ (uint)&stack0x00000008;
  *(undefined4 *)((int)auStack_1c + param_2) = unaff_retaddr;
  ExceptionList = local_8;
  return;
}



// WARNING: This is an inlined function
// Library Function - Single Match
//  __SEH_epilog4
// 
// Library: Visual Studio

void __SEH_epilog4(void)

{
  undefined4 *unaff_EBP;
  undefined4 unaff_retaddr;
  
  ExceptionList = (void *)unaff_EBP[-4];
  *unaff_EBP = unaff_retaddr;
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// Library Function - Single Match
//  void __cdecl terminate(void)
// 
// Library: Visual Studio 2008 Release

void __cdecl terminate(void)

{
  _ptiddata p_Var1;
  
  p_Var1 = __getptd();
  if ((code *)p_Var1->_terminate != (code *)0x0) {
    (*(code *)p_Var1->_terminate)();
  }
                    // WARNING: Subroutine does not return
  _abort();
}



void FUN_00a4e48a(void)

{
  _ptiddata p_Var1;
  
  p_Var1 = __getptd();
  if ((code *)p_Var1->_unexpected != (code *)0x0) {
    (*(code *)p_Var1->_unexpected)();
  }
  terminate();
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// Library Function - Single Match
//  void __cdecl _inconsistency(void)
// 
// Library: Visual Studio 2008 Release

void __cdecl _inconsistency(void)

{
  code *pcVar1;
  
  pcVar1 = (code *)__decode_pointer(DAT_032eb7ac);
  if (pcVar1 != (code *)0x0) {
    (*pcVar1)();
  }
  terminate();
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// Library Function - Single Match
//  __initp_eh_hooks
// 
// Library: Visual Studio 2008 Release

void __initp_eh_hooks(void)

{
  DAT_032eb7ac = __encode_pointer(terminate);
  return;
}



// Library Function - Single Match
//  __encode_pointer
// 
// Library: Visual Studio 2008 Release

int __encode_pointer(int param_1)

{
  LPVOID pvVar1;
  code *pcVar2;
  int iVar3;
  HMODULE hModule;
  FARPROC pFVar4;
  
  pvVar1 = TlsGetValue(DAT_0323ffbc);
  if ((pvVar1 != (LPVOID)0x0) && (DAT_0323ffb8 != -1)) {
    iVar3 = DAT_0323ffb8;
    pcVar2 = (code *)TlsGetValue(DAT_0323ffbc);
    iVar3 = (*pcVar2)(iVar3);
    if (iVar3 != 0) {
      pFVar4 = *(FARPROC *)(iVar3 + 0x1f8);
      goto LAB_00a4e546;
    }
  }
  hModule = GetModuleHandleW(L"KERNEL32.DLL");
  if ((hModule == (HMODULE)0x0) &&
     (hModule = (HMODULE)__crt_waiting_on_module_handle(L"KERNEL32.DLL"), hModule == (HMODULE)0x0))
  {
    return param_1;
  }
  pFVar4 = GetProcAddress(hModule,"EncodePointer");
LAB_00a4e546:
  if (pFVar4 != (FARPROC)0x0) {
    param_1 = (*pFVar4)(param_1);
  }
  return param_1;
}



// Library Function - Single Match
//  __encoded_null
// 
// Library: Visual Studio 2008 Release

void __encoded_null(void)

{
  __encode_pointer(0);
  return;
}



// Library Function - Single Match
//  __decode_pointer
// 
// Library: Visual Studio 2008 Release

int __decode_pointer(int param_1)

{
  LPVOID pvVar1;
  code *pcVar2;
  int iVar3;
  HMODULE hModule;
  FARPROC pFVar4;
  
  pvVar1 = TlsGetValue(DAT_0323ffbc);
  if ((pvVar1 != (LPVOID)0x0) && (DAT_0323ffb8 != -1)) {
    iVar3 = DAT_0323ffb8;
    pcVar2 = (code *)TlsGetValue(DAT_0323ffbc);
    iVar3 = (*pcVar2)(iVar3);
    if (iVar3 != 0) {
      pFVar4 = *(FARPROC *)(iVar3 + 0x1fc);
      goto LAB_00a4e5c1;
    }
  }
  hModule = GetModuleHandleW(L"KERNEL32.DLL");
  if ((hModule == (HMODULE)0x0) &&
     (hModule = (HMODULE)__crt_waiting_on_module_handle(L"KERNEL32.DLL"), hModule == (HMODULE)0x0))
  {
    return param_1;
  }
  pFVar4 = GetProcAddress(hModule,"DecodePointer");
LAB_00a4e5c1:
  if (pFVar4 != (FARPROC)0x0) {
    param_1 = (*pFVar4)(param_1);
  }
  return param_1;
}



// Library Function - Single Match
//  ___fls_getvalue@4
// 
// Library: Visual Studio 2008 Release

void ___fls_getvalue_4(undefined4 param_1)

{
  code *pcVar1;
  
  pcVar1 = (code *)TlsGetValue(DAT_0323ffbc);
  (*pcVar1)(param_1);
  return;
}



undefined4 FUN_00a4e5f6(void)

{
  return DAT_0323ffb8;
}



// Library Function - Single Match
//  ___set_flsgetvalue
// 
// Library: Visual Studio 2008 Release

LPVOID ___set_flsgetvalue(void)

{
  LPVOID lpTlsValue;
  
  lpTlsValue = TlsGetValue(DAT_0323ffbc);
  if (lpTlsValue == (LPVOID)0x0) {
    lpTlsValue = (LPVOID)__decode_pointer(DAT_032eb7b4);
    TlsSetValue(DAT_0323ffbc,lpTlsValue);
  }
  return lpTlsValue;
}



// Library Function - Single Match
//  ___fls_setvalue@8
// 
// Library: Visual Studio 2008 Release

void ___fls_setvalue_8(undefined4 param_1,undefined4 param_2)

{
  code *pcVar1;
  
  pcVar1 = (code *)__decode_pointer(DAT_032eb7b8,param_1,param_2);
  (*pcVar1)();
  return;
}



// Library Function - Single Match
//  __mtterm
// 
// Library: Visual Studio 2008 Release

void __cdecl __mtterm(void)

{
  code *pcVar1;
  
  if (DAT_0323ffb8 != -1) {
    pcVar1 = (code *)__decode_pointer(DAT_032eb7bc,DAT_0323ffb8);
    (*pcVar1)();
    DAT_0323ffb8 = -1;
  }
  if (DAT_0323ffbc != 0xffffffff) {
    TlsFree(DAT_0323ffbc);
    DAT_0323ffbc = 0xffffffff;
  }
  __mtdeletelocks();
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __initptd
// 
// Library: Visual Studio 2008 Release

void __cdecl __initptd(_ptiddata _Ptd,pthreadlocinfo _Locale)

{
  HMODULE hModule;
  FARPROC pFVar1;
  
  hModule = GetModuleHandleW(L"KERNEL32.DLL");
  if (hModule == (HMODULE)0x0) {
    hModule = (HMODULE)__crt_waiting_on_module_handle(L"KERNEL32.DLL");
  }
  _Ptd->_pxcptacttab = &DAT_00da1d48;
  _Ptd->_holdrand = 1;
  if (hModule != (HMODULE)0x0) {
    pFVar1 = GetProcAddress(hModule,"EncodePointer");
    *(FARPROC *)((_Ptd->_setloc_data)._cacheout + 0x1d) = pFVar1;
    pFVar1 = GetProcAddress(hModule,"DecodePointer");
    *(FARPROC *)((_Ptd->_setloc_data)._cacheout + 0x1f) = pFVar1;
  }
  _Ptd->_ownlocale = 1;
  *(undefined *)((_Ptd->_setloc_data)._cachein + 8) = 0x43;
  *(undefined *)((int)(_Ptd->_setloc_data)._cachein + 0x93) = 0x43;
  _Ptd->ptmbcinfo = (pthreadmbcinfo)&DAT_032401d0;
  __lock(0xd);
  InterlockedIncrement(&_Ptd->ptmbcinfo->refcount);
  FUN_00a4e75f();
  __lock(0xc);
  _Ptd->ptlocinfo = _Locale;
  if (_Locale == (pthreadlocinfo)0x0) {
    _Ptd->ptlocinfo = (pthreadlocinfo)PTR_DAT_03240170;
  }
  ___addlocaleref(_Ptd->ptlocinfo);
  FUN_00a4e768();
  return;
}



void FUN_00a4e75f(void)

{
  FUN_00a4d824(0xd);
  return;
}



void FUN_00a4e768(void)

{
  FUN_00a4d824(0xc);
  return;
}



// Library Function - Single Match
//  __getptd_noexit
// 
// Library: Visual Studio 2008 Release

_ptiddata __cdecl __getptd_noexit(void)

{
  DWORD dwErrCode;
  code *pcVar1;
  _ptiddata _Ptd;
  int iVar2;
  DWORD DVar3;
  
  dwErrCode = GetLastError();
  pcVar1 = (code *)___set_flsgetvalue(DAT_0323ffb8);
  _Ptd = (_ptiddata)(*pcVar1)();
  if (_Ptd == (_ptiddata)0x0) {
    _Ptd = (_ptiddata)__calloc_crt(1,0x214);
    if (_Ptd != (_ptiddata)0x0) {
      pcVar1 = (code *)__decode_pointer(DAT_032eb7b8,DAT_0323ffb8,_Ptd);
      iVar2 = (*pcVar1)();
      if (iVar2 == 0) {
        _free(_Ptd);
        _Ptd = (_ptiddata)0x0;
      }
      else {
        __initptd(_Ptd,(pthreadlocinfo)0x0);
        DVar3 = GetCurrentThreadId();
        _Ptd->_thandle = 0xffffffff;
        _Ptd->_tid = DVar3;
      }
    }
  }
  SetLastError(dwErrCode);
  return _Ptd;
}



// Library Function - Single Match
//  __getptd
// 
// Library: Visual Studio 2008 Release

_ptiddata __cdecl __getptd(void)

{
  _ptiddata p_Var1;
  
  p_Var1 = __getptd_noexit();
  if (p_Var1 == (_ptiddata)0x0) {
    __amsg_exit(0x10);
  }
  return p_Var1;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __freefls@4
// 
// Library: Visual Studio 2008 Release

void __freefls_4(void *param_1)

{
  LONG *lpAddend;
  int *piVar1;
  LONG LVar2;
  
  if (param_1 != (void *)0x0) {
    if (*(void **)((int)param_1 + 0x24) != (void *)0x0) {
      _free(*(void **)((int)param_1 + 0x24));
    }
    if (*(void **)((int)param_1 + 0x2c) != (void *)0x0) {
      _free(*(void **)((int)param_1 + 0x2c));
    }
    if (*(void **)((int)param_1 + 0x34) != (void *)0x0) {
      _free(*(void **)((int)param_1 + 0x34));
    }
    if (*(void **)((int)param_1 + 0x3c) != (void *)0x0) {
      _free(*(void **)((int)param_1 + 0x3c));
    }
    if (*(void **)((int)param_1 + 0x40) != (void *)0x0) {
      _free(*(void **)((int)param_1 + 0x40));
    }
    if (*(void **)((int)param_1 + 0x44) != (void *)0x0) {
      _free(*(void **)((int)param_1 + 0x44));
    }
    if (*(void **)((int)param_1 + 0x48) != (void *)0x0) {
      _free(*(void **)((int)param_1 + 0x48));
    }
    if (*(undefined **)((int)param_1 + 0x5c) != &DAT_00da1d48) {
      _free(*(undefined **)((int)param_1 + 0x5c));
    }
    __lock(0xd);
    lpAddend = *(LONG **)((int)param_1 + 0x68);
    if (lpAddend != (LONG *)0x0) {
      LVar2 = InterlockedDecrement(lpAddend);
      if ((LVar2 == 0) && (lpAddend != (LONG *)&DAT_032401d0)) {
        _free(lpAddend);
      }
    }
    FUN_00a4e91e();
    __lock(0xc);
    piVar1 = *(int **)((int)param_1 + 0x6c);
    if (piVar1 != (int *)0x0) {
      ___removelocaleref(piVar1);
      if (((piVar1 != (int *)PTR_DAT_03240170) && (piVar1 != (int *)&DAT_03240098)) &&
         (*piVar1 == 0)) {
        ___freetlocinfo(piVar1);
      }
    }
    FUN_00a4e92a();
    _free(param_1);
  }
  return;
}



void FUN_00a4e91e(void)

{
  FUN_00a4d824(0xd);
  return;
}



void FUN_00a4e92a(void)

{
  FUN_00a4d824(0xc);
  return;
}



// Library Function - Single Match
//  __freeptd
// 
// Library: Visual Studio 2008 Release

void __cdecl __freeptd(_ptiddata _Ptd)

{
  LPVOID pvVar1;
  code *pcVar2;
  int iVar3;
  
  if (DAT_0323ffb8 != -1) {
    if ((_Ptd == (_ptiddata)0x0) && (pvVar1 = TlsGetValue(DAT_0323ffbc), pvVar1 != (LPVOID)0x0)) {
      iVar3 = DAT_0323ffb8;
      pcVar2 = (code *)TlsGetValue(DAT_0323ffbc);
      _Ptd = (_ptiddata)(*pcVar2)(iVar3);
    }
    pcVar2 = (code *)__decode_pointer(DAT_032eb7b8,DAT_0323ffb8,0);
    (*pcVar2)();
    __freefls_4(_Ptd);
  }
  if (DAT_0323ffbc != 0xffffffff) {
    TlsSetValue(DAT_0323ffbc,(LPVOID)0x0);
  }
  return;
}



// Library Function - Single Match
//  __mtinit
// 
// Library: Visual Studio 2008 Release

int __cdecl __mtinit(void)

{
  HMODULE hModule;
  BOOL BVar1;
  int iVar2;
  code *pcVar3;
  _ptiddata _Ptd;
  DWORD DVar4;
  
  hModule = GetModuleHandleW(L"KERNEL32.DLL");
  if (hModule == (HMODULE)0x0) {
    hModule = (HMODULE)__crt_waiting_on_module_handle(L"KERNEL32.DLL");
  }
  if (hModule != (HMODULE)0x0) {
    DAT_032eb7b0 = GetProcAddress(hModule,"FlsAlloc");
    DAT_032eb7b4 = GetProcAddress(hModule,"FlsGetValue");
    DAT_032eb7b8 = GetProcAddress(hModule,"FlsSetValue");
    DAT_032eb7bc = GetProcAddress(hModule,"FlsFree");
    if ((((DAT_032eb7b0 == (FARPROC)0x0) || (DAT_032eb7b4 == (FARPROC)0x0)) ||
        (DAT_032eb7b8 == (FARPROC)0x0)) || (DAT_032eb7bc == (FARPROC)0x0)) {
      DAT_032eb7b4 = TlsGetValue_exref;
      DAT_032eb7b0 = (FARPROC)&LAB_00a4e5d3;
      DAT_032eb7b8 = TlsSetValue_exref;
      DAT_032eb7bc = TlsFree_exref;
    }
    DAT_0323ffbc = TlsAlloc();
    if (DAT_0323ffbc == 0xffffffff) {
      return 0;
    }
    BVar1 = TlsSetValue(DAT_0323ffbc,DAT_032eb7b4);
    if (BVar1 == 0) {
      return 0;
    }
    __init_pointers();
    DAT_032eb7b0 = (FARPROC)__encode_pointer(DAT_032eb7b0);
    DAT_032eb7b4 = (FARPROC)__encode_pointer(DAT_032eb7b4);
    DAT_032eb7b8 = (FARPROC)__encode_pointer(DAT_032eb7b8);
    DAT_032eb7bc = (FARPROC)__encode_pointer(DAT_032eb7bc);
    iVar2 = __mtinitlocks();
    if (iVar2 != 0) {
      pcVar3 = (code *)__decode_pointer(DAT_032eb7b0,__freefls_4);
      DAT_0323ffb8 = (*pcVar3)();
      if ((DAT_0323ffb8 != -1) && (_Ptd = (_ptiddata)__calloc_crt(1,0x214), _Ptd != (_ptiddata)0x0))
      {
        pcVar3 = (code *)__decode_pointer(DAT_032eb7b8,DAT_0323ffb8,_Ptd);
        iVar2 = (*pcVar3)();
        if (iVar2 != 0) {
          __initptd(_Ptd,(pthreadlocinfo)0x0);
          DVar4 = GetCurrentThreadId();
          _Ptd->_thandle = 0xffffffff;
          _Ptd->_tid = DVar4;
          return 1;
        }
      }
    }
  }
  __mtterm();
  return 0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __msize
// 
// Library: Visual Studio 2008 Release

size_t __cdecl __msize(void *_Memory)

{
  int *piVar1;
  size_t sVar2;
  int iVar3;
  size_t local_20;
  
  if (_Memory == (void *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    sVar2 = 0xffffffff;
  }
  else {
    if (DAT_032f181c == 3) {
      __lock(4);
      iVar3 = ___sbh_find_block(_Memory);
      if (iVar3 != 0) {
        local_20 = *(int *)((int)_Memory + -4) - 9;
      }
      FUN_00a4ebc8();
      if (iVar3 != 0) {
        return local_20;
      }
    }
    sVar2 = HeapSize(DAT_032eb654,0,_Memory);
  }
  return sVar2;
}



void FUN_00a4ebc8(void)

{
  FUN_00a4d824(4);
  return;
}



// Library Function - Single Match
//  __NMSG_WRITE
// 
// Library: Visual Studio 2008 Release

void __cdecl __NMSG_WRITE(int param_1)

{
  char **ppcVar1;
  uint uVar2;
  int iVar3;
  errno_t eVar4;
  DWORD DVar5;
  size_t sVar6;
  HANDLE hFile;
  DWORD *lpNumberOfBytesWritten;
  LPOVERLAPPED lpOverlapped;
  DWORD local_c;
  uint local_8;
  
  local_8 = 0;
  do {
    if (param_1 == (&DAT_0323ffc0)[local_8 * 2]) break;
    local_8 = local_8 + 1;
  } while (local_8 < 0x17);
  uVar2 = local_8;
  if (local_8 < 0x17) {
    iVar3 = __set_error_mode(3);
    if ((iVar3 != 1) && ((iVar3 = __set_error_mode(3), iVar3 != 0 || (DAT_0323f860 != 1)))) {
      if (param_1 == 0xfc) {
        return;
      }
      eVar4 = _strcpy_s(&DAT_032eb7c0,0x314,"Runtime Error!\n\nProgram: ");
      if (eVar4 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      DAT_032eb8dd = 0;
      DVar5 = GetModuleFileNameA((HMODULE)0x0,&DAT_032eb7d9,0x104);
      if ((DVar5 == 0) &&
         (eVar4 = _strcpy_s(&DAT_032eb7d9,0x2fb,"<program name unknown>"), eVar4 != 0)) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      sVar6 = _strlen(&DAT_032eb7d9);
      if (0x3c < sVar6 + 1) {
        sVar6 = _strlen(&DAT_032eb7d9);
        eVar4 = _strncpy_s((char *)(sVar6 + 0x32eb79e),
                           (int)&DAT_032ebad4 - (int)(char *)(sVar6 + 0x32eb79e),"...",3);
        if (eVar4 != 0) {
                    // WARNING: Subroutine does not return
          __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
        }
      }
      eVar4 = _strcat_s(&DAT_032eb7c0,0x314,"\n\n");
      if (eVar4 == 0) {
        eVar4 = _strcat_s(&DAT_032eb7c0,0x314,*(char **)(local_8 * 8 + 0x323ffc4));
        if (eVar4 == 0) {
          ___crtMessageBoxA(&DAT_032eb7c0,"Microsoft Visual C++ Runtime Library",0x12010);
          return;
        }
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
                    // WARNING: Subroutine does not return
      __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
    }
    hFile = GetStdHandle(0xfffffff4);
    if ((hFile != (HANDLE)0x0) && (hFile != (HANDLE)0xffffffff)) {
      lpOverlapped = (LPOVERLAPPED)0x0;
      lpNumberOfBytesWritten = &local_c;
      ppcVar1 = (char **)(uVar2 * 8 + 0x323ffc4);
      sVar6 = _strlen(*ppcVar1);
      WriteFile(hFile,*ppcVar1,sVar6,lpNumberOfBytesWritten,lpOverlapped);
    }
  }
  return;
}



// Library Function - Single Match
//  __FF_MSGBANNER
// 
// Library: Visual Studio 2008 Release

void __cdecl __FF_MSGBANNER(void)

{
  int iVar1;
  
  iVar1 = __set_error_mode(3);
  if (iVar1 != 1) {
    iVar1 = __set_error_mode(3);
    if (iVar1 != 0) {
      return;
    }
    if (DAT_0323f860 != 1) {
      return;
    }
  }
  __NMSG_WRITE(0xfc);
  __NMSG_WRITE(0xff);
  return;
}



// Library Function - Single Match
//  ___getlocaleinfo
// 
// Library: Visual Studio 2008 Release

int __cdecl
___getlocaleinfo(_locale_t _Locale,int _Lc_type,LPCWSTR _LocaleName,LCTYPE _FieldType,void *_Address
                )

{
  byte bVar1;
  bool bVar2;
  size_t sVar3;
  DWORD DVar4;
  LPSTR _LpLCData;
  char *_Dst;
  int iVar5;
  errno_t eVar6;
  byte *pbVar7;
  CHAR local_88 [128];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  if (_Lc_type != 1) {
    if (_Lc_type == 0) {
      pbVar7 = &DAT_032ebad4;
      iVar5 = ___crtGetLocaleInfoW(_Locale,_LocaleName,_FieldType,&DAT_032ebad4,4,0);
      if (iVar5 != 0) {
        *(undefined *)_Address = 0;
        do {
          bVar1 = *pbVar7;
          iVar5 = _isdigit((uint)bVar1);
          if (iVar5 == 0) break;
                    // WARNING: Load size is inaccurate
          pbVar7 = pbVar7 + 2;
          *(byte *)_Address = *_Address * '\n' + bVar1 + -0x30;
        } while ((int)pbVar7 < 0x32ebadc);
      }
    }
    goto LAB_00a4eea7;
  }
  _LpLCData = local_88;
  bVar2 = false;
  sVar3 = ___crtGetLocaleInfoA(_Locale,_LocaleName,_FieldType,_LpLCData,0x80);
  if (sVar3 == 0) {
    DVar4 = GetLastError();
    if (((DVar4 != 0x7a) ||
        (sVar3 = ___crtGetLocaleInfoA(_Locale,_LocaleName,_FieldType,(LPSTR)0x0,0), sVar3 == 0)) ||
       (_LpLCData = (LPSTR)__calloc_crt(sVar3,1), _LpLCData == (LPSTR)0x0)) goto LAB_00a4eea7;
    bVar2 = true;
    sVar3 = ___crtGetLocaleInfoA(_Locale,_LocaleName,_FieldType,_LpLCData,sVar3);
    if (sVar3 != 0) goto LAB_00a4ee7f;
  }
  else {
LAB_00a4ee7f:
    _Dst = (char *)__calloc_crt(sVar3,1);
    *(char **)_Address = _Dst;
    if (_Dst != (char *)0x0) {
      eVar6 = _strncpy_s(_Dst,sVar3,_LpLCData,sVar3 - 1);
      if (eVar6 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      if (bVar2) {
        _free(_LpLCData);
      }
      goto LAB_00a4eea7;
    }
    if (!bVar2) goto LAB_00a4eea7;
  }
  _free(_LpLCData);
LAB_00a4eea7:
  iVar5 = ___security_check_cookie_4();
  return iVar5;
}



void FUN_00a4ef34(undefined4 param_1)

{
  DAT_032ebadc = param_1;
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  private: static void __cdecl type_info::_Type_info_dtor(class type_info *)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release

void __cdecl type_info::_Type_info_dtor(type_info *param_1)

{
  int *_Memory;
  int *piVar1;
  int *piVar2;
  
  __lock(0xe);
  _Memory = DAT_032ebae4;
  if (*(int *)(param_1 + 4) != 0) {
    piVar1 = (int *)&DAT_032ebae0;
    do {
      piVar2 = piVar1;
      if (DAT_032ebae4 == (int *)0x0) goto LAB_00a4ef87;
      piVar1 = DAT_032ebae4;
    } while (*DAT_032ebae4 != *(int *)(param_1 + 4));
    piVar2[1] = DAT_032ebae4[1];
    _free(_Memory);
LAB_00a4ef87:
    _free(*(void **)(param_1 + 4));
    *(undefined4 *)(param_1 + 4) = 0;
  }
  FUN_00a4efaa();
  return;
}



void FUN_00a4efaa(void)

{
  FUN_00a4d824(0xe);
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  private: static char const * __cdecl type_info::_Name_base(class type_info const *,struct
// __type_info_node *)
// 
// Library: Visual Studio 2008 Release

char * __cdecl type_info::_Name_base(type_info *param_1,__type_info_node *param_2)

{
  char *_Str;
  size_t sVar1;
  undefined4 *_Memory;
  char *_Dst;
  errno_t eVar2;
  
  if (*(int *)(param_1 + 4) == 0) {
    _Str = (char *)___unDName(0,param_1 + 9,0,_malloc,_free,0x2800);
    if (_Str == (char *)0x0) {
      return (char *)0x0;
    }
    sVar1 = _strlen(_Str);
    while (sVar1 != 0) {
      if (_Str[sVar1 - 1] != ' ') break;
      _Str[sVar1 - 1] = '\0';
      sVar1 = sVar1 - 1;
    }
    __lock(0xe);
    if ((*(int *)(param_1 + 4) == 0) &&
       (_Memory = (undefined4 *)_malloc(8), _Memory != (undefined4 *)0x0)) {
      _Dst = (char *)_malloc(sVar1 + 1);
      *(char **)(param_1 + 4) = _Dst;
      if (_Dst == (char *)0x0) {
        _free(_Memory);
      }
      else {
        eVar2 = _strcpy_s(_Dst,sVar1 + 1,_Str);
        if (eVar2 != 0) {
                    // WARNING: Subroutine does not return
          __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
        }
        *_Memory = *(undefined4 *)(param_1 + 4);
        _Memory[1] = *(undefined4 *)(param_2 + 4);
        *(undefined4 **)(param_2 + 4) = _Memory;
      }
    }
    _free(_Str);
    FUN_00a4f09f();
  }
  return *(char **)(param_1 + 4);
}



void FUN_00a4f09f(void)

{
  FUN_00a4d824(0xe);
  return;
}



// Library Function - Single Match
//  _strcmp
// 
// Library: Visual Studio 2008 Release

int __cdecl _strcmp(char *_Str1,char *_Str2)

{
  undefined2 uVar1;
  undefined4 uVar2;
  byte bVar3;
  byte bVar4;
  bool bVar5;
  
  if (((uint)_Str1 & 3) != 0) {
    if (((uint)_Str1 & 1) != 0) {
      bVar4 = *_Str1;
      _Str1 = _Str1 + 1;
      bVar5 = bVar4 < (byte)*_Str2;
      if (bVar4 != *_Str2) goto LAB_00a4f0f4;
      _Str2 = _Str2 + 1;
      if (bVar4 == 0) {
        return 0;
      }
      if (((uint)_Str1 & 2) == 0) goto LAB_00a4f0c0;
    }
    uVar1 = *(undefined2 *)_Str1;
    _Str1 = (char *)((int)_Str1 + 2);
    bVar4 = (byte)uVar1;
    bVar5 = bVar4 < (byte)*_Str2;
    if (bVar4 != *_Str2) goto LAB_00a4f0f4;
    if (bVar4 == 0) {
      return 0;
    }
    bVar4 = (byte)((ushort)uVar1 >> 8);
    bVar5 = bVar4 < ((byte *)_Str2)[1];
    if (bVar4 != ((byte *)_Str2)[1]) goto LAB_00a4f0f4;
    if (bVar4 == 0) {
      return 0;
    }
    _Str2 = (char *)((byte *)_Str2 + 2);
  }
LAB_00a4f0c0:
  while( true ) {
    uVar2 = *(undefined4 *)_Str1;
    bVar4 = (byte)uVar2;
    bVar5 = bVar4 < (byte)*_Str2;
    if (bVar4 != *_Str2) break;
    if (bVar4 == 0) {
      return 0;
    }
    bVar4 = (byte)((uint)uVar2 >> 8);
    bVar5 = bVar4 < ((byte *)_Str2)[1];
    if (bVar4 != ((byte *)_Str2)[1]) break;
    if (bVar4 == 0) {
      return 0;
    }
    bVar4 = (byte)((uint)uVar2 >> 0x10);
    bVar5 = bVar4 < ((byte *)_Str2)[2];
    if (bVar4 != ((byte *)_Str2)[2]) break;
    bVar3 = (byte)((uint)uVar2 >> 0x18);
    if (bVar4 == 0) {
      return 0;
    }
    bVar5 = bVar3 < ((byte *)_Str2)[3];
    if (bVar3 != ((byte *)_Str2)[3]) break;
    _Str2 = (char *)((byte *)_Str2 + 4);
    _Str1 = (char *)((int)_Str1 + 4);
    if (bVar3 == 0) {
      return 0;
    }
  }
LAB_00a4f0f4:
  return (uint)bVar5 * -2 + 1;
}



void FUN_00a4f138(undefined4 param_1)

{
  DAT_032ebae8 = param_1;
  return;
}



// Library Function - Single Match
//  __callnewh
// 
// Library: Visual Studio 2008 Release

int __cdecl __callnewh(size_t _Size)

{
  code *pcVar1;
  int iVar2;
  
  pcVar1 = (code *)__decode_pointer(DAT_032ebae8);
  if (pcVar1 != (code *)0x0) {
    iVar2 = (*pcVar1)(_Size);
    if (iVar2 != 0) {
      return 1;
    }
  }
  return 0;
}



// Library Function - Single Match
//  __flsbuf
// 
// Library: Visual Studio 2008 Release

int __cdecl __flsbuf(int _Ch,FILE *_File)

{
  char *_Buf;
  char *pcVar1;
  FILE *_File_00;
  int *piVar2;
  int iVar3;
  undefined *puVar4;
  int unaff_EDI;
  uint uVar5;
  longlong lVar6;
  uint local_8;
  
  _File_00 = _File;
  _File = (FILE *)__fileno(_File);
  uVar5 = _File_00->_flag;
  if ((uVar5 & 0x82) == 0) {
    piVar2 = __errno();
    *piVar2 = 9;
LAB_00a4f195:
    _File_00->_flag = _File_00->_flag | 0x20;
    return -1;
  }
  if ((uVar5 & 0x40) != 0) {
    piVar2 = __errno();
    *piVar2 = 0x22;
    goto LAB_00a4f195;
  }
  if ((uVar5 & 1) != 0) {
    _File_00->_cnt = 0;
    if ((uVar5 & 0x10) == 0) {
      _File_00->_flag = uVar5 | 0x20;
      return -1;
    }
    _File_00->_ptr = _File_00->_base;
    _File_00->_flag = uVar5 & 0xfffffffe;
  }
  uVar5 = _File_00->_flag;
  _File_00->_flag = uVar5 & 0xffffffef | 2;
  _File_00->_cnt = 0;
  local_8 = 0;
  if (((uVar5 & 0x10c) == 0) &&
     (((iVar3 = FUN_00a475e9(), _File_00 != (FILE *)(iVar3 + 0x20) &&
       (iVar3 = FUN_00a475e9(), _File_00 != (FILE *)(iVar3 + 0x40))) ||
      (iVar3 = __isatty((int)_File), iVar3 == 0)))) {
    __getbuf(_File_00);
  }
  if ((_File_00->_flag & 0x108U) == 0) {
    uVar5 = 1;
    local_8 = __write((int)_File,&_Ch,1);
  }
  else {
    _Buf = _File_00->_base;
    pcVar1 = _File_00->_ptr;
    _File_00->_ptr = _Buf + 1;
    uVar5 = (int)pcVar1 - (int)_Buf;
    _File_00->_cnt = _File_00->_bufsiz + -1;
    if ((int)uVar5 < 1) {
      if ((_File == (FILE *)0xffffffff) || (_File == (FILE *)0xfffffffe)) {
        puVar4 = &DAT_03240190;
      }
      else {
        puVar4 = (undefined *)(((uint)_File & 0x1f) * 0x40 + (&DAT_032f1700)[(int)_File >> 5]);
      }
      if (((puVar4[4] & 0x20) != 0) &&
         (lVar6 = __lseeki64((int)_File,0x200000000,unaff_EDI), lVar6 == -1)) goto LAB_00a4f2bd;
    }
    else {
      local_8 = __write((int)_File,_Buf,uVar5);
    }
    *_File_00->_base = (char)_Ch;
  }
  if (local_8 == uVar5) {
    return _Ch & 0xff;
  }
LAB_00a4f2bd:
  _File_00->_flag = _File_00->_flag | 0x20;
  return -1;
}



// Library Function - Single Match
//  _write_char
// 
// Library: Visual Studio 2008 Release

void __fastcall _write_char(FILE *param_1)

{
  int *piVar1;
  byte in_AL;
  uint uVar2;
  int *unaff_ESI;
  
  if (((*(byte *)&param_1->_flag & 0x40) == 0) || (param_1->_base != (char *)0x0)) {
    piVar1 = &param_1->_cnt;
    *piVar1 = *piVar1 + -1;
    if (*piVar1 < 0) {
      uVar2 = __flsbuf((int)(char)in_AL,param_1);
    }
    else {
      *param_1->_ptr = in_AL;
      param_1->_ptr = param_1->_ptr + 1;
      uVar2 = (uint)in_AL;
    }
    if (uVar2 == 0xffffffff) {
      *unaff_ESI = -1;
      return;
    }
  }
  *unaff_ESI = *unaff_ESI + 1;
  return;
}



// Library Function - Single Match
//  _write_multi_char
// 
// Library: Visual Studio 2008 Release

void _write_multi_char(undefined4 param_1,int param_2)

{
  int *in_EAX;
  
  do {
    if (param_2 < 1) {
      return;
    }
    param_2 = param_2 + -1;
    _write_char();
  } while (*in_EAX != -1);
  return;
}



// Library Function - Single Match
//  _write_string
// 
// Library: Visual Studio 2008 Release

void _write_string(int param_1)

{
  int *in_EAX;
  int *piVar1;
  int unaff_EDI;
  
  if (((*(byte *)(unaff_EDI + 0xc) & 0x40) == 0) || (*(int *)(unaff_EDI + 8) != 0)) {
    while (0 < param_1) {
      param_1 = param_1 + -1;
      _write_char();
      if (*in_EAX == -1) {
        piVar1 = __errno();
        if (*piVar1 != 0x2a) {
          return;
        }
        _write_char();
      }
    }
  }
  else {
    *in_EAX = *in_EAX + param_1;
  }
  return;
}



// WARNING: Type propagation algorithm not settling
// Library Function - Single Match
//  __output_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __output_l(FILE *_File,char *_Format,_locale_t _Locale,va_list _ArgList)

{
  byte bVar1;
  wchar_t _WCh;
  int *piVar2;
  ulonglong uVar3;
  FILE *pFVar4;
  int *piVar5;
  uint uVar6;
  code *pcVar7;
  int *piVar8;
  errno_t eVar9;
  int iVar10;
  undefined *puVar11;
  int extraout_ECX;
  byte *pbVar12;
  char *pcVar13;
  bool bVar14;
  longlong lVar15;
  int *local_27c;
  int *local_278;
  undefined4 local_274;
  int local_270;
  int local_26c [2];
  int *local_264;
  localeinfo_struct local_260;
  int local_258;
  char local_254;
  FILE *local_250;
  int local_24c;
  int *local_248;
  int local_244;
  byte *local_240;
  int local_23c;
  int *local_238;
  int local_234;
  undefined local_230;
  char local_22f;
  int local_22c;
  int **local_228;
  int *local_224;
  int *local_220;
  int *local_21c;
  byte local_215;
  uint local_214;
  int local_210 [127];
  undefined local_11 [9];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_250 = _File;
  local_228 = (int **)_ArgList;
  local_24c = 0;
  local_214 = 0;
  local_238 = (int *)0x0;
  local_21c = (int *)0x0;
  local_234 = 0;
  local_244 = 0;
  local_23c = 0;
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_260,_Locale);
  if (_File != (FILE *)0x0) {
    if ((*(byte *)&_File->_flag & 0x40) == 0) {
      uVar6 = __fileno(_File);
      if ((uVar6 == 0xffffffff) || (uVar6 == 0xfffffffe)) {
        puVar11 = &DAT_03240190;
      }
      else {
        puVar11 = (undefined *)((uVar6 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar6 >> 5]);
      }
      if ((puVar11[0x24] & 0x7f) == 0) {
        if ((uVar6 == 0xffffffff) || (uVar6 == 0xfffffffe)) {
          puVar11 = &DAT_03240190;
        }
        else {
          puVar11 = (undefined *)((uVar6 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar6 >> 5]);
        }
        if ((puVar11[0x24] & 0x80) == 0) goto LAB_00a4f47d;
      }
    }
    else {
LAB_00a4f47d:
      if (_Format != (char *)0x0) {
        local_215 = *_Format;
        local_22c = 0;
        local_224 = (int *)0x0;
        local_248 = (int *)0x0;
        iVar10 = 0;
        while ((local_215 != 0 &&
               (pbVar12 = (byte *)_Format + 1, local_240 = pbVar12, -1 < local_22c))) {
          if ((byte)(local_215 - 0x20) < 0x59) {
            uVar6 = (int)"Runtime Error!\n\nProgram: "[(char)local_215 + 0x18] & 0xf;
          }
          else {
            uVar6 = 0;
          }
          local_270 = (int)(char)(&DAT_00da1ce8)[uVar6 * 8 + iVar10] >> 4;
          switch(local_270) {
          case 0:
switchD_00a4f4f6_caseD_0:
            local_23c = 0;
            iVar10 = __isleadbyte_l((uint)local_215,&local_260);
            if (iVar10 != 0) {
              _write_char();
              local_240 = (byte *)_Format + 2;
              if (*pbVar12 == 0) goto LAB_00a4f3e4;
            }
            _write_char();
            break;
          case 1:
            local_21c = (int *)0xffffffff;
            local_274 = 0;
            local_244 = 0;
            local_238 = (int *)0x0;
            local_234 = 0;
            local_214 = 0;
            local_23c = 0;
            break;
          case 2:
            if (local_215 == 0x20) {
              local_214 = local_214 | 2;
            }
            else if (local_215 == 0x23) {
              local_214 = local_214 | 0x80;
            }
            else if (local_215 == 0x2b) {
              local_214 = local_214 | 1;
            }
            else if (local_215 == 0x2d) {
              local_214 = local_214 | 4;
            }
            else if (local_215 == 0x30) {
              local_214 = local_214 | 8;
            }
            break;
          case 3:
            if (local_215 == 0x2a) {
              local_228 = (int **)((int)_ArgList + 4);
              local_238 = *(int **)_ArgList;
              if ((int)local_238 < 0) {
                local_214 = local_214 | 4;
                local_238 = (int *)-(int)local_238;
              }
            }
            else {
              local_238 = (int *)((int)local_238 * 10 + -0x30 + (int)(char)local_215);
            }
            break;
          case 4:
            local_21c = (int *)0x0;
            break;
          case 5:
            if (local_215 == 0x2a) {
              local_228 = (int **)((int)_ArgList + 4);
              local_21c = *(int **)_ArgList;
              if ((int)local_21c < 0) {
                local_21c = (int *)0xffffffff;
              }
            }
            else {
              local_21c = (int *)((int)local_21c * 10 + -0x30 + (int)(char)local_215);
            }
            break;
          case 6:
            if (local_215 == 0x49) {
              bVar1 = *pbVar12;
              if ((bVar1 == 0x36) && (((byte *)_Format)[2] == 0x34)) {
                local_214 = local_214 | 0x8000;
                local_240 = (byte *)_Format + 3;
              }
              else if ((bVar1 == 0x33) && (((byte *)_Format)[2] == 0x32)) {
                local_214 = local_214 & 0xffff7fff;
                local_240 = (byte *)_Format + 3;
              }
              else if (((((bVar1 != 100) && (bVar1 != 0x69)) && (bVar1 != 0x6f)) &&
                       ((bVar1 != 0x75 && (bVar1 != 0x78)))) && (bVar1 != 0x58)) {
                local_270 = 0;
                goto switchD_00a4f4f6_caseD_0;
              }
            }
            else if (local_215 == 0x68) {
              local_214 = local_214 | 0x20;
            }
            else if (local_215 == 0x6c) {
              if (*pbVar12 == 0x6c) {
                local_214 = local_214 | 0x1000;
                local_240 = (byte *)_Format + 2;
              }
              else {
                local_214 = local_214 | 0x10;
              }
            }
            else if (local_215 == 0x77) {
              local_214 = local_214 | 0x800;
            }
            break;
          case 7:
            if ((char)local_215 < 'e') {
              if (local_215 == 100) {
LAB_00a4f9e1:
                local_214 = local_214 | 0x40;
LAB_00a4f9e8:
                local_224 = (int *)0xa;
LAB_00a4f9f2:
                if (((local_214 & 0x8000) == 0) && ((local_214 & 0x1000) == 0)) {
                  local_228 = (int **)((int)_ArgList + 4);
                  if ((local_214 & 0x20) == 0) {
                    piVar5 = *(int **)_ArgList;
                    if ((local_214 & 0x40) == 0) {
                      piVar8 = (int *)0x0;
                    }
                    else {
                      piVar8 = (int *)((int)piVar5 >> 0x1f);
                    }
                  }
                  else {
                    if ((local_214 & 0x40) == 0) {
                      piVar5 = (int *)(uint)*(ushort *)_ArgList;
                    }
                    else {
                      piVar5 = (int *)(int)*(short *)_ArgList;
                    }
                    piVar8 = (int *)((int)piVar5 >> 0x1f);
                  }
                }
                else {
                  piVar5 = *(int **)_ArgList;
                  piVar8 = *(int **)((int)_ArgList + 4);
                  local_228 = (int **)((int)_ArgList + 8);
                }
                if ((((local_214 & 0x40) != 0) && ((int)piVar8 < 1)) && ((int)piVar8 < 0)) {
                  bVar14 = piVar5 != (int *)0x0;
                  piVar5 = (int *)-(int)piVar5;
                  piVar8 = (int *)-(int)((int)piVar8 + (uint)bVar14);
                  local_214 = local_214 | 0x100;
                }
                if ((local_214 & 0x9000) == 0) {
                  piVar8 = (int *)0x0;
                }
                lVar15 = CONCAT44(piVar8,piVar5);
                if ((int)local_21c < 0) {
                  local_21c = (int *)0x1;
                }
                else {
                  local_214 = local_214 & 0xfffffff7;
                  if (0x200 < (int)local_21c) {
                    local_21c = (int *)0x200;
                  }
                }
                if (((uint)piVar5 | (uint)piVar8) == 0) {
                  local_234 = 0;
                }
                piVar5 = (int *)local_11;
                while( true ) {
                  uVar3 = (ulonglong)lVar15 >> 0x20;
                  piVar8 = (int *)((int)local_21c + -1);
                  if (((int)local_21c < 1) && (lVar15 == 0)) break;
                  local_21c = piVar8;
                  lVar15 = __aulldvrm(lVar15,local_224,(int)local_224 >> 0x1f);
                  iVar10 = extraout_ECX + 0x30;
                  if (0x39 < iVar10) {
                    iVar10 = iVar10 + local_24c;
                  }
                  *(char *)piVar5 = (char)iVar10;
                  piVar5 = (int *)((int)piVar5 + -1);
                  local_264 = (int *)uVar3;
                }
                local_224 = (int *)(local_11 + -(int)piVar5);
                local_220 = (int *)((int)piVar5 + 1);
                local_21c = piVar8;
                if (((local_214 & 0x200) != 0) &&
                   ((local_224 == (int *)0x0 || (*(char *)local_220 != '0')))) {
                  *(char *)piVar5 = '0';
                  local_224 = (int *)(local_11 + -(int)piVar5 + 1);
                  local_220 = piVar5;
                }
              }
              else if ((char)local_215 < 'T') {
                if (local_215 == 0x53) {
                  if ((local_214 & 0x830) == 0) {
                    local_214 = local_214 | 0x800;
                  }
                  goto LAB_00a4f80d;
                }
                if (local_215 == 0x41) {
LAB_00a4f78c:
                  local_215 = local_215 + 0x20;
                  local_274 = 1;
LAB_00a4f79f:
                  local_214 = local_214 | 0x40;
                  local_264 = (int *)0x200;
                  piVar8 = local_210;
                  piVar5 = local_264;
                  piVar2 = local_210;
                  if ((int)local_21c < 0) {
                    local_21c = (int *)0x6;
                  }
                  else if (local_21c == (int *)0x0) {
                    if (local_215 == 0x67) {
                      local_21c = (int *)0x1;
                    }
                  }
                  else {
                    if (0x200 < (int)local_21c) {
                      local_21c = (int *)0x200;
                    }
                    if (0xa3 < (int)local_21c) {
                      piVar5 = (int *)((int)local_21c + 0x15d);
                      local_220 = local_210;
                      local_248 = (int *)__malloc_crt((size_t)piVar5);
                      piVar8 = local_248;
                      piVar2 = local_248;
                      if (local_248 == (int *)0x0) {
                        local_21c = (int *)0xa3;
                        piVar8 = local_210;
                        piVar5 = local_264;
                        piVar2 = local_220;
                      }
                    }
                  }
                  local_220 = piVar2;
                  local_264 = piVar5;
                  local_27c = *(int **)_ArgList;
                  local_228 = (int **)((int)_ArgList + 8);
                  local_278 = *(int **)((int)_ArgList + 4);
                  pcVar7 = (code *)__decode_pointer(PTR_LAB_03240778,&local_27c,piVar8,local_264,
                                                    (int)(char)local_215,local_21c,local_274,
                                                    &local_260);
                  (*pcVar7)();
                  uVar6 = local_214 & 0x80;
                  if ((uVar6 != 0) && (local_21c == (int *)0x0)) {
                    pcVar7 = (code *)__decode_pointer(PTR_LAB_03240784,piVar8,&local_260);
                    (*pcVar7)();
                  }
                  if ((local_215 == 0x67) && (uVar6 == 0)) {
                    pcVar7 = (code *)__decode_pointer(PTR_LAB_03240780,piVar8,&local_260);
                    (*pcVar7)();
                  }
                  if (*(char *)piVar8 == '-') {
                    local_214 = local_214 | 0x100;
                    local_220 = (int *)((int)piVar8 + 1);
                    piVar8 = local_220;
                  }
LAB_00a4f93f:
                  local_224 = (int *)_strlen((char *)piVar8);
                }
                else if (local_215 == 0x43) {
                  if ((local_214 & 0x830) == 0) {
                    local_214 = local_214 | 0x800;
                  }
LAB_00a4f880:
                  local_228 = (int **)((int)_ArgList + 4);
                  if ((local_214 & 0x810) == 0) {
                    local_210[0]._0_1_ = *_ArgList;
                    local_224 = (int *)0x1;
                  }
                  else {
                    eVar9 = _wctomb_s((int *)&local_224,(char *)local_210,0x200,*(wchar_t *)_ArgList
                                     );
                    if (eVar9 != 0) {
                      local_244 = 1;
                    }
                  }
                  local_220 = local_210;
                }
                else if ((local_215 == 0x45) || (local_215 == 0x47)) goto LAB_00a4f78c;
              }
              else {
                if (local_215 == 0x58) goto LAB_00a4fb46;
                if (local_215 == 0x5a) {
                  piVar5 = *(int **)_ArgList;
                  local_228 = (int **)((int)_ArgList + 4);
                  piVar8 = (int *)PTR_DAT_03240080;
                  local_220 = (int *)PTR_DAT_03240080;
                  if ((piVar5 == (int *)0x0) || (piVar2 = (int *)piVar5[1], piVar2 == (int *)0x0))
                  goto LAB_00a4f93f;
                  local_224 = (int *)(int)*(wchar_t *)piVar5;
                  local_220 = piVar2;
                  if ((local_214 & 0x800) == 0) {
                    local_23c = 0;
                  }
                  else {
                    local_224 = (int *)((int)local_224 / 2);
                    local_23c = 1;
                  }
                }
                else {
                  if (local_215 == 0x61) goto LAB_00a4f79f;
                  if (local_215 == 99) goto LAB_00a4f880;
                }
              }
LAB_00a4fd1e:
              if (local_244 == 0) {
                if ((local_214 & 0x40) != 0) {
                  if ((local_214 & 0x100) == 0) {
                    if ((local_214 & 1) == 0) {
                      if ((local_214 & 2) == 0) goto LAB_00a4fd67;
                      local_230 = 0x20;
                    }
                    else {
                      local_230 = 0x2b;
                    }
                  }
                  else {
                    local_230 = 0x2d;
                  }
                  local_234 = 1;
                }
LAB_00a4fd67:
                pcVar13 = (char *)((int)local_238 + (-local_234 - (int)local_224));
                if ((local_214 & 0xc) == 0) {
                  _write_multi_char(0x20,pcVar13,local_250);
                }
                pFVar4 = local_250;
                _write_string(local_234);
                if (((local_214 & 8) != 0) && ((local_214 & 4) == 0)) {
                  _write_multi_char(0x30,pcVar13,pFVar4);
                }
                if ((local_23c == 0) || ((int)local_224 < 1)) {
                  _write_string(local_224);
                }
                else {
                  local_264 = local_224;
                  piVar5 = local_220;
                  do {
                    _WCh = *(wchar_t *)piVar5;
                    local_264 = (int *)((int)local_264 + -1);
                    piVar5 = (int *)((int)piVar5 + 2);
                    eVar9 = _wctomb_s(local_26c,local_11 + 1,6,_WCh);
                    if ((eVar9 != 0) || (local_26c[0] == 0)) {
                      local_22c = -1;
                      break;
                    }
                    _write_string(local_26c[0]);
                  } while (local_264 != (int *)0x0);
                }
                if ((-1 < local_22c) && ((local_214 & 4) != 0)) {
                  _write_multi_char(0x20,pcVar13,pFVar4);
                }
              }
            }
            else {
              if ('p' < (char)local_215) {
                if (local_215 == 0x73) {
LAB_00a4f80d:
                  piVar5 = local_21c;
                  if (local_21c == (int *)0xffffffff) {
                    piVar5 = (int *)0x7fffffff;
                  }
                  local_228 = (int **)((int)_ArgList + 4);
                  local_220 = *(int **)_ArgList;
                  if ((local_214 & 0x810) == 0) {
                    local_224 = local_220;
                    if (local_220 == (int *)0x0) {
                      local_224 = (int *)PTR_DAT_03240080;
                      local_220 = (int *)PTR_DAT_03240080;
                    }
                    for (; (piVar5 != (int *)0x0 &&
                           (piVar5 = (int *)((int)piVar5 + -1), *(char *)local_224 != '\0'));
                        local_224 = (int *)((int)local_224 + 1)) {
                    }
                    local_224 = (int *)((int)local_224 - (int)local_220);
                  }
                  else {
                    if (local_220 == (int *)0x0) {
                      local_220 = (int *)PTR_u__null__03240084;
                    }
                    local_23c = 1;
                    for (piVar8 = local_220;
                        (piVar5 != (int *)0x0 &&
                        (piVar5 = (int *)((int)piVar5 + -1), *(wchar_t *)piVar8 != L'\0'));
                        piVar8 = (int *)((int)piVar8 + 2)) {
                    }
                    local_224 = (int *)((int)piVar8 - (int)local_220 >> 1);
                  }
                  goto LAB_00a4fd1e;
                }
                if (local_215 == 0x75) goto LAB_00a4f9e8;
                if (local_215 != 0x78) goto LAB_00a4fd1e;
                local_24c = 0x27;
LAB_00a4fb72:
                local_224 = (int *)0x10;
                if ((local_214 & 0x80) != 0) {
                  local_22f = (char)local_24c + 'Q';
                  local_230 = 0x30;
                  local_234 = 2;
                }
                goto LAB_00a4f9f2;
              }
              if (local_215 == 0x70) {
                local_21c = (int *)0x8;
LAB_00a4fb46:
                local_24c = 7;
                goto LAB_00a4fb72;
              }
              if ((char)local_215 < 'e') goto LAB_00a4fd1e;
              if ((char)local_215 < 'h') goto LAB_00a4f79f;
              if (local_215 == 0x69) goto LAB_00a4f9e1;
              if (local_215 != 0x6e) {
                if (local_215 != 0x6f) goto LAB_00a4fd1e;
                local_224 = (int *)0x8;
                if ((local_214 & 0x80) != 0) {
                  local_214 = local_214 | 0x200;
                }
                goto LAB_00a4f9f2;
              }
              piVar5 = *(int **)_ArgList;
              local_228 = (int **)((int)_ArgList + 4);
              iVar10 = __get_printf_count_output();
              if (iVar10 == 0) goto LAB_00a4f3e4;
              if ((local_214 & 0x20) == 0) {
                *piVar5 = local_22c;
              }
              else {
                *(wchar_t *)piVar5 = (wchar_t)local_22c;
              }
              local_244 = 1;
            }
            if (local_248 != (int *)0x0) {
              _free(local_248);
              local_248 = (int *)0x0;
            }
          }
          local_215 = *local_240;
          iVar10 = local_270;
          _Format = (char *)local_240;
          _ArgList = (va_list)local_228;
        }
        if (local_254 != '\0') {
          *(uint *)(local_258 + 0x70) = *(uint *)(local_258 + 0x70) & 0xfffffffd;
        }
        goto LAB_00a4fee1;
      }
    }
  }
LAB_00a4f3e4:
  piVar5 = __errno();
  *piVar5 = 0x16;
  __invalid_parameter(0,0,0,0,0);
  if (local_254 != '\0') {
    *(uint *)(local_258 + 0x70) = *(uint *)(local_258 + 0x70) & 0xfffffffd;
  }
LAB_00a4fee1:
  iVar10 = ___security_check_cookie_4();
  return iVar10;
}



// Library Function - Single Match
//  __vsnprintf_helper
// 
// Library: Visual Studio 2008 Release

int __vsnprintf_helper(code *param_1,char *param_2,uint param_3,int param_4,undefined4 param_5,
                      undefined4 param_6)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  FILE local_24;
  
  if (param_4 == 0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    iVar2 = -1;
  }
  else if ((param_3 == 0) || (param_2 != (char *)0x0)) {
    local_24._cnt = 0x7fffffff;
    if (param_3 < 0x80000000) {
      local_24._cnt = param_3;
    }
    local_24._flag = 0x42;
    local_24._base = param_2;
    local_24._ptr = param_2;
    iVar2 = (*param_1)(&local_24,param_4,param_5,param_6);
    if (param_2 != (char *)0x0) {
      if (-1 < iVar2) {
        local_24._cnt = local_24._cnt - 1;
        if (-1 < local_24._cnt) {
          *local_24._ptr = '\0';
          return iVar2;
        }
        iVar3 = __flsbuf(0,&local_24);
        if (iVar3 != -1) {
          return iVar2;
        }
      }
      param_2[param_3 - 1] = '\0';
      iVar2 = (-1 < local_24._cnt) - 2;
    }
  }
  else {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    iVar2 = -1;
  }
  return iVar2;
}



// Library Function - Single Match
//  __vsprintf_s_l
// 
// Library: Visual Studio 2008 Release

int __cdecl
__vsprintf_s_l(char *_DstBuf,size_t _DstSize,char *_Format,_locale_t _Locale,va_list _ArgList)

{
  int *piVar1;
  int iVar2;
  
  if (_Format == (char *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else {
    if ((_DstBuf == (char *)0x0) || (_DstSize == 0)) {
      piVar1 = __errno();
      *piVar1 = 0x16;
    }
    else {
      iVar2 = __vsnprintf_helper(__output_s_l,_DstBuf,_DstSize,_Format,_Locale,_ArgList);
      if (iVar2 < 0) {
        *_DstBuf = '\0';
      }
      if (iVar2 != -2) {
        return iVar2;
      }
      piVar1 = __errno();
      *piVar1 = 0x22;
    }
    __invalid_parameter(0,0,0,0,0);
  }
  return -1;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_00a50065(void)

{
  _DAT_032f1800 = 0;
  return;
}



// Library Function - Single Match
//  long __stdcall __CxxUnhandledExceptionFilter(struct _EXCEPTION_POINTERS *)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

long __CxxUnhandledExceptionFilter(_EXCEPTION_POINTERS *param_1)

{
  PEXCEPTION_RECORD pEVar1;
  undefined *puVar2;
  
  pEVar1 = param_1->ExceptionRecord;
  if (((pEVar1->ExceptionCode == 0xe06d7363) && (pEVar1->NumberParameters == 3)) &&
     ((puVar2 = (undefined *)pEVar1->ExceptionInformation[0], puVar2 == (undefined *)0x19930520 ||
      (((puVar2 == (undefined *)0x19930521 || (puVar2 == (undefined *)0x19930522)) ||
       (puVar2 == &DAT_01994000)))))) {
    terminate();
  }
  return 0;
}



// Library Function - Single Match
//  __XcptFilter
// 
// Library: Visual Studio 2008 Release

int __cdecl __XcptFilter(ulong _ExceptionNum,_EXCEPTION_POINTERS *_ExceptionPtr)

{
  ulong *puVar1;
  code *pcVar2;
  void *pvVar3;
  ulong uVar4;
  _ptiddata p_Var5;
  ulong *puVar6;
  int iVar7;
  int iVar8;
  
  p_Var5 = __getptd_noexit();
  if (p_Var5 != (_ptiddata)0x0) {
    puVar1 = (ulong *)p_Var5->_pxcptacttab;
    puVar6 = puVar1;
    do {
      if (*puVar6 == _ExceptionNum) break;
      puVar6 = puVar6 + 3;
    } while (puVar6 < puVar1 + DAT_0324018c * 3);
    if ((puVar1 + DAT_0324018c * 3 <= puVar6) || (*puVar6 != _ExceptionNum)) {
      puVar6 = (ulong *)0x0;
    }
    if ((puVar6 == (ulong *)0x0) || (pcVar2 = (code *)puVar6[2], pcVar2 == (code *)0x0)) {
      p_Var5 = (_ptiddata)0x0;
    }
    else if (pcVar2 == (code *)0x5) {
      puVar6[2] = 0;
      p_Var5 = (_ptiddata)0x1;
    }
    else {
      if (pcVar2 != (code *)0x1) {
        pvVar3 = p_Var5->_tpxcptinfoptrs;
        p_Var5->_tpxcptinfoptrs = _ExceptionPtr;
        if (puVar6[1] == 8) {
          if (DAT_03240180 < DAT_03240184 + DAT_03240180) {
            iVar7 = DAT_03240180 * 0xc;
            iVar8 = DAT_03240180;
            do {
              *(undefined4 *)(iVar7 + 8 + (int)p_Var5->_pxcptacttab) = 0;
              iVar8 = iVar8 + 1;
              iVar7 = iVar7 + 0xc;
            } while (iVar8 < DAT_03240184 + DAT_03240180);
          }
          uVar4 = *puVar6;
          iVar8 = p_Var5->_tfpecode;
          if (uVar4 == 0xc000008e) {
            p_Var5->_tfpecode = 0x83;
          }
          else if (uVar4 == 0xc0000090) {
            p_Var5->_tfpecode = 0x81;
          }
          else if (uVar4 == 0xc0000091) {
            p_Var5->_tfpecode = 0x84;
          }
          else if (uVar4 == 0xc0000093) {
            p_Var5->_tfpecode = 0x85;
          }
          else if (uVar4 == 0xc000008d) {
            p_Var5->_tfpecode = 0x82;
          }
          else if (uVar4 == 0xc000008f) {
            p_Var5->_tfpecode = 0x86;
          }
          else if (uVar4 == 0xc0000092) {
            p_Var5->_tfpecode = 0x8a;
          }
          (*pcVar2)(8,p_Var5->_tfpecode);
          p_Var5->_tfpecode = iVar8;
        }
        else {
          puVar6[2] = 0;
          (*pcVar2)(puVar6[1]);
        }
        p_Var5->_tpxcptinfoptrs = pvVar3;
      }
      p_Var5 = (_ptiddata)0xffffffff;
    }
  }
  return (int)p_Var5;
}



// Library Function - Single Match
//  __wincmdln
// 
// Library: Visual Studio 2008 Release

undefined ** __wincmdln(void)

{
  byte bVar1;
  bool bVar2;
  int iVar3;
  undefined **ppuVar4;
  
  bVar2 = false;
  if (DAT_032f2850 == 0) {
    ___initmbctable();
  }
  ppuVar4 = DAT_032f2858;
  if (DAT_032f2858 == (undefined **)0x0) {
    ppuVar4 = &PTR_02bd3fc0;
  }
  do {
    bVar1 = *(byte *)ppuVar4;
    if (bVar1 < 0x21) {
      if (bVar1 == 0) {
        return ppuVar4;
      }
      if (!bVar2) {
        for (; (*(byte *)ppuVar4 != 0 && (*(byte *)ppuVar4 < 0x21));
            ppuVar4 = (undefined **)((int)ppuVar4 + 1)) {
        }
        return ppuVar4;
      }
    }
    if (bVar1 == 0x22) {
      bVar2 = !bVar2;
    }
    iVar3 = __ismbblead((uint)bVar1);
    if (iVar3 != 0) {
      ppuVar4 = (undefined **)((int)ppuVar4 + 1);
    }
    ppuVar4 = (undefined **)((int)ppuVar4 + 1);
  } while( true );
}



// Library Function - Single Match
//  __setenvp
// 
// Library: Visual Studio 2008 Release

int __cdecl __setenvp(void)

{
  char **ppcVar1;
  size_t sVar2;
  char *_Dst;
  errno_t eVar3;
  char *pcVar4;
  int iVar5;
  
  if (DAT_032f2850 == 0) {
    ___initmbctable();
  }
  iVar5 = 0;
  pcVar4 = DAT_032eb208;
  if (DAT_032eb208 != (char *)0x0) {
    for (; *pcVar4 != '\0'; pcVar4 = pcVar4 + sVar2 + 1) {
      if (*pcVar4 != '=') {
        iVar5 = iVar5 + 1;
      }
      sVar2 = _strlen(pcVar4);
    }
    ppcVar1 = (char **)__calloc_crt(iVar5 + 1,4);
    pcVar4 = DAT_032eb208;
    DAT_032eb250 = ppcVar1;
    if (ppcVar1 != (char **)0x0) {
      do {
        if (*pcVar4 == '\0') {
          _free(DAT_032eb208);
          DAT_032eb208 = (char *)0x0;
          *ppcVar1 = (char *)0x0;
          DAT_032f2844 = 1;
          return 0;
        }
        sVar2 = _strlen(pcVar4);
        sVar2 = sVar2 + 1;
        if (*pcVar4 != '=') {
          _Dst = (char *)__calloc_crt(sVar2,1);
          *ppcVar1 = _Dst;
          if (_Dst == (char *)0x0) {
            _free(DAT_032eb250);
            DAT_032eb250 = (char **)0x0;
            return -1;
          }
          eVar3 = _strcpy_s(_Dst,sVar2,pcVar4);
          if (eVar3 != 0) {
                    // WARNING: Subroutine does not return
            __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
          }
          ppcVar1 = ppcVar1 + 1;
        }
        pcVar4 = pcVar4 + sVar2;
      } while( true );
    }
  }
  return -1;
}



// Library Function - Single Match
//  _parse_cmdline
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __fastcall
_parse_cmdline(undefined4 param_1_00,byte *param_2_00,byte **param_1,byte *param_2,int *param_3)

{
  bool bVar1;
  bool bVar2;
  int iVar3;
  uint uVar4;
  byte *pbVar5;
  byte bVar6;
  byte *pbVar7;
  byte *pbVar8;
  int *unaff_EDI;
  
  *unaff_EDI = 0;
  *param_3 = 1;
  if (param_1 != (byte **)0x0) {
    *param_1 = param_2;
    param_1 = param_1 + 1;
  }
  bVar2 = false;
  pbVar5 = param_2;
  do {
    if (*param_2_00 == 0x22) {
      bVar2 = !bVar2;
      bVar6 = 0x22;
      pbVar7 = param_2_00 + 1;
    }
    else {
      *unaff_EDI = *unaff_EDI + 1;
      if (pbVar5 != (byte *)0x0) {
        *pbVar5 = *param_2_00;
        param_2 = pbVar5 + 1;
      }
      bVar6 = *param_2_00;
      pbVar7 = param_2_00 + 1;
      iVar3 = __ismbblead((uint)bVar6);
      if (iVar3 != 0) {
        *unaff_EDI = *unaff_EDI + 1;
        if (param_2 != (byte *)0x0) {
          *param_2 = *pbVar7;
          param_2 = param_2 + 1;
        }
        pbVar7 = param_2_00 + 2;
      }
      pbVar5 = param_2;
      if (bVar6 == 0) {
        pbVar7 = pbVar7 + -1;
        goto LAB_00a503ee;
      }
    }
    param_2_00 = pbVar7;
  } while ((bVar2) || ((bVar6 != 0x20 && (bVar6 != 9))));
  if (pbVar5 != (byte *)0x0) {
    pbVar5[-1] = 0;
  }
LAB_00a503ee:
  bVar2 = false;
  while (*pbVar7 != 0) {
    for (; (*pbVar7 == 0x20 || (*pbVar7 == 9)); pbVar7 = pbVar7 + 1) {
    }
    if (*pbVar7 == 0) break;
    if (param_1 != (byte **)0x0) {
      *param_1 = pbVar5;
      param_1 = param_1 + 1;
    }
    *param_3 = *param_3 + 1;
    while( true ) {
      bVar1 = true;
      uVar4 = 0;
      for (; *pbVar7 == 0x5c; pbVar7 = pbVar7 + 1) {
        uVar4 = uVar4 + 1;
      }
      if (*pbVar7 == 0x22) {
        pbVar8 = pbVar7;
        if (((uVar4 & 1) == 0) && ((!bVar2 || (pbVar8 = pbVar7 + 1, *pbVar8 != 0x22)))) {
          bVar1 = false;
          bVar2 = !bVar2;
          pbVar8 = pbVar7;
        }
        uVar4 = uVar4 >> 1;
        pbVar7 = pbVar8;
      }
      while (uVar4 != 0) {
        uVar4 = uVar4 - 1;
        if (pbVar5 != (byte *)0x0) {
          *pbVar5 = 0x5c;
          pbVar5 = pbVar5 + 1;
        }
        *unaff_EDI = *unaff_EDI + 1;
        param_2 = pbVar5;
      }
      bVar6 = *pbVar7;
      if ((bVar6 == 0) || ((!bVar2 && ((bVar6 == 0x20 || (bVar6 == 9)))))) break;
      if (bVar1) {
        if (pbVar5 == (byte *)0x0) {
          iVar3 = __ismbblead((int)(char)bVar6);
          if (iVar3 != 0) {
            pbVar7 = pbVar7 + 1;
            *unaff_EDI = *unaff_EDI + 1;
          }
        }
        else {
          iVar3 = __ismbblead((int)(char)bVar6);
          if (iVar3 != 0) {
            *param_2 = *pbVar7;
            pbVar7 = pbVar7 + 1;
            *unaff_EDI = *unaff_EDI + 1;
            param_2 = param_2 + 1;
          }
          *param_2 = *pbVar7;
          param_2 = param_2 + 1;
        }
        *unaff_EDI = *unaff_EDI + 1;
        pbVar5 = param_2;
      }
      pbVar7 = pbVar7 + 1;
    }
    if (pbVar5 != (byte *)0x0) {
      *pbVar5 = 0;
      pbVar5 = pbVar5 + 1;
      param_2 = pbVar5;
    }
    *unaff_EDI = *unaff_EDI + 1;
  }
  if (param_1 != (byte **)0x0) {
    *param_1 = (byte *)0x0;
  }
  *param_3 = *param_3 + 1;
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  __setargv
// 
// Library: Visual Studio 2008 Release

int __cdecl __setargv(void)

{
  uint _Size;
  void *pvVar1;
  int iVar2;
  uint local_10;
  uint local_c;
  char *local_8;
  
  if (DAT_032f2850 == 0) {
    ___initmbctable();
  }
  DAT_032ebc14 = 0;
  GetModuleFileNameA((HMODULE)0x0,&DAT_032ebb10,0x104);
  _DAT_032eb260 = &DAT_032ebb10;
  if ((DAT_032f2858 == (char *)0x0) || (local_8 = DAT_032f2858, *DAT_032f2858 == '\0')) {
    local_8 = &DAT_032ebb10;
  }
  _parse_cmdline(0,0,&local_c);
  if ((local_c < 0x3fffffff) && (local_10 != 0xffffffff)) {
    iVar2 = local_c * 4;
    _Size = iVar2 + local_10;
    if ((local_10 <= _Size) && (pvVar1 = __malloc_crt(_Size), pvVar1 != (void *)0x0)) {
      _parse_cmdline(pvVar1,(void *)(iVar2 + (int)pvVar1),&local_c);
      _DAT_032eb244 = local_c - 1;
      _DAT_032eb248 = pvVar1;
      return 0;
    }
  }
  return -1;
}



// Library Function - Single Match
//  ___crtGetEnvironmentStringsA
// 
// Library: Visual Studio 2008 Release

LPVOID __cdecl ___crtGetEnvironmentStringsA(void)

{
  char cVar1;
  WCHAR WVar2;
  DWORD DVar3;
  WCHAR *pWVar4;
  WCHAR *pWVar5;
  int iVar6;
  size_t _Size;
  LPSTR lpMultiByteStr;
  LPCH _Src;
  char *pcVar7;
  void *_Dst;
  LPWCH lpWideCharStr;
  LPSTR local_8;
  char *pcVar8;
  
  lpWideCharStr = (LPWCH)0x0;
  if (DAT_032ebc18 == 0) {
    lpWideCharStr = GetEnvironmentStringsW();
    if (lpWideCharStr != (LPWCH)0x0) {
      DAT_032ebc18 = 1;
      goto LAB_00a50604;
    }
    DVar3 = GetLastError();
    if (DVar3 == 0x78) {
      DAT_032ebc18 = 2;
    }
  }
  if (DAT_032ebc18 != 1) {
    if ((DAT_032ebc18 != 2) && (DAT_032ebc18 != 0)) {
      return (LPVOID)0x0;
    }
    _Src = GetEnvironmentStrings();
    if (_Src == (LPCH)0x0) {
      return (LPVOID)0x0;
    }
    cVar1 = *_Src;
    pcVar7 = _Src;
    while (cVar1 != '\0') {
      do {
        pcVar8 = pcVar7;
        pcVar7 = pcVar8 + 1;
      } while (*pcVar7 != '\0');
      pcVar7 = pcVar8 + 2;
      cVar1 = *pcVar7;
    }
    _Dst = __malloc_crt((size_t)(pcVar7 + (1 - (int)_Src)));
    if (_Dst == (void *)0x0) {
      FreeEnvironmentStringsA(_Src);
      return (LPVOID)0x0;
    }
    _memcpy(_Dst,_Src,(size_t)(pcVar7 + (1 - (int)_Src)));
    FreeEnvironmentStringsA(_Src);
    return _Dst;
  }
LAB_00a50604:
  if ((lpWideCharStr == (LPWCH)0x0) &&
     (lpWideCharStr = GetEnvironmentStringsW(), lpWideCharStr == (LPWCH)0x0)) {
    return (LPVOID)0x0;
  }
  WVar2 = *lpWideCharStr;
  pWVar5 = lpWideCharStr;
  while (WVar2 != L'\0') {
    do {
      pWVar4 = pWVar5;
      pWVar5 = pWVar4 + 1;
    } while (*pWVar5 != L'\0');
    pWVar5 = pWVar4 + 2;
    WVar2 = *pWVar5;
  }
  iVar6 = ((int)pWVar5 - (int)lpWideCharStr >> 1) + 1;
  _Size = WideCharToMultiByte(0,0,lpWideCharStr,iVar6,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0);
  local_8 = (LPSTR)0x0;
  if (((_Size != 0) && (lpMultiByteStr = (LPSTR)__malloc_crt(_Size), lpMultiByteStr != (LPSTR)0x0))
     && (iVar6 = WideCharToMultiByte(0,0,lpWideCharStr,iVar6,lpMultiByteStr,_Size,(LPCSTR)0x0,
                                     (LPBOOL)0x0), local_8 = lpMultiByteStr, iVar6 == 0)) {
    _free(lpMultiByteStr);
    local_8 = (LPSTR)0x0;
  }
  FreeEnvironmentStringsW(lpWideCharStr);
  return local_8;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __ioinit
// 
// Library: Visual Studio 2008 Release

int __cdecl __ioinit(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  DWORD DVar3;
  int iVar4;
  HANDLE pvVar5;
  int iVar6;
  UINT *pUVar7;
  HANDLE *ppvVar8;
  UINT UVar9;
  UINT UVar10;
  _STARTUPINFOA local_68;
  uint local_24;
  HANDLE *local_20;
  undefined4 uStack_c;
  undefined4 local_8;
  
  uStack_c = 0xa506f2;
  local_8 = 0;
  GetStartupInfoA(&local_68);
  local_8 = 0xfffffffe;
  puVar2 = (undefined4 *)__calloc_crt(0x20,0x40);
  if (puVar2 == (undefined4 *)0x0) {
LAB_00a50931:
    iVar4 = -1;
  }
  else {
    DAT_032f16e4 = 0x20;
    DAT_032f1700 = puVar2;
    for (; puVar2 < DAT_032f1700 + 0x200; puVar2 = puVar2 + 0x10) {
      *(undefined *)(puVar2 + 1) = 0;
      *puVar2 = 0xffffffff;
      *(undefined *)((int)puVar2 + 5) = 10;
      puVar2[2] = 0;
      *(undefined *)(puVar2 + 9) = 0;
      *(undefined *)((int)puVar2 + 0x25) = 10;
      *(undefined *)((int)puVar2 + 0x26) = 10;
      puVar2[0xe] = 0;
      *(undefined *)(puVar2 + 0xd) = 0;
    }
    if ((local_68.cbReserved2 != 0) && ((UINT *)local_68.lpReserved2 != (UINT *)0x0)) {
      UVar9 = *(UINT *)local_68.lpReserved2;
      pUVar7 = (UINT *)((int)local_68.lpReserved2 + 4);
      local_20 = (HANDLE *)((int)pUVar7 + UVar9);
      if (0x7ff < (int)UVar9) {
        UVar9 = 0x800;
      }
      local_24 = 1;
      while ((UVar10 = UVar9, (int)DAT_032f16e4 < (int)UVar9 &&
             (puVar2 = (undefined4 *)__calloc_crt(0x20,0x40), UVar10 = DAT_032f16e4,
             puVar2 != (undefined4 *)0x0))) {
        (&DAT_032f1700)[local_24] = puVar2;
        DAT_032f16e4 = DAT_032f16e4 + 0x20;
        puVar1 = puVar2;
        for (; puVar2 < puVar1 + 0x200; puVar2 = puVar2 + 0x10) {
          *(undefined *)(puVar2 + 1) = 0;
          *puVar2 = 0xffffffff;
          *(undefined *)((int)puVar2 + 5) = 10;
          puVar2[2] = 0;
          *(byte *)(puVar2 + 9) = *(byte *)(puVar2 + 9) & 0x80;
          *(undefined *)((int)puVar2 + 0x25) = 10;
          *(undefined *)((int)puVar2 + 0x26) = 10;
          puVar2[0xe] = 0;
          *(undefined *)(puVar2 + 0xd) = 0;
          puVar1 = (&DAT_032f1700)[local_24];
        }
        local_24 = local_24 + 1;
      }
      local_24 = 0;
      if (0 < (int)UVar10) {
        do {
          pvVar5 = *local_20;
          if ((((pvVar5 != (HANDLE)0xffffffff) && (pvVar5 != (HANDLE)0xfffffffe)) &&
              ((*(byte *)pUVar7 & 1) != 0)) &&
             (((*(byte *)pUVar7 & 8) != 0 || (DVar3 = GetFileType(pvVar5), DVar3 != 0)))) {
            ppvVar8 = (HANDLE *)
                      ((local_24 & 0x1f) * 0x40 + (int)(&DAT_032f1700)[(int)local_24 >> 5]);
            *ppvVar8 = *local_20;
            *(byte *)(ppvVar8 + 1) = *(byte *)pUVar7;
            iVar4 = ___crtInitCritSecAndSpinCount(ppvVar8 + 3,4000);
            if (iVar4 == 0) goto LAB_00a50931;
            ppvVar8[2] = (HANDLE)((int)ppvVar8[2] + 1);
          }
          local_24 = local_24 + 1;
          pUVar7 = (UINT *)((int)pUVar7 + 1);
          local_20 = local_20 + 1;
        } while ((int)local_24 < (int)UVar10);
      }
    }
    iVar4 = 0;
    do {
      ppvVar8 = (HANDLE *)(DAT_032f1700 + iVar4 * 0x10);
      if ((*ppvVar8 == (HANDLE)0xffffffff) || (*ppvVar8 == (HANDLE)0xfffffffe)) {
        *(undefined *)(ppvVar8 + 1) = 0x81;
        if (iVar4 == 0) {
          DVar3 = 0xfffffff6;
        }
        else {
          DVar3 = 0xfffffff5 - (iVar4 != 1);
        }
        pvVar5 = GetStdHandle(DVar3);
        if (((pvVar5 == (HANDLE)0xffffffff) || (pvVar5 == (HANDLE)0x0)) ||
           (DVar3 = GetFileType(pvVar5), DVar3 == 0)) {
          *(byte *)(ppvVar8 + 1) = *(byte *)(ppvVar8 + 1) | 0x40;
          *ppvVar8 = (HANDLE)0xfffffffe;
        }
        else {
          *ppvVar8 = pvVar5;
          if ((DVar3 & 0xff) == 2) {
            *(byte *)(ppvVar8 + 1) = *(byte *)(ppvVar8 + 1) | 0x40;
          }
          else if ((DVar3 & 0xff) == 3) {
            *(byte *)(ppvVar8 + 1) = *(byte *)(ppvVar8 + 1) | 8;
          }
          iVar6 = ___crtInitCritSecAndSpinCount(ppvVar8 + 3,4000);
          if (iVar6 == 0) goto LAB_00a50931;
          ppvVar8[2] = (HANDLE)((int)ppvVar8[2] + 1);
        }
      }
      else {
        *(byte *)(ppvVar8 + 1) = *(byte *)(ppvVar8 + 1) | 0x80;
      }
      iVar4 = iVar4 + 1;
    } while (iVar4 < 3);
    SetHandleCount(DAT_032f16e4);
    iVar4 = 0;
  }
  return iVar4;
}



// WARNING: Removing unreachable block (ram,0x00a5094e)
// WARNING: Removing unreachable block (ram,0x00a50954)
// WARNING: Removing unreachable block (ram,0x00a50956)
// Library Function - Single Match
//  __RTC_Initialize
// 
// Library: Visual Studio 2008 Release

void __RTC_Initialize(void)

{
  return;
}



// Library Function - Single Match
//  ___security_init_cookie
// 
// Library: Visual Studio 2008 Release

void __cdecl ___security_init_cookie(void)

{
  DWORD DVar1;
  DWORD DVar2;
  DWORD DVar3;
  uint uVar4;
  LARGE_INTEGER local_14;
  _FILETIME local_c;
  
  local_c.dwLowDateTime = 0;
  local_c.dwHighDateTime = 0;
  if ((DAT_0323f878 == 0xbb40e64e) || ((DAT_0323f878 & 0xffff0000) == 0)) {
    GetSystemTimeAsFileTime(&local_c);
    uVar4 = local_c.dwHighDateTime ^ local_c.dwLowDateTime;
    DVar1 = GetCurrentProcessId();
    DVar2 = GetCurrentThreadId();
    DVar3 = GetTickCount();
    QueryPerformanceCounter(&local_14);
    DAT_0323f878 = uVar4 ^ DVar1 ^ DVar2 ^ DVar3 ^ local_14.s.HighPart ^ local_14.s.LowPart;
    if (DAT_0323f878 == 0xbb40e64e) {
      DAT_0323f878 = 0xbb40e64f;
    }
    else if ((DAT_0323f878 & 0xffff0000) == 0) {
      DAT_0323f878 = DAT_0323f878 | DAT_0323f878 << 0x10;
    }
    DAT_0323f87c = ~DAT_0323f878;
  }
  else {
    DAT_0323f87c = ~DAT_0323f878;
  }
  return;
}



// Library Function - Single Match
//  int __cdecl CPtoLCID(int)
// 
// Library: Visual Studio 2008 Release

int __cdecl CPtoLCID(int param_1)

{
  int in_EAX;
  
  if (in_EAX == 0x3a4) {
    return 0x411;
  }
  if (in_EAX == 0x3a8) {
    return 0x804;
  }
  if (in_EAX == 0x3b5) {
    return 0x412;
  }
  if (in_EAX != 0x3b6) {
    return 0;
  }
  return 0x404;
}



// Library Function - Single Match
//  void __cdecl setSBCS(struct threadmbcinfostruct *)
// 
// Library: Visual Studio 2008 Release

void __cdecl setSBCS(threadmbcinfostruct *param_1)

{
  int in_EAX;
  undefined *puVar1;
  int iVar2;
  
  _memset((void *)(in_EAX + 0x1c),0,0x101);
  *(undefined4 *)(in_EAX + 4) = 0;
  *(undefined4 *)(in_EAX + 8) = 0;
  *(undefined4 *)(in_EAX + 0xc) = 0;
  *(undefined4 *)(in_EAX + 0x10) = 0;
  *(undefined4 *)(in_EAX + 0x14) = 0;
  *(undefined4 *)(in_EAX + 0x18) = 0;
  puVar1 = (undefined *)(in_EAX + 0x1c);
  iVar2 = 0x101;
  do {
    *puVar1 = puVar1[(int)&DAT_032401d0 - in_EAX];
    puVar1 = puVar1 + 1;
    iVar2 = iVar2 + -1;
  } while (iVar2 != 0);
  puVar1 = (undefined *)(in_EAX + 0x11d);
  iVar2 = 0x100;
  do {
    *puVar1 = puVar1[(int)&DAT_032401d0 - in_EAX];
    puVar1 = puVar1 + 1;
    iVar2 = iVar2 + -1;
  } while (iVar2 != 0);
  return;
}



// Library Function - Single Match
//  void __cdecl setSBUpLow(struct threadmbcinfostruct *)
// 
// Library: Visual Studio 2008 Release

void __cdecl setSBUpLow(threadmbcinfostruct *param_1)

{
  byte *pbVar1;
  char *pcVar2;
  BOOL BVar3;
  uint uVar4;
  CHAR CVar5;
  char cVar6;
  BYTE *pBVar7;
  int unaff_ESI;
  _cpinfo local_51c;
  WORD local_508 [256];
  CHAR local_308 [256];
  CHAR local_208 [256];
  CHAR local_108 [256];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  BVar3 = GetCPInfo(*(UINT *)(unaff_ESI + 4),&local_51c);
  if (BVar3 == 0) {
    uVar4 = 0;
    do {
      pcVar2 = (char *)(unaff_ESI + 0x11d + uVar4);
      if (pcVar2 + (-0x61 - (unaff_ESI + 0x11d)) + 0x20 < (char *)0x1a) {
        pbVar1 = (byte *)(unaff_ESI + 0x1d + uVar4);
        *pbVar1 = *pbVar1 | 0x10;
        cVar6 = (char)uVar4 + ' ';
LAB_00a50c28:
        *pcVar2 = cVar6;
      }
      else {
        if (pcVar2 + (-0x61 - (unaff_ESI + 0x11d)) < (char *)0x1a) {
          pbVar1 = (byte *)(unaff_ESI + 0x1d + uVar4);
          *pbVar1 = *pbVar1 | 0x20;
          cVar6 = (char)uVar4 + -0x20;
          goto LAB_00a50c28;
        }
        *pcVar2 = '\0';
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < 0x100);
  }
  else {
    uVar4 = 0;
    do {
      local_108[uVar4] = (CHAR)uVar4;
      uVar4 = uVar4 + 1;
    } while (uVar4 < 0x100);
    local_108[0] = ' ';
    if (local_51c.LeadByte[0] != 0) {
      pBVar7 = local_51c.LeadByte + 1;
      do {
        uVar4 = (uint)local_51c.LeadByte[0];
        if (uVar4 <= *pBVar7) {
          _memset(local_108 + uVar4,0x20,(*pBVar7 - uVar4) + 1);
        }
        local_51c.LeadByte[0] = pBVar7[1];
        pBVar7 = pBVar7 + 2;
      } while (local_51c.LeadByte[0] != 0);
    }
    ___crtGetStringTypeA
              ((_locale_t)0x0,1,local_108,0x100,local_508,*(int *)(unaff_ESI + 4),
               *(BOOL *)(unaff_ESI + 0xc));
    ___crtLCMapStringA((_locale_t)0x0,*(LPCWSTR *)(unaff_ESI + 0xc),0x100,local_108,0x100,local_208,
                       0x100,*(int *)(unaff_ESI + 4),0);
    ___crtLCMapStringA((_locale_t)0x0,*(LPCWSTR *)(unaff_ESI + 0xc),0x200,local_108,0x100,local_308,
                       0x100,*(int *)(unaff_ESI + 4),0);
    uVar4 = 0;
    do {
      if ((local_508[uVar4] & 1) == 0) {
        if ((local_508[uVar4] & 2) != 0) {
          pbVar1 = (byte *)(unaff_ESI + 0x1d + uVar4);
          *pbVar1 = *pbVar1 | 0x20;
          CVar5 = local_308[uVar4];
          goto LAB_00a50bc6;
        }
        *(undefined *)(unaff_ESI + 0x11d + uVar4) = 0;
      }
      else {
        pbVar1 = (byte *)(unaff_ESI + 0x1d + uVar4);
        *pbVar1 = *pbVar1 | 0x10;
        CVar5 = local_208[uVar4];
LAB_00a50bc6:
        *(CHAR *)(unaff_ESI + 0x11d + uVar4) = CVar5;
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 < 0x100);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  ___updatetmbcinfo
// 
// Library: Visual Studio 2008 Release

pthreadmbcinfo __cdecl ___updatetmbcinfo(void)

{
  _ptiddata p_Var1;
  LONG LVar2;
  pthreadmbcinfo lpAddend;
  
  p_Var1 = __getptd();
  if (((p_Var1->_ownlocale & DAT_03240088) == 0) || (p_Var1->ptlocinfo == (pthreadlocinfo)0x0)) {
    __lock(0xd);
    lpAddend = p_Var1->ptmbcinfo;
    if (lpAddend != (pthreadmbcinfo)PTR_DAT_032405f8) {
      if (lpAddend != (pthreadmbcinfo)0x0) {
        LVar2 = InterlockedDecrement(&lpAddend->refcount);
        if ((LVar2 == 0) && (lpAddend != (pthreadmbcinfo)&DAT_032401d0)) {
          _free(lpAddend);
        }
      }
      p_Var1->ptmbcinfo = (pthreadmbcinfo)PTR_DAT_032405f8;
      lpAddend = (pthreadmbcinfo)PTR_DAT_032405f8;
      InterlockedIncrement((LONG *)PTR_DAT_032405f8);
    }
    FUN_00a50cdd();
  }
  else {
    lpAddend = p_Var1->ptmbcinfo;
  }
  if (lpAddend == (pthreadmbcinfo)0x0) {
    __amsg_exit(0x20);
  }
  return lpAddend;
}



void FUN_00a50cdd(void)

{
  FUN_00a4d824(0xd);
  return;
}



// Library Function - Single Match
//  int __cdecl getSystemCP(int)
// 
// Library: Visual Studio 2008 Release

int __cdecl getSystemCP(int param_1)

{
  UINT UVar1;
  int unaff_ESI;
  int local_14 [2];
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)local_14,(localeinfo_struct *)0x0);
  DAT_032ebc1c = 0;
  if (unaff_ESI == -2) {
    DAT_032ebc1c = 1;
    UVar1 = GetOEMCP();
  }
  else if (unaff_ESI == -3) {
    DAT_032ebc1c = 1;
    UVar1 = GetACP();
  }
  else {
    if (unaff_ESI != -4) {
      if (local_8 == '\0') {
        DAT_032ebc1c = 0;
        return unaff_ESI;
      }
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
      return unaff_ESI;
    }
    UVar1 = *(UINT *)(local_14[0] + 4);
    DAT_032ebc1c = 1;
  }
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return UVar1;
}



// Library Function - Single Match
//  __setmbcp_nolock
// 
// Library: Visual Studio 2008 Release

void __setmbcp_nolock(undefined4 param_1,int param_2)

{
  BYTE *pBVar1;
  byte *pbVar2;
  byte bVar3;
  uint uVar4;
  uint uVar5;
  BOOL BVar6;
  undefined2 *puVar7;
  byte *pbVar8;
  int extraout_ECX;
  undefined2 *puVar9;
  int iVar10;
  undefined4 extraout_EDX;
  BYTE *pBVar11;
  threadmbcinfostruct *unaff_EDI;
  uint local_24;
  byte *local_20;
  _cpinfo local_1c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  uVar4 = getSystemCP((int)unaff_EDI);
  if (uVar4 != 0) {
    local_20 = (byte *)0x0;
    uVar5 = 0;
LAB_00a50da0:
    if (*(uint *)((int)&DAT_03240600 + uVar5) != uVar4) goto code_r0x00a50dac;
    _memset((void *)(param_2 + 0x1c),0,0x101);
    local_24 = 0;
    pbVar8 = &DAT_03240610 + (int)local_20 * 0x30;
    local_20 = pbVar8;
    do {
      for (; (*pbVar8 != 0 && (bVar3 = pbVar8[1], bVar3 != 0)); pbVar8 = pbVar8 + 2) {
        for (uVar5 = (uint)*pbVar8; uVar5 <= bVar3; uVar5 = uVar5 + 1) {
          pbVar2 = (byte *)(param_2 + 0x1d + uVar5);
          *pbVar2 = *pbVar2 | (&DAT_032405fc)[local_24];
          bVar3 = pbVar8[1];
        }
      }
      local_24 = local_24 + 1;
      pbVar8 = local_20 + 8;
      local_20 = pbVar8;
    } while (local_24 < 4);
    *(uint *)(param_2 + 4) = uVar4;
    *(undefined4 *)(param_2 + 8) = 1;
    iVar10 = CPtoLCID((int)unaff_EDI);
    *(int *)(param_2 + 0xc) = iVar10;
    puVar7 = (undefined2 *)(param_2 + 0x10);
    puVar9 = (undefined2 *)(&DAT_03240604 + extraout_ECX);
    iVar10 = 6;
    do {
      *puVar7 = *puVar9;
      puVar9 = puVar9 + 1;
      puVar7 = puVar7 + 1;
      iVar10 = iVar10 + -1;
    } while (iVar10 != 0);
    goto LAB_00a50ed1;
  }
LAB_00a50d8d:
  setSBCS(unaff_EDI);
LAB_00a50f38:
  ___security_check_cookie_4();
  return;
code_r0x00a50dac:
  local_20 = (byte *)((int)local_20 + 1);
  uVar5 = uVar5 + 0x30;
  if (0xef < uVar5) goto code_r0x00a50db9;
  goto LAB_00a50da0;
code_r0x00a50db9:
  if (((uVar4 == 65000) || (uVar4 == 0xfde9)) ||
     (BVar6 = IsValidCodePage(uVar4 & 0xffff), BVar6 == 0)) goto LAB_00a50f38;
  BVar6 = GetCPInfo(uVar4,&local_1c);
  if (BVar6 != 0) {
    _memset((void *)(param_2 + 0x1c),0,0x101);
    *(uint *)(param_2 + 4) = uVar4;
    *(undefined4 *)(param_2 + 0xc) = 0;
    if (local_1c.MaxCharSize < 2) {
      *(undefined4 *)(param_2 + 8) = 0;
    }
    else {
      if (local_1c.LeadByte[0] != '\0') {
        pBVar11 = local_1c.LeadByte + 1;
        do {
          bVar3 = *pBVar11;
          if (bVar3 == 0) break;
          for (uVar4 = (uint)pBVar11[-1]; uVar4 <= bVar3; uVar4 = uVar4 + 1) {
            pbVar8 = (byte *)(param_2 + 0x1d + uVar4);
            *pbVar8 = *pbVar8 | 4;
          }
          pBVar1 = pBVar11 + 1;
          pBVar11 = pBVar11 + 2;
        } while (*pBVar1 != 0);
      }
      pbVar8 = (byte *)(param_2 + 0x1e);
      iVar10 = 0xfe;
      do {
        *pbVar8 = *pbVar8 | 8;
        pbVar8 = pbVar8 + 1;
        iVar10 = iVar10 + -1;
      } while (iVar10 != 0);
      iVar10 = CPtoLCID((int)unaff_EDI);
      *(int *)(param_2 + 0xc) = iVar10;
      *(undefined4 *)(param_2 + 8) = extraout_EDX;
    }
    *(undefined4 *)(param_2 + 0x10) = 0;
    *(undefined4 *)(param_2 + 0x14) = 0;
    *(undefined4 *)(param_2 + 0x18) = 0;
LAB_00a50ed1:
    setSBUpLow(unaff_EDI);
    goto LAB_00a50f38;
  }
  if (DAT_032ebc1c == 0) goto LAB_00a50f38;
  goto LAB_00a50d8d;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  __setmbcp
// 
// Library: Visual Studio 2008 Release

int __cdecl __setmbcp(int _CodePage)

{
  _ptiddata p_Var1;
  int iVar2;
  pthreadmbcinfo ptVar3;
  LONG LVar4;
  int *piVar5;
  int iVar6;
  pthreadmbcinfo ptVar7;
  pthreadmbcinfo ptVar8;
  int in_stack_ffffffc8;
  int local_24;
  
  local_24 = -1;
  p_Var1 = __getptd();
  ___updatetmbcinfo();
  ptVar3 = p_Var1->ptmbcinfo;
  iVar2 = getSystemCP(in_stack_ffffffc8);
  if (iVar2 == ptVar3->mbcodepage) {
    local_24 = 0;
  }
  else {
    ptVar3 = (pthreadmbcinfo)__malloc_crt(0x220);
    if (ptVar3 != (pthreadmbcinfo)0x0) {
      ptVar7 = p_Var1->ptmbcinfo;
      ptVar8 = ptVar3;
      for (iVar6 = 0x88; iVar6 != 0; iVar6 = iVar6 + -1) {
        ptVar8->refcount = ptVar7->refcount;
        ptVar7 = (pthreadmbcinfo)&ptVar7->mbcodepage;
        ptVar8 = (pthreadmbcinfo)&ptVar8->mbcodepage;
      }
      ptVar3->refcount = 0;
      local_24 = __setmbcp_nolock(iVar2,ptVar3);
      if (local_24 == 0) {
        LVar4 = InterlockedDecrement(&p_Var1->ptmbcinfo->refcount);
        if ((LVar4 == 0) && (p_Var1->ptmbcinfo != (pthreadmbcinfo)&DAT_032401d0)) {
          _free(p_Var1->ptmbcinfo);
        }
        p_Var1->ptmbcinfo = ptVar3;
        InterlockedIncrement((LONG *)ptVar3);
        if (((*(byte *)&p_Var1->_ownlocale & 2) == 0) && (((byte)DAT_03240088 & 1) == 0)) {
          __lock(0xd);
          _DAT_032ebc2c = ptVar3->mbcodepage;
          _DAT_032ebc30 = ptVar3->ismbcodepage;
          _DAT_032ebc34 = *(undefined4 *)ptVar3->mbulinfo;
          for (iVar2 = 0; iVar2 < 5; iVar2 = iVar2 + 1) {
            (&DAT_032ebc20)[iVar2] = ptVar3->mbulinfo[iVar2 + 2];
          }
          for (iVar2 = 0; iVar2 < 0x101; iVar2 = iVar2 + 1) {
            (&DAT_032403f0)[iVar2] = ptVar3->mbctype[iVar2 + 4];
          }
          for (iVar2 = 0; iVar2 < 0x100; iVar2 = iVar2 + 1) {
            (&DAT_032404f8)[iVar2] = ptVar3->mbcasemap[iVar2 + 4];
          }
          LVar4 = InterlockedDecrement((LONG *)PTR_DAT_032405f8);
          if ((LVar4 == 0) && (PTR_DAT_032405f8 != &DAT_032401d0)) {
            _free(PTR_DAT_032405f8);
          }
          PTR_DAT_032405f8 = (undefined *)ptVar3;
          InterlockedIncrement((LONG *)ptVar3);
          FUN_00a510a8();
        }
      }
      else if (local_24 == -1) {
        if (ptVar3 != (pthreadmbcinfo)&DAT_032401d0) {
          _free(ptVar3);
        }
        piVar5 = __errno();
        *piVar5 = 0x16;
      }
    }
  }
  return local_24;
}



void FUN_00a510a8(void)

{
  FUN_00a4d824(0xd);
  return;
}



// Library Function - Single Match
//  ___initmbctable
// 
// Library: Visual Studio 2008 Release

undefined4 ___initmbctable(void)

{
  if (DAT_032f2850 == 0) {
    __setmbcp(-3);
    DAT_032f2850 = 1;
  }
  return 0;
}



// Library Function - Single Match
//  __isctype_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __isctype_l(int _C,int _Type,_locale_t _Locale)

{
  int iVar1;
  BOOL BVar2;
  CHAR CVar3;
  localeinfo_struct local_1c;
  int local_14;
  char local_10;
  CHAR local_c;
  CHAR local_b;
  undefined local_a;
  ushort local_8 [2];
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_1c,_Locale);
  if (_C + 1U < 0x101) {
    local_8[0] = *(ushort *)(local_1c.locinfo[1].lc_category[0].locale + _C * 2);
  }
  else {
    iVar1 = __isleadbyte_l(_C >> 8 & 0xff,&local_1c);
    CVar3 = (CHAR)_C;
    if (iVar1 == 0) {
      local_b = '\0';
      iVar1 = 1;
      local_c = CVar3;
    }
    else {
      _C._0_1_ = (CHAR)((uint)_C >> 8);
      local_c = (CHAR)_C;
      local_a = 0;
      iVar1 = 2;
      local_b = CVar3;
    }
    BVar2 = ___crtGetStringTypeA
                      (&local_1c,1,&local_c,iVar1,local_8,(local_1c.locinfo)->lc_codepage,
                       (BOOL)(local_1c.locinfo)->lc_category[0].wlocale);
    if (BVar2 == 0) {
      if (local_10 != '\0') {
        *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
      }
      return 0;
    }
  }
  if (local_10 != '\0') {
    *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
  }
  return (uint)local_8[0] & _Type;
}



// Library Function - Single Match
//  __iswctype_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __iswctype_l(wint_t _C,wctype_t _Type,_locale_t _Locale)

{
  int iVar1;
  int local_18 [2];
  int local_10;
  char local_c;
  ushort local_8 [2];
  
  if (_C == 0xffff) {
    local_8[0] = 0;
  }
  else if (_C < 0x100) {
    local_8[0] = *(ushort *)(PTR_DAT_0323f888 + (uint)_C * 2) & _Type;
  }
  else {
    _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)local_18,_Locale);
    iVar1 = ___crtGetStringTypeW
                      (local_18,1,&_C,1,local_8,*(undefined4 *)(local_18[0] + 4),
                       *(undefined4 *)(local_18[0] + 0x14));
    if (iVar1 == 0) {
      local_8[0] = 0;
    }
    if (local_c != '\0') {
      *(uint *)(local_10 + 0x70) = *(uint *)(local_10 + 0x70) & 0xfffffffd;
    }
  }
  return (uint)(local_8[0] & _Type);
}



// Library Function - Single Match
//  _iswctype
// 
// Library: Visual Studio 2008 Release

int __cdecl _iswctype(wint_t _C,wctype_t _Type)

{
  int iVar1;
  undefined2 in_stack_00000006;
  undefined2 in_stack_0000000a;
  undefined local_8 [4];
  
  if (_C == 0xffff) {
    return 0;
  }
  if (_C < 0x100) {
    return (uint)(*(ushort *)(PTR_DAT_0323f888 + (uint)_C * 2) & _Type);
  }
  if (DAT_032eb230 == 0) {
    ___crtGetStringTypeW(&PTR_DAT_03240178,1,&_C,1,local_8,DAT_0324009c,DAT_032400ac);
  }
  iVar1 = __iswctype_l((wint_t)__C,(wctype_t)__Type,(_locale_t)0x0);
  return iVar1;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  void * __cdecl operator new(unsigned int,struct std::nothrow_t const &)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void * __cdecl operator_new(uint param_1,nothrow_t *param_2)

{
  void *pvVar1;
  
  pvVar1 = operator_new(param_1);
  return pvVar1;
}



undefined4 Catch_All_00a512dc(void)

{
  int unaff_EBP;
  
  *(undefined4 *)(unaff_EBP + -0x14) = 0;
  return 0xa512d3;
}



// Library Function - Single Match
//  _wcscpy_s
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl _wcscpy_s(wchar_t *_Dst,rsize_t _SizeInWords,wchar_t *_Src)

{
  wchar_t wVar1;
  int *piVar2;
  wchar_t *pwVar3;
  errno_t eVar4;
  
  if ((_Dst != (wchar_t *)0x0) && (_SizeInWords != 0)) {
    pwVar3 = _Dst;
    if (_Src != (wchar_t *)0x0) {
      do {
        wVar1 = *_Src;
        *pwVar3 = wVar1;
        _Src = _Src + 1;
        if (wVar1 == L'\0') break;
        _SizeInWords = _SizeInWords - 1;
        pwVar3 = pwVar3 + 1;
      } while (_SizeInWords != 0);
      if (_SizeInWords != 0) {
        return 0;
      }
      *_Dst = L'\0';
      piVar2 = __errno();
      eVar4 = 0x22;
      *piVar2 = 0x22;
      goto LAB_00a51308;
    }
    *_Dst = L'\0';
  }
  piVar2 = __errno();
  eVar4 = 0x16;
  *piVar2 = 0x16;
LAB_00a51308:
  __invalid_parameter(0,0,0,0,0);
  return eVar4;
}



int FUN_00a51355(short *param_1)

{
  short sVar1;
  short *psVar2;
  
  psVar2 = param_1;
  do {
    sVar1 = *psVar2;
    psVar2 = psVar2 + 1;
  } while (sVar1 != 0);
  return ((int)psVar2 - (int)param_1 >> 1) + -1;
}



// Library Function - Single Match
//  ___getgmtimebuf
// 
// Library: Visual Studio 2008 Release

tm * __cdecl ___getgmtimebuf(void)

{
  _ptiddata p_Var1;
  int *piVar2;
  void *pvVar3;
  
  p_Var1 = __getptd_noexit();
  if (p_Var1 == (_ptiddata)0x0) {
LAB_00a5137d:
    piVar2 = __errno();
    *piVar2 = 0xc;
    return (tm *)0x0;
  }
  if (p_Var1->_gmtimebuf == (void *)0x0) {
    pvVar3 = __malloc_crt(0x24);
    p_Var1->_gmtimebuf = pvVar3;
    if (pvVar3 == (void *)0x0) goto LAB_00a5137d;
  }
  return (tm *)p_Var1->_gmtimebuf;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  __getbuf
// 
// Library: Visual Studio 2008 Release

void __cdecl __getbuf(FILE *_File)

{
  char *pcVar1;
  
  _DAT_032eb274 = _DAT_032eb274 + 1;
  pcVar1 = (char *)__malloc_crt(0x1000);
  _File->_base = pcVar1;
  if (pcVar1 == (char *)0x0) {
    _File->_flag = _File->_flag | 4;
    _File->_base = (char *)&_File->_charbuf;
    _File->_bufsiz = 2;
  }
  else {
    _File->_flag = _File->_flag | 8;
    _File->_bufsiz = 0x1000;
  }
  _File->_cnt = 0;
  _File->_ptr = _File->_base;
  return;
}



// Library Function - Single Match
//  __filbuf
// 
// Library: Visual Studio 2008 Release

int __cdecl __filbuf(FILE *_File)

{
  byte bVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  undefined *puVar5;
  char *_DstBuf;
  
  if (_File == (FILE *)0x0) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else {
    uVar4 = _File->_flag;
    if (((uVar4 & 0x83) != 0) && ((uVar4 & 0x40) == 0)) {
      if ((uVar4 & 2) == 0) {
        _File->_flag = uVar4 | 1;
        if ((uVar4 & 0x10c) == 0) {
          __getbuf(_File);
        }
        else {
          _File->_ptr = _File->_base;
        }
        uVar4 = _File->_bufsiz;
        _DstBuf = _File->_base;
        iVar3 = __fileno(_File);
        iVar3 = __read(iVar3,_DstBuf,uVar4);
        _File->_cnt = iVar3;
        if ((iVar3 != 0) && (iVar3 != -1)) {
          if ((*(byte *)&_File->_flag & 0x82) == 0) {
            iVar3 = __fileno(_File);
            if ((iVar3 == -1) || (iVar3 = __fileno(_File), iVar3 == -2)) {
              puVar5 = &DAT_03240190;
            }
            else {
              iVar3 = __fileno(_File);
              uVar4 = __fileno(_File);
              puVar5 = (undefined *)((uVar4 & 0x1f) * 0x40 + (&DAT_032f1700)[iVar3 >> 5]);
            }
            if ((puVar5[4] & 0x82) == 0x82) {
              _File->_flag = _File->_flag | 0x2000;
            }
          }
          if (((_File->_bufsiz == 0x200) && ((_File->_flag & 8U) != 0)) &&
             ((_File->_flag & 0x400U) == 0)) {
            _File->_bufsiz = 0x1000;
          }
          _File->_cnt = _File->_cnt + -1;
          bVar1 = *_File->_ptr;
          _File->_ptr = _File->_ptr + 1;
          return (uint)bVar1;
        }
        _File->_flag = _File->_flag | (-(uint)(iVar3 != 0) & 0x10) + 0x10;
        _File->_cnt = 0;
      }
      else {
        _File->_flag = uVar4 | 0x20;
      }
    }
  }
  return -1;
}



// Library Function - Single Match
//  __lseek_nolock
// 
// Library: Visual Studio 2008 Release

long __cdecl __lseek_nolock(int _FileHandle,long _Offset,int _Origin)

{
  byte *pbVar1;
  HANDLE hFile;
  int *piVar2;
  DWORD DVar3;
  ulong uVar4;
  
  hFile = (HANDLE)__get_osfhandle(_FileHandle);
  if (hFile == (HANDLE)0xffffffff) {
    piVar2 = __errno();
    *piVar2 = 9;
    DVar3 = 0xffffffff;
  }
  else {
    DVar3 = SetFilePointer(hFile,_Offset,(PLONG)0x0,_Origin);
    if (DVar3 == 0xffffffff) {
      uVar4 = GetLastError();
    }
    else {
      uVar4 = 0;
    }
    if (uVar4 == 0) {
      pbVar1 = (byte *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + (_FileHandle & 0x1fU) * 0x40);
      *pbVar1 = *pbVar1 & 0xfd;
    }
    else {
      __dosmaperr(uVar4);
      DVar3 = 0xffffffff;
    }
  }
  return DVar3;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __lseek
// 
// Library: Visual Studio 2008 Release

long __cdecl __lseek(int _FileHandle,long _Offset,int _Origin)

{
  ulong *puVar1;
  int *piVar2;
  int iVar3;
  long local_20;
  
  if (_FileHandle == -2) {
    puVar1 = ___doserrno();
    *puVar1 = 0;
    piVar2 = __errno();
    *piVar2 = 9;
  }
  else {
    if ((-1 < _FileHandle) && ((uint)_FileHandle < DAT_032f16e4)) {
      iVar3 = (_FileHandle & 0x1fU) * 0x40;
      if ((*(byte *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + iVar3) & 1) != 0) {
        ___lock_fhandle(_FileHandle);
        if ((*(byte *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + iVar3) & 1) == 0) {
          piVar2 = __errno();
          *piVar2 = 9;
          puVar1 = ___doserrno();
          *puVar1 = 0;
          local_20 = -1;
        }
        else {
          local_20 = __lseek_nolock(_FileHandle,_Offset,_Origin);
        }
        FUN_00a51661();
        return local_20;
      }
    }
    puVar1 = ___doserrno();
    *puVar1 = 0;
    piVar2 = __errno();
    *piVar2 = 9;
    __invalid_parameter(0,0,0,0,0);
  }
  return -1;
}



void FUN_00a51661(void)

{
  int unaff_EBP;
  
  __unlock_fhandle(*(int *)(unaff_EBP + 8));
  return;
}



// Library Function - Single Match
//  __freebuf
// 
// Library: Visual Studio 2008 Release

void __cdecl __freebuf(FILE *_File)

{
  if (((_File->_flag & 0x83U) != 0) && ((_File->_flag & 8U) != 0)) {
    _free(_File->_base);
    _File->_flag = _File->_flag & 0xfffffbf7;
    _File->_ptr = (char *)0x0;
    _File->_base = (char *)0x0;
    _File->_cnt = 0;
  }
  return;
}



// Library Function - Single Match
//  _fastzero_I
// 
// Libraries: Visual Studio 2005, Visual Studio 2008, Visual Studio 2019

void _fastzero_I(undefined (*param_1) [16],uint param_2)

{
  param_2 = param_2 >> 7;
  do {
    *param_1 = (undefined  [16])0x0;
    param_1[1] = (undefined  [16])0x0;
    param_1[2] = (undefined  [16])0x0;
    param_1[3] = (undefined  [16])0x0;
    param_1[4] = (undefined  [16])0x0;
    param_1[5] = (undefined  [16])0x0;
    param_1[6] = (undefined  [16])0x0;
    param_1[7] = (undefined  [16])0x0;
    param_1 = param_1 + 8;
    param_2 = param_2 - 1;
  } while (param_2 != 0);
  return;
}



// Library Function - Single Match
//  __VEC_memzero
// 
// Libraries: Visual Studio 2005 Debug, Visual Studio 2005 Release, Visual Studio 2008 Debug, Visual
// Studio 2008 Release

undefined * __VEC_memzero(undefined *param_1,undefined4 param_2,uint param_3)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  undefined *puVar4;
  
  uVar2 = (int)param_1 >> 0x1f;
  iVar3 = (((uint)param_1 ^ uVar2) - uVar2 & 0xf ^ uVar2) - uVar2;
  if (iVar3 == 0) {
    uVar2 = param_3 & 0x7f;
    if (param_3 != uVar2) {
      _fastzero_I(param_1,param_3 - uVar2);
    }
    if (uVar2 != 0) {
      puVar4 = param_1 + (param_3 - uVar2);
      for (; uVar2 != 0; uVar2 = uVar2 - 1) {
        *puVar4 = 0;
        puVar4 = puVar4 + 1;
      }
    }
  }
  else {
    iVar3 = 0x10 - iVar3;
    puVar4 = param_1;
    for (iVar1 = iVar3; iVar1 != 0; iVar1 = iVar1 + -1) {
      *puVar4 = 0;
      puVar4 = puVar4 + 1;
    }
    __VEC_memzero(param_1 + iVar3,0,param_3 - iVar3);
  }
  return param_1;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3

undefined4 FUN_00a51782(void)

{
  return 1;
}



// WARNING: Removing unreachable block (ram,0x00a5180f)
// WARNING: Removing unreachable block (ram,0x00a517fc)
// Library Function - Single Match
//  __get_sse2_info
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

undefined4 __get_sse2_info(void)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  byte in_AF;
  byte in_TF;
  byte in_IF;
  byte in_NT;
  byte in_AC;
  byte in_VIF;
  byte in_VIP;
  byte in_ID;
  uint uVar4;
  uint local_8;
  
  local_8 = 0;
  uVar4 = (uint)(in_NT & 1) * 0x4000 | (uint)(in_IF & 1) * 0x200 | (uint)(in_TF & 1) * 0x100 | 0x40
          | (uint)(in_AF & 1) * 0x10 | 4 | (uint)(in_ID & 1) * 0x200000 |
          (uint)(in_VIP & 1) * 0x100000 | (uint)(in_VIF & 1) * 0x80000 | (uint)(in_AC & 1) * 0x40000
  ;
  uVar1 = uVar4 ^ 0x200000;
  if (((uint)((uVar1 & 0x4000) != 0) * 0x4000 | (uint)((uVar1 & 0x400) != 0) * 0x400 |
       (uint)((uVar1 & 0x200) != 0) * 0x200 | (uint)((uVar1 & 0x100) != 0) * 0x100 |
       (uint)((uVar1 & 0x40) != 0) * 0x40 | (uint)((uVar1 & 0x10) != 0) * 0x10 |
       (uint)((uVar1 & 4) != 0) * 4 | (uint)((uVar1 & 0x200000) != 0) * 0x200000 |
      (uint)((uVar1 & 0x40000) != 0) * 0x40000) != uVar4) {
    cpuid_basic_info(0);
    iVar2 = cpuid_Version_info(1);
    local_8 = *(uint *)(iVar2 + 8);
  }
  if (((local_8 & 0x4000000) == 0) || (iVar2 = FUN_00a51782(), iVar2 == 0)) {
    uVar3 = 0;
  }
  else {
    uVar3 = 1;
  }
  return uVar3;
}



// WARNING: Restarted to delay deadcode elimination for space: stack
// Library Function - Single Match
//  __CallSettingFrame@12
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void __CallSettingFrame_12(undefined4 param_1,undefined4 param_2,int param_3)

{
  code *pcVar1;
  
  pcVar1 = (code *)__NLG_Notify1(param_3);
  (*pcVar1)();
  if (param_3 == 0x100) {
    param_3 = 2;
  }
  __NLG_Notify1(param_3);
  return;
}



void FUN_00a5189c(undefined4 *param_1,undefined4 *param_2,uint param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  undefined4 uVar13;
  undefined4 uVar14;
  undefined4 uVar15;
  
  param_3 = param_3 >> 7;
  do {
    uVar1 = param_2[1];
    uVar2 = param_2[2];
    uVar3 = param_2[3];
    uVar4 = param_2[4];
    uVar5 = param_2[5];
    uVar6 = param_2[6];
    uVar7 = param_2[7];
    uVar8 = param_2[8];
    uVar9 = param_2[9];
    uVar10 = param_2[10];
    uVar11 = param_2[0xb];
    uVar12 = param_2[0xc];
    uVar13 = param_2[0xd];
    uVar14 = param_2[0xe];
    uVar15 = param_2[0xf];
    *param_1 = *param_2;
    param_1[1] = uVar1;
    param_1[2] = uVar2;
    param_1[3] = uVar3;
    param_1[4] = uVar4;
    param_1[5] = uVar5;
    param_1[6] = uVar6;
    param_1[7] = uVar7;
    param_1[8] = uVar8;
    param_1[9] = uVar9;
    param_1[10] = uVar10;
    param_1[0xb] = uVar11;
    param_1[0xc] = uVar12;
    param_1[0xd] = uVar13;
    param_1[0xe] = uVar14;
    param_1[0xf] = uVar15;
    uVar1 = param_2[0x11];
    uVar2 = param_2[0x12];
    uVar3 = param_2[0x13];
    uVar4 = param_2[0x14];
    uVar5 = param_2[0x15];
    uVar6 = param_2[0x16];
    uVar7 = param_2[0x17];
    uVar8 = param_2[0x18];
    uVar9 = param_2[0x19];
    uVar10 = param_2[0x1a];
    uVar11 = param_2[0x1b];
    uVar12 = param_2[0x1c];
    uVar13 = param_2[0x1d];
    uVar14 = param_2[0x1e];
    uVar15 = param_2[0x1f];
    param_1[0x10] = param_2[0x10];
    param_1[0x11] = uVar1;
    param_1[0x12] = uVar2;
    param_1[0x13] = uVar3;
    param_1[0x14] = uVar4;
    param_1[0x15] = uVar5;
    param_1[0x16] = uVar6;
    param_1[0x17] = uVar7;
    param_1[0x18] = uVar8;
    param_1[0x19] = uVar9;
    param_1[0x1a] = uVar10;
    param_1[0x1b] = uVar11;
    param_1[0x1c] = uVar12;
    param_1[0x1d] = uVar13;
    param_1[0x1e] = uVar14;
    param_1[0x1f] = uVar15;
    param_2 = param_2 + 0x20;
    param_1 = param_1 + 0x20;
    param_3 = param_3 - 1;
  } while (param_3 != 0);
  return;
}



// Library Function - Single Match
//  __VEC_memcpy
// 
// Libraries: Visual Studio 2005 Debug, Visual Studio 2005 Release, Visual Studio 2008 Debug, Visual
// Studio 2008 Release

undefined4 * __VEC_memcpy(undefined4 *param_1,undefined4 *param_2,uint param_3)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  undefined *puVar5;
  undefined4 *puVar6;
  undefined *puVar7;
  undefined4 *puVar8;
  
  uVar3 = (int)param_2 >> 0x1f;
  uVar3 = (((uint)param_2 ^ uVar3) - uVar3 & 0xf ^ uVar3) - uVar3;
  uVar4 = (int)param_1 >> 0x1f;
  uVar4 = (((uint)param_1 ^ uVar4) - uVar4 & 0xf ^ uVar4) - uVar4;
  if ((uVar3 | uVar4) == 0) {
    uVar3 = param_3 & 0x7f;
    if (param_3 != uVar3) {
      FUN_00a5189c(param_1,param_2,param_3 - uVar3);
    }
    if (uVar3 != 0) {
      puVar5 = (undefined *)((int)param_2 + (param_3 - uVar3));
      puVar7 = (undefined *)((int)param_1 + (param_3 - uVar3));
      for (; uVar3 != 0; uVar3 = uVar3 - 1) {
        *puVar7 = *puVar5;
        puVar5 = puVar5 + 1;
        puVar7 = puVar7 + 1;
      }
    }
  }
  else if (uVar3 == uVar4) {
    iVar1 = 0x10 - uVar3;
    puVar6 = param_2;
    puVar8 = param_1;
    for (iVar2 = iVar1; iVar2 != 0; iVar2 = iVar2 + -1) {
      *(undefined *)puVar8 = *(undefined *)puVar6;
      puVar6 = (undefined4 *)((int)puVar6 + 1);
      puVar8 = (undefined4 *)((int)puVar8 + 1);
    }
    __VEC_memcpy((undefined *)((int)param_1 + iVar1),(undefined *)((int)param_2 + iVar1),
                 param_3 - iVar1);
  }
  else {
    puVar6 = param_1;
    for (uVar3 = param_3 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) {
      *puVar6 = *param_2;
      param_2 = param_2 + 1;
      puVar6 = puVar6 + 1;
    }
    for (param_3 = param_3 & 3; param_3 != 0; param_3 = param_3 - 1) {
      *(undefined *)puVar6 = *(undefined *)param_2;
      param_2 = (undefined4 *)((int)param_2 + 1);
      puVar6 = (undefined4 *)((int)puVar6 + 1);
    }
  }
  return param_1;
}



// Library Function - Single Match
//  __forcdecpt_l
// 
// Library: Visual Studio 2008 Release

void __cdecl __forcdecpt_l(char *_Buf,_locale_t _Locale)

{
  byte bVar1;
  byte bVar2;
  int iVar3;
  bool bVar4;
  int local_14 [2];
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)local_14,_Locale);
  iVar3 = _tolower((int)*_Buf);
  bVar4 = iVar3 == 0x65;
  while (!bVar4) {
    _Buf = (char *)((byte *)_Buf + 1);
    iVar3 = _isdigit((uint)(byte)*_Buf);
    bVar4 = iVar3 == 0;
  }
  iVar3 = _tolower((int)*_Buf);
  if (iVar3 == 0x78) {
    _Buf = (char *)((byte *)_Buf + 2);
  }
  bVar2 = *_Buf;
  *_Buf = ***(byte ***)(local_14[0] + 0xbc);
  do {
    _Buf = (char *)((byte *)_Buf + 1);
    bVar1 = *_Buf;
    *_Buf = bVar2;
    bVar2 = bVar1;
  } while (*_Buf != 0);
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return;
}



// Library Function - Single Match
//  __cropzeros_l
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __cdecl __cropzeros_l(char *_Buf,_locale_t _Locale)

{
  char *pcVar1;
  char cVar3;
  int local_14 [2];
  int local_c;
  char local_8;
  char *pcVar2;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)local_14,_Locale);
  cVar3 = *_Buf;
  if (cVar3 != '\0') {
    do {
      if (cVar3 == ***(char ***)(local_14[0] + 0xbc)) break;
      _Buf = _Buf + 1;
      cVar3 = *_Buf;
    } while (cVar3 != '\0');
  }
  if (*_Buf != '\0') {
    do {
      _Buf = _Buf + 1;
      cVar3 = *_Buf;
      pcVar1 = _Buf;
      if ((cVar3 == '\0') || (cVar3 == 'e')) break;
    } while (cVar3 != 'E');
    do {
      pcVar2 = pcVar1;
      pcVar1 = pcVar2 + -1;
    } while (*pcVar1 == '0');
    if (*pcVar1 == ***(char ***)(local_14[0] + 0xbc)) {
      pcVar1 = pcVar2 + -2;
    }
    do {
      cVar3 = *_Buf;
      pcVar1 = pcVar1 + 1;
      _Buf = _Buf + 1;
      *pcVar1 = cVar3;
    } while (cVar3 != '\0');
  }
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return;
}



// Library Function - Single Match
//  __positive
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl __positive(double *arg)

{
  if (0.0 < *arg != (*arg == 0.0)) {
    return 1;
  }
  return 0;
}



// Library Function - Single Match
//  __fassign_l
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __cdecl __fassign_l(int flag,char *argument,char *number,_locale_t param_4)

{
  _CRT_FLOAT local_c;
  undefined4 local_8;
  
  if (flag == 0) {
    FID_conflict___atoflt_l((_CRT_FLOAT *)&flag,number,param_4);
    *(int *)argument = flag;
  }
  else {
    FID_conflict___atoflt_l(&local_c,number,param_4);
    *(float *)argument = local_c.f;
    *(undefined4 *)(argument + 4) = local_8;
  }
  return;
}



// Library Function - Single Match
//  __fassign
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __cdecl __fassign(int flag,char *argument,char *number)

{
  __fassign_l(flag,argument,number,(_locale_t)0x0);
  return;
}



// Library Function - Single Match
//  __shift
// 
// Library: Visual Studio 2008 Release

void __shift(void)

{
  char *in_EAX;
  size_t sVar1;
  int unaff_EDI;
  
  if (unaff_EDI != 0) {
    sVar1 = _strlen(in_EAX);
    _memmove(in_EAX + unaff_EDI,in_EAX,sVar1 + 1);
  }
  return;
}



// Library Function - Single Match
//  __forcdecpt
// 
// Library: Visual Studio 2008 Release

void __cdecl __forcdecpt(char *_Buf)

{
  __forcdecpt_l(_Buf,(_locale_t)0x0);
  return;
}



// Library Function - Single Match
//  __cropzeros
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __cdecl __cropzeros(char *_Buf)

{
  __cropzeros_l(_Buf,(_locale_t)0x0);
  return;
}



// Library Function - Single Match
//  __cftoe2_l
// 
// Library: Visual Studio 2008 Release

int __cftoe2_l(uint param_1,int param_2,int param_3,int *param_4,char param_5,
              localeinfo_struct *param_6)

{
  undefined *in_EAX;
  int *piVar1;
  errno_t eVar2;
  int iVar3;
  undefined *puVar4;
  undefined *puVar5;
  char *_Dst;
  int iVar6;
  int local_14 [2];
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)local_14,param_6);
  if ((in_EAX == (undefined *)0x0) || (param_1 == 0)) {
    piVar1 = __errno();
    iVar6 = 0x16;
  }
  else {
    iVar6 = param_2;
    if (param_2 < 1) {
      iVar6 = 0;
    }
    if (iVar6 + 9U < param_1) {
      if (param_5 != '\0') {
        __shift();
      }
      puVar4 = in_EAX;
      if (*param_4 == 0x2d) {
        *in_EAX = 0x2d;
        puVar4 = in_EAX + 1;
      }
      puVar5 = puVar4;
      if (0 < param_2) {
        puVar5 = puVar4 + 1;
        *puVar4 = *puVar5;
        *puVar5 = *(undefined *)**(undefined4 **)(local_14[0] + 0xbc);
      }
      _Dst = puVar5 + (uint)(param_5 == '\0') + param_2;
      if (param_1 == 0xffffffff) {
        puVar4 = (undefined *)0xffffffff;
      }
      else {
        puVar4 = in_EAX + (param_1 - (int)_Dst);
      }
      eVar2 = _strcpy_s(_Dst,(rsize_t)puVar4,"e+000");
      if (eVar2 == 0) {
        if (param_3 != 0) {
          *_Dst = 'E';
        }
        if (*(char *)param_4[3] != '0') {
          iVar6 = param_4[1] + -1;
          if (iVar6 < 0) {
            iVar6 = -iVar6;
            _Dst[1] = '-';
          }
          if (99 < iVar6) {
            iVar3 = iVar6 / 100;
            iVar6 = iVar6 % 100;
            _Dst[2] = _Dst[2] + (char)iVar3;
          }
          if (9 < iVar6) {
            iVar3 = iVar6 / 10;
            iVar6 = iVar6 % 10;
            _Dst[3] = _Dst[3] + (char)iVar3;
          }
          _Dst[4] = _Dst[4] + (char)iVar6;
        }
        if (((DAT_032ebd14 & 1) != 0) && (_Dst[2] == '0')) {
          _memmove(_Dst + 2,_Dst + 3,3);
        }
        if (local_8 != '\0') {
          *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
        }
        return 0;
      }
                    // WARNING: Subroutine does not return
      __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
    }
    piVar1 = __errno();
    iVar6 = 0x22;
  }
  *piVar1 = iVar6;
  __invalid_parameter(0,0,0,0,0);
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return iVar6;
}



// Library Function - Single Match
//  __cftoe_l
// 
// Library: Visual Studio 2008 Release

void __cftoe_l(double *param_1,undefined *param_2,int param_3,int param_4,undefined4 param_5,
              undefined4 param_6)

{
  int *piVar1;
  size_t _SizeInBytes;
  errno_t eVar2;
  _strflt local_30;
  char local_20 [24];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  __fltout2((_CRT_DOUBLE)*param_1,&local_30,local_20,0x16);
  if ((param_2 == (undefined *)0x0) || (param_3 == 0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else {
    if (param_3 == -1) {
      _SizeInBytes = 0xffffffff;
    }
    else {
      _SizeInBytes = (param_3 - (uint)(local_30.sign == 0x2d)) - (uint)(0 < param_4);
    }
    eVar2 = __fptostr(param_2 + (uint)(0 < param_4) + (uint)(local_30.sign == 0x2d),_SizeInBytes,
                      param_4 + 1,&local_30);
    if (eVar2 == 0) {
      __cftoe2_l(param_3,param_4,param_5,&local_30,0,param_6);
    }
    else {
      *param_2 = 0;
    }
  }
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  __cftoe
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl __cftoe(double *_Value,char *_Buf,size_t _SizeInBytes,int _Dec,int _Caps)

{
  errno_t eVar1;
  
  eVar1 = __cftoe_l(_Value,_Buf,_SizeInBytes,_Dec,_Caps,0);
  return eVar1;
}



// Library Function - Single Match
//  __cftoa_l
// 
// Library: Visual Studio 2008 Release

int __cftoa_l(double *param_1,undefined *param_2,uint param_3,size_t param_4,int param_5,
             localeinfo_struct *param_6)

{
  char cVar1;
  short sVar2;
  ushort uVar3;
  int *piVar4;
  size_t _SizeInBytes;
  errno_t eVar5;
  char *pcVar6;
  char *pcVar7;
  uint uVar8;
  uint uVar9;
  uint extraout_ECX;
  uint extraout_ECX_00;
  uint extraout_ECX_01;
  undefined4 extraout_EDX;
  undefined4 extraout_EDX_00;
  short sVar10;
  char *pcVar11;
  char *pcVar12;
  bool bVar13;
  int iVar14;
  int local_28 [2];
  int local_20;
  char local_1c;
  uint local_18;
  undefined4 local_14;
  uint local_10;
  uint local_c;
  int local_8;
  
  local_18 = 0x3ff;
  local_8 = 0x30;
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)local_28,param_6);
  if ((int)param_4 < 0) {
    param_4 = 0;
  }
  if ((param_2 == (undefined *)0x0) || (param_3 == 0)) {
    piVar4 = __errno();
    iVar14 = 0x16;
LAB_00a51e52:
    *piVar4 = iVar14;
    __invalid_parameter(0,0,0,0,0);
    if (local_1c != '\0') {
      *(uint *)(local_20 + 0x70) = *(uint *)(local_20 + 0x70) & 0xfffffffd;
    }
    return iVar14;
  }
  *param_2 = 0;
  if (param_3 <= param_4 + 0xb) {
    piVar4 = __errno();
    iVar14 = 0x22;
    goto LAB_00a51e52;
  }
  local_10 = *(uint *)param_1;
  if ((*(uint *)((int)param_1 + 4) >> 0x14 & 0x7ff) == 0x7ff) {
    if (param_3 == 0xffffffff) {
      _SizeInBytes = 0xffffffff;
    }
    else {
      _SizeInBytes = param_3 - 2;
    }
    eVar5 = __cftoe(param_1,param_2 + 2,_SizeInBytes,param_4,0);
    if (eVar5 != 0) {
      *param_2 = 0;
      if (local_1c == '\0') {
        return eVar5;
      }
      *(uint *)(local_20 + 0x70) = *(uint *)(local_20 + 0x70) & 0xfffffffd;
      return eVar5;
    }
    if (param_2[2] == '-') {
      *param_2 = 0x2d;
      param_2 = param_2 + 1;
    }
    *param_2 = 0x30;
    param_2[1] = ((param_5 == 0) - 1U & 0xe0) + 0x78;
    pcVar6 = _strrchr(param_2 + 2,0x65);
    if (pcVar6 != (char *)0x0) {
      *pcVar6 = ((param_5 == 0) - 1U & 0xe0) + 0x70;
      pcVar6[3] = '\0';
    }
    goto LAB_00a52176;
  }
  if ((*(uint *)((int)param_1 + 4) & 0x80000000) != 0) {
    *param_2 = 0x2d;
    param_2 = param_2 + 1;
  }
  *param_2 = 0x30;
  param_2[1] = ((param_5 == 0) - 1U & 0xe0) + 0x78;
  sVar10 = (-(ushort)(param_5 != 0) & 0xffe0) + 0x27;
  if ((*(uint *)((int)param_1 + 4) & 0x7ff00000) == 0) {
    param_2[2] = 0x30;
    if ((*(uint *)param_1 | *(uint *)((int)param_1 + 4) & 0xfffff) == 0) {
      local_18 = 0;
    }
    else {
      local_18 = 0x3fe;
    }
  }
  else {
    param_2[2] = 0x31;
  }
  pcVar12 = param_2 + 3;
  pcVar6 = param_2 + 4;
  if (param_4 == 0) {
    *pcVar12 = '\0';
  }
  else {
    *pcVar12 = ***(char ***)(local_28[0] + 0xbc);
  }
  if (((*(uint *)((int)param_1 + 4) & 0xfffff) != 0) || (local_c = 0, *(int *)param_1 != 0)) {
    local_10 = 0;
    local_c = 0xf0000;
    do {
      if ((int)param_4 < 1) break;
      sVar2 = __aullshr();
      uVar3 = sVar2 + 0x30;
      if (0x39 < uVar3) {
        uVar3 = uVar3 + sVar10;
      }
      local_8 = local_8 + -4;
      *pcVar6 = (char)uVar3;
      local_10 = local_10 >> 4 | local_c << 0x1c;
      local_c = local_c >> 4;
      pcVar6 = pcVar6 + 1;
      param_4 = param_4 - 1;
    } while (-1 < (short)local_8);
    if ((-1 < (short)local_8) && (uVar3 = __aullshr(), pcVar11 = pcVar6, 8 < uVar3)) {
      while( true ) {
        pcVar7 = pcVar11 + -1;
        if ((*pcVar7 != 'f') && (*pcVar7 != 'F')) break;
        *pcVar7 = '0';
        pcVar11 = pcVar7;
      }
      if (pcVar7 == pcVar12) {
        pcVar11[-2] = pcVar11[-2] + '\x01';
      }
      else if (*pcVar7 == '9') {
        *pcVar7 = (char)sVar10 + ':';
      }
      else {
        *pcVar7 = *pcVar7 + '\x01';
      }
    }
  }
  if (0 < (int)param_4) {
    _memset(pcVar6,0x30,param_4);
    pcVar6 = pcVar6 + param_4;
  }
  if (*pcVar12 == '\0') {
    pcVar6 = pcVar12;
  }
  *pcVar6 = ((param_5 == 0) - 1U & 0xe0) + 0x70;
  uVar8 = __aullshr();
  uVar9 = (uVar8 & 0x7ff) - local_18;
  uVar8 = (uint)((uVar8 & 0x7ff) < local_18);
  iVar14 = -uVar8;
  if (uVar8 == 0) {
    pcVar6[1] = '+';
  }
  else {
    pcVar6[1] = '-';
    bVar13 = uVar9 != 0;
    uVar9 = -uVar9;
    iVar14 = -(iVar14 + (uint)bVar13);
  }
  pcVar11 = pcVar6 + 2;
  *pcVar11 = '0';
  pcVar12 = pcVar11;
  if ((iVar14 < 0) || ((iVar14 < 1 && (uVar9 < 1000)))) {
LAB_00a52125:
    if ((-1 < iVar14) && ((0 < iVar14 || (99 < uVar9)))) goto LAB_00a52130;
  }
  else {
    cVar1 = __alldvrm(uVar9,iVar14,1000,0);
    *pcVar11 = cVar1 + '0';
    pcVar12 = pcVar6 + 3;
    iVar14 = 0;
    uVar9 = extraout_ECX;
    local_14 = extraout_EDX;
    if (pcVar12 == pcVar11) goto LAB_00a52125;
LAB_00a52130:
    cVar1 = __alldvrm(uVar9,iVar14,100,0);
    *pcVar12 = cVar1 + '0';
    pcVar12 = pcVar12 + 1;
    iVar14 = 0;
    uVar9 = extraout_ECX_00;
    local_14 = extraout_EDX_00;
  }
  if ((pcVar12 != pcVar11) || ((-1 < iVar14 && ((0 < iVar14 || (9 < uVar9)))))) {
    cVar1 = __alldvrm(uVar9,iVar14,10,0);
    *pcVar12 = cVar1 + '0';
    pcVar12 = pcVar12 + 1;
    uVar9 = extraout_ECX_01;
  }
  *pcVar12 = (char)uVar9 + '0';
  pcVar12[1] = '\0';
LAB_00a52176:
  if (local_1c != '\0') {
    *(uint *)(local_20 + 0x70) = *(uint *)(local_20 + 0x70) & 0xfffffffd;
  }
  return 0;
}



// Library Function - Single Match
//  __cftof2_l
// 
// Library: Visual Studio 2008 Release

undefined4 __thiscall
__cftof2_l(undefined *param_1_00,int param_1,size_t param_2,char param_3,localeinfo_struct *param_4)

{
  int iVar1;
  int iVar2;
  int *in_EAX;
  int *piVar3;
  undefined4 uVar4;
  int local_14 [2];
  int local_c;
  char local_8;
  
  iVar1 = in_EAX[1];
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)local_14,param_4);
  if ((param_1_00 == (undefined *)0x0) || (param_1 == 0)) {
    piVar3 = __errno();
    uVar4 = 0x16;
    *piVar3 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
  }
  else {
    if ((param_3 != '\0') && (iVar1 - 1U == param_2)) {
      iVar2 = *in_EAX;
      param_1_00[(uint)(iVar2 == 0x2d) + (iVar1 - 1U)] = 0x30;
      (param_1_00 + (uint)(iVar2 == 0x2d) + (iVar1 - 1U))[1] = 0;
    }
    if (*in_EAX == 0x2d) {
      *param_1_00 = 0x2d;
      param_1_00 = param_1_00 + 1;
    }
    if (in_EAX[1] < 1) {
      __shift();
      *param_1_00 = 0x30;
      param_1_00 = param_1_00 + 1;
    }
    else {
      param_1_00 = param_1_00 + in_EAX[1];
    }
    if (0 < (int)param_2) {
      __shift();
      *param_1_00 = *(undefined *)**(undefined4 **)(local_14[0] + 0xbc);
      iVar1 = in_EAX[1];
      if (iVar1 < 0) {
        if ((param_3 != '\0') || (SBORROW4(param_2,-iVar1) == (int)(param_2 + iVar1) < 0)) {
          param_2 = -iVar1;
        }
        __shift();
        _memset(param_1_00 + 1,0x30,param_2);
      }
    }
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
    uVar4 = 0;
  }
  return uVar4;
}



// Library Function - Single Match
//  __cftof_l
// 
// Library: Visual Studio 2008 Release

void __cftof_l(double *param_1,undefined *param_2,int param_3,int param_4,undefined4 param_5)

{
  int *piVar1;
  size_t _SizeInBytes;
  errno_t eVar2;
  _strflt local_30;
  char local_20 [24];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  __fltout2((_CRT_DOUBLE)*param_1,&local_30,local_20,0x16);
  if ((param_2 == (undefined *)0x0) || (param_3 == 0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else {
    if (param_3 == -1) {
      _SizeInBytes = 0xffffffff;
    }
    else {
      _SizeInBytes = param_3 - (uint)(local_30.sign == 0x2d);
    }
    eVar2 = __fptostr(param_2 + (local_30.sign == 0x2d),_SizeInBytes,local_30.decpt + param_4,
                      &local_30);
    if (eVar2 == 0) {
      __cftof2_l(param_3,param_4,0,param_5);
    }
    else {
      *param_2 = 0;
    }
  }
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  __cftog_l
// 
// Library: Visual Studio 2008 Release

void __cftog_l(double *param_1,undefined *param_2,int param_3,int param_4,undefined4 param_5,
              undefined4 param_6)

{
  char *pcVar1;
  int *piVar2;
  errno_t eVar3;
  size_t _SizeInBytes;
  char *pcVar4;
  _strflt local_34;
  int local_24;
  char local_20 [24];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  __fltout2((_CRT_DOUBLE)*param_1,&local_34,local_20,0x16);
  if ((param_2 == (undefined *)0x0) || (param_3 == 0)) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else {
    local_24 = local_34.decpt + -1;
    if (param_3 == -1) {
      _SizeInBytes = 0xffffffff;
    }
    else {
      _SizeInBytes = param_3 - (uint)(local_34.sign == 0x2d);
    }
    eVar3 = __fptostr(param_2 + (local_34.sign == 0x2d),_SizeInBytes,param_4,&local_34);
    if (eVar3 == 0) {
      local_34.decpt = local_34.decpt + -1;
      if ((local_34.decpt < -4) || (param_4 <= local_34.decpt)) {
        __cftoe2_l(param_3,param_4,param_5,&local_34,1,param_6);
      }
      else {
        pcVar1 = param_2 + (local_34.sign == 0x2d);
        if (local_24 < local_34.decpt) {
          do {
            pcVar4 = pcVar1;
            pcVar1 = pcVar4 + 1;
          } while (*pcVar4 != '\0');
          pcVar4[-1] = '\0';
        }
        __cftof2_l(param_3,param_4,1,param_6);
      }
    }
    else {
      *param_2 = 0;
    }
  }
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  __cfltcvt_l
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl
__cfltcvt_l(double *arg,char *buffer,size_t sizeInBytes,int format,int precision,int caps,
           _locale_t plocinfo)

{
  errno_t eVar1;
  
  if ((format == 0x65) || (format == 0x45)) {
    eVar1 = __cftoe_l(arg,buffer,sizeInBytes,precision,caps,plocinfo);
  }
  else {
    if (format == 0x66) {
      eVar1 = __cftof_l(arg,buffer,sizeInBytes,precision,plocinfo);
      return eVar1;
    }
    if ((format == 0x61) || (format == 0x41)) {
      eVar1 = __cftoa_l(arg,buffer,sizeInBytes,precision,caps,plocinfo);
    }
    else {
      eVar1 = __cftog_l(arg,buffer,sizeInBytes,precision,caps,plocinfo);
    }
  }
  return eVar1;
}



// Library Function - Single Match
//  __cfltcvt
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release,
// Visual Studio 2012 Release

errno_t __cdecl
__cfltcvt(double *arg,char *buffer,size_t sizeInBytes,int format,int precision,int caps)

{
  errno_t eVar1;
  
  eVar1 = __cfltcvt_l(arg,buffer,sizeInBytes,format,precision,caps,(_locale_t)0x0);
  return eVar1;
}



// Library Function - Single Match
//  __initp_misc_cfltcvt_tab
// 
// Library: Visual Studio 2008 Release

void __initp_misc_cfltcvt_tab(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  uint uVar3;
  
  uVar3 = 0;
  do {
    puVar1 = (undefined4 *)((int)&PTR_LAB_03240760 + uVar3);
    uVar2 = __encode_pointer(*puVar1);
    uVar3 = uVar3 + 4;
    *puVar1 = uVar2;
  } while (uVar3 < 0x28);
  return;
}



// Library Function - Single Match
//  __setdefaultprecision
// 
// Library: Visual Studio 2008 Release

void __setdefaultprecision(void)

{
  errno_t eVar1;
  
  eVar1 = __controlfp_s((uint *)0x0,0x10000,0x30000);
  if (eVar1 != 0) {
                    // WARNING: Subroutine does not return
    __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
  }
  return;
}



// WARNING: Removing unreachable block (ram,0x00a52562)
// Library Function - Single Match
//  __ms_p5_test_fdiv
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

undefined4 __ms_p5_test_fdiv(void)

{
  return 0;
}



// Library Function - Single Match
//  __ms_p5_mp_test_fdiv
// 
// Library: Visual Studio 2008 Release

void __ms_p5_mp_test_fdiv(void)

{
  HMODULE hModule;
  FARPROC pFVar1;
  
  hModule = GetModuleHandleA("KERNEL32");
  if (hModule != (HMODULE)0x0) {
    pFVar1 = GetProcAddress(hModule,"IsProcessorFeaturePresent");
    if (pFVar1 != (FARPROC)0x0) {
      (*pFVar1)(0);
      return;
    }
  }
  __ms_p5_test_fdiv();
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  __openfile
// 
// Library: Visual Studio 2008 Release

FILE * __cdecl __openfile(char *_Filename,char *_Mode,int _ShFlag,FILE *_File)

{
  char cVar1;
  bool bVar2;
  uchar uVar3;
  int *piVar4;
  int iVar5;
  errno_t eVar6;
  char *pcVar7;
  uchar *puVar8;
  uchar *puVar9;
  int local_14;
  int local_10;
  int local_c;
  uint local_8;
  
  local_8 = DAT_032ebc64;
  local_10 = 0;
  local_c = 0;
  local_14 = 0;
  for (pcVar7 = _Mode; *pcVar7 == ' '; pcVar7 = pcVar7 + 1) {
  }
  cVar1 = *pcVar7;
  if (cVar1 == 'a') {
    _Mode = (char *)0x109;
LAB_00a52602:
    local_8 = DAT_032ebc64 | 2;
  }
  else {
    if (cVar1 != 'r') {
      if (cVar1 != 'w') {
        piVar4 = __errno();
        *piVar4 = 0x16;
        __invalid_parameter(0,0,0,0,0);
        return (FILE *)0x0;
      }
      _Mode = (char *)0x301;
      goto LAB_00a52602;
    }
    local_8 = DAT_032ebc64 | 1;
    _Mode = (char *)0x0;
  }
  bVar2 = true;
  puVar8 = (uchar *)(pcVar7 + 1);
  uVar3 = *puVar8;
  if (uVar3 != '\0') {
    do {
      if (!bVar2) break;
      if ((char)uVar3 < 'T') {
        if (uVar3 == 'S') {
          if (local_c != 0) goto LAB_00a5273d;
          _Mode = (char *)((uint)_Mode | 0x20);
          local_c = 1;
        }
        else if (uVar3 != ' ') {
          if (uVar3 == '+') {
            if (((uint)_Mode & 2) != 0) goto LAB_00a5273d;
            _Mode = (char *)((uint)_Mode & 0xfffffffe | 2);
            local_8 = local_8 & 0xfffffffc | 0x80;
          }
          else if (uVar3 == ',') {
            local_14 = 1;
LAB_00a5273d:
            bVar2 = false;
          }
          else if (uVar3 == 'D') {
            if (((uint)_Mode & 0x40) != 0) goto LAB_00a5273d;
            _Mode = (char *)((uint)_Mode | 0x40);
          }
          else if (uVar3 == 'N') {
            _Mode = (char *)((uint)_Mode | 0x80);
          }
          else {
            if (uVar3 != 'R') goto LAB_00a527fc;
            if (local_c != 0) goto LAB_00a5273d;
            _Mode = (char *)((uint)_Mode | 0x10);
            local_c = 1;
          }
        }
      }
      else if (uVar3 == 'T') {
        if (((uint)_Mode & 0x1000) != 0) goto LAB_00a5273d;
        _Mode = (char *)((uint)_Mode | 0x1000);
      }
      else if (uVar3 == 'b') {
        if (((uint)_Mode & 0xc000) != 0) goto LAB_00a5273d;
        _Mode = (char *)((uint)_Mode | 0x8000);
      }
      else if (uVar3 == 'c') {
        if (local_10 != 0) goto LAB_00a5273d;
        local_8 = local_8 | 0x4000;
        local_10 = 1;
      }
      else if (uVar3 == 'n') {
        if (local_10 != 0) goto LAB_00a5273d;
        local_8 = local_8 & 0xffffbfff;
        local_10 = 1;
      }
      else {
        if (uVar3 != 't') goto LAB_00a527fc;
        if (((uint)_Mode & 0xc000) != 0) goto LAB_00a5273d;
        _Mode = (char *)((uint)_Mode | 0x4000);
      }
      puVar8 = puVar8 + 1;
      uVar3 = *puVar8;
    } while (uVar3 != '\0');
    if (local_14 != 0) {
      for (; *puVar8 == ' '; puVar8 = puVar8 + 1) {
      }
      iVar5 = __mbsnbcmp("ccs",puVar8,3);
      if (iVar5 != 0) goto LAB_00a527fc;
      for (puVar8 = puVar8 + 3; *puVar8 == ' '; puVar8 = puVar8 + 1) {
      }
      if (*puVar8 != '=') goto LAB_00a527fc;
      do {
        puVar9 = puVar8;
        puVar8 = puVar9 + 1;
      } while (*puVar8 == ' ');
      iVar5 = __mbsnbicmp(puVar8,(uchar *)"UTF-8",5);
      if (iVar5 == 0) {
        puVar8 = puVar9 + 6;
        _Mode = (char *)((uint)_Mode | 0x40000);
      }
      else {
        iVar5 = __mbsnbicmp(puVar8,(uchar *)"UTF-16LE",8);
        if (iVar5 == 0) {
          puVar8 = puVar9 + 9;
          _Mode = (char *)((uint)_Mode | 0x20000);
        }
        else {
          iVar5 = __mbsnbicmp(puVar8,(uchar *)"UNICODE",7);
          if (iVar5 != 0) goto LAB_00a527fc;
          puVar8 = puVar9 + 8;
          _Mode = (char *)((uint)_Mode | 0x10000);
        }
      }
    }
  }
  for (; *puVar8 == ' '; puVar8 = puVar8 + 1) {
  }
  if (*puVar8 == '\0') {
    eVar6 = __sopen_s(&local_14,_Filename,(int)_Mode,_ShFlag,0x180);
    if (eVar6 != 0) {
      return (FILE *)0x0;
    }
    _DAT_032eb274 = _DAT_032eb274 + 1;
    _File->_flag = local_8;
    _File->_cnt = 0;
    _File->_ptr = (char *)0x0;
    _File->_base = (char *)0x0;
    _File->_tmpfname = (char *)0x0;
    _File->_file = local_14;
    return _File;
  }
LAB_00a527fc:
  piVar4 = __errno();
  *piVar4 = 0x16;
  __invalid_parameter(0,0,0,0,0);
  return (FILE *)0x0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __getstream
// 
// Library: Visual Studio 2008 Release

FILE * __cdecl __getstream(void)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  void *pvVar4;
  int iVar5;
  FILE *pFVar6;
  FILE *_File;
  
  pFVar6 = (FILE *)0x0;
  __lock(1);
  iVar5 = 0;
  do {
    _File = pFVar6;
    if (DAT_032f2840 <= iVar5) {
LAB_00a5295b:
      if (_File != (FILE *)0x0) {
        _File->_flag = _File->_flag & 0x8000;
        _File->_cnt = 0;
        _File->_base = (char *)0x0;
        _File->_ptr = (char *)0x0;
        _File->_tmpfname = (char *)0x0;
        _File->_file = -1;
      }
      FUN_00a5298c();
      return _File;
    }
    piVar1 = (int *)(DAT_032f1820 + iVar5 * 4);
    if (*piVar1 == 0) {
      iVar5 = iVar5 * 4;
      pvVar4 = __malloc_crt(0x38);
      *(void **)(iVar5 + DAT_032f1820) = pvVar4;
      if (*(int *)(DAT_032f1820 + iVar5) != 0) {
        iVar3 = ___crtInitCritSecAndSpinCount(*(int *)(DAT_032f1820 + iVar5) + 0x20,4000);
        if (iVar3 == 0) {
          _free(*(void **)(iVar5 + DAT_032f1820));
          *(undefined4 *)(iVar5 + DAT_032f1820) = 0;
        }
        else {
          EnterCriticalSection((LPCRITICAL_SECTION)(*(int *)(iVar5 + DAT_032f1820) + 0x20));
          _File = *(FILE **)(iVar5 + DAT_032f1820);
          _File->_flag = 0;
        }
      }
      goto LAB_00a5295b;
    }
    uVar2 = *(uint *)(*piVar1 + 0xc);
    if (((uVar2 & 0x83) == 0) && ((uVar2 & 0x8000) == 0)) {
      if ((iVar5 - 3U < 0x11) && (iVar3 = __mtinitlocknum(iVar5 + 0x10), iVar3 == 0))
      goto LAB_00a5295b;
      __lock_file2(iVar5,*(void **)(DAT_032f1820 + iVar5 * 4));
      _File = *(FILE **)(DAT_032f1820 + iVar5 * 4);
      if ((*(byte *)&_File->_flag & 0x83) == 0) goto LAB_00a5295b;
      __unlock_file2(iVar5,_File);
    }
    iVar5 = iVar5 + 1;
  } while( true );
}



void FUN_00a5298c(void)

{
  FUN_00a4d824(1);
  return;
}



// Library Function - Single Match
//  __local_unwind4
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void __local_unwind4(uint *param_1,int param_2,uint param_3)

{
  undefined4 *puVar1;
  uint uVar2;
  void *pvStack_28;
  undefined *puStack_24;
  uint local_20;
  uint uStack_1c;
  int iStack_18;
  uint *puStack_14;
  
  puStack_14 = param_1;
  iStack_18 = param_2;
  uStack_1c = param_3;
  puStack_24 = &LAB_00a52a28;
  pvStack_28 = ExceptionList;
  local_20 = DAT_0323f878 ^ (uint)&pvStack_28;
  ExceptionList = &pvStack_28;
  while( true ) {
    uVar2 = *(uint *)(param_2 + 0xc);
    if ((uVar2 == 0xfffffffe) || ((param_3 != 0xfffffffe && (uVar2 <= param_3)))) break;
    puVar1 = (undefined4 *)((*(uint *)(param_2 + 8) ^ *param_1) + 0x10 + uVar2 * 0xc);
    *(undefined4 *)(param_2 + 0xc) = *puVar1;
    if (puVar1[1] == 0) {
      __NLG_Notify(0x101);
      FUN_00a61890();
    }
  }
  ExceptionList = pvStack_28;
  return;
}



void FUN_00a52a6e(int param_1)

{
  __local_unwind4(*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x18),
                  *(undefined4 *)(param_1 + 0x1c));
  return;
}



// Library Function - Single Match
//  @_EH4_CallFilterFunc@8
// 
// Library: Visual Studio 2008 Release

void __fastcall __EH4_CallFilterFunc_8(code *param_1)

{
  (*param_1)();
  return;
}



// Library Function - Single Match
//  @_EH4_TransferToHandler@8
// 
// Library: Visual Studio 2008 Release

void __fastcall __EH4_TransferToHandler_8(code *UNRECOVERED_JUMPTABLE)

{
  __NLG_Notify(1);
                    // WARNING: Could not recover jumptable at 0x00a52ab8. Too many branches
                    // WARNING: Treating indirect jump as call
  (*UNRECOVERED_JUMPTABLE)();
  return;
}



// Library Function - Single Match
//  @_EH4_GlobalUnwind@4
// 
// Library: Visual Studio 2008 Release

void __fastcall __EH4_GlobalUnwind_4(PVOID param_1)

{
  RtlUnwind(param_1,(PVOID)0xa52acf,(PEXCEPTION_RECORD)0x0,(PVOID)0x0);
  return;
}



// Library Function - Single Match
//  @_EH4_LocalUnwind@16
// 
// Library: Visual Studio 2008 Release

void __fastcall
__EH4_LocalUnwind_16
          (undefined4 param_1_00,undefined4 param_2_00,undefined4 param_1,undefined4 param_2)

{
  __local_unwind4(param_2,param_1_00,param_2_00);
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  __wopenfile
// 
// Library: Visual Studio 2008 Release

FILE * __cdecl __wopenfile(wchar_t *_Filename,wchar_t *_Mode,int _ShFlag,FILE *_File)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  wchar_t wVar5;
  int *piVar6;
  int iVar7;
  errno_t eVar8;
  uint _OpenFlag;
  wchar_t *pwVar9;
  wchar_t *pwVar10;
  uint local_8;
  
  bVar3 = false;
  bVar2 = false;
  bVar4 = false;
  for (pwVar10 = _Mode; *pwVar10 == L' '; pwVar10 = pwVar10 + 1) {
  }
  wVar5 = *pwVar10;
  if (wVar5 == L'a') {
    _OpenFlag = 0x109;
LAB_00a52b5b:
    local_8 = DAT_032ebc64 | 2;
  }
  else {
    if (wVar5 != L'r') {
      if (wVar5 != L'w') goto LAB_00a52b28;
      _OpenFlag = 0x301;
      goto LAB_00a52b5b;
    }
    _OpenFlag = 0;
    local_8 = DAT_032ebc64 | 1;
  }
  bVar1 = true;
  pwVar10 = pwVar10 + 1;
  wVar5 = *pwVar10;
  if (wVar5 != L'\0') {
    do {
      if (!bVar1) break;
      if ((ushort)wVar5 < 0x54) {
        if (wVar5 == L'S') {
          if (bVar2) goto LAB_00a52c89;
          bVar2 = true;
          _OpenFlag = _OpenFlag | 0x20;
        }
        else if (wVar5 != L' ') {
          if (wVar5 == L'+') {
            if ((_OpenFlag & 2) != 0) goto LAB_00a52c89;
            _OpenFlag = _OpenFlag & 0xfffffffe | 2;
            local_8 = local_8 & 0xfffffffc | 0x80;
          }
          else if (wVar5 == L',') {
            bVar4 = true;
LAB_00a52c89:
            bVar1 = false;
          }
          else if (wVar5 == L'D') {
            if ((_OpenFlag & 0x40) != 0) goto LAB_00a52c89;
            _OpenFlag = _OpenFlag | 0x40;
          }
          else if (wVar5 == L'N') {
            _OpenFlag = _OpenFlag | 0x80;
          }
          else {
            if (wVar5 != L'R') goto LAB_00a52b28;
            if (bVar2) goto LAB_00a52c89;
            bVar2 = true;
            _OpenFlag = _OpenFlag | 0x10;
          }
        }
      }
      else if (wVar5 == L'T') {
        if ((_OpenFlag & 0x1000) != 0) goto LAB_00a52c89;
        _OpenFlag = _OpenFlag | 0x1000;
      }
      else if (wVar5 == L'b') {
        if ((_OpenFlag & 0xc000) != 0) goto LAB_00a52c89;
        _OpenFlag = _OpenFlag | 0x8000;
      }
      else if (wVar5 == L'c') {
        if (bVar3) goto LAB_00a52c89;
        local_8 = local_8 | 0x4000;
        bVar3 = true;
      }
      else if (wVar5 == L'n') {
        if (bVar3) goto LAB_00a52c89;
        local_8 = local_8 & 0xffffbfff;
        bVar3 = true;
      }
      else {
        if (wVar5 != L't') goto LAB_00a52b28;
        if ((_OpenFlag & 0xc000) != 0) goto LAB_00a52c89;
        _OpenFlag = _OpenFlag | 0x4000;
      }
      pwVar10 = pwVar10 + 1;
      wVar5 = *pwVar10;
    } while (wVar5 != L'\0');
    if (bVar4) {
      for (; *pwVar10 == L' '; pwVar10 = pwVar10 + 1) {
      }
      iVar7 = _wcsncmp(L"ccs",pwVar10,3);
      if (iVar7 != 0) goto LAB_00a52b28;
      for (pwVar10 = pwVar10 + 3; *pwVar10 == L' '; pwVar10 = pwVar10 + 1) {
      }
      if (*pwVar10 != L'=') goto LAB_00a52b28;
      do {
        pwVar9 = pwVar10;
        pwVar10 = pwVar9 + 1;
      } while (*pwVar10 == L' ');
      iVar7 = __wcsnicmp(pwVar10,L"UTF-8",5);
      if (iVar7 == 0) {
        pwVar10 = pwVar9 + 6;
        _OpenFlag = _OpenFlag | 0x40000;
      }
      else {
        iVar7 = __wcsnicmp(pwVar10,L"UTF-16LE",8);
        if (iVar7 == 0) {
          pwVar10 = pwVar9 + 9;
          _OpenFlag = _OpenFlag | 0x20000;
        }
        else {
          iVar7 = __wcsnicmp(pwVar10,L"UNICODE",7);
          if (iVar7 != 0) goto LAB_00a52b28;
          pwVar10 = pwVar9 + 8;
          _OpenFlag = _OpenFlag | 0x10000;
        }
      }
    }
  }
  for (; *pwVar10 == L' '; pwVar10 = pwVar10 + 1) {
  }
  if (*pwVar10 == L'\0') {
    eVar8 = __wsopen_s((int *)&_Mode,_Filename,_OpenFlag,_ShFlag,0x180);
    if (eVar8 != 0) {
      return (FILE *)0x0;
    }
    _DAT_032eb274 = _DAT_032eb274 + 1;
    _File->_flag = local_8;
    _File->_cnt = 0;
    _File->_ptr = (char *)0x0;
    _File->_base = (char *)0x0;
    _File->_tmpfname = (char *)0x0;
    _File->_file = (int)_Mode;
    return _File;
  }
LAB_00a52b28:
  piVar6 = __errno();
  *piVar6 = 0x16;
  __invalid_parameter(0,0,0,0,0);
  return (FILE *)0x0;
}



// Library Function - Single Match
//  ___check_float_string
// 
// Library: Visual Studio 2008 Release

undefined4 ___check_float_string(size_t param_1,void *param_2,undefined4 *param_3)

{
  size_t _Count;
  void *pvVar1;
  size_t *unaff_ESI;
  void **unaff_EDI;
  
  _Count = *unaff_ESI;
  if (param_1 == _Count) {
    if (*unaff_EDI == param_2) {
      pvVar1 = __calloc_crt(_Count,2);
      *unaff_EDI = pvVar1;
      if (pvVar1 == (void *)0x0) {
        return 0;
      }
      *param_3 = 1;
      _memcpy(*unaff_EDI,param_2,*unaff_ESI);
    }
    else {
      pvVar1 = __recalloc_crt(*unaff_EDI,_Count,2);
      if (pvVar1 == (void *)0x0) {
        return 0;
      }
      *unaff_EDI = pvVar1;
    }
    *unaff_ESI = *unaff_ESI << 1;
  }
  return 1;
}



// Library Function - Single Match
//  __whiteout
// 
// Library: Visual Studio 2008 Release

uint __whiteout(void)

{
  uint uVar1;
  int iVar2;
  int *unaff_ESI;
  
  do {
    *unaff_ESI = *unaff_ESI + 1;
    uVar1 = __inc();
    if (uVar1 == 0xffffffff) {
      return 0xffffffff;
    }
    iVar2 = _isspace(uVar1 & 0xff);
  } while (iVar2 != 0);
  return uVar1;
}



// Library Function - Single Match
//  __input_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __input_l(FILE *_File,uchar *param_2,_locale_t _Locale,va_list _ArgList)

{
  byte bVar1;
  byte bVar2;
  int *piVar3;
  uint uVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  code *pcVar8;
  int iVar9;
  undefined *puVar10;
  byte bVar11;
  uint uVar12;
  char cVar13;
  byte *pbVar14;
  longlong *plVar15;
  byte *pbVar16;
  bool bVar17;
  longlong lVar18;
  FILE *pFVar19;
  longlong **local_200;
  localeinfo_struct local_1fc;
  int local_1f4;
  char local_1f0;
  undefined4 local_1ec;
  longlong **local_1e8;
  byte local_1e4;
  undefined local_1e3;
  undefined4 local_1e0;
  int local_1dc;
  byte local_1d5;
  int local_1d4;
  undefined8 local_1d0;
  int local_1c8;
  longlong *local_1c4;
  longlong *local_1c0;
  byte *local_1bc;
  int local_1b8;
  char local_1b1;
  undefined *local_1b0;
  int local_1ac;
  uint local_1a8;
  char local_1a4;
  byte local_1a3;
  char local_1a2;
  char local_1a1;
  FILE *local_1a0;
  char local_19a;
  char local_199;
  int local_198;
  char local_191;
  longlong *local_190;
  uint local_18c;
  undefined local_188 [352];
  byte local_28 [32];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_1e8 = (longlong **)_ArgList;
  local_1b0 = local_188;
  local_1a0 = _File;
  local_1e0 = 0x15e;
  local_1d4 = 0;
  local_1ec = 0;
  local_18c = 0;
  if ((param_2 == (uchar *)0x0) || (_File == (FILE *)0x0)) {
    piVar3 = __errno();
    *piVar3 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    goto LAB_00a53dcf;
  }
  if ((*(byte *)&_File->_flag & 0x40) == 0) {
    uVar4 = __fileno(_File);
    if ((uVar4 == 0xffffffff) || (uVar4 == 0xfffffffe)) {
      puVar10 = &DAT_03240190;
    }
    else {
      puVar10 = (undefined *)((uVar4 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar4 >> 5]);
    }
    if ((puVar10[0x24] & 0x7f) == 0) {
      if ((uVar4 == 0xffffffff) || (uVar4 == 0xfffffffe)) {
        puVar10 = &DAT_03240190;
      }
      else {
        puVar10 = (undefined *)((uVar4 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar4 >> 5]);
      }
      if ((puVar10[0x24] & 0x80) == 0) goto LAB_00a52f1f;
    }
    piVar3 = __errno();
    *piVar3 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    goto LAB_00a53dcf;
  }
LAB_00a52f1f:
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_1fc,_Locale);
  bVar1 = *param_2;
  local_1a1 = '\0';
  local_190 = (longlong *)0x0;
  local_1c8 = 0;
  if (bVar1 != 0) {
LAB_00a52f4a:
    pFVar19 = local_1a0;
    iVar9 = _isspace((uint)bVar1);
    if (iVar9 != 0) {
      local_190 = (longlong *)((int)local_190 + -1);
      uVar5 = __whiteout(pFVar19,pFVar19);
      __un_inc(uVar5);
      do {
        param_2 = param_2 + 1;
        iVar9 = _isspace((uint)*param_2);
      } while (iVar9 != 0);
      goto LAB_00a53d37;
    }
    if (*param_2 == 0x25) {
      if (param_2[1] == 0x25) {
        if (param_2[1] == 0x25) {
          param_2 = param_2 + 1;
        }
        goto LAB_00a53cc9;
      }
      local_1c4 = (longlong *)0x0;
      local_1d5 = 0;
      local_1ac = 0;
      local_1b8 = 0;
      local_198 = 0;
      local_1a3 = 0;
      local_1a4 = '\0';
      local_19a = '\0';
      local_1b1 = '\0';
      local_1a2 = '\0';
      local_191 = '\0';
      local_199 = '\x01';
      local_1dc = 0;
      do {
        pbVar14 = param_2 + 1;
        uVar4 = (uint)*pbVar14;
        iVar9 = _isdigit(uVar4);
        pbVar16 = pbVar14;
        if (iVar9 == 0) {
          if (uVar4 < 0x4f) {
            if (uVar4 != 0x4e) {
              if (uVar4 == 0x2a) {
                local_19a = local_19a + '\x01';
              }
              else if (uVar4 != 0x46) {
                if (uVar4 == 0x49) {
                  bVar1 = param_2[2];
                  if ((bVar1 == 0x36) && (pbVar16 = param_2 + 3, *pbVar16 == 0x34))
                  goto LAB_00a5306b;
                  if ((((((bVar1 != 0x33) || (pbVar16 = param_2 + 3, *pbVar16 != 0x32)) &&
                        (pbVar16 = pbVar14, bVar1 != 100)) && ((bVar1 != 0x69 && (bVar1 != 0x6f))))
                      && (bVar1 != 0x78)) && (bVar1 != 0x58)) goto LAB_00a530c4;
                }
                else if (uVar4 == 0x4c) {
                  local_199 = local_199 + '\x01';
                }
                else {
LAB_00a530c4:
                  local_1b1 = local_1b1 + '\x01';
                  pbVar16 = pbVar14;
                }
              }
            }
          }
          else if (uVar4 == 0x68) {
            local_199 = local_199 + -1;
            local_191 = local_191 + -1;
          }
          else {
            if (uVar4 == 0x6c) {
              pbVar16 = param_2 + 2;
              if (*pbVar16 == 0x6c) {
LAB_00a5306b:
                local_1dc = local_1dc + 1;
                local_1d0 = 0;
                goto LAB_00a530ee;
              }
              local_199 = local_199 + '\x01';
            }
            else if (uVar4 != 0x77) goto LAB_00a530c4;
            local_191 = local_191 + '\x01';
            pbVar16 = pbVar14;
          }
        }
        else {
          local_1b8 = local_1b8 + 1;
          local_198 = local_198 * 10 + -0x30 + uVar4;
        }
LAB_00a530ee:
        param_2 = pbVar16;
      } while (local_1b1 == '\0');
      if (local_19a == '\0') {
        local_1c0 = *local_1e8;
        local_200 = local_1e8;
        local_1e8 = local_1e8 + 1;
      }
      else {
        local_1c0 = (longlong *)0x0;
      }
      cVar13 = '\0';
      if ((local_191 == '\0') && ((*pbVar16 == 0x53 || (local_191 = -1, *pbVar16 == 0x43)))) {
        local_191 = '\x01';
      }
      local_1a8 = *pbVar16 | 0x20;
      local_1bc = pbVar16;
      if (local_1a8 != 0x6e) {
        if ((local_1a8 == 99) || (local_1a8 == 0x7b)) {
          local_190 = (longlong *)((int)local_190 + 1);
          local_18c = __inc();
        }
        else {
          local_18c = __whiteout(local_1a0);
        }
        if (local_18c == 0xffffffff) goto LAB_00a53d6d;
      }
      pFVar19 = local_1a0;
      if ((local_1b8 != 0) && (local_198 == 0)) goto LAB_00a53d4f;
      if ((int)local_1a8 < 0x70) {
        if (local_1a8 == 0x6f) {
LAB_00a539d5:
          if (local_18c == 0x2d) {
            local_1a4 = '\x01';
          }
          else if (local_18c != 0x2b) goto LAB_00a53a17;
          local_198 = local_198 + -1;
          if ((local_198 == 0) && (local_1b8 != 0)) {
            cVar13 = '\x01';
          }
          else {
            local_190 = (longlong *)((int)local_190 + 1);
            local_18c = __inc();
          }
          goto LAB_00a53a17;
        }
        if (local_1a8 == 99) {
          if (local_1b8 == 0) {
            local_198 = local_198 + 1;
            local_1b8 = 1;
          }
LAB_00a535fb:
          if ('\0' < local_191) {
            local_1a2 = '\x01';
          }
LAB_00a5360b:
          pFVar19 = local_1a0;
          plVar15 = local_1c0;
          local_190 = (longlong *)((int)local_190 + -1);
          local_1c4 = local_1c0;
          __un_inc(local_18c,local_1a0);
          do {
            if ((local_1b8 != 0) &&
               (iVar9 = local_198 + -1, bVar17 = local_198 == 0, local_198 = iVar9, bVar17))
            goto LAB_00a5397b;
            local_190 = (longlong *)((int)local_190 + 1);
            local_18c = __inc();
            if (local_18c == 0xffffffff) goto LAB_00a5396c;
            bVar1 = (byte)local_18c;
            if (local_1a8 != 99) {
              if (local_1a8 == 0x73) {
                if ((8 < (int)local_18c) && ((int)local_18c < 0xe)) goto LAB_00a5396c;
                if (local_18c != 0x20) goto LAB_00a536bb;
              }
              if ((local_1a8 != 0x7b) ||
                 (((int)(char)(local_28[(int)local_18c >> 3] ^ local_1a3) & 1 << (bVar1 & 7)) == 0))
              goto LAB_00a5396c;
            }
LAB_00a536bb:
            if (local_19a == '\0') {
              if (local_1a2 == '\0') {
                *(byte *)plVar15 = bVar1;
                plVar15 = (longlong *)((int)plVar15 + 1);
                local_1c0 = plVar15;
              }
              else {
                local_1e4 = bVar1;
                iVar9 = _isleadbyte(local_18c & 0xff);
                if (iVar9 != 0) {
                  local_190 = (longlong *)((int)local_190 + 1);
                  local_1e3 = __inc();
                }
                local_1ec = 0x3f;
                __mbtowc_l((wchar_t *)&local_1ec,(char *)&local_1e4,
                           (size_t)(local_1fc.locinfo)->locale_name[3],&local_1fc);
                *(undefined2 *)plVar15 = (undefined2)local_1ec;
                plVar15 = (longlong *)((int)plVar15 + 2);
                local_1c0 = plVar15;
              }
            }
            else {
              local_1c4 = (longlong *)((int)local_1c4 + 1);
            }
          } while( true );
        }
        if (local_1a8 == 100) goto LAB_00a539d5;
        if ((int)local_1a8 < 0x65) {
LAB_00a53768:
          if (*local_1bc != local_18c) goto LAB_00a53d4f;
          local_1a1 = local_1a1 + -1;
          if (local_19a == '\0') {
            local_1e8 = local_200;
          }
          goto LAB_00a53ca6;
        }
        if (0x67 < (int)local_1a8) {
          if (local_1a8 == 0x69) {
            local_1a8 = 100;
            goto LAB_00a5321f;
          }
          if (local_1a8 != 0x6e) goto LAB_00a53768;
          plVar15 = local_190;
          lVar18 = local_1d0;
          if (local_19a != '\0') goto LAB_00a53ca6;
          goto LAB_00a53c7a;
        }
        iVar9 = 0;
        if (local_18c == 0x2d) {
          *local_1b0 = 0x2d;
          iVar9 = 1;
LAB_00a53258:
          local_198 = local_198 + -1;
          local_190 = (longlong *)((int)local_190 + 1);
          local_18c = __inc();
        }
        else if (local_18c == 0x2b) goto LAB_00a53258;
        if (local_1b8 == 0) {
          local_198 = -1;
        }
        while( true ) {
          iVar6 = _isdigit(local_18c & 0xff);
          if ((iVar6 == 0) ||
             (iVar6 = local_198 + -1, bVar17 = local_198 == 0, local_198 = iVar6, bVar17)) break;
          local_1ac = local_1ac + 1;
          local_1b0[iVar9] = (byte)local_18c;
          iVar9 = iVar9 + 1;
          iVar6 = ___check_float_string(iVar9,local_188,&local_1d4);
          if (iVar6 == 0) goto LAB_00a53d6d;
          local_190 = (longlong *)((int)local_190 + 1);
          local_18c = __inc();
        }
        local_1a3 = **(byte **)local_1fc.locinfo[1].lc_codepage;
        if ((local_1a3 == (byte)local_18c) &&
           (iVar6 = local_198 + -1, bVar17 = local_198 != 0, local_198 = iVar6, bVar17)) {
          local_190 = (longlong *)((int)local_190 + 1);
          local_18c = __inc();
          local_1b0[iVar9] = local_1a3;
          iVar9 = iVar9 + 1;
          iVar6 = ___check_float_string(iVar9,local_188,&local_1d4);
          if (iVar6 == 0) goto LAB_00a53d6d;
          while( true ) {
            iVar6 = _isdigit(local_18c & 0xff);
            if ((iVar6 == 0) ||
               (iVar6 = local_198 + -1, bVar17 = local_198 == 0, local_198 = iVar6, bVar17)) break;
            local_1ac = local_1ac + 1;
            local_1b0[iVar9] = (byte)local_18c;
            iVar9 = iVar9 + 1;
            iVar6 = ___check_float_string(iVar9,local_188,&local_1d4);
            if (iVar6 == 0) goto LAB_00a53d6d;
            local_190 = (longlong *)((int)local_190 + 1);
            local_18c = __inc();
          }
        }
        iVar6 = iVar9;
        if ((local_1ac != 0) &&
           (((local_18c == 0x65 || (local_18c == 0x45)) &&
            (iVar7 = local_198 + -1, bVar17 = local_198 != 0, local_198 = iVar7, bVar17)))) {
          local_1b0[iVar9] = 0x65;
          iVar6 = iVar9 + 1;
          iVar7 = ___check_float_string(iVar6,local_188,&local_1d4);
          if (iVar7 == 0) goto LAB_00a53d6d;
          local_190 = (longlong *)((int)local_190 + 1);
          local_18c = __inc();
          if (local_18c == 0x2d) {
            local_1b0[iVar6] = 0x2d;
            iVar6 = iVar9 + 2;
            iVar9 = ___check_float_string(iVar6,local_188,&local_1d4);
            if (iVar9 == 0) goto LAB_00a53d6d;
LAB_00a534c9:
            if (local_198 == 0) {
              local_198 = 0;
            }
            else {
              local_190 = (longlong *)((int)local_190 + 1);
              local_198 = local_198 + -1;
              local_18c = __inc();
            }
          }
          else if (local_18c == 0x2b) goto LAB_00a534c9;
          while( true ) {
            iVar9 = _isdigit(local_18c & 0xff);
            if ((iVar9 == 0) ||
               (iVar9 = local_198 + -1, bVar17 = local_198 == 0, local_198 = iVar9, bVar17)) break;
            local_1ac = local_1ac + 1;
            local_1b0[iVar6] = (byte)local_18c;
            iVar6 = iVar6 + 1;
            iVar9 = ___check_float_string(iVar6,local_188,&local_1d4);
            if (iVar9 == 0) goto LAB_00a53d6d;
            local_190 = (longlong *)((int)local_190 + 1);
            local_18c = __inc();
          }
        }
        local_190 = (longlong *)((int)local_190 + -1);
        __un_inc(local_18c,local_1a0);
        if (local_1ac != 0) {
          if (local_19a == '\0') {
            local_1c8 = local_1c8 + 1;
            local_1b0[iVar6] = 0;
            pcVar8 = (code *)__decode_pointer(PTR_LAB_0324077c,local_199 + -1,local_1c0,local_1b0,
                                              &local_1fc);
            (*pcVar8)();
          }
          goto LAB_00a53ca6;
        }
        goto LAB_00a53d6d;
      }
      if (local_1a8 == 0x70) {
        local_199 = '\x01';
        goto LAB_00a539d5;
      }
      if (local_1a8 == 0x73) goto LAB_00a535fb;
      if (local_1a8 == 0x75) goto LAB_00a539d5;
      if (local_1a8 != 0x78) {
        if (local_1a8 == 0x7b) {
          if ('\0' < local_191) {
            local_1a2 = '\x01';
          }
          pbVar16 = local_1bc + 1;
          if (*pbVar16 == 0x5e) {
            pbVar16 = local_1bc + 2;
            local_1a3 = 0xff;
          }
          _memset(local_28,0,0x20);
          if (*pbVar16 == 0x5d) {
            local_28[0xb] = 0x20;
            uVar4 = 0x5d;
            pbVar16 = pbVar16 + 1;
          }
          else {
            uVar4 = (uint)local_1d5;
          }
          while( true ) {
            bVar1 = *pbVar16;
            local_1bc = pbVar16;
            if (bVar1 == 0x5d) break;
            if (((bVar1 == 0x2d) && (bVar11 = (byte)uVar4, bVar11 != 0)) &&
               (bVar2 = pbVar16[1], bVar2 != 0x5d)) {
              if (bVar2 <= bVar11) {
                uVar4 = (uint)bVar2;
                bVar2 = bVar11;
              }
              if ((byte)uVar4 <= bVar2) {
                uVar12 = (uint)(byte)((bVar2 - (byte)uVar4) + 1);
                do {
                  local_28[uVar4 >> 3] = local_28[uVar4 >> 3] | '\x01' << ((byte)uVar4 & 7);
                  uVar4 = uVar4 + 1;
                  uVar12 = uVar12 - 1;
                } while (uVar12 != 0);
              }
              uVar4 = 0;
              pbVar16 = pbVar16 + 2;
            }
            else {
              local_28[bVar1 >> 3] = local_28[bVar1 >> 3] | '\x01' << (bVar1 & 7);
              uVar4 = (uint)bVar1;
              pbVar16 = pbVar16 + 1;
            }
          }
          goto LAB_00a5360b;
        }
        goto LAB_00a53768;
      }
LAB_00a5321f:
      cVar13 = '\0';
      if (local_18c == 0x2d) {
        local_1a4 = '\x01';
LAB_00a53869:
        local_198 = local_198 + -1;
        if ((local_198 == 0) && (local_1b8 != 0)) {
          cVar13 = '\x01';
        }
        else {
          local_190 = (longlong *)((int)local_190 + 1);
          local_18c = __inc();
        }
      }
      else if (local_18c == 0x2b) goto LAB_00a53869;
      if (local_18c == 0x30) {
        local_190 = (longlong *)((int)local_190 + 1);
        local_18c = __inc();
        if (((char)local_18c == 'x') || ((char)local_18c == 'X')) {
          local_190 = (longlong *)((int)local_190 + 1);
          local_18c = __inc();
          if ((local_1b8 != 0) && (local_198 = local_198 + -2, local_198 < 1)) {
            cVar13 = cVar13 + '\x01';
          }
          local_1a8 = 0x78;
        }
        else {
          local_1ac = 1;
          if (local_1a8 == 0x78) {
            local_190 = (longlong *)((int)local_190 + -1);
            __un_inc(local_18c,local_1a0);
            local_18c = 0x30;
          }
          else {
            if ((local_1b8 != 0) && (local_198 = local_198 + -1, local_198 == 0)) {
              cVar13 = cVar13 + '\x01';
            }
            local_1a8 = 0x6f;
          }
        }
      }
LAB_00a53a17:
      lVar18 = local_1d0;
      if (local_1dc == 0) {
        plVar15 = local_1c4;
        if (cVar13 == '\0') {
          while ((local_1a8 != 0x78 && (local_1a8 != 0x70))) {
            iVar9 = _isdigit(local_18c & 0xff);
            if (iVar9 == 0) goto LAB_00a53c24;
            if (local_1a8 == 0x6f) {
              if (0x37 < (int)local_18c) goto LAB_00a53c24;
              iVar9 = (int)plVar15 << 3;
            }
            else {
              iVar9 = (int)plVar15 * 10;
            }
LAB_00a53be7:
            local_1ac = local_1ac + 1;
            plVar15 = (longlong *)(iVar9 + -0x30 + local_18c);
            if ((local_1b8 != 0) && (local_198 = local_198 + -1, lVar18 = local_1d0, local_198 == 0)
               ) goto LAB_00a53c3d;
            local_190 = (longlong *)((int)local_190 + 1);
            local_18c = __inc();
          }
          iVar9 = _isxdigit(local_18c & 0xff);
          if (iVar9 != 0) {
            iVar9 = (int)plVar15 << 4;
            local_18c = __hextodec(local_18c);
            goto LAB_00a53be7;
          }
LAB_00a53c24:
          local_190 = (longlong *)((int)local_190 + -1);
          __un_inc(local_18c,local_1a0);
          lVar18 = local_1d0;
        }
LAB_00a53c3d:
        if (local_1a4 != '\0') {
          plVar15 = (longlong *)-(int)plVar15;
        }
      }
      else {
        if (cVar13 == '\0') {
          while ((local_1a8 != 0x78 && (local_1a8 != 0x70))) {
            iVar9 = _isdigit(local_18c & 0xff);
            if (iVar9 == 0) goto LAB_00a53b1e;
            if (local_1a8 == 0x6f) {
              if (0x37 < (int)local_18c) goto LAB_00a53b1e;
              lVar18 = local_1d0 << 3;
            }
            else {
              lVar18 = __allmul(local_1d0,10,0);
            }
LAB_00a53ad1:
            local_1ac = local_1ac + 1;
            local_1d0 = lVar18 + (int)(local_18c - 0x30);
            if ((local_1b8 != 0) && (local_198 = local_198 + -1, lVar18 = local_1d0, local_198 == 0)
               ) goto LAB_00a53b37;
            local_190 = (longlong *)((int)local_190 + 1);
            local_18c = __inc();
          }
          iVar9 = _isxdigit(local_18c & 0xff);
          if (iVar9 != 0) {
            lVar18 = local_1d0 << 4;
            local_18c = __hextodec(local_18c);
            goto LAB_00a53ad1;
          }
LAB_00a53b1e:
          local_190 = (longlong *)((int)local_190 + -1);
          __un_inc(local_18c,local_1a0);
          lVar18 = local_1d0;
        }
LAB_00a53b37:
        local_1d0._4_4_ = (int)((ulonglong)lVar18 >> 0x20);
        local_1d0._0_4_ = (int)lVar18;
        plVar15 = local_1c4;
        if (local_1a4 != '\0') {
          lVar18 = CONCAT44(-(local_1d0._4_4_ + (uint)((int)local_1d0 != 0)),-(int)local_1d0);
        }
      }
      if (local_1a8 == 0x46) {
        local_1ac = 0;
      }
      local_1d0 = lVar18;
      if (local_1ac == 0) goto LAB_00a53d6d;
      if (local_19a == '\0') {
        local_1c8 = local_1c8 + 1;
LAB_00a53c7a:
        local_1d0 = lVar18;
        if (local_1dc == 0) {
          if (local_199 == '\0') {
            *(short *)local_1c0 = (short)plVar15;
          }
          else {
            *(longlong **)local_1c0 = plVar15;
          }
        }
        else {
          *local_1c0 = lVar18;
        }
      }
      goto LAB_00a53ca6;
    }
LAB_00a53cc9:
    local_190 = (longlong *)((int)local_190 + 1);
    uVar4 = __inc();
    pbVar16 = param_2 + 1;
    local_1bc = pbVar16;
    local_18c = uVar4;
    if (*param_2 == uVar4) {
      iVar9 = _isleadbyte(uVar4 & 0xff);
      if (iVar9 != 0) {
        local_190 = (longlong *)((int)local_190 + 1);
        uVar12 = __inc();
        bVar1 = *pbVar16;
        pbVar16 = param_2 + 2;
        local_1bc = pbVar16;
        if (bVar1 == uVar12) {
          local_190 = (longlong *)((int)local_190 + -1);
          goto LAB_00a53d1b;
        }
        __un_inc(uVar12,pFVar19);
        __un_inc(uVar4,pFVar19);
        goto LAB_00a53d6d;
      }
      goto LAB_00a53d1b;
    }
LAB_00a53d4f:
    __un_inc(local_18c,pFVar19);
LAB_00a53d6d:
    if (local_1d4 == 1) {
      _free(local_1b0);
    }
    if (local_18c == 0xffffffff) {
      if (local_1f0 != '\0') {
        *(uint *)(local_1f4 + 0x70) = *(uint *)(local_1f4 + 0x70) & 0xfffffffd;
      }
      goto LAB_00a53dcf;
    }
  }
  if (local_1f0 != '\0') {
    *(uint *)(local_1f4 + 0x70) = *(uint *)(local_1f4 + 0x70) & 0xfffffffd;
  }
LAB_00a53dcf:
  iVar9 = ___security_check_cookie_4();
  return iVar9;
LAB_00a5396c:
  local_190 = (longlong *)((int)local_190 + -1);
  __un_inc(local_18c,pFVar19);
LAB_00a5397b:
  if (local_1c4 == plVar15) goto LAB_00a53d6d;
  if ((local_19a == '\0') && (local_1c8 = local_1c8 + 1, local_1a8 != 99)) {
    if (local_1a2 == '\0') {
      *(undefined *)local_1c0 = 0;
    }
    else {
      *(undefined2 *)local_1c0 = 0;
    }
  }
LAB_00a53ca6:
  local_1a1 = local_1a1 + '\x01';
  pbVar16 = local_1bc + 1;
  local_1bc = pbVar16;
LAB_00a53d1b:
  param_2 = pbVar16;
  if ((local_18c == 0xffffffff) &&
     ((*pbVar16 != 0x25 || (param_2 = local_1bc, local_1bc[1] != 0x6e)))) goto LAB_00a53d6d;
LAB_00a53d37:
  bVar1 = *param_2;
  if (bVar1 == 0) goto LAB_00a53d6d;
  goto LAB_00a52f4a;
}



// Library Function - Single Match
//  __hextodec
// 
// Library: Visual Studio 2008 Release

uint __hextodec(byte param_1)

{
  int iVar1;
  uint uVar2;
  
  iVar1 = _isdigit((uint)param_1);
  uVar2 = (uint)(char)param_1;
  if (iVar1 == 0) {
    uVar2 = (uVar2 & 0xffffffdf) - 7;
  }
  return uVar2;
}



// Library Function - Single Match
//  __inc
// 
// Library: Visual Studio 2008 Release

uint __fastcall __inc(undefined4 param_1,FILE *param_2)

{
  int *piVar1;
  byte bVar2;
  uint uVar3;
  
  piVar1 = &param_2->_cnt;
  *piVar1 = *piVar1 + -1;
  if (-1 < *piVar1) {
    bVar2 = *param_2->_ptr;
    param_2->_ptr = param_2->_ptr + 1;
    return (uint)bVar2;
  }
  uVar3 = __filbuf(param_2);
  return uVar3;
}



// Library Function - Single Match
//  __un_inc
// 
// Library: Visual Studio 2008 Release

void __un_inc(int param_1,FILE *param_2)

{
  if (param_1 != -1) {
    __ungetc_nolock(param_1,param_2);
    return;
  }
  return;
}



// Library Function - Single Match
//  __input_s_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __input_s_l(FILE *_File,uchar *param_2,_locale_t _Locale,va_list _ArgList)

{
  byte bVar1;
  byte bVar2;
  int *piVar3;
  uint uVar4;
  undefined4 uVar5;
  longlong **pplVar6;
  int iVar7;
  int iVar8;
  code *pcVar9;
  int iVar10;
  undefined *puVar11;
  byte bVar12;
  uint uVar13;
  longlong *plVar14;
  byte *pbVar15;
  byte *pbVar16;
  byte *pbVar17;
  uint uVar18;
  bool bVar19;
  longlong lVar20;
  FILE *pFVar21;
  localeinfo_struct local_204;
  int local_1fc;
  char local_1f8;
  int local_1f4;
  undefined4 local_1f0;
  longlong **local_1ec;
  uint local_1e8;
  longlong **local_1e4;
  byte local_1e0;
  undefined local_1df;
  undefined4 local_1dc;
  byte local_1d5;
  int local_1d4;
  longlong *local_1d0;
  int local_1cc;
  int local_1c8;
  int local_1c4;
  longlong *local_1c0;
  undefined8 local_1bc;
  longlong *local_1b4;
  byte *local_1b0;
  int local_1ac;
  undefined *local_1a8;
  char local_1a3;
  byte local_1a2;
  char local_1a1;
  FILE *local_1a0;
  char local_19a;
  char local_199;
  int local_198;
  char local_193;
  char local_192;
  char local_191;
  int local_190;
  uint local_18c;
  undefined local_188 [352];
  byte local_28 [32];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_1e4 = (longlong **)_ArgList;
  local_1a8 = local_188;
  local_1a0 = _File;
  local_1b0 = param_2;
  local_1dc = 0x15e;
  local_1d4 = 0;
  local_1f0 = 0;
  local_18c = 0;
  local_1f4 = 0;
  if ((param_2 == (uchar *)0x0) || (_File == (FILE *)0x0)) {
    piVar3 = __errno();
    *piVar3 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    goto LAB_00a54f3c;
  }
  if ((*(byte *)&_File->_flag & 0x40) == 0) {
    uVar4 = __fileno(_File);
    if ((uVar4 == 0xffffffff) || (uVar4 == 0xfffffffe)) {
      puVar11 = &DAT_03240190;
    }
    else {
      puVar11 = (undefined *)((uVar4 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar4 >> 5]);
    }
    if ((puVar11[0x24] & 0x7f) == 0) {
      if ((uVar4 == 0xffffffff) || (uVar4 == 0xfffffffe)) {
        puVar11 = &DAT_03240190;
      }
      else {
        puVar11 = (undefined *)((uVar4 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar4 >> 5]);
      }
      if ((puVar11[0x24] & 0x80) == 0) goto LAB_00a53f31;
    }
    piVar3 = __errno();
    *piVar3 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else {
LAB_00a53f31:
    _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_204,_Locale);
    bVar1 = *param_2;
    local_1a1 = '\0';
    local_190 = 0;
    local_1c8 = 0;
    if (bVar1 != 0) {
      do {
        iVar10 = _isspace((uint)bVar1);
        pFVar21 = local_1a0;
        if (iVar10 == 0) {
          pbVar17 = local_1b0;
          if (*local_1b0 == 0x25) {
            if (local_1b0[1] == 0x25) {
              if (local_1b0[1] == 0x25) {
                pbVar17 = local_1b0 + 1;
              }
              goto LAB_00a54d8c;
            }
            local_1cc = 0;
            local_1d5 = 0;
            local_1ac = 0;
            local_1c4 = 0;
            local_198 = 0;
            local_1d0 = (longlong *)0x0;
            local_1a2 = 0;
            local_1a3 = '\0';
            local_193 = '\0';
            local_191 = '\0';
            local_19a = '\0';
            local_192 = '\0';
            local_199 = '\x01';
            local_1b4 = (longlong *)0x0;
            do {
              pbVar16 = pbVar17 + 1;
              uVar4 = (uint)*pbVar16;
              iVar10 = _isdigit(uVar4);
              pbVar15 = pbVar16;
              if (iVar10 == 0) {
                if (uVar4 < 0x4f) {
                  if (uVar4 != 0x4e) {
                    if (uVar4 == 0x2a) {
                      local_193 = local_193 + '\x01';
                    }
                    else if (uVar4 != 0x46) {
                      if (uVar4 == 0x49) {
                        bVar1 = pbVar17[2];
                        if ((bVar1 == 0x36) && (pbVar15 = pbVar17 + 3, *pbVar15 == 0x34))
                        goto LAB_00a54099;
                        if ((((((bVar1 != 0x33) || (pbVar15 = pbVar17 + 3, *pbVar15 != 0x32)) &&
                              (pbVar15 = pbVar16, bVar1 != 100)) &&
                             ((bVar1 != 0x69 && (bVar1 != 0x6f)))) && (bVar1 != 0x78)) &&
                           (bVar1 != 0x58)) goto LAB_00a540f2;
                      }
                      else if (uVar4 == 0x4c) {
                        local_199 = local_199 + '\x01';
                      }
                      else {
LAB_00a540f2:
                        local_191 = local_191 + '\x01';
                        pbVar15 = pbVar16;
                      }
                    }
                  }
                }
                else if (uVar4 == 0x68) {
                  local_199 = local_199 + -1;
                  local_192 = local_192 + -1;
                }
                else {
                  if (uVar4 == 0x6c) {
                    pbVar15 = pbVar17 + 2;
                    if (*pbVar15 == 0x6c) {
LAB_00a54099:
                      local_1b4 = (longlong *)((int)local_1b4 + 1);
                      local_1bc = 0;
                      goto LAB_00a5411c;
                    }
                    local_199 = local_199 + '\x01';
                  }
                  else if (uVar4 != 0x77) goto LAB_00a540f2;
                  local_192 = local_192 + '\x01';
                  pbVar15 = pbVar16;
                }
              }
              else {
                local_1c4 = local_1c4 + 1;
                local_198 = local_198 * 10 + -0x30 + uVar4;
              }
LAB_00a5411c:
              pbVar17 = pbVar15;
            } while (local_191 == '\0');
            if (local_193 == '\0') {
              local_1c0 = *local_1e4;
              local_1ec = local_1e4;
              local_1e4 = local_1e4 + 1;
            }
            else {
              local_1c0 = (longlong *)0x0;
            }
            local_191 = '\0';
            if ((local_192 == '\0') && ((*pbVar15 == 0x53 || (local_192 = -1, *pbVar15 == 0x43)))) {
              local_192 = '\x01';
            }
            uVar4 = *pbVar15 | 0x20;
            local_1e8 = uVar4;
            local_1b0 = pbVar15;
            if (uVar4 != 0x6e) {
              if ((uVar4 == 99) || (uVar4 == 0x7b)) {
                local_190 = local_190 + 1;
                local_18c = __inc();
              }
              else {
                local_18c = __whiteout(local_1a0);
              }
              if (local_18c == 0xffffffff) break;
            }
            if ((local_1c4 != 0) && (pFVar21 = local_1a0, local_198 == 0)) goto LAB_00a54e2b;
            if ((local_193 == '\0') && (((uVar4 == 99 || (uVar4 == 0x73)) || (uVar4 == 0x7b)))) {
              local_1c0 = *local_1ec;
              pplVar6 = local_1ec + 1;
              local_1e4 = local_1ec + 2;
              local_1d0 = local_1ec[1];
              local_1ec = pplVar6;
              if (local_1d0 == (longlong *)0x0) {
                if (local_192 < '\x01') {
                  *(undefined *)local_1c0 = 0;
                }
                else {
                  *(undefined2 *)local_1c0 = 0;
                }
                piVar3 = __errno();
                *piVar3 = 0xc;
                break;
              }
            }
            if (uVar4 < 0x70) {
              if (uVar4 == 0x6f) {
LAB_00a54a5e:
                if (local_18c == 0x2d) {
                  local_1a3 = '\x01';
                }
                else if (local_18c != 0x2b) goto LAB_00a54aa5;
                local_198 = local_198 + -1;
                if ((local_198 == 0) && (local_1c4 != 0)) {
                  local_191 = '\x01';
                }
                else {
                  local_190 = local_190 + 1;
                  local_18c = __inc();
                }
                goto LAB_00a54aa5;
              }
              if (uVar4 == 99) {
                if (local_1c4 == 0) {
                  local_198 = local_198 + 1;
                  local_1c4 = 1;
                }
LAB_00a5466e:
                if ('\0' < local_192) {
                  local_19a = '\x01';
                }
LAB_00a5467e:
                pFVar21 = local_1a0;
                plVar14 = local_1c0;
                local_190 = local_190 + -1;
                local_1b4 = local_1c0;
                __un_inc(local_18c,local_1a0);
                if (uVar4 == 99) goto LAB_00a546a9;
LAB_00a546a3:
                local_1d0 = (longlong *)((int)local_1d0 + -1);
LAB_00a546a9:
                do {
                  if ((local_1c4 != 0) &&
                     (iVar10 = local_198 + -1, bVar19 = local_198 == 0, local_198 = iVar10, bVar19))
                  {
LAB_00a54a08:
                    if (local_1b4 == plVar14) goto LAB_00a54eb7;
                    if ((local_193 == '\0') && (local_1c8 = local_1c8 + 1, uVar4 != 99)) {
                      if (local_19a == '\0') {
                        *(undefined *)local_1c0 = 0;
                      }
                      else {
                        *(undefined2 *)local_1c0 = 0;
                      }
                    }
                    goto LAB_00a54d69;
                  }
                  local_190 = local_190 + 1;
                  local_18c = __inc();
                  if (local_18c == 0xffffffff) {
LAB_00a549f9:
                    local_190 = local_190 + -1;
                    __un_inc(local_18c,pFVar21);
                    goto LAB_00a54a08;
                  }
                  bVar1 = (byte)local_18c;
                  if (uVar4 != 99) {
                    if (uVar4 == 0x73) {
                      if ((8 < (int)local_18c) && ((int)local_18c < 0xe)) goto LAB_00a549f9;
                      if (local_18c != 0x20) goto LAB_00a54733;
                    }
                    if ((uVar4 != 0x7b) ||
                       (uVar4 = local_1e8,
                       ((int)(char)(local_28[(int)local_18c >> 3] ^ local_1a2) & 1 << (bVar1 & 7))
                       == 0)) goto LAB_00a549f9;
                  }
LAB_00a54733:
                  if (local_193 == '\0') goto code_r0x00a54740;
                  local_1b4 = (longlong *)((int)local_1b4 + 1);
                } while( true );
              }
              if (uVar4 == 100) goto LAB_00a54a5e;
              if (100 < uVar4) {
                if (0x67 < uVar4) {
                  if (uVar4 == 0x69) {
                    uVar4 = 100;
                    goto LAB_00a54292;
                  }
                  if (uVar4 != 0x6e) goto LAB_00a547ef;
                  iVar10 = local_190;
                  lVar20 = local_1bc;
                  if (local_193 != '\0') goto LAB_00a54d69;
                  goto LAB_00a54c3a;
                }
                iVar10 = 0;
                if (local_18c == 0x2d) {
                  *local_1a8 = 0x2d;
                  iVar10 = 1;
LAB_00a542cb:
                  local_198 = local_198 + -1;
                  local_190 = local_190 + 1;
                  local_18c = __inc();
                }
                else if (local_18c == 0x2b) goto LAB_00a542cb;
                if (local_1c4 == 0) {
                  local_198 = -1;
                }
                while( true ) {
                  iVar7 = _isdigit(local_18c & 0xff);
                  if ((iVar7 == 0) ||
                     (iVar7 = local_198 + -1, bVar19 = local_198 == 0, local_198 = iVar7, bVar19))
                  break;
                  local_1ac = local_1ac + 1;
                  local_1a8[iVar10] = (byte)local_18c;
                  iVar10 = iVar10 + 1;
                  iVar7 = ___check_float_string(iVar10,local_188,&local_1d4);
                  if (iVar7 == 0) goto LAB_00a54eb7;
                  local_190 = local_190 + 1;
                  local_18c = __inc();
                }
                local_1a2 = **(byte **)local_204.locinfo[1].lc_codepage;
                if ((local_1a2 == (byte)local_18c) &&
                   (iVar7 = local_198 + -1, bVar19 = local_198 != 0, local_198 = iVar7, bVar19)) {
                  local_190 = local_190 + 1;
                  local_18c = __inc();
                  local_1a8[iVar10] = local_1a2;
                  iVar10 = iVar10 + 1;
                  iVar7 = ___check_float_string(iVar10,local_188,&local_1d4);
                  if (iVar7 == 0) break;
                  while( true ) {
                    iVar7 = _isdigit(local_18c & 0xff);
                    if ((iVar7 == 0) ||
                       (iVar7 = local_198 + -1, bVar19 = local_198 == 0, local_198 = iVar7, bVar19))
                    break;
                    local_1ac = local_1ac + 1;
                    local_1a8[iVar10] = (byte)local_18c;
                    iVar10 = iVar10 + 1;
                    iVar7 = ___check_float_string(iVar10,local_188,&local_1d4);
                    if (iVar7 == 0) goto LAB_00a54eb7;
                    local_190 = local_190 + 1;
                    local_18c = __inc();
                  }
                }
                iVar7 = iVar10;
                if ((local_1ac != 0) &&
                   (((local_18c == 0x65 || (local_18c == 0x45)) &&
                    (iVar8 = local_198 + -1, bVar19 = local_198 != 0, local_198 = iVar8, bVar19))))
                {
                  local_1a8[iVar10] = 0x65;
                  iVar7 = iVar10 + 1;
                  iVar8 = ___check_float_string(iVar7,local_188,&local_1d4);
                  if (iVar8 == 0) break;
                  local_190 = local_190 + 1;
                  local_18c = __inc();
                  if (local_18c == 0x2d) {
                    local_1a8[iVar7] = 0x2d;
                    iVar7 = iVar10 + 2;
                    iVar10 = ___check_float_string(iVar7,local_188,&local_1d4);
                    if (iVar10 == 0) break;
LAB_00a5453c:
                    if (local_198 == 0) {
                      local_198 = 0;
                    }
                    else {
                      local_190 = local_190 + 1;
                      local_198 = local_198 + -1;
                      local_18c = __inc();
                    }
                  }
                  else if (local_18c == 0x2b) goto LAB_00a5453c;
                  while( true ) {
                    iVar10 = _isdigit(local_18c & 0xff);
                    if ((iVar10 == 0) ||
                       (iVar10 = local_198 + -1, bVar19 = local_198 == 0, local_198 = iVar10, bVar19
                       )) break;
                    local_1ac = local_1ac + 1;
                    local_1a8[iVar7] = (byte)local_18c;
                    iVar7 = iVar7 + 1;
                    iVar10 = ___check_float_string(iVar7,local_188,&local_1d4);
                    if (iVar10 == 0) goto LAB_00a54eb7;
                    local_190 = local_190 + 1;
                    local_18c = __inc();
                  }
                }
                local_190 = local_190 + -1;
                __un_inc(local_18c,local_1a0);
                if (local_1ac != 0) {
                  if (local_193 == '\0') {
                    local_1c8 = local_1c8 + 1;
                    local_1a8[iVar7] = 0;
                    pcVar9 = (code *)__decode_pointer(PTR_LAB_0324077c,local_199 + -1,local_1c0,
                                                      local_1a8,&local_204);
                    (*pcVar9)();
                  }
                  goto LAB_00a54d69;
                }
                break;
              }
LAB_00a547ef:
              if (*local_1b0 != local_18c) {
                __un_inc(local_18c,local_1a0);
                local_1f4 = 1;
                break;
              }
              local_1a1 = local_1a1 + -1;
              if (local_193 == '\0') {
                local_1e4 = local_1ec;
              }
            }
            else {
              if (uVar4 == 0x70) {
                local_199 = '\x01';
                goto LAB_00a54a5e;
              }
              if (uVar4 == 0x73) goto LAB_00a5466e;
              if (uVar4 == 0x75) goto LAB_00a54a5e;
              if (uVar4 != 0x78) {
                if (uVar4 == 0x7b) {
                  if ('\0' < local_192) {
                    local_19a = '\x01';
                  }
                  pbVar17 = local_1b0 + 1;
                  if (*pbVar17 == 0x5e) {
                    pbVar17 = local_1b0 + 2;
                    local_1a2 = 0xff;
                  }
                  _memset(local_28,0,0x20);
                  if (*pbVar17 == 0x5d) {
                    local_28[0xb] = 0x20;
                    uVar18 = 0x5d;
                    pbVar17 = pbVar17 + 1;
                  }
                  else {
                    uVar18 = (uint)local_1d5;
                  }
                  while( true ) {
                    bVar1 = *pbVar17;
                    local_1b0 = pbVar17;
                    if (bVar1 == 0x5d) break;
                    if (((bVar1 == 0x2d) && (bVar12 = (byte)uVar18, bVar12 != 0)) &&
                       (bVar2 = pbVar17[1], bVar2 != 0x5d)) {
                      if (bVar2 <= bVar12) {
                        uVar18 = (uint)bVar2;
                        bVar2 = bVar12;
                      }
                      if ((byte)uVar18 <= bVar2) {
                        uVar13 = (uint)(byte)((bVar2 - (byte)uVar18) + 1);
                        do {
                          local_28[uVar18 >> 3] =
                               local_28[uVar18 >> 3] | '\x01' << ((byte)uVar18 & 7);
                          uVar18 = uVar18 + 1;
                          uVar13 = uVar13 - 1;
                          uVar4 = local_1e8;
                        } while (uVar13 != 0);
                      }
                      uVar18 = 0;
                      pbVar17 = pbVar17 + 2;
                    }
                    else {
                      local_28[bVar1 >> 3] = local_28[bVar1 >> 3] | '\x01' << (bVar1 & 7);
                      uVar18 = (uint)bVar1;
                      pbVar17 = pbVar17 + 1;
                      uVar4 = local_1e8;
                    }
                  }
                  goto LAB_00a5467e;
                }
                goto LAB_00a547ef;
              }
LAB_00a54292:
              if (local_18c == 0x2d) {
                local_1a3 = '\x01';
LAB_00a548f8:
                local_198 = local_198 + -1;
                if ((local_198 == 0) && (local_1c4 != 0)) {
                  local_191 = '\x01';
                }
                else {
                  local_190 = local_190 + 1;
                  local_18c = __inc();
                }
              }
              else if (local_18c == 0x2b) goto LAB_00a548f8;
              if (local_18c == 0x30) {
                local_190 = local_190 + 1;
                local_18c = __inc();
                if (((char)local_18c == 'x') || ((char)local_18c == 'X')) {
                  local_190 = local_190 + 1;
                  local_18c = __inc();
                  if ((local_1c4 != 0) && (local_198 = local_198 + -2, local_198 < 1)) {
                    local_191 = local_191 + '\x01';
                  }
                  uVar4 = 0x78;
                }
                else {
                  local_1ac = 1;
                  if (uVar4 == 0x78) {
                    local_190 = local_190 + -1;
                    __un_inc(local_18c,local_1a0);
                    local_18c = 0x30;
                  }
                  else {
                    if ((local_1c4 != 0) && (local_198 = local_198 + -1, local_198 == 0)) {
                      local_191 = local_191 + '\x01';
                    }
                    uVar4 = 0x6f;
                  }
                }
              }
LAB_00a54aa5:
              lVar20 = local_1bc;
              if (local_1b4 == (longlong *)0x0) {
                if (local_191 == '\0') {
                  while ((uVar4 != 0x78 && (uVar4 != 0x70))) {
                    iVar10 = _isdigit(local_18c & 0xff);
                    if (iVar10 == 0) goto LAB_00a54d26;
                    if (uVar4 == 0x6f) {
                      if (0x37 < (int)local_18c) goto LAB_00a54d26;
                      local_1cc = local_1cc << 3;
                    }
                    else {
                      local_1cc = local_1cc * 10;
                    }
LAB_00a54ce3:
                    local_1ac = local_1ac + 1;
                    local_1cc = local_1cc + -0x30 + local_18c;
                    if ((local_1c4 != 0) &&
                       (local_198 = local_198 + -1, lVar20 = local_1bc, local_198 == 0))
                    goto LAB_00a54d3f;
                    local_190 = local_190 + 1;
                    local_18c = __inc();
                  }
                  iVar10 = _isxdigit(local_18c & 0xff);
                  if (iVar10 != 0) {
                    local_1cc = local_1cc << 4;
                    local_18c = __hextodec(local_18c);
                    goto LAB_00a54ce3;
                  }
LAB_00a54d26:
                  local_190 = local_190 + -1;
                  __un_inc(local_18c,local_1a0);
                  lVar20 = local_1bc;
                }
LAB_00a54d3f:
                iVar10 = local_1cc;
                if (local_1a3 != '\0') {
                  iVar10 = -local_1cc;
                }
              }
              else {
                if (local_191 == '\0') {
                  while ((uVar4 != 0x78 && (uVar4 != 0x70))) {
                    iVar10 = _isdigit(local_18c & 0xff);
                    if (iVar10 == 0) goto LAB_00a54bc1;
                    if (uVar4 == 0x6f) {
                      if (0x37 < (int)local_18c) goto LAB_00a54bc1;
                      local_1bc = local_1bc << 3;
                    }
                    else {
                      lVar20 = __allmul(local_1bc,10,0);
                      local_1bc = lVar20;
                    }
LAB_00a54b78:
                    local_1ac = local_1ac + 1;
                    local_1bc = local_1bc + (int)(local_18c - 0x30);
                    if ((local_1c4 != 0) &&
                       (local_198 = local_198 + -1, lVar20 = local_1bc, local_198 == 0))
                    goto LAB_00a54bda;
                    local_190 = local_190 + 1;
                    local_18c = __inc();
                  }
                  iVar10 = _isxdigit(local_18c & 0xff);
                  if (iVar10 != 0) {
                    local_1bc = local_1bc << 4;
                    local_18c = __hextodec(local_18c);
                    goto LAB_00a54b78;
                  }
LAB_00a54bc1:
                  local_190 = local_190 + -1;
                  __un_inc(local_18c,local_1a0);
                  lVar20 = local_1bc;
                }
LAB_00a54bda:
                local_1bc._4_4_ = (int)((ulonglong)lVar20 >> 0x20);
                local_1bc._0_4_ = (int)lVar20;
                iVar10 = local_1cc;
                if (local_1a3 != '\0') {
                  lVar20 = CONCAT44(-(local_1bc._4_4_ + (uint)((int)local_1bc != 0)),-(int)local_1bc
                                   );
                }
              }
              if (uVar4 == 0x46) {
                local_1ac = 0;
              }
              local_1bc = lVar20;
              if (local_1ac == 0) break;
              if (local_193 == '\0') {
                local_1c8 = local_1c8 + 1;
LAB_00a54c3a:
                local_1bc = lVar20;
                if (local_1b4 == (longlong *)0x0) {
                  if (local_199 == '\0') {
                    *(short *)local_1c0 = (short)iVar10;
                  }
                  else {
                    *(int *)local_1c0 = iVar10;
                  }
                }
                else {
                  *local_1c0 = lVar20;
                }
              }
            }
LAB_00a54d69:
            local_1a1 = local_1a1 + '\x01';
            pbVar15 = local_1b0 + 1;
            local_1b0 = pbVar15;
          }
          else {
LAB_00a54d8c:
            local_190 = local_190 + 1;
            uVar4 = __inc();
            pbVar15 = pbVar17 + 1;
            local_1b0 = pbVar15;
            local_18c = uVar4;
            if (*pbVar17 != uVar4) {
LAB_00a54e2b:
              __un_inc(local_18c,pFVar21);
              break;
            }
            iVar10 = _isleadbyte(uVar4 & 0xff);
            if (iVar10 != 0) {
              local_190 = local_190 + 1;
              uVar18 = __inc();
              bVar1 = *pbVar15;
              pbVar15 = pbVar17 + 2;
              local_1b0 = pbVar15;
              if (bVar1 != uVar18) {
                __un_inc(uVar18,pFVar21);
                __un_inc(uVar4,pFVar21);
                break;
              }
              local_190 = local_190 + -1;
            }
          }
          pbVar17 = local_1b0;
          if ((local_18c == 0xffffffff) &&
             ((*pbVar15 != 0x25 || (pbVar15 = local_1b0, local_1b0[1] != 0x6e)))) break;
        }
        else {
          local_190 = local_190 + -1;
          uVar5 = __whiteout(local_1a0,local_1a0);
          __un_inc(uVar5);
          pbVar15 = local_1b0;
          do {
            pbVar15 = pbVar15 + 1;
            iVar10 = _isspace((uint)*pbVar15);
            pbVar17 = pbVar15;
          } while (iVar10 != 0);
        }
        local_1b0 = pbVar17;
        bVar1 = *pbVar15;
      } while (bVar1 != 0);
LAB_00a54eb7:
      if (local_1d4 == 1) {
        _free(local_1a8);
      }
      if (local_18c == 0xffffffff) {
        if (local_1f8 != '\0') {
          *(uint *)(local_1fc + 0x70) = *(uint *)(local_1fc + 0x70) & 0xfffffffd;
        }
        goto LAB_00a54f3c;
      }
      if (local_1f4 == 1) {
        piVar3 = __errno();
        *piVar3 = 0x16;
        __invalid_parameter(0,0,0,0,0);
      }
    }
    if (local_1f8 != '\0') {
      *(uint *)(local_1fc + 0x70) = *(uint *)(local_1fc + 0x70) & 0xfffffffd;
    }
  }
LAB_00a54f3c:
  iVar10 = ___security_check_cookie_4();
  return iVar10;
code_r0x00a54740:
  if (local_1d0 == (longlong *)0x0) {
    piVar3 = __errno();
    *piVar3 = 0xc;
    if (local_19a == '\0') {
      *(undefined *)local_1b4 = 0;
    }
    else {
      *(undefined2 *)local_1b4 = 0;
    }
    goto LAB_00a54eb7;
  }
  if (local_19a == '\0') {
    *(byte *)plVar14 = bVar1;
    plVar14 = (longlong *)((int)plVar14 + 1);
    local_1c0 = plVar14;
  }
  else {
    local_1e0 = bVar1;
    iVar10 = _isleadbyte(local_18c & 0xff);
    if (iVar10 != 0) {
      local_190 = local_190 + 1;
      local_1df = __inc();
    }
    local_1f0 = 0x3f;
    __mbtowc_l((wchar_t *)&local_1f0,(char *)&local_1e0,(size_t)(local_204.locinfo)->locale_name[3],
               &local_204);
    *(undefined2 *)plVar14 = (undefined2)local_1f0;
    plVar14 = (longlong *)((int)plVar14 + 2);
    local_1c0 = plVar14;
  }
  goto LAB_00a546a3;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  __stbuf
// 
// Library: Visual Studio 2008 Release

int __cdecl __stbuf(FILE *_File)

{
  char **ppcVar1;
  int iVar2;
  char *pcVar3;
  
  iVar2 = __fileno(_File);
  iVar2 = __isatty(iVar2);
  if (iVar2 == 0) {
    return 0;
  }
  iVar2 = FUN_00a475e9();
  if (_File == (FILE *)(iVar2 + 0x20)) {
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_00a475e9();
    if (_File != (FILE *)(iVar2 + 0x40)) {
      return 0;
    }
    iVar2 = 1;
  }
  _DAT_032eb274 = _DAT_032eb274 + 1;
  if ((_File->_flag & 0x10cU) != 0) {
    return 0;
  }
  ppcVar1 = (char **)(&DAT_032ebc3c + iVar2);
  if (*ppcVar1 == (char *)0x0) {
    pcVar3 = (char *)__malloc_crt(0x1000);
    *ppcVar1 = pcVar3;
    if (pcVar3 == (char *)0x0) {
      _File->_base = (char *)&_File->_charbuf;
      _File->_ptr = (char *)&_File->_charbuf;
      _File->_bufsiz = 2;
      _File->_cnt = 2;
      goto LAB_00a54fd3;
    }
  }
  pcVar3 = *ppcVar1;
  _File->_base = pcVar3;
  _File->_ptr = pcVar3;
  _File->_bufsiz = 0x1000;
  _File->_cnt = 0x1000;
LAB_00a54fd3:
  _File->_flag = _File->_flag | 0x1102;
  return 1;
}



// Library Function - Single Match
//  __ftbuf
// 
// Library: Visual Studio 2008 Release

void __cdecl __ftbuf(int _Flag,FILE *_File)

{
  if ((_Flag != 0) && ((_File->_flag & 0x1000U) != 0)) {
    __flush(_File);
    _File->_flag = _File->_flag & 0xffffeeff;
    _File->_bufsiz = 0;
    _File->_ptr = (char *)0x0;
    _File->_base = (char *)0x0;
  }
  return;
}



// Library Function - Single Match
//  __get_lc_time
// 
// Library: Visual Studio 2008 Release

uint __get_lc_time(void)

{
  LPCWSTR pWVar1;
  int in_EAX;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  uint uVar24;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  uint uVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  uint uVar32;
  uint uVar33;
  uint uVar34;
  uint uVar35;
  uint uVar36;
  uint uVar37;
  uint uVar38;
  uint uVar39;
  uint uVar40;
  uint uVar41;
  uint uVar42;
  uint uVar43;
  uint uVar44;
  uint uVar45;
  void *unaff_ESI;
  localeinfo_struct local_14;
  LPCWSTR local_c;
  LPCWSTR local_8;
  
  local_8 = (LPCWSTR)(uint)*(ushort *)(in_EAX + 0x42);
  local_c = (LPCWSTR)(uint)*(ushort *)(in_EAX + 0x44);
  if (unaff_ESI == (void *)0x0) {
    return 0xffffffff;
  }
  local_14.mbcinfo = (pthreadmbcinfo)0x0;
  uVar2 = ___getlocaleinfo(&local_14,1,local_8,0x31,(void *)((int)unaff_ESI + 4));
  uVar3 = ___getlocaleinfo(&local_14,1,local_8,0x32,(void *)((int)unaff_ESI + 8));
  uVar4 = ___getlocaleinfo(&local_14,1,local_8,0x33,(void *)((int)unaff_ESI + 0xc));
  uVar5 = ___getlocaleinfo(&local_14,1,local_8,0x34,(void *)((int)unaff_ESI + 0x10));
  uVar6 = ___getlocaleinfo(&local_14,1,local_8,0x35,(void *)((int)unaff_ESI + 0x14));
  uVar7 = ___getlocaleinfo(&local_14,1,local_8,0x36,(void *)((int)unaff_ESI + 0x18));
  uVar8 = ___getlocaleinfo(&local_14,1,local_8,0x37,unaff_ESI);
  uVar9 = ___getlocaleinfo(&local_14,1,local_8,0x2a,(void *)((int)unaff_ESI + 0x20));
  uVar10 = ___getlocaleinfo(&local_14,1,local_8,0x2b,(void *)((int)unaff_ESI + 0x24));
  uVar11 = ___getlocaleinfo(&local_14,1,local_8,0x2c,(void *)((int)unaff_ESI + 0x28));
  uVar12 = ___getlocaleinfo(&local_14,1,local_8,0x2d,(void *)((int)unaff_ESI + 0x2c));
  uVar13 = ___getlocaleinfo(&local_14,1,local_8,0x2e,(void *)((int)unaff_ESI + 0x30));
  uVar14 = ___getlocaleinfo(&local_14,1,local_8,0x2f,(void *)((int)unaff_ESI + 0x34));
  uVar15 = ___getlocaleinfo(&local_14,1,local_8,0x30,(void *)((int)unaff_ESI + 0x1c));
  uVar16 = ___getlocaleinfo(&local_14,1,local_8,0x44,(void *)((int)unaff_ESI + 0x38));
  uVar17 = ___getlocaleinfo(&local_14,1,local_8,0x45,(void *)((int)unaff_ESI + 0x3c));
  uVar18 = ___getlocaleinfo(&local_14,1,local_8,0x46,(void *)((int)unaff_ESI + 0x40));
  uVar19 = ___getlocaleinfo(&local_14,1,local_8,0x47,(void *)((int)unaff_ESI + 0x44));
  uVar20 = ___getlocaleinfo(&local_14,1,local_8,0x48,(void *)((int)unaff_ESI + 0x48));
  uVar21 = ___getlocaleinfo(&local_14,1,local_8,0x49,(void *)((int)unaff_ESI + 0x4c));
  uVar22 = ___getlocaleinfo(&local_14,1,local_8,0x4a,(void *)((int)unaff_ESI + 0x50));
  uVar23 = ___getlocaleinfo(&local_14,1,local_8,0x4b,(void *)((int)unaff_ESI + 0x54));
  uVar24 = ___getlocaleinfo(&local_14,1,local_8,0x4c,(void *)((int)unaff_ESI + 0x58));
  uVar25 = ___getlocaleinfo(&local_14,1,local_8,0x4d,(void *)((int)unaff_ESI + 0x5c));
  uVar26 = ___getlocaleinfo(&local_14,1,local_8,0x4e,(void *)((int)unaff_ESI + 0x60));
  uVar27 = ___getlocaleinfo(&local_14,1,local_8,0x4f,(void *)((int)unaff_ESI + 100));
  uVar28 = ___getlocaleinfo(&local_14,1,local_8,0x38,(void *)((int)unaff_ESI + 0x68));
  uVar29 = ___getlocaleinfo(&local_14,1,local_8,0x39,(void *)((int)unaff_ESI + 0x6c));
  uVar30 = ___getlocaleinfo(&local_14,1,local_8,0x3a,(void *)((int)unaff_ESI + 0x70));
  uVar31 = ___getlocaleinfo(&local_14,1,local_8,0x3b,(void *)((int)unaff_ESI + 0x74));
  uVar32 = ___getlocaleinfo(&local_14,1,local_8,0x3c,(void *)((int)unaff_ESI + 0x78));
  uVar33 = ___getlocaleinfo(&local_14,1,local_8,0x3d,(void *)((int)unaff_ESI + 0x7c));
  uVar34 = ___getlocaleinfo(&local_14,1,local_8,0x3e,(void *)((int)unaff_ESI + 0x80));
  uVar35 = ___getlocaleinfo(&local_14,1,local_8,0x3f,(void *)((int)unaff_ESI + 0x84));
  uVar36 = ___getlocaleinfo(&local_14,1,local_8,0x40,(void *)((int)unaff_ESI + 0x88));
  uVar37 = ___getlocaleinfo(&local_14,1,local_8,0x41,(void *)((int)unaff_ESI + 0x8c));
  uVar38 = ___getlocaleinfo(&local_14,1,local_8,0x42,(void *)((int)unaff_ESI + 0x90));
  uVar39 = ___getlocaleinfo(&local_14,1,local_8,0x43,(void *)((int)unaff_ESI + 0x94));
  uVar40 = ___getlocaleinfo(&local_14,1,local_8,0x28,(void *)((int)unaff_ESI + 0x98));
  uVar41 = ___getlocaleinfo(&local_14,1,local_8,0x29,(void *)((int)unaff_ESI + 0x9c));
  uVar42 = ___getlocaleinfo(&local_14,1,local_c,0x1f,(void *)((int)unaff_ESI + 0xa0));
  uVar43 = ___getlocaleinfo(&local_14,1,local_c,0x20,(void *)((int)unaff_ESI + 0xa4));
  uVar44 = ___getlocaleinfo(&local_14,1,local_c,0x1003,(void *)((int)unaff_ESI + 0xa8));
  pWVar1 = local_c;
  uVar45 = ___getlocaleinfo(&local_14,0,local_c,0x1009,(void *)((int)unaff_ESI + 0xb0));
  *(LPCWSTR *)((int)unaff_ESI + 0xac) = pWVar1;
  return uVar2 | uVar3 | uVar4 | uVar5 | uVar6 | uVar7 | uVar8 | uVar9 | uVar10 | uVar11 | uVar12 |
         uVar13 | uVar14 | uVar15 | uVar16 | uVar17 | uVar18 | uVar19 | uVar20 | uVar21 | uVar22 |
         uVar23 | uVar24 | uVar25 | uVar26 | uVar27 | uVar28 | uVar29 | uVar30 | uVar31 | uVar32 |
         uVar33 | uVar34 | uVar35 | uVar36 | uVar37 | uVar38 | uVar39 | uVar40 | uVar41 | uVar42 |
         uVar43 | uVar44 | uVar45;
}



// Library Function - Single Match
//  ___free_lc_time
// 
// Library: Visual Studio 2008 Release

void ___free_lc_time(void **param_1)

{
  if (param_1 != (void **)0x0) {
    _free(param_1[1]);
    _free(param_1[2]);
    _free(param_1[3]);
    _free(param_1[4]);
    _free(param_1[5]);
    _free(param_1[6]);
    _free(*param_1);
    _free(param_1[8]);
    _free(param_1[9]);
    _free(param_1[10]);
    _free(param_1[0xb]);
    _free(param_1[0xc]);
    _free(param_1[0xd]);
    _free(param_1[7]);
    _free(param_1[0xe]);
    _free(param_1[0xf]);
    _free(param_1[0x10]);
    _free(param_1[0x11]);
    _free(param_1[0x12]);
    _free(param_1[0x13]);
    _free(param_1[0x14]);
    _free(param_1[0x15]);
    _free(param_1[0x16]);
    _free(param_1[0x17]);
    _free(param_1[0x18]);
    _free(param_1[0x19]);
    _free(param_1[0x1a]);
    _free(param_1[0x1b]);
    _free(param_1[0x1c]);
    _free(param_1[0x1d]);
    _free(param_1[0x1e]);
    _free(param_1[0x1f]);
    _free(param_1[0x20]);
    _free(param_1[0x21]);
    _free(param_1[0x22]);
    _free(param_1[0x23]);
    _free(param_1[0x24]);
    _free(param_1[0x25]);
    _free(param_1[0x26]);
    _free(param_1[0x27]);
    _free(param_1[0x28]);
    _free(param_1[0x29]);
    _free(param_1[0x2a]);
  }
  return;
}



// Library Function - Single Match
//  ___init_time
// 
// Library: Visual Studio 2008 Release

int __cdecl ___init_time(threadlocinfo *_LocInfo)

{
  undefined **ppuVar1;
  undefined **_Memory;
  int iVar2;
  int **ppiVar3;
  
  if (_LocInfo->lc_category[1].locale == (char *)0x0) {
    _Memory = &PTR_DAT_03240788;
LAB_00a55622:
    ppiVar3 = &_LocInfo[1].lc_category[0].wrefcount;
    ppuVar1 = (undefined **)*ppiVar3;
    if (ppuVar1 != &PTR_DAT_03240788) {
      InterlockedDecrement((LONG *)(ppuVar1 + 0x2d));
    }
    *ppiVar3 = (int *)_Memory;
    iVar2 = 0;
  }
  else {
    _Memory = (undefined **)__calloc_crt(1,0xb8);
    if (_Memory != (undefined **)0x0) {
      iVar2 = __get_lc_time();
      if (iVar2 == 0) {
        _Memory[0x2d] = (undefined *)0x1;
        goto LAB_00a55622;
      }
      ___free_lc_time(_Memory);
      _free(_Memory);
    }
    iVar2 = 1;
  }
  return iVar2;
}



// Library Function - Single Match
//  ___free_lconv_num
// 
// Library: Visual Studio 2008 Release

void ___free_lconv_num(void **param_1)

{
  if (param_1 != (void **)0x0) {
    if ((undefined *)*param_1 != PTR_DAT_0323f824) {
      _free(*param_1);
    }
    if ((undefined *)param_1[1] != PTR_DAT_0323f828) {
      _free(param_1[1]);
    }
    if ((undefined *)param_1[2] != PTR_DAT_0323f82c) {
      _free(param_1[2]);
    }
  }
  return;
}



// Library Function - Single Match
//  ___init_numeric
// 
// Library: Visual Studio 2008 Release

int __cdecl ___init_numeric(threadlocinfo *_LocInfo)

{
  char *pcVar1;
  char cVar2;
  threadlocinfo *ptVar3;
  threadlocinfo *_Address;
  uint uVar4;
  char *pcVar5;
  LONG LVar6;
  int iVar7;
  int *piVar8;
  char *pcVar9;
  threadlocinfo *ptVar10;
  LPCWSTR _LocaleName;
  localeinfo_struct local_1c;
  uint *local_14;
  uint local_10;
  undefined4 *local_c;
  undefined4 *local_8;
  
  ptVar3 = _LocInfo;
  local_1c.locinfo = _LocInfo;
  local_1c.mbcinfo = (pthreadmbcinfo)0x0;
  if ((_LocInfo->lc_category[0].wrefcount == (int *)0x0) &&
     (_LocInfo->lc_category[0].refcount == (int *)0x0)) {
    local_8 = (undefined4 *)0x0;
    local_c = (undefined4 *)0x0;
    _LocInfo = (threadlocinfo *)&PTR_DAT_0323f824;
LAB_00a557f4:
    if ((LONG *)ptVar3->locale_name[5] != (LONG *)0x0) {
      InterlockedDecrement((LONG *)ptVar3->locale_name[5]);
    }
    if (((LONG *)ptVar3->locale_name[4] != (LONG *)0x0) &&
       (LVar6 = InterlockedDecrement((LONG *)ptVar3->locale_name[4]), LVar6 == 0)) {
      _free(ptVar3->locale_name[4]);
      _free((void *)ptVar3[1].lc_codepage);
    }
    ptVar3->locale_name[5] = (wchar_t *)local_8;
    ptVar3->locale_name[4] = (wchar_t *)local_c;
    ptVar3[1].lc_codepage = (uint)_LocInfo;
    iVar7 = 0;
  }
  else {
    _Address = (threadlocinfo *)__calloc_crt(1,0x30);
    if (_Address != (threadlocinfo *)0x0) {
      piVar8 = (int *)_LocInfo[1].lc_codepage;
      ptVar10 = _Address;
      for (iVar7 = 0xc; iVar7 != 0; iVar7 = iVar7 + -1) {
        ptVar10->refcount = *piVar8;
        piVar8 = piVar8 + 1;
        ptVar10 = (threadlocinfo *)&ptVar10->lc_codepage;
      }
      local_c = (undefined4 *)__malloc_crt(4);
      if (local_c != (undefined4 *)0x0) {
        *local_c = 0;
        if (_LocInfo->lc_category[0].wrefcount == (int *)0x0) {
          _Address->refcount = (int)PTR_DAT_0323f824;
          _Address->lc_codepage = (uint)PTR_DAT_0323f828;
          local_8 = (undefined4 *)0x0;
          _Address->lc_collate_cp = (uint)PTR_DAT_0323f82c;
        }
        else {
          local_8 = (undefined4 *)__malloc_crt(4);
          if (local_8 == (undefined4 *)0x0) {
            iVar7 = 1;
LAB_00a5571a:
            _free(_Address);
            _free(local_c);
            return iVar7;
          }
          *local_8 = 0;
          _LocaleName = (LPCWSTR)(uint)*(ushort *)((int)&_LocInfo->lc_category[2].wrefcount + 2);
          local_10 = ___getlocaleinfo(&local_1c,1,_LocaleName,0xe,_Address);
          uVar4 = ___getlocaleinfo(&local_1c,1,_LocaleName,0xf,&_Address->lc_codepage);
          local_10 = local_10 | uVar4;
          local_14 = &_Address->lc_collate_cp;
          uVar4 = ___getlocaleinfo(&local_1c,1,_LocaleName,0x10,local_14);
          if ((uVar4 | local_10) != 0) {
            ___free_lconv_num(_Address);
            iVar7 = -1;
            goto LAB_00a5571a;
          }
          pcVar5 = (char *)*local_14;
          while (*pcVar5 != '\0') {
            cVar2 = *pcVar5;
            if ((cVar2 < '0') || ('9' < cVar2)) {
              pcVar9 = pcVar5;
              if (cVar2 != ';') goto LAB_00a557a4;
              do {
                pcVar1 = pcVar9 + 1;
                *pcVar9 = *pcVar1;
                pcVar9 = pcVar1;
              } while (*pcVar1 != '\0');
            }
            else {
              *pcVar5 = cVar2 + -0x30;
LAB_00a557a4:
              pcVar5 = pcVar5 + 1;
            }
          }
        }
        *local_c = 1;
        _LocInfo = _Address;
        if (local_8 != (undefined4 *)0x0) {
          *local_8 = 1;
        }
        goto LAB_00a557f4;
      }
      _free(_Address);
    }
    iVar7 = 1;
  }
  return iVar7;
}



// Library Function - Single Match
//  ___free_lconv_mon
// 
// Library: Visual Studio 2008 Release

void ___free_lconv_mon(int param_1)

{
  if (param_1 != 0) {
    if (*(undefined **)(param_1 + 0xc) != PTR_DAT_0323f830) {
      _free(*(undefined **)(param_1 + 0xc));
    }
    if (*(undefined **)(param_1 + 0x10) != PTR_DAT_0323f834) {
      _free(*(undefined **)(param_1 + 0x10));
    }
    if (*(undefined **)(param_1 + 0x14) != PTR_DAT_0323f838) {
      _free(*(undefined **)(param_1 + 0x14));
    }
    if (*(undefined **)(param_1 + 0x18) != PTR_DAT_0323f83c) {
      _free(*(undefined **)(param_1 + 0x18));
    }
    if (*(undefined **)(param_1 + 0x1c) != PTR_DAT_0323f840) {
      _free(*(undefined **)(param_1 + 0x1c));
    }
    if (*(undefined **)(param_1 + 0x20) != PTR_DAT_0323f844) {
      _free(*(undefined **)(param_1 + 0x20));
    }
    if (*(undefined **)(param_1 + 0x24) != PTR_DAT_0323f848) {
      _free(*(undefined **)(param_1 + 0x24));
    }
  }
  return;
}



// Library Function - Single Match
//  ___init_monetary
// 
// Library: Visual Studio 2008 Release

int __cdecl ___init_monetary(threadlocinfo *_LocInfo)

{
  char *pcVar1;
  char cVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  char *pcVar18;
  uint *puVar19;
  LONG LVar20;
  int iVar21;
  undefined **_Memory;
  LPCWSTR _LocaleName;
  char *pcVar22;
  undefined **ppuVar23;
  undefined **ppuVar24;
  localeinfo_struct local_14;
  undefined4 *local_c;
  undefined4 *local_8;
  
  local_8 = (undefined4 *)0x0;
  local_14.locinfo = _LocInfo;
  local_14.mbcinfo = (pthreadmbcinfo)0x0;
  if ((_LocInfo->lc_category[0].refcount == (int *)0x0) &&
     (_LocInfo->lc_category[0].wrefcount == (int *)0x0)) {
    local_8 = (undefined4 *)0x0;
    local_c = (undefined4 *)0x0;
    _Memory = &PTR_DAT_0323f824;
LAB_00a55b49:
    if ((LONG *)_LocInfo[1].refcount != (LONG *)0x0) {
      InterlockedDecrement((LONG *)_LocInfo[1].refcount);
    }
    if (((LONG *)_LocInfo->locale_name[4] != (LONG *)0x0) &&
       (LVar20 = InterlockedDecrement((LONG *)_LocInfo->locale_name[4]), LVar20 == 0)) {
      _free((void *)_LocInfo[1].lc_codepage);
      _free(_LocInfo->locale_name[4]);
    }
    _LocInfo[1].refcount = (int)local_8;
    _LocInfo->locale_name[4] = (wchar_t *)local_c;
    _LocInfo[1].lc_codepage = (uint)_Memory;
    iVar21 = 0;
  }
  else {
    _Memory = (undefined **)__calloc_crt(1,0x30);
    if (_Memory != (undefined **)0x0) {
      local_c = (undefined4 *)__malloc_crt(4);
      if (local_c == (undefined4 *)0x0) {
        _free(_Memory);
      }
      else {
        *local_c = 0;
        if (_LocInfo->lc_category[0].refcount == (int *)0x0) {
          ppuVar23 = &PTR_DAT_0323f824;
          ppuVar24 = _Memory;
          for (iVar21 = 0xc; iVar21 != 0; iVar21 = iVar21 + -1) {
            *ppuVar24 = *ppuVar23;
            ppuVar23 = ppuVar23 + 1;
            ppuVar24 = ppuVar24 + 1;
          }
LAB_00a55b14:
          puVar19 = &_LocInfo[1].lc_codepage;
          *_Memory = *(undefined **)*puVar19;
          _Memory[1] = *(undefined **)(*puVar19 + 4);
          _Memory[2] = *(undefined **)(*puVar19 + 8);
          *local_c = 1;
          if (local_8 != (undefined4 *)0x0) {
            *local_8 = 1;
          }
          goto LAB_00a55b49;
        }
        local_8 = (undefined4 *)__malloc_crt(4);
        if (local_8 == (undefined4 *)0x0) {
          _free(_Memory);
          _free(local_c);
        }
        else {
          *local_8 = 0;
          _LocaleName = (LPCWSTR)(uint)*(ushort *)&_LocInfo->lc_category[2].refcount;
          uVar3 = ___getlocaleinfo(&local_14,1,_LocaleName,0x15,_Memory + 3);
          uVar4 = ___getlocaleinfo(&local_14,1,_LocaleName,0x14,_Memory + 4);
          uVar5 = ___getlocaleinfo(&local_14,1,_LocaleName,0x16,_Memory + 5);
          uVar6 = ___getlocaleinfo(&local_14,1,_LocaleName,0x17,_Memory + 6);
          uVar7 = ___getlocaleinfo(&local_14,1,_LocaleName,0x18,_Memory + 7);
          uVar8 = ___getlocaleinfo(&local_14,1,_LocaleName,0x50,_Memory + 8);
          uVar9 = ___getlocaleinfo(&local_14,1,_LocaleName,0x51,_Memory + 9);
          uVar10 = ___getlocaleinfo(&local_14,0,_LocaleName,0x1a,_Memory + 10);
          uVar11 = ___getlocaleinfo(&local_14,0,_LocaleName,0x19,(void *)((int)_Memory + 0x29));
          uVar12 = ___getlocaleinfo(&local_14,0,_LocaleName,0x54,(void *)((int)_Memory + 0x2a));
          uVar13 = ___getlocaleinfo(&local_14,0,_LocaleName,0x55,(void *)((int)_Memory + 0x2b));
          uVar14 = ___getlocaleinfo(&local_14,0,_LocaleName,0x56,_Memory + 0xb);
          uVar15 = ___getlocaleinfo(&local_14,0,_LocaleName,0x57,(void *)((int)_Memory + 0x2d));
          uVar16 = ___getlocaleinfo(&local_14,0,_LocaleName,0x52,(void *)((int)_Memory + 0x2e));
          uVar17 = ___getlocaleinfo(&local_14,0,_LocaleName,0x53,(void *)((int)_Memory + 0x2f));
          if ((uVar17 | uVar3 | uVar4 | uVar5 | uVar6 | uVar7 | uVar8 | uVar9 | uVar10 | uVar11 |
                        uVar12 | uVar13 | uVar14 | uVar15 | uVar16) == 0) {
            pcVar18 = _Memory[7];
            while (*pcVar18 != '\0') {
              cVar2 = *pcVar18;
              if ((cVar2 < '0') || ('9' < cVar2)) {
                pcVar22 = pcVar18;
                if (cVar2 != ';') goto LAB_00a55ae9;
                do {
                  pcVar1 = pcVar22 + 1;
                  *pcVar22 = *pcVar1;
                  pcVar22 = pcVar1;
                } while (*pcVar1 != '\0');
              }
              else {
                *pcVar18 = cVar2 + -0x30;
LAB_00a55ae9:
                pcVar18 = pcVar18 + 1;
              }
            }
            goto LAB_00a55b14;
          }
          ___free_lconv_mon(_Memory);
          _free(_Memory);
          _free(local_c);
          _free(local_8);
        }
      }
    }
    iVar21 = 1;
  }
  return iVar21;
}



// Library Function - Single Match
//  __Getdays_l
// 
// Library: Visual Studio 2008 Release

char * __Getdays_l(localeinfo_struct *param_1)

{
  int iVar1;
  size_t sVar2;
  char *pcVar3;
  errno_t eVar4;
  int iVar5;
  int iVar6;
  int local_1c [2];
  int local_14;
  char local_10;
  char *local_c;
  uint local_8;
  
  iVar5 = 0;
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)local_1c,param_1);
  iVar1 = *(int *)(local_1c[0] + 0xd4);
  local_8 = 0;
  do {
    iVar6 = local_8 * 4;
    local_c = (char *)_strlen(*(char **)(iVar6 + 0x1c + iVar1));
    sVar2 = _strlen(*(char **)(iVar6 + iVar1));
    local_8 = local_8 + 1;
    iVar5 = sVar2 + iVar5 + 2 + (int)local_c;
  } while (local_8 < 7);
  pcVar3 = (char *)__malloc_crt(iVar5 + 1);
  local_c = pcVar3;
  if (pcVar3 != (char *)0x0) {
    local_8 = 0;
    do {
      *pcVar3 = ':';
      pcVar3 = pcVar3 + 1;
      eVar4 = _strcpy_s(pcVar3,(rsize_t)(local_c + iVar5 + (1 - (int)pcVar3)),
                        *(char **)(iVar1 + local_8 * 4));
      if (eVar4 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      sVar2 = _strlen(pcVar3);
      pcVar3[sVar2] = ':';
      pcVar3 = pcVar3 + sVar2 + 1;
      eVar4 = _strcpy_s(pcVar3,(rsize_t)(local_c + iVar5 + (1 - (int)pcVar3)),
                        *(char **)(iVar1 + 0x1c + local_8 * 4));
      if (eVar4 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      sVar2 = _strlen(pcVar3);
      pcVar3 = pcVar3 + sVar2;
      local_8 = local_8 + 1;
    } while (local_8 < 7);
    *pcVar3 = '\0';
  }
  if (local_10 != '\0') {
    *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
  }
  return local_c;
}



// Library Function - Single Match
//  __Getdays
// 
// Library: Visual Studio 2008 Release

char * __cdecl __Getdays(void)

{
  char *pcVar1;
  
  pcVar1 = (char *)__Getdays_l(0);
  return pcVar1;
}



// Library Function - Single Match
//  __Getmonths_l
// 
// Library: Visual Studio 2008 Release

char * __Getmonths_l(localeinfo_struct *param_1)

{
  int iVar1;
  size_t sVar2;
  char *pcVar3;
  errno_t eVar4;
  int iVar5;
  char **ppcVar6;
  int local_20 [2];
  int local_18;
  char local_14;
  size_t local_10;
  int local_c;
  char **local_8;
  
  iVar5 = 0;
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)local_20,param_1);
  iVar1 = *(int *)(local_20[0] + 0xd4);
  ppcVar6 = (char **)(iVar1 + 0x38);
  local_c = 0xc;
  do {
    local_8 = ppcVar6;
    local_10 = _strlen(ppcVar6[0xc]);
    sVar2 = _strlen(*ppcVar6);
    ppcVar6 = local_8 + 1;
    local_c = local_c + -1;
    iVar5 = sVar2 + iVar5 + 2 + local_10;
  } while (local_c != 0);
  local_8 = ppcVar6;
  pcVar3 = (char *)__malloc_crt(iVar5 + 1);
  local_8 = (char **)pcVar3;
  if (pcVar3 != (char *)0x0) {
    ppcVar6 = (char **)(iVar1 + 0x68);
    local_c = 0xc;
    do {
      *pcVar3 = ':';
      pcVar3 = pcVar3 + 1;
      eVar4 = _strcpy_s(pcVar3,(rsize_t)((int)local_8 + iVar5 + (1 - (int)pcVar3)),ppcVar6[-0xc]);
      if (eVar4 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      sVar2 = _strlen(pcVar3);
      pcVar3[sVar2] = ':';
      pcVar3 = pcVar3 + sVar2 + 1;
      eVar4 = _strcpy_s(pcVar3,(rsize_t)((int)local_8 + iVar5 + (1 - (int)pcVar3)),*ppcVar6);
      if (eVar4 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      sVar2 = _strlen(pcVar3);
      pcVar3 = pcVar3 + sVar2;
      ppcVar6 = ppcVar6 + 1;
      local_c = local_c + -1;
    } while (local_c != 0);
    *pcVar3 = '\0';
  }
  if (local_14 != '\0') {
    *(uint *)(local_18 + 0x70) = *(uint *)(local_18 + 0x70) & 0xfffffffd;
  }
  return (char *)local_8;
}



// Library Function - Single Match
//  __Getmonths
// 
// Library: Visual Studio 2008 Release

char * __cdecl __Getmonths(void)

{
  char *pcVar1;
  
  pcVar1 = (char *)__Getmonths_l(0);
  return pcVar1;
}



// Library Function - Single Match
//  __Gettnames_l
// 
// Library: Visual Studio 2008 Release

void * __Gettnames_l(localeinfo_struct *param_1)

{
  void *_Src;
  char **ppcVar1;
  size_t sVar2;
  size_t sVar3;
  size_t sVar4;
  size_t sVar5;
  void *_Dst;
  errno_t eVar6;
  int iVar7;
  int iVar8;
  char *pcVar9;
  int local_28 [2];
  int local_20;
  char local_1c;
  size_t local_18;
  char **local_14;
  char **local_10;
  size_t local_c;
  char **local_8;
  
  iVar8 = 0;
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)local_28,param_1);
  _Src = *(void **)(local_28[0] + 0xd4);
  local_8 = (char **)0x0;
  do {
    iVar7 = (int)local_8 * 4;
    local_18 = _strlen(*(char **)(iVar7 + 0x1c + (int)_Src));
    sVar2 = _strlen(*(char **)(iVar7 + (int)_Src));
    local_8 = (char **)((int)local_8 + 1);
    iVar8 = sVar2 + iVar8 + 2 + local_18;
  } while (local_8 < 7);
  local_14 = (char **)((int)_Src + 0x38);
  local_10 = (char **)0xc;
  do {
    ppcVar1 = local_14;
    local_18 = _strlen(local_14[0xc]);
    sVar2 = _strlen(*ppcVar1);
    local_14 = local_14 + 1;
    local_10 = (char **)((int)local_10 + -1);
    iVar8 = sVar2 + iVar8 + 2 + local_18;
  } while (local_10 != (char **)0x0);
  sVar2 = _strlen(*(char **)((int)_Src + 0x9c));
  sVar3 = _strlen(*(char **)((int)_Src + 0x98));
  sVar4 = _strlen(*(char **)((int)_Src + 0xa0));
  sVar5 = _strlen(*(char **)((int)_Src + 0xa4));
  local_c = _strlen(*(char **)((int)_Src + 0xa8));
  local_c = sVar3 + iVar8 + sVar2 + sVar4 + sVar5 + 0xbd + local_c;
  _Dst = __malloc_crt(local_c);
  if (_Dst != (void *)0x0) {
    pcVar9 = (char *)((int)_Dst + 0xb8);
    _memcpy(_Dst,_Src,0xb8);
    local_8 = (char **)0x0;
    local_10 = (char **)((int)_Src + 0x1c);
    local_14 = (char **)((int)_Dst - (int)_Src);
    do {
      *(char **)((int)_Dst + (int)local_8 * 4) = pcVar9;
      eVar6 = _strcpy_s(pcVar9,(int)_Dst + (local_c - (int)pcVar9),local_10[-7]);
      if (eVar6 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      sVar2 = _strlen(pcVar9);
      pcVar9 = pcVar9 + sVar2 + 1;
      *(char **)((int)local_14 + (int)local_10) = pcVar9;
      eVar6 = _strcpy_s(pcVar9,(int)_Dst + (local_c - (int)pcVar9),*local_10);
      if (eVar6 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      sVar2 = _strlen(pcVar9);
      local_8 = (char **)((int)local_8 + 1);
      local_10 = local_10 + 1;
      pcVar9 = pcVar9 + sVar2 + 1;
    } while (local_8 < 7);
    local_8 = (char **)((int)_Dst + 0x68);
    local_10 = (char **)((int)_Src + 0x38);
    local_18 = 0xc;
    do {
      *(char **)((int)local_10 + (int)local_14) = pcVar9;
      eVar6 = _strcpy_s(pcVar9,(int)_Dst + (local_c - (int)pcVar9),*local_10);
      if (eVar6 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      sVar2 = _strlen(pcVar9);
      pcVar9 = pcVar9 + sVar2 + 1;
      *local_8 = pcVar9;
      eVar6 = _strcpy_s(pcVar9,(int)_Dst + (local_c - (int)pcVar9),local_10[0xc]);
      if (eVar6 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      sVar2 = _strlen(pcVar9);
      local_10 = local_10 + 1;
      local_8 = local_8 + 1;
      local_18 = local_18 + -1;
      pcVar9 = pcVar9 + sVar2 + 1;
    } while (local_18 != 0);
    *(char **)((int)_Dst + 0x98) = pcVar9;
    eVar6 = _strcpy_s(pcVar9,(int)_Dst + (local_c - (int)pcVar9),*(char **)((int)_Src + 0x98));
    if (eVar6 != 0) {
                    // WARNING: Subroutine does not return
      __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
    }
    sVar2 = _strlen(pcVar9);
    pcVar9 = pcVar9 + sVar2 + 1;
    *(char **)((int)_Dst + 0x9c) = pcVar9;
    eVar6 = _strcpy_s(pcVar9,(int)_Dst + (local_c - (int)pcVar9),*(char **)((int)_Src + 0x9c));
    if (eVar6 != 0) {
                    // WARNING: Subroutine does not return
      __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
    }
    sVar2 = _strlen(pcVar9);
    pcVar9 = pcVar9 + sVar2 + 1;
    *(char **)((int)_Dst + 0xa0) = pcVar9;
    eVar6 = _strcpy_s(pcVar9,(int)_Dst + (local_c - (int)pcVar9),*(char **)((int)_Src + 0xa0));
    if (eVar6 != 0) {
                    // WARNING: Subroutine does not return
      __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
    }
    sVar2 = _strlen(pcVar9);
    pcVar9 = pcVar9 + sVar2 + 1;
    *(char **)((int)_Dst + 0xa4) = pcVar9;
    eVar6 = _strcpy_s(pcVar9,(int)_Dst + (local_c - (int)pcVar9),*(char **)((int)_Src + 0xa4));
    if (eVar6 != 0) {
                    // WARNING: Subroutine does not return
      __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
    }
    sVar2 = _strlen(pcVar9);
    pcVar9 = pcVar9 + sVar2 + 1;
    *(char **)((int)_Dst + 0xa8) = pcVar9;
    eVar6 = _strcpy_s(pcVar9,(int)_Dst + (local_c - (int)pcVar9),*(char **)((int)_Src + 0xa8));
    if (eVar6 != 0) {
                    // WARNING: Subroutine does not return
      __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
    }
  }
  if (local_1c != '\0') {
    *(uint *)(local_20 + 0x70) = *(uint *)(local_20 + 0x70) & 0xfffffffd;
  }
  return _Dst;
}



// Library Function - Single Match
//  __Gettnames
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void * __cdecl __Gettnames(void)

{
  void *pvVar1;
  
  pvVar1 = (void *)__Gettnames_l(0);
  return pvVar1;
}



// Library Function - Single Match
//  void __cdecl _store_str(char *,char * *,unsigned int *)
// 
// Library: Visual Studio 2008 Release

void __cdecl _store_str(char *param_1,char **param_2,uint *param_3)

{
  int iVar1;
  int *in_EAX;
  char **in_ECX;
  char *in_EDX;
  
  iVar1 = *in_EAX;
  for (; (iVar1 != 0 && (*in_EDX != '\0')); in_EDX = in_EDX + 1) {
    **in_ECX = *in_EDX;
    *in_ECX = *in_ECX + 1;
    *in_EAX = *in_EAX + -1;
    iVar1 = *in_EAX;
  }
  return;
}



// Library Function - Single Match
//  void __cdecl _store_num(int,int,char * *,unsigned int *,unsigned int)
// 
// Library: Visual Studio 2008 Release

void __cdecl _store_num(int param_1,int param_2,char **param_3,uint *param_4,uint param_5)

{
  char cVar1;
  uint uVar2;
  int in_EAX;
  int iVar3;
  char *pcVar4;
  uint *in_ECX;
  uint in_EDX;
  char *pcVar5;
  char **unaff_EDI;
  int local_8;
  
  local_8 = 0;
  if (param_1 == 0) {
    if (in_EDX < *in_ECX) {
      iVar3 = in_EDX - 1;
      if (in_EDX != 0) {
        do {
          local_8 = local_8 + 1;
          (*unaff_EDI)[iVar3] = (char)(in_EAX % 10) + '0';
          iVar3 = iVar3 + -1;
          in_EAX = in_EAX / 10;
        } while (iVar3 != -1);
      }
      *unaff_EDI = *unaff_EDI + local_8;
      *in_ECX = *in_ECX - local_8;
    }
    else {
      *in_ECX = 0;
    }
  }
  else {
    uVar2 = *in_ECX;
    pcVar5 = *unaff_EDI;
    do {
      if (uVar2 < 2) break;
      iVar3 = in_EAX / 10;
      *pcVar5 = (char)(in_EAX % 10) + '0';
      pcVar5 = pcVar5 + 1;
      *in_ECX = *in_ECX - 1;
      uVar2 = *in_ECX;
      in_EAX = iVar3;
    } while (0 < iVar3);
    pcVar4 = *unaff_EDI;
    *unaff_EDI = pcVar5;
    pcVar5 = pcVar5 + -1;
    do {
      cVar1 = *pcVar5;
      *pcVar5 = *pcVar4;
      pcVar5 = pcVar5 + -1;
      *pcVar4 = cVar1;
      pcVar4 = pcVar4 + 1;
    } while (pcVar4 < pcVar5);
  }
  return;
}



// WARNING: Type propagation algorithm not settling
// Library Function - Single Match
//  int __cdecl _expandtime(struct localeinfo_struct *,char,struct tm const *,char * *,unsigned int
// *,struct __lc_time_data *,unsigned int)
// 
// Library: Visual Studio 2008 Release

int __cdecl
_expandtime(localeinfo_struct *param_1,char param_2,tm *param_3,char **param_4,uint *param_5,
           __lc_time_data *param_6,uint param_7)

{
  int iVar1;
  char in_AL;
  int *piVar2;
  char **in_ECX;
  tm *in_EDX;
  uint *unaff_EBX;
  char **unaff_ESI;
  char *unaff_EDI;
  bool bVar3;
  bool bVar4;
  undefined3 in_stack_00000009;
  int iVar5;
  
  if (in_AL < 'Z') {
    if (in_AL == 'Y') {
      if ((-0x76d < in_EDX->tm_year) && (in_EDX->tm_year < 0x1fa4)) goto LAB_00a56400;
LAB_00a56368:
      piVar2 = __errno();
      goto LAB_00a56490;
    }
    if (in_AL < 'J') {
      if (in_AL == 'I') {
        if ((-1 < in_EDX->tm_hour) && (in_EDX->tm_hour < 0x18)) goto LAB_00a56400;
      }
      else {
        if (in_AL == '\x04') {
          return 1;
        }
        if (in_AL == '\r') {
          return 1;
        }
        if (in_AL == '%') {
          **in_ECX = '%';
          *in_ECX = *in_ECX + 1;
          *_param_2 = *_param_2 - 1;
          return 1;
        }
        if (in_AL == 'A') {
          iVar5 = in_EDX->tm_wday;
joined_r0x00a56484:
          if ((-1 < iVar5) && (iVar5 < 7)) goto LAB_00a5658b;
        }
        else if (in_AL == 'B') {
          iVar5 = in_EDX->tm_mon;
joined_r0x00a5646a:
          if ((-1 < iVar5) && (iVar5 < 0xc)) goto LAB_00a5658b;
        }
        else {
          if (in_AL != 'H') {
            return 0;
          }
          iVar1 = in_EDX->tm_hour;
          if (-1 < iVar1) {
            bVar4 = SBORROW4(iVar1,0x17);
            iVar5 = iVar1 + -0x17;
            bVar3 = iVar1 == 0x17;
            goto LAB_00a56219;
          }
        }
      }
    }
    else {
      if (in_AL == 'M') {
        iVar5 = in_EDX->tm_min;
      }
      else {
        if (in_AL != 'S') {
          if (in_AL == 'U') {
            iVar5 = in_EDX->tm_wday;
          }
          else {
            if (in_AL != 'W') {
              if (in_AL != 'X') {
                return 0;
              }
LAB_00a56447:
              iVar5 = 2;
LAB_00a5644b:
              iVar5 = _store_winword(param_1,iVar5,in_EDX,in_ECX,_param_2,(__lc_time_data *)param_3)
              ;
              if (iVar5 == 0) {
                return 0;
              }
              return 1;
            }
            iVar5 = in_EDX->tm_wday;
          }
          if ((-1 < iVar5) && (iVar5 < 7)) {
            iVar5 = in_EDX->tm_yday;
joined_r0x00a563c7:
            if ((-1 < iVar5) && (iVar5 < 0x16e)) goto LAB_00a56400;
          }
          goto LAB_00a5648b;
        }
        iVar5 = in_EDX->tm_sec;
      }
      if (-1 < iVar5) {
        bVar4 = SBORROW4(iVar5,0x3b);
        iVar5 = iVar5 + -0x3b;
        bVar3 = iVar5 == 0;
LAB_00a56219:
        if (bVar3 || bVar4 != iVar5 < 0) {
LAB_00a56400:
          _store_num((int)param_4,(int)unaff_EDI,unaff_ESI,unaff_EBX,(uint)in_ECX);
          return 1;
        }
      }
    }
  }
  else if (in_AL < 'n') {
    if (in_AL != 'm') {
      if (in_AL == 'Z') {
LAB_00a564e2:
        ___tzset();
        FUN_00a4c1ee();
LAB_00a5658b:
        _store_str(unaff_EDI,unaff_ESI,unaff_EBX);
        return 1;
      }
      if (in_AL == 'a') {
        iVar5 = in_EDX->tm_wday;
        goto joined_r0x00a56484;
      }
      if (in_AL == 'b') {
        iVar5 = in_EDX->tm_mon;
        goto joined_r0x00a5646a;
      }
      if (in_AL == 'c') {
        iVar5 = _store_winword(param_1,(uint)(param_4 != (char **)0x0),in_EDX,in_ECX,_param_2,
                               (__lc_time_data *)param_3);
        if (iVar5 == 0) {
          return 0;
        }
        if (*_param_2 == 0) {
          return 0;
        }
        **in_ECX = ' ';
        *in_ECX = *in_ECX + 1;
        *_param_2 = *_param_2 - 1;
        goto LAB_00a56447;
      }
      if (in_AL != 'd') {
        if (in_AL != 'j') {
          return 0;
        }
        iVar5 = in_EDX->tm_yday;
        goto joined_r0x00a563c7;
      }
      if ((0 < in_EDX->tm_mday) && (in_EDX->tm_mday < 0x20)) goto LAB_00a56400;
      goto LAB_00a56368;
    }
    if ((-1 < in_EDX->tm_mon) && (in_EDX->tm_mon < 0xc)) goto LAB_00a56400;
  }
  else if (in_AL == 'p') {
    if ((-1 < in_EDX->tm_hour) && (in_EDX->tm_hour < 0x18)) goto LAB_00a5658b;
  }
  else if (in_AL == 'w') {
    if ((-1 < in_EDX->tm_wday) && (in_EDX->tm_wday < 7)) goto LAB_00a56400;
  }
  else {
    if (in_AL == 'x') {
      if (param_4 == (char **)0x0) {
        iVar5 = 0;
      }
      else {
        iVar5 = 1;
      }
      goto LAB_00a5644b;
    }
    if (in_AL != 'y') {
      if (in_AL != 'z') {
        return 0;
      }
      goto LAB_00a564e2;
    }
    if (-1 < in_EDX->tm_year) goto LAB_00a56400;
  }
LAB_00a5648b:
  piVar2 = __errno();
LAB_00a56490:
  *piVar2 = 0x16;
  __invalid_parameter(0,0,0,0,0);
  return 0;
}



// WARNING: Function: __alloca_probe_16 replaced with injection: alloca_probe
// Library Function - Single Match
//  int __cdecl _store_winword(struct localeinfo_struct *,int,struct tm const *,char * *,unsigned
// int *,struct __lc_time_data *)
// 
// Library: Visual Studio 2008 Release

int __cdecl
_store_winword(localeinfo_struct *param_1,int param_2,tm *param_3,char **param_4,uint *param_5,
              __lc_time_data *param_6)

{
  code cVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint unaff_EBX;
  char **ppcVar5;
  __lc_time_data *unaff_ESI;
  uint *unaff_EDI;
  code *_Str1;
  code *pcVar6;
  char *pcVar7;
  char *pcVar8;
  short local_24;
  short local_22;
  undefined2 local_1e;
  undefined2 local_1c;
  undefined2 local_1a;
  undefined2 local_18;
  undefined2 local_16;
  int local_14;
  code *local_10;
  char **local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  if (param_2 == 0) {
    _Str1 = (code *)param_6->ww_sdatefmt;
  }
  else if (param_2 == 1) {
    _Str1 = (code *)param_6->ww_ldatefmt;
  }
  else {
    _Str1 = (code *)param_6->ww_timefmt;
  }
  if (param_6->refcount != 1) {
    local_10 = GetDateFormatA_exref;
    if (param_2 == 2) {
      local_10 = GetTimeFormatA_exref;
    }
    local_24 = *(short *)&param_3->tm_year + 0x76c;
    local_22 = *(short *)&param_3->tm_mon + 1;
    local_1e = *(undefined2 *)&param_3->tm_mday;
    local_1c = *(undefined2 *)&param_3->tm_hour;
    local_1a = *(undefined2 *)&param_3->tm_min;
    local_18 = *(undefined2 *)&param_3->tm_sec;
    local_16 = 0;
    local_14 = (*local_10)(param_6->ww_caltype,0,&local_24,_Str1,0,0);
    if (local_14 != 0) {
      if ((int)(local_14 + 8U) < 0x401) {
        ppcVar5 = (char **)&stack0xffffffd0;
        if (&stack0x00000000 != (undefined *)0x30) {
          unaff_EDI = (uint *)0xcccc;
          ppcVar5 = (char **)&stack0xffffffd0;
LAB_00a5667f:
          ppcVar5 = ppcVar5 + 2;
        }
      }
      else {
        ppcVar5 = (char **)_malloc(local_14 + 8U);
        if (ppcVar5 != (char **)0x0) {
          *ppcVar5 = (char *)0xdddd;
          goto LAB_00a5667f;
        }
      }
      local_c = ppcVar5;
      if (ppcVar5 != (char **)0x0) {
        iVar2 = (*local_10)(param_6->ww_caltype,0,&local_24,_Str1,ppcVar5,local_14);
        while ((iVar2 = iVar2 + -1, 0 < iVar2 && (*param_5 != 0))) {
          local_14 = iVar2;
          **param_4 = *(char *)ppcVar5;
          *param_4 = *param_4 + 1;
          ppcVar5 = (char **)((int)ppcVar5 + 1);
          *param_5 = *param_5 - 1;
        }
        __freea(local_c);
LAB_00a566d1:
        iVar2 = ___security_check_cookie_4();
        return iVar2;
      }
    }
  }
  cVar1 = *_Str1;
joined_r0x00a566e7:
  if ((cVar1 == (code)0x0) || (*param_5 == 0)) goto LAB_00a566d1;
  local_c = (char **)0x0;
  local_10 = _Str1;
  uVar4 = 0;
  do {
    uVar3 = uVar4;
    local_10 = local_10 + 1;
    uVar4 = uVar3 + 1;
  } while (*local_10 == cVar1);
  iVar2 = (int)(char)cVar1;
  if (iVar2 < 0x65) {
    if (iVar2 == 100) {
      if (uVar3 == 0) {
        local_c = (char **)0x1;
      }
      else {
joined_r0x00a5686a:
        if ((uVar3 != 1) && (uVar3 != 2)) {
joined_r0x00a56870:
          if (uVar3 != 3) goto LAB_00a5673b;
        }
      }
      goto LAB_00a569d2;
    }
    if (iVar2 != 0x27) {
      if (iVar2 == 0x41) {
LAB_00a567c3:
        iVar2 = ___ascii_stricmp((char *)_Str1,"am/pm");
        if (iVar2 == 0) {
          local_10 = _Str1 + 5;
        }
        else {
          iVar2 = ___ascii_stricmp((char *)_Str1,"a/p");
          if (iVar2 == 0) {
            local_10 = _Str1 + 3;
          }
        }
      }
      else if (iVar2 == 0x48) {
        if (uVar3 != 0) goto joined_r0x00a569c2;
        local_c = (char **)0x1;
      }
      else {
        if (iVar2 != 0x4d) {
          if (iVar2 != 0x61) goto LAB_00a5673b;
          goto LAB_00a567c3;
        }
        if (uVar3 != 0) goto joined_r0x00a5686a;
        local_c = (char **)0x1;
      }
      goto LAB_00a569d2;
    }
    _Str1 = _Str1 + uVar4;
    if ((uVar4 & 1) != 0) {
      cVar1 = *_Str1;
      if (cVar1 == (code)0x0) goto LAB_00a566d1;
      do {
        if (*param_5 == 0) break;
        if (cVar1 == (code)0x27) {
          _Str1 = _Str1 + 1;
          break;
        }
        iVar2 = __isleadbyte_l((int)(char)cVar1,param_1);
        pcVar6 = _Str1;
        if ((iVar2 != 0) && (1 < *param_5)) {
          pcVar6 = _Str1 + 1;
          if (*pcVar6 == (code)0x0) goto LAB_00a566d1;
          **param_4 = (char)*_Str1;
          *param_4 = *param_4 + 1;
          *param_5 = *param_5 - 1;
        }
        **param_4 = (char)*pcVar6;
        *param_4 = *param_4 + 1;
        _Str1 = pcVar6 + 1;
        *param_5 = *param_5 - 1;
        cVar1 = *_Str1;
      } while (cVar1 != (code)0x0);
    }
  }
  else {
    if (iVar2 == 0x68) {
      if (uVar3 == 0) {
        local_c = (char **)0x1;
      }
      else {
joined_r0x00a569c2:
        if (uVar4 != 2) {
LAB_00a5673b:
          iVar2 = __isleadbyte_l(iVar2,param_1);
          pcVar6 = _Str1;
          if ((iVar2 != 0) && (1 < *param_5)) {
            pcVar6 = _Str1 + 1;
            if (*pcVar6 == (code)0x0) goto LAB_00a566d1;
            **param_4 = (char)*_Str1;
            *param_4 = *param_4 + 1;
            *param_5 = *param_5 - 1;
          }
          **param_4 = (char)*pcVar6;
          *param_4 = *param_4 + 1;
          *param_5 = *param_5 - 1;
          _Str1 = pcVar6 + 1;
          goto LAB_00a56772;
        }
      }
    }
    else if (iVar2 == 0x6d) {
      if (uVar3 != 0) goto joined_r0x00a569c2;
      local_c = (char **)0x1;
    }
    else if (iVar2 == 0x73) {
      if (uVar3 != 0) goto joined_r0x00a569c2;
      local_c = (char **)0x1;
    }
    else {
      if (iVar2 == 0x74) {
        if (param_3->tm_hour < 0xc) {
          pcVar8 = param_6->ampm[0];
        }
        else {
          pcVar8 = param_6->ampm[1];
        }
        if ((uVar4 == 1) && (*param_5 != 0)) {
          iVar2 = __isleadbyte_l((int)*pcVar8,param_1);
          pcVar7 = pcVar8;
          if ((iVar2 != 0) && (1 < *param_5)) {
            pcVar7 = pcVar8 + 1;
            if (*pcVar7 == '\0') goto LAB_00a566d1;
            **param_4 = *pcVar8;
            *param_4 = *param_4 + 1;
            *param_5 = *param_5 - 1;
          }
          **param_4 = *pcVar7;
          *param_4 = *param_4 + 1;
          *param_5 = *param_5 - 1;
          _Str1 = local_10;
          goto LAB_00a56772;
        }
        while ((_Str1 = local_10, *pcVar8 != '\0' && (*param_5 != 0))) {
          iVar2 = __isleadbyte_l((int)*pcVar8,param_1);
          pcVar7 = pcVar8;
          if ((iVar2 != 0) && (1 < *param_5)) {
            pcVar7 = pcVar8 + 1;
            if (*pcVar7 == '\0') goto LAB_00a566d1;
            **param_4 = *pcVar8;
            *param_4 = *param_4 + 1;
            *param_5 = *param_5 - 1;
          }
          **param_4 = *pcVar7;
          *param_4 = *param_4 + 1;
          pcVar8 = pcVar7 + 1;
          *param_5 = *param_5 - 1;
        }
        goto LAB_00a56772;
      }
      if (iVar2 != 0x79) goto LAB_00a5673b;
      if (uVar3 != 1) goto joined_r0x00a56870;
    }
LAB_00a569d2:
    iVar2 = _expandtime(param_1,(char)param_5,(tm *)param_6,local_c,unaff_EDI,unaff_ESI,unaff_EBX);
    _Str1 = local_10;
    if (iVar2 == 0) goto LAB_00a566d1;
  }
LAB_00a56772:
  cVar1 = *_Str1;
  goto joined_r0x00a566e7;
}



// Library Function - Single Match
//  __Strftime_l
// 
// Library: Visual Studio 2008 Release

int __Strftime_l(char *param_1,uint param_2,char *param_3,int param_4,tm *param_5,
                localeinfo_struct *param_6)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  uint unaff_EBX;
  uint *unaff_ESI;
  char *pcVar4;
  __lc_time_data *unaff_EDI;
  localeinfo_struct local_24;
  int local_1c;
  char local_18;
  char *local_14;
  tm *local_10;
  int local_c;
  uint local_8;
  
  local_c = 0;
  local_14 = param_1;
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_24,param_6);
  if (param_1 == (char *)0x0) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_18 != '\0') {
      *(uint *)(local_1c + 0x70) = *(uint *)(local_1c + 0x70) & 0xfffffffd;
    }
    return 0;
  }
  if (param_2 == 0) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_18 != '\0') {
      *(uint *)(local_1c + 0x70) = *(uint *)(local_1c + 0x70) & 0xfffffffd;
    }
    return 0;
  }
  *param_1 = '\0';
  if (param_3 != (char *)0x0) {
    if (param_5 == (tm *)0x0) {
      param_5 = (tm *)local_24.locinfo[1].lc_category[0].wrefcount;
    }
    local_8 = param_2;
    local_10 = param_5;
    if (param_2 != 0) {
      do {
        cVar1 = *param_3;
        if (cVar1 == '\0') break;
        if (cVar1 == '%') {
          if (param_4 == 0) goto LAB_00a56b75;
          pcVar4 = param_3 + 1;
          cVar1 = *pcVar4;
          if (cVar1 == '#') {
            pcVar4 = param_3 + 2;
          }
          iVar3 = _expandtime(&local_24,(char)&local_8,local_10,(char **)(uint)(cVar1 == '#'),
                              unaff_ESI,unaff_EDI,unaff_EBX);
          if (iVar3 == 0) {
            if (local_8 != 0) {
              local_c = 1;
            }
            goto LAB_00a56b4b;
          }
        }
        else {
          iVar3 = __isleadbyte_l((int)cVar1,&local_24);
          pcVar4 = param_3;
          if ((iVar3 != 0) && (1 < local_8)) {
            pcVar4 = param_3 + 1;
            if (*pcVar4 == '\0') {
              local_c = 1;
              goto LAB_00a56b4b;
            }
            *param_1 = *param_3;
            param_1 = param_1 + 1;
            local_8 = local_8 - 1;
          }
          *param_1 = *pcVar4;
          param_1 = param_1 + 1;
          local_8 = local_8 - 1;
        }
        param_3 = pcVar4 + 1;
      } while (local_8 != 0);
      if (local_8 != 0) {
        *param_1 = '\0';
        if (local_18 == '\0') {
          return param_2 - local_8;
        }
        *(uint *)(local_1c + 0x70) = *(uint *)(local_1c + 0x70) & 0xfffffffd;
        return param_2 - local_8;
      }
    }
LAB_00a56b4b:
    *local_14 = '\0';
    if ((local_c == 0) && (local_8 == 0)) {
      piVar2 = __errno();
      *piVar2 = 0x22;
      goto LAB_00a56b8d;
    }
  }
LAB_00a56b75:
  piVar2 = __errno();
  *piVar2 = 0x16;
  __invalid_parameter(0,0,0,0,0);
LAB_00a56b8d:
  if (local_18 != '\0') {
    *(uint *)(local_1c + 0x70) = *(uint *)(local_1c + 0x70) & 0xfffffffd;
  }
  return 0;
}



// Library Function - Single Match
//  __Strftime
// 
// Library: Visual Studio 2008 Release

size_t __cdecl __Strftime(char *param_1,size_t _Maxsize,char *param_3,tm *param_4,void *param_5)

{
  size_t sVar1;
  
  sVar1 = __Strftime_l(param_1,_Maxsize,param_3,param_4,param_5,0);
  return sVar1;
}



// Library Function - Single Match
//  _strcat_s
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl _strcat_s(char *_Dst,rsize_t _SizeInBytes,char *_Src)

{
  char cVar1;
  int *piVar2;
  char *pcVar3;
  errno_t eVar4;
  
  if ((_Dst != (char *)0x0) && (_SizeInBytes != 0)) {
    pcVar3 = _Dst;
    if (_Src != (char *)0x0) {
      do {
        if (*pcVar3 == '\0') break;
        pcVar3 = pcVar3 + 1;
        _SizeInBytes = _SizeInBytes - 1;
      } while (_SizeInBytes != 0);
      if (_SizeInBytes != 0) {
        do {
          cVar1 = *_Src;
          *pcVar3 = cVar1;
          pcVar3 = pcVar3 + 1;
          _Src = _Src + 1;
          if (cVar1 == '\0') break;
          _SizeInBytes = _SizeInBytes - 1;
        } while (_SizeInBytes != 0);
        if (_SizeInBytes != 0) {
          return 0;
        }
        *_Dst = '\0';
        piVar2 = __errno();
        eVar4 = 0x22;
        *piVar2 = 0x22;
        goto LAB_00a56be2;
      }
    }
    *_Dst = '\0';
  }
  piVar2 = __errno();
  eVar4 = 0x16;
  *piVar2 = 0x16;
LAB_00a56be2:
  __invalid_parameter(0,0,0,0,0);
  return eVar4;
}



// Library Function - Single Match
//  _TranslateName
// 
// Library: Visual Studio 2008 Release

bool _TranslateName(int param_1,int param_2,char **param_3)

{
  char **ppcVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar3 = 0;
  iVar2 = 1;
  if (-1 < param_2) {
    do {
      if (iVar2 == 0) break;
      iVar4 = (param_2 + iVar3) / 2;
      ppcVar1 = (char **)(param_1 + iVar4 * 8);
      iVar2 = __stricmp(*param_3,*ppcVar1);
      if (iVar2 == 0) {
        *param_3 = (char *)(ppcVar1 + 1);
      }
      else if (iVar2 < 0) {
        param_2 = iVar4 + -1;
      }
      else {
        iVar3 = iVar4 + 1;
      }
    } while (iVar3 <= param_2);
  }
  return iVar2 == 0;
}



// Library Function - Single Match
//  _ProcessCodePage
// 
// Library: Visual Studio 2008 Release

void __fastcall _ProcessCodePage(CHAR *param_1)

{
  int iVar1;
  int unaff_EDI;
  CHAR local_10 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  if (((param_1 == (char *)0x0) || (*param_1 == '\0')) ||
     (iVar1 = _strcmp(param_1,"ACP"), iVar1 == 0)) {
    iVar1 = GetLocaleInfoA(*(LCID *)(unaff_EDI + 0x1c),0x1004,local_10,8);
    if (iVar1 == 0) goto LAB_00a56cf5;
    iVar1 = _strcmp(local_10,"0");
    if (iVar1 == 0) {
      GetACP();
      goto LAB_00a56cf5;
    }
LAB_00a56ceb:
    param_1 = local_10;
  }
  else {
    iVar1 = _strcmp(param_1,"OCP");
    if (iVar1 == 0) {
      iVar1 = GetLocaleInfoA(*(LCID *)(unaff_EDI + 0x1c),0xb,local_10,8);
      if (iVar1 == 0) goto LAB_00a56cf5;
      goto LAB_00a56ceb;
    }
  }
  _atol(param_1);
LAB_00a56cf5:
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  _TestDefaultCountry
// 
// Library: Visual Studio 2008 Release

undefined4 _TestDefaultCountry(short param_1)

{
  uint uVar1;
  
  uVar1 = 0;
  do {
    if (param_1 == *(short *)((int)&DAT_00da2658 + uVar1)) {
      return 0;
    }
    uVar1 = uVar1 + 2;
  } while (uVar1 < 0x14);
  return 1;
}



// Library Function - Single Match
//  _LcidFromHexString
// 
// Library: Visual Studio 2008 Release

int __fastcall _LcidFromHexString(undefined4 param_1,char *param_2)

{
  char cVar1;
  int iVar2;
  
  iVar2 = 0;
  while (cVar1 = *param_2, cVar1 != '\0') {
    param_2 = param_2 + 1;
    if ((byte)(cVar1 + 0x9fU) < 6) {
      cVar1 = cVar1 + -0x27;
    }
    else if ((byte)(cVar1 + 0xbfU) < 6) {
      cVar1 = cVar1 + -7;
    }
    iVar2 = iVar2 * 0x10 + -0x30 + (int)cVar1;
  }
  return iVar2;
}



// Library Function - Single Match
//  _GetPrimaryLen
// 
// Library: Visual Studio 2008 Release

int __fastcall _GetPrimaryLen(undefined4 param_1,char *param_2)

{
  char cVar1;
  int iVar2;
  
  iVar2 = 0;
  while( true ) {
    cVar1 = *param_2;
    param_2 = param_2 + 1;
    if (((cVar1 < 'A') || ('Z' < cVar1)) && (0x19 < (byte)(cVar1 + 0x9fU))) break;
    iVar2 = iVar2 + 1;
  }
  return iVar2;
}



// Library Function - Single Match
//  _CountryEnumProc@4
// 
// Library: Visual Studio 2008 Release

void _CountryEnumProc_4(void)

{
  int *piVar1;
  _ptiddata p_Var2;
  LCID Locale;
  int iVar3;
  CHAR local_80 [120];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  p_Var2 = __getptd();
  Locale = _LcidFromHexString();
  iVar3 = GetLocaleInfoA(Locale,(-(uint)((p_Var2->_setloc_data).bAbbrevCountry != 0) & 0xfffff005) +
                                0x1002,local_80,0x78);
  if (iVar3 == 0) {
    (p_Var2->_setloc_data).iLocState = 0;
  }
  else {
    iVar3 = __stricmp((char *)(p_Var2->_setloc_data).pchCountry,local_80);
    if ((iVar3 == 0) && (iVar3 = _TestDefaultCountry(Locale), iVar3 != 0)) {
      piVar1 = &(p_Var2->_setloc_data).iLocState;
      *piVar1 = *piVar1 | 4;
      *(LCID *)(p_Var2->_setloc_data)._cachein = Locale;
      (p_Var2->_setloc_data)._cachecp = Locale;
    }
  }
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  _TestDefaultLanguage
// 
// Library: Visual Studio 2008 Release

void __thiscall _TestDefaultLanguage(char **param_1_00,uint param_1,int param_2)

{
  char *_Str;
  int iVar1;
  uint uVar2;
  CHAR local_80 [120];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  iVar1 = GetLocaleInfoA(param_1 & 0x3ff | 0x400,1,local_80,0x78);
  if (((iVar1 != 0) && (uVar2 = _LcidFromHexString(), param_1 != uVar2)) && (param_2 != 0)) {
    _Str = *param_1_00;
    _GetPrimaryLen();
    _strlen(_Str);
  }
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  _LangCountryEnumProc@4
// 
// Library: Visual Studio 2008 Release

void _LangCountryEnumProc_4(void)

{
  int *piVar1;
  _ptiddata p_Var2;
  LCID Locale;
  int iVar3;
  size_t sVar4;
  _setloc_struct *p_Var5;
  undefined8 uVar6;
  undefined4 uVar7;
  CHAR local_80 [120];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  p_Var2 = __getptd();
  p_Var5 = &p_Var2->_setloc_data;
  Locale = _LcidFromHexString();
  iVar3 = GetLocaleInfoA(Locale,(-(uint)((p_Var2->_setloc_data).bAbbrevCountry != 0) & 0xfffff005) +
                                0x1002,local_80,0x78);
  if (iVar3 == 0) {
LAB_00a56f0c:
    (p_Var2->_setloc_data).iLocState = 0;
    goto LAB_00a5707a;
  }
  iVar3 = __stricmp((char *)(p_Var2->_setloc_data).pchCountry,local_80);
  if (iVar3 == 0) {
    iVar3 = GetLocaleInfoA(Locale,(-(uint)((p_Var2->_setloc_data).bAbbrevLanguage != 0) & 0xfffff002
                                  ) + 0x1001,local_80,0x78);
    if (iVar3 == 0) goto LAB_00a56f0c;
    iVar3 = __stricmp((char *)p_Var5->pchLanguage,local_80);
    if (iVar3 == 0) {
      piVar1 = &(p_Var2->_setloc_data).iLocState;
      *piVar1 = *piVar1 | 0x304;
      (p_Var2->_setloc_data)._cachecp = Locale;
LAB_00a56fbc:
      *(LCID *)(p_Var2->_setloc_data)._cachein = Locale;
    }
    else if ((*(byte *)&(p_Var2->_setloc_data).iLocState & 2) == 0) {
      sVar4 = (p_Var2->_setloc_data).iPrimaryLen;
      if ((sVar4 == 0) ||
         (iVar3 = __strnicmp((char *)p_Var5->pchLanguage,local_80,sVar4), iVar3 != 0)) {
        if (((p_Var2->_setloc_data).iLocState & 1U) == 0) {
          uVar6 = _TestDefaultCountry(Locale);
          if ((int)uVar6 != 0) {
            (p_Var2->_setloc_data).iLocState = (uint)((ulonglong)uVar6 >> 0x20) | 1;
            goto LAB_00a56fbc;
          }
        }
      }
      else {
        piVar1 = &(p_Var2->_setloc_data).iLocState;
        *piVar1 = *piVar1 | 2;
        *(LCID *)(p_Var2->_setloc_data)._cachein = Locale;
        sVar4 = _strlen((char *)p_Var5->pchLanguage);
        if (sVar4 == (p_Var2->_setloc_data).iPrimaryLen) {
          (p_Var2->_setloc_data)._cachecp = Locale;
        }
      }
    }
  }
  if (((p_Var2->_setloc_data).iLocState & 0x300U) == 0x300) goto LAB_00a5707a;
  iVar3 = GetLocaleInfoA(Locale,(-(uint)((p_Var2->_setloc_data).bAbbrevLanguage != 0) & 0xfffff002)
                                + 0x1001,local_80,0x78);
  if (iVar3 == 0) goto LAB_00a56f0c;
  iVar3 = __stricmp((char *)p_Var5->pchLanguage,local_80);
  if (iVar3 == 0) {
    piVar1 = &(p_Var2->_setloc_data).iLocState;
    *piVar1 = *piVar1 | 0x200;
    if ((p_Var2->_setloc_data).bAbbrevLanguage == 0) {
      if (((p_Var2->_setloc_data).iPrimaryLen != 0) &&
         (sVar4 = _strlen((char *)p_Var5->pchLanguage), sVar4 == (p_Var2->_setloc_data).iPrimaryLen)
         ) {
        uVar7 = 1;
        goto LAB_00a57052;
      }
      goto LAB_00a57060;
    }
    (p_Var2->_setloc_data).iLocState = (p_Var2->_setloc_data).iLocState | 0x100;
  }
  else {
    if ((((p_Var2->_setloc_data).bAbbrevLanguage != 0) || ((p_Var2->_setloc_data).iPrimaryLen == 0))
       || (iVar3 = __stricmp((char *)p_Var5->pchLanguage,local_80), iVar3 != 0)) goto LAB_00a5707a;
    uVar7 = 0;
LAB_00a57052:
    iVar3 = _TestDefaultLanguage(Locale,uVar7);
    if (iVar3 == 0) goto LAB_00a5707a;
LAB_00a57060:
    piVar1 = &(p_Var2->_setloc_data).iLocState;
    *piVar1 = *piVar1 | 0x100;
  }
  if ((p_Var2->_setloc_data)._cachecp == 0) {
    (p_Var2->_setloc_data)._cachecp = Locale;
  }
LAB_00a5707a:
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  _LanguageEnumProc@4
// 
// Library: Visual Studio 2008 Release

void _LanguageEnumProc_4(void)

{
  int *piVar1;
  _ptiddata p_Var2;
  LCID Locale;
  int iVar3;
  undefined4 uVar4;
  CHAR local_80 [120];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  p_Var2 = __getptd();
  Locale = _LcidFromHexString();
  iVar3 = GetLocaleInfoA(Locale,(-(uint)((p_Var2->_setloc_data).bAbbrevLanguage != 0) & 0xfffff002)
                                + 0x1001,local_80,0x78);
  if (iVar3 == 0) {
    (p_Var2->_setloc_data).iLocState = 0;
    goto LAB_00a5713c;
  }
  iVar3 = __stricmp((char *)(p_Var2->_setloc_data).pchLanguage,local_80);
  if (iVar3 == 0) {
    if ((p_Var2->_setloc_data).bAbbrevLanguage == 0) {
      uVar4 = 1;
      goto LAB_00a57119;
    }
  }
  else {
    if ((((p_Var2->_setloc_data).bAbbrevLanguage != 0) || ((p_Var2->_setloc_data).iPrimaryLen == 0))
       || (iVar3 = __stricmp((char *)(p_Var2->_setloc_data).pchLanguage,local_80), iVar3 != 0))
    goto LAB_00a5713c;
    uVar4 = 0;
LAB_00a57119:
    iVar3 = _TestDefaultLanguage(Locale,uVar4);
    if (iVar3 == 0) goto LAB_00a5713c;
  }
  piVar1 = &(p_Var2->_setloc_data).iLocState;
  *piVar1 = *piVar1 | 4;
  (p_Var2->_setloc_data)._cachecp = Locale;
  *(LCID *)(p_Var2->_setloc_data)._cachein = Locale;
LAB_00a5713c:
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  _GetLcidFromLangCountry
// 
// Library: Visual Studio 2008 Release

void _GetLcidFromLangCountry(void)

{
  size_t sVar1;
  char *pcVar2;
  char **unaff_ESI;
  
  sVar1 = _strlen(*unaff_ESI);
  unaff_ESI[4] = (char *)(uint)(sVar1 == 3);
  sVar1 = _strlen(unaff_ESI[1]);
  unaff_ESI[6] = (char *)0x0;
  unaff_ESI[5] = (char *)(uint)(sVar1 == 3);
  if (unaff_ESI[4] == (char *)0x0) {
    pcVar2 = (char *)_GetPrimaryLen();
  }
  else {
    pcVar2 = (char *)0x2;
  }
  unaff_ESI[3] = pcVar2;
  EnumSystemLocalesA(_LangCountryEnumProc_4,1);
  pcVar2 = unaff_ESI[2];
  if (((((uint)pcVar2 & 0x100) == 0) || (((uint)pcVar2 & 0x200) == 0)) || (((uint)pcVar2 & 7) == 0))
  {
    unaff_ESI[2] = (char *)0x0;
  }
  return;
}



// Library Function - Single Match
//  _GetLcidFromLanguage
// 
// Library: Visual Studio 2008 Release

void _GetLcidFromLanguage(void)

{
  size_t sVar1;
  char *pcVar2;
  char **unaff_ESI;
  
  sVar1 = _strlen(*unaff_ESI);
  unaff_ESI[4] = (char *)(uint)(sVar1 == 3);
  if ((char *)(uint)(sVar1 == 3) == (char *)0x0) {
    pcVar2 = (char *)_GetPrimaryLen();
  }
  else {
    pcVar2 = (char *)0x2;
  }
  unaff_ESI[3] = pcVar2;
  EnumSystemLocalesA(_LanguageEnumProc_4,1);
  if ((*(byte *)(unaff_ESI + 2) & 4) == 0) {
    unaff_ESI[2] = (char *)0x0;
  }
  return;
}



// Library Function - Single Match
//  ___get_qualified_locale
// 
// Library: Visual Studio 2008 Release

BOOL __cdecl ___get_qualified_locale(LPLC_STRINGS _LpInStr,UINT *_LpCodePage,LPLC_STRINGS _LpOutStr)

{
  int *piVar1;
  wchar_t **ppwVar2;
  wchar_t *pwVar3;
  _ptiddata p_Var4;
  size_t sVar5;
  LCID LVar6;
  uint _Value;
  BOOL BVar7;
  errno_t eVar8;
  int iVar9;
  _setloc_struct *p_Var10;
  
  p_Var4 = __getptd();
  p_Var10 = &p_Var4->_setloc_data;
  if (_LpInStr == (LPLC_STRINGS)0x0) {
    piVar1 = &(p_Var4->_setloc_data).iLocState;
    *piVar1 = *piVar1 | 0x104;
LAB_00a572d4:
    LVar6 = GetUserDefaultLCID();
    (p_Var4->_setloc_data)._cachecp = LVar6;
    *(LCID *)(p_Var4->_setloc_data)._cachein = LVar6;
  }
  else {
    pwVar3 = _LpInStr->szLanguage + 0x20;
    ppwVar2 = &(p_Var4->_setloc_data).pchCountry;
    p_Var10->pchLanguage = _LpInStr->szLanguage;
    *ppwVar2 = pwVar3;
    if ((pwVar3 != (wchar_t *)0x0) && (*(char *)pwVar3 != '\0')) {
      _TranslateName(&PTR_s_america_00da25a0,0x16,ppwVar2);
    }
    (p_Var4->_setloc_data).iLocState = 0;
    if ((p_Var10->pchLanguage == (wchar_t *)0x0) || (*(char *)p_Var10->pchLanguage == '\0')) {
      pwVar3 = *ppwVar2;
      if ((pwVar3 == (wchar_t *)0x0) || (*(char *)pwVar3 == '\0')) {
        (p_Var4->_setloc_data).iLocState = 0x104;
        goto LAB_00a572d4;
      }
      sVar5 = _strlen((char *)pwVar3);
      (p_Var4->_setloc_data).bAbbrevCountry = (uint)(sVar5 == 3);
      EnumSystemLocalesA(_CountryEnumProc_4,1);
      if ((*(byte *)&(p_Var4->_setloc_data).iLocState & 4) == 0) {
        (p_Var4->_setloc_data).iLocState = 0;
      }
    }
    else {
      if ((*ppwVar2 == (wchar_t *)0x0) || (*(char *)*ppwVar2 == '\0')) {
        _GetLcidFromLanguage();
      }
      else {
        _GetLcidFromLangCountry();
      }
      if ((p_Var4->_setloc_data).iLocState != 0) goto LAB_00a572ea;
      iVar9 = _TranslateName(&PTR_s_american_00da2398,0x40,p_Var10);
      if (iVar9 != 0) {
        if ((*ppwVar2 == (wchar_t *)0x0) || (*(char *)*ppwVar2 == '\0')) {
          _GetLcidFromLanguage();
        }
        else {
          _GetLcidFromLangCountry();
        }
      }
    }
  }
  if ((p_Var4->_setloc_data).iLocState == 0) {
    return 0;
  }
LAB_00a572ea:
  _Value = _ProcessCodePage();
  if ((((_Value == 0) || (_Value == 65000)) || (_Value == 0xfde9)) ||
     ((BVar7 = IsValidCodePage(_Value & 0xffff), BVar7 == 0 ||
      (BVar7 = IsValidLocale((p_Var4->_setloc_data)._cachecp,1), BVar7 == 0)))) {
    return 0;
  }
  if (_LpCodePage != (UINT *)0x0) {
    *(undefined2 *)_LpCodePage = *(undefined2 *)&(p_Var4->_setloc_data)._cachecp;
    *(wchar_t *)((int)_LpCodePage + 2) = (p_Var4->_setloc_data)._cachein[0];
    *(short *)(_LpCodePage + 1) = (short)_Value;
  }
  if (_LpOutStr != (LPLC_STRINGS)0x0) {
    if (*(short *)_LpCodePage == 0x814) {
      eVar8 = _strcpy_s((char *)_LpOutStr,0x40,"Norwegian-Nynorsk");
      if (eVar8 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
    }
    else {
      iVar9 = GetLocaleInfoA((p_Var4->_setloc_data)._cachecp,0x1001,(LPSTR)_LpOutStr,0x40);
      if (iVar9 == 0) {
        return 0;
      }
    }
    iVar9 = GetLocaleInfoA(*(LCID *)(p_Var4->_setloc_data)._cachein,0x1002,
                           (LPSTR)(_LpOutStr->szLanguage + 0x20),0x40);
    if (iVar9 == 0) {
      return 0;
    }
    __itoa_s(_Value,(char *)_LpOutStr->szCountry,0x10,10);
  }
  return 1;
}



// Library Function - Single Match
//  _memcmp
// 
// Library: Visual Studio 2008 Release

int __cdecl _memcmp(void *_Buf1,void *_Buf2,size_t _Size)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  
  if (_Size == 0) {
    return 0;
  }
  if (_Size == 1) {
                    // WARNING: Load size is inaccurate
    uVar2 = (uint)*_Buf1;
                    // WARNING: Load size is inaccurate
    uVar3 = (uint)*_Buf2;
LAB_00a58939:
    if (uVar2 == uVar3) {
      return 0;
    }
    return (uint)(0 < (int)(uVar2 - uVar3)) * 2 + -1;
  }
  if (_Size == 2) {
                    // WARNING: Load size is inaccurate
    uVar2 = (uint)*_Buf1;
                    // WARNING: Load size is inaccurate
    uVar3 = (uint)*_Buf2;
    if ((uVar2 != uVar3) &&
       (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
      return iVar1;
    }
    uVar2 = (uint)*(byte *)((int)_Buf1 + 1);
    uVar3 = (uint)*(byte *)((int)_Buf2 + 1);
    goto LAB_00a58939;
  }
  if (_Size == 3) {
                    // WARNING: Load size is inaccurate
    uVar2 = (uint)*_Buf1;
                    // WARNING: Load size is inaccurate
    uVar3 = (uint)*_Buf2;
    if ((uVar2 != uVar3) &&
       (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
      return iVar1;
    }
    uVar2 = (uint)*(byte *)((int)_Buf1 + 1);
    uVar3 = (uint)*(byte *)((int)_Buf2 + 1);
    if ((uVar2 != uVar3) &&
       (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
      return iVar1;
    }
    uVar2 = (uint)*(byte *)((int)_Buf1 + 2);
    uVar3 = (uint)*(byte *)((int)_Buf2 + 2);
    goto LAB_00a58939;
  }
  if (_Size == 4) {
                    // WARNING: Load size is inaccurate
    uVar2 = (uint)*_Buf1;
                    // WARNING: Load size is inaccurate
    uVar3 = (uint)*_Buf2;
    if ((uVar2 != uVar3) &&
       (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
      return iVar1;
    }
    uVar2 = (uint)*(byte *)((int)_Buf1 + 1);
    uVar3 = (uint)*(byte *)((int)_Buf2 + 1);
    if ((uVar2 != uVar3) &&
       (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
      return iVar1;
    }
    uVar2 = (uint)*(byte *)((int)_Buf1 + 2);
    uVar3 = (uint)*(byte *)((int)_Buf2 + 2);
    if ((uVar2 != uVar3) &&
       (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
      return iVar1;
    }
    uVar2 = (uint)*(byte *)((int)_Buf1 + 3);
    uVar3 = (uint)*(byte *)((int)_Buf2 + 3);
    goto LAB_00a58939;
  }
  for (; 0x1f < _Size; _Size = _Size - 0x20) {
                    // WARNING: Load size is inaccurate
                    // WARNING: Load size is inaccurate
    if (*_Buf1 == *_Buf2) {
      iVar1 = 0;
    }
    else {
                    // WARNING: Load size is inaccurate
      uVar3 = (uint)*_Buf1;
                    // WARNING: Load size is inaccurate
      uVar2 = (uint)*_Buf2;
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 1);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 1);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 2);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 2);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + 3) - (uint)*(byte *)((int)_Buf2 + 3);
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
    if (*(int *)((int)_Buf1 + 4) == *(int *)((int)_Buf2 + 4)) {
      iVar1 = 0;
    }
    else {
      uVar3 = (uint)*(byte *)((int)_Buf1 + 4);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 4);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 5);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 5);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 6);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 6);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + 7) - (uint)*(byte *)((int)_Buf2 + 7);
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
    if (*(int *)((int)_Buf1 + 8) == *(int *)((int)_Buf2 + 8)) {
      iVar1 = 0;
    }
    else {
      uVar3 = (uint)*(byte *)((int)_Buf1 + 8);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 8);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 9);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 9);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 10);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 10);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + 0xb) - (uint)*(byte *)((int)_Buf2 + 0xb);
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
    if (*(int *)((int)_Buf1 + 0xc) == *(int *)((int)_Buf2 + 0xc)) {
      iVar1 = 0;
    }
    else {
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0xc);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0xc);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0xd);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0xd);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0xe);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0xe);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + 0xf) - (uint)*(byte *)((int)_Buf2 + 0xf);
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
    if (*(int *)((int)_Buf1 + 0x10) == *(int *)((int)_Buf2 + 0x10)) {
      iVar1 = 0;
    }
    else {
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0x10);
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0x10);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0x11);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0x11);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0x12);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0x12);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + 0x13) - (uint)*(byte *)((int)_Buf2 + 0x13);
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
    if (*(int *)((int)_Buf1 + 0x14) == *(int *)((int)_Buf2 + 0x14)) {
      iVar1 = 0;
    }
    else {
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0x14);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0x14);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0x15);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0x15);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0x16);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0x16);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + 0x17) - (uint)*(byte *)((int)_Buf2 + 0x17);
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
    if (*(int *)((int)_Buf1 + 0x18) == *(int *)((int)_Buf2 + 0x18)) {
      iVar1 = 0;
    }
    else {
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0x18);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0x18);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0x19);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0x19);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0x1a);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0x1a);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + 0x1b) - (uint)*(byte *)((int)_Buf2 + 0x1b);
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
    if (*(int *)((int)_Buf1 + 0x1c) == *(int *)((int)_Buf2 + 0x1c)) {
      iVar1 = 0;
    }
    else {
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0x1c);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0x1c);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0x1d);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0x1d);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + 0x1e);
      uVar2 = (uint)*(byte *)((int)_Buf2 + 0x1e);
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + 0x1f) - (uint)*(byte *)((int)_Buf2 + 0x1f);
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
    _Buf1 = (void *)((int)_Buf1 + 0x20);
    _Buf2 = (void *)((int)_Buf2 + 0x20);
  }
  switch(_Size) {
  default:
    goto switchD_00a578a7_caseD_0;
  case 1:
    goto switchD_00a578a7_caseD_1;
  case 2:
    goto switchD_00a578a7_caseD_2;
  case 3:
    goto switchD_00a578a7_caseD_3;
  case 4:
    goto switchD_00a578a7_caseD_4;
  case 5:
    goto switchD_00a578a7_caseD_5;
  case 6:
    goto switchD_00a578a7_caseD_6;
  case 7:
    goto switchD_00a578a7_caseD_7;
  case 8:
    goto switchD_00a578a7_caseD_8;
  case 9:
    goto switchD_00a578a7_caseD_9;
  case 10:
    goto switchD_00a578a7_caseD_a;
  case 0xb:
    goto switchD_00a578a7_caseD_b;
  case 0xc:
    goto switchD_00a578a7_caseD_c;
  case 0xd:
    goto switchD_00a578a7_caseD_d;
  case 0xe:
    goto switchD_00a578a7_caseD_e;
  case 0xf:
    goto switchD_00a578a7_caseD_f;
  case 0x10:
    goto switchD_00a578a7_caseD_10;
  case 0x11:
    goto switchD_00a578a7_caseD_11;
  case 0x12:
    goto switchD_00a578a7_caseD_12;
  case 0x13:
    goto switchD_00a578a7_caseD_13;
  case 0x14:
    goto switchD_00a578a7_caseD_14;
  case 0x15:
    goto switchD_00a578a7_caseD_15;
  case 0x16:
    goto switchD_00a578a7_caseD_16;
  case 0x17:
    goto switchD_00a578a7_caseD_17;
  case 0x18:
    goto switchD_00a578a7_caseD_18;
  case 0x1a:
    goto switchD_00a578a7_caseD_1a;
  case 0x1b:
    goto switchD_00a578a7_caseD_1b;
  case 0x1c:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x1c));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x1c))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1c));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x1b));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1b));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x1a));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1a));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x19)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0x19));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_18:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x18));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x18))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x18));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x17));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x17));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x16));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x16));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x15)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0x15));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_14:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x14));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x14))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x14));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x13));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x13));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x12));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x12));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x11)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0x11));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_10:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x10));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x10))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x10));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xf));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xf));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xe));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xe));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xd)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0xd));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_c:
    if (*(int *)((int)_Buf1 + (_Size - 0xc)) == *(int *)((int)_Buf2 + (_Size - 0xc))) {
      iVar1 = 0;
    }
    else {
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xc));
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xc));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xb));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xb));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 10));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 10));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 9)) - (uint)*(byte *)((int)_Buf2 + (_Size - 9));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_8:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 8));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 8))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 8));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 7));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 7));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 6));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 6));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 5)) - (uint)*(byte *)((int)_Buf2 + (_Size - 5));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 == 0) {
switchD_00a578a7_caseD_4:
      uVar2 = *(uint *)((int)_Buf1 + (_Size - 4));
      if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 4))) {
        iVar1 = 0;
      }
      else {
        uVar2 = uVar2 & 0xff;
        uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 4));
        if ((uVar2 == uVar3) ||
           (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 == 0)) {
          uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 3));
          uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 3));
          if ((uVar3 == uVar2) ||
             (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 == 0)) {
            uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 2));
            uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 2));
            if (((uVar3 == uVar2) ||
                (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 == 0))
               && (iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 1)) -
                           (uint)*(byte *)((int)_Buf2 + (_Size - 1)), iVar1 != 0)) {
              iVar1 = (uint)(0 < iVar1) * 2 + -1;
            }
          }
        }
      }
      if (iVar1 == 0) {
switchD_00a578a7_caseD_0:
        iVar1 = 0;
      }
    }
    return iVar1;
  case 0x1d:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x1d));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x1d))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1d));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x1c));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1c));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x1b));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1b));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x1a)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0x1a));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
  case 0x19:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x19));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x19))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x19));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x18));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x18));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x17));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x17));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x16)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0x16));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_15:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x15));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x15))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x15));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x14));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x14));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x13));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x13));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x12)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0x12));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_11:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x11));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x11))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x11));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x10));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x10));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xf));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xf));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xe)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0xe));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_d:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0xd));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0xd))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xd));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xc));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xc));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xb));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xb));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 10)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 10));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_9:
    if (*(int *)((int)_Buf1 + (_Size - 9)) == *(int *)((int)_Buf2 + (_Size - 9))) {
      iVar1 = 0;
    }
    else {
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 9));
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 9));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 8));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 8));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 7));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 7));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 6)) - (uint)*(byte *)((int)_Buf2 + (_Size - 6));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_5:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 5));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 5))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 5));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 4));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 4));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 3));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 3));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 2)) - (uint)*(byte *)((int)_Buf2 + (_Size - 2));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_1:
    uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 1));
    uVar2 = (uint)*(byte *)((int)_Buf1 + (_Size - 1));
    if (uVar2 == uVar3) {
      return 0;
    }
    return (uint)(0 < (int)(uVar2 - uVar3)) * 2 + -1;
  case 0x1e:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x1e));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x1e))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1e));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x1d));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1d));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x1c));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1c));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x1b)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0x1b));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_1a:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x1a));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x1a))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1a));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x19));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x19));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x18));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x18));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x17)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0x17));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_16:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x16));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x16))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x16));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x15));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x15));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x14));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x14));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x13)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0x13));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_12:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x12));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x12))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x12));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x11));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x11));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x10));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x10));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xf)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0xf));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_e:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0xe));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0xe))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xe));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xd));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xd));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xc));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xc));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xb)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0xb));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_a:
    if (*(int *)((int)_Buf1 + (_Size - 10)) == *(int *)((int)_Buf2 + (_Size - 10))) {
      iVar1 = 0;
    }
    else {
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 10));
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 10));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 9));
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 9));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 8));
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 8));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 7)) - (uint)*(byte *)((int)_Buf2 + (_Size - 7));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_6:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 6));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 6))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 6));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 5));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 5));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 4));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 4));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 3)) - (uint)*(byte *)((int)_Buf2 + (_Size - 3));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_2:
    if (*(short *)((int)_Buf1 + (_Size - 2)) != *(short *)((int)_Buf2 + (_Size - 2))) {
LAB_00a5848d:
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 2));
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 2));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      goto switchD_00a578a7_caseD_1;
    }
    goto switchD_00a578a7_caseD_0;
  case 0x1f:
    if (*(int *)((int)_Buf1 + (_Size - 0x1f)) == *(int *)((int)_Buf2 + (_Size - 0x1f))) {
      iVar1 = 0;
    }
    else {
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1f));
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x1f));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x1e));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1e));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x1d));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1d));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x1c)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0x1c));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_1b:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x1b));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x1b))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1b));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x1a));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x1a));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x19));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x19));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x18)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0x18));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_17:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x17));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x17))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x17));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x16));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x16));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x15));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x15));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x14)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0x14));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_13:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0x13));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0x13))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x13));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x12));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x12));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x11));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0x11));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0x10)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0x10));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_f:
    if (*(int *)((int)_Buf1 + (_Size - 0xf)) == *(int *)((int)_Buf2 + (_Size - 0xf))) {
      iVar1 = 0;
    }
    else {
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xf));
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xf));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xe));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xe));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xd));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xd));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 0xc)) -
              (uint)*(byte *)((int)_Buf2 + (_Size - 0xc));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_b:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 0xb));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 0xb))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 0xb));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 10));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 10));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 9));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 9));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 8)) - (uint)*(byte *)((int)_Buf2 + (_Size - 8));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_7:
    uVar2 = *(uint *)((int)_Buf1 + (_Size - 7));
    if (uVar2 == *(uint *)((int)_Buf2 + (_Size - 7))) {
      iVar1 = 0;
    }
    else {
      uVar2 = uVar2 & 0xff;
      uVar3 = (uint)*(byte *)((int)_Buf2 + (_Size - 7));
      if ((uVar2 != uVar3) &&
         (iVar1 = (uint)(uVar2 != uVar3 && -1 < (int)(uVar2 - uVar3)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 6));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 6));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 5));
      uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 5));
      if ((uVar3 != uVar2) &&
         (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
        return iVar1;
      }
      iVar1 = (uint)*(byte *)((int)_Buf1 + (_Size - 4)) - (uint)*(byte *)((int)_Buf2 + (_Size - 4));
      if (iVar1 != 0) {
        iVar1 = (uint)(0 < iVar1) * 2 + -1;
      }
    }
    if (iVar1 != 0) {
      return iVar1;
    }
switchD_00a578a7_caseD_3:
    uVar3 = (uint)*(byte *)((int)_Buf1 + (_Size - 3));
    uVar2 = (uint)*(byte *)((int)_Buf2 + (_Size - 3));
    if ((uVar3 != uVar2) &&
       (iVar1 = (uint)(uVar3 != uVar2 && -1 < (int)(uVar3 - uVar2)) * 2 + -1, iVar1 != 0)) {
      return iVar1;
    }
    goto LAB_00a5848d;
  }
}



// WARNING: Function: __alloca_probe_16 replaced with injection: alloca_probe
// Library Function - Single Match
//  int __cdecl __crtGetStringTypeA_stat(struct localeinfo_struct *,unsigned long,char const
// *,int,unsigned short *,int,int,int)
// 
// Library: Visual Studio 2008 Release

int __cdecl
__crtGetStringTypeA_stat
          (localeinfo_struct *param_1,ulong param_2,char *param_3,int param_4,ushort *param_5,
          int param_6,int param_7,int param_8)

{
  uint _Size;
  BOOL BVar1;
  DWORD DVar2;
  uint cchWideChar;
  undefined4 *puVar3;
  int iVar4;
  ushort *puVar5;
  int *in_ECX;
  undefined4 *lpWideCharStr;
  void *_Memory;
  int *local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_c = in_ECX;
  if (DAT_032ebc44 == 0) {
    BVar1 = GetStringTypeW(1,(LPCWSTR)&PTR_03065574,1,(LPWORD)&local_c);
    if (BVar1 == 0) {
      DVar2 = GetLastError();
      if (DVar2 == 0x78) {
        DAT_032ebc44 = 2;
      }
      goto LAB_00a58abb;
    }
    DAT_032ebc44 = 1;
  }
  else {
LAB_00a58abb:
    if ((DAT_032ebc44 == 2) || (DAT_032ebc44 == 0)) {
      _Memory = (void *)0x0;
      if (param_6 == 0) {
        param_6 = *(int *)(*in_ECX + 0x14);
      }
      if (param_5 == (ushort *)0x0) {
        param_5 = *(ushort **)(*in_ECX + 4);
      }
      puVar5 = (ushort *)___ansicp(param_6);
      if ((puVar5 != (ushort *)0xffffffff) &&
         (((puVar5 == param_5 ||
           (_Memory = (void *)___convertcp(param_5,puVar5,param_2,&param_3,0,0),
           param_2 = (ulong)_Memory, _Memory != (void *)0x0)) &&
          (GetStringTypeA(param_6,(DWORD)param_1,(LPCSTR)param_2,(int)param_3,(LPWORD)param_4),
          _Memory != (void *)0x0)))) {
        _free(_Memory);
      }
      goto LAB_00a58c08;
    }
    if (DAT_032ebc44 != 1) goto LAB_00a58c08;
  }
  local_c = (int *)0x0;
  if (param_5 == (ushort *)0x0) {
    param_5 = *(ushort **)(*in_ECX + 4);
  }
  cchWideChar = MultiByteToWideChar((UINT)param_5,(uint)(param_7 != 0) * 8 + 1,(LPCSTR)param_2,
                                    (int)param_3,(LPWSTR)0x0,0);
  if (cchWideChar == 0) goto LAB_00a58c08;
  lpWideCharStr = (undefined4 *)0x0;
  if ((0 < (int)cchWideChar) && (cchWideChar < 0x7ffffff1)) {
    _Size = cchWideChar * 2 + 8;
    if (_Size < 0x401) {
      puVar3 = (undefined4 *)&stack0xffffffe8;
      lpWideCharStr = (undefined4 *)&stack0xffffffe8;
      if (&stack0x00000000 != (undefined *)0x18) {
LAB_00a58b4b:
        lpWideCharStr = puVar3 + 2;
      }
    }
    else {
      puVar3 = (undefined4 *)_malloc(_Size);
      lpWideCharStr = puVar3;
      if (puVar3 != (undefined4 *)0x0) {
        *puVar3 = 0xdddd;
        goto LAB_00a58b4b;
      }
    }
  }
  if (lpWideCharStr != (undefined4 *)0x0) {
    _memset(lpWideCharStr,0,cchWideChar * 2);
    iVar4 = MultiByteToWideChar((UINT)param_5,1,(LPCSTR)param_2,(int)param_3,(LPWSTR)lpWideCharStr,
                                cchWideChar);
    if (iVar4 != 0) {
      local_c = (int *)GetStringTypeW((DWORD)param_1,(LPCWSTR)lpWideCharStr,iVar4,(LPWORD)param_4);
    }
    __freea(lpWideCharStr);
  }
LAB_00a58c08:
  iVar4 = ___security_check_cookie_4();
  return iVar4;
}



// Library Function - Single Match
//  ___crtGetStringTypeA
// 
// Library: Visual Studio 2008 Release

BOOL __cdecl
___crtGetStringTypeA
          (_locale_t _Plocinfo,DWORD _DWInfoType,LPCSTR _LpSrcStr,int _CchSrc,LPWORD _LpCharType,
          int _Code_page,BOOL _BError)

{
  int iVar1;
  int in_stack_00000020;
  int in_stack_ffffffec;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&stack0xffffffec,_Plocinfo);
  iVar1 = __crtGetStringTypeA_stat
                    ((localeinfo_struct *)_DWInfoType,(ulong)_LpSrcStr,(char *)_CchSrc,
                     (int)_LpCharType,(ushort *)_Code_page,_BError,in_stack_00000020,
                     in_stack_ffffffec);
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return iVar1;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __calloc_impl
// 
// Library: Visual Studio 2008 Release

void * __calloc_impl(uint param_1,uint param_2,undefined4 *param_3)

{
  int *piVar1;
  int iVar2;
  void *_Dst;
  uint dwBytes;
  
  if ((param_1 == 0) || (param_2 <= 0xffffffe0 / param_1)) {
    param_1 = param_1 * param_2;
    dwBytes = param_1;
    if (param_1 == 0) {
      dwBytes = 1;
    }
    do {
      _Dst = (void *)0x0;
      if (dwBytes < 0xffffffe1) {
        if ((DAT_032f181c == 3) && (dwBytes = dwBytes + 0xf & 0xfffffff0, param_1 <= DAT_032f180c))
        {
          __lock(4);
          _Dst = (void *)___sbh_alloc_block(param_1);
          FUN_00a58d58();
          if (_Dst != (void *)0x0) {
            _memset(_Dst,0,param_1);
            goto LAB_00a58d0d;
          }
        }
        else {
LAB_00a58d0d:
          if (_Dst != (void *)0x0) {
            return _Dst;
          }
        }
        _Dst = HeapAlloc(DAT_032eb654,8,dwBytes);
      }
      if (_Dst != (void *)0x0) {
        return _Dst;
      }
      if (DAT_032ebc38 == 0) {
        if (param_3 == (undefined4 *)0x0) {
          return (void *)0x0;
        }
        *param_3 = 0xc;
        return (void *)0x0;
      }
      iVar2 = __callnewh(dwBytes);
    } while (iVar2 != 0);
    if (param_3 != (undefined4 *)0x0) {
      *param_3 = 0xc;
    }
  }
  else {
    piVar1 = __errno();
    *piVar1 = 0xc;
    __invalid_parameter(0,0,0,0,0);
  }
  return (void *)0x0;
}



void FUN_00a58d58(void)

{
  FUN_00a4d824(4);
  return;
}



// Library Function - Single Match
//  __recalloc
// 
// Library: Visual Studio 2008 Release

void * __cdecl __recalloc(void *_Memory,size_t _Count,size_t _Size)

{
  int *piVar1;
  void *pvVar2;
  uint _NewSize;
  size_t sVar3;
  
  sVar3 = 0;
  if ((_Count == 0) || (_Size <= 0xffffffe0 / _Count)) {
    _NewSize = _Count * _Size;
    if (_Memory != (void *)0x0) {
      sVar3 = __msize(_Memory);
    }
    pvVar2 = _realloc(_Memory,_NewSize);
    if ((pvVar2 != (void *)0x0) && (sVar3 < _NewSize)) {
      _memset((void *)(sVar3 + (int)pvVar2),0,_NewSize - sVar3);
    }
  }
  else {
    piVar1 = __errno();
    *piVar1 = 0xc;
    __invalid_parameter(0,0,0,0,0);
    pvVar2 = (void *)0x0;
  }
  return pvVar2;
}



// Library Function - Single Match
//  __initp_misc_winsig
// 
// Library: Visual Studio 2008 Release

void __initp_misc_winsig(undefined4 param_1)

{
  DAT_032ebc48 = param_1;
  DAT_032ebc4c = param_1;
  DAT_032ebc50 = param_1;
  DAT_032ebc54 = param_1;
  return;
}



void FUN_00a58e8e(void)

{
  FUN_00a4d824();
  return;
}



// Library Function - Single Match
//  _siglookup
// 
// Library: Visual Studio 2008 Release

uint __fastcall _siglookup(undefined4 param_1_00,int param_2,uint param_1)

{
  uint uVar1;
  
  uVar1 = param_1;
  do {
    if (*(int *)(uVar1 + 4) == param_2) break;
    uVar1 = uVar1 + 0xc;
  } while (uVar1 < DAT_0324018c * 0xc + param_1);
  if ((DAT_0324018c * 0xc + param_1 <= uVar1) || (*(int *)(uVar1 + 4) != param_2)) {
    uVar1 = 0;
  }
  return uVar1;
}



// Library Function - Single Match
//  ___get_sigabrt
// 
// Library: Visual Studio 2008 Release

_PHNDLR __cdecl ___get_sigabrt(void)

{
  _PHNDLR p_Var1;
  
  p_Var1 = (_PHNDLR)__decode_pointer(DAT_032ebc50);
  return p_Var1;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _signal
// 
// Library: Visual Studio 2008 Release

void __cdecl _signal(int param_1)

{
  bool bVar1;
  _ptiddata p_Var2;
  void *pvVar3;
  BOOL BVar4;
  ulong *puVar5;
  DWORD DVar6;
  int *piVar7;
  int in_stack_00000008;
  
  bVar1 = false;
  if ((in_stack_00000008 == 4) || (in_stack_00000008 == 3)) goto LAB_00a590f3;
  if (((param_1 != 2) && (((param_1 != 0x15 && (param_1 != 0x16)) && (param_1 != 6)))) &&
     (param_1 != 0xf)) {
    if ((((param_1 == 8) || (param_1 == 4)) || (param_1 == 0xb)) &&
       (p_Var2 = __getptd_noexit(), p_Var2 != (_ptiddata)0x0)) {
      if ((undefined *)p_Var2->_pxcptacttab == &DAT_00da1d48) {
        pvVar3 = __malloc_crt(DAT_03240188);
        p_Var2->_pxcptacttab = pvVar3;
        if (pvVar3 == (void *)0x0) goto LAB_00a590f3;
        _memcpy(pvVar3,&DAT_00da1d48,DAT_03240188);
      }
      pvVar3 = (void *)_siglookup(p_Var2->_pxcptacttab);
      if (pvVar3 != (void *)0x0) {
        if (in_stack_00000008 == 2) {
          return;
        }
        do {
          if (*(int *)((int)pvVar3 + 4) != param_1) {
            return;
          }
          *(int *)((int)pvVar3 + 8) = in_stack_00000008;
          pvVar3 = (void *)((int)pvVar3 + 0xc);
        } while (pvVar3 < (void *)(DAT_0324018c * 0xc + (int)p_Var2->_pxcptacttab));
        return;
      }
    }
    goto LAB_00a590f3;
  }
  __lock(0);
  if (((param_1 == 2) || (param_1 == 0x15)) && (DAT_032ebc58 == 0)) {
    BVar4 = SetConsoleCtrlHandler((PHANDLER_ROUTINE)&LAB_00a58e13,1);
    if (BVar4 == 1) {
      DAT_032ebc58 = 1;
    }
    else {
      puVar5 = ___doserrno();
      DVar6 = GetLastError();
      *puVar5 = DVar6;
      bVar1 = true;
    }
  }
  if (param_1 == 2) {
    __decode_pointer(DAT_032ebc48);
    if (in_stack_00000008 != 2) {
      DAT_032ebc48 = __encode_pointer(in_stack_00000008);
    }
  }
  else if (param_1 == 6) {
LAB_00a5904f:
    __decode_pointer(DAT_032ebc50);
    if (in_stack_00000008 != 2) {
      DAT_032ebc50 = __encode_pointer(in_stack_00000008);
    }
  }
  else if (param_1 == 0xf) {
    __decode_pointer(DAT_032ebc54);
    if (in_stack_00000008 != 2) {
      DAT_032ebc54 = __encode_pointer(in_stack_00000008);
    }
  }
  else if (param_1 == 0x15) {
    __decode_pointer(DAT_032ebc4c);
    if (in_stack_00000008 != 2) {
      DAT_032ebc4c = __encode_pointer(in_stack_00000008);
    }
  }
  else if (param_1 == 0x16) goto LAB_00a5904f;
  FUN_00a590ea();
  if (!bVar1) {
    return;
  }
LAB_00a590f3:
  if ((((param_1 != 1) && (param_1 != 3)) && (param_1 != 0xd)) &&
     ((param_1 < 0x10 || (0x11 < param_1)))) {
    piVar7 = __errno();
    *piVar7 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  return;
}



void FUN_00a590ea(void)

{
  FUN_00a4d824(0);
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _raise
// 
// Library: Visual Studio 2008 Release

int __cdecl _raise(int _SigNum)

{
  int iVar1;
  int *piVar2;
  undefined4 uVar3;
  code *pcVar4;
  code *pcVar5;
  code **ppcVar6;
  _ptiddata p_Var7;
  int local_34;
  void *local_30;
  int local_28;
  int local_20;
  
  p_Var7 = (_ptiddata)0x0;
  local_20 = 0;
  if (_SigNum < 0xc) {
    if (_SigNum != 0xb) {
      if (_SigNum == 2) {
        ppcVar6 = (code **)&DAT_032ebc48;
        uVar3 = DAT_032ebc48;
        goto LAB_00a591e4;
      }
      if (_SigNum != 4) {
        if (_SigNum == 6) goto LAB_00a591c2;
        if (_SigNum != 8) goto LAB_00a591a6;
      }
    }
    p_Var7 = __getptd_noexit();
    if (p_Var7 == (_ptiddata)0x0) {
      return -1;
    }
    iVar1 = _siglookup(p_Var7->_pxcptacttab);
    ppcVar6 = (code **)(iVar1 + 8);
    pcVar4 = *ppcVar6;
  }
  else {
    if (_SigNum == 0xf) {
      ppcVar6 = (code **)&DAT_032ebc54;
      uVar3 = DAT_032ebc54;
    }
    else if (_SigNum == 0x15) {
      ppcVar6 = (code **)&DAT_032ebc4c;
      uVar3 = DAT_032ebc4c;
    }
    else {
      if (_SigNum != 0x16) {
LAB_00a591a6:
        piVar2 = __errno();
        *piVar2 = 0x16;
        __invalid_parameter(0,0,0,0,0);
        return -1;
      }
LAB_00a591c2:
      ppcVar6 = (code **)&DAT_032ebc50;
      uVar3 = DAT_032ebc50;
    }
LAB_00a591e4:
    local_20 = 1;
    pcVar4 = (code *)__decode_pointer(uVar3);
  }
  iVar1 = 0;
  if (pcVar4 == (code *)0x1) {
    return 0;
  }
  if (pcVar4 == (code *)0x0) {
    iVar1 = __exit(3);
  }
  if (local_20 != iVar1) {
    __lock(iVar1);
  }
  if (((_SigNum == 8) || (_SigNum == 0xb)) || (_SigNum == 4)) {
    local_30 = p_Var7->_tpxcptinfoptrs;
    p_Var7->_tpxcptinfoptrs = (void *)0x0;
    if (_SigNum == 8) {
      local_34 = p_Var7->_tfpecode;
      p_Var7->_tfpecode = 0x8c;
      goto LAB_00a59248;
    }
  }
  else {
LAB_00a59248:
    if (_SigNum == 8) {
      for (local_28 = DAT_03240180; local_28 < DAT_03240184 + DAT_03240180; local_28 = local_28 + 1)
      {
        *(undefined4 *)(local_28 * 0xc + 8 + (int)p_Var7->_pxcptacttab) = 0;
      }
      goto LAB_00a59282;
    }
  }
  pcVar5 = (code *)__encoded_null();
  *ppcVar6 = pcVar5;
LAB_00a59282:
  FUN_00a592a3();
  if (_SigNum == 8) {
    (*pcVar4)(8,p_Var7->_tfpecode);
  }
  else {
    (*pcVar4)(_SigNum);
    if ((_SigNum != 0xb) && (_SigNum != 4)) {
      return 0;
    }
  }
  p_Var7->_tpxcptinfoptrs = local_30;
  if (_SigNum == 8) {
    p_Var7->_tfpecode = local_34;
  }
  return 0;
}



void FUN_00a592a3(void)

{
  int unaff_EBP;
  
  if (*(int *)(unaff_EBP + -0x1c) != 0) {
    FUN_00a4d824(0);
  }
  return;
}



// Library Function - Single Match
//  int __cdecl _ValidateRead(void const *,unsigned int)
// 
// Library: Visual Studio 2008 Release

int __cdecl _ValidateRead(void *param_1,uint param_2)

{
  return (uint)(param_1 != (void *)0x0);
}



// Library Function - Single Match
//  ___ansicp
// 
// Library: Visual Studio 2008 Release

void ___ansicp(LCID param_1)

{
  int iVar1;
  CHAR local_10 [6];
  undefined local_a;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_a = 0;
  iVar1 = GetLocaleInfoA(param_1,0x1004,local_10,6);
  if (iVar1 != 0) {
    _atol(local_10);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe_16 replaced with injection: alloca_probe
// Library Function - Single Match
//  ___convertcp
// 
// Library: Visual Studio 2008 Release

void ___convertcp(UINT param_1,UINT param_2,char *param_3,uint *param_4,LPSTR param_5,int param_6)

{
  uint _Size;
  uint cbMultiByte;
  bool bVar1;
  BOOL BVar2;
  size_t sVar3;
  undefined4 *puVar4;
  int iVar5;
  LPSTR lpMultiByteStr;
  uint uVar6;
  bool bVar7;
  undefined4 *local_20;
  _cpinfo local_1c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  cbMultiByte = *param_4;
  bVar1 = false;
  if (param_1 == param_2) goto LAB_00a594dc;
  BVar2 = GetCPInfo(param_1,&local_1c);
  if ((((BVar2 == 0) || (local_1c.MaxCharSize != 1)) ||
      (BVar2 = GetCPInfo(param_2,&local_1c), BVar2 == 0)) || (local_1c.MaxCharSize != 1)) {
    uVar6 = MultiByteToWideChar(param_1,1,param_3,cbMultiByte,(LPWSTR)0x0,0);
    bVar7 = uVar6 == 0;
    if (bVar7) goto LAB_00a594dc;
  }
  else {
    bVar1 = true;
    uVar6 = cbMultiByte;
    if (cbMultiByte == 0xffffffff) {
      sVar3 = _strlen(param_3);
      uVar6 = sVar3 + 1;
    }
    bVar7 = uVar6 == 0;
  }
  if ((bVar7 || (int)uVar6 < 0) || (0x7ffffff0 < uVar6)) {
    local_20 = (undefined4 *)0x0;
  }
  else {
    _Size = uVar6 * 2 + 8;
    if (_Size < 0x401) {
      puVar4 = (undefined4 *)&stack0xffffffbc;
      local_20 = (undefined4 *)&stack0xffffffbc;
      if (&stack0x00000000 != (undefined *)0x44) {
LAB_00a5941c:
        local_20 = puVar4 + 2;
      }
    }
    else {
      puVar4 = (undefined4 *)_malloc(_Size);
      local_20 = puVar4;
      if (puVar4 != (undefined4 *)0x0) {
        *puVar4 = 0xdddd;
        goto LAB_00a5941c;
      }
    }
  }
  if (local_20 != (undefined4 *)0x0) {
    _memset(local_20,0,uVar6 * 2);
    iVar5 = MultiByteToWideChar(param_1,1,param_3,cbMultiByte,(LPWSTR)local_20,uVar6);
    if (iVar5 != 0) {
      if (param_5 == (LPSTR)0x0) {
        if (((bVar1) ||
            (uVar6 = WideCharToMultiByte(param_2,0,(LPCWSTR)local_20,uVar6,(LPSTR)0x0,0,(LPCSTR)0x0,
                                         (LPBOOL)0x0), uVar6 != 0)) &&
           (lpMultiByteStr = (LPSTR)__calloc_crt(1,uVar6), lpMultiByteStr != (LPSTR)0x0)) {
          uVar6 = WideCharToMultiByte(param_2,0,(LPCWSTR)local_20,uVar6,lpMultiByteStr,uVar6,
                                      (LPCSTR)0x0,(LPBOOL)0x0);
          if (uVar6 == 0) {
            _free(lpMultiByteStr);
          }
          else if (cbMultiByte != 0xffffffff) {
            *param_4 = uVar6;
          }
        }
      }
      else {
        WideCharToMultiByte(param_2,0,(LPCWSTR)local_20,uVar6,param_5,param_6,(LPCSTR)0x0,
                            (LPBOOL)0x0);
      }
    }
    __freea(local_20);
  }
LAB_00a594dc:
  ___security_check_cookie_4();
  return;
}



// WARNING: This is an inlined function
// WARNING: Function: __alloca_probe replaced with injection: alloca_probe
// Library Function - Single Match
//  __alloca_probe_16
// 
// Library: Visual Studio 2008 Release

uint __alloca_probe_16(void)

{
  uint in_EAX;
  uint uVar1;
  
  uVar1 = 4 - in_EAX & 0xf;
  return in_EAX + uVar1 | -(uint)CARRY4(in_EAX,uVar1);
}



// WARNING: This is an inlined function
// WARNING: Function: __alloca_probe replaced with injection: alloca_probe
// Library Function - Single Match
//  __alloca_probe_8
// 
// Library: Visual Studio

uint __alloca_probe_8(void)

{
  uint in_EAX;
  uint uVar1;
  
  uVar1 = 4 - in_EAX & 7;
  return in_EAX + uVar1 | -(uint)CARRY4(in_EAX,uVar1);
}



// Library Function - Single Match
//  __fltin2
// 
// Library: Visual Studio 2008 Release

FLT __cdecl __fltin2(FLT _Flt,char *_Str,_locale_t _Locale)

{
  INTRNCVT_STATUS IVar1;
  FLT p_Var2;
  uint uVar3;
  _locale_t in_stack_00000018;
  char *local_28;
  char *local_24;
  undefined4 local_20;
  undefined4 local_1c;
  uint local_18;
  _LDBL12 local_14;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_24 = _Str;
  uVar3 = 0;
  local_18 = ___strgtold12_l(&local_14,&local_28,_Str,0,0,0,0,in_stack_00000018);
  if ((local_18 & 4) == 0) {
    IVar1 = __ld12tod(&local_14,(_CRT_DOUBLE *)&local_20);
    if (((local_18 & 2) != 0) || (IVar1 == INTRNCVT_OVERFLOW)) {
      uVar3 = 0x80;
    }
    if (((local_18 & 1) != 0) || (IVar1 == INTRNCVT_UNDERFLOW)) {
      uVar3 = uVar3 | 0x100;
    }
  }
  else {
    uVar3 = 0x200;
    local_20 = 0;
    local_1c = 0;
  }
  _Flt->nbytes = (int)local_28 - (int)local_24;
  *(undefined4 *)&_Flt->dval = local_20;
  *(undefined4 *)((int)&_Flt->dval + 4) = local_1c;
  _Flt->flags = uVar3;
  p_Var2 = (FLT)___security_check_cookie_4();
  return p_Var2;
}



undefined * FUN_00a595c3(void)

{
  return &DAT_03240900;
}



undefined ** FUN_00a595c9(void)

{
  return &PTR_s_No_error_03240850;
}



// Library Function - Single Match
//  __ValidateImageBase
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

BOOL __cdecl __ValidateImageBase(PBYTE pImageBase)

{
  if ((*(short *)pImageBase == 0x5a4d) &&
     (*(int *)(pImageBase + *(int *)(pImageBase + 0x3c)) == 0x4550)) {
    return (uint)(*(short *)((int)(pImageBase + *(int *)(pImageBase + 0x3c)) + 0x18) == 0x10b);
  }
  return 0;
}



// Library Function - Single Match
//  __FindPESection
// 
// Library: Visual Studio 2008 Release

PIMAGE_SECTION_HEADER __cdecl __FindPESection(PBYTE pImageBase,DWORD_PTR rva)

{
  int iVar1;
  PIMAGE_SECTION_HEADER p_Var2;
  uint uVar3;
  
  iVar1 = *(int *)(pImageBase + 0x3c);
  uVar3 = 0;
  p_Var2 = (PIMAGE_SECTION_HEADER)
           (pImageBase + *(ushort *)(pImageBase + iVar1 + 0x14) + 0x18 + iVar1);
  if (*(ushort *)(pImageBase + iVar1 + 6) != 0) {
    do {
      if ((p_Var2->VirtualAddress <= rva) &&
         (rva < (p_Var2->Misc).PhysicalAddress + p_Var2->VirtualAddress)) {
        return p_Var2;
      }
      uVar3 = uVar3 + 1;
      p_Var2 = p_Var2 + 1;
    } while (uVar3 < *(ushort *)(pImageBase + iVar1 + 6));
  }
  return (PIMAGE_SECTION_HEADER)0x0;
}



// Library Function - Single Match
//  __IsNonwritableInCurrentImage
// 
// Library: Visual Studio 2008 Release

BOOL __cdecl __IsNonwritableInCurrentImage(PBYTE pTarget)

{
  BOOL BVar1;
  PIMAGE_SECTION_HEADER p_Var2;
  void *local_14;
  code *pcStack_10;
  uint local_c;
  undefined4 local_8;
  
  pcStack_10 = __except_handler4;
  local_14 = ExceptionList;
  local_c = DAT_0323f878 ^ 0x3111098;
  ExceptionList = &local_14;
  local_8 = 0;
  BVar1 = __ValidateImageBase((PBYTE)&IMAGE_DOS_HEADER_00400000);
  if (BVar1 != 0) {
    p_Var2 = __FindPESection((PBYTE)&IMAGE_DOS_HEADER_00400000,(DWORD_PTR)(pTarget + -0x400000));
    if (p_Var2 != (PIMAGE_SECTION_HEADER)0x0) {
      ExceptionList = local_14;
      return ~(p_Var2->Characteristics >> 0x1f) & 1;
    }
  }
  ExceptionList = local_14;
  return 0;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_00a5971d(undefined4 param_1)

{
  _DAT_032ebc5c = param_1;
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_00a5972c(undefined4 param_1)

{
  _DAT_032ebc60 = param_1;
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  ___crtInitCritSecAndSpinCount
// 
// Library: Visual Studio 2008 Release

BOOL ___crtInitCritSecAndSpinCount(LPCRITICAL_SECTION param_1,DWORD param_2)

{
  BOOL BVar1;
  
  BVar1 = InitializeCriticalSectionAndSpinCount(param_1,param_2);
  return BVar1;
}



// Library Function - Single Match
//  __wfltin2
// 
// Library: Visual Studio 2008 Release

FLT __cdecl __wfltin2(FLT _Fit,wchar_t *_Str,_locale_t _Locale)

{
  INTRNCVT_STATUS IVar1;
  FLT p_Var2;
  uint uVar3;
  _locale_t in_stack_00000018;
  wchar_t *local_28;
  wchar_t *local_24;
  undefined4 local_20;
  undefined4 local_1c;
  uint local_18;
  _LDBL12 local_14;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_24 = _Str;
  uVar3 = 0;
  local_18 = ___wstrgtold12_l(&local_14,&local_28,_Str,0,0,0,0,in_stack_00000018);
  if ((local_18 & 4) == 0) {
    IVar1 = __ld12tod(&local_14,(_CRT_DOUBLE *)&local_20);
    if (((local_18 & 2) != 0) || (IVar1 == INTRNCVT_OVERFLOW)) {
      uVar3 = 0x80;
    }
    if (((local_18 & 1) != 0) || (IVar1 == INTRNCVT_UNDERFLOW)) {
      uVar3 = uVar3 | 0x100;
    }
  }
  else {
    uVar3 = 0x200;
    local_20 = 0;
    local_1c = 0;
  }
  _Fit->nbytes = (int)local_28 - (int)local_24 >> 1;
  *(undefined4 *)&_Fit->dval = local_20;
  *(undefined4 *)((int)&_Fit->dval + 4) = local_1c;
  _Fit->flags = uVar3;
  p_Var2 = (FLT)___security_check_cookie_4();
  return p_Var2;
}



// Library Function - Single Match
//  __wchartodigit
// 
// Library: Visual Studio 2008 Release

int __wchartodigit(ushort param_1)

{
  int iVar1;
  ushort uVar2;
  
  if (param_1 < 0x30) {
    return -1;
  }
  if (param_1 < 0x3a) {
    return param_1 - 0x30;
  }
  iVar1 = 0xff10;
  if (param_1 < 0xff10) {
    iVar1 = 0x660;
    if (param_1 < 0x660) {
      return -1;
    }
    if (param_1 < 0x66a) goto LAB_00a5992f;
    iVar1 = 0x6f0;
    if (param_1 < 0x6f0) {
      return -1;
    }
    if (param_1 < 0x6fa) goto LAB_00a5992f;
    iVar1 = 0x966;
    if (param_1 < 0x966) {
      return -1;
    }
    if (param_1 < 0x970) goto LAB_00a5992f;
    iVar1 = 0x9e6;
    if (param_1 < 0x9e6) {
      return -1;
    }
    if (param_1 < 0x9f0) goto LAB_00a5992f;
    iVar1 = 0xa66;
    if (param_1 < 0xa66) {
      return -1;
    }
    if (param_1 < 0xa70) goto LAB_00a5992f;
    iVar1 = 0xae6;
    if (param_1 < 0xae6) {
      return -1;
    }
    if (param_1 < 0xaf0) goto LAB_00a5992f;
    iVar1 = 0xb66;
    if (param_1 < 0xb66) {
      return -1;
    }
    if (param_1 < 0xb70) goto LAB_00a5992f;
    iVar1 = 0xc66;
    if (param_1 < 0xc66) {
      return -1;
    }
    if (param_1 < 0xc70) goto LAB_00a5992f;
    iVar1 = 0xce6;
    if (param_1 < 0xce6) {
      return -1;
    }
    if (param_1 < 0xcf0) goto LAB_00a5992f;
    iVar1 = 0xd66;
    if (param_1 < 0xd66) {
      return -1;
    }
    if (param_1 < 0xd70) goto LAB_00a5992f;
    iVar1 = 0xe50;
    if (param_1 < 0xe50) {
      return -1;
    }
    if (param_1 < 0xe5a) goto LAB_00a5992f;
    iVar1 = 0xed0;
    if (param_1 < 0xed0) {
      return -1;
    }
    if (param_1 < 0xeda) goto LAB_00a5992f;
    iVar1 = 0xf20;
    if (param_1 < 0xf20) {
      return -1;
    }
    if (param_1 < 0xf2a) goto LAB_00a5992f;
    iVar1 = 0x1040;
    if (param_1 < 0x1040) {
      return -1;
    }
    if (param_1 < 0x104a) goto LAB_00a5992f;
    iVar1 = 0x17e0;
    if (param_1 < 0x17e0) {
      return -1;
    }
    if (param_1 < 0x17ea) goto LAB_00a5992f;
    iVar1 = 0x1810;
    if (param_1 < 0x1810) {
      return -1;
    }
    uVar2 = 0x181a;
  }
  else {
    uVar2 = 0xff1a;
  }
  if (uVar2 <= param_1) {
    return -1;
  }
LAB_00a5992f:
  return (uint)param_1 - iVar1;
}



// Library Function - Single Match
//  __mbsnbicoll_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __mbsnbicoll_l(uchar *_Str1,uchar *_Str2,size_t _MaxCount,_locale_t _Locale)

{
  int *piVar1;
  int iVar2;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
  if (_MaxCount == 0) {
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
    return 0;
  }
  if ((_Str1 == (uchar *)0x0) || (_Str2 == (uchar *)0x0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
    return 0x7fffffff;
  }
  if (_MaxCount < 0x80000000) {
    if ((local_14.mbcinfo)->ismbcodepage == 0) {
      iVar2 = __strnicoll_l((char *)_Str1,(char *)_Str2,_MaxCount,_Locale);
    }
    else {
      iVar2 = ___crtCompareStringA
                        (&local_14,*(LPCWSTR *)(local_14.mbcinfo)->mbulinfo,0x1001,(LPCSTR)_Str1,
                         _MaxCount,(LPCSTR)_Str2,_MaxCount,(local_14.mbcinfo)->mbcodepage);
      if (iVar2 == 0) goto LAB_00a59b89;
      iVar2 = iVar2 + -2;
    }
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
  }
  else {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
LAB_00a59b89:
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
    iVar2 = 0x7fffffff;
  }
  return iVar2;
}



// Library Function - Single Match
//  __mbsnbicoll
// 
// Library: Visual Studio 2008 Release

int __cdecl __mbsnbicoll(uchar *_Str1,uchar *_Str2,size_t _MaxCount)

{
  int iVar1;
  
  iVar1 = __mbsnbicoll_l(_Str1,_Str2,_MaxCount,(_locale_t)0x0);
  return iVar1;
}



// Library Function - Single Match
//  ___wtomb_environ
// 
// Library: Visual Studio 2008 Release

int __cdecl ___wtomb_environ(void)

{
  LPCWSTR lpWideCharStr;
  size_t _Count;
  int iVar1;
  LPCWSTR *ppWVar2;
  LPSTR local_8;
  
  local_8 = (LPSTR)0x0;
  lpWideCharStr = *DAT_032eb258;
  ppWVar2 = DAT_032eb258;
  while( true ) {
    if (lpWideCharStr == (LPCWSTR)0x0) {
      return 0;
    }
    _Count = WideCharToMultiByte(0,0,lpWideCharStr,-1,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0);
    if ((_Count == 0) || (local_8 = (LPSTR)__calloc_crt(_Count,1), local_8 == (LPSTR)0x0)) break;
    iVar1 = WideCharToMultiByte(0,0,*ppWVar2,-1,local_8,_Count,(LPCSTR)0x0,(LPBOOL)0x0);
    if (iVar1 == 0) {
      _free(local_8);
      return -1;
    }
    iVar1 = ___crtsetenv(&local_8,0);
    if ((iVar1 < 0) && (local_8 != (LPSTR)0x0)) {
      _free(local_8);
      local_8 = (LPSTR)0x0;
    }
    ppWVar2 = ppWVar2 + 1;
    lpWideCharStr = *ppWVar2;
  }
  return -1;
}



// Library Function - Single Match
//  __tsopen_nolock
// 
// Library: Visual Studio 2008 Release

int __tsopen_nolock(undefined4 *param_1,LPCSTR param_2,uint param_3,int param_4,byte param_5)

{
  byte *pbVar1;
  byte bVar2;
  uint *in_EAX;
  errno_t eVar3;
  uint uVar4;
  ulong *puVar5;
  int *piVar6;
  DWORD DVar7;
  long lVar8;
  int iVar9;
  HANDLE pvVar10;
  byte bVar11;
  int unaff_EDI;
  int iVar12;
  bool bVar13;
  longlong lVar14;
  _SECURITY_ATTRIBUTES local_34;
  uint local_24;
  HANDLE local_20;
  uint local_1c;
  DWORD local_18;
  uint local_14;
  uint local_10;
  uint local_c;
  char local_8;
  byte local_7;
  byte local_6;
  byte local_5;
  
  bVar13 = (param_3 & 0x80) == 0;
  local_24 = 0;
  local_6 = 0;
  local_34.nLength = 0xc;
  local_34.lpSecurityDescriptor = (LPVOID)0x0;
  if (bVar13) {
    local_5 = 0;
  }
  else {
    local_5 = 0x10;
  }
  local_34.bInheritHandle = (BOOL)bVar13;
  eVar3 = __get_fmode((int *)&local_24);
  if (eVar3 != 0) {
                    // WARNING: Subroutine does not return
    __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
  }
  if (((param_3 & 0x8000) == 0) && (((param_3 & 0x74000) != 0 || (local_24 != 0x8000)))) {
    local_5 = local_5 | 0x80;
  }
  uVar4 = param_3 & 3;
  if (uVar4 == 0) {
    local_c = 0x80000000;
  }
  else {
    if (uVar4 == 1) {
      if (((param_3 & 8) == 0) || ((param_3 & 0x70000) == 0)) {
        local_c = 0x40000000;
        goto LAB_00a59d2a;
      }
    }
    else if (uVar4 != 2) goto LAB_00a59ce6;
    local_c = 0xc0000000;
  }
LAB_00a59d2a:
  if (param_4 == 0x10) {
    local_14 = 0;
  }
  else if (param_4 == 0x20) {
    local_14 = 1;
  }
  else if (param_4 == 0x30) {
    local_14 = 2;
  }
  else if (param_4 == 0x40) {
    local_14 = 3;
  }
  else {
    if (param_4 != 0x80) goto LAB_00a59ce6;
    local_14 = (uint)(local_c == 0x80000000);
  }
  uVar4 = param_3 & 0x700;
  if (uVar4 < 0x401) {
    if ((uVar4 == 0x400) || (uVar4 == 0)) {
      local_18 = 3;
    }
    else if (uVar4 == 0x100) {
      local_18 = 4;
    }
    else {
      if (uVar4 == 0x200) goto LAB_00a59e2f;
      if (uVar4 != 0x300) goto LAB_00a59ce6;
      local_18 = 2;
    }
  }
  else {
    if (uVar4 != 0x500) {
      if (uVar4 == 0x600) {
LAB_00a59e2f:
        local_18 = 5;
        goto LAB_00a59dde;
      }
      if (uVar4 != 0x700) {
LAB_00a59ce6:
        puVar5 = ___doserrno();
        *puVar5 = 0;
        *in_EAX = 0xffffffff;
        piVar6 = __errno();
        *piVar6 = 0x16;
        __invalid_parameter(0,0,0,0,0);
        return 0x16;
      }
    }
    local_18 = 1;
  }
LAB_00a59dde:
  local_10 = 0x80;
  if (((param_3 & 0x100) != 0) && (-1 < (char)(~(byte)DAT_032eb240 & param_5))) {
    local_10 = 1;
  }
  if ((param_3 & 0x40) != 0) {
    local_10 = local_10 | 0x4000000;
    local_c = local_c | 0x10000;
    local_14 = local_14 | 4;
  }
  if ((param_3 & 0x1000) != 0) {
    local_10 = local_10 | 0x100;
  }
  if ((param_3 & 0x20) == 0) {
    if ((param_3 & 0x10) != 0) {
      local_10 = local_10 | 0x10000000;
    }
  }
  else {
    local_10 = local_10 | 0x8000000;
  }
  uVar4 = __alloc_osfhnd();
  *in_EAX = uVar4;
  if (uVar4 == 0xffffffff) {
    puVar5 = ___doserrno();
    *puVar5 = 0;
    *in_EAX = 0xffffffff;
    piVar6 = __errno();
    *piVar6 = 0x18;
    goto LAB_00a59ef7;
  }
  *param_1 = 1;
  local_20 = CreateFileA(param_2,local_c,local_14,&local_34,local_18,local_10,(HANDLE)0x0);
  if (local_20 == (HANDLE)0xffffffff) {
    if (((local_c & 0xc0000000) == 0xc0000000) && ((param_3 & 1) != 0)) {
      local_c = local_c & 0x7fffffff;
      local_20 = CreateFileA(param_2,local_c,local_14,&local_34,local_18,local_10,(HANDLE)0x0);
      if (local_20 != (HANDLE)0xffffffff) goto LAB_00a59f03;
    }
    pbVar1 = (byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 4 + (*in_EAX & 0x1f) * 0x40);
    *pbVar1 = *pbVar1 & 0xfe;
    DVar7 = GetLastError();
    __dosmaperr(DVar7);
    goto LAB_00a59ef7;
  }
LAB_00a59f03:
  DVar7 = GetFileType(local_20);
  if (DVar7 == 0) {
    pbVar1 = (byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 4 + (*in_EAX & 0x1f) * 0x40);
    *pbVar1 = *pbVar1 & 0xfe;
    DVar7 = GetLastError();
    __dosmaperr(DVar7);
    CloseHandle(local_20);
    if (DVar7 == 0) {
      piVar6 = __errno();
      *piVar6 = 0xd;
    }
    goto LAB_00a59ef7;
  }
  if (DVar7 == 2) {
    local_5 = local_5 | 0x40;
  }
  else if (DVar7 == 3) {
    local_5 = local_5 | 8;
  }
  __set_osfhnd(*in_EAX,(intptr_t)local_20);
  bVar11 = local_5 | 1;
  *(byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 4 + (*in_EAX & 0x1f) * 0x40) = bVar11;
  pbVar1 = (byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 0x24 + (*in_EAX & 0x1f) * 0x40);
  *pbVar1 = *pbVar1 & 0x80;
  local_7 = local_5 & 0x48;
  if (local_7 == 0) {
    bVar2 = local_5 & 0x80;
    local_5 = bVar11;
    if (bVar2 == 0) goto LAB_00a5a277;
    if ((param_3 & 2) == 0) goto LAB_00a5a03d;
    local_1c = __lseek_nolock(*in_EAX,-1,2);
    if (local_1c == 0xffffffff) {
      puVar5 = ___doserrno();
      bVar11 = local_5;
      if (*puVar5 == 0x83) goto LAB_00a5a03d;
    }
    else {
      local_8 = '\0';
      iVar12 = __read_nolock(*in_EAX,&local_8,1);
      if ((((iVar12 != 0) || (local_8 != '\x1a')) ||
          (iVar12 = __chsize_nolock(*in_EAX,CONCAT44(unaff_EDI,(int)local_1c >> 0x1f)), iVar12 != -1
          )) && (lVar8 = __lseek_nolock(*in_EAX,0,0), bVar11 = local_5, lVar8 != -1))
      goto LAB_00a5a03d;
    }
LAB_00a59ff0:
    __close_nolock(*in_EAX);
    goto LAB_00a59ef7;
  }
LAB_00a5a03d:
  local_5 = bVar11;
  if ((local_5 & 0x80) != 0) {
    if ((param_3 & 0x74000) == 0) {
      if ((local_24 & 0x74000) == 0) {
        param_3 = param_3 | 0x4000;
      }
      else {
        param_3 = param_3 | local_24 & 0x74000;
      }
    }
    uVar4 = param_3 & 0x74000;
    if (uVar4 == 0x4000) {
      local_6 = 0;
    }
    else if ((uVar4 == 0x10000) || (uVar4 == 0x14000)) {
      if ((param_3 & 0x301) == 0x301) goto LAB_00a5a0ac;
    }
    else if ((uVar4 == 0x20000) || (uVar4 == 0x24000)) {
LAB_00a5a0ac:
      local_6 = 2;
    }
    else if ((uVar4 == 0x40000) || (uVar4 == 0x44000)) {
      local_6 = 1;
    }
    if (((param_3 & 0x70000) != 0) && (local_1c = 0, (local_5 & 0x40) == 0)) {
      uVar4 = local_c & 0xc0000000;
      if (uVar4 == 0x40000000) {
        if (local_18 == 0) goto LAB_00a5a277;
        if (2 < local_18) {
          if (local_18 < 5) {
            lVar14 = __lseeki64_nolock(*in_EAX,0x200000000,unaff_EDI);
            if (lVar14 == 0) goto LAB_00a5a111;
            lVar14 = __lseeki64_nolock(*in_EAX,0,unaff_EDI);
            uVar4 = (uint)lVar14 & (uint)((ulonglong)lVar14 >> 0x20);
            goto LAB_00a5a1dd;
          }
LAB_00a5a108:
          if (local_18 != 5) goto LAB_00a5a277;
        }
LAB_00a5a111:
        iVar12 = 0;
        if (local_6 == 1) {
          local_1c = 0xbfbbef;
          local_18 = 3;
        }
        else {
          if (local_6 != 2) goto LAB_00a5a277;
          local_1c = 0xfeff;
          local_18 = 2;
        }
        do {
          iVar9 = __write(*in_EAX,(void *)((int)&local_1c + iVar12),local_18 - iVar12);
          if (iVar9 == -1) goto LAB_00a59ff0;
          iVar12 = iVar12 + iVar9;
        } while (iVar12 < (int)local_18);
      }
      else {
        if (uVar4 != 0x80000000) {
          if ((uVar4 == 0xc0000000) && (local_18 != 0)) {
            if (2 < local_18) {
              if (4 < local_18) goto LAB_00a5a108;
              lVar14 = __lseeki64_nolock(*in_EAX,0x200000000,unaff_EDI);
              if (lVar14 != 0) {
                lVar14 = __lseeki64_nolock(*in_EAX,0,unaff_EDI);
                if (lVar14 == -1) goto LAB_00a59ff0;
                goto LAB_00a5a162;
              }
            }
            goto LAB_00a5a111;
          }
          goto LAB_00a5a277;
        }
LAB_00a5a162:
        iVar12 = __read_nolock(*in_EAX,&local_1c,3);
        if (iVar12 == -1) goto LAB_00a59ff0;
        if (iVar12 == 2) {
LAB_00a5a1eb:
          if ((local_1c & 0xffff) == 0xfffe) {
            __close_nolock(*in_EAX);
            piVar6 = __errno();
            *piVar6 = 0x16;
            return 0x16;
          }
          if ((local_1c & 0xffff) == 0xfeff) {
            lVar8 = __lseek_nolock(*in_EAX,2,0);
            if (lVar8 == -1) goto LAB_00a59ff0;
            local_6 = 2;
            goto LAB_00a5a277;
          }
        }
        else if (iVar12 == 3) {
          if (local_1c == 0xbfbbef) {
            local_6 = 1;
            goto LAB_00a5a277;
          }
          goto LAB_00a5a1eb;
        }
        uVar4 = __lseek_nolock(*in_EAX,0,0);
LAB_00a5a1dd:
        if (uVar4 == 0xffffffff) goto LAB_00a59ff0;
      }
    }
  }
LAB_00a5a277:
  uVar4 = local_c;
  pbVar1 = (byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 0x24 + (*in_EAX & 0x1f) * 0x40);
  *pbVar1 = *pbVar1 ^ (*pbVar1 ^ local_6) & 0x7f;
  pbVar1 = (byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 0x24 + (*in_EAX & 0x1f) * 0x40);
  *pbVar1 = (char)(param_3 >> 0x10) << 7 | *pbVar1 & 0x7f;
  if ((local_7 == 0) && ((param_3 & 8) != 0)) {
    pbVar1 = (byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 4 + (*in_EAX & 0x1f) * 0x40);
    *pbVar1 = *pbVar1 | 0x20;
  }
  if (((local_c & 0xc0000000) == 0xc0000000) && ((param_3 & 1) != 0)) {
    CloseHandle(local_20);
    pvVar10 = CreateFileA(param_2,uVar4 & 0x7fffffff,local_14,&local_34,3,local_10,(HANDLE)0x0);
    if (pvVar10 == (HANDLE)0xffffffff) {
      DVar7 = GetLastError();
      __dosmaperr(DVar7);
      pbVar1 = (byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 4 + (*in_EAX & 0x1f) * 0x40);
      *pbVar1 = *pbVar1 & 0xfe;
      __free_osfhnd(*in_EAX);
LAB_00a59ef7:
      piVar6 = __errno();
      return *piVar6;
    }
    *(HANDLE *)((*in_EAX & 0x1f) * 0x40 + (&DAT_032f1700)[(int)*in_EAX >> 5]) = pvVar10;
  }
  return 0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __sopen_helper
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl
__sopen_helper(char *_Filename,int _OFlag,int _ShFlag,int _PMode,int *_PFileHandle,int _BSecure)

{
  int *piVar1;
  errno_t eVar2;
  undefined4 local_20 [5];
  undefined4 uStack_c;
  undefined *local_8;
  
  local_8 = &DAT_031110f8;
  uStack_c = 0xa5a388;
  local_20[0] = 0;
  if (((_PFileHandle == (int *)0x0) || (*_PFileHandle = -1, _Filename == (char *)0x0)) ||
     ((_BSecure != 0 && ((_PMode & 0xfffffe7fU) != 0)))) {
    piVar1 = __errno();
    eVar2 = 0x16;
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else {
    local_8 = (undefined *)0x0;
    eVar2 = __tsopen_nolock(local_20,_Filename,_OFlag,_ShFlag,_PMode);
    local_8 = (undefined *)0xfffffffe;
    FUN_00a5a41a();
    if (eVar2 != 0) {
      *_PFileHandle = -1;
    }
  }
  return eVar2;
}



void FUN_00a5a41a(void)

{
  byte *pbVar1;
  int unaff_EBP;
  int unaff_ESI;
  uint *unaff_EDI;
  
  if (*(int *)(unaff_EBP + -0x1c) != unaff_ESI) {
    if (*(int *)(unaff_EBP + -0x20) != unaff_ESI) {
      pbVar1 = (byte *)((&DAT_032f1700)[(int)*unaff_EDI >> 5] + 4 + (*unaff_EDI & 0x1f) * 0x40);
      *pbVar1 = *pbVar1 & 0xfe;
    }
    __unlock_fhandle(*unaff_EDI);
  }
  return;
}



// Library Function - Single Match
//  __sopen_s
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl
__sopen_s(int *_FileHandle,char *_Filename,int _OpenFlag,int _ShareFlag,int _PermissionMode)

{
  errno_t eVar1;
  
  eVar1 = __sopen_helper(_Filename,_OpenFlag,_ShareFlag,_PermissionMode,_FileHandle,1);
  return eVar1;
}



// Library Function - Single Match
//  __tsopen_nolock
// 
// Library: Visual Studio 2008 Release

int __tsopen_nolock(undefined4 *param_1,LPCWSTR param_2,uint param_3,int param_4,byte param_5)

{
  byte *pbVar1;
  byte bVar2;
  uint *in_EAX;
  errno_t eVar3;
  uint uVar4;
  ulong *puVar5;
  int *piVar6;
  DWORD DVar7;
  long lVar8;
  int iVar9;
  HANDLE pvVar10;
  byte bVar11;
  int unaff_EDI;
  int iVar12;
  bool bVar13;
  longlong lVar14;
  _SECURITY_ATTRIBUTES local_38;
  undefined4 local_28;
  uint local_24;
  HANDLE local_20;
  uint local_1c;
  DWORD local_18;
  uint local_14;
  uint local_10;
  uint local_c;
  byte local_7;
  byte local_6;
  byte local_5;
  
  bVar13 = (param_3 & 0x80) == 0;
  local_24 = 0;
  local_6 = 0;
  local_38.nLength = 0xc;
  local_38.lpSecurityDescriptor = (LPVOID)0x0;
  if (bVar13) {
    local_5 = 0;
  }
  else {
    local_5 = 0x10;
  }
  local_38.bInheritHandle = (BOOL)bVar13;
  eVar3 = __get_fmode((int *)&local_24);
  if (eVar3 != 0) {
                    // WARNING: Subroutine does not return
    __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
  }
  if (((param_3 & 0x8000) == 0) && (((param_3 & 0x74000) != 0 || (local_24 != 0x8000)))) {
    local_5 = local_5 | 0x80;
  }
  uVar4 = param_3 & 3;
  if (uVar4 == 0) {
    local_c = 0x80000000;
  }
  else {
    if (uVar4 == 1) {
      if (((param_3 & 8) == 0) || ((param_3 & 0x70000) == 0)) {
        local_c = 0x40000000;
        goto LAB_00a5a535;
      }
    }
    else if (uVar4 != 2) goto LAB_00a5a4f1;
    local_c = 0xc0000000;
  }
LAB_00a5a535:
  if (param_4 == 0x10) {
    local_14 = 0;
  }
  else if (param_4 == 0x20) {
    local_14 = 1;
  }
  else if (param_4 == 0x30) {
    local_14 = 2;
  }
  else if (param_4 == 0x40) {
    local_14 = 3;
  }
  else {
    if (param_4 != 0x80) goto LAB_00a5a4f1;
    local_14 = (uint)(local_c == 0x80000000);
  }
  uVar4 = param_3 & 0x700;
  if (uVar4 < 0x401) {
    if ((uVar4 == 0x400) || (uVar4 == 0)) {
      local_18 = 3;
    }
    else if (uVar4 == 0x100) {
      local_18 = 4;
    }
    else {
      if (uVar4 == 0x200) goto LAB_00a5a63a;
      if (uVar4 != 0x300) goto LAB_00a5a4f1;
      local_18 = 2;
    }
  }
  else {
    if (uVar4 != 0x500) {
      if (uVar4 == 0x600) {
LAB_00a5a63a:
        local_18 = 5;
        goto LAB_00a5a5e9;
      }
      if (uVar4 != 0x700) {
LAB_00a5a4f1:
        puVar5 = ___doserrno();
        *puVar5 = 0;
        *in_EAX = 0xffffffff;
        piVar6 = __errno();
        *piVar6 = 0x16;
        __invalid_parameter(0,0,0,0,0);
        return 0x16;
      }
    }
    local_18 = 1;
  }
LAB_00a5a5e9:
  local_10 = 0x80;
  if (((param_3 & 0x100) != 0) && (-1 < (char)(~(byte)DAT_032eb240 & param_5))) {
    local_10 = 1;
  }
  if ((param_3 & 0x40) != 0) {
    local_10 = local_10 | 0x4000000;
    local_c = local_c | 0x10000;
    local_14 = local_14 | 4;
  }
  if ((param_3 & 0x1000) != 0) {
    local_10 = local_10 | 0x100;
  }
  if ((param_3 & 0x20) == 0) {
    if ((param_3 & 0x10) != 0) {
      local_10 = local_10 | 0x10000000;
    }
  }
  else {
    local_10 = local_10 | 0x8000000;
  }
  uVar4 = __alloc_osfhnd();
  *in_EAX = uVar4;
  if (uVar4 == 0xffffffff) {
    puVar5 = ___doserrno();
    *puVar5 = 0;
    *in_EAX = 0xffffffff;
    piVar6 = __errno();
    *piVar6 = 0x18;
    goto LAB_00a5a702;
  }
  *param_1 = 1;
  local_20 = CreateFileW(param_2,local_c,local_14,&local_38,local_18,local_10,(HANDLE)0x0);
  if (local_20 == (HANDLE)0xffffffff) {
    if (((local_c & 0xc0000000) == 0xc0000000) && ((param_3 & 1) != 0)) {
      local_c = local_c & 0x7fffffff;
      local_20 = CreateFileW(param_2,local_c,local_14,&local_38,local_18,local_10,(HANDLE)0x0);
      if (local_20 != (HANDLE)0xffffffff) goto LAB_00a5a70e;
    }
    pbVar1 = (byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 4 + (*in_EAX & 0x1f) * 0x40);
    *pbVar1 = *pbVar1 & 0xfe;
    DVar7 = GetLastError();
    __dosmaperr(DVar7);
    goto LAB_00a5a702;
  }
LAB_00a5a70e:
  DVar7 = GetFileType(local_20);
  if (DVar7 == 0) {
    pbVar1 = (byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 4 + (*in_EAX & 0x1f) * 0x40);
    *pbVar1 = *pbVar1 & 0xfe;
    DVar7 = GetLastError();
    __dosmaperr(DVar7);
    CloseHandle(local_20);
    if (DVar7 == 0) {
      piVar6 = __errno();
      *piVar6 = 0xd;
    }
    goto LAB_00a5a702;
  }
  if (DVar7 == 2) {
    local_5 = local_5 | 0x40;
  }
  else if (DVar7 == 3) {
    local_5 = local_5 | 8;
  }
  __set_osfhnd(*in_EAX,(intptr_t)local_20);
  bVar11 = local_5 | 1;
  *(byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 4 + (*in_EAX & 0x1f) * 0x40) = bVar11;
  pbVar1 = (byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 0x24 + (*in_EAX & 0x1f) * 0x40);
  *pbVar1 = *pbVar1 & 0x80;
  local_7 = local_5 & 0x48;
  if (local_7 == 0) {
    bVar2 = local_5 & 0x80;
    local_5 = bVar11;
    if (bVar2 == 0) goto LAB_00a5aa83;
    if ((param_3 & 2) == 0) goto LAB_00a5a849;
    local_1c = __lseek_nolock(*in_EAX,-1,2);
    if (local_1c == 0xffffffff) {
      puVar5 = ___doserrno();
      bVar11 = local_5;
      if (*puVar5 == 0x83) goto LAB_00a5a849;
    }
    else {
      local_28 = 0;
      iVar12 = __read_nolock(*in_EAX,&local_28,1);
      if ((((iVar12 != 0) || ((short)local_28 != 0x1a)) ||
          (iVar12 = __chsize_nolock(*in_EAX,CONCAT44(unaff_EDI,(int)local_1c >> 0x1f)), iVar12 != -1
          )) && (lVar8 = __lseek_nolock(*in_EAX,0,0), bVar11 = local_5, lVar8 != -1))
      goto LAB_00a5a849;
    }
LAB_00a5a7fb:
    __close_nolock(*in_EAX);
    goto LAB_00a5a702;
  }
LAB_00a5a849:
  local_5 = bVar11;
  if ((local_5 & 0x80) != 0) {
    if ((param_3 & 0x74000) == 0) {
      if ((local_24 & 0x74000) == 0) {
        param_3 = param_3 | 0x4000;
      }
      else {
        param_3 = param_3 | local_24 & 0x74000;
      }
    }
    uVar4 = param_3 & 0x74000;
    if (uVar4 == 0x4000) {
      local_6 = 0;
    }
    else if ((uVar4 == 0x10000) || (uVar4 == 0x14000)) {
      if ((param_3 & 0x301) == 0x301) goto LAB_00a5a8b8;
    }
    else if ((uVar4 == 0x20000) || (uVar4 == 0x24000)) {
LAB_00a5a8b8:
      local_6 = 2;
    }
    else if ((uVar4 == 0x40000) || (uVar4 == 0x44000)) {
      local_6 = 1;
    }
    if (((param_3 & 0x70000) != 0) && (local_1c = 0, (local_5 & 0x40) == 0)) {
      uVar4 = local_c & 0xc0000000;
      if (uVar4 == 0x40000000) {
        if (local_18 == 0) goto LAB_00a5aa83;
        if (2 < local_18) {
          if (local_18 < 5) {
            lVar14 = __lseeki64_nolock(*in_EAX,0x200000000,unaff_EDI);
            if (lVar14 == 0) goto LAB_00a5a91d;
            lVar14 = __lseeki64_nolock(*in_EAX,0,unaff_EDI);
            uVar4 = (uint)lVar14 & (uint)((ulonglong)lVar14 >> 0x20);
            goto LAB_00a5a9e9;
          }
LAB_00a5a914:
          if (local_18 != 5) goto LAB_00a5aa83;
        }
LAB_00a5a91d:
        iVar12 = 0;
        if (local_6 == 1) {
          local_1c = 0xbfbbef;
          local_18 = 3;
        }
        else {
          if (local_6 != 2) goto LAB_00a5aa83;
          local_1c = 0xfeff;
          local_18 = 2;
        }
        do {
          iVar9 = __write(*in_EAX,(void *)((int)&local_1c + iVar12),local_18 - iVar12);
          if (iVar9 == -1) goto LAB_00a5a7fb;
          iVar12 = iVar12 + iVar9;
        } while (iVar12 < (int)local_18);
      }
      else {
        if (uVar4 != 0x80000000) {
          if ((uVar4 == 0xc0000000) && (local_18 != 0)) {
            if (2 < local_18) {
              if (4 < local_18) goto LAB_00a5a914;
              lVar14 = __lseeki64_nolock(*in_EAX,0x200000000,unaff_EDI);
              if (lVar14 != 0) {
                lVar14 = __lseeki64_nolock(*in_EAX,0,unaff_EDI);
                if (lVar14 == -1) goto LAB_00a5a7fb;
                goto LAB_00a5a96e;
              }
            }
            goto LAB_00a5a91d;
          }
          goto LAB_00a5aa83;
        }
LAB_00a5a96e:
        iVar12 = __read_nolock(*in_EAX,&local_1c,3);
        if (iVar12 == -1) goto LAB_00a5a7fb;
        if (iVar12 == 2) {
LAB_00a5a9f7:
          if ((local_1c & 0xffff) == 0xfffe) {
            __close_nolock(*in_EAX);
            piVar6 = __errno();
            *piVar6 = 0x16;
            return 0x16;
          }
          if ((local_1c & 0xffff) == 0xfeff) {
            lVar8 = __lseek_nolock(*in_EAX,2,0);
            if (lVar8 == -1) goto LAB_00a5a7fb;
            local_6 = 2;
            goto LAB_00a5aa83;
          }
        }
        else if (iVar12 == 3) {
          if (local_1c == 0xbfbbef) {
            local_6 = 1;
            goto LAB_00a5aa83;
          }
          goto LAB_00a5a9f7;
        }
        uVar4 = __lseek_nolock(*in_EAX,0,0);
LAB_00a5a9e9:
        if (uVar4 == 0xffffffff) goto LAB_00a5a7fb;
      }
    }
  }
LAB_00a5aa83:
  uVar4 = local_c;
  pbVar1 = (byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 0x24 + (*in_EAX & 0x1f) * 0x40);
  *pbVar1 = *pbVar1 ^ (*pbVar1 ^ local_6) & 0x7f;
  pbVar1 = (byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 0x24 + (*in_EAX & 0x1f) * 0x40);
  *pbVar1 = (char)(param_3 >> 0x10) << 7 | *pbVar1 & 0x7f;
  if ((local_7 == 0) && ((param_3 & 8) != 0)) {
    pbVar1 = (byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 4 + (*in_EAX & 0x1f) * 0x40);
    *pbVar1 = *pbVar1 | 0x20;
  }
  if (((local_c & 0xc0000000) == 0xc0000000) && ((param_3 & 1) != 0)) {
    CloseHandle(local_20);
    pvVar10 = CreateFileW(param_2,uVar4 & 0x7fffffff,local_14,&local_38,3,local_10,(HANDLE)0x0);
    if (pvVar10 == (HANDLE)0xffffffff) {
      DVar7 = GetLastError();
      __dosmaperr(DVar7);
      pbVar1 = (byte *)((&DAT_032f1700)[(int)*in_EAX >> 5] + 4 + (*in_EAX & 0x1f) * 0x40);
      *pbVar1 = *pbVar1 & 0xfe;
      __free_osfhnd(*in_EAX);
LAB_00a5a702:
      piVar6 = __errno();
      return *piVar6;
    }
    *(HANDLE *)((*in_EAX & 0x1f) * 0x40 + (&DAT_032f1700)[(int)*in_EAX >> 5]) = pvVar10;
  }
  return 0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __wsopen_helper
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl
__wsopen_helper(wchar_t *_Filename,int _OFlag,int _ShFlag,int _PMode,int *_PFileHandle,int _BSecure)

{
  int *piVar1;
  errno_t eVar2;
  undefined4 local_20 [5];
  undefined4 uStack_c;
  undefined *local_8;
  
  local_8 = &DAT_03111118;
  uStack_c = 0xa5ab94;
  local_20[0] = 0;
  if (((_PFileHandle == (int *)0x0) || (*_PFileHandle = -1, _Filename == (wchar_t *)0x0)) ||
     ((_BSecure != 0 && ((_PMode & 0xfffffe7fU) != 0)))) {
    piVar1 = __errno();
    eVar2 = 0x16;
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else {
    local_8 = (undefined *)0x0;
    eVar2 = __tsopen_nolock(local_20,_Filename,_OFlag,_ShFlag,_PMode);
    local_8 = (undefined *)0xfffffffe;
    FUN_00a5ac26();
    if (eVar2 != 0) {
      *_PFileHandle = -1;
    }
  }
  return eVar2;
}



void FUN_00a5ac26(void)

{
  byte *pbVar1;
  int unaff_EBP;
  int unaff_ESI;
  uint *unaff_EDI;
  
  if (*(int *)(unaff_EBP + -0x1c) != unaff_ESI) {
    if (*(int *)(unaff_EBP + -0x20) != unaff_ESI) {
      pbVar1 = (byte *)((&DAT_032f1700)[(int)*unaff_EDI >> 5] + 4 + (*unaff_EDI & 0x1f) * 0x40);
      *pbVar1 = *pbVar1 & 0xfe;
    }
    __unlock_fhandle(*unaff_EDI);
  }
  return;
}



// Library Function - Single Match
//  __wsopen_s
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl
__wsopen_s(int *_FileHandle,wchar_t *_Filename,int _OpenFlag,int _ShareFlag,int _PermissionFlag)

{
  errno_t eVar1;
  
  eVar1 = __wsopen_helper(_Filename,_OpenFlag,_ShareFlag,_PermissionFlag,_FileHandle,1);
  return eVar1;
}



// Library Function - Single Match
//  __validdrive
// 
// Library: Visual Studio 2008 Release

int __cdecl __validdrive(uint param_1)

{
  char cVar1;
  UINT UVar2;
  
  if (param_1 != 0) {
    cVar1 = (char)param_1;
    param_1 = (uint)CONCAT12(0x5c,CONCAT11(0x3a,cVar1 + '@'));
    UVar2 = GetDriveTypeA((LPCSTR)&param_1);
    if ((UVar2 == 0) || (UVar2 == 1)) {
      return 0;
    }
  }
  return 1;
}



// Library Function - Single Match
//  __getdcwd_nolock
// 
// Library: Visual Studio 2008 Release

LPSTR __getdcwd_nolock(uint param_1,LPSTR param_2,DWORD param_3)

{
  int iVar1;
  ulong *puVar2;
  int *piVar3;
  uint uVar4;
  DWORD DVar5;
  LPSTR lpBuffer;
  LPSTR local_c;
  undefined4 local_8;
  
  if (param_1 == 0) {
    uVar4 = __getdrive();
  }
  else {
    iVar1 = __validdrive(param_1);
    uVar4 = param_1;
    if (iVar1 == 0) {
      puVar2 = ___doserrno();
      *puVar2 = 0xf;
      piVar3 = __errno();
      *piVar3 = 0xd;
      __invalid_parameter(0,0,0,0,0);
      return (LPSTR)0x0;
    }
  }
  if (param_2 == (LPSTR)0x0) {
    param_1 = 0;
  }
  else {
    if ((int)param_3 < 1) {
      piVar3 = __errno();
      *piVar3 = 0x16;
      __invalid_parameter(0,0,0,0,0);
      return (LPSTR)0x0;
    }
    param_1 = param_3;
    *param_2 = '\0';
  }
  if (uVar4 == 0) {
    local_8 = CONCAT22(local_8._2_2_,0x2e);
  }
  else {
    local_8 = (uint)CONCAT12(0x2e,CONCAT11(0x3a,(char)uVar4 + '@'));
  }
  DVar5 = GetFullPathNameA((LPCSTR)&local_8,param_1,param_2,&local_c);
  if (DVar5 != 0) {
    if (param_2 != (LPSTR)0x0) {
      if ((int)param_1 <= (int)DVar5) {
        piVar3 = __errno();
        *piVar3 = 0x22;
        *param_2 = '\0';
        return (LPSTR)0x0;
      }
      return param_2;
    }
    if ((int)param_3 < (int)DVar5) {
      param_3 = DVar5;
    }
    lpBuffer = (LPSTR)_calloc(param_3,1);
    if (lpBuffer == (LPSTR)0x0) {
      piVar3 = __errno();
      *piVar3 = 0xc;
      puVar2 = ___doserrno();
      *puVar2 = 8;
      return (LPSTR)0x0;
    }
    DVar5 = GetFullPathNameA((LPCSTR)&local_8,param_3,lpBuffer,&local_c);
    if ((DVar5 != 0) && ((int)DVar5 < (int)param_3)) {
      return lpBuffer;
    }
  }
  DVar5 = GetLastError();
  __dosmaperr(DVar5);
  return (LPSTR)0x0;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __getcwd
// 
// Library: Visual Studio 2008 Release

char * __cdecl __getcwd(char *_DstBuf,int _SizeInBytes)

{
  char *pcVar1;
  
  __lock(7);
  pcVar1 = (char *)__getdcwd_nolock(0,_DstBuf,_SizeInBytes);
  FUN_00a5ae24();
  return pcVar1;
}



void FUN_00a5ae24(void)

{
  FUN_00a4d824(7);
  return;
}



// Library Function - Single Match
//  __putwch_nolock
// 
// Library: Visual Studio 2008 Release

wint_t __cdecl __putwch_nolock(wchar_t _WCh)

{
  wint_t wVar1;
  BOOL BVar2;
  DWORD DVar3;
  UINT CodePage;
  wchar_t *lpWideCharStr;
  int cchWideChar;
  CHAR *lpMultiByteStr;
  int cbMultiByte;
  LPCSTR lpDefaultChar;
  LPBOOL lpUsedDefaultChar;
  DWORD local_14;
  CHAR local_10 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  if (DAT_03240904 != 0) {
    if (DAT_03240b14 == (HANDLE)0xfffffffe) {
      ___initconout();
    }
    if (DAT_03240b14 == (HANDLE)0xffffffff) goto LAB_00a5aed9;
    BVar2 = WriteConsoleW(DAT_03240b14,&_WCh,1,&local_14,(LPVOID)0x0);
    if (BVar2 != 0) {
      DAT_03240904 = 1;
      goto LAB_00a5aed9;
    }
    if ((DAT_03240904 != 2) || (DVar3 = GetLastError(), DVar3 != 0x78)) goto LAB_00a5aed9;
    DAT_03240904 = 0;
  }
  lpUsedDefaultChar = (LPBOOL)0x0;
  lpDefaultChar = (LPCSTR)0x0;
  cbMultiByte = 5;
  lpMultiByteStr = local_10;
  cchWideChar = 1;
  lpWideCharStr = &_WCh;
  DVar3 = 0;
  CodePage = GetConsoleOutputCP();
  DVar3 = WideCharToMultiByte(CodePage,DVar3,lpWideCharStr,cchWideChar,lpMultiByteStr,cbMultiByte,
                              lpDefaultChar,lpUsedDefaultChar);
  if (DAT_03240b14 != (HANDLE)0xffffffff) {
    WriteConsoleA(DAT_03240b14,local_10,DVar3,&local_14,(LPVOID)0x0);
  }
LAB_00a5aed9:
  wVar1 = ___security_check_cookie_4();
  return wVar1;
}



// Library Function - Single Match
//  __isatty
// 
// Library: Visual Studio 2008 Release

int __cdecl __isatty(int _FileHandle)

{
  int *piVar1;
  uint uVar2;
  
  if (_FileHandle == -2) {
    piVar1 = __errno();
    *piVar1 = 9;
    return 0;
  }
  if ((_FileHandle < 0) || (DAT_032f16e4 <= (uint)_FileHandle)) {
    piVar1 = __errno();
    *piVar1 = 9;
    __invalid_parameter(0,0,0,0,0);
    uVar2 = 0;
  }
  else {
    uVar2 = (int)*(char *)((&DAT_032f1700)[_FileHandle >> 5] + 4 + (_FileHandle & 0x1fU) * 0x40) &
            0x40;
  }
  return uVar2;
}



// Library Function - Single Match
//  ___check_float_string
// 
// Library: Visual Studio 2008 Release

undefined4 ___check_float_string(size_t param_1,void *param_2,undefined4 *param_3)

{
  size_t _Count;
  void *pvVar1;
  size_t *unaff_ESI;
  void **unaff_EDI;
  
  _Count = *unaff_ESI;
  if (param_1 == _Count) {
    if (*unaff_EDI == param_2) {
      pvVar1 = __calloc_crt(_Count,4);
      *unaff_EDI = pvVar1;
      if (pvVar1 == (void *)0x0) {
        return 0;
      }
      *param_3 = 1;
      _memcpy(*unaff_EDI,param_2,*unaff_ESI * 2);
    }
    else {
      pvVar1 = __recalloc_crt(*unaff_EDI,_Count,4);
      if (pvVar1 == (void *)0x0) {
        return 0;
      }
      *unaff_EDI = pvVar1;
    }
    *unaff_ESI = *unaff_ESI << 1;
  }
  return 1;
}



// Library Function - Single Match
//  __hextodec
// 
// Library: Visual Studio 2008 Release

uint __hextodec(uint param_1)

{
  int iVar1;
  
  if ((param_1 & 0xff00) == 0) {
    iVar1 = _isdigit(param_1 & 0xff);
    if (iVar1 != 0) {
      return param_1 & 0xffff;
    }
  }
  return (param_1 & 0xffdf) - 7;
}



// Library Function - Single Match
//  __un_inc
// 
// Library: Visual Studio 2008 Release

void __un_inc(wint_t param_1,FILE *param_2)

{
  if (param_1 != 0xffff) {
    __ungetwc_nolock(param_1,param_2);
    return;
  }
  return;
}



// Library Function - Single Match
//  __whiteout
// 
// Library: Visual Studio 2008 Release

wint_t __whiteout(FILE *param_1)

{
  wint_t _C;
  int iVar1;
  int *unaff_ESI;
  
  do {
    *unaff_ESI = *unaff_ESI + 1;
    _C = __fgetwc_nolock(param_1);
    if (_C == 0xffff) {
      return 0xffff;
    }
    iVar1 = _iswctype(_C,8);
  } while (iVar1 != 0);
  return _C;
}



// Library Function - Single Match
//  __winput_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __winput_l(FILE *_File,wchar_t *param_2,_locale_t _Locale,va_list _ArgList)

{
  size_t _Size;
  wchar_t wVar1;
  undefined2 uVar2;
  ushort uVar3;
  wchar_t wVar4;
  wint_t wVar5;
  int *piVar6;
  wchar_t *pwVar7;
  int iVar8;
  char *_Dst;
  errno_t eVar9;
  code *pcVar10;
  byte *pbVar11;
  uint uVar12;
  int iVar13;
  uint uVar14;
  int iVar15;
  wchar_t wVar16;
  longlong *plVar17;
  uint uVar18;
  wchar_t *pwVar19;
  longlong *plVar20;
  bool bVar21;
  longlong lVar22;
  localeinfo_struct local_340;
  int local_338;
  char local_334;
  longlong **local_330;
  int local_32c;
  longlong **local_328;
  uint local_324;
  int local_320;
  uint local_31c;
  int local_318;
  int local_314;
  void *local_310;
  int local_30c;
  longlong *local_308;
  wchar_t *local_304;
  undefined8 local_300;
  int local_2f8;
  byte local_2f1;
  uint local_2f0;
  int local_2ec;
  wchar_t *local_2e8;
  char local_2e3;
  char local_2e2;
  char local_2e1;
  FILE *local_2e0;
  char local_2da;
  char local_2d9;
  int local_2d8;
  char local_2d1;
  uint local_2d0;
  uint local_2cc;
  char local_2c5;
  wchar_t local_2c4 [350];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_328 = (longlong **)_ArgList;
  local_2e8 = local_2c4;
  local_2e0 = _File;
  local_318 = 0x15e;
  local_314 = 0;
  local_310 = (void *)0x0;
  local_32c = 0;
  local_2d0 = 0;
  if ((param_2 == (wchar_t *)0x0) || (_File == (FILE *)0x0)) {
    piVar6 = __errno();
    *piVar6 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else {
    _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_340,_Locale);
    wVar4 = *param_2;
    local_2e1 = '\0';
    local_2cc = 0;
    local_30c = 0;
    if (wVar4 != L'\0') {
LAB_00a5b0e2:
      iVar13 = _iswctype(wVar4,8);
      if (iVar13 != 0) {
        local_2cc = local_2cc - 1;
        uVar2 = __whiteout(local_2e0,local_2e0);
        __un_inc(uVar2);
        do {
          param_2 = param_2 + 1;
          iVar13 = _iswctype(*param_2,8);
        } while (iVar13 != 0);
        goto LAB_00a5c07d;
      }
      if ((*param_2 != L'%') || (param_2[1] == L'%')) {
        pwVar7 = param_2;
        if ((*param_2 == L'%') && (param_2[1] == L'%')) {
          pwVar7 = param_2 + 1;
        }
        local_2cc = local_2cc + 1;
        wVar4 = __fgetwc_nolock(local_2e0);
        local_2d0 = (uint)(ushort)wVar4;
        param_2 = pwVar7 + 1;
        local_304 = param_2;
        if (*pwVar7 != wVar4) goto LAB_00a5c0a0;
        goto LAB_00a5c05a;
      }
      local_31c = 0;
      wVar4 = L'\0';
      local_2ec = 0;
      local_2f8 = 0;
      local_2d8 = 0;
      local_320 = 0;
      local_2f1 = 0;
      local_2e3 = '\0';
      local_2d9 = '\0';
      local_2c5 = '\0';
      local_2e2 = '\0';
      local_2d1 = '\0';
      local_2da = '\x01';
      plVar17 = (longlong *)0x0;
      do {
        pwVar19 = param_2 + 1;
        uVar14 = (uint)(ushort)*pwVar19;
        pwVar7 = pwVar19;
        if ((*pwVar19 & 0xff00U) == 0) {
          iVar13 = _isdigit(uVar14 & 0xff);
          if (iVar13 == 0) goto LAB_00a5b1de;
          local_2f8 = local_2f8 + 1;
          local_2d8 = local_2d8 * 10 + -0x30 + uVar14;
        }
        else {
LAB_00a5b1de:
          if (uVar14 < 0x4f) {
            if (uVar14 != 0x4e) {
              if (uVar14 == 0x2a) {
                local_2d9 = local_2d9 + '\x01';
              }
              else if (uVar14 != 0x46) {
                if (uVar14 == 0x49) {
                  wVar16 = param_2[2];
                  if ((wVar16 == L'6') && (pwVar7 = param_2 + 3, *pwVar7 == L'4'))
                  goto LAB_00a5b223;
                  if ((((((wVar16 != L'3') || (pwVar7 = param_2 + 3, *pwVar7 != L'2')) &&
                        (pwVar7 = pwVar19, wVar16 != L'd')) &&
                       ((wVar16 != L'i' && (wVar16 != L'o')))) && (wVar16 != L'x')) &&
                     (wVar16 != L'X')) goto LAB_00a5b283;
                }
                else if (uVar14 == 0x4c) {
                  local_2da = local_2da + '\x01';
                }
                else {
LAB_00a5b283:
                  local_2c5 = local_2c5 + '\x01';
                  pwVar7 = pwVar19;
                }
              }
            }
          }
          else if (uVar14 == 0x68) {
            local_2da = local_2da + -1;
            local_2d1 = local_2d1 + -1;
          }
          else {
            if (uVar14 == 0x6c) {
              pwVar7 = param_2 + 2;
              if (*pwVar7 == L'l') {
LAB_00a5b223:
                local_320 = local_320 + 1;
                local_300 = 0;
                goto LAB_00a5b2ae;
              }
              local_2da = local_2da + '\x01';
            }
            else if (uVar14 != 0x77) goto LAB_00a5b283;
            local_2d1 = local_2d1 + '\x01';
            pwVar7 = pwVar19;
          }
        }
LAB_00a5b2ae:
        param_2 = pwVar7;
      } while (local_2c5 == '\0');
      if (local_2d9 == '\0') {
        plVar17 = *local_328;
        local_330 = local_328;
        local_328 = local_328 + 1;
      }
      local_2c5 = '\0';
      if ((local_2d1 == '\0') && ((*pwVar7 == L'S' || (local_2d1 = '\x01', *pwVar7 == L'C')))) {
        local_2d1 = -1;
      }
      uVar14 = (ushort)*pwVar7 | 0x20;
      local_308 = plVar17;
      local_304 = pwVar7;
      local_2f0 = uVar14;
      if (uVar14 != 0x6e) {
        if ((uVar14 == 99) || (uVar14 == 0x7b)) {
          local_2cc = local_2cc + 1;
          uVar3 = __fgetwc_nolock(local_2e0);
        }
        else {
          uVar3 = __whiteout(local_2e0);
        }
        local_2d0 = (uint)uVar3;
        if (uVar3 == 0xffff) goto LAB_00a5c0a7;
      }
      if ((local_2f8 == 0) || (local_2d8 != 0)) {
        if (uVar14 < 0x70) {
          if (uVar14 == 0x6f) {
LAB_00a5bd0e:
            if ((wchar_t)local_2d0 == L'-') {
              local_2e3 = '\x01';
            }
            else if ((wchar_t)local_2d0 != L'+') goto LAB_00a5bd5d;
            local_2d8 = local_2d8 + -1;
            if ((local_2d8 == 0) && (local_2f8 != 0)) {
              local_2c5 = '\x01';
            }
            else {
              local_2cc = local_2cc + 1;
              wVar5 = __fgetwc_nolock(local_2e0);
              local_2d0 = (uint)wVar5;
            }
            goto LAB_00a5bd5d;
          }
          if (uVar14 == 99) {
            if (local_2f8 == 0) {
              local_2d8 = local_2d8 + 1;
              local_2f8 = 1;
            }
LAB_00a5b8c3:
            pwVar7 = local_304;
            if ('\0' < local_2d1) {
              local_2e2 = '\x01';
            }
LAB_00a5b8d3:
            local_304 = pwVar7;
            plVar17 = local_308;
            local_2cc = local_2cc - 1;
            __un_inc(local_2d0,local_2e0);
            plVar20 = plVar17;
            do {
              if ((local_2f8 != 0) &&
                 (iVar13 = local_2d8 + -1, bVar21 = local_2d8 == 0, local_2d8 = iVar13, bVar21))
              goto LAB_00a5bcbc;
              local_2cc = local_2cc + 1;
              wVar4 = __fgetwc_nolock(local_2e0);
              local_2d0 = (uint)(ushort)wVar4;
              if (wVar4 == L'\xffff') goto LAB_00a5bca8;
              if (uVar14 != 99) {
                if (uVar14 == 0x73) {
                  if ((8 < (ushort)wVar4) && ((ushort)wVar4 < 0xe)) goto LAB_00a5bca8;
                  if (wVar4 != L' ') goto LAB_00a5b98e;
                }
                if ((uVar14 != 0x7b) ||
                   (uVar14 = local_2f0,
                   ((int)(char)(*(byte *)((uint)((ushort)wVar4 >> 3) + (int)local_310) ^ local_2f1)
                   & 1 << ((byte)wVar4 & 7)) == 0)) goto LAB_00a5bca8;
              }
LAB_00a5b98e:
              if (local_2d9 == '\0') {
                if (local_2e2 == '\0') {
                  local_31c = 0;
                  eVar9 = _wctomb_s((int *)&local_31c,(char *)plVar17,5,wVar4);
                  if (eVar9 == 0) {
                    plVar17 = (longlong *)((int)plVar17 + local_31c);
                    local_308 = plVar17;
                  }
                  else if ((eVar9 == 0x16) || (eVar9 == 0x22)) {
                    // WARNING: Subroutine does not return
                    __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
                  }
                }
                else {
                  *(wchar_t *)plVar17 = wVar4;
                  plVar17 = (longlong *)((int)plVar17 + 2);
                  local_308 = plVar17;
                }
              }
              else {
                plVar20 = (longlong *)((int)plVar20 + 2);
              }
            } while( true );
          }
          if (uVar14 == 100) goto LAB_00a5bd0e;
          if (uVar14 < 0x65) {
LAB_00a5b9dc:
            if (*local_304 != (wchar_t)local_2d0) goto LAB_00a5c0a0;
            local_2e1 = local_2e1 + -1;
            if (local_2d9 == '\0') {
              local_328 = local_330;
            }
            goto LAB_00a5c008;
          }
          if (0x67 < uVar14) {
            if (uVar14 == 0x69) {
              local_2f0 = 100;
              goto LAB_00a5b3e8;
            }
            if (uVar14 != 0x6e) goto LAB_00a5b9dc;
            uVar14 = local_2cc;
            lVar22 = local_300;
            if (local_2d9 != '\0') goto LAB_00a5c008;
            goto LAB_00a5bfdc;
          }
          iVar13 = 0;
          if ((wchar_t)local_2d0 == L'-') {
            *local_2e8 = L'-';
            iVar13 = 1;
LAB_00a5b42c:
            local_2d8 = local_2d8 + -1;
            local_2cc = local_2cc + 1;
            wVar5 = __fgetwc_nolock(local_2e0);
            local_2d0 = (uint)wVar5;
          }
          else if ((wchar_t)local_2d0 == L'+') goto LAB_00a5b42c;
          if (local_2f8 == 0) {
            local_2d8 = -1;
          }
          if ((local_2d0 & 0xff00) == 0) {
            do {
              iVar8 = _isdigit(local_2d0 & 0xff);
              if ((iVar8 == 0) ||
                 (iVar8 = local_2d8 + -1, bVar21 = local_2d8 == 0, local_2d8 = iVar8, bVar21))
              break;
              local_2ec = local_2ec + 1;
              local_2e8[iVar13] = (short)(char)local_2d0;
              iVar13 = iVar13 + 1;
              iVar8 = ___check_float_string(iVar13,local_2c4,&local_314);
              if (iVar8 == 0) goto LAB_00a5c0a7;
              local_2cc = local_2cc + 1;
              wVar5 = __fgetwc_nolock(local_2e0);
              local_2d0 = (uint)wVar5;
            } while ((wVar5 & 0xff00) == 0);
          }
          local_324 = 0x2e;
          __mbtowc_l((wchar_t *)&local_324,*(char **)local_340.locinfo[1].lc_codepage,
                     (size_t)(local_340.locinfo)->locale_name[3],&local_340);
          if (((local_324 & 0xffff) == (int)(char)local_2d0) &&
             (iVar8 = local_2d8 + -1, bVar21 = local_2d8 != 0, local_2d8 = iVar8, bVar21)) {
            local_2cc = local_2cc + 1;
            wVar5 = __fgetwc_nolock(local_2e0);
            local_2d0 = (uint)wVar5;
            local_2e8[iVar13] = (wchar_t)local_324;
            iVar13 = iVar13 + 1;
            iVar8 = ___check_float_string(iVar13,local_2c4,&local_314);
            if (iVar8 == 0) goto LAB_00a5c0a7;
            if ((local_2d0 & 0xff00) == 0) {
              do {
                iVar8 = _isdigit(local_2d0 & 0xff);
                if ((iVar8 == 0) ||
                   (iVar8 = local_2d8 + -1, bVar21 = local_2d8 == 0, local_2d8 = iVar8, bVar21))
                break;
                local_2ec = local_2ec + 1;
                local_2e8[iVar13] = (wchar_t)local_2d0;
                iVar13 = iVar13 + 1;
                iVar8 = ___check_float_string(iVar13,local_2c4,&local_314);
                if (iVar8 == 0) goto LAB_00a5c0a7;
                local_2cc = local_2cc + 1;
                wVar5 = __fgetwc_nolock(local_2e0);
                local_2d0 = (uint)wVar5;
              } while ((wVar5 & 0xff00) == 0);
            }
          }
          if ((local_2ec != 0) &&
             ((((wchar_t)local_2d0 == 0x65 || ((wchar_t)local_2d0 == 0x45)) &&
              (iVar8 = local_2d8 + -1, bVar21 = local_2d8 != 0, local_2d8 = iVar8, bVar21)))) {
            local_2e8[iVar13] = L'e';
            iVar15 = iVar13 + 1;
            iVar8 = ___check_float_string(iVar15,local_2c4,&local_314);
            if (iVar8 == 0) goto LAB_00a5c0a7;
            local_2cc = local_2cc + 1;
            wVar5 = __fgetwc_nolock(local_2e0);
            local_2d0 = (uint)wVar5;
            if (wVar5 == 0x2d) {
              local_2e8[iVar15] = L'-';
              iVar15 = iVar13 + 2;
              iVar13 = ___check_float_string(iVar15,local_2c4,&local_314);
              if (iVar13 == 0) goto LAB_00a5c0a7;
LAB_00a5b71c:
              iVar13 = iVar15;
              if (local_2d8 == 0) {
                local_2d8 = 0;
              }
              else {
                local_2cc = local_2cc + 1;
                local_2d8 = local_2d8 + -1;
                wVar5 = __fgetwc_nolock(local_2e0);
                local_2d0 = (uint)wVar5;
              }
            }
            else {
              iVar13 = iVar15;
              if (wVar5 == 0x2b) goto LAB_00a5b71c;
            }
            if ((local_2d0 & 0xff00) == 0) {
              do {
                iVar8 = _isdigit(local_2d0 & 0xff);
                if ((iVar8 == 0) ||
                   (iVar8 = local_2d8 + -1, bVar21 = local_2d8 == 0, local_2d8 = iVar8, bVar21))
                break;
                local_2ec = local_2ec + 1;
                local_2e8[iVar13] = (wchar_t)local_2d0;
                iVar13 = iVar13 + 1;
                iVar8 = ___check_float_string(iVar13,local_2c4,&local_314);
                if (iVar8 == 0) goto LAB_00a5c0a7;
                local_2cc = local_2cc + 1;
                wVar5 = __fgetwc_nolock(local_2e0);
                local_2d0 = (uint)wVar5;
              } while ((wVar5 & 0xff00) == 0);
            }
          }
          local_2cc = local_2cc - 1;
          __un_inc(local_2d0,local_2e0);
          if (local_2ec == 0) goto LAB_00a5c0a7;
          if (local_2d9 != '\0') goto LAB_00a5c008;
          local_30c = local_30c + 1;
          iVar8 = local_318 * 2;
          _Size = iVar8 + 2;
          local_2e8[iVar13] = L'\0';
          _Dst = (char *)__malloc_crt(_Size);
          if (_Dst == (char *)0x0) goto LAB_00a5c0a7;
          eVar9 = _wcstombs_s((size_t *)0x0,_Dst,_Size,local_2e8,iVar8 + 1);
          if ((eVar9 != 0) && ((eVar9 == 0x16 || (eVar9 == 0x22)))) {
                    // WARNING: Subroutine does not return
            __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
          }
          pcVar10 = (code *)__decode_pointer(PTR_LAB_0324077c,local_2da + -1,local_308,_Dst,
                                             &local_340);
          (*pcVar10)();
          _free(_Dst);
        }
        else {
          if (uVar14 == 0x70) {
            local_2da = '\x01';
            goto LAB_00a5bd0e;
          }
          if (uVar14 == 0x73) goto LAB_00a5b8c3;
          if (uVar14 == 0x75) goto LAB_00a5bd0e;
          if (uVar14 != 0x78) {
            if (uVar14 != 0x7b) goto LAB_00a5b9dc;
            if ('\0' < local_2d1) {
              local_2e2 = '\x01';
            }
            pwVar7 = local_304 + 1;
            if (*pwVar7 == L'^') {
              pwVar7 = local_304 + 2;
              local_2f1 = 0xff;
            }
            if (local_310 == (void *)0x0) {
              local_310 = __malloc_crt(0x2000);
              if (local_310 == (void *)0x0) goto LAB_00a5c0a7;
              local_32c = 1;
            }
            _memset(local_310,0,0x2000);
            if (*pwVar7 == L']') {
              *(undefined *)((int)local_310 + 0xb) = 0x20;
              pwVar7 = pwVar7 + 1;
              wVar4 = L']';
            }
            while (wVar16 = *pwVar7, wVar16 != L']') {
              if (((wVar16 == L'-') && (wVar4 != L'\0')) && (wVar1 = pwVar7[1], wVar1 != L']')) {
                wVar16 = wVar1;
                if ((ushort)wVar4 < (ushort)wVar1) {
                  wVar16 = wVar4;
                  wVar4 = wVar1;
                }
                if ((ushort)wVar16 <= (ushort)wVar4) {
                  uVar12 = (uint)(ushort)wVar16;
                  uVar18 = (uint)(ushort)((wVar4 - wVar16) + 1);
                  do {
                    pbVar11 = (byte *)((uVar12 >> 3) + (int)local_310);
                    *pbVar11 = *pbVar11 | '\x01' << ((byte)uVar12 & 7);
                    uVar12 = uVar12 + 1;
                    uVar18 = uVar18 - 1;
                    uVar14 = local_2f0;
                  } while (uVar18 != 0);
                }
                pwVar7 = pwVar7 + 2;
                wVar4 = L'\0';
              }
              else {
                pbVar11 = (byte *)((uint)((ushort)wVar16 >> 3) + (int)local_310);
                *pbVar11 = *pbVar11 | '\x01' << ((byte)wVar16 & 7);
                pwVar7 = pwVar7 + 1;
                wVar4 = wVar16;
              }
            }
            if (*pwVar7 != L'\0') goto LAB_00a5b8d3;
            goto LAB_00a5c0a7;
          }
LAB_00a5b3e8:
          if ((wchar_t)local_2d0 == L'-') {
            local_2e3 = '\x01';
LAB_00a5bb4e:
            local_2d8 = local_2d8 + -1;
            if ((local_2d8 == 0) && (local_2f8 != 0)) {
              local_2c5 = '\x01';
            }
            else {
              local_2cc = local_2cc + 1;
              wVar5 = __fgetwc_nolock(local_2e0);
              local_2d0 = (uint)wVar5;
            }
          }
          else if ((wchar_t)local_2d0 == L'+') goto LAB_00a5bb4e;
          if ((short)local_2d0 == 0x30) {
            local_2cc = local_2cc + 1;
            wVar5 = __fgetwc_nolock(local_2e0);
            local_2d0 = (uint)wVar5;
            if ((wVar5 == 0x78) || (wVar5 == 0x58)) {
              local_2cc = local_2cc + 1;
              wVar5 = __fgetwc_nolock(local_2e0);
              local_2d0 = (uint)wVar5;
              if ((local_2f8 != 0) && (local_2d8 = local_2d8 + -2, local_2d8 < 1)) {
                local_2c5 = local_2c5 + '\x01';
              }
              local_2f0 = 0x78;
            }
            else {
              local_2ec = 1;
              if (local_2f0 == 0x78) {
                local_2cc = local_2cc - 1;
                __un_inc(local_2d0,local_2e0);
                local_2d0 = 0x30;
              }
              else {
                if ((local_2f8 != 0) && (local_2d8 = local_2d8 + -1, local_2d8 == 0)) {
                  local_2c5 = local_2c5 + '\x01';
                }
                local_2f0 = 0x6f;
              }
            }
          }
LAB_00a5bd5d:
          lVar22 = local_300;
          if (local_320 == 0) {
            uVar14 = local_31c;
            if (local_2c5 == '\0') {
              while ((uVar12 = local_2d0, local_2f0 != 0x78 && (local_2f0 != 0x70))) {
                if ((local_2d0 & 0xff00) != 0) goto LAB_00a5bf8b;
                iVar13 = _isdigit(local_2d0 & 0xff);
                if (iVar13 == 0) goto LAB_00a5bf8b;
                if (local_2f0 == 0x6f) {
                  if (0x37 < (ushort)uVar12) goto LAB_00a5bf8b;
                  iVar13 = uVar14 << 3;
                }
                else {
                  iVar13 = uVar14 * 10;
                }
LAB_00a5bf4d:
                local_2ec = local_2ec + 1;
                uVar14 = iVar13 + -0x30 + (uVar12 & 0xffff);
                if ((local_2f8 != 0) &&
                   (local_2d8 = local_2d8 + -1, lVar22 = local_300, local_2d8 == 0))
                goto LAB_00a5bf9f;
                local_2cc = local_2cc + 1;
                wVar5 = __fgetwc_nolock(local_2e0);
                local_2d0 = (uint)wVar5;
              }
              if ((local_2d0 & 0xff00) == 0) {
                iVar13 = _isxdigit(local_2d0 & 0xff);
                if (iVar13 != 0) {
                  iVar13 = uVar14 << 4;
                  uVar12 = __hextodec(uVar12);
                  uVar12 = uVar12 & 0xffff;
                  local_2d0 = uVar12;
                  goto LAB_00a5bf4d;
                }
              }
LAB_00a5bf8b:
              local_2cc = local_2cc - 1;
              __un_inc(uVar12,local_2e0);
              lVar22 = local_300;
            }
LAB_00a5bf9f:
            if (local_2e3 != '\0') {
              uVar14 = -uVar14;
            }
          }
          else {
            if (local_2c5 == '\0') {
              while ((uVar14 = local_2d0, local_2f0 != 0x78 && (local_2f0 != 0x70))) {
                if ((local_2d0 & 0xff00) != 0) goto LAB_00a5be82;
                iVar13 = _isdigit(local_2d0 & 0xff);
                if (iVar13 == 0) goto LAB_00a5be82;
                if (local_2f0 == 0x6f) {
                  if (0x37 < (ushort)uVar14) goto LAB_00a5be82;
                  lVar22 = local_300 << 3;
                }
                else {
                  lVar22 = __allmul(local_300,10,0);
                }
LAB_00a5be36:
                local_2ec = local_2ec + 1;
                local_300 = lVar22 + (int)((uVar14 & 0xffff) - 0x30);
                if ((local_2f8 != 0) &&
                   (local_2d8 = local_2d8 + -1, lVar22 = local_300, local_2d8 == 0))
                goto LAB_00a5be96;
                local_2cc = local_2cc + 1;
                wVar5 = __fgetwc_nolock(local_2e0);
                local_2d0 = (uint)wVar5;
              }
              if ((local_2d0 & 0xff00) == 0) {
                iVar13 = _isxdigit(local_2d0 & 0xff);
                if (iVar13 != 0) {
                  lVar22 = local_300 << 4;
                  local_300._4_4_ = (int)((ulonglong)lVar22 >> 0x20);
                  uVar14 = __hextodec(uVar14);
                  lVar22 = CONCAT44(local_300._4_4_,(int)lVar22);
                  uVar14 = uVar14 & 0xffff;
                  local_2d0 = uVar14;
                  goto LAB_00a5be36;
                }
              }
LAB_00a5be82:
              local_2cc = local_2cc - 1;
              __un_inc(uVar14,local_2e0);
              lVar22 = local_300;
            }
LAB_00a5be96:
            local_300._4_4_ = (int)((ulonglong)lVar22 >> 0x20);
            local_300._0_4_ = (int)lVar22;
            uVar14 = local_31c;
            if (local_2e3 != '\0') {
              lVar22 = CONCAT44(-(local_300._4_4_ + (uint)((int)local_300 != 0)),-(int)local_300);
            }
          }
          if (local_2f0 == 0x46) {
            local_2ec = 0;
          }
          local_300 = lVar22;
          if (local_2ec == 0) goto LAB_00a5c0a7;
          if (local_2d9 == '\0') {
            local_30c = local_30c + 1;
LAB_00a5bfdc:
            local_300 = lVar22;
            if (local_320 == 0) {
              if (local_2da == '\0') {
                *(short *)local_308 = (short)uVar14;
              }
              else {
                *(uint *)local_308 = uVar14;
              }
            }
            else {
              *local_308 = lVar22;
            }
          }
        }
        goto LAB_00a5c008;
      }
LAB_00a5c0a0:
      __un_inc(local_2d0,local_2e0);
LAB_00a5c0a7:
      if (local_32c == 1) {
        _free(local_310);
      }
      if (local_314 == 1) {
        _free(local_2e8);
      }
      if ((wchar_t)local_2d0 == -1) {
        if (local_334 != '\0') {
          *(uint *)(local_338 + 0x70) = *(uint *)(local_338 + 0x70) & 0xfffffffd;
        }
        goto LAB_00a5c123;
      }
    }
    if (local_334 != '\0') {
      *(uint *)(local_338 + 0x70) = *(uint *)(local_338 + 0x70) & 0xfffffffd;
    }
  }
LAB_00a5c123:
  iVar13 = ___security_check_cookie_4();
  return iVar13;
LAB_00a5bca8:
  local_2cc = local_2cc - 1;
  __un_inc(local_2d0,local_2e0);
LAB_00a5bcbc:
  if (plVar20 == plVar17) goto LAB_00a5c0a7;
  if ((local_2d9 == '\0') && (local_30c = local_30c + 1, uVar14 != 99)) {
    if (local_2e2 == '\0') {
      *(undefined *)local_308 = 0;
    }
    else {
      *(undefined2 *)local_308 = 0;
    }
  }
LAB_00a5c008:
  local_2e1 = local_2e1 + '\x01';
  param_2 = local_304 + 1;
LAB_00a5c05a:
  local_304 = param_2;
  if (((wchar_t)local_2d0 == -1) && ((*param_2 != L'%' || (param_2[1] != L'n')))) goto LAB_00a5c0a7;
LAB_00a5c07d:
  wVar4 = *param_2;
  if (wVar4 == L'\0') goto LAB_00a5c0a7;
  goto LAB_00a5b0e2;
}



// Library Function - Single Match
//  _write_string
// 
// Library: Visual Studio 2008 Release

void __thiscall _write_string(undefined2 *param_1_00,int param_1)

{
  int *in_EAX;
  int *piVar1;
  int unaff_EDI;
  
  if (((*(byte *)(unaff_EDI + 0xc) & 0x40) == 0) || (*(int *)(unaff_EDI + 8) != 0)) {
    while (0 < param_1) {
      param_1 = param_1 + -1;
      _write_char(*param_1_00);
      param_1_00 = param_1_00 + 1;
      if (*in_EAX == -1) {
        piVar1 = __errno();
        if (*piVar1 != 0x2a) {
          return;
        }
        _write_char(0x3f);
      }
    }
  }
  else {
    *in_EAX = *in_EAX + param_1;
  }
  return;
}



// WARNING: Type propagation algorithm not settling
// Library Function - Single Match
//  __woutput_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __woutput_l(FILE *_File,wchar_t *_Format,_locale_t _Locale,va_list _ArgList)

{
  wchar_t wVar1;
  FILE *pFVar2;
  int *piVar3;
  int *piVar4;
  uint uVar5;
  code *pcVar6;
  int iVar7;
  int extraout_ECX;
  byte *pbVar8;
  int *piVar9;
  byte *pbVar10;
  bool bVar11;
  longlong lVar12;
  int *local_470;
  int *local_46c;
  uint local_468;
  undefined4 local_464;
  int local_460;
  localeinfo_struct local_45c;
  int local_454;
  char local_450;
  int local_44c;
  int *local_448;
  wchar_t *local_444;
  int local_440;
  undefined2 local_43c;
  short local_43a;
  char local_438;
  undefined local_437;
  FILE *local_434;
  int *local_430;
  int local_42c;
  int local_428;
  int local_424;
  int **local_420;
  byte *local_41c;
  byte *local_418;
  int *local_414;
  int *local_410;
  uint local_40c;
  int local_408 [127];
  undefined4 local_209;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_434 = _File;
  local_420 = (int **)_ArgList;
  local_44c = 0;
  local_40c = 0;
  local_430 = (int *)0x0;
  local_410 = (int *)0x0;
  local_428 = 0;
  local_440 = 0;
  local_42c = 0;
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_45c,_Locale);
  if ((local_434 == (FILE *)0x0) || (_Format == (wchar_t *)0x0)) {
    piVar4 = __errno();
    *piVar4 = 0x16;
LAB_00a5c202:
    __invalid_parameter(0,0,0,0,0);
    if (local_450 != '\0') {
      *(uint *)(local_454 + 0x70) = *(uint *)(local_454 + 0x70) & 0xfffffffd;
    }
  }
  else {
    wVar1 = *_Format;
    local_424 = 0;
    local_418 = (byte *)0x0;
    local_448 = (int *)0x0;
    iVar7 = 0;
    while (local_41c = (byte *)(uint)(ushort)wVar1, wVar1 != L'\0') {
      local_444 = _Format + 1;
      if (local_424 < 0) break;
      if ((ushort)(wVar1 + L'￠') < 0x59) {
        uVar5 = (int)(char)local_41c[0xda1cc8] & 0xf;
      }
      else {
        uVar5 = 0;
      }
      local_460 = (int)(char)(&DAT_00da1ce8)[uVar5 * 8 + iVar7] >> 4;
      switch(local_460) {
      case 0:
switchD_00a5c29d_caseD_0:
        local_42c = 1;
        _write_char(local_41c);
        break;
      case 1:
        local_410 = (int *)0xffffffff;
        local_464 = 0;
        local_440 = 0;
        local_430 = (int *)0x0;
        local_428 = 0;
        local_40c = 0;
        local_42c = 0;
        break;
      case 2:
        if (local_41c == (byte *)0x20) {
          local_40c = local_40c | 2;
        }
        else if (local_41c == (byte *)0x23) {
          local_40c = local_40c | 0x80;
        }
        else if (local_41c == (byte *)0x2b) {
          local_40c = local_40c | 1;
        }
        else if (local_41c == (byte *)0x2d) {
          local_40c = local_40c | 4;
        }
        else if (local_41c == (byte *)0x30) {
          local_40c = local_40c | 8;
        }
        break;
      case 3:
        if (wVar1 == L'*') {
          local_420 = (int **)((int)_ArgList + 4);
          local_430 = *(int **)_ArgList;
          if ((int)local_430 < 0) {
            local_40c = local_40c | 4;
            local_430 = (int *)-(int)local_430;
          }
        }
        else {
          local_430 = (int *)(local_41c + (int)local_430 * 10 + -0x30);
        }
        break;
      case 4:
        local_410 = (int *)0x0;
        break;
      case 5:
        if (wVar1 == L'*') {
          local_420 = (int **)((int)_ArgList + 4);
          local_410 = *(int **)_ArgList;
          if ((int)local_410 < 0) {
            local_410 = (int *)0xffffffff;
          }
        }
        else {
          local_410 = (int *)(local_41c + (int)local_410 * 10 + -0x30);
        }
        break;
      case 6:
        if (local_41c == (byte *)0x49) {
          wVar1 = *local_444;
          if ((wVar1 == L'6') && (_Format[2] == L'4')) {
            local_444 = _Format + 3;
            local_40c = local_40c | 0x8000;
          }
          else if ((wVar1 == L'3') && (_Format[2] == L'2')) {
            local_444 = _Format + 3;
            local_40c = local_40c & 0xffff7fff;
          }
          else if (((((wVar1 != L'd') && (wVar1 != L'i')) && (wVar1 != L'o')) &&
                   ((wVar1 != L'u' && (wVar1 != L'x')))) && (wVar1 != L'X')) {
            local_460 = 0;
            goto switchD_00a5c29d_caseD_0;
          }
        }
        else if (local_41c == (byte *)0x68) {
          local_40c = local_40c | 0x20;
        }
        else if (local_41c == (byte *)0x6c) {
          if (*local_444 == L'l') {
            local_444 = _Format + 2;
            local_40c = local_40c | 0x1000;
          }
          else {
            local_40c = local_40c | 0x10;
          }
        }
        else if (local_41c == (byte *)0x77) {
          local_40c = local_40c | 0x800;
        }
        break;
      case 7:
        if (local_41c < (byte *)0x65) {
          if (local_41c == (byte *)0x64) {
LAB_00a5c7b5:
            local_40c = local_40c | 0x40;
LAB_00a5c7bc:
            local_41c = (byte *)0xa;
LAB_00a5c7c6:
            if (((local_40c & 0x8000) == 0) && ((local_40c & 0x1000) == 0)) {
              local_420 = (int **)((int)_ArgList + 4);
              if ((local_40c & 0x20) == 0) {
                piVar4 = *(int **)_ArgList;
                if ((local_40c & 0x40) == 0) {
                  piVar9 = (int *)0x0;
                }
                else {
                  piVar9 = (int *)((int)piVar4 >> 0x1f);
                }
              }
              else {
                if ((local_40c & 0x40) == 0) {
                  piVar4 = (int *)(uint)*(ushort *)_ArgList;
                }
                else {
                  piVar4 = (int *)(int)*(short *)_ArgList;
                }
                piVar9 = (int *)((int)piVar4 >> 0x1f);
              }
            }
            else {
              piVar4 = *(int **)_ArgList;
              piVar9 = *(int **)((int)_ArgList + 4);
              local_420 = (int **)((int)_ArgList + 8);
            }
            if ((((local_40c & 0x40) != 0) && ((int)piVar9 < 1)) && ((int)piVar9 < 0)) {
              bVar11 = piVar4 != (int *)0x0;
              piVar4 = (int *)-(int)piVar4;
              piVar9 = (int *)-(int)((int)piVar9 + (uint)bVar11);
              local_40c = local_40c | 0x100;
            }
            if ((local_40c & 0x9000) == 0) {
              piVar9 = (int *)0x0;
            }
            lVar12 = CONCAT44(piVar9,piVar4);
            if ((int)local_410 < 0) {
              local_410 = (int *)0x1;
            }
            else {
              local_40c = local_40c & 0xfffffff7;
              if (0x200 < (int)local_410) {
                local_410 = (int *)0x200;
              }
            }
            if (((uint)piVar4 | (uint)piVar9) == 0) {
              local_428 = 0;
            }
            piVar4 = &local_209;
            while ((piVar9 = (int *)((int)local_410 + -1), 0 < (int)local_410 || (lVar12 != 0))) {
              local_410 = piVar9;
              lVar12 = __aulldvrm(lVar12,local_41c,(int)local_41c >> 0x1f);
              iVar7 = extraout_ECX + 0x30;
              if (0x39 < iVar7) {
                iVar7 = iVar7 + local_44c;
              }
              *(byte *)piVar4 = (byte)iVar7;
              piVar4 = (int *)((int)piVar4 + -1);
            }
            local_418 = (byte *)((int)&local_209 + -(int)piVar4);
            local_414 = (int *)((int)piVar4 + 1);
            local_410 = piVar9;
            if (((local_40c & 0x200) != 0) &&
               ((local_418 == (byte *)0x0 || (*(byte *)local_414 != 0x30)))) {
              *(byte *)piVar4 = 0x30;
              local_418 = (byte *)((int)&local_209 + -(int)piVar4 + 1);
              local_414 = piVar4;
            }
          }
          else if (local_41c < (byte *)0x54) {
            if (local_41c == (byte *)0x53) {
              if ((local_40c & 0x830) == 0) {
                local_40c = local_40c | 0x20;
              }
              goto LAB_00a5c591;
            }
            if (local_41c != (byte *)0x41) {
              if (local_41c == (byte *)0x43) {
                if ((local_40c & 0x830) == 0) {
                  local_40c = local_40c | 0x20;
                }
LAB_00a5c63a:
                wVar1 = *(wchar_t *)_ArgList;
                local_468 = (uint)(ushort)wVar1;
                local_420 = (int **)((int)_ArgList + 4);
                local_42c = 1;
                if ((local_40c & 0x20) == 0) {
                  local_408[0]._0_2_ = wVar1;
                }
                else {
                  local_438 = (char)wVar1;
                  local_437 = 0;
                  iVar7 = __mbtowc_l((wchar_t *)local_408,&local_438,
                                     (size_t)(local_45c.locinfo)->locale_name[3],&local_45c);
                  if (iVar7 < 0) {
                    local_440 = 1;
                  }
                }
                local_418 = (byte *)0x1;
                local_414 = local_408;
                goto LAB_00a5cb04;
              }
              if ((local_41c != (byte *)0x45) && (local_41c != (byte *)0x47)) goto LAB_00a5cb04;
            }
            local_41c = local_41c + 0x20;
            local_464 = 1;
LAB_00a5c528:
            local_40c = local_40c | 0x40;
            local_418 = (byte *)0x200;
            piVar4 = local_408;
            pbVar10 = local_418;
            piVar9 = local_408;
            if ((int)local_410 < 0) {
              local_410 = (int *)0x6;
            }
            else if (local_410 == (int *)0x0) {
              if ((short)local_41c == 0x67) {
                local_410 = (int *)0x1;
              }
            }
            else {
              if (0x200 < (int)local_410) {
                local_410 = (int *)0x200;
              }
              if (0xa3 < (int)local_410) {
                pbVar10 = (byte *)((int)local_410 + 0x15d);
                local_414 = local_408;
                local_448 = (int *)__malloc_crt((size_t)pbVar10);
                piVar4 = local_448;
                piVar9 = local_448;
                if (local_448 == (int *)0x0) {
                  local_410 = (int *)0xa3;
                  piVar4 = local_408;
                  pbVar10 = local_418;
                  piVar9 = local_414;
                }
              }
            }
            local_414 = piVar9;
            local_418 = pbVar10;
            local_470 = *(int **)_ArgList;
            local_420 = (int **)((int)_ArgList + 8);
            local_46c = *(int **)((int)_ArgList + 4);
            pcVar6 = (code *)__decode_pointer(PTR_LAB_03240778,&local_470,piVar4,local_418,
                                              (int)(char)local_41c,local_410,local_464,&local_45c);
            (*pcVar6)();
            uVar5 = local_40c & 0x80;
            if ((uVar5 != 0) && (local_410 == (int *)0x0)) {
              pcVar6 = (code *)__decode_pointer(PTR_LAB_03240784,piVar4,&local_45c);
              (*pcVar6)();
            }
            if (((short)local_41c == 0x67) && (uVar5 == 0)) {
              pcVar6 = (code *)__decode_pointer(PTR_LAB_03240780,piVar4,&local_45c);
              (*pcVar6)();
            }
            piVar9 = piVar4;
            piVar3 = local_414;
            if (*(byte *)piVar4 == 0x2d) {
              local_40c = local_40c | 0x100;
              piVar9 = (int *)((int)piVar4 + 1);
              piVar3 = (int *)((int)piVar4 + 1);
            }
LAB_00a5c713:
            local_414 = piVar3;
            local_418 = (byte *)_strlen((char *)piVar9);
          }
          else {
            if (local_41c == (byte *)0x58) goto LAB_00a5c919;
            if (local_41c == (byte *)0x5a) {
              piVar4 = *(int **)_ArgList;
              local_420 = (int **)((int)_ArgList + 4);
              piVar9 = (int *)PTR_DAT_03240080;
              piVar3 = (int *)PTR_DAT_03240080;
              if ((piVar4 == (int *)0x0) ||
                 (local_414 = (int *)piVar4[1], piVar3 = (int *)PTR_DAT_03240080,
                 local_414 == (int *)0x0)) goto LAB_00a5c713;
              local_418 = (byte *)(int)*(short *)piVar4;
              if ((local_40c & 0x800) != 0) {
                iVar7 = (int)local_418 - ((int)local_418 >> 0x1f);
                goto LAB_00a5cafc;
              }
              local_42c = 0;
            }
            else {
              if (local_41c == (byte *)0x61) goto LAB_00a5c528;
              if (local_41c == (byte *)0x63) goto LAB_00a5c63a;
            }
          }
LAB_00a5cb04:
          pbVar10 = local_418;
          if (local_440 == 0) {
            if ((local_40c & 0x40) != 0) {
              if ((local_40c & 0x100) == 0) {
                if ((local_40c & 1) == 0) {
                  if ((local_40c & 2) == 0) goto LAB_00a5cb46;
                  local_43c = 0x20;
                }
                else {
                  local_43c = 0x2b;
                }
              }
              else {
                local_43c = 0x2d;
              }
              local_428 = 1;
            }
LAB_00a5cb46:
            pbVar8 = (byte *)((int)local_430 + (-local_428 - (int)local_418));
            if ((local_40c & 0xc) == 0) {
              _write_multi_char(0x20,pbVar8,local_434);
            }
            pFVar2 = local_434;
            _write_string(local_428);
            if (((local_40c & 8) != 0) && ((local_40c & 4) == 0)) {
              _write_multi_char(0x30,pbVar8,pFVar2);
            }
            if ((local_42c == 0) && (0 < (int)pbVar10)) {
              local_41c = pbVar10;
              piVar4 = local_414;
              do {
                local_41c = local_41c + -1;
                iVar7 = __mbtowc_l((wchar_t *)&local_468,(char *)piVar4,
                                   (size_t)(local_45c.locinfo)->locale_name[3],&local_45c);
                if (iVar7 < 1) {
                  local_424 = -1;
                  break;
                }
                _write_char(local_468);
                piVar4 = (int *)((int)piVar4 + iVar7);
              } while (0 < (int)local_41c);
            }
            else {
              _write_string(pbVar10);
            }
            if ((-1 < local_424) && ((local_40c & 4) != 0)) {
              _write_multi_char(0x20,pbVar8,local_434);
            }
          }
        }
        else {
          if ((byte *)0x70 < local_41c) {
            if (local_41c == (byte *)0x73) {
LAB_00a5c591:
              piVar4 = local_410;
              if (local_410 == (int *)0xffffffff) {
                piVar4 = (int *)0x7fffffff;
              }
              local_420 = (int **)((int)_ArgList + 4);
              local_414 = *(int **)_ArgList;
              if ((local_40c & 0x20) == 0) {
                piVar9 = local_414;
                if (local_414 == (int *)0x0) {
                  piVar9 = (int *)PTR_u__null__03240084;
                  local_414 = (int *)PTR_u__null__03240084;
                }
                for (; (piVar4 != (int *)0x0 &&
                       (piVar4 = (int *)((int)piVar4 + -1), *(short *)piVar9 != 0));
                    piVar9 = (int *)((int)piVar9 + 2)) {
                }
                iVar7 = (int)piVar9 - (int)local_414;
LAB_00a5cafc:
                local_420 = (int **)((int)_ArgList + 4);
                local_42c = 1;
                local_418 = (byte *)(iVar7 >> 1);
              }
              else {
                if (local_414 == (int *)0x0) {
                  local_414 = (int *)PTR_DAT_03240080;
                }
                local_418 = (byte *)0x0;
                piVar9 = local_414;
                if (0 < (int)piVar4) {
                  do {
                    if (*(byte *)piVar9 == 0) break;
                    iVar7 = __isleadbyte_l((uint)*(byte *)piVar9,&local_45c);
                    if (iVar7 != 0) {
                      piVar9 = (int *)((int)piVar9 + 1);
                    }
                    piVar9 = (int *)((int)piVar9 + 1);
                    local_418 = local_418 + 1;
                  } while ((int)local_418 < (int)piVar4);
                }
              }
              goto LAB_00a5cb04;
            }
            if (local_41c == (byte *)0x75) goto LAB_00a5c7bc;
            if (local_41c != (byte *)0x78) goto LAB_00a5cb04;
            local_44c = 0x27;
LAB_00a5c945:
            local_41c = (byte *)0x10;
            if ((local_40c & 0x80) != 0) {
              local_43c = 0x30;
              local_43a = (short)local_44c + 0x51;
              local_428 = 2;
            }
            goto LAB_00a5c7c6;
          }
          if (local_41c == (byte *)0x70) {
            local_410 = (int *)0x8;
LAB_00a5c919:
            local_44c = 7;
            goto LAB_00a5c945;
          }
          if (local_41c < (byte *)0x65) goto LAB_00a5cb04;
          if (local_41c < (byte *)0x68) goto LAB_00a5c528;
          if (local_41c == (byte *)0x69) goto LAB_00a5c7b5;
          if (local_41c != (byte *)0x6e) {
            if (local_41c != (byte *)0x6f) goto LAB_00a5cb04;
            local_41c = (byte *)0x8;
            if ((local_40c & 0x80) != 0) {
              local_40c = local_40c | 0x200;
            }
            goto LAB_00a5c7c6;
          }
          piVar4 = *(int **)_ArgList;
          local_420 = (int **)((int)_ArgList + 4);
          iVar7 = __get_printf_count_output();
          if (iVar7 == 0) {
            piVar4 = __errno();
            *piVar4 = 0x16;
            goto LAB_00a5c202;
          }
          if ((local_40c & 0x20) == 0) {
            *piVar4 = local_424;
          }
          else {
            *(short *)piVar4 = (short)local_424;
          }
          local_440 = 1;
        }
        if (local_448 != (int *)0x0) {
          _free(local_448);
          local_448 = (int *)0x0;
        }
      }
      iVar7 = local_460;
      _Format = local_444;
      _ArgList = (va_list)local_420;
      wVar1 = *local_444;
    }
    if (local_450 != '\0') {
      *(uint *)(local_454 + 0x70) = *(uint *)(local_454 + 0x70) & 0xfffffffd;
    }
  }
  iVar7 = ___security_check_cookie_4();
  return iVar7;
}



// Library Function - Single Match
//  __validate_param_reuseW
// 
// Library: Visual Studio 2008 Release

bool __validate_param_reuseW(int *param_1,int param_2,short param_3,uint param_4)

{
  short sVar1;
  int iVar2;
  int iVar3;
  
  sVar1 = *(short *)(param_1 + 2);
  if ((sVar1 == 0x70) || (param_3 == 0x70)) {
    return sVar1 == param_3;
  }
  if ((sVar1 == 0x73) || (sVar1 == 0x53)) {
    iVar3 = 1;
  }
  else {
    iVar3 = 0;
  }
  if ((param_3 == 0x73) || (param_3 == 0x53)) {
    iVar2 = 1;
  }
  else {
    iVar2 = 0;
  }
  if (iVar3 != 0) {
    if (iVar3 != iVar2) {
      return false;
    }
    if (((~((uint)param_1[3] >> 5) ^ ~(param_4 >> 5)) & 1) != 0) {
      return false;
    }
    return true;
  }
  if (iVar2 != 0) {
    return false;
  }
  if (sVar1 == 100) {
LAB_00a5cde7:
    iVar3 = 1;
  }
  else {
    if ((((((sVar1 != 0x69) && (sVar1 != 0x6f)) && (sVar1 != 0x75)) &&
         (((sVar1 != 0x78 && (sVar1 != 0x58)) &&
          ((param_3 != 100 && ((param_3 != 0x69 && (param_3 != 0x6f)))))))) && (param_3 != 0x75)) &&
       ((param_3 != 0x78 && (param_3 != 0x58)))) goto LAB_00a5ce31;
    if ((sVar1 == 100) ||
       ((((sVar1 == 0x69 || (sVar1 == 0x6f)) || (sVar1 == 0x75)) ||
        ((sVar1 == 0x78 || (sVar1 == 0x58)))))) goto LAB_00a5cde7;
    iVar3 = 0;
  }
  if (((param_3 == 100) || (param_3 == 0x69)) ||
     ((param_3 == 0x6f || (((param_3 == 0x75 || (param_3 == 0x78)) || (param_3 == 0x58)))))) {
    iVar2 = 1;
  }
  else {
    iVar2 = 0;
  }
  if (((iVar3 != iVar2) || (((param_1[3] ^ param_4) & 0x10000) != 0)) ||
     (((param_1[3] ^ param_4) & 0x20) != 0)) {
    return false;
  }
LAB_00a5ce31:
  return *param_1 == param_2;
}



// Library Function - Single Match
//  _write_char
// 
// Library: Visual Studio 2008 Release

void _write_char(wchar_t param_1)

{
  wint_t wVar1;
  FILE *in_EAX;
  int *unaff_ESI;
  
  if (((*(byte *)&in_EAX->_flag & 0x40) == 0) || (in_EAX->_base != (char *)0x0)) {
    wVar1 = __fputwc_nolock(param_1,in_EAX);
    if (wVar1 == 0xffff) {
      *unaff_ESI = -1;
      return;
    }
  }
  *unaff_ESI = *unaff_ESI + 1;
  return;
}



// Library Function - Single Match
//  _write_multi_char
// 
// Library: Visual Studio 2008 Release

void _write_multi_char(undefined4 param_1,int param_2)

{
  int *in_EAX;
  
  do {
    if (param_2 < 1) {
      return;
    }
    param_2 = param_2 + -1;
    _write_char(param_1);
  } while (*in_EAX != -1);
  return;
}



// WARNING: Removing unreachable block (ram,0x00a5e093)
// WARNING: Removing unreachable block (ram,0x00a5e09c)
// WARNING: Removing unreachable block (ram,0x00a5e0a6)
// WARNING: Removing unreachable block (ram,0x00a5e0b2)
// WARNING: Removing unreachable block (ram,0x00a5e0b8)
// WARNING: Removing unreachable block (ram,0x00a5e0bb)
// WARNING: Removing unreachable block (ram,0x00a5e0be)
// WARNING: Removing unreachable block (ram,0x00a5e0df)
// WARNING: Removing unreachable block (ram,0x00a5e0c1)
// WARNING: Removing unreachable block (ram,0x00a5e0e6)
// WARNING: Removing unreachable block (ram,0x00a5e0eb)
// WARNING: Removing unreachable block (ram,0x00a5e0c4)
// WARNING: Removing unreachable block (ram,0x00a5e0c8)
// WARNING: Removing unreachable block (ram,0x00a5e0f1)
// Library Function - Single Match
//  __woutput_p_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __woutput_p_l(FILE *_File,wchar_t *_Format,_locale_t _Locale,va_list _ArgList)

{
  int *piVar1;
  uint uVar2;
  long lVar3;
  int iVar4;
  wchar_t *_Str;
  undefined local_ad8 [1608];
  wchar_t *local_490;
  undefined4 local_474;
  undefined4 local_470;
  undefined4 local_46c;
  FILE *local_464;
  uint local_45c;
  undefined4 local_458;
  wchar_t *local_454;
  undefined4 local_450;
  int local_44c;
  undefined4 local_448;
  wchar_t *local_444;
  undefined4 local_440;
  undefined4 local_43c;
  uint local_438;
  _LocaleUpdate local_434 [8];
  int local_42c;
  char local_428;
  int local_424;
  int local_420;
  undefined4 local_418;
  undefined4 local_414;
  va_list local_410;
  undefined4 local_40c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_464 = _File;
  local_410 = _ArgList;
  local_470 = 0;
  local_40c = 0;
  local_450 = 0;
  local_46c = 0;
  local_458 = 0;
  _LocaleUpdate::_LocaleUpdate(local_434,_Locale);
  local_418 = 0xffffffff;
  local_454 = (wchar_t *)0x0;
  if ((_File == (FILE *)0x0) || (_Format == (wchar_t *)0x0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
LAB_00a5cf51:
    if (local_428 != '\0') {
      *(uint *)(local_42c + 0x70) = *(uint *)(local_42c + 0x70) & 0xfffffffd;
    }
  }
  else {
    local_440 = 0;
    local_490 = _Format;
    local_420 = 0;
    do {
      local_438 = (uint)(ushort)*_Format;
      local_44c = -1;
      local_424 = -1;
      local_418 = 0xffffffff;
      local_43c = 0;
      local_45c = 0;
      local_474 = 0;
      local_448 = 0;
      local_414 = 0;
      local_444 = local_490;
      if (*_Format != L'\0') {
        do {
          _Str = local_444 + 1;
          local_444 = _Str;
          if ((ushort)((short)local_438 - 0x20U) < 0x59) {
            uVar2 = (byte)(&DAT_00da4780)[local_438] & 0xf;
          }
          else {
            uVar2 = 0;
          }
          uVar2 = (uint)((byte)(&DAT_00da47a0)[local_45c + uVar2 * 9] >> 4);
          local_45c = uVar2;
          if (uVar2 == 1) {
            if (*_Str != L'%') {
              lVar3 = _wcstol(_Str,&local_454,10);
              if ((lVar3 < 1) || (*local_454 != L'$')) {
                local_418 = 0;
              }
              else {
                if (local_420 == 0) {
                  _memset(local_ad8,0,0x640);
                }
                local_418 = 1;
                lVar3 = _wcstol(_Str,&local_454,10);
                local_424 = lVar3 + -1;
                local_444 = local_454 + 1;
                if (local_420 == 0) {
                  if (((local_424 < 0) || (*local_454 != L'$')) || (99 < local_424)) {
                    piVar1 = __errno();
                    *piVar1 = 0x16;
                    goto LAB_00a5d8b1;
                  }
                  if (local_44c < local_424) {
                    local_44c = local_424;
                  }
                }
              }
            }
LAB_00a5d112:
                    // WARNING: Could not recover jumptable at 0x00a5d118. Too many branches
                    // WARNING: Treating indirect jump as call
            iVar4 = (**(code **)(&DAT_00a5e167 + uVar2 * 4))();
            return iVar4;
          }
          if (uVar2 == 8) goto LAB_00a5e119;
          if (uVar2 < 8) goto LAB_00a5d112;
          local_438 = (uint)(ushort)*_Str;
        } while (*_Str != L'\0');
        if ((uVar2 != 0) && (uVar2 != 7)) {
LAB_00a5e119:
          piVar1 = __errno();
          *piVar1 = 0x16;
LAB_00a5d8b1:
          __invalid_parameter(0,0,0,0,0);
          goto LAB_00a5cf51;
        }
      }
      local_420 = local_420 + 1;
    } while (local_420 < 2);
    local_414 = 0;
    local_424 = -1;
    local_43c = 0;
    local_448 = 0;
    local_44c = -1;
    local_474 = 0;
    local_418 = 0xffffffff;
    if (local_428 != '\0') {
      *(uint *)(local_42c + 0x70) = *(uint *)(local_42c + 0x70) & 0xfffffffd;
    }
  }
  iVar4 = ___security_check_cookie_4();
  return iVar4;
}



// Library Function - Single Match
//  __flswbuf
// 
// Library: Visual Studio 2008 Release

int __cdecl __flswbuf(int _Ch,FILE *_File)

{
  uint uVar1;
  char *_Buf;
  char *pcVar2;
  uint _FileHandle;
  int *piVar3;
  int iVar4;
  undefined *puVar5;
  int unaff_EDI;
  uint _MaxCharCount;
  longlong lVar6;
  undefined4 local_8;
  
  _FileHandle = __fileno(_File);
  uVar1 = _File->_flag;
  if ((uVar1 & 0x82) == 0) {
    piVar3 = __errno();
    *piVar3 = 9;
LAB_00a5e1ad:
    _File->_flag = _File->_flag | 0x20;
    return 0xffff;
  }
  if ((uVar1 & 0x40) != 0) {
    piVar3 = __errno();
    *piVar3 = 0x22;
    goto LAB_00a5e1ad;
  }
  if ((uVar1 & 1) != 0) {
    _File->_cnt = 0;
    if ((uVar1 & 0x10) == 0) {
      _File->_flag = uVar1 | 0x20;
      return 0xffff;
    }
    _File->_ptr = _File->_base;
    _File->_flag = uVar1 & 0xfffffffe;
  }
  uVar1 = _File->_flag;
  _File->_cnt = 0;
  local_8 = 0;
  _MaxCharCount = 2;
  _File->_flag = uVar1 & 0xffffffef | 2;
  if (((uVar1 & 0x10c) == 0) &&
     (((iVar4 = FUN_00a475e9(), _File != (FILE *)(iVar4 + 0x20) &&
       (iVar4 = FUN_00a475e9(), _File != (FILE *)(iVar4 + 0x40))) ||
      (iVar4 = __isatty(_FileHandle), iVar4 == 0)))) {
    __getbuf(_File);
  }
  if ((_File->_flag & 0x108U) == 0) {
    local_8 = CONCAT22(local_8._2_2_,(short)_Ch);
    local_8 = __write(_FileHandle,&local_8,2);
  }
  else {
    _Buf = _File->_base;
    pcVar2 = _File->_ptr;
    _File->_ptr = _Buf + 2;
    _MaxCharCount = (int)pcVar2 - (int)_Buf;
    _File->_cnt = _File->_bufsiz + -2;
    if ((int)_MaxCharCount < 1) {
      if ((_FileHandle == 0xffffffff) || (_FileHandle == 0xfffffffe)) {
        puVar5 = &DAT_03240190;
      }
      else {
        puVar5 = (undefined *)((_FileHandle & 0x1f) * 0x40 + (&DAT_032f1700)[(int)_FileHandle >> 5])
        ;
      }
      if (((puVar5[4] & 0x20) != 0) &&
         (lVar6 = __lseeki64(_FileHandle,0x200000000,unaff_EDI), lVar6 == -1)) goto LAB_00a5e2e4;
    }
    else {
      local_8 = __write(_FileHandle,_Buf,_MaxCharCount);
    }
    *(short *)_File->_base = (short)_Ch;
  }
  if (local_8 == _MaxCharCount) {
    return _Ch & 0xffff;
  }
LAB_00a5e2e4:
  _File->_flag = _File->_flag | 0x20;
  return 0xffff;
}



// Library Function - Single Match
//  __woutput_s_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __woutput_s_l(FILE *_File,wchar_t *_Format,_locale_t _Locale,va_list _ArgList)

{
  wchar_t wVar1;
  ushort uVar2;
  short sVar3;
  FILE *pFVar4;
  int *piVar5;
  uint uVar6;
  code *pcVar7;
  int iVar8;
  int extraout_ECX;
  byte *pbVar9;
  int **ppiVar10;
  int *piVar11;
  byte *pbVar12;
  wchar_t *pwVar13;
  bool bVar14;
  longlong lVar15;
  int *local_470;
  int *local_46c;
  uint local_468;
  wchar_t *local_464;
  undefined4 local_460;
  int *local_45c;
  int local_458;
  int local_454;
  localeinfo_struct local_450;
  int local_448;
  char local_444;
  FILE *local_440;
  char local_43c;
  undefined local_43b;
  uint local_438;
  undefined2 local_434;
  short local_432;
  int *local_430;
  int local_42c;
  int local_428;
  int local_424;
  byte *local_420;
  int **local_41c;
  byte *local_418;
  int *local_414;
  int *local_410;
  uint local_40c;
  ushort local_408;
  undefined4 local_209;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_440 = _File;
  local_41c = (int **)_ArgList;
  local_458 = 0;
  local_40c = 0;
  local_430 = (int *)0x0;
  local_410 = (int *)0x0;
  local_428 = 0;
  local_454 = 0;
  local_42c = 0;
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_450,_Locale);
  if (_File == (FILE *)0x0) {
LAB_00a5e366:
    piVar5 = __errno();
    *piVar5 = 0x16;
  }
  else {
    if (_Format != (wchar_t *)0x0) {
      local_420 = (byte *)(uint)(ushort)*_Format;
      local_424 = 0;
      local_418 = (byte *)0x0;
      local_438 = 0;
      local_45c = (int *)0x0;
      if (*_Format != L'\0') {
        do {
          pwVar13 = _Format + 1;
          local_464 = pwVar13;
          if (local_424 < 0) break;
          sVar3 = (short)local_420;
          if ((ushort)(sVar3 - 0x20U) < 0x59) {
            uVar6 = local_420[0xda4780] & 0xf;
          }
          else {
            uVar6 = 0;
          }
          local_438 = (uint)((byte)(&DAT_00da47a0)[local_438 + uVar6 * 9] >> 4);
          if (local_438 == 8) goto LAB_00a5e366;
          ppiVar10 = local_41c;
          switch(local_438) {
          case 0:
switchD_00a5e43c_caseD_0:
            local_42c = 1;
            _write_char(local_420);
            ppiVar10 = (int **)_ArgList;
            break;
          case 1:
            local_410 = (int *)0xffffffff;
            local_460 = 0;
            local_454 = 0;
            local_430 = (int *)0x0;
            local_428 = 0;
            local_40c = 0;
            local_42c = 0;
            ppiVar10 = (int **)_ArgList;
            break;
          case 2:
            if (local_420 == (byte *)0x20) {
              local_40c = local_40c | 2;
              ppiVar10 = (int **)_ArgList;
            }
            else if (local_420 == (byte *)0x23) {
              local_40c = local_40c | 0x80;
              ppiVar10 = (int **)_ArgList;
            }
            else if (local_420 == (byte *)0x2b) {
              local_40c = local_40c | 1;
              ppiVar10 = (int **)_ArgList;
            }
            else if (local_420 == (byte *)0x2d) {
              local_40c = local_40c | 4;
              ppiVar10 = (int **)_ArgList;
            }
            else if (local_420 == (byte *)0x30) {
              local_40c = local_40c | 8;
              ppiVar10 = (int **)_ArgList;
            }
            break;
          case 3:
            if (sVar3 == 0x2a) {
              local_430 = *(int **)_ArgList;
              local_41c = (int **)((int)_ArgList + 4);
              ppiVar10 = local_41c;
              if ((int)local_430 < 0) {
                local_40c = local_40c | 4;
                local_430 = (int *)-(int)local_430;
              }
            }
            else {
              local_430 = (int *)(local_420 + (int)local_430 * 10 + -0x30);
              ppiVar10 = (int **)_ArgList;
            }
            break;
          case 4:
            local_410 = (int *)0x0;
            ppiVar10 = (int **)_ArgList;
            break;
          case 5:
            if (sVar3 == 0x2a) {
              local_410 = *(int **)_ArgList;
              local_41c = (int **)((int)_ArgList + 4);
              ppiVar10 = local_41c;
              if ((int)local_410 < 0) {
                local_410 = (int *)0xffffffff;
              }
            }
            else {
              local_410 = (int *)(local_420 + (int)local_410 * 10 + -0x30);
              ppiVar10 = (int **)_ArgList;
            }
            break;
          case 6:
            if (local_420 == (byte *)0x49) {
              wVar1 = *pwVar13;
              if ((wVar1 == L'6') && (_Format[2] == L'4')) {
                local_40c = local_40c | 0x8000;
                ppiVar10 = (int **)_ArgList;
                pwVar13 = _Format + 3;
              }
              else if ((wVar1 == L'3') && (_Format[2] == L'2')) {
                local_40c = local_40c & 0xffff7fff;
                ppiVar10 = (int **)_ArgList;
                pwVar13 = _Format + 3;
              }
              else {
                ppiVar10 = (int **)_ArgList;
                if (((((wVar1 != L'd') && (wVar1 != L'i')) && (wVar1 != L'o')) &&
                    ((wVar1 != L'u' && (wVar1 != L'x')))) && (wVar1 != L'X')) {
                  local_438 = 0;
                  goto switchD_00a5e43c_caseD_0;
                }
              }
            }
            else if (local_420 == (byte *)0x68) {
              local_40c = local_40c | 0x20;
              ppiVar10 = (int **)_ArgList;
            }
            else if (local_420 == (byte *)0x6c) {
              if (*pwVar13 == L'l') {
                local_40c = local_40c | 0x1000;
                ppiVar10 = (int **)_ArgList;
                pwVar13 = _Format + 2;
              }
              else {
                local_40c = local_40c | 0x10;
                ppiVar10 = (int **)_ArgList;
              }
            }
            else {
              ppiVar10 = (int **)_ArgList;
              if (local_420 == (byte *)0x77) {
                local_40c = local_40c | 0x800;
              }
            }
            break;
          case 7:
            if (local_420 < (byte *)0x65) {
              if (local_420 == (byte *)0x64) {
LAB_00a5e93c:
                local_40c = local_40c | 0x40;
LAB_00a5e943:
                local_420 = (byte *)0xa;
LAB_00a5e94d:
                if (((local_40c & 0x8000) == 0) && ((local_40c & 0x1000) == 0)) {
                  local_41c = (int **)((int)_ArgList + 4);
                  if ((local_40c & 0x20) == 0) {
                    piVar5 = *(int **)_ArgList;
                    if ((local_40c & 0x40) == 0) {
                      piVar11 = (int *)0x0;
                    }
                    else {
                      piVar11 = (int *)((int)piVar5 >> 0x1f);
                    }
                  }
                  else {
                    if ((local_40c & 0x40) == 0) {
                      piVar5 = (int *)(uint)*(ushort *)_ArgList;
                    }
                    else {
                      piVar5 = (int *)(int)*(short *)_ArgList;
                    }
                    piVar11 = (int *)((int)piVar5 >> 0x1f);
                  }
                }
                else {
                  local_41c = (int **)((int)_ArgList + 8);
                  piVar5 = *(int **)_ArgList;
                  piVar11 = *(int **)((int)_ArgList + 4);
                }
                if ((((local_40c & 0x40) != 0) && ((int)piVar11 < 1)) && ((int)piVar11 < 0)) {
                  bVar14 = piVar5 != (int *)0x0;
                  piVar5 = (int *)-(int)piVar5;
                  piVar11 = (int *)-(int)((int)piVar11 + (uint)bVar14);
                  local_40c = local_40c | 0x100;
                }
                if ((local_40c & 0x9000) == 0) {
                  piVar11 = (int *)0x0;
                }
                lVar15 = CONCAT44(piVar11,piVar5);
                if ((int)local_410 < 0) {
                  local_410 = (int *)0x1;
                }
                else {
                  local_40c = local_40c & 0xfffffff7;
                  if (0x200 < (int)local_410) {
                    local_410 = (int *)0x200;
                  }
                }
                if (((uint)piVar5 | (uint)piVar11) == 0) {
                  local_428 = 0;
                }
                piVar5 = &local_209;
                while( true ) {
                  piVar11 = (int *)((int)local_410 + -1);
                  if (((int)local_410 < 1) && (lVar15 == 0)) break;
                  local_410 = piVar11;
                  lVar15 = __aulldvrm(lVar15,local_420,(int)local_420 >> 0x1f);
                  iVar8 = extraout_ECX + 0x30;
                  if (0x39 < iVar8) {
                    iVar8 = iVar8 + local_458;
                  }
                  *(byte *)piVar5 = (byte)iVar8;
                  piVar5 = (int *)((int)piVar5 + -1);
                }
                local_418 = (byte *)((int)&local_209 + -(int)piVar5);
                local_414 = (int *)((int)piVar5 + 1);
                local_410 = piVar11;
                if (((local_40c & 0x200) != 0) &&
                   ((local_418 == (byte *)0x0 || (*(byte *)local_414 != 0x30)))) {
                  *(byte *)piVar5 = 0x30;
                  local_418 = (byte *)((int)&local_209 + -(int)piVar5 + 1);
                  local_414 = piVar5;
                }
              }
              else if (local_420 < (byte *)0x54) {
                if (local_420 == (byte *)0x53) {
                  if ((local_40c & 0x830) == 0) {
                    local_40c = local_40c | 0x20;
                  }
                  goto LAB_00a5e71b;
                }
                if (local_420 != (byte *)0x41) {
                  if (local_420 == (byte *)0x43) {
                    if ((local_40c & 0x830) == 0) {
                      local_40c = local_40c | 0x20;
                    }
LAB_00a5e7c5:
                    uVar2 = *(ushort *)_ArgList;
                    local_468 = (uint)uVar2;
                    local_41c = (int **)((int)_ArgList + 4);
                    local_42c = 1;
                    if ((local_40c & 0x20) == 0) {
                      local_408 = uVar2;
                    }
                    else {
                      local_43c = (char)uVar2;
                      local_43b = 0;
                      iVar8 = __mbtowc_l((wchar_t *)&local_408,&local_43c,
                                         (size_t)(local_450.locinfo)->locale_name[3],&local_450);
                      if (iVar8 < 0) {
                        local_454 = 1;
                      }
                    }
                    local_418 = (byte *)0x1;
                    local_414 = (int *)&local_408;
                    goto LAB_00a5ec8b;
                  }
                  if ((local_420 != (byte *)0x45) && (local_420 != (byte *)0x47)) goto LAB_00a5ec8b;
                }
                local_420 = local_420 + 0x20;
                local_460 = 1;
LAB_00a5e6b2:
                local_40c = local_40c | 0x40;
                local_418 = (byte *)0x200;
                piVar5 = (int *)&local_408;
                pbVar12 = local_418;
                piVar11 = (int *)&local_408;
                if ((int)local_410 < 0) {
                  local_410 = (int *)0x6;
                }
                else if (local_410 == (int *)0x0) {
                  if ((short)local_420 == 0x67) {
                    local_410 = (int *)0x1;
                  }
                }
                else {
                  if (0x200 < (int)local_410) {
                    local_410 = (int *)0x200;
                  }
                  if (0xa3 < (int)local_410) {
                    pbVar12 = (byte *)((int)local_410 + 0x15d);
                    local_414 = (int *)&local_408;
                    local_45c = (int *)__malloc_crt((size_t)pbVar12);
                    piVar5 = local_45c;
                    piVar11 = local_45c;
                    if (local_45c == (int *)0x0) {
                      local_410 = (int *)0xa3;
                      piVar5 = (int *)&local_408;
                      pbVar12 = local_418;
                      piVar11 = local_414;
                    }
                  }
                }
                local_414 = piVar11;
                local_418 = pbVar12;
                local_470 = *(int **)_ArgList;
                local_41c = (int **)((int)_ArgList + 8);
                local_46c = *(int **)((int)_ArgList + 4);
                pcVar7 = (code *)__decode_pointer(PTR_LAB_03240778,&local_470,piVar5,local_418,
                                                  (int)(char)local_420,local_410,local_460,
                                                  &local_450);
                (*pcVar7)();
                uVar6 = local_40c & 0x80;
                if ((uVar6 != 0) && (local_410 == (int *)0x0)) {
                  pcVar7 = (code *)__decode_pointer(PTR_LAB_03240784,piVar5,&local_450);
                  (*pcVar7)();
                }
                if (((short)local_420 == 0x67) && (uVar6 == 0)) {
                  pcVar7 = (code *)__decode_pointer(PTR_LAB_03240780,piVar5,&local_450);
                  (*pcVar7)();
                }
                if (*(byte *)piVar5 == 0x2d) {
                  local_40c = local_40c | 0x100;
                  piVar5 = (int *)((int)piVar5 + 1);
                  local_414 = piVar5;
                }
LAB_00a5e89e:
                local_418 = (byte *)_strlen((char *)piVar5);
              }
              else {
                if (local_420 == (byte *)0x58) goto LAB_00a5ea9c;
                if (local_420 == (byte *)0x5a) {
                  piVar5 = *(int **)_ArgList;
                  local_41c = (int **)((int)_ArgList + 4);
                  if ((piVar5 == (int *)0x0) ||
                     (local_414 = (int *)piVar5[1], local_414 == (int *)0x0)) {
                    local_414 = (int *)PTR_DAT_03240080;
                    piVar5 = (int *)PTR_DAT_03240080;
                    goto LAB_00a5e89e;
                  }
                  local_418 = (byte *)(int)*(short *)piVar5;
                  if ((local_40c & 0x800) != 0) {
                    iVar8 = (int)local_418 - ((int)local_418 >> 0x1f);
                    goto LAB_00a5ec83;
                  }
                  local_42c = 0;
                }
                else {
                  if (local_420 == (byte *)0x61) goto LAB_00a5e6b2;
                  if (local_420 == (byte *)0x63) goto LAB_00a5e7c5;
                }
              }
LAB_00a5ec8b:
              pbVar12 = local_418;
              if (local_454 == 0) {
                if ((local_40c & 0x40) != 0) {
                  if ((local_40c & 0x100) == 0) {
                    if ((local_40c & 1) == 0) {
                      if ((local_40c & 2) == 0) goto LAB_00a5eccd;
                      local_434 = 0x20;
                    }
                    else {
                      local_434 = 0x2b;
                    }
                  }
                  else {
                    local_434 = 0x2d;
                  }
                  local_428 = 1;
                }
LAB_00a5eccd:
                pbVar9 = (byte *)((int)local_430 + (-local_428 - (int)local_418));
                if ((local_40c & 0xc) == 0) {
                  _write_multi_char(0x20,pbVar9,local_440);
                }
                pFVar4 = local_440;
                _write_string(local_428);
                if (((local_40c & 8) != 0) && ((local_40c & 4) == 0)) {
                  _write_multi_char(0x30,pbVar9,pFVar4);
                }
                if ((local_42c == 0) && (0 < (int)pbVar12)) {
                  local_420 = pbVar12;
                  piVar5 = local_414;
                  do {
                    local_420 = local_420 + -1;
                    iVar8 = __mbtowc_l((wchar_t *)&local_468,(char *)piVar5,
                                       (size_t)(local_450.locinfo)->locale_name[3],&local_450);
                    if (iVar8 < 1) {
                      local_424 = -1;
                      break;
                    }
                    _write_char(local_468);
                    piVar5 = (int *)((int)piVar5 + iVar8);
                  } while (0 < (int)local_420);
                }
                else {
                  _write_string(pbVar12);
                }
                if ((-1 < local_424) && ((local_40c & 4) != 0)) {
                  _write_multi_char(0x20,pbVar9,local_440);
                }
              }
            }
            else {
              if ((byte *)0x70 < local_420) {
                if (local_420 == (byte *)0x73) {
LAB_00a5e71b:
                  piVar5 = local_410;
                  if (local_410 == (int *)0xffffffff) {
                    piVar5 = (int *)0x7fffffff;
                  }
                  local_41c = (int **)((int)_ArgList + 4);
                  local_414 = *(int **)_ArgList;
                  if ((local_40c & 0x20) == 0) {
                    piVar11 = local_414;
                    if (local_414 == (int *)0x0) {
                      local_414 = (int *)PTR_u__null__03240084;
                      piVar11 = (int *)PTR_u__null__03240084;
                    }
                    for (; (piVar5 != (int *)0x0 &&
                           (piVar5 = (int *)((int)piVar5 + -1), *(short *)piVar11 != 0));
                        piVar11 = (int *)((int)piVar11 + 2)) {
                    }
                    iVar8 = (int)piVar11 - (int)local_414;
LAB_00a5ec83:
                    local_41c = (int **)((int)_ArgList + 4);
                    local_42c = 1;
                    local_418 = (byte *)(iVar8 >> 1);
                  }
                  else {
                    if (local_414 == (int *)0x0) {
                      local_414 = (int *)PTR_DAT_03240080;
                    }
                    local_418 = (byte *)0x0;
                    piVar11 = local_414;
                    if (0 < (int)piVar5) {
                      do {
                        if (*(byte *)piVar11 == 0) break;
                        iVar8 = __isleadbyte_l((uint)*(byte *)piVar11,&local_450);
                        if (iVar8 != 0) {
                          piVar11 = (int *)((int)piVar11 + 1);
                        }
                        piVar11 = (int *)((int)piVar11 + 1);
                        local_418 = local_418 + 1;
                      } while ((int)local_418 < (int)piVar5);
                    }
                  }
                  goto LAB_00a5ec8b;
                }
                if (local_420 == (byte *)0x75) goto LAB_00a5e943;
                if (local_420 != (byte *)0x78) goto LAB_00a5ec8b;
                local_458 = 0x27;
LAB_00a5eacc:
                local_420 = (byte *)0x10;
                if ((local_40c & 0x80) != 0) {
                  local_434 = 0x30;
                  local_432 = (short)local_458 + 0x51;
                  local_428 = 2;
                }
                goto LAB_00a5e94d;
              }
              if (local_420 == (byte *)0x70) {
                local_410 = (int *)0x8;
LAB_00a5ea9c:
                local_458 = 7;
                goto LAB_00a5eacc;
              }
              if (local_420 < (byte *)0x65) goto LAB_00a5ec8b;
              if (local_420 < (byte *)0x68) goto LAB_00a5e6b2;
              if (local_420 == (byte *)0x69) goto LAB_00a5e93c;
              if (local_420 != (byte *)0x6e) {
                if (local_420 != (byte *)0x6f) goto LAB_00a5ec8b;
                local_420 = (byte *)0x8;
                if ((local_40c & 0x80) != 0) {
                  local_40c = local_40c | 0x200;
                }
                goto LAB_00a5e94d;
              }
              piVar5 = *(int **)_ArgList;
              local_41c = (int **)((int)_ArgList + 4);
              iVar8 = __get_printf_count_output();
              if (iVar8 == 0) goto LAB_00a5e366;
              if ((local_40c & 0x20) == 0) {
                *piVar5 = local_424;
              }
              else {
                *(short *)piVar5 = (short)local_424;
              }
              local_454 = 1;
            }
            ppiVar10 = local_41c;
            pwVar13 = local_464;
            if (local_45c != (int *)0x0) {
              _free(local_45c);
              local_45c = (int *)0x0;
              ppiVar10 = local_41c;
              pwVar13 = local_464;
            }
          }
          local_420 = (byte *)(uint)(ushort)*pwVar13;
          _ArgList = (va_list)ppiVar10;
          _Format = pwVar13;
        } while (*pwVar13 != L'\0');
        if ((local_438 != 0) && (local_438 != 7)) goto LAB_00a5e3a1;
      }
      if (local_444 != '\0') {
        *(uint *)(local_448 + 0x70) = *(uint *)(local_448 + 0x70) & 0xfffffffd;
      }
      goto LAB_00a5ee6a;
    }
LAB_00a5e3a1:
    piVar5 = __errno();
    *piVar5 = 0x16;
  }
  __invalid_parameter(0,0,0,0,0);
  if (local_444 != '\0') {
    *(uint *)(local_448 + 0x70) = *(uint *)(local_448 + 0x70) & 0xfffffffd;
  }
LAB_00a5ee6a:
  iVar8 = ___security_check_cookie_4();
  return iVar8;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  _vfprintf_helper
// 
// Library: Visual Studio 2008 Release

int _vfprintf_helper(code *param_1,FILE *param_2,int param_3,undefined4 param_4,undefined4 param_5)

{
  int *piVar1;
  uint uVar2;
  int _Flag;
  undefined *puVar3;
  int local_20;
  
  local_20 = 0;
  if ((param_2 == (FILE *)0x0) || (param_3 == 0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return -1;
  }
  __lock_file(param_2);
  if ((*(byte *)&param_2->_flag & 0x40) == 0) {
    uVar2 = __fileno(param_2);
    if ((uVar2 == 0xffffffff) || (uVar2 == 0xfffffffe)) {
      puVar3 = &DAT_03240190;
    }
    else {
      puVar3 = (undefined *)((uVar2 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar2 >> 5]);
    }
    if ((puVar3[0x24] & 0x7f) == 0) {
      if ((uVar2 == 0xffffffff) || (uVar2 == 0xfffffffe)) {
        puVar3 = &DAT_03240190;
      }
      else {
        puVar3 = (undefined *)((uVar2 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar2 >> 5]);
      }
      if ((puVar3[0x24] & 0x80) == 0) goto LAB_00a5ef70;
    }
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    local_20 = -1;
  }
LAB_00a5ef70:
  if (local_20 == 0) {
    _Flag = __stbuf(param_2);
    local_20 = (*param_1)(param_2,param_3,param_4,param_5);
    __ftbuf(_Flag,param_2);
  }
  FUN_00a5efac();
  return local_20;
}



void FUN_00a5efac(void)

{
  int unaff_EBP;
  
  __unlock_file(*(FILE **)(unaff_EBP + 0xc));
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  __vfprintf_p
//  _vfprintf
//  _vfprintf_s
// 
// Library: Visual Studio 2008 Release

int __cdecl FID_conflict__vfprintf(FILE *_File,char *_Format,va_list _ArgList)

{
  int iVar1;
  
  iVar1 = _vfprintf_helper(__output_l,_File,_Format,0,_ArgList);
  return iVar1;
}



// Library Function - Single Match
//  __wcsnicoll_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __wcsnicoll_l(wchar_t *_Str1,wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale)

{
  wchar_t wVar1;
  wchar_t wVar2;
  int *piVar3;
  int iVar4;
  int local_14 [2];
  int local_c;
  char local_8;
  
  if (_MaxCount == 0) {
    return 0;
  }
  if (_Str1 == (wchar_t *)0x0) {
    piVar3 = __errno();
    *piVar3 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return 0x7fffffff;
  }
  if (_Str2 == (wchar_t *)0x0) {
    piVar3 = __errno();
    *piVar3 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return 0x7fffffff;
  }
  if (_MaxCount < 0x80000000) {
    _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)local_14,_Locale);
    if (*(DWORD *)(local_14[0] + 0x10) == 0) {
      do {
        wVar1 = *_Str1;
        if ((0x40 < (ushort)wVar1) && ((ushort)wVar1 < 0x5b)) {
          wVar1 = wVar1 + L' ';
        }
        wVar2 = *_Str2;
        if ((0x40 < (ushort)wVar2) && ((ushort)wVar2 < 0x5b)) {
          wVar2 = wVar2 + L' ';
        }
        _Str1 = _Str1 + 1;
        _Str2 = _Str2 + 1;
        _MaxCount = _MaxCount - 1;
      } while (((_MaxCount != 0) && (wVar1 != L'\0')) && (wVar1 == wVar2));
      iVar4 = (uint)(ushort)wVar1 - (uint)(ushort)wVar2;
    }
    else {
      iVar4 = ___crtCompareStringW
                        ((LPCWSTR)local_14,*(DWORD *)(local_14[0] + 0x10),(LPCWSTR)0x1001,(int)_Str1
                         ,(LPCWSTR)_MaxCount,(int)_Str2);
      if (iVar4 == 0) {
        piVar3 = __errno();
        *piVar3 = 0x16;
        if (local_8 != '\0') {
          *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
        }
        goto LAB_00a5f100;
      }
      iVar4 = iVar4 + -2;
    }
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
  }
  else {
    piVar3 = __errno();
    *piVar3 = 0x16;
    __invalid_parameter(0,0,0,0,0);
LAB_00a5f100:
    iVar4 = 0x7fffffff;
  }
  return iVar4;
}



// Library Function - Single Match
//  __wcsnicoll
// 
// Library: Visual Studio 2008 Release

int __cdecl __wcsnicoll(wchar_t *_Str1,wchar_t *_Str2,size_t _MaxCount)

{
  wchar_t wVar1;
  wchar_t wVar2;
  int *piVar3;
  int iVar4;
  
  if (DAT_032eb230 == 0) {
    if (((_Str1 == (wchar_t *)0x0) || (_Str2 == (wchar_t *)0x0)) || (0x7fffffff < _MaxCount)) {
      piVar3 = __errno();
      *piVar3 = 0x16;
      __invalid_parameter(0,0,0,0,0);
      iVar4 = 0x7fffffff;
    }
    else {
      do {
        wVar1 = *_Str1;
        if ((0x40 < (ushort)wVar1) && ((ushort)wVar1 < 0x5b)) {
          wVar1 = wVar1 + L' ';
        }
        wVar2 = *_Str2;
        if ((0x40 < (ushort)wVar2) && ((ushort)wVar2 < 0x5b)) {
          wVar2 = wVar2 + L' ';
        }
        _Str1 = _Str1 + 1;
        _Str2 = _Str2 + 1;
        _MaxCount = _MaxCount - 1;
      } while (((_MaxCount != 0) && (wVar1 != L'\0')) && (wVar1 == wVar2));
      iVar4 = (uint)(ushort)wVar1 - (uint)(ushort)wVar2;
    }
  }
  else {
    iVar4 = __wcsnicoll_l(_Str1,_Str2,_MaxCount,(_locale_t)0x0);
  }
  return iVar4;
}



// Library Function - Single Match
//  ___mbtow_environ
// 
// Library: Visual Studio 2008 Release

int __cdecl ___mbtow_environ(void)

{
  LPCSTR lpMultiByteStr;
  size_t _Count;
  int iVar1;
  LPCSTR *ppCVar2;
  LPWSTR local_8;
  
  local_8 = (LPWSTR)0x0;
  lpMultiByteStr = *DAT_032eb250;
  ppCVar2 = DAT_032eb250;
  while( true ) {
    if (lpMultiByteStr == (LPCSTR)0x0) {
      return 0;
    }
    _Count = MultiByteToWideChar(0,0,lpMultiByteStr,-1,(LPWSTR)0x0,0);
    if (_Count == 0) {
      return -1;
    }
    local_8 = (LPWSTR)__calloc_crt(_Count,2);
    if (local_8 == (LPWSTR)0x0) {
      return -1;
    }
    iVar1 = MultiByteToWideChar(0,0,*ppCVar2,-1,local_8,_Count);
    if (iVar1 == 0) break;
    iVar1 = ___crtwsetenv(&local_8,0);
    if (iVar1 < 0) {
      if (local_8 == (LPWSTR)0x0) {
        return -1;
      }
      break;
    }
    ppCVar2 = ppCVar2 + 1;
    lpMultiByteStr = *ppCVar2;
  }
  _free(local_8);
  return -1;
}



// Library Function - Single Match
//  __wsetenvp
// 
// Library: Visual Studio 2008 Release

int __cdecl __wsetenvp(void)

{
  int iVar1;
  wchar_t **ppwVar2;
  wchar_t *_Dst;
  errno_t eVar3;
  wchar_t *pwVar4;
  int iVar5;
  size_t _Count;
  
  iVar5 = 0;
  pwVar4 = DAT_032eb20c;
  if (DAT_032eb20c == (wchar_t *)0x0) {
    iVar5 = -1;
  }
  else {
    for (; *pwVar4 != L'\0'; pwVar4 = pwVar4 + iVar1 + 1) {
      if (*pwVar4 != L'=') {
        iVar5 = iVar5 + 1;
      }
      iVar1 = FUN_00a51355(pwVar4);
    }
    ppwVar2 = (wchar_t **)__calloc_crt(iVar5 + 1,4);
    pwVar4 = DAT_032eb20c;
    DAT_032eb258 = ppwVar2;
    if (ppwVar2 == (wchar_t **)0x0) {
      iVar5 = -1;
    }
    else {
      for (; *pwVar4 != L'\0'; pwVar4 = pwVar4 + _Count) {
        iVar5 = FUN_00a51355(pwVar4);
        _Count = iVar5 + 1;
        if (*pwVar4 != L'=') {
          _Dst = (wchar_t *)__calloc_crt(_Count,2);
          *ppwVar2 = _Dst;
          if (_Dst == (wchar_t *)0x0) {
            _free(DAT_032eb258);
            DAT_032eb258 = (wchar_t **)0x0;
            return -1;
          }
          eVar3 = _wcscpy_s(_Dst,_Count,pwVar4);
          if (eVar3 != 0) {
                    // WARNING: Subroutine does not return
            __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
          }
          ppwVar2 = ppwVar2 + 1;
        }
      }
      _free(DAT_032eb20c);
      DAT_032eb20c = (wchar_t *)0x0;
      *ppwVar2 = (wchar_t *)0x0;
      DAT_032f2844 = 1;
      iVar5 = 0;
    }
  }
  return iVar5;
}



// Library Function - Single Match
//  ___crtGetEnvironmentStringsW
// 
// Library: Visual Studio 2008 Release

LPVOID __cdecl ___crtGetEnvironmentStringsW(void)

{
  WCHAR WVar1;
  LPWCH _Src;
  WCHAR *pWVar2;
  WCHAR *pWVar3;
  size_t _Size;
  void *_Dst;
  
  _Src = GetEnvironmentStringsW();
  if (_Src != (LPWCH)0x0) {
    WVar1 = *_Src;
    pWVar3 = _Src;
    while (WVar1 != L'\0') {
      do {
        pWVar2 = pWVar3;
        pWVar3 = pWVar2 + 1;
      } while (*pWVar3 != L'\0');
      pWVar3 = pWVar2 + 2;
      WVar1 = *pWVar3;
    }
    _Size = (int)pWVar3 + (2 - (int)_Src);
    _Dst = __malloc_crt(_Size);
    if (_Dst != (void *)0x0) {
      _memcpy(_Dst,_Src,_Size);
    }
    FreeEnvironmentStringsW(_Src);
    return _Dst;
  }
  return (LPVOID)0x0;
}



// Library Function - Single Match
//  _wcsnlen
// 
// Library: Visual Studio 2008 Release

size_t __cdecl _wcsnlen(wchar_t *_Src,size_t _MaxCount)

{
  uint uVar1;
  
  uVar1 = 0;
  if (_MaxCount != 0) {
    do {
      if (*_Src == L'\0') {
        return uVar1;
      }
      uVar1 = uVar1 + 1;
      _Src = _Src + 1;
    } while (uVar1 < _MaxCount);
  }
  return uVar1;
}



// Library Function - Single Match
//  _findenv
// 
// Library: Visual Studio 2008 Release

int _findenv(uchar *param_1)

{
  int iVar1;
  uchar **ppuVar2;
  size_t unaff_EDI;
  
  ppuVar2 = DAT_032eb250;
  while( true ) {
    if (*ppuVar2 == (uchar *)0x0) {
      return -((int)ppuVar2 - (int)DAT_032eb250 >> 2);
    }
    iVar1 = __mbsnbicoll(param_1,*ppuVar2,unaff_EDI);
    if ((iVar1 == 0) && (((*ppuVar2)[unaff_EDI] == '=' || ((*ppuVar2)[unaff_EDI] == '\0')))) break;
    ppuVar2 = ppuVar2 + 1;
  }
  return (int)ppuVar2 - (int)DAT_032eb250 >> 2;
}



// Library Function - Single Match
//  _copy_environ
// 
// Library: Visual Studio 2008 Release

char ** _copy_environ(void)

{
  char **in_EAX;
  char **ppcVar1;
  char *pcVar2;
  char **ppcVar3;
  
  ppcVar1 = (char **)0x0;
  if (in_EAX != (char **)0x0) {
    pcVar2 = *in_EAX;
    ppcVar3 = in_EAX;
    while (pcVar2 != (char *)0x0) {
      ppcVar3 = ppcVar3 + 1;
      ppcVar1 = (char **)((int)ppcVar1 + 1);
      pcVar2 = *ppcVar3;
    }
    ppcVar1 = (char **)__calloc_crt((int)ppcVar1 + 1,4);
    ppcVar3 = ppcVar1;
    if (ppcVar1 == (char **)0x0) {
      __amsg_exit(9);
    }
    for (; *in_EAX != (char *)0x0; in_EAX = in_EAX + 1) {
      pcVar2 = __strdup(*in_EAX);
      *ppcVar3 = pcVar2;
      ppcVar3 = ppcVar3 + 1;
    }
    *ppcVar3 = (char *)0x0;
  }
  return ppcVar1;
}



// Library Function - Single Match
//  ___crtsetenv
// 
// Library: Visual Studio 2008 Release

int __cdecl ___crtsetenv(char **_POption,int _Primary)

{
  uint _Size;
  uchar *_Str;
  int *piVar1;
  uchar *puVar2;
  int iVar3;
  uint _Count;
  size_t sVar4;
  char *_Dst;
  errno_t eVar5;
  BOOL BVar6;
  uchar **ppuVar7;
  bool bVar8;
  size_t _Size_00;
  uchar *_Src;
  int local_10;
  
  local_10 = 0;
  if (_POption == (char **)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return -1;
  }
  _Str = (uchar *)*_POption;
  if (((_Str == (uchar *)0x0) || (puVar2 = __mbschr(_Str,0x3d), puVar2 == (uchar *)0x0)) ||
     (_Str == puVar2)) {
LAB_00a5f4d3:
    piVar1 = __errno();
    *piVar1 = 0x16;
    return -1;
  }
  bVar8 = puVar2[1] == '\0';
  if (DAT_032eb250 == DAT_032eb254) {
    DAT_032eb250 = (int *)_copy_environ();
  }
  if (DAT_032eb250 == (int *)0x0) {
    if ((_Primary == 0) || (DAT_032eb258 == (undefined4 *)0x0)) {
      if (bVar8) {
        return 0;
      }
      DAT_032eb250 = (int *)__malloc_crt(4);
      if (DAT_032eb250 == (int *)0x0) {
        return -1;
      }
      *DAT_032eb250 = 0;
      if (DAT_032eb258 == (undefined4 *)0x0) {
        DAT_032eb258 = (undefined4 *)__malloc_crt(4);
        if (DAT_032eb258 == (undefined4 *)0x0) {
          return -1;
        }
        *DAT_032eb258 = 0;
      }
    }
    else {
      iVar3 = ___wtomb_environ();
      if (iVar3 != 0) goto LAB_00a5f4d3;
    }
  }
  piVar1 = DAT_032eb250;
  if (DAT_032eb250 == (int *)0x0) {
    return -1;
  }
  _Count = _findenv(_Str);
  if (((int)_Count < 0) || (*piVar1 == 0)) {
    if (bVar8) {
      _free(_Str);
      *_POption = (char *)0x0;
      return 0;
    }
    if ((int)_Count < 0) {
      _Count = -_Count;
    }
    _Size = _Count + 2;
    if ((int)_Size < (int)_Count) {
      return -1;
    }
    if (0x3ffffffe < _Size) {
      return -1;
    }
    piVar1 = (int *)__recalloc_crt(DAT_032eb250,4,_Size);
    if (piVar1 == (int *)0x0) {
      return -1;
    }
    piVar1[_Count] = (int)_Str;
    (piVar1 + _Count)[1] = 0;
    *_POption = (char *)0x0;
  }
  else {
    ppuVar7 = (uchar **)(piVar1 + _Count);
    _free(*ppuVar7);
    if (!bVar8) {
      *ppuVar7 = _Str;
      *_POption = (char *)0x0;
      goto LAB_00a5f5e1;
    }
    while (*ppuVar7 != (uchar *)0x0) {
      *ppuVar7 = ppuVar7[1];
      _Count = _Count + 1;
      ppuVar7 = (uchar **)(piVar1 + _Count);
    }
    if ((0x3ffffffe < _Count) ||
       (piVar1 = (int *)__recalloc_crt(DAT_032eb250,_Count,4), piVar1 == (int *)0x0))
    goto LAB_00a5f5e1;
  }
  DAT_032eb250 = piVar1;
LAB_00a5f5e1:
  if (_Primary != 0) {
    _Size_00 = 1;
    sVar4 = _strlen((char *)_Str);
    _Dst = (char *)__calloc_crt(sVar4 + 2,_Size_00);
    if (_Dst != (char *)0x0) {
      _Src = _Str;
      sVar4 = _strlen((char *)_Str);
      eVar5 = _strcpy_s(_Dst,sVar4 + 2,(char *)_Src);
      if (eVar5 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      puVar2[(int)_Dst - (int)_Str] = '\0';
      BVar6 = SetEnvironmentVariableA
                        (_Dst,(LPCSTR)(~-(uint)bVar8 & (uint)(puVar2 + ((int)_Dst - (int)_Str) + 1))
                        );
      if (BVar6 == 0) {
        local_10 = -1;
        piVar1 = __errno();
        *piVar1 = 0x2a;
      }
      _free(_Dst);
    }
  }
  if (bVar8) {
    _free(_Str);
    *_POption = (char *)0x0;
    return local_10;
  }
  return local_10;
}



// Library Function - Single Match
//  _wfindenv
// 
// Library: Visual Studio 2008 Release

int _wfindenv(wchar_t *param_1)

{
  int iVar1;
  wchar_t **ppwVar2;
  size_t unaff_EDI;
  
  ppwVar2 = DAT_032eb258;
  while( true ) {
    if (*ppwVar2 == (wchar_t *)0x0) {
      return -((int)ppwVar2 - (int)DAT_032eb258 >> 2);
    }
    iVar1 = __wcsnicoll(param_1,*ppwVar2,unaff_EDI);
    if ((iVar1 == 0) && (((*ppwVar2)[unaff_EDI] == L'=' || ((*ppwVar2)[unaff_EDI] == L'\0'))))
    break;
    ppwVar2 = ppwVar2 + 1;
  }
  return (int)ppwVar2 - (int)DAT_032eb258 >> 2;
}



// Library Function - Single Match
//  _copy_environ
// 
// Library: Visual Studio 2008 Release

wchar_t ** _copy_environ(void)

{
  wchar_t **in_EAX;
  wchar_t **ppwVar1;
  wchar_t *pwVar2;
  wchar_t **ppwVar3;
  
  ppwVar1 = (wchar_t **)0x0;
  if (in_EAX != (wchar_t **)0x0) {
    pwVar2 = *in_EAX;
    ppwVar3 = in_EAX;
    while (pwVar2 != (wchar_t *)0x0) {
      ppwVar3 = ppwVar3 + 1;
      ppwVar1 = (wchar_t **)((int)ppwVar1 + 1);
      pwVar2 = *ppwVar3;
    }
    ppwVar1 = (wchar_t **)__calloc_crt((int)ppwVar1 + 1,4);
    ppwVar3 = ppwVar1;
    if (ppwVar1 == (wchar_t **)0x0) {
      __amsg_exit(9);
    }
    for (; *in_EAX != (wchar_t *)0x0; in_EAX = in_EAX + 1) {
      pwVar2 = __wcsdup(*in_EAX);
      *ppwVar3 = pwVar2;
      ppwVar3 = ppwVar3 + 1;
    }
    *ppwVar3 = (wchar_t *)0x0;
  }
  return ppwVar1;
}



// Library Function - Single Match
//  ___crtwsetenv
// 
// Library: Visual Studio 2008 Release

int __cdecl ___crtwsetenv(wchar_t **_POption,int _Primary)

{
  uint _Size;
  wchar_t *_Str;
  int *piVar1;
  wchar_t *pwVar2;
  int iVar3;
  uint _Count;
  wchar_t *_Dst;
  errno_t eVar4;
  BOOL BVar5;
  DWORD DVar6;
  LPCWSTR lpWideCharStr;
  wchar_t **ppwVar7;
  bool bVar8;
  size_t sVar9;
  wchar_t *_Src;
  LPCSTR local_1c;
  LPSTR local_18;
  int iVar10;
  
  iVar10 = 0;
  if (_POption == (wchar_t **)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    return -1;
  }
  _Str = *_POption;
  if (((_Str == (wchar_t *)0x0) || (pwVar2 = _wcschr(_Str,L'='), pwVar2 == (wchar_t *)0x0)) ||
     (_Str == pwVar2)) {
LAB_00a5f7e3:
    piVar1 = __errno();
    *piVar1 = 0x16;
    return -1;
  }
  bVar8 = pwVar2[1] == L'\0';
  if (DAT_032eb258 == DAT_032eb25c) {
    DAT_032eb258 = (int *)_copy_environ();
  }
  if (DAT_032eb258 == (int *)0x0) {
    if ((_Primary == 0) || (DAT_032eb250 == (undefined4 *)0x0)) {
      if (bVar8) {
        return 0;
      }
      if (DAT_032eb250 == (undefined4 *)0x0) {
        DAT_032eb250 = (undefined4 *)__malloc_crt(4);
        if (DAT_032eb250 == (undefined4 *)0x0) {
          return -1;
        }
        *DAT_032eb250 = 0;
        if (DAT_032eb258 != (int *)0x0) goto LAB_00a5f831;
      }
      DAT_032eb258 = (int *)__malloc_crt(4);
      if (DAT_032eb258 == (int *)0x0) {
        return -1;
      }
      *DAT_032eb258 = 0;
    }
    else {
      DAT_032eb20c = ___crtGetEnvironmentStringsW();
      iVar3 = __wsetenvp();
      if ((iVar3 < 0) && (iVar3 = ___mbtow_environ(), iVar3 != 0)) goto LAB_00a5f7e3;
    }
  }
LAB_00a5f831:
  piVar1 = DAT_032eb258;
  if (DAT_032eb258 == (int *)0x0) {
    return -1;
  }
  _Count = _wfindenv(_Str);
  if (((int)_Count < 0) || (*piVar1 == 0)) {
    if (bVar8) {
      _free(_Str);
      *_POption = (wchar_t *)0x0;
      return 0;
    }
    if ((int)_Count < 0) {
      _Count = -_Count;
    }
    _Size = _Count + 2;
    if ((int)_Size < (int)_Count) {
      return -1;
    }
    if (0x3ffffffe < _Size) {
      return -1;
    }
    piVar1 = (int *)__recalloc_crt(DAT_032eb258,4,_Size);
    if (piVar1 == (int *)0x0) {
      return -1;
    }
    piVar1[_Count] = (int)_Str;
    (piVar1 + _Count)[1] = 0;
    *_POption = (wchar_t *)0x0;
LAB_00a5f8f4:
    DAT_032eb258 = piVar1;
  }
  else {
    ppwVar7 = (wchar_t **)(piVar1 + _Count);
    _free(*ppwVar7);
    if (bVar8) {
      while (*ppwVar7 != (wchar_t *)0x0) {
        *ppwVar7 = ppwVar7[1];
        _Count = _Count + 1;
        ppwVar7 = (wchar_t **)(piVar1 + _Count);
      }
      if ((_Count < 0x3fffffff) &&
         (piVar1 = (int *)__recalloc_crt(DAT_032eb258,_Count,4), piVar1 != (int *)0x0))
      goto LAB_00a5f8f4;
    }
    else {
      *ppwVar7 = _Str;
      *_POption = (wchar_t *)0x0;
    }
  }
  if (_Primary == 0) goto LAB_00a5fa71;
  sVar9 = 2;
  iVar3 = FUN_00a51355(_Str);
  _Dst = (wchar_t *)__calloc_crt(iVar3 + 2,sVar9);
  if (_Dst == (wchar_t *)0x0) goto LAB_00a5fa71;
  _Src = _Str;
  iVar3 = FUN_00a51355(_Str);
  eVar4 = _wcscpy_s(_Dst,iVar3 + 2,_Src);
  if (eVar4 != 0) {
                    // WARNING: Subroutine does not return
    __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
  }
  _Dst[(int)pwVar2 - (int)_Str >> 1] = L'\0';
  lpWideCharStr = _Dst + ((int)pwVar2 - (int)_Str >> 1) + 1;
  if ((DAT_03240908 == 1) &&
     (BVar5 = SetEnvironmentVariableW(_Dst,(LPCWSTR)(~-(uint)bVar8 & (uint)lpWideCharStr)),
     BVar5 == 0)) {
    DVar6 = GetLastError();
    if (DVar6 != 0x78) {
      iVar10 = -1;
      goto LAB_00a5f991;
    }
    DAT_03240908 = 0;
LAB_00a5f99d:
    local_1c = (LPCSTR)0x0;
    local_18 = (LPSTR)0x0;
    sVar9 = WideCharToMultiByte(0,0,_Dst,-1,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0);
    if (((sVar9 == 0) || (local_1c = (LPCSTR)__calloc_crt(sVar9,1), local_1c == (LPCSTR)0x0)) ||
       (iVar3 = WideCharToMultiByte(0,0,_Dst,-1,local_1c,sVar9,(LPCSTR)0x0,(LPBOOL)0x0), iVar3 == 0)
       ) {
LAB_00a5fa40:
      iVar10 = -1;
    }
    else {
      if (!bVar8) {
        sVar9 = WideCharToMultiByte(0,0,lpWideCharStr,-1,(LPSTR)0x0,0,(LPCSTR)0x0,(LPBOOL)0x0);
        if ((sVar9 == 0) || (local_18 = (LPSTR)__calloc_crt(sVar9,1), local_18 == (LPSTR)0x0))
        goto LAB_00a5fa40;
        iVar3 = WideCharToMultiByte(0,0,lpWideCharStr,-1,local_18,sVar9,(LPCSTR)0x0,(LPBOOL)0x0);
        if (iVar3 == 0) {
          iVar10 = -1;
        }
      }
      if ((iVar10 != -1) &&
         (BVar5 = SetEnvironmentVariableA(local_1c,(LPCSTR)(~-(uint)bVar8 & (uint)local_18)),
         BVar5 == 0)) goto LAB_00a5fa40;
    }
    _free(local_18);
    _free(local_1c);
  }
  else {
LAB_00a5f991:
    if (DAT_03240908 == 0) goto LAB_00a5f99d;
  }
  if (iVar10 == -1) {
    piVar1 = __errno();
    *piVar1 = 0x2a;
  }
  _free(_Dst);
LAB_00a5fa71:
  if (bVar8) {
    _free(_Str);
    *_POption = (wchar_t *)0x0;
  }
  return iVar10;
}



// Library Function - Single Match
//  ___strgtold12_l
// 
// Library: Visual Studio 2008 Release

uint __cdecl
___strgtold12_l(_LDBL12 *pld12,char **p_end_ptr,char *str,int mult12,int scale,int decpt,
               int implicit_E,_locale_t _Locale)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  bool bVar6;
  bool bVar7;
  bool bVar8;
  ushort uVar9;
  char cVar10;
  int *piVar11;
  uint uVar12;
  uint uVar13;
  ushort uVar14;
  int iVar15;
  undefined **ppuVar16;
  ushort uVar17;
  char *pcVar18;
  undefined4 uVar19;
  undefined **ppuVar20;
  ushort uVar21;
  undefined4 uVar22;
  char *pcVar23;
  short *psVar24;
  int local_6c;
  int local_68;
  undefined **local_64;
  ushort *local_60;
  int local_5c;
  char *local_58;
  int local_54;
  uint local_50;
  undefined2 local_4c;
  undefined4 uStack_4a;
  undefined2 uStack_46;
  undefined *local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 uStack_38;
  byte local_30;
  undefined uStack_2f;
  undefined4 uStack_2e;
  undefined4 uStack_2a;
  ushort uStack_26;
  char local_24 [23];
  char local_d;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  iVar15 = 0;
  pcVar23 = local_24;
  uVar9 = 0;
  local_6c = 1;
  local_50 = 0;
  bVar6 = false;
  bVar8 = false;
  bVar7 = false;
  local_68 = 0;
  local_54 = 0;
  if (_Locale != (_locale_t)0x0) {
    local_58 = str;
    for (; (((cVar10 = *str, cVar10 == ' ' || (cVar10 == '\t')) || (cVar10 == '\n')) ||
           (cVar10 == '\r')); str = str + 1) {
    }
LAB_00a5fb28:
    cVar10 = *str;
    pcVar18 = str + 1;
    switch(iVar15) {
    case 0:
      if ((byte)(cVar10 - 0x31U) < 9) {
LAB_00a5fb45:
        iVar15 = 3;
        goto LAB_00a5fb47;
      }
      if (cVar10 == **(char **)_Locale->locinfo[1].lc_codepage) {
LAB_00a5fb5c:
        iVar15 = 5;
        str = pcVar18;
      }
      else if (cVar10 == '+') {
        uVar9 = 0;
        iVar15 = 2;
        str = pcVar18;
      }
      else {
        if (cVar10 != '-') {
          if (cVar10 == '0') goto LAB_00a5fb76;
          goto LAB_00a5fd01;
        }
        iVar15 = 2;
        uVar9 = 0x8000;
        str = pcVar18;
      }
      goto LAB_00a5fb28;
    case 1:
      bVar6 = true;
      if ((byte)(cVar10 - 0x31U) < 9) goto LAB_00a5fb45;
      if (cVar10 == **(char **)_Locale->locinfo[1].lc_codepage) goto LAB_00a5fbad;
      if ((cVar10 == '+') || (cVar10 == '-')) goto LAB_00a5fbdd;
      if (cVar10 == '0') goto LAB_00a5fb76;
      goto LAB_00a5fbbd;
    case 2:
      if ((byte)(cVar10 - 0x31U) < 9) goto LAB_00a5fb45;
      if (cVar10 == **(char **)_Locale->locinfo[1].lc_codepage) goto LAB_00a5fb5c;
      str = local_58;
      if (cVar10 != '0') goto LAB_00a5fd2c;
LAB_00a5fb76:
      iVar15 = 1;
      str = pcVar18;
      goto LAB_00a5fb28;
    case 3:
      while (('/' < cVar10 && (cVar10 < ':'))) {
        if (local_50 < 0x19) {
          local_50 = local_50 + 1;
          *pcVar23 = cVar10 + -0x30;
          pcVar23 = pcVar23 + 1;
        }
        else {
          local_54 = local_54 + 1;
        }
        cVar10 = *pcVar18;
        pcVar18 = pcVar18 + 1;
      }
      if (cVar10 != **(char **)_Locale->locinfo[1].lc_codepage) goto LAB_00a5fc50;
LAB_00a5fbad:
      bVar6 = true;
      iVar15 = 4;
      str = pcVar18;
      goto LAB_00a5fb28;
    case 4:
      bVar8 = true;
      if (local_50 == 0) {
        while (cVar10 == '0') {
          local_54 = local_54 + -1;
          cVar10 = *pcVar18;
          pcVar18 = pcVar18 + 1;
        }
      }
      while (('/' < cVar10 && (cVar10 < ':'))) {
        if (local_50 < 0x19) {
          local_50 = local_50 + 1;
          *pcVar23 = cVar10 + -0x30;
          pcVar23 = pcVar23 + 1;
          local_54 = local_54 + -1;
        }
        cVar10 = *pcVar18;
        pcVar18 = pcVar18 + 1;
      }
LAB_00a5fc50:
      if ((cVar10 == '+') || (cVar10 == '-')) {
LAB_00a5fbdd:
        bVar6 = true;
        iVar15 = 0xb;
        str = pcVar18 + -1;
      }
      else {
LAB_00a5fbbd:
        bVar6 = true;
        if ((cVar10 < 'D') || (('E' < cVar10 && ((cVar10 < 'd' || ('e' < cVar10))))))
        goto LAB_00a5fd01;
        iVar15 = 6;
        str = pcVar18;
      }
      goto LAB_00a5fb28;
    case 5:
      bVar8 = true;
      str = local_58;
      if ((byte)(cVar10 - 0x30U) < 10) {
        iVar15 = 4;
        goto LAB_00a5fb47;
      }
      goto LAB_00a5fd2c;
    case 6:
      local_58 = str + -1;
      if (8 < (byte)(cVar10 - 0x31U)) {
        if (cVar10 == '+') goto LAB_00a5fce8;
        if (cVar10 == '-') goto LAB_00a5fcdc;
LAB_00a5fccf:
        str = local_58;
        if (cVar10 != '0') goto LAB_00a5fd2c;
        iVar15 = 8;
        str = pcVar18;
        goto LAB_00a5fb28;
      }
      break;
    case 7:
      if (8 < (byte)(cVar10 - 0x31U)) goto LAB_00a5fccf;
      break;
    case 8:
      bVar7 = true;
      while (cVar10 == '0') {
        cVar10 = *pcVar18;
        pcVar18 = pcVar18 + 1;
      }
      if (8 < (byte)(cVar10 - 0x31U)) goto LAB_00a5fd01;
      break;
    case 9:
      bVar7 = true;
      local_68 = 0;
      goto LAB_00a5fd8e;
    default:
      goto switchD_00a5fb34_caseD_a;
    case 0xb:
      if (implicit_E != 0) {
        local_58 = str;
        if (cVar10 == '+') {
LAB_00a5fce8:
          iVar15 = 7;
          str = pcVar18;
        }
        else {
          if (cVar10 != '-') goto LAB_00a5fd2c;
LAB_00a5fcdc:
          local_6c = -1;
          iVar15 = 7;
          str = pcVar18;
        }
        goto LAB_00a5fb28;
      }
      iVar15 = 10;
      pcVar18 = str;
switchD_00a5fb34_caseD_a:
      str = pcVar18;
      if (iVar15 != 10) goto LAB_00a5fb28;
      goto LAB_00a5fd2c;
    }
    iVar15 = 9;
LAB_00a5fb47:
    str = pcVar18 + -1;
    goto LAB_00a5fb28;
  }
  piVar11 = __errno();
  *piVar11 = 0x16;
  __invalid_parameter(0,0,0,0,0);
  iVar4 = CONCAT22(local_40._2_2_,(undefined2)local_40);
  uVar2 = CONCAT22(uStack_38._2_2_,(ushort)uStack_38);
  goto LAB_00a60159;
LAB_00a5fd8e:
  if ((cVar10 < '0') || ('9' < cVar10)) goto LAB_00a5fda9;
  local_68 = local_68 * 10 + -0x30 + (int)cVar10;
  if (local_68 < 0x1451) {
    cVar10 = *pcVar18;
    pcVar18 = pcVar18 + 1;
    goto LAB_00a5fd8e;
  }
  local_68 = 0x1451;
LAB_00a5fda9:
  while (('/' < cVar10 && (cVar10 < ':'))) {
    cVar10 = *pcVar18;
    pcVar18 = pcVar18 + 1;
  }
LAB_00a5fd01:
  str = pcVar18 + -1;
LAB_00a5fd2c:
  *p_end_ptr = str;
  if (bVar6) {
    if (0x18 < local_50) {
      if ('\x04' < local_d) {
        local_d = local_d + '\x01';
      }
      pcVar23 = pcVar23 + -1;
      local_54 = local_54 + 1;
      local_50 = 0x18;
    }
    if (local_50 == 0) goto LAB_00a6013b;
    while (pcVar23 = pcVar23 + -1, *pcVar23 == '\0') {
      local_50 = local_50 - 1;
      local_54 = local_54 + 1;
    }
    ___mtold12(local_24,local_50,&local_40);
    iVar5 = CONCAT22(local_3c._2_2_,(undefined2)local_3c);
    iVar4 = CONCAT22(local_40._2_2_,(undefined2)local_40);
    iVar3 = CONCAT22(uStack_2a._2_2_,(ushort)uStack_2a);
    iVar1 = CONCAT22(uStack_2e._2_2_,(ushort)uStack_2e);
    uVar2 = CONCAT22(uStack_38._2_2_,(ushort)uStack_38);
    uVar13 = CONCAT22(uStack_38._2_2_,(ushort)uStack_38);
    iVar15 = CONCAT22(uStack_4a._2_2_,(undefined2)uStack_4a);
    if (local_6c < 0) {
      local_68 = -local_68;
    }
    local_58 = (char *)(local_68 + local_54);
    if (!bVar7) {
      local_58 = (char *)((int)local_58 + scale);
    }
    if (!bVar8) {
      local_58 = (char *)((int)local_58 - decpt);
    }
    if ((int)local_58 < 0x1451) {
      if ((int)local_58 < -0x1450) goto LAB_00a6013b;
      ppuVar16 = &PTR_LAB_03240ab8;
      if (local_58 != (char *)0x0) {
        if ((int)local_58 < 0) {
          local_58 = (char *)-(int)local_58;
          ppuVar16 = (undefined **)&DAT_03240c18;
        }
        if (mult12 == 0) {
          local_40._0_2_ = 0;
        }
        iVar15 = uStack_4a;
        uVar13 = uVar2;
        iVar1 = uStack_2e;
        iVar3 = uStack_2a;
        iVar4 = CONCAT22(local_40._2_2_,(undefined2)local_40);
        iVar5 = local_3c;
joined_r0x00a5fe36:
        if (local_58 != (char *)0x0) {
          uStack_38._2_2_ = (ushort)(uVar13 >> 0x10);
          uVar2 = (int)local_58 >> 3;
          ppuVar16 = ppuVar16 + 0x15;
          uVar12 = (uint)local_58 & 7;
          local_58 = (char *)uVar2;
          if (uVar12 != 0) {
            ppuVar20 = ppuVar16 + uVar12 * 3;
            if (0x7fff < *(ushort *)ppuVar20) {
              local_4c = SUB42(*ppuVar20,0);
              uStack_4a._0_2_ = (undefined2)((uint)*ppuVar20 >> 0x10);
              uStack_4a._2_2_ = SUB42(ppuVar20[1],0);
              uStack_46 = (undefined2)((uint)ppuVar20[1] >> 0x10);
              local_44 = ppuVar20[2];
              iVar15 = CONCAT22(uStack_4a._2_2_,(undefined2)uStack_4a) + -1;
              uStack_4a._0_2_ = (undefined2)iVar15;
              uStack_4a._2_2_ = (undefined2)((uint)iVar15 >> 0x10);
              ppuVar20 = (undefined **)&local_4c;
            }
            local_54 = 0;
            local_30 = 0;
            uStack_2f = 0;
            uStack_2e._0_2_ = 0;
            uStack_2e._2_2_ = 0;
            iVar1 = 0;
            uStack_2a._0_2_ = 0;
            uStack_2a._2_2_ = 0;
            iVar3 = 0;
            uStack_26 = 0;
            uVar14 = *(ushort *)((int)ppuVar20 + 10) & 0x7fff;
            uVar21 = (*(ushort *)((int)ppuVar20 + 10) ^ uStack_38._2_2_) & 0x8000;
            uVar17 = uVar14 + (uStack_38._2_2_ & 0x7fff);
            if ((((uStack_38._2_2_ & 0x7fff) < 0x7fff) && (uVar14 < 0x7fff)) && (uVar17 < 0xbffe)) {
              if (0x3fbf < uVar17) {
                if ((((uVar13 & 0x7fff0000) == 0) &&
                    (uVar17 = uVar17 + 1, (uVar13 & 0x7fffffff) == 0)) &&
                   ((iVar5 == 0 && (iVar4 == 0)))) {
                  uStack_38._2_2_ = 0;
                  uVar13 = uVar13 & 0xffff;
                  iVar1 = 0;
                  iVar3 = 0;
                }
                else if (((uVar14 == 0) &&
                         (uVar17 = uVar17 + 1, ((uint)ppuVar20[2] & 0x7fffffff) == 0)) &&
                        ((ppuVar20[1] == (undefined *)0x0 && (*ppuVar20 == (undefined *)0x0)))) {
                  uStack_38._0_2_ = 0;
                  uStack_38._2_2_ = 0;
                  uVar13 = 0;
                  local_3c._0_2_ = 0;
                  local_3c._2_2_ = 0;
                  local_40._0_2_ = 0;
                  local_40._2_2_ = 0;
                  iVar4 = 0;
                  iVar5 = 0;
                }
                else {
                  local_6c = 0;
                  psVar24 = (short *)((int)&uStack_2e + 2);
                  local_5c = 5;
                  do {
                    local_68 = local_5c;
                    if (0 < local_5c) {
                      local_60 = (ushort *)((int)&local_40 + local_6c * 2);
                      local_64 = ppuVar20 + 2;
                      do {
                        bVar6 = false;
                        uVar13 = *(uint *)(psVar24 + -2) +
                                 (uint)*(ushort *)local_64 * (uint)*local_60;
                        if ((uVar13 < *(uint *)(psVar24 + -2)) ||
                           (uVar13 < (uint)*(ushort *)local_64 * (uint)*local_60)) {
                          bVar6 = true;
                        }
                        *(uint *)(psVar24 + -2) = uVar13;
                        if (bVar6) {
                          *psVar24 = *psVar24 + 1;
                        }
                        local_60 = local_60 + 1;
                        local_64 = (undefined **)((int)local_64 + -2);
                        local_68 = local_68 + -1;
                      } while (0 < local_68);
                    }
                    psVar24 = psVar24 + 1;
                    local_6c = local_6c + 1;
                    local_5c = local_5c + -1;
                  } while (0 < local_5c);
                  uVar17 = uVar17 + 0xc002;
                  if ((short)uVar17 < 1) {
LAB_00a5fff1:
                    uVar17 = uVar17 - 1;
                    if ((short)uVar17 < 0) {
                      uVar13 = (uint)(ushort)-uVar17;
                      uVar17 = 0;
                      do {
                        if ((local_30 & 1) != 0) {
                          local_54 = local_54 + 1;
                        }
                        iVar1 = CONCAT22(uStack_26,uStack_2a._2_2_);
                        uVar2 = CONCAT22((ushort)uStack_2a,uStack_2e._2_2_);
                        iVar3 = CONCAT22((ushort)uStack_2a,uStack_2e._2_2_);
                        uStack_2a._2_2_ = (ushort)(CONCAT22(uStack_26,uStack_2a._2_2_) >> 1);
                        uStack_26 = uStack_26 >> 1;
                        uStack_2a._0_2_ =
                             (ushort)uStack_2a >> 1 | (ushort)((uint)(iVar1 << 0x1f) >> 0x10);
                        uVar12 = CONCAT22((ushort)uStack_2e,CONCAT11(uStack_2f,local_30)) >> 1;
                        uStack_2e._0_2_ =
                             (ushort)uStack_2e >> 1 | (ushort)((uint)(iVar3 << 0x1f) >> 0x10);
                        uVar13 = uVar13 - 1;
                        uStack_2e._2_2_ = (ushort)(uVar2 >> 1);
                        local_30 = (byte)uVar12;
                        uStack_2f = (undefined)(uVar12 >> 8);
                      } while (uVar13 != 0);
                      if (local_54 != 0) {
                        local_30 = local_30 | 1;
                      }
                    }
                  }
                  else {
                    do {
                      uVar14 = (ushort)uStack_2e;
                      if ((short)uStack_26 < 0) break;
                      iVar3 = CONCAT22((ushort)uStack_2e,CONCAT11(uStack_2f,local_30)) << 1;
                      local_30 = (byte)iVar3;
                      uStack_2f = (undefined)((uint)iVar3 >> 8);
                      uStack_2e._0_2_ = (ushort)((uint)iVar3 >> 0x10);
                      iVar3 = CONCAT22((ushort)uStack_2a,uStack_2e._2_2_) * 2;
                      uStack_2e._2_2_ = (ushort)iVar3 | uVar14 >> 0xf;
                      iVar1 = CONCAT22(uStack_26,uStack_2a._2_2_) * 2;
                      uStack_2a._2_2_ = (ushort)iVar1 | (ushort)uStack_2a >> 0xf;
                      uVar17 = uVar17 - 1;
                      uStack_2a._0_2_ = (ushort)((uint)iVar3 >> 0x10);
                      uStack_26 = (ushort)((uint)iVar1 >> 0x10);
                    } while (0 < (short)uVar17);
                    if ((short)uVar17 < 1) goto LAB_00a5fff1;
                  }
                  if ((0x8000 < CONCAT11(uStack_2f,local_30)) ||
                     (iVar3 = CONCAT22(uStack_2a._2_2_,(ushort)uStack_2a),
                     iVar1 = CONCAT22(uStack_2e._2_2_,(ushort)uStack_2e),
                     (CONCAT22((ushort)uStack_2e,CONCAT11(uStack_2f,local_30)) & 0x1ffff) == 0x18000
                     )) {
                    if (CONCAT22(uStack_2e._2_2_,(ushort)uStack_2e) == -1) {
                      uStack_2e._0_2_ = 0;
                      uStack_2e._2_2_ = 0;
                      iVar1 = 0;
                      if (CONCAT22(uStack_2a._2_2_,(ushort)uStack_2a) == -1) {
                        uStack_2a._0_2_ = 0;
                        uStack_2a._2_2_ = 0;
                        if (uStack_26 == 0xffff) {
                          uStack_26 = 0x8000;
                          uVar17 = uVar17 + 1;
                          iVar3 = 0;
                          iVar1 = 0;
                        }
                        else {
                          uStack_26 = uStack_26 + 1;
                          iVar3 = 0;
                          iVar1 = 0;
                        }
                      }
                      else {
                        iVar3 = CONCAT22(uStack_2a._2_2_,(ushort)uStack_2a) + 1;
                        uStack_2a._0_2_ = (ushort)iVar3;
                        uStack_2a._2_2_ = (ushort)((uint)iVar3 >> 0x10);
                      }
                    }
                    else {
                      iVar1 = CONCAT22(uStack_2e._2_2_,(ushort)uStack_2e) + 1;
                      uStack_2e._0_2_ = (ushort)iVar1;
                      uStack_2e._2_2_ = (ushort)((uint)iVar1 >> 0x10);
                      iVar3 = CONCAT22(uStack_2a._2_2_,(ushort)uStack_2a);
                    }
                  }
                  uStack_2e._2_2_ = (ushort)((uint)iVar1 >> 0x10);
                  uStack_2e._0_2_ = (ushort)iVar1;
                  uStack_2a._2_2_ = (ushort)((uint)iVar3 >> 0x10);
                  uStack_2a._0_2_ = (ushort)iVar3;
                  if (uVar17 < 0x7fff) {
                    local_40._0_2_ = (ushort)uStack_2e;
                    local_40._2_2_ = uStack_2e._2_2_;
                    local_3c._0_2_ = (ushort)uStack_2a;
                    local_3c._2_2_ = uStack_2a._2_2_;
                    uStack_38._0_2_ = uStack_26;
                    uStack_38._2_2_ = uVar17 | uVar21;
                    uVar13 = CONCAT22(uVar17 | uVar21,uStack_26);
                    iVar4 = iVar1;
                    iVar5 = iVar3;
                  }
                  else {
                    local_3c._0_2_ = 0;
                    local_3c._2_2_ = 0;
                    local_40._0_2_ = 0;
                    local_40._2_2_ = 0;
                    uVar13 = ((uVar21 == 0) - 1 & 0x80000000) + 0x7fff8000;
                    uStack_38._0_2_ = (ushort)uVar13;
                    uStack_38._2_2_ = (ushort)(uVar13 >> 0x10);
                    iVar4 = 0;
                    iVar5 = 0;
                  }
                }
                goto joined_r0x00a5fe36;
              }
              uVar13 = 0;
              local_3c._0_2_ = 0;
              local_3c._2_2_ = 0;
              local_40._0_2_ = 0;
              local_40._2_2_ = 0;
            }
            else {
              local_3c._0_2_ = 0;
              local_3c._2_2_ = 0;
              uVar13 = ((uVar21 == 0) - 1 & 0x80000000) + 0x7fff8000;
              local_40._0_2_ = 0;
              local_40._2_2_ = 0;
            }
            uStack_38._0_2_ = (ushort)uVar13;
            uStack_38._2_2_ = (ushort)(uVar13 >> 0x10);
            iVar1 = 0;
            iVar3 = 0;
            iVar4 = 0;
            iVar5 = 0;
          }
          goto joined_r0x00a5fe36;
        }
      }
      local_3c._2_2_ = (undefined2)((uint)iVar5 >> 0x10);
      local_3c._0_2_ = (undefined2)iVar5;
      local_40._2_2_ = (undefined2)((uint)iVar4 >> 0x10);
      local_40._0_2_ = (undefined2)iVar4;
      uStack_38._2_2_ = (ushort)(uVar13 >> 0x10);
      uStack_38._0_2_ = (ushort)uVar13;
      uVar22 = CONCAT22((undefined2)local_3c,local_40._2_2_);
      uVar19 = CONCAT22((ushort)uStack_38,local_3c._2_2_);
      uStack_4a = iVar15;
      uVar2 = uVar13;
      uStack_2e = iVar1;
      uStack_2a = iVar3;
      local_3c = iVar5;
    }
    else {
      uVar22 = 0;
      uStack_38._2_2_ = 0x7fff;
      uVar19 = 0x80000000;
      local_40._0_2_ = 0;
    }
  }
  else {
LAB_00a6013b:
    iVar4 = CONCAT22(local_40._2_2_,(undefined2)local_40);
    uVar2 = CONCAT22(uStack_38._2_2_,(ushort)uStack_38);
    local_40._0_2_ = 0;
    uStack_38._2_2_ = 0;
    uVar19 = 0;
    uVar22 = 0;
  }
  *(undefined2 *)pld12->ld12 = (undefined2)local_40;
  *(ushort *)(pld12->ld12 + 10) = uStack_38._2_2_ | uVar9;
  *(undefined4 *)(pld12->ld12 + 2) = uVar22;
  *(undefined4 *)(pld12->ld12 + 6) = uVar19;
LAB_00a60159:
  uStack_38 = uVar2;
  local_40 = iVar4;
  uVar13 = ___security_check_cookie_4();
  return uVar13;
}



// Library Function - Single Match
//  __set_exp
// 
// Library: Visual Studio 2008 Release

float10 __set_exp(undefined8 param_1,short param_2)

{
  double local_c;
  
  local_c = (double)CONCAT26((param_2 + 0x3fe) * 0x10 | param_1._6_2_ & 0x800f,(undefined6)param_1);
  return (float10)local_c;
}



// Library Function - Single Match
//  __sptype
// 
// Library: Visual Studio 2008 Release

undefined4 __sptype(int param_1,uint param_2)

{
  undefined4 uStack_8;
  
  if (param_2 == 0x7ff00000) {
    if (param_1 == 0) {
      return 1;
    }
  }
  else if ((param_2 == 0xfff00000) && (param_1 == 0)) {
    return 2;
  }
  if ((param_2._2_2_ & 0x7ff8) == 0x7ff8) {
    uStack_8 = 3;
  }
  else {
    if (((param_2._2_2_ & 0x7ff8) != 0x7ff0) || (((param_2 & 0x7ffff) == 0 && (param_1 == 0)))) {
      return 0;
    }
    uStack_8 = 4;
  }
  return uStack_8;
}



void FUN_00a60225(uint param_1,uint param_2,int *param_3)

{
  ushort uVar1;
  double dVar2;
  bool bVar3;
  int iVar4;
  int extraout_EDX;
  uint extraout_EDX_00;
  
  dVar2 = (double)CONCAT17(param_2._3_1_,CONCAT16(param_2._2_1_,CONCAT24((ushort)param_2,param_1)));
  if (NAN(dVar2) == (dVar2 == 0.0)) {
    if (((param_2 & 0x7ff00000) == 0) && (((param_2 & 0xfffff) != 0 || (param_1 != 0)))) {
      if (0.0 <= (double)CONCAT17(param_2._3_1_,
                                  CONCAT16(param_2._2_1_,CONCAT24((ushort)param_2,param_1)))) {
        bVar3 = false;
      }
      else {
        bVar3 = true;
      }
      while ((param_2._2_1_ & 0x10) == 0) {
        iVar4 = CONCAT13(param_2._3_1_,CONCAT12(param_2._2_1_,(ushort)param_2)) << 1;
        param_2._0_2_ = (ushort)iVar4;
        param_2._2_1_ = (byte)((uint)iVar4 >> 0x10);
        param_2._3_1_ = (byte)((uint)iVar4 >> 0x18);
        if ((param_1 & 0x80000000) != 0) {
          param_2._0_2_ = (ushort)param_2 | 1;
        }
        param_1 = param_1 << 1;
      }
      uVar1 = CONCAT11(param_2._3_1_,param_2._2_1_) & 0xffef;
      param_2._2_1_ = (byte)uVar1;
      param_2._3_1_ = (byte)(uVar1 >> 8);
      if (bVar3) {
        param_2._3_1_ = param_2._3_1_ | 0x80;
      }
      __set_exp(CONCAT17(param_2._3_1_,CONCAT16(param_2._2_1_,CONCAT24((ushort)param_2,param_1))),0)
      ;
      iVar4 = extraout_EDX;
    }
    else {
      __set_exp(CONCAT17(param_2._3_1_,CONCAT16(param_2._2_1_,CONCAT24((ushort)param_2,param_1))),0)
      ;
      iVar4 = (extraout_EDX_00 >> 4 & 0x7ff) - 0x3fe;
    }
  }
  else {
    iVar4 = 0;
  }
  *param_3 = iVar4;
  return;
}



// Library Function - Single Match
//  __copysign
// 
// Library: Visual Studio 2008 Release

double __cdecl __copysign(double _Number,double _Sign)

{
  return (double)CONCAT44((_Sign._4_4_ ^ _Number._4_4_) & 0x7fffffff ^ _Sign._4_4_,SUB84(_Number,0))
  ;
}



// Library Function - Single Match
//  __fpclass
// 
// Library: Visual Studio 2008 Release

int __cdecl __fpclass(double _X)

{
  int iVar1;
  int iStack_8;
  
  if ((_X._6_2_ & 0x7ff0) == 0x7ff0) {
    iVar1 = __sptype();
    if (iVar1 == 1) {
      return 0x200;
    }
    if (iVar1 == 2) {
      iStack_8 = 4;
    }
    else {
      if (iVar1 != 3) {
        return 1;
      }
      iStack_8 = 2;
    }
    return iStack_8;
  }
  if ((((ulonglong)_X & 0x7ff0000000000000) == 0) &&
     ((((ulonglong)_X & 0xfffff00000000) != 0 || (_X._0_4_ != 0)))) {
    return (-(uint)(((ulonglong)_X & 0x8000000000000000) != 0) & 0xffffff90) + 0x80;
  }
  if (NAN(_X) != (_X == 0.0)) {
    return (-(uint)(((ulonglong)_X & 0x8000000000000000) != 0) & 0xffffffe0) + 0x40;
  }
  return (-(uint)(((ulonglong)_X & 0x8000000000000000) != 0) & 0xffffff08) + 0x100;
}



// Library Function - Single Match
//  __raise_exc_ex
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __raise_exc_ex(uint *param_1,uint *param_2,uint param_3,int param_4,undefined8 *param_5,
                   undefined8 *param_6,int param_7)

{
  uint *puVar1;
  undefined8 *puVar2;
  byte bVar3;
  uint uVar4;
  
  uVar4 = param_3;
  puVar1 = param_2;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  if ((param_3 & 0x10) != 0) {
    param_1[1] = param_1[1] | 1;
    param_3 = 0xc000008f;
  }
  if ((uVar4 & 2) != 0) {
    param_1[1] = param_1[1] | 2;
    param_3 = 0xc0000093;
  }
  if ((uVar4 & 1) != 0) {
    param_1[1] = param_1[1] | 4;
    param_3 = 0xc0000091;
  }
  if ((uVar4 & 4) != 0) {
    param_1[1] = param_1[1] | 8;
    param_3 = 0xc000008e;
  }
  if ((uVar4 & 8) != 0) {
    param_1[1] = param_1[1] | 0x10;
    param_3 = 0xc0000090;
  }
  param_1[2] = param_1[2] ^ (~(*param_2 << 4) ^ param_1[2]) & 0x10;
  param_1[2] = param_1[2] ^ (~(*param_2 * 2) ^ param_1[2]) & 8;
  param_1[2] = param_1[2] ^ (~(*param_2 >> 1) ^ param_1[2]) & 4;
  param_1[2] = param_1[2] ^ (~(*param_2 >> 3) ^ param_1[2]) & 2;
  param_1[2] = param_1[2] ^ (~(*param_2 >> 5) ^ param_1[2]) & 1;
  bVar3 = __statfp();
  puVar2 = param_6;
  if ((bVar3 & 1) != 0) {
    param_1[3] = param_1[3] | 0x10;
  }
  if ((bVar3 & 4) != 0) {
    param_1[3] = param_1[3] | 8;
  }
  if ((bVar3 & 8) != 0) {
    param_1[3] = param_1[3] | 4;
  }
  if ((bVar3 & 0x10) != 0) {
    param_1[3] = param_1[3] | 2;
  }
  if ((bVar3 & 0x20) != 0) {
    param_1[3] = param_1[3] | 1;
  }
  uVar4 = *puVar1 & 0xc00;
  if (uVar4 == 0) {
    *param_1 = *param_1 & 0xfffffffc;
  }
  else {
    if (uVar4 == 0x400) {
      uVar4 = *param_1 & 0xfffffffd | 1;
    }
    else {
      if (uVar4 != 0x800) {
        if (uVar4 == 0xc00) {
          *param_1 = *param_1 | 3;
        }
        goto LAB_00a604f9;
      }
      uVar4 = *param_1 & 0xfffffffe | 2;
    }
    *param_1 = uVar4;
  }
LAB_00a604f9:
  uVar4 = *puVar1 & 0x300;
  if (uVar4 == 0) {
    uVar4 = *param_1 & 0xffffffeb | 8;
LAB_00a6052f:
    *param_1 = uVar4;
  }
  else {
    if (uVar4 == 0x200) {
      uVar4 = *param_1 & 0xffffffe7 | 4;
      goto LAB_00a6052f;
    }
    if (uVar4 == 0x300) {
      *param_1 = *param_1 & 0xffffffe3;
    }
  }
  *param_1 = *param_1 ^ (param_4 << 5 ^ *param_1) & 0x1ffe0;
  param_1[8] = param_1[8] | 1;
  if (param_7 == 0) {
    param_1[8] = param_1[8] & 0xffffffe3 | 2;
    *(undefined8 *)(param_1 + 4) = *param_5;
    param_1[0x18] = param_1[0x18] | 1;
    param_1[0x18] = param_1[0x18] & 0xffffffe3 | 2;
    *(undefined8 *)(param_1 + 0x14) = *param_6;
  }
  else {
    param_1[8] = param_1[8] & 0xffffffe1;
    param_1[4] = *(uint *)param_5;
    param_1[0x18] = param_1[0x18] | 1;
    param_1[0x18] = param_1[0x18] & 0xffffffe1;
    param_1[0x14] = *(uint *)param_6;
  }
  __clrfp();
  RaiseException(param_3,0,1,(ULONG_PTR *)&param_1);
  if ((*(byte *)(param_1 + 2) & 0x10) != 0) {
    *puVar1 = *puVar1 & 0xfffffffe;
  }
  if ((*(byte *)(param_1 + 2) & 8) != 0) {
    *puVar1 = *puVar1 & 0xfffffffb;
  }
  if ((*(byte *)(param_1 + 2) & 4) != 0) {
    *puVar1 = *puVar1 & 0xfffffff7;
  }
  if ((*(byte *)(param_1 + 2) & 2) != 0) {
    *puVar1 = *puVar1 & 0xffffffef;
  }
  if ((*(byte *)(param_1 + 2) & 1) != 0) {
    *puVar1 = *puVar1 & 0xffffffdf;
  }
  uVar4 = *param_1 & 3;
  if (uVar4 == 0) {
    *puVar1 = *puVar1 & 0xfffff3ff;
  }
  else {
    if (uVar4 == 1) {
      uVar4 = *puVar1 & 0xfffff7ff | 0x400;
    }
    else {
      if (uVar4 != 2) {
        if (uVar4 == 3) {
          *puVar1 = *puVar1 | 0xc00;
        }
        goto LAB_00a60634;
      }
      uVar4 = *puVar1 & 0xfffffbff | 0x800;
    }
    *puVar1 = uVar4;
  }
LAB_00a60634:
  uVar4 = *param_1 >> 2 & 7;
  if (uVar4 == 0) {
    uVar4 = *puVar1 & 0xfffff3ff | 0x300;
  }
  else {
    if (uVar4 != 1) {
      if (uVar4 == 2) {
        *puVar1 = *puVar1 & 0xfffff3ff;
      }
      goto LAB_00a60660;
    }
    uVar4 = *puVar1 & 0xfffff3ff | 0x200;
  }
  *puVar1 = uVar4;
LAB_00a60660:
  if (param_7 == 0) {
    *puVar2 = *(undefined8 *)(param_1 + 0x14);
  }
  else {
    *(uint *)puVar2 = param_1[0x14];
  }
  return;
}



// Library Function - Single Match
//  __raise_exc
// 
// Library: Visual Studio 2008 Release

void __raise_exc(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                undefined4 param_5,undefined4 param_6)

{
  __raise_exc_ex(param_1,param_2,param_3,param_4,param_5,param_6,0);
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  __handle_exc
// 
// Library: Visual Studio 2008 Release

bool __handle_exc(uint param_1,double *param_2,uint param_3)

{
  double dVar1;
  double dVar2;
  bool bVar3;
  uint uVar4;
  bool bVar5;
  float10 fVar6;
  uint local_18;
  byte bStack_14;
  undefined uStack_13;
  ushort uStack_12;
  int local_c;
  uint local_8;
  
  uVar4 = param_1 & 0x1f;
  bVar3 = true;
  local_8 = uVar4;
  if (((param_1 & 8) != 0) && ((param_3 & 1) != 0)) {
    FUN_00a60ae4(1);
    uVar4 = param_1 & 0x17;
    goto LAB_00a60859;
  }
  if (((param_1 & 4) != 0) && ((param_3 & 4) != 0)) {
    FUN_00a60ae4(4);
    uVar4 = param_1 & 0x1b;
    goto LAB_00a60859;
  }
  if (((param_1 & 1) == 0) || ((param_3 & 8) == 0)) {
    if (((param_1 & 2) == 0) || ((param_3 & 0x10) == 0)) goto LAB_00a60859;
    bVar5 = (param_1 & 0x10) != 0;
    if (NAN(*param_2) == (*param_2 == 0.0)) {
      fVar6 = (float10)FUN_00a60225(*param_2,&local_c);
      dVar1 = (double)fVar6;
      local_18 = SUB84(dVar1,0);
      bStack_14 = (byte)((ulonglong)dVar1 >> 0x20);
      uStack_13 = (undefined)((ulonglong)dVar1 >> 0x28);
      uStack_12 = (ushort)((ulonglong)dVar1 >> 0x30);
      local_c = local_c + -0x600;
      if (local_c < -0x432) {
        dVar1 = dVar1 * 0.0;
        bVar5 = bVar3;
LAB_00a60839:
        local_18 = SUB84(dVar1,0);
        bStack_14 = (byte)((ulonglong)dVar1 >> 0x20);
        uStack_13 = (undefined)((ulonglong)dVar1 >> 0x28);
        uStack_12 = (ushort)((ulonglong)dVar1 >> 0x30);
      }
      else {
        uStack_12 = uStack_12 & 0xf | 0x10;
        if (local_c < -0x3fd) {
          local_c = -0x3fd - local_c;
          do {
            if (((local_18 & 1) != 0) && (!bVar5)) {
              bVar5 = bVar3;
            }
            local_18 = local_18 >> 1;
            if ((bStack_14 & 1) != 0) {
              local_18 = local_18 | 0x80000000;
            }
            uVar4 = CONCAT22(uStack_12,CONCAT11(uStack_13,bStack_14)) >> 1;
            bStack_14 = (byte)uVar4;
            uStack_13 = (undefined)(uVar4 >> 8);
            uStack_12 = uStack_12 >> 1;
            local_c = local_c + -1;
          } while (local_c != 0);
        }
        if (dVar1 < 0.0) {
          dVar1 = -(double)CONCAT26(uStack_12,CONCAT15(uStack_13,CONCAT14(bStack_14,local_18)));
          goto LAB_00a60839;
        }
      }
      *param_2 = (double)CONCAT26(uStack_12,CONCAT15(uStack_13,CONCAT14(bStack_14,local_18)));
      bVar3 = bVar5;
    }
    if (bVar3) {
      FUN_00a60ae4(0x10);
    }
    uVar4 = local_8 & 0xfffffffd;
    local_8 = uVar4;
    goto LAB_00a60859;
  }
  FUN_00a60ae4(8);
  uVar4 = param_3 & 0xc00;
  dVar1 = _DAT_03240910;
  dVar2 = _DAT_03240910;
  if (uVar4 == 0) {
    if (0.0 < *param_2 == NAN(*param_2)) {
LAB_00a60779:
      dVar1 = -dVar2;
    }
LAB_00a6077b:
    *param_2 = dVar1;
  }
  else {
    if (uVar4 == 0x400) {
      dVar1 = _DAT_03240920;
      if (0.0 < *param_2 == NAN(*param_2)) goto LAB_00a60779;
      goto LAB_00a6077b;
    }
    dVar2 = _DAT_03240920;
    if (uVar4 == 0x800) {
      if (0.0 < *param_2 == NAN(*param_2)) goto LAB_00a60779;
      goto LAB_00a6077b;
    }
    if (uVar4 == 0xc00) {
      dVar1 = _DAT_03240920;
      if (0.0 < *param_2 == NAN(*param_2)) goto LAB_00a60779;
      goto LAB_00a6077b;
    }
  }
  uVar4 = param_1 & 0x1e;
LAB_00a60859:
  if (((param_1 & 0x10) != 0) && ((param_3 & 0x20) != 0)) {
    FUN_00a60ae4(0x20);
    uVar4 = uVar4 & 0xffffffef;
  }
  return uVar4 == 0;
}



// Library Function - Single Match
//  __set_errno_from_matherr
// 
// Library: Visual Studio 2008 Release

void __set_errno_from_matherr(int param_1)

{
  int *piVar1;
  
  if (param_1 == 1) {
    piVar1 = __errno();
    *piVar1 = 0x21;
  }
  else if ((1 < param_1) && (param_1 < 4)) {
    piVar1 = __errno();
    *piVar1 = 0x22;
    return;
  }
  return;
}



// Library Function - Single Match
//  __errcode
// 
// Library: Visual Studio 2008 Release

char __errcode(byte param_1)

{
  char cVar1;
  
  if ((param_1 & 0x20) == 0) {
    if ((param_1 & 8) != 0) {
      return '\x01';
    }
    if ((param_1 & 4) == 0) {
      if ((param_1 & 1) == 0) {
        return (param_1 & 2) * '\x02';
      }
      cVar1 = '\x03';
    }
    else {
      cVar1 = '\x02';
    }
  }
  else {
    cVar1 = '\x05';
  }
  return cVar1;
}



// Library Function - Single Match
//  __umatherr
// 
// Library: Visual Studio 2008 Release

float10 __umatherr(undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4,
                  undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8_00,
                  undefined4 param_8)

{
  int iVar1;
  undefined4 local_24;
  undefined *local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 uStack_8;
  
  iVar1 = 0;
  do {
    if ((&DAT_03240938)[iVar1 * 2] == param_2) {
      local_20 = (&PTR_DAT_0324093c)[iVar1 * 2];
      goto LAB_00a608fa;
    }
    iVar1 = iVar1 + 1;
  } while (iVar1 < 0x1d);
  local_20 = (undefined *)0x0;
LAB_00a608fa:
  if (local_20 != (undefined *)0x0) {
    local_1c = param_3;
    local_18 = param_4;
    local_14 = param_5;
    local_10 = param_6;
    local_c = param_7;
    local_24 = param_1;
    uStack_8 = param_8_00;
    __ctrlfp(param_8,0xffff);
    iVar1 = FUN_0044568d(&local_24);
    if (iVar1 == 0) {
      __set_errno_from_matherr(param_1);
    }
    return (float10)(double)CONCAT44(uStack_8,local_c);
  }
  __ctrlfp(param_8,0xffff);
  __set_errno_from_matherr(param_1);
  return (float10)(double)CONCAT44(param_8_00,param_7);
}



// Library Function - Single Match
//  __handle_qnan1
// 
// Library: Visual Studio 2008 Release

float10 __handle_qnan1(undefined4 param_1,double param_2,undefined4 param_11)

{
  int *piVar1;
  float10 fVar2;
  
  if (DAT_03240dd4 == 0) {
    fVar2 = (float10)__umatherr(1,param_1,param_2,0,param_2,param_11);
    return fVar2;
  }
  piVar1 = __errno();
  *piVar1 = 0x21;
  __ctrlfp();
  return (float10)param_2;
}



// Library Function - Single Match
//  __except1
// 
// Library: Visual Studio 2008 Release

void __except1(undefined4 param_1,undefined4 param_2,undefined8 param_3,undefined8 param_4,
              undefined4 param_5)

{
  int iVar1;
  
  iVar1 = __handle_exc(param_1,&param_4,param_5);
  if (iVar1 == 0) {
    __raise_exc();
  }
  iVar1 = __errcode(param_1);
  if ((DAT_03240dd4 == 0) && (iVar1 != 0)) {
    __umatherr(iVar1,param_2,param_3,0,param_4,param_5);
  }
  else {
    __set_errno_from_matherr(iVar1);
    __ctrlfp();
  }
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  __statfp
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __statfp(void)

{
  short in_FPUStatusWord;
  
  return (int)in_FPUStatusWord;
}



// Library Function - Single Match
//  __clrfp
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __clrfp(void)

{
  short in_FPUStatusWord;
  
  return (int)in_FPUStatusWord;
}



// Library Function - Single Match
//  __ctrlfp
// 
// Library: Visual Studio 2008 Release

int __ctrlfp(void)

{
  short in_FPUControlWord;
  
  return (int)in_FPUControlWord;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_00a60ae4(void)

{
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  ___set_fpsr_sse2
// 
// Library: Visual Studio 2008 Release

void ___set_fpsr_sse2(uint param_1)

{
  if (DAT_032f16e0 != 0) {
    if (((param_1 & 0x40) == 0) || (DAT_03240a38 == 0)) {
      MXCSR = param_1 & 0xffffffbf;
    }
    else {
      MXCSR = param_1;
    }
  }
  return;
}



// Library Function - Single Match
//  ___libm_error_support
// 
// Library: Visual Studio 2008 Release

void ___libm_error_support(double *param_1,undefined8 *param_2,double *param_3,int param_4)

{
  code *pcVar1;
  int iVar2;
  int *piVar3;
  undefined4 local_2c;
  char *local_28;
  double local_24;
  undefined8 local_1c;
  double local_14;
  undefined local_c;
  undefined uStack_b;
  undefined uStack_a;
  undefined uStack_9;
  undefined uStack_8;
  undefined uStack_7;
  undefined uStack_6;
  undefined uStack_5;
  
  local_c = 0;
  uStack_b = 0;
  uStack_a = 0;
  uStack_9 = 0;
  uStack_8 = 0;
  uStack_7 = 0;
  uStack_6 = 0;
  uStack_5 = 0;
  if (DAT_032ebc84 == 0) {
    pcVar1 = FUN_0044568d;
  }
  else {
    pcVar1 = (code *)__decode_pointer(DAT_032f16dc);
  }
  if (param_4 < 0xa7) {
    if (param_4 == 0xa6) {
      local_2c = 3;
      local_28 = "exp10";
LAB_00a60c5f:
      local_24 = *param_1;
      local_1c = *param_2;
      local_14 = *param_3;
      iVar2 = (*pcVar1)(&local_2c);
      if (iVar2 == 0) {
        piVar3 = __errno();
        *piVar3 = 0x22;
      }
    }
    else if (param_4 < 0x1a) {
      if (param_4 != 0x19) {
        local_2c = 2;
        if (param_4 == 2) {
          local_2c = 2;
          local_28 = "log";
        }
        else {
          if (param_4 == 3) {
            local_28 = "log";
            goto LAB_00a60ccd;
          }
          if (param_4 == 8) {
            local_28 = "log10";
          }
          else {
            if (param_4 == 9) {
              local_28 = "log10";
              goto LAB_00a60ccd;
            }
            if (param_4 != 0xe) {
              if (param_4 != 0xf) {
                if (param_4 != 0x18) {
                  return;
                }
                local_2c = 3;
                goto LAB_00a60c58;
              }
              local_28 = &DAT_00da2a80;
              goto LAB_00a60c94;
            }
            local_2c = 3;
            local_28 = "exp";
          }
        }
        goto LAB_00a60c5f;
      }
      local_28 = &DAT_00da2a7c;
LAB_00a60c94:
      local_24 = *param_1;
      local_1c = *param_2;
      local_2c = 4;
      local_14 = *param_3;
      (*pcVar1)(&local_2c);
    }
    else {
      if (param_4 != 0x1a) {
        if (param_4 != 0x1b) {
          if (param_4 == 0x1c) goto switchD_00a60d8a_caseD_3ee;
          if (param_4 != 0x1d) {
            if (param_4 != 0x3a) {
              if (param_4 != 0x3d) {
                return;
              }
              goto switchD_00a60d8a_caseD_3f1;
            }
            goto switchD_00a60d8a_caseD_3f0;
          }
          local_28 = "pow";
          goto LAB_00a60d43;
        }
        local_2c = 2;
LAB_00a60c58:
        local_28 = "pow";
        goto LAB_00a60c5f;
      }
      local_14 = 1.0;
    }
    goto LAB_00a60e23;
  }
  switch(param_4) {
  case 1000:
    local_28 = "log";
    break;
  case 0x3e9:
    local_28 = "log10";
    break;
  case 0x3ea:
    local_28 = "exp";
    break;
  case 0x3eb:
    local_28 = "atan";
    break;
  case 0x3ec:
    local_28 = "ceil";
    break;
  case 0x3ed:
    local_28 = "floor";
    break;
  case 0x3ee:
switchD_00a60d8a_caseD_3ee:
    local_28 = "pow";
    goto LAB_00a60ccd;
  case 0x3ef:
    local_28 = "modf";
    break;
  case 0x3f0:
switchD_00a60d8a_caseD_3f0:
    local_28 = "acos";
    goto LAB_00a60ccd;
  case 0x3f1:
switchD_00a60d8a_caseD_3f1:
    local_28 = "asin";
    goto LAB_00a60ccd;
  case 0x3f2:
    local_28 = "sin";
    goto LAB_00a60def;
  case 0x3f3:
    local_28 = "cos";
    goto LAB_00a60def;
  case 0x3f4:
    local_28 = "tan";
LAB_00a60def:
    local_14 = *param_1 *
               (double)CONCAT17(uStack_5,CONCAT16(uStack_6,CONCAT15(uStack_7,CONCAT14(uStack_8,
                                                  CONCAT13(uStack_9,CONCAT12(uStack_a,CONCAT11(
                                                  uStack_b,local_c)))))));
    *param_3 = local_14;
    local_24 = *param_1;
    local_1c = *param_2;
    goto LAB_00a60e00;
  default:
    goto switchD_00a60d8a_caseD_d;
  }
LAB_00a60d43:
  *param_3 = *param_1;
LAB_00a60ccd:
  local_24 = *param_1;
  local_1c = *param_2;
  local_14 = *param_3;
LAB_00a60e00:
  local_2c = 1;
  iVar2 = (*pcVar1)(&local_2c);
  if (iVar2 == 0) {
    piVar3 = __errno();
    *piVar3 = 0x21;
  }
LAB_00a60e23:
  *param_3 = local_14;
switchD_00a60d8a_caseD_d:
  return;
}



// Library Function - Single Match
//  __floor_default
// 
// Library: Visual Studio 2008 Release

float10 __floor_default(double param_1)

{
  double dVar1;
  uint uVar2;
  int iVar3;
  float10 fVar4;
  undefined4 uVar5;
  
  uVar2 = __ctrlfp(DAT_03240a3c,0xffff);
  if ((param_1._6_2_ & 0x7ff0) == 0x7ff0) {
    iVar3 = __sptype();
    if (0 < iVar3) {
      if (iVar3 < 3) {
        __ctrlfp(uVar2,0xffff);
        return (float10)param_1;
      }
      if (iVar3 == 3) {
        fVar4 = (float10)__handle_qnan1();
        return fVar4;
      }
    }
    dVar1 = param_1 + 1.0;
    uVar5 = 8;
  }
  else {
    fVar4 = (float10)__frnd(SUB84(param_1,0),(int)((ulonglong)param_1 >> 0x20));
    dVar1 = (double)fVar4;
    if (((NAN(param_1) || NAN(dVar1)) != (param_1 == dVar1)) || ((uVar2 & 0x20) != 0)) {
      __ctrlfp(uVar2,0xffff);
      return (float10)dVar1;
    }
    uVar5 = 0x10;
  }
  fVar4 = (float10)__except1(uVar5,0xb,param_1,dVar1,uVar2);
  return fVar4;
}



// Library Function - Single Match
//  __ceil_default
// 
// Library: Visual Studio 2008 Release

float10 __ceil_default(double param_1)

{
  double dVar1;
  uint uVar2;
  int iVar3;
  float10 fVar4;
  undefined4 uVar5;
  
  uVar2 = __ctrlfp(DAT_03240a40,0xffff);
  if ((param_1._6_2_ & 0x7ff0) == 0x7ff0) {
    iVar3 = __sptype();
    if (0 < iVar3) {
      if (iVar3 < 3) {
        __ctrlfp(uVar2,0xffff);
        return (float10)param_1;
      }
      if (iVar3 == 3) {
        fVar4 = (float10)__handle_qnan1();
        return fVar4;
      }
    }
    dVar1 = param_1 + 1.0;
    uVar5 = 8;
  }
  else {
    fVar4 = (float10)__frnd(SUB84(param_1,0),(int)((ulonglong)param_1 >> 0x20));
    dVar1 = (double)fVar4;
    if (((NAN(param_1) || NAN(dVar1)) != (param_1 == dVar1)) || ((uVar2 & 0x20) != 0)) {
      __ctrlfp(uVar2,0xffff);
      return (float10)dVar1;
    }
    uVar5 = 0x10;
  }
  fVar4 = (float10)__except1(uVar5,0xc,param_1,dVar1,uVar2);
  return fVar4;
}



void FUN_00a61020(void)

{
  float10 in_ST0;
  
  FUN_00a6103e((double)in_ST0);
  return;
}



float10 FUN_00a6103e(void)

{
  ushort uVar1;
  int iVar2;
  float10 fVar3;
  double in_XMM0_Qa;
  double dVar4;
  double dVar5;
  double dVar6;
  double dVar7;
  double dVar8;
  double dVar9;
  double dVar10;
  double dVar11;
  double dVar12;
  double dVar13;
  double dVar14;
  double dVar15;
  double dVar16;
  double dVar17;
  
  uVar1 = ((ushort)((ulonglong)in_XMM0_Qa >> 0x30) & 0x7fff) + 0xcfd0;
  if (uVar1 < 0x10c6) {
    dVar9 = (in_XMM0_Qa * 10.1859163578813 + 6755399441055744.0) - 6755399441055744.0;
    iVar2 = ((int)ROUND(in_XMM0_Qa * 10.1859163578813) + 0x1c7600U & 0x3f) * 0x20;
    dVar10 = dVar9 * 3.798187816439979e-12;
    dVar4 = in_XMM0_Qa - dVar9 * 0.09817477042088285;
    dVar14 = in_XMM0_Qa - dVar9 * 0.09817477042088285;
    dVar15 = dVar14 - dVar10;
    dVar5 = dVar4 - dVar10;
    dVar7 = dVar4 - dVar9 * 3.798187816439979e-12;
    dVar6 = dVar5 * dVar5;
    dVar8 = dVar7 * dVar7;
    dVar11 = *(double *)(&DAT_00da2b00 + iVar2) + *(double *)(&DAT_00da2b18 + iVar2);
    dVar12 = *(double *)(&DAT_00da2b18 + iVar2) * dVar15;
    dVar16 = dVar15 * *(double *)(&DAT_00da2b00 + iVar2);
    dVar13 = dVar12 + *(double *)(&DAT_00da2b08 + iVar2);
    dVar17 = dVar16 + dVar13;
    return (float10)(dVar17 + (dVar9 * 1.263916405497469e-22 - ((dVar14 - dVar15) - dVar10)) *
                              (*(double *)(&DAT_00da2b08 + iVar2) * dVar15 - dVar11) +
                              *(double *)(&DAT_00da2b10 + iVar2) +
                              (*(double *)(&DAT_00da2b08 + iVar2) - dVar13) + dVar12 +
                              (dVar13 - dVar17) + dVar16 +
                              (dVar6 * 0.008333333333333333 + -0.1666666666666667 +
                              (dVar4 * 2.755731922398589e-06 * dVar5 + -0.0001984126984126984) *
                              dVar6 * dVar6) * dVar11 * dVar15 * dVar6 +
                              (dVar8 * 0.04166666666666666 + -0.5 +
                              (dVar4 * 2.48015873015873e-05 * dVar7 + -0.001388888888888889) *
                              dVar8 * dVar8) * *(double *)(&DAT_00da2b08 + iVar2) * dVar8);
  }
  if ((short)uVar1 < 0x10c6) {
    if (uVar1 >> 4 == 0xcfd) {
      return (float10)(in_XMM0_Qa * 0.9999999999999999);
    }
    return (float10)in_XMM0_Qa;
  }
  fVar3 = (float10)FUN_00a4d13f();
  return fVar3;
}



// Library Function - Single Match
//  __trandisp1
// 
// Library: Visual Studio

void __fastcall __trandisp1(undefined4 param_1,int param_2)

{
  float10 fVar1;
  byte bVar2;
  undefined2 uVar3;
  int unaff_EBP;
  float10 in_ST0;
  
  if (*(char *)(param_2 + 0xe) == '\x05') {
    uVar3 = (undefined2)
            CONCAT31((uint3)((byte)((ushort)*(undefined2 *)(unaff_EBP + -0xa4) >> 8) & 0xfe | 2),
                     0x3f);
  }
  else {
    uVar3 = 0x133f;
  }
  *(undefined2 *)(unaff_EBP + -0xa2) = uVar3;
  fVar1 = (float10)0;
  *(int *)(unaff_EBP + -0x94) = param_2;
  *(ushort *)(unaff_EBP + -0xa0) =
       (ushort)NAN(in_ST0) << 8 | (ushort)(in_ST0 < fVar1) << 9 | (ushort)(in_ST0 != fVar1) << 10 |
       (ushort)(in_ST0 == fVar1) << 0xe;
  *(undefined *)(unaff_EBP + -0x90) = 0;
  bVar2 = (char)(*(char *)(unaff_EBP + -0x9f) << 1) >> 1;
                    // WARNING: Could not recover jumptable at 0x00a61255. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(param_2 + (char)(&DAT_03240a6c)[(byte)((bVar2 & 7) << 1 | (char)bVar2 < '\0')] + 0x10
              ))();
  return;
}



// Library Function - Single Match
//  __trandisp2
// 
// Libraries: Visual Studio 1998, Visual Studio 2003, Visual Studio 2005, Visual Studio 2008

void __fastcall __trandisp2(undefined4 param_1,int param_2)

{
  float10 fVar1;
  char cVar2;
  byte bVar3;
  undefined2 uVar4;
  int unaff_EBP;
  float10 in_ST0;
  float10 in_ST1;
  
  if (*(char *)(param_2 + 0xe) == '\x05') {
    uVar4 = (undefined2)
            CONCAT31((uint3)((byte)((ushort)*(undefined2 *)(unaff_EBP + -0xa4) >> 8) & 0xfe | 2),
                     0x3f);
  }
  else {
    uVar4 = 0x133f;
  }
  *(undefined2 *)(unaff_EBP + -0xa2) = uVar4;
  fVar1 = (float10)0;
  *(int *)(unaff_EBP + -0x94) = param_2;
  *(ushort *)(unaff_EBP + -0xa0) =
       (ushort)NAN(in_ST0) << 8 | (ushort)(in_ST0 < fVar1) << 9 | (ushort)(in_ST0 != fVar1) << 10 |
       (ushort)(in_ST0 == fVar1) << 0xe;
  *(undefined *)(unaff_EBP + -0x90) = 0;
  fVar1 = (float10)0;
  *(ushort *)(unaff_EBP + -0xa0) =
       (ushort)NAN(in_ST1) << 8 | (ushort)(in_ST1 < fVar1) << 9 | (ushort)(in_ST1 != fVar1) << 10 |
       (ushort)(in_ST1 == fVar1) << 0xe;
  bVar3 = (char)(*(char *)(unaff_EBP + -0x9f) << 1) >> 1;
  cVar2 = (char)(*(char *)(unaff_EBP + -0x9f) << 1) >> 1;
                    // WARNING: Could not recover jumptable at 0x00a612e1. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(param_2 + (char)((&DAT_03240a6c)[(byte)(cVar2 << 1 | cVar2 < '\0') & 0xf] |
                               (&DAT_03240a6c)[(byte)((bVar3 & 7) << 1 | (char)bVar3 < '\0')] << 2)
              + 0x10))();
  return;
}



unkbyte10 FUN_00a613c0(void)

{
  float10 in_ST0;
  float10 fVar1;
  unkbyte10 Var2;
  
  fVar1 = (float10)f2xm1(-(ROUND(in_ST0) - in_ST0));
  Var2 = fscale((float10)1 + fVar1,ROUND(in_ST0));
  return Var2;
}



void FUN_00a613d5(void)

{
  return;
}



undefined4 FUN_00a613ec(void)

{
  uint in_EAX;
  
  if ((in_EAX & 0x80000) != 0) {
    return 7;
  }
  return 1;
}



// Library Function - Single Match
//  __fload_withFB
// 
// Library: Visual Studio

uint __fastcall __fload_withFB(undefined4 param_1,int param_2)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_2 + 4) & 0x7ff00000;
  if (uVar1 != 0x7ff00000) {
    return uVar1;
  }
  return *(uint *)(param_2 + 4);
}



uint FUN_00a61448(undefined4 param_1,uint param_2)

{
  if ((param_2 & 0x7ff00000) != 0x7ff00000) {
    return param_2 & 0x7ff00000;
  }
  return param_2;
}



void FUN_00a6145e(void)

{
  return;
}



// Library Function - Single Match
//  __math_exit
// 
// Library: Visual Studio

void __math_exit(void)

{
  ushort in_FPUStatusWord;
  ushort unaff_retaddr;
  
  if (((unaff_retaddr != 0x27f) && ((unaff_retaddr & 0x20) != 0)) &&
     ((in_FPUStatusWord & 0x20) != 0)) {
    __startOneArgErrorHandling();
    return;
  }
  return;
}



void __fastcall FUN_00a614a9(undefined4 param_1,int param_2)

{
  ushort in_FPUStatusWord;
  float10 in_ST0;
  ushort unaff_retaddr;
  uint uStack_4;
  
  uStack_4 = (uint)((ulonglong)(double)in_ST0 >> 0x20);
  if (((ulonglong)(double)in_ST0 & 0x7ff0000000000000) == 0) {
    fscale(in_ST0,(float10)1536.0);
  }
  else if ((uStack_4 & 0x7ff00000) == 0x7ff00000) {
    fscale(in_ST0,(float10)-1536.0);
  }
  else if (((unaff_retaddr == 0x27f) || ((unaff_retaddr & 0x20) != 0)) ||
          ((in_FPUStatusWord & 0x20) == 0)) {
    return;
  }
  if (param_2 == 0x1d) {
    FUN_00a61550();
    return;
  }
  __startOneArgErrorHandling();
  return;
}



float10 __fastcall
FUN_00a61550(undefined4 param_1_00,undefined4 param_2_00,undefined2 param_1,undefined4 param_2,
            undefined4 param_3,undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  float10 in_ST0;
  undefined local_24 [8];
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined4 local_14;
  undefined4 local_10;
  double dStack_c;
  
  local_14 = param_5;
  local_10 = param_6;
  dStack_c = (double)in_ST0;
  uStack_1c = param_3;
  uStack_18 = param_4;
  __87except(param_2_00,local_24,&param_1);
  return (float10)dStack_c;
}



// Library Function - Single Match
//  __startOneArgErrorHandling
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

float10 __fastcall
__startOneArgErrorHandling
          (undefined4 param_1_00,undefined4 param_2_00,undefined2 param_1,undefined4 param_2,
          undefined4 param_3,undefined4 param_4)

{
  float10 in_ST0;
  undefined local_24 [8];
  undefined4 local_1c;
  undefined4 local_18;
  double local_c;
  
  local_c = (double)in_ST0;
  local_1c = param_3;
  local_18 = param_4;
  __87except(param_2_00,local_24,&param_1);
  return (float10)local_c;
}



void FUN_00a615b0(void)

{
  float10 in_ST0;
  
  FUN_00a615ce((double)in_ST0);
  return;
}



float10 FUN_00a615ce(void)

{
  ushort uVar1;
  ushort uVar2;
  int iVar3;
  float10 fVar4;
  double in_XMM0_Qa;
  double dVar5;
  double dVar6;
  double dVar7;
  double dVar8;
  double dVar9;
  double dVar10;
  double dVar11;
  double dVar12;
  double dVar13;
  double dVar14;
  double dVar15;
  double dVar16;
  double dVar17;
  double dVar18;
  
  uVar1 = (ushort)((ulonglong)in_XMM0_Qa >> 0x30);
  uVar2 = (uVar1 & 0x7fff) + 0xcfd0;
  if (uVar2 < 0x10c6) {
    dVar10 = (in_XMM0_Qa * 10.1859163578813 + 6755399441055744.0) - 6755399441055744.0;
    iVar3 = ((int)ROUND(in_XMM0_Qa * 10.1859163578813) + 0x1c7610U & 0x3f) * 0x20;
    dVar11 = dVar10 * 3.798187816439979e-12;
    dVar5 = in_XMM0_Qa - dVar10 * 0.09817477042088285;
    dVar15 = in_XMM0_Qa - dVar10 * 0.09817477042088285;
    dVar16 = dVar15 - dVar11;
    dVar6 = dVar5 - dVar11;
    dVar8 = dVar5 - dVar10 * 3.798187816439979e-12;
    dVar7 = dVar6 * dVar6;
    dVar9 = dVar8 * dVar8;
    dVar12 = *(double *)(&DAT_00da33f0 + iVar3) + *(double *)(&DAT_00da3408 + iVar3);
    dVar13 = *(double *)(&DAT_00da3408 + iVar3) * dVar16;
    dVar17 = dVar16 * *(double *)(&DAT_00da33f0 + iVar3);
    dVar14 = dVar13 + *(double *)(&DAT_00da33f8 + iVar3);
    dVar18 = dVar17 + dVar14;
    return (float10)(dVar18 + (dVar10 * 1.263916405497469e-22 - ((dVar15 - dVar16) - dVar11)) *
                              (*(double *)(&DAT_00da33f8 + iVar3) * dVar16 - dVar12) +
                              *(double *)(&DAT_00da3400 + iVar3) +
                              (*(double *)(&DAT_00da33f8 + iVar3) - dVar14) + dVar13 +
                              (dVar14 - dVar18) + dVar17 +
                              (dVar7 * 0.008333333333333333 + -0.1666666666666667 +
                              (dVar5 * 2.755731922398589e-06 * dVar6 + -0.0001984126984126984) *
                              dVar7 * dVar7) * dVar12 * dVar16 * dVar7 +
                              (dVar9 * 0.04166666666666666 + -0.5 +
                              (dVar5 * 2.48015873015873e-05 * dVar8 + -0.001388888888888889) *
                              dVar9 * dVar9) * *(double *)(&DAT_00da33f8 + iVar3) * dVar9);
  }
  if ((short)uVar2 < 0x10c6) {
    return (float10)(1.0 - (double)((ulonglong)in_XMM0_Qa & 0xffffffffffff |
                                   (ulonglong)(uVar1 & 0x7fff) << 0x30));
  }
  fVar4 = (float10)FUN_00a4d26f();
  return fVar4;
}



// Library Function - Single Match
//  __local_unwind2
// 
// Libraries: Visual Studio 2017 Debug, Visual Studio 2017 Release, Visual Studio 2019 Debug, Visual
// Studio 2019 Release

void __local_unwind2(int param_1,uint param_2)

{
  uint uVar1;
  uint uVar2;
  void *local_20;
  undefined *puStack_1c;
  undefined4 local_18;
  int iStack_14;
  
  iStack_14 = param_1;
  puStack_1c = &LAB_00a6177c;
  local_20 = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&local_20;
  ExceptionList = &local_20;
  while( true ) {
    uVar1 = *(uint *)(param_1 + 0xc);
    if ((uVar1 == 0xffffffff) || ((param_2 != 0xffffffff && (uVar1 <= param_2)))) break;
    local_18 = *(undefined4 *)(*(int *)(param_1 + 8) + uVar1 * 0xc);
    *(undefined4 *)(param_1 + 0xc) = local_18;
    if (*(int *)(*(int *)(param_1 + 8) + 4 + uVar1 * 0xc) == 0) {
      __NLG_Notify(0x101);
      FUN_00a61890(uVar2);
    }
  }
  ExceptionList = local_20;
  return;
}



// Library Function - Single Match
//  __NLG_Notify1
// 
// Libraries: Visual Studio 2017 Debug, Visual Studio 2017 Release, Visual Studio 2019 Debug, Visual
// Studio 2019 Release

undefined4 __fastcall __NLG_Notify1(undefined4 param_1)

{
  undefined4 in_EAX;
  undefined4 unaff_EBP;
  
  DAT_03240a88 = param_1;
  DAT_03240a84 = in_EAX;
  DAT_03240a8c = unaff_EBP;
  return in_EAX;
}



// Library Function - Single Match
//  __NLG_Notify
// 
// Libraries: Visual Studio 2017 Debug, Visual Studio 2017 Release, Visual Studio 2019 Debug, Visual
// Studio 2019 Release

void __NLG_Notify(ulong param_1)

{
  undefined4 in_EAX;
  undefined4 unaff_EBP;
  
  DAT_03240a88 = param_1;
  DAT_03240a84 = in_EAX;
  DAT_03240a8c = unaff_EBP;
  return;
}



void FUN_00a61890(void)

{
  code *in_EAX;
  
  (*in_EAX)();
  return;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// Library Function - Single Match
//  __rt_probe_read4@4
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release, Visual Studio 2010 Release,
// Visual Studio 2019 Release

undefined4 __rt_probe_read4_4(void)

{
  return 1;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

unkbyte10 FUN_00a6194c(void)

{
  return _DAT_03240a5a;
}



// Library Function - Single Match
//  __cintrindisp2
// 
// Library: Visual Studio

void __cintrindisp2(void)

{
  __trandisp2();
  FUN_00a61a5a();
  return;
}



// Library Function - Single Match
//  __cintrindisp1
// 
// Library: Visual Studio

void __cintrindisp1(void)

{
  __trandisp1();
  FUN_00a61a5a();
  return;
}



// Library Function - Single Match
//  __ctrandisp2
// 
// Libraries: Visual Studio 1998, Visual Studio 2003, Visual Studio 2005, Visual Studio 2008

void __ctrandisp2(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  __fload(param_1,param_2);
  __fload(param_3,param_4);
  __trandisp2();
  FUN_00a61a53();
  return;
}



void FUN_00a61a53(void)

{
  char cVar1;
  ushort uVar2;
  int unaff_EBP;
  ushort in_FPUStatusWord;
  float10 in_ST0;
  
  *(byte *)(unaff_EBP + -0x2c8) = *(byte *)(unaff_EBP + -0x2c8) & 0xfe;
  if (DAT_032eb21c != 0) {
    return;
  }
  *(double *)(unaff_EBP + -0x2d0) = (double)in_ST0;
  cVar1 = *(char *)(unaff_EBP + -0x90);
  if (cVar1 != '\0') {
    if (cVar1 == -1) {
      uVar2 = *(ushort *)(unaff_EBP + -0x2ca) & 0x7ff0;
    }
    else {
      if (cVar1 != -2) {
        if (cVar1 == '\0') {
          return;
        }
        *(int *)(unaff_EBP + -0x8e) = (int)cVar1;
        goto LAB_00a61b3f;
      }
      uVar2 = *(ushort *)(unaff_EBP + -0x2ca) & 0x7ff0;
      if (uVar2 == 0) {
        *(undefined4 *)(unaff_EBP + -0x8e) = 4;
        in_ST0 = (float10)fscale(in_ST0,(float10)1536.0);
        if (ABS(in_ST0) < (float10)2.225073858507201e-308) {
          in_ST0 = in_ST0 * (float10)0.0;
        }
        goto LAB_00a61b3f;
      }
    }
    if (uVar2 == 0x7ff0) {
      *(undefined4 *)(unaff_EBP + -0x8e) = 3;
      in_ST0 = (float10)fscale(in_ST0,(float10)-1536.0);
      if ((float10)1.797693134862316e+308 < ABS(in_ST0)) {
        in_ST0 = in_ST0 * (float10)INFINITY;
      }
      goto LAB_00a61b3f;
    }
  }
  if ((*(ushort *)(unaff_EBP + -0xa4) & 0x20) != 0) {
    return;
  }
  if ((in_FPUStatusWord & 0x20) == 0) {
    return;
  }
  *(undefined4 *)(unaff_EBP + -0x8e) = 8;
LAB_00a61b3f:
  *(int *)(unaff_EBP + -0x8a) = *(int *)(unaff_EBP + -0x94) + 1;
  if ((*(byte *)(unaff_EBP + -0x2c8) & 1) == 0) {
    *(undefined4 *)(unaff_EBP + -0x86) = *(undefined4 *)(unaff_EBP + 8);
    *(undefined4 *)(unaff_EBP + -0x82) = *(undefined4 *)(unaff_EBP + 0xc);
    if (*(char *)(*(int *)(unaff_EBP + -0x94) + 0xd) != '\x01') {
      *(undefined4 *)(unaff_EBP + -0x7e) = *(undefined4 *)(unaff_EBP + 0x10);
      *(undefined4 *)(unaff_EBP + -0x7a) = *(undefined4 *)(unaff_EBP + 0x14);
    }
  }
  *(double *)(unaff_EBP + -0x76) = (double)in_ST0;
  __87except((int)*(char *)(*(int *)(unaff_EBP + -0x94) + 0xe),unaff_EBP + -0x8e,unaff_EBP + -0xa4);
  return;
}



void FUN_00a61a5a(void)

{
  char cVar1;
  ushort uVar2;
  int unaff_EBP;
  ushort in_FPUStatusWord;
  float10 in_ST0;
  
  if (DAT_032eb21c != 0) {
    return;
  }
  *(double *)(unaff_EBP + -0x2d0) = (double)in_ST0;
  cVar1 = *(char *)(unaff_EBP + -0x90);
  if (cVar1 != '\0') {
    if (cVar1 == -1) {
      uVar2 = *(ushort *)(unaff_EBP + -0x2ca) & 0x7ff0;
    }
    else {
      if (cVar1 != -2) {
        if (cVar1 == '\0') {
          return;
        }
        *(int *)(unaff_EBP + -0x8e) = (int)cVar1;
        goto LAB_00a61b3f;
      }
      uVar2 = *(ushort *)(unaff_EBP + -0x2ca) & 0x7ff0;
      if (uVar2 == 0) {
        *(undefined4 *)(unaff_EBP + -0x8e) = 4;
        in_ST0 = (float10)fscale(in_ST0,(float10)1536.0);
        if (ABS(in_ST0) < (float10)2.225073858507201e-308) {
          in_ST0 = in_ST0 * (float10)0.0;
        }
        goto LAB_00a61b3f;
      }
    }
    if (uVar2 == 0x7ff0) {
      *(undefined4 *)(unaff_EBP + -0x8e) = 3;
      in_ST0 = (float10)fscale(in_ST0,(float10)-1536.0);
      if ((float10)1.797693134862316e+308 < ABS(in_ST0)) {
        in_ST0 = in_ST0 * (float10)INFINITY;
      }
      goto LAB_00a61b3f;
    }
  }
  if ((*(ushort *)(unaff_EBP + -0xa4) & 0x20) != 0) {
    return;
  }
  if ((in_FPUStatusWord & 0x20) == 0) {
    return;
  }
  *(undefined4 *)(unaff_EBP + -0x8e) = 8;
LAB_00a61b3f:
  *(int *)(unaff_EBP + -0x8a) = *(int *)(unaff_EBP + -0x94) + 1;
  if ((*(byte *)(unaff_EBP + -0x2c8) & 1) == 0) {
    *(undefined4 *)(unaff_EBP + -0x86) = *(undefined4 *)(unaff_EBP + 8);
    *(undefined4 *)(unaff_EBP + -0x82) = *(undefined4 *)(unaff_EBP + 0xc);
    if (*(char *)(*(int *)(unaff_EBP + -0x94) + 0xd) != '\x01') {
      *(undefined4 *)(unaff_EBP + -0x7e) = *(undefined4 *)(unaff_EBP + 0x10);
      *(undefined4 *)(unaff_EBP + -0x7a) = *(undefined4 *)(unaff_EBP + 0x14);
    }
  }
  *(double *)(unaff_EBP + -0x76) = (double)in_ST0;
  __87except((int)*(char *)(*(int *)(unaff_EBP + -0x94) + 0xe),unaff_EBP + -0x8e,unaff_EBP + -0xa4);
  return;
}



// Library Function - Single Match
//  __ctrandisp1
// 
// Library: Visual Studio

void __ctrandisp1(undefined4 param_1,undefined4 param_2)

{
  __fload(param_1,param_2);
  __trandisp1();
  FUN_00a61a53();
  return;
}



// Library Function - Single Match
//  __fload
// 
// Libraries: Visual Studio 1998, Visual Studio 2003, Visual Studio 2005, Visual Studio 2008

float10 __fload(uint param_1,int param_2)

{
  float10 fVar1;
  
  if ((param_2._2_2_ & 0x7ff0) == 0x7ff0) {
    fVar1 = (float10)CONCAT28(param_2._2_2_ | 0x7fff,
                              CONCAT44(param_2 << 0xb | param_1 >> 0x15,param_1));
  }
  else {
    fVar1 = (float10)(double)CONCAT26(param_2._2_2_,CONCAT24((undefined2)param_2,param_1));
  }
  return fVar1;
}



// Library Function - Single Match
//  ___crtMessageBoxA
// 
// Library: Visual Studio 2008 Release

int __cdecl ___crtMessageBoxA(LPCSTR _LpText,LPCSTR _LpCaption,UINT _UType)

{
  int iVar1;
  HMODULE hModule;
  FARPROC pFVar2;
  code *pcVar3;
  code *pcVar4;
  int iVar5;
  undefined local_18 [8];
  byte local_10;
  undefined local_c [4];
  int local_8;
  
  iVar1 = __encoded_null();
  local_8 = 0;
  if (DAT_032ebc88 == 0) {
    hModule = LoadLibraryA("USER32.DLL");
    if (hModule == (HMODULE)0x0) {
      return 0;
    }
    pFVar2 = GetProcAddress(hModule,"MessageBoxA");
    if (pFVar2 == (FARPROC)0x0) {
      return 0;
    }
    DAT_032ebc88 = __encode_pointer(pFVar2);
    pFVar2 = GetProcAddress(hModule,"GetActiveWindow");
    DAT_032ebc8c = __encode_pointer(pFVar2);
    pFVar2 = GetProcAddress(hModule,"GetLastActivePopup");
    DAT_032ebc90 = __encode_pointer(pFVar2);
    pFVar2 = GetProcAddress(hModule,"GetUserObjectInformationA");
    DAT_032ebc98 = __encode_pointer(pFVar2);
    if (DAT_032ebc98 != 0) {
      pFVar2 = GetProcAddress(hModule,"GetProcessWindowStation");
      DAT_032ebc94 = __encode_pointer(pFVar2);
    }
  }
  if ((DAT_032ebc94 != iVar1) && (DAT_032ebc98 != iVar1)) {
    pcVar3 = (code *)__decode_pointer(DAT_032ebc94);
    pcVar4 = (code *)__decode_pointer(DAT_032ebc98);
    if (((pcVar3 != (code *)0x0) && (pcVar4 != (code *)0x0)) &&
       (((iVar5 = (*pcVar3)(), iVar5 == 0 ||
         (iVar5 = (*pcVar4)(iVar5,1,local_18,0xc,local_c), iVar5 == 0)) || ((local_10 & 1) == 0))))
    {
      _UType = _UType | 0x200000;
      goto LAB_00a61d52;
    }
  }
  if ((((DAT_032ebc8c != iVar1) &&
       (pcVar3 = (code *)__decode_pointer(DAT_032ebc8c), pcVar3 != (code *)0x0)) &&
      (local_8 = (*pcVar3)(), local_8 != 0)) &&
     ((DAT_032ebc90 != iVar1 &&
      (pcVar3 = (code *)__decode_pointer(DAT_032ebc90), pcVar3 != (code *)0x0)))) {
    local_8 = (*pcVar3)(local_8);
  }
LAB_00a61d52:
  pcVar3 = (code *)__decode_pointer(DAT_032ebc88);
  if (pcVar3 == (code *)0x0) {
    return 0;
  }
  iVar1 = (*pcVar3)(local_8,_LpText,_LpCaption,_UType);
  return iVar1;
}



// Library Function - Single Match
//  __set_error_mode
// 
// Library: Visual Studio 2008 Release

int __cdecl __set_error_mode(int _Mode)

{
  int *piVar1;
  int iVar2;
  
  if (-1 < _Mode) {
    if (_Mode < 3) {
      iVar2 = DAT_032eb210;
      DAT_032eb210 = _Mode;
      return iVar2;
    }
    if (_Mode == 3) {
      return DAT_032eb210;
    }
  }
  piVar1 = __errno();
  *piVar1 = 0x16;
  __invalid_parameter(0,0,0,0,0);
  return -1;
}



// Library Function - Single Match
//  ___crtGetLocaleInfoW
// 
// Library: Visual Studio 2008 Release

void ___crtGetLocaleInfoW
               (localeinfo_struct *param_1,LCID param_2,LCTYPE param_3,LPWSTR param_4,int param_5)

{
  _LocaleUpdate local_14 [8];
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate(local_14,param_1);
  GetLocaleInfoW(param_2,param_3,param_4,param_5);
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return;
}



// WARNING: Function: __alloca_probe_16 replaced with injection: alloca_probe
// Library Function - Single Match
//  int __cdecl __crtGetLocaleInfoA_stat(struct localeinfo_struct *,unsigned long,unsigned long,char
// *,int,int)
// 
// Library: Visual Studio 2008 Release

int __cdecl
__crtGetLocaleInfoA_stat
          (localeinfo_struct *param_1,ulong param_2,ulong param_3,char *param_4,int param_5,
          int param_6)

{
  uint _Size;
  int iVar1;
  DWORD DVar2;
  uint cchData;
  undefined4 *lpLCData;
  
  if (DAT_032ebc9c == 0) {
    iVar1 = GetLocaleInfoW(0,1,(LPWSTR)0x0,0);
    if (iVar1 == 0) {
      DVar2 = GetLastError();
      if (DVar2 == 0x78) {
        DAT_032ebc9c = 2;
      }
      goto LAB_00a61e4c;
    }
    DAT_032ebc9c = 1;
  }
  else {
LAB_00a61e4c:
    if ((DAT_032ebc9c == 2) || (DAT_032ebc9c == 0)) {
      GetLocaleInfoA(param_2,param_3,param_4,param_5);
      goto LAB_00a61f25;
    }
    if (DAT_032ebc9c != 1) goto LAB_00a61f25;
  }
  if (param_6 == 0) {
    param_6 = param_1->locinfo->lc_codepage;
  }
  cchData = GetLocaleInfoW(param_2,param_3,(LPWSTR)0x0,0);
  if (cchData != 0) {
    if (((int)cchData < 1) || (0xffffffe0 / cchData < 2)) {
      lpLCData = (undefined4 *)0x0;
    }
    else {
      _Size = cchData * 2 + 8;
      if (_Size < 0x401) {
        if (&stack0x00000000 == (undefined *)0x18) goto LAB_00a61f25;
        lpLCData = (undefined4 *)&stack0xfffffff0;
      }
      else {
        lpLCData = (undefined4 *)_malloc(_Size);
        if (lpLCData != (undefined4 *)0x0) {
          *lpLCData = 0xdddd;
          lpLCData = lpLCData + 2;
        }
      }
    }
    if (lpLCData != (undefined4 *)0x0) {
      iVar1 = GetLocaleInfoW(param_2,param_3,(LPWSTR)lpLCData,cchData);
      if (iVar1 != 0) {
        if (param_5 == 0) {
          param_5 = 0;
          param_4 = (LPSTR)0x0;
        }
        WideCharToMultiByte(param_6,0,(LPCWSTR)lpLCData,-1,param_4,param_5,(LPCSTR)0x0,(LPBOOL)0x0);
      }
      __freea(lpLCData);
    }
  }
LAB_00a61f25:
  iVar1 = ___security_check_cookie_4();
  return iVar1;
}



// Library Function - Single Match
//  ___crtGetLocaleInfoA
// 
// Library: Visual Studio 2008 Release

int __cdecl
___crtGetLocaleInfoA
          (_locale_t _Plocinfo,LPCWSTR _LocaleName,LCTYPE _LCType,LPSTR _LpLCData,int _CchData)

{
  int iVar1;
  int in_stack_00000018;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Plocinfo);
  iVar1 = __crtGetLocaleInfoA_stat
                    (&local_14,(ulong)_LocaleName,_LCType,_LpLCData,_CchData,in_stack_00000018);
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return iVar1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: void __thiscall HeapManager::Destructor(void)
//  public: void __thiscall _HeapManager::Destructor(void)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __fastcall Destructor(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    while (*(int *)(param_1 + 0xc) = *(int *)(param_1 + 8), *(int *)(param_1 + 8) != 0) {
      *(undefined4 *)(param_1 + 8) = **(undefined4 **)(param_1 + 0xc);
      (**(code **)(param_1 + 4))(*(undefined4 *)(param_1 + 0xc));
    }
  }
  return;
}



// Library Function - Single Match
//  private: static int __cdecl UnDecorator::getNumberOfDimensions(void)
// 
// Library: Visual Studio 2008 Release

int __cdecl UnDecorator::getNumberOfDimensions(void)

{
  int iVar1;
  char cVar2;
  
  cVar2 = *DAT_032ebcc0;
  if (cVar2 != '\0') {
    if (('/' < cVar2) && (cVar2 < ':')) {
      DAT_032ebcc0 = DAT_032ebcc0 + 1;
      return cVar2 + -0x2f;
    }
    iVar1 = 0;
LAB_00a61fe8:
    if (cVar2 == '@') {
      cVar2 = *DAT_032ebcc0;
      DAT_032ebcc0 = DAT_032ebcc0 + 1;
      if (cVar2 != '@') {
LAB_00a61ffb:
        iVar1 = -1;
      }
      return iVar1;
    }
    if (cVar2 != '\0') {
      if ((cVar2 < 'A') || ('P' < cVar2)) goto LAB_00a61ffb;
      DAT_032ebcc0 = DAT_032ebcc0 + 1;
      iVar1 = iVar1 * 0x10 + -0x41 + (int)cVar2;
      cVar2 = *DAT_032ebcc0;
      goto LAB_00a61fe8;
    }
  }
  return 0;
}



// WARNING: Removing unreachable block (ram,0x00a62427)
// WARNING: Removing unreachable block (ram,0x00a623e7)
// WARNING: Removing unreachable block (ram,0x00a623ff)
// WARNING: Removing unreachable block (ram,0x00a623a7)
// WARNING: Removing unreachable block (ram,0x00a6243f)
// WARNING: Removing unreachable block (ram,0x00a623bf)
// WARNING: Removing unreachable block (ram,0x00a62293)
// Library Function - Single Match
//  private: static int __cdecl UnDecorator::getTypeEncoding(void)
// 
// Library: Visual Studio 2008 Release

int __cdecl UnDecorator::getTypeEncoding(void)

{
  char cVar1;
  uint uVar2;
  char *pcVar3;
  uint uVar4;
  uint uVar5;
  bool bVar6;
  
  do {
    uVar5 = 0;
    if (*DAT_032ebcc0 == '_') {
      DAT_032ebcc0 = DAT_032ebcc0 + 1;
      uVar5 = 0x4000;
    }
    cVar1 = *DAT_032ebcc0;
    if (('@' < cVar1) && (cVar1 < '[')) {
      uVar2 = (int)*DAT_032ebcc0 - 0x41;
      DAT_032ebcc0 = DAT_032ebcc0 + 1;
      if ((uVar2 & 1) == 0) {
        uVar5 = uVar5 | 0x8000;
      }
      else {
        uVar5 = uVar5 | 0xa000;
      }
      if (0x17 < (int)uVar2) {
        return uVar5;
      }
      if ((uVar5 & 0x8000) == 0) {
        uVar5 = uVar5 & 0xffff9fff;
      }
      else {
        uVar5 = uVar5 | 0x800;
      }
      uVar4 = uVar2 & 0x18;
      if (uVar4 == 0) {
        if ((uVar5 & 0x8000) == 0) {
          uVar5 = uVar5 | 0x800;
        }
        else {
          uVar5 = uVar5 | 0x40;
        }
      }
      else if (uVar4 == 8) {
        if ((uVar5 & 0x8000) == 0) {
          uVar5 = uVar5 & 0xfffff7ff | 0x1000;
        }
        else {
          uVar5 = uVar5 | 0x80;
        }
      }
      else {
        if (uVar4 != 0x10) {
          return 0xffff;
        }
        if ((uVar5 & 0x8000) == 0) {
          uVar5 = uVar5 & 0xffffe7ff;
        }
      }
      uVar2 = uVar2 & 6;
      if (uVar2 != 0) {
        if (uVar2 == 2) {
          if ((uVar5 & 0x8000) == 0) {
            return uVar5 & 0xffff9fff;
          }
          return uVar5 | 0x200;
        }
        if (uVar2 != 4) {
          if (uVar2 != 6) {
            return 0xffff;
          }
          return uVar5 | 0x400;
        }
        return uVar5 | 0x100;
      }
      return uVar5;
    }
    if (cVar1 != '$') {
      cVar1 = *DAT_032ebcc0;
      if (('/' < cVar1) && (cVar1 < '9')) {
        DAT_032ebcc0 = DAT_032ebcc0 + 1;
        switch(cVar1) {
        case '0':
          return 0x800;
        case '1':
          return 0x1000;
        case '2':
          return 0;
        case '3':
          return 0x4000;
        case '4':
          return 0x2000;
        case '5':
          return 0x6000;
        case '6':
          return 0x6800;
        case '7':
          return 0x7000;
        case '8':
          return 0x7800;
        default:
          return 0xffff;
        }
      }
      if (cVar1 != '9') {
        return (cVar1 != '\0') + 0xfffe;
      }
      DAT_032ebcc0 = DAT_032ebcc0 + 1;
      return 0xfffd;
    }
    bVar6 = false;
    pcVar3 = DAT_032ebcc0 + 1;
    cVar1 = *pcVar3;
    if ('B' < cVar1) {
      if (cVar1 == 'C') {
        uVar5 = 0x7c00;
        goto LAB_00a6235d;
      }
      if (cVar1 == 'D') {
        uVar5 = uVar5 | 0x9100;
        goto LAB_00a6235d;
      }
      if (cVar1 == 'E') {
        uVar5 = uVar5 | 0x9200;
        goto LAB_00a6235d;
      }
      if (cVar1 != 'R') {
        DAT_032ebcc0 = pcVar3;
        return 0xffff;
      }
      pcVar3 = DAT_032ebcc0 + 2;
      cVar1 = *pcVar3;
      bVar6 = true;
      if ((cVar1 < '0') || ('5' < cVar1)) {
        DAT_032ebcc0 = pcVar3;
        return (cVar1 == '\0') + 0xfffe;
      }
LAB_00a62273:
      if (bVar6) {
        uVar5 = uVar5 | 0x8e00;
      }
      else {
        uVar5 = uVar5 | 0x8d00;
      }
      if (((int)*pcVar3 - 0x30U & 1) != 0) {
        uVar5 = uVar5 | 0x2000;
      }
      uVar2 = (int)*pcVar3 - 0x30U & 6;
      if (uVar2 == 0) {
        if ((uVar5 & 0x8000) == 0) {
          uVar5 = uVar5 | 0x800;
        }
        else {
          uVar5 = uVar5 | 0x40;
        }
      }
      else if (uVar2 == 2) {
        if ((uVar5 & 0x8000) == 0) {
          uVar5 = uVar5 & 0xfffff7ff | 0x1000;
        }
        else {
          uVar5 = uVar5 | 0x80;
        }
      }
      else {
        if (uVar2 != 4) {
          DAT_032ebcc0 = pcVar3;
          return 0xffff;
        }
        if ((uVar5 & 0x8000) == 0) {
          uVar5 = uVar5 & 0xffffe7ff;
        }
      }
      goto LAB_00a6235d;
    }
    if (cVar1 == 'B') {
      uVar5 = uVar5 | 0x9800;
      goto LAB_00a6235d;
    }
    if (cVar1 == '\0') {
      uVar5 = 0xfffe;
      pcVar3 = DAT_032ebcc0;
      goto LAB_00a6235d;
    }
    if (cVar1 != '$') {
      if (cVar1 < '0') {
        DAT_032ebcc0 = pcVar3;
        return 0xffff;
      }
      if ('5' < cVar1) {
        if (cVar1 != 'A') {
          DAT_032ebcc0 = pcVar3;
          return 0xffff;
        }
        uVar5 = uVar5 | 0x9000;
        goto LAB_00a6235d;
      }
      goto LAB_00a62273;
    }
    if (DAT_032ebcc0[2] == 'P') {
      pcVar3 = DAT_032ebcc0 + 2;
    }
    DAT_032ebcc0 = pcVar3 + 1;
    cVar1 = *DAT_032ebcc0;
    if (cVar1 < 'K') {
      if (cVar1 == 'J') {
LAB_00a621ec:
        cVar1 = pcVar3[2];
        if (('/' < cVar1) && (cVar1 < ':')) {
          DAT_032ebcc0 = pcVar3 + cVar1 + -0x2d;
          uVar5 = getTypeEncoding();
          return uVar5 | 0x10000;
        }
        uVar5 = 0xffff;
        pcVar3 = pcVar3 + 2;
LAB_00a6235d:
        DAT_032ebcc0 = pcVar3 + 1;
        return uVar5;
      }
      if (cVar1 == '\0') {
        return 0xfffe;
      }
      if (cVar1 != 'F') {
        bVar6 = cVar1 == 'H';
LAB_00a620a6:
        if (!bVar6) {
          return 0xffff;
        }
      }
    }
    else {
      if (cVar1 < 'L') {
        return 0xffff;
      }
      if ('M' < cVar1) {
        if ('O' < cVar1) {
          bVar6 = cVar1 == 'Q';
          goto LAB_00a620a6;
        }
        goto LAB_00a621ec;
      }
    }
    DAT_032ebcc0 = pcVar3 + 2;
  } while( true );
}



// Library Function - Single Match
//  public: static char const * __cdecl UnDecorator::UScore(enum Tokens)
// 
// Library: Visual Studio 2008 Release

char * __cdecl UnDecorator::UScore(Tokens param_1)

{
  char *pcVar1;
  
  pcVar1 = (&PTR_s___based__00da42c0)[param_1];
  if ((~DAT_032ebcd0 & 1) == 0) {
    pcVar1 = pcVar1 + 2;
  }
  return pcVar1;
}



// Library Function - Single Match
//  public: void * __thiscall HeapManager::getMemory(unsigned int,int)
// 
// Library: Visual Studio 2008 Release

void * __thiscall HeapManager::getMemory(HeapManager *this,uint param_1,int param_2)

{
  void *pvVar1;
  undefined4 *puVar2;
  uint uVar3;
  
  uVar3 = param_1 + 7 & 0xfffffff8;
  if (param_2 != 0) {
    pvVar1 = (void *)(**(code **)this)(uVar3);
    return pvVar1;
  }
  if (uVar3 == 0) {
    uVar3 = 8;
  }
  if (*(uint *)(this + 0x10) < uVar3) {
    if (uVar3 < 0x1001) {
      puVar2 = (undefined4 *)getMemory((HeapManager *)&DAT_032ebca0,0x1004,1);
      if (puVar2 == (undefined4 *)0x0) {
        puVar2 = (undefined4 *)0x0;
      }
      else {
        *puVar2 = 0;
      }
      if (puVar2 != (undefined4 *)0x0) {
        if (*(undefined4 **)(this + 0xc) == (undefined4 *)0x0) {
          *(undefined4 **)(this + 8) = puVar2;
        }
        else {
          **(undefined4 **)(this + 0xc) = puVar2;
        }
        *(undefined4 **)(this + 0xc) = puVar2;
        *(uint *)(this + 0x10) = 0x1000 - uVar3;
        goto LAB_00a62580;
      }
    }
    pvVar1 = (void *)0x0;
  }
  else {
    *(uint *)(this + 0x10) = *(uint *)(this + 0x10) - uVar3;
LAB_00a62580:
    pvVar1 = (void *)(*(int *)(this + 0xc) + 4 + *(int *)(this + 0x10));
  }
  return pvVar1;
}



// Library Function - Single Match
//  public: char * __thiscall DName::getString(char *,char *)const 
// 
// Library: Visual Studio 2008 Release

char * __thiscall DName::getString(DName *this,char *param_1,char *param_2)

{
  char *pcVar1;
  
  if (*(int **)this == (int *)0x0) {
    return param_1;
  }
                    // WARNING: Could not recover jumptable at 0x00a625a6. Too many branches
                    // WARNING: Treating indirect jump as call
  pcVar1 = (char *)(**(code **)(**(int **)this + 8))();
  return pcVar1;
}



// Library Function - Single Match
//  public: class DName & __thiscall DName::operator|=(class DName const &)
// 
// Library: Visual Studio 2008 Release

DName * __thiscall DName::operator|=(DName *this,DName *param_1)

{
  if ((this[4] != (DName)0x3) && ('\x01' < (char)param_1[4])) {
    this[4] = param_1[4];
  }
  return this;
}



void __thiscall FUN_00a625c8(undefined4 *param_1_00,undefined4 *param_1)

{
  *param_1_00 = *param_1;
  param_1_00[1] = param_1[1];
  return;
}



undefined * __thiscall FUN_00a625e0(int param_1_00,undefined *param_1,undefined *param_2)

{
  if (param_1 < param_2) {
    *param_1 = *(undefined *)(param_1_00 + 4);
    param_1 = param_1 + 1;
  }
  return param_1;
}



// Library Function - Single Match
//  public: __thiscall pDNameNode::pDNameNode(class DName *)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __thiscall pDNameNode::pDNameNode(pDNameNode *this,DName *param_1)

{
  *(undefined ***)this = &PTR_LAB_00da444c;
  if ((param_1 != (DName *)0x0) && ((param_1[4] == (DName)0x2 || (param_1[4] == (DName)0x3)))) {
    param_1 = (DName *)0x0;
  }
  *(DName **)(this + 4) = param_1;
  return;
}



// Library Function - Single Match
//  public: virtual char * __thiscall pDNameNode::getString(char *,char *)const 
// 
// Library: Visual Studio 2008 Release

char * __thiscall pDNameNode::getString(pDNameNode *this,char *param_1,char *param_2)

{
  char *pcVar1;
  
  if (*(DName **)(this + 4) != (DName *)0x0) {
    pcVar1 = DName::getString(*(DName **)(this + 4),param_1,param_2);
    return pcVar1;
  }
  return param_1;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  public: static class DNameStatusNode * __cdecl DNameStatusNode::make(enum DNameStatus)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

DNameStatusNode * __cdecl DNameStatusNode::make(DNameStatus param_1)

{
  if ((_DAT_032ebd0c & 1) == 0) {
    _DAT_032ebd0c = _DAT_032ebd0c | 1;
    _DAT_032ebcdc = &PTR_FUN_00da4458;
    _DAT_032ebce0 = 0;
    _DAT_032ebce4 = 0;
    _DAT_032ebce8 = &PTR_FUN_00da4458;
    _DAT_032ebcec = 1;
    _DAT_032ebcf0 = 4;
    _DAT_032ebcf4 = &PTR_FUN_00da4458;
    _DAT_032ebcf8 = 2;
    _DAT_032ebcfc = 0;
    _DAT_032ebd00 = &PTR_FUN_00da4458;
    _DAT_032ebd04 = 3;
    _DAT_032ebd08 = 0;
  }
  if (param_1 < 4) {
    return (DNameStatusNode *)(&DAT_032ebcdc + param_1 * 0xc);
  }
  return (DNameStatusNode *)&DAT_032ebd00;
}



// Library Function - Single Match
//  public: __thiscall pairNode::pairNode(class DNameNode *,class DNameNode *)
// 
// Library: Visual Studio 2008 Release

void __thiscall pairNode::pairNode(pairNode *this,DNameNode *param_1,DNameNode *param_2)

{
  *(undefined4 *)(this + 0xc) = 0xffffffff;
  *(DNameNode **)(this + 4) = param_1;
  *(undefined ***)this = &PTR_LAB_00da4464;
  *(DNameNode **)(this + 8) = param_2;
  return;
}



// Library Function - Single Match
//  public: virtual char * __thiscall pairNode::getString(char *,char *)const 
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

char * __thiscall pairNode::getString(pairNode *this,char *param_1,char *param_2)

{
  char *pcVar1;
  
  pcVar1 = (char *)(**(code **)(**(int **)(this + 4) + 8))(param_1,param_2);
  if (pcVar1 < param_2) {
    pcVar1 = (char *)(**(code **)(**(int **)(this + 8) + 8))(pcVar1,param_2);
  }
  return pcVar1;
}



// Library Function - Single Match
//  unsigned int __cdecl und_strncmp(char const *,char const *,unsigned int)
// 
// Library: Visual Studio 2008 Release

uint __cdecl und_strncmp(char *param_1,char *param_2,uint param_3)

{
  byte *in_ECX;
  byte *in_EDX;
  
  if (param_1 == (char *)0x0) {
    return 0;
  }
  while( true ) {
    param_1 = param_1 + -1;
    if (((param_1 == (char *)0x0) || (*in_ECX == 0)) || (*in_ECX != *in_EDX)) break;
    in_ECX = in_ECX + 1;
    in_EDX = in_EDX + 1;
  }
  return (uint)*in_ECX - (uint)*in_EDX;
}



// Library Function - Single Match
//  public: __thiscall UnDecorator::UnDecorator(char *,char const *,int,char *
// (__cdecl*)(long),unsigned long)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

void __thiscall
UnDecorator::UnDecorator
          (UnDecorator *this,char *param_1,char *param_2,int param_3,_func_char_ptr_long *param_4,
          ulong param_5)

{
  *(undefined4 *)this = 0xffffffff;
  *(undefined4 *)(this + 0x2c) = 0xffffffff;
  DAT_032ebcc4 = param_2;
  DAT_032ebcc0 = param_2;
  if (param_1 == (char *)0x0) {
    DAT_032ebcc8 = (char *)0x0;
    DAT_032ebccc = 0;
  }
  else {
    DAT_032ebccc = param_3;
    DAT_032ebcc8 = param_1;
  }
  DAT_032ebcb8 = (undefined4 *)(this + 0x2c);
  DAT_032ebcd0 = param_5;
  DAT_032ebcb4 = this;
  DAT_032ebcd4 = param_4;
  DAT_032ebcd8 = 0;
  return;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getDataIndirectType(void)
// 
// Library: Visual Studio 2008 Release

undefined4 __cdecl UnDecorator::getDataIndirectType(undefined4 param_1)

{
  undefined4 local_14;
  uint local_10;
  undefined4 local_c;
  uint local_8;
  
  local_8 = local_8 & 0xffff0000;
  local_10 = local_10 & 0xffff0000;
  local_c = 0;
  local_14 = 0;
  getDataIndirectType(param_1,&local_14,0,&local_c,0);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getThisType(void)
// 
// Library: Visual Studio 2008 Release

undefined4 __cdecl UnDecorator::getThisType(undefined4 param_1)

{
  undefined4 local_14;
  uint local_10;
  undefined4 local_c;
  uint local_8;
  
  local_8 = local_8 & 0xffff0000;
  local_10 = local_10 & 0xffff0000;
  local_c = 0;
  local_14 = 0;
  getDataIndirectType(param_1,&local_14,0,&local_c,1);
  return param_1;
}



// Library Function - Single Match
//  char * __cdecl getStringHelper(char *,char *,char *,int)
// 
// Library: Visual Studio 2008 Release

char * __cdecl getStringHelper(char *param_1,char *param_2,char *param_3,int param_4)

{
  char *pcVar1;
  int iVar2;
  
  if ((int)param_2 - (int)param_1 < param_4) {
    param_4 = (int)param_2 - (int)param_1;
  }
  if (param_4 != 0) {
    pcVar1 = param_1;
    iVar2 = param_4;
    do {
      *pcVar1 = pcVar1[(int)param_3 - (int)param_1];
      pcVar1 = pcVar1 + 1;
      iVar2 = iVar2 + -1;
    } while (iVar2 != 0);
  }
  return param_1 + param_4;
}



// Library Function - Single Match
//  public: __thiscall DName::DName(class DName *)
// 
// Library: Visual Studio 2008 Release

DName * __thiscall DName::DName(DName *this,DName *param_1)

{
  pDNameNode *this_00;
  int iVar1;
  
  if (param_1 == (DName *)0x0) {
    *(undefined4 *)this = 0;
    this[4] = (DName)0x0;
  }
  else {
    this_00 = (pDNameNode *)HeapManager::getMemory((HeapManager *)&DAT_032ebca0,8,0);
    if (this_00 == (pDNameNode *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = pDNameNode::pDNameNode(this_00,param_1);
    }
    *(int *)this = iVar1;
    this[4] = (DName)((iVar1 != 0) - 1U & 3);
  }
  *(uint *)(this + 4) = *(uint *)(this + 4) & 0xffff00ff;
  return this;
}



// Library Function - Single Match
//  public: __thiscall DName::DName(enum DNameStatus)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

DName * __thiscall DName::DName(DName *this,DNameStatus param_1)

{
  DNameStatus DVar1;
  DNameStatusNode *pDVar2;
  
  *(uint *)(this + 4) = *(uint *)(this + 4) & 0xffff00ff;
  DVar1 = param_1;
  if ((param_1 != 2) && (param_1 != 3)) {
    DVar1 = 0;
  }
  *(undefined4 *)this = 0;
  this[4] = SUB41(DVar1,0);
  if (param_1 == 1) {
    pDVar2 = DNameStatusNode::make(1);
    *(DNameStatusNode **)this = pDVar2;
    if (pDVar2 == (DNameStatusNode *)0x0) {
      this[4] = (DName)0x3;
    }
  }
  return this;
}



// Library Function - Single Match
//  public: char * __thiscall DName::getString(char *,int)const 
// 
// Library: Visual Studio 2008 Release

char * __thiscall DName::getString(DName *this,char *param_1,int param_2)

{
  int iVar1;
  char *pcVar2;
  
  if (*(undefined4 **)this == (undefined4 *)0x0) {
    if (param_1 != (char *)0x0) {
      *param_1 = '\0';
    }
  }
  else {
    if (param_1 == (char *)0x0) {
      iVar1 = (**(code **)**(undefined4 **)this)();
      param_2 = iVar1 + 1;
      param_1 = (char *)HeapManager::getMemory((HeapManager *)&DAT_032ebca0,param_2,0);
      if (param_1 == (char *)0x0) {
        return (char *)0x0;
      }
    }
    pcVar2 = getString(this,param_1,param_1 + (param_2 - 1));
    *pcVar2 = '\0';
  }
  return param_1;
}



// Library Function - Single Match
//  private: void __thiscall DName::append(class DNameNode *)
// 
// Library: Visual Studio 2008 Release

void __thiscall DName::append(DName *this,DNameNode *param_1)

{
  pairNode *this_00;
  int iVar1;
  
  if (param_1 != (DNameNode *)0x0) {
    this_00 = (pairNode *)HeapManager::getMemory((HeapManager *)&DAT_032ebca0,0x10,0);
    if (this_00 == (pairNode *)0x0) {
      iVar1 = 0;
    }
    else {
      iVar1 = pairNode::pairNode(this_00,*(DNameNode **)this,param_1);
    }
    *(int *)this = iVar1;
    if (iVar1 != 0) {
      return;
    }
  }
  this[4] = (DName)0x3;
  return;
}



// Library Function - Single Match
//  public: class DName & __thiscall DName::operator=(enum DNameStatus)
// 
// Library: Visual Studio 2008 Release

DName * __thiscall DName::operator=(DName *this,DNameStatus param_1)

{
  DNameStatusNode *pDVar1;
  
  *(uint *)(this + 4) = *(uint *)(this + 4) & 0xffff00ff;
  this[4] = SUB41(param_1,0);
  if (param_1 == 1) {
    pDVar1 = DNameStatusNode::make(1);
    *(DNameStatusNode **)this = pDVar1;
    if (pDVar1 == (DNameStatusNode *)0x0) {
      this[4] = (DName)0x3;
    }
  }
  else {
    *(undefined4 *)this = 0;
  }
  return this;
}



// Library Function - Single Match
//  public: class Replicator & __thiscall Replicator::operator+=(class DName const &)
// 
// Library: Visual Studio 2008 Release

Replicator * __thiscall Replicator::operator+=(Replicator *this,DName *param_1)

{
  undefined4 *puVar1;
  
  if ((*(int *)this != 9) && (*(int *)param_1 != 0)) {
    puVar1 = (undefined4 *)HeapManager::getMemory((HeapManager *)&DAT_032ebca0,8,0);
    if (puVar1 == (undefined4 *)0x0) {
      puVar1 = (undefined4 *)0x0;
    }
    else {
      *puVar1 = *(undefined4 *)param_1;
      puVar1[1] = *(undefined4 *)(param_1 + 4);
    }
    if (puVar1 != (undefined4 *)0x0) {
      *(int *)this = *(int *)this + 1;
      *(undefined4 **)(this + *(int *)this * 4 + 4) = puVar1;
    }
  }
  return this;
}



// Library Function - Single Match
//  public: class DName __thiscall Replicator::operator[](int)const 
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall Replicator::operator[](Replicator *this,undefined4 *param_1,uint param_3)

{
  undefined4 *puVar1;
  DNameStatus DVar2;
  
  if (param_3 < 10) {
    if ((*(int *)this != -1) && ((int)param_3 <= *(int *)this)) {
      puVar1 = *(undefined4 **)(this + param_3 * 4 + 4);
      *param_1 = *puVar1;
      param_1[1] = puVar1[1];
      return param_1;
    }
    DVar2 = 2;
  }
  else {
    DVar2 = 3;
  }
  DName::DName((DName *)param_1,DVar2);
  return param_1;
}



// Library Function - Single Match
//  public: __thiscall pcharNode::pcharNode(char const *,int)
// 
// Library: Visual Studio 2008 Release

pcharNode * __thiscall pcharNode::pcharNode(pcharNode *this,char *param_1,int param_2)

{
  undefined *puVar1;
  int iVar2;
  
  *(undefined ***)this = &PTR_FUN_00da4470;
  if ((param_2 == 0) || (param_1 == (char *)0x0)) {
    *(undefined4 *)(this + 4) = 0;
    *(undefined4 *)(this + 8) = 0;
  }
  else {
    puVar1 = (undefined *)HeapManager::getMemory((HeapManager *)&DAT_032ebca0,param_2,0);
    *(undefined **)(this + 4) = puVar1;
    *(int *)(this + 8) = param_2;
    if ((puVar1 != (undefined *)0x0) && (param_2 != 0)) {
      iVar2 = (int)param_1 - (int)puVar1;
      do {
        *puVar1 = puVar1[iVar2];
        puVar1 = puVar1 + 1;
        param_2 = param_2 + -1;
      } while (param_2 != 0);
    }
  }
  return this;
}



// Library Function - Single Match
//  public: virtual char * __thiscall pcharNode::getString(char *,char *)const 
// 
// Library: Visual Studio 2008 Release

char * __thiscall pcharNode::getString(pcharNode *this,char *param_1,char *param_2)

{
  char *pcVar1;
  
  pcVar1 = getStringHelper(param_1,param_2,*(char **)(this + 4),*(int *)(this + 8));
  return pcVar1;
}



// Library Function - Single Match
//  public: virtual char * __thiscall DNameStatusNode::getString(char *,char *)const 
// 
// Library: Visual Studio 2008 Release

char * __thiscall DNameStatusNode::getString(DNameStatusNode *this,char *param_1,char *param_2)

{
  if (*(int *)(this + 4) == 1) {
    param_1 = getStringHelper(param_1,param_2," ?? ",4);
  }
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getReturnType(class DName *)
// 
// Library: Visual Studio 2008 Release

DName * __cdecl UnDecorator::getReturnType(DName *param_1,DName *param_2)

{
  if (*DAT_032ebcc0 == '@') {
    DAT_032ebcc0 = DAT_032ebcc0 + 1;
    DName::DName(param_1,param_2);
  }
  else {
    getDataType(param_1);
  }
  return param_1;
}



// Library Function - Single Match
//  public: class DName & __thiscall DName::operator+=(enum DNameStatus)
// 
// Library: Visual Studio 2008 Release

DName * __thiscall DName::operator+=(DName *this,DNameStatus param_1)

{
  DNameStatusNode *pDVar1;
  
  if ((char)this[4] < '\x02') {
    if (((*(int *)this == 0) || (param_1 == 2)) || (param_1 == 3)) {
      operator=(this,param_1);
    }
    else if (param_1 != 0) {
      pDVar1 = DNameStatusNode::make(param_1);
      append(this,(DNameNode *)pDVar1);
    }
  }
  return this;
}



// Library Function - Single Match
//  private: void __thiscall DName::doPchar(char const *,int)
// 
// Library: Visual Studio 2008 Release

void __thiscall DName::doPchar(DName *this,char *param_1,int param_2)

{
  char cVar1;
  pcharNode *this_00;
  undefined4 *puVar2;
  
  if (*(int *)this != 0) {
    operator=(this,3);
    return;
  }
  if ((param_1 == (char *)0x0) || (param_2 == 0)) {
    this[4] = (DName)0x2;
    return;
  }
  if (param_2 == 0) goto LAB_00a62c46;
  if (param_2 == 1) {
    puVar2 = (undefined4 *)HeapManager::getMemory((HeapManager *)&DAT_032ebca0,8,0);
    if (puVar2 == (undefined4 *)0x0) goto LAB_00a62c3e;
    cVar1 = *param_1;
    *puVar2 = &PTR_FUN_00da4440;
    *(char *)(puVar2 + 1) = cVar1;
  }
  else {
    this_00 = (pcharNode *)HeapManager::getMemory((HeapManager *)&DAT_032ebca0,0xc,0);
    if (this_00 == (pcharNode *)0x0) {
LAB_00a62c3e:
      puVar2 = (undefined4 *)0x0;
    }
    else {
      puVar2 = (undefined4 *)pcharNode::pcharNode(this_00,param_1,param_2);
    }
  }
  *(undefined4 **)this = puVar2;
  if (puVar2 != (undefined4 *)0x0) {
    return;
  }
LAB_00a62c46:
  this[4] = (DName)0x3;
  return;
}



// Library Function - Single Match
//  public: __thiscall DName::DName(char)
// 
// Library: Visual Studio 2008 Release

DName * __thiscall DName::DName(DName *this,char param_1)

{
  this[4] = (DName)0x0;
  *(uint *)(this + 4) = *(uint *)(this + 4) & 0xffff00ff;
  *(undefined4 *)this = 0;
  if (param_1 != '\0') {
    doPchar(this,&param_1,1);
  }
  return this;
}



// Library Function - Single Match
//  public: __thiscall DName::DName(char const *)
// 
// Library: Visual Studio 2008 Release

DName * __thiscall DName::DName(DName *this,char *param_1)

{
  char cVar1;
  int iVar2;
  
  this[4] = (DName)0x0;
  *(uint *)(this + 4) = *(uint *)(this + 4) & 0xffff00ff;
  *(undefined4 *)this = 0;
  if (param_1 != (char *)0x0) {
    iVar2 = 0;
    cVar1 = *param_1;
    while (cVar1 != '\0') {
      iVar2 = iVar2 + 1;
      cVar1 = param_1[iVar2];
    }
    doPchar(this,param_1,iVar2);
  }
  return this;
}



// Library Function - Single Match
//  public: __thiscall DName::DName(char const * &,char)
// 
// Library: Visual Studio 2008 Release

DName * __thiscall DName::DName(DName *this,char **param_1,char param_2)

{
  byte bVar1;
  char cVar2;
  char *pcVar3;
  byte *pbVar4;
  int iVar5;
  
  iVar5 = 0;
  this[4] = (DName)0x0;
  *(uint *)(this + 4) = *(uint *)(this + 4) & 0xffff00ff;
  *(undefined4 *)this = 0;
  pcVar3 = *param_1;
  if (pcVar3 == (char *)0x0) {
LAB_00a62d6f:
    this[4] = (DName)0x2;
    return this;
  }
  if (*pcVar3 != '\0') {
    do {
      bVar1 = **param_1;
      if (bVar1 == param_2) break;
      if (((((((bVar1 != 0x5f) && (bVar1 != 0x24)) && (bVar1 != 0x3c)) &&
            (((bVar1 != 0x3e && (bVar1 != 0x2d)) && (((char)bVar1 < 'a' || ('z' < (char)bVar1))))))
           && (((char)bVar1 < 'A' || ('Z' < (char)bVar1)))) &&
          (((char)bVar1 < '0' || ('9' < (char)bVar1)))) &&
         (((bVar1 < 0x80 || (bVar1 == 0xff)) && ((DAT_032ebcd0 & 0x10000) == 0))))
      goto LAB_00a62d6f;
      iVar5 = iVar5 + 1;
      pbVar4 = (byte *)(*param_1 + 1);
      *param_1 = (char *)pbVar4;
    } while (*pbVar4 != 0);
    doPchar(this,pcVar3,iVar5);
    cVar2 = **param_1;
    if (cVar2 != '\0') {
      *param_1 = *param_1 + 1;
      if (cVar2 == param_2) {
        return this;
      }
      *(undefined4 *)this = 0;
      this[4] = (DName)0x3;
      return this;
    }
    if (this[4] != (DName)0x0) {
      return this;
    }
  }
  this[4] = (DName)0x1;
  return this;
}



// Library Function - Single Match
//  public: __thiscall DName::DName(unsigned __int64)
// 
// Library: Visual Studio 2008 Release

void __thiscall DName::DName(DName *this,__uint64 param_1)

{
  char extraout_CL;
  char *pcVar1;
  char local_d [5];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  this[4] = (DName)0x0;
  *(uint *)(this + 4) = *(uint *)(this + 4) & 0xffff00ff;
  pcVar1 = local_d + 1;
  *(undefined4 *)this = 0;
  local_d[1] = 0;
  do {
    pcVar1 = pcVar1 + -1;
    param_1 = __aulldvrm(param_1,10,0);
    *pcVar1 = extraout_CL + '0';
  } while (param_1 != 0);
  doPchar(this,pcVar1,(int)(local_d + (1 - (int)pcVar1)));
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  public: __thiscall DName::DName(__int64)
// 
// Library: Visual Studio 2008 Release

void __thiscall DName::DName(DName *this,__int64 param_1)

{
  bool bVar1;
  char extraout_CL;
  char *pcVar2;
  char *pcVar3;
  char local_d [5];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  this[4] = (DName)0x0;
  *(uint *)(this + 4) = *(uint *)(this + 4) & 0xffff00ff;
  pcVar3 = local_d + 2;
  *(undefined4 *)this = 0;
  local_d[2] = 0;
  bVar1 = false;
  if ((param_1 < 0x100000000) && (param_1 < 0)) {
    bVar1 = true;
    param_1 = CONCAT44(-(param_1._4_4_ + (uint)((int)param_1 != 0)),-(int)param_1);
  }
  do {
    pcVar2 = pcVar3;
    pcVar3 = pcVar2 + -1;
    param_1 = __aulldvrm(param_1,10,0);
    *pcVar3 = extraout_CL + '0';
  } while (param_1 != 0);
  if (bVar1) {
    pcVar3 = pcVar2 + -2;
    *pcVar3 = '-';
  }
  doPchar(this,pcVar3,(int)(local_d + (2 - (int)pcVar3)));
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  public: class DName __thiscall DName::operator+(enum DNameStatus)const 
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall DName::operator+(DName *this,undefined4 *param_1,DNameStatus param_3)

{
  *param_1 = *(undefined4 *)this;
  param_1[1] = *(undefined4 *)(this + 4);
  operator+=((DName *)param_1,param_3);
  return param_1;
}



// Library Function - Single Match
//  public: class DName & __thiscall DName::operator+=(class DName const &)
// 
// Library: Visual Studio 2008 Release

DName * __thiscall DName::operator+=(DName *this,DName *param_1)

{
  if ((char)this[4] < '\x02') {
    if (*(DNameNode **)param_1 == (DNameNode *)0x0) {
      operator+=(this,(int)(char)param_1[4]);
    }
    else if (*(int *)this == 0) {
      FUN_00a625c8(param_1);
    }
    else {
      append(this,*(DNameNode **)param_1);
    }
  }
  return this;
}



// Library Function - Single Match
//  public: class DName & __thiscall DName::operator=(char const *)
// 
// Library: Visual Studio 2008 Release

DName * __thiscall DName::operator=(DName *this,char *param_1)

{
  char cVar1;
  int iVar2;
  
  this[4] = (DName)0x0;
  *(uint *)(this + 4) = *(uint *)(this + 4) & 0xffff00ff;
  *(undefined4 *)this = 0;
  iVar2 = 0;
  cVar1 = *param_1;
  while (cVar1 != '\0') {
    iVar2 = iVar2 + 1;
    cVar1 = param_1[iVar2];
  }
  doPchar(this,param_1,iVar2);
  return this;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getCallingConvention(void)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl UnDecorator::getCallingConvention(undefined4 *param_1)

{
  uint uVar1;
  char *pcVar2;
  Tokens TVar3;
  DNameStatus DVar4;
  undefined4 local_c;
  undefined4 local_8;
  
  if (*DAT_032ebcc0 == '\0') {
    DVar4 = 1;
  }
  else {
    uVar1 = (int)*DAT_032ebcc0 - 0x41;
    DAT_032ebcc0 = DAT_032ebcc0 + 1;
    if (uVar1 < 0xd) {
      local_c = 0;
      local_8 = 0;
      if ((~(DAT_032ebcd0 >> 1) & 1) != 0) {
        uVar1 = uVar1 & 0xfffffffe;
        if (uVar1 == 0) {
          TVar3 = 1;
        }
        else if (uVar1 == 2) {
          TVar3 = 2;
        }
        else if (uVar1 == 4) {
          TVar3 = 4;
        }
        else if (uVar1 == 6) {
          TVar3 = 3;
        }
        else if (uVar1 == 8) {
          TVar3 = 5;
        }
        else {
          if (uVar1 != 0xc) goto LAB_00a62fa7;
          TVar3 = 6;
        }
        pcVar2 = UScore(TVar3);
        DName::operator=((DName *)&local_c,pcVar2);
      }
LAB_00a62fa7:
      *param_1 = local_c;
      param_1[1] = local_8;
      return param_1;
    }
    DVar4 = 2;
  }
  DName::DName((DName *)param_1,DVar4);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getVCallThunkType(void)
// 
// Library: Visual Studio 2008 Release

DName * __cdecl UnDecorator::getVCallThunkType(DName *param_1)

{
  DNameStatus DVar1;
  
  if (*DAT_032ebcc0 == '\0') {
    DVar1 = 1;
  }
  else {
    if (*DAT_032ebcc0 == 'A') {
      DAT_032ebcc0 = DAT_032ebcc0 + 1;
      DName::DName(param_1,"{flat}");
      return param_1;
    }
    DVar1 = 2;
  }
  DName::DName(param_1,DVar1);
  return param_1;
}



// Library Function - Single Match
//  public: class DName __thiscall DName::operator+(class DName const &)const 
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall DName::operator+(DName *this,undefined4 *param_1,DName *param_3)

{
  *param_1 = *(undefined4 *)this;
  param_1[1] = *(undefined4 *)(this + 4);
  operator+=((DName *)param_1,param_3);
  return param_1;
}



// Library Function - Single Match
//  public: class DName & __thiscall DName::operator+=(char)
// 
// Library: Visual Studio 2008 Release

DName * __thiscall DName::operator+=(DName *this,char param_1)

{
  undefined4 *puVar1;
  
  if (((char)this[4] < '\x02') && (param_1 != '\0')) {
    if (*(int *)this == 0) {
      DName(this,param_1);
    }
    else {
      puVar1 = (undefined4 *)HeapManager::getMemory((HeapManager *)&DAT_032ebca0,8,0);
      if (puVar1 == (undefined4 *)0x0) {
        puVar1 = (undefined4 *)0x0;
      }
      else {
        *puVar1 = &PTR_FUN_00da4440;
        *(char *)(puVar1 + 1) = param_1;
      }
      append(this,(DNameNode *)puVar1);
    }
  }
  return this;
}



// Library Function - Single Match
//  public: class DName & __thiscall DName::operator+=(char const *)
// 
// Library: Visual Studio 2008 Release

DName * __thiscall DName::operator+=(DName *this,char *param_1)

{
  char cVar1;
  pcharNode *this_00;
  DNameNode *pDVar2;
  int iVar3;
  
  if ((((char)this[4] < '\x02') && (param_1 != (char *)0x0)) && (*param_1 != '\0')) {
    if (*(int *)this == 0) {
      operator=(this,param_1);
    }
    else {
      this_00 = (pcharNode *)HeapManager::getMemory((HeapManager *)&DAT_032ebca0,0xc,0);
      if (this_00 == (pcharNode *)0x0) {
        pDVar2 = (DNameNode *)0x0;
      }
      else {
        iVar3 = 0;
        cVar1 = *param_1;
        while (cVar1 != '\0') {
          iVar3 = iVar3 + 1;
          cVar1 = param_1[iVar3];
        }
        pDVar2 = (DNameNode *)pcharNode::pcharNode(this_00,param_1,iVar3);
      }
      append(this,pDVar2);
    }
  }
  return this;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getArgumentList(void)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl UnDecorator::getArgumentList(undefined4 *param_1)

{
  char cVar1;
  char *pcVar2;
  uint uVar3;
  DName *pDVar4;
  undefined local_20 [8];
  DName local_18 [8];
  undefined4 local_10;
  uint local_c;
  int local_8;
  
  *(undefined *)(param_1 + 1) = 0;
  param_1[1] = param_1[1] & 0xffff00ff;
  local_8 = 1;
  *param_1 = 0;
  cVar1 = *(char *)(param_1 + 1);
  while( true ) {
    if (cVar1 != '\0') {
      return param_1;
    }
    if (*DAT_032ebcc0 == '@') {
      return param_1;
    }
    if (*DAT_032ebcc0 == 'Z') {
      return param_1;
    }
    if (local_8 == 0) {
      DName::operator+=((DName *)param_1,',');
    }
    else {
      local_8 = 0;
    }
    pcVar2 = DAT_032ebcc0;
    if (*DAT_032ebcc0 == '\0') break;
    uVar3 = (int)*DAT_032ebcc0 - 0x30;
    if (uVar3 < 10) {
      DAT_032ebcc0 = DAT_032ebcc0 + 1;
      pDVar4 = (DName *)Replicator::operator[]((Replicator *)DAT_032ebcb4,local_20,uVar3);
      DName::operator+=((DName *)param_1,pDVar4);
    }
    else {
      local_c = local_c & 0xffff0000;
      local_10 = 0;
      getPrimaryDataType(local_18,&local_10);
      if ((1 < (int)DAT_032ebcc0 - (int)pcVar2) && (*DAT_032ebcb4 != 9)) {
        Replicator::operator+=((Replicator *)DAT_032ebcb4,local_18);
      }
      DName::operator+=((DName *)param_1,local_18);
      if (DAT_032ebcc0 == pcVar2) {
        DName::operator=((DName *)param_1,2);
      }
    }
    cVar1 = *(char *)(param_1 + 1);
  }
  DName::operator+=((DName *)param_1,1);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getVdispMapType(class DName const &)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl UnDecorator::getVdispMapType(undefined4 *param_1,undefined4 *param_2)

{
  DName *pDVar1;
  undefined local_c [8];
  
  *param_1 = *param_2;
  param_1[1] = param_2[1];
  DName::operator+=((DName *)param_1,"{for ");
  pDVar1 = (DName *)getScope(local_c);
  DName::operator+=((DName *)param_1,pDVar1);
  DName::operator+=((DName *)param_1,'}');
  if (*DAT_032ebcc0 == '@') {
    DAT_032ebcc0 = DAT_032ebcc0 + 1;
  }
  return param_1;
}



// Library Function - Single Match
//  class DName __cdecl operator+(char,class DName const &)
// 
// Library: Visual Studio 2008 Release

undefined4 __cdecl operator+(undefined4 param_1,char param_2,undefined4 param_3)

{
  DName *pDVar1;
  undefined4 uVar2;
  DName local_c [8];
  
  uVar2 = param_1;
  pDVar1 = (DName *)DName::DName(local_c,param_2);
  DName::operator+(pDVar1,uVar2,param_3);
  return param_1;
}



// Library Function - Single Match
//  class DName __cdecl operator+(enum DNameStatus,class DName const &)
// 
// Library: Visual Studio 2008 Release

undefined4 __cdecl operator+(undefined4 param_1,DNameStatus param_2,undefined4 param_3)

{
  DName *pDVar1;
  undefined4 uVar2;
  DName local_c [8];
  
  uVar2 = param_1;
  pDVar1 = (DName *)DName::DName(local_c,param_2);
  DName::operator+(pDVar1,uVar2,param_3);
  return param_1;
}



// Library Function - Single Match
//  class DName __cdecl operator+(char const *,class DName const &)
// 
// Library: Visual Studio 2008 Release

undefined4 __cdecl operator+(undefined4 param_1,char *param_2,undefined4 param_3)

{
  DName *pDVar1;
  undefined4 uVar2;
  DName local_c [8];
  
  uVar2 = param_1;
  pDVar1 = (DName *)DName::DName(local_c,param_2);
  DName::operator+(pDVar1,uVar2,param_3);
  return param_1;
}



// Library Function - Single Match
//  public: class DName __thiscall DName::operator+(char)const 
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall DName::operator+(DName *this,undefined4 *param_1,char param_3)

{
  *param_1 = *(undefined4 *)this;
  param_1[1] = *(undefined4 *)(this + 4);
  operator+=((DName *)param_1,param_3);
  return param_1;
}



// Library Function - Single Match
//  public: class DName __thiscall DName::operator+(char const *)const 
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall DName::operator+(DName *this,undefined4 *param_1,char *param_3)

{
  *param_1 = *(undefined4 *)this;
  param_1[1] = *(undefined4 *)(this + 4);
  operator+=((DName *)param_1,param_3);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getDimension(bool)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl UnDecorator::getDimension(undefined4 *param_1,char param_2)

{
  __uint64 _Var1;
  char *pcVar2;
  char cVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  longlong lVar6;
  DNameStatus DVar7;
  DName local_20 [8];
  undefined local_18 [8];
  DName local_10 [4];
  int local_c;
  char *local_8;
  
  local_8 = (char *)0x0;
  if (*DAT_032ebcc0 == 'Q') {
    DAT_032ebcc0 = DAT_032ebcc0 + 1;
    local_8 = "`non-type-template-parameter";
  }
  cVar3 = *DAT_032ebcc0;
  if (cVar3 == '\0') {
    DName::DName((DName *)param_1,1);
    return param_1;
  }
  if (('/' < cVar3) && (cVar3 < ':')) {
    cVar3 = *DAT_032ebcc0;
    DAT_032ebcc0 = DAT_032ebcc0 + 1;
    if (local_8 == (char *)0x0) {
      puVar5 = (undefined4 *)DName::DName(local_20,(longlong)(cVar3 + -0x2f));
    }
    else {
      uVar4 = DName::DName(local_10,(longlong)(cVar3 + -0x2f));
      puVar5 = (undefined4 *)operator+(local_18,local_8,uVar4);
    }
    *param_1 = *puVar5;
    param_1[1] = puVar5[1];
    return param_1;
  }
  _Var1 = 0;
  while (pcVar2 = DAT_032ebcc0, cVar3 != '@') {
    if (cVar3 == '\0') {
      DVar7 = 1;
      goto LAB_00a633cb;
    }
    if ((cVar3 < 'A') || ('P' < cVar3)) goto LAB_00a633c9;
    local_c = cVar3 + -0x41 >> 0x1f;
    lVar6 = __allmul(_Var1,0x10,0);
    _Var1 = lVar6 + CONCAT44(local_c,cVar3 + -0x41);
    DAT_032ebcc0 = pcVar2 + 1;
    cVar3 = *DAT_032ebcc0;
  }
  cVar3 = *DAT_032ebcc0;
  DAT_032ebcc0 = DAT_032ebcc0 + 1;
  if (cVar3 != '@') {
LAB_00a633c9:
    DVar7 = 2;
LAB_00a633cb:
    DName::DName((DName *)param_1,DVar7);
    return param_1;
  }
  if (param_2 == '\0') {
    if (local_8 == (char *)0x0) {
      puVar5 = (undefined4 *)DName::DName(local_10,_Var1);
      goto LAB_00a63425;
    }
    uVar4 = DName::DName(local_20,_Var1);
  }
  else {
    if (local_8 == (char *)0x0) {
      puVar5 = (undefined4 *)DName::DName(local_10,_Var1);
      goto LAB_00a63425;
    }
    uVar4 = DName::DName(local_20,_Var1);
  }
  puVar5 = (undefined4 *)operator+(local_18,local_8,uVar4);
LAB_00a63425:
  *param_1 = *puVar5;
  param_1[1] = puVar5[1];
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getEnumType(void)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl UnDecorator::getEnumType(undefined4 *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  char *pcVar3;
  DNameStatus DVar4;
  undefined local_14 [8];
  undefined4 local_c;
  uint local_8;
  
  local_c = 0;
  local_8 = local_8 & 0xffff0000;
  if (*DAT_032ebcc0 == '\0') {
    DVar4 = 1;
LAB_00a634e0:
    DName::DName((DName *)param_1,DVar4);
    return param_1;
  }
  switch(*DAT_032ebcc0) {
  case '0':
  case '1':
    pcVar3 = "char ";
    break;
  case '2':
  case '3':
    pcVar3 = "short ";
    break;
  case '4':
    goto switchD_00a63466_caseD_34;
  case '5':
    pcVar3 = "int ";
    break;
  case '6':
  case '7':
    pcVar3 = "long ";
    break;
  default:
    DVar4 = 2;
    goto LAB_00a634e0;
  }
  DName::operator=((DName *)&local_c,pcVar3);
switchD_00a63466_caseD_34:
  cVar1 = *DAT_032ebcc0;
  DAT_032ebcc0 = DAT_032ebcc0 + 1;
  if ((((cVar1 == '1') || (cVar1 == '3')) || (cVar1 == '5')) || (cVar1 == '7')) {
    puVar2 = (undefined4 *)operator+(local_14,"unsigned ",&local_c);
    local_c = *puVar2;
    local_8 = puVar2[1];
  }
  *param_1 = local_c;
  param_1[1] = local_8;
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getArgumentTypes(void)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl UnDecorator::getArgumentTypes(undefined4 *param_1)

{
  char cVar1;
  char *pcVar2;
  undefined4 *puVar3;
  undefined local_14 [8];
  undefined4 local_c;
  undefined4 local_8;
  
  if (*DAT_032ebcc0 == 'X') {
    pcVar2 = "void";
  }
  else {
    if (*DAT_032ebcc0 != 'Z') {
      getArgumentList(&local_c);
      if (((char)local_8 == '\0') && (cVar1 = *DAT_032ebcc0, cVar1 != '\0')) {
        if (cVar1 != '@') {
          if (cVar1 != 'Z') {
            DName::DName((DName *)param_1,2);
            return param_1;
          }
          DAT_032ebcc0 = DAT_032ebcc0 + 1;
          pcVar2 = ",...";
          if ((~(DAT_032ebcd0 >> 0x12) & 1) == 0) {
            pcVar2 = ",<ellipsis>";
          }
          puVar3 = (undefined4 *)DName::operator+((DName *)&local_c,local_14,pcVar2);
          *param_1 = *puVar3;
          param_1[1] = puVar3[1];
          return param_1;
        }
        DAT_032ebcc0 = DAT_032ebcc0 + 1;
      }
      *param_1 = local_c;
      param_1[1] = local_8;
      return param_1;
    }
    pcVar2 = "...";
    if ((~(DAT_032ebcd0 >> 0x12) & 1) == 0) {
      pcVar2 = "<ellipsis>";
    }
  }
  DAT_032ebcc0 = DAT_032ebcc0 + 1;
  DName::DName((DName *)param_1,pcVar2);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getThrowTypes(void)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl UnDecorator::getThrowTypes(undefined4 *param_1)

{
  undefined4 uVar1;
  DName *pDVar2;
  undefined *puVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  undefined local_14 [8];
  DName local_c [4];
  uint local_8;
  
  puVar4 = param_1;
  if (*DAT_032ebcc0 == '\0') {
    uVar5 = 0x29;
    puVar3 = local_14;
    uVar1 = 1;
    pDVar2 = (DName *)DName::DName(local_c," throw(");
    pDVar2 = (DName *)DName::operator+(pDVar2,puVar3,uVar1);
  }
  else {
    if (*DAT_032ebcc0 == 'Z') {
      DAT_032ebcc0 = DAT_032ebcc0 + 1;
      *param_1 = 0;
      param_1[1] = local_8 & 0xffff0000;
      return param_1;
    }
    uVar5 = 0x29;
    uVar1 = getArgumentTypes(local_c,param_1,0x29);
    pDVar2 = (DName *)operator+(local_14," throw(",uVar1);
  }
  DName::operator+(pDVar2,puVar4,uVar5);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getExtendedDataIndirectType(char &,bool &,int)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl
UnDecorator::getExtendedDataIndirectType
          (undefined4 *param_1,char *param_2,undefined *param_3,int param_4)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  char *pcVar5;
  DNameStatus DVar6;
  undefined local_2c [8];
  undefined local_24 [8];
  undefined local_1c [8];
  DName local_14 [8];
  undefined4 local_c;
  uint local_8;
  
  local_8 = local_8 & 0xffff0000;
  pcVar5 = (char *)((int)DAT_032ebcc0 + 1);
  iVar2 = (int)*pcVar5;
  local_c = 0;
  if (iVar2 == 0x41) {
    DAT_032ebcc0 = pcVar5;
    if (param_4 == 0) {
      *param_2 = ((*param_2 != '&') - 1U & 199) + 0x5e;
    }
LAB_00a637cc:
    DAT_032ebcc0 = DAT_032ebcc0 + 1;
    *(undefined *)(param_1 + 1) = 0;
    param_1[1] = param_1[1] & 0xffff00ff;
    *param_1 = 0;
  }
  else {
    if (iVar2 == 0x42) {
      if (param_4 == 0) {
        DAT_032ebcc0 = pcVar5;
        *param_3 = 1;
        DName::DName((DName *)&local_c,'>');
        goto LAB_00a637cc;
      }
LAB_00a63793:
      DVar6 = 2;
    }
    else {
      if (iVar2 == 0x43) {
        DAT_032ebcc0 = pcVar5;
        *param_2 = '%';
        goto LAB_00a637cc;
      }
      if ((*pcVar5 != '\0') && (*(char *)((int)DAT_032ebcc0 + 2) != '\0')) {
        if (param_4 == 0) {
          uVar1 = (iVar2 + -0x30) * 0x10 + -0x30 + (int)*(char *)((int)DAT_032ebcc0 + 2);
          DAT_032ebcc0 = (char *)((int)DAT_032ebcc0 + 3);
          if (1 < uVar1) {
            DName::DName((DName *)&local_c,',');
            uVar3 = DName::DName(local_14,(ulonglong)uVar1);
            puVar4 = (undefined4 *)DName::operator+((DName *)&local_c,local_1c,uVar3);
            local_c = *puVar4;
            local_8 = puVar4[1];
          }
          puVar4 = (undefined4 *)DName::operator+((DName *)&local_c,local_24,0x3e);
          local_c = *puVar4;
          local_8 = puVar4[1];
          if (*DAT_032ebcc0 == '$') {
            DAT_032ebcc0 = DAT_032ebcc0 + 1;
          }
          else {
            puVar4 = (undefined4 *)DName::operator+((DName *)&local_c,local_2c,0x5e);
            local_c = *puVar4;
            local_8 = puVar4[1];
          }
          if (*DAT_032ebcc0 == '\0') {
            DName::operator+=((DName *)&local_c,1);
          }
          else {
            DAT_032ebcc0 = DAT_032ebcc0 + 1;
          }
          *param_1 = local_c;
          param_1[1] = local_8 | 0x4000;
          return param_1;
        }
        goto LAB_00a63793;
      }
      DVar6 = 1;
    }
    DAT_032ebcc0 = pcVar5;
    DName::DName((DName *)param_1,DVar6);
  }
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getArrayType(class DName const &)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl UnDecorator::getArrayType(undefined4 *param_1,int *param_2)

{
  int iVar1;
  DName *pDVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  DName *pDVar5;
  undefined4 uVar6;
  bool bVar7;
  undefined4 *puVar8;
  undefined *puVar9;
  undefined4 uVar10;
  undefined4 local_34 [2];
  undefined4 local_2c [2];
  DName local_24 [8];
  undefined4 local_1c;
  uint local_18;
  undefined4 local_14;
  uint local_10;
  DName local_c [4];
  int local_8;
  
  if (*DAT_032ebcc0 == '\0') {
    uVar6 = 0x5d;
    if (*param_2 != 0) {
      puVar3 = local_34;
      uVar10 = 1;
      puVar4 = local_2c;
      puVar9 = &DAT_00da4510;
      pDVar5 = local_24;
      pDVar2 = (DName *)operator+(&local_1c,0x28,param_2,pDVar5,&DAT_00da4510,puVar4,1,puVar3,0x5d);
      pDVar5 = (DName *)DName::operator+(pDVar2,pDVar5,puVar9);
      goto LAB_00a63940;
    }
    puVar3 = local_34;
    puVar4 = local_2c;
    pDVar5 = local_24;
  }
  else {
    local_8 = getNumberOfDimensions();
    if (local_8 < 0) {
      local_8 = 0;
    }
    if (local_8 != 0) {
      local_10 = local_10 & 0xffff0000;
      local_14 = 0;
      if ((param_2[1] & 0x800U) != 0) {
        DName::operator+=((DName *)&local_14,"[]");
      }
      while ((((char)local_10 < '\x02' &&
              (iVar1 = local_8 + -1, bVar7 = local_8 != 0, local_8 = iVar1, bVar7)) &&
             (*DAT_032ebcc0 != '\0'))) {
        uVar10 = 0x5d;
        pDVar5 = local_24;
        uVar6 = getDimension(local_2c,0,pDVar5,0x5d);
        pDVar2 = (DName *)operator+(local_34,0x5b,uVar6);
        pDVar5 = (DName *)DName::operator+(pDVar2,pDVar5,uVar10);
        DName::operator+=((DName *)&local_14,pDVar5);
      }
      if (*param_2 != 0) {
        puVar3 = &local_14;
        puVar4 = local_34;
        if ((param_2[1] & 0x800U) == 0) {
          uVar6 = 0x29;
          puVar8 = local_2c;
          pDVar5 = (DName *)operator+(local_24,0x28,param_2,puVar8,0x29,puVar4,puVar3);
          param_2 = (int *)DName::operator+(pDVar5,puVar8,uVar6);
        }
        puVar3 = (undefined4 *)DName::operator+((DName *)param_2,puVar4,puVar3);
        local_14 = *puVar3;
        local_10 = puVar3[1];
      }
      getPrimaryDataType(&local_1c,&local_14);
      *param_1 = local_1c;
      param_1[1] = local_18 | 0x800;
      return param_1;
    }
    puVar3 = &local_1c;
    puVar4 = &local_14;
    pDVar5 = local_c;
  }
  uVar6 = 0x5d;
  uVar10 = 1;
  pDVar5 = (DName *)DName::DName(pDVar5,'[');
LAB_00a63940:
  pDVar5 = (DName *)DName::operator+(pDVar5,puVar4,uVar10);
  uVar6 = DName::operator+(pDVar5,puVar3,uVar6);
  getBasicDataType(param_1,uVar6);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getLexicalFrame(void)
// 
// Library: Visual Studio 2008 Release

undefined4 __cdecl UnDecorator::getLexicalFrame(undefined4 param_1)

{
  undefined4 uVar1;
  DName *pDVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined local_14 [8];
  undefined local_c [8];
  
  uVar4 = 0x27;
  uVar3 = param_1;
  uVar1 = getDimension(local_c,0,param_1,0x27);
  pDVar2 = (DName *)operator+(local_14,0x60,uVar1);
  DName::operator+(pDVar2,uVar3,uVar4);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getDisplacement(void)
// 
// Library: Visual Studio 2008 Release

undefined4 __cdecl UnDecorator::getDisplacement(undefined4 param_1)

{
  getDimension(param_1,1);
  return param_1;
}



// Library Function - Multiple Matches With Different Base Names
//  private: static class DName __cdecl UnDecorator::getCallIndex(void)
//  private: static class DName __cdecl UnDecorator::getGuardNumber(void)
// 
// Library: Visual Studio 2008 Release

undefined4 FID_conflict_getGuardNumber(undefined4 param_1)

{
  UnDecorator::getDimension(param_1,0);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getVfTableType(class DName const &)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl UnDecorator::getVfTableType(undefined4 *param_1,undefined4 *param_2)

{
  char cVar1;
  DName *pDVar2;
  undefined4 uVar3;
  undefined *puVar4;
  undefined4 *puVar5;
  char *pcVar6;
  undefined4 uVar7;
  undefined local_1c [8];
  undefined local_14 [8];
  DName local_c [8];
  
  *param_1 = *param_2;
  cVar1 = (char)param_2[1];
  param_1[1] = param_2[1];
  if (cVar1 < '\x02') {
    if (*DAT_032ebcc0 == '\0') {
      if (cVar1 < '\x02') {
        uVar3 = operator+(local_1c,1,param_1);
        FUN_00a625c8(uVar3);
      }
    }
    else {
      getDataIndirectType(local_c);
      puVar4 = local_14;
      puVar5 = param_1;
      pDVar2 = (DName *)DName::operator+(local_c,local_1c,0x20);
      uVar3 = DName::operator+(pDVar2,puVar4,puVar5);
      FUN_00a625c8(uVar3);
      if (*(char *)(param_1 + 1) < '\x02') {
        if (*DAT_032ebcc0 != '@') {
          pcVar6 = "{for ";
          do {
            DName::operator+=((DName *)param_1,pcVar6);
            do {
              if ((('\x01' < *(char *)(param_1 + 1)) || (*DAT_032ebcc0 == '\0')) ||
                 (*DAT_032ebcc0 == '@')) {
                if (*(char *)(param_1 + 1) < '\x02') {
                  if (*DAT_032ebcc0 == '\0') {
                    DName::operator+=((DName *)param_1,1);
                  }
                  DName::operator+=((DName *)param_1,'}');
                }
LAB_00a63ac3:
                if (*DAT_032ebcc0 != '@') {
                  return param_1;
                }
                goto LAB_00a63acd;
              }
              uVar7 = 0x27;
              puVar4 = local_1c;
              uVar3 = getScope(local_14,puVar4,0x27);
              pDVar2 = (DName *)operator+(local_c,0x60,uVar3);
              pDVar2 = (DName *)DName::operator+(pDVar2,puVar4,uVar7);
              DName::operator+=((DName *)param_1,pDVar2);
              if (*DAT_032ebcc0 == '@') {
                DAT_032ebcc0 = DAT_032ebcc0 + 1;
              }
              if ('\x01' < *(char *)(param_1 + 1)) goto LAB_00a63ac3;
            } while (*DAT_032ebcc0 == '@');
            pcVar6 = "s ";
          } while( true );
        }
LAB_00a63acd:
        DAT_032ebcc0 = DAT_032ebcc0 + 1;
      }
    }
  }
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getStringEncoding(char *,int)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl UnDecorator::getStringEncoding(undefined4 *param_1,char *param_2)

{
  char *pcVar1;
  char cVar2;
  DNameStatus DVar3;
  undefined local_14 [8];
  undefined4 local_c;
  undefined4 local_8;
  
  DName::DName((DName *)&local_c,param_2);
  pcVar1 = DAT_032ebcc0;
  cVar2 = *DAT_032ebcc0;
  DAT_032ebcc0 = DAT_032ebcc0 + 1;
  if ((cVar2 == '@') && (cVar2 = *DAT_032ebcc0, DAT_032ebcc0 = pcVar1 + 2, cVar2 == '_')) {
    DAT_032ebcc0 = pcVar1 + 3;
    getDimension(local_14,0);
    getDimension(local_14,0);
    cVar2 = *DAT_032ebcc0;
    if (cVar2 != '\0') {
      do {
        if (cVar2 == '@') break;
        DAT_032ebcc0 = DAT_032ebcc0 + 1;
        cVar2 = *DAT_032ebcc0;
      } while (cVar2 != '\0');
      if (*DAT_032ebcc0 != '\0') {
        DAT_032ebcc0 = DAT_032ebcc0 + 1;
        *param_1 = local_c;
        param_1[1] = local_8;
        return param_1;
      }
    }
    DAT_032ebcc0 = DAT_032ebcc0 + -1;
    DVar3 = 1;
  }
  else {
    DVar3 = 2;
  }
  DName::DName((DName *)param_1,DVar3);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getSignedDimension(void)
// 
// Library: Visual Studio 2008 Release

DName * __cdecl UnDecorator::getSignedDimension(DName *param_1)

{
  undefined4 uVar1;
  undefined local_c [8];
  
  if (*DAT_032ebcc0 == '\0') {
    DName::DName(param_1,1);
  }
  else if (*DAT_032ebcc0 == '?') {
    DAT_032ebcc0 = DAT_032ebcc0 + 1;
    uVar1 = getDimension(local_c,0);
    operator+(param_1,0x2d,uVar1);
  }
  else {
    getDimension(param_1,0);
  }
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getTemplateConstant(void)
// 
// Library: Visual Studio 2008 Release

void __cdecl UnDecorator::getTemplateConstant(undefined4 *param_1)

{
  char cVar1;
  char *pcVar2;
  DName *pDVar3;
  undefined4 *puVar4;
  long lVar5;
  undefined *puVar6;
  undefined4 uVar7;
  DNameStatus DVar8;
  undefined *puVar9;
  DName local_d4 [8];
  undefined local_cc [8];
  undefined local_c4 [8];
  DName local_bc [8];
  undefined local_b4 [8];
  undefined local_ac [8];
  undefined local_a4 [8];
  undefined local_9c [8];
  undefined local_94 [8];
  undefined local_8c [8];
  DName local_84 [4];
  char local_80;
  char local_7c;
  char local_7b;
  char local_7a;
  char local_18 [8];
  undefined4 local_10;
  undefined4 local_c;
  uint local_8;
  
  pcVar2 = DAT_032ebcc0;
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  cVar1 = *DAT_032ebcc0;
  DAT_032ebcc0 = DAT_032ebcc0 + 1;
  if (cVar1 < 'E') {
    if (cVar1 == 'D') {
LAB_00a63d7c:
      getSignedDimension(local_84);
      if ((DAT_032ebcd0 & 0x4000) != 0) {
        DName::getString(local_84,local_18,0x10);
        lVar5 = _atol(local_18);
        pcVar2 = (char *)(*DAT_032ebcd4)(lVar5);
        if (pcVar2 != (char *)0x0) {
LAB_00a63ce8:
          DName::DName((DName *)param_1,pcVar2);
          goto LAB_00a63ea7;
        }
      }
      puVar9 = &DAT_00d5b2e8;
      if (cVar1 == 'D') {
        pcVar2 = "`template-parameter";
        puVar6 = local_8c;
      }
      else {
        pcVar2 = "`non-type-template-parameter";
        puVar6 = local_cc;
      }
      pDVar3 = (DName *)operator+(puVar6,pcVar2,local_84,param_1,&DAT_00d5b2e8);
      DName::operator+(pDVar3,param_1,puVar9);
      goto LAB_00a63ea7;
    }
    if (cVar1 != '\0') {
      if (cVar1 == '0') {
        getSignedDimension(param_1);
        goto LAB_00a63ea7;
      }
      if (cVar1 == '1') {
        if (*DAT_032ebcc0 == '@') {
          DAT_032ebcc0 = pcVar2 + 2;
          pcVar2 = "NULL";
          goto LAB_00a63ce8;
        }
        puVar4 = (undefined4 *)getDecoratedName(local_9c);
        pDVar3 = (DName *)DName::DName(local_bc,"&");
LAB_00a63cc7:
        DName::operator+(pDVar3,param_1,puVar4);
        goto LAB_00a63ea7;
      }
      if (cVar1 == '2') {
        getSignedDimension(local_84);
        getSignedDimension(&local_10);
        pcVar2 = DAT_032ebcc0;
        if (('\x01' < local_80) || ('\x01' < (char)local_c)) goto LAB_00a63d26;
        pcVar2 = DName::getString(local_84,&local_7b,100);
        if (pcVar2 != (char *)0x0) {
          local_7c = local_7b;
          if (local_7b == '-') {
            local_7b = local_7a;
            local_7a = '.';
          }
          else {
            local_7b = '.';
          }
          puVar4 = &local_10;
          uVar7 = 0x65;
          puVar9 = local_ac;
          pDVar3 = (DName *)DName::DName(local_d4,&local_7c);
          pDVar3 = (DName *)DName::operator+(pDVar3,puVar9,uVar7);
          goto LAB_00a63cc7;
        }
      }
      goto LAB_00a63c7b;
    }
LAB_00a63d26:
    DAT_032ebcc0 = pcVar2;
    DVar8 = 1;
  }
  else {
    if (cVar1 == 'E') {
      getDecoratedName(param_1);
      goto LAB_00a63ea7;
    }
    if ('E' < cVar1) {
      if (cVar1 < 'K') {
        DName::DName(local_84,'{');
        if (('G' < cVar1) && (cVar1 < 'K')) {
          pDVar3 = (DName *)getDecoratedName(local_94);
          DName::operator+=(local_84,pDVar3);
          DName::operator+=(local_84,',');
        }
        if (cVar1 == 'F') {
LAB_00a63e5d:
          pDVar3 = (DName *)getSignedDimension(local_b4);
          DName::operator+=(local_84,pDVar3);
          DName::operator+=(local_84,',');
LAB_00a63e7d:
          pDVar3 = (DName *)getSignedDimension(local_c4);
          DName::operator+=(local_84,pDVar3);
        }
        else {
          if (cVar1 == 'G') {
LAB_00a63e3d:
            pDVar3 = (DName *)getSignedDimension(local_a4);
            DName::operator+=(local_84,pDVar3);
            DName::operator+=(local_84,',');
            goto LAB_00a63e5d;
          }
          if (cVar1 == 'H') goto LAB_00a63e7d;
          if (cVar1 == 'I') goto LAB_00a63e5d;
          if (cVar1 == 'J') goto LAB_00a63e3d;
        }
        DName::operator+(local_84,param_1,0x7d);
        goto LAB_00a63ea7;
      }
      if (cVar1 == 'Q') goto LAB_00a63d7c;
      if (cVar1 == 'R') {
        getZName(&local_10,0,0);
        getSignedDimension(local_84);
        *param_1 = local_10;
        param_1[1] = local_c;
        goto LAB_00a63ea7;
      }
    }
LAB_00a63c7b:
    DVar8 = 2;
  }
  DName::DName((DName *)param_1,DVar8);
LAB_00a63ea7:
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getPtrRefDataType(class DName const &,int)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl UnDecorator::getPtrRefDataType(undefined4 *param_1,int *param_2,int param_3)

{
  undefined4 *puVar1;
  char *pcVar2;
  undefined local_14 [8];
  undefined4 local_c;
  undefined4 local_8;
  
  if (*DAT_032ebcc0 == '\0') {
    operator+(param_1,1,param_2);
    return param_1;
  }
  if ((param_3 != 0) && (*DAT_032ebcc0 == 'X')) {
    DAT_032ebcc0 = DAT_032ebcc0 + 1;
    if (*param_2 != 0) {
      operator+(param_1,"void ",param_2);
      return param_1;
    }
    DName::DName((DName *)param_1,"void");
    return param_1;
  }
  if (*DAT_032ebcc0 == 'Y') {
    DAT_032ebcc0 = DAT_032ebcc0 + 1;
    getArrayType(param_1,param_2);
    return param_1;
  }
  getBasicDataType(&local_c,param_2);
  if ((param_2[1] & 0x4000U) == 0) {
    if ((param_2[1] & 0x2000U) == 0) goto LAB_00a63f74;
    pcVar2 = "cli::pin_ptr<";
  }
  else {
    pcVar2 = "cli::array<";
  }
  puVar1 = (undefined4 *)operator+(local_14,pcVar2,&local_c);
  local_c = *puVar1;
  local_8 = puVar1[1];
LAB_00a63f74:
  *param_1 = local_c;
  param_1[1] = local_8;
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getTemplateArgumentList(void)
// 
// Library: Visual Studio 2008 Release

void __cdecl UnDecorator::getTemplateArgumentList(undefined4 *param_1)

{
  char cVar1;
  undefined4 *puVar2;
  long lVar3;
  undefined *puVar4;
  DName *pDVar5;
  undefined *puVar6;
  char *pcVar7;
  undefined *puVar8;
  undefined local_70 [8];
  undefined local_68 [8];
  undefined local_60 [8];
  undefined local_58 [8];
  undefined local_50 [8];
  undefined local_48 [8];
  undefined local_40 [8];
  char *local_38;
  undefined4 local_34;
  uint local_30;
  DName local_2c [8];
  int local_24;
  undefined4 local_20;
  uint local_1c;
  char local_18 [16];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  *(undefined *)(param_1 + 1) = 0;
  param_1[1] = param_1[1] & 0xffff00ff;
  *param_1 = 0;
  DAT_032ebcd9 = 1;
  local_24 = 1;
  cVar1 = *(char *)(param_1 + 1);
  do {
    if (((cVar1 != '\0') || (*DAT_032ebcc0 == '\0')) || (*DAT_032ebcc0 == '@')) {
      DAT_032ebcd9 = 0;
      ___security_check_cookie_4();
      return;
    }
    if (local_24 == 0) {
      DName::operator+=((DName *)param_1,',');
    }
    else {
      local_24 = 0;
    }
    cVar1 = *DAT_032ebcc0;
    if ((int)cVar1 - 0x30U < 10) {
      DAT_032ebcc0 = DAT_032ebcc0 + 1;
      puVar2 = (undefined4 *)
               Replicator::operator[]((Replicator *)DAT_032ebcbc,local_70,(int)cVar1 - 0x30U);
    }
    else {
      local_1c = local_1c & 0xffff0000;
      local_38 = DAT_032ebcc0;
      local_20 = 0;
      if (cVar1 == 'X') {
        DAT_032ebcc0 = DAT_032ebcc0 + 1;
        pcVar7 = "void";
LAB_00a64049:
        DName::operator=((DName *)&local_20,pcVar7);
      }
      else {
        if ((cVar1 == '$') && (DAT_032ebcc0[1] != '$')) {
          DAT_032ebcc0 = DAT_032ebcc0 + 1;
          puVar2 = (undefined4 *)getTemplateConstant(local_40);
        }
        else if (cVar1 == '?') {
          getSignedDimension(local_2c);
          if ((DAT_032ebcd0 & 0x4000) == 0) {
            puVar6 = local_48;
            puVar4 = local_50;
          }
          else {
            DName::getString(local_2c,local_18,0x10);
            lVar3 = _atol(local_18);
            pcVar7 = (char *)(*DAT_032ebcd4)(lVar3);
            if (pcVar7 != (char *)0x0) goto LAB_00a64049;
            puVar6 = local_68;
            puVar4 = local_58;
          }
          puVar8 = &DAT_00d5b2e8;
          pDVar5 = (DName *)operator+(puVar4,"`template-parameter",local_2c,puVar6,&DAT_00d5b2e8);
          puVar2 = (undefined4 *)DName::operator+(pDVar5,puVar6,puVar8);
        }
        else {
          local_30 = local_30 & 0xffff0000;
          local_34 = 0;
          puVar2 = (undefined4 *)getPrimaryDataType(local_60,&local_34);
        }
        local_20 = *puVar2;
        local_1c = puVar2[1];
      }
      if ((1 < (int)DAT_032ebcc0 - (int)local_38) && (*DAT_032ebcbc != 9)) {
        Replicator::operator+=((Replicator *)DAT_032ebcbc,(DName *)&local_20);
      }
      puVar2 = &local_20;
    }
    DName::operator+=((DName *)param_1,(DName *)puVar2);
    cVar1 = *(char *)(param_1 + 1);
  } while( true );
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getOperatorName(bool,bool *)
// 
// Library: Visual Studio 2008 Release

int ** __cdecl UnDecorator::getOperatorName(int **param_1,char param_2,undefined *param_3)

{
  bool bVar1;
  char cVar2;
  char *pcVar3;
  int **ppiVar4;
  undefined4 uVar5;
  DName *pDVar6;
  uint uVar7;
  int iVar8;
  int **ppiVar9;
  undefined *puVar10;
  char *pcVar11;
  int **ppiVar12;
  DNameStatus DVar13;
  undefined local_a4 [8];
  undefined local_9c [8];
  undefined local_94 [8];
  undefined local_8c [8];
  undefined local_84 [8];
  undefined local_7c [8];
  undefined local_74 [8];
  undefined local_6c [8];
  undefined local_64 [8];
  undefined local_5c [8];
  undefined local_54 [8];
  undefined local_4c [8];
  undefined local_44 [8];
  undefined local_3c [8];
  undefined local_34 [8];
  undefined local_2c [8];
  undefined local_24 [8];
  int *local_1c;
  int *local_18;
  int *local_14;
  int *local_10;
  int *local_c;
  int *local_8;
  
  cVar2 = *DAT_032ebcc0;
  local_8 = (int *)((uint)local_8 & 0xffff0000);
  local_18 = (int *)((uint)local_18 & 0xffff0000);
  bVar1 = false;
  pcVar3 = DAT_032ebcc0 + 1;
  local_c = (int *)0x0;
  local_1c = (int *)0x0;
  if (cVar2 < 'B') {
    if (cVar2 == 'A') {
LAB_00a646c7:
      cVar2 = *DAT_032ebcc0;
      DAT_032ebcc0 = pcVar3;
      DName::operator=((DName *)&local_c,*(char **)("operator" + cVar2 * 4 + 4));
      if (bVar1) {
        pcVar3 = DAT_032ebcc0;
        if (local_c != (int *)0x0) {
          local_8 = (int *)((uint)local_8 | 0x200);
        }
      }
      else {
LAB_00a641cb:
        pcVar3 = DAT_032ebcc0;
        if (local_c != (int *)0x0) {
          ppiVar4 = (int **)operator+(local_24,"operator",&local_c);
          local_c = *ppiVar4;
          local_8 = ppiVar4[1];
          pcVar3 = DAT_032ebcc0;
        }
      }
LAB_00a641f3:
      DAT_032ebcc0 = pcVar3;
      *param_1 = local_c;
LAB_00a641fb:
      param_1[1] = local_8;
      return param_1;
    }
    if (cVar2 == '\0') goto LAB_00a642e0;
    if ('/' < cVar2) {
      if (cVar2 < '2') {
        local_1c = (int *)0x0;
        if (param_2 != '\0') {
          DAT_032ebcc0 = pcVar3;
          uVar5 = getTemplateArgumentList(local_5c);
          pDVar6 = (DName *)operator+(local_a4,0x3c,uVar5);
          DName::operator+=((DName *)&local_1c,pDVar6);
          if ((local_1c != (int *)0x0) && (cVar2 = (**(code **)(*local_1c + 4))(), cVar2 == '>')) {
            DName::operator+=((DName *)&local_1c,' ');
          }
          DName::operator+=((DName *)&local_1c,'>');
          if (param_3 != (undefined *)0x0) {
            *param_3 = 1;
          }
          if (*DAT_032ebcc0 == '\0') {
            *param_1 = local_1c;
            local_8 = local_18;
            goto LAB_00a641fb;
          }
          pcVar3 = DAT_032ebcc0 + 1;
        }
        DAT_032ebcc0 = pcVar3;
        ppiVar4 = (int **)getZName(local_3c,0,0);
        local_c = *ppiVar4;
        local_8 = ppiVar4[1];
        DAT_032ebcc0 = pcVar3;
        if ((local_c != (int *)0x0) && (pcVar3[-1] == '1')) {
          ppiVar4 = (int **)operator+(local_8c,0x7e,&local_c);
          local_c = *ppiVar4;
          local_8 = ppiVar4[1];
        }
        pcVar3 = DAT_032ebcc0;
        if (local_1c != (int *)0x0) {
          DName::operator+=((DName *)&local_c,(DName *)&local_1c);
          pcVar3 = DAT_032ebcc0;
        }
        goto LAB_00a641f3;
      }
      if (cVar2 < ':') {
        pcVar11 = *(char **)(&DAT_00da4238 + *DAT_032ebcc0 * 4);
        DAT_032ebcc0 = pcVar3;
        goto LAB_00a641c3;
      }
    }
  }
  else {
    if (cVar2 == 'B') {
      bVar1 = true;
      goto LAB_00a646c7;
    }
    if (cVar2 < 'C') goto LAB_00a645c6;
    if (cVar2 < '[') goto LAB_00a646c7;
    if (cVar2 == '_') {
      cVar2 = *pcVar3;
      pcVar3 = DAT_032ebcc0 + 2;
      if (cVar2 < 'P') {
        if ('C' < cVar2) {
LAB_00a646a4:
          pcVar11 = *(char **)("__cdecl" + DAT_032ebcc0[1] * 4 + 4);
          DAT_032ebcc0 = pcVar3;
LAB_00a64361:
          DName::DName((DName *)param_1,pcVar11);
          return param_1;
        }
        if (cVar2 < ':') {
          if (cVar2 == '9') {
            pcVar11 = DAT_032ebcc0 + 1;
            DAT_032ebcc0 = pcVar3;
            DName::DName((DName *)&local_14,(&PTR_s___pascal_00da42c8)[*pcVar11]);
            local_8 = (int *)((uint)local_10 | 0x8000);
LAB_00a64397:
            *param_1 = local_14;
            goto LAB_00a641fb;
          }
          if (cVar2 == '\0') {
LAB_00a642e0:
            pcVar3 = pcVar3 + -1;
LAB_00a642e6:
            DAT_032ebcc0 = pcVar3;
            DVar13 = 1;
            goto LAB_00a642e8;
          }
          if ('/' < cVar2) {
            if (cVar2 < '7') {
              pcVar11 = (&PTR_s___pascal_00da42c8)[DAT_032ebcc0[1]];
              DAT_032ebcc0 = pcVar3;
              goto LAB_00a641c3;
            }
            if (cVar2 < '9') {
              pcVar11 = (&PTR_s___pascal_00da42c8)[DAT_032ebcc0[1]];
              DAT_032ebcc0 = pcVar3;
              goto LAB_00a64361;
            }
          }
        }
        else if (cVar2 == '?') {
          cVar2 = *pcVar3;
          pcVar3 = DAT_032ebcc0 + 3;
          if (cVar2 == '\0') goto LAB_00a642e0;
          if (cVar2 == '0') {
            uVar5 = 0;
            pcVar11 = "`anonymous namespace\'";
            DAT_032ebcc0 = pcVar3;
LAB_00a643cb:
            getStringEncoding(&local_14,pcVar11,uVar5);
            local_8 = (int *)((uint)local_10 | 0x1000);
            goto LAB_00a64397;
          }
        }
        else if ('@' < cVar2) {
          if (cVar2 < 'C') goto LAB_00a646a4;
          if (cVar2 == 'C') {
            uVar5 = 1;
            pcVar11 = "`string\'";
            DAT_032ebcc0 = pcVar3;
            goto LAB_00a643cb;
          }
        }
      }
      else if (cVar2 < 'U') {
        if ('R' < cVar2) goto LAB_00a646a4;
        ppiVar4 = param_1;
        if (cVar2 == 'P') {
          pcVar11 = DAT_032ebcc0 + 1;
          DAT_032ebcc0 = pcVar3;
          DName::operator=((DName *)&local_c,*(char **)("__cdecl" + *pcVar11 * 4 + 4));
          ppiVar9 = (int **)getOperatorName(local_84,0,0);
          local_1c = *ppiVar9;
          local_18 = ppiVar9[1];
          if ((local_1c == (int *)0x0) || (pcVar3 = DAT_032ebcc0, ((uint)local_18 & 0x400) == 0)) {
LAB_00a645cd:
            ppiVar12 = &local_1c;
            ppiVar9 = &local_c;
LAB_00a645d7:
            DName::operator+((DName *)ppiVar9,ppiVar4,ppiVar12);
            return param_1;
          }
        }
        else {
          if (cVar2 == 'Q') goto LAB_00a641f3;
          if (cVar2 == 'R') {
            pcVar11 = DAT_032ebcc0 + 1;
            DAT_032ebcc0 = pcVar3;
            DName::operator=((DName *)&local_c,*(char **)("__cdecl" + *pcVar11 * 4 + 4));
            if (*DAT_032ebcc0 == '\0') {
              DName::operator+((DName *)&local_c,param_1,1);
              return param_1;
            }
            uVar7 = (int)*DAT_032ebcc0 - 0x30;
            pcVar3 = DAT_032ebcc0;
            if ((-1 < (int)uVar7) && (uVar7 < 5)) {
              DName::operator=((DName *)&local_1c,(&PTR_s_Type_Descriptor__00da42ec)[uVar7]);
              pcVar3 = DAT_032ebcc0;
              iVar8 = (int)*DAT_032ebcc0;
              DAT_032ebcc0 = DAT_032ebcc0 + 1;
              if (iVar8 == 0x30) {
                getDataType(&local_14,0);
                ppiVar12 = &local_1c;
                ppiVar9 = &local_c;
                puVar10 = local_64;
                pDVar6 = (DName *)DName::operator+((DName *)&local_14,local_74,0x20);
                ppiVar9 = (int **)DName::operator+(pDVar6,puVar10,ppiVar9);
                goto LAB_00a645d7;
              }
              if (iVar8 == 0x31) {
                DName::operator+((DName *)&local_c,&local_14,&local_1c);
                uVar5 = 0x2c;
                puVar10 = local_4c;
                pDVar6 = (DName *)getSignedDimension(local_7c,puVar10,0x2c);
                pDVar6 = (DName *)DName::operator+(pDVar6,puVar10,uVar5);
                DName::operator+=((DName *)&local_14,pDVar6);
                uVar5 = 0x2c;
                puVar10 = local_2c;
                pDVar6 = (DName *)getSignedDimension(local_9c,puVar10,0x2c);
                pDVar6 = (DName *)DName::operator+(pDVar6,puVar10,uVar5);
                DName::operator+=((DName *)&local_14,pDVar6);
                uVar5 = 0x2c;
                puVar10 = local_6c;
                pDVar6 = (DName *)getSignedDimension(local_34,puVar10,0x2c);
                pDVar6 = (DName *)DName::operator+(pDVar6,puVar10,uVar5);
                DName::operator+=((DName *)&local_14,pDVar6);
                uVar5 = 0x29;
                puVar10 = local_44;
                pDVar6 = (DName *)getDimension(local_54,0,puVar10,0x29);
                pDVar6 = (DName *)DName::operator+(pDVar6,puVar10,uVar5);
                DName::operator+=((DName *)&local_14,pDVar6);
                DName::operator+((DName *)&local_14,param_1,0x27);
                return param_1;
              }
              if (iVar8 - 0x32U < 3) goto LAB_00a645cd;
              goto LAB_00a642e6;
            }
          }
        }
      }
      else if ('T' < cVar2) {
        if (cVar2 < 'W') {
          pcVar11 = *(char **)("__cdecl" + DAT_032ebcc0[1] * 4 + 4);
          DAT_032ebcc0 = pcVar3;
LAB_00a641c3:
          DName::operator=((DName *)&local_c,pcVar11);
          goto LAB_00a641cb;
        }
        if ('W' < cVar2) {
          if (cVar2 < 'Z') goto LAB_00a646a4;
          if (cVar2 == '_') {
            cVar2 = *pcVar3;
            pcVar3 = DAT_032ebcc0 + 3;
            if ('@' < cVar2) {
              if ('D' < cVar2) {
                if (cVar2 < 'G') {
                  pcVar11 = DAT_032ebcc0 + 2;
                  DAT_032ebcc0 = pcVar3;
                  DName::DName((DName *)&local_14,(&PTR_DAT_00da4310)[*pcVar11]);
                  if (*DAT_032ebcc0 == '?') {
                    pDVar6 = (DName *)getDecoratedName(local_94);
                    DName::operator+=((DName *)&local_14,pDVar6);
                    if (*DAT_032ebcc0 == '@') {
                      DAT_032ebcc0 = DAT_032ebcc0 + 1;
                    }
                  }
                  else {
                    pDVar6 = (DName *)getSymbolName(local_24);
                    DName::operator+=((DName *)&local_14,pDVar6);
                  }
                  DName::operator+=((DName *)&local_14,"\'\'");
                  *param_1 = local_14;
                  local_8 = local_10;
                  goto LAB_00a641fb;
                }
                if ('J' < cVar2) goto LAB_00a645c6;
              }
              pcVar11 = (&PTR_DAT_00da4310)[DAT_032ebcc0[2]];
              DAT_032ebcc0 = pcVar3;
              goto LAB_00a64361;
            }
          }
        }
      }
    }
  }
LAB_00a645c6:
  DAT_032ebcc0 = pcVar3;
  DVar13 = 2;
LAB_00a642e8:
  DName::DName((DName *)param_1,DVar13);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getTemplateName(bool)
// 
// Library: Visual Studio 2008 Release

int ** __cdecl UnDecorator::getTemplateName(int **param_1,char param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  char cVar4;
  int **ppiVar5;
  undefined4 uVar6;
  DName *pDVar7;
  undefined4 local_a4 [11];
  undefined4 local_78 [11];
  undefined4 local_4c [11];
  undefined local_20 [8];
  undefined local_18 [8];
  int *local_10;
  int *local_c;
  char local_5;
  
  uVar3 = DAT_032ebcbc;
  uVar2 = DAT_032ebcb8;
  uVar1 = DAT_032ebcb4;
  if ((*DAT_032ebcc0 == '?') && (DAT_032ebcc0[1] == '$')) {
    local_78[0] = 0xffffffff;
    local_4c[0] = 0xffffffff;
    local_a4[0] = 0xffffffff;
    DAT_032ebcb4 = local_78;
    DAT_032ebcb8 = local_4c;
    DAT_032ebcbc = local_a4;
    local_5 = '\0';
    if (DAT_032ebcc0[2] == '?') {
      DAT_032ebcc0 = DAT_032ebcc0 + 3;
      ppiVar5 = (int **)getOperatorName(local_18,1,&local_5);
    }
    else {
      DAT_032ebcc0 = DAT_032ebcc0 + 2;
      ppiVar5 = (int **)getZName(local_18,1,1);
    }
    local_10 = *ppiVar5;
    local_c = ppiVar5[1];
    if (local_10 == (int *)0x0) {
      DAT_032ebcd8 = 1;
    }
    if (local_5 == '\0') {
      uVar6 = getTemplateArgumentList(local_18);
      pDVar7 = (DName *)operator+(local_20,0x3c,uVar6);
      DName::operator+=((DName *)&local_10,pDVar7);
      if (local_10 != (int *)0x0) {
        cVar4 = (**(code **)(*local_10 + 4))();
        if (cVar4 == '>') {
          DName::operator+=((DName *)&local_10,' ');
        }
      }
      DName::operator+=((DName *)&local_10,'>');
      if ((param_2 != '\0') && (*DAT_032ebcc0 != '\0')) {
        DAT_032ebcc0 = DAT_032ebcc0 + 1;
      }
    }
    DAT_032ebcb4 = (undefined4 *)uVar1;
    DAT_032ebcb8 = (undefined4 *)uVar2;
    DAT_032ebcbc = (undefined4 *)uVar3;
    *param_1 = local_10;
    param_1[1] = local_c;
    return param_1;
  }
  DName::DName((DName *)param_1,2);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getZName(bool,bool)
// 
// Library: Visual Studio 2008 Release

void __cdecl UnDecorator::getZName(undefined4 *param_1,char param_2,char param_3)

{
  char cVar1;
  undefined4 *puVar2;
  uint uVar3;
  long lVar4;
  char *pcVar5;
  DName *pDVar6;
  DName *pDVar7;
  uint unaff_ESI;
  char *unaff_EDI;
  char *pcVar8;
  undefined *puVar9;
  DName local_3c [8];
  undefined4 *local_34;
  DName local_30 [4];
  uint local_2c;
  DName local_28 [8];
  undefined4 local_20;
  uint local_1c;
  char local_18 [16];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  cVar1 = *DAT_032ebcc0;
  local_34 = param_1;
  if ((int)cVar1 - 0x30U < 10) {
    DAT_032ebcc0 = DAT_032ebcc0 + 1;
    Replicator::operator[]((Replicator *)DAT_032ebcb8,param_1,(int)cVar1 - 0x30U);
    goto LAB_00a64a26;
  }
  local_20 = 0;
  local_1c = local_1c & 0xffff0000;
  if (cVar1 == '?') {
    puVar2 = (undefined4 *)getTemplateName(local_28,0);
    local_20 = *puVar2;
    local_1c = puVar2[1];
    pcVar8 = DAT_032ebcc0 + 1;
    if (*DAT_032ebcc0 != '@') {
      DName::operator=((DName *)&local_20,(*DAT_032ebcc0 != '\0') + 1);
      pcVar8 = DAT_032ebcc0;
    }
  }
  else {
    pcVar8 = "template-parameter-";
    uVar3 = und_strncmp((char *)0x13,unaff_EDI,unaff_ESI);
    if (uVar3 == 0) {
      DAT_032ebcc0 = DAT_032ebcc0 + 0x13;
    }
    else {
      pcVar8 = "generic-type-";
      uVar3 = und_strncmp((char *)0xd,unaff_EDI,unaff_ESI);
      if (uVar3 != 0) {
        if ((param_3 == '\0') || (cVar1 != '@')) {
          puVar2 = (undefined4 *)DName::DName(local_30,&DAT_032ebcc0,'@');
          local_20 = *puVar2;
          local_1c = puVar2[1];
          pcVar8 = DAT_032ebcc0;
        }
        else {
          local_1c = local_2c & 0xffff0000;
          DAT_032ebcc0 = DAT_032ebcc0 + 1;
          local_20 = 0;
          pcVar8 = DAT_032ebcc0;
        }
        goto LAB_00a649fe;
      }
      DAT_032ebcc0 = DAT_032ebcc0 + 0xd;
    }
    getSignedDimension(local_28);
    if ((DAT_032ebcd0 & 0x4000) == 0) {
      DName::operator=((DName *)&local_20,"`");
      pDVar7 = local_30;
      pDVar6 = local_3c;
    }
    else {
      DName::getString(local_28,local_18,0x10);
      lVar4 = _atol(local_18);
      pcVar5 = (char *)(*DAT_032ebcd4)(lVar4);
      if (pcVar5 != (char *)0x0) {
        DName::operator=((DName *)&local_20,pcVar5);
        pcVar8 = DAT_032ebcc0;
        goto LAB_00a649fe;
      }
      DName::operator=((DName *)&local_20,"`");
      pDVar7 = local_3c;
      pDVar6 = local_30;
    }
    puVar9 = &DAT_00d5b2e8;
    pDVar6 = (DName *)operator+(pDVar6,pcVar8,local_28,pDVar7,&DAT_00d5b2e8);
    pDVar7 = (DName *)DName::operator+(pDVar6,pDVar7,puVar9);
    DName::operator+=((DName *)&local_20,pDVar7);
    pcVar8 = DAT_032ebcc0;
  }
LAB_00a649fe:
  DAT_032ebcc0 = pcVar8;
  if ((param_2 != '\0') && (*DAT_032ebcb8 != 9)) {
    Replicator::operator+=((Replicator *)DAT_032ebcb8,(DName *)&local_20);
  }
  *local_34 = local_20;
  local_34[1] = local_1c;
LAB_00a64a26:
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getScopedName(void)
// 
// Library: Visual Studio 2008 Release

int * __cdecl UnDecorator::getScopedName(int *param_1)

{
  undefined4 uVar1;
  DName *pDVar2;
  DName *pDVar3;
  undefined *puVar4;
  undefined *puVar5;
  undefined *puVar6;
  int *piVar7;
  DNameStatus DVar8;
  undefined local_1c [8];
  undefined local_14 [8];
  DName local_c [8];
  
  *(undefined *)(param_1 + 1) = 0;
  param_1[1] = param_1[1] & 0xffff00ff;
  *param_1 = 0;
  uVar1 = getZName(local_c,1,0);
  FUN_00a625c8(uVar1);
  if ((*(char *)(param_1 + 1) == '\0') && (*DAT_032ebcc0 != '\0')) {
    if (*DAT_032ebcc0 == '@') goto LAB_00a64ab5;
    pDVar3 = local_c;
    puVar5 = &DAT_00da4598;
    puVar4 = local_14;
    piVar7 = param_1;
    pDVar2 = (DName *)getScope(local_1c,puVar4,&DAT_00da4598,pDVar3,param_1);
    pDVar2 = (DName *)DName::operator+(pDVar2,puVar4,puVar5);
    uVar1 = DName::operator+(pDVar2,pDVar3,piVar7);
    FUN_00a625c8(uVar1);
  }
  if (*DAT_032ebcc0 != '@') {
    if (*DAT_032ebcc0 == '\0') {
      if (*param_1 != 0) {
        puVar4 = local_1c;
        puVar6 = &DAT_00da4598;
        puVar5 = local_14;
        piVar7 = param_1;
        pDVar3 = (DName *)DName::DName(local_c,1);
        pDVar3 = (DName *)DName::operator+(pDVar3,puVar5,puVar6);
        uVar1 = DName::operator+(pDVar3,puVar4,piVar7);
        FUN_00a625c8(uVar1);
        return param_1;
      }
      DVar8 = 1;
    }
    else {
      DVar8 = 2;
    }
    DName::operator=((DName *)param_1,DVar8);
    return param_1;
  }
LAB_00a64ab5:
  DAT_032ebcc0 = DAT_032ebcc0 + 1;
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getECSUDataType(void)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl UnDecorator::getECSUDataType(undefined4 *param_1)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  uint uVar4;
  uint uVar5;
  char *pcVar6;
  undefined local_1c [8];
  undefined4 local_14;
  uint local_10;
  undefined4 local_c;
  uint local_8;
  
  pcVar6 = DAT_032ebcc0;
  uVar5 = 1;
  uVar4 = ~(DAT_032ebcd0 >> 0xf) & 1;
  if ((uVar4 == 0) || ((DAT_032ebcd0 & 0x1000) != 0)) {
    uVar5 = 0;
  }
  cVar1 = *DAT_032ebcc0;
  local_c = 0;
  local_8 = local_8 & 0xffff0000;
  DAT_032ebcc0 = DAT_032ebcc0 + 1;
  if (cVar1 == '\0') {
    DAT_032ebcc0 = pcVar6;
    DName::DName((DName *)param_1,"unknown ecsu\'");
    return param_1;
  }
  if (cVar1 == 'T') {
    pcVar6 = "union ";
  }
  else if (cVar1 == 'U') {
    pcVar6 = "struct ";
  }
  else if (cVar1 == 'V') {
    pcVar6 = "class ";
  }
  else {
    if (cVar1 == 'W') {
      uVar2 = getEnumType(&local_14);
      puVar3 = (undefined4 *)operator+(local_1c,"enum ",uVar2);
      local_c = *puVar3;
      local_8 = puVar3[1];
      goto LAB_00a64bb5;
    }
    if (cVar1 == 'X') {
      pcVar6 = "coclass ";
    }
    else {
      uVar4 = uVar5;
      if (cVar1 != 'Y') goto LAB_00a64bb5;
      pcVar6 = "cointerface ";
    }
  }
  DName::operator=((DName *)&local_c,pcVar6);
  uVar4 = uVar5;
LAB_00a64bb5:
  local_14 = 0;
  local_10 = local_10 & 0xffff0000;
  if (uVar4 != 0) {
    local_14 = local_c;
    local_10 = local_8;
  }
  getScopedName(&local_c);
  DName::operator+=((DName *)&local_14,(DName *)&local_c);
  *param_1 = local_14;
  param_1[1] = local_10;
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getSymbolName(void)
// 
// Library: Visual Studio 2008 Release

undefined4 __cdecl UnDecorator::getSymbolName(undefined4 param_1)

{
  if (*DAT_032ebcc0 == '?') {
    if (DAT_032ebcc0[1] == '$') {
      getTemplateName(param_1,1);
    }
    else {
      DAT_032ebcc0 = DAT_032ebcc0 + 1;
      getOperatorName(param_1,0,0);
    }
  }
  else {
    getZName(param_1,1,0);
  }
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getBasedType(void)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl UnDecorator::getBasedType(undefined4 *param_1)

{
  char cVar1;
  char *pcVar2;
  DName *pDVar3;
  undefined local_14 [8];
  undefined4 local_c;
  undefined4 local_8;
  
  pcVar2 = UScore(0);
  DName::DName((DName *)&local_c,pcVar2);
  if (*DAT_032ebcc0 == '\0') {
    DName::operator+=((DName *)&local_c,1);
  }
  else {
    cVar1 = *DAT_032ebcc0;
    DAT_032ebcc0 = DAT_032ebcc0 + 1;
    if (cVar1 == '0') {
      DName::operator+=((DName *)&local_c,"void");
    }
    else if (cVar1 == '2') {
      pDVar3 = (DName *)getScopedName(local_14);
      DName::operator+=((DName *)&local_c,pDVar3);
    }
    else if (cVar1 == '5') {
      DName::DName((DName *)param_1,2);
      return param_1;
    }
  }
  DName::operator+=((DName *)&local_c,") ");
  *param_1 = local_c;
  param_1[1] = local_8;
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::composeDeclaration(class DName const &)
// 
// Library: Visual Studio 2008 Release

int * __cdecl UnDecorator::composeDeclaration(int *param_1,int *param_2)

{
  uint uVar1;
  uint uVar2;
  undefined4 uVar3;
  int *piVar4;
  DName *pDVar5;
  undefined4 *puVar6;
  int *piVar7;
  uint uVar8;
  bool bVar9;
  undefined *puVar10;
  undefined4 uVar11;
  undefined *puVar12;
  undefined4 *puVar13;
  undefined *puVar14;
  undefined4 uVar15;
  char *pcVar16;
  undefined *puVar17;
  undefined *puVar18;
  undefined local_70 [8];
  undefined local_68 [8];
  undefined local_60 [8];
  undefined local_58 [8];
  undefined4 local_50;
  uint local_4c;
  undefined4 local_48;
  uint local_44;
  undefined4 local_40;
  uint local_3c;
  int local_38;
  uint local_34;
  undefined4 local_30;
  uint local_2c;
  int local_28;
  uint local_24;
  undefined local_20 [4];
  int local_1c;
  undefined4 local_18;
  uint local_14;
  undefined local_10 [4];
  uint local_c;
  uint local_8;
  
  local_24 = local_24 & 0xffff0000;
  local_28 = 0;
  uVar1 = getTypeEncoding();
  if ((*param_2 == 0) || (local_1c = 1, (param_2[1] & 0x200U) == 0)) {
    local_1c = 0;
  }
  if (uVar1 == 0xffff) {
    DName::DName((DName *)param_1,2);
    return param_1;
  }
  if (uVar1 == 0xfffe) {
    operator+(param_1,1,param_2);
    return param_1;
  }
  if (uVar1 == 0xfffd) {
    *param_1 = *param_2;
    local_24 = param_2[1];
    goto LAB_00a65881;
  }
  local_8 = uVar1 & 0x8000;
  if (local_8 == 0) {
LAB_00a65324:
    DName::operator+=((DName *)&local_28,(DName *)param_2);
    if (local_8 == 0) {
      if (((uVar1 & 0x7c00) == 0x6800) || ((uVar1 & 0x7c00) == 0x7000)) {
        getVfTableType(param_1,&local_28);
        return param_1;
      }
      if ((uVar1 & 0x7c00) == 0x6000) {
        puVar18 = &DAT_00da46e8;
        piVar4 = param_1;
        uVar3 = FID_conflict_getGuardNumber(local_70,param_1,&DAT_00da46e8);
        puVar17 = local_68;
        pDVar5 = (DName *)DName::operator+((DName *)&local_28,local_60,0x7b);
        pDVar5 = (DName *)DName::operator+(pDVar5,puVar17,uVar3);
        DName::operator+(pDVar5,piVar4,puVar18);
        return param_1;
      }
      if ((uVar1 & 0x7c00) == 0x7c00) {
        getVdispMapType(param_1,&local_28);
        return param_1;
      }
      uVar2 = uVar1 & 0x6000;
    }
    else {
      uVar2 = (uVar1 & 0x1800) - 0x800;
    }
    if (uVar2 == 0) {
      uVar2 = uVar1 & 0x400;
    }
    else {
      uVar2 = uVar1 & 0x1000;
    }
    if ((uVar2 == 0) || ((uVar1 & 0x1b00) != 0x1000 || local_8 == 0)) {
      if (local_8 == 0) {
        uVar2 = uVar1 & 0x6000;
      }
      else {
        uVar2 = (uVar1 & 0x1800) - 0x800;
      }
      if (uVar2 == 0) {
        uVar2 = uVar1 & 0x400;
      }
      else {
        uVar2 = uVar1 & 0x1000;
      }
      if ((uVar2 != 0) && ((uVar1 & 0x1b00) == 0x1100 && local_8 != 0)) {
        pcVar16 = "`template static data member constructor helper\'";
        goto LAB_00a654cb;
      }
      if (local_8 == 0) {
        uVar2 = uVar1 & 0x6000;
      }
      else {
        uVar2 = (uVar1 & 0x1800) - 0x800;
      }
      if (uVar2 == 0) {
        uVar2 = uVar1 & 0x400;
      }
      else {
        uVar2 = uVar1 & 0x1000;
      }
      if ((uVar2 != 0) && ((uVar1 & 0x1b00) == 0x1200 && local_8 != 0)) {
        pcVar16 = "`template static data member destructor helper\'";
        goto LAB_00a654cb;
      }
      if (local_8 == 0) {
        if ((uVar1 & 0x7c00) == 0x7800) goto LAB_00a65139;
        goto LAB_00a654ea;
      }
LAB_00a654f0:
      uVar2 = (uVar1 & 0x1800) - 0x800;
    }
    else {
      pcVar16 = "`local static destructor helper\'";
LAB_00a654cb:
      DName::operator+=((DName *)&local_28,pcVar16);
LAB_00a654ea:
      if (local_8 != 0) goto LAB_00a654f0;
      uVar2 = uVar1 & 0x6000;
    }
    if (uVar2 == 0) {
      uVar2 = uVar1 & 0x400;
    }
    else {
      uVar2 = uVar1 & 0x1000;
    }
    if ((uVar2 == 0) ||
       (((uVar1 & 0x1b00) != 0x1100 || local_8 == 0 && ((uVar1 & 0x1b00) != 0x1200 || local_8 == 0))
       )) {
      piVar4 = (int *)getExternalDataType(local_70,&local_28);
    }
    else {
      piVar4 = (int *)operator+(local_70,&DAT_026b6df4,&local_28);
    }
LAB_00a64f52:
    local_28 = *piVar4;
    local_24 = piVar4[1];
  }
  else {
    local_14 = uVar1 & 0x1800;
    local_c = (uint)(local_14 == 0x800);
    if (local_c == 0) {
      uVar2 = uVar1 & 0x1000;
    }
    else {
      uVar2 = uVar1 & 0x400;
    }
    if ((uVar2 != 0) && ((uVar1 & 0x1b00) == 0x1000)) goto LAB_00a65324;
    if (local_c == 0) {
      uVar2 = uVar1 & 0x1000;
    }
    else {
      uVar2 = uVar1 & 0x400;
    }
    if ((uVar2 != 0) && (((uVar1 & 0x1b00) == 0x1100 || ((uVar1 & 0x1b00) == 0x1200))))
    goto LAB_00a65324;
    if ((uVar1 & 0x4000) != 0) {
      if (((~(DAT_032ebcd0 >> 1) & 1) == 0) || ((~(DAT_032ebcd0 >> 3) & 1) == 0)) {
        pDVar5 = (DName *)getBasedType(&local_50);
        DName::operator|=((DName *)&local_28,pDVar5);
      }
      else {
        uVar3 = getBasedType(&local_50);
        piVar4 = (int *)operator+(&local_48,0x20,uVar3);
        local_28 = *piVar4;
        local_24 = piVar4[1];
      }
    }
    if (local_c == 0) {
      uVar2 = uVar1 & 0x1000;
    }
    else {
      uVar2 = uVar1 & 0x400;
    }
    if ((uVar2 == 0) || (local_14 != 0x1800)) {
      local_44 = local_44 & 0xffff0000;
      local_3c = local_3c & 0xffff0000;
      local_14 = local_14 & 0xffff0000;
      local_4c = local_4c & 0xffff0000;
      local_2c = local_2c & 0xffff0000;
      local_48 = 0;
      local_40 = 0;
      local_18 = 0;
      local_50 = 0;
      local_30 = 0;
      if (local_c == 0) {
        uVar2 = uVar1 & 0x1000;
      }
      else {
        uVar2 = uVar1 & 0x400;
      }
      if (uVar2 != 0) {
        if (local_c != 0) {
          if ((uVar1 & 0x700) == 0x600) {
            puVar6 = (undefined4 *)getDisplacement(&local_38);
            local_48 = *puVar6;
            local_44 = puVar6[1];
            puVar6 = (undefined4 *)getDisplacement(&local_38);
            local_40 = *puVar6;
            local_3c = puVar6[1];
            puVar6 = (undefined4 *)getDisplacement(&local_38);
          }
          else {
            if ((local_c == 0) || ((uVar1 & 0x700) != 0x500)) goto LAB_00a65008;
            puVar6 = (undefined4 *)getDisplacement(&local_38);
          }
          local_18 = *puVar6;
          local_14 = puVar6[1];
        }
LAB_00a65008:
        puVar6 = (undefined4 *)getDisplacement(&local_38);
        local_50 = *puVar6;
        local_4c = puVar6[1];
      }
      if ((local_c != 0) && ((local_c == 0 || ((uVar1 & 0x700) != 0x200)))) {
        if (((byte)DAT_032ebcd0 & 0x60) == 0x60) {
          pDVar5 = (DName *)getThisType(&local_38);
          DName::operator|=((DName *)&local_30,pDVar5);
        }
        else {
          puVar6 = (undefined4 *)getThisType(&local_38);
          local_30 = *puVar6;
          local_2c = puVar6[1];
        }
      }
      if (((~(DAT_032ebcd0 >> 1) & 1) == 0) || ((~(DAT_032ebcd0 >> 4) & 1) == 0)) {
        pDVar5 = (DName *)getCallingConvention(local_58);
        DName::operator|=((DName *)&local_28,pDVar5);
      }
      else {
        piVar4 = &local_28;
        piVar7 = &local_38;
        pDVar5 = (DName *)getCallingConvention(local_58,piVar7,piVar4);
        piVar4 = (int *)DName::operator+(pDVar5,piVar7,piVar4);
        local_28 = *piVar4;
        local_24 = piVar4[1];
      }
      if (*param_2 != 0) {
        if ((local_28 == 0) || ((DAT_032ebcd0 & 0x1000) != 0)) {
          local_28 = *param_2;
          local_24 = param_2[1];
        }
        else {
          pDVar5 = (DName *)operator+(local_58,0x20,param_2);
          DName::operator+=((DName *)&local_28,pDVar5);
        }
      }
      local_34 = local_34 & 0xffff0000;
      piVar4 = (int *)0x0;
      local_38 = 0;
      if (local_1c == 0) {
        piVar7 = (int *)HeapManager::getMemory((HeapManager *)&DAT_032ebca0,8,0);
        piVar4 = (int *)0x0;
        if (piVar7 != (int *)0x0) {
          *piVar7 = 0;
          *(undefined *)(piVar7 + 1) = 0;
          piVar7[1] = piVar7[1] & 0xffff00ff;
          piVar4 = piVar7;
        }
        piVar7 = (int *)getReturnType(local_58,piVar4);
        local_38 = *piVar7;
        local_34 = piVar7[1];
LAB_00a65182:
        uVar2 = local_c;
        if (local_c == 0) {
          uVar8 = uVar1 & 0x1000;
        }
        else {
          uVar8 = uVar1 & 0x400;
        }
        if (uVar8 != 0) {
          if (local_c == 0) {
LAB_00a65249:
            DName::operator+=((DName *)&local_28,"`adjustor{");
          }
          else {
            if ((uVar1 & 0x700) == 0x600) {
              uVar3 = 0x2c;
              puVar17 = local_58;
              puVar6 = &local_18;
              puVar18 = local_20;
              uVar15 = 0x2c;
              puVar14 = local_10;
              puVar13 = &local_40;
              puVar12 = local_60;
              uVar11 = 0x2c;
              puVar10 = local_68;
              pDVar5 = (DName *)operator+(local_70,"`vtordispex{",&local_48,puVar10,0x2c,puVar12,
                                          puVar13,puVar14,0x2c,puVar18,puVar6,puVar17,0x2c);
              pDVar5 = (DName *)DName::operator+(pDVar5,puVar10,uVar11);
              pDVar5 = (DName *)DName::operator+(pDVar5,puVar12,puVar13);
              pDVar5 = (DName *)DName::operator+(pDVar5,puVar14,uVar15);
              pDVar5 = (DName *)DName::operator+(pDVar5,puVar18,puVar6);
            }
            else {
              if ((local_c == 0) || ((uVar1 & 0x700) != 0x500)) goto LAB_00a65249;
              uVar3 = 0x2c;
              puVar17 = local_70;
              pDVar5 = (DName *)operator+(local_68,"`vtordisp{",&local_18,puVar17,0x2c);
            }
            pDVar5 = (DName *)DName::operator+(pDVar5,puVar17,uVar3);
            DName::operator+=((DName *)&local_28,pDVar5);
          }
          pDVar5 = (DName *)DName::operator+((DName *)&local_50,local_70,&DAT_00da46ec);
          DName::operator+=((DName *)&local_28,pDVar5);
        }
        uVar11 = 0x29;
        puVar17 = local_70;
        uVar3 = getArgumentTypes(local_68,puVar17,0x29);
        pDVar5 = (DName *)operator+(local_60,0x28,uVar3);
        pDVar5 = (DName *)DName::operator+(pDVar5,puVar17,uVar11);
        DName::operator+=((DName *)&local_28,pDVar5);
        if ((uVar2 != 0) && ((uVar1 & 0x700) != 0x200)) {
          DName::operator+=((DName *)&local_28,(DName *)&local_30);
        }
        if ((~(DAT_032ebcd0 >> 8) & 1) == 0) {
          pDVar5 = (DName *)getThrowTypes(local_70);
          DName::operator|=((DName *)&local_28,pDVar5);
        }
        else {
          pDVar5 = (DName *)getThrowTypes(local_70);
          DName::operator+=((DName *)&local_28,pDVar5);
        }
        if (((~(DAT_032ebcd0 >> 2) & 1) != 0) && (piVar4 != (int *)0x0)) {
          *piVar4 = local_28;
          piVar4[1] = local_24;
          local_28 = local_38;
          local_24 = local_34;
        }
        goto LAB_00a65581;
      }
      uVar3 = getReturnType(local_58,0);
      pDVar5 = (DName *)operator+(local_20,&DAT_026b6df4,uVar3);
      DName::operator+=((DName *)&local_28,pDVar5);
      if ((DAT_032ebcd0 & 0x1000) == 0) goto LAB_00a65182;
LAB_00a65139:
      *param_1 = local_28;
      goto LAB_00a65881;
    }
    uVar3 = FID_conflict_getGuardNumber(&local_50);
    puVar6 = &local_48;
    pDVar5 = (DName *)DName::operator+((DName *)param_2,&local_40,0x7b);
    pDVar5 = (DName *)DName::operator+(pDVar5,puVar6,uVar3);
    DName::operator+=((DName *)&local_28,pDVar5);
    getVCallThunkType(&local_50);
    if ((DAT_032ebcd0 & 0x1000) == 0) {
      puVar17 = &DAT_00da46ec;
      puVar6 = &local_48;
      pDVar5 = (DName *)operator+(&local_40,0x2c,&local_50,puVar6,&DAT_00da46ec);
      pDVar5 = (DName *)DName::operator+(pDVar5,puVar6,puVar17);
      DName::operator+=((DName *)&local_28,pDVar5);
    }
    DName::operator+=((DName *)&local_28,"}\'");
    getCallingConvention(&local_50);
    if ((((~(DAT_032ebcd0 >> 1) & 1) != 0) && ((~(DAT_032ebcd0 >> 4) & 1) != 0)) &&
       ((DAT_032ebcd0 & 0x1000) == 0)) {
      piVar4 = &local_28;
      puVar6 = &local_48;
      uVar3 = 0x20;
      puVar13 = &local_40;
      pDVar5 = (DName *)operator+(&local_38,0x20,&local_50,puVar13,0x20,puVar6,piVar4);
      pDVar5 = (DName *)DName::operator+(pDVar5,puVar13,uVar3);
      piVar4 = (int *)DName::operator+(pDVar5,puVar6,piVar4);
      goto LAB_00a64f52;
    }
  }
LAB_00a65581:
  if (local_8 == 0) {
    uVar2 = uVar1 & 0x6000;
  }
  else {
    uVar2 = (uVar1 & 0x1800) - 0x800;
  }
  if (uVar2 == 0) {
    if ((~(DAT_032ebcd0 >> 9) & 1) != 0) {
      if (local_8 == 0) {
        uVar2 = uVar1 & 0x6000;
      }
      else {
        uVar2 = (uVar1 & 0x1800) - 0x800;
      }
      if (uVar2 == 0) {
        if (local_8 == 0) {
          bVar9 = true;
        }
        else {
          bVar9 = (uVar1 & 0x700) == 0x200;
        }
        if (bVar9) {
          piVar4 = (int *)operator+(local_70,"static ",&local_28);
          local_28 = *piVar4;
          local_24 = piVar4[1];
        }
      }
      if (local_8 == 0) {
LAB_00a65638:
        uVar2 = uVar1 & 0x6000;
LAB_00a6563f:
        if (uVar2 == 0) {
          uVar2 = uVar1 & 0x400;
        }
        else {
          uVar2 = uVar1 & 0x1000;
        }
        if (uVar2 == 0) goto LAB_00a656f6;
        if (local_8 == 0) {
          uVar2 = uVar1 & 0x6000;
        }
        else {
          uVar2 = (uVar1 & 0x1800) - 0x800;
        }
        if ((uVar2 != 0) || ((uVar1 & 0x700) != 0x500)) {
          if (local_8 == 0) {
            uVar2 = uVar1 & 0x6000;
          }
          else {
            uVar2 = (uVar1 & 0x1800) - 0x800;
          }
          if ((uVar2 != 0) || ((uVar1 & 0x700) != 0x600)) {
            if (local_8 == 0) {
              uVar2 = uVar1 & 0x6000;
            }
            else {
              uVar2 = (uVar1 & 0x1800) - 0x800;
            }
            if ((uVar2 != 0) || ((uVar1 & 0x700) != 0x400)) goto LAB_00a656f6;
          }
        }
      }
      else if ((uVar1 & 0x700) != 0x100) {
        if (local_8 == 0) goto LAB_00a65638;
        uVar2 = (uVar1 & 0x1800) - 0x800;
        goto LAB_00a6563f;
      }
      piVar4 = (int *)operator+(local_70,"virtual ",&local_28);
      local_28 = *piVar4;
      local_24 = piVar4[1];
    }
LAB_00a656f6:
    if ((~(DAT_032ebcd0 >> 7) & 1) != 0) {
      if (local_8 == 0) {
        uVar2 = uVar1 & 0x6000;
      }
      else {
        uVar2 = (uVar1 & 0x1800) - 0x800;
      }
      if (uVar2 == 0) {
        if (local_8 == 0) {
          bVar9 = (uVar1 & 0x1800) == 0x800;
        }
        else {
          bVar9 = ((byte)uVar1 & 0xc0) == 0x40;
        }
        if (!bVar9) goto LAB_00a65754;
        pcVar16 = "private: ";
LAB_00a657e3:
        piVar4 = (int *)operator+(local_70,pcVar16,&local_28);
        local_28 = *piVar4;
        local_24 = piVar4[1];
      }
      else {
LAB_00a65754:
        if (local_8 == 0) {
          uVar2 = uVar1 & 0x6000;
        }
        else {
          uVar2 = (uVar1 & 0x1800) - 0x800;
        }
        if (uVar2 == 0) {
          if (local_8 == 0) {
            bVar9 = (uVar1 & 0x1800) == 0x1000;
          }
          else {
            bVar9 = ((byte)uVar1 & 0xc0) == 0x80;
          }
          if (bVar9) {
            pcVar16 = "protected: ";
            goto LAB_00a657e3;
          }
        }
        if (local_8 == 0) {
          uVar2 = uVar1 & 0x6000;
        }
        else {
          uVar2 = (uVar1 & 0x1800) - 0x800;
        }
        if (uVar2 == 0) {
          if (local_8 == 0) {
            uVar2 = uVar1 & 0x1800;
          }
          else {
            uVar2 = uVar1 & 0xc0;
          }
          if (uVar2 == 0) {
            pcVar16 = "public: ";
            goto LAB_00a657e3;
          }
        }
      }
    }
  }
  if (local_8 == 0) {
    uVar2 = uVar1 & 0x6000;
  }
  else {
    uVar2 = (uVar1 & 0x1800) - 0x800;
  }
  if (uVar2 == 0) {
    uVar2 = uVar1 & 0x400;
  }
  else {
    uVar2 = uVar1 & 0x1000;
  }
  if ((uVar2 != 0) && ((DAT_032ebcd0 & 0x1000) == 0)) {
    piVar4 = (int *)operator+(local_70,"[thunk]:",&local_28);
    local_28 = *piVar4;
    local_24 = piVar4[1];
  }
  if ((uVar1 & 0x10000) != 0) {
    piVar4 = (int *)operator+(local_70,"extern \"C\" ",&local_28);
    local_28 = *piVar4;
    local_24 = piVar4[1];
  }
  *param_1 = local_28;
LAB_00a65881:
  param_1[1] = local_24;
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getDecoratedName(void)
// 
// Library: Visual Studio 2008 Release

int * __cdecl UnDecorator::getDecoratedName(int *param_1)

{
  char *pcVar1;
  int *piVar2;
  undefined *puVar3;
  DName *pDVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  undefined *puVar8;
  DNameStatus DVar9;
  undefined local_28 [8];
  undefined local_20 [8];
  int local_18;
  uint local_14;
  int local_10;
  uint local_c;
  int local_8;
  
  if ((DAT_032ebcd0 & 0x2000) != 0) {
    DAT_032ebcd0 = DAT_032ebcd0 & 0xffffdfff;
    getDataType(&local_18,0);
    DAT_032ebcd0 = DAT_032ebcd0 | 0x2000;
LAB_00a658be:
    *param_1 = local_18;
    param_1[1] = local_14;
    return param_1;
  }
  if (*DAT_032ebcc0 == '?') {
    pcVar1 = DAT_032ebcc0 + 1;
    if ((*pcVar1 == '?') && (DAT_032ebcc0[2] == '?')) {
      DAT_032ebcc0 = pcVar1;
      getDecoratedName(&local_18);
      for (; *DAT_032ebcc0 != '\0'; DAT_032ebcc0 = DAT_032ebcc0 + 1) {
      }
      goto LAB_00a658be;
    }
    DAT_032ebcc0 = pcVar1;
    getSymbolName(&local_10);
    uVar5 = local_c;
    iVar6 = local_10;
    if ((local_10 == 0) || ((local_c & 0x200) == 0)) {
      local_8 = 0;
    }
    else {
      local_8 = 1;
    }
    uVar7 = local_c >> 0xf;
    if ('\x01' < (char)local_c) goto LAB_00a65941;
    if (((*DAT_032ebcc0 != '\0') && (*DAT_032ebcc0 != '@')) && (getScope(&local_18), local_18 != 0))
    {
      if (DAT_032ebcd8 == '\0') {
        puVar8 = local_28;
        puVar3 = local_20;
      }
      else {
        DAT_032ebcd8 = '\0';
        piVar2 = (int *)DName::operator+((DName *)&local_10,local_20,&local_18);
        iVar6 = *piVar2;
        uVar5 = piVar2[1];
        local_10 = iVar6;
        local_c = uVar5;
        if (*DAT_032ebcc0 == '@') goto LAB_00a659fb;
        piVar2 = (int *)getScope(local_20);
        local_18 = *piVar2;
        local_14 = piVar2[1];
        puVar8 = local_20;
        puVar3 = local_28;
      }
      piVar2 = &local_10;
      pDVar4 = (DName *)DName::operator+((DName *)&local_18,puVar3,&DAT_00da4598);
      piVar2 = (int *)DName::operator+(pDVar4,puVar8,piVar2);
      uVar5 = piVar2[1];
      iVar6 = *piVar2;
      local_10 = iVar6;
      local_c = uVar5;
    }
LAB_00a659fb:
    if ((local_8 != 0) && (iVar6 != 0)) {
      uVar5 = uVar5 | 0x200;
      local_c = uVar5;
    }
    if ((uVar7 & 1) != 0) {
      uVar5 = uVar5 | 0x8000;
      local_c = uVar5;
    }
    if ((iVar6 == 0) || ((uVar5 & 0x1000) != 0)) goto LAB_00a65941;
    if (*DAT_032ebcc0 != '\0') {
      if (*DAT_032ebcc0 != '@') goto LAB_00a65a40;
      DAT_032ebcc0 = DAT_032ebcc0 + 1;
    }
    if ((((DAT_032ebcd0 & 0x1000) == 0) || (local_8 != 0)) || ((uVar5 & 0x8000) != 0)) {
      composeDeclaration(param_1,&local_10);
      return param_1;
    }
    local_18 = 0;
    local_14 = local_14 & 0xffff0000;
    composeDeclaration(local_28,&local_18);
LAB_00a65941:
    *param_1 = iVar6;
    param_1[1] = uVar5;
    return param_1;
  }
  if (*DAT_032ebcc0 == '\0') {
    DVar9 = 1;
    goto LAB_00a65a91;
  }
LAB_00a65a40:
  DVar9 = 2;
LAB_00a65a91:
  DName::DName((DName *)param_1,DVar9);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getScope(void)
// 
// Library: Visual Studio 2008 Release

int * __cdecl UnDecorator::getScope(int *param_1)

{
  char cVar1;
  bool bVar2;
  DName *pDVar3;
  DName *pDVar4;
  undefined4 uVar5;
  char *pcVar6;
  undefined *puVar7;
  undefined4 uVar8;
  undefined *puVar9;
  int *piVar10;
  DNameStatus DVar11;
  undefined local_9c [8];
  undefined local_94 [8];
  undefined local_8c [8];
  undefined local_84 [8];
  undefined local_7c [8];
  undefined local_74 [8];
  undefined local_6c [8];
  undefined local_64 [8];
  undefined local_5c [8];
  undefined local_54 [8];
  undefined local_4c [8];
  undefined local_44 [8];
  undefined local_3c [8];
  undefined local_34 [8];
  undefined local_2c [8];
  undefined local_24 [8];
  DName local_1c [8];
  DName local_14 [8];
  DName local_c [8];
  
  *(undefined *)(param_1 + 1) = 0;
  param_1[1] = param_1[1] & 0xffff00ff;
  *param_1 = 0;
  bVar2 = false;
LAB_00a65cb5:
  do {
    while( true ) {
      if (((*(char *)(param_1 + 1) != '\0') || (*DAT_032ebcc0 == '\0')) || (*DAT_032ebcc0 == '@')) {
        if (*DAT_032ebcc0 == '\0') {
          if (*param_1 != 0) {
            pDVar3 = local_1c;
            puVar9 = &DAT_00da4598;
            puVar7 = local_24;
            piVar10 = param_1;
            pDVar4 = (DName *)DName::DName(local_14,1);
            pDVar4 = (DName *)DName::operator+(pDVar4,puVar7,puVar9);
            uVar5 = DName::operator+(pDVar4,pDVar3,piVar10);
            FUN_00a625c8(uVar5);
            return param_1;
          }
          DVar11 = 1;
        }
        else {
          if (*DAT_032ebcc0 == '@') {
            return param_1;
          }
          DVar11 = 2;
        }
        DName::operator=((DName *)param_1,DVar11);
        return param_1;
      }
      if ((DAT_032ebcd8 != '\0') && (DAT_032ebcd9 == '\0')) {
        return param_1;
      }
      if (*param_1 != 0) {
        uVar5 = operator+(local_94,&DAT_00da4598,param_1);
        FUN_00a625c8(uVar5);
        if (bVar2) {
          uVar5 = operator+(local_7c,0x5b,param_1);
          FUN_00a625c8(uVar5);
          bVar2 = false;
        }
      }
      piVar10 = param_1;
      if (*DAT_032ebcc0 == '?') break;
      puVar7 = local_24;
      pDVar3 = local_1c;
LAB_00a65c9a:
      pDVar3 = (DName *)getZName(pDVar3,1,0,puVar7,param_1);
LAB_00a65ca6:
      uVar5 = DName::operator+(pDVar3,puVar7,piVar10);
      FUN_00a625c8(uVar5);
    }
    pcVar6 = DAT_032ebcc0 + 1;
    cVar1 = *pcVar6;
    if (cVar1 == '$') {
      puVar7 = local_6c;
      pDVar3 = local_14;
      goto LAB_00a65c9a;
    }
    if (cVar1 != '%') {
      if (cVar1 == '?') {
        if ((DAT_032ebcc0[2] != '_') || (DAT_032ebcc0[3] != '?')) {
          puVar7 = local_64;
          uVar8 = 0x27;
          puVar9 = local_34;
          DAT_032ebcc0 = pcVar6;
          uVar5 = getDecoratedName(local_3c,puVar9,0x27,puVar7,param_1);
          pDVar3 = (DName *)operator+(local_4c,0x60,uVar5);
          pDVar3 = (DName *)DName::operator+(pDVar3,puVar9,uVar8);
          goto LAB_00a65ca6;
        }
        puVar7 = local_54;
        DAT_032ebcc0 = DAT_032ebcc0 + 2;
        pDVar3 = (DName *)getOperatorName(local_2c,0,0,puVar7,param_1);
        uVar5 = DName::operator+(pDVar3,puVar7,piVar10);
        FUN_00a625c8(uVar5);
        if (*DAT_032ebcc0 == '@') {
          DAT_032ebcc0 = DAT_032ebcc0 + 1;
        }
      }
      else {
        if (cVar1 == 'A') goto LAB_00a65c42;
        if (cVar1 != 'I') {
          puVar7 = local_8c;
          DAT_032ebcc0 = pcVar6;
          pDVar3 = (DName *)getLexicalFrame(local_9c,puVar7);
          goto LAB_00a65ca6;
        }
        puVar7 = local_84;
        uVar5 = 0x5d;
        puVar9 = local_44;
        DAT_032ebcc0 = DAT_032ebcc0 + 2;
        pDVar3 = (DName *)getZName(local_74,1,0,puVar9,0x5d,puVar7,param_1);
        pDVar3 = (DName *)DName::operator+(pDVar3,puVar9,uVar5);
        uVar5 = DName::operator+(pDVar3,puVar7,piVar10);
        FUN_00a625c8(uVar5);
        bVar2 = true;
      }
      goto LAB_00a65cb5;
    }
LAB_00a65c42:
    DAT_032ebcc0 = pcVar6;
    DName::DName(local_c,&DAT_032ebcc0,'@');
    uVar5 = operator+(local_5c,"`anonymous namespace\'",param_1);
    FUN_00a625c8(uVar5);
    if (*DAT_032ebcb8 != 9) {
      Replicator::operator+=((Replicator *)DAT_032ebcb8,local_c);
    }
  } while( true );
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getFunctionIndirectType(class DName const &)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl UnDecorator::getFunctionIndirectType(undefined4 *param_1,int *param_2)

{
  char cVar1;
  int iVar2;
  char *pcVar3;
  int *piVar4;
  undefined4 uVar5;
  DName *pDVar6;
  undefined4 *puVar7;
  uint uVar8;
  bool bVar9;
  bool bVar10;
  undefined *puVar11;
  undefined4 uVar12;
  DNameStatus DVar13;
  undefined local_34 [8];
  undefined local_2c [8];
  undefined local_24 [8];
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_10;
  int local_c;
  int local_8;
  
  cVar1 = *DAT_032ebcc0;
  if (cVar1 == '\0') {
    operator+(param_1,1,param_2);
    return param_1;
  }
  if (((cVar1 < '6') || ('9' < cVar1)) && (cVar1 != '_')) {
    DName::DName((DName *)param_1,2);
    return param_1;
  }
  uVar8 = (int)cVar1 - 0x36;
  pcVar3 = DAT_032ebcc0 + 1;
  if (uVar8 == 0x29) {
    cVar1 = *pcVar3;
    if (cVar1 == '\0') {
      DAT_032ebcc0 = pcVar3;
      operator+(param_1,1,param_2);
      return param_1;
    }
    uVar8 = (int)cVar1 - 0x3d;
    DAT_032ebcc0 = DAT_032ebcc0 + 2;
    if ((int)uVar8 < 4) goto LAB_00a65d9d;
    bVar10 = SBORROW4(uVar8,7);
    iVar2 = cVar1 + -0x44;
    bVar9 = uVar8 == 7;
LAB_00a65d9b:
    if (!bVar9 && bVar10 == iVar2 < 0) goto LAB_00a65d9d;
  }
  else {
    DAT_032ebcc0 = pcVar3;
    if (-1 < (int)uVar8) {
      bVar10 = SBORROW4(uVar8,3);
      iVar2 = cVar1 + -0x39;
      bVar9 = uVar8 == 3;
      goto LAB_00a65d9b;
    }
LAB_00a65d9d:
    uVar8 = 0xffffffff;
  }
  if (uVar8 == 0xffffffff) {
    DName::DName((DName *)param_1,2);
    return param_1;
  }
  local_14 = 0;
  local_10 = local_10 & 0xffff0000;
  local_c = *param_2;
  local_8 = param_2[1];
  if ((uVar8 & 2) != 0) {
    piVar4 = (int *)operator+(local_24,&DAT_00da4598,&local_c);
    local_c = *piVar4;
    local_8 = piVar4[1];
    piVar4 = &local_c;
    if (*DAT_032ebcc0 == '\0') {
      piVar4 = (int *)operator+(local_34,1,piVar4);
    }
    else {
      puVar11 = local_24;
      uVar5 = getScope(local_2c,puVar11);
      pDVar6 = (DName *)operator+(local_34,0x20,uVar5);
      piVar4 = (int *)DName::operator+(pDVar6,puVar11,piVar4);
    }
    local_c = *piVar4;
    local_8 = piVar4[1];
    if (*DAT_032ebcc0 == '\0') {
      operator+(param_1,1,&local_c);
      return param_1;
    }
    if (*DAT_032ebcc0 != '@') {
      DVar13 = 2;
      goto LAB_00a66055;
    }
    DAT_032ebcc0 = DAT_032ebcc0 + 1;
    if (((byte)DAT_032ebcd0 & 0x60) == 0x60) {
      pDVar6 = (DName *)getThisType(local_34);
      DName::operator|=((DName *)&local_14,pDVar6);
    }
    else {
      puVar7 = (undefined4 *)getThisType(local_34);
      local_14 = *puVar7;
      local_10 = puVar7[1];
    }
  }
  if ((uVar8 & 4) != 0) {
    if ((~(DAT_032ebcd0 >> 1) & 1) == 0) {
      pDVar6 = (DName *)getBasedType(local_34);
      DName::operator|=((DName *)&local_c,pDVar6);
    }
    else {
      piVar4 = &local_c;
      puVar11 = local_34;
      uVar5 = getBasedType(local_2c,puVar11,piVar4);
      pDVar6 = (DName *)operator+(local_24,0x20,uVar5);
      piVar4 = (int *)DName::operator+(pDVar6,puVar11,piVar4);
      local_c = *piVar4;
      local_8 = piVar4[1];
    }
  }
  if ((~(DAT_032ebcd0 >> 1) & 1) == 0) {
    pDVar6 = (DName *)getCallingConvention(local_34);
    DName::operator|=((DName *)&local_c,pDVar6);
  }
  else {
    piVar4 = &local_c;
    puVar11 = local_34;
    pDVar6 = (DName *)getCallingConvention(local_2c,puVar11,piVar4);
    piVar4 = (int *)DName::operator+(pDVar6,puVar11,piVar4);
    local_c = *piVar4;
    local_8 = piVar4[1];
  }
  if (*param_2 != 0) {
    uVar5 = 0x29;
    puVar11 = local_34;
    pDVar6 = (DName *)operator+(local_2c,0x28,&local_c,puVar11,0x29);
    piVar4 = (int *)DName::operator+(pDVar6,puVar11,uVar5);
    local_c = *piVar4;
    local_8 = piVar4[1];
  }
  piVar4 = (int *)HeapManager::getMemory((HeapManager *)&DAT_032ebca0,8,0);
  if (piVar4 == (int *)0x0) {
    piVar4 = (int *)0x0;
  }
  else {
    *(undefined *)(piVar4 + 1) = 0;
    piVar4[1] = piVar4[1] & 0xffff00ff;
    *piVar4 = 0;
  }
  getReturnType(&local_1c,piVar4);
  uVar12 = 0x29;
  puVar11 = local_34;
  uVar5 = getArgumentTypes(local_2c,puVar11,0x29);
  pDVar6 = (DName *)operator+(local_24,0x28,uVar5);
  pDVar6 = (DName *)DName::operator+(pDVar6,puVar11,uVar12);
  DName::operator+=((DName *)&local_c,pDVar6);
  if ((((byte)DAT_032ebcd0 & 0x60) != 0x60) && ((uVar8 & 2) != 0)) {
    DName::operator+=((DName *)&local_c,(DName *)&local_14);
  }
  if ((~(DAT_032ebcd0 >> 8) & 1) == 0) {
    pDVar6 = (DName *)getThrowTypes(local_34);
    DName::operator|=((DName *)&local_c,pDVar6);
  }
  else {
    pDVar6 = (DName *)getThrowTypes(local_34);
    DName::operator+=((DName *)&local_c,pDVar6);
  }
  if (piVar4 != (int *)0x0) {
    *piVar4 = local_c;
    piVar4[1] = local_8;
    *param_1 = local_1c;
    param_1[1] = local_18;
    return param_1;
  }
  DVar13 = 3;
LAB_00a66055:
  DName::DName((DName *)param_1,DVar13);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getDataIndirectType(class DName const
// &,char,class DName const &,int)
// 
// Library: Visual Studio 2008 Release

int * __cdecl
UnDecorator::getDataIndirectType
          (int *param_1,int *param_2,undefined4 param_3,int *param_4,int param_5)

{
  char cVar1;
  char *pcVar2;
  undefined *puVar3;
  DName *pDVar4;
  int *piVar5;
  uint uVar6;
  undefined *puVar7;
  undefined4 uVar8;
  DNameStatus DVar9;
  undefined local_58 [8];
  undefined local_50 [8];
  undefined local_48 [8];
  undefined local_40 [8];
  undefined local_38 [8];
  undefined local_30 [8];
  undefined4 local_28;
  uint local_24;
  int local_20;
  uint local_1c;
  int local_18;
  uint local_14;
  int local_10;
  uint local_c;
  char local_5;
  
  local_24 = local_24 & 0xffff0000;
  local_28 = 0;
  local_5 = '\0';
  if (*DAT_032ebcc0 == '\0') {
    if (param_5 == 0) {
      if (*param_2 == 0) {
        param_2 = param_4;
        if (*param_4 == 0) goto LAB_00a6651a;
      }
      else if (((param_2[1] & 0x100U) == 0) && (*param_4 != 0)) {
        puVar7 = local_58;
        uVar8 = 0x20;
        piVar5 = param_1;
        pDVar4 = (DName *)operator+(local_50,1,param_4,puVar7,0x20,param_1,param_2);
        pDVar4 = (DName *)DName::operator+(pDVar4,puVar7,uVar8);
        DName::operator+(pDVar4,piVar5,param_2);
        return param_1;
      }
      operator+(param_1,1,param_2);
      return param_1;
    }
LAB_00a6651a:
    DVar9 = 1;
LAB_00a6651c:
    DName::DName((DName *)param_1,DVar9);
    return param_1;
  }
  if ((*DAT_032ebcc0 != '$') ||
     (getExtendedDataIndirectType(&local_20,&param_3,&local_5,param_5), local_20 == 0)) {
    local_14 = local_14 & 0xffff0000;
    local_18 = 0;
    uVar6 = (int)*DAT_032ebcc0 - (((*DAT_032ebcc0 < 'A') - 1 & 0x2b) + 0x16);
    local_1c = local_1c & 0xffff0000;
    local_20 = 0;
    do {
      if (uVar6 == 4) {
        if (((~(DAT_032ebcd0 >> 1) & 1) != 0) && ((~(DAT_032ebcd0 >> 0x11) & 1) != 0)) {
          pcVar2 = UScore(7);
          piVar5 = &local_18;
          if (local_18 == 0) goto LAB_00a661cd;
          puVar7 = local_50;
          puVar3 = local_58;
LAB_00a66133:
          pDVar4 = (DName *)DName::operator+((DName *)&local_18,puVar3,0x20);
          piVar5 = (int *)DName::operator+(pDVar4,puVar7,pcVar2);
          local_18 = *piVar5;
          local_14 = piVar5[1];
        }
      }
      else if (uVar6 == 5) {
        if ((~(DAT_032ebcd0 >> 1) & 1) != 0) {
          pcVar2 = UScore(9);
          piVar5 = &local_20;
          if (local_20 == 0) goto LAB_00a661cd;
          puVar7 = local_40;
          pDVar4 = (DName *)DName::operator+((DName *)piVar5,local_48,0x20);
          piVar5 = (int *)DName::operator+(pDVar4,puVar7,pcVar2);
          local_20 = *piVar5;
          local_1c = piVar5[1];
        }
      }
      else {
        if (uVar6 != 8) {
          if (*DAT_032ebcc0 != '\0') {
            DAT_032ebcc0 = DAT_032ebcc0 + 1;
          }
          if (0x1f < uVar6) {
LAB_00a662d0:
            DVar9 = 2;
            goto LAB_00a6651c;
          }
          DName::DName((DName *)&local_10,(char)param_3);
          piVar5 = (int *)DName::operator+((DName *)&local_28,local_58,&local_10);
          local_10 = *piVar5;
          local_c = piVar5[1];
          if (local_18 != 0) {
            piVar5 = &local_18;
            puVar7 = local_58;
            pDVar4 = (DName *)DName::operator+((DName *)&local_10,local_50,0x20);
            piVar5 = (int *)DName::operator+(pDVar4,puVar7,piVar5);
            local_10 = *piVar5;
            local_c = piVar5[1];
          }
          if (local_20 != 0) {
            piVar5 = &local_10;
            puVar7 = local_58;
            pDVar4 = (DName *)DName::operator+((DName *)&local_20,local_50,0x20);
            piVar5 = (int *)DName::operator+(pDVar4,puVar7,piVar5);
            local_10 = *piVar5;
            local_c = piVar5[1];
          }
          if ((uVar6 & 0x10) != 0) {
            if (param_5 != 0) goto LAB_00a662d0;
            if ((char)param_3 == '\0') {
              if (*DAT_032ebcc0 != '\0') {
                pDVar4 = (DName *)getScope(local_58);
                DName::operator|=((DName *)&local_10,pDVar4);
                goto LAB_00a66357;
              }
            }
            else {
              piVar5 = (int *)operator+(local_58,&DAT_00da4598,&local_10);
              local_10 = *piVar5;
              local_c = piVar5[1];
              piVar5 = &local_10;
              puVar7 = local_58;
              if (*DAT_032ebcc0 == '\0') {
                piVar5 = (int *)operator+(puVar7,1,piVar5);
              }
              else {
                pDVar4 = (DName *)getScope(local_50,puVar7);
                piVar5 = (int *)DName::operator+(pDVar4,puVar7,piVar5);
              }
              local_10 = *piVar5;
              local_c = piVar5[1];
LAB_00a66357:
              cVar1 = *DAT_032ebcc0;
              if (cVar1 != '\0') {
                DAT_032ebcc0 = DAT_032ebcc0 + 1;
                if (cVar1 != '@') goto LAB_00a662d0;
                goto LAB_00a6637c;
              }
            }
            DName::operator+=((DName *)&local_10,1);
          }
LAB_00a6637c:
          if ((~(DAT_032ebcd0 >> 1) & 1) == 0) {
            if (((byte)uVar6 & 0xc) == 0xc) {
              pDVar4 = (DName *)getBasedType(local_58);
              DName::operator|=((DName *)&local_10,pDVar4);
            }
          }
          else if (((byte)uVar6 & 0xc) == 0xc) {
            if (param_5 != 0) goto LAB_00a662d0;
            piVar5 = &local_10;
            puVar7 = local_58;
            pDVar4 = (DName *)getBasedType(local_50,puVar7,piVar5);
            piVar5 = (int *)DName::operator+(pDVar4,puVar7,piVar5);
            local_10 = *piVar5;
            local_c = piVar5[1];
          }
          if ((uVar6 & 2) != 0) {
            piVar5 = (int *)operator+(local_58,"volatile ",&local_10);
            local_10 = *piVar5;
            local_c = piVar5[1];
          }
          if ((uVar6 & 1) != 0) {
            piVar5 = (int *)operator+(local_58,"const ",&local_10);
            local_10 = *piVar5;
            local_c = piVar5[1];
          }
          if (param_5 == 0) {
            if (*param_2 == 0) {
              param_2 = param_4;
              if (*param_4 != 0) {
LAB_00a66489:
                pDVar4 = (DName *)operator+(local_58,0x20,param_2);
                goto LAB_00a66497;
              }
            }
            else {
              uVar6 = param_2[1];
              if (((uVar6 & 0x100) == 0) && (*param_4 != 0)) {
                puVar7 = local_58;
                uVar8 = 0x20;
                puVar3 = local_50;
                pDVar4 = (DName *)operator+(local_48,0x20,param_4,puVar3,0x20,puVar7,param_2);
                pDVar4 = (DName *)DName::operator+(pDVar4,puVar3,uVar8);
                pDVar4 = (DName *)DName::operator+(pDVar4,puVar7,param_2);
LAB_00a66497:
                DName::operator+=((DName *)&local_10,pDVar4);
              }
              else {
                if ((uVar6 & 0x800) == 0) goto LAB_00a66489;
                local_10 = *param_2;
                local_c = uVar6;
              }
            }
          }
          local_1c = local_c | 0x100;
          if (local_5 != '\0') {
            local_1c = local_c | 0x2100;
          }
          *param_1 = local_10;
          goto LAB_00a660ba;
        }
        if ((~(DAT_032ebcd0 >> 1) & 1) != 0) {
          pcVar2 = UScore(8);
          piVar5 = &local_18;
          if (local_18 != 0) {
            puVar7 = local_30;
            puVar3 = local_38;
            goto LAB_00a66133;
          }
LAB_00a661cd:
          DName::operator=((DName *)piVar5,pcVar2);
        }
      }
      DAT_032ebcc0 = DAT_032ebcc0 + 1;
      if ((*DAT_032ebcc0 == '$') &&
         (getExtendedDataIndirectType(&local_10,&param_3,&local_5,param_5), local_10 != 0))
      goto LAB_00a66220;
      uVar6 = (int)*DAT_032ebcc0 - (((*DAT_032ebcc0 < 'A') - 1 & 0x2b) + 0x16);
    } while( true );
  }
  *param_1 = local_20;
  goto LAB_00a660ba;
LAB_00a66220:
  *param_1 = local_10;
  local_1c = local_c;
LAB_00a660ba:
  param_1[1] = local_1c;
  return param_1;
}



// Library Function - Single Match
//  public: __thiscall UnDecorator::operator char *(void)
// 
// Library: Visual Studio 2008 Release

char * __thiscall UnDecorator::operator_char_(UnDecorator *this)

{
  uint uVar1;
  char cVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  int iVar6;
  char *pcVar7;
  undefined4 *puVar8;
  char *pcVar9;
  undefined local_1c [8];
  undefined local_14 [8];
  undefined4 *local_c;
  uint local_8;
  
  uVar1 = local_8 & 0xffff0000;
  puVar8 = (undefined4 *)0x0;
  local_c = (undefined4 *)0x0;
  uVar3 = local_8 & 0xffff0000;
  local_8 = uVar1;
  if (DAT_032ebcc4 == (char *)0x0) goto LAB_00a665b3;
  if (*DAT_032ebcc4 == '?') {
    if (DAT_032ebcc4[1] != '@') {
      if (DAT_032ebcc4[1] == '$') {
        puVar5 = (undefined4 *)getTemplateName(local_1c,0);
        puVar8 = (undefined4 *)*puVar5;
        uVar3 = puVar5[1];
        if ((char)uVar3 != '\x02') goto LAB_00a665b3;
        DAT_032ebcc0 = DAT_032ebcc4;
      }
      goto LAB_00a665a4;
    }
    DAT_032ebcc0 = DAT_032ebcc0 + 2;
    uVar4 = getDecoratedName(local_14);
    puVar5 = (undefined4 *)operator+(local_1c,&DAT_00da4704,uVar4);
  }
  else {
LAB_00a665a4:
    puVar5 = (undefined4 *)getDecoratedName(local_1c);
  }
  puVar8 = (undefined4 *)*puVar5;
  uVar3 = puVar5[1];
LAB_00a665b3:
  if ((char)uVar3 == '\x03') {
    return (char *)0x0;
  }
  if (((char)uVar3 == '\x02') || (((DAT_032ebcd0 & 0x1000) == 0 && (*DAT_032ebcc0 != '\0')))) {
    DName::operator=((DName *)&local_c,DAT_032ebcc4);
    puVar8 = local_c;
    uVar3 = local_8;
  }
  local_8 = uVar3;
  local_c = puVar8;
  if (DAT_032ebcc8 == (char *)0x0) {
    iVar6 = 0;
    if (local_c != (undefined4 *)0x0) {
      iVar6 = (**(code **)*local_c)();
    }
    DAT_032ebccc = iVar6 + 1;
    DAT_032ebcc8 = (char *)(*DAT_032ebca0)(iVar6 + 8U & 0xfffffff8);
    if (DAT_032ebcc8 == (char *)0x0) {
      return (char *)0x0;
    }
  }
  DName::getString((DName *)&local_c,DAT_032ebcc8,DAT_032ebccc);
  pcVar7 = DAT_032ebcc8;
  pcVar9 = DAT_032ebcc8;
  while (cVar2 = *pcVar7, cVar2 != '\0') {
    if (cVar2 == ' ') {
      *pcVar9 = ' ';
      pcVar9 = pcVar9 + 1;
      do {
        pcVar7 = pcVar7 + 1;
      } while (*pcVar7 == ' ');
    }
    else {
      *pcVar9 = cVar2;
      pcVar9 = pcVar9 + 1;
      pcVar7 = pcVar7 + 1;
    }
  }
  *pcVar9 = '\0';
  return DAT_032ebcc8;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getPtrRefType(class DName const &,class DName
// const &,char)
// 
// Library: Visual Studio 2008 Release

undefined4 * __cdecl
UnDecorator::getPtrRefType(undefined4 *param_1,int *param_2,int *param_3,undefined4 param_4)

{
  char cVar1;
  char cVar2;
  undefined4 local_c;
  undefined4 local_8;
  
  cVar1 = *DAT_032ebcc0;
  cVar2 = (char)param_4;
  if (cVar1 == '\0') {
    DName::DName((DName *)&local_c,1);
    DName::operator+=((DName *)&local_c,cVar2);
    if (*param_2 != 0) {
      DName::operator+=((DName *)&local_c,(DName *)param_2);
    }
    if (*param_3 != 0) {
      if (*param_2 != 0) {
        DName::operator+=((DName *)&local_c,' ');
      }
      DName::operator+=((DName *)&local_c,(DName *)param_3);
    }
    *param_1 = local_c;
    param_1[1] = local_8;
  }
  else if (((cVar1 < '6') || ('9' < cVar1)) && (cVar1 != '_')) {
    getDataIndirectType(&local_c,param_3,param_4,param_2,0);
    getPtrRefDataType(param_1,&local_c,cVar2 == '*');
  }
  else {
    DName::DName((DName *)&local_c,cVar2);
    if ((*param_2 != 0) && ((*param_3 == 0 || ((param_3[1] & 0x100U) == 0)))) {
      DName::operator+=((DName *)&local_c,(DName *)param_2);
    }
    if (*param_3 != 0) {
      DName::operator+=((DName *)&local_c,(DName *)param_3);
    }
    getFunctionIndirectType(param_1,&local_c);
  }
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getPointerType(class DName const &,class DName
// const &)
// 
// Library: Visual Studio 2008 Release

undefined4 __cdecl
UnDecorator::getPointerType(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  getPtrRefType(param_1,param_2,param_3,0x2a);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getReferenceType(class DName const &,class
// DName const &)
// 
// Library: Visual Studio 2008 Release

undefined4 __cdecl
UnDecorator::getReferenceType(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  getPtrRefType(param_1,param_2,param_3,0x26);
  return param_1;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3
// WARNING: Globals starting with '_' overlap smaller symbols at the same address
// Library Function - Single Match
//  ___unDName
// 
// Library: Visual Studio 2008 Release

char * ___unDName(char *param_1,char *param_2,int param_3,int param_4,undefined4 param_5,
                 ushort param_6)

{
  int iVar1;
  UnDecorator local_78 [88];
  char *local_20;
  undefined4 uStack_c;
  undefined *local_8;
  
  local_8 = &DAT_031111b8;
  uStack_c = 0xa6679c;
  if ((param_4 != 0) && (iVar1 = __mtinitlocknum(5), iVar1 != 0)) {
    __lock(5);
    local_8 = (undefined *)0x0;
    DAT_032ebca0 = param_4;
    _DAT_032ebca4 = param_5;
    _DAT_032ebcb0 = 0;
    _DAT_032ebca8 = 0;
    _DAT_032ebcac = 0;
    UnDecorator::UnDecorator
              (local_78,param_1,param_2,param_3,(_func_char_ptr_long *)0x0,(uint)param_6);
    local_20 = UnDecorator::operator_char_(local_78);
    Destructor();
    local_8 = (undefined *)0xfffffffe;
    FUN_00a66821();
    return local_20;
  }
  return (char *)0x0;
}



void FUN_00a66821(void)

{
  FUN_00a4d824(5);
  return;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getBasicDataType(class DName const &)
// 
// Library: Visual Studio 2008 Release

int * __cdecl UnDecorator::getBasicDataType(int *param_1,int *param_2)

{
  byte bVar1;
  byte *pbVar2;
  undefined4 uVar3;
  int *piVar4;
  DName *pDVar5;
  uint uVar6;
  uint uVar7;
  char *pcVar8;
  int local_28 [2];
  int local_20;
  uint local_1c;
  int local_18;
  uint local_14;
  int local_10;
  uint local_c;
  byte local_5;
  
  pbVar2 = DAT_032ebcc0;
  bVar1 = *DAT_032ebcc0;
  if (bVar1 == 0) {
    operator+(param_1,1,param_2);
    return param_1;
  }
  DAT_032ebcc0 = DAT_032ebcc0 + 1;
  local_10 = 0;
  uVar7 = (uint)bVar1;
  local_c = local_c & 0xffff0000;
  uVar6 = 0xffffffff;
  local_5 = 0;
  if (uVar7 < 0x4f) {
    if (uVar7 != 0x4e) {
      switch(uVar7) {
      case 0x43:
      case 0x44:
      case 0x45:
        pcVar8 = "char";
        break;
      case 0x46:
      case 0x47:
        pcVar8 = "short";
        break;
      case 0x48:
      case 0x49:
        pcVar8 = "int";
        break;
      case 0x4a:
      case 0x4b:
        pcVar8 = "long";
        break;
      default:
        goto switchD_00a66880_caseD_4c;
      case 0x4d:
        pcVar8 = "float";
      }
      goto LAB_00a66a78;
    }
LAB_00a66a9e:
    DName::operator+=((DName *)&local_10,"double");
LAB_00a66aab:
    if (uVar6 != 0xffffffff) {
LAB_00a66a00:
      local_18 = *param_2;
      local_c = local_c & 0xffff0000;
      local_14 = param_2[1];
      local_10 = 0;
      if (uVar6 != 0xfffffffe) {
        if (*param_2 == 0) {
          if ((uVar6 & 1) == 0) {
            if ((uVar6 & 2) != 0) {
              DName::operator=((DName *)&local_10,"volatile");
            }
          }
          else {
            DName::operator=((DName *)&local_10,"const");
            if ((uVar6 & 2) != 0) {
              DName::operator+=((DName *)&local_10," volatile");
            }
          }
        }
        getPointerType(param_1,&local_10,&local_18);
        return param_1;
      }
      local_14 = local_14 | 0x800;
      getPtrRefType(&local_20,&local_10,&local_18,0);
      if ((local_1c & 0x800) == 0) {
        DName::operator+=((DName *)&local_20,"[]");
      }
      *param_1 = local_20;
      local_c = local_1c;
      goto LAB_00a66b53;
    }
  }
  else {
    if (uVar7 == 0x4f) {
      DName::operator=((DName *)&local_10,"long ");
      goto LAB_00a66a9e;
    }
    if (0x4f < uVar7) {
      if (uVar7 < 0x54) {
        uVar6 = uVar7 & 3;
        goto LAB_00a66aab;
      }
      if (uVar7 == 0x58) {
        pcVar8 = "void";
        goto LAB_00a66a78;
      }
      if (uVar7 != 0x5f) goto switchD_00a66880_caseD_4c;
      local_5 = *DAT_032ebcc0;
      DAT_032ebcc0 = pbVar2 + 2;
      uVar6 = (uint)local_5;
      if (uVar6 < 0x4c) {
        if (uVar6 < 0x4a) {
          if (uVar6 < 0x46) {
            if (uVar6 < 0x44) {
              if (uVar6 != 0) {
                if (uVar6 == 0x24) {
                  uVar3 = getBasicDataType(&local_20,param_2);
                  operator+(param_1,"__w64 ",uVar3);
                  return param_1;
                }
                goto LAB_00a66a6c;
              }
              DAT_032ebcc0 = pbVar2 + 1;
              DName::operator=((DName *)&local_10,1);
              goto LAB_00a66ab4;
            }
            pcVar8 = "__int8";
          }
          else if (uVar6 < 0x46) {
LAB_00a66a6c:
            pcVar8 = "UNKNOWN";
          }
          else if (uVar6 < 0x48) {
            pcVar8 = "__int16";
          }
          else {
            if (0x49 < uVar6) goto LAB_00a66a6c;
            pcVar8 = "__int32";
          }
        }
        else {
          pcVar8 = "__int64";
        }
        goto LAB_00a66a78;
      }
      if (uVar6 < 0x4c) goto LAB_00a66a6c;
      if (uVar6 < 0x4e) {
        pcVar8 = "__int128";
LAB_00a66a78:
        DName::operator=((DName *)&local_10,pcVar8);
        goto LAB_00a66ab4;
      }
      if (uVar6 == 0x4e) {
        pcVar8 = "bool";
        goto LAB_00a66a78;
      }
      if (uVar6 != 0x4f) {
        if (uVar6 != 0x57) {
          if (1 < uVar6 - 0x58) goto LAB_00a66a6c;
          piVar4 = &local_18;
          goto LAB_00a669c9;
        }
        pcVar8 = "wchar_t";
        goto LAB_00a66a78;
      }
      uVar6 = 0xfffffffe;
      goto LAB_00a66a00;
    }
switchD_00a66880_caseD_4c:
    piVar4 = local_28;
LAB_00a669c9:
    DAT_032ebcc0 = DAT_032ebcc0 + -1;
    piVar4 = (int *)getECSUDataType(piVar4);
    local_c = piVar4[1];
    local_10 = *piVar4;
    if (local_10 == 0) {
      *param_1 = 0;
      param_1[1] = local_c;
      return param_1;
    }
  }
LAB_00a66ab4:
  if (uVar7 == 0x43) {
    pcVar8 = "signed ";
    piVar4 = &local_18;
LAB_00a66b14:
    piVar4 = (int *)operator+(piVar4,pcVar8,&local_10);
    local_10 = *piVar4;
    local_c = piVar4[1];
  }
  else {
    if ((((uVar7 == 0x45) || (uVar7 == 0x47)) || (uVar7 == 0x49)) || (uVar7 == 0x4b)) {
      pcVar8 = "unsigned ";
      piVar4 = &local_20;
      goto LAB_00a66b14;
    }
    if ((uVar7 == 0x5f) &&
       (((local_5 == 0x45 || (local_5 == 0x47)) ||
        ((local_5 == 0x49 || ((local_5 == 0x4b || (local_5 == 0x4d)))))))) {
      pcVar8 = "unsigned ";
      piVar4 = local_28;
      goto LAB_00a66b14;
    }
  }
  if (*param_2 != 0) {
    pDVar5 = (DName *)operator+(local_28,0x20,param_2);
    DName::operator+=((DName *)&local_10,pDVar5);
  }
  *param_1 = local_10;
LAB_00a66b53:
  param_1[1] = local_c;
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getPrimaryDataType(class DName const &)
// 
// Library: Visual Studio 2008 Release

DName * __cdecl UnDecorator::getPrimaryDataType(DName *param_1,int *param_2)

{
  char cVar1;
  undefined4 uVar2;
  char *pcVar3;
  undefined local_1c [8];
  int local_14;
  uint local_10;
  undefined4 local_c;
  uint local_8;
  
  cVar1 = *DAT_032ebcc0;
  local_8 = local_8 & 0xffff0000;
  local_c = 0;
  pcVar3 = DAT_032ebcc0;
  if (cVar1 != '\0') {
    if (cVar1 != '$') {
      if (cVar1 != 'A') {
        if (cVar1 != 'B') {
          getBasicDataType(param_1,param_2);
          return param_1;
        }
        DName::operator=((DName *)&local_c,"volatile");
        if (*param_2 != 0) {
          DName::operator+=((DName *)&local_c,' ');
        }
      }
      local_14 = *param_2;
      DAT_032ebcc0 = DAT_032ebcc0 + 1;
      local_10 = param_2[1] | 0x100;
      getReferenceType(param_1,&local_c,&local_14);
      return param_1;
    }
    if (DAT_032ebcc0[1] == '$') {
      pcVar3 = DAT_032ebcc0 + 2;
      cVar1 = *pcVar3;
      if (cVar1 != '\0') {
        if (cVar1 == 'A') {
          DAT_032ebcc0 = DAT_032ebcc0 + 3;
          getFunctionIndirectType(param_1,param_2);
          return param_1;
        }
        if (cVar1 == 'B') {
          DAT_032ebcc0 = DAT_032ebcc0 + 3;
          getPtrRefDataType(param_1,param_2,1);
          return param_1;
        }
        if (cVar1 == 'C') {
          DAT_032ebcc0 = DAT_032ebcc0 + 3;
          local_c = 0;
          uVar2 = getDataIndirectType(local_1c,param_2,0,&local_c,0);
          getBasicDataType(param_1,uVar2);
          return param_1;
        }
        goto LAB_00a66c7f;
      }
    }
    else if (DAT_032ebcc0[1] != '\0') {
LAB_00a66c7f:
      DAT_032ebcc0 = pcVar3;
      DName::DName(param_1,2);
      return param_1;
    }
  }
  DAT_032ebcc0 = pcVar3;
  operator+(param_1,1,param_2);
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getDataType(class DName *)
// 
// Library: Visual Studio 2008 Release

DName * __cdecl UnDecorator::getDataType(DName *param_1,DName *param_2)

{
  char cVar1;
  int *piVar2;
  undefined local_1c [8];
  undefined4 local_14;
  uint local_10;
  int local_c;
  int local_8;
  
  DName::DName((DName *)&local_c,param_2);
  cVar1 = *DAT_032ebcc0;
  if (cVar1 == '\0') {
    operator+(param_1,1,&local_c);
  }
  else if (cVar1 == '?') {
    DAT_032ebcc0 = DAT_032ebcc0 + 1;
    local_10 = local_10 & 0xffff0000;
    local_14 = 0;
    piVar2 = (int *)getDataIndirectType(local_1c,&local_c,0,&local_14,0);
    local_c = *piVar2;
    local_8 = piVar2[1];
    getPrimaryDataType(param_1,&local_c);
  }
  else if (cVar1 == 'X') {
    DAT_032ebcc0 = DAT_032ebcc0 + 1;
    if (local_c == 0) {
      DName::DName(param_1,"void");
    }
    else {
      operator+(param_1,"void ",&local_c);
    }
  }
  else {
    getPrimaryDataType(param_1,&local_c);
  }
  return param_1;
}



// Library Function - Single Match
//  private: static class DName __cdecl UnDecorator::getExternalDataType(class DName const &)
// 
// Library: Visual Studio 2008 Release

undefined4 __cdecl UnDecorator::getExternalDataType(undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  DName *pDVar2;
  undefined4 uVar3;
  undefined *puVar4;
  undefined local_1c [8];
  undefined local_14 [8];
  DName local_c [8];
  
  puVar1 = (undefined4 *)HeapManager::getMemory((HeapManager *)&DAT_032ebca0,8,0);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = 0;
    *(undefined *)(puVar1 + 1) = 0;
    puVar1[1] = puVar1[1] & 0xffff00ff;
  }
  getDataType(param_1,puVar1);
  getDataIndirectType(local_c);
  puVar4 = local_14;
  pDVar2 = (DName *)DName::operator+(local_c,local_1c,0x20);
  uVar3 = DName::operator+(pDVar2,puVar4,param_2);
  FUN_00a625c8(uVar3);
  return param_1;
}



// Library Function - Single Match
//  __get_printf_count_output
// 
// Library: Visual Studio 2008 Release

int __cdecl __get_printf_count_output(void)

{
  return (uint)(DAT_032ebd10 == (DAT_0323f878 | 1));
}



// Library Function - Single Match
//  _get_crtdouble_arg
// 
// Library: Visual Studio 2008 Release

undefined8 _get_crtdouble_arg(int *param_1)

{
  *param_1 = *param_1 + 8;
  return *(undefined8 *)(*param_1 + -8);
}



// Library Function - Single Match
//  __output_s_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __output_s_l(FILE *_File,char *_Format,_locale_t _Locale,va_list _ArgList)

{
  byte bVar1;
  wchar_t _WCh;
  ulonglong uVar2;
  FILE *pFVar3;
  int *piVar4;
  int *piVar5;
  uint uVar6;
  code *pcVar7;
  errno_t eVar8;
  int iVar9;
  undefined *puVar10;
  int extraout_ECX;
  byte *pbVar11;
  char *pcVar12;
  int *piVar13;
  bool bVar14;
  longlong lVar15;
  int *local_27c;
  int *local_278;
  int local_274;
  undefined4 local_270;
  int *local_268;
  FILE *local_264;
  int local_260;
  int local_25c;
  int *local_258;
  localeinfo_struct local_254;
  int local_24c;
  char local_248;
  uint local_244;
  byte *local_240;
  int local_23c;
  int *local_238;
  int local_234;
  undefined local_230;
  char local_22f;
  int local_22c;
  int **local_228;
  int *local_224;
  int *local_220;
  int *local_21c;
  byte local_215;
  uint local_214;
  undefined local_210;
  undefined local_11 [9];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_264 = _File;
  local_228 = (int **)_ArgList;
  local_260 = 0;
  local_214 = 0;
  local_238 = (int *)0x0;
  local_21c = (int *)0x0;
  local_234 = 0;
  local_25c = 0;
  local_23c = 0;
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_254,_Locale);
  if (_File == (FILE *)0x0) {
LAB_00a66edd:
    piVar5 = __errno();
    *piVar5 = 0x16;
  }
  else {
    if ((*(byte *)&_File->_flag & 0x40) == 0) {
      uVar6 = __fileno(_File);
      if ((uVar6 == 0xffffffff) || (uVar6 == 0xfffffffe)) {
        puVar10 = &DAT_03240190;
      }
      else {
        puVar10 = (undefined *)((uVar6 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar6 >> 5]);
      }
      if ((puVar10[0x24] & 0x7f) == 0) {
        if ((uVar6 == 0xffffffff) || (uVar6 == 0xfffffffe)) {
          puVar10 = &DAT_03240190;
        }
        else {
          puVar10 = (undefined *)((uVar6 & 0x1f) * 0x40 + (&DAT_032f1700)[(int)uVar6 >> 5]);
        }
        if ((puVar10[0x24] & 0x80) == 0) goto LAB_00a66f76;
      }
      goto LAB_00a66edd;
    }
LAB_00a66f76:
    if (_Format == (char *)0x0) goto LAB_00a66edd;
    local_215 = *_Format;
    local_22c = 0;
    local_224 = (int *)0x0;
    local_244 = 0;
    local_258 = (int *)0x0;
    if (local_215 == 0) {
LAB_00a679f8:
      if (local_248 != '\0') {
        *(uint *)(local_24c + 0x70) = *(uint *)(local_24c + 0x70) & 0xfffffffd;
      }
      goto LAB_00a67a11;
    }
    do {
      pbVar11 = (byte *)_Format + 1;
      uVar6 = 0;
      local_240 = pbVar11;
      if (local_22c < 0) break;
      if ((byte)(local_215 - 0x20) < 0x59) {
        uVar6 = (byte)(&DAT_00da4780)[(char)local_215] & 0xf;
      }
      local_244 = (uint)((byte)(&DAT_00da47a0)[local_244 + uVar6 * 9] >> 4);
      if (local_244 == 8) goto LAB_00a66edd;
      switch(local_244) {
      case 0:
switchD_00a67004_caseD_0:
        local_23c = 0;
        iVar9 = __isleadbyte_l((uint)local_215,&local_254);
        if (iVar9 != 0) {
          _write_char();
          local_240 = (byte *)_Format + 2;
          if (*pbVar11 == 0) goto LAB_00a66edd;
        }
        _write_char();
        break;
      case 1:
        local_21c = (int *)0xffffffff;
        local_270 = 0;
        local_25c = 0;
        local_238 = (int *)0x0;
        local_234 = 0;
        local_214 = 0;
        local_23c = 0;
        break;
      case 2:
        if (local_215 == 0x20) {
          local_214 = local_214 | 2;
        }
        else if (local_215 == 0x23) {
          local_214 = local_214 | 0x80;
        }
        else if (local_215 == 0x2b) {
          local_214 = local_214 | 1;
        }
        else if (local_215 == 0x2d) {
          local_214 = local_214 | 4;
        }
        else if (local_215 == 0x30) {
          local_214 = local_214 | 8;
        }
        break;
      case 3:
        if (local_215 == 0x2a) {
          local_228 = (int **)((int)_ArgList + 4);
          local_238 = *(int **)_ArgList;
          if ((int)local_238 < 0) {
            local_214 = local_214 | 4;
            local_238 = (int *)-(int)local_238;
          }
        }
        else {
          local_238 = (int *)((int)local_238 * 10 + -0x30 + (int)(char)local_215);
        }
        break;
      case 4:
        local_21c = (int *)0x0;
        break;
      case 5:
        if (local_215 == 0x2a) {
          local_228 = (int **)((int)_ArgList + 4);
          local_21c = *(int **)_ArgList;
          if ((int)local_21c < 0) {
            local_21c = (int *)0xffffffff;
          }
        }
        else {
          local_21c = (int *)((int)local_21c * 10 + -0x30 + (int)(char)local_215);
        }
        break;
      case 6:
        if (local_215 == 0x49) {
          bVar1 = *pbVar11;
          if ((bVar1 == 0x36) && (((byte *)_Format)[2] == 0x34)) {
            local_214 = local_214 | 0x8000;
            local_240 = (byte *)_Format + 3;
          }
          else if ((bVar1 == 0x33) && (((byte *)_Format)[2] == 0x32)) {
            local_214 = local_214 & 0xffff7fff;
            local_240 = (byte *)_Format + 3;
          }
          else if (((((bVar1 != 100) && (bVar1 != 0x69)) && (bVar1 != 0x6f)) &&
                   ((bVar1 != 0x75 && (bVar1 != 0x78)))) && (bVar1 != 0x58)) {
            local_244 = 0;
            goto switchD_00a67004_caseD_0;
          }
        }
        else if (local_215 == 0x68) {
          local_214 = local_214 | 0x20;
        }
        else if (local_215 == 0x6c) {
          if (*pbVar11 == 0x6c) {
            local_214 = local_214 | 0x1000;
            local_240 = (byte *)_Format + 2;
          }
          else {
            local_214 = local_214 | 0x10;
          }
        }
        else if (local_215 == 0x77) {
          local_214 = local_214 | 0x800;
        }
        break;
      case 7:
        if ((char)local_215 < 'e') {
          if (local_215 == 100) {
LAB_00a674f0:
            local_214 = local_214 | 0x40;
LAB_00a674f7:
            local_224 = (int *)0xa;
LAB_00a67501:
            if (((local_214 & 0x8000) == 0) && ((local_214 & 0x1000) == 0)) {
              local_228 = (int **)((int)_ArgList + 4);
              if ((local_214 & 0x20) == 0) {
                piVar5 = *(int **)_ArgList;
                if ((local_214 & 0x40) == 0) {
                  piVar13 = (int *)0x0;
                }
                else {
                  piVar13 = (int *)((int)piVar5 >> 0x1f);
                }
              }
              else {
                if ((local_214 & 0x40) == 0) {
                  piVar5 = (int *)(uint)*(ushort *)_ArgList;
                }
                else {
                  piVar5 = (int *)(int)*(short *)_ArgList;
                }
                piVar13 = (int *)((int)piVar5 >> 0x1f);
              }
            }
            else {
              local_228 = (int **)((int)_ArgList + 8);
              piVar5 = *(int **)_ArgList;
              piVar13 = *(int **)((int)_ArgList + 4);
            }
            if ((((local_214 & 0x40) != 0) && ((int)piVar13 < 1)) && ((int)piVar13 < 0)) {
              bVar14 = piVar5 != (int *)0x0;
              piVar5 = (int *)-(int)piVar5;
              piVar13 = (int *)-(int)((int)piVar13 + (uint)bVar14);
              local_214 = local_214 | 0x100;
            }
            if ((local_214 & 0x9000) == 0) {
              piVar13 = (int *)0x0;
            }
            lVar15 = CONCAT44(piVar13,piVar5);
            if ((int)local_21c < 0) {
              local_21c = (int *)0x1;
            }
            else {
              local_214 = local_214 & 0xfffffff7;
              if (0x200 < (int)local_21c) {
                local_21c = (int *)0x200;
              }
            }
            if (((uint)piVar5 | (uint)piVar13) == 0) {
              local_234 = 0;
            }
            piVar5 = (int *)local_11;
            while( true ) {
              uVar2 = (ulonglong)lVar15 >> 0x20;
              piVar13 = (int *)((int)local_21c + -1);
              if (((int)local_21c < 1) && (lVar15 == 0)) break;
              local_21c = piVar13;
              lVar15 = __aulldvrm(lVar15,local_224,(int)local_224 >> 0x1f);
              iVar9 = extraout_ECX + 0x30;
              if (0x39 < iVar9) {
                iVar9 = iVar9 + local_260;
              }
              *(char *)piVar5 = (char)iVar9;
              piVar5 = (int *)((int)piVar5 + -1);
              local_268 = (int *)uVar2;
            }
            local_224 = (int *)(local_11 + -(int)piVar5);
            local_220 = (int *)((int)piVar5 + 1);
            local_21c = piVar13;
            if (((local_214 & 0x200) != 0) &&
               ((local_224 == (int *)0x0 || (*(char *)local_220 != '0')))) {
              *(char *)piVar5 = '0';
              local_224 = (int *)(local_11 + -(int)piVar5 + 1);
              local_220 = piVar5;
            }
          }
          else if ((char)local_215 < 'T') {
            if (local_215 == 0x53) {
              if ((local_214 & 0x830) == 0) {
                local_214 = local_214 | 0x800;
              }
              goto LAB_00a6731f;
            }
            if (local_215 == 0x41) {
LAB_00a6729d:
              local_215 = local_215 + 0x20;
              local_270 = 1;
LAB_00a672b0:
              local_214 = local_214 | 0x40;
              local_268 = (int *)0x200;
              piVar5 = (int *)&local_210;
              piVar13 = local_268;
              piVar4 = (int *)&local_210;
              if ((int)local_21c < 0) {
                local_21c = (int *)0x6;
              }
              else if (local_21c == (int *)0x0) {
                if (local_215 == 0x67) {
                  local_21c = (int *)0x1;
                }
              }
              else {
                if (0x200 < (int)local_21c) {
                  local_21c = (int *)0x200;
                }
                if (0xa3 < (int)local_21c) {
                  piVar13 = (int *)((int)local_21c + 0x15d);
                  local_220 = (int *)&local_210;
                  local_258 = (int *)__malloc_crt((size_t)piVar13);
                  piVar5 = local_258;
                  piVar4 = local_258;
                  if (local_258 == (int *)0x0) {
                    local_21c = (int *)0xa3;
                    piVar5 = (int *)&local_210;
                    piVar13 = local_268;
                    piVar4 = local_220;
                  }
                }
              }
              local_220 = piVar4;
              local_268 = piVar13;
              local_228 = (int **)((int)_ArgList + 8);
              local_27c = *(int **)_ArgList;
              local_278 = *(int **)((int)_ArgList + 4);
              pcVar7 = (code *)__decode_pointer(PTR_LAB_03240778,&local_27c,piVar5,local_268,
                                                (int)(char)local_215,local_21c,local_270,&local_254)
              ;
              (*pcVar7)();
              uVar6 = local_214 & 0x80;
              if ((uVar6 != 0) && (local_21c == (int *)0x0)) {
                pcVar7 = (code *)__decode_pointer(PTR_LAB_03240784,piVar5,&local_254);
                (*pcVar7)();
              }
              if ((local_215 == 0x67) && (uVar6 == 0)) {
                pcVar7 = (code *)__decode_pointer(PTR_LAB_03240780,piVar5,&local_254);
                (*pcVar7)();
              }
              if (*(char *)piVar5 == '-') {
                local_214 = local_214 | 0x100;
                piVar5 = (int *)((int)piVar5 + 1);
                local_220 = piVar5;
              }
LAB_00a67452:
              local_224 = (int *)_strlen((char *)piVar5);
            }
            else if (local_215 == 0x43) {
              if ((local_214 & 0x830) == 0) {
                local_214 = local_214 | 0x800;
              }
LAB_00a67392:
              local_228 = (int **)((int)_ArgList + 4);
              if ((local_214 & 0x810) == 0) {
                local_210 = *_ArgList;
                local_224 = (int *)0x1;
              }
              else {
                eVar8 = _wctomb_s((int *)&local_224,&local_210,0x200,*(wchar_t *)_ArgList);
                if (eVar8 != 0) {
                  local_25c = 1;
                }
              }
              local_220 = (int *)&local_210;
            }
            else if ((local_215 == 0x45) || (local_215 == 0x47)) goto LAB_00a6729d;
          }
          else {
            if (local_215 == 0x58) goto LAB_00a67653;
            if (local_215 == 0x5a) {
              piVar5 = *(int **)_ArgList;
              local_228 = (int **)((int)_ArgList + 4);
              if ((piVar5 == (int *)0x0) || (local_220 = (int *)piVar5[1], local_220 == (int *)0x0))
              {
                local_220 = (int *)PTR_DAT_03240080;
                piVar5 = (int *)PTR_DAT_03240080;
                goto LAB_00a67452;
              }
              local_224 = (int *)(int)*(wchar_t *)piVar5;
              if ((local_214 & 0x800) == 0) {
                local_23c = 0;
              }
              else {
                local_224 = (int *)((int)local_224 / 2);
                local_23c = 1;
              }
            }
            else {
              if (local_215 == 0x61) goto LAB_00a672b0;
              if (local_215 == 99) goto LAB_00a67392;
            }
          }
LAB_00a6782c:
          if (local_25c == 0) {
            if ((local_214 & 0x40) != 0) {
              if ((local_214 & 0x100) == 0) {
                if ((local_214 & 1) == 0) {
                  if ((local_214 & 2) == 0) goto LAB_00a67875;
                  local_230 = 0x20;
                }
                else {
                  local_230 = 0x2b;
                }
              }
              else {
                local_230 = 0x2d;
              }
              local_234 = 1;
            }
LAB_00a67875:
            pcVar12 = (char *)((int)local_238 + (-local_234 - (int)local_224));
            if ((local_214 & 0xc) == 0) {
              _write_multi_char(0x20,pcVar12,local_264);
            }
            pFVar3 = local_264;
            _write_string(local_234);
            if (((local_214 & 8) != 0) && ((local_214 & 4) == 0)) {
              _write_multi_char(0x30,pcVar12,pFVar3);
            }
            if ((local_23c == 0) || ((int)local_224 < 1)) {
              _write_string(local_224);
            }
            else {
              local_268 = local_224;
              piVar5 = local_220;
              do {
                _WCh = *(wchar_t *)piVar5;
                local_268 = (int *)((int)local_268 + -1);
                piVar5 = (int *)((int)piVar5 + 2);
                eVar8 = _wctomb_s(&local_274,local_11 + 1,6,_WCh);
                if ((eVar8 != 0) || (local_274 == 0)) {
                  local_22c = -1;
                  break;
                }
                _write_string(local_274);
              } while (local_268 != (int *)0x0);
            }
            if ((-1 < local_22c) && ((local_214 & 4) != 0)) {
              _write_multi_char(0x20,pcVar12,pFVar3);
            }
          }
        }
        else {
          if ('p' < (char)local_215) {
            if (local_215 == 0x73) {
LAB_00a6731f:
              piVar5 = local_21c;
              if (local_21c == (int *)0xffffffff) {
                piVar5 = (int *)0x7fffffff;
              }
              local_228 = (int **)((int)_ArgList + 4);
              local_220 = *(int **)_ArgList;
              if ((local_214 & 0x810) == 0) {
                local_224 = local_220;
                if (local_220 == (int *)0x0) {
                  local_220 = (int *)PTR_DAT_03240080;
                  local_224 = (int *)PTR_DAT_03240080;
                }
                for (; (piVar5 != (int *)0x0 &&
                       (piVar5 = (int *)((int)piVar5 + -1), *(char *)local_224 != '\0'));
                    local_224 = (int *)((int)local_224 + 1)) {
                }
                local_224 = (int *)((int)local_224 - (int)local_220);
              }
              else {
                if (local_220 == (int *)0x0) {
                  local_220 = (int *)PTR_u__null__03240084;
                }
                local_23c = 1;
                for (piVar13 = local_220;
                    (piVar5 != (int *)0x0 &&
                    (piVar5 = (int *)((int)piVar5 + -1), *(wchar_t *)piVar13 != L'\0'));
                    piVar13 = (int *)((int)piVar13 + 2)) {
                }
                local_224 = (int *)((int)piVar13 - (int)local_220 >> 1);
              }
              goto LAB_00a6782c;
            }
            if (local_215 == 0x75) goto LAB_00a674f7;
            if (local_215 != 0x78) goto LAB_00a6782c;
            local_260 = 0x27;
LAB_00a6767f:
            local_224 = (int *)0x10;
            if ((local_214 & 0x80) != 0) {
              local_22f = (char)local_260 + 'Q';
              local_230 = 0x30;
              local_234 = 2;
            }
            goto LAB_00a67501;
          }
          if (local_215 == 0x70) {
            local_21c = (int *)0x8;
LAB_00a67653:
            local_260 = 7;
            goto LAB_00a6767f;
          }
          if ((char)local_215 < 'e') goto LAB_00a6782c;
          if ((char)local_215 < 'h') goto LAB_00a672b0;
          if (local_215 == 0x69) goto LAB_00a674f0;
          if (local_215 != 0x6e) {
            if (local_215 != 0x6f) goto LAB_00a6782c;
            local_224 = (int *)0x8;
            if ((local_214 & 0x80) != 0) {
              local_214 = local_214 | 0x200;
            }
            goto LAB_00a67501;
          }
          piVar5 = *(int **)_ArgList;
          local_228 = (int **)((int)_ArgList + 4);
          iVar9 = __get_printf_count_output();
          if (iVar9 == 0) goto LAB_00a66edd;
          if ((local_214 & 0x20) == 0) {
            *piVar5 = local_22c;
          }
          else {
            *(wchar_t *)piVar5 = (wchar_t)local_22c;
          }
          local_25c = 1;
        }
        if (local_258 != (int *)0x0) {
          _free(local_258);
          local_258 = (int *)0x0;
        }
      }
      local_215 = *local_240;
      _Format = (char *)local_240;
      _ArgList = (va_list)local_228;
    } while (local_215 != 0);
    if ((local_244 == 0) || (local_244 == 7)) goto LAB_00a679f8;
    piVar5 = __errno();
    *piVar5 = 0x16;
  }
  __invalid_parameter(0,0,0,0,0);
  if (local_248 != '\0') {
    *(uint *)(local_24c + 0x70) = *(uint *)(local_24c + 0x70) & 0xfffffffd;
  }
LAB_00a67a11:
  iVar9 = ___security_check_cookie_4();
  return iVar9;
}



// Library Function - Single Match
//  int __cdecl x_ismbbtype_l(struct localeinfo_struct *,unsigned int,int,int)
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl x_ismbbtype_l(localeinfo_struct *param_1,uint param_2,int param_3,int param_4)

{
  uint uVar1;
  int local_14;
  int local_10;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,param_1);
  if ((*(byte *)(local_10 + 0x1d + (param_2 & 0xff)) & (byte)param_4) == 0) {
    if (param_3 == 0) {
      uVar1 = 0;
    }
    else {
      uVar1 = (uint)*(ushort *)(*(int *)(local_14 + 200) + (param_2 & 0xff) * 2) & param_3;
    }
    if (uVar1 == 0) goto LAB_00a67a86;
  }
  uVar1 = 1;
LAB_00a67a86:
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return uVar1;
}



// Library Function - Single Match
//  __ismbblead
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

int __cdecl __ismbblead(uint _C)

{
  int iVar1;
  
  iVar1 = x_ismbbtype_l((localeinfo_struct *)0x0,_C,0,4);
  return iVar1;
}



// Library Function - Single Match
//  _strrchr
// 
// Library: Visual Studio 2008 Release

char * __cdecl _strrchr(char *_Str,int _Ch)

{
  char cVar1;
  int iVar2;
  char *pcVar3;
  char *pcVar4;
  
  iVar2 = -1;
  do {
    pcVar4 = _Str;
    if (iVar2 == 0) break;
    iVar2 = iVar2 + -1;
    pcVar4 = _Str + 1;
    cVar1 = *_Str;
    _Str = pcVar4;
  } while (cVar1 != '\0');
  iVar2 = -(iVar2 + 1);
  pcVar4 = pcVar4 + -1;
  do {
    pcVar3 = pcVar4;
    if (iVar2 == 0) break;
    iVar2 = iVar2 + -1;
    pcVar3 = pcVar4 + -1;
    cVar1 = *pcVar4;
    pcVar4 = pcVar3;
  } while ((char)_Ch != cVar1);
  pcVar3 = pcVar3 + 1;
  if (*pcVar3 != (char)_Ch) {
    pcVar3 = (char *)0x0;
  }
  return pcVar3;
}



// Library Function - Multiple Matches With Different Base Names
//  __atodbl_l
//  __atoflt_l
// 
// Library: Visual Studio 2008 Release

int __cdecl FID_conflict___atoflt_l(_CRT_FLOAT *_Result,char *_Str,_locale_t _Locale)

{
  INTRNCVT_STATUS IVar1;
  int iVar2;
  char *local_2c;
  localeinfo_struct local_28;
  int local_20;
  char local_1c;
  uint local_18;
  _LDBL12 local_14;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_28,_Locale);
  local_18 = ___strgtold12_l(&local_14,&local_2c,_Str,0,0,0,0,&local_28);
  IVar1 = __ld12tod(&local_14,(_CRT_DOUBLE *)_Result);
  if ((local_18 & 3) == 0) {
    if (IVar1 == INTRNCVT_OVERFLOW) {
LAB_00a67b36:
      if (local_1c != '\0') {
        *(uint *)(local_20 + 0x70) = *(uint *)(local_20 + 0x70) & 0xfffffffd;
      }
      goto LAB_00a67b76;
    }
    if (IVar1 != INTRNCVT_UNDERFLOW) {
LAB_00a67b68:
      if (local_1c != '\0') {
        *(uint *)(local_20 + 0x70) = *(uint *)(local_20 + 0x70) & 0xfffffffd;
      }
      goto LAB_00a67b76;
    }
  }
  else if ((local_18 & 1) == 0) {
    if ((local_18 & 2) == 0) goto LAB_00a67b68;
    goto LAB_00a67b36;
  }
  if (local_1c != '\0') {
    *(uint *)(local_20 + 0x70) = *(uint *)(local_20 + 0x70) & 0xfffffffd;
  }
LAB_00a67b76:
  iVar2 = ___security_check_cookie_4();
  return iVar2;
}



// Library Function - Multiple Matches With Different Base Names
//  __atodbl_l
//  __atoflt_l
// 
// Library: Visual Studio 2008 Release

int __cdecl FID_conflict___atoflt_l(_CRT_FLOAT *_Result,char *_Str,_locale_t _Locale)

{
  INTRNCVT_STATUS IVar1;
  int iVar2;
  char *local_2c;
  localeinfo_struct local_28;
  int local_20;
  char local_1c;
  uint local_18;
  _LDBL12 local_14;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_28,_Locale);
  local_18 = ___strgtold12_l(&local_14,&local_2c,_Str,0,0,0,0,&local_28);
  IVar1 = __ld12tof(&local_14,_Result);
  if ((local_18 & 3) == 0) {
    if (IVar1 == INTRNCVT_OVERFLOW) {
LAB_00a67bde:
      if (local_1c != '\0') {
        *(uint *)(local_20 + 0x70) = *(uint *)(local_20 + 0x70) & 0xfffffffd;
      }
      goto LAB_00a67c1e;
    }
    if (IVar1 != INTRNCVT_UNDERFLOW) {
LAB_00a67c10:
      if (local_1c != '\0') {
        *(uint *)(local_20 + 0x70) = *(uint *)(local_20 + 0x70) & 0xfffffffd;
      }
      goto LAB_00a67c1e;
    }
  }
  else if ((local_18 & 1) == 0) {
    if ((local_18 & 2) == 0) goto LAB_00a67c10;
    goto LAB_00a67bde;
  }
  if (local_1c != '\0') {
    *(uint *)(local_20 + 0x70) = *(uint *)(local_20 + 0x70) & 0xfffffffd;
  }
LAB_00a67c1e:
  iVar2 = ___security_check_cookie_4();
  return iVar2;
}



// Library Function - Single Match
//  __fptostr
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl __fptostr(char *_Buf,size_t _SizeInBytes,int _Digits,STRFLT _PtFlt)

{
  int *piVar1;
  int iVar2;
  char *pcVar3;
  size_t sVar4;
  char cVar5;
  char *pcVar6;
  errno_t eVar7;
  
  pcVar6 = _PtFlt->mantissa;
  if ((_Buf == (char *)0x0) || (_SizeInBytes == 0)) {
    piVar1 = __errno();
    eVar7 = 0x16;
    *piVar1 = 0x16;
  }
  else {
    *_Buf = '\0';
    iVar2 = _Digits;
    if (_Digits < 1) {
      iVar2 = 0;
    }
    if (iVar2 + 1U < _SizeInBytes) {
      *_Buf = '0';
      pcVar3 = _Buf + 1;
      if (0 < _Digits) {
        do {
          cVar5 = *pcVar6;
          if (cVar5 == '\0') {
            cVar5 = '0';
          }
          else {
            pcVar6 = pcVar6 + 1;
          }
          *pcVar3 = cVar5;
          pcVar3 = pcVar3 + 1;
          _Digits = _Digits + -1;
        } while (0 < _Digits);
      }
      *pcVar3 = '\0';
      if ((-1 < _Digits) && ('4' < *pcVar6)) {
        while (pcVar3 = pcVar3 + -1, *pcVar3 == '9') {
          *pcVar3 = '0';
        }
        *pcVar3 = *pcVar3 + '\x01';
      }
      if (*_Buf == '1') {
        _PtFlt->decpt = _PtFlt->decpt + 1;
      }
      else {
        sVar4 = _strlen(_Buf + 1);
        _memmove(_Buf,_Buf + 1,sVar4 + 1);
      }
      return 0;
    }
    piVar1 = __errno();
    eVar7 = 0x22;
    *piVar1 = 0x22;
  }
  __invalid_parameter(0,0,0,0,0);
  return eVar7;
}



// Library Function - Single Match
//  ___dtold
// 
// Library: Visual Studio 2008 Release

void ___dtold(uint *param_1,uint *param_2)

{
  uint uVar1;
  ushort uVar2;
  ushort uVar3;
  ushort uVar4;
  uint local_8;
  
  uVar2 = *(ushort *)((int)param_2 + 6) >> 4;
  uVar4 = *(ushort *)((int)param_2 + 6) & 0x8000;
  uVar3 = uVar2 & 0x7ff;
  uVar1 = *param_2;
  local_8 = 0x80000000;
  if ((uVar2 & 0x7ff) == 0) {
    if (((param_2[1] & 0xfffff) == 0) && (uVar1 == 0)) {
      param_1[1] = 0;
      *param_1 = 0;
      goto LAB_00a67da0;
    }
    uVar3 = uVar3 + 0x3c01;
    local_8 = 0;
  }
  else if (uVar3 == 0x7ff) {
    uVar3 = 0x7fff;
  }
  else {
    uVar3 = uVar3 + 0x3c00;
  }
  param_1[1] = uVar1 >> 0x15 | (param_2[1] & 0xfffff) << 0xb | local_8;
  *param_1 = uVar1 << 0xb;
  while (local_8 == 0) {
    uVar1 = param_1[1];
    uVar3 = uVar3 - 1;
    param_1[1] = uVar1 * 2 | *param_1 >> 0x1f;
    *param_1 = *param_1 * 2;
    local_8 = uVar1 * 2 & 0x80000000;
  }
  uVar4 = uVar4 | uVar3;
LAB_00a67da0:
  *(ushort *)(param_1 + 2) = uVar4;
  return;
}



// Library Function - Single Match
//  __fltout2
// 
// Library: Visual Studio 2008 Release

STRFLT __cdecl __fltout2(_CRT_DOUBLE _Dbl,STRFLT _Flt,char *_ResultStr,size_t _SizeInBytes)

{
  int iVar1;
  errno_t eVar2;
  STRFLT p_Var3;
  undefined4 in_stack_ffffffb0;
  undefined2 uVar4;
  short local_30;
  char local_2e;
  char local_2c [24];
  undefined4 local_14;
  undefined4 uStack_10;
  undefined2 uStack_c;
  uint local_8;
  
  uVar4 = (undefined2)((uint)in_stack_ffffffb0 >> 0x10);
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  ___dtold(&local_14,&_Dbl);
  iVar1 = __I10_OUTPUT(local_14,uStack_10,CONCAT22(uVar4,uStack_c),0x11,0,&local_30);
  _Flt->flag = iVar1;
  _Flt->sign = (int)local_2e;
  _Flt->decpt = (int)local_30;
  eVar2 = _strcpy_s(_ResultStr,_SizeInBytes,local_2c);
  if (eVar2 != 0) {
                    // WARNING: Subroutine does not return
    __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
  }
  _Flt->mantissa = _ResultStr;
  p_Var3 = (STRFLT)___security_check_cookie_4();
  return p_Var3;
}



// Library Function - Single Match
//  __controlfp_s
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl __controlfp_s(uint *_CurrentState,uint _NewValue,uint _Mask)

{
  uint uVar1;
  int *piVar2;
  errno_t eVar3;
  
  uVar1 = _Mask & 0xfff7ffff;
  if ((_NewValue & uVar1 & 0xfcf0fce0) == 0) {
    if (_CurrentState == (uint *)0x0) {
      __control87(_NewValue,uVar1);
    }
    else {
      uVar1 = __control87(_NewValue,uVar1);
      *_CurrentState = uVar1;
    }
    eVar3 = 0;
  }
  else {
    if (_CurrentState != (uint *)0x0) {
      uVar1 = __control87(0,0);
      *_CurrentState = uVar1;
    }
    piVar2 = __errno();
    eVar3 = 0x16;
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  return eVar3;
}



// Library Function - Single Match
//  __mbsnbicmp_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __mbsnbicmp_l(uchar *_Str1,uchar *_Str2,size_t _MaxCount,_locale_t _Locale)

{
  size_t sVar1;
  uchar *puVar2;
  int iVar3;
  int *piVar4;
  uint uVar5;
  byte *pbVar6;
  _LocaleUpdate local_1c [4];
  int local_18;
  int local_14;
  char local_10;
  ushort local_c;
  ushort local_8;
  
  _LocaleUpdate::_LocaleUpdate(local_1c,_Locale);
  if (_MaxCount == 0) {
    if (local_10 != '\0') {
      *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
    }
    iVar3 = 0;
  }
  else if (*(int *)(local_18 + 8) == 0) {
    iVar3 = __strnicmp((char *)_Str1,(char *)_Str2,_MaxCount);
    if (local_10 != '\0') {
      *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
    }
  }
  else if (_Str1 == (uchar *)0x0) {
    piVar4 = __errno();
    *piVar4 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_10 != '\0') {
      *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
    }
    iVar3 = 0x7fffffff;
  }
  else {
    if (_Str2 != (uchar *)0x0) {
      do {
        uVar5 = (uint)*_Str1;
        sVar1 = _MaxCount - 1;
        puVar2 = _Str1 + 1;
        if ((*(byte *)(uVar5 + 0x1d + local_18) & 4) == 0) {
          if ((*(byte *)(uVar5 + local_18 + 0x1d) & 0x10) != 0) {
            uVar5 = (uint)*(byte *)(uVar5 + local_18 + 0x11d);
          }
          local_c = (ushort)uVar5;
          _Str1 = puVar2;
LAB_00a6801e:
          uVar5 = (uint)*_Str2;
          pbVar6 = _Str2 + 1;
          if ((*(byte *)(uVar5 + 0x1d + local_18) & 4) == 0) {
            if ((*(byte *)(uVar5 + local_18 + 0x1d) & 0x10) != 0) {
              uVar5 = (uint)*(byte *)(uVar5 + local_18 + 0x11d);
            }
            goto LAB_00a68098;
          }
          if (sVar1 == 0) {
LAB_00a68038:
            _MaxCount = sVar1;
            local_8 = 0;
          }
          else {
            sVar1 = _MaxCount - 2;
            if (*pbVar6 == 0) goto LAB_00a68038;
            local_8 = CONCAT11(*_Str2,*pbVar6);
            pbVar6 = _Str2 + 2;
            _MaxCount = sVar1;
            if ((local_8 < *(ushort *)(local_18 + 0x10)) || (*(ushort *)(local_18 + 0x12) < local_8)
               ) {
              if ((*(ushort *)(local_18 + 0x16) <= local_8) &&
                 (local_8 <= *(ushort *)(local_18 + 0x18))) {
                local_8 = local_8 + *(short *)(local_18 + 0x1a);
              }
            }
            else {
              local_8 = local_8 + *(short *)(local_18 + 0x14);
            }
          }
        }
        else {
          if (sVar1 != 0) {
            if (*puVar2 == '\0') {
              local_c = 0;
              _Str1 = puVar2;
            }
            else {
              local_c = CONCAT11(*_Str1,*puVar2);
              _Str1 = _Str1 + 2;
              if ((local_c < *(ushort *)(local_18 + 0x10)) ||
                 (*(ushort *)(local_18 + 0x12) < local_c)) {
                if ((*(ushort *)(local_18 + 0x16) <= local_c) &&
                   (local_c <= *(ushort *)(local_18 + 0x18))) {
                  local_c = local_c + *(short *)(local_18 + 0x1a);
                }
              }
              else {
                local_c = local_c + *(short *)(local_18 + 0x14);
              }
            }
            goto LAB_00a6801e;
          }
          uVar5 = (uint)*_Str2;
          if ((*(byte *)(uVar5 + 0x1d + local_18) & 4) != 0) {
LAB_00a680b2:
            if (local_10 != '\0') {
              *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
            }
            return 0;
          }
          local_c = 0;
          pbVar6 = _Str2;
          _Str1 = puVar2;
LAB_00a68098:
          local_8 = (ushort)uVar5;
          _MaxCount = sVar1;
        }
        if (local_8 != local_c) {
          iVar3 = (-(uint)(local_8 < local_c) & 2) - 1;
          if (local_10 == '\0') {
            return iVar3;
          }
          *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
          return iVar3;
        }
        if ((local_c == 0) || (_Str2 = pbVar6, _MaxCount == 0)) goto LAB_00a680b2;
      } while( true );
    }
    piVar4 = __errno();
    *piVar4 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_10 != '\0') {
      *(uint *)(local_14 + 0x70) = *(uint *)(local_14 + 0x70) & 0xfffffffd;
    }
    iVar3 = 0x7fffffff;
  }
  return iVar3;
}



// Library Function - Single Match
//  __mbsnbicmp
// 
// Library: Visual Studio 2008 Release

int __cdecl __mbsnbicmp(uchar *_Str1,uchar *_Str2,size_t _MaxCount)

{
  int iVar1;
  
  iVar1 = __mbsnbicmp_l(_Str1,_Str2,_MaxCount,(_locale_t)0x0);
  return iVar1;
}



// Library Function - Single Match
//  __mbsnbcmp_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __mbsnbcmp_l(uchar *_Str1,uchar *_Str2,size_t _MaxCount,_locale_t _Locale)

{
  size_t sVar1;
  uchar *puVar2;
  byte bVar3;
  int iVar4;
  int *piVar5;
  uint uVar6;
  ushort uVar7;
  byte *pbVar8;
  _LocaleUpdate local_14 [4];
  int local_10;
  int local_c;
  char local_8;
  
  if (_MaxCount == 0) {
    iVar4 = 0;
  }
  else {
    _LocaleUpdate::_LocaleUpdate(local_14,_Locale);
    if (*(int *)(local_10 + 8) == 0) {
      iVar4 = _strncmp((char *)_Str1,(char *)_Str2,_MaxCount);
      if (local_8 != '\0') {
        *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
      }
    }
    else if (_Str1 == (uchar *)0x0) {
      piVar5 = __errno();
      *piVar5 = 0x16;
      __invalid_parameter(0,0,0,0,0);
      if (local_8 != '\0') {
        *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
      }
      iVar4 = 0x7fffffff;
    }
    else {
      if (_Str2 != (uchar *)0x0) {
        do {
          bVar3 = *_Str1;
          uVar7 = (ushort)bVar3;
          sVar1 = _MaxCount - 1;
          puVar2 = _Str1 + 1;
          if ((*(byte *)(bVar3 + 0x1d + local_10) & 4) == 0) {
LAB_00a68202:
            _Str1 = puVar2;
            uVar6 = (uint)*_Str2;
            pbVar8 = _Str2 + 1;
            if ((*(byte *)(uVar6 + 0x1d + local_10) & 4) != 0) {
              if (sVar1 != 0) {
                sVar1 = _MaxCount - 2;
                if (*pbVar8 != 0) {
                  uVar6 = (uint)CONCAT11(*_Str2,*pbVar8);
                  pbVar8 = _Str2 + 2;
                  goto LAB_00a68234;
                }
              }
              _MaxCount = sVar1;
              uVar6 = 0;
              sVar1 = _MaxCount;
            }
          }
          else {
            if (sVar1 != 0) {
              if (*puVar2 == '\0') {
                uVar7 = 0;
              }
              else {
                uVar7 = CONCAT11(bVar3,*puVar2);
                puVar2 = _Str1 + 2;
              }
              goto LAB_00a68202;
            }
            uVar6 = (uint)*_Str2;
            uVar7 = 0;
            pbVar8 = _Str2;
            _Str1 = puVar2;
            if ((*(byte *)(uVar6 + 0x1d + local_10) & 4) != 0) {
LAB_00a681d2:
              if (local_8 != '\0') {
                *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
              }
              return 0;
            }
          }
LAB_00a68234:
          _MaxCount = sVar1;
          if ((ushort)uVar6 != uVar7) {
            iVar4 = (-(uint)((ushort)uVar6 < uVar7) & 2) - 1;
            if (local_8 == '\0') {
              return iVar4;
            }
            *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
            return iVar4;
          }
          if ((uVar7 == 0) || (_Str2 = pbVar8, _MaxCount == 0)) goto LAB_00a681d2;
        } while( true );
      }
      piVar5 = __errno();
      *piVar5 = 0x16;
      __invalid_parameter(0,0,0,0,0);
      if (local_8 != '\0') {
        *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
      }
      iVar4 = 0x7fffffff;
    }
  }
  return iVar4;
}



// Library Function - Single Match
//  __mbsnbcmp
// 
// Library: Visual Studio 2008 Release

int __cdecl __mbsnbcmp(uchar *_Str1,uchar *_Str2,size_t _MaxCount)

{
  int iVar1;
  
  iVar1 = __mbsnbcmp_l(_Str1,_Str2,_MaxCount,(_locale_t)0x0);
  return iVar1;
}



// Library Function - Single Match
//  __wcsnicmp_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __wcsnicmp_l(wchar_t *_Str1,wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale)

{
  wchar_t wVar1;
  wchar_t wVar2;
  wint_t wVar3;
  wint_t wVar4;
  int iVar5;
  int *piVar6;
  uint uVar7;
  uint uVar8;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  iVar5 = 0;
  if (_MaxCount != 0) {
    if ((_Str1 == (wchar_t *)0x0) || (_Str2 == (wchar_t *)0x0)) {
      piVar6 = __errno();
      *piVar6 = 0x16;
      __invalid_parameter(0,0,0,0,0);
      iVar5 = 0x7fffffff;
    }
    else {
      _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
      if ((local_14.locinfo)->lc_category[0].wlocale == (wchar_t *)0x0) {
        do {
          wVar1 = *_Str1;
          if ((0x40 < (ushort)wVar1) && ((ushort)wVar1 < 0x5b)) {
            wVar1 = wVar1 + L' ';
          }
          uVar8 = (uint)(ushort)wVar1;
          wVar2 = *_Str2;
          if ((0x40 < (ushort)wVar2) && ((ushort)wVar2 < 0x5b)) {
            wVar2 = wVar2 + L' ';
          }
          _Str1 = _Str1 + 1;
          _Str2 = _Str2 + 1;
          _MaxCount = _MaxCount - 1;
          uVar7 = (uint)(ushort)wVar2;
        } while (((_MaxCount != 0) && (wVar1 != L'\0')) && (wVar1 == wVar2));
      }
      else {
        do {
          wVar3 = __towlower_l(*_Str1,&local_14);
          uVar8 = (uint)wVar3;
          wVar4 = __towlower_l(*_Str2,&local_14);
          _Str1 = _Str1 + 1;
          _Str2 = _Str2 + 1;
          _MaxCount = _MaxCount - 1;
          uVar7 = (uint)wVar4;
          if ((_MaxCount == 0) || (wVar3 == 0)) break;
        } while (wVar3 == wVar4);
      }
      iVar5 = uVar8 - uVar7;
      if (local_8 != '\0') {
        *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
      }
    }
  }
  return iVar5;
}



// Library Function - Single Match
//  __wcsnicmp
// 
// Library: Visual Studio 2008 Release

int __cdecl __wcsnicmp(wchar_t *_Str1,wchar_t *_Str2,size_t _MaxCount)

{
  wchar_t wVar1;
  wchar_t wVar2;
  int iVar3;
  int *piVar4;
  
  if (DAT_032eb230 == 0) {
    iVar3 = 0;
    if (_MaxCount != 0) {
      if ((_Str1 == (wchar_t *)0x0) || (_Str2 == (wchar_t *)0x0)) {
        piVar4 = __errno();
        *piVar4 = 0x16;
        __invalid_parameter(0,0,0,0,0);
        iVar3 = 0x7fffffff;
      }
      else {
        do {
          wVar1 = *_Str1;
          if ((0x40 < (ushort)wVar1) && ((ushort)wVar1 < 0x5b)) {
            wVar1 = wVar1 + L' ';
          }
          wVar2 = *_Str2;
          if ((0x40 < (ushort)wVar2) && ((ushort)wVar2 < 0x5b)) {
            wVar2 = wVar2 + L' ';
          }
          _Str1 = _Str1 + 1;
          _Str2 = _Str2 + 1;
          _MaxCount = _MaxCount - 1;
        } while (((_MaxCount != 0) && (wVar1 != L'\0')) && (wVar1 == wVar2));
        iVar3 = (uint)(ushort)wVar1 - (uint)(ushort)wVar2;
      }
    }
  }
  else {
    iVar3 = __wcsnicmp_l(_Str1,_Str2,_MaxCount,(_locale_t)0x0);
  }
  return iVar3;
}



// Library Function - Single Match
//  _wcsncmp
// 
// Library: Visual Studio 2008 Release

int __cdecl _wcsncmp(wchar_t *_Str1,wchar_t *_Str2,size_t _MaxCount)

{
  if (_MaxCount != 0) {
    for (; ((_MaxCount = _MaxCount - 1, _MaxCount != 0 && (*_Str1 != L'\0')) && (*_Str1 == *_Str2));
        _Str1 = _Str1 + 1) {
      _Str2 = _Str2 + 1;
    }
    return (uint)(ushort)*_Str1 - (uint)(ushort)*_Str2;
  }
  return 0;
}



// Library Function - Single Match
//  __strnicmp_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __strnicmp_l(char *_Str1,char *_Str2,size_t _MaxCount,_locale_t _Locale)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  if (_MaxCount == 0) {
    iVar2 = 0;
  }
  else {
    _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
    if ((_Str1 == (char *)0x0) || (_Str2 == (char *)0x0)) {
      piVar1 = __errno();
      *piVar1 = 0x16;
      __invalid_parameter(0,0,0,0,0);
      if (local_8 != '\0') {
        *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
      }
      iVar2 = 0x7fffffff;
    }
    else if (_MaxCount < 0x80000000) {
      if ((local_14.locinfo)->lc_category[0].wlocale == (wchar_t *)0x0) {
        iVar2 = ___ascii_strnicmp(_Str1,_Str2,_MaxCount);
      }
      else {
        do {
          iVar2 = __tolower_l((uint)(byte)*_Str1,&local_14);
          _Str1 = _Str1 + 1;
          iVar3 = __tolower_l((uint)(byte)*_Str2,&local_14);
          _Str2 = (char *)((byte *)_Str2 + 1);
          _MaxCount = _MaxCount - 1;
          if ((_MaxCount == 0) || (iVar2 == 0)) break;
        } while (iVar2 == iVar3);
        iVar2 = iVar2 - iVar3;
      }
      if (local_8 != '\0') {
        *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
      }
    }
    else {
      piVar1 = __errno();
      *piVar1 = 0x16;
      __invalid_parameter(0,0,0,0,0);
      if (local_8 != '\0') {
        *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
      }
      iVar2 = 0x7fffffff;
    }
  }
  return iVar2;
}



// Library Function - Single Match
//  __strnicmp
// 
// Library: Visual Studio 2008 Release

int __cdecl __strnicmp(char *_Str1,char *_Str2,size_t _MaxCount)

{
  int *piVar1;
  int iVar2;
  
  if (DAT_032eb230 == 0) {
    if (((_Str1 != (char *)0x0) && (_Str2 != (char *)0x0)) && (_MaxCount < 0x80000000)) {
      iVar2 = ___ascii_strnicmp(_Str1,_Str2,_MaxCount);
      return iVar2;
    }
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    iVar2 = 0x7fffffff;
  }
  else {
    iVar2 = __strnicmp_l(_Str1,_Str2,_MaxCount,(_locale_t)0x0);
  }
  return iVar2;
}



// Library Function - Single Match
//  __ld12tod
// 
// Library: Visual Studio 2008 Release

INTRNCVT_STATUS __cdecl __ld12tod(_LDBL12 *_Ifp,_CRT_DOUBLE *_D)

{
  uchar *puVar1;
  _LDBL12 *p_Var2;
  undefined4 uVar3;
  int iVar4;
  INTRNCVT_STATUS IVar5;
  int iVar6;
  byte bVar7;
  _LDBL12 **pp_Var8;
  _LDBL12 **pp_Var9;
  uint uVar10;
  undefined *puVar11;
  _LDBL12 *p_Var12;
  uint uVar13;
  int iVar14;
  int iVar15;
  bool bVar16;
  _LDBL12 *local_24 [2];
  int local_1c;
  uint local_18;
  uint local_14;
  uint local_10;
  int local_c;
  _LDBL12 *local_8;
  
  local_18 = *(ushort *)(_Ifp->ld12 + 10) & 0x8000;
  p_Var2 = *(_LDBL12 **)(_Ifp->ld12 + 6);
  local_24[0] = p_Var2;
  uVar3 = *(undefined4 *)(_Ifp->ld12 + 2);
  uVar13 = *(ushort *)(_Ifp->ld12 + 10) & 0x7fff;
  iVar14 = uVar13 - 0x3fff;
  iVar4 = (uint)*(ushort *)_Ifp->ld12 << 0x10;
  local_24[1] = (_LDBL12 *)uVar3;
  local_1c = iVar4;
  if (iVar14 == -0x3fff) {
    iVar14 = 0;
    iVar4 = 0;
    do {
      if (local_24[iVar4] != (_LDBL12 *)0x0) {
        local_24[0] = (_LDBL12 *)0x0;
        local_24[1] = (_LDBL12 *)0x0;
        IVar5 = INTRNCVT_UNDERFLOW;
        goto LAB_00a68a8f;
      }
      iVar4 = iVar4 + 1;
    } while (iVar4 < 3);
    IVar5 = INTRNCVT_OK;
  }
  else {
    _Ifp = (_LDBL12 *)0x0;
    iVar15 = DAT_03240ae8 - 1;
    iVar6 = (int)(DAT_03240ae8 + ((int)DAT_03240ae8 >> 0x1f & 0x1fU)) >> 5;
    uVar10 = DAT_03240ae8 & 0x8000001f;
    local_14 = iVar14;
    local_10 = iVar6;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xffffffe0) + 1;
    }
    pp_Var9 = local_24 + iVar6;
    bVar7 = (byte)(0x1f - uVar10);
    local_c = 0x1f - uVar10;
    if (((uint)*pp_Var9 & 1 << (bVar7 & 0x1f)) != 0) {
      p_Var12 = (_LDBL12 *)((uint)local_24[iVar6] & ~(-1 << (bVar7 & 0x1f)));
      while( true ) {
        if (p_Var12 != (_LDBL12 *)0x0) {
          iVar6 = (int)(iVar15 + (iVar15 >> 0x1f & 0x1fU)) >> 5;
          local_8 = (_LDBL12 *)0x0;
          puVar11 = (undefined *)(1 << (0x1f - ((byte)iVar15 & 0x1f) & 0x1f));
          pp_Var8 = local_24 + iVar6;
          _Ifp = (_LDBL12 *)((*pp_Var8)->ld12 + (int)puVar11);
          if (_Ifp < *pp_Var8) goto LAB_00a686c3;
          bVar16 = _Ifp < puVar11;
          do {
            local_8 = (_LDBL12 *)0x0;
            if (!bVar16) goto LAB_00a686ca;
LAB_00a686c3:
            do {
              local_8 = (_LDBL12 *)0x1;
LAB_00a686ca:
              iVar6 = iVar6 + -1;
              *pp_Var8 = _Ifp;
              if ((iVar6 < 0) || (local_8 == (_LDBL12 *)0x0)) {
                _Ifp = local_8;
                goto LAB_00a686d8;
              }
              local_8 = (_LDBL12 *)0x0;
              pp_Var8 = local_24 + iVar6;
              _Ifp = (_LDBL12 *)((*pp_Var8)->ld12 + 1);
            } while (_Ifp < *pp_Var8);
            bVar16 = _Ifp == (_LDBL12 *)0x0;
          } while( true );
        }
        iVar6 = iVar6 + 1;
        if (2 < iVar6) break;
        p_Var12 = local_24[iVar6];
      }
    }
LAB_00a686d8:
    *pp_Var9 = (_LDBL12 *)((uint)*pp_Var9 & -1 << ((byte)local_c & 0x1f));
    iVar6 = local_10 + 1;
    if (iVar6 < 3) {
      pp_Var9 = local_24 + iVar6;
      for (iVar15 = 3 - iVar6; iVar15 != 0; iVar15 = iVar15 + -1) {
        *pp_Var9 = (_LDBL12 *)0x0;
        pp_Var9 = pp_Var9 + 1;
      }
    }
    if (_Ifp != (_LDBL12 *)0x0) {
      iVar14 = uVar13 - 0x3ffe;
    }
    if (iVar14 < (int)(DAT_03240ae4 - DAT_03240ae8)) {
      local_24[0] = (_LDBL12 *)0x0;
      local_24[1] = (_LDBL12 *)0x0;
    }
    else {
      if (DAT_03240ae4 < iVar14) {
        if (iVar14 < DAT_03240ae0) {
          local_24[0] = (_LDBL12 *)((uint)local_24[0] & 0x7fffffff);
          iVar14 = iVar14 + DAT_03240af4;
          iVar4 = (int)(DAT_03240aec + ((int)DAT_03240aec >> 0x1f & 0x1fU)) >> 5;
          uVar13 = DAT_03240aec & 0x8000001f;
          if ((int)uVar13 < 0) {
            uVar13 = (uVar13 - 1 | 0xffffffe0) + 1;
          }
          local_10 = 0;
          _Ifp = (_LDBL12 *)0x0;
          local_8 = (_LDBL12 *)(0x20 - uVar13);
          do {
            local_14 = (uint)local_24[(int)_Ifp] & ~(-1 << ((byte)uVar13 & 0x1f));
            local_24[(int)_Ifp] =
                 (_LDBL12 *)((uint)local_24[(int)_Ifp] >> ((byte)uVar13 & 0x1f) | local_10);
            _Ifp = (_LDBL12 *)(_Ifp->ld12 + 1);
            local_10 = local_14 << ((byte)(0x20 - uVar13) & 0x1f);
          } while ((int)_Ifp < 3);
          iVar6 = 2;
          pp_Var9 = local_24 + (2 - iVar4);
          do {
            if (iVar6 < iVar4) {
              local_24[iVar6] = (_LDBL12 *)0x0;
            }
            else {
              local_24[iVar6] = *pp_Var9;
            }
            iVar6 = iVar6 + -1;
            pp_Var9 = pp_Var9 + -1;
          } while (-1 < iVar6);
          IVar5 = INTRNCVT_OK;
        }
        else {
          local_24[1] = (_LDBL12 *)0x0;
          local_1c = 0;
          local_24[0] = (_LDBL12 *)0x80000000;
          iVar14 = (int)(DAT_03240aec + ((int)DAT_03240aec >> 0x1f & 0x1fU)) >> 5;
          uVar13 = DAT_03240aec & 0x8000001f;
          if ((int)uVar13 < 0) {
            uVar13 = (uVar13 - 1 | 0xffffffe0) + 1;
          }
          local_10 = 0;
          _Ifp = (_LDBL12 *)0x0;
          local_8 = (_LDBL12 *)(0x20 - uVar13);
          do {
            p_Var2 = local_24[(int)_Ifp];
            local_14 = (uint)p_Var2 & ~(-1 << ((byte)uVar13 & 0x1f));
            local_24[(int)_Ifp] = (_LDBL12 *)((uint)p_Var2 >> ((byte)uVar13 & 0x1f) | local_10);
            _Ifp = (_LDBL12 *)(_Ifp->ld12 + 1);
            local_10 = local_14 << ((byte)(0x20 - uVar13) & 0x1f);
          } while ((int)_Ifp < 3);
          iVar4 = 2;
          pp_Var9 = local_24 + (2 - iVar14);
          do {
            if (iVar4 < iVar14) {
              local_24[iVar4] = (_LDBL12 *)0x0;
            }
            else {
              local_24[iVar4] = *pp_Var9;
            }
            iVar4 = iVar4 + -1;
            pp_Var9 = pp_Var9 + -1;
          } while (-1 < iVar4);
          iVar14 = DAT_03240af4 + DAT_03240ae0;
          IVar5 = INTRNCVT_OVERFLOW;
        }
        goto LAB_00a68a8f;
      }
      local_14 = DAT_03240ae4 - local_14;
      local_24[0] = p_Var2;
      local_24[1] = (_LDBL12 *)uVar3;
      iVar14 = (int)(local_14 + ((int)local_14 >> 0x1f & 0x1fU)) >> 5;
      uVar13 = local_14 & 0x8000001f;
      if ((int)uVar13 < 0) {
        uVar13 = (uVar13 - 1 | 0xffffffe0) + 1;
      }
      local_10 = 0;
      _Ifp = (_LDBL12 *)0x0;
      local_8 = (_LDBL12 *)(0x20 - uVar13);
      do {
        p_Var2 = local_24[(int)_Ifp];
        local_14 = (uint)p_Var2 & ~(-1 << ((byte)uVar13 & 0x1f));
        local_24[(int)_Ifp] = (_LDBL12 *)((uint)p_Var2 >> ((byte)uVar13 & 0x1f) | local_10);
        _Ifp = (_LDBL12 *)(_Ifp->ld12 + 1);
        local_10 = local_14 << ((byte)(0x20 - uVar13) & 0x1f);
      } while ((int)_Ifp < 3);
      iVar4 = 2;
      pp_Var9 = local_24 + (2 - iVar14);
      do {
        if (iVar4 < iVar14) {
          local_24[iVar4] = (_LDBL12 *)0x0;
        }
        else {
          local_24[iVar4] = *pp_Var9;
        }
        iVar4 = iVar4 + -1;
        pp_Var9 = pp_Var9 + -1;
      } while (-1 < iVar4);
      iVar4 = DAT_03240ae8 - 1;
      iVar14 = (int)(DAT_03240ae8 + ((int)DAT_03240ae8 >> 0x1f & 0x1fU)) >> 5;
      uVar13 = DAT_03240ae8 & 0x8000001f;
      local_10 = iVar14;
      if ((int)uVar13 < 0) {
        uVar13 = (uVar13 - 1 | 0xffffffe0) + 1;
      }
      bVar7 = (byte)(0x1f - uVar13);
      pp_Var9 = local_24 + iVar14;
      local_14 = 0x1f - uVar13;
      if (((uint)*pp_Var9 & 1 << (bVar7 & 0x1f)) != 0) {
        p_Var2 = (_LDBL12 *)((uint)local_24[iVar14] & ~(-1 << (bVar7 & 0x1f)));
        while (p_Var2 == (_LDBL12 *)0x0) {
          iVar14 = iVar14 + 1;
          if (2 < iVar14) goto LAB_00a6887b;
          p_Var2 = local_24[iVar14];
        }
        iVar14 = (int)(iVar4 + (iVar4 >> 0x1f & 0x1fU)) >> 5;
        bVar16 = false;
        p_Var12 = (_LDBL12 *)(1 << (0x1f - ((byte)iVar4 & 0x1f) & 0x1f));
        p_Var2 = local_24[iVar14];
        puVar1 = p_Var12->ld12 + (int)p_Var2->ld12;
        if ((puVar1 < p_Var2) || (puVar1 < p_Var12)) {
          bVar16 = true;
        }
        local_24[iVar14] = (_LDBL12 *)puVar1;
        while ((iVar14 = iVar14 + -1, -1 < iVar14 && (bVar16))) {
          p_Var2 = local_24[iVar14];
          puVar1 = p_Var2->ld12 + 1;
          bVar16 = false;
          if ((puVar1 < p_Var2) || (puVar1 == (uchar *)0x0)) {
            bVar16 = true;
          }
          local_24[iVar14] = (_LDBL12 *)puVar1;
        }
      }
LAB_00a6887b:
      *pp_Var9 = (_LDBL12 *)((uint)*pp_Var9 & -1 << ((byte)local_14 & 0x1f));
      iVar14 = local_10 + 1;
      if (iVar14 < 3) {
        pp_Var9 = local_24 + iVar14;
        for (iVar4 = 3 - iVar14; iVar4 != 0; iVar4 = iVar4 + -1) {
          *pp_Var9 = (_LDBL12 *)0x0;
          pp_Var9 = pp_Var9 + 1;
        }
      }
      uVar13 = DAT_03240aec + 1;
      iVar14 = (int)(uVar13 + ((int)uVar13 >> 0x1f & 0x1fU)) >> 5;
      uVar13 = uVar13 & 0x8000001f;
      if ((int)uVar13 < 0) {
        uVar13 = (uVar13 - 1 | 0xffffffe0) + 1;
      }
      local_10 = 0;
      _Ifp = (_LDBL12 *)0x0;
      local_8 = (_LDBL12 *)(0x20 - uVar13);
      do {
        p_Var2 = local_24[(int)_Ifp];
        local_14 = (uint)p_Var2 & ~(-1 << ((byte)uVar13 & 0x1f));
        local_24[(int)_Ifp] = (_LDBL12 *)((uint)p_Var2 >> ((byte)uVar13 & 0x1f) | local_10);
        _Ifp = (_LDBL12 *)(_Ifp->ld12 + 1);
        local_10 = local_14 << ((byte)(0x20 - uVar13) & 0x1f);
      } while ((int)_Ifp < 3);
      iVar4 = 2;
      pp_Var9 = local_24 + (2 - iVar14);
      do {
        if (iVar4 < iVar14) {
          local_24[iVar4] = (_LDBL12 *)0x0;
        }
        else {
          local_24[iVar4] = *pp_Var9;
        }
        iVar4 = iVar4 + -1;
        pp_Var9 = pp_Var9 + -1;
      } while (-1 < iVar4);
    }
    iVar14 = 0;
    IVar5 = INTRNCVT_UNDERFLOW;
  }
LAB_00a68a8f:
  uVar13 = iVar14 << (0x1fU - (char)DAT_03240aec & 0x1f) | -(uint)(local_18 != 0) & 0x80000000 |
           (uint)local_24[0];
  if (DAT_03240af0 == 0x40) {
    *(uint *)((int)&_D->x + 4) = uVar13;
    *(_LDBL12 **)&_D->x = local_24[1];
  }
  else if (DAT_03240af0 == 0x20) {
    *(uint *)&_D->x = uVar13;
  }
  return IVar5;
}



// Library Function - Multiple Matches With Different Base Names
//  __ld12tod
//  __ld12tof
// 
// Library: Visual Studio 2008 Release

INTRNCVT_STATUS __cdecl __ld12tof(_LDBL12 *_Ifp,_CRT_FLOAT *_F)

{
  uchar *puVar1;
  _LDBL12 *p_Var2;
  _LDBL12 *p_Var3;
  _LDBL12 *p_Var4;
  int iVar5;
  INTRNCVT_STATUS IVar6;
  byte bVar7;
  _LDBL12 **pp_Var8;
  _LDBL12 **pp_Var9;
  uint uVar10;
  undefined *puVar11;
  uint uVar12;
  int iVar13;
  float fVar14;
  int iVar15;
  bool bVar16;
  _LDBL12 *local_24;
  float local_20;
  _LDBL12 *local_1c;
  uint local_18;
  uint local_14;
  uint local_10;
  int local_c;
  _LDBL12 *local_8;
  
  local_18 = *(ushort *)(_Ifp->ld12 + 10) & 0x8000;
  p_Var2 = *(_LDBL12 **)(_Ifp->ld12 + 6);
  local_24 = p_Var2;
  fVar14 = *(float *)(_Ifp->ld12 + 2);
  uVar12 = *(ushort *)(_Ifp->ld12 + 10) & 0x7fff;
  iVar13 = uVar12 - 0x3fff;
  p_Var4 = (_LDBL12 *)((uint)*(ushort *)_Ifp->ld12 << 0x10);
  local_20 = fVar14;
  local_1c = p_Var4;
  if (iVar13 == -0x3fff) {
    iVar13 = 0;
    iVar5 = 0;
    do {
      if ((&local_24)[iVar5] != (_LDBL12 *)0x0) {
        local_24 = (_LDBL12 *)0x0;
        local_20 = 0.0;
        IVar6 = INTRNCVT_UNDERFLOW;
        goto LAB_00a68fd3;
      }
      iVar5 = iVar5 + 1;
    } while (iVar5 < 3);
    IVar6 = INTRNCVT_OK;
  }
  else {
    _Ifp = (_LDBL12 *)0x0;
    iVar15 = DAT_03240b00 - 1;
    iVar5 = (int)(DAT_03240b00 + ((int)DAT_03240b00 >> 0x1f & 0x1fU)) >> 5;
    uVar10 = DAT_03240b00 & 0x8000001f;
    local_14 = iVar13;
    local_10 = iVar5;
    if ((int)uVar10 < 0) {
      uVar10 = (uVar10 - 1 | 0xffffffe0) + 1;
    }
    pp_Var9 = &local_24 + iVar5;
    bVar7 = (byte)(0x1f - uVar10);
    local_c = 0x1f - uVar10;
    if (((uint)*pp_Var9 & 1 << (bVar7 & 0x1f)) != 0) {
      p_Var3 = (_LDBL12 *)((uint)(&local_24)[iVar5] & ~(-1 << (bVar7 & 0x1f)));
      while( true ) {
        if (p_Var3 != (_LDBL12 *)0x0) {
          iVar5 = (int)(iVar15 + (iVar15 >> 0x1f & 0x1fU)) >> 5;
          local_8 = (_LDBL12 *)0x0;
          puVar11 = (undefined *)(1 << (0x1f - ((byte)iVar15 & 0x1f) & 0x1f));
          pp_Var8 = &local_24 + iVar5;
          _Ifp = (_LDBL12 *)((*pp_Var8)->ld12 + (int)puVar11);
          if (_Ifp < *pp_Var8) goto LAB_00a68c07;
          bVar16 = _Ifp < puVar11;
          do {
            local_8 = (_LDBL12 *)0x0;
            if (!bVar16) goto LAB_00a68c0e;
LAB_00a68c07:
            do {
              local_8 = (_LDBL12 *)0x1;
LAB_00a68c0e:
              iVar5 = iVar5 + -1;
              *pp_Var8 = _Ifp;
              if ((iVar5 < 0) || (local_8 == (_LDBL12 *)0x0)) {
                _Ifp = local_8;
                goto LAB_00a68c1c;
              }
              local_8 = (_LDBL12 *)0x0;
              pp_Var8 = &local_24 + iVar5;
              _Ifp = (_LDBL12 *)((*pp_Var8)->ld12 + 1);
            } while (_Ifp < *pp_Var8);
            bVar16 = _Ifp == (_LDBL12 *)0x0;
          } while( true );
        }
        iVar5 = iVar5 + 1;
        if (2 < iVar5) break;
        p_Var3 = (&local_24)[iVar5];
      }
    }
LAB_00a68c1c:
    *pp_Var9 = (_LDBL12 *)((uint)*pp_Var9 & -1 << ((byte)local_c & 0x1f));
    iVar5 = local_10 + 1;
    if (iVar5 < 3) {
      pp_Var9 = &local_24 + iVar5;
      for (iVar15 = 3 - iVar5; iVar15 != 0; iVar15 = iVar15 + -1) {
        *pp_Var9 = (_LDBL12 *)0x0;
        pp_Var9 = pp_Var9 + 1;
      }
    }
    if (_Ifp != (_LDBL12 *)0x0) {
      iVar13 = uVar12 - 0x3ffe;
    }
    if (iVar13 < (int)(DAT_03240afc - DAT_03240b00)) {
      local_24 = (_LDBL12 *)0x0;
      local_20 = 0.0;
    }
    else {
      if (DAT_03240afc < iVar13) {
        if (iVar13 < DAT_03240af8) {
          local_24 = (_LDBL12 *)((uint)local_24 & 0x7fffffff);
          iVar13 = iVar13 + DAT_03240b0c;
          iVar5 = (int)(DAT_03240b04 + ((int)DAT_03240b04 >> 0x1f & 0x1fU)) >> 5;
          uVar12 = DAT_03240b04 & 0x8000001f;
          if ((int)uVar12 < 0) {
            uVar12 = (uVar12 - 1 | 0xffffffe0) + 1;
          }
          local_10 = 0;
          _Ifp = (_LDBL12 *)0x0;
          local_8 = (_LDBL12 *)(0x20 - uVar12);
          do {
            local_14 = (uint)(&local_24)[(int)_Ifp] & ~(-1 << ((byte)uVar12 & 0x1f));
            (&local_24)[(int)_Ifp] =
                 (_LDBL12 *)((uint)(&local_24)[(int)_Ifp] >> ((byte)uVar12 & 0x1f) | local_10);
            _Ifp = (_LDBL12 *)(_Ifp->ld12 + 1);
            local_10 = local_14 << ((byte)(0x20 - uVar12) & 0x1f);
          } while ((int)_Ifp < 3);
          iVar15 = 2;
          pp_Var9 = &local_1c + -iVar5;
          do {
            if (iVar15 < iVar5) {
              (&local_24)[iVar15] = (_LDBL12 *)0x0;
            }
            else {
              (&local_24)[iVar15] = *pp_Var9;
            }
            iVar15 = iVar15 + -1;
            pp_Var9 = pp_Var9 + -1;
          } while (-1 < iVar15);
          IVar6 = INTRNCVT_OK;
        }
        else {
          local_20 = 0.0;
          local_1c = (_LDBL12 *)0x0;
          local_24 = (_LDBL12 *)0x80000000;
          iVar13 = (int)(DAT_03240b04 + ((int)DAT_03240b04 >> 0x1f & 0x1fU)) >> 5;
          uVar12 = DAT_03240b04 & 0x8000001f;
          if ((int)uVar12 < 0) {
            uVar12 = (uVar12 - 1 | 0xffffffe0) + 1;
          }
          local_10 = 0;
          _Ifp = (_LDBL12 *)0x0;
          local_8 = (_LDBL12 *)(0x20 - uVar12);
          do {
            p_Var2 = (&local_24)[(int)_Ifp];
            local_14 = (uint)p_Var2 & ~(-1 << ((byte)uVar12 & 0x1f));
            (&local_24)[(int)_Ifp] = (_LDBL12 *)((uint)p_Var2 >> ((byte)uVar12 & 0x1f) | local_10);
            _Ifp = (_LDBL12 *)(_Ifp->ld12 + 1);
            local_10 = local_14 << ((byte)(0x20 - uVar12) & 0x1f);
          } while ((int)_Ifp < 3);
          iVar5 = 2;
          pp_Var9 = &local_1c + -iVar13;
          do {
            if (iVar5 < iVar13) {
              (&local_24)[iVar5] = (_LDBL12 *)0x0;
            }
            else {
              (&local_24)[iVar5] = *pp_Var9;
            }
            iVar5 = iVar5 + -1;
            pp_Var9 = pp_Var9 + -1;
          } while (-1 < iVar5);
          iVar13 = DAT_03240b0c + DAT_03240af8;
          IVar6 = INTRNCVT_OVERFLOW;
        }
        goto LAB_00a68fd3;
      }
      local_14 = DAT_03240afc - local_14;
      local_24 = p_Var2;
      local_20 = fVar14;
      iVar13 = (int)(local_14 + ((int)local_14 >> 0x1f & 0x1fU)) >> 5;
      uVar12 = local_14 & 0x8000001f;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xffffffe0) + 1;
      }
      local_10 = 0;
      _Ifp = (_LDBL12 *)0x0;
      local_8 = (_LDBL12 *)(0x20 - uVar12);
      do {
        p_Var2 = (&local_24)[(int)_Ifp];
        local_14 = (uint)p_Var2 & ~(-1 << ((byte)uVar12 & 0x1f));
        (&local_24)[(int)_Ifp] = (_LDBL12 *)((uint)p_Var2 >> ((byte)uVar12 & 0x1f) | local_10);
        _Ifp = (_LDBL12 *)(_Ifp->ld12 + 1);
        local_10 = local_14 << ((byte)(0x20 - uVar12) & 0x1f);
      } while ((int)_Ifp < 3);
      iVar5 = 2;
      pp_Var9 = &local_1c + -iVar13;
      do {
        if (iVar5 < iVar13) {
          (&local_24)[iVar5] = (_LDBL12 *)0x0;
        }
        else {
          (&local_24)[iVar5] = *pp_Var9;
        }
        iVar5 = iVar5 + -1;
        pp_Var9 = pp_Var9 + -1;
      } while (-1 < iVar5);
      iVar5 = DAT_03240b00 - 1;
      iVar13 = (int)(DAT_03240b00 + ((int)DAT_03240b00 >> 0x1f & 0x1fU)) >> 5;
      uVar12 = DAT_03240b00 & 0x8000001f;
      local_10 = iVar13;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xffffffe0) + 1;
      }
      bVar7 = (byte)(0x1f - uVar12);
      pp_Var9 = &local_24 + iVar13;
      local_14 = 0x1f - uVar12;
      if (((uint)*pp_Var9 & 1 << (bVar7 & 0x1f)) != 0) {
        p_Var2 = (_LDBL12 *)((uint)(&local_24)[iVar13] & ~(-1 << (bVar7 & 0x1f)));
        while (p_Var2 == (_LDBL12 *)0x0) {
          iVar13 = iVar13 + 1;
          if (2 < iVar13) goto LAB_00a68dbf;
          p_Var2 = (&local_24)[iVar13];
        }
        iVar13 = (int)(iVar5 + (iVar5 >> 0x1f & 0x1fU)) >> 5;
        bVar16 = false;
        p_Var4 = (_LDBL12 *)(1 << (0x1f - ((byte)iVar5 & 0x1f) & 0x1f));
        p_Var2 = (&local_24)[iVar13];
        puVar1 = p_Var4->ld12 + (int)p_Var2->ld12;
        if ((puVar1 < p_Var2) || (puVar1 < p_Var4)) {
          bVar16 = true;
        }
        (&local_24)[iVar13] = (_LDBL12 *)puVar1;
        while ((iVar13 = iVar13 + -1, -1 < iVar13 && (bVar16))) {
          p_Var2 = (&local_24)[iVar13];
          puVar1 = p_Var2->ld12 + 1;
          bVar16 = false;
          if ((puVar1 < p_Var2) || (puVar1 == (uchar *)0x0)) {
            bVar16 = true;
          }
          (&local_24)[iVar13] = (_LDBL12 *)puVar1;
        }
      }
LAB_00a68dbf:
      *pp_Var9 = (_LDBL12 *)((uint)*pp_Var9 & -1 << ((byte)local_14 & 0x1f));
      iVar13 = local_10 + 1;
      if (iVar13 < 3) {
        pp_Var9 = &local_24 + iVar13;
        for (iVar5 = 3 - iVar13; iVar5 != 0; iVar5 = iVar5 + -1) {
          *pp_Var9 = (_LDBL12 *)0x0;
          pp_Var9 = pp_Var9 + 1;
        }
      }
      uVar12 = DAT_03240b04 + 1;
      iVar13 = (int)(uVar12 + ((int)uVar12 >> 0x1f & 0x1fU)) >> 5;
      uVar12 = uVar12 & 0x8000001f;
      if ((int)uVar12 < 0) {
        uVar12 = (uVar12 - 1 | 0xffffffe0) + 1;
      }
      local_10 = 0;
      _Ifp = (_LDBL12 *)0x0;
      local_8 = (_LDBL12 *)(0x20 - uVar12);
      do {
        p_Var2 = (&local_24)[(int)_Ifp];
        local_14 = (uint)p_Var2 & ~(-1 << ((byte)uVar12 & 0x1f));
        (&local_24)[(int)_Ifp] = (_LDBL12 *)((uint)p_Var2 >> ((byte)uVar12 & 0x1f) | local_10);
        _Ifp = (_LDBL12 *)(_Ifp->ld12 + 1);
        local_10 = local_14 << ((byte)(0x20 - uVar12) & 0x1f);
      } while ((int)_Ifp < 3);
      iVar5 = 2;
      pp_Var9 = &local_1c + -iVar13;
      do {
        if (iVar5 < iVar13) {
          (&local_24)[iVar5] = (_LDBL12 *)0x0;
        }
        else {
          (&local_24)[iVar5] = *pp_Var9;
        }
        iVar5 = iVar5 + -1;
        pp_Var9 = pp_Var9 + -1;
      } while (-1 < iVar5);
    }
    iVar13 = 0;
    IVar6 = INTRNCVT_UNDERFLOW;
  }
LAB_00a68fd3:
  fVar14 = (float)(iVar13 << (0x1fU - (char)DAT_03240b04 & 0x1f) |
                   -(uint)(local_18 != 0) & 0x80000000 | (uint)local_24);
  if (DAT_03240b08 == 0x40) {
    _F[1].f = fVar14;
    _F->f = local_20;
  }
  else if (DAT_03240b08 == 0x20) {
    _F->f = fVar14;
  }
  return IVar6;
}



// Library Function - Single Match
//  ___wstrgtold12_l
// 
// Library: Visual Studio 2008 Release

uint __cdecl
___wstrgtold12_l(_LDBL12 *pld12,wchar_t **p_end_ptr,wchar_t *str,int mult12,int scale,int decpt,
                int implicit_E,_locale_t _Locale)

{
  int iVar1;
  wchar_t wVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  bool bVar7;
  bool bVar8;
  bool bVar9;
  ushort uVar10;
  int *piVar11;
  uint uVar12;
  uint uVar13;
  ushort uVar14;
  int iVar15;
  undefined **ppuVar16;
  ushort uVar17;
  wchar_t *pwVar18;
  undefined4 uVar19;
  undefined **ppuVar20;
  ushort uVar21;
  undefined4 uVar22;
  short *psVar23;
  bool bVar24;
  ushort *local_70;
  int local_6c;
  int local_68;
  undefined **local_64;
  int local_60;
  char *local_5c;
  wchar_t *local_58;
  int local_54;
  uint local_50;
  undefined2 local_4c;
  undefined4 uStack_4a;
  undefined2 uStack_46;
  undefined *local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 uStack_38;
  byte local_30;
  undefined uStack_2f;
  undefined4 uStack_2e;
  undefined4 uStack_2a;
  ushort uStack_26;
  char local_24 [23];
  char local_d;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_5c = local_24;
  iVar15 = 0;
  uVar10 = 0;
  local_68 = 1;
  local_50 = 0;
  bVar7 = false;
  bVar9 = false;
  bVar8 = false;
  local_6c = 0;
  local_54 = 0;
  if (_Locale != (_locale_t)0x0) {
    local_58 = str;
    for (; (((wVar2 = *str, wVar2 == L' ' || (wVar2 == L'\t')) || (wVar2 == L'\n')) ||
           (wVar2 == L'\r')); str = str + 1) {
    }
LAB_00a690ae:
    wVar2 = *str;
    uVar13 = (uint)(ushort)wVar2;
    pwVar18 = str + 1;
    switch(iVar15) {
    case 0:
      if ((ushort)(wVar2 + L'ￏ') < 9) {
LAB_00a690cc:
        iVar15 = 3;
        goto LAB_00a690ce;
      }
      if (uVar13 == (int)**(char **)_Locale->locinfo[1].lc_codepage) {
LAB_00a690ea:
        iVar15 = 5;
        str = pwVar18;
      }
      else {
        iVar15 = 2;
        if (uVar13 == 0x2b) {
          uVar10 = 0;
          str = pwVar18;
        }
        else {
          if (uVar13 != 0x2d) {
            if (uVar13 == 0x30) goto LAB_00a69101;
            goto LAB_00a692c6;
          }
          uVar10 = 0x8000;
          str = pwVar18;
        }
      }
      goto LAB_00a690ae;
    case 1:
      bVar7 = true;
      if ((ushort)(wVar2 + L'ￏ') < 9) goto LAB_00a690cc;
      if (uVar13 == (int)**(char **)_Locale->locinfo[1].lc_codepage) goto LAB_00a6913b;
      if ((uVar13 == 0x2b) || (uVar13 == 0x2d)) goto LAB_00a6916a;
      if (uVar13 == 0x30) goto LAB_00a69101;
      goto LAB_00a6914d;
    case 2:
      if ((ushort)(wVar2 + L'ￏ') < 9) goto LAB_00a690cc;
      if (uVar13 == (int)**(char **)_Locale->locinfo[1].lc_codepage) goto LAB_00a690ea;
      str = local_58;
      if (uVar13 != 0x30) goto LAB_00a692f2;
LAB_00a69101:
      iVar15 = 1;
      str = pwVar18;
      goto LAB_00a690ae;
    case 3:
      while ((0x2f < (ushort)uVar13 && ((ushort)uVar13 < 0x3a))) {
        if (local_50 < 0x19) {
          local_50 = local_50 + 1;
          *local_5c = (char)uVar13 + -0x30;
          local_5c = local_5c + 1;
        }
        else {
          local_54 = local_54 + 1;
        }
        wVar2 = *pwVar18;
        pwVar18 = pwVar18 + 1;
        uVar13 = (uint)(ushort)wVar2;
      }
      if (uVar13 != (int)**(char **)_Locale->locinfo[1].lc_codepage) goto LAB_00a691f3;
LAB_00a6913b:
      bVar7 = true;
      iVar15 = 4;
      str = pwVar18;
      goto LAB_00a690ae;
    case 4:
      bVar9 = true;
      if (local_50 == 0) {
        while ((short)uVar13 == 0x30) {
          local_54 = local_54 + -1;
          wVar2 = *pwVar18;
          pwVar18 = pwVar18 + 1;
          uVar13 = (uint)(ushort)wVar2;
        }
      }
      while ((0x2f < (ushort)uVar13 && ((ushort)uVar13 < 0x3a))) {
        if (local_50 < 0x19) {
          local_50 = local_50 + 1;
          local_54 = local_54 + -1;
          *local_5c = (char)uVar13 + -0x30;
          local_5c = local_5c + 1;
        }
        wVar2 = *pwVar18;
        pwVar18 = pwVar18 + 1;
        uVar13 = (uint)(ushort)wVar2;
      }
LAB_00a691f3:
      if ((uVar13 == 0x2b) || (uVar13 == 0x2d)) {
LAB_00a6916a:
        bVar7 = true;
        iVar15 = 0xb;
        str = pwVar18 + -1;
      }
      else {
LAB_00a6914d:
        bVar7 = true;
        if ((uVar13 < 0x44) || ((0x45 < uVar13 && (1 < uVar13 - 100)))) goto LAB_00a692c6;
        iVar15 = 6;
        str = pwVar18;
      }
      goto LAB_00a690ae;
    case 5:
      bVar9 = true;
      str = local_58;
      if ((ushort)(wVar2 + L'￐') < 10) {
        iVar15 = 4;
        goto LAB_00a690ce;
      }
      goto LAB_00a692f2;
    case 6:
      local_58 = str + -1;
      if (8 < (ushort)(wVar2 + L'ￏ')) {
        if (uVar13 == 0x2b) goto LAB_00a692a7;
        if (uVar13 == 0x2d) goto LAB_00a6929b;
        bVar24 = uVar13 == 0x30;
LAB_00a6928e:
        str = local_58;
        if (!bVar24) goto LAB_00a692f2;
        iVar15 = 8;
        str = pwVar18;
        goto LAB_00a690ae;
      }
      break;
    case 7:
      if (8 < (ushort)(wVar2 + L'ￏ')) {
        bVar24 = wVar2 == L'0';
        goto LAB_00a6928e;
      }
      break;
    case 8:
      bVar8 = true;
      while ((short)uVar13 == 0x30) {
        wVar2 = *pwVar18;
        pwVar18 = pwVar18 + 1;
        uVar13 = (uint)(ushort)wVar2;
      }
      if (8 < (ushort)((short)uVar13 - 0x31U)) goto LAB_00a692c6;
      break;
    case 9:
      bVar8 = true;
      local_6c = 0;
      goto LAB_00a69352;
    default:
      goto switchD_00a690bc_caseD_a;
    case 0xb:
      if (implicit_E != 0) {
        local_58 = str;
        if (uVar13 == 0x2b) {
LAB_00a692a7:
          iVar15 = 7;
          str = pwVar18;
        }
        else {
          if (uVar13 != 0x2d) goto LAB_00a692f2;
LAB_00a6929b:
          local_68 = -1;
          iVar15 = 7;
          str = pwVar18;
        }
        goto LAB_00a690ae;
      }
      iVar15 = 10;
      pwVar18 = str;
switchD_00a690bc_caseD_a:
      str = pwVar18;
      if (iVar15 != 10) goto LAB_00a690ae;
      goto LAB_00a692f2;
    }
    iVar15 = 9;
LAB_00a690ce:
    str = pwVar18 + -1;
    goto LAB_00a690ae;
  }
  piVar11 = __errno();
  *piVar11 = 0x16;
  __invalid_parameter(0,0,0,0,0);
  iVar5 = CONCAT22(local_40._2_2_,(undefined2)local_40);
  uVar3 = CONCAT22(uStack_38._2_2_,(ushort)uStack_38);
  goto LAB_00a69733;
LAB_00a69352:
  if (((ushort)uVar13 < 0x30) || (0x39 < (ushort)uVar13)) goto LAB_00a69372;
  local_6c = local_6c * 10 + -0x30 + uVar13;
  if (local_6c < 0x1451) {
    uVar13 = (uint)(ushort)*pwVar18;
    pwVar18 = pwVar18 + 1;
    goto LAB_00a69352;
  }
  local_6c = 0x1451;
LAB_00a69372:
  while ((0x2f < (ushort)uVar13 && ((ushort)uVar13 < 0x3a))) {
    wVar2 = *pwVar18;
    pwVar18 = pwVar18 + 1;
    uVar13 = (uint)(ushort)wVar2;
  }
LAB_00a692c6:
  str = pwVar18 + -1;
LAB_00a692f2:
  *p_end_ptr = str;
  if (bVar7) {
    if (0x18 < local_50) {
      if ('\x04' < local_d) {
        local_d = local_d + '\x01';
      }
      local_50 = 0x18;
      local_5c = local_5c + -1;
      local_54 = local_54 + 1;
    }
    if (local_50 == 0) goto LAB_00a69714;
    while (local_5c = local_5c + -1, *local_5c == '\0') {
      local_50 = local_50 - 1;
      local_54 = local_54 + 1;
    }
    ___mtold12(local_24,local_50,&local_40);
    iVar6 = CONCAT22(local_3c._2_2_,(undefined2)local_3c);
    iVar5 = CONCAT22(local_40._2_2_,(undefined2)local_40);
    iVar4 = CONCAT22(uStack_2a._2_2_,(ushort)uStack_2a);
    iVar1 = CONCAT22(uStack_2e._2_2_,(ushort)uStack_2e);
    uVar3 = CONCAT22(uStack_38._2_2_,(ushort)uStack_38);
    uVar13 = CONCAT22(uStack_38._2_2_,(ushort)uStack_38);
    iVar15 = CONCAT22(uStack_4a._2_2_,(undefined2)uStack_4a);
    if (local_68 < 0) {
      local_6c = -local_6c;
    }
    local_58 = (wchar_t *)(local_6c + local_54);
    if (!bVar8) {
      local_58 = (wchar_t *)((int)local_58 + scale);
    }
    if (!bVar9) {
      local_58 = (wchar_t *)((int)local_58 - decpt);
    }
    if ((int)local_58 < 0x1451) {
      if ((int)local_58 < -0x1450) goto LAB_00a69714;
      ppuVar16 = &PTR_LAB_03240ab8;
      if (local_58 != (wchar_t *)0x0) {
        if ((int)local_58 < 0) {
          local_58 = (wchar_t *)-(int)local_58;
          ppuVar16 = (undefined **)&DAT_03240c18;
        }
        if (mult12 == 0) {
          local_40._0_2_ = 0;
        }
        iVar15 = uStack_4a;
        uVar13 = uVar3;
        iVar1 = uStack_2e;
        iVar4 = uStack_2a;
        iVar5 = CONCAT22(local_40._2_2_,(undefined2)local_40);
        iVar6 = local_3c;
joined_r0x00a6940f:
        if (local_58 != (wchar_t *)0x0) {
          uStack_38._2_2_ = (ushort)(uVar13 >> 0x10);
          uVar3 = (int)local_58 >> 3;
          ppuVar16 = ppuVar16 + 0x15;
          uVar12 = (uint)local_58 & 7;
          local_58 = (wchar_t *)uVar3;
          if (uVar12 != 0) {
            ppuVar20 = ppuVar16 + uVar12 * 3;
            if (0x7fff < *(ushort *)ppuVar20) {
              local_4c = SUB42(*ppuVar20,0);
              uStack_4a._0_2_ = (undefined2)((uint)*ppuVar20 >> 0x10);
              uStack_4a._2_2_ = SUB42(ppuVar20[1],0);
              uStack_46 = (undefined2)((uint)ppuVar20[1] >> 0x10);
              local_44 = ppuVar20[2];
              iVar15 = CONCAT22(uStack_4a._2_2_,(undefined2)uStack_4a) + -1;
              uStack_4a._0_2_ = (undefined2)iVar15;
              uStack_4a._2_2_ = (undefined2)((uint)iVar15 >> 0x10);
              ppuVar20 = (undefined **)&local_4c;
            }
            local_5c = (char *)0x0;
            local_30 = 0;
            uStack_2f = 0;
            uStack_2e._0_2_ = 0;
            uStack_2e._2_2_ = 0;
            iVar1 = 0;
            uStack_2a._0_2_ = 0;
            uStack_2a._2_2_ = 0;
            iVar4 = 0;
            uStack_26 = 0;
            uVar14 = *(ushort *)((int)ppuVar20 + 10) & 0x7fff;
            uVar21 = (*(ushort *)((int)ppuVar20 + 10) ^ uStack_38._2_2_) & 0x8000;
            uVar17 = uVar14 + (uStack_38._2_2_ & 0x7fff);
            if ((((uStack_38._2_2_ & 0x7fff) < 0x7fff) && (uVar14 < 0x7fff)) && (uVar17 < 0xbffe)) {
              if (0x3fbf < uVar17) {
                if ((((uVar13 & 0x7fff0000) == 0) &&
                    (uVar17 = uVar17 + 1, (uVar13 & 0x7fffffff) == 0)) &&
                   ((iVar6 == 0 && (iVar5 == 0)))) {
                  uStack_38._2_2_ = 0;
                  uVar13 = uVar13 & 0xffff;
                  iVar1 = 0;
                  iVar4 = 0;
                }
                else if (((uVar14 == 0) &&
                         (uVar17 = uVar17 + 1, ((uint)ppuVar20[2] & 0x7fffffff) == 0)) &&
                        ((ppuVar20[1] == (undefined *)0x0 && (*ppuVar20 == (undefined *)0x0)))) {
                  uStack_38._0_2_ = 0;
                  uStack_38._2_2_ = 0;
                  uVar13 = 0;
                  local_3c._0_2_ = 0;
                  local_3c._2_2_ = 0;
                  local_40._0_2_ = 0;
                  local_40._2_2_ = 0;
                  iVar5 = 0;
                  iVar6 = 0;
                }
                else {
                  local_68 = 0;
                  psVar23 = (short *)((int)&uStack_2e + 2);
                  local_60 = 5;
                  do {
                    local_6c = local_60;
                    if (0 < local_60) {
                      local_70 = (ushort *)((int)&local_40 + local_68 * 2);
                      local_64 = ppuVar20 + 2;
                      do {
                        bVar7 = false;
                        uVar13 = *(uint *)(psVar23 + -2) +
                                 (uint)*local_70 * (uint)*(ushort *)local_64;
                        if ((uVar13 < *(uint *)(psVar23 + -2)) ||
                           (uVar13 < (uint)*local_70 * (uint)*(ushort *)local_64)) {
                          bVar7 = true;
                        }
                        *(uint *)(psVar23 + -2) = uVar13;
                        if (bVar7) {
                          *psVar23 = *psVar23 + 1;
                        }
                        local_70 = local_70 + 1;
                        local_64 = (undefined **)((int)local_64 + -2);
                        local_6c = local_6c + -1;
                      } while (0 < local_6c);
                    }
                    psVar23 = psVar23 + 1;
                    local_68 = local_68 + 1;
                    local_60 = local_60 + -1;
                  } while (0 < local_60);
                  uVar17 = uVar17 + 0xc002;
                  if ((short)uVar17 < 1) {
LAB_00a695ca:
                    uVar17 = uVar17 - 1;
                    if ((short)uVar17 < 0) {
                      uVar13 = (uint)(ushort)-uVar17;
                      uVar17 = 0;
                      do {
                        if ((local_30 & 1) != 0) {
                          local_5c = (char *)((int)local_5c + 1);
                        }
                        iVar1 = CONCAT22(uStack_26,uStack_2a._2_2_);
                        uVar3 = CONCAT22((ushort)uStack_2a,uStack_2e._2_2_);
                        iVar4 = CONCAT22((ushort)uStack_2a,uStack_2e._2_2_);
                        uStack_2a._2_2_ = (ushort)(CONCAT22(uStack_26,uStack_2a._2_2_) >> 1);
                        uStack_26 = uStack_26 >> 1;
                        uStack_2a._0_2_ =
                             (ushort)uStack_2a >> 1 | (ushort)((uint)(iVar1 << 0x1f) >> 0x10);
                        uVar12 = CONCAT22((ushort)uStack_2e,CONCAT11(uStack_2f,local_30)) >> 1;
                        uStack_2e._0_2_ =
                             (ushort)uStack_2e >> 1 | (ushort)((uint)(iVar4 << 0x1f) >> 0x10);
                        uVar13 = uVar13 - 1;
                        uStack_2e._2_2_ = (ushort)(uVar3 >> 1);
                        local_30 = (byte)uVar12;
                        uStack_2f = (undefined)(uVar12 >> 8);
                      } while (uVar13 != 0);
                      if (local_5c != (char *)0x0) {
                        local_30 = local_30 | 1;
                      }
                    }
                  }
                  else {
                    do {
                      uVar14 = (ushort)uStack_2e;
                      if ((short)uStack_26 < 0) break;
                      iVar4 = CONCAT22((ushort)uStack_2e,CONCAT11(uStack_2f,local_30)) << 1;
                      local_30 = (byte)iVar4;
                      uStack_2f = (undefined)((uint)iVar4 >> 8);
                      uStack_2e._0_2_ = (ushort)((uint)iVar4 >> 0x10);
                      iVar4 = CONCAT22((ushort)uStack_2a,uStack_2e._2_2_) * 2;
                      uStack_2e._2_2_ = (ushort)iVar4 | uVar14 >> 0xf;
                      iVar1 = CONCAT22(uStack_26,uStack_2a._2_2_) * 2;
                      uStack_2a._2_2_ = (ushort)iVar1 | (ushort)uStack_2a >> 0xf;
                      uVar17 = uVar17 - 1;
                      uStack_2a._0_2_ = (ushort)((uint)iVar4 >> 0x10);
                      uStack_26 = (ushort)((uint)iVar1 >> 0x10);
                    } while (0 < (short)uVar17);
                    if ((short)uVar17 < 1) goto LAB_00a695ca;
                  }
                  if ((0x8000 < CONCAT11(uStack_2f,local_30)) ||
                     (iVar4 = CONCAT22(uStack_2a._2_2_,(ushort)uStack_2a),
                     iVar1 = CONCAT22(uStack_2e._2_2_,(ushort)uStack_2e),
                     (CONCAT22((ushort)uStack_2e,CONCAT11(uStack_2f,local_30)) & 0x1ffff) == 0x18000
                     )) {
                    if (CONCAT22(uStack_2e._2_2_,(ushort)uStack_2e) == -1) {
                      uStack_2e._0_2_ = 0;
                      uStack_2e._2_2_ = 0;
                      iVar1 = 0;
                      if (CONCAT22(uStack_2a._2_2_,(ushort)uStack_2a) == -1) {
                        uStack_2a._0_2_ = 0;
                        uStack_2a._2_2_ = 0;
                        if (uStack_26 == 0xffff) {
                          uStack_26 = 0x8000;
                          uVar17 = uVar17 + 1;
                          iVar4 = 0;
                          iVar1 = 0;
                        }
                        else {
                          uStack_26 = uStack_26 + 1;
                          iVar4 = 0;
                          iVar1 = 0;
                        }
                      }
                      else {
                        iVar4 = CONCAT22(uStack_2a._2_2_,(ushort)uStack_2a) + 1;
                        uStack_2a._0_2_ = (ushort)iVar4;
                        uStack_2a._2_2_ = (ushort)((uint)iVar4 >> 0x10);
                      }
                    }
                    else {
                      iVar1 = CONCAT22(uStack_2e._2_2_,(ushort)uStack_2e) + 1;
                      uStack_2e._0_2_ = (ushort)iVar1;
                      uStack_2e._2_2_ = (ushort)((uint)iVar1 >> 0x10);
                      iVar4 = CONCAT22(uStack_2a._2_2_,(ushort)uStack_2a);
                    }
                  }
                  uStack_2e._2_2_ = (ushort)((uint)iVar1 >> 0x10);
                  uStack_2e._0_2_ = (ushort)iVar1;
                  uStack_2a._2_2_ = (ushort)((uint)iVar4 >> 0x10);
                  uStack_2a._0_2_ = (ushort)iVar4;
                  if (uVar17 < 0x7fff) {
                    local_40._0_2_ = (ushort)uStack_2e;
                    local_40._2_2_ = uStack_2e._2_2_;
                    local_3c._0_2_ = (ushort)uStack_2a;
                    local_3c._2_2_ = uStack_2a._2_2_;
                    uStack_38._0_2_ = uStack_26;
                    uStack_38._2_2_ = uVar17 | uVar21;
                    uVar13 = CONCAT22(uVar17 | uVar21,uStack_26);
                    iVar5 = iVar1;
                    iVar6 = iVar4;
                  }
                  else {
                    local_3c._0_2_ = 0;
                    local_3c._2_2_ = 0;
                    local_40._0_2_ = 0;
                    local_40._2_2_ = 0;
                    uVar13 = ((uVar21 == 0) - 1 & 0x80000000) + 0x7fff8000;
                    uStack_38._0_2_ = (ushort)uVar13;
                    uStack_38._2_2_ = (ushort)(uVar13 >> 0x10);
                    iVar5 = 0;
                    iVar6 = 0;
                  }
                }
                goto joined_r0x00a6940f;
              }
              uVar13 = 0;
              local_3c._0_2_ = 0;
              local_3c._2_2_ = 0;
              local_40._0_2_ = 0;
              local_40._2_2_ = 0;
            }
            else {
              local_3c._0_2_ = 0;
              local_3c._2_2_ = 0;
              uVar13 = ((uVar21 == 0) - 1 & 0x80000000) + 0x7fff8000;
              local_40._0_2_ = 0;
              local_40._2_2_ = 0;
            }
            uStack_38._0_2_ = (ushort)uVar13;
            uStack_38._2_2_ = (ushort)(uVar13 >> 0x10);
            iVar1 = 0;
            iVar4 = 0;
            iVar5 = 0;
            iVar6 = 0;
          }
          goto joined_r0x00a6940f;
        }
      }
      local_3c._2_2_ = (undefined2)((uint)iVar6 >> 0x10);
      local_3c._0_2_ = (undefined2)iVar6;
      local_40._2_2_ = (undefined2)((uint)iVar5 >> 0x10);
      local_40._0_2_ = (undefined2)iVar5;
      uStack_38._2_2_ = (ushort)(uVar13 >> 0x10);
      uStack_38._0_2_ = (ushort)uVar13;
      uVar22 = CONCAT22((undefined2)local_3c,local_40._2_2_);
      uVar19 = CONCAT22((ushort)uStack_38,local_3c._2_2_);
      uStack_4a = iVar15;
      uVar3 = uVar13;
      uStack_2e = iVar1;
      uStack_2a = iVar4;
      local_3c = iVar6;
    }
    else {
      uVar22 = 0;
      uStack_38._2_2_ = 0x7fff;
      uVar19 = 0x80000000;
      local_40._0_2_ = 0;
    }
  }
  else {
LAB_00a69714:
    iVar5 = CONCAT22(local_40._2_2_,(undefined2)local_40);
    uVar3 = CONCAT22(uStack_38._2_2_,(ushort)uStack_38);
    local_40._0_2_ = 0;
    uStack_38._2_2_ = 0;
    uVar19 = 0;
    uVar22 = 0;
  }
  *(undefined2 *)pld12->ld12 = (undefined2)local_40;
  *(ushort *)(pld12->ld12 + 10) = uStack_38._2_2_ | uVar10;
  *(undefined4 *)(pld12->ld12 + 2) = uVar22;
  *(undefined4 *)(pld12->ld12 + 6) = uVar19;
LAB_00a69733:
  uStack_38 = uVar3;
  local_40 = iVar5;
  uVar13 = ___security_check_cookie_4();
  return uVar13;
}



// Library Function - Single Match
//  int __cdecl strncnt(char const *,int)
// 
// Library: Visual Studio 2008 Release

int __cdecl strncnt(char *param_1,int param_2)

{
  char *in_EAX;
  char *pcVar1;
  
  pcVar1 = param_1;
  for (; (pcVar1 != (char *)0x0 && (*in_EAX != '\0')); in_EAX = in_EAX + 1) {
    pcVar1 = pcVar1 + -1;
  }
  return (int)(param_1 + (-1 - (int)(pcVar1 + -1)));
}



// WARNING: Function: __alloca_probe_16 replaced with injection: alloca_probe
// Library Function - Single Match
//  int __cdecl __crtCompareStringA_stat(struct localeinfo_struct *,unsigned long,unsigned long,char
// const *,int,char const *,int,int)
// 
// Library: Visual Studio 2008 Release

int __cdecl
__crtCompareStringA_stat
          (localeinfo_struct *param_1,ulong param_2,ulong param_3,char *param_4,int param_5,
          char *param_6,int param_7,int param_8)

{
  uint _Size;
  char *lpMultiByteStr;
  int iVar1;
  DWORD DVar2;
  BOOL BVar3;
  BYTE *pBVar4;
  uint cchWideChar;
  uint uVar5;
  undefined4 *puVar6;
  char *pcVar7;
  int *in_ECX;
  byte *in_EDX;
  byte *_Memory;
  int unaff_EDI;
  PCNZCH _Memory_00;
  byte *local_28;
  undefined4 *local_24;
  char *local_20;
  _cpinfo local_1c;
  uint local_8;
  
  lpMultiByteStr = param_4;
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_20 = param_4;
  if (DAT_032ebd18 == 0) {
    iVar1 = CompareStringW(0,0,(PCNZWCH)&PTR_03065574,1,(PCNZWCH)&PTR_03065574,1);
    if (iVar1 == 0) {
      DVar2 = GetLastError();
      if (DVar2 == 0x78) {
        DAT_032ebd18 = 2;
      }
    }
    else {
      DAT_032ebd18 = 1;
    }
  }
  if ((int)param_3 < 1) {
    if ((int)param_3 < -1) goto LAB_00a69aee;
  }
  else {
    param_3 = strncnt((char *)param_3,unaff_EDI);
  }
  if (param_5 < 1) {
    if (param_5 < -1) goto LAB_00a69aee;
  }
  else {
    param_5 = strncnt((char *)param_5,unaff_EDI);
  }
  if ((DAT_032ebd18 == 2) || (DAT_032ebd18 == 0)) {
    _Memory_00 = (PCNZCH)0x0;
    _Memory = (byte *)0x0;
    if (param_1 == (localeinfo_struct *)0x0) {
      param_1 = *(localeinfo_struct **)(*in_ECX + 0x14);
    }
    if (param_6 == (char *)0x0) {
      param_6 = *(char **)(*in_ECX + 4);
    }
    pcVar7 = (char *)___ansicp(param_1);
    if (pcVar7 == (char *)0xffffffff) goto LAB_00a69aee;
    local_28 = in_EDX;
    if (pcVar7 != param_6) {
      _Memory = (byte *)___convertcp(param_6,pcVar7,in_EDX,&param_3,0,0);
      if (_Memory == (byte *)0x0) goto LAB_00a69aee;
      _Memory_00 = (PCNZCH)___convertcp(param_6,pcVar7,lpMultiByteStr,&param_5,0,0);
      local_28 = _Memory;
      local_20 = _Memory_00;
      if (_Memory_00 == (PCNZCH)0x0) {
        _free(_Memory);
        goto LAB_00a69aee;
      }
    }
    CompareStringA((LCID)param_1,param_2,(PCNZCH)local_28,param_3,local_20,param_5);
    if (_Memory != (byte *)0x0) {
      _free(_Memory);
      _free(_Memory_00);
    }
    goto LAB_00a69aee;
  }
  if (DAT_032ebd18 != 1) goto LAB_00a69aee;
  if (param_6 == (char *)0x0) {
    param_6 = *(char **)(*in_ECX + 4);
  }
  if ((param_3 == 0) || (param_5 == 0)) {
    if ((param_3 == param_5) ||
       (((1 < param_5 || (1 < (int)param_3)) ||
        (BVar3 = GetCPInfo((UINT)param_6,&local_1c), BVar3 == 0)))) goto LAB_00a69aee;
    if (0 < (int)param_3) {
      if (1 < local_1c.MaxCharSize) {
        pBVar4 = local_1c.LeadByte;
        while (((local_1c.LeadByte[0] != 0 && (pBVar4[1] != 0)) &&
               ((*in_EDX < *pBVar4 || (pBVar4[1] < *in_EDX))))) {
          pBVar4 = pBVar4 + 2;
          local_1c.LeadByte[0] = *pBVar4;
        }
      }
      goto LAB_00a69aee;
    }
    if (0 < param_5) {
      if (1 < local_1c.MaxCharSize) {
        pBVar4 = local_1c.LeadByte;
        while (((local_1c.LeadByte[0] != 0 && (pBVar4[1] != 0)) &&
               (((byte)*lpMultiByteStr < *pBVar4 || (pBVar4[1] < (byte)*lpMultiByteStr))))) {
          pBVar4 = pBVar4 + 2;
          local_1c.LeadByte[0] = *pBVar4;
        }
      }
      goto LAB_00a69aee;
    }
  }
  cchWideChar = MultiByteToWideChar((UINT)param_6,9,(LPCSTR)in_EDX,param_3,(LPWSTR)0x0,0);
  if (cchWideChar == 0) goto LAB_00a69aee;
  if (((int)cchWideChar < 1) || (0xffffffe0 / cchWideChar < 2)) {
    local_24 = (undefined4 *)0x0;
  }
  else {
    uVar5 = cchWideChar * 2 + 8;
    if (uVar5 < 0x401) {
      puVar6 = (undefined4 *)&stack0xffffffc4;
      local_24 = (undefined4 *)&stack0xffffffc4;
      if (&stack0x00000000 != (undefined *)0x3c) {
LAB_00a69967:
        local_24 = puVar6 + 2;
      }
    }
    else {
      puVar6 = (undefined4 *)_malloc(uVar5);
      local_24 = puVar6;
      if (puVar6 != (undefined4 *)0x0) {
        *puVar6 = 0xdddd;
        goto LAB_00a69967;
      }
    }
  }
  if (local_24 == (undefined4 *)0x0) goto LAB_00a69aee;
  iVar1 = MultiByteToWideChar((UINT)param_6,1,(LPCSTR)in_EDX,param_3,(LPWSTR)local_24,cchWideChar);
  if ((iVar1 != 0) &&
     (uVar5 = MultiByteToWideChar((UINT)param_6,9,lpMultiByteStr,param_5,(LPWSTR)0x0,0), uVar5 != 0)
     ) {
    if (((int)uVar5 < 1) || (0xffffffe0 / uVar5 < 2)) {
      puVar6 = (undefined4 *)0x0;
    }
    else {
      _Size = uVar5 * 2 + 8;
      if (_Size < 0x401) {
        if (&stack0x00000000 == (undefined *)0x3c) goto LAB_00a69a28;
        puVar6 = (undefined4 *)&stack0xffffffcc;
      }
      else {
        puVar6 = (undefined4 *)_malloc(_Size);
        if (puVar6 != (undefined4 *)0x0) {
          *puVar6 = 0xdddd;
          puVar6 = puVar6 + 2;
        }
      }
    }
    if (puVar6 != (undefined4 *)0x0) {
      iVar1 = MultiByteToWideChar((UINT)param_6,1,lpMultiByteStr,param_5,(LPWSTR)puVar6,uVar5);
      if (iVar1 != 0) {
        CompareStringW((LCID)param_1,param_2,(PCNZWCH)local_24,cchWideChar,(PCNZWCH)puVar6,uVar5);
      }
      __freea(puVar6);
    }
  }
LAB_00a69a28:
  __freea(local_24);
LAB_00a69aee:
  iVar1 = ___security_check_cookie_4();
  return iVar1;
}



// Library Function - Single Match
//  ___crtCompareStringA
// 
// Library: Visual Studio 2008 Release

int __cdecl
___crtCompareStringA
          (_locale_t _Plocinfo,LPCWSTR _LocaleName,DWORD _DwCmpFlags,LPCSTR _LpString1,
          int _CchCount1,LPCSTR _LpString2,int _CchCount2,int _Code_page)

{
  int iVar1;
  int in_stack_ffffffec;
  int in_stack_fffffff0;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&stack0xffffffec,_Plocinfo);
  iVar1 = __crtCompareStringA_stat
                    ((localeinfo_struct *)_LocaleName,_DwCmpFlags,_CchCount1,_LpString2,_CchCount2,
                     (char *)_Code_page,in_stack_ffffffec,in_stack_fffffff0);
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return iVar1;
}



// Library Function - Single Match
//  __strnicoll_l
// 
// Library: Visual Studio 2008 Release

int __cdecl __strnicoll_l(char *_Str1,char *_Str2,size_t _MaxCount,_locale_t _Locale)

{
  LPCWSTR _LocaleName;
  int *piVar1;
  int iVar2;
  localeinfo_struct local_14;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate((_LocaleUpdate *)&local_14,_Locale);
  if (_MaxCount == 0) {
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
    return 0;
  }
  if ((_Str1 == (char *)0x0) || (_Str2 == (char *)0x0)) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
    return 0x7fffffff;
  }
  if (_MaxCount < 0x80000000) {
    _LocaleName = (LPCWSTR)(local_14.locinfo)->lc_category[0].locale;
    if (_LocaleName == (LPCWSTR)0x0) {
      iVar2 = __strnicmp_l(_Str1,_Str2,_MaxCount,&local_14);
    }
    else {
      iVar2 = ___crtCompareStringA
                        (&local_14,_LocaleName,0x1001,_Str1,_MaxCount,_Str2,_MaxCount,
                         (local_14.locinfo)->lc_collate_cp);
      if (iVar2 == 0) {
        piVar1 = __errno();
        *piVar1 = 0x16;
        goto LAB_00a69c19;
      }
      iVar2 = iVar2 + -2;
    }
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
  }
  else {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
LAB_00a69c19:
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
    iVar2 = 0x7fffffff;
  }
  return iVar2;
}



// Library Function - Single Match
//  __chsize_nolock
// 
// Library: Visual Studio 2008 Release

int __cdecl __chsize_nolock(int _FileHandle,longlong _Size)

{
  int iVar1;
  HANDLE pvVar2;
  LPVOID _Buf;
  int *piVar3;
  int iVar4;
  uint uVar5;
  ulong *puVar6;
  BOOL BVar7;
  uint uVar8;
  int unaff_EDI;
  int iVar9;
  bool bVar10;
  bool bVar11;
  ulonglong uVar12;
  longlong lVar13;
  uint in_stack_00000008;
  DWORD DVar14;
  SIZE_T dwBytes;
  uint local_14;
  uint local_10;
  
  local_14 = 0;
  local_10 = 0;
  uVar12 = __lseeki64_nolock(_FileHandle,0x100000000,unaff_EDI);
  if (uVar12 == 0xffffffffffffffff) goto LAB_00a69cc4;
  lVar13 = __lseeki64_nolock(_FileHandle,0x200000000,unaff_EDI);
  iVar4 = (int)((ulonglong)lVar13 >> 0x20);
  if (lVar13 == -1) goto LAB_00a69cc4;
  uVar8 = in_stack_00000008 - (uint)lVar13;
  uVar5 = (uint)(in_stack_00000008 < (uint)lVar13);
  iVar1 = (int)_Size - iVar4;
  iVar9 = iVar1 - uVar5;
  if ((iVar9 < 0) ||
     ((iVar9 == 0 || (SBORROW4((int)_Size,iVar4) != SBORROW4(iVar1,uVar5)) != iVar9 < 0 &&
      (uVar8 == 0)))) {
    if ((iVar9 < 1) && (iVar9 < 0)) {
      lVar13 = __lseeki64_nolock(_FileHandle,_Size & 0xffffffff,unaff_EDI);
      if (lVar13 == -1) goto LAB_00a69cc4;
      pvVar2 = (HANDLE)__get_osfhandle(_FileHandle);
      BVar7 = SetEndOfFile(pvVar2);
      local_14 = (BVar7 != 0) - 1;
      local_10 = (int)local_14 >> 0x1f;
      if ((local_14 & local_10) == 0xffffffff) {
        piVar3 = __errno();
        *piVar3 = 0xd;
        puVar6 = ___doserrno();
        DVar14 = GetLastError();
        *puVar6 = DVar14;
        goto LAB_00a69dc2;
      }
    }
  }
  else {
    dwBytes = 0x1000;
    DVar14 = 8;
    pvVar2 = GetProcessHeap();
    _Buf = HeapAlloc(pvVar2,DVar14,dwBytes);
    if (_Buf == (LPVOID)0x0) {
      piVar3 = __errno();
      *piVar3 = 0xc;
      goto LAB_00a69cc4;
    }
    iVar4 = __setmode_nolock(_FileHandle,0x8000);
    while( true ) {
      uVar5 = uVar8;
      if ((-1 < iVar9) && ((0 < iVar9 || (0xfff < uVar8)))) {
        uVar5 = 0x1000;
      }
      uVar5 = __write_nolock(_FileHandle,_Buf,uVar5);
      if (uVar5 == 0xffffffff) break;
      bVar10 = uVar8 < uVar5;
      uVar8 = uVar8 - uVar5;
      bVar11 = SBORROW4(iVar9,(int)uVar5 >> 0x1f);
      iVar1 = iVar9 - ((int)uVar5 >> 0x1f);
      iVar9 = iVar1 - (uint)bVar10;
      if ((iVar9 < 0) ||
         ((iVar9 == 0 || (bVar11 != SBORROW4(iVar1,(uint)bVar10)) != iVar9 < 0 && (uVar8 == 0))))
      goto LAB_00a69d16;
    }
    puVar6 = ___doserrno();
    if (*puVar6 == 5) {
      piVar3 = __errno();
      *piVar3 = 0xd;
    }
    local_14 = 0xffffffff;
    local_10 = 0xffffffff;
LAB_00a69d16:
    __setmode_nolock(_FileHandle,iVar4);
    DVar14 = 0;
    pvVar2 = GetProcessHeap();
    HeapFree(pvVar2,DVar14,_Buf);
LAB_00a69dc2:
    if ((local_14 & local_10) == 0xffffffff) goto LAB_00a69cc4;
  }
  lVar13 = __lseeki64_nolock(_FileHandle,uVar12 >> 0x20,unaff_EDI);
  if (lVar13 != -1) {
    return 0;
  }
LAB_00a69cc4:
  piVar3 = __errno();
  return *piVar3;
}



// Library Function - Single Match
//  __setmode_nolock
// 
// Library: Visual Studio 2008 Release

int __cdecl __setmode_nolock(int _FileHandle,int _Mode)

{
  int iVar1;
  int *piVar2;
  char cVar3;
  byte bVar4;
  byte *pbVar5;
  byte bVar6;
  int iVar7;
  
  piVar2 = &DAT_032f1700 + (_FileHandle >> 5);
  iVar7 = (_FileHandle & 0x1fU) * 0x40;
  iVar1 = *piVar2 + iVar7;
  cVar3 = *(char *)(iVar1 + 0x24);
  bVar4 = *(byte *)(iVar1 + 4);
  if (_Mode == 0x4000) {
    *(byte *)(iVar1 + 4) = *(byte *)(iVar1 + 4) | 0x80;
    pbVar5 = (byte *)(*piVar2 + 0x24 + iVar7);
    *pbVar5 = *pbVar5 & 0x80;
  }
  else if (_Mode == 0x8000) {
    *(byte *)(iVar1 + 4) = *(byte *)(iVar1 + 4) & 0x7f;
  }
  else {
    if ((_Mode == 0x10000) || (_Mode == 0x20000)) {
      *(byte *)(iVar1 + 4) = *(byte *)(iVar1 + 4) | 0x80;
      pbVar5 = (byte *)(*piVar2 + 0x24 + iVar7);
      bVar6 = *pbVar5 & 0x82 | 2;
    }
    else {
      if (_Mode != 0x40000) goto LAB_00a69e90;
      *(byte *)(iVar1 + 4) = *(byte *)(iVar1 + 4) | 0x80;
      pbVar5 = (byte *)(*piVar2 + 0x24 + iVar7);
      bVar6 = *pbVar5 & 0x81 | 1;
    }
    *pbVar5 = bVar6;
  }
LAB_00a69e90:
  if ((bVar4 & 0x80) == 0) {
    return 0x8000;
  }
  return (-(uint)((char)(cVar3 * '\x02') >> 1 != '\0') & 0xc000) + 0x4000;
}



// Library Function - Single Match
//  __get_fmode
// 
// Library: Visual Studio 2008 Release

errno_t __cdecl __get_fmode(int *_PMode)

{
  int *piVar1;
  errno_t eVar2;
  
  if (_PMode == (int *)0x0) {
    piVar1 = __errno();
    *piVar1 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    eVar2 = 0x16;
  }
  else {
    *_PMode = DAT_032ebd1c;
    eVar2 = 0;
  }
  return eVar2;
}



// WARNING: Function: __SEH_prolog4 replaced with injection: SEH_prolog4
// WARNING: Function: __SEH_epilog4 replaced with injection: EH_epilog3

int FUN_00a69ee7(uint param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int local_20;
  
  if ((((param_2 == 0x4000) || (param_2 == 0x8000)) || (param_2 == 0x10000)) ||
     ((param_2 == 0x40000 || (param_2 == 0x20000)))) {
    if (param_1 == 0xfffffffe) {
      piVar1 = __errno();
      *piVar1 = 9;
      return -1;
    }
    if ((-1 < (int)param_1) && (param_1 < DAT_032f16e4)) {
      iVar2 = (param_1 & 0x1f) * 0x40;
      if ((*(byte *)((&DAT_032f1700)[(int)param_1 >> 5] + 4 + iVar2) & 1) != 0) {
        ___lock_fhandle(param_1);
        if ((*(byte *)((&DAT_032f1700)[(int)param_1 >> 5] + 4 + iVar2) & 1) == 0) {
          piVar1 = __errno();
          *piVar1 = 9;
          local_20 = -1;
        }
        else {
          local_20 = __setmode_nolock(param_1,param_2);
        }
        FUN_00a69fd4();
        return local_20;
      }
    }
    piVar1 = __errno();
    *piVar1 = 9;
  }
  else {
    piVar1 = __errno();
    *piVar1 = 0x16;
  }
  __invalid_parameter(0,0,0,0,0);
  return -1;
}



void FUN_00a69fd4(void)

{
  int unaff_EBP;
  
  __unlock_fhandle(*(int *)(unaff_EBP + 8));
  return;
}



// Library Function - Single Match
//  ___initconin
// 
// Library: Visual Studio 2008 Release

void __cdecl ___initconin(void)

{
  DAT_03240b10 = CreateFileA("CONIN$",0xc0000000,3,(LPSECURITY_ATTRIBUTES)0x0,3,0,(HANDLE)0x0);
  return;
}



// Library Function - Single Match
//  ___initconout
// 
// Library: Visual Studio 2008 Release

void __cdecl ___initconout(void)

{
  DAT_03240b14 = CreateFileA("CONOUT$",0x40000000,3,(LPSECURITY_ATTRIBUTES)0x0,3,0,(HANDLE)0x0);
  return;
}



// Library Function - Single Match
//  __fgetwc_nolock
// 
// Library: Visual Studio 2008 Release

wint_t __cdecl __fgetwc_nolock(FILE *_File)

{
  FILE *_File_00;
  wint_t wVar1;
  int iVar2;
  uint uVar3;
  undefined *puVar4;
  int *piVar5;
  size_t _SrcSizeInBytes;
  undefined4 local_8;
  
  _File_00 = _File;
  if ((*(byte *)&_File->_flag & 0x40) == 0) {
    iVar2 = __fileno(_File);
    if ((iVar2 == -1) || (iVar2 = __fileno(_File_00), iVar2 == -2)) {
      puVar4 = &DAT_03240190;
    }
    else {
      iVar2 = __fileno(_File_00);
      uVar3 = __fileno(_File_00);
      puVar4 = (undefined *)((uVar3 & 0x1f) * 0x40 + (&DAT_032f1700)[iVar2 >> 5]);
    }
    if ((puVar4[0x24] & 0x7f) != 0) {
      piVar5 = &_File_00->_cnt;
      *piVar5 = *piVar5 + -1;
      if (*piVar5 < 0) {
        uVar3 = __filbuf(_File_00);
      }
      else {
        uVar3 = (uint)(byte)*_File_00->_ptr;
        _File_00->_ptr = _File_00->_ptr + 1;
      }
      if (uVar3 != 0xffffffff) {
        piVar5 = &_File_00->_cnt;
        *piVar5 = *piVar5 + -1;
        _File = (FILE *)CONCAT31(_File._1_3_,(char)uVar3);
        if (*piVar5 < 0) {
          uVar3 = __filbuf(_File_00);
        }
        else {
          uVar3 = (uint)(byte)*_File_00->_ptr;
          _File_00->_ptr = _File_00->_ptr + 1;
        }
        if (uVar3 != 0xffffffff) {
          _File._0_2_ = CONCAT11((char)uVar3,_File._0_1_);
          _File = (FILE *)(uint)(ushort)_File;
          goto LAB_00a6a0ec;
        }
      }
      return 0xffff;
    }
    if ((*(byte *)&_File_00->_flag & 0x40) == 0) {
      iVar2 = __fileno(_File_00);
      if ((iVar2 == -1) || (iVar2 = __fileno(_File_00), iVar2 == -2)) {
        puVar4 = &DAT_03240190;
      }
      else {
        iVar2 = __fileno(_File_00);
        uVar3 = __fileno(_File_00);
        puVar4 = (undefined *)((uVar3 & 0x1f) * 0x40 + (&DAT_032f1700)[iVar2 >> 5]);
      }
      if ((puVar4[4] & 0x80) != 0) {
        _SrcSizeInBytes = 1;
        piVar5 = &_File_00->_cnt;
        *piVar5 = *piVar5 + -1;
        if (*piVar5 < 0) {
          uVar3 = __filbuf(_File_00);
        }
        else {
          uVar3 = (uint)(byte)*_File_00->_ptr;
          _File_00->_ptr = _File_00->_ptr + 1;
        }
        if (uVar3 == 0xffffffff) {
          return 0xffff;
        }
        local_8 = CONCAT31(local_8._1_3_,(char)uVar3);
        iVar2 = _isleadbyte(uVar3 & 0xff);
        if (iVar2 != 0) {
          piVar5 = &_File_00->_cnt;
          *piVar5 = *piVar5 + -1;
          if (*piVar5 < 0) {
            uVar3 = __filbuf(_File_00);
          }
          else {
            uVar3 = (uint)(byte)*_File_00->_ptr;
            _File_00->_ptr = _File_00->_ptr + 1;
          }
          if (uVar3 == 0xffffffff) {
            _ungetc((int)(char)local_8,_File_00);
            return 0xffff;
          }
          _SrcSizeInBytes = 2;
        }
        iVar2 = _mbtowc((wchar_t *)&_File,(char *)&local_8,_SrcSizeInBytes);
        if (iVar2 == -1) {
          piVar5 = __errno();
          *piVar5 = 0x2a;
          return 0xffff;
        }
LAB_00a6a0ec:
        return (ushort)_File;
      }
    }
  }
  piVar5 = &_File_00->_cnt;
  *piVar5 = *piVar5 + -2;
  if (*piVar5 < 0) {
    iVar2 = __filwbuf(_File_00);
    wVar1 = (wint_t)iVar2;
  }
  else {
    wVar1 = *(wint_t *)_File_00->_ptr;
    _File_00->_ptr = (char *)((int)_File_00->_ptr + 2);
  }
  return wVar1;
}



// Library Function - Single Match
//  __ungetwc_nolock
// 
// Library: Visual Studio 2008 Release

wint_t __cdecl __ungetwc_nolock(wint_t _Ch,FILE *_File)

{
  wint_t *pwVar1;
  wint_t wVar2;
  int iVar3;
  uint uVar4;
  undefined *puVar5;
  errno_t eVar6;
  undefined4 local_14;
  char local_10;
  undefined local_f;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  if (_Ch != 0xffff) {
    uVar4 = _File->_flag;
    if (((uVar4 & 1) != 0) || (((char)uVar4 < '\0' && ((uVar4 & 2) == 0)))) {
      if (_File->_base == (char *)0x0) {
        __getbuf(_File);
      }
      if ((*(byte *)&_File->_flag & 0x40) == 0) {
        iVar3 = __fileno(_File);
        if ((iVar3 == -1) || (iVar3 = __fileno(_File), iVar3 == -2)) {
          puVar5 = &DAT_03240190;
        }
        else {
          iVar3 = __fileno(_File);
          uVar4 = __fileno(_File);
          puVar5 = (undefined *)((uVar4 & 0x1f) * 0x40 + (&DAT_032f1700)[iVar3 >> 5]);
        }
        if ((puVar5[4] & 0x80) != 0) {
          iVar3 = __fileno(_File);
          if ((iVar3 == -1) || (iVar3 = __fileno(_File), iVar3 == -2)) {
            puVar5 = &DAT_03240190;
          }
          else {
            iVar3 = __fileno(_File);
            uVar4 = __fileno(_File);
            puVar5 = (undefined *)((uVar4 & 0x1f) * 0x40 + (&DAT_032f1700)[iVar3 >> 5]);
          }
          if ((puVar5[0x24] & 0x7f) == 0) {
            eVar6 = _wctomb_s(&local_14,&local_10,5,_Ch);
            if (eVar6 != 0) goto LAB_00a6a387;
          }
          else {
            local_10 = (char)_Ch;
            local_f = (char)(_Ch >> 8);
            local_14 = 2;
          }
          iVar3 = local_14;
          if (_File->_ptr < _File->_base + local_14) {
            if ((_File->_cnt != 0) || (_File->_bufsiz < local_14)) goto LAB_00a6a387;
            _File->_ptr = _File->_base + local_14;
          }
          while (iVar3 = iVar3 + -1, -1 < iVar3) {
            _File->_ptr = _File->_ptr + -1;
            *_File->_ptr = (&local_10)[iVar3];
          }
          _File->_cnt = _File->_cnt + local_14;
          _File->_flag = _File->_flag & 0xffffffefU | 1;
          goto LAB_00a6a387;
        }
      }
      if (_File->_ptr < _File->_base + 2) {
        if ((_File->_cnt != 0) || ((uint)_File->_bufsiz < 2)) goto LAB_00a6a387;
        _File->_ptr = _File->_base + 2;
      }
      _File->_ptr = _File->_ptr + -2;
      pwVar1 = (wint_t *)_File->_ptr;
      if ((*(byte *)&_File->_flag & 0x40) == 0) {
        *pwVar1 = _Ch;
      }
      else if (*pwVar1 != _Ch) {
        _File->_ptr = (char *)(pwVar1 + 1);
        goto LAB_00a6a387;
      }
      _File->_cnt = _File->_cnt + 2;
      _File->_flag = _File->_flag & 0xffffffefU | 1;
    }
  }
LAB_00a6a387:
  wVar2 = ___security_check_cookie_4();
  return wVar2;
}



// Library Function - Single Match
//  int __cdecl wcsncnt(wchar_t const *,int)
// 
// Library: Visual Studio 2008 Release

int __cdecl wcsncnt(wchar_t *param_1,int param_2)

{
  short *in_EAX;
  wchar_t *pwVar1;
  
  pwVar1 = param_1;
  for (; (pwVar1 != (wchar_t *)0x0 && (*in_EAX != 0)); in_EAX = in_EAX + 1) {
    pwVar1 = (wchar_t *)((int)pwVar1 + -1);
  }
  return (int)param_1 + (-1 - ((int)pwVar1 + -1));
}



// Library Function - Single Match
//  ___crtCompareStringW
// 
// Library: Visual Studio 2008 Release

int __cdecl
___crtCompareStringW
          (LPCWSTR _LocaleName,DWORD _DwCmpFlags,LPCWSTR _LpString1,int _CchCount1,
          LPCWSTR _LpString2,int _CchCount2)

{
  int iVar1;
  wchar_t *extraout_EDX;
  int unaff_ESI;
  wchar_t *in_stack_0000001c;
  _LocaleUpdate local_14 [8];
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate(local_14,(localeinfo_struct *)_LocaleName);
  if (0 < (int)_LpString2) {
    _LpString2 = (LPCWSTR)wcsncnt(_LpString2,unaff_ESI);
    in_stack_0000001c = extraout_EDX;
  }
  if (0 < (int)in_stack_0000001c) {
    in_stack_0000001c = (wchar_t *)wcsncnt(in_stack_0000001c,unaff_ESI);
  }
  if ((_LpString2 == (wchar_t *)0x0) || (in_stack_0000001c == (wchar_t *)0x0)) {
    if (_LpString2 == in_stack_0000001c) {
      iVar1 = 2;
    }
    else {
      iVar1 = (uint)(-1 < (int)_LpString2 - (int)in_stack_0000001c) * 2 + 1;
    }
  }
  else {
    iVar1 = CompareStringW(_DwCmpFlags,(DWORD)_LpString1,(PCNZWCH)_CchCount1,(int)_LpString2,
                           (PCNZWCH)_CchCount2,(int)in_stack_0000001c);
  }
  if (local_8 != '\0') {
    *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
  }
  return iVar1;
}



// Library Function - Single Match
//  __mbschr_l
// 
// Library: Visual Studio 2008 Release

uchar * __cdecl __mbschr_l(uchar *_Str,uint _Ch,_locale_t _Locale)

{
  byte bVar1;
  byte bVar2;
  int *piVar3;
  byte *pbVar4;
  _LocaleUpdate local_14 [4];
  int local_10;
  int local_c;
  char local_8;
  
  _LocaleUpdate::_LocaleUpdate(local_14,_Locale);
  if (_Str == (uchar *)0x0) {
    piVar3 = __errno();
    *piVar3 = 0x16;
    __invalid_parameter(0,0,0,0,0);
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
    _Str = (byte *)0x0;
  }
  else {
    if (*(int *)(local_10 + 8) == 0) {
      _Str = (uchar *)_strchr((char *)_Str,_Ch);
    }
    else {
      while( true ) {
        bVar2 = *_Str;
        if (bVar2 == 0) break;
        if ((*(byte *)(bVar2 + 0x1d + local_10) & 4) == 0) {
          pbVar4 = _Str;
          if (_Ch == bVar2) break;
        }
        else {
          bVar1 = _Str[1];
          if (bVar1 == 0) goto LAB_00a6a4f4;
          pbVar4 = _Str + 1;
          if (_Ch == CONCAT11(bVar2,bVar1)) goto LAB_00a6a4e6;
        }
        _Str = pbVar4 + 1;
      }
      if (_Ch != (ushort)bVar2) {
LAB_00a6a4f4:
        if (local_8 != '\0') {
          *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
        }
        return (uchar *)0x0;
      }
    }
LAB_00a6a4e6:
    if (local_8 != '\0') {
      *(uint *)(local_c + 0x70) = *(uint *)(local_c + 0x70) & 0xfffffffd;
    }
  }
  return _Str;
}



// Library Function - Single Match
//  __mbschr
// 
// Library: Visual Studio 2008 Release

uchar * __cdecl __mbschr(uchar *_Str,uint _Ch)

{
  uchar *puVar1;
  
  puVar1 = __mbschr_l(_Str,_Ch,(_locale_t)0x0);
  return puVar1;
}



// Library Function - Single Match
//  ___mtold12
// 
// Library: Visual Studio 2008 Release

void ___mtold12(char *param_1,int param_2,uint *param_3)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  bool bVar4;
  bool bVar5;
  short sVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  
  sVar6 = 0x404e;
  *param_3 = 0;
  param_3[1] = 0;
  param_3[2] = 0;
  if (param_2 != 0) {
    do {
      uVar2 = *param_3;
      uVar9 = *param_3;
      uVar1 = param_3[1];
      uVar10 = param_3[2];
      uVar8 = param_3[1] * 2;
      bVar4 = false;
      uVar7 = (param_3[2] * 2 | param_3[1] >> 0x1f) * 2 | uVar8 >> 0x1f;
      uVar3 = uVar2 * 4;
      uVar8 = (uVar8 | uVar2 >> 0x1f) * 2 | uVar2 * 2 >> 0x1f;
      uVar2 = uVar3 + uVar9;
      *param_3 = uVar3;
      param_3[1] = uVar8;
      param_3[2] = uVar7;
      if ((uVar2 < uVar3) || (uVar2 < uVar9)) {
        bVar4 = true;
      }
      bVar5 = false;
      *param_3 = uVar2;
      if (bVar4) {
        uVar9 = uVar8 + 1;
        if ((uVar9 < uVar8) || (uVar9 == 0)) {
          bVar5 = true;
        }
        param_3[1] = uVar9;
        if (bVar5) {
          param_3[2] = uVar7 + 1;
        }
      }
      uVar9 = param_3[1] + uVar1;
      bVar4 = false;
      if ((uVar9 < param_3[1]) || (uVar9 < uVar1)) {
        bVar4 = true;
      }
      param_3[1] = uVar9;
      if (bVar4) {
        param_3[2] = param_3[2] + 1;
      }
      param_3[2] = param_3[2] + uVar10;
      bVar4 = false;
      uVar1 = uVar2 * 2;
      uVar10 = uVar9 * 2 | uVar2 >> 0x1f;
      uVar9 = param_3[2] * 2 | uVar9 >> 0x1f;
      *param_3 = uVar1;
      param_3[1] = uVar10;
      param_3[2] = uVar9;
      uVar2 = uVar1 + (int)*param_1;
      if ((uVar2 < uVar1) || (uVar2 < (uint)(int)*param_1)) {
        bVar4 = true;
      }
      *param_3 = uVar2;
      if (bVar4) {
        uVar2 = uVar10 + 1;
        bVar4 = false;
        if ((uVar2 < uVar10) || (uVar2 == 0)) {
          bVar4 = true;
        }
        param_3[1] = uVar2;
        if (bVar4) {
          param_3[2] = uVar9 + 1;
        }
      }
      param_2 = param_2 + -1;
      param_1 = param_1 + 1;
    } while (param_2 != 0);
  }
  while (param_3[2] == 0) {
    param_3[2] = param_3[1] >> 0x10;
    sVar6 = sVar6 + -0x10;
    param_3[1] = param_3[1] << 0x10 | *param_3 >> 0x10;
    *param_3 = *param_3 << 0x10;
  }
  uVar2 = param_3[2];
  while ((uVar2 & 0x8000) == 0) {
    uVar9 = *param_3;
    uVar1 = param_3[1];
    sVar6 = sVar6 + -1;
    *param_3 = uVar9 * 2;
    uVar2 = param_3[2] * 2;
    param_3[1] = uVar1 * 2 | uVar9 >> 0x1f;
    param_3[2] = uVar2 | uVar1 >> 0x1f;
  }
  *(short *)((int)param_3 + 10) = sVar6;
  ___security_check_cookie_4();
  return;
}



// Library Function - Single Match
//  __frnd
// 
// Library: Visual Studio 2008 Release

float10 __frnd(double param_1)

{
  return (float10)ROUND(param_1);
}



// Library Function - Single Match
//  __87except
// 
// Library: Visual Studio 2008 Release

void __87except(int param_1,int *param_2,ushort *param_3)

{
  int iVar1;
  uint local_98;
  undefined4 local_94;
  undefined local_90 [48];
  undefined8 local_60;
  uint local_50;
  uint local_14;
  
  local_14 = DAT_0323f878 ^ (uint)&stack0xfffffff0;
  local_98 = (uint)*param_3;
  iVar1 = *param_2;
  if (iVar1 == 1) {
LAB_00a6a78e:
    local_94 = 8;
LAB_00a6a798:
    iVar1 = __handle_exc(local_94,param_2 + 6,local_98);
    if (iVar1 == 0) {
      if (((param_1 == 0x10) || (param_1 == 0x16)) || (param_1 == 0x1d)) {
        local_60 = *(undefined8 *)(param_2 + 4);
        local_50 = local_50 & 0xffffffe3 | 3;
      }
      else {
        local_50 = local_50 & 0xfffffffe;
      }
      __raise_exc(local_90,&local_98,local_94,param_1,param_2 + 2,param_2 + 6);
    }
  }
  else {
    if (iVar1 == 2) {
      local_94 = 4;
      goto LAB_00a6a798;
    }
    if (iVar1 == 3) {
      local_94 = 0x11;
      goto LAB_00a6a798;
    }
    if (iVar1 == 4) {
      local_94 = 0x12;
      goto LAB_00a6a798;
    }
    if (iVar1 == 5) goto LAB_00a6a78e;
    if (iVar1 == 7) {
      *param_2 = 1;
    }
    else if (iVar1 == 8) {
      local_94 = 0x10;
      goto LAB_00a6a798;
    }
  }
  __ctrlfp(local_98,0xffff);
  if ((*param_2 != 8) && (DAT_03240dd4 == 0)) {
    iVar1 = FUN_0044568d(param_2);
    if (iVar1 != 0) goto LAB_00a6a82b;
  }
  __set_errno_from_matherr(*param_2);
LAB_00a6a82b:
  ___security_check_cookie_4();
  return;
}



// WARNING: Removing unreachable block (ram,0x00a6ad79)
// WARNING: Removing unreachable block (ram,0x00a6ad83)
// WARNING: Removing unreachable block (ram,0x00a6ad88)
// Library Function - Single Match
//  _$I10_OUTPUT
// 
// Library: Visual Studio 2008 Release

void __I10_OUTPUT(int param_1,uint param_2,ushort param_3,int param_4,byte param_5,short *param_6)

{
  int iVar1;
  undefined **ppuVar2;
  int iVar3;
  bool bVar4;
  errno_t eVar5;
  undefined **ppuVar6;
  ushort *puVar7;
  uint uVar8;
  ushort uVar9;
  ushort uVar10;
  uint uVar11;
  uint uVar12;
  ushort uVar13;
  uint uVar14;
  char cVar15;
  uint uVar16;
  uint uVar17;
  short *psVar18;
  short *psVar19;
  ushort uVar20;
  ushort uVar21;
  short *psVar22;
  int iVar23;
  uint uVar24;
  char *pcVar25;
  undefined4 uVar26;
  ushort *local_70;
  undefined **local_6c;
  undefined **local_68;
  int local_5c;
  int local_58;
  int local_54;
  short local_50;
  ushort *local_4c;
  int local_48;
  int local_44;
  undefined2 local_40;
  undefined4 uStack_3e;
  ushort uStack_3a;
  undefined *local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined local_2c;
  undefined uStack_2b;
  undefined uStack_2a;
  undefined uStack_29;
  undefined4 local_24;
  undefined4 uStack_20;
  ushort uStack_1c;
  undefined local_1a;
  byte bStack_19;
  byte local_14;
  undefined uStack_13;
  undefined4 uStack_12;
  undefined4 uStack_e;
  ushort uStack_a;
  uint local_8;
  
  uVar17 = CONCAT22(uStack_20._2_2_,(undefined2)uStack_20);
  uVar8 = CONCAT22(local_24._2_2_,(undefined2)local_24);
  iVar23 = CONCAT22(uStack_3e._2_2_,(undefined2)uStack_3e);
  iVar1 = CONCAT22(uStack_3e._2_2_,(undefined2)uStack_3e);
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = (byte)param_1;
  uStack_13 = (undefined)((uint)param_1 >> 8);
  uStack_12._0_2_ = (ushort)((uint)param_1 >> 0x10);
  uStack_12._2_2_ = (ushort)param_2;
  uVar24 = CONCAT22(uStack_12._2_2_,(ushort)uStack_12);
  uStack_e._0_2_ = (ushort)(param_2 >> 0x10);
  uStack_e._2_2_ = param_3;
  uVar11 = CONCAT22(param_3,(ushort)uStack_e);
  uVar12 = CONCAT22(param_3,(ushort)uStack_e);
  uVar9 = param_3 & 0x8000;
  uVar14 = param_3 & 0x7fff;
  local_34 = 0xcccccccc;
  local_30 = 0xcccccccc;
  local_2c = 0xcc;
  uStack_2b = 0xcc;
  uStack_2a = 0xfb;
  uStack_29 = 0x3f;
  uVar26 = 1;
  if (uVar9 == 0) {
    *(undefined *)(param_6 + 1) = 0x20;
  }
  else {
    *(undefined *)(param_6 + 1) = 0x2d;
  }
  if ((((short)uVar14 == 0) && (param_2 == 0)) && (param_1 == 0)) {
    *param_6 = 0;
    *(byte *)(param_6 + 1) = ((uVar9 != 0x8000) - 1U & 0xd) + 0x20;
    *(undefined *)((int)param_6 + 3) = 1;
    *(undefined *)(param_6 + 2) = 0x30;
    *(undefined *)((int)param_6 + 5) = 0;
    iVar1 = iVar23;
    goto LAB_00a6b116;
  }
  if ((short)uVar14 == 0x7fff) {
    *param_6 = 1;
    if (((param_2 == 0x80000000) && (param_1 == 0)) || ((param_2 & 0x40000000) != 0)) {
      if ((uVar9 == 0) || (param_2 != 0xc0000000)) {
        if ((param_2 != 0x80000000) || (param_1 != 0)) goto LAB_00a6a974;
        pcVar25 = "1#INF";
      }
      else {
        if (param_1 != 0) {
LAB_00a6a974:
          pcVar25 = "1#QNAN";
          goto LAB_00a6a979;
        }
        pcVar25 = "1#IND";
      }
      eVar5 = _strcpy_s((char *)(param_6 + 2),0x16,pcVar25);
      if (eVar5 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      *(undefined *)((int)param_6 + 3) = 5;
    }
    else {
      pcVar25 = "1#SNAN";
LAB_00a6a979:
      eVar5 = _strcpy_s((char *)(param_6 + 2),0x16,pcVar25);
      if (eVar5 != 0) {
                    // WARNING: Subroutine does not return
        __invoke_watson((wchar_t *)0x0,(wchar_t *)0x0,(wchar_t *)0x0,0,0);
      }
      *(undefined *)((int)param_6 + 3) = 6;
    }
    uVar11 = CONCAT22(uStack_e._2_2_,(ushort)uStack_e);
    uVar17 = CONCAT22(uStack_20._2_2_,(undefined2)uStack_20);
    uVar8 = CONCAT22(local_24._2_2_,(undefined2)local_24);
    iVar1 = CONCAT22(uStack_3e._2_2_,(undefined2)uStack_3e);
    goto LAB_00a6b116;
  }
  local_50 = (short)(((uVar14 >> 8) + (param_2 >> 0x18) * 2) * 0x4d + -0x134312f4 + uVar14 * 0x4d10
                    >> 0x10);
  uVar16 = (uint)local_50;
  local_24._0_2_ = 0;
  local_1a = (undefined)uVar14;
  bStack_19 = (byte)(uVar14 >> 8);
  uStack_20._2_2_ = uStack_12._2_2_;
  uVar17 = CONCAT22(uStack_12._2_2_,(ushort)uStack_12);
  uStack_1c = (ushort)uStack_e;
  local_24._2_2_ = (ushort)param_1;
  uVar8 = param_1 << 0x10;
  local_68 = &PTR_LAB_03240ab8;
  if (-uVar16 != 0) {
    uVar14 = -uVar16;
    iVar1 = iVar23;
    uVar24 = uStack_12;
    uVar12 = uVar11;
    uVar8 = param_1 << 0x10;
    uVar17 = CONCAT22(uStack_12._2_2_,(ushort)uStack_12);
    if (0 < (int)uVar16) {
      local_68 = (undefined **)&DAT_03240c18;
      uVar14 = uVar16;
    }
joined_r0x00a6aa07:
    if (uVar14 != 0) {
      local_68 = local_68 + 0x15;
      uVar11 = uVar14 & 7;
      uVar14 = (int)uVar14 >> 3;
      if (uVar11 != 0) {
        ppuVar6 = local_68 + uVar11 * 3;
        if (0x7fff < *(ushort *)ppuVar6) {
          local_40 = SUB42(*ppuVar6,0);
          uStack_3e._0_2_ = (undefined2)((uint)*ppuVar6 >> 0x10);
          ppuVar2 = ppuVar6 + 2;
          uStack_3e._2_2_ = SUB42(ppuVar6[1],0);
          uStack_3a = (ushort)((uint)ppuVar6[1] >> 0x10);
          ppuVar6 = (undefined **)&local_40;
          local_38 = *ppuVar2;
          iVar1 = CONCAT22(uStack_3e._2_2_,(undefined2)uStack_3e) + -1;
          uStack_3e._0_2_ = (undefined2)iVar1;
          uStack_3e._2_2_ = (undefined2)((uint)iVar1 >> 0x10);
        }
        local_58 = 0;
        local_14 = 0;
        uStack_13 = 0;
        uStack_12._0_2_ = 0;
        uStack_12._2_2_ = 0;
        uVar24 = 0;
        uStack_e._0_2_ = 0;
        uStack_e._2_2_ = 0;
        uVar12 = 0;
        uStack_a = 0;
        uVar20 = (*(ushort *)((int)ppuVar6 + 10) ^ CONCAT11(bStack_19,local_1a)) & 0x8000;
        uVar10 = CONCAT11(bStack_19,local_1a) & 0x7fff;
        uVar13 = *(ushort *)((int)ppuVar6 + 10) & 0x7fff;
        uVar21 = uVar13 + uVar10;
        if (((uVar10 < 0x7fff) && (uVar13 < 0x7fff)) && (uVar21 < 0xbffe)) {
          if (0x3fbf < uVar21) {
            if (((uVar10 == 0) &&
                (uVar21 = uVar21 + 1,
                (CONCAT13(bStack_19,CONCAT12(local_1a,uStack_1c)) & 0x7fffffff) == 0)) &&
               ((uVar17 == 0 && (uVar8 == 0)))) {
              local_1a = 0;
              bStack_19 = 0;
              goto joined_r0x00a6aa07;
            }
            if ((((uVar13 != 0) || (uVar21 = uVar21 + 1, ((uint)ppuVar6[2] & 0x7fffffff) != 0)) ||
                (ppuVar6[1] != (undefined *)0x0)) || (*ppuVar6 != (undefined *)0x0)) {
              local_5c = 0;
              psVar22 = (short *)((int)&uStack_12 + 2);
              local_44 = 5;
              do {
                local_54 = local_44;
                if (0 < local_44) {
                  local_70 = (ushort *)((int)&local_24 + local_5c * 2);
                  local_6c = ppuVar6 + 2;
                  do {
                    bVar4 = false;
                    uVar12 = *(uint *)(psVar22 + -2) + (uint)*local_70 * (uint)*(ushort *)local_6c;
                    if ((uVar12 < *(uint *)(psVar22 + -2)) ||
                       (uVar12 < (uint)*local_70 * (uint)*(ushort *)local_6c)) {
                      bVar4 = true;
                    }
                    *(uint *)(psVar22 + -2) = uVar12;
                    if (bVar4) {
                      *psVar22 = *psVar22 + 1;
                    }
                    local_70 = local_70 + 1;
                    local_6c = (undefined **)((int)local_6c + -2);
                    local_54 = local_54 + -1;
                  } while (0 < local_54);
                }
                psVar22 = psVar22 + 1;
                local_5c = local_5c + 1;
                local_44 = local_44 + -1;
              } while (0 < local_44);
              uVar21 = uVar21 + 0xc002;
              if ((short)uVar21 < 1) {
LAB_00a6abba:
                uVar21 = uVar21 - 1;
                if ((short)uVar21 < 0) {
                  uVar12 = (uint)(ushort)-uVar21;
                  uVar21 = 0;
                  do {
                    if ((local_14 & 1) != 0) {
                      local_58 = local_58 + 1;
                    }
                    iVar3 = CONCAT22(uStack_a,uStack_e._2_2_);
                    uVar24 = CONCAT22((ushort)uStack_e,uStack_12._2_2_);
                    iVar23 = CONCAT22((ushort)uStack_e,uStack_12._2_2_);
                    uStack_e._2_2_ = (ushort)(CONCAT22(uStack_a,uStack_e._2_2_) >> 1);
                    uStack_a = uStack_a >> 1;
                    uStack_e._0_2_ = (ushort)uStack_e >> 1 | (ushort)((uint)(iVar3 << 0x1f) >> 0x10)
                    ;
                    uVar8 = CONCAT22((ushort)uStack_12,CONCAT11(uStack_13,local_14)) >> 1;
                    uStack_12._0_2_ =
                         (ushort)uStack_12 >> 1 | (ushort)((uint)(iVar23 << 0x1f) >> 0x10);
                    uVar12 = uVar12 - 1;
                    uStack_12._2_2_ = (ushort)(uVar24 >> 1);
                    local_14 = (byte)uVar8;
                    uStack_13 = (undefined)(uVar8 >> 8);
                  } while (uVar12 != 0);
                  if (local_58 != 0) {
                    local_14 = local_14 | 1;
                  }
                }
              }
              else {
                do {
                  uVar13 = (ushort)uStack_e;
                  uVar10 = (ushort)uStack_12;
                  if ((uStack_a & 0x8000) != 0) break;
                  iVar23 = CONCAT22((ushort)uStack_12,CONCAT11(uStack_13,local_14)) << 1;
                  local_14 = (byte)iVar23;
                  uStack_13 = (undefined)((uint)iVar23 >> 8);
                  uStack_12._0_2_ = (ushort)((uint)iVar23 >> 0x10);
                  iVar23 = CONCAT22((ushort)uStack_e,uStack_12._2_2_) * 2;
                  uStack_12._2_2_ = (ushort)iVar23 | uVar10 >> 0xf;
                  uStack_e._0_2_ = (ushort)((uint)iVar23 >> 0x10);
                  iVar23 = CONCAT22(uStack_a,uStack_e._2_2_) * 2;
                  uStack_e._2_2_ = (ushort)iVar23 | uVar13 >> 0xf;
                  uVar21 = uVar21 - 1;
                  uStack_a = (ushort)((uint)iVar23 >> 0x10);
                } while (0 < (short)uVar21);
                if ((short)uVar21 < 1) goto LAB_00a6abba;
              }
              if ((0x8000 < CONCAT11(uStack_13,local_14)) ||
                 (uVar12 = CONCAT22(uStack_e._2_2_,(ushort)uStack_e),
                 uVar24 = CONCAT22(uStack_12._2_2_,(ushort)uStack_12),
                 (CONCAT22((ushort)uStack_12,CONCAT11(uStack_13,local_14)) & 0x1ffff) == 0x18000)) {
                if (CONCAT22(uStack_12._2_2_,(ushort)uStack_12) == -1) {
                  uStack_12._0_2_ = 0;
                  uStack_12._2_2_ = 0;
                  uVar24 = 0;
                  if (CONCAT22(uStack_e._2_2_,(ushort)uStack_e) == -1) {
                    uStack_e._0_2_ = 0;
                    uStack_e._2_2_ = 0;
                    if (uStack_a == 0xffff) {
                      uStack_a = 0x8000;
                      uVar21 = uVar21 + 1;
                      uVar12 = 0;
                      uVar24 = 0;
                    }
                    else {
                      uStack_a = uStack_a + 1;
                      uVar12 = 0;
                      uVar24 = 0;
                    }
                  }
                  else {
                    uVar12 = CONCAT22(uStack_e._2_2_,(ushort)uStack_e) + 1;
                    uStack_e._0_2_ = (ushort)uVar12;
                    uStack_e._2_2_ = (ushort)(uVar12 >> 0x10);
                  }
                }
                else {
                  uVar24 = CONCAT22(uStack_12._2_2_,(ushort)uStack_12) + 1;
                  uStack_12._0_2_ = (ushort)uVar24;
                  uStack_12._2_2_ = (ushort)(uVar24 >> 0x10);
                  uVar12 = CONCAT22(uStack_e._2_2_,(ushort)uStack_e);
                }
              }
              uStack_12._2_2_ = (ushort)(uVar24 >> 0x10);
              uStack_12._0_2_ = (ushort)uVar24;
              uStack_e._2_2_ = (ushort)(uVar12 >> 0x10);
              uStack_e._0_2_ = (ushort)uVar12;
              if (uVar21 < 0x7fff) {
                bStack_19 = (byte)(uVar21 >> 8) | (byte)(uVar20 >> 8);
                local_24._0_2_ = (ushort)uStack_12;
                local_24._2_2_ = uStack_12._2_2_;
                uStack_20._0_2_ = (ushort)uStack_e;
                uStack_20._2_2_ = uStack_e._2_2_;
                uStack_1c = uStack_a;
                local_1a = (undefined)uVar21;
                uVar8 = uVar24;
                uVar17 = uVar12;
              }
              else {
                uStack_20._0_2_ = 0;
                uStack_20._2_2_ = 0;
                local_24._0_2_ = 0;
                local_24._2_2_ = 0;
                iVar23 = ((uVar20 == 0) - 1 & 0x80000000) + 0x7fff8000;
                uStack_1c = (ushort)iVar23;
                local_1a = (undefined)((uint)iVar23 >> 0x10);
                bStack_19 = (byte)((uint)iVar23 >> 0x18);
                uVar8 = 0;
                uVar17 = 0;
              }
              goto joined_r0x00a6aa07;
            }
          }
          uStack_1c = 0;
          local_1a = 0;
          bStack_19 = 0;
        }
        else {
          iVar23 = ((uVar20 == 0) - 1 & 0x80000000) + 0x7fff8000;
          uStack_1c = (ushort)iVar23;
          local_1a = (undefined)((uint)iVar23 >> 0x10);
          bStack_19 = (byte)((uint)iVar23 >> 0x18);
        }
        uStack_20._0_2_ = 0;
        uStack_20._2_2_ = 0;
        local_24._0_2_ = 0;
        local_24._2_2_ = 0;
        uVar24 = 0;
        uVar12 = 0;
        uVar8 = 0;
        uVar17 = 0;
      }
      goto joined_r0x00a6aa07;
    }
  }
  uVar14 = CONCAT13(bStack_19,CONCAT12(local_1a,uStack_1c));
  uStack_12 = uVar24;
  uVar11 = uVar12;
  if (0x3ffe < (ushort)(uVar14 >> 0x10)) {
    local_50 = local_50 + 1;
    local_54 = 0;
    local_14 = 0;
    uStack_13 = 0;
    uStack_12._0_2_ = 0;
    uStack_12._2_2_ = 0;
    uStack_12 = 0;
    uStack_e._0_2_ = 0;
    uStack_e._2_2_ = 0;
    uVar11 = 0;
    uStack_a = 0;
    uVar12 = uVar14 >> 0x10 & 0x7fff;
    iVar23 = uVar12 + 0x3ffb;
    if (((ushort)uVar12 < 0x7fff) && ((ushort)iVar23 < 0xbffe)) {
      if (0x3fbf < (ushort)iVar23) {
        if (((((ushort)uVar12 == 0) &&
             (iVar23 = uVar12 + 0x3ffc,
             (CONCAT13(bStack_19,CONCAT12(local_1a,uStack_1c)) & 0x7fffffff) == 0)) && (uVar17 == 0)
            ) && (uVar8 == 0)) {
          local_1a = 0;
          bStack_19 = 0;
          goto LAB_00a6af4e;
        }
        local_5c = 0;
        psVar22 = (short *)((int)&uStack_12 + 2);
        local_44 = 5;
        do {
          local_58 = local_44;
          if (0 < local_44) {
            local_4c = (ushort *)&local_2c;
            puVar7 = (ushort *)((int)&local_24 + local_5c * 2);
            do {
              bVar4 = false;
              uVar12 = *(uint *)(psVar22 + -2) + (uint)*local_4c * (uint)*puVar7;
              if ((uVar12 < *(uint *)(psVar22 + -2)) || (uVar12 < (uint)*local_4c * (uint)*puVar7))
              {
                bVar4 = true;
              }
              *(uint *)(psVar22 + -2) = uVar12;
              if (bVar4) {
                *psVar22 = *psVar22 + 1;
              }
              local_4c = local_4c + -1;
              puVar7 = puVar7 + 1;
              local_58 = local_58 + -1;
            } while (0 < local_58);
          }
          psVar22 = psVar22 + 1;
          local_5c = local_5c + 1;
          local_44 = local_44 + -1;
        } while (0 < local_44);
        iVar23 = iVar23 + 0xc002;
        if ((short)iVar23 < 1) {
LAB_00a6ae47:
          uVar21 = (ushort)(iVar23 + 0xffff);
          if ((short)uVar21 < 0) {
            uVar12 = -(iVar23 + 0xffff);
            uVar24 = uVar12 & 0xffff;
            uVar21 = uVar21 + (short)uVar12;
            do {
              if ((local_14 & 1) != 0) {
                local_54 = local_54 + 1;
              }
              iVar3 = CONCAT22(uStack_a,uStack_e._2_2_);
              uVar12 = CONCAT22((ushort)uStack_e,uStack_12._2_2_);
              iVar23 = CONCAT22((ushort)uStack_e,uStack_12._2_2_);
              uStack_e._2_2_ = (ushort)(CONCAT22(uStack_a,uStack_e._2_2_) >> 1);
              uStack_a = uStack_a >> 1;
              uStack_e._0_2_ = (ushort)uStack_e >> 1 | (ushort)((uint)(iVar3 << 0x1f) >> 0x10);
              uVar8 = CONCAT22((ushort)uStack_12,CONCAT11(uStack_13,local_14)) >> 1;
              uStack_12._0_2_ = (ushort)uStack_12 >> 1 | (ushort)((uint)(iVar23 << 0x1f) >> 0x10);
              uVar24 = uVar24 - 1;
              uStack_12._2_2_ = (ushort)(uVar12 >> 1);
              local_14 = (byte)uVar8;
              uStack_13 = (undefined)(uVar8 >> 8);
            } while (uVar24 != 0);
            if (local_54 != 0) {
              local_14 = local_14 | 1;
            }
          }
        }
        else {
          do {
            uVar10 = (ushort)uStack_e;
            uVar21 = (ushort)uStack_12;
            if ((short)uStack_a < 0) break;
            iVar3 = CONCAT22((ushort)uStack_12,CONCAT11(uStack_13,local_14)) << 1;
            local_14 = (byte)iVar3;
            uStack_13 = (undefined)((uint)iVar3 >> 8);
            uStack_12._0_2_ = (ushort)((uint)iVar3 >> 0x10);
            iVar3 = CONCAT22((ushort)uStack_e,uStack_12._2_2_) * 2;
            uStack_12._2_2_ = (ushort)iVar3 | uVar21 >> 0xf;
            uStack_e._0_2_ = (ushort)((uint)iVar3 >> 0x10);
            iVar3 = CONCAT22(uStack_a,uStack_e._2_2_) * 2;
            uStack_e._2_2_ = (ushort)iVar3 | uVar10 >> 0xf;
            iVar23 = iVar23 + 0xffff;
            uStack_a = (ushort)((uint)iVar3 >> 0x10);
          } while (0 < (short)iVar23);
          uVar21 = (ushort)iVar23;
          if ((short)uVar21 < 1) goto LAB_00a6ae47;
        }
        if ((0x8000 < CONCAT11(uStack_13,local_14)) ||
           (uVar11 = CONCAT22(uStack_e._2_2_,(ushort)uStack_e),
           uStack_12 = CONCAT22(uStack_12._2_2_,(ushort)uStack_12),
           (CONCAT22((ushort)uStack_12,CONCAT11(uStack_13,local_14)) & 0x1ffff) == 0x18000)) {
          if (CONCAT22(uStack_12._2_2_,(ushort)uStack_12) == -1) {
            uStack_12 = 0;
            if (CONCAT22(uStack_e._2_2_,(ushort)uStack_e) == -1) {
              if (uStack_a == 0xffff) {
                uStack_a = 0x8000;
                uVar21 = uVar21 + 1;
                uVar11 = 0;
                uStack_12 = 0;
              }
              else {
                uStack_a = uStack_a + 1;
                uVar11 = 0;
                uStack_12 = 0;
              }
            }
            else {
              uVar11 = CONCAT22(uStack_e._2_2_,(ushort)uStack_e) + 1;
            }
          }
          else {
            uStack_12 = CONCAT22(uStack_12._2_2_,(ushort)uStack_12) + 1;
            uVar11 = CONCAT22(uStack_e._2_2_,(ushort)uStack_e);
          }
        }
        if (uVar21 < 0x7fff) {
          bStack_19 = (byte)(uVar21 >> 8) | bStack_19 & 0x80;
          uStack_1c = uStack_a;
          local_1a = (undefined)uVar21;
          uVar8 = uStack_12;
          uVar17 = uVar11;
        }
        else {
          iVar23 = (((bStack_19 & 0x80) == 0) - 1 & 0x80000000) + 0x7fff8000;
          uStack_1c = (ushort)iVar23;
          local_1a = (undefined)((uint)iVar23 >> 0x10);
          bStack_19 = (byte)((uint)iVar23 >> 0x18);
          uVar8 = 0;
          uVar17 = 0;
        }
        goto LAB_00a6af4e;
      }
      iVar23 = 0;
    }
    else {
      iVar23 = (((bStack_19 & 0x80) == 0) - 1 & 0x80000000) + 0x7fff8000;
    }
    uStack_1c = (ushort)iVar23;
    local_1a = (undefined)((uint)iVar23 >> 0x10);
    bStack_19 = (byte)((uint)iVar23 >> 0x18);
    uStack_12 = 0;
    uVar11 = 0;
    uVar8 = 0;
    uVar17 = 0;
  }
LAB_00a6af4e:
  *param_6 = local_50;
  if (((param_5 & 1) == 0) || (param_4 = param_4 + local_50, 0 < param_4)) {
    if (0x15 < param_4) {
      param_4 = 0x15;
    }
    iVar23 = (CONCAT13(bStack_19,CONCAT12(local_1a,uStack_1c)) >> 0x10) - 0x3ffe;
    local_1a = 0;
    bStack_19 = 0;
    local_48 = 8;
    uVar12 = uVar8;
    uVar24 = uVar17;
    do {
      uVar8 = uVar12 << 1;
      uVar17 = uVar24 * 2 | uVar12 >> 0x1f;
      iVar3 = CONCAT13(bStack_19,CONCAT12(local_1a,uStack_1c)) * 2;
      uStack_1c = (ushort)iVar3 | (ushort)(uVar24 >> 0x1f);
      local_48 = local_48 + -1;
      uStack_20._0_2_ = (undefined2)uVar17;
      uStack_20._2_2_ = (ushort)(uVar24 * 2 >> 0x10);
      local_1a = (undefined)((uint)iVar3 >> 0x10);
      bStack_19 = (byte)((uint)iVar3 >> 0x18);
      uVar12 = uVar8;
      uVar24 = uVar17;
    } while (local_48 != 0);
    if ((iVar23 < 0) && (uVar24 = -iVar23 & 0xff, uVar24 != 0)) {
      do {
        iVar23 = CONCAT13(bStack_19,CONCAT12(local_1a,uStack_1c));
        uVar8 = CONCAT13(bStack_19,CONCAT12(local_1a,uStack_1c)) >> 1;
        uStack_1c = (ushort)uVar8;
        local_1a = (undefined)(uVar8 >> 0x10);
        bStack_19 = bStack_19 >> 1;
        uVar14 = CONCAT22(uStack_20._2_2_,(undefined2)uStack_20) >> 1;
        uVar17 = uVar14 | iVar23 << 0x1f;
        uVar8 = uVar12 >> 1 | CONCAT22(uStack_20._2_2_,(undefined2)uStack_20) << 0x1f;
        uVar24 = uVar24 - 1;
        uStack_20._0_2_ = (undefined2)uVar14;
        uStack_20._2_2_ = (ushort)(uVar17 >> 0x10);
        local_24._0_2_ = (undefined2)(uVar12 >> 1);
        local_24._2_2_ = (ushort)(uVar8 >> 0x10);
        uVar12 = CONCAT22(local_24._2_2_,(undefined2)local_24);
      } while (0 < (int)uVar24);
    }
    psVar22 = param_6 + 2;
    psVar18 = psVar22;
    for (param_4 = param_4 + 1; 0 < param_4; param_4 = param_4 + -1) {
      uStack_20._2_2_ = (ushort)(uVar17 >> 0x10);
      uStack_20._0_2_ = (undefined2)uVar17;
      local_24._2_2_ = (ushort)(uVar8 >> 0x10);
      local_24._0_2_ = (undefined2)uVar8;
      iVar1 = CONCAT22((undefined2)uStack_20,local_24._2_2_);
      local_38 = (undefined *)CONCAT13(bStack_19,CONCAT12(local_1a,uStack_1c));
      uVar24 = (CONCAT13(bStack_19,CONCAT12(local_1a,uStack_1c)) * 2 |
               (uint)(uStack_20._2_2_ >> 0xf)) * 2 | uVar17 * 2 >> 0x1f;
      uVar14 = (uVar17 * 2 | (uint)(local_24._2_2_ >> 0xf)) * 2 | (uVar8 << 1) >> 0x1f;
      uVar12 = uVar8 * 5;
      if ((uVar12 < uVar8 * 4) || (uVar16 = uVar14, uVar12 < uVar8)) {
        uVar16 = uVar14 + 1;
        bVar4 = false;
        if ((uVar16 < uVar14) || (uVar16 == 0)) {
          bVar4 = true;
        }
        if (bVar4) {
          uVar24 = uVar24 + 1;
        }
      }
      uVar14 = uVar17 + uVar16;
      if ((uVar14 < uVar16) || (uVar14 < uVar17)) {
        uVar24 = uVar24 + 1;
      }
      iVar23 = (int)(local_38 + uVar24) * 2;
      uStack_1c = (ushort)iVar23 | (ushort)(uVar14 >> 0x1f);
      uVar8 = uVar8 * 10;
      local_1a = (undefined)((uint)iVar23 >> 0x10);
      uVar17 = uVar14 * 2 | uVar12 >> 0x1f;
      *(char *)psVar18 = (char)((uint)iVar23 >> 0x18) + '0';
      psVar18 = (short *)((int)psVar18 + 1);
      bStack_19 = 0;
      local_40 = (undefined2)local_24;
      uStack_3a = uStack_20._2_2_;
    }
    psVar19 = psVar18 + -1;
    if (*(char *)((int)psVar18 + -1) < '5') {
      for (; (psVar22 <= psVar19 && (*(char *)psVar19 == '0'));
          psVar19 = (short *)((int)psVar19 + -1)) {
      }
      if (psVar19 < psVar22) {
        *param_6 = 0;
        *(undefined *)((int)param_6 + 3) = 1;
        *(byte *)(param_6 + 1) = ((uVar9 != 0x8000) - 1U & 0xd) + 0x20;
        *(undefined *)psVar22 = 0x30;
        *(undefined *)((int)param_6 + 5) = 0;
        goto LAB_00a6b116;
      }
    }
    else {
      for (; (psVar22 <= psVar19 && (*(char *)psVar19 == '9'));
          psVar19 = (short *)((int)psVar19 + -1)) {
        *(undefined *)psVar19 = 0x30;
      }
      if (psVar19 < psVar22) {
        psVar19 = (short *)((int)psVar19 + 1);
        *param_6 = *param_6 + 1;
      }
      *(char *)psVar19 = *(char *)psVar19 + '\x01';
    }
    cVar15 = ((char)psVar19 - (char)param_6) + -3;
    *(char *)((int)param_6 + 3) = cVar15;
    *(undefined *)(cVar15 + 4 + (int)param_6) = 0;
  }
  else {
    *param_6 = 0;
    *(undefined *)((int)param_6 + 3) = 1;
    *(byte *)(param_6 + 1) = ((uVar9 != 0x8000) - 1U & 0xd) + 0x20;
    *(undefined *)(param_6 + 2) = 0x30;
    *(undefined *)((int)param_6 + 5) = 0;
  }
LAB_00a6b116:
  uStack_3e = iVar1;
  local_24 = uVar8;
  uStack_20 = uVar17;
  uStack_e = uVar11;
  ___security_check_cookie_4(uVar26);
  return;
}



// Library Function - Single Match
//  __hw_cw
// 
// Library: Visual Studio 2008 Release

uint __hw_cw(void)

{
  uint uVar1;
  uint uVar2;
  uint unaff_EBX;
  
  uVar1 = (uint)((unaff_EBX & 0x10) != 0);
  if ((unaff_EBX & 8) != 0) {
    uVar1 = uVar1 | 4;
  }
  if ((unaff_EBX & 4) != 0) {
    uVar1 = uVar1 | 8;
  }
  if ((unaff_EBX & 2) != 0) {
    uVar1 = uVar1 | 0x10;
  }
  if ((unaff_EBX & 1) != 0) {
    uVar1 = uVar1 | 0x20;
  }
  if ((unaff_EBX & 0x80000) != 0) {
    uVar1 = uVar1 | 2;
  }
  uVar2 = unaff_EBX & 0x300;
  if (uVar2 != 0) {
    if (uVar2 == 0x100) {
      uVar1 = uVar1 | 0x400;
    }
    else if (uVar2 == 0x200) {
      uVar1 = uVar1 | 0x800;
    }
    else if (uVar2 == 0x300) {
      uVar1 = uVar1 | 0xc00;
    }
  }
  if ((unaff_EBX & 0x30000) == 0) {
    uVar1 = uVar1 | 0x300;
  }
  else if ((unaff_EBX & 0x30000) == 0x10000) {
    uVar1 = uVar1 | 0x200;
  }
  if ((unaff_EBX & 0x40000) != 0) {
    uVar1 = uVar1 | 0x1000;
  }
  return uVar1;
}



// Library Function - Single Match
//  ___hw_cw_sse2
// 
// Library: Visual Studio 2008 Release

uint __fastcall ___hw_cw_sse2(undefined4 param_1,uint param_2)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = 0;
  if ((param_2 & 0x10) != 0) {
    uVar1 = 0x80;
  }
  if ((param_2 & 8) != 0) {
    uVar1 = uVar1 | 0x200;
  }
  if ((param_2 & 4) != 0) {
    uVar1 = uVar1 | 0x400;
  }
  if ((param_2 & 2) != 0) {
    uVar1 = uVar1 | 0x800;
  }
  if ((param_2 & 1) != 0) {
    uVar1 = uVar1 | 0x1000;
  }
  if ((param_2 & 0x80000) != 0) {
    uVar1 = uVar1 | 0x100;
  }
  uVar2 = param_2 & 0x300;
  if (uVar2 != 0) {
    if (uVar2 == 0x100) {
      uVar1 = uVar1 | 0x2000;
    }
    else if (uVar2 == 0x200) {
      uVar1 = uVar1 | 0x4000;
    }
    else if (uVar2 == 0x300) {
      uVar1 = uVar1 | 0x6000;
    }
  }
  param_2 = param_2 & 0x3000000;
  if (param_2 == 0x1000000) {
    uVar1 = uVar1 | 0x8040;
  }
  else {
    if (param_2 == 0x2000000) {
      return uVar1 | 0x40;
    }
    if (param_2 == 0x3000000) {
      return uVar1 | 0x8000;
    }
  }
  return uVar1;
}



// Library Function - Single Match
//  __control87
// 
// Library: Visual Studio 2008 Release

uint __cdecl __control87(uint _NewValue,uint _Mask)

{
  ushort uVar1;
  uint uVar2;
  uint uVar3;
  undefined4 uVar4;
  uint uVar5;
  ushort in_FPUControlWord;
  
  uVar5 = 0;
  if ((in_FPUControlWord & 1) != 0) {
    uVar5 = 0x10;
  }
  if ((in_FPUControlWord & 4) != 0) {
    uVar5 = uVar5 | 8;
  }
  if ((in_FPUControlWord & 8) != 0) {
    uVar5 = uVar5 | 4;
  }
  if ((in_FPUControlWord & 0x10) != 0) {
    uVar5 = uVar5 | 2;
  }
  if ((in_FPUControlWord & 0x20) != 0) {
    uVar5 = uVar5 | 1;
  }
  if ((in_FPUControlWord & 2) != 0) {
    uVar5 = uVar5 | 0x80000;
  }
  uVar1 = in_FPUControlWord & 0xc00;
  if ((in_FPUControlWord & 0xc00) != 0) {
    if (uVar1 == 0x400) {
      uVar5 = uVar5 | 0x100;
    }
    else if (uVar1 == 0x800) {
      uVar5 = uVar5 | 0x200;
    }
    else if (uVar1 == 0xc00) {
      uVar5 = uVar5 | 0x300;
    }
  }
  if ((in_FPUControlWord & 0x300) == 0) {
    uVar5 = uVar5 | 0x20000;
  }
  else if ((in_FPUControlWord & 0x300) == 0x200) {
    uVar5 = uVar5 | 0x10000;
  }
  if ((in_FPUControlWord & 0x1000) != 0) {
    uVar5 = uVar5 | 0x40000;
  }
  uVar2 = ~_Mask & uVar5 | _NewValue & _Mask;
  if (uVar2 != uVar5) {
    uVar5 = __hw_cw();
    uVar2 = 0;
    if ((uVar5 & 1) != 0) {
      uVar2 = 0x10;
    }
    if ((uVar5 & 4) != 0) {
      uVar2 = uVar2 | 8;
    }
    if ((uVar5 & 8) != 0) {
      uVar2 = uVar2 | 4;
    }
    if ((uVar5 & 0x10) != 0) {
      uVar2 = uVar2 | 2;
    }
    if ((uVar5 & 0x20) != 0) {
      uVar2 = uVar2 | 1;
    }
    if ((uVar5 & 2) != 0) {
      uVar2 = uVar2 | 0x80000;
    }
    uVar3 = uVar5 & 0xc00;
    if (uVar3 != 0) {
      if (uVar3 == 0x400) {
        uVar2 = uVar2 | 0x100;
      }
      else if (uVar3 == 0x800) {
        uVar2 = uVar2 | 0x200;
      }
      else if (uVar3 == 0xc00) {
        uVar2 = uVar2 | 0x300;
      }
    }
    if ((uVar5 & 0x300) == 0) {
      uVar2 = uVar2 | 0x20000;
    }
    else if ((uVar5 & 0x300) == 0x200) {
      uVar2 = uVar2 | 0x10000;
    }
    if ((uVar5 & 0x1000) != 0) {
      uVar2 = uVar2 | 0x40000;
    }
  }
  uVar5 = 0;
  if (DAT_032f16e0 != 0) {
    if ((char)MXCSR < '\0') {
      uVar5 = 0x10;
    }
    if ((MXCSR & 0x200) != 0) {
      uVar5 = uVar5 | 8;
    }
    if ((MXCSR & 0x400) != 0) {
      uVar5 = uVar5 | 4;
    }
    if ((MXCSR & 0x800) != 0) {
      uVar5 = uVar5 | 2;
    }
    if ((MXCSR & 0x1000) != 0) {
      uVar5 = uVar5 | 1;
    }
    if ((MXCSR & 0x100) != 0) {
      uVar5 = uVar5 | 0x80000;
    }
    uVar3 = MXCSR & 0x6000;
    if (uVar3 != 0) {
      if (uVar3 == 0x2000) {
        uVar5 = uVar5 | 0x100;
      }
      else if (uVar3 == 0x4000) {
        uVar5 = uVar5 | 0x200;
      }
      else if (uVar3 == 0x6000) {
        uVar5 = uVar5 | 0x300;
      }
    }
    uVar3 = MXCSR & 0x8040;
    if (uVar3 == 0x40) {
      uVar5 = uVar5 | 0x2000000;
    }
    else if (uVar3 == 0x8000) {
      uVar5 = uVar5 | 0x3000000;
    }
    else if (uVar3 == 0x8040) {
      uVar5 = uVar5 | 0x1000000;
    }
    if ((~(_Mask & 0x308031f) & uVar5 | _Mask & 0x308031f & _NewValue) != uVar5) {
      uVar4 = ___hw_cw_sse2();
      ___set_fpsr_sse2(uVar4);
      uVar5 = 0;
      if ((char)MXCSR < '\0') {
        uVar5 = 0x10;
      }
      if ((MXCSR & 0x200) != 0) {
        uVar5 = uVar5 | 8;
      }
      if ((MXCSR & 0x400) != 0) {
        uVar5 = uVar5 | 4;
      }
      if ((MXCSR & 0x800) != 0) {
        uVar5 = uVar5 | 2;
      }
      if ((MXCSR & 0x1000) != 0) {
        uVar5 = uVar5 | 1;
      }
      if ((MXCSR & 0x100) != 0) {
        uVar5 = uVar5 | 0x80000;
      }
      uVar3 = MXCSR & 0x6000;
      if (uVar3 != 0) {
        if (uVar3 == 0x2000) {
          uVar5 = uVar5 | 0x100;
        }
        else if (uVar3 == 0x4000) {
          uVar5 = uVar5 | 0x200;
        }
        else if (uVar3 == 0x6000) {
          uVar5 = uVar5 | 0x300;
        }
      }
      uVar3 = MXCSR & 0x8040;
      if (uVar3 == 0x40) {
        uVar5 = uVar5 | 0x2000000;
      }
      else if (uVar3 == 0x8000) {
        uVar5 = uVar5 | 0x3000000;
      }
      else if (uVar3 == 0x8040) {
        uVar5 = uVar5 | 0x1000000;
      }
    }
    uVar3 = uVar5 ^ uVar2;
    uVar2 = uVar5 | uVar2;
    if ((uVar3 & 0x8031f) != 0) {
      uVar2 = uVar2 | 0x80000000;
    }
  }
  return uVar2;
}



// Library Function - Single Match
//  ___ascii_strnicmp
// 
// Library: Visual Studio 2008 Release

int __cdecl ___ascii_strnicmp(char *_Str1,char *_Str2,size_t _MaxCount)

{
  char cVar1;
  byte bVar2;
  ushort uVar3;
  uint uVar4;
  bool bVar5;
  
  if (_MaxCount != 0) {
    do {
      bVar2 = *_Str1;
      cVar1 = *_Str2;
      uVar3 = CONCAT11(bVar2,cVar1);
      if (bVar2 == 0) break;
      uVar3 = CONCAT11(bVar2,cVar1);
      uVar4 = (uint)uVar3;
      if (cVar1 == '\0') break;
      _Str1 = (char *)((byte *)_Str1 + 1);
      _Str2 = _Str2 + 1;
      if ((0x40 < bVar2) && (bVar2 < 0x5b)) {
        uVar4 = (uint)CONCAT11(bVar2 + 0x20,cVar1);
      }
      uVar3 = (ushort)uVar4;
      bVar2 = (byte)uVar4;
      if ((0x40 < bVar2) && (bVar2 < 0x5b)) {
        uVar3 = (ushort)CONCAT31((int3)(uVar4 >> 8),bVar2 + 0x20);
      }
      bVar2 = (byte)(uVar3 >> 8);
      bVar5 = bVar2 < (byte)uVar3;
      if (bVar2 != (byte)uVar3) goto LAB_00a6b5f1;
      _MaxCount = _MaxCount - 1;
    } while (_MaxCount != 0);
    _MaxCount = 0;
    bVar2 = (byte)(uVar3 >> 8);
    bVar5 = bVar2 < (byte)uVar3;
    if (bVar2 != (byte)uVar3) {
LAB_00a6b5f1:
      _MaxCount = 0xffffffff;
      if (!bVar5) {
        _MaxCount = 1;
      }
    }
  }
  return _MaxCount;
}



// Library Function - Single Match
//  __filwbuf
// 
// Library: Visual Studio 2008 Release

int __cdecl __filwbuf(FILE *_File)

{
  ushort uVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  undefined *puVar5;
  char *_DstBuf;
  
  if (_File == (FILE *)0x0) {
    piVar2 = __errno();
    *piVar2 = 0x16;
    __invalid_parameter(0,0,0,0,0);
  }
  else {
    uVar4 = _File->_flag;
    if (((uVar4 & 0x83) != 0) && ((uVar4 & 0x40) == 0)) {
      if ((uVar4 & 2) == 0) {
        _File->_flag = uVar4 | 1;
        if ((uVar4 & 0x10c) == 0) {
          __getbuf(_File);
        }
        else {
          _File->_ptr = _File->_base;
        }
        uVar4 = _File->_bufsiz;
        _DstBuf = _File->_base;
        iVar3 = __fileno(_File);
        iVar3 = __read(iVar3,_DstBuf,uVar4);
        _File->_cnt = iVar3;
        if (((iVar3 != 0) && (iVar3 != 1)) && (iVar3 != -1)) {
          if ((*(byte *)&_File->_flag & 0x82) == 0) {
            iVar3 = __fileno(_File);
            if ((iVar3 == -1) || (iVar3 = __fileno(_File), iVar3 == -2)) {
              puVar5 = &DAT_03240190;
            }
            else {
              iVar3 = __fileno(_File);
              uVar4 = __fileno(_File);
              puVar5 = (undefined *)((uVar4 & 0x1f) * 0x40 + (&DAT_032f1700)[iVar3 >> 5]);
            }
            if ((puVar5[4] & 0x82) == 0x82) {
              _File->_flag = _File->_flag | 0x2000;
            }
          }
          if (((_File->_bufsiz == 0x200) && ((_File->_flag & 8U) != 0)) &&
             ((_File->_flag & 0x400U) == 0)) {
            _File->_bufsiz = 0x1000;
          }
          _File->_cnt = _File->_cnt + -2;
          uVar1 = *(ushort *)_File->_ptr;
          _File->_ptr = (char *)((int)_File->_ptr + 2);
          return (uint)uVar1;
        }
        _File->_flag = _File->_flag | (-(uint)(iVar3 != 0) & 0x10) + 0x10;
        _File->_cnt = 0;
      }
      else {
        _File->_flag = uVar4 | 0x20;
      }
    }
  }
  return 0xffff;
}



void __thiscall FUN_00a6b740(undefined4 param_1_00,undefined4 *param_1)

{
  *param_1 = param_1_00;
  return;
}



int __fastcall FUN_00a6b750(int param_1)

{
  return param_1 + 0x24;
}



undefined4 FUN_00a6b760(undefined4 param_1)

{
  FUN_00a6f690(param_1);
  return param_1;
}



undefined4 __thiscall FUN_00a6b780(int *param_1_00,int *param_1)

{
  if ((*param_1_00 == 0) || (*param_1_00 != *param_1)) {
    FUN_00a3fb10();
  }
  return CONCAT31((int3)((uint)param_1_00[1] >> 8),param_1_00[1] == param_1[1]);
}



void __thiscall FUN_00a6b7b0(int param_1_00,int *param_1)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = *param_1;
  *param_1 = *(int *)(iVar1 + 8);
  if (*(char *)(*(int *)(iVar1 + 8) + 0x61) == '\0') {
    *(int **)(*(int *)(iVar1 + 8) + 4) = param_1;
  }
  *(int *)(iVar1 + 4) = param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int *)(*(int *)(param_1_00 + 0x18) + 4) = iVar1;
    *(int **)(iVar1 + 8) = param_1;
    param_1[1] = iVar1;
    return;
  }
  piVar2 = (int *)param_1[1];
  if (param_1 == (int *)piVar2[2]) {
    piVar2[2] = iVar1;
    *(int **)(iVar1 + 8) = param_1;
    param_1[1] = iVar1;
    return;
  }
  *piVar2 = iVar1;
  *(int **)(iVar1 + 8) = param_1;
  param_1[1] = iVar1;
  return;
}



void FUN_00a6b810(int param_1)

{
  char cVar1;
  int iVar2;
  
  iVar2 = *(int *)(param_1 + 8);
  cVar1 = *(char *)(iVar2 + 0x61);
  while (cVar1 == '\0') {
    iVar2 = *(int *)(iVar2 + 8);
    cVar1 = *(char *)(iVar2 + 0x61);
  }
  return;
}



void FUN_00a6b830(int **param_1)

{
  char cVar1;
  int *piVar2;
  
  piVar2 = *param_1;
  cVar1 = *(char *)((int)piVar2 + 0x61);
  while (cVar1 == '\0') {
    piVar2 = (int *)*piVar2;
    cVar1 = *(char *)((int)piVar2 + 0x61);
  }
  return;
}



void FUN_00a6b850(char *param_1)

{
  code *pcVar1;
  char *pcVar2;
  undefined **local_c [3];
  
  if (param_1 == (char *)0x0) {
    pcVar2 = (char *)0x0;
  }
  else {
    pcVar2 = param_1;
    if ((uint)(0xffffffff / ZEXT48(param_1)) < 8) {
      param_1 = (char *)0x0;
      std::exception::exception((exception *)local_c,&param_1);
      local_c[0] = std::bad_alloc::vftable;
      __CxxThrowException_8(local_c,&DAT_031153a4);
      pcVar1 = (code *)swi(3);
      (*pcVar1)();
      return;
    }
  }
  operator_new((int)pcVar2 * 8);
  return;
}



void FUN_00a6b8b0(int *param_1)

{
  if (param_1 != (int *)0x0) {
    (**(code **)(*param_1 + 0x20))(1);
  }
  return;
}



void FUN_00a6b8d0(undefined4 *param_1)

{
  if (param_1 != (undefined4 *)0x0) {
    (**(code **)*param_1)(1);
  }
  return;
}



void __thiscall FUN_00a6b8f0(undefined4 *param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  *param_1_00 = *param_1;
  iVar1 = param_1[1];
  param_1_00[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



void __thiscall FUN_00a6b920(int param_1_00,int *param_1)

{
  int **ppiVar1;
  int **ppiVar2;
  
  ppiVar1 = (int **)param_1[2];
  param_1[2] = (int)*ppiVar1;
  if (*(char *)((int)*ppiVar1 + 0x61) == '\0') {
    *(int **)((int)*ppiVar1 + 4) = param_1;
  }
  ppiVar1[1] = (int *)param_1[1];
  if (param_1 == *(int **)(*(int *)(param_1_00 + 0x18) + 4)) {
    *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = ppiVar1;
    *ppiVar1 = param_1;
    param_1[1] = (int)ppiVar1;
    return;
  }
  ppiVar2 = (int **)param_1[1];
  if (param_1 == *ppiVar2) {
    *ppiVar2 = (int *)ppiVar1;
    *ppiVar1 = param_1;
    param_1[1] = (int)ppiVar1;
    return;
  }
  ppiVar2[2] = (int *)ppiVar1;
  *ppiVar1 = param_1;
  param_1[1] = (int)ppiVar1;
  return;
}



void __fastcall FUN_00a6b970(int *param_1)

{
  char cVar1;
  int iVar2;
  int **ppiVar3;
  int **ppiVar4;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  iVar2 = param_1[1];
  if (*(char *)(iVar2 + 0x61) == '\0') {
    ppiVar3 = *(int ***)(iVar2 + 8);
    if (*(char *)((int)ppiVar3 + 0x61) != '\0') {
      iVar2 = *(int *)(iVar2 + 4);
      cVar1 = *(char *)(iVar2 + 0x61);
      while ((cVar1 == '\0' && (param_1[1] == *(int *)(iVar2 + 8)))) {
        param_1[1] = iVar2;
        iVar2 = *(int *)(iVar2 + 4);
        cVar1 = *(char *)(iVar2 + 0x61);
      }
      param_1[1] = iVar2;
      return;
    }
    cVar1 = *(char *)((int)*ppiVar3 + 0x61);
    ppiVar4 = (int **)*ppiVar3;
    while (cVar1 == '\0') {
      cVar1 = *(char *)((int)*ppiVar4 + 0x61);
      ppiVar3 = ppiVar4;
      ppiVar4 = (int **)*ppiVar4;
    }
    param_1[1] = (int)ppiVar3;
    return;
  }
  FUN_00a3fb10();
  return;
}



undefined4 * __thiscall FUN_00a6b9e0(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bf21c0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_boost::program_options::value_semantic_const_>
              ::vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_00a6ba59(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_00a6b8b0(*(undefined4 *)(unaff_EBP + 8));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_00a6ba70(undefined4 *param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bf21e0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  *param_1_00 = 0;
  local_8 = 0;
  puVar1 = (undefined4 *)operator_new(0x10);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    puVar1[1] = 1;
    puVar1[2] = 1;
    *puVar1 = boost::detail::sp_counted_impl_p<class_boost::program_options::option_description>::
              vftable;
    puVar1[3] = param_1;
  }
  *param_1_00 = puVar1;
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_00a6bae9(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_00a6b8d0(*(undefined4 *)(unaff_EBP + 8));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_00a6bb00(int param_1)

{
  if (*(int **)(param_1 + 0xc) != (int *)0x0) {
    (**(code **)(**(int **)(param_1 + 0xc) + 0x20))(1);
  }
  return;
}



undefined FUN_00a6bb20(void)

{
  return 0;
}



undefined4 * __thiscall FUN_00a6bb30(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::program_options::value_semantic::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00a6bb50(int param_1_00,undefined4 *param_1)

{
  int iVar1;
  
  *param_1 = *(undefined4 *)(param_1_00 + 0x58);
  iVar1 = *(int *)(param_1_00 + 0x5c);
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  return;
}



uint __fastcall FUN_00a6bb80(int *param_1)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  
  iVar1 = *param_1;
  uVar4 = param_1[1];
  if (iVar1 != -4) {
    if (iVar1 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      uVar2 = iVar1 + 4;
    }
    else {
      uVar2 = *(uint *)(iVar1 + 4);
    }
    if (uVar4 <= uVar2) {
      FUN_00a3fb10();
    }
  }
  uVar4 = uVar4 - 1;
  if (iVar1 != -4) {
    if (iVar1 == 0) {
      FUN_00a3fb10();
    }
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      iVar3 = iVar1 + 4;
    }
    else {
      iVar3 = *(int *)(iVar1 + 4);
    }
    if ((uint)(*(int *)(iVar1 + 0x14) + iVar3) <= uVar4) {
      FUN_00a3fb10();
    }
  }
  return uVar4;
}



void FUN_00a6bbe0(undefined *param_1,undefined *param_2,undefined *param_3)

{
  if (param_1 != param_2) {
    do {
      *param_1 = *param_3;
      param_1 = param_1 + 1;
    } while (param_1 != param_2);
  }
  return;
}



void * FUN_00a6bc00(void *param_1,int param_2,int param_3)

{
  rsize_t _DstSize;
  
  _DstSize = param_2 - (int)param_1;
  if (0 < (int)_DstSize) {
    _memmove_s((void *)(param_3 - _DstSize),_DstSize,param_1,_DstSize);
  }
  return (void *)(param_3 - _DstSize);
}



void FUN_00a6bc30(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(100);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 0x18) = 1;
  *(undefined *)((int)puVar1 + 0x61) = 0;
  return;
}



void __thiscall
FUN_00a6bc70(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  
  puVar3 = (undefined4 *)FUN_00a6b9e0(param_2);
  uVar1 = *param_3;
  *param_3 = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1,param_2,param_2);
  return;
}



void __thiscall
FUN_00a6bce0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  
  puVar3 = (undefined4 *)FUN_00a6ba70(param_2);
  uVar1 = *param_3;
  *param_3 = *puVar3;
  *puVar3 = uVar1;
  if (param_1_00 != (int *)0x0) {
    LOCK();
    iVar2 = param_1_00[1] + -1;
    param_1_00[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*param_1_00 + 4))();
      LOCK();
      iVar2 = param_1_00[2] + -1;
      param_1_00[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*param_1_00 + 8))();
      }
    }
  }
  FUN_007a491c(param_1,param_2,param_2);
  return;
}



void FUN_00a6bd50(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined4 local_8 [2];
  
  if (param_1 != param_2) {
    do {
      iVar1 = param_3[1];
      uVar2 = *param_3;
      if (iVar1 != 0) {
        LOCK();
        *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
        UNLOCK();
      }
      if (local_8 != param_1) {
        *param_1 = uVar2;
      }
      piVar3 = (int *)param_1[1];
      param_1[1] = iVar1;
      if (piVar3 != (int *)0x0) {
        LOCK();
        iVar1 = piVar3[1] + -1;
        piVar3[1] = iVar1;
        UNLOCK();
        if (iVar1 == 0) {
          (**(code **)(*piVar3 + 4))();
          LOCK();
          iVar1 = piVar3[2] + -1;
          piVar3[2] = iVar1;
          UNLOCK();
          if (iVar1 == 0) {
            (**(code **)(*piVar3 + 8))();
          }
        }
      }
      param_1 = param_1 + 2;
    } while (param_1 != param_2);
  }
  return;
}



undefined4 * FUN_00a6bdd0(int param_1,int param_2,undefined4 *param_3)

{
  int iVar1;
  undefined4 uVar2;
  int *piVar3;
  undefined4 *puVar4;
  undefined4 local_8 [2];
  
  if (param_1 == param_2) {
    return param_3;
  }
  do {
    iVar1 = *(int *)(param_2 + -4);
    uVar2 = *(undefined4 *)(param_2 + -8);
    param_2 = param_2 + -8;
    puVar4 = param_3 + -2;
    if (iVar1 != 0) {
      LOCK();
      *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
      UNLOCK();
    }
    if (local_8 != puVar4) {
      *puVar4 = uVar2;
    }
    piVar3 = (int *)param_3[-1];
    param_3[-1] = iVar1;
    if (piVar3 != (int *)0x0) {
      LOCK();
      iVar1 = piVar3[1] + -1;
      piVar3[1] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*piVar3 + 4))();
        LOCK();
        iVar1 = piVar3[2] + -1;
        piVar3[2] = iVar1;
        UNLOCK();
        if (iVar1 == 0) {
          (**(code **)(*piVar3 + 8))();
        }
      }
    }
    param_3 = puVar4;
  } while (param_2 != param_1);
  return puVar4;
}



int __thiscall FUN_00a6be60(int param_1_00,int param_1)

{
  int iVar1;
  undefined4 local_4;
  
  if (*(int *)(param_1_00 + 0x34) == 0) {
    return param_1_00 + 4;
  }
  local_4 = CONCAT31((int3)((uint)param_1_00 >> 8),0x2a);
  iVar1 = FUN_004277a0(&local_4,0,1);
  if (iVar1 != -1) {
    return param_1;
  }
  return param_1_00 + 0x20;
}



void __thiscall FUN_00a6bea0(int param_1_00,int *param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  uVar1 = *(uint *)(param_1_00 + 0x18);
  puVar2 = (undefined4 *)(param_1_00 + 4);
  puVar3 = puVar2;
  if (0xf < uVar1) {
    puVar3 = (undefined4 *)*puVar2;
  }
  puVar3 = (undefined4 *)(*(int *)(param_1_00 + 0x14) + (int)puVar3);
  if (puVar3 != (undefined4 *)0x0) {
    puVar4 = puVar2;
    if (0xf < uVar1) {
      puVar4 = (undefined4 *)*puVar2;
    }
    if (puVar4 <= puVar3) {
      if (0xf < uVar1) {
        puVar2 = (undefined4 *)*puVar2;
      }
      if (puVar3 <= (undefined4 *)(*(int *)(param_1_00 + 0x14) + (int)puVar2)) goto LAB_00a6bee1;
    }
  }
  FUN_00a3fb10();
LAB_00a6bee1:
  param_1[1] = (int)puVar3;
  *param_1 = param_1_00;
  return;
}



undefined4 * __thiscall FUN_00a6bef0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf220b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  param_1_00[1] = 0;
  local_4 = 0;
  FUN_00a6bc70(param_1_00,param_1,param_1_00 + 1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00a6bf50(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf220b;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *param_1_00 = param_1;
  param_1_00[1] = 0;
  local_4 = 0;
  FUN_00a6bce0(param_1_00,param_1,param_1_00 + 1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_00a6bfb0(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3)

{
  int iVar1;
  
  if (param_1 != param_2) {
    do {
      if (param_3 != (undefined4 *)0x0) {
        *param_3 = *param_1;
        iVar1 = param_1[1];
        param_3[1] = iVar1;
        if (iVar1 != 0) {
          LOCK();
          *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
          UNLOCK();
        }
      }
      param_1 = param_1 + 2;
      param_3 = param_3 + 2;
    } while (param_1 != param_2);
  }
  return;
}



void __fastcall FUN_00a6bff0(int param_1)

{
  void *pvVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  pvVar1 = ExceptionList;
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf22d8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  if (0xf < *(uint *)(param_1 + 0x34)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 0x20),uVar2);
  }
  *(undefined4 *)(param_1 + 0x34) = 0xf;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined *)(param_1 + 0x20) = 0;
  if (0xf < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4),uVar2);
  }
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 4) = 0;
  ExceptionList = pvVar1;
  return;
}



void __fastcall FUN_00a6c070(undefined4 *param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf2251;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  *param_1 = boost::program_options::option_description::vftable;
  piVar1 = (int *)param_1[0x17];
  local_4 = 2;
  if (piVar1 != (int *)0x0) {
    LOCK();
    iVar2 = piVar1[1] + -1;
    piVar1[1] = iVar2;
    UNLOCK();
    if (iVar2 == 0) {
      (**(code **)(*piVar1 + 4))(uVar3);
      LOCK();
      iVar2 = piVar1[2] + -1;
      piVar1[2] = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        (**(code **)(*piVar1 + 8))();
      }
    }
  }
  if (0xf < (uint)param_1[0x15]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x10]);
  }
  param_1[0x15] = 0xf;
  param_1[0x14] = 0;
  *(undefined *)(param_1 + 0x10) = 0;
  if (0xf < (uint)param_1[0xe]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[9]);
  }
  param_1[0xe] = 0xf;
  param_1[0xd] = 0;
  *(undefined *)(param_1 + 9) = 0;
  if (0xf < (uint)param_1[7]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[2]);
  }
  param_1[7] = 0xf;
  param_1[6] = 0;
  *(undefined *)(param_1 + 2) = 0;
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00a6c150(int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf2278;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00a6bff0(DAT_0323f878 ^ (uint)&stack0xffffffec);
  if (0xf < *(uint *)(param_1 + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(param_1 + 4));
  }
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 4) = 0;
  ExceptionList = local_c;
  return;
}



int FUN_00a6c1c0(void *param_1,int param_2,void *param_3)

{
  rsize_t _DstSize;
  
  _DstSize = param_2 - (int)param_1;
  if (_DstSize != 0) {
    _memmove_s(param_3,_DstSize,param_1,_DstSize);
  }
  return _DstSize + (int)param_3;
}



void __fastcall FUN_00a6c1f0(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<class_boost::program_options::error>::
             vftable;
  param_1[10] = boost::exception_detail::error_info_injector<class_boost::program_options::error>::
                vftable;
  param_1[10] = boost::exception::vftable;
  if ((int *)param_1[0xb] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0xb] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0xb] = 0;
    }
  }
  *param_1 = std::logic_error::vftable;
  if (0xf < (uint)param_1[9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[4]);
  }
  param_1[9] = 0xf;
  param_1[8] = 0;
  *(undefined *)(param_1 + 4) = 0;
  exception::~exception((exception *)param_1);
  return;
}



void FUN_00a6c260(void)

{
  FUN_00a6c750();
  return;
}



void FUN_00a6c270(void)

{
  FUN_00a6c700();
  return;
}



void FUN_00a6c280(void)

{
  FUN_00a6c700();
  return;
}



void FUN_00a6c290(int *param_1,int param_2,uint param_3,int param_4,uint param_5,char *param_6)

{
  int iVar1;
  uint uVar2;
  
  while( true ) {
    if ((param_2 != -4) && ((param_2 == 0 || (param_2 != param_4)))) {
      FUN_00a3fb10();
    }
    if (param_3 == param_5) break;
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 0x10) {
        uVar2 = param_2 + 4;
      }
      else {
        uVar2 = *(uint *)(param_2 + 4);
      }
      if (param_3 <= uVar2) {
        FUN_00a3fb10();
      }
    }
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 0x10) {
        iVar1 = param_2 + 4;
      }
      else {
        iVar1 = *(int *)(param_2 + 4);
      }
      if ((char *)(*(int *)(param_2 + 0x14) + iVar1) <= (char *)(param_3 - 1)) {
        FUN_00a3fb10();
      }
    }
    if (*(char *)(param_3 - 1) == *param_6) break;
    if (param_2 != -4) {
      if (param_2 == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_2 + 0x18) < 0x10) {
        uVar2 = param_2 + 4;
      }
      else {
        uVar2 = *(uint *)(param_2 + 4);
      }
      if (param_3 <= uVar2) {
        FUN_00a3fb10();
      }
    }
    param_3 = param_3 - 1;
  }
  param_1[1] = param_3;
  *param_1 = param_2;
  return;
}



void FUN_00a6c380(undefined4 *param_1,int param_2,undefined4 *param_3)

{
  int iVar1;
  
  if (param_2 != 0) {
    do {
      if (param_1 != (undefined4 *)0x0) {
        *param_1 = *param_3;
        iVar1 = param_3[1];
        param_1[1] = iVar1;
        if (iVar1 != 0) {
          LOCK();
          *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
          UNLOCK();
        }
      }
      param_2 = param_2 + -1;
      param_1 = param_1 + 2;
    } while (param_2 != 0);
  }
  return;
}



undefined4 __thiscall FUN_00a6c3c0(undefined4 param_1_00,byte param_1)

{
  FUN_00a6c070();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined * FUN_00a6c3e0(undefined *param_1,int param_2,undefined *param_3)

{
  int iVar1;
  undefined *puVar2;
  
  iVar1 = param_2;
  puVar2 = param_1;
  if (param_2 != 0) {
    do {
      *puVar2 = *param_3;
      iVar1 = iVar1 + -1;
      puVar2 = puVar2 + 1;
    } while (iVar1 != 0);
  }
  return param_1 + param_2;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00a6c410(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf22a8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 0xf;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  param_1_00[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00,param_1,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x34) = 0xf;
  *(undefined4 *)(param_1_00 + 0x30) = 0;
  local_4 = 0;
  param_1_00[0x20] =
       (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00 + 0x1c,param_1 + 0x1c,0,0xffffffff);
  ExceptionList = local_c;
  return param_1_00;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00a6c490(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf22d8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 0xf;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  param_1_00[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00,param_1,0,0xffffffff);
  local_4 = 0;
  FUN_00a6c410(param_1 + 0x1c);
  ExceptionList = local_c;
  return param_1_00;
}



// WARNING: Removing unreachable block (ram,0x00a6c572)

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00a6c510(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            int param_2)

{
  undefined4 *puVar1;
  int iVar2;
  uint uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf2319;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  uVar3 = 0;
  local_4 = 0;
  if (*(int *)(param_2 + 0x14) != 0) {
    do {
      puVar1 = (undefined4 *)(param_2 + 4);
      if (0xf < *(uint *)(param_2 + 0x18)) {
        puVar1 = *(undefined4 **)(undefined4 *)(param_2 + 4);
      }
      iVar2 = _tolower((int)*(char *)((int)puVar1 + uVar3));
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                (param_1,1,(char)iVar2);
      uVar3 = uVar3 + 1;
    } while (uVar3 < *(uint *)(param_2 + 0x14));
  }
  ExceptionList = local_c;
  return param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00a6c5c0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            char param_3)

{
  uint uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2361;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,param_2,0,0xffffffff);
  local_4 = 1;
  pbVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                     (local_28,1,param_3);
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,pbVar2,0,0xffffffff);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



int FUN_00a6c670(int param_1,int param_2,int param_3)

{
  uint local_8;
  uint local_4;
  
  local_4 = local_4 & 0xffffff00;
  local_8 = local_8 & 0xffffff00;
  FUN_00a6bdd0(param_1,param_2,param_3,param_3,local_4,local_8);
  return param_3 + (param_2 - param_1 >> 3) * -8;
}



void __fastcall FUN_00a6c6c0(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  FUN_00a6c1f0();
  param_1[0x11] = boost::exception_detail::clone_base::vftable;
  return;
}



undefined4 * __thiscall FUN_00a6c700(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
       ::vftable;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  FUN_00a6c1f0();
  param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00a6c750(undefined4 param_1_00,byte param_1)

{
  FUN_00a6c1f0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



int __thiscall FUN_00a6c770(uint param_1_00,int param_1,int param_2,undefined4 param_3)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_00a6c380(param_1,param_2,param_3,param_1_00 + 8,param_3,local_4);
  return param_1 + param_2 * 8;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00a6c7b0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            char *param_2,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_3)

{
  char cVar1;
  uint uVar2;
  char *pcVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar4;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2361;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  pcVar3 = param_2;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,param_2,(int)pcVar3 - (int)(param_2 + 1));
  local_4 = 1;
  pbVar4 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                     (local_28,param_3,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,pbVar4,0,0xffffffff);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar2);
  }
  ExceptionList = local_c;
  return param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00a6c870(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            byte param_2,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_3)

{
  uint uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  undefined4 local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf2361;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  local_10 = 0xf;
  local_14 = 1;
  local_4 = 1;
  pbVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                     (local_28,param_3,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,pbVar2,0,0xffffffff);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_00a6c940(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2388;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FID_conflict_runtime_error(param_1);
  *param_1_00 = boost::program_options::error::vftable;
  local_4 = 0;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  param_1_00[10] = boost::exception::vftable;
  piVar1 = *(int **)(param_1 + 4);
  param_1_00[0xb] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 0xc))(uVar2);
  }
  param_1_00[0xc] = *(undefined4 *)(param_1 + 8);
  param_1_00[0xd] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[0xe] = *(undefined4 *)(param_1 + 0x10);
  *param_1_00 = boost::exception_detail::error_info_injector<class_boost::program_options::error>::
                vftable;
  param_1_00[10] =
       boost::exception_detail::error_info_injector<class_boost::program_options::error>::vftable;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a6c9e0(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf23d4;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_3 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a6c940(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00a6cab0(undefined4 *param_1_00,int param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf23d4;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a6c940(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall
FUN_00a6cb80(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            char param_2,char param_3,char param_4)

{
  uint uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  char *pcVar3;
  int iVar4;
  int iVar5;
  undefined4 ****ppppuVar6;
  uint uVar7;
  bool bVar8;
  uint local_d0;
  undefined local_c9;
  int local_c8;
  int local_c4;
  undefined local_c0 [4];
  uint local_bc;
  undefined4 local_ac;
  uint local_a8;
  undefined local_a4 [4];
  uint local_a0;
  undefined4 local_90;
  uint local_8c;
  undefined local_88 [4];
  uint local_84;
  undefined4 local_74;
  uint local_70;
  undefined local_6c [8];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_64 [4];
  undefined4 ****local_60 [4];
  undefined4 local_50;
  uint local_4c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_48 [4];
  undefined4 ****local_44 [4];
  undefined4 local_34;
  uint local_30;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [4];
  uint local_28;
  int local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf24a0;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_d0;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff20;
  ExceptionList = &local_c;
  pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           (param_1_00 + 0x20);
  local_d0 = 0;
  local_c8 = 0;
  bVar8 = param_3 != '\0';
  local_c4 = param_1_00;
  if (bVar8) {
    pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_00a6c510(local_a4,pbVar2,uVar1);
    local_4 = 0;
  }
  local_d0 = (uint)bVar8;
  uVar7 = (uint)bVar8;
  local_14 = 0xf;
  local_18 = 0;
  local_28 = local_28 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_2c,pbVar2,0,0xffffffff);
  local_4._0_1_ = 2;
  local_4._1_3_ = 0;
  if (bVar8) {
    uVar7 = 0;
    local_d0 = 0;
    if (0xf < local_8c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a0);
    }
    local_8c = 0xf;
    local_90 = 0;
    local_a0 = local_a0 & 0xffffff00;
  }
  if (local_18 != 0) {
    pbVar2 = param_1;
    if (param_3 != '\0') {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_00a6c510(local_48,param_1,uVar1);
      uVar7 = uVar7 | 2;
      local_4._0_1_ = 3;
      local_d0 = uVar7;
    }
    local_4c = 0xf;
    local_50 = 0;
    local_60[0] = (undefined4 ****)((uint)local_60[0] & 0xffffff00);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_64,pbVar2,0,0xffffffff);
    local_4 = 5;
    if ((uVar7 & 2) != 0) {
      uVar7 = uVar7 & 0xfffffffd;
      local_d0 = uVar7;
      if (0xf < local_30) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_44[0]);
      }
      local_30 = 0xf;
      local_34 = 0;
      local_44[0] = (undefined4 ****)((uint)local_44[0] & 0xffffff00);
    }
    FUN_00a6bea0(local_6c);
    pcVar3 = (char *)FUN_00a6bb80();
    if (*pcVar3 == '*') {
      iVar4 = FUN_005d0682(local_c0,0,local_18 + -1);
      local_4._0_1_ = 6;
      if (*(uint *)(iVar4 + 0x18) < 0x10) {
        iVar5 = iVar4 + 4;
      }
      else {
        iVar5 = *(int *)(iVar4 + 4);
      }
      iVar4 = FUN_004277a0(iVar5,0,*(undefined4 *)(iVar4 + 0x14));
      local_c9 = iVar4 == 0;
      local_4 = CONCAT31(local_4._1_3_,5);
      if (0xf < local_a8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_bc);
      }
      if ((bool)local_c9) {
        local_c8 = 2;
      }
    }
    ppppuVar6 = local_60[0];
    if (local_4c < 0x10) {
      ppppuVar6 = local_60;
    }
    iVar4 = FUN_00429910(0,local_18,ppppuVar6,local_50);
    if (iVar4 == 0) {
      local_c8 = 1;
    }
    else if (param_2 != '\0') {
      ppppuVar6 = local_60[0];
      if (local_4c < 0x10) {
        ppppuVar6 = local_60;
      }
      iVar4 = FUN_004277a0(ppppuVar6,0,local_50);
      if (iVar4 == 0) {
        local_c8 = 2;
      }
    }
    local_4._0_1_ = 2;
    if (0xf < local_4c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_60[0]);
    }
    if (local_c8 == 1) goto LAB_00a6cffa;
  }
  local_4._0_1_ = 2;
  if (param_4 != '\0') {
    param_1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
              FUN_00a6c510(local_88,param_1,uVar1);
    uVar7 = uVar7 | 4;
    local_4._0_1_ = 7;
    local_d0 = uVar7;
  }
  local_30 = 0xf;
  local_34 = 0;
  local_44[0] = (undefined4 ****)((uint)local_44[0] & 0xffffff00);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_48,param_1,0,0xffffffff);
  local_4 = 9;
  if ((uVar7 & 4) != 0) {
    uVar7 = uVar7 & 0xfffffffb;
    local_d0 = uVar7;
    if (0xf < local_70) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_84);
    }
    local_70 = 0xf;
    local_74 = 0;
    local_84 = local_84 & 0xffffff00;
  }
  if (param_4 == '\0') {
    pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (local_c4 + 4);
  }
  else {
    pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_00a6c510(local_c0,local_c4 + 4);
    uVar7 = uVar7 | 8;
    local_4 = CONCAT31(local_4._1_3_,10);
    local_d0 = uVar7;
  }
  local_4c = 0xf;
  local_50 = 0;
  local_60[0] = (undefined4 ****)((uint)local_60[0] & 0xffffff00);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_64,pbVar2,0,0xffffffff);
  local_4._0_1_ = 0xc;
  local_4._1_3_ = 0;
  if ((uVar7 & 8) != 0) {
    if (0xf < local_a8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_bc);
    }
    local_a8 = 0xf;
    local_ac = 0;
    local_bc = local_bc & 0xffffff00;
  }
  ppppuVar6 = local_44[0];
  if (local_30 < 0x10) {
    ppppuVar6 = local_44;
  }
  iVar4 = FUN_00429910(0,local_50,ppppuVar6,local_34);
  if (iVar4 == 0) {
    local_c8 = 1;
  }
  if (0xf < local_4c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_60[0]);
  }
  local_4c = 0xf;
  local_50 = 0;
  local_60[0] = (undefined4 ****)((uint)local_60[0] & 0xffffff00);
  if (0xf < local_30) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_44[0]);
  }
LAB_00a6cffa:
  if (local_14 < 0x10) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_28);
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00a6d050(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            int param_2)

{
  undefined4 uVar1;
  undefined *puVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_44 [4];
  undefined4 local_40;
  uint local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [28];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf24e0;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x34) != 0) {
    if (param_2 == 1) {
      FUN_00a6c7b0(param_1,&DAT_00da420c,param_1_00 + 0x20,DAT_0323f878 ^ (uint)&stack0xffffffac);
      ExceptionList = local_c;
      return param_1;
    }
    if (param_2 == 0x1000) {
      FUN_00a6c7b0(param_1,&DAT_00d2b6d8,param_1_00 + 0x20,DAT_0323f878 ^ (uint)&stack0xffffffac);
      ExceptionList = local_c;
      return param_1;
    }
  }
  if (*(int *)(param_1_00 + 0x18) == 2) {
    if (param_2 == 8) {
      uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
              basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        (local_44,"/");
      local_4 = 0;
      if (*(int *)(param_1_00 + 0x18) == 0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(param_1_00 + 0x1c) < 0x10) {
        param_1_00 = param_1_00 + 8;
      }
      else {
        param_1_00 = *(int *)(param_1_00 + 8);
      }
      FUN_00a6c5c0(param_1,uVar1,*(undefined *)(param_1_00 + 1));
      if (local_2c < 0x10) {
        ExceptionList = local_c;
        return param_1;
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_40);
    }
    if (param_2 == 4) {
      uVar1 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
              basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        (local_28,"-");
      local_4 = 1;
      puVar2 = (undefined *)FUN_004221b0(1);
      FUN_00a6c5c0(param_1,uVar1,*puVar2);
      local_4 = 0xffffffff;
      FUN_004670d7();
      ExceptionList = local_c;
      return param_1;
    }
  }
  pbVar3 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           (param_1_00 + 0x20);
  if (*(int *)(param_1_00 + 0x34) == 0) {
    pbVar3 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 4);
  }
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,pbVar3,0,0xffffffff);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00a6d1d0(int param_1_00,char *param_1)

{
  char cVar1;
  uint uVar2;
  char *pcVar3;
  int iVar4;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar5;
  undefined4 uVar6;
  undefined local_68 [4];
  undefined local_64 [4];
  uint local_60;
  undefined4 local_50;
  uint local_4c;
  undefined local_48 [4];
  undefined4 local_44;
  uint local_30;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [4];
  uint local_28;
  undefined4 local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2520;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_68;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff88;
  ExceptionList = &local_c;
  local_14 = 0xf;
  local_18 = 0;
  local_28 = local_28 & 0xffffff00;
  pcVar3 = param_1;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_2c,param_1,(int)pcVar3 - (int)(param_1 + 1));
  local_4 = 0;
  local_68[0] = 0x2c;
  iVar4 = FUN_004277a0(local_68,0,1);
  if (iVar4 == -1) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (param_1_00 + 0x20),local_2c,0,0xffffffff);
  }
  else {
    pbVar5 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_005d0682(local_64,0,iVar4);
    local_4._0_1_ = 1;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (param_1_00 + 0x20),pbVar5,0,0xffffffff);
    local_4._0_1_ = 0;
    if (0xf < local_4c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_60,uVar2);
    }
    uVar6 = FUN_005d0682(local_48,iVar4 + 1,1);
    local_4._0_1_ = 2;
    pbVar5 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_00a6c870(local_64,0x2d,uVar6);
    local_4 = CONCAT31(local_4._1_3_,3);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (param_1_00 + 4),pbVar5,0,0xffffffff);
    if (0xf < local_4c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_60);
    }
    local_4c = 0xf;
    local_50 = 0;
    local_60 = local_60 & 0xffffff00;
    if (0xf < local_30) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_44);
    }
  }
  if (0xf < local_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_28,uVar2);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00a6d360(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar4;
  bool bVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_44 [4];
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf258a;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  if (*(int *)(param_1_00 + 0x18) == 0) {
    local_10 = 0xf;
    local_14 = 0;
    local_24 = local_24 & 0xffffff00;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_28,"--",2);
    local_4 = 2;
    pbVar4 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
             append(local_28,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                              *)(param_1_00 + 0x20),0,0xffffffff);
    *(undefined4 *)(param_1 + 0x18) = 0xf;
    *(undefined4 *)(param_1 + 0x14) = 0;
    param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (param_1,pbVar4,0,0xffffffff);
    uVar1 = local_24;
    uVar2 = local_10;
  }
  else {
    pbVar4 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 4);
    bVar5 = *(int *)(param_1_00 + 0x34) != 0;
    if (bVar5) {
      local_2c = 0xf;
      local_30 = 0;
      local_40 = local_40 & 0xffffff00;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (local_44,pbVar4,0,0xffffffff);
      local_4 = 1;
      pbVar4 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
               append(local_44," [ --",5);
      pbVar4 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
               append(pbVar4,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                              *)(param_1_00 + 0x20),0,0xffffffff);
      pbVar4 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
               append(pbVar4," ]",2);
    }
    *(undefined4 *)(param_1 + 0x18) = 0xf;
    *(undefined4 *)(param_1 + 0x14) = 0;
    param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (param_1,pbVar4,0,0xffffffff);
    uVar1 = local_40;
    uVar2 = local_2c;
    if (!bVar5) {
      ExceptionList = local_c;
      return param_1;
    }
  }
  if (uVar2 < 0x10) {
    ExceptionList = local_c;
    return param_1;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(uVar1,uVar3);
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00a6d4b0(int param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2)

{
  int iVar1;
  
  iVar1 = (**(code **)(**(int **)(param_1 + 0x58) + 8))();
  if (iVar1 != 0) {
    (**(code **)**(undefined4 **)(param_1 + 0x58))(param_2);
    return param_2;
  }
  *(undefined4 *)(param_2 + 0x18) = 0xf;
  *(undefined4 *)(param_2 + 0x14) = 0;
  param_2[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_2,(char *)&PTR_02bd3fc0,0);
  return param_2;
}



void __thiscall
FUN_00a6d510(int param_1_00,undefined4 param_1,void *param_2,uint param_3,undefined *param_4)

{
  uint uVar1;
  int iVar2;
  char *_Dst;
  rsize_t rVar3;
  undefined4 uVar4;
  int extraout_ECX;
  int iVar5;
  uint local_18;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bf25b0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  iVar5 = *(int *)(param_1_00 + 0xc);
  if (iVar5 == 0) {
    local_18 = 0;
  }
  else {
    local_18 = *(int *)(param_1_00 + 0x14) - iVar5;
  }
  if (param_3 != 0) {
    iVar2 = *(int *)(param_1_00 + 0x10);
    if ((iVar5 - iVar2) - 1U < param_3) {
      local_18 = FUN_00837240();
      iVar5 = extraout_ECX;
    }
    uVar1 = (iVar2 - iVar5) + param_3;
    if (local_18 < uVar1) {
      if (-(local_18 >> 1) - 1 < local_18) {
        local_18 = 0;
      }
      else {
        local_18 = local_18 + (local_18 >> 1);
      }
      if (local_18 < uVar1) {
        local_18 = uVar1;
      }
      _Dst = std::_Allocate<char>(local_18,(char *)0x0);
      iVar5 = *(int *)(param_1_00 + 0xc);
      local_8 = 0;
      FUN_00a6c3e0(_Dst + ((int)param_2 - iVar5),param_3,param_4);
      rVar3 = (int)param_2 - (int)*(void **)(param_1_00 + 0xc);
      if (rVar3 != 0) {
        _memmove_s(_Dst,rVar3,*(void **)(param_1_00 + 0xc),rVar3);
      }
      rVar3 = *(int *)(param_1_00 + 0x10) - (int)param_2;
      if (rVar3 != 0) {
        _memmove_s(_Dst + ((int)param_2 - iVar5) + param_3,rVar3,param_2,rVar3);
      }
      iVar5 = *(int *)(param_1_00 + 0xc);
      if (iVar5 != 0) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(iVar5);
      }
      *(char **)(param_1_00 + 0x14) = _Dst + local_18;
      *(char **)(param_1_00 + 0x10) = _Dst + param_3 + (*(int *)(param_1_00 + 0x10) - iVar5);
      *(char **)(param_1_00 + 0xc) = _Dst;
      ExceptionList = local_10;
      return;
    }
    if ((uint)(iVar2 - (int)param_2) < param_3) {
      param_4 = (undefined *)CONCAT13(*param_4,param_4._0_3_);
      FUN_00a6c1c0(param_2,iVar2,(int)param_2 + param_3);
      FUN_00a6c3e0(*(int *)(param_1_00 + 0x10),
                   (int)param_2 + (param_3 - *(int *)(param_1_00 + 0x10)),(int)&param_4 + 3);
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + param_3;
      FUN_00a6bbe0(param_2,*(int *)(param_1_00 + 0x10) - param_3,(int)&param_4 + 3);
      ExceptionList = local_10;
      return;
    }
    param_4 = (undefined *)CONCAT13(*param_4,param_4._0_3_);
    uVar4 = FUN_00a6c1c0(iVar2 - param_3,iVar2,iVar2);
    *(undefined4 *)(param_1_00 + 0x10) = uVar4;
    FUN_00a6bc00(param_2,iVar2 - param_3,iVar2);
    FUN_00a6bbe0(param_2,(int)param_2 + param_3,(int)&param_4 + 3);
  }
  ExceptionList = local_10;
  return;
}



void Catch_All_00a6d640(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 0x10));
}



undefined4 *
FUN_00a6d710(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined param_5)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bf25e1;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  puVar1 = (undefined4 *)operator_new(100);
  local_8 = 1;
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    FUN_00a6c490(param_4);
    *(undefined *)(puVar1 + 0x18) = param_5;
    *(undefined *)((int)puVar1 + 0x61) = 0;
  }
  ExceptionList = local_10;
  return puVar1;
}



void Catch_All_00a6d799(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void __thiscall
FUN_00a6d7b0(uint param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_00a6bfb0(param_1,param_2,param_3,param_1_00 + 8,param_3,local_4);
  return;
}



undefined4 * __thiscall FUN_00a6d7e0(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf314c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a6c940(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::error>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_00a6d890(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x48);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00a6c9e0(param_1 + -0x44,local_14,1);
    if (iVar2 != 0) {
      ExceptionList = local_c;
      return *(int *)(*(int *)(iVar2 + 0x3c) + 4) + 0x3c + iVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_00a6d920(int param_1)

{
  code *pcVar1;
  undefined local_48 [72];
  
  FUN_00a6d7e0(param_1 + -0x44,1);
  __CxxThrowException_8(local_48,&DAT_03111658);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * FUN_00a6d950(undefined4 *param_1,undefined4 param_2)

{
  FID_conflict_runtime_error(param_2);
  param_1[10] = boost::exception::vftable;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0xffffffff;
  *param_1 = boost::exception_detail::error_info_injector<class_boost::program_options::error>::
             vftable;
  param_1[10] = boost::exception_detail::error_info_injector<class_boost::program_options::error>::
                vftable;
  return param_1;
}



undefined4 FUN_00a6d9a0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a6cab0(param_2,1);
  return param_1;
}



void FUN_00a6d9d0(void)

{
  FUN_00a6d890();
  return;
}



void FUN_00a6d9e0(void)

{
  FUN_00a6d920();
  return;
}



undefined4 * __thiscall
FUN_00a6d9f0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,char *param_3)

{
  char cVar1;
  char *pcVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf262c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = boost::program_options::option_description::vftable;
  param_1_00[7] = 0xf;
  param_1_00[6] = 0;
  *(undefined *)(param_1_00 + 2) = 0;
  param_1_00[0xe] = 0xf;
  param_1_00[0xd] = 0;
  *(undefined *)(param_1_00 + 9) = 0;
  param_1_00[0x15] = 0xf;
  param_1_00[0x14] = 0;
  local_4._0_1_ = 1;
  local_4._1_3_ = 0;
  *(undefined *)(param_1_00 + 0x10) = 0;
  pcVar2 = param_3;
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 0xf),param_3,(int)pcVar2 - (int)(param_3 + 1));
  local_4._0_1_ = 2;
  FUN_00a6bef0(param_2);
  local_4 = CONCAT31(local_4._1_3_,3);
  FUN_00a6d1d0(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



void ** __fastcall FUN_00a6dab0(void **param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2d28;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = param_1;
  }
  *param_1 = puVar1;
  param_1[3] = (void *)0x0;
  param_1[4] = (void *)0x0;
  param_1[5] = (void *)0x0;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall
FUN_00a6db10(int **param_1_00,int **param_1,int *param_2,int param_3,undefined4 param_4)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  
  piVar4 = param_1_00[3];
  if (param_1_00[4] == piVar4) {
    iVar3 = 0;
  }
  else {
    if (param_1_00[4] < piVar4) {
      FUN_00a3fb10();
    }
    if ((param_2 == (int *)0x0) || (param_2 != *param_1_00)) {
      FUN_00a3fb10();
    }
    iVar3 = param_3 - (int)piVar4;
  }
  FUN_00a6d510(param_2,param_3,1,param_4);
  piVar4 = param_1_00[3];
  if (param_1_00[4] < piVar4) {
    FUN_00a3fb10();
  }
  piVar1 = *param_1_00;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1;
  }
  piVar4 = (int *)((int)piVar4 + iVar3);
  if (piVar4 <= *(int **)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(int **)(iVar3 + 0xc) <= piVar4) goto LAB_00a6dba2;
  }
  FUN_00a3fb10();
LAB_00a6dba2:
  param_1[1] = piVar4;
  *param_1 = piVar1;
  return;
}



void __thiscall
FUN_00a6dbc0(int param_1_00,undefined4 param_1,int param_2,uint param_3,uint param_4)

{
  uint uVar1;
  uint *puVar2;
  int iVar3;
  undefined4 uVar4;
  uint extraout_ECX;
  int iVar5;
  undefined8 uVar6;
  uint uStack_3c;
  undefined local_2c [4];
  int local_28;
  int local_24;
  undefined4 local_20;
  int local_1c;
  uint local_18;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bf2660;
  local_10 = ExceptionList;
  uStack_3c = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_3c;
  ExceptionList = &local_10;
  iVar3 = *(int *)(param_1_00 + 0xc);
  if (iVar3 == 0) {
    local_18 = 0;
  }
  else {
    local_18 = *(int *)(param_1_00 + 0x14) - iVar3 >> 3;
  }
  if (param_3 != 0) {
    iVar3 = *(int *)(param_1_00 + 0x10) - iVar3 >> 3;
    uVar6 = CONCAT44(*(int *)(param_1_00 + 0x10),iVar3);
    local_24 = param_1_00;
    puVar2 = &uStack_3c;
    if (0x1fffffffU - iVar3 < param_3) {
      uVar6 = FUN_00837240();
      local_18 = extraout_ECX;
      puVar2 = local_14;
    }
    local_14 = puVar2;
    uVar1 = (int)uVar6 + param_3;
    if (local_18 < uVar1) {
      if (0x1fffffff - (local_18 >> 1) < local_18) {
        local_18 = 0;
      }
      else {
        local_18 = local_18 + (local_18 >> 1);
      }
      if (local_18 < uVar1) {
        local_18 = uVar1;
      }
      local_1c = FUN_00a6b850(local_18,0);
      local_20 = 0;
      local_8 = 0;
      iVar3 = param_2 - *(int *)(param_1_00 + 0xc) >> 3;
      local_28 = iVar3;
      FUN_00a6c770(local_1c + iVar3 * 8,param_3,param_4);
      uVar1 = param_4 >> 8;
      param_4 = uVar1 << 8;
      local_20 = 1;
      FUN_00a6bfb0(*(undefined4 *)(param_1_00 + 0xc),param_2,local_1c,param_1_00 + 8,param_3,param_4
                  );
      param_4 = uVar1 << 8;
      local_20 = 2;
      FUN_00a6bfb0(param_2,*(undefined4 *)(param_1_00 + 0x10),local_1c + (iVar3 + param_3) * 8,
                   param_1_00 + 8,param_3,param_4);
      iVar3 = *(int *)(param_1_00 + 0xc);
      local_8 = 0xffffffff;
      if (iVar3 != 0) {
        FUN_00430938(iVar3,*(undefined4 *)(param_1_00 + 0x10),param_1_00 + 8,param_3);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
      }
      *(uint *)(param_1_00 + 0x14) = local_1c + local_18 * 8;
      *(uint *)(param_1_00 + 0x10) =
           local_1c + (param_3 + (*(int *)(param_1_00 + 0x10) - iVar3 >> 3)) * 8;
      *(int *)(param_1_00 + 0xc) = local_1c;
      ExceptionList = local_10;
      return;
    }
    if ((uint)((int)((ulonglong)uVar6 >> 0x20) - param_2 >> 3) < param_3) {
      FUN_00a6b8f0(param_4);
      local_8 = 2;
      FUN_00a6d7b0(param_2,*(undefined4 *)(param_1_00 + 0x10),param_3 * 8 + param_2);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_00a6c770(*(int *)(param_1_00 + 0x10),
                   param_3 - (*(int *)(param_1_00 + 0x10) - param_2 >> 3),local_2c);
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + param_3 * 8;
      local_8 = 2;
      FUN_00a6bd50(param_2,*(int *)(param_1_00 + 0x10) + param_3 * -8,local_2c);
    }
    else {
      FUN_00a6b8f0(param_4);
      iVar3 = *(int *)(param_1_00 + 0x10);
      iVar5 = iVar3 + param_3 * -8;
      local_8 = 5;
      uVar4 = FUN_00a6d7b0(iVar5,iVar3,iVar3);
      *(undefined4 *)(param_1_00 + 0x10) = uVar4;
      FUN_00a6c670(param_2,iVar5,iVar3);
      FUN_00a6bd50(param_2,param_3 * 8 + param_2,local_2c);
    }
    local_8 = 0xffffffff;
    FUN_0042d2d9();
  }
  ExceptionList = local_10;
  return;
}



void Catch_All_00a6dd47(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + -0x1c);
  iVar2 = *(int *)(unaff_EBP + -0x18);
  iVar3 = *(int *)(unaff_EBP + -0x24);
  if (1 < iVar1) {
    FUN_0042f4d8(iVar2,iVar2 + iVar3 * 8);
  }
  if (0 < iVar1) {
    FUN_0042f4d8(iVar2 + iVar3 * 8,iVar2 + (iVar3 + *(int *)(unaff_EBP + 0x10)) * 8);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar2);
}



void Catch_All_00a6de09(void)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  int iVar4;
  
  iVar1 = *(int *)(unaff_EBP + 0x10) * 8;
  FUN_0042f4d8(iVar1 + *(int *)(unaff_EBP + 0xc),
               *(int *)(*(int *)(unaff_EBP + -0x20) + 0x10) + iVar1);
  __CxxThrowException_8(0,0);
  FUN_00a6b8f0(*(undefined4 *)(unaff_EBP + 0x14));
  iVar1 = *(int *)(unaff_ESI + 0x10);
  iVar4 = iVar1 + unaff_EDI * -8;
  *(undefined4 *)(unaff_EBP + -4) = 5;
  *(int *)(unaff_EBP + 0x10) = unaff_EDI * 8;
  uVar3 = FUN_00a6d7b0(iVar4,iVar1,iVar1);
  uVar2 = *(undefined4 *)(unaff_EBP + 0xc);
  *(undefined4 *)(unaff_ESI + 0x10) = uVar3;
  FUN_00a6c670(uVar2,iVar4,iVar1);
  FUN_00a6bd50(*(int *)(unaff_EBP + 0xc),*(int *)(unaff_EBP + 0x10) + *(int *)(unaff_EBP + 0xc),
               unaff_EBP + -0x28);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_0042d2d9();
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



void __thiscall FUN_00a6deb0(int param_1_00,undefined4 param_1,undefined4 param_2,int **param_3)

{
  undefined uVar1;
  int iVar2;
  uint uVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined4 uVar6;
  int **ppiVar7;
  int **ppiVar8;
  int **ppiVar9;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3ae8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff9c;
  ExceptionList = &local_c;
  ppiVar4 = param_3;
  if (*(char *)((int)param_3 + 0x61) != '\0') {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"invalid map/set<T> iterator",0x1b);
    local_4 = 0;
    FUN_00417ca0(local_50);
    local_34[0] = std::out_of_range::vftable;
    ppiVar4 = (int **)__CxxThrowException_8(local_34,&DAT_03115668);
  }
  FUN_00a6b970(uVar3);
  ppiVar7 = (int **)*ppiVar4;
  if (*(char *)((int)ppiVar7 + 0x61) == '\0') {
    ppiVar9 = ppiVar7;
    if (*(char *)((int)ppiVar4[2] + 0x61) == '\0') {
      ppiVar9 = (int **)param_3[2];
      if (param_3 != ppiVar4) {
        ppiVar7[1] = (int *)param_3;
        *param_3 = *ppiVar4;
        ppiVar7 = param_3;
        if (param_3 != (int **)ppiVar4[2]) {
          ppiVar7 = (int **)param_3[1];
          if (*(char *)((int)ppiVar9 + 0x61) == '\0') {
            ppiVar9[1] = (int *)ppiVar7;
          }
          *ppiVar7 = (int *)ppiVar9;
          param_3[2] = ppiVar4[2];
          ppiVar4[2][1] = (int)param_3;
        }
        if (*(int ***)(*(int *)(param_1_00 + 0x18) + 4) == ppiVar4) {
          *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = param_3;
        }
        else {
          ppiVar8 = (int **)ppiVar4[1];
          if ((int **)*ppiVar8 == ppiVar4) {
            *ppiVar8 = (int *)param_3;
          }
          else {
            ppiVar8[2] = (int *)param_3;
          }
        }
        param_3[1] = ppiVar4[1];
        ppiVar8 = ppiVar4 + 0x18;
        param_3 = param_3 + 0x18;
        if (param_3 != ppiVar8) {
          uVar1 = *(undefined *)param_3;
          *(undefined *)param_3 = *(undefined *)ppiVar8;
          *(undefined *)ppiVar8 = uVar1;
        }
        goto LAB_00a6e02d;
      }
    }
  }
  else {
    ppiVar9 = (int **)ppiVar4[2];
  }
  ppiVar7 = (int **)ppiVar4[1];
  if (*(char *)((int)ppiVar9 + 0x61) == '\0') {
    ppiVar9[1] = (int *)ppiVar7;
  }
  if (*(int ***)(*(int *)(param_1_00 + 0x18) + 4) == ppiVar4) {
    *(int ***)(*(int *)(param_1_00 + 0x18) + 4) = ppiVar9;
  }
  else if ((int **)*ppiVar7 == ppiVar4) {
    *ppiVar7 = (int *)ppiVar9;
  }
  else {
    ppiVar7[2] = (int *)ppiVar9;
  }
  ppiVar8 = *(int ***)(param_1_00 + 0x18);
  if ((int **)*ppiVar8 == ppiVar4) {
    ppiVar5 = ppiVar7;
    if (*(char *)((int)ppiVar9 + 0x61) == '\0') {
      ppiVar5 = (int **)FUN_00a6b830(ppiVar9);
    }
    *ppiVar8 = (int *)ppiVar5;
  }
  iVar2 = *(int *)(param_1_00 + 0x18);
  if (*(int ***)(iVar2 + 8) == ppiVar4) {
    if (*(char *)((int)ppiVar9 + 0x61) == '\0') {
      uVar6 = FUN_00a6b810(ppiVar9);
      *(undefined4 *)(iVar2 + 8) = uVar6;
    }
    else {
      *(int ***)(iVar2 + 8) = ppiVar7;
    }
  }
LAB_00a6e02d:
  if (*(char *)(ppiVar4 + 0x18) == '\x01') {
    if (ppiVar9 != *(int ***)(*(int *)(param_1_00 + 0x18) + 4)) {
      do {
        ppiVar8 = ppiVar7;
        if (*(char *)(ppiVar9 + 0x18) != '\x01') break;
        ppiVar7 = (int **)*ppiVar8;
        if (ppiVar9 == ppiVar7) {
          ppiVar7 = (int **)ppiVar8[2];
          if (*(char *)(ppiVar7 + 0x18) == '\0') {
            *(undefined *)(ppiVar7 + 0x18) = 1;
            *(undefined *)(ppiVar8 + 0x18) = 0;
            FUN_00a6b920(ppiVar8);
            ppiVar7 = (int **)ppiVar8[2];
          }
          if (*(char *)((int)ppiVar7 + 0x61) == '\0') {
            if ((*(char *)(*ppiVar7 + 0x18) != '\x01') || (*(char *)(ppiVar7[2] + 0x18) != '\x01'))
            {
              if (*(char *)(ppiVar7[2] + 0x18) == '\x01') {
                *(undefined *)(*ppiVar7 + 0x18) = 1;
                *(undefined *)(ppiVar7 + 0x18) = 0;
                FUN_00a6b7b0(ppiVar7);
                ppiVar7 = (int **)ppiVar8[2];
              }
              *(undefined *)(ppiVar7 + 0x18) = *(undefined *)(ppiVar8 + 0x18);
              *(undefined *)(ppiVar8 + 0x18) = 1;
              *(undefined *)(ppiVar7[2] + 0x18) = 1;
              FUN_00a6b920(ppiVar8);
              break;
            }
LAB_00a6e0f0:
            *(undefined *)(ppiVar7 + 0x18) = 0;
          }
        }
        else {
          if (*(char *)(ppiVar7 + 0x18) == '\0') {
            *(undefined *)(ppiVar7 + 0x18) = 1;
            *(undefined *)(ppiVar8 + 0x18) = 0;
            FUN_00a6b7b0(ppiVar8);
            ppiVar7 = (int **)*ppiVar8;
          }
          if (*(char *)((int)ppiVar7 + 0x61) == '\0') {
            if ((*(char *)(ppiVar7[2] + 0x18) == '\x01') && (*(char *)(*ppiVar7 + 0x18) == '\x01'))
            goto LAB_00a6e0f0;
            if (*(char *)(*ppiVar7 + 0x18) == '\x01') {
              *(undefined *)(ppiVar7[2] + 0x18) = 1;
              *(undefined *)(ppiVar7 + 0x18) = 0;
              FUN_00a6b920(ppiVar7);
              ppiVar7 = (int **)*ppiVar8;
            }
            *(undefined *)(ppiVar7 + 0x18) = *(undefined *)(ppiVar8 + 0x18);
            *(undefined *)(ppiVar8 + 0x18) = 1;
            *(undefined *)(*ppiVar7 + 0x18) = 1;
            FUN_00a6b7b0(ppiVar8);
            break;
          }
        }
        ppiVar7 = (int **)ppiVar8[1];
        ppiVar9 = ppiVar8;
      } while (ppiVar8 != *(int ***)(*(int *)(param_1_00 + 0x18) + 4));
    }
    *(undefined *)(ppiVar9 + 0x18) = 1;
  }
  FUN_00a6c150();
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(ppiVar4);
}



void FUN_00a6e190(int param_1)

{
  if (*(char *)(param_1 + 0x61) == '\0') {
    FUN_00a6e190(*(undefined4 *)(param_1 + 8));
    FUN_00a6c150();
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return;
}



void FUN_00a6e1d0(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_90 [72];
  undefined local_48 [60];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2688;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_00a6d950(local_48,param_1,DAT_0323f878 ^ (uint)local_90);
  local_4 = 0;
  FUN_00a6d9a0(local_90,uVar2);
  __CxxThrowException_8(local_90,&DAT_03111658);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_00a6e240(int param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *local_18;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bf26b0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  local_18 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)param_1 + 0x61) == '\0') {
    puVar1 = (undefined4 *)
             FUN_00a6d710(local_18,param_2,local_18,param_1 + 3,*(undefined *)(param_1 + 0x18));
    if (*(char *)((int)local_18 + 0x61) != '\0') {
      local_18 = puVar1;
    }
    local_8 = 0;
    uVar2 = FUN_00a6e240(*param_1,puVar1);
    *puVar1 = uVar2;
    uVar2 = FUN_00a6e240(param_1[2],puVar1);
    puVar1[2] = uVar2;
  }
  ExceptionList = local_10;
  return local_18;
}



void Catch_All_00a6e2dd(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  FUN_00a6e190(*(undefined4 *)(unaff_EBP + -0x14));
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00a6e300(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf26ee;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 0xf;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  param_1_00[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00,param_1,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x1c) = param_2;
  local_4 = 0;
  *(undefined4 *)(param_1_00 + 0x20) = param_3;
  FUN_00a6dab0(uVar1);
  local_4._0_1_ = 1;
  FUN_00a6dab0();
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00a6dab0();
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00a6e3a0(undefined4 *param_1_00,undefined *param_1)

{
  undefined *puVar1;
  undefined *puVar2;
  uint uVar3;
  undefined local_8 [8];
  
  puVar1 = (undefined *)param_1_00[3];
  if (puVar1 == (undefined *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = param_1_00[5] - (int)puVar1;
  }
  puVar2 = (undefined *)param_1_00[4];
  if ((uint)((int)puVar2 - (int)puVar1) < uVar3) {
    *puVar2 = *param_1;
    param_1_00[4] = puVar2 + 1;
    return;
  }
  if (puVar2 < puVar1) {
    FUN_00a3fb10();
  }
  FUN_00a6db10(local_8,*param_1_00,puVar2,param_1);
  return;
}



void __thiscall
FUN_00a6e400(int **param_1_00,int **param_1,int *param_2,int param_3,undefined4 param_4)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  
  piVar1 = param_1_00[3];
  if (((int)param_1_00[4] - (int)piVar1 & 0xfffffff8U) == 0) {
    iVar4 = 0;
  }
  else {
    if (param_1_00[4] < piVar1) {
      FUN_00a3fb10();
    }
    if ((param_2 == (int *)0x0) || (param_2 != *param_1_00)) {
      FUN_00a3fb10();
    }
    iVar4 = param_3 - (int)piVar1 >> 3;
  }
  FUN_00a6dbc0(param_2,param_3,1,param_4);
  piVar1 = param_1_00[3];
  if (param_1_00[4] < piVar1) {
    FUN_00a3fb10();
  }
  piVar2 = *param_1_00;
  if (piVar2 == (int *)0x0) {
    FUN_00a3fb10();
    iVar3 = 0;
  }
  else {
    iVar3 = *piVar2;
  }
  piVar1 = piVar1 + iVar4 * 2;
  if (piVar1 <= *(int **)(iVar3 + 0x10)) {
    if (piVar2 == (int *)0x0) {
      iVar4 = 0;
    }
    else {
      iVar4 = *piVar2;
    }
    if (*(int **)(iVar4 + 0xc) <= piVar1) goto LAB_00a6e49c;
  }
  FUN_00a3fb10();
LAB_00a6e49c:
  param_1[1] = piVar1;
  *param_1 = piVar2;
  return;
}



void __thiscall FUN_00a6e4b0(int param_1_00,int param_1)

{
  char cVar1;
  int iVar2;
  int **ppiVar3;
  int **ppiVar4;
  int iVar5;
  int **ppiVar6;
  undefined4 uVar7;
  
  iVar2 = *(int *)(param_1_00 + 0x18);
  uVar7 = FUN_00a6e240(*(undefined4 *)(*(int *)(param_1 + 0x18) + 4),iVar2);
  *(undefined4 *)(iVar2 + 4) = uVar7;
  ppiVar3 = *(int ***)(param_1_00 + 0x18);
  *(undefined4 *)(param_1_00 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);
  ppiVar4 = (int **)ppiVar3[1];
  if (*(char *)((int)ppiVar4 + 0x61) != '\0') {
    *ppiVar3 = (int *)ppiVar3;
    *(int *)(*(int *)(param_1_00 + 0x18) + 8) = *(int *)(param_1_00 + 0x18);
    return;
  }
  cVar1 = *(char *)((int)*ppiVar4 + 0x61);
  ppiVar6 = (int **)*ppiVar4;
  while (cVar1 == '\0') {
    cVar1 = *(char *)((int)*ppiVar6 + 0x61);
    ppiVar4 = ppiVar6;
    ppiVar6 = (int **)*ppiVar6;
  }
  *ppiVar3 = (int *)ppiVar4;
  iVar2 = *(int *)(*(int *)(param_1_00 + 0x18) + 4);
  iVar5 = *(int *)(iVar2 + 8);
  cVar1 = *(char *)(iVar5 + 0x61);
  while (cVar1 == '\0') {
    cVar1 = *(char *)(*(int *)(iVar5 + 8) + 0x61);
    iVar2 = iVar5;
    iVar5 = *(int *)(iVar5 + 8);
  }
  *(int *)(*(int *)(param_1_00 + 0x18) + 8) = iVar2;
  return;
}



void __thiscall FUN_00a6e530(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint local_8 [2];
  
  uVar1 = param_1_00[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(param_1_00[5] - uVar1) >> 3;
  }
  uVar2 = param_1_00[4];
  if ((uint)((int)(uVar2 - uVar1) >> 3) < uVar3) {
    local_8[0] = local_8[0] & 0xffffff00;
    FUN_00a6c380(uVar2,1,param_1,param_1_00 + 2,param_1,local_8[0]);
    param_1_00[4] = uVar2 + 8;
    return;
  }
  if (uVar2 < uVar1) {
    FUN_00a3fb10();
  }
  FUN_00a6e400(local_8,*param_1_00,uVar2,param_1);
  return;
}



void __thiscall
FUN_00a6e5b0(int *param_1_00,int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  undefined local_8 [8];
  
  iVar1 = *(int *)param_1_00[6];
  if ((param_2 == 0) || (param_2 != *param_1_00)) {
    FUN_00a3fb10();
  }
  if (param_3 == iVar1) {
    iVar1 = param_1_00[6];
    if ((param_4 == 0) || (param_4 != *param_1_00)) {
      FUN_00a3fb10();
    }
    if (param_5 == iVar1) {
      FUN_00a6e190(*(undefined4 *)(param_1_00[6] + 4));
      *(int *)(param_1_00[6] + 4) = param_1_00[6];
      param_1_00[7] = 0;
      *(int *)param_1_00[6] = param_1_00[6];
      *(int *)(param_1_00[6] + 8) = param_1_00[6];
      iVar1 = *param_1_00;
      param_1[1] = *(int *)param_1_00[6];
      *param_1 = iVar1;
      return;
    }
  }
  while( true ) {
    if ((param_2 == 0) || (param_2 != param_4)) {
      FUN_00a3fb10();
    }
    if (param_3 == param_5) break;
    FUN_00a6b970();
    FUN_00a6deb0(local_8,param_2,param_3);
  }
  *param_1 = *param_1_00;
  param_1[1] = param_3;
  return;
}



int FUN_00a6e690(undefined4 param_1,int *param_2)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  int iVar5;
  undefined4 uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf2718;
  local_c = ExceptionList;
  uVar4 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00a6e530(&param_1);
  uStack_10 = uStack_10 & 0xffffff;
  iVar5 = FUN_00a6e3a0((int)&uStack_10 + 3);
  piVar3 = param_2;
  local_4 = 0xffffffff;
  if (param_2 != (int *)0x0) {
    piVar1 = param_2 + 1;
    LOCK();
    iVar2 = *piVar1;
    iVar5 = *piVar1;
    *piVar1 = iVar2 + -1;
    UNLOCK();
    if (iVar2 + -1 == 0) {
      iVar5 = (**(code **)(*param_2 + 4))(uVar4);
      piVar1 = piVar3 + 2;
      LOCK();
      iVar2 = *piVar1 + -1;
      *piVar1 = iVar2;
      UNLOCK();
      if (iVar2 == 0) {
        iVar5 = (**(code **)(*piVar3 + 8))();
      }
    }
  }
  ExceptionList = local_c;
  return iVar5;
}



void __fastcall FUN_00a6e730(undefined4 *param_1)

{
  undefined local_8 [8];
  
  FUN_00a6e5b0(local_8,*param_1,*(undefined4 *)param_1[6],*param_1,(undefined4 *)param_1[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[6]);
}



void ** __thiscall FUN_00a6e770(void **param_1_00,undefined4 param_1)

{
  undefined4 *puVar1;
  void *pvVar2;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bf2748;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = param_1_00;
  }
  *param_1_00 = puVar1;
  local_8 = 0;
  pvVar2 = (void *)FUN_00a6bc30();
  param_1_00[6] = pvVar2;
  *(undefined *)((int)pvVar2 + 0x61) = 1;
  *(void **)((int)param_1_00[6] + 4) = param_1_00[6];
  *(void **)param_1_00[6] = param_1_00[6];
  *(void **)((int)param_1_00[6] + 8) = param_1_00[6];
  local_8 = CONCAT31(local_8._1_3_,1);
  param_1_00[7] = (void *)0x0;
  FUN_00a6e4b0(param_1);
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_00a6e808(void)

{
  code *pcVar1;
  
  FUN_00a6e730();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00a6e820(int *param_1,undefined *param_2,undefined *param_3,int param_4,int *param_5)

{
  if (param_2 != param_3) {
    do {
      FUN_00425a10(param_5,*param_2);
      if (param_4 != 0) {
        FUN_004f48b2(param_5,param_4);
      }
      if ((*(int *)(*param_5 + 4) + (int)param_5 &
          ~-(uint)((*(uint *)(*(int *)(*param_5 + 4) + 8 + (int)param_5) & 6) != 0)) == 0) {
        FUN_00a3fb10();
      }
      param_2 = param_2 + 1;
    } while (param_2 != param_3);
  }
  *param_1 = param_4;
  param_1[1] = (int)param_5;
  return;
}



undefined4 __thiscall FUN_00a6e8a0(undefined4 param_1_00,undefined4 param_1)

{
  int iVar1;
  void *pvVar2;
  undefined4 *puVar3;
  int *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2783;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar2 = operator_new(0x60);
  local_4 = 0;
  if (pvVar2 != (void *)0x0) {
    puVar3 = (undefined4 *)operator_new(8);
    if (puVar3 != (undefined4 *)0x0) {
      *puVar3 = boost::program_options::untyped_value::vftable;
      *(undefined *)(puVar3 + 1) = 1;
    }
    FUN_00a6d9f0(param_1);
  }
  local_4 = 0xffffffff;
  FUN_00a6bf50();
  local_4 = 1;
  if (local_10 != (int *)0x0) {
    LOCK();
    local_10[1] = local_10[1] + 1;
    UNLOCK();
  }
  FUN_00a6e690();
  local_4 = 0xffffffff;
  if (local_10 != (int *)0x0) {
    LOCK();
    iVar1 = local_10[1] + -1;
    local_10[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*local_10 + 4))();
      LOCK();
      iVar1 = local_10[2] + -1;
      local_10[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*local_10 + 8))();
      }
    }
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00a6e9b0(undefined4 *param_1)

{
  uint uVar1;
  undefined local_14 [8];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf27a8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  local_4 = 0;
  FUN_00a6e5b0(local_14,*param_1,*(undefined4 *)param_1[6],*param_1,(undefined4 *)param_1[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[6],uVar1);
}



void __fastcall FUN_00a6ea30(undefined4 *param_1)

{
  uint uVar1;
  undefined auStack_14 [8];
  void *pvStack_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  puStack_8 = &LAB_00bf27a8;
  pvStack_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &pvStack_c;
  uStack_4 = 0;
  FUN_00a6e5b0(auStack_14,*param_1,*(undefined4 *)param_1[6],*param_1,(undefined4 *)param_1[6]);
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(param_1[6],uVar1);
}



// WARNING: Type propagation algorithm not settling

void FUN_00a6ea40(undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  int *piVar8;
  int iVar9;
  char **ppcVar10;
  undefined *puVar11;
  int iVar12;
  undefined4 *extraout_ECX;
  char **ppcVar13;
  uint extraout_EDX;
  uint uVar14;
  undefined4 *puVar15;
  undefined *puVar16;
  char *pcVar17;
  undefined4 *param_7;
  uint param_8;
  char *param_9;
  undefined4 *param_10;
  char local_a0 [7];
  undefined local_99;
  undefined4 *local_98;
  undefined *local_94;
  undefined4 *local_90;
  uint local_8c;
  undefined4 *local_88;
  undefined *local_84;
  undefined4 *local_80;
  undefined4 local_7c;
  undefined *local_78;
  undefined4 *local_74;
  undefined *local_70;
  undefined4 *local_6c;
  undefined4 *local_64;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_60 [4];
  undefined local_5c;
  undefined4 local_4c;
  undefined4 local_48;
  undefined local_44 [8];
  undefined local_3c [8];
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf27e8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff50;
  ExceptionList = &local_c;
  local_7c = param_1;
  param_10 = (undefined4 *)((int)param_10 - (int)param_9);
  local_4 = 0;
  local_a0[0] = '\t';
  puVar3 = (undefined4 *)FUN_004277a0(local_a0,0,1);
  if (puVar3 != (undefined4 *)0xffffffff) {
    puVar6 = param_3;
    if (param_8 < 0x10) {
      puVar6 = &param_3;
    }
    puVar6 = (undefined4 *)((int)param_7 + (int)puVar6);
    local_88 = puVar3;
    if (puVar6 != (undefined4 *)0x0) {
      puVar7 = param_3;
      if (param_8 < 0x10) {
        puVar7 = &param_3;
      }
      if (puVar7 <= puVar6) {
        puVar7 = param_3;
        if (param_8 < 0x10) {
          puVar7 = &param_3;
        }
        if (puVar6 <= (undefined4 *)((int)puVar7 + (int)param_7)) goto LAB_00a6eb26;
      }
    }
    FUN_00a3fb10(uVar2);
LAB_00a6eb26:
    puVar7 = param_3;
    uVar14 = param_8;
    puVar15 = param_7;
    if (param_8 < 0x10) goto LAB_00a6ebd6;
    puVar5 = param_3;
    if (param_3 == (undefined4 *)0x0) goto LAB_00a6eb5b;
    do {
      puVar4 = puVar7;
      if (uVar14 < 0x10) {
        puVar4 = &param_3;
      }
      if (puVar5 < puVar4) {
LAB_00a6eb5b:
        FUN_00a3fb10(uVar2);
      }
      else {
        if (uVar14 < 0x10) {
          puVar7 = &param_3;
        }
        puVar15 = (undefined4 *)((int)puVar15 + (int)puVar7);
        if (puVar15 < puVar5) goto LAB_00a6eb5b;
      }
      iVar12 = 0;
      if (puVar5 == puVar6) goto LAB_00a6ebe2;
      do {
        if (*(char *)puVar5 == '\t') {
          iVar12 = iVar12 + 1;
        }
        puVar5 = (undefined4 *)((int)puVar5 + 1);
      } while (puVar5 != puVar6);
      if (iVar12 < 2) goto LAB_00a6ebe2;
      local_48 = 0xf;
      local_4c = 0;
      local_5c = 0;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (local_60,"Only one tab per paragraph is allowed in the options description",0x40);
      local_4._0_1_ = 1;
      FUN_00417ca0(local_60);
      local_34[0] = boost::program_options::error::vftable;
      local_4 = CONCAT31(local_4._1_3_,2);
      FUN_00a6e1d0(local_34);
      puVar7 = extraout_ECX;
      uVar14 = extraout_EDX;
LAB_00a6ebd6:
      puVar5 = &param_3;
    } while( true );
  }
  local_88 = (undefined4 *)0x0;
  goto LAB_00a6ec02;
LAB_00a6ebe2:
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             &param_2,(uint)puVar3,1);
  if (param_10 <= puVar3) {
    local_88 = (undefined4 *)0x0;
  }
LAB_00a6ec02:
  if (param_7 < param_10) {
    FUN_004f49f1(local_7c,&param_2);
    goto LAB_00a6ec27;
  }
  if (param_8 < 0x10) {
    puVar3 = &param_3;
LAB_00a6ec78:
    puVar6 = param_3;
    if (param_8 < 0x10) {
      puVar6 = &param_3;
    }
    if (puVar3 < puVar6) goto LAB_00a6ec9e;
    puVar6 = param_3;
    if (param_8 < 0x10) {
      puVar6 = &param_3;
    }
    if ((undefined4 *)((int)puVar6 + (int)param_7) < puVar3) goto LAB_00a6ec9e;
  }
  else {
    puVar3 = param_3;
    if (param_3 != (undefined4 *)0x0) goto LAB_00a6ec78;
LAB_00a6ec9e:
    FUN_00a3fb10(uVar2);
  }
  puVar16 = (undefined *)&param_2;
  puVar6 = param_3;
  if (param_8 < 0x10) {
    puVar6 = &param_3;
  }
  puVar6 = (undefined4 *)((int)puVar6 + (int)param_7);
  local_98 = puVar6;
  local_94 = puVar16;
  local_90 = puVar3;
  if (puVar6 == (undefined4 *)0x0) {
LAB_00a6ed06:
    FUN_00a3fb10(uVar2);
  }
  else {
    puVar7 = param_3;
    if (param_8 < 0x10) {
      puVar7 = &param_3;
    }
    if (puVar6 < puVar7) goto LAB_00a6ed06;
    puVar7 = param_3;
    if (param_8 < 0x10) {
      puVar7 = &param_3;
    }
    if ((undefined4 *)((int)puVar7 + (int)param_7) < puVar6) goto LAB_00a6ed06;
  }
  local_a0[0] = '\x01';
  puVar11 = local_94;
  puVar7 = local_90;
  while( true ) {
    local_90 = puVar7;
    local_94 = puVar11;
    if ((puVar16 != (undefined *)0xfffffffc) &&
       ((puVar16 == (undefined *)0x0 || ((undefined4 *)puVar16 != &param_2)))) {
      FUN_00a3fb10();
    }
    if (puVar6 <= puVar3) break;
    if (local_a0[0] == '\0') {
      if (puVar16 != (undefined *)0xfffffffc) {
        if (puVar16 == (undefined *)0x0) {
          FUN_00a3fb10();
        }
        if (*(uint *)(puVar16 + 0x18) < 0x10) {
          puVar11 = puVar16 + 4;
        }
        else {
          puVar11 = *(undefined **)(puVar16 + 4);
        }
        if (puVar11 + *(int *)(puVar16 + 0x14) <= puVar3) {
          FUN_00a3fb10();
        }
      }
      if (*(char *)puVar3 == ' ') {
        local_78 = puVar16;
        local_74 = puVar3;
        piVar8 = (int *)FUN_005e0be0(1);
        puVar11 = (undefined *)*piVar8;
        puVar7 = (undefined4 *)piVar8[1];
        if ((puVar11 != (undefined *)0xfffffffc) &&
           ((puVar11 == (undefined *)0x0 || ((undefined4 *)puVar11 != &param_2)))) {
          FUN_00a3fb10();
        }
        if (puVar7 < puVar6) {
          local_70 = puVar16;
          local_6c = puVar3;
          piVar8 = (int *)FUN_005e0be0(1);
          iVar12 = *piVar8;
          pcVar17 = (char *)piVar8[1];
          if (iVar12 != -4) {
            if (iVar12 == 0) {
              FUN_00a3fb10();
            }
            if (*(uint *)(iVar12 + 0x18) < 0x10) {
              iVar9 = iVar12 + 4;
            }
            else {
              iVar9 = *(int *)(iVar12 + 4);
            }
            if ((char *)(*(int *)(iVar12 + 0x14) + iVar9) <= pcVar17) {
              FUN_00a3fb10();
            }
          }
          puVar6 = local_98;
          if (*pcVar17 != ' ') {
            FUN_005e0be0(1);
            puVar6 = local_98;
            puVar3 = local_90;
            puVar16 = local_94;
          }
        }
      }
    }
    if ((&param_2 != (undefined4 *)0xfffffffc) && (&param_2 != (undefined4 *)puVar16)) {
      FUN_00a3fb10();
    }
    puVar7 = param_10;
    if ((undefined4 *)((int)puVar6 - (int)puVar3) < param_10) {
      puVar7 = (undefined4 *)((int)puVar6 - (int)puVar3);
    }
    if (puVar16 != (undefined *)0xfffffffc) {
      local_64 = puVar3;
      if (puVar16 == (undefined *)0x0) {
        FUN_00a3fb10();
      }
      ppcVar10 = (char **)(puVar16 + 4);
      ppcVar13 = ppcVar10;
      if (0xf < *(uint *)(puVar16 + 0x18)) {
        ppcVar13 = (char **)*ppcVar10;
      }
      if ((char *)((int)puVar7 + (int)puVar3) <= (char *)((int)ppcVar13 + *(int *)(puVar16 + 0x14)))
      {
        if (0xf < *(uint *)(puVar16 + 0x18)) {
          ppcVar10 = (char **)*ppcVar10;
        }
        if (ppcVar10 <= (char *)((int)puVar7 + (int)puVar3)) goto LAB_00a6ee77;
      }
      FUN_00a3fb10();
    }
LAB_00a6ee77:
    puVar3 = (undefined4 *)((int)puVar3 + (int)puVar7);
    local_84 = puVar16;
    local_80 = puVar3;
    local_64 = puVar3;
    if (puVar16 != (undefined *)0xfffffffc) {
      if (puVar16 == (undefined *)0x0) {
        FUN_00a3fb10();
      }
      ppcVar10 = (char **)(puVar16 + 4);
      ppcVar13 = ppcVar10;
      if (0xf < *(uint *)(puVar16 + 0x18)) {
        ppcVar13 = (char **)*ppcVar10;
      }
      if ((char *)((int)puVar3 - 1U) <= (char *)((int)ppcVar13 + *(int *)(puVar16 + 0x14))) {
        if (0xf < *(uint *)(puVar16 + 0x18)) {
          ppcVar10 = (char **)*ppcVar10;
        }
        if (ppcVar10 <= (char *)((int)puVar3 - 1U)) goto LAB_00a6eec3;
      }
      FUN_00a3fb10();
    }
LAB_00a6eec3:
    if (puVar16 != (undefined *)0xfffffffc) {
      if (puVar16 == (undefined *)0x0) {
        FUN_00a3fb10();
      }
      if (*(uint *)(puVar16 + 0x18) < 0x10) {
        puVar11 = puVar16 + 4;
      }
      else {
        puVar11 = *(undefined **)(puVar16 + 4);
      }
      if (puVar11 + *(int *)(puVar16 + 0x14) <= (char *)((int)puVar3 - 1U)) {
        FUN_00a3fb10();
      }
    }
    if (*(char *)((int)puVar3 + -1) != ' ') {
      if ((puVar16 != (undefined *)0xfffffffc) &&
         ((puVar16 == (undefined *)0x0 || ((undefined4 *)puVar16 != &param_2)))) {
        FUN_00a3fb10();
      }
      if (puVar3 < local_98) {
        if (puVar16 != (undefined *)0xfffffffc) {
          if (puVar16 == (undefined *)0x0) {
            FUN_00a3fb10();
          }
          if (*(uint *)(puVar16 + 0x18) < 0x10) {
            puVar11 = puVar16 + 4;
          }
          else {
            puVar11 = *(undefined **)(puVar16 + 4);
          }
          if (puVar11 + *(int *)(puVar16 + 0x14) <= puVar3) {
            FUN_00a3fb10();
          }
        }
        if (*(char *)puVar3 != ' ') {
          local_99 = 0x20;
          piVar8 = (int *)FUN_00a6c290(local_3c,puVar16,puVar3,puVar16,local_90,&local_99);
          puVar11 = (undefined *)*piVar8;
          puVar6 = (undefined4 *)piVar8[1];
          if ((puVar11 != (undefined *)0xfffffffc) &&
             ((puVar11 == (undefined *)0x0 || (puVar11 != puVar16)))) {
            FUN_00a3fb10();
          }
          if ((puVar6 != local_90) &&
             (uVar2 = FUN_005e04c0(puVar11,puVar6,puVar16,puVar3), uVar2 < (uint)param_10 >> 1)) {
            local_84 = puVar11;
            local_80 = puVar6;
          }
        }
      }
    }
    uVar1 = local_7c;
    puVar3 = local_80;
    puVar7 = local_80;
    local_8c = local_8c & 0xffffff00;
    FUN_00a6e820(local_44,local_90,local_80,0,local_7c,local_8c,local_8c,local_8c);
    puVar16 = local_84;
    if (local_a0[0] != '\0') {
      param_9 = param_9 + (int)local_88;
      param_10 = (undefined4 *)((int)param_10 - (int)local_88);
      local_a0[0] = '\0';
    }
    puVar11 = local_84;
    if ((local_84 != (undefined *)0xfffffffc) &&
       ((local_84 == (undefined *)0x0 || ((undefined4 *)local_84 != &param_2)))) {
      FUN_00a3fb10();
    }
    puVar6 = local_98;
    if (puVar3 != local_98) {
      FUN_00425a10(uVar1,10);
      puVar6 = local_98;
      for (pcVar17 = param_9; local_98 = puVar6, pcVar17 != (char *)0x0; pcVar17 = pcVar17 + -1) {
        FUN_005e3200(0x20);
        puVar6 = local_98;
      }
    }
  }
LAB_00a6ec27:
  if (0xf < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3);
  }
  ExceptionList = local_c;
  return;
}



void FUN_00a6f070(int param_1,int param_2,int param_3,uint param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 *puVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_1d0 [4];
  undefined local_1cc;
  undefined4 uStack_1c0;
  int *local_1bc;
  undefined *local_1b8;
  undefined **ppuStack_1b4;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbStack_1b0;
  uint uStack_1ac;
  int local_198;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_194;
  undefined local_14c [68];
  int local_108;
  int local_104;
  int local_100;
  int local_fc;
  char local_f8;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_f4 [4];
  uint local_f0;
  undefined4 local_e0;
  uint local_dc;
  undefined local_d8 [68];
  int local_94;
  int local_90;
  int local_8c;
  int local_88;
  char local_84;
  uint local_7c;
  undefined4 local_6c;
  uint local_68;
  int local_64;
  undefined4 *local_60;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf284f;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_198;
  uStack_1ac = DAT_0323f878 ^ (uint)&stack0xfffffe58;
  ExceptionList = &local_c;
  local_198 = param_1;
  if (1 < param_4) {
    param_4 = param_4 - 1;
  }
  pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)0x1;
  ppuStack_1b4 = &PTR_02bd3fc0;
  local_1b8 = &DAT_030651b4;
  local_1bc = (int *)0xa6f0e6;
  uVar2 = FUN_00425de0();
  uVar1 = *(uint *)(param_2 + 0x18);
  local_4 = 0;
  puVar5 = (undefined4 *)(param_2 + 4);
  local_60 = puVar5;
  if (0xf < uVar1) {
    local_60 = (undefined4 *)*puVar5;
  }
  local_64 = 0;
  if (local_60 == (undefined4 *)0x0) {
LAB_00a6f130:
    pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  0xa6f135;
    FUN_00a3fb10();
  }
  else {
    puVar3 = puVar5;
    if (0xf < uVar1) {
      puVar3 = (undefined4 *)*puVar5;
    }
    if (local_60 < puVar3) goto LAB_00a6f130;
    puVar3 = puVar5;
    if (0xf < uVar1) {
      puVar3 = (undefined4 *)*puVar5;
    }
    if ((undefined4 *)(*(int *)(param_2 + 0x14) + (int)puVar3) < local_60) goto LAB_00a6f130;
  }
  local_64 = param_2;
  if (0xf < *(uint *)(param_2 + 0x18)) {
    puVar5 = (undefined4 *)*puVar5;
  }
  pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                param_2;
  ppuStack_1b4 = (undefined **)(*(int *)(param_2 + 0x14) + (int)puVar5);
  local_1b8 = (undefined *)0xa6f15e;
  FUN_00425c20();
  ppuStack_1b4 = (undefined **)0xa6f16b;
  pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                uVar2;
  FUN_00426240();
  local_4._0_1_ = 2;
  pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                0xa6f17c;
  FUN_00425ca0();
  pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                local_14c;
  ppuStack_1b4 = (undefined **)0xa6f18d;
  FUN_00425e90();
  pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                local_d8;
  local_4._0_1_ = 3;
  ppuStack_1b4 = (undefined **)0xa6f1aa;
  FUN_00425f50();
  local_4 = CONCAT31(local_4._1_3_,4);
LAB_00a6f1be:
  do {
    if ((local_84 == '\0') || (local_f8 == '\0')) {
      if (local_84 == local_f8) {
LAB_00a6f23f:
        if (0xf < local_68) {
          pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                         *)local_7c;
                    // WARNING: Subroutine does not return
          ppuStack_1b4 = (undefined **)&UNK_00a6f25a;
          FUN_00a3f6a1();
        }
        local_68 = 0xf;
        local_6c = 0;
        local_7c = local_7c & 0xffffff00;
        local_4._0_1_ = 3;
        pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       *)0xa6f288;
        FUN_00425ca0();
        if (local_dc < 0x10) {
          local_dc = 0xf;
          local_e0 = 0;
          local_f0 = local_f0 & 0xffffff00;
          local_4 = CONCAT31(local_4._1_3_,2);
          pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                         *)0xa6f2c8;
          FUN_00425ca0();
          local_4 = 0xffffffff;
          pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                         *)0xa6f2df;
          FUN_00425ca0();
          ExceptionList = local_c;
          ___security_check_cookie_4();
          return;
        }
        pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       *)local_f0;
                    // WARNING: Subroutine does not return
        ppuStack_1b4 = (undefined **)&UNK_00a6f29e;
        FUN_00a3f6a1();
      }
    }
    else {
      if ((local_94 != -4) && ((local_94 == 0 || (local_94 != local_108)))) {
        pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       *)0xa6f1f9;
        FUN_00a3fb10();
      }
      if (local_90 == local_104) {
        if ((local_8c != -4) && ((local_8c == 0 || (local_8c != local_100)))) {
          pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                         *)0xa6f22b;
          FUN_00a3fb10();
        }
        if (local_88 == local_fc) goto LAB_00a6f23f;
      }
    }
    pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  param_4;
    ppuStack_1b4 = (undefined **)param_3;
    local_194 = abStack_1d0;
    local_1b8 = (undefined *)0xf;
    local_1bc = (int *)0x0;
    local_1cc = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (abStack_1d0,local_f4,0,0xffffffff);
    FUN_00a6ea40(local_198);
    pbStack_1b0 = local_f4;
    ppuStack_1b4 = (undefined **)local_fc;
    local_1b8 = (undefined *)local_100;
    local_1bc = &local_108;
    uStack_1c0 = 0xa6f382;
    local_f8 = FUN_00426940();
    if ((local_84 == '\0') || (local_f8 == '\0')) goto LAB_00a6f3fc;
    if ((local_94 != -4) && ((local_94 == 0 || (local_94 != local_108)))) {
      pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                    0xa6f3b8;
      FUN_00a3fb10();
    }
    if (local_90 != local_104) break;
    if ((local_8c != -4) && ((local_8c == 0 || (local_8c != local_100)))) {
      pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                    0xa6f3e6;
      FUN_00a3fb10();
    }
  } while (local_88 == local_fc);
LAB_00a6f40b:
  pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)0xa;
  ppuStack_1b4 = (undefined **)local_198;
  local_1b8 = (undefined *)0xa6f417;
  FUN_00425a10();
  iVar4 = param_3;
  if (param_3 != 0) {
    do {
      pbStack_1b0 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                    0x20;
      ppuStack_1b4 = (undefined **)0xa6f42f;
      FUN_005e3200();
      iVar4 = iVar4 + -1;
    } while (iVar4 != 0);
  }
  goto LAB_00a6f1be;
LAB_00a6f3fc:
  if (local_84 == local_f8) goto LAB_00a6f1be;
  goto LAB_00a6f40b;
}



void FUN_00a6f440(undefined4 param_1,int param_2,uint param_3,undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined local_cc [4];
  uint local_c8;
  undefined4 local_b8;
  uint local_b4;
  undefined local_b0 [4];
  undefined4 local_ac;
  uint local_98;
  undefined local_8c [76];
  undefined **local_40 [13];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf28ac;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff20;
  ExceptionList = &local_c;
  FUN_004222a0(3,1);
  local_4 = 0;
  uVar2 = FUN_00a6d4b0(local_b0);
  local_4._0_1_ = 1;
  uVar3 = FUN_00a6d360(local_cc);
  local_4._0_1_ = 2;
  uVar2 = FUN_004f48b2(local_8c,&DAT_00da496c,uVar3,0x20,uVar2,uVar1);
  uVar2 = FUN_004f49f1(uVar2);
  uVar2 = FUN_00425a10(uVar2);
  FUN_004f49f1(uVar2);
  if (0xf < local_b4) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_c8);
  }
  local_b4 = 0xf;
  local_b8 = 0;
  local_c8 = local_c8 & 0xffffff00;
  local_4._0_1_ = 0;
  if (0xf < local_98) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_ac);
  }
  uVar2 = FUN_004223d0(local_b0);
  local_4._0_1_ = 3;
  FUN_004f49f1(param_1,uVar2);
  local_4 = (uint)local_4._1_3_ << 8;
  if (0xf < local_98) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_ac);
  }
  if (*(int *)(param_2 + 0x50) != 0) {
    iVar4 = FUN_004223d0(local_b0);
    if (0xf < local_98) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_ac);
    }
    if (*(uint *)(iVar4 + 0x14) < param_3) {
      iVar4 = FUN_004223d0(local_cc);
      iVar4 = param_3 - *(int *)(iVar4 + 0x14);
      if (0xf < local_b4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_c8);
      }
      local_b4 = 0xf;
      local_b8 = 0;
      local_c8 = local_c8 & 0xffffff00;
      for (; iVar4 != 0; iVar4 = iVar4 + -1) {
        FUN_005e3200(0x20);
      }
    }
    else {
      FUN_005e3200(10);
      uVar1 = param_3;
      if (param_3 != 0) {
        do {
          FUN_005e3200(0x20);
          uVar1 = uVar1 - 1;
        } while (uVar1 != 0);
      }
    }
    FUN_00a6f070(param_1,param_2 + 0x3c,param_3,param_4);
  }
  local_4 = 0xffffffff;
  FUN_00422340();
  local_40[0] = std::ios_base::vftable;
  std::ios_base::_Ios_base_dtor((ios_base *)local_40);
  ExceptionList = local_c;
  return;
}



void __thiscall FUN_00a6f690(int param_1_00,undefined4 param_1)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  uint *puVar4;
  uint uVar5;
  uint uVar6;
  uint local_d8;
  uint local_d4;
  uint local_d0;
  undefined local_cc [4];
  uint local_c8;
  undefined4 local_b8;
  uint local_b4;
  undefined local_b0 [4];
  undefined4 local_ac;
  uint local_98;
  undefined **local_94 [18];
  undefined4 local_4c;
  undefined4 local_48;
  undefined **local_40 [13];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2926;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar5 = 0;
  local_d0 = 0;
  if (*(int *)(param_1_00 + 0x14) != 0) {
    uVar1 = FUN_004f49f1(param_1,param_1_00,&DAT_00da4970,DAT_0323f878 ^ (uint)&stack0xffffff14);
    FUN_004f48b2(uVar1);
  }
  local_d8 = 0x17;
  if (*(int *)(param_1_00 + 0x34) - *(int *)(param_1_00 + 0x30) >> 3 != 0) {
    do {
      if ((uint)(*(int *)(param_1_00 + 0x34) - *(int *)(param_1_00 + 0x30) >> 3) <= uVar5) {
        FUN_00a3fb10();
      }
      local_94[0] = &PTR_00fad658;
      local_94[2] = (undefined **)&DAT_00fad660;
      local_40[0] = std::basic_ios<char,struct_std::char_traits<char>_>::vftable;
      local_d0 = local_d0 | 1;
      local_4 = 0;
      FUN_004224c0(local_94 + 3,0);
      local_4 = 1;
      *(undefined ***)((int)local_94 + (int)local_94[0][1]) =
           std::basic_stringstream<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
           vftable;
      FUN_00422fd0();
      local_94[3] = std::
                    basic_stringbuf<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    ::vftable;
      local_4c = 0;
      local_48 = 0;
      local_4 = 3;
      uVar1 = FUN_00a6d4b0(local_b0);
      local_4._0_1_ = 4;
      uVar2 = FUN_00a6d360(local_cc);
      local_4._0_1_ = 5;
      uVar1 = FUN_004f48b2(local_94 + 2,&DAT_00da496c,uVar2,0x20,uVar1);
      uVar1 = FUN_004f49f1(uVar1);
      uVar1 = FUN_00425a10(uVar1);
      FUN_004f49f1(uVar1);
      if (0xf < local_b4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_c8);
      }
      local_b4 = 0xf;
      local_b8 = 0;
      local_c8 = local_c8 & 0xffffff00;
      local_4 = CONCAT31(local_4._1_3_,3);
      if (0xf < local_98) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_ac);
      }
      iVar3 = FUN_004223d0(local_b0);
      local_d4 = *(uint *)(iVar3 + 0x14);
      puVar4 = &local_d4;
      if (*(uint *)(iVar3 + 0x14) <= local_d8) {
        puVar4 = &local_d8;
      }
      local_d8 = *puVar4;
      if (0xf < local_98) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_ac);
      }
      local_4 = 0xffffffff;
      FUN_00422340();
      local_40[0] = std::ios_base::vftable;
      std::ios_base::_Ios_base_dtor((ios_base *)local_40);
      uVar5 = uVar5 + 1;
    } while (uVar5 < (uint)(*(int *)(param_1_00 + 0x34) - *(int *)(param_1_00 + 0x30) >> 3));
  }
  local_d4 = (*(int *)(param_1_00 + 0x1c) - *(int *)(param_1_00 + 0x20)) - 1;
  puVar4 = &local_d4;
  if (local_d8 <= local_d4) {
    puVar4 = &local_d8;
  }
  uVar5 = *puVar4;
  uVar6 = 0;
  if (*(int *)(param_1_00 + 0x34) - *(int *)(param_1_00 + 0x30) >> 3 != 0) {
    do {
      if ((uint)(*(int *)(param_1_00 + 0x4c) - *(int *)(param_1_00 + 0x48)) <= uVar6) {
        FUN_00a3fb10();
      }
      if (*(char *)(uVar6 + *(int *)(param_1_00 + 0x48)) == '\0') {
        if ((uint)(*(int *)(param_1_00 + 0x34) - *(int *)(param_1_00 + 0x30) >> 3) <= uVar6) {
          FUN_00a3fb10();
        }
        FUN_00a6f440(param_1,*(undefined4 *)(*(int *)(param_1_00 + 0x30) + uVar6 * 8),uVar5 + 1,
                     *(undefined4 *)(param_1_00 + 0x1c));
        FUN_004f48b2(param_1,&DAT_030651b4);
      }
      uVar6 = uVar6 + 1;
    } while (uVar6 < (uint)(*(int *)(param_1_00 + 0x34) - *(int *)(param_1_00 + 0x30) >> 3));
  }
  uVar5 = 0;
  if (*(int *)(param_1_00 + 100) - *(int *)(param_1_00 + 0x60) >> 3 != 0) {
    do {
      if ((uint)(*(int *)(param_1_00 + 100) - *(int *)(param_1_00 + 0x60) >> 3) <= uVar5) {
        FUN_00a3fb10();
      }
      uVar1 = FUN_004f48b2(param_1,&DAT_030651b4);
      FUN_00a6f690(uVar1);
      uVar5 = uVar5 + 1;
    } while (uVar5 < (uint)(*(int *)(param_1_00 + 100) - *(int *)(param_1_00 + 0x60) >> 3));
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __thiscall FUN_00a6f9b0(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2979;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FID_conflict_runtime_error(param_1);
  *param_1_00 = boost::program_options::error_with_option_name::vftable;
  local_4 = 0;
  param_1_00[10] = *(undefined4 *)(param_1 + 0x28);
  FUN_00626c44(param_1 + 0x2c);
  local_4._0_1_ = 1;
  FUN_00a6e770(param_1 + 0x4c);
  param_1_00[0x21] = 0xf;
  param_1_00[0x20] = 0;
  local_4._0_1_ = 2;
  *(undefined *)(param_1_00 + 0x1c) = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 0x1b),
             (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0x6c),0,0xffffffff);
  param_1_00[0x28] = 0xf;
  param_1_00[0x27] = 0;
  local_4 = CONCAT31(local_4._1_3_,3);
  *(undefined *)(param_1_00 + 0x23) = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 0x22),
             (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1 + 0x88),0,0xffffffff);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_00a6fa80(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  uint uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf29a8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,"option",6);
  local_4 = 0;
  this = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
         FUN_00671c6f(local_28);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (this,param_1,0,0xffffffff);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00a6fb20(undefined4 *param_1)

{
  *param_1 = boost::program_options::error_with_option_name::vftable;
  if (0xf < (uint)param_1[0x28]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x23]);
  }
  param_1[0x28] = 0xf;
  param_1[0x27] = 0;
  *(undefined *)(param_1 + 0x23) = 0;
  if (0xf < (uint)param_1[0x21]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[0x1c]);
  }
  param_1[0x21] = 0xf;
  param_1[0x20] = 0;
  *(undefined *)(param_1 + 0x1c) = 0;
  FUN_00a6e9b0();
  FUN_0042f0e5();
  *param_1 = std::logic_error::vftable;
  if (0xf < (uint)param_1[9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[4]);
  }
  param_1[8] = 0;
  param_1[9] = 0xf;
  *(undefined *)(param_1 + 4) = 0;
  exception::~exception((exception *)param_1);
  return;
}



undefined4 __thiscall FUN_00a6fbc0(undefined4 param_1_00,byte param_1)

{
  FUN_00a6fb20();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00a6fbe0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf29e0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,(char *)&PTR_02bd3fc0,0);
  local_4 = 0;
  FUN_00a7c150(param_1,local_28,param_2,0);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  *param_1_00 = boost::program_options::error_with_no_option_name::vftable;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00a6fc80(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::program_options::error_with_no_option_name::vftable;
  FUN_00a6fb20();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00a6fcb0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2a10;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,"unrecognised option \'%canonical_option%\'",0x28);
  local_4 = 0;
  FUN_00a6fbe0(local_28,param_1);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  *param_1_00 = boost::program_options::unknown_option::vftable;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00a6fd50(undefined4 *param_1)

{
  *param_1 = boost::program_options::error_with_no_option_name::vftable;
  FUN_00a6fb20();
  return;
}



undefined4 * __thiscall FUN_00a6fd60(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_44 [4];
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2a48;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffac;
  ExceptionList = &local_c;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,(char *)&PTR_02bd3fc0,0);
  local_4 = 0;
  local_2c = 0xf;
  local_30 = 0;
  local_40 = local_40 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_44,"option \'%canonical_option%\' is ambiguous",0x28);
  local_4._0_1_ = 1;
  FUN_00a6fbe0(local_44,local_28);
  if (0xf < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40,uVar1);
  }
  local_2c = 0xf;
  local_30 = 0;
  local_40 = local_40 & 0xffffff00;
  local_4 = CONCAT31(local_4._1_3_,4);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  *param_1_00 = boost::program_options::ambiguous_option::vftable;
  FUN_0042f034(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00a6fe60(undefined4 *param_1)

{
  *param_1 = boost::program_options::ambiguous_option::vftable;
  FUN_0042f0c1();
  *param_1 = boost::program_options::error_with_no_option_name::vftable;
  FUN_00a6fb20();
  return;
}



undefined4 * __thiscall FUN_00a6fe90(undefined4 *param_1,byte param_2)

{
  *param_1 = boost::program_options::ambiguous_option::vftable;
  FUN_0042f0c1();
  *param_1 = boost::program_options::error_with_no_option_name::vftable;
  FUN_00a6fb20();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 * __thiscall FUN_00a6fef0(undefined4 *param_1_00,int param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2af8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00a6f9b0(param_1);
  local_4 = 0;
  *param_1_00 = boost::program_options::ambiguous_option::vftable;
  FUN_0042f034(param_1 + 0xa4);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00a6ff60(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::unknown_option>::vftable;
  param_1[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>::
       vftable;
  param_1[0x29] = boost::exception::vftable;
  if ((int *)param_1[0x2a] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2a] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2a] = 0;
    }
  }
  *param_1 = boost::program_options::error_with_no_option_name::vftable;
  FUN_00a6fb20();
  return;
}



void FUN_00a6ffb0(void)

{
  FUN_00a70270();
  return;
}



void __fastcall FUN_00a6ffc0(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>_>
             ::vftable;
  param_1[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1[0x2e] + 4) + 0xb8 + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0x2e] + 4) + 0xb4 + (int)param_1) = *(int *)(param_1[0x2e] + 4) + -8;
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::unknown_option>::vftable;
  param_1[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>::
       vftable;
  param_1[0x29] = boost::exception::vftable;
  if ((int *)param_1[0x2a] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2a] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2a] = 0;
    }
  }
  *param_1 = boost::program_options::error_with_no_option_name::vftable;
  FUN_00a6fb20();
  return;
}



void FUN_00a70050(void)

{
  FUN_00a70240();
  return;
}



void FUN_00a70060(void)

{
  FUN_00a70240();
  return;
}



void __fastcall FUN_00a70070(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::ambiguous_option>::vftable;
  param_1[0x2f] =
       boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>
       ::vftable;
  param_1[0x2f] = boost::exception::vftable;
  if ((int *)param_1[0x30] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x30] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x30] = 0;
    }
  }
  *param_1 = boost::program_options::ambiguous_option::vftable;
  FUN_0042f0c1();
  *param_1 = boost::program_options::error_with_no_option_name::vftable;
  FUN_00a6fb20();
  return;
}



void FUN_00a700d0(void)

{
  FUN_00a702f0();
  return;
}



void FUN_00a700e0(void)

{
  FUN_00a702d0();
  return;
}



void FUN_00a700f0(void)

{
  FUN_00a702d0();
  return;
}



void __fastcall FUN_00a70100(int param_1)

{
  FUN_00a6ffc0();
  *(undefined ***)(param_1 + 0xc0) = boost::exception_detail::clone_base::vftable;
  return;
}



void __fastcall FUN_00a70140(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>_>
             ::vftable;
  param_1[0x2f] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1[0x34] + 4) + 0xd0 + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0x34] + 4) + 0xcc + (int)param_1) = *(int *)(param_1[0x34] + 4) + -8;
  FUN_00a70070();
  param_1[0x36] = boost::exception_detail::clone_base::vftable;
  return;
}



undefined4 * __thiscall FUN_00a70190(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2a78;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_00a6fef0(param_1);
  local_4 = 0;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xbc;
  }
  param_1_00[0x2f] = boost::exception::vftable;
  piVar1 = *(int **)(param_1 + 4);
  param_1_00[0x30] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 0xc))(uVar2);
  }
  param_1_00[0x31] = *(undefined4 *)(param_1 + 8);
  param_1_00[0x32] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[0x33] = *(undefined4 *)(param_1 + 0x10);
  *param_1_00 = boost::exception_detail::
                error_info_injector<class_boost::program_options::ambiguous_option>::vftable;
  param_1_00[0x2f] =
       boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>
       ::vftable;
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_00a70240(int param_1_00,byte param_1)

{
  FUN_00a6ffc0();
  *(undefined ***)(param_1_00 + 0xc0) = boost::exception_detail::clone_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00a70270(undefined4 *param_1,byte param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::unknown_option>::vftable;
  param_1[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>::
       vftable;
  param_1[0x29] = boost::exception::vftable;
  if ((int *)param_1[0x2a] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2a] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2a] = 0;
    }
  }
  *param_1 = boost::program_options::error_with_no_option_name::vftable;
  FUN_00a6fb20();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 __thiscall FUN_00a702d0(undefined4 param_1_00,byte param_1)

{
  FUN_00a70140();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00a702f0(undefined4 param_1_00,byte param_1)

{
  FUN_00a70070();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a70310(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2ac7;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_3 != 0) {
    param_1_00[0x34] = &DAT_00da4ab4;
    param_1_00[0x36] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a70190(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>_>
                ::vftable;
  param_1_00[0x2f] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x34] + 4) + 0xd0 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0x34] + 4) + 0xcc + (int)param_1_00) =
       *(int *)(param_1_00[0x34] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xbc;
  }
  FUN_00401200(param_1_00 + 0x2f,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * FUN_00a703f0(undefined4 *param_1,undefined4 param_2)

{
  FUN_00a6fef0(param_2);
  param_1[0x2f] = boost::exception::vftable;
  param_1[0x30] = 0;
  param_1[0x31] = 0;
  param_1[0x32] = 0;
  param_1[0x33] = 0xffffffff;
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::ambiguous_option>::vftable;
  param_1[0x2f] =
       boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>
       ::vftable;
  return param_1;
}



undefined4 * __thiscall FUN_00a70450(undefined4 *param_1_00,int param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2ac7;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0x34] = &DAT_00da4ab4;
    param_1_00[0x36] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a70190(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>_>
                ::vftable;
  param_1_00[0x2f] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x34] + 4) + 0xd0 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0x34] + 4) + 0xcc + (int)param_1_00) =
       *(int *)(param_1_00[0x34] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xbc;
  }
  FUN_00401200(param_1_00 + 0x2f,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00a70530(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2af8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_00a6f9b0(param_1);
  *param_1_00 = boost::program_options::unknown_option::vftable;
  local_4 = 0;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xa4;
  }
  param_1_00[0x29] = boost::exception::vftable;
  piVar1 = *(int **)(param_1 + 4);
  param_1_00[0x2a] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 0xc))(uVar2);
  }
  param_1_00[0x2b] = *(undefined4 *)(param_1 + 8);
  param_1_00[0x2c] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[0x2d] = *(undefined4 *)(param_1 + 0x10);
  *param_1_00 = boost::exception_detail::
                error_info_injector<class_boost::program_options::unknown_option>::vftable;
  param_1_00[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>::
       vftable;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00a705e0(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2b3f;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0x34] = &DAT_00da4ab4;
    param_1_00[0x36] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a70190(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>_>
                ::vftable;
  param_1_00[0x2f] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x34] + 4) + 0xd0 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::ambiguous_option>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0x34] + 4) + 0xcc + (int)param_1_00) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_00a706a0(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xdc);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00a70310(param_1 + -0xd8,local_14,1);
    if (iVar2 != 0) {
      ExceptionList = local_c;
      return *(int *)(*(int *)(iVar2 + 0xd0) + 4) + 0xd0 + iVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_00a70740(int param_1)

{
  code *pcVar1;
  undefined local_dc [220];
  
  FUN_00a705e0(param_1 + -0xd8,1);
  __CxxThrowException_8(local_dc,&DAT_03111c84);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall
FUN_00a70770(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2b87;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_3 != 0) {
    param_1_00[0x2e] = &DAT_00da4b78;
    param_1_00[0x30] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a70530(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>_>
                ::vftable;
  param_1_00[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2e] + 4) + 0xb8 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0x2e] + 4) + 0xb4 + (int)param_1_00) =
       *(int *)(param_1_00[0x2e] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xa4;
  }
  FUN_00401200(param_1_00 + 0x29,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * FUN_00a70850(undefined4 *param_1,undefined4 param_2)

{
  FUN_00a6f9b0(param_2);
  param_1[0x29] = boost::exception::vftable;
  param_1[0x2a] = 0;
  param_1[0x2b] = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0xffffffff;
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::unknown_option>::vftable;
  param_1[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>::
       vftable;
  return param_1;
}



undefined4 FUN_00a708b0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a70450(param_2,1);
  return param_1;
}



undefined4 * __thiscall FUN_00a708e0(undefined4 *param_1_00,int param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2b87;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0x2e] = &DAT_00da4b78;
    param_1_00[0x30] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a70530(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>_>
                ::vftable;
  param_1_00[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2e] + 4) + 0xb8 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0x2e] + 4) + 0xb4 + (int)param_1_00) =
       *(int *)(param_1_00[0x2e] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xa4;
  }
  FUN_00401200(param_1_00 + 0x29,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_00a709c0(void)

{
  FUN_00a706a0();
  return;
}



void FUN_00a709d0(void)

{
  FUN_00a70740();
  return;
}



void FUN_00a709e0(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_1b8 [220];
  undefined local_dc [208];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2bbb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_00a703f0(local_dc,param_1,DAT_0323f878 ^ (uint)local_1b8);
  local_4 = 0;
  FUN_00a708b0(local_1b8,uVar2);
  __CxxThrowException_8(local_1b8,&DAT_03111c84);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * __thiscall FUN_00a70a50(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2bff;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0x2e] = &DAT_00da4b78;
    param_1_00[0x30] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a70530(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>_>
                ::vftable;
  param_1_00[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2e] + 4) + 0xb8 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::unknown_option>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0x2e] + 4) + 0xb4 + (int)param_1_00) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_00a70b10(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xc4);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00a70770(param_1 + -0xc0,local_14,1);
    if (iVar2 != 0) {
      ExceptionList = local_c;
      return *(int *)(*(int *)(iVar2 + 0xb8) + 4) + 0xb8 + iVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_00a70bb0(int param_1)

{
  code *pcVar1;
  undefined local_c4 [196];
  
  FUN_00a70a50(param_1 + -0xc0,1);
  __CxxThrowException_8(local_c4,&DAT_03111e10);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00a70be0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a708e0(param_2,1);
  return param_1;
}



void FUN_00a70c10(void)

{
  FUN_00a70bb0();
  return;
}



void FUN_00a70c20(void)

{
  FUN_00a70b10();
  return;
}



undefined4 __thiscall
FUN_00a70c30(int param_1_00,int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  int *piVar6;
  char local_108 [4];
  undefined local_104 [4];
  undefined4 local_100;
  int *local_fc;
  undefined local_f8 [12];
  int local_ec;
  int local_e8;
  undefined local_e0 [12];
  int local_d4;
  int local_d0;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf2c57;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_100 = 0;
  local_fc = (int *)0x0;
  local_4 = 0;
  local_108[0] = '\0';
  FUN_004398f2(DAT_0323f878 ^ (uint)&stack0xfffffee8);
  local_4._0_1_ = 1;
  FUN_004398f2();
  uVar5 = 0;
  local_4._0_1_ = 2;
  piVar6 = (int *)0x0;
  if (*(int *)(param_1_00 + 0x34) - *(int *)(param_1_00 + 0x30) >> 3 != 0) {
    do {
      if ((uint)(*(int *)(param_1_00 + 0x34) - *(int *)(param_1_00 + 0x30) >> 3) <= uVar5) {
        FUN_00a3fb10();
      }
      iVar1 = uVar5 * 8;
      iVar2 = FUN_00a6cb80(param_1,param_2,param_3,param_4);
      if (iVar2 != 0) {
        if (iVar2 == 1) {
          if ((uint)(*(int *)(param_1_00 + 0x34) - *(int *)(param_1_00 + 0x30) >> 3) <= uVar5) {
            FUN_00a3fb10();
          }
          iVar2 = *(int *)(*(int *)(param_1_00 + 0x30) + iVar1);
          if (*(int *)(iVar2 + 0x34) == 0) {
            iVar2 = iVar2 + 4;
          }
          else {
            local_108[0] = '*';
            iVar3 = FUN_004277a0(local_108,0,1);
            iVar2 = iVar2 + 0x20;
            if (iVar3 != -1) {
              iVar2 = param_1;
            }
          }
          FUN_00430aa3(iVar2);
          if ((uint)(*(int *)(param_1_00 + 0x34) - *(int *)(param_1_00 + 0x30) >> 3) <= uVar5) {
            FUN_00a3fb10();
          }
          FUN_008356b0(*(int *)(param_1_00 + 0x30) + iVar1);
          local_108[0] = '\x01';
        }
        else {
          if ((uint)(*(int *)(param_1_00 + 0x34) - *(int *)(param_1_00 + 0x30) >> 3) <= uVar5) {
            FUN_00a3fb10();
          }
          iVar2 = *(int *)(*(int *)(param_1_00 + 0x30) + iVar1);
          if (*(int *)(iVar2 + 0x34) == 0) {
            iVar2 = iVar2 + 4;
          }
          else {
            local_104[0] = 0x2a;
            iVar3 = FUN_004277a0(local_104,0,1);
            iVar2 = iVar2 + 0x20;
            if (iVar3 != -1) {
              iVar2 = param_1;
            }
          }
          FUN_00430aa3(iVar2);
          if (local_108[0] == '\0') {
            if ((uint)(*(int *)(param_1_00 + 0x34) - *(int *)(param_1_00 + 0x30) >> 3) <= uVar5) {
              FUN_00a3fb10();
            }
            FUN_008356b0(*(int *)(param_1_00 + 0x30) + iVar1);
          }
        }
      }
      uVar5 = uVar5 + 1;
      piVar6 = local_fc;
    } while (uVar5 < (uint)(*(int *)(param_1_00 + 0x34) - *(int *)(param_1_00 + 0x30) >> 3));
  }
  uVar5 = (local_d0 - local_d4) / 0x1c;
  if (1 < uVar5) {
    uVar4 = FUN_00a6fd60(local_e0);
    local_4._0_1_ = 3;
    uVar5 = FUN_00a709e0(uVar4);
  }
  if ((uVar5 == 0) && (1 < (uint)((local_e8 - local_ec) / 0x1c))) {
    uVar4 = FUN_00a6fd60(local_f8);
    local_4._0_1_ = 4;
    FUN_00a709e0(uVar4);
  }
  local_4._0_1_ = 1;
  FUN_0042f0c1();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_0042f0c1();
  local_4 = 0xffffffff;
  if (piVar6 != (int *)0x0) {
    LOCK();
    iVar1 = piVar6[1] + -1;
    piVar6[1] = iVar1;
    UNLOCK();
    if (iVar1 == 0) {
      (**(code **)(*piVar6 + 4))();
      LOCK();
      iVar1 = piVar6[2] + -1;
      piVar6[2] = iVar1;
      UNLOCK();
      if (iVar1 == 0) {
        (**(code **)(*piVar6 + 8))();
      }
    }
  }
  ExceptionList = local_c;
  return local_100;
}



void FUN_00a70f00(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_188 [196];
  undefined local_c4 [184];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2c8b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_00a70850(local_c4,param_1,DAT_0323f878 ^ (uint)local_188);
  local_4 = 0;
  FUN_00a70be0(local_188,uVar2);
  __CxxThrowException_8(local_188,&DAT_03111e10);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00a70f70(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_cc [4];
  undefined local_c8;
  int local_b8;
  undefined4 local_b4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2cc6;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)local_cc;
  ExceptionList = &local_c;
  local_b8 = FUN_00a70c30(param_1,param_2,param_3,param_4);
  if (local_b8 == 0) {
    local_b4 = 0xf;
    local_c8 = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_cc,(char *)&PTR_02bd3fc0,0);
    local_4 = 0;
    uVar2 = FUN_00a6fcb0(local_cc);
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_00a70f00(uVar2,uVar1);
  }
  ExceptionList = local_c;
  return;
}



void __fastcall FUN_00a71020(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)param_1[1];
  if (*(char *)((int)piVar2 + 0x29) == '\0') {
    iVar3 = *piVar2;
    if (*(char *)(iVar3 + 0x29) == '\0') {
      cVar1 = *(char *)(*(int *)(iVar3 + 8) + 0x29);
      iVar4 = *(int *)(iVar3 + 8);
      while (cVar1 == '\0') {
        cVar1 = *(char *)(*(int *)(iVar4 + 8) + 0x29);
        iVar3 = iVar4;
        iVar4 = *(int *)(iVar4 + 8);
      }
      param_1[1] = iVar3;
      return;
    }
    piVar2 = (int *)piVar2[1];
    cVar1 = *(char *)((int)piVar2 + 0x29);
    while ((cVar1 == '\0' && (param_1[1] == *piVar2))) {
      param_1[1] = (int)piVar2;
      piVar2 = (int *)piVar2[1];
      cVar1 = *(char *)((int)piVar2 + 0x29);
    }
    if (*(char *)(param_1[1] + 0x29) != '\0') {
      FUN_00a3fb10();
      return;
    }
    param_1[1] = (int)piVar2;
  }
  else {
    iVar3 = piVar2[2];
    param_1[1] = iVar3;
    if (*(char *)(iVar3 + 0x29) != '\0') {
      FUN_00a3fb10();
      return;
    }
  }
  return;
}



void __fastcall FUN_00a710b0(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)param_1[1];
  if (*(char *)((int)piVar2 + 0x39) == '\0') {
    iVar3 = *piVar2;
    if (*(char *)(iVar3 + 0x39) == '\0') {
      cVar1 = *(char *)(*(int *)(iVar3 + 8) + 0x39);
      iVar4 = *(int *)(iVar3 + 8);
      while (cVar1 == '\0') {
        cVar1 = *(char *)(*(int *)(iVar4 + 8) + 0x39);
        iVar3 = iVar4;
        iVar4 = *(int *)(iVar4 + 8);
      }
      param_1[1] = iVar3;
      return;
    }
    piVar2 = (int *)piVar2[1];
    cVar1 = *(char *)((int)piVar2 + 0x39);
    while ((cVar1 == '\0' && (param_1[1] == *piVar2))) {
      param_1[1] = (int)piVar2;
      piVar2 = (int *)piVar2[1];
      cVar1 = *(char *)((int)piVar2 + 0x39);
    }
    if (*(char *)(param_1[1] + 0x39) != '\0') {
      FUN_00a3fb10();
      return;
    }
    param_1[1] = (int)piVar2;
  }
  else {
    iVar3 = piVar2[2];
    param_1[1] = iVar3;
    if (*(char *)(iVar3 + 0x39) != '\0') {
      FUN_00a3fb10();
      return;
    }
  }
  return;
}



void FUN_00a71140(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x3c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 0xe) = 1;
  *(undefined *)((int)puVar1 + 0x39) = 0;
  return;
}



void FUN_00a71180(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)operator_new(0x2c);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
  }
  if (puVar1 + 1 != (undefined4 *)0x0) {
    puVar1[1] = 0;
  }
  if (puVar1 + 2 != (undefined4 *)0x0) {
    puVar1[2] = 0;
  }
  *(undefined *)(puVar1 + 10) = 1;
  *(undefined *)((int)puVar1 + 0x29) = 0;
  return;
}



undefined4 * __thiscall FUN_00a711c0(undefined4 *param_1_00,int **param_1)

{
  int **ppiVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  ppiVar1 = param_1;
  if (*param_1 == (int *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    puVar2 = (undefined4 *)(**(code **)(**param_1 + 8))();
  }
  puVar3 = puVar2;
  if (&param_1 != (int ***)param_1_00) {
    puVar3 = (undefined4 *)*param_1_00;
    *param_1_00 = puVar2;
  }
  if (puVar3 != (undefined4 *)0x0) {
    (**(code **)*puVar3)(1);
  }
  *(undefined *)(param_1_00 + 1) = *(undefined *)(ppiVar1 + 1);
  FUN_008356b0(ppiVar1 + 2);
  return param_1_00;
}



undefined4 * __thiscall FUN_00a71210(int param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  undefined4 *puVar4;
  uint uVar5;
  int *piVar6;
  undefined4 *puVar7;
  undefined4 *local_4;
  
  local_4 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)(undefined4 *)local_4[1] + 0x39) == '\0') {
    uVar1 = *(uint *)(param_1 + 0x18);
    uVar2 = *(uint *)(param_1 + 0x14);
    puVar7 = (undefined4 *)local_4[1];
    do {
      piVar6 = (int *)(param_1 + 4);
      if (0xf < uVar1) {
        piVar6 = (int *)*(int *)(param_1 + 4);
      }
      uVar3 = puVar7[8];
      uVar5 = uVar3;
      if (uVar2 <= uVar3) {
        uVar5 = uVar2;
      }
      if ((uint)puVar7[9] < 0x10) {
        puVar4 = puVar7 + 4;
      }
      else {
        puVar4 = (undefined4 *)puVar7[4];
      }
      uVar5 = FUN_0042a160(puVar4,piVar6,uVar5);
      if (uVar5 == 0) {
        if (uVar2 <= uVar3) {
          uVar5 = (uint)(uVar3 != uVar2);
          goto LAB_00a7127d;
        }
LAB_00a7127f:
        puVar4 = (undefined4 *)puVar7[2];
      }
      else {
LAB_00a7127d:
        if ((int)uVar5 < 0) goto LAB_00a7127f;
        puVar4 = (undefined4 *)*puVar7;
        local_4 = puVar7;
      }
      puVar7 = puVar4;
    } while (*(char *)((int)puVar4 + 0x39) == '\0');
  }
  return local_4;
}



// WARNING: Removing unreachable block (ram,0x00a713c1)

void __thiscall FUN_00a712a0(undefined4 *param_1_00,undefined4 *param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  uint uVar6;
  undefined4 *puVar7;
  int iVar8;
  undefined4 *puVar9;
  uint uVar10;
  undefined4 *puVar11;
  undefined4 *local_18;
  undefined4 *local_10;
  
  local_18 = (undefined4 *)param_1_00[6];
  cVar1 = *(char *)((int)(undefined4 *)local_18[1] + 0x29);
  puVar7 = local_18;
  local_10 = (undefined4 *)local_18[1];
  while (cVar1 == '\0') {
    uVar2 = *(uint *)(param_2 + 0x14);
    if (*(uint *)(param_2 + 0x18) < 0x10) {
      iVar8 = param_2 + 4;
    }
    else {
      iVar8 = *(int *)(param_2 + 4);
    }
    uVar3 = local_10[8];
    uVar6 = uVar3;
    if (uVar2 <= uVar3) {
      uVar6 = uVar2;
    }
    if ((uint)local_10[9] < 0x10) {
      puVar5 = local_10 + 4;
    }
    else {
      puVar5 = (undefined4 *)local_10[4];
    }
    uVar6 = FUN_0042a160(puVar5,iVar8,uVar6);
    if (uVar6 == 0) {
      if (uVar2 <= uVar3) {
        uVar6 = (uint)(uVar3 != uVar2);
        goto LAB_00a7131a;
      }
LAB_00a7131c:
      puVar5 = (undefined4 *)local_10[2];
      local_10 = puVar7;
    }
    else {
LAB_00a7131a:
      if ((int)uVar6 < 0) goto LAB_00a7131c;
      if (*(char *)((int)local_18 + 0x29) != '\0') {
        if ((uint)local_10[9] < 0x10) {
          puVar7 = local_10 + 4;
        }
        else {
          puVar7 = (undefined4 *)local_10[4];
        }
        iVar8 = FUN_00429910(0,uVar2,puVar7,local_10[8]);
        if (iVar8 < 0) {
          local_18 = local_10;
        }
      }
      puVar5 = (undefined4 *)*local_10;
    }
    puVar7 = local_10;
    local_10 = puVar5;
    cVar1 = *(char *)((int)puVar5 + 0x29);
  }
  if (*(char *)((int)local_18 + 0x29) == '\0') {
    puVar5 = (undefined4 *)*local_18;
  }
  else {
    puVar5 = *(undefined4 **)(param_1_00[6] + 4);
  }
  if (*(char *)((int)puVar5 + 0x29) == '\0') {
    uVar2 = *(uint *)(param_2 + 0x14);
    uVar3 = *(uint *)(param_2 + 0x18);
    do {
      uVar6 = puVar5[8];
      if ((uint)puVar5[9] < 0x10) {
        puVar11 = puVar5 + 4;
      }
      else {
        puVar11 = (undefined4 *)puVar5[4];
      }
      uVar10 = uVar2;
      if (uVar6 <= uVar2) {
        uVar10 = uVar6;
      }
      puVar9 = (undefined4 *)(param_2 + 4);
      if (0xf < uVar3) {
        puVar9 = *(undefined4 **)(undefined4 *)(param_2 + 4);
      }
      uVar10 = FUN_0042a160(puVar9,puVar11,uVar10);
      if (uVar10 == 0) {
        if (uVar6 <= uVar2) {
          uVar10 = (uint)(uVar2 != uVar6);
          goto LAB_00a713f1;
        }
LAB_00a713f3:
        puVar11 = (undefined4 *)*puVar5;
        local_18 = puVar5;
      }
      else {
LAB_00a713f1:
        if ((int)uVar10 < 0) goto LAB_00a713f3;
        puVar11 = (undefined4 *)puVar5[2];
      }
      puVar5 = puVar11;
    } while (*(char *)((int)puVar11 + 0x29) == '\0');
  }
  uVar4 = *param_1_00;
  param_1[1] = puVar7;
  *param_1 = uVar4;
  param_1[2] = uVar4;
  param_1[3] = local_18;
  return;
}



void __thiscall FUN_00a71430(int *param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  iVar1 = FUN_00a71210(param_2);
  local_c = iVar1;
  if (param_1_00 == (int *)0x0) {
    FUN_00a3fb10();
  }
  iVar3 = param_1_00[6];
  local_10 = *param_1_00;
  if (*param_1_00 == 0) {
    FUN_00a3fb10();
  }
  if (iVar1 != iVar3) {
    if (*(uint *)(iVar1 + 0x24) < 0x10) {
      iVar3 = iVar1 + 0x10;
    }
    else {
      iVar3 = *(int *)(iVar1 + 0x10);
    }
    iVar1 = FUN_00429910(0,*(undefined4 *)(param_2 + 0x14),iVar3,*(undefined4 *)(iVar1 + 0x20));
    if (-1 < iVar1) {
      piVar2 = &local_10;
      goto LAB_00a714a8;
    }
  }
  local_4 = param_1_00[6];
  local_8 = *param_1_00;
  piVar2 = &local_8;
LAB_00a714a8:
  iVar1 = piVar2[1];
  *param_1 = *piVar2;
  param_1[1] = iVar1;
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00a714c0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            int **param_2)

{
  int *piVar1;
  uint uVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf22d8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 0xf;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  param_1_00[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00,param_1,0,0xffffffff);
  local_4 = 0;
  if (*param_2 == (int *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (**(code **)(**param_2 + 8))(uVar2);
  }
  *(undefined4 *)(param_1_00 + 0x1c) = uVar3;
  param_1_00[0x20] =
       *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
        (param_2 + 1);
  *(int **)(param_1_00 + 0x24) = param_2[2];
  piVar1 = param_2[3];
  *(int **)(param_1_00 + 0x28) = piVar1;
  if (piVar1 != (int *)0x0) {
    LOCK();
    piVar1[1] = piVar1[1] + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return param_1_00;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00a71570(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf22d8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 0xf;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  param_1_00[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00,param_1,0,0xffffffff);
  local_4 = 0;
  if (*(int **)(param_1 + 0x1c) == (int *)0x0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (**(code **)(**(int **)(param_1 + 0x1c) + 8))(uVar2);
  }
  *(undefined4 *)(param_1_00 + 0x1c) = uVar3;
  param_1_00[0x20] = param_1[0x20];
  *(undefined4 *)(param_1_00 + 0x24) = *(undefined4 *)(param_1 + 0x24);
  iVar1 = *(int *)(param_1 + 0x28);
  *(int *)(param_1_00 + 0x28) = iVar1;
  if (iVar1 != 0) {
    LOCK();
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + 1;
    UNLOCK();
  }
  ExceptionList = local_c;
  return param_1_00;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined * __thiscall FUN_00a71610(int param_1_00,undefined4 param_1)

{
  uint uVar1;
  undefined *puVar2;
  int iVar3;
  int *local_14;
  int local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf2cfe;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  if ((DAT_032ebd34 & 1) == 0) {
    DAT_032ebd34 = DAT_032ebd34 | 1;
    local_4 = 0;
    _DAT_032ebd24 = 0;
    DAT_032ebd28 = 0;
    _DAT_032ebd2c = 0;
    _DAT_032ebd30 = 0;
    _atexit((_func_4879 *)&LAB_00c79840);
  }
  local_4 = 0xffffffff;
  FUN_00a71430(&local_14,param_1);
  iVar3 = *(int *)(param_1_00 + 0x20);
  if ((local_14 == (int *)0x0) || (local_14 != *(int **)(param_1_00 + 8))) {
    FUN_00a3fb10(uVar1);
  }
  if (local_10 == iVar3) {
    puVar2 = &DAT_032ebd24;
  }
  else {
    if (local_14 == (int *)0x0) {
      FUN_00a3fb10(uVar1);
      iVar3 = 0;
    }
    else {
      iVar3 = *local_14;
    }
    if (local_10 == *(int *)(iVar3 + 0x18)) {
      FUN_00a3fb10(uVar1);
    }
    puVar2 = (undefined *)(local_10 + 0x28);
  }
  ExceptionList = local_c;
  return puVar2;
}



void ** __fastcall FUN_00a716f0(void **param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2d28;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = param_1;
  }
  *param_1 = puVar2;
  local_4 = 0;
  pvVar3 = (void *)FUN_00a71140(uVar1);
  param_1[6] = pvVar3;
  *(undefined *)((int)pvVar3 + 0x39) = 1;
  *(void **)((int)param_1[6] + 4) = param_1[6];
  *(void **)param_1[6] = param_1[6];
  *(void **)((int)param_1[6] + 8) = param_1[6];
  param_1[7] = (void *)0x0;
  ExceptionList = local_c;
  return param_1;
}



void ** __fastcall FUN_00a71780(void **param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2d28;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = param_1;
  }
  *param_1 = puVar2;
  local_4 = 0;
  pvVar3 = (void *)FUN_00a71180(uVar1);
  param_1[6] = pvVar3;
  *(undefined *)((int)pvVar3 + 0x29) = 1;
  *(void **)((int)param_1[6] + 4) = param_1[6];
  *(void **)param_1[6] = param_1[6];
  *(void **)((int)param_1[6] + 8) = param_1[6];
  param_1[7] = (void *)0x0;
  ExceptionList = local_c;
  return param_1;
}



undefined4 *
FUN_00a71810(undefined4 param_1,undefined4 param_2,undefined4 param_3,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_4,
            undefined param_5)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bf2d61;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_8 = 1;
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    puVar1[9] = 0xf;
    puVar1[8] = 0;
    *(undefined *)(puVar1 + 4) = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (puVar1 + 3),param_4,0,0xffffffff);
    *(undefined *)(puVar1 + 10) = param_5;
    *(undefined *)((int)puVar1 + 0x29) = 0;
  }
  ExceptionList = local_10;
  return puVar1;
}



void Catch_All_00a718a6(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void __thiscall
FUN_00a718c0(undefined4 *param_1_00,undefined4 *param_1,char param_2,int **param_3,
            undefined4 param_4)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  int *piVar4;
  undefined4 uVar5;
  int *piVar6;
  int **ppiVar7;
  int *piVar8;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2db8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (0x9249247 < (uint)param_1_00[7]) {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"map/set<T> too long",0x13);
    local_4 = 0;
    FUN_00417ca0(local_50);
    local_34[0] = std::length_error::vftable;
    __CxxThrowException_8(local_34,&DAT_03115554);
  }
  piVar6 = (int *)FUN_00a71810(param_1_00[6],param_3,param_1_00[6],param_4,0);
  param_1_00[7] = param_1_00[7] + 1;
  if (param_3 == (int **)param_1_00[6]) {
    ((int **)param_1_00[6])[1] = piVar6;
    *(int **)param_1_00[6] = piVar6;
    *(int **)(param_1_00[6] + 8) = piVar6;
  }
  else if (param_2 == '\0') {
    param_3[2] = piVar6;
    if (param_3 == *(int ***)(param_1_00[6] + 8)) {
      *(int **)(param_1_00[6] + 8) = piVar6;
    }
  }
  else {
    *param_3 = piVar6;
    if (param_3 == *(int ***)(int **)param_1_00[6]) {
      *(int **)param_1_00[6] = piVar6;
    }
  }
  cVar1 = *(char *)(piVar6[1] + 0x28);
  piVar8 = piVar6;
  while (cVar1 == '\0') {
    ppiVar7 = (int **)(piVar8 + 1);
    piVar2 = *ppiVar7;
    ppiVar3 = (int **)piVar2[1];
    if (piVar2 == *ppiVar3) {
      piVar4 = ppiVar3[2];
      if (*(char *)(piVar4 + 10) == '\0') {
        *(undefined *)(piVar2 + 10) = 1;
        *(undefined *)(piVar4 + 10) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x28) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)piVar2[2]) {
          FUN_004301a2(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x28) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x28) = 0;
        FUN_004301e4(*(undefined4 *)(piVar8[1] + 4));
      }
    }
    else {
      piVar4 = *ppiVar3;
      if (*(char *)(piVar4 + 10) == '\0') {
        *(undefined *)(piVar2 + 10) = 1;
        *(undefined *)(piVar4 + 10) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x28) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)*piVar2) {
          FUN_004301e4(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x28) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x28) = 0;
        piVar2 = *(int **)(piVar8[1] + 4);
        piVar4 = (int *)piVar2[2];
        piVar2[2] = *piVar4;
        if (*(char *)(*piVar4 + 0x29) == '\0') {
          *(int **)(*piVar4 + 4) = piVar2;
        }
        piVar4[1] = piVar2[1];
        if (piVar2 == (int *)*(int *)(param_1_00[6] + 4)) {
          *(int **)(param_1_00[6] + 4) = piVar4;
        }
        else {
          ppiVar3 = (int **)piVar2[1];
          if (piVar2 == *ppiVar3) {
            *ppiVar3 = piVar4;
          }
          else {
            ppiVar3[2] = piVar4;
          }
        }
        *piVar4 = (int)piVar2;
        piVar2[1] = (int)piVar4;
      }
    }
    cVar1 = *(char *)(piVar8[1] + 0x28);
  }
  *(undefined *)(*(int *)(param_1_00[6] + 4) + 0x28) = 1;
  uVar5 = *param_1_00;
  param_1[1] = piVar6;
  *param_1 = uVar5;
  ExceptionList = local_c;
  return;
}



undefined4 *
FUN_00a71ac0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined param_5)

{
  undefined4 *puVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bf2d91;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  puVar1 = (undefined4 *)operator_new(0x3c);
  local_8 = 1;
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = param_1;
    puVar1[1] = param_2;
    puVar1[2] = param_3;
    FUN_00a71570(param_4);
    *(undefined *)(puVar1 + 0xe) = param_5;
    *(undefined *)((int)puVar1 + 0x39) = 0;
  }
  ExceptionList = local_10;
  return puVar1;
}



void Catch_All_00a71b49(void)

{
  int unaff_EBP;
  
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x14));
}



void __thiscall FUN_00a71b60(int **param_1_00,int **param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  int **ppiVar4;
  uint uVar5;
  int **ppiVar6;
  int iVar7;
  int *piVar8;
  bool bVar9;
  int **local_8;
  int *local_4;
  
  ppiVar6 = (int **)param_1_00[6][1];
  bVar9 = true;
  cVar1 = *(char *)((int)ppiVar6 + 0x29);
  ppiVar4 = (int **)param_1_00[6];
  local_8 = param_1_00;
  while (cVar1 == '\0') {
    uVar2 = (uint)ppiVar6[8];
    if (ppiVar6[9] < 0x10) {
      piVar8 = (int *)(ppiVar6 + 4);
    }
    else {
      piVar8 = ppiVar6[4];
    }
    uVar3 = *(uint *)(param_2 + 0x14);
    uVar5 = uVar3;
    if (uVar2 <= uVar3) {
      uVar5 = uVar2;
    }
    if (*(uint *)(param_2 + 0x18) < 0x10) {
      iVar7 = param_2 + 4;
    }
    else {
      iVar7 = *(int *)(param_2 + 4);
    }
    uVar5 = FUN_0042a160(iVar7,piVar8,uVar5);
    if (uVar5 == 0) {
      if (uVar3 < uVar2) {
        uVar5 = 0xffffffff;
      }
      else {
        uVar5 = (uint)(uVar3 != uVar2);
      }
    }
    bVar9 = (int)uVar5 < 0;
    if (bVar9) {
      piVar8 = *ppiVar6;
    }
    else {
      piVar8 = ppiVar6[2];
    }
    ppiVar4 = ppiVar6;
    ppiVar6 = (int **)piVar8;
    cVar1 = *(char *)((int)piVar8 + 0x29);
  }
  ppiVar6 = (int **)*local_8;
  local_4 = (int *)ppiVar4;
  if (bVar9) {
    piVar8 = (int *)*local_8[6];
    local_8 = ppiVar6;
    if (ppiVar6 == (int **)0x0) {
      FUN_00a3fb10();
    }
    if (ppiVar4 == (int **)piVar8) {
      bVar9 = true;
      goto LAB_00a71c37;
    }
    FUN_00a71020();
    ppiVar6 = local_8;
  }
  local_8 = ppiVar6;
  piVar8 = local_4;
  ppiVar6 = local_8;
  if (*(uint *)(param_2 + 0x18) < 0x10) {
    iVar7 = param_2 + 4;
  }
  else {
    iVar7 = *(int *)(param_2 + 4);
  }
  iVar7 = FUN_00429910(0,local_4[8],iVar7,*(undefined4 *)(param_2 + 0x14));
  if (-1 < iVar7) {
    *param_1 = (int *)ppiVar6;
    param_1[1] = piVar8;
    *(undefined *)(param_1 + 2) = 0;
    return;
  }
LAB_00a71c37:
  ppiVar6 = (int **)FUN_00a718c0(&local_8,bVar9,ppiVar4,param_2);
  piVar8 = ppiVar6[1];
  *param_1 = *ppiVar6;
  param_1[1] = piVar8;
  *(undefined *)(param_1 + 2) = 1;
  return;
}



void __thiscall
FUN_00a71cc0(undefined4 *param_1_00,undefined4 *param_1,char param_2,int **param_3,
            undefined4 param_4)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  int *piVar4;
  undefined4 uVar5;
  int *piVar6;
  int **ppiVar7;
  int *piVar8;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2db8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (0x5d1745b < (uint)param_1_00[7]) {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"map/set<T> too long",0x13);
    local_4 = 0;
    FUN_00417ca0(local_50);
    local_34[0] = std::length_error::vftable;
    __CxxThrowException_8(local_34,&DAT_03115554);
  }
  piVar6 = (int *)FUN_00a71ac0(param_1_00[6],param_3,param_1_00[6],param_4,0);
  param_1_00[7] = param_1_00[7] + 1;
  if (param_3 == (int **)param_1_00[6]) {
    ((int **)param_1_00[6])[1] = piVar6;
    *(int **)param_1_00[6] = piVar6;
    *(int **)(param_1_00[6] + 8) = piVar6;
  }
  else if (param_2 == '\0') {
    param_3[2] = piVar6;
    if (param_3 == *(int ***)(param_1_00[6] + 8)) {
      *(int **)(param_1_00[6] + 8) = piVar6;
    }
  }
  else {
    *param_3 = piVar6;
    if (param_3 == *(int ***)(int **)param_1_00[6]) {
      *(int **)param_1_00[6] = piVar6;
    }
  }
  cVar1 = *(char *)(piVar6[1] + 0x38);
  piVar8 = piVar6;
  while (cVar1 == '\0') {
    ppiVar7 = (int **)(piVar8 + 1);
    piVar2 = *ppiVar7;
    ppiVar3 = (int **)piVar2[1];
    if (piVar2 == *ppiVar3) {
      piVar4 = ppiVar3[2];
      if (*(char *)(piVar4 + 0xe) == '\0') {
        *(undefined *)(piVar2 + 0xe) = 1;
        *(undefined *)(piVar4 + 0xe) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x38) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)piVar2[2]) {
          FUN_004300e1(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x38) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x38) = 0;
        FUN_00430123(*(undefined4 *)(piVar8[1] + 4));
      }
    }
    else {
      piVar4 = *ppiVar3;
      if (*(char *)(piVar4 + 0xe) == '\0') {
        *(undefined *)(piVar2 + 0xe) = 1;
        *(undefined *)(piVar4 + 0xe) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x38) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)*piVar2) {
          FUN_00430123(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x38) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x38) = 0;
        piVar2 = *(int **)(piVar8[1] + 4);
        piVar4 = (int *)piVar2[2];
        piVar2[2] = *piVar4;
        if (*(char *)(*piVar4 + 0x39) == '\0') {
          *(int **)(*piVar4 + 4) = piVar2;
        }
        piVar4[1] = piVar2[1];
        if (piVar2 == (int *)*(int *)(param_1_00[6] + 4)) {
          *(int **)(param_1_00[6] + 4) = piVar4;
        }
        else {
          ppiVar3 = (int **)piVar2[1];
          if (piVar2 == *ppiVar3) {
            *ppiVar3 = piVar4;
          }
          else {
            ppiVar3[2] = piVar4;
          }
        }
        *piVar4 = (int)piVar2;
        piVar2[1] = (int)piVar4;
      }
    }
    cVar1 = *(char *)(piVar8[1] + 0x38);
  }
  *(undefined *)(*(int *)(param_1_00[6] + 4) + 0x38) = 1;
  uVar5 = *param_1_00;
  param_1[1] = piVar6;
  *param_1 = uVar5;
  ExceptionList = local_c;
  return;
}



void FUN_00a71ec0(int *param_1,int param_2,int *param_3,int param_4)

{
  int iVar1;
  undefined local_c [12];
  
  while( true ) {
    if ((param_1 == (int *)0x0) || (param_1 != param_3)) {
      FUN_00a3fb10();
    }
    if (param_2 == param_4) break;
    if (param_1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar1 = 0;
    }
    else {
      iVar1 = *param_1;
    }
    if (param_2 == *(int *)(iVar1 + 0x18)) {
      FUN_00a3fb10();
    }
    FUN_00a71b60(local_c,param_2 + 0xc);
    FUN_0043029d();
  }
  return;
}



void __thiscall FUN_00a71f40(int **param_1_00,int **param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  int **ppiVar4;
  uint uVar5;
  int **ppiVar6;
  int iVar7;
  int *piVar8;
  bool bVar9;
  int **local_8;
  int *local_4;
  
  ppiVar6 = (int **)param_1_00[6][1];
  bVar9 = true;
  cVar1 = *(char *)((int)ppiVar6 + 0x39);
  ppiVar4 = (int **)param_1_00[6];
  local_8 = param_1_00;
  while (cVar1 == '\0') {
    uVar2 = (uint)ppiVar6[8];
    if (ppiVar6[9] < 0x10) {
      piVar8 = (int *)(ppiVar6 + 4);
    }
    else {
      piVar8 = ppiVar6[4];
    }
    uVar3 = *(uint *)(param_2 + 0x14);
    uVar5 = uVar3;
    if (uVar2 <= uVar3) {
      uVar5 = uVar2;
    }
    if (*(uint *)(param_2 + 0x18) < 0x10) {
      iVar7 = param_2 + 4;
    }
    else {
      iVar7 = *(int *)(param_2 + 4);
    }
    uVar5 = FUN_0042a160(iVar7,piVar8,uVar5);
    if (uVar5 == 0) {
      if (uVar3 < uVar2) {
        uVar5 = 0xffffffff;
      }
      else {
        uVar5 = (uint)(uVar3 != uVar2);
      }
    }
    bVar9 = (int)uVar5 < 0;
    if (bVar9) {
      piVar8 = *ppiVar6;
    }
    else {
      piVar8 = ppiVar6[2];
    }
    ppiVar4 = ppiVar6;
    ppiVar6 = (int **)piVar8;
    cVar1 = *(char *)((int)piVar8 + 0x39);
  }
  ppiVar6 = (int **)*local_8;
  local_4 = (int *)ppiVar4;
  if (bVar9) {
    piVar8 = (int *)*local_8[6];
    local_8 = ppiVar6;
    if (ppiVar6 == (int **)0x0) {
      FUN_00a3fb10();
    }
    if (ppiVar4 == (int **)piVar8) {
      bVar9 = true;
      goto LAB_00a72017;
    }
    FUN_00a710b0();
    ppiVar6 = local_8;
  }
  local_8 = ppiVar6;
  piVar8 = local_4;
  ppiVar6 = local_8;
  if (*(uint *)(param_2 + 0x18) < 0x10) {
    iVar7 = param_2 + 4;
  }
  else {
    iVar7 = *(int *)(param_2 + 4);
  }
  iVar7 = FUN_00429910(0,local_4[8],iVar7,*(undefined4 *)(param_2 + 0x14));
  if (-1 < iVar7) {
    *param_1 = (int *)ppiVar6;
    param_1[1] = piVar8;
    *(undefined *)(param_1 + 2) = 0;
    return;
  }
LAB_00a72017:
  ppiVar6 = (int **)FUN_00a71cc0(&local_8,bVar9,ppiVar4,param_2);
  piVar8 = ppiVar6[1];
  *param_1 = *ppiVar6;
  param_1[1] = piVar8;
  *(undefined *)(param_1 + 2) = 1;
  return;
}



undefined4 * __thiscall
FUN_00a720a0(int *param_1_00,undefined4 *param_1,int param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  char cVar2;
  undefined4 *puVar3;
  int local_c;
  int local_8;
  
  if (param_1_00[7] == 0) {
    FUN_00a71cc0(param_1,1,param_1_00[6],param_4);
    return param_1;
  }
  iVar1 = *(int *)param_1_00[6];
  if ((param_2 == 0) || (param_2 != *param_1_00)) {
    FUN_00a3fb10();
  }
  if (param_3 == iVar1) {
    cVar2 = FUN_004316d8(param_4,param_3 + 0xc);
    if (cVar2 != '\0') {
      FUN_00a71cc0(param_1,1,param_3,param_4);
      return param_1;
    }
  }
  else {
    iVar1 = param_1_00[6];
    if ((param_2 == 0) || (param_2 != *param_1_00)) {
      FUN_00a3fb10();
    }
    if (param_3 == iVar1) {
      cVar2 = FUN_004316d8(*(int *)(param_1_00[6] + 8) + 0xc,param_4);
      if (cVar2 != '\0') {
        FUN_00a71cc0(param_1,0,*(undefined4 *)(param_1_00[6] + 8),param_4);
        return param_1;
      }
    }
    else {
      cVar2 = FUN_004316d8(param_4,param_3 + 0xc);
      if (cVar2 != '\0') {
        FUN_00a710b0();
        cVar2 = FUN_004316d8(param_3 + 0xc,param_4);
        if (cVar2 != '\0') {
          if (*(char *)(*(int *)(param_3 + 8) + 0x39) != '\0') {
            FUN_00a71cc0(param_1,0,param_3,param_4);
            return param_1;
          }
          FUN_00a71cc0(param_1,1,param_3,param_4);
          return param_1;
        }
      }
      cVar2 = FUN_004316d8(param_3 + 0xc,param_4);
      if (cVar2 != '\0') {
        local_8 = param_1_00[6];
        local_c = *param_1_00;
        FUN_0043024e();
        cVar2 = FUN_00449367(&local_c);
        if (cVar2 == '\0') {
          cVar2 = FUN_004316d8(param_4,param_3 + 0xc);
          if (cVar2 == '\0') goto LAB_00a722a8;
        }
        if (*(char *)(*(int *)(param_3 + 8) + 0x39) != '\0') {
          FUN_00a71cc0(param_1,0,param_3,param_4);
          return param_1;
        }
        FUN_00a71cc0(param_1,1,param_3,param_4);
        return param_1;
      }
    }
  }
LAB_00a722a8:
  puVar3 = (undefined4 *)FUN_00a71f40(&local_c,param_4);
  *param_1 = *puVar3;
  param_1[1] = puVar3[1];
  return param_1;
}



int * __thiscall FUN_00a722d0(int **param_1_00,int param_1)

{
  uint uVar1;
  int *piVar2;
  int *piVar3;
  int iVar4;
  undefined4 uVar5;
  int **ppiVar6;
  int *piVar7;
  undefined local_50 [4];
  int *local_4c;
  undefined4 local_48;
  undefined local_44;
  undefined4 local_40;
  undefined4 local_3c;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2df0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffa0;
  ExceptionList = &local_c;
  piVar2 = (int *)FUN_00a71210(param_1);
  if (param_1_00 == (int **)0x0) {
    FUN_00a3fb10(uVar1);
  }
  piVar7 = *param_1_00;
  local_4c = param_1_00[6];
  if (piVar7 == (int *)0x0) {
    FUN_00a3fb10(uVar1);
  }
  if (piVar2 != local_4c) {
    if ((uint)piVar2[9] < 0x10) {
      piVar3 = piVar2 + 4;
    }
    else {
      piVar3 = (int *)piVar2[4];
    }
    iVar4 = FUN_00429910(0,*(undefined4 *)(param_1 + 0x14),piVar3,piVar2[8]);
    if (-1 < iVar4) goto LAB_00a723b0;
  }
  local_48 = 0;
  local_44 = 0;
  local_40 = 0;
  local_3c = 0;
  local_4 = 0;
  uVar5 = FUN_00a714c0(param_1,&local_48);
  local_4._0_1_ = 1;
  ppiVar6 = (int **)FUN_00a720a0(local_50,piVar7,piVar2,uVar5);
  piVar7 = *ppiVar6;
  piVar2 = ppiVar6[1];
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_00430536();
  local_4 = 0xffffffff;
  FUN_00430564();
LAB_00a723b0:
  if (piVar7 == (int *)0x0) {
    FUN_00a3fb10();
    iVar4 = 0;
  }
  else {
    iVar4 = *piVar7;
  }
  if (piVar2 == *(int **)(iVar4 + 0x18)) {
    FUN_00a3fb10();
  }
  ExceptionList = local_c;
  return piVar2 + 10;
}



void FUN_00a723f0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  uint uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf29a8;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,"original_token",0xe);
  local_4 = 0;
  this = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
         FUN_00671c6f(local_28);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (this,param_1,0,0xffffffff);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  ExceptionList = local_c;
  return;
}



undefined4 * __fastcall FUN_00a72490(undefined4 *param_1)

{
  undefined local_11;
  undefined4 *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf2e2e;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1 = boost::program_options::abstract_variables_map::vftable;
  param_1[1] = 0;
  local_4 = 0;
  local_10 = param_1;
  FUN_00a716f0(&local_11,&local_11);
  local_4._0_1_ = 1;
  *param_1 = boost::program_options::variables_map::vftable;
  FUN_00a71780(&local_11,&local_11);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00620295(&local_11,&local_11);
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00a72530(undefined4 param_1_00,byte param_1)

{
  FUN_0042eecb();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __thiscall FUN_00a72550(int *param_1_00,undefined4 param_1,int param_3)

{
  (**(code **)(*param_1_00 + 8))(param_1);
  FUN_00a723f0(param_1);
  param_1_00[10] = param_3;
  return;
}



void FUN_00a72580(int param_1,int param_2,undefined4 param_3)

{
  int *piVar1;
  int iVar2;
  char cVar3;
  int **ppiVar4;
  undefined4 uVar5;
  int iVar6;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar7;
  undefined4 *puVar8;
  int iVar9;
  undefined4 *puVar10;
  uint uVar11;
  int *piVar12;
  int iVar13;
  uint uStack_138;
  undefined4 local_128;
  undefined4 *puStack_110;
  undefined local_104 [4];
  int *local_100;
  undefined local_fc [4];
  int *local_f8;
  undefined local_f4 [4];
  int *local_f0;
  int *piStack_ec;
  undefined local_e8 [4];
  undefined4 uStack_e4;
  undefined4 uStack_e0;
  int local_dc;
  int local_d8;
  int local_d4;
  int local_d0;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_cc [4];
  uint local_c8;
  undefined4 local_b8;
  uint local_b4;
  int local_b0;
  int local_ac;
  int local_a8;
  int local_a4;
  int local_a0;
  int iStack_9c;
  int local_98;
  int *local_94;
  uint local_90;
  char local_89;
  uint *local_88;
  void *local_84;
  undefined *puStack_80;
  undefined4 local_7c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_78 [4];
  uint local_74;
  undefined4 local_64;
  uint local_60;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_5c [4];
  uint local_58;
  uint local_48;
  uint local_44;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_40 [4];
  uint local_3c;
  int local_2c;
  uint local_28;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_24 [4];
  uint uStack_20;
  undefined4 local_18;
  undefined local_14;
  int local_10;
  uint local_c;
  uint local_8;
  
  local_7c = 0xffffffff;
  puStack_80 = &LAB_00bf2ef8;
  local_84 = ExceptionList;
  uStack_138 = DAT_0323f878 ^ (uint)local_78;
  local_88 = &uStack_138;
  ExceptionList = &local_84;
  local_94 = (int *)0x0;
  local_a0 = *(undefined4 *)(param_1 + 0x18);
  local_a8 = param_1;
  local_ac = param_2;
  if (param_2 == 0) {
    local_a4 = 0;
  }
  else {
    local_a4 = param_2 + 8;
  }
  local_8 = uStack_138;
  FUN_00a71780(&local_89,&local_89);
  local_28 = 0xf;
  local_2c = 0;
  local_3c = local_3c & 0xffffff00;
  local_60 = 0xf;
  local_64 = 0;
  local_74 = local_74 & 0xffffff00;
  local_7c = 3;
  for (local_90 = 0; local_90 < (uint)((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x54);
      local_90 = local_90 + 1) {
    iVar13 = local_90 * 0x54;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_40,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                         *)(iVar13 + *(int *)(param_1 + 0xc)),0,0xffffffff);
    if ((uint)((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x54) <= local_90) {
      FUN_00a3fb10();
    }
    iVar6 = *(int *)(param_1 + 0xc);
    iVar9 = *(int *)(iVar13 + 0x48 + iVar6) - *(int *)(iVar13 + 0x44 + iVar6);
    iVar2 = iVar9 >> 0x1f;
    if (iVar9 / 0x1c + iVar2 == iVar2) {
      pbVar7 = local_40;
    }
    else {
      if ((uint)((*(int *)(param_1 + 0x10) - iVar6) / 0x54) <= local_90) {
        FUN_00a3fb10();
      }
      iVar6 = *(int *)(param_1 + 0xc);
      iVar9 = *(int *)(iVar6 + 0x48 + iVar13) - *(int *)(iVar6 + 0x44 + iVar13);
      iVar2 = iVar9 >> 0x1f;
      if (iVar9 / 0x1c + iVar2 == iVar2) {
        FUN_00a3fb10();
      }
      pbVar7 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> **)
                (iVar6 + iVar13 + 0x44);
    }
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_78,pbVar7,0,0xffffffff);
    uVar11 = local_90;
    if (local_2c != 0) {
      if ((uint)((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x54) <= local_90) {
        FUN_00a3fb10();
      }
      if (*(char *)(iVar13 + 0x50 + *(int *)(param_1 + 0xc)) == '\0') {
        FUN_00a712a0(&local_dc,local_40);
        local_98 = 0;
        FUN_00a7a290(local_dc,local_d8,local_d4,local_d0,&local_98,local_a8);
        if (local_98 == 0) {
          if ((uint)((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x54) <= uVar11) {
            FUN_00a3fb10();
          }
          iVar6 = *(int *)(param_1 + 0xc);
          iVar9 = *(int *)(iVar13 + 0x48 + iVar6) - *(int *)(iVar13 + 0x44 + iVar6);
          iVar2 = iVar9 >> 0x1f;
          if (iVar9 / 0x1c + iVar2 == iVar2) {
            local_b4 = 0xf;
            local_b8 = 0;
            local_c8 = local_c8 & 0xffffff00;
            std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
            assign(local_cc,(char *)&PTR_02bd3fc0,0);
            local_94 = (int *)((uint)local_94 | 1);
            pbVar7 = local_cc;
            local_7c = CONCAT31(local_7c._1_3_,4);
          }
          else {
            if ((uint)((*(int *)(param_1 + 0x10) - iVar6) / 0x54) <= local_90) {
              FUN_00a3fb10();
            }
            iVar6 = *(int *)(param_1 + 0xc);
            iVar9 = *(int *)(iVar6 + 0x48 + iVar13) - *(int *)(iVar6 + 0x44 + iVar13);
            iVar2 = iVar9 >> 0x1f;
            if (iVar9 / 0x1c + iVar2 == iVar2) {
              FUN_00a3fb10();
            }
            pbVar7 = *(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       **)(iVar6 + iVar13 + 0x44);
          }
          local_44 = 0xf;
          local_48 = 0;
          local_58 = local_58 & 0xffffff00;
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                    (local_5c,pbVar7,0,0xffffffff);
          local_7c = 6;
          if (((uint)local_94 & 1) != 0) {
            local_94 = (int *)((uint)local_94 & 0xfffffffe);
            if (0xf < local_b4) {
                    // WARNING: Subroutine does not return
              FUN_00a3f6a1(local_c8);
            }
            local_b4 = 0xf;
            local_b8 = 0;
            local_c8 = local_c8 & 0xffffff00;
          }
          local_98 = FUN_00a70f70(local_40,0,0,0);
          local_b0 = FUN_00a722d0(local_40);
          if (*(char *)(local_b0 + 4) != '\0') {
            local_18 = 0;
            local_14 = 0;
            local_10 = 0;
            local_c = 0;
            local_7c._0_1_ = 7;
            FUN_00a711c0(&local_18);
            local_7c = CONCAT31(local_7c._1_3_,6);
            FUN_00430564();
          }
          ppiVar4 = (int **)FUN_00a6bb50(local_f4);
          piVar12 = *ppiVar4;
          local_7c._0_1_ = 8;
          if ((uint)((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x54) <= local_90) {
            FUN_00a3fb10();
          }
          (**(code **)(*piVar12 + 0x14))(local_b0,iVar13 + 0x20 + *(int *)(param_1 + 0xc),param_3);
          piVar12 = local_f0;
          local_7c._0_1_ = 6;
          if (local_f0 != (int *)0x0) {
            LOCK();
            iVar13 = local_f0[1] + -1;
            local_f0[1] = iVar13;
            UNLOCK();
            if (iVar13 == 0) {
              (**(code **)(*local_f0 + 4))();
              piVar1 = piVar12 + 2;
              LOCK();
              iVar13 = *piVar1 + -1;
              *piVar1 = iVar13;
              UNLOCK();
              if (iVar13 == 0) {
                (**(code **)(*piVar12 + 8))();
              }
            }
          }
          uVar5 = FUN_00a6bb50(local_104);
          local_7c._0_1_ = 9;
          FUN_008356b0(uVar5);
          piVar12 = local_100;
          local_7c._0_1_ = 6;
          if (local_100 != (int *)0x0) {
            LOCK();
            iVar13 = local_100[1] + -1;
            local_100[1] = iVar13;
            UNLOCK();
            if (iVar13 == 0) {
              (**(code **)(*local_100 + 4))();
              piVar1 = piVar12 + 2;
              LOCK();
              iVar13 = *piVar1 + -1;
              *piVar1 = iVar13;
              UNLOCK();
              if (iVar13 == 0) {
                (**(code **)(*piVar12 + 8))();
              }
            }
          }
          ppiVar4 = (int **)FUN_00a6bb50(local_fc);
          local_7c._0_1_ = 10;
          cVar3 = (**(code **)(**ppiVar4 + 0xc))();
          piVar12 = local_f8;
          local_89 = cVar3 == '\0';
          local_7c = CONCAT31(local_7c._1_3_,6);
          if (local_f8 != (int *)0x0) {
            LOCK();
            iVar13 = local_f8[1] + -1;
            local_f8[1] = iVar13;
            UNLOCK();
            if (iVar13 == 0) {
              (**(code **)(*local_f8 + 4))();
              piVar1 = piVar12 + 2;
              LOCK();
              iVar13 = *piVar1 + -1;
              *piVar1 = iVar13;
              UNLOCK();
              if (iVar13 == 0) {
                (**(code **)(*piVar12 + 8))();
              }
            }
          }
          if (local_89 != '\0') {
            FUN_00a71b60(local_e8,local_40);
          }
          local_7c = CONCAT31(local_7c._1_3_,3);
          if (0xf < local_44) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_58);
          }
        }
      }
    }
  }
  local_7c = 2;
  FUN_00a71ec0(local_128,*puStack_110,local_128,puStack_110);
  iVar13 = FUN_00a6b750();
  uVar11 = 0;
  iVar6 = *(int *)(iVar13 + 0x10) - *(int *)(iVar13 + 0xc) >> 3;
  local_90 = 0;
  local_a0 = iVar13;
  if (iVar6 != 0) {
    if (iVar6 == 0) {
      FUN_00a3fb10();
    }
    do {
      local_b4 = 0xf;
      local_b8 = 0;
      local_c8 = local_c8 & 0xffffff00;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (local_cc,(char *)&PTR_02bd3fc0,0);
      local_7c._0_1_ = 0xc;
      pbVar7 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_00a6be60(local_cc);
      local_c = 0xf;
      local_10 = 0;
      uStack_20 = uStack_20 & 0xffffff00;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (abStack_24,pbVar7,0,0xffffffff);
      local_7c._0_1_ = 0xe;
      if (0xf < local_b4) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_c8);
      }
      local_b4 = 0xf;
      local_b8 = 0;
      local_c8 = local_c8 & 0xffffff00;
      if (local_10 == 0) {
        local_7c = CONCAT31(local_7c._1_3_,2);
        if (0xf < local_c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_20);
        }
      }
      else {
        FUN_0042f5c4(&local_dc,abStack_24);
        iVar13 = local_d0;
        piVar12 = (int *)0x0;
        iStack_9c = local_dc;
        local_98 = local_d8;
        while( true ) {
          if ((iStack_9c == 0) || (iStack_9c != local_d4)) {
            FUN_00a3fb10();
          }
          if (local_98 == iVar13) break;
          piVar12 = (int *)((int)piVar12 + 1);
          FUN_0043024e();
        }
        if (piVar12 == (int *)0x0) {
          local_7c._0_1_ = 0xf;
          local_94 = piVar12;
          ppiVar4 = (int **)FUN_00a6bb50(local_fc);
          local_7c._0_1_ = 0x10;
          cVar3 = (**(code **)(**ppiVar4 + 0x18))(&local_94);
          piVar12 = local_f8;
          local_7c._0_1_ = 0xf;
          if (local_f8 != (int *)0x0) {
            LOCK();
            iVar13 = local_f8[1] + -1;
            local_f8[1] = iVar13;
            UNLOCK();
            if (iVar13 == 0) {
              (**(code **)(*local_f8 + 4))();
              piVar1 = piVar12 + 2;
              LOCK();
              iVar13 = *piVar1 + -1;
              *piVar1 = iVar13;
              UNLOCK();
              if (iVar13 == 0) {
                (**(code **)(*piVar12 + 8))();
              }
            }
          }
          if (cVar3 != '\0') {
            if (local_94 == (int *)0x0) {
              piStack_ec = (int *)0x0;
            }
            else {
              piStack_ec = (int *)(**(code **)(*local_94 + 8))();
            }
            local_e8[0] = 1;
            uStack_e4 = 0;
            uStack_e0 = 0;
            local_7c = CONCAT31(local_7c._1_3_,0x11);
            piVar12 = (int *)FUN_00a722d0(abStack_24);
            if (piStack_ec == (int *)0x0) {
              puVar8 = (undefined4 *)0x0;
            }
            else {
              puVar8 = (undefined4 *)(**(code **)(*piStack_ec + 8))();
            }
            puVar10 = puVar8;
            if (&local_b0 != piVar12) {
              puVar10 = (undefined4 *)*piVar12;
              *piVar12 = (int)puVar8;
            }
            if (puVar10 != (undefined4 *)0x0) {
              (**(code **)*puVar10)(1);
            }
            *(undefined *)(piVar12 + 1) = local_e8[0];
            FUN_008356b0(&uStack_e4);
            local_7c._0_1_ = 0xf;
            FUN_00430564();
            uVar5 = FUN_00a6bb50(local_104);
            local_7c._0_1_ = 0x12;
            FUN_00a722d0(abStack_24);
            FUN_008356b0(uVar5);
            piVar12 = local_100;
            local_7c._0_1_ = 0xf;
            if (local_100 != (int *)0x0) {
              LOCK();
              iVar13 = local_100[1] + -1;
              local_100[1] = iVar13;
              UNLOCK();
              if (iVar13 == 0) {
                (**(code **)(*local_100 + 4))();
                piVar1 = piVar12 + 2;
                LOCK();
                iVar13 = *piVar1 + -1;
                *piVar1 = iVar13;
                UNLOCK();
                if (iVar13 == 0) {
                  (**(code **)(*piVar12 + 8))();
                }
              }
            }
          }
          local_7c._0_1_ = 0xe;
          if (local_94 != (int *)0x0) {
            (**(code **)*local_94)(1);
          }
        }
        ppiVar4 = (int **)FUN_00a6bb50(local_f4);
        local_7c._0_1_ = 0x13;
        cVar3 = (**(code **)(**ppiVar4 + 0x10))();
        piVar12 = local_f0;
        local_7c._0_1_ = 0xe;
        if (local_f0 != (int *)0x0) {
          LOCK();
          iVar13 = local_f0[1] + -1;
          local_f0[1] = iVar13;
          UNLOCK();
          if (iVar13 == 0) {
            (**(code **)(*local_f0 + 4))();
            piVar1 = piVar12 + 2;
            LOCK();
            iVar13 = *piVar1 + -1;
            *piVar1 = iVar13;
            UNLOCK();
            if (iVar13 == 0) {
              (**(code **)(*piVar12 + 8))();
            }
          }
        }
        if (cVar3 != '\0') {
          FUN_00a6d050(local_5c,*(undefined4 *)(local_a8 + 0x1c));
          uVar11 = local_48;
          local_7c._0_1_ = 0x14;
          iVar13 = FUN_00671c6f(abStack_24);
          if (*(uint *)(iVar13 + 0x14) < uVar11) {
            pbVar7 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
                     )FUN_00671c6f(abStack_24);
            std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
            assign(pbVar7,local_5c,0,0xffffffff);
          }
          if (0xf < local_44) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_58);
          }
          local_44 = 0xf;
          local_48 = 0;
          local_58 = local_58 & 0xffffff00;
        }
        local_7c = CONCAT31(local_7c._1_3_,2);
        uVar11 = local_90;
        iVar13 = local_a0;
        if (0xf < local_c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_20);
        }
      }
      uVar11 = uVar11 + 1;
      uStack_20 = uStack_20 & 0xffffff00;
      local_10 = 0;
      local_c = 0xf;
      local_90 = uVar11;
    } while (uVar11 < (uint)(*(int *)(iVar13 + 0x10) - *(int *)(iVar13 + 0xc) >> 3));
  }
  if (0xf < local_60) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_74);
  }
  local_60 = 0xf;
  local_64 = 0;
  local_74 = local_74 & 0xffffff00;
  if (local_28 < 0x10) {
    local_28 = 0xf;
    local_2c = 0;
    local_3c = local_3c & 0xffffff00;
    local_7c = 0xffffffff;
    FUN_0042f1bb();
    ExceptionList = local_84;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_3c);
}



void Catch_00a72a35(void)

{
  code *pcVar1;
  int *piVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar6;
  int **ppiVar7;
  undefined4 uVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  undefined4 *puVar11;
  uint uVar12;
  int unaff_EBP;
  int iVar13;
  
  FUN_00a72550(unaff_EBP + 0x38,unaff_EBP,*(undefined4 *)(*(int *)(unaff_EBP + -0x30) + 0x1c));
  __CxxThrowException_8(0,0);
  uVar8 = **(undefined4 **)(unaff_EBP + -0x98);
  *(undefined4 *)(unaff_EBP + -4) = 2;
  FUN_00a71ec0(*(undefined4 *)(unaff_EBP + -0xb0),uVar8,*(undefined4 *)(unaff_EBP + -0xb0),
               *(undefined4 **)(unaff_EBP + -0x98));
  iVar4 = FUN_00a6b750();
  uVar12 = 0;
  iVar5 = *(int *)(iVar4 + 0x10) - *(int *)(iVar4 + 0xc) >> 3;
  *(int *)(unaff_EBP + -0x28) = iVar4;
  *(undefined4 *)(unaff_EBP + -0x18) = 0;
  if (iVar5 != 0) {
    if (iVar5 == 0) {
      FUN_00a3fb10();
    }
    do {
      *(undefined4 *)(unaff_EBP + -0x3c) = 0xf;
      *(undefined4 *)(unaff_EBP + -0x40) = 0;
      *(undefined *)(unaff_EBP + -0x50) = 0;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 (unaff_EBP + -0x54),(char *)&PTR_02bd3fc0,0);
      *(undefined *)(unaff_EBP + -4) = 0xc;
      pbVar6 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_00a6be60(unaff_EBP + -0x54);
      *(undefined4 *)(unaff_EBP + 0x6c) = 0xf;
      *(undefined4 *)(unaff_EBP + 0x68) = 0;
      *(undefined *)(unaff_EBP + 0x58) = 0;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                 (unaff_EBP + 0x54),pbVar6,0,0xffffffff);
      *(undefined *)(unaff_EBP + -4) = 0xe;
      if (0xf < *(uint *)(unaff_EBP + -0x3c)) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + -0x50));
      }
      *(undefined4 *)(unaff_EBP + -0x3c) = 0xf;
      *(undefined4 *)(unaff_EBP + -0x40) = 0;
      *(undefined *)(unaff_EBP + -0x50) = 0;
      if (*(int *)(unaff_EBP + 0x68) == 0) {
        *(undefined *)(unaff_EBP + -4) = 2;
        if (0xf < *(uint *)(unaff_EBP + 0x6c)) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 0x58));
        }
      }
      else {
        FUN_0042f5c4(unaff_EBP + -100,unaff_EBP + 0x54);
        iVar4 = *(int *)(unaff_EBP + -100);
        iVar5 = *(int *)(unaff_EBP + -0x58);
        iVar13 = 0;
        *(int *)(unaff_EBP + -0x24) = iVar4;
        *(undefined4 *)(unaff_EBP + -0x20) = *(undefined4 *)(unaff_EBP + -0x60);
        while( true ) {
          if ((iVar4 == 0) || (iVar4 != *(int *)(unaff_EBP + -0x5c))) {
            FUN_00a3fb10();
          }
          if (*(int *)(unaff_EBP + -0x20) == iVar5) break;
          iVar13 = iVar13 + 1;
          FUN_0043024e();
          iVar4 = *(int *)(unaff_EBP + -0x24);
        }
        if (iVar13 == 0) {
          *(undefined4 *)(unaff_EBP + -0x1c) = 0;
          *(undefined *)(unaff_EBP + -4) = 0xf;
          ppiVar7 = (int **)FUN_00a6bb50(unaff_EBP + -0x84);
          pcVar1 = *(code **)(**ppiVar7 + 0x18);
          *(undefined *)(unaff_EBP + -4) = 0x10;
          cVar3 = (*pcVar1)(unaff_EBP + -0x1c);
          piVar2 = *(int **)(unaff_EBP + -0x80);
          *(undefined *)(unaff_EBP + -4) = 0xf;
          if (piVar2 != (int *)0x0) {
            LOCK();
            iVar4 = piVar2[1] + -1;
            piVar2[1] = iVar4;
            UNLOCK();
            if (iVar4 == 0) {
              (**(code **)(*piVar2 + 4))();
              LOCK();
              iVar4 = piVar2[2] + -1;
              piVar2[2] = iVar4;
              UNLOCK();
              if (iVar4 == 0) {
                (**(code **)(*piVar2 + 8))();
              }
            }
          }
          if (cVar3 != '\0') {
            if (*(int **)(unaff_EBP + -0x1c) == (int *)0x0) {
              *(undefined4 *)(unaff_EBP + -0x74) = 0;
            }
            else {
              uVar8 = (**(code **)(**(int **)(unaff_EBP + -0x1c) + 8))();
              *(undefined4 *)(unaff_EBP + -0x74) = uVar8;
            }
            *(undefined *)(unaff_EBP + -0x70) = 1;
            *(undefined4 *)(unaff_EBP + -0x6c) = 0;
            *(undefined4 *)(unaff_EBP + -0x68) = 0;
            *(undefined *)(unaff_EBP + -4) = 0x11;
            puVar9 = (undefined4 *)FUN_00a722d0(unaff_EBP + 0x54);
            if (*(int **)(unaff_EBP + -0x74) == (int *)0x0) {
              puVar10 = (undefined4 *)0x0;
            }
            else {
              puVar10 = (undefined4 *)(**(code **)(**(int **)(unaff_EBP + -0x74) + 8))();
            }
            puVar11 = puVar10;
            if ((undefined4 *)(unaff_EBP + -0x38) != puVar9) {
              puVar11 = (undefined4 *)*puVar9;
              *puVar9 = puVar10;
            }
            if (puVar11 != (undefined4 *)0x0) {
              (**(code **)*puVar11)(1);
            }
            *(undefined *)(puVar9 + 1) = *(undefined *)(unaff_EBP + -0x70);
            FUN_008356b0(unaff_EBP + -0x6c);
            *(undefined *)(unaff_EBP + -4) = 0xf;
            FUN_00430564();
            uVar8 = FUN_00a6bb50(unaff_EBP + -0x8c);
            *(undefined *)(unaff_EBP + -4) = 0x12;
            FUN_00a722d0(unaff_EBP + 0x54);
            FUN_008356b0(uVar8);
            piVar2 = *(int **)(unaff_EBP + -0x88);
            *(undefined *)(unaff_EBP + -4) = 0xf;
            if (piVar2 != (int *)0x0) {
              LOCK();
              iVar4 = piVar2[1] + -1;
              piVar2[1] = iVar4;
              UNLOCK();
              if (iVar4 == 0) {
                (**(code **)(*piVar2 + 4))();
                LOCK();
                iVar4 = piVar2[2] + -1;
                piVar2[2] = iVar4;
                UNLOCK();
                if (iVar4 == 0) {
                  (**(code **)(*piVar2 + 8))();
                }
              }
            }
          }
          *(undefined *)(unaff_EBP + -4) = 0xe;
          if (*(undefined4 **)(unaff_EBP + -0x1c) != (undefined4 *)0x0) {
            (**(code **)**(undefined4 **)(unaff_EBP + -0x1c))(1);
          }
        }
        ppiVar7 = (int **)FUN_00a6bb50(unaff_EBP + -0x7c);
        pcVar1 = *(code **)(**ppiVar7 + 0x10);
        *(undefined *)(unaff_EBP + -4) = 0x13;
        cVar3 = (*pcVar1)();
        piVar2 = *(int **)(unaff_EBP + -0x78);
        *(undefined *)(unaff_EBP + -4) = 0xe;
        if (piVar2 != (int *)0x0) {
          LOCK();
          iVar4 = piVar2[1] + -1;
          piVar2[1] = iVar4;
          UNLOCK();
          if (iVar4 == 0) {
            (**(code **)(*piVar2 + 4))();
            LOCK();
            iVar4 = piVar2[2] + -1;
            piVar2[2] = iVar4;
            UNLOCK();
            if (iVar4 == 0) {
              (**(code **)(*piVar2 + 8))();
            }
          }
        }
        if (cVar3 != '\0') {
          FUN_00a6d050(unaff_EBP + 0x1c,*(undefined4 *)(*(int *)(unaff_EBP + -0x30) + 0x1c));
          uVar12 = *(uint *)(unaff_EBP + 0x30);
          *(undefined *)(unaff_EBP + -4) = 0x14;
          iVar4 = FUN_00671c6f(unaff_EBP + 0x54);
          if (*(uint *)(iVar4 + 0x14) < uVar12) {
            pbVar6 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
                     )FUN_00671c6f(unaff_EBP + 0x54);
            std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
            assign(pbVar6,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                           *)(unaff_EBP + 0x1c),0,0xffffffff);
          }
          if (0xf < *(uint *)(unaff_EBP + 0x34)) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 0x20));
          }
          *(undefined4 *)(unaff_EBP + 0x34) = 0xf;
          *(undefined4 *)(unaff_EBP + 0x30) = 0;
          *(undefined *)(unaff_EBP + 0x20) = 0;
        }
        *(undefined *)(unaff_EBP + -4) = 2;
        if (0xf < *(uint *)(unaff_EBP + 0x6c)) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 0x58));
        }
        iVar4 = *(int *)(unaff_EBP + -0x28);
        uVar12 = *(uint *)(unaff_EBP + -0x18);
      }
      iVar5 = *(int *)(iVar4 + 0x10);
      iVar13 = *(int *)(iVar4 + 0xc);
      uVar12 = uVar12 + 1;
      *(undefined *)(unaff_EBP + 0x58) = 0;
      *(undefined4 *)(unaff_EBP + 0x68) = 0;
      *(undefined4 *)(unaff_EBP + 0x6c) = 0xf;
      *(uint *)(unaff_EBP + -0x18) = uVar12;
    } while (uVar12 < (uint)(iVar5 - iVar13 >> 3));
  }
  if (0xf < *(uint *)(unaff_EBP + 0x18)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 4));
  }
  *(undefined4 *)(unaff_EBP + 0x18) = 0xf;
  *(undefined4 *)(unaff_EBP + 0x14) = 0;
  *(undefined *)(unaff_EBP + 4) = 0;
  if (0xf < *(uint *)(unaff_EBP + 0x50)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(*(undefined4 *)(unaff_EBP + 0x3c));
  }
  *(undefined4 *)(unaff_EBP + 0x50) = 0xf;
  *(undefined4 *)(unaff_EBP + 0x4c) = 0;
  *(undefined *)(unaff_EBP + 0x3c) = 0;
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_0042f1bb();
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  ___security_check_cookie_4();
  return;
}



void FUN_00a72e70(int param_1,undefined4 param_2)

{
  FUN_00a72580(param_1 + 0x1c,param_2,1);
  return;
}



undefined4 * __thiscall FUN_00a72e90(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_44 [4];
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2f38;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffb0;
  ExceptionList = &local_c;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,(char *)&PTR_02bd3fc0,0);
  local_4 = 0;
  local_2c = 0xf;
  local_30 = 0;
  local_40 = local_40 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_44,"the option \'%canonical_option%\' is required but missing",0x37);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00a7c150(local_44,local_28,param_1,0);
  if (0xf < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40,uVar1);
  }
  local_2c = 0xf;
  local_30 = 0;
  local_40 = local_40 & 0xffffff00;
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  *param_1_00 = boost::program_options::required_option::vftable;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00a72f70(undefined4 *param_1)

{
  *param_1 = boost::program_options::required_option::vftable;
  FUN_00a6fb20();
  return;
}



undefined4 * __thiscall FUN_00a72f80(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::program_options::required_option::vftable;
  FUN_00a6fb20();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00a72fd0(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::required_option>::vftable;
  param_1[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::required_option>::
       vftable;
  param_1[0x29] = boost::exception::vftable;
  if ((int *)param_1[0x2a] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2a] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2a] = 0;
    }
  }
  *param_1 = boost::program_options::required_option::vftable;
  FUN_00a6fb20();
  return;
}



void FUN_00a73020(void)

{
  FUN_00a731e0();
  return;
}



void __fastcall FUN_00a73030(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::required_option>_>
             ::vftable;
  param_1[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::required_option>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1[0x2e] + 4) + 0xb8 + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::required_option>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0x2e] + 4) + 0xb4 + (int)param_1) = *(int *)(param_1[0x2e] + 4) + -8;
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::required_option>::vftable;
  param_1[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::required_option>::
       vftable;
  param_1[0x29] = boost::exception::vftable;
  if ((int *)param_1[0x2a] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2a] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2a] = 0;
    }
  }
  *param_1 = boost::program_options::required_option::vftable;
  FUN_00a6fb20();
  return;
}



void FUN_00a730c0(void)

{
  FUN_00a731b0();
  return;
}



void FUN_00a730d0(void)

{
  FUN_00a731b0();
  return;
}



void __fastcall FUN_00a730e0(int param_1)

{
  FUN_00a73030();
  *(undefined ***)(param_1 + 0xc0) = boost::exception_detail::clone_base::vftable;
  return;
}



undefined4 * __thiscall FUN_00a73100(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2f68;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_00a6f9b0(param_1);
  *param_1_00 = boost::program_options::required_option::vftable;
  local_4 = 0;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xa4;
  }
  param_1_00[0x29] = boost::exception::vftable;
  piVar1 = *(int **)(param_1 + 4);
  param_1_00[0x2a] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 0xc))(uVar2);
  }
  param_1_00[0x2b] = *(undefined4 *)(param_1 + 8);
  param_1_00[0x2c] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[0x2d] = *(undefined4 *)(param_1 + 0x10);
  *param_1_00 = boost::exception_detail::
                error_info_injector<class_boost::program_options::required_option>::vftable;
  param_1_00[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::required_option>::
       vftable;
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_00a731b0(int param_1_00,byte param_1)

{
  FUN_00a73030();
  *(undefined ***)(param_1_00 + 0xc0) = boost::exception_detail::clone_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00a731e0(undefined4 *param_1,byte param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::required_option>::vftable;
  param_1[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::required_option>::
       vftable;
  param_1[0x29] = boost::exception::vftable;
  if ((int *)param_1[0x2a] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2a] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2a] = 0;
    }
  }
  *param_1 = boost::program_options::required_option::vftable;
  FUN_00a6fb20();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 * __thiscall
FUN_00a73240(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2fb7;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_3 != 0) {
    param_1_00[0x2e] = &DAT_00da4b78;
    param_1_00[0x30] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a73100(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::required_option>_>
                ::vftable;
  param_1_00[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::required_option>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2e] + 4) + 0xb8 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::required_option>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0x2e] + 4) + 0xb4 + (int)param_1_00) =
       *(int *)(param_1_00[0x2e] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xa4;
  }
  FUN_00401200(param_1_00 + 0x29,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * FUN_00a73320(undefined4 *param_1,undefined4 param_2)

{
  FUN_00a6f9b0(param_2);
  param_1[0x29] = boost::exception::vftable;
  param_1[0x2a] = 0;
  param_1[0x2b] = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0xffffffff;
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::required_option>::vftable;
  param_1[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::required_option>::
       vftable;
  return param_1;
}



undefined4 * __thiscall FUN_00a73380(undefined4 *param_1_00,int param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2fb7;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0x2e] = &DAT_00da4b78;
    param_1_00[0x30] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a73100(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::required_option>_>
                ::vftable;
  param_1_00[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::required_option>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2e] + 4) + 0xb8 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::required_option>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0x2e] + 4) + 0xb4 + (int)param_1_00) =
       *(int *)(param_1_00[0x2e] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xa4;
  }
  FUN_00401200(param_1_00 + 0x29,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00a73460(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2bff;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0x2e] = &DAT_00da4b78;
    param_1_00[0x30] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a73100(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::required_option>_>
                ::vftable;
  param_1_00[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::required_option>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2e] + 4) + 0xb8 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::required_option>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0x2e] + 4) + 0xb4 + (int)param_1_00) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_00a73520(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xc4);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00a73240(param_1 + -0xc0,local_14,1);
    if (iVar2 != 0) {
      ExceptionList = local_c;
      return *(int *)(*(int *)(iVar2 + 0xb8) + 4) + 0xb8 + iVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_00a735c0(int param_1)

{
  code *pcVar1;
  undefined local_c4 [196];
  
  FUN_00a73460(param_1 + -0xc0,1);
  __CxxThrowException_8(local_c4,&DAT_031122d4);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00a735f0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a73380(param_2,1);
  return param_1;
}



void FUN_00a73620(void)

{
  FUN_00a735c0();
  return;
}



void FUN_00a73630(void)

{
  FUN_00a73520();
  return;
}



void FUN_00a73640(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_188 [196];
  undefined local_c4 [184];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2feb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_00a73320(local_c4,param_1,DAT_0323f878 ^ (uint)local_188);
  local_4 = 0;
  FUN_00a735f0(local_188,uVar2);
  __CxxThrowException_8(local_188,&DAT_031122d4);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_00a736b0(int *param_1)

{
  int iVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  uint uVar5;
  int iVar6;
  int **ppiVar7;
  undefined4 uVar8;
  int *piVar9;
  undefined local_c4 [176];
  void *local_14;
  undefined *puStack_10;
  undefined4 local_c;
  
  local_c = 0xffffffff;
  puStack_10 = &LAB_00bf301b;
  local_14 = ExceptionList;
  uVar5 = DAT_0323f878 ^ (uint)&stack0xffffff18;
  ExceptionList = &local_14;
  iVar1 = *(int *)param_1[0x18];
  piVar2 = (int *)param_1[0x12];
  while( true ) {
    iVar6 = param_1[0x18];
    if ((piVar2 == (int *)0x0) || (piVar2 != (int *)param_1[0x12])) {
      FUN_00a3fb10(uVar5);
    }
    piVar9 = param_1;
    if (iVar1 == iVar6) goto LAB_00a737dd;
    if (piVar2 == (int *)0x0) {
      FUN_00a3fb10(uVar5);
      iVar6 = 0;
    }
    else {
      iVar6 = *piVar2;
    }
    if (iVar1 == *(int *)(iVar6 + 0x18)) {
      FUN_00a3fb10(uVar5);
    }
    if (piVar2 == (int *)0x0) {
      FUN_00a3fb10(uVar5);
      iVar6 = 0;
    }
    else {
      iVar6 = *piVar2;
    }
    if (iVar1 == *(int *)(iVar6 + 0x18)) {
      FUN_00a3fb10();
    }
    ppiVar7 = (int **)FUN_00a71430(local_c4,iVar1 + 0xc);
    piVar3 = *ppiVar7;
    piVar9 = (int *)param_1[8];
    piVar4 = ppiVar7[1];
    if ((piVar3 == (int *)0x0) || (piVar3 != (int *)param_1[2])) {
      FUN_00a3fb10();
    }
    if (piVar4 == piVar9) break;
    if (piVar3 == (int *)0x0) {
      FUN_00a3fb10();
      iVar6 = 0;
    }
    else {
      iVar6 = *piVar3;
    }
    if (piVar4 == *(int **)(iVar6 + 0x18)) {
      FUN_00a3fb10();
    }
    if (piVar4[10] == 0) break;
    FUN_0042fa91();
  }
  uVar8 = FUN_00a72e90(iVar1 + 0x28);
  local_c = 0;
  FUN_00a73640(uVar8);
LAB_00a737dd:
  iVar1 = *(int *)piVar9[8];
  piVar2 = (int *)piVar9[2];
  while( true ) {
    iVar6 = piVar9[8];
    if ((piVar2 == (int *)0x0) || (piVar2 != (int *)piVar9[2])) {
      FUN_00a3fb10(uVar5);
    }
    if (iVar1 == iVar6) break;
    if (piVar2 == (int *)0x0) {
      FUN_00a3fb10();
      iVar6 = 0;
    }
    else {
      iVar6 = *piVar2;
    }
    if (iVar1 == *(int *)(iVar6 + 0x18)) {
      FUN_00a3fb10();
    }
    if (*(int *)(iVar1 + 0x30) != 0) {
      if (piVar2 == (int *)0x0) {
        FUN_00a3fb10();
        iVar6 = 0;
      }
      else {
        iVar6 = *piVar2;
      }
      if (iVar1 == *(int *)(iVar6 + 0x18)) {
        FUN_00a3fb10();
      }
      piVar3 = *(int **)(iVar1 + 0x30);
      if (piVar2 == (int *)0x0) {
        FUN_00a3fb10();
        iVar6 = 0;
      }
      else {
        iVar6 = *piVar2;
      }
      if (iVar1 == *(int *)(iVar6 + 0x18)) {
        FUN_00a3fb10();
      }
      (**(code **)(*piVar3 + 0x1c))(iVar1 + 0x28);
    }
    FUN_0043024e();
  }
  ExceptionList = local_14;
  return;
}



void FUN_00a73890(void)

{
  FUN_00a736b0();
  return;
}



void __fastcall FUN_00a738a0(int param_1)

{
  *(undefined *)(param_1 + 0x1c) = 1;
  return;
}



void __thiscall FUN_00a738b0(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x20) = param_1;
  return;
}



undefined4 __fastcall FUN_00a738c0(int param_1)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1 + 0x18);
  if ((uVar1 & 1) != 0) {
    return 1;
  }
  if ((uVar1 & 0x1000) != 0) {
    return 0x1000;
  }
  if (((uVar1 & 2) != 0) && ((uVar1 & 4) != 0)) {
    return 4;
  }
  if (((uVar1 & 2) != 0) && ((uVar1 & 8) != 0)) {
    return 8;
  }
  return 0;
}



void __thiscall FUN_00a73900(uint *param_1_00,uint *param_1)

{
  uint uVar1;
  
  uVar1 = *param_1;
  if (uVar1 != 0) {
    *param_1_00 = uVar1;
    if ((uVar1 & 1) != 0) {
      param_1_00[2] = param_1[2];
      param_1_00[3] = param_1[3];
      param_1_00[4] = param_1[4];
      param_1_00[5] = param_1[5];
      param_1_00[6] = param_1[6];
      param_1_00[7] = param_1[7];
      return;
    }
    (**(code **)(uVar1 & 0xfffffffe))(param_1 + 2,param_1_00 + 2,0);
  }
  return;
}



void FUN_00a73950(char *param_1)

{
  code *pcVar1;
  char *pcVar2;
  undefined **local_c [3];
  
  if (param_1 == (char *)0x0) {
    pcVar2 = (char *)0x0;
  }
  else {
    pcVar2 = param_1;
    if ((uint)(0xffffffff / ZEXT48(param_1)) < 0x20) {
      param_1 = (char *)0x0;
      std::exception::exception((exception *)local_c,&param_1);
      local_c[0] = std::bad_alloc::vftable;
      __CxxThrowException_8(local_c,&DAT_031153a4);
      pcVar1 = (code *)swi(3);
      (*pcVar1)();
      return;
    }
  }
  operator_new((int)pcVar2 << 5);
  return;
}



uint * __thiscall FUN_00a73a20(uint *param_1_00,uint *param_1)

{
  uint uVar1;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bf3040;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  if (param_1 != param_1_00) {
    uVar1 = *param_1_00;
    if (uVar1 != 0) {
      if ((uVar1 & 1) == 0) {
        if (*(code **)(uVar1 & 0xfffffffe) != (code *)0x0) {
          (**(code **)(uVar1 & 0xfffffffe))(param_1_00 + 2,param_1_00 + 2,2);
        }
      }
      *param_1_00 = 0;
    }
    local_8 = 0;
    FUN_00a73900(param_1);
  }
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_00a73aa1(void)

{
  code *pcVar1;
  int unaff_EBP;
  
  **(undefined4 **)(unaff_EBP + -0x14) = 0;
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00a73ac0(int param_1,int param_2,undefined4 param_3)

{
  if (param_1 != param_2) {
    do {
      FUN_00a73a20(param_3);
      param_1 = param_1 + 0x20;
    } while (param_1 != param_2);
  }
  return;
}



void __fastcall FUN_00a73b20(undefined4 *param_1)

{
  *param_1 = std::logic_error::vftable;
  if (0xf < (uint)param_1[9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[4]);
  }
  param_1[9] = 0xf;
  param_1[8] = 0;
  *(undefined *)(param_1 + 4) = 0;
  exception::~exception((exception *)param_1);
  return;
}



undefined4 __thiscall
FUN_00a73b60(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,undefined4 param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            uint param_3)

{
  uint uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  uVar1 = *(uint *)(param_1_00 + 0x18);
  puVar3 = (undefined4 *)(param_1_00 + 4);
  puVar4 = puVar3;
  if (0xf < uVar1) {
    puVar4 = (undefined4 *)*puVar3;
  }
  if (puVar4 != (undefined4 *)0x0) {
    puVar2 = puVar3;
    if (0xf < uVar1) {
      puVar2 = (undefined4 *)*puVar3;
    }
    if (puVar2 <= puVar4) {
      puVar2 = puVar3;
      if (0xf < uVar1) {
        puVar2 = (undefined4 *)*puVar3;
      }
      if (puVar4 <= (undefined4 *)(*(int *)(param_1_00 + 0x14) + (int)puVar2)) goto LAB_00a73ba6;
    }
  }
  FUN_00a3fb10();
LAB_00a73ba6:
  if (param_3 != 0) {
    if ((param_2 !=
         (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)0xfffffffc)
       && ((param_2 ==
            (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)0x0 ||
           (param_2 != param_1_00)))) {
      FUN_00a3fb10();
    }
    param_3 = param_3 - (int)puVar4;
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
            (param_1_00,param_3,1);
  if (0xf < *(uint *)(param_1_00 + 0x18)) {
    puVar3 = (undefined4 *)*puVar3;
  }
  FUN_00425c20((int)puVar3 + param_3,param_1_00);
  return param_1;
}



int __thiscall FUN_00a73c00(int param_1_00,uint param_1,int param_2,uint param_3,uint param_4)

{
  undefined4 *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  
  if ((*(uint *)(param_1_00 + 0x14) < param_1) || (*(uint *)(param_2 + 0x14) < param_3)) {
    std::_String_base::_Xran();
  }
  uVar2 = *(int *)(param_2 + 0x14) - param_3;
  if (uVar2 < param_4) {
    param_4 = uVar2;
  }
  if (-*(int *)(param_1_00 + 0x14) - 1U <= param_4) {
    std::_String_base::_Xlen();
  }
  if (param_4 != 0) {
    uVar2 = *(int *)(param_1_00 + 0x14) + param_4;
    if (uVar2 == 0xffffffff) {
      std::_String_base::_Xlen();
    }
    if (*(uint *)(param_1_00 + 0x18) < uVar2) {
      FUN_00401af2(uVar2,*(undefined4 *)(param_1_00 + 0x14));
    }
    else if (uVar2 == 0) {
      *(undefined4 *)(param_1_00 + 0x14) = 0;
      if (0xf < *(uint *)(param_1_00 + 0x18)) {
        **(undefined **)(param_1_00 + 4) = 0;
        return param_1_00;
      }
      *(undefined *)(param_1_00 + 4) = 0;
      return param_1_00;
    }
    if (uVar2 != 0) {
      puVar3 = (undefined4 *)(param_1_00 + 4);
      puVar1 = puVar3;
      if (0xf < *(uint *)(param_1_00 + 0x18)) {
        puVar1 = (undefined4 *)*puVar3;
        puVar3 = (undefined4 *)*puVar3;
      }
      _memmove_s((void *)((int)puVar3 + param_4 + param_1),
                 (*(uint *)(param_1_00 + 0x18) - param_1) - param_4,(void *)((int)puVar1 + param_1),
                 *(int *)(param_1_00 + 0x14) - param_1);
      if (param_1_00 == param_2) {
        if (param_1 < param_3) {
          param_3 = param_3 + param_4;
        }
        puVar3 = (undefined4 *)(param_1_00 + 4);
        puVar1 = puVar3;
        if (0xf < *(uint *)(param_1_00 + 0x18)) {
          puVar1 = (undefined4 *)*puVar3;
          puVar3 = (undefined4 *)*puVar3;
        }
        _memmove_s((void *)((int)puVar3 + param_1),*(uint *)(param_1_00 + 0x18) - param_1,
                   (void *)((int)puVar1 + param_3),param_4);
      }
      else {
        if (*(uint *)(param_2 + 0x18) < 0x10) {
          param_2 = param_2 + 4;
        }
        else {
          param_2 = *(int *)(param_2 + 4);
        }
        puVar3 = (undefined4 *)(param_1_00 + 4);
        if (0xf < *(uint *)(param_1_00 + 0x18)) {
          puVar3 = (undefined4 *)*puVar3;
        }
        _memcpy_s((void *)((int)puVar3 + param_1),*(uint *)(param_1_00 + 0x18) - param_1,
                  (void *)(param_2 + param_3),param_4);
      }
      puVar3 = (undefined4 *)(param_1_00 + 4);
      *(uint *)(param_1_00 + 0x14) = uVar2;
      if (0xf < *(uint *)(param_1_00 + 0x18)) {
        puVar3 = (undefined4 *)*puVar3;
      }
      *(undefined *)(uVar2 + (int)puVar3) = 0;
    }
  }
  return param_1_00;
}



void __fastcall FUN_00a73d70(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::too_many_positional_options_error>::
             vftable;
  param_1[10] = boost::exception_detail::
                error_info_injector<class_boost::program_options::too_many_positional_options_error>
                ::vftable;
  param_1[10] = boost::exception::vftable;
  if ((int *)param_1[0xb] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0xb] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0xb] = 0;
    }
  }
  *param_1 = std::logic_error::vftable;
  if (0xf < (uint)param_1[9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[4]);
  }
  param_1[9] = 0xf;
  param_1[8] = 0;
  *(undefined *)(param_1 + 4) = 0;
  exception::~exception((exception *)param_1);
  return;
}



void FUN_00a73de0(void)

{
  FUN_00a74180();
  return;
}



void FUN_00a73df0(void)

{
  FUN_00a74130();
  return;
}



void FUN_00a73e00(void)

{
  FUN_00a74130();
  return;
}



void FUN_00a73e10(uint *param_1)

{
  uint uVar1;
  
  uVar1 = *param_1;
  if (uVar1 != 0) {
    if ((uVar1 & 1) == 0) {
      if (*(code **)(uVar1 & 0xfffffffe) != (code *)0x0) {
        (**(code **)(uVar1 & 0xfffffffe))(param_1 + 2,param_1 + 2,2);
      }
    }
    *param_1 = 0;
  }
  return;
}



uint * FUN_00a73e40(uint *param_1,uint *param_2,uint *param_3)

{
  uint uVar1;
  void *local_10;
  undefined *puStack_c;
  undefined local_8;
  undefined3 uStack_7;
  
  puStack_c = &LAB_00bf3071;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  uStack_7 = 0;
  do {
    while( true ) {
      if (param_1 == param_2) {
        ExceptionList = local_10;
        return param_3;
      }
      local_8 = 1;
      if (param_3 != (uint *)0x0) break;
LAB_00a73ec9:
      param_3 = param_3 + 8;
      param_1 = param_1 + 8;
    }
    *param_3 = 0;
    uVar1 = *param_1;
    if (uVar1 == 0) goto LAB_00a73ec9;
    *param_3 = uVar1;
    if ((uVar1 & 1) != 0) {
      param_3[2] = param_1[2];
      param_3[3] = param_1[3];
      param_3[4] = param_1[4];
      param_3[5] = param_1[5];
      param_3[6] = param_1[6];
      param_3[7] = param_1[7];
      goto LAB_00a73ec9;
    }
    (**(code **)(uVar1 & 0xfffffffe))(param_1 + 2,param_3 + 2,0);
    param_3 = param_3 + 8;
    param_1 = param_1 + 8;
  } while( true );
}



int Catch_All_00a73ef8(void)

{
  int iVar1;
  int unaff_EBP;
  int iVar2;
  
  iVar1 = *(int *)(unaff_EBP + 0x10);
  for (iVar2 = *(int *)(unaff_EBP + -0x14); iVar2 != iVar1; iVar2 = iVar2 + 0x20) {
    FUN_00a73e10(iVar2);
  }
  __CxxThrowException_8(0,0);
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return iVar2;
}



int __thiscall FUN_00a73f40(int param_1_00,uint param_1,undefined4 *param_2,uint param_3)

{
  uint uVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 *puVar4;
  uint uVar5;
  
  uVar1 = param_1;
  if (param_2 != (undefined4 *)0x0) {
    uVar5 = *(uint *)(param_1_00 + 0x18);
    puVar2 = (undefined4 *)(param_1_00 + 4);
    puVar4 = puVar2;
    if (0xf < uVar5) {
      puVar4 = (undefined4 *)*puVar2;
    }
    if (puVar4 <= param_2) {
      puVar4 = puVar2;
      if (0xf < uVar5) {
        puVar4 = (undefined4 *)*puVar2;
      }
      if (param_2 < (undefined4 *)(*(int *)(param_1_00 + 0x14) + (int)puVar4)) {
        if (0xf < uVar5) {
          puVar2 = (undefined4 *)*puVar2;
        }
        iVar3 = FUN_00a73c00(param_1,param_1_00,(int)param_2 - (int)puVar2,param_3);
        return iVar3;
      }
    }
  }
  if (*(uint *)(param_1_00 + 0x14) < param_1) {
    std::_String_base::_Xran();
  }
  if (-*(int *)(param_1_00 + 0x14) - 1U <= param_3) {
    std::_String_base::_Xlen();
  }
  if (param_3 != 0) {
    uVar5 = *(int *)(param_1_00 + 0x14) + param_3;
    if (uVar5 == 0xffffffff) {
      std::_String_base::_Xlen();
    }
    if (*(uint *)(param_1_00 + 0x18) < uVar5) {
      FUN_00401af2(uVar5,*(undefined4 *)(param_1_00 + 0x14));
    }
    else if (uVar5 == 0) {
      *(undefined4 *)(param_1_00 + 0x14) = 0;
      if (0xf < *(uint *)(param_1_00 + 0x18)) {
        **(undefined **)(param_1_00 + 4) = 0;
        return param_1_00;
      }
      *(undefined *)(param_1_00 + 4) = 0;
      return param_1_00;
    }
    if (uVar5 != 0) {
      if (*(uint *)(param_1_00 + 0x18) < 0x10) {
        param_1 = param_1_00 + 4;
        iVar3 = param_1_00 + 4;
      }
      else {
        param_1 = *(int *)(param_1_00 + 4);
        iVar3 = *(int *)(param_1_00 + 4);
      }
      _memmove_s((void *)(iVar3 + uVar1 + param_3),(*(uint *)(param_1_00 + 0x18) - uVar1) - param_3,
                 (void *)(param_1 + uVar1),*(int *)(param_1_00 + 0x14) - uVar1);
      if (*(uint *)(param_1_00 + 0x18) < 0x10) {
        iVar3 = param_1_00 + 4;
      }
      else {
        iVar3 = *(int *)(param_1_00 + 4);
      }
      _memcpy_s((void *)(iVar3 + uVar1),*(uint *)(param_1_00 + 0x18) - uVar1,param_2,param_3);
      *(uint *)(param_1_00 + 0x14) = uVar5;
      if (0xf < *(uint *)(param_1_00 + 0x18)) {
        *(undefined *)(*(int *)(param_1_00 + 4) + uVar5) = 0;
        return param_1_00;
      }
      *(undefined *)(param_1_00 + 4 + uVar5) = 0;
    }
  }
  return param_1_00;
}



int FUN_00a740b0(int param_1,int param_2,int param_3)

{
  int iVar1;
  
  iVar1 = param_2 - param_1;
  if (param_1 != param_2) {
    do {
      param_2 = param_2 + -0x20;
      FUN_00a73a20(param_2);
    } while (param_2 != param_1);
  }
  return param_3 + (iVar1 >> 5) * -0x20;
}



void __fastcall FUN_00a740f0(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  FUN_00a73d70();
  param_1[0x11] = boost::exception_detail::clone_base::vftable;
  return;
}



undefined4 * __thiscall FUN_00a74130(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
       ::vftable;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  FUN_00a73d70();
  param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00a74180(undefined4 param_1_00,byte param_1)

{
  FUN_00a73d70();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void FUN_00a741a0(uint *param_1,int param_2,uint *param_3)

{
  uint uVar1;
  int **unaff_FS_OFFSET;
  int *local_10;
  undefined *puStack_c;
  undefined local_8;
  undefined3 uStack_7;
  
  puStack_c = &LAB_00bf30a1;
  local_10 = *unaff_FS_OFFSET;
  *unaff_FS_OFFSET = (int *)&local_10;
  uStack_7 = 0;
  do {
    while( true ) {
      if (param_2 == 0) {
        *unaff_FS_OFFSET = local_10;
        return;
      }
      local_8 = 1;
      if (param_1 != (uint *)0x0) break;
LAB_00a74229:
      param_2 = param_2 + -1;
      param_1 = param_1 + 8;
    }
    *param_1 = 0;
    uVar1 = *param_3;
    if (uVar1 == 0) goto LAB_00a74229;
    *param_1 = uVar1;
    if ((uVar1 & 1) != 0) {
      param_1[2] = param_3[2];
      param_1[3] = param_3[3];
      param_1[4] = param_3[4];
      param_1[5] = param_3[5];
      param_1[6] = param_3[6];
      param_1[7] = param_3[7];
      goto LAB_00a74229;
    }
    (**(code **)(uVar1 & 0xfffffffe))(param_3 + 2,param_1 + 2,0);
    param_2 = param_2 + -1;
    param_1 = param_1 + 8;
  } while( true );
}



void Catch_All_00a74258(void)

{
  int iVar1;
  int unaff_EBP;
  int iVar2;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  for (iVar2 = *(int *)(unaff_EBP + -0x14); iVar2 != iVar1; iVar2 = iVar2 + 0x20) {
    FUN_00a73e10(iVar2);
  }
  __CxxThrowException_8(0,0);
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



void FUN_00a74290(uint *param_1,uint *param_2)

{
  uint uVar1;
  uint *puVar2;
  
  if (param_1 != param_2) {
    puVar2 = param_1 + 2;
    do {
      uVar1 = *param_1;
      if (uVar1 != 0) {
        if (((uVar1 & 1) == 0) && (*(code **)(uVar1 & 0xfffffffe) != (code *)0x0)) {
          (**(code **)(uVar1 & 0xfffffffe))(puVar2,puVar2,2);
        }
        *param_1 = 0;
      }
      param_1 = param_1 + 8;
      puVar2 = puVar2 + 8;
    } while (param_1 != param_2);
  }
  return;
}



undefined4 * __thiscall FUN_00a74300(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::logic_error::vftable;
  if (0xf < (uint)param_1_00[9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00[4]);
  }
  param_1_00[9] = 0xf;
  param_1_00[8] = 0;
  *(undefined *)(param_1_00 + 4) = 0;
  exception::~exception((exception *)param_1_00);
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __fastcall FUN_00a74350(undefined4 *param_1)

{
  uint uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf30d0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd0;
  ExceptionList = &local_c;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,"too many positional options have been specified on the command line",0x43);
  local_4 = 0;
  FUN_00417ca0(local_28);
  *param_1 = boost::program_options::error::vftable;
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  *param_1 = boost::program_options::too_many_positional_options_error::vftable;
  ExceptionList = local_c;
  return param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00a743f0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            undefined4 param_2)

{
  char cVar1;
  char *pcVar2;
  char *pcVar3;
  
  switch(param_2) {
  case 0x1e:
    pcVar3 = "the unabbreviated option \'%canonical_option%\' is not valid";
    break;
  case 0x1f:
    pcVar3 = "the unabbreviated option \'%canonical_option%\' does not take any arguments";
    break;
  case 0x20:
    pcVar3 = "the abbreviated option \'%canonical_option%\' does not take any arguments";
    break;
  case 0x21:
    pcVar3 = 
    "the argument for option \'%canonical_option%\' should follow immediately after the equal sign";
    break;
  case 0x22:
    pcVar3 = "the required argument for option \'%canonical_option%\' is missing";
    break;
  case 0x23:
    pcVar3 = "option \'%canonical_option%\' does not take any arguments";
    break;
  case 0x24:
    pcVar3 = "the options configuration file contains an invalid line \'%invalid_line%\'";
    break;
  default:
    pcVar3 = "unknown command line syntax error for \'%s\'";
  }
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  pcVar2 = pcVar3;
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,pcVar3,(int)pcVar2 - (int)(pcVar3 + 1));
  return param_1;
}



int __thiscall FUN_00a744a0(uint param_1_00,int param_1,int param_2,undefined4 param_3)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_00a741a0(param_1,param_2,param_3,param_1_00 + 8,param_3,local_4);
  return param_2 * 0x20 + param_1;
}



void __thiscall FUN_00a744e0(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_00a74290(param_1,param_2,param_1_00 + 8,param_2);
  return;
}



undefined4 * __thiscall FUN_00a74500(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2388;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FID_conflict_runtime_error(param_1);
  *param_1_00 = boost::program_options::too_many_positional_options_error::vftable;
  local_4 = 0;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  param_1_00[10] = boost::exception::vftable;
  piVar1 = *(int **)(param_1 + 4);
  param_1_00[0xb] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 0xc))(uVar2);
  }
  param_1_00[0xc] = *(undefined4 *)(param_1 + 8);
  param_1_00[0xd] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[0xe] = *(undefined4 *)(param_1 + 0x10);
  *param_1_00 = boost::exception_detail::
                error_info_injector<class_boost::program_options::too_many_positional_options_error>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       error_info_injector<class_boost::program_options::too_many_positional_options_error>::vftable
  ;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a745a0(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3114;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_3 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a74500(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * FUN_00a74670(undefined4 *param_1,undefined4 param_2)

{
  FID_conflict_runtime_error(param_2);
  param_1[10] = boost::exception::vftable;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0xffffffff;
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::too_many_positional_options_error>::
             vftable;
  param_1[10] = boost::exception_detail::
                error_info_injector<class_boost::program_options::too_many_positional_options_error>
                ::vftable;
  return param_1;
}



undefined4 * __thiscall FUN_00a746c0(undefined4 *param_1_00,int param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3114;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a74500(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



void ** __fastcall FUN_00a74790(void **param_1)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3b18;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = param_1;
  }
  *param_1 = puVar1;
  param_1[3] = (void *)0x0;
  param_1[4] = (void *)0x0;
  param_1[5] = (void *)0x0;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall
FUN_00a747f0(uint param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_00a73e40(param_1,param_2,param_3,param_1_00 + 8,param_3,local_4);
  return;
}



undefined4 * __thiscall FUN_00a74820(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf314c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a74500(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::too_many_positional_options_error>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_00a748d0(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x48);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00a745a0(param_1 + -0x44,local_14,1);
    if (iVar2 != 0) {
      ExceptionList = local_c;
      return *(int *)(*(int *)(iVar2 + 0x3c) + 4) + 0x3c + iVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_00a74960(int param_1)

{
  code *pcVar1;
  undefined local_48 [72];
  
  FUN_00a74820(param_1 + -0x44,1);
  __CxxThrowException_8(local_48,&DAT_0311256c);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00a74990(undefined4 param_1,undefined4 param_2)

{
  FUN_00a746c0(param_2,1);
  return param_1;
}



void FUN_00a749c0(void)

{
  FUN_00a748d0();
  return;
}



void FUN_00a749d0(void)

{
  FUN_00a74960();
  return;
}



undefined4 * __thiscall
FUN_00a749e0(undefined4 *param_1_00,undefined4 *param_1,undefined4 param_2,uint param_3)

{
  uint uVar1;
  undefined4 uVar2;
  uint local_4;
  
  local_4 = (uint)param_1_00 & 0xffffff00;
  FUN_004315cf(param_3 + 0x1c,param_1_00[4],param_3,param_1,param_1,local_4);
  FUN_0043091d(param_1_00[4] + -0x1c,param_1_00[4],param_1_00 + 2,param_1);
  param_1_00[4] = param_1_00[4] + -0x1c;
  uVar1 = param_1_00[4];
  *param_1 = 0;
  if ((param_3 < (uint)param_1_00[3]) || (uVar1 < param_3)) {
    FUN_00a3fb10();
  }
  uVar2 = *param_1_00;
  param_1[1] = param_3;
  *param_1 = uVar2;
  return param_1;
}



void __fastcall FUN_00a74a60(undefined4 *param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf3178;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 0;
  if (param_1[3] != 0) {
    FUN_00a74290(param_1[3],param_1[4],param_1 + 2,param_1);
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[3]);
  }
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(*param_1,uVar1);
}



int __fastcall FUN_00a74ae0(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf31b3;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 4) = 0;
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0xffffffff;
  FUN_004398f2(uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_004398f2();
  *(undefined *)(param_1 + 0x50) = 0;
  *(undefined *)(param_1 + 0x51) = 0;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall
FUN_00a74b60(int param_1_00,undefined4 param_1,int param_2,uint param_3,uint *param_4)

{
  uint uVar1;
  uint *puVar2;
  int iVar3;
  undefined4 uVar4;
  int extraout_ECX;
  uint uVar5;
  int iVar6;
  uint uStack_74;
  uint auStack_64 [2];
  uint uStack_5c;
  uint uStack_58;
  uint uStack_54;
  uint uStack_50;
  uint uStack_4c;
  uint uStack_48;
  uint local_44 [2];
  uint local_3c;
  uint local_38;
  uint local_34;
  uint local_30;
  uint local_2c;
  uint local_28;
  int local_24;
  int local_20;
  undefined4 local_1c;
  int local_18;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bf31e0;
  local_10 = ExceptionList;
  uStack_74 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_74;
  ExceptionList = &local_10;
  iVar3 = *(int *)(param_1_00 + 0xc);
  if (iVar3 == 0) {
    uVar5 = 0;
  }
  else {
    uVar5 = *(int *)(param_1_00 + 0x14) - iVar3 >> 5;
  }
  if (param_3 != 0) {
    iVar6 = *(int *)(param_1_00 + 0x10);
    iVar3 = iVar6 - iVar3 >> 5;
    local_24 = param_1_00;
    puVar2 = &uStack_74;
    if (0x7ffffffU - iVar3 < param_3) {
      iVar3 = FUN_00837240();
      iVar6 = extraout_ECX;
      puVar2 = local_14;
    }
    local_14 = puVar2;
    uVar1 = iVar3 + param_3;
    if (uVar5 < uVar1) {
      if (0x7ffffff - (uVar5 >> 1) < uVar5) {
        uVar5 = 0;
      }
      else {
        uVar5 = uVar5 + (uVar5 >> 1);
      }
      if (uVar5 < uVar1) {
        uVar5 = uVar1;
      }
      local_18 = FUN_00a73950(uVar5,0);
      local_20 = param_2 - *(int *)(param_1_00 + 0xc) >> 5;
      local_1c = 0;
      local_8 = 0;
      FUN_00a744a0(local_20 * 0x20 + local_18,param_3,param_4);
      uVar1 = (uint)param_4 >> 8;
      param_4 = (uint *)(uVar1 << 8);
      local_1c = 1;
      FUN_00a73e40(*(undefined4 *)(param_1_00 + 0xc),param_2,local_18,param_1_00 + 8,param_3,param_4
                  );
      param_4 = (uint *)(uVar1 << 8);
      local_1c = 2;
      FUN_00a73e40(param_2,*(undefined4 *)(param_1_00 + 0x10),(local_20 + param_3) * 0x20 + local_18
                   ,param_1_00 + 8,param_3,param_4);
      iVar3 = *(int *)(param_1_00 + 0xc);
      local_8 = 0xffffffff;
      if (iVar3 != 0) {
        FUN_00a74290(iVar3,*(undefined4 *)(param_1_00 + 0x10),param_1_00 + 8,param_3);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
      }
      *(uint *)(param_1_00 + 0x14) = uVar5 * 0x20 + local_18;
      *(uint *)(param_1_00 + 0x10) =
           (param_3 + (*(int *)(param_1_00 + 0x10) - iVar3 >> 5)) * 0x20 + local_18;
      *(int *)(param_1_00 + 0xc) = local_18;
      ExceptionList = local_10;
      return;
    }
    uVar5 = *param_4;
    if ((uint)(iVar6 - param_2 >> 5) < param_3) {
      local_44[0] = 0;
      if (uVar5 != 0) {
        local_44[0] = uVar5;
        if ((uVar5 & 1) == 0) {
          (**(code **)(uVar5 & 0xfffffffe))(param_4 + 2,&local_3c,0);
        }
        else {
          local_3c = param_4[2];
          local_38 = param_4[3];
          local_34 = param_4[4];
          local_30 = param_4[5];
          local_2c = param_4[6];
          local_28 = param_4[7];
        }
      }
      local_8 = 2;
      FUN_00a747f0(param_2,*(undefined4 *)(param_1_00 + 0x10),param_3 * 0x20 + param_2);
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_00a744a0(*(int *)(param_1_00 + 0x10),
                   param_3 - (*(int *)(param_1_00 + 0x10) - param_2 >> 5),local_44);
      *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + param_3 * 0x20;
      local_8 = 2;
      FUN_00a73ac0(param_2,*(int *)(param_1_00 + 0x10) + param_3 * -0x20,local_44);
    }
    else {
      auStack_64[0] = 0;
      if (uVar5 != 0) {
        auStack_64[0] = uVar5;
        if ((uVar5 & 1) == 0) {
          (**(code **)(uVar5 & 0xfffffffe))(param_4 + 2,&uStack_5c,0);
        }
        else {
          uStack_5c = param_4[2];
          uStack_58 = param_4[3];
          uStack_54 = param_4[4];
          uStack_50 = param_4[5];
          uStack_4c = param_4[6];
          uStack_48 = param_4[7];
        }
      }
      iVar3 = *(int *)(param_1_00 + 0x10);
      iVar6 = iVar3 + param_3 * -0x20;
      local_8 = 5;
      uVar4 = FUN_00a747f0(iVar6,iVar3,iVar3);
      *(undefined4 *)(param_1_00 + 0x10) = uVar4;
      FUN_00a740b0(param_2,iVar6,iVar3);
      FUN_00a73ac0(param_2,param_3 * 0x20 + param_2,auStack_64);
    }
    local_8 = 0xffffffff;
    thunk_FUN_0042f2f3();
  }
  ExceptionList = local_10;
  return;
}



void Catch_All_00a74ce0(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + -0x18);
  iVar2 = *(int *)(unaff_EBP + -0x1c);
  iVar3 = *(int *)(unaff_EBP + -0x14);
  if (1 < iVar1) {
    FUN_00a744e0(iVar3,iVar2 * 0x20 + iVar3);
  }
  if (0 < iVar1) {
    FUN_00a744e0(iVar2 * 0x20 + iVar3,(iVar2 + *(int *)(unaff_EBP + 0x10)) * 0x20 + iVar3);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar3);
}



void Catch_All_00a74df5(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  int extraout_ECX;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  int iVar6;
  
  iVar3 = *(int *)(unaff_EBP + 0x10) * 0x20;
  FUN_00a744e0(iVar3 + *(int *)(unaff_EBP + 0xc),
               *(int *)(*(int *)(unaff_EBP + -0x20) + 0x10) + iVar3);
  uVar4 = __CxxThrowException_8(0,0);
  *(undefined4 *)(unaff_EBP + -0x60) = 0;
  if (uVar4 != 0) {
    *(uint *)(unaff_EBP + -0x60) = uVar4;
    if ((uVar4 & 1) == 0) {
      (**(code **)(uVar4 & 0xfffffffe))(extraout_ECX + 8,unaff_EBP + -0x58,0);
    }
    else {
      uVar1 = *(undefined4 *)(extraout_ECX + 0xc);
      *(undefined4 *)(unaff_EBP + -0x58) = *(undefined4 *)(extraout_ECX + 8);
      uVar5 = *(undefined4 *)(extraout_ECX + 0x10);
      *(undefined4 *)(unaff_EBP + -0x54) = uVar1;
      uVar1 = *(undefined4 *)(extraout_ECX + 0x14);
      *(undefined4 *)(unaff_EBP + -0x50) = uVar5;
      uVar5 = *(undefined4 *)(extraout_ECX + 0x18);
      uVar2 = *(undefined4 *)(extraout_ECX + 0x1c);
      *(undefined4 *)(unaff_EBP + -0x4c) = uVar1;
      *(undefined4 *)(unaff_EBP + -0x48) = uVar5;
      *(undefined4 *)(unaff_EBP + -0x44) = uVar2;
    }
  }
  iVar3 = *(int *)(unaff_ESI + 0x10);
  iVar6 = iVar3 + unaff_EDI * -0x20;
  *(undefined4 *)(unaff_EBP + -4) = 5;
  *(int *)(unaff_EBP + 0x10) = unaff_EDI * 0x20;
  uVar5 = FUN_00a747f0(iVar6,iVar3,iVar3);
  uVar1 = *(undefined4 *)(unaff_EBP + 0xc);
  *(undefined4 *)(unaff_ESI + 0x10) = uVar5;
  FUN_00a740b0(uVar1,iVar6,iVar3);
  FUN_00a73ac0(*(int *)(unaff_EBP + 0xc),*(int *)(unaff_EBP + 0x10) + *(int *)(unaff_EBP + 0xc),
               unaff_EBP + -0x60);
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  thunk_FUN_0042f2f3();
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



void FUN_00a74ed0(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_90 [72];
  undefined local_48 [60];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3208;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_00a74670(local_48,param_1,DAT_0323f878 ^ (uint)local_90);
  local_4 = 0;
  FUN_00a74990(local_90,uVar2);
  __CxxThrowException_8(local_90,&DAT_0311256c);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 __thiscall FUN_00a74f40(uint *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  uint uVar2;
  uint *extraout_ECX;
  undefined local_44 [56];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3259;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a(DAT_0323f878 ^ (uint)&stack0xffffff8c);
    local_4 = 1;
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  uVar1 = (**(code **)((uVar2 & 0xfffffffe) + 4))(local_44,param_1_00 + 2,param_2);
  local_4 = 2;
  FUN_00a6c410(uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_00a6bff0();
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00a74ff0(int param_1_00,uint param_1,undefined4 param_2)

{
  int iVar1;
  uint uVar2;
  char cVar3;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  uVar2 = param_1;
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bf3280;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  cVar3 = FUN_0042f1ff(param_1);
  if (cVar3 != '\0') {
    iVar1 = *(int *)(param_1_00 + 0xc);
    param_1 = param_1 & 0xffffff00;
    local_8 = 0;
    FUN_0043118c(iVar1,uVar2,param_2,param_1_00 + 8,param_1,param_1);
    *(uint *)(param_1_00 + 0x10) = iVar1 + uVar2 * 0x1c;
  }
  ExceptionList = local_10;
  return;
}



void Catch_All_00a75078(void)

{
  code *pcVar1;
  
  FUN_0042f245();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall
FUN_00a75090(int **param_1_00,int **param_1,int *param_2,int param_3,undefined4 param_4)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  
  piVar4 = param_1_00[3];
  if (((int)param_1_00[4] - (int)piVar4 & 0xffffffe0U) == 0) {
    iVar3 = 0;
  }
  else {
    if (param_1_00[4] < piVar4) {
      FUN_00a3fb10();
    }
    if ((param_2 == (int *)0x0) || (param_2 != *param_1_00)) {
      FUN_00a3fb10();
    }
    iVar3 = param_3 - (int)piVar4 >> 5;
  }
  FUN_00a74b60(param_2,param_3,1,param_4);
  piVar4 = param_1_00[3];
  if (param_1_00[4] < piVar4) {
    FUN_00a3fb10();
  }
  piVar1 = *param_1_00;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1;
  }
  piVar4 = piVar4 + iVar3 * 8;
  if (piVar4 <= *(int **)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(int **)(iVar3 + 0xc) <= piVar4) goto LAB_00a7512e;
  }
  FUN_00a3fb10();
LAB_00a7512e:
  param_1[1] = piVar4;
  *param_1 = piVar1;
  return;
}



void ** __thiscall FUN_00a75150(void **param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2d28;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = param_1_00;
  }
  *param_1_00 = puVar1;
  local_4 = 0;
  FUN_00a74ff0(param_1,param_2);
  ExceptionList = local_c;
  return param_1_00;
}



void __thiscall FUN_00a751c0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint local_8 [2];
  
  uVar1 = param_1_00[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(param_1_00[5] - uVar1) >> 5;
  }
  uVar2 = param_1_00[4];
  if ((uint)((int)(uVar2 - uVar1) >> 5) < uVar3) {
    local_8[0] = local_8[0] & 0xffffff00;
    FUN_00a741a0(uVar2,1,param_1,param_1_00 + 2,param_1,local_8[0]);
    param_1_00[4] = uVar2 + 0x20;
    return;
  }
  if (uVar2 < uVar1) {
    FUN_00a3fb10();
  }
  FUN_00a75090(local_8,*param_1_00,uVar2,param_1);
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00a75240(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_3)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this;
  
  if (param_1 == param_2) {
    return param_3;
  }
  do {
    pbVar1 = param_2 + -0x54;
    this = param_3 + -0x54;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (this,pbVar1,0,0xffffffff);
    *(undefined4 *)(param_3 + -0x38) = *(undefined4 *)(param_2 + -0x38);
    FUN_004312d6(param_2 + -0x34);
    FUN_004312d6(param_2 + -0x1c);
    param_3[-4] = param_2[-4];
    param_3[-3] = param_2[-3];
    param_2 = pbVar1;
    param_3 = this;
  } while (pbVar1 != param_1);
  return this;
}



void FUN_00a752a0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1,
                 basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                 *param_2,basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          *param_3)

{
  if (param_1 != param_2) {
    do {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (param_1,param_3,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(param_3 + 0x1c);
      FUN_004312d6(param_3 + 0x20);
      FUN_004312d6(param_3 + 0x38);
      param_1[0x50] = param_3[0x50];
      param_1[0x51] = param_3[0x51];
      param_1 = param_1 + 0x54;
    } while (param_1 != param_2);
  }
  return;
}



int FUN_00a75300(int param_1,int param_2,int param_3)

{
  void *local_10;
  undefined *puStack_c;
  undefined local_8;
  undefined3 uStack_7;
  
  puStack_c = &LAB_00bf32b1;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  uStack_7 = 0;
  for (; param_1 != param_2; param_1 = param_1 + 0x54) {
    local_8 = 1;
    if (param_3 != 0) {
      FUN_00431579(param_1);
    }
    param_3 = param_3 + 0x54;
  }
  ExceptionList = local_10;
  return param_3;
}



int Catch_All_00a75369(void)

{
  int iVar1;
  int unaff_EBP;
  int iVar2;
  
  iVar1 = *(int *)(unaff_EBP + 0x10);
  for (iVar2 = *(int *)(unaff_EBP + -0x14); iVar2 != iVar1; iVar2 = iVar2 + 0x54) {
    FUN_004310b0();
  }
  __CxxThrowException_8(0,0);
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return iVar2;
}



int FUN_00a753a0(int param_1,int param_2,int param_3)

{
  uint local_8;
  uint local_4;
  
  local_4 = local_4 & 0xffffff00;
  local_8 = local_8 & 0xffffff00;
  FUN_00a75240(param_1,param_2,param_3,param_3,local_4,local_8);
  return param_3 + ((param_2 - param_1) / 0x54) * -0x54;
}



int __thiscall FUN_00a75400(int param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf32ee;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_004398f2(DAT_0323f878 ^ (uint)&stack0xffffffe8);
  *(undefined4 *)(param_1_00 + 0x28) = 0;
  *(undefined4 *)(param_1_00 + 0x48) = 0;
  local_4 = 2;
  FUN_004312d6(param_1);
  *(undefined4 *)(param_1_00 + 0x18) = 0x3f7;
  *(undefined4 *)(param_1_00 + 0x20) = 0;
  *(undefined4 *)(param_1_00 + 0x24) = 0;
  *(undefined *)(param_1_00 + 0x1c) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



void FUN_00a75480(int param_1,int param_2,undefined4 param_3)

{
  int **unaff_FS_OFFSET;
  int *local_10;
  undefined *puStack_c;
  undefined local_8;
  undefined3 uStack_7;
  
  puStack_c = &LAB_00bf3321;
  local_10 = *unaff_FS_OFFSET;
  *unaff_FS_OFFSET = (int *)&local_10;
  uStack_7 = 0;
  for (; param_2 != 0; param_2 = param_2 + -1) {
    local_8 = 1;
    if (param_1 != 0) {
      FUN_00431579(param_3);
    }
    param_1 = param_1 + 0x54;
  }
  *unaff_FS_OFFSET = local_10;
  return;
}



void Catch_All_00a754e9(void)

{
  int iVar1;
  int unaff_EBP;
  int iVar2;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  for (iVar2 = *(int *)(unaff_EBP + -0x14); iVar2 != iVar1; iVar2 = iVar2 + 0x54) {
    FUN_004310b0();
  }
  __CxxThrowException_8(0,0);
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



undefined4 * __thiscall
FUN_00a75520(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_28 [4];
  undefined4 local_24;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3350;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  uVar2 = FUN_00a743f0(local_28,param_1);
  local_4 = 0;
  FUN_00a7c150(uVar2,param_2,param_3,param_4);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  *param_1_00 = boost::program_options::invalid_syntax::vftable;
  param_1_00[0x29] = param_1;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_00a755b0(undefined4 param_1)

{
  FUN_00a7ac80(param_1);
  return param_1;
}



undefined4 FUN_00a755d0(undefined4 param_1)

{
  FUN_00a755b0(param_1);
  return param_1;
}



undefined4 * __thiscall FUN_00a755f0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::program_options::invalid_syntax::vftable;
  FUN_00a6fb20();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a75620(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  FUN_00a75520(param_1,param_2,param_3,param_4);
  *param_1_00 = boost::program_options::invalid_command_line_syntax::vftable;
  return param_1_00;
}



void __fastcall FUN_00a75650(undefined4 *param_1)

{
  *param_1 = boost::program_options::invalid_syntax::vftable;
  FUN_00a6fb20();
  return;
}



void FUN_00a75660(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a753a0(param_1,param_2,param_3,param_3,param_3,0);
  return;
}



void __fastcall FUN_00a756c0(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::invalid_command_line_syntax>::vftable
  ;
  param_1[0x2a] =
       boost::exception_detail::
       error_info_injector<class_boost::program_options::invalid_command_line_syntax>::vftable;
  param_1[0x2a] = boost::exception::vftable;
  if ((int *)param_1[0x2b] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2b] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2b] = 0;
    }
  }
  *param_1 = boost::program_options::invalid_syntax::vftable;
  FUN_00a6fb20();
  return;
}



void FUN_00a75710(void)

{
  FUN_00a758c0();
  return;
}



void __fastcall FUN_00a75720(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::invalid_command_line_syntax>_>
             ::vftable;
  param_1[0x2a] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::invalid_command_line_syntax>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1[0x2f] + 4) + 0xbc + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::invalid_command_line_syntax>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0x2f] + 4) + 0xb8 + (int)param_1) = *(int *)(param_1[0x2f] + 4) + -8;
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::invalid_command_line_syntax>::vftable
  ;
  param_1[0x2a] =
       boost::exception_detail::
       error_info_injector<class_boost::program_options::invalid_command_line_syntax>::vftable;
  param_1[0x2a] = boost::exception::vftable;
  if ((int *)param_1[0x2b] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2b] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2b] = 0;
    }
  }
  *param_1 = boost::program_options::invalid_syntax::vftable;
  FUN_00a6fb20();
  return;
}



void FUN_00a757b0(void)

{
  FUN_00a75890();
  return;
}



void FUN_00a757c0(void)

{
  FUN_00a75890();
  return;
}



int __thiscall FUN_00a757d0(uint param_1_00,int param_1,int param_2,undefined4 param_3)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_00a75480(param_1,param_2,param_3,param_1_00 + 8,param_3,local_4);
  return param_2 * 0x54 + param_1;
}



void __thiscall
FUN_00a75810(uint param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_0043110c(param_1,param_2,param_3,param_1_00 + 8,param_3,local_4);
  return;
}



void __fastcall FUN_00a75840(int param_1)

{
  FUN_00a75720();
  *(undefined ***)(param_1 + 0xc4) = boost::exception_detail::clone_base::vftable;
  return;
}



int __thiscall FUN_00a75890(int param_1_00,byte param_1)

{
  FUN_00a75720();
  *(undefined ***)(param_1_00 + 0xc4) = boost::exception_detail::clone_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00a758c0(undefined4 *param_1,byte param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::invalid_command_line_syntax>::vftable
  ;
  param_1[0x2a] =
       boost::exception_detail::
       error_info_injector<class_boost::program_options::invalid_command_line_syntax>::vftable;
  param_1[0x2a] = boost::exception::vftable;
  if ((int *)param_1[0x2b] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2b] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2b] = 0;
    }
  }
  *param_1 = boost::program_options::invalid_syntax::vftable;
  FUN_00a6fb20();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 * __thiscall FUN_00a75920(undefined4 *param_1_00,int param_1)

{
  FUN_00a6f9b0(param_1);
  *param_1_00 = boost::program_options::invalid_syntax::vftable;
  param_1_00[0x29] = *(undefined4 *)(param_1 + 0xa4);
  param_1_00[0x2a] = boost::exception::vftable;
  param_1_00[0x2b] = 0;
  param_1_00[0x2c] = 0;
  param_1_00[0x2d] = 0;
  param_1_00[0x2e] = 0xffffffff;
  *param_1_00 = boost::exception_detail::
                error_info_injector<class_boost::program_options::invalid_command_line_syntax>::
                vftable;
  param_1_00[0x2a] =
       boost::exception_detail::
       error_info_injector<class_boost::program_options::invalid_command_line_syntax>::vftable;
  return param_1_00;
}



void ** __thiscall FUN_00a75980(void **param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  void *pvVar5;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bf3378;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  puVar3 = (undefined4 *)operator_new(4);
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)0x0;
  }
  else {
    *puVar3 = param_1_00;
  }
  *param_1_00 = puVar3;
  uVar1 = (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x54;
  uVar4 = 0;
  local_8 = 0;
  param_1_00[3] = (void *)0x0;
  param_1_00[4] = (void *)0x0;
  param_1_00[5] = (void *)0x0;
  if (uVar1 != 0) {
    if (0x30c30c3 < uVar1) {
      uVar4 = FUN_004423c1();
    }
    pvVar5 = (void *)FUN_004309c9(uVar1,uVar4);
    param_1_00[3] = pvVar5;
    param_1_00[4] = pvVar5;
    param_1_00[5] = (void *)(uVar1 * 0x54 + (int)pvVar5);
    uVar1 = *(uint *)(param_1 + 0x10);
    local_8 = CONCAT31(local_8._1_3_,1);
    if (uVar1 < *(uint *)(param_1 + 0xc)) {
      FUN_00a3fb10();
    }
    uVar2 = *(uint *)(param_1 + 0xc);
    if (*(uint *)(param_1 + 0x10) < uVar2) {
      FUN_00a3fb10();
    }
    param_1 = param_1 & 0xffffff00;
    pvVar5 = (void *)FUN_00a75300(uVar2,uVar1,param_1_00[3],param_1_00 + 2,param_1,param_1);
    param_1_00[4] = pvVar5;
  }
  ExceptionList = local_10;
  return param_1_00;
}



void Catch_All_00a75a77(void)

{
  code *pcVar1;
  
  FUN_0042f33c();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall
FUN_00a75a90(int param_1_00,undefined4 param_1,int param_2,uint param_3,uint param_4)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  int extraout_ECX;
  int iVar4;
  uint uVar5;
  int local_c4;
  void *local_bc;
  undefined *puStack_b8;
  undefined4 local_b4;
  undefined local_b0 [84];
  undefined local_5c [84];
  uint local_8;
  
  local_b4 = 0xffffffff;
  puStack_b8 = &LAB_00bf33b0;
  local_bc = ExceptionList;
  local_8 = DAT_0323f878 ^ (uint)local_b0;
  ExceptionList = &local_bc;
  if (*(int *)(param_1_00 + 0xc) == 0) {
    uVar5 = 0;
  }
  else {
    uVar5 = (*(int *)(param_1_00 + 0x14) - *(int *)(param_1_00 + 0xc)) / 0x54;
  }
  if (param_3 != 0) {
    iVar4 = *(int *)(param_1_00 + 0x10);
    iVar2 = (iVar4 - *(int *)(param_1_00 + 0xc)) / 0x54;
    if (0x30c30c3U - iVar2 < param_3) {
      iVar2 = FUN_004423c1();
      iVar4 = extraout_ECX;
    }
    uVar1 = iVar2 + param_3;
    if (uVar5 < uVar1) {
      if (0x30c30c3 - (uVar5 >> 1) < uVar5) {
        uVar5 = 0;
      }
      else {
        uVar5 = uVar5 + (uVar5 >> 1);
      }
      if (uVar5 < uVar1) {
        uVar5 = uVar1;
      }
      iVar2 = FUN_004309c9(uVar5,0);
      iVar4 = (param_2 - *(int *)(param_1_00 + 0xc)) / 0x54;
      local_b4 = 0;
      FUN_00a757d0(iVar4 * 0x54 + iVar2,param_3,param_4);
      local_c4 = (param_4 >> 8) << 8;
      FUN_0043110c(*(undefined4 *)(param_1_00 + 0xc),param_2,iVar2,param_1_00 + 8,local_c4,local_c4)
      ;
      local_c4 = (param_4 >> 8) << 8;
      FUN_0043110c(param_2,*(undefined4 *)(param_1_00 + 0x10),(iVar4 + param_3) * 0x54 + iVar2,
                   param_1_00 + 8,local_c4,local_c4);
      iVar4 = *(int *)(param_1_00 + 0xc);
      local_b4 = 0xffffffff;
      if (iVar4 != 0) {
        FUN_0042f506(iVar4,*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
      }
      *(uint *)(param_1_00 + 0x14) = uVar5 * 0x54 + iVar2;
      *(uint *)(param_1_00 + 0x10) =
           (param_3 + (*(int *)(param_1_00 + 0x10) - iVar4) / 0x54) * 0x54 + iVar2;
      *(int *)(param_1_00 + 0xc) = iVar2;
    }
    else {
      if ((uint)((iVar4 - param_2) / 0x54) < param_3) {
        FUN_00431579(param_4);
        local_b4 = 2;
        FUN_00a75810(param_2,*(undefined4 *)(param_1_00 + 0x10),param_3 * 0x54 + param_2);
        local_b4 = CONCAT31(local_b4._1_3_,3);
        FUN_00a757d0(*(int *)(param_1_00 + 0x10),
                     param_3 - (*(int *)(param_1_00 + 0x10) - param_2) / 0x54,local_5c);
        *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + param_3 * 0x54;
        local_b4 = 2;
        FUN_00a752a0(param_2,*(int *)(param_1_00 + 0x10) + param_3 * -0x54,local_5c);
      }
      else {
        FUN_00431579(param_4);
        iVar4 = *(int *)(param_1_00 + 0x10);
        iVar2 = iVar4 + param_3 * -0x54;
        local_b4 = 5;
        uVar3 = FUN_00a75810(iVar2,iVar4,iVar4);
        *(undefined4 *)(param_1_00 + 0x10) = uVar3;
        FUN_00a75660(param_2,iVar2,iVar4);
        FUN_00a752a0(param_2,param_3 * 0x54 + param_2,local_b0);
      }
      local_b4 = 0xffffffff;
      FUN_004310b0();
    }
  }
  ExceptionList = local_bc;
  ___security_check_cookie_4();
  return;
}



void Catch_All_00a75c5c(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + -0x20);
  iVar2 = *(int *)(unaff_EBP + -0x24);
  iVar3 = *(int *)(unaff_EBP + -0x18);
  if (1 < iVar1) {
    FUN_0042f506(iVar3,iVar2 * 0x54 + iVar3);
  }
  if (0 < iVar1) {
    FUN_0042f506(iVar2 * 0x54 + iVar3,(iVar2 + *(int *)(unaff_EBP + 0xbc)) * 0x54 + iVar3);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar3);
}



void Catch_All_00a75d55(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  
  iVar3 = *(int *)(unaff_EBP + 0xbc) * 0x54;
  FUN_0042f506(iVar3 + *(int *)(unaff_EBP + 0xb8),
               *(int *)(*(int *)(unaff_EBP + -0x1c) + 0x10) + iVar3);
  __CxxThrowException_8(0,0);
  FUN_00431579(*(undefined4 *)(unaff_EBP + -0x14));
  iVar3 = *(int *)(unaff_ESI + 0x10);
  iVar4 = iVar3 + unaff_EDI * -0x54;
  *(undefined4 *)(unaff_EBP + -4) = 5;
  *(int *)(unaff_EBP + -0x14) = iVar4;
  uVar5 = FUN_00a75810(iVar4,iVar3,iVar3);
  uVar1 = *(undefined4 *)(unaff_EBP + -0x14);
  uVar2 = *(undefined4 *)(unaff_EBP + 0xb8);
  *(undefined4 *)(unaff_ESI + 0x10) = uVar5;
  FUN_00a75660(uVar2,uVar1,iVar3);
  FUN_00a752a0(*(int *)(unaff_EBP + 0xb8),unaff_EDI * 0x54 + *(int *)(unaff_EBP + 0xb8));
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_004310b0();
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  ___security_check_cookie_4();
  return;
}



undefined4 * __thiscall FUN_00a75e10(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf33e8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_00a6f9b0(param_1);
  *param_1_00 = boost::program_options::invalid_syntax::vftable;
  param_1_00[0x29] = *(undefined4 *)(param_1 + 0xa4);
  *param_1_00 = boost::program_options::invalid_command_line_syntax::vftable;
  param_1_00[0x2a] = boost::exception::vftable;
  piVar1 = *(int **)(param_1 + 0xac);
  local_4 = 0;
  param_1_00[0x2b] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 0xc))(uVar2);
  }
  param_1_00[0x2c] = *(undefined4 *)(param_1 + 0xb0);
  param_1_00[0x2d] = *(undefined4 *)(param_1 + 0xb4);
  param_1_00[0x2e] = *(undefined4 *)(param_1 + 0xb8);
  *param_1_00 = boost::exception_detail::
                error_info_injector<class_boost::program_options::invalid_command_line_syntax>::
                vftable;
  param_1_00[0x2a] =
       boost::exception_detail::
       error_info_injector<class_boost::program_options::invalid_command_line_syntax>::vftable;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a75ed0(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3437;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_3 != 0) {
    param_1_00[0x2f] = &DAT_00da4ef4;
    param_1_00[0x31] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a75e10(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::invalid_command_line_syntax>_>
                ::vftable;
  param_1_00[0x2a] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::invalid_command_line_syntax>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2f] + 4) + 0xbc + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::invalid_command_line_syntax>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0x2f] + 4) + 0xb8 + (int)param_1_00) =
       *(int *)(param_1_00[0x2f] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xa8;
  }
  FUN_00401200(param_1_00 + 0x2a,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_00a75fb0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a75920(param_2);
  return param_1;
}



undefined4 * __thiscall FUN_00a75fd0(undefined4 *param_1_00,int param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3437;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0x2f] = &DAT_00da4ef4;
    param_1_00[0x31] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a75e10(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::invalid_command_line_syntax>_>
                ::vftable;
  param_1_00[0x2a] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::invalid_command_line_syntax>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2f] + 4) + 0xbc + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::invalid_command_line_syntax>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0x2f] + 4) + 0xb8 + (int)param_1_00) =
       *(int *)(param_1_00[0x2f] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xa8;
  }
  FUN_00401200(param_1_00 + 0x2a,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __thiscall
FUN_00a760b0(code **param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined *puVar3;
  undefined local_24 [16];
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3481;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar3 = local_24;
  uVar2 = (**param_1_00)(puVar3,param_3,DAT_0323f878 ^ (uint)&stack0xffffffd4);
  uVar1 = uStack_4;
  local_c = (void *)0x1;
  FUN_00a75980(uVar2);
  local_c = (void *)((uint)local_c & 0xffffff00);
  FUN_0042f14c(puVar3,param_3,1);
  ExceptionList = pvStack_14;
  return uVar1;
}



undefined4 __thiscall FUN_00a76130(uint *param_1_00,undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  uint uVar2;
  uint *extraout_ECX;
  undefined local_4c [64];
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf34c9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = *param_1_00;
  if (uVar2 == 0) {
    uVar1 = FUN_00412b7a(DAT_0323f878 ^ (uint)&stack0xffffffac);
    local_4 = 1;
    uVar2 = FUN_00412f44(uVar1);
    param_1_00 = extraout_ECX;
  }
  uVar1 = (**(code **)((uVar2 & 0xfffffffe) + 4))(local_4c,param_1_00 + 2,param_2);
  local_4 = 2;
  FUN_00a75980(uVar1);
  local_4 = local_4 & 0xffffff00;
  FUN_0042f14c();
  ExceptionList = local_c;
  return param_1;
}



void __thiscall
FUN_00a761e0(int **param_1_00,undefined4 param_1,int *param_2,int param_3,undefined4 param_4)

{
  int *piVar1;
  int iVar2;
  int **unaff_EBX;
  int iVar3;
  int *piVar4;
  
  piVar4 = param_1_00[3];
  iVar2 = (int)param_1_00[4] - (int)piVar4;
  iVar3 = iVar2 >> 0x1f;
  if (iVar2 / 0x54 + iVar3 == iVar3) {
    iVar3 = 0;
  }
  else {
    if (param_1_00[4] < piVar4) {
      FUN_00a3fb10();
    }
    if ((param_2 == (int *)0x0) || (param_2 != *param_1_00)) {
      FUN_00a3fb10();
    }
    iVar3 = (param_3 - (int)piVar4) / 0x54;
  }
  FUN_00a75a90(param_2,param_3,1,param_4);
  piVar4 = param_1_00[3];
  if (param_1_00[4] < piVar4) {
    FUN_00a3fb10();
  }
  piVar1 = *param_1_00;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1;
  }
  piVar4 = piVar4 + iVar3 * 0x15;
  if (piVar4 <= *(int **)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(int **)(iVar3 + 0xc) <= piVar4) goto LAB_00a76297;
  }
  FUN_00a3fb10();
LAB_00a76297:
  unaff_EBX[1] = piVar4;
  *unaff_EBX = piVar1;
  return;
}



undefined4 * __thiscall FUN_00a762b0(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf350f;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0x2f] = &DAT_00da4ef4;
    param_1_00[0x31] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a75e10(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::invalid_command_line_syntax>_>
                ::vftable;
  param_1_00[0x2a] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::invalid_command_line_syntax>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2f] + 4) + 0xbc + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::invalid_command_line_syntax>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0x2f] + 4) + 0xb8 + (int)param_1_00) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_00a76370(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(200);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00a75ed0(param_1 + -0xc4,local_14,1);
    if (iVar2 != 0) {
      ExceptionList = local_c;
      return *(int *)(*(int *)(iVar2 + 0xbc) + 4) + 0xbc + iVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_00a76410(int param_1)

{
  code *pcVar1;
  undefined local_c8 [200];
  
  FUN_00a762b0(param_1 + -0xc4,1);
  __CxxThrowException_8(local_c8,&DAT_03112ae0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00a76440(undefined4 param_1,undefined4 param_2)

{
  FUN_00a75fd0(param_2,1);
  return param_1;
}



void FUN_00a764a0(void)

{
  FUN_00a76410();
  return;
}



void FUN_00a764b0(void)

{
  FUN_00a76370();
  return;
}



void __thiscall FUN_00a764c0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint local_8 [2];
  
  uVar1 = param_1_00[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(param_1_00[5] - uVar1) / 0x54;
  }
  uVar2 = param_1_00[4];
  if ((uint)((int)(uVar2 - uVar1) / 0x54) < uVar3) {
    local_8[0] = local_8[0] & 0xffffff00;
    FUN_00a75480(uVar2,1,param_1,param_1_00 + 2,param_1,local_8[0]);
    param_1_00[4] = uVar2 + 0x54;
    return;
  }
  if (uVar2 < uVar1) {
    FUN_00a3fb10();
  }
  FUN_00a761e0(local_8,*param_1_00,uVar2,param_1);
  return;
}



void FUN_00a76560(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_190 [200];
  undefined local_c8 [188];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf353b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_00a75fb0(local_c8,param_1,DAT_0323f878 ^ (uint)local_190);
  local_4 = 0;
  FUN_00a76440(local_190,uVar2);
  __CxxThrowException_8(local_190,&DAT_03112ae0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __thiscall
FUN_00a76610(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            undefined4 *param_2,int param_3)

{
  int *piVar1;
  code *pcVar2;
  int iVar3;
  int *piVar4;
  uint *puVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar6;
  undefined4 uVar7;
  int **ppiVar8;
  int iVar9;
  uint uVar10;
  uint uStack_188;
  undefined **local_178 [42];
  undefined local_d0 [8];
  undefined local_c8 [24];
  undefined4 local_b0;
  undefined4 local_a4;
  int local_98;
  int local_94;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_8c [4];
  undefined local_88;
  undefined4 local_78;
  undefined4 local_74;
  uint *local_70;
  void *local_6c;
  undefined *puStack_68;
  undefined4 local_64;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_60 [4];
  undefined local_5c [16];
  undefined4 local_4c;
  undefined4 local_48;
  int local_44;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_40;
  undefined local_3c [4];
  undefined4 local_38;
  undefined4 local_34;
  int local_30;
  undefined4 local_2c;
  undefined4 local_28;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_24 [4];
  uint local_20;
  undefined4 local_10;
  uint local_c;
  uint local_8;
  
  local_64._0_1_ = 0xff;
  local_64._1_3_ = 0xffffff;
  puStack_68 = &LAB_00bf35fc;
  local_6c = ExceptionList;
  uStack_188 = DAT_0323f878 ^ (uint)local_60;
  local_70 = &uStack_188;
  ExceptionList = &local_6c;
  local_40 = param_1;
  local_44 = param_3;
  puVar5 = &uStack_188;
  local_30 = param_1_00;
  local_8 = uStack_188;
  if (*(int *)(param_1 + 0x14) == 0) goto LAB_00a76717;
  local_c = 0xf;
  local_10 = 0;
  local_20 = local_20 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_24,param_1,0,0xffffffff);
  local_64 = 0;
  iVar9 = *(int *)(param_1 + 0x48) - *(int *)(param_1 + 0x44) >> 0x1f;
  if ((*(int *)(param_1 + 0x48) - *(int *)(param_1 + 0x44)) / 0x1c + iVar9 != iVar9) {
    pbVar6 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_0064cef0(0);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_24,pbVar6,0,0xffffffff);
  }
  uVar10 = *(uint *)(local_30 + 0x18);
  local_28 = CONCAT31(local_28._1_3_,(char)(uVar10 >> 0xb)) & 0xffffff01;
  local_2c = CONCAT31(local_2c._1_3_,(char)(uVar10 >> 9)) & 0xffffff01;
  local_34 = CONCAT31(local_34._1_3_,(char)(uVar10 >> 10)) & 0xffffff01;
  local_64._0_1_ = 1;
  local_2c = FUN_00a70c30(param_1,local_2c,local_34,local_28);
  if (local_2c == 0) {
    if (*(char *)(local_30 + 0x1c) == '\0') {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                (local_8c,(char *)&PTR_02bd3fc0);
      local_64._0_1_ = 2;
      uVar7 = FUN_00a6fcb0(local_8c);
      local_64._0_1_ = 3;
      FUN_00a70f00(uVar7);
      goto LAB_00a76762;
    }
    param_1[0x50] =
         (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x1;
    local_2c = 0;
  }
  else {
LAB_00a76762:
    pbVar6 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_00a6be60(param_1);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (param_1,pbVar6,0,0xffffffff);
    ppiVar8 = (int **)FUN_00a6bb50(local_3c);
    local_64._0_1_ = 4;
    local_28 = (**(code **)(**ppiVar8 + 4))();
    piVar4 = local_38;
    local_64._0_1_ = 1;
    if (local_38 != (int *)0x0) {
      LOCK();
      iVar9 = local_38[1] + -1;
      local_38[1] = iVar9;
      UNLOCK();
      if (iVar9 == 0) {
        (**(code **)(*local_38 + 4))();
        piVar1 = piVar4 + 2;
        LOCK();
        iVar9 = *piVar1 + -1;
        *piVar1 = iVar9;
        UNLOCK();
        if (iVar9 == 0) {
          (**(code **)(*piVar4 + 8))();
        }
      }
    }
    ppiVar8 = (int **)FUN_00a6bb50(local_3c);
    local_64._0_1_ = 5;
    local_2c = (**(code **)(**ppiVar8 + 8))();
    piVar4 = local_38;
    local_64._0_1_ = 1;
    if (local_38 != (int *)0x0) {
      LOCK();
      iVar9 = local_38[1] + -1;
      local_38[1] = iVar9;
      UNLOCK();
      if (iVar9 == 0) {
        (**(code **)(*local_38 + 4))();
        piVar1 = piVar4 + 2;
        LOCK();
        iVar9 = *piVar1 + -1;
        *piVar1 = iVar9;
        UNLOCK();
        if (iVar9 == 0) {
          (**(code **)(*piVar4 + 8))();
        }
      }
    }
    uVar10 = local_28;
    if ((uint)((*(int *)(param_1 + 0x30) - *(int *)(param_1 + 0x2c)) / 0x1c +
              (int)(param_2[4] - param_2[3]) / 0x1c) < local_28) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                (local_8c,(char *)&PTR_02bd3fc0);
      local_64._0_1_ = 0x10;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                (local_60,(char *)&PTR_02bd3fc0);
      local_64._0_1_ = 0x11;
      FUN_00a75520(0x22,local_60,local_8c,0);
      local_178[0] = boost::program_options::invalid_command_line_syntax::vftable;
      local_64 = CONCAT31(local_64._1_3_,0x12);
      FUN_00a76560(local_178);
      uVar7 = FUN_00a738c0();
      FUN_00a72550(local_40,local_24,uVar7);
      __CxxThrowException_8(0,0);
      pcVar2 = (code *)swi(3);
      (*pcVar2)();
      return;
    }
    iVar9 = *(int *)(param_1 + 0x30) - *(int *)(param_1 + 0x2c) >> 0x1f;
    if (((*(int *)(param_1 + 0x30) - *(int *)(param_1 + 0x2c)) / 0x1c + iVar9 != iVar9) &&
       (local_2c == 0)) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                (local_8c,(char *)&PTR_02bd3fc0);
      local_64._0_1_ = 6;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                (local_60,(char *)&PTR_02bd3fc0);
      local_64._0_1_ = 7;
      uVar7 = FUN_00a75620(0x23,local_60,local_8c,0);
      local_64._0_1_ = 8;
      FUN_00a76560(uVar7);
    }
    if (uVar10 < (uint)((*(int *)(param_1 + 0x30) - *(int *)(param_1 + 0x2c)) / 0x1c)) {
      local_28 = 0;
      iVar9 = 0;
    }
    else {
      iVar9 = (int)((ulonglong)
                    ((longlong)(*(int *)(param_1 + 0x30) - *(int *)(param_1 + 0x2c)) * 0x6db6db6d)
                   >> 0x20) - (*(int *)(param_1 + 0x30) - *(int *)(param_1 + 0x2c));
      iVar9 = uVar10 + ((iVar9 >> 4) - (iVar9 >> 0x1f));
    }
    iVar3 = (int)(param_2[4] - param_2[3]) >> 0x1f;
    if (((int)(param_2[4] - param_2[3]) / 0x1c + iVar3 != iVar3) &&
       (local_28 = iVar9 - 1, iVar9 != 0)) {
      FUN_004306a7();
      local_64._0_1_ = 9;
      uVar7 = FUN_0064cef0(0);
      FUN_00a75150(1,uVar7);
      local_64._0_1_ = 10;
      for (uVar10 = 0;
          (iVar9 = local_94 - local_98 >> 0x1f, (local_94 - local_98) / 0x54 + iVar9 == iVar9 &&
          (uVar10 < (uint)(*(int *)(local_44 + 0x10) - *(int *)(local_44 + 0xc) >> 5)));
          uVar10 = uVar10 + 1) {
        uVar7 = FUN_00a76130(local_5c,local_c8);
        local_64._0_1_ = 0xb;
        FUN_004305b7(uVar7);
        local_64._0_1_ = 10;
        FUN_0042f14c();
      }
      iVar9 = local_94 - local_98 >> 0x1f;
      if ((local_94 - local_98) / 0x54 + iVar9 != iVar9) {
        iVar9 = (int)(param_2[4] - param_2[3]) >> 0x1f;
        if ((int)(param_2[4] - param_2[3]) / 0x1c + iVar9 == iVar9) {
          FUN_00a3fb10();
        }
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                  (local_24,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                             *)param_2[3],0,0xffffffff);
        uVar10 = *(uint *)(local_30 + 0x18);
        local_2c = CONCAT31(local_2c._1_3_,(char)(uVar10 >> 0xb)) & 0xffffff01;
        local_38 = (int *)(CONCAT31(local_38._1_3_,(char)(uVar10 >> 9)) & 0xffffff01);
        local_34 = CONCAT31(local_34._1_3_,(char)(uVar10 >> 10)) & 0xffffff01;
        iVar9 = (int)(param_2[4] - param_2[3]) >> 0x1f;
        if ((int)(param_2[4] - param_2[3]) / 0x1c + iVar9 == iVar9) {
          FUN_00a3fb10();
        }
        iVar9 = FUN_00a70c30(param_2[3],local_38,local_34,local_2c);
        if (iVar9 != 0) {
          param_2 = (undefined4 *)&DAT_0000000f;
          local_48 = 0xf;
          local_4c = 0;
          local_5c[0] = 0;
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                    (local_60,(char *)&PTR_02bd3fc0,0);
          local_64._0_1_ = 0xc;
          local_74 = 0xf;
          local_78 = 0;
          local_88 = 0;
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                    (local_8c,(char *)&PTR_02bd3fc0,0);
          local_64._0_1_ = 0xd;
          FUN_00a75520(0x22,local_8c,local_60,0);
          local_178[0] = boost::program_options::invalid_command_line_syntax::vftable;
          local_64._0_1_ = 0xe;
          FUN_00a76560(local_178);
        }
      }
      iVar9 = (int)(param_2[4] - param_2[3]) >> 0x1f;
      if ((int)(param_2[4] - param_2[3]) / 0x1c + iVar9 == iVar9) {
        FUN_00a3fb10();
      }
      FUN_00430aa3(param_2[3]);
      iVar9 = (int)(param_2[4] - param_2[3]) >> 0x1f;
      if ((int)(param_2[4] - param_2[3]) / 0x1c + iVar9 == iVar9) {
        FUN_00a3fb10();
      }
      FUN_00430aa3(param_2[3]);
      uVar10 = param_2[3];
      local_b0 = 0;
      if ((uint)param_2[4] < uVar10) {
        FUN_00a3fb10();
      }
      FUN_00a749e0(local_d0,*param_2,uVar10);
      local_64._0_1_ = 9;
      FUN_0042f0c1();
      local_64._0_1_ = 0xf;
      FUN_0042f33c();
      local_64 = CONCAT31(local_64._1_3_,1);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_a4);
    }
  }
  puVar5 = local_70;
  if (0xf < local_c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_20);
  }
LAB_00a76717:
  local_70 = puVar5;
  ExceptionList = local_6c;
  ___security_check_cookie_4();
  return;
}



void Catch_00a76bd6(void)

{
  code *pcVar1;
  undefined4 uVar2;
  int unaff_EBP;
  
  uVar2 = FUN_00a738c0();
  FUN_00a72550(*(undefined4 *)(unaff_EBP + 0x20),unaff_EBP + 0x3c,uVar2);
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00a76c00(undefined4 param_1,int param_2)

{
  int iVar1;
  char **ppcVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  int iVar6;
  char **ppcVar7;
  undefined local_17c [4];
  undefined4 local_178;
  undefined4 local_174;
  undefined local_170 [8];
  undefined local_168 [28];
  undefined local_14c [176];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_9c [4];
  undefined local_98;
  undefined4 local_88;
  undefined4 local_84;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_80 [4];
  undefined local_7c;
  int local_6c;
  undefined4 local_68;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_64 [84];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf3699;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_17c;
  ExceptionList = &local_c;
  local_4 = 0;
  local_178 = param_1;
  local_174 = 0;
  FUN_004306a7(DAT_0323f878 ^ (uint)&stack0xfffffe74);
  iVar6 = *(int *)(param_2 + 0x10) - *(int *)(param_2 + 0xc);
  iVar1 = iVar6 >> 0x1f;
  local_4 = 0;
  local_174 = 1;
  if (iVar6 / 0x1c + iVar1 == iVar1) {
    FUN_00a3fb10();
  }
  iVar1 = *(int *)(param_2 + 0xc);
  if (*(uint *)(iVar1 + 0x14) < 3) goto LAB_00a76eda;
  ppcVar7 = (char **)(iVar1 + 4);
  ppcVar2 = ppcVar7;
  if (0xf < *(uint *)(iVar1 + 0x18)) {
    ppcVar2 = (char **)*ppcVar7;
  }
  if (*(char *)ppcVar2 != '-') goto LAB_00a76eda;
  if (*(uint *)(iVar1 + 0x14) == 0) {
    FUN_00a3fb10();
  }
  if (0xf < *(uint *)(iVar1 + 0x18)) {
    ppcVar7 = (char **)*ppcVar7;
  }
  if (*(char *)((int)ppcVar7 + 1) != '-') goto LAB_00a76eda;
  local_84 = 0xf;
  local_88 = 0;
  local_98 = 0;
  local_68 = 0xf;
  local_6c = 0;
  local_7c = 0;
  local_4._0_1_ = 2;
  local_4._1_3_ = 0;
  local_17c[0] = 0x3d;
  iVar6 = FUN_004277a0(local_17c,0,1);
  if (iVar6 == -1) {
LAB_00a76de1:
    pbVar3 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_005d0682(local_168,2,0xffffffff);
    local_4._0_1_ = 6;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_9c,pbVar3,0,0xffffffff);
    local_4._0_1_ = 2;
    FUN_004670d7();
  }
  else {
    pbVar3 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_005d0682(local_168,2,iVar6 + -2);
    local_4._0_1_ = 3;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_9c,pbVar3,0,0xffffffff);
    local_4._0_1_ = 2;
    FUN_004670d7();
    pbVar3 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_005d0682(local_168,iVar6 + 1,0xffffffff);
    local_4._0_1_ = 4;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_80,pbVar3,0,0xffffffff);
    local_4._0_1_ = 2;
    FUN_004670d7();
    if (local_6c == 0) {
      uVar4 = FUN_00a738c0();
      uVar4 = FUN_00a75620(0x21,local_9c,local_9c,uVar4);
      local_4._0_1_ = 5;
      FUN_00a76560(uVar4);
      goto LAB_00a76de1;
    }
  }
  FUN_00a74ae0();
  local_4 = CONCAT31(local_4._1_3_,7);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_64,local_9c,0,0xffffffff);
  if (local_6c != 0) {
    FUN_00430aa3(local_80);
  }
  FUN_00430aa3(iVar1);
  FUN_00a764c0(local_64);
  puVar5 = (undefined4 *)FUN_00430bb1(local_170);
  FUN_00a749e0(local_14c,*puVar5,puVar5[1]);
  local_4._0_1_ = 2;
  FUN_004310b0();
  local_4._0_1_ = 1;
  FUN_004670d7();
  local_4 = (uint)local_4._1_3_ << 8;
  FUN_004670d7();
LAB_00a76eda:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void Catch_00a772d2(void)

{
  undefined4 uVar1;
  int unaff_EBP;
  
  uVar1 = FUN_00a738c0();
  FUN_00a72550(unaff_EBP + 0x54,unaff_EBP + 0x54,uVar1);
  __CxxThrowException_8(0,0);
  FUN_004306a7();
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  ___security_check_cookie_4();
  return;
}



void FUN_00a77330(undefined4 param_1,undefined4 *param_2)

{
  int iVar1;
  uint uVar2;
  char *pcVar3;
  undefined4 uVar4;
  undefined4 local_c8;
  undefined4 local_c4;
  undefined local_c0 [4];
  uint local_bc;
  undefined4 local_ac;
  uint local_a8;
  undefined local_a4 [8];
  undefined local_9c [4];
  uint uStack_98;
  int local_88;
  uint uStack_84;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_80 [4];
  undefined4 uStack_7c;
  uint uStack_68;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_64 [84];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf3798;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_c8;
  ExceptionList = &local_c;
  local_4 = 0;
  local_c4 = param_1;
  local_c8 = 0;
  FUN_004306a7(DAT_0323f878 ^ (uint)&stack0xffffff28);
  iVar1 = (int)(param_2[4] - param_2[3]) >> 0x1f;
  local_4 = 0;
  local_c8 = 1;
  if ((int)(param_2[4] - param_2[3]) / 0x1c + iVar1 == iVar1) {
    FUN_00a3fb10();
  }
  iVar1 = param_2[3];
  if (1 < *(uint *)(iVar1 + 0x14)) {
    if (*(uint *)(iVar1 + 0x18) < 0x10) {
      pcVar3 = (char *)(iVar1 + 4);
    }
    else {
      pcVar3 = *(char **)(iVar1 + 4);
    }
    if (*pcVar3 == '/') {
      uVar4 = FUN_005d0682(local_c0,1,1);
      local_4 = 1;
      FUN_00a6c7b0(local_80,&DAT_00d2b6d8,uVar4);
      local_4._0_1_ = 3;
      if (0xf < local_a8) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_bc);
      }
      local_a8 = 0xf;
      local_ac = 0;
      local_bc = local_bc & 0xffffff00;
      FUN_005d0682(local_9c,2,0xffffffff);
      local_4._0_1_ = 4;
      FUN_00a74ae0();
      local_4 = CONCAT31(local_4._1_3_,5);
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (local_64,local_80,0,0xffffffff);
      if (local_88 != 0) {
        FUN_00430aa3(local_9c);
      }
      FUN_00430aa3(iVar1);
      FUN_00a764c0(local_64);
      uVar2 = param_2[3];
      if ((uint)param_2[4] < uVar2) {
        FUN_00a3fb10();
      }
      FUN_00a749e0(local_a4,*param_2,uVar2);
      local_4 = CONCAT31(local_4._1_3_,4);
      FUN_004310b0();
      if (0xf < uStack_84) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_98);
      }
      uStack_84 = 0xf;
      local_88 = 0;
      uStack_98 = uStack_98 & 0xffffff00;
      if (0xf < uStack_68) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(uStack_7c);
      }
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00a77550(int param_1_00,undefined4 param_1,uint param_2)

{
  uint uVar1;
  uint *puVar2;
  int **ppiVar3;
  int iVar4;
  undefined4 uVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar6;
  char *pcVar7;
  int iVar8;
  uint uVar9;
  int **ppiVar10;
  uint uStack_54;
  undefined local_44 [4];
  undefined4 local_40;
  uint local_2c;
  int local_24;
  undefined4 local_20;
  undefined4 local_1c;
  int local_18;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  uVar1 = param_2;
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bf37d8;
  local_10 = ExceptionList;
  uStack_54 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_54;
  ExceptionList = &local_10;
  iVar8 = *(int *)(param_2 + 0x10) - *(int *)(param_2 + 0xc);
  iVar4 = iVar8 >> 0x1f;
  local_24 = 0;
  local_18 = param_1_00;
  puVar2 = &uStack_54;
  if (iVar8 / 0x1c + iVar4 == iVar4) {
    FUN_00a3fb10();
    puVar2 = local_14;
  }
  local_14 = puVar2;
  iVar4 = *(int *)(uVar1 + 0xc);
  local_24 = iVar4;
  if (*(uint *)(iVar4 + 0x14) < 2) goto LAB_00a776eb;
  uVar9 = *(uint *)(iVar4 + 0x18);
  ppiVar10 = (int **)(iVar4 + 4);
  ppiVar3 = ppiVar10;
  if (0xf < uVar9) {
    ppiVar3 = (int **)*ppiVar10;
  }
  if (*(char *)ppiVar3 == '-') {
    if (*(uint *)(iVar4 + 0x14) == 0) {
      FUN_00a3fb10();
    }
    uVar9 = *(uint *)(iVar4 + 0x18);
    ppiVar3 = ppiVar10;
    if (0xf < uVar9) {
      ppiVar3 = (int **)*ppiVar10;
    }
    if (*(char *)((int)ppiVar3 + 1) == '-') goto LAB_00a775ee;
  }
  else {
LAB_00a775ee:
    if ((*(byte *)(local_18 + 0x18) & 8) == 0) goto LAB_00a776eb;
    if (0xf < uVar9) {
      ppiVar10 = (int **)*ppiVar10;
    }
    if (*(char *)ppiVar10 != '/') goto LAB_00a776eb;
  }
  local_8 = 0;
  param_2._0_1_ = 0x3d;
  iVar4 = FUN_004277a0(&param_2,0,1);
  uVar5 = FUN_005d0682(local_44,1,iVar4 + -1);
  uVar9 = *(uint *)(local_18 + 0x18);
  param_2 = CONCAT31(param_2._1_3_,(char)(uVar9 >> 0xb)) & 0xffffff01;
  local_20 = CONCAT31(local_20._1_3_,(char)(uVar9 >> 9)) & 0xffffff01;
  local_1c = CONCAT31(local_1c._1_3_,(char)(uVar9 >> 10)) & 0xffffff01;
  local_8._0_1_ = 1;
  iVar4 = FUN_00a70c30(uVar5,local_20,local_1c,param_2);
  local_8 = (uint)local_8._1_3_ << 8;
  if (0xf < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40);
  }
  if (iVar4 != 0) {
    FUN_0064cef0(0);
    FUN_00a73f40(0,&DAT_00d2b6d8,1);
    pbVar6 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_0064cef0(0);
    pcVar7 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
             operator[](pbVar6,1);
    if (*pcVar7 == '/') {
      pbVar6 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               FUN_0064cef0(0);
      pcVar7 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
               operator[](pbVar6,1);
      *pcVar7 = '-';
    }
    FUN_00a76c00(param_1,uVar1);
    ExceptionList = local_10;
    return param_1;
  }
  local_8 = 0xffffffff;
LAB_00a776eb:
  FUN_004306a7();
  ExceptionList = local_10;
  return param_1;
}



void Catch_00a7770b(void)

{
  code *pcVar1;
  undefined4 uVar2;
  int unaff_EBP;
  
  uVar2 = FUN_00a738c0();
  FUN_00a72550(*(undefined4 *)(unaff_EBP + -0x20),*(undefined4 *)(unaff_EBP + -0x20),uVar2);
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00a77730(undefined4 param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  int iVar2;
  uint uVar3;
  undefined4 local_74;
  uint local_70 [2];
  undefined4 local_68;
  undefined local_64 [28];
  undefined4 local_48;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bf3821;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_74;
  ExceptionList = &local_c;
  local_4 = 0;
  local_68 = param_1;
  local_74 = 0;
  FUN_004306a7(DAT_0323f878 ^ (uint)&stack0xffffff7c);
  iVar2 = (int)(param_2[4] - param_2[3]) >> 0x1f;
  local_4 = 0;
  local_74 = 1;
  if ((int)(param_2[4] - param_2[3]) / 0x1c + iVar2 == iVar2) {
    FUN_00a3fb10();
  }
  iVar2 = FUN_00429910(0,*(undefined4 *)(param_2[3] + 0x14),&DAT_00da420c,2);
  if (iVar2 == 0) {
    uVar3 = 1;
    if (1 < (uint)((int)(param_2[4] - param_2[3]) / 0x1c)) {
      iVar2 = 0;
      do {
        iVar2 = iVar2 + 0x1c;
        FUN_00a74ae0();
        local_4 = 1;
        if ((uint)((int)(param_2[4] - param_2[3]) / 0x1c) <= uVar3) {
          FUN_00a3fb10();
        }
        FUN_00430aa3(param_2[3] + iVar2);
        if ((uint)((int)(param_2[4] - param_2[3]) / 0x1c) <= uVar3) {
          FUN_00a3fb10();
        }
        FUN_00430aa3(param_2[3] + iVar2);
        local_48 = 0x7fffffff;
        FUN_00a764c0(local_64);
        local_4 = local_4 & 0xffffff00;
        FUN_004310b0();
        uVar3 = uVar3 + 1;
      } while (uVar3 < (uint)((int)(param_2[4] - param_2[3]) / 0x1c));
    }
    local_70[0] = param_2[4];
    if (local_70[0] < (uint)param_2[3]) {
      FUN_00a3fb10();
    }
    uVar3 = param_2[3];
    uVar1 = *param_2;
    if ((uint)param_2[4] < uVar3) {
      FUN_00a3fb10();
    }
    FUN_00431401(local_70,*param_2,uVar3,uVar1,local_70[0]);
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void FUN_00a77920(undefined4 param_1,undefined4 *param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 local_ac;
  undefined4 local_a8;
  undefined local_a4 [8];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_9c [20];
  int local_88;
  undefined local_80 [20];
  int local_6c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_64 [84];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf3885;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_ac;
  ExceptionList = &local_c;
  local_4 = 0;
  local_a8 = param_1;
  local_ac = 0;
  FUN_004306a7(DAT_0323f878 ^ (uint)&stack0xffffff44);
  iVar2 = (int)(param_2[4] - param_2[3]) >> 0x1f;
  local_4 = 0;
  local_ac = 1;
  if ((int)(param_2[4] - param_2[3]) / 0x1c + iVar2 == iVar2) {
    FUN_00a3fb10();
  }
  FUN_00a74f40(local_9c,param_2[3]);
  local_4 = 1;
  if (local_88 != 0) {
    FUN_00a74ae0();
    local_4 = CONCAT31(local_4._1_3_,2);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_64,local_9c,0,0xffffffff);
    if (local_6c != 0) {
      FUN_00430aa3(local_80);
    }
    FUN_00a764c0(local_64);
    uVar1 = param_2[3];
    if ((uint)param_2[4] < uVar1) {
      FUN_00a3fb10();
    }
    FUN_00a749e0(local_a4,*param_2,uVar1);
    local_4 = CONCAT31(local_4._1_3_,1);
    FUN_004310b0();
  }
  local_4 = local_4 & 0xffffff00;
  FUN_00a6bff0();
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall FUN_00a77ac0(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 local_8;
  undefined4 local_4;
  
  local_8 = param_1;
  local_4 = param_2;
  cVar1 = FUN_007f2630(&local_8);
  if (cVar1 == '\0') {
    if (param_1_00 + 2 != (undefined4 *)0x0) {
      param_1_00[2] = local_8;
      param_1_00[3] = local_4;
    }
    *param_1_00 = &DAT_00da4efd;
    return;
  }
  *param_1_00 = 0;
  return;
}



void __thiscall FUN_00a77b20(undefined4 *param_1_00,int **param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  int **ppiVar3;
  uint uVar4;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar5;
  undefined4 uVar6;
  int *piVar7;
  int iVar8;
  char *pcVar9;
  int iVar10;
  byte bVar11;
  uint uVar12;
  int iVar13;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this;
  uint uStack_130;
  undefined local_114 [4];
  int *local_110;
  undefined local_10c [4];
  int *local_108;
  undefined4 local_104;
  undefined4 local_100;
  undefined4 local_fc;
  undefined local_f8 [12];
  int local_ec;
  int local_e8;
  int *local_e0;
  int *local_dc;
  undefined4 local_d8;
  uint local_cc [2];
  int *local_c4 [3];
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 local_b0;
  int *local_ac [3];
  int *local_a0;
  int *local_9c;
  undefined4 local_98;
  int *local_94 [3];
  int *local_88;
  int *local_84;
  int *local_80;
  uint *local_7c;
  void *local_78;
  undefined *puStack_74;
  undefined4 local_70;
  int **local_6c;
  undefined4 *local_68;
  uint local_64;
  uint local_60;
  undefined local_5c [4];
  undefined local_58;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  int *local_3c [3];
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  int *local_24 [3];
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined local_c;
  undefined local_b;
  uint local_8;
  
  puStack_74 = &LAB_00bf39a6;
  local_78 = ExceptionList;
  uStack_130 = DAT_0323f878 ^ (uint)&local_6c;
  local_7c = &uStack_130;
  ExceptionList = &local_78;
  local_70 = 0;
  local_6c = param_1;
  local_100 = 0;
  local_68 = param_1_00;
  local_8 = uStack_130;
  FUN_00a74790();
  local_70._0_1_ = 1;
  local_70._1_3_ = 0;
  if ((-(uint)(param_1_00[0x12] != 0) & 0x9b4100) != 0) {
    FUN_00a751c0(param_1_00 + 0x12);
  }
  if ((-(uint)(param_1_00[10] != 0) & 0x9b4100) != 0) {
    local_cc[0] = 0;
    FUN_00a77ac0(FUN_00a77920,param_1_00);
    local_70._0_1_ = 2;
    FUN_00a751c0(local_cc);
    local_70._0_1_ = 1;
    if (((local_cc[0] != 0) && ((local_cc[0] & 1) == 0)) &&
       (*(code **)(local_cc[0] & 0xfffffffe) != (code *)0x0)) {
      (**(code **)(local_cc[0] & 0xfffffffe))(local_c4,local_c4,2);
    }
  }
  if ((*(byte *)(param_1_00 + 6) & 1) != 0) {
    local_cc[0] = 0;
    FUN_00a77ac0(FUN_00a76c00,param_1_00);
    local_70._0_1_ = 3;
    FUN_00a751c0(local_cc);
    local_70._0_1_ = 1;
    if (((local_cc[0] != 0) && ((local_cc[0] & 1) == 0)) &&
       (*(code **)(local_cc[0] & 0xfffffffe) != (code *)0x0)) {
      (**(code **)(local_cc[0] & 0xfffffffe))(local_c4,local_c4,2);
    }
  }
  if ((param_1_00[6] & 0x1000) != 0) {
    local_cc[0] = 0;
    FUN_00a77ac0(FUN_00a77550,param_1_00);
    local_70._0_1_ = 4;
    FUN_00a751c0(local_cc);
    local_70._0_1_ = 1;
    if (((local_cc[0] != 0) && ((local_cc[0] & 1) == 0)) &&
       (*(code **)(local_cc[0] & 0xfffffffe) != (code *)0x0)) {
      (**(code **)(local_cc[0] & 0xfffffffe))(local_c4,local_c4,2);
    }
  }
  if (((param_1_00[6] & 2) != 0) && ((param_1_00[6] & 4) != 0)) {
    local_cc[0] = 0;
    FUN_00a77ac0(&DAT_00a76f10,param_1_00);
    local_70._0_1_ = 5;
    FUN_00a751c0(local_cc);
    local_70._0_1_ = 1;
    if ((local_cc[0] != 0) &&
       (((local_cc[0] & 1) == 0 && (*(code **)(local_cc[0] & 0xfffffffe) != (code *)0x0)))) {
      (**(code **)(local_cc[0] & 0xfffffffe))(local_c4,local_c4,2);
    }
  }
  if (((param_1_00[6] & 2) != 0) && ((param_1_00[6] & 8) != 0)) {
    local_cc[0] = 0;
    FUN_00a77ac0(FUN_00a77330,param_1_00);
    local_70._0_1_ = 6;
    FUN_00a751c0(local_cc);
    local_70._0_1_ = 1;
    if ((local_cc[0] != 0) &&
       (((local_cc[0] & 1) == 0 && (*(code **)(local_cc[0] & 0xfffffffe) != (code *)0x0)))) {
      (**(code **)(local_cc[0] & 0xfffffffe))(local_c4,local_c4,2);
    }
  }
  local_cc[0] = 0;
  FUN_00a77ac0(FUN_00a77730,param_1_00);
  local_70._0_1_ = 7;
  FUN_00a751c0(local_cc);
  local_70 = CONCAT31(local_70._1_3_,1);
  if (((local_cc[0] != 0) && ((local_cc[0] & 1) == 0)) &&
     (*(code **)(local_cc[0] & 0xfffffffe) != (code *)0x0)) {
    (**(code **)(local_cc[0] & 0xfffffffe))(local_c4,local_c4,2);
  }
  FUN_004306a7();
  iVar8 = (int)(param_1_00[4] - param_1_00[3]) >> 0x1f;
  local_100 = 1;
  if ((int)(param_1_00[4] - param_1_00[3]) / 0x1c + iVar8 != iVar8) {
    do {
      iVar8 = local_e8 - local_ec >> 5;
      local_60 = 0;
      if (iVar8 != 0) {
        local_64 = 0;
        iVar10 = (int)(local_68[4] - local_68[3]) / 0x1c;
        local_d8 = iVar10;
        if (iVar8 == 0) {
          FUN_00a3fb10();
        }
        FUN_00a76130(local_ac,local_68);
        iVar8 = (int)local_9c - (int)local_a0 >> 0x1f;
        local_70._0_1_ = 8;
        piVar7 = local_9c;
        if (((int)local_9c - (int)local_a0) / 0x54 + iVar8 != iVar8) {
          local_c4[0] = (int *)operator_new(4);
          uVar12 = 0;
          if (local_c4[0] == (int *)0x0) {
            local_c4[0] = (int *)0x0;
          }
          else {
            *local_c4[0] = (int)local_c4;
          }
          local_b8 = 0;
          local_b4 = 0;
          local_b0 = 0;
          uVar4 = ((int)local_9c - (int)local_a0) / 0x54;
          local_70 = CONCAT31(local_70._1_3_,10);
          if (uVar4 != 1) {
            iVar8 = 0;
            do {
              if (uVar4 <= uVar12) {
                FUN_00a3fb10();
              }
              FUN_00a76610(iVar8 + (int)local_a0,local_c4,local_f8);
              uVar4 = ((int)local_9c - (int)local_a0) / 0x54;
              uVar12 = uVar12 + 1;
              iVar8 = iVar8 + 0x54;
            } while (uVar12 < uVar4 - 1);
          }
          piVar7 = local_9c;
          if (local_9c < local_a0) {
            FUN_00a3fb10();
          }
          piVar1 = local_ac[0];
          local_110 = piVar7;
          if (local_ac[0] == (int *)0x0) {
            FUN_00a3fb10();
            iVar8 = 0;
          }
          else {
            iVar8 = *local_ac[0];
          }
          if (*(int **)(iVar8 + 0x10) < piVar7 + -0x15) {
LAB_00a77f16:
            FUN_00a3fb10();
          }
          else {
            if (piVar1 == (int *)0x0) {
              iVar8 = 0;
            }
            else {
              iVar8 = *piVar1;
            }
            if (piVar7 + -0x15 < *(int **)(iVar8 + 0xc)) goto LAB_00a77f16;
          }
          if (piVar1 == (int *)0x0) {
            FUN_00a3fb10();
            iVar8 = 0;
          }
          else {
            iVar8 = *piVar1;
          }
          if (*(int **)(iVar8 + 0x10) <= piVar7 + -0x15) {
            FUN_00a3fb10();
          }
          FUN_00a76610(piVar7 + -0x15,local_68,local_f8);
          iVar8 = (int)local_9c - (int)local_a0 >> 0x1f;
          iVar10 = ((int)local_9c - (int)local_a0) / 0x54 + iVar8;
          uVar12 = 0;
          if (iVar10 != iVar8) {
            iVar13 = 0;
            if (iVar10 == iVar8) {
              FUN_00a3fb10();
            }
            do {
              FUN_00a764c0(iVar13 + (int)local_a0);
              uVar12 = uVar12 + 1;
              iVar13 = iVar13 + 0x54;
            } while (uVar12 < (uint)(((int)local_9c - (int)local_a0) / 0x54));
          }
          local_70._0_1_ = 8;
          FUN_0042f0c1();
          piVar7 = local_9c;
          iVar10 = local_d8;
        }
        if ((int)(local_68[4] - local_68[3]) / 0x1c != iVar10) {
          local_70 = CONCAT31(local_70._1_3_,0xb);
          piVar1 = local_a0;
          if (local_a0 != (int *)0x0) {
            for (; piVar1 != piVar7; piVar1 = piVar1 + 0x15) {
              FUN_004310b0();
            }
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_a0);
          }
          local_a0 = (int *)0x0;
          local_9c = (int *)0x0;
          local_98 = 0;
          local_70 = CONCAT31(local_70._1_3_,1);
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_ac[0]);
        }
        local_70 = CONCAT31(local_70._1_3_,0xc);
        piVar1 = local_a0;
        if (local_a0 != (int *)0x0) {
          for (; piVar1 != piVar7; piVar1 = piVar1 + 0x15) {
            FUN_004310b0();
          }
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_a0);
        }
        local_a0 = (int *)0x0;
        local_9c = (int *)0x0;
        local_98 = 0;
        local_70 = CONCAT31(local_70._1_3_,1);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(local_ac[0]);
      }
      local_44 = 0xf;
      local_48 = 0;
      local_58 = 0;
      local_70._0_1_ = 0xd;
      local_40 = 0xffffffff;
      local_3c[0] = (int *)operator_new(4);
      if (local_3c[0] == (int *)0x0) {
        local_3c[0] = (int *)0x0;
      }
      else {
        *local_3c[0] = (int)local_3c;
      }
      local_30 = 0;
      local_2c = 0;
      local_28 = 0;
      local_70._0_1_ = 0xf;
      local_24[0] = (int *)operator_new(4);
      puVar2 = local_68;
      if (local_24[0] == (int *)0x0) {
        local_24[0] = (int *)0x0;
      }
      else {
        *local_24[0] = (int)local_24;
      }
      local_18 = 0;
      local_14 = 0;
      local_10 = 0;
      local_c = 0;
      local_b = 0;
      iVar8 = (int)(local_68[4] - local_68[3]) >> 0x1f;
      local_70 = CONCAT31(local_70._1_3_,0x11);
      if ((int)(local_68[4] - local_68[3]) / 0x1c + iVar8 == iVar8) {
        FUN_00a3fb10();
      }
      FUN_00430aa3(puVar2[3]);
      iVar8 = (int)(puVar2[4] - puVar2[3]) >> 0x1f;
      if ((int)(puVar2[4] - puVar2[3]) / 0x1c + iVar8 == iVar8) {
        FUN_00a3fb10();
      }
      FUN_00430aa3(puVar2[3]);
      FUN_00a764c0(local_5c);
      uVar12 = puVar2[3];
      if ((uint)puVar2[4] < uVar12) {
        FUN_00a3fb10();
      }
      FUN_00a749e0(local_10c,*puVar2,uVar12);
      local_70 = CONCAT31(local_70._1_3_,1);
      FUN_004310b0();
      iVar8 = (int)(local_68[4] - local_68[3]) >> 0x1f;
      param_1 = local_6c;
    } while ((int)(local_68[4] - local_68[3]) / 0x1c + iVar8 != iVar8);
  }
  local_94[0] = (int *)operator_new(4);
  if (local_94[0] == (int *)0x0) {
    local_94[0] = (int *)0x0;
  }
  else {
    *local_94[0] = (int)local_94;
  }
  local_88 = (int *)0x0;
  local_84 = (int *)0x0;
  local_80 = (int *)0x0;
  local_70 = CONCAT31(local_70._1_3_,0x13);
  for (local_60 = 0; local_60 < (uint)(((int)param_1[4] - (int)param_1[3]) / 0x54);
      local_60 = local_60 + 1) {
    FUN_00a764c0(param_1[3] + local_60 * 0x15);
    piVar7 = local_84;
    if (local_84 < local_88) {
      FUN_00a3fb10();
    }
    piVar1 = local_94[0];
    local_e0 = local_94[0];
    local_dc = piVar7;
    if (local_94[0] == (int *)0x0) {
      FUN_00a3fb10();
      iVar8 = 0;
    }
    else {
      iVar8 = *local_94[0];
    }
    if (*(int **)(iVar8 + 0x10) < piVar7 + -0x15) {
LAB_00a7824f:
      FUN_00a3fb10();
    }
    else {
      if (piVar1 == (int *)0x0) {
        iVar8 = 0;
      }
      else {
        iVar8 = *piVar1;
      }
      if (piVar7 + -0x15 < *(int **)(iVar8 + 0xc)) goto LAB_00a7824f;
    }
    piVar1 = piVar7 + -0x15;
    local_dc = piVar1;
    if (local_e0 == (int *)0x0) {
      FUN_00a3fb10();
      iVar8 = 0;
    }
    else {
      iVar8 = *local_e0;
    }
    if (*(int **)(iVar8 + 0x10) <= piVar1) {
      FUN_00a3fb10();
    }
    uVar12 = local_60;
    if (piVar7[-0x10] != 0) {
      uVar12 = local_68[6];
      local_d8 = CONCAT31(local_d8._1_3_,(char)(uVar12 >> 0xb)) & 0xffffff01;
      local_fc = CONCAT31(local_fc._1_3_,(char)(uVar12 >> 9)) & 0xffffff01;
      local_104 = CONCAT31(local_104._1_3_,(char)(uVar12 >> 10)) & 0xffffff01;
      local_70 = CONCAT31(local_70._1_3_,0x14);
      iVar8 = FUN_00a70c30(piVar1,local_fc,local_104,local_d8);
      local_70 = 0x13;
      uVar12 = local_60;
      if (iVar8 != 0) {
        ppiVar3 = (int **)FUN_00a6bb50(local_10c);
        local_70._0_1_ = 0x16;
        local_64 = (**(code **)(**ppiVar3 + 4))();
        piVar7 = local_108;
        local_70._0_1_ = 0x13;
        if (local_108 != (int *)0x0) {
          LOCK();
          iVar8 = local_108[1] + -1;
          local_108[1] = iVar8;
          UNLOCK();
          if (iVar8 == 0) {
            (**(code **)(*local_108 + 4))();
            piVar1 = piVar7 + 2;
            LOCK();
            iVar8 = *piVar1 + -1;
            *piVar1 = iVar8;
            UNLOCK();
            if (iVar8 == 0) {
              (**(code **)(*piVar7 + 8))();
            }
          }
        }
        ppiVar3 = (int **)FUN_00a6bb50(local_114);
        local_70._0_1_ = 0x17;
        uVar4 = (**(code **)(**ppiVar3 + 8))();
        piVar7 = local_110;
        local_70 = CONCAT31(local_70._1_3_,0x13);
        if (local_110 != (int *)0x0) {
          LOCK();
          iVar8 = local_110[1] + -1;
          local_110[1] = iVar8;
          UNLOCK();
          if (iVar8 == 0) {
            (**(code **)(*local_110 + 4))();
            piVar1 = piVar7 + 2;
            LOCK();
            iVar8 = *piVar1 + -1;
            *piVar1 = iVar8;
            UNLOCK();
            if (iVar8 == 0) {
              (**(code **)(*piVar7 + 8))();
            }
          }
        }
        uVar12 = local_60;
        if ((local_64 < uVar4) && ((uint)((local_dc[0xc] - local_dc[0xb]) / 0x1c) < uVar4)) {
          local_64 = uVar4 - (local_dc[0xc] - local_dc[0xb]) / 0x1c;
          param_1 = local_6c;
          while (((uVar4 = uVar12 + 1, local_6c = param_1, local_64 != 0 &&
                  (piVar7 = param_1[3], uVar4 < (uint)(((int)param_1[4] - (int)piVar7) / 0x54))) &&
                 ((piVar7[uVar4 * 0x15 + 5] == 0 && (piVar7[uVar4 * 0x15 + 7] != 0x7fffffff))))) {
            iVar8 = piVar7[uVar4 * 0x15 + 0xc] - piVar7[uVar4 * 0x15 + 0xb] >> 0x1f;
            if ((piVar7[uVar4 * 0x15 + 0xc] - piVar7[uVar4 * 0x15 + 0xb]) / 0x1c + iVar8 == iVar8) {
              FUN_00a3fb10();
            }
            FUN_00430aa3(piVar7[uVar4 * 0x15 + 0xb]);
            iVar8 = piVar7[uVar4 * 0x15 + 0x12] - piVar7[uVar4 * 0x15 + 0x11] >> 0x1f;
            if ((piVar7[uVar4 * 0x15 + 0x12] - piVar7[uVar4 * 0x15 + 0x11]) / 0x1c + iVar8 == iVar8)
            {
              FUN_00a3fb10();
            }
            FUN_00430aa3(piVar7[uVar4 * 0x15 + 0x11]);
            local_64 = local_64 - 1;
            param_1 = local_6c;
            uVar12 = uVar4;
          }
        }
      }
    }
    local_60 = uVar12;
  }
  if (param_1 != local_94) {
    piVar7 = *param_1;
    *param_1 = local_94[0];
    if (local_94[0] != piVar7) {
      iVar8 = *local_94[0];
      *local_94[0] = *piVar7;
      *piVar7 = iVar8;
    }
    ppiVar3 = param_1 + 3;
    if (ppiVar3 != &local_88) {
      piVar1 = *ppiVar3;
      *ppiVar3 = local_88;
      local_88 = piVar1;
    }
    ppiVar3 = param_1 + 4;
    if (ppiVar3 != &local_84) {
      piVar1 = *ppiVar3;
      *ppiVar3 = local_84;
      local_84 = piVar1;
    }
    ppiVar3 = param_1 + 5;
    local_94[0] = piVar7;
    if (ppiVar3 != &local_80) {
      piVar7 = *ppiVar3;
      *ppiVar3 = local_80;
      local_80 = piVar7;
    }
  }
  iVar8 = (int)param_1[4] - (int)param_1[3] >> 0x1f;
  uVar12 = 0;
  local_64 = 0;
  if (((int)param_1[4] - (int)param_1[3]) / 0x54 + iVar8 != iVar8) {
    iVar8 = 0;
    do {
      if ((uint)(((int)param_1[4] - (int)param_1[3]) / 0x54) <= uVar12) {
        FUN_00a3fb10();
      }
      if (*(int *)(iVar8 + 0x14 + (int)param_1[3]) == 0) {
        if ((uint)(((int)param_1[4] - (int)param_1[3]) / 0x54) <= uVar12) {
          FUN_00a3fb10();
        }
        *(uint *)(iVar8 + 0x1c + (int)param_1[3]) = local_64;
        local_64 = local_64 + 1;
      }
      uVar12 = uVar12 + 1;
      iVar8 = iVar8 + 0x54;
    } while (uVar12 < (uint)(((int)param_1[4] - (int)param_1[3]) / 0x54));
  }
  if (local_68[9] != 0) {
    iVar8 = (int)param_1[4] - (int)param_1[3] >> 0x1f;
    uVar12 = 0;
    local_60 = 0;
    if (((int)param_1[4] - (int)param_1[3]) / 0x54 + iVar8 != iVar8) {
      local_64 = 0;
      do {
        if ((uint)(((int)param_1[4] - (int)param_1[3]) / 0x54) <= uVar12) {
          FUN_00a3fb10();
        }
        this = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               ((int)param_1[3] + local_64);
        if (*(int *)(this + 0x1c) != -1) {
          uVar4 = FUN_00a7dc50();
          if (uVar4 <= local_60) {
            uVar6 = FUN_00a74350();
            local_70 = CONCAT31(local_70._1_3_,0x1a);
            FUN_00a74ed0(uVar6);
            goto LAB_00a786a9;
          }
          pbVar5 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                   FUN_00a7dc80(local_60);
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                    (this,pbVar5,0,0xffffffff);
          local_60 = local_60 + 1;
        }
        local_64 = local_64 + 0x54;
        uVar12 = uVar12 + 1;
      } while (uVar12 < (uint)(((int)param_1[4] - (int)param_1[3]) / 0x54));
    }
  }
  iVar8 = (int)param_1[4] - (int)param_1[3] >> 0x1f;
  uVar12 = 0;
  if (((int)param_1[4] - (int)param_1[3]) / 0x54 + iVar8 != iVar8) {
    local_60 = 0;
LAB_00a786a9:
    do {
      uVar4 = local_60;
      ppiVar3 = local_6c;
      if ((uint)(((int)local_6c[4] - (int)local_6c[3]) / 0x54) <= uVar12) {
        FUN_00a3fb10();
      }
      piVar7 = ppiVar3[3];
      if (*(uint *)(uVar4 + 0x14 + (int)piVar7) < 3) {
        if ((uint)(((int)ppiVar3[4] - (int)piVar7) / 0x54) <= uVar12) {
          FUN_00a3fb10();
        }
        piVar7 = ppiVar3[3];
        if (1 < *(uint *)(uVar4 + 0x14 + (int)piVar7)) {
          if ((uint)(((int)ppiVar3[4] - (int)piVar7) / 0x54) <= uVar12) {
            FUN_00a3fb10();
          }
          piVar7 = ppiVar3[3];
          if (*(uint *)(uVar4 + 0x18 + (int)piVar7) < 0x10) {
            pcVar9 = (char *)(uVar4 + 4 + (int)piVar7);
          }
          else {
            pcVar9 = *(char **)(uVar4 + 4 + (int)piVar7);
          }
          if (*pcVar9 != '-') goto LAB_00a7876e;
        }
        ppiVar3 = local_6c;
        bVar11 = (byte)((uint)local_68[6] >> 0xb);
        if ((uint)(((int)local_6c[4] - (int)piVar7) / 0x54) <= uVar12) {
          FUN_00a3fb10();
        }
        piVar7 = ppiVar3[3];
      }
      else {
LAB_00a7876e:
        ppiVar3 = local_6c;
        bVar11 = (byte)((uint)local_68[6] >> 10);
        if ((uint)(((int)local_6c[4] - (int)piVar7) / 0x54) <= uVar12) {
          FUN_00a3fb10();
        }
        piVar7 = ppiVar3[3];
        ppiVar3 = local_6c;
      }
      uVar4 = local_60 + 0x54;
      *(byte *)(local_60 + 0x51 + (int)piVar7) = bVar11 & 1;
      uVar12 = uVar12 + 1;
      local_60 = uVar4;
    } while (uVar12 < (uint)(((int)ppiVar3[4] - (int)ppiVar3[3]) / 0x54));
  }
  piVar1 = local_84;
  local_70 = CONCAT31(local_70._1_3_,0x1b);
  piVar7 = local_88;
  if (local_88 != (int *)0x0) {
    for (; piVar7 != piVar1; piVar7 = piVar7 + 0x15) {
      FUN_004310b0();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_88);
  }
  local_88 = (int *)0x0;
  local_84 = (int *)0x0;
  local_80 = (int *)0x0;
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(local_94[0]);
}



void Catch_00a784a1(void)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  uint uVar6;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar7;
  int iVar8;
  char *pcVar9;
  int iVar10;
  byte bVar11;
  int *unaff_EBX;
  int *unaff_EBP;
  int iVar12;
  uint uVar13;
  
  uVar4 = FUN_00a738c0();
  iVar12 = unaff_EBP[-0x1c];
  uVar5 = FUN_0064cef0(0);
  FUN_00a72550(iVar12,uVar5,uVar4);
  __CxxThrowException_8(0,0);
  if (unaff_EBX != unaff_EBP + -10) {
    puVar2 = (undefined4 *)*unaff_EBX;
    puVar3 = (undefined4 *)unaff_EBP[-10];
    *unaff_EBX = (int)puVar3;
    unaff_EBP[-10] = (int)puVar2;
    if (puVar3 != puVar2) {
      uVar4 = *puVar3;
      *puVar3 = *puVar2;
      *puVar2 = uVar4;
    }
    piVar1 = unaff_EBX + 3;
    if (piVar1 != unaff_EBP + -7) {
      iVar12 = *piVar1;
      *piVar1 = unaff_EBP[-7];
      unaff_EBP[-7] = iVar12;
    }
    piVar1 = unaff_EBX + 4;
    if (piVar1 != unaff_EBP + -6) {
      iVar12 = *piVar1;
      *piVar1 = unaff_EBP[-6];
      unaff_EBP[-6] = iVar12;
    }
    piVar1 = unaff_EBX + 5;
    if (piVar1 != unaff_EBP + -5) {
      iVar12 = *piVar1;
      *piVar1 = unaff_EBP[-5];
      unaff_EBP[-5] = iVar12;
    }
  }
  iVar12 = unaff_EBX[4];
  iVar10 = unaff_EBX[3];
  iVar8 = iVar12 - iVar10 >> 0x1f;
  uVar13 = 0;
  unaff_EBP[2] = 0;
  if ((iVar12 - iVar10) / 0x54 + iVar8 != iVar8) {
    iVar12 = 0;
    do {
      if ((uint)((unaff_EBX[4] - unaff_EBX[3]) / 0x54) <= uVar13) {
        FUN_00a3fb10();
      }
      if (*(int *)(iVar12 + 0x14 + unaff_EBX[3]) == 0) {
        if ((uint)((unaff_EBX[4] - unaff_EBX[3]) / 0x54) <= uVar13) {
          FUN_00a3fb10();
        }
        iVar10 = unaff_EBP[2];
        *(int *)(iVar12 + 0x1c + unaff_EBX[3]) = iVar10;
        unaff_EBP[2] = iVar10 + 1;
      }
      uVar13 = uVar13 + 1;
      iVar12 = iVar12 + 0x54;
    } while (uVar13 < (uint)((unaff_EBX[4] - unaff_EBX[3]) / 0x54));
  }
  if (*(int *)(unaff_EBP[1] + 0x24) != 0) {
    iVar12 = unaff_EBX[4];
    iVar10 = unaff_EBX[3];
    iVar8 = iVar12 - iVar10 >> 0x1f;
    uVar13 = 0;
    unaff_EBP[3] = 0;
    if ((iVar12 - iVar10) / 0x54 + iVar8 != iVar8) {
      unaff_EBP[2] = 0;
      do {
        if ((uint)((unaff_EBX[4] - unaff_EBX[3]) / 0x54) <= uVar13) {
          FUN_00a3fb10();
        }
        iVar12 = unaff_EBX[3];
        iVar10 = unaff_EBP[2];
        if (*(int *)((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
                     )(iVar12 + iVar10) + 0x1c) != -1) {
          uVar6 = FUN_00a7dc50();
          if (uVar6 <= (uint)unaff_EBP[3]) {
            uVar4 = FUN_00a74350();
            *(undefined *)(unaff_EBP + -1) = 0x1a;
            FUN_00a74ed0(uVar4);
            goto LAB_00a786a6;
          }
          pbVar7 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                   FUN_00a7dc80(unaff_EBP[3]);
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                    ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
                     )(iVar12 + iVar10),pbVar7,0,0xffffffff);
          unaff_EBP[3] = unaff_EBP[3] + 1;
        }
        iVar12 = unaff_EBX[4];
        iVar10 = unaff_EBX[3];
        unaff_EBP[2] = unaff_EBP[2] + 0x54;
        uVar13 = uVar13 + 1;
      } while (uVar13 < (uint)((iVar12 - iVar10) / 0x54));
    }
  }
  iVar12 = unaff_EBX[4] - unaff_EBX[3] >> 0x1f;
  uVar13 = 0;
  if ((unaff_EBX[4] - unaff_EBX[3]) / 0x54 + iVar12 == iVar12) {
LAB_00a787cd:
    iVar12 = unaff_EBP[-7];
    *(undefined *)(unaff_EBP + -1) = 0x1b;
    if (iVar12 == 0) {
      unaff_EBP[-7] = 0;
      unaff_EBP[-6] = 0;
      unaff_EBP[-5] = 0;
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(unaff_EBP[-10]);
    }
    iVar10 = unaff_EBP[-6];
    for (; iVar12 != iVar10; iVar12 = iVar12 + 0x54) {
      FUN_004310b0();
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(unaff_EBP[-7]);
  }
  iVar12 = 0;
  unaff_EBP[3] = 0;
  do {
    iVar10 = *unaff_EBP;
    if ((uint)((*(int *)(iVar10 + 0x10) - *(int *)(iVar10 + 0xc)) / 0x54) <= uVar13) {
      FUN_00a3fb10();
    }
    iVar8 = *(int *)(iVar10 + 0xc);
    if (*(uint *)(iVar12 + 0x14 + iVar8) < 3) {
      if ((uint)((*(int *)(iVar10 + 0x10) - iVar8) / 0x54) <= uVar13) {
        FUN_00a3fb10();
      }
      iVar8 = *(int *)(iVar10 + 0xc);
      if (1 < *(uint *)(iVar12 + 0x14 + iVar8)) {
        if ((uint)((*(int *)(iVar10 + 0x10) - iVar8) / 0x54) <= uVar13) {
          FUN_00a3fb10();
        }
        iVar8 = *(int *)(iVar10 + 0xc);
        if (*(uint *)(iVar12 + 0x18 + iVar8) < 0x10) {
          pcVar9 = (char *)(iVar12 + 4 + iVar8);
        }
        else {
          pcVar9 = *(char **)(iVar12 + 4 + iVar8);
        }
        if (*pcVar9 != '-') goto LAB_00a7876e;
      }
      iVar12 = *unaff_EBP;
      bVar11 = (byte)(*(uint *)(unaff_EBP[1] + 0x18) >> 0xb);
      if ((uint)((*(int *)(iVar12 + 0x10) - iVar8) / 0x54) <= uVar13) {
        FUN_00a3fb10();
      }
      iVar10 = *(int *)(iVar12 + 0xc);
    }
    else {
LAB_00a7876e:
      iVar12 = *unaff_EBP;
      bVar11 = (byte)(*(uint *)(unaff_EBP[1] + 0x18) >> 10);
      if ((uint)((*(int *)(iVar12 + 0x10) - iVar8) / 0x54) <= uVar13) {
        FUN_00a3fb10();
      }
      iVar10 = *(int *)(iVar12 + 0xc);
      iVar12 = *unaff_EBP;
    }
    iVar8 = unaff_EBP[3];
    unaff_EBP[3] = unaff_EBP[3] + 0x54;
    *(byte *)(iVar8 + 0x51 + iVar10) = bVar11 & 1;
    uVar13 = uVar13 + 1;
    if ((uint)((*(int *)(iVar12 + 0x10) - *(int *)(iVar12 + 0xc)) / 0x54) <= uVar13)
    goto LAB_00a787cd;
LAB_00a786a6:
    iVar12 = unaff_EBP[3];
  } while( true );
}



void FUN_00a78850(char *param_1)

{
  code *pcVar1;
  char *pcVar2;
  undefined **local_c [3];
  
  if (param_1 == (char *)0x0) {
    pcVar2 = (char *)0x0;
  }
  else {
    pcVar2 = param_1;
    if ((uint)(0xffffffff / ZEXT48(param_1)) < 0x54) {
      param_1 = (char *)0x0;
      std::exception::exception((exception *)local_c,&param_1);
      local_c[0] = std::bad_alloc::vftable;
      __CxxThrowException_8(local_c,&DAT_031153a4);
      pcVar1 = (code *)swi(3);
      (*pcVar1)();
      return;
    }
  }
  operator_new((int)pcVar2 * 0x54);
  return;
}



int FUN_00a788b0(int param_1,undefined4 param_2,code **param_3,undefined4 *param_4)

{
  undefined4 uVar1;
  undefined local_28 [4];
  undefined4 uStack_24;
  uint uStack_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf39f1;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = (**param_3)(local_28,*param_4,DAT_0323f878 ^ (uint)&stack0xffffffd0);
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  uStack_4 = 1;
  FID_conflict_assign(uVar1,0,0xffffffff);
  if (7 < uStack_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uStack_24);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 __thiscall FUN_00a78950(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  FUN_00a788b0(param_1,0,param_1_00,&param_2,0);
  return param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00a78990(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3a23;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 0xf;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  param_1_00[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00,param_1,0,0xffffffff);
  local_4 = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);
  FUN_00430a16(param_1 + 0x20);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00430a16(param_1 + 0x38);
  param_1_00[0x50] = param_1[0x50];
  param_1_00[0x51] = param_1[0x51];
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_00a78a30(int param_1)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf3a23;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 4) = 0;
  local_4 = 0;
  *(undefined4 *)(param_1 + 0x1c) = 0xffffffff;
  FUN_004398f2(uVar1);
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_004398f2();
  *(undefined *)(param_1 + 0x50) = 0;
  *(undefined *)(param_1 + 0x51) = 0;
  ExceptionList = local_c;
  return param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00a78ab0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_3)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this;
  
  if (param_1 == param_2) {
    return param_3;
  }
  do {
    pbVar1 = param_2 + -0x54;
    this = param_3 + -0x54;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (this,pbVar1,0,0xffffffff);
    *(undefined4 *)(param_3 + -0x38) = *(undefined4 *)(param_2 + -0x38);
    FUN_0041bd51(param_2 + -0x34);
    FUN_0041bd51(param_2 + -0x1c);
    param_3[-4] = param_2[-4];
    param_3[-3] = param_2[-3];
    param_2 = pbVar1;
    param_3 = this;
  } while (pbVar1 != param_1);
  return this;
}



void FUN_00a78b10(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1,
                 basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                 *param_2,basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          *param_3)

{
  if (param_1 != param_2) {
    do {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (param_1,param_3,0,0xffffffff);
      *(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(param_3 + 0x1c);
      FUN_0041bd51(param_3 + 0x20);
      FUN_0041bd51(param_3 + 0x38);
      param_1[0x50] = param_3[0x50];
      param_1[0x51] = param_3[0x51];
      param_1 = param_1 + 0x54;
    } while (param_1 != param_2);
  }
  return;
}



int FUN_00a78b70(int param_1,int param_2,int param_3)

{
  uint local_8;
  uint local_4;
  
  local_4 = local_4 & 0xffffff00;
  local_8 = local_8 & 0xffffff00;
  FUN_00a78ab0(param_1,param_2,param_3,param_3,local_4,local_8);
  return param_3 + ((param_2 - param_1) / 0x54) * -0x54;
}



int FUN_00a78bd0(int param_1,int param_2,int param_3)

{
  void *local_10;
  undefined *puStack_c;
  undefined local_8;
  undefined3 uStack_7;
  
  puStack_c = &LAB_00bf3a51;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  uStack_7 = 0;
  for (; param_1 != param_2; param_1 = param_1 + 0x54) {
    local_8 = 1;
    if (param_3 != 0) {
      FUN_00a78990(param_1);
    }
    param_3 = param_3 + 0x54;
  }
  ExceptionList = local_10;
  return param_3;
}



int Catch_All_00a78c39(void)

{
  int iVar1;
  int unaff_EBP;
  int iVar2;
  
  iVar1 = *(int *)(unaff_EBP + 0x10);
  for (iVar2 = *(int *)(unaff_EBP + -0x14); iVar2 != iVar1; iVar2 = iVar2 + 0x54) {
    FUN_0043107a();
  }
  __CxxThrowException_8(0,0);
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return iVar2;
}



void FUN_00a78c70(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a78b70(param_1,param_2,param_3,param_3,param_3,0);
  return;
}



void FUN_00a78ca0(int param_1,int param_2,undefined4 param_3)

{
  int **unaff_FS_OFFSET;
  int *local_10;
  undefined *puStack_c;
  undefined local_8;
  undefined3 uStack_7;
  
  puStack_c = &LAB_00bf3a81;
  local_10 = *unaff_FS_OFFSET;
  *unaff_FS_OFFSET = (int *)&local_10;
  uStack_7 = 0;
  for (; param_2 != 0; param_2 = param_2 + -1) {
    local_8 = 1;
    if (param_1 != 0) {
      FUN_00a78990(param_3);
    }
    param_1 = param_1 + 0x54;
  }
  *unaff_FS_OFFSET = local_10;
  return;
}



void Catch_All_00a78d09(void)

{
  int iVar1;
  int unaff_EBP;
  int iVar2;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  for (iVar2 = *(int *)(unaff_EBP + -0x14); iVar2 != iVar1; iVar2 = iVar2 + 0x54) {
    FUN_0043107a();
  }
  __CxxThrowException_8(0,0);
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  return;
}



void FUN_00a78d40(undefined4 *param_1,int param_2,int param_3,undefined4 param_4)

{
  void **ppvVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined local_28 [4];
  undefined4 local_24;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf3aa8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ppvVar1 = &local_c;
  if (param_2 == param_3) {
    *param_1 = param_4;
    return;
  }
  do {
    ExceptionList = ppvVar1;
    local_4 = 0xffffffff;
    uVar3 = FUN_00a78950(local_28,param_2);
    local_4 = 0;
    FUN_0041b0a1(uVar3);
    local_4 = 0xffffffff;
    if (7 < local_10) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_24,uVar2);
    }
    param_2 = param_2 + 0x1c;
    ppvVar1 = (void **)ExceptionList;
  } while (param_2 != param_3);
  *param_1 = param_4;
  ExceptionList = local_c;
  return;
}



int __thiscall FUN_00a78df0(uint param_1_00,int param_1,int param_2,undefined4 param_3)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_00a78ca0(param_1,param_2,param_3,param_1_00 + 8,param_3,local_4);
  return param_2 * 0x54 + param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00a78e30(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2)

{
  uint uVar1;
  uint uVar2;
  uint local_1c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf3ae9;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_4 = 0;
  local_18 = param_1;
  local_10 = 0;
  FUN_00a78a30(DAT_0323f878 ^ (uint)&stack0xffffffd4);
  local_4 = 0;
  local_10 = 1;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,param_2,0,0xffffffff);
  *(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(param_2 + 0x1c);
  param_1[0x50] = param_2[0x50];
  uVar1 = *(uint *)(param_2 + 0x30);
  if (uVar1 < *(uint *)(param_2 + 0x2c)) {
    FUN_00a3fb10();
  }
  local_1c = *(uint *)(param_2 + 0x2c);
  if (*(uint *)(param_2 + 0x30) < local_1c) {
    FUN_00a3fb10();
  }
  uVar2 = local_1c;
  local_1c = local_1c & 0xffffff00;
  FUN_00a78d40(&local_1c,uVar2,uVar1,param_1 + 0x20,FUN_00a79f70,local_14,local_18,local_1c);
  uVar1 = *(uint *)(param_2 + 0x48);
  if (uVar1 < *(uint *)(param_2 + 0x44)) {
    FUN_00a3fb10();
  }
  local_1c = *(uint *)(param_2 + 0x44);
  if (*(uint *)(param_2 + 0x48) < local_1c) {
    FUN_00a3fb10();
  }
  uVar2 = local_1c;
  local_1c = local_1c & 0xffffff00;
  FUN_00a78d40(&local_1c,uVar2,uVar1,param_1 + 0x38,FUN_00a79f70,local_14,local_18,local_1c);
  ExceptionList = local_c;
  return param_1;
}



void __thiscall
FUN_00a78f50(uint param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_00a78bd0(param_1,param_2,param_3,param_1_00 + 8,param_3,local_4);
  return;
}



void __thiscall
FUN_00a78f80(int param_1_00,undefined4 param_1,int param_2,uint param_3,uint param_4)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  int extraout_ECX;
  int iVar4;
  uint uVar5;
  int local_c4;
  void *local_bc;
  undefined *puStack_b8;
  undefined4 local_b4;
  undefined local_b0 [84];
  undefined local_5c [84];
  uint local_8;
  
  local_b4 = 0xffffffff;
  puStack_b8 = &LAB_00bf3b20;
  local_bc = ExceptionList;
  local_8 = DAT_0323f878 ^ (uint)local_b0;
  ExceptionList = &local_bc;
  if (*(int *)(param_1_00 + 0xc) == 0) {
    uVar5 = 0;
  }
  else {
    uVar5 = (*(int *)(param_1_00 + 0x14) - *(int *)(param_1_00 + 0xc)) / 0x54;
  }
  if (param_3 != 0) {
    iVar4 = *(int *)(param_1_00 + 0x10);
    iVar2 = (iVar4 - *(int *)(param_1_00 + 0xc)) / 0x54;
    if (0x30c30c3U - iVar2 < param_3) {
      iVar2 = FUN_00837240();
      iVar4 = extraout_ECX;
    }
    uVar1 = iVar2 + param_3;
    if (uVar5 < uVar1) {
      if (0x30c30c3 - (uVar5 >> 1) < uVar5) {
        uVar5 = 0;
      }
      else {
        uVar5 = uVar5 + (uVar5 >> 1);
      }
      if (uVar5 < uVar1) {
        uVar5 = uVar1;
      }
      iVar2 = FUN_00a78850(uVar5,0);
      iVar4 = (param_2 - *(int *)(param_1_00 + 0xc)) / 0x54;
      local_b4 = 0;
      FUN_00a78df0(iVar4 * 0x54 + iVar2,param_3,param_4);
      local_c4 = (param_4 >> 8) << 8;
      FUN_00a78bd0(*(undefined4 *)(param_1_00 + 0xc),param_2,iVar2,param_1_00 + 8,local_c4,local_c4)
      ;
      local_c4 = (param_4 >> 8) << 8;
      FUN_00a78bd0(param_2,*(undefined4 *)(param_1_00 + 0x10),(iVar4 + param_3) * 0x54 + iVar2,
                   param_1_00 + 8,local_c4,local_c4);
      iVar4 = *(int *)(param_1_00 + 0xc);
      local_b4 = 0xffffffff;
      if (iVar4 != 0) {
        FUN_0042f4ef(iVar4,*(undefined4 *)(param_1_00 + 0x10));
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
      }
      *(uint *)(param_1_00 + 0x14) = uVar5 * 0x54 + iVar2;
      *(uint *)(param_1_00 + 0x10) =
           (param_3 + (*(int *)(param_1_00 + 0x10) - iVar4) / 0x54) * 0x54 + iVar2;
      *(int *)(param_1_00 + 0xc) = iVar2;
    }
    else {
      if ((uint)((iVar4 - param_2) / 0x54) < param_3) {
        FUN_00a78990(param_4);
        local_b4 = 2;
        FUN_00a78f50(param_2,*(undefined4 *)(param_1_00 + 0x10),param_3 * 0x54 + param_2);
        local_b4 = CONCAT31(local_b4._1_3_,3);
        FUN_00a78df0(*(int *)(param_1_00 + 0x10),
                     param_3 - (*(int *)(param_1_00 + 0x10) - param_2) / 0x54,local_5c);
        *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + param_3 * 0x54;
        local_b4 = 2;
        FUN_00a78b10(param_2,*(int *)(param_1_00 + 0x10) + param_3 * -0x54,local_5c);
      }
      else {
        FUN_00a78990(param_4);
        iVar4 = *(int *)(param_1_00 + 0x10);
        iVar2 = iVar4 + param_3 * -0x54;
        local_b4 = 5;
        uVar3 = FUN_00a78f50(iVar2,iVar4,iVar4);
        *(undefined4 *)(param_1_00 + 0x10) = uVar3;
        FUN_00a78c70(param_2,iVar2,iVar4);
        FUN_00a78b10(param_2,param_3 * 0x54 + param_2,local_b0);
      }
      local_b4 = 0xffffffff;
      FUN_0043107a();
    }
  }
  ExceptionList = local_bc;
  ___security_check_cookie_4();
  return;
}



void Catch_All_00a7914c(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + -0x20);
  iVar2 = *(int *)(unaff_EBP + -0x24);
  iVar3 = *(int *)(unaff_EBP + -0x18);
  if (1 < iVar1) {
    FUN_0042f4ef(iVar3,iVar2 * 0x54 + iVar3);
  }
  if (0 < iVar1) {
    FUN_0042f4ef(iVar2 * 0x54 + iVar3,(iVar2 + *(int *)(unaff_EBP + 0xbc)) * 0x54 + iVar3);
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(iVar3);
}



void Catch_All_00a79245(void)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  int unaff_EBP;
  int unaff_ESI;
  int unaff_EDI;
  
  iVar3 = *(int *)(unaff_EBP + 0xbc) * 0x54;
  FUN_0042f4ef(iVar3 + *(int *)(unaff_EBP + 0xb8),
               *(int *)(*(int *)(unaff_EBP + -0x1c) + 0x10) + iVar3);
  __CxxThrowException_8(0,0);
  FUN_00a78990(*(undefined4 *)(unaff_EBP + -0x14));
  iVar3 = *(int *)(unaff_ESI + 0x10);
  iVar4 = iVar3 + unaff_EDI * -0x54;
  *(undefined4 *)(unaff_EBP + -4) = 5;
  *(int *)(unaff_EBP + -0x14) = iVar4;
  uVar5 = FUN_00a78f50(iVar4,iVar3,iVar3);
  uVar1 = *(undefined4 *)(unaff_EBP + -0x14);
  uVar2 = *(undefined4 *)(unaff_EBP + 0xb8);
  *(undefined4 *)(unaff_ESI + 0x10) = uVar5;
  FUN_00a78c70(uVar2,uVar1,iVar3);
  FUN_00a78b10(*(int *)(unaff_EBP + 0xb8),unaff_EDI * 0x54 + *(int *)(unaff_EBP + 0xb8));
  *(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
  FUN_0043107a();
  ExceptionList = *(void **)(unaff_EBP + -0xc);
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00a79300(int **param_1_00,undefined4 param_1,int *param_2,int param_3,undefined4 param_4)

{
  int *piVar1;
  int iVar2;
  int **unaff_EBX;
  int iVar3;
  int *piVar4;
  
  piVar4 = param_1_00[3];
  iVar2 = (int)param_1_00[4] - (int)piVar4;
  iVar3 = iVar2 >> 0x1f;
  if (iVar2 / 0x54 + iVar3 == iVar3) {
    iVar3 = 0;
  }
  else {
    if (param_1_00[4] < piVar4) {
      FUN_00a3fb10();
    }
    if ((param_2 == (int *)0x0) || (param_2 != *param_1_00)) {
      FUN_00a3fb10();
    }
    iVar3 = (param_3 - (int)piVar4) / 0x54;
  }
  FUN_00a78f80(param_2,param_3,1,param_4);
  piVar4 = param_1_00[3];
  if (param_1_00[4] < piVar4) {
    FUN_00a3fb10();
  }
  piVar1 = *param_1_00;
  if (piVar1 == (int *)0x0) {
    FUN_00a3fb10();
    iVar2 = 0;
  }
  else {
    iVar2 = *piVar1;
  }
  piVar4 = piVar4 + iVar3 * 0x15;
  if (piVar4 <= *(int **)(iVar2 + 0x10)) {
    if (piVar1 == (int *)0x0) {
      iVar3 = 0;
    }
    else {
      iVar3 = *piVar1;
    }
    if (*(int **)(iVar3 + 0xc) <= piVar4) goto LAB_00a793b7;
  }
  FUN_00a3fb10();
LAB_00a793b7:
  unaff_EBX[1] = piVar4;
  *unaff_EBX = piVar1;
  return;
}



void __thiscall FUN_00a793d0(undefined4 *param_1_00,undefined4 param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint local_8 [2];
  
  uVar1 = param_1_00[3];
  if (uVar1 == 0) {
    uVar3 = 0;
  }
  else {
    uVar3 = (int)(param_1_00[5] - uVar1) / 0x54;
  }
  uVar2 = param_1_00[4];
  if ((uint)((int)(uVar2 - uVar1) / 0x54) < uVar3) {
    local_8[0] = local_8[0] & 0xffffff00;
    FUN_00a78ca0(uVar2,1,param_1,param_1_00 + 2,param_1,local_8[0]);
    param_1_00[4] = uVar2 + 0x54;
    return;
  }
  if (uVar2 < uVar1) {
    FUN_00a3fb10();
  }
  FUN_00a79300(local_8,*param_1_00,uVar2,param_1);
  return;
}



int __thiscall FUN_00a79470(int param_1_00,int param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  undefined local_60 [84];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3b6b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00a6dab0(DAT_0323f878 ^ (uint)&stack0xffffff8c);
  uVar5 = 0;
  local_4 = 0;
  *(undefined4 *)(param_1_00 + 0x18) = *(undefined4 *)(param_1 + 0x18);
  FUN_00a75980(param_1);
  *(undefined4 *)(param_1_00 + 0x34) = *(undefined4 *)(param_1 + 0x18);
  *(undefined4 *)(param_1_00 + 0x38) = *(undefined4 *)(param_1 + 0x1c);
  *(undefined4 *)(param_1_00 + 0x3c) = *(undefined4 *)(param_1 + 0x1c);
  iVar3 = *(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc);
  iVar1 = iVar3 >> 0x1f;
  iVar3 = iVar3 / 0x54 + iVar1;
  local_4._0_1_ = 1;
  if (iVar3 != iVar1) {
    iVar4 = 0;
    if (iVar3 == iVar1) {
      FUN_00a3fb10();
    }
    do {
      uVar2 = FUN_00a78e30(local_60,*(int *)(param_1 + 0xc) + iVar4);
      local_4._0_1_ = 2;
      FUN_00a793d0(uVar2);
      local_4._0_1_ = 1;
      FUN_0043107a();
      uVar5 = uVar5 + 1;
      iVar4 = iVar4 + 0x54;
    } while (uVar5 < (uint)((*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x54));
  }
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00a79560(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::error_info_injector<class_std::logic_error>::vftable;
  param_1[10] = boost::exception_detail::error_info_injector<class_std::logic_error>::vftable;
  param_1[10] = boost::exception::vftable;
  if ((int *)param_1[0xb] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0xb] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0xb] = 0;
    }
  }
  *param_1 = std::logic_error::vftable;
  if (0xf < (uint)param_1[9]) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[4]);
  }
  param_1[9] = 0xf;
  param_1[8] = 0;
  *(undefined *)(param_1 + 4) = 0;
  exception::~exception((exception *)param_1);
  return;
}



void FUN_00a795d0(void)

{
  FUN_00a79690();
  return;
}



void FUN_00a795e0(void)

{
  FUN_00a79640();
  return;
}



void FUN_00a795f0(void)

{
  FUN_00a79640();
  return;
}



void __fastcall FUN_00a79600(undefined4 *param_1)

{
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>
             ::vftable;
  param_1[10] = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>
                ::vftable;
  *(undefined ***)(*(int *)(param_1[0xf] + 4) + 0x3c + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>::
       vftable;
  *(int *)(*(int *)(param_1[0xf] + 4) + 0x38 + (int)param_1) = *(int *)(param_1[0xf] + 4) + -8;
  FUN_00a79560();
  param_1[0x11] = boost::exception_detail::clone_base::vftable;
  return;
}



undefined4 * __thiscall FUN_00a79640(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>::
       vftable;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  FUN_00a79560();
  param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00a79690(undefined4 param_1_00,byte param_1)

{
  FUN_00a79560();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00a796b0(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3b98;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FID_conflict_runtime_error(param_1);
  local_4 = 0;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  param_1_00[10] = boost::exception::vftable;
  piVar1 = *(int **)(param_1 + 4);
  param_1_00[0xb] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 0xc))(uVar2);
  }
  param_1_00[0xc] = *(undefined4 *)(param_1 + 8);
  param_1_00[0xd] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[0xe] = *(undefined4 *)(param_1 + 0x10);
  *param_1_00 = boost::exception_detail::error_info_injector<class_std::logic_error>::vftable;
  param_1_00[10] = boost::exception_detail::error_info_injector<class_std::logic_error>::vftable;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a79750(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3be4;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_3 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a796b0(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>::
       vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00a79820(undefined4 *param_1_00,int param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3be4;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a796b0(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>::
       vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) =
       *(int *)(param_1_00[0xf] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0x28;
  }
  FUN_00401200(param_1_00 + 10,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4
FUN_00a798f0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  *param_4 = param_2;
  return 0;
}



undefined4 FUN_00a79900(void)

{
  return 6;
}



undefined4 * __thiscall FUN_00a79910(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf314c;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0xf] = &DAT_00fafc18;
    param_1_00[0x11] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a796b0(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>
                ::vftable;
  param_1_00[10] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>::
       vftable;
  *(undefined ***)(*(int *)(param_1_00[0xf] + 4) + 0x3c + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_std::logic_error>_>::
       vftable;
  *(undefined4 *)(*(int *)(param_1_00[0xf] + 4) + 0x38 + (int)param_1_00) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_00a799c0(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x48);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00a79750(param_1 + -0x44,local_14,1);
    if (iVar2 != 0) {
      ExceptionList = local_c;
      return *(int *)(*(int *)(iVar2 + 0x3c) + 4) + 0x3c + iVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_00a79a50(int param_1)

{
  code *pcVar1;
  undefined local_48 [72];
  
  FUN_00a79910(param_1 + -0x44,1);
  __CxxThrowException_8(local_48,&DAT_031132d8);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 * FUN_00a79a80(undefined4 *param_1,undefined4 param_2)

{
  FID_conflict_runtime_error(param_2);
  param_1[10] = boost::exception::vftable;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0xffffffff;
  *param_1 = boost::exception_detail::error_info_injector<class_std::logic_error>::vftable;
  param_1[10] = boost::exception_detail::error_info_injector<class_std::logic_error>::vftable;
  return param_1;
}



undefined4 FUN_00a79ad0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a79820(param_2,1);
  return param_1;
}



void FUN_00a79b00(void)

{
  FUN_00a79a50();
  return;
}



void FUN_00a79b10(void)

{
  FUN_00a799c0();
  return;
}



void FUN_00a79b20(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_90 [72];
  undefined local_48 [60];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3c08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_00a79a80(local_48,param_1,DAT_0323f878 ^ (uint)local_90);
  local_4 = 0;
  FUN_00a79ad0(local_90,uVar2);
  __CxxThrowException_8(local_90,&DAT_031132d8);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00a79b90(int param_1,int param_2,code *param_3)

{
  undefined4 *puVar1;
  code *pcVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  int **ppiVar6;
  int **local_a8;
  undefined *local_a4;
  undefined4 local_a0;
  undefined4 local_9c;
  int local_98;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_94 [4];
  undefined uStack_90;
  undefined4 uStack_80;
  undefined4 uStack_7c;
  undefined local_50 [64];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_c = ExceptionList;
  puStack_8 = &LAB_00bf3c78;
  local_10 = DAT_0323f878 ^ (uint)&local_a8;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff48;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 7;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined2 *)(param_1 + 4) = 0;
  local_4 = 0;
  local_9c = 1;
  local_a0 = 0;
  ppiVar6 = (int **)(param_2 + 4);
  local_a8 = ppiVar6;
  if (0xf < *(uint *)(param_2 + 0x18)) {
    local_a8 = (int **)*ppiVar6;
    ppiVar6 = (int **)*ppiVar6;
  }
  puVar1 = (undefined4 *)((int)ppiVar6 + *(int *)(param_2 + 0x14));
  local_98 = param_1;
  while( true ) {
    if (local_a8 == (int **)puVar1) {
      ExceptionList = local_c;
      ___security_check_cookie_4();
      return;
    }
    local_a4 = local_50;
    iVar4 = (*param_3)(&local_a0,local_a8,puVar1,&local_a8,local_50,&local_10,&local_a4,uVar3);
    if (iVar4 == 2) break;
    if (local_a4 == local_50) goto LAB_00a79cfe;
    FUN_00828390(local_50,local_a4,param_1);
  }
  uStack_7c = 0xf;
  uStack_80 = 0;
  uStack_90 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (abStack_94,"character conversion failed",0x1b);
  local_4 = 1;
  uVar5 = FUN_00417ca0(abStack_94);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00a79b20(uVar5);
LAB_00a79cfe:
  uStack_7c = 0xf;
  uStack_80 = 0;
  uStack_90 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (abStack_94,"character conversion failed",0x1b);
  local_4 = 3;
  uVar5 = FUN_00417ca0(abStack_94);
  local_4 = CONCAT31(local_4._1_3_,4);
  FUN_00a79b20(uVar5);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



void FUN_00a79d50(int param_1,int param_2,code *param_3)

{
  undefined4 *puVar1;
  code *pcVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  int **ppiVar6;
  int **local_88;
  undefined *local_84;
  undefined4 local_80;
  undefined4 local_7c;
  int local_78;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_74 [4];
  undefined uStack_70;
  undefined4 uStack_60;
  undefined4 uStack_5c;
  undefined local_30 [32];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_c = ExceptionList;
  puStack_8 = &LAB_00bf3ce9;
  local_10 = DAT_0323f878 ^ (uint)&local_88;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffff68;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined *)(param_1 + 4) = 0;
  local_4 = 0;
  local_7c = 1;
  local_80 = 0;
  ppiVar6 = (int **)(param_2 + 4);
  local_88 = ppiVar6;
  if (7 < *(uint *)(param_2 + 0x18)) {
    local_88 = (int **)*ppiVar6;
    ppiVar6 = (int **)*ppiVar6;
  }
  puVar1 = (undefined4 *)((int)ppiVar6 + *(int *)(param_2 + 0x14) * 2);
  local_78 = param_1;
  while( true ) {
    if (local_88 == (int **)puVar1) {
      ExceptionList = local_c;
      ___security_check_cookie_4();
      return;
    }
    local_84 = local_30;
    iVar4 = (*param_3)(&local_80,local_88,puVar1,&local_88,local_30,&local_10,&local_84,uVar3);
    if (iVar4 == 2) break;
    if (local_84 == local_30) goto LAB_00a79ebb;
    FUN_008282f0(local_30,local_84,param_1);
  }
  uStack_5c = 0xf;
  uStack_60 = 0;
  uStack_70 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (abStack_74,"character conversion failed",0x1b);
  local_4 = 1;
  uVar5 = FUN_00417ca0(abStack_74);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00a79b20(uVar5);
LAB_00a79ebb:
  uStack_5c = 0xf;
  uStack_60 = 0;
  uStack_70 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (abStack_74,"character conversion failed",0x1b);
  local_4 = 3;
  uVar5 = FUN_00417ca0(abStack_74);
  local_4 = CONCAT31(local_4._1_3_,4);
  FUN_00a79b20(uVar5);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



undefined4 FUN_00a79f10(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a79b90(param_1,param_2,&LAB_00828210,param_3);
  return param_1;
}



undefined4 FUN_00a79f40(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a79d50(param_1,param_2,&LAB_00828220,param_3);
  return param_1;
}



undefined4 FUN_00a79f70(undefined4 param_1,undefined4 param_2)

{
  FUN_00a79f10(param_1,param_2,&DAT_032ebd5c);
  return param_1;
}



undefined4 FUN_00a79fa0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a79f40(param_1,param_2,&DAT_032ebd5c);
  return param_1;
}



undefined4 FUN_00a79fd0(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  uint uVar2;
  _Locimp *p_Var3;
  int iVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  _Lockit local_14 [4];
  _Locimp *local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3d28;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe0;
  ExceptionList = &local_c;
  local_10 = (_Locimp *)0x0;
  p_Var3 = std::locale::_Init();
  local_10 = p_Var3;
  iVar4 = FUN_008238c4(uVar2);
  std::_Lockit::_Lockit(local_14,0);
  if (*(int *)(iVar4 + 4) != -1) {
    *(int *)(iVar4 + 4) = *(int *)(iVar4 + 4) + 1;
  }
  FUN_00823810();
  local_4 = 0;
  uVar5 = FUN_00825b50(&local_10);
  uVar1 = param_1;
  FUN_00a79f40(param_1,param_2,uVar5);
  local_4 = 0xffffffff;
  if (p_Var3 != (_Locimp *)0x0) {
    std::_Lockit::_Lockit((_Lockit *)&param_1,0);
    iVar4 = *(int *)(p_Var3 + 4);
    if ((iVar4 != 0) && (iVar4 != -1)) {
      *(int *)(p_Var3 + 4) = iVar4 + -1;
    }
    puVar6 = (undefined4 *)(~-(uint)(*(int *)(p_Var3 + 4) != 0) & (uint)p_Var3);
    FUN_00823810();
    if (puVar6 != (undefined4 *)0x0) {
      (**(code **)*puVar6)(1);
    }
  }
  ExceptionList = local_c;
  return uVar1;
}



undefined4 FUN_00a7a0c0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a79fa0(param_1,param_2);
  return param_1;
}



void __fastcall FUN_00a7a0f0(undefined4 *param_1)

{
  *param_1 = boost::any::placeholder::vftable;
  return;
}



undefined4 * __thiscall FUN_00a7a100(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::any::placeholder::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



bool __fastcall FUN_00a7a120(int param_1)

{
  return *(char *)(param_1 + 4) == '\0';
}



int __thiscall FUN_00a7a130(int param_1_00,void *param_1,uint param_2,size_t param_3)

{
  int **ppiVar1;
  uint uVar2;
  int **ppiVar3;
  void *pvVar4;
  char *pcVar5;
  char *pcVar6;
  
  if ((param_3 != 0) && (uVar2 = *(uint *)(param_1_00 + 0x14), uVar2 != 0)) {
    if (uVar2 <= param_2) {
      param_2 = uVar2 - 1;
    }
    ppiVar1 = (int **)(param_1_00 + 4);
    ppiVar3 = ppiVar1;
    if (0xf < *(uint *)(param_1_00 + 0x18)) {
      ppiVar3 = (int **)*ppiVar1;
    }
    pcVar6 = (char *)((int)ppiVar3 + param_2);
    pvVar4 = _memchr(param_1,(int)*pcVar6,param_3);
    while( true ) {
      if (pvVar4 != (void *)0x0) {
        if (0xf < *(uint *)(param_1_00 + 0x18)) {
          return (int)pcVar6 - (int)*ppiVar1;
        }
        return (int)pcVar6 - (int)ppiVar1;
      }
      pcVar5 = (char *)FUN_004017fd();
      if (pcVar6 == pcVar5) break;
      pcVar5 = pcVar6 + -1;
      pcVar6 = pcVar6 + -1;
      pvVar4 = _memchr(param_1,(int)*pcVar5,param_3);
    }
  }
  return -1;
}



void __fastcall FUN_00a7a1d0(int *param_1)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  
  if (*param_1 == 0) {
    FUN_00a3fb10();
  }
  piVar2 = (int *)param_1[1];
  if (*(char *)((int)piVar2 + 0x61) == '\0') {
    iVar3 = *piVar2;
    if (*(char *)(iVar3 + 0x61) == '\0') {
      cVar1 = *(char *)(*(int *)(iVar3 + 8) + 0x61);
      iVar4 = *(int *)(iVar3 + 8);
      while (cVar1 == '\0') {
        cVar1 = *(char *)(*(int *)(iVar4 + 8) + 0x61);
        iVar3 = iVar4;
        iVar4 = *(int *)(iVar4 + 8);
      }
      param_1[1] = iVar3;
      return;
    }
    piVar2 = (int *)piVar2[1];
    cVar1 = *(char *)((int)piVar2 + 0x61);
    while ((cVar1 == '\0' && (param_1[1] == *piVar2))) {
      param_1[1] = (int)piVar2;
      piVar2 = (int *)piVar2[1];
      cVar1 = *(char *)((int)piVar2 + 0x61);
    }
    if (*(char *)(param_1[1] + 0x61) != '\0') {
      FUN_00a3fb10();
      return;
    }
    param_1[1] = (int)piVar2;
  }
  else {
    iVar3 = piVar2[2];
    param_1[1] = iVar3;
    if (*(char *)(iVar3 + 0x61) != '\0') {
      FUN_00a3fb10();
      return;
    }
  }
  return;
}



int * __fastcall FUN_00a7a260(int *param_1)

{
  (**(code **)(*param_1 + 0xc))(param_1 + 0x1b);
  if (0xf < (uint)param_1[0x28]) {
    return (int *)param_1[0x23];
  }
  return param_1 + 0x23;
}



void FUN_00a7a290(int param_1,int param_2,int param_3,int param_4,int *param_5)

{
  while( true ) {
    if ((param_1 == 0) || (param_1 != param_3)) {
      FUN_00a3fb10();
    }
    if (param_2 == param_4) break;
    *param_5 = *param_5 + 1;
    FUN_0043029d();
  }
  return;
}



// WARNING: Removing unreachable block (ram,0x00a7a3f1)

void __thiscall FUN_00a7a2d0(undefined4 *param_1_00,undefined4 *param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  uint uVar6;
  undefined4 *puVar7;
  int iVar8;
  undefined4 *puVar9;
  uint uVar10;
  undefined4 *puVar11;
  undefined4 *local_18;
  undefined4 *local_10;
  
  local_18 = (undefined4 *)param_1_00[6];
  cVar1 = *(char *)((int)(undefined4 *)local_18[1] + 0x45);
  puVar7 = local_18;
  local_10 = (undefined4 *)local_18[1];
  while (cVar1 == '\0') {
    uVar2 = *(uint *)(param_2 + 0x14);
    if (*(uint *)(param_2 + 0x18) < 0x10) {
      iVar8 = param_2 + 4;
    }
    else {
      iVar8 = *(int *)(param_2 + 4);
    }
    uVar3 = local_10[8];
    uVar6 = uVar3;
    if (uVar2 <= uVar3) {
      uVar6 = uVar2;
    }
    if ((uint)local_10[9] < 0x10) {
      puVar5 = local_10 + 4;
    }
    else {
      puVar5 = (undefined4 *)local_10[4];
    }
    uVar6 = FUN_0042a160(puVar5,iVar8,uVar6);
    if (uVar6 == 0) {
      if (uVar2 <= uVar3) {
        uVar6 = (uint)(uVar3 != uVar2);
        goto LAB_00a7a34a;
      }
LAB_00a7a34c:
      puVar5 = (undefined4 *)local_10[2];
      local_10 = puVar7;
    }
    else {
LAB_00a7a34a:
      if ((int)uVar6 < 0) goto LAB_00a7a34c;
      if (*(char *)((int)local_18 + 0x45) != '\0') {
        if ((uint)local_10[9] < 0x10) {
          puVar7 = local_10 + 4;
        }
        else {
          puVar7 = (undefined4 *)local_10[4];
        }
        iVar8 = FUN_00429910(0,uVar2,puVar7,local_10[8]);
        if (iVar8 < 0) {
          local_18 = local_10;
        }
      }
      puVar5 = (undefined4 *)*local_10;
    }
    puVar7 = local_10;
    local_10 = puVar5;
    cVar1 = *(char *)((int)puVar5 + 0x45);
  }
  if (*(char *)((int)local_18 + 0x45) == '\0') {
    puVar5 = (undefined4 *)*local_18;
  }
  else {
    puVar5 = *(undefined4 **)(param_1_00[6] + 4);
  }
  if (*(char *)((int)puVar5 + 0x45) == '\0') {
    uVar2 = *(uint *)(param_2 + 0x14);
    uVar3 = *(uint *)(param_2 + 0x18);
    do {
      uVar6 = puVar5[8];
      if ((uint)puVar5[9] < 0x10) {
        puVar11 = puVar5 + 4;
      }
      else {
        puVar11 = (undefined4 *)puVar5[4];
      }
      uVar10 = uVar2;
      if (uVar6 <= uVar2) {
        uVar10 = uVar6;
      }
      puVar9 = (undefined4 *)(param_2 + 4);
      if (0xf < uVar3) {
        puVar9 = *(undefined4 **)(undefined4 *)(param_2 + 4);
      }
      uVar10 = FUN_0042a160(puVar9,puVar11,uVar10);
      if (uVar10 == 0) {
        if (uVar6 <= uVar2) {
          uVar10 = (uint)(uVar2 != uVar6);
          goto LAB_00a7a421;
        }
LAB_00a7a423:
        puVar11 = (undefined4 *)*puVar5;
        local_18 = puVar5;
      }
      else {
LAB_00a7a421:
        if ((int)uVar10 < 0) goto LAB_00a7a423;
        puVar11 = (undefined4 *)puVar5[2];
      }
      puVar5 = puVar11;
    } while (*(char *)((int)puVar11 + 0x45) == '\0');
  }
  uVar4 = *param_1_00;
  param_1[1] = puVar7;
  *param_1 = uVar4;
  param_1[2] = uVar4;
  param_1[3] = local_18;
  return;
}



undefined4 * __thiscall FUN_00a7a460(int param_1_00,int param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  undefined4 *puVar4;
  uint uVar5;
  int *piVar6;
  undefined4 *puVar7;
  undefined4 *local_4;
  
  local_4 = *(undefined4 **)(param_1_00 + 0x18);
  if (*(char *)((int)(undefined4 *)local_4[1] + 0x61) == '\0') {
    uVar1 = *(uint *)(param_1 + 0x18);
    uVar2 = *(uint *)(param_1 + 0x14);
    puVar7 = (undefined4 *)local_4[1];
    do {
      piVar6 = (int *)(param_1 + 4);
      if (0xf < uVar1) {
        piVar6 = (int *)*(int *)(param_1 + 4);
      }
      uVar3 = puVar7[8];
      uVar5 = uVar3;
      if (uVar2 <= uVar3) {
        uVar5 = uVar2;
      }
      if ((uint)puVar7[9] < 0x10) {
        puVar4 = puVar7 + 4;
      }
      else {
        puVar4 = (undefined4 *)puVar7[4];
      }
      uVar5 = FUN_0042a160(puVar4,piVar6,uVar5);
      if (uVar5 == 0) {
        if (uVar2 <= uVar3) {
          uVar5 = (uint)(uVar3 != uVar2);
          goto LAB_00a7a4cd;
        }
LAB_00a7a4cf:
        puVar4 = (undefined4 *)puVar7[2];
      }
      else {
LAB_00a7a4cd:
        if ((int)uVar5 < 0) goto LAB_00a7a4cf;
        puVar4 = (undefined4 *)*puVar7;
        local_4 = puVar7;
      }
      puVar7 = puVar4;
    } while (*(char *)((int)puVar4 + 0x61) == '\0');
  }
  return local_4;
}



void __thiscall FUN_00a7a4f0(int *param_1_00,int *param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  iVar1 = FUN_0067219c(param_2);
  local_c = iVar1;
  if (param_1_00 == (int *)0x0) {
    FUN_00a3fb10();
  }
  iVar3 = param_1_00[6];
  local_10 = *param_1_00;
  if (*param_1_00 == 0) {
    FUN_00a3fb10();
  }
  if (iVar1 != iVar3) {
    if (*(uint *)(iVar1 + 0x24) < 0x10) {
      iVar3 = iVar1 + 0x10;
    }
    else {
      iVar3 = *(int *)(iVar1 + 0x10);
    }
    iVar1 = FUN_00429910(0,*(undefined4 *)(param_2 + 0x14),iVar3,*(undefined4 *)(iVar1 + 0x20));
    if (-1 < iVar1) {
      piVar2 = &local_10;
      goto LAB_00a7a568;
    }
  }
  local_4 = param_1_00[6];
  local_8 = *param_1_00;
  piVar2 = &local_8;
LAB_00a7a568:
  iVar1 = piVar2[1];
  *param_1 = *piVar2;
  param_1[1] = iVar1;
  return;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00a7a580(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf22d8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 0xf;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  param_1_00[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00,param_1,0,0xffffffff);
  *(undefined4 *)(param_1_00 + 0x34) = 0xf;
  *(undefined4 *)(param_1_00 + 0x30) = 0;
  local_4 = 0;
  param_1_00[0x20] =
       (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00 + 0x1c,param_2,0,0xffffffff);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a7a600(undefined4 *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf3d58;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *param_1_00 = boost::any::
                holder<class_std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>_>
                ::vftable;
  param_1_00[6] = 0;
  param_1_00[7] = 0xf;
  local_4 = 0;
  *(undefined *)(param_1_00 + 2) = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 1),param_1,0,0xffffffff);
  ExceptionList = local_c;
  return param_1_00;
}



TypeDescriptor * FUN_00a7a670(void)

{
  return &std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          RTTI_Type_Descriptor;
}



void __fastcall FUN_00a7a680(undefined4 *param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3d58;
  local_c = ExceptionList;
  if (0xf < (uint)param_1[7]) {
    ExceptionList = &local_c;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1[2],DAT_0323f878 ^ (uint)&stack0xffffffec);
  }
  param_1[7] = 0xf;
  param_1[6] = 0;
  *(undefined *)(param_1 + 2) = 0;
  *param_1 = boost::any::placeholder::vftable;
  return;
}



undefined4 __thiscall FUN_00a7a6e0(undefined4 param_1_00,byte param_1)

{
  FUN_00a7a680();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __fastcall FUN_00a7a700(int param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x20);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    uVar2 = FUN_00a7a600(param_1 + 4);
    ExceptionList = local_c;
    return uVar2;
  }
  ExceptionList = local_c;
  return 0;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00a7a770(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  *(undefined4 *)(param_1 + 0x18) = 0xf;
  *(undefined4 *)(param_1 + 0x14) = 0;
  param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
                     )&DAT_0324246c,0,0xffffffff);
  return param_1;
}



void FUN_00a7a7a0(int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  uVar4 = *(undefined4 *)(param_1 + 0x14);
  uVar3 = 0;
  uVar1 = FUN_004017fd(0,uVar4);
  iVar2 = FUN_004277a0(uVar1,uVar3,uVar4);
  while (iVar2 != -1) {
    FUN_00429b10(iVar2,*(undefined4 *)(param_1 + 0x14),param_2,0,0xffffffff);
    uVar4 = *(undefined4 *)(param_1 + 0x14);
    uVar3 = 0;
    uVar1 = FUN_004017fd(0,uVar4);
    iVar2 = FUN_004277a0(uVar1,uVar3,uVar4);
  }
  return;
}



void ** __fastcall FUN_00a7a810(void **param_1)

{
  uint uVar1;
  undefined4 *puVar2;
  void *pvVar3;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc3b18;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffec;
  ExceptionList = &local_c;
  puVar2 = (undefined4 *)operator_new(4);
  if (puVar2 == (undefined4 *)0x0) {
    puVar2 = (undefined4 *)0x0;
  }
  else {
    *puVar2 = param_1;
  }
  *param_1 = puVar2;
  local_4 = 0;
  pvVar3 = (void *)FUN_00a6bc30(uVar1);
  param_1[6] = pvVar3;
  *(undefined *)((int)pvVar3 + 0x61) = 1;
  *(void **)((int)param_1[6] + 4) = param_1[6];
  *(void **)param_1[6] = param_1[6];
  *(void **)((int)param_1[6] + 8) = param_1[6];
  param_1[7] = (void *)0x0;
  ExceptionList = local_c;
  return param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00a7a8a0(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            undefined4 param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2278;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 0xf;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  param_1_00[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (param_1_00,param_1,0,0xffffffff);
  local_4 = 0;
  FUN_00a6c410(param_2);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 FUN_00a7a920(undefined4 param_1,undefined4 param_2,uint param_3)

{
  uint uVar1;
  undefined4 param_7;
  uint param_8;
  undefined4 param_10;
  uint param_11;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf3da9;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  local_4 = 2;
  FUN_00a7a580(&param_2,&stack0x00000024);
  if (0xf < param_8) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_3,uVar1);
  }
  param_8 = 0xf;
  param_7 = 0;
  param_3 = param_3 & 0xffffff00;
  if (0xf < param_11) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_10,uVar1);
  }
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __thiscall FUN_00a7a9c0(undefined4 *param_1_00,undefined4 param_1)

{
  void *pvVar1;
  undefined4 uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0x20);
  local_4 = 0;
  if (pvVar1 == (void *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_00a7a600(param_1);
  }
  *param_1_00 = uVar2;
  ExceptionList = local_c;
  return param_1_00;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
FUN_00a7aa30(int *param_1,int param_2,int *param_3,int param_4,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_5)

{
  int iVar1;
  int **unaff_FS_OFFSET;
  int *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bf3de1;
  local_10 = *unaff_FS_OFFSET;
  *unaff_FS_OFFSET = (int *)&local_10;
  local_8 = 0;
  while( true ) {
    if ((param_1 == (int *)0x0) || (param_1 != param_3)) {
      FUN_00a3fb10();
    }
    if (param_2 == param_4) break;
    if (param_1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar1 = 0;
    }
    else {
      iVar1 = *param_1;
    }
    if (param_2 == *(int *)(iVar1 + 0x18)) {
      FUN_00a3fb10();
    }
    local_8._0_1_ = 1;
    if (param_5 !=
        (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)0x0) {
      *(undefined4 *)(param_5 + 0x18) = 0xf;
      *(undefined4 *)(param_5 + 0x14) = 0;
      param_5[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0
      ;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (param_5,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          *)(param_2 + 0xc),0,0xffffffff);
    }
    param_5 = param_5 + 0x1c;
    local_8 = (uint)local_8._1_3_ << 8;
    FUN_0043029d();
  }
  *unaff_FS_OFFSET = local_10;
  return param_5;
}



void Catch_All_00a7aafe(void)

{
  int iVar1;
  code *pcVar2;
  int unaff_EBP;
  int iVar3;
  
  iVar1 = *(int *)(unaff_EBP + 0x18);
  for (iVar3 = *(int *)(unaff_EBP + -0x14); iVar3 != iVar1; iVar3 = iVar3 + 0x1c) {
    FUN_00430afe(iVar3);
  }
  __CxxThrowException_8(0,0);
  pcVar2 = (code *)swi(3);
  (*pcVar2)();
  return;
}



undefined4 FUN_00a7ab30(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_00a7a130(&DAT_00da50b4,0xffffffff,2);
  FUN_005d0682(param_1,iVar1 + 1,0xffffffff);
  return param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00a7ab70(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  int iVar1;
  char *pcVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_34 [40];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3e08;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  iVar1 = *(int *)(param_1_00 + 0x28);
  if (iVar1 < 5) {
    if (iVar1 == 4) {
      pcVar2 = "-";
LAB_00a7ac4a:
      *(undefined4 *)(param_1 + 0x18) = 0xf;
      *(undefined4 *)(param_1 + 0x14) = 0;
      param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0
      ;
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                (param_1,pcVar2,1);
      ExceptionList = local_c;
      return param_1;
    }
    if (iVar1 == 0) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                (param_1,(char *)&PTR_02bd3fc0);
      ExceptionList = local_c;
      return param_1;
    }
    if (iVar1 == 1) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1,"--");
      ExceptionList = local_c;
      return param_1;
    }
  }
  else {
    if (iVar1 == 8) {
      pcVar2 = "/";
      goto LAB_00a7ac4a;
    }
    if (iVar1 == 0x1000) goto LAB_00a7ac31;
  }
  local_38 = 0xf;
  local_3c = 0;
  local_4c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_50,
             "error_with_option_name::m_option_style can only be one of [0, allow_dash_for_short, allow_slash_for_short, allow_long_disguise or allow_long]"
             ,0x8d);
  local_4 = 0;
  FUN_00417ca0(local_50);
  __CxxThrowException_8(local_34,&DAT_031134f4);
LAB_00a7ac31:
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1,"-");
  ExceptionList = local_c;
  return param_1;
}



void FUN_00a7ac80(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  *param_1)

{
  uint uVar1;
  int **ppiVar2;
  int iVar3;
  int *piVar4;
  undefined4 uVar5;
  char *pcVar6;
  undefined auStack_e4 [3];
  undefined local_e1;
  undefined4 local_e0;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_dc [4];
  uint local_d8;
  undefined4 local_c8;
  uint local_c4;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_c0 [4];
  uint local_bc;
  undefined4 local_ac;
  uint local_a8;
  int local_a4 [2];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_9c [4];
  uint local_98;
  undefined4 local_88;
  uint local_84;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_80;
  undefined local_7c [8];
  undefined local_74 [8];
  undefined local_6c [8];
  undefined local_64 [28];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_48 [4];
  uint local_44;
  undefined4 local_34;
  uint local_30;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [4];
  uint local_28;
  int local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3e9e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)auStack_e4;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff0c;
  ExceptionList = &local_c;
  local_e0 = 0;
  local_80 = param_1;
  local_84 = 0xf;
  local_88 = 0;
  local_98 = local_98 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_9c,"option",6);
  local_4 = 1;
  ppiVar2 = (int **)FUN_00a7a4f0(local_6c,local_9c);
  piVar4 = *ppiVar2;
  if (piVar4 == (int *)0x0) {
    FUN_00a3fb10(uVar1);
    piVar4 = *ppiVar2;
    if (piVar4 != (int *)0x0) goto LAB_00a7ad2a;
    iVar3 = 0;
  }
  else {
LAB_00a7ad2a:
    iVar3 = *piVar4;
  }
  if (ppiVar2[1] == *(int **)(iVar3 + 0x18)) {
    FUN_00a3fb10(uVar1);
  }
  local_e1 = ppiVar2[1][0xf] == 0;
  local_4 = local_4 & 0xffffff00;
  if (0xf < local_84) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_98);
  }
  local_84 = 0xf;
  local_88 = 0;
  local_98 = local_98 & 0xffffff00;
  if ((bool)local_e1) {
    local_c4 = 0xf;
    local_c8 = 0;
    local_d8 = local_d8 & 0xffffff00;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_dc,"original_token",0xe);
    local_4 = 2;
    ppiVar2 = (int **)FUN_00a7a4f0(local_a4,local_dc);
    piVar4 = *ppiVar2;
    if (piVar4 == (int *)0x0) {
      FUN_00a3fb10();
      piVar4 = *ppiVar2;
      if (piVar4 != (int *)0x0) goto LAB_00a7adcb;
      iVar3 = 0;
    }
    else {
LAB_00a7adcb:
      iVar3 = *piVar4;
    }
    if (ppiVar2[1] == *(int **)(iVar3 + 0x18)) {
      FUN_00a3fb10();
    }
    piVar4 = ppiVar2[1];
    *(undefined4 *)(param_1 + 0x18) = 0xf;
    *(undefined4 *)(param_1 + 0x14) = 0;
    param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)0x0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (param_1,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        *)(piVar4 + 10),0,0xffffffff);
    local_28 = local_d8;
    local_14 = local_c4;
  }
  else {
    local_a8 = 0xf;
    local_ac = 0;
    local_bc = local_bc & 0xffffff00;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_c0,"original_token",0xe);
    local_4 = 3;
    ppiVar2 = (int **)FUN_00a7a4f0(local_74,local_c0);
    piVar4 = *ppiVar2;
    if (piVar4 == (int *)0x0) {
      FUN_00a3fb10();
      piVar4 = *ppiVar2;
      if (piVar4 != (int *)0x0) goto LAB_00a7ae54;
      iVar3 = 0;
    }
    else {
LAB_00a7ae54:
      iVar3 = *piVar4;
    }
    if (ppiVar2[1] == *(int **)(iVar3 + 0x18)) {
      FUN_00a3fb10();
    }
    FUN_00a7ab30(local_2c,ppiVar2[1] + 10);
    local_4._0_1_ = 5;
    if (0xf < local_a8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_bc);
    }
    local_a8 = 0xf;
    local_ac = 0;
    local_bc = local_bc & 0xffffff00;
    local_c4 = 0xf;
    local_c8 = 0;
    local_d8 = local_d8 & 0xffffff00;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_dc,"option",6);
    local_4 = CONCAT31(local_4._1_3_,6);
    ppiVar2 = (int **)FUN_00a7a4f0(local_7c,local_dc);
    piVar4 = *ppiVar2;
    if (piVar4 == (int *)0x0) {
      FUN_00a3fb10();
      piVar4 = *ppiVar2;
      if (piVar4 != (int *)0x0) goto LAB_00a7aef8;
      iVar3 = 0;
    }
    else {
LAB_00a7aef8:
      iVar3 = *piVar4;
    }
    if (ppiVar2[1] == *(int **)(iVar3 + 0x18)) {
      FUN_00a3fb10();
    }
    FUN_00a7ab30(local_48,ppiVar2[1] + 10);
    local_4._0_1_ = 8;
    if (0xf < local_c4) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_d8);
    }
    iVar3 = *(int *)(local_a4[0] + 0x28);
    local_c4 = 0xf;
    local_c8 = 0;
    local_d8 = local_d8 & 0xffffff00;
    if ((iVar3 != 1) && (iVar3 != 0x1000)) {
      if ((iVar3 == 0) || (local_18 == 0)) {
        *(undefined4 *)(param_1 + 0x18) = 0xf;
        *(undefined4 *)(param_1 + 0x14) = 0;
        param_1[4] = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>)
                     0x0;
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                  (param_1,local_48,0,0xffffffff);
        local_e0 = 1;
        local_4._0_1_ = 5;
        FUN_004670d7();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_004670d7();
      }
      else {
        uVar5 = FUN_00a7ab70(local_64);
        local_4._0_1_ = 10;
        pcVar6 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                 operator[](local_2c,0);
        FUN_00a6c5c0(param_1,uVar5,*pcVar6);
        local_e0 = 1;
        local_4._0_1_ = 8;
        FUN_004670d7();
        local_4._0_1_ = 5;
        FUN_004670d7();
        local_4 = (uint)local_4._1_3_ << 8;
        FUN_004670d7();
      }
      goto LAB_00a7b0c6;
    }
    uVar5 = FUN_00a7ab70(local_c0);
    local_4 = CONCAT31(local_4._1_3_,9);
    FUN_004f4b55(param_1,uVar5,local_48);
    if (0xf < local_a8) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_bc);
    }
    local_a8 = 0xf;
    local_ac = 0;
    local_bc = local_bc & 0xffffff00;
    if (0xf < local_30) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_44);
    }
    local_30 = 0xf;
    local_34 = 0;
    local_44 = local_44 & 0xffffff00;
  }
  if (0xf < local_14) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_28);
  }
LAB_00a7b0c6:
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00a7b100(undefined4 *param_1_00,undefined4 *param_1,char param_2,int **param_3,
            undefined4 param_4)

{
  char cVar1;
  int *piVar2;
  int **ppiVar3;
  int *piVar4;
  undefined4 uVar5;
  int *piVar6;
  int **ppiVar7;
  int *piVar8;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_50 [4];
  undefined local_4c;
  undefined4 local_3c;
  undefined4 local_38;
  undefined **local_34 [10];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2db8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (0x30c30c1 < (uint)param_1_00[7]) {
    local_38 = 0xf;
    local_3c = 0;
    local_4c = 0;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_50,"map/set<T> too long",0x13);
    local_4 = 0;
    FUN_00417ca0(local_50);
    local_34[0] = std::length_error::vftable;
    __CxxThrowException_8(local_34,&DAT_03115554);
  }
  piVar6 = (int *)FUN_00a6d710(param_1_00[6],param_3,param_1_00[6],param_4,0);
  param_1_00[7] = param_1_00[7] + 1;
  if (param_3 == (int **)param_1_00[6]) {
    ((int **)param_1_00[6])[1] = piVar6;
    *(int **)param_1_00[6] = piVar6;
    *(int **)(param_1_00[6] + 8) = piVar6;
  }
  else if (param_2 == '\0') {
    param_3[2] = piVar6;
    if (param_3 == *(int ***)(param_1_00[6] + 8)) {
      *(int **)(param_1_00[6] + 8) = piVar6;
    }
  }
  else {
    *param_3 = piVar6;
    if (param_3 == *(int ***)(int **)param_1_00[6]) {
      *(int **)param_1_00[6] = piVar6;
    }
  }
  cVar1 = *(char *)(piVar6[1] + 0x60);
  piVar8 = piVar6;
  while (cVar1 == '\0') {
    ppiVar7 = (int **)(piVar8 + 1);
    piVar2 = *ppiVar7;
    ppiVar3 = (int **)piVar2[1];
    if (piVar2 == *ppiVar3) {
      piVar4 = ppiVar3[2];
      if (*(char *)(piVar4 + 0x18) == '\0') {
        *(undefined *)(piVar2 + 0x18) = 1;
        *(undefined *)(piVar4 + 0x18) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x60) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)piVar2[2]) {
          FUN_00a6b920(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x60) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x60) = 0;
        FUN_00a6b7b0(*(undefined4 *)(piVar8[1] + 4));
      }
    }
    else {
      piVar4 = *ppiVar3;
      if (*(char *)(piVar4 + 0x18) == '\0') {
        *(undefined *)(piVar2 + 0x18) = 1;
        *(undefined *)(piVar4 + 0x18) = 1;
        *(undefined *)((*ppiVar7)[1] + 0x60) = 0;
        piVar8 = (int *)(*ppiVar7)[1];
      }
      else {
        if (piVar8 == (int *)*piVar2) {
          FUN_00a6b7b0(piVar2);
          piVar8 = piVar2;
        }
        *(undefined *)(piVar8[1] + 0x60) = 1;
        *(undefined *)(*(int *)(piVar8[1] + 4) + 0x60) = 0;
        piVar2 = *(int **)(piVar8[1] + 4);
        piVar4 = (int *)piVar2[2];
        piVar2[2] = *piVar4;
        if (*(char *)(*piVar4 + 0x61) == '\0') {
          *(int **)(*piVar4 + 4) = piVar2;
        }
        piVar4[1] = piVar2[1];
        if (piVar2 == (int *)*(int *)(param_1_00[6] + 4)) {
          *(int **)(param_1_00[6] + 4) = piVar4;
        }
        else {
          ppiVar3 = (int **)piVar2[1];
          if (piVar2 == *ppiVar3) {
            *ppiVar3 = piVar4;
          }
          else {
            ppiVar3[2] = piVar4;
          }
        }
        *piVar4 = (int)piVar2;
        piVar2[1] = (int)piVar4;
      }
    }
    cVar1 = *(char *)(piVar8[1] + 0x60);
  }
  *(undefined *)(*(int *)(param_1_00[6] + 4) + 0x60) = 1;
  uVar5 = *param_1_00;
  param_1[1] = piVar6;
  *param_1 = uVar5;
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_00a7b300(uint param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5)

{
  uint local_4;
  
  local_4 = param_1_00 & 0xffffff00;
  FUN_00a7aa30(param_1,param_2,param_3,param_4,param_5,param_1_00 + 8,param_5,local_4);
  return;
}



void __thiscall FUN_00a7b340(int **param_1_00,int **param_1,int param_2)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  int **ppiVar4;
  uint uVar5;
  int **ppiVar6;
  int iVar7;
  int *piVar8;
  bool bVar9;
  int **local_8;
  int *local_4;
  
  ppiVar6 = (int **)param_1_00[6][1];
  bVar9 = true;
  cVar1 = *(char *)((int)ppiVar6 + 0x61);
  ppiVar4 = (int **)param_1_00[6];
  local_8 = param_1_00;
  while (cVar1 == '\0') {
    uVar2 = (uint)ppiVar6[8];
    if (ppiVar6[9] < 0x10) {
      piVar8 = (int *)(ppiVar6 + 4);
    }
    else {
      piVar8 = ppiVar6[4];
    }
    uVar3 = *(uint *)(param_2 + 0x14);
    uVar5 = uVar3;
    if (uVar2 <= uVar3) {
      uVar5 = uVar2;
    }
    if (*(uint *)(param_2 + 0x18) < 0x10) {
      iVar7 = param_2 + 4;
    }
    else {
      iVar7 = *(int *)(param_2 + 4);
    }
    uVar5 = FUN_0042a160(iVar7,piVar8,uVar5);
    if (uVar5 == 0) {
      if (uVar3 < uVar2) {
        uVar5 = 0xffffffff;
      }
      else {
        uVar5 = (uint)(uVar3 != uVar2);
      }
    }
    bVar9 = (int)uVar5 < 0;
    if (bVar9) {
      piVar8 = *ppiVar6;
    }
    else {
      piVar8 = ppiVar6[2];
    }
    ppiVar4 = ppiVar6;
    ppiVar6 = (int **)piVar8;
    cVar1 = *(char *)((int)piVar8 + 0x61);
  }
  ppiVar6 = (int **)*local_8;
  local_4 = (int *)ppiVar4;
  if (bVar9) {
    piVar8 = (int *)*local_8[6];
    local_8 = ppiVar6;
    if (ppiVar6 == (int **)0x0) {
      FUN_00a3fb10();
    }
    if (ppiVar4 == (int **)piVar8) {
      bVar9 = true;
      goto LAB_00a7b417;
    }
    FUN_00a7a1d0();
    ppiVar6 = local_8;
  }
  local_8 = ppiVar6;
  piVar8 = local_4;
  ppiVar6 = local_8;
  if (*(uint *)(param_2 + 0x18) < 0x10) {
    iVar7 = param_2 + 4;
  }
  else {
    iVar7 = *(int *)(param_2 + 4);
  }
  iVar7 = FUN_00429910(0,local_4[8],iVar7,*(undefined4 *)(param_2 + 0x14));
  if (-1 < iVar7) {
    *param_1 = (int *)ppiVar6;
    param_1[1] = piVar8;
    *(undefined *)(param_1 + 2) = 0;
    return;
  }
LAB_00a7b417:
  ppiVar6 = (int **)FUN_00a7b100(&local_8,bVar9,ppiVar4,param_2);
  piVar8 = ppiVar6[1];
  *param_1 = *ppiVar6;
  param_1[1] = piVar8;
  *(undefined *)(param_1 + 2) = 1;
  return;
}



undefined4 * __thiscall
FUN_00a7b4a0(int *param_1_00,undefined4 *param_1,int param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  char cVar2;
  undefined4 *puVar3;
  int local_c;
  int local_8;
  
  if (param_1_00[7] == 0) {
    FUN_00a7b100(param_1,1,param_1_00[6],param_4);
    return param_1;
  }
  iVar1 = *(int *)param_1_00[6];
  if ((param_2 == 0) || (param_2 != *param_1_00)) {
    FUN_00a3fb10();
  }
  if (param_3 == iVar1) {
    cVar2 = FUN_004316d8(param_4,param_3 + 0xc);
    if (cVar2 != '\0') {
      FUN_00a7b100(param_1,1,param_3,param_4);
      return param_1;
    }
  }
  else {
    iVar1 = param_1_00[6];
    if ((param_2 == 0) || (param_2 != *param_1_00)) {
      FUN_00a3fb10();
    }
    if (param_3 == iVar1) {
      cVar2 = FUN_004316d8(*(int *)(param_1_00[6] + 8) + 0xc,param_4);
      if (cVar2 != '\0') {
        FUN_00a7b100(param_1,0,*(undefined4 *)(param_1_00[6] + 8),param_4);
        return param_1;
      }
    }
    else {
      cVar2 = FUN_004316d8(param_4,param_3 + 0xc);
      if (cVar2 != '\0') {
        FUN_00a7a1d0();
        cVar2 = FUN_004316d8(param_3 + 0xc,param_4);
        if (cVar2 != '\0') {
          if (*(char *)(*(int *)(param_3 + 8) + 0x61) != '\0') {
            FUN_00a7b100(param_1,0,param_3,param_4);
            return param_1;
          }
          FUN_00a7b100(param_1,1,param_3,param_4);
          return param_1;
        }
      }
      cVar2 = FUN_004316d8(param_3 + 0xc,param_4);
      if (cVar2 != '\0') {
        local_8 = param_1_00[6];
        local_c = *param_1_00;
        FUN_00a6b970();
        cVar2 = FUN_00a6b780(&local_c);
        if (cVar2 == '\0') {
          cVar2 = FUN_004316d8(param_4,param_3 + 0xc);
          if (cVar2 == '\0') goto LAB_00a7b6a8;
        }
        if (*(char *)(*(int *)(param_3 + 8) + 0x61) != '\0') {
          FUN_00a7b100(param_1,0,param_3,param_4);
          return param_1;
        }
        FUN_00a7b100(param_1,1,param_3,param_4);
        return param_1;
      }
    }
  }
LAB_00a7b6a8:
  puVar3 = (undefined4 *)FUN_00a7b340(&local_c,param_4);
  *param_1 = *puVar3;
  param_1[1] = puVar3[1];
  return param_1;
}



int * __thiscall FUN_00a7b6d0(int **param_1_00,int param_1)

{
  uint uVar1;
  int *piVar2;
  int *piVar3;
  int iVar4;
  undefined4 uVar5;
  int **ppiVar6;
  int *piVar7;
  undefined local_a0 [4];
  int *local_9c;
  undefined local_98 [4];
  undefined local_94;
  undefined4 local_84;
  undefined4 local_80;
  undefined local_78;
  undefined4 local_68;
  undefined4 local_64;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3eee;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff50;
  ExceptionList = &local_c;
  piVar2 = (int *)FUN_00a7a460(param_1);
  if (param_1_00 == (int **)0x0) {
    FUN_00a3fb10(uVar1);
  }
  piVar7 = *param_1_00;
  local_9c = param_1_00[6];
  if (piVar7 == (int *)0x0) {
    FUN_00a3fb10(uVar1);
  }
  if (piVar2 != local_9c) {
    if ((uint)piVar2[9] < 0x10) {
      piVar3 = piVar2 + 4;
    }
    else {
      piVar3 = (int *)piVar2[4];
    }
    iVar4 = FUN_00429910(0,*(undefined4 *)(param_1 + 0x14),piVar3,piVar2[8]);
    if (-1 < iVar4) goto LAB_00a7b7d2;
  }
  local_80 = 0xf;
  local_84 = 0;
  local_94 = 0;
  local_64 = 0xf;
  local_68 = 0;
  local_78 = 0;
  local_4 = 1;
  uVar5 = FUN_00a7a8a0(param_1,local_98);
  local_4._0_1_ = 2;
  ppiVar6 = (int **)FUN_00a7b4a0(local_a0,piVar7,piVar2,uVar5);
  piVar7 = *ppiVar6;
  piVar2 = ppiVar6[1];
  local_4 = CONCAT31(local_4._1_3_,1);
  FUN_00a6c150();
  local_4 = 0xffffffff;
  FUN_00a6bff0();
LAB_00a7b7d2:
  if (piVar7 == (int *)0x0) {
    FUN_00a3fb10();
    iVar4 = 0;
  }
  else {
    iVar4 = *piVar7;
  }
  if (piVar2 == *(int **)(iVar4 + 0x18)) {
    FUN_00a3fb10();
  }
  ExceptionList = local_c;
  return piVar2 + 10;
}



undefined4 __thiscall
FUN_00a7b810(undefined4 param_1_00,int *param_1,uint param_2,int *param_3,uint param_4)

{
  uint uVar1;
  int iVar2;
  undefined local_1d;
  undefined4 local_1c;
  undefined local_18 [12];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3f18;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffdc;
  ExceptionList = &local_c;
  local_1c = param_1_00;
  FUN_00a71780(&local_1d,&param_1);
  local_4 = 0;
  do {
    if ((param_1 == (int *)0x0) || (param_1 != param_3)) {
      FUN_00a3fb10(uVar1);
    }
    if (param_2 == param_4) {
      ExceptionList = local_c;
      return param_1_00;
    }
    if (param_1 == (int *)0x0) {
      FUN_00a3fb10(uVar1);
      if (param_1 != (int *)0x0) goto LAB_00a7b885;
      iVar2 = 0;
    }
    else {
LAB_00a7b885:
      iVar2 = *param_1;
    }
    if (*(uint *)(iVar2 + 0x10) <= param_2) {
      FUN_00a3fb10();
    }
    FUN_00a71b60(local_18,param_2);
    if (param_1 == (int *)0x0) {
      FUN_00a3fb10();
      if (param_1 != (int *)0x0) goto LAB_00a7b8bf;
      iVar2 = 0;
    }
    else {
LAB_00a7b8bf:
      iVar2 = *param_1;
    }
    if (*(uint *)(iVar2 + 0x10) <= param_2) {
      FUN_00a3fb10();
    }
    param_2 = param_2 + 0x1c;
  } while( true );
}



int __thiscall
FUN_00a7b900(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  int iVar5;
  uint uVar6;
  uint uStack_38;
  uint local_24;
  uint local_18;
  uint *local_14;
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  local_8 = 0xffffffff;
  puStack_c = &LAB_00bf3f40;
  local_10 = ExceptionList;
  uStack_38 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = &uStack_38;
  ExceptionList = &local_10;
  uVar6 = 0;
  local_18 = 0;
  FUN_00a7a290(param_3,param_4,param_5,param_6,&local_18,param_6);
  uVar1 = local_18;
  iVar2 = *(int *)(param_1_00 + 0xc);
  if (iVar2 != 0) {
    iVar5 = *(int *)(param_1_00 + 0x14) - iVar2;
    iVar2 = iVar5 * -0x6db6db6d;
    uVar6 = iVar5 / 0x1c;
  }
  if (local_18 != 0) {
    iVar2 = (*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x1c;
    if (0x9249249U - iVar2 < local_18) {
      iVar2 = FUN_004423c1();
    }
    uVar3 = iVar2 + uVar1;
    if (uVar6 < uVar3) {
      if (0x9249249 - (uVar6 >> 1) < uVar6) {
        uVar6 = 0;
      }
      else {
        uVar6 = uVar6 + (uVar6 >> 1);
      }
      if (uVar6 < uVar3) {
        uVar6 = uVar3;
      }
      iVar5 = FUN_0043043a(uVar6,0);
      uVar1 = local_24 >> 8;
      local_24 = uVar1 << 8;
      local_8 = 0;
      uVar4 = FUN_0043145f(*(undefined4 *)(param_1_00 + 0xc),param_2,iVar5,param_1_00 + 8,param_6,
                           local_24);
      uVar4 = FUN_00a7b300(param_3,param_4,param_5,param_6,uVar4);
      local_24 = uVar1 << 8;
      FUN_0043145f(param_2,*(undefined4 *)(param_1_00 + 0x10),uVar4,param_1_00 + 8,param_6,local_24)
      ;
      iVar2 = *(int *)(param_1_00 + 0xc);
      local_18 = local_18 + (*(int *)(param_1_00 + 0x10) - iVar2) / 0x1c;
      local_8 = 0xffffffff;
      if (iVar2 != 0) {
        FUN_0043091d(iVar2,*(undefined4 *)(param_1_00 + 0x10),param_1_00 + 8,param_6);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(*(undefined4 *)(param_1_00 + 0xc));
      }
      *(uint *)(param_1_00 + 0x14) = iVar5 + uVar6 * 0x1c;
      *(uint *)(param_1_00 + 0x10) = iVar5 + local_18 * 0x1c;
      *(int *)(param_1_00 + 0xc) = iVar5;
      ExceptionList = local_10;
      return iVar5;
    }
    FUN_00a7b300(param_3,param_4,param_5,param_6,*(undefined4 *)(param_1_00 + 0x10));
    FUN_008126fb(param_2,*(undefined4 *)(param_1_00 + 0x10));
    iVar5 = uVar1 * 0x1c;
    FUN_008126fb(*(int *)(param_1_00 + 0x10),iVar5 + *(int *)(param_1_00 + 0x10));
    iVar2 = FUN_008126fb(param_2,*(int *)(param_1_00 + 0x10) + iVar5);
    *(int *)(param_1_00 + 0x10) = *(int *)(param_1_00 + 0x10) + iVar5;
  }
  ExceptionList = local_10;
  return iVar2;
}



void Catch_All_00a7bac1(void)

{
  undefined4 uVar1;
  int unaff_EBP;
  
  uVar1 = *(undefined4 *)(unaff_EBP + -0x1c);
  FUN_0042f41a(uVar1,*(undefined4 *)(unaff_EBP + -0x18));
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1(uVar1);
}



void FUN_00a7bb60(undefined4 param_1,
                 basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                 *param_2,basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          *param_3)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_90 [4];
  undefined local_8c;
  undefined4 uStack_84;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_74 [4];
  undefined local_70;
  undefined4 uStack_68;
  undefined local_44 [56];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3f70;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  local_70 = 0;
  uStack_84 = 0xa7bbae;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (abStack_74,param_3,0,0xffffffff);
  local_4 = 0;
  local_8c = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (abStack_90,param_2,0,0xffffffff);
  local_4 = 0xffffffff;
  pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00a7a920(local_44);
  local_4 = 1;
  this = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
         FUN_00a7b6d0();
  uStack_68 = 0xa7bc13;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (this,pbVar1,0,0xffffffff);
  uStack_68 = 0xa7bc22;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (this + 0x1c,pbVar1 + 0x1c,0,0xffffffff);
  local_4 = 0xffffffff;
  FUN_00a6bff0();
  ExceptionList = local_c;
  return;
}



void __thiscall
FUN_00a7bc50(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  int *piVar6;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar7;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar8;
  int iVar9;
  int iVar10;
  undefined4 uVar11;
  int iVar12;
  int local_64;
  uint local_60;
  int local_5c;
  uint local_58;
  undefined4 local_50;
  uint local_4c;
  undefined local_48 [4];
  uint local_44;
  undefined4 local_34;
  uint local_30;
  int *local_2c;
  int *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf3fc8;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 0x88),param_1,0,0xffffffff);
  FUN_00626c44(param_1_00 + 0x2c);
  local_4 = 0;
  local_4c = 0xf;
  local_50 = 0;
  local_60 = local_60 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             &local_64,"canonical_option",0x10);
  local_4._0_1_ = 1;
  pbVar7 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00a7ac80(local_48);
  local_4._0_1_ = 2;
  pbVar8 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00671c6f(&local_64);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (pbVar8,pbVar7,0,0xffffffff);
  if (0xf < local_30) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_44);
  }
  local_30 = 0xf;
  local_34 = 0;
  local_44 = local_44 & 0xffffff00;
  local_4._0_1_ = 0;
  if (0xf < local_4c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_60);
  }
  local_4c = 0xf;
  local_50 = 0;
  local_60 = local_60 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             &local_64,"prefix",6);
  local_4._0_1_ = 3;
  pbVar7 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00a7ab70(local_48);
  local_4._0_1_ = 4;
  pbVar8 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00671c6f(&local_64);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (pbVar8,pbVar7,0,0xffffffff);
  if (0xf < local_30) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_44);
  }
  local_30 = 0xf;
  local_34 = 0;
  local_44 = local_44 & 0xffffff00;
  local_4 = (uint)local_4._1_3_ << 8;
  if (0xf < local_4c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_60);
  }
  iVar10 = **(int **)(param_1_00 + 100);
  piVar1 = *(int **)(param_1_00 + 0x4c);
  do {
    iVar9 = *(int *)(param_1_00 + 100);
    if ((piVar1 == (int *)0x0) || (piVar1 != *(int **)(param_1_00 + 0x4c))) {
      FUN_00a3fb10();
    }
    piVar5 = local_2c;
    if (iVar10 == iVar9) {
      piVar1 = (int *)*local_14;
      while( true ) {
        piVar6 = local_14;
        if ((piVar5 == (int *)0x0) || (piVar5 != local_2c)) {
          FUN_00a3fb10();
        }
        if (piVar1 == piVar6) {
          local_4 = 0xffffffff;
          FUN_0042f0e5();
          ExceptionList = local_c;
          return;
        }
        if (piVar5 == (int *)0x0) {
          FUN_00a3fb10();
          iVar10 = 0;
        }
        else {
          iVar10 = *piVar5;
        }
        if (piVar1 == (int *)*(int *)(iVar10 + 0x18)) {
          FUN_00a3fb10();
        }
        uVar11 = FUN_00a6c870(&local_64,0x25,piVar1 + 3);
        local_4._0_1_ = 5;
        uVar11 = FUN_00a6c5c0(local_48,uVar11,0x25);
        local_4 = CONCAT31(local_4._1_3_,6);
        if (piVar5 == (int *)0x0) {
          FUN_00a3fb10();
          iVar10 = 0;
        }
        else {
          iVar10 = *piVar5;
        }
        if (piVar1 == (int *)*(int *)(iVar10 + 0x18)) {
          FUN_00a3fb10();
        }
        FUN_00a7a7a0(uVar11,piVar1 + 10);
        if (0xf < local_30) break;
        local_30 = 0xf;
        local_34 = 0;
        local_44 = local_44 & 0xffffff00;
        local_4 = local_4 & 0xffffff00;
        if (0xf < local_4c) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_60);
        }
        local_4c = 0xf;
        local_50 = 0;
        local_60 = local_60 & 0xffffff00;
        FUN_0042fa91();
      }
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_44);
    }
    if (piVar1 == (int *)0x0) {
      FUN_00a3fb10();
      iVar9 = 0;
    }
    else {
      iVar9 = *piVar1;
    }
    if (iVar10 == *(int *)(iVar9 + 0x18)) {
      FUN_00a3fb10();
    }
    FUN_00a7a2d0(&local_64,iVar10 + 0xc);
    uVar4 = local_58;
    iVar3 = local_5c;
    uVar2 = local_60;
    iVar9 = local_64;
    iVar12 = 0;
    while( true ) {
      if ((iVar9 == 0) || (iVar9 != iVar3)) {
        FUN_00a3fb10();
      }
      if (uVar2 == uVar4) break;
      iVar12 = iVar12 + 1;
      FUN_0042fa91();
    }
    if (iVar12 == 0) {
LAB_00a7beb1:
      if (piVar1 == (int *)0x0) {
        FUN_00a3fb10();
        iVar9 = 0;
      }
      else {
        iVar9 = *piVar1;
      }
      if (iVar10 == *(int *)(iVar9 + 0x18)) {
        FUN_00a3fb10();
      }
      if (piVar1 == (int *)0x0) {
        FUN_00a3fb10();
        iVar9 = 0;
      }
      else {
        iVar9 = *piVar1;
      }
      if (iVar10 == *(int *)(iVar9 + 0x18)) {
        FUN_00a3fb10();
      }
      FUN_00a7a7a0(iVar10 + 0x28,iVar10 + 0x44);
    }
    else {
      if (piVar1 == (int *)0x0) {
        FUN_00a3fb10();
        iVar9 = 0;
      }
      else {
        iVar9 = *piVar1;
      }
      if (iVar10 == *(int *)(iVar9 + 0x18)) {
        FUN_00a3fb10();
      }
      iVar9 = FUN_00671c6f(iVar10 + 0xc);
      if (*(int *)(iVar9 + 0x14) == 0) goto LAB_00a7beb1;
    }
    FUN_00a6b970();
  } while( true );
}



void __thiscall
FUN_00a7c050(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  void *local_10;
  undefined *puStack_c;
  undefined4 local_8;
  
  puStack_c = &LAB_00bf3ff0;
  local_10 = ExceptionList;
  ExceptionList = &local_10;
  param_1_00[3] = 0;
  param_1_00[4] = 0;
  param_1_00[5] = 0;
  local_8 = 0;
  FUN_00a7b900(*param_1_00,0,param_1,param_2,param_3,param_4,param_4);
  ExceptionList = local_10;
  return;
}



void Catch_All_00a7c0bd(void)

{
  code *pcVar1;
  
  FUN_0042f245();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void __fastcall FUN_00a7c0d0(undefined4 *param_1)

{
  *param_1 = boost::program_options::multiple_values::vftable;
  FUN_00a6fb20();
  return;
}



undefined4 * __thiscall FUN_00a7c0e0(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::program_options::multiple_values::vftable;
  FUN_00a6fb20();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



void __fastcall FUN_00a7c110(undefined4 *param_1)

{
  *param_1 = boost::program_options::multiple_occurrences::vftable;
  FUN_00a6fb20();
  return;
}



undefined4 * __thiscall FUN_00a7c120(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = boost::program_options::multiple_occurrences::vftable;
  FUN_00a6fb20();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a7c150(undefined4 *param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_2,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_3,
            undefined4 param_4)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_60 [4];
  uint local_5c;
  undefined4 local_4c;
  uint local_48;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_44 [4];
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  pbVar1 = param_1;
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf409f;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  FUN_00417ca0(param_1);
  param_1_00[10] = param_4;
  local_4 = 0;
  *param_1_00 = boost::program_options::error_with_option_name::vftable;
  FUN_00620295(&param_1,&param_1);
  local_4._0_1_ = 1;
  FUN_00a7a810(&param_1,&param_1);
  param_1_00[0x21] = 0xf;
  param_1_00[0x20] = 0;
  local_4._0_1_ = 2;
  *(undefined *)(param_1_00 + 0x1c) = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             (param_1_00 + 0x1b),pbVar1,0,0xffffffff);
  param_1_00[0x28] = 0xf;
  param_1_00[0x27] = 0;
  *(undefined *)(param_1_00 + 0x23) = 0;
  local_4._0_1_ = 4;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,"option",6);
  local_4._0_1_ = 5;
  local_2c = 0xf;
  local_30 = 0;
  local_40 = local_40 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_44,"option \'%canonical_option%\'",0x1b);
  local_4._0_1_ = 6;
  local_48 = 0xf;
  local_4c = 0;
  local_5c = local_5c & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_60,"canonical_option",0x10);
  local_4._0_1_ = 7;
  FUN_00a7bb60(local_60,local_44,local_28);
  if (0xf < local_48) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_5c);
  }
  local_48 = 0xf;
  local_4c = 0;
  local_5c = local_5c & 0xffffff00;
  if (0xf < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40);
  }
  local_2c = 0xf;
  local_30 = 0;
  local_40 = local_40 & 0xffffff00;
  local_4._0_1_ = 4;
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24);
  }
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,"argument",8);
  local_4._0_1_ = 8;
  local_48 = 0xf;
  local_4c = 0;
  local_5c = local_5c & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_60,"argument (\'%value%\')",0x14);
  local_4._0_1_ = 9;
  local_2c = 0xf;
  local_30 = 0;
  local_40 = local_40 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_44,"value",5);
  local_4._0_1_ = 10;
  FUN_00a7bb60(local_44,local_60,local_28);
  if (0xf < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40);
  }
  local_2c = 0xf;
  local_30 = 0;
  local_40 = local_40 & 0xffffff00;
  if (0xf < local_48) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_5c);
  }
  local_48 = 0xf;
  local_4c = 0;
  local_5c = local_5c & 0xffffff00;
  local_4._0_1_ = 4;
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24);
  }
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,(char *)&PTR_02bd3fc0,0);
  local_4._0_1_ = 0xb;
  local_48 = 0xf;
  local_4c = 0;
  local_5c = local_5c & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_60,"%prefix%",8);
  local_4._0_1_ = 0xc;
  local_2c = 0xf;
  local_30 = 0;
  local_40 = local_40 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_44,"prefix",6);
  local_4._0_1_ = 0xd;
  FUN_00a7bb60(local_44,local_60,local_28);
  if (0xf < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40);
  }
  local_2c = 0xf;
  local_30 = 0;
  local_40 = local_40 & 0xffffff00;
  if (0xf < local_48) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_5c);
  }
  local_48 = 0xf;
  local_4c = 0;
  local_5c = local_5c & 0xffffff00;
  local_4._0_1_ = 4;
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24);
  }
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,"option",6);
  local_4._0_1_ = 0xe;
  pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00671c6f(local_28);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (pbVar1,param_2,0,0xffffffff);
  local_4._0_1_ = 4;
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24);
  }
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,"original_token",0xe);
  local_4 = CONCAT31(local_4._1_3_,0xf);
  pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_00671c6f(local_28);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (pbVar1,param_3,0,0xffffffff);
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24);
  }
  ExceptionList = local_c;
  return param_1_00;
}



void ** __thiscall
FUN_00a7c550(void **param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2d28;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(4);
  if (puVar1 == (undefined4 *)0x0) {
    puVar1 = (undefined4 *)0x0;
  }
  else {
    *puVar1 = param_1_00;
  }
  *param_1_00 = puVar1;
  local_4 = 0;
  FUN_00a7c050(param_1,param_2,param_3,param_4,param_3);
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00a7c610(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::multiple_occurrences>::vftable;
  param_1[0x29] =
       boost::exception_detail::
       error_info_injector<class_boost::program_options::multiple_occurrences>::vftable;
  param_1[0x29] = boost::exception::vftable;
  if ((int *)param_1[0x2a] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2a] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2a] = 0;
    }
  }
  *param_1 = boost::program_options::multiple_occurrences::vftable;
  FUN_00a6fb20();
  return;
}



void FUN_00a7c660(void)

{
  FUN_00a7d160();
  return;
}



void __fastcall FUN_00a7c670(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_occurrences>_>
             ::vftable;
  param_1[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_occurrences>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1[0x2e] + 4) + 0xb8 + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_occurrences>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0x2e] + 4) + 0xb4 + (int)param_1) = *(int *)(param_1[0x2e] + 4) + -8;
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::multiple_occurrences>::vftable;
  param_1[0x29] =
       boost::exception_detail::
       error_info_injector<class_boost::program_options::multiple_occurrences>::vftable;
  param_1[0x29] = boost::exception::vftable;
  if ((int *)param_1[0x2a] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2a] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2a] = 0;
    }
  }
  *param_1 = boost::program_options::multiple_occurrences::vftable;
  FUN_00a6fb20();
  return;
}



void FUN_00a7c700(void)

{
  FUN_00a7d130();
  return;
}



void FUN_00a7c710(void)

{
  FUN_00a7d130();
  return;
}



void __fastcall FUN_00a7c720(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::multiple_values>::vftable;
  param_1[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>::
       vftable;
  param_1[0x29] = boost::exception::vftable;
  if ((int *)param_1[0x2a] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2a] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2a] = 0;
    }
  }
  *param_1 = boost::program_options::multiple_values::vftable;
  FUN_00a6fb20();
  return;
}



void FUN_00a7c770(void)

{
  FUN_00a7d1f0();
  return;
}



void __fastcall FUN_00a7c780(undefined4 *param_1)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>_>
             ::vftable;
  param_1[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1[0x2e] + 4) + 0xb8 + (int)param_1) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>_>
       ::vftable;
  *(int *)(*(int *)(param_1[0x2e] + 4) + 0xb4 + (int)param_1) = *(int *)(param_1[0x2e] + 4) + -8;
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::multiple_values>::vftable;
  param_1[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>::
       vftable;
  param_1[0x29] = boost::exception::vftable;
  if ((int *)param_1[0x2a] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2a] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2a] = 0;
    }
  }
  *param_1 = boost::program_options::multiple_values::vftable;
  FUN_00a6fb20();
  return;
}



void FUN_00a7c810(void)

{
  FUN_00a7d1c0();
  return;
}



void FUN_00a7c820(void)

{
  FUN_00a7d1c0();
  return;
}



undefined4 * __fastcall FUN_00a7c830(undefined4 *param_1)

{
  uint uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_60 [4];
  uint local_5c;
  undefined4 local_4c;
  uint local_48;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_44 [4];
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf40e0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,(char *)&PTR_02bd3fc0,0);
  local_4 = 0;
  local_2c = 0xf;
  local_30 = 0;
  local_40 = local_40 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_44,(char *)&PTR_02bd3fc0,0);
  local_4._0_1_ = 1;
  local_48 = 0xf;
  local_4c = 0;
  local_5c = local_5c & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_60,"option \'%canonical_option%\' only takes a single argument",0x38);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00a7c150(local_60,local_44,local_28,0);
  if (0xf < local_48) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_5c,uVar1);
  }
  local_48 = 0xf;
  local_4c = 0;
  local_5c = local_5c & 0xffffff00;
  if (0xf < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40,uVar1);
  }
  local_2c = 0xf;
  local_30 = 0;
  local_40 = local_40 & 0xffffff00;
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  *param_1 = boost::program_options::multiple_values::vftable;
  ExceptionList = local_c;
  return param_1;
}



undefined4 * __fastcall FUN_00a7c950(undefined4 *param_1)

{
  uint uVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_60 [4];
  uint local_5c;
  undefined4 local_4c;
  uint local_48;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_44 [4];
  uint local_40;
  undefined4 local_30;
  uint local_2c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_28 [4];
  uint local_24;
  undefined4 local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf40e0;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffff90;
  ExceptionList = &local_c;
  local_10 = 0xf;
  local_14 = 0;
  local_24 = local_24 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_28,(char *)&PTR_02bd3fc0,0);
  local_4 = 0;
  local_2c = 0xf;
  local_30 = 0;
  local_40 = local_40 & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_44,(char *)&PTR_02bd3fc0,0);
  local_4._0_1_ = 1;
  local_48 = 0xf;
  local_4c = 0;
  local_5c = local_5c & 0xffffff00;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_60,"option \'%canonical_option%\' cannot be specified more than once",0x3e);
  local_4 = CONCAT31(local_4._1_3_,2);
  FUN_00a7c150(local_60,local_44,local_28,0);
  if (0xf < local_48) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_5c,uVar1);
  }
  local_48 = 0xf;
  local_4c = 0;
  local_5c = local_5c & 0xffffff00;
  if (0xf < local_2c) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_40,uVar1);
  }
  local_2c = 0xf;
  local_30 = 0;
  local_40 = local_40 & 0xffffff00;
  if (0xf < local_10) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24,uVar1);
  }
  *param_1 = boost::program_options::multiple_occurrences::vftable;
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00a7ca70(int *param_1_00,undefined4 param_1,int param_2,char param_3)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  undefined4 local_68;
  int *local_64;
  undefined local_60 [4];
  uint local_5c;
  undefined4 local_4c;
  uint local_48;
  undefined local_44 [24];
  undefined local_2c [4];
  uint local_28;
  undefined4 local_18;
  void *local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined local_4;
  undefined3 uStack_3;
  
  local_4 = 0xff;
  uStack_3 = 0xffffff;
  puStack_8 = &LAB_00bf4118;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_68;
  ExceptionList = &local_c;
  local_68 = param_1;
  local_64 = param_1_00;
  if (param_3 == '\0') {
    (**(code **)(*param_1_00 + 0x24))(param_1,param_2,DAT_0323f878 ^ (uint)&stack0xffffff88);
  }
  else {
    FUN_004398f2();
    iVar3 = *(int *)(param_2 + 0x10) - *(int *)(param_2 + 0xc);
    iVar1 = iVar3 >> 0x1f;
    iVar3 = iVar3 / 0x1c + iVar1;
    uVar5 = 0;
    local_4 = 0;
    uStack_3 = 0;
    if (iVar3 != iVar1) {
      iVar4 = 0;
      if (iVar3 == iVar1) {
        FUN_00a3fb10();
      }
      do {
        FUN_00a79f70(local_2c,*(int *)(param_2 + 0xc) + iVar4);
        local_4 = 1;
        uVar2 = FUN_00a79fd0(local_60,local_2c);
        local_4 = 2;
        FUN_00430aa3(uVar2);
        if (0xf < local_48) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_5c);
        }
        local_48 = 0xf;
        local_4c = 0;
        local_5c = local_5c & 0xffffff00;
        local_4 = 0;
        if ((void *)0x7 < local_14) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(local_28);
        }
        local_28 = local_28 & 0xffff0000;
        uVar5 = uVar5 + 1;
        iVar4 = iVar4 + 0x1c;
        local_14 = (void *)0x7;
        local_18 = 0;
        param_1_00 = local_64;
      } while (uVar5 < (uint)((*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0xc)) / 0x1c));
    }
    local_4 = 0;
    (**(code **)(*param_1_00 + 0x24))(local_68,local_44);
    local_c = (void *)0xffffffff;
    FUN_0042f0c1();
  }
  ExceptionList = local_14;
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00a7cc10(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  uint uVar1;
  uint uVar2;
  undefined4 uVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar4;
  int iVar5;
  uint uVar6;
  undefined local_9c [4];
  uint local_98;
  undefined4 local_88;
  uint local_84;
  int local_74;
  int local_70;
  undefined local_68 [4];
  undefined4 local_64;
  uint local_50;
  undefined4 local_4c;
  undefined4 *local_34;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_2c [4];
  uint local_28;
  undefined4 local_18;
  uint local_14;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = -1;
  puStack_8 = &LAB_00bf417e;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)local_9c;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffff54;
  ExceptionList = &local_c;
  if ((*(int *)(param_1_00 + 0x28) == 4) || (*(int *)(param_1_00 + 0x28) == 8)) {
    FUN_00a7bc50(param_1);
  }
  else {
    local_14 = 0xf;
    local_18 = 0;
    local_28 = local_28 & 0xffffff00;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_2c,param_1,0,0xffffffff);
    local_4 = 0;
    uVar6 = *(uint *)(param_1_00 + 0xb4);
    if (uVar6 < *(uint *)(param_1_00 + 0xb0)) {
      FUN_00a3fb10(uVar2);
    }
    uVar1 = *(uint *)(param_1_00 + 0xb0);
    uVar3 = *(undefined4 *)(param_1_00 + 0xa4);
    if (*(uint *)(param_1_00 + 0xb4) < uVar1) {
      FUN_00a3fb10(uVar2);
    }
    FUN_00a7b810(*(undefined4 *)(param_1_00 + 0xa4),uVar1,uVar3,uVar6);
    local_4._0_1_ = 1;
    FUN_00a7c550(local_4c,*local_34,local_4c,local_34);
    local_4 = CONCAT31(local_4._1_3_,2);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (local_2c," and matches ",0xd);
    uVar2 = (local_70 - local_74) / 0x1c;
    if (1 < uVar2) {
      uVar6 = 0;
      if (uVar2 != 1) {
        iVar5 = 0;
        do {
          if (uVar2 <= uVar6) {
            FUN_00a3fb10();
          }
          uVar3 = FUN_00a6c7b0(local_68,"\'%prefix%",iVar5 + local_74);
          local_4._0_1_ = 3;
          pbVar4 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                   FUN_008146bb(local_9c,uVar3,&DAT_00da5304);
          local_4._0_1_ = 4;
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                    (local_2c,pbVar4,0,0xffffffff);
          if (0xf < local_84) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_98);
          }
          local_84 = 0xf;
          local_88 = 0;
          local_98 = local_98 & 0xffffff00;
          local_4 = CONCAT31(local_4._1_3_,2);
          if (0xf < local_50) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_64);
          }
          uVar2 = (local_70 - local_74) / 0x1c;
          uVar6 = uVar6 + 1;
          iVar5 = iVar5 + 0x1c;
        } while (uVar6 < uVar2 - 1);
      }
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                (local_2c,"and ",4);
    }
    if ((1 < (uint)((*(int *)(param_1_00 + 0xb4) - *(int *)(param_1_00 + 0xb0)) / 0x1c)) &&
       ((local_70 - local_74) / 0x1c == 1)) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                (local_2c,"different versions of ",0x16);
    }
    uVar3 = FUN_005e0090();
    uVar3 = FUN_00a6c7b0(local_68,"\'%prefix%",uVar3);
    local_4._0_1_ = 5;
    pbVar4 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             FUN_008146bb(local_9c,uVar3,&DAT_00d5b2e8);
    local_4._0_1_ = 6;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (local_2c,pbVar4,0,0xffffffff);
    if (0xf < local_84) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_98);
    }
    local_84 = 0xf;
    local_88 = 0;
    local_98 = local_98 & 0xffffff00;
    local_4._0_1_ = 2;
    if (0xf < local_50) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_64);
    }
    FUN_00a7bc50(local_2c);
    local_4._0_1_ = 1;
    FUN_0042f0c1();
    local_4 = (uint)local_4._1_3_ << 8;
    FUN_0042f1bb();
    if (0xf < local_14) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_28);
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00a7cf90(int param_1)

{
  FUN_00a7c670();
  *(undefined ***)(param_1 + 0xc0) = boost::exception_detail::clone_base::vftable;
  return;
}



undefined4 * __thiscall FUN_00a7cfb0(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf41b8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_00a6f9b0(param_1);
  *param_1_00 = boost::program_options::multiple_occurrences::vftable;
  local_4 = 0;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xa4;
  }
  param_1_00[0x29] = boost::exception::vftable;
  piVar1 = *(int **)(param_1 + 4);
  param_1_00[0x2a] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 0xc))(uVar2);
  }
  param_1_00[0x2b] = *(undefined4 *)(param_1 + 8);
  param_1_00[0x2c] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[0x2d] = *(undefined4 *)(param_1 + 0x10);
  *param_1_00 = boost::exception_detail::
                error_info_injector<class_boost::program_options::multiple_occurrences>::vftable;
  param_1_00[0x29] =
       boost::exception_detail::
       error_info_injector<class_boost::program_options::multiple_occurrences>::vftable;
  ExceptionList = local_c;
  return param_1_00;
}



void __fastcall FUN_00a7d060(int param_1)

{
  FUN_00a7c780();
  *(undefined ***)(param_1 + 0xc0) = boost::exception_detail::clone_base::vftable;
  return;
}



undefined4 * __thiscall FUN_00a7d080(undefined4 *param_1_00,int param_1)

{
  int *piVar1;
  uint uVar2;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf41e8;
  local_c = ExceptionList;
  uVar2 = DAT_0323f878 ^ (uint)&stack0xffffffe8;
  ExceptionList = &local_c;
  FUN_00a6f9b0(param_1);
  *param_1_00 = boost::program_options::multiple_values::vftable;
  local_4 = 0;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xa4;
  }
  param_1_00[0x29] = boost::exception::vftable;
  piVar1 = *(int **)(param_1 + 4);
  param_1_00[0x2a] = piVar1;
  if (piVar1 != (int *)0x0) {
    (**(code **)(*piVar1 + 0xc))(uVar2);
  }
  param_1_00[0x2b] = *(undefined4 *)(param_1 + 8);
  param_1_00[0x2c] = *(undefined4 *)(param_1 + 0xc);
  param_1_00[0x2d] = *(undefined4 *)(param_1 + 0x10);
  *param_1_00 = boost::exception_detail::
                error_info_injector<class_boost::program_options::multiple_values>::vftable;
  param_1_00[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>::
       vftable;
  ExceptionList = local_c;
  return param_1_00;
}



int __thiscall FUN_00a7d130(int param_1_00,byte param_1)

{
  FUN_00a7c670();
  *(undefined ***)(param_1_00 + 0xc0) = boost::exception_detail::clone_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00a7d160(undefined4 *param_1,byte param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::multiple_occurrences>::vftable;
  param_1[0x29] =
       boost::exception_detail::
       error_info_injector<class_boost::program_options::multiple_occurrences>::vftable;
  param_1[0x29] = boost::exception::vftable;
  if ((int *)param_1[0x2a] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2a] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2a] = 0;
    }
  }
  *param_1 = boost::program_options::multiple_occurrences::vftable;
  FUN_00a6fb20();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



int __thiscall FUN_00a7d1c0(int param_1_00,byte param_1)

{
  FUN_00a7c780();
  *(undefined ***)(param_1_00 + 0xc0) = boost::exception_detail::clone_base::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 * __thiscall FUN_00a7d1f0(undefined4 *param_1,byte param_2)

{
  char cVar1;
  
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::multiple_values>::vftable;
  param_1[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>::
       vftable;
  param_1[0x29] = boost::exception::vftable;
  if ((int *)param_1[0x2a] != (int *)0x0) {
    cVar1 = (**(code **)(*(int *)param_1[0x2a] + 0x10))();
    if (cVar1 != '\0') {
      param_1[0x2a] = 0;
    }
  }
  *param_1 = boost::program_options::multiple_values::vftable;
  FUN_00a6fb20();
  if ((param_2 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1);
  }
  return param_1;
}



undefined4 * __thiscall
FUN_00a7d250(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf4237;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_3 != 0) {
    param_1_00[0x2e] = &DAT_00da4b78;
    param_1_00[0x30] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a7cfb0(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_occurrences>_>
                ::vftable;
  param_1_00[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_occurrences>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2e] + 4) + 0xb8 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_occurrences>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0x2e] + 4) + 0xb4 + (int)param_1_00) =
       *(int *)(param_1_00[0x2e] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xa4;
  }
  FUN_00401200(param_1_00 + 0x29,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall
FUN_00a7d330(undefined4 *param_1_00,int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf4287;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_3 != 0) {
    param_1_00[0x2e] = &DAT_00da4b78;
    param_1_00[0x30] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a7d080(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>_>
                ::vftable;
  param_1_00[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2e] + 4) + 0xb8 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0x2e] + 4) + 0xb4 + (int)param_1_00) =
       *(int *)(param_1_00[0x2e] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xa4;
  }
  FUN_00401200(param_1_00 + 0x29,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * FUN_00a7d410(undefined4 *param_1,undefined4 param_2)

{
  FUN_00a6f9b0(param_2);
  param_1[0x29] = boost::exception::vftable;
  param_1[0x2a] = 0;
  param_1[0x2b] = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0xffffffff;
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::multiple_occurrences>::vftable;
  param_1[0x29] =
       boost::exception_detail::
       error_info_injector<class_boost::program_options::multiple_occurrences>::vftable;
  return param_1;
}



undefined4 * FUN_00a7d470(undefined4 *param_1,undefined4 param_2)

{
  FUN_00a6f9b0(param_2);
  param_1[0x29] = boost::exception::vftable;
  param_1[0x2a] = 0;
  param_1[0x2b] = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0xffffffff;
  *param_1 = boost::exception_detail::
             error_info_injector<class_boost::program_options::multiple_values>::vftable;
  param_1[0x29] =
       boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>::
       vftable;
  return param_1;
}



undefined4 * __thiscall FUN_00a7d4d0(undefined4 *param_1_00,int param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf4237;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0x2e] = &DAT_00da4b78;
    param_1_00[0x30] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a7cfb0(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_occurrences>_>
                ::vftable;
  param_1_00[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_occurrences>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2e] + 4) + 0xb8 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_occurrences>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0x2e] + 4) + 0xb4 + (int)param_1_00) =
       *(int *)(param_1_00[0x2e] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xa4;
  }
  FUN_00401200(param_1_00 + 0x29,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00a7d5b0(undefined4 *param_1_00,int param_1,int param_2)

{
  uint uVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf4287;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffe4;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0x2e] = &DAT_00da4b78;
    param_1_00[0x30] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a7d080(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>_>
                ::vftable;
  param_1_00[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2e] + 4) + 0xb8 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>_>
       ::vftable;
  local_4 = 1;
  *(int *)(*(int *)(param_1_00[0x2e] + 4) + 0xb4 + (int)param_1_00) =
       *(int *)(param_1_00[0x2e] + 4) + -8;
  if (param_1 == 0) {
    param_1 = 0;
  }
  else {
    param_1 = param_1 + 0xa4;
  }
  FUN_00401200(param_1_00 + 0x29,param_1,uVar1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00a7d690(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2bff;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0x2e] = &DAT_00da4b78;
    param_1_00[0x30] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a7cfb0(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_occurrences>_>
                ::vftable;
  param_1_00[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_occurrences>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2e] + 4) + 0xb8 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_occurrences>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0x2e] + 4) + 0xb4 + (int)param_1_00) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 * __thiscall FUN_00a7d750(undefined4 *param_1_00,undefined4 param_1,int param_2)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf2bff;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (param_2 != 0) {
    param_1_00[0x2e] = &DAT_00da4b78;
    param_1_00[0x30] = boost::exception_detail::clone_base::vftable;
    local_4 = 0;
  }
  FUN_00a7d080(param_1);
  *param_1_00 = boost::exception_detail::
                clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>_>
                ::vftable;
  param_1_00[0x29] =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>_>
       ::vftable;
  *(undefined ***)(*(int *)(param_1_00[0x2e] + 4) + 0xb8 + (int)param_1_00) =
       boost::exception_detail::
       clone_impl<struct_boost::exception_detail::error_info_injector<class_boost::program_options::multiple_values>_>
       ::vftable;
  *(undefined4 *)(*(int *)(param_1_00[0x2e] + 4) + 0xb4 + (int)param_1_00) = 0;
  ExceptionList = local_c;
  return param_1_00;
}



int __fastcall FUN_00a7d810(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xc4);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00a7d250(param_1 + -0xc0,local_14,1);
    if (iVar2 != 0) {
      ExceptionList = local_c;
      return *(int *)(*(int *)(iVar2 + 0xb8) + 4) + 0xb8 + iVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_00a7d8b0(int param_1)

{
  code *pcVar1;
  undefined local_c4 [196];
  
  FUN_00a7d690(param_1 + -0xc0,1);
  __CxxThrowException_8(local_c4,&DAT_031139b8);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



int __fastcall FUN_00a7d8e0(int param_1)

{
  void *pvVar1;
  int iVar2;
  uint local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar1 = operator_new(0xc4);
  local_4 = 0;
  if (pvVar1 != (void *)0x0) {
    local_14 = local_14 & 0xffffff00;
    iVar2 = FUN_00a7d330(param_1 + -0xc0,local_14,1);
    if (iVar2 != 0) {
      ExceptionList = local_c;
      return *(int *)(*(int *)(iVar2 + 0xb8) + 4) + 0xb8 + iVar2;
    }
  }
  ExceptionList = local_c;
  return 0;
}



void __fastcall FUN_00a7d980(int param_1)

{
  code *pcVar1;
  undefined local_c4 [196];
  
  FUN_00a7d750(param_1 + -0xc0,1);
  __CxxThrowException_8(local_c4,&DAT_03113a44);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



undefined4 FUN_00a7d9b0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a7d4d0(param_2,1);
  return param_1;
}



undefined4 FUN_00a7d9e0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a7d5b0(param_2,1);
  return param_1;
}



void FUN_00a7da10(void)

{
  FUN_00a7d8b0();
  return;
}



void FUN_00a7da20(void)

{
  FUN_00a7d8e0();
  return;
}



void FUN_00a7da30(void)

{
  FUN_00a7d810();
  return;
}



void FUN_00a7da40(void)

{
  FUN_00a7d980();
  return;
}



void FUN_00a7da50(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_188 [196];
  undefined local_c4 [184];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf42bb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_00a7d410(local_c4,param_1,DAT_0323f878 ^ (uint)local_188);
  local_4 = 0;
  FUN_00a7d9b0(local_188,uVar2);
  __CxxThrowException_8(local_188,&DAT_031139b8);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00a7dac0(undefined4 param_1)

{
  code *pcVar1;
  undefined4 uVar2;
  undefined local_188 [196];
  undefined local_c4 [184];
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf42eb;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar2 = FUN_00a7d470(local_c4,param_1,DAT_0323f878 ^ (uint)local_188);
  local_4 = 0;
  FUN_00a7d9e0(local_188,uVar2);
  __CxxThrowException_8(local_188,&DAT_03113a44);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



void FUN_00a7db30(int *param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  uint uVar3;
  int *piVar4;
  undefined4 *local_d4;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_cc [4];
  undefined4 local_c8;
  uint local_b4;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf4348;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  if (*param_1 != 0) {
    uVar2 = FUN_00a7c950(DAT_0323f878 ^ (uint)&stack0xffffff20);
    local_4 = 0;
    FUN_00a7da50(uVar2);
  }
  uVar3 = (*(int *)(param_2 + 0x10) - *(int *)(param_2 + 0xc)) / 0x1c;
  if (1 < uVar3) {
    uVar2 = FUN_00a7c830();
    local_4 = 1;
    uVar3 = FUN_00a7dac0(uVar2);
  }
  if (uVar3 != 0) {
    uVar2 = FUN_005e0060();
  }
  else {
    uVar2 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                      (local_cc,(char *)&PTR_02bd3fc0);
    local_4 = 2;
  }
  piVar4 = (int *)FUN_00a7a9c0(uVar2);
  if (piVar4 != param_1) {
    iVar1 = *piVar4;
    *piVar4 = *param_1;
    *param_1 = iVar1;
  }
  if (local_d4 != (undefined4 *)0x0) {
    (**(code **)*local_d4)(1);
  }
  if ((uVar3 == 0) && (0xf < local_b4)) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_c8);
  }
  ExceptionList = local_c;
  return;
}



int __fastcall FUN_00a7dc50(int param_1)

{
  if (*(int *)(param_1 + 0x2c) == 0) {
    return (*(int *)(param_1 + 0x10) - *(int *)(param_1 + 0xc)) / 0x1c;
  }
  return -1;
}



int __thiscall FUN_00a7dc80(int param_1_00,uint param_1)

{
  if (param_1 < (uint)((*(int *)(param_1_00 + 0x10) - *(int *)(param_1_00 + 0xc)) / 0x1c)) {
    return *(int *)(param_1_00 + 0xc) + param_1 * 0x1c;
  }
  return param_1_00 + 0x18;
}



void FUN_00a7dcc0(undefined4 param_1,byte *param_2,byte *param_3,byte **param_4,short *param_5,
                 short *param_6,short **param_7)

{
  byte bVar1;
  int iVar2;
  short sVar3;
  int iVar4;
  short **local_18;
  byte **local_14;
  short local_10 [6];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_18;
  local_14 = param_4;
  local_18 = param_7;
  if (param_2 != param_3) {
    do {
      if (param_5 == param_6) break;
      bVar1 = *param_2;
      if (((0x7f < bVar1) && (bVar1 < 0xc0)) || (0xfd < bVar1)) {
LAB_00a7de30:
        *param_4 = param_2;
        goto LAB_00a7de15;
      }
      if (bVar1 < 0x80) {
        iVar2 = 1;
      }
      else if ((byte)(bVar1 + 0x40) < 0x20) {
        iVar2 = 2;
      }
      else if ((byte)(bVar1 + 0x20) < 0x10) {
        iVar2 = 3;
      }
      else if ((byte)(bVar1 + 0x10) < 8) {
        iVar2 = 4;
      }
      else {
        iVar2 = (3 < (byte)(bVar1 + 8)) + 5;
      }
      local_10[0] = 0;
      local_10[1] = 0xc0;
      local_10[2] = 0xe0;
      local_10[3] = 0xf0;
      local_10[4] = 0xf8;
      iVar2 = iVar2 + -1;
      local_10[5] = 0xfc;
      sVar3 = (ushort)bVar1 - local_10[iVar2];
      param_2 = param_2 + 1;
      iVar4 = 0;
      if (iVar2 != 0) {
        do {
          if (param_2 == param_3) goto LAB_00a7ddf3;
          if (0x3f < (byte)(*param_2 + 0x80)) goto LAB_00a7de30;
          sVar3 = sVar3 * 0x40 + (ushort)*param_2 + -0x80;
          iVar4 = iVar4 + 1;
          param_2 = param_2 + 1;
        } while (iVar4 != iVar2);
      }
      if (param_2 == param_3) {
LAB_00a7ddf3:
        if (iVar4 != iVar2) {
          *param_4 = param_2 + (-1 - iVar4);
          goto LAB_00a7de15;
        }
      }
      *param_5 = sVar3;
      param_5 = param_5 + 1;
    } while (param_2 != param_3);
  }
  *param_4 = param_2;
LAB_00a7de15:
  *param_7 = param_5;
  ___security_check_cookie_4();
  return;
}



int FUN_00a7de50(undefined4 param_1,byte *param_2,byte *param_3,uint param_4)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  
  iVar2 = 0;
  uVar3 = 0;
  if (param_2 <= param_3) {
    do {
      if (param_4 < uVar3) break;
      param_2 = param_2 + iVar2;
      bVar1 = *param_2;
      if (bVar1 < 0x80) {
        iVar2 = 1;
      }
      else if ((byte)(bVar1 + 0x40) < 0x20) {
        iVar2 = 2;
      }
      else if ((byte)(bVar1 + 0x20) < 0x10) {
        iVar2 = 3;
      }
      else if ((byte)(bVar1 + 0x10) < 8) {
        iVar2 = 4;
      }
      else {
        iVar2 = (3 < (byte)(bVar1 + 8)) + 5;
      }
      uVar3 = uVar3 + 1;
    } while (param_2 + iVar2 <= param_3);
  }
  return (int)param_2 - (int)param_3;
}



// WARNING: Removing unreachable block (ram,0x00a7e01e)

void FUN_00a7ded0(undefined4 param_1,ushort *param_2,ushort *param_3,ushort **param_4,char *param_5,
                 char *param_6,char **param_7)

{
  ushort uVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  char *pcVar5;
  int iVar6;
  char **local_1c;
  ushort **local_18;
  int local_14;
  undefined2 local_10 [4];
  undefined2 local_8;
  undefined2 local_6;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_1c;
  local_18 = param_4;
  local_1c = param_7;
  local_10[0] = 0;
  local_10[1] = 0xc0;
  local_10[2] = 0xe0;
  local_10[3] = 0xf0;
  local_8 = 0xf8;
  local_6 = 0xfc;
  pcVar5 = param_5;
  if (param_2 != param_3) {
    do {
      pcVar5 = param_5;
      if (param_5 == param_6) break;
      uVar1 = *param_2;
      if (uVar1 < 0x80) {
        iVar6 = 0;
      }
      else {
        iVar6 = 2 - (uint)(uVar1 < 0x800);
      }
      iVar3 = iVar6 * 6;
      pcVar5 = param_5 + 1;
      iVar4 = 0;
      *param_5 = (char)((longlong)(ulonglong)uVar1 / (longlong)(1 << ((byte)iVar3 & 0x1f))) +
                 *(char *)(local_10 + iVar6);
      if (iVar6 != 0) {
        iVar4 = 0;
        do {
          if (pcVar5 == param_6) goto LAB_00a7dfdf;
          iVar3 = iVar3 + -6;
          local_14 = 1 << ((byte)iVar3 & 0x1f);
          uVar2 = (uint)((longlong)(ulonglong)*param_2 / (longlong)local_14) & 0x8000003f;
          if ((int)uVar2 < 0) {
            uVar2 = (uVar2 - 1 | 0xffffffc0) + 1;
          }
          *pcVar5 = (char)uVar2 + -0x80;
          iVar4 = iVar4 + 1;
          pcVar5 = pcVar5 + 1;
        } while (iVar4 != iVar6);
      }
      if (pcVar5 == param_6) {
LAB_00a7dfdf:
        if (iVar4 != iVar6) {
          *param_4 = param_2;
          *param_7 = pcVar5 + (-1 - iVar4);
          ___security_check_cookie_4();
          return;
        }
      }
      param_2 = param_2 + 1;
      param_5 = pcVar5;
    } while (param_2 != param_3);
  }
  *param_4 = param_2;
  *param_7 = pcVar5;
  ___security_check_cookie_4();
  return;
}



SOCKET socket(int af,int type,int protocol)

{
  SOCKET SVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e06e. Too many branches
                    // WARNING: Treating indirect jump as call
  SVar1 = socket(af,type,protocol);
  return SVar1;
}



int WSAStartup(WORD wVersionRequired,LPWSADATA lpWSAData)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e074. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = WSAStartup(wVersionRequired,lpWSAData);
  return iVar1;
}



int WSACleanup(void)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e07a. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = WSACleanup();
  return iVar1;
}



SOCKET accept(SOCKET s,sockaddr *addr,int *addrlen)

{
  SOCKET SVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e080. Too many branches
                    // WARNING: Treating indirect jump as call
  SVar1 = accept(s,addr,addrlen);
  return SVar1;
}



int bind(SOCKET s,sockaddr *addr,int namelen)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e086. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = bind(s,addr,namelen);
  return iVar1;
}



int connect(SOCKET s,sockaddr *name,int namelen)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e08c. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = connect(s,name,namelen);
  return iVar1;
}



int listen(SOCKET s,int backlog)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e092. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = listen(s,backlog);
  return iVar1;
}



int shutdown(SOCKET s,int how)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e098. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = shutdown(s,how);
  return iVar1;
}



int closesocket(SOCKET s)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e09e. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = closesocket(s);
  return iVar1;
}



int recv(SOCKET s,char *buf,int len,int flags)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0a4. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = recv(s,buf,len,flags);
  return iVar1;
}



int WSAGetLastError(void)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0aa. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = WSAGetLastError();
  return iVar1;
}



int send(SOCKET s,char *buf,int len,int flags)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0b0. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = send(s,buf,len,flags);
  return iVar1;
}



int setsockopt(SOCKET s,int level,int optname,char *optval,int optlen)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0b6. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = setsockopt(s,level,optname,optval,optlen);
  return iVar1;
}



int getsockopt(SOCKET s,int level,int optname,char *optval,int *optlen)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0bc. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = getsockopt(s,level,optname,optval,optlen);
  return iVar1;
}



int sendto(SOCKET s,char *buf,int len,int flags,sockaddr *to,int tolen)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0c2. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = sendto(s,buf,len,flags,to,tolen);
  return iVar1;
}



int __WSAFDIsSet(SOCKET param_1,fd_set *param_2)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0c8. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = __WSAFDIsSet(param_1,param_2);
  return iVar1;
}



int select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,timeval *timeout)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0ce. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = select(nfds,readfds,writefds,exceptfds,timeout);
  return iVar1;
}



int getsockname(SOCKET s,sockaddr *name,int *namelen)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0d4. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = getsockname(s,name,namelen);
  return iVar1;
}



int recvfrom(SOCKET s,char *buf,int len,int flags,sockaddr *from,int *fromlen)

{
  int iVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0da. Too many branches
                    // WARNING: Treating indirect jump as call
  iVar1 = recvfrom(s,buf,len,flags,from,fromlen);
  return iVar1;
}



hostent * gethostbyname(char *name)

{
  hostent *phVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0e0. Too many branches
                    // WARNING: Treating indirect jump as call
  phVar1 = gethostbyname(name);
  return phVar1;
}



hostent * gethostbyaddr(char *addr,int len,int type)

{
  hostent *phVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0e6. Too many branches
                    // WARNING: Treating indirect jump as call
  phVar1 = gethostbyaddr(addr,len,type);
  return phVar1;
}



servent * getservbyname(char *name,char *proto)

{
  servent *psVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0ec. Too many branches
                    // WARNING: Treating indirect jump as call
  psVar1 = getservbyname(name,proto);
  return psVar1;
}



u_long ntohl(u_long netlong)

{
  u_long uVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0f2. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = ntohl(netlong);
  return uVar1;
}



u_long htonl(u_long hostlong)

{
  u_long uVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0f8. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = htonl(hostlong);
  return uVar1;
}



u_short ntohs(u_short netshort)

{
  u_short uVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e0fe. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = ntohs(netshort);
  return uVar1;
}



u_short htons(u_short hostshort)

{
  u_short uVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e104. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = htons(hostshort);
  return uVar1;
}



ulong inet_addr(char *cp)

{
  ulong uVar1;
  
                    // WARNING: Could not recover jumptable at 0x00a7e10a. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = inet_addr(cp);
  return uVar1;
}



undefined4 FUN_00a7e110(undefined4 *param_1)

{
  _memset(param_1,0,0x70);
  *param_1 = 0xc1059ed8;
  param_1[1] = 0x367cd507;
  param_1[2] = 0x3070dd17;
  param_1[3] = 0xf70e5939;
  param_1[4] = 0xffc00b31;
  param_1[5] = 0x68581511;
  param_1[6] = 0x64f98fa7;
  param_1[7] = 0xbefa4fa4;
  param_1[0x1b] = 0x1c;
  return 1;
}



undefined4 FUN_00a7e170(undefined4 *param_1)

{
  _memset(param_1,0,0x70);
  *param_1 = 0x6a09e667;
  param_1[1] = 0xbb67ae85;
  param_1[2] = 0x3c6ef372;
  param_1[3] = 0xa54ff53a;
  param_1[4] = 0x510e527f;
  param_1[5] = 0x9b05688c;
  param_1[6] = 0x1f83d9ab;
  param_1[7] = 0x5be0cd19;
  param_1[0x1b] = 0x20;
  return 1;
}



undefined4 FUN_00a7e1d0(int param_1,void *param_2,size_t param_3)

{
  void *_Dst;
  int iVar1;
  size_t _Size;
  uint uVar2;
  
  if (param_3 != 0) {
    uVar2 = *(uint *)(param_1 + 0x20) + param_3 * 8;
    if (uVar2 < *(uint *)(param_1 + 0x20)) {
      *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + 1;
    }
    *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + (param_3 >> 0x1d);
    iVar1 = *(int *)(param_1 + 0x68);
    *(uint *)(param_1 + 0x20) = uVar2;
    if (iVar1 != 0) {
      _Dst = (void *)(param_1 + 0x28);
      if ((param_3 < 0x40) && (iVar1 + param_3 < 0x40)) {
        _memcpy((void *)((int)_Dst + iVar1),param_2,param_3);
        *(int *)(param_1 + 0x68) = *(int *)(param_1 + 0x68) + param_3;
        return 1;
      }
      _Size = 0x40 - iVar1;
      _memcpy((void *)(iVar1 + (int)_Dst),param_2,_Size);
      FUN_00a83c00(param_1,_Dst,1);
      param_2 = (void *)(_Size + (int)param_2);
      param_3 = param_3 - _Size;
      *(undefined4 *)(param_1 + 0x68) = 0;
      _memset(_Dst,0,0x40);
    }
    uVar2 = param_3 >> 6;
    if (uVar2 != 0) {
      FUN_00a83c00(param_1,param_2,uVar2);
      param_2 = (void *)((int)param_2 + uVar2 * 0x40);
      param_3 = param_3 + uVar2 * -0x40;
    }
    if (param_3 != 0) {
      *(size_t *)(param_1 + 0x68) = param_3;
      _memcpy((void *)(param_1 + 0x28),param_2,param_3);
    }
  }
  return 1;
}



undefined4 FUN_00a7e2d0(undefined *param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  uint uVar5;
  
  iVar2 = param_2[0x1a];
  puVar1 = param_2 + 10;
  *(undefined *)(iVar2 + (int)puVar1) = 0x80;
  uVar4 = iVar2 + 1;
  if (0x38 < uVar4) {
    _memset((void *)(uVar4 + (int)puVar1),0,0x40 - uVar4);
    uVar4 = 0;
    FUN_00a83c00(param_2,puVar1,1);
  }
  _memset((void *)(uVar4 + (int)puVar1),0,0x38 - uVar4);
  *(undefined *)(param_2 + 0x18) = *(undefined *)((int)param_2 + 0x27);
  *(undefined *)((int)param_2 + 0x61) = *(undefined *)((int)param_2 + 0x26);
  *(undefined *)((int)param_2 + 0x62) = *(undefined *)((int)param_2 + 0x25);
  *(undefined *)((int)param_2 + 99) = *(undefined *)(param_2 + 9);
  *(undefined *)(param_2 + 0x19) = *(undefined *)((int)param_2 + 0x23);
  *(undefined *)((int)param_2 + 0x65) = *(undefined *)((int)param_2 + 0x22);
  *(undefined *)((int)param_2 + 0x66) = *(undefined *)((int)param_2 + 0x21);
  *(undefined *)((int)param_2 + 0x67) = *(undefined *)(param_2 + 8);
  FUN_00a83c00(param_2,param_2 + 10,1);
  param_2[0x1a] = 0;
  _memset(param_2 + 10,0,0x40);
  uVar4 = param_2[0x1b];
  if (uVar4 == 0x1c) {
    uVar3 = *param_2;
    *param_1 = (char)((uint)uVar3 >> 0x18);
    param_1[1] = (char)((uint)uVar3 >> 0x10);
    param_1[2] = (char)((uint)uVar3 >> 8);
    param_1[3] = (char)uVar3;
    uVar3 = param_2[1];
    param_1[4] = (char)((uint)uVar3 >> 0x18);
    param_1[5] = (char)((uint)uVar3 >> 0x10);
    param_1[6] = (char)((uint)uVar3 >> 8);
    param_1[7] = (char)uVar3;
    uVar3 = param_2[2];
    param_1[8] = (char)((uint)uVar3 >> 0x18);
    param_1[9] = (char)((uint)uVar3 >> 0x10);
    param_1[10] = (char)((uint)uVar3 >> 8);
    param_1[0xb] = (char)uVar3;
    uVar3 = param_2[3];
    param_1[0xc] = (char)((uint)uVar3 >> 0x18);
    param_1[0xd] = (char)((uint)uVar3 >> 0x10);
    param_1[0xe] = (char)((uint)uVar3 >> 8);
    param_1[0xf] = (char)uVar3;
    uVar3 = param_2[4];
    param_1[0x10] = (char)((uint)uVar3 >> 0x18);
    param_1[0x11] = (char)((uint)uVar3 >> 0x10);
    param_1[0x12] = (char)((uint)uVar3 >> 8);
    param_1[0x13] = (char)uVar3;
    uVar3 = param_2[5];
    param_1[0x14] = (char)((uint)uVar3 >> 0x18);
    param_1[0x15] = (char)((uint)uVar3 >> 0x10);
    param_1[0x16] = (char)((uint)uVar3 >> 8);
    param_1 = param_1 + 0x17;
    *param_1 = (char)uVar3;
    uVar3 = param_2[6];
  }
  else {
    if (uVar4 != 0x20) {
      if (0x20 < uVar4) {
        return 0;
      }
      uVar5 = 0;
      if ((uVar4 & 0xfffffffc) == 0) {
        return 1;
      }
      do {
        uVar3 = param_2[uVar5];
        *param_1 = (char)((uint)uVar3 >> 0x18);
        param_1[1] = (char)((uint)uVar3 >> 0x10);
        param_1[2] = (char)((uint)uVar3 >> 8);
        param_1[3] = (char)uVar3;
        uVar5 = uVar5 + 1;
        param_1 = param_1 + 4;
      } while (uVar5 < (uint)param_2[0x1b] >> 2);
      return 1;
    }
    uVar3 = *param_2;
    *param_1 = (char)((uint)uVar3 >> 0x18);
    param_1[1] = (char)((uint)uVar3 >> 0x10);
    param_1[2] = (char)((uint)uVar3 >> 8);
    param_1[3] = (char)uVar3;
    uVar3 = param_2[1];
    param_1[4] = (char)((uint)uVar3 >> 0x18);
    param_1[5] = (char)((uint)uVar3 >> 0x10);
    param_1[6] = (char)((uint)uVar3 >> 8);
    param_1[7] = (char)uVar3;
    uVar3 = param_2[2];
    param_1[8] = (char)((uint)uVar3 >> 0x18);
    param_1[9] = (char)((uint)uVar3 >> 0x10);
    param_1[10] = (char)((uint)uVar3 >> 8);
    param_1[0xb] = (char)uVar3;
    uVar3 = param_2[3];
    param_1[0xc] = (char)((uint)uVar3 >> 0x18);
    param_1[0xd] = (char)((uint)uVar3 >> 0x10);
    param_1[0xe] = (char)((uint)uVar3 >> 8);
    param_1[0xf] = (char)uVar3;
    uVar3 = param_2[4];
    param_1[0x10] = (char)((uint)uVar3 >> 0x18);
    param_1[0x11] = (char)((uint)uVar3 >> 0x10);
    param_1[0x12] = (char)((uint)uVar3 >> 8);
    param_1[0x13] = (char)uVar3;
    uVar3 = param_2[5];
    param_1[0x14] = (char)((uint)uVar3 >> 0x18);
    param_1[0x15] = (char)((uint)uVar3 >> 0x10);
    param_1[0x16] = (char)((uint)uVar3 >> 8);
    param_1[0x17] = (char)uVar3;
    uVar3 = param_2[6];
    param_1[0x18] = (char)((uint)uVar3 >> 0x18);
    param_1[0x19] = (char)((uint)uVar3 >> 0x10);
    param_1[0x1a] = (char)((uint)uVar3 >> 8);
    param_1 = param_1 + 0x1b;
    *param_1 = (char)uVar3;
    uVar3 = param_2[7];
  }
  param_1[1] = (char)((uint)uVar3 >> 0x18);
  param_1[2] = (char)((uint)uVar3 >> 0x10);
  param_1[3] = (char)((uint)uVar3 >> 8);
  param_1[4] = (char)uVar3;
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined * FUN_00a7e5b0(undefined4 param_1,undefined4 param_2,undefined *param_3)

{
  undefined4 local_70;
  undefined4 local_6c;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_4;
  
  local_4 = 0xa7e5ba;
  if (param_3 == (undefined *)0x0) {
    param_3 = &DAT_032ebd70;
  }
  _memset(&local_70,0,0x70);
  local_70 = 0x6a09e667;
  local_6c = 0xbb67ae85;
  local_68 = 0x3c6ef372;
  local_64 = 0xa54ff53a;
  local_60 = 0x510e527f;
  local_5c = 0x9b05688c;
  local_58 = 0x1f83d9ab;
  local_54 = 0x5be0cd19;
  local_4 = 0x20;
  FUN_00a7e1d0(&local_70,param_1,param_2);
  FUN_00a7e2d0(param_3,&local_70);
  FUN_00a84330(&local_70,0x70);
  return param_3;
}



int FUN_00a7e6a0(int param_1)

{
  int iVar1;
  
  FUN_00a7fdc0(9,1,".\\crypto\\err\\err.c",0x162);
  if (DAT_032ed424 == 0) {
    iVar1 = 0;
    if (param_1 == 0) goto LAB_00a7e703;
    FUN_00a84670("int_err_get (err.c)",".\\crypto\\err\\err.c",0x165);
    DAT_032ed424 = FUN_00a84d00(&LAB_00a7e660,&LAB_00a91210);
    FUN_00a84840();
    if (DAT_032ed424 == 0) goto LAB_00a7e703;
  }
  iVar1 = DAT_032ed424;
LAB_00a7e703:
  FUN_00a7fdc0(10,1,".\\crypto\\err\\err.c",0x16b);
  return iVar1;
}



undefined4 FUN_00a7e770(undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  if ((code **)DAT_032ed420 == (code **)0x0) {
    FUN_00a7fdc0(9,1,".\\crypto\\err\\err.c",0x127);
    if ((code **)DAT_032ed420 == (code **)0x0) {
      DAT_032ed420 = &PTR_FUN_00da5810;
    }
    FUN_00a7fdc0(10,1,".\\crypto\\err\\err.c",0x12a);
  }
  iVar1 = (*(code *)*DAT_032ed420)(0);
  if (iVar1 == 0) {
    return 0;
  }
  FUN_00a7fdc0(5,1,".\\crypto\\err\\err.c",0x185);
  uVar2 = FUN_00a84ed0(iVar1,param_1);
  FUN_00a7fdc0(6,1,".\\crypto\\err\\err.c",0x187);
  return uVar2;
}



int FUN_00a7e970(int param_1)

{
  int iVar1;
  
  FUN_00a7fdc0(9,1,".\\crypto\\err\\err.c",0x1be);
  if (DAT_032ed428 == 0) {
    iVar1 = 0;
    if (param_1 == 0) goto LAB_00a7e9d9;
    FUN_00a84670("int_thread_get (err.c)",".\\crypto\\err\\err.c",0x1c1);
    DAT_032ed428 = FUN_00a84d00(&LAB_00a7e950,&LAB_00a845a0);
    FUN_00a84840();
    if (DAT_032ed428 == 0) goto LAB_00a7e9d9;
  }
  DAT_032ed42c = DAT_032ed42c + 1;
  iVar1 = DAT_032ed428;
LAB_00a7e9d9:
  FUN_00a7fdc0(10,1,".\\crypto\\err\\err.c",0x1ca);
  return iVar1;
}



void FUN_00a7ea00(int *param_1)

{
  int iVar1;
  
  if ((param_1 != (int *)0x0) && (*param_1 != 0)) {
    iVar1 = FUN_00a7fe40(&DAT_032ed42c,0xffffffff,1,".\\crypto\\err\\err.c",0x1d5);
    if (iVar1 < 1) {
      *param_1 = 0;
    }
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a7ea40(undefined4 param_1)

{
  undefined4 uVar1;
  int local_4;
  
  local_4 = 0xa7ea4a;
  if (DAT_032ed420 == (undefined **)0x0) {
    FUN_00a7fdc0(9,1,".\\crypto\\err\\err.c",0x127);
    if (DAT_032ed420 == (undefined **)0x0) {
      DAT_032ed420 = &PTR_FUN_00da5810;
    }
    FUN_00a7fdc0(10,1,".\\crypto\\err\\err.c",0x12a);
  }
  local_4 = (*(code *)DAT_032ed420[5])(0);
  if (local_4 == 0) {
    return 0;
  }
  FUN_00a7fdc0(5,1,".\\crypto\\err\\err.c",0x1ef);
  uVar1 = FUN_00a84ed0(local_4,param_1);
  FUN_00a7fdc0(6,1,".\\crypto\\err\\err.c",0x1f1);
  (*(code *)DAT_032ed420[6])(&local_4);
  return uVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a7eb00(undefined4 param_1)

{
  undefined4 uVar1;
  int local_4;
  
  local_4 = 0xa7eb0a;
  if (DAT_032ed420 == (undefined **)0x0) {
    FUN_00a7fdc0(9,1,".\\crypto\\err\\err.c",0x127);
    if (DAT_032ed420 == (undefined **)0x0) {
      DAT_032ed420 = &PTR_FUN_00da5810;
    }
    FUN_00a7fdc0(10,1,".\\crypto\\err\\err.c",0x12a);
  }
  local_4 = (*(code *)DAT_032ed420[5])(1);
  if (local_4 == 0) {
    return 0;
  }
  FUN_00a7fdc0(9,1,".\\crypto\\err\\err.c",0x201);
  uVar1 = FUN_00a84dd0(local_4,param_1);
  FUN_00a7fdc0(10,1,".\\crypto\\err\\err.c",0x203);
  (*(code *)DAT_032ed420[6])(&local_4);
  return uVar1;
}



void FUN_00a7ec00(int param_1)

{
  int *piVar1;
  int iVar2;
  
  if (param_1 != 0) {
    piVar1 = (int *)(param_1 + 0x88);
    iVar2 = 0x10;
    do {
      if ((*piVar1 != 0) && ((*(byte *)(piVar1 + 0x10) & 1) != 0)) {
        FUN_00a85120(*piVar1);
        *piVar1 = 0;
      }
      piVar1[0x10] = 0;
      piVar1 = piVar1 + 1;
      iVar2 = iVar2 + -1;
    } while (iVar2 != 0);
    FUN_00a85120();
    return;
  }
  return;
}



void FUN_00a7ec50(void)

{
  if (DAT_032ed420 == (undefined **)0x0) {
    FUN_00a7fdc0(9,1,".\\crypto\\err\\err.c",0x127);
    if (DAT_032ed420 == (undefined **)0x0) {
      DAT_032ed420 = &PTR_FUN_00da5810;
    }
    FUN_00a7fdc0(10,1,".\\crypto\\err\\err.c",0x12a);
  }
                    // WARNING: Could not recover jumptable at 0x00a7eca0. Too many branches
                    // WARNING: Treating indirect jump as call
  (*(code *)DAT_032ed420[1])();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a7ecb0(uint param_1)

{
  int iVar1;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa7ecba;
  if (DAT_032ed420 == (undefined **)0x0) {
    FUN_00a7fdc0(9,1,".\\crypto\\err\\err.c",0x127);
    if (DAT_032ed420 == (undefined **)0x0) {
      DAT_032ed420 = &PTR_FUN_00da5810;
    }
    FUN_00a7fdc0(10,1,".\\crypto\\err\\err.c",0x12a);
  }
  local_8 = param_1 & 0xff000000;
  iVar1 = (*(code *)DAT_032ed420[2])(&local_8);
  if (iVar1 == 0) {
    return 0;
  }
  return *(undefined4 *)(iVar1 + 4);
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a7ed30(uint param_1)

{
  int iVar1;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa7ed3a;
  if (DAT_032ed420 == (undefined **)0x0) {
    FUN_00a7fdc0(9,1,".\\crypto\\err\\err.c",0x127);
    if (DAT_032ed420 == (undefined **)0x0) {
      DAT_032ed420 = &PTR_FUN_00da5810;
    }
    FUN_00a7fdc0(10,1,".\\crypto\\err\\err.c",0x12a);
  }
  local_8 = (param_1 >> 0xc & 0xfff) << 0xc | param_1 & 0xff000000;
  iVar1 = (*(code *)DAT_032ed420[2])(&local_8);
  if (iVar1 == 0) {
    return 0;
  }
  return *(undefined4 *)(iVar1 + 4);
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a7edc0(uint param_1)

{
  int iVar1;
  uint local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa7edca;
  if (DAT_032ed420 == (undefined **)0x0) {
    FUN_00a7fdc0(9,1,".\\crypto\\err\\err.c",0x127);
    if (DAT_032ed420 == (undefined **)0x0) {
      DAT_032ed420 = &PTR_FUN_00da5810;
    }
    FUN_00a7fdc0(10,1,".\\crypto\\err\\err.c",0x12a);
  }
  local_8 = param_1 & 0xff000fff;
  iVar1 = (*(code *)DAT_032ed420[2])(&local_8);
  if (iVar1 == 0) {
    local_8 = param_1 & 0xfff;
    iVar1 = (*(code *)DAT_032ed420[2])(&local_8);
    if (iVar1 == 0) {
      return 0;
    }
  }
  return *(undefined4 *)(iVar1 + 4);
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a7ee70(void)

{
  undefined local_190 [396];
  undefined4 uStack_4;
  
  uStack_4 = 0xa7ee7a;
  FUN_00a7f970(local_190);
  if (DAT_032ed420 == (undefined **)0x0) {
    FUN_00a7fdc0(9,1,".\\crypto\\err\\err.c",0x127);
    if (DAT_032ed420 == (undefined **)0x0) {
      DAT_032ed420 = &PTR_FUN_00da5810;
    }
    FUN_00a7fdc0(10,1,".\\crypto\\err\\err.c",0x12a);
  }
  (*(code *)DAT_032ed420[9])(local_190);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined * FUN_00a7eef0(void)

{
  undefined *puVar1;
  undefined4 *puVar2;
  undefined *puVar3;
  int iVar4;
  undefined local_198 [8];
  undefined local_190 [396];
  undefined4 uStack_4;
  
  uStack_4 = 0xa7eefa;
  if (DAT_032ed420 == (undefined **)0x0) {
    FUN_00a7fdc0(9,1,".\\crypto\\err\\err.c",0x127);
    if (DAT_032ed420 == (undefined **)0x0) {
      DAT_032ed420 = &PTR_FUN_00da5810;
    }
    FUN_00a7fdc0(10,1,".\\crypto\\err\\err.c",0x12a);
  }
  FUN_00a7f970(local_198);
  FUN_00a7fa10(local_190,local_198);
  puVar1 = (undefined *)(*(code *)DAT_032ed420[7])(local_190);
  if (puVar1 != (undefined *)0x0) {
    return puVar1;
  }
  puVar1 = (undefined *)FUN_00a84f80(400,".\\crypto\\err\\err.c",0x3fb);
  if (puVar1 != (undefined *)0x0) {
    FUN_00a7fa10(puVar1,local_198);
    *(undefined4 *)(puVar1 + 0x188) = 0;
    *(undefined4 *)(puVar1 + 0x18c) = 0;
    puVar2 = (undefined4 *)(puVar1 + 200);
    iVar4 = 0x10;
    do {
      puVar2[-0x10] = 0;
      *puVar2 = 0;
      puVar2 = puVar2 + 1;
      iVar4 = iVar4 + -1;
    } while (iVar4 != 0);
    iVar4 = (*(code *)DAT_032ed420[8])(puVar1);
    puVar3 = (undefined *)(*(code *)DAT_032ed420[7])(puVar1);
    if (puVar3 == puVar1) {
      if (iVar4 == 0) {
        return puVar1;
      }
      FUN_00a7ec00(iVar4);
      return puVar1;
    }
    FUN_00a7ec00(puVar1);
  }
  return &DAT_032ed290;
}



void FUN_00a7f020(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  iVar2 = FUN_00a7eef0();
  iVar3 = *(int *)(iVar2 + 0x188);
  if (iVar3 == 0) {
    iVar3 = 0xf;
  }
  iVar1 = *(int *)(iVar2 + 0x88 + iVar3 * 4);
  if (iVar1 != 0) {
    if ((*(byte *)(iVar2 + 200 + iVar3 * 4) & 1) != 0) {
      FUN_00a85120(iVar1);
      *(undefined4 *)(iVar2 + 0x88 + iVar3 * 4) = 0;
      *(undefined4 *)(iVar2 + 0x88 + iVar3 * 4) = param_1;
      *(undefined4 *)(iVar2 + 200 + iVar3 * 4) = param_2;
      return;
    }
    *(undefined4 *)(iVar2 + 0x88 + iVar3 * 4) = param_1;
    *(undefined4 *)(iVar2 + 200 + iVar3 * 4) = param_2;
    return;
  }
  *(undefined4 *)(iVar2 + 0x88 + iVar3 * 4) = param_1;
  *(undefined4 *)(iVar2 + 200 + iVar3 * 4) = param_2;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a7f0b0(int param_1,int param_2)

{
  char cVar1;
  char *pcVar2;
  undefined *puVar3;
  char *pcVar4;
  char *pcVar5;
  char *pcVar6;
  undefined *puVar7;
  int local_8;
  
  pcVar6 = (char *)0x50;
  puVar3 = (undefined *)FUN_00a84f80(0x51,".\\crypto\\err\\err.c",0x438);
  pcVar5 = (char *)0x0;
  if (puVar3 != (undefined *)0x0) {
    *puVar3 = 0;
    local_8 = 0;
    if (0 < param_1) {
      param_2 = param_2 + -4;
      puVar7 = puVar3;
      do {
        pcVar2 = *(char **)(param_2 + 4);
        param_2 = param_2 + 4;
        puVar3 = puVar7;
        if (pcVar2 != (char *)0x0) {
          pcVar4 = pcVar2;
          do {
            cVar1 = *pcVar4;
            pcVar4 = pcVar4 + 1;
          } while (cVar1 != '\0');
          pcVar5 = pcVar4 + ((int)pcVar5 - (int)(pcVar2 + 1));
          if ((int)pcVar6 < (int)pcVar5) {
            pcVar6 = pcVar5 + 0x14;
            puVar3 = (undefined *)FUN_00a84ff0(puVar7,pcVar5 + 0x15,".\\crypto\\err\\err.c",0x447);
            if (puVar3 == (undefined *)0x0) {
              FUN_00a85120(puVar7);
              return;
            }
          }
          FUN_00a851f0(puVar3,pcVar2,pcVar6 + 1);
        }
        local_8 = local_8 + 1;
        puVar7 = puVar3;
      } while (local_8 < param_1);
    }
    FUN_00a7f020(puVar3,3);
  }
  return;
}



undefined4 FUN_00a7f190(void)

{
  uint *puVar1;
  int iVar2;
  
  iVar2 = FUN_00a7eef0();
  if (*(int *)(iVar2 + 0x18c) == *(int *)(iVar2 + 0x188)) {
    return 0;
  }
  puVar1 = (uint *)(iVar2 + 8 + *(int *)(iVar2 + 0x188) * 4);
  *puVar1 = *puVar1 | 1;
  return 1;
}



undefined4 FUN_00a7f1c0(void)

{
  uint *puVar1;
  int iVar2;
  int iVar3;
  
  iVar3 = FUN_00a7eef0();
  if (*(int *)(iVar3 + 0x18c) != *(int *)(iVar3 + 0x188)) {
    do {
      if ((*(byte *)(iVar3 + 8 + *(int *)(iVar3 + 0x188) * 4) & 1) != 0) break;
      *(undefined4 *)(iVar3 + 8 + *(int *)(iVar3 + 0x188) * 4) = 0;
      *(undefined4 *)(iVar3 + 0x48 + *(int *)(iVar3 + 0x188) * 4) = 0;
      iVar2 = *(int *)(iVar3 + 0x188);
      if ((*(int *)(iVar3 + 0x88 + iVar2 * 4) != 0) &&
         ((*(byte *)(iVar3 + 200 + iVar2 * 4) & 1) != 0)) {
        FUN_00a85120(*(undefined4 *)(iVar3 + 0x88 + iVar2 * 4));
        *(undefined4 *)(iVar3 + 0x88 + *(int *)(iVar3 + 0x188) * 4) = 0;
      }
      *(undefined4 *)(iVar3 + 200 + *(int *)(iVar3 + 0x188) * 4) = 0;
      *(undefined4 *)(iVar3 + 0x108 + *(int *)(iVar3 + 0x188) * 4) = 0;
      *(undefined4 *)(iVar3 + 0x148 + *(int *)(iVar3 + 0x188) * 4) = 0xffffffff;
      *(int *)(iVar3 + 0x188) = *(int *)(iVar3 + 0x188) + -1;
      if (*(int *)(iVar3 + 0x188) == -1) {
        *(undefined4 *)(iVar3 + 0x188) = 0xf;
      }
    } while (*(int *)(iVar3 + 0x18c) != *(int *)(iVar3 + 0x188));
  }
  if (*(int *)(iVar3 + 0x18c) != *(int *)(iVar3 + 0x188)) {
    puVar1 = (uint *)(iVar3 + 8 + *(int *)(iVar3 + 0x188) * 4);
    *puVar1 = *puVar1 & 0xfffffffe;
    return 1;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a7f2b0(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  int local_4;
  
  local_4 = 0xa7f2ba;
  if (DAT_032ed420 == (undefined **)0x0) {
    FUN_00a7fdc0(9,1,".\\crypto\\err\\err.c",0x127);
    if (DAT_032ed420 == (undefined **)0x0) {
      DAT_032ed420 = &PTR_FUN_00da5810;
    }
    FUN_00a7fdc0(10,1,".\\crypto\\err\\err.c",0x12a);
  }
  local_4 = (*(code *)DAT_032ed420[5])(0);
  if (local_4 != 0) {
    FUN_00a7fdc0(9,1,".\\crypto\\err\\err.c",0x213);
    iVar1 = FUN_00a84e60(local_4,param_1);
    if (((DAT_032ed42c == 1) && (DAT_032ed428 != 0)) &&
       (iVar2 = FUN_00a84cf0(DAT_032ed428), iVar2 == 0)) {
      FUN_00a84990(DAT_032ed428);
      DAT_032ed428 = 0;
    }
    FUN_00a7fdc0(10,1,".\\crypto\\err\\err.c",0x21c);
    (*(code *)DAT_032ed420[6])(&local_4);
    if (iVar1 != 0) {
      FUN_00a7ec00(iVar1);
    }
  }
  return;
}



void FUN_00a7f3c0(byte param_1,uint param_2,uint param_3,undefined4 param_4,undefined4 param_5)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  
  iVar2 = FUN_00a7eef0();
  uVar3 = *(int *)(iVar2 + 0x188) + 1U & 0x8000000f;
  if ((int)uVar3 < 0) {
    uVar3 = (uVar3 - 1 | 0xfffffff0) + 1;
  }
  *(uint *)(iVar2 + 0x188) = uVar3;
  if (uVar3 == *(uint *)(iVar2 + 0x18c)) {
    uVar4 = *(uint *)(iVar2 + 0x18c) + 1 & 0x8000000f;
    if ((int)uVar4 < 0) {
      uVar4 = (uVar4 - 1 | 0xfffffff0) + 1;
    }
    *(uint *)(iVar2 + 0x18c) = uVar4;
  }
  *(undefined4 *)(iVar2 + 8 + uVar3 * 4) = 0;
  *(uint *)(iVar2 + 0x48 + *(int *)(iVar2 + 0x188) * 4) =
       (param_2 & 0xfff) << 0xc | (uint)param_1 << 0x18 | param_3 & 0xfff;
  *(undefined4 *)(iVar2 + 0x108 + *(int *)(iVar2 + 0x188) * 4) = param_4;
  *(undefined4 *)(iVar2 + 0x148 + *(int *)(iVar2 + 0x188) * 4) = param_5;
  iVar1 = *(int *)(iVar2 + 0x188);
  if (*(int *)(iVar2 + 0x88 + iVar1 * 4) != 0) {
    if ((*(byte *)(iVar2 + 200 + iVar1 * 4) & 1) != 0) {
      FUN_00a85120(*(undefined4 *)(iVar2 + 0x88 + iVar1 * 4));
      *(undefined4 *)(iVar2 + 0x88 + *(int *)(iVar2 + 0x188) * 4) = 0;
      *(undefined4 *)(iVar2 + 200 + *(int *)(iVar2 + 0x188) * 4) = 0;
      return;
    }
    *(undefined4 *)(iVar2 + 200 + iVar1 * 4) = 0;
    return;
  }
  *(undefined4 *)(iVar2 + 200 + iVar1 * 4) = 0;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a7f4b0(void)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  
  iVar1 = FUN_00a7eef0();
  piVar3 = (int *)(iVar1 + 0x88);
  iVar2 = 0x10;
  do {
    piVar3[-0x20] = 0;
    piVar3[-0x10] = 0;
    if ((*piVar3 != 0) && ((*(byte *)(piVar3 + 0x10) & 1) != 0)) {
      FUN_00a85120(*piVar3);
      *piVar3 = 0;
    }
    piVar3[0x10] = 0;
    piVar3[0x20] = 0;
    piVar3[0x30] = -1;
    piVar3 = piVar3 + 1;
    iVar2 = iVar2 + -1;
  } while (iVar2 != 0);
  *(undefined4 *)(iVar1 + 0x18c) = 0;
  *(undefined4 *)(iVar1 + 0x188) = 0;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a7f530(uint param_1,char *param_2,uint param_3)

{
  char cVar1;
  undefined *puVar2;
  char *pcVar3;
  undefined *puVar4;
  undefined *puVar5;
  int iVar6;
  undefined *local_d0;
  undefined *local_cc;
  undefined *local_c8;
  undefined local_c4 [64];
  undefined local_84 [64];
  undefined local_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_d0;
  local_cc = (undefined *)FUN_00a7ecb0(param_1);
  local_d0 = (undefined *)FUN_00a7ed30(param_1);
  local_c8 = (undefined *)FUN_00a7edc0(param_1);
  if (local_cc == (undefined *)0x0) {
    FUN_00a86220(local_44,0x40,"lib(%lu)",param_1 >> 0x18);
  }
  if (local_d0 == (undefined *)0x0) {
    FUN_00a86220(local_c4,0x40,"func(%lu)",param_1 >> 0xc & 0xfff);
  }
  puVar5 = local_c8;
  if (local_c8 == (undefined *)0x0) {
    FUN_00a86220(local_84,0x40,"reason(%lu)",param_1 & 0xfff);
    puVar5 = local_84;
  }
  puVar4 = local_d0;
  if (local_d0 == (undefined *)0x0) {
    puVar4 = local_c4;
  }
  puVar2 = local_cc;
  if (local_cc == (undefined *)0x0) {
    puVar2 = local_44;
  }
  FUN_00a86220(param_2,param_3,"error:%08lX:%s:%s:%s",param_1,puVar2,puVar4,puVar5);
  pcVar3 = param_2;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  if (((int)pcVar3 - (int)(param_2 + 1) == param_3 - 1) && (4 < param_3)) {
    iVar6 = 0;
    pcVar3 = param_2;
    do {
      pcVar3 = _strchr(pcVar3,0x3a);
      if ((pcVar3 == (char *)0x0) || (param_2 + iVar6 + -5 + param_3 < pcVar3)) {
        pcVar3 = param_2 + iVar6 + -5 + param_3;
        *pcVar3 = ':';
      }
      iVar6 = iVar6 + 1;
      pcVar3 = pcVar3 + 1;
    } while (iVar6 < 4);
  }
  ___security_check_cookie_4();
  return;
}



void FUN_00a7f690(undefined4 param_1)

{
  FUN_00a7f0b0(param_1,&stack0x00000008);
  return;
}



undefined4 FUN_00a7f6b0(int *param_1,undefined4 *param_2,int *param_3,undefined4 *param_4)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  
  iVar3 = FUN_00a7eef0();
  if (*(int *)(iVar3 + 0x18c) == *(int *)(iVar3 + 0x188)) {
    return 0;
  }
  uVar4 = *(int *)(iVar3 + 0x18c) + 1U & 0x8000000f;
  if ((int)uVar4 < 0) {
    uVar4 = (uVar4 - 1 | 0xfffffff0) + 1;
  }
  uVar1 = *(undefined4 *)(iVar3 + 0x48 + uVar4 * 4);
  *(uint *)(iVar3 + 0x18c) = uVar4;
  *(undefined4 *)(iVar3 + 0x48 + uVar4 * 4) = 0;
  if ((param_1 != (int *)0x0) && (param_2 != (undefined4 *)0x0)) {
    iVar2 = *(int *)(iVar3 + 0x108 + uVar4 * 4);
    if (iVar2 == 0) {
      *param_1 = (int)&DAT_00da587c;
      *param_2 = 0;
    }
    else {
      *param_1 = iVar2;
      *param_2 = *(undefined4 *)(iVar3 + 0x148 + uVar4 * 4);
    }
  }
  iVar2 = *(int *)(iVar3 + 0x88 + uVar4 * 4);
  if (param_3 == (int *)0x0) {
    if ((iVar2 != 0) && ((*(byte *)(iVar3 + 200 + uVar4 * 4) & 1) != 0)) {
      FUN_00a85120(iVar2);
      *(undefined4 *)(iVar3 + 0x88 + uVar4 * 4) = 0;
    }
    *(undefined4 *)(iVar3 + 200 + uVar4 * 4) = 0;
    return uVar1;
  }
  if (iVar2 == 0) {
    *param_3 = (int)&PTR_02bd3fc0;
    if (param_4 != (undefined4 *)0x0) {
      *param_4 = 0;
      return uVar1;
    }
  }
  else {
    *param_3 = iVar2;
    if (param_4 != (undefined4 *)0x0) {
      *param_4 = *(undefined4 *)(iVar3 + 200 + uVar4 * 4);
    }
  }
  return uVar1;
}



undefined4 FUN_00a7f7a0(void)

{
  int iVar1;
  uint uVar2;
  
  iVar1 = FUN_00a7eef0();
  if (*(int *)(iVar1 + 0x18c) == *(int *)(iVar1 + 0x188)) {
    return 0;
  }
  uVar2 = *(int *)(iVar1 + 0x18c) + 1U & 0x8000000f;
  if ((int)uVar2 < 0) {
    uVar2 = (uVar2 - 1 | 0xfffffff0) + 1;
  }
  return *(undefined4 *)(iVar1 + 0x48 + uVar2 * 4);
}



undefined4 FUN_00a7f7d0(void)

{
  int iVar1;
  
  iVar1 = FUN_00a7eef0();
  if (*(int *)(iVar1 + 0x18c) == *(int *)(iVar1 + 0x188)) {
    return 0;
  }
  return *(undefined4 *)(iVar1 + 0x48 + *(int *)(iVar1 + 0x188) * 4);
}



void FUN_00a7f7f0(void)

{
  FUN_00a7fa50();
  FUN_00a863e0();
  FUN_00a86280();
  return;
}



undefined4 FUN_00a7f800(void)

{
  return 0x29;
}



void FUN_00a7f810(int param_1)

{
  int iVar1;
  int *piVar2;
  
  if (param_1 != 0) {
    param_1 = -1 - param_1;
  }
  if (DAT_032ed458 != (code *)0x0) {
    FUN_00a7fdc0(9,0x1d,".\\crypto\\cryptlib.c",0x131);
    if ((DAT_032ed43c == 0) || (iVar1 = FUN_00a80ed0(DAT_032ed43c), iVar1 <= param_1)) {
      FUN_00a7fdc0(10,0x1d,".\\crypto\\cryptlib.c",0x135);
      return;
    }
    piVar2 = (int *)FUN_00a80ee0(DAT_032ed43c,param_1);
    if (piVar2 != (int *)0x0) {
      *piVar2 = *piVar2 + -1;
      if (*piVar2 < 1) {
        FUN_00a80f00(DAT_032ed43c,param_1,0);
      }
      else {
        piVar2 = (int *)0x0;
      }
    }
    FUN_00a7fdc0(10,0x1d,".\\crypto\\cryptlib.c",0x14b);
    if (piVar2 != (int *)0x0) {
      (*DAT_032ed458)(piVar2[1],".\\crypto\\cryptlib.c",0x14f);
      FUN_00a85120(piVar2);
    }
  }
  return;
}



int FUN_00a7f8e0(int param_1)

{
  int iVar1;
  int *piVar2;
  
  piVar2 = (int *)0x0;
  if (param_1 != 0) {
    param_1 = -1 - param_1;
  }
  FUN_00a7fdc0(9,0x1d,".\\crypto\\cryptlib.c",0x15a);
  if (DAT_032ed43c != 0) {
    iVar1 = FUN_00a80ed0(DAT_032ed43c);
    if (param_1 < iVar1) {
      piVar2 = (int *)FUN_00a80ee0(DAT_032ed43c,param_1);
      if (piVar2 != (int *)0x0) {
        *piVar2 = *piVar2 + 1;
      }
    }
  }
  FUN_00a7fdc0(10,0x1d,".\\crypto\\cryptlib.c",0x161);
  if (piVar2 != (int *)0x0) {
    return piVar2[1];
  }
  return 0;
}



void FUN_00a7f960(undefined4 param_1)

{
  FUN_00a86a40();
  DAT_032ed440 = param_1;
  return;
}



void FUN_00a7f970(undefined4 *param_1)

{
  undefined4 uVar1;
  DWORD DVar2;
  
  if (DAT_032ed44c != (code *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00a7f979. Too many branches
                    // WARNING: Treating indirect jump as call
    (*DAT_032ed44c)();
    return;
  }
  if (DAT_032ed448 != (code *)0x0) {
    uVar1 = (*DAT_032ed448)();
    *param_1 = 0;
    param_1[1] = uVar1;
    return;
  }
  DVar2 = GetCurrentThreadId();
  *param_1 = 0;
  param_1[1] = DVar2;
  return;
}



uint FUN_00a7f9b0(int *param_1,int *param_2)

{
  uint uVar1;
  int iVar2;
  
  uVar1 = 8;
  do {
    if (*param_1 != *param_2) {
      iVar2 = (uint)*(byte *)param_1 - (uint)*(byte *)param_2;
      if (((iVar2 == 0) &&
          (iVar2 = (uint)*(byte *)((int)param_1 + 1) - (uint)*(byte *)((int)param_2 + 1), iVar2 == 0
          )) && (iVar2 = (uint)*(byte *)((int)param_1 + 2) - (uint)*(byte *)((int)param_2 + 2),
                iVar2 == 0)) {
        iVar2 = (uint)*(byte *)((int)param_1 + 3) - (uint)*(byte *)((int)param_2 + 3);
      }
      return iVar2 >> 0x1f | 1;
    }
    uVar1 = uVar1 - 4;
    param_2 = param_2 + 1;
    param_1 = param_1 + 1;
  } while (3 < uVar1);
  return 0;
}



void FUN_00a7fa10(undefined4 *param_1,undefined4 *param_2)

{
  *param_1 = *param_2;
  param_1[1] = param_2[1];
  return;
}



undefined4 FUN_00a7fa30(int param_1)

{
  return *(undefined4 *)(param_1 + 4);
}



void FUN_00a7fa40(undefined4 param_1)

{
  DAT_032ed448 = param_1;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a7fa50(void)

{
  char cVar1;
  char *pcVar2;
  int iVar3;
  undefined8 uVar4;
  ulong local_8;
  uint local_4;
  
  local_4 = 0xa7fa5a;
  if (DAT_032ed45c == 0) {
    DAT_032ed45c = 1;
    pcVar2 = _getenv("OPENSSL_ia32cap");
    if (pcVar2 == (char *)0x0) {
      uVar4 = FUN_00a84000();
    }
    else {
      cVar1 = *pcVar2;
      iVar3 = FID_conflict__sscanf(pcVar2 + (cVar1 == '~'),"%I64i",&local_8);
      if (iVar3 == 0) {
        local_8 = _strtoul(pcVar2 + (cVar1 == '~'),(char **)0x0,0);
        local_4 = 0;
      }
      uVar4 = CONCAT44(local_4,local_8);
      if ((cVar1 == '~') != 0) {
        uVar4 = FUN_00a84000();
        uVar4 = CONCAT44((uint)((ulonglong)uVar4 >> 0x20) & ~local_4,(uint)uVar4 & ~local_8);
      }
    }
    DAT_032f16d4 = (undefined4)((ulonglong)uVar4 >> 0x20);
    DAT_032f16d0 = (uint)uVar4 | 0x400;
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe
// WARNING: Function: __alloca_probe_16 replaced with injection: alloca_probe
// WARNING: Unable to track spacebase fully for stack

void FUN_00a7fb00(void)

{
  int iVar1;
  HMODULE hModule;
  HWINSTA hObj;
  BOOL BVar2;
  DWORD DVar3;
  uint uVar4;
  undefined4 uStackY_30;
  uint local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  if (DAT_032ed464 == (FARPROC)0x0) {
    hModule = GetModuleHandleA((LPCSTR)0x0);
    if (hModule != (HMODULE)0x0) {
      DAT_032ed464 = GetProcAddress(hModule,"_OPENSSL_isservice");
    }
    if (DAT_032ed464 == (FARPROC)0x0) {
      DAT_032ed464 = (FARPROC)0xffffffff;
      goto LAB_00a7fb5c;
    }
  }
  if (DAT_032ed464 != (FARPROC)0xffffffff) {
    (*DAT_032ed464)();
    ___security_check_cookie_4();
    return;
  }
LAB_00a7fb5c:
  GetDesktopWindow();
  hObj = GetProcessWindowStation();
  if (hObj != (HWINSTA)0x0) {
    uStackY_30 = 0xa7fb83;
    BVar2 = GetUserObjectInformationW(hObj,2,(PVOID)0x0,0,&local_c);
    if (((BVar2 == 0) && (DVar3 = GetLastError(), DVar3 == 0x7a)) && (local_c < 0x201)) {
      uVar4 = local_c + 1 & 0xfffffffe;
      local_c = uVar4;
      iVar1 = -(uVar4 + 2);
      *(uint **)(&stack0xffffffe4 + iVar1) = &local_c;
      *(uint *)(&stack0xffffffe0 + iVar1) = uVar4;
      *(undefined **)(&stack0xffffffdc + iVar1) = &stack0xffffffe8 + iVar1;
      *(undefined4 *)(&stack0xffffffd8 + iVar1) = 2;
      *(HWINSTA *)(&stack0xffffffd4 + iVar1) = hObj;
      *(undefined4 *)((int)&uStackY_30 + iVar1) = 0xa7fbc6;
      BVar2 = GetUserObjectInformationW
                        (*(HANDLE *)(&stack0xffffffd4 + iVar1),*(int *)(&stack0xffffffd8 + iVar1),
                         *(PVOID *)(&stack0xffffffdc + iVar1),*(DWORD *)(&stack0xffffffe0 + iVar1),
                         *(LPDWORD *)(&stack0xffffffe4 + iVar1));
      if (BVar2 != 0) {
        uVar4 = local_c + 1;
        local_c = uVar4 & 0xfffffffe;
        *(wchar_t **)(&stack0xffffffe4 + iVar1) = L"Service-0x";
        *(undefined **)(&stack0xffffffe0 + iVar1) = &stack0xffffffe8 + iVar1;
        *(undefined2 *)(&stack0xffffffe8 + (uVar4 & 0xfffffffe) + iVar1) = 0;
        *(undefined4 *)(&stack0xffffffdc + iVar1) = 0xa7fbe7;
        _wcsstr(*(wchar_t **)(&stack0xffffffe0 + iVar1),*(wchar_t **)(&stack0xffffffe4 + iVar1));
        ___security_check_cookie_4();
        return;
      }
    }
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a7fc40(char *param_1)

{
  HANDLE pvVar1;
  DWORD DVar2;
  int iVar3;
  va_list _ArgList;
  char *pcStack_108;
  char acStack_104 [255];
  undefined uStack_5;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&pcStack_108;
  pvVar1 = GetStdHandle(0xfffffff4);
  if (pvVar1 != (HANDLE)0x0) {
    DVar2 = GetFileType(pvVar1);
    if (DVar2 != 0) {
      _ArgList = &stack0x00000008;
      iVar3 = FUN_00a475e9();
      FID_conflict__vfprintf((FILE *)(iVar3 + 0x40),param_1,_ArgList);
      ___security_check_cookie_4();
      return;
    }
  }
  __vsnprintf(acStack_104,0xff,param_1,&stack0x00000008);
  uStack_5 = 0;
  DVar2 = GetVersion();
  if (DVar2 < 0x80000000) {
    iVar3 = FUN_00a7fb00();
    if (0 < iVar3) {
      pvVar1 = RegisterEventSourceA((LPCSTR)0x0,"OPENSSL");
      pcStack_108 = acStack_104;
      ReportEventA(pvVar1,1,0,0,(PSID)0x0,1,0,&pcStack_108,(LPVOID)0x0);
      DeregisterEventSource(pvVar1);
      ___security_check_cookie_4();
      return;
    }
  }
  MessageBoxA((HWND)0x0,acStack_104,"OpenSSL: FATAL",0x10);
  ___security_check_cookie_4();
  return;
}



void FUN_00a7fd60(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  code *pcVar1;
  
  FUN_00a7fc40("%s(%d): OpenSSL internal error, assertion failed: %s\n",param_1,param_2,param_3);
  _raise(0x16);
  __exit(3);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



byte FUN_00a7fd90(byte *param_1,int param_2,int param_3)

{
  byte *pbVar1;
  byte bVar2;
  byte bVar3;
  
  bVar3 = 0;
  if (param_3 != 0) {
    param_2 = param_2 - (int)param_1;
    do {
      pbVar1 = param_1 + param_2;
      bVar2 = *param_1;
      param_1 = param_1 + 1;
      bVar3 = bVar3 | *pbVar1 ^ bVar2;
      param_3 = param_3 + -1;
    } while (param_3 != 0);
  }
  return bVar3;
}



void FUN_00a7fdc0(undefined4 param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  
  if (param_2 < 0) {
    if (DAT_032ed454 == (code *)0x0) {
      return;
    }
    iVar1 = FUN_00a7f8e0(param_2);
    if (iVar1 != 0) {
      (*DAT_032ed454)(param_1,iVar1,param_3,param_4);
      FUN_00a7f810(param_2);
      return;
    }
    FUN_00a7fd60(".\\crypto\\cryptlib.c",0x253,"pointer != NULL");
  }
  if (DAT_032ed440 != (code *)0x0) {
    (*DAT_032ed440)(param_1,param_2,param_3,param_4);
  }
  return;
}



int FUN_00a7fe40(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  int iVar1;
  
  if (DAT_032ed444 != (code *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00a7fe49. Too many branches
                    // WARNING: Treating indirect jump as call
    iVar1 = (*DAT_032ed444)();
    return iVar1;
  }
  FUN_00a7fdc0(9,param_3,param_4,param_5);
  iVar1 = *param_1;
  *param_1 = iVar1 + param_2;
  FUN_00a7fdc0(10,param_3,param_4,param_5);
  return iVar1 + param_2;
}



undefined4 FUN_00a7fe90(int param_1,int param_2)

{
  int iVar1;
  
  if (param_1 == 0) {
    FUN_00a7f3c0(0x26,0x6c,0x43,".\\crypto\\engine\\eng_lib.c",0x70);
    return 0;
  }
  if (param_2 == 0) {
    *(int *)(param_1 + 0x58) = *(int *)(param_1 + 0x58) + -1;
    iVar1 = *(int *)(param_1 + 0x58);
  }
  else {
    iVar1 = FUN_00a7fe40(param_1 + 0x58,0xffffffff,0x1e,".\\crypto\\engine\\eng_lib.c",0x74);
  }
  if (iVar1 < 1) {
    FUN_00a86ca0(param_1);
    FUN_00a86a80(param_1);
    if (*(code **)(param_1 + 0x34) != (code *)0x0) {
      (**(code **)(param_1 + 0x34))(param_1);
    }
    FUN_00a80760(9,param_1,param_1 + 0x60);
    FUN_00a85120(param_1);
  }
  return 1;
}



void FUN_00a7ff20(undefined4 param_1)

{
  FUN_00a7fe90(param_1,1);
  return;
}



void FUN_00a7ff30(code **param_1)

{
  (**param_1)();
  FUN_00a85120(param_1);
  return;
}



void FUN_00a7ff50(void)

{
  if (DAT_032ed468 != 0) {
    FUN_00a81120(DAT_032ed468,FUN_00a7ff30);
    DAT_032ed468 = 0;
  }
  FUN_00a86d60(0);
  return;
}



int FUN_00a7ff80(byte *param_1,int param_2,int param_3,code *param_4,undefined4 param_5)

{
  byte *pbVar1;
  byte bVar2;
  int iVar3;
  byte *pbVar4;
  byte *pbVar5;
  
  if (param_1 == (byte *)0x0) {
    FUN_00a7f3c0(0xe,0x77,0x73,".\\crypto\\conf\\conf_mod.c",0x24c);
    return 0;
  }
  while( true ) {
    if (param_3 != 0) {
      bVar2 = *param_1;
      while ((bVar2 != 0 && (iVar3 = _isspace((uint)bVar2), iVar3 != 0))) {
        bVar2 = param_1[1];
        param_1 = param_1 + 1;
      }
    }
    pbVar4 = (byte *)_strchr((char *)param_1,param_2);
    if ((pbVar4 == param_1) || (*param_1 == 0)) {
      pbVar5 = (byte *)0x0;
      param_1 = (byte *)0x0;
    }
    else {
      pbVar1 = param_1;
      pbVar5 = pbVar4;
      if (pbVar4 == (byte *)0x0) {
        do {
          pbVar5 = pbVar1;
          pbVar1 = pbVar5 + 1;
        } while (*pbVar5 != 0);
      }
      pbVar5 = pbVar5 + -1;
      if (param_3 != 0) {
        iVar3 = _isspace((uint)*pbVar5);
        while (iVar3 != 0) {
          pbVar1 = pbVar5 + -1;
          pbVar5 = pbVar5 + -1;
          iVar3 = _isspace((uint)*pbVar1);
        }
      }
      pbVar5 = pbVar5 + (1 - (int)param_1);
    }
    iVar3 = (*param_4)(param_1,pbVar5,param_5);
    if (iVar3 < 1) break;
    if (pbVar4 == (byte *)0x0) {
      return 1;
    }
    param_1 = pbVar4 + 1;
  }
  return iVar3;
}



void FUN_00a80070(void)

{
  int iVar1;
  int *piVar2;
  
  iVar1 = FUN_00a80ed0(DAT_032ed474);
  while (0 < iVar1) {
    piVar2 = (int *)FUN_00a80e50(DAT_032ed474);
    if (*(code **)(*piVar2 + 0xc) != (code *)0x0) {
      (**(code **)(*piVar2 + 0xc))(piVar2);
    }
    *(int *)(*piVar2 + 0x10) = *(int *)(*piVar2 + 0x10) + -1;
    FUN_00a85120(piVar2[1]);
    FUN_00a85120(piVar2[2]);
    FUN_00a85120(piVar2);
    iVar1 = FUN_00a80ed0(DAT_032ed474);
  }
  FUN_00a80ea0(DAT_032ed474);
  DAT_032ed474 = 0;
  return;
}



void FUN_00a800f0(int param_1)

{
  int iVar1;
  int *piVar2;
  
  FUN_00a80070();
  iVar1 = FUN_00a80ed0(DAT_032ed470);
  while (iVar1 = iVar1 + -1, -1 < iVar1) {
    piVar2 = (int *)FUN_00a80ee0(DAT_032ed470,iVar1);
    if (((piVar2[4] < 1) && (*piVar2 != 0)) || (param_1 != 0)) {
      FUN_00a80da0(DAT_032ed470,iVar1);
      if (*piVar2 != 0) {
        FUN_00a86f80(*piVar2);
      }
      FUN_00a85120(piVar2[1]);
      FUN_00a85120(piVar2);
    }
  }
  iVar1 = FUN_00a80ed0(DAT_032ed470);
  if (iVar1 == 0) {
    FUN_00a80ea0(DAT_032ed470);
    DAT_032ed470 = 0;
  }
  return;
}



undefined4 FUN_00a801a0(undefined4 *param_1)

{
  undefined4 uVar1;
  int iVar2;
  
  if (param_1 != (undefined4 *)0x0) {
    FUN_00a86a40();
    uVar1 = FUN_00a87520(*param_1,2,param_1);
    iVar2 = FUN_00a881c0(uVar1);
    if (iVar2 != 0) {
      FUN_00a87400(*param_1);
      uVar1 = FUN_00a875c0(*param_1,2,param_1);
      uVar1 = FUN_00a881c0(uVar1);
      return uVar1;
    }
  }
  return 0;
}



int FUN_00a80200(int *param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  
  FUN_00a86a40();
  uVar2 = FUN_00a87520(*param_1);
  iVar3 = FUN_00a881c0(uVar2,1,param_1);
  if (iVar3 != 0) {
    FUN_00a87400(*param_1);
    uVar4 = FUN_00a875c0(*param_1,1,param_1);
    iVar3 = FUN_00a881c0(uVar4);
    if (iVar3 != 0) {
      iVar1 = param_1[1];
      if ((iVar1 != 0) && (*param_1 != iVar1)) {
        uVar4 = FUN_00a87520(iVar1,0x8001,uVar2);
        iVar3 = FUN_00a881c0(uVar4);
        if (iVar3 == 0) {
          return 0;
        }
        FUN_00a87400(param_1[1]);
        uVar2 = FUN_00a875c0(param_1[1],0x8001,uVar2);
        iVar3 = FUN_00a881c0(uVar2);
      }
      return iVar3;
    }
  }
  return 0;
}



void FUN_00a802b0(undefined4 param_1)

{
  FUN_00a88110(param_1,2);
  return;
}



void FUN_00a802c0(undefined4 param_1)

{
  FUN_00a88110(param_1,1);
  return;
}



void FUN_00a802d0(void)

{
  FUN_00a87fd0(2);
  FUN_00a87fd0(1);
  FUN_00a87fd0(0xffffffff);
  FUN_00a884f0();
  if (DAT_032ed4d8 == 2) {
    DAT_032ed4d8 = 0;
    FUN_00a87420();
  }
  FUN_00a883f0();
  return;
}



undefined4 FUN_00a80310(void)

{
  undefined4 uVar1;
  
  uVar1 = 1;
  FUN_00a7fdc0(9,2,".\\crypto\\ex_data.c",0x10e);
  if (DAT_032ed47c == 0) {
    DAT_032ed47c = FUN_00a84d00(FUN_00a814c0,&LAB_00a91210);
    if (DAT_032ed47c == 0) {
      uVar1 = 0;
    }
  }
  FUN_00a7fdc0(10,2,".\\crypto\\ex_data.c",0x112);
  return uVar1;
}



void FUN_00a80370(int param_1)

{
  FUN_00a81120(*(undefined4 *)(param_1 + 4),thunk_FUN_00a85120);
  FUN_00a85120(param_1);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 * FUN_00a80390(void)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 unaff_EBX;
  
  if ((DAT_032ed47c == 0) && (iVar1 = FUN_00a80310(), iVar1 == 0)) {
    return (undefined4 *)0x0;
  }
  FUN_00a7fdc0(9,2,".\\crypto\\ex_data.c",0x130);
  puVar2 = (undefined4 *)FUN_00a84ed0(DAT_032ed47c,&stack0xfffffff4);
  if ((puVar2 == (undefined4 *)0x0) &&
     (puVar3 = (undefined4 *)FUN_00a84f80(0xc,".\\crypto\\ex_data.c",0x134),
     puVar3 != (undefined4 *)0x0)) {
    *puVar3 = unaff_EBX;
    puVar3[2] = 0;
    iVar1 = FUN_00a81010();
    puVar3[1] = iVar1;
    if (iVar1 == 0) {
      FUN_00a85120();
    }
    else {
      FUN_00a84dd0(DAT_032ed47c,puVar3);
      puVar2 = puVar3;
    }
  }
  FUN_00a7fdc0(10,2,".\\crypto\\ex_data.c",0x145);
  if (puVar2 == (undefined4 *)0x0) {
    FUN_00a7f3c0(0xf,0x69,0x41,".\\crypto\\ex_data.c",0x147);
  }
  return puVar2;
}



int FUN_00a80470(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                undefined4 param_5)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  int unaff_EDI;
  
  iVar3 = -1;
  puVar1 = (undefined4 *)FUN_00a84f80(0x14,".\\crypto\\ex_data.c",0x153);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(0xf,0x68,0x41,".\\crypto\\ex_data.c",0x156);
    return -1;
  }
  *puVar1 = param_1;
  puVar1[1] = param_2;
  puVar1[2] = param_3;
  puVar1[4] = param_4;
  puVar1[3] = param_5;
  FUN_00a7fdc0(9,2,".\\crypto\\ex_data.c",0x15e);
  iVar2 = FUN_00a80ed0(*(undefined4 *)(unaff_EDI + 4));
  if (iVar2 <= *(int *)(unaff_EDI + 8)) {
    do {
      iVar2 = FUN_00a80df0(*(undefined4 *)(unaff_EDI + 4),0);
      if (iVar2 == 0) {
        FUN_00a7f3c0(0xf,0x68,0x41,".\\crypto\\ex_data.c",0x163);
        FUN_00a85120(puVar1);
        goto LAB_00a8052c;
      }
      iVar2 = FUN_00a80ed0(*(undefined4 *)(unaff_EDI + 4));
    } while (iVar2 <= *(int *)(unaff_EDI + 8));
  }
  iVar3 = *(int *)(unaff_EDI + 8);
  *(int *)(unaff_EDI + 8) = iVar3 + 1;
  FUN_00a80f00(*(undefined4 *)(unaff_EDI + 4),iVar3,puVar1);
LAB_00a8052c:
  FUN_00a7fdc0(10,2,".\\crypto\\ex_data.c",0x16b);
  return iVar3;
}



void FUN_00a80640(void)

{
  if (DAT_032ed478 == (undefined **)0x0) {
    FUN_00a7fdc0(9,2,".\\crypto\\ex_data.c",0xcb);
    if (DAT_032ed478 == (undefined **)0x0) {
      DAT_032ed478 = &PTR_LAB_032429f8;
    }
    FUN_00a7fdc0(10,2,".\\crypto\\ex_data.c",0xce);
  }
                    // WARNING: Could not recover jumptable at 0x00a80690. Too many branches
                    // WARNING: Treating indirect jump as call
  (*(code *)DAT_032ed478[1])();
  return;
}



void FUN_00a806a0(void)

{
  if (DAT_032ed478 == (undefined **)0x0) {
    FUN_00a7fdc0(9,2,".\\crypto\\ex_data.c",0xcb);
    if (DAT_032ed478 == (undefined **)0x0) {
      DAT_032ed478 = &PTR_LAB_032429f8;
    }
    FUN_00a7fdc0(10,2,".\\crypto\\ex_data.c",0xce);
  }
                    // WARNING: Could not recover jumptable at 0x00a806f0. Too many branches
                    // WARNING: Treating indirect jump as call
  (*(code *)DAT_032ed478[2])();
  return;
}



void FUN_00a80700(void)

{
  if (DAT_032ed478 == (undefined **)0x0) {
    FUN_00a7fdc0(9,2,".\\crypto\\ex_data.c",0xcb);
    if (DAT_032ed478 == (undefined **)0x0) {
      DAT_032ed478 = &PTR_LAB_032429f8;
    }
    FUN_00a7fdc0(10,2,".\\crypto\\ex_data.c",0xce);
  }
                    // WARNING: Could not recover jumptable at 0x00a80750. Too many branches
                    // WARNING: Treating indirect jump as call
  (*(code *)DAT_032ed478[3])();
  return;
}



void FUN_00a80760(void)

{
  if (DAT_032ed478 == (undefined **)0x0) {
    FUN_00a7fdc0(9,2,".\\crypto\\ex_data.c",0xcb);
    if (DAT_032ed478 == (undefined **)0x0) {
      DAT_032ed478 = &PTR_LAB_032429f8;
    }
    FUN_00a7fdc0(10,2,".\\crypto\\ex_data.c",0xce);
  }
                    // WARNING: Could not recover jumptable at 0x00a807b0. Too many branches
                    // WARNING: Treating indirect jump as call
  (*(code *)DAT_032ed478[5])();
  return;
}



undefined4 FUN_00a807c0(int *param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  
  if (*param_1 == 0) {
    iVar1 = FUN_00a81010();
    *param_1 = iVar1;
    if (iVar1 == 0) {
      FUN_00a7f3c0(0xf,0x66,0x41,".\\crypto\\ex_data.c",0x25d);
      return 0;
    }
  }
  iVar1 = FUN_00a80ed0(*param_1);
  while( true ) {
    if (param_2 < iVar1) {
      FUN_00a80f00(*param_1,param_2,param_3);
      return 1;
    }
    iVar2 = FUN_00a80df0(*param_1,0);
    if (iVar2 == 0) break;
    iVar1 = iVar1 + 1;
  }
  FUN_00a7f3c0(0xf,0x66,0x41,".\\crypto\\ex_data.c",0x267);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a809a0(undefined4 param_1,undefined4 param_2,int *param_3)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  int local_4;
  
  local_4 = 0xa809aa;
  iVar6 = 0;
  if (*param_3 == 0) {
    return 1;
  }
  iVar2 = FUN_00a80390();
  if (iVar2 != 0) {
    FUN_00a7fdc0(5,2,".\\crypto\\ex_data.c",0x1c9);
    iVar3 = FUN_00a80ed0(*(undefined4 *)(iVar2 + 4));
    iVar4 = FUN_00a80ed0(*param_3);
    if (iVar4 < iVar3) {
      iVar3 = iVar4;
    }
    if (((0 < iVar3) && (iVar6 = FUN_00a84f80(iVar3 * 4,".\\crypto\\ex_data.c",0x1d0), iVar6 != 0))
       && (iVar4 = 0, 0 < iVar3)) {
      do {
        uVar5 = FUN_00a80ee0(*(undefined4 *)(iVar2 + 4),iVar4);
        *(undefined4 *)(iVar6 + iVar4 * 4) = uVar5;
        iVar4 = iVar4 + 1;
      } while (iVar4 < iVar3);
    }
    FUN_00a7fdc0(6,2,".\\crypto\\ex_data.c",0x1d7);
    if ((0 < iVar3) && (iVar6 == 0)) {
      FUN_00a7f3c0(0xf,0x6a,0x41,".\\crypto\\ex_data.c",0x1da);
      return 0;
    }
    iVar2 = 0;
    if (0 < iVar3) {
      do {
        iVar4 = *param_3;
        if (iVar4 != 0) {
          iVar4 = FUN_00a80ed0(iVar4);
          if (iVar2 < iVar4) {
            iVar4 = FUN_00a80ee0(*param_3,iVar2);
          }
          else {
            iVar4 = 0;
          }
        }
        puVar1 = *(undefined4 **)(iVar6 + iVar2 * 4);
        local_4 = iVar4;
        if ((puVar1 != (undefined4 *)0x0) && (puVar1[4] != 0)) {
          (*(code *)puVar1[4])(param_2,param_3,&local_4,iVar2,*puVar1,puVar1[1]);
        }
        FUN_00a807c0(param_2,iVar2,local_4);
        iVar2 = iVar2 + 1;
      } while (iVar2 < iVar3);
    }
    if (iVar6 != 0) {
      FUN_00a85120(iVar6);
    }
    return 1;
  }
  return 0;
}



void FUN_00a80c60(int param_1,int param_2)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x10);
  *(int *)(param_1 + 0x10) = param_2;
  if (iVar1 != param_2) {
    *(undefined4 *)(param_1 + 8) = 0;
  }
  return;
}



undefined4 * FUN_00a80c80(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x14,".\\crypto\\stack\\stack.c",0x7d);
  if (puVar1 != (undefined4 *)0x0) {
    puVar2 = (undefined4 *)FUN_00a84f80(0x10,".\\crypto\\stack\\stack.c",0x7f);
    puVar1[1] = puVar2;
    if (puVar2 != (undefined4 *)0x0) {
      *puVar2 = 0;
      *(undefined4 *)(puVar1[1] + 4) = 0;
      *(undefined4 *)(puVar1[1] + 8) = 0;
      *(undefined4 *)(puVar1[1] + 0xc) = 0;
      *puVar1 = 0;
      puVar1[2] = 0;
      puVar1[4] = param_1;
      puVar1[3] = 4;
      return puVar1;
    }
    FUN_00a85120(puVar1);
  }
  return (undefined4 *)0x0;
}



int FUN_00a80cf0(int *param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  
  if (param_1 == (int *)0x0) {
    return 0;
  }
  if (param_1[3] <= *param_1 + 1) {
    iVar3 = FUN_00a84ff0(param_1[1],param_1[3] * 8,".\\crypto\\stack\\stack.c",0x96);
    if (iVar3 == 0) {
      return 0;
    }
    param_1[1] = iVar3;
    param_1[3] = param_1[3] * 2;
  }
  iVar3 = *param_1;
  if ((param_3 < iVar3) && (-1 < param_3)) {
    iVar2 = param_1[1];
    iVar1 = iVar2 + 4;
    if (param_3 <= iVar3) {
      puVar4 = (undefined4 *)(iVar1 + iVar3 * 4);
      iVar3 = (iVar3 - param_3) + 1;
      do {
        *puVar4 = *(undefined4 *)((iVar2 - iVar1) + (int)puVar4);
        puVar4 = puVar4 + -1;
        iVar3 = iVar3 + -1;
      } while (iVar3 != 0);
    }
    *(undefined4 *)(param_1[1] + param_3 * 4) = param_2;
    *param_1 = *param_1 + 1;
    param_1[2] = 0;
    return *param_1;
  }
  *(undefined4 *)(param_1[1] + iVar3 * 4) = param_2;
  *param_1 = *param_1 + 1;
  param_1[2] = 0;
  return *param_1;
}



undefined4 FUN_00a80da0(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  
  if (((param_1 != (int *)0x0) && (-1 < param_2)) && (param_2 < *param_1)) {
    uVar4 = *(undefined4 *)(param_1[1] + param_2 * 4);
    iVar1 = *param_1 + -1;
    if (param_2 < iVar1) {
      do {
        iVar3 = param_2 * 4;
        iVar2 = param_2 * 4;
        param_2 = param_2 + 1;
        *(undefined4 *)(param_1[1] + iVar2) = *(undefined4 *)(param_1[1] + 4 + iVar3);
      } while (param_2 < iVar1);
    }
    *param_1 = *param_1 + -1;
    return uVar4;
  }
  return 0;
}



void FUN_00a80df0(undefined4 *param_1,undefined4 param_2)

{
  FUN_00a80cf0(param_1,param_2,*param_1);
  return;
}



undefined4 FUN_00a80e10(int *param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  
  if ((param_1 != (int *)0x0) && (iVar3 = *param_1, 0 < iVar3)) {
    uVar4 = *(undefined4 *)param_1[1];
    if ((iVar3 != 1) && (iVar5 = 0, 0 < iVar3 + -1)) {
      do {
        iVar2 = iVar5 * 4;
        iVar1 = iVar5 * 4;
        iVar5 = iVar5 + 1;
        *(undefined4 *)(param_1[1] + iVar1) = *(undefined4 *)(param_1[1] + 4 + iVar2);
      } while (iVar5 < iVar3 + -1);
    }
    *param_1 = *param_1 + -1;
    return uVar4;
  }
  return 0;
}



undefined4 FUN_00a80e50(int *param_1)

{
  undefined4 uVar1;
  
  if ((param_1 != (int *)0x0) && (0 < *param_1)) {
    uVar1 = FUN_00a80da0(param_1,*param_1 + -1);
    return uVar1;
  }
  return 0;
}



void FUN_00a80e70(int *param_1)

{
  if ((param_1 != (int *)0x0) && (0 < *param_1)) {
    _memset((void *)param_1[1],0,*param_1 * 4);
    *param_1 = 0;
  }
  return;
}



void FUN_00a80ea0(int param_1)

{
  if (param_1 != 0) {
    if (*(int *)(param_1 + 4) != 0) {
      FUN_00a85120(*(int *)(param_1 + 4));
    }
    FUN_00a85120(param_1);
  }
  return;
}



undefined4 FUN_00a80ed0(undefined4 *param_1)

{
  if (param_1 == (undefined4 *)0x0) {
    return 0xffffffff;
  }
  return *param_1;
}



undefined4 FUN_00a80ee0(int *param_1,int param_2)

{
  if (((param_1 != (int *)0x0) && (-1 < param_2)) && (param_2 < *param_1)) {
    return *(undefined4 *)(param_1[1] + param_2 * 4);
  }
  return 0;
}



undefined4 FUN_00a80f00(int *param_1,int param_2,undefined4 param_3)

{
  if (((param_1 != (int *)0x0) && (-1 < param_2)) && (param_2 < *param_1)) {
    *(undefined4 *)(param_1[1] + param_2 * 4) = param_3;
    return param_3;
  }
  return 0;
}



void FUN_00a80f30(size_t *param_1)

{
  if ((param_1 != (size_t *)0x0) && (param_1[2] == 0)) {
    _qsort((void *)param_1[1],*param_1,4,(_PtFuncCompare *)param_1[4]);
    param_1[2] = 1;
  }
  return;
}



undefined4 FUN_00a80f60(int param_1)

{
  if (param_1 == 0) {
    return 1;
  }
  return *(undefined4 *)(param_1 + 8);
}



int * FUN_00a80f80(int *param_1)

{
  int *piVar1;
  void *_Dst;
  
  piVar1 = (int *)FUN_00a80c80(param_1[4]);
  if (piVar1 != (int *)0x0) {
    _Dst = (void *)FUN_00a84ff0(piVar1[1],param_1[3] * 4,".\\crypto\\stack\\stack.c",99);
    if (_Dst != (void *)0x0) {
      piVar1[1] = (int)_Dst;
      *piVar1 = *param_1;
      _memcpy(_Dst,(void *)param_1[1],*param_1 * 4);
      piVar1[2] = param_1[2];
      piVar1[3] = param_1[3];
      piVar1[4] = param_1[4];
      return piVar1;
    }
    if (piVar1[1] != 0) {
      FUN_00a85120(piVar1[1]);
    }
    FUN_00a85120(piVar1);
  }
  return (int *)0x0;
}



void FUN_00a81010(void)

{
  FUN_00a80c80(0);
  return;
}



int FUN_00a81020(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  
  iVar1 = *param_1;
  iVar3 = 0;
  if (0 < iVar1) {
    piVar4 = (int *)param_1[1];
    do {
      if (*piVar4 == param_2) {
        if (iVar3 < 0) {
          return 0;
        }
        if (iVar1 <= iVar3) {
          return 0;
        }
        iVar2 = ((int *)param_1[1])[iVar3];
        for (; iVar3 < iVar1 + -1; iVar3 = iVar3 + 1) {
          *(undefined4 *)(param_1[1] + iVar3 * 4) = *(undefined4 *)(param_1[1] + 4 + iVar3 * 4);
        }
        *param_1 = *param_1 + -1;
        return iVar2;
      }
      iVar3 = iVar3 + 1;
      piVar4 = piVar4 + 1;
    } while (iVar3 < iVar1);
  }
  return 0;
}



int FUN_00a81080(int param_1,undefined4 param_2)

{
  int iVar1;
  int *piVar2;
  size_t *unaff_ESI;
  
  if (unaff_ESI != (size_t *)0x0) {
    if ((_PtFuncCompare *)unaff_ESI[4] == (_PtFuncCompare *)0x0) {
      if (0 < (int)*unaff_ESI) {
        piVar2 = (int *)unaff_ESI[1];
        iVar1 = 0;
        do {
          if (*piVar2 == param_1) {
            return iVar1;
          }
          iVar1 = iVar1 + 1;
          piVar2 = piVar2 + 1;
        } while (iVar1 < (int)*unaff_ESI);
      }
    }
    else {
      if (unaff_ESI[2] == 0) {
        _qsort((void *)unaff_ESI[1],*unaff_ESI,4,(_PtFuncCompare *)unaff_ESI[4]);
        unaff_ESI[2] = 1;
      }
      if ((param_1 != 0) &&
         (iVar1 = FUN_00a87700(&param_1,unaff_ESI[1],*unaff_ESI,4,unaff_ESI[4],param_2), iVar1 != 0)
         ) {
        return (int)(iVar1 - unaff_ESI[1]) >> 2;
      }
    }
  }
  return -1;
}



void FUN_00a81100(undefined4 param_1,undefined4 param_2)

{
  FUN_00a81080(param_2,2);
  return;
}



void FUN_00a81120(int *param_1,code *param_2)

{
  int iVar1;
  
  if (param_1 != (int *)0x0) {
    iVar1 = 0;
    if (0 < *param_1) {
      do {
        if (*(int *)(param_1[1] + iVar1 * 4) != 0) {
          (*param_2)(*(undefined4 *)(param_1[1] + iVar1 * 4));
        }
        iVar1 = iVar1 + 1;
      } while (iVar1 < *param_1);
    }
    if (param_1[1] != 0) {
      FUN_00a85120(param_1[1]);
    }
    FUN_00a85120(param_1);
  }
  return;
}



undefined * FUN_00a81170(void)

{
  return &DAT_00da5d80;
}



undefined * FUN_00a81270(void)

{
  return &DAT_00da5df0;
}



void FUN_00a81280(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00da5df0);
  return;
}



void FUN_00a812a0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00da5df0);
  return;
}



void FUN_00a812c0(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00da5df0);
  return;
}



int FUN_00a812e0(undefined4 param_1,int *param_2,int param_3)

{
  int iVar1;
  int iVar2;
  
  iVar2 = *param_2;
  iVar1 = FUN_00a8ae20(param_1,param_2,param_3,&DAT_00da5df0);
  if (iVar1 != 0) {
    param_3 = param_3 + (iVar2 - *param_2);
    if ((param_3 == 0) || (iVar2 = FUN_00a8ded0(iVar1 + 100,param_2,param_3), iVar2 != 0)) {
      return iVar1;
    }
    FUN_00a8c2c0(iVar1,&DAT_00da5df0);
  }
  return 0;
}



undefined4 FUN_00a81340(int param_1)

{
  code *UNRECOVERED_JUMPTABLE;
  undefined4 uVar1;
  
  if (((param_1 != 0) && (*(int *)(param_1 + 0xc) != 0)) &&
     (UNRECOVERED_JUMPTABLE = *(code **)(*(int *)(param_1 + 0xc) + 0x34),
     UNRECOVERED_JUMPTABLE != (code *)0x0)) {
                    // WARNING: Could not recover jumptable at 0x00a8135a. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (*UNRECOVERED_JUMPTABLE)();
    return uVar1;
  }
  return 0;
}



undefined4 FUN_00a81360(int param_1)

{
  code *UNRECOVERED_JUMPTABLE;
  undefined4 uVar1;
  
  if (((param_1 != 0) && (*(int *)(param_1 + 0xc) != 0)) &&
     (UNRECOVERED_JUMPTABLE = *(code **)(*(int *)(param_1 + 0xc) + 0x30),
     UNRECOVERED_JUMPTABLE != (code *)0x0)) {
                    // WARNING: Could not recover jumptable at 0x00a8137a. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (*UNRECOVERED_JUMPTABLE)();
    return uVar1;
  }
  return 0;
}



undefined4 FUN_00a81380(int param_1)

{
  code *UNRECOVERED_JUMPTABLE;
  undefined4 uVar1;
  
  if ((*(int *)(param_1 + 0xc) != 0) &&
     (UNRECOVERED_JUMPTABLE = *(code **)(*(int *)(param_1 + 0xc) + 0x40),
     UNRECOVERED_JUMPTABLE != (code *)0x0)) {
                    // WARNING: Could not recover jumptable at 0x00a81396. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (*UNRECOVERED_JUMPTABLE)();
    return uVar1;
  }
  return 0;
}



undefined4 FUN_00a813a0(int *param_1,int *param_2)

{
  code *UNRECOVERED_JUMPTABLE;
  undefined4 uVar1;
  
  if (*param_1 != *param_2) {
    return 0xffffffff;
  }
  if ((param_1[3] != 0) &&
     (UNRECOVERED_JUMPTABLE = *(code **)(param_1[3] + 0x48), UNRECOVERED_JUMPTABLE != (code *)0x0))
  {
                    // WARNING: Could not recover jumptable at 0x00a813c8. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (*UNRECOVERED_JUMPTABLE)();
    return uVar1;
  }
  return 0xfffffffe;
}



int FUN_00a813d0(int *param_1,int *param_2)

{
  code *pcVar1;
  int iVar2;
  
  if (*param_1 != *param_2) {
    return -1;
  }
  if (param_1[3] != 0) {
    pcVar1 = *(code **)(param_1[3] + 0x48);
    if ((pcVar1 != (code *)0x0) && (iVar2 = (*pcVar1)(param_1,param_2), iVar2 < 1)) {
      return iVar2;
    }
    if (*(code **)(param_1[3] + 0x1c) != (code *)0x0) {
      iVar2 = (**(code **)(param_1[3] + 0x1c))(param_1,param_2);
      return iVar2;
    }
  }
  return -2;
}



undefined4 * FUN_00a81420(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x20,".\\crypto\\evp\\p_lib.c",0xba);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(6,0x6a,0x41,".\\crypto\\evp\\p_lib.c",0xbd);
    return (undefined4 *)0x0;
  }
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[2] = 1;
  puVar1[3] = 0;
  puVar1[4] = 0;
  puVar1[5] = 0;
  puVar1[7] = 0;
  puVar1[6] = 1;
  return puVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a81480(undefined4 param_1)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int local_4;
  
  local_4 = 0xa8148a;
  puVar1 = (undefined4 *)FUN_00a8f310(&local_4,param_1);
  if (puVar1 == (undefined4 *)0x0) {
    uVar2 = 0;
  }
  else {
    uVar2 = *puVar1;
  }
  if (local_4 != 0) {
    FUN_00a8f1b0(local_4);
  }
  return uVar2;
}



undefined4 FUN_00a814c0(undefined4 *param_1)

{
  return *param_1;
}



undefined4 FUN_00a814d0(int param_1,undefined4 param_2)

{
  code *pcVar1;
  undefined4 uVar2;
  
  if ((*(int *)(param_1 + 0xc) != 0) &&
     (pcVar1 = *(code **)(*(int *)(param_1 + 0xc) + 0x58), pcVar1 != (code *)0x0)) {
    uVar2 = (*pcVar1)(param_1,3,0,param_2);
    return uVar2;
  }
  return 0xfffffffe;
}



undefined4 FUN_00a81500(int *param_1,int *param_2)

{
  code *pcVar1;
  int iVar2;
  undefined4 uVar3;
  
  if (*param_1 == *param_2) {
    if ((param_2[3] != 0) && (pcVar1 = *(code **)(param_2[3] + 0x40), pcVar1 != (code *)0x0)) {
      iVar2 = (*pcVar1)(param_2);
      if (iVar2 != 0) {
        FUN_00a7f3c0(6,0x67,0x67,".\\crypto\\evp\\p_lib.c",0x86);
        return 0;
      }
    }
    if ((param_2[3] != 0) && (pcVar1 = *(code **)(param_2[3] + 0x44), pcVar1 != (code *)0x0)) {
      uVar3 = (*pcVar1)(param_1,param_2);
      return uVar3;
    }
  }
  else {
    FUN_00a7f3c0(6,0x67,0x65,".\\crypto\\evp\\p_lib.c",0x80);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __thiscall FUN_00a81580(int param_1_00,int param_1,undefined4 param_3)

{
  code *pcVar1;
  undefined4 *puVar2;
  undefined4 *unaff_ESI;
  int local_4;
  
  local_4 = 0;
  if (unaff_ESI != (undefined4 *)0x0) {
    if (unaff_ESI[5] != 0) {
      if ((unaff_ESI[3] != 0) && (pcVar1 = *(code **)(unaff_ESI[3] + 0x54), pcVar1 != (code *)0x0))
      {
        (*pcVar1)();
        unaff_ESI[5] = 0;
      }
      if (unaff_ESI[4] != 0) {
        FUN_00a8f1b0(unaff_ESI[4]);
        unaff_ESI[4] = 0;
      }
    }
    if ((param_1 == unaff_ESI[1]) && (unaff_ESI[3] != 0)) {
      return 1;
    }
    if (unaff_ESI[4] != 0) {
      FUN_00a8f1b0(unaff_ESI[4]);
      unaff_ESI[4] = 0;
    }
  }
  if (param_1_00 == 0) {
    puVar2 = (undefined4 *)FUN_00a8f310(&local_4,param_1);
  }
  else {
    puVar2 = (undefined4 *)FUN_00a8f370(&local_4,param_1_00,param_3);
  }
  if ((unaff_ESI == (undefined4 *)0x0) && (local_4 != 0)) {
    FUN_00a8f1b0(local_4);
  }
  if (puVar2 != (undefined4 *)0x0) {
    if (unaff_ESI != (undefined4 *)0x0) {
      unaff_ESI[3] = puVar2;
      unaff_ESI[4] = local_4;
      *unaff_ESI = *puVar2;
      unaff_ESI[1] = param_1;
    }
    return 1;
  }
  FUN_00a7f3c0(6,0x9e,0x9c,".\\crypto\\evp\\p_lib.c",0xef);
  return 0;
}



void FUN_00a81680(undefined4 param_1,undefined4 param_2)

{
  FUN_00a81580(param_2,0xffffffff);
  return;
}



bool FUN_00a816a0(int param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  
  iVar1 = FUN_00a81580(param_2,0xffffffff);
  if (iVar1 == 0) {
    return false;
  }
  *(int *)(param_1 + 0x14) = param_3;
  return param_3 != 0;
}



void FUN_00a816d0(int param_1)

{
  code *pcVar1;
  int iVar2;
  
  if (param_1 != 0) {
    iVar2 = FUN_00a7fe40(param_1 + 8,0xffffffff,10,".\\crypto\\evp\\p_lib.c",0x189);
    if (iVar2 < 1) {
      if ((*(int *)(param_1 + 0xc) != 0) &&
         (pcVar1 = *(code **)(*(int *)(param_1 + 0xc) + 0x54), pcVar1 != (code *)0x0)) {
        (*pcVar1)(param_1);
        *(undefined4 *)(param_1 + 0x14) = 0;
      }
      if (*(int *)(param_1 + 0x10) != 0) {
        FUN_00a8f1b0(*(int *)(param_1 + 0x10));
        *(undefined4 *)(param_1 + 0x10) = 0;
      }
      if (*(int *)(param_1 + 0x1c) != 0) {
        FUN_00a81120(*(int *)(param_1 + 0x1c),FUN_00a8f540);
      }
      FUN_00a85120(param_1);
    }
  }
  return;
}



void FUN_00a81840(int *param_1)

{
  if (*param_1 == 1) {
    FUN_00a812c0(param_1[1]);
    FUN_00a85120(param_1);
    return;
  }
  if (*param_1 == 2) {
    FUN_00a8fba0(param_1[1]);
  }
  FUN_00a85120(param_1);
  return;
}



void FUN_00a81880(int param_1)

{
  undefined4 uVar1;
  code *pcVar2;
  int iVar3;
  int iVar4;
  
  if (param_1 != 0) {
    uVar1 = *(undefined4 *)(param_1 + 8);
    iVar4 = 0;
    iVar3 = FUN_00a80ed0(uVar1);
    if (0 < iVar3) {
      do {
        iVar3 = FUN_00a80ee0(uVar1,iVar4);
        if ((*(int *)(iVar3 + 8) != 0) &&
           (pcVar2 = *(code **)(*(int *)(iVar3 + 8) + 0x10), pcVar2 != (code *)0x0)) {
          (*pcVar2)(iVar3);
        }
        if ((*(int *)(iVar3 + 8) != 0) &&
           (pcVar2 = *(code **)(*(int *)(iVar3 + 8) + 8), pcVar2 != (code *)0x0)) {
          (*pcVar2)(iVar3);
        }
        FUN_00a85120(iVar3);
        iVar4 = iVar4 + 1;
        iVar3 = FUN_00a80ed0(uVar1);
      } while (iVar4 < iVar3);
    }
    FUN_00a80ea0(uVar1);
    FUN_00a81120(*(undefined4 *)(param_1 + 4),FUN_00a81840);
    FUN_00a80760(4,param_1,param_1 + 0x3c);
    if (*(int *)(param_1 + 0xc) != 0) {
      FUN_00a8f680(*(int *)(param_1 + 0xc));
    }
    FUN_00a85120(param_1);
  }
  return;
}



void FUN_00a81930(int *param_1)

{
  if (*param_1 == 1) {
    FUN_00a7fe40(param_1[1] + 0x10,1,3,".\\crypto\\x509\\x509_lu.c",0x195);
  }
  else if (*param_1 == 2) {
    FUN_00a7fe40(param_1[1] + 0xc,1,6,".\\crypto\\x509\\x509_lu.c",0x198);
    return;
  }
  return;
}



void FUN_00a81980(int *param_1)

{
  if (*param_1 == 1) {
    FUN_00a812c0();
    return;
  }
  if (*param_1 == 2) {
    FUN_00a8fba0();
    return;
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __thiscall FUN_00a819b0(undefined4 param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int *unaff_EBX;
  int local_120;
  undefined **local_11c;
  undefined local_114 [8];
  undefined4 local_10c;
  undefined local_ec [20];
  undefined4 local_d8;
  undefined *local_b8 [19];
  undefined *local_6c [26];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_120;
  local_120 = param_1;
  if (param_1 == 1) {
    local_6c[0] = local_ec;
    local_11c = local_6c;
    local_d8 = param_1_00;
  }
  else {
    if (param_1 != 2) {
      ___security_check_cookie_4();
      return;
    }
    local_b8[0] = local_114;
    local_11c = local_b8;
    local_10c = param_1_00;
  }
  iVar1 = FUN_00a81100();
  if ((-1 < iVar1) && (unaff_EBX != (int *)0x0)) {
    *unaff_EBX = 1;
    iVar1 = iVar1 + 1;
    iVar2 = FUN_00a80ed0();
    if (iVar1 < iVar2) {
      do {
        piVar3 = (int *)FUN_00a80ee0();
        iVar2 = *piVar3;
        if (iVar2 != local_120) break;
        if (iVar2 == 1) {
          iVar2 = FUN_00a82d00(piVar3[1],local_11c);
LAB_00a81a8c:
          if (iVar2 != 0) break;
        }
        else if (iVar2 == 2) {
          iVar2 = FUN_00a82d20(piVar3[1],local_11c);
          goto LAB_00a81a8c;
        }
        *unaff_EBX = *unaff_EBX + 1;
        iVar1 = iVar1 + 1;
        iVar2 = FUN_00a80ed0();
      } while (iVar1 < iVar2);
    }
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int * FUN_00a81ac0(undefined4 param_1,int *param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  
  iVar1 = FUN_00a81100(param_1,param_2);
  if (iVar1 == -1) {
    return (int *)0x0;
  }
  if ((*param_2 != 1) && (*param_2 != 2)) {
    piVar2 = (int *)FUN_00a80ee0(param_1,iVar1);
    return piVar2;
  }
  iVar3 = FUN_00a80ed0(param_1);
  if (iVar1 < iVar3) {
    do {
      piVar2 = (int *)FUN_00a80ee0(param_1,iVar1);
      iVar3 = *piVar2;
      if (iVar3 != *param_2) {
        return (int *)0x0;
      }
      if (iVar3 == 1) {
        iVar3 = FUN_00a82d00(piVar2[1],param_2[1]);
LAB_00a81b52:
        if (iVar3 != 0) {
          return (int *)0x0;
        }
      }
      else if (iVar3 == 2) {
        iVar3 = FUN_00a82d20(piVar2[1],param_2[1]);
        goto LAB_00a81b52;
      }
      if (*param_2 == 1) {
        iVar3 = FUN_00a82a60(piVar2[1],param_2[1]);
      }
      else {
        if (*param_2 != 2) {
          return piVar2;
        }
        iVar3 = FUN_00a829e0(piVar2[1],param_2[1]);
      }
      if (iVar3 == 0) {
        return piVar2;
      }
      iVar1 = iVar1 + 1;
      iVar3 = FUN_00a80ed0(param_1);
    } while (iVar1 < iVar3);
  }
  return (int *)0x0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a81bb0(int *param_1,int param_2,undefined4 param_3,int *param_4)

{
  code *pcVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  int local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa81bba;
  iVar4 = *param_1;
  FUN_00a7fdc0(9,0xb,".\\crypto\\x509\\x509_lu.c",0x129);
  uVar6 = *(undefined4 *)(iVar4 + 4);
  piVar5 = (int *)0x0;
  iVar2 = FUN_00a819b0(param_2);
  if (iVar2 != -1) {
    piVar5 = (int *)FUN_00a80ee0(uVar6,iVar2);
  }
  FUN_00a7fdc0(10,0xb,".\\crypto\\x509\\x509_lu.c",299);
  if ((piVar5 == (int *)0x0) || (param_2 == 2)) {
    iVar2 = param_1[1];
    iVar3 = FUN_00a80ed0(*(undefined4 *)(iVar4 + 8));
    if (iVar2 < iVar3) {
      do {
        iVar3 = FUN_00a80ee0(*(undefined4 *)(iVar4 + 8),iVar2);
        if (((*(int *)(iVar3 + 8) != 0) &&
            (pcVar1 = *(code **)(*(int *)(iVar3 + 8) + 0x18), pcVar1 != (code *)0x0)) &&
           (*(int *)(iVar3 + 4) == 0)) {
          iVar3 = (*pcVar1)(iVar3,param_2,param_3,&local_8);
          if (iVar3 < 0) {
            param_1[1] = iVar3;
            return iVar3;
          }
          if (iVar3 != 0) {
            piVar5 = &local_8;
            break;
          }
        }
        iVar2 = iVar2 + 1;
        iVar3 = FUN_00a80ed0(*(undefined4 *)(iVar4 + 8));
      } while (iVar2 < iVar3);
    }
    param_1[1] = 0;
    if (piVar5 == (int *)0x0) {
      return 0;
    }
  }
  *param_4 = *piVar5;
  iVar4 = piVar5[1];
  param_4[1] = iVar4;
  if (*param_4 == 1) {
    uVar7 = 0x195;
    uVar6 = 3;
    iVar4 = iVar4 + 0x10;
  }
  else {
    if (*param_4 != 2) {
      return 1;
    }
    uVar7 = 0x198;
    uVar6 = 6;
    iVar4 = iVar4 + 0xc;
  }
  FUN_00a7fe40(iVar4,1,uVar6,".\\crypto\\x509\\x509_lu.c",uVar7);
  return 1;
}



bool FUN_00a81d10(int param_1,int param_2)

{
  undefined4 *puVar1;
  int iVar2;
  
  if (param_2 == 0) {
    return false;
  }
  puVar1 = (undefined4 *)FUN_00a84f80(8,".\\crypto\\x509\\x509_lu.c",0x154);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(0xb,0x7c,0x41,".\\crypto\\x509\\x509_lu.c",0x157);
    return false;
  }
  *puVar1 = 1;
  puVar1[1] = param_2;
  FUN_00a7fdc0(9,0xb,".\\crypto\\x509\\x509_lu.c",0x15d);
  FUN_00a81930(puVar1);
  iVar2 = FUN_00a81ac0(*(undefined4 *)(param_1 + 4),puVar1);
  if (iVar2 == 0) {
    FUN_00a80df0(*(undefined4 *)(param_1 + 4),puVar1);
  }
  else {
    FUN_00a81980();
    FUN_00a85120(puVar1);
    FUN_00a7f3c0(0xb,0x7c,0x65,".\\crypto\\x509\\x509_lu.c",0x165);
  }
  FUN_00a7fdc0(10,0xb,".\\crypto\\x509\\x509_lu.c",0x16a);
  return iVar2 == 0;
}



bool FUN_00a81de0(int param_1,int param_2)

{
  undefined4 *puVar1;
  int iVar2;
  
  if (param_2 == 0) {
    return false;
  }
  puVar1 = (undefined4 *)FUN_00a84f80(8,".\\crypto\\x509\\x509_lu.c",0x175);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(0xb,0x7d,0x41,".\\crypto\\x509\\x509_lu.c",0x178);
    return false;
  }
  *puVar1 = 2;
  puVar1[1] = param_2;
  FUN_00a7fdc0(9,0xb,".\\crypto\\x509\\x509_lu.c",0x17e);
  FUN_00a81930(puVar1);
  iVar2 = FUN_00a81ac0(*(undefined4 *)(param_1 + 4),puVar1);
  if (iVar2 == 0) {
    FUN_00a80df0(*(undefined4 *)(param_1 + 4),puVar1);
  }
  else {
    FUN_00a81980();
    FUN_00a85120(puVar1);
    FUN_00a7f3c0(0xb,0x7d,0x65,".\\crypto\\x509\\x509_lu.c",0x186);
  }
  FUN_00a7fdc0(10,0xb,".\\crypto\\x509\\x509_lu.c",0x18b);
  return iVar2 == 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a81ec0(int *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int local_8;
  undefined4 local_4;
  
  local_4 = 0xa81eca;
  uVar1 = FUN_00a81010();
  FUN_00a7fdc0(9,0xb,".\\crypto\\x509\\x509_lu.c",0x1ef);
  iVar2 = FUN_00a819b0(1);
  if (iVar2 < 0) {
    FUN_00a7fdc0(10,0xb,".\\crypto\\x509\\x509_lu.c",0x1f7);
    iVar2 = FUN_00a81bb0(param_1,1,param_2,&local_8);
    if (iVar2 == 0) {
      FUN_00a80ea0(uVar1);
      return 0;
    }
    if (local_8 == 1) {
      FUN_00a812c0(local_4);
    }
    else if (local_8 == 2) {
      FUN_00a8fba0(local_4);
    }
    FUN_00a7fdc0(9,0xb,".\\crypto\\x509\\x509_lu.c",0x1fe);
    iVar2 = FUN_00a819b0(1);
    if (iVar2 < 0) {
      FUN_00a7fdc0(10,0xb,".\\crypto\\x509\\x509_lu.c",0x202);
      FUN_00a80ea0(uVar1);
      return 0;
    }
  }
  local_8 = 0;
  if (0 < (int)param_1) {
    do {
      iVar3 = FUN_00a80ee0(*(undefined4 *)(*param_1 + 4),iVar2);
      iVar3 = *(int *)(iVar3 + 4);
      FUN_00a7fe40(iVar3 + 0x10,1,3,".\\crypto\\x509\\x509_lu.c",0x20b);
      iVar4 = FUN_00a80df0(uVar1,iVar3);
      if (iVar4 == 0) {
        FUN_00a7fdc0(10,0xb,".\\crypto\\x509\\x509_lu.c",0x20e);
        FUN_00a812c0(iVar3);
        FUN_00a81120(uVar1,FUN_00a812c0);
        return 0;
      }
      local_8 = local_8 + 1;
      iVar2 = iVar2 + 1;
    } while (local_8 < (int)param_1);
  }
  FUN_00a7fdc0(10,0xb,".\\crypto\\x509\\x509_lu.c",0x214);
  return uVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a82090(int *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int local_8;
  undefined4 local_4;
  
  local_4 = 0xa8209a;
  uVar1 = FUN_00a81010();
  FUN_00a7fdc0(9,0xb,".\\crypto\\x509\\x509_lu.c",0x220);
  FUN_00a819b0(2);
  FUN_00a7fdc0(10,0xb,".\\crypto\\x509\\x509_lu.c",0x226);
  iVar2 = FUN_00a81bb0(param_1,2,param_2,&local_8);
  if (iVar2 == 0) {
    FUN_00a80ea0(uVar1);
    return 0;
  }
  if (local_8 == 1) {
    FUN_00a812c0(local_4);
  }
  else if (local_8 == 2) {
    FUN_00a8fba0(local_4);
  }
  FUN_00a7fdc0(9,0xb,".\\crypto\\x509\\x509_lu.c",0x22d);
  iVar2 = FUN_00a819b0(2);
  if (-1 < iVar2) {
    local_8 = 0;
    if (0 < (int)param_1) {
      do {
        iVar3 = FUN_00a80ee0(*(undefined4 *)(*param_1 + 4),iVar2);
        iVar3 = *(int *)(iVar3 + 4);
        FUN_00a7fe40(iVar3 + 0xc,1,6,".\\crypto\\x509\\x509_lu.c",0x23a);
        iVar4 = FUN_00a80df0(uVar1,iVar3);
        if (iVar4 == 0) {
          FUN_00a7fdc0(10,0xb,".\\crypto\\x509\\x509_lu.c",0x23d);
          FUN_00a8fba0(iVar3);
          FUN_00a81120(uVar1,FUN_00a8fba0);
          return 0;
        }
        local_8 = local_8 + 1;
        iVar2 = iVar2 + 1;
      } while (local_8 < (int)param_1);
    }
    FUN_00a7fdc0(10,0xb,".\\crypto\\x509\\x509_lu.c",0x243);
    return uVar1;
  }
  FUN_00a7fdc0(10,0xb,".\\crypto\\x509\\x509_lu.c",0x231);
  FUN_00a80ea0(uVar1);
  return 0;
}



void FUN_00a82440(int param_1)

{
  if (param_1 == 0) {
    return;
  }
  FUN_00a80ed0();
  return;
}



int FUN_00a82460(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  
  if (param_1 == (undefined4 *)0x0) {
    return -1;
  }
  if (param_3 < 0) {
    param_3 = -1;
  }
  uVar1 = *param_1;
  iVar2 = FUN_00a80ed0(uVar1);
  do {
    param_3 = param_3 + 1;
    if (iVar2 <= param_3) {
      return -1;
    }
    puVar3 = (undefined4 *)FUN_00a80ee0(uVar1,param_3);
    iVar4 = FUN_00a90180(*puVar3,param_2);
  } while (iVar4 != 0);
  return param_3;
}



undefined4 FUN_00a824c0(undefined4 *param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  if (param_1 != (undefined4 *)0x0) {
    iVar1 = FUN_00a80ed0(*param_1);
    if ((param_2 < iVar1) && (-1 < param_2)) {
      uVar2 = FUN_00a80ee0(*param_1,param_2);
      return uVar2;
    }
  }
  return 0;
}



undefined4 FUN_00a825b0(undefined4 *param_1,undefined4 param_2,int param_3,int param_4)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  bool bVar4;
  
  if (param_1 == (undefined4 *)0x0) {
    return 0;
  }
  uVar1 = *param_1;
  iVar2 = FUN_00a80ed0(uVar1);
  if ((iVar2 < param_3) || (param_3 < 0)) {
    param_3 = iVar2;
  }
  param_1[1] = 1;
  if (param_4 == -1) {
    if (param_3 == 0) {
      iVar2 = 0;
      bVar4 = true;
    }
    else {
      iVar2 = FUN_00a80ee0(uVar1,param_3 + -1);
      iVar2 = *(int *)(iVar2 + 8);
      bVar4 = false;
    }
  }
  else {
    if (param_3 < iVar2) {
      iVar2 = FUN_00a80ee0(uVar1,param_3);
      iVar2 = *(int *)(iVar2 + 8);
    }
    else if (param_3 == 0) {
      iVar2 = 0;
    }
    else {
      iVar2 = FUN_00a80ee0(uVar1,param_3 + -1);
      iVar2 = *(int *)(iVar2 + 8) + 1;
    }
    bVar4 = iVar2 == 0;
  }
  iVar3 = FUN_00a88d30(param_2);
  if (iVar3 != 0) {
    *(int *)(iVar3 + 8) = iVar2;
    iVar2 = FUN_00a80cf0(uVar1,iVar3,param_3);
    if (iVar2 != 0) {
      if (bVar4) {
        iVar2 = FUN_00a80ed0(uVar1);
        while (param_3 + 1 < iVar2) {
          iVar3 = FUN_00a80ee0(uVar1,param_3);
          *(int *)(iVar3 + 8) = *(int *)(iVar3 + 8) + 1;
          param_3 = param_3 + 1;
        }
      }
      return 1;
    }
    FUN_00a7f3c0(0xb,0x71,0x41,".\\crypto\\x509\\x509name.c",0x103);
    FUN_00a88d10(iVar3);
  }
  return 0;
}



bool FUN_00a826e0(int *param_1,int param_2)

{
  int iVar1;
  
  if ((param_1 != (int *)0x0) && (param_2 != 0)) {
    FUN_00a90760(*param_1);
    iVar1 = FUN_00a8fff0(param_2);
    *param_1 = iVar1;
    return iVar1 != 0;
  }
  FUN_00a7f3c0(0xb,0x73,0x43,".\\crypto\\x509\\x509name.c",0x155);
  return false;
}



bool FUN_00a82730(undefined4 *param_1,uint param_2,char *param_3,int param_4)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  char *pcVar4;
  
  if (param_1 != (undefined4 *)0x0) {
    if ((param_3 != (char *)0x0) || (param_4 == 0)) {
      if ((0 < (int)param_2) && ((param_2 & 0x1000) != 0)) {
        uVar2 = FUN_00a877e0(*param_1);
        iVar3 = FUN_00a91290(param_1 + 1,param_3,param_4,param_2,uVar2);
        return iVar3 != 0;
      }
      if (param_4 < 0) {
        pcVar4 = param_3;
        do {
          cVar1 = *pcVar4;
          pcVar4 = pcVar4 + 1;
        } while (cVar1 != '\0');
        param_4 = (int)pcVar4 - (int)(param_3 + 1);
      }
      iVar3 = FUN_00a90c30(param_1[1],param_3,param_4);
      if (iVar3 == 0) {
        return false;
      }
      if (param_2 != 0xffffffff) {
        if (param_2 == 0xfffffffe) {
          uVar2 = FUN_00a909e0(param_3,param_4);
          *(undefined4 *)(param_1[1] + 4) = uVar2;
          return true;
        }
        *(uint *)(param_1[1] + 4) = param_2;
      }
      return true;
    }
  }
  return false;
}



undefined4 FUN_00a82870(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_00a87490(param_2);
  if (iVar1 == 0) {
    return 0xfffffffe;
  }
  uVar2 = FUN_00a82460();
  return uVar2;
}



int FUN_00a82890(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                undefined4 param_5)

{
  int iVar1;
  int iVar2;
  
  if (((param_1 == (int *)0x0) || (iVar1 = *param_1, iVar1 == 0)) &&
     (iVar1 = FUN_00a88d00(), iVar1 == 0)) {
    return 0;
  }
  iVar2 = FUN_00a826e0(iVar1,param_2);
  if ((iVar2 != 0) && (iVar2 = FUN_00a82730(iVar1,param_3,param_4,param_5), iVar2 != 0)) {
    if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
      *param_1 = iVar1;
    }
    return iVar1;
  }
  if ((param_1 == (int *)0x0) || (iVar1 != *param_1)) {
    FUN_00a88d10(iVar1);
  }
  return 0;
}



undefined4
FUN_00a82920(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_00a87dc0(param_2,0);
  if (iVar1 == 0) {
    FUN_00a7f3c0(0xb,0x83,0x77,".\\crypto\\x509\\x509name.c",0x11d);
    FUN_00a7f690(2,"name=",param_2);
    return 0;
  }
  uVar2 = FUN_00a82890(param_1,iVar1,param_3,param_4,param_5);
  FUN_00a90760(iVar1);
  return uVar2;
}



undefined4
FUN_00a82990(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_00a82920(0,param_2,param_3,param_4,param_5);
  if (iVar1 == 0) {
    return 0;
  }
  uVar2 = FUN_00a825b0(param_1,iVar1,param_6,param_7);
  FUN_00a88d10(iVar1);
  return uVar2;
}



uint FUN_00a829e0(int param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  
  piVar3 = (int *)(param_2 + 0x2c);
  uVar1 = 0x14;
  piVar4 = (int *)(param_1 + 0x2c);
  do {
    if (*piVar4 != *piVar3) {
      iVar2 = (uint)*(byte *)piVar4 - (uint)*(byte *)piVar3;
      if (((iVar2 == 0) &&
          (iVar2 = (uint)*(byte *)((int)piVar4 + 1) - (uint)*(byte *)((int)piVar3 + 1), iVar2 == 0))
         && (iVar2 = (uint)*(byte *)((int)piVar4 + 2) - (uint)*(byte *)((int)piVar3 + 2), iVar2 == 0
            )) {
        iVar2 = (uint)*(byte *)((int)piVar4 + 3) - (uint)*(byte *)((int)piVar3 + 3);
      }
      return iVar2 >> 0x1f | 1;
    }
    uVar1 = uVar1 - 4;
    piVar3 = piVar3 + 1;
    piVar4 = piVar4 + 1;
  } while (3 < uVar1);
  return 0;
}



undefined4 FUN_00a82a40(int *param_1)

{
  return *(undefined4 *)(*param_1 + 0xc);
}



undefined4 FUN_00a82a50(int *param_1)

{
  return *(undefined4 *)(*param_1 + 0x14);
}



uint FUN_00a82a60(int param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  
  FUN_00a92360(param_1,0xffffffff,0);
  FUN_00a92360(param_2,0xffffffff,0);
  uVar1 = 0x14;
  piVar3 = (int *)(param_2 + 0x50);
  piVar4 = (int *)(param_1 + 0x50);
  do {
    if (*piVar4 != *piVar3) {
      iVar2 = (uint)*(byte *)piVar4 - (uint)*(byte *)piVar3;
      if (((iVar2 == 0) &&
          (iVar2 = (uint)*(byte *)((int)piVar4 + 1) - (uint)*(byte *)((int)piVar3 + 1), iVar2 == 0))
         && (iVar2 = (uint)*(byte *)((int)piVar4 + 2) - (uint)*(byte *)((int)piVar3 + 2), iVar2 == 0
            )) {
        iVar2 = (uint)*(byte *)((int)piVar4 + 3) - (uint)*(byte *)((int)piVar3 + 3);
      }
      return iVar2 >> 0x1f | 1;
    }
    uVar1 = uVar1 - 4;
    piVar3 = piVar3 + 1;
    piVar4 = piVar4 + 1;
  } while (3 < uVar1);
  return 0;
}



uint FUN_00a82ae0(int param_1,int param_2)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  int *piVar4;
  int *piVar5;
  
  if (((*(int *)(param_1 + 0xc) == 0) || (*(int *)(param_1 + 4) != 0)) &&
     (iVar1 = FUN_00a88d90(param_1,0), iVar1 < 0)) {
    return 0xfffffffe;
  }
  if (((*(int *)(param_2 + 0xc) == 0) || (*(int *)(param_2 + 4) != 0)) &&
     (iVar1 = FUN_00a88d90(param_2,0), iVar1 < 0)) {
    return 0xfffffffe;
  }
  uVar3 = *(uint *)(param_1 + 0x10);
  uVar2 = uVar3 - *(int *)(param_2 + 0x10);
  if (uVar2 == 0) {
    piVar4 = *(int **)(param_2 + 0xc);
    piVar5 = *(int **)(param_1 + 0xc);
    for (; 3 < uVar3; uVar3 = uVar3 - 4) {
      if (*piVar5 != *piVar4) goto LAB_00a82b5c;
      piVar4 = piVar4 + 1;
      piVar5 = piVar5 + 1;
    }
    if (uVar3 != 0) {
LAB_00a82b5c:
      iVar1 = (uint)*(byte *)piVar5 - (uint)*(byte *)piVar4;
      if (iVar1 != 0) goto LAB_00a82b97;
      if (1 < uVar3) {
        iVar1 = (uint)*(byte *)((int)piVar5 + 1) - (uint)*(byte *)((int)piVar4 + 1);
        if (iVar1 != 0) goto LAB_00a82b97;
        if (2 < uVar3) {
          iVar1 = (uint)*(byte *)((int)piVar5 + 2) - (uint)*(byte *)((int)piVar4 + 2);
          if (iVar1 != 0) {
LAB_00a82b97:
            return iVar1 >> 0x1f | 1;
          }
          if (3 < uVar3) {
            iVar1 = (uint)*(byte *)((int)piVar5 + 3) - (uint)*(byte *)((int)piVar4 + 3);
            goto LAB_00a82b97;
          }
        }
      }
    }
    uVar2 = 0;
  }
  return uVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a82bb0(int param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined local_18 [20];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_18;
  FUN_00a88d90(param_1,0);
  uVar1 = FUN_00a924c0(0);
  iVar2 = FUN_00a91830(*(undefined4 *)(param_1 + 0xc),*(undefined4 *)(param_1 + 0x10),local_18,0,
                       uVar1);
  if (iVar2 == 0) {
    ___security_check_cookie_4();
    return;
  }
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00a82c40(int *param_1)

{
  undefined4 uVar1;
  
  if ((param_1 != (int *)0x0) && (*param_1 != 0)) {
    uVar1 = FUN_00a88ae0();
    return uVar1;
  }
  return 0;
}



bool FUN_00a82c60(int *param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  if ((param_1 == (int *)0x0) || (*param_1 == 0)) {
    iVar1 = 0;
LAB_00a82cb0:
    iVar2 = -2;
LAB_00a82cb5:
    uVar4 = 0x150;
    uVar3 = 0x75;
  }
  else {
    iVar1 = FUN_00a88ae0(*(undefined4 *)(*param_1 + 0x18));
    if (iVar1 == 0) goto LAB_00a82cb0;
    iVar2 = FUN_00a813d0(iVar1,param_2);
    if (iVar2 == -2) goto LAB_00a82cb5;
    if (iVar2 == -1) {
      uVar4 = 0x14d;
      uVar3 = 0x73;
    }
    else {
      if (iVar2 != 0) goto LAB_00a82cd0;
      uVar4 = 0x14a;
      uVar3 = 0x74;
    }
  }
  FUN_00a7f3c0(0xb,0x80,uVar3,".\\crypto\\x509\\x509_cmp.c",uVar4);
LAB_00a82cd0:
  if (iVar1 != 0) {
    FUN_00a816d0(iVar1);
  }
  return 0 < iVar2;
}



void FUN_00a82d00(void)

{
  FUN_00a82ae0();
  return;
}



void FUN_00a82d20(void)

{
  FUN_00a82ae0();
  return;
}



undefined * FUN_00a82d40(void)

{
  return &DAT_03242a14;
}



int FUN_00a82d50(char *param_1,int param_2)

{
  char cVar1;
  int *piVar2;
  char *pcVar3;
  int iVar4;
  
  if (param_1 == (char *)0x0) {
    FUN_00a7f3c0(0x20,0x7e,0x73,".\\crypto\\bio\\bss_mem.c",100);
    return 0;
  }
  if (param_2 < 0) {
    pcVar3 = param_1;
    do {
      cVar1 = *pcVar3;
      pcVar3 = pcVar3 + 1;
    } while (cVar1 != '\0');
    param_2 = (int)pcVar3 - (int)(param_1 + 1);
  }
  iVar4 = FUN_00a838c0(&DAT_03242a14);
  if (iVar4 == 0) {
    return 0;
  }
  piVar2 = *(int **)(iVar4 + 0x20);
  *piVar2 = param_2;
  piVar2[2] = param_2;
  piVar2[1] = (int)param_1;
  *(uint *)(iVar4 + 0x14) = *(uint *)(iVar4 + 0x14) | 0x200;
  *(undefined4 *)(iVar4 + 0x1c) = 0;
  return iVar4;
}



undefined4 FUN_00a82df0(int param_1)

{
  int iVar1;
  
  if (param_1 == 0) {
    return 0;
  }
  if (((*(int *)(param_1 + 0x10) != 0) && (*(int *)(param_1 + 0xc) != 0)) &&
     (iVar1 = *(int *)(param_1 + 0x20), iVar1 != 0)) {
    if ((*(uint *)(param_1 + 0x14) & 0x200) != 0) {
      *(undefined4 *)(iVar1 + 4) = 0;
    }
    FUN_00a92a20(iVar1);
    *(undefined4 *)(param_1 + 0x20) = 0;
  }
  return 1;
}



size_t FUN_00a82e40(int param_1,void *param_2,uint param_3)

{
  uint *puVar1;
  size_t sVar2;
  uint _Size;
  
  puVar1 = *(uint **)(param_1 + 0x20);
  FUN_00a832f0(param_1,0xf);
  if (((int)param_3 < 0) || (_Size = *puVar1, param_3 <= *puVar1)) {
    _Size = param_3;
  }
  if ((param_2 == (void *)0x0) || ((int)_Size < 1)) {
    if (*puVar1 == 0) {
      sVar2 = *(size_t *)(param_1 + 0x1c);
      if (sVar2 != 0) {
        FUN_00a83310(param_1,9);
      }
      return sVar2;
    }
  }
  else {
    _memcpy(param_2,(void *)puVar1[1],_Size);
    *puVar1 = *puVar1 - _Size;
    if ((*(uint *)(param_1 + 0x14) & 0x200) == 0) {
      _memmove((void *)puVar1[1],(void *)((int)(void *)puVar1[1] + _Size),*puVar1);
      return _Size;
    }
    puVar1[1] = puVar1[1] + _Size;
  }
  return _Size;
}



size_t FUN_00a82ed0(int param_1,void *param_2,size_t param_3)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  
  piVar2 = *(int **)(param_1 + 0x20);
  if (param_2 == (void *)0x0) {
    FUN_00a7f3c0(0x20,0x75,0x73,".\\crypto\\bio\\bss_mem.c",0xb2);
    return 0xffffffff;
  }
  if ((*(uint *)(param_1 + 0x14) & 0x200) != 0) {
    FUN_00a7f3c0(0x20,0x75,0x7e,".\\crypto\\bio\\bss_mem.c",0xb7);
    return 0xffffffff;
  }
  FUN_00a832f0(param_1,0xf);
  iVar3 = *piVar2;
  iVar1 = iVar3 + param_3;
  iVar4 = FUN_00a92b40(piVar2,iVar1);
  if (iVar4 == iVar1) {
    _memcpy((void *)(piVar2[1] + iVar3),param_2,param_3);
    return param_3;
  }
  return 0xffffffff;
}



void FUN_00a831c0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00a92c40(FUN_00a81280,"CERTIFICATE",param_1,param_2,param_3,param_4);
  return;
}



undefined4 FUN_00a831f0(int *param_1,int param_2)

{
  int iVar1;
  
  *param_1 = param_2;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 1;
  param_1[5] = 0;
  param_1[6] = 0;
  param_1[7] = 0;
  param_1[8] = 0;
  param_1[10] = 0;
  param_1[9] = 0;
  param_1[0xb] = 1;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  FUN_00a80700(0,param_1,param_1 + 0xe);
  if (*(code **)(param_2 + 0x1c) != (code *)0x0) {
    iVar1 = (**(code **)(param_2 + 0x1c))(param_1);
    if (iVar1 == 0) {
      FUN_00a80760(0,param_1,param_1 + 0xe);
      return 0;
    }
  }
  return 1;
}



int FUN_00a83270(int *param_1)

{
  code *pcVar1;
  int iVar2;
  
  if (param_1 == (int *)0x0) {
    return 0;
  }
  iVar2 = FUN_00a7fe40(param_1 + 0xb,0xffffffff,0x15,".\\crypto\\bio\\bio_lib.c",0x75);
  if (iVar2 < 1) {
    if (((code *)param_1[1] != (code *)0x0) &&
       (iVar2 = (*(code *)param_1[1])(param_1,1,0,0,0,1), iVar2 < 1)) {
      return iVar2;
    }
    FUN_00a80760(0,param_1,param_1 + 0xe);
    if ((*param_1 != 0) && (pcVar1 = *(code **)(*param_1 + 0x20), pcVar1 != (code *)0x0)) {
      (*pcVar1)(param_1);
      FUN_00a85120(param_1);
    }
  }
  return 1;
}



void FUN_00a832f0(int param_1,uint param_2)

{
  *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) & ~param_2;
  return;
}



uint FUN_00a83300(int param_1,uint param_2)

{
  return *(uint *)(param_1 + 0x14) & param_2;
}



void FUN_00a83310(int param_1,uint param_2)

{
  *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | param_2;
  return;
}



int FUN_00a83320(int *param_1,undefined4 param_2,undefined4 param_3)

{
  code *pcVar1;
  int iVar2;
  
  if (((param_1 == (int *)0x0) || (*param_1 == 0)) || (*(int *)(*param_1 + 0xc) == 0)) {
    FUN_00a7f3c0(0x20,0x6f,0x79,".\\crypto\\bio\\bio_lib.c",0xc5);
    return -2;
  }
  pcVar1 = (code *)param_1[1];
  if ((pcVar1 != (code *)0x0) && (iVar2 = (*pcVar1)(param_1,2,param_2,param_3,0,1), iVar2 < 1)) {
    return iVar2;
  }
  if (param_1[3] == 0) {
    FUN_00a7f3c0(0x20,0x6f,0x78,".\\crypto\\bio\\bio_lib.c",0xd0);
    iVar2 = -2;
  }
  else {
    iVar2 = (**(code **)(*param_1 + 0xc))(param_1,param_2,param_3);
    if (0 < iVar2) {
      param_1[0xc] = param_1[0xc] + iVar2;
    }
    if (pcVar1 != (code *)0x0) {
      iVar2 = (*pcVar1)(param_1,0x82,param_2,param_3,0,iVar2);
      return iVar2;
    }
  }
  return iVar2;
}



int FUN_00a833e0(int *param_1,undefined4 param_2,undefined4 param_3)

{
  code *pcVar1;
  int iVar2;
  
  if (param_1 == (int *)0x0) {
    return 0;
  }
  pcVar1 = (code *)param_1[1];
  if ((*param_1 != 0) && (*(int *)(*param_1 + 8) != 0)) {
    if ((pcVar1 != (code *)0x0) && (iVar2 = (*pcVar1)(param_1,3,param_2,param_3,0,1), iVar2 < 1)) {
      return iVar2;
    }
    if (param_1[3] == 0) {
      FUN_00a7f3c0(0x20,0x71,0x78,".\\crypto\\bio\\bio_lib.c",0xf3);
      iVar2 = -2;
    }
    else {
      iVar2 = (**(code **)(*param_1 + 8))(param_1,param_2,param_3);
      if (0 < iVar2) {
        param_1[0xd] = param_1[0xd] + iVar2;
      }
      if (pcVar1 != (code *)0x0) {
        iVar2 = (*pcVar1)(param_1,0x83,param_2,param_3,0,iVar2);
        return iVar2;
      }
    }
    return iVar2;
  }
  FUN_00a7f3c0(0x20,0x71,0x79,".\\crypto\\bio\\bio_lib.c",0xe9);
  return -2;
}



int FUN_00a834a0(int *param_1,undefined4 param_2)

{
  code *pcVar1;
  int iVar2;
  
  if (((param_1 == (int *)0x0) || (*param_1 == 0)) || (*(int *)(*param_1 + 0x10) == 0)) {
    FUN_00a7f3c0(0x20,0x6e,0x79,".\\crypto\\bio\\bio_lib.c",0x108);
    return -2;
  }
  pcVar1 = (code *)param_1[1];
  if ((pcVar1 != (code *)0x0) && (iVar2 = (*pcVar1)(param_1,4,param_2,0,0,1), iVar2 < 1)) {
    return iVar2;
  }
  if (param_1[3] == 0) {
    FUN_00a7f3c0(0x20,0x6e,0x78,".\\crypto\\bio\\bio_lib.c",0x114);
    iVar2 = -2;
  }
  else {
    iVar2 = (**(code **)(*param_1 + 0x10))(param_1,param_2);
    if (0 < iVar2) {
      param_1[0xd] = param_1[0xd] + iVar2;
    }
    if (pcVar1 != (code *)0x0) {
      iVar2 = (*pcVar1)(param_1,0x84,param_2,0,0,iVar2);
      return iVar2;
    }
  }
  return iVar2;
}



int FUN_00a83550(int *param_1,undefined4 param_2,undefined4 param_3)

{
  code *pcVar1;
  int iVar2;
  
  if (((param_1 != (int *)0x0) && (*param_1 != 0)) && (*(int *)(*param_1 + 0x14) != 0)) {
    pcVar1 = (code *)param_1[1];
    if ((pcVar1 != (code *)0x0) && (iVar2 = (*pcVar1)(param_1,5,param_2,param_3,0,1), iVar2 < 1)) {
      return iVar2;
    }
    if (param_1[3] == 0) {
      FUN_00a7f3c0(0x20,0x68,0x78,".\\crypto\\bio\\bio_lib.c",0x135);
      iVar2 = -2;
    }
    else {
      iVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,param_3);
      if (pcVar1 != (code *)0x0) {
        iVar2 = (*pcVar1)(param_1,0x85,param_2,param_3,0,iVar2);
        return iVar2;
      }
    }
    return iVar2;
  }
  FUN_00a7f3c0(0x20,0x68,0x79,".\\crypto\\bio\\bio_lib.c",0x129);
  return -2;
}



undefined4 FUN_00a83600(undefined4 param_1,int param_2,int param_3)

{
  int iVar1;
  
  if (param_2 < 0) {
    param_2 = 0;
  }
  if (param_3 < param_2) {
    param_2 = param_3;
  }
  do {
    if (param_2 == 0) {
      return 1;
    }
    param_2 = param_2 + -1;
    iVar1 = FUN_00a834a0(param_1,&DAT_026b6df4);
  } while (iVar1 == 1);
  return 0;
}



int FUN_00a83650(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  code *pcVar1;
  int iVar2;
  
  if (param_1 == (int *)0x0) {
    return 0;
  }
  if ((*param_1 != 0) && (*(int *)(*param_1 + 0x18) != 0)) {
    pcVar1 = (code *)param_1[1];
    if ((pcVar1 != (code *)0x0) &&
       (iVar2 = (*pcVar1)(param_1,6,param_4,param_2,param_3,1), iVar2 < 1)) {
      return iVar2;
    }
    iVar2 = (**(code **)(*param_1 + 0x18))(param_1,param_2,param_3,param_4);
    if (pcVar1 != (code *)0x0) {
      iVar2 = (*pcVar1)(param_1,0x86,param_4,param_2,param_3,iVar2);
    }
    return iVar2;
  }
  FUN_00a7f3c0(0x20,0x67,0x79,".\\crypto\\bio\\bio_lib.c",0x168);
  return -2;
}



int FUN_00a83770(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  if (param_1 == 0) {
    return param_2;
  }
  iVar2 = *(int *)(param_1 + 0x24);
  iVar1 = param_1;
  while (iVar2 != 0) {
    iVar1 = *(int *)(iVar1 + 0x24);
    iVar2 = *(int *)(iVar1 + 0x24);
  }
  *(int *)(iVar1 + 0x24) = param_2;
  if (param_2 != 0) {
    *(int *)(param_2 + 0x28) = iVar1;
  }
  FUN_00a83650(param_1,6,0,iVar1);
  return param_1;
}



undefined4 FUN_00a837c0(int param_1)

{
  undefined4 uVar1;
  
  if (param_1 == 0) {
    return 0;
  }
  uVar1 = *(undefined4 *)(param_1 + 0x24);
  FUN_00a83650(param_1,7,0,param_1);
  if (*(int *)(param_1 + 0x28) != 0) {
    *(undefined4 *)(*(int *)(param_1 + 0x28) + 0x24) = *(undefined4 *)(param_1 + 0x24);
  }
  if (*(int *)(param_1 + 0x24) != 0) {
    *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x28) = *(undefined4 *)(param_1 + 0x28);
  }
  *(undefined4 *)(param_1 + 0x24) = 0;
  *(undefined4 *)(param_1 + 0x28) = 0;
  return uVar1;
}



undefined4 FUN_00a83810(int param_1)

{
  return *(undefined4 *)(param_1 + 0x18);
}



void FUN_00a83820(uint **param_1,uint param_2)

{
  uint uVar1;
  
  if (param_1 == (uint **)0x0) {
    return;
  }
  do {
    if (*param_1 != (uint *)0x0) {
      uVar1 = **param_1;
      if ((param_2 & 0xff) == 0) {
        if ((param_2 & uVar1) != 0) {
          return;
        }
      }
      else if (uVar1 == param_2) {
        return;
      }
    }
    param_1 = (uint **)param_1[9];
  } while (param_1 != (uint **)0x0);
  return;
}



int FUN_00a83860(int param_1)

{
  if (param_1 == 0) {
    return param_1;
  }
  return *(int *)(param_1 + 0x24);
}



void FUN_00a83870(int param_1)

{
  int iVar1;
  int iVar2;
  
  if (param_1 != 0) {
    do {
      iVar1 = *(int *)(param_1 + 0x2c);
      iVar2 = *(int *)(param_1 + 0x24);
      FUN_00a83270(param_1);
      if (1 < iVar1) {
        return;
      }
      param_1 = iVar2;
    } while (iVar2 != 0);
  }
  return;
}



void FUN_00a838a0(int param_1)

{
  *(uint *)(param_1 + 0x14) =
       *(uint *)(param_1 + 0x14) | *(uint *)(*(int *)(param_1 + 0x24) + 0x14) & 0xf;
  *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(*(int *)(param_1 + 0x24) + 0x18);
  return;
}



int FUN_00a838c0(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_00a84f80(0x40,".\\crypto\\bio\\bio_lib.c",0x46);
  if (iVar1 == 0) {
    FUN_00a7f3c0(0x20,0x6c,0x41,".\\crypto\\bio\\bio_lib.c",0x49);
    return 0;
  }
  iVar2 = FUN_00a831f0(iVar1,param_1);
  if (iVar2 == 0) {
    FUN_00a85120(iVar1);
    iVar1 = 0;
  }
  return iVar1;
}



void FUN_00a83920(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00a83650(param_1,param_2,param_3,&param_4);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a83950(undefined4 param_1,int *param_2,code *param_3,undefined4 param_4)

{
  byte bVar1;
  int *piVar2;
  int iVar3;
  byte *pbVar4;
  int iVar5;
  undefined4 *puVar6;
  char *pcVar7;
  bool bVar8;
  int local_41c;
  undefined4 local_418;
  undefined4 local_414;
  byte *local_410;
  undefined4 local_40c;
  int *local_408;
  undefined local_404 [1024];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_41c;
  local_408 = param_2;
  local_410 = (byte *)0x0;
  local_40c = 0;
  local_414 = 0;
  local_41c = 0;
  iVar3 = FUN_00a93d20(&local_414,&local_418,&local_410,"ANY PRIVATE KEY",param_1,param_3,param_4);
  if (iVar3 == 0) {
    ___security_check_cookie_4();
    return;
  }
  local_40c = local_414;
  pcVar7 = "PRIVATE KEY";
  pbVar4 = local_410;
  do {
    bVar1 = *pbVar4;
    bVar8 = bVar1 < (byte)*pcVar7;
    if (bVar1 != *pcVar7) {
LAB_00a83a10:
      iVar3 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
      goto LAB_00a83a15;
    }
    if (bVar1 == 0) break;
    bVar1 = pbVar4[1];
    bVar8 = bVar1 < ((byte *)pcVar7)[1];
    if (bVar1 != ((byte *)pcVar7)[1]) goto LAB_00a83a10;
    pbVar4 = pbVar4 + 2;
    pcVar7 = (char *)((byte *)pcVar7 + 2);
  } while (bVar1 != 0);
  iVar3 = 0;
LAB_00a83a15:
  if (iVar3 == 0) {
    iVar3 = FUN_00a940b0(0,&local_40c,local_418);
    if (iVar3 != 0) {
      iVar5 = FUN_00a94200(iVar3);
      piVar2 = local_408;
      local_41c = iVar5;
      if (local_408 != (int *)0x0) {
        if (*local_408 != 0) {
          FUN_00a816d0(*local_408);
        }
        *piVar2 = iVar5;
      }
      FUN_00a940d0(iVar3);
LAB_00a83b9c:
      if (local_41c != 0) goto LAB_00a83bba;
    }
  }
  else {
    pcVar7 = "ENCRYPTED PRIVATE KEY";
    pbVar4 = local_410;
    do {
      bVar1 = *pbVar4;
      bVar8 = bVar1 < (byte)*pcVar7;
      if (bVar1 != *pcVar7) {
LAB_00a83a93:
        iVar3 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
        goto LAB_00a83a98;
      }
      if (bVar1 == 0) break;
      bVar1 = pbVar4[1];
      bVar8 = bVar1 < ((byte *)pcVar7)[1];
      if (bVar1 != ((byte *)pcVar7)[1]) goto LAB_00a83a93;
      pbVar4 = pbVar4 + 2;
      pcVar7 = (char *)((byte *)pcVar7 + 2);
    } while (bVar1 != 0);
    iVar3 = 0;
LAB_00a83a98:
    if (iVar3 == 0) {
      iVar3 = FUN_00a94010(0,&local_40c,local_418);
      if (iVar3 != 0) {
        if (param_3 == (code *)0x0) {
          iVar5 = FUN_00a92ce0(local_404,0x400,0,param_4);
        }
        else {
          iVar5 = (*param_3)(local_404);
        }
        if (iVar5 < 1) {
          FUN_00a7f3c0(9,0x7b,0x68,".\\crypto\\pem\\pem_pkey.c",0x6d);
          FUN_00a94050(iVar3);
          goto LAB_00a83bba;
        }
        iVar5 = FUN_00a93fd0(iVar3,local_404,iVar5);
        FUN_00a94050(iVar3);
        if (iVar5 != 0) {
          iVar3 = FUN_00a94200(iVar5);
          piVar2 = local_408;
          local_41c = iVar3;
          if (local_408 != (int *)0x0) {
            if (*local_408 != 0) {
              FUN_00a816d0(*local_408);
            }
            *piVar2 = iVar3;
          }
          FUN_00a940d0(iVar5);
          goto LAB_00a83b9c;
        }
      }
    }
    else {
      iVar3 = FUN_00a93640(local_410,"PRIVATE KEY");
      if (0 < iVar3) {
        puVar6 = (undefined4 *)FUN_00a8f370(0,local_410,iVar3);
        if ((puVar6 != (undefined4 *)0x0) && (puVar6[0x17] != 0)) {
          local_41c = FUN_00a93ec0(*puVar6,local_408,&local_40c,local_418);
          goto LAB_00a83b9c;
        }
      }
    }
  }
  FUN_00a7f3c0(9,0x7b,0xd,".\\crypto\\pem\\pem_pkey.c",0x84);
LAB_00a83bba:
  FUN_00a85120(local_410);
  FUN_00a84330(local_414,local_418);
  FUN_00a85120(local_414);
  ___security_check_cookie_4();
  return;
}



void FUN_00a83c00(uint *param_1,uint *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  int unaff_EBP;
  int *piVar11;
  int *piVar12;
  uint unaff_ESI;
  uint *puVar13;
  uint uVar14;
  uint *param_12;
  uint *param_13;
  uint *param_14;
  int iStack_28;
  
  piVar11 = &DAT_00a83e80;
  do {
    uVar7 = *param_2;
    puVar13 = param_2 + 0x10;
    uVar6 = *param_1;
    uVar1 = param_1[1];
    uVar2 = param_1[2];
    uVar9 = param_1[4];
    uVar3 = param_1[5];
    uVar4 = param_1[6];
    do {
      uVar8 = (uVar9 >> 0xe | uVar9 << 0x12) ^ uVar9;
      uVar8 = (uVar8 >> 5 | uVar8 << 0x1b) ^ uVar9;
      iVar10 = (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18) +
               (uVar8 >> 6 | uVar8 << 0x1a) + ((uVar3 ^ uVar4) & uVar9 ^ uVar4) + param_1[7];
      uVar9 = (uVar6 >> 9 | uVar6 << 0x17) ^ uVar6;
      uVar8 = (uVar9 >> 0xb | uVar9 << 0x15) ^ uVar6;
      iVar5 = *piVar11;
      piVar11 = piVar11 + 1;
      uVar9 = param_1[3] + iVar10 + iVar5;
      uVar6 = ((uVar6 | uVar1) & uVar2 | uVar6 & uVar1) + iVar10 + (uVar8 >> 2 | uVar8 << 0x1e) +
              iVar5;
    } while (iVar5 != -0x3e640e8c);
    do {
      piVar12 = piVar11;
      uVar8 = uVar9;
      uVar7 = uVar6;
      uVar9 = (unaff_ESI >> 0xb | unaff_ESI << 0x15) ^ unaff_ESI;
      uVar14 = ((uint)puVar13 >> 2 | (int)param_2 << 0x1e) ^ (uint)puVar13;
      uVar6 = (uVar8 >> 0xe | uVar8 << 0x12) ^ uVar8;
      uVar6 = (uVar6 >> 5 | uVar6 << 0x1b) ^ uVar8;
      iVar10 = (unaff_ESI >> 3 ^ (uVar9 >> 7 | uVar9 << 0x19)) + unaff_EBP + iStack_28 +
               ((uVar14 >> 0x11 | uVar14 << 0xf) ^ (uint)puVar13 >> 10) +
               (uVar6 >> 6 | uVar6 << 0x1a) + ((uVar3 ^ uVar4) & uVar8 ^ uVar4) + param_1[7];
      uVar6 = (uVar7 >> 9 | uVar7 << 0x17) ^ uVar7;
      uVar6 = (uVar6 >> 0xb | uVar6 << 0x15) ^ uVar7;
      iVar5 = *piVar12;
      uVar9 = param_1[3] + iVar10 + iVar5;
      uVar6 = ((uVar7 | uVar1) & uVar2 | uVar7 & uVar1) + iVar10 + (uVar6 >> 2 | uVar6 << 0x1e) +
              iVar5;
      piVar11 = piVar12 + 1;
    } while (iVar5 != -0x398e870e);
    *param_12 = uVar6 + *param_12;
    param_12[1] = uVar7 + param_12[1];
    param_12[2] = uVar1 + param_12[2];
    param_12[3] = uVar2 + param_12[3];
    param_12[4] = uVar9 + param_12[4];
    param_12[5] = uVar8 + param_12[5];
    param_12[6] = uVar3 + param_12[6];
    param_12[7] = uVar4 + param_12[7];
    piVar11 = piVar12 + -0x3f;
    param_1 = param_12;
    param_2 = param_13;
  } while (param_13 < param_14);
  return;
}



// WARNING: Removing unreachable block (ram,0x00a84106)
// WARNING: Removing unreachable block (ram,0x00a840f4)
// WARNING: Removing unreachable block (ram,0x00a840b4)
// WARNING: Removing unreachable block (ram,0x00a840a9)
// WARNING: Removing unreachable block (ram,0x00a8408e)
// WARNING: Removing unreachable block (ram,0x00a8407a)
// WARNING: Removing unreachable block (ram,0x00a84021)

undefined8 FUN_00a84000(void)

{
  uint *puVar1;
  uint *puVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  byte in_VIP;
  byte in_ID;
  uint in_XCR0;
  
  uVar8 = 0;
  uVar10 = (uint)(in_ID & 1) * 0x200000 | (uint)(in_VIP & 1) * 0x100000;
  uVar6 = 0;
  if (((uVar10 ^ (uint)(((uVar10 ^ 0x200000) & 0x200000) != 0) * 0x200000) >> 0x15 & 1) == 0)
  goto LAB_00a841aa;
  puVar1 = (uint *)cpuid_basic_info(0);
  uVar10 = (uint)((puVar1[1] != 0x756e6547 || puVar1[2] != 0x49656e69) || puVar1[3] != 0x6c65746e);
  if ((uVar10 == 0) ||
     ((puVar1[1] != 0x68747541 || puVar1[2] != 0x69746e65) || puVar1[3] != 0x444d4163)) {
LAB_00a840dc:
    uVar8 = 0xffffffff;
    if (3 < *puVar1) {
      puVar1 = (uint *)cpuid_Deterministic_Cache_Parameters_info(4);
      uVar8 = *puVar1 >> 0xe & 0xfff;
    }
    puVar5 = (undefined4 *)cpuid_Version_info(1);
    uVar7 = puVar5[3];
    uVar9 = puVar5[2] & 0xbfefffff;
    uVar6 = uVar9;
    if ((uVar10 == 0) && (uVar6 = uVar9 | 0x40000000, ((byte)((uint)*puVar5 >> 8) & 0xf) == 0xf)) {
      uVar6 = uVar9 | 0x40100000;
    }
    if ((((uVar6 >> 0x1c & 1) != 0) && (uVar9 = uVar6 & 0xefffffff, uVar6 = uVar9, uVar8 != 0)) &&
       (uVar6 = uVar9 | 0x10000000, (byte)((uint)puVar5[1] >> 0x10) < 2)) {
      uVar6 = uVar9;
    }
  }
  else {
    puVar2 = (uint *)cpuid(0x80000000);
    if (*puVar2 < 0x80000001) goto LAB_00a840dc;
    iVar3 = cpuid(0x80000001);
    uVar10 = uVar10 | *(uint *)(iVar3 + 0xc) & 0x801;
    if (*puVar2 < 0x80000008) goto LAB_00a840dc;
    iVar3 = cpuid(0x80000008);
    iVar4 = cpuid_Version_info(1);
    uVar6 = *(uint *)(iVar4 + 8);
    uVar7 = *(uint *)(iVar4 + 0xc);
    if (((uVar6 >> 0x1c & 1) != 0) &&
       ((*(uint *)(iVar4 + 4) >> 0x10 & 0xff) <= (*(uint *)(iVar3 + 0xc) & 0xff) + 1)) {
      uVar6 = uVar6 & 0xefffffff;
    }
  }
  uVar8 = uVar10 & 0x800 | uVar7 & 0xfffff7ff;
  if ((uVar7 >> 0x1b & 1) != 0) {
    if ((in_XCR0 & 6) == 6) goto LAB_00a841aa;
    if ((in_XCR0 & 6) != 2) {
      uVar8 = uVar7 & 0xfdfff7fd;
      uVar6 = uVar6 & 0xfeffffff;
    }
  }
  uVar8 = uVar8 & 0xefffe7ff;
LAB_00a841aa:
  return CONCAT44(uVar8,uVar6);
}



void FUN_00a84330(undefined4 *param_1,uint param_2)

{
  if (param_2 < 7) {
    if (param_2 == 0) {
      return;
    }
  }
  else {
    for (; ((uint)param_1 & 3) != 0; param_1 = (undefined4 *)((int)param_1 + 1)) {
      *(undefined *)param_1 = 0;
      param_2 = param_2 - 1;
    }
    do {
      *param_1 = 0;
      param_2 = param_2 - 4;
      param_1 = param_1 + 1;
    } while ((param_2 & 0xfffffffc) != 0);
    if (param_2 == 0) {
      return;
    }
  }
  do {
    *(undefined *)param_1 = 0;
    param_2 = param_2 - 1;
    param_1 = (undefined4 *)((int)param_1 + 1);
  } while (param_2 != 0);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00a843c0(undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_8 [4];
  undefined4 uStack_4;
  
  uVar1 = DAT_032ed488;
  uStack_4 = 0xa843ca;
  FUN_00a7fdc0(9,0x14,".\\crypto\\mem_dbg.c",0xdc);
  switch(param_1) {
  case 0:
    DAT_032ed488 = 0;
    DAT_032ed49c = 0;
    break;
  case 1:
    DAT_032ed488 = 3;
    DAT_032ed49c = 0;
    break;
  case 2:
    if ((((DAT_032ed488 & 1) != 0) && (DAT_032ed49c != 0)) &&
       (DAT_032ed49c = DAT_032ed49c + -1, DAT_032ed49c == 0)) {
      DAT_032ed488 = DAT_032ed488 | 2;
      FUN_00a7fdc0(10,0x1b,".\\crypto\\mem_dbg.c",0x111);
    }
    break;
  case 3:
    if ((DAT_032ed488 & 1) != 0) {
      FUN_00a7f970(local_8);
      if ((DAT_032ed49c == 0) || (iVar2 = FUN_00a7f9b0(&DAT_032ed480,local_8), iVar2 != 0)) {
        FUN_00a7fdc0(10,0x14,".\\crypto\\mem_dbg.c",0xfa);
        FUN_00a7fdc0(9,0x1b,".\\crypto\\mem_dbg.c",0x100);
        FUN_00a7fdc0(9,0x14,".\\crypto\\mem_dbg.c",0x101);
        DAT_032ed488 = DAT_032ed488 & 0xfffffffd;
        FUN_00a7fa10(&DAT_032ed480,local_8);
      }
      DAT_032ed49c = DAT_032ed49c + 1;
    }
  }
  FUN_00a7fdc0(10,0x14,".\\crypto\\mem_dbg.c",0x11a);
  return uVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a84520(void)

{
  int iVar1;
  undefined4 uVar2;
  undefined local_8 [4];
  undefined4 uStack_4;
  
  uStack_4 = 0xa8452a;
  if (((byte)DAT_032ed488 & 1) != 0) {
    FUN_00a7f970(local_8);
    FUN_00a7fdc0(5,0x14,".\\crypto\\mem_dbg.c",0x126);
    if ((((byte)DAT_032ed488 & 2) == 0) && (iVar1 = FUN_00a7f9b0(&DAT_032ed480,local_8), iVar1 == 0)
       ) {
      uVar2 = 0;
    }
    else {
      uVar2 = 1;
    }
    FUN_00a7fdc0(6,0x14,".\\crypto\\mem_dbg.c",299);
    return uVar2;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a845f0(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined local_1c [24];
  undefined4 uStack_4;
  
  uStack_4 = 0xa845fa;
  iVar3 = 0;
  if (DAT_032ed494 != 0) {
    FUN_00a7f970(local_1c);
    iVar3 = FUN_00a84e60(DAT_032ed494,local_1c);
    iVar2 = DAT_032ed494;
    if (iVar3 != 0) {
      iVar1 = *(int *)(iVar3 + 0x14);
      if (iVar1 != 0) {
        *(int *)(iVar1 + 0x18) = *(int *)(iVar1 + 0x18) + 1;
        FUN_00a84dd0(iVar2,iVar1);
      }
      *(int *)(iVar3 + 0x18) = *(int *)(iVar3 + 0x18) + -1;
      if (*(int *)(iVar3 + 0x18) < 1) {
        *(undefined4 *)(iVar3 + 0x14) = 0;
        if (iVar1 != 0) {
          *(int *)(iVar1 + 0x18) = *(int *)(iVar1 + 0x18) + -1;
        }
        FUN_00a85120(iVar3);
      }
    }
  }
  return iVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a84670(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  undefined local_8 [4];
  undefined4 uStack_4;
  
  uStack_4 = 0xa8467a;
  iVar1 = FUN_00a84520();
  if (iVar1 != 0) {
    FUN_00a7fdc0(9,0x14,".\\crypto\\mem_dbg.c",0xdc);
    if ((DAT_032ed488 & 1) != 0) {
      FUN_00a7f970(local_8);
      if ((DAT_032ed49c == 0) || (iVar1 = FUN_00a7f9b0(&DAT_032ed480,local_8), iVar1 != 0)) {
        FUN_00a7fdc0(10,0x14,".\\crypto\\mem_dbg.c",0xfa);
        FUN_00a7fdc0(9,0x1b,".\\crypto\\mem_dbg.c",0x100);
        FUN_00a7fdc0(9,0x14,".\\crypto\\mem_dbg.c",0x101);
        DAT_032ed488 = DAT_032ed488 & 0xfffffffd;
        FUN_00a7fa10(&DAT_032ed480,local_8);
      }
      DAT_032ed49c = DAT_032ed49c + 1;
    }
    FUN_00a7fdc0(10,0x14,".\\crypto\\mem_dbg.c",0x11a);
    iVar1 = FUN_00a84f80(0x1c,".\\crypto\\mem_dbg.c",0x196);
    if (iVar1 != 0) {
      if ((DAT_032ed494 == 0) &&
         (DAT_032ed494 = FUN_00a84d00(&LAB_00a845b0,&LAB_00a845a0), DAT_032ed494 == 0)) {
        FUN_00a85120(iVar1);
      }
      else {
        FUN_00a7f970(iVar1);
        *(undefined4 *)(iVar1 + 8) = param_2;
        iVar2 = DAT_032ed494;
        *(undefined4 *)(iVar1 + 0xc) = param_3;
        *(undefined4 *)(iVar1 + 0x10) = param_1;
        *(undefined4 *)(iVar1 + 0x18) = 1;
        *(undefined4 *)(iVar1 + 0x14) = 0;
        iVar2 = FUN_00a84dd0(iVar2,iVar1);
        if (iVar2 != 0) {
          *(int *)(iVar1 + 0x14) = iVar2;
        }
      }
    }
    FUN_00a7fdc0(9,0x14,".\\crypto\\mem_dbg.c",0xdc);
    if ((((DAT_032ed488 & 1) != 0) && (DAT_032ed49c != 0)) &&
       (DAT_032ed49c = DAT_032ed49c + -1, DAT_032ed49c == 0)) {
      DAT_032ed488 = DAT_032ed488 | 2;
      FUN_00a7fdc0(10,0x1b,".\\crypto\\mem_dbg.c",0x111);
    }
    FUN_00a7fdc0(10,0x14,".\\crypto\\mem_dbg.c",0x11a);
    return 0;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

bool FUN_00a84840(void)

{
  int iVar1;
  undefined local_8 [4];
  undefined4 uStack_4;
  
  uStack_4 = 0xa8484a;
  iVar1 = FUN_00a84520();
  if (iVar1 != 0) {
    FUN_00a7fdc0(9,0x14,".\\crypto\\mem_dbg.c",0xdc);
    if ((DAT_032ed488 & 1) != 0) {
      FUN_00a7f970(local_8);
      if ((DAT_032ed49c == 0) || (iVar1 = FUN_00a7f9b0(&DAT_032ed480,local_8), iVar1 != 0)) {
        FUN_00a7fdc0(10,0x14,".\\crypto\\mem_dbg.c",0xfa);
        FUN_00a7fdc0(9,0x1b,".\\crypto\\mem_dbg.c",0x100);
        FUN_00a7fdc0(9,0x14,".\\crypto\\mem_dbg.c",0x101);
        DAT_032ed488 = DAT_032ed488 & 0xfffffffd;
        FUN_00a7fa10(&DAT_032ed480,local_8);
      }
      DAT_032ed49c = DAT_032ed49c + 1;
    }
    FUN_00a7fdc0(10,0x14,".\\crypto\\mem_dbg.c",0x11a);
    iVar1 = FUN_00a845f0();
    FUN_00a7fdc0(9,0x14,".\\crypto\\mem_dbg.c",0xdc);
    if ((((DAT_032ed488 & 1) != 0) && (DAT_032ed49c != 0)) &&
       (DAT_032ed49c = DAT_032ed49c + -1, DAT_032ed49c == 0)) {
      DAT_032ed488 = DAT_032ed488 | 2;
      FUN_00a7fdc0(10,0x1b,".\\crypto\\mem_dbg.c",0x111);
    }
    FUN_00a7fdc0(10,0x14,".\\crypto\\mem_dbg.c",0x11a);
    return iVar1 != 0;
  }
  return false;
}



void FUN_00a84990(int *param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  
  if (param_1 != (int *)0x0) {
    uVar3 = 0;
    if (param_1[3] != 0) {
      do {
        iVar2 = *(int *)(*param_1 + uVar3 * 4);
        while (iVar2 != 0) {
          iVar1 = *(int *)(iVar2 + 4);
          FUN_00a85120(iVar2);
          iVar2 = iVar1;
        }
        uVar3 = uVar3 + 1;
      } while (uVar3 < (uint)param_1[3]);
    }
    FUN_00a85120(*param_1);
    FUN_00a85120(param_1);
  }
  return;
}



void FUN_00a849e0(int *param_1,code *param_2,code *param_3,undefined4 param_4)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int unaff_EBX;
  
  if (param_1 != (int *)0x0) {
    iVar1 = param_1[3];
    while (iVar1 = iVar1 + -1, -1 < iVar1) {
      puVar3 = *(undefined4 **)(*param_1 + iVar1 * 4);
      while (puVar3 != (undefined4 *)0x0) {
        puVar2 = (undefined4 *)puVar3[1];
        if (unaff_EBX == 0) {
          (*param_2)(*puVar3);
          puVar3 = puVar2;
        }
        else {
          (*param_3)(*puVar3,param_4);
          puVar3 = puVar2;
        }
      }
    }
  }
  return;
}



void FUN_00a84a40(int *param_1,code *param_2)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  
  if (param_1 != (int *)0x0) {
    iVar1 = param_1[3];
    while (iVar1 = iVar1 + -1, -1 < iVar1) {
      puVar2 = *(undefined4 **)(*param_1 + iVar1 * 4);
      while (puVar2 != (undefined4 *)0x0) {
        uVar3 = *puVar2;
        puVar2 = (undefined4 *)puVar2[1];
        (*param_2)(uVar3);
      }
    }
  }
  return;
}



void FUN_00a84a80(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a849e0(param_1,0,param_2,param_3);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00a84ab0(void)

{
  uint *puVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  uint *unaff_ESI;
  uint *puVar7;
  undefined4 *puVar8;
  
  uVar2 = unaff_ESI[5];
  unaff_ESI[3] = unaff_ESI[3] + 1;
  unaff_ESI[10] = unaff_ESI[10] + 1;
  unaff_ESI[5] = uVar2 + 1;
  uVar4 = *unaff_ESI;
  puVar1 = (uint *)(uVar4 + (unaff_ESI[6] + uVar2) * 4);
  puVar7 = (uint *)(uVar4 + uVar2 * 4);
  *puVar1 = 0;
  uVar3 = unaff_ESI[4];
  uVar5 = *puVar7;
  while (uVar5 != 0) {
    uVar4 = *(uint *)(uVar5 + 8) / uVar3;
    if (*(uint *)(uVar5 + 8) % uVar3 == uVar2) {
      puVar7 = (uint *)(*puVar7 + 4);
    }
    else {
      *puVar7 = *(uint *)(*puVar7 + 4);
      uVar4 = *puVar1;
      *(uint *)(uVar5 + 4) = uVar4;
      *puVar1 = uVar5;
    }
    uVar5 = *puVar7;
  }
  if (unaff_ESI[6] <= unaff_ESI[5]) {
    uVar2 = unaff_ESI[4] * 2;
    uVar5 = FUN_00a84ff0(*unaff_ESI,unaff_ESI[4] * 8,".\\crypto\\lhash\\lhash.c",0x15b);
    if (uVar5 == 0) {
      unaff_ESI[0x17] = unaff_ESI[0x17] + 1;
      unaff_ESI[5] = 0;
      return 0;
    }
    uVar3 = unaff_ESI[4];
    uVar4 = uVar3;
    if (uVar3 < uVar2) {
      uVar4 = 0;
      puVar8 = (undefined4 *)(uVar5 + uVar3 * 4);
      for (iVar6 = uVar2 - uVar3; iVar6 != 0; iVar6 = iVar6 + -1) {
        *puVar8 = 0;
        puVar8 = puVar8 + 1;
      }
    }
    unaff_ESI[0xb] = unaff_ESI[0xb] + 1;
    unaff_ESI[6] = unaff_ESI[4];
    unaff_ESI[4] = uVar2;
    *unaff_ESI = uVar5;
    unaff_ESI[5] = 0;
  }
  return uVar4;
}



void FUN_00a84b90(void)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int *unaff_ESI;
  
  puVar1 = (undefined4 *)(*unaff_ESI + -4 + (unaff_ESI[5] + unaff_ESI[6]) * 4);
  uVar2 = *puVar1;
  *puVar1 = 0;
  if (unaff_ESI[5] == 0) {
    iVar4 = FUN_00a84ff0(*unaff_ESI,unaff_ESI[6] * 4,".\\crypto\\lhash\\lhash.c",0x177);
    if (iVar4 == 0) {
      unaff_ESI[0x17] = unaff_ESI[0x17] + 1;
      return;
    }
    unaff_ESI[6] = (uint)unaff_ESI[6] >> 1;
    unaff_ESI[0xd] = unaff_ESI[0xd] + 1;
    unaff_ESI[4] = (uint)unaff_ESI[4] >> 1;
    unaff_ESI[5] = unaff_ESI[6] + -1;
    *unaff_ESI = iVar4;
  }
  else {
    unaff_ESI[5] = unaff_ESI[5] + -1;
  }
  unaff_ESI[3] = unaff_ESI[3] + -1;
  unaff_ESI[0xc] = unaff_ESI[0xc] + 1;
  iVar4 = *(int *)(*unaff_ESI + unaff_ESI[5] * 4);
  if (iVar4 == 0) {
    *(undefined4 *)(*unaff_ESI + unaff_ESI[5] * 4) = uVar2;
    return;
  }
  iVar3 = *(int *)(iVar4 + 4);
  while (iVar3 != 0) {
    iVar4 = *(int *)(iVar4 + 4);
    iVar3 = *(int *)(iVar4 + 4);
  }
  *(undefined4 *)(iVar4 + 4) = uVar2;
  return;
}



undefined4 * FUN_00a84c20(undefined4 param_1,uint *param_2)

{
  undefined4 *puVar1;
  code *pcVar2;
  undefined4 *puVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int *unaff_ESI;
  
  uVar4 = (*(code *)unaff_ESI[2])(param_1);
  unaff_ESI[0xe] = unaff_ESI[0xe] + 1;
  *param_2 = uVar4;
  uVar6 = uVar4 % (uint)unaff_ESI[6];
  if (uVar6 < (uint)unaff_ESI[5]) {
    uVar6 = uVar4 % (uint)unaff_ESI[4];
  }
  pcVar2 = (code *)unaff_ESI[1];
  puVar3 = *(undefined4 **)(*unaff_ESI + uVar6 * 4);
  puVar1 = (undefined4 *)(*unaff_ESI + uVar6 * 4);
  do {
    if (puVar3 == (undefined4 *)0x0) {
      return puVar1;
    }
    unaff_ESI[0x16] = unaff_ESI[0x16] + 1;
    if (puVar3[2] == uVar4) {
      unaff_ESI[0xf] = unaff_ESI[0xf] + 1;
      iVar5 = (*pcVar2)(*puVar3,param_1);
      if (iVar5 == 0) {
        return puVar1;
      }
    }
    puVar1 = puVar3 + 1;
    puVar3 = (undefined4 *)*puVar1;
  } while( true );
}



uint FUN_00a84ca0(byte *param_1)

{
  byte bVar1;
  uint uVar2;
  byte bVar3;
  uint uVar4;
  uint uVar5;
  
  uVar4 = 0;
  if ((param_1 != (byte *)0x0) && (bVar1 = *param_1, bVar1 != 0)) {
    uVar5 = 0x100;
    do {
      uVar2 = (int)(char)bVar1 | uVar5;
      bVar3 = ((byte)(uVar2 >> 2) ^ bVar1) & 0xf;
      uVar5 = uVar5 + 0x100;
      bVar1 = param_1[1];
      param_1 = param_1 + 1;
      uVar4 = (uVar4 << bVar3 | uVar4 >> 0x20 - bVar3) ^ uVar2 * uVar2;
    } while (bVar1 != 0);
    return uVar4 >> 0x10 ^ uVar4;
  }
  return 0;
}



undefined4 FUN_00a84cf0(int param_1)

{
  if (param_1 != 0) {
    return *(undefined4 *)(param_1 + 0x24);
  }
  return 0;
}



int * FUN_00a84d00(code *param_1,code *param_2)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = (int *)FUN_00a84f80(0x60,".\\crypto\\lhash\\lhash.c",0x77);
  if (piVar1 != (int *)0x0) {
    iVar2 = FUN_00a84f80(0x40,".\\crypto\\lhash\\lhash.c",0x79);
    *piVar1 = iVar2;
    if (iVar2 != 0) {
      iVar2 = 0;
      do {
        *(undefined4 *)(iVar2 + *piVar1) = 0;
        iVar2 = iVar2 + 4;
      } while (iVar2 < 0x40);
      if (param_2 == (code *)0x0) {
        param_2 = _strcmp;
      }
      piVar1[1] = (int)param_2;
      if (param_1 == (code *)0x0) {
        param_1 = FUN_00a84ca0;
      }
      piVar1[2] = (int)param_1;
      piVar1[5] = 0;
      piVar1[9] = 0;
      piVar1[10] = 0;
      piVar1[0xb] = 0;
      piVar1[0xc] = 0;
      piVar1[0xd] = 0;
      piVar1[0xe] = 0;
      piVar1[0xf] = 0;
      piVar1[0x10] = 0;
      piVar1[0x11] = 0;
      piVar1[0x12] = 0;
      piVar1[0x13] = 0;
      piVar1[0x14] = 0;
      piVar1[0x15] = 0;
      piVar1[0x16] = 0;
      piVar1[0x17] = 0;
      piVar1[3] = 8;
      piVar1[6] = 8;
      piVar1[4] = 0x10;
      piVar1[7] = 0x200;
      piVar1[8] = 0x100;
      return piVar1;
    }
    FUN_00a85120(piVar1);
  }
  return (int *)0x0;
}



undefined4 FUN_00a84dd0(int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 uVar3;
  int *piVar4;
  undefined4 *puVar5;
  
  iVar2 = param_1;
  *(undefined4 *)(param_1 + 0x5c) = 0;
  if (*(uint *)(param_1 + 0x1c) <= (uint)(*(int *)(param_1 + 0x24) << 8) / *(uint *)(param_1 + 0xc))
  {
    FUN_00a84ab0();
  }
  uVar3 = param_2;
  piVar4 = (int *)FUN_00a84c20(param_2,&param_1);
  puVar5 = (undefined4 *)*piVar4;
  if (puVar5 == (undefined4 *)0x0) {
    puVar5 = (undefined4 *)FUN_00a84f80(0xc,".\\crypto\\lhash\\lhash.c",0xc1);
    if (puVar5 == (undefined4 *)0x0) {
      *(int *)(iVar2 + 0x5c) = *(int *)(iVar2 + 0x5c) + 1;
      return 0;
    }
    puVar5[2] = param_1;
    *puVar5 = uVar3;
    puVar5[1] = 0;
    *piVar4 = (int)puVar5;
    *(int *)(iVar2 + 0x40) = *(int *)(iVar2 + 0x40) + 1;
    *(int *)(iVar2 + 0x24) = *(int *)(iVar2 + 0x24) + 1;
    return 0;
  }
  uVar1 = *puVar5;
  *puVar5 = uVar3;
  *(int *)(iVar2 + 0x44) = *(int *)(iVar2 + 0x44) + 1;
  return uVar1;
}



undefined4 FUN_00a84e60(int param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  int *piVar4;
  
  iVar3 = param_1;
  *(undefined4 *)(param_1 + 0x5c) = 0;
  piVar4 = (int *)FUN_00a84c20(param_2,&param_1);
  puVar1 = (undefined4 *)*piVar4;
  if (puVar1 == (undefined4 *)0x0) {
    *(int *)(iVar3 + 0x4c) = *(int *)(iVar3 + 0x4c) + 1;
    return 0;
  }
  *piVar4 = puVar1[1];
  uVar2 = *puVar1;
  FUN_00a85120(puVar1);
  *(int *)(iVar3 + 0x24) = *(int *)(iVar3 + 0x24) + -1;
  *(int *)(iVar3 + 0x48) = *(int *)(iVar3 + 0x48) + 1;
  if ((0x10 < *(uint *)(iVar3 + 0xc)) &&
     ((uint)(*(int *)(iVar3 + 0x24) << 8) / *(uint *)(iVar3 + 0xc) <= *(uint *)(iVar3 + 0x20))) {
    FUN_00a84b90();
  }
  return uVar2;
}



undefined4 * FUN_00a84ed0(int param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  int iVar2;
  int *piVar3;
  
  iVar2 = param_1;
  *(undefined4 *)(param_1 + 0x5c) = 0;
  piVar3 = (int *)FUN_00a84c20(param_2,&param_1);
  puVar1 = (undefined4 *)*piVar3;
  if (puVar1 == (undefined4 *)0x0) {
    piVar3 = (int *)(iVar2 + 0x54);
    *piVar3 = *piVar3 + 1;
    return puVar1;
  }
  puVar1 = (undefined4 *)*puVar1;
  piVar3 = (int *)(iVar2 + 0x50);
  *piVar3 = *piVar3 + 1;
  return puVar1;
}



void FUN_00a84f00(undefined4 param_1)

{
  (*(code *)PTR__malloc_03242a44)(param_1);
  return;
}



void FUN_00a84f10(undefined4 param_1,undefined4 param_2)

{
  (*(code *)PTR__realloc_03242a4c)(param_1,param_2);
  return;
}



void FUN_00a84f40(undefined4 param_1)

{
  if (DAT_032ed4ac != (code *)0x0) {
    (*DAT_032ed4ac)(param_1,0);
  }
  (*(code *)PTR__free_03242a60)(param_1);
  if (DAT_032ed4ac != (code *)0x0) {
    (*DAT_032ed4ac)(0,1);
  }
  return;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 FUN_00a84f80(int param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  if (param_1 < 1) {
    return 0;
  }
  _DAT_03242a3c = 0;
  if (DAT_032ed4a4 != (code *)0x0) {
    _DAT_03242a40 = 0;
    (*DAT_032ed4a4)(0,param_1,param_2,param_3,0);
  }
  uVar1 = (*(code *)PTR_FUN_03242a48)(param_1,param_2,param_3);
  if (DAT_032ed4a4 != (code *)0x0) {
    (*DAT_032ed4a4)(uVar1,param_1,param_2,param_3,1);
  }
  return uVar1;
}



undefined4 FUN_00a84ff0(int param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  
  if (param_1 == 0) {
    uVar1 = FUN_00a84f80(param_2,param_3,param_4);
    return uVar1;
  }
  if (param_2 < 1) {
    return 0;
  }
  if (DAT_032ed4a8 != (code *)0x0) {
    (*DAT_032ed4a8)(param_1,0,param_2,param_3,param_4,0);
  }
  uVar1 = (*(code *)PTR_FUN_03242a50)(param_1,param_2,param_3,param_4);
  if (DAT_032ed4a8 != (code *)0x0) {
    (*DAT_032ed4a8)(param_1,uVar1,param_2,param_3,param_4,1);
  }
  return uVar1;
}



void * FUN_00a85070(void *param_1,size_t param_2,int param_3,undefined4 param_4,undefined4 param_5)

{
  void *pvVar1;
  
  if (param_1 == (void *)0x0) {
    pvVar1 = (void *)FUN_00a84f80(param_3,param_4,param_5);
    return pvVar1;
  }
  if ((0 < param_3) && ((int)param_2 <= param_3)) {
    if (DAT_032ed4a8 != (code *)0x0) {
      (*DAT_032ed4a8)(param_1,0,param_3,param_4,param_5,0);
    }
    pvVar1 = (void *)(*(code *)PTR_FUN_03242a48)(param_3,param_4,param_5);
    if (pvVar1 != (void *)0x0) {
      _memcpy(pvVar1,param_1,param_2);
      FUN_00a84330(param_1,param_2);
      (*(code *)PTR__free_03242a54)(param_1);
    }
    if (DAT_032ed4a8 != (code *)0x0) {
      (*DAT_032ed4a8)(param_1,pvVar1,param_3,param_4,param_5,1);
    }
    return pvVar1;
  }
  return (void *)0x0;
}



void FUN_00a85120(undefined4 param_1)

{
  if (DAT_032ed4ac != (code *)0x0) {
    (*DAT_032ed4ac)(param_1,0);
  }
  (*(code *)PTR__free_03242a54)(param_1);
  if (DAT_032ed4ac != (code *)0x0) {
    (*DAT_032ed4ac)(0,1);
  }
  return;
}



void * FUN_00a85160(void *param_1,size_t param_2)

{
  void *pvVar1;
  
  if (param_1 == (void *)0x0) {
    return (void *)0x0;
  }
  pvVar1 = (void *)FUN_00a84f80(param_2,".\\crypto\\buffer\\buf_str.c",0x5b);
  if (pvVar1 == (void *)0x0) {
    FUN_00a7f3c0(7,0x67,0x41,".\\crypto\\buffer\\buf_str.c",0x5e);
    return (void *)0x0;
  }
  pvVar1 = _memcpy(pvVar1,param_1,param_2);
  return pvVar1;
}



char * FUN_00a851b0(char *param_1,char *param_2,uint param_3)

{
  char *pcVar1;
  char cVar2;
  int iVar3;
  
  iVar3 = 0;
  if (1 < param_3) {
    do {
      if (*param_2 == '\0') break;
      *param_1 = *param_2;
      param_3 = param_3 - 1;
      param_1 = param_1 + 1;
      param_2 = param_2 + 1;
      iVar3 = iVar3 + 1;
    } while (1 < param_3);
  }
  if (param_3 != 0) {
    *param_1 = '\0';
  }
  pcVar1 = param_2 + 1;
  do {
    cVar2 = *param_2;
    param_2 = param_2 + 1;
  } while (cVar2 != '\0');
  return param_2 + (iVar3 - (int)pcVar1);
}



char * FUN_00a851f0(char *param_1,char *param_2,uint param_3)

{
  char *pcVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  
  iVar3 = 0;
  if (param_3 != 0) {
    do {
      if (*param_1 == '\0') break;
      param_3 = param_3 - 1;
      iVar3 = iVar3 + 1;
      param_1 = param_1 + 1;
    } while (param_3 != 0);
  }
  iVar4 = 0;
  for (; (1 < param_3 && (*param_2 != '\0')); param_2 = param_2 + 1) {
    *param_1 = *param_2;
    param_3 = param_3 - 1;
    param_1 = param_1 + 1;
    iVar4 = iVar4 + 1;
  }
  if (param_3 != 0) {
    *param_1 = '\0';
  }
  pcVar1 = param_2 + 1;
  do {
    cVar2 = *param_2;
    param_2 = param_2 + 1;
  } while (cVar2 != '\0');
  return param_2 + iVar3 + (iVar4 - (int)pcVar1);
}



int FUN_00a85250(int param_1,int param_2)

{
  int iVar1;
  
  if (param_1 == 0) {
    return 0;
  }
  iVar1 = FUN_00a84f80(param_2 + 1,".\\crypto\\buffer\\buf_str.c",0x4b);
  if (iVar1 == 0) {
    FUN_00a7f3c0(7,0x68,0x41,".\\crypto\\buffer\\buf_str.c",0x4e);
    return 0;
  }
  FUN_00a851b0(iVar1,param_1,param_2 + 1);
  return iVar1;
}



undefined4 FUN_00a852b0(char *param_1)

{
  char cVar1;
  char *pcVar2;
  undefined4 uVar3;
  
  if (param_1 == (char *)0x0) {
    return 0;
  }
  pcVar2 = param_1;
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  uVar3 = FUN_00a85250(param_1,(int)pcVar2 - (int)(param_1 + 1));
  return uVar3;
}



void FUN_00a852e0(uint *param_1,undefined param_2)

{
  uint uVar1;
  void *pvVar2;
  void **unaff_EBX;
  uint *unaff_ESI;
  void **unaff_EDI;
  
  if ((unaff_EDI != (void **)0x0) && (*unaff_ESI <= *param_1)) {
    do {
      if (*unaff_EDI == (void *)0x0) {
        if (*unaff_ESI == 0) {
          *unaff_ESI = 0x400;
        }
        pvVar2 = (void *)FUN_00a84f80(*unaff_ESI,".\\crypto\\bio\\b_print.c",0x2e5);
        *unaff_EDI = pvVar2;
        if (*param_1 != 0) {
          _memcpy(pvVar2,*unaff_EBX,*param_1);
        }
        *unaff_EBX = (void *)0x0;
      }
      else {
        *unaff_ESI = *unaff_ESI + 0x400;
        pvVar2 = (void *)FUN_00a84ff0(*unaff_EDI,*unaff_ESI,".\\crypto\\bio\\b_print.c",0x2ed);
        *unaff_EDI = pvVar2;
      }
    } while (*unaff_ESI <= *param_1);
  }
  uVar1 = *param_1;
  if (uVar1 < *unaff_ESI) {
    if (*unaff_EBX != (void *)0x0) {
      *(undefined *)((int)*unaff_EBX + uVar1) = param_2;
      *param_1 = *param_1 + 1;
      return;
    }
    *(undefined *)(uVar1 + (int)*unaff_EDI) = param_2;
    *param_1 = *param_1 + 1;
  }
  return;
}



void FUN_00a85380(undefined4 param_1,undefined4 param_2,char *param_3,byte param_4,int param_5,
                 int param_6)

{
  char cVar1;
  int iVar2;
  int iVar3;
  
  iVar3 = param_5;
  param_5 = 0;
  if (param_3 == (char *)0x0) {
    param_3 = "<NULL>";
  }
  iVar2 = 0;
  cVar1 = *param_3;
  while (cVar1 != '\0') {
    iVar2 = iVar2 + 1;
    cVar1 = param_3[iVar2];
  }
  iVar3 = iVar3 - iVar2;
  if (iVar3 < 0) {
    iVar3 = 0;
  }
  if ((param_4 & 1) != 0) {
    iVar3 = -iVar3;
  }
  for (; (0 < iVar3 && (param_5 < param_6)); param_5 = param_5 + 1) {
    FUN_00a852e0(param_2,0x20);
    iVar3 = iVar3 + -1;
  }
  cVar1 = *param_3;
  for (; (cVar1 != '\0' && (param_5 < param_6)); param_5 = param_5 + 1) {
    FUN_00a852e0(param_2,(int)cVar1);
    param_3 = param_3 + 1;
    cVar1 = *param_3;
  }
  for (; (iVar3 < 0 && (param_5 < param_6)); param_5 = param_5 + 1) {
    FUN_00a852e0(param_2,0x20);
    iVar3 = iVar3 + 1;
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __thiscall
FUN_00a85460(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,int param_3,int param_4,
            int param_5,int param_6,int param_7,byte param_8)

{
  char cVar1;
  undefined **ppuVar2;
  int extraout_ECX;
  int iVar3;
  char *pcVar4;
  bool bVar5;
  longlong lVar6;
  int local_40;
  int local_3c;
  undefined **local_2c;
  undefined4 local_24;
  char acStack_20 [28];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_40;
  iVar3 = 0;
  local_24 = 0;
  local_2c = &PTR_02bd3fc0;
  local_40 = 0;
  if (param_7 < 0) {
    param_7 = 0;
  }
  if ((param_8 & 0x40) == 0) {
    if ((param_4 < 1) && (param_4 < 0)) {
      bVar5 = param_3 != 0;
      param_3 = -param_3;
      param_4 = -(param_4 + (uint)bVar5);
      local_24 = 0x2d;
    }
    else if ((param_8 & 2) == 0) {
      if ((param_8 & 4) != 0) {
        local_24 = 0x20;
      }
    }
    else {
      local_24 = 0x2b;
    }
  }
  if ((param_8 & 8) != 0) {
    if (param_5 == 8) {
      local_2c = (undefined **)&DAT_00fb763c;
    }
    else if (param_5 == 0x10) {
      local_2c = (undefined **)&DAT_00da5fc8;
    }
  }
  lVar6 = CONCAT44(param_4,param_3);
  if ((param_8 & 0x20) != 0) {
    local_40 = 1;
    lVar6 = CONCAT44(param_4,param_3);
  }
  do {
    pcVar4 = "0123456789ABCDEF";
    if (local_40 == 0) {
      pcVar4 = "0123456789abcdef";
    }
    lVar6 = __aulldvrm(lVar6,param_5,0);
    acStack_20[iVar3] = pcVar4[extraout_ECX];
    iVar3 = iVar3 + 1;
  } while ((lVar6 != 0) && (iVar3 < 0x1a));
  if (iVar3 == 0x1a) {
    iVar3 = 0x19;
  }
  local_40 = param_7 - iVar3;
  acStack_20[iVar3] = '\0';
  if (param_7 < iVar3) {
    param_7 = iVar3;
  }
  ppuVar2 = local_2c;
  do {
    cVar1 = *(char *)ppuVar2;
    ppuVar2 = (undefined **)((int)ppuVar2 + 1);
  } while (cVar1 != '\0');
  local_3c = ((param_6 - (uint)(local_24 != 0)) - ((int)ppuVar2 - (int)((int)local_2c + 1))) -
             param_7;
  if (local_40 < 0) {
    local_40 = 0;
  }
  if (local_3c < 0) {
    local_3c = 0;
  }
  if ((param_8 & 0x10) != 0) {
    if (local_40 < local_3c) {
      local_40 = local_3c;
    }
    local_3c = 0;
  }
  if ((param_8 & 1) != 0) {
    local_3c = -local_3c;
  }
  for (; 0 < local_3c; local_3c = local_3c + -1) {
    FUN_00a852e0(param_1_00,0x20);
  }
  if (local_24 != 0) {
    FUN_00a852e0(param_1_00,local_24);
  }
  cVar1 = *(char *)local_2c;
  while (cVar1 != '\0') {
    FUN_00a852e0(param_1_00,(int)cVar1);
    local_2c = (undefined **)((int)local_2c + 1);
    cVar1 = *(char *)local_2c;
  }
  for (; 0 < local_40; local_40 = local_40 + -1) {
    FUN_00a852e0(param_1_00,0x30);
  }
  for (; 0 < iVar3; iVar3 = iVar3 + -1) {
    FUN_00a852e0(param_1_00,(int)acStack_20[iVar3 + -1]);
  }
  if (local_3c < 0) {
    iVar3 = -local_3c;
    do {
      FUN_00a852e0(param_1_00,0x20);
      iVar3 = iVar3 + -1;
    } while (iVar3 != 0);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a85710(undefined4 param_1,undefined4 param_2,double param_3,int param_4,int param_5,
                 byte param_6)

{
  char *pcVar1;
  int iVar2;
  int iVar3;
  float10 extraout_ST0;
  float10 extraout_ST1;
  float10 extraout_ST1_00;
  int local_44;
  int local_40;
  undefined4 local_3c;
  int local_38;
  int local_34;
  undefined4 local_30;
  char acStack_2c [19];
  char acStack_19 [21];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_44;
  local_3c = param_1;
  local_34 = 0;
  local_40 = 0;
  local_44 = 0;
  if (param_5 < 0) {
    param_5 = 6;
  }
  if (0.0 <= param_3) {
    if ((param_6 & 2) == 0) {
      if ((param_6 & 4) != 0) {
        local_34 = 0x20;
      }
    }
    else {
      local_34 = 0x2b;
    }
  }
  else {
    local_34 = 0x2d;
  }
  iVar2 = FUN_00a49750();
  iVar3 = param_5;
  if (9 < param_5) {
    param_5 = 9;
    iVar3 = param_5;
  }
  for (; iVar3 != 0; iVar3 = iVar3 + -1) {
  }
  local_30 = iVar2;
  local_38 = FUN_00a49750();
  iVar3 = param_5;
  if ((float10)0.5 < extraout_ST1 - (float10)local_38 !=
      ((float10)0.5 == extraout_ST1 - (float10)local_38)) {
    local_38 = local_38 + 1;
  }
  for (; iVar3 != 0; iVar3 = iVar3 + -1) {
  }
  local_30 = FUN_00a49750();
  iVar3 = local_30;
  if (extraout_ST1_00 <= extraout_ST0 - (float10)local_30) {
    iVar3 = local_30 + 1;
  }
  if (local_38 <= iVar3) {
    iVar3 = iVar3 - local_38;
    iVar2 = iVar2 + 1;
  }
  do {
    acStack_2c[local_40] = "0123456789abcdef"[iVar2 % 10];
    local_40 = local_40 + 1;
    if (iVar2 / 10 == 0) break;
    iVar2 = iVar2 / 10;
  } while (local_40 < 0x14);
  if (local_40 == 0x14) {
    local_40 = 0x13;
  }
  acStack_2c[local_40] = '\0';
  do {
    acStack_19[local_44 + 1] = "0123456789abcdef"[iVar3 % 10];
    local_44 = local_44 + 1;
    iVar3 = iVar3 / 10;
  } while (local_44 < param_5);
  if (local_44 == 0x14) {
    local_44 = 0x13;
  }
  acStack_19[local_44 + 1] = '\0';
  iVar3 = (((param_4 - (uint)(local_34 != 0)) - local_40) - param_5) + -1;
  local_38 = param_5 - local_44;
  if (local_38 < 0) {
    local_38 = 0;
  }
  if (iVar3 < 0) {
    iVar3 = 0;
  }
  if ((param_6 & 1) != 0) {
    iVar3 = -iVar3;
  }
  if ((param_6 & 0x10) == 0) {
    for (; 0 < iVar3; iVar3 = iVar3 + -1) {
      FUN_00a852e0(local_3c,0x20);
    }
  }
  else if (0 < iVar3) {
    if (local_34 != 0) {
      FUN_00a852e0(local_3c,local_34);
      iVar3 = iVar3 + -1;
      local_34 = 0;
    }
    for (; 0 < iVar3; iVar3 = iVar3 + -1) {
      FUN_00a852e0(local_3c,0x30);
    }
  }
  if (local_34 != 0) {
    FUN_00a852e0(local_3c,local_34);
  }
  while (0 < local_40) {
    iVar2 = local_40 + -1;
    local_40 = local_40 + -1;
    FUN_00a852e0(local_3c,(int)acStack_2c[iVar2]);
  }
  if ((0 < param_5) || ((param_6 & 8) != 0)) {
    FUN_00a852e0(local_3c,0x2e);
    while (0 < local_44) {
      pcVar1 = acStack_19 + local_44;
      local_44 = local_44 + -1;
      FUN_00a852e0(local_3c,(int)*pcVar1);
    }
  }
  for (; 0 < local_38; local_38 = local_38 + -1) {
    FUN_00a852e0(local_3c,0x30);
  }
  if (iVar3 < 0) {
    iVar3 = -iVar3;
    do {
      FUN_00a852e0(local_3c,0x20);
      iVar3 = iVar3 + -1;
    } while (iVar3 != 0);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __thiscall
FUN_00a85a50(int param_1_00,undefined4 param_1,int param_2,uint **param_3,int *param_4,uint *param_5
            ,byte *param_6)

{
  uint **ppuVar1;
  uint uVar2;
  int iVar3;
  uint *puVar4;
  byte bVar5;
  uint **ppuVar6;
  int iVar7;
  byte *pbVar8;
  undefined8 uVar9;
  int local_24;
  uint local_20;
  uint *local_1c;
  uint *local_18;
  int local_14;
  int local_10;
  uint *local_c;
  uint *local_8;
  int local_4;
  
  local_4 = 0xa85a5a;
  bVar5 = *param_6;
  pbVar8 = param_6 + 1;
  ppuVar6 = (uint **)(param_1_00 + -4);
  local_24 = param_1_00 + -8;
  local_1c = (uint *)0x0;
  iVar7 = local_24;
LAB_00a85a77:
  local_18 = (uint *)0xffffffff;
  local_20 = 0;
  local_14 = 0;
  local_c = (uint *)0x0;
  local_10 = 0;
  param_6 = pbVar8;
LAB_00a85a93:
  if ((bVar5 == 0) || ((param_2 == 0 && (*param_3 <= local_1c)))) goto LAB_00a85b01;
  switch(local_10) {
  case 0:
    if (bVar5 == 0x25) {
      local_10 = 1;
      param_6 = pbVar8;
    }
    else {
      FUN_00a852e0(&local_1c,(int)(char)bVar5);
      iVar7 = local_24;
    }
    bVar5 = *param_6;
    pbVar8 = param_6 + 1;
    param_6 = pbVar8;
  default:
    if (local_10 == 7) {
LAB_00a85b01:
      uVar2 = (uint)((uint *)((int)*param_3 - 1U) < local_1c);
      *param_5 = uVar2;
      if (uVar2 != 0) {
        local_1c = (uint *)((int)*param_3 - 1);
      }
      FUN_00a852e0(&local_1c,0);
      *param_4 = (int)local_1c + -1;
      return;
    }
    goto LAB_00a85a93;
  case 1:
    switch(bVar5) {
    case 0x20:
      local_20 = local_20 | 4;
      bVar5 = *pbVar8;
      pbVar8 = pbVar8 + 1;
      param_6 = pbVar8;
      break;
    default:
      local_10 = 2;
      break;
    case 0x23:
      local_20 = local_20 | 8;
      bVar5 = *pbVar8;
      pbVar8 = pbVar8 + 1;
      param_6 = pbVar8;
      break;
    case 0x2b:
      local_20 = local_20 | 2;
      bVar5 = *pbVar8;
      pbVar8 = pbVar8 + 1;
      param_6 = pbVar8;
      break;
    case 0x2d:
      local_20 = local_20 | 1;
      bVar5 = *pbVar8;
      pbVar8 = pbVar8 + 1;
      param_6 = pbVar8;
      break;
    case 0x30:
      local_20 = local_20 | 0x10;
      bVar5 = *pbVar8;
      pbVar8 = pbVar8 + 1;
      param_6 = pbVar8;
    }
    goto LAB_00a85a93;
  case 2:
    iVar3 = _isdigit((uint)bVar5);
    if (iVar3 == 0) {
      if (bVar5 == 0x2a) {
        bVar5 = *pbVar8;
        local_c = ppuVar6[1];
        ppuVar6 = ppuVar6 + 1;
        iVar7 = iVar7 + 4;
        pbVar8 = pbVar8 + 1;
        param_6 = pbVar8;
        local_24 = iVar7;
      }
      local_10 = 3;
    }
    else {
      iVar3 = (int)(char)bVar5;
      bVar5 = *pbVar8;
      local_c = (uint *)(iVar3 + -0x30 + (int)local_c * 10);
      pbVar8 = pbVar8 + 1;
      param_6 = pbVar8;
    }
    goto LAB_00a85a93;
  case 3:
    if (bVar5 != 0x2e) goto LAB_00a85c6c;
    bVar5 = *pbVar8;
    local_10 = 4;
    pbVar8 = pbVar8 + 1;
    param_6 = pbVar8;
    goto LAB_00a85a93;
  case 4:
    iVar3 = _isdigit((uint)bVar5);
    if (iVar3 == 0) {
      if (bVar5 == 0x2a) {
        bVar5 = *pbVar8;
        local_18 = ppuVar6[1];
        ppuVar6 = ppuVar6 + 1;
        iVar7 = iVar7 + 4;
        pbVar8 = pbVar8 + 1;
        param_6 = pbVar8;
        local_24 = iVar7;
      }
LAB_00a85c6c:
      local_10 = 5;
    }
    else {
      if ((int)local_18 < 0) {
        local_18 = (uint *)0x0;
      }
      iVar3 = (int)(char)bVar5;
      bVar5 = *pbVar8;
      local_18 = (uint *)(iVar3 + -0x30 + (int)local_18 * 10);
      pbVar8 = pbVar8 + 1;
      param_6 = pbVar8;
    }
    goto LAB_00a85a93;
  case 5:
    goto code_r0x00a85c88;
  case 6:
    break;
  }
  local_10 = (int)(char)bVar5;
  switch(local_10) {
  case 0x25:
    FUN_00a852e0(&local_1c,local_10);
    bVar5 = *param_6;
    pbVar8 = param_6 + 1;
    iVar7 = local_24;
    goto LAB_00a85a77;
  case 0x45:
  case 0x47:
  case 0x65:
  case 0x67:
    bVar5 = *pbVar8;
    local_24 = iVar7 + 8;
    ppuVar6 = ppuVar6 + 2;
    pbVar8 = pbVar8 + 1;
    iVar7 = local_24;
    goto LAB_00a85a77;
  case 0x58:
    local_20 = local_20 | 0x20;
    break;
  case 99:
    ppuVar1 = ppuVar6 + 1;
    ppuVar6 = ppuVar6 + 1;
    local_24 = iVar7 + 4;
    FUN_00a852e0(&local_1c,*ppuVar1);
    bVar5 = *param_6;
    pbVar8 = param_6 + 1;
    iVar7 = local_24;
    goto LAB_00a85a77;
  case 100:
  case 0x69:
    if (local_14 == 1) {
      puVar4 = (uint *)(int)*(short *)(ppuVar6 + 1);
LAB_00a85d84:
      local_24 = iVar7 + 4;
      ppuVar6 = ppuVar6 + 1;
      local_4 = (int)puVar4 >> 0x1f;
    }
    else {
      if ((local_14 == 2) || (local_14 != 4)) {
        puVar4 = ppuVar6[1];
        goto LAB_00a85d84;
      }
      local_4 = *(int *)(iVar7 + 0xc);
      puVar4 = *(uint **)(iVar7 + 8);
      local_24 = iVar7 + 8;
      ppuVar6 = ppuVar6 + 2;
    }
    uVar9 = CONCAT44(10,local_4);
    goto LAB_00a85da9;
  case 0x66:
    local_24 = iVar7 + 8;
    ppuVar6 = ppuVar6 + 2;
    FUN_00a85710(&local_1c,param_3,*(undefined8 *)(iVar7 + 8),local_c,local_18,local_20);
    bVar5 = *pbVar8;
    pbVar8 = pbVar8 + 1;
    iVar7 = local_24;
    goto LAB_00a85a77;
  case 0x6e:
    local_24 = iVar7 + 4;
    ppuVar6 = ppuVar6 + 1;
    iVar7 = local_24;
    if (local_14 == 1) {
      *(undefined2 *)*ppuVar6 = local_1c._0_2_;
      bVar5 = *pbVar8;
      pbVar8 = pbVar8 + 1;
    }
    else if ((local_14 == 2) || (local_14 != 4)) {
      **ppuVar6 = (uint)local_1c;
      bVar5 = *pbVar8;
      pbVar8 = pbVar8 + 1;
    }
    else {
      ppuVar1 = (uint **)*ppuVar6;
      *ppuVar1 = local_1c;
      ppuVar1[1] = (uint *)0x0;
      bVar5 = *pbVar8;
      pbVar8 = pbVar8 + 1;
    }
    goto LAB_00a85a77;
  case 0x6f:
  case 0x75:
  case 0x78:
    break;
  case 0x70:
    local_24 = iVar7 + 4;
    ppuVar6 = ppuVar6 + 1;
    local_20 = local_20 | 8;
    uVar9 = CONCAT44(0x10,(int)*ppuVar6 >> 0x1f);
    puVar4 = *ppuVar6;
    goto LAB_00a85da9;
  case 0x73:
    ppuVar1 = ppuVar6 + 1;
    local_24 = iVar7 + 4;
    ppuVar6 = ppuVar6 + 1;
    if ((int)local_18 < 0) {
      if (param_2 == 0) {
        local_18 = *param_3;
      }
      else {
        local_18 = (uint *)0x7fffffff;
      }
    }
    FUN_00a85380(param_1,&local_1c,*ppuVar1,local_20,local_c,local_18);
    bVar5 = *pbVar8;
    pbVar8 = pbVar8 + 1;
    iVar7 = local_24;
    goto LAB_00a85a77;
  case 0x77:
    pbVar8 = pbVar8 + 1;
  default:
    bVar5 = *pbVar8;
    pbVar8 = pbVar8 + 1;
    goto LAB_00a85a77;
  }
  local_20 = local_20 | 0x40;
  if (local_14 == 1) {
    local_8 = (uint *)(uint)*(ushort *)(ppuVar6 + 1);
LAB_00a85e1f:
    local_4 = 0;
    local_24 = iVar7 + 4;
    ppuVar6 = ppuVar6 + 1;
  }
  else {
    if ((local_14 == 2) || (local_14 != 4)) {
      local_8 = ppuVar6[1];
      goto LAB_00a85e1f;
    }
    local_8 = *(uint **)(iVar7 + 8);
    local_24 = iVar7 + 8;
    local_4 = *(int *)(iVar7 + 0xc);
    ppuVar6 = ppuVar6 + 2;
  }
  if (bVar5 == 0x6f) {
    iVar7 = 8;
  }
  else {
    iVar7 = ((bVar5 != 0x75) - 1 & 0xfffffffa) + 0x10;
  }
  uVar9 = CONCAT44(iVar7,local_4);
  puVar4 = local_8;
LAB_00a85da9:
  FUN_00a85460(param_1,param_2,puVar4,uVar9,local_c,local_18,local_20);
  bVar5 = *pbVar8;
  pbVar8 = pbVar8 + 1;
  iVar7 = local_24;
  goto LAB_00a85a77;
code_r0x00a85c88:
  switch(bVar5) {
  case 0x4c:
    bVar5 = *pbVar8;
    pbVar8 = pbVar8 + 1;
    local_14 = 3;
    param_6 = pbVar8;
  default:
    local_10 = 6;
    break;
  case 0x68:
    bVar5 = *pbVar8;
    pbVar8 = pbVar8 + 1;
    local_14 = 1;
    local_10 = 6;
    param_6 = pbVar8;
    break;
  case 0x6c:
    if (*pbVar8 == 0x6c) {
      bVar5 = pbVar8[1];
      pbVar8 = pbVar8 + 2;
      local_14 = 4;
      local_10 = 6;
      param_6 = pbVar8;
    }
    else {
      bVar5 = *pbVar8;
      pbVar8 = pbVar8 + 1;
      local_14 = 2;
      local_10 = 6;
      param_6 = pbVar8;
    }
    break;
  case 0x71:
    bVar5 = *pbVar8;
    pbVar8 = pbVar8 + 1;
    local_14 = 4;
    local_10 = 6;
    param_6 = pbVar8;
  }
  goto LAB_00a85a93;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a86120(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int local_818;
  undefined4 local_814;
  undefined4 local_810;
  undefined *local_80c;
  undefined local_808 [4];
  undefined local_804 [2048];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_818;
  local_80c = local_804;
  local_810 = 0x800;
  local_818 = 0;
  FUN_00a84670("doapr()",".\\crypto\\bio\\b_print.c",0x31a);
  FUN_00a85a50(&local_80c,&local_818,&local_810,&local_814,local_808,param_2);
  iVar1 = local_818;
  if (local_818 == 0) {
    FUN_00a833e0(param_1,local_804,local_814);
  }
  else {
    FUN_00a833e0(param_1,local_818,local_814);
    FUN_00a85120(iVar1);
  }
  FUN_00a84840();
  ___security_check_cookie_4();
  return;
}



void FUN_00a86200(undefined4 param_1,undefined4 param_2)

{
  FUN_00a86120(param_1,param_2,&stack0x0000000c);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00a86220(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int local_8;
  uint local_4;
  
  local_4 = 0xa8622a;
  FUN_00a85a50(&param_1,0,&param_2,&local_4,&local_8,param_3);
  if ((local_8 != 0) || (0x7fffffff < local_4)) {
    local_4 = 0xffffffff;
  }
  return local_4;
}



void FUN_00a86280(void)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00a94bf0();
  FUN_00a80200(uVar1);
  uVar1 = FUN_00a91950();
  FUN_00a80200(uVar1);
  FUN_00a881c0("ssl2-md5",0x8001,&DAT_00da6060);
  FUN_00a881c0("ssl3-md5",0x8001,&DAT_00da6060);
  uVar1 = FUN_00a94ba0();
  FUN_00a80200(uVar1);
  uVar1 = FUN_00a94b60();
  FUN_00a80200(uVar1);
  uVar1 = FUN_00a924c0();
  FUN_00a80200(uVar1);
  FUN_00a881c0("ssl3-sha1",0x8001,&DAT_00da6040);
  FUN_00a881c0("RSA-SHA1-2",0x8001,"RSA-SHA1");
  uVar1 = FUN_00a94b50();
  FUN_00a80200(uVar1);
  FUN_00a881c0("DSA-SHA1-old",0x8001,"DSA-SHA1");
  FUN_00a881c0(&DAT_00da5ff8,0x8001,"DSA-SHA1");
  FUN_00a881c0(&DAT_00da5ff0,0x8001,"DSA-SHA1");
  uVar1 = FUN_00a94b10();
  FUN_00a80200(uVar1);
  uVar1 = FUN_00a94b00();
  FUN_00a80200(uVar1);
  uVar1 = FUN_00a94ab0();
  FUN_00a80200(uVar1);
  FUN_00a881c0("ripemd",0x8001,"RIPEMD160");
  FUN_00a881c0("rmd160",0x8001,"RIPEMD160");
  uVar1 = FUN_00a92520();
  FUN_00a80200(uVar1);
  uVar1 = FUN_00a92530();
  FUN_00a80200(uVar1);
  uVar1 = FUN_00a92590();
  FUN_00a80200(uVar1);
  uVar1 = FUN_00a925a0();
  FUN_00a80200(uVar1);
  uVar1 = FUN_00a94a70();
  FUN_00a80200(uVar1);
  return;
}



void FUN_00a863e0(void)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00a98470();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a984a0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a984b0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97f50();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97f80();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97fa0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97fb0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a98480();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97f60();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97f90();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a98520();
  FUN_00a801a0(uVar1);
  FUN_00a881c0(&DAT_00da620c,0x8002,"DESX-CBC");
  FUN_00a881c0(&DAT_00da6204,0x8002,"DESX-CBC");
  uVar1 = FUN_00a98460();
  FUN_00a801a0(uVar1);
  FUN_00a881c0(&DAT_00da61f8,0x8002,"DES-CBC");
  FUN_00a881c0(&DAT_00da61f4,0x8002,"DES-CBC");
  uVar1 = FUN_00a97f40();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97f70();
  FUN_00a801a0(uVar1);
  FUN_00a881c0(&DAT_00da61dc,0x8002,"DES-EDE3-CBC");
  FUN_00a881c0(&DAT_00da61d4,0x8002,"DES-EDE3-CBC");
  uVar1 = FUN_00a98490();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a980b0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a980c0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97b30();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97b40();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97b20();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a976b0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97690();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a976a0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97680();
  FUN_00a801a0(uVar1);
  FUN_00a881c0(&DAT_00da61c0,0x8002,"IDEA-CBC");
  FUN_00a881c0(&DAT_00da61b8,0x8002,"IDEA-CBC");
  uVar1 = FUN_00a974a0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97480();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97490();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97470();
  FUN_00a801a0(uVar1);
  FUN_00a881c0(&DAT_00da61a4,0x8002,"SEED-CBC");
  FUN_00a881c0(&DAT_00da619c,0x8002,"SEED-CBC");
  uVar1 = FUN_00a97010();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96ff0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97000();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96fe0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97030();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97020();
  FUN_00a801a0(uVar1);
  FUN_00a881c0(&DAT_00da6190,0x8002,"RC2-CBC");
  FUN_00a881c0(&DAT_00da618c,0x8002,"RC2-CBC");
  uVar1 = FUN_00a96db0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96d90();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96da0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96d80();
  FUN_00a801a0(uVar1);
  FUN_00a881c0(&DAT_00da6180,0x8002,"BF-CBC");
  FUN_00a881c0(&DAT_00da617c,0x8002,"BF-CBC");
  FUN_00a881c0("blowfish",0x8002,"BF-CBC");
  uVar1 = FUN_00a96b80();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96b60();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96b70();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96b50();
  FUN_00a801a0(uVar1);
  FUN_00a881c0(&DAT_00da615c,0x8002,"CAST5-CBC");
  FUN_00a881c0(&DAT_00da6154,0x8002,"CAST5-CBC");
  FUN_00a881c0("CAST-cbc",0x8002,"CAST5-CBC");
  FUN_00a881c0("cast-cbc",0x8002,"CAST5-CBC");
  uVar1 = FUN_00a957e0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a957c0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a95820();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a95840();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a95860();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a95800();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a95880();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96210();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96490();
  FUN_00a801a0(uVar1);
  FUN_00a881c0("AES128",0x8002,"AES-128-CBC");
  FUN_00a881c0("aes128",0x8002,"AES-128-CBC");
  uVar1 = FUN_00a958c0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a958a0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a95900();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a95920();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a95940();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a958e0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a95960();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96230();
  FUN_00a801a0(uVar1);
  FUN_00a881c0("AES192",0x8002,"AES-192-CBC");
  FUN_00a881c0("aes192",0x8002,"AES-192-CBC");
  uVar1 = FUN_00a959a0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a95980();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a959e0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a95a00();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a95a20();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a959c0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a95a40();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96250();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a964b0();
  FUN_00a801a0(uVar1);
  FUN_00a881c0("AES256",0x8002,"AES-256-CBC");
  FUN_00a881c0("aes256",0x8002,"AES-256-CBC");
  uVar1 = FUN_006d14e0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_006d14e0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94c90();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94c60();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94c70();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94e80();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94f90();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94c80();
  FUN_00a801a0(uVar1);
  FUN_00a881c0("CAMELLIA128",0x8002,"CAMELLIA-128-CBC");
  FUN_00a881c0("camellia128",0x8002,"CAMELLIA-128-CBC");
  uVar1 = FUN_00a94cd0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94ca0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94cb0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94f10();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94fa0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94cc0();
  FUN_00a801a0(uVar1);
  FUN_00a881c0("CAMELLIA192",0x8002,"CAMELLIA-192-CBC");
  FUN_00a881c0("camellia192",0x8002,"CAMELLIA-192-CBC");
  uVar1 = FUN_00a94e70();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94e40();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94e50();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94f20();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94fb0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94e60();
  FUN_00a801a0(uVar1);
  FUN_00a881c0("CAMELLIA256",0x8002,"CAMELLIA-256-CBC");
  FUN_00a881c0("camellia256",0x8002,"CAMELLIA-256-CBC");
  return;
}



void FUN_00a86a40(void)

{
  if (DAT_032ed4b8 == 0) {
    DAT_032ed4b8 = 1;
  }
  return;
}



void FUN_00a86a60(undefined4 param_1)

{
  FUN_00a98620(&DAT_032ed4bc,param_1);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a86a80(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 uStack_4;
  
  iVar1 = param_1;
  uStack_4 = 0xa86a8a;
  if (*(code **)(param_1 + 0x30) != (code *)0x0) {
    iVar2 = (**(code **)(param_1 + 0x30))(param_1,0,&param_1,0);
    iVar4 = 0;
    if (0 < iVar2) {
      do {
        iVar3 = (**(code **)(iVar1 + 0x30))(iVar1,&uStack_4,0,*(undefined4 *)(param_1 + iVar4 * 4));
        if (iVar3 != 0) {
          FUN_00a8f4d0(uStack_4);
        }
        iVar4 = iVar4 + 1;
      } while (iVar4 < iVar2);
    }
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a86af0(undefined4 param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  char cVar1;
  char *_Str1;
  int iVar2;
  char *pcVar3;
  int iVar4;
  int iVar5;
  int local_4;
  
  local_4 = 0xa86afa;
  if (param_4[1] == 0) {
    iVar5 = 0;
    iVar2 = FUN_00a80ed0(param_2);
    if (0 < iVar2) {
      while( true ) {
        iVar2 = FUN_00a80ee0(param_2,iVar5);
        (**(code **)(iVar2 + 0x30))(iVar2,&local_4,0,param_1);
        _Str1 = *(char **)(local_4 + 0xc);
        pcVar3 = _Str1;
        do {
          cVar1 = *pcVar3;
          pcVar3 = pcVar3 + 1;
        } while (cVar1 != '\0');
        if (((int)pcVar3 - (int)(_Str1 + 1) == param_4[3]) &&
           (iVar4 = __strnicmp(_Str1,(char *)param_4[2],param_4[3]), iVar4 == 0)) break;
        iVar5 = iVar5 + 1;
        iVar2 = FUN_00a80ed0(param_2);
        if (iVar2 <= iVar5) {
          return;
        }
      }
      *param_4 = iVar2;
      param_4[1] = local_4;
    }
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a86ba0(int *param_1,undefined4 param_2,undefined4 param_3)

{
  int local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_10 = 0;
  local_c = 0;
  local_8 = param_2;
  local_4 = param_3;
  FUN_00a7fdc0(9,0x1e,".\\crypto\\engine\\tb_asnmth.c",0xeb);
  FUN_00a98770(DAT_032ed4bc,FUN_00a86af0,&local_10);
  if (local_10 != 0) {
    *(int *)(local_10 + 0x58) = *(int *)(local_10 + 0x58) + 1;
  }
  *param_1 = local_10;
  FUN_00a7fdc0(10,0x1e,".\\crypto\\engine\\tb_asnmth.c",0xf4);
  return local_c;
}



int FUN_00a86c30(int param_1,undefined4 param_2)

{
  int iVar1;
  
  if (*(code **)(param_1 + 0x30) != (code *)0x0) {
    iVar1 = (**(code **)(param_1 + 0x30))(param_1,&param_1,0,param_2);
    if (iVar1 != 0) {
      return param_1;
    }
  }
  FUN_00a7f3c0(0x26,0xc1,0x65,".\\crypto\\engine\\tb_asnmth.c",0x81);
  return 0;
}



void FUN_00a86c80(undefined4 param_1)

{
  FUN_00a98620(&DAT_032ed4c0,param_1);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a86ca0(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 uStack_4;
  
  iVar1 = param_1;
  uStack_4 = 0xa86caa;
  if (*(code **)(param_1 + 0x2c) != (code *)0x0) {
    iVar2 = (**(code **)(param_1 + 0x2c))(param_1,0,&param_1,0);
    iVar4 = 0;
    if (0 < iVar2) {
      do {
        iVar3 = (**(code **)(iVar1 + 0x2c))(iVar1,&uStack_4,0,*(undefined4 *)(param_1 + iVar4 * 4));
        if (iVar3 != 0) {
          FUN_00a98830(uStack_4);
        }
        iVar4 = iVar4 + 1;
      } while (iVar4 < iVar2);
    }
  }
  return;
}



int FUN_00a86d10(int param_1,undefined4 param_2)

{
  int iVar1;
  
  if (*(code **)(param_1 + 0x2c) != (code *)0x0) {
    iVar1 = (**(code **)(param_1 + 0x2c))(param_1,&param_1,0,param_2);
    if (iVar1 != 0) {
      return param_1;
    }
  }
  FUN_00a7f3c0(0x26,0xc0,0x65,".\\crypto\\engine\\tb_pkmeth.c",0x7f);
  return 0;
}



undefined4 FUN_00a86d60(undefined4 param_1)

{
  if (DAT_032ed4c4 != 0) {
    FUN_00a8f1b0(DAT_032ed4c4);
    DAT_032ed4c8 = param_1;
    DAT_032ed4c4 = 0;
    return 1;
  }
  DAT_032ed4c8 = param_1;
  return 1;
}



void FUN_00a86da0(void)

{
  int iVar1;
  
  if (DAT_032ed4c8 != (code **)0x0) goto LAB_00a86ddf;
  iVar1 = FUN_00a996e0();
  if (iVar1 == 0) {
LAB_00a86dd0:
    DAT_032ed4c8 = (code **)FUN_00a98d50();
    iVar1 = DAT_032ed4c4;
  }
  else {
    DAT_032ed4c8 = (code **)FUN_00a996f0(iVar1);
    if (DAT_032ed4c8 == (code **)0x0) {
      FUN_00a8f1b0(iVar1);
      goto LAB_00a86dd0;
    }
  }
  DAT_032ed4c4 = iVar1;
  if (DAT_032ed4c8 == (code **)0x0) {
    return;
  }
LAB_00a86ddf:
  if (*DAT_032ed4c8 == (code *)0x0) {
    return;
  }
                    // WARNING: Could not recover jumptable at 0x00a86de5. Too many branches
                    // WARNING: Treating indirect jump as call
  (**DAT_032ed4c8)();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a86df0(undefined4 param_1,undefined4 param_2,undefined8 param_3)

{
  int iVar1;
  
  if (DAT_032ed4c8 != 0) goto LAB_00a86e2f;
  iVar1 = FUN_00a996e0();
  if (iVar1 == 0) {
LAB_00a86e20:
    DAT_032ed4c8 = FUN_00a98d50();
    iVar1 = DAT_032ed4c4;
  }
  else {
    DAT_032ed4c8 = FUN_00a996f0(iVar1);
    if (DAT_032ed4c8 == 0) {
      FUN_00a8f1b0(iVar1);
      goto LAB_00a86e20;
    }
  }
  DAT_032ed4c4 = iVar1;
  if (DAT_032ed4c8 == 0) {
    return;
  }
LAB_00a86e2f:
  if (*(code **)(DAT_032ed4c8 + 0xc) != (code *)0x0) {
    (**(code **)(DAT_032ed4c8 + 0xc))(param_1,param_2,param_3);
  }
  return;
}



undefined4 FUN_00a86e60(void)

{
  int iVar1;
  undefined4 uVar2;
  
  if (DAT_032ed4c8 != 0) goto LAB_00a86e9f;
  iVar1 = FUN_00a996e0();
  if (iVar1 == 0) {
LAB_00a86e90:
    DAT_032ed4c8 = FUN_00a98d50();
    iVar1 = DAT_032ed4c4;
  }
  else {
    DAT_032ed4c8 = FUN_00a996f0(iVar1);
    if (DAT_032ed4c8 == 0) {
      FUN_00a8f1b0(iVar1);
      goto LAB_00a86e90;
    }
  }
  DAT_032ed4c4 = iVar1;
  if (DAT_032ed4c8 == 0) {
    return 0xffffffff;
  }
LAB_00a86e9f:
  if (*(code **)(DAT_032ed4c8 + 4) == (code *)0x0) {
    return 0xffffffff;
  }
                    // WARNING: Could not recover jumptable at 0x00a86ea6. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar2 = (**(code **)(DAT_032ed4c8 + 4))();
  return uVar2;
}



undefined4 FUN_00a86ec0(void)

{
  int iVar1;
  undefined4 uVar2;
  
  if (DAT_032ed4c8 != 0) goto LAB_00a86eff;
  iVar1 = FUN_00a996e0();
  if (iVar1 == 0) {
LAB_00a86ef0:
    DAT_032ed4c8 = FUN_00a98d50();
    iVar1 = DAT_032ed4c4;
  }
  else {
    DAT_032ed4c8 = FUN_00a996f0(iVar1);
    if (DAT_032ed4c8 == 0) {
      FUN_00a8f1b0(iVar1);
      goto LAB_00a86ef0;
    }
  }
  DAT_032ed4c4 = iVar1;
  if (DAT_032ed4c8 == 0) {
    return 0xffffffff;
  }
LAB_00a86eff:
  if (*(code **)(DAT_032ed4c8 + 0x10) == (code *)0x0) {
    return 0xffffffff;
  }
                    // WARNING: Could not recover jumptable at 0x00a86f06. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar2 = (**(code **)(DAT_032ed4c8 + 0x10))();
  return uVar2;
}



undefined4 FUN_00a86f20(void)

{
  int iVar1;
  undefined4 uVar2;
  
  if (DAT_032ed4c8 != 0) goto LAB_00a86f5f;
  iVar1 = FUN_00a996e0();
  if (iVar1 == 0) {
LAB_00a86f50:
    DAT_032ed4c8 = FUN_00a98d50();
    iVar1 = DAT_032ed4c4;
  }
  else {
    DAT_032ed4c8 = FUN_00a996f0(iVar1);
    if (DAT_032ed4c8 == 0) {
      FUN_00a8f1b0(iVar1);
      goto LAB_00a86f50;
    }
  }
  DAT_032ed4c4 = iVar1;
  if (DAT_032ed4c8 == 0) {
    return 0;
  }
LAB_00a86f5f:
  if (*(code **)(DAT_032ed4c8 + 0x14) == (code *)0x0) {
    return 0;
  }
                    // WARNING: Could not recover jumptable at 0x00a86f66. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar2 = (**(code **)(DAT_032ed4c8 + 0x14))();
  return uVar2;
}



undefined4 FUN_00a86f80(int *param_1)

{
  int iVar1;
  
  if (param_1 == (int *)0x0) {
    FUN_00a7f3c0(0x25,0x6f,0x43,".\\crypto\\dso\\dso_lib.c",0x89);
    return 0;
  }
  iVar1 = FUN_00a7fe40(param_1 + 2,0xffffffff,0x1c,".\\crypto\\dso\\dso_lib.c",0x8d);
  if (iVar1 < 1) {
    if (*(code **)(*param_1 + 8) != (code *)0x0) {
      iVar1 = (**(code **)(*param_1 + 8))(param_1);
      if (iVar1 == 0) {
        FUN_00a7f3c0(0x25,0x6f,0x6b,".\\crypto\\dso\\dso_lib.c",0x9c);
        return 0;
      }
    }
    if (*(code **)(*param_1 + 0x24) != (code *)0x0) {
      iVar1 = (**(code **)(*param_1 + 0x24))(param_1);
      if (iVar1 == 0) {
        FUN_00a7f3c0(0x25,0x6f,0x66,".\\crypto\\dso\\dso_lib.c",0xa2);
        return 0;
      }
    }
    FUN_00a80ea0(param_1[1]);
    if (param_1[8] != 0) {
      FUN_00a85120(param_1[8]);
    }
    if (param_1[9] != 0) {
      FUN_00a85120(param_1[9]);
    }
    FUN_00a85120(param_1);
  }
  return 1;
}



int FUN_00a87070(int *param_1,char *param_2)

{
  char cVar1;
  int iVar2;
  char *pcVar3;
  code *pcVar4;
  
  if (param_1 == (int *)0x0) {
    FUN_00a7f3c0(0x25,0x7e,0x43,".\\crypto\\dso\\dso_lib.c",0x1a3);
    return 0;
  }
  if ((param_2 == (char *)0x0) && (param_2 = (char *)param_1[8], param_2 == (char *)0x0)) {
    FUN_00a7f3c0(0x25,0x7e,0x6f,".\\crypto\\dso\\dso_lib.c",0x1aa);
    return 0;
  }
  if (((*(byte *)(param_1 + 3) & 1) == 0) &&
     (((pcVar4 = (code *)param_1[6], pcVar4 != (code *)0x0 ||
       (pcVar4 = *(code **)(*param_1 + 0x18), pcVar4 != (code *)0x0)) &&
      (iVar2 = (*pcVar4)(param_1,param_2), iVar2 != 0)))) {
    return iVar2;
  }
  pcVar3 = param_2;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  iVar2 = FUN_00a84f80(pcVar3 + (1 - (int)(param_2 + 1)),".\\crypto\\dso\\dso_lib.c",0x1b6);
  if (iVar2 != 0) {
    pcVar3 = param_2;
    do {
      cVar1 = *pcVar3;
      pcVar3 = pcVar3 + 1;
    } while (cVar1 != '\0');
    FUN_00a851b0(iVar2,param_2,pcVar3 + (1 - (int)(param_2 + 1)));
    return iVar2;
  }
  FUN_00a7f3c0(0x25,0x7e,0x41,".\\crypto\\dso\\dso_lib.c",0x1ba);
  return 0;
}



undefined4 FUN_00a87190(int param_1,int param_2)

{
  undefined4 uVar1;
  
  if (param_1 == 0) {
    FUN_00a7f3c0(0xe,0x6c,0x69,".\\crypto\\conf\\conf_lib.c",0x133);
    return 0;
  }
  if (param_2 == 0) {
    FUN_00a7f3c0(0xe,0x6c,0x6b,".\\crypto\\conf\\conf_lib.c",0x139);
    return 0;
  }
  uVar1 = FUN_00a9a470();
  return uVar1;
}



int FUN_00a871f0(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  
  iVar1 = FUN_00a9a530(param_1,param_2,param_3);
  if (iVar1 == 0) {
    if (param_1 == 0) {
      FUN_00a7f3c0(0xe,0x6d,0x6a,".\\crypto\\conf\\conf_lib.c",0x14b);
      return 0;
    }
    FUN_00a7f3c0(0xe,0x6d,0x6c,".\\crypto\\conf\\conf_lib.c",0x14f);
    FUN_00a7f690(4,"group=",param_2," name=",param_3);
    iVar1 = 0;
  }
  return iVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a87270(int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined local_c [8];
  int iStack_4;
  
  iStack_4 = 0xa8727a;
  if (param_1 == 0) {
    return 0;
  }
  if (DAT_032ed4d0 == 0) {
    DAT_032ed4d0 = FUN_00a99700();
  }
  (**(code **)(DAT_032ed4d0 + 8))(local_c);
  iStack_4 = param_1;
  uVar1 = FUN_00a87190(local_c,param_2);
  return uVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a872d0(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined local_c [8];
  int iStack_4;
  
  iStack_4 = 0xa872da;
  if (param_1 == 0) {
    iVar1 = FUN_00a9a530(0,param_2,param_3);
    if (iVar1 == 0) {
      FUN_00a7f3c0(0xe,0x6d,0x6a,".\\crypto\\conf\\conf_lib.c",0x14b);
      return 0;
    }
  }
  else {
    if (DAT_032ed4d0 == 0) {
      DAT_032ed4d0 = FUN_00a99700();
    }
    (**(code **)(DAT_032ed4d0 + 8))(local_c);
    iStack_4 = param_1;
    iVar1 = FUN_00a871f0(local_c,param_2,param_3);
  }
  return iVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a87360(undefined4 param_1)

{
  int local_c [2];
  undefined4 uStack_4;
  
  uStack_4 = 0xa8736a;
  if (DAT_032ed4d0 == 0) {
    DAT_032ed4d0 = FUN_00a99700();
  }
  (**(code **)(DAT_032ed4d0 + 8))(local_c);
  uStack_4 = param_1;
  (**(code **)(local_c[0] + 0x10))(local_c);
  return;
}



void FUN_00a873d0(int param_1)

{
  int *piVar1;
  
  piVar1 = (int *)(*(int *)(param_1 + 4) + 8);
  *piVar1 = *piVar1 + -1;
  if (*(int *)(*(int *)(param_1 + 4) + 8) == 0) {
    FUN_00a90760(*(int *)(param_1 + 4));
  }
  FUN_00a85120(param_1);
  return;
}



void FUN_00a87400(int param_1)

{
  if ((DAT_032ed4d8 == 0) && (0x397 < param_1)) {
    DAT_032ed4d8 = 1;
  }
  return;
}



void FUN_00a87420(void)

{
  int iVar1;
  
  iVar1 = DAT_032ed4d4;
  if (DAT_032ed4d8 != 0) {
    DAT_032ed4d8 = 2;
    return;
  }
  if (DAT_032ed4d4 != 0) {
    *(undefined4 *)(DAT_032ed4d4 + 0x20) = 0;
    FUN_00a84a40(iVar1,&LAB_00a873a0);
    FUN_00a84a40(DAT_032ed4d4,&LAB_00a873c0);
    FUN_00a84a40(DAT_032ed4d4,FUN_00a873d0);
    FUN_00a84990(DAT_032ed4d4);
    DAT_032ed4d4 = 0;
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined ** FUN_00a87490(uint param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 local_20;
  undefined *local_1c;
  undefined local_18 [8];
  uint local_10;
  undefined4 uStack_4;
  
  uStack_4 = 0xa8749a;
  if (param_1 < 0x398) {
    if ((param_1 == 0) || (*(int *)(&DAT_00dace38 + param_1 * 0x18) != 0)) {
      return &PTR_s_UNDEF_00dace30 + param_1 * 6;
    }
    uVar2 = 0x12a;
  }
  else {
    if (DAT_032ed4d4 == 0) {
      return (undefined **)0x0;
    }
    local_10 = param_1;
    local_1c = local_18;
    local_20 = 3;
    iVar1 = FUN_00a84ed0(DAT_032ed4d4,&local_20);
    if (iVar1 != 0) {
      return *(undefined ***)(iVar1 + 4);
    }
    uVar2 = 0x13b;
  }
  FUN_00a7f3c0(8,0x67,0x65,".\\crypto\\objects\\obj_dat.c",uVar2);
  return (undefined **)0x0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined * FUN_00a87520(uint param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 local_20;
  undefined *local_1c;
  undefined local_18 [8];
  uint local_10;
  undefined4 uStack_4;
  
  uStack_4 = 0xa8752a;
  if (param_1 < 0x398) {
    if ((param_1 == 0) || (*(int *)(&DAT_00dace38 + param_1 * 0x18) != 0)) {
      return (&PTR_s_UNDEF_00dace30)[param_1 * 6];
    }
    uVar2 = 0x14a;
  }
  else {
    if (DAT_032ed4d4 == 0) {
      return (undefined *)0x0;
    }
    local_10 = param_1;
    local_1c = local_18;
    local_20 = 3;
    iVar1 = FUN_00a84ed0(DAT_032ed4d4,&local_20);
    if (iVar1 != 0) {
      return (undefined *)**(undefined4 **)(iVar1 + 4);
    }
    uVar2 = 0x15b;
  }
  FUN_00a7f3c0(8,0x68,0x65,".\\crypto\\objects\\obj_dat.c",uVar2);
  return (undefined *)0x0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined * FUN_00a875c0(uint param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 local_20;
  undefined *local_1c;
  undefined local_18 [8];
  uint local_10;
  undefined4 uStack_4;
  
  uStack_4 = 0xa875ca;
  if (param_1 < 0x398) {
    if ((param_1 == 0) || (*(int *)(&DAT_00dace38 + param_1 * 0x18) != 0)) {
      return (&PTR_s_undefined_00dace34)[param_1 * 6];
    }
    uVar2 = 0x16a;
  }
  else {
    if (DAT_032ed4d4 == 0) {
      return (undefined *)0x0;
    }
    local_10 = param_1;
    local_1c = local_18;
    local_20 = 3;
    iVar1 = FUN_00a84ed0(DAT_032ed4d4,&local_20);
    if (iVar1 != 0) {
      return *(undefined **)(*(int *)(iVar1 + 4) + 4);
    }
    uVar2 = 0x17b;
  }
  FUN_00a7f3c0(8,0x66,0x65,".\\crypto\\objects\\obj_dat.c",uVar2);
  return (undefined *)0x0;
}



uint __thiscall FUN_00a87660(int *param_1_00,int *param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  int *piVar4;
  int *piVar5;
  
  uVar3 = *(uint *)(*param_1 + 0xc);
  uVar1 = uVar3 - *(int *)(&DAT_00dace3c + *param_1_00 * 0x18);
  if (uVar1 == 0) {
    piVar4 = (int *)(&PTR_DAT_00dace40)[*param_1_00 * 6];
    piVar5 = *(int **)(*param_1 + 0x10);
    for (; 3 < uVar3; uVar3 = uVar3 - 4) {
      if (*piVar5 != *piVar4) goto LAB_00a876a8;
      piVar4 = piVar4 + 1;
      piVar5 = piVar5 + 1;
    }
    if (uVar3 != 0) {
LAB_00a876a8:
      iVar2 = (uint)*(byte *)piVar5 - (uint)*(byte *)piVar4;
      if (iVar2 != 0) goto LAB_00a876e3;
      if (1 < uVar3) {
        iVar2 = (uint)*(byte *)((int)piVar5 + 1) - (uint)*(byte *)((int)piVar4 + 1);
        if (iVar2 != 0) goto LAB_00a876e3;
        if (2 < uVar3) {
          iVar2 = (uint)*(byte *)((int)piVar5 + 2) - (uint)*(byte *)((int)piVar4 + 2);
          if (iVar2 != 0) {
LAB_00a876e3:
            return iVar2 >> 0x1f | 1;
          }
          if (3 < uVar3) {
            iVar2 = (uint)*(byte *)((int)piVar5 + 3) - (uint)*(byte *)((int)piVar4 + 3);
            goto LAB_00a876e3;
          }
        }
      }
    }
    uVar1 = 0;
  }
  return uVar1;
}



int FUN_00a87700(undefined4 param_1,int param_2,int param_3,int param_4,code *param_5,byte param_6)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  iVar4 = 0;
  iVar5 = 0;
  if (param_3 == 0) {
    return 0;
  }
  iVar2 = 0;
  if (0 < param_3) {
    do {
      iVar4 = (iVar2 + param_3) / 2;
      iVar5 = iVar4 * param_4 + param_2;
      iVar1 = (*param_5)(param_1,iVar5);
      iVar3 = iVar4;
      if (-1 < iVar1) {
        if (iVar1 < 1) break;
        iVar2 = iVar4 + 1;
        iVar3 = param_3;
      }
      param_3 = iVar3;
    } while (iVar2 < iVar3);
    if (iVar1 != 0) {
      if ((param_6 & 1) != 0) {
        return iVar5;
      }
      return 0;
    }
  }
  if ((param_6 & 2) != 0) {
    if (0 < iVar4) {
      iVar5 = (iVar4 + -1) * param_4 + param_2;
      do {
        iVar2 = (*param_5)(param_1,iVar5);
        if (iVar2 != 0) break;
        iVar4 = iVar4 + -1;
        iVar5 = iVar5 - param_4;
      } while (0 < iVar4);
    }
    iVar5 = iVar4 * param_4 + param_2;
  }
  return iVar5;
}



void FUN_00a877b0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  FUN_00a87700(param_1,param_2,param_3,param_4,param_5,0);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a877e0(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 local_8;
  int local_4;
  
  local_4 = 0xa877ea;
  iVar5 = 0;
  if (param_1 == 0) {
    return 0;
  }
  iVar2 = *(int *)(param_1 + 8);
  if (iVar2 == 0) {
    if (DAT_032ed4d4 != 0) {
      local_4 = param_1;
      local_8 = 0;
      iVar2 = FUN_00a84ed0(DAT_032ed4d4,&local_8);
      if (iVar2 != 0) {
        return *(int *)(*(int *)(iVar2 + 4) + 8);
      }
    }
    iVar2 = 0x359;
    do {
      iVar4 = (iVar2 + iVar5) / 2;
      iVar1 = iVar4 * 4;
      iVar3 = FUN_00a87660(&param_1);
      if (-1 < iVar3) {
        if (iVar3 < 1) break;
        iVar5 = iVar4 + 1;
        iVar4 = iVar2;
      }
      iVar2 = iVar4;
    } while (iVar5 < iVar4);
    if ((iVar3 != 0) || ((int *)(&DAT_00db4100 + iVar1) == (int *)0x0)) {
      return 0;
    }
    iVar2 = *(int *)(&DAT_00dace38 + *(int *)(&DAT_00db4100 + iVar1) * 0x18);
  }
  return iVar2;
}



undefined4 FUN_00a87835(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int unaff_EDI;
  
  iVar3 = 0x359;
  do {
    iVar4 = (iVar3 + unaff_EDI) / 2;
    iVar1 = iVar4 * 4;
    iVar2 = FUN_00a87660(&stack0x00000010);
    if (-1 < iVar2) {
      if (iVar2 < 1) break;
      unaff_EDI = iVar4 + 1;
      iVar4 = iVar3;
    }
    iVar3 = iVar4;
  } while (unaff_EDI < iVar4);
  if ((iVar2 == 0) && ((int *)(&DAT_00db4100 + iVar1) != (int *)0x0)) {
    return *(undefined4 *)(&DAT_00dace38 + *(int *)(&DAT_00db4100 + iVar1) * 0x18);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a878a0(char *param_1,int param_2,int param_3,int param_4)

{
  byte bVar1;
  bool bVar2;
  int iVar3;
  char *pcVar4;
  int iVar5;
  char *pcVar6;
  char cVar7;
  uint uVar8;
  int local_38;
  int local_34;
  int local_30;
  int local_2c;
  int local_28;
  byte *local_24;
  char local_20 [28];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_38;
  local_34 = param_2;
  local_30 = 0;
  if ((param_3 == 0) || (*(int *)(param_3 + 0x10) == 0)) {
    *param_1 = '\0';
    ___security_check_cookie_4();
    return;
  }
  if (((param_4 == 0) && (iVar3 = FUN_00a877e0(param_3), iVar3 != 0)) &&
     ((pcVar4 = (char *)FUN_00a875c0(iVar3), pcVar4 != (char *)0x0 ||
      (pcVar4 = (char *)FUN_00a87520(iVar3), pcVar4 != (char *)0x0)))) {
    if (param_1 != (char *)0x0) {
      FUN_00a851b0(param_1,pcVar4,local_34);
    }
    do {
      cVar7 = *pcVar4;
      pcVar4 = pcVar4 + 1;
    } while (cVar7 != '\0');
    ___security_check_cookie_4();
    return;
  }
  local_2c = *(int *)(param_3 + 0xc);
  local_24 = *(byte **)(param_3 + 0x10);
  local_28 = 1;
  local_38 = 0;
  if (0 < local_2c) {
LAB_00a87976:
    uVar8 = 0;
    bVar2 = false;
    iVar3 = local_38;
LAB_00a87980:
    do {
      bVar1 = *local_24;
      local_24 = local_24 + 1;
      local_2c = local_2c + -1;
      if ((local_2c == 0) && ((char)bVar1 < '\0')) goto LAB_00a87b9c;
      if (bVar2) {
        iVar5 = FUN_00a9b7f0(iVar3,bVar1 & 0x7f);
        iVar3 = local_38;
        if (iVar5 == 0) goto LAB_00a87b9c;
      }
      else {
        uVar8 = uVar8 | bVar1 & 0x7f;
      }
      if (-1 < (char)bVar1) goto LAB_00a87a2b;
      if (!bVar2) {
        if (uVar8 < 0x2000000) {
          uVar8 = uVar8 << 7;
          goto LAB_00a87980;
        }
        if ((iVar3 == 0) && (iVar3 = FUN_00a9aa10(), local_38 = iVar3, iVar3 == 0))
        goto LAB_00a87ba9;
        iVar5 = FUN_00a9ac50(iVar3,uVar8);
        iVar3 = local_38;
        if (iVar5 == 0) goto LAB_00a87b9c;
        bVar2 = true;
      }
      iVar5 = FUN_00a9bb30(iVar3,iVar3,7);
      iVar3 = local_38;
      if (iVar5 == 0) goto LAB_00a87b9c;
    } while( true );
  }
LAB_00a87b81:
  ___security_check_cookie_4();
  return;
LAB_00a87a2b:
  if (local_28 != 0) {
    local_28 = 0;
    if (uVar8 < 0x50) {
      cVar7 = (char)(uVar8 / 0x28);
      uVar8 = uVar8 % 0x28;
    }
    else {
      cVar7 = '\x02';
      if (bVar2) {
        iVar5 = FUN_00a9b8a0(iVar3,0x50);
        iVar3 = local_38;
        if (iVar5 == 0) goto LAB_00a87b9c;
      }
      else {
        uVar8 = uVar8 - 0x50;
      }
    }
    if ((param_1 != (char *)0x0) && (0 < local_34)) {
      *param_1 = cVar7 + '0';
      param_1 = param_1 + 1;
      local_34 = local_34 + -1;
    }
    local_30 = local_30 + 1;
  }
  if (bVar2) {
    pcVar4 = (char *)FUN_00a9b1a0(iVar3);
    iVar3 = local_38;
    if (pcVar4 == (char *)0x0) {
LAB_00a87b9c:
      if (iVar3 != 0) {
        FUN_00a9a9b0(iVar3);
      }
LAB_00a87ba9:
      ___security_check_cookie_4();
      return;
    }
    pcVar6 = pcVar4;
    do {
      cVar7 = *pcVar6;
      pcVar6 = pcVar6 + 1;
    } while (cVar7 != '\0');
    iVar3 = (int)pcVar6 - (int)(pcVar4 + 1);
    if (param_1 != (char *)0x0) {
      iVar5 = local_34;
      if (0 < local_34) {
        *param_1 = '.';
        param_1 = param_1 + 1;
        iVar5 = local_34 + -1;
      }
      FUN_00a851b0(param_1,pcVar4,iVar5);
      if (iVar5 < iVar3) {
        param_1 = param_1 + iVar5;
        local_34 = 0;
      }
      else {
        param_1 = param_1 + iVar3;
        local_34 = iVar5 - iVar3;
      }
    }
    local_30 = local_30 + 1 + iVar3;
    FUN_00a85120(pcVar4);
  }
  else {
    FUN_00a86220(local_20,0x1a,&DAT_00db4e80,uVar8);
    iVar3 = local_34;
    pcVar4 = local_20;
    do {
      cVar7 = *pcVar4;
      pcVar4 = pcVar4 + 1;
    } while (cVar7 != '\0');
    iVar5 = (int)pcVar4 - (int)(local_20 + 1);
    if ((param_1 != (char *)0x0) && (0 < local_34)) {
      FUN_00a851b0(param_1,local_20,local_34);
      if (iVar3 < iVar5) {
        param_1 = param_1 + iVar3;
        local_34 = 0;
      }
      else {
        param_1 = param_1 + iVar5;
        local_34 = iVar3 - iVar5;
      }
    }
    local_30 = local_30 + iVar5;
  }
  if (local_2c < 1) goto code_r0x00a87b70;
  goto LAB_00a87976;
code_r0x00a87b70:
  if (local_38 != 0) {
    FUN_00a9a9b0(local_38);
  }
  goto LAB_00a87b81;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a87be0(byte *param_1)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  byte *pbVar5;
  byte *pbVar6;
  int iVar7;
  bool bVar8;
  undefined4 local_20;
  undefined *local_1c;
  undefined local_18 [4];
  byte *local_14;
  undefined4 uStack_4;
  
  uStack_4 = 0xa87bea;
  local_14 = param_1;
  if (DAT_032ed4d4 != 0) {
    local_1c = local_18;
    local_20 = 2;
    iVar3 = FUN_00a84ed0(DAT_032ed4d4,&local_20);
    if (iVar3 != 0) {
      return *(undefined4 *)(*(int *)(iVar3 + 4) + 8);
    }
  }
  iVar3 = 0;
  param_1 = (byte *)0x391;
  do {
    iVar7 = ((int)param_1 + iVar3) / 2;
    pbVar6 = (&PTR_s_undefined_00dace34)[*(int *)(&UNK_00db32b8 + iVar7 * 4) * 6];
    pbVar5 = local_14;
    do {
      bVar1 = *pbVar5;
      bVar8 = bVar1 < *pbVar6;
      if (bVar1 != *pbVar6) {
LAB_00a87c80:
        iVar4 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
        goto LAB_00a87c85;
      }
      if (bVar1 == 0) break;
      bVar1 = pbVar5[1];
      bVar8 = bVar1 < pbVar6[1];
      if (bVar1 != pbVar6[1]) goto LAB_00a87c80;
      pbVar5 = pbVar5 + 2;
      pbVar6 = pbVar6 + 2;
    } while (bVar1 != 0);
    iVar4 = 0;
LAB_00a87c85:
    iVar2 = iVar7;
    if (-1 < iVar4) {
      if (iVar4 < 1) break;
      iVar3 = iVar7 + 1;
      iVar2 = (int)param_1;
    }
    param_1 = (byte *)iVar2;
  } while (iVar3 < (int)param_1);
  if ((iVar4 == 0) && ((int *)(&UNK_00db32b8 + iVar7 * 4) != (int *)0x0)) {
    return *(undefined4 *)(&DAT_00dace38 + *(int *)(&UNK_00db32b8 + iVar7 * 4) * 0x18);
  }
  return 0;
}



undefined4 FUN_00a87c26(undefined4 param_1,undefined4 param_2,byte *param_3)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  byte *pbVar4;
  byte *pbVar5;
  int iVar6;
  int iVar7;
  bool bVar8;
  int param_9;
  
  iVar6 = 0;
  param_9 = 0x391;
  do {
    iVar7 = (param_9 + iVar6) / 2;
    pbVar5 = (&PTR_s_undefined_00dace34)[*(int *)(&UNK_00db32b8 + iVar7 * 4) * 6];
    pbVar4 = param_3;
    do {
      bVar1 = *pbVar4;
      bVar8 = bVar1 < *pbVar5;
      if (bVar1 != *pbVar5) {
LAB_00a87c80:
        iVar3 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
        goto LAB_00a87c85;
      }
      if (bVar1 == 0) break;
      bVar1 = pbVar4[1];
      bVar8 = bVar1 < pbVar5[1];
      if (bVar1 != pbVar5[1]) goto LAB_00a87c80;
      pbVar4 = pbVar4 + 2;
      pbVar5 = pbVar5 + 2;
    } while (bVar1 != 0);
    iVar3 = 0;
LAB_00a87c85:
    iVar2 = iVar7;
    if (-1 < iVar3) {
      if (iVar3 < 1) break;
      iVar6 = iVar7 + 1;
      iVar2 = param_9;
    }
    param_9 = iVar2;
  } while (iVar6 < param_9);
  if ((iVar3 == 0) && ((int *)(&UNK_00db32b8 + iVar7 * 4) != (int *)0x0)) {
    return *(undefined4 *)(&DAT_00dace38 + *(int *)(&UNK_00db32b8 + iVar7 * 4) * 0x18);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a87cd0(byte *param_1)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  byte *pbVar5;
  byte *pbVar6;
  int iVar7;
  bool bVar8;
  undefined4 local_20;
  byte **local_1c;
  byte *local_18 [5];
  undefined4 uStack_4;
  
  uStack_4 = 0xa87cda;
  local_18[0] = param_1;
  if (DAT_032ed4d4 != 0) {
    local_1c = local_18;
    local_20 = 1;
    iVar3 = FUN_00a84ed0(DAT_032ed4d4,&local_20);
    if (iVar3 != 0) {
      return *(undefined4 *)(*(int *)(iVar3 + 4) + 8);
    }
  }
  iVar3 = 0;
  param_1 = (byte *)0x391;
  do {
    iVar7 = ((int)param_1 + iVar3) / 2;
    pbVar6 = (&PTR_s_UNDEF_00dace30)[*(int *)(&UNK_00db2470 + iVar7 * 4) * 6];
    pbVar5 = local_18[0];
    do {
      bVar1 = *pbVar5;
      bVar8 = bVar1 < *pbVar6;
      if (bVar1 != *pbVar6) {
LAB_00a87d70:
        iVar4 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
        goto LAB_00a87d75;
      }
      if (bVar1 == 0) break;
      bVar1 = pbVar5[1];
      bVar8 = bVar1 < pbVar6[1];
      if (bVar1 != pbVar6[1]) goto LAB_00a87d70;
      pbVar5 = pbVar5 + 2;
      pbVar6 = pbVar6 + 2;
    } while (bVar1 != 0);
    iVar4 = 0;
LAB_00a87d75:
    iVar2 = iVar7;
    if (-1 < iVar4) {
      if (iVar4 < 1) break;
      iVar3 = iVar7 + 1;
      iVar2 = (int)param_1;
    }
    param_1 = (byte *)iVar2;
  } while (iVar3 < (int)param_1);
  if ((iVar4 == 0) && ((int *)(&UNK_00db2470 + iVar7 * 4) != (int *)0x0)) {
    return *(undefined4 *)(&DAT_00dace38 + *(int *)(&UNK_00db2470 + iVar7 * 4) * 0x18);
  }
  return 0;
}



undefined4 FUN_00a87d16(undefined4 param_1,byte *param_2)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  byte *pbVar4;
  byte *pbVar5;
  int iVar6;
  int iVar7;
  bool bVar8;
  int param_9;
  
  iVar6 = 0;
  param_9 = 0x391;
  do {
    iVar7 = (param_9 + iVar6) / 2;
    pbVar5 = (&PTR_s_UNDEF_00dace30)[*(int *)(&UNK_00db2470 + iVar7 * 4) * 6];
    pbVar4 = param_2;
    do {
      bVar1 = *pbVar4;
      bVar8 = bVar1 < *pbVar5;
      if (bVar1 != *pbVar5) {
LAB_00a87d70:
        iVar3 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
        goto LAB_00a87d75;
      }
      if (bVar1 == 0) break;
      bVar1 = pbVar4[1];
      bVar8 = bVar1 < pbVar5[1];
      if (bVar1 != pbVar5[1]) goto LAB_00a87d70;
      pbVar4 = pbVar4 + 2;
      pbVar5 = pbVar5 + 2;
    } while (bVar1 != 0);
    iVar3 = 0;
LAB_00a87d75:
    iVar2 = iVar7;
    if (-1 < iVar3) {
      if (iVar3 < 1) break;
      iVar6 = iVar7 + 1;
      iVar2 = param_9;
    }
    param_9 = iVar2;
  } while (iVar6 < param_9);
  if ((iVar3 == 0) && ((int *)(&UNK_00db2470 + iVar7 * 4) != (int *)0x0)) {
    return *(undefined4 *)(&DAT_00dace38 + *(int *)(&UNK_00db2470 + iVar7 * 4) * 0x18);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a87dc0(undefined4 param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int local_4;
  
  local_4 = 0xa87dca;
  if (param_2 == 0) {
    iVar1 = FUN_00a87cd0(param_1);
    if (iVar1 == 0) {
      iVar1 = FUN_00a87be0(param_1);
      if (iVar1 == 0) goto LAB_00a87dfc;
    }
    uVar2 = FUN_00a87490(iVar1);
    return uVar2;
  }
LAB_00a87dfc:
  iVar1 = FUN_00a90210(0,0,param_1,0xffffffff);
  if (iVar1 < 1) {
    return 0;
  }
  uVar2 = FUN_00a90b80(0,iVar1,6);
  iVar3 = FUN_00a84f80(uVar2,".\\crypto\\objects\\obj_dat.c",0x1c4);
  if (iVar3 == 0) {
    return 0;
  }
  param_2 = iVar3;
  FUN_00a90fd0(&param_2,0,iVar1,6,0);
  FUN_00a90210(param_2,iVar1,param_1,0xffffffff);
  local_4 = iVar3;
  uVar2 = FUN_00a90940(0,&local_4,uVar2);
  FUN_00a85120(iVar3);
  return uVar2;
}



int FUN_00a87e90(void)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  byte *pbVar4;
  byte *pbVar5;
  int *unaff_EBX;
  int *unaff_ESI;
  bool bVar6;
  
  if (*unaff_ESI - *unaff_EBX != 0) {
    return *unaff_ESI - *unaff_EBX;
  }
  if (DAT_032ed4dc != 0) {
    iVar3 = *unaff_ESI;
    iVar2 = FUN_00a80ed0(DAT_032ed4dc);
    if (iVar3 < iVar2) {
      iVar3 = FUN_00a80ee0(DAT_032ed4dc,iVar3);
      iVar3 = (**(code **)(iVar3 + 4))(unaff_ESI[2],unaff_EBX[2]);
      return iVar3;
    }
  }
  pbVar5 = (byte *)unaff_EBX[2];
  pbVar4 = (byte *)unaff_ESI[2];
  while( true ) {
    bVar1 = *pbVar4;
    bVar6 = bVar1 < *pbVar5;
    if (bVar1 != *pbVar5) break;
    if (bVar1 == 0) {
      return 0;
    }
    bVar1 = pbVar4[1];
    bVar6 = bVar1 < pbVar5[1];
    if (bVar1 != pbVar5[1]) break;
    pbVar4 = pbVar4 + 2;
    pbVar5 = pbVar5 + 2;
    if (bVar1 == 0) {
      return 0;
    }
  }
  return (1 - (uint)bVar6) - (uint)(bVar6 != 0);
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a87f00(undefined4 param_1,uint param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  uint local_10 [2];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa87f0a;
  if (DAT_032ed4e4 == 0) {
    return 0;
  }
  local_8 = param_1;
  local_10[0] = param_2 & 0xffff7fff;
  piVar1 = (int *)FUN_00a84e60(DAT_032ed4e4,local_10);
  if (piVar1 == (int *)0x0) {
    return 0;
  }
  if (DAT_032ed4dc != 0) {
    iVar3 = *piVar1;
    iVar2 = FUN_00a80ed0(DAT_032ed4dc);
    if (iVar3 < iVar2) {
      iVar3 = FUN_00a80ee0(DAT_032ed4dc,iVar3);
      (**(code **)(iVar3 + 8))(piVar1[2],*piVar1,piVar1[3]);
    }
  }
  FUN_00a85120(piVar1);
  return 1;
}



void FUN_00a87fd0(int param_1)

{
  undefined4 uVar1;
  int iVar2;
  
  iVar2 = DAT_032ed4e4;
  if (DAT_032ed4e4 != 0) {
    uVar1 = *(undefined4 *)(DAT_032ed4e4 + 0x20);
    DAT_032ed4e0 = param_1;
    *(undefined4 *)(DAT_032ed4e4 + 0x20) = 0;
    FUN_00a84a40(iVar2,&LAB_00a87fa0);
    if (param_1 < 0) {
      FUN_00a84990(DAT_032ed4e4);
      FUN_00a81120(DAT_032ed4dc,thunk_FUN_00a85120);
      DAT_032ed4e4 = 0;
      DAT_032ed4dc = 0;
      return;
    }
    *(undefined4 *)(DAT_032ed4e4 + 0x20) = uVar1;
  }
  return;
}



void FUN_00a880b0(void)

{
  FUN_00a87e90();
  return;
}



bool FUN_00a880d0(void)

{
  if (DAT_032ed4e4 != 0) {
    return true;
  }
  FUN_00a843c0(3);
  DAT_032ed4e4 = FUN_00a84d00(&LAB_00a88050,FUN_00a880b0);
  FUN_00a843c0(2);
  return DAT_032ed4e4 != 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a88110(int param_1,uint param_2)

{
  int iVar1;
  int iVar2;
  uint local_10 [2];
  int local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa8811a;
  iVar2 = 0;
  if ((param_1 != 0) && ((DAT_032ed4e4 != 0 || (iVar1 = FUN_00a880d0(), iVar1 != 0)))) {
    local_10[0] = param_2 & 0xffff7fff;
    local_8 = param_1;
    iVar1 = FUN_00a84ed0(DAT_032ed4e4,local_10);
    while( true ) {
      if (iVar1 == 0) {
        return 0;
      }
      if ((*(int *)(iVar1 + 4) == 0) || ((param_2 & 0x8000) != 0)) break;
      iVar2 = iVar2 + 1;
      if (10 < iVar2) {
        return 0;
      }
      local_8 = *(undefined4 *)(iVar1 + 0xc);
      iVar1 = FUN_00a84ed0(DAT_032ed4e4,local_10);
    }
    return *(undefined4 *)(iVar1 + 0xc);
  }
  return 0;
}



undefined4 FUN_00a881c0(uint param_1,uint param_2,uint param_3)

{
  uint *puVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  
  if (DAT_032ed4e4 == 0) {
    FUN_00a843c0(3);
    DAT_032ed4e4 = FUN_00a84d00(&LAB_00a88050,FUN_00a880b0);
    FUN_00a843c0(2);
    if (DAT_032ed4e4 == 0) {
      return 0;
    }
  }
  puVar1 = (uint *)FUN_00a84f80(0x10,".\\crypto\\objects\\o_names.c",0xc3);
  if (puVar1 == (uint *)0x0) {
    return 0;
  }
  puVar1[2] = param_1;
  puVar1[1] = param_2 & 0x8000;
  iVar4 = DAT_032ed4e4;
  *puVar1 = param_2 & 0xffff7fff;
  puVar1[3] = param_3;
  piVar2 = (int *)FUN_00a84dd0(iVar4,puVar1);
  if (piVar2 == (int *)0x0) {
    if (*(int *)(DAT_032ed4e4 + 0x5c) != 0) {
      return 0;
    }
  }
  else {
    if (DAT_032ed4dc != 0) {
      iVar4 = *piVar2;
      iVar3 = FUN_00a80ed0(DAT_032ed4dc);
      if (iVar4 < iVar3) {
        iVar4 = FUN_00a80ee0(DAT_032ed4dc,iVar4);
        (**(code **)(iVar4 + 8))(piVar2[2],*piVar2,piVar2[3]);
      }
    }
    FUN_00a85120(piVar2);
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a882d0(undefined4 param_1,undefined4 *param_2,undefined4 *param_3)

{
  int iVar1;
  undefined4 local_c [2];
  undefined4 uStack_4;
  
  uStack_4 = 0xa882da;
  local_c[0] = param_1;
  if (DAT_032f16c8 != 0) {
    iVar1 = FUN_00a81100(DAT_032f16c8,local_c);
    if (-1 < iVar1) {
      iVar1 = FUN_00a80ee0(DAT_032f16c8,iVar1);
      if (iVar1 != 0) goto LAB_00a88332;
    }
  }
  iVar1 = FUN_00a877b0(local_c,&DAT_00db4ea8,0x1e,0xc,&LAB_00a91210);
  if (iVar1 == 0) {
    return 0;
  }
LAB_00a88332:
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *(undefined4 *)(iVar1 + 4);
  }
  if (param_3 != (undefined4 *)0x0) {
    *param_3 = *(undefined4 *)(iVar1 + 8);
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a88360(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined **ppuVar2;
  undefined *local_10;
  undefined local_c [4];
  undefined4 local_8;
  undefined4 local_4;
  
  ppuVar2 = &local_10;
  local_10 = local_c;
  local_8 = param_2;
  local_4 = param_3;
  if (DAT_032f16c4 != 0) {
    iVar1 = FUN_00a81100(DAT_032f16c4,local_c);
    if (-1 < iVar1) {
      local_10 = (undefined *)FUN_00a80ee0(DAT_032f16c4,iVar1);
      goto LAB_00a883b3;
    }
  }
  ppuVar2 = (undefined **)FUN_00a877b0(&local_10,&PTR_DAT_00db5010,0x1e,4,&LAB_00a882b0);
  if (ppuVar2 == (undefined **)0x0) {
    return 0;
  }
LAB_00a883b3:
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = *(undefined4 *)*ppuVar2;
  }
  return 1;
}



void FUN_00a883f0(void)

{
  if (DAT_032f16c8 != 0) {
    FUN_00a81120(DAT_032f16c8,thunk_FUN_00a85120);
    DAT_032f16c8 = 0;
  }
  if (DAT_032f16c4 != 0) {
    FUN_00a80ea0(DAT_032f16c4);
    DAT_032f16c4 = 0;
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00a88450(undefined4 param_1,int param_2,undefined4 *param_3,undefined4 *param_4,
            undefined4 *param_5)

{
  int iVar1;
  undefined4 local_14;
  int local_10;
  undefined4 uStack_4;
  
  uStack_4 = 0xa8845a;
  if (param_2 != 0) {
    local_10 = param_2;
    local_14 = param_1;
    if (DAT_032ed4e8 != 0) {
      iVar1 = FUN_00a81100(DAT_032ed4e8,&local_14);
      if (iVar1 != -1) {
        iVar1 = FUN_00a80ee0(DAT_032ed4e8,iVar1);
        if (iVar1 != 0) goto LAB_00a884c0;
      }
    }
    iVar1 = FUN_00a877b0(&local_14,&DAT_00db5088,0x15,0x14,&LAB_00a88430);
    if (iVar1 != 0) {
LAB_00a884c0:
      if (param_3 != (undefined4 *)0x0) {
        *param_3 = *(undefined4 *)(iVar1 + 8);
      }
      if (param_4 != (undefined4 *)0x0) {
        *param_4 = *(undefined4 *)(iVar1 + 0xc);
      }
      if (param_5 != (undefined4 *)0x0) {
        *param_5 = *(undefined4 *)(iVar1 + 0x10);
      }
      return 1;
    }
  }
  return 0;
}



void FUN_00a884f0(void)

{
  FUN_00a81120(DAT_032ed4e8,thunk_FUN_00a85120);
  DAT_032ed4e8 = 0;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a88510(int param_1,char *param_2,int param_3,undefined4 param_4,undefined4 param_5,
                 undefined4 param_6)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  char *pcVar4;
  int iVar5;
  undefined4 local_64;
  int local_60;
  code *local_5c;
  int local_58;
  undefined local_54 [80];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_64;
  local_64 = param_5;
  uVar2 = FUN_00a877e0(param_1,&local_60,&local_58,&local_5c);
  iVar3 = FUN_00a88450(0,uVar2);
  if (iVar3 == 0) {
    FUN_00a7f3c0(6,0x74,0x79,".\\crypto\\evp\\evp_pbe.c",0xa7);
    if (param_1 == 0) {
      FUN_00a851b0(local_54,&DAT_00da4528,0x50);
    }
    else {
      FUN_00a905e0(local_54,0x50,param_1);
    }
    FUN_00a7f690(2,"TYPE=",local_54);
    ___security_check_cookie_4();
    return;
  }
  if (param_2 == (char *)0x0) {
    param_3 = 0;
  }
  else if (param_3 == -1) {
    pcVar4 = param_2;
    do {
      cVar1 = *pcVar4;
      pcVar4 = pcVar4 + 1;
    } while (cVar1 != '\0');
    param_3 = (int)pcVar4 - (int)(param_2 + 1);
  }
  if (local_60 == -1) {
    iVar3 = 0;
  }
  else {
    uVar2 = FUN_00a87520(local_60);
    iVar3 = FUN_00a802b0(uVar2);
    if (iVar3 == 0) {
      FUN_00a7f3c0(6,0x74,0xa0,".\\crypto\\evp\\evp_pbe.c",0xba);
      ___security_check_cookie_4();
      return;
    }
  }
  if (local_58 == -1) {
    iVar5 = 0;
  }
  else {
    uVar2 = FUN_00a87520(local_58);
    iVar5 = FUN_00a802c0(uVar2);
    if (iVar5 == 0) {
      FUN_00a7f3c0(6,0x74,0xa1,".\\crypto\\evp\\evp_pbe.c",0xc6);
      ___security_check_cookie_4();
      return;
    }
  }
  iVar3 = (*local_5c)(local_64,param_2,param_3,param_4,iVar3,iVar5,param_6);
  if (iVar3 == 0) {
    FUN_00a7f3c0(6,0x74,0x78,".\\crypto\\evp\\evp_pbe.c",0xcd);
    ___security_check_cookie_4();
    return;
  }
  ___security_check_cookie_4();
  return;
}



void FUN_00a88730(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00db52f8);
  return;
}



void FUN_00a88750(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00db52f8);
  return;
}



void FUN_00a88780(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00db54e4);
  return;
}



void FUN_00a887a0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00db54e4);
  return;
}



void FUN_00a887c0(void)

{
  FUN_00a8bf10(&DAT_00db54e4);
  return;
}



void FUN_00a887d0(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db54e4);
  return;
}



void FUN_00a88800(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db5500);
  return;
}



void FUN_00a88830(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00db551c);
  return;
}



void FUN_00a88850(void)

{
  FUN_00a8bf10(&DAT_00db551c);
  return;
}



void FUN_00a88860(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db551c);
  return;
}



void FUN_00a88890(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00db5538);
  return;
}



void FUN_00a888b0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00db5538);
  return;
}



void FUN_00a888d0(void)

{
  FUN_00a8bf10(&DAT_00db5538);
  return;
}



void FUN_00a888e0(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db5538);
  return;
}



void FUN_00a88910(void)

{
  FUN_00a8bf10(&DAT_00db5554);
  return;
}



void FUN_00a88980(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00db56a4);
  return;
}



void FUN_00a889a0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00db56a4);
  return;
}



void FUN_00a889c0(void)

{
  FUN_00a8bf10(&DAT_00db56a4);
  return;
}



void FUN_00a889d0(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db56a4);
  return;
}



void FUN_00a88a50(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00db57b4);
  return;
}



void FUN_00a88a70(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00db57b4);
  return;
}



void FUN_00a88a90(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00db57e4);
  return;
}



int FUN_00a88ae0(undefined4 *param_1)

{
  code *pcVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  
  if (param_1 != (undefined4 *)0x0) {
    if (param_1[2] != 0) {
      FUN_00a7fe40(param_1[2] + 8,1,10,".\\crypto\\asn1\\x_pubkey.c",0x8d);
      return param_1[2];
    }
    if (param_1[1] != 0) {
      iVar2 = FUN_00a81420();
      if (iVar2 == 0) {
        uVar5 = 0x95;
        uVar4 = 0x41;
      }
      else {
        uVar4 = FUN_00a877e0(*(undefined4 *)*param_1);
        iVar3 = FUN_00a81680(iVar2,uVar4);
        if (iVar3 == 0) {
          uVar5 = 0x9b;
          uVar4 = 0x6f;
        }
        else {
          pcVar1 = *(code **)(*(int *)(iVar2 + 0xc) + 0x14);
          if (pcVar1 == (code *)0x0) {
            uVar5 = 0xaa;
            uVar4 = 0x7c;
          }
          else {
            iVar3 = (*pcVar1)(iVar2,param_1);
            if (iVar3 != 0) {
              FUN_00a7fdc0(9,10,".\\crypto\\asn1\\x_pubkey.c",0xaf);
              if (param_1[2] == 0) {
                param_1[2] = iVar2;
                FUN_00a7fdc0(10,10,".\\crypto\\asn1\\x_pubkey.c",0xb9);
              }
              else {
                FUN_00a7fdc0(10,10,".\\crypto\\asn1\\x_pubkey.c",0xb2);
                FUN_00a816d0(iVar2);
                iVar2 = param_1[2];
              }
              FUN_00a7fe40(iVar2 + 8,1,10,".\\crypto\\asn1\\x_pubkey.c",0xbb);
              return iVar2;
            }
            uVar5 = 0xa4;
            uVar4 = 0x7d;
          }
        }
      }
      FUN_00a7f3c0(0xb,0x77,uVar4,".\\crypto\\asn1\\x_pubkey.c",uVar5);
      if (iVar2 != 0) {
        FUN_00a816d0(iVar2);
      }
    }
  }
  return 0;
}



undefined4
FUN_00a88c30(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            int param_5,undefined4 param_6)

{
  int iVar1;
  
  iVar1 = FUN_00a895d0(*param_1,param_2,param_3,param_4);
  if (iVar1 == 0) {
    return 0;
  }
  if (param_5 != 0) {
    if (*(int *)(param_1[1] + 8) != 0) {
      FUN_00a85120(*(int *)(param_1[1] + 8));
    }
    *(int *)(param_1[1] + 8) = param_5;
    *(undefined4 *)param_1[1] = param_6;
    *(uint *)(param_1[1] + 0xc) = *(uint *)(param_1[1] + 0xc) & 0xfffffff0;
    *(uint *)(param_1[1] + 0xc) = *(uint *)(param_1[1] + 0xc) | 8;
  }
  return 1;
}



undefined4
FUN_00a88ca0(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
            undefined4 *param_5)

{
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = *(undefined4 *)*param_5;
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *(undefined4 *)(param_5[1] + 8);
    *param_3 = *(undefined4 *)param_5[1];
  }
  if (param_4 != (undefined4 *)0x0) {
    *param_4 = *param_5;
  }
  return 1;
}



void FUN_00a88d00(void)

{
  FUN_00a8bf10(&DAT_00db597c);
  return;
}



void FUN_00a88d10(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db597c);
  return;
}



void FUN_00a88d30(undefined4 param_1)

{
  FUN_00a8e270(&DAT_00db597c,param_1);
  return;
}



void FUN_00a88d70(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00db5a14);
  return;
}



void FUN_00a88d90(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00db5a14);
  return;
}



void FUN_00a88db0(void)

{
  FUN_00a8bf10(&DAT_00db5a14);
  return;
}



void FUN_00a88dc0(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db5a14);
  return;
}



void FUN_00a88de0(undefined4 param_1)

{
  FUN_00a8e270(&DAT_00db5a14,param_1);
  return;
}



undefined4 FUN_00a88e00(int **param_1)

{
  int *piVar1;
  int iVar2;
  
  piVar1 = (int *)FUN_00a84f80(0x14,".\\crypto\\asn1\\x_name.c",0x87);
  if (piVar1 != (int *)0x0) {
    iVar2 = FUN_00a81010();
    *piVar1 = iVar2;
    if (iVar2 != 0) {
      iVar2 = FUN_00a929e0();
      piVar1[2] = iVar2;
      if (iVar2 != 0) {
        piVar1[3] = 0;
        piVar1[4] = 0;
        piVar1[1] = 1;
        *param_1 = piVar1;
        return 1;
      }
    }
  }
  FUN_00a7f3c0(0xd,0xab,0x41,".\\crypto\\asn1\\x_name.c",0x93);
  if (piVar1 != (int *)0x0) {
    if (*piVar1 != 0) {
      FUN_00a80ea0(*piVar1);
    }
    FUN_00a85120(piVar1);
  }
  return 0;
}



void FUN_00a88e90(int *param_1)

{
  undefined4 *puVar1;
  
  if ((param_1 != (int *)0x0) && (puVar1 = (undefined4 *)*param_1, puVar1 != (undefined4 *)0x0)) {
    FUN_00a92a20(puVar1[2]);
    FUN_00a81120(*puVar1,FUN_00a88d10);
    if (puVar1[3] != 0) {
      FUN_00a85120(puVar1[3]);
    }
    FUN_00a85120(puVar1);
    *param_1 = 0;
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a88f10(void)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 *unaff_ESI;
  int local_c;
  int local_8;
  undefined4 local_4;
  
  local_4 = 0xa88f1a;
  local_c = 0;
  local_8 = 0;
  iVar4 = -1;
  local_c = FUN_00a81010();
  if (local_c != 0) {
    iVar1 = FUN_00a80ed0(*unaff_ESI);
    if (0 < iVar1) {
      iVar1 = 0;
      do {
        iVar2 = FUN_00a80ee0(*unaff_ESI,iVar1);
        if (*(int *)(iVar2 + 8) != iVar4) {
          local_8 = FUN_00a81010();
          if ((local_8 == 0) || (iVar4 = FUN_00a80df0(local_c,local_8), iVar4 == 0))
          goto LAB_00a88fd3;
          iVar4 = *(int *)(iVar2 + 8);
        }
        iVar2 = FUN_00a80df0(local_8,iVar2);
        if (iVar2 == 0) goto LAB_00a88fd3;
        iVar1 = iVar1 + 1;
        iVar2 = FUN_00a80ed0(*unaff_ESI);
      } while (iVar1 < iVar2);
    }
    uVar3 = FUN_00a8b450(&local_c,0,&DAT_00db59dc,0xffffffff,0xffffffff);
    iVar4 = FUN_00a92a60(unaff_ESI[2],uVar3);
    if (iVar4 != 0) {
      local_4 = *(undefined4 *)(unaff_ESI[2] + 4);
      FUN_00a8b450(&local_c,&local_4,&DAT_00db59dc,0xffffffff,0xffffffff);
      FUN_00a81120(local_c,&LAB_00a88ee0);
      unaff_ESI[1] = 0;
      return uVar3;
    }
  }
LAB_00a88fd3:
  FUN_00a81120(local_c,&LAB_00a88ee0);
  FUN_00a7f3c0(0xd,0xcb,0x41,".\\crypto\\asn1\\x_name.c",0x122);
  return 0xffffffff;
}



bool __thiscall FUN_00a89080(int param_1_00,int *param_1)

{
  byte *pbVar1;
  byte bVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  byte *pbVar7;
  byte *pbVar8;
  
  uVar3 = FUN_00a896e0(*(undefined4 *)(param_1_00 + 4));
  if ((uVar3 & 0x2956) == 0) {
    iVar4 = FUN_00a91130(param_1,param_1_00);
    return iVar4 != 0;
  }
  param_1[1] = 0xc;
  iVar4 = FUN_00a9d460(param_1 + 2,param_1_00);
  *param_1 = iVar4;
  if (iVar4 == -1) {
    return false;
  }
  pbVar7 = (byte *)param_1[2];
  while (((0 < iVar4 && (-1 < (char)*pbVar7)) && (iVar5 = _isspace((uint)*pbVar7), iVar5 != 0))) {
    iVar4 = iVar4 + -1;
    pbVar7 = pbVar7 + 1;
  }
  pbVar8 = pbVar7 + iVar4 + -1;
  while (((0 < iVar4 && (-1 < (char)*pbVar8)) && (iVar5 = _isspace((uint)*pbVar8), iVar5 != 0))) {
    iVar4 = iVar4 + -1;
    pbVar8 = pbVar8 + -1;
  }
  pbVar8 = (byte *)param_1[2];
  iVar5 = 0;
  if (0 < iVar4) {
    do {
      bVar2 = *pbVar7;
      if ((char)bVar2 < '\0') {
LAB_00a89177:
        *pbVar8 = bVar2;
        pbVar7 = pbVar7 + 1;
        iVar5 = iVar5 + 1;
      }
      else {
        iVar6 = _isspace((uint)bVar2);
        if (iVar6 == 0) {
          iVar6 = _tolower((uint)*pbVar7);
          bVar2 = (byte)iVar6;
          goto LAB_00a89177;
        }
        *pbVar8 = 0x20;
        do {
          pbVar1 = pbVar7 + 1;
          pbVar7 = pbVar7 + 1;
          iVar5 = iVar5 + 1;
          if ((char)*pbVar1 < '\0') break;
          iVar6 = _isspace((uint)*pbVar1);
        } while (iVar6 != 0);
      }
      pbVar8 = pbVar8 + 1;
    } while (iVar5 < iVar4);
  }
  *param_1 = (int)pbVar8 - param_1[2];
  return true;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a891a0(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 local_4;
  
  local_4 = 0xa891aa;
  iVar2 = 0;
  iVar3 = 0;
  iVar1 = FUN_00a80ed0();
  if (0 < iVar1) {
    do {
      local_4 = FUN_00a80ee0();
      iVar1 = FUN_00a8b450(&local_4,param_1,&DAT_00db59ac,0xffffffff,0xffffffff);
      if (iVar1 < 0) {
        return iVar1;
      }
      iVar2 = iVar2 + iVar1;
      iVar3 = iVar3 + 1;
      iVar1 = FUN_00a80ed0();
    } while (iVar3 < iVar1);
  }
  return iVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a89200(void)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  undefined4 *unaff_EBX;
  int iVar6;
  int local_10;
  int local_c;
  undefined4 local_8;
  int local_4;
  
  local_4 = 0xa8920a;
  iVar6 = 0;
  local_c = 0;
  local_10 = -1;
  local_8 = 0;
  if (unaff_EBX[3] != 0) {
    FUN_00a85120(unaff_EBX[3]);
    unaff_EBX[3] = 0;
  }
  iVar1 = FUN_00a80ed0(*unaff_EBX);
  if (iVar1 == 0) {
    unaff_EBX[4] = 0;
    return 1;
  }
  iVar1 = FUN_00a81010();
  if (iVar1 != 0) {
    iVar2 = FUN_00a80ed0(*unaff_EBX);
    if (0 < iVar2) {
      do {
        puVar3 = (undefined4 *)FUN_00a80ee0(*unaff_EBX,iVar6);
        if (puVar3[2] != local_10) {
          local_c = FUN_00a81010();
          if ((local_c == 0) || (iVar2 = FUN_00a80df0(iVar1,local_c), iVar2 == 0))
          goto LAB_00a89362;
          local_10 = puVar3[2];
        }
        puVar4 = (undefined4 *)FUN_00a8bf10(&DAT_00db597c);
        uVar5 = FUN_00a8fff0(*puVar3);
        *puVar4 = uVar5;
        iVar2 = FUN_00a89080(puVar4[1]);
        if ((iVar2 == 0) || (iVar2 = FUN_00a80df0(local_c,puVar4), iVar2 == 0)) {
          if (puVar4 != (undefined4 *)0x0) {
            FUN_00a8c2c0(puVar4,&DAT_00db597c);
          }
          goto LAB_00a89362;
        }
        iVar6 = iVar6 + 1;
        iVar2 = FUN_00a80ed0(*unaff_EBX);
      } while (iVar6 < iVar2);
    }
    uVar5 = FUN_00a891a0(0);
    unaff_EBX[4] = uVar5;
    local_4 = FUN_00a84f80(uVar5,".\\crypto\\asn1\\x_name.c",0x16d);
    if (local_4 != 0) {
      unaff_EBX[3] = local_4;
      FUN_00a891a0(&local_4);
      local_8 = 1;
    }
LAB_00a89362:
    FUN_00a81120(iVar1,&LAB_00a88ef0);
  }
  return local_8;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a89380(int *param_1,void **param_2,undefined4 param_3,undefined4 param_4,
                undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  void *_Src;
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  undefined4 local_c;
  void *local_8;
  undefined4 *local_4;
  
  _Src = *param_2;
  iVar4 = 0;
  local_c = 0;
  local_4 = (undefined4 *)0x0;
  local_8 = _Src;
  iVar2 = FUN_00a8a3f0(&local_c,&local_8,param_3,&DAT_00db59dc,param_5,param_6,param_7,param_8);
  if (iVar2 < 1) {
    return iVar2;
  }
  if (*param_1 != 0) {
    FUN_00a88e90(param_1,0);
  }
  iVar2 = FUN_00a88e00(&local_4,0);
  puVar1 = local_4;
  if ((iVar2 != 0) && (iVar2 = FUN_00a92a60(local_4[2],(int)local_8 - (int)_Src), iVar2 != 0)) {
    _memcpy(*(void **)(puVar1[2] + 4),_Src,(int)local_8 - (int)_Src);
    iVar2 = FUN_00a80ed0(local_c);
    if (0 < iVar2) {
      do {
        uVar3 = FUN_00a80ee0(local_c,iVar4);
        iVar5 = 0;
        iVar2 = FUN_00a80ed0(uVar3);
        if (0 < iVar2) {
          do {
            iVar2 = FUN_00a80ee0(uVar3,iVar5);
            *(int *)(iVar2 + 8) = iVar4;
            iVar2 = FUN_00a80df0(*puVar1,iVar2);
            if (iVar2 == 0) goto LAB_00a894bf;
            iVar5 = iVar5 + 1;
            iVar2 = FUN_00a80ed0(uVar3);
          } while (iVar5 < iVar2);
        }
        FUN_00a80ea0(uVar3);
        iVar4 = iVar4 + 1;
        iVar2 = FUN_00a80ed0(local_c);
      } while (iVar4 < iVar2);
    }
    FUN_00a80ea0(local_c);
    iVar2 = FUN_00a89200();
    if (iVar2 != 0) {
      puVar1[1] = 0;
      *param_1 = (int)puVar1;
      *param_2 = local_8;
      return iVar2;
    }
  }
LAB_00a894bf:
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00a8c2c0(puVar1,&DAT_00db5a14);
  }
  FUN_00a7f3c0(0xd,0x9e,0x3a,".\\crypto\\asn1\\x_name.c",0xdc);
  return 0;
}



undefined * FUN_00a89570(void)

{
  return &DAT_00db5aa0;
}



void FUN_00a89580(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00db5aa0);
  return;
}



void FUN_00a895a0(void)

{
  FUN_00a8bf10(&DAT_00db5aa0);
  return;
}



void FUN_00a895b0(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db5aa0);
  return;
}



undefined4 FUN_00a895d0(int *param_1,int param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  
  if (param_1 == (int *)0x0) {
    return 0;
  }
  if ((param_3 != -1) && (param_1[1] == 0)) {
    iVar1 = FUN_00a889c0();
    param_1[1] = iVar1;
    if (iVar1 == 0) {
      return 0;
    }
  }
  if (*param_1 != 0) {
    FUN_00a90760(*param_1);
  }
  *param_1 = param_2;
  if (param_3 != 0) {
    if (param_3 == -1) {
      if (param_1[1] != 0) {
        FUN_00a889d0(param_1[1]);
        param_1[1] = 0;
        return 1;
      }
    }
    else {
      FUN_00a9d500(param_1[1],param_3,param_4);
    }
  }
  return 1;
}



void FUN_00a89660(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)

{
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = *param_4;
  }
  if (param_2 != (undefined4 *)0x0) {
    if ((undefined4 *)param_4[1] == (undefined4 *)0x0) {
      *param_2 = 0xffffffff;
      return;
    }
    *param_2 = *(undefined4 *)param_4[1];
    if (param_3 != (undefined4 *)0x0) {
      *param_3 = *(undefined4 *)(param_4[1] + 4);
    }
  }
  return;
}



void FUN_00a896a0(undefined4 param_1,int param_2)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00a814c0(param_2,(-(uint)((*(byte *)(param_2 + 0xc) & 8) != 0) & 0xfffffffa) + 5,0);
  uVar1 = FUN_00a87490(uVar1);
  FUN_00a895d0(param_1,uVar1);
  return;
}



undefined4 FUN_00a896e0(uint param_1)

{
  if (param_1 < 0x1f) {
    return *(undefined4 *)(&DAT_00db5af0 + param_1 * 4);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00a89700(uint **param_1,byte *param_2,uint param_3,uint param_4,char *param_5,int param_6)

{
  code *pcVar1;
  uint uVar2;
  char *pcVar3;
  undefined4 uVar4;
  uint *puVar5;
  int iVar6;
  undefined4 uVar7;
  uint *local_c;
  uint **local_8;
  
  uVar2 = param_4;
  local_8 = (uint **)0x0;
  local_c = (uint *)0x0;
  if ((*(int *)(param_6 + 0x10) != 0) &&
     (pcVar1 = *(code **)(*(int *)(param_6 + 0x10) + 0x14), pcVar1 != (code *)0x0)) {
    uVar4 = (*pcVar1)(param_1,param_2,param_3,param_4,param_5,param_6);
    return uVar4;
  }
  if (*(int *)(param_6 + 4) == -4) {
    local_c = *param_1;
    if (local_c == (uint *)0x0) {
      local_c = (uint *)FUN_00a889c0();
      if (local_c == (uint *)0x0) goto LAB_00a89802;
      *param_1 = local_c;
    }
    if (uVar2 != *local_c) {
      FUN_00a9d500(local_c,uVar2,0);
    }
    local_8 = param_1;
    param_1 = (uint **)(local_c + 1);
  }
  if (10 < (int)uVar2) {
    if ((uVar2 != 0x102) && (uVar2 != 0x10a)) {
switchD_00a897bb_caseD_4:
      if (uVar2 == 0x1e) {
        if ((param_3 & 1) == 0) {
LAB_00a898cb:
          puVar5 = *param_1;
          if (puVar5 == (uint *)0x0) {
            puVar5 = (uint *)FUN_00a90d30(uVar2);
            if (puVar5 == (uint *)0x0) {
              uVar7 = 0x40b;
              uVar4 = 0x41;
              goto LAB_00a897f3;
            }
            *param_1 = puVar5;
          }
          else {
            puVar5[1] = uVar2;
          }
          pcVar3 = param_5;
          if (*param_5 != '\0') {
            if (puVar5[2] != 0) {
              FUN_00a85120(puVar5[2]);
            }
            puVar5[2] = (uint)param_2;
            *puVar5 = param_3;
            *pcVar3 = '\0';
            goto LAB_00a89995;
          }
          iVar6 = FUN_00a90c30(puVar5,param_2,param_3);
          if (iVar6 != 0) goto LAB_00a89995;
          FUN_00a7f3c0(0xd,0xcc,0x41,".\\crypto\\asn1\\tasn_dec.c",0x423);
          FUN_00a90d80(puVar5);
          *param_1 = (uint *)0x0;
          goto LAB_00a89802;
        }
        uVar7 = 0x3fb;
        uVar4 = 0xd6;
      }
      else {
        if ((uVar2 != 0x1c) || ((param_3 & 3) == 0)) goto LAB_00a898cb;
        uVar7 = 0x401;
        uVar4 = 0xd7;
      }
      goto LAB_00a897f3;
    }
switchD_00a897bb_caseD_2:
    iVar6 = FUN_00a9d7b0(param_1,&param_2,param_3);
    if (iVar6 != 0) {
      (*param_1)[1] = (*param_1)[1] & 0x100 | uVar2;
      goto LAB_00a89995;
    }
    goto LAB_00a89802;
  }
  if (uVar2 == 10) goto switchD_00a897bb_caseD_2;
  switch(uVar2) {
  case 1:
    if (param_3 == 1) {
      *param_1 = (uint *)(uint)*param_2;
      goto LAB_00a89995;
    }
    uVar7 = 0x3cb;
    uVar4 = 0x6a;
    break;
  case 2:
    goto switchD_00a897bb_caseD_2;
  case 3:
    iVar6 = FUN_00a9ddf0(param_1,&param_2,param_3);
    goto joined_r0x00a897d7;
  default:
    goto switchD_00a897bb_caseD_4;
  case 5:
    if (param_3 == 0) {
      *param_1 = (uint *)0x1;
      goto LAB_00a89995;
    }
    uVar7 = 0x3c1;
    uVar4 = 0x90;
    break;
  case 6:
    iVar6 = FUN_00a907d0(param_1,&param_2,param_3);
joined_r0x00a897d7:
    if (iVar6 != 0) {
LAB_00a89995:
      if ((local_c != (uint *)0x0) && (uVar2 == 5)) {
        local_c[1] = 0;
      }
      return 1;
    }
    goto LAB_00a89802;
  }
LAB_00a897f3:
  FUN_00a7f3c0(0xd,0xcc,uVar4,".\\crypto\\asn1\\tasn_dec.c",uVar7);
LAB_00a89802:
  FUN_00a889d0(local_c);
  if (local_8 != (uint **)0x0) {
    *local_8 = (uint *)0x0;
  }
  return 0;
}



undefined4 __thiscall FUN_00a899e0(char **param_1_00,int param_1)

{
  char *pcVar1;
  
  if (((1 < param_1) && (pcVar1 = *param_1_00, *pcVar1 == '\0')) && (pcVar1[1] == '\0')) {
    *param_1_00 = pcVar1 + 2;
    return 1;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00a89a10(int *param_1,int *param_2,undefined *param_3,byte *param_4,byte *param_5,int *param_6,
            int param_7,int param_8,int param_9,char param_10,char *param_11)

{
  int iVar1;
  char *pcVar2;
  byte bVar3;
  uint uVar4;
  int local_c;
  int local_8;
  int local_4;
  
  pcVar2 = param_11;
  local_4 = 0xa89a1a;
  iVar1 = *param_6;
  if ((param_11 == (char *)0x0) || (*param_11 == '\0')) {
    param_11 = (char *)iVar1;
    uVar4 = FUN_00a90eb0(&param_11,&local_4,&local_8,&local_c,param_7);
    if (pcVar2 != (char *)0x0) {
      *(int *)(pcVar2 + 0x10) = local_c;
      *(int *)(pcVar2 + 0xc) = local_8;
      *(uint *)(pcVar2 + 4) = uVar4;
      *(int *)(pcVar2 + 8) = local_4;
      *(int *)(pcVar2 + 0x14) = (int)param_11 - iVar1;
      *pcVar2 = '\x01';
      if (((uVar4 & 0x81) == 0) && (param_7 < ((int)param_11 - iVar1) + local_4)) {
        FUN_00a7f3c0(0xd,0x68,0x9b,".\\crypto\\asn1\\tasn_dec.c",0x511);
        *pcVar2 = '\0';
        return 0;
      }
    }
  }
  else {
    local_c = *(int *)(param_11 + 0x10);
    local_4 = *(int *)(param_11 + 8);
    uVar4 = *(uint *)(param_11 + 4);
    local_8 = *(int *)(param_11 + 0xc);
    param_11 = (char *)(iVar1 + *(int *)(param_11 + 0x14));
  }
  bVar3 = (byte)uVar4;
  if ((char)bVar3 < '\0') {
    FUN_00a7f3c0(0xd,0x68,0x66,".\\crypto\\asn1\\tasn_dec.c",0x51a);
    if (pcVar2 != (char *)0x0) {
      *pcVar2 = '\0';
    }
    return 0;
  }
  if (-1 < param_8) {
    if ((param_8 != local_8) || (param_9 != local_c)) {
      if (param_10 == '\0') {
        if (pcVar2 != (char *)0x0) {
          *pcVar2 = '\0';
        }
        FUN_00a7f3c0(0xd,0x68,0xa8,".\\crypto\\asn1\\tasn_dec.c",0x527);
        return 0;
      }
      return 0xffffffff;
    }
    if (pcVar2 != (char *)0x0) {
      *pcVar2 = '\0';
    }
  }
  if ((uVar4 & 1) != 0) {
    local_4 = (iVar1 - (int)param_11) + param_7;
  }
  if (param_4 != (byte *)0x0) {
    *param_4 = bVar3 & 1;
  }
  if (param_5 != (byte *)0x0) {
    *param_5 = bVar3 & 0x20;
  }
  if (param_1 != (int *)0x0) {
    *param_1 = local_4;
  }
  if (param_3 != (undefined *)0x0) {
    *param_3 = (undefined)local_c;
  }
  if (param_2 != (int *)0x0) {
    *param_2 = local_8;
  }
  *param_6 = (int)param_11;
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __fastcall
FUN_00a89bd0(undefined4 param_1_00,undefined4 param_2_00,int param_1,int *param_2,undefined4 param_3
            )

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint *unaff_ESI;
  undefined4 uVar5;
  undefined4 uVar6;
  char local_9;
  int local_8;
  int local_4;
  
  iVar1 = param_1;
  local_4 = 0xa89bda;
  if (param_1 == 0) {
    return 0;
  }
  local_8 = *param_2;
  if ((*unaff_ESI & 0x10) == 0) {
    uVar6 = FUN_00a8ab10(param_1,param_2,param_2_00);
    return uVar6;
  }
  iVar2 = FUN_00a89a10(&local_4,0,0,&local_9,&param_1,&local_8,param_2_00,unaff_ESI[1],
                       *unaff_ESI & 0xc0,param_1_00,param_3);
  iVar4 = local_4;
  iVar3 = local_8;
  if (iVar2 == 0) {
    uVar6 = 0x233;
  }
  else {
    if (iVar2 == -1) {
      return 0xffffffff;
    }
    if ((char)param_1 == '\0') {
      uVar6 = 0x23b;
      uVar5 = 0x78;
      goto LAB_00a89c8b;
    }
    iVar2 = FUN_00a8ab10(iVar1,&local_8,local_4);
    if (iVar2 != 0) {
      iVar4 = iVar4 + (iVar3 - local_8);
      if (local_9 == '\0') {
        if (iVar4 == 0) goto LAB_00a89d04;
        uVar5 = 0x259;
        uVar6 = 0x77;
      }
      else {
        iVar3 = FUN_00a899e0(iVar4);
        if (iVar3 != 0) {
LAB_00a89d04:
          *param_2 = local_8;
          return 1;
        }
        uVar5 = 0x24e;
        uVar6 = 0x89;
      }
      FUN_00a7f3c0(0xd,0x84,uVar6,".\\crypto\\asn1\\tasn_dec.c",uVar5);
      FUN_00a8c220(iVar1);
      return 0;
    }
    uVar6 = 0x243;
  }
  uVar5 = 0x3a;
LAB_00a89c8b:
  FUN_00a7f3c0(0xd,0x84,uVar5,".\\crypto\\asn1\\tasn_dec.c",uVar6);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __thiscall FUN_00a89d40(int param_1_00,char **param_1,char param_2)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  char *pcVar4;
  char *pcVar5;
  char *local_10;
  char *local_c;
  undefined local_8 [4];
  undefined4 local_4;
  
  local_4 = 0xa89d4a;
  if (param_2 == '\0') {
    *param_1 = *param_1 + param_1_00;
    return 1;
  }
  iVar3 = 1;
  pcVar4 = *param_1;
  if (0 < param_1_00) {
    do {
      if (((param_1_00 < 2) || (*pcVar4 != '\0')) || (pcVar4[1] != '\0')) {
        local_10 = pcVar4;
        bVar1 = FUN_00a90eb0(&local_10,&local_c,&local_4,local_8,param_1_00);
        if ((char)bVar1 < '\0') {
          FUN_00a7f3c0(0xd,0x68,0x66,".\\crypto\\asn1\\tasn_dec.c",0x51a);
          FUN_00a7f3c0(0xd,0xbe,0x3a,".\\crypto\\asn1\\tasn_dec.c",0x461);
          return 0;
        }
        if ((bVar1 & 1) != 0) {
          local_c = pcVar4 + (param_1_00 - (int)local_10);
        }
        if ((bVar1 & 1) == 0) {
          pcVar5 = local_10 + (int)local_c;
        }
        else {
          iVar3 = iVar3 + 1;
          pcVar5 = local_10;
        }
        iVar2 = (int)pcVar4 - (int)pcVar5;
      }
      else {
        pcVar5 = pcVar4 + 2;
        iVar3 = iVar3 + -1;
        if (iVar3 == 0) goto LAB_00a89e4b;
        iVar2 = -2;
      }
      param_1_00 = param_1_00 + iVar2;
      pcVar4 = pcVar5;
    } while (0 < param_1_00);
    if (iVar3 == 0) {
LAB_00a89e4b:
      *param_1 = pcVar5;
      return 1;
    }
  }
  FUN_00a7f3c0(0xd,0xbe,0x89,".\\crypto\\asn1\\tasn_dec.c",0x46c);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00a89e60(int *param_1,int **param_2,char *param_3,byte param_4,int param_5,int param_6,
            int param_7)

{
  int *piVar1;
  int *piVar2;
  char *_Size;
  byte bVar3;
  int iVar4;
  int iVar5;
  char *pcVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  int *local_18;
  char *local_14;
  int local_10;
  int local_c;
  undefined4 local_8;
  int *local_4;
  
  piVar1 = param_1;
  local_4 = (int *)0xa89e6a;
  param_4 = param_4 & 1;
  local_18 = *param_2;
  if ((param_1 == (int *)0x0) && (param_4 == 0)) {
    *param_2 = (int *)((int)local_18 + (int)param_3);
    return 1;
  }
  pcVar6 = param_3;
  if (0 < (int)param_3) {
    do {
      piVar2 = local_18;
      local_4 = local_18;
      if (((1 < (int)pcVar6) && (*(char *)local_18 == '\0')) &&
         (*(char *)((int)local_18 + 1) == '\0')) {
        local_18 = (int *)((int)local_18 + 2);
        if (param_4 == 0) {
          FUN_00a7f3c0(0xd,0x6a,0x9f,".\\crypto\\asn1\\tasn_dec.c",0x49c);
          return 0;
        }
        goto LAB_00a8a0bc;
      }
      param_1 = local_4;
      bVar3 = FUN_00a90eb0(&param_1,&local_14,&local_10,&local_c,pcVar6);
      if ((char)bVar3 < '\0') {
        uVar8 = 0x51a;
        uVar7 = 0x66;
LAB_00a8a033:
        FUN_00a7f3c0(0xd,0x68,uVar7,".\\crypto\\asn1\\tasn_dec.c",uVar8);
        FUN_00a7f3c0(0xd,0x6a,0x3a,".\\crypto\\asn1\\tasn_dec.c",0x4a6);
        return 0;
      }
      if ((-1 < param_5) && ((param_5 != local_10 || (param_6 != local_c)))) {
        uVar8 = 0x527;
        uVar7 = 0xa8;
        goto LAB_00a8a033;
      }
      if ((bVar3 & 1) != 0) {
        local_14 = (char *)((int)piVar2 + ((int)pcVar6 - (int)param_1));
      }
      _Size = local_14;
      local_8 = CONCAT31(local_8._1_3_,bVar3) & 0xffffff01;
      local_18 = param_1;
      if ((bVar3 & 0x20) == 0) {
        if (local_14 != (char *)0x0) {
          if (piVar1 != (int *)0x0) {
            iVar4 = *piVar1;
            iVar5 = FUN_00a92b40(piVar1,local_14 + iVar4);
            if (iVar5 == 0) {
              FUN_00a7f3c0(0xd,0x8c,0x41,".\\crypto\\asn1\\tasn_dec.c",0x4cc);
              return 0;
            }
            _memcpy((void *)(piVar1[1] + iVar4),local_18,(size_t)_Size);
          }
          local_18 = (int *)((int)local_18 + (int)_Size);
        }
      }
      else {
        if (4 < param_7) {
          FUN_00a7f3c0(0xd,0x6a,0xc5,".\\crypto\\asn1\\tasn_dec.c",0x4b0);
          return 0;
        }
        iVar4 = FUN_00a89e60(piVar1,&local_18,local_14,local_8,param_5,param_6,param_7 + 1);
        if (iVar4 == 0) {
          return 0;
        }
      }
      pcVar6 = (char *)((int)local_4 + ((int)pcVar6 - (int)local_18));
    } while (0 < (int)pcVar6);
  }
  if (param_4 != 0) {
    FUN_00a7f3c0(0xd,0x6a,0x89,".\\crypto\\asn1\\tasn_dec.c",0x4bd);
    return 0;
  }
LAB_00a8a0bc:
  *param_2 = local_18;
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __thiscall
FUN_00a8a0d0(int param_1_00,int param_1,int *param_2,undefined4 param_3,char *param_4,
            undefined4 param_5,undefined4 param_6,undefined *param_7)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  char local_1e;
  char local_1d;
  int local_1c;
  int local_18;
  undefined4 local_14;
  undefined4 local_10;
  int local_c;
  int local_8;
  undefined4 local_4;
  
  local_4 = 0xa8a0da;
  local_1e = '\0';
  if (param_1 == 0) {
    FUN_00a7f3c0(0xd,0x6c,0x7d,".\\crypto\\asn1\\tasn_dec.c",0x30c);
    return 0;
  }
  if (*param_4 == '\x05') {
    local_18 = param_1_00;
    param_1_00 = -1;
  }
  else {
    local_18 = *(int *)(param_4 + 4);
  }
  iVar1 = local_18;
  if (local_18 == -4) {
    if (-1 < param_1_00) {
      FUN_00a7f3c0(0xd,0x6c,0x7f,".\\crypto\\asn1\\tasn_dec.c",799);
      return 0;
    }
    if ((char)param_6 != '\0') {
      FUN_00a7f3c0(0xd,0x6c,0x7e,".\\crypto\\asn1\\tasn_dec.c",0x325);
      return 0;
    }
    local_1c = *param_2;
    iVar1 = FUN_00a89a10(0,&local_18,&local_1d,0,0,&local_1c,param_3,0xffffffff,0,0,param_7);
    if (iVar1 == 0) {
      uVar5 = 0x32e;
      goto LAB_00a8a222;
    }
    iVar1 = local_18;
    if (local_1d != '\0') {
      iVar1 = -3;
    }
  }
  if (param_1_00 == -1) {
    param_5 = 0;
    param_1_00 = iVar1;
  }
  local_1c = *param_2;
  iVar2 = FUN_00a89a10(&local_18,0,0,&local_14,&local_1d,&local_1c,param_3,param_1_00,param_5,
                       param_6,param_7);
  if (iVar2 == 0) {
    uVar5 = 0x33f;
LAB_00a8a222:
    FUN_00a7f3c0(0xd,0x6c,0x3a,".\\crypto\\asn1\\tasn_dec.c",uVar5);
    return 0;
  }
  if (iVar2 == -1) {
    return 0xffffffff;
  }
  local_10 = 0;
  if ((iVar1 == 0x10) || (iVar1 == 0x11)) {
    if (iVar1 == -3) goto LAB_00a8a31a;
    if (local_1d == '\0') {
      FUN_00a7f3c0(0xd,0x6c,0x9c,".\\crypto\\asn1\\tasn_dec.c",0x354);
      return 0;
    }
LAB_00a8a325:
    iVar2 = *param_2;
    if ((char)local_14 == '\0') {
      iVar3 = (local_18 - iVar2) + local_1c;
      iVar4 = local_1c + local_18;
      local_8 = 0;
      goto LAB_00a8a393;
    }
    iVar3 = FUN_00a89d40(&local_1c,local_14);
    if (iVar3 != 0) {
      iVar3 = local_1c - iVar2;
      iVar4 = local_1c;
      goto LAB_00a8a393;
    }
  }
  else {
    if (iVar1 == -3) {
LAB_00a8a31a:
      if (param_7 != (undefined *)0x0) {
        *param_7 = 0;
      }
      goto LAB_00a8a325;
    }
    if (local_1d == '\0') {
      iVar4 = local_1c + local_18;
      iVar3 = local_18;
      iVar2 = local_1c;
    }
    else {
      local_c = 0;
      local_4 = 0;
      local_8 = 0;
      iVar2 = FUN_00a89e60(&local_c,&local_1c,local_18,local_14,0xffffffff,0,0);
      iVar3 = local_c;
      if (iVar2 == 0) {
        local_1e = '\x01';
        goto LAB_00a8a3c8;
      }
      iVar2 = FUN_00a92b40(&local_c,local_c + 1);
      if (iVar2 == 0) {
        FUN_00a7f3c0(0xd,0x6c,0x41,".\\crypto\\asn1\\tasn_dec.c",0x37c);
        return 0;
      }
      *(undefined *)(local_8 + iVar3) = 0;
      local_1e = '\x01';
      iVar4 = local_1c;
      iVar2 = local_8;
    }
LAB_00a8a393:
    iVar1 = FUN_00a89700(param_1,iVar2,iVar3,iVar1,&local_1e,param_4);
    if (iVar1 != 0) {
      *param_2 = iVar4;
      local_10 = 1;
    }
  }
  if (local_1e == '\0') {
    return local_10;
  }
LAB_00a8a3c8:
  if (local_8 != 0) {
    FUN_00a85120(local_8);
  }
  return local_10;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00a8a3f0(int *param_1,byte **param_2,int *param_3,undefined *param_4,int param_5,
            undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  int *piVar1;
  byte **ppbVar2;
  undefined *puVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  byte *pbVar7;
  int *piVar8;
  byte *pbVar9;
  bool bVar10;
  undefined8 uVar11;
  undefined4 uVar12;
  undefined4 uVar13;
  char local_1d;
  byte *local_1c;
  int local_18;
  byte *local_14;
  code *local_10;
  byte *local_c;
  int local_8;
  byte *pbStack_4;
  
  uVar12 = param_8;
  iVar5 = param_5;
  puVar3 = param_4;
  ppbVar2 = param_2;
  piVar1 = param_1;
  pbStack_4 = (byte *)0xa8a3fa;
  iVar6 = *(int *)(param_4 + 0x10);
  local_c = (byte *)0x0;
  local_1c = (byte *)0x0;
  local_14 = (byte *)0x0;
  param_4 = (undefined *)((uint)param_4 & 0xffffff00);
  if (param_1 == (int *)0x0) {
    return 0;
  }
  if ((iVar6 == 0) || (local_10 = *(code **)(iVar6 + 0x10), local_10 == (code *)0x0)) {
    local_10 = (code *)0x0;
  }
  local_8 = iVar6;
  switch(*puVar3) {
  case 0:
    if (*(int *)(puVar3 + 8) == 0) {
      uVar12 = FUN_00a8a0d0(param_1,param_2,param_3,puVar3,param_6,param_7,param_8);
      return uVar12;
    }
    if ((param_5 == -1) && ((char)param_7 == '\0')) {
      uVar12 = FUN_00a89bd0(param_1,param_2,param_8);
      return uVar12;
    }
    uVar13 = 0xc0;
    uVar12 = 0xaa;
    break;
  case 1:
  case 6:
    local_1c = *param_2;
    param_1 = param_3;
    uVar12 = param_6;
    if (param_5 == -1) {
      iVar5 = 0x10;
      uVar12 = 0;
    }
    iVar5 = FUN_00a89a10(&param_3,0,0,&param_4,&local_1d,&local_1c,param_3,iVar5,uVar12,param_7,
                         param_8);
    if (iVar5 == 0) {
      uVar13 = 0x17d;
      uVar12 = 0x3a;
    }
    else {
      if (iVar5 == -1) {
        return 0xffffffff;
      }
      if ((iVar6 == 0) || ((*(byte *)(iVar6 + 4) & 4) == 0)) {
        param_1 = (int *)CONCAT31(param_1._1_3_,(byte)param_4);
        piVar8 = param_3;
      }
      else {
        piVar8 = (int *)(((int)*param_2 - (int)local_1c) + (int)param_1);
        param_1 = (int *)CONCAT31(param_1._1_3_,1);
      }
      if (local_1d == '\0') {
        uVar13 = 0x18c;
        uVar12 = 0x95;
      }
      else if ((*piVar1 == 0) && (iVar6 = FUN_00a8be40(piVar1,puVar3), iVar6 == 0)) {
        uVar13 = 0x193;
        uVar12 = 0x3a;
      }
      else {
        if ((local_10 != (code *)0x0) && (iVar6 = (*local_10)(4,piVar1,puVar3,0), iVar6 == 0))
        goto LAB_00a8aa71;
        local_18 = *(int *)(puVar3 + 8);
        local_14 = (byte *)0x0;
        if (0 < *(int *)(puVar3 + 0xc)) {
          do {
            pbVar7 = (byte *)FUN_00a9e290(piVar1,local_18,1);
            pbVar9 = local_c;
            if (pbVar7 == (byte *)0x0) goto LAB_00a8aa89;
            local_8 = FUN_00a9e270(piVar1,pbVar7);
            if (piVar8 == (int *)0x0) break;
            pbStack_4 = local_1c;
            uVar11 = FUN_00a899e0(piVar8);
            if ((int)uVar11 != 0) {
              if ((byte)param_4 == '\0') {
                uVar13 = 0x1ac;
                uVar12 = 0x9f;
                goto LAB_00a8aa7d;
              }
              piVar8 = (int *)((int)piVar8 + ((int)((ulonglong)uVar11 >> 0x20) - (int)local_1c));
              goto LAB_00a8a9b4;
            }
            iVar6 = FUN_00a89bd0(local_8,&local_1c,param_8);
            pbVar9 = pbVar7;
            if (iVar6 == 0) goto LAB_00a8aa89;
            if (iVar6 == -1) {
              FUN_00a8c220(local_8,pbVar7);
            }
            else {
              piVar8 = (int *)((int)piVar8 + ((int)pbStack_4 - (int)local_1c));
            }
            local_18 = local_18 + 0x14;
            local_14 = local_14 + 1;
          } while ((int)local_14 < *(int *)(puVar3 + 0xc));
        }
        if (((byte)param_4 == '\0') || (iVar6 = FUN_00a899e0(piVar8), iVar6 != 0)) {
LAB_00a8a9b4:
          if (((char)param_1 != '\0') || (piVar8 == (int *)0x0)) {
            if ((int)local_14 < *(int *)(puVar3 + 0xc)) {
              do {
                pbVar7 = (byte *)FUN_00a9e290(piVar1,local_18,1);
                pbVar9 = local_c;
                if (pbVar7 == (byte *)0x0) goto LAB_00a8aa89;
                if ((*pbVar7 & 1) == 0) {
                  uVar13 = 0x1f5;
                  uVar12 = 0x79;
                  local_c = pbVar7;
                  goto LAB_00a8aa7d;
                }
                uVar12 = FUN_00a9e270(piVar1,pbVar7);
                FUN_00a8c220(uVar12,pbVar7);
                local_18 = local_18 + 0x14;
                local_14 = local_14 + 1;
              } while ((int)local_14 < *(int *)(puVar3 + 0xc));
            }
            iVar6 = FUN_00a9e180(piVar1,*param_2,(int)local_1c - (int)*param_2,puVar3);
            if (iVar6 != 0) {
              *param_2 = local_1c;
              if (local_10 == (code *)0x0) {
                return 1;
              }
              iVar6 = (*local_10)(5,piVar1,puVar3,0);
              goto joined_r0x00a8a78b;
            }
            goto LAB_00a8aa71;
          }
          uVar13 = 0x1dd;
          uVar12 = 0x94;
        }
        else {
          uVar13 = 0x1d6;
          uVar12 = 0x89;
        }
      }
    }
    break;
  case 2:
    if ((local_10 == (code *)0x0) || (iVar6 = (*local_10)(4,param_1,puVar3,0), iVar6 != 0)) {
      if ((*piVar1 == 0) && (iVar6 = FUN_00a8be40(piVar1,puVar3), iVar6 == 0)) {
        uVar13 = 0x13e;
        uVar12 = 0x3a;
      }
      else {
        local_1c = *param_2;
        pbVar9 = *(byte **)(puVar3 + 8);
        iVar6 = 0;
        bVar10 = *(int *)(puVar3 + 0xc) == 0;
        if (0 < *(int *)(puVar3 + 0xc)) {
          do {
            uVar12 = FUN_00a9e270(piVar1,pbVar9);
            iVar5 = FUN_00a89bd0(uVar12,&local_1c,param_8);
            if (iVar5 != -1) {
              if (iVar5 < 1) {
                uVar13 = 0x153;
                uVar12 = 0x3a;
                local_c = pbVar9;
                goto LAB_00a8aa7d;
              }
              break;
            }
            iVar6 = iVar6 + 1;
            pbVar9 = pbVar9 + 0x14;
          } while (iVar6 < *(int *)(puVar3 + 0xc));
          bVar10 = iVar6 == *(int *)(puVar3 + 0xc);
        }
        if (!bVar10) {
          FUN_00a9e080(piVar1,iVar6,puVar3);
          *param_2 = local_1c;
          if (local_10 == (code *)0x0) {
            return 1;
          }
          iVar6 = (*local_10)(5,piVar1,puVar3,0);
joined_r0x00a8a78b:
          if (iVar6 != 0) {
            return 1;
          }
          goto LAB_00a8aa71;
        }
        if ((char)param_7 != '\0') {
          FUN_00a8c2e0(piVar1,puVar3);
          return 0xffffffff;
        }
        uVar13 = 0x162;
        uVar12 = 0x8f;
      }
    }
    else {
LAB_00a8aa71:
      uVar13 = 0x205;
      uVar12 = 100;
    }
    break;
  case 3:
    if ((char)param_7 != '\0') {
      local_1c = *param_2;
      iVar6 = param_5;
      if (param_5 == -1) {
        iVar6 = *(int *)(puVar3 + 4);
      }
      iVar6 = FUN_00a89a10(0,0,0,0,0,&local_1c,param_3,iVar6,param_6,1,param_8);
      if (iVar6 == 0) {
        uVar13 = 0x106;
        uVar12 = 0x3a;
        break;
      }
      if (iVar6 == -1) {
        return 0xffffffff;
      }
    }
    if (iVar5 != -1) {
      local_14 = *ppbVar2;
      param_4 = (undefined *)CONCAT31(param_4._1_3_,*local_14);
      if (local_1c == (byte *)0x0) {
        uVar13 = 0x123;
        uVar12 = 0x3a;
        break;
      }
      *local_14 = *local_1c & 0x20 | puVar3[4];
    }
    iVar6 = (**(code **)(local_8 + 8))(piVar1,ppbVar2,param_3);
    if (iVar5 != -1) {
      *local_14 = (byte)param_4;
    }
    if (iVar6 != 0) {
      return 1;
    }
    uVar13 = 0x132;
    uVar12 = 0x3a;
    break;
  case 4:
    uVar12 = (**(code **)(iVar6 + 0x10))
                       (param_1,param_2,param_3,puVar3,param_5,param_6,param_7,param_8);
    return uVar12;
  case 5:
    local_1c = *param_2;
    iVar6 = FUN_00a89a10(0,&param_1,&param_4,0,0,&local_1c,param_3,0xffffffff,0,1,param_8);
    if (iVar6 == 0) {
      uVar13 = 0xd2;
      uVar12 = 0x3a;
    }
    else if ((byte)param_4 == '\0') {
      uVar4 = FUN_00a896e0(param_1);
      if ((*(uint *)(puVar3 + 4) & uVar4) != 0) {
        uVar12 = FUN_00a8a0d0(piVar1,ppbVar2,param_3,puVar3,0,0,uVar12);
        return uVar12;
      }
      if ((char)param_7 != '\0') {
        return 0xffffffff;
      }
      uVar13 = 0xe6;
      uVar12 = 0x8c;
    }
    else {
      if ((char)param_7 != '\0') {
        return 0xffffffff;
      }
      uVar13 = 0xdc;
      uVar12 = 0x8b;
    }
    break;
  default:
    goto switchD_00a8a44e_caseD_7;
  }
LAB_00a8aa7d:
  FUN_00a7f3c0(0xd,0x78,uVar12,".\\crypto\\asn1\\tasn_dec.c",uVar13);
  pbVar9 = local_c;
LAB_00a8aa89:
  local_c = pbVar9;
  FUN_00a8c2e0(piVar1,puVar3);
  if (local_c != (byte *)0x0) {
    FUN_00a7f690(4,"Field=",*(undefined4 *)(local_c + 0xc),", Type=",*(undefined4 *)(puVar3 + 0x18))
    ;
    return 0;
  }
  FUN_00a7f690(2,"Type=",*(undefined4 *)(puVar3 + 0x18));
switchD_00a8a44e_caseD_7:
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00a8ab10(int *param_1,char **param_2,char *param_3,uint *param_4,undefined4 param_5,
            undefined4 param_6)

{
  char *pcVar1;
  uint *puVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  char *pcVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  char local_9;
  char *local_8;
  undefined4 local_4;
  
  uVar8 = param_6;
  puVar2 = param_4;
  local_4 = 0xa8ab1a;
  if (param_1 == (int *)0x0) {
    return 0;
  }
  local_8 = *param_2;
  uVar3 = *param_4;
  uVar6 = uVar3 & 0xc0;
  if ((uVar3 & 6) == 0) {
    if ((uVar3 & 8) == 0) {
      uVar8 = (*(code *)param_4[4])(0xffffffff,0,param_5,param_6);
      iVar4 = FUN_00a8a3f0(param_1,&local_8,param_3,uVar8);
      if (iVar4 != 0) goto LAB_00a8adef;
      uVar9 = 0x2ef;
    }
    else {
      uVar8 = (*(code *)param_4[4])(param_4[1],uVar6,param_5,param_6);
      iVar4 = FUN_00a8a3f0(param_1,&local_8,param_3,uVar8);
      if (iVar4 != 0) {
LAB_00a8adef:
        if (iVar4 == -1) {
          return 0xffffffff;
        }
LAB_00a8ae03:
        *param_2 = local_8;
        return 1;
      }
      uVar9 = 0x2e1;
    }
    uVar8 = 0x3a;
  }
  else {
    if ((uVar3 & 8) == 0) {
      uVar6 = 0;
      uVar3 = ((int)(char)uVar3 & 2U | 0x20) >> 1;
    }
    else {
      uVar3 = param_4[1];
    }
    iVar4 = FUN_00a89a10(&param_3,0,0,&local_9,0,&local_8,param_3,uVar3,uVar6,param_5,param_6);
    if (iVar4 == 0) {
      FUN_00a7f3c0(0xd,0x83,0x3a,".\\crypto\\asn1\\tasn_dec.c",0x293);
      return 0;
    }
    if (iVar4 == -1) {
      return 0xffffffff;
    }
    iVar4 = *param_1;
    if (iVar4 == 0) {
      iVar4 = FUN_00a81010();
      *param_1 = iVar4;
    }
    else {
      iVar5 = FUN_00a80ed0(iVar4);
      while (0 < iVar5) {
        local_4 = FUN_00a80e50(iVar4);
        uVar9 = (*(code *)puVar2[4])();
        FUN_00a8c2e0(&local_4,uVar9);
        iVar5 = FUN_00a80ed0(iVar4);
      }
    }
    pcVar7 = param_3;
    pcVar1 = local_8;
    if (*param_1 == 0) {
      uVar9 = 0x2ab;
      uVar8 = 0x41;
    }
    else {
      while (local_8 = pcVar1, 0 < (int)pcVar7) {
        if (((1 < (int)pcVar7) && (*pcVar1 == '\0')) && (pcVar1[1] == '\0')) {
          local_8 = pcVar1 + 2;
          if (local_9 == '\0') {
            FUN_00a7f3c0(0xd,0x83,0x9f,".\\crypto\\asn1\\tasn_dec.c",0x2ba);
            FUN_00a8c220(param_1,puVar2);
            return 0;
          }
          goto LAB_00a8ae03;
        }
        local_4 = 0;
        uVar9 = (*(code *)puVar2[4])(0xffffffff,0,0,uVar8);
        iVar4 = FUN_00a8a3f0(&local_4,&local_8,pcVar7,uVar9);
        if (iVar4 == 0) {
          FUN_00a7f3c0(0xd,0x83,0x3a,".\\crypto\\asn1\\tasn_dec.c",0x2c7);
          FUN_00a8c220(param_1,puVar2);
          return 0;
        }
        pcVar7 = pcVar1 + ((int)pcVar7 - (int)local_8);
        iVar4 = FUN_00a80df0(*param_1,local_4);
        pcVar1 = local_8;
        if (iVar4 == 0) {
          FUN_00a7f3c0(0xd,0x83,0x41,".\\crypto\\asn1\\tasn_dec.c",0x2cf);
          FUN_00a8c220(param_1,puVar2);
          return 0;
        }
      }
      if (local_9 == '\0') goto LAB_00a8ae03;
      uVar9 = 0x2d5;
      uVar8 = 0x89;
    }
  }
  FUN_00a7f3c0(0xd,0x83,uVar8,".\\crypto\\asn1\\tasn_dec.c",uVar9);
  FUN_00a8c220(param_1,puVar2);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00a8ae20(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  undefined4 local_1c;
  undefined local_18 [20];
  undefined4 uStack_4;
  
  uStack_4 = 0xa8ae2a;
  local_1c = 0;
  if (param_1 == (undefined4 *)0x0) {
    param_1 = &local_1c;
  }
  local_18[0] = 0;
  iVar1 = FUN_00a8a3f0(param_1,param_2,param_3,param_4,0xffffffff,0,0,local_18);
  if (0 < iVar1) {
    return *param_1;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a8ae80(int *param_1,int param_2,uint *param_3,uint param_4,uint param_5)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  uint local_24;
  uint local_20;
  undefined4 uStack_1c;
  int local_18;
  uint local_14;
  uint local_10;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa8ae8a;
  uVar4 = *param_3;
  if ((uVar4 & 0x18) == 0) {
    if (param_4 == 0xffffffff) {
      local_24 = 0xffffffff;
      local_20 = 0;
    }
    else {
      local_24 = param_4;
      local_20 = param_5 & 0xc0;
    }
  }
  else {
    if (param_4 != 0xffffffff) {
      return 0xffffffff;
    }
    local_24 = param_3[1];
    local_20 = uVar4 & 0xc0;
  }
  uVar7 = param_5 & 0xffffff3f;
  if (((uVar4 & 0x800) == 0) || (iVar5 = 2, (param_5 & 0x800) == 0)) {
    iVar5 = 1;
  }
  if ((uVar4 & 6) == 0) {
    if ((uVar4 & 0x10) == 0) {
      uVar2 = (*(code *)param_3[4])(local_24,local_20 | uVar7);
      uVar2 = FUN_00a8b450(param_1,param_2,uVar2);
      return uVar2;
    }
    uVar2 = (*(code *)param_3[4])(0xffffffff,uVar7);
    iVar3 = FUN_00a8b450(param_1,0,uVar2);
    if (iVar3 == 0) {
      return 0;
    }
    uStack_1c = FUN_00a90b80(iVar5,iVar3,local_24);
    if (param_2 != 0) {
      FUN_00a90fd0(param_2,iVar5,iVar3,local_24,local_20);
      uVar2 = (*(code *)param_3[4])(0xffffffff,uVar7);
      FUN_00a8b450(param_1,param_2,uVar2);
      if (iVar5 == 2) {
        FUN_00a90b60(param_2);
      }
    }
  }
  else {
    iVar3 = *param_1;
    iVar8 = 0;
    if (iVar3 == 0) {
      return 0;
    }
    if ((uVar4 & 2) == 0) {
      local_18 = 0;
    }
    else {
      local_18 = 1;
      if ((uVar4 & 4) != 0) {
        local_18 = 2;
      }
    }
    if ((local_24 == 0xffffffff) || (local_14 = local_24, local_10 = local_20, (uVar4 & 0x10) != 0))
    {
      local_10 = 0;
      local_14 = (local_18 != 0) + 0x10;
    }
    iVar6 = 0;
    iVar1 = FUN_00a80ed0(iVar3);
    if (0 < iVar1) {
      do {
        local_8 = FUN_00a80ee0(iVar3,iVar6);
        uVar2 = (*(code *)param_3[4])(0xffffffff,uVar7);
        iVar1 = FUN_00a8b450(&local_8,0,uVar2);
        iVar8 = iVar8 + iVar1;
        iVar6 = iVar6 + 1;
        iVar1 = FUN_00a80ed0(iVar3);
      } while (iVar6 < iVar1);
    }
    uStack_1c = FUN_00a90b80(iVar5,iVar8,local_14);
    uVar4 = uVar4 & 0x10;
    uStack_4 = uStack_1c;
    if (uVar4 != 0) {
      uStack_1c = FUN_00a90b80(iVar5,uStack_1c,local_24);
    }
    if (param_2 != 0) {
      if (uVar4 != 0) {
        FUN_00a90fd0(param_2,iVar5,uStack_4,local_24,local_20);
      }
      FUN_00a90fd0(param_2,iVar5,iVar8,local_14,local_10);
      uVar2 = (*(code *)param_3[4])(local_18,uVar7);
      FUN_00a8b790(iVar3,param_2,iVar8,uVar2);
      if ((iVar5 == 2) && (FUN_00a90b60(param_2), uVar4 != 0)) {
        FUN_00a90b60(param_2);
        return uStack_1c;
      }
    }
  }
  return uStack_1c;
}



size_t FUN_00a8b1e0(size_t **param_1,void *param_2,size_t *param_3,char *param_4)

{
  code *pcVar1;
  size_t *psVar2;
  size_t sVar3;
  undefined4 *_Src;
  
  if ((*(int *)(param_4 + 0x10) != 0) &&
     (pcVar1 = *(code **)(*(int *)(param_4 + 0x10) + 0x18), pcVar1 != (code *)0x0)) {
    sVar3 = (*pcVar1)(param_1,param_2,param_3,param_4);
    return sVar3;
  }
  if (((*param_4 != '\0') || (*(int *)(param_4 + 4) != 1)) && (*param_1 == (size_t *)0x0)) {
    return 0xffffffff;
  }
  if (*param_4 == '\x05') {
    sVar3 = (*param_1)[1];
    *param_3 = sVar3;
  }
  else if (*(int *)(param_4 + 4) == -4) {
    psVar2 = *param_1;
    sVar3 = *psVar2;
    *param_3 = sVar3;
    param_1 = (size_t **)(psVar2 + 1);
  }
  else {
    sVar3 = *param_3;
  }
  if ((int)sVar3 < 0xb) {
    if (sVar3 == 10) {
switchD_00a8b266_caseD_2:
      sVar3 = FUN_00a9d6a0(*param_1,-(uint)(param_2 != (void *)0x0) & (uint)&param_2);
      return sVar3;
    }
    switch(sVar3) {
    case 1:
      psVar2 = *param_1;
      if (psVar2 == (size_t *)0xffffffff) {
        return 0xffffffff;
      }
      if (*(int *)(param_4 + 4) != -4) {
        if (psVar2 == (size_t *)0x0) {
          if (*(int *)(param_4 + 0x14) == 0) {
            return 0xffffffff;
          }
        }
        else if (0 < *(int *)(param_4 + 0x14)) {
          return 0xffffffff;
        }
      }
      param_4 = (char *)CONCAT31(param_4._1_3_,(char)psVar2);
      _Src = &param_4;
      sVar3 = 1;
      break;
    case 2:
      goto switchD_00a8b266_caseD_2;
    case 3:
      sVar3 = FUN_00a9dd20(*param_1,-(uint)(param_2 != (void *)0x0) & (uint)&param_2);
      return sVar3;
    default:
      goto switchD_00a8b266_caseD_4;
    case 5:
      _Src = (undefined4 *)0x0;
      sVar3 = 0;
      break;
    case 6:
      _Src = (undefined4 *)(*param_1)[4];
      sVar3 = (*param_1)[3];
    }
  }
  else {
    if ((sVar3 == 0x102) || (sVar3 == 0x10a)) goto switchD_00a8b266_caseD_2;
switchD_00a8b266_caseD_4:
    psVar2 = *param_1;
    if ((*(int *)(param_4 + 0x14) == 0x800) && ((*(byte *)(psVar2 + 3) & 0x10) != 0)) {
      if (param_2 != (void *)0x0) {
        psVar2[2] = (size_t)param_2;
        *psVar2 = 0;
      }
      return 0xfffffffe;
    }
    _Src = (undefined4 *)psVar2[2];
    sVar3 = *psVar2;
  }
  if ((param_2 != (void *)0x0) && (sVar3 != 0)) {
    _memcpy(param_2,_Src,sVar3);
  }
  return sVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a8b360(undefined4 param_1,int *param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  int unaff_EBX;
  int iVar2;
  int local_8;
  int local_4;
  
  local_4 = 0xa8b36a;
  local_8 = *(int *)(unaff_EBX + 4);
  iVar2 = 0;
  iVar1 = FUN_00a8b1e0(param_1,0,&local_8);
  if (((local_8 == 0x10) || (local_8 == 0x11)) || (local_4 = 1, local_8 == -3)) {
    local_4 = 0;
  }
  if (iVar1 == -1) {
    return 0;
  }
  if (iVar1 == -2) {
    iVar2 = 2;
    iVar1 = 0;
  }
  if (param_3 == -1) {
    param_3 = local_8;
  }
  if (param_2 != (int *)0x0) {
    if (local_4 != 0) {
      FUN_00a90fd0(param_2,iVar2,iVar1,param_3,param_4);
    }
    FUN_00a8b1e0(param_1,*param_2,&local_8);
    if (iVar2 == 0) {
      *param_2 = *param_2 + iVar1;
    }
    else {
      FUN_00a90b60(param_2);
    }
  }
  if (local_4 != 0) {
    iVar2 = FUN_00a90b80(iVar2,iVar1,param_3);
    return iVar2;
  }
  return iVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a8b450(int *param_1,byte **param_2,char *param_3,int param_4,uint param_5)

{
  int *piVar1;
  char *pcVar2;
  code *pcVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  int local_10;
  int local_c;
  code *local_8;
  byte *local_4;
  
  pcVar2 = param_3;
  iVar4 = *(int *)(param_3 + 0x10);
  local_4 = (byte *)0x0;
  local_c = 1;
  local_8 = (code *)0x0;
  if ((*param_3 != '\0') && (*param_1 == 0)) {
    return 0;
  }
  if ((iVar4 != 0) && (*(code **)(iVar4 + 0x10) != (code *)0x0)) {
    local_8 = *(code **)(iVar4 + 0x10);
  }
  pcVar3 = local_8;
  switch(*param_3) {
  case '\0':
    if (*(int *)(param_3 + 8) == 0) {
      uVar6 = FUN_00a8b360(param_1,param_2,param_4,param_5);
      return uVar6;
    }
    uVar6 = FUN_00a8ae80(param_1,param_2,*(int *)(param_3 + 8));
    return uVar6;
  case '\x02':
    if ((local_8 == (code *)0x0) || (iVar4 = (*local_8)(6,param_1,param_3,0), iVar4 != 0)) {
      iVar4 = FUN_00a9e060(param_1,param_3);
      if ((-1 < iVar4) && (iVar4 < *(int *)(param_3 + 0xc))) {
        iVar4 = *(int *)(param_3 + 8) + iVar4 * 0x14;
        uVar6 = FUN_00a9e270(param_1,iVar4);
        uVar6 = FUN_00a8ae80(uVar6,param_2,iVar4,0xffffffff,param_5);
        return uVar6;
      }
      if (pcVar3 != (code *)0x0) {
        (*pcVar3)(7,param_1,param_3,0);
      }
    }
    break;
  case '\x03':
    if (param_2 != (byte **)0x0) {
      local_4 = *param_2;
    }
    uVar6 = (**(code **)(iVar4 + 0xc))(*param_1,param_2);
    if (param_2 != (byte **)0x0) {
      if (param_4 != -1) {
        *local_4 = *local_4 & 0x20 | (byte)param_5 | (byte)param_4;
        return uVar6;
      }
      return uVar6;
    }
    return uVar6;
  case '\x04':
    uVar6 = (**(code **)(iVar4 + 0x14))(param_1,param_2,param_3,param_4,param_5);
    return uVar6;
  case '\x05':
    uVar6 = FUN_00a8b360(param_1,param_2,0xffffffff,param_5);
    return uVar6;
  case '\x06':
    if ((param_5 & 0x800) != 0) {
      local_c = 2;
    }
  case '\x01':
    iVar4 = FUN_00a9e200(&local_10,param_2,param_1,param_3);
    if (-1 < iVar4) {
      if (0 < iVar4) {
        return local_10;
      }
      local_10 = 0;
      if (param_4 == -1) {
        param_5 = param_5 & 0xffffff3f;
        param_4 = 0x10;
      }
      if ((pcVar3 == (code *)0x0) || (iVar4 = (*pcVar3)(6,param_1,param_3,0), iVar4 != 0)) {
        iVar4 = 0;
        piVar1 = (int *)(param_3 + 0xc);
        param_3 = (char *)*(int *)(param_3 + 8);
        if (0 < *piVar1) {
          do {
            iVar5 = FUN_00a9e290(param_1,param_3,1);
            if (iVar5 == 0) {
              return 0;
            }
            uVar6 = FUN_00a9e270(param_1,iVar5);
            iVar5 = FUN_00a8ae80(uVar6,0,iVar5,0xffffffff,param_5);
            local_10 = local_10 + iVar5;
            param_3 = (char *)((int)param_3 + 0x14);
            iVar4 = iVar4 + 1;
          } while (iVar4 < *(int *)(pcVar2 + 0xc));
        }
        local_4 = (byte *)FUN_00a90b80(local_c,local_10,param_4);
        if (param_2 == (byte **)0x0) {
          return local_4;
        }
        FUN_00a90fd0(param_2,local_c,local_10,param_4,param_5);
        param_3 = *(char **)(pcVar2 + 8);
        iVar4 = 0;
        if (0 < *(int *)(pcVar2 + 0xc)) {
          do {
            iVar5 = FUN_00a9e290(param_1,param_3,1);
            if (iVar5 == 0) {
              return 0;
            }
            uVar6 = FUN_00a9e270(param_1,iVar5);
            FUN_00a8ae80(uVar6,param_2,iVar5,0xffffffff,param_5);
            param_3 = (char *)((int)param_3 + 0x14);
            iVar4 = iVar4 + 1;
          } while (iVar4 < *(int *)(pcVar2 + 0xc));
        }
        if (local_c == 2) {
          FUN_00a90b60(param_2);
        }
        if ((local_8 == (code *)0x0) || (iVar4 = (*local_8)(7,param_1,pcVar2,0), iVar4 != 0)) {
          return local_4;
        }
      }
    }
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00a8b790(undefined4 param_1,void **param_2,undefined4 param_3,undefined4 param_4,int param_5,
            undefined4 param_6)

{
  int iVar1;
  void *_Base;
  undefined4 uVar2;
  size_t _NumOfElements;
  int iVar3;
  undefined4 *puVar4;
  size_t *psVar5;
  size_t _SizeOfElements;
  _PtFuncCompare *_PtFuncCompare;
  void *local_10;
  undefined4 local_c;
  void *local_8;
  void *local_4;
  
  local_4 = (void *)0xa8b79a;
  iVar3 = 0;
  local_10 = (void *)0x0;
  if ((param_5 == 0) || (iVar1 = FUN_00a80ed0(param_1), iVar1 < 2)) {
    iVar1 = 0;
    iVar3 = FUN_00a80ed0(param_1);
    if (0 < iVar3) {
      do {
        local_c = FUN_00a80ee0(param_1,iVar1);
        FUN_00a8b450(&local_c,param_2,param_4,0xffffffff,param_6);
        iVar1 = iVar1 + 1;
        iVar3 = FUN_00a80ed0(param_1);
      } while (iVar1 < iVar3);
      return 1;
    }
  }
  else {
    iVar1 = FUN_00a80ed0(param_1,".\\crypto\\asn1\\tasn_enc.c",0x1c7);
    _Base = (void *)FUN_00a84f80(iVar1 * 0xc);
    local_8 = _Base;
    local_10 = (void *)FUN_00a84f80(param_3,".\\crypto\\asn1\\tasn_enc.c",0x1c8);
    if ((_Base == (void *)0x0) || (local_10 == (void *)0x0)) {
      return 0;
    }
    local_4 = local_10;
    iVar1 = FUN_00a80ed0(param_1);
    if (0 < iVar1) {
      puVar4 = (undefined4 *)((int)_Base + 8);
      do {
        local_c = FUN_00a80ee0(param_1,iVar3);
        puVar4[-2] = local_10;
        uVar2 = FUN_00a8b450(&local_c,&local_10,param_4,0xffffffff,param_6);
        puVar4[-1] = uVar2;
        *puVar4 = local_c;
        iVar3 = iVar3 + 1;
        puVar4 = puVar4 + 3;
        iVar1 = FUN_00a80ed0(param_1);
        _Base = local_8;
      } while (iVar3 < iVar1);
    }
    _PtFuncCompare = (_PtFuncCompare *)&LAB_00a8b150;
    _SizeOfElements = 0xc;
    _NumOfElements = FUN_00a80ed0(param_1);
    _qsort(_Base,_NumOfElements,_SizeOfElements,_PtFuncCompare);
    local_10 = *param_2;
    iVar1 = 0;
    iVar3 = FUN_00a80ed0(param_1);
    if (0 < iVar3) {
      psVar5 = (size_t *)((int)_Base + 4);
      do {
        _memcpy(local_10,(void *)psVar5[-1],*psVar5);
        local_10 = (void *)((int)local_10 + *psVar5);
        iVar1 = iVar1 + 1;
        psVar5 = psVar5 + 3;
        iVar3 = FUN_00a80ed0(param_1);
      } while (iVar1 < iVar3);
    }
    *param_2 = local_10;
    if (param_5 == 2) {
      iVar1 = 0;
      iVar3 = FUN_00a80ed0(param_1);
      if (0 < iVar3) {
        puVar4 = (undefined4 *)((int)_Base + 8);
        do {
          FUN_00a80f00(param_1,iVar1,*puVar4);
          iVar1 = iVar1 + 1;
          puVar4 = puVar4 + 3;
          iVar3 = FUN_00a80ed0(param_1);
        } while (iVar1 < iVar3);
      }
    }
    FUN_00a85120(_Base);
    FUN_00a85120(local_4);
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a8b990(undefined4 param_1,int *param_2,undefined4 param_3)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  int local_4;
  
  uVar1 = param_3;
  local_4 = 0xa8b99a;
  if ((param_2 != (int *)0x0) && (*param_2 == 0)) {
    iVar2 = FUN_00a8b450(&param_1,0,param_3,0xffffffff);
    if (0 < iVar2) {
      iVar3 = FUN_00a84f80(iVar2,".\\crypto\\asn1\\tasn_enc.c",0x71);
      if (iVar3 != 0) {
        local_4 = iVar3;
        FUN_00a8b450(&param_1,&local_4,uVar1,0xffffffff);
        *param_2 = iVar3;
        return iVar2;
      }
      iVar2 = -1;
    }
    return iVar2;
  }
  iVar2 = FUN_00a8b450(&param_1,param_2,param_3,0xffffffff);
  return iVar2;
}



void FUN_00a8ba30(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8b990(param_1,param_2,param_3);
  return;
}



uint FUN_00a8ba50(int *param_1,char *param_2)

{
  code *pcVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int iVar5;
  
  if (param_2 != (char *)0x0) {
    if ((*(int *)(param_2 + 0x10) != 0) &&
       (pcVar1 = *(code **)(*(int *)(param_2 + 0x10) + 8), pcVar1 != (code *)0x0)) {
      uVar2 = (*pcVar1)(param_1,param_2);
      return uVar2;
    }
    if (*param_2 != '\x05') {
      uVar3 = *(undefined4 *)(param_2 + 4);
      goto LAB_00a8ba81;
    }
  }
  uVar3 = 0xffffffff;
LAB_00a8ba81:
  switch(uVar3) {
  case 1:
    *param_1 = *(int *)(param_2 + 0x14);
    return 1;
  case 5:
    *param_1 = 1;
    return 1;
  case 6:
    iVar5 = FUN_00a87490(0);
    *param_1 = iVar5;
    return 1;
  case 0xfffffffc:
    break;
  default:
    iVar5 = FUN_00a90d30(uVar3);
    if ((*param_2 == '\x05') && (iVar5 != 0)) {
      *(uint *)(iVar5 + 0xc) = *(uint *)(iVar5 + 0xc) | 0x40;
    }
    *param_1 = iVar5;
    return (uint)(*param_1 != 0);
  }
  puVar4 = (undefined4 *)FUN_00a84f80(8,".\\crypto\\asn1\\tasn_new.c",0x165);
  if (puVar4 == (undefined4 *)0x0) {
    return 0;
  }
  puVar4[1] = 0;
  *puVar4 = 0xffffffff;
  *param_1 = (int)puVar4;
  return (uint)(*param_1 != 0);
}



void __fastcall FUN_00a8bb50(undefined4 param_1_00,undefined4 *param_2,char *param_1)

{
  code *pcVar1;
  
  if (param_1 != (char *)0x0) {
    if (*(int *)(param_1 + 0x10) == 0) {
      if ((*param_1 != '\x05') && (*(int *)(param_1 + 4) == 1)) {
        *param_2 = *(undefined4 *)(param_1 + 0x14);
        return;
      }
    }
    else {
      pcVar1 = *(code **)(*(int *)(param_1 + 0x10) + 0x10);
      if (pcVar1 != (code *)0x0) {
        (*pcVar1)(param_2,param_1);
        return;
      }
    }
  }
  *param_2 = 0;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __thiscall FUN_00a8bb90(undefined *param_1_00,int param_1)

{
  code *pcVar1;
  int iVar2;
  void *pvVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  void **unaff_EDI;
  code *local_4;
  
  iVar6 = 0;
  if ((*(int *)(param_1_00 + 0x10) == 0) ||
     (local_4 = *(code **)(*(int *)(param_1_00 + 0x10) + 0x10), local_4 == (code *)0x0)) {
    local_4 = (code *)0x0;
  }
  if (param_1 == 0) {
    *unaff_EDI = (void *)0x0;
  }
  switch(*param_1_00) {
  case 0:
    if (*(int *)(param_1_00 + 8) == 0) goto switchD_00a8bbcd_caseD_5;
    pvVar3 = (void *)FUN_00a8be60();
    break;
  case 1:
  case 6:
    if (local_4 != (code *)0x0) {
      iVar2 = (*local_4)(0);
      if (iVar2 == 0) goto LAB_00a8bd4d;
      if (iVar2 == 2) {
        return 1;
      }
    }
    if (param_1 == 0) {
      pvVar3 = (void *)FUN_00a84f80(*(undefined4 *)(param_1_00 + 0x14),".\\crypto\\asn1\\tasn_new.c"
                                    ,0xbf);
      *unaff_EDI = pvVar3;
      if (pvVar3 == (void *)0x0) goto LAB_00a8bd73;
      _memset(pvVar3,0,*(size_t *)(param_1_00 + 0x14));
      FUN_00a9e0a0();
      FUN_00a9e0f0();
    }
    iVar2 = *(int *)(param_1_00 + 8);
    if (0 < *(int *)(param_1_00 + 0xc)) {
      do {
        uVar4 = FUN_00a9e270();
        iVar5 = FUN_00a8be60(uVar4,iVar2);
        if (iVar5 == 0) goto LAB_00a8bd73;
        iVar6 = iVar6 + 1;
        iVar2 = iVar2 + 0x14;
      } while (iVar6 < *(int *)(param_1_00 + 0xc));
    }
    if (local_4 == (code *)0x0) {
      return 1;
    }
    iVar6 = (*local_4)(1);
    if (iVar6 != 0) {
      return 1;
    }
    goto LAB_00a8bd4d;
  case 2:
    if (local_4 != (code *)0x0) {
      iVar6 = (*local_4)(0);
      if (iVar6 == 0) goto LAB_00a8bd4d;
      if (iVar6 == 2) {
        return 1;
      }
    }
    if (param_1 == 0) {
      pvVar3 = (void *)FUN_00a84f80(*(undefined4 *)(param_1_00 + 0x14),".\\crypto\\asn1\\tasn_new.c"
                                    ,0xa3);
      *unaff_EDI = pvVar3;
      if (pvVar3 == (void *)0x0) goto LAB_00a8bd73;
      _memset(pvVar3,0,*(size_t *)(param_1_00 + 0x14));
    }
    FUN_00a9e080();
    if (local_4 == (code *)0x0) {
      return 1;
    }
    iVar6 = (*local_4)(1);
    if (iVar6 != 0) {
      return 1;
    }
LAB_00a8bd4d:
    FUN_00a7f3c0(0xd,0x79,100,".\\crypto\\asn1\\tasn_new.c",0xdd);
    FUN_00a8c2e0();
    return 0;
  case 3:
    if (*(code ***)(param_1_00 + 0x10) == (code **)0x0) {
      return 1;
    }
    pcVar1 = **(code ***)(param_1_00 + 0x10);
    if (pcVar1 == (code *)0x0) {
      return 1;
    }
    pvVar3 = (void *)(*pcVar1)();
    *unaff_EDI = pvVar3;
    break;
  case 4:
    if (*(int *)(param_1_00 + 0x10) == 0) {
      return 1;
    }
    pcVar1 = *(code **)(*(int *)(param_1_00 + 0x10) + 4);
    if (pcVar1 == (code *)0x0) {
      return 1;
    }
    pvVar3 = (void *)(*pcVar1)();
    break;
  case 5:
switchD_00a8bbcd_caseD_5:
    pvVar3 = (void *)FUN_00a8ba50();
    break;
  default:
    goto switchD_00a8bbcd_caseD_7;
  }
  if (pvVar3 == (void *)0x0) {
LAB_00a8bd73:
    FUN_00a7f3c0(0xd,0x79,0x41,".\\crypto\\asn1\\tasn_new.c",0xd6);
    return 0;
  }
switchD_00a8bbcd_caseD_7:
  return 1;
}



void FUN_00a8bdb0(char *param_1)

{
  uint *puVar1;
  code *pcVar2;
  uint uVar3;
  undefined4 *unaff_ESI;
  
  uVar3 = (uint)*param_1;
  if (6 < uVar3) {
    return;
  }
  do {
    switch((&switchD_00a8bdc0::switchdataD_00a8be18)[uVar3]) {
    case (undefined *)0xa8bdc7:
      puVar1 = *(uint **)(param_1 + 8);
      if (puVar1 == (uint *)0x0) {
        FUN_00a8bb50();
        return;
      }
      if ((*puVar1 & 0x306) != 0) goto switchD_00a8bdc0_caseD_a8be10;
      param_1 = (char *)(*(code *)puVar1[4])();
      uVar3 = (uint)*param_1;
      if (6 < uVar3) {
        return;
      }
      break;
    case (undefined *)0xa8bde4:
      if ((*(int *)(param_1 + 0x10) != 0) &&
         (pcVar2 = *(code **)(*(int *)(param_1 + 0x10) + 0xc), pcVar2 != (code *)0x0)) {
        (*pcVar2)();
        return;
      }
    case (undefined *)0xa8be10:
switchD_00a8bdc0_caseD_a8be10:
      *unaff_ESI = 0;
      return;
    case (undefined *)0xa8be05:
      FUN_00a8bb50();
      return;
    }
  } while( true );
}



void FUN_00a8be40(void)

{
  FUN_00a8bb90(0);
  return;
}



undefined4 FUN_00a8be60(int *param_1,uint *param_2)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  
  (*(code *)param_2[4])();
  uVar1 = *param_2;
  if ((uVar1 & 1) != 0) {
    if ((uVar1 & 0x306) != 0) {
      *param_1 = 0;
      return 1;
    }
    uVar2 = (*(code *)param_2[4])();
    FUN_00a8bdb0(uVar2);
    return 1;
  }
  if ((uVar1 & 0x300) != 0) {
    *param_1 = 0;
    return 1;
  }
  if ((uVar1 & 6) != 0) {
    iVar3 = FUN_00a81010();
    if (iVar3 == 0) {
      FUN_00a7f3c0(0xd,0x85,0x41,".\\crypto\\asn1\\tasn_new.c",0x125);
      return 0;
    }
    *param_1 = iVar3;
    return 1;
  }
  uVar2 = FUN_00a8bb90(uVar1 & 0x400);
  return uVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a8bf10(void)

{
  FUN_00a8bb90(0);
  return 0;
}



void FUN_00a8bf50(int **param_1,char *param_2)

{
  code *UNRECOVERED_JUMPTABLE;
  int iVar1;
  
  if (param_2 == (char *)0x0) {
    iVar1 = **param_1;
    param_1 = (int **)(*param_1 + 1);
  }
  else {
    if ((*(int *)(param_2 + 0x10) != 0) &&
       (UNRECOVERED_JUMPTABLE = *(code **)(*(int *)(param_2 + 0x10) + 0xc),
       UNRECOVERED_JUMPTABLE != (code *)0x0)) {
                    // WARNING: Could not recover jumptable at 0x00a8bf6c. Too many branches
                    // WARNING: Treating indirect jump as call
      (*UNRECOVERED_JUMPTABLE)();
      return;
    }
    if (*param_2 == '\x05') {
      iVar1 = -1;
    }
    else {
      iVar1 = *(int *)(param_2 + 4);
      if (iVar1 == 1) goto LAB_00a8bf96;
    }
  }
  if (*param_1 == (int *)0x0) {
    return;
  }
LAB_00a8bf96:
  switch(iVar1) {
  case 1:
    break;
  case 6:
    FUN_00a90760(*param_1);
    *param_1 = (int *)0x0;
    return;
  case -4:
    FUN_00a8bf50(param_1,0);
    FUN_00a85120(*param_1);
    *param_1 = (int *)0x0;
    return;
  default:
    FUN_00a90d80(*param_1);
    *param_1 = (int *)0x0;
  case 5:
    *param_1 = (int *)0x0;
    return;
  }
  if (param_2 == (char *)0x0) {
    *param_1 = (int *)0xffffffff;
    return;
  }
  *param_1 = *(int **)(param_2 + 0x14);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a8c030(int param_1)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  char *unaff_ESI;
  int *unaff_EDI;
  code *local_8;
  int iStack_4;
  
  iVar2 = *(int *)(unaff_ESI + 0x10);
  if (unaff_EDI == (int *)0x0) {
    return;
  }
  if ((*unaff_ESI != '\0') && (*unaff_EDI == 0)) {
    return;
  }
  if ((iVar2 == 0) || (local_8 = *(code **)(iVar2 + 0x10), local_8 == (code *)0x0)) {
    local_8 = (code *)0x0;
  }
  switch(*unaff_ESI) {
  case '\0':
    if (*(int *)(unaff_ESI + 8) != 0) {
      FUN_00a8c220();
      return;
    }
  case '\x05':
    FUN_00a8bf50();
    return;
  case '\x01':
  case '\x06':
    iVar2 = FUN_00a9e0a0();
    if (0 < iVar2) {
      return;
    }
    if ((local_8 != (code *)0x0) && (iVar2 = (*local_8)(2), iVar2 == 2)) {
      return;
    }
    FUN_00a9e130();
    iStack_4 = 0;
    if (0 < *(int *)(unaff_ESI + 0xc)) {
      do {
        iVar2 = FUN_00a9e290();
        if (iVar2 != 0) {
          uVar3 = FUN_00a9e270();
          FUN_00a8c220(uVar3,iVar2);
        }
        iStack_4 = iStack_4 + 1;
      } while (iStack_4 < *(int *)(unaff_ESI + 0xc));
    }
    goto LAB_00a8c1c8;
  case '\x02':
    if ((local_8 != (code *)0x0) && (iVar2 = (*local_8)(2), iVar2 == 2)) {
      return;
    }
    iVar2 = FUN_00a9e060();
    if ((-1 < iVar2) && (iVar2 < *(int *)(unaff_ESI + 0xc))) {
      iVar1 = *(int *)(unaff_ESI + 8);
      uVar3 = FUN_00a9e270();
      FUN_00a8c220(uVar3,iVar1 + iVar2 * 0x14);
    }
LAB_00a8c1c8:
    if (local_8 != (code *)0x0) {
      (*local_8)(3);
    }
    if (param_1 == 0) {
      FUN_00a85120(*unaff_EDI);
      *unaff_EDI = 0;
    }
    break;
  case '\x03':
    if ((iVar2 != 0) && (*(code **)(iVar2 + 4) != (code *)0x0)) {
                    // WARNING: Could not recover jumptable at 0x00a8c11d. Too many branches
                    // WARNING: Treating indirect jump as call
      (**(code **)(iVar2 + 4))();
      return;
    }
    break;
  case '\x04':
    if ((iVar2 != 0) && (*(code **)(iVar2 + 8) != (code *)0x0)) {
      (**(code **)(iVar2 + 8))();
      return;
    }
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a8c220(undefined4 *param_1,uint *param_2)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  
  if ((*param_2 & 6) == 0) {
    (*(code *)param_2[4])(*param_2 & 0x400);
    FUN_00a8c030();
    return;
  }
  uVar1 = *param_1;
  iVar3 = 0;
  iVar2 = FUN_00a80ed0(uVar1);
  if (0 < iVar2) {
    do {
      FUN_00a80ee0(uVar1,iVar3);
      (*(code *)param_2[4])(0);
      FUN_00a8c030();
      iVar3 = iVar3 + 1;
      iVar2 = FUN_00a80ed0(uVar1);
    } while (iVar3 < iVar2);
  }
  FUN_00a80ea0(uVar1);
  *param_1 = 0;
  return;
}



void FUN_00a8c2c0(void)

{
  FUN_00a8c030(0);
  return;
}



void FUN_00a8c2e0(void)

{
  FUN_00a8c030(0);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int * FUN_00a8c340(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined local_c [4];
  int local_8;
  undefined4 local_4;
  
  local_4 = 0xa8c34a;
  puVar6 = (undefined4 *)0x0;
  piVar1 = (int *)FUN_00a8bf10(&DAT_00db5cf8);
  if (piVar1 == (int *)0x0) {
LAB_00a8c467:
    FUN_00a7f3c0(0x22,0x93,0x41,".\\crypto\\x509v3\\v3_ncons.c",0x98);
LAB_00a8c4a8:
    if (piVar1 != (int *)0x0) {
      FUN_00a8c2c0(piVar1,&DAT_00db5cf8);
    }
    if (puVar6 != (undefined4 *)0x0) {
      FUN_00a8c2c0(puVar6,&DAT_00db5cb4);
    }
    return (int *)0x0;
  }
  iVar5 = 0;
  iVar2 = FUN_00a80ed0(param_3);
  if (0 < iVar2) {
    do {
      puVar6 = (undefined4 *)0x0;
      iVar2 = FUN_00a80ee0(param_3,iVar5);
      iVar3 = _strncmp(*(char **)(iVar2 + 4),"permitted",9);
      if ((iVar3 == 0) && (*(char *)(*(int *)(iVar2 + 4) + 9) != '\0')) {
        local_8 = *(int *)(iVar2 + 4) + 10;
        piVar4 = piVar1;
      }
      else {
        iVar3 = _strncmp(*(char **)(iVar2 + 4),"excluded",8);
        if ((iVar3 != 0) || (*(char *)(*(int *)(iVar2 + 4) + 8) == '\0')) {
          FUN_00a7f3c0(0x22,0x93,0x8f,".\\crypto\\x509v3\\v3_ncons.c",0x87);
          goto LAB_00a8c4a8;
        }
        piVar4 = piVar1 + 1;
        local_8 = *(int *)(iVar2 + 4) + 9;
      }
      local_4 = *(undefined4 *)(iVar2 + 8);
      puVar6 = (undefined4 *)FUN_00a8bf10(&DAT_00db5cb4);
      iVar2 = FUN_00a9ed70(*puVar6,param_1,param_2,local_c,1);
      if (iVar2 == 0) goto LAB_00a8c4a8;
      if (*piVar4 == 0) {
        iVar2 = FUN_00a81010();
        *piVar4 = iVar2;
        if (iVar2 == 0) goto LAB_00a8c467;
      }
      iVar2 = FUN_00a80df0(*piVar4,puVar6);
      if (iVar2 == 0) goto LAB_00a8c467;
      iVar5 = iVar5 + 1;
      iVar2 = FUN_00a80ed0(param_3);
    } while (iVar5 < iVar2);
  }
  return piVar1;
}



undefined4 FUN_00a8c4e0(int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1;
  FUN_00a834a0();
  if (iVar1 == 8) {
    FUN_00a86200();
    return 1;
  }
  if (iVar1 == 0x20) {
    iVar1 = 0;
    do {
      FUN_00a86200();
      if ((iVar1 == 7) || (iVar1 != 0xf)) {
        FUN_00a834a0();
      }
      iVar1 = iVar1 + 1;
    } while (iVar1 < 0x10);
    return 1;
  }
  FUN_00a86200();
  return 1;
}



undefined4 __fastcall FUN_00a8c5b0(int param_1)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  int *piVar4;
  int unaff_EDI;
  
  if (((*(int *)(unaff_EDI + 4) != 0) && (iVar1 = FUN_00a88d90(), iVar1 < 0)) ||
     ((*(int *)(param_1 + 4) != 0 && (iVar1 = FUN_00a88d90(param_1,0), iVar1 < 0)))) {
    return 0x11;
  }
  uVar2 = *(uint *)(param_1 + 0x10);
  if ((int)uVar2 <= *(int *)(unaff_EDI + 0x10)) {
    piVar3 = *(int **)(unaff_EDI + 0xc);
    piVar4 = *(int **)(param_1 + 0xc);
    for (; 3 < uVar2; uVar2 = uVar2 - 4) {
      if (*piVar4 != *piVar3) {
        return 0x2f;
      }
      piVar3 = piVar3 + 1;
      piVar4 = piVar4 + 1;
    }
    if ((uVar2 == 0) ||
       ((*(char *)piVar3 == *(char *)piVar4 &&
        ((uVar2 < 2 ||
         ((*(char *)((int)piVar3 + 1) == *(char *)((int)piVar4 + 1) &&
          ((uVar2 < 3 || (*(char *)((int)piVar3 + 2) == *(char *)((int)piVar4 + 2))))))))))) {
      return 0;
    }
  }
  return 0x2f;
}



byte FUN_00a8c680(int *param_1,int *param_2)

{
  char *_Str;
  char *pcVar1;
  char *pcVar2;
  int iVar3;
  char *_Str_00;
  
  _Str_00 = (char *)param_2[2];
  _Str = (char *)param_1[2];
  pcVar1 = _strchr(_Str_00,0x40);
  pcVar2 = _strchr(_Str,0x40);
  if (pcVar2 == (char *)0x0) {
    return 0x35;
  }
  if (pcVar1 == (char *)0x0) {
    if (*_Str_00 == '.') {
      if (*param_1 <= *param_2) {
        return 0x2f;
      }
      iVar3 = __stricmp(_Str_00,_Str + (*param_1 - *param_2));
      if (iVar3 != 0) {
        return 0x2f;
      }
      return 0;
    }
  }
  else {
    if (pcVar1 != _Str_00) {
      if ((int)pcVar1 - (int)_Str_00 != (int)pcVar2 - (int)_Str) {
        return 0x2f;
      }
      iVar3 = _strncmp(_Str_00,_Str,(int)pcVar2 - (int)_Str);
      if (iVar3 != 0) {
        return 0x2f;
      }
    }
    _Str_00 = pcVar1 + 1;
  }
  iVar3 = __stricmp(_Str_00,pcVar2 + 1);
  return -(iVar3 != 0) & 0x2f;
}



undefined4 FUN_00a8c730(int param_1,size_t *param_2)

{
  char cVar1;
  char *_Str2;
  size_t sVar2;
  char *pcVar3;
  char *pcVar4;
  size_t _MaxCount;
  char *_Str;
  int iVar5;
  
  _Str2 = (char *)param_2[2];
  pcVar3 = _strchr(*(char **)(param_1 + 8),0x3a);
  if (((pcVar3 == (char *)0x0) || (pcVar3[1] != '/')) || (pcVar3[2] != '/')) {
    return 0x35;
  }
  _Str = pcVar3 + 3;
  pcVar4 = _strchr(_Str,0x3a);
  if ((pcVar4 == (char *)0x0) && (pcVar4 = _strchr(_Str,0x2f), pcVar4 == (char *)0x0)) {
    pcVar4 = _Str;
    do {
      cVar1 = *pcVar4;
      pcVar4 = pcVar4 + 1;
    } while (cVar1 != '\0');
    _MaxCount = (int)pcVar4 - (int)(pcVar3 + 4);
  }
  else {
    _MaxCount = (int)pcVar4 - (int)_Str;
  }
  if (_MaxCount != 0) {
    if (*_Str2 == '.') {
      sVar2 = *param_2;
      if ((int)_MaxCount <= (int)sVar2) {
        return 0x2f;
      }
      _Str = _Str + (_MaxCount - sVar2);
      _MaxCount = sVar2;
    }
    else if (*param_2 != _MaxCount) {
      return 0x2f;
    }
    iVar5 = __strnicmp(_Str,_Str2,_MaxCount);
    if (iVar5 != 0) {
      return 0x2f;
    }
    return 0;
  }
  return 0x35;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __fastcall
FUN_00a8c7e0(int param_1_00,undefined4 param_2_00,undefined4 param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  int **ppiVar3;
  int iVar4;
  
  iVar2 = FUN_00a80ed0(param_1);
  if (0 < iVar2) {
    FUN_00a86200(param_2_00,"%*s%s:\n",param_1_00,&PTR_02bd3fc0,param_2);
  }
  iVar4 = 0;
  iVar2 = FUN_00a80ed0(param_1);
  if (0 < iVar2) {
    do {
      ppiVar3 = (int **)FUN_00a80ee0(param_1,iVar4);
      FUN_00a86200(param_2_00,&DAT_00db5d7c,param_1_00 + 2,&PTR_02bd3fc0);
      piVar1 = *ppiVar3;
      if (*piVar1 == 7) {
        FUN_00a8c4e0(piVar1[1]);
      }
      else {
        FUN_00a9e5b0(param_2_00,piVar1);
      }
      FUN_00a834a0(param_2_00,&DAT_030651b4);
      iVar4 = iVar4 + 1;
      iVar2 = FUN_00a80ed0(param_1);
    } while (iVar4 < iVar2);
  }
  return 1;
}



uint __fastcall FUN_00a8c8a0(undefined4 param_1_00,int param_2,undefined4 *param_1)

{
  char *_Str1;
  int iVar1;
  int iVar2;
  uint uVar3;
  char *_Str2;
  
  switch(*param_1) {
  case 1:
    uVar3 = FUN_00a8c680(*(undefined4 *)(param_2 + 4),param_1[1]);
    return uVar3;
  case 2:
    break;
  default:
    return 0x33;
  case 4:
    uVar3 = FUN_00a8c5b0();
    return uVar3;
  case 6:
    uVar3 = FUN_00a8c730(*(undefined4 *)(param_2 + 4),param_1[1]);
    return uVar3;
  }
  _Str2 = (char *)(*(int **)(param_2 + 4))[2];
  _Str1 = (char *)((int *)param_1[1])[2];
  if (*_Str1 == '\0') {
    return 0;
  }
  iVar2 = **(int **)(param_2 + 4);
  iVar1 = *(int *)param_1[1];
  if ((iVar1 < iVar2) && (_Str2 = _Str2 + (iVar2 - iVar1), _Str2[-1] != '.')) {
    return 0x2f;
  }
  iVar2 = __stricmp(_Str1,_Str2);
  return -(uint)(iVar2 != 0) & 0x2f;
}



int FUN_00a8c950(void)

{
  int iVar1;
  int **ppiVar2;
  int *unaff_EBX;
  int iVar3;
  int iVar4;
  undefined4 *unaff_EDI;
  
  iVar3 = 0;
  iVar4 = 0;
  iVar1 = FUN_00a80ed0(*unaff_EDI);
  if (0 < iVar1) {
    do {
      ppiVar2 = (int **)FUN_00a80ee0(*unaff_EDI,iVar4);
      if (*unaff_EBX == **ppiVar2) {
        if (ppiVar2[1] != (int *)0x0) {
          return 0x31;
        }
        if (ppiVar2[2] != (int *)0x0) {
          return 0x31;
        }
        if (iVar3 != 2) {
          if (iVar3 == 0) {
            iVar3 = 1;
          }
          iVar1 = FUN_00a8c8a0(*ppiVar2);
          if (iVar1 == 0) {
            iVar3 = 2;
          }
          else if (iVar1 != 0x2f) {
            return iVar1;
          }
        }
      }
      iVar4 = iVar4 + 1;
      iVar1 = FUN_00a80ed0(*unaff_EDI);
    } while (iVar4 < iVar1);
    if (iVar3 == 1) {
      return 0x2f;
    }
  }
  iVar1 = 0;
  iVar3 = FUN_00a80ed0(unaff_EDI[1]);
  if (0 < iVar3) {
    do {
      ppiVar2 = (int **)FUN_00a80ee0(unaff_EDI[1],iVar1);
      if (*unaff_EBX == **ppiVar2) {
        if ((ppiVar2[1] != (int *)0x0) || (ppiVar2[2] != (int *)0x0)) {
          return 0x31;
        }
        iVar3 = FUN_00a8c8a0(*ppiVar2);
        if (iVar3 == 0) {
          return 0x30;
        }
        if (iVar3 != 0x2f) {
          return iVar3;
        }
      }
      iVar1 = iVar1 + 1;
      iVar3 = FUN_00a80ed0(unaff_EDI[1]);
    } while (iVar1 < iVar3);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a8ca40(int param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  
  uVar1 = FUN_00a82a50(param_1);
  iVar2 = FUN_00a82440(uVar1);
  if (0 < iVar2) {
    iVar2 = FUN_00a8c950();
    if (iVar2 != 0) {
      return iVar2;
    }
    for (iVar2 = FUN_00a82870(uVar1,0x30,0xffffffff); iVar2 != -1;
        iVar2 = FUN_00a82870(uVar1,0x30,iVar2)) {
      uVar3 = FUN_00a824c0(uVar1,iVar2);
      iVar4 = FUN_00addf10(uVar3);
      if (*(int *)(iVar4 + 4) != 0x16) {
        return 0x35;
      }
      iVar4 = FUN_00a8c950();
      if (iVar4 != 0) {
        return iVar4;
      }
    }
  }
  iVar4 = 0;
  iVar2 = FUN_00a80ed0(*(undefined4 *)(param_1 + 0x48));
  if (0 < iVar2) {
    do {
      FUN_00a80ee0(*(undefined4 *)(param_1 + 0x48),iVar4);
      iVar2 = FUN_00a8c950();
      if (iVar2 != 0) {
        return iVar2;
      }
      iVar4 = iVar4 + 1;
      iVar2 = FUN_00a80ed0(*(undefined4 *)(param_1 + 0x48));
    } while (iVar4 < iVar2);
  }
  return 0;
}



void FUN_00a8cb50(void)

{
  FUN_00a8bf10(&DAT_00db5ec8);
  return;
}



void FUN_00a8cb80(void)

{
  FUN_00a8bf10(&DAT_00db5fdc);
  return;
}



void FUN_00a8cb90(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db5fdc);
  return;
}



void FUN_00a8cbc0(void)

{
  FUN_00a8bf10(&DAT_00db600c);
  return;
}



void FUN_00a8cbd0(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db600c);
  return;
}



int FUN_00a8cbf0(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  
  if ((param_1 == (undefined4 *)0x0) || (param_2 == (undefined4 *)0x0)) {
    iVar1 = -1;
  }
  else {
    iVar1 = FUN_00a90180(*param_1,*param_2);
    if (iVar1 == 0) {
      iVar1 = FUN_00a9d610(param_1[1],param_2[1]);
      return iVar1;
    }
  }
  return iVar1;
}



undefined4 FUN_00a8cc30(int *param_1,int *param_2)

{
  undefined4 uVar1;
  
  if (((param_1 != (int *)0x0) && (param_2 != (int *)0x0)) && (*param_1 == *param_2)) {
    switch(*param_1) {
    case 0:
      uVar1 = FUN_00a8cbf0();
      return uVar1;
    case 1:
    case 2:
    case 6:
      uVar1 = FUN_00a90db0();
      return uVar1;
    case 3:
    case 5:
      uVar1 = FUN_00a9d610();
      return uVar1;
    case 4:
      uVar1 = FUN_00a82ae0();
      return uVar1;
    case 7:
      uVar1 = thunk_FUN_00a90db0();
      return uVar1;
    case 8:
      uVar1 = FUN_00a90180();
      return uVar1;
    }
  }
  return 0xffffffff;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a8cd50(int param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined local_10 [4];
  undefined4 local_c;
  undefined4 uStack_4;
  
  uStack_4 = 0xa8cd5a;
  local_c = param_2;
  iVar1 = FUN_00a81100(*(undefined4 *)(param_1 + 4),local_10);
  if (iVar1 == -1) {
    return 0;
  }
  uVar2 = FUN_00a80ee0(*(undefined4 *)(param_1 + 4),iVar1);
  return uVar2;
}



undefined4 FUN_00a8cdc0(undefined4 *param_1,int param_2)

{
  undefined4 uVar1;
  
  if (param_2 != 0) {
    if (*(int *)(param_2 + 4) == 0x102) {
      return 0;
    }
    uVar1 = FUN_00a9db70(param_2);
    *param_1 = uVar1;
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a8cdf0(int param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int local_4;
  
  piVar1 = *(int **)(param_1 + 0x40);
  iVar5 = 0;
  local_4 = 0;
  iVar2 = FUN_00a80ed0();
  if (iVar2 != 0) {
    iVar2 = FUN_00a80c80(&LAB_00a8cda0);
    piVar1[1] = iVar2;
    if (iVar2 != 0) {
      iVar2 = FUN_00a80ed0();
      if (0 < iVar2) {
        do {
          uVar3 = FUN_00a80ee0();
          iVar2 = FUN_00a9f250(uVar3,0,param_2);
          if (iVar2 == 0) goto LAB_00a8ced2;
          iVar4 = FUN_00a877e0(*(undefined4 *)(iVar2 + 4));
          if (iVar4 != 0x2ea) {
            iVar4 = FUN_00a81100(piVar1[1],iVar2);
            if (iVar4 != -1) goto LAB_00a8ceb6;
            iVar4 = FUN_00a80df0(piVar1[1],iVar2);
            if (iVar4 != 0) goto LAB_00a8ce9e;
LAB_00a8cec9:
            FUN_00a9f210(iVar2);
            goto LAB_00a8ced2;
          }
          if (*piVar1 != 0) {
LAB_00a8ceb6:
            *(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) | 0x800;
            local_4 = -1;
            goto LAB_00a8cec9;
          }
          *piVar1 = iVar2;
LAB_00a8ce9e:
          iVar5 = iVar5 + 1;
          iVar2 = FUN_00a80ed0();
        } while (iVar5 < iVar2);
      }
      local_4 = 1;
    }
  }
LAB_00a8ced2:
  FUN_00a81120();
  if (local_4 < 1) {
    FUN_00a81120(piVar1[1],FUN_00a9f210);
    piVar1[1] = 0;
  }
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a8cf10(void)

{
  undefined4 *puVar1;
  int *piVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int unaff_EDI;
  int local_c;
  int local_8;
  
  local_8 = 0;
  puVar1 = (undefined4 *)FUN_00a84f80(0x14,".\\crypto\\x509v3\\pcy_cache.c",0x89);
  if (puVar1 == (undefined4 *)0x0) {
    return 0;
  }
  puVar1[2] = 0xffffffff;
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[3] = 0xffffffff;
  puVar1[4] = 0xffffffff;
  *(undefined4 **)(unaff_EDI + 0x40) = puVar1;
  piVar2 = (int *)FUN_00aa02b0();
  if (piVar2 == (int *)0x0) {
    if (local_c != -1) goto LAB_00a8cf91;
LAB_00a8cff7:
    iVar4 = FUN_00aa02b0();
    if (iVar4 == 0) {
      if (local_c == -1) {
        return 1;
      }
    }
    else {
      iVar4 = FUN_00a8cdf0();
      if (iVar4 < 1) {
        return iVar4;
      }
      iVar5 = FUN_00aa02b0();
      if (iVar5 == 0) {
        if (iVar4 == -1) {
          local_c = -1;
LAB_00a8d07a:
          local_8 = FUN_00aa02b0();
          if (local_8 == 0) {
            if (local_c == -1) goto LAB_00a8cf98;
          }
          else {
            iVar4 = FUN_00a8cdc0(puVar1 + 2,local_8);
            if (iVar4 != 0) goto LAB_00a8cf98;
          }
        }
      }
      else {
        local_c = FUN_00a9fe90();
        if (0 < local_c) goto LAB_00a8d07a;
      }
    }
  }
  else {
    iVar4 = *piVar2;
    if (iVar4 == 0) {
      if (piVar2[1] != 0) {
LAB_00a8cfe3:
        iVar4 = FUN_00a8cdc0(puVar1 + 4,piVar2[1]);
        if (iVar4 != 0) goto LAB_00a8cff7;
      }
    }
    else if (*(int *)(iVar4 + 4) != 0x102) {
      uVar3 = FUN_00a9db70(iVar4);
      puVar1[3] = uVar3;
      goto LAB_00a8cfe3;
    }
  }
LAB_00a8cf91:
  *(uint *)(unaff_EDI + 0x28) = *(uint *)(unaff_EDI + 0x28) | 0x800;
LAB_00a8cf98:
  if (piVar2 != (int *)0x0) {
    FUN_00aa0000(piVar2);
  }
  if (local_8 != 0) {
    FUN_00a887d0(local_8);
  }
  return 1;
}



undefined4 FUN_00a8d0c0(int param_1)

{
  if (*(int *)(param_1 + 0x40) == 0) {
    FUN_00a7fdc0(9,3,".\\crypto\\x509v3\\pcy_cache.c",0xfb);
    FUN_00a8cf10();
    FUN_00a7fdc0(10,3,".\\crypto\\x509v3\\pcy_cache.c",0xfd);
  }
  return *(undefined4 *)(param_1 + 0x40);
}



undefined4 FUN_00a8d100(void)

{
  int iVar1;
  undefined4 uVar2;
  char *unaff_EDI;
  
  if (*unaff_EDI == '@') {
    iVar1 = FUN_00aa13f0();
  }
  else {
    iVar1 = FUN_00aa0e80();
  }
  if (iVar1 == 0) {
    FUN_00a7f3c0(0x22,0x9c,0x96,".\\crypto\\x509v3\\v3_crld.c",0x68);
    return 0;
  }
  uVar2 = FUN_00a9f140(0);
  if (*unaff_EDI == '@') {
    FUN_00aa1430();
    return uVar2;
  }
  FUN_00a81120(iVar1,FUN_00aa03c0);
  return uVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a8d180(int *param_1,undefined4 param_2)

{
  int *piVar1;
  byte bVar2;
  byte *pbVar3;
  int iVar4;
  int iVar5;
  byte *pbVar6;
  byte *pbVar7;
  int iVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  bool bVar11;
  undefined4 local_4;
  
  iVar8 = 0;
  local_4 = 0;
  iVar4 = FUN_00aa0e80(param_2);
  if (iVar4 == 0) {
    return 0;
  }
  if (*param_1 != 0) {
    return 0;
  }
  iVar5 = FUN_00a80ed0(iVar4);
  if (0 < iVar5) {
    do {
      iVar5 = FUN_00a80ee0(iVar4,iVar8);
      pbVar3 = *(byte **)(iVar5 + 4);
      if (*param_1 == 0) {
        iVar5 = FUN_00a88850();
        *param_1 = iVar5;
        if (iVar5 == 0) goto LAB_00a8d274;
      }
      puVar9 = &DAT_00db62b8;
      do {
        pbVar6 = (byte *)puVar9[2];
        pbVar7 = pbVar3;
        do {
          bVar2 = *pbVar6;
          bVar11 = bVar2 < *pbVar7;
          if (bVar2 != *pbVar7) {
LAB_00a8d228:
            iVar5 = (1 - (uint)bVar11) - (uint)(bVar11 != 0);
            goto LAB_00a8d22d;
          }
          if (bVar2 == 0) break;
          bVar2 = pbVar6[1];
          bVar11 = bVar2 < pbVar7[1];
          if (bVar2 != pbVar7[1]) goto LAB_00a8d228;
          pbVar6 = pbVar6 + 2;
          pbVar7 = pbVar7 + 2;
        } while (bVar2 != 0);
        iVar5 = 0;
LAB_00a8d22d:
        if (iVar5 == 0) {
          iVar5 = FUN_00a9df00(*param_1,*puVar9,1);
          puVar10 = puVar9;
          if (iVar5 == 0) goto LAB_00a8d274;
          break;
        }
        puVar10 = puVar9 + 3;
        piVar1 = puVar9 + 4;
        puVar9 = puVar10;
      } while (*piVar1 != 0);
      if (puVar10[1] == 0) goto LAB_00a8d274;
      iVar8 = iVar8 + 1;
      iVar5 = FUN_00a80ed0(iVar4);
    } while (iVar8 < iVar5);
  }
  local_4 = 1;
LAB_00a8d274:
  FUN_00a81120(iVar4,FUN_00aa03c0);
  return local_4;
}



undefined4 FUN_00a8d690(int *param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  
  if ((param_1 == (int *)0x0) || (*param_1 != 1)) {
    return 1;
  }
  iVar3 = param_1[1];
  iVar1 = FUN_00a88de0(param_2);
  param_1[2] = iVar1;
  if (iVar1 == 0) {
    return 0;
  }
  iVar4 = 0;
  iVar1 = FUN_00a80ed0(iVar3);
  if (0 < iVar1) {
    do {
      uVar2 = FUN_00a80ee0(iVar3,iVar4);
      iVar1 = FUN_00a825b0(param_1[2],uVar2,0xffffffff,iVar4 == 0);
      if (iVar1 == 0) {
        iVar3 = param_1[2];
        goto LAB_00a8d717;
      }
      iVar4 = iVar4 + 1;
      iVar1 = FUN_00a80ed0(iVar3);
    } while (iVar4 < iVar1);
  }
  iVar3 = FUN_00a88d90(param_1[2],0);
  if (-1 < iVar3) {
    return 1;
  }
  iVar3 = param_1[2];
LAB_00a8d717:
  FUN_00a88dc0(iVar3);
  param_1[2] = 0;
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __thiscall FUN_00a8d750(int param_1_00,int *param_1,undefined4 param_2)

{
  byte bVar1;
  int iVar2;
  byte *pbVar3;
  int *piVar4;
  undefined4 *puVar5;
  char *pcVar6;
  int iVar7;
  bool bVar8;
  
  iVar7 = 0;
  iVar2 = _strncmp(*(char **)(param_1_00 + 4),"fullname",9);
  if (iVar2 == 0) {
    iVar2 = FUN_00a8d100();
    if (iVar2 == 0) {
      return 0xffffffff;
    }
  }
  else {
    pbVar3 = *(byte **)(param_1_00 + 4);
    pcVar6 = "relativename";
    do {
      bVar1 = *pbVar3;
      bVar8 = bVar1 < (byte)*pcVar6;
      if (bVar1 != *pcVar6) {
LAB_00a8d7c4:
        iVar7 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
        goto LAB_00a8d7c9;
      }
      if (bVar1 == 0) break;
      bVar1 = pbVar3[1];
      bVar8 = bVar1 < ((byte *)pcVar6)[1];
      if (bVar1 != ((byte *)pcVar6)[1]) goto LAB_00a8d7c4;
      pbVar3 = pbVar3 + 2;
      pcVar6 = (char *)((byte *)pcVar6 + 2);
    } while (bVar1 != 0);
    iVar7 = 0;
LAB_00a8d7c9:
    if (iVar7 != 0) {
      return 0;
    }
    piVar4 = (int *)FUN_00a88db0();
    if (piVar4 == (int *)0x0) {
      return 0xffffffff;
    }
    iVar7 = FUN_00aa13f0(param_2,*(undefined4 *)(param_1_00 + 8));
    if (iVar7 == 0) {
      FUN_00a7f3c0(0x22,0x9e,0x96,".\\crypto\\x509v3\\v3_crld.c",0x8a);
      return 0xffffffff;
    }
    iVar2 = FUN_00aa0dd0(piVar4,iVar7,0x1001);
    FUN_00aa1430(param_2,iVar7);
    iVar7 = *piVar4;
    *piVar4 = 0;
    FUN_00a88dc0(piVar4);
    if ((iVar2 == 0) || (iVar2 = FUN_00a80ed0(iVar7), iVar2 < 1)) goto LAB_00a8d8c9;
    iVar2 = FUN_00a80ed0(iVar7);
    iVar2 = FUN_00a80ee0(iVar7,iVar2 + -1);
    if (*(int *)(iVar2 + 8) != 0) {
      FUN_00a7f3c0(0x22,0x9e,0xa1,".\\crypto\\x509v3\\v3_crld.c",0x9b);
      goto LAB_00a8d8c9;
    }
    iVar2 = 0;
  }
  if (*param_1 == 0) {
    puVar5 = (undefined4 *)FUN_00a8bf10(&DAT_00db6370);
    *param_1 = (int)puVar5;
    if (puVar5 != (undefined4 *)0x0) {
      if (iVar2 != 0) {
        *puVar5 = 0;
        *(int *)(*param_1 + 4) = iVar2;
        return 1;
      }
      *puVar5 = 1;
      *(int *)(*param_1 + 4) = iVar7;
      return 1;
    }
  }
  else {
    FUN_00a7f3c0(0x22,0x9e,0xa0,".\\crypto\\x509v3\\v3_crld.c",0xa5);
  }
  if (iVar2 != 0) {
    FUN_00a81120(iVar2,FUN_00a8cb90);
  }
LAB_00a8d8c9:
  if (iVar7 != 0) {
    FUN_00a81120(iVar7,FUN_00a88d10);
  }
  return 0xffffffff;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a8d930(undefined4 param_1,undefined4 param_2)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  byte *pbVar5;
  byte *pbVar6;
  char *pcVar7;
  bool bVar8;
  int local_4;
  
  iVar2 = FUN_00a8bf10(&DAT_00db63c8);
  if (iVar2 == 0) {
    return 0;
  }
  local_4 = 0;
  iVar3 = FUN_00a80ed0(param_2);
  if (0 < iVar3) {
    do {
      iVar3 = FUN_00a80ee0(param_2,local_4);
      iVar4 = FUN_00a8d750(iVar2,param_1);
      if (iVar4 < 1) {
        if (iVar4 < 0) goto LAB_00a8d9dd;
        pbVar6 = *(byte **)(iVar3 + 4);
        pcVar7 = "reasons";
        pbVar5 = pbVar6;
        do {
          bVar1 = *pbVar5;
          bVar8 = bVar1 < (byte)*pcVar7;
          if (bVar1 != *pcVar7) {
LAB_00a8d9c0:
            iVar4 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
            goto LAB_00a8d9c5;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar5[1];
          bVar8 = bVar1 < ((byte *)pcVar7)[1];
          if (bVar1 != ((byte *)pcVar7)[1]) goto LAB_00a8d9c0;
          pbVar5 = pbVar5 + 2;
          pcVar7 = (char *)((byte *)pcVar7 + 2);
        } while (bVar1 != 0);
        iVar4 = 0;
LAB_00a8d9c5:
        if (iVar4 == 0) {
          iVar3 = FUN_00a8d180(iVar2 + 4,*(undefined4 *)(iVar3 + 8));
        }
        else {
          pcVar7 = "CRLissuer";
          do {
            bVar1 = *pbVar6;
            bVar8 = bVar1 < (byte)*pcVar7;
            if (bVar1 != *pcVar7) {
LAB_00a8da20:
              iVar3 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
              goto LAB_00a8da25;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar6[1];
            bVar8 = bVar1 < ((byte *)pcVar7)[1];
            if (bVar1 != ((byte *)pcVar7)[1]) goto LAB_00a8da20;
            pbVar6 = pbVar6 + 2;
            pcVar7 = (char *)((byte *)pcVar7 + 2);
          } while (bVar1 != 0);
          iVar3 = 0;
LAB_00a8da25:
          if (iVar3 != 0) goto LAB_00a8da40;
          iVar3 = FUN_00a8d100();
          *(int *)(iVar2 + 8) = iVar3;
        }
        if (iVar3 == 0) {
LAB_00a8d9dd:
          FUN_00a8c2c0(iVar2,&DAT_00db63c8);
          return 0;
        }
      }
LAB_00a8da40:
      local_4 = local_4 + 1;
      iVar3 = FUN_00a80ed0(param_2);
    } while (local_4 < iVar3);
  }
  return iVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a8da70(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int local_c;
  int local_4;
  
  local_c = 0;
  iVar4 = 0;
  iVar1 = FUN_00a81010();
  if (iVar1 == 0) {
LAB_00a8dbdc:
    FUN_00a7f3c0(0x22,0x86,0x41,".\\crypto\\x509v3\\v3_crld.c",0x16d);
LAB_00a8dbf7:
    FUN_00a8cb90(iVar4);
    FUN_00a8cbd0(local_c);
    FUN_00a81120(iVar1,&LAB_00a8d3a0);
    return 0;
  }
  local_4 = 0;
  iVar4 = FUN_00a80ed0(param_3);
  if (0 < iVar4) {
    do {
      local_c = 0;
      iVar4 = 0;
      iVar2 = FUN_00a80ee0(param_3,local_4);
      if (*(int *)(iVar2 + 8) == 0) {
        iVar2 = FUN_00aa13f0(param_2,*(undefined4 *)(iVar2 + 4));
        if (iVar2 == 0) goto LAB_00a8dbf7;
        piVar3 = (int *)FUN_00a8d930(param_2,iVar2);
        FUN_00aa1430(param_2,iVar2);
        if (piVar3 == (int *)0x0) goto LAB_00a8dbf7;
        iVar4 = FUN_00a80df0(iVar1,piVar3);
        if (iVar4 == 0) {
LAB_00a8dbd4:
          iVar4 = 0;
          FUN_00a8c2c0(piVar3,&DAT_00db63c8);
          goto LAB_00a8dbdc;
        }
      }
      else {
        iVar4 = FUN_00a9eea0(param_1,param_2,iVar2);
        if (iVar4 == 0) goto LAB_00a8dbf7;
        local_c = FUN_00a8cbc0();
        if ((local_c == 0) || (iVar2 = FUN_00a80df0(local_c,iVar4), iVar2 == 0)) goto LAB_00a8dbdc;
        iVar4 = 0;
        piVar3 = (int *)FUN_00a8bf10(&DAT_00db63c8);
        if (piVar3 == (int *)0x0) goto LAB_00a8dbdc;
        iVar2 = FUN_00a80df0(iVar1,piVar3);
        if (iVar2 == 0) goto LAB_00a8dbd4;
        iVar2 = FUN_00a8bf10(&DAT_00db6370);
        *piVar3 = iVar2;
        if (iVar2 == 0) goto LAB_00a8dbdc;
        *(int *)(iVar2 + 4) = local_c;
        *(undefined4 *)*piVar3 = 0;
      }
      local_4 = local_4 + 1;
      iVar4 = FUN_00a80ed0(param_3);
    } while (local_4 < iVar4);
  }
  return iVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a8dc30(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  byte bVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  byte *pbVar6;
  byte *pbVar7;
  char *pcVar8;
  byte *pbVar9;
  bool bVar10;
  int local_4;
  
  iVar3 = FUN_00a8bf10(&DAT_00db6414);
  if (iVar3 == 0) {
    FUN_00a7f3c0(0x22,0x9d,0x41,".\\crypto\\x509v3\\v3_crld.c",0x1f5);
LAB_00a8de6c:
    FUN_00a8c2c0(iVar3,&DAT_00db6414);
    return 0;
  }
  local_4 = 0;
  iVar4 = FUN_00a80ed0(param_3);
  if (0 < iVar4) {
    do {
      puVar5 = (undefined4 *)FUN_00a80ee0(param_3,local_4);
      pbVar7 = (byte *)puVar5[1];
      uVar2 = puVar5[2];
      iVar4 = FUN_00a8d750(iVar3,param_2);
      if (iVar4 < 1) {
        if (iVar4 < 0) goto LAB_00a8de6c;
        pcVar8 = "onlyuser";
        pbVar6 = pbVar7;
        do {
          bVar1 = *pbVar6;
          bVar10 = bVar1 < (byte)*pcVar8;
          if (bVar1 != *pcVar8) {
LAB_00a8dcf0:
            iVar4 = (1 - (uint)bVar10) - (uint)(bVar10 != 0);
            goto LAB_00a8dcf5;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar6[1];
          bVar10 = bVar1 < ((byte *)pcVar8)[1];
          if (bVar1 != ((byte *)pcVar8)[1]) goto LAB_00a8dcf0;
          pbVar6 = pbVar6 + 2;
          pcVar8 = (char *)((byte *)pcVar8 + 2);
        } while (bVar1 != 0);
        iVar4 = 0;
LAB_00a8dcf5:
        if (iVar4 == 0) {
          iVar4 = FUN_00aa0660(puVar5,iVar3 + 4);
        }
        else {
          pbVar9 = &DAT_00db6080;
          pbVar6 = pbVar7;
          do {
            bVar1 = *pbVar6;
            bVar10 = bVar1 < *pbVar9;
            if (bVar1 != *pbVar9) {
LAB_00a8dd30:
              iVar4 = (1 - (uint)bVar10) - (uint)(bVar10 != 0);
              goto LAB_00a8dd35;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar6[1];
            bVar10 = bVar1 < pbVar9[1];
            if (bVar1 != pbVar9[1]) goto LAB_00a8dd30;
            pbVar6 = pbVar6 + 2;
            pbVar9 = pbVar9 + 2;
          } while (bVar1 != 0);
          iVar4 = 0;
LAB_00a8dd35:
          if (iVar4 == 0) {
            iVar4 = FUN_00aa0660(puVar5,iVar3 + 8);
          }
          else {
            pbVar9 = &DAT_00db661c;
            pbVar6 = pbVar7;
            do {
              bVar1 = *pbVar6;
              bVar10 = bVar1 < *pbVar9;
              if (bVar1 != *pbVar9) {
LAB_00a8dd70:
                iVar4 = (1 - (uint)bVar10) - (uint)(bVar10 != 0);
                goto LAB_00a8dd75;
              }
              if (bVar1 == 0) break;
              bVar1 = pbVar6[1];
              bVar10 = bVar1 < pbVar9[1];
              if (bVar1 != pbVar9[1]) goto LAB_00a8dd70;
              pbVar6 = pbVar6 + 2;
              pbVar9 = pbVar9 + 2;
            } while (bVar1 != 0);
            iVar4 = 0;
LAB_00a8dd75:
            if (iVar4 == 0) {
              iVar4 = FUN_00aa0660(puVar5,iVar3 + 0x14);
            }
            else {
              pcVar8 = "indirectCRL";
              pbVar6 = pbVar7;
              do {
                bVar1 = *pbVar6;
                bVar10 = bVar1 < (byte)*pcVar8;
                if (bVar1 != *pcVar8) {
LAB_00a8ddb0:
                  iVar4 = (1 - (uint)bVar10) - (uint)(bVar10 != 0);
                  goto LAB_00a8ddb5;
                }
                if (bVar1 == 0) break;
                bVar1 = pbVar6[1];
                bVar10 = bVar1 < ((byte *)pcVar8)[1];
                if (bVar1 != ((byte *)pcVar8)[1]) goto LAB_00a8ddb0;
                pbVar6 = pbVar6 + 2;
                pcVar8 = (char *)((byte *)pcVar8 + 2);
              } while (bVar1 != 0);
              iVar4 = 0;
LAB_00a8ddb5:
              if (iVar4 == 0) {
                iVar4 = FUN_00aa0660(puVar5,iVar3 + 0x10);
              }
              else {
                pcVar8 = "onlysomereasons";
                do {
                  bVar1 = *pbVar7;
                  bVar10 = bVar1 < (byte)*pcVar8;
                  if (bVar1 != *pcVar8) {
LAB_00a8ddf0:
                    iVar4 = (1 - (uint)bVar10) - (uint)(bVar10 != 0);
                    goto LAB_00a8ddf5;
                  }
                  if (bVar1 == 0) break;
                  bVar1 = pbVar7[1];
                  bVar10 = bVar1 < ((byte *)pcVar8)[1];
                  if (bVar1 != ((byte *)pcVar8)[1]) goto LAB_00a8ddf0;
                  pbVar7 = pbVar7 + 2;
                  pcVar8 = (char *)((byte *)pcVar8 + 2);
                } while (bVar1 != 0);
                iVar4 = 0;
LAB_00a8ddf5:
                if (iVar4 != 0) {
                  FUN_00a7f3c0(0x22,0x9d,0x6a,".\\crypto\\x509v3\\v3_crld.c",0x1ed);
                  FUN_00a7f690(6,"section:",*puVar5,",name:",puVar5[1],",value:",puVar5[2]);
                  goto LAB_00a8de6c;
                }
                iVar4 = FUN_00a8d180(iVar3 + 0xc,uVar2);
              }
            }
          }
        }
        if (iVar4 == 0) goto LAB_00a8de6c;
      }
      local_4 = local_4 + 1;
      iVar4 = FUN_00a80ed0(param_3);
    } while (local_4 < iVar4);
  }
  return iVar3;
}



void FUN_00a8dea0(void)

{
  FUN_00a8bf10(&DAT_00db6680);
  return;
}



void FUN_00a8ded0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00db6754);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a8df10(undefined4 *param_1,char *param_2,size_t param_3)

{
  char cVar1;
  uint *puVar2;
  uint uVar3;
  byte bVar4;
  int iVar5;
  undefined4 *puVar6;
  char *pcVar7;
  size_t _Size;
  uint uVar8;
  uint uVar9;
  int iVar10;
  uint uVar11;
  int iVar12;
  byte *pbVar13;
  int local_80;
  uint local_7c [4];
  char *local_6c;
  int local_68;
  char *local_64;
  int local_60;
  undefined4 *local_5c;
  undefined4 *local_58;
  char local_54 [80];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_80;
  iVar12 = 0;
  local_5c = param_1;
  local_6c = param_2;
  local_80 = 0;
  if (param_2 == (char *)0x0) {
    iVar12 = FUN_00a929e0();
    local_80 = iVar12;
    if ((iVar12 == 0) || (iVar5 = FUN_00a92a60(iVar12,200), iVar5 == 0)) {
LAB_00a8e216:
      FUN_00a7f3c0(0xb,0x74,0x41,".\\crypto\\x509\\x509_obj.c",0xde);
      if (iVar12 != 0) {
        FUN_00a92a20(iVar12);
      }
      goto LAB_00a8e24f;
    }
    **(undefined **)(iVar12 + 4) = 0;
    param_3 = 200;
  }
  if (param_1 == (undefined4 *)0x0) {
    if (iVar12 != 0) {
      local_6c = *(char **)(iVar12 + 4);
      FUN_00a85120(iVar12);
    }
    pcVar7 = local_6c;
    _strncpy(local_6c,"NO X509_NAME",param_3);
    pcVar7[param_3 - 1] = '\0';
  }
  else {
    local_60 = 0;
    local_68 = 0;
    iVar5 = FUN_00a80ed0(*param_1);
    if (0 < iVar5) {
      do {
        puVar6 = (undefined4 *)FUN_00a80ee0(*param_1,local_68);
        local_58 = puVar6;
        iVar12 = FUN_00a877e0(*puVar6);
        if (iVar12 == 0) {
LAB_00a8e03c:
          FUN_00a905e0(local_54,0x50,*puVar6);
          local_64 = local_54;
        }
        else {
          local_64 = (char *)FUN_00a87520(iVar12);
          if (local_64 == (char *)0x0) goto LAB_00a8e03c;
        }
        pcVar7 = local_64;
        do {
          cVar1 = *pcVar7;
          pcVar7 = pcVar7 + 1;
        } while (cVar1 != '\0');
        _Size = (int)pcVar7 - (int)(local_64 + 1);
        puVar2 = (uint *)puVar6[1];
        uVar3 = *puVar2;
        uVar11 = puVar2[2];
        if (puVar2[1] == 0x1b) {
          uVar8 = uVar3 & 0x80000003;
          if ((int)uVar8 < 0) {
            uVar8 = (uVar8 - 1 | 0xfffffffc) + 1;
          }
          if (uVar8 != 0) goto LAB_00a8e0f3;
          uVar9 = 0;
          local_7c[2] = 0;
          local_7c[1] = 0;
          local_7c[0] = 0;
          uVar8 = 0;
          if (0 < (int)uVar3) {
            do {
              if (*(char *)(uVar9 + uVar11) != '\0') {
                local_7c[uVar9 & 3] = 1;
              }
              uVar9 = uVar9 + 1;
              uVar8 = local_7c[0];
            } while ((int)uVar9 < (int)uVar3);
          }
          if ((uVar8 | local_7c[1] | local_7c[2]) == 0) {
            local_7c[2] = 0;
            local_7c[1] = 0;
            local_7c[0] = 0;
            local_7c[3] = 1;
          }
          else {
            local_7c[3] = 1;
            local_7c[2] = 1;
            local_7c[1] = 1;
            local_7c[0] = 1;
          }
        }
        else {
LAB_00a8e0f3:
          local_7c[3] = 1;
          local_7c[2] = 1;
          local_7c[1] = 1;
          local_7c[0] = 1;
        }
        iVar5 = local_60;
        local_7c[3] = 1;
        uVar8 = 0;
        iVar12 = 0;
        iVar10 = iVar12;
        if (0 < (int)uVar3) {
          do {
            iVar12 = iVar10;
            if (local_7c[uVar8 & 3] != 0) {
              bVar4 = *(byte *)(uVar8 + uVar11);
              iVar12 = iVar10 + 1;
              if ((bVar4 < 0x20) || (0x7e < bVar4)) {
                iVar12 = iVar10 + 4;
              }
            }
            uVar8 = uVar8 + 1;
            iVar10 = iVar12;
          } while ((int)uVar8 < (int)uVar3);
        }
        local_60 = local_60 + 2 + iVar12 + _Size;
        if (local_80 == 0) {
          pcVar7 = local_6c;
          if ((int)(param_3 - 1) < local_60) goto LAB_00a8e243;
        }
        else {
          iVar10 = FUN_00a92a60(local_80,local_60 + 1);
          iVar12 = local_80;
          if (iVar10 == 0) goto LAB_00a8e216;
          pcVar7 = *(char **)(local_80 + 4);
        }
        pcVar7 = pcVar7 + iVar5;
        *pcVar7 = '/';
        pcVar7 = pcVar7 + 1;
        _memcpy(pcVar7,local_64,_Size);
        pcVar7[_Size] = '=';
        iVar12 = *(int *)(local_58[1] + 8);
        pbVar13 = (byte *)(pcVar7 + _Size + 1);
        uVar11 = 0;
        if (0 < (int)uVar3) {
          do {
            if (local_7c[uVar11 & 3] != 0) {
              bVar4 = *(byte *)(uVar11 + iVar12);
              uVar8 = (uint)bVar4;
              if (0x5e < uVar8 - 0x20) {
                *pbVar13 = 0x5c;
                pbVar13[1] = 0x78;
                pbVar13[2] = "0123456789ABCDEF"[(int)uVar8 >> 4];
                pbVar13 = pbVar13 + 3;
                bVar4 = "0123456789ABCDEF"[uVar8 & 0xf];
              }
              *pbVar13 = bVar4;
              pbVar13 = pbVar13 + 1;
            }
            uVar11 = uVar11 + 1;
          } while ((int)uVar11 < (int)uVar3);
        }
        *pbVar13 = 0;
        iVar10 = local_68 + 1;
        local_68 = iVar10;
        iVar5 = FUN_00a80ed0(*local_5c);
        param_1 = local_5c;
        iVar12 = local_80;
      } while (iVar10 < iVar5);
    }
    pcVar7 = local_6c;
    if (iVar12 != 0) {
      pcVar7 = *(char **)(iVar12 + 4);
      FUN_00a85120(iVar12);
    }
LAB_00a8e243:
    if (local_68 == 0) {
      *pcVar7 = '\0';
    }
  }
LAB_00a8e24f:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a8e270(undefined4 param_1,int param_2)

{
  undefined4 uVar1;
  int iVar2;
  int local_4;
  
  local_4 = 0;
  if (param_2 == 0) {
    return param_2;
  }
  uVar1 = FUN_00a8ba30(param_2,&local_4,param_1);
  if (local_4 == 0) {
    FUN_00a7f3c0(0xd,0xbf,0x41,".\\crypto\\asn1\\a_dup.c",0x68);
    return 0;
  }
  param_2 = local_4;
  iVar2 = FUN_00a8ae20(0,&param_2,uVar1,param_1);
  FUN_00a85120(local_4);
  return iVar2;
}



undefined4 * FUN_00a8e2f0(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x58,".\\crypto\\rsa\\rsa_lib.c",0x8b);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(4,0x6a,0x41,".\\crypto\\rsa\\rsa_lib.c",0x8e);
    return (undefined4 *)0x0;
  }
  if (DAT_032ed4ec == 0) {
    DAT_032ed4ec = FUN_00aa14a0();
  }
  puVar1[2] = DAT_032ed4ec;
  if (param_1 == 0) {
    uVar3 = FUN_00aa2830();
    puVar1[3] = uVar3;
  }
  else {
    iVar2 = FUN_00a8f130(param_1);
    if (iVar2 == 0) {
      FUN_00a7f3c0(4,0x6a,0x26,".\\crypto\\rsa\\rsa_lib.c",0x98);
      FUN_00a85120(puVar1);
      return (undefined4 *)0x0;
    }
    puVar1[3] = param_1;
  }
  if (puVar1[3] != 0) {
    iVar2 = FUN_00a989a0(puVar1[3]);
    puVar1[2] = iVar2;
    if (iVar2 == 0) {
      FUN_00a7f3c0(4,0x6a,0x26,".\\crypto\\rsa\\rsa_lib.c",0xa6);
      FUN_00a8f1b0(puVar1[3]);
      FUN_00a85120(puVar1);
      return (undefined4 *)0x0;
    }
  }
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[4] = 0;
  puVar1[5] = 0;
  puVar1[6] = 0;
  puVar1[7] = 0;
  puVar1[8] = 0;
  puVar1[9] = 0;
  puVar1[10] = 0;
  puVar1[0xb] = 0;
  puVar1[0xe] = 1;
  puVar1[0x10] = 0;
  puVar1[0x11] = 0;
  puVar1[0x12] = 0;
  puVar1[0x14] = 0;
  puVar1[0x15] = 0;
  puVar1[0x13] = 0;
  puVar1[0xf] = *(uint *)(puVar1[2] + 0x24) & 0xfffffbff;
  iVar2 = FUN_00a80700(6,puVar1,puVar1 + 0xc);
  if (iVar2 == 0) {
    if (puVar1[3] != 0) {
      FUN_00a8f1b0(puVar1[3]);
    }
    FUN_00a85120(puVar1);
    return (undefined4 *)0x0;
  }
  if (*(code **)(puVar1[2] + 0x1c) != (code *)0x0) {
    iVar2 = (**(code **)(puVar1[2] + 0x1c))(puVar1);
    if (iVar2 == 0) {
      if (puVar1[3] != 0) {
        FUN_00a8f1b0(puVar1[3]);
      }
      FUN_00a80760(6,puVar1,puVar1 + 0xc);
      FUN_00a85120(puVar1);
      puVar1 = (undefined4 *)0x0;
    }
  }
  return puVar1;
}



void FUN_00a8e490(int param_1)

{
  code *pcVar1;
  int iVar2;
  
  if (param_1 != 0) {
    iVar2 = FUN_00a7fe40(param_1 + 0x38,0xffffffff,9,".\\crypto\\rsa\\rsa_lib.c",0xdd);
    if (iVar2 < 1) {
      pcVar1 = *(code **)(*(int *)(param_1 + 8) + 0x20);
      if (pcVar1 != (code *)0x0) {
        (*pcVar1)(param_1);
      }
      if (*(int *)(param_1 + 0xc) != 0) {
        FUN_00a8f1b0(*(int *)(param_1 + 0xc));
      }
      FUN_00a80760(6,param_1,param_1 + 0x30);
      if (*(int *)(param_1 + 0x10) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x10));
      }
      if (*(int *)(param_1 + 0x14) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x14));
      }
      if (*(int *)(param_1 + 0x18) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x18));
      }
      if (*(int *)(param_1 + 0x1c) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x1c));
      }
      if (*(int *)(param_1 + 0x20) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x20));
      }
      if (*(int *)(param_1 + 0x24) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x24));
      }
      if (*(int *)(param_1 + 0x28) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x28));
      }
      if (*(int *)(param_1 + 0x2c) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x2c));
      }
      if (*(int *)(param_1 + 0x50) != 0) {
        FUN_00aa2840(*(int *)(param_1 + 0x50));
      }
      if (*(int *)(param_1 + 0x54) != 0) {
        FUN_00aa2840(*(int *)(param_1 + 0x54));
      }
      if (*(int *)(param_1 + 0x4c) != 0) {
        FUN_00a84f40(*(int *)(param_1 + 0x4c));
      }
      FUN_00a85120(param_1);
    }
  }
  return;
}



bool FUN_00a8e5b0(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_00a7fe40(param_1 + 0x38,1,9,".\\crypto\\rsa\\rsa_lib.c",0x103);
  return 1 < iVar1;
}



void FUN_00a8e5e0(void)

{
  FUN_00a8e2f0(0);
  return;
}



undefined4 * FUN_00a8e5f0(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x44,".\\crypto\\dsa\\dsa_lib.c",0x82);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(10,0x67,0x41,".\\crypto\\dsa\\dsa_lib.c",0x85);
    return (undefined4 *)0x0;
  }
  if (DAT_032ed4f0 == 0) {
    DAT_032ed4f0 = FUN_00aa2c60();
  }
  puVar1[0xf] = DAT_032ed4f0;
  if (param_1 == 0) {
    uVar3 = FUN_00aa3440();
    puVar1[0x10] = uVar3;
  }
  else {
    iVar2 = FUN_00a8f130(param_1);
    if (iVar2 == 0) {
      FUN_00a7f3c0(10,0x67,0x26,".\\crypto\\dsa\\dsa_lib.c",0x8e);
      FUN_00a85120(puVar1);
      return (undefined4 *)0x0;
    }
    puVar1[0x10] = param_1;
  }
  if (puVar1[0x10] != 0) {
    iVar2 = FUN_00aa3450(puVar1[0x10]);
    puVar1[0xf] = iVar2;
    if (iVar2 == 0) {
      FUN_00a7f3c0(10,0x67,0x26,".\\crypto\\dsa\\dsa_lib.c",0x9c);
      FUN_00a8f1b0(puVar1[0x10]);
      FUN_00a85120(puVar1);
      return (undefined4 *)0x0;
    }
  }
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[2] = 1;
  puVar1[3] = 0;
  puVar1[4] = 0;
  puVar1[5] = 0;
  puVar1[6] = 0;
  puVar1[7] = 0;
  puVar1[8] = 0;
  puVar1[9] = 0;
  puVar1[0xb] = 0;
  puVar1[0xc] = 1;
  puVar1[10] = *(uint *)(puVar1[0xf] + 0x20) & 0xfffffbff;
  FUN_00a80700(7,puVar1,puVar1 + 0xd);
  if (*(code **)(puVar1[0xf] + 0x18) != (code *)0x0) {
    iVar2 = (**(code **)(puVar1[0xf] + 0x18))(puVar1);
    if (iVar2 == 0) {
      if (puVar1[0x10] != 0) {
        FUN_00a8f1b0(puVar1[0x10]);
      }
      FUN_00a80760(7,puVar1,puVar1 + 0xd);
      FUN_00a85120(puVar1);
      puVar1 = (undefined4 *)0x0;
    }
  }
  return puVar1;
}



void FUN_00a8e750(int param_1)

{
  code *pcVar1;
  int iVar2;
  
  if (param_1 != 0) {
    iVar2 = FUN_00a7fe40(param_1 + 0x30,0xffffffff,8,".\\crypto\\dsa\\dsa_lib.c",0xc9);
    if (iVar2 < 1) {
      pcVar1 = *(code **)(*(int *)(param_1 + 0x3c) + 0x1c);
      if (pcVar1 != (code *)0x0) {
        (*pcVar1)(param_1);
      }
      if (*(int *)(param_1 + 0x40) != 0) {
        FUN_00a8f1b0(*(int *)(param_1 + 0x40));
      }
      FUN_00a80760(7,param_1,param_1 + 0x34);
      if (*(int *)(param_1 + 0xc) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0xc));
      }
      if (*(int *)(param_1 + 0x10) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x10));
      }
      if (*(int *)(param_1 + 0x14) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x14));
      }
      if (*(int *)(param_1 + 0x18) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x18));
      }
      if (*(int *)(param_1 + 0x1c) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x1c));
      }
      if (*(int *)(param_1 + 0x20) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x20));
      }
      if (*(int *)(param_1 + 0x24) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x24));
      }
      FUN_00a85120(param_1);
    }
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a8e830(int param_1)

{
  int iVar1;
  int local_10;
  undefined4 local_c;
  undefined4 *local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa8e83a;
  iVar1 = FUN_00a9a920(*(undefined4 *)(param_1 + 0x10));
  local_10 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
  local_8 = &param_1;
  local_c = 2;
  param_1 = CONCAT31(param_1._1_3_,0xff);
  iVar1 = FUN_00a887a0(&local_10,0);
  FUN_00a90b80(1,iVar1 * 2,0x10);
  return;
}



void FUN_00a8e890(void)

{
  FUN_00a8e5f0(0);
  return;
}



undefined4 * FUN_00a8e8a0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x24,".\\crypto\\ec\\ec_key.c",0x4b);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(0x10,0xb6,0x41,".\\crypto\\ec\\ec_key.c",0x4e);
    return (undefined4 *)0x0;
  }
  *puVar1 = 1;
  puVar1[7] = 0;
  puVar1[1] = 0;
  puVar1[2] = 0;
  puVar1[3] = 0;
  puVar1[4] = 0;
  puVar1[5] = 4;
  puVar1[6] = 1;
  puVar1[8] = 0;
  return puVar1;
}



void FUN_00a8e900(int param_1)

{
  int iVar1;
  
  if (param_1 != 0) {
    iVar1 = FUN_00a7fe40(param_1 + 0x18,0xffffffff,0x21,".\\crypto\\ec\\ec_key.c",0x72);
    if (iVar1 < 1) {
      if (*(int *)(param_1 + 4) != 0) {
        FUN_00aa4210(*(int *)(param_1 + 4));
      }
      if (*(int *)(param_1 + 8) != 0) {
        FUN_00aa3a10(*(int *)(param_1 + 8));
      }
      if (*(int *)(param_1 + 0xc) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0xc));
      }
      FUN_00aa38e0(param_1 + 0x20);
      FUN_00a84330(param_1,0x24);
      FUN_00a85120(param_1);
    }
  }
  return;
}



undefined4 * FUN_00a8e970(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  
  if ((param_1 == (undefined4 *)0x0) || (param_2 == (undefined4 *)0x0)) {
    FUN_00a7f3c0(0x10,0xb2,0x43,".\\crypto\\ec\\ec_key.c",0x93);
    return (undefined4 *)0x0;
  }
  if (param_2[1] != 0) {
    uVar2 = FUN_00a814c0(param_2[1]);
    if (param_1[1] != 0) {
      FUN_00aa4210(param_1[1]);
    }
    iVar3 = FUN_00aa3460(uVar2);
    param_1[1] = iVar3;
    if (iVar3 == 0) {
      return (undefined4 *)0x0;
    }
    iVar3 = FUN_00aa4320(iVar3,param_2[1]);
    if (iVar3 == 0) {
      return (undefined4 *)0x0;
    }
  }
  if ((param_2[2] != 0) && (param_2[1] != 0)) {
    if (param_1[2] != 0) {
      FUN_00aa3a10(param_1[2]);
    }
    iVar3 = FUN_00aa3960(param_2[1]);
    param_1[2] = iVar3;
    if (iVar3 == 0) {
      return (undefined4 *)0x0;
    }
    iVar3 = FUN_00aa3a80(iVar3,param_2[2]);
    if (iVar3 == 0) {
      return (undefined4 *)0x0;
    }
  }
  if (param_2[3] != 0) {
    if (param_1[3] == 0) {
      iVar3 = FUN_00a9aa10();
      param_1[3] = iVar3;
      if (iVar3 == 0) {
        return (undefined4 *)0x0;
      }
    }
    iVar3 = FUN_00a9aba0(param_1[3],param_2[3]);
    if (iVar3 == 0) {
      return (undefined4 *)0x0;
    }
  }
  FUN_00aa38e0(param_1 + 8);
  puVar1 = (undefined4 *)param_2[8];
  while( true ) {
    if (puVar1 == (undefined4 *)0x0) {
      param_1[4] = param_2[4];
      param_1[5] = param_2[5];
      *param_1 = *param_2;
      param_1[7] = param_2[7];
      return param_1;
    }
    iVar3 = (*(code *)puVar1[2])(puVar1[1]);
    if ((iVar3 == 0) ||
       (iVar3 = FUN_00aa37a0(param_1 + 8,iVar3,puVar1[2],puVar1[3],puVar1[4]), iVar3 == 0)) break;
    puVar1 = (undefined4 *)*puVar1;
  }
  return (undefined4 *)0x0;
}



int FUN_00a8ead0(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_00a8e8a0();
  if (iVar1 != 0) {
    iVar2 = FUN_00a8e970(iVar1,param_1);
    if (iVar2 != 0) {
      return iVar1;
    }
    FUN_00a8e900(iVar1);
  }
  return 0;
}



bool FUN_00a8eb00(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_00a7fe40(param_1 + 0x18,1,0x21,".\\crypto\\ec\\ec_key.c",0xdf);
  return 1 < iVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a8eb30(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 local_4;
  
  iVar4 = 0;
  iVar5 = 0;
  local_4 = 0;
  if ((param_1 == 0) || (*(int *)(param_1 + 4) == 0)) {
    FUN_00a7f3c0(0x10,0xb3,0x43,".\\crypto\\ec\\ec_key.c",0xfb);
    return 0;
  }
  iVar1 = FUN_00a9aa10();
  if (iVar1 != 0) {
    iVar2 = FUN_00aa49c0();
    if ((iVar2 != 0) &&
       (((iVar5 = *(int *)(param_1 + 0xc), iVar5 != 0 || (iVar5 = FUN_00a9aa10(), iVar5 != 0)) &&
        (iVar3 = FUN_00aa3530(*(undefined4 *)(param_1 + 4),iVar1,iVar2), iVar3 != 0)))) {
      do {
        iVar3 = FUN_00aa4eb0(iVar5,iVar1);
        if (iVar3 == 0) goto LAB_00a8ebf5;
      } while (*(int *)(iVar5 + 4) == 0);
      iVar4 = *(int *)(param_1 + 8);
      if (((iVar4 != 0) || (iVar4 = FUN_00aa3960(*(undefined4 *)(param_1 + 4)), iVar4 != 0)) &&
         (iVar3 = FUN_00aa4160(*(undefined4 *)(param_1 + 4),iVar4,iVar5,0,0,iVar2), iVar3 != 0)) {
        *(int *)(param_1 + 0xc) = iVar5;
        *(int *)(param_1 + 8) = iVar4;
        local_4 = 1;
      }
    }
LAB_00a8ebf5:
    FUN_00a9a9b0(iVar1);
    if ((iVar4 != 0) && (*(int *)(param_1 + 8) == 0)) {
      FUN_00aa3a10(iVar4);
    }
    if ((iVar5 != 0) && (*(int *)(param_1 + 0xc) == 0)) {
      FUN_00a9a9b0(iVar5);
    }
    if (iVar2 != 0) {
      FUN_00aa4a20(iVar2);
    }
  }
  return local_4;
}



bool FUN_00a8ec70(int param_1,undefined4 param_2)

{
  int iVar1;
  
  if (*(int *)(param_1 + 4) != 0) {
    FUN_00aa4210(*(int *)(param_1 + 4));
  }
  iVar1 = FUN_00aa44e0(param_2);
  *(int *)(param_1 + 4) = iVar1;
  return iVar1 != 0;
}



bool FUN_00a8eca0(int param_1,undefined4 param_2)

{
  int iVar1;
  
  if (*(int *)(param_1 + 0xc) != 0) {
    FUN_00a9a950(*(int *)(param_1 + 0xc));
  }
  iVar1 = FUN_00a9b160(param_2);
  *(int *)(param_1 + 0xc) = iVar1;
  return iVar1 != 0;
}



bool FUN_00a8ecd0(int param_1,undefined4 param_2)

{
  int iVar1;
  
  if (*(int *)(param_1 + 8) != 0) {
    FUN_00aa3a10(*(int *)(param_1 + 8));
  }
  iVar1 = FUN_00aa3af0(param_2,*(undefined4 *)(param_1 + 4));
  *(int *)(param_1 + 8) = iVar1;
  return iVar1 != 0;
}



void FUN_00a8ed10(int param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1 + 0x10) = param_2;
  return;
}



undefined4 FUN_00a8ed20(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  
  FUN_00a7fdc0(5,0x21,".\\crypto\\ec\\ec_key.c",0x20d);
  uVar1 = FUN_00aa3840(*(undefined4 *)(param_1 + 0x20),param_2,param_3,param_4);
  FUN_00a7fdc0(6,0x21,".\\crypto\\ec\\ec_key.c",0x20f);
  return uVar1;
}



int FUN_00a8ed70(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                undefined4 param_5)

{
  int iVar1;
  
  FUN_00a7fdc0(9,0x21,".\\crypto\\ec\\ec_key.c",0x219);
  iVar1 = FUN_00aa3840(*(undefined4 *)(param_1 + 0x20),param_3,param_4,param_5);
  if (iVar1 == 0) {
    FUN_00aa37a0(param_1 + 0x20,param_2,param_3,param_4,param_5);
  }
  FUN_00a7fdc0(10,0x21,".\\crypto\\ec\\ec_key.c",0x21d);
  return iVar1;
}



undefined4 * FUN_00a8edf0(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x4c,".\\crypto\\dh\\dh_lib.c",0x7c);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(5,0x69,0x41,".\\crypto\\dh\\dh_lib.c",0x7f);
    return (undefined4 *)0x0;
  }
  if (DAT_032ed4f4 == 0) {
    DAT_032ed4f4 = FUN_00aa52c0();
  }
  puVar1[0x11] = DAT_032ed4f4;
  if (param_1 == 0) {
    uVar3 = FUN_00aa5670();
    puVar1[0x12] = uVar3;
  }
  else {
    iVar2 = FUN_00a8f130(param_1);
    if (iVar2 == 0) {
      FUN_00a7f3c0(5,0x69,0x26,".\\crypto\\dh\\dh_lib.c",0x89);
      FUN_00a85120(puVar1);
      return (undefined4 *)0x0;
    }
    puVar1[0x12] = param_1;
  }
  if (puVar1[0x12] != 0) {
    iVar2 = FUN_00aa5680(puVar1[0x12]);
    puVar1[0x11] = iVar2;
    if (iVar2 == 0) {
      FUN_00a7f3c0(5,0x69,0x26,".\\crypto\\dh\\dh_lib.c",0x96);
      FUN_00a8f1b0(puVar1[0x12]);
      FUN_00a85120(puVar1);
      return (undefined4 *)0x0;
    }
  }
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[2] = 0;
  puVar1[3] = 0;
  puVar1[4] = 0;
  puVar1[5] = 0;
  puVar1[6] = 0;
  puVar1[9] = 0;
  puVar1[10] = 0;
  puVar1[0xb] = 0;
  puVar1[0xc] = 0;
  puVar1[0xd] = 0;
  puVar1[8] = 0;
  puVar1[0xe] = 1;
  puVar1[7] = *(uint *)(puVar1[0x11] + 0x18) & 0xfffffbff;
  FUN_00a80700(8,puVar1,puVar1 + 0xf);
  if (*(code **)(puVar1[0x11] + 0x10) != (code *)0x0) {
    iVar2 = (**(code **)(puVar1[0x11] + 0x10))(puVar1);
    if (iVar2 == 0) {
      if (puVar1[0x12] != 0) {
        FUN_00a8f1b0(puVar1[0x12]);
      }
      FUN_00a80760(8,puVar1,puVar1 + 0xf);
      FUN_00a85120(puVar1);
      puVar1 = (undefined4 *)0x0;
    }
  }
  return puVar1;
}



void FUN_00a8ef50(int param_1)

{
  code *pcVar1;
  int iVar2;
  
  if (param_1 != 0) {
    iVar2 = FUN_00a7fe40(param_1 + 0x38,0xffffffff,0x1a,".\\crypto\\dh\\dh_lib.c",0xbf);
    if (iVar2 < 1) {
      pcVar1 = *(code **)(*(int *)(param_1 + 0x44) + 0x14);
      if (pcVar1 != (code *)0x0) {
        (*pcVar1)(param_1);
      }
      if (*(int *)(param_1 + 0x48) != 0) {
        FUN_00a8f1b0(*(int *)(param_1 + 0x48));
      }
      FUN_00a80760(8,param_1,param_1 + 0x3c);
      if (*(int *)(param_1 + 8) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 8));
      }
      if (*(int *)(param_1 + 0xc) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0xc));
      }
      if (*(int *)(param_1 + 0x24) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x24));
      }
      if (*(int *)(param_1 + 0x28) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x28));
      }
      if (*(int *)(param_1 + 0x2c) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0x2c));
      }
      if (*(int *)(param_1 + 0x34) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x34));
      }
      if (*(int *)(param_1 + 0x14) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x14));
      }
      if (*(int *)(param_1 + 0x18) != 0) {
        FUN_00a9a950(*(int *)(param_1 + 0x18));
      }
      FUN_00a85120(param_1);
    }
  }
  return;
}



int FUN_00a8f040(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_00a9a920(*(undefined4 *)(param_1 + 8));
  return (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
}



void FUN_00a8f060(void)

{
  FUN_00a8edf0(0);
  return;
}



int FUN_00a8f070(int param_1)

{
  int iVar1;
  
  iVar1 = 1;
  if (((*(int *)(param_1 + 0x5c) == 0) && (*(code **)(param_1 + 0x38) != (code *)0x0)) &&
     (iVar1 = (**(code **)(param_1 + 0x38))(param_1), iVar1 == 0)) {
    return 0;
  }
  *(int *)(param_1 + 0x58) = *(int *)(param_1 + 0x58) + 1;
  *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x5c) + 1;
  return iVar1;
}



int FUN_00a8f0a0(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  
  piVar1 = (int *)(param_1 + 0x5c);
  *piVar1 = *piVar1 + -1;
  iVar3 = 1;
  if ((*piVar1 == 0) && (*(int *)(param_1 + 0x3c) != 0)) {
    if (param_2 != 0) {
      FUN_00a7fdc0(10,0x1e,".\\crypto\\engine\\eng_init.c",0x61);
    }
    iVar3 = (**(code **)(param_1 + 0x3c))(param_1);
    if (param_2 != 0) {
      FUN_00a7fdc0(9,0x1e,".\\crypto\\engine\\eng_init.c",100);
    }
    if (iVar3 == 0) {
      return 0;
    }
  }
  iVar2 = FUN_00a7fe90(param_1,0);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x26,0xbf,0x6a,".\\crypto\\engine\\eng_init.c",0x72);
    return 0;
  }
  return iVar3;
}



int FUN_00a8f130(int param_1)

{
  int iVar1;
  
  if (param_1 == 0) {
    FUN_00a7f3c0(0x26,0x77,0x43,".\\crypto\\engine\\eng_init.c",0x7e);
    return 0;
  }
  FUN_00a7fdc0(9,0x1e,".\\crypto\\engine\\eng_init.c",0x81);
  iVar1 = 1;
  if ((*(int *)(param_1 + 0x5c) == 0) && (*(code **)(param_1 + 0x38) != (code *)0x0)) {
    iVar1 = (**(code **)(param_1 + 0x38))(param_1);
    if (iVar1 == 0) goto LAB_00a8f18d;
  }
  *(int *)(param_1 + 0x58) = *(int *)(param_1 + 0x58) + 1;
  *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x5c) + 1;
LAB_00a8f18d:
  FUN_00a7fdc0(10,0x1e,".\\crypto\\engine\\eng_init.c",0x83);
  return iVar1;
}



int FUN_00a8f1b0(int param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  
  if (param_1 == 0) {
    FUN_00a7f3c0(0x26,0x6b,0x43,".\\crypto\\engine\\eng_init.c",0x8e);
    return 0;
  }
  FUN_00a7fdc0(9,0x1e,".\\crypto\\engine\\eng_init.c",0x91);
  piVar1 = (int *)(param_1 + 0x5c);
  *piVar1 = *piVar1 + -1;
  iVar3 = 1;
  if ((*piVar1 == 0) && (*(int *)(param_1 + 0x3c) != 0)) {
    FUN_00a7fdc0(10,0x1e,".\\crypto\\engine\\eng_init.c",0x61);
    iVar3 = (**(code **)(param_1 + 0x3c))(param_1);
    FUN_00a7fdc0(9,0x1e,".\\crypto\\engine\\eng_init.c",100);
    if (iVar3 != 0) goto LAB_00a8f22c;
  }
  else {
LAB_00a8f22c:
    iVar2 = FUN_00a7fe90(param_1,0);
    if (iVar2 != 0) goto LAB_00a8f255;
    FUN_00a7f3c0(0x26,0xbf,0x6a,".\\crypto\\engine\\eng_init.c",0x72);
  }
  iVar3 = 0;
LAB_00a8f255:
  FUN_00a7fdc0(10,0x1e,".\\crypto\\engine\\eng_init.c",0x93);
  if (iVar3 == 0) {
    FUN_00a7f3c0(0x26,0x6b,0x6a,".\\crypto\\engine\\eng_init.c",0x96);
    return 0;
  }
  return iVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a8f2a0(void)

{
  int iVar1;
  int *piVar2;
  undefined *local_70;
  undefined local_6c [104];
  undefined4 uStack_4;
  
  uStack_4 = 0xa8f2aa;
  local_70 = local_6c;
  if (DAT_032ed4f8 != 0) {
    iVar1 = FUN_00a81100(DAT_032ed4f8,local_6c);
    if (-1 < iVar1) {
      iVar1 = FUN_00a80ee0(DAT_032ed4f8,iVar1);
      return iVar1;
    }
  }
  piVar2 = (int *)FUN_00a877b0(&local_70,&PTR_DAT_03242a6c,0xb,4,&LAB_00afc130);
  if ((piVar2 == (int *)0x0) || (iVar1 = *piVar2, iVar1 == 0)) {
    iVar1 = 0;
  }
  return iVar1;
}



int FUN_00a8f310(int *param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_00a8f2a0();
  while ((iVar1 != 0 && ((*(byte *)(iVar1 + 8) & 1) != 0))) {
    param_2 = *(undefined4 *)(iVar1 + 4);
    iVar1 = FUN_00a8f2a0();
  }
  if (param_1 != (int *)0x0) {
    iVar2 = FUN_00a86a60(param_2);
    if (iVar2 != 0) {
      *param_1 = iVar2;
      iVar1 = FUN_00a86c30(iVar2,param_2);
      return iVar1;
    }
    *param_1 = 0;
  }
  return iVar1;
}



undefined * FUN_00a8f370(size_t *param_1,char *param_2,size_t param_3)

{
  char cVar1;
  char *pcVar2;
  size_t _MaxCount;
  undefined *puVar3;
  int iVar4;
  int iVar5;
  char *pcVar6;
  
  _MaxCount = param_3;
  if (param_3 == 0xffffffff) {
    pcVar2 = param_2;
    do {
      cVar1 = *pcVar2;
      pcVar2 = pcVar2 + 1;
    } while (cVar1 != '\0');
    _MaxCount = (int)pcVar2 - (int)(param_2 + 1);
  }
  if (param_1 != (size_t *)0x0) {
    puVar3 = (undefined *)FUN_00a86ba0(&param_3,param_2,_MaxCount);
    if (puVar3 != (undefined *)0x0) {
      iVar4 = FUN_00a8f130(param_3);
      if (iVar4 == 0) {
        puVar3 = (undefined *)0x0;
      }
      FUN_00a7ff20(param_3);
      *param_1 = param_3;
      return puVar3;
    }
    *param_1 = 0;
  }
  iVar4 = 0;
  while( true ) {
    iVar5 = 0xb;
    if (DAT_032ed4f8 != 0) {
      iVar5 = FUN_00a80ed0(DAT_032ed4f8);
      iVar5 = iVar5 + 0xb;
    }
    if (iVar5 <= iVar4) break;
    if (iVar4 < 0) {
      puVar3 = (undefined *)0x0;
    }
    else if (iVar4 < 0xb) {
      puVar3 = (&PTR_DAT_03242a6c)[iVar4];
    }
    else {
      puVar3 = (undefined *)FUN_00a80ee0(DAT_032ed4f8,iVar4 + -0xb);
    }
    if ((puVar3[8] & 1) == 0) {
      pcVar2 = *(char **)(puVar3 + 0xc);
      pcVar6 = pcVar2;
      do {
        cVar1 = *pcVar6;
        pcVar6 = pcVar6 + 1;
      } while (cVar1 != '\0');
      if ((int)pcVar6 - (int)(pcVar2 + 1) == _MaxCount) {
        iVar5 = __strnicmp(pcVar2,param_2,_MaxCount);
        if (iVar5 == 0) {
          return puVar3;
        }
      }
    }
    iVar4 = iVar4 + 1;
  }
  return (undefined *)0x0;
}



undefined4 *
FUN_00a8f480(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
            undefined4 *param_5,undefined4 *param_6)

{
  if (param_6 == (undefined4 *)0x0) {
    return param_6;
  }
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = *param_6;
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = param_6[1];
  }
  if (param_3 != (undefined4 *)0x0) {
    *param_3 = param_6[2];
  }
  if (param_4 != (undefined4 *)0x0) {
    *param_4 = param_6[4];
  }
  if (param_5 != (undefined4 *)0x0) {
    *param_5 = param_6[3];
  }
  return (undefined4 *)0x1;
}



void FUN_00a8f4d0(int param_1)

{
  if ((param_1 != 0) && ((*(byte *)(param_1 + 8) & 2) != 0)) {
    if (*(int *)(param_1 + 0xc) != 0) {
      FUN_00a85120(*(int *)(param_1 + 0xc));
    }
    if (*(int *)(param_1 + 0x10) != 0) {
      FUN_00a85120(*(int *)(param_1 + 0x10));
    }
    FUN_00a85120(param_1);
  }
  return;
}



void FUN_00a8f530(void)

{
  FUN_00a8bf10(&DAT_00db69a4);
  return;
}



void FUN_00a8f540(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db69a4);
  return;
}



void FUN_00a8f560(undefined4 param_1)

{
  FUN_00a8e270(&DAT_00db69a4,param_1);
  return;
}



undefined4 * FUN_00a8f580(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  
  iVar4 = 0;
  puVar1 = (undefined4 *)FUN_00a8bf10(&DAT_00db69a4);
  if (puVar1 != (undefined4 *)0x0) {
    uVar2 = FUN_00a87490(param_1);
    *puVar1 = uVar2;
    puVar1[1] = 0;
    iVar3 = FUN_00a81010();
    puVar1[2] = iVar3;
    if (iVar3 != 0) {
      iVar4 = FUN_00a889c0();
      if (iVar4 != 0) {
        iVar3 = FUN_00a80df0(puVar1[2],iVar4);
        if (iVar3 != 0) {
          FUN_00a9d500(iVar4,param_2,param_3);
          return puVar1;
        }
      }
    }
    FUN_00a8c2c0(puVar1,&DAT_00db69a4);
    if (iVar4 != 0) {
      FUN_00a889d0(iVar4);
    }
  }
  return (undefined4 *)0x0;
}



undefined4 * FUN_00a8f610(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x28,".\\crypto\\x509\\x509_vpm.c",0x5b);
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[2] = 0;
  puVar1[3] = 0;
  puVar1[4] = 0;
  puVar1[5] = 0;
  puVar1[6] = 0;
  puVar1[7] = 0;
  puVar1[8] = 0;
  puVar1[9] = 0;
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
    puVar1[6] = 0;
    puVar1[7] = 0;
    puVar1[4] = 0;
    puVar1[5] = 0;
    puVar1[8] = 0xffffffff;
    if (puVar1[9] != 0) {
      FUN_00a81120(puVar1[9],FUN_00a90760);
      puVar1[9] = 0;
    }
  }
  return puVar1;
}



void FUN_00a8f680(undefined4 *param_1)

{
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = 0;
    param_1[6] = 0;
    param_1[7] = 0;
    param_1[4] = 0;
    param_1[5] = 0;
    param_1[8] = 0xffffffff;
    if (param_1[9] != 0) {
      FUN_00a81120(param_1[9],FUN_00a90760);
      param_1[9] = 0;
    }
  }
  FUN_00a85120(param_1);
  return;
}



undefined4 FUN_00a8f6d0(int param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  
  iVar4 = 0;
  if (param_1 == 0) {
    return 0;
  }
  if (*(int *)(param_1 + 0x24) != 0) {
    FUN_00a81120(*(int *)(param_1 + 0x24),FUN_00a90760);
  }
  if (param_2 == 0) {
    *(undefined4 *)(param_1 + 0x24) = 0;
    return 1;
  }
  iVar1 = FUN_00a81010();
  *(int *)(param_1 + 0x24) = iVar1;
  if (iVar1 == 0) {
    return 0;
  }
  iVar1 = FUN_00a80ed0(param_2);
  if (0 < iVar1) {
    do {
      uVar2 = FUN_00a80ee0(param_2,iVar4);
      iVar1 = FUN_00a8fff0(uVar2);
      if (iVar1 == 0) {
        return 0;
      }
      iVar3 = FUN_00a80df0(*(undefined4 *)(param_1 + 0x24),iVar1);
      if (iVar3 == 0) {
        FUN_00a90760(iVar1);
        return 0;
      }
      iVar4 = iVar4 + 1;
      iVar1 = FUN_00a80ed0(param_2);
    } while (iVar4 < iVar1);
  }
  *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | 0x80;
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a8f7d0(undefined4 param_1)

{
  int iVar1;
  undefined4 local_28 [9];
  undefined4 uStack_4;
  
  uStack_4 = 0xa8f7da;
  local_28[0] = param_1;
  if (DAT_032ed4fc != 0) {
    iVar1 = FUN_00a81100(DAT_032ed4fc,local_28);
    if (iVar1 != -1) {
      FUN_00a80ee0(DAT_032ed4fc,iVar1);
      return;
    }
  }
  FUN_00a877b0(local_28,&PTR_s_default_00db69e8,5,0x28,&LAB_00a8f790);
  return;
}



undefined4 FUN_00a8f830(int param_1,int param_2)

{
  undefined4 uVar1;
  bool bVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  
  if (param_2 == 0) {
    return 1;
  }
  uVar4 = *(uint *)(param_2 + 0x10) | *(uint *)(param_1 + 0x10);
  if ((uVar4 & 0x10) != 0) {
    *(undefined4 *)(param_1 + 0x10) = 0;
  }
  if ((uVar4 & 8) != 0) {
    return 1;
  }
  uVar5 = uVar4 & 1;
  if ((uVar4 & 2) == 0) {
    bVar2 = false;
    if ((*(int *)(param_2 + 0x18) != 0) && ((uVar5 != 0 || (*(int *)(param_1 + 0x18) == 0))))
    goto LAB_00a8f87e;
LAB_00a8f888:
    if ((*(int *)(param_2 + 0x1c) != 0) && ((uVar5 != 0 || (*(int *)(param_1 + 0x1c) == 0))))
    goto LAB_00a8f897;
LAB_00a8f8a1:
    if ((*(int *)(param_2 + 0x20) != -1) && ((uVar5 != 0 || (*(int *)(param_1 + 0x20) == -1))))
    goto LAB_00a8f8b2;
LAB_00a8f8bc:
    if ((*(byte *)(param_1 + 0x14) & 2) != 0) goto LAB_00a8f8d2;
  }
  else {
    bVar2 = true;
LAB_00a8f87e:
    *(undefined4 *)(param_1 + 0x18) = *(undefined4 *)(param_2 + 0x18);
    if (!bVar2) goto LAB_00a8f888;
LAB_00a8f897:
    *(undefined4 *)(param_1 + 0x1c) = *(undefined4 *)(param_2 + 0x1c);
    if (!bVar2) goto LAB_00a8f8a1;
LAB_00a8f8b2:
    *(undefined4 *)(param_1 + 0x20) = *(undefined4 *)(param_2 + 0x20);
    if (!bVar2) goto LAB_00a8f8bc;
  }
  *(undefined4 *)(param_1 + 8) = *(undefined4 *)(param_2 + 8);
  uVar1 = *(undefined4 *)(param_2 + 0xc);
  *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) & 0xfffffffd;
  *(undefined4 *)(param_1 + 0xc) = uVar1;
LAB_00a8f8d2:
  if ((uVar4 & 4) != 0) {
    *(undefined4 *)(param_1 + 0x14) = 0;
  }
  *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | *(uint *)(param_2 + 0x14);
  if (((bVar2) ||
      ((*(int *)(param_2 + 0x24) != 0 && ((uVar5 != 0 || (*(int *)(param_1 + 0x24) == 0)))))) &&
     (iVar3 = FUN_00a8f6d0(param_1,*(undefined4 *)(param_2 + 0x24)), iVar3 == 0)) {
    return 0;
  }
  return 1;
}



void FUN_00a8f920(int param_1,undefined4 param_2)

{
  uint uVar1;
  
  uVar1 = *(uint *)(param_1 + 0x10);
  *(uint *)(param_1 + 0x10) = uVar1 | 1;
  FUN_00a8f830(param_1,param_2);
  *(uint *)(param_1 + 0x10) = uVar1;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a8f970(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  int *unaff_EBX;
  int iVar6;
  int local_c;
  int local_8;
  undefined4 local_4;
  
  uVar5 = *(undefined4 *)(*unaff_EBX + 0x14);
  iVar6 = 0;
  local_8 = 0;
  local_4 = uVar5;
  iVar1 = FUN_00a80ed0(uVar5);
  if (0 < iVar1) {
    while( true ) {
      iVar1 = FUN_00a80ee0(uVar5,iVar6);
      iVar2 = FUN_00aa02d0(iVar1,0x303,&local_c,0);
      if (iVar2 == 0) break;
      local_8 = iVar2;
      if (unaff_EBX[0x10] == 0) {
        iVar3 = FUN_00a81010();
        unaff_EBX[0x10] = iVar3;
        if (iVar3 == 0) {
          return 0;
        }
      }
      iVar2 = FUN_00a80df0(unaff_EBX[0x10],iVar2);
      if (iVar2 == 0) {
        return 0;
      }
LAB_00a8fa11:
      *(int *)(iVar1 + 0xc) = local_8;
      iVar2 = FUN_00aa02d0(iVar1,0x8d,&local_c,0);
      if (iVar2 == 0) {
        if (local_c != -1) goto LAB_00a8f9cf;
        *(undefined4 *)(iVar1 + 0x10) = 0xffffffff;
      }
      else {
        uVar5 = FUN_00aa8c70(iVar2);
        *(undefined4 *)(iVar1 + 0x10) = uVar5;
        FUN_00a88800(iVar2);
      }
      uVar5 = *(undefined4 *)(iVar1 + 8);
      local_c = 0;
      iVar1 = FUN_00a80ed0(uVar5);
      if (local_c < iVar1) {
        do {
          puVar4 = (undefined4 *)FUN_00a80ee0(uVar5,local_c);
          if ((0 < (int)puVar4[1]) && (iVar1 = FUN_00a877e0(*puVar4), iVar1 != 0x303)) {
            unaff_EBX[4] = unaff_EBX[4] | 0x200;
            break;
          }
          local_c = local_c + 1;
          iVar1 = FUN_00a80ed0(uVar5);
        } while (local_c < iVar1);
      }
      iVar6 = iVar6 + 1;
      iVar1 = FUN_00a80ed0(local_4);
      uVar5 = local_4;
      if (iVar1 <= iVar6) {
        return 1;
      }
    }
    if (local_c == -1) goto LAB_00a8fa11;
LAB_00a8f9cf:
    unaff_EBX[4] = unaff_EBX[4] | 0x80;
  }
  return 1;
}



undefined * FUN_00a8fb70(void)

{
  return &DAT_00db6c9c;
}



void FUN_00a8fba0(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db6c9c);
  return;
}



undefined4 FUN_00a8fbe0(int param_1)

{
  code *UNRECOVERED_JUMPTABLE;
  undefined4 uVar1;
  
  UNRECOVERED_JUMPTABLE = *(code **)(*(int *)(param_1 + 0x44) + 0x10);
  if (UNRECOVERED_JUMPTABLE != (code *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00a8fbf2. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (*UNRECOVERED_JUMPTABLE)();
    return uVar1;
  }
  return 0;
}



undefined4 FUN_00a8fc00(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *(int *)(param_1 + 0x44);
  if (*(int *)(iVar1 + 0xc) != 0) {
    uVar2 = FUN_00a82a40(param_3);
    uVar2 = FUN_00a925b0(param_3,uVar2);
    uVar2 = (**(code **)(iVar1 + 0xc))(param_1,param_2,uVar2);
    return uVar2;
  }
  return 0;
}



bool __fastcall FUN_00a8fc70(int *param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int unaff_EDI;
  
  if (*(int *)(unaff_EDI + 0xc) != 0) {
    if (param_2 == 0) {
      param_2 = *(int *)(*param_1 + 8);
    }
    iVar3 = 0;
    iVar1 = FUN_00a80ed0(*(int *)(unaff_EDI + 0xc));
    if (0 < iVar1) {
      do {
        piVar2 = (int *)FUN_00a80ee0(*(undefined4 *)(unaff_EDI + 0xc),iVar3);
        if (*piVar2 == 4) {
          iVar1 = FUN_00a82ae0(param_2,piVar2[1]);
          if (iVar1 == 0) {
            return true;
          }
        }
        iVar3 = iVar3 + 1;
        iVar1 = FUN_00a80ed0(*(undefined4 *)(unaff_EDI + 0xc));
      } while (iVar3 < iVar1);
    }
    return false;
  }
  if (param_2 == 0) {
    return true;
  }
  iVar1 = FUN_00a82ae0(param_2,*(undefined4 *)(*param_1 + 8));
  return iVar1 == 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

char FUN_00a8fd00(int *param_1,undefined4 *param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 local_18 [5];
  undefined4 uStack_4;
  
  uStack_4 = 0xa8fd0a;
  local_18[0] = param_3;
  iVar1 = FUN_00a80f60(*(undefined4 *)(*param_1 + 0x14));
  if (iVar1 == 0) {
    FUN_00a7fdc0(9,6,".\\crypto\\asn1\\x_crl.c",0x1c7);
    FUN_00a80f30(*(undefined4 *)(*param_1 + 0x14));
    FUN_00a7fdc0(10,6,".\\crypto\\asn1\\x_crl.c",0x1c9);
  }
  iVar1 = FUN_00a81100(*(undefined4 *)(*param_1 + 0x14),local_18);
  if (iVar1 < 0) {
    return '\0';
  }
  iVar2 = FUN_00a80ed0(*(undefined4 *)(*param_1 + 0x14));
  if (iVar1 < iVar2) {
    do {
      puVar3 = (undefined4 *)FUN_00a80ee0(*(undefined4 *)(*param_1 + 0x14),iVar1);
      iVar2 = FUN_00a9d660(*puVar3,param_3);
      if (iVar2 != 0) {
        return '\0';
      }
      iVar2 = FUN_00a8fc70();
      if (iVar2 != 0) {
        if (param_2 != (undefined4 *)0x0) {
          *param_2 = puVar3;
        }
        return (puVar3[4] == 8) + '\x01';
      }
      iVar1 = iVar1 + 1;
      iVar2 = FUN_00a80ed0(*(undefined4 *)(*param_1 + 0x14));
    } while (iVar1 < iVar2);
  }
  return '\0';
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

char ** FUN_00a8fff0(char **param_1)

{
  char *pcVar1;
  char cVar2;
  char **ppcVar3;
  char *_Dst;
  char *pcVar4;
  char *_Dst_00;
  char *local_4;
  
  _Dst_00 = (char *)0x0;
  local_4 = (char *)0x0;
  if (param_1 == (char **)0x0) {
    return (char **)0x0;
  }
  if ((*(byte *)(param_1 + 5) & 1) == 0) {
    return param_1;
  }
  ppcVar3 = (char **)FUN_00a90710();
  if (ppcVar3 == (char **)0x0) {
    FUN_00a7f3c0(8,0x65,0xd,".\\crypto\\objects\\obj_lib.c",0x50);
    return (char **)0x0;
  }
  _Dst = (char *)FUN_00a84f80(param_1[3],".\\crypto\\objects\\obj_lib.c",0x53);
  if (_Dst != (char *)0x0) {
    if (param_1[4] != (char *)0x0) {
      _memcpy(_Dst,param_1[4],(size_t)param_1[3]);
    }
    ppcVar3[4] = _Dst;
    ppcVar3[3] = param_1[3];
    ppcVar3[2] = param_1[2];
    *ppcVar3 = (char *)0x0;
    ppcVar3[1] = (char *)0x0;
    pcVar4 = param_1[1];
    if (pcVar4 != (char *)0x0) {
      pcVar1 = pcVar4 + 1;
      do {
        cVar2 = *pcVar4;
        pcVar4 = pcVar4 + 1;
      } while (cVar2 != '\0');
      _Dst_00 = (char *)FUN_00a84f80(pcVar4 + (1 - (int)pcVar1),".\\crypto\\objects\\obj_lib.c",0x60
                                    );
      if (_Dst_00 == (char *)0x0) goto LAB_00a90108;
      _memcpy(_Dst_00,param_1[1],(size_t)(pcVar4 + (1 - (int)pcVar1)));
      ppcVar3[1] = _Dst_00;
    }
    pcVar4 = *param_1;
    if (pcVar4 != (char *)0x0) {
      pcVar1 = pcVar4 + 1;
      do {
        cVar2 = *pcVar4;
        pcVar4 = pcVar4 + 1;
      } while (cVar2 != '\0');
      local_4 = (char *)FUN_00a84f80(pcVar4 + (1 - (int)pcVar1),".\\crypto\\objects\\obj_lib.c",0x69
                                    );
      if (local_4 == (char *)0x0) goto LAB_00a90108;
      _memcpy(local_4,*param_1,(size_t)(pcVar4 + (1 - (int)pcVar1)));
      *ppcVar3 = local_4;
    }
    ppcVar3[5] = (char *)((uint)param_1[5] | 0xd);
    return ppcVar3;
  }
LAB_00a90108:
  FUN_00a7f3c0(8,0x65,0x41,".\\crypto\\objects\\obj_lib.c",0x72);
  if (_Dst_00 != (char *)0x0) {
    FUN_00a85120(_Dst_00);
  }
  if (local_4 != (char *)0x0) {
    FUN_00a85120(local_4);
  }
  if (_Dst != (char *)0x0) {
    FUN_00a85120(_Dst);
  }
  FUN_00a85120(ppcVar3);
  return (char **)0x0;
}



uint FUN_00a90180(int param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  int *piVar4;
  int *piVar5;
  
  uVar3 = *(uint *)(param_1 + 0xc);
  uVar1 = uVar3 - *(int *)(param_2 + 0xc);
  if (uVar1 == 0) {
    piVar4 = *(int **)(param_2 + 0x10);
    piVar5 = *(int **)(param_1 + 0x10);
    for (; 3 < uVar3; uVar3 = uVar3 - 4) {
      if (*piVar5 != *piVar4) goto LAB_00a901b8;
      piVar4 = piVar4 + 1;
      piVar5 = piVar5 + 1;
    }
    if (uVar3 != 0) {
LAB_00a901b8:
      iVar2 = (uint)*(byte *)piVar5 - (uint)*(byte *)piVar4;
      if (iVar2 != 0) goto LAB_00a901f3;
      if (1 < uVar3) {
        iVar2 = (uint)*(byte *)((int)piVar5 + 1) - (uint)*(byte *)((int)piVar4 + 1);
        if (iVar2 != 0) goto LAB_00a901f3;
        if (2 < uVar3) {
          iVar2 = (uint)*(byte *)((int)piVar5 + 2) - (uint)*(byte *)((int)piVar4 + 2);
          if (iVar2 != 0) {
LAB_00a901f3:
            return iVar2 >> 0x1f | 1;
          }
          if (3 < uVar3) {
            iVar2 = (uint)*(byte *)((int)piVar5 + 3) - (uint)*(byte *)((int)piVar4 + 3);
            goto LAB_00a901f3;
          }
        }
      }
    }
    uVar1 = 0;
  }
  return uVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a90210(int param_1,int param_2,char *param_3,int param_4)

{
  char cVar1;
  bool bVar2;
  uint uVar3;
  undefined uVar4;
  char *pcVar5;
  int iVar6;
  int iVar7;
  undefined *puVar8;
  int iVar9;
  uint uVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  int local_38;
  int local_34;
  int local_30;
  char *local_2c;
  int local_28;
  uint local_24;
  int local_20;
  undefined local_1c [24];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_38;
  local_20 = param_1;
  local_34 = 0;
  puVar8 = local_1c;
  local_28 = 0x18;
  local_38 = 0;
  if (param_4 == 0) {
    ___security_check_cookie_4();
    return;
  }
  if (param_4 == -1) {
    pcVar5 = param_3;
    do {
      cVar1 = *pcVar5;
      pcVar5 = pcVar5 + 1;
    } while (cVar1 != '\0');
    param_4 = (int)pcVar5 - (int)(param_3 + 1);
  }
  local_24 = (int)*param_3 - 0x30;
  if (2 < local_24) {
    FUN_00a7f3c0(0xd,100,0x7a,".\\crypto\\asn1\\a_object.c",0x6d);
    ___security_check_cookie_4();
    return;
  }
  if (param_4 + -1 < 1) {
    FUN_00a7f3c0(0xd,100,0x8a,".\\crypto\\asn1\\a_object.c",0x73);
    ___security_check_cookie_4();
    return;
  }
  local_30 = (int)param_3[1];
  iVar9 = param_4 + -2;
  local_2c = param_3 + 2;
  param_4 = iVar9;
  if (0 < iVar9) {
    do {
      if ((local_30 != 0x2e) && (local_30 != 0x20)) {
        uVar12 = 0x7d;
        uVar11 = 0x83;
LAB_00a9053d:
        FUN_00a7f3c0(0xd,100,uVar11,".\\crypto\\asn1\\a_object.c",uVar12);
LAB_00a90549:
        if (puVar8 != local_1c) {
          FUN_00a85120(puVar8);
        }
        if (local_38 != 0) {
          FUN_00a9a9b0(local_38);
        }
        ___security_check_cookie_4();
        return;
      }
      uVar10 = 0;
      bVar2 = false;
      uVar3 = local_24;
      while (0 < iVar9) {
        iVar6 = (int)*local_2c;
        iVar9 = iVar9 + -1;
        local_2c = local_2c + 1;
        param_4 = iVar9;
        local_30 = iVar6;
        if ((iVar6 == 0x20) || (iVar6 == 0x2e)) break;
        if ((iVar6 < 0x30) || (0x39 < iVar6)) {
          uVar12 = 0x8b;
          uVar11 = 0x82;
          goto LAB_00a9053d;
        }
        if (bVar2) {
LAB_00a9037f:
          iVar7 = FUN_00a9b970(local_38,10);
          if ((iVar7 == 0) ||
             (iVar6 = FUN_00a9b7f0(local_38,iVar6 + -0x30), uVar3 = local_24, iVar6 == 0))
          goto LAB_00a90549;
        }
        else {
          if (0x19999990 < uVar10) {
            bVar2 = true;
            if (((local_38 != 0) || (local_38 = FUN_00a9aa10(), local_38 != 0)) &&
               (iVar7 = FUN_00a9ac50(local_38,uVar10), iVar7 != 0)) goto LAB_00a9037f;
            goto LAB_00a90549;
          }
          uVar10 = iVar6 + -0x30 + uVar10 * 10;
        }
      }
      if (local_34 == 0) {
        if (((int)uVar3 < 2) && (0x27 < uVar10)) {
          uVar12 = 0xa3;
          uVar11 = 0x93;
          goto LAB_00a9053d;
        }
        if (bVar2) {
          iVar6 = FUN_00a9b7f0(local_38,uVar3 * 0x28);
          iVar9 = param_4;
          if (iVar6 == 0) goto LAB_00a90549;
        }
        else {
          uVar10 = uVar10 + uVar3 * 0x28;
        }
      }
      iVar6 = 0;
      if (bVar2) {
        iVar9 = FUN_00a9a920(local_38);
        iVar7 = (iVar9 + 6) / 7;
        if (local_28 < iVar7) {
          if (puVar8 != local_1c) {
            FUN_00a85120(puVar8);
          }
          local_28 = iVar7 + 0x20;
          puVar8 = (undefined *)FUN_00a84f80(local_28,".\\crypto\\asn1\\a_object.c",0xb9);
          if (puVar8 == (undefined *)0x0) goto LAB_00a90549;
        }
        for (; iVar9 = param_4, iVar7 != 0; iVar7 = iVar7 + -1) {
          uVar4 = FUN_00a9b730(local_38,0x80);
          puVar8[iVar6] = uVar4;
          iVar6 = iVar6 + 1;
        }
      }
      else {
        do {
          puVar8[iVar6] = (byte)uVar10 & 0x7f;
          uVar10 = uVar10 >> 7;
          iVar6 = iVar6 + 1;
        } while (uVar10 != 0);
      }
      if (local_20 == 0) {
        local_34 = local_34 + iVar6;
      }
      else {
        if (param_2 < iVar6 + local_34) {
          uVar12 = 0xcf;
          uVar11 = 0x6b;
          goto LAB_00a9053d;
        }
        while (iVar6 = iVar6 + -1, 0 < iVar6) {
          *(byte *)(local_20 + local_34) = puVar8[iVar6] | 0x80;
          local_34 = local_34 + 1;
        }
        *(undefined *)(local_20 + local_34) = *puVar8;
        local_34 = local_34 + 1;
      }
    } while (0 < iVar9);
    if (puVar8 != local_1c) {
      FUN_00a85120(puVar8);
    }
    if (local_38 != 0) {
      FUN_00a9a9b0(local_38);
    }
  }
  ___security_check_cookie_4();
  return;
}



void FUN_00a905e0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a878a0(param_1,param_2,param_3,0);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a90600(undefined4 param_1,int param_2)

{
  int iVar1;
  undefined *puVar2;
  undefined4 local_58;
  undefined local_54 [80];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_58;
  local_58 = param_1;
  puVar2 = local_54;
  if ((param_2 == 0) || (*(int *)(param_2 + 0x10) == 0)) {
    FUN_00a833e0(param_1,&DAT_00da4528,4);
    ___security_check_cookie_4();
    return;
  }
  iVar1 = FUN_00a878a0(puVar2,0x50,param_2,0);
  if (0x4f < iVar1) {
    puVar2 = (undefined *)FUN_00a84f80(iVar1 + 1,".\\crypto\\asn1\\a_object.c",0xf5);
    if (puVar2 == (undefined *)0x0) {
      ___security_check_cookie_4();
      return;
    }
    FUN_00a878a0(puVar2,iVar1 + 1,param_2,0);
    param_1 = local_58;
  }
  if (iVar1 < 1) {
    FUN_00a833e0(param_1,"<INVALID>",9);
    ___security_check_cookie_4();
    return;
  }
  FUN_00a833e0(param_1,puVar2,iVar1);
  if (puVar2 != local_54) {
    FUN_00a85120(puVar2);
  }
  ___security_check_cookie_4();
  return;
}



undefined4 * FUN_00a90710(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x18,".\\crypto\\asn1\\a_object.c",0x15f);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(0xd,0x7b,0x41,".\\crypto\\asn1\\a_object.c",0x162);
    return (undefined4 *)0x0;
  }
  puVar1[3] = 0;
  puVar1[4] = 0;
  puVar1[2] = 0;
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[5] = 1;
  return puVar1;
}



void FUN_00a90760(int *param_1)

{
  if (param_1 != (int *)0x0) {
    if ((*(byte *)(param_1 + 5) & 4) != 0) {
      if (*param_1 != 0) {
        FUN_00a85120(*param_1);
      }
      if (param_1[1] != 0) {
        FUN_00a85120(param_1[1]);
      }
      param_1[1] = 0;
      *param_1 = 0;
    }
    if ((*(byte *)(param_1 + 5) & 8) != 0) {
      if (param_1[4] != 0) {
        FUN_00a85120(param_1[4]);
      }
      param_1[4] = 0;
      param_1[3] = 0;
    }
    if ((*(byte *)(param_1 + 5) & 1) != 0) {
      FUN_00a85120(param_1);
    }
  }
  return;
}



undefined4 * FUN_00a907d0(undefined4 *param_1,void **param_2,size_t param_3)

{
  void *_Src;
  int iVar1;
  undefined4 *puVar2;
  size_t sVar3;
  void *_Dst;
  byte *pbVar4;
  
  iVar1 = 0;
  if (0 < (int)param_3) {
    pbVar4 = (byte *)((int)*param_2 + -1);
    do {
      if ((*(char *)((int)*param_2 + iVar1) == -0x80) && ((iVar1 == 0 || ((*pbVar4 & 0x80) == 0))))
      {
        FUN_00a7f3c0(0xd,0xc4,0xd8,".\\crypto\\asn1\\a_object.c",300);
        return (undefined4 *)0x0;
      }
      iVar1 = iVar1 + 1;
      pbVar4 = pbVar4 + 1;
    } while (iVar1 < (int)param_3);
  }
  if (((param_1 == (undefined4 *)0x0) ||
      (puVar2 = (undefined4 *)*param_1, puVar2 == (undefined4 *)0x0)) ||
     ((*(byte *)(puVar2 + 5) & 1) == 0)) {
    puVar2 = (undefined4 *)FUN_00a84f80(0x18,".\\crypto\\asn1\\a_object.c",0x15f);
    if (puVar2 == (undefined4 *)0x0) {
      FUN_00a7f3c0(0xd,0x7b,0x41,".\\crypto\\asn1\\a_object.c",0x162);
      return (undefined4 *)0x0;
    }
    puVar2[3] = 0;
    puVar2[4] = 0;
    puVar2[2] = 0;
    *puVar2 = 0;
    puVar2[1] = 0;
    puVar2[5] = 1;
  }
  _Dst = (void *)puVar2[4];
  _Src = *param_2;
  puVar2[4] = 0;
  if ((_Dst == (void *)0x0) || ((int)puVar2[3] < (int)param_3)) {
    puVar2[3] = 0;
    if (_Dst != (void *)0x0) {
      FUN_00a85120(_Dst);
    }
    sVar3 = param_3;
    if (param_3 == 0) {
      sVar3 = 1;
    }
    _Dst = (void *)FUN_00a84f80(sVar3,".\\crypto\\asn1\\a_object.c",0x143);
    if (_Dst == (void *)0x0) {
      FUN_00a7f3c0(0xd,0xc4,0x41,".\\crypto\\asn1\\a_object.c",0x155);
      if ((param_1 == (undefined4 *)0x0) || ((undefined4 *)*param_1 != puVar2)) {
        FUN_00a90760(puVar2);
      }
      return (undefined4 *)0x0;
    }
    puVar2[5] = puVar2[5] | 8;
  }
  _memcpy(_Dst,_Src,param_3);
  puVar2[4] = _Dst;
  puVar2[3] = param_3;
  *puVar2 = 0;
  puVar2[1] = 0;
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = puVar2;
  }
  *param_2 = (void *)((int)_Src + param_3);
  return puVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a90940(undefined4 param_1,undefined4 *param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 uVar3;
  int iVar4;
  int local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  puVar1 = param_2;
  local_4 = 0xa9094a;
  param_2 = (undefined4 *)*param_2;
  cVar2 = FUN_00a90eb0(&param_2,&local_8,&local_c,&local_4,param_3);
  if (cVar2 < '\0') {
    uVar3 = 0x66;
  }
  else {
    if (local_c == 6) {
      iVar4 = FUN_00a907d0(param_1,&param_2,local_8);
      if (iVar4 != 0) {
        *puVar1 = param_2;
      }
      return iVar4;
    }
    uVar3 = 0x74;
  }
  FUN_00a7f3c0(0xd,0x93,uVar3,".\\crypto\\asn1\\a_object.c",0x11b);
  return 0;
}



undefined4 FUN_00a909e0(byte *param_1,int param_2)

{
  bool bVar1;
  bool bVar2;
  byte bVar3;
  
  bVar2 = false;
  bVar1 = false;
  if (param_2 < 1) {
    param_2 = -1;
  }
  if ((param_1 != (byte *)0x0) && (bVar3 = *param_1, bVar3 != 0)) {
    do {
      if (param_2 == 0) break;
      param_1 = param_1 + 1;
      if ((((((bVar3 < 0x61) || (0x7a < bVar3)) && ((bVar3 < 0x41 || (0x5a < bVar3)))) &&
           (bVar3 != 0x20)) &&
          ((((bVar3 < 0x30 || (0x39 < bVar3)) && (bVar3 != 0x27)) &&
           ((bVar3 != 0x28 && (bVar3 != 0x29)))))) &&
         ((((bVar3 != 0x2b && ((bVar3 != 0x2c && (bVar3 != 0x2d)))) &&
           ((bVar3 != 0x2e && (((bVar3 != 0x2f && (bVar3 != 0x3a)) && (bVar3 != 0x3d)))))) &&
          (bVar3 != 0x3f)))) {
        bVar2 = true;
      }
      if ((char)bVar3 < '\0') {
        bVar1 = true;
      }
      bVar3 = *param_1;
      param_2 = param_2 + -1;
    } while (bVar3 != 0);
    if (bVar1) {
      return 0x14;
    }
    if (bVar2) {
      return 0x16;
    }
  }
  return 0x13;
}



undefined4 FUN_00a90aa0(char **param_1,int param_2)

{
  char *pcVar1;
  
  if (param_2 < 1) {
    return 1;
  }
  if (((1 < param_2) && (pcVar1 = *param_1, *pcVar1 == '\0')) && (pcVar1[1] == '\0')) {
    *param_1 = pcVar1 + 2;
    return 1;
  }
  return 0;
}



undefined4 __fastcall FUN_00a90ad0(undefined4 *param_1_00,int param_2,uint *param_1)

{
  byte bVar1;
  byte *pbVar2;
  uint uVar3;
  byte **unaff_EBX;
  uint uVar4;
  uint uVar5;
  int iVar6;
  
  pbVar2 = *unaff_EBX;
  uVar4 = 0;
  if (0 < param_2) {
    if (*pbVar2 == 0x80) {
      *param_1_00 = 1;
      *unaff_EBX = pbVar2 + 1;
      *param_1 = 0;
      return 1;
    }
    *param_1_00 = 0;
    bVar1 = *pbVar2;
    uVar3 = bVar1 & 0x7f;
    pbVar2 = pbVar2 + 1;
    uVar5 = uVar3;
    if ((bVar1 & 0x80) != 0) {
      if (4 < uVar3) {
        return 0;
      }
      if (param_2 == 1) {
        return 0;
      }
      uVar5 = uVar4;
      iVar6 = param_2 + -2;
      if ((bVar1 & 0x7f) == 0) goto LAB_00a90b42;
      do {
        uVar4 = uVar4 << 8 | (uint)*pbVar2;
        uVar3 = uVar3 - 1;
        pbVar2 = pbVar2 + 1;
        if (iVar6 == 0) {
          return 0;
        }
        uVar5 = uVar4;
        iVar6 = iVar6 + -1;
      } while (uVar3 != 0);
    }
    if (uVar5 < 0x80000000) {
LAB_00a90b42:
      *unaff_EBX = pbVar2;
      *param_1 = uVar5;
      return 1;
    }
  }
  return 0;
}



undefined4 FUN_00a90b60(undefined4 *param_1)

{
  undefined *puVar1;
  
  puVar1 = (undefined *)*param_1;
  *puVar1 = 0;
  puVar1[1] = 0;
  *param_1 = puVar1 + 2;
  return 2;
}



int FUN_00a90b80(int param_1,int param_2,int param_3)

{
  int iVar1;
  
  iVar1 = param_2 + 1;
  if ((0x1e < param_3) && (0 < param_3)) {
    do {
      param_3 = param_3 >> 7;
      iVar1 = iVar1 + 1;
    } while (0 < param_3);
  }
  if (param_1 == 2) {
    return iVar1 + 3;
  }
  iVar1 = iVar1 + 1;
  if ((0x7f < param_2) && (0 < param_2)) {
    do {
      param_2 = param_2 >> 8;
      iVar1 = iVar1 + 1;
    } while (0 < param_2);
  }
  return iVar1;
}



undefined4 FUN_00a90bc0(char **param_1)

{
  char *pcVar1;
  char *pcVar2;
  
  pcVar1 = param_1[3];
  if (((pcVar1 == (char *)0x21) && (param_1[1] == (char *)0x0)) && (0 < (int)param_1[6])) {
    if ((((int)param_1[6] < 2) || (pcVar2 = *param_1, *pcVar2 != '\0')) || (pcVar2[1] != '\0')) {
      param_1[2] = (char *)0x3f;
      return 0;
    }
    *param_1 = pcVar2 + 2;
  }
  if ((param_1[6] != (char *)0x0) &&
     ((((uint)pcVar1 & 1) == 0 || (((int)param_1[6] < 0 && (((uint)pcVar1 & 1) != 0)))))) {
    param_1[2] = (char *)0x3e;
    return 0;
  }
  return 1;
}



undefined4 thunk_FUN_00a90bc0(char **param_1)

{
  char *pcVar1;
  char *pcVar2;
  
  pcVar1 = param_1[3];
  if (((pcVar1 == (char *)0x21) && (param_1[1] == (char *)0x0)) && (0 < (int)param_1[6])) {
    if ((((int)param_1[6] < 2) || (pcVar2 = *param_1, *pcVar2 != '\0')) || (pcVar2[1] != '\0')) {
      param_1[2] = (char *)0x3f;
      return 0;
    }
    *param_1 = pcVar2 + 2;
  }
  if ((param_1[6] != (char *)0x0) &&
     ((((uint)pcVar1 & 1) == 0 || (((int)param_1[6] < 0 && (((uint)pcVar1 & 1) != 0)))))) {
    param_1[2] = (char *)0x3e;
    return 0;
  }
  return 1;
}



undefined4 FUN_00a90c30(size_t *param_1,char *param_2,size_t param_3)

{
  char cVar1;
  size_t sVar2;
  char *pcVar3;
  void *_Dst;
  
  if ((int)param_3 < 0) {
    if (param_2 == (char *)0x0) {
      return 0;
    }
    pcVar3 = param_2;
    do {
      cVar1 = *pcVar3;
      pcVar3 = pcVar3 + 1;
    } while (cVar1 != '\0');
    param_3 = (int)pcVar3 - (int)(param_2 + 1);
  }
  if (((int)*param_1 < (int)param_3) || (_Dst = (void *)param_1[2], _Dst == (void *)0x0)) {
    sVar2 = param_1[2];
    if (sVar2 == 0) {
      _Dst = (void *)FUN_00a84f80(param_3 + 1,".\\crypto\\asn1\\asn1_lib.c",0x182);
    }
    else {
      _Dst = (void *)FUN_00a84ff0(sVar2,param_3 + 1,".\\crypto\\asn1\\asn1_lib.c",0x184);
    }
    param_1[2] = (size_t)_Dst;
    if (_Dst == (void *)0x0) {
      FUN_00a7f3c0(0xd,0xba,0x41,".\\crypto\\asn1\\asn1_lib.c",0x188);
      param_1[2] = sVar2;
      return 0;
    }
  }
  *param_1 = param_3;
  if (param_2 != (char *)0x0) {
    _memcpy(_Dst,param_2,param_3);
    *(undefined *)(param_3 + param_1[2]) = 0;
  }
  return 1;
}



void FUN_00a90cf0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  if (param_1[2] != 0) {
    FUN_00a85120(param_1[2]);
    param_1[2] = param_2;
    *param_1 = param_3;
    return;
  }
  param_1[2] = param_2;
  *param_1 = param_3;
  return;
}



undefined4 * FUN_00a90d30(undefined4 param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x10,".\\crypto\\asn1\\asn1_lib.c",0x1a9);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(0xd,0x82,0x41,".\\crypto\\asn1\\asn1_lib.c",0x1ac);
    return (undefined4 *)0x0;
  }
  *puVar1 = 0;
  puVar1[1] = param_1;
  puVar1[2] = 0;
  puVar1[3] = 0;
  return puVar1;
}



void FUN_00a90d80(int param_1)

{
  if (param_1 != 0) {
    if ((*(int *)(param_1 + 8) != 0) && ((*(byte *)(param_1 + 0xc) & 0x10) == 0)) {
      FUN_00a85120(*(int *)(param_1 + 8));
    }
    FUN_00a85120(param_1);
  }
  return;
}



uint FUN_00a90db0(uint *param_1,int *param_2)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  int *piVar4;
  
  uVar2 = *param_1;
  if (uVar2 - *param_2 != 0) {
    return uVar2 - *param_2;
  }
  piVar3 = (int *)param_2[2];
  piVar4 = (int *)param_1[2];
  for (; 3 < uVar2; uVar2 = uVar2 - 4) {
    if (*piVar4 != *piVar3) goto LAB_00a90de8;
    piVar3 = piVar3 + 1;
    piVar4 = piVar4 + 1;
  }
  if (uVar2 == 0) {
LAB_00a90e2b:
    uVar2 = 0;
  }
  else {
LAB_00a90de8:
    iVar1 = (uint)*(byte *)piVar4 - (uint)*(byte *)piVar3;
    if (iVar1 == 0) {
      if (uVar2 < 2) goto LAB_00a90e2b;
      iVar1 = (uint)*(byte *)((int)piVar4 + 1) - (uint)*(byte *)((int)piVar3 + 1);
      if (iVar1 == 0) {
        if (uVar2 < 3) goto LAB_00a90e2b;
        iVar1 = (uint)*(byte *)((int)piVar4 + 2) - (uint)*(byte *)((int)piVar3 + 2);
        if (iVar1 == 0) {
          if (uVar2 < 4) goto LAB_00a90e2b;
          iVar1 = (uint)*(byte *)((int)piVar4 + 3) - (uint)*(byte *)((int)piVar3 + 3);
        }
      }
    }
    uVar2 = iVar1 >> 0x1f | 1;
  }
  if (uVar2 == 0) {
    uVar2 = param_1[1] - param_2[1];
  }
  return uVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a90e40(undefined4 param_1,undefined4 param_2)

{
  undefined local_24 [16];
  undefined local_14 [16];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_24;
  FUN_00a86220(local_14,0xd,&DAT_00d3cb94,param_1);
  FUN_00a86220(local_24,0xd,&DAT_00d26cac,param_2);
  FUN_00a7f690(4,"address=",local_14," offset=",local_24);
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a90eb0(byte **param_1,int *param_2,uint *param_3,uint *param_4,int param_5)

{
  byte bVar1;
  byte *pbVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  bool bVar6;
  
  if (param_5 != 0) {
    uVar3 = (uint)**param_1;
    uVar4 = uVar3 & 0x1f;
    pbVar2 = *param_1 + 1;
    iVar5 = param_5 + -1;
    if (uVar4 == 0x1f) {
      if (iVar5 == 0) goto LAB_00a90f61;
      uVar4 = 0;
      bVar1 = *pbVar2;
      while ((char)bVar1 < '\0') {
        uVar4 = uVar4 << 7 | bVar1 & 0x7f;
        pbVar2 = pbVar2 + 1;
        iVar5 = iVar5 + -1;
        if ((iVar5 == 0) || (0xffffff < (int)uVar4)) goto LAB_00a90f61;
        bVar1 = *pbVar2;
      }
      uVar4 = *pbVar2 & 0x7f | uVar4 << 7;
      pbVar2 = pbVar2 + 1;
      bVar6 = iVar5 == 1;
    }
    else {
      bVar6 = iVar5 == 0;
    }
    if (!bVar6) {
      *param_3 = uVar4;
      *param_4 = uVar3 & 0xc0;
      iVar5 = FUN_00a90ad0(param_2);
      if (iVar5 != 0) {
        if ((int)(*param_1 + (param_5 - (int)pbVar2)) < *param_2) {
          FUN_00a7f3c0(0xd,0x72,0x9b,".\\crypto\\asn1\\asn1_lib.c",0x8e);
        }
        *param_1 = pbVar2;
        return 0xa90eba;
      }
    }
  }
LAB_00a90f61:
  FUN_00a7f3c0(0xd,0x72,0x7b,".\\crypto\\asn1\\asn1_lib.c",0x96);
  return 0x80;
}



void FUN_00a90fd0(byte **param_1,int param_2,int param_3,int param_4,byte param_5)

{
  int iVar1;
  int iVar2;
  byte *pbVar3;
  byte bVar4;
  int iVar5;
  
  pbVar3 = *param_1;
  bVar4 = -(param_2 != 0) & 0x20U | param_5 & 0xc0;
  if (param_4 < 0x1f) {
    *pbVar3 = (byte)param_4 & 0x1f | bVar4;
    pbVar3 = pbVar3 + 1;
  }
  else {
    *pbVar3 = bVar4 | 0x1f;
    iVar2 = 0;
    iVar5 = param_4;
    if (0 < param_4) {
      do {
        iVar5 = iVar5 >> 7;
        iVar2 = iVar2 + 1;
      } while (0 < iVar5);
    }
    if (0 < iVar2) {
      iVar5 = iVar2;
      do {
        iVar1 = iVar5 + -1;
        bVar4 = (byte)param_4 & 0x7f;
        pbVar3[iVar5] = bVar4;
        if (iVar1 != iVar2 + -1) {
          pbVar3[iVar5] = bVar4 | 0x80;
        }
        param_4 = param_4 >> 7;
        iVar5 = iVar1;
      } while (0 < iVar1);
    }
    pbVar3 = pbVar3 + iVar2 + 1;
  }
  if (param_2 != 2) {
    if (0x7f < param_3) {
      iVar2 = 0;
      iVar5 = param_3;
      if (0 < param_3) {
        do {
          iVar5 = iVar5 >> 8;
          iVar2 = iVar2 + 1;
        } while (0 < iVar5);
      }
      *pbVar3 = (byte)iVar2 | 0x80;
      for (iVar5 = iVar2; 0 < iVar5; iVar5 = iVar5 + -1) {
        pbVar3[iVar5] = (byte)param_3;
        param_3 = param_3 >> 8;
      }
      *param_1 = pbVar3 + iVar2 + 1;
      return;
    }
    *pbVar3 = (byte)param_3;
    *param_1 = pbVar3 + 1;
    return;
  }
  *pbVar3 = 0x80;
  *param_1 = pbVar3 + 1;
  return;
}



undefined4 FUN_00a910a0(int *param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  
  iVar1 = *param_1;
  iVar2 = FUN_00a90eb0(param_1,param_1 + 6,param_1 + 4,param_1 + 5,*param_2);
  param_1[3] = iVar2;
  if ((char)iVar2 < '\0') {
    param_1[2] = 0x3c;
    return 0;
  }
  if (param_1[4] != 0x10) {
    param_1[2] = 0x3d;
    return 0;
  }
  *param_2 = *param_2 + (iVar1 - *param_1);
  if ((param_1[7] != 0) && (*param_2 < 0)) {
    param_1[2] = 0x3e;
    return 0;
  }
  if (param_1[3] == 0x21) {
    param_1[6] = (*(int *)param_1[9] - *param_1) + *param_2;
  }
  param_1[1] = 0;
  return 1;
}



undefined4 FUN_00a91130(int param_1,undefined4 *param_2)

{
  int iVar1;
  
  if (param_2 == (undefined4 *)0x0) {
    return 0;
  }
  *(undefined4 *)(param_1 + 4) = param_2[1];
  iVar1 = FUN_00a90c30(param_1,param_2[2],*param_2);
  if (iVar1 == 0) {
    return 0;
  }
  *(undefined4 *)(param_1 + 0xc) = param_2[3];
  return 1;
}



undefined4 * FUN_00a91170(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x10,".\\crypto\\asn1\\asn1_lib.c",0x1a9);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(0xd,0x82,0x41,".\\crypto\\asn1\\asn1_lib.c",0x1ac);
    return (undefined4 *)0x0;
  }
  *puVar1 = 0;
  puVar1[1] = 4;
  puVar1[2] = 0;
  puVar1[3] = 0;
  return puVar1;
}



int FUN_00a911d0(int param_1)

{
  int iVar1;
  int iVar2;
  
  if (param_1 == 0) {
    return 0;
  }
  iVar1 = FUN_00a91170();
  if (iVar1 != 0) {
    iVar2 = FUN_00a91130(iVar1,param_1);
    if (iVar2 != 0) {
      return iVar1;
    }
    FUN_00a90d80(iVar1);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a91220(undefined4 param_1)

{
  int iVar1;
  undefined4 local_14 [4];
  undefined4 uStack_4;
  
  uStack_4 = 0xa9122a;
  local_14[0] = param_1;
  iVar1 = FUN_00a877b0(local_14,&DAT_00db6d78,0x13,0x14,&LAB_00a91210);
  if (iVar1 != 0) {
    return iVar1;
  }
  if ((DAT_032ed500 != 0) && (iVar1 = FUN_00a81100(DAT_032ed500,local_14), -1 < iVar1)) {
    iVar1 = FUN_00a80ee0(DAT_032ed500,iVar1);
    return iVar1;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00a91290(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  int iVar1;
  uint uVar2;
  undefined4 local_4;
  
  local_4 = 0;
  if (param_1 == (undefined4 *)0x0) {
    param_1 = &local_4;
  }
  iVar1 = FUN_00a91220(param_5);
  if (iVar1 == 0) {
    iVar1 = FUN_00aa9700(param_1,param_2,param_3,param_4,DAT_03242ab0 & 0x2806);
  }
  else {
    uVar2 = *(uint *)(iVar1 + 0xc);
    if ((*(byte *)(iVar1 + 0x10) & 2) == 0) {
      uVar2 = uVar2 & DAT_03242ab0;
    }
    iVar1 = FUN_00aa92e0(param_1,param_2,param_3,param_4,uVar2,*(undefined4 *)(iVar1 + 4),
                         *(undefined4 *)(iVar1 + 8));
  }
  if (iVar1 < 1) {
    return 0;
  }
  return *param_1;
}



void FUN_00a91330(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  return;
}



void FUN_00a91350(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x18,".\\crypto\\evp\\digest.c",0x83);
  if (puVar1 != (undefined4 *)0x0) {
    *puVar1 = 0;
    puVar1[1] = 0;
    puVar1[2] = 0;
    puVar1[3] = 0;
    puVar1[4] = 0;
    puVar1[5] = 0;
  }
  return;
}



undefined4 FUN_00a91380(int **param_1,int *param_2,int *param_3)

{
  int iVar1;
  int *piVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  FUN_00a92650(param_1,2);
  piVar2 = param_1[1];
  if (((piVar2 == (int *)0x0) || (*param_1 == (int *)0x0)) ||
     ((param_2 != (int *)0x0 && (*param_2 != **param_1)))) {
    if (param_2 == (int *)0x0) {
      if (*param_1 == (int *)0x0) {
        uVar4 = 0xc6;
        uVar3 = 0x8b;
        goto LAB_00a913ee;
      }
    }
    else {
      if (piVar2 != (int *)0x0) {
        FUN_00a8f1b0(piVar2);
      }
      if (param_3 == (int *)0x0) {
        param_3 = (int *)FUN_00aa9730(*param_2);
      }
      else {
        iVar1 = FUN_00a8f130(param_3);
        if (iVar1 == 0) {
          uVar4 = 0xa7;
          uVar3 = 0x86;
          goto LAB_00a913ee;
        }
      }
      if (param_3 == (int *)0x0) {
        param_1[1] = (int *)0x0;
      }
      else {
        param_2 = (int *)FUN_00aa9750(param_3,*param_2);
        if (param_2 == (int *)0x0) {
          FUN_00a7f3c0(6,0x80,0x86,".\\crypto\\evp\\digest.c",0xb5);
          FUN_00a8f1b0(param_3);
          return 0;
        }
        param_1[1] = param_3;
      }
    }
    piVar2 = *param_1;
    if (piVar2 != param_2) {
      if ((piVar2 != (int *)0x0) && (piVar2[0x11] != 0)) {
        FUN_00a85120(param_1[3]);
      }
      *param_1 = param_2;
      if ((((uint)param_1[2] & 0x100) == 0) && (param_2[0x11] != 0)) {
        param_1[5] = (int *)param_2[5];
        piVar2 = (int *)FUN_00a84f80(param_2[0x11],".\\crypto\\evp\\digest.c",0xd2);
        param_1[3] = piVar2;
        if (piVar2 == (int *)0x0) {
          uVar4 = 0xd6;
          uVar3 = 0x41;
LAB_00a913ee:
          FUN_00a7f3c0(6,0x80,uVar3,".\\crypto\\evp\\digest.c",uVar4);
          return 0;
        }
      }
    }
  }
  if (((param_1[4] != (int *)0x0) &&
      (iVar1 = FUN_00a988b0(param_1[4],0xffffffff,0xf8,7,0,param_1), iVar1 < 1)) && (iVar1 != -2)) {
    return 0;
  }
  if (((uint)param_1[2] & 0x100) == 0) {
    uVar3 = (*(code *)(*param_1)[4])(param_1);
    return uVar3;
  }
  return 1;
}



void FUN_00a91530(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x00a9153b. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(param_1 + 0x14))();
  return;
}



undefined4 FUN_00a91540(int *param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  
  if (0x40 < *(int *)(*param_1 + 8)) {
    FUN_00a7fd60(".\\crypto\\evp\\digest.c",0x10f,"ctx->digest->md_size <= EVP_MAX_MD_SIZE");
  }
  uVar1 = (**(code **)(*param_1 + 0x18))(param_1,param_2);
  if (param_3 != (undefined4 *)0x0) {
    *param_3 = *(undefined4 *)(*param_1 + 8);
  }
  if (*(code **)(*param_1 + 0x20) != (code *)0x0) {
    (**(code **)(*param_1 + 0x20))(param_1);
    FUN_00a92640(param_1,2);
  }
  _memset((void *)param_1[3],0,*(size_t *)(*param_1 + 0x44));
  return uVar1;
}



undefined4 FUN_00a915c0(int *param_1)

{
  int iVar1;
  
  if (*param_1 != 0) {
    if (*(int *)(*param_1 + 0x20) != 0) {
      iVar1 = FUN_00a92660(param_1,2);
      if (iVar1 == 0) {
        (**(code **)(*param_1 + 0x20))(param_1);
      }
    }
    if (((*param_1 != 0) && (*(int *)(*param_1 + 0x44) != 0)) && (param_1[3] != 0)) {
      iVar1 = FUN_00a92660(param_1,4);
      if (iVar1 == 0) {
        FUN_00a84330(param_1[3],*(undefined4 *)(*param_1 + 0x44));
        FUN_00a85120(param_1[3]);
      }
    }
  }
  if (param_1[4] != 0) {
    FUN_00a98850(param_1[4]);
  }
  if (param_1[1] != 0) {
    FUN_00a8f1b0(param_1[1]);
  }
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  return 1;
}



void FUN_00a91670(undefined4 *param_1,undefined4 param_2)

{
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  FUN_00a91380(param_1,param_2,0);
  return;
}



undefined4 FUN_00a916a0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00a91540(param_1,param_2,param_3);
  FUN_00a915c0(param_1);
  return uVar1;
}



undefined4 FUN_00a916d0(int *param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  if ((param_2 == (int *)0x0) || (*param_2 == 0)) {
    FUN_00a7f3c0(6,0x6e,0x6f,".\\crypto\\evp\\digest.c",0x128);
    return 0;
  }
  if (param_2[1] != 0) {
    iVar1 = FUN_00a8f130(param_2[1]);
    if (iVar1 == 0) {
      FUN_00a7f3c0(6,0x6e,0x26,".\\crypto\\evp\\digest.c",0x12f);
      return 0;
    }
  }
  if (*param_1 == *param_2) {
    iVar1 = param_1[3];
    FUN_00a92640(param_1,4);
  }
  else {
    iVar1 = 0;
  }
  FUN_00a915c0(param_1);
  *param_1 = *param_2;
  param_1[1] = param_2[1];
  param_1[2] = param_2[2];
  param_1[3] = param_2[3];
  param_1[4] = param_2[4];
  param_1[5] = param_2[5];
  if ((param_2[3] != 0) && (*(int *)(*param_1 + 0x44) != 0)) {
    if (iVar1 == 0) {
      iVar1 = FUN_00a84f80(*(int *)(*param_1 + 0x44),".\\crypto\\evp\\digest.c",0x143);
      param_1[3] = iVar1;
      if (iVar1 == 0) {
        FUN_00a7f3c0(6,0x6e,0x41,".\\crypto\\evp\\digest.c",0x146);
        return 0;
      }
    }
    else {
      param_1[3] = iVar1;
    }
    _memcpy((void *)param_1[3],(void *)param_2[3],*(size_t *)(*param_1 + 0x44));
  }
  param_1[5] = param_2[5];
  if (param_2[4] != 0) {
    iVar1 = FUN_00a98c50(param_2[4]);
    param_1[4] = iVar1;
    if (iVar1 == 0) {
      FUN_00a915c0(param_1);
      return 0;
    }
  }
  if (*(code **)(*param_1 + 0x1c) != (code *)0x0) {
    uVar2 = (**(code **)(*param_1 + 0x1c))(param_1,param_2);
    return uVar2;
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00a91830(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  int iVar1;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  code *local_4;
  
  local_18 = 0;
  local_14 = 0;
  local_10 = 0;
  local_c = 0;
  local_8 = 0;
  local_4 = (code *)0x0;
  FUN_00a92640(&local_18,1);
  iVar1 = FUN_00a91380(&local_18,param_5,param_6);
  if (iVar1 != 0) {
    iVar1 = (*local_4)(&local_18,param_1,param_2);
    if (iVar1 != 0) {
      iVar1 = FUN_00a91540(&local_18,param_3,param_4);
      if (iVar1 != 0) {
        FUN_00a915c0(&local_18);
        return 1;
      }
    }
  }
  FUN_00a915c0(&local_18);
  return 0;
}



void FUN_00a918e0(undefined4 param_1)

{
  FUN_00a915c0(param_1);
  FUN_00a85120(param_1);
  return;
}



void FUN_00a91900(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  param_1[5] = 0;
  FUN_00a916d0();
  return;
}



undefined * FUN_00a91950(void)

{
  return &DAT_00db6f38;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a91960(int param_1)

{
  int iVar1;
  int local_1c [6];
  undefined4 uStack_4;
  
  uStack_4 = 0xa9196a;
  if (param_1 - 1U < 9) {
    return param_1 + -1;
  }
  local_1c[0] = param_1;
  if (DAT_032ed504 != 0) {
    iVar1 = FUN_00a81100(DAT_032ed504,local_1c);
    if (iVar1 != -1) {
      return iVar1 + 9;
    }
  }
  return -1;
}



void FUN_00a919b0(undefined4 param_1)

{
  int iVar1;
  int *piVar2;
  int **unaff_ESI;
  int iVar3;
  
  piVar2 = unaff_ESI[1];
  if (piVar2 == (int *)0x0) {
    unaff_ESI[3] = (int *)0x807f;
  }
  else {
    if (0 < *piVar2) {
      unaff_ESI[3] = (int *)(uint)*(byte *)piVar2[2];
    }
    if (1 < *piVar2) {
      unaff_ESI[3] = (int *)((uint)unaff_ESI[3] | (uint)*(byte *)(piVar2[2] + 1) << 8);
    }
    unaff_ESI[3] = (int *)((uint)unaff_ESI[3] & 0x807f);
  }
  if ((*unaff_ESI != (int *)0x0) && (**unaff_ESI == 1)) {
    iVar3 = 0;
    iVar1 = FUN_00a80ed0(unaff_ESI[2]);
    if (0 < iVar1) {
      do {
        piVar2 = (int *)FUN_00a80ee0(unaff_ESI[2],iVar3);
        if (*piVar2 == 4) {
          iVar1 = piVar2[1];
          if (iVar1 != 0) goto LAB_00a91a3e;
          break;
        }
        iVar3 = iVar3 + 1;
        iVar1 = FUN_00a80ed0(unaff_ESI[2]);
      } while (iVar3 < iVar1);
    }
    iVar1 = FUN_00a82a40(param_1);
LAB_00a91a3e:
    FUN_00a8d690(*unaff_ESI,iVar1);
  }
  return;
}



void FUN_00a91a50(void)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  int unaff_EDI;
  
  uVar1 = FUN_00aa02b0();
  *(undefined4 *)(unaff_EDI + 0x44) = uVar1;
  iVar3 = 0;
  iVar2 = FUN_00a80ed0(uVar1);
  if (0 < iVar2) {
    do {
      FUN_00a80ee0(*(undefined4 *)(unaff_EDI + 0x44),iVar3);
      FUN_00a919b0();
      iVar3 = iVar3 + 1;
      iVar2 = FUN_00a80ed0(*(undefined4 *)(unaff_EDI + 0x44));
    } while (iVar3 < iVar2);
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __fastcall FUN_00a91aa0(undefined4 *param_1)

{
  byte bVar1;
  undefined4 uVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  undefined4 uVar6;
  int iStack_8;
  int iStack_4;
  
  iStack_4 = 0xa91aaa;
  if ((param_1[10] & 0x100) == 0) {
    uVar2 = FUN_00a924c0(param_1 + 0x14,0);
    FUN_00aa9010(param_1,uVar2);
    uVar2 = FUN_00a82a40(param_1);
    uVar2 = FUN_00a82a50(param_1,uVar2);
    iVar3 = FUN_00a82ae0(uVar2);
    if (iVar3 == 0) {
      param_1[10] = param_1[10] | 0x20;
    }
    iVar3 = FUN_00a9db70(*(undefined4 *)*param_1);
    if (iVar3 == 0) {
      param_1[10] = param_1[10] | 0x40;
    }
    piVar4 = (int *)FUN_00aa02b0(param_1,0x57,0,0);
    if (piVar4 != (int *)0x0) {
      if (*piVar4 != 0) {
        param_1[10] = param_1[10] | 0x10;
      }
      iVar3 = piVar4[1];
      if (iVar3 == 0) {
        param_1[8] = 0xffffffff;
      }
      else if ((*(int *)(iVar3 + 4) == 0x102) || (*piVar4 == 0)) {
        param_1[10] = param_1[10] | 0x80;
        param_1[8] = 0;
      }
      else {
        uVar2 = FUN_00a9db70(iVar3);
        param_1[8] = uVar2;
      }
      FUN_00aaa120(piVar4);
      param_1[10] = param_1[10] | 1;
    }
    piVar4 = (int *)FUN_00aa02b0(param_1,0x297,0,0);
    if (piVar4 != (int *)0x0) {
      if ((((*(byte *)(param_1 + 10) & 0x10) != 0) ||
          (iVar3 = FUN_00aa0270(param_1,0x55,0), -1 < iVar3)) ||
         (iVar3 = FUN_00aa0270(param_1,0x56,0), -1 < iVar3)) {
        param_1[10] = param_1[10] | 0x80;
      }
      if (*piVar4 == 0) {
        param_1[9] = 0xffffffff;
      }
      else {
        uVar2 = FUN_00a9db70(*piVar4);
        param_1[9] = uVar2;
      }
      FUN_00aaa0f0(piVar4);
      param_1[10] = param_1[10] | 0x400;
    }
    piVar4 = (int *)FUN_00aa02b0(param_1,0x53,0,0);
    if (piVar4 != (int *)0x0) {
      if (*piVar4 < 1) {
        param_1[0xb] = 0;
      }
      else {
        bVar1 = *(byte *)piVar4[2];
        param_1[0xb] = (uint)bVar1;
        if (1 < *piVar4) {
          param_1[0xb] = (uint)CONCAT11(*(undefined *)(piVar4[2] + 1),bVar1);
        }
      }
      param_1[10] = param_1[10] | 2;
      FUN_00a88860(piVar4);
    }
    param_1[0xc] = 0;
    iVar3 = FUN_00aa02b0(param_1,0x7e,0,0);
    if (iVar3 != 0) {
      param_1[10] = param_1[10] | 4;
      iStack_8 = 0;
      iVar5 = FUN_00a80ed0(iVar3);
      if (iStack_8 < iVar5) {
        do {
          uVar2 = FUN_00a80ee0(iVar3,iStack_8);
          uVar2 = FUN_00a877e0(uVar2);
          switch(uVar2) {
          case 0x81:
            param_1[0xc] = param_1[0xc] | 1;
            break;
          case 0x82:
            param_1[0xc] = param_1[0xc] | 2;
            break;
          case 0x83:
            param_1[0xc] = param_1[0xc] | 8;
            break;
          case 0x84:
            param_1[0xc] = param_1[0xc] | 4;
            break;
          case 0x85:
            param_1[0xc] = param_1[0xc] | 0x40;
            break;
          case 0x89:
          case 0x8b:
            param_1[0xc] = param_1[0xc] | 0x10;
            break;
          case 0xb4:
            param_1[0xc] = param_1[0xc] | 0x20;
            break;
          case 0x129:
            param_1[0xc] = param_1[0xc] | 0x80;
          }
          iStack_8 = iStack_8 + 1;
          iVar5 = FUN_00a80ed0(iVar3);
        } while (iStack_8 < iVar5);
      }
      FUN_00a81120(iVar3,FUN_00a90760);
    }
    piVar4 = (int *)FUN_00aa02b0(param_1,0x47,0,0);
    if (piVar4 != (int *)0x0) {
      if (*piVar4 < 1) {
        param_1[0xd] = 0;
      }
      else {
        param_1[0xd] = (uint)*(byte *)piVar4[2];
      }
      param_1[10] = param_1[10] | 8;
      FUN_00a88860(piVar4);
    }
    uVar2 = FUN_00aa02b0(param_1,0x52,0,0);
    param_1[0xe] = uVar2;
    uVar2 = FUN_00aa02b0(param_1,0x5a,0,0);
    param_1[0xf] = uVar2;
    uVar2 = FUN_00aa02b0(param_1,0x55,0,0);
    param_1[0x12] = uVar2;
    iVar3 = FUN_00aa02b0(param_1,0x29a,&iStack_8,0);
    param_1[0x13] = iVar3;
    if ((iVar3 == 0) && (iStack_8 != -1)) {
      param_1[10] = param_1[10] | 0x80;
    }
    FUN_00a91a50();
    iStack_8 = 0;
    iVar3 = FUN_00aa0250(param_1);
    if (iStack_8 < iVar3) {
      do {
        uVar2 = FUN_00aa0290(param_1,iStack_8);
        uVar6 = FUN_00a92630(uVar2);
        iVar3 = FUN_00a877e0(uVar6);
        if (iVar3 == 0x359) {
          param_1[10] = param_1[10] | 0x1000;
        }
        iVar3 = FUN_00aaa0a0(uVar2);
        if (iVar3 != 0) {
          uVar2 = FUN_00a92630(uVar2);
          iStack_4 = FUN_00a877e0(uVar2);
          if ((iStack_4 == 0) ||
             (iVar3 = FUN_00a877b0(&iStack_4,&DAT_00db7074,0xb,4,&LAB_00a91210), iVar3 == 0)) {
            param_1[10] = param_1[10] | 0x200;
            break;
          }
        }
        iStack_8 = iStack_8 + 1;
        iVar3 = FUN_00aa0250(param_1);
        if (iVar3 <= iStack_8) {
          param_1[10] = param_1[10] | 0x100;
          return;
        }
      } while( true );
    }
    param_1[10] = param_1[10] | 0x100;
  }
  return;
}



uint FUN_00a91f40(int param_1)

{
  uint uVar1;
  
  if ((*(uint *)(param_1 + 0x28) & 0x100) == 0) {
    FUN_00a7fdc0(9,3,".\\crypto\\x509v3\\v3_purp.c",0x214);
    FUN_00a91aa0();
    FUN_00a7fdc0(10,3,".\\crypto\\x509v3\\v3_purp.c",0x216);
  }
  uVar1 = *(uint *)(param_1 + 0x28);
  if (((uVar1 & 2) == 0) || ((*(byte *)(param_1 + 0x2c) & 4) != 0)) {
    if ((uVar1 & 1) != 0) {
      return (uVar1 & 0xff) >> 4 & 1;
    }
    if (((byte)uVar1 & 0x60) == 0x60) {
      return 3;
    }
    if ((uVar1 & 2) != 0) {
      return 4;
    }
    if (((uVar1 & 8) != 0) && ((*(byte *)(param_1 + 0x34) & 7) != 0)) {
      return 5;
    }
  }
  return 0;
}



undefined4 FUN_00a91fd0(void)

{
  uint uVar1;
  int unaff_ESI;
  
  uVar1 = *(uint *)(unaff_ESI + 0x28);
  if (((uVar1 & 2) == 0) || ((*(byte *)(unaff_ESI + 0x2c) & 4) != 0)) {
    if ((uVar1 & 1) == 0) {
      if (((byte)uVar1 & 0x60) == 0x60) {
        return 3;
      }
      if ((uVar1 & 2) != 0) {
        return 4;
      }
      if ((((uVar1 & 8) != 0) && ((*(uint *)(unaff_ESI + 0x34) & 7) != 0)) &&
         ((*(uint *)(unaff_ESI + 0x34) & 4) != 0)) {
        return 5;
      }
    }
    else if ((uVar1 & 0x10) != 0) {
      return 1;
    }
  }
  return 0;
}



undefined4 FUN_00a92030(undefined4 param_1,int param_2,int param_3)

{
  uint uVar1;
  undefined4 uVar2;
  
  uVar1 = *(uint *)(param_2 + 0x28);
  if (((uVar1 & 4) == 0) || ((*(byte *)(param_2 + 0x30) & 2) != 0)) {
    if (param_3 != 0) {
      uVar2 = FUN_00a91fd0();
      return uVar2;
    }
    if ((((uVar1 & 2) == 0) || ((*(byte *)(param_2 + 0x2c) & 0x80) != 0)) &&
       (((uVar1 & 8) == 0 || ((*(byte *)(param_2 + 0x34) & 0x80) != 0)))) {
      return 1;
    }
  }
  return 0;
}



undefined4 FUN_00a92290(void)

{
  return 1;
}



undefined4 FUN_00a922a0(int param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  
  if (param_2 == (int *)0x0) {
    return 0;
  }
  if (((*param_2 != 0) && (*(int *)(param_1 + 0x38) != 0)) &&
     (iVar1 = thunk_FUN_00a90db0(*param_2,*(int *)(param_1 + 0x38)), iVar1 != 0)) {
    return 0x1e;
  }
  if (param_2[2] != 0) {
    uVar2 = FUN_00a925b0(param_1,param_2[2]);
    iVar1 = FUN_00a9d660(uVar2);
    if (iVar1 != 0) {
      return 0x1f;
    }
  }
  iVar1 = param_2[1];
  if (iVar1 != 0) {
    iVar5 = 0;
    iVar3 = FUN_00a80ed0(iVar1);
    if (0 < iVar3) {
      do {
        piVar4 = (int *)FUN_00a80ee0(iVar1,iVar5);
        if (*piVar4 == 4) {
          iVar1 = piVar4[1];
          if (iVar1 == 0) {
            return 0;
          }
          uVar2 = FUN_00a82a40(param_1);
          iVar1 = FUN_00a82ae0(iVar1,uVar2);
          if (iVar1 == 0) {
            return 0;
          }
          return 0x1f;
        }
        iVar5 = iVar5 + 1;
        iVar3 = FUN_00a80ed0(iVar1);
      } while (iVar5 < iVar3);
    }
  }
  return 0;
}



undefined4 FUN_00a92360(int param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  
  if ((*(uint *)(param_1 + 0x28) & 0x100) == 0) {
    FUN_00a7fdc0(9,3,".\\crypto\\x509v3\\v3_purp.c",0x72);
    FUN_00a91aa0();
    FUN_00a7fdc0(10,3,".\\crypto\\x509v3\\v3_purp.c",0x74);
  }
  if (param_2 == -1) {
    return 1;
  }
  iVar1 = FUN_00a91960(param_2);
  if (iVar1 == -1) {
    return 0xffffffff;
  }
  if (iVar1 < 0) {
    uVar2 = (*pcRam0000000c)(0,param_1,param_3);
    return uVar2;
  }
  if (iVar1 < 9) {
    uVar2 = (*(code *)(&PTR_FUN_03242ac4)[iVar1 * 7])(&DAT_03242ab8 + iVar1 * 0x1c,param_1,param_3);
    return uVar2;
  }
  iVar1 = FUN_00a80ee0(DAT_032ed504,iVar1 + -9);
  uVar2 = (**(code **)(iVar1 + 0xc))(iVar1,param_1,param_3);
  return uVar2;
}



int FUN_00a92420(int param_1,int param_2)

{
  undefined4 uVar1;
  int iVar2;
  
  uVar1 = FUN_00a82a40(param_2);
  uVar1 = FUN_00a82a50(param_1,uVar1);
  iVar2 = FUN_00a82ae0(uVar1);
  if (iVar2 != 0) {
    return 0x1d;
  }
  FUN_00a91aa0();
  FUN_00a91aa0();
  if ((*(int *)(param_2 + 0x3c) != 0) &&
     (iVar2 = FUN_00a922a0(param_1,*(int *)(param_2 + 0x3c)), iVar2 != 0)) {
    return iVar2;
  }
  if ((*(uint *)(param_2 + 0x28) & 0x400) == 0) {
    if (((*(byte *)(param_1 + 0x28) & 2) != 0) && ((*(byte *)(param_1 + 0x2c) & 4) == 0)) {
      return 0x20;
    }
  }
  else if (((*(byte *)(param_1 + 0x28) & 2) != 0) && ((*(byte *)(param_1 + 0x2c) & 0x80) == 0)) {
    return 0x27;
  }
  return 0;
}



undefined * FUN_00a924c0(void)

{
  return &DAT_00db70c0;
}



undefined * FUN_00a92520(void)

{
  return &DAT_00db7110;
}



undefined * FUN_00a92530(void)

{
  return &DAT_00db7160;
}



undefined * FUN_00a92590(void)

{
  return &DAT_00db71b0;
}



undefined * FUN_00a925a0(void)

{
  return &DAT_00db7200;
}



undefined4 FUN_00a925b0(int *param_1)

{
  return *(undefined4 *)(*param_1 + 4);
}



void FUN_00a925c0(int *param_1)

{
                    // WARNING: Could not recover jumptable at 0x00a925cd. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*param_1 + 0x18))();
  return;
}



undefined4 FUN_00a925d0(int *param_1)

{
  return *(undefined4 *)(*param_1 + 0x10);
}



undefined4 FUN_00a925e0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x58);
}



undefined4 FUN_00a925f0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x40);
}



undefined4 FUN_00a92600(int param_1)

{
  if (param_1 == 0) {
    FUN_00a7f3c0(6,0xa2,0x9f,".\\crypto\\evp\\evp_lib.c",0x10e);
    return 0xffffffff;
  }
  return *(undefined4 *)(param_1 + 8);
}



undefined4 * FUN_00a92630(undefined4 *param_1)

{
  if (param_1 == (undefined4 *)0x0) {
    return param_1;
  }
  return (undefined4 *)*param_1;
}



void FUN_00a92640(int param_1,uint param_2)

{
  *(uint *)(param_1 + 8) = *(uint *)(param_1 + 8) | param_2;
  return;
}



void FUN_00a92650(int param_1,uint param_2)

{
  *(uint *)(param_1 + 8) = *(uint *)(param_1 + 8) & ~param_2;
  return;
}



uint FUN_00a92660(int param_1,uint param_2)

{
  return *(uint *)(param_1 + 8) & param_2;
}



uint FUN_00a92670(int *param_1,int param_2)

{
  uint _Size;
  uint uVar1;
  
  uVar1 = 0;
  if (param_2 != 0) {
    _Size = *(uint *)(*param_1 + 0xc);
    if (0x10 < _Size) {
      FUN_00a7fd60(".\\crypto\\evp\\evp_lib.c",0x62,"l <= sizeof(c->iv)");
    }
    uVar1 = FUN_00aaacb0(param_2,param_1 + 4,_Size);
    if (uVar1 != _Size) {
      return 0xffffffff;
    }
    if (0 < (int)uVar1) {
      _memcpy(param_1 + 8,param_1 + 4,_Size);
    }
  }
  return uVar1;
}



undefined4 FUN_00a926e0(int *param_1,int param_2)

{
  uint uVar1;
  undefined4 uVar2;
  
  uVar2 = 0;
  if (param_2 != 0) {
    uVar1 = *(uint *)(*param_1 + 0xc);
    if (0x10 < uVar1) {
      FUN_00a7fd60(".\\crypto\\evp\\evp_lib.c",0x74,"j <= sizeof(c->iv)");
    }
    uVar2 = FUN_00aaac60(param_2,param_1 + 4,uVar1);
  }
  return uVar2;
}



int FUN_00a92730(int *param_1)

{
  int iVar1;
  int iVar2;
  
  iVar2 = *param_1;
  if (iVar2 < 0x1a6) {
    if (iVar2 == 0x1a5) {
switchD_00a9277b_caseD_28a:
      return 0x1a5;
    }
    switch(iVar2) {
    case 5:
    case 0x61:
      return 5;
    case 0x1e:
    case 0x3d:
      goto switchD_00a92752_caseD_1e;
    case 0x25:
    case 0x62:
    case 0xa6:
      return 0x25;
    }
  }
  else {
    switch(iVar2) {
    case 0x1a9:
    case 0x28b:
    case 0x28e:
      return 0x1a9;
    case 0x1ad:
    case 0x28c:
    case 0x28f:
      return 0x1ad;
    case 0x28a:
    case 0x28d:
      goto switchD_00a9277b_caseD_28a;
    case 0x290:
    case 0x291:
    case 0x292:
    case 0x293:
switchD_00a92752_caseD_1e:
      return 0x1e;
    }
  }
  iVar1 = FUN_00a87490(iVar2);
  if ((iVar1 == 0) || (*(int *)(iVar1 + 0x10) == 0)) {
    iVar2 = 0;
  }
  FUN_00a90760(iVar1);
  return iVar2;
}



undefined4 FUN_00a92980(int *param_1)

{
  code *UNRECOVERED_JUMPTABLE;
  undefined4 uVar1;
  
  UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x24);
  if (UNRECOVERED_JUMPTABLE != (code *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00a92991. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (*UNRECOVERED_JUMPTABLE)();
    return uVar1;
  }
  if ((*(uint *)(*param_1 + 0x10) & 0x1000) != 0) {
    uVar1 = FUN_00a926e0();
    return uVar1;
  }
  return 0xffffffff;
}



undefined4 FUN_00a929b0(int *param_1)

{
  code *UNRECOVERED_JUMPTABLE;
  undefined4 uVar1;
  
  UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x28);
  if (UNRECOVERED_JUMPTABLE != (code *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00a929c1. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (*UNRECOVERED_JUMPTABLE)();
    return uVar1;
  }
  if ((*(uint *)(*param_1 + 0x10) & 0x1000) != 0) {
    uVar1 = FUN_00a92670();
    return uVar1;
  }
  return 0xffffffff;
}



undefined4 * FUN_00a929e0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0xc,".\\crypto\\buffer\\buffer.c",0x48);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(7,0x65,0x41,".\\crypto\\buffer\\buffer.c",0x4b);
    return (undefined4 *)0x0;
  }
  *puVar1 = 0;
  puVar1[2] = 0;
  puVar1[1] = 0;
  return puVar1;
}



void FUN_00a92a20(int param_1)

{
  if (param_1 != 0) {
    if (*(void **)(param_1 + 4) != (void *)0x0) {
      _memset(*(void **)(param_1 + 4),0,*(size_t *)(param_1 + 8));
      FUN_00a85120(*(undefined4 *)(param_1 + 4));
    }
    FUN_00a85120(param_1);
  }
  return;
}



uint FUN_00a92a60(uint *param_1,uint param_2)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = *param_1;
  if (uVar1 < param_2) {
    if (param_1[2] < param_2) {
      if (0x5ffffffc < param_2) {
        FUN_00a7f3c0(7,100,0x41,".\\crypto\\buffer\\buffer.c",0x74);
        return 0;
      }
      uVar1 = ((uint)((ulonglong)(param_2 + 3) * 0xaaaaaaab >> 0x20) & 0xfffffffe) * 2;
      if (param_1[1] == 0) {
        uVar2 = FUN_00a84f80(uVar1,".\\crypto\\buffer\\buffer.c",0x79);
      }
      else {
        uVar2 = FUN_00a84ff0(param_1[1],uVar1,".\\crypto\\buffer\\buffer.c",0x7b);
      }
      if (uVar2 == 0) {
        FUN_00a7f3c0(7,100,0x41,".\\crypto\\buffer\\buffer.c",0x7e);
        return 0;
      }
      param_1[1] = uVar2;
      param_1[2] = uVar1;
      _memset((void *)(*param_1 + uVar2),0,param_2 - *param_1);
      *param_1 = param_2;
      return param_2;
    }
    _memset((void *)(param_1[1] + uVar1),0,param_2 - uVar1);
  }
  *param_1 = param_2;
  return param_2;
}



uint FUN_00a92b40(uint *param_1,uint param_2)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = *param_1;
  if (param_2 <= uVar1) {
    _memset((void *)(param_1[1] + param_2),0,uVar1 - param_2);
    *param_1 = param_2;
    return param_2;
  }
  if (param_2 <= param_1[2]) {
    _memset((void *)(param_1[1] + uVar1),0,param_2 - uVar1);
    *param_1 = param_2;
    return param_2;
  }
  if (0x5ffffffc < param_2) {
    FUN_00a7f3c0(7,0x69,0x41,".\\crypto\\buffer\\buffer.c",0x9f);
    return 0;
  }
  uVar1 = ((uint)((ulonglong)(param_2 + 3) * 0xaaaaaaab >> 0x20) & 0xfffffffe) * 2;
  if (param_1[1] == 0) {
    uVar2 = FUN_00a84f80(uVar1,".\\crypto\\buffer\\buffer.c",0xa4);
  }
  else {
    uVar2 = FUN_00a85070(param_1[1],param_1[2],uVar1,".\\crypto\\buffer\\buffer.c",0xa6);
  }
  if (uVar2 == 0) {
    FUN_00a7f3c0(7,0x69,0x41,".\\crypto\\buffer\\buffer.c",0xa9);
    return 0;
  }
  param_1[1] = uVar2;
  param_1[2] = uVar1;
  _memset((void *)(*param_1 + uVar2),0,param_2 - *param_1);
  *param_1 = param_2;
  return param_2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a92c40(code *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                undefined4 param_5,undefined4 param_6)

{
  int iVar1;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_4 = 0xa92c4a;
  local_8 = 0;
  local_c = 0;
  iVar1 = FUN_00a93d20(&local_c,&local_4,0,param_2,param_3,param_5,param_6);
  if (iVar1 == 0) {
    return 0;
  }
  local_8 = local_c;
  iVar1 = (*param_1)(param_4,&local_8,local_4);
  if (iVar1 == 0) {
    FUN_00a7f3c0(9,0x67,0xd,".\\crypto\\pem\\pem_oth.c",0x53);
  }
  FUN_00a85120(local_c);
  return iVar1;
}



size_t FUN_00a92ce0(char *param_1,size_t param_2,undefined4 param_3,char *param_4)

{
  char cVar1;
  char *pcVar2;
  int iVar3;
  char *pcVar4;
  size_t _Size;
  
  if (param_4 != (char *)0x0) {
    pcVar2 = param_4;
    do {
      cVar1 = *pcVar2;
      pcVar2 = pcVar2 + 1;
    } while (cVar1 != '\0');
    _Size = (int)pcVar2 - (int)(param_4 + 1);
    if ((int)param_2 < (int)pcVar2 - (int)(param_4 + 1)) {
      _Size = param_2;
    }
    _memcpy(param_1,param_4,_Size);
    return _Size;
  }
  pcVar2 = (char *)FUN_00aaafb0();
  if (pcVar2 == (char *)0x0) {
    pcVar2 = "Enter PEM pass phrase:";
  }
  iVar3 = FUN_00aaafd0(param_1,4,param_2,pcVar2,param_3);
  while( true ) {
    if (iVar3 != 0) {
      FUN_00a7f3c0(9,100,0x6d,".\\crypto\\pem\\pem_lib.c",0x6f);
      _memset(param_1,0,param_2);
      return 0xffffffff;
    }
    pcVar4 = param_1;
    do {
      cVar1 = *pcVar4;
      pcVar4 = pcVar4 + 1;
    } while (cVar1 != '\0');
    if (3 < (int)pcVar4 - (int)(param_1 + 1)) break;
    pcVar4 = "phrase is too short, needs to be at least %d chars\n";
    iVar3 = FUN_00a475e9("phrase is too short, needs to be at least %d chars\n",4);
    _fprintf((FILE *)(iVar3 + 0x40),pcVar4);
    iVar3 = FUN_00aaafd0(param_1,4,param_2,pcVar2,param_3);
  }
  return (int)pcVar4 - (int)(param_1 + 1);
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a92db0(int *param_1,int param_2,int *param_3,code *param_4,undefined4 param_5)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int local_4dc;
  int local_4d8;
  int *local_4d4;
  undefined local_4d0 [140];
  undefined local_444 [64];
  undefined local_404 [1024];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_4dc;
  iVar3 = *param_3;
  local_4d4 = param_3;
  if (*param_1 == 0) {
    ___security_check_cookie_4();
    return;
  }
  if (param_4 == (code *)0x0) {
    iVar1 = FUN_00a92ce0(local_404);
  }
  else {
    iVar1 = (*param_4)(local_404,0x400,0,param_5);
  }
  if (0 < iVar1) {
    uVar2 = FUN_00a91950(param_1 + 1,local_404,iVar1,1,local_444,0);
    iVar1 = FUN_00aab0b0(*param_1,uVar2);
    if (iVar1 != 0) {
      local_4dc = iVar3;
      FUN_00aab350(local_4d0);
      iVar3 = FUN_00aabe20(local_4d0,*param_1,0,local_444,param_1 + 1);
      if ((iVar3 != 0) &&
         (iVar3 = FUN_00aab5f0(local_4d0,param_2,&local_4d8,param_2,local_4dc), iVar3 != 0)) {
        iVar3 = FUN_00aab730(local_4d0,param_2 + local_4d8,&local_4dc);
      }
      FUN_00aab890(local_4d0);
      FUN_00a84330(local_404,0x400);
      FUN_00a84330(local_444,0x40);
      local_4dc = local_4dc + local_4d8;
      if (iVar3 == 0) {
        FUN_00a7f3c0(9,0x6a,0x65,".\\crypto\\pem\\pem_lib.c",0x1e3);
      }
      else {
        *local_4d4 = local_4dc;
      }
    }
    ___security_check_cookie_4();
    return;
  }
  FUN_00a7f3c0(9,0x6a,0x68,".\\crypto\\pem\\pem_lib.c",0x1ca);
  ___security_check_cookie_4();
  return;
}



undefined4 __thiscall FUN_00a92f90(size_t param_1_00,char **param_1,void *param_2)

{
  byte bVar1;
  byte *pbVar2;
  char cVar3;
  int iVar4;
  char *pcVar5;
  
  pcVar5 = *param_1;
  if (0 < (int)param_1_00) {
    _memset(param_2,0,param_1_00);
  }
  iVar4 = 0;
  if (0 < (int)(param_1_00 * 2)) {
    do {
      cVar3 = *pcVar5;
      if ((cVar3 < '0') || ('9' < cVar3)) {
        if ((cVar3 < 'A') || ('F' < cVar3)) {
          if ((cVar3 < 'a') || ('f' < cVar3)) {
            FUN_00a7f3c0(9,0x65,0x67,".\\crypto\\pem\\pem_lib.c",0x234);
            return 0;
          }
          cVar3 = cVar3 + -0x57;
        }
        else {
          cVar3 = cVar3 + -0x37;
        }
      }
      else {
        cVar3 = cVar3 + -0x30;
      }
      bVar1 = (byte)iVar4;
      pbVar2 = (byte *)(iVar4 / 2 + (int)param_2);
      iVar4 = iVar4 + 1;
      *pbVar2 = *pbVar2 | cVar3 << (~bVar1 & 1) * '\x04';
      pcVar5 = pcVar5 + 1;
    } while (iVar4 < (int)(param_1_00 * 2));
  }
  *param_1 = pcVar5;
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a93050(undefined4 param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
                 int *param_5)

{
  char *pcVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  char *pcVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  size_t sVar11;
  undefined4 uVar12;
  undefined4 uVar13;
  int local_190;
  int local_18c;
  undefined4 local_188;
  int local_184;
  int local_180;
  int local_17c;
  int local_178;
  undefined4 *local_174;
  int *local_170;
  undefined4 *local_16c;
  undefined4 *local_168;
  undefined local_164 [96];
  char local_104 [9];
  char local_fb [245];
  char local_6 [2];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_190;
  local_168 = param_2;
  local_188 = param_1;
  local_16c = param_3;
  local_174 = param_4;
  local_170 = param_5;
  local_17c = 0;
  local_190 = 0;
  local_180 = 0;
  iVar4 = FUN_00a929e0();
  local_184 = iVar4;
  iVar5 = FUN_00a929e0();
  local_18c = FUN_00a929e0();
  if (((iVar4 == 0) || (iVar5 == 0)) || (local_18c == 0)) {
    FUN_00a92a20(iVar4);
    FUN_00a92a20(iVar5);
    FUN_00a92a20(local_18c);
    FUN_00a7f3c0(9,0x6d,0x41,".\\crypto\\pem\\pem_lib.c",0x2b4);
    goto LAB_00a9361b;
  }
  local_6[0] = 0;
  iVar4 = FUN_00a83550(param_1,local_104,0xfe);
  while (0 < iVar4) {
    do {
      if (' ' < local_104[iVar4]) break;
      iVar4 = iVar4 + -1;
    } while (-1 < iVar4);
    local_104[iVar4 + 1] = '\n';
    local_104[iVar4 + 2] = '\0';
    iVar4 = _strncmp(local_104,"-----BEGIN ",0xb);
    if (iVar4 == 0) {
      pcVar6 = (char *)((int)register0x00000010 + -0xfa) + 1;
      pcVar1 = (char *)((int)register0x00000010 + -0xfa) + 2;
      do {
        cVar2 = *pcVar6;
        pcVar6 = pcVar6 + 1;
      } while (cVar2 != '\0');
      iVar7 = _strncmp(pcVar6 + (int)(local_104 + (5 - (int)pcVar1)),"-----\n",6);
      iVar4 = local_184;
      if (iVar7 == 0) {
        iVar7 = FUN_00a92a60(local_184,pcVar6 + (9 - (int)pcVar1));
        if (iVar7 == 0) {
          uVar13 = 0x2ce;
          uVar12 = 0x41;
          goto LAB_00a935c0;
        }
        _memcpy(*(void **)(iVar4 + 4),(char *)((int)register0x00000010 + -0xfa) + 1,
                (size_t)(pcVar6 + (-6 - (int)pcVar1)));
        pcVar6[(*(int *)(iVar4 + 4) + -6) - (int)pcVar1] = '\0';
        iVar4 = 0;
        iVar7 = FUN_00a92a60(iVar5,0x100);
        if (iVar7 != 0) {
          **(undefined **)(iVar5 + 4) = 0;
          iVar7 = FUN_00a83550(local_188,local_104,0xfe);
          if (0 < iVar7) goto LAB_00a93240;
          goto LAB_00a932f8;
        }
        uVar13 = 0x2d8;
        uVar12 = 0x41;
        goto LAB_00a935c0;
      }
    }
    iVar4 = FUN_00a83550(param_1,local_104,0xfe);
  }
  uVar13 = 0x2bf;
  uVar12 = 0x6c;
  goto LAB_00a935c0;
  while (iVar5 = iVar5 + -1, -1 < iVar5) {
LAB_00a93450:
    if (' ' < local_104[iVar5]) break;
  }
  local_104[iVar5 + 1] = '\n';
  local_104[iVar5 + 2] = '\0';
LAB_00a93485:
  local_18c = iVar3;
  local_190 = iVar4;
  pcVar6 = *(char **)(local_184 + 4);
  pcVar1 = pcVar6 + 1;
  do {
    cVar2 = *pcVar6;
    pcVar6 = pcVar6 + 1;
  } while (cVar2 != '\0');
  iVar4 = _strncmp(local_104,"-----END ",9);
  iVar5 = iVar7;
  if (((iVar4 != 0) ||
      (iVar4 = _strncmp(*(char **)(local_184 + 4),(char *)((int)register0x00000010 + -0xfe) + 3,
                        (int)pcVar6 - (int)pcVar1), iVar4 != 0)) ||
     (iVar4 = _strncmp((char *)((int)register0x00000010 + -0xfe) + ((int)pcVar6 - (int)pcVar1) + 3,
                       "-----\n",6), iVar4 != 0)) {
    uVar13 = 0x322;
    uVar12 = 0x66;
    goto LAB_00a935c0;
  }
  FUN_00aabfe0(local_164);
  iVar4 = FUN_00aac2e0(local_164,*(undefined4 *)(iVar8 + 4),&local_190,*(undefined4 *)(iVar8 + 4),
                       local_190);
  if (iVar4 < 0) {
    uVar13 = 0x32c;
    uVar12 = 100;
    goto LAB_00a935c0;
  }
  iVar8 = FUN_00aac130(local_164,*(int *)(iVar8 + 4) + local_190,&local_178);
  iVar4 = local_18c;
  if (iVar8 < 0) {
    uVar13 = 0x332;
    uVar12 = 100;
    goto LAB_00a935c0;
  }
  local_190 = local_190 + local_178;
  if (local_190 != 0) {
    *local_168 = *(undefined4 *)(local_184 + 4);
    *local_16c = *(undefined4 *)(iVar7 + 4);
    *local_174 = *(undefined4 *)(local_18c + 4);
    *local_170 = local_190;
    FUN_00a85120(local_184);
    FUN_00a85120(iVar7);
    FUN_00a85120(iVar4);
    goto LAB_00a9361b;
  }
  goto LAB_00a935cc;
  while( true ) {
    local_104[iVar7 + 1] = '\n';
    sVar11 = iVar7 + 2;
    local_104[iVar7 + 2] = '\0';
    if (local_104[0] == '\n') break;
    iVar7 = FUN_00a92a60(iVar5,iVar7 + 0xb + iVar4);
    if (iVar7 == 0) {
      uVar13 = 0x2e4;
      uVar12 = 0x41;
      goto LAB_00a935c0;
    }
    iVar7 = _strncmp(local_104,"-----END ",9);
    if (iVar7 == 0) {
      local_180 = 1;
      break;
    }
    _memcpy((void *)(*(int *)(iVar5 + 4) + iVar4),local_104,sVar11);
    *(undefined *)(*(int *)(iVar5 + 4) + sVar11 + iVar4) = 0;
    iVar4 = iVar4 + sVar11;
    iVar7 = FUN_00a83550(local_188,local_104,0xfe);
    if (iVar7 < 1) break;
LAB_00a93240:
    if (local_104[iVar7] < '!') {
      iVar7 = iVar7 + -1;
      if (-1 < iVar7) goto LAB_00a93240;
    }
  }
LAB_00a932f8:
  iVar7 = local_18c;
  local_190 = 0;
  iVar8 = FUN_00a92a60(local_18c,0x400);
  if (iVar8 != 0) {
    **(undefined **)(iVar7 + 4) = 0;
    iVar8 = iVar5;
    iVar3 = iVar5;
    if (local_180 == 0) {
      iVar9 = FUN_00a83550(local_188,local_104,0xfe);
      iVar8 = local_18c;
      while (iVar7 = iVar5, iVar4 = local_190, iVar3 = local_18c, 0 < iVar9) {
        do {
          if (' ' < local_104[iVar9]) break;
          iVar9 = iVar9 + -1;
        } while (-1 < iVar9);
        local_104[iVar9 + 1] = '\n';
        sVar11 = iVar9 + 2;
        local_104[iVar9 + 2] = '\0';
        if (sVar11 != 0x41) {
          local_17c = 1;
        }
        iVar10 = _strncmp(local_104,"-----END ",9);
        iVar8 = local_18c;
        iVar4 = local_190;
        iVar3 = local_18c;
        if ((iVar10 == 0) || (0x41 < (int)sVar11)) break;
        iVar4 = FUN_00a92b40(local_18c,iVar9 + 0xb + local_190);
        if (iVar4 == 0) {
          uVar13 = 0x303;
          uVar12 = 0x41;
          goto LAB_00a935c0;
        }
        _memcpy((void *)(*(int *)(iVar8 + 4) + local_190),local_104,sVar11);
        *(undefined *)(sVar11 + local_190 + *(int *)(iVar8 + 4)) = 0;
        local_190 = local_190 + sVar11;
        if (local_17c != 0) {
          local_104[0] = '\0';
          iVar5 = FUN_00a83550(local_188,local_104,0xfe);
          iVar4 = local_190;
          iVar3 = local_18c;
          if (0 < iVar5) goto LAB_00a93450;
          break;
        }
        iVar9 = FUN_00a83550(local_188,local_104,0xfe);
      }
    }
    goto LAB_00a93485;
  }
  uVar13 = 0x2f1;
  uVar12 = 0x41;
LAB_00a935c0:
  FUN_00a7f3c0(9,0x6d,uVar12,".\\crypto\\pem\\pem_lib.c",uVar13);
  iVar7 = iVar5;
LAB_00a935cc:
  FUN_00a92a20(local_184);
  FUN_00a92a20(iVar7);
  FUN_00a92a20(local_18c);
LAB_00a9361b:
  ___security_check_cookie_4();
  return;
}



int FUN_00a93640(char *param_1,byte *param_2)

{
  char cVar1;
  byte bVar2;
  char *pcVar3;
  byte *pbVar4;
  byte *pbVar5;
  int iVar6;
  bool bVar7;
  
  pcVar3 = param_1;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  pbVar4 = param_2;
  do {
    bVar2 = *pbVar4;
    pbVar4 = pbVar4 + 1;
  } while (bVar2 != 0);
  if (((int)pbVar4 - (int)(param_2 + 1)) + 1 < (int)pcVar3 - (int)(param_1 + 1)) {
    pbVar5 = (byte *)(param_1 +
                     (((int)pcVar3 - (int)(param_1 + 1)) - ((int)pbVar4 - (int)(param_2 + 1))));
    pbVar4 = pbVar5;
    do {
      bVar2 = *pbVar4;
      bVar7 = bVar2 < *param_2;
      if (bVar2 != *param_2) {
LAB_00a936a4:
        iVar6 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
        goto LAB_00a936a9;
      }
      if (bVar2 == 0) break;
      bVar2 = pbVar4[1];
      bVar7 = bVar2 < param_2[1];
      if (bVar2 != param_2[1]) goto LAB_00a936a4;
      pbVar4 = pbVar4 + 2;
      param_2 = param_2 + 2;
    } while (bVar2 != 0);
    iVar6 = 0;
LAB_00a936a9:
    if ((iVar6 == 0) && (pbVar5[-1] == 0x20)) {
      return (int)(pbVar5 + -1) - (int)param_1;
    }
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

bool __fastcall FUN_00a936c0(byte *param_1)

{
  byte bVar1;
  byte *pbVar2;
  int iVar3;
  byte *pbVar4;
  char *pcVar5;
  byte *unaff_EDI;
  bool bVar6;
  int local_4;
  
  local_4 = 0xa936ca;
  pbVar2 = unaff_EDI;
  pbVar4 = param_1;
  do {
    bVar1 = *pbVar2;
    bVar6 = bVar1 < *pbVar4;
    if (bVar1 != *pbVar4) {
LAB_00a936f0:
      iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
      goto LAB_00a936f5;
    }
    if (bVar1 == 0) break;
    bVar1 = pbVar2[1];
    bVar6 = bVar1 < pbVar4[1];
    if (bVar1 != pbVar4[1]) goto LAB_00a936f0;
    pbVar2 = pbVar2 + 2;
    pbVar4 = pbVar4 + 2;
  } while (bVar1 != 0);
  iVar3 = 0;
LAB_00a936f5:
  if (iVar3 != 0) {
    pcVar5 = "ANY PRIVATE KEY";
    pbVar2 = param_1;
    do {
      bVar1 = *pbVar2;
      bVar6 = bVar1 < (byte)*pcVar5;
      if (bVar1 != *pcVar5) {
LAB_00a93728:
        iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
        goto LAB_00a9372d;
      }
      if (bVar1 == 0) break;
      bVar1 = pbVar2[1];
      bVar6 = bVar1 < ((byte *)pcVar5)[1];
      if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a93728;
      pbVar2 = pbVar2 + 2;
      pcVar5 = (char *)((byte *)pcVar5 + 2);
    } while (bVar1 != 0);
    iVar3 = 0;
LAB_00a9372d:
    if (iVar3 != 0) {
      pcVar5 = "PARAMETERS";
      pbVar2 = param_1;
      do {
        bVar1 = *pbVar2;
        bVar6 = bVar1 < (byte)*pcVar5;
        if (bVar1 != *pcVar5) {
LAB_00a93800:
          iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
          goto LAB_00a93805;
        }
        if (bVar1 == 0) break;
        bVar1 = pbVar2[1];
        bVar6 = bVar1 < ((byte *)pcVar5)[1];
        if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a93800;
        pbVar2 = pbVar2 + 2;
        pcVar5 = (char *)((byte *)pcVar5 + 2);
      } while (bVar1 != 0);
      iVar3 = 0;
LAB_00a93805:
      if (iVar3 == 0) {
        iVar3 = FUN_00a93640();
        if ((0 < iVar3) && (iVar3 = FUN_00a8f370(&local_4), iVar3 != 0)) {
          iVar3 = *(int *)(iVar3 + 0x38);
          if (local_4 != 0) {
            FUN_00a8f1b0(local_4);
          }
          return iVar3 != 0;
        }
      }
      else {
        pcVar5 = "X509 CERTIFICATE";
        pbVar2 = unaff_EDI;
        do {
          bVar1 = *pbVar2;
          bVar6 = bVar1 < (byte)*pcVar5;
          if (bVar1 != *pcVar5) {
LAB_00a93880:
            iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
            goto LAB_00a93885;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar2[1];
          bVar6 = bVar1 < ((byte *)pcVar5)[1];
          if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a93880;
          pbVar2 = pbVar2 + 2;
          pcVar5 = (char *)((byte *)pcVar5 + 2);
        } while (bVar1 != 0);
        iVar3 = 0;
LAB_00a93885:
        if (iVar3 == 0) {
          pcVar5 = "CERTIFICATE";
          pbVar2 = param_1;
          do {
            bVar1 = *pbVar2;
            bVar6 = bVar1 < (byte)*pcVar5;
            if (bVar1 != *pcVar5) {
LAB_00a938b0:
              iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
              goto LAB_00a938b5;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar2[1];
            bVar6 = bVar1 < ((byte *)pcVar5)[1];
            if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a938b0;
            pbVar2 = pbVar2 + 2;
            pcVar5 = (char *)((byte *)pcVar5 + 2);
          } while (bVar1 != 0);
          iVar3 = 0;
LAB_00a938b5:
          if (iVar3 == 0) {
            return true;
          }
        }
        pcVar5 = "NEW CERTIFICATE REQUEST";
        pbVar2 = unaff_EDI;
        do {
          bVar1 = *pbVar2;
          bVar6 = bVar1 < (byte)*pcVar5;
          if (bVar1 != *pcVar5) {
LAB_00a938e4:
            iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
            goto LAB_00a938e9;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar2[1];
          bVar6 = bVar1 < ((byte *)pcVar5)[1];
          if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a938e4;
          pbVar2 = pbVar2 + 2;
          pcVar5 = (char *)((byte *)pcVar5 + 2);
        } while (bVar1 != 0);
        iVar3 = 0;
LAB_00a938e9:
        if (iVar3 == 0) {
          pcVar5 = "CERTIFICATE REQUEST";
          pbVar2 = param_1;
          do {
            bVar1 = *pbVar2;
            bVar6 = bVar1 < (byte)*pcVar5;
            if (bVar1 != *pcVar5) {
LAB_00a93914:
              iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
              goto LAB_00a93919;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar2[1];
            bVar6 = bVar1 < ((byte *)pcVar5)[1];
            if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a93914;
            pbVar2 = pbVar2 + 2;
            pcVar5 = (char *)((byte *)pcVar5 + 2);
          } while (bVar1 != 0);
          iVar3 = 0;
LAB_00a93919:
          if (iVar3 == 0) {
            return true;
          }
        }
        pcVar5 = "CERTIFICATE";
        pbVar2 = unaff_EDI;
        do {
          bVar1 = *pbVar2;
          bVar6 = bVar1 < (byte)*pcVar5;
          if (bVar1 != *pcVar5) {
LAB_00a93948:
            iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
            goto LAB_00a9394d;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar2[1];
          bVar6 = bVar1 < ((byte *)pcVar5)[1];
          if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a93948;
          pbVar2 = pbVar2 + 2;
          pcVar5 = (char *)((byte *)pcVar5 + 2);
        } while (bVar1 != 0);
        iVar3 = 0;
LAB_00a9394d:
        if (iVar3 == 0) {
          pcVar5 = "TRUSTED CERTIFICATE";
          pbVar2 = param_1;
          do {
            bVar1 = *pbVar2;
            bVar6 = bVar1 < (byte)*pcVar5;
            if (bVar1 != *pcVar5) {
LAB_00a93978:
              iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
              goto LAB_00a9397d;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar2[1];
            bVar6 = bVar1 < ((byte *)pcVar5)[1];
            if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a93978;
            pbVar2 = pbVar2 + 2;
            pcVar5 = (char *)((byte *)pcVar5 + 2);
          } while (bVar1 != 0);
          iVar3 = 0;
LAB_00a9397d:
          if (iVar3 == 0) {
            return true;
          }
        }
        pcVar5 = "X509 CERTIFICATE";
        pbVar2 = unaff_EDI;
        do {
          bVar1 = *pbVar2;
          bVar6 = bVar1 < (byte)*pcVar5;
          if (bVar1 != *pcVar5) {
LAB_00a939b0:
            iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
            goto LAB_00a939b5;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar2[1];
          bVar6 = bVar1 < ((byte *)pcVar5)[1];
          if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a939b0;
          pbVar2 = pbVar2 + 2;
          pcVar5 = (char *)((byte *)pcVar5 + 2);
        } while (bVar1 != 0);
        iVar3 = 0;
LAB_00a939b5:
        if (iVar3 == 0) {
          pcVar5 = "TRUSTED CERTIFICATE";
          pbVar2 = param_1;
          do {
            bVar1 = *pbVar2;
            bVar6 = bVar1 < (byte)*pcVar5;
            if (bVar1 != *pcVar5) {
LAB_00a939e0:
              iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
              goto LAB_00a939e5;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar2[1];
            bVar6 = bVar1 < ((byte *)pcVar5)[1];
            if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a939e0;
            pbVar2 = pbVar2 + 2;
            pcVar5 = (char *)((byte *)pcVar5 + 2);
          } while (bVar1 != 0);
          iVar3 = 0;
LAB_00a939e5:
          if (iVar3 == 0) {
            return true;
          }
        }
        pcVar5 = "CERTIFICATE";
        pbVar2 = unaff_EDI;
        do {
          bVar1 = *pbVar2;
          bVar6 = bVar1 < (byte)*pcVar5;
          if (bVar1 != *pcVar5) {
LAB_00a93a14:
            iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
            goto LAB_00a93a19;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar2[1];
          bVar6 = bVar1 < ((byte *)pcVar5)[1];
          if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a93a14;
          pbVar2 = pbVar2 + 2;
          pcVar5 = (char *)((byte *)pcVar5 + 2);
        } while (bVar1 != 0);
        iVar3 = 0;
LAB_00a93a19:
        if (iVar3 == 0) {
          pbVar4 = &DAT_00db73b0;
          pbVar2 = param_1;
          do {
            bVar1 = *pbVar2;
            bVar6 = bVar1 < *pbVar4;
            if (bVar1 != *pbVar4) {
LAB_00a93a44:
              iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
              goto LAB_00a93a49;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar2[1];
            bVar6 = bVar1 < pbVar4[1];
            if (bVar1 != pbVar4[1]) goto LAB_00a93a44;
            pbVar2 = pbVar2 + 2;
            pbVar4 = pbVar4 + 2;
          } while (bVar1 != 0);
          iVar3 = 0;
LAB_00a93a49:
          if (iVar3 == 0) {
            return true;
          }
        }
        pcVar5 = "PKCS #7 SIGNED DATA";
        pbVar2 = unaff_EDI;
        do {
          bVar1 = *pbVar2;
          bVar6 = bVar1 < (byte)*pcVar5;
          if (bVar1 != *pcVar5) {
LAB_00a93a78:
            iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
            goto LAB_00a93a7d;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar2[1];
          bVar6 = bVar1 < ((byte *)pcVar5)[1];
          if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a93a78;
          pbVar2 = pbVar2 + 2;
          pcVar5 = (char *)((byte *)pcVar5 + 2);
        } while (bVar1 != 0);
        iVar3 = 0;
LAB_00a93a7d:
        if (iVar3 == 0) {
          pbVar4 = &DAT_00db73b0;
          pbVar2 = param_1;
          do {
            bVar1 = *pbVar2;
            bVar6 = bVar1 < *pbVar4;
            if (bVar1 != *pbVar4) {
LAB_00a93aa8:
              iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
              goto LAB_00a93aad;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar2[1];
            bVar6 = bVar1 < pbVar4[1];
            if (bVar1 != pbVar4[1]) goto LAB_00a93aa8;
            pbVar2 = pbVar2 + 2;
            pbVar4 = pbVar4 + 2;
          } while (bVar1 != 0);
          iVar3 = 0;
LAB_00a93aad:
          if (iVar3 == 0) {
            return true;
          }
        }
        pcVar5 = "CERTIFICATE";
        pbVar2 = unaff_EDI;
        do {
          bVar1 = *pbVar2;
          bVar6 = bVar1 < (byte)*pcVar5;
          if (bVar1 != *pcVar5) {
LAB_00a93ae0:
            iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
            goto LAB_00a93ae5;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar2[1];
          bVar6 = bVar1 < ((byte *)pcVar5)[1];
          if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a93ae0;
          pbVar2 = pbVar2 + 2;
          pcVar5 = (char *)((byte *)pcVar5 + 2);
        } while (bVar1 != 0);
        iVar3 = 0;
LAB_00a93ae5:
        if (iVar3 == 0) {
          pbVar4 = &DAT_00db7398;
          pbVar2 = param_1;
          do {
            bVar1 = *pbVar2;
            bVar6 = bVar1 < *pbVar4;
            if (bVar1 != *pbVar4) {
LAB_00a93b10:
              iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
              goto LAB_00a93b15;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar2[1];
            bVar6 = bVar1 < pbVar4[1];
            if (bVar1 != pbVar4[1]) goto LAB_00a93b10;
            pbVar2 = pbVar2 + 2;
            pbVar4 = pbVar4 + 2;
          } while (bVar1 != 0);
          iVar3 = 0;
LAB_00a93b15:
          if (iVar3 == 0) {
            return true;
          }
        }
        pbVar2 = &DAT_00db73b0;
        do {
          bVar1 = *unaff_EDI;
          bVar6 = bVar1 < *pbVar2;
          if (bVar1 != *pbVar2) {
LAB_00a93b44:
            iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
            goto LAB_00a93b49;
          }
          if (bVar1 == 0) break;
          bVar1 = unaff_EDI[1];
          bVar6 = bVar1 < pbVar2[1];
          if (bVar1 != pbVar2[1]) goto LAB_00a93b44;
          unaff_EDI = unaff_EDI + 2;
          pbVar2 = pbVar2 + 2;
        } while (bVar1 != 0);
        iVar3 = 0;
LAB_00a93b49:
        if (iVar3 == 0) {
          pbVar2 = &DAT_00db7398;
          do {
            bVar1 = *param_1;
            bVar6 = bVar1 < *pbVar2;
            if (bVar1 != *pbVar2) {
LAB_00a93b74:
              iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
              goto LAB_00a93b79;
            }
            if (bVar1 == 0) break;
            bVar1 = param_1[1];
            bVar6 = bVar1 < pbVar2[1];
            if (bVar1 != pbVar2[1]) goto LAB_00a93b74;
            param_1 = param_1 + 2;
            pbVar2 = pbVar2 + 2;
          } while (bVar1 != 0);
          iVar3 = 0;
LAB_00a93b79:
          if (iVar3 == 0) {
            return true;
          }
        }
      }
      return false;
    }
    pcVar5 = "ENCRYPTED PRIVATE KEY";
    pbVar2 = unaff_EDI;
    do {
      bVar1 = *pbVar2;
      bVar6 = bVar1 < (byte)*pcVar5;
      if (bVar1 != *pcVar5) {
LAB_00a93760:
        iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
        goto LAB_00a93765;
      }
      if (bVar1 == 0) break;
      bVar1 = pbVar2[1];
      bVar6 = bVar1 < ((byte *)pcVar5)[1];
      if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a93760;
      pbVar2 = pbVar2 + 2;
      pcVar5 = (char *)((byte *)pcVar5 + 2);
    } while (bVar1 != 0);
    iVar3 = 0;
LAB_00a93765:
    if (iVar3 != 0) {
      pcVar5 = "PRIVATE KEY";
      do {
        bVar1 = *unaff_EDI;
        bVar6 = bVar1 < (byte)*pcVar5;
        if (bVar1 != *pcVar5) {
LAB_00a93790:
          iVar3 = (1 - (uint)bVar6) - (uint)(bVar6 != 0);
          goto LAB_00a93795;
        }
        if (bVar1 == 0) break;
        bVar1 = unaff_EDI[1];
        bVar6 = bVar1 < ((byte *)pcVar5)[1];
        if (bVar1 != ((byte *)pcVar5)[1]) goto LAB_00a93790;
        unaff_EDI = unaff_EDI + 2;
        pcVar5 = (char *)((byte *)pcVar5 + 2);
      } while (bVar1 != 0);
      iVar3 = 0;
LAB_00a93795:
      if (iVar3 != 0) {
        iVar3 = FUN_00a93640();
        if (iVar3 < 1) {
          return false;
        }
        iVar3 = FUN_00a8f370(0);
        if (iVar3 == 0) {
          return false;
        }
        if (*(int *)(iVar3 + 0x5c) == 0) {
          return false;
        }
        return true;
      }
    }
  }
  return true;
}



bool FUN_00a93b90(char *param_1,int *param_2)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  char *pcVar4;
  char *pcVar5;
  
  piVar2 = param_2;
  pcVar4 = param_1;
  *param_2 = 0;
  if (((param_1 == (char *)0x0) || (*param_1 == '\0')) || (*param_1 == '\n')) {
    return true;
  }
  iVar3 = _strncmp(param_1,"Proc-Type: ",0xb);
  if (iVar3 == 0) {
    if ((pcVar4[0xb] == '4') && (pcVar4[0xc] == ',')) {
      pcVar4 = pcVar4 + 0xd;
      iVar3 = _strncmp(pcVar4,"ENCRYPTED",9);
      if (iVar3 != 0) {
        FUN_00a7f3c0(9,0x6b,0x6a,".\\crypto\\pem\\pem_lib.c",0x1f9);
        return false;
      }
      cVar1 = *pcVar4;
      while (cVar1 != '\n') {
        if (cVar1 == '\0') goto LAB_00a93c42;
        pcVar5 = pcVar4 + 1;
        pcVar4 = pcVar4 + 1;
        cVar1 = *pcVar5;
      }
      if (*pcVar4 != '\0') {
        iVar3 = _strncmp(pcVar4 + 1,"DEK-Info: ",10);
        if (iVar3 != 0) {
          FUN_00a7f3c0(9,0x6b,0x69,".\\crypto\\pem\\pem_lib.c",0x200);
          return false;
        }
        for (pcVar5 = pcVar4 + 0xb;
            ((cVar1 = *pcVar5, '@' < cVar1 && (cVar1 < '[')) ||
            ((cVar1 == '-' || ((byte)(cVar1 - 0x30U) < 10)))); pcVar5 = pcVar5 + 1) {
        }
        *pcVar5 = '\0';
        iVar3 = FUN_00a802b0(pcVar4 + 0xb);
        *piVar2 = iVar3;
        *pcVar5 = cVar1;
        param_1 = pcVar5 + 1;
        if (iVar3 != 0) {
          iVar3 = FUN_00a92f90(&param_1,piVar2 + 1);
          return iVar3 != 0;
        }
        FUN_00a7f3c0(9,0x6b,0x72,".\\crypto\\pem\\pem_lib.c",0x219);
        return false;
      }
LAB_00a93c42:
      FUN_00a7f3c0(9,0x6b,0x70,".\\crypto\\pem\\pem_lib.c",0x1fd);
      return false;
    }
  }
  else {
    FUN_00a7f3c0(9,0x6b,0x6b,".\\crypto\\pem\\pem_lib.c",500);
  }
  return false;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a93d20(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 *local_28;
  undefined4 local_24;
  int local_20;
  undefined4 *local_1c;
  undefined local_18 [20];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_3c;
  local_1c = param_1;
  local_28 = param_2;
  local_2c = param_7;
  local_24 = param_6;
  local_34 = 0;
  local_3c = 0;
  local_38 = 0;
  local_20 = 0;
  iVar3 = FUN_00a93050(param_5,&local_34,&local_3c,&local_38,&local_30);
  uVar1 = local_34;
  while( true ) {
    local_34 = uVar1;
    if (iVar3 == 0) {
      uVar4 = FUN_00a7f7a0();
      if ((uVar4 & 0xfff) == 0x6c) {
        FUN_00a7f690(2,"Expecting: ",param_4);
      }
      ___security_check_cookie_4();
      return;
    }
    iVar3 = FUN_00a936c0();
    if (iVar3 != 0) break;
    FUN_00a85120(uVar1);
    FUN_00a85120(local_3c);
    FUN_00a85120(local_38);
    iVar3 = FUN_00a93050(param_5,&local_34,&local_3c,&local_38,&local_30);
    uVar1 = local_34;
  }
  iVar5 = FUN_00a93b90(local_3c,local_18);
  uVar2 = local_38;
  iVar3 = local_20;
  if ((iVar5 != 0) &&
     (iVar5 = FUN_00a92db0(local_18,local_38,&local_30,local_24,local_2c), iVar3 = local_20,
     iVar5 != 0)) {
    *local_1c = uVar2;
    *local_28 = local_30;
    if (param_3 != (undefined4 *)0x0) {
      *param_3 = uVar1;
    }
    iVar3 = 1;
    if (param_3 != (undefined4 *)0x0) goto LAB_00a93e87;
  }
  FUN_00a85120(uVar1);
LAB_00a93e87:
  FUN_00a85120(local_3c);
  if (iVar3 == 0) {
    FUN_00a85120(uVar2);
  }
  ___security_check_cookie_4();
  return;
}



int FUN_00a93ec0(undefined4 param_1,int *param_2,undefined4 param_3,undefined4 param_4)

{
  code *pcVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  
  if ((param_2 == (int *)0x0) || (iVar3 = *param_2, iVar3 == 0)) {
    iVar3 = FUN_00a81420();
    if (iVar3 == 0) {
      FUN_00a7f3c0(0xd,0x9a,6,".\\crypto\\asn1\\d2i_pr.c",0x50);
      return 0;
    }
  }
  else if (*(int *)(iVar3 + 0x10) != 0) {
    FUN_00a8f1b0(*(int *)(iVar3 + 0x10));
    *(undefined4 *)(iVar3 + 0x10) = 0;
  }
  iVar2 = FUN_00a81680(iVar3,param_1);
  if (iVar2 == 0) {
    uVar5 = 0x62;
    uVar4 = 0xa3;
  }
  else {
    pcVar1 = *(code **)(*(int *)(iVar3 + 0xc) + 0x5c);
    if (pcVar1 != (code *)0x0) {
      iVar2 = (*pcVar1)(iVar3,param_3,param_4);
      if (iVar2 != 0) goto LAB_00a93f85;
    }
    if (*(int *)(*(int *)(iVar3 + 0xc) + 0x24) != 0) {
      iVar2 = FUN_00a940b0(0,param_3,param_4);
      if (iVar2 != 0) {
        FUN_00a816d0(iVar3);
        iVar3 = FUN_00a94200(iVar2);
        FUN_00a940d0(iVar2);
LAB_00a93f85:
        if (param_2 != (int *)0x0) {
          *param_2 = iVar3;
        }
        return iVar3;
      }
      goto LAB_00a93fab;
    }
    uVar5 = 0x75;
    uVar4 = 0xd;
  }
  FUN_00a7f3c0(0xd,0x9a,uVar4,".\\crypto\\asn1\\d2i_pr.c",uVar5);
LAB_00a93fab:
  if ((iVar3 != 0) && ((param_2 == (int *)0x0 || (*param_2 != iVar3)))) {
    FUN_00a816d0(iVar3);
  }
  return 0;
}



void FUN_00a93fd0(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00a940a0(param_2,param_3,param_1[1],1);
  FUN_00aac680(*param_1,uVar1);
  return;
}



void FUN_00a94010(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00db7478);
  return;
}



void FUN_00a94030(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00db7478);
  return;
}



void FUN_00a94050(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db7478);
  return;
}



undefined * FUN_00a940a0(void)

{
  return &DAT_00db7530;
}



void FUN_00a940b0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00db7530);
  return;
}



void FUN_00a940d0(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db7530);
  return;
}



undefined4
FUN_00a940f0(int *param_1,undefined4 param_2,int param_3,undefined4 param_4,undefined4 param_5,
            int param_6,undefined4 param_7)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  puVar3 = (undefined4 *)0x0;
  if ((-1 < param_3) && (iVar1 = FUN_00a9da80(param_1[1],param_3), iVar1 == 0)) {
    return 0;
  }
  if (param_6 != 0) {
    puVar2 = (undefined4 *)FUN_00a888d0();
    if (puVar2 == (undefined4 *)0x0) {
      return 0;
    }
    puVar2[2] = param_6;
    puVar3 = puVar2 + 2;
    *puVar2 = param_7;
    FUN_00a9d500(param_1[3],(-(uint)(*param_1 != 1) & 0xfffffff4) + 0x10,puVar2);
  }
  iVar1 = FUN_00a895d0(param_1[2],param_2,param_4,param_5);
  if (iVar1 == 0) {
    if (puVar3 != (undefined4 *)0x0) {
      *puVar3 = 0;
    }
    return 0;
  }
  return 1;
}



undefined4
FUN_00a94190(undefined4 *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
            undefined4 *param_5)

{
  int iVar1;
  
  if (param_1 != (undefined4 *)0x0) {
    *param_1 = *(undefined4 *)param_5[2];
  }
  iVar1 = *(int *)param_5[3];
  if (iVar1 == 4) {
    *param_5 = 0;
  }
  else {
    if (iVar1 != 0x10) {
      return 0;
    }
    *param_5 = 1;
  }
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *(undefined4 *)(((int *)param_5[3])[1] + 8);
    *param_3 = **(undefined4 **)(param_5[3] + 4);
  }
  if (param_4 != (undefined4 *)0x0) {
    *param_4 = param_5[2];
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a94200(undefined4 param_1)

{
  code *pcVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 local_58;
  undefined local_54 [80];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_58;
  iVar2 = FUN_00a94190(&local_58,0,0,0,param_1);
  if (iVar2 == 0) {
    ___security_check_cookie_4();
    return;
  }
  iVar2 = FUN_00a81420();
  if (iVar2 == 0) {
    FUN_00a7f3c0(6,0x6f,0x41,".\\crypto\\evp\\evp_pkey.c",0x4e);
    ___security_check_cookie_4();
    return;
  }
  uVar3 = FUN_00a877e0(local_58);
  iVar4 = FUN_00a81680(iVar2,uVar3);
  if (iVar4 == 0) {
    FUN_00a7f3c0(6,0x6f,0x76,".\\crypto\\evp\\evp_pkey.c",0x54);
    FUN_00a905e0(local_54,0x50,local_58);
    FUN_00a7f690(2,"TYPE=",local_54);
  }
  else {
    pcVar1 = *(code **)(*(int *)(iVar2 + 0xc) + 0x24);
    if (pcVar1 == (code *)0x0) {
      uVar5 = 0x65;
      uVar3 = 0x90;
    }
    else {
      iVar4 = (*pcVar1)(iVar2,param_1);
      if (iVar4 != 0) {
        ___security_check_cookie_4();
        return;
      }
      uVar5 = 0x5f;
      uVar3 = 0x91;
    }
    FUN_00a7f3c0(6,0x6f,uVar3,".\\crypto\\evp\\evp_pkey.c",uVar5);
  }
  FUN_00a816d0(iVar2);
  ___security_check_cookie_4();
  return;
}



undefined * FUN_00a94340(void)

{
  return &DAT_03242bb4;
}



undefined4 FUN_00a94350(int param_1)

{
  if (param_1 == 0) {
    return 0;
  }
  if (*(int *)(param_1 + 0x10) != 0) {
    if ((*(int *)(param_1 + 0xc) != 0) && (*(FILE **)(param_1 + 0x20) != (FILE *)0x0)) {
      _fclose(*(FILE **)(param_1 + 0x20));
      *(undefined4 *)(param_1 + 0x20) = 0;
      *(undefined4 *)(param_1 + 0x14) = 0;
    }
    *(undefined4 *)(param_1 + 0xc) = 0;
  }
  return 1;
}



size_t FUN_00a943a0(int param_1,void *param_2,size_t param_3)

{
  size_t sVar1;
  int iVar2;
  DWORD DVar3;
  char *pcVar4;
  undefined4 uVar5;
  
  sVar1 = 0;
  if ((*(int *)(param_1 + 0xc) != 0) && (param_2 != (void *)0x0)) {
    sVar1 = _fread(param_2,1,param_3,*(FILE **)(param_1 + 0x20));
    iVar2 = _ferror(*(FILE **)(param_1 + 0x20));
    if (iVar2 != 0) {
      uVar5 = 0xf5;
      pcVar4 = ".\\crypto\\bio\\bss_file.c";
      DVar3 = GetLastError();
      FUN_00a7f3c0(2,0xb,DVar3,pcVar4,uVar5);
      FUN_00a7f3c0(0x20,0x82,2,".\\crypto\\bio\\bss_file.c",0xf6);
      return 0xffffffff;
    }
  }
  return sVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe
// WARNING: Function: __alloca_probe_16 replaced with injection: alloca_probe

void FUN_00a947f0(char *param_1,char *param_2)

{
  char cVar1;
  char *pcVar2;
  int iVar3;
  DWORD DVar4;
  FILE *_File;
  int *piVar5;
  undefined4 uVar6;
  DWORD local_24;
  WCHAR local_18 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  pcVar2 = param_1;
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  pcVar2 = pcVar2 + (1 - (int)(param_1 + 1));
  local_24 = 8;
  iVar3 = MultiByteToWideChar(0xfde9,8,param_1,(int)pcVar2,(LPWSTR)0x0,0);
  if (iVar3 < 1) {
    DVar4 = GetLastError();
    if (DVar4 == 0x3ec) {
      local_24 = 0;
      iVar3 = MultiByteToWideChar(0xfde9,0,param_1,(int)pcVar2,(LPWSTR)0x0,0);
      if (0 < iVar3) goto LAB_00a94898;
    }
    DVar4 = GetLastError();
    if (DVar4 != 0x459) goto LAB_00a9492a;
LAB_00a94918:
    _File = _fopen(param_1,param_2);
  }
  else {
LAB_00a94898:
    iVar3 = MultiByteToWideChar(0xfde9,local_24,param_1,(int)pcVar2,(LPWSTR)&stack0xffffffcc,iVar3);
    if (iVar3 == 0) goto LAB_00a9492a;
    pcVar2 = param_2;
    do {
      cVar1 = *pcVar2;
      pcVar2 = pcVar2 + 1;
    } while (cVar1 != '\0');
    iVar3 = MultiByteToWideChar(0xfde9,0,param_2,(int)(pcVar2 + (1 - (int)(param_2 + 1))),local_18,8
                               );
    if (iVar3 == 0) goto LAB_00a9492a;
    _File = __wfopen((wchar_t *)&stack0xffffffcc,local_18);
    if (_File != (FILE *)0x0) goto LAB_00a949ce;
    piVar5 = __errno();
    if ((*piVar5 == 2) || (piVar5 = __errno(), *piVar5 == 9)) goto LAB_00a94918;
  }
  if (_File != (FILE *)0x0) {
LAB_00a949ce:
    iVar3 = FUN_00a838c0(&DAT_03242bb4);
    if (iVar3 != 0) {
      FUN_00a832f0(iVar3,0);
      FUN_00a83650(iVar3,0x6a,1,_File);
      ___security_check_cookie_4();
      return;
    }
    _fclose(_File);
    ___security_check_cookie_4();
    return;
  }
LAB_00a9492a:
  uVar6 = 0xa9;
  pcVar2 = ".\\crypto\\bio\\bss_file.c";
  DVar4 = GetLastError();
  FUN_00a7f3c0(2,1,DVar4,pcVar2,uVar6);
  FUN_00a7f690(5,"fopen(\'",param_1,&DAT_00db7594,param_2,&DAT_00db7598);
  piVar5 = __errno();
  if (*piVar5 != 2) {
    FUN_00a7f3c0(0x20,0x6d,2,".\\crypto\\bio\\bss_file.c",0xae);
    ___security_check_cookie_4();
    return;
  }
  FUN_00a7f3c0(0x20,0x6d,0x80,".\\crypto\\bio\\bss_file.c",0xac);
  ___security_check_cookie_4();
  return;
}



undefined * FUN_00a94a70(void)

{
  return &DAT_00db75b0;
}



undefined * FUN_00a94ab0(void)

{
  return &DAT_00db7600;
}



undefined * FUN_00a94b00(void)

{
  return &DAT_00db7650;
}



undefined * FUN_00a94b10(void)

{
  return &DAT_00db76a0;
}



undefined * FUN_00a94b50(void)

{
  return &DAT_00db76f0;
}



undefined * FUN_00a94b60(void)

{
  return &DAT_00db7740;
}



undefined * FUN_00a94ba0(void)

{
  return &DAT_00db7790;
}



undefined * FUN_00a94bf0(void)

{
  return &DAT_00db77e0;
}



undefined * FUN_00a94c60(void)

{
  return &DAT_00db782c;
}



undefined * FUN_00a94c70(void)

{
  return &DAT_00db7860;
}



undefined * FUN_00a94c80(void)

{
  return &DAT_00db7894;
}



undefined * FUN_00a94c90(void)

{
  return &DAT_00db78c8;
}



undefined * FUN_00a94ca0(void)

{
  return &DAT_00db78fc;
}



undefined * FUN_00a94cb0(void)

{
  return &DAT_00db7930;
}



undefined * FUN_00a94cc0(void)

{
  return &DAT_00db7964;
}



undefined * FUN_00a94cd0(void)

{
  return &DAT_00db7998;
}



undefined * FUN_00a94e40(void)

{
  return &DAT_00db79cc;
}



undefined * FUN_00a94e50(void)

{
  return &DAT_00db7a00;
}



undefined * FUN_00a94e60(void)

{
  return &DAT_00db7a34;
}



undefined * FUN_00a94e70(void)

{
  return &DAT_00db7a68;
}



undefined * FUN_00a94e80(void)

{
  return &DAT_00db7a9c;
}



undefined * FUN_00a94f10(void)

{
  return &DAT_00db7ad0;
}



undefined * FUN_00a94f20(void)

{
  return &DAT_00db7b04;
}



undefined * FUN_00a94f90(void)

{
  return &DAT_00db7b38;
}



undefined * FUN_00a94fa0(void)

{
  return &DAT_00db7b6c;
}



undefined * FUN_00a94fb0(void)

{
  return &DAT_00db7ba0;
}



undefined * FUN_00a957c0(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db7bf0;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db7c24;
  }
  return puVar1;
}



undefined * FUN_00a957e0(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db7c58;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db7c8c;
  }
  return puVar1;
}



undefined * FUN_00a95800(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db7cc0;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db7cf4;
  }
  return puVar1;
}



undefined * FUN_00a95820(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db7d28;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db7d5c;
  }
  return puVar1;
}



undefined * FUN_00a95840(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db7d90;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db7dc4;
  }
  return puVar1;
}



undefined * FUN_00a95860(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db7df8;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db7e2c;
  }
  return puVar1;
}



undefined * FUN_00a95880(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db7e60;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db7e94;
  }
  return puVar1;
}



undefined * FUN_00a958a0(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db7ec8;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db7efc;
  }
  return puVar1;
}



undefined * FUN_00a958c0(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db7f30;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db7f64;
  }
  return puVar1;
}



undefined * FUN_00a958e0(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db7f98;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db7fcc;
  }
  return puVar1;
}



undefined * FUN_00a95900(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db8000;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db8034;
  }
  return puVar1;
}



undefined * FUN_00a95920(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db8068;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db809c;
  }
  return puVar1;
}



undefined * FUN_00a95940(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db80d0;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db8104;
  }
  return puVar1;
}



undefined * FUN_00a95960(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db8138;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db816c;
  }
  return puVar1;
}



undefined * FUN_00a95980(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db81a0;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db81d4;
  }
  return puVar1;
}



undefined * FUN_00a959a0(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db8208;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db823c;
  }
  return puVar1;
}



undefined * FUN_00a959c0(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db8270;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db82a4;
  }
  return puVar1;
}



undefined * FUN_00a959e0(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db82d8;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db830c;
  }
  return puVar1;
}



undefined * FUN_00a95a00(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db8340;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db8374;
  }
  return puVar1;
}



undefined * FUN_00a95a20(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db83a8;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db83dc;
  }
  return puVar1;
}



undefined * FUN_00a95a40(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db8410;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db8444;
  }
  return puVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint __fastcall FUN_00a95f50(uint param_1_00,int param_2_00,int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  uint local_8;
  
  iVar1 = *(int *)(param_1 + 0x60);
  local_8 = 0xffffffff;
  uVar4 = 0xffffffff;
  if ((param_2 == param_2_00) && (0x17 < param_1_00)) {
    iVar2 = FUN_00aab930(param_1,(-(uint)(*(int *)(param_1 + 8) != 0) & 0xfffffffb) + 0x18,8,param_2
                        );
    uVar4 = local_8;
    if (0 < iVar2) {
      iVar2 = param_1 + 0x30;
      iVar7 = iVar1 + 0x100;
      iVar3 = FUN_00ab46a0(iVar7,iVar2,*(undefined4 *)(iVar1 + 0x288));
      if (iVar3 == 0) {
        param_2_00 = param_2_00 + 8;
        param_2 = param_2 + 8;
        uVar8 = param_1_00 - 0x18;
        if (*(int *)(param_1 + 8) == 0) {
          if (*(int *)(iVar1 + 0x28c) == 0) {
            iVar3 = FUN_00ab4a30(iVar7,param_2_00,param_2,uVar8);
          }
          else {
            iVar3 = FUN_00ab4eb0(iVar7,param_2_00,param_2,uVar8,*(int *)(iVar1 + 0x28c));
          }
          if (iVar3 == 0) {
            FUN_00ab51e0(iVar7,iVar2,0x10);
            piVar5 = (int *)(param_2_00 + uVar8);
            uVar6 = 0x10;
            iVar2 = iVar2 - (int)piVar5;
            do {
              if (*(int *)(iVar2 + (int)piVar5) != *piVar5) {
                FUN_00a84330(param_2,uVar8);
                uVar4 = local_8;
                break;
              }
              uVar6 = uVar6 - 4;
              piVar5 = piVar5 + 1;
              uVar4 = uVar8;
            } while (3 < uVar6);
          }
        }
        else {
          if (*(int *)(iVar1 + 0x28c) == 0) {
            iVar2 = FUN_00ab4790(iVar7,param_2_00,param_2,uVar8);
          }
          else {
            iVar2 = FUN_00ab4cb0(iVar7,param_2_00,param_2,uVar8,*(int *)(iVar1 + 0x28c));
          }
          if (iVar2 == 0) {
            FUN_00ab51e0(iVar7,param_2 + uVar8,0x10);
            uVar4 = param_1_00;
          }
        }
      }
    }
    local_8 = uVar4;
    *(undefined4 *)(iVar1 + 0xf8) = 0;
    *(undefined4 *)(iVar1 + 0x288) = 0xffffffff;
    uVar4 = local_8;
  }
  return uVar4;
}



undefined * FUN_00a96210(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db8478;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db84ac;
  }
  return puVar1;
}



undefined * FUN_00a96230(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db84e0;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db8514;
  }
  return puVar1;
}



undefined * FUN_00a96250(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db8548;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db857c;
  }
  return puVar1;
}



undefined * FUN_00a96490(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db85b0;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db85e4;
  }
  return puVar1;
}



undefined * FUN_00a964b0(void)

{
  undefined *puVar1;
  
  puVar1 = &DAT_00db8618;
  if ((DAT_032f16d4 & 0x2000000) == 0) {
    puVar1 = &DAT_00db864c;
  }
  return puVar1;
}



undefined4 __fastcall FUN_00a96552(undefined4 param_1,int param_2)

{
  int unaff_ESI;
  uint param_5;
  void *param_6;
  
  if (((param_5 & 1) == 0) && (param_5 - 4 < 0xd)) {
    if (*(int *)(param_2 + 8) != 0) {
      if (param_6 != (void *)0x0) {
        return 0;
      }
      if (*(int *)(param_2 + 8) != 0) goto LAB_00a9659f;
    }
    if (param_6 != (void *)0x0) {
      *(undefined4 *)(unaff_ESI + 0xfc) = 1;
      _memcpy((void *)(param_2 + 0x30),param_6,param_5);
LAB_00a9659f:
      *(uint *)(unaff_ESI + 0x108) = param_5;
      return 1;
    }
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a96710(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  int *piVar6;
  int local_20;
  int local_1c;
  undefined4 local_18;
  undefined4 local_14;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_20;
  iVar1 = *(int *)(param_1 + 0x60);
  local_1c = param_1;
  local_20 = param_2;
  iVar2 = iVar1 + 0x110;
  if (((*(int *)(iVar1 + 0xf8) == 0) && (*(int *)(iVar1 + 0xf4) == 0)) ||
     ((*(int *)(param_1 + 8) == 0 && (*(int *)(iVar1 + 0xfc) == 0)))) {
LAB_00a96757:
    ___security_check_cookie_4();
    return;
  }
  if (param_2 == 0) {
    if (param_3 == 0) {
      iVar2 = FUN_00ab5270(iVar2,param_1 + 0x20,0xf - *(int *)(iVar1 + 0x104),param_4);
      if (iVar2 == 0) {
        *(undefined4 *)(iVar1 + 0x100) = 1;
        ___security_check_cookie_4();
        return;
      }
    }
    else if ((*(int *)(iVar1 + 0x100) != 0) || (param_4 == 0)) {
      FUN_00ab52d0(iVar2,param_3,param_4);
      ___security_check_cookie_4();
      return;
    }
    goto LAB_00a96757;
  }
  if (param_3 == 0) {
    ___security_check_cookie_4();
    return;
  }
  if (*(int *)(iVar1 + 0x100) == 0) {
    iVar3 = FUN_00ab5270(iVar2,param_1 + 0x20,0xf - *(int *)(iVar1 + 0x104),param_4);
    if (iVar3 != 0) goto LAB_00a96878;
    *(undefined4 *)(iVar1 + 0x100) = 1;
  }
  iVar3 = *(int *)(iVar1 + 0x140);
  if (*(int *)(local_1c + 8) != 0) {
    if (iVar3 == 0) {
      iVar2 = FUN_00ab5390(iVar2,param_3,local_20,param_4);
    }
    else {
      iVar2 = FUN_00ab5840(iVar2,param_3,local_20,param_4,iVar3);
    }
    if (iVar2 == 0) {
      *(undefined4 *)(iVar1 + 0xfc) = 1;
      ___security_check_cookie_4();
      return;
    }
LAB_00a96878:
    ___security_check_cookie_4();
    return;
  }
  local_18 = 0xffffffff;
  if (iVar3 == 0) {
    iVar3 = FUN_00ab55f0(iVar2,param_3,local_20,param_4);
  }
  else {
    iVar3 = FUN_00ab5a40(iVar2,param_3,local_20,param_4,iVar3);
  }
  if ((iVar3 == 0) &&
     (iVar2 = FUN_00ab5bf0(iVar2,&local_14,*(undefined4 *)(iVar1 + 0x108)), iVar2 != 0)) {
    piVar5 = (int *)(local_1c + 0x30);
    piVar6 = &local_14;
    for (uVar4 = *(uint *)(iVar1 + 0x108); 3 < uVar4; uVar4 = uVar4 - 4) {
      if (*piVar6 != *piVar5) goto LAB_00a96955;
      piVar5 = piVar5 + 1;
      piVar6 = piVar6 + 1;
    }
    if (((uVar4 == 0) ||
        ((*(char *)piVar5 == *(char *)piVar6 &&
         ((uVar4 < 2 ||
          ((*(char *)((int)piVar5 + 1) == *(char *)((int)piVar6 + 1) &&
           ((uVar4 < 3 || (*(char *)((int)piVar5 + 2) == *(char *)((int)piVar6 + 2))))))))))) &&
       (param_4 != -1)) goto LAB_00a96963;
  }
LAB_00a96955:
  FUN_00a84330(local_20,param_4);
LAB_00a96963:
  *(undefined4 *)(iVar1 + 0xf8) = 0;
  *(undefined4 *)(iVar1 + 0xfc) = 0;
  *(undefined4 *)(iVar1 + 0x100) = 0;
  ___security_check_cookie_4();
  return;
}



undefined * FUN_00a96b50(void)

{
  return &DAT_00db87d0;
}



undefined * FUN_00a96b60(void)

{
  return &DAT_00db8804;
}



undefined * FUN_00a96b70(void)

{
  return &DAT_00db8838;
}



undefined * FUN_00a96b80(void)

{
  return &DAT_00db886c;
}



undefined * FUN_00a96d80(void)

{
  return &DAT_00db88a0;
}



undefined * FUN_00a96d90(void)

{
  return &DAT_00db88d4;
}



undefined * FUN_00a96da0(void)

{
  return &DAT_00db8908;
}



undefined * FUN_00a96db0(void)

{
  return &DAT_00db893c;
}



undefined * FUN_00a96fe0(void)

{
  return &DAT_00db8970;
}



undefined * FUN_00a96ff0(void)

{
  return &DAT_00db89a4;
}



undefined * FUN_00a97000(void)

{
  return &DAT_00db89d8;
}



undefined * FUN_00a97010(void)

{
  return &DAT_00db8a0c;
}



undefined * FUN_00a97020(void)

{
  return &DAT_00db8a40;
}



undefined * FUN_00a97030(void)

{
  return &DAT_00db8a74;
}



undefined4 FUN_00a970c0(int param_1)

{
  if (param_1 == 0x3a) {
    return 0x80;
  }
  if (param_1 == 0x78) {
    return 0x40;
  }
  if (param_1 == 0xa0) {
    return 0x28;
  }
  FUN_00a7f3c0(6,0x6d,0x6c,".\\crypto\\evp\\e_rc2.c",0xa3);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a97110(undefined4 param_1,int param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  undefined4 local_18;
  undefined local_14 [16];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_18;
  local_18 = 0;
  if (param_2 == 0) {
LAB_00a971e7:
    ___security_check_cookie_4();
    return;
  }
  uVar1 = FUN_00a82a40(param_1);
  if (0x10 < uVar1) {
    FUN_00a7fd60(".\\crypto\\evp\\e_rc2.c",0xb3,"l <= sizeof(iv)");
  }
  uVar2 = FUN_00aaae30(param_2,&local_18,local_14,uVar1);
  if (uVar2 == uVar1) {
    iVar3 = FUN_00a970c0(local_18);
    if (iVar3 != 0) {
      if (0 < (int)uVar2) {
        iVar4 = FUN_00aabb10(param_1,0,0,0,local_14,0xffffffff);
        if (iVar4 == 0) goto LAB_00a97180;
      }
      FUN_00aab930(param_1,3,iVar3,0);
      FUN_00aabe70(param_1,(int)(iVar3 + (iVar3 >> 0x1f & 7U)) >> 3);
      goto LAB_00a971e7;
    }
  }
LAB_00a97180:
  ___security_check_cookie_4();
  return;
}



undefined * FUN_00a97470(void)

{
  return &DAT_00db8ad0;
}



undefined * FUN_00a97480(void)

{
  return &DAT_00db8b04;
}



undefined * FUN_00a97490(void)

{
  return &DAT_00db8b38;
}



undefined * FUN_00a974a0(void)

{
  return &DAT_00db8b6c;
}



undefined * FUN_00a97680(void)

{
  return &DAT_00db8ba0;
}



undefined * FUN_00a97690(void)

{
  return &DAT_00db8bd4;
}



undefined * FUN_00a976a0(void)

{
  return &DAT_00db8c08;
}



undefined * FUN_00a976b0(void)

{
  return &DAT_00db8c3c;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a976c0(int param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  uint uVar1;
  undefined local_d8 [212];
  undefined4 uStack_4;
  
  uStack_4 = 0xa976ca;
  if (param_4 == 0) {
    uVar1 = FUN_00a925d0(param_1);
    if ((uVar1 & 0xf0007) != 4) {
      uVar1 = FUN_00a925d0(param_1);
      if ((uVar1 & 0xf0007) != 3) {
        FUN_00ac2b70(param_2,local_d8);
        FUN_00ac2d40(local_d8,*(undefined4 *)(param_1 + 0x60));
        FUN_00a84330(local_d8,0xd8);
        return 1;
      }
    }
  }
  FUN_00ac2b70(param_2,*(undefined4 *)(param_1 + 0x60));
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a977e0(int param_1,void *param_2,void *param_3,size_t param_4)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  size_t _Size;
  int iVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  int local_18;
  int local_14 [4];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_18;
  iVar2 = *(int *)(param_1 + 0x60);
  _Size = *(size_t *)(iVar2 + 0x51c);
  local_18 = iVar2;
  if ((_Size != 0xffffffff) && (param_4 != _Size + 0x10)) {
LAB_00a97822:
    ___security_check_cookie_4();
    return;
  }
  if (*(int *)(param_1 + 8) == 0) {
    FUN_00ac2e00(iVar2,param_4,param_3,param_2);
    if (_Size == 0xffffffff) {
      FUN_00aa9db0(iVar2 + 0x4c0,param_2,param_4);
    }
    else {
      puVar5 = (undefined4 *)(iVar2 + 0x4c0);
      FUN_00aa9db0(puVar5,param_2,_Size);
      FUN_00aa9eb0(local_14,puVar5);
      puVar6 = (undefined4 *)(iVar2 + 0x464);
      for (iVar2 = 0x17; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar5 = *puVar6;
        puVar6 = puVar6 + 1;
        puVar5 = puVar5 + 1;
      }
      iVar2 = local_18 + 0x4c0;
      FUN_00aa9db0(iVar2,local_14,0x10);
      FUN_00aa9eb0(local_14,iVar2);
      piVar1 = local_14;
      uVar3 = 0x10;
      iVar4 = _Size - (int)piVar1;
      do {
        if (*(int *)((int)param_2 + iVar4 + (int)piVar1) != *piVar1) goto LAB_00a97822;
        uVar3 = uVar3 - 4;
        piVar1 = piVar1 + 1;
        iVar2 = local_18;
      } while (3 < uVar3);
    }
  }
  else {
    if (_Size == 0xffffffff) {
      _Size = param_4;
    }
    FUN_00aa9db0(iVar2 + 0x4c0,param_3,_Size);
    if (_Size == param_4) {
      FUN_00ac2e00(iVar2,param_4,param_3,param_2);
    }
    else {
      if (param_3 != param_2) {
        _memcpy(param_2,param_3,_Size);
      }
      iVar4 = _Size + (int)param_2;
      FUN_00aa9eb0(iVar4,(undefined4 *)(iVar2 + 0x4c0));
      puVar5 = (undefined4 *)(iVar2 + 0x464);
      puVar6 = (undefined4 *)(iVar2 + 0x4c0);
      for (iVar2 = 0x17; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar6 = *puVar5;
        puVar5 = puVar5 + 1;
        puVar6 = puVar6 + 1;
      }
      iVar2 = local_18 + 0x4c0;
      FUN_00aa9db0(iVar2,iVar4,0x10);
      FUN_00aa9eb0(iVar4,iVar2);
      FUN_00ac2e00(local_18,param_4,param_2,param_2);
      iVar2 = local_18;
    }
  }
  *(undefined4 *)(iVar2 + 0x51c) = 0xffffffff;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a979a0(int param_1,int param_2,size_t param_3,void *param_4)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  byte local_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_44;
  iVar1 = *(int *)(param_1 + 0x60);
  if (param_2 == 0x16) {
    uVar2 = (uint)CONCAT11(*(undefined *)((int)param_4 + (param_3 - 2)),
                           *(undefined *)((int)param_4 + (param_3 - 1)));
    if (*(int *)(param_1 + 8) == 0) {
      uVar2 = uVar2 - 0x10;
      *(char *)((int)param_4 + (param_3 - 2)) = (char)(uVar2 >> 8);
      *(char *)((int)param_4 + (param_3 - 1)) = (char)uVar2;
    }
    *(uint *)(iVar1 + 0x51c) = uVar2;
    puVar4 = (undefined4 *)(iVar1 + 0x408);
    puVar5 = (undefined4 *)(iVar1 + 0x4c0);
    for (iVar3 = 0x17; iVar3 != 0; iVar3 = iVar3 + -1) {
      *puVar5 = *puVar4;
      puVar4 = puVar4 + 1;
      puVar5 = puVar5 + 1;
    }
    FUN_00aa9db0((undefined4 *)(iVar1 + 0x4c0),param_4,param_3);
    ___security_check_cookie_4();
    return;
  }
  if (param_2 != 0x17) {
    ___security_check_cookie_4();
    return;
  }
  _memset(local_44,0,0x40);
  if ((int)param_3 < 0x41) {
    _memcpy(local_44,param_4,param_3);
  }
  else {
    iVar3 = iVar1 + 0x408;
    FUN_00aaf190(iVar3);
    FUN_00aa9db0(iVar3,param_4,param_3);
    FUN_00aa9eb0(local_44,iVar3);
  }
  uVar2 = 0;
  do {
    local_44[uVar2] = local_44[uVar2] ^ 0x36;
    uVar2 = uVar2 + 1;
  } while (uVar2 < 0x40);
  FUN_00aaf190(iVar1 + 0x408);
  FUN_00aa9db0(iVar1 + 0x408,local_44,0x40);
  uVar2 = 0;
  do {
    local_44[uVar2] = local_44[uVar2] ^ 0x6a;
    uVar2 = uVar2 + 1;
  } while (uVar2 < 0x40);
  FUN_00aaf190(iVar1 + 0x464);
  FUN_00aa9db0(iVar1 + 0x464,local_44,0x40);
  ___security_check_cookie_4();
  return;
}



undefined * FUN_00a97b20(void)

{
  return &DAT_03242bdc;
}



undefined * FUN_00a97b30(void)

{
  return &DAT_00db8c70;
}



undefined * FUN_00a97b40(void)

{
  return &DAT_00db8ca4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a97de0(int param_1,int param_2,int param_3,uint param_4)

{
  int iVar1;
  byte bVar2;
  uint uVar3;
  uint uVar4;
  undefined4 uStack_4;
  
  uStack_4 = 0xa97dea;
  if (param_4 != 0) {
    uVar4 = 0;
    do {
      bVar2 = (byte)uVar4 & 7;
      uVar3 = uVar4 >> 3;
      uStack_4 = CONCAT13(uStack_4._3_1_,
                          CONCAT12(-(((byte)(1 << (7 - bVar2 & 0x1f)) & *(byte *)(uVar3 + param_3))
                                    != 0),(undefined2)uStack_4)) & 0xff80ffff;
      iVar1 = *(int *)(param_1 + 0x60);
      FUN_00ac55e0((int)&uStack_4 + 2,(int)&uStack_4 + 3,1,1,iVar1,iVar1 + 0x80,iVar1 + 0x100,
                   param_1 + 0x20,*(undefined4 *)(param_1 + 8));
      uVar4 = uVar4 + 1;
      *(byte *)(uVar3 + param_2) =
           ~(byte)(0x80 >> bVar2) & *(byte *)(uVar3 + param_2) | (uStack_4._3_1_ & 0x80) >> bVar2;
    } while (uVar4 < param_4);
  }
  return 1;
}



undefined * FUN_00a97f40(void)

{
  return &DAT_00db8cd8;
}



undefined * FUN_00a97f50(void)

{
  return &DAT_00db8d0c;
}



undefined * FUN_00a97f60(void)

{
  return &DAT_00db8d40;
}



undefined * FUN_00a97f70(void)

{
  return &DAT_00db8da8;
}



undefined * FUN_00a97f80(void)

{
  return &DAT_00db8ddc;
}



undefined * FUN_00a97f90(void)

{
  return &DAT_00db8e10;
}



undefined * FUN_00a97fa0(void)

{
  return &DAT_00db8e78;
}



undefined * FUN_00a97fb0(void)

{
  return &DAT_00db8eac;
}



undefined * FUN_00a980b0(void)

{
  return &DAT_00db8d74;
}



undefined * FUN_00a980c0(void)

{
  return &DAT_00db8e44;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a982c0(int param_1,int param_2,int param_3,uint param_4)

{
  byte bVar1;
  uint uVar2;
  uint uVar3;
  byte local_6;
  byte local_5;
  uint local_4;
  
  local_4 = 0x8000000;
  if (param_4 < 0x8000000) {
    local_4 = param_4;
  }
  uVar2 = local_4;
  if (param_4 != 0) {
    do {
      if (param_4 < uVar2) {
        return 1;
      }
      uVar3 = 0;
      if ((uVar2 & 0x1fffffff) != 0) {
        do {
          bVar1 = (byte)uVar3 & 7;
          uVar2 = uVar3 >> 3;
          local_6 = -(((byte)(1 << (7 - bVar1 & 0x1f)) & *(byte *)(uVar2 + param_3)) != 0) & 0x80;
          FUN_00ac67e0(&local_6,&local_5,1,1,*(undefined4 *)(param_1 + 0x60),param_1 + 0x20,
                       *(undefined4 *)(param_1 + 8));
          uVar3 = uVar3 + 1;
          *(byte *)(uVar2 + param_2) =
               ~(byte)(0x80 >> bVar1) & *(byte *)(uVar2 + param_2) | (local_5 & 0x80) >> bVar1;
          uVar2 = local_4;
        } while (uVar3 < local_4 * 8);
      }
      param_3 = param_3 + uVar2;
      param_4 = param_4 - uVar2;
      param_2 = param_2 + uVar2;
      if (param_4 < uVar2) {
        uVar2 = param_4;
        local_4 = param_4;
      }
    } while (param_4 != 0);
  }
  return 1;
}



undefined * FUN_00a98460(void)

{
  return &DAT_00db8ee0;
}



undefined * FUN_00a98470(void)

{
  return &DAT_00db8f14;
}



undefined * FUN_00a98480(void)

{
  return &DAT_00db8f48;
}



undefined * FUN_00a98490(void)

{
  return &DAT_00db8f7c;
}



undefined * FUN_00a984a0(void)

{
  return &DAT_00db8fb0;
}



undefined * FUN_00a984b0(void)

{
  return &DAT_00db8fe4;
}



undefined * FUN_00a98520(void)

{
  return &DAT_00db9018;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a98620(int *param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 local_10 [3];
  undefined4 uStack_4;
  
  uStack_4 = 0xa9862a;
  iVar4 = 0;
  if (*param_1 == 0) {
    return 0;
  }
  FUN_00a7f190();
  FUN_00a7fdc0(9,0x1e,".\\crypto\\engine\\eng_table.c",0x102);
  if (*param_1 != 0) {
    local_10[0] = param_2;
    iVar1 = FUN_00a84ed0(*param_1,local_10);
    if (iVar1 != 0) {
      if (((*(int *)(iVar1 + 8) == 0) || (iVar4 = FUN_00a8f070(*(int *)(iVar1 + 8)), iVar4 == 0)) &&
         (*(int *)(iVar1 + 0xc) == 0)) {
        iVar4 = FUN_00a80ee0(*(undefined4 *)(iVar1 + 4),0);
        iVar3 = 1;
        while (iVar4 != 0) {
          if (((0 < *(int *)(iVar4 + 0x5c)) || ((DAT_032ed508 & 1) == 0)) &&
             (iVar2 = FUN_00a8f070(iVar4), iVar2 != 0)) {
            if ((*(int *)(iVar1 + 8) != iVar4) && (iVar3 = FUN_00a8f070(iVar4), iVar3 != 0)) {
              if (*(int *)(iVar1 + 8) != 0) {
                FUN_00a8f0a0(*(int *)(iVar1 + 8),0);
              }
              *(int *)(iVar1 + 8) = iVar4;
            }
            break;
          }
          iVar4 = FUN_00a80ee0(*(undefined4 *)(iVar1 + 4),iVar3);
          iVar3 = iVar3 + 1;
        }
      }
      else {
        iVar4 = *(int *)(iVar1 + 8);
      }
      *(undefined4 *)(iVar1 + 0xc) = 1;
    }
  }
  FUN_00a7fdc0(10,0x1e,".\\crypto\\engine\\eng_table.c",0x148);
  FUN_00a7f1c0();
  return iVar4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a98770(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 local_8;
  undefined4 local_4;
  
  local_8 = param_2;
  local_4 = param_3;
  FUN_00a84a80(param_1,&LAB_00a98750,&local_8);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a987b0(undefined4 param_1)

{
  int iVar1;
  int *piVar2;
  undefined4 *local_70;
  undefined4 local_6c [26];
  undefined4 uStack_4;
  
  uStack_4 = 0xa987ba;
  local_70 = local_6c;
  local_6c[0] = param_1;
  if (DAT_032ed514 != 0) {
    iVar1 = FUN_00a81100(DAT_032ed514,local_6c);
    if (-1 < iVar1) {
      iVar1 = FUN_00a80ee0(DAT_032ed514,iVar1);
      return iVar1;
    }
  }
  piVar2 = (int *)FUN_00a877b0(&local_70,&PTR_DAT_03242c10,6,4,&LAB_00afc130);
  if ((piVar2 == (int *)0x0) || (iVar1 = *piVar2, iVar1 == 0)) {
    iVar1 = 0;
  }
  return iVar1;
}



void FUN_00a98830(int param_1)

{
  if ((param_1 != 0) && ((*(byte *)(param_1 + 4) & 1) != 0)) {
    FUN_00a85120();
    return;
  }
  return;
}



void FUN_00a98850(int *param_1)

{
  code *pcVar1;
  
  if (param_1 != (int *)0x0) {
    if ((*param_1 != 0) && (pcVar1 = *(code **)(*param_1 + 0x10), pcVar1 != (code *)0x0)) {
      (*pcVar1)(param_1);
    }
    if (param_1[2] != 0) {
      FUN_00a816d0(param_1[2]);
    }
    if (param_1[3] != 0) {
      FUN_00a816d0(param_1[3]);
    }
    if (param_1[1] != 0) {
      FUN_00a8f1b0(param_1[1]);
    }
    FUN_00a85120(param_1);
  }
  return;
}



int FUN_00a988b0(int **param_1,int param_2,uint param_3,undefined4 param_4,undefined4 param_5,
                undefined4 param_6)

{
  int *piVar1;
  int iVar2;
  
  if (((param_1 != (int **)0x0) && (piVar1 = *param_1, piVar1 != (int *)0x0)) &&
     ((code *)piVar1[0x19] != (code *)0x0)) {
    if ((param_2 == -1) || (*piVar1 == param_2)) {
      if (param_1[4] != (int *)0x0) {
        if ((param_3 != 0xffffffff) && ((param_3 & (uint)param_1[4]) == 0)) {
          FUN_00a7f3c0(6,0x89,0x94,".\\crypto\\evp\\pmeth_lib.c",0x194);
          return -1;
        }
        iVar2 = (*(code *)piVar1[0x19])(param_1,param_4,param_5,param_6);
        if (iVar2 == -2) {
          FUN_00a7f3c0(6,0x89,0x93,".\\crypto\\evp\\pmeth_lib.c",0x19b);
        }
        return iVar2;
      }
      FUN_00a7f3c0(6,0x89,0x95,".\\crypto\\evp\\pmeth_lib.c",0x18e);
    }
    return -1;
  }
  FUN_00a7f3c0(6,0x89,0x93,".\\crypto\\evp\\pmeth_lib.c",0x186);
  return -2;
}



undefined4 FUN_00a989a0(int param_1)

{
  return *(undefined4 *)(param_1 + 8);
}



int * __fastcall FUN_00a989b0(int param_1_00,int param_2,int param_1)

{
  int iVar1;
  int *piVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  if (param_1_00 == -1) {
    if (param_2 == 0) {
      return (int *)0x0;
    }
    if (*(int **)(param_2 + 0xc) == (int *)0x0) {
      return (int *)0x0;
    }
    param_1_00 = **(int **)(param_2 + 0xc);
  }
  if ((param_2 != 0) && (*(int *)(param_2 + 0x10) != 0)) {
    param_1 = *(int *)(param_2 + 0x10);
  }
  if (param_1 == 0) {
    param_1 = FUN_00a86c80(param_1_00);
  }
  else {
    iVar1 = FUN_00a8f130(param_1);
    if (iVar1 == 0) {
      FUN_00a7f3c0(6,0x9d,0x26,".\\crypto\\evp\\pmeth_lib.c",0x91);
      return (int *)0x0;
    }
  }
  if (param_1 == 0) {
    iVar1 = FUN_00a987b0(param_1_00);
  }
  else {
    iVar1 = FUN_00a86d10(param_1);
  }
  if (iVar1 == 0) {
    uVar4 = 0xa4;
    uVar3 = 0x9c;
  }
  else {
    piVar2 = (int *)FUN_00a84f80(0x28,".\\crypto\\evp\\pmeth_lib.c",0xa8);
    if (piVar2 != (int *)0x0) {
      piVar2[1] = param_1;
      *piVar2 = iVar1;
      piVar2[4] = 0;
      piVar2[2] = param_2;
      piVar2[3] = 0;
      piVar2[7] = 0;
      if (param_2 != 0) {
        FUN_00a7fe40(param_2 + 8,1,10,".\\crypto\\evp\\pmeth_lib.c",0xb9);
      }
      piVar2[5] = 0;
      if ((*(code **)(iVar1 + 8) != (code *)0x0) &&
         (iVar1 = (**(code **)(iVar1 + 8))(piVar2), iVar1 < 1)) {
        FUN_00a98850(piVar2);
        return (int *)0x0;
      }
      return piVar2;
    }
    if (param_1 != 0) {
      FUN_00a8f1b0(param_1);
    }
    uVar4 = 0xaf;
    uVar3 = 0x41;
  }
  FUN_00a7f3c0(6,0x9d,uVar3,".\\crypto\\evp\\pmeth_lib.c",uVar4);
  return (int *)0x0;
}



int * FUN_00a98af0(int param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  if ((param_1 != 0) && (*(undefined4 **)(param_1 + 0xc) != (undefined4 *)0x0)) {
    uVar3 = **(undefined4 **)(param_1 + 0xc);
    if (*(int *)(param_1 + 0x10) != 0) {
      param_2 = *(int *)(param_1 + 0x10);
    }
    if (param_2 == 0) {
      param_2 = FUN_00a86c80(uVar3);
    }
    else {
      iVar1 = FUN_00a8f130(param_2);
      if (iVar1 == 0) {
        FUN_00a7f3c0(6,0x9d,0x26,".\\crypto\\evp\\pmeth_lib.c",0x91);
        return (int *)0x0;
      }
    }
    if (param_2 == 0) {
      iVar1 = FUN_00a987b0(uVar3);
    }
    else {
      iVar1 = FUN_00a86d10(param_2);
    }
    if (iVar1 == 0) {
      uVar4 = 0xa4;
      uVar3 = 0x9c;
    }
    else {
      piVar2 = (int *)FUN_00a84f80(0x28,".\\crypto\\evp\\pmeth_lib.c",0xa8);
      if (piVar2 != (int *)0x0) {
        piVar2[2] = param_1;
        piVar2[1] = param_2;
        *piVar2 = iVar1;
        piVar2[4] = 0;
        piVar2[3] = 0;
        piVar2[7] = 0;
        FUN_00a7fe40(param_1 + 8,1,10,".\\crypto\\evp\\pmeth_lib.c",0xb9);
        piVar2[5] = 0;
        if (*(code **)(iVar1 + 8) != (code *)0x0) {
          iVar1 = (**(code **)(iVar1 + 8))(piVar2);
          if (iVar1 < 1) {
            FUN_00a98850(piVar2);
            return (int *)0x0;
          }
        }
        return piVar2;
      }
      if (param_2 != 0) {
        FUN_00a8f1b0(param_2);
      }
      uVar4 = 0xaf;
      uVar3 = 0x41;
    }
    FUN_00a7f3c0(6,0x9d,uVar3,".\\crypto\\evp\\pmeth_lib.c",uVar4);
    return (int *)0x0;
  }
  return (int *)0x0;
}



void FUN_00a98c30(undefined4 param_1,undefined4 param_2)

{
  FUN_00a989b0(param_2);
  return;
}



int * FUN_00a98c50(int *param_1)

{
  int iVar1;
  int *piVar2;
  
  if ((*param_1 == 0) || (*(int *)(*param_1 + 0xc) == 0)) {
    return (int *)0x0;
  }
  if ((param_1[1] != 0) && (iVar1 = FUN_00a8f130(param_1[1]), iVar1 == 0)) {
    FUN_00a7f3c0(6,0x9c,0x26,".\\crypto\\evp\\pmeth_lib.c",0x13c);
    return (int *)0x0;
  }
  piVar2 = (int *)FUN_00a84f80(0x28,".\\crypto\\evp\\pmeth_lib.c",0x140);
  if (piVar2 != (int *)0x0) {
    *piVar2 = *param_1;
    piVar2[1] = param_1[1];
    if (param_1[2] != 0) {
      FUN_00a7fe40(param_1[2] + 8,1,10,".\\crypto\\evp\\pmeth_lib.c",0x14a);
    }
    piVar2[2] = param_1[2];
    if (param_1[3] != 0) {
      FUN_00a7fe40(param_1[3] + 8,1,10,".\\crypto\\evp\\pmeth_lib.c",0x14f);
    }
    piVar2[3] = param_1[3];
    piVar2[5] = 0;
    piVar2[6] = 0;
    piVar2[4] = param_1[4];
    iVar1 = (**(code **)(*param_1 + 0xc))(piVar2,param_1);
    if (0 < iVar1) {
      return piVar2;
    }
    FUN_00a98850(piVar2);
  }
  return (int *)0x0;
}



undefined ** FUN_00a98d50(void)

{
  return &PTR_LAB_03242c28;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_00a98db0(int param_1,int param_2,double param_3)

{
  byte *pbVar1;
  byte bVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  uint local_48;
  int local_44;
  int local_40 [2];
  undefined4 local_38;
  int local_34;
  undefined local_30 [24];
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_48;
  local_44 = param_1;
  if (DAT_032ed964 == 0) {
    local_48 = 0;
    uVar7 = local_48;
  }
  else {
    FUN_00a7f970(local_40);
    FUN_00a7fdc0(5,0x13,".\\crypto\\rand\\md_rand.c",0xdd);
    iVar3 = FUN_00a7f9b0(&DAT_032ed518,local_40);
    uVar7 = (uint)(iVar3 == 0);
    local_48 = uVar7;
    FUN_00a7fdc0(6,0x13,".\\crypto\\rand\\md_rand.c",0xdf);
    if (uVar7 != 0) goto LAB_00a98e42;
  }
  FUN_00a7fdc0(9,0x12,".\\crypto\\rand\\md_rand.c",0xe4);
LAB_00a98e42:
  iVar3 = DAT_032ed94c;
  local_38 = DAT_032ed950;
  local_34 = DAT_032ed954;
  local_18 = DAT_032ed934;
  DAT_032ed94c = DAT_032ed94c + param_2;
  local_14 = DAT_032ed938;
  local_10 = DAT_032ed93c;
  local_c = DAT_032ed940;
  local_8 = DAT_032ed944;
  if (DAT_032ed94c < 0x3ff) {
    if ((DAT_032ed948 < 0x3ff) && (DAT_032ed948 < DAT_032ed94c)) {
      DAT_032ed948 = DAT_032ed94c;
    }
  }
  else {
    iVar6 = (int)((ulonglong)((longlong)DAT_032ed94c * 0x7fdff7fd) >> 0x20) - DAT_032ed94c;
    DAT_032ed94c = DAT_032ed94c + ((iVar6 >> 9) - (iVar6 >> 0x1f)) * 0x3ff;
    DAT_032ed948 = 0x3ff;
  }
  DAT_032ed954 = DAT_032ed954 + (uint)(0 < param_2 % 0x14) + param_2 / 0x14;
  if (uVar7 == 0) {
    FUN_00a7fdc0(10,0x12,".\\crypto\\rand\\md_rand.c",0x104);
  }
  FUN_00a91330(local_30);
  if (0 < param_2) {
    local_40[0] = (param_2 - 1U) / 0x14 + 1;
    do {
      iVar6 = param_2;
      if (0x14 < param_2) {
        iVar6 = 0x14;
      }
      uVar4 = FUN_00a924c0(0);
      FUN_00a91380(local_30,uVar4);
      FUN_00a91530(local_30,&local_18,0x14);
      iVar5 = iVar6 + -0x3ff + iVar3;
      if (iVar5 < 1) {
        FUN_00a91530(local_30,&DAT_032ed520 + iVar3,iVar6);
      }
      else {
        FUN_00a91530(local_30,&DAT_032ed520 + iVar3,iVar6 - iVar5);
        FUN_00a91530(local_30,&DAT_032ed520,iVar5);
      }
      iVar5 = local_44;
      FUN_00a91530(local_30,local_44,iVar6);
      FUN_00a91530(local_30,&local_38,8);
      FUN_00a91540(local_30,&local_18,0);
      local_34 = local_34 + 1;
      local_44 = iVar5 + iVar6;
      iVar5 = 0;
      if (0 < iVar6) {
        do {
          (&DAT_032ed520)[iVar3] = (&DAT_032ed520)[iVar3] ^ *(byte *)((int)&local_18 + iVar5);
          iVar3 = iVar3 + 1;
          if (0x3fe < iVar3) {
            iVar3 = 0;
          }
          iVar5 = iVar5 + 1;
        } while (iVar5 < iVar6);
      }
      param_2 = param_2 + -0x14;
      local_40[0] = local_40[0] + -1;
    } while (local_40[0] != 0);
    local_40[0] = 0;
    uVar7 = local_48;
  }
  FUN_00a915c0(local_30);
  if (uVar7 == 0) {
    FUN_00a7fdc0(9,0x12,".\\crypto\\rand\\md_rand.c",0x137);
  }
  iVar3 = 0;
  do {
    *(byte *)((int)&DAT_032ed934 + iVar3) =
         *(byte *)((int)&DAT_032ed934 + iVar3) ^ *(byte *)((int)&local_18 + iVar3);
    bVar2 = *(byte *)((int)&local_18 + iVar3 + 2);
    pbVar1 = (byte *)((int)&DAT_032ed934 + iVar3 + 1);
    *pbVar1 = *pbVar1 ^ *(byte *)((int)&local_18 + iVar3 + 1);
    pbVar1 = (byte *)((int)&DAT_032ed934 + iVar3 + 2);
    *pbVar1 = *pbVar1 ^ bVar2;
    bVar2 = *(byte *)((int)&local_14 + iVar3);
    pbVar1 = (byte *)((int)&DAT_032ed934 + iVar3 + 3);
    *pbVar1 = *pbVar1 ^ *(byte *)((int)&local_18 + iVar3 + 3);
    *(byte *)((int)&DAT_032ed938 + iVar3) = *(byte *)((int)&DAT_032ed938 + iVar3) ^ bVar2;
    iVar3 = iVar3 + 5;
  } while (iVar3 < 0x14);
  if (_DAT_032ed958 < 32.0 != NAN(_DAT_032ed958)) {
    _DAT_032ed958 = _DAT_032ed958 + param_3;
  }
  if (uVar7 == 0) {
    FUN_00a7fdc0(10,0x12,".\\crypto\\rand\\md_rand.c",0x142);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void __thiscall FUN_00a99140(undefined *param_1_00,int param_1,int param_3)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int local_40;
  int local_3c;
  undefined local_38 [24];
  int local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_40;
  if (0 < param_1) {
    FUN_00a91330();
    FUN_00a7fdc0(9,0x12,".\\crypto\\rand\\md_rand.c",0x180);
    FUN_00a7fdc0(9,0x13,".\\crypto\\rand\\md_rand.c",0x183);
    FUN_00a7f970(&DAT_032ed518);
    FUN_00a7fdc0(10,0x13,".\\crypto\\rand\\md_rand.c",0x185);
    DAT_032ed964 = 1;
    if (DAT_032ed960 == 0) {
      FUN_00ac9650();
      DAT_032ed960 = 1;
    }
    if (_DAT_032ed958 < 32.0) {
      local_40 = 0;
      _DAT_032ed958 = _DAT_032ed958 - (double)param_1;
      if (_DAT_032ed958 < 0.0 != NAN(_DAT_032ed958)) {
        _DAT_032ed958 = 0.0;
      }
    }
    else {
      local_40 = 1;
    }
    if (DAT_032ed968 == 0) {
      iVar3 = 0x34;
      do {
        FUN_00a98db0("....................",0x14,0);
        iVar3 = iVar3 + -1;
      } while (iVar3 != 0);
      if (local_40 != 0) {
        DAT_032ed968 = 1;
      }
    }
    iVar4 = DAT_032ed94c;
    iVar3 = DAT_032ed948;
    local_20 = DAT_032ed950;
    local_1c = DAT_032ed954;
    local_18 = DAT_032ed934;
    local_14 = DAT_032ed938;
    local_10 = DAT_032ed93c;
    DAT_032ed94c = DAT_032ed94c + ((param_1 + -1) / 10 + 1) * 10;
    local_c = DAT_032ed940;
    local_8 = DAT_032ed944;
    if (DAT_032ed948 < DAT_032ed94c) {
      DAT_032ed94c = DAT_032ed94c % DAT_032ed948;
    }
    DAT_032ed950 = DAT_032ed950 + 1;
    DAT_032ed964 = 0;
    FUN_00a7fdc0(10,0x12,".\\crypto\\rand\\md_rand.c",0x1cf);
    do {
      if (param_1 < 10) {
        local_3c = param_1;
      }
      else {
        local_3c = 10;
      }
      iVar5 = local_3c;
      param_1 = param_1 - local_3c;
      uVar1 = FUN_00a924c0();
      FUN_00a91380(local_38,uVar1);
      FUN_00a91530(local_38,&local_18,0x14);
      FUN_00a91530(local_38,&local_20,8);
      FUN_00a91530(local_38,param_1_00,iVar5);
      iVar5 = (iVar4 - iVar3) + 10;
      if (iVar5 < 1) {
        FUN_00a91530(local_38,&DAT_032ed520 + iVar4,10);
      }
      else {
        FUN_00a91530(local_38,&DAT_032ed520 + iVar4,10 - iVar5);
        FUN_00a91530(local_38,&DAT_032ed520,iVar5);
      }
      FUN_00a91540(local_38,&local_18);
      iVar2 = 0;
      iVar5 = 2;
      do {
        (&DAT_032ed520)[iVar4] = (&DAT_032ed520)[iVar4] ^ *(byte *)((int)&local_18 + iVar2);
        iVar4 = iVar4 + 1;
        if (iVar3 <= iVar4) {
          iVar4 = 0;
        }
        if (iVar2 < local_3c) {
          *param_1_00 = *(undefined *)((int)&local_10 + iVar2 + 2);
          param_1_00 = param_1_00 + 1;
        }
        (&DAT_032ed520)[iVar4] = (&DAT_032ed520)[iVar4] ^ *(byte *)((int)&local_18 + iVar2 + 1);
        iVar4 = iVar4 + 1;
        if (iVar3 <= iVar4) {
          iVar4 = 0;
        }
        if (iVar5 + -1 < local_3c) {
          *param_1_00 = *(undefined *)((int)&local_10 + iVar2 + 3);
          param_1_00 = param_1_00 + 1;
        }
        (&DAT_032ed520)[iVar4] = (&DAT_032ed520)[iVar4] ^ *(byte *)((int)&local_18 + iVar2 + 2);
        iVar4 = iVar4 + 1;
        if (iVar3 <= iVar4) {
          iVar4 = 0;
        }
        if (iVar5 < local_3c) {
          *param_1_00 = *(undefined *)((int)&local_c + iVar2);
          param_1_00 = param_1_00 + 1;
        }
        (&DAT_032ed520)[iVar4] = (&DAT_032ed520)[iVar4] ^ *(byte *)((int)&local_18 + iVar2 + 3);
        iVar4 = iVar4 + 1;
        if (iVar3 <= iVar4) {
          iVar4 = 0;
        }
        if (iVar5 + 1 < local_3c) {
          *param_1_00 = *(undefined *)((int)&local_c + iVar2 + 1);
          param_1_00 = param_1_00 + 1;
        }
        (&DAT_032ed520)[iVar4] = (&DAT_032ed520)[iVar4] ^ *(byte *)((int)&local_14 + iVar2);
        iVar4 = iVar4 + 1;
        if (iVar3 <= iVar4) {
          iVar4 = 0;
        }
        if (iVar5 + 2 < local_3c) {
          *param_1_00 = *(undefined *)((int)&local_c + iVar2 + 2);
          param_1_00 = param_1_00 + 1;
        }
        iVar5 = iVar5 + 5;
        iVar2 = iVar2 + 5;
      } while (iVar5 < 0xc);
    } while (0 < param_1);
    uVar1 = FUN_00a924c0();
    FUN_00a91380(local_38,uVar1);
    FUN_00a91530(local_38,&local_20,8);
    FUN_00a91530(local_38,&local_18,0x14);
    FUN_00a7fdc0(9,0x12,".\\crypto\\rand\\md_rand.c",0x203);
    FUN_00a91530(local_38,&DAT_032ed934,0x14);
    FUN_00a91540(local_38,&DAT_032ed934,0);
    FUN_00a7fdc0(10,0x12,".\\crypto\\rand\\md_rand.c",0x206);
    FUN_00a915c0(local_38);
    if (local_40 == 0) {
      if (param_3 == 0) {
        FUN_00a7f3c0(0x24,100,100,".\\crypto\\rand\\md_rand.c",0x20f);
        FUN_00a7f690(1,"You need to read the OpenSSL FAQ, http://www.openssl.org/support/faq.html");
      }
      ___security_check_cookie_4();
      return;
    }
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

bool FUN_00a995c0(void)

{
  bool bVar1;
  bool bVar2;
  int iVar3;
  uint uVar4;
  undefined local_8 [4];
  undefined4 uStack_4;
  
  uStack_4 = 0xa995ca;
  FUN_00a7f970(local_8);
  if (DAT_032ed964 == 0) {
    uVar4 = 0;
  }
  else {
    FUN_00a7fdc0(5,0x13,".\\crypto\\rand\\md_rand.c",0x22d);
    iVar3 = FUN_00a7f9b0(&DAT_032ed518,local_8);
    uVar4 = (uint)(iVar3 == 0);
    FUN_00a7fdc0(6,0x13,".\\crypto\\rand\\md_rand.c",0x22f);
    if (uVar4 != 0) goto LAB_00a9967f;
  }
  FUN_00a7fdc0(9,0x12,".\\crypto\\rand\\md_rand.c",0x236);
  FUN_00a7fdc0(9,0x13,".\\crypto\\rand\\md_rand.c",0x239);
  FUN_00a7fa10(&DAT_032ed518,local_8);
  FUN_00a7fdc0(10,0x13,".\\crypto\\rand\\md_rand.c",0x23b);
  DAT_032ed964 = 1;
LAB_00a9967f:
  if (DAT_032ed960 == 0) {
    FUN_00ac9650();
    DAT_032ed960 = 1;
  }
  bVar1 = 32.0 < _DAT_032ed958;
  bVar2 = _DAT_032ed958 == 32.0;
  if (uVar4 == 0) {
    DAT_032ed964 = uVar4;
    FUN_00a7fdc0(10,0x12,".\\crypto\\rand\\md_rand.c",0x24c);
  }
  return bVar1 != bVar2;
}



void FUN_00a996e0(void)

{
  FUN_00a98620(&DAT_032ed96c,1);
  return;
}



undefined4 FUN_00a996f0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x1c);
}



undefined ** FUN_00a99700(void)

{
  return &PTR_s_OpenSSL_default_03243040;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __thiscall FUN_00a997d0(byte *param_1_00,int param_1,byte *param_2,int *param_3)

{
  char cVar1;
  byte bVar2;
  ushort uVar3;
  byte bVar4;
  byte bVar5;
  byte bVar6;
  int *piVar7;
  byte *pbVar8;
  int iVar9;
  char *pcVar10;
  char *pcVar11;
  byte *pbVar12;
  int iVar13;
  byte *pbVar14;
  byte *pbVar15;
  undefined4 uVar16;
  undefined4 uVar17;
  byte *local_14;
  byte *local_10;
  
  iVar13 = 0;
  bVar4 = 0;
  piVar7 = (int *)FUN_00a929e0();
  if (piVar7 == (int *)0x0) {
    return 0;
  }
  pbVar8 = param_1_00;
  do {
    bVar6 = *pbVar8;
    pbVar8 = pbVar8 + 1;
  } while (bVar6 != 0);
  iVar9 = FUN_00a92a60(piVar7,pbVar8 + (1 - (int)(param_1_00 + 1)));
  if (iVar9 == 0) {
LAB_00a99b34:
    FUN_00a92a20(piVar7);
    return 0;
  }
LAB_00a99820:
  do {
    while( true ) {
      bVar6 = *param_1_00;
      iVar9 = *(int *)(param_1 + 4);
      uVar3 = *(ushort *)(iVar9 + (uint)bVar6 * 2);
      if ((uVar3 & 0x40) == 0) break;
      param_1_00 = param_1_00 + 1;
      bVar5 = *param_1_00;
      uVar3 = *(ushort *)(iVar9 + (uint)bVar5 * 2);
      while (((uVar3 & 8) == 0 && (bVar5 != bVar6))) {
        if ((uVar3 & 0x20) != 0) {
          bVar5 = param_1_00[1];
          param_1_00 = param_1_00 + 1;
          if ((*(byte *)(iVar9 + (uint)bVar5 * 2) & 8) != 0) break;
        }
        *(byte *)(iVar13 + piVar7[1]) = bVar5;
        bVar5 = param_1_00[1];
        iVar9 = *(int *)(param_1 + 4);
        param_1_00 = param_1_00 + 1;
        uVar3 = *(ushort *)(iVar9 + (uint)bVar5 * 2);
        iVar13 = iVar13 + 1;
      }
      if (*param_1_00 == bVar6) {
        param_1_00 = param_1_00 + 1;
      }
    }
    if ((uVar3 & 0x400) == 0) {
      if ((uVar3 & 0x20) == 0) {
        if ((uVar3 & 8) != 0) {
LAB_00a99ad5:
          *(undefined *)(iVar13 + piVar7[1]) = 0;
          if (*param_3 != 0) {
            FUN_00a85120(*param_3);
          }
          *param_3 = piVar7[1];
          FUN_00a85120(piVar7);
          return 1;
        }
        if (bVar6 != 0x24) {
          *(byte *)(iVar13 + piVar7[1]) = bVar6;
          iVar13 = iVar13 + 1;
          param_1_00 = param_1_00 + 1;
          goto LAB_00a99820;
        }
        pbVar8 = param_1_00 + 1;
        local_10 = (byte *)0x0;
        if (param_1_00[1] == 0x7b) {
          bVar6 = 0x7d;
LAB_00a9997f:
          pbVar8 = param_1_00 + 2;
        }
        else {
          if (param_1_00[1] == 0x28) {
            bVar6 = 0x29;
            goto LAB_00a9997f;
          }
          bVar6 = 0;
        }
        uVar3 = *(ushort *)(iVar9 + (uint)*pbVar8 * 2);
        pbVar14 = pbVar8;
        while ((uVar3 & 0x107) != 0) {
          pbVar15 = pbVar14 + 1;
          pbVar14 = pbVar14 + 1;
          uVar3 = *(ushort *)(iVar9 + (uint)*pbVar15 * 2);
        }
        pbVar12 = param_2;
        pbVar15 = pbVar14;
        local_14 = pbVar8;
        if ((*pbVar14 == 0x3a) && (pbVar14[1] == 0x3a)) {
          *pbVar14 = 0;
          bVar4 = 0x3a;
          uVar3 = *(ushort *)(*(int *)(param_1 + 4) + (uint)pbVar14[2] * 2);
          pbVar15 = pbVar14 + 2;
          while (pbVar12 = pbVar8, local_14 = pbVar14 + 2, local_10 = pbVar14, (uVar3 & 0x107) != 0)
          {
            pbVar12 = pbVar15 + 1;
            pbVar15 = pbVar15 + 1;
            uVar3 = *(ushort *)(*(int *)(param_1 + 4) + (uint)*pbVar12 * 2);
          }
        }
        bVar5 = *pbVar15;
        *pbVar15 = 0;
        pbVar8 = pbVar15;
        if (bVar6 == 0) {
LAB_00a99a40:
          pcVar10 = (char *)FUN_00a9a530(param_1,pbVar12,local_14);
          if (local_10 != (byte *)0x0) {
            *local_10 = bVar4;
          }
          *pbVar15 = bVar5;
          if (pcVar10 != (char *)0x0) {
            pcVar11 = pcVar10;
            do {
              cVar1 = *pcVar11;
              pcVar11 = pcVar11 + 1;
            } while (cVar1 != '\0');
            FUN_00a92b40(piVar7,param_1_00 +
                                (int)(pcVar11 + *piVar7 + (-(int)pbVar8 - (int)(pcVar10 + 1))));
            cVar1 = *pcVar10;
            while (cVar1 != '\0') {
              pcVar10 = pcVar10 + 1;
              *(char *)(iVar13 + piVar7[1]) = cVar1;
              iVar13 = iVar13 + 1;
              cVar1 = *pcVar10;
            }
            *pbVar15 = bVar5;
            param_1_00 = pbVar8;
            goto LAB_00a99820;
          }
          uVar17 = 0x26a;
          uVar16 = 0x68;
        }
        else {
          if (bVar5 == bVar6) {
            pbVar8 = pbVar15 + 1;
            goto LAB_00a99a40;
          }
          uVar17 = 599;
          uVar16 = 0x66;
        }
        FUN_00a7f3c0(0xe,0x65,uVar16,".\\crypto\\conf\\conf_def.c",uVar17);
        goto LAB_00a99b34;
      }
      bVar6 = param_1_00[1];
      param_1_00 = param_1_00 + 2;
      if ((*(byte *)(iVar9 + (uint)bVar6 * 2) & 8) != 0) goto LAB_00a99ad5;
      if (bVar6 == 0x72) {
        *(undefined *)(iVar13 + piVar7[1]) = 0xd;
        iVar13 = iVar13 + 1;
      }
      else if (bVar6 == 0x6e) {
        *(undefined *)(iVar13 + piVar7[1]) = 10;
        iVar13 = iVar13 + 1;
      }
      else if (bVar6 == 0x62) {
        *(undefined *)(iVar13 + piVar7[1]) = 8;
        iVar13 = iVar13 + 1;
      }
      else {
        if (bVar6 == 0x74) {
          bVar6 = 9;
        }
        *(byte *)(iVar13 + piVar7[1]) = bVar6;
        iVar13 = iVar13 + 1;
      }
      goto LAB_00a99820;
    }
    param_1_00 = param_1_00 + 1;
    bVar5 = *param_1_00;
    bVar2 = *(byte *)(iVar9 + (uint)bVar5 * 2);
    while ((bVar2 & 8) == 0) {
      if (bVar5 == bVar6) {
        if (param_1_00[1] != bVar6) break;
        param_1_00 = param_1_00 + 1;
      }
      *(byte *)(iVar13 + piVar7[1]) = *param_1_00;
      bVar5 = param_1_00[1];
      param_1_00 = param_1_00 + 1;
      iVar13 = iVar13 + 1;
      bVar2 = *(byte *)(*(int *)(param_1 + 4) + (uint)bVar5 * 2);
    }
    if (*param_1_00 == bVar6) {
      param_1_00 = param_1_00 + 1;
    }
  } while( true );
}



void __thiscall FUN_00a99b50(int param_1_00,byte *param_1)

{
  byte *pbVar1;
  ushort uVar2;
  
  uVar2 = *(ushort *)(*(int *)(param_1_00 + 4) + (uint)*param_1 * 2);
  while (((uVar2 & 0x10) != 0 && ((uVar2 & 8) == 0))) {
    pbVar1 = param_1 + 1;
    param_1 = param_1 + 1;
    uVar2 = *(ushort *)(*(int *)(param_1_00 + 4) + (uint)*pbVar1 * 2);
  }
  return;
}



void __thiscall FUN_00a99b80(int param_1_00,byte *param_1)

{
  ushort uVar1;
  
  while( true ) {
    while (uVar1 = *(ushort *)(*(int *)(param_1_00 + 4) + (uint)*param_1 * 2), (uVar1 & 0x20) != 0)
    {
      if ((*(byte *)(*(int *)(param_1_00 + 4) + (uint)param_1[1] * 2) & 8) == 0) {
        param_1 = param_1 + 2;
      }
      else {
        param_1 = param_1 + 1;
      }
    }
    if ((uVar1 & 0x307) == 0) break;
    param_1 = param_1 + 1;
  }
  return;
}



byte * __fastcall FUN_00a99bc0(undefined4 param_1_00,int param_2,byte *param_1)

{
  byte *pbVar1;
  byte bVar2;
  ushort uVar3;
  int iVar4;
  byte *pbVar5;
  
  bVar2 = param_1[1];
  iVar4 = *(int *)(param_2 + 4);
  pbVar5 = param_1 + 1;
  uVar3 = *(ushort *)(iVar4 + (uint)bVar2 * 2);
  while( true ) {
    if (((uVar3 & 8) != 0) || (bVar2 == *param_1)) {
      if (*pbVar5 == *param_1) {
        pbVar5 = pbVar5 + 1;
      }
      return pbVar5;
    }
    if (((uVar3 & 0x20) != 0) &&
       (pbVar1 = pbVar5 + 1, pbVar5 = pbVar5 + 1, (*(byte *)(iVar4 + (uint)*pbVar1 * 2) & 8) != 0))
    break;
    bVar2 = pbVar5[1];
    pbVar5 = pbVar5 + 1;
    uVar3 = *(ushort *)(iVar4 + (uint)bVar2 * 2);
  }
  return pbVar5;
}



byte * __fastcall FUN_00a99c20(undefined4 param_1_00,int param_2,byte *param_1)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  
  bVar1 = param_1[1];
  bVar2 = *param_1;
  param_1 = param_1 + 1;
  bVar3 = *(byte *)(*(int *)(param_2 + 4) + (uint)bVar1 * 2);
  while ((bVar3 & 8) == 0) {
    if (bVar1 == bVar2) {
      if (param_1[1] != bVar2) break;
      param_1 = param_1 + 1;
    }
    bVar1 = param_1[1];
    param_1 = param_1 + 1;
    bVar3 = *(byte *)(*(int *)(param_2 + 4) + (uint)bVar1 * 2);
  }
  if (*param_1 == bVar2) {
    param_1 = param_1 + 1;
  }
  return param_1;
}



undefined4 FUN_00a99d00(int param_1)

{
  if (param_1 != 0) {
    FUN_00a9a870(param_1);
    FUN_00a85120(param_1);
    return 1;
  }
  return 0;
}



void FUN_00a99d30(byte *param_1)

{
  byte *pbVar1;
  byte bVar2;
  ushort uVar3;
  int iVar4;
  int unaff_EDI;
  
  iVar4 = *(int *)(unaff_EDI + 4);
  if ((*(ushort *)(iVar4 + (uint)*param_1 * 2) & 0x800) == 0) {
    while ((*(byte *)(iVar4 + (uint)*param_1 * 2) & 0x10) != 0) {
      pbVar1 = param_1 + 1;
      param_1 = param_1 + 1;
      if ((*(ushort *)(iVar4 + (uint)*pbVar1 * 2) & 0x800) != 0) {
        *param_1 = 0;
        return;
      }
    }
    bVar2 = *(byte *)(iVar4 + (uint)*param_1 * 2);
    while ((bVar2 & 0x80) == 0) {
      uVar3 = *(ushort *)(iVar4 + (uint)*param_1 * 2);
      if ((uVar3 & 0x400) == 0) {
        if ((uVar3 & 0x40) == 0) {
          if ((uVar3 & 0x20) == 0) {
            if ((uVar3 & 8) != 0) {
              return;
            }
          }
          else if ((*(byte *)(iVar4 + (uint)param_1[1] * 2) & 8) == 0) {
            param_1 = param_1 + 2;
            goto LAB_00a99db8;
          }
          param_1 = param_1 + 1;
        }
        else {
          param_1 = (byte *)FUN_00a99bc0(param_1);
        }
      }
      else {
        param_1 = (byte *)FUN_00a99c20(param_1);
      }
LAB_00a99db8:
      bVar2 = *(byte *)(iVar4 + (uint)*param_1 * 2);
    }
  }
  *param_1 = 0;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a99dd0(int param_1,undefined4 param_2,int *param_3)

{
  char cVar1;
  byte bVar2;
  int iVar3;
  byte *pbVar4;
  int iVar5;
  char *pcVar6;
  byte *pbVar7;
  byte *pbVar8;
  int iVar9;
  char *pcVar10;
  bool bVar11;
  undefined4 uVar12;
  undefined4 uVar13;
  int local_44;
  byte *local_40;
  byte *local_3c;
  int local_38;
  byte *local_34;
  int local_30;
  int local_2c;
  byte *local_28;
  int local_24;
  int *local_20;
  int local_1c;
  undefined4 local_18;
  undefined local_14 [16];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_44;
  local_1c = *(int *)(param_1 + 8);
  iVar9 = 0;
  local_18 = param_2;
  local_20 = param_3;
  local_30 = 0;
  local_38 = 0;
  iVar3 = FUN_00a929e0();
  local_44 = iVar3;
  if (iVar3 == 0) {
    FUN_00a7f3c0(0xe,0x79,7,".\\crypto\\conf\\conf_def.c",0xe3);
    goto LAB_00a9a2fc;
  }
  pbVar4 = (byte *)FUN_00a84f80(10,".\\crypto\\conf\\conf_def.c",0xe7);
  local_40 = pbVar4;
  if (pbVar4 == (byte *)0x0) {
    uVar13 = 0xea;
LAB_00a9a2cb:
    uVar12 = 0x41;
  }
  else {
    FUN_00a851b0(pbVar4,"default",10);
    iVar5 = FUN_00a9a6d0(param_1);
    if (iVar5 == 0) {
      uVar13 = 0xf1;
      goto LAB_00a9a2cb;
    }
    local_34 = (byte *)FUN_00a9a780(param_1,pbVar4);
    if (local_34 == (byte *)0x0) {
      uVar13 = 0xf9;
      uVar12 = 0x67;
    }
    else {
      local_2c = 0;
      iVar3 = FUN_00a92a60(iVar3,0x200);
      while (iVar3 != 0) {
        pcVar10 = (char *)(*(int *)(local_44 + 4) + iVar9);
        *pcVar10 = '\0';
        FUN_00a83550(local_18,pcVar10,0x1ff);
        pcVar10[0x1ff] = '\0';
        pcVar6 = pcVar10;
        do {
          cVar1 = *pcVar6;
          pcVar6 = pcVar6 + 1;
        } while (cVar1 != '\0');
        iVar3 = (int)pcVar6 - (int)(pcVar10 + 1);
        if ((iVar3 == 0) && (local_2c == 0)) {
          FUN_00a92a20(local_44);
          if (pbVar4 != (byte *)0x0) {
            FUN_00a85120(pbVar4);
          }
          ___security_check_cookie_4();
          return;
        }
        bVar11 = false;
        local_2c = 0;
        for (iVar5 = iVar3;
            (0 < iVar5 && ((pcVar10[iVar5 + -1] == '\r' || (pcVar10[iVar5 + -1] == '\n'))));
            iVar5 = iVar5 + -1) {
        }
        if ((iVar3 == 0) || (iVar5 != iVar3)) {
          local_30 = local_30 + 1;
          pcVar10[iVar5] = '\0';
        }
        else {
          bVar11 = true;
          local_2c = 1;
        }
        iVar9 = iVar9 + iVar5;
        local_38 = 0;
        if (iVar9 < 1) {
LAB_00a99f89:
          if (!bVar11) {
            uVar13 = *(undefined4 *)(local_44 + 4);
            iVar9 = 0;
            local_24 = 0;
            FUN_00a99d30(uVar13);
            pbVar4 = (byte *)FUN_00a99b50(uVar13);
            iVar3 = *(int *)(param_1 + 4);
            if ((*(byte *)(iVar3 + (uint)*pbVar4 * 2) & 8) == 0) {
              if (*pbVar4 == 0x5b) {
                pbVar4 = (byte *)FUN_00a99b50(pbVar4 + 1);
                local_34 = pbVar4;
                while( true ) {
                  pbVar7 = (byte *)FUN_00a99b80(pbVar4);
                  iVar5 = (uint)*pbVar7 * 2;
                  bVar2 = *(byte *)(iVar5 + iVar3);
                  pbVar4 = pbVar7;
                  while (((bVar2 & 0x10) != 0 && ((*(byte *)(iVar5 + iVar3) & 8) == 0))) {
                    pbVar8 = pbVar4 + 1;
                    pbVar4 = pbVar4 + 1;
                    iVar5 = (uint)*pbVar8 * 2;
                    bVar2 = *(byte *)(iVar5 + iVar3);
                  }
                  if (*pbVar4 == 0x5d) break;
                  if (*pbVar4 == 0) {
                    uVar13 = 0x14a;
                    uVar12 = 100;
                    goto LAB_00a9a2d2;
                  }
                }
                *pbVar7 = 0;
                iVar3 = FUN_00a997d0(param_1,0,&local_40);
                pbVar4 = local_40;
                if (iVar3 == 0) goto LAB_00a9a2de;
                local_34 = (byte *)FUN_00a9a430(param_1,local_40);
                if ((local_34 == (byte *)0x0) &&
                   (local_34 = (byte *)FUN_00a9a780(param_1,pbVar4), local_34 == (byte *)0x0)) {
                  uVar13 = 0x154;
                  uVar12 = 0x67;
                  goto LAB_00a9a2d2;
                }
              }
              else {
                local_3c = (byte *)0x0;
                local_28 = pbVar4;
                pcVar6 = (char *)FUN_00a99b80(pbVar4);
                if ((*pcVar6 == ':') && (pcVar6[1] == ':')) {
                  *pcVar6 = '\0';
                  local_28 = (byte *)(pcVar6 + 2);
                  local_3c = pbVar4;
                  pcVar6 = (char *)FUN_00a99b80(local_28);
                }
                pcVar10 = (char *)FUN_00a99b50(pcVar6);
                if (*pcVar10 != '=') {
                  uVar13 = 0x16a;
                  uVar12 = 0x65;
                  goto LAB_00a9a2d2;
                }
                pbVar4 = (byte *)(pcVar10 + 1);
                *pcVar6 = '\0';
                pbVar7 = (byte *)FUN_00a99b50(pbVar4);
                iVar9 = *(int *)(param_1 + 4);
                bVar2 = *(byte *)(iVar9 + (uint)*pbVar4 * 2);
                while ((bVar2 & 8) == 0) {
                  pbVar8 = pbVar4 + 1;
                  pbVar4 = pbVar4 + 1;
                  bVar2 = *(byte *)(iVar9 + (uint)*pbVar8 * 2);
                }
                do {
                  pbVar8 = pbVar4;
                  pbVar4 = pbVar8 + -1;
                  if (pbVar4 == pbVar7) break;
                } while ((*(byte *)(iVar9 + (uint)*pbVar4 * 2) & 0x10) != 0);
                *pbVar8 = 0;
                iVar9 = FUN_00a84f80(0xc,".\\crypto\\conf\\conf_def.c",0x178);
                local_38 = iVar9;
                if (iVar9 == 0) {
                  uVar13 = 0x17b;
                  goto LAB_00a9a2cb;
                }
                if (local_3c == (byte *)0x0) {
                  local_3c = local_40;
                }
                pbVar4 = local_28;
                do {
                  bVar2 = *pbVar4;
                  pbVar4 = pbVar4 + 1;
                } while (bVar2 != 0);
                iVar3 = FUN_00a84f80(pbVar4 + (1 - (int)(local_28 + 1)),
                                     ".\\crypto\\conf\\conf_def.c",0x17f);
                *(int *)(iVar9 + 4) = iVar3;
                *(undefined4 *)(iVar9 + 8) = 0;
                if (iVar3 == 0) {
                  uVar13 = 0x184;
                  goto LAB_00a9a2cb;
                }
                pbVar4 = local_28;
                do {
                  bVar2 = *pbVar4;
                  pbVar4 = pbVar4 + 1;
                } while (bVar2 != 0);
                FUN_00a851b0(iVar3,local_28,pbVar4 + (1 - (int)(local_28 + 1)));
                iVar9 = FUN_00a997d0(param_1,local_3c,(undefined4 *)(iVar9 + 8));
                pbVar4 = local_3c;
                pbVar7 = local_3c;
                pbVar8 = local_40;
                if (iVar9 == 0) goto LAB_00a9a2de;
                do {
                  bVar2 = *pbVar7;
                  bVar11 = bVar2 < *pbVar8;
                  if (bVar2 != *pbVar8) {
LAB_00a9a1f1:
                    iVar9 = (1 - (uint)bVar11) - (uint)(bVar11 != 0);
                    goto LAB_00a9a1f6;
                  }
                  if (bVar2 == 0) break;
                  bVar2 = pbVar7[1];
                  bVar11 = bVar2 < pbVar8[1];
                  if (bVar2 != pbVar8[1]) goto LAB_00a9a1f1;
                  pbVar7 = pbVar7 + 2;
                  pbVar8 = pbVar8 + 2;
                } while (bVar2 != 0);
                iVar9 = 0;
LAB_00a9a1f6:
                pbVar7 = local_34;
                if (((iVar9 != 0) &&
                    (pbVar7 = (byte *)FUN_00a9a430(param_1,local_3c), pbVar7 == (byte *)0x0)) &&
                   (pbVar7 = (byte *)FUN_00a9a780(param_1,pbVar4), pbVar7 == (byte *)0x0)) {
                  uVar13 = 0x192;
                  uVar12 = 0x67;
                  goto LAB_00a9a2d2;
                }
                iVar9 = FUN_00a9a4c0(param_1,pbVar7,local_38);
                if (iVar9 == 0) {
                  uVar13 = 0x19c;
                  goto LAB_00a9a2cb;
                }
                local_38 = 0;
                iVar9 = local_24;
              }
            }
          }
        }
        else {
          if (((*(byte *)(*(int *)(param_1 + 4) +
                         (uint)*(byte *)(*(int *)(local_44 + 4) + -1 + iVar9) * 2) & 0x20) == 0) ||
             ((1 < iVar9 &&
              ((*(byte *)(*(int *)(param_1 + 4) +
                         (uint)*(byte *)(*(int *)(local_44 + 4) + iVar9 + -2) * 2) & 0x20) != 0))))
          goto LAB_00a99f89;
          local_2c = 1;
          iVar9 = iVar9 + -1;
        }
        iVar3 = FUN_00a92a60(local_44,iVar9 + 0x200);
        pbVar4 = local_40;
      }
      uVar13 = 0x103;
      uVar12 = 7;
    }
  }
LAB_00a9a2d2:
  FUN_00a7f3c0(0xe,0x79,uVar12,".\\crypto\\conf\\conf_def.c",uVar13);
LAB_00a9a2de:
  FUN_00a92a20(local_44);
  if (local_40 != (byte *)0x0) {
    FUN_00a85120(local_40);
  }
LAB_00a9a2fc:
  if (local_20 != (int *)0x0) {
    *local_20 = local_30;
  }
  FUN_00a86220(local_14,0xd,&DAT_00d5efa0,local_30);
  FUN_00a7f690(2,"line ",local_14);
  iVar9 = *(int *)(param_1 + 8);
  if ((local_1c != iVar9) && (iVar9 != 0)) {
    FUN_00a87360(iVar9);
    *(undefined4 *)(param_1 + 8) = 0;
  }
  iVar9 = local_38;
  if (local_38 != 0) {
    if (*(int *)(local_38 + 4) != 0) {
      FUN_00a85120(*(int *)(local_38 + 4));
    }
    iVar3 = *(int *)(iVar9 + 8);
    if (iVar3 != 0) {
      FUN_00a85120(iVar3);
    }
    FUN_00a85120(iVar9);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a9a430(int param_1,int param_2)

{
  undefined4 uVar1;
  int local_c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa9a43a;
  if ((param_1 != 0) && (param_2 != 0)) {
    local_c = param_2;
    local_8 = 0;
    uVar1 = FUN_00a84ed0(*(undefined4 *)(param_1 + 8),&local_c);
    return uVar1;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a9a470(int param_1,int param_2)

{
  int iVar1;
  int local_c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa9a47a;
  if ((param_1 != 0) && (param_2 != 0)) {
    local_c = param_2;
    local_8 = 0;
    iVar1 = FUN_00a84ed0(*(undefined4 *)(param_1 + 8),&local_c);
    if (iVar1 != 0) {
      return *(undefined4 *)(iVar1 + 8);
    }
  }
  return 0;
}



undefined4 FUN_00a9a4c0(int param_1,undefined4 *param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  int iVar2;
  
  uVar1 = param_2[2];
  *param_3 = *param_2;
  iVar2 = FUN_00a80df0(uVar1,param_3);
  if (iVar2 == 0) {
    return 0;
  }
  iVar2 = FUN_00a84dd0(*(undefined4 *)(param_1 + 8),param_3);
  if (iVar2 != 0) {
    FUN_00a81020(uVar1,iVar2);
    FUN_00a85120(*(undefined4 *)(iVar2 + 4));
    FUN_00a85120(*(undefined4 *)(iVar2 + 8));
    FUN_00a85120(iVar2);
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

char * FUN_00a9a530(int param_1,byte *param_2,char *param_3)

{
  byte bVar1;
  int iVar2;
  char *pcVar3;
  byte *pbVar4;
  bool bVar5;
  byte *local_c;
  char *local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa9a53a;
  if (param_3 == (char *)0x0) {
    return (char *)0x0;
  }
  if (param_1 == 0) {
    pcVar3 = _getenv(param_3);
    return pcVar3;
  }
  if (param_2 != (byte *)0x0) {
    local_8 = param_3;
    local_c = param_2;
    iVar2 = FUN_00a84ed0(*(undefined4 *)(param_1 + 8),&local_c);
    if (iVar2 != 0) goto LAB_00a9a5db;
    pbVar4 = &DAT_00db91b4;
    do {
      bVar1 = *param_2;
      bVar5 = bVar1 < *pbVar4;
      if (bVar1 != *pbVar4) {
LAB_00a9a5a4:
        iVar2 = (1 - (uint)bVar5) - (uint)(bVar5 != 0);
        goto LAB_00a9a5a9;
      }
      if (bVar1 == 0) break;
      bVar1 = param_2[1];
      bVar5 = bVar1 < pbVar4[1];
      if (bVar1 != pbVar4[1]) goto LAB_00a9a5a4;
      param_2 = param_2 + 2;
      pbVar4 = pbVar4 + 2;
    } while (bVar1 != 0);
    iVar2 = 0;
LAB_00a9a5a9:
    if ((iVar2 == 0) && (pcVar3 = _getenv(param_3), pcVar3 != (char *)0x0)) {
      return pcVar3;
    }
  }
  local_c = (byte *)0xd31814;
  local_8 = param_3;
  iVar2 = FUN_00a84ed0(*(undefined4 *)(param_1 + 8),&local_c);
  if (iVar2 == 0) {
    return (char *)0x0;
  }
LAB_00a9a5db:
  return *(char **)(iVar2 + 8);
}



uint FUN_00a9a600(undefined4 *param_1)

{
  uint uVar1;
  int iVar2;
  
  uVar1 = FUN_00a84ca0(param_1[1]);
  iVar2 = FUN_00a84ca0(*param_1);
  return iVar2 * 4 ^ uVar1;
}



int FUN_00a9a630(void)

{
  byte bVar1;
  byte *pbVar2;
  int iVar3;
  byte *pbVar4;
  byte **unaff_ESI;
  byte **unaff_EDI;
  bool bVar5;
  
  pbVar2 = *unaff_EDI;
  pbVar4 = *unaff_ESI;
  if (pbVar2 != pbVar4) {
    do {
      bVar1 = *pbVar2;
      bVar5 = bVar1 < *pbVar4;
      if (bVar1 != *pbVar4) {
LAB_00a9a658:
        iVar3 = (1 - (uint)bVar5) - (uint)(bVar5 != 0);
        goto LAB_00a9a65d;
      }
      if (bVar1 == 0) break;
      bVar1 = pbVar2[1];
      bVar5 = bVar1 < pbVar4[1];
      if (bVar1 != pbVar4[1]) goto LAB_00a9a658;
      pbVar2 = pbVar2 + 2;
      pbVar4 = pbVar4 + 2;
    } while (bVar1 != 0);
    iVar3 = 0;
LAB_00a9a65d:
    if (iVar3 != 0) {
      return iVar3;
    }
  }
  pbVar2 = unaff_EDI[1];
  if ((pbVar2 == (byte *)0x0) || (pbVar4 = unaff_ESI[1], pbVar4 == (byte *)0x0)) {
    if (pbVar2 != unaff_ESI[1]) {
      return (uint)(pbVar2 != (byte *)0x0) * 2 + -1;
    }
  }
  else {
    do {
      bVar1 = *pbVar2;
      bVar5 = bVar1 < *pbVar4;
      if (bVar1 != *pbVar4) {
LAB_00a9a68f:
        return (1 - (uint)bVar5) - (uint)(bVar5 != 0);
      }
      if (bVar1 == 0) {
        return 0;
      }
      bVar1 = pbVar2[1];
      bVar5 = bVar1 < pbVar4[1];
      if (bVar1 != pbVar4[1]) goto LAB_00a9a68f;
      pbVar2 = pbVar2 + 2;
      pbVar4 = pbVar4 + 2;
    } while (bVar1 != 0);
  }
  return 0;
}



void FUN_00a9a6b0(void)

{
  FUN_00a9a630();
  return;
}



undefined4 FUN_00a9a6d0(int param_1)

{
  int iVar1;
  
  if (param_1 == 0) {
    return 0;
  }
  if (*(int *)(param_1 + 8) == 0) {
    iVar1 = FUN_00a84d00(FUN_00a9a600,FUN_00a9a6b0);
    *(int *)(param_1 + 8) = iVar1;
    if (iVar1 == 0) {
      return 0;
    }
  }
  return 1;
}



void ** FUN_00a9a780(int param_1,char *param_2)

{
  char cVar1;
  void *pvVar2;
  void **ppvVar3;
  char *pcVar4;
  void *_Dst;
  int iVar5;
  
  pvVar2 = (void *)FUN_00a81010();
  if (pvVar2 != (void *)0x0) {
    ppvVar3 = (void **)FUN_00a84f80(0xc,".\\crypto\\conf\\conf_api.c",0x116);
    if (ppvVar3 != (void **)0x0) {
      pcVar4 = param_2;
      do {
        cVar1 = *pcVar4;
        pcVar4 = pcVar4 + 1;
      } while (cVar1 != '\0');
      _Dst = (void *)FUN_00a84f80(pcVar4 + (1 - (int)(param_2 + 1)),".\\crypto\\conf\\conf_api.c",
                                  0x119);
      *ppvVar3 = _Dst;
      if (_Dst != (void *)0x0) {
        _memcpy(_Dst,param_2,(size_t)(pcVar4 + (1 - (int)(param_2 + 1))));
        ppvVar3[1] = (void *)0x0;
        ppvVar3[2] = pvVar2;
        iVar5 = FUN_00a84dd0(*(undefined4 *)(param_1 + 8),ppvVar3);
        if (iVar5 != 0) {
          FUN_00a7fd60(".\\crypto\\conf\\conf_api.c",0x121,"vv == NULL");
        }
        return ppvVar3;
      }
    }
    FUN_00a80ea0(pvVar2);
    if (ppvVar3 != (void **)0x0) {
      FUN_00a85120(ppvVar3);
    }
  }
  return (void **)0x0;
}



void FUN_00a9a870(int param_1)

{
  if ((param_1 != 0) && (*(int *)(param_1 + 8) != 0)) {
    *(undefined4 *)(*(int *)(param_1 + 8) + 0x20) = 0;
    FUN_00a84a80(*(undefined4 *)(param_1 + 8),&LAB_00a9a840,*(undefined4 *)(param_1 + 8));
    FUN_00a84a40(*(undefined4 *)(param_1 + 8),&LAB_00a9a860);
    FUN_00a84990();
    return;
  }
  return;
}



undefined ** FUN_00a9a8c0(void)

{
  return &PTR_DAT_00db9214;
}



uint FUN_00a9a8d0(uint param_1)

{
  if ((param_1 & 0xffff0000) == 0) {
    if ((param_1 & 0xff00) != 0) {
      return (byte)(&DAT_00db9228)[param_1 >> 8] + 8;
    }
    return (uint)(byte)(&DAT_00db9228)[param_1];
  }
  if ((param_1 & 0xff000000) != 0) {
    return (byte)(&DAT_00db9228)[param_1 >> 0x18] + 0x18;
  }
  return (byte)(&DAT_00db9228)[param_1 >> 0x10] + 0x10;
}



int FUN_00a9a920(int *param_1)

{
  int iVar1;
  int extraout_ECX;
  
  iVar1 = param_1[1];
  if (iVar1 == 0) {
    return iVar1;
  }
  iVar1 = FUN_00a9a8d0(*(undefined4 *)(*param_1 + (iVar1 + -1) * 4));
  return iVar1 + extraout_ECX * 0x20;
}



void FUN_00a9a950(int *param_1)

{
  uint uVar1;
  
  if (param_1 != (int *)0x0) {
    if (*param_1 != 0) {
      FUN_00a84330(*param_1,param_1[2] * 4);
      if ((*(byte *)(param_1 + 4) & 2) == 0) {
        FUN_00a85120(*param_1);
      }
    }
    uVar1 = param_1[4];
    FUN_00a84330(param_1,0x14);
    if ((uVar1 & 1) != 0) {
      FUN_00a85120(param_1);
    }
  }
  return;
}



void FUN_00a9a9b0(int *param_1)

{
  if (param_1 != (int *)0x0) {
    if ((*param_1 != 0) && ((*(byte *)(param_1 + 4) & 2) == 0)) {
      FUN_00a85120(*param_1);
    }
    if ((param_1[4] & 1U) != 0) {
      FUN_00a85120(param_1);
      return;
    }
    param_1[4] = param_1[4] | 0x8000;
    *param_1 = 0;
  }
  return;
}



void FUN_00a9a9f0(undefined4 *param_1)

{
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[4] = 0;
  return;
}



undefined4 * FUN_00a9aa10(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x14,".\\crypto\\bn\\bn_lib.c",0x11b);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(3,0x71,0x41,".\\crypto\\bn\\bn_lib.c",0x11d);
    return (undefined4 *)0x0;
  }
  puVar1[4] = 1;
  puVar1[1] = 0;
  puVar1[3] = 0;
  puVar1[2] = 0;
  *puVar1 = 0;
  return puVar1;
}



undefined4 * FUN_00a9aa60(int *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  int iVar7;
  uint uVar8;
  
  if (0xffffff < param_2) {
    FUN_00a7f3c0(3,0x78,0x72,".\\crypto\\bn\\bn_lib.c",0x135);
    return (undefined4 *)0x0;
  }
  if ((*(byte *)(param_1 + 4) & 2) == 0) {
    puVar4 = (undefined4 *)FUN_00a84f80(param_2 * 4,".\\crypto\\bn\\bn_lib.c",0x13d);
    if (puVar4 == (undefined4 *)0x0) {
      FUN_00a7f3c0(3,0x78,0x41,".\\crypto\\bn\\bn_lib.c",0x140);
      return (undefined4 *)0x0;
    }
    puVar6 = (undefined4 *)*param_1;
    if (puVar6 != (undefined4 *)0x0) {
      puVar5 = puVar4;
      for (iVar7 = param_1[1] >> 2; 0 < iVar7; iVar7 = iVar7 + -1) {
        uVar1 = puVar6[1];
        uVar2 = puVar6[2];
        uVar3 = puVar6[3];
        *puVar5 = *puVar6;
        puVar5[1] = uVar1;
        puVar5[2] = uVar2;
        puVar5[3] = uVar3;
        puVar5 = puVar5 + 4;
        puVar6 = puVar6 + 4;
      }
      uVar8 = param_1[1] & 3;
      if (uVar8 != 1) {
        if (uVar8 != 2) {
          if (uVar8 != 3) {
            return puVar4;
          }
          puVar5[2] = puVar6[2];
        }
        puVar5[1] = puVar6[1];
      }
      *puVar5 = *puVar6;
    }
    return puVar4;
  }
  FUN_00a7f3c0(3,0x78,0x69,".\\crypto\\bn\\bn_lib.c",0x13a);
  return (undefined4 *)0x0;
}



int * FUN_00a9ab60(int *param_1,int param_2)

{
  int iVar1;
  
  if (param_1[2] < param_2) {
    iVar1 = FUN_00a9aa60(param_1,param_2);
    if (iVar1 == 0) {
      return (int *)0x0;
    }
    if (*param_1 != 0) {
      FUN_00a85120(*param_1);
    }
    *param_1 = iVar1;
    param_1[2] = param_2;
  }
  return param_1;
}



undefined4 * FUN_00a9aba0(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int iVar6;
  uint uVar7;
  
  if (param_1 == param_2) {
    return param_1;
  }
  puVar4 = param_1;
  if ((int)param_1[2] < (int)param_2[1]) {
    puVar4 = (undefined4 *)FUN_00a9ab60(param_1,param_2[1]);
  }
  if (puVar4 == (undefined4 *)0x0) {
    return (undefined4 *)0x0;
  }
  puVar4 = (undefined4 *)*param_1;
  puVar5 = (undefined4 *)*param_2;
  for (iVar6 = (int)param_2[1] >> 2; 0 < iVar6; iVar6 = iVar6 + -1) {
    uVar1 = puVar5[1];
    uVar2 = puVar5[2];
    uVar3 = puVar5[3];
    *puVar4 = *puVar5;
    puVar4[1] = uVar1;
    puVar4[2] = uVar2;
    puVar4[3] = uVar3;
    puVar4 = puVar4 + 4;
    puVar5 = puVar5 + 4;
  }
  uVar7 = param_2[1] & 3;
  if (uVar7 != 1) {
    if (uVar7 != 2) {
      if (uVar7 != 3) goto LAB_00a9ac30;
      puVar4[2] = puVar5[2];
    }
    puVar4[1] = puVar5[1];
  }
  *puVar4 = *puVar5;
LAB_00a9ac30:
  param_1[1] = param_2[1];
  param_1[3] = param_2[3];
  return param_1;
}



undefined4 FUN_00a9ac50(int **param_1,int param_2)

{
  int *piVar1;
  
  if ((int)param_1[2] < 1) {
    piVar1 = (int *)FUN_00a9aa60(param_1,1);
    if (piVar1 == (int *)0x0) {
      return 0;
    }
    if (*param_1 != (int *)0x0) {
      FUN_00a85120(*param_1);
    }
    *param_1 = piVar1;
    param_1[2] = (int *)0x1;
  }
  param_1[3] = (int *)0x0;
  **param_1 = param_2;
  param_1[1] = (int *)(uint)(param_2 != 0);
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int * FUN_00a9acb0(byte *param_1,int param_2,int *param_3)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int *local_4;
  
  uVar6 = 0;
  local_4 = (int *)0x0;
  if ((param_3 == (int *)0x0) &&
     (param_3 = (int *)FUN_00a9aa10(), local_4 = param_3, param_3 == (int *)0x0)) {
    return (int *)0x0;
  }
  if (param_2 == 0) {
    param_3[1] = 0;
    return param_3;
  }
  iVar5 = (param_2 - 1U >> 2) + 1;
  piVar2 = param_3;
  if (param_3[2] < iVar5) {
    piVar2 = (int *)FUN_00a9ab60(param_3,iVar5);
  }
  if (piVar2 == (int *)0x0) {
    if (local_4 != (int *)0x0) {
      FUN_00a9a9b0(local_4);
    }
    return (int *)0x0;
  }
  param_3[1] = iVar5;
  param_3[3] = 0;
  iVar5 = iVar5 * 4;
  uVar3 = param_2 - 1U & 3;
  do {
    uVar6 = uVar6 << 8 | (uint)*param_1;
    param_2 = param_2 + -1;
    param_1 = param_1 + 1;
    uVar4 = uVar3 - 1;
    if (uVar3 == 0) {
      iVar5 = iVar5 + -4;
      *(uint *)(iVar5 + *param_3) = uVar6;
      uVar6 = 0;
      uVar4 = 3;
    }
    uVar3 = uVar4;
  } while (param_2 != 0);
  iVar5 = param_3[1];
  if (0 < iVar5) {
    piVar2 = (int *)(*param_3 + -4 + iVar5 * 4);
    do {
      iVar1 = *piVar2;
      piVar2 = piVar2 + -1;
      if (iVar1 != 0) break;
      iVar5 = iVar5 + -1;
    } while (0 < iVar5);
    param_3[1] = iVar5;
  }
  return param_3;
}



uint FUN_00a9ad90(int *param_1,undefined *param_2)

{
  int iVar1;
  int extraout_ECX;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  
  iVar1 = param_1[1];
  if (iVar1 != 0) {
    iVar1 = FUN_00a9a8d0(*(undefined4 *)(*param_1 + (iVar1 + -1) * 4));
    iVar1 = iVar1 + extraout_ECX * 0x20;
  }
  uVar3 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
  uVar4 = uVar3;
  while (uVar4 != 0) {
    uVar4 = uVar4 - 1;
    uVar2 = uVar4 & 0x80000003;
    if ((int)uVar2 < 0) {
      uVar2 = (uVar2 - 1 | 0xfffffffc) + 1;
    }
    *param_2 = (char)(*(uint *)(*param_1 + ((int)(uVar4 + ((int)uVar4 >> 0x1f & 3U)) >> 2) * 4) >>
                     ((char)uVar2 * '\b' & 0x1fU));
    param_2 = param_2 + 1;
  }
  return uVar3;
}



int FUN_00a9ae10(int *param_1,int *param_2)

{
  uint uVar1;
  int iVar2;
  uint *puVar3;
  
  iVar2 = param_1[1] - param_2[1];
  if (iVar2 == 0) {
    iVar2 = param_1[1] + -1;
    if (-1 < iVar2) {
      puVar3 = (uint *)(*param_2 + iVar2 * 4);
      do {
        uVar1 = *(uint *)((*param_1 - *param_2) + (int)puVar3);
        if (*puVar3 != uVar1) {
          return (-(uint)(*puVar3 < uVar1) & 2) - 1;
        }
        iVar2 = iVar2 + -1;
        puVar3 = puVar3 + -1;
      } while (-1 < iVar2);
    }
    iVar2 = 0;
  }
  return iVar2;
}



uint FUN_00a9ae60(int *param_1,int *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint *puVar4;
  int iVar5;
  uint uVar6;
  
  if (param_1 == (int *)0x0) {
    return (uint)(param_2 != (int *)0x0);
  }
  if (param_2 == (int *)0x0) {
    return 0xffffffff;
  }
  iVar5 = param_1[3];
  if (iVar5 != param_2[3]) {
    return (uint)(iVar5 == 0) * 2 - 1;
  }
  if (iVar5 == 0) {
    uVar3 = 1;
    uVar6 = 0xffffffff;
  }
  else {
    uVar3 = 0xffffffff;
    uVar6 = 1;
  }
  iVar5 = param_1[1];
  if (iVar5 <= param_2[1]) {
    if (iVar5 < param_2[1]) {
      return uVar6;
    }
    iVar5 = iVar5 + -1;
    if (-1 < iVar5) {
      puVar4 = (uint *)(*param_2 + iVar5 * 4);
      do {
        uVar1 = *(uint *)((*param_1 - *param_2) + (int)puVar4);
        uVar2 = *puVar4;
        if (uVar1 >= uVar2 && uVar1 != uVar2) {
          return uVar3;
        }
        if (uVar1 < uVar2) {
          return uVar6;
        }
        iVar5 = iVar5 + -1;
        puVar4 = puVar4 + -1;
      } while (-1 < iVar5);
    }
    uVar3 = 0;
  }
  return uVar3;
}



undefined4 FUN_00a9af00(int *param_1,int param_2)

{
  int iVar1;
  uint *puVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  
  if (param_2 < 0) {
    return 0;
  }
  iVar5 = (int)(param_2 + (param_2 >> 0x1f & 0x1fU)) >> 5;
  if (param_1[1] <= iVar5) {
    iVar1 = iVar5 + 1;
    piVar3 = param_1;
    if (param_1[2] < iVar1) {
      piVar3 = (int *)FUN_00a9ab60(param_1,iVar1);
    }
    if (piVar3 == (int *)0x0) {
      return 0;
    }
    for (iVar4 = param_1[1]; iVar4 < iVar1; iVar4 = iVar4 + 1) {
      *(undefined4 *)(*param_1 + iVar4 * 4) = 0;
    }
    param_1[1] = iVar1;
  }
  puVar2 = (uint *)(*param_1 + iVar5 * 4);
  *puVar2 = *puVar2 | 1 << ((byte)param_2 & 0x1f);
  return 1;
}



uint FUN_00a9af90(int *param_1,int param_2)

{
  int iVar1;
  
  if ((-1 < param_2) &&
     (iVar1 = (int)(param_2 + (param_2 >> 0x1f & 0x1fU)) >> 5, iVar1 < param_1[1])) {
    return *(uint *)(*param_1 + iVar1 * 4) >> ((byte)param_2 & 0x1f) & 1;
  }
  return 0;
}



undefined4 FUN_00a9afd0(int *param_1,uint param_2)

{
  uint *puVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  
  if (-1 < (int)param_2) {
    iVar3 = (int)(param_2 + ((int)param_2 >> 0x1f & 0x1fU)) >> 5;
    param_2 = param_2 & 0x8000001f;
    if ((int)param_2 < 0) {
      param_2 = (param_2 - 1 | 0xffffffe0) + 1;
    }
    if (iVar3 < param_1[1]) {
      if (param_2 == 0) {
        param_1[1] = iVar3;
      }
      else {
        param_1[1] = iVar3 + 1;
        puVar1 = (uint *)(*param_1 + iVar3 * 4);
        *puVar1 = *puVar1 & ~(-1 << ((byte)param_2 & 0x1f));
      }
      iVar3 = param_1[1];
      if (0 < iVar3) {
        piVar4 = (int *)(*param_1 + -4 + iVar3 * 4);
        do {
          iVar2 = *piVar4;
          piVar4 = piVar4 + -1;
          if (iVar2 != 0) break;
          iVar3 = iVar3 + -1;
        } while (0 < iVar3);
        param_1[1] = iVar3;
      }
      return 1;
    }
  }
  return 0;
}



void FUN_00a9b040(int param_1,int param_2)

{
  if ((param_2 != 0) && (*(int *)(param_1 + 4) != 0)) {
    *(undefined4 *)(param_1 + 0xc) = 1;
    return;
  }
  *(undefined4 *)(param_1 + 0xc) = 0;
  return;
}



int FUN_00a9b070(int param_1,int param_2,int param_3)

{
  uint uVar1;
  uint uVar2;
  uint *puVar3;
  bool bVar4;
  
  uVar1 = *(uint *)(param_2 + -4 + param_3 * 4);
  uVar2 = *(uint *)(param_1 + -4 + param_3 * 4);
  bVar4 = uVar1 < uVar2;
  if (uVar1 != uVar2) {
LAB_00a9b08a:
    return (-(uint)bVar4 & 2) - 1;
  }
  param_3 = param_3 + -2;
  if (-1 < param_3) {
    puVar3 = (uint *)(param_2 + param_3 * 4);
    do {
      uVar1 = *(uint *)((param_1 - param_2) + (int)puVar3);
      bVar4 = *puVar3 < uVar1;
      if (*puVar3 != uVar1) goto LAB_00a9b08a;
      param_3 = param_3 + -1;
      puVar3 = puVar3 + -1;
    } while (-1 < param_3);
  }
  return 0;
}



int FUN_00a9b0c0(int param_1,int param_2,int param_3,int param_4)

{
  uint uVar1;
  uint uVar2;
  uint *puVar3;
  int iVar4;
  int *piVar5;
  bool bVar6;
  
  if (param_4 < 0) {
    piVar5 = (int *)(param_2 + ((param_3 + -1) - param_4) * 4);
    iVar4 = param_4;
    do {
      if (*piVar5 != 0) {
        return -1;
      }
      iVar4 = iVar4 + 1;
      piVar5 = piVar5 + -1;
    } while (iVar4 < 0);
  }
  if (0 < param_4) {
    piVar5 = (int *)(param_1 + (param_3 + -1 + param_4) * 4);
    do {
      if (*piVar5 != 0) {
        return 1;
      }
      param_4 = param_4 + -1;
      piVar5 = piVar5 + -1;
    } while (0 < param_4);
  }
  uVar1 = *(uint *)(param_1 + -4 + param_3 * 4);
  uVar2 = *(uint *)(param_2 + -4 + param_3 * 4);
  bVar6 = uVar2 < uVar1;
  if (uVar2 != uVar1) {
LAB_00a9b119:
    return (-(uint)bVar6 & 2) - 1;
  }
  param_3 = param_3 + -2;
  if (-1 < param_3) {
    puVar3 = (uint *)(param_2 + param_3 * 4);
    do {
      uVar1 = *(uint *)((param_1 - param_2) + (int)puVar3);
      bVar6 = *puVar3 < uVar1;
      if (*puVar3 != uVar1) goto LAB_00a9b119;
      param_3 = param_3 + -1;
      puVar3 = puVar3 + -1;
    } while (-1 < param_3);
  }
  return 0;
}



int FUN_00a9b160(int param_1)

{
  int iVar1;
  int iVar2;
  
  if (param_1 == 0) {
    return 0;
  }
  iVar1 = FUN_00a9aa10();
  if (iVar1 != 0) {
    iVar2 = FUN_00a9aba0(iVar1,param_1);
    if (iVar2 != 0) {
      return iVar1;
    }
    FUN_00a9a9b0(iVar1);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

char * FUN_00a9b1a0(undefined4 param_1)

{
  char cVar1;
  bool bVar2;
  int iVar3;
  undefined4 *puVar4;
  char *pcVar5;
  undefined4 uVar6;
  char *pcVar7;
  int iVar8;
  undefined4 *puVar9;
  int local_c;
  
  bVar2 = false;
  local_c = 0;
  iVar3 = FUN_00a9a920(param_1);
  iVar8 = (iVar3 * 3) / 1000 + (iVar3 * 3) / 10;
  iVar3 = iVar8 + 2;
  puVar4 = (undefined4 *)FUN_00a84f80((iVar3 / 9) * 4 + 4,".\\crypto\\bn\\bn_print.c",0x76);
  pcVar5 = (char *)FUN_00a84f80(iVar8 + 5,".\\crypto\\bn\\bn_print.c",0x77);
  if ((pcVar5 == (char *)0x0) || (puVar4 == (undefined4 *)0x0)) {
    FUN_00a7f3c0(3,0x68,0x41,".\\crypto\\bn\\bn_print.c",0x7a);
  }
  else {
    local_c = FUN_00a9b160(param_1);
    if (local_c != 0) {
      if (*(int *)(local_c + 4) == 0) {
        *pcVar5 = '0';
        pcVar5[1] = '\0';
        bVar2 = true;
      }
      else {
        pcVar7 = pcVar5;
        if (*(int *)(local_c + 0xc) != 0) {
          *pcVar5 = '-';
          pcVar7 = pcVar5 + 1;
        }
        iVar8 = *(int *)(local_c + 4);
        puVar9 = puVar4;
        while (iVar8 != 0) {
          uVar6 = FUN_00a9b730(local_c,1000000000);
          *puVar9 = uVar6;
          puVar9 = puVar9 + 1;
          iVar8 = *(int *)(local_c + 4);
        }
        FUN_00a86220(pcVar7,pcVar5 + (iVar3 - (int)pcVar7) + 3,&DAT_00db9374,puVar9[-1]);
        cVar1 = *pcVar7;
        while (cVar1 != '\0') {
          pcVar7 = pcVar7 + 1;
          cVar1 = *pcVar7;
        }
        while (puVar9 = puVar9 + -1, puVar9 != puVar4) {
          FUN_00a86220(pcVar7,pcVar5 + (iVar3 - (int)pcVar7) + 3,&DAT_00db936c,puVar9[-1]);
          cVar1 = *pcVar7;
          while (cVar1 != '\0') {
            pcVar7 = pcVar7 + 1;
            cVar1 = *pcVar7;
          }
        }
        bVar2 = true;
      }
    }
  }
  if (puVar4 != (undefined4 *)0x0) {
    FUN_00a85120(puVar4);
  }
  if (local_c != 0) {
    FUN_00a9a9b0(local_c);
  }
  if ((!bVar2) && (pcVar5 != (char *)0x0)) {
    FUN_00a85120(pcVar5);
    return (char *)0x0;
  }
  return pcVar5;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a9b370(int **param_1,byte *param_2)

{
  byte bVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int *piVar5;
  byte *pbVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  int iVar11;
  uint local_8;
  
  iVar10 = 0;
  if ((param_2 == (byte *)0x0) || (bVar1 = *param_2, bVar1 == 0)) {
    return 0;
  }
  if (bVar1 == 0x2d) {
    param_2 = param_2 + 1;
  }
  local_8 = (uint)(bVar1 == 0x2d);
  iVar11 = 0;
  for (iVar2 = _isxdigit((uint)*param_2); iVar2 != 0; iVar2 = _isxdigit((uint)param_2[iVar2])) {
    iVar2 = iVar11 + 1;
    iVar11 = iVar11 + 1;
  }
  iVar2 = iVar11 + local_8;
  if (param_1 == (int **)0x0) {
    return iVar2;
  }
  piVar3 = *param_1;
  if (piVar3 == (int *)0x0) {
    piVar3 = (int *)FUN_00a9aa10();
    if (piVar3 == (int *)0x0) {
      return 0;
    }
  }
  else {
    FUN_00a9ac50(piVar3,0);
  }
  iVar4 = iVar11 * 4 + 0x1f;
  iVar4 = (int)(iVar4 + (iVar4 >> 0x1f & 0x1fU)) >> 5;
  piVar5 = piVar3;
  if (piVar3[2] < iVar4) {
    piVar5 = (int *)FUN_00a9ab60(piVar3,iVar4);
  }
  if (piVar5 == (int *)0x0) {
    if (*param_1 != (int *)0x0) {
      return 0;
    }
    FUN_00a9a9b0(piVar3);
    return 0;
  }
  for (; 0 < iVar11; iVar11 = iVar11 + -8) {
    iVar4 = 8;
    if (iVar11 < 8) {
      iVar4 = iVar11;
    }
    uVar9 = 0;
    pbVar6 = param_2 + (iVar11 - iVar4);
    do {
      iVar7 = (int)(char)*pbVar6;
      uVar8 = iVar7 - 0x30;
      if (9 < uVar8) {
        if (iVar7 - 0x61U < 6) {
          uVar8 = iVar7 - 0x57;
        }
        else if (iVar7 - 0x41U < 6) {
          uVar8 = iVar7 - 0x37;
        }
        else {
          uVar8 = 0;
        }
      }
      iVar4 = iVar4 + -1;
      uVar9 = uVar9 << 4 | uVar8;
      pbVar6 = pbVar6 + 1;
    } while (0 < iVar4);
    *(uint *)(*piVar3 + iVar10 * 4) = uVar9;
    iVar10 = iVar10 + 1;
  }
  piVar3[1] = iVar10;
  if (0 < iVar10) {
    piVar5 = (int *)(*piVar3 + -4 + iVar10 * 4);
    do {
      iVar11 = *piVar5;
      piVar5 = piVar5 + -1;
      if (iVar11 != 0) break;
      iVar10 = iVar10 + -1;
    } while (0 < iVar10);
    piVar3[1] = iVar10;
  }
  piVar3[3] = local_8;
  *param_1 = piVar3;
  return iVar2;
}



int FUN_00a9b510(int **param_1,byte *param_2)

{
  byte bVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int *piVar5;
  uint uVar6;
  int iVar7;
  
  if ((param_2 == (byte *)0x0) || (bVar1 = *param_2, bVar1 == 0)) {
    return 0;
  }
  if (bVar1 == 0x2d) {
    param_2 = param_2 + 1;
  }
  uVar6 = (uint)(bVar1 == 0x2d);
  iVar7 = 0;
  for (iVar2 = _isdigit((uint)*param_2); iVar2 != 0; iVar2 = _isdigit((uint)param_2[iVar2])) {
    iVar2 = iVar7 + 1;
    iVar7 = iVar7 + 1;
  }
  iVar2 = iVar7 + uVar6;
  if (param_1 == (int **)0x0) {
    return iVar2;
  }
  piVar3 = *param_1;
  if (piVar3 == (int *)0x0) {
    piVar3 = (int *)FUN_00a9aa10();
    if (piVar3 == (int *)0x0) {
      return 0;
    }
  }
  else {
    FUN_00a9ac50(piVar3,0);
  }
  iVar4 = iVar7 * 4 + 0x1f;
  iVar4 = (int)(iVar4 + (iVar4 >> 0x1f & 0x1fU)) >> 5;
  piVar5 = piVar3;
  if (piVar3[2] < iVar4) {
    piVar5 = (int *)FUN_00a9ab60(piVar3,iVar4);
  }
  if (piVar5 == (int *)0x0) {
    if (*param_1 != (int *)0x0) {
      return 0;
    }
    FUN_00a9a9b0(piVar3);
    return 0;
  }
  iVar7 = (iVar7 / 9 + 1) * 9 - iVar7;
  if (iVar7 == 9) {
    iVar7 = 0;
  }
  iVar4 = 0;
  bVar1 = *param_2;
  while (bVar1 != 0) {
    iVar7 = iVar7 + 1;
    param_2 = param_2 + 1;
    iVar4 = (char)bVar1 + -0x30 + iVar4 * 10;
    if (iVar7 == 9) {
      FUN_00a9b970(piVar3,1000000000);
      FUN_00a9b7f0(piVar3,iVar4);
      iVar4 = 0;
      iVar7 = 0;
    }
    bVar1 = *param_2;
  }
  iVar7 = piVar3[1];
  piVar3[3] = uVar6;
  if (0 < iVar7) {
    piVar5 = (int *)(*piVar3 + -4 + iVar7 * 4);
    do {
      iVar4 = *piVar5;
      piVar5 = piVar5 + -1;
      if (iVar4 != 0) break;
      iVar7 = iVar7 + -1;
    } while (0 < iVar7);
    piVar3[1] = iVar7;
  }
  *param_1 = piVar3;
  return iVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a9b6d0(int *param_1,int param_2)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *puVar3;
  
  uVar1 = 0;
  if (param_2 != 0) {
    iVar2 = param_1[1] + -1;
    if (-1 < iVar2) {
      puVar3 = (undefined4 *)(*param_1 + iVar2 * 4);
      do {
        uVar1 = __aullrem(*puVar3,uVar1,param_2,0);
        iVar2 = iVar2 + -1;
        puVar3 = puVar3 + -1;
      } while (-1 < iVar2);
    }
    return uVar1;
  }
  return 0xffffffff;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00a9b730(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  byte bVar4;
  uint local_4;
  
  local_4 = 0;
  if (param_2 == 0) {
    return 0xffffffff;
  }
  if (param_1[1] == 0) {
    return 0;
  }
  iVar2 = FUN_00a9a8d0(param_2);
  bVar4 = (byte)(0x20 - iVar2);
  param_2 = param_2 << (bVar4 & 0x1f);
  iVar2 = FUN_00a9bb30(param_1,param_1,0x20 - iVar2);
  if (iVar2 == 0) {
    return 0xffffffff;
  }
  iVar2 = param_1[1] + -1;
  while (-1 < iVar2) {
    iVar1 = *(int *)(*param_1 + iVar2 * 4);
    iVar3 = FUN_00acb280(local_4,iVar1,param_2);
    local_4 = iVar1 - iVar3 * param_2;
    iVar2 = iVar2 + -1;
    *(int *)(*param_1 + 4 + iVar2 * 4) = iVar3;
  }
  iVar2 = param_1[1];
  if ((0 < iVar2) && (*(int *)(*param_1 + -4 + iVar2 * 4) == 0)) {
    param_1[1] = iVar2 + -1;
  }
  return local_4 >> (bVar4 & 0x1f);
}



undefined4 FUN_00a9b7f0(int *param_1,uint param_2)

{
  undefined4 uVar1;
  uint uVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  
  if (param_2 == 0) {
    return 1;
  }
  if (param_1[1] != 0) {
    if (param_1[3] == 0) {
      iVar5 = 0;
      while (iVar5 < param_1[1]) {
        iVar3 = iVar5 * 4;
        uVar2 = *(int *)(*param_1 + iVar5 * 4) + param_2;
        param_2 = (uint)(uVar2 < param_2);
        iVar5 = iVar5 + 1;
        *(uint *)(*param_1 + iVar3) = uVar2;
        if (param_2 == 0) {
          return 1;
        }
      }
      if ((param_2 != 0) && (iVar5 == param_1[1])) {
        iVar3 = param_1[1] + 1;
        piVar4 = param_1;
        if (param_1[2] < iVar3) {
          piVar4 = (int *)FUN_00a9ab60(param_1,iVar3);
        }
        if (piVar4 == (int *)0x0) {
          return 0;
        }
        param_1[1] = param_1[1] + 1;
        *(uint *)(*param_1 + iVar5 * 4) = param_2;
      }
      uVar1 = 1;
    }
    else {
      param_1[3] = 0;
      uVar1 = FUN_00a9b8a0(param_1,param_2);
      if (param_1[1] != 0) {
        param_1[3] = (uint)(param_1[3] == 0);
        return uVar1;
      }
    }
    return uVar1;
  }
  uVar1 = FUN_00a9ac50(param_1,param_2);
  return uVar1;
}



int FUN_00a9b8a0(uint **param_1,uint param_2)

{
  int iVar1;
  uint *puVar2;
  
  if (param_2 == 0) {
    return 1;
  }
  if (param_1[1] == (uint *)0x0) {
    iVar1 = FUN_00a9ac50(param_1,param_2);
    if (iVar1 != 0) {
      FUN_00a9b040(param_1,1);
    }
    return iVar1;
  }
  if (param_1[3] != (uint *)0x0) {
    param_1[3] = (uint *)0x0;
    iVar1 = FUN_00a9b7f0(param_1,param_2);
    param_1[3] = (uint *)0x1;
    return iVar1;
  }
  if ((param_1[1] == (uint *)0x1) && (puVar2 = *param_1, *puVar2 < param_2)) {
    *puVar2 = param_2 - *puVar2;
    param_1[3] = (uint *)0x1;
    return 1;
  }
  puVar2 = (uint *)0x0;
  if (**param_1 < param_2) {
    iVar1 = 0;
    do {
      *(int *)(iVar1 + (int)*param_1) = *(int *)(iVar1 + (int)*param_1) - param_2;
      puVar2 = (uint *)((int)puVar2 + 1);
      param_2 = 1;
      iVar1 = (int)puVar2 * 4;
    } while ((*param_1)[(int)puVar2] == 0);
  }
  (*param_1)[(int)puVar2] = (*param_1)[(int)puVar2] - param_2;
  if (((*param_1)[(int)puVar2] == 0) && (puVar2 == (uint *)((int)param_1[1] + -1))) {
    param_1[1] = (uint *)((int)param_1[1] + -1);
  }
  return 1;
}



undefined4 FUN_00a9b970(int *param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  
  if (param_1[1] != 0) {
    if (param_2 == 0) {
      FUN_00a9ac50(param_1,0);
      return 1;
    }
    iVar1 = FUN_00acaf70(*param_1,*param_1,param_1[1],param_2);
    if (iVar1 != 0) {
      piVar2 = param_1;
      if (param_1[2] < param_1[1] + 1) {
        piVar2 = (int *)FUN_00a9ab60(param_1,param_1[1] + 1);
      }
      if (piVar2 == (int *)0x0) {
        return 0;
      }
      *(int *)(*param_1 + param_1[1] * 4) = iVar1;
      param_1[1] = param_1[1] + 1;
    }
  }
  return 1;
}



undefined4 FUN_00a9b9e0(uint **param_1,uint **param_2)

{
  uint uVar1;
  uint **ppuVar2;
  uint *puVar3;
  uint uVar4;
  int iVar5;
  uint *puVar6;
  
  if (param_1 == param_2) {
    ppuVar2 = param_1;
    if ((int)param_1[2] < (int)param_2[1] + 1) {
      ppuVar2 = (uint **)FUN_00a9ab60(param_1,(int)param_2[1] + 1);
    }
    if (ppuVar2 != (uint **)0x0) goto LAB_00a9ba37;
  }
  else {
    param_1[3] = param_2[3];
    ppuVar2 = param_1;
    if ((int)param_1[2] < (int)param_2[1] + 1) {
      ppuVar2 = (uint **)FUN_00a9ab60(param_1,(int)param_2[1] + 1);
    }
    if (ppuVar2 != (uint **)0x0) {
      param_1[1] = param_2[1];
LAB_00a9ba37:
      puVar3 = *param_1;
      uVar4 = 0;
      iVar5 = 0;
      puVar6 = *param_2;
      if (0 < (int)param_2[1]) {
        do {
          uVar1 = *puVar6;
          *puVar3 = uVar1 * 2 | uVar4;
          uVar4 = -((int)uVar1 >> 0x1f);
          iVar5 = iVar5 + 1;
          puVar6 = puVar6 + 1;
          puVar3 = puVar3 + 1;
        } while (iVar5 < (int)param_2[1]);
        if (uVar4 != 0) {
          *puVar3 = 1;
          param_1[1] = (uint *)((int)param_1[1] + 1);
        }
      }
      return 1;
    }
  }
  return 0;
}



undefined4 FUN_00a9ba80(int *param_1,int *param_2)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int *piVar4;
  int iVar5;
  uint *puVar6;
  uint uVar7;
  int iVar8;
  
  iVar8 = param_2[1];
  if (iVar8 == 0) {
    FUN_00a9ac50(param_1,0);
    return 1;
  }
  iVar1 = *param_2;
  iVar5 = iVar8 - (uint)(*(int *)(iVar1 + -4 + iVar8 * 4) == 1);
  if (param_2 != param_1) {
    piVar4 = param_1;
    if (param_1[2] < iVar5) {
      piVar4 = (int *)FUN_00a9ab60(param_1,iVar5);
    }
    if (piVar4 == (int *)0x0) {
      return 0;
    }
    param_1[3] = param_2[3];
  }
  uVar2 = *(uint *)(iVar1 + -4 + iVar8 * 4);
  iVar3 = *param_1;
  iVar8 = iVar8 + -1;
  if (uVar2 >> 1 != 0) {
    *(uint *)(iVar3 + iVar8 * 4) = uVar2 >> 1;
  }
  if (0 < iVar8) {
    puVar6 = (uint *)(iVar3 + iVar8 * 4);
    do {
      uVar7 = uVar2 << 0x1f;
      uVar2 = *(uint *)((iVar1 - iVar3) + -4 + (int)puVar6);
      puVar6 = puVar6 + -1;
      iVar8 = iVar8 + -1;
      *puVar6 = uVar2 >> 1 | uVar7;
    } while (0 < iVar8);
  }
  param_1[1] = iVar5;
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a9bb30(void **param_1,int *param_2,uint param_3)

{
  int iVar1;
  uint uVar2;
  void **ppvVar3;
  int iVar4;
  void *pvVar5;
  uint *puVar6;
  int *piVar7;
  int iVar8;
  undefined4 *puVar9;
  
  param_1[3] = (void *)param_2[3];
  iVar8 = (int)(param_3 + ((int)param_3 >> 0x1f & 0x1fU)) >> 5;
  iVar1 = param_2[1] + 1 + iVar8;
  ppvVar3 = param_1;
  if ((int)param_1[2] < iVar1) {
    ppvVar3 = (void **)FUN_00a9ab60(param_1,iVar1);
  }
  if (ppvVar3 == (void **)0x0) {
    return 0;
  }
  param_3 = param_3 & 0x8000001f;
  if ((int)param_3 < 0) {
    param_3 = (param_3 - 1 | 0xffffffe0) + 1;
  }
  pvVar5 = *param_1;
  iVar1 = *param_2;
  *(undefined4 *)((int)pvVar5 + (param_2[1] + iVar8) * 4) = 0;
  if (param_3 == 0) {
    iVar4 = param_2[1] + -1;
    if (-1 < iVar4) {
      puVar9 = (undefined4 *)((int)pvVar5 + (iVar4 + iVar8) * 4);
      do {
        *puVar9 = *(undefined4 *)(iVar1 + iVar4 * 4);
        iVar4 = iVar4 + -1;
        puVar9 = puVar9 + -1;
      } while (-1 < iVar4);
    }
  }
  else {
    iVar4 = param_2[1] + -1;
    if (-1 < iVar4) {
      puVar6 = (uint *)((int)pvVar5 + (iVar4 + iVar8) * 4 + 4);
      do {
        uVar2 = *(uint *)(iVar1 + iVar4 * 4);
        iVar4 = iVar4 + -1;
        *puVar6 = *puVar6 | uVar2 >> (0x20 - (byte)param_3 & 0x1f);
        puVar6 = puVar6 + -1;
        *puVar6 = uVar2 << ((byte)param_3 & 0x1f);
      } while (-1 < iVar4);
    }
  }
  _memset(pvVar5,0,iVar8 * 4);
  pvVar5 = (void *)(param_2[1] + 1 + iVar8);
  param_1[1] = pvVar5;
  if (0 < (int)pvVar5) {
    piVar7 = (int *)((int)*param_1 + (int)pvVar5 * 4 + -4);
    do {
      iVar1 = *piVar7;
      piVar7 = piVar7 + -1;
      if (iVar1 != 0) break;
      pvVar5 = (void *)((int)pvVar5 + -1);
    } while (0 < (int)pvVar5);
    param_1[1] = pvVar5;
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a9bc70(uint **param_1,uint **param_2,uint param_3)

{
  uint uVar1;
  byte bVar2;
  int iVar3;
  uint *puVar4;
  uint **ppuVar5;
  uint *puVar6;
  uint uVar7;
  int iVar8;
  uint *puVar9;
  
  iVar8 = (int)(param_3 + ((int)param_3 >> 0x1f & 0x1fU)) >> 5;
  uVar7 = param_3 & 0x8000001f;
  if ((int)uVar7 < 0) {
    uVar7 = (uVar7 - 1 | 0xffffffe0) + 1;
  }
  bVar2 = (byte)uVar7;
  if ((iVar8 < (int)param_2[1]) && (param_2[1] != (uint *)0x0)) {
    iVar3 = FUN_00a9a920(param_2);
    iVar3 = iVar3 + (0x1f - param_3);
    puVar4 = (uint *)((int)(iVar3 + (iVar3 >> 0x1f & 0x1fU)) >> 5);
    if (param_1 == param_2) {
      if (param_3 == 0) {
        return 1;
      }
    }
    else {
      param_1[3] = param_2[3];
      ppuVar5 = param_1;
      if ((int)param_1[2] < (int)puVar4) {
        ppuVar5 = (uint **)FUN_00a9ab60(param_1,puVar4);
      }
      if (ppuVar5 == (uint **)0x0) {
        return 0;
      }
    }
    puVar9 = *param_1;
    iVar3 = (int)param_2[1] - iVar8;
    puVar6 = *param_2 + iVar8;
    param_1[1] = puVar4;
    if (uVar7 == 0) {
      if (iVar3 != 0) {
        do {
          iVar8 = iVar3;
          *puVar9 = *puVar6;
          puVar9 = puVar9 + 1;
          puVar6 = puVar6 + 1;
          iVar3 = iVar8 + -1;
        } while (iVar3 != 0);
        return iVar8;
      }
    }
    else {
      uVar7 = *puVar6;
      while (iVar3 = iVar3 + -1, iVar3 != 0) {
        puVar6 = puVar6 + 1;
        uVar1 = *puVar6;
        *puVar9 = uVar1 << (0x20 - bVar2 & 0x1f) | uVar7 >> (bVar2 & 0x1f);
        puVar9 = puVar9 + 1;
        uVar7 = uVar1;
      }
      uVar7 = uVar7 >> (bVar2 & 0x1f);
      if (uVar7 != 0) {
        *puVar9 = uVar7;
        return 1;
      }
    }
  }
  else {
    FUN_00a9ac50(param_1,0);
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a9bdb0(char *param_1,char *param_2,undefined4 param_3,undefined4 param_4,int param_5,
                 undefined4 param_6,size_t param_7,byte *param_8)

{
  char cVar1;
  int iVar2;
  byte *pbVar3;
  size_t _Size;
  size_t sVar4;
  size_t local_130;
  undefined local_12c;
  undefined local_12b;
  undefined local_12a;
  undefined local_129;
  int local_128;
  int iStack_124;
  size_t local_120;
  undefined4 local_11c;
  undefined4 local_118;
  undefined local_114 [208];
  byte abStack_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_130;
  local_118 = param_3;
  local_11c = param_6;
  local_128 = 1;
  local_120 = FUN_00a92600(param_6);
  if ((int)local_120 < 0) {
    ___security_check_cookie_4();
    return;
  }
  FUN_00acbe80(local_114);
  local_130 = param_7;
  if (param_1 == (char *)0x0) {
    param_2 = param_1;
  }
  else if (param_2 == (char *)0xffffffff) {
    param_2 = param_1;
    do {
      cVar1 = *param_2;
      param_2 = param_2 + 1;
    } while (cVar1 != '\0');
    param_2 = param_2 + -(int)(param_1 + 1);
  }
  if (param_7 != 0) {
    do {
      _Size = local_120;
      if ((int)local_130 <= (int)local_120) {
        _Size = local_130;
      }
      local_12c = (undefined)((uint)local_128 >> 0x18);
      local_129 = (undefined)local_128;
      local_12b = (undefined)((uint)local_128 >> 0x10);
      local_12a = (undefined)((uint)local_128 >> 8);
      iVar2 = FUN_00acbbc0(local_114,param_1,param_2,param_6,0);
      if ((((iVar2 == 0) || (iVar2 = FUN_00acbdc0(local_114,local_118,param_4), iVar2 == 0)) ||
          (iVar2 = FUN_00acbdc0(local_114,&local_12c,4), iVar2 == 0)) ||
         (iVar2 = FUN_00acbdd0(local_114,abStack_44,0), iVar2 == 0)) {
        FUN_00acbf20(local_114);
        goto LAB_00a9be88;
      }
      _memcpy(param_8,abStack_44,_Size);
      if (1 < param_5) {
        iStack_124 = param_5 + -1;
        do {
          FUN_00acbf90(param_6,param_1,param_2,abStack_44,local_120,abStack_44,0);
          if (0 < (int)_Size) {
            pbVar3 = param_8;
            sVar4 = _Size;
            do {
              *pbVar3 = *pbVar3 ^ pbVar3[(int)(abStack_44 + -(int)param_8)];
              pbVar3 = pbVar3 + 1;
              sVar4 = sVar4 - 1;
              param_6 = local_11c;
            } while (sVar4 != 0);
          }
          iStack_124 = iStack_124 + -1;
        } while (iStack_124 != 0);
      }
      local_128 = local_128 + 1;
      local_130 = local_130 - _Size;
      param_8 = param_8 + _Size;
    } while (local_130 != 0);
  }
  FUN_00acbf20(local_114);
LAB_00a9be88:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a9c530(undefined4 param_1,char *param_2,int param_3,int *param_4,undefined4 param_5,
                 undefined4 param_6,undefined4 param_7)

{
  char cVar1;
  int *piVar2;
  char *pcVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  size_t sVar7;
  int iVar8;
  undefined4 uVar9;
  undefined4 local_c8;
  int local_c4;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  undefined4 local_b4;
  undefined4 local_b0;
  undefined local_ac [24];
  undefined auStack_94 [16];
  undefined auStack_84 [16];
  undefined auStack_74 [48];
  undefined auStack_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_c8;
  local_c0 = param_1;
  local_b0 = param_5;
  local_c8 = param_6;
  local_bc = 0;
  FUN_00a91330(local_ac);
  if (((param_4 == (int *)0x0) || (*param_4 != 0x10)) || (param_4[1] == 0)) {
    uVar9 = 0x5b;
LAB_00a9c5ca:
    FUN_00a7f3c0(6,0x75,0x72,".\\crypto\\evp\\p5_crpt.c",uVar9);
    ___security_check_cookie_4();
    return;
  }
  local_b8 = ((undefined4 *)param_4[1])[2];
  piVar2 = (int *)FUN_00acc120(0,&local_b8,*(undefined4 *)param_4[1]);
  if (piVar2 == (int *)0x0) {
    uVar9 = 0x61;
    goto LAB_00a9c5ca;
  }
  if (piVar2[1] == 0) {
    local_c4 = 1;
  }
  else {
    local_c4 = FUN_00a9db70(piVar2[1]);
  }
  local_b4 = *(undefined4 *)*piVar2;
  uVar9 = ((undefined4 *)*piVar2)[2];
  iVar4 = 0;
  if ((param_2 != (char *)0x0) && (iVar4 = param_3, param_3 == -1)) {
    pcVar3 = param_2;
    do {
      cVar1 = *pcVar3;
      pcVar3 = pcVar3 + 1;
    } while (cVar1 != '\0');
    iVar4 = (int)pcVar3 - (int)(param_2 + 1);
  }
  iVar5 = FUN_00a91380(local_ac,local_c8,0);
  if (((iVar5 != 0) && (iVar4 = FUN_00a91530(local_ac,param_2,iVar4), iVar4 != 0)) &&
     (iVar4 = FUN_00a91530(local_ac,uVar9,local_b4), iVar4 != 0)) {
    FUN_00acc140(piVar2);
    iVar4 = FUN_00a91540(local_ac,auStack_84,0);
    uVar9 = local_c8;
    if (iVar4 != 0) {
      iVar5 = FUN_00a92600(local_c8);
      iVar4 = local_c4;
      if (iVar5 < 0) goto LAB_00a9c6c6;
      iVar8 = 1;
      if (1 < local_c4) {
        do {
          iVar6 = FUN_00a91380(local_ac,uVar9,0);
          if (((iVar6 == 0) || (iVar6 = FUN_00a91530(local_ac,auStack_84,iVar5), iVar6 == 0)) ||
             (iVar6 = FUN_00a91540(local_ac,auStack_84,0), iVar6 == 0)) goto LAB_00a9c83b;
          iVar8 = iVar8 + 1;
        } while (iVar8 < iVar4);
      }
      uVar9 = local_b0;
      iVar4 = FUN_00a989a0(local_b0);
      if (0x40 < iVar4) {
        FUN_00a7fd60(".\\crypto\\evp\\p5_crpt.c",0x81,
                     "EVP_CIPHER_key_length(cipher) <= (int)sizeof(md_tmp)");
      }
      sVar7 = FUN_00a989a0(uVar9);
      _memcpy(auStack_44,auStack_84,sVar7);
      iVar4 = FUN_00aa3450(uVar9);
      if (0x10 < iVar4) {
        FUN_00a7fd60(".\\crypto\\evp\\p5_crpt.c",0x83,"EVP_CIPHER_iv_length(cipher) <= 16");
      }
      sVar7 = FUN_00aa3450(uVar9);
      iVar4 = FUN_00aa3450(uVar9);
      _memcpy(auStack_94,auStack_74 + -iVar4,sVar7);
      iVar4 = FUN_00aabb10(local_c0,uVar9,0,auStack_44,auStack_94,param_7);
      if (iVar4 != 0) {
        FUN_00a84330(auStack_84,0x40);
        FUN_00a84330(auStack_44,0x40);
        FUN_00a84330(auStack_94,0x10);
        FUN_00a915c0(local_ac);
        goto LAB_00a9c6c6;
      }
    }
  }
LAB_00a9c83b:
  FUN_00a915c0(local_ac);
LAB_00a9c6c6:
  ___security_check_cookie_4();
  return;
}



void FUN_00a9c870(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db9444);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00a9c890(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined local_24 [32];
  undefined4 uStack_4;
  
  uStack_4 = 0xa9c89a;
  iVar3 = FUN_00accb80(&param_2,local_24);
  iVar2 = param_5;
  iVar1 = param_4;
  if (iVar3 == 0) {
    FUN_00a7f3c0(0xd,0xd9,0xad,".\\crypto\\asn1\\a_time.c",0x73);
    return 0;
  }
  if ((param_4 != 0) || (param_5 != 0)) {
    iVar4 = FUN_00accd20(iVar3,param_4,param_5);
    if (iVar4 == 0) {
      return 0;
    }
  }
  if ((0x31 < *(int *)(iVar3 + 0x14)) && (*(int *)(iVar3 + 0x14) < 0x96)) {
    uVar5 = FUN_00acca40(param_1,param_2,param_3,iVar1,iVar2);
    return uVar5;
  }
  uVar5 = FUN_00acc7f0(param_1,param_2,param_3,iVar1,iVar2);
  return uVar5;
}



undefined4 FUN_00a9c950(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 4) == 0x18) {
    uVar1 = FUN_00acc680();
    return uVar1;
  }
  if (*(int *)(param_1 + 4) == 0x17) {
    uVar1 = FUN_00acc910();
    return uVar1;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __fastcall FUN_00a9c9b0(undefined4 param_1_00,byte param_2_00,uint param_1,undefined *param_2)

{
  int iVar1;
  byte bVar2;
  code *unaff_ESI;
  undefined auStack_14 [3];
  byte local_11;
  undefined local_10 [12];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_14;
  if (0xffff < param_1) {
    FUN_00a86220(local_10,0xb,"\\W%08lX",param_1);
    (*unaff_ESI)();
    ___security_check_cookie_4();
    return;
  }
  if (0xff < param_1) {
    FUN_00a86220(local_10,0xb,"\\U%04lX",param_1);
    (*unaff_ESI)();
    ___security_check_cookie_4();
    return;
  }
  local_11 = (byte)param_1;
  if (local_11 < 0x80) {
    bVar2 = (&DAT_00db9478)[param_1 & 0xff] & param_2_00;
  }
  else {
    bVar2 = param_2_00 & 4;
  }
  if ((bVar2 & 0x61) == 0) {
    if ((bVar2 & 6) != 0) {
      FUN_00a86220(local_10,0xb,"\\%02X",param_1 & 0xff);
      (*unaff_ESI)();
      ___security_check_cookie_4();
      return;
    }
    if ((local_11 == 0x5c) && ((param_2_00 & 0xf) != 0)) {
      (*unaff_ESI)();
      ___security_check_cookie_4();
      return;
    }
  }
  else {
    if ((bVar2 & 8) == 0) {
      iVar1 = (*unaff_ESI)();
      if (iVar1 != 0) {
        (*unaff_ESI)();
        ___security_check_cookie_4();
        return;
      }
      ___security_check_cookie_4();
      return;
    }
    if (param_2 != (undefined *)0x0) {
      *param_2 = 1;
    }
  }
  (*unaff_ESI)();
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __fastcall
FUN_00a9cb70(undefined4 param_1_00,undefined4 param_2_00,byte *param_1,int param_2,uint param_3,
            byte param_4)

{
  int iVar1;
  int iVar2;
  byte *pbVar3;
  undefined auStack_34 [3];
  byte local_31;
  uint local_30;
  int local_2c;
  byte *local_28;
  undefined4 local_24;
  undefined4 local_20;
  byte *local_1c;
  uint local_18;
  int local_14;
  int local_10;
  undefined local_c [8];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_34;
  local_1c = param_1 + param_2;
  local_28 = param_1;
  local_10 = param_2;
  local_2c = 0;
  local_24 = param_1_00;
  local_20 = param_2_00;
  if (param_1 != local_1c) {
    local_18 = param_3 & 7;
    pbVar3 = param_1;
    do {
      if ((param_1 != pbVar3) || (local_31 = 0x20, (param_4 & 1) == 0)) {
        local_31 = 0;
      }
      switch(local_18) {
      case 0:
        iVar2 = FUN_00acce50(param_1,local_10,&local_30);
        if (iVar2 < 0) goto switchD_00a9cbf6_caseD_3;
        param_1 = param_1 + iVar2;
        break;
      case 1:
        local_30 = (uint)*param_1;
        param_1 = param_1 + 1;
        break;
      case 2:
        local_30 = (uint)CONCAT11(*param_1,param_1[1]);
        param_1 = param_1 + 2;
        break;
      default:
        goto switchD_00a9cbf6_caseD_3;
      case 4:
        local_30 = (uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[2] << 8 |
                   (uint)param_1[3];
        param_1 = param_1 + 4;
      }
      if ((param_1 == local_1c) && ((param_4 & 1) != 0)) {
        local_31 = 0x40;
      }
      if ((param_3 & 8) == 0) {
        iVar2 = FUN_00a9c9b0(local_30,local_24);
        if (iVar2 < 0) {
switchD_00a9cbf6_caseD_3:
          ___security_check_cookie_4();
          return;
        }
        local_2c = local_2c + iVar2;
        pbVar3 = local_28;
      }
      else {
        local_14 = FUN_00acd100(local_c,6,local_30);
        iVar2 = 0;
        if (0 < local_14) {
          local_31 = local_31 | param_4;
          do {
            iVar1 = FUN_00a9c9b0(local_c[iVar2],local_24);
            if (iVar1 < 0) goto switchD_00a9cbf6_caseD_3;
            local_2c = local_2c + iVar1;
            iVar2 = iVar2 + 1;
            pbVar3 = local_28;
          } while (iVar2 < local_14);
        }
      }
    } while (param_1 != local_1c);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int __thiscall FUN_00a9cd50(int param_1_00,code *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  int unaff_EDI;
  
  if ((unaff_EDI != 0) && (iVar1 = param_1_00 + param_2, param_1_00 != iVar1)) {
    do {
      iVar2 = (*param_1)();
      if (iVar2 == 0) {
        return -1;
      }
      param_1_00 = param_1_00 + 1;
    } while (param_1_00 != iVar1);
  }
  return param_2 * 2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int __fastcall FUN_00a9cdc0(undefined4 *param_1_00,undefined4 param_2_00,uint param_1,code *param_2)

{
  code *pcVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 uStack_8;
  undefined4 *puStack_4;
  
  pcVar1 = param_2;
  puStack_4 = (undefined4 *)0xa9cdca;
  iVar2 = (*param_2)(param_2_00,&DAT_00d37a2c,1);
  if (iVar2 != 0) {
    if ((param_1 & 0x200) != 0) {
      uStack_8 = param_1_00[1];
      puStack_4 = param_1_00;
      uVar3 = FUN_00a889a0(&uStack_8,0);
      iVar2 = FUN_00a84f80(uVar3,".\\crypto\\asn1\\a_strex.c",0x119);
      if (iVar2 != 0) {
        param_2 = (code *)iVar2;
        FUN_00a889a0(&uStack_8,&param_2);
        iVar4 = FUN_00a9cd50(pcVar1,uVar3);
        FUN_00a85120(iVar2);
        if (-1 < iVar4) {
          return iVar4 + 1;
        }
      }
      return -1;
    }
    iVar2 = FUN_00a9cd50(pcVar1,*param_1_00);
    if (-1 < iVar2) {
      return iVar2 + 1;
    }
  }
  return -1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe
// WARNING: Removing unreachable block (ram,0x00a9cfb2)
// WARNING: Removing unreachable block (ram,0x00a9cfa1)
// WARNING: Removing unreachable block (ram,0x00a9cfed)

int __thiscall FUN_00a9ce90(uint param_1_00,int param_1,undefined4 *param_2)

{
  char cVar1;
  char *pcVar2;
  int iVar3;
  int iVar4;
  char *pcVar5;
  uint uVar6;
  code *unaff_EDI;
  int local_c;
  undefined4 local_8;
  
  local_8 = CONCAT31(local_8._1_3_,(char)param_1_00) & 0xffffff0f;
  iVar4 = param_2[1];
  local_c = 0;
  if ((param_1_00 & 0x40) != 0) {
    pcVar2 = (char *)FUN_00acd2a0(iVar4);
    pcVar5 = pcVar2;
    do {
      cVar1 = *pcVar5;
      pcVar5 = pcVar5 + 1;
    } while (cVar1 != '\0');
    iVar3 = (*unaff_EDI)(param_1,pcVar2,(int)pcVar5 - (int)(pcVar2 + 1));
    if (iVar3 == 0) {
      return -1;
    }
    iVar3 = (*unaff_EDI)(param_1,&DAT_00d37a38,1);
    if (iVar3 == 0) {
      return -1;
    }
    local_c = ((int)pcVar5 - (int)(pcVar2 + 1)) + 1;
  }
  if ((char)param_1_00 < '\0') {
LAB_00a9cf30:
    iVar4 = FUN_00a9cdc0(param_1_00);
    if (iVar4 < 0) {
      return -1;
    }
    return iVar4 + local_c;
  }
  if ((param_1_00 & 0x20) == 0) {
    if ((iVar4 - 1U < 0x1e) && (uVar6 = (uint)(char)(&DAT_00db950c)[iVar4], uVar6 != 0xffffffff))
    goto LAB_00a9cf60;
    if ((param_1_00 & 0x100) != 0) goto LAB_00a9cf30;
  }
  uVar6 = 1;
LAB_00a9cf60:
  if ((param_1_00 & 0x10) != 0) {
    if (uVar6 == 0) {
      uVar6 = 1;
    }
    else {
      uVar6 = uVar6 | 8;
    }
  }
  iVar4 = FUN_00a9cb70(param_2[2],*param_2,uVar6,local_8,0);
  if ((-1 < iVar4) &&
     ((param_1 == 0 || (iVar3 = FUN_00a9cb70(param_2[2],*param_2,uVar6,local_8,param_1), -1 < iVar3)
      ))) {
    return local_c + iVar4;
  }
  return -1;
}



undefined4 FUN_00a9d010(code *param_1)

{
  int iVar1;
  int iVar2;
  int unaff_EDI;
  
  iVar2 = 0;
  if (0 < unaff_EDI) {
    do {
      iVar1 = (*param_1)();
      if (iVar1 == 0) {
        return 0;
      }
      iVar2 = iVar2 + 1;
    } while (iVar2 < unaff_EDI);
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a9d050(code *param_1,undefined4 param_2,int param_3,uint param_4)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  undefined **ppuVar7;
  undefined **ppuVar8;
  code *pcVar9;
  int local_98;
  undefined4 local_94;
  code *local_90;
  int local_8c;
  int local_88;
  undefined *local_84;
  undefined *local_80;
  int local_7c;
  int local_78;
  undefined *local_74;
  int local_70;
  int local_6c;
  uint local_68;
  undefined4 local_64;
  undefined4 uStack_60;
  int local_5c;
  uint local_58;
  undefined *apuStack_54 [20];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_98;
  local_90 = param_1;
  local_64 = param_2;
  local_6c = -1;
  if (param_3 < 0) {
    param_3 = 0;
  }
  local_98 = param_3;
  iVar2 = FUN_00a9d010(param_1);
  if (iVar2 == 0) {
    ___security_check_cookie_4();
    return;
  }
  uVar3 = param_4 & 0xf0000;
  if (uVar3 < 0x30001) {
    if (uVar3 == 0x30000) {
      local_80 = &DAT_00db9568;
      local_8c = 2;
      param_3 = 0;
      goto LAB_00a9d186;
    }
    if (uVar3 != 0x10000) {
      if (uVar3 != 0x20000) goto LAB_00a9d3f3;
      local_80 = &DAT_00db6508;
      local_8c = 2;
      param_3 = 0;
      goto LAB_00a9d186;
    }
    local_80 = &DAT_03065068;
    local_8c = 1;
    local_84 = &DAT_00da4208;
    local_88 = 1;
    param_3 = 0;
  }
  else {
    if (uVar3 != 0x40000) goto LAB_00a9d3f3;
    local_80 = &DAT_030651b4;
    local_8c = 1;
LAB_00a9d186:
    local_84 = &DAT_00db9564;
    local_88 = 3;
  }
  if ((param_4 & 0x800000) == 0) {
    local_74 = &DAT_00da0d40;
    local_70 = 1;
  }
  else {
    local_74 = &DAT_00db9560;
    local_70 = 3;
  }
  local_68 = param_4 & 0x600000;
  local_5c = FUN_00a82440(param_2);
  local_78 = 0;
  if (0 < local_5c) {
    local_58 = param_4 & 0x100000;
    local_7c = local_5c + -1;
    uVar3 = param_4 & 0x600000;
    do {
      iVar2 = local_78;
      if (local_58 != 0) {
        iVar2 = local_7c;
      }
      iVar4 = FUN_00a824c0(param_2,iVar2);
      iVar2 = local_88;
      pcVar9 = local_90;
      if (local_6c != -1) {
        if (local_6c == *(int *)(iVar4 + 8)) {
          iVar5 = (*local_90)(local_94,local_84,local_88);
          if (iVar5 == 0) break;
          local_98 = local_98 + iVar2;
        }
        else {
          iVar2 = (*local_90)(local_94,local_80,local_8c);
          if ((iVar2 == 0) || (iVar2 = FUN_00a9d010(pcVar9), iVar2 == 0)) break;
          local_98 = local_98 + local_8c + param_3;
          uVar3 = local_68;
        }
      }
      local_6c = *(int *)(iVar4 + 8);
      uVar6 = FUN_00a92630(iVar4);
      uStack_60 = FUN_00addf10(iVar4);
      iVar2 = FUN_00a877e0(uVar6);
      if (uVar3 != 0x600000) {
        if ((uVar3 == 0x400000) || (iVar2 == 0)) {
          FUN_00a878a0(apuStack_54,0x50,uVar6,1);
          ppuVar7 = apuStack_54;
LAB_00a9d316:
          iVar4 = 0;
        }
        else if (uVar3 == 0) {
          iVar4 = 10;
          ppuVar7 = (undefined **)FUN_00a87520(iVar2);
        }
        else {
          if (uVar3 != 0x200000) {
            ppuVar7 = &PTR_02bd3fc0;
            goto LAB_00a9d316;
          }
          iVar4 = 0x19;
          ppuVar7 = (undefined **)FUN_00a875c0(iVar2);
        }
        pcVar9 = local_90;
        ppuVar8 = ppuVar7;
        do {
          cVar1 = *(char *)ppuVar8;
          ppuVar8 = (undefined **)((int)ppuVar8 + 1);
        } while (cVar1 != '\0');
        iVar5 = (int)ppuVar8 - (int)((int)ppuVar7 + 1);
        iVar2 = (*local_90)(local_94,ppuVar7,iVar5);
        if (iVar2 == 0) break;
        if ((iVar5 < iVar4) && ((param_4 & 0x2000000) != 0)) {
          iVar2 = FUN_00a9d010(pcVar9);
          if (iVar2 == 0) break;
          local_98 = local_98 + (iVar4 - iVar5);
          pcVar9 = local_90;
        }
        iVar2 = local_70;
        iVar4 = (*pcVar9)(local_94,local_74,local_70);
        if (iVar4 == 0) break;
        local_98 = local_98 + iVar5 + iVar2;
      }
      iVar2 = FUN_00a9ce90(local_94,uStack_60);
      if (iVar2 < 0) break;
      local_98 = local_98 + iVar2;
      local_7c = local_7c + -1;
      local_78 = local_78 + 1;
      uVar3 = local_68;
      param_2 = local_64;
    } while (local_78 < local_5c);
  }
LAB_00a9d3f3:
  ___security_check_cookie_4();
  return;
}



void FUN_00a9d420(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  if (param_4 == 0) {
    FUN_00acd630(param_1,param_2,param_3);
    return;
  }
  FUN_00a9d050(&LAB_00a9c980,param_2,param_3,param_4);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a9d460(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  int *local_14;
  int local_10 [2];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xa9d46a;
  local_14 = local_10;
  if (((param_2 == (undefined4 *)0x0) || (0x1e < (uint)param_2[1])) ||
     ((int)(char)(&DAT_00db950c)[param_2[1]] == 0xffffffff)) {
    iVar1 = -1;
  }
  else {
    local_8 = 0;
    local_10[0] = 0;
    iVar1 = FUN_00aa9700(&local_14,param_2[2],*param_2,
                         (int)(char)(&DAT_00db950c)[param_2[1]] | 0x1000,0x2000);
    if (-1 < iVar1) {
      *param_1 = local_8;
      return local_10[0];
    }
  }
  return iVar1;
}



int FUN_00a9d4e0(int *param_1)

{
  if ((param_1[1] == 0) && (*param_1 != 5)) {
    return 0;
  }
  return *param_1;
}



void FUN_00a9d500(int *param_1,int param_2,int param_3)

{
  if (param_1[1] != 0) {
    FUN_00a8bf50(&param_1,0);
  }
  *param_1 = param_2;
  if (param_2 == 1) {
    param_1[1] = -(uint)(param_3 != 0) & 0xff;
    return;
  }
  param_1[1] = param_3;
  return;
}



undefined4 FUN_00a9d550(int *param_1,int param_2,int *param_3)

{
  int iVar1;
  
  iVar1 = (int)param_3;
  if ((param_3 != (int *)0x0) && (param_2 != 1)) {
    if (param_2 == 6) {
      iVar1 = FUN_00a8fff0();
      if (iVar1 != 0) {
        FUN_00a9d500(param_1,6,iVar1);
        return 1;
      }
    }
    else {
      iVar1 = FUN_00a911d0(param_3);
      if (iVar1 != 0) {
        FUN_00a9d500(param_1,param_2,iVar1);
        return 1;
      }
    }
    return 0;
  }
  param_3 = param_1;
  if (param_1[1] != 0) {
    FUN_00a8bf50(&param_3,0);
  }
  *param_3 = param_2;
  if (param_2 == 1) {
    param_3[1] = -(uint)(iVar1 != 0) & 0xff;
    return 1;
  }
  param_3[1] = iVar1;
  return 1;
}



undefined4 FUN_00a9d610(int *param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  if (((param_1 == (int *)0x0) || (param_2 == (int *)0x0)) || (iVar1 = *param_1, iVar1 != *param_2))
  {
    return 0xffffffff;
  }
  if (iVar1 == 5) {
    return 0;
  }
  if (iVar1 != 6) {
    uVar2 = FUN_00a90db0();
    return uVar2;
  }
  uVar2 = FUN_00a90180();
  return uVar2;
}



int FUN_00a9d660(int param_1,int param_2)

{
  int iVar1;
  uint uVar2;
  
  uVar2 = *(uint *)(param_1 + 4) & 0x100;
  if (uVar2 != (*(uint *)(param_2 + 4) & 0x100)) {
    return (uint)(uVar2 == 0) * 2 + -1;
  }
  iVar1 = FUN_00a90db0(param_1,param_2);
  if (uVar2 != 0) {
    iVar1 = -iVar1;
  }
  return iVar1;
}



int FUN_00a9d6a0(size_t *param_1,int *param_2)

{
  byte bVar1;
  uint uVar2;
  void *_Src;
  size_t *psVar3;
  int iVar4;
  byte *pbVar5;
  undefined *_Dst;
  byte *pbVar6;
  undefined uVar7;
  int iVar9;
  size_t sVar10;
  undefined uVar8;
  
  psVar3 = param_1;
  iVar9 = 0;
  uVar8 = 0;
  uVar7 = 0;
  if ((param_1 == (size_t *)0x0) || (pbVar5 = (byte *)param_1[2], pbVar5 == (byte *)0x0)) {
    return 0;
  }
  sVar10 = *param_1;
  uVar2 = param_1[1];
  if (sVar10 == 0) {
    param_1 = (size_t *)0x1;
    goto LAB_00a9d719;
  }
  bVar1 = *pbVar5;
  uVar7 = uVar8;
  if ((uVar2 & 0x100) == 0) {
    if (0x7f < bVar1) {
      uVar7 = 0;
LAB_00a9d710:
      iVar9 = 1;
    }
  }
  else {
    if (0x80 < bVar1) {
LAB_00a9d70d:
      uVar7 = 0xff;
      goto LAB_00a9d710;
    }
    if ((bVar1 == 0x80) && (iVar4 = 1, 1 < (int)sVar10)) {
      do {
        if (pbVar5[iVar4] != 0) goto LAB_00a9d70d;
        iVar4 = iVar4 + 1;
      } while (iVar4 < (int)sVar10);
    }
  }
  param_1 = (size_t *)(sVar10 + iVar9);
LAB_00a9d719:
  if (param_2 == (int *)0x0) {
    return (int)param_1;
  }
  _Dst = (undefined *)*param_2;
  if (iVar9 != 0) {
    *_Dst = uVar7;
    _Dst = _Dst + 1;
  }
  sVar10 = *psVar3;
  if (sVar10 == 0) {
    *_Dst = 0;
    *param_2 = *param_2 + (int)param_1;
    return (int)param_1;
  }
  _Src = (void *)psVar3[2];
  if ((uVar2 & 0x100) == 0) {
    _memcpy(_Dst,_Src,sVar10);
    *param_2 = *param_2 + (int)param_1;
    return (int)param_1;
  }
  pbVar5 = (byte *)((int)_Src + (sVar10 - 1));
  pbVar6 = _Dst + (sVar10 - 1);
  bVar1 = *(byte *)((int)_Src + (sVar10 - 1));
  while (bVar1 == 0) {
    *pbVar6 = 0;
    pbVar5 = pbVar5 + -1;
    pbVar6 = pbVar6 + -1;
    sVar10 = sVar10 - 1;
    bVar1 = *pbVar5;
  }
  *pbVar6 = ~*pbVar5 + 1;
  while (sVar10 = sVar10 - 1, 0 < (int)sVar10) {
    pbVar6 = pbVar6 + -1;
    pbVar5 = pbVar5 + -1;
    *pbVar6 = ~*pbVar5;
  }
  *param_2 = *param_2 + (int)param_1;
  return (int)param_1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

size_t * FUN_00a9d7b0(size_t **param_1,byte **param_2,size_t param_3)

{
  byte *pbVar1;
  byte bVar2;
  size_t *psVar3;
  undefined *_Dst;
  byte *pbVar4;
  byte *pbVar5;
  byte *_Src;
  size_t sVar6;
  
  if ((param_1 == (size_t **)0x0) || (psVar3 = *param_1, psVar3 == (size_t *)0x0)) {
    psVar3 = (size_t *)FUN_00a90d30(2);
    if (psVar3 == (size_t *)0x0) {
      return (size_t *)0x0;
    }
    psVar3[1] = 2;
  }
  _Src = *param_2;
  pbVar1 = _Src + param_3;
  _Dst = (undefined *)FUN_00a84f80(param_3 + 1,".\\crypto\\asn1\\a_int.c",199);
  if (_Dst == (undefined *)0x0) {
    FUN_00a7f3c0(0xd,0xc2,0x41,".\\crypto\\asn1\\a_int.c",0x103);
    if ((psVar3 != (size_t *)0x0) && ((param_1 == (size_t **)0x0 || (*param_1 != psVar3)))) {
      FUN_00a90d80(psVar3);
    }
    return (size_t *)0x0;
  }
  if (param_3 == 0) {
    psVar3[1] = 2;
  }
  else if ((*_Src & 0x80) == 0) {
    psVar3[1] = 2;
    if ((*_Src == 0) && (param_3 != 1)) {
      _Src = _Src + 1;
      param_3 = param_3 - 1;
    }
    _memcpy(_Dst,_Src,param_3);
  }
  else {
    psVar3[1] = 0x102;
    if ((*_Src == 0xff) && (param_3 != 1)) {
      _Src = _Src + 1;
      param_3 = param_3 - 1;
    }
    pbVar4 = _Src + (param_3 - 1);
    pbVar5 = _Dst + (param_3 - 1);
    bVar2 = _Src[param_3 - 1];
    sVar6 = param_3;
    while (bVar2 == 0) {
      if (sVar6 == 0) goto LAB_00a9d8a3;
      *pbVar5 = 0;
      pbVar4 = pbVar4 + -1;
      pbVar5 = pbVar5 + -1;
      sVar6 = sVar6 - 1;
      bVar2 = *pbVar4;
    }
    if (sVar6 == 0) {
LAB_00a9d8a3:
      *_Dst = 1;
      _Dst[param_3] = 0;
      param_3 = param_3 + 1;
    }
    else {
      *pbVar5 = ~*pbVar4 + 1;
      while (sVar6 = sVar6 - 1, 0 < (int)sVar6) {
        pbVar5 = pbVar5 + -1;
        pbVar4 = pbVar4 + -1;
        *pbVar5 = ~*pbVar4;
      }
    }
  }
  if (psVar3[2] != 0) {
    FUN_00a85120(psVar3[2]);
  }
  psVar3[2] = (size_t)_Dst;
  *psVar3 = param_3;
  if (param_1 != (size_t **)0x0) {
    *param_1 = psVar3;
  }
  *param_2 = pbVar1;
  return psVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

size_t * FUN_00a9d930(size_t **param_1,char **param_2,undefined4 param_3)

{
  size_t **ppsVar1;
  char cVar2;
  size_t *psVar3;
  undefined4 uVar4;
  void *_Dst;
  size_t local_c;
  int local_8;
  undefined4 local_4;
  
  ppsVar1 = param_1;
  local_4 = 0xa9d93a;
  if ((param_1 == (size_t **)0x0) || (psVar3 = *param_1, psVar3 == (size_t *)0x0)) {
    psVar3 = (size_t *)FUN_00a90d30(2);
    if (psVar3 == (size_t *)0x0) {
      return (size_t *)0x0;
    }
    psVar3[1] = 2;
  }
  param_1 = (size_t **)*param_2;
  cVar2 = FUN_00a90eb0(&param_1,&local_c,&local_8,&local_4,param_3);
  if (cVar2 < '\0') {
    uVar4 = 0x66;
  }
  else if (local_8 == 2) {
    _Dst = (void *)FUN_00a84f80(local_c + 1,".\\crypto\\asn1\\a_int.c",0x131);
    if (_Dst != (void *)0x0) {
      psVar3[1] = 2;
      if (local_c != 0) {
        if ((*(char *)param_1 == '\0') && (local_c != 1)) {
          param_1 = (size_t **)((int)param_1 + 1);
          local_c = local_c - 1;
        }
        _memcpy(_Dst,param_1,local_c);
        param_1 = (size_t **)((int)param_1 + local_c);
      }
      if (psVar3[2] != 0) {
        FUN_00a85120(psVar3[2]);
      }
      psVar3[2] = (size_t)_Dst;
      *psVar3 = local_c;
      if (ppsVar1 != (size_t **)0x0) {
        *ppsVar1 = psVar3;
      }
      *param_2 = (char *)param_1;
      return psVar3;
    }
    uVar4 = 0x41;
  }
  else {
    uVar4 = 0x73;
  }
  FUN_00a7f3c0(0xd,0x96,uVar4,".\\crypto\\asn1\\a_int.c",0x149);
  if ((psVar3 != (size_t *)0x0) && ((ppsVar1 == (size_t **)0x0 || (*ppsVar1 != psVar3)))) {
    FUN_00a90d80(psVar3);
  }
  return (size_t *)0x0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a9da80(int *param_1,int param_2)

{
  undefined4 *puVar1;
  uint uVar2;
  int iVar3;
  undefined auStack_c [8];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_c;
  param_1[1] = 2;
  if (*param_1 < 5) {
    if (param_1[2] != 0) {
      FUN_00a85120(param_1[2]);
    }
    puVar1 = (undefined4 *)FUN_00a84f80(5,".\\crypto\\asn1\\a_int.c",0x15b);
    param_1[2] = (int)puVar1;
    if (puVar1 != (undefined4 *)0x0) {
      *puVar1 = 0;
      *(undefined *)(puVar1 + 1) = 0;
    }
  }
  if (param_1[2] == 0) {
    FUN_00a7f3c0(0xd,0x76,0x41,".\\crypto\\asn1\\a_int.c",0x160);
    ___security_check_cookie_4();
    return;
  }
  if (param_2 < 0) {
    param_2 = -param_2;
    param_1[1] = 0x102;
  }
  uVar2 = 0;
  do {
    if (param_2 == 0) break;
    auStack_c[uVar2] = (char)param_2;
    uVar2 = uVar2 + 1;
    param_2 = param_2 >> 8;
  } while (uVar2 < 4);
  iVar3 = 0;
  while (uVar2 = uVar2 - 1, -1 < (int)uVar2) {
    *(undefined *)(iVar3 + param_1[2]) = auStack_c[uVar2];
    iVar3 = iVar3 + 1;
  }
  *param_1 = iVar3;
  ___security_check_cookie_4();
  return;
}



uint FUN_00a9db70(int *param_1)

{
  byte *pbVar1;
  int iVar2;
  bool bVar3;
  uint uVar4;
  int iVar5;
  
  bVar3 = false;
  uVar4 = 0;
  if (param_1 == (int *)0x0) {
    return uVar4;
  }
  if (param_1[1] == 0x102) {
    bVar3 = true;
  }
  else if (param_1[1] != 2) {
    return 0xffffffff;
  }
  iVar2 = *param_1;
  if (4 < iVar2) {
    return 0xffffffff;
  }
  if (param_1[2] == 0) {
    return 0;
  }
  iVar5 = 0;
  if (0 < iVar2) {
    do {
      pbVar1 = (byte *)(param_1[2] + iVar5);
      iVar5 = iVar5 + 1;
      uVar4 = uVar4 << 8 | (uint)*pbVar1;
    } while (iVar5 < iVar2);
  }
  if (bVar3) {
    uVar4 = -uVar4;
  }
  return uVar4;
}



int * FUN_00a9dbd0(int param_1,int *param_2)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  piVar1 = param_2;
  if (param_2 == (int *)0x0) {
    piVar1 = (int *)FUN_00a90d30(2);
  }
  if (piVar1 != (int *)0x0) {
    piVar1[1] = (-(uint)(*(int *)(param_1 + 0xc) != 0) & 0x100) + 2;
    iVar2 = FUN_00a9a920(param_1);
    if (iVar2 != 0) {
      iVar2 = ((int)(iVar2 + (iVar2 >> 0x1f & 7U)) >> 3) + 1;
    }
    if (*piVar1 < iVar2 + 4) {
      iVar2 = FUN_00a84ff0(piVar1[2],iVar2 + 4,".\\crypto\\asn1\\a_int.c",0x1a9);
      if (iVar2 == 0) {
        uVar4 = 0x1ac;
        uVar3 = 0x41;
        goto LAB_00a9dc58;
      }
      piVar1[2] = iVar2;
    }
    iVar2 = FUN_00a9ad90(param_1,piVar1[2]);
    *piVar1 = iVar2;
    if (iVar2 == 0) {
      *(undefined *)piVar1[2] = 0;
      *piVar1 = 1;
    }
    return piVar1;
  }
  uVar4 = 0x19f;
  uVar3 = 0x3a;
LAB_00a9dc58:
  FUN_00a7f3c0(0xd,0x8b,uVar3,".\\crypto\\asn1\\a_int.c",uVar4);
  if (piVar1 != param_2) {
    FUN_00a90d80(piVar1);
  }
  return (int *)0x0;
}



int FUN_00a9dcb0(undefined4 *param_1,undefined4 param_2)

{
  int iVar1;
  
  iVar1 = FUN_00a9acb0(param_1[2],*param_1,param_2);
  if (iVar1 == 0) {
    FUN_00a7f3c0(0xd,0x77,0x69,".\\crypto\\asn1\\a_int.c",0x1c3);
    return 0;
  }
  if (param_1[1] == 0x102) {
    FUN_00a9b040(iVar1,1);
  }
  return iVar1;
}



undefined4 thunk_FUN_00a90c30(size_t *param_1,char *param_2,size_t param_3)

{
  char cVar1;
  size_t sVar2;
  char *pcVar3;
  void *_Dst;
  
  if ((int)param_3 < 0) {
    if (param_2 == (char *)0x0) {
      return 0;
    }
    pcVar3 = param_2;
    do {
      cVar1 = *pcVar3;
      pcVar3 = pcVar3 + 1;
    } while (cVar1 != '\0');
    param_3 = (int)pcVar3 - (int)(param_2 + 1);
  }
  if (((int)*param_1 < (int)param_3) || (_Dst = (void *)param_1[2], _Dst == (void *)0x0)) {
    sVar2 = param_1[2];
    if (sVar2 == 0) {
      _Dst = (void *)FUN_00a84f80(param_3 + 1,".\\crypto\\asn1\\asn1_lib.c",0x182);
    }
    else {
      _Dst = (void *)FUN_00a84ff0(sVar2,param_3 + 1,".\\crypto\\asn1\\asn1_lib.c",0x184);
    }
    param_1[2] = (size_t)_Dst;
    if (_Dst == (void *)0x0) {
      FUN_00a7f3c0(0xd,0xba,0x41,".\\crypto\\asn1\\asn1_lib.c",0x188);
      param_1[2] = sVar2;
      return 0;
    }
  }
  *param_1 = param_3;
  if (param_2 != (char *)0x0) {
    _memcpy(_Dst,param_2,param_3);
    *(undefined *)(param_3 + param_1[2]) = 0;
  }
  return 1;
}



int FUN_00a9dd20(size_t *param_1,byte **param_2)

{
  char *pcVar1;
  byte bVar2;
  byte *pbVar3;
  size_t _Size;
  
  if (param_1 == (size_t *)0x0) {
    return 0;
  }
  _Size = *param_1;
  if (0 < (int)_Size) {
    if ((param_1[3] & 8) != 0) {
      bVar2 = (byte)param_1[3] & 7;
      goto LAB_00a9ddad;
    }
    pcVar1 = (char *)((param_1[2] - 1) + _Size);
    do {
      if (*pcVar1 != '\0') break;
      _Size = _Size - 1;
      pcVar1 = pcVar1 + -1;
    } while (0 < (int)_Size);
    bVar2 = *(byte *)((param_1[2] - 1) + _Size);
    if ((bVar2 & 1) == 0) {
      if ((bVar2 & 2) == 0) {
        if ((bVar2 & 4) == 0) {
          if ((bVar2 & 8) == 0) {
            if ((bVar2 & 0x10) == 0) {
              if ((bVar2 & 0x20) == 0) {
                if ((bVar2 & 0x40) == 0) {
                  bVar2 = -((bVar2 & 0x80) != 0) & 7;
                }
                else {
                  bVar2 = 6;
                }
              }
              else {
                bVar2 = 5;
              }
            }
            else {
              bVar2 = 4;
            }
          }
          else {
            bVar2 = 3;
          }
        }
        else {
          bVar2 = 2;
        }
      }
      else {
        bVar2 = 1;
      }
      goto LAB_00a9ddad;
    }
  }
  bVar2 = 0;
LAB_00a9ddad:
  if (param_2 != (byte **)0x0) {
    pbVar3 = *param_2;
    *pbVar3 = bVar2;
    pbVar3 = pbVar3 + 1;
    _memcpy(pbVar3,(void *)param_1[2],_Size);
    pbVar3 = pbVar3 + _Size;
    if (0 < (int)_Size) {
      pbVar3[-1] = pbVar3[-1] & -1 << bVar2;
    }
    *param_2 = pbVar3;
  }
  return _Size + 1;
}



size_t * FUN_00a9ddf0(size_t **param_1,byte **param_2,int param_3)

{
  byte *pbVar1;
  byte bVar2;
  undefined4 uVar3;
  void *_Dst;
  byte *_Src;
  size_t *psVar4;
  size_t _Size;
  
  psVar4 = (size_t *)0x0;
  if (param_3 < 1) {
    uVar3 = 0x98;
LAB_00a9de6a:
    FUN_00a7f3c0(0xd,0xbd,uVar3,".\\crypto\\asn1\\a_bitstr.c",0xa8);
    if ((psVar4 != (size_t *)0x0) && ((param_1 == (size_t **)0x0 || (*param_1 != psVar4)))) {
      FUN_00a90d80(psVar4);
    }
    return (size_t *)0x0;
  }
  if (((param_1 == (size_t **)0x0) || (psVar4 = *param_1, psVar4 == (size_t *)0x0)) &&
     (psVar4 = (size_t *)FUN_00a90d30(3), psVar4 == (size_t *)0x0)) {
    return (size_t *)0x0;
  }
  bVar2 = **param_2;
  _Src = *param_2 + 1;
  _Size = param_3 - 1;
  psVar4[3] = bVar2 & 7 | psVar4[3] & 0xfffffff8 | 8;
  if (param_3 < 2) {
    _Dst = (void *)0x0;
  }
  else {
    _Dst = (void *)FUN_00a84f80(_Size,".\\crypto\\asn1\\a_bitstr.c",0x93);
    if (_Dst == (void *)0x0) {
      uVar3 = 0x41;
      goto LAB_00a9de6a;
    }
    _memcpy(_Dst,_Src,_Size);
    pbVar1 = (byte *)((int)_Dst + param_3 + -2);
    *pbVar1 = *pbVar1 & -1 << (bVar2 & 0x1f);
    _Src = _Src + _Size;
  }
  *psVar4 = _Size;
  if (psVar4[2] != 0) {
    FUN_00a85120(psVar4[2]);
  }
  psVar4[2] = (size_t)_Dst;
  psVar4[1] = 3;
  if (param_1 != (size_t **)0x0) {
    *param_1 = psVar4;
  }
  *param_2 = _Src;
  return psVar4;
}



undefined4 FUN_00a9df00(int *param_1,int param_2,int param_3)

{
  int iVar1;
  size_t _Size;
  byte bVar2;
  int iVar3;
  
  iVar3 = (int)(param_2 + (param_2 >> 0x1f & 7U)) >> 3;
  param_2._0_1_ = (byte)(1 << (7 - ((byte)param_2 & 7) & 0x1f));
  bVar2 = ~(byte)param_2;
  if (param_3 == 0) {
    param_2._0_1_ = 0;
  }
  if (param_1 == (int *)0x0) {
    return 0;
  }
  param_1[3] = param_1[3] & 0xfffffff0;
  iVar1 = iVar3 + 1;
  if ((*param_1 < iVar1) || (param_1[2] == 0)) {
    if (param_3 == 0) {
      return 1;
    }
    if (param_1[2] == 0) {
      iVar1 = FUN_00a84f80(iVar1,".\\crypto\\asn1\\a_bitstr.c",0xc3);
    }
    else {
      iVar1 = FUN_00a85070(param_1[2],*param_1,iVar1,".\\crypto\\asn1\\a_bitstr.c",199);
    }
    if (iVar1 == 0) {
      FUN_00a7f3c0(0xd,0xb7,0x41,".\\crypto\\asn1\\a_bitstr.c",0xca);
      return 0;
    }
    _Size = (iVar3 - *param_1) + 1;
    if (0 < (int)_Size) {
      _memset((void *)(*param_1 + iVar1),0,_Size);
    }
    *param_1 = iVar3 + 1;
    param_1[2] = iVar1;
  }
  *(byte *)(param_1[2] + iVar3) = bVar2 & *(byte *)(param_1[2] + iVar3) | (byte)param_2;
  if (0 < *param_1) {
    do {
      if (*(char *)(param_1[2] + -1 + *param_1) != '\0') {
        return 1;
      }
      iVar3 = *param_1 + -1;
      *param_1 = iVar3;
    } while (0 < iVar3);
  }
  return 1;
}



undefined4 FUN_00a9e060(int *param_1,int param_2)

{
  return *(undefined4 *)(*(int *)(param_2 + 4) + *param_1);
}



undefined4 FUN_00a9e080(int *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  
  puVar2 = (undefined4 *)(*(int *)(param_3 + 4) + *param_1);
  uVar1 = *puVar2;
  *puVar2 = param_2;
  return uVar1;
}



undefined4 FUN_00a9e0a0(int *param_1,int param_2,char *param_3)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  
  if ((((*param_3 == '\x01') || (*param_3 == '\x06')) &&
      (iVar1 = *(int *)(param_3 + 0x10), iVar1 != 0)) && ((*(byte *)(iVar1 + 4) & 1) != 0)) {
    puVar2 = (undefined4 *)(*(int *)(iVar1 + 8) + *param_1);
    if (param_2 == 0) {
      *puVar2 = 1;
      return 1;
    }
    uVar3 = FUN_00a7fe40(puVar2,param_2,*(undefined4 *)(iVar1 + 0xc),".\\crypto\\asn1\\tasn_utl.c",
                         0x75);
    return uVar3;
  }
  return 0;
}



void FUN_00a9e0f0(int *param_1,int param_2)

{
  int iVar1;
  undefined4 *puVar2;
  
  if ((((param_1 != (int *)0x0) && (*param_1 != 0)) &&
      (iVar1 = *(int *)(param_2 + 0x10), iVar1 != 0)) &&
     (((*(byte *)(iVar1 + 4) & 2) != 0 &&
      (puVar2 = (undefined4 *)(*(int *)(iVar1 + 0x14) + *param_1), puVar2 != (undefined4 *)0x0)))) {
    *puVar2 = 0;
    puVar2[1] = 0;
    puVar2[2] = 1;
  }
  return;
}



void FUN_00a9e130(int *param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  
  if ((((param_1 != (int *)0x0) && (*param_1 != 0)) &&
      (iVar1 = *(int *)(param_2 + 0x10), iVar1 != 0)) &&
     (((*(byte *)(iVar1 + 4) & 2) != 0 &&
      (piVar2 = (int *)(*(int *)(iVar1 + 0x14) + *param_1), piVar2 != (int *)0x0)))) {
    if (*piVar2 != 0) {
      FUN_00a85120(*piVar2);
    }
    *piVar2 = 0;
    piVar2[1] = 0;
    piVar2[2] = 1;
  }
  return;
}



undefined4 FUN_00a9e180(int *param_1,void *param_2,void *param_3,int param_4)

{
  int iVar1;
  void *_Dst;
  void **ppvVar2;
  
  if ((((param_1 == (int *)0x0) || (*param_1 == 0)) ||
      (iVar1 = *(int *)(param_4 + 0x10), iVar1 == 0)) ||
     (((*(byte *)(iVar1 + 4) & 2) == 0 ||
      (ppvVar2 = (void **)(*(int *)(iVar1 + 0x14) + *param_1), ppvVar2 == (void **)0x0)))) {
    return 1;
  }
  if (*ppvVar2 != (void *)0x0) {
    FUN_00a85120(*ppvVar2);
  }
  _Dst = (void *)FUN_00a84f80(param_3,".\\crypto\\asn1\\tasn_utl.c",0xaf);
  *ppvVar2 = _Dst;
  if (_Dst == (void *)0x0) {
    return 0;
  }
  _memcpy(_Dst,param_2,(size_t)param_3);
  ppvVar2[1] = param_3;
  ppvVar2[2] = (void *)0x0;
  return 1;
}



undefined4 FUN_00a9e200(void **param_1,void **param_2,int *param_3,int param_4)

{
  int iVar1;
  void **ppvVar2;
  
  if ((((param_3 != (int *)0x0) && (*param_3 != 0)) &&
      (iVar1 = *(int *)(param_4 + 0x10), iVar1 != 0)) &&
     ((((*(byte *)(iVar1 + 4) & 2) != 0 &&
       (ppvVar2 = (void **)(*(int *)(iVar1 + 0x14) + *param_3), ppvVar2 != (void **)0x0)) &&
      (ppvVar2[2] == (void *)0x0)))) {
    if (param_2 != (void **)0x0) {
      _memcpy(*param_2,*ppvVar2,(size_t)ppvVar2[1]);
      *param_2 = (void *)((int)*param_2 + (int)ppvVar2[1]);
    }
    if (param_1 != (void **)0x0) {
      *param_1 = ppvVar2[1];
    }
    return 1;
  }
  return 0;
}



int * FUN_00a9e270(int *param_1,uint *param_2)

{
  if ((*param_2 & 0x400) != 0) {
    return param_1;
  }
  return (int *)(param_2[2] + *param_1);
}



uint * FUN_00a9e290(int *param_1,uint *param_2,int param_3)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  
  if ((*param_2 & 0x300) == 0) {
    return param_2;
  }
  iVar1 = (*(code *)param_2[4])();
  puVar2 = (undefined4 *)(*(int *)(iVar1 + 4) + *param_1);
  if (puVar2 == (undefined4 *)0x0) {
    if (*(uint **)(iVar1 + 0x18) != (uint *)0x0) {
      return *(uint **)(iVar1 + 0x18);
    }
  }
  else {
    if ((*param_2 & 0x100) == 0) {
      iVar3 = FUN_00a9db70(*puVar2);
    }
    else {
      iVar3 = FUN_00a877e0(*puVar2);
    }
    piVar5 = *(int **)(iVar1 + 0xc);
    iVar4 = 0;
    if (0 < *(int *)(iVar1 + 0x10)) {
      do {
        if (*piVar5 == iVar3) {
          return (uint *)(piVar5 + 1);
        }
        iVar4 = iVar4 + 1;
        piVar5 = piVar5 + 6;
      } while (iVar4 < *(int *)(iVar1 + 0x10));
    }
    if (*(uint **)(iVar1 + 0x14) != (uint *)0x0) {
      return *(uint **)(iVar1 + 0x14);
    }
  }
  if (param_3 != 0) {
    FUN_00a7f3c0(0xd,0x6e,0xa4,".\\crypto\\asn1\\tasn_utl.c",0x115);
  }
  return (uint *)0x0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00a9e330(undefined4 param_1,undefined4 *param_2,undefined4 param_3)

{
  char cVar1;
  int *piVar2;
  undefined4 *puVar3;
  uint uVar4;
  uint uVar5;
  undefined *puVar6;
  int iVar7;
  undefined4 *puVar8;
  char *pcVar9;
  undefined4 local_110;
  undefined4 local_10c;
  undefined4 uStack_105;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_110;
  local_110 = param_3;
  switch(*param_2) {
  case 0:
    FUN_00aa02e0("othername","<unsupported>",&local_110);
    break;
  case 1:
    thunk_FUN_00aa02e0("email",*(undefined4 *)(param_2[1] + 8),&local_110);
    break;
  case 2:
    thunk_FUN_00aa02e0(&DAT_00db96a8,*(undefined4 *)(param_2[1] + 8),&local_110);
    break;
  case 3:
    FUN_00aa02e0("X400Name","<unsupported>",&local_110);
    break;
  case 4:
    FUN_00a8df10(param_2[1],(int)&uStack_105 + 1,0x100);
    pcVar9 = "DirName";
    goto LAB_00a9e55e;
  case 5:
    FUN_00aa02e0("EdiPartyName","<unsupported>",&local_110);
    break;
  case 6:
    thunk_FUN_00aa02e0(&DAT_00db96a4,*(undefined4 *)(param_2[1] + 8),&local_110);
    break;
  case 7:
    piVar2 = (int *)param_2[1];
    puVar6 = (undefined *)piVar2[2];
    if (*piVar2 == 4) {
      FUN_00a86220((int)&uStack_105 + 1,0x100,"%d.%d.%d.%d",*puVar6,puVar6[1],puVar6[2],puVar6[3]);
    }
    else {
      if (*piVar2 != 0x10) {
        FUN_00aa02e0("IP Address","<invalid>",&local_110);
        break;
      }
      uStack_105._1_1_ = 0;
      iVar7 = 0;
      do {
        FUN_00a86220(&local_10c,5,&DAT_00d2b6d0,CONCAT11(*puVar6,puVar6[1]));
        puVar6 = puVar6 + 2;
        puVar3 = &local_10c;
        do {
          cVar1 = *(char *)puVar3;
          puVar3 = (undefined4 *)((int)puVar3 + 1);
        } while (cVar1 != '\0');
        uVar4 = (int)puVar3 - (int)&local_10c;
        puVar3 = &uStack_105;
        do {
          pcVar9 = (char *)((int)puVar3 + 1);
          puVar3 = (undefined4 *)((int)puVar3 + 1);
        } while (*pcVar9 != '\0');
        puVar8 = &local_10c;
        for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) {
          *puVar3 = *puVar8;
          puVar8 = puVar8 + 1;
          puVar3 = puVar3 + 1;
        }
        for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) {
          *(undefined *)puVar3 = *(undefined *)puVar8;
          puVar8 = (undefined4 *)((int)puVar8 + 1);
          puVar3 = (undefined4 *)((int)puVar3 + 1);
        }
        if (iVar7 != 7) {
          puVar3 = &uStack_105;
          do {
            pcVar9 = (char *)((int)puVar3 + 1);
            puVar3 = (undefined4 *)((int)puVar3 + 1);
          } while (*pcVar9 != '\0');
          *(undefined2 *)puVar3 = 0x3a;
        }
        iVar7 = iVar7 + 1;
      } while (iVar7 < 8);
    }
    FUN_00aa02e0("IP Address",(int)&uStack_105 + 1,&local_110);
    break;
  case 8:
    FUN_00a905e0((int)&uStack_105 + 1,0x100,param_2[1]);
    pcVar9 = "Registered ID";
LAB_00a9e55e:
    FUN_00aa02e0(pcVar9,(int)&uStack_105 + 1,&local_110);
  }
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00a9e5b0(undefined4 param_1,undefined4 *param_2)

{
  int *piVar1;
  int iVar2;
  undefined *puVar3;
  
  switch(*param_2) {
  case 0:
    FUN_00a86200(param_1,"othername:<unsupported>");
    return 1;
  case 1:
    FUN_00a86200(param_1,"email:%s",*(undefined4 *)(param_2[1] + 8));
    return 1;
  case 2:
    FUN_00a86200(param_1,"DNS:%s",*(undefined4 *)(param_2[1] + 8));
    return 1;
  case 3:
    FUN_00a86200(param_1,"X400Name:<unsupported>");
    return 1;
  case 4:
    FUN_00a86200(param_1,"DirName: ");
    FUN_00a9d420(param_1,param_2[1],0,0x82031f);
    return 1;
  case 5:
    FUN_00a86200(param_1,"EdiPartyName:<unsupported>");
    return 1;
  case 6:
    FUN_00a86200(param_1,"URI:%s",*(undefined4 *)(param_2[1] + 8));
    return 1;
  case 7:
    break;
  case 8:
    FUN_00a86200(param_1,"Registered ID");
    FUN_00a90600(param_1,param_2[1]);
  default:
    return 1;
  }
  piVar1 = (int *)param_2[1];
  puVar3 = (undefined *)piVar1[2];
  if (*piVar1 == 4) {
    FUN_00a86200(param_1,"IP Address:%d.%d.%d.%d",*puVar3,puVar3[1],puVar3[2],puVar3[3]);
    return 1;
  }
  if (*piVar1 != 0x10) {
    FUN_00a86200(param_1,"IP Address:<invalid>");
    return 1;
  }
  FUN_00a86200(param_1,"IP Address");
  iVar2 = 8;
  do {
    FUN_00a86200(param_1,&DAT_00db96ec,CONCAT11(*puVar3,puVar3[1]));
    puVar3 = puVar3 + 2;
    iVar2 = iVar2 + -1;
  } while (iVar2 != 0);
  FUN_00a834a0(param_1,&DAT_030651b4);
  return 1;
}



undefined4 __fastcall FUN_00a9e7a0(int *param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  if (param_1 == (int *)0x0) {
LAB_00a9e86e:
    FUN_00a7f3c0(0x22,0x7b,0x7f,".\\crypto\\x509v3\\v3_alt.c",0x119);
    return 0;
  }
  if (*param_1 != 1) {
    if (param_1[1] == 0) goto LAB_00a9e86e;
    iVar1 = FUN_00aa0270(param_1[1],0x55,0xffffffff);
    if (-1 < iVar1) {
      iVar1 = FUN_00aa0290(param_1[1],iVar1);
      if ((iVar1 == 0) || (iVar1 = FUN_00acd7a0(iVar1), iVar1 == 0)) {
        FUN_00a7f3c0(0x22,0x7b,0x7e,".\\crypto\\x509v3\\v3_alt.c",0x120);
        return 0;
      }
      iVar3 = 0;
      iVar2 = FUN_00a80ed0(iVar1);
      if (0 < iVar2) {
        do {
          FUN_00a80ee0(iVar1,iVar3);
          iVar2 = FUN_00a80df0();
          if (iVar2 == 0) {
            FUN_00a7f3c0(0x22,0x7b,0x41,".\\crypto\\x509v3\\v3_alt.c",0x127);
            return 0;
          }
          iVar3 = iVar3 + 1;
          iVar2 = FUN_00a80ed0(iVar1);
        } while (iVar3 < iVar2);
      }
      FUN_00a80ea0(iVar1);
    }
  }
  return 1;
}



bool FUN_00a9e9d0(char *param_1,undefined4 param_2)

{
  char *pcVar1;
  int iVar2;
  undefined4 uVar3;
  int unaff_EBX;
  size_t _Count;
  
  pcVar1 = _strchr(param_1,0x3b);
  if (pcVar1 != (char *)0x0) {
    iVar2 = FUN_00a8cb50();
    *(int *)(unaff_EBX + 4) = iVar2;
    if (iVar2 != 0) {
      FUN_00a889d0(*(undefined4 *)(iVar2 + 4));
      uVar3 = FUN_00ace390(pcVar1 + 1,param_2);
      *(undefined4 *)(*(int *)(unaff_EBX + 4) + 4) = uVar3;
      if (*(int *)(*(int *)(unaff_EBX + 4) + 4) != 0) {
        _Count = (int)pcVar1 - (int)param_1;
        pcVar1 = (char *)FUN_00a84f80(_Count + 1,".\\crypto\\x509v3\\v3_alt.c",0x245);
        _strncpy(pcVar1,param_1,_Count);
        pcVar1[_Count] = '\0';
        uVar3 = FUN_00a87dc0(pcVar1,0);
        **(undefined4 **)(unaff_EBX + 4) = uVar3;
        FUN_00a85120(pcVar1);
        return **(int **)(unaff_EBX + 4) != 0;
      }
    }
  }
  return false;
}



int __thiscall FUN_00a9ea70(undefined4 param_1_00,int param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  iVar1 = FUN_00a88db0();
  if (iVar1 == 0) {
    return 0;
  }
  iVar2 = FUN_00aa13f0(param_2,param_1_00);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x22,0x90,0x96,".\\crypto\\x509v3\\v3_alt.c",0x259);
    FUN_00a7f690(2,"section=",param_1_00);
    FUN_00a88dc0(iVar1);
    return 0;
  }
  iVar3 = FUN_00aa0dd0(iVar1,iVar2,0x1001);
  if (iVar3 == 0) {
    FUN_00a88dc0(iVar1);
  }
  *(int *)(param_1 + 4) = iVar1;
  FUN_00aa1430(param_2,iVar2);
  return iVar3;
}



undefined4 *
FUN_00a9eb70(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            char *param_5,int param_6)

{
  char cVar1;
  undefined4 *puVar2;
  int iVar3;
  char *pcVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  
  if (param_5 == (char *)0x0) {
    FUN_00a7f3c0(0x22,0xa4,0x7c,".\\crypto\\x509v3\\v3_alt.c",0x1b1);
    return (undefined4 *)0x0;
  }
  puVar2 = param_1;
  if ((param_1 == (undefined4 *)0x0) &&
     (puVar2 = (undefined4 *)FUN_00a8cb80(), puVar2 == (undefined4 *)0x0)) {
    FUN_00a7f3c0(0x22,0xa4,0x41,".\\crypto\\x509v3\\v3_alt.c",0x1bc);
    return (undefined4 *)0x0;
  }
  switch(param_4) {
  case 0:
    iVar3 = FUN_00a9e9d0(param_5,param_3);
    if (iVar3 != 0) {
LAB_00a9ec24:
      *puVar2 = param_4;
      return puVar2;
    }
    uVar6 = 0x1ee;
    uVar5 = 0x93;
    break;
  case 1:
  case 2:
  case 6:
    iVar3 = FUN_00a90d30(0x16);
    puVar2[1] = iVar3;
    if (iVar3 != 0) {
      pcVar4 = param_5;
      do {
        cVar1 = *pcVar4;
        pcVar4 = pcVar4 + 1;
      } while (cVar1 != '\0');
      iVar3 = FUN_00a90c30(iVar3,param_5,(int)pcVar4 - (int)(param_5 + 1));
      if (iVar3 != 0) goto LAB_00a9ec24;
    }
    uVar6 = 0x1fd;
    uVar5 = 0x41;
    break;
  default:
    uVar6 = 499;
    uVar5 = 0xa7;
    break;
  case 4:
    iVar3 = FUN_00a9ea70(puVar2,param_3);
    if (iVar3 != 0) goto LAB_00a9ec24;
    uVar6 = 0x1e6;
    uVar5 = 0x95;
    break;
  case 7:
    if (param_6 == 0) {
      iVar3 = FUN_00aa1260(param_5);
    }
    else {
      iVar3 = FUN_00aa1310();
    }
    puVar2[1] = iVar3;
    if (iVar3 != 0) goto LAB_00a9ec24;
    FUN_00a7f3c0(0x22,0xa4,0x76,".\\crypto\\x509v3\\v3_alt.c",0x1dd);
    FUN_00a7f690(2,"value=",param_5);
    goto LAB_00a9ed2c;
  case 8:
    iVar3 = FUN_00a87dc0(param_5,0);
    if (iVar3 != 0) {
      puVar2[1] = iVar3;
      goto LAB_00a9ec24;
    }
    FUN_00a7f3c0(0x22,0xa4,0x77,".\\crypto\\x509v3\\v3_alt.c",0x1ce);
    FUN_00a7f690(2,"value=",param_5);
    goto LAB_00a9ed2c;
  }
  FUN_00a7f3c0(0x22,0xa4,uVar5,".\\crypto\\x509v3\\v3_alt.c",uVar6);
LAB_00a9ed2c:
  if (param_1 == (undefined4 *)0x0) {
    FUN_00a8cb90(puVar2);
  }
  return (undefined4 *)0x0;
}



undefined4
FUN_00a9ed70(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5
            )

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  
  uVar3 = *(undefined4 *)(param_4 + 4);
  iVar1 = *(int *)(param_4 + 8);
  if (iVar1 == 0) {
    FUN_00a7f3c0(0x22,0x75,0x7c,".\\crypto\\x509v3\\v3_alt.c",0x219);
    return 0;
  }
  iVar2 = FUN_00aa0c70(uVar3,"email");
  if (iVar2 == 0) {
    iVar2 = 1;
  }
  else {
    iVar2 = FUN_00aa0c70(uVar3,&DAT_00db96a4);
    if (iVar2 == 0) {
      iVar2 = 6;
    }
    else {
      iVar2 = FUN_00aa0c70(uVar3,&DAT_00db96a8);
      if (iVar2 == 0) {
        iVar2 = 2;
      }
      else {
        iVar2 = FUN_00aa0c70(uVar3,&DAT_00db97c4);
        if (iVar2 == 0) {
          iVar2 = 8;
        }
        else {
          iVar2 = FUN_00aa0c70(uVar3,&DAT_00db97c0);
          if (iVar2 == 0) {
            iVar2 = 7;
          }
          else {
            iVar2 = FUN_00aa0c70(uVar3,"dirName");
            if (iVar2 == 0) {
              iVar2 = 4;
            }
            else {
              iVar2 = FUN_00aa0c70(uVar3,"otherName");
              if (iVar2 != 0) {
                FUN_00a7f3c0(0x22,0x75,0x75,".\\crypto\\x509v3\\v3_alt.c",0x22d);
                FUN_00a7f690(2,"name=",uVar3);
                return 0;
              }
            }
          }
        }
      }
    }
  }
  uVar3 = FUN_00a9eb70(param_1,param_2,param_3,iVar2,iVar1,param_5);
  return uVar3;
}



void FUN_00a9eea0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a9ed70(0,param_1,param_2,param_3,0);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a9eec0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  byte *pbVar5;
  byte *pbVar6;
  int iVar7;
  bool bVar8;
  
  iVar2 = FUN_00a81010();
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x22,0x99,0x41,".\\crypto\\x509v3\\v3_alt.c",0xfa);
    return 0;
  }
  iVar7 = 0;
  iVar3 = FUN_00a80ed0(param_3);
  if (0 < iVar3) {
    do {
      iVar3 = FUN_00a80ee0(param_3,iVar7);
      iVar4 = FUN_00aa0c70(*(undefined4 *)(iVar3 + 4),"issuer");
      if ((iVar4 == 0) && (pbVar5 = *(byte **)(iVar3 + 8), pbVar5 != (byte *)0x0)) {
        pbVar6 = &DAT_00db97c8;
        do {
          bVar1 = *pbVar5;
          bVar8 = bVar1 < *pbVar6;
          if (bVar1 != *pbVar6) {
LAB_00a9ef62:
            iVar4 = (1 - (uint)bVar8) - (uint)(bVar8 != 0);
            goto LAB_00a9ef67;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar5[1];
          bVar8 = bVar1 < pbVar6[1];
          if (bVar1 != pbVar6[1]) goto LAB_00a9ef62;
          pbVar5 = pbVar5 + 2;
          pbVar6 = pbVar6 + 2;
        } while (bVar1 != 0);
        iVar4 = 0;
LAB_00a9ef67:
        if (iVar4 != 0) goto LAB_00a9ef80;
        iVar3 = FUN_00a9e7a0();
        if (iVar3 == 0) goto LAB_00a9efc3;
      }
      else {
LAB_00a9ef80:
        iVar3 = FUN_00a9ed70(0,param_1,param_2,iVar3,0);
        if (iVar3 == 0) {
LAB_00a9efc3:
          FUN_00a81120(iVar2,FUN_00a8cb90);
          return 0;
        }
        FUN_00a80df0(iVar2,iVar3);
      }
      iVar7 = iVar7 + 1;
      iVar3 = FUN_00a80ed0(param_3);
    } while (iVar7 < iVar3);
  }
  return iVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a9f140(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  
  iVar1 = FUN_00a81010();
  if (iVar1 == 0) {
    FUN_00a7f3c0(0x22,0x76,0x41,".\\crypto\\x509v3\\v3_alt.c",0x194);
    return 0;
  }
  iVar4 = 0;
  iVar2 = FUN_00a80ed0(param_3);
  if (0 < iVar2) {
    do {
      uVar3 = FUN_00a80ee0(param_3,iVar4);
      iVar2 = FUN_00a9ed70(0,param_1,param_2,uVar3,0);
      if (iVar2 == 0) {
        FUN_00a81120(iVar1,FUN_00a8cb90);
        return 0;
      }
      FUN_00a80df0(iVar1,iVar2);
      iVar4 = iVar4 + 1;
      iVar2 = FUN_00a80ed0(param_3);
    } while (iVar4 < iVar2);
  }
  return iVar1;
}



uint thunk_FUN_00a90db0(uint *param_1,int *param_2)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  int *piVar4;
  
  uVar2 = *param_1;
  if (uVar2 - *param_2 != 0) {
    return uVar2 - *param_2;
  }
  piVar3 = (int *)param_2[2];
  piVar4 = (int *)param_1[2];
  for (; 3 < uVar2; uVar2 = uVar2 - 4) {
    if (*piVar4 != *piVar3) goto LAB_00a90de8;
    piVar3 = piVar3 + 1;
    piVar4 = piVar4 + 1;
  }
  if (uVar2 == 0) {
LAB_00a90e2b:
    uVar2 = 0;
  }
  else {
LAB_00a90de8:
    iVar1 = (uint)*(byte *)piVar4 - (uint)*(byte *)piVar3;
    if (iVar1 == 0) {
      if (uVar2 < 2) goto LAB_00a90e2b;
      iVar1 = (uint)*(byte *)((int)piVar4 + 1) - (uint)*(byte *)((int)piVar3 + 1);
      if (iVar1 == 0) {
        if (uVar2 < 3) goto LAB_00a90e2b;
        iVar1 = (uint)*(byte *)((int)piVar4 + 2) - (uint)*(byte *)((int)piVar3 + 2);
        if (iVar1 == 0) {
          if (uVar2 < 4) goto LAB_00a90e2b;
          iVar1 = (uint)*(byte *)((int)piVar4 + 3) - (uint)*(byte *)((int)piVar3 + 3);
        }
      }
    }
    uVar2 = iVar1 >> 0x1f | 1;
  }
  if (uVar2 == 0) {
    uVar2 = param_1[1] - param_2[1];
  }
  return uVar2;
}



void FUN_00a9f210(byte *param_1)

{
  FUN_00a90760(*(undefined4 *)(param_1 + 4));
  if ((*param_1 & 4) == 0) {
    FUN_00a81120(*(undefined4 *)(param_1 + 8),&LAB_00a9f370);
  }
  FUN_00a81120(*(undefined4 *)(param_1 + 0xc),FUN_00a90760);
  FUN_00a85120(param_1);
  return;
}



uint * FUN_00a9f250(uint *param_1,uint *param_2,int param_3)

{
  uint uVar1;
  uint *puVar2;
  uint uVar3;
  
  if (param_1 == (uint *)0x0) {
    if (param_2 == (uint *)0x0) {
      return param_2;
    }
  }
  else if (param_2 == (uint *)0x0) {
    uVar1 = 0;
    goto LAB_00a9f27d;
  }
  uVar1 = FUN_00a8fff0(param_2);
  if (uVar1 == 0) {
    return (uint *)0x0;
  }
LAB_00a9f27d:
  puVar2 = (uint *)FUN_00a84f80(0x10,".\\crypto\\x509v3\\pcy_data.c",100);
  if (puVar2 != (uint *)0x0) {
    uVar3 = FUN_00a81010();
    puVar2[3] = uVar3;
    if (uVar3 != 0) {
      *puVar2 = -(uint)(param_3 != 0) & 0x10;
      if (uVar1 == 0) {
        puVar2[1] = *param_1;
        *param_1 = 0;
      }
      else {
        puVar2[1] = uVar1;
      }
      if (param_1 != (uint *)0x0) {
        puVar2[2] = param_1[1];
        param_1[1] = 0;
        return puVar2;
      }
      puVar2[2] = 0;
      return puVar2;
    }
    FUN_00a85120(puVar2);
    if (uVar1 != 0) {
      FUN_00a90760(uVar1);
    }
  }
  return (uint *)0x0;
}



void FUN_00a9f330(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db9940);
  return;
}



undefined4 FUN_00a9f3b0(void)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  iVar2 = 0;
  iVar1 = FUN_00a80ed0();
  if (0 < iVar1) {
    do {
      iVar1 = FUN_00a80ee0();
      iVar1 = FUN_00aa0500(0,*(undefined4 *)(iVar1 + 4));
      if (iVar1 == 0) {
        uVar4 = 0x15d;
        uVar3 = 0x8c;
LAB_00a9f419:
        FUN_00a7f3c0(0x22,0x85,uVar3,".\\crypto\\x509v3\\v3_cpols.c",uVar4);
        FUN_00a81120();
        return 0;
      }
      iVar1 = FUN_00a80df0();
      if (iVar1 == 0) {
        uVar4 = 0x165;
        uVar3 = 0x41;
        goto LAB_00a9f419;
      }
      iVar2 = iVar2 + 1;
      iVar1 = FUN_00a80ed0();
    } while (iVar2 < iVar1);
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 * FUN_00a9f540(undefined4 param_1,int param_2)

{
  byte bVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  int **ppiVar5;
  int iVar6;
  undefined4 *puVar7;
  byte *pbVar8;
  int *piVar9;
  int **ppiVar10;
  byte *pbVar11;
  int iVar12;
  char *pcVar13;
  char *pcVar14;
  bool bVar15;
  undefined4 uVar16;
  int local_8;
  
  puVar3 = (undefined4 *)FUN_00a8bf10(&DAT_00db99e4);
  if (puVar3 != (undefined4 *)0x0) {
    uVar4 = FUN_00a87490(0xa5);
    *puVar3 = uVar4;
    ppiVar5 = (int **)FUN_00a8bf10(&DAT_00db9a28);
    if (ppiVar5 != (int **)0x0) {
      puVar3[1] = ppiVar5;
      local_8 = 0;
      iVar6 = FUN_00a80ed0(param_1);
      if (0 < iVar6) {
        do {
          puVar7 = (undefined4 *)FUN_00a80ee0(param_1,local_8);
          pbVar11 = (byte *)puVar7[1];
          pcVar13 = "explicitText";
          pbVar8 = pbVar11;
          do {
            bVar1 = *pbVar8;
            bVar15 = bVar1 < (byte)*pcVar13;
            if (bVar1 != *pcVar13) {
LAB_00a9f5f0:
              iVar6 = (1 - (uint)bVar15) - (uint)(bVar15 != 0);
              goto LAB_00a9f5f5;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar8[1];
            bVar15 = bVar1 < ((byte *)pcVar13)[1];
            if (bVar1 != ((byte *)pcVar13)[1]) goto LAB_00a9f5f0;
            pbVar8 = pbVar8 + 2;
            pcVar13 = (char *)((byte *)pcVar13 + 2);
          } while (bVar1 != 0);
          iVar6 = 0;
LAB_00a9f5f5:
          if (iVar6 == 0) {
            piVar9 = (int *)FUN_00a90d30(0x1a);
            ppiVar5[1] = piVar9;
            pcVar13 = (char *)puVar7[2];
            pcVar14 = pcVar13;
            do {
              cVar2 = *pcVar14;
              pcVar14 = pcVar14 + 1;
            } while (cVar2 != '\0');
LAB_00a9f690:
            iVar6 = FUN_00a90c30(piVar9,pcVar13,(int)pcVar14 - (int)(pcVar13 + 1));
            if (iVar6 == 0) goto LAB_00a9f6a5;
          }
          else {
            pcVar13 = "organization";
            pbVar8 = pbVar11;
            do {
              bVar1 = *pbVar8;
              bVar15 = bVar1 < (byte)*pcVar13;
              if (bVar1 != *pcVar13) {
LAB_00a9f640:
                iVar6 = (1 - (uint)bVar15) - (uint)(bVar15 != 0);
                goto LAB_00a9f645;
              }
              if (bVar1 == 0) break;
              bVar1 = pbVar8[1];
              bVar15 = bVar1 < ((byte *)pcVar13)[1];
              if (bVar1 != ((byte *)pcVar13)[1]) goto LAB_00a9f640;
              pbVar8 = pbVar8 + 2;
              pcVar13 = (char *)((byte *)pcVar13 + 2);
            } while (bVar1 != 0);
            iVar6 = 0;
LAB_00a9f645:
            if (iVar6 == 0) {
              ppiVar10 = (int **)*ppiVar5;
              if (ppiVar10 == (int **)0x0) {
                ppiVar10 = (int **)FUN_00a8bf10(&DAT_00db9a6c);
                if (ppiVar10 == (int **)0x0) goto LAB_00a9f6a5;
                *ppiVar5 = (int *)ppiVar10;
              }
              if (param_2 == 0) {
                (*ppiVar10)[1] = 0x1a;
              }
              else {
                (*ppiVar10)[1] = 0x16;
              }
              pcVar13 = (char *)puVar7[2];
              pcVar14 = pcVar13;
              do {
                cVar2 = *pcVar14;
                pcVar14 = pcVar14 + 1;
              } while (cVar2 != '\0');
              piVar9 = *ppiVar10;
              goto LAB_00a9f690;
            }
            pcVar13 = "noticeNumbers";
            do {
              bVar1 = *pbVar11;
              bVar15 = bVar1 < (byte)*pcVar13;
              if (bVar1 != *pcVar13) {
LAB_00a9f6e0:
                iVar6 = (1 - (uint)bVar15) - (uint)(bVar15 != 0);
                goto LAB_00a9f6e5;
              }
              if (bVar1 == 0) break;
              bVar1 = pbVar11[1];
              bVar15 = bVar1 < ((byte *)pcVar13)[1];
              if (bVar1 != ((byte *)pcVar13)[1]) goto LAB_00a9f6e0;
              pbVar11 = pbVar11 + 2;
              pcVar13 = (char *)((byte *)pcVar13 + 2);
            } while (bVar1 != 0);
            iVar6 = 0;
LAB_00a9f6e5:
            if (iVar6 != 0) {
              uVar16 = 0x13d;
              uVar4 = 0x8a;
LAB_00a9f7ce:
              FUN_00a7f3c0(0x22,0x84,uVar4,".\\crypto\\x509v3\\v3_cpols.c",uVar16);
              FUN_00a7f690(6,"section:",*puVar7,",name:",puVar7[1],",value:",puVar7[2]);
              goto LAB_00a9f7a3;
            }
            if (*ppiVar5 == (int *)0x0) {
              piVar9 = (int *)FUN_00a8bf10(&DAT_00db9a6c);
              if (piVar9 == (int *)0x0) goto LAB_00a9f6a5;
              *ppiVar5 = piVar9;
            }
            iVar6 = FUN_00aa0e80(puVar7[2]);
            if ((iVar6 == 0) || (iVar12 = FUN_00a80ed0(iVar6), iVar12 == 0)) {
              uVar16 = 0x134;
              uVar4 = 0x8d;
              goto LAB_00a9f7ce;
            }
            iVar12 = FUN_00a9f3b0();
            FUN_00a81120(iVar6,FUN_00aa03c0);
            if (iVar12 == 0) goto LAB_00a9f7a3;
          }
          local_8 = local_8 + 1;
          iVar6 = FUN_00a80ed0(param_1);
        } while (local_8 < iVar6);
      }
      piVar9 = *ppiVar5;
      if ((piVar9 == (int *)0x0) || ((piVar9[1] != 0 && (*piVar9 != 0)))) {
        return puVar3;
      }
      uVar16 = 0x145;
      uVar4 = 0x8e;
      goto LAB_00a9f794;
    }
  }
LAB_00a9f6a5:
  uVar16 = 0x14c;
  uVar4 = 0x41;
LAB_00a9f794:
  FUN_00a7f3c0(0x22,0x84,uVar4,".\\crypto\\x509v3\\v3_cpols.c",uVar16);
LAB_00a9f7a3:
  FUN_00a8c2c0(puVar3,&DAT_00db99e4);
  return (undefined4 *)0x0;
}



int * FUN_00a9f8f0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  byte bVar1;
  char cVar2;
  int *piVar3;
  int iVar4;
  undefined4 *puVar5;
  byte *pbVar6;
  undefined4 *puVar7;
  int iVar8;
  char *pcVar9;
  char *pcVar10;
  int iVar11;
  bool bVar12;
  undefined4 uVar13;
  undefined4 uVar14;
  
  piVar3 = (int *)FUN_00a8bf10(&DAT_00db9940);
  if (piVar3 == (int *)0x0) {
LAB_00a9fb39:
    uVar14 = 0x107;
    uVar13 = 0x41;
  }
  else {
    iVar11 = 0;
    iVar4 = FUN_00a80ed0(param_2);
    if (0 < iVar4) {
LAB_00a9f922:
      puVar5 = (undefined4 *)FUN_00a80ee0(param_2,iVar11);
      pcVar9 = "policyIdentifier";
      pbVar6 = (byte *)puVar5[1];
      do {
        bVar1 = *pbVar6;
        bVar12 = bVar1 < (byte)*pcVar9;
        if (bVar1 != *pcVar9) {
LAB_00a9f960:
          iVar4 = (1 - (uint)bVar12) - (uint)(bVar12 != 0);
          goto LAB_00a9f965;
        }
        if (bVar1 == 0) break;
        bVar1 = pbVar6[1];
        bVar12 = bVar1 < ((byte *)pcVar9)[1];
        if (bVar1 != ((byte *)pcVar9)[1]) goto LAB_00a9f960;
        pbVar6 = pbVar6 + 2;
        pcVar9 = (char *)((byte *)pcVar9 + 2);
      } while (bVar1 != 0);
      iVar4 = 0;
LAB_00a9f965:
      if (iVar4 == 0) {
        iVar4 = FUN_00a87dc0(puVar5[2],0);
        if (iVar4 == 0) {
          uVar14 = 0xd3;
          uVar13 = 0x6e;
LAB_00a9fae5:
          FUN_00a7f3c0(0x22,0x83,uVar13,".\\crypto\\x509v3\\v3_cpols.c",uVar14);
          FUN_00a7f690(6,"section:",*puVar5,",name:",puVar5[1],",value:",puVar5[2]);
          goto LAB_00a9fac4;
        }
        *piVar3 = iVar4;
      }
      else {
        iVar4 = FUN_00aa0c70((byte *)puVar5[1],&DAT_00db9b54);
        if (iVar4 != 0) {
          iVar4 = FUN_00aa0c70(puVar5[1],"userNotice");
          if (iVar4 == 0) {
            if (*(char *)puVar5[2] == '@') {
              iVar4 = FUN_00aa13f0(param_1,(char *)puVar5[2] + 1);
              if (iVar4 == 0) {
                uVar14 = 0xec;
                uVar13 = 0x87;
                goto LAB_00a9fae5;
              }
              iVar8 = FUN_00a9f540(iVar4,param_3);
              FUN_00aa1430(param_1,iVar4);
              if (iVar8 != 0) {
                if (piVar3[1] == 0) {
                  iVar4 = FUN_00a81010();
                  piVar3[1] = iVar4;
                }
                iVar4 = FUN_00a80df0(piVar3[1],iVar8);
                goto LAB_00a9fa7f;
              }
              goto LAB_00a9fac4;
            }
            uVar14 = 0xe6;
            uVar13 = 0x89;
          }
          else {
            uVar14 = 0xf9;
            uVar13 = 0x8a;
          }
          goto LAB_00a9fae5;
        }
        if (piVar3[1] == 0) {
          iVar4 = FUN_00a81010();
          piVar3[1] = iVar4;
        }
        puVar7 = (undefined4 *)FUN_00a8bf10(&DAT_00db99e4);
        if (puVar7 == (undefined4 *)0x0) goto LAB_00a9fb39;
        iVar4 = FUN_00a80df0(piVar3[1],puVar7);
        if (iVar4 == 0) goto LAB_00a9fb39;
        uVar13 = FUN_00a87490(0xa4);
        *puVar7 = uVar13;
        uVar13 = FUN_00a90d30(0x16);
        puVar7[1] = uVar13;
        pcVar9 = (char *)puVar5[2];
        pcVar10 = pcVar9;
        do {
          cVar2 = *pcVar10;
          pcVar10 = pcVar10 + 1;
        } while (cVar2 != '\0');
        iVar4 = FUN_00a90c30(uVar13,pcVar9,(int)pcVar10 - (int)(pcVar9 + 1));
LAB_00a9fa7f:
        if (iVar4 == 0) goto LAB_00a9fb39;
      }
      iVar11 = iVar11 + 1;
      iVar4 = FUN_00a80ed0(param_2);
      if (iVar4 <= iVar11) goto LAB_00a9fa9d;
      goto LAB_00a9f922;
    }
LAB_00a9fa9d:
    if (*piVar3 != 0) {
      return piVar3;
    }
    uVar14 = 0x100;
    uVar13 = 0x8b;
  }
  FUN_00a7f3c0(0x22,0x83,uVar13,".\\crypto\\x509v3\\v3_cpols.c",uVar14);
LAB_00a9fac4:
  FUN_00a8c2c0(piVar3,&DAT_00db9940);
  return (int *)0x0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00a9fc00(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  byte bVar1;
  byte *pbVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 *puVar6;
  byte *pbVar7;
  int *piVar8;
  byte *pbVar9;
  bool bVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  int local_c;
  undefined4 local_4;
  
  iVar3 = FUN_00a81010();
  if (iVar3 == 0) {
    FUN_00a7f3c0(0x22,0x82,0x41,".\\crypto\\x509v3\\v3_cpols.c",0x8f);
    return 0;
  }
  iVar4 = FUN_00aa0e80(param_3);
  if (iVar4 != 0) {
    local_4 = 0;
    local_c = 0;
    iVar5 = FUN_00a80ed0(iVar4);
    if (0 < iVar5) {
      do {
        puVar6 = (undefined4 *)FUN_00a80ee0(iVar4,local_c);
        if ((puVar6[2] != 0) || (pbVar2 = (byte *)puVar6[1], pbVar2 == (byte *)0x0)) {
          FUN_00a7f3c0(0x22,0x82,0x86,".\\crypto\\x509v3\\v3_cpols.c",0x9b);
          FUN_00a7f690(6,"section:",*puVar6,",name:",puVar6[1],",value:",puVar6[2]);
          goto LAB_00a9fd30;
        }
        pbVar9 = &DAT_00db9b6c;
        pbVar7 = pbVar2;
        do {
          bVar1 = *pbVar7;
          bVar10 = bVar1 < *pbVar9;
          if (bVar1 != *pbVar9) {
LAB_00a9fce0:
            iVar5 = (1 - (uint)bVar10) - (uint)(bVar10 != 0);
            goto LAB_00a9fce5;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar7[1];
          bVar10 = bVar1 < pbVar9[1];
          if (bVar1 != pbVar9[1]) goto LAB_00a9fce0;
          pbVar7 = pbVar7 + 2;
          pbVar9 = pbVar9 + 2;
        } while (bVar1 != 0);
        iVar5 = 0;
LAB_00a9fce5:
        if (iVar5 == 0) {
          local_4 = 1;
        }
        else {
          if (*pbVar2 == 0x40) {
            iVar5 = FUN_00aa13f0(param_2,pbVar2 + 1);
            if (iVar5 == 0) {
              uVar12 = 0xa7;
              uVar11 = 0x87;
              goto LAB_00a9fdda;
            }
            piVar8 = (int *)FUN_00a9f8f0(param_2,iVar5,local_4);
            FUN_00aa1430(param_2,iVar5);
            if (piVar8 == (int *)0x0) goto LAB_00a9fd30;
          }
          else {
            iVar5 = FUN_00a87dc0(pbVar2,0);
            if (iVar5 == 0) {
              uVar12 = 0xb1;
              uVar11 = 0x6e;
LAB_00a9fdda:
              FUN_00a7f3c0(0x22,0x82,uVar11,".\\crypto\\x509v3\\v3_cpols.c",uVar12);
              FUN_00a7f690(6,"section:",*puVar6,",name:",puVar6[1],",value:",puVar6[2]);
              goto LAB_00a9fd30;
            }
            piVar8 = (int *)FUN_00a8bf10(&DAT_00db9940);
            *piVar8 = iVar5;
          }
          iVar5 = FUN_00a80df0(iVar3,piVar8);
          if (iVar5 == 0) {
            FUN_00a9f330(piVar8);
            FUN_00a7f3c0(0x22,0x82,0x41,".\\crypto\\x509v3\\v3_cpols.c",0xba);
            goto LAB_00a9fd30;
          }
        }
        local_c = local_c + 1;
        iVar5 = FUN_00a80ed0(iVar4);
      } while (local_c < iVar5);
    }
    FUN_00a81120(iVar4,FUN_00aa03c0);
    return iVar3;
  }
  FUN_00a7f3c0(0x22,0x82,0x22,".\\crypto\\x509v3\\v3_cpols.c",0x94);
LAB_00a9fd30:
  FUN_00a81120(iVar4,FUN_00aa03c0);
  FUN_00a81120(iVar3,FUN_00a9f330);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00a9fe90(int param_1,undefined4 param_2)

{
  uint **ppuVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  uint *puVar5;
  int iVar6;
  undefined4 local_4;
  
  ppuVar1 = *(uint ***)(param_1 + 0x40);
  iVar6 = 0;
  local_4 = 0;
  iVar3 = FUN_00a80ed0(param_2);
  if (iVar3 == 0) {
LAB_00a9fec4:
    local_4 = 0xffffffff;
    *(uint *)(param_1 + 0x28) = *(uint *)(param_1 + 0x28) | 0x800;
  }
  else {
    iVar3 = FUN_00a80ed0(param_2);
    if (0 < iVar3) {
      do {
        puVar4 = (undefined4 *)FUN_00a80ee0(param_2,iVar6);
        iVar3 = FUN_00a877e0(puVar4[1]);
        if ((iVar3 == 0x2ea) || (iVar3 = FUN_00a877e0(*puVar4), iVar3 == 0x2ea)) goto LAB_00a9fec4;
        puVar5 = (uint *)FUN_00a8cd50(ppuVar1,*puVar4);
        if (puVar5 == (uint *)0x0) {
          if (*ppuVar1 != (uint *)0x0) {
            puVar5 = (uint *)FUN_00a9f250(0,*puVar4,**ppuVar1 & 0x10);
            if (puVar5 != (uint *)0x0) {
              uVar2 = (*ppuVar1)[2];
              *puVar5 = *puVar5 | 6;
              puVar5[2] = uVar2;
              iVar3 = FUN_00a80df0(ppuVar1[1],puVar5);
              if (iVar3 != 0) goto LAB_00a9ff93;
              FUN_00a9f210(puVar5);
            }
            goto LAB_00a9fecb;
          }
        }
        else {
          *puVar5 = *puVar5 | 1;
LAB_00a9ff93:
          iVar3 = FUN_00a80df0(puVar5[3],puVar4[1]);
          if (iVar3 == 0) goto LAB_00a9fecb;
          puVar4[1] = 0;
        }
        iVar6 = iVar6 + 1;
        iVar3 = FUN_00a80ed0(param_2);
      } while (iVar6 < iVar3);
    }
    local_4 = 1;
  }
LAB_00a9fecb:
  FUN_00a81120(param_2,&LAB_00ace7c0);
  return local_4;
}



void FUN_00aa0000(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00db9c18);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int * FUN_00aa0060(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  byte bVar1;
  int *piVar2;
  int iVar3;
  undefined4 *puVar4;
  byte *pbVar5;
  byte *pbVar6;
  char *pcVar7;
  int iVar8;
  bool bVar9;
  int *piVar10;
  
  piVar2 = (int *)FUN_00a8bf10(&DAT_00db9c18);
  if (piVar2 == (int *)0x0) {
    FUN_00a7f3c0(0x22,0x92,0x41,".\\crypto\\x509v3\\v3_pcons.c",0x71);
    return (int *)0x0;
  }
  iVar8 = 0;
  iVar3 = FUN_00a80ed0(param_3);
  if (0 < iVar3) {
    do {
      puVar4 = (undefined4 *)FUN_00a80ee0(param_3,iVar8);
      pbVar6 = (byte *)puVar4[1];
      pcVar7 = "requireExplicitPolicy";
      pbVar5 = pbVar6;
      do {
        bVar1 = *pbVar5;
        bVar9 = bVar1 < (byte)*pcVar7;
        if (bVar1 != *pcVar7) {
LAB_00aa00f6:
          iVar3 = (1 - (uint)bVar9) - (uint)(bVar9 != 0);
          goto LAB_00aa00fb;
        }
        if (bVar1 == 0) break;
        bVar1 = pbVar5[1];
        bVar9 = bVar1 < ((byte *)pcVar7)[1];
        if (bVar1 != ((byte *)pcVar7)[1]) goto LAB_00aa00f6;
        pbVar5 = pbVar5 + 2;
        pcVar7 = (char *)((byte *)pcVar7 + 2);
      } while (bVar1 != 0);
      iVar3 = 0;
LAB_00aa00fb:
      piVar10 = piVar2;
      if (iVar3 != 0) {
        pcVar7 = "inhibitPolicyMapping";
        do {
          bVar1 = *pbVar6;
          bVar9 = bVar1 < (byte)*pcVar7;
          if (bVar1 != *pcVar7) {
LAB_00aa0130:
            iVar3 = (1 - (uint)bVar9) - (uint)(bVar9 != 0);
            goto LAB_00aa0135;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar6[1];
          bVar9 = bVar1 < ((byte *)pcVar7)[1];
          if (bVar1 != ((byte *)pcVar7)[1]) goto LAB_00aa0130;
          pbVar6 = pbVar6 + 2;
          pcVar7 = (char *)((byte *)pcVar7 + 2);
        } while (bVar1 != 0);
        iVar3 = 0;
LAB_00aa0135:
        if (iVar3 != 0) {
          FUN_00a7f3c0(0x22,0x92,0x6a,".\\crypto\\x509v3\\v3_pcons.c",0x7d);
          FUN_00a7f690(6,"section:",*puVar4,",name:",puVar4[1],",value:",puVar4[2]);
          goto LAB_00aa01cc;
        }
        piVar10 = piVar2 + 1;
      }
      iVar3 = FUN_00aa0950(puVar4,piVar10);
      if (iVar3 == 0) goto LAB_00aa01cc;
      iVar8 = iVar8 + 1;
      iVar3 = FUN_00a80ed0(param_3);
    } while (iVar8 < iVar3);
  }
  if ((piVar2[1] != 0) || (*piVar2 != 0)) {
    return piVar2;
  }
  FUN_00a7f3c0(0x22,0x92,0x97,".\\crypto\\x509v3\\v3_pcons.c",0x83);
LAB_00aa01cc:
  FUN_00a8c2c0(piVar2,&DAT_00db9c18);
  return (int *)0x0;
}



void FUN_00aa01f0(void)

{
  FUN_00aac940();
  return;
}



void FUN_00aa0210(void)

{
  FUN_00aaa060();
  return;
}



void FUN_00aa0250(void)

{
  FUN_00aa9fe0();
  return;
}



void FUN_00aa0270(void)

{
  FUN_00aac940();
  return;
}



void FUN_00aa0290(void)

{
  FUN_00aaa060();
  return;
}



void FUN_00aa02b0(void)

{
  FUN_00acd820();
  return;
}



void FUN_00aa02d0(void)

{
  FUN_00acd820();
  return;
}



undefined4 FUN_00aa02e0(int param_1,int param_2,int *param_3)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  
  puVar3 = (undefined4 *)0x0;
  iVar4 = 0;
  iVar2 = 0;
  if (param_1 != 0) {
    iVar4 = FUN_00a852b0(param_1);
    if (iVar4 == 0) goto LAB_00aa035f;
  }
  if (param_2 != 0) {
    iVar2 = FUN_00a852b0(param_2);
    if (iVar2 == 0) goto LAB_00aa035f;
  }
  puVar3 = (undefined4 *)FUN_00a84f80(0xc,".\\crypto\\x509v3\\v3_utl.c",0x58);
  if (puVar3 != (undefined4 *)0x0) {
    if (*param_3 == 0) {
      iVar1 = FUN_00a81010();
      *param_3 = iVar1;
      if (iVar1 == 0) goto LAB_00aa035f;
    }
    *puVar3 = 0;
    puVar3[1] = iVar4;
    puVar3[2] = iVar2;
    iVar1 = FUN_00a80df0(*param_3,puVar3);
    if (iVar1 != 0) {
      return 1;
    }
  }
LAB_00aa035f:
  FUN_00a7f3c0(0x22,0x69,0x41,".\\crypto\\x509v3\\v3_utl.c",0x60);
  if (puVar3 != (undefined4 *)0x0) {
    FUN_00a85120(puVar3);
  }
  if (iVar4 != 0) {
    FUN_00a85120(iVar4);
  }
  if (iVar2 != 0) {
    FUN_00a85120(iVar2);
  }
  return 0;
}



undefined4 thunk_FUN_00aa02e0(int param_1,int param_2,int *param_3)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  
  puVar3 = (undefined4 *)0x0;
  iVar4 = 0;
  iVar2 = 0;
  if (param_1 != 0) {
    iVar4 = FUN_00a852b0(param_1);
    if (iVar4 == 0) goto LAB_00aa035f;
  }
  if (param_2 != 0) {
    iVar2 = FUN_00a852b0(param_2);
    if (iVar2 == 0) goto LAB_00aa035f;
  }
  puVar3 = (undefined4 *)FUN_00a84f80(0xc,".\\crypto\\x509v3\\v3_utl.c",0x58);
  if (puVar3 != (undefined4 *)0x0) {
    if (*param_3 == 0) {
      iVar1 = FUN_00a81010();
      *param_3 = iVar1;
      if (iVar1 == 0) goto LAB_00aa035f;
    }
    *puVar3 = 0;
    puVar3[1] = iVar4;
    puVar3[2] = iVar2;
    iVar1 = FUN_00a80df0(*param_3,puVar3);
    if (iVar1 != 0) {
      return 1;
    }
  }
LAB_00aa035f:
  FUN_00a7f3c0(0x22,0x69,0x41,".\\crypto\\x509v3\\v3_utl.c",0x60);
  if (puVar3 != (undefined4 *)0x0) {
    FUN_00a85120(puVar3);
  }
  if (iVar4 != 0) {
    FUN_00a85120(iVar4);
  }
  if (iVar2 != 0) {
    FUN_00a85120(iVar2);
  }
  return 0;
}



void FUN_00aa03c0(int *param_1)

{
  if (param_1 != (int *)0x0) {
    if (param_1[1] != 0) {
      FUN_00a85120(param_1[1]);
    }
    if (param_1[2] != 0) {
      FUN_00a85120(param_1[2]);
    }
    if (*param_1 != 0) {
      FUN_00a85120(*param_1);
    }
    FUN_00a85120(param_1);
  }
  return;
}



int FUN_00aa04a0(undefined4 param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  iVar2 = 0;
  if (param_2 == 0) {
    return param_2;
  }
  iVar1 = FUN_00a9dcb0(param_2,0);
  if (iVar1 != 0) {
    iVar2 = FUN_00a9b1a0(iVar1);
    if (iVar2 != 0) goto LAB_00aa04e6;
  }
  FUN_00a7f3c0(0x22,0x78,0x41,".\\crypto\\x509v3\\v3_utl.c",0x9a);
LAB_00aa04e6:
  FUN_00a9a9b0(iVar1);
  return iVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aa0500(undefined4 param_1,char *param_2)

{
  int iVar1;
  bool bVar2;
  int local_4;
  
  local_4 = 0;
  if (param_2 == (char *)0x0) {
    FUN_00a7f3c0(0x22,0x6c,0x6d,".\\crypto\\x509v3\\v3_utl.c",0xa6);
    return 0;
  }
  local_4 = FUN_00a9aa10();
  bVar2 = *param_2 == '-';
  if (bVar2) {
    param_2 = param_2 + 1;
  }
  if ((*param_2 == '0') && ((param_2[1] == 'x' || (param_2[1] == 'X')))) {
    param_2 = param_2 + 2;
    iVar1 = FUN_00a9b370(&local_4,param_2);
  }
  else {
    iVar1 = FUN_00a9b510(&local_4,param_2);
  }
  if ((iVar1 != 0) && (param_2[iVar1] == '\0')) {
    if ((bVar2) && (*(int *)(local_4 + 4) == 0)) {
      bVar2 = false;
    }
    iVar1 = FUN_00a9dbd0(local_4,0);
    FUN_00a9a9b0(local_4);
    if (iVar1 != 0) {
      if (bVar2) {
        *(uint *)(iVar1 + 4) = *(uint *)(iVar1 + 4) | 0x100;
      }
      return iVar1;
    }
    FUN_00a7f3c0(0x22,0x6c,0x65,".\\crypto\\x509v3\\v3_utl.c",0xc2);
    return 0;
  }
  FUN_00a9a9b0(local_4);
  FUN_00a7f3c0(0x22,0x6c,100,".\\crypto\\x509v3\\v3_utl.c",0xb9);
  return 0;
}



undefined4 FUN_00aa0610(undefined4 param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  
  if (param_2 == 0) {
    return 1;
  }
  iVar1 = FUN_00aa04a0(0,param_2);
  if (iVar1 == 0) {
    return 0;
  }
  uVar2 = FUN_00aa02e0(param_1,iVar1,param_3);
  FUN_00a85120(iVar1);
  return uVar2;
}



undefined4 FUN_00aa0660(undefined4 *param_1,undefined4 *param_2)

{
  byte bVar1;
  byte *pbVar2;
  int iVar3;
  byte *pbVar4;
  byte *pbVar5;
  char *pcVar6;
  bool bVar7;
  
  pbVar4 = (byte *)param_1[2];
  if (pbVar4 == (byte *)0x0) {
LAB_00aa08e9:
    FUN_00a7f3c0(0x22,0x6e,0x68,".\\crypto\\x509v3\\v3_utl.c",0xe5);
    FUN_00a7f690(6,"section:",*param_1,",name:",param_1[1],",value:",param_1[2]);
    return 0;
  }
  pbVar5 = &DAT_00db9cb8;
  pbVar2 = pbVar4;
  do {
    bVar1 = *pbVar2;
    bVar7 = bVar1 < *pbVar5;
    if (bVar1 != *pbVar5) {
LAB_00aa0698:
      iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
      goto LAB_00aa069d;
    }
    if (bVar1 == 0) break;
    bVar1 = pbVar2[1];
    bVar7 = bVar1 < pbVar5[1];
    if (bVar1 != pbVar5[1]) goto LAB_00aa0698;
    pbVar2 = pbVar2 + 2;
    pbVar5 = pbVar5 + 2;
  } while (bVar1 != 0);
  iVar3 = 0;
LAB_00aa069d:
  if (iVar3 != 0) {
    pbVar5 = &DAT_00fad868;
    pbVar2 = pbVar4;
    do {
      bVar1 = *pbVar2;
      bVar7 = bVar1 < *pbVar5;
      if (bVar1 != *pbVar5) {
LAB_00aa06d0:
        iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
        goto LAB_00aa06d5;
      }
      if (bVar1 == 0) break;
      bVar1 = pbVar2[1];
      bVar7 = bVar1 < pbVar5[1];
      if (bVar1 != pbVar5[1]) goto LAB_00aa06d0;
      pbVar2 = pbVar2 + 2;
      pbVar5 = pbVar5 + 2;
    } while (bVar1 != 0);
    iVar3 = 0;
LAB_00aa06d5:
    if (iVar3 != 0) {
      pbVar5 = &DAT_00db9cd4;
      pbVar2 = pbVar4;
      do {
        bVar1 = *pbVar2;
        bVar7 = bVar1 < *pbVar5;
        if (bVar1 != *pbVar5) {
LAB_00aa0704:
          iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
          goto LAB_00aa0709;
        }
        if (bVar1 == 0) break;
        bVar1 = pbVar2[1];
        bVar7 = bVar1 < pbVar5[1];
        if (bVar1 != pbVar5[1]) goto LAB_00aa0704;
        pbVar2 = pbVar2 + 2;
        pbVar5 = pbVar5 + 2;
      } while (bVar1 != 0);
      iVar3 = 0;
LAB_00aa0709:
      if (iVar3 != 0) {
        pbVar5 = &DAT_00db9cd0;
        pbVar2 = pbVar4;
        do {
          bVar1 = *pbVar2;
          bVar7 = bVar1 < *pbVar5;
          if (bVar1 != *pbVar5) {
LAB_00aa0738:
            iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
            goto LAB_00aa073d;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar2[1];
          bVar7 = bVar1 < pbVar5[1];
          if (bVar1 != pbVar5[1]) goto LAB_00aa0738;
          pbVar2 = pbVar2 + 2;
          pbVar5 = pbVar5 + 2;
        } while (bVar1 != 0);
        iVar3 = 0;
LAB_00aa073d:
        if (iVar3 != 0) {
          pbVar5 = &DAT_00db9ccc;
          pbVar2 = pbVar4;
          do {
            bVar1 = *pbVar2;
            bVar7 = bVar1 < *pbVar5;
            if (bVar1 != *pbVar5) {
LAB_00aa0770:
              iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
              goto LAB_00aa0775;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar2[1];
            bVar7 = bVar1 < pbVar5[1];
            if (bVar1 != pbVar5[1]) goto LAB_00aa0770;
            pbVar2 = pbVar2 + 2;
            pbVar5 = pbVar5 + 2;
          } while (bVar1 != 0);
          iVar3 = 0;
LAB_00aa0775:
          if (iVar3 != 0) {
            pbVar5 = &DAT_00da5328;
            pbVar2 = pbVar4;
            do {
              bVar1 = *pbVar2;
              bVar7 = bVar1 < *pbVar5;
              if (bVar1 != *pbVar5) {
LAB_00aa07a4:
                iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
                goto LAB_00aa07a9;
              }
              if (bVar1 == 0) break;
              bVar1 = pbVar2[1];
              bVar7 = bVar1 < pbVar5[1];
              if (bVar1 != pbVar5[1]) goto LAB_00aa07a4;
              pbVar2 = pbVar2 + 2;
              pbVar5 = pbVar5 + 2;
            } while (bVar1 != 0);
            iVar3 = 0;
LAB_00aa07a9:
            if (iVar3 != 0) {
              pcVar6 = "FALSE";
              pbVar2 = pbVar4;
              do {
                bVar1 = *pbVar2;
                bVar7 = bVar1 < (byte)*pcVar6;
                if (bVar1 != *pcVar6) {
LAB_00aa07d8:
                  iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
                  goto LAB_00aa07dd;
                }
                if (bVar1 == 0) break;
                bVar1 = pbVar2[1];
                bVar7 = bVar1 < ((byte *)pcVar6)[1];
                if (bVar1 != ((byte *)pcVar6)[1]) goto LAB_00aa07d8;
                pbVar2 = pbVar2 + 2;
                pcVar6 = (char *)((byte *)pcVar6 + 2);
              } while (bVar1 != 0);
              iVar3 = 0;
LAB_00aa07dd:
              if (iVar3 != 0) {
                pcVar6 = "false";
                pbVar2 = pbVar4;
                do {
                  bVar1 = *pbVar2;
                  bVar7 = bVar1 < (byte)*pcVar6;
                  if (bVar1 != *pcVar6) {
LAB_00aa0810:
                    iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
                    goto LAB_00aa0815;
                  }
                  if (bVar1 == 0) break;
                  bVar1 = pbVar2[1];
                  bVar7 = bVar1 < ((byte *)pcVar6)[1];
                  if (bVar1 != ((byte *)pcVar6)[1]) goto LAB_00aa0810;
                  pbVar2 = pbVar2 + 2;
                  pcVar6 = (char *)((byte *)pcVar6 + 2);
                } while (bVar1 != 0);
                iVar3 = 0;
LAB_00aa0815:
                if (iVar3 != 0) {
                  pbVar5 = &DAT_00db9cc8;
                  pbVar2 = pbVar4;
                  do {
                    bVar1 = *pbVar2;
                    bVar7 = bVar1 < *pbVar5;
                    if (bVar1 != *pbVar5) {
LAB_00aa0844:
                      iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
                      goto LAB_00aa0849;
                    }
                    if (bVar1 == 0) break;
                    bVar1 = pbVar2[1];
                    bVar7 = bVar1 < pbVar5[1];
                    if (bVar1 != pbVar5[1]) goto LAB_00aa0844;
                    pbVar2 = pbVar2 + 2;
                    pbVar5 = pbVar5 + 2;
                  } while (bVar1 != 0);
                  iVar3 = 0;
LAB_00aa0849:
                  if (iVar3 != 0) {
                    pbVar5 = &DAT_00db9cc4;
                    pbVar2 = pbVar4;
                    do {
                      bVar1 = *pbVar2;
                      bVar7 = bVar1 < *pbVar5;
                      if (bVar1 != *pbVar5) {
LAB_00aa0878:
                        iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
                        goto LAB_00aa087d;
                      }
                      if (bVar1 == 0) break;
                      bVar1 = pbVar2[1];
                      bVar7 = bVar1 < pbVar5[1];
                      if (bVar1 != pbVar5[1]) goto LAB_00aa0878;
                      pbVar2 = pbVar2 + 2;
                      pbVar5 = pbVar5 + 2;
                    } while (bVar1 != 0);
                    iVar3 = 0;
LAB_00aa087d:
                    if (iVar3 != 0) {
                      pbVar5 = &DAT_00db9cc0;
                      pbVar2 = pbVar4;
                      do {
                        bVar1 = *pbVar2;
                        bVar7 = bVar1 < *pbVar5;
                        if (bVar1 != *pbVar5) {
LAB_00aa08b0:
                          iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
                          goto LAB_00aa08b5;
                        }
                        if (bVar1 == 0) break;
                        bVar1 = pbVar2[1];
                        bVar7 = bVar1 < pbVar5[1];
                        if (bVar1 != pbVar5[1]) goto LAB_00aa08b0;
                        pbVar2 = pbVar2 + 2;
                        pbVar5 = pbVar5 + 2;
                      } while (bVar1 != 0);
                      iVar3 = 0;
LAB_00aa08b5:
                      if (iVar3 != 0) {
                        pbVar2 = &DAT_00da5324;
                        do {
                          bVar1 = *pbVar4;
                          bVar7 = bVar1 < *pbVar2;
                          if (bVar1 != *pbVar2) {
LAB_00aa08e0:
                            iVar3 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
                            goto LAB_00aa08e5;
                          }
                          if (bVar1 == 0) break;
                          bVar1 = pbVar4[1];
                          bVar7 = bVar1 < pbVar2[1];
                          if (bVar1 != pbVar2[1]) goto LAB_00aa08e0;
                          pbVar4 = pbVar4 + 2;
                          pbVar2 = pbVar2 + 2;
                        } while (bVar1 != 0);
                        iVar3 = 0;
LAB_00aa08e5:
                        if (iVar3 != 0) goto LAB_00aa08e9;
                      }
                    }
                  }
                }
              }
              *param_2 = 0;
              return 1;
            }
          }
        }
      }
    }
  }
  *param_2 = 0xff;
  return 1;
}



undefined4 FUN_00aa0950(undefined4 *param_1,int *param_2)

{
  int iVar1;
  
  iVar1 = FUN_00aa0500(0,param_1[2]);
  if (iVar1 == 0) {
    FUN_00a7f690(6,"section:",*param_1,",name:",param_1[1],",value:",param_1[2]);
    return 0;
  }
  *param_2 = iVar1;
  return 1;
}



uint __fastcall FUN_00aa09a0(byte *param_1)

{
  byte *pbVar1;
  int iVar2;
  byte *pbVar3;
  
  if (*param_1 != 0) {
    while (iVar2 = _isspace((uint)*param_1), iVar2 != 0) {
      param_1 = param_1 + 1;
      if (*param_1 == 0) {
        return 0;
      }
    }
    pbVar1 = param_1;
    if (*param_1 != 0) {
      do {
        pbVar3 = pbVar1;
        pbVar1 = pbVar3 + 1;
      } while (*pbVar3 != 0);
      pbVar3 = pbVar3 + -1;
      if (pbVar3 != param_1) {
        while (iVar2 = _isspace((uint)*pbVar3), iVar2 != 0) {
          pbVar3 = pbVar3 + -1;
          if (pbVar3 == param_1) {
            return -(uint)(*param_1 != 0) & (uint)param_1;
          }
        }
        if (param_1 != pbVar3) {
          pbVar3[1] = 0;
        }
      }
      return -(uint)(*param_1 != 0) & (uint)param_1;
    }
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

byte * FUN_00aa0ad0(byte *param_1,int *param_2)

{
  byte bVar1;
  byte *pbVar2;
  int iVar3;
  byte bVar4;
  byte bVar5;
  byte *pbVar6;
  byte *pbVar7;
  
  if (param_1 == (byte *)0x0) {
    FUN_00a7f3c0(0x22,0x71,0x6b,".\\crypto\\x509v3\\v3_utl.c",0x18d);
    return (byte *)0x0;
  }
  pbVar2 = param_1;
  do {
    bVar5 = *pbVar2;
    pbVar2 = pbVar2 + 1;
  } while (bVar5 != 0);
  pbVar2 = (byte *)FUN_00a84f80((int)pbVar2 - (int)(param_1 + 1) >> 1,".\\crypto\\x509v3\\v3_utl.c",
                                400);
  if (pbVar2 == (byte *)0x0) {
    FUN_00a7f3c0(0x22,0x71,0x41,".\\crypto\\x509v3\\v3_utl.c",0x1b4);
    return (byte *)0x0;
  }
  bVar5 = *param_1;
  pbVar6 = pbVar2;
  do {
    if (bVar5 == 0) {
      if (param_2 != (int *)0x0) {
        *param_2 = (int)pbVar6 - (int)pbVar2;
      }
      return pbVar2;
    }
    bVar5 = *param_1;
    pbVar7 = param_1 + 1;
    if (bVar5 != 0x3a) {
      bVar1 = *pbVar7;
      pbVar7 = param_1 + 2;
      if (bVar1 == 0) {
        FUN_00a7f3c0(0x22,0x71,0x70,".\\crypto\\x509v3\\v3_utl.c",0x19c);
        FUN_00a85120(pbVar2);
        return (byte *)0x0;
      }
      iVar3 = _isupper((uint)bVar5);
      if (iVar3 != 0) {
        iVar3 = _tolower((uint)bVar5);
        bVar5 = (byte)iVar3;
      }
      iVar3 = _isupper((uint)bVar1);
      if (iVar3 != 0) {
        iVar3 = _tolower((uint)bVar1);
        bVar1 = (byte)iVar3;
      }
      bVar4 = bVar5 - 0x30;
      if (9 < bVar4) {
        if (5 < (byte)(bVar5 + 0x9f)) goto LAB_00aa0c44;
        bVar4 = bVar5 + 0xa9;
      }
      bVar5 = bVar1 - 0x30;
      if (9 < bVar5) {
        if (5 < (byte)(bVar1 + 0x9f)) {
LAB_00aa0c44:
          FUN_00a85120(pbVar2);
          FUN_00a7f3c0(0x22,0x71,0x71,".\\crypto\\x509v3\\v3_utl.c",0x1b9);
          return (byte *)0x0;
        }
        bVar5 = bVar1 + 0xa9;
      }
      *pbVar6 = bVar4 << 4 | bVar5;
      pbVar6 = pbVar6 + 1;
    }
    bVar5 = *pbVar7;
    param_1 = pbVar7;
  } while( true );
}



int FUN_00aa0c70(char *param_1,char *param_2)

{
  char cVar1;
  char *pcVar2;
  int iVar3;
  
  pcVar2 = param_2;
  do {
    cVar1 = *pcVar2;
    pcVar2 = pcVar2 + 1;
  } while (cVar1 != '\0');
  iVar3 = _strncmp(param_1,param_2,(int)pcVar2 - (int)(param_2 + 1));
  if (iVar3 == 0) {
    if ((param_1[(int)pcVar2 - (int)(param_2 + 1)] != '\0') &&
       (param_1[(int)pcVar2 - (int)(param_2 + 1)] != '.')) {
      return 1;
    }
    iVar3 = 0;
  }
  return iVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa0cc0(char *param_1)

{
  int iVar1;
  undefined *unaff_ESI;
  uint local_10;
  uint local_c;
  uint local_8;
  uint local_4;
  
  local_4 = 0xaa0cca;
  iVar1 = FID_conflict__sscanf(param_1,"%d.%d.%d.%d",&local_10,&local_c,&local_8,&local_4);
  if (iVar1 != 4) {
    return 0;
  }
  if ((((local_10 < 0x100) && (local_c < 0x100)) && (local_8 < 0x100)) && (local_4 < 0x100)) {
    *unaff_ESI = (char)local_10;
    unaff_ESI[3] = (char)local_4;
    unaff_ESI[1] = (char)local_c;
    unaff_ESI[2] = (char)local_8;
    return 1;
  }
  return 0;
}



undefined4 __fastcall FUN_00aa0d50(int param_1_00,byte *param_2,undefined *param_1)

{
  byte bVar1;
  uint uVar2;
  undefined2 uVar3;
  uint uVar4;
  
  uVar4 = 0;
  uVar3 = 0;
  if (4 < param_1_00) {
    return 0;
  }
  if (param_1_00 != 0) {
    do {
      bVar1 = *param_2;
      param_1_00 = param_1_00 + -1;
      param_2 = param_2 + 1;
      if ((byte)(bVar1 - 0x30) < 10) {
        uVar2 = bVar1 - 0x30;
      }
      else if ((byte)(bVar1 + 0xbf) < 6) {
        uVar2 = bVar1 - 0x37;
      }
      else {
        if (5 < (byte)(bVar1 + 0x9f)) {
          return 0;
        }
        uVar2 = bVar1 - 0x57;
      }
      uVar4 = uVar4 << 4 | uVar2;
      uVar3 = (undefined2)uVar4;
    } while (param_1_00 != 0);
  }
  *param_1 = (char)((ushort)uVar3 >> 8);
  param_1[1] = (char)uVar3;
  return 1;
}



undefined4 FUN_00aa0dd0(int param_1,undefined4 param_2,undefined4 param_3)

{
  char *pcVar1;
  char cVar2;
  int iVar3;
  undefined4 uVar4;
  char *pcVar5;
  char *pcVar6;
  int iVar7;
  
  if (param_1 == 0) {
    return 0;
  }
  iVar7 = 0;
  iVar3 = FUN_00a80ed0(param_2);
  if (0 < iVar3) {
    do {
      iVar3 = FUN_00a80ee0(param_2,iVar7);
      pcVar6 = *(char **)(iVar3 + 4);
      cVar2 = *pcVar6;
      pcVar5 = pcVar6;
      while (cVar2 != '\0') {
        if (((cVar2 == ':') || (cVar2 == ',')) || (cVar2 == '.')) {
          if (pcVar5[1] != '\0') {
            pcVar6 = pcVar5 + 1;
          }
          break;
        }
        pcVar1 = pcVar5 + 1;
        pcVar5 = pcVar5 + 1;
        cVar2 = *pcVar1;
      }
      if (*pcVar6 == '+') {
        uVar4 = 0xffffffff;
        pcVar6 = pcVar6 + 1;
      }
      else {
        uVar4 = 0;
      }
      iVar3 = FUN_00a82990(param_1,pcVar6,param_3,*(undefined4 *)(iVar3 + 8),0xffffffff,0xffffffff,
                           uVar4);
      if (iVar3 == 0) {
        return 0;
      }
      iVar7 = iVar7 + 1;
      iVar3 = FUN_00a80ed0(param_2);
    } while (iVar7 < iVar3);
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa0e80(undefined4 param_1)

{
  char cVar1;
  char *pcVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 local_8;
  char *local_4;
  
  local_4 = (char *)0xaa0e8a;
  iVar5 = 0;
  local_8 = 0;
  pcVar2 = (char *)FUN_00a852b0(param_1);
  cVar1 = *pcVar2;
  iVar4 = 1;
  local_4 = pcVar2;
  if (cVar1 != '\0') {
    do {
      if ((cVar1 == '\r') || (cVar1 == '\n')) break;
      if (iVar4 + -1 == 0) {
        if (cVar1 == ':') {
          iVar4 = 2;
          *pcVar2 = '\0';
          iVar5 = FUN_00aa09a0();
          if (iVar5 == 0) {
            uVar7 = 0x10f;
            goto LAB_00aa0fa4;
          }
        }
        else if (cVar1 == ',') {
          *pcVar2 = '\0';
          iVar5 = FUN_00aa09a0();
          if (iVar5 == 0) {
            uVar7 = 0x11b;
            goto LAB_00aa0fa4;
          }
          FUN_00aa02e0(iVar5,0,&local_8);
        }
      }
      else if ((iVar4 == 2) && (cVar1 == ',')) {
        *pcVar2 = '\0';
        iVar3 = FUN_00aa09a0();
        if (iVar3 == 0) {
          uVar7 = 299;
          uVar6 = 0x6d;
          goto LAB_00aa0fab;
        }
        FUN_00aa02e0(iVar5,iVar3,&local_8);
        iVar5 = 0;
        iVar4 = iVar4 + -1;
      }
      cVar1 = pcVar2[1];
      pcVar2 = pcVar2 + 1;
    } while (cVar1 != '\0');
    if (iVar4 == 2) {
      iVar4 = FUN_00aa09a0();
      if (iVar4 != 0) goto LAB_00aa0fe5;
      uVar7 = 0x13c;
      uVar6 = 0x6d;
      goto LAB_00aa0fab;
    }
  }
  iVar5 = FUN_00aa09a0();
  if (iVar5 != 0) {
    iVar4 = 0;
LAB_00aa0fe5:
    FUN_00aa02e0(iVar5,iVar4,&local_8);
    FUN_00a85120(local_4);
    return local_8;
  }
  uVar7 = 0x146;
LAB_00aa0fa4:
  uVar6 = 0x6c;
LAB_00aa0fab:
  FUN_00a7f3c0(0x22,0x6d,uVar6,".\\crypto\\x509v3\\v3_utl.c",uVar7);
  FUN_00a85120(local_4);
  FUN_00a81120(local_8,FUN_00aa03c0);
  return 0;
}



undefined4 FUN_00aa1010(int param_1,int param_2,int param_3)

{
  int iVar1;
  
  iVar1 = *(int *)(param_3 + 0x10);
  if (iVar1 != 0x10) {
    if (param_2 == 0) {
      if (*(int *)(param_3 + 0x14) == -1) {
        *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + 1;
        *(int *)(param_3 + 0x14) = iVar1;
        return 1;
      }
      if (*(int *)(param_3 + 0x14) == iVar1) {
        *(int *)(param_3 + 0x18) = *(int *)(param_3 + 0x18) + 1;
        return 1;
      }
    }
    else if (param_2 < 5) {
      iVar1 = FUN_00aa0d50(iVar1 + param_3);
      if (iVar1 != 0) {
        *(int *)(param_3 + 0x10) = *(int *)(param_3 + 0x10) + 2;
        return 1;
      }
    }
    else if ((iVar1 < 0xd) && (*(char *)(param_1 + param_2) == '\0')) {
      iVar1 = FUN_00aa0cc0(param_1);
      if (iVar1 != 0) {
        *(int *)(param_3 + 0x10) = *(int *)(param_3 + 0x10) + 4;
        return 1;
      }
    }
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __thiscall FUN_00aa10a0(undefined4 *param_1_00,undefined4 param_1)

{
  size_t sVar1;
  size_t sVar2;
  int iVar3;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  size_t local_10;
  size_t local_c;
  int local_8;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_20;
  local_10 = 0;
  local_c = 0xffffffff;
  local_8 = 0;
  iVar3 = FUN_00a7ff80(param_1,0x3a,0,FUN_00aa1010,&local_20);
  sVar2 = local_c;
  sVar1 = local_10;
  if (iVar3 == 0) {
    ___security_check_cookie_4();
    return;
  }
  if (local_c == 0xffffffff) {
    if (local_10 != 0x10) goto LAB_00aa1115;
LAB_00aa11e0:
    *param_1_00 = local_20;
    param_1_00[1] = local_1c;
    param_1_00[2] = local_18;
    param_1_00[3] = local_14;
  }
  else {
    if (local_10 == 0x10) {
LAB_00aa1115:
      ___security_check_cookie_4();
      return;
    }
    if (3 < local_8) goto LAB_00aa1115;
    if (local_8 == 3) {
      if (0 < (int)local_10) {
        ___security_check_cookie_4();
        return;
      }
LAB_00aa117e:
      if ((int)local_c < 0) goto LAB_00aa11e0;
    }
    else {
      if (local_8 != 2) {
        if ((local_c == 0) || (local_c == local_10)) goto LAB_00aa1115;
        goto LAB_00aa117e;
      }
      if (local_c != 0) {
        if (local_c != local_10) {
          ___security_check_cookie_4();
          return;
        }
        goto LAB_00aa117e;
      }
    }
    _memcpy(param_1_00,&local_20,local_c);
    _memset((void *)((int)param_1_00 + sVar2),0,0x10 - sVar1);
    if (local_10 != local_c) {
      _memcpy((void *)((int)param_1_00 + local_c + (0x10 - local_10)),
              (void *)((int)&local_20 + local_c),local_10 - local_c);
      ___security_check_cookie_4();
      return;
    }
  }
  ___security_check_cookie_4();
  return;
}



byte FUN_00aa1220(undefined4 param_1,char *param_2)

{
  char *pcVar1;
  int iVar2;
  
  pcVar1 = _strchr(param_2,0x3a);
  if (pcVar1 != (char *)0x0) {
    iVar2 = FUN_00aa10a0();
    return -(iVar2 != 0) & 0x10;
  }
  iVar2 = FUN_00aa0cc0(param_2);
  return -(iVar2 != 0) & 4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aa1260(char *param_1)

{
  char *pcVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined local_14 [16];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_14;
  pcVar1 = _strchr(param_1,0x3a);
  if (pcVar1 == (char *)0x0) {
    iVar2 = FUN_00aa0cc0(param_1);
    if (iVar2 == 0) goto LAB_00aa12de;
    uVar4 = 4;
  }
  else {
    iVar2 = FUN_00aa10a0();
    if (iVar2 == 0) goto LAB_00aa12de;
    uVar4 = 0x10;
  }
  iVar2 = FUN_00a888d0();
  if (iVar2 != 0) {
    iVar3 = thunk_FUN_00a90c30(iVar2,local_14,uVar4);
    if (iVar3 != 0) {
      ___security_check_cookie_4();
      return;
    }
    FUN_00a888e0(iVar2);
  }
LAB_00aa12de:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aa1310(char *param_1)

{
  char *pcVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined local_24 [32];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_24;
  pcVar1 = _strchr(param_1,0x2f);
  if (pcVar1 == (char *)0x0) {
    ___security_check_cookie_4();
    return;
  }
  iVar2 = FUN_00a852b0(param_1);
  if (iVar2 != 0) {
    pcVar1[iVar2 - (int)param_1] = '\0';
    iVar3 = FUN_00aa1220(local_24,iVar2);
    if (iVar3 == 0) {
      FUN_00a85120(iVar2);
    }
    else {
      iVar4 = FUN_00aa1220(local_24 + iVar3,pcVar1 + (iVar2 - (int)param_1) + 1);
      FUN_00a85120(iVar2);
      if (((iVar4 != 0) && (iVar3 == iVar4)) && (iVar2 = FUN_00a888d0(), iVar2 != 0)) {
        iVar3 = thunk_FUN_00a90c30(iVar2,local_24,iVar4 + iVar3);
        if (iVar3 != 0) {
          ___security_check_cookie_4();
          return;
        }
        FUN_00a888e0(iVar2);
      }
    }
  }
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00aa13f0(int param_1)

{
  code *UNRECOVERED_JUMPTABLE;
  undefined4 uVar1;
  
  if (((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x14) != 0)) &&
     (UNRECOVERED_JUMPTABLE = *(code **)(*(int *)(param_1 + 0x14) + 4),
     UNRECOVERED_JUMPTABLE != (code *)0x0)) {
                    // WARNING: Could not recover jumptable at 0x00aa140d. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (*UNRECOVERED_JUMPTABLE)();
    return uVar1;
  }
  FUN_00a7f3c0(0x22,0x8e,0x94,".\\crypto\\x509v3\\v3_conf.c",0x191);
  return 0;
}



void FUN_00aa1430(int param_1,int param_2)

{
  code *UNRECOVERED_JUMPTABLE;
  
  if (param_2 != 0) {
    UNRECOVERED_JUMPTABLE = *(code **)(*(int *)(param_1 + 0x14) + 0xc);
    if (UNRECOVERED_JUMPTABLE != (code *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00aa1451. Too many branches
                    // WARNING: Treating indirect jump as call
      (*UNRECOVERED_JUMPTABLE)();
      return;
    }
  }
  return;
}



undefined ** FUN_00aa14a0(void)

{
  return &PTR_s_Eric_Young_s_PKCS_1_RSA_032430c0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aa14b0(undefined4 param_1,undefined4 param_2,void *param_3,int param_4,undefined4 param_5)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  int local_4;
  
  local_4 = -1;
  iVar1 = FUN_00a9a920(*(undefined4 *)(param_4 + 0x10));
  if (0x4000 < iVar1) {
    FUN_00a7f3c0(4,0x68,0x69,".\\crypto\\rsa\\rsa_eay.c",0xa3);
    return -1;
  }
  iVar1 = FUN_00a9ae10(*(undefined4 *)(param_4 + 0x10),*(undefined4 *)(param_4 + 0x14));
  if (iVar1 < 1) {
    uVar8 = 0xa9;
LAB_00aa1513:
    FUN_00a7f3c0(4,0x68,0x65,".\\crypto\\rsa\\rsa_eay.c",uVar8);
    return -1;
  }
  iVar1 = FUN_00a9a920(*(undefined4 *)(param_4 + 0x10));
  if ((0xc00 < iVar1) && (iVar1 = FUN_00a9a920(*(undefined4 *)(param_4 + 0x14)), 0x40 < iVar1)) {
    uVar8 = 0xb2;
    goto LAB_00aa1513;
  }
  iVar1 = FUN_00aa49c0();
  if (iVar1 == 0) {
    return -1;
  }
  FUN_00aa4a50(iVar1);
  iVar2 = FUN_00aa4ae0(iVar1);
  iVar3 = FUN_00aa4ae0(iVar1);
  iVar4 = FUN_00a9a920(*(undefined4 *)(param_4 + 0x10));
  iVar6 = (int)(iVar4 + 7 + (iVar4 + 7 >> 0x1f & 7U)) >> 3;
  iVar4 = FUN_00a84f80(iVar6,".\\crypto\\rsa\\rsa_eay.c",0xbc);
  if (((iVar2 == 0) || (iVar3 == 0)) || (iVar4 == 0)) {
    uVar7 = 0xbf;
    uVar8 = 0x41;
  }
  else {
    switch(param_5) {
    case 1:
      iVar5 = FUN_00ad1080(iVar4,iVar6,param_2,param_1);
      break;
    case 2:
      iVar5 = FUN_00ad0710(iVar4,iVar6,param_2,param_1);
      break;
    case 3:
      iVar5 = FUN_00ad0650(iVar4,iVar6,param_2,param_1);
      break;
    case 4:
      iVar5 = FUN_00ad0a90(iVar4,iVar6,param_2,param_1,0,0);
      break;
    default:
      uVar7 = 0xd4;
      uVar8 = 0x76;
      goto LAB_00aa1723;
    }
    if ((iVar5 < 1) || (iVar5 = FUN_00a9acb0(iVar4,iVar6,iVar2), iVar5 == 0)) goto LAB_00aa172f;
    iVar5 = FUN_00a9ae10(iVar2,*(undefined4 *)(param_4 + 0x10));
    if (iVar5 < 0) {
      if ((((*(byte *)(param_4 + 0x3c) & 2) == 0) ||
          (iVar5 = FUN_00ad0580(param_4 + 0x40,9,*(undefined4 *)(param_4 + 0x10),iVar1), iVar5 != 0)
          ) && (iVar2 = (**(code **)(*(int *)(param_4 + 8) + 0x18))
                                  (iVar3,iVar2,*(undefined4 *)(param_4 + 0x14),
                                   *(undefined4 *)(param_4 + 0x10),iVar1,
                                   *(undefined4 *)(param_4 + 0x40)), iVar2 != 0)) {
        iVar2 = FUN_00a9a920(iVar3);
        iVar2 = FUN_00a9ad90(iVar3,(iVar6 - ((int)(iVar2 + 7 + (iVar2 + 7 >> 0x1f & 7U)) >> 3)) +
                                   (int)param_3);
        local_4 = iVar6;
        if (0 < iVar6 - iVar2) {
          _memset(param_3,0,iVar6 - iVar2);
        }
      }
      goto LAB_00aa172f;
    }
    uVar7 = 0xde;
    uVar8 = 0x84;
  }
LAB_00aa1723:
  FUN_00a7f3c0(4,0x68,uVar8,".\\crypto\\rsa\\rsa_eay.c",uVar7);
LAB_00aa172f:
  FUN_00aa4aa0(iVar1);
  FUN_00aa4a20(iVar1);
  if (iVar4 != 0) {
    FUN_00a84330(iVar4,iVar6);
    FUN_00a85120(iVar4);
  }
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aa1770(undefined4 *param_1)

{
  bool bVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int unaff_ESI;
  undefined local_8 [4];
  undefined4 uStack_4;
  
  uStack_4 = 0xaa177a;
  bVar1 = false;
  FUN_00a7fdc0(5,9,".\\crypto\\rsa\\rsa_eay.c",0x105);
  if (*(int *)(unaff_ESI + 0x50) == 0) {
    FUN_00a7fdc0(6,9,".\\crypto\\rsa\\rsa_eay.c",0x109);
    FUN_00a7fdc0(9,9,".\\crypto\\rsa\\rsa_eay.c",0x10a);
    bVar1 = true;
    if (*(int *)(unaff_ESI + 0x50) == 0) {
      uVar2 = FUN_00ad1360();
      *(undefined4 *)(unaff_ESI + 0x50) = uVar2;
    }
  }
  iVar4 = *(int *)(unaff_ESI + 0x50);
  if (iVar4 != 0) {
    FUN_00a7f970(local_8);
    uVar2 = FUN_00aa2910(iVar4);
    iVar3 = FUN_00a7f9b0(local_8,uVar2);
    if (iVar3 == 0) {
      *param_1 = 1;
    }
    else {
      *param_1 = 0;
      if (*(int *)(unaff_ESI + 0x54) == 0) {
        if (!bVar1) {
          FUN_00a7fdc0(6,9,".\\crypto\\rsa\\rsa_eay.c",0x12a);
          FUN_00a7fdc0(9,9,".\\crypto\\rsa\\rsa_eay.c",299);
          bVar1 = true;
        }
        if (*(int *)(unaff_ESI + 0x54) == 0) {
          uVar2 = FUN_00ad1360();
          *(undefined4 *)(unaff_ESI + 0x54) = uVar2;
        }
      }
      iVar4 = *(int *)(unaff_ESI + 0x54);
    }
  }
  if (bVar1) {
    FUN_00a7fdc0(10,9,".\\crypto\\rsa\\rsa_eay.c",0x137);
    return iVar4;
  }
  FUN_00a7fdc0(6,9,".\\crypto\\rsa\\rsa_eay.c",0x139);
  return iVar4;
}



undefined4 __fastcall FUN_00aa18c0(int param_1)

{
  undefined4 uVar1;
  
  if (param_1 == 0) {
    uVar1 = FUN_00aa2bc0();
    return uVar1;
  }
  FUN_00a7fdc0(9,0x19,".\\crypto\\rsa\\rsa_eay.c",0x149);
  uVar1 = FUN_00aa2bc0();
  FUN_00a7fdc0(10,0x19,".\\crypto\\rsa\\rsa_eay.c",0x14b);
  return uVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aa1920(undefined4 param_1,undefined4 param_2,void *param_3,int param_4,int param_5)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  int local_28;
  int local_24;
  int local_20;
  undefined4 *local_1c;
  int local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  uint local_4;
  
  local_4 = 0xaa192a;
  local_20 = -1;
  local_1c = (undefined4 *)0x0;
  local_24 = 0;
  local_28 = 0;
  iVar2 = FUN_00aa49c0();
  if (iVar2 == 0) {
    return -1;
  }
  FUN_00aa4a50(iVar2);
  iVar3 = FUN_00aa4ae0(iVar2);
  iVar4 = FUN_00aa4ae0(iVar2);
  iVar5 = FUN_00a9a920(*(undefined4 *)(param_4 + 0x10));
  iVar5 = (int)(iVar5 + 7 + (iVar5 + 7 >> 0x1f & 7U)) >> 3;
  local_18 = FUN_00a84f80(iVar5,".\\crypto\\rsa\\rsa_eay.c",0x171);
  if (((iVar3 == 0) || (iVar4 == 0)) || (local_18 == 0)) {
    uVar8 = 0x174;
LAB_00aa1c46:
    uVar7 = 0x41;
  }
  else if (param_5 == 1) {
    iVar6 = FUN_00ad0f10(local_18,iVar5,param_2,param_1);
LAB_00aa1a14:
    if ((iVar6 < 1) || (iVar6 = FUN_00a9acb0(local_18,iVar5,iVar3), iVar6 == 0)) goto LAB_00aa1c59;
    iVar6 = FUN_00a9ae10(iVar3,*(undefined4 *)(param_4 + 0x10));
    if (iVar6 < 0) {
      if ((*(byte *)(param_4 + 0x3c) & 0x80) == 0) {
        local_28 = FUN_00aa1770(&local_1c,iVar2);
        if (local_28 == 0) {
          uVar8 = 0x198;
          uVar7 = 0x44;
          goto LAB_00aa1c4d;
        }
        if ((local_1c == (undefined4 *)0x0) && (local_24 = FUN_00aa4ae0(iVar2), local_24 == 0)) {
          uVar8 = 0x1a1;
          goto LAB_00aa1c46;
        }
        iVar6 = FUN_00aa18c0(local_28);
        if (iVar6 == 0) goto LAB_00aa1c59;
      }
      if (((*(uint *)(param_4 + 0x3c) & 0x20) == 0) &&
         ((((*(int *)(param_4 + 0x1c) == 0 || (*(int *)(param_4 + 0x20) == 0)) ||
           (*(int *)(param_4 + 0x24) == 0)) ||
          ((*(int *)(param_4 + 0x28) == 0 || (*(int *)(param_4 + 0x2c) == 0)))))) {
        if ((*(uint *)(param_4 + 0x3c) & 0x100) == 0) {
          FUN_00a9a9f0(&local_14);
          puVar1 = *(undefined4 **)(param_4 + 0x18);
          local_14 = *puVar1;
          local_1c = &local_14;
          local_10 = puVar1[1];
          local_c = puVar1[2];
          local_8 = puVar1[3];
          local_4 = puVar1[4] & 0xfffffffe | local_4 & 1 | 6;
        }
        else {
          local_1c = *(undefined4 **)(param_4 + 0x18);
        }
        if (((*(byte *)(param_4 + 0x3c) & 2) != 0) &&
           (iVar6 = FUN_00ad0580(param_4 + 0x40,9,*(undefined4 *)(param_4 + 0x10),iVar2), iVar6 == 0
           )) goto LAB_00aa1c59;
        iVar6 = (**(code **)(*(int *)(param_4 + 8) + 0x18))
                          (iVar4,iVar3,local_1c,*(undefined4 *)(param_4 + 0x10),iVar2,
                           *(undefined4 *)(param_4 + 0x40));
      }
      else {
        iVar6 = (**(code **)(*(int *)(param_4 + 8) + 0x14))(iVar4,iVar3,param_4,iVar2);
      }
      if ((iVar6 != 0) &&
         ((local_28 == 0 || (iVar6 = FUN_00aa28a0(iVar4,local_24,local_28,iVar2), iVar6 != 0)))) {
        if (param_5 == 5) {
          FUN_00ad1720(iVar3,*(undefined4 *)(param_4 + 0x10),iVar4);
          iVar6 = FUN_00a9ae60(iVar4,iVar3);
          if (iVar6 != 0) {
            iVar4 = iVar3;
          }
        }
        iVar3 = FUN_00a9a920(iVar4);
        iVar4 = FUN_00a9ad90(iVar4,(iVar5 - ((int)(iVar3 + 7 + (iVar3 + 7 >> 0x1f & 7U)) >> 3)) +
                                   (int)param_3);
        local_20 = iVar5;
        if (0 < iVar5 - iVar4) {
          _memset(param_3,0,iVar5 - iVar4);
        }
      }
      goto LAB_00aa1c59;
    }
    uVar8 = 399;
    uVar7 = 0x84;
  }
  else {
    if (param_5 == 3) {
      iVar6 = FUN_00ad0650(local_18,iVar5,param_2,param_1);
      goto LAB_00aa1a14;
    }
    if (param_5 == 5) {
      iVar6 = FUN_00ad1880(local_18,iVar5,param_2,param_1);
      goto LAB_00aa1a14;
    }
    uVar8 = 0x185;
    uVar7 = 0x76;
  }
LAB_00aa1c4d:
  FUN_00a7f3c0(4,0x66,uVar7,".\\crypto\\rsa\\rsa_eay.c",uVar8);
LAB_00aa1c59:
  FUN_00aa4aa0(iVar2);
  FUN_00aa4a20(iVar2);
  iVar2 = local_18;
  if (local_18 != 0) {
    FUN_00a84330(local_18,iVar5);
    FUN_00a85120(iVar2);
  }
  return local_20;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aa1ca0(int param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  int local_2c;
  int local_24;
  int local_20;
  undefined4 *local_1c;
  int local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  uint local_4;
  
  local_4 = 0xaa1caa;
  local_2c = -1;
  local_1c = (undefined4 *)0x0;
  local_20 = 0;
  local_24 = 0;
  iVar2 = FUN_00aa49c0();
  if (iVar2 == 0) {
    return -1;
  }
  FUN_00aa4a50(iVar2);
  iVar3 = FUN_00aa4ae0(iVar2);
  iVar4 = FUN_00aa4ae0(iVar2);
  iVar5 = FUN_00a9a920(*(undefined4 *)(param_4 + 0x10));
  iVar5 = (int)(iVar5 + 7 + (iVar5 + 7 >> 0x1f & 7U)) >> 3;
  local_18 = FUN_00a84f80(iVar5,".\\crypto\\rsa\\rsa_eay.c",0x200);
  if (((iVar3 == 0) || (iVar4 == 0)) || (local_18 == 0)) {
    uVar8 = 0x203;
LAB_00aa1f83:
    uVar7 = 0x41;
  }
  else if (iVar5 < param_1) {
    uVar8 = 0x20b;
    uVar7 = 0x6c;
  }
  else {
    iVar6 = FUN_00a9acb0(param_2,param_1,iVar3);
    if (iVar6 == 0) goto LAB_00aa1f96;
    iVar6 = FUN_00a9ae10(iVar3,*(undefined4 *)(param_4 + 0x10));
    if (iVar6 < 0) {
      if ((*(byte *)(param_4 + 0x3c) & 0x80) == 0) {
        local_24 = FUN_00aa1770(&local_1c,iVar2);
        if (local_24 == 0) {
          uVar8 = 0x21d;
          uVar7 = 0x44;
          goto LAB_00aa1f8a;
        }
        if ((local_1c == (undefined4 *)0x0) && (local_20 = FUN_00aa4ae0(iVar2), local_20 == 0)) {
          uVar8 = 0x226;
          goto LAB_00aa1f83;
        }
        iVar6 = FUN_00aa18c0(local_24);
        if (iVar6 == 0) goto LAB_00aa1f96;
      }
      uVar1 = *(uint *)(param_4 + 0x3c);
      if (((uVar1 & 0x20) == 0) &&
         (((*(int *)(param_4 + 0x1c) == 0 || (*(int *)(param_4 + 0x20) == 0)) ||
          ((*(int *)(param_4 + 0x24) == 0 ||
           ((*(int *)(param_4 + 0x28) == 0 || (*(int *)(param_4 + 0x2c) == 0)))))))) {
        local_1c = *(undefined4 **)(param_4 + 0x18);
        if ((uVar1 & 0x100) == 0) {
          local_14 = *local_1c;
          local_10 = local_1c[1];
          local_c = local_1c[2];
          local_8 = local_1c[3];
          local_4 = local_1c[4] & 0xfffffffe | local_4 & 1 | 6;
          local_1c = &local_14;
        }
        if (((uVar1 & 2) != 0) &&
           (iVar6 = FUN_00ad0580(param_4 + 0x40,9,*(undefined4 *)(param_4 + 0x10),iVar2), iVar6 == 0
           )) goto LAB_00aa1f96;
        iVar3 = (**(code **)(*(int *)(param_4 + 8) + 0x18))
                          (iVar4,iVar3,local_1c,*(undefined4 *)(param_4 + 0x10),iVar2,
                           *(undefined4 *)(param_4 + 0x40));
      }
      else {
        iVar3 = (**(code **)(*(int *)(param_4 + 8) + 0x14))(iVar4,iVar3,param_4,iVar2);
      }
      if ((iVar3 == 0) ||
         ((local_24 != 0 && (iVar3 = FUN_00aa28a0(iVar4,local_20,local_24,iVar2), iVar3 == 0))))
      goto LAB_00aa1f96;
      iVar3 = local_18;
      uVar8 = FUN_00a9ad90(iVar4,local_18);
      switch(param_5) {
      case 1:
        local_2c = FUN_00ad1130(param_3,iVar5,iVar3,uVar8,iVar5);
        break;
      case 2:
        local_2c = FUN_00ad07c0(param_3,iVar5,iVar3,uVar8,iVar5);
        break;
      case 3:
        local_2c = FUN_00ad06b0(param_3,iVar5,iVar3,uVar8,iVar5);
        break;
      case 4:
        local_2c = FUN_00ad0ca0(param_3,iVar5,iVar3,uVar8,iVar5,0,0);
        break;
      default:
        uVar8 = 0x264;
        uVar7 = 0x76;
        goto LAB_00aa1f8a;
      }
      if (-1 < local_2c) goto LAB_00aa1f96;
      uVar8 = 0x268;
      uVar7 = 0x72;
    }
    else {
      uVar8 = 0x214;
      uVar7 = 0x84;
    }
  }
LAB_00aa1f8a:
  FUN_00a7f3c0(4,0x65,uVar7,".\\crypto\\rsa\\rsa_eay.c",uVar8);
LAB_00aa1f96:
  FUN_00aa4aa0(iVar2);
  FUN_00aa4a20(iVar2);
  iVar2 = local_18;
  if (local_18 != 0) {
    FUN_00a84330(local_18,iVar5);
    FUN_00a85120(iVar2);
  }
  return local_2c;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aa1ff0(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  int local_8;
  
  local_8 = -1;
  iVar1 = FUN_00a9a920(*(undefined4 *)(param_4 + 0x10));
  if (0x4000 < iVar1) {
    FUN_00a7f3c0(4,0x67,0x69,".\\crypto\\rsa\\rsa_eay.c",0x284);
    return -1;
  }
  iVar1 = FUN_00a9ae10(*(undefined4 *)(param_4 + 0x10),*(undefined4 *)(param_4 + 0x14));
  if (iVar1 < 1) {
    uVar8 = 0x28a;
LAB_00aa2053:
    FUN_00a7f3c0(4,0x67,0x65,".\\crypto\\rsa\\rsa_eay.c",uVar8);
    return -1;
  }
  iVar1 = FUN_00a9a920(*(undefined4 *)(param_4 + 0x10));
  if ((0xc00 < iVar1) && (iVar1 = FUN_00a9a920(*(undefined4 *)(param_4 + 0x14)), 0x40 < iVar1)) {
    uVar8 = 0x293;
    goto LAB_00aa2053;
  }
  iVar1 = FUN_00aa49c0();
  if (iVar1 == 0) {
    return -1;
  }
  FUN_00aa4a50(iVar1);
  iVar2 = FUN_00aa4ae0(iVar1);
  puVar3 = (undefined4 *)FUN_00aa4ae0(iVar1);
  iVar4 = FUN_00a9a920(*(undefined4 *)(param_4 + 0x10));
  iVar6 = (int)(iVar4 + 7 + (iVar4 + 7 >> 0x1f & 7U)) >> 3;
  iVar4 = FUN_00a84f80(iVar6,".\\crypto\\rsa\\rsa_eay.c",0x29d);
  if (((iVar2 == 0) || (puVar3 == (undefined4 *)0x0)) || (iVar4 == 0)) {
    uVar7 = 0x2a0;
    uVar8 = 0x41;
  }
  else if (iVar6 < param_1) {
    uVar7 = 0x2a8;
    uVar8 = 0x6c;
  }
  else {
    iVar5 = FUN_00a9acb0(param_2,param_1,iVar2);
    if (iVar5 == 0) goto LAB_00aa227b;
    iVar5 = FUN_00a9ae10(iVar2,*(undefined4 *)(param_4 + 0x10));
    if (iVar5 < 0) {
      if (((((*(byte *)(param_4 + 0x3c) & 2) == 0) ||
           (iVar5 = FUN_00ad0580(param_4 + 0x40,9,*(undefined4 *)(param_4 + 0x10),iVar1), iVar5 != 0
           )) && (iVar2 = (**(code **)(*(int *)(param_4 + 8) + 0x18))
                                    (puVar3,iVar2,*(undefined4 *)(param_4 + 0x14),
                                     *(undefined4 *)(param_4 + 0x10),iVar1,
                                     *(undefined4 *)(param_4 + 0x40)), iVar2 != 0)) &&
         (((param_5 != 5 || (((byte)*(undefined4 *)*puVar3 & 0xf) == 0xc)) ||
          (iVar2 = FUN_00ad1720(puVar3,*(undefined4 *)(param_4 + 0x10),puVar3), iVar2 != 0)))) {
        uVar8 = FUN_00a9ad90(puVar3,iVar4);
        if (param_5 == 1) {
          local_8 = FUN_00ad0f80(param_3,iVar6,iVar4,uVar8,iVar6);
        }
        else if (param_5 == 3) {
          local_8 = FUN_00ad06b0(param_3,iVar6,iVar4,uVar8,iVar6);
        }
        else {
          if (param_5 != 5) {
            FUN_00a7f3c0(4,0x67,0x76,".\\crypto\\rsa\\rsa_eay.c",0x2cd);
            goto LAB_00aa227b;
          }
          local_8 = FUN_00ad1900(param_3,iVar6,iVar4,uVar8,iVar6);
        }
        if (local_8 < 0) {
          FUN_00a7f3c0(4,0x67,0x72,".\\crypto\\rsa\\rsa_eay.c",0x2d1);
        }
      }
      goto LAB_00aa227b;
    }
    uVar7 = 0x2b0;
    uVar8 = 0x84;
  }
  FUN_00a7f3c0(4,0x67,uVar8,".\\crypto\\rsa\\rsa_eay.c",uVar7);
LAB_00aa227b:
  FUN_00aa4aa0(iVar1);
  FUN_00aa4a20(iVar1);
  if (iVar4 != 0) {
    FUN_00a84330(iVar4,iVar6);
    FUN_00a85120(iVar4);
  }
  return local_8;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa22b0(int param_1,undefined4 *param_2,int param_3,undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 *puVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 *local_84;
  undefined4 local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined4 local_74;
  undefined4 local_70;
  uint local_6c;
  undefined4 local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  uint local_58;
  int local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  uint local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  uint local_2c;
  undefined4 uStack_28;
  undefined4 uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  uint uStack_18;
  undefined4 uStack_14;
  undefined4 uStack_10;
  undefined4 uStack_c;
  undefined4 uStack_8;
  uint uStack_4;
  
  uStack_4 = 0xaa22ba;
  local_80 = 0;
  FUN_00aa4a50(param_4);
  puVar2 = (undefined4 *)FUN_00aa4ae0(param_4);
  uVar3 = FUN_00aa4ae0(param_4);
  local_54 = FUN_00aa4ae0(param_4);
  if ((*(uint *)(param_3 + 0x3c) & 0x100) == 0) {
    FUN_00a9a9f0(&local_50);
    puVar5 = *(undefined4 **)(param_3 + 0x1c);
    local_50 = *puVar5;
    local_4c = puVar5[1];
    local_48 = puVar5[2];
    local_44 = puVar5[3];
    local_40 = puVar5[4] & 0xfffffffe | local_40 & 1 | 6;
    puVar5 = &local_50;
    FUN_00a9a9f0(&local_7c);
    local_84 = &local_7c;
    puVar1 = *(undefined4 **)(param_3 + 0x20);
    local_7c = *puVar1;
    local_78 = puVar1[1];
    local_74 = puVar1[2];
    local_70 = puVar1[3];
    local_6c = puVar1[4] & 0xfffffffe | local_6c & 1 | 6;
  }
  else {
    local_84 = *(undefined4 **)(param_3 + 0x20);
    puVar5 = *(undefined4 **)(param_3 + 0x1c);
  }
  if ((((*(byte *)(param_3 + 0x3c) & 4) == 0) ||
      ((iVar4 = FUN_00ad0580(param_3 + 0x44,9,puVar5,param_4), iVar4 != 0 &&
       (iVar4 = FUN_00ad0580(param_3 + 0x48,9,local_84,param_4), iVar4 != 0)))) &&
     (((*(byte *)(param_3 + 0x3c) & 2) == 0 ||
      (iVar4 = FUN_00ad0580(param_3 + 0x40,9,*(undefined4 *)(param_3 + 0x10),param_4), iVar4 != 0)))
     ) {
    if ((*(uint *)(param_3 + 0x3c) & 0x100) == 0) {
      local_64 = param_2[1];
      local_60 = param_2[2];
      local_68 = *param_2;
      local_5c = param_2[3];
      local_58 = param_2[4] & 0xfffffffe | local_58 & 1 | 6;
      uVar7 = *(undefined4 *)(param_3 + 0x20);
      puVar5 = &local_68;
    }
    else {
      uVar7 = *(undefined4 *)(param_3 + 0x20);
      puVar5 = param_2;
    }
    iVar4 = FUN_00ad26e0(0,puVar2,puVar5,uVar7,param_4);
    if (iVar4 != 0) {
      if ((*(uint *)(param_3 + 0x3c) & 0x100) == 0) {
        puVar5 = *(undefined4 **)(param_3 + 0x28);
        local_3c = *puVar5;
        local_38 = puVar5[1];
        local_34 = puVar5[2];
        local_30 = puVar5[3];
        local_2c = puVar5[4] & 0xfffffffe | local_2c & 1 | 6;
        puVar5 = &local_3c;
      }
      else {
        puVar5 = *(undefined4 **)(param_3 + 0x28);
      }
      iVar4 = (**(code **)(*(int *)(param_3 + 8) + 0x18))
                        (uVar3,puVar2,puVar5,*(undefined4 *)(param_3 + 0x20),param_4,
                         *(undefined4 *)(param_3 + 0x48));
      if (iVar4 != 0) {
        if ((*(uint *)(param_3 + 0x3c) & 0x100) == 0) {
          local_64 = param_2[1];
          local_60 = param_2[2];
          local_68 = *param_2;
          local_5c = param_2[3];
          local_58 = param_2[4] & 0xfffffffe | local_58 & 1 | 6;
          uVar7 = *(undefined4 *)(param_3 + 0x1c);
          puVar5 = &local_68;
        }
        else {
          uVar7 = *(undefined4 *)(param_3 + 0x1c);
          puVar5 = param_2;
        }
        iVar4 = FUN_00ad26e0(0,puVar2,puVar5,uVar7,param_4);
        if (iVar4 != 0) {
          if ((*(uint *)(param_3 + 0x3c) & 0x100) == 0) {
            puVar5 = *(undefined4 **)(param_3 + 0x24);
            uStack_28 = *puVar5;
            uStack_24 = puVar5[1];
            uStack_20 = puVar5[2];
            uStack_1c = puVar5[3];
            uStack_18 = puVar5[4] & 0xfffffffe | uStack_18 & 1 | 6;
            puVar5 = &uStack_28;
          }
          else {
            puVar5 = *(undefined4 **)(param_3 + 0x24);
          }
          iVar4 = (**(code **)(*(int *)(param_3 + 8) + 0x18))
                            (param_1,puVar2,puVar5,*(undefined4 *)(param_3 + 0x1c),param_4,
                             *(undefined4 *)(param_3 + 0x44));
          if ((((iVar4 != 0) && (iVar4 = FUN_00ad1720(param_1,param_1,uVar3), iVar4 != 0)) &&
              ((*(int *)(param_1 + 0xc) == 0 ||
               (iVar4 = FUN_00ad17f0(param_1,param_1,*(undefined4 *)(param_3 + 0x1c)), iVar4 != 0)))
              ) && (iVar4 = FUN_00ad2400(puVar2,param_1,*(undefined4 *)(param_3 + 0x2c),param_4),
                   iVar4 != 0)) {
            puVar5 = puVar2;
            if ((*(uint *)(param_3 + 0x3c) & 0x100) == 0) {
              uStack_14 = *puVar2;
              uStack_10 = puVar2[1];
              uStack_c = puVar2[2];
              uStack_8 = puVar2[3];
              uStack_4 = puVar2[4] & 0xfffffffe | uStack_4 & 1 | 6;
              puVar5 = &uStack_14;
            }
            iVar4 = FUN_00ad26e0(0,param_1,puVar5,*(undefined4 *)(param_3 + 0x1c),param_4);
            if ((iVar4 != 0) &&
               ((((*(int *)(param_1 + 0xc) == 0 ||
                  (iVar4 = FUN_00ad17f0(param_1,param_1,*(undefined4 *)(param_3 + 0x1c)), iVar4 != 0
                  )) && (iVar4 = FUN_00ad2400(puVar2,param_1,*(undefined4 *)(param_3 + 0x20),param_4
                                             ), iVar4 != 0)) &&
                (iVar6 = FUN_00ad17f0(param_1,puVar2,uVar3), iVar4 = local_54, iVar6 != 0)))) {
              if ((*(int *)(param_3 + 0x14) != 0) && (*(int *)(param_3 + 0x10) != 0)) {
                iVar6 = (**(code **)(*(int *)(param_3 + 8) + 0x18))
                                  (local_54,param_1,*(int *)(param_3 + 0x14),
                                   *(int *)(param_3 + 0x10),param_4,*(undefined4 *)(param_3 + 0x40))
                ;
                if ((iVar6 == 0) ||
                   (((iVar6 = FUN_00ad1720(iVar4,iVar4,param_2), iVar6 == 0 ||
                     (iVar6 = FUN_00ad26e0(0,iVar4,iVar4,*(undefined4 *)(param_3 + 0x10),param_4),
                     iVar6 == 0)) ||
                    ((*(int *)(iVar4 + 0xc) != 0 &&
                     (iVar6 = FUN_00ad17f0(iVar4,iVar4,*(undefined4 *)(param_3 + 0x10)), iVar6 == 0)
                     ))))) goto LAB_00aa27c4;
                if (*(int *)(iVar4 + 4) != 0) {
                  if ((*(uint *)(param_3 + 0x3c) & 0x100) == 0) {
                    puVar2 = *(undefined4 **)(param_3 + 0x18);
                    local_7c = *puVar2;
                    local_78 = puVar2[1];
                    local_74 = puVar2[2];
                    local_70 = puVar2[3];
                    local_6c = puVar2[4] & 0xfffffffe | local_6c & 1 | 6;
                    puVar2 = &local_7c;
                  }
                  else {
                    puVar2 = *(undefined4 **)(param_3 + 0x18);
                  }
                  iVar4 = (**(code **)(*(int *)(param_3 + 8) + 0x18))
                                    (param_1,param_2,puVar2,*(undefined4 *)(param_3 + 0x10),param_4,
                                     *(undefined4 *)(param_3 + 0x40));
                  if (iVar4 == 0) goto LAB_00aa27c4;
                }
              }
              local_80 = 1;
            }
          }
        }
      }
    }
  }
LAB_00aa27c4:
  FUN_00aa4aa0(param_4);
  return local_80;
}



undefined4 FUN_00aa27f0(int param_1)

{
  if (*(int *)(param_1 + 0x40) != 0) {
    FUN_00ad0140(*(int *)(param_1 + 0x40));
  }
  if (*(int *)(param_1 + 0x44) != 0) {
    FUN_00ad0140(*(int *)(param_1 + 0x44));
  }
  if (*(int *)(param_1 + 0x48) != 0) {
    FUN_00ad0140(*(int *)(param_1 + 0x48));
  }
  return 1;
}



void FUN_00aa2830(void)

{
  FUN_00a98620(&DAT_032ed994,1);
  return;
}



void FUN_00aa2840(int *param_1)

{
  if (param_1 != (int *)0x0) {
    if (*param_1 != 0) {
      FUN_00a9a9b0(*param_1);
    }
    if (param_1[1] != 0) {
      FUN_00a9a9b0(param_1[1]);
    }
    if (param_1[2] != 0) {
      FUN_00a9a9b0(param_1[2]);
    }
    if (param_1[3] != 0) {
      FUN_00a9a9b0(param_1[3]);
    }
    FUN_00a85120(param_1);
  }
  return;
}



undefined4 FUN_00aa28a0(undefined4 param_1,int param_2,int param_3,undefined4 param_4)

{
  undefined4 uVar1;
  
  if (param_2 != 0) {
    uVar1 = FUN_00ad2d70(param_1,param_1,param_2,*(undefined4 *)(param_3 + 0xc),param_4);
    return uVar1;
  }
  if (*(int *)(param_3 + 4) == 0) {
    FUN_00a7f3c0(3,0x65,0x6b,".\\crypto\\bn\\bn_blind.c",0x10d);
    return 0;
  }
  uVar1 = FUN_00ad2d70(param_1,param_1,*(int *)(param_3 + 4),*(undefined4 *)(param_3 + 0xc),param_4)
  ;
  return uVar1;
}



int FUN_00aa2910(int param_1)

{
  return param_1 + 0x14;
}



int * FUN_00aa2920(int *param_1,int param_2,int param_3,undefined4 param_4,int param_5,int param_6)

{
  int *_Dst;
  int iVar1;
  int iVar2;
  uint uVar3;
  
  _Dst = param_1;
  if (param_1 == (int *)0x0) {
    _Dst = (int *)FUN_00a84f80(0x2c,".\\crypto\\bn\\bn_blind.c",0x8f);
    if (_Dst == (int *)0x0) {
      FUN_00a7f3c0(3,0x66,0x41,".\\crypto\\bn\\bn_blind.c",0x91);
      return (int *)0x0;
    }
    _memset(_Dst,0,0x2c);
    iVar1 = FUN_00a9b160(param_3);
    _Dst[3] = iVar1;
    if (iVar1 == 0) goto LAB_00aa2af7;
    if ((*(byte *)(param_3 + 0x10) & 4) != 0) {
      *(uint *)(iVar1 + 0x10) = *(uint *)(iVar1 + 0x10) | 4;
    }
    _Dst[7] = -1;
    FUN_00a7f970(_Dst + 5);
  }
  if (_Dst != (int *)0x0) {
    if (*_Dst == 0) {
      iVar1 = FUN_00a9aa10();
      *_Dst = iVar1;
      if (iVar1 == 0) goto LAB_00aa2aef;
    }
    if (_Dst[1] == 0) {
      iVar1 = FUN_00a9aa10();
      _Dst[1] = iVar1;
      if (iVar1 == 0) goto LAB_00aa2aef;
    }
    if (param_2 != 0) {
      if (_Dst[2] != 0) {
        FUN_00a9a9b0(_Dst[2]);
      }
      iVar1 = FUN_00a9b160(param_2);
      _Dst[2] = iVar1;
    }
    if (_Dst[2] != 0) {
      if (param_5 != 0) {
        _Dst[10] = param_5;
      }
      if (param_6 != 0) {
        _Dst[9] = param_6;
      }
      iVar2 = FUN_00aa4eb0(*_Dst,_Dst[3]);
      iVar1 = 0x20;
      while (iVar2 != 0) {
        iVar2 = FUN_00ad3370(_Dst[1],*_Dst,_Dst[3],param_4);
        if (iVar2 != 0) {
          if (((code *)_Dst[10] == (code *)0x0) || (_Dst[9] == 0)) {
            iVar1 = FUN_00acfe20(*_Dst,*_Dst,_Dst[2],_Dst[3],param_4);
            if (iVar1 != 0) {
              return _Dst;
            }
          }
          else {
            iVar1 = (*(code *)_Dst[10])(*_Dst,*_Dst,_Dst[2],_Dst[3],param_4,_Dst[9]);
            if (iVar1 != 0) {
              return _Dst;
            }
          }
          break;
        }
        uVar3 = FUN_00a7f7d0();
        if ((uVar3 & 0xfff) != 0x6c) break;
        if (iVar1 == 0) {
          FUN_00a7f3c0(3,0x80,0x71,".\\crypto\\bn\\bn_blind.c",0x161);
          break;
        }
        FUN_00a7f4b0();
        iVar2 = FUN_00aa4eb0(*_Dst,_Dst[3]);
        iVar1 = iVar1 + -1;
      }
    }
  }
LAB_00aa2aef:
  if (param_1 != (int *)0x0) {
    return _Dst;
  }
  if (_Dst == (int *)0x0) {
    return (int *)0x0;
  }
LAB_00aa2af7:
  FUN_00aa2840(_Dst);
  return (int *)0x0;
}



undefined4 FUN_00aa2b10(int *param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *param_1;
  uVar2 = 0;
  if ((iVar1 == 0) || (param_1[1] == 0)) {
    FUN_00a7f3c0(3,0x67,0x6b,".\\crypto\\bn\\bn_blind.c",0xc0);
    goto LAB_00aa2ba9;
  }
  if (param_1[7] == -1) {
    param_1[7] = 0;
  }
  param_1[7] = param_1[7] + 1;
  if (((param_1[7] == 0x20) && (param_1[2] != 0)) && ((*(byte *)(param_1 + 8) & 2) == 0)) {
    iVar1 = FUN_00aa2920(param_1,0,0,param_2,0,0);
LAB_00aa2b86:
    if (iVar1 == 0) goto LAB_00aa2ba9;
  }
  else if ((*(byte *)(param_1 + 8) & 1) == 0) {
    iVar1 = FUN_00ad2d70(iVar1,iVar1,iVar1,param_1[3],param_2);
    if (iVar1 == 0) goto LAB_00aa2ba9;
    iVar1 = param_1[1];
    iVar1 = FUN_00ad2d70(iVar1,iVar1,iVar1,param_1[3],param_2);
    goto LAB_00aa2b86;
  }
  uVar2 = 1;
LAB_00aa2ba9:
  if (param_1[7] == 0x20) {
    param_1[7] = 0;
  }
  return uVar2;
}



undefined4 FUN_00aa2bc0(undefined4 param_1,int param_2,int *param_3,undefined4 param_4)

{
  int iVar1;
  undefined4 uVar2;
  
  uVar2 = 1;
  if ((*param_3 != 0) && (param_3[1] != 0)) {
    if (param_3[7] == -1) {
      param_3[7] = 0;
    }
    else {
      iVar1 = FUN_00aa2b10(param_3,param_4);
      if (iVar1 == 0) {
        return 0;
      }
    }
    if (param_2 != 0) {
      iVar1 = FUN_00a9aba0(param_2,param_3[1]);
      if (iVar1 == 0) {
        uVar2 = 0;
      }
    }
    iVar1 = FUN_00ad2d70(param_1,param_1,*param_3,param_3[3],param_4);
    if (iVar1 == 0) {
      uVar2 = 0;
    }
    return uVar2;
  }
  FUN_00a7f3c0(3,100,0x6b,".\\crypto\\bn\\bn_blind.c",0xe8);
  return 0;
}



undefined ** FUN_00aa2c60(void)

{
  return &PTR_s_OpenSSL_DSA_method_032430f8;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int * FUN_00aa2c70(undefined4 param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int local_40;
  int local_3c;
  int *local_38;
  int local_34;
  undefined4 local_30;
  int local_2c;
  undefined local_28 [20];
  undefined local_14 [16];
  undefined4 uStack_4;
  
  uStack_4 = 0xaa2c7a;
  local_34 = 0;
  local_40 = 0;
  iVar3 = 0;
  local_3c = 0;
  local_30 = 3;
  local_38 = (int *)0x0;
  local_2c = 0;
  FUN_00a9a9f0(local_28);
  FUN_00a9a9f0(local_14);
  if (((*(int *)(param_3 + 0xc) == 0) || (*(int *)(param_3 + 0x10) == 0)) ||
     (*(int *)(param_3 + 0x14) == 0)) {
    local_30 = 0x65;
  }
  else {
    iVar3 = FUN_00a9aa10();
    if ((iVar3 != 0) && (local_3c = FUN_00aa49c0(), local_3c != 0)) {
      do {
        iVar2 = *(int *)(param_3 + 0x20);
        if ((iVar2 == 0) || (iVar1 = *(int *)(param_3 + 0x24), iVar1 == 0)) {
          iVar2 = FUN_00ad3950(param_3,local_3c,&local_34,&local_40);
          if (iVar2 == 0) goto LAB_00aa2e3d;
        }
        else {
          *(undefined4 *)(param_3 + 0x20) = 0;
          *(undefined4 *)(param_3 + 0x24) = 0;
          local_2c = 1;
          local_40 = iVar1;
          local_34 = iVar2;
        }
        iVar2 = FUN_00a9a920(*(undefined4 *)(param_3 + 0x10));
        if ((int)(iVar2 + 7 + (iVar2 + 7 >> 0x1f & 7U)) >> 3 < param_2) {
          iVar2 = FUN_00a9a920(*(undefined4 *)(param_3 + 0x10));
          param_2 = (int)(iVar2 + 7 + (iVar2 + 7 >> 0x1f & 7U)) >> 3;
        }
        iVar2 = FUN_00a9acb0(param_1,param_2,local_28);
        if (((iVar2 == 0) ||
            (iVar2 = FUN_00ad2d70(local_14,*(undefined4 *)(param_3 + 0x1c),local_40,
                                  *(undefined4 *)(param_3 + 0x10),local_3c), iVar2 == 0)) ||
           ((iVar2 = FUN_00ad17f0(iVar3,local_14,local_28), iVar2 == 0 ||
            (((iVar2 = FUN_00a9ae60(iVar3,*(undefined4 *)(param_3 + 0x10)), 0 < iVar2 &&
              (iVar2 = FUN_00ad1720(iVar3,iVar3,*(undefined4 *)(param_3 + 0x10)), iVar2 == 0)) ||
             (iVar2 = FUN_00ad2d70(iVar3,iVar3,local_34,*(undefined4 *)(param_3 + 0x10),local_3c),
             iVar2 == 0)))))) goto LAB_00aa2e3d;
        local_38 = (int *)FUN_00ad3960();
        if (local_38 == (int *)0x0) goto LAB_00aa2e43;
        if ((*(int *)(local_40 + 4) != 0) && (*(int *)(iVar3 + 4) != 0)) {
          *local_38 = local_40;
          local_38[1] = iVar3;
          goto LAB_00aa2e3d;
        }
      } while (local_2c == 0);
      local_30 = 0x6e;
LAB_00aa2e3d:
      if (local_38 != (int *)0x0) goto LAB_00aa2e6e;
    }
  }
LAB_00aa2e43:
  FUN_00a7f3c0(10,0x70,local_30,".\\crypto\\dsa\\dsa_ossl.c",0xcc);
  FUN_00a9a9b0(local_40);
  FUN_00a9a9b0(iVar3);
LAB_00aa2e6e:
  if (local_3c != 0) {
    FUN_00aa4a20(local_3c);
  }
  FUN_00a9a950(local_28);
  FUN_00a9a950(local_14);
  if (local_34 != 0) {
    FUN_00a9a950(local_34);
  }
  return local_38;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa2ed0(int param_1,int param_2,int *param_3,int *param_4)

{
  code *pcVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined *puVar5;
  int iVar6;
  undefined4 local_2c;
  undefined local_28 [4];
  int local_24;
  uint local_18;
  undefined local_14 [16];
  undefined4 uStack_4;
  
  uStack_4 = 0xaa2eda;
  iVar6 = 0;
  local_2c = 0;
  if (((*(int *)(param_1 + 0xc) == 0) || (*(int *)(param_1 + 0x10) == 0)) ||
     (*(int *)(param_1 + 0x14) == 0)) {
    FUN_00a7f3c0(10,0x6b,0x65,".\\crypto\\dsa\\dsa_ossl.c",0xe0);
    return 0;
  }
  FUN_00a9a9f0(local_28);
  FUN_00a9a9f0(local_14);
  iVar2 = param_2;
  if (param_2 == 0) {
    iVar2 = FUN_00aa49c0();
    if (iVar2 != 0) goto LAB_00aa2f31;
  }
  else {
LAB_00aa2f31:
    iVar6 = FUN_00a9aa10();
    if (iVar6 != 0) {
      do {
        iVar3 = FUN_00aa4eb0(local_28,*(undefined4 *)(param_1 + 0x10));
        if (iVar3 == 0) goto LAB_00aa30a3;
      } while (local_24 == 0);
      if ((*(uint *)(param_1 + 0x28) & 2) == 0) {
        local_18 = local_18 | 4;
      }
      if ((*(uint *)(param_1 + 0x28) & 1) != 0) {
        iVar3 = FUN_00ad0580(param_1 + 0x2c,8,*(undefined4 *)(param_1 + 0xc),iVar2);
        if (iVar3 == 0) goto LAB_00aa30a3;
      }
      if ((*(byte *)(param_1 + 0x28) & 2) == 0) {
        iVar3 = FUN_00a9aba0(local_14,local_28);
        if (iVar3 != 0) {
          iVar3 = FUN_00ad17f0(local_14,local_14,*(undefined4 *)(param_1 + 0x10));
          if (iVar3 != 0) {
            iVar3 = FUN_00a9a920(local_14);
            iVar4 = FUN_00a9a920(*(undefined4 *)(param_1 + 0x10));
            if (iVar3 <= iVar4) {
              iVar3 = FUN_00ad17f0(local_14,local_14,*(undefined4 *)(param_1 + 0x10));
              if (iVar3 == 0) goto LAB_00aa30a3;
            }
            puVar5 = local_14;
            goto LAB_00aa3009;
          }
        }
      }
      else {
        puVar5 = local_28;
LAB_00aa3009:
        pcVar1 = *(code **)(*(int *)(param_1 + 0x3c) + 0x14);
        if (pcVar1 == (code *)0x0) {
          iVar3 = FUN_00acfa20(iVar6,*(undefined4 *)(param_1 + 0x14),puVar5,
                               *(undefined4 *)(param_1 + 0xc),iVar2,*(undefined4 *)(param_1 + 0x2c))
          ;
        }
        else {
          iVar3 = (*pcVar1)(param_1,iVar6,*(undefined4 *)(param_1 + 0x14),puVar5,
                            *(undefined4 *)(param_1 + 0xc));
        }
        if (iVar3 != 0) {
          iVar3 = FUN_00ad26e0(0,iVar6,iVar6,*(undefined4 *)(param_1 + 0x10),iVar2);
          if (iVar3 != 0) {
            iVar3 = FUN_00ad3370(0,local_28,*(undefined4 *)(param_1 + 0x10),iVar2);
            if (iVar3 != 0) {
              if (*param_3 != 0) {
                FUN_00a9a950(*param_3);
              }
              *param_3 = iVar3;
              if (*param_4 != 0) {
                FUN_00a9a950(*param_4);
              }
              *param_4 = iVar6;
              local_2c = 1;
              goto LAB_00aa30c8;
            }
          }
        }
      }
    }
  }
LAB_00aa30a3:
  FUN_00a7f3c0(10,0x6b,3,".\\crypto\\dsa\\dsa_ossl.c",0x129);
  if (iVar6 != 0) {
    FUN_00a9a950(iVar6);
  }
LAB_00aa30c8:
  if (param_2 == 0) {
    FUN_00aa4a20(iVar2);
  }
  FUN_00a9a950(local_28);
  FUN_00a9a950(local_14);
  return local_2c;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00aa3120(undefined4 param_1,int param_2,int *param_3,int param_4)

{
  code *pcVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  uint local_40;
  undefined local_3c [20];
  undefined local_28 [20];
  undefined local_14 [16];
  undefined4 uStack_4;
  
  uStack_4 = 0xaa312a;
  iVar5 = 0;
  local_40 = 0xffffffff;
  if (((*(int *)(param_4 + 0xc) == 0) || (*(int *)(param_4 + 0x10) == 0)) ||
     (*(int *)(param_4 + 0x14) == 0)) {
    FUN_00a7f3c0(10,0x71,0x65,".\\crypto\\dsa\\dsa_ossl.c",0x13c);
    return 0xffffffff;
  }
  iVar2 = FUN_00a9a920(*(int *)(param_4 + 0x10));
  if (((iVar2 != 0xa0) && (iVar2 != 0xe0)) && (iVar2 != 0x100)) {
    uVar7 = 0x144;
    uVar6 = 0x66;
LAB_00aa3187:
    FUN_00a7f3c0(10,0x71,uVar6,".\\crypto\\dsa\\dsa_ossl.c",uVar7);
    return 0xffffffff;
  }
  iVar3 = FUN_00a9a920(*(undefined4 *)(param_4 + 0xc));
  if (10000 < iVar3) {
    uVar7 = 0x14a;
    uVar6 = 0x67;
    goto LAB_00aa3187;
  }
  FUN_00a9a9f0(local_3c);
  FUN_00a9a9f0(local_28);
  FUN_00a9a9f0(local_14);
  iVar3 = FUN_00aa49c0();
  if (iVar3 != 0) {
    iVar4 = *param_3;
    if (((*(int *)(iVar4 + 4) == 0) || (*(int *)(iVar4 + 0xc) != 0)) ||
       ((iVar4 = FUN_00a9ae10(iVar4,*(undefined4 *)(param_4 + 0x10)), -1 < iVar4 ||
        (((iVar4 = param_3[1], *(int *)(iVar4 + 4) == 0 || (*(int *)(iVar4 + 0xc) != 0)) ||
         (iVar4 = FUN_00a9ae10(iVar4,*(undefined4 *)(param_4 + 0x10)), -1 < iVar4)))))) {
      local_40 = 0;
    }
    else {
      iVar4 = FUN_00ad3370(local_28,param_3[1],*(undefined4 *)(param_4 + 0x10),iVar3);
      if (iVar4 != 0) {
        if (iVar2 >> 3 < param_2) {
          param_2 = iVar2 >> 3;
        }
        iVar2 = FUN_00a9acb0(param_1,param_2,local_3c);
        if (((iVar2 != 0) &&
            (iVar2 = FUN_00ad2d70(local_3c,local_3c,local_28,*(undefined4 *)(param_4 + 0x10),iVar3),
            iVar2 != 0)) &&
           ((iVar2 = FUN_00ad2d70(local_28,*param_3,local_28,*(undefined4 *)(param_4 + 0x10),iVar3),
            iVar2 != 0 &&
            (((*(byte *)(param_4 + 0x28) & 1) == 0 ||
             (iVar5 = FUN_00ad0580(param_4 + 0x2c,8,*(undefined4 *)(param_4 + 0xc),iVar3),
             iVar5 != 0)))))) {
          pcVar1 = *(code **)(*(int *)(param_4 + 0x3c) + 0x10);
          if (pcVar1 == (code *)0x0) {
            iVar5 = FUN_00ad39d0(local_14,*(undefined4 *)(param_4 + 0x14),local_3c,
                                 *(undefined4 *)(param_4 + 0x18),local_28,
                                 *(undefined4 *)(param_4 + 0xc),iVar3,iVar5);
          }
          else {
            iVar5 = (*pcVar1)(param_4,local_14,*(undefined4 *)(param_4 + 0x14),local_3c,
                              *(undefined4 *)(param_4 + 0x18),local_28,
                              *(undefined4 *)(param_4 + 0xc));
          }
          if ((iVar5 != 0) &&
             (iVar5 = FUN_00ad26e0(0,local_3c,local_14,*(undefined4 *)(param_4 + 0x10),iVar3),
             iVar5 != 0)) {
            iVar5 = FUN_00a9ae10(local_3c,*param_3);
            local_40 = (uint)(iVar5 == 0);
            if (local_40 == 1) goto LAB_00aa33b2;
          }
        }
      }
    }
  }
  FUN_00a7f3c0(10,0x71,3,".\\crypto\\dsa\\dsa_ossl.c",0x188);
LAB_00aa33b2:
  if (iVar3 != 0) {
    FUN_00aa4a20(iVar3);
  }
  FUN_00a9a9b0(local_3c);
  FUN_00a9a9b0(local_28);
  FUN_00a9a9b0(local_14);
  return local_40;
}



void FUN_00aa3440(void)

{
  FUN_00a98620(&DAT_032ed998,1);
  return;
}



undefined4 FUN_00aa3450(int param_1)

{
  return *(undefined4 *)(param_1 + 0xc);
}



int * FUN_00aa3460(int param_1)

{
  int *piVar1;
  int iVar2;
  
  if (param_1 == 0) {
    FUN_00a7f3c0(0x10,0x6c,0x6c,".\\crypto\\ec\\ec_lib.c",0x52);
    return (int *)0x0;
  }
  if (*(int *)(param_1 + 8) == 0) {
    FUN_00a7f3c0(0x10,0x6c,0x42,".\\crypto\\ec\\ec_lib.c",0x57);
    return (int *)0x0;
  }
  piVar1 = (int *)FUN_00a84f80(0xac,".\\crypto\\ec\\ec_lib.c",0x5b);
  if (piVar1 == (int *)0x0) {
    FUN_00a7f3c0(0x10,0x6c,0x41,".\\crypto\\ec\\ec_lib.c",0x5e);
    return (int *)0x0;
  }
  *piVar1 = param_1;
  piVar1[0x11] = 0;
  piVar1[1] = 0;
  FUN_00a9a9f0(piVar1 + 2);
  FUN_00a9a9f0(piVar1 + 7);
  piVar1[0xc] = 0;
  piVar1[0xd] = 0;
  piVar1[0xe] = 4;
  piVar1[0xf] = 0;
  piVar1[0x10] = 0;
  iVar2 = (**(code **)(param_1 + 8))(piVar1);
  if (iVar2 == 0) {
    FUN_00a85120(piVar1);
    return (int *)0x0;
  }
  return piVar1;
}



bool FUN_00aa3530(int param_1,int param_2)

{
  int iVar1;
  
  iVar1 = FUN_00a9aba0(param_2,param_1 + 8);
  if (iVar1 == 0) {
    return false;
  }
  return *(int *)(param_2 + 4) != 0;
}



bool FUN_00aa3560(int param_1,undefined4 param_2)

{
  int iVar1;
  
  iVar1 = FUN_00a9aba0(param_2,param_1 + 0x1c);
  if (iVar1 == 0) {
    return false;
  }
  return *(int *)(param_1 + 0x20) != 0;
}



void FUN_00aa3590(int param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1 + 0x30) = param_2;
  return;
}



undefined4 FUN_00aa35a0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x30);
}



void FUN_00aa35b0(int param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1 + 0x34) = param_2;
  return;
}



undefined4 FUN_00aa35c0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x34);
}



void FUN_00aa35d0(int param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1 + 0x38) = param_2;
  return;
}



undefined4 FUN_00aa35e0(int param_1)

{
  return *(undefined4 *)(param_1 + 0x38);
}



size_t FUN_00aa35f0(int param_1,void *param_2,size_t param_3)

{
  void *_Dst;
  
  if (*(int *)(param_1 + 0x3c) != 0) {
    FUN_00a85120(*(int *)(param_1 + 0x3c));
    *(undefined4 *)(param_1 + 0x3c) = 0;
    *(undefined4 *)(param_1 + 0x40) = 0;
  }
  if ((param_3 != 0) && (param_2 != (void *)0x0)) {
    _Dst = (void *)FUN_00a84f80(param_3,".\\crypto\\ec\\ec_lib.c",0x182);
    *(void **)(param_1 + 0x3c) = _Dst;
    if (_Dst == (void *)0x0) {
      return 0;
    }
    _memcpy(_Dst,param_2,param_3);
    *(size_t *)(param_1 + 0x40) = param_3;
    return param_3;
  }
  return 1;
}



undefined4 FUN_00aa3660(int param_1)

{
  return *(undefined4 *)(param_1 + 0x3c);
}



undefined4 FUN_00aa3670(int *param_1)

{
  undefined4 uVar1;
  
  if (*(code **)(*param_1 + 0x18) == (code *)0x0) {
    FUN_00a7f3c0(0x10,0x6d,0x42,".\\crypto\\ec\\ec_lib.c",0x19b);
    return 0;
  }
                    // WARNING: Could not recover jumptable at 0x00aa369c. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (**(code **)(*param_1 + 0x18))();
  return uVar1;
}



undefined4 FUN_00aa36a0(int *param_1)

{
  undefined4 uVar1;
  
  if (*(code **)(*param_1 + 0x1c) == (code *)0x0) {
    FUN_00a7f3c0(0x10,0x82,0x42,".\\crypto\\ec\\ec_lib.c",0x1a6);
    return 0;
  }
                    // WARNING: Could not recover jumptable at 0x00aa36cf. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (**(code **)(*param_1 + 0x1c))();
  return uVar1;
}



undefined4 FUN_00aa36e0(int *param_1)

{
  undefined4 uVar1;
  
  if (*(code **)(*param_1 + 0x18) == (code *)0x0) {
    FUN_00a7f3c0(0x10,0xb0,0x42,".\\crypto\\ec\\ec_lib.c",0x1b1);
    return 0;
  }
                    // WARNING: Could not recover jumptable at 0x00aa370f. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (**(code **)(*param_1 + 0x18))();
  return uVar1;
}



undefined4 FUN_00aa3720(int *param_1)

{
  undefined4 uVar1;
  
  if (*(code **)(*param_1 + 0x1c) == (code *)0x0) {
    FUN_00a7f3c0(0x10,0xac,0x42,".\\crypto\\ec\\ec_lib.c",0x1bc);
    return 0;
  }
                    // WARNING: Could not recover jumptable at 0x00aa374f. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (**(code **)(*param_1 + 0x1c))();
  return uVar1;
}



undefined4 FUN_00aa3760(int *param_1)

{
  undefined4 uVar1;
  
  if (*(code **)(*param_1 + 0x20) == (code *)0x0) {
    FUN_00a7f3c0(0x10,0xad,0x42,".\\crypto\\ec\\ec_lib.c",0x1c7);
    return 0;
  }
                    // WARNING: Could not recover jumptable at 0x00aa378f. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (**(code **)(*param_1 + 0x20))();
  return uVar1;
}



undefined4 FUN_00aa37a0(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5)

{
  undefined4 *puVar1;
  
  if (param_1 == (undefined4 *)0x0) {
    return 0;
  }
  puVar1 = (undefined4 *)*param_1;
  while( true ) {
    if (puVar1 == (undefined4 *)0x0) {
      if (param_2 != 0) {
        puVar1 = (undefined4 *)FUN_00a84f80(0x14,".\\crypto\\ec\\ec_lib.c",0x23a);
        if (puVar1 == (undefined4 *)0x0) {
          return 0;
        }
        puVar1[1] = param_2;
        puVar1[2] = param_3;
        puVar1[3] = param_4;
        puVar1[4] = param_5;
        *puVar1 = *param_1;
        *param_1 = puVar1;
      }
      return 1;
    }
    if (((puVar1[2] == param_3) && (puVar1[3] == param_4)) && (puVar1[4] == param_5)) break;
    puVar1 = (undefined4 *)*puVar1;
  }
  FUN_00a7f3c0(0x10,0xd3,0x6c,".\\crypto\\ec\\ec_lib.c",0x231);
  return 0;
}



int FUN_00aa3840(int *param_1,int param_2,int param_3,int param_4)

{
  if (param_1 != (int *)0x0) {
    do {
      if (((param_1[2] == param_2) && (param_1[3] == param_3)) && (param_1[4] == param_4)) {
        return param_1[1];
      }
      param_1 = (int *)*param_1;
    } while (param_1 != (int *)0x0);
  }
  return 0;
}



void FUN_00aa3880(int *param_1,int param_2,int param_3,int param_4)

{
  int *piVar1;
  int iVar2;
  
  if ((param_1 != (int *)0x0) && (*param_1 != 0)) {
    while ((piVar1 = (int *)*param_1, piVar1[2] != param_2 ||
           ((piVar1[3] != param_3 || (piVar1[4] != param_4))))) {
      param_1 = piVar1;
      if (*piVar1 == 0) {
        return;
      }
    }
    iVar2 = *piVar1;
    (*(code *)piVar1[3])(piVar1[1]);
    FUN_00a85120(*param_1);
    *param_1 = iVar2;
  }
  return;
}



void FUN_00aa38e0(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  if (param_1 != (undefined4 *)0x0) {
    puVar2 = (undefined4 *)*param_1;
    while (puVar2 != (undefined4 *)0x0) {
      puVar1 = (undefined4 *)*puVar2;
      (*(code *)puVar2[3])(puVar2[1]);
      FUN_00a85120(puVar2);
      puVar2 = puVar1;
    }
    *param_1 = 0;
  }
  return;
}



void FUN_00aa3920(undefined4 *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  if (param_1 != (undefined4 *)0x0) {
    puVar2 = (undefined4 *)*param_1;
    while (puVar2 != (undefined4 *)0x0) {
      puVar1 = (undefined4 *)*puVar2;
      (*(code *)puVar2[4])(puVar2[1]);
      FUN_00a85120(puVar2);
      puVar2 = puVar1;
    }
    *param_1 = 0;
  }
  return;
}



int * FUN_00aa3960(int *param_1)

{
  int *piVar1;
  int iVar2;
  
  if (param_1 == (int *)0x0) {
    FUN_00a7f3c0(0x10,0x79,0x43,".\\crypto\\ec\\ec_lib.c",699);
    return (int *)0x0;
  }
  if (*(int *)(*param_1 + 0x28) == 0) {
    FUN_00a7f3c0(0x10,0x79,0x42,".\\crypto\\ec\\ec_lib.c",0x2c0);
    return (int *)0x0;
  }
  piVar1 = (int *)FUN_00a84f80(0x44,".\\crypto\\ec\\ec_lib.c",0x2c4);
  if (piVar1 == (int *)0x0) {
    FUN_00a7f3c0(0x10,0x79,0x41,".\\crypto\\ec\\ec_lib.c",0x2c7);
    return (int *)0x0;
  }
  iVar2 = *param_1;
  *piVar1 = iVar2;
  iVar2 = (**(code **)(iVar2 + 0x28))(piVar1);
  if (iVar2 == 0) {
    FUN_00a85120(piVar1);
    return (int *)0x0;
  }
  return piVar1;
}



void FUN_00aa3a10(int *param_1)

{
  if (param_1 != (int *)0x0) {
    if (*(code **)(*param_1 + 0x2c) != (code *)0x0) {
      (**(code **)(*param_1 + 0x2c))(param_1);
    }
    FUN_00a85120(param_1);
  }
  return;
}



void FUN_00aa3a40(int *param_1)

{
  code *pcVar1;
  
  if (param_1 != (int *)0x0) {
    pcVar1 = *(code **)(*param_1 + 0x30);
    if (pcVar1 == (code *)0x0) {
      pcVar1 = *(code **)(*param_1 + 0x2c);
      if (pcVar1 != (code *)0x0) {
        (*pcVar1)(param_1);
      }
    }
    else {
      (*pcVar1)(param_1);
    }
    FUN_00a84330(param_1,0x44);
    FUN_00a85120(param_1);
  }
  return;
}



undefined4 FUN_00aa3a80(int *param_1,int *param_2)

{
  code *pcVar1;
  undefined4 uVar2;
  
  pcVar1 = *(code **)(*param_1 + 0x34);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(0x10,0x72,0x42,".\\crypto\\ec\\ec_lib.c",0x2f2);
    return 0;
  }
  if (*param_1 != *param_2) {
    FUN_00a7f3c0(0x10,0x72,0x65,".\\crypto\\ec\\ec_lib.c",0x2f7);
    return 0;
  }
  if (param_1 == param_2) {
    return 1;
  }
  uVar2 = (*pcVar1)(param_1,param_2);
  return uVar2;
}



int * FUN_00aa3af0(int param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  
  if (param_1 == 0) {
    return (int *)0x0;
  }
  piVar1 = (int *)FUN_00aa3960(param_2);
  if (piVar1 != (int *)0x0) {
    iVar2 = FUN_00aa3a80(piVar1,param_1);
    if (iVar2 != 0) {
      return piVar1;
    }
    if (*(code **)(*piVar1 + 0x2c) != (code *)0x0) {
      (**(code **)(*piVar1 + 0x2c))(piVar1);
    }
    FUN_00a85120(piVar1);
  }
  return (int *)0x0;
}



undefined4 FUN_00aa3b50(int *param_1,int *param_2)

{
  code *pcVar1;
  undefined4 uVar2;
  
  pcVar1 = *(code **)(*param_1 + 0x38);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(0x10,0x7f,0x42,".\\crypto\\ec\\ec_lib.c",0x31d);
    return 0;
  }
  if (*param_1 != *param_2) {
    FUN_00a7f3c0(0x10,0x7f,0x65,".\\crypto\\ec\\ec_lib.c",0x322);
    return 0;
  }
  uVar2 = (*pcVar1)(param_1,param_2);
  return uVar2;
}



undefined4
FUN_00aa3bb0(int *param_1,int *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,
            undefined4 param_6)

{
  code *pcVar1;
  undefined4 uVar2;
  
  pcVar1 = *(code **)(*param_1 + 0x3c);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(0x10,0x7e,0x42,".\\crypto\\ec\\ec_lib.c",0x32e);
    return 0;
  }
  if (*param_1 != *param_2) {
    FUN_00a7f3c0(0x10,0x7e,0x65,".\\crypto\\ec\\ec_lib.c",0x333);
    return 0;
  }
  uVar2 = (*pcVar1)(param_1,param_2,param_3,param_4,param_5,param_6);
  return uVar2;
}



undefined4
FUN_00aa3c20(int *param_1,int *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  code *pcVar1;
  undefined4 uVar2;
  
  pcVar1 = *(code **)(*param_1 + 0x44);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(0x10,0x7c,0x42,".\\crypto\\ec\\ec_lib.c",0x350);
    return 0;
  }
  if (*param_1 != *param_2) {
    FUN_00a7f3c0(0x10,0x7c,0x65,".\\crypto\\ec\\ec_lib.c",0x355);
    return 0;
  }
  uVar2 = (*pcVar1)(param_1,param_2,param_3,param_4,param_5);
  return uVar2;
}



undefined4
FUN_00aa3c90(int *param_1,int *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  code *pcVar1;
  undefined4 uVar2;
  
  pcVar1 = *(code **)(*param_1 + 0x44);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(0x10,0xb9,0x42,".\\crypto\\ec\\ec_lib.c",0x361);
    return 0;
  }
  if (*param_1 != *param_2) {
    FUN_00a7f3c0(0x10,0xb9,0x65,".\\crypto\\ec\\ec_lib.c",0x366);
    return 0;
  }
  uVar2 = (*pcVar1)(param_1,param_2,param_3,param_4,param_5);
  return uVar2;
}



undefined4
FUN_00aa3d00(int *param_1,int *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  code *pcVar1;
  undefined4 uVar2;
  
  pcVar1 = *(code **)(*param_1 + 0x48);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(0x10,0x74,0x42,".\\crypto\\ec\\ec_lib.c",0x372);
    return 0;
  }
  if (*param_1 != *param_2) {
    FUN_00a7f3c0(0x10,0x74,0x65,".\\crypto\\ec\\ec_lib.c",0x377);
    return 0;
  }
  uVar2 = (*pcVar1)(param_1,param_2,param_3,param_4,param_5);
  return uVar2;
}



undefined4
FUN_00aa3d70(int *param_1,int *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  code *pcVar1;
  undefined4 uVar2;
  
  pcVar1 = *(code **)(*param_1 + 0x48);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(0x10,0xb7,0x42,".\\crypto\\ec\\ec_lib.c",899);
    return 0;
  }
  if (*param_1 != *param_2) {
    FUN_00a7f3c0(0x10,0xb7,0x65,".\\crypto\\ec\\ec_lib.c",0x388);
    return 0;
  }
  uVar2 = (*pcVar1)(param_1,param_2,param_3,param_4,param_5);
  return uVar2;
}



undefined4 FUN_00aa3de0(int *param_1,int *param_2,int *param_3,int *param_4,undefined4 param_5)

{
  code *pcVar1;
  undefined4 uVar2;
  
  pcVar1 = *(code **)(*param_1 + 0x58);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(0x10,0x70,0x42,".\\crypto\\ec\\ec_lib.c",0x393);
    return 0;
  }
  if (*param_1 == *param_2) {
    if ((*param_2 == *param_3) && (*param_3 == *param_4)) {
      uVar2 = (*pcVar1)(param_1,param_2,param_3,param_4,param_5);
      return uVar2;
    }
  }
  FUN_00a7f3c0(0x10,0x70,0x65,".\\crypto\\ec\\ec_lib.c",0x398);
  return 0;
}



undefined4 FUN_00aa3e60(int *param_1,int *param_2,int *param_3,undefined4 param_4)

{
  code *pcVar1;
  undefined4 uVar2;
  
  pcVar1 = *(code **)(*param_1 + 0x5c);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(0x10,0x73,0x42,".\\crypto\\ec\\ec_lib.c",0x3a3);
    return 0;
  }
  if ((*param_1 == *param_2) && (*param_2 == *param_3)) {
    uVar2 = (*pcVar1)(param_1,param_2,param_3,param_4);
    return uVar2;
  }
  FUN_00a7f3c0(0x10,0x73,0x65,".\\crypto\\ec\\ec_lib.c",0x3a8);
  return 0;
}



undefined4 FUN_00aa3ed0(int *param_1,int *param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *param_1;
  if (*(int *)(iVar1 + 0x5c) == 0) {
    FUN_00a7f3c0(0x10,0xd2,0x42,".\\crypto\\ec\\ec_lib.c",0x3b3);
    return 0;
  }
  if (iVar1 != *param_2) {
    FUN_00a7f3c0(0x10,0xd2,0x65,".\\crypto\\ec\\ec_lib.c",0x3b8);
    return 0;
  }
  uVar2 = (**(code **)(iVar1 + 0x60))(param_1,param_2,param_3);
  return uVar2;
}



undefined4 FUN_00aa3f40(int *param_1,int *param_2)

{
  code *pcVar1;
  undefined4 uVar2;
  
  pcVar1 = *(code **)(*param_1 + 100);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(0x10,0x76,0x42,".\\crypto\\ec\\ec_lib.c",0x3c3);
    return 0;
  }
  if (*param_1 != *param_2) {
    FUN_00a7f3c0(0x10,0x76,0x65,".\\crypto\\ec\\ec_lib.c",0x3c8);
    return 0;
  }
  uVar2 = (*pcVar1)(param_1,param_2);
  return uVar2;
}



undefined4 FUN_00aa3fa0(int *param_1,int *param_2,undefined4 param_3)

{
  code *pcVar1;
  undefined4 uVar2;
  
  pcVar1 = *(code **)(*param_1 + 0x68);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(0x10,0x77,0x42,".\\crypto\\ec\\ec_lib.c",0x3d3);
    return 0;
  }
  if (*param_1 != *param_2) {
    FUN_00a7f3c0(0x10,0x77,0x65,".\\crypto\\ec\\ec_lib.c",0x3d8);
    return 0;
  }
  uVar2 = (*pcVar1)(param_1,param_2,param_3);
  return uVar2;
}



undefined4 FUN_00aa4000(int *param_1,int *param_2,int *param_3,undefined4 param_4)

{
  code *pcVar1;
  undefined4 uVar2;
  
  pcVar1 = *(code **)(*param_1 + 0x6c);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(0x10,0x71,0x42,".\\crypto\\ec\\ec_lib.c",0x3e3);
    return 0;
  }
  if ((*param_1 == *param_2) && (*param_2 == *param_3)) {
    uVar2 = (*pcVar1)(param_1,param_2,param_3,param_4);
    return uVar2;
  }
  FUN_00a7f3c0(0x10,0x71,0x65,".\\crypto\\ec\\ec_lib.c",1000);
  return 0;
}



undefined4 FUN_00aa4070(int *param_1,int *param_2,undefined4 param_3)

{
  code *pcVar1;
  undefined4 uVar2;
  
  pcVar1 = *(code **)(*param_1 + 0x70);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(0x10,0x78,0x42,".\\crypto\\ec\\ec_lib.c",0x3f3);
    return 0;
  }
  if (*param_1 != *param_2) {
    FUN_00a7f3c0(0x10,0x78,0x65,".\\crypto\\ec\\ec_lib.c",0x3f8);
    return 0;
  }
  uVar2 = (*pcVar1)(param_1,param_2,param_3);
  return uVar2;
}



undefined4 FUN_00aa40d0(int *param_1,uint param_2,int param_3,undefined4 param_4)

{
  code *pcVar1;
  uint uVar2;
  undefined4 uVar3;
  
  pcVar1 = *(code **)(*param_1 + 0x74);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(0x10,0x88,0x42,".\\crypto\\ec\\ec_lib.c",0x405);
    return 0;
  }
  uVar2 = 0;
  if (param_2 != 0) {
    do {
      if (*param_1 != **(int **)(param_3 + uVar2 * 4)) {
        FUN_00a7f3c0(0x10,0x88,0x65,".\\crypto\\ec\\ec_lib.c",0x40c);
        return 0;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < param_2);
  }
  uVar3 = (*pcVar1)(param_1,param_2,param_3,param_4);
  return uVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aa4160(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,
                 undefined4 param_6)

{
  int iVar1;
  undefined4 uVar2;
  int local_4;
  
  iVar1 = param_4;
  local_4 = param_4;
  param_4 = param_5;
  if ((iVar1 == 0) || (param_5 == 0)) {
    uVar2 = 0;
  }
  else {
    uVar2 = 1;
  }
  if (*(code **)(*param_1 + 0x78) == (code *)0x0) {
    FUN_00ad4360(param_1,param_2,param_3,uVar2,&local_4,&param_4,param_6);
    return;
  }
  (**(code **)(*param_1 + 0x78))(param_1,param_2,param_3,uVar2,&local_4,&param_4,param_6);
  return;
}



undefined4 FUN_00aa41e0(int *param_1)

{
  code *UNRECOVERED_JUMPTABLE;
  undefined4 uVar1;
  
  if (*(int *)(*param_1 + 0x78) == 0) {
    uVar1 = FUN_00ad5190();
    return uVar1;
  }
  UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x80);
  if (UNRECOVERED_JUMPTABLE != (code *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00aa4203. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (*UNRECOVERED_JUMPTABLE)();
    return uVar1;
  }
  return 0;
}



void FUN_00aa4210(int *param_1)

{
  int *piVar1;
  
  if (param_1 != (int *)0x0) {
    if (*(code **)(*param_1 + 0xc) != (code *)0x0) {
      (**(code **)(*param_1 + 0xc))(param_1);
    }
    FUN_00aa38e0(param_1 + 0x11);
    piVar1 = (int *)param_1[1];
    if (piVar1 != (int *)0x0) {
      if (*(code **)(*piVar1 + 0x2c) != (code *)0x0) {
        (**(code **)(*piVar1 + 0x2c))(piVar1);
      }
      FUN_00a85120(piVar1);
    }
    FUN_00a9a9b0(param_1 + 2);
    FUN_00a9a9b0(param_1 + 7);
    if (param_1[0xf] != 0) {
      FUN_00a85120(param_1[0xf]);
    }
    FUN_00a85120(param_1);
  }
  return;
}



void FUN_00aa4290(int *param_1)

{
  code *pcVar1;
  
  if (param_1 != (int *)0x0) {
    pcVar1 = *(code **)(*param_1 + 0x10);
    if (pcVar1 == (code *)0x0) {
      pcVar1 = *(code **)(*param_1 + 0xc);
      if (pcVar1 != (code *)0x0) {
        (*pcVar1)(param_1);
      }
    }
    else {
      (*pcVar1)(param_1);
    }
    FUN_00aa3920(param_1 + 0x11);
    if (param_1[1] != 0) {
      FUN_00aa3a40(param_1[1]);
    }
    FUN_00a9a950(param_1 + 2);
    FUN_00a9a950(param_1 + 7);
    if (param_1[0xf] != 0) {
      FUN_00a84330(param_1[0xf],param_1[0x10]);
      FUN_00a85120(param_1[0xf]);
    }
    FUN_00a84330(param_1,0xac);
    FUN_00a85120(param_1);
  }
  return;
}



undefined4 FUN_00aa4320(int *param_1,int *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  void *pvVar3;
  undefined4 uVar4;
  
  if (*(int *)(*param_1 + 0x14) == 0) {
    FUN_00a7f3c0(0x10,0x6a,0x42,".\\crypto\\ec\\ec_lib.c",0xb1);
    return 0;
  }
  if (*param_1 != *param_2) {
    FUN_00a7f3c0(0x10,0x6a,0x65,".\\crypto\\ec\\ec_lib.c",0xb6);
    return 0;
  }
  if (param_1 == param_2) {
    return 1;
  }
  FUN_00aa38e0(param_1 + 0x11);
  for (puVar1 = (undefined4 *)param_2[0x11]; puVar1 != (undefined4 *)0x0;
      puVar1 = (undefined4 *)*puVar1) {
    iVar2 = (*(code *)puVar1[2])(puVar1[1]);
    if (iVar2 == 0) {
      return 0;
    }
    iVar2 = FUN_00aa37a0(param_1 + 0x11,iVar2,puVar1[2],puVar1[3],puVar1[4]);
    if (iVar2 == 0) {
      return 0;
    }
  }
  if (param_2[1] == 0) {
    if (param_1[1] != 0) {
      FUN_00aa3a40(param_1[1]);
      param_1[1] = 0;
    }
  }
  else {
    if (param_1[1] == 0) {
      iVar2 = FUN_00aa3960(param_1);
      param_1[1] = iVar2;
      if (iVar2 == 0) {
        return 0;
      }
    }
    iVar2 = FUN_00aa3a80(param_1[1],param_2[1]);
    if (iVar2 == 0) {
      return 0;
    }
  }
  iVar2 = FUN_00a9aba0(param_1 + 2,param_2 + 2);
  if ((iVar2 != 0) && (iVar2 = FUN_00a9aba0(param_1 + 7,param_2 + 7), iVar2 != 0)) {
    param_1[0xc] = param_2[0xc];
    iVar2 = param_1[0xf];
    param_1[0xd] = param_2[0xd];
    param_1[0xe] = param_2[0xe];
    if (param_2[0xf] == 0) {
      if (iVar2 != 0) {
        FUN_00a85120(iVar2);
      }
      param_1[0xf] = 0;
      param_1[0x10] = 0;
      uVar4 = (**(code **)(*param_1 + 0x14))(param_1,param_2);
      return uVar4;
    }
    if (iVar2 != 0) {
      FUN_00a85120(iVar2);
    }
    pvVar3 = (void *)FUN_00a84f80(param_2[0x10],".\\crypto\\ec\\ec_lib.c",0xe6);
    param_1[0xf] = (int)pvVar3;
    if ((pvVar3 != (void *)0x0) &&
       (pvVar3 = _memcpy(pvVar3,(void *)param_2[0xf],param_2[0x10]), pvVar3 != (void *)0x0)) {
      param_1[0x10] = param_2[0x10];
      uVar4 = (**(code **)(*param_1 + 0x14))(param_1,param_2);
      return uVar4;
    }
  }
  return 0;
}



int FUN_00aa44e0(undefined4 *param_1)

{
  int iVar1;
  int iVar2;
  
  if (param_1 == (undefined4 *)0x0) {
    return 0;
  }
  iVar1 = FUN_00aa3460(*param_1);
  if (iVar1 != 0) {
    iVar2 = FUN_00aa4320(iVar1,param_1);
    if (iVar2 != 0) {
      return iVar1;
    }
    FUN_00aa4210(iVar1);
  }
  return 0;
}



undefined4 FUN_00aa4520(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  
  if (param_2 == 0) {
    FUN_00a7f3c0(0x10,0x6f,0x43,".\\crypto\\ec\\ec_lib.c",0x120);
    return 0;
  }
  if (*(int *)(param_1 + 4) == 0) {
    iVar1 = FUN_00aa3960(param_1);
    *(int *)(param_1 + 4) = iVar1;
    if (iVar1 == 0) {
      return 0;
    }
  }
  iVar1 = FUN_00aa3a80(*(undefined4 *)(param_1 + 4),param_2);
  if (iVar1 == 0) {
    return 0;
  }
  if (param_3 == 0) {
    FUN_00a9ac50(param_1 + 8,0);
  }
  else {
    iVar1 = FUN_00a9aba0(param_1 + 8,param_3);
    if (iVar1 == 0) {
      return 0;
    }
  }
  if (param_4 == 0) {
    FUN_00a9ac50(param_1 + 0x1c,0);
  }
  else {
    iVar1 = FUN_00a9aba0(param_1 + 0x1c,param_4);
    if (iVar1 == 0) {
      return 0;
    }
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa45d0(int *param_1,int *param_2,int param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  int local_14;
  undefined4 local_8;
  
  local_8 = 0;
  local_14 = 0;
  if (*(int *)(*param_1 + 4) != *(int *)(*param_2 + 4)) {
    return 1;
  }
  if (((param_1[0xc] != 0) && (param_2[0xc] != 0)) && (param_1[0xc] == param_2[0xc])) {
    return 0;
  }
  if ((param_3 == 0) && (param_3 = FUN_00aa49c0(), local_14 = param_3, param_3 == 0)) {
    return 0xffffffff;
  }
  FUN_00aa4a50(param_3);
  uVar1 = FUN_00aa4ae0(param_3);
  uVar2 = FUN_00aa4ae0(param_3);
  uVar3 = FUN_00aa4ae0(param_3);
  uVar4 = FUN_00aa4ae0(param_3);
  uVar5 = FUN_00aa4ae0(param_3);
  iVar6 = FUN_00aa4ae0(param_3);
  if (iVar6 == 0) {
LAB_00aa47cd:
    FUN_00aa4aa0(param_3);
    if (local_14 != 0) {
      FUN_00aa4a20(param_3);
    }
    return 0xffffffff;
  }
  iVar7 = (**(code **)(*param_1 + 0x1c))(param_1,uVar1,uVar2,uVar3,param_3);
  if (((iVar7 != 0) &&
      (iVar7 = (**(code **)(*param_2 + 0x1c))(param_2,uVar4,uVar5,iVar6,param_3), iVar7 != 0)) &&
     ((iVar7 = FUN_00a9ae60(uVar1,uVar4), iVar7 == 0 &&
      (((iVar7 = FUN_00a9ae60(uVar2,uVar5), iVar7 == 0 &&
        (iVar6 = FUN_00a9ae60(uVar3,iVar6), iVar6 == 0)) &&
       (iVar6 = FUN_00aa4000(param_1,param_1[1],param_2[1],param_3), iVar6 == 0)))))) {
    iVar6 = FUN_00aa3530(param_1,uVar1,param_3);
    if (((iVar6 == 0) || (iVar6 = FUN_00aa3530(param_2,uVar4,param_3), iVar6 == 0)) ||
       ((iVar6 = FUN_00aa3560(param_1,uVar2,param_3), iVar6 == 0 ||
        (iVar6 = FUN_00aa3560(param_2,uVar5,param_3), iVar6 == 0)))) goto LAB_00aa47cd;
    iVar6 = FUN_00a9ae60(uVar1,uVar4);
    if ((iVar6 == 0) && (iVar6 = FUN_00a9ae60(uVar2,uVar5), iVar6 == 0)) goto LAB_00aa47a7;
  }
  local_8 = 1;
LAB_00aa47a7:
  FUN_00aa4aa0(param_3);
  if (local_14 != 0) {
    FUN_00aa4a20(param_3);
  }
  return local_8;
}



void FUN_00aa47f0(undefined4 param_1)

{
  void *_Dst;
  void *pvVar1;
  void **unaff_ESI;
  
  pvVar1 = unaff_ESI[2];
  if (unaff_ESI[1] == pvVar1) {
    if (pvVar1 == (void *)0x0) {
      pvVar1 = (void *)0x20;
    }
    else {
      pvVar1 = (void *)((uint)((int)pvVar1 * 3) >> 1);
    }
    _Dst = (void *)FUN_00a84f80((int)pvVar1 * 4,".\\crypto\\bn\\bn_ctx.c",0x152);
    if (_Dst == (void *)0x0) {
      return;
    }
    if (unaff_ESI[1] != (void *)0x0) {
      _memcpy(_Dst,*unaff_ESI,(int)unaff_ESI[1] * 4);
    }
    if (unaff_ESI[2] != (void *)0x0) {
      FUN_00a85120(*unaff_ESI);
    }
    *unaff_ESI = _Dst;
    unaff_ESI[2] = pvVar1;
  }
  *(undefined4 *)((int)*unaff_ESI + (int)unaff_ESI[1] * 4) = param_1;
  unaff_ESI[1] = (void *)((int)unaff_ESI[1] + 1);
  return;
}



void FUN_00aa4880(void)

{
  int iVar1;
  int *piVar2;
  int **unaff_EDI;
  
  piVar2 = *unaff_EDI;
  while (piVar2 != (int *)0x0) {
    piVar2 = *unaff_EDI;
    iVar1 = 0x10;
    do {
      if (*piVar2 != 0) {
        FUN_00a9a950(piVar2);
      }
      piVar2 = piVar2 + 5;
      iVar1 = iVar1 + -1;
    } while (iVar1 != 0);
    unaff_EDI[1] = (int *)(*unaff_EDI)[0x51];
    FUN_00a85120(*unaff_EDI);
    piVar2 = unaff_EDI[1];
    *unaff_EDI = piVar2;
  }
  return;
}



int FUN_00aa48d0(void)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int *unaff_ESI;
  
  uVar1 = unaff_ESI[3];
  if (uVar1 == unaff_ESI[4]) {
    iVar2 = FUN_00a84f80(0x148,".\\crypto\\bn\\bn_ctx.c",0x199);
    if (iVar2 == 0) {
      return 0;
    }
    iVar4 = 0x10;
    iVar3 = iVar2;
    do {
      FUN_00a9a9f0(iVar3);
      iVar3 = iVar3 + 0x14;
      iVar4 = iVar4 + -1;
    } while (iVar4 != 0);
    iVar3 = unaff_ESI[2];
    *(undefined4 *)(iVar2 + 0x144) = 0;
    *(int *)(iVar2 + 0x140) = iVar3;
    if (*unaff_ESI == 0) {
      unaff_ESI[4] = unaff_ESI[4] + 0x10;
      unaff_ESI[3] = unaff_ESI[3] + 1;
      *unaff_ESI = iVar2;
      unaff_ESI[1] = iVar2;
      unaff_ESI[2] = iVar2;
      return iVar2;
    }
    *(int *)(unaff_ESI[2] + 0x144) = iVar2;
    unaff_ESI[4] = unaff_ESI[4] + 0x10;
    unaff_ESI[3] = unaff_ESI[3] + 1;
    unaff_ESI[1] = iVar2;
    unaff_ESI[2] = iVar2;
    return iVar2;
  }
  if (uVar1 == 0) {
    iVar2 = *unaff_ESI;
  }
  else {
    if ((uVar1 & 0xf) != 0) goto LAB_00aa496e;
    iVar2 = *(int *)(unaff_ESI[1] + 0x144);
  }
  unaff_ESI[1] = iVar2;
LAB_00aa496e:
  unaff_ESI[3] = uVar1 + 1;
  return unaff_ESI[1] + (uVar1 & 0xf) * 0x14;
}



void __fastcall FUN_00aa4990(undefined4 param_1,int param_2)

{
  uint uVar1;
  int unaff_ESI;
  
  uVar1 = *(int *)(unaff_ESI + 0xc) - 1U & 0xf;
  *(int *)(unaff_ESI + 0xc) = *(int *)(unaff_ESI + 0xc) - param_2;
  if (param_2 != 0) {
    do {
      param_2 = param_2 + -1;
      if (uVar1 == 0) {
        uVar1 = 0xf;
        *(undefined4 *)(unaff_ESI + 4) = *(undefined4 *)(*(int *)(unaff_ESI + 4) + 0x140);
      }
      else {
        uVar1 = uVar1 - 1;
      }
    } while (param_2 != 0);
  }
  return;
}



undefined4 * FUN_00aa49c0(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x2c,".\\crypto\\bn\\bn_ctx.c",0xd8);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(3,0x6a,0x41,".\\crypto\\bn\\bn_ctx.c",0xdb);
    return (undefined4 *)0x0;
  }
  puVar1[2] = 0;
  puVar1[1] = 0;
  *puVar1 = 0;
  puVar1[4] = 0;
  puVar1[3] = 0;
  puVar1[5] = 0;
  puVar1[7] = 0;
  puVar1[6] = 0;
  puVar1[8] = 0;
  puVar1[9] = 0;
  puVar1[10] = 0;
  return puVar1;
}



void FUN_00aa4a20(int param_1)

{
  if (param_1 != 0) {
    if (*(int *)(param_1 + 0x1c) != 0) {
      FUN_00a85120(*(undefined4 *)(param_1 + 0x14));
    }
    FUN_00aa4880();
    FUN_00a85120(param_1);
  }
  return;
}



void FUN_00aa4a50(int param_1)

{
  int iVar1;
  
  if ((*(int *)(param_1 + 0x24) == 0) && (*(int *)(param_1 + 0x28) == 0)) {
    iVar1 = FUN_00aa47f0(*(undefined4 *)(param_1 + 0x20));
    if (iVar1 == 0) {
      FUN_00a7f3c0(3,0x81,0x6d,".\\crypto\\bn\\bn_ctx.c",0x108);
      *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + 1;
      return;
    }
  }
  else {
    *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + 1;
  }
  return;
}



void FUN_00aa4aa0(int param_1)

{
  uint uVar1;
  
  if (*(int *)(param_1 + 0x24) != 0) {
    *(int *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + -1;
    return;
  }
  *(int *)(param_1 + 0x18) = *(int *)(param_1 + 0x18) + -1;
  uVar1 = *(uint *)(*(int *)(param_1 + 0x14) + *(int *)(param_1 + 0x18) * 4);
  if (uVar1 < *(uint *)(param_1 + 0x20)) {
    FUN_00aa4990();
  }
  *(uint *)(param_1 + 0x20) = uVar1;
  *(undefined4 *)(param_1 + 0x28) = 0;
  return;
}



int FUN_00aa4ae0(int param_1)

{
  int iVar1;
  
  if ((*(int *)(param_1 + 0x24) == 0) && (*(int *)(param_1 + 0x28) == 0)) {
    iVar1 = FUN_00aa48d0();
    if (iVar1 == 0) {
      *(undefined4 *)(param_1 + 0x28) = 1;
      FUN_00a7f3c0(3,0x74,0x6d,".\\crypto\\bn\\bn_ctx.c",0x12a);
      return 0;
    }
    FUN_00a9ac50(iVar1,0);
    *(int *)(param_1 + 0x20) = *(int *)(param_1 + 0x20) + 1;
    return iVar1;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __fastcall
FUN_00aa4b40(int param_1_00,int param_2_00,undefined4 param_1,int param_2,int param_3)

{
  byte bVar1;
  byte *pbVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  byte local_11;
  undefined4 local_10;
  int local_c;
  undefined8 local_8;
  
  local_8._4_4_ = 0xaa4b4a;
  local_10 = 0;
  if (param_1_00 == 0) {
    FUN_00a9ac50(param_1,0);
    return 1;
  }
  iVar5 = (int)(param_1_00 + 7 + (param_1_00 + 7 >> 0x1f & 7U)) >> 3;
  uVar4 = param_1_00 - 1U & 0x80000007;
  if ((int)uVar4 < 0) {
    uVar4 = (uVar4 - 1 | 0xfffffff8) + 1;
  }
  bVar1 = (byte)uVar4;
  local_c = 0xff << (bVar1 + 1 & 0x1f);
  pbVar2 = (byte *)FUN_00a84f80(iVar5,".\\crypto\\bn\\bn_rand.c");
  if (pbVar2 == (byte *)0x0) {
    FUN_00a7f3c0(3,0x7f,0x41,".\\crypto\\bn\\bn_rand.c",0x89);
    return local_10;
  }
  __time64(&local_8);
  FUN_00a86df0(&local_8,8,0);
  if (param_2_00 == 0) {
    iVar3 = FUN_00a86e60(pbVar2,iVar5);
    if (iVar3 < 1) goto LAB_00aa4cd5;
  }
  else {
    iVar3 = FUN_00a86ec0();
    if (iVar3 == -1) goto LAB_00aa4cd5;
    if ((param_2_00 == 2) && (iVar3 = 0, 0 < iVar5)) {
      do {
        FUN_00a86ec0(&local_11,1);
        if ((local_11 < 0x80) || (iVar3 < 1)) {
          if (local_11 < 0x2a) {
            pbVar2[iVar3] = 0;
          }
          else if (local_11 < 0x54) {
            pbVar2[iVar3] = 0xff;
          }
        }
        else {
          pbVar2[iVar3] = pbVar2[iVar3 + -1];
        }
        iVar3 = iVar3 + 1;
      } while (iVar3 < iVar5);
    }
  }
  if (param_2 != -1) {
    if (param_2 == 0) {
      *pbVar2 = *pbVar2 | '\x01' << (bVar1 & 0x1f);
    }
    else if (uVar4 == 0) {
      pbVar2[1] = pbVar2[1] | 0x80;
      *pbVar2 = 1;
    }
    else {
      *pbVar2 = *pbVar2 | '\x03' << (bVar1 - 1 & 0x1f);
    }
  }
  *pbVar2 = *pbVar2 & ~(byte)local_c;
  if (param_3 != 0) {
    pbVar2[iVar5 + -1] = pbVar2[iVar5 + -1] | 1;
  }
  iVar3 = FUN_00a9acb0(pbVar2,iVar5,param_1);
  if (iVar3 != 0) {
    local_10 = 1;
  }
LAB_00aa4cd5:
  FUN_00a84330(pbVar2,iVar5);
  FUN_00a85120(pbVar2);
  return local_10;
}



void FUN_00aa4d00(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00aa4b40(param_1,param_3,param_4);
  return;
}



void FUN_00aa4d20(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00aa4b40(param_1,param_3,param_4);
  return;
}



undefined4 FUN_00aa4d50(int param_1)

{
  int iVar1;
  code *pcVar2;
  int unaff_EDI;
  undefined4 uVar3;
  
  pcVar2 = FUN_00aa4d20;
  if (param_1 == 0) {
    pcVar2 = FUN_00aa4d00;
  }
  param_1 = 100;
  if ((*(int *)(unaff_EDI + 0xc) != 0) || (*(int *)(unaff_EDI + 4) == 0)) {
    FUN_00a7f3c0(3,0x7a,0x73,".\\crypto\\bn\\bn_rand.c",0xee);
    return 0;
  }
  iVar1 = FUN_00a9a920();
  if (iVar1 == 1) {
    FUN_00a9ac50();
    return 1;
  }
  iVar1 = FUN_00a9af90();
  if ((iVar1 == 0) && (iVar1 = FUN_00a9af90(), iVar1 == 0)) {
    while( true ) {
      iVar1 = (*pcVar2)();
      if (iVar1 == 0) {
        return 0;
      }
      iVar1 = FUN_00a9ae60();
      if (-1 < iVar1) {
        iVar1 = FUN_00ad1720();
        if (iVar1 == 0) {
          return 0;
        }
        iVar1 = FUN_00a9ae60();
        if ((-1 < iVar1) && (iVar1 = FUN_00ad1720(), iVar1 == 0)) {
          return 0;
        }
      }
      param_1 = param_1 + -1;
      if (param_1 == 0) break;
      iVar1 = FUN_00a9ae60();
      if (iVar1 < 0) {
        return 1;
      }
    }
    uVar3 = 0x10d;
LAB_00aa4e71:
    FUN_00a7f3c0(3,0x7a,0x71,".\\crypto\\bn\\bn_rand.c",uVar3);
  }
  else {
    while (iVar1 = (*pcVar2)(), iVar1 != 0) {
      param_1 = param_1 + -1;
      if (param_1 == 0) {
        uVar3 = 0x11d;
        goto LAB_00aa4e71;
      }
      iVar1 = FUN_00a9ae60();
      if (iVar1 < 0) {
        return 1;
      }
    }
  }
  return 0;
}



void FUN_00aa4eb0(void)

{
  FUN_00aa4d50(0);
  return;
}



void FUN_00aa4ed0(void)

{
  FUN_00aa4d50(1);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int * FUN_00aa4ef0(undefined4 param_1,int *param_2,code *param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  int local_24;
  int local_20;
  int local_1c;
  int local_18;
  int local_14;
  int local_c;
  int local_8;
  
  piVar6 = (int *)0x0;
  local_18 = 0;
  local_24 = 0;
  local_20 = 0;
  local_14 = 0;
  local_1c = 0;
  local_8 = 0;
  local_c = 0;
  iVar2 = FUN_00aa49c0();
  if (iVar2 == 0) {
    uVar8 = 0x79d;
    uVar7 = 0x41;
    goto LAB_00aa5164;
  }
  iVar1 = param_2[1];
  iVar4 = param_2[2];
  iVar5 = iVar1 + 0x10 + (int)param_2;
  local_24 = FUN_00a9acb0(iVar5,iVar4,0);
  if (local_24 == 0) {
LAB_00aa5158:
    uVar8 = 0x7ab;
LAB_00aa515d:
    uVar7 = 3;
  }
  else {
    local_20 = FUN_00a9acb0(iVar5 + iVar4,iVar4,0);
    if (local_20 == 0) goto LAB_00aa5158;
    local_14 = FUN_00a9acb0(iVar5 + iVar4 * 2,iVar4,0);
    if (local_14 == 0) goto LAB_00aa5158;
    if (param_3 == (code *)0x0) {
      if (*param_2 != 0x196) {
        piVar6 = (int *)FUN_00ad5270(local_24,local_20,local_14,iVar2);
        if (piVar6 != (int *)0x0) goto LAB_00aa5045;
        uVar8 = 0x7c6;
        uVar7 = 0x10;
        goto LAB_00aa5164;
      }
      piVar6 = (int *)FUN_00ad51c0(local_24,local_20);
      if (piVar6 == (int *)0x0) {
        uVar8 = 0x7bd;
        uVar7 = 0x10;
        goto LAB_00aa5164;
      }
LAB_00aa5045:
      local_18 = FUN_00aa3960(piVar6);
      if (local_18 == 0) {
        uVar8 = 0x7ce;
        uVar7 = 0x10;
        goto LAB_00aa5164;
      }
      local_1c = FUN_00a9acb0(iVar5 + iVar4 * 3,iVar4,0);
      if (local_1c == 0) {
LAB_00aa5151:
        uVar8 = 0x7d5;
      }
      else {
        local_8 = FUN_00a9acb0(iVar5 + iVar4 * 4,iVar4,0);
        if (local_8 == 0) goto LAB_00aa5151;
        iVar3 = FUN_00aa3c20(piVar6,local_18,local_1c,local_8,iVar2);
        if (iVar3 == 0) {
          uVar8 = 0x7da;
          uVar7 = 0x10;
          goto LAB_00aa5164;
        }
        local_c = FUN_00a9acb0(iVar5 + iVar4 * 5,iVar4,0);
        if (local_c != 0) {
          iVar4 = FUN_00a9ac50(local_1c,param_2[3]);
          if (iVar4 != 0) {
            iVar4 = FUN_00aa4520(piVar6,local_18,local_c,local_1c);
            if (iVar4 == 0) {
              uVar8 = 0x7e5;
              uVar7 = 0x10;
            }
            else {
              if (iVar1 == 0) goto LAB_00aa517e;
              iVar5 = FUN_00aa35f0(piVar6,iVar5 - iVar1,iVar1);
              if (iVar5 != 0) goto LAB_00aa517e;
              uVar8 = 0x7ec;
              uVar7 = 0x10;
            }
            goto LAB_00aa5164;
          }
        }
        uVar8 = 0x7e0;
      }
      goto LAB_00aa515d;
    }
    uVar8 = (*param_3)();
    piVar6 = (int *)FUN_00aa3460(uVar8);
    if (piVar6 != (int *)0x0) {
      iVar3 = (**(code **)(*piVar6 + 0x18))(piVar6,local_24,local_20,local_14,iVar2);
      if (iVar3 != 0) goto LAB_00aa5045;
    }
    uVar8 = 0x7b5;
    uVar7 = 0x10;
  }
LAB_00aa5164:
  FUN_00a7f3c0(0x10,0xaf,uVar7,".\\crypto\\ec\\ec_curve.c",uVar8);
  FUN_00aa4210(piVar6);
  piVar6 = (int *)0x0;
LAB_00aa517e:
  if (local_18 != 0) {
    FUN_00aa3a10(local_18);
  }
  if (iVar2 != 0) {
    FUN_00aa4a20(iVar2);
  }
  if (local_24 != 0) {
    FUN_00a9a9b0(local_24);
  }
  if (local_20 != 0) {
    FUN_00a9a9b0(local_20);
  }
  if (local_14 != 0) {
    FUN_00a9a9b0(local_14);
  }
  if (local_c != 0) {
    FUN_00a9a9b0(local_c);
  }
  if (local_1c != 0) {
    FUN_00a9a9b0(local_1c);
  }
  if (local_8 != 0) {
    FUN_00a9a9b0(local_8);
  }
  return piVar6;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aa5210(int param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  
  if (0 < param_1) {
    uVar3 = 0;
    piVar1 = &DAT_00dbd5d0;
    do {
      if (*piVar1 == param_1) {
        iVar2 = FUN_00aa4ef0((&DAT_00dbd5d0)[uVar3 * 4],(&PTR_DAT_00dbd5d4)[uVar3 * 4],
                             (&DAT_00dbd5d8)[uVar3 * 4],
                             (&PTR_s_SECG_WTLS_curve_over_a_112_bit_p_00dbd5dc)[uVar3 * 4]);
        if (iVar2 != 0) {
          FUN_00aa3590(iVar2,param_1);
          return iVar2;
        }
        break;
      }
      uVar3 = uVar3 + 1;
      piVar1 = piVar1 + 4;
    } while (uVar3 < 0x43);
    FUN_00a7f3c0(0x10,0xae,0x81,".\\crypto\\ec\\ec_curve.c",0x81b);
  }
  return 0;
}



void FUN_00aa52a0(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x00aa52ae. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + 0x44) + 4))();
  return;
}



void FUN_00aa52b0(undefined4 param_1,undefined4 param_2,int param_3)

{
                    // WARNING: Could not recover jumptable at 0x00aa52be. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_3 + 0x44) + 8))();
  return;
}



undefined ** FUN_00aa52c0(void)

{
  return &PTR_s_OpenSSL_DH_Method_03243128;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa52d0(int param_1)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  int **ppiVar4;
  int iVar5;
  int **ppiVar6;
  int local_1c;
  undefined4 local_18;
  int *local_14;
  int *local_10;
  int *local_c;
  int *local_8;
  uint local_4;
  
  local_4 = 0xaa52da;
  ppiVar6 = (int **)0x0;
  local_18 = 0;
  bVar1 = false;
  local_1c = 0;
  iVar5 = 0;
  iVar2 = FUN_00aa49c0();
  if (iVar2 != 0) {
    ppiVar6 = *(int ***)(param_1 + 0x18);
    if (ppiVar6 == (int **)0x0) {
      ppiVar6 = (int **)FUN_00a9aa10();
      if (ppiVar6 == (int **)0x0) goto LAB_00aa5324;
      bVar1 = true;
    }
    iVar5 = *(int *)(param_1 + 0x14);
    if (((iVar5 != 0) || (iVar5 = FUN_00a9aa10(), iVar5 != 0)) &&
       (((*(byte *)(param_1 + 0x1c) & 1) == 0 ||
        (local_1c = FUN_00ad0580(param_1 + 0x20,0x1a,*(undefined4 *)(param_1 + 8),iVar2),
        local_1c != 0)))) {
      if (bVar1) {
        if (*(int *)(param_1 + 0x24) == 0) {
          iVar3 = *(int *)(param_1 + 0x10);
          if (iVar3 == 0) {
            iVar3 = FUN_00a9a920(*(undefined4 *)(param_1 + 8));
            iVar3 = iVar3 + -1;
          }
          iVar3 = FUN_00aa4d00(ppiVar6,iVar3,0,0);
          if (iVar3 == 0) goto LAB_00aa5324;
        }
        else {
          do {
            iVar3 = FUN_00aa4eb0(ppiVar6,*(undefined4 *)(param_1 + 0x24));
            if (iVar3 == 0) goto LAB_00aa5324;
          } while ((ppiVar6[1] == (int *)0x0) ||
                  (((ppiVar6[1] == (int *)0x1 && (**ppiVar6 == 1)) && (ppiVar6[3] == (int *)0x0))));
        }
      }
      ppiVar4 = ppiVar6;
      if ((*(byte *)(param_1 + 0x1c) & 2) == 0) {
        FUN_00a9a9f0(&local_14);
        local_14 = *ppiVar6;
        local_10 = ppiVar6[1];
        local_c = ppiVar6[2];
        local_8 = ppiVar6[3];
        local_4 = (uint)ppiVar6[4] & 0xfffffffe | local_4 & 1 | 6;
        ppiVar4 = &local_14;
      }
      iVar3 = (**(code **)(*(int *)(param_1 + 0x44) + 0xc))
                        (param_1,iVar5,*(undefined4 *)(param_1 + 0xc),ppiVar4,
                         *(undefined4 *)(param_1 + 8),iVar2,local_1c);
      if (iVar3 != 0) {
        *(int *)(param_1 + 0x14) = iVar5;
        *(int ***)(param_1 + 0x18) = ppiVar6;
        local_18 = 1;
        goto LAB_00aa5340;
      }
    }
  }
LAB_00aa5324:
  FUN_00a7f3c0(5,0x67,3,".\\crypto\\dh\\dh_key.c",0xc3);
LAB_00aa5340:
  if ((iVar5 != 0) && (*(int *)(param_1 + 0x14) == 0)) {
    FUN_00a9a9b0(iVar5);
  }
  if ((ppiVar6 != (int **)0x0) && (*(int *)(param_1 + 0x18) == 0)) {
    FUN_00a9a9b0(ppiVar6);
  }
  FUN_00aa4a20(iVar2);
  return local_18;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa5490(undefined4 param_1,undefined4 param_2,int param_3)

{
  uint *puVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 local_8;
  
  iVar5 = param_3;
  iVar6 = 0;
  local_8 = 0xffffffff;
  iVar2 = FUN_00a9a920(*(undefined4 *)(param_3 + 8));
  if (10000 < iVar2) {
    FUN_00a7f3c0(5,0x66,0x67,".\\crypto\\dh\\dh_key.c",0xd5);
    return 0xffffffff;
  }
  iVar2 = FUN_00aa49c0();
  if (iVar2 == 0) {
    return 0xffffffff;
  }
  FUN_00aa4a50(iVar2);
  uVar3 = FUN_00aa4ae0(iVar2);
  if (*(int *)(iVar5 + 0x18) == 0) {
    uVar7 = 0xe0;
    uVar3 = 100;
  }
  else {
    if ((*(byte *)(iVar5 + 0x1c) & 1) != 0) {
      iVar6 = FUN_00ad0580(iVar5 + 0x20,0x1a,*(undefined4 *)(iVar5 + 8),iVar2);
      if ((*(byte *)(iVar5 + 0x1c) & 2) == 0) {
        puVar1 = (uint *)(*(int *)(iVar5 + 0x18) + 0x10);
        *puVar1 = *puVar1 | 4;
      }
      if (iVar6 == 0) goto LAB_00aa55bb;
    }
    iVar4 = FUN_00ad52c0(iVar5,param_2,&param_3);
    if ((iVar4 == 0) || (param_3 != 0)) {
      uVar7 = 0xf3;
      uVar3 = 0x66;
    }
    else {
      iVar5 = (**(code **)(*(int *)(iVar5 + 0x44) + 0xc))
                        (iVar5,uVar3,param_2,*(undefined4 *)(iVar5 + 0x18),
                         *(undefined4 *)(iVar5 + 8),iVar2,iVar6);
      if (iVar5 != 0) {
        local_8 = FUN_00a9ad90(uVar3,param_1);
        goto LAB_00aa55bb;
      }
      uVar7 = 0xf9;
      uVar3 = 3;
    }
  }
  FUN_00a7f3c0(5,0x66,uVar3,".\\crypto\\dh\\dh_key.c",uVar7);
LAB_00aa55bb:
  FUN_00aa4aa0(iVar2);
  FUN_00aa4a20(iVar2);
  return local_8;
}



void FUN_00aa5670(void)

{
  FUN_00a98620(&DAT_032ed99c,1);
  return;
}



undefined4 FUN_00aa5680(int param_1)

{
  return *(undefined4 *)(param_1 + 0x10);
}



undefined4 FUN_00aa57d0(undefined4 *param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int **unaff_EBX;
  int unaff_EDI;
  
  if ((unaff_EDI == 0) || (iVar1 = FUN_00a7fa30(), iVar1 == 0)) {
    FUN_00a7f3c0(0x10,0xdf,0x7c,".\\crypto\\ec\\ec_ameth.c",0x4a);
    return 0;
  }
  iVar2 = FUN_00aa35c0(iVar1);
  if ((iVar2 != 0) && (iVar1 = FUN_00aa35a0(iVar1), iVar1 != 0)) {
    piVar3 = (int *)FUN_00a87490(iVar1);
    *unaff_EBX = piVar3;
    *param_1 = 6;
    return 1;
  }
  piVar3 = (int *)FUN_00a91170();
  if (piVar3 == (int *)0x0) {
    return 0;
  }
  iVar1 = FUN_00ad70d0();
  *piVar3 = iVar1;
  if (-1 < iVar1) {
    *unaff_EBX = piVar3;
    *param_1 = 0x10;
    return 1;
  }
  FUN_00a90d80(piVar3);
  FUN_00a7f3c0(0x10,0xdf,0x10,".\\crypto\\ec\\ec_ameth.c",0x5e);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa58a0(undefined4 param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int local_8;
  int local_4;
  
  local_4 = 0xaa58aa;
  uVar2 = *(undefined4 *)(param_2 + 0x14);
  iVar3 = 0;
  iVar1 = FUN_00aa57d0(&local_8);
  if (iVar1 == 0) {
    FUN_00a7f3c0(0x10,0xd8,0x10,".\\crypto\\ec\\ec_ameth.c",0x71);
    return 0;
  }
  iVar1 = FUN_00ad7280(uVar2,0);
  if (0 < iVar1) {
    iVar3 = FUN_00a84f80(iVar1,".\\crypto\\ec\\ec_ameth.c",0x77);
    if (iVar3 != 0) {
      local_4 = iVar3;
      iVar1 = FUN_00ad7280(uVar2,&local_4);
      if (0 < iVar1) {
        uVar2 = FUN_00a87490(0x198,local_8,0,iVar3,iVar1);
        iVar1 = FUN_00a88c30(param_1,uVar2);
        if (iVar1 != 0) {
          return 1;
        }
      }
    }
  }
  if (local_8 == 6) {
    FUN_00a90760();
  }
  else {
    FUN_00a90d80(0);
  }
  if (iVar3 != 0) {
    FUN_00a85120(iVar3);
  }
  return 0;
}



int __thiscall FUN_00aa5990(undefined4 *param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  
  if (param_1 == 0x10) {
    param_1 = param_1_00[2];
    iVar1 = FUN_00ad7110(0,&param_1,*param_1_00);
    if (iVar1 != 0) {
      return iVar1;
    }
    uVar5 = 0x97;
    uVar4 = 0x8e;
    iVar1 = 0;
  }
  else {
    if (param_1 != 6) {
      FUN_00a7f3c0(0x10,0xdc,0x8e,".\\crypto\\ec\\ec_ameth.c",0xb2);
      return 0;
    }
    iVar1 = FUN_00a8e8a0();
    if (iVar1 != 0) {
      uVar4 = FUN_00a877e0(param_1_00);
      iVar2 = FUN_00aa5210(uVar4);
      if (iVar2 != 0) {
        FUN_00aa35b0(iVar2,1);
        iVar3 = FUN_00a8ec70(iVar1,iVar2);
        if (iVar3 != 0) {
          FUN_00aa4210(iVar2);
          return iVar1;
        }
      }
      goto LAB_00aa59de;
    }
    uVar5 = 0xa5;
    uVar4 = 0x41;
  }
  FUN_00a7f3c0(0x10,0xdc,uVar4,".\\crypto\\ec\\ec_ameth.c",uVar5);
LAB_00aa59de:
  if (iVar1 != 0) {
    FUN_00a8e900(iVar1);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa5a70(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined local_8 [4];
  undefined4 local_4;
  
  local_4 = 0xaa5a7a;
  local_14 = 0;
  local_18 = 0;
  iVar1 = FUN_00a88ca0(0,&local_14,&local_4,&local_10,param_2);
  if (iVar1 != 0) {
    FUN_00a89660(0,&local_c,local_8,local_10);
    local_18 = FUN_00aa5990(local_c);
    if (local_18 != 0) {
      iVar1 = FUN_00ad71b0(&local_18,&local_14,local_4);
      if (iVar1 == 0) {
        FUN_00a7f3c0(0x10,0xd7,0x8e,".\\crypto\\ec\\ec_ameth.c",0xd5);
        if (local_18 != 0) {
          FUN_00a8e900(local_18);
        }
        return 0;
      }
      FUN_00a816a0(param_1,0x198,local_18);
      return 1;
    }
    FUN_00a7f3c0(0x10,0xd7,0x10,".\\crypto\\ec\\ec_ameth.c",0xce);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa5bc0(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined local_8 [4];
  undefined4 local_4;
  
  local_4 = 0xaa5bca;
  local_14 = 0;
  local_18 = 0;
  iVar1 = FUN_00a94190(0,&local_14,&local_4,&local_10,param_2);
  if (iVar1 == 0) {
    return 0;
  }
  FUN_00a89660(0,&local_c,local_8,local_10);
  local_18 = FUN_00aa5990(local_c);
  if (local_18 != 0) {
    iVar1 = FUN_00ad6c00(&local_18,&local_14,local_4);
    if (iVar1 == 0) {
      uVar4 = 0x104;
      uVar3 = 0x8e;
      goto LAB_00aa5d3c;
    }
    iVar1 = FUN_00a989a0(local_18);
    if (iVar1 != 0) {
LAB_00aa5d6c:
      FUN_00a816a0(param_1,0x198,local_18);
      return 1;
    }
    uVar3 = FUN_00a7fa30(local_18);
    iVar1 = FUN_00aa3960(uVar3);
    if (iVar1 == 0) {
      FUN_00a7f3c0(0x10,0xd5,0x10,".\\crypto\\ec\\ec_ameth.c",0x114);
    }
    else {
      uVar4 = FUN_00a7fa30(uVar3);
      iVar2 = FUN_00aa3a80(iVar1,uVar4);
      if (iVar2 == 0) {
        FUN_00aa3a10(iVar1);
        uVar3 = 0x11a;
      }
      else {
        uVar4 = FUN_00aa3450(local_18);
        iVar2 = FUN_00aa4160(uVar3,iVar1,uVar4,0,0,0);
        if (iVar2 == 0) {
          FUN_00aa3a10();
          uVar3 = 0x121;
        }
        else {
          iVar2 = FUN_00a8ecd0(local_18,iVar1);
          if (iVar2 != 0) {
            FUN_00aa3a10(iVar1);
            goto LAB_00aa5d6c;
          }
          FUN_00aa3a10(iVar1);
          uVar3 = 0x127;
        }
      }
      FUN_00a7f3c0(0x10,0xd5,0x10,".\\crypto\\ec\\ec_ameth.c",uVar3);
    }
  }
  uVar4 = 0x131;
  uVar3 = 0x10;
LAB_00aa5d3c:
  FUN_00a7f3c0(0x10,0xd5,uVar3,".\\crypto\\ec\\ec_ameth.c",uVar4);
  if (local_18 != 0) {
    FUN_00a8e900(local_18);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

bool FUN_00aa5d90(undefined4 param_1,int param_2)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 local_8;
  undefined4 local_4;
  
  local_4 = 0xaa5d9a;
  uVar5 = *(undefined4 *)(param_2 + 0x14);
  iVar1 = FUN_00aa57d0(&local_4);
  if (iVar1 == 0) {
    FUN_00a7f3c0(0x10,0xd6,0x8e,".\\crypto\\ec\\ec_ameth.c",0x144);
    return false;
  }
  uVar2 = FUN_00aa5680(uVar5);
  FUN_00a8ed10(uVar5,uVar2 | 1);
  iVar1 = FUN_00ad6e20(uVar5,0);
  if (iVar1 == 0) {
    FUN_00a8ed10(uVar5,uVar2);
    uVar6 = 0x153;
    uVar5 = 0x10;
  }
  else {
    iVar3 = FUN_00a84f80(iVar1,".\\crypto\\ec\\ec_ameth.c",0x156);
    if (iVar3 != 0) {
      param_2 = iVar3;
      iVar4 = FUN_00ad6e20(uVar5,&param_2);
      if (iVar4 == 0) {
        FUN_00a8ed10(uVar5,uVar2);
        FUN_00a85120(iVar3);
        FUN_00a7f3c0(0x10,0xd6,0x10,".\\crypto\\ec\\ec_ameth.c",0x162);
      }
      FUN_00a8ed10(uVar5,uVar2);
      uVar5 = FUN_00a87490(0x198,0,local_4,local_8,iVar3,iVar1);
      iVar1 = FUN_00a940f0(param_1,uVar5);
      return iVar1 != 0;
    }
    FUN_00a8ed10(uVar5,uVar2);
    uVar6 = 0x15a;
    uVar5 = 0x41;
  }
  FUN_00a7f3c0(0x10,0xd6,uVar5,".\\crypto\\ec\\ec_ameth.c",uVar6);
  return false;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __thiscall FUN_00aa5ff0(int param_1_00,undefined4 param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  uint uVar9;
  char *pcVar10;
  undefined4 local_14;
  int local_10;
  int local_8;
  
  uVar9 = 0;
  iVar8 = 0;
  iVar7 = 0;
  local_14 = 0x20;
  local_10 = 0;
  local_8 = 0;
  if ((param_1_00 == 0) || (iVar1 = FUN_00a7fa30(param_1_00), iVar1 == 0)) {
    local_14 = 0x43;
  }
  else {
    local_8 = FUN_00aa49c0();
    if (local_8 == 0) {
      local_14 = 0x41;
    }
    else {
      if (0 < param_3) {
        uVar2 = FUN_00a989a0(param_1_00);
        uVar3 = FUN_00aeab70(param_1_00,0,local_8);
        iVar7 = FUN_00ad7e50(iVar1,uVar2,uVar3);
        if (iVar7 == 0) {
          local_14 = 0x10;
          goto LAB_00aa61fc;
        }
        iVar4 = FUN_00a9a920(iVar7);
        uVar9 = (int)(iVar4 + 7 + (iVar4 + 7 >> 0x1f & 7U)) >> 3;
      }
      if (param_3 == 2) {
        iVar4 = FUN_00aa3450(param_1_00);
        if (iVar4 != 0) {
          iVar8 = FUN_00a9a920(iVar4);
          uVar5 = (int)(iVar8 + 7 + (iVar8 + 7 >> 0x1f & 7U)) >> 3;
          if (uVar9 < uVar5) {
            uVar9 = uVar5;
          }
        }
LAB_00aa60e8:
        iVar8 = FUN_00a84f80(uVar9 + 10,".\\crypto\\ec\\ec_ameth.c",0x1dd);
        if (iVar8 == 0) {
          local_14 = 0x41;
          goto LAB_00aa61fc;
        }
      }
      else {
        iVar4 = 0;
        if (0 < param_3) goto LAB_00aa60e8;
      }
      if (param_3 == 2) {
        pcVar10 = "Private-Key";
      }
      else {
        pcVar10 = "Public-Key";
        if (param_3 != 1) {
          pcVar10 = "ECDSA-Parameters";
        }
      }
      iVar6 = FUN_00a83600(param_1,param_2,0x80);
      if (((iVar6 != 0) && (local_10 = FUN_00a9aa10(), local_10 != 0)) &&
         (iVar6 = FUN_00aa3530(iVar1,local_10,0), iVar6 != 0)) {
        uVar2 = FUN_00a9a920(local_10);
        iVar6 = FUN_00a86200(param_1,"%s: (%d bit)\n",pcVar10,uVar2);
        if ((((0 < iVar6) &&
             ((iVar4 == 0 || (iVar4 = FUN_00ad7c90(param_1,"priv:",iVar4,iVar8,param_2), iVar4 != 0)
              ))) && ((iVar7 == 0 ||
                      (iVar4 = FUN_00ad7c90(param_1,"pub: ",iVar7,iVar8,param_2), iVar4 != 0)))) &&
           (iVar1 = FUN_00ad7740(param_1,iVar1,param_2), iVar1 != 0)) {
          uVar2 = 1;
          goto LAB_00aa621e;
        }
      }
    }
  }
LAB_00aa61fc:
  FUN_00a7f3c0(0x10,0xdd,local_14,".\\crypto\\ec\\ec_ameth.c",0x1fe);
  uVar2 = 0;
LAB_00aa621e:
  if (iVar7 != 0) {
    FUN_00a9a9b0(iVar7);
  }
  if (local_10 != 0) {
    FUN_00a9a9b0(local_10);
  }
  if (local_8 != 0) {
    FUN_00aa4a20(local_8);
  }
  if (iVar8 != 0) {
    FUN_00a85120(iVar8);
  }
  return uVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa6510(undefined4 param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  undefined4 uVar5;
  int local_4;
  
  piVar4 = (int *)0x0;
  iVar3 = *(int *)(param_2 + 0x14);
  local_4 = 0;
  if ((((*(int *)(param_2 + 0x18) == 0) || (*(int *)(iVar3 + 0xc) == 0)) ||
      (*(int *)(iVar3 + 0x10) == 0)) || (*(int *)(iVar3 + 0x14) == 0)) {
    uVar5 = 0xffffffff;
LAB_00aa65a1:
    *(undefined4 *)(iVar3 + 8) = 0;
    iVar3 = FUN_00aad960(iVar3,&local_4);
    if (0 < iVar3) {
      uVar5 = FUN_00a87490(0x74,uVar5,piVar4,local_4,iVar3);
      iVar3 = FUN_00a88c30(param_1,uVar5);
      if (iVar3 != 0) {
        return 1;
      }
      goto LAB_00aa6570;
    }
    uVar5 = 0xa9;
  }
  else {
    piVar1 = (int *)FUN_00a91170();
    iVar2 = FUN_00aad930(iVar3,piVar1 + 2);
    *piVar1 = iVar2;
    if (0 < iVar2) {
      uVar5 = 0x10;
      piVar4 = piVar1;
      goto LAB_00aa65a1;
    }
    uVar5 = 0x9a;
  }
  FUN_00a7f3c0(10,0x76,0x41,".\\crypto\\dsa\\dsa_ameth.c",uVar5);
LAB_00aa6570:
  if (local_4 != 0) {
    FUN_00a85120(local_4);
  }
  if (piVar4 != (int *)0x0) {
    FUN_00a90d80(piVar4);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa6860(undefined4 param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int local_4;
  
  iVar3 = 0;
  local_4 = 0;
  piVar1 = (int *)FUN_00a91170();
  if (piVar1 == (int *)0x0) {
    uVar4 = 0x13a;
  }
  else {
    iVar2 = FUN_00aad930(*(undefined4 *)(param_2 + 0x14),piVar1 + 2);
    *piVar1 = iVar2;
    if (0 < iVar2) {
      piVar1[1] = 0x10;
      iVar3 = FUN_00a9dbd0(*(undefined4 *)(*(int *)(param_2 + 0x14) + 0x1c),0);
      if (iVar3 == 0) {
        FUN_00a7f3c0(10,0x74,0x6d,".\\crypto\\dsa\\dsa_ameth.c",0x14b);
      }
      else {
        uVar4 = FUN_00a887a0(iVar3,&local_4);
        FUN_00a887d0(iVar3);
        uVar4 = FUN_00a87490(0x74,0,0x10,piVar1,local_4,uVar4);
        iVar2 = FUN_00a940f0(param_1,uVar4);
        if (iVar2 != 0) {
          return 1;
        }
      }
      goto LAB_00aa6931;
    }
    uVar4 = 0x141;
  }
  FUN_00a7f3c0(10,0x74,0x41,".\\crypto\\dsa\\dsa_ameth.c",uVar4);
LAB_00aa6931:
  if (local_4 != 0) {
    FUN_00a85120(local_4);
  }
  if (piVar1 != (int *)0x0) {
    FUN_00a90d80(piVar1);
  }
  if (iVar3 != 0) {
    FUN_00a887d0(iVar3);
  }
  return 0;
}



undefined4 FUN_00aa69d0(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  iVar2 = FUN_00a9b160(*(undefined4 *)(*(int *)(param_2 + 0x14) + 0xc));
  if (iVar2 == 0) {
    return 0;
  }
  iVar1 = *(int *)(*(int *)(param_1 + 0x14) + 0xc);
  if (iVar1 != 0) {
    FUN_00a9a9b0(iVar1);
  }
  *(int *)(*(int *)(param_1 + 0x14) + 0xc) = iVar2;
  iVar2 = FUN_00a9b160(*(undefined4 *)(*(int *)(param_2 + 0x14) + 0x10));
  if (iVar2 != 0) {
    iVar1 = *(int *)(*(int *)(param_1 + 0x14) + 0x10);
    if (iVar1 != 0) {
      FUN_00a9a9b0(iVar1);
    }
    *(int *)(*(int *)(param_1 + 0x14) + 0x10) = iVar2;
    iVar2 = FUN_00a9b160(*(undefined4 *)(*(int *)(param_2 + 0x14) + 0x14));
    if (iVar2 != 0) {
      iVar1 = *(int *)(*(int *)(param_1 + 0x14) + 0x14);
      if (iVar1 != 0) {
        FUN_00a9a9b0(iVar1);
      }
      *(int *)(*(int *)(param_1 + 0x14) + 0x14) = iVar2;
      return 1;
    }
  }
  return 0;
}



undefined4 FUN_00aa6a80(int param_1,int param_2)

{
  int iVar1;
  
  iVar1 = FUN_00a9ae60(*(undefined4 *)(*(int *)(param_1 + 0x14) + 0xc),
                       *(undefined4 *)(*(int *)(param_2 + 0x14) + 0xc));
  if (iVar1 == 0) {
    iVar1 = FUN_00a9ae60(*(undefined4 *)(*(int *)(param_1 + 0x14) + 0x10),
                         *(undefined4 *)(*(int *)(param_2 + 0x14) + 0x10));
    if (iVar1 == 0) {
      iVar1 = FUN_00a9ae60(*(undefined4 *)(*(int *)(param_1 + 0x14) + 0x14),
                           *(undefined4 *)(*(int *)(param_2 + 0x14) + 0x14));
      if (iVar1 == 0) {
        return 1;
      }
    }
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __thiscall FUN_00aa6b30(int param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  int local_8;
  undefined4 local_4;
  
  local_4 = 0;
  if (param_2 == 2) {
    local_8 = *(int *)(param_1_00 + 0x18);
    iVar3 = *(int *)(param_1_00 + 0x1c);
  }
  else {
    iVar3 = 0;
    if (param_2 < 1) {
      local_8 = 0;
    }
    else {
      local_8 = *(int *)(param_1_00 + 0x18);
    }
  }
  uVar4 = 0;
  if (*(int *)(param_1_00 + 0xc) != 0) {
    iVar1 = FUN_00a9a920(*(int *)(param_1_00 + 0xc));
    uVar2 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
    if (uVar2 != 0) {
      uVar4 = uVar2;
    }
  }
  if (*(int *)(param_1_00 + 0x10) != 0) {
    iVar1 = FUN_00a9a920(*(int *)(param_1_00 + 0x10));
    uVar2 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
    if (uVar4 < uVar2) {
      uVar4 = uVar2;
    }
  }
  if (*(int *)(param_1_00 + 0x14) != 0) {
    iVar1 = FUN_00a9a920(*(int *)(param_1_00 + 0x14));
    uVar2 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
    if (uVar4 < uVar2) {
      uVar4 = uVar2;
    }
  }
  if (iVar3 != 0) {
    iVar1 = FUN_00a9a920(iVar3);
    uVar2 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
    if (uVar4 < uVar2) {
      uVar4 = uVar2;
    }
  }
  if (local_8 != 0) {
    iVar1 = FUN_00a9a920(local_8);
    uVar2 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
    if (uVar4 < uVar2) {
      uVar4 = uVar2;
    }
  }
  iVar1 = FUN_00a84f80(uVar4 + 10,".\\crypto\\dsa\\dsa_ameth.c",0x1ce);
  if (iVar1 == 0) {
    FUN_00a7f3c0(10,0x68,0x41,".\\crypto\\dsa\\dsa_ameth.c",0x1d1);
    return 0;
  }
  if (iVar3 == 0) {
LAB_00aa6cbc:
    iVar3 = FUN_00ad7c90();
    if ((((iVar3 != 0) && (iVar3 = FUN_00ad7c90(), iVar3 != 0)) &&
        (iVar3 = FUN_00ad7c90(), iVar3 != 0)) && (iVar3 = FUN_00ad7c90(), iVar3 != 0)) {
      iVar3 = FUN_00ad7c90();
      uVar5 = 1;
      if (iVar3 != 0) goto LAB_00aa6d43;
    }
  }
  else {
    iVar3 = FUN_00a83600();
    if (iVar3 != 0) {
      FUN_00a9a920(*(undefined4 *)(param_1_00 + 0xc));
      iVar3 = FUN_00a86200();
      if (0 < iVar3) goto LAB_00aa6cbc;
    }
  }
  uVar5 = local_4;
LAB_00aa6d43:
  FUN_00a85120(iVar1);
  return uVar5;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa72b0(undefined4 param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int local_4;
  
  iVar3 = *(int *)(param_2 + 0x14);
  local_4 = 0;
  piVar1 = (int *)FUN_00a91170();
  iVar2 = FUN_00ad87c0(iVar3,piVar1 + 2);
  *piVar1 = iVar2;
  if (iVar2 < 1) {
    uVar4 = 0x91;
    piVar1 = (int *)0x0;
  }
  else {
    iVar3 = FUN_00a9dbd0(*(undefined4 *)(iVar3 + 0x14),0);
    if (iVar3 == 0) goto LAB_00aa72fd;
    iVar2 = FUN_00a887a0(iVar3,&local_4);
    FUN_00a887d0(iVar3);
    if (0 < iVar2) {
      uVar4 = FUN_00a87490(0x1c,0x10,piVar1,local_4,iVar2);
      iVar3 = FUN_00a88c30(param_1,uVar4);
      if (iVar3 != 0) {
        return 1;
      }
      goto LAB_00aa72fd;
    }
    uVar4 = 0xa1;
  }
  FUN_00a7f3c0(5,0x6d,0x41,".\\crypto\\dh\\dh_ameth.c",uVar4);
LAB_00aa72fd:
  if (local_4 != 0) {
    FUN_00a85120(local_4);
  }
  if (piVar1 != (int *)0x0) {
    FUN_00a90d80(piVar1);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa7390(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 local_18;
  int local_14;
  undefined4 local_10;
  undefined local_c [4];
  undefined4 *local_8;
  undefined4 local_4;
  
  local_4 = 0xaa739a;
  iVar3 = 0;
  iVar1 = FUN_00a94190(0,local_c,&local_10,&local_18,param_2);
  if (iVar1 == 0) {
    return 0;
  }
  FUN_00a89660(0,&local_14,&local_8,local_18);
  if (local_14 == 0x10) {
    iVar1 = FUN_00a88780(0,local_c,local_10);
    if (iVar1 != 0) {
      local_4 = local_8[2];
      iVar3 = FUN_00ad87a0(0,&local_4,*local_8);
      if (iVar3 != 0) {
        iVar2 = FUN_00a9dcb0(iVar1,0);
        *(int *)(iVar3 + 0x18) = iVar2;
        if (iVar2 == 0) {
          FUN_00a7f3c0(5,0x6e,0x6a,".\\crypto\\dh\\dh_ameth.c",0xd8);
          FUN_00a8ef50(iVar3);
          return 0;
        }
        iVar2 = FUN_00aa52a0(iVar3);
        if (iVar2 == 0) {
          FUN_00a8ef50(iVar3);
          return 0;
        }
        FUN_00a816a0(param_1,0x1c,iVar3);
        FUN_00a887d0(iVar1);
        return 1;
      }
    }
  }
  FUN_00a7f3c0(5,0x6e,0x72,".\\crypto\\dh\\dh_ameth.c",0xe6);
  FUN_00a8ef50(iVar3);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa74d0(undefined4 param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int local_4;
  
  iVar3 = 0;
  local_4 = 0;
  piVar1 = (int *)FUN_00a91170();
  if (piVar1 == (int *)0x0) {
    uVar4 = 0xf7;
  }
  else {
    iVar2 = FUN_00ad87c0(*(undefined4 *)(param_2 + 0x14),piVar1 + 2);
    *piVar1 = iVar2;
    if (0 < iVar2) {
      piVar1[1] = 0x10;
      iVar3 = FUN_00a9dbd0(*(undefined4 *)(*(int *)(param_2 + 0x14) + 0x18),0);
      if (iVar3 == 0) {
        FUN_00a7f3c0(5,0x6f,0x6a,".\\crypto\\dh\\dh_ameth.c",0x108);
      }
      else {
        uVar4 = FUN_00a887a0(iVar3,&local_4);
        FUN_00a887d0(iVar3);
        uVar4 = FUN_00a87490(0x1c,0,0x10,piVar1,local_4,uVar4);
        iVar2 = FUN_00a940f0(param_1,uVar4);
        if (iVar2 != 0) {
          return 1;
        }
      }
      goto LAB_00aa75a1;
    }
    uVar4 = 0xfe;
  }
  FUN_00a7f3c0(5,0x6f,0x41,".\\crypto\\dh\\dh_ameth.c",uVar4);
LAB_00aa75a1:
  if (local_4 != 0) {
    FUN_00a85120(local_4);
  }
  if (piVar1 != (int *)0x0) {
    FUN_00a90d80(piVar1);
  }
  if (iVar3 != 0) {
    FUN_00a887d0(iVar3);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa7640(undefined4 param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  char *pcVar4;
  uint uVar5;
  int iVar6;
  int local_10;
  int local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  iVar6 = 0;
  local_8 = 7;
  local_4 = 0;
  if (param_4 == 2) {
    local_10 = *(int *)(param_2 + 0x18);
    local_c = *(int *)(param_2 + 0x14);
  }
  else {
    local_10 = 0;
    if (param_4 < 1) {
      local_c = 0;
    }
    else {
      local_c = *(int *)(param_2 + 0x14);
    }
  }
  if (*(int *)(param_2 + 8) == 0) {
LAB_00aa76b6:
    local_8 = 0x43;
  }
  else {
    iVar1 = FUN_00a9a920(*(int *)(param_2 + 8));
    uVar5 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
    if ((uVar5 == 0) || (uVar5 == 0)) goto LAB_00aa76b6;
    if (*(int *)(param_2 + 0xc) != 0) {
      iVar6 = FUN_00a9a920(*(int *)(param_2 + 0xc));
      uVar2 = (int)(iVar6 + 7 + (iVar6 + 7 >> 0x1f & 7U)) >> 3;
      if (uVar5 < uVar2) {
        uVar5 = uVar2;
      }
    }
    if (local_c != 0) {
      iVar6 = FUN_00a9a920(local_c);
      uVar2 = (int)(iVar6 + 7 + (iVar6 + 7 >> 0x1f & 7U)) >> 3;
      if (uVar5 < uVar2) {
        uVar5 = uVar2;
      }
    }
    if (local_10 != 0) {
      iVar6 = FUN_00a9a920(local_10);
      uVar2 = (int)(iVar6 + 7 + (iVar6 + 7 >> 0x1f & 7U)) >> 3;
      if (uVar5 < uVar2) {
        uVar5 = uVar2;
      }
    }
    if (param_4 == 2) {
      pcVar4 = "PKCS#3 DH Private-Key";
    }
    else {
      pcVar4 = "PKCS#3 DH Public-Key";
      if (param_4 != 1) {
        pcVar4 = "PKCS#3 DH Parameters";
      }
    }
    iVar6 = FUN_00a84f80(uVar5 + 10,".\\crypto\\dh\\dh_ameth.c",0x164);
    if (iVar6 == 0) {
      local_8 = 0x41;
    }
    else {
      FUN_00a83600(param_1,param_3,0x80);
      uVar3 = FUN_00a9a920(*(undefined4 *)(param_2 + 8));
      iVar1 = FUN_00a86200(param_1,"%s: (%d bit)\n",pcVar4,uVar3);
      if (0 < iVar1) {
        param_3 = param_3 + 4;
        iVar1 = FUN_00ad7c90(param_1,"private-key:",local_10,iVar6,param_3);
        if (iVar1 != 0) {
          iVar1 = FUN_00ad7c90(param_1,"public-key:",local_c,iVar6,param_3);
          if (iVar1 != 0) {
            iVar1 = FUN_00ad7c90(param_1,"prime:",*(undefined4 *)(param_2 + 8),iVar6,param_3);
            if (iVar1 != 0) {
              iVar1 = FUN_00ad7c90(param_1,"generator:",*(undefined4 *)(param_2 + 0xc),iVar6,param_3
                                  );
              if (iVar1 != 0) {
                if (*(int *)(param_2 + 0x10) != 0) {
                  FUN_00a83600(param_1,param_3,0x80);
                  iVar1 = FUN_00a86200(param_1,"recommended-private-length: %d bits\n",
                                       *(undefined4 *)(param_2 + 0x10));
                  if (iVar1 < 1) goto LAB_00aa7839;
                }
                local_4 = 1;
                goto LAB_00aa785e;
              }
            }
          }
        }
      }
    }
  }
LAB_00aa7839:
  FUN_00a7f3c0(5,100,local_8,".\\crypto\\dh\\dh_ameth.c",0x181);
LAB_00aa785e:
  if (iVar6 != 0) {
    FUN_00a85120(iVar6);
  }
  return local_4;
}



undefined4 FUN_00aa78b0(int param_1,int param_2)

{
  int iVar1;
  
  iVar1 = FUN_00a9ae60(*(undefined4 *)(*(int *)(param_1 + 0x14) + 8),
                       *(undefined4 *)(*(int *)(param_2 + 0x14) + 8));
  if (iVar1 == 0) {
    iVar1 = FUN_00a9ae60(*(undefined4 *)(*(int *)(param_1 + 0x14) + 0xc),
                         *(undefined4 *)(*(int *)(param_2 + 0x14) + 0xc));
    if (iVar1 == 0) {
      return 1;
    }
  }
  return 0;
}



undefined4 FUN_00aa7900(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  iVar2 = FUN_00a9b160(*(undefined4 *)(*(int *)(param_2 + 0x14) + 8));
  if (iVar2 == 0) {
    return 0;
  }
  iVar1 = *(int *)(*(int *)(param_1 + 0x14) + 8);
  if (iVar1 != 0) {
    FUN_00a9a9b0(iVar1);
  }
  *(int *)(*(int *)(param_1 + 0x14) + 8) = iVar2;
  iVar2 = FUN_00a9b160(*(undefined4 *)(*(int *)(param_2 + 0x14) + 0xc));
  if (iVar2 == 0) {
    return 0;
  }
  iVar1 = *(int *)(*(int *)(param_1 + 0x14) + 0xc);
  if (iVar1 != 0) {
    FUN_00a9a9b0(iVar1);
  }
  *(int *)(*(int *)(param_1 + 0x14) + 0xc) = iVar2;
  return 1;
}



bool FUN_00aa79a0(int param_1,int param_2)

{
  int iVar1;
  
  iVar1 = FUN_00a9ae60(*(undefined4 *)(*(int *)(param_1 + 0x14) + 8),
                       *(undefined4 *)(*(int *)(param_2 + 0x14) + 8));
  if (iVar1 == 0) {
    iVar1 = FUN_00a9ae60(*(undefined4 *)(*(int *)(param_1 + 0x14) + 0xc),
                         *(undefined4 *)(*(int *)(param_2 + 0x14) + 0xc));
    if (iVar1 == 0) {
      iVar1 = FUN_00a9ae60(*(undefined4 *)(*(int *)(param_2 + 0x14) + 0x14),
                           *(undefined4 *)(*(int *)(param_1 + 0x14) + 0x14));
      return iVar1 == 0;
    }
  }
  return false;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa7a70(undefined4 param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 local_4;
  
  local_4 = 0;
  iVar1 = FUN_00ad8910(*(undefined4 *)(param_2 + 0x14),&local_4);
  if (0 < iVar1) {
    uVar2 = FUN_00a87490(6,5,0,local_4,iVar1);
    iVar1 = FUN_00a88c30(param_1,uVar2);
    if (iVar1 != 0) {
      return 1;
    }
    FUN_00a85120(local_4);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa7ae0(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 local_8;
  undefined4 local_4;
  
  local_4 = 0xaa7aea;
  iVar1 = FUN_00a88ca0(0,&local_4,&local_8,0,param_2);
  if (iVar1 != 0) {
    iVar1 = FUN_00ad88f0(0,&local_4,local_8);
    if (iVar1 != 0) {
      FUN_00a816a0(param_1,6,iVar1);
      return 1;
    }
    FUN_00a7f3c0(4,0x8b,4,".\\crypto\\rsa\\rsa_ameth.c",0x5e);
  }
  return 0;
}



undefined4 FUN_00aa7b60(int param_1,int param_2)

{
  int iVar1;
  
  iVar1 = FUN_00a9ae60(*(undefined4 *)(*(int *)(param_2 + 0x14) + 0x10),
                       *(undefined4 *)(*(int *)(param_1 + 0x14) + 0x10));
  if (iVar1 == 0) {
    iVar1 = FUN_00a9ae60(*(undefined4 *)(*(int *)(param_2 + 0x14) + 0x14),
                         *(undefined4 *)(*(int *)(param_1 + 0x14) + 0x14));
    if (iVar1 == 0) {
      return 1;
    }
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa7d50(undefined4 param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  char *pcVar4;
  undefined4 uVar5;
  char *pcVar6;
  uint uVar7;
  int unaff_EDI;
  undefined4 local_4;
  
  uVar5 = 0;
  local_4 = 0;
  uVar7 = 0;
  if (*(int *)(unaff_EDI + 0x10) != 0) {
    iVar1 = FUN_00a9a920(*(int *)(unaff_EDI + 0x10));
    uVar2 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
    if (uVar2 != 0) {
      uVar7 = uVar2;
    }
  }
  if (*(int *)(unaff_EDI + 0x14) != 0) {
    iVar1 = FUN_00a9a920(*(int *)(unaff_EDI + 0x14));
    uVar2 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
    if (uVar7 < uVar2) {
      uVar7 = uVar2;
    }
  }
  if (param_3 != 0) {
    if (*(int *)(unaff_EDI + 0x18) != 0) {
      iVar1 = FUN_00a9a920(*(int *)(unaff_EDI + 0x18));
      uVar2 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
      if (uVar7 < uVar2) {
        uVar7 = uVar2;
      }
    }
    if (*(int *)(unaff_EDI + 0x1c) != 0) {
      iVar1 = FUN_00a9a920(*(int *)(unaff_EDI + 0x1c));
      uVar2 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
      if (uVar7 < uVar2) {
        uVar7 = uVar2;
      }
    }
    if (*(int *)(unaff_EDI + 0x20) != 0) {
      iVar1 = FUN_00a9a920(*(int *)(unaff_EDI + 0x20));
      uVar2 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
      if (uVar7 < uVar2) {
        uVar7 = uVar2;
      }
    }
    if (*(int *)(unaff_EDI + 0x24) != 0) {
      iVar1 = FUN_00a9a920(*(int *)(unaff_EDI + 0x24));
      uVar2 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
      if (uVar7 < uVar2) {
        uVar7 = uVar2;
      }
    }
    if (*(int *)(unaff_EDI + 0x28) != 0) {
      iVar1 = FUN_00a9a920(*(int *)(unaff_EDI + 0x28));
      uVar2 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
      if (uVar7 < uVar2) {
        uVar7 = uVar2;
      }
    }
    if (*(int *)(unaff_EDI + 0x2c) != 0) {
      iVar1 = FUN_00a9a920(*(int *)(unaff_EDI + 0x2c));
      uVar2 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
      if (uVar7 < uVar2) {
        uVar7 = uVar2;
      }
    }
  }
  iVar1 = FUN_00a84f80(uVar7 + 10,".\\crypto\\rsa\\rsa_ameth.c",0xcc);
  if (iVar1 == 0) {
    FUN_00a7f3c0(4,0x92,0x41,".\\crypto\\rsa\\rsa_ameth.c",0xcf);
    return 0;
  }
  if (*(int *)(unaff_EDI + 0x10) != 0) {
    uVar5 = FUN_00a9a920(*(int *)(unaff_EDI + 0x10));
  }
  iVar3 = FUN_00a83600(param_1,param_2,0x80);
  if (iVar3 != 0) {
    if ((param_3 == 0) || (*(int *)(unaff_EDI + 0x18) == 0)) {
      iVar3 = FUN_00a86200(param_1,"Public-Key: (%d bit)\n",uVar5);
      if (iVar3 < 1) goto LAB_00aa8022;
      pcVar4 = "Modulus:";
      pcVar6 = "Exponent:";
    }
    else {
      iVar3 = FUN_00a86200(param_1,"Private-Key: (%d bit)\n",uVar5);
      if (iVar3 < 1) goto LAB_00aa8022;
      pcVar4 = "modulus:";
      pcVar6 = "publicExponent:";
    }
    iVar3 = FUN_00ad7c90(param_1,pcVar4,*(undefined4 *)(unaff_EDI + 0x10),iVar1,param_2);
    if (iVar3 != 0) {
      iVar3 = FUN_00ad7c90(param_1,pcVar6,*(undefined4 *)(unaff_EDI + 0x14),iVar1,param_2);
      if (iVar3 != 0) {
        if (param_3 != 0) {
          iVar3 = FUN_00ad7c90(param_1,"privateExponent:",*(undefined4 *)(unaff_EDI + 0x18),iVar1,
                               param_2);
          if (iVar3 == 0) goto LAB_00aa8022;
          iVar3 = FUN_00ad7c90(param_1,"prime1:",*(undefined4 *)(unaff_EDI + 0x1c),iVar1,param_2);
          if (iVar3 == 0) goto LAB_00aa8022;
          iVar3 = FUN_00ad7c90(param_1,"prime2:",*(undefined4 *)(unaff_EDI + 0x20),iVar1,param_2);
          if (iVar3 == 0) goto LAB_00aa8022;
          iVar3 = FUN_00ad7c90(param_1,"exponent1:",*(undefined4 *)(unaff_EDI + 0x24),iVar1,param_2)
          ;
          if (iVar3 == 0) goto LAB_00aa8022;
          iVar3 = FUN_00ad7c90(param_1,"exponent2:",*(undefined4 *)(unaff_EDI + 0x28),iVar1,param_2)
          ;
          if (iVar3 == 0) goto LAB_00aa8022;
          iVar3 = FUN_00ad7c90(param_1,"coefficient:",*(undefined4 *)(unaff_EDI + 0x2c),iVar1,
                               param_2);
          if (iVar3 == 0) goto LAB_00aa8022;
        }
        local_4 = 1;
      }
    }
  }
LAB_00aa8022:
  FUN_00a85120(iVar1);
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int __fastcall FUN_00aa8080(int param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 *unaff_EBX;
  undefined4 local_4;
  
  *unaff_EBX = 0;
  piVar1 = *(int **)(param_1 + 4);
  if ((piVar1 != (int *)0x0) && (*piVar1 == 0x10)) {
    local_4 = *(undefined4 *)(piVar1[1] + 8);
    iVar2 = FUN_00ad8860(0,&local_4,*(undefined4 *)piVar1[1]);
    if (iVar2 != 0) {
      if (*(int *)(iVar2 + 4) != 0) {
        piVar1 = (int *)(*(undefined4 **)(iVar2 + 4))[1];
        iVar3 = FUN_00a877e0(**(undefined4 **)(iVar2 + 4));
        if ((iVar3 == 0x38f) && (*piVar1 == 0x10)) {
          local_4 = *(undefined4 *)(piVar1[1] + 8);
          uVar4 = FUN_00a89580(0,&local_4,*(undefined4 *)piVar1[1]);
          *unaff_EBX = uVar4;
        }
      }
      return iVar2;
    }
    return 0;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

bool FUN_00aa8120(int param_1)

{
  int iVar1;
  int *unaff_EDI;
  
  if (unaff_EDI == (int *)0x0) {
    iVar1 = FUN_00a834a0();
    return 0 < iVar1;
  }
  iVar1 = FUN_00a834a0();
  if (iVar1 < 1) {
    return false;
  }
  iVar1 = FUN_00a83600();
  if (iVar1 == 0) {
    return false;
  }
  iVar1 = FUN_00a834a0();
  if (iVar1 < 1) {
    return false;
  }
  if (*unaff_EDI == 0) {
    iVar1 = FUN_00a834a0();
  }
  else {
    iVar1 = FUN_00a90600();
  }
  if (iVar1 < 1) {
    return false;
  }
  iVar1 = FUN_00a834a0();
  if (iVar1 < 1) {
    return false;
  }
  iVar1 = FUN_00a83600();
  if (iVar1 == 0) {
    return false;
  }
  iVar1 = FUN_00a834a0();
  if (iVar1 < 1) {
    return false;
  }
  if (unaff_EDI[1] != 0) {
    iVar1 = FUN_00a90600();
    if (iVar1 < 1) {
      return false;
    }
    iVar1 = FUN_00a834a0();
    if (iVar1 < 1) {
      return false;
    }
    if (param_1 != 0) {
      iVar1 = FUN_00a90600();
      goto LAB_00aa8255;
    }
  }
  iVar1 = FUN_00a834a0();
LAB_00aa8255:
  if (0 < iVar1) {
    FUN_00a834a0();
    iVar1 = FUN_00a83600();
    if ((iVar1 != 0) && (iVar1 = FUN_00a834a0(), 0 < iVar1)) {
      if (unaff_EDI[2] == 0) {
        iVar1 = FUN_00a834a0();
      }
      else {
        iVar1 = FUN_00ad8950();
      }
      if (0 < iVar1) {
        FUN_00a834a0();
        iVar1 = FUN_00a83600();
        if ((iVar1 != 0) && (iVar1 = FUN_00a834a0(), 0 < iVar1)) {
          if (unaff_EDI[3] == 0) {
            iVar1 = FUN_00a834a0();
          }
          else {
            iVar1 = FUN_00ad8950();
          }
          if (0 < iVar1) {
            FUN_00a834a0();
            return true;
          }
        }
      }
    }
  }
  return false;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa8330(undefined4 param_1,undefined4 *param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  
  iVar1 = FUN_00a877e0(*param_2);
  if (iVar1 == 0x390) {
    iVar1 = FUN_00aa8080();
    iVar2 = FUN_00aa8120(0xaa833a);
    if (iVar1 != 0) {
      FUN_00ad8890(iVar1);
    }
    FUN_00a895b0(0xaa833a);
    if (iVar2 == 0) {
      return 0;
    }
    if (param_3 == 0) {
      return 1;
    }
  }
  else if (param_3 == 0) {
    iVar1 = FUN_00a834a0(param_1,&DAT_030651b4);
    if (0 < iVar1) {
      return 1;
    }
    return 0;
  }
  uVar3 = FUN_00acd2d0(param_1,param_3,param_4);
  return uVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aa83f0(undefined4 param_1,undefined4 param_2,int param_3,undefined4 *param_4)

{
  undefined4 uVar1;
  int local_4;
  
  local_4 = 0;
  switch(param_2) {
  case 1:
    if (param_3 != 0) {
      return 1;
    }
    FUN_00ad7fb0(param_4,0,0,&local_4);
    break;
  case 2:
    if (param_3 != 0) {
      return 1;
    }
    FUN_00ad7fe0(param_4,&local_4);
    break;
  case 3:
    *param_4 = 0x40;
    return 1;
  default:
    return 0xfffffffe;
  case 5:
    if (param_3 != 0) {
      return 1;
    }
    FUN_00ad81e0(param_4,0,0,0,&local_4);
    break;
  case 7:
    if (param_3 != 0) {
      return 1;
    }
    FUN_00ad8a50(param_4,0,0,&local_4);
  }
  if (local_4 != 0) {
    uVar1 = FUN_00a87490(6,5,0);
    FUN_00a895d0(local_4,uVar1);
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00aa84f0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4,
            undefined4 param_5,undefined4 param_6)

{
  int iVar1;
  int *piVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 local_c;
  undefined4 *local_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  iVar1 = FUN_00a877e0(*param_4);
  if (iVar1 != 0x390) {
    FUN_00a7f3c0(4,0x9c,0x9b,".\\crypto\\rsa\\rsa_ameth.c",0x1d9);
    return 0xffffffff;
  }
  piVar2 = (int *)FUN_00aa8080();
  if (piVar2 == (int *)0x0) {
    FUN_00a7f3c0(4,0x9c,0x95,".\\crypto\\rsa\\rsa_ameth.c",0x1e1);
    goto LAB_00aa876e;
  }
  if ((undefined4 *)piVar2[1] == (undefined4 *)0x0) {
    iVar1 = FUN_00a924c0();
  }
  else {
    iVar1 = FUN_00a877e0(*(undefined4 *)piVar2[1]);
    if (iVar1 != 0x38f) {
      FUN_00a7f3c0(4,0x9c,0x99,".\\crypto\\rsa\\rsa_ameth.c",0x1e9);
      goto LAB_00aa876e;
    }
    if (local_8 == (undefined4 *)0x0) {
      FUN_00a7f3c0(4,0x9c,0x9a,".\\crypto\\rsa\\rsa_ameth.c",0x1ee);
      goto LAB_00aa876e;
    }
    uVar3 = FUN_00a877e0(*local_8);
    uVar3 = FUN_00a87520(uVar3);
    iVar1 = FUN_00a802c0(uVar3);
    if (iVar1 == 0) {
      FUN_00a7f3c0(4,0x9c,0x97,".\\crypto\\rsa\\rsa_ameth.c",500);
      goto LAB_00aa876e;
    }
  }
  if ((undefined4 *)*piVar2 == (undefined4 *)0x0) {
    iVar4 = FUN_00a924c0();
  }
  else {
    uVar3 = FUN_00a877e0(*(undefined4 *)*piVar2);
    uVar3 = FUN_00a87520(uVar3);
    iVar4 = FUN_00a802c0(uVar3);
    if (iVar4 == 0) {
      FUN_00a7f3c0(4,0x9c,0x98,".\\crypto\\rsa\\rsa_ameth.c",0x200);
      goto LAB_00aa876e;
    }
  }
  if (piVar2[2] == 0) {
    iVar5 = 0x14;
  }
  else {
    iVar5 = FUN_00a9db70(piVar2[2]);
    if (iVar5 < 0) {
      FUN_00a7f3c0(4,0x9c,0x96,".\\crypto\\rsa\\rsa_ameth.c",0x210);
      goto LAB_00aa876e;
    }
  }
  if ((piVar2[3] == 0) || (iVar6 = FUN_00a9db70(piVar2[3]), iVar6 == 1)) {
    iVar4 = FUN_00ad8ff0(param_1,&local_c,iVar4,0,param_6);
    if ((((iVar4 != 0) && (iVar4 = FUN_00a988b0(local_c,6,0xffffffff,0x1001,6,0), 0 < iVar4)) &&
        (iVar4 = FUN_00a988b0(local_c,6,0x18,0x1002,iVar5,0), 0 < iVar4)) &&
       (iVar1 = FUN_00a988b0(local_c,6,0xf8,0x1005,0,iVar1), 0 < iVar1)) {
      local_4 = 2;
    }
  }
  else {
    FUN_00a7f3c0(4,0x9c,0x8b,".\\crypto\\rsa\\rsa_ameth.c",0x21c);
  }
LAB_00aa876e:
  FUN_00ad8890(piVar2);
  if (local_8 != (undefined4 *)0x0) {
    FUN_00a895b0(local_8);
  }
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00aa87a0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  int *piVar5;
  undefined4 uVar6;
  int iVar7;
  int local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  int local_4;
  
  iVar4 = param_1;
  local_4 = 0xaa87aa;
  uVar6 = *(undefined4 *)(param_1 + 0x10);
  iVar7 = 0;
  iVar1 = FUN_00a988b0(uVar6,6,0xffffffff,0x1006,0,&local_4);
  if (iVar1 < 1) {
    return 0;
  }
  if ((local_4 == 1) || (local_4 != 6)) {
    return 2;
  }
  local_14 = 0;
  uVar2 = FUN_00a989a0(uVar6);
  local_8 = 0;
  uVar3 = FUN_00a92630(iVar4);
  iVar4 = FUN_00a988b0(uVar6,6,0xf8,0x1008,0,&local_10);
  if (iVar4 < 1) goto LAB_00aa8a05;
  iVar4 = FUN_00a988b0(uVar6,6,0x18,0x1007,0,&param_1);
  if (iVar4 == 0) goto LAB_00aa8a05;
  if (param_1 == -1) {
    param_1 = FUN_00a92600(uVar3);
  }
  else if (param_1 == -2) {
    iVar4 = FUN_00a92600(uVar3);
    param_1 = FUN_00a81360(uVar2);
    param_1 = param_1 + (-2 - iVar4);
    iVar4 = FUN_00a81340(uVar2);
    if ((iVar4 - 1U & 7) == 0) {
      param_1 = param_1 + -1;
    }
  }
  piVar5 = (int *)FUN_00ad8880();
  if (piVar5 == (int *)0x0) goto LAB_00aa8a05;
  if (param_1 == 0x14) {
LAB_00aa88d3:
    iVar4 = FUN_00a814c0(uVar3);
    if (iVar4 != 0x40) {
      iVar4 = FUN_00a895a0();
      *piVar5 = iVar4;
      if (iVar4 == 0) goto LAB_00aa89fc;
      FUN_00a896a0(iVar4,uVar3);
    }
    iVar4 = FUN_00a814c0(local_10);
    if (iVar4 == 0x40) {
LAB_00aa8972:
      uVar6 = FUN_00ad8850(&local_14);
      iVar1 = FUN_00ad9270(piVar5,uVar6);
      iVar4 = param_5;
      if (iVar1 != 0) {
        if (param_5 != 0) {
          iVar1 = FUN_00a911d0(local_14);
          if (iVar1 == 0) goto LAB_00aa89ef;
          uVar6 = FUN_00a87490(0x390,0x10,iVar1);
          FUN_00a895d0(iVar4,uVar6);
        }
        uVar6 = FUN_00a87490(0x390,0x10,local_14);
        FUN_00a895d0(param_4,uVar6);
        local_14 = 0;
        local_8 = 3;
      }
    }
    else {
      local_c = 0;
      iVar7 = FUN_00a895a0();
      FUN_00a896a0(iVar7,local_10);
      uVar6 = FUN_00a89570(&local_c);
      iVar4 = FUN_00ad9270(iVar7,uVar6);
      if (iVar4 != 0) {
        iVar4 = FUN_00a895a0();
        piVar5[1] = iVar4;
        if (iVar4 != 0) {
          uVar6 = FUN_00a87490(0x38f,0x10,local_c);
          FUN_00a895d0(piVar5[1],uVar6);
          goto LAB_00aa8972;
        }
      }
    }
LAB_00aa89ef:
    if (iVar7 != 0) {
      FUN_00a895b0(iVar7);
    }
  }
  else {
    iVar4 = FUN_00a887c0();
    piVar5[2] = iVar4;
    if (iVar4 != 0) {
      iVar4 = FUN_00a9da80(iVar4,param_1);
      if (iVar4 != 0) goto LAB_00aa88d3;
    }
  }
LAB_00aa89fc:
  FUN_00ad8890(piVar5);
LAB_00aa8a05:
  if (local_14 != 0) {
    FUN_00a90d80(local_14);
  }
  return local_8;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aa8a30(int param_1)

{
  int iVar1;
  int local_18 [5];
  undefined4 uStack_4;
  
  uStack_4 = 0xaa8a3a;
  if (param_1 - 1U < 8) {
    return param_1 + -1;
  }
  local_18[0] = param_1;
  if (DAT_032ed9a0 != 0) {
    iVar1 = FUN_00a81100(DAT_032ed9a0,local_18);
    if (iVar1 != -1) {
      return iVar1 + 8;
    }
  }
  return -1;
}



uint FUN_00aa8a80(undefined4 param_1,int param_2)

{
  FUN_00a92360(param_2,0xffffffff,0);
  return ((byte)~*(byte *)(param_2 + 0x28) & 0x20 | 0x10) >> 4;
}



undefined4 FUN_00aa8ab0(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  
  piVar1 = *(int **)(param_2 + 100);
  if (piVar1 == (int *)0x0) {
    return 3;
  }
  if (piVar1[1] != 0) {
    iVar4 = 0;
    iVar2 = FUN_00a80ed0(piVar1[1]);
    if (0 < iVar2) {
      do {
        uVar3 = FUN_00a80ee0(piVar1[1],iVar4);
        iVar2 = FUN_00a877e0(uVar3);
        if (iVar2 == param_1) {
          return 2;
        }
        iVar4 = iVar4 + 1;
        iVar2 = FUN_00a80ed0(piVar1[1]);
      } while (iVar4 < iVar2);
    }
  }
  if (*piVar1 != 0) {
    iVar4 = 0;
    iVar2 = FUN_00a80ed0(*piVar1);
    if (0 < iVar2) {
      do {
        uVar3 = FUN_00a80ee0(*piVar1,iVar4);
        iVar2 = FUN_00a877e0(uVar3);
        if (iVar2 == param_1) {
          return 1;
        }
        iVar4 = iVar4 + 1;
        iVar2 = FUN_00a80ed0(*piVar1);
      } while (iVar4 < iVar2);
    }
  }
  return 3;
}



undefined4 FUN_00aa8b70(undefined4 param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  undefined *puVar3;
  
  if (param_2 == -1) {
    return 1;
  }
  iVar1 = FUN_00aa8a30(param_2);
  if (iVar1 == -1) {
    uVar2 = (*(code *)PTR_FUN_03243150)(param_2,param_1,param_3);
    return uVar2;
  }
  if (iVar1 < 0) {
    puVar3 = (undefined *)0x0;
  }
  else if (iVar1 < 8) {
    puVar3 = &DAT_03243158 + iVar1 * 0x18;
  }
  else {
    puVar3 = (undefined *)FUN_00a80ee0(DAT_032ed9a0,iVar1 + -8);
  }
                    // WARNING: Could not recover jumptable at 0x00aa8bdf. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar2 = (**(code **)(puVar3 + 8))();
  return uVar2;
}



uint FUN_00aa8c70(int *param_1)

{
  byte *pbVar1;
  int iVar2;
  bool bVar3;
  uint uVar4;
  int iVar5;
  
  bVar3 = false;
  uVar4 = 0;
  if (param_1 == (int *)0x0) {
    return uVar4;
  }
  if (param_1[1] == 0x10a) {
    bVar3 = true;
  }
  else if (param_1[1] != 10) {
    return 0xffffffff;
  }
  iVar2 = *param_1;
  if (4 < iVar2) {
    return 0xffffffff;
  }
  if (param_1[2] == 0) {
    return 0;
  }
  iVar5 = 0;
  if (0 < iVar2) {
    do {
      pbVar1 = (byte *)(param_1[2] + iVar5);
      iVar5 = iVar5 + 1;
      uVar4 = uVar4 << 8 | (uint)*pbVar1;
    } while (iVar5 < iVar2);
  }
  if (bVar3) {
    uVar4 = -uVar4;
  }
  return uVar4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aa8d30(undefined4 param_1,undefined4 *param_2,undefined4 *param_3,undefined4 param_4,
                int param_5)

{
  code *pcVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int local_20;
  undefined4 local_1c;
  undefined local_18 [20];
  undefined4 uStack_4;
  
  iVar5 = param_5;
  uStack_4 = 0xaa8d3a;
  iVar6 = -1;
  local_20 = 0;
  if (param_5 == 0) {
    FUN_00a7f3c0(0xd,0xc5,0x43,".\\crypto\\asn1\\a_verify.c",0x91);
    return -1;
  }
  FUN_00a91330(local_18);
  uVar2 = FUN_00a877e0(*param_2,&param_5,&local_1c);
  iVar3 = FUN_00a882d0(uVar2);
  if (iVar3 == 0) {
    FUN_00a7f3c0(0xd,0xc5,199,".\\crypto\\asn1\\a_verify.c",0x9a);
    FUN_00a915c0(local_18);
    return -1;
  }
  if (param_5 == 0) {
    if ((*(int *)(iVar5 + 0xc) == 0) ||
       (pcVar1 = *(code **)(*(int *)(iVar5 + 0xc) + 100), pcVar1 == (code *)0x0)) {
      FUN_00a7f3c0(0xd,0xc5,199,".\\crypto\\asn1\\a_verify.c",0xa1);
      goto LAB_00aa8f7e;
    }
    iVar6 = (*pcVar1)(local_18,param_1,param_4,param_2,param_3,iVar5);
    if (iVar6 != 2) goto LAB_00aa8f7e;
LAB_00aa8ed9:
    iVar6 = -1;
    uVar2 = FUN_00a8ba30(param_4,&local_20,param_1);
    if (local_20 == 0) {
      FUN_00a7f3c0(0xd,0xc5,0x41,".\\crypto\\asn1\\a_verify.c",0xcc);
      goto LAB_00aa8f7e;
    }
    iVar5 = FUN_00a91530(local_18,local_20,uVar2);
    if (iVar5 == 0) {
      uVar2 = 0xd2;
    }
    else {
      FUN_00a84330(local_20,uVar2);
      FUN_00a85120(local_20);
      iVar5 = FUN_00ad9170(local_18,param_3[2],*param_3);
      if (0 < iVar5) {
        iVar6 = 1;
        goto LAB_00aa8f7e;
      }
      uVar2 = 0xdd;
    }
  }
  else {
    uVar2 = FUN_00a87520(param_5);
    iVar3 = FUN_00a802c0(uVar2);
    if (iVar3 == 0) {
      FUN_00a7f3c0(0xd,0xc5,0xa1,".\\crypto\\asn1\\a_verify.c",0xb4);
      goto LAB_00aa8f7e;
    }
    iVar4 = FUN_00a81480(local_1c);
    if (iVar4 != **(int **)(iVar5 + 0xc)) {
      FUN_00a7f3c0(0xd,0xc5,200,".\\crypto\\asn1\\a_verify.c",0xbb);
      goto LAB_00aa8f7e;
    }
    iVar5 = FUN_00ad8ff0(local_18,0,iVar3,0,iVar5);
    if (iVar5 != 0) goto LAB_00aa8ed9;
    uVar2 = 0xc1;
  }
  FUN_00a7f3c0(0xd,0xc5,6,".\\crypto\\asn1\\a_verify.c",uVar2);
  iVar6 = 0;
LAB_00aa8f7e:
  FUN_00a915c0(local_18);
  return iVar6;
}



void FUN_00aa8fa0(undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00a81170(param_1[1],param_1[2],*param_1,param_2);
  FUN_00aa8d30(uVar1);
  return;
}



void FUN_00aa8fd0(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00a81270(param_1,param_2);
  FUN_00ad97b0(uVar1);
  return;
}



void FUN_00aa8ff0(undefined4 param_1,undefined4 param_2)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00a8fb70(param_1,param_2);
  FUN_00ad97b0(uVar1);
  return;
}



void FUN_00aa9010(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00a81270(param_2,param_1,param_3,param_4);
  FUN_00ad99a0(uVar1);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int __fastcall FUN_00aa9070(int param_1_00,byte *param_2_00,int param_1,undefined4 param_2)

{
  int iVar1;
  code *unaff_EBX;
  uint local_4;
  
  local_4 = 0xaa907a;
  if (param_1_00 != 0) {
    do {
      if (param_1 == 0x1001) {
        local_4 = (uint)*param_2_00;
        param_2_00 = param_2_00 + 1;
        param_1_00 = param_1_00 + -1;
      }
      else if (param_1 == 0x1002) {
        local_4 = (uint)CONCAT11(*param_2_00,param_2_00[1]);
        param_2_00 = param_2_00 + 2;
        param_1_00 = param_1_00 + -2;
      }
      else if (param_1 == 0x1004) {
        local_4 = (uint)*param_2_00 << 0x18 | (uint)param_2_00[1] << 0x10 | (uint)param_2_00[2] << 8
                  | (uint)param_2_00[3];
        param_2_00 = param_2_00 + 4;
        param_1_00 = param_1_00 + -4;
      }
      else {
        iVar1 = FUN_00acce50(param_2_00,param_1_00,&local_4);
        if (iVar1 < 0) {
          return -1;
        }
        param_1_00 = param_1_00 - iVar1;
        param_2_00 = param_2_00 + iVar1;
      }
      if ((unaff_EBX != (code *)0x0) && (iVar1 = (*unaff_EBX)(local_4,param_2), iVar1 < 1)) {
        return iVar1;
      }
    } while (param_1_00 != 0);
  }
  return 1;
}



undefined4 FUN_00aa9220(uint param_1)

{
  char *pcVar1;
  
  if (0x7f < param_1) {
    return 0;
  }
  if ((((((int)param_1 < 0x61) || (0x7a < (int)param_1)) &&
       (((int)param_1 < 0x41 || (0x5a < (int)param_1)))) &&
      ((((int)param_1 < 0x30 || (0x39 < (int)param_1)) && (param_1 != 0x20)))) &&
     (pcVar1 = _strchr("\'()+,-./:=?",param_1), pcVar1 == (char *)0x0)) {
    return 0;
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aa92e0(uint **param_1,char *param_2,uint param_3,int param_4,uint param_5,int param_6,
                 int param_7)

{
  char cVar1;
  int iVar2;
  uint **ppuVar3;
  char *pcVar4;
  int iVar5;
  uint *puVar6;
  uint uVar7;
  uint uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined auStack_40 [3];
  char local_3d;
  uint local_3c;
  int local_38;
  undefined *local_34;
  char *local_30;
  uint local_2c;
  uint **local_28;
  undefined local_24 [32];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_40;
  local_28 = param_1;
  local_30 = param_2;
  local_3c = 0;
  local_34 = (undefined *)0x0;
  if (param_3 == 0xffffffff) {
    pcVar4 = param_2;
    do {
      cVar1 = *pcVar4;
      pcVar4 = pcVar4 + 1;
    } while (cVar1 != '\0');
    param_3 = (int)pcVar4 - (int)(param_2 + 1);
  }
  if (param_5 == 0) {
    param_5 = 0x2806;
  }
  switch(param_4) {
  case 0x1000:
    uVar7 = 0;
    for (uVar8 = param_3; uVar8 != 0; uVar8 = uVar8 - iVar5) {
      iVar5 = FUN_00acce50(param_2,uVar8,&local_38);
      if (iVar5 < 0) {
        uVar10 = 0x84;
        uVar9 = 0x86;
        goto LAB_00aa96ab;
      }
      param_2 = param_2 + iVar5;
      uVar7 = uVar7 + 1;
    }
    goto LAB_00aa93d2;
  case 0x1001:
    uVar7 = param_3;
LAB_00aa93d2:
    iVar2 = param_7;
    iVar5 = param_6;
    if ((0 < param_6) && ((int)uVar7 < param_6)) {
      FUN_00a7f3c0(0xd,0x7a,0x98,".\\crypto\\asn1\\a_mbstr.c",0x93);
      FUN_00a86220(local_24,0x20,&DAT_00d5efa0,iVar5);
      FUN_00a7f690(2,"minsize=",local_24);
      goto LAB_00aa96b7;
    }
    if ((0 < param_7) && (param_7 < (int)uVar7)) {
      FUN_00a7f3c0(0xd,0x7a,0x97,".\\crypto\\asn1\\a_mbstr.c",0x9a);
      FUN_00a86220(local_24,0x20,&DAT_00d5efa0,iVar2);
      FUN_00a7f690(2,"maxsize=",local_24);
      goto LAB_00aa96b7;
    }
    iVar5 = FUN_00aa9070(param_4,&param_5);
    ppuVar3 = local_28;
    if (iVar5 < 0) {
      uVar10 = 0xa2;
      uVar9 = 0x7c;
    }
    else {
      local_38 = 0x1001;
      if ((param_5 & 2) == 0) {
        if ((param_5 & 0x10) == 0) {
          if ((param_5 & 4) == 0) {
            if ((param_5 & 0x800) == 0) {
              if ((param_5 & 0x100) == 0) {
                uVar8 = 0xc;
                local_38 = 0x1000;
              }
              else {
                uVar8 = 0x1c;
                local_38 = 0x1004;
              }
            }
            else {
              uVar8 = 0x1e;
              local_38 = 0x1002;
            }
          }
          else {
            uVar8 = 0x14;
          }
        }
        else {
          uVar8 = 0x16;
        }
      }
      else {
        uVar8 = 0x13;
      }
      if (local_28 == (uint **)0x0) goto LAB_00aa9687;
      puVar6 = *local_28;
      if (puVar6 == (uint *)0x0) {
        local_3d = '\x01';
        puVar6 = (uint *)FUN_00a90d30(uVar8);
        if (puVar6 == (uint *)0x0) {
          uVar10 = 0xc5;
          uVar9 = 0x41;
          break;
        }
        *ppuVar3 = puVar6;
      }
      else {
        local_3d = '\0';
        if (puVar6[2] != 0) {
          *puVar6 = 0;
          FUN_00a85120(puVar6[2]);
          puVar6[2] = 0;
        }
        puVar6[1] = uVar8;
      }
      if (param_4 == local_38) {
        iVar5 = FUN_00a90c30(puVar6,local_30,param_3);
        if (iVar5 != 0) {
LAB_00aa9687:
          ___security_check_cookie_4();
          return;
        }
        uVar10 = 0xcd;
        uVar9 = 0x41;
      }
      else {
        switch(local_38) {
        case 0x1000:
          local_3c = 0;
          FUN_00aa9070(param_4,&local_3c);
          local_34 = &LAB_00aa91f0;
          break;
        case 0x1001:
          local_34 = &LAB_00aa9180;
          local_3c = uVar7;
          break;
        case 0x1002:
          local_34 = &LAB_00aa91a0;
          local_3c = uVar7 * 2;
          break;
        case 0x1004:
          local_34 = &LAB_00aa91c0;
          local_3c = uVar7 * 4;
        }
        local_2c = FUN_00a84f80(local_3c + 1,".\\crypto\\asn1\\a_mbstr.c",0xea);
        if (local_2c != 0) {
          *puVar6 = local_3c;
          puVar6[2] = local_2c;
          *(undefined *)(local_2c + local_3c) = 0;
          FUN_00aa9070(param_4,&local_2c);
          goto LAB_00aa9687;
        }
        if (local_3d != '\0') {
          FUN_00a90d80(puVar6);
        }
        uVar10 = 0xec;
        uVar9 = 0x41;
      }
    }
    break;
  case 0x1002:
    if ((param_3 & 1) == 0) {
      uVar7 = (int)param_3 >> 1;
      goto LAB_00aa93d2;
    }
    uVar10 = 0x6f;
    uVar9 = 0x81;
    break;
  default:
    uVar10 = 0x8e;
    uVar9 = 0xa0;
    break;
  case 0x1004:
    if ((param_3 & 3) == 0) {
      uVar7 = (int)param_3 >> 2;
      goto LAB_00aa93d2;
    }
    uVar10 = 0x78;
    uVar9 = 0x85;
  }
LAB_00aa96ab:
  FUN_00a7f3c0(0xd,0x7a,uVar9,".\\crypto\\asn1\\a_mbstr.c",uVar10);
LAB_00aa96b7:
  ___security_check_cookie_4();
  return;
}



void FUN_00aa9700(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  FUN_00aa92e0(param_1,param_2,param_3,param_4,param_5,0,0);
  return;
}



void FUN_00aa9730(undefined4 param_1)

{
  FUN_00a98620(&DAT_032ed9a4,param_1);
  return;
}



int FUN_00aa9750(int param_1,undefined4 param_2)

{
  int iVar1;
  
  if (*(code **)(param_1 + 0x28) != (code *)0x0) {
    iVar1 = (**(code **)(param_1 + 0x28))(param_1,&param_1,0,param_2);
    if (iVar1 != 0) {
      return param_1;
    }
  }
  FUN_00a7f3c0(0x26,0xba,0x93,".\\crypto\\engine\\tb_digest.c",0x7e);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00aa97a0(int param_1,int param_2,int param_3,undefined4 param_4,int *param_5,int param_6)

{
  code *pcVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int *local_28;
  int *local_24;
  undefined4 local_20;
  undefined4 local_1c;
  int local_18 [2];
  int local_10 [2];
  int local_8;
  undefined4 uStack_4;
  
  iVar4 = param_6;
  uStack_4 = 0xaa97aa;
  if (((*(byte *)(param_6 + 0x3c) & 0x40) != 0) &&
     (pcVar1 = *(code **)(*(int *)(param_6 + 8) + 0x2c), pcVar1 != (code *)0x0)) {
    uVar2 = (*pcVar1)(param_1,param_2,param_3,param_4,param_5,param_6);
    return uVar2;
  }
  if (param_1 == 0x72) {
    iVar6 = 0x24;
    if (param_3 != 0x24) {
      FUN_00a7f3c0(4,0x75,0x83,".\\crypto\\rsa\\rsa_sign.c",0x60);
      return 0;
    }
  }
  else {
    local_28 = local_18;
    iVar6 = FUN_00a87490(param_1);
    *local_28 = iVar6;
    if (*local_28 == 0) {
      FUN_00a7f3c0(4,0x75,0x75,".\\crypto\\rsa\\rsa_sign.c",0x6a);
      return 0;
    }
    if (*(int *)(*local_28 + 0xc) == 0) {
      FUN_00a7f3c0(4,0x75,0x74,".\\crypto\\rsa\\rsa_sign.c",0x6f);
      return 0;
    }
    local_20 = 5;
    local_1c = 0;
    local_28[1] = (int)&local_20;
    local_24 = local_10;
    local_8 = param_2;
    local_10[0] = param_3;
    iVar6 = FUN_00a94030(&local_28,0);
    param_2 = 0;
  }
  iVar3 = FUN_00ad1210(iVar4);
  if (iVar3 + -0xb < iVar6) {
    FUN_00a7f3c0(4,0x75,0x70,".\\crypto\\rsa\\rsa_sign.c",0x7f);
    return 0;
  }
  iVar5 = 0;
  if (param_1 != 0x72) {
    param_2 = FUN_00a84f80(iVar3 + 1,".\\crypto\\rsa\\rsa_sign.c",0x83);
    if (param_2 == 0) {
      FUN_00a7f3c0(4,0x75,0x41,".\\crypto\\rsa\\rsa_sign.c",0x86);
      return 0;
    }
    param_6 = param_2;
    FUN_00a94030(&local_28,&param_6);
    iVar5 = param_2;
  }
  iVar4 = FUN_00ad1240(iVar6,param_2,param_4,iVar4,1);
  if (0 < iVar4) {
    *param_5 = iVar4;
  }
  if (param_1 != 0x72) {
    FUN_00a84330(iVar5,iVar3 + 1);
    FUN_00a85120(iVar5);
  }
  return (uint)(0 < iVar4);
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00aa99b0(int param_1,int *param_2,uint param_3,undefined4 *param_4,int *param_5,
            undefined4 param_6,int param_7,undefined4 param_8)

{
  int iVar1;
  char *pcVar2;
  int *piVar3;
  uint uVar4;
  int *piVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  char *_Format;
  undefined4 local_c;
  char *pcStack_4;
  
  pcStack_4 = (char *)0xaa99ba;
  local_c = 0;
  iVar1 = FUN_00ad1210(param_8);
  if (param_7 != iVar1) {
    FUN_00a7f3c0(4,0x91,0x77,".\\crypto\\rsa\\rsa_sign.c",0xaf);
    return 0;
  }
  if ((param_1 == 0x72) && (param_4 != (undefined4 *)0x0)) {
    iVar1 = FUN_00ad1260(param_7,param_6,param_4,param_8,1);
    if (0 < iVar1) {
      *param_5 = iVar1;
      return 1;
    }
    return 0;
  }
  pcVar2 = (char *)FUN_00a84f80(param_7,".\\crypto\\rsa\\rsa_sign.c",0xbd);
  if (pcVar2 == (char *)0x0) {
    FUN_00a7f3c0(4,0x91,0x41,".\\crypto\\rsa\\rsa_sign.c",0xc0);
    return 0;
  }
  if ((param_1 == 0x72) && (param_3 != 0x24)) {
    FUN_00a7f3c0(4,0x91,0x83,".\\crypto\\rsa\\rsa_sign.c",0xc4);
    goto LAB_00aa9d31;
  }
  iVar1 = FUN_00ad1260(param_7,param_6,pcVar2,param_8,1);
  if (iVar1 < 1) goto LAB_00aa9d31;
  if (param_1 == 0x5f) {
    if (((iVar1 == 0x12) && (*pcVar2 == '\x04')) && (uVar4 = 0x10, pcVar2[1] == '\x10')) {
      if (param_4 == (undefined4 *)0x0) {
        piVar3 = (int *)(pcVar2 + 2);
        iVar6 = (int)param_2 - (int)piVar3;
        do {
          if (*(int *)(iVar6 + (int)piVar3) != *piVar3) {
            FUN_00a7f3c0(4,0x91,0x68,".\\crypto\\rsa\\rsa_sign.c",0xd6);
            goto LAB_00aa9b1d;
          }
          uVar4 = uVar4 - 4;
          piVar3 = piVar3 + 1;
        } while (3 < uVar4);
      }
      else {
        *param_4 = *(undefined4 *)(pcVar2 + 2);
        param_4[1] = *(undefined4 *)(pcVar2 + 6);
        param_4[2] = *(undefined4 *)(pcVar2 + 10);
        param_4[3] = *(undefined4 *)(pcVar2 + 0xe);
        *param_5 = 0x10;
      }
      local_c = 1;
    }
  }
  else if (param_1 == 0x72) {
    if (iVar1 == 0x24) {
      iVar1 = (int)pcVar2 - (int)param_2;
      uVar4 = 0x24;
      do {
        if (*(int *)(iVar1 + (int)param_2) != *param_2) goto LAB_00aa9bc4;
        uVar4 = uVar4 - 4;
        param_2 = param_2 + 1;
      } while (3 < uVar4);
      local_c = 1;
    }
    else {
LAB_00aa9bc4:
      FUN_00a7f3c0(4,0x91,0x68,".\\crypto\\rsa\\rsa_sign.c",0xde);
    }
    goto LAB_00aa9d31;
  }
LAB_00aa9b1d:
  pcStack_4 = pcVar2;
  piVar3 = (int *)FUN_00a94010(0,&pcStack_4,iVar1);
  if (piVar3 == (int *)0x0) goto LAB_00aa9d31;
  if (pcStack_4 == pcVar2 + iVar1) {
    if ((*(int *)(*piVar3 + 4) != 0) && (iVar1 = FUN_00a9d4e0(*(int *)(*piVar3 + 4)), iVar1 != 5)) {
      uVar8 = 0xf2;
      goto LAB_00aa9d0e;
    }
    iVar1 = FUN_00a877e0(*(undefined4 *)*piVar3);
    if (iVar1 != param_1) {
      if (param_1 == 4) {
        if (iVar1 == 8) {
LAB_00aa9c41:
          _Format = "signature has problems, re-make with post SSLeay045\n";
          iVar1 = FUN_00a475e9();
          _fprintf((FILE *)(iVar1 + 0x40),_Format);
          goto LAB_00aa9c57;
        }
      }
      else if ((param_1 == 3) && (iVar1 == 7)) goto LAB_00aa9c41;
      uVar8 = 0x10d;
      uVar7 = 100;
      goto LAB_00aa9d15;
    }
LAB_00aa9c57:
    if (param_4 == (undefined4 *)0x0) {
      if (*(uint *)piVar3[1] == param_3) {
        piVar5 = (int *)((uint *)piVar3[1])[2];
        if (3 < param_3) {
          do {
            if (*param_2 != *piVar5) goto LAB_00aa9d09;
            param_3 = param_3 - 4;
            piVar5 = piVar5 + 1;
            param_2 = param_2 + 1;
          } while (3 < param_3);
        }
        if ((param_3 == 0) ||
           ((*(char *)piVar5 == *(char *)param_2 &&
            ((param_3 < 2 ||
             ((*(char *)((int)piVar5 + 1) == *(char *)((int)param_2 + 1) &&
              ((param_3 < 3 || (*(char *)((int)piVar5 + 2) == *(char *)((int)param_2 + 2)))))))))))
        goto LAB_00aa9cb0;
      }
LAB_00aa9d09:
      uVar8 = 0x123;
      goto LAB_00aa9d0e;
    }
    uVar8 = FUN_00a87520(param_1);
    iVar1 = FUN_00a802c0(uVar8);
    if ((iVar1 != 0) && (iVar1 = FUN_00a92600(iVar1), iVar1 != *(int *)piVar3[1])) {
      uVar8 = 0x117;
      uVar7 = 0x8f;
      goto LAB_00aa9d15;
    }
    _memcpy(param_4,(void *)((size_t *)piVar3[1])[2],*(size_t *)piVar3[1]);
    *param_5 = *(int *)piVar3[1];
LAB_00aa9cb0:
    local_c = 1;
  }
  else {
    uVar8 = 0xe9;
LAB_00aa9d0e:
    uVar7 = 0x68;
LAB_00aa9d15:
    FUN_00a7f3c0(4,0x91,uVar7,".\\crypto\\rsa\\rsa_sign.c",uVar8);
  }
  FUN_00a94050(piVar3);
LAB_00aa9d31:
  FUN_00a84330(pcVar2,param_7);
  FUN_00a85120(pcVar2);
  return local_c;
}



void FUN_00aa9d60(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,int param_6)

{
  code *UNRECOVERED_JUMPTABLE;
  
  if (((*(byte *)(param_6 + 0x3c) & 0x40) != 0) &&
     (UNRECOVERED_JUMPTABLE = *(code **)(*(int *)(param_6 + 8) + 0x30),
     UNRECOVERED_JUMPTABLE != (code *)0x0)) {
                    // WARNING: Could not recover jumptable at 0x00aa9d78. Too many branches
                    // WARNING: Treating indirect jump as call
    (*UNRECOVERED_JUMPTABLE)();
    return;
  }
  FUN_00aa99b0(param_1,param_2,param_3,0,0,param_4,param_5,param_6);
  return;
}



undefined4 FUN_00aa9db0(int param_1,void *param_2,size_t param_3)

{
  void *_Dst;
  int iVar1;
  size_t _Size;
  uint uVar2;
  
  if (param_3 != 0) {
    uVar2 = *(uint *)(param_1 + 0x10) + param_3 * 8;
    if (uVar2 < *(uint *)(param_1 + 0x10)) {
      *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + 1;
    }
    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + (param_3 >> 0x1d);
    iVar1 = *(int *)(param_1 + 0x58);
    *(uint *)(param_1 + 0x10) = uVar2;
    if (iVar1 != 0) {
      _Dst = (void *)(param_1 + 0x18);
      if ((param_3 < 0x40) && (iVar1 + param_3 < 0x40)) {
        _memcpy((void *)((int)_Dst + iVar1),param_2,param_3);
        *(int *)(param_1 + 0x58) = *(int *)(param_1 + 0x58) + param_3;
        return 1;
      }
      _Size = 0x40 - iVar1;
      _memcpy((void *)(iVar1 + (int)_Dst),param_2,_Size);
      FUN_00ad9a40(param_1,_Dst,1);
      param_2 = (void *)(_Size + (int)param_2);
      param_3 = param_3 - _Size;
      *(undefined4 *)(param_1 + 0x58) = 0;
      _memset(_Dst,0,0x40);
    }
    uVar2 = param_3 >> 6;
    if (uVar2 != 0) {
      FUN_00ad9a40(param_1,param_2,uVar2);
      param_2 = (void *)((int)param_2 + uVar2 * 0x40);
      param_3 = param_3 + uVar2 * -0x40;
    }
    if (param_3 != 0) {
      *(size_t *)(param_1 + 0x58) = param_3;
      _memcpy((void *)(param_1 + 0x18),param_2,param_3);
    }
  }
  return 1;
}



undefined4 FUN_00aa9eb0(undefined *param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  
  iVar2 = param_2[0x16];
  puVar1 = param_2 + 6;
  *(undefined *)(iVar2 + (int)puVar1) = 0x80;
  uVar4 = iVar2 + 1;
  if (0x38 < uVar4) {
    _memset((void *)(uVar4 + (int)puVar1),0,0x40 - uVar4);
    uVar4 = 0;
    FUN_00ad9a40(param_2,puVar1,1);
  }
  _memset((void *)(uVar4 + (int)puVar1),0,0x38 - uVar4);
  *(undefined *)(param_2 + 0x14) = *(undefined *)(param_2 + 4);
  *(undefined *)((int)param_2 + 0x51) = *(undefined *)((int)param_2 + 0x11);
  *(undefined *)((int)param_2 + 0x52) = *(undefined *)((int)param_2 + 0x12);
  *(undefined *)((int)param_2 + 0x53) = *(undefined *)((int)param_2 + 0x13);
  *(undefined *)(param_2 + 0x15) = *(undefined *)(param_2 + 5);
  *(undefined *)((int)param_2 + 0x55) = *(undefined *)((int)param_2 + 0x15);
  *(undefined *)((int)param_2 + 0x56) = *(undefined *)((int)param_2 + 0x16);
  *(undefined *)((int)param_2 + 0x57) = *(undefined *)((int)param_2 + 0x17);
  FUN_00ad9a40(param_2,param_2 + 6,1);
  param_2[0x16] = 0;
  _memset(param_2 + 6,0,0x40);
  uVar3 = *param_2;
  *param_1 = (char)uVar3;
  param_1[1] = (char)((uint)uVar3 >> 8);
  param_1[2] = (char)((uint)uVar3 >> 0x10);
  param_1[3] = (char)((uint)uVar3 >> 0x18);
  uVar3 = param_2[1];
  param_1[4] = (char)uVar3;
  param_1[5] = (char)((uint)uVar3 >> 8);
  param_1[6] = (char)((uint)uVar3 >> 0x10);
  param_1[7] = (char)((uint)uVar3 >> 0x18);
  uVar3 = param_2[2];
  param_1[8] = (char)uVar3;
  param_1[9] = (char)((uint)uVar3 >> 8);
  param_1[10] = (char)((uint)uVar3 >> 0x10);
  param_1[0xb] = (char)((uint)uVar3 >> 0x18);
  uVar3 = param_2[3];
  param_1[0xc] = (char)uVar3;
  param_1[0xd] = (char)((uint)uVar3 >> 8);
  param_1[0xe] = (char)((uint)uVar3 >> 0x10);
  param_1[0xf] = (char)((uint)uVar3 >> 0x18);
  return 1;
}



void FUN_00aa9fe0(int param_1)

{
  if (param_1 == 0) {
    return;
  }
  FUN_00a80ed0();
  return;
}



int FUN_00aaa000(int param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  
  if (param_1 == 0) {
    return -1;
  }
  param_3 = param_3 + 1;
  if (param_3 < 0) {
    param_3 = 0;
  }
  iVar1 = FUN_00a80ed0(param_1);
  while( true ) {
    if (iVar1 <= param_3) {
      return -1;
    }
    puVar2 = (undefined4 *)FUN_00a80ee0(param_1,param_3);
    iVar3 = FUN_00a90180(*puVar2,param_2);
    if (iVar3 == 0) break;
    param_3 = param_3 + 1;
  }
  return param_3;
}



undefined4 FUN_00aaa060(int param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  if (param_1 != 0) {
    iVar1 = FUN_00a80ed0(param_1);
    if ((param_2 < iVar1) && (-1 < param_2)) {
      uVar2 = FUN_00a80ee0(param_1,param_2);
      return uVar2;
    }
  }
  return 0;
}



int FUN_00aaa090(int param_1)

{
  if (param_1 == 0) {
    return param_1;
  }
  return *(int *)(param_1 + 8);
}



uint FUN_00aaa0a0(uint param_1)

{
  if (param_1 == 0) {
    return param_1;
  }
  return (uint)(0 < *(int *)(param_1 + 4));
}



void FUN_00aaa0e0(void)

{
  FUN_00a8bf10(&DAT_00dbe4cc);
  return;
}



void FUN_00aaa0f0(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00dbe4cc);
  return;
}



void FUN_00aaa120(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00dbe568);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aaa180(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  byte *pbVar5;
  byte *pbVar6;
  byte *pbVar7;
  char *pcVar8;
  int iVar9;
  bool bVar10;
  
  iVar2 = FUN_00a8bf10(&DAT_00dbe568);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x22,0x66,0x41,".\\crypto\\x509v3\\v3_bcons.c",0x68);
    return 0;
  }
  iVar9 = 0;
  iVar3 = FUN_00a80ed0(param_3);
  if (0 < iVar3) {
    do {
      puVar4 = (undefined4 *)FUN_00a80ee0(param_3,iVar9);
      pbVar6 = (byte *)puVar4[1];
      pbVar7 = &DAT_00dbe584;
      pbVar5 = pbVar6;
      do {
        bVar1 = *pbVar5;
        bVar10 = bVar1 < *pbVar7;
        if (bVar1 != *pbVar7) {
LAB_00aaa210:
          iVar3 = (1 - (uint)bVar10) - (uint)(bVar10 != 0);
          goto LAB_00aaa215;
        }
        if (bVar1 == 0) break;
        bVar1 = pbVar5[1];
        bVar10 = bVar1 < pbVar7[1];
        if (bVar1 != pbVar7[1]) goto LAB_00aaa210;
        pbVar5 = pbVar5 + 2;
        pbVar7 = pbVar7 + 2;
      } while (bVar1 != 0);
      iVar3 = 0;
LAB_00aaa215:
      if (iVar3 == 0) {
        iVar3 = FUN_00aa0660(puVar4,iVar2);
      }
      else {
        pcVar8 = "pathlen";
        do {
          bVar1 = *pbVar6;
          bVar10 = bVar1 < (byte)*pcVar8;
          if (bVar1 != *pcVar8) {
LAB_00aaa250:
            iVar3 = (1 - (uint)bVar10) - (uint)(bVar10 != 0);
            goto LAB_00aaa255;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar6[1];
          bVar10 = bVar1 < ((byte *)pcVar8)[1];
          if (bVar1 != ((byte *)pcVar8)[1]) goto LAB_00aaa250;
          pbVar6 = pbVar6 + 2;
          pcVar8 = (char *)((byte *)pcVar8 + 2);
        } while (bVar1 != 0);
        iVar3 = 0;
LAB_00aaa255:
        if (iVar3 != 0) {
          FUN_00a7f3c0(0x22,0x66,0x6a,".\\crypto\\x509v3\\v3_bcons.c",0x72);
          FUN_00a7f690(6,"section:",*puVar4,",name:",puVar4[1],",value:",puVar4[2]);
          goto LAB_00aaa2c2;
        }
        iVar3 = FUN_00aa0950(puVar4,iVar2 + 4);
      }
      if (iVar3 == 0) {
LAB_00aaa2c2:
        FUN_00a8c2c0(iVar2,&DAT_00dbe568);
        return 0;
      }
      iVar9 = iVar9 + 1;
      iVar3 = FUN_00a80ed0(param_3);
    } while (iVar9 < iVar3);
  }
  return iVar2;
}



undefined4 FUN_00aaa3e0(undefined *param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  
  iVar2 = param_2[0x17];
  puVar1 = param_2 + 7;
  *(undefined *)(iVar2 + (int)puVar1) = 0x80;
  uVar4 = iVar2 + 1;
  if (0x38 < uVar4) {
    _memset((void *)(uVar4 + (int)puVar1),0,0x40 - uVar4);
    uVar4 = 0;
    FUN_00ada100(param_2,puVar1,1);
  }
  _memset((void *)(uVar4 + (int)puVar1),0,0x38 - uVar4);
  *(undefined *)(param_2 + 0x15) = *(undefined *)((int)param_2 + 0x1b);
  *(undefined *)((int)param_2 + 0x55) = *(undefined *)((int)param_2 + 0x1a);
  *(undefined *)((int)param_2 + 0x56) = *(undefined *)((int)param_2 + 0x19);
  *(undefined *)((int)param_2 + 0x57) = *(undefined *)(param_2 + 6);
  *(undefined *)(param_2 + 0x16) = *(undefined *)((int)param_2 + 0x17);
  *(undefined *)((int)param_2 + 0x59) = *(undefined *)((int)param_2 + 0x16);
  *(undefined *)((int)param_2 + 0x5a) = *(undefined *)((int)param_2 + 0x15);
  *(undefined *)((int)param_2 + 0x5b) = *(undefined *)(param_2 + 5);
  FUN_00ada100(param_2,param_2 + 7,1);
  param_2[0x17] = 0;
  _memset(param_2 + 7,0,0x40);
  uVar3 = *param_2;
  *param_1 = (char)((uint)uVar3 >> 0x18);
  param_1[1] = (char)((uint)uVar3 >> 0x10);
  param_1[2] = (char)((uint)uVar3 >> 8);
  param_1[3] = (char)uVar3;
  uVar3 = param_2[1];
  param_1[4] = (char)((uint)uVar3 >> 0x18);
  param_1[5] = (char)((uint)uVar3 >> 0x10);
  param_1[6] = (char)((uint)uVar3 >> 8);
  param_1[7] = (char)uVar3;
  uVar3 = param_2[2];
  param_1[8] = (char)((uint)uVar3 >> 0x18);
  param_1[9] = (char)((uint)uVar3 >> 0x10);
  param_1[10] = (char)((uint)uVar3 >> 8);
  param_1[0xb] = (char)uVar3;
  uVar3 = param_2[3];
  param_1[0xc] = (char)((uint)uVar3 >> 0x18);
  param_1[0xd] = (char)((uint)uVar3 >> 0x10);
  param_1[0xe] = (char)((uint)uVar3 >> 8);
  param_1[0xf] = (char)uVar3;
  uVar3 = param_2[4];
  param_1[0x10] = (char)((uint)uVar3 >> 0x18);
  param_1[0x11] = (char)((uint)uVar3 >> 0x10);
  param_1[0x12] = (char)((uint)uVar3 >> 8);
  param_1[0x13] = (char)uVar3;
  return 1;
}



undefined4 FUN_00aaa530(undefined4 *param_1)

{
  _memset(param_1,0,0x60);
  *param_1 = 0x67452301;
  param_1[1] = 0xefcdab89;
  param_1[2] = 0x98badcfe;
  param_1[3] = 0x10325476;
  param_1[4] = 0xc3d2e1f0;
  return 1;
}



undefined4 FUN_00aaa570(undefined4 *param_1)

{
  *param_1 = 0xc1059ed8;
  param_1[1] = 0xcbbb9d5d;
  param_1[2] = 0x367cd507;
  param_1[3] = 0x629a292a;
  param_1[4] = 0x3070dd17;
  param_1[5] = 0x9159015a;
  param_1[6] = 0xf70e5939;
  param_1[7] = 0x152fecd8;
  param_1[8] = 0xffc00b31;
  param_1[9] = 0x67332667;
  param_1[10] = 0x68581511;
  param_1[0xb] = 0x8eb44a87;
  param_1[0xc] = 0x64f98fa7;
  param_1[0xd] = 0xdb0c2e0d;
  param_1[0xe] = 0xbefa4fa4;
  param_1[0xf] = 0x47b5481d;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x34] = 0;
  param_1[0x35] = 0x30;
  return 1;
}



undefined4 FUN_00aaa610(undefined4 *param_1)

{
  *param_1 = 0xf3bcc908;
  param_1[1] = 0x6a09e667;
  param_1[2] = 0x84caa73b;
  param_1[3] = 0xbb67ae85;
  param_1[4] = 0xfe94f82b;
  param_1[5] = 0x3c6ef372;
  param_1[6] = 0x5f1d36f1;
  param_1[7] = 0xa54ff53a;
  param_1[8] = 0xade682d1;
  param_1[9] = 0x510e527f;
  param_1[10] = 0x2b3e6c1f;
  param_1[0xb] = 0x9b05688c;
  param_1[0xc] = 0xfb41bd6b;
  param_1[0xd] = 0x1f83d9ab;
  param_1[0xe] = 0x137e2179;
  param_1[0xf] = 0x5be0cd19;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x34] = 0;
  param_1[0x35] = 0x40;
  return 1;
}



undefined4 FUN_00aaac60(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_00a90d30(4);
  if (iVar1 != 0) {
    iVar2 = FUN_00a90c30(iVar1,param_2,param_3);
    if (iVar2 != 0) {
      FUN_00a9d500(param_1,4,iVar1);
      return 1;
    }
  }
  return 0;
}



size_t FUN_00aaacb0(int *param_1,void *param_2,size_t param_3)

{
  size_t sVar1;
  
  if ((*param_1 == 4) && (param_1[1] != 0)) {
    sVar1 = *(size_t *)param_1[1];
    if ((int)sVar1 < (int)param_3) {
      param_3 = sVar1;
    }
    _memcpy(param_2,(void *)((size_t *)param_1[1])[2],param_3);
    return sVar1;
  }
  FUN_00a7f3c0(0xd,0x87,0x6d,".\\crypto\\asn1\\evp_asn1.c",0x53);
  return 0xffffffff;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aaad10(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int iVar5;
  undefined4 local_48;
  undefined4 local_44 [2];
  undefined *local_3c;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined local_24 [32];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_48;
  local_3c = local_24;
  local_2c = param_3;
  local_44[0] = 0x20;
  local_30 = 4;
  local_34 = param_4;
  FUN_00a9da80(local_44,param_2);
  iVar1 = FUN_00a887a0(local_44,0);
  iVar2 = FUN_00addad0(&local_34,0,4,0);
  uVar3 = FUN_00a90b80(1,iVar1 + iVar2,0x10);
  puVar4 = (undefined4 *)FUN_00a91170();
  if (puVar4 != (undefined4 *)0x0) {
    iVar5 = FUN_00a90c30(puVar4,0,uVar3);
    if (iVar5 != 0) {
      local_48 = puVar4[2];
      *puVar4 = uVar3;
      FUN_00a90fd0(&local_48,1,iVar1 + iVar2,0x10,0);
      FUN_00a887a0(local_44,&local_48);
      FUN_00addad0(&local_34,&local_48,4,0);
      FUN_00a9d500(param_1,0x10,puVar4);
      ___security_check_cookie_4();
      return;
    }
    FUN_00a90d80(puVar4);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

size_t FUN_00aaae30(int *param_1,undefined4 *param_2,void *param_3,size_t param_4)

{
  int **ppiVar1;
  undefined4 *puVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  size_t _Size;
  int iVar6;
  size_t *psVar7;
  size_t sVar8;
  int local_30;
  int *local_2c;
  uint local_28;
  undefined4 local_24;
  byte local_20;
  int local_14;
  int local_10;
  int *local_c;
  undefined4 *local_8;
  undefined4 local_4;
  
  local_4 = 0xaaae3a;
  sVar8 = 0xffffffff;
  iVar6 = 0;
  psVar7 = (size_t *)0x0;
  if ((*param_1 == 0x10) && (param_1[1] != 0)) {
    ppiVar1 = (int **)(param_1 + 1);
    param_1 = (int *)(*ppiVar1)[2];
    local_30 = **ppiVar1;
    local_10 = local_30 + (int)param_1;
    local_8 = &param_1;
    local_24 = 0x6d;
    local_2c = param_1;
    iVar3 = FUN_00a910a0(&local_2c,&local_30);
    if (iVar3 == 0) {
      local_4 = 0xa0;
    }
    else {
      local_c = local_2c;
      iVar6 = FUN_00a88780(0,&local_2c,local_14);
      if (iVar6 != 0) {
        local_14 = (int)local_c + (local_14 - (int)local_2c);
        local_c = local_2c;
        psVar7 = (size_t *)FUN_00a88890(0,&local_2c,local_14);
        if (psVar7 != (size_t *)0x0) {
          local_14 = (int)local_c + (local_14 - (int)local_2c);
          if ((local_20 & 1) == 0) {
            uVar4 = (uint)(local_14 < 1);
          }
          else {
            uVar4 = FUN_00a90aa0(&local_2c,local_14);
            local_28 = uVar4;
          }
          puVar2 = param_2;
          if (uVar4 != 0) {
            if (param_2 != (undefined4 *)0x0) {
              uVar5 = FUN_00a9db70(iVar6);
              *puVar2 = uVar5;
            }
            sVar8 = *psVar7;
            _Size = param_4;
            if ((int)sVar8 < (int)param_4) {
              _Size = sVar8;
            }
            if (param_3 != (void *)0x0) {
              _memcpy(param_3,(void *)psVar7[2],_Size);
            }
            goto LAB_00aaaeb5;
          }
        }
      }
    }
  }
  FUN_00a7f3c0(0xd,0x86,0x6d,".\\crypto\\asn1\\evp_asn1.c",0xb7);
LAB_00aaaeb5:
  if (psVar7 != (size_t *)0x0) {
    FUN_00a90d80(psVar7);
  }
  if (iVar6 != 0) {
    FUN_00a90d80(iVar6);
  }
  return sVar8;
}



uint FUN_00aaafb0(void)

{
  return -(uint)(DAT_032eda18 != '\0') & 0x32eda18;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aaafd0(undefined4 param_1,undefined4 param_2,int param_3,undefined1 *param_4,int param_5)

{
  undefined4 uVar1;
  int iVar2;
  undefined local_204 [512];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_204;
  if ((param_4 == (undefined1 *)0x0) && (DAT_032eda18 != '\0')) {
    param_4 = &DAT_032eda18;
  }
  uVar1 = FUN_00ade180();
  iVar2 = param_3;
  if (0x1ff < param_3) {
    iVar2 = 0x1ff;
  }
  FUN_00addd00(uVar1,param_4,0,param_1,param_2,iVar2);
  if (param_5 != 0) {
    if (0x1ff < param_3) {
      param_3 = 0x1ff;
    }
    FUN_00addd40(uVar1,param_4,0,local_204,param_2,param_3,param_1);
  }
  FUN_00adddf0(uVar1);
  FUN_00addbd0(uVar1);
  FUN_00a84330(local_204,0x200);
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aab0b0(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,
                 uint param_6,undefined *param_7,undefined *param_8)

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int local_78;
  undefined4 local_74;
  undefined4 local_70;
  undefined *local_6c;
  int local_68;
  int iStack_64;
  int local_60;
  undefined auStack_5c [24];
  undefined auStack_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_78;
  local_74 = param_2;
  local_6c = param_7;
  iVar3 = *(int *)(param_1 + 0xc);
  iVar5 = *(int *)(param_1 + 8);
  local_60 = param_3;
  local_68 = param_4;
  local_78 = 0;
  local_70 = 0;
  if (0x40 < iVar5) {
    FUN_00a7fd60(".\\crypto\\evp\\evp_key.c",0x7e,"nkey <= EVP_MAX_KEY_LENGTH");
  }
  if (0x10 < iVar3) {
    FUN_00a7fd60(".\\crypto\\evp\\evp_key.c",0x7f,"niv <= EVP_MAX_IV_LENGTH");
  }
  if (local_68 == 0) {
    ___security_check_cookie_4();
    return;
  }
  FUN_00a91330(auStack_5c);
  iVar1 = FUN_00a91380(auStack_5c,local_74,0);
  iVar2 = 0;
  do {
    if (iVar1 == 0) {
      ___security_check_cookie_4();
      return;
    }
    iStack_64 = iVar2 + 1;
    if (((((iVar2 != 0) && (iVar2 = FUN_00a91530(auStack_5c,auStack_44,local_78), iVar2 == 0)) ||
         (iVar2 = FUN_00a91530(auStack_5c,local_68,param_5), iVar2 == 0)) ||
        ((local_60 != 0 && (iVar2 = FUN_00a91530(auStack_5c,local_60,8), iVar2 == 0)))) ||
       (iVar2 = FUN_00a91540(auStack_5c,auStack_44,&local_78), iVar2 == 0)) {
LAB_00aab315:
      FUN_00a915c0(auStack_5c);
      FUN_00a84330(auStack_44,0x40);
      ___security_check_cookie_4();
      return;
    }
    uVar4 = 1;
    if (1 < param_6) {
      do {
        iVar2 = FUN_00a91380(auStack_5c,local_74,0);
        if (((iVar2 == 0) || (iVar2 = FUN_00a91530(auStack_5c,auStack_44,local_78), iVar2 == 0)) ||
           (iVar2 = FUN_00a91540(auStack_5c,auStack_44,&local_78), iVar2 == 0)) goto LAB_00aab315;
        uVar4 = uVar4 + 1;
      } while (uVar4 < param_6);
    }
    for (iVar2 = 0; (iVar5 != 0 && (iVar2 != local_78)); iVar2 = iVar2 + 1) {
      if (local_6c != (undefined *)0x0) {
        *local_6c = auStack_44[iVar2];
        local_6c = local_6c + 1;
      }
      iVar5 = iVar5 + -1;
    }
    if ((iVar3 != 0) && (iVar2 != local_78)) {
      do {
        if (iVar2 == local_78) break;
        if (param_8 != (undefined *)0x0) {
          *param_8 = auStack_44[iVar2];
          param_8 = param_8 + 1;
        }
        iVar3 = iVar3 + -1;
        iVar2 = iVar2 + 1;
      } while (iVar3 != 0);
    }
    if ((iVar5 == 0) && (iVar3 == 0)) {
      local_70 = *(undefined4 *)(param_1 + 8);
      goto LAB_00aab315;
    }
    iVar1 = FUN_00a91380(auStack_5c,local_74,0);
    iVar2 = iStack_64;
  } while( true );
}



void FUN_00aab350(void *param_1)

{
  _memset(param_1,0,0x8c);
  return;
}



bool FUN_00aab370(int *param_1,int param_2,uint *param_3,void *param_4,uint param_5)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  size_t _Size;
  
  iVar2 = *param_1;
  if ((*(uint *)(iVar2 + 0x10) & 0x100000) != 0) {
    uVar1 = (**(code **)(iVar2 + 0x18))(param_1,param_2,param_4,param_5);
    if (-1 < (int)uVar1) {
      *param_3 = uVar1;
      return true;
    }
    return false;
  }
  if ((int)param_5 < 1) {
    *param_3 = 0;
    return param_5 == 0;
  }
  iVar3 = param_1[3];
  if ((iVar3 == 0) && ((param_1[0x1a] & param_5) == 0)) {
    iVar2 = (**(code **)(iVar2 + 0x18))(param_1,param_2,param_4,param_5);
    if (iVar2 == 0) {
      *param_3 = 0;
      return false;
    }
    *param_3 = param_5;
    return true;
  }
  uVar1 = *(uint *)(iVar2 + 4);
  if (0x20 < (int)uVar1) {
    FUN_00a7fd60(".\\crypto\\evp\\evp_enc.c",0x157,"bl <= (int)sizeof(ctx->buf)");
  }
  if (iVar3 == 0) {
    *param_3 = 0;
  }
  else {
    if ((int)(iVar3 + param_5) < (int)uVar1) {
      _memcpy((void *)(iVar3 + 0x30 + (int)param_1),param_4,param_5);
      param_1[3] = param_1[3] + param_5;
      *param_3 = 0;
      return true;
    }
    _Size = uVar1 - iVar3;
    _memcpy((void *)(iVar3 + 0x30 + (int)param_1),param_4,_Size);
    iVar2 = (**(code **)(*param_1 + 0x18))(param_1,param_2,param_1 + 0xc,uVar1);
    if (iVar2 == 0) {
      return false;
    }
    param_4 = (void *)((int)param_4 + _Size);
    param_5 = param_5 - _Size;
    param_2 = param_2 + uVar1;
    *param_3 = uVar1;
  }
  uVar1 = uVar1 - 1 & param_5;
  iVar2 = param_5 - uVar1;
  if (0 < iVar2) {
    iVar3 = (**(code **)(*param_1 + 0x18))(param_1,param_2,param_4,iVar2);
    if (iVar3 == 0) {
      return false;
    }
    *param_3 = *param_3 + iVar2;
  }
  if (uVar1 != 0) {
    _memcpy(param_1 + 0xc,(void *)((int)param_4 + iVar2),uVar1);
  }
  param_1[3] = uVar1;
  return true;
}



int FUN_00aab500(int *param_1,undefined4 param_2,uint *param_3)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  
  iVar3 = *param_1;
  if ((*(uint *)(iVar3 + 0x10) & 0x100000) != 0) {
    uVar2 = (**(code **)(iVar3 + 0x18))(param_1,param_2,0,0);
    if ((int)uVar2 < 0) {
      return 0;
    }
    *param_3 = uVar2;
    return 1;
  }
  uVar2 = *(uint *)(iVar3 + 4);
  if (0x20 < uVar2) {
    FUN_00a7fd60(".\\crypto\\evp\\evp_enc.c",0x193,"b <= sizeof ctx->buf");
  }
  if (uVar2 == 1) {
    *param_3 = 0;
    return 1;
  }
  uVar1 = param_1[3];
  if ((param_1[0x17] & 0x100U) == 0) {
    if (uVar1 < uVar2) {
      _memset((void *)(uVar1 + 0x30 + (int)param_1),uVar2 - uVar1,uVar2 - uVar1);
    }
    iVar3 = (**(code **)(*param_1 + 0x18))(param_1,param_2,param_1 + 0xc,uVar2);
    if (iVar3 != 0) {
      *param_3 = uVar2;
    }
    return iVar3;
  }
  if (uVar1 != 0) {
    FUN_00a7f3c0(6,0x7f,0x8a,".\\crypto\\evp\\evp_enc.c",0x19e);
    return 0;
  }
  *param_3 = 0;
  return 1;
}



uint FUN_00aab5f0(int *param_1,void *param_2,int *param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  
  iVar1 = *param_1;
  if ((*(uint *)(iVar1 + 0x10) & 0x100000) != 0) {
    iVar1 = (**(code **)(iVar1 + 0x18))(param_1,param_2,param_4,param_5);
    if (-1 < iVar1) {
      *param_3 = iVar1;
      return 1;
    }
    *param_3 = 0;
    return 0;
  }
  if (param_5 < 1) {
    *param_3 = 0;
    return (uint)(param_5 == 0);
  }
  if ((param_1[0x17] & 0x100U) != 0) {
    uVar2 = FUN_00aab370(param_1,param_2,param_3,param_4,param_5);
    return uVar2;
  }
  uVar2 = *(uint *)(iVar1 + 4);
  if (0x20 < uVar2) {
    FUN_00a7fd60(".\\crypto\\evp\\evp_enc.c",0x1ce,"b <= sizeof ctx->final");
  }
  iVar1 = param_1[0x19];
  if (iVar1 != 0) {
    _memcpy(param_2,param_1 + 0x1b,uVar2);
    param_2 = (void *)((int)param_2 + uVar2);
  }
  iVar3 = FUN_00aab370(param_1,param_2,param_3,param_4,param_5);
  if (iVar3 != 0) {
    if ((uVar2 < 2) || (param_1[3] != 0)) {
      param_1[0x19] = 0;
    }
    else {
      *param_3 = *param_3 - uVar2;
      param_1[0x19] = 1;
      _memcpy(param_1 + 0x1b,(void *)(*param_3 + (int)param_2),uVar2);
    }
    if (iVar1 != 0) {
      *param_3 = *param_3 + uVar2;
    }
    return 1;
  }
  return 0;
}



undefined4 FUN_00aab730(int *param_1,int param_2,int *param_3)

{
  byte *pbVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  
  *param_3 = 0;
  iVar3 = *param_1;
  if ((*(uint *)(iVar3 + 0x10) & 0x100000) != 0) {
    iVar3 = (**(code **)(iVar3 + 0x18))(param_1,param_2,0,0);
    if (-1 < iVar3) {
      *param_3 = iVar3;
      return 1;
    }
    return 0;
  }
  uVar2 = *(uint *)(iVar3 + 4);
  if ((param_1[0x17] & 0x100U) == 0) {
    if (1 < uVar2) {
      if ((param_1[3] != 0) || (param_1[0x19] == 0)) {
        FUN_00a7f3c0(6,0x65,0x6d,".\\crypto\\evp\\evp_enc.c",0x214);
        return 0;
      }
      if (0x20 < uVar2) {
        FUN_00a7fd60(".\\crypto\\evp\\evp_enc.c",0x217,"b <= sizeof ctx->final");
      }
      uVar4 = (uint)*(byte *)(uVar2 + 0x6b + (int)param_1);
      if ((uVar4 != 0) && ((int)uVar4 <= (int)uVar2)) {
        iVar3 = 0;
        if (uVar4 != 0) {
          iVar5 = uVar2 + 0x6c + (int)param_1;
          do {
            pbVar1 = (byte *)(iVar5 + -1);
            iVar5 = iVar5 + -1;
            if (*pbVar1 != uVar4) {
              uVar6 = 0x222;
              goto LAB_00aab844;
            }
            iVar3 = iVar3 + 1;
          } while (iVar3 < (int)uVar4);
        }
        iVar5 = *(int *)(*param_1 + 4) - uVar4;
        iVar3 = 0;
        if (0 < iVar5) {
          do {
            *(undefined *)(iVar3 + param_2) = *(undefined *)((int)param_1 + iVar3 + 0x6c);
            iVar3 = iVar3 + 1;
          } while (iVar3 < iVar5);
        }
        *param_3 = iVar5;
        return 1;
      }
      uVar6 = 0x21b;
LAB_00aab844:
      FUN_00a7f3c0(6,0x65,100,".\\crypto\\evp\\evp_enc.c",uVar6);
      return 0;
    }
  }
  else if (param_1[3] != 0) {
    FUN_00a7f3c0(6,0x65,0x8a,".\\crypto\\evp\\evp_enc.c",0x20a);
    return 0;
  }
  *param_3 = 0;
  return 1;
}



undefined4 FUN_00aab890(int *param_1)

{
  code *pcVar1;
  int iVar2;
  
  if (*param_1 != 0) {
    pcVar1 = *(code **)(*param_1 + 0x1c);
    if (pcVar1 != (code *)0x0) {
      iVar2 = (*pcVar1)(param_1);
      if (iVar2 == 0) {
        return 0;
      }
    }
    if (param_1[0x18] != 0) {
      FUN_00a84330(param_1[0x18],*(undefined4 *)(*param_1 + 0x20));
    }
  }
  if (param_1[0x18] != 0) {
    FUN_00a85120(param_1[0x18]);
  }
  if (param_1[1] != 0) {
    FUN_00a8f1b0(param_1[1]);
  }
  _memset(param_1,0,0x8c);
  return 1;
}



undefined4 FUN_00aab900(int param_1,int param_2)

{
  if (param_2 != 0) {
    *(uint *)(param_1 + 0x5c) = *(uint *)(param_1 + 0x5c) & 0xfffffeff;
    return 1;
  }
  *(uint *)(param_1 + 0x5c) = *(uint *)(param_1 + 0x5c) | 0x100;
  return 1;
}



int FUN_00aab930(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  code *pcVar1;
  int iVar2;
  
  if (*param_1 == 0) {
    FUN_00a7f3c0(6,0x7c,0x83,".\\crypto\\evp\\evp_enc.c",0x26d);
    return 0;
  }
  pcVar1 = *(code **)(*param_1 + 0x2c);
  if (pcVar1 == (code *)0x0) {
    FUN_00a7f3c0(6,0x7c,0x84,".\\crypto\\evp\\evp_enc.c",0x272);
    return 0;
  }
  iVar2 = (*pcVar1)(param_1,param_2,param_3,param_4);
  if (iVar2 == -1) {
    FUN_00a7f3c0(6,0x7c,0x85,".\\crypto\\evp\\evp_enc.c",0x278);
    iVar2 = 0;
  }
  return iVar2;
}



uint FUN_00aab9c0(int *param_1,undefined4 param_2)

{
  uint uVar1;
  int iVar2;
  
  if ((*(uint *)(*param_1 + 0x10) & 0x200) != 0) {
    uVar1 = FUN_00aab930(param_1,6,0,param_2);
    return uVar1;
  }
  iVar2 = FUN_00a86e60(param_2,param_1[0x16]);
  return (uint)(0 < iVar2);
}



undefined4 FUN_00aaba00(int *param_1,int *param_2)

{
  int iVar1;
  void *_Dst;
  undefined4 uVar2;
  int *piVar3;
  int *piVar4;
  
  if ((param_2 == (int *)0x0) || (*param_2 == 0)) {
    FUN_00a7f3c0(6,0xa3,0x6f,".\\crypto\\evp\\evp_enc.c",0x28b);
    return 0;
  }
  if (param_2[1] != 0) {
    iVar1 = FUN_00a8f130(param_2[1]);
    if (iVar1 == 0) {
      FUN_00a7f3c0(6,0xa3,0x26,".\\crypto\\evp\\evp_enc.c",0x292);
      return 0;
    }
  }
  FUN_00aab890(param_1);
  piVar3 = param_2;
  piVar4 = param_1;
  for (iVar1 = 0x23; iVar1 != 0; iVar1 = iVar1 + -1) {
    *piVar4 = *piVar3;
    piVar3 = piVar3 + 1;
    piVar4 = piVar4 + 1;
  }
  if ((param_2[0x18] != 0) && (*(int *)(*param_2 + 0x20) != 0)) {
    _Dst = (void *)FUN_00a84f80(*(int *)(*param_2 + 0x20),".\\crypto\\evp\\evp_enc.c",0x29c);
    param_1[0x18] = (int)_Dst;
    if (_Dst == (void *)0x0) {
      FUN_00a7f3c0(6,0xa3,0x41,".\\crypto\\evp\\evp_enc.c",0x29f);
      return 0;
    }
    _memcpy(_Dst,(void *)param_2[0x18],*(size_t *)(*param_2 + 0x20));
  }
  if ((*(uint *)(*param_2 + 0x10) & 0x400) != 0) {
    uVar2 = (**(code **)(*param_2 + 0x2c))(param_2,8,0,param_1);
    return uVar2;
  }
  return 1;
}



undefined4
FUN_00aabb10(int **param_1,int *param_2,int *param_3,int param_4,int **param_5,int *param_6)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  size_t sVar4;
  int **_Src;
  undefined4 uVar5;
  
  if (param_6 == (int *)0xffffffff) {
    param_6 = param_1[2];
  }
  else {
    if (param_6 != (int *)0x0) {
      param_6 = (int *)0x1;
    }
    param_1[2] = param_6;
  }
  if (((param_1[1] == (int *)0x0) || (*param_1 == (int *)0x0)) ||
     ((param_2 != (int *)0x0 && (*param_2 != **param_1)))) {
    if (param_2 == (int *)0x0) {
      if (*param_1 == (int *)0x0) {
        FUN_00a7f3c0(6,0x7b,0x83,".\\crypto\\evp\\evp_enc.c",0xcb);
        return 0;
      }
    }
    else {
      if (*param_1 != (int *)0x0) {
        piVar2 = param_1[0x17];
        FUN_00aab890(param_1);
        param_1[2] = param_6;
        param_1[0x17] = piVar2;
      }
      if (param_3 == (int *)0x0) {
        param_3 = (int *)FUN_00ade1f0(*param_2);
      }
      else {
        iVar1 = FUN_00a8f130(param_3);
        if (iVar1 == 0) {
          uVar5 = 0x8d;
          goto LAB_00aabba0;
        }
      }
      if (param_3 == (int *)0x0) {
        param_1[1] = (int *)0x0;
      }
      else {
        param_2 = (int *)FUN_00ade210(param_3,*param_2);
        if (param_2 == (int *)0x0) {
          uVar5 = 0x9e;
          goto LAB_00aabba0;
        }
        param_1[1] = param_3;
      }
      *param_1 = param_2;
      if (param_2[8] == 0) {
        param_1[0x18] = (int *)0x0;
      }
      else {
        piVar2 = (int *)FUN_00a84f80(param_2[8],".\\crypto\\evp\\evp_enc.c",0xb3);
        param_1[0x18] = piVar2;
        if (piVar2 == (int *)0x0) {
          FUN_00a7f3c0(6,0x7b,0x41,".\\crypto\\evp\\evp_enc.c",0xb6);
          return 0;
        }
      }
      param_1[0x16] = (int *)param_2[2];
      param_1[0x17] = (int *)0x0;
      if (((*(byte *)(*param_1 + 4) & 0x40) != 0) &&
         (iVar1 = FUN_00aab930(param_1,0,0,0), iVar1 == 0)) {
        uVar5 = 0xc4;
LAB_00aabba0:
        FUN_00a7f3c0(6,0x7b,0x86,".\\crypto\\evp\\evp_enc.c",uVar5);
        return 0;
      }
    }
  }
  iVar1 = (*param_1)[1];
  if (((iVar1 != 1) && (iVar1 != 8)) && (iVar1 != 0x10)) {
    FUN_00a7fd60(".\\crypto\\evp\\evp_enc.c",0xd8,
                 "ctx->cipher->block_size == 1 || ctx->cipher->block_size == 8 || ctx->cipher->block_size == 16"
                );
  }
  uVar3 = FUN_00a925d0(param_1);
  if ((uVar3 & 0x10) == 0) {
    uVar3 = FUN_00a925d0(param_1);
    switch(uVar3 & 0xf0007) {
    case 0:
    case 1:
      goto switchD_00aabcdc_caseD_0;
    case 3:
    case 4:
      param_1[0x14] = (int *)0x0;
    case 2:
      iVar1 = FUN_00a82a40(param_1);
      if (0x10 < iVar1) {
        FUN_00a7fd60(".\\crypto\\evp\\evp_enc.c",0xea,
                     "EVP_CIPHER_CTX_iv_length(ctx) <= (int)sizeof(ctx->iv)");
      }
      if (param_5 != (int **)0x0) {
        sVar4 = FUN_00a82a40(param_1);
        _memcpy(param_1 + 4,param_5,sVar4);
      }
      sVar4 = FUN_00a82a40(param_1);
      _Src = param_1 + 4;
      break;
    case 5:
      param_1[0x14] = (int *)0x0;
      if (param_5 == (int **)0x0) goto switchD_00aabcdc_caseD_0;
      sVar4 = FUN_00a82a40(param_1);
      _Src = param_5;
      break;
    default:
      goto switchD_00aabcdc_caseD_6;
    }
    _memcpy(param_1 + 8,_Src,sVar4);
  }
switchD_00aabcdc_caseD_0:
  if (((param_4 == 0) && ((*(byte *)(*param_1 + 4) & 0x20) == 0)) ||
     (iVar1 = (*(code *)(*param_1)[5])(param_1,param_4,param_5,param_6), iVar1 != 0)) {
    param_1[3] = (int *)0x0;
    param_1[0x19] = (int *)0x0;
    param_1[0x1a] = (int *)((*param_1)[1] + -1);
    return 1;
  }
switchD_00aabcdc_caseD_6:
  return 0;
}



void FUN_00aabdb0(int param_1)

{
  if (*(int *)(param_1 + 8) != 0) {
    FUN_00aab370();
    return;
  }
  FUN_00aab5f0();
  return;
}



void FUN_00aabdd0(int param_1)

{
  if (*(int *)(param_1 + 8) != 0) {
    FUN_00aab500();
    return;
  }
  FUN_00aab730();
  return;
}



void FUN_00aabdf0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  FUN_00aabb10(param_1,param_2,param_3,param_4,param_5,1);
  return;
}



void FUN_00aabe20(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  FUN_00aabb10(param_1,param_2,param_3,param_4,param_5,0);
  return;
}



int thunk_FUN_00aab500(int *param_1,undefined4 param_2,uint *param_3)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  
  iVar3 = *param_1;
  if ((*(uint *)(iVar3 + 0x10) & 0x100000) != 0) {
    uVar2 = (**(code **)(iVar3 + 0x18))(param_1,param_2,0,0);
    if ((int)uVar2 < 0) {
      return 0;
    }
    *param_3 = uVar2;
    return 1;
  }
  uVar2 = *(uint *)(iVar3 + 4);
  if (0x20 < uVar2) {
    FUN_00a7fd60(".\\crypto\\evp\\evp_enc.c",0x193,"b <= sizeof ctx->buf");
  }
  if (uVar2 == 1) {
    *param_3 = 0;
    return 1;
  }
  uVar1 = param_1[3];
  if ((param_1[0x17] & 0x100U) == 0) {
    if (uVar1 < uVar2) {
      _memset((void *)(uVar1 + 0x30 + (int)param_1),uVar2 - uVar1,uVar2 - uVar1);
    }
    iVar3 = (**(code **)(*param_1 + 0x18))(param_1,param_2,param_1 + 0xc,uVar2);
    if (iVar3 != 0) {
      *param_3 = uVar2;
    }
    return iVar3;
  }
  if (uVar1 != 0) {
    FUN_00a7f3c0(6,0x7f,0x8a,".\\crypto\\evp\\evp_enc.c",0x19e);
    return 0;
  }
  *param_3 = 0;
  return 1;
}



undefined4 thunk_FUN_00aab730(int *param_1,int param_2,int *param_3)

{
  byte *pbVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  
  *param_3 = 0;
  iVar3 = *param_1;
  if ((*(uint *)(iVar3 + 0x10) & 0x100000) != 0) {
    iVar3 = (**(code **)(iVar3 + 0x18))(param_1,param_2,0,0);
    if (-1 < iVar3) {
      *param_3 = iVar3;
      return 1;
    }
    return 0;
  }
  uVar2 = *(uint *)(iVar3 + 4);
  if ((param_1[0x17] & 0x100U) == 0) {
    if (1 < uVar2) {
      if ((param_1[3] != 0) || (param_1[0x19] == 0)) {
        FUN_00a7f3c0(6,0x65,0x6d,".\\crypto\\evp\\evp_enc.c",0x214);
        return 0;
      }
      if (0x20 < uVar2) {
        FUN_00a7fd60(".\\crypto\\evp\\evp_enc.c",0x217,"b <= sizeof ctx->final");
      }
      uVar4 = (uint)*(byte *)(uVar2 + 0x6b + (int)param_1);
      if ((uVar4 != 0) && ((int)uVar4 <= (int)uVar2)) {
        iVar3 = 0;
        if (uVar4 != 0) {
          iVar5 = uVar2 + 0x6c + (int)param_1;
          do {
            pbVar1 = (byte *)(iVar5 + -1);
            iVar5 = iVar5 + -1;
            if (*pbVar1 != uVar4) {
              uVar6 = 0x222;
              goto LAB_00aab844;
            }
            iVar3 = iVar3 + 1;
          } while (iVar3 < (int)uVar4);
        }
        iVar5 = *(int *)(*param_1 + 4) - uVar4;
        iVar3 = 0;
        if (0 < iVar5) {
          do {
            *(undefined *)(iVar3 + param_2) = *(undefined *)((int)param_1 + iVar3 + 0x6c);
            iVar3 = iVar3 + 1;
          } while (iVar3 < iVar5);
        }
        *param_3 = iVar5;
        return 1;
      }
      uVar6 = 0x21b;
LAB_00aab844:
      FUN_00a7f3c0(6,0x65,100,".\\crypto\\evp\\evp_enc.c",uVar6);
      return 0;
    }
  }
  else if (param_1[3] != 0) {
    FUN_00a7f3c0(6,0x65,0x8a,".\\crypto\\evp\\evp_enc.c",0x20a);
    return 0;
  }
  *param_3 = 0;
  return 1;
}



undefined4 FUN_00aabe70(int *param_1,int param_2)

{
  undefined4 uVar1;
  
  if ((char)*(uint *)(*param_1 + 0x10) < '\0') {
    uVar1 = FUN_00aab930(param_1,1,param_2,0);
    return uVar1;
  }
  if (param_1[0x16] != param_2) {
    if ((param_2 < 1) || ((*(uint *)(*param_1 + 0x10) & 8) == 0)) {
      FUN_00a7f3c0(6,0x7a,0x82,".\\crypto\\evp\\evp_enc.c",0x25e);
      return 0;
    }
    param_1[0x16] = param_2;
  }
  return 1;
}



void FUN_00aabed0(undefined4 *param_1)

{
  param_1[1] = 0x30;
  *param_1 = 0;
  param_1[0x16] = 0;
  return;
}



int FUN_00aabef0(char *param_1,byte *param_2,int param_3)

{
  byte bVar1;
  byte bVar2;
  uint3 uVar3;
  char cVar4;
  uint uVar5;
  int iVar6;
  
  iVar6 = 0;
  if (0 < param_3) {
    do {
      bVar1 = *param_2;
      if (param_3 < 3) {
        uVar5 = (uint)bVar1 << 0x10;
        if (param_3 == 2) {
          uVar5 = uVar5 | (uint)param_2[1] << 8;
        }
        *param_1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[uVar5 >> 0x12]
        ;
        param_1[1] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                     [uVar5 >> 0xc & 0x3f];
        if (param_3 == 1) {
          cVar4 = '=';
        }
        else {
          cVar4 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                  [uVar5 >> 6 & 0x3f];
        }
        param_1[2] = cVar4;
        param_1[3] = '=';
      }
      else {
        bVar2 = param_2[1];
        uVar3 = CONCAT21(CONCAT11(bVar1,bVar2),param_2[2]);
        *param_1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[bVar1 >> 2];
        param_1[1] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                     [(ushort)(CONCAT11(bVar1,bVar2) >> 4) & 0x3f];
        param_1[2] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                     [uVar3 >> 6 & 0x3f];
        param_1[3] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
                     [uVar3 & 0x3f];
      }
      param_3 = param_3 + -3;
      param_1 = param_1 + 4;
      iVar6 = iVar6 + 4;
      param_2 = param_2 + 3;
    } while (0 < param_3);
  }
  *param_1 = '\0';
  return iVar6;
}



void FUN_00aabfe0(undefined4 *param_1)

{
  param_1[1] = 0x1e;
  *param_1 = 0;
  param_1[0x16] = 0;
  param_1[0x17] = 0;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aac000(undefined *param_1,byte *param_2,uint param_3)

{
  byte *pbVar1;
  byte *pbVar2;
  char cVar3;
  byte bVar4;
  byte bVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  int local_4;
  
  iVar8 = 0;
  local_4 = 0;
  cVar3 = (&DAT_00dbe7d0)[*param_2 & 0x7f];
  for (; (cVar3 == -0x20 && (0 < (int)param_3)); param_3 = param_3 - 1) {
    pbVar1 = param_2 + 1;
    param_2 = param_2 + 1;
    cVar3 = (&DAT_00dbe7d0)[*pbVar1 & 0x7f];
  }
  while ((3 < (int)param_3 && (((&DAT_00dbe7d0)[param_2[param_3 - 1] & 0x7f] | 0x13) == 0xf3))) {
    param_3 = param_3 - 1;
  }
  uVar6 = param_3 & 0x80000003;
  if ((int)uVar6 < 0) {
    uVar6 = (uVar6 - 1 | 0xfffffffc) + 1;
  }
  if (uVar6 == 0) {
    if (0 < (int)param_3) {
      do {
        bVar4 = *param_2;
        pbVar1 = param_2 + 1;
        pbVar2 = param_2 + 2;
        bVar5 = (&DAT_00dbe7d0)[param_2[3] & 0x7f];
        param_2 = param_2 + 4;
        if (((((char)(&DAT_00dbe7d0)[bVar4 & 0x7f] < '\0') ||
             ((char)(&DAT_00dbe7d0)[*pbVar1 & 0x7f] < '\0')) ||
            (((&DAT_00dbe7d0)[*pbVar2 & 0x7f] & 0x80) != 0)) || ((char)bVar5 < '\0')) {
          return -1;
        }
        local_4 = local_4 + 3;
        iVar7 = (((uint)(byte)(&DAT_00dbe7d0)[bVar4 & 0x7f] << 6 |
                 (uint)(byte)(&DAT_00dbe7d0)[*pbVar1 & 0x7f]) << 6 |
                (uint)(byte)(&DAT_00dbe7d0)[*pbVar2 & 0x7f]) << 6;
        *param_1 = (char)((uint)iVar7 >> 0x10);
        param_1[1] = (char)((uint)iVar7 >> 8);
        param_1[2] = (byte)iVar7 | bVar5;
        iVar8 = iVar8 + 4;
        param_1 = param_1 + 3;
      } while (iVar8 < (int)param_3);
    }
    return local_4;
  }
  return -1;
}



undefined4 FUN_00aac130(int *param_1,undefined4 param_2,int *param_3)

{
  int iVar1;
  
  *param_3 = 0;
  if (*param_1 != 0) {
    iVar1 = FUN_00aac000(param_2,param_1 + 2,*param_1);
    if (iVar1 < 0) {
      return 0xffffffff;
    }
    *param_1 = 0;
    *param_3 = iVar1;
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aac180(size_t *param_1,undefined *param_2,int *param_3,void *param_4,size_t param_5)

{
  size_t sVar1;
  int iVar2;
  size_t _Size;
  int local_4;
  
  local_4 = 0;
  *param_3 = 0;
  if (param_5 != 0) {
    if (0x50 < (int)param_1[1]) {
      FUN_00a7fd60(".\\crypto\\evp\\encode.c",0x8b,"ctx->length <= (int)sizeof(ctx->enc_data)");
    }
    sVar1 = *param_1;
    if ((int)(sVar1 + param_5) < (int)param_1[1]) {
      _memcpy((void *)(sVar1 + 8 + (int)param_1),param_4,param_5);
      *param_1 = *param_1 + param_5;
      return;
    }
    if (sVar1 != 0) {
      _Size = param_1[1] - sVar1;
      _memcpy((void *)(sVar1 + 8 + (int)param_1),param_4,_Size);
      param_4 = (void *)((int)param_4 + _Size);
      param_5 = param_5 - _Size;
      local_4 = FUN_00aabef0(param_2,param_1 + 2,param_1[1]);
      *param_1 = 0;
      param_2[local_4] = 10;
      param_2 = param_2 + local_4 + 1;
      local_4 = local_4 + 1;
      *param_2 = 0;
    }
    if ((int)param_1[1] <= (int)param_5) {
      do {
        iVar2 = FUN_00aabef0(param_2,param_4,param_1[1]);
        sVar1 = param_1[1];
        param_2[iVar2] = 10;
        param_2 = param_2 + iVar2 + 1;
        param_5 = param_5 - sVar1;
        param_4 = (void *)((int)param_4 + sVar1);
        *param_2 = 0;
        local_4 = local_4 + 1 + iVar2;
      } while ((int)param_1[1] <= (int)param_5);
    }
    if (param_5 != 0) {
      _memcpy(param_1 + 2,param_4,param_5);
    }
    *param_1 = param_5;
    *param_3 = local_4;
  }
  return;
}



void FUN_00aac2a0(int *param_1,int param_2,int *param_3)

{
  int iVar1;
  
  if (*param_1 != 0) {
    iVar1 = FUN_00aabef0(param_2,param_1 + 2,*param_1);
    *(undefined *)(iVar1 + param_2) = 10;
    *(undefined *)(iVar1 + 1 + param_2) = 0;
    *param_1 = 0;
    *param_3 = iVar1 + 1;
    return;
  }
  *param_3 = 0;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aac2e0(uint *param_1,int param_2,int *param_3,byte *param_4,int param_5)

{
  byte bVar1;
  uint *puVar2;
  uint uVar3;
  undefined4 uVar4;
  uint uVar5;
  byte bVar6;
  uint uVar7;
  uint local_14;
  uint local_10;
  uint local_c;
  int local_8;
  int local_4;
  
  puVar2 = param_1;
  uVar3 = param_1[0x16];
  uVar5 = *param_1;
  local_14 = param_1[0x17];
  uVar7 = 0;
  local_c = 0xffffffff;
  local_4 = 0;
  param_1 = (uint *)uVar3;
  if ((param_5 == 0) || ((uVar5 == 0 && ((&DAT_00dbe7d0)[*param_4 & 0x7f] == -0xe)))) {
LAB_00aac4c0:
    uVar4 = 0;
  }
  else {
    local_8 = 0;
    local_10 = uVar5;
    if (0 < param_5) {
      do {
        if (0x4f < (int)param_1) {
LAB_00aac4bb:
          uVar4 = 0xffffffff;
          goto LAB_00aac4c2;
        }
        bVar1 = *param_4;
        param_4 = param_4 + 1;
        bVar6 = (&DAT_00dbe7d0)[bVar1 & 0x7f];
        if ((bVar6 | 0x13) == 0xf3) {
          if (bVar6 == 0xff) goto LAB_00aac4bb;
        }
        else {
          if (0x4f < (int)uVar5) {
            FUN_00a7fd60(".\\crypto\\evp\\encode.c",0x106,"n < (int)sizeof(ctx->enc_data)");
            uVar5 = local_10;
          }
          *(byte *)(uVar5 + 8 + (int)puVar2) = bVar1;
          uVar5 = uVar5 + 1;
          param_1 = (uint *)((int)param_1 + 1);
          local_10 = uVar5;
        }
        if (bVar1 == 0x3d) {
          if (local_c == 0xffffffff) {
            local_c = uVar5;
          }
          uVar7 = uVar7 + 1;
        }
        if (bVar6 == 0xf1) {
          param_1 = (uint *)0x0;
          if (local_14 == 0) {
LAB_00aac3e3:
            local_14 = 0;
            if ((local_8 + 1 == param_5) && (((uVar5 & 3) == 0 || (uVar7 != 0)))) {
              bVar6 = 0xf2;
              uVar7 = (uint)(*(char *)(uVar5 + 7 + (int)puVar2) == '=');
              if (*(char *)(uVar5 + 6 + (int)puVar2) == '=') {
                uVar7 = uVar7 + 1;
              }
LAB_00aac438:
              if ((uVar5 & 3) != 0) goto LAB_00aac43d;
            }
            else {
              if (bVar6 == 0xf2) goto LAB_00aac438;
LAB_00aac43d:
              if ((int)uVar5 < 0x40) goto LAB_00aac4a1;
              if (bVar6 != 0xf2) {
                local_14 = 1;
              }
            }
            if ((int)uVar5 < 1) {
              uVar7 = 1;
              uVar3 = 0;
            }
            else {
              uVar3 = FUN_00aac000(param_2,puVar2 + 2,uVar5);
              local_10 = 0;
              uVar5 = 0;
              if ((int)uVar3 < 0) goto LAB_00aac4c0;
              local_4 = local_4 + (uVar3 - uVar7);
            }
            if ((((int)uVar3 < (int)puVar2[1]) && (uVar7 != 0)) ||
               (puVar2[1] = uVar3, -1 < (int)local_c)) goto LAB_00aac4c0;
            param_2 = param_2 + uVar3;
          }
        }
        else {
          if ((bVar6 != 0xf0) || (param_1 = (uint *)0x0, local_14 == 0)) goto LAB_00aac3e3;
          local_14 = 0;
        }
LAB_00aac4a1:
        local_8 = local_8 + 1;
      } while (local_8 < param_5);
    }
    uVar4 = 1;
  }
LAB_00aac4c2:
  *param_3 = local_4;
  *puVar2 = uVar5;
  puVar2[0x16] = (uint)param_1;
  puVar2[0x17] = local_14;
  return uVar4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aac4f0(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 int param_5,int *param_6,int *param_7,undefined4 param_8)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int local_98;
  int *local_94;
  undefined local_90 [140];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_98;
  local_94 = param_6;
  FUN_00aab350(local_90);
  iVar2 = FUN_00a88510(*param_1,param_2,param_3,param_1[1],local_90,param_8);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x23,0x77,0x73,".\\crypto\\pkcs12\\p12_decr.c",0x53);
  }
  else {
    iVar2 = FUN_00a925b0(local_90,".\\crypto\\pkcs12\\p12_decr.c",0x57);
    iVar2 = FUN_00a84f80(iVar2 + param_5);
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x23,0x77,0x41,".\\crypto\\pkcs12\\p12_decr.c",0x58);
    }
    else {
      iVar3 = FUN_00aabdb0(local_90,iVar2,&local_98,param_4,param_5);
      iVar1 = local_98;
      if (iVar3 == 0) {
        FUN_00a85120(iVar2);
        FUN_00a7f3c0(0x23,0x77,6,".\\crypto\\pkcs12\\p12_decr.c",0x60);
      }
      else {
        iVar3 = FUN_00aabdd0(local_90,local_98 + iVar2,&local_98);
        if (iVar3 == 0) {
          FUN_00a85120(iVar2);
          FUN_00a7f3c0(0x23,0x77,0x74,".\\crypto\\pkcs12\\p12_decr.c",0x68);
        }
        else {
          if (param_7 != (int *)0x0) {
            *param_7 = iVar1 + local_98;
          }
          if (local_94 != (int *)0x0) {
            *local_94 = iVar2;
          }
        }
      }
    }
    FUN_00aab890(local_90);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aac680(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                undefined4 *param_5,int param_6)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 local_8;
  undefined4 *local_4;
  
  local_4 = (undefined4 *)0xaac68a;
  iVar2 = FUN_00aac4f0(param_1,param_3,param_4,param_5[2],*param_5,&param_5,&local_8,0);
  puVar1 = param_5;
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x23,0x6a,0x75,".\\crypto\\pkcs12\\p12_decr.c",0x82);
    return 0;
  }
  local_4 = param_5;
  iVar2 = FUN_00a8ae20(0,&local_4,local_8,param_2);
  if (param_6 != 0) {
    FUN_00a84330(puVar1,local_8);
  }
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x23,0x6a,0x65,".\\crypto\\pkcs12\\p12_decr.c",0x94);
  }
  FUN_00a85120(puVar1);
  return iVar2;
}



undefined4 thunk_FUN_00a80ed0(undefined4 *param_1)

{
  if (param_1 == (undefined4 *)0x0) {
    return 0xffffffff;
  }
  return *param_1;
}



int FUN_00aac750(int *param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  iVar3 = 0;
  if (param_1 == (int *)0x0) {
    FUN_00a7f3c0(0xb,0x87,0x43,".\\crypto\\x509\\x509_att.c",0x81);
    return 0;
  }
  iVar1 = *param_1;
  if (iVar1 == 0) {
    iVar1 = FUN_00a81010();
    if (iVar1 != 0) goto LAB_00aac78f;
  }
  else {
LAB_00aac78f:
    iVar3 = FUN_00a8f560(param_2);
    if (iVar3 == 0) goto LAB_00aac7d8;
    iVar2 = FUN_00a80df0(iVar1,iVar3);
    if (iVar2 != 0) {
      if (*param_1 == 0) {
        *param_1 = iVar1;
      }
      return iVar1;
    }
  }
  FUN_00a7f3c0(0xb,0x87,0x41,".\\crypto\\x509\\x509_att.c",0x95);
  if (iVar3 != 0) {
    FUN_00a8f540(iVar3);
  }
LAB_00aac7d8:
  if (iVar1 != 0) {
    FUN_00a80ea0(iVar1);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aac800(undefined4 *param_1,uint param_2,undefined4 param_3,int param_4)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  uint local_8;
  
  iVar3 = 0;
  local_8 = 0;
  if (param_1 == (undefined4 *)0x0) {
    return 0;
  }
  if ((param_2 & 0x1000) == 0) {
    if (param_4 == -1) goto LAB_00aac8a2;
    iVar3 = FUN_00a90d30(param_2);
    if ((iVar3 != 0) && (iVar2 = FUN_00a90c30(iVar3,param_3,param_4), iVar2 != 0)) {
      local_8 = param_2;
      goto LAB_00aac8a2;
    }
  }
  else {
    uVar1 = FUN_00a877e0(*param_1);
    iVar3 = FUN_00a91290(0,param_3,param_4,param_2,uVar1);
    if (iVar3 == 0) {
      uVar4 = 0x127;
      uVar1 = 0xd;
      goto LAB_00aac915;
    }
    local_8 = *(uint *)(iVar3 + 4);
LAB_00aac8a2:
    iVar2 = FUN_00a81010();
    param_1[2] = iVar2;
    if (iVar2 != 0) {
      param_1[1] = 0;
      if (param_2 == 0) {
        return 1;
      }
      iVar2 = FUN_00a889c0();
      if (iVar2 != 0) {
        if ((param_4 == -1) && ((param_2 & 0x1000) == 0)) {
          iVar3 = FUN_00a9d550(iVar2,param_2,param_3);
          if (iVar3 == 0) goto LAB_00aac909;
        }
        else {
          FUN_00a9d500(iVar2,local_8,iVar3);
        }
        iVar3 = FUN_00a80df0(param_1[2],iVar2);
        if (iVar3 != 0) {
          return 1;
        }
      }
    }
  }
LAB_00aac909:
  uVar4 = 0x143;
  uVar1 = 0x41;
LAB_00aac915:
  FUN_00a7f3c0(0xb,0x8a,uVar1,".\\crypto\\x509\\x509_att.c",uVar4);
  return 0;
}



undefined4 FUN_00aac940(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_00a87490(param_2);
  if (iVar1 == 0) {
    return 0xfffffffe;
  }
  uVar2 = FUN_00aaa000();
  return uVar2;
}



undefined4 *
FUN_00aac960(int *param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  
  if ((param_1 == (int *)0x0) || (puVar1 = (undefined4 *)*param_1, puVar1 == (undefined4 *)0x0)) {
    puVar1 = (undefined4 *)FUN_00a8f530();
    if (puVar1 == (undefined4 *)0x0) {
      FUN_00a7f3c0(0xb,0x89,0x41,".\\crypto\\x509\\x509_att.c",0xed);
      return (undefined4 *)0x0;
    }
  }
  if (param_2 != 0) {
    FUN_00a90760(*puVar1);
    uVar2 = FUN_00a8fff0(param_2);
    *puVar1 = uVar2;
    iVar3 = FUN_00aac800(puVar1,param_3,param_4,param_5);
    if (iVar3 != 0) {
      if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
        *param_1 = (int)puVar1;
      }
      return puVar1;
    }
  }
  if ((param_1 == (int *)0x0) || (puVar1 != (undefined4 *)*param_1)) {
    FUN_00a8f540(puVar1);
  }
  return (undefined4 *)0x0;
}



int FUN_00aaca00(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                undefined4 param_5)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_00a87490(param_2);
  if (iVar1 == 0) {
    FUN_00a7f3c0(0xb,0x88,0x6d,".\\crypto\\x509\\x509_att.c",0xdc);
    return 0;
  }
  iVar2 = FUN_00aac960(param_1,iVar1,param_3,param_4,param_5);
  if (iVar2 == 0) {
    FUN_00a90760(iVar1);
  }
  return iVar2;
}



undefined4
FUN_00aaca70(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_00aaca00(0,param_2,param_3,param_4,param_5);
  if (iVar1 == 0) {
    return 0;
  }
  uVar2 = FUN_00aac750(param_1,iVar1);
  FUN_00a8f540(iVar1);
  return uVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aacae0(int param_1,byte *param_2,uint param_3)

{
  int iVar1;
  byte *pbVar2;
  int *piVar3;
  uint uVar4;
  int iVar5;
  sbyte sVar6;
  byte bVar7;
  uint uVar8;
  uint local_c;
  uint local_8;
  uint local_4;
  
  *(int *)(param_1 + 0x84) = *(int *)(param_1 + 0x84) + param_3;
  uVar8 = *(uint *)(param_1 + 0x80);
  local_c = uVar8 & 7;
  local_8 = -param_3 & 7;
  if (*(uint *)(param_1 + 0x84) < param_3) {
    piVar3 = (int *)(param_1 + 0x88);
    local_4 = 1;
    do {
      *piVar3 = *piVar3 + 1;
      if (*piVar3 != 0) break;
      local_4 = local_4 + 1;
      piVar3 = piVar3 + 1;
    } while (local_4 < 8);
  }
LAB_00aacb60:
  if ((local_8 == 0) && (local_c == 0)) {
    while (param_3 != 0) {
      if ((uVar8 == 0) && (uVar4 = param_3 >> 9, uVar4 != 0)) {
        FUN_00ade260(param_1,param_2,uVar4);
        param_2 = param_2 + ((uVar4 << 9) >> 3);
        param_3 = param_3 & 0x1ff;
        uVar8 = 0;
      }
      else {
        uVar4 = 0x200 - uVar8;
        if (param_3 < uVar4) {
          _memcpy((void *)((uVar8 >> 3) + 0x40 + param_1),param_2,param_3 >> 3);
          uVar8 = uVar8 + param_3;
          param_3 = 0;
        }
        else {
          param_3 = param_3 - uVar4;
          _memcpy((void *)((uVar8 >> 3) + param_1 + 0x40),param_2,uVar4 >> 3);
          param_2 = param_2 + (uVar4 >> 3);
          FUN_00ade260(param_1,param_1 + 0x40,1);
          uVar8 = 0;
        }
        *(uint *)(param_1 + 0x80) = uVar8;
      }
    }
    return;
  }
LAB_00aacb70:
  do {
    if (param_3 == 0) {
      return;
    }
    uVar4 = uVar8 >> 3;
    sVar6 = (sbyte)local_8;
    if (local_c == local_8) break;
    if (param_3 < 8) {
      bVar7 = *param_2 << sVar6;
      iVar1 = param_1 + 0x40;
      if (local_c == 0) {
        *(byte *)(uVar4 + iVar1) = bVar7;
      }
      else {
        *(byte *)(uVar4 + iVar1) = *(byte *)(uVar4 + iVar1) | bVar7 >> (sbyte)local_c;
      }
      uVar8 = uVar8 + param_3;
      iVar5 = uVar4 + 1;
      if (uVar8 == 0x200) {
        FUN_00ade260(param_1,iVar1,1);
        iVar5 = 0;
        uVar8 = 0;
      }
      if (local_c != 0) {
        *(byte *)(iVar5 + iVar1) = bVar7 << (8U - (sbyte)local_c & 0x1f);
      }
      param_3 = 0;
    }
    else {
      iVar1 = param_1 + 0x40;
      bVar7 = param_2[1] >> (8U - sVar6 & 0x1f) | *param_2 << sVar6;
      if (local_c == 0) {
        *(byte *)(uVar4 + iVar1) = bVar7;
      }
      else {
        *(byte *)(uVar4 + iVar1) = *(byte *)(uVar4 + iVar1) | bVar7 >> (sbyte)local_c;
      }
      param_3 = param_3 - 8;
      uVar8 = uVar8 + 8;
      param_2 = param_2 + 1;
      iVar5 = uVar4 + 1;
      if (0x1ff < uVar8) {
        FUN_00ade260(param_1,iVar1,1);
        iVar5 = 0;
        uVar8 = uVar8 & 0x1ff;
      }
      if (local_c != 0) {
        *(byte *)(iVar5 + iVar1) = bVar7 << (8U - (sbyte)local_c & 0x1f);
        *(uint *)(param_1 + 0x80) = uVar8;
        goto LAB_00aacb70;
      }
    }
    *(uint *)(param_1 + 0x80) = uVar8;
  } while( true );
  pbVar2 = (byte *)(param_1 + 0x40 + uVar4);
  *pbVar2 = *pbVar2 | (byte)(0xff >> sVar6) & *param_2;
  param_3 = param_3 - (8 - local_8);
  uVar8 = uVar8 + (8 - local_8);
  local_c = 0;
  local_8 = 0;
  if (uVar8 == 0x200) {
    FUN_00ade260(param_1,param_1 + 0x40,1);
    uVar8 = 0;
  }
  *(uint *)(param_1 + 0x80) = uVar8;
  param_2 = param_2 + 1;
  goto LAB_00aacb60;
}



undefined4 FUN_00aacfd0(undefined *param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  
  iVar2 = param_2[0x17];
  puVar1 = param_2 + 7;
  *(undefined *)(iVar2 + (int)puVar1) = 0x80;
  uVar4 = iVar2 + 1;
  if (0x38 < uVar4) {
    _memset((void *)(uVar4 + (int)puVar1),0,0x40 - uVar4);
    uVar4 = 0;
    FUN_00adf5c0(param_2,puVar1,1);
  }
  _memset((void *)(uVar4 + (int)puVar1),0,0x38 - uVar4);
  *(undefined *)(param_2 + 0x15) = *(undefined *)(param_2 + 5);
  *(undefined *)((int)param_2 + 0x55) = *(undefined *)((int)param_2 + 0x15);
  *(undefined *)((int)param_2 + 0x56) = *(undefined *)((int)param_2 + 0x16);
  *(undefined *)((int)param_2 + 0x57) = *(undefined *)((int)param_2 + 0x17);
  *(undefined *)(param_2 + 0x16) = *(undefined *)(param_2 + 6);
  *(undefined *)((int)param_2 + 0x59) = *(undefined *)((int)param_2 + 0x19);
  *(undefined *)((int)param_2 + 0x5a) = *(undefined *)((int)param_2 + 0x1a);
  *(undefined *)((int)param_2 + 0x5b) = *(undefined *)((int)param_2 + 0x1b);
  FUN_00adf5c0(param_2,param_2 + 7,1);
  param_2[0x17] = 0;
  _memset(param_2 + 7,0,0x40);
  uVar3 = *param_2;
  *param_1 = (char)uVar3;
  param_1[1] = (char)((uint)uVar3 >> 8);
  param_1[2] = (char)((uint)uVar3 >> 0x10);
  param_1[3] = (char)((uint)uVar3 >> 0x18);
  uVar3 = param_2[1];
  param_1[4] = (char)uVar3;
  param_1[5] = (char)((uint)uVar3 >> 8);
  param_1[6] = (char)((uint)uVar3 >> 0x10);
  param_1[7] = (char)((uint)uVar3 >> 0x18);
  uVar3 = param_2[2];
  param_1[8] = (char)uVar3;
  param_1[9] = (char)((uint)uVar3 >> 8);
  param_1[10] = (char)((uint)uVar3 >> 0x10);
  param_1[0xb] = (char)((uint)uVar3 >> 0x18);
  uVar3 = param_2[3];
  param_1[0xc] = (char)uVar3;
  param_1[0xd] = (char)((uint)uVar3 >> 8);
  param_1[0xe] = (char)((uint)uVar3 >> 0x10);
  param_1[0xf] = (char)((uint)uVar3 >> 0x18);
  uVar3 = param_2[4];
  param_1[0x10] = (char)uVar3;
  param_1[0x11] = (char)((uint)uVar3 >> 8);
  param_1[0x12] = (char)((uint)uVar3 >> 0x10);
  param_1[0x13] = (char)((uint)uVar3 >> 0x18);
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

bool FUN_00aad120(undefined4 param_1,undefined4 param_2,int param_3,undefined4 param_4,int *param_5,
                 undefined4 param_6)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xaad12a;
  local_c = 4;
  local_10 = param_3;
  local_8 = param_2;
  iVar2 = FUN_00a888b0(&local_10,0);
  uVar1 = param_6;
  iVar3 = FUN_00ad1210(param_6);
  if (iVar3 + -0xb < iVar2) {
    FUN_00a7f3c0(4,0x76,0x70,".\\crypto\\rsa\\rsa_saos.c",0x52);
    return false;
  }
  iVar4 = FUN_00a84f80(iVar3 + 1,".\\crypto\\rsa\\rsa_saos.c",0x55);
  if (iVar4 != 0) {
    param_3 = iVar4;
    FUN_00a888b0(&local_10,&param_3);
    iVar2 = FUN_00ad1240(iVar2,iVar4,param_4,uVar1,1);
    if (0 < iVar2) {
      *param_5 = iVar2;
    }
    FUN_00a84330(iVar4,iVar3 + 1);
    FUN_00a85120(iVar4);
    return 0 < iVar2;
  }
  FUN_00a7f3c0(4,0x76,0x41,".\\crypto\\rsa\\rsa_saos.c",0x58);
  return false;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00aad220(undefined4 param_1,int *param_2,uint param_3,undefined4 param_4,int param_5,
            undefined4 param_6)

{
  int iVar1;
  int iVar2;
  uint *puVar3;
  int *piVar4;
  undefined4 local_8;
  int iStack_4;
  
  iStack_4 = 0xaad22a;
  local_8 = 0;
  iVar1 = FUN_00ad1210(param_6);
  if (param_5 != iVar1) {
    FUN_00a7f3c0(4,0x78,0x77,".\\crypto\\rsa\\rsa_saos.c",0x74);
    return 0;
  }
  iVar1 = FUN_00a84f80(param_5,".\\crypto\\rsa\\rsa_saos.c",0x78);
  if (iVar1 == 0) {
    FUN_00a7f3c0(4,0x78,0x41,".\\crypto\\rsa\\rsa_saos.c",0x7b);
    return 0;
  }
  iVar2 = FUN_00ad1260(param_5,param_4,iVar1,param_6,1);
  if ((iVar2 < 1) ||
     (iStack_4 = iVar1, puVar3 = (uint *)FUN_00a88890(0,&iStack_4,iVar2), puVar3 == (uint *)0x0))
  goto LAB_00aad34b;
  if (*puVar3 == param_3) {
    piVar4 = (int *)puVar3[2];
    if (3 < param_3) {
      do {
        if (*param_2 != *piVar4) goto LAB_00aad329;
        param_3 = param_3 - 4;
        piVar4 = piVar4 + 1;
        param_2 = param_2 + 1;
      } while (3 < param_3);
    }
    if ((param_3 != 0) &&
       ((*(char *)piVar4 != *(char *)param_2 ||
        ((1 < param_3 &&
         ((*(char *)((int)piVar4 + 1) != *(char *)((int)param_2 + 1) ||
          ((2 < param_3 && (*(char *)((int)piVar4 + 2) != *(char *)((int)param_2 + 2)))))))))))
    goto LAB_00aad329;
    local_8 = 1;
  }
  else {
LAB_00aad329:
    FUN_00a7f3c0(4,0x78,0x68,".\\crypto\\rsa\\rsa_saos.c",0x89);
  }
  FUN_00a90d80(puVar3);
LAB_00aad34b:
  FUN_00a84330(iVar1,param_5);
  FUN_00a85120(iVar1);
  return local_8;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __thiscall FUN_00aad3a0(uint *param_1_00,int param_1,int param_2)

{
  byte *pbVar1;
  uint uVar2;
  uint uVar3;
  byte *pbVar4;
  uint local_a0;
  uint local_9c;
  int local_98;
  uint local_94;
  uint local_90;
  uint local_8c;
  uint local_88;
  undefined local_84 [128];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_a0;
  if (param_2 != 0) {
    pbVar1 = (byte *)(param_1 + 0xc);
    pbVar4 = (byte *)(param_1 + 0x14);
    local_98 = (param_2 - 1U >> 3) + 1;
    do {
      uVar3 = *param_1_00;
      local_a0 = param_1_00[1];
      param_1_00 = param_1_00 + 2;
      *pbVar1 = *pbVar1 & 0xdf | 0x40;
      *pbVar4 = *pbVar4 & 0xbf | 0x20;
      local_94 = uVar3;
      local_90 = local_a0;
      local_8c = uVar3;
      local_88 = local_a0;
      FUN_00ac5d00(pbVar1);
      FUN_00ac5d80(pbVar1,local_84);
      FUN_00ac4400(&local_8c,local_84,1);
      FUN_00ac5d00(pbVar4);
      FUN_00ac5d80(pbVar4,local_84);
      FUN_00ac4400(&local_94,local_84,1);
      local_9c = local_90 ^ local_a0;
      local_a0 = local_a0 ^ local_88;
      uVar2 = local_94 ^ uVar3;
      uVar3 = uVar3 ^ local_8c;
      *pbVar1 = (byte)uVar3;
      *(char *)(param_1 + 0xd) = (char)(uVar3 >> 8);
      *(char *)(param_1 + 0xe) = (char)(uVar3 >> 0x10);
      *(char *)(param_1 + 0xf) = (char)(uVar3 >> 0x18);
      *(char *)(param_1 + 0x10) = (char)local_9c;
      *(char *)(param_1 + 0x11) = (char)(local_9c >> 8);
      *(char *)(param_1 + 0x12) = (char)(local_9c >> 0x10);
      *(char *)(param_1 + 0x13) = (char)(local_9c >> 0x18);
      *pbVar4 = (byte)uVar2;
      *(char *)(param_1 + 0x15) = (char)(uVar2 >> 8);
      *(char *)(param_1 + 0x16) = (char)(uVar2 >> 0x10);
      *(char *)(param_1 + 0x17) = (char)(uVar2 >> 0x18);
      *(char *)(param_1 + 0x18) = (char)local_a0;
      *(char *)(param_1 + 0x19) = (char)(local_a0 >> 8);
      local_98 = local_98 + -1;
      *(char *)(param_1 + 0x1a) = (char)(local_a0 >> 0x10);
      *(char *)(param_1 + 0x1b) = (char)(local_a0 >> 0x18);
    } while (local_98 != 0);
    local_98 = 0;
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00aad670(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int local_4;
  
  local_4 = 0xaad67a;
  uVar4 = 0xffffffff;
  local_4 = FUN_00ae0af0();
  if (local_4 == 0) {
    return 0xffffffff;
  }
  iVar3 = FUN_00ae0ab0(&local_4,&param_4,param_5);
  iVar2 = local_4;
  uVar1 = param_6;
  if (iVar3 != 0) {
    iVar3 = FUN_00ad74a0(param_6);
    if (iVar3 == 0) {
      FUN_00ae0b00(local_4);
      return 0;
    }
    uVar4 = (**(code **)(*(int *)(iVar3 + 0xc) + 0xc))(param_2,param_3,iVar2,uVar1);
  }
  FUN_00ae0b00(local_4);
  return uVar4;
}



undefined4
FUN_00aad710(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 *param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  int iVar1;
  undefined4 uVar2;
  
  FUN_00a86da0(param_2,param_3);
  uVar2 = param_8;
  iVar1 = FUN_00ad74a0(param_8);
  if (iVar1 != 0) {
    iVar1 = (**(code **)(*(int *)(iVar1 + 0xc) + 4))(param_2,param_3,param_6,param_7,uVar2);
    if (iVar1 != 0) {
      uVar2 = FUN_00ae0ad0(iVar1,&param_4);
      *param_5 = uVar2;
      FUN_00ae0b00(iVar1);
      return 1;
    }
  }
  *param_5 = 0;
  return 0;
}



void FUN_00aad790(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  
  iVar1 = FUN_00ad74a0(param_1);
  if (iVar1 == 0) {
    return;
  }
  (**(code **)(*(int *)(iVar1 + 0xc) + 8))(param_1,param_2,param_3,param_4);
  return;
}



void FUN_00aad7d0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  FUN_00aad710(param_1,param_2,param_3,param_4,param_5,0,0,param_6);
  return;
}



void FUN_00aad860(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00dbe998);
  return;
}



void FUN_00aad8d0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00dbe9cc);
  return;
}



void FUN_00aad8f0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00dbe9cc);
  return;
}



void FUN_00aad910(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00dbeab4);
  return;
}



void FUN_00aad930(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00dbeab4);
  return;
}



void FUN_00aad960(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00dbeb7c);
  return;
}



undefined4
FUN_00aad980(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 *param_5,undefined4 param_6)

{
  int iVar1;
  undefined4 uVar2;
  
  FUN_00a86da0(param_2,param_3);
  iVar1 = FUN_00ad3940(param_2,param_3,param_6);
  if (iVar1 == 0) {
    *param_5 = 0;
    return 0;
  }
  uVar2 = FUN_00a8ba30(iVar1,&param_4,&DAT_00dbe998);
  *param_5 = uVar2;
  FUN_00ad3990(iVar1);
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00aad9e0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6)

{
  int iVar1;
  undefined4 uVar2;
  int local_4;
  
  local_4 = 0xaad9ea;
  uVar2 = 0xffffffff;
  local_4 = FUN_00ad3960();
  if (local_4 == 0) {
    return 0xffffffff;
  }
  iVar1 = FUN_00a8ae20(&local_4,&param_4,param_5,&DAT_00dbe998);
  if (iVar1 != 0) {
    uVar2 = FUN_00ae0e00(param_2,param_3,local_4,param_6);
  }
  FUN_00ad3990(local_4);
  return uVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aada50(uint *param_1,byte *param_2,int param_3)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  uint uVar24;
  uint uVar25;
  
  uVar22 = param_1[1];
  uVar21 = *param_1;
  do {
    uVar14 = param_1[2];
    uVar18 = param_1[3];
    uVar12 = (uint)*param_2 << 0x18 | (uint)param_2[1] << 0x10 | (uint)param_2[2] << 8 |
             (uint)param_2[3];
    uVar13 = (uint)param_2[4] << 0x18 | (uint)param_2[5] << 0x10 | (uint)param_2[6] << 8 |
             (uint)param_2[7];
    uVar19 = ((uVar18 ^ uVar14) & uVar22 ^ uVar18) + (uVar21 << 5 | uVar21 >> 0x1b) + uVar12 +
             0x5a827999 + param_1[4];
    uVar1 = (uint)param_2[8] << 0x18 | (uint)param_2[9] << 0x10 | (uint)param_2[10] << 8 |
            (uint)param_2[0xb];
    uVar17 = uVar22 << 0x1e | uVar22 >> 2;
    uVar18 = ((uVar14 ^ uVar17) & uVar21 ^ uVar14) + (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar13 +
             0x5a827999 + uVar18;
    uVar21 = uVar21 << 0x1e | uVar21 >> 2;
    uVar2 = (uint)param_2[0xc] << 0x18 | (uint)param_2[0xd] << 0x10 | (uint)param_2[0xe] << 8 |
            (uint)param_2[0xf];
    uVar22 = uVar14 + 0x5a827999 +
             ((uVar17 ^ uVar21) & uVar19 ^ uVar17) + (uVar18 * 0x20 | uVar18 >> 0x1b) + uVar1;
    uVar3 = (uint)param_2[0x10] << 0x18 | (uint)param_2[0x11] << 0x10 | (uint)param_2[0x12] << 8 |
            (uint)param_2[0x13];
    uVar19 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar14 = uVar18 * 0x40000000 | uVar18 >> 2;
    uVar4 = (uint)param_2[0x14] << 0x18 | (uint)param_2[0x15] << 0x10 | (uint)param_2[0x16] << 8 |
            (uint)param_2[0x17];
    uVar17 = ((uVar19 ^ uVar21) & uVar18 ^ uVar21) + (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar2 +
             0x5a827999 + uVar17;
    uVar21 = ((uVar19 ^ uVar14) & uVar22 ^ uVar19) + (uVar17 * 0x20 | uVar17 >> 0x1b) + uVar3 +
             0x5a827999 + uVar21;
    uVar22 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar5 = (uint)param_2[0x18] << 0x18 | (uint)param_2[0x19] << 0x10 | (uint)param_2[0x1a] << 8 |
            (uint)param_2[0x1b];
    uVar19 = ((uVar14 ^ uVar22) & uVar17 ^ uVar14) + (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar4 +
             0x5a827999 + uVar19;
    uVar6 = (uint)param_2[0x1c] << 0x18 | (uint)param_2[0x1d] << 0x10 | (uint)param_2[0x1e] << 8 |
            (uint)param_2[0x1f];
    uVar18 = uVar17 * 0x40000000 | uVar17 >> 2;
    uVar17 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar14 = ((uVar22 ^ uVar18) & uVar21 ^ uVar22) + (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar5 +
             0x5a827999 + uVar14;
    uVar7 = (uint)param_2[0x20] << 0x18 | (uint)param_2[0x21] << 0x10 | (uint)param_2[0x22] << 8 |
            (uint)param_2[0x23];
    uVar22 = ((uVar18 ^ uVar17) & uVar19 ^ uVar18) + (uVar14 * 0x20 | uVar14 >> 0x1b) + uVar6 +
             0x5a827999 + uVar22;
    uVar21 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar8 = (uint)param_2[0x24] << 0x18 | (uint)param_2[0x25] << 0x10 | (uint)param_2[0x26] << 8 |
            (uint)param_2[0x27];
    uVar18 = ((uVar17 ^ uVar21) & uVar14 ^ uVar17) + (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar7 +
             0x5a827999 + uVar18;
    uVar9 = (uint)param_2[0x28] << 0x18 | (uint)param_2[0x29] << 0x10 | (uint)param_2[0x2a] << 8 |
            (uint)param_2[0x2b];
    uVar19 = uVar14 * 0x40000000 | uVar14 >> 2;
    uVar14 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar17 = ((uVar19 ^ uVar21) & uVar22 ^ uVar21) + (uVar18 * 0x20 | uVar18 >> 0x1b) + uVar8 +
             0x5a827999 + uVar17;
    uVar10 = (uint)param_2[0x2c] << 0x18 | (uint)param_2[0x2d] << 0x10 | (uint)param_2[0x2e] << 8 |
             (uint)param_2[0x2f];
    uVar21 = ((uVar19 ^ uVar14) & uVar18 ^ uVar19) + (uVar17 * 0x20 | uVar17 >> 0x1b) + uVar9 +
             0x5a827999 + uVar21;
    uVar22 = uVar18 * 0x40000000 | uVar18 >> 2;
    uVar18 = (uint)param_2[0x30] << 0x18 | (uint)param_2[0x31] << 0x10 | (uint)param_2[0x32] << 8 |
             (uint)param_2[0x33];
    uVar19 = ((uVar14 ^ uVar22) & uVar17 ^ uVar14) + (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar10 +
             0x5a827999 + uVar19;
    uVar11 = (uint)param_2[0x34] << 0x18 | (uint)param_2[0x35] << 0x10 | (uint)param_2[0x36] << 8 |
             (uint)param_2[0x37];
    uVar20 = uVar17 * 0x40000000 | uVar17 >> 2;
    uVar15 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar14 = ((uVar22 ^ uVar20) & uVar21 ^ uVar22) + (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar18 +
             0x5a827999 + uVar14;
    uVar16 = (uint)param_2[0x38] << 0x18 | (uint)param_2[0x39] << 0x10 | (uint)param_2[0x3a] << 8 |
             (uint)param_2[0x3b];
    uVar22 = uVar22 + 0x5a827999 +
             ((uVar20 ^ uVar15) & uVar19 ^ uVar20) + (uVar14 * 0x20 | uVar14 >> 0x1b) + uVar11;
    uVar23 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar17 = (uint)param_2[0x3c] << 0x18 | (uint)param_2[0x3d] << 0x10 | (uint)param_2[0x3e] << 8 |
             (uint)param_2[0x3f];
    param_2 = param_2 + 0x40;
    uVar21 = uVar20 + 0x5a827999 +
             ((uVar15 ^ uVar23) & uVar14 ^ uVar15) + (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar16;
    uVar14 = uVar14 * 0x40000000 | uVar14 >> 2;
    uVar19 = uVar15 + 0x5a827999 +
             ((uVar14 ^ uVar23) & uVar22 ^ uVar23) + (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar17;
    uVar15 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar12 = uVar11 ^ uVar7 ^ uVar1 ^ uVar12;
    uVar22 = uVar12 + 0x5a827999 +
             ((uVar14 ^ uVar15) & uVar21 ^ uVar14) + (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar23;
    uVar23 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar13 = uVar16 ^ uVar8 ^ uVar2 ^ uVar13;
    uVar20 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar21 = uVar13 + 0x5a827999 +
             ((uVar15 ^ uVar23) & uVar19 ^ uVar15) + (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar14;
    uVar1 = uVar17 ^ uVar9 ^ uVar3 ^ uVar1;
    uVar19 = uVar1 + 0x5a827999 +
             ((uVar23 ^ uVar20) & uVar22 ^ uVar23) + (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar15;
    uVar15 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar24 = uVar10 ^ uVar4 ^ uVar2 ^ uVar12;
    uVar14 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar22 = uVar24 + 0x5a827999 +
             ((uVar20 ^ uVar15) & uVar21 ^ uVar20) + (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar23;
    uVar2 = uVar18 ^ uVar5 ^ uVar3 ^ uVar13;
    uVar23 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar21 = uVar2 + 0x6ed9eba1 +
             (uVar19 ^ uVar15 ^ uVar14) + (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar20;
    uVar20 = uVar11 ^ uVar6 ^ uVar4 ^ uVar1;
    uVar3 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar22 = uVar20 + 0x6ed9eba1 +
             (uVar23 ^ uVar22 ^ uVar14) + (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar15;
    uVar4 = uVar16 ^ uVar7 ^ uVar5 ^ uVar24;
    uVar15 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar21 = uVar4 + 0x6ed9eba1 +
             (uVar23 ^ uVar3 ^ uVar21) + (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar14;
    uVar25 = uVar17 ^ uVar8 ^ uVar6 ^ uVar2;
    uVar19 = uVar25 + 0x6ed9eba1 +
             (uVar3 ^ uVar15 ^ uVar22) + (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar23;
    uVar14 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar5 = uVar9 ^ uVar7 ^ uVar20 ^ uVar12;
    uVar22 = uVar5 + 0x6ed9eba1 +
             (uVar15 ^ uVar14 ^ uVar21) + (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar3;
    uVar7 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar23 = uVar10 ^ uVar8 ^ uVar4 ^ uVar13;
    uVar3 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar21 = uVar23 + 0x6ed9eba1 +
             (uVar14 ^ uVar7 ^ uVar19) + (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar15;
    uVar6 = uVar18 ^ uVar9 ^ uVar25 ^ uVar1;
    uVar19 = uVar6 + 0x6ed9eba1 +
             (uVar22 ^ uVar7 ^ uVar3) + (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar14;
    uVar15 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar10 = uVar11 ^ uVar10 ^ uVar5 ^ uVar24;
    uVar22 = uVar10 + 0x6ed9eba1 +
             (uVar15 ^ uVar21 ^ uVar3) + (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar7;
    uVar14 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar8 = uVar16 ^ uVar18 ^ uVar23 ^ uVar2;
    uVar9 = uVar16 ^ uVar10 ^ uVar4 ^ uVar12;
    uVar7 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar11 = uVar17 ^ uVar11 ^ uVar6 ^ uVar20;
    uVar21 = uVar8 + 0x6ed9eba1 +
             (uVar15 ^ uVar14 ^ uVar19) + (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar3;
    uVar18 = uVar17 ^ uVar8 ^ uVar25 ^ uVar13;
    uVar19 = uVar11 + 0x6ed9eba1 +
             (uVar14 ^ uVar7 ^ uVar22) + (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar15;
    uVar17 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar3 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar22 = uVar9 + 0x6ed9eba1 +
             (uVar7 ^ uVar17 ^ uVar21) + (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar14;
    uVar21 = uVar18 + 0x6ed9eba1 +
             (uVar17 ^ uVar3 ^ uVar19) + (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar7;
    uVar14 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar12 = uVar11 ^ uVar5 ^ uVar1 ^ uVar12;
    uVar19 = uVar12 + 0x6ed9eba1 +
             (uVar22 ^ uVar3 ^ uVar14) + (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar17;
    uVar7 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar13 = uVar9 ^ uVar23 ^ uVar24 ^ uVar13;
    uVar17 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar22 = uVar13 + 0x6ed9eba1 +
             (uVar7 ^ uVar21 ^ uVar14) + (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar3;
    uVar1 = uVar18 ^ uVar6 ^ uVar2 ^ uVar1;
    uVar3 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar21 = uVar1 + 0x6ed9eba1 +
             (uVar7 ^ uVar17 ^ uVar19) + (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar14;
    uVar15 = uVar10 ^ uVar20 ^ uVar24 ^ uVar12;
    uVar19 = uVar15 + 0x6ed9eba1 +
             (uVar17 ^ uVar3 ^ uVar22) + (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar7;
    uVar14 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar2 = uVar8 ^ uVar4 ^ uVar2 ^ uVar13;
    uVar7 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar22 = uVar2 + 0x6ed9eba1 +
             (uVar3 ^ uVar14 ^ uVar21) + (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar17;
    uVar16 = uVar11 ^ uVar25 ^ uVar20 ^ uVar1;
    uVar17 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar21 = uVar16 + 0x6ed9eba1 +
             (uVar14 ^ uVar7 ^ uVar19) + (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar3;
    uVar3 = uVar9 ^ uVar5 ^ uVar4 ^ uVar15;
    uVar20 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar22 = uVar3 + 0x6ed9eba1 +
             (uVar22 ^ uVar7 ^ uVar17) + (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar14;
    uVar24 = uVar18 ^ uVar23 ^ uVar25 ^ uVar2;
    uVar19 = uVar24 + 0x6ed9eba1 +
             (uVar20 ^ uVar21 ^ uVar17) + (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar7;
    uVar7 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar25 = uVar6 ^ uVar5 ^ uVar16 ^ uVar12;
    uVar14 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar22 = (uVar19 * 0x20 | uVar19 >> 0x1b) + 0x8f1bbcdc +
             ((uVar7 | uVar22) & uVar20 | uVar7 & uVar22) + uVar17 + uVar25;
    uVar17 = uVar10 ^ uVar23 ^ uVar3 ^ uVar13;
    uVar4 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar21 = (uVar22 * 0x20 | uVar22 >> 0x1b) + 0x8f1bbcdc +
             ((uVar14 | uVar19) & uVar7 | uVar14 & uVar19) + uVar20 + uVar17;
    uVar5 = uVar8 ^ uVar6 ^ uVar24 ^ uVar1;
    uVar19 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar22 = (uVar21 * 0x20 | uVar21 >> 0x1b) + 0x8f1bbcdc +
             ((uVar4 | uVar22) & uVar14 | uVar4 & uVar22) + uVar7 + uVar5;
    uVar6 = uVar11 ^ uVar10 ^ uVar25 ^ uVar15;
    uVar7 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar21 = (uVar22 * 0x20 | uVar22 >> 0x1b) + 0x8f1bbcdc +
             ((uVar19 | uVar21) & uVar4 | uVar19 & uVar21) + uVar14 + uVar6;
    uVar14 = uVar9 ^ uVar8 ^ uVar17 ^ uVar2;
    uVar8 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar22 = (uVar21 * 0x20 | uVar21 >> 0x1b) + 0x8f1bbcdc +
             ((uVar22 | uVar7) & uVar19 | uVar22 & uVar7) + uVar4 + uVar14;
    uVar4 = uVar18 ^ uVar11 ^ uVar5 ^ uVar16;
    uVar9 = uVar9 ^ uVar6 ^ uVar3 ^ uVar12;
    uVar11 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar21 = (uVar22 * 0x20 | uVar22 >> 0x1b) + 0x8f1bbcdc +
             ((uVar8 | uVar21) & uVar7 | uVar8 & uVar21) + uVar19 + uVar4;
    uVar10 = uVar18 ^ uVar14 ^ uVar24 ^ uVar13;
    uVar19 = ((uVar11 | uVar22) & uVar8 | uVar11 & uVar22) + uVar7 + uVar9 + -0x70e44324 +
             (uVar21 * 0x20 | uVar21 >> 0x1b);
    uVar7 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar18 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar12 = uVar4 ^ uVar25 ^ uVar1 ^ uVar12;
    uVar22 = (uVar19 * 0x20 | uVar19 >> 0x1b) + 0x8f1bbcdc +
             ((uVar7 | uVar21) & uVar11 | uVar7 & uVar21) + uVar8 + uVar10;
    uVar13 = uVar9 ^ uVar17 ^ uVar15 ^ uVar13;
    uVar20 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar21 = ((uVar18 | uVar19) & uVar7 | uVar18 & uVar19) + uVar11 + uVar12 + -0x70e44324 +
             (uVar22 * 0x20 | uVar22 >> 0x1b);
    uVar19 = ((uVar20 | uVar22) & uVar18 | uVar20 & uVar22) + uVar7 + uVar13 + -0x70e44324 +
             (uVar21 * 0x20 | uVar21 >> 0x1b);
    uVar7 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar1 = uVar10 ^ uVar5 ^ uVar2 ^ uVar1;
    uVar8 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar22 = (uVar19 * 0x20 | uVar19 >> 0x1b) + 0x8f1bbcdc +
             ((uVar21 | uVar7) & uVar20 | uVar21 & uVar7) + uVar18 + uVar1;
    uVar18 = uVar6 ^ uVar16 ^ uVar15 ^ uVar12;
    uVar11 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar21 = (uVar22 * 0x20 | uVar22 >> 0x1b) + 0x8f1bbcdc +
             ((uVar8 | uVar19) & uVar7 | uVar8 & uVar19) + uVar20 + uVar18;
    uVar2 = uVar14 ^ uVar3 ^ uVar2 ^ uVar13;
    uVar19 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar22 = (uVar21 * 0x20 | uVar21 >> 0x1b) + 0x8f1bbcdc +
             ((uVar11 | uVar22) & uVar8 | uVar11 & uVar22) + uVar7 + uVar2;
    uVar7 = uVar4 ^ uVar24 ^ uVar16 ^ uVar1;
    uVar15 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar21 = (uVar22 * 0x20 | uVar22 >> 0x1b) + 0x8f1bbcdc +
             ((uVar19 | uVar21) & uVar11 | uVar19 & uVar21) + uVar8 + uVar7;
    uVar3 = uVar9 ^ uVar25 ^ uVar3 ^ uVar18;
    uVar8 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar22 = (uVar21 * 0x20 | uVar21 >> 0x1b) + 0x8f1bbcdc +
             ((uVar15 | uVar22) & uVar19 | uVar15 & uVar22) + uVar11 + uVar3;
    uVar11 = uVar10 ^ uVar17 ^ uVar24 ^ uVar2;
    uVar16 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar21 = (uVar22 * 0x20 | uVar22 >> 0x1b) + 0x8f1bbcdc +
             ((uVar8 | uVar21) & uVar15 | uVar8 & uVar21) + uVar19 + uVar11;
    uVar20 = uVar5 ^ uVar25 ^ uVar7 ^ uVar12;
    uVar19 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar22 = (uVar21 * 0x20 | uVar21 >> 0x1b) + 0x8f1bbcdc +
             ((uVar22 | uVar16) & uVar8 | uVar22 & uVar16) + uVar15 + uVar20;
    uVar17 = uVar6 ^ uVar17 ^ uVar3 ^ uVar13;
    uVar15 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar21 = (uVar22 * 0x20 | uVar22 >> 0x1b) + 0x8f1bbcdc +
             ((uVar19 | uVar21) & uVar16 | uVar19 & uVar21) + uVar8 + uVar17;
    uVar5 = uVar14 ^ uVar5 ^ uVar11 ^ uVar1;
    uVar8 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar22 = (uVar21 * 0x20 | uVar21 >> 0x1b) + 0x8f1bbcdc +
             ((uVar15 | uVar22) & uVar19 | uVar15 & uVar22) + uVar16 + uVar5;
    uVar6 = uVar4 ^ uVar6 ^ uVar20 ^ uVar18;
    uVar16 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar21 = (uVar22 * 0x20 | uVar22 >> 0x1b) + 0x8f1bbcdc +
             ((uVar8 | uVar21) & uVar15 | uVar8 & uVar21) + uVar19 + uVar6;
    uVar14 = uVar9 ^ uVar14 ^ uVar17 ^ uVar2;
    uVar23 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar22 = (uVar8 ^ uVar16 ^ uVar22) + uVar14 + -0x359d3e2a +
             (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar15;
    uVar4 = uVar10 ^ uVar4 ^ uVar5 ^ uVar7;
    uVar19 = (uVar16 ^ uVar23 ^ uVar21) + uVar4 + -0x359d3e2a +
             (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar8;
    uVar8 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar9 = uVar9 ^ uVar6 ^ uVar3 ^ uVar12;
    uVar21 = (uVar22 ^ uVar23 ^ uVar8) + uVar9 + -0x359d3e2a +
             (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar16;
    uVar15 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar10 = uVar10 ^ uVar14 ^ uVar11 ^ uVar13;
    uVar22 = (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar23 + -0x359d3e2a +
             (uVar15 ^ uVar19 ^ uVar8) + uVar10;
    uVar16 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar12 = uVar12 ^ uVar4 ^ uVar20 ^ uVar1;
    uVar19 = (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar8 + -0x359d3e2a +
             (uVar15 ^ uVar16 ^ uVar21) + uVar12;
    uVar8 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar13 = uVar13 ^ uVar9 ^ uVar17 ^ uVar18;
    uVar23 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar22 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar13 + -0x359d3e2a +
             (uVar16 ^ uVar8 ^ uVar22) + uVar15;
    uVar1 = uVar1 ^ uVar10 ^ uVar5 ^ uVar2;
    uVar21 = (uVar8 ^ uVar23 ^ uVar19) + uVar1 + -0x359d3e2a +
             (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar16;
    uVar15 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar16 = uVar6 ^ uVar7 ^ uVar18 ^ uVar12;
    uVar19 = (uVar23 ^ uVar15 ^ uVar22) + uVar16 + -0x359d3e2a +
             (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar8;
    uVar18 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar24 = uVar14 ^ uVar3 ^ uVar2 ^ uVar13;
    uVar22 = (uVar21 ^ uVar15 ^ uVar18) + uVar24 + -0x359d3e2a +
             (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar23;
    uVar2 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar7 = uVar4 ^ uVar11 ^ uVar7 ^ uVar1;
    uVar8 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar21 = (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar15 + -0x359d3e2a +
             (uVar2 ^ uVar19 ^ uVar18) + uVar7;
    uVar3 = uVar9 ^ uVar20 ^ uVar3 ^ uVar16;
    uVar19 = (uVar2 ^ uVar8 ^ uVar22) + uVar3 + -0x359d3e2a +
             (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar18;
    uVar18 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar11 = uVar10 ^ uVar17 ^ uVar11 ^ uVar24;
    uVar22 = (uVar8 ^ uVar18 ^ uVar21) + uVar11 + -0x359d3e2a +
             (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar2;
    uVar2 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar15 = uVar5 ^ uVar20 ^ uVar7 ^ uVar12;
    uVar21 = (uVar18 ^ uVar2 ^ uVar19) + uVar15 + -0x359d3e2a +
             (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar8;
    uVar8 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar17 = uVar6 ^ uVar17 ^ uVar3 ^ uVar13;
    uVar19 = (uVar2 ^ uVar8 ^ uVar22) + uVar17 + -0x359d3e2a +
             (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar18;
    uVar18 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar1 = uVar14 ^ uVar5 ^ uVar11 ^ uVar1;
    uVar22 = (uVar21 ^ uVar8 ^ uVar18) + uVar1 + -0x359d3e2a +
             (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar2;
    uVar5 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar16 = uVar4 ^ uVar6 ^ uVar15 ^ uVar16;
    uVar6 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar21 = (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar8 + -0x359d3e2a +
             (uVar5 ^ uVar19 ^ uVar18) + uVar16;
    uVar24 = uVar9 ^ uVar14 ^ uVar17 ^ uVar24;
    uVar19 = (uVar5 ^ uVar6 ^ uVar22) + uVar24 + -0x359d3e2a +
             (uVar21 * 0x20 | uVar21 >> 0x1b) + uVar18;
    uVar14 = uVar22 * 0x40000000 | uVar22 >> 2;
    uVar2 = uVar21 * 0x40000000 | uVar21 >> 2;
    uVar18 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar5 + -0x359d3e2a +
             (uVar10 ^ uVar4 ^ uVar1 ^ uVar7) + (uVar6 ^ uVar14 ^ uVar21);
    uVar17 = uVar19 * 0x40000000 | uVar19 >> 2;
    uVar22 = (uVar9 ^ uVar16 ^ uVar3 ^ uVar12) + (uVar14 ^ uVar2 ^ uVar19) + -0x359d3e2a +
             (uVar18 * 0x20 | uVar18 >> 0x1b) + uVar6;
    param_1[1] = param_1[1] + uVar22;
    *param_1 = *param_1 +
               (uVar10 ^ uVar24 ^ uVar11 ^ uVar13) + (uVar2 ^ uVar17 ^ uVar18) + -0x359d3e2a +
               (uVar22 * 0x20 | uVar22 >> 0x1b) + uVar14;
    uVar21 = *param_1;
    uVar22 = param_1[1];
    param_1[2] = (uVar18 * 0x40000000 | uVar18 >> 2) + param_1[2];
    param_1[3] = param_1[3] + uVar17;
    param_3 = param_3 + -1;
    param_1[4] = param_1[4] + uVar2;
  } while (param_3 != 0);
  return;
}



undefined4 FUN_00aaf040(undefined *param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  
  iVar2 = param_2[0x17];
  puVar1 = param_2 + 7;
  *(undefined *)(iVar2 + (int)puVar1) = 0x80;
  uVar4 = iVar2 + 1;
  if (0x38 < uVar4) {
    _memset((void *)(uVar4 + (int)puVar1),0,0x40 - uVar4);
    uVar4 = 0;
    FUN_00aada50(param_2,puVar1,1);
  }
  _memset((void *)(uVar4 + (int)puVar1),0,0x38 - uVar4);
  *(undefined *)(param_2 + 0x15) = *(undefined *)((int)param_2 + 0x1b);
  *(undefined *)((int)param_2 + 0x55) = *(undefined *)((int)param_2 + 0x1a);
  *(undefined *)((int)param_2 + 0x56) = *(undefined *)((int)param_2 + 0x19);
  *(undefined *)((int)param_2 + 0x57) = *(undefined *)(param_2 + 6);
  *(undefined *)(param_2 + 0x16) = *(undefined *)((int)param_2 + 0x17);
  *(undefined *)((int)param_2 + 0x59) = *(undefined *)((int)param_2 + 0x16);
  *(undefined *)((int)param_2 + 0x5a) = *(undefined *)((int)param_2 + 0x15);
  *(undefined *)((int)param_2 + 0x5b) = *(undefined *)(param_2 + 5);
  FUN_00aada50(param_2,param_2 + 7,1);
  param_2[0x17] = 0;
  _memset(param_2 + 7,0,0x40);
  uVar3 = *param_2;
  *param_1 = (char)((uint)uVar3 >> 0x18);
  param_1[1] = (char)((uint)uVar3 >> 0x10);
  param_1[2] = (char)((uint)uVar3 >> 8);
  param_1[3] = (char)uVar3;
  uVar3 = param_2[1];
  param_1[4] = (char)((uint)uVar3 >> 0x18);
  param_1[5] = (char)((uint)uVar3 >> 0x10);
  param_1[6] = (char)((uint)uVar3 >> 8);
  param_1[7] = (char)uVar3;
  uVar3 = param_2[2];
  param_1[8] = (char)((uint)uVar3 >> 0x18);
  param_1[9] = (char)((uint)uVar3 >> 0x10);
  param_1[10] = (char)((uint)uVar3 >> 8);
  param_1[0xb] = (char)uVar3;
  uVar3 = param_2[3];
  param_1[0xc] = (char)((uint)uVar3 >> 0x18);
  param_1[0xd] = (char)((uint)uVar3 >> 0x10);
  param_1[0xe] = (char)((uint)uVar3 >> 8);
  param_1[0xf] = (char)uVar3;
  uVar3 = param_2[4];
  param_1[0x10] = (char)((uint)uVar3 >> 0x18);
  param_1[0x11] = (char)((uint)uVar3 >> 0x10);
  param_1[0x12] = (char)((uint)uVar3 >> 8);
  param_1[0x13] = (char)uVar3;
  return 1;
}



undefined4 FUN_00aaf190(undefined4 *param_1)

{
  _memset(param_1,0,0x5c);
  *param_1 = 0x67452301;
  param_1[1] = 0xefcdab89;
  param_1[2] = 0x98badcfe;
  param_1[3] = 0x10325476;
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aaf1d0(int *param_1,int *param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  int *piVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  uint uVar24;
  
  uVar23 = param_1[1];
  uVar21 = param_1[2];
  uVar19 = param_1[3];
  piVar17 = param_2;
  param_2 = (int *)*param_1;
  if (param_3 != 0) {
    do {
      iVar1 = *piVar17;
      iVar2 = piVar17[1];
      param_3 = param_3 + -1;
      uVar18 = ((uVar19 ^ uVar21) & uVar23 ^ uVar19) + iVar1 + (int)param_2;
      iVar15 = piVar17[2];
      uVar18 = uVar18 * 8 | uVar18 >> 0x1d;
      uVar19 = ((uVar21 ^ uVar23) & uVar18 ^ uVar21) + iVar2 + uVar19;
      iVar3 = piVar17[3];
      uVar19 = uVar19 * 0x80 | uVar19 >> 0x19;
      uVar21 = ((uVar23 ^ uVar18) & uVar19 ^ uVar23) + iVar15 + uVar21;
      iVar4 = piVar17[4];
      uVar22 = uVar21 * 0x800 | uVar21 >> 0x15;
      uVar23 = ((uVar19 ^ uVar18) & uVar22 ^ uVar18) + iVar3 + uVar23;
      iVar5 = piVar17[5];
      uVar24 = uVar23 * 0x80000 | uVar23 >> 0xd;
      uVar18 = ((uVar19 ^ uVar22) & uVar24 ^ uVar19) + iVar4 + uVar18;
      iVar6 = piVar17[6];
      uVar20 = uVar18 * 8 | uVar18 >> 0x1d;
      uVar19 = ((uVar22 ^ uVar24) & uVar20 ^ uVar22) + iVar5 + uVar19;
      iVar7 = piVar17[7];
      uVar21 = uVar19 * 0x80 | uVar19 >> 0x19;
      uVar22 = ((uVar24 ^ uVar20) & uVar21 ^ uVar24) + iVar6 + uVar22;
      iVar16 = piVar17[8];
      uVar23 = uVar22 * 0x800 | uVar22 >> 0x15;
      uVar24 = ((uVar21 ^ uVar20) & uVar23 ^ uVar20) + iVar7 + uVar24;
      iVar8 = piVar17[9];
      uVar18 = uVar24 * 0x80000 | uVar24 >> 0xd;
      uVar20 = ((uVar21 ^ uVar23) & uVar18 ^ uVar21) + iVar16 + uVar20;
      iVar9 = piVar17[10];
      uVar20 = uVar20 * 8 | uVar20 >> 0x1d;
      uVar21 = ((uVar23 ^ uVar18) & uVar20 ^ uVar23) + iVar8 + uVar21;
      uVar22 = uVar21 * 0x80 | uVar21 >> 0x19;
      iVar10 = piVar17[0xb];
      uVar23 = ((uVar18 ^ uVar20) & uVar22 ^ uVar18) + iVar9 + uVar23;
      iVar11 = piVar17[0xc];
      uVar19 = uVar23 * 0x800 | uVar23 >> 0x15;
      uVar18 = ((uVar22 ^ uVar20) & uVar19 ^ uVar20) + iVar10 + uVar18;
      iVar12 = piVar17[0xd];
      uVar18 = uVar18 * 0x80000 | uVar18 >> 0xd;
      uVar20 = ((uVar22 ^ uVar19) & uVar18 ^ uVar22) + iVar11 + uVar20;
      iVar13 = piVar17[0xe];
      uVar21 = uVar20 * 8 | uVar20 >> 0x1d;
      uVar22 = ((uVar19 ^ uVar18) & uVar21 ^ uVar19) + iVar12 + uVar22;
      iVar14 = piVar17[0xf];
      uVar23 = uVar22 * 0x80 | uVar22 >> 0x19;
      uVar19 = ((uVar18 ^ uVar21) & uVar23 ^ uVar18) + iVar13 + uVar19;
      uVar19 = uVar19 * 0x800 | uVar19 >> 0x15;
      uVar18 = ((uVar23 ^ uVar21) & uVar19 ^ uVar21) + iVar14 + uVar18;
      uVar18 = uVar18 * 0x80000 | uVar18 >> 0xd;
      uVar21 = ((uVar19 | uVar18) & uVar23 | uVar19 & uVar18) + iVar1 + 0x5a827999 + uVar21;
      uVar21 = uVar21 * 8 | uVar21 >> 0x1d;
      uVar23 = ((uVar18 | uVar21) & uVar19 | uVar18 & uVar21) + iVar4 + 0x5a827999 + uVar23;
      uVar22 = uVar23 * 0x20 | uVar23 >> 0x1b;
      uVar19 = ((uVar18 | uVar21) & uVar22 | uVar18 & uVar21) + iVar16 + 0x5a827999 + uVar19;
      uVar23 = uVar19 * 0x200 | uVar19 >> 0x17;
      uVar18 = ((uVar23 | uVar21) & uVar22 | uVar23 & uVar21) + iVar11 + 0x5a827999 + uVar18;
      uVar19 = uVar18 * 0x2000 | uVar18 >> 0x13;
      uVar21 = ((uVar23 | uVar19) & uVar22 | uVar23 & uVar19) + iVar2 + 0x5a827999 + uVar21;
      uVar18 = uVar21 * 8 | uVar21 >> 0x1d;
      uVar21 = uVar22 + 0x5a827999 + ((uVar19 | uVar18) & uVar23 | uVar19 & uVar18) + iVar5;
      uVar21 = uVar21 * 0x20 | uVar21 >> 0x1b;
      uVar23 = ((uVar19 | uVar18) & uVar21 | uVar19 & uVar18) + iVar8 + 0x5a827999 + uVar23;
      uVar23 = uVar23 * 0x200 | uVar23 >> 0x17;
      uVar19 = ((uVar23 | uVar18) & uVar21 | uVar23 & uVar18) + iVar12 + 0x5a827999 + uVar19;
      uVar19 = uVar19 * 0x2000 | uVar19 >> 0x13;
      uVar18 = ((uVar23 | uVar19) & uVar21 | uVar23 & uVar19) + iVar15 + 0x5a827999 + uVar18;
      uVar18 = uVar18 * 8 | uVar18 >> 0x1d;
      uVar21 = uVar21 + 0x5a827999 + ((uVar19 | uVar18) & uVar23 | uVar19 & uVar18) + iVar6;
      uVar21 = uVar21 * 0x20 | uVar21 >> 0x1b;
      uVar23 = ((uVar19 | uVar18) & uVar21 | uVar19 & uVar18) + iVar9 + 0x5a827999 + uVar23;
      uVar23 = uVar23 * 0x200 | uVar23 >> 0x17;
      uVar19 = ((uVar23 | uVar18) & uVar21 | uVar23 & uVar18) + iVar13 + 0x5a827999 + uVar19;
      uVar19 = uVar19 * 0x2000 | uVar19 >> 0x13;
      uVar18 = ((uVar23 | uVar19) & uVar21 | uVar23 & uVar19) + iVar3 + 0x5a827999 + uVar18;
      uVar18 = uVar18 * 8 | uVar18 >> 0x1d;
      uVar21 = uVar21 + 0x5a827999 + ((uVar19 | uVar18) & uVar23 | uVar19 & uVar18) + iVar7;
      uVar21 = uVar21 * 0x20 | uVar21 >> 0x1b;
      uVar23 = ((uVar19 | uVar18) & uVar21 | uVar19 & uVar18) + iVar10 + 0x5a827999 + uVar23;
      uVar23 = uVar23 * 0x200 | uVar23 >> 0x17;
      uVar19 = ((uVar23 | uVar18) & uVar21 | uVar23 & uVar18) + iVar14 + 0x5a827999 + uVar19;
      uVar22 = uVar19 * 0x2000 | uVar19 >> 0x13;
      uVar18 = (uVar21 ^ uVar23 ^ uVar22) + iVar1 + 0x6ed9eba1 + uVar18;
      uVar19 = uVar18 * 8 | uVar18 >> 0x1d;
      uVar21 = (uVar23 ^ uVar22 ^ uVar19) + iVar16 + 0x6ed9eba1 + uVar21;
      uVar18 = uVar21 * 0x200 | uVar21 >> 0x17;
      uVar23 = (uVar18 ^ uVar22 ^ uVar19) + iVar4 + 0x6ed9eba1 + uVar23;
      uVar23 = uVar23 * 0x800 | uVar23 >> 0x15;
      uVar21 = uVar22 + 0x6ed9eba1 + (uVar18 ^ uVar23 ^ uVar19) + iVar11;
      uVar21 = uVar21 * 0x8000 | uVar21 >> 0x11;
      uVar19 = (uVar18 ^ uVar23 ^ uVar21) + iVar15 + 0x6ed9eba1 + uVar19;
      uVar19 = uVar19 * 8 | uVar19 >> 0x1d;
      uVar18 = (uVar23 ^ uVar21 ^ uVar19) + iVar9 + 0x6ed9eba1 + uVar18;
      uVar18 = uVar18 * 0x200 | uVar18 >> 0x17;
      uVar23 = (uVar18 ^ uVar21 ^ uVar19) + iVar6 + 0x6ed9eba1 + uVar23;
      uVar23 = uVar23 * 0x800 | uVar23 >> 0x15;
      uVar21 = (uVar18 ^ uVar23 ^ uVar19) + iVar13 + 0x6ed9eba1 + uVar21;
      uVar21 = uVar21 * 0x8000 | uVar21 >> 0x11;
      uVar19 = (uVar18 ^ uVar23 ^ uVar21) + iVar2 + 0x6ed9eba1 + uVar19;
      uVar19 = uVar19 * 8 | uVar19 >> 0x1d;
      uVar18 = (uVar23 ^ uVar21 ^ uVar19) + iVar8 + 0x6ed9eba1 + uVar18;
      uVar18 = uVar18 * 0x200 | uVar18 >> 0x17;
      uVar23 = (uVar18 ^ uVar21 ^ uVar19) + iVar5 + 0x6ed9eba1 + uVar23;
      uVar23 = uVar23 * 0x800 | uVar23 >> 0x15;
      uVar21 = uVar21 + 0x6ed9eba1 + (uVar18 ^ uVar23 ^ uVar19) + iVar12;
      uVar22 = uVar21 * 0x8000 | uVar21 >> 0x11;
      uVar19 = (uVar18 ^ uVar23 ^ uVar22) + iVar3 + 0x6ed9eba1 + uVar19;
      uVar21 = uVar19 * 8 | uVar19 >> 0x1d;
      uVar18 = (uVar23 ^ uVar22 ^ uVar21) + iVar10 + 0x6ed9eba1 + uVar18;
      uVar19 = uVar18 * 0x200 | uVar18 >> 0x17;
      uVar23 = (uVar19 ^ uVar22 ^ uVar21) + iVar7 + 0x6ed9eba1 + uVar23;
      uVar23 = uVar23 * 0x800 | uVar23 >> 0x15;
      uVar22 = (uVar19 ^ uVar23 ^ uVar21) + iVar14 + 0x6ed9eba1 + uVar22;
      *param_1 = *param_1 + uVar21;
      param_1[2] = param_1[2] + uVar23;
      param_1[3] = param_1[3] + uVar19;
      uVar21 = param_1[2];
      param_1[1] = param_1[1] + (uVar22 * 0x8000 | uVar22 >> 0x11);
      uVar23 = param_1[1];
      uVar19 = param_1[3];
      piVar17 = piVar17 + 0x10;
      param_2 = (int *)*param_1;
    } while (param_3 != 0);
  }
  return;
}



undefined4 FUN_00aaf980(undefined *param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  
  iVar2 = param_2[0x16];
  puVar1 = param_2 + 6;
  *(undefined *)(iVar2 + (int)puVar1) = 0x80;
  uVar4 = iVar2 + 1;
  if (0x38 < uVar4) {
    _memset((void *)(uVar4 + (int)puVar1),0,0x40 - uVar4);
    uVar4 = 0;
    FUN_00aaf1d0(param_2,puVar1,1);
  }
  _memset((void *)(uVar4 + (int)puVar1),0,0x38 - uVar4);
  *(undefined *)(param_2 + 0x14) = *(undefined *)(param_2 + 4);
  *(undefined *)((int)param_2 + 0x51) = *(undefined *)((int)param_2 + 0x11);
  *(undefined *)((int)param_2 + 0x52) = *(undefined *)((int)param_2 + 0x12);
  *(undefined *)((int)param_2 + 0x53) = *(undefined *)((int)param_2 + 0x13);
  *(undefined *)(param_2 + 0x15) = *(undefined *)(param_2 + 5);
  *(undefined *)((int)param_2 + 0x55) = *(undefined *)((int)param_2 + 0x15);
  *(undefined *)((int)param_2 + 0x56) = *(undefined *)((int)param_2 + 0x16);
  *(undefined *)((int)param_2 + 0x57) = *(undefined *)((int)param_2 + 0x17);
  FUN_00aaf1d0(param_2,param_2 + 6,1);
  param_2[0x16] = 0;
  _memset(param_2 + 6,0,0x40);
  uVar3 = *param_2;
  *param_1 = (char)uVar3;
  param_1[1] = (char)((uint)uVar3 >> 8);
  param_1[2] = (char)((uint)uVar3 >> 0x10);
  param_1[3] = (char)((uint)uVar3 >> 0x18);
  uVar3 = param_2[1];
  param_1[4] = (char)uVar3;
  param_1[5] = (char)((uint)uVar3 >> 8);
  param_1[6] = (char)((uint)uVar3 >> 0x10);
  param_1[7] = (char)((uint)uVar3 >> 0x18);
  uVar3 = param_2[2];
  param_1[8] = (char)uVar3;
  param_1[9] = (char)((uint)uVar3 >> 8);
  param_1[10] = (char)((uint)uVar3 >> 0x10);
  param_1[0xb] = (char)((uint)uVar3 >> 0x18);
  uVar3 = param_2[3];
  param_1[0xc] = (char)uVar3;
  param_1[0xd] = (char)((uint)uVar3 >> 8);
  param_1[0xe] = (char)((uint)uVar3 >> 0x10);
  param_1[0xf] = (char)((uint)uVar3 >> 0x18);
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __fastcall FUN_00ab4110(undefined4 param_1_00,uint *param_2,undefined4 *param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  uVar4 = *param_2;
  uVar5 = param_2[3];
  uVar3 = param_2[2];
  uVar8 = param_2[1];
  param_1[0x20] = uVar4;
  param_1[0x21] = uVar8;
  param_1[0x22] = uVar3;
  uVar1 = uVar3 >> 1;
  uVar6 = uVar1 | uVar5 << 0x1f;
  uVar7 = uVar4 >> 1 | uVar8 << 0x1f;
  param_1[0x23] = uVar5;
  uVar2 = uVar4 << 0x1f | uVar5 >> 1;
  uVar3 = -(uVar3 & 1) & 0xe1000000 ^ uVar8 >> 1;
  param_1[0x10] = uVar7;
  param_1[0x11] = uVar3;
  param_1[0x12] = uVar6;
  param_1[0x13] = uVar2;
  uVar6 = uVar6 >> 1 | (uVar5 >> 1) << 0x1f;
  uVar2 = uVar2 >> 1;
  uVar4 = (uVar4 >> 1) << 0x1f | uVar2;
  uVar7 = uVar7 >> 1;
  uVar5 = uVar7 | (uVar8 >> 1) << 0x1f;
  uVar3 = uVar3 >> 1;
  uVar8 = -(uVar1 & 1) & 0xe1000000 ^ uVar3;
  param_1[8] = uVar5;
  param_1[9] = uVar8;
  param_1[10] = uVar6;
  uVar2 = uVar6 >> 1 | uVar2 << 0x1f;
  param_1[0xb] = uVar4;
  uVar7 = uVar7 << 0x1f | uVar4 >> 1;
  uVar6 = uVar5 >> 1 | uVar3 << 0x1f;
  uVar8 = -((uVar1 & 2) >> 1) & 0xe1000000 ^ uVar8 >> 1;
  uVar4 = param_1[9];
  param_1[4] = uVar6;
  param_1[5] = uVar8;
  param_1[6] = uVar2;
  uVar5 = param_1[10];
  param_1[7] = uVar7;
  uVar3 = param_1[8];
  param_1[0xd] = uVar4 ^ uVar8;
  uVar8 = param_1[0xb];
  param_1[0xf] = uVar8 ^ uVar7;
  param_1[0x15] = param_1[5] ^ param_1[0x11];
  param_1[0x17] = param_1[7] ^ param_1[0x13];
  param_1[0xc] = uVar3 ^ uVar6;
  param_1[0x19] = uVar4 ^ param_1[0x11];
  param_1[0x1a] = uVar5 ^ param_1[0x12];
  param_1[0xe] = uVar5 ^ uVar2;
  uVar1 = param_1[0x10];
  param_1[0x16] = param_1[6] ^ param_1[0x12];
  param_1[0x14] = param_1[4] ^ uVar1;
  param_1[0x18] = uVar3 ^ uVar1;
  param_1[0x1c] = param_1[0xc] ^ uVar1;
  param_1[0x1e] = param_1[0xe] ^ param_1[0x12];
  uVar1 = param_1[0x20];
  param_1[0x1b] = uVar8 ^ param_1[0x13];
  uVar7 = param_1[0x21];
  param_1[0x1d] = param_1[0xd] ^ param_1[0x11];
  uVar2 = param_1[0x23];
  param_1[0x1f] = param_1[0xf] ^ param_1[0x13];
  uVar6 = param_1[0x22];
  param_1[0x24] = param_1[4] ^ uVar1;
  param_1[0x25] = param_1[5] ^ uVar7;
  param_1[0x26] = param_1[6] ^ uVar6;
  param_1[0x27] = param_1[7] ^ uVar2;
  param_1[0x29] = uVar4 ^ uVar7;
  param_1[0x28] = uVar3 ^ uVar1;
  param_1[0x2b] = uVar8 ^ uVar2;
  param_1[0x2a] = uVar5 ^ uVar6;
  param_1[0x2d] = param_1[0xd] ^ uVar7;
  param_1[0x2c] = param_1[0xc] ^ uVar1;
  param_1[0x2f] = param_1[0xf] ^ uVar2;
  param_1[0x2e] = param_1[0xe] ^ uVar6;
  param_1[0x30] = uVar1 ^ param_1[0x10];
  param_1[0x31] = uVar7 ^ param_1[0x11];
  param_1[0x33] = param_1[0x13] ^ uVar2;
  param_1[0x32] = param_1[0x12] ^ uVar6;
  param_1[0x35] = param_1[0x15] ^ uVar7;
  param_1[0x34] = param_1[0x14] ^ uVar1;
  param_1[0x36] = uVar6 ^ param_1[0x16];
  param_1[0x37] = uVar2 ^ param_1[0x17];
  param_1[0x39] = param_1[0x19] ^ uVar7;
  param_1[0x38] = param_1[0x18] ^ uVar1;
  param_1[0x3e] = uVar6 ^ param_1[0x1e];
  param_1[0x3f] = uVar2 ^ param_1[0x1f];
  param_1[0x3b] = uVar2 ^ param_1[0x1b];
  param_1[0x3a] = uVar6 ^ param_1[0x1a];
  param_1[0x3c] = uVar1 ^ param_1[0x1c];
  param_1[0x3d] = uVar7 ^ param_1[0x1d];
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ab4530(undefined4 *param_1,undefined4 *param_2,uint param_3)

{
  code *pcVar1;
  undefined4 *puVar2;
  byte *pbVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  
  uVar7 = param_3;
  pcVar1 = (code *)param_1[0x58];
  *param_1 = 0;
  param_1[1] = 0;
  param_1[2] = 0;
  param_1[3] = 0;
  param_1[0x10] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x5b] = 0;
  param_1[0x5a] = 0;
  if (param_3 == 0xc) {
    *param_1 = *param_2;
    param_1[1] = param_2[1];
    param_1[2] = param_2[2];
    *(undefined *)((int)param_1 + 0xf) = 1;
    uVar7 = 1;
  }
  else {
    uVar4 = param_3;
    if (0xf < param_3) {
      iVar6 = (int)param_2 - (int)param_1;
      param_3 = param_3 >> 4;
      do {
        pbVar3 = (byte *)((int)param_2 + 2);
        iVar5 = 4;
        puVar2 = param_1;
        do {
          *(byte *)puVar2 = *(byte *)puVar2 ^ *(byte *)(iVar6 + (int)puVar2);
          *(byte *)((int)puVar2 + 1) = *(byte *)((int)puVar2 + 1) ^ pbVar3[-1];
          *(byte *)((int)puVar2 + 2) = *(byte *)((int)puVar2 + 2) ^ *pbVar3;
          *(byte *)((int)puVar2 + 3) = *(byte *)((int)puVar2 + 3) ^ pbVar3[1];
          puVar2 = puVar2 + 1;
          pbVar3 = pbVar3 + 4;
          iVar5 = iVar5 + -1;
        } while (iVar5 != 0);
        (*pcVar1)(param_1,param_1 + 0x18);
        param_2 = param_2 + 4;
        iVar6 = iVar6 + 0x10;
        uVar4 = uVar4 - 0x10;
        param_3 = param_3 - 1;
      } while (param_3 != 0);
    }
    if (uVar4 != 0) {
      if (uVar4 != 0) {
        puVar2 = param_1;
        do {
          *(byte *)puVar2 = *(byte *)puVar2 ^ *(byte *)((int)puVar2 + ((int)param_2 - (int)param_1))
          ;
          puVar2 = (undefined4 *)((int)puVar2 + 1);
          uVar4 = uVar4 - 1;
        } while (uVar4 != 0);
      }
      (*pcVar1)(param_1,param_1 + 0x18);
    }
    param_1[2] = param_1[2] ^ (uVar7 >> 0x1d) << 0x18;
    uVar4 = uVar7 * 8;
    param_1[3] = param_1[3] ^
                 (uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar7 << 0x1b);
    (*pcVar1)(param_1,param_1 + 0x18);
    uVar7 = param_1[3];
    uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;
  }
  (*(code *)param_1[0x5c])(param_1,param_1 + 8,param_1[0x5d]);
  uVar7 = uVar7 + 1;
  param_1[3] = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 * 0x1000000;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ab46a0(int param_1,byte *param_2,uint param_3)

{
  byte *pbVar1;
  code *pcVar2;
  code *pcVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  
  pcVar2 = *(code **)(param_1 + 0x164);
  pcVar3 = *(code **)(param_1 + 0x160);
  if ((*(uint *)(param_1 + 0x38) | *(uint *)(param_1 + 0x3c)) != 0) {
    return 0xfffffffe;
  }
  iVar5 = param_3 + *(uint *)(param_1 + 0x30);
  uVar4 = *(int *)(param_1 + 0x34) + (uint)CARRY4(param_3,*(uint *)(param_1 + 0x30));
  if ((0x20000000 < uVar4) || ((0x1fffffff < uVar4 && (iVar5 != 0)))) {
    return 0xffffffff;
  }
  uVar6 = *(uint *)(param_1 + 0x16c);
  *(int *)(param_1 + 0x30) = iVar5;
  *(uint *)(param_1 + 0x34) = uVar4;
  if (uVar6 != 0) {
    do {
      if (param_3 == 0) {
        param_3 = 0;
        if (uVar6 != 0) goto LAB_00ab4772;
        break;
      }
      pbVar1 = (byte *)(uVar6 + 0x40 + param_1);
      *pbVar1 = *pbVar1 ^ *param_2;
      param_2 = param_2 + 1;
      param_3 = param_3 - 1;
      uVar6 = uVar6 + 1 & 0xf;
    } while (uVar6 != 0);
    (*pcVar3)(param_1 + 0x40,param_1 + 0x60);
  }
  uVar4 = param_3 & 0xfffffff0;
  if (uVar4 != 0) {
    (*pcVar2)(param_1 + 0x40,param_1 + 0x60,param_2,uVar4);
    param_2 = param_2 + uVar4;
    param_3 = param_3 - uVar4;
  }
  if ((param_3 != 0) && (uVar4 = 0, uVar6 = param_3, param_3 != 0)) {
    do {
      pbVar1 = (byte *)(param_1 + 0x40 + uVar4);
      *pbVar1 = *pbVar1 ^ param_2[uVar4];
      uVar4 = uVar4 + 1;
    } while (uVar4 < param_3);
  }
LAB_00ab4772:
  *(uint *)(param_1 + 0x16c) = uVar6;
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ab4790(int param_1,byte *param_2,uint *param_3,uint param_4)

{
  uint *puVar1;
  byte *pbVar2;
  code *pcVar3;
  undefined4 uVar4;
  code *pcVar5;
  code *pcVar6;
  byte bVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint *puVar11;
  byte *pbVar12;
  uint *puVar13;
  uint local_18;
  int iStack_c;
  uint uStack_8;
  
  pcVar3 = *(code **)(param_1 + 0x170);
  uVar4 = *(undefined4 *)(param_1 + 0x174);
  pcVar5 = *(code **)(param_1 + 0x160);
  pcVar6 = *(code **)(param_1 + 0x164);
  uVar10 = param_4 + *(uint *)(param_1 + 0x38);
  uVar8 = *(int *)(param_1 + 0x3c) + (uint)CARRY4(param_4,*(uint *)(param_1 + 0x38));
  if ((0xf < uVar8) || ((0xe < uVar8 && (0xffffffe0 < uVar10)))) {
    return 0xffffffff;
  }
  *(uint *)(param_1 + 0x38) = uVar10;
  *(uint *)(param_1 + 0x3c) = uVar8;
  if (*(int *)(param_1 + 0x16c) != 0) {
    (*pcVar5)(param_1 + 0x40,param_1 + 0x60);
    *(undefined4 *)(param_1 + 0x16c) = 0;
  }
  uVar8 = *(uint *)(param_1 + 0xc);
  local_18 = *(uint *)(param_1 + 0x168);
  uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
  if (local_18 != 0) {
    do {
      if (param_4 == 0) {
        if (local_18 != 0) goto LAB_00ab4a0c;
        break;
      }
      bVar7 = *(byte *)(param_1 + 0x10 + local_18) ^ *param_2;
      param_4 = param_4 - 1;
      *(byte *)param_3 = bVar7;
      pbVar12 = (byte *)(param_1 + 0x40 + local_18);
      *pbVar12 = *pbVar12 ^ bVar7;
      param_2 = param_2 + 1;
      param_3 = (uint *)((int)param_3 + 1);
      local_18 = local_18 + 1 & 0xf;
    } while (local_18 != 0);
    (*pcVar5)(param_1 + 0x40,param_1 + 0x60);
  }
  if (0xbff < param_4) {
    uStack_8 = param_4 / 0xc00;
    do {
      iStack_c = 0xc0;
      do {
        puVar13 = param_3;
        (*pcVar3)(param_1,param_1 + 0x10,uVar4);
        uVar8 = uVar8 + 1;
        uVar10 = 0;
        *(uint *)(param_1 + 0xc) =
             uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 * 0x1000000;
        puVar11 = puVar13;
        do {
          puVar1 = (uint *)(uVar10 + param_1 + 0x10);
          uVar10 = uVar10 + 4;
          *puVar11 = *(uint *)(((int)param_2 - (int)puVar13) + (int)puVar11) ^ *puVar1;
          puVar11 = puVar11 + 1;
        } while (uVar10 < 0x10);
        param_2 = param_2 + 0x10;
        param_3 = puVar13 + 4;
        iStack_c = iStack_c + -1;
      } while (iStack_c != 0);
      (*pcVar6)(param_1 + 0x40,param_1 + 0x60,puVar13 + -0x2fc,0xc00);
      param_4 = param_4 - 0xc00;
      uStack_8 = uStack_8 - 1;
    } while (uStack_8 != 0);
  }
  uVar10 = param_4 & 0xfffffff0;
  if (uVar10 != 0) {
    if (0xf < param_4) {
      uStack_8 = param_4 >> 4;
      do {
        (*pcVar3)(param_1,param_1 + 0x10,uVar4);
        uVar8 = uVar8 + 1;
        *(uint *)(param_1 + 0xc) =
             uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 * 0x1000000;
        uVar9 = 0;
        puVar11 = param_3;
        do {
          *puVar11 = *(uint *)((int)puVar11 + ((int)param_2 - (int)param_3)) ^
                     *(uint *)(param_1 + 0x10 + uVar9);
          uVar9 = uVar9 + 4;
          puVar11 = puVar11 + 1;
        } while (uVar9 < 0x10);
        param_2 = param_2 + 0x10;
        param_4 = param_4 - 0x10;
        param_3 = param_3 + 4;
        uStack_8 = uStack_8 - 1;
      } while (uStack_8 != 0);
    }
    (*pcVar6)(param_1 + 0x40,param_1 + 0x60,(int)param_3 - uVar10,uVar10);
  }
  if (param_4 != 0) {
    (*pcVar3)(param_1,param_1 + 0x10,uVar4);
    uVar8 = uVar8 + 1;
    *(uint *)(param_1 + 0xc) =
         uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 * 0x1000000;
    pbVar12 = (byte *)((int)param_3 + local_18);
    do {
      bVar7 = *(byte *)(param_1 + 0x10 + local_18) ^ pbVar12[(int)param_2 - (int)param_3];
      *pbVar12 = bVar7;
      pbVar2 = (byte *)(param_1 + 0x40 + local_18);
      *pbVar2 = *pbVar2 ^ bVar7;
      param_4 = param_4 - 1;
      local_18 = local_18 + 1;
      pbVar12 = pbVar12 + 1;
    } while (param_4 != 0);
  }
LAB_00ab4a0c:
  *(uint *)(param_1 + 0x168) = local_18;
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ab4a30(int param_1,byte *param_2,uint *param_3,uint param_4)

{
  uint *puVar1;
  byte *pbVar2;
  byte bVar3;
  code *pcVar4;
  undefined4 uVar5;
  code *pcVar6;
  code *pcVar7;
  uint uVar8;
  byte *pbVar9;
  uint uVar10;
  uint *puVar11;
  uint local_18;
  int iStack_c;
  uint uStack_8;
  uint local_4;
  
  pcVar4 = *(code **)(param_1 + 0x170);
  uVar5 = *(undefined4 *)(param_1 + 0x174);
  pcVar6 = *(code **)(param_1 + 0x160);
  pcVar7 = *(code **)(param_1 + 0x164);
  uVar10 = param_4 + *(uint *)(param_1 + 0x38);
  uVar8 = *(int *)(param_1 + 0x3c) + (uint)CARRY4(param_4,*(uint *)(param_1 + 0x38));
  if ((0xf < uVar8) || ((0xe < uVar8 && (0xffffffe0 < uVar10)))) {
    return 0xffffffff;
  }
  *(uint *)(param_1 + 0x38) = uVar10;
  *(uint *)(param_1 + 0x3c) = uVar8;
  if (*(int *)(param_1 + 0x16c) != 0) {
    (*pcVar6)(param_1 + 0x40,param_1 + 0x60);
    *(undefined4 *)(param_1 + 0x16c) = 0;
  }
  uVar8 = *(uint *)(param_1 + 0xc);
  local_18 = *(uint *)(param_1 + 0x168);
  uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
  if (local_18 != 0) {
    do {
      if (param_4 == 0) {
        if (local_18 != 0) goto LAB_00ab4c8e;
        break;
      }
      bVar3 = *param_2;
      param_4 = param_4 - 1;
      param_2 = param_2 + 1;
      *(byte *)param_3 = *(byte *)(param_1 + 0x10 + local_18) ^ bVar3;
      pbVar9 = (byte *)(param_1 + 0x40 + local_18);
      *pbVar9 = *pbVar9 ^ bVar3;
      param_3 = (uint *)((int)param_3 + 1);
      local_18 = local_18 + 1 & 0xf;
    } while (local_18 != 0);
    (*pcVar6)(param_1 + 0x40,param_1 + 0x60);
  }
  if (0xbff < param_4) {
    uStack_8 = param_4 / 0xc00;
    do {
      (*pcVar7)(param_1 + 0x40,param_1 + 0x60,param_2,0xc00);
      iStack_c = 0xc0;
      do {
        (*pcVar4)(param_1,param_1 + 0x10,uVar5);
        uVar8 = uVar8 + 1;
        uVar10 = 0;
        *(uint *)(param_1 + 0xc) =
             uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 * 0x1000000;
        puVar11 = param_3;
        do {
          puVar1 = (uint *)(uVar10 + param_1 + 0x10);
          uVar10 = uVar10 + 4;
          *puVar11 = *(uint *)(((int)param_2 - (int)param_3) + (int)puVar11) ^ *puVar1;
          puVar11 = puVar11 + 1;
        } while (uVar10 < 0x10);
        param_2 = param_2 + 0x10;
        param_3 = param_3 + 4;
        iStack_c = iStack_c + -1;
      } while (iStack_c != 0);
      param_4 = param_4 - 0xc00;
      uStack_8 = uStack_8 - 1;
    } while (uStack_8 != 0);
  }
  if (((param_4 & 0xfffffff0) != 0) &&
     ((*pcVar7)(param_1 + 0x40,param_1 + 0x60,param_2,param_4 & 0xfffffff0), 0xf < param_4)) {
    local_4 = param_4 >> 4;
    do {
      (*pcVar4)(param_1,param_1 + 0x10,uVar5);
      uVar8 = uVar8 + 1;
      *(uint *)(param_1 + 0xc) =
           uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 * 0x1000000;
      uVar10 = 0;
      puVar11 = param_3;
      do {
        *puVar11 = *(uint *)((int)puVar11 + ((int)param_2 - (int)param_3)) ^
                   *(uint *)(param_1 + 0x10 + uVar10);
        uVar10 = uVar10 + 4;
        puVar11 = puVar11 + 1;
      } while (uVar10 < 0x10);
      param_2 = param_2 + 0x10;
      param_4 = param_4 - 0x10;
      param_3 = param_3 + 4;
      local_4 = local_4 - 1;
    } while (local_4 != 0);
  }
  if (param_4 != 0) {
    (*pcVar4)(param_1,param_1 + 0x10,uVar5);
    uVar8 = uVar8 + 1;
    *(uint *)(param_1 + 0xc) =
         uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 * 0x1000000;
    pbVar9 = (byte *)((int)param_3 + local_18);
    do {
      bVar3 = pbVar9[(int)param_2 - (int)param_3];
      pbVar2 = (byte *)(param_1 + 0x40 + local_18);
      *pbVar2 = *pbVar2 ^ bVar3;
      param_4 = param_4 - 1;
      *pbVar9 = *(byte *)(param_1 + 0x10 + local_18) ^ bVar3;
      local_18 = local_18 + 1;
      pbVar9 = pbVar9 + 1;
    } while (param_4 != 0);
  }
LAB_00ab4c8e:
  *(uint *)(param_1 + 0x168) = local_18;
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ab4cb0(int param_1,byte *param_2,byte *param_3,uint param_4,code *param_5)

{
  byte *pbVar1;
  code *pcVar2;
  undefined4 uVar3;
  code *pcVar4;
  byte bVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  byte *pbVar9;
  uint local_c;
  
  pcVar2 = *(code **)(param_1 + 0x164);
  uVar3 = *(undefined4 *)(param_1 + 0x174);
  pcVar4 = *(code **)(param_1 + 0x160);
  uVar8 = param_4 + *(uint *)(param_1 + 0x38);
  uVar6 = *(int *)(param_1 + 0x3c) + (uint)CARRY4(param_4,*(uint *)(param_1 + 0x38));
  if ((0xf < uVar6) || ((0xe < uVar6 && (0xffffffe0 < uVar8)))) {
    return 0xffffffff;
  }
  *(uint *)(param_1 + 0x38) = uVar8;
  *(uint *)(param_1 + 0x3c) = uVar6;
  if (*(int *)(param_1 + 0x16c) != 0) {
    (*pcVar4)(param_1 + 0x40,param_1 + 0x60);
    *(undefined4 *)(param_1 + 0x16c) = 0;
  }
  uVar6 = *(uint *)(param_1 + 0x168);
  uVar8 = *(uint *)(param_1 + 0xc);
  uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
  if (uVar6 != 0) {
    do {
      if (param_4 == 0) {
        if (uVar6 != 0) goto LAB_00ab4e8c;
        break;
      }
      bVar5 = *(byte *)(uVar6 + 0x10 + param_1) ^ *param_2;
      param_4 = param_4 - 1;
      *param_3 = bVar5;
      pbVar9 = (byte *)(uVar6 + 0x40 + param_1);
      *pbVar9 = *pbVar9 ^ bVar5;
      param_2 = param_2 + 1;
      param_3 = param_3 + 1;
      uVar6 = uVar6 + 1 & 0xf;
    } while (uVar6 != 0);
    (*pcVar4)(param_1 + 0x40,param_1 + 0x60);
  }
  if (0xbff < param_4) {
    local_c = param_4 / 0xc00;
    do {
      (*param_5)(param_2,param_3,0xc0,uVar3,param_1);
      uVar8 = uVar8 + 0xc0;
      *(uint *)(param_1 + 0xc) =
           uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 * 0x1000000;
      (*pcVar2)(param_1 + 0x40,param_1 + 0x60,param_3,0xc00);
      param_2 = param_2 + 0xc00;
      param_4 = param_4 - 0xc00;
      param_3 = param_3 + 0xc00;
      local_c = local_c - 1;
    } while (local_c != 0);
  }
  uVar7 = param_4 & 0xfffffff0;
  if (uVar7 != 0) {
    (*param_5)(param_2,param_3,param_4 >> 4,uVar3,param_1);
    uVar8 = uVar8 + (param_4 >> 4);
    *(uint *)(param_1 + 0xc) =
         uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 * 0x1000000;
    param_2 = param_2 + uVar7;
    param_4 = param_4 - uVar7;
    (*pcVar2)(param_1 + 0x40,param_1 + 0x60,param_3,uVar7);
    param_3 = param_3 + uVar7;
  }
  if (param_4 != 0) {
    (**(code **)(param_1 + 0x170))(param_1,param_1 + 0x10,uVar3);
    uVar8 = uVar8 + 1;
    *(uint *)(param_1 + 0xc) =
         uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 * 0x1000000;
    pbVar9 = param_3 + uVar6;
    do {
      bVar5 = *(byte *)(param_1 + 0x10 + uVar6) ^ pbVar9[(int)param_2 - (int)param_3];
      *pbVar9 = bVar5;
      pbVar1 = (byte *)(param_1 + 0x40 + uVar6);
      *pbVar1 = *pbVar1 ^ bVar5;
      param_4 = param_4 - 1;
      uVar6 = uVar6 + 1;
      pbVar9 = pbVar9 + 1;
    } while (param_4 != 0);
  }
LAB_00ab4e8c:
  *(uint *)(param_1 + 0x168) = uVar6;
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ab4eb0(uint param_1,byte *param_2,byte *param_3,uint param_4,code *param_5)

{
  byte *pbVar1;
  byte bVar2;
  code *pcVar3;
  undefined4 uVar4;
  code *pcVar5;
  int iVar6;
  uint uVar7;
  byte *pbVar8;
  uint uVar9;
  uint local_c;
  
  iVar6 = param_1;
  pcVar3 = *(code **)(param_1 + 0x164);
  uVar4 = *(undefined4 *)(param_1 + 0x174);
  pcVar5 = *(code **)(param_1 + 0x160);
  uVar9 = param_4 + *(uint *)(param_1 + 0x38);
  uVar7 = *(int *)(param_1 + 0x3c) + (uint)CARRY4(param_4,*(uint *)(param_1 + 0x38));
  if ((0xf < uVar7) || ((0xe < uVar7 && (0xffffffe0 < uVar9)))) {
    return 0xffffffff;
  }
  *(uint *)(param_1 + 0x38) = uVar9;
  *(uint *)(param_1 + 0x3c) = uVar7;
  if (*(int *)(param_1 + 0x16c) != 0) {
    (*pcVar5)(param_1 + 0x40,param_1 + 0x60);
    *(undefined4 *)(param_1 + 0x16c) = 0;
  }
  uVar7 = *(uint *)(param_1 + 0xc);
  uVar9 = *(uint *)(param_1 + 0x168);
  uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;
  if (uVar9 != 0) {
    do {
      if (param_4 == 0) {
        if (uVar9 != 0) goto LAB_00ab508e;
        break;
      }
      bVar2 = *param_2;
      param_4 = param_4 - 1;
      *param_3 = *(byte *)(uVar9 + 0x10 + param_1) ^ bVar2;
      pbVar8 = (byte *)(uVar9 + 0x40 + param_1);
      *pbVar8 = *pbVar8 ^ bVar2;
      param_2 = param_2 + 1;
      param_3 = param_3 + 1;
      uVar9 = uVar9 + 1 & 0xf;
    } while (uVar9 != 0);
    (*pcVar5)(param_1 + 0x40,param_1 + 0x60);
  }
  param_1 = uVar7;
  if (0xbff < param_4) {
    local_c = param_4 / 0xc00;
    do {
      (*pcVar3)(iVar6 + 0x40,iVar6 + 0x60,param_2,0xc00);
      (*param_5)(param_2,param_3,0xc0,uVar4,iVar6);
      param_4 = param_4 - 0xc00;
      param_1 = param_1 + 0xc0;
      param_3 = param_3 + 0xc00;
      param_2 = param_2 + 0xc00;
      local_c = local_c - 1;
      *(uint *)(iVar6 + 0xc) =
           param_1 >> 0x18 | (param_1 & 0xff0000) >> 8 | (param_1 & 0xff00) << 8 |
           param_1 * 0x1000000;
    } while (local_c != 0);
  }
  uVar7 = param_4 & 0xfffffff0;
  if (uVar7 != 0) {
    (*pcVar3)(iVar6 + 0x40,iVar6 + 0x60,param_2,uVar7);
    (*param_5)(param_2,param_3,param_4 >> 4,uVar4,iVar6);
    param_1 = param_1 + (param_4 >> 4);
    *(uint *)(iVar6 + 0xc) =
         param_1 >> 0x18 | (param_1 & 0xff0000) >> 8 | (param_1 & 0xff00) << 8 | param_1 * 0x1000000
    ;
    param_3 = param_3 + uVar7;
    param_2 = param_2 + uVar7;
    param_4 = param_4 - uVar7;
  }
  if (param_4 != 0) {
    (**(code **)(iVar6 + 0x170))(iVar6,iVar6 + 0x10,uVar4);
    param_1 = param_1 + 1;
    *(uint *)(iVar6 + 0xc) =
         param_1 >> 0x18 | (param_1 & 0xff0000) >> 8 | (param_1 & 0xff00) << 8 | param_1 * 0x1000000
    ;
    pbVar8 = param_3 + uVar9;
    do {
      bVar2 = pbVar8[(int)param_2 - (int)param_3];
      pbVar1 = (byte *)(iVar6 + 0x40 + uVar9);
      *pbVar1 = *pbVar1 ^ bVar2;
      param_4 = param_4 - 1;
      *pbVar8 = *(byte *)(iVar6 + 0x10 + uVar9) ^ bVar2;
      uVar9 = uVar9 + 1;
      pbVar8 = pbVar8 + 1;
    } while (param_4 != 0);
  }
LAB_00ab508e:
  *(uint *)(iVar6 + 0x168) = uVar9;
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00ab50b0(int param_1,uint *param_2,uint param_3)

{
  uint uVar1;
  code *pcVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  int iVar8;
  uint *puVar9;
  
  uVar1 = *(uint *)(param_1 + 0x38);
  pcVar2 = *(code **)(param_1 + 0x160);
  uVar3 = *(uint *)(param_1 + 0x30);
  uVar4 = *(int *)(param_1 + 0x3c) << 3;
  uVar5 = *(int *)(param_1 + 0x34) << 3;
  uVar6 = uVar3 * 8;
  uVar7 = uVar1 * 8;
  if ((*(int *)(param_1 + 0x168) != 0) || (*(int *)(param_1 + 0x16c) != 0)) {
    (*pcVar2)(param_1 + 0x40,param_1 + 0x60);
  }
  *(uint *)(param_1 + 0x48) =
       *(uint *)(param_1 + 0x48) ^
       (uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |
       (uVar4 | uVar1 >> 0x1d) << 0x18);
  *(uint *)(param_1 + 0x44) =
       *(uint *)(param_1 + 0x44) ^
       (uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar3 << 0x1b);
  puVar9 = (uint *)(param_1 + 0x40);
  *puVar9 = *puVar9 ^ (uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 |
                      (uVar5 | uVar3 >> 0x1d) << 0x18);
  *(uint *)(param_1 + 0x4c) =
       *(uint *)(param_1 + 0x4c) ^
       (uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar1 << 0x1b);
  (*pcVar2)(puVar9,param_1 + 0x60);
  *puVar9 = *puVar9 ^ *(uint *)(param_1 + 0x20);
  *(uint *)(param_1 + 0x4c) = *(uint *)(param_1 + 0x4c) ^ *(uint *)(param_1 + 0x2c);
  *(uint *)(param_1 + 0x44) = *(uint *)(param_1 + 0x44) ^ *(uint *)(param_1 + 0x24);
  *(uint *)(param_1 + 0x48) = *(uint *)(param_1 + 0x48) ^ *(uint *)(param_1 + 0x28);
  if ((param_2 == (uint *)0x0) || (0x10 < param_3)) {
    return 0xffffffff;
  }
  if (3 < param_3) {
    do {
      if (*puVar9 != *param_2) goto LAB_00ab517e;
      param_3 = param_3 - 4;
      param_2 = param_2 + 1;
      puVar9 = puVar9 + 1;
    } while (3 < param_3);
  }
  if (param_3 == 0) {
    return 0;
  }
LAB_00ab517e:
  iVar8 = (uint)*(byte *)puVar9 - (uint)*(byte *)param_2;
  if (iVar8 == 0) {
    if (param_3 < 2) {
      return 0;
    }
    iVar8 = (uint)*(byte *)((int)puVar9 + 1) - (uint)*(byte *)((int)param_2 + 1);
    if (iVar8 == 0) {
      if (param_3 < 3) {
        return 0;
      }
      iVar8 = (uint)*(byte *)((int)puVar9 + 2) - (uint)*(byte *)((int)param_2 + 2);
      if (iVar8 == 0) {
        if (param_3 < 4) {
          return 0;
        }
        iVar8 = (uint)*(byte *)((int)puVar9 + 3) - (uint)*(byte *)((int)param_2 + 3);
      }
    }
  }
  return iVar8 >> 0x1f | 1;
}



void FUN_00ab51e0(int param_1,void *param_2,size_t param_3)

{
  FUN_00ab50b0(param_1,0,0);
  if (0x10 < param_3) {
    param_3 = 0x10;
  }
  _memcpy(param_2,(void *)(param_1 + 0x40),param_3);
  return;
}



undefined4 FUN_00ab5270(byte *param_1,void *param_2,uint param_3,undefined4 param_4)

{
  uint _Size;
  
  _Size = 0xe - (*param_1 & 7);
  if (param_3 < _Size) {
    return 0xffffffff;
  }
  param_1[0xc] = (byte)((uint)param_4 >> 0x18);
  param_1[0xd] = (byte)((uint)param_4 >> 0x10);
  *param_1 = *param_1 & 0xbf;
  *(undefined4 *)(param_1 + 8) = 0;
  param_1[0xe] = (byte)((uint)param_4 >> 8);
  param_1[0xf] = (byte)param_4;
  _memcpy(param_1 + 1,param_2,_Size);
  return 0;
}



void FUN_00ab52d0(byte *param_1,byte *param_2,uint param_3)

{
  byte *pbVar1;
  uint *puVar2;
  uint uVar3;
  code *pcVar4;
  uint uVar5;
  byte bVar6;
  
  pcVar4 = *(code **)(param_1 + 0x28);
  if (param_3 != 0) {
    *param_1 = *param_1 | 0x40;
    pbVar1 = param_1 + 0x10;
    (*pcVar4)(param_1,pbVar1,*(undefined4 *)(param_1 + 0x2c));
    puVar2 = (uint *)(param_1 + 0x20);
    uVar5 = *puVar2;
    *puVar2 = *puVar2 + 1;
    *(uint *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + (uint)(0xfffffffe < uVar5);
    bVar6 = (byte)(param_3 >> 8);
    if (param_3 < 0xff00) {
      *pbVar1 = *pbVar1 ^ bVar6;
      param_1[0x11] = param_1[0x11] ^ (byte)param_3;
      uVar5 = 2;
    }
    else {
      param_1[0x11] = param_1[0x11] ^ 0xfe;
      *pbVar1 = ~*pbVar1;
      param_1[0x14] = param_1[0x14] ^ bVar6;
      param_1[0x12] = param_1[0x12] ^ (byte)(param_3 >> 0x18);
      param_1[0x13] = param_1[0x13] ^ (byte)(param_3 >> 0x10);
      param_1[0x15] = param_1[0x15] ^ (byte)param_3;
      uVar5 = 6;
    }
    do {
      for (; (uVar5 < 0x10 && (param_3 != 0)); param_3 = param_3 - 1) {
        pbVar1[uVar5] = pbVar1[uVar5] ^ *param_2;
        uVar5 = uVar5 + 1;
        param_2 = param_2 + 1;
      }
      (*pcVar4)(pbVar1,pbVar1,*(undefined4 *)(param_1 + 0x2c));
      puVar2 = (uint *)(param_1 + 0x20);
      uVar3 = *puVar2;
      *puVar2 = *puVar2 + 1;
      uVar5 = 0;
      *(uint *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + (uint)(0xfffffffe < uVar3);
    } while (param_3 != 0);
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ab5390(byte *param_1,uint *param_2,uint *param_3,uint param_4)

{
  uint *puVar1;
  byte *pbVar2;
  byte bVar3;
  code *pcVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  undefined auStack_2c [3];
  byte local_29;
  undefined4 local_28;
  code *local_24;
  uint *local_20;
  uint local_1c;
  uint uStack_18;
  uint uStack_14;
  uint uStack_10;
  uint uStack_c;
  uint uStack_8;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_2c;
  bVar3 = *param_1;
  local_28 = *(undefined4 *)(param_1 + 0x2c);
  local_20 = param_3;
  local_24 = *(code **)(param_1 + 0x28);
  local_29 = bVar3;
  if ((bVar3 & 0x40) == 0) {
    (*local_24)(param_1,param_1 + 0x10,local_28);
    puVar1 = (uint *)(param_1 + 0x20);
    uVar5 = *puVar1;
    *puVar1 = *puVar1 + 1;
    *(uint *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + (uint)(0xfffffffe < uVar5);
  }
  *param_1 = (byte)(bVar3 & 7);
  uVar8 = 0;
  local_1c = 0xf - (bVar3 & 7);
  for (uVar5 = local_1c; uVar5 < 0xf; uVar5 = uVar5 + 1) {
    bVar3 = param_1[uVar5];
    param_1[uVar5] = 0;
    uVar8 = (uVar8 | bVar3) << 8;
  }
  bVar3 = param_1[0xf];
  param_1[0xf] = 1;
  if ((uVar8 | bVar3) != param_4) {
    ___security_check_cookie_4();
    return;
  }
  uVar8 = (param_4 + 0xf | 8) >> 3;
  puVar1 = (uint *)(param_1 + 0x20);
  uVar5 = *puVar1;
  *puVar1 = *puVar1 + uVar8;
  *(uint *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + (uint)CARRY4(uVar5,uVar8);
  if ((0x1fffffff < *(uint *)(param_1 + 0x24)) &&
     ((0x20000000 < *(uint *)(param_1 + 0x24) || (*(int *)(param_1 + 0x20) != 0)))) {
    ___security_check_cookie_4();
    return;
  }
  if (0xf < param_4) {
    uStack_18 = param_4 >> 4;
    puVar1 = (uint *)(param_1 + 0x10);
    do {
      *puVar1 = *puVar1 ^ *param_2;
      *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) ^ param_2[1];
      *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) ^ param_2[2];
      *(uint *)(param_1 + 0x1c) = *(uint *)(param_1 + 0x1c) ^ param_2[3];
      (*local_24)(puVar1,puVar1,local_28);
      (*local_24)(param_1,&uStack_14,local_28);
      iVar6 = 8;
      do {
        bVar3 = param_1[iVar6 + 7];
        iVar7 = iVar6 + -1;
        param_1[iVar6 + 7] = bVar3 + 1;
        if ((byte)(bVar3 + 1) != 0) break;
        iVar6 = iVar7;
      } while (iVar7 != 0);
      uVar5 = param_2[1];
      *local_20 = *param_2 ^ uStack_14;
      local_20[1] = uVar5 ^ uStack_10;
      uVar5 = param_2[3];
      local_20[2] = uStack_c ^ param_2[2];
      local_20[3] = uStack_8 ^ uVar5;
      local_20 = local_20 + 4;
      param_2 = param_2 + 4;
      param_4 = param_4 - 0x10;
      uStack_18 = uStack_18 - 1;
    } while (uStack_18 != 0);
    uStack_18 = 0;
  }
  pcVar4 = local_24;
  if (param_4 != 0) {
    uVar5 = 0;
    if (param_4 != 0) {
      do {
        param_1[uVar5 + 0x10] = param_1[uVar5 + 0x10] ^ *(byte *)(uVar5 + (int)param_2);
        uVar5 = uVar5 + 1;
      } while (uVar5 < param_4);
    }
    (*local_24)(param_1 + 0x10,param_1 + 0x10,local_28);
    (*pcVar4)(param_1,&uStack_14,local_28);
    uVar5 = 0;
    if (param_4 != 0) {
      do {
        pbVar2 = (byte *)((int)&uStack_14 + uVar5);
        uVar5 = uVar5 + 1;
        pbVar2[(int)local_20 - (int)&uStack_14] = pbVar2[(int)param_2 - (int)&uStack_14] ^ *pbVar2;
      } while (uVar5 < param_4);
    }
  }
  if (local_1c < 0x10) {
    _memset(param_1 + local_1c,0,0x10 - local_1c);
  }
  (*local_24)(param_1,&uStack_14,local_28);
  *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) ^ uStack_14;
  *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) ^ uStack_10;
  *(uint *)(param_1 + 0x1c) = *(uint *)(param_1 + 0x1c) ^ uStack_8;
  *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) ^ uStack_c;
  *param_1 = local_29;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ab55f0(byte *param_1,uint *param_2,uint *param_3,uint param_4)

{
  uint *puVar1;
  byte *pbVar2;
  byte bVar3;
  byte bVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  undefined auStack_28 [3];
  byte local_25;
  code *local_24;
  undefined4 local_20;
  uint uStack_1c;
  uint local_18;
  uint uStack_14;
  uint uStack_10;
  uint uStack_c;
  uint uStack_8;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_28;
  bVar3 = *param_1;
  local_24 = *(code **)(param_1 + 0x28);
  local_20 = *(undefined4 *)(param_1 + 0x2c);
  local_25 = bVar3;
  if ((bVar3 & 0x40) == 0) {
    (*local_24)(param_1,param_1 + 0x10,local_20);
  }
  *param_1 = (byte)(bVar3 & 7);
  uVar8 = 0;
  local_18 = 0xf - (bVar3 & 7);
  for (uVar5 = local_18; uVar5 < 0xf; uVar5 = uVar5 + 1) {
    bVar3 = param_1[uVar5];
    param_1[uVar5] = 0;
    uVar8 = (uVar8 | bVar3) << 8;
  }
  bVar3 = param_1[0xf];
  param_1[0xf] = 1;
  if ((uVar8 | bVar3) != param_4) {
    ___security_check_cookie_4();
    return;
  }
  if (0xf < param_4) {
    uStack_1c = param_4 >> 4;
    puVar1 = (uint *)(param_1 + 0x10);
    do {
      (*local_24)(param_1,&uStack_14,local_20);
      iVar6 = 8;
      do {
        bVar3 = param_1[iVar6 + 7];
        iVar7 = iVar6 + -1;
        param_1[iVar6 + 7] = bVar3 + 1;
        if ((byte)(bVar3 + 1) != 0) break;
        iVar6 = iVar7;
      } while (iVar7 != 0);
      uVar5 = *param_2;
      uVar8 = param_2[1];
      *param_3 = uVar5 ^ uStack_14;
      param_3[1] = uVar8 ^ uStack_10;
      *puVar1 = *puVar1 ^ uVar5 ^ uStack_14;
      *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) ^ param_3[1];
      uVar5 = param_2[2];
      param_3[3] = param_2[3] ^ uStack_8;
      param_3[2] = uVar5 ^ uStack_c;
      *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) ^ uVar5 ^ uStack_c;
      *(uint *)(param_1 + 0x1c) = *(uint *)(param_1 + 0x1c) ^ param_3[3];
      (*local_24)(puVar1,puVar1,local_20);
      param_4 = param_4 - 0x10;
      param_2 = param_2 + 4;
      param_3 = param_3 + 4;
      uStack_1c = uStack_1c - 1;
    } while (uStack_1c != 0);
    uStack_1c = 0;
  }
  if (param_4 != 0) {
    (*local_24)(param_1,&uStack_14,local_20);
    if (param_4 != 0) {
      uVar5 = 0;
      do {
        pbVar2 = (byte *)((int)&uStack_14 + uVar5);
        bVar3 = pbVar2[(int)param_2 - (int)&uStack_14];
        bVar4 = *pbVar2;
        uVar8 = uVar5 + 1;
        pbVar2[(int)param_3 - (int)&uStack_14] = bVar3 ^ bVar4;
        param_1[uVar5 + 0x10] = param_1[uVar5 + 0x10] ^ bVar3 ^ bVar4;
        uVar5 = uVar8;
      } while (uVar8 < param_4);
    }
    (*local_24)(param_1 + 0x10,param_1 + 0x10,local_20);
  }
  if (local_18 < 0x10) {
    _memset(param_1 + local_18,0,0x10 - local_18);
  }
  (*local_24)(param_1,&uStack_14,local_20);
  *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) ^ uStack_14;
  *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) ^ uStack_10;
  *(uint *)(param_1 + 0x1c) = *(uint *)(param_1 + 0x1c) ^ uStack_8;
  *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) ^ uStack_c;
  *param_1 = local_25;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00ab5800(int param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  
  iVar3 = 8;
  uVar2 = 0;
  do {
    iVar1 = iVar3 + -1;
    iVar3 = iVar3 + -1;
    uVar2 = *(byte *)(iVar1 + param_1 + 8) + uVar2 + (param_2 & 0xff);
    *(char *)(iVar3 + param_1 + 8) = (char)uVar2;
    uVar2 = uVar2 >> 8;
    param_2 = param_2 >> 8;
    if (iVar3 == 0) {
      return;
    }
  } while ((param_2 != 0) || (uVar2 != 0));
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ab5840(byte *param_1,int param_2,int param_3,uint param_4,code *param_5)

{
  uint *puVar1;
  byte *pbVar2;
  byte bVar3;
  code *pcVar4;
  uint uVar5;
  uint uVar6;
  undefined auStack_2c [3];
  byte local_29;
  undefined4 local_28;
  uint local_24;
  int local_20;
  code *local_1c;
  code *local_18;
  uint uStack_14;
  uint uStack_10;
  uint uStack_c;
  uint uStack_8;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_2c;
  local_28 = *(undefined4 *)(param_1 + 0x2c);
  local_20 = param_3;
  local_29 = *param_1;
  local_18 = param_5;
  local_1c = *(code **)(param_1 + 0x28);
  if ((local_29 & 0x40) == 0) {
    (*local_1c)(param_1,param_1 + 0x10,local_28);
    puVar1 = (uint *)(param_1 + 0x20);
    uVar5 = *puVar1;
    *puVar1 = *puVar1 + 1;
    *(uint *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + (uint)(0xfffffffe < uVar5);
  }
  *param_1 = (byte)(local_29 & 7);
  uVar6 = 0;
  local_24 = 0xf - (local_29 & 7);
  for (uVar5 = local_24; uVar5 < 0xf; uVar5 = uVar5 + 1) {
    bVar3 = param_1[uVar5];
    param_1[uVar5] = 0;
    uVar6 = (uVar6 | bVar3) << 8;
  }
  bVar3 = param_1[0xf];
  param_1[0xf] = 1;
  if ((uVar6 | bVar3) != param_4) {
    ___security_check_cookie_4();
    return;
  }
  uVar6 = (param_4 + 0xf | 8) >> 3;
  puVar1 = (uint *)(param_1 + 0x20);
  uVar5 = *puVar1;
  *puVar1 = *puVar1 + uVar6;
  *(uint *)(param_1 + 0x24) = *(int *)(param_1 + 0x24) + (uint)CARRY4(uVar5,uVar6);
  if ((0x1fffffff < *(uint *)(param_1 + 0x24)) &&
     ((0x20000000 < *(uint *)(param_1 + 0x24) || (*(int *)(param_1 + 0x20) != 0)))) {
    ___security_check_cookie_4();
    return;
  }
  uVar5 = param_4 >> 4;
  if (uVar5 != 0) {
    (*local_18)(param_2,local_20,uVar5,local_28,param_1,param_1 + 0x10);
    local_20 = local_20 + uVar5 * 0x10;
    param_2 = param_2 + uVar5 * 0x10;
    param_4 = param_4 + uVar5 * -0x10;
    if (param_4 == 0) goto LAB_00ab59d9;
    FUN_00ab5800();
  }
  pcVar4 = local_1c;
  if (param_4 != 0) {
    uVar5 = 0;
    if (param_4 != 0) {
      do {
        param_1[uVar5 + 0x10] = param_1[uVar5 + 0x10] ^ *(byte *)(param_2 + uVar5);
        uVar5 = uVar5 + 1;
      } while (uVar5 < param_4);
    }
    (*local_1c)(param_1 + 0x10,param_1 + 0x10,local_28);
    (*pcVar4)(param_1,&uStack_14,local_28);
    uVar5 = 0;
    if (param_4 != 0) {
      do {
        pbVar2 = (byte *)((int)&uStack_14 + uVar5);
        uVar5 = uVar5 + 1;
        pbVar2[local_20 - (int)&uStack_14] = pbVar2[param_2 - (int)&uStack_14] ^ *pbVar2;
      } while (uVar5 < param_4);
    }
  }
LAB_00ab59d9:
  if (local_24 < 0x10) {
    _memset(param_1 + local_24,0,0x10 - local_24);
  }
  (*local_1c)(param_1,&uStack_14,local_28);
  *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) ^ uStack_14;
  *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) ^ uStack_10;
  *(uint *)(param_1 + 0x1c) = *(uint *)(param_1 + 0x1c) ^ uStack_8;
  *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) ^ uStack_c;
  *param_1 = local_29;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ab5a40(byte *param_1,int param_2,int param_3,uint param_4,code *param_5)

{
  byte *pbVar1;
  byte bVar2;
  byte bVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  undefined auStack_30 [3];
  byte local_2d;
  undefined4 local_2c;
  int local_28;
  int local_24;
  code *local_20;
  uint local_1c;
  code *local_18;
  uint uStack_14;
  uint uStack_10;
  uint uStack_c;
  uint uStack_8;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_30;
  bVar2 = *param_1;
  local_24 = param_2;
  local_20 = *(code **)(param_1 + 0x28);
  local_28 = param_3;
  local_2c = *(undefined4 *)(param_1 + 0x2c);
  local_18 = param_5;
  local_2d = bVar2;
  if ((bVar2 & 0x40) == 0) {
    (*local_20)(param_1,param_1 + 0x10,local_2c);
  }
  *param_1 = (byte)(bVar2 & 7);
  uVar5 = 0;
  uVar6 = 0xf - (bVar2 & 7);
  for (uVar4 = uVar6; uVar4 < 0xf; uVar4 = uVar4 + 1) {
    bVar2 = param_1[uVar4];
    param_1[uVar4] = 0;
    uVar5 = (uVar5 | bVar2) << 8;
  }
  bVar2 = param_1[0xf];
  param_1[0xf] = 1;
  local_1c = uVar6;
  if ((uVar5 | bVar2) != param_4) {
    ___security_check_cookie_4();
    return;
  }
  uVar4 = param_4 >> 4;
  if (uVar4 != 0) {
    (*local_18)(local_24,local_28,uVar4,local_2c,param_1,param_1 + 0x10);
    local_24 = local_24 + uVar4 * 0x10;
    local_28 = local_28 + uVar4 * 0x10;
    param_4 = param_4 + uVar4 * -0x10;
    if (param_4 == 0) goto LAB_00ab5b8a;
    FUN_00ab5800();
  }
  if (param_4 != 0) {
    (*local_20)(param_1,&uStack_14,local_2c);
    if (param_4 != 0) {
      uVar4 = 0;
      do {
        pbVar1 = (byte *)((int)&uStack_14 + uVar4);
        bVar2 = pbVar1[local_24 - (int)&uStack_14];
        bVar3 = *pbVar1;
        uVar5 = uVar4 + 1;
        pbVar1[local_28 - (int)&uStack_14] = bVar2 ^ bVar3;
        param_1[uVar4 + 0x10] = param_1[uVar4 + 0x10] ^ bVar2 ^ bVar3;
        uVar4 = uVar5;
        uVar6 = local_1c;
      } while (uVar5 < param_4);
    }
    (*local_20)(param_1 + 0x10,param_1 + 0x10,local_2c);
  }
LAB_00ab5b8a:
  if (uVar6 < 0x10) {
    _memset(param_1 + uVar6,0,0x10 - uVar6);
  }
  (*local_20)(param_1,&uStack_14,local_2c);
  *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) ^ uStack_10;
  *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) ^ uStack_14;
  *(uint *)(param_1 + 0x18) = *(uint *)(param_1 + 0x18) ^ uStack_c;
  *(uint *)(param_1 + 0x1c) = *(uint *)(param_1 + 0x1c) ^ uStack_8;
  *param_1 = local_2d;
  ___security_check_cookie_4();
  return;
}



uint FUN_00ab5bf0(byte *param_1,void *param_2,uint param_3)

{
  uint _Size;
  
  _Size = (*param_1 >> 3 & 7) * 2 + 2;
  if (param_3 < _Size) {
    return 0;
  }
  _memcpy(param_2,param_1 + 0x10,_Size);
  return _Size;
}



undefined8 __fastcall FUN_00ab5c40(uint param_1,uint param_2)

{
  uint in_EAX;
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint unaff_EBX;
  uint uVar5;
  int unaff_EBP;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint *unaff_EDI;
  uint *puVar17;
  uint *puVar18;
  int param_7;
  
  uVar1 = in_EAX ^ *unaff_EDI;
  uVar5 = unaff_EBX ^ unaff_EDI[1];
  param_1 = param_1 ^ unaff_EDI[2];
  param_2 = param_2 ^ unaff_EDI[3];
  puVar17 = unaff_EDI;
  do {
    puVar18 = puVar17;
    uVar10 = CONCAT13(*(undefined *)(unaff_EBP + -0x80 + (param_2 >> 0x18)),
                      CONCAT12(*(undefined *)(unaff_EBP + -0x80 + (param_1 >> 0x10 & 0xff)),
                               CONCAT11(*(undefined *)(unaff_EBP + -0x80 + (uVar5 >> 8 & 0xff)),
                                        *(undefined *)(unaff_EBP + -0x80 + (uVar1 & 0xff)))));
    uVar11 = CONCAT13(*(undefined *)(unaff_EBP + -0x80 + (uVar1 >> 0x18)),
                      CONCAT12(*(undefined *)(unaff_EBP + -0x80 + (param_2 >> 0x10 & 0xff)),
                               CONCAT11(*(undefined *)(unaff_EBP + -0x80 + (param_1 >> 8 & 0xff)),
                                        *(undefined *)(unaff_EBP + -0x80 + (uVar5 & 0xff)))));
    uVar12 = CONCAT13(*(undefined *)(unaff_EBP + -0x80 + (uVar5 >> 0x18)),
                      CONCAT12(*(undefined *)(unaff_EBP + -0x80 + (uVar1 >> 0x10 & 0xff)),
                               CONCAT11(*(undefined *)(unaff_EBP + -0x80 + (param_2 >> 8 & 0xff)),
                                        *(undefined *)(unaff_EBP + -0x80 + (param_1 & 0xff)))));
    uVar3 = CONCAT13(*(undefined *)(unaff_EBP + -0x80 + (param_1 >> 0x18)),
                     CONCAT12(*(undefined *)(unaff_EBP + -0x80 + (uVar5 >> 0x10 & 0xff)),
                              CONCAT11(*(undefined *)(unaff_EBP + -0x80 + (uVar1 >> 8 & 0xff)),
                                       *(undefined *)(unaff_EBP + -0x80 + (param_2 & 0xff)))));
    uVar13 = (uVar12 & 0x80808080) - ((uVar12 & 0x80808080) >> 7) & 0x1b1b1b1b ^
             uVar12 * 2 & 0xfefefefe;
    uVar2 = uVar12 ^ uVar13;
    uVar6 = uVar12 >> 0x10 | uVar12 << 0x10;
    uVar14 = (uVar3 & 0x80808080) - ((uVar3 & 0x80808080) >> 7) & 0x1b1b1b1b ^
             uVar3 * 2 & 0xfefefefe;
    uVar4 = uVar3 ^ uVar14;
    uVar7 = uVar3 >> 0x10 | uVar3 << 0x10;
    uVar15 = (uVar10 & 0x80808080) - ((uVar10 & 0x80808080) >> 7) & 0x1b1b1b1b ^
             uVar10 * 2 & 0xfefefefe;
    uVar1 = uVar10 ^ uVar15;
    uVar8 = uVar10 >> 0x10 | uVar10 << 0x10;
    uVar16 = (uVar11 & 0x80808080) - ((uVar11 & 0x80808080) >> 7) & 0x1b1b1b1b ^
             uVar11 * 2 & 0xfefefefe;
    uVar5 = uVar11 ^ uVar16;
    uVar9 = uVar11 >> 0x10 | uVar11 << 0x10;
    puVar17 = puVar18 + 4;
    uVar1 = (uVar1 << 0x18 | uVar1 >> 8) ^ uVar15 ^ uVar8 ^ (uVar8 >> 8 | (uVar10 >> 0x10) << 0x18)
            ^ *puVar17;
    uVar5 = (uVar5 << 0x18 | uVar5 >> 8) ^ uVar16 ^ uVar9 ^ (uVar9 >> 8 | (uVar11 >> 0x10) << 0x18)
            ^ puVar18[5];
    param_1 = (uVar2 << 0x18 | uVar2 >> 8) ^ uVar13 ^ uVar6 ^
              (uVar6 >> 8 | (uVar12 >> 0x10) << 0x18) ^ puVar18[6];
    param_2 = (uVar4 << 0x18 | uVar4 >> 8) ^ uVar14 ^ uVar7 ^ (uVar7 >> 8 | (uVar3 >> 0x10) << 0x18)
              ^ puVar18[7];
    unaff_EBP = param_7;
  } while (puVar17 < unaff_EDI + (unaff_EDI[0x3c] * 2 + -2) * 2);
  return CONCAT44(CONCAT13(*(undefined *)(param_7 + -0x80 + (param_1 >> 0x18)),
                           CONCAT12(*(undefined *)(param_7 + -0x80 + (uVar5 >> 0x10 & 0xff)),
                                    CONCAT11(*(undefined *)(param_7 + -0x80 + (uVar1 >> 8 & 0xff)),
                                             *(undefined *)(param_7 + -0x80 + (param_2 & 0xff))))) ^
                  puVar18[0xb],
                  CONCAT13(*(undefined *)(param_7 + -0x80 + (param_2 >> 0x18)),
                           CONCAT12(*(undefined *)(param_7 + -0x80 + (param_1 >> 0x10 & 0xff)),
                                    CONCAT11(*(undefined *)(param_7 + -0x80 + (uVar5 >> 8 & 0xff)),
                                             *(undefined *)(param_7 + -0x80 + (uVar1 & 0xff))))) ^
                  puVar18[8]);
}



ulonglong FUN_00ab5fa0(void)

{
  byte bVar1;
  byte bVar2;
  byte bVar3;
  byte bVar4;
  byte bVar5;
  byte bVar6;
  byte bVar7;
  byte bVar8;
  byte bVar9;
  byte bVar10;
  byte bVar11;
  byte bVar12;
  byte bVar13;
  byte bVar14;
  byte bVar15;
  byte bVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  int unaff_EBP;
  ulonglong *unaff_EDI;
  ulonglong *puVar22;
  ulonglong *puVar23;
  ulonglong in_MM0;
  ulonglong uVar24;
  ulonglong uVar25;
  ulonglong in_MM1;
  undefined8 uVar26;
  ulonglong in_MM2;
  ulonglong uVar27;
  ulonglong uVar28;
  ulonglong in_MM4;
  ulonglong uVar29;
  ulonglong uVar30;
  ulonglong in_MM5;
  undefined8 uVar31;
  ulonglong in_MM6;
  ulonglong uVar32;
  ulonglong uVar33;
  uint uVar34;
  
  uVar24 = in_MM0 ^ *unaff_EDI;
  uVar29 = in_MM4 ^ unaff_EDI[1];
  puVar22 = unaff_EDI;
  while( true ) {
    uVar26 = pshufw(in_MM1,uVar24,8);
    uVar31 = pshufw(in_MM5,uVar29,0xd);
    uVar17 = (uint)uVar26;
    uVar20 = (uint)uVar31;
    bVar1 = *(byte *)(unaff_EBP + -0x80 + (uVar17 & 0xff));
    uVar26 = pshufw(in_MM2,uVar24,0xd);
    bVar2 = *(byte *)(unaff_EBP + -0x80 + (uVar17 >> 8 & 0xff));
    bVar3 = *(byte *)(unaff_EBP + -0x80 + (uVar20 & 0xff));
    uVar31 = pshufw(in_MM6,uVar29,8);
    bVar4 = *(byte *)(unaff_EBP + -0x80 + (uVar20 >> 8 & 0xff));
    bVar5 = *(byte *)(unaff_EBP + -0x80 + (uVar17 >> 0x18));
    bVar6 = *(byte *)(unaff_EBP + -0x80 + (uVar20 >> 0x18));
    uVar18 = (uint)bVar1 | (uint)bVar3 << 0x10 | (uint)bVar5 << 8 | (uint)bVar6 << 0x18;
    bVar7 = *(byte *)(unaff_EBP + -0x80 + (uVar17 >> 0x10 & 0xff));
    uVar17 = (uint)uVar26;
    bVar8 = *(byte *)(unaff_EBP + -0x80 + (uVar20 >> 0x10 & 0xff));
    uVar21 = (uint)uVar31;
    bVar9 = *(byte *)(unaff_EBP + -0x80 + (uVar17 >> 8 & 0xff));
    bVar10 = *(byte *)(unaff_EBP + -0x80 + (uVar21 >> 8 & 0xff));
    uVar20 = (uint)bVar7 | (uint)bVar8 << 0x10 | (uint)bVar9 << 0x18 | (uint)bVar10 << 8;
    bVar11 = *(byte *)(unaff_EBP + -0x80 + (uVar21 & 0xff));
    bVar12 = *(byte *)(unaff_EBP + -0x80 + (uVar17 & 0xff));
    uVar24 = CONCAT44(uVar20,uVar18);
    bVar13 = *(byte *)(unaff_EBP + -0x80 + (uVar17 >> 0x18));
    bVar14 = *(byte *)(unaff_EBP + -0x80 + (uVar17 >> 0x10 & 0xff));
    uVar19 = (uint)bVar2 << 8 | (uint)bVar4 << 0x18 | (uint)bVar14 << 0x10;
    bVar15 = *(byte *)(unaff_EBP + -0x80 + (uVar21 >> 0x18));
    uVar17 = (uint)bVar11 | (uint)bVar12 << 0x10 | (uint)bVar13 << 0x18 | (uint)bVar15 << 8;
    bVar16 = *(byte *)(unaff_EBP + -0x80 + (uVar21 >> 0x10 & 0xff));
    uVar29 = CONCAT44(uVar19 | bVar16,uVar17);
    puVar23 = puVar22 + 2;
    if (unaff_EDI + *(int *)(unaff_EDI + 0x1e) * 2 + -2 < puVar23) break;
    uVar28 = CONCAT17(-((int)uVar20 < 0),
                      CONCAT16(-((char)bVar8 < '\0'),
                               CONCAT15(-((char)bVar10 < '\0'),
                                        CONCAT14(-((char)bVar7 < '\0'),
                                                 CONCAT13(-((int)uVar18 < 0),
                                                          CONCAT12(-((char)bVar3 < '\0'),
                                                                   CONCAT11(-((char)bVar5 < '\0'),
                                                                            -((char)bVar1 < '\0'))))
                                                )))) & 0x1b1b1b1b1b1b1b1b;
    uVar33 = CONCAT17(-((int)uVar19 < 0),
                      CONCAT16(-((char)bVar14 < '\0'),
                               CONCAT15(-((char)bVar2 < '\0'),
                                        CONCAT14(-((char)bVar16 < '\0'),
                                                 CONCAT13(-((int)uVar17 < 0),
                                                          CONCAT12(-((char)bVar12 < '\0'),
                                                                   CONCAT11(-((char)bVar15 < '\0'),
                                                                            -((char)bVar11 < '\0')))
                                                         ))))) & 0x1b1b1b1b1b1b1b1b;
    uVar27 = pshufw(0x1b1b1b1b1b1b1b1b,uVar24,0xb1);
    uVar32 = pshufw(uVar31,uVar29,0xb1);
    uVar25 = CONCAT17(bVar9 * '\x02',
                      CONCAT16(bVar8 * '\x02',
                               CONCAT15(bVar10 * '\x02',
                                        CONCAT14(bVar7 * '\x02',
                                                 CONCAT13(bVar6 * '\x02',
                                                          CONCAT12(bVar3 * '\x02',
                                                                   CONCAT11(bVar5 * '\x02',
                                                                            bVar1 * '\x02'))))))) ^
             uVar28;
    uVar30 = CONCAT17(bVar4 * '\x02',
                      CONCAT16(bVar14 * '\x02',
                               CONCAT15(bVar2 * '\x02',
                                        CONCAT14(bVar16 * '\x02',
                                                 CONCAT13(bVar13 * '\x02',
                                                          CONCAT12(bVar12 * '\x02',
                                                                   CONCAT11(bVar15 * '\x02',
                                                                            bVar11 * '\x02'))))))) ^
             uVar33;
    uVar26 = pshufw(uVar28,uVar27,0xb1);
    uVar31 = pshufw(uVar33,uVar32,0xb1);
    uVar24 = uVar24 ^ uVar25;
    uVar29 = uVar29 ^ uVar30;
    uVar20 = (uint)((ulonglong)uVar26 >> 0x20);
    uVar34 = (uint)((ulonglong)uVar31 >> 0x20);
    in_MM2 = *puVar23;
    in_MM6 = puVar22[3];
    uVar17 = (uint)uVar24;
    uVar18 = (uint)(uVar24 >> 0x20);
    in_MM1 = CONCAT44(uVar18 >> 8,uVar17 >> 8);
    uVar19 = (uint)uVar29;
    uVar21 = (uint)(uVar29 >> 0x20);
    in_MM5 = CONCAT44(uVar21 >> 8,uVar19 >> 8);
    uVar24 = uVar25 ^ uVar27 ^ CONCAT44(uVar20 << 8,(uint)uVar26 << 8) ^
             CONCAT44(uVar20 >> 0x18,(uint)uVar26 >> 0x18) ^ in_MM1 ^
             CONCAT44(uVar18 << 0x18,uVar17 << 0x18) ^ in_MM2;
    uVar29 = uVar30 ^ uVar32 ^ CONCAT44(uVar34 << 8,(uint)uVar31 << 8) ^
             CONCAT44(uVar34 >> 0x18,(uint)uVar31 >> 0x18) ^ in_MM5 ^
             CONCAT44(uVar21 << 0x18,uVar19 << 0x18) ^ in_MM6;
    puVar22 = puVar23;
  }
  return uVar24 ^ *puVar23;
}



// WARNING: Unable to track spacebase fully for stack

void FUN_00ab7040(int param_1,undefined4 param_2,int param_3)

{
  undefined8 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 extraout_ECX;
  undefined8 uVar5;
  undefined8 uVar6;
  int aiStack_40 [7];
  int iStack_24;
  int aiStack_20 [4];
  
  iVar4 = -(-((param_3 + -0x7f) - (int)aiStack_40) & 0x3c0U);
  *(undefined **)((int)aiStack_20 + iVar4) = &stack0xfffffff0;
  *(undefined4 *)((int)aiStack_40 + iVar4) = 0xab706f;
  if ((DAT_032f16d0 >> 0x19 & 1) != 0) {
    uVar6 = *(undefined8 *)(param_1 + 8);
    *(undefined4 *)((int)aiStack_40 + iVar4) = 0xab70a8;
    uVar5 = FUN_00ab5fa0();
    puVar1 = *(undefined8 **)(*(int *)((int)aiStack_20 + iVar4) + 0x18);
    *puVar1 = uVar5;
    puVar1[1] = uVar6;
    return;
  }
  *(uint *)((int)&iStack_24 + iVar4) =
       *(int *)((int)aiStack_40 + iVar4) + -0x3ef +
       ((uint)(&stack0x000002c0 + (iVar4 - (*(int *)((int)aiStack_40 + iVar4) + -0xc6f))) & 0x300);
  uVar2 = *(undefined4 *)(param_1 + 4);
  *(undefined4 *)((int)aiStack_40 + iVar4) = 0xab70d4;
  uVar6 = FUN_00ab5c40();
  puVar3 = *(undefined4 **)(*(int *)((int)aiStack_20 + iVar4) + 0x18);
  *puVar3 = (int)uVar6;
  puVar3[1] = uVar2;
  puVar3[2] = extraout_ECX;
  puVar3[3] = (int)((ulonglong)uVar6 >> 0x20);
  return;
}



undefined8 __fastcall
FUN_00ab8dc0(undefined4 param_1_00,uint param_2_00,undefined4 param_1,uint *param_2,int param_3,
            uint *param_4)

{
  undefined4 uVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  
  if ((param_2 == (uint *)0x0) || (param_4 == (uint *)0x0)) {
    uVar1 = 0xffffffff;
  }
  else {
    param_2_00 = 0x1198f8e1;
    if (param_3 == 0x80) {
      uVar2 = *param_2;
      uVar5 = param_2[1];
      uVar6 = param_2[2];
      uVar4 = param_2[3];
      *param_4 = uVar2;
      param_4[1] = uVar5;
      param_4[2] = uVar6;
      param_4[3] = uVar4;
      iVar3 = 0;
      while( true ) {
        param_2_00 = uVar4 >> 0x10;
        uVar2 = uVar2 ^ (uint)*(byte *)((int)&DAT_00ab6c00 + (uVar4 & 0xff)) << 0x18 ^
                (uint)*(byte *)((int)&DAT_00ab6c00 + (uVar4 >> 8 & 0xff)) ^
                (uint)*(byte *)((int)&DAT_00ab6c00 + (param_2_00 & 0xff)) << 8 ^
                (uint)*(byte *)((int)&DAT_00ab6c00 + (uVar4 >> 0x18)) << 0x10 ^
                (&DAT_00ab7000)[iVar3];
        param_4[4] = uVar2;
        uVar2 = uVar2 ^ param_4[1];
        param_4[5] = uVar2;
        uVar2 = uVar2 ^ param_4[2];
        param_4[6] = uVar2;
        param_4[7] = uVar2 ^ param_4[3];
        iVar3 = iVar3 + 1;
        if (9 < iVar3) break;
        uVar2 = param_4[4];
        uVar4 = param_4[7];
        param_4 = param_4 + 4;
      }
      param_4[0x18] = 10;
      uVar1 = 0;
    }
    else if (param_3 == 0xc0) {
      uVar2 = *param_2;
      uVar5 = param_2[1];
      uVar6 = param_2[2];
      uVar4 = param_2[3];
      *param_4 = uVar2;
      param_4[1] = uVar5;
      param_4[2] = uVar6;
      param_4[3] = uVar4;
      uVar5 = param_2[5];
      param_4[4] = param_2[4];
      param_4[5] = uVar5;
      iVar3 = 0;
      while( true ) {
        param_2_00 = uVar5 >> 0x10;
        uVar2 = uVar2 ^ (uint)*(byte *)((int)&DAT_00ab6c00 + (uVar5 & 0xff)) << 0x18 ^
                (uint)*(byte *)((int)&DAT_00ab6c00 + (uVar5 >> 8 & 0xff)) ^
                (uint)*(byte *)((int)&DAT_00ab6c00 + (param_2_00 & 0xff)) << 8 ^
                (uint)*(byte *)((int)&DAT_00ab6c00 + (uVar5 >> 0x18)) << 0x10 ^
                (&DAT_00ab7000)[iVar3];
        param_4[6] = uVar2;
        uVar2 = uVar2 ^ param_4[1];
        param_4[7] = uVar2;
        uVar2 = uVar2 ^ param_4[2];
        param_4[8] = uVar2;
        uVar2 = uVar2 ^ param_4[3];
        param_4[9] = uVar2;
        if (iVar3 == 7) break;
        iVar3 = iVar3 + 1;
        uVar2 = uVar2 ^ param_4[4];
        param_4[10] = uVar2;
        param_4[0xb] = uVar2 ^ param_4[5];
        uVar2 = param_4[6];
        uVar5 = param_4[0xb];
        param_4 = param_4 + 6;
      }
      param_4[0x12] = 0xc;
      uVar1 = 0;
    }
    else if (param_3 == 0x100) {
      uVar2 = param_2[1];
      uVar5 = param_2[2];
      uVar6 = param_2[3];
      *param_4 = *param_2;
      param_4[1] = uVar2;
      param_4[2] = uVar5;
      param_4[3] = uVar6;
      uVar2 = param_2[5];
      uVar5 = param_2[6];
      uVar6 = param_2[7];
      param_4[4] = param_2[4];
      param_4[5] = uVar2;
      param_4[6] = uVar5;
      param_4[7] = uVar6;
      iVar3 = 0;
      while( true ) {
        param_2_00 = uVar6 >> 0x10;
        uVar2 = *param_4 ^ (uint)*(byte *)((int)&DAT_00ab6c00 + (uVar6 & 0xff)) << 0x18 ^
                (uint)*(byte *)((int)&DAT_00ab6c00 + (uVar6 >> 8 & 0xff)) ^
                (uint)*(byte *)((int)&DAT_00ab6c00 + (param_2_00 & 0xff)) << 8 ^
                (uint)*(byte *)((int)&DAT_00ab6c00 + (uVar6 >> 0x18)) << 0x10 ^
                (&DAT_00ab7000)[iVar3];
        param_4[8] = uVar2;
        uVar2 = uVar2 ^ param_4[1];
        param_4[9] = uVar2;
        uVar2 = uVar2 ^ param_4[2];
        param_4[10] = uVar2;
        uVar2 = uVar2 ^ param_4[3];
        param_4[0xb] = uVar2;
        if (iVar3 == 6) break;
        iVar3 = iVar3 + 1;
        uVar2 = param_4[4] ^ (uint)*(byte *)((int)&DAT_00ab6c00 + (uVar2 & 0xff)) ^
                (uint)*(byte *)((int)&DAT_00ab6c00 + (uVar2 >> 8 & 0xff)) << 8 ^
                (uint)*(byte *)((int)&DAT_00ab6c00 + (uVar2 >> 0x10 & 0xff)) << 0x10 ^
                (uint)*(byte *)((int)&DAT_00ab6c00 + (uVar2 >> 0x18)) << 0x18;
        param_4[0xc] = uVar2;
        uVar2 = uVar2 ^ param_4[5];
        param_4[0xd] = uVar2;
        uVar2 = uVar2 ^ param_4[6];
        param_4[0xe] = uVar2;
        param_4[0xf] = uVar2 ^ param_4[7];
        uVar6 = param_4[0xf];
        param_4 = param_4 + 8;
      }
      param_4[0xc] = 0xe;
      uVar1 = 0;
    }
    else {
      uVar1 = 0xfffffffe;
    }
  }
  return CONCAT44(param_2_00,uVar1);
}



void FUN_00ab9090(void)

{
  FUN_00ab8dc0();
  return;
}



void thunk_FUN_00ab9090(void)

{
  FUN_00ab8dc0();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ab9fb0(uint *param_1,undefined4 *param_2,byte *param_3,undefined4 param_4,
                 undefined4 *param_5,code *param_6)

{
  uint *puVar1;
  uint uVar2;
  uint *puVar3;
  byte *pbVar4;
  byte *pbVar5;
  int iVar6;
  undefined4 *puVar7;
  undefined4 *puVar8;
  uint local_14;
  
  puVar8 = param_5;
  if (&DAT_0000000f < param_3) {
    local_14 = (uint)param_3 >> 4;
    puVar7 = param_5;
    do {
      puVar8 = param_2;
      iVar6 = 4;
      puVar3 = param_1;
      do {
        puVar1 = (uint *)((int)puVar3 + ((int)puVar7 - (int)param_1));
        uVar2 = *puVar3;
        puVar3 = puVar3 + 1;
        iVar6 = iVar6 + -1;
        *(uint *)((int)puVar8 + (-4 - (int)param_1) + (int)puVar3) = *puVar1 ^ uVar2;
      } while (iVar6 != 0);
      (*param_6)(puVar8,puVar8,param_4);
      param_3 = param_3 + -0x10;
      param_1 = param_1 + 4;
      param_2 = puVar8 + 4;
      local_14 = local_14 - 1;
      puVar7 = puVar8;
    } while (local_14 != 0);
  }
  for (; param_3 != (byte *)0x0; param_3 = param_3 + -0x10) {
    pbVar5 = (byte *)0x0;
    do {
      if (param_3 <= pbVar5) {
LAB_00aba0e2:
        if (pbVar5 < (byte *)0x10) {
          pbVar4 = pbVar5 + (int)param_2;
          iVar6 = 0x10 - (int)pbVar5;
          do {
            *pbVar4 = pbVar4[(int)puVar8 - (int)param_2];
            pbVar4 = pbVar4 + 1;
            iVar6 = iVar6 + -1;
          } while (iVar6 != 0);
        }
        break;
      }
      pbVar4 = pbVar5 + (int)param_1;
      pbVar4[(int)param_2 - (int)param_1] = pbVar4[(int)puVar8 - (int)param_1] ^ *pbVar4;
      if (param_3 <= pbVar4 + (1 - (int)param_1)) {
        pbVar5 = pbVar5 + 1;
        goto LAB_00aba0e2;
      }
      (pbVar5 + 1)[(int)param_2] = (pbVar5 + 1)[(int)puVar8] ^ (pbVar5 + 1)[(int)param_1];
      if (param_3 <= pbVar4 + (2 - (int)param_1)) {
        pbVar5 = pbVar5 + 2;
        goto LAB_00aba0e2;
      }
      (pbVar5 + 2)[(int)param_2] = (pbVar5 + 2)[(int)param_1] ^ (pbVar5 + 2)[(int)puVar8];
      if (param_3 <= pbVar4 + (3 - (int)param_1)) {
        pbVar5 = pbVar5 + 3;
        goto LAB_00aba0e2;
      }
      pbVar4 = pbVar5 + 4;
      (pbVar5 + 3)[(int)param_2] = (pbVar5 + 3)[(int)puVar8] ^ (pbVar5 + 3)[(int)param_1];
      pbVar5 = pbVar4;
    } while (pbVar4 <= &DAT_0000000f);
    (*param_6)(param_2,param_2,param_4);
    puVar8 = param_2;
    if (param_3 < (byte *)0x11) break;
    param_1 = param_1 + 4;
    param_2 = param_2 + 4;
  }
  *param_5 = *puVar8;
  param_5[1] = puVar8[1];
  param_5[2] = puVar8[2];
  param_5[3] = puVar8[3];
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aba150(uint *param_1,uint *param_2,byte *param_3,undefined4 param_4,uint *param_5,
                 code *param_6)

{
  byte bVar1;
  uint *puVar2;
  byte *pbVar3;
  byte *pbVar4;
  int iVar5;
  uint *puVar6;
  undefined auStack_3c [3];
  byte bStack_39;
  uint *local_38;
  uint local_34;
  uint uStack_30;
  int local_2c;
  uint local_28;
  code *local_24;
  int iStack_20;
  undefined4 local_1c;
  int iStack_18;
  undefined4 local_14;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_3c;
  local_1c = param_4;
  local_24 = param_6;
  if (param_1 == param_2) {
    if (&DAT_0000000f < param_3) {
      local_2c = (int)param_5 - (int)&local_14;
      local_34 = (int)param_2 - (int)&local_14;
      local_38 = (uint *)((int)param_1 - (int)&local_14);
      local_28 = (uint)param_3 >> 4;
      param_2 = param_2 + local_28 * 4;
      do {
        (*local_24)(param_1,&local_14,local_1c);
        uStack_30 = 0;
        do {
          puVar2 = (uint *)((int)&local_14 + uStack_30);
          iStack_20 = *(int *)((int)local_38 + (int)puVar2);
          *(uint *)(local_34 + (int)puVar2) = *(uint *)(local_2c + (int)puVar2) ^ *puVar2;
          *(int *)(local_2c + (int)puVar2) = iStack_20;
          uStack_30 = uStack_30 + 4;
        } while (uStack_30 < 0x10);
        local_38 = local_38 + 4;
        local_34 = local_34 + 0x10;
        param_3 = param_3 + -0x10;
        param_1 = param_1 + 4;
        local_28 = local_28 - 1;
      } while (local_28 != 0);
    }
  }
  else {
    local_38 = param_5;
    if (&DAT_0000000f < param_3) {
      local_34 = (uint)param_3 >> 4;
      do {
        puVar6 = param_1;
        (*local_24)(puVar6,param_2,local_1c);
        uStack_30 = 4;
        puVar2 = param_2;
        do {
          *puVar2 = *puVar2 ^ *(uint *)(((int)local_38 - (int)param_2) + (int)puVar2);
          puVar2 = puVar2 + 1;
          uStack_30 = uStack_30 + -1;
        } while (uStack_30 != 0);
        param_3 = param_3 + -0x10;
        param_1 = puVar6 + 4;
        param_2 = param_2 + 4;
        local_34 = local_34 - 1;
        uStack_30 = 0;
        local_38 = puVar6;
      } while (local_34 != 0);
      uStack_30 = 0;
      local_34 = 0;
    }
    *param_5 = *local_38;
    param_5[1] = local_38[1];
    param_5[2] = local_38[2];
    param_5[3] = local_38[3];
  }
  if (param_3 == (byte *)0x0) {
LAB_00aba41b:
    ___security_check_cookie_4();
    return;
  }
  local_2c = (int)param_5 - (int)&local_14;
  iStack_20 = 1 - (int)&local_14;
  local_28 = 2 - (int)&local_14;
  iStack_18 = 3 - (int)&local_14;
  local_38 = (uint *)((int)param_2 + 2);
  uStack_30 = (int)param_2 - (int)&local_14;
  local_34 = (int)param_1 - (int)&local_14;
  do {
    (*local_24)(param_1,&local_14,local_1c);
    pbVar3 = (byte *)0x0;
    do {
      if (param_3 <= pbVar3) break;
      pbVar4 = (byte *)((int)&local_14 + (int)pbVar3);
      bStack_39 = pbVar4[local_34];
      pbVar4[uStack_30] = pbVar4[local_2c] ^ *pbVar4;
      pbVar4[local_2c] = bStack_39;
      if (param_3 <= pbVar4 + iStack_20) {
        pbVar3 = pbVar3 + 1;
        break;
      }
      bStack_39 = pbVar3[(int)param_1 + 1];
      pbVar3[(int)local_38 + -1] = pbVar3[(int)&local_14 + 1] ^ pbVar3[(int)param_5 + 1];
      pbVar3[(int)param_5 + 1] = bStack_39;
      if (param_3 <= pbVar4 + local_28) {
        pbVar3 = pbVar3 + 2;
        break;
      }
      bStack_39 = pbVar3[(int)param_1 + 2];
      *(byte *)((int)local_38 + (int)pbVar3) = pbVar3[(int)&local_14 + 2] ^ pbVar3[(int)param_5 + 2]
      ;
      pbVar3[(int)param_5 + 2] = bStack_39;
      if (param_3 <= pbVar4 + iStack_18) {
        pbVar3 = pbVar3 + 3;
        break;
      }
      bVar1 = pbVar3[(int)param_1 + 3];
      pbVar3[(int)local_38 + 1] = pbVar3[(int)&local_14 + 3] ^ pbVar3[(int)param_5 + 3];
      pbVar3[(int)param_5 + 3] = bVar1;
      pbVar3 = pbVar3 + 4;
    } while (pbVar3 < (byte *)0x10);
    if (param_3 < (byte *)0x11) {
      if (pbVar3 < (byte *)0x10) {
        pbVar4 = (byte *)((int)param_5 + (int)pbVar3);
        iVar5 = 0x10 - (int)pbVar3;
        do {
          *pbVar4 = pbVar4[(int)param_1 - (int)param_5];
          pbVar4 = pbVar4 + 1;
          iVar5 = iVar5 + -1;
        } while (iVar5 != 0);
      }
      goto LAB_00aba41b;
    }
    local_34 = local_34 + 0x10;
    uStack_30 = uStack_30 + 0x10;
    param_3 = param_3 + -0x10;
    local_38 = local_38 + 4;
    param_1 = param_1 + 4;
    if (param_3 == (byte *)0x0) {
      ___security_check_cookie_4();
      return;
    }
  } while( true );
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aba430(byte *param_1,byte *param_2,uint param_3,undefined4 param_4,int param_5,
                 uint *param_6,code *param_7)

{
  byte *pbVar1;
  uint *puVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  uint local_4;
  
  uVar6 = *param_6;
  pbVar1 = param_2;
  for (uVar4 = param_3; (uVar6 != 0 && (uVar4 != 0)); uVar4 = uVar4 - 1) {
    *pbVar1 = *(byte *)(uVar6 + param_5) ^ *param_1;
    pbVar1 = pbVar1 + 1;
    param_1 = param_1 + 1;
    uVar6 = uVar6 + 1 & 0xf;
  }
  param_2 = pbVar1;
  if (0xf < uVar4) {
    param_3 = (int)param_1 - param_5;
    local_4 = uVar4 >> 4;
    param_2 = pbVar1 + local_4 * 0x10;
    iVar5 = (int)pbVar1 - param_5;
    param_1 = param_1 + local_4 * 0x10;
    do {
      (*param_7)(param_5,param_5,param_4);
      if (uVar6 < 0x10) {
        iVar3 = (0xf - uVar6 >> 2) + 1;
        puVar2 = (uint *)(uVar6 + param_5);
        do {
          iVar3 = iVar3 + -1;
          *(uint *)((int)puVar2 + iVar5) = *(uint *)(param_3 + (int)puVar2) ^ *puVar2;
          puVar2 = puVar2 + 1;
        } while (iVar3 != 0);
      }
      param_3 = param_3 + 0x10;
      uVar4 = uVar4 - 0x10;
      iVar5 = iVar5 + 0x10;
      uVar6 = 0;
      local_4 = local_4 - 1;
    } while (local_4 != 0);
  }
  if (uVar4 == 0) {
    *param_6 = uVar6;
    return;
  }
  (*param_7)(param_5,param_5,param_4);
  pbVar1 = (byte *)(uVar6 + param_5);
  uVar6 = uVar6 + uVar4;
  do {
    uVar4 = uVar4 - 1;
    pbVar1[(int)param_2 - param_5] = pbVar1[(int)param_1 - param_5] ^ *pbVar1;
    pbVar1 = pbVar1 + 1;
  } while (uVar4 != 0);
  *param_6 = uVar6;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aba540(byte *param_1,byte *param_2,uint param_3,undefined4 param_4,int param_5,
                 uint *param_6,int param_7,code *param_8)

{
  byte bVar1;
  byte *pbVar2;
  uint *puVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  uint local_4;
  
  uVar6 = *param_6;
  pbVar2 = param_2;
  if (param_7 == 0) {
    for (; (uVar6 != 0 && (param_3 != 0)); param_3 = param_3 - 1) {
      bVar1 = *param_1;
      *param_2 = *(byte *)(uVar6 + param_5) ^ bVar1;
      *(byte *)(uVar6 + param_5) = bVar1;
      param_2 = param_2 + 1;
      param_1 = param_1 + 1;
      uVar6 = uVar6 + 1 & 0xf;
    }
    if (0xf < param_3) {
      param_7 = (int)param_2 - param_5;
      local_4 = param_3 >> 4;
      do {
        (*param_8)(param_5,param_5,param_4);
        if (uVar6 < 0x10) {
          puVar3 = (uint *)(uVar6 + param_5);
          iVar5 = (0xf - uVar6 >> 2) + 1;
          do {
            uVar6 = *(uint *)((int)(uint *)(param_7 + (int)puVar3) + ((int)param_1 - (int)param_2));
            *(uint *)(param_7 + (int)puVar3) = *puVar3 ^ uVar6;
            *puVar3 = uVar6;
            puVar3 = puVar3 + 1;
            iVar5 = iVar5 + -1;
          } while (iVar5 != 0);
        }
        param_2 = param_2 + 0x10;
        param_7 = param_7 + 0x10;
        param_3 = param_3 - 0x10;
        param_1 = param_1 + 0x10;
        uVar6 = 0;
        local_4 = local_4 - 1;
      } while (local_4 != 0);
    }
    if (param_3 != 0) {
      (*param_8)(param_5,param_5,param_4);
      pbVar2 = (byte *)(uVar6 + param_5);
      uVar6 = uVar6 + param_3;
      do {
        bVar1 = (pbVar2 + ((int)param_2 - param_5))[(int)param_1 - (int)param_2];
        pbVar2[(int)param_2 - param_5] = *pbVar2 ^ bVar1;
        param_3 = param_3 - 1;
        *pbVar2 = bVar1;
        pbVar2 = pbVar2 + 1;
      } while (param_3 != 0);
    }
  }
  else {
    for (; (uVar6 != 0 && (param_3 != 0)); param_3 = param_3 - 1) {
      *(byte *)(uVar6 + param_5) = *(byte *)(uVar6 + param_5) ^ *param_1;
      *pbVar2 = *(byte *)(uVar6 + param_5);
      param_1 = param_1 + 1;
      uVar6 = uVar6 + 1 & 0xf;
      pbVar2 = pbVar2 + 1;
    }
    param_2 = pbVar2;
    if (0xf < param_3) {
      param_7 = (int)param_1 - param_5;
      local_4 = param_3 >> 4;
      param_2 = pbVar2 + local_4 * 0x10;
      iVar5 = (int)pbVar2 - param_5;
      param_1 = param_1 + local_4 * 0x10;
      do {
        (*param_8)(param_5,param_5,param_4);
        if (uVar6 < 0x10) {
          puVar3 = (uint *)(uVar6 + param_5);
          iVar4 = (0xf - uVar6 >> 2) + 1;
          do {
            *puVar3 = *puVar3 ^ *(uint *)(param_7 + (int)puVar3);
            *(uint *)((int)puVar3 + iVar5) = *puVar3;
            puVar3 = puVar3 + 1;
            iVar4 = iVar4 + -1;
          } while (iVar4 != 0);
        }
        param_7 = param_7 + 0x10;
        param_3 = param_3 - 0x10;
        iVar5 = iVar5 + 0x10;
        uVar6 = 0;
        local_4 = local_4 - 1;
      } while (local_4 != 0);
    }
    if (param_3 != 0) {
      (*param_8)(param_5,param_5,param_4);
      pbVar2 = (byte *)(uVar6 + param_5);
      uVar6 = uVar6 + param_3;
      do {
        *pbVar2 = *pbVar2 ^ pbVar2[(int)param_1 - param_5];
        param_3 = param_3 - 1;
        pbVar2[(int)param_2 - param_5] = *pbVar2;
        pbVar2 = pbVar2 + 1;
      } while (param_3 != 0);
      *param_6 = uVar6;
      return;
    }
  }
  *param_6 = uVar6;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __fastcall
FUN_00aba770(code *param_1_00,byte *param_2_00,uint param_1,uint param_2,undefined4 param_3,
            undefined4 *param_4,int param_7)

{
  byte *pbVar1;
  byte bVar2;
  byte bVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int iVar6;
  byte bVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  byte *pbVar11;
  byte *pbVar12;
  undefined auStack_34 [3];
  byte bStack_31;
  uint local_30;
  int iStack_2c;
  undefined4 local_28;
  undefined4 local_24 [3];
  byte abStack_18 [20];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_34;
  local_30 = param_1;
  if (param_2 - 1 < 0x80) {
    local_28 = *param_4;
    local_24[0] = param_4[1];
    local_24[1] = param_4[2];
    local_24[2] = param_4[3];
    (*param_1_00)(param_4,param_4,param_3);
    iVar10 = (int)(param_2 + 7 + ((int)(param_2 + 7) >> 0x1f & 7U)) >> 3;
    if (param_7 == 0) {
      iVar9 = 0;
      if (0 < iVar10) {
        iStack_2c = (int)param_4 - (int)abStack_18;
        do {
          pbVar11 = abStack_18 + iVar9;
          bVar7 = pbVar11[(int)param_2_00 - (int)abStack_18];
          bVar2 = pbVar11[iStack_2c];
          *pbVar11 = bVar7;
          iVar9 = iVar9 + 1;
          pbVar11[local_30 - (int)abStack_18] = bVar2 ^ bVar7;
        } while (iVar9 < iVar10);
      }
    }
    else if (0 < iVar10) {
      iVar8 = (int)param_4 - (int)param_2_00;
      iVar9 = -(int)param_2_00;
      iVar6 = local_30 - (int)param_2_00;
      do {
        bVar7 = param_2_00[iVar8];
        bVar2 = *param_2_00;
        param_2_00[(int)(abStack_18 + iVar9)] = bVar7 ^ bVar2;
        param_2_00[iVar6] = bVar7 ^ bVar2;
        param_2_00 = param_2_00 + 1;
        iVar10 = iVar10 + -1;
      } while (iVar10 != 0);
    }
    local_30 = param_2 & 0x80000007;
    if ((int)local_30 < 0) {
      local_30 = (local_30 - 1 | 0xfffffff8) + 1;
    }
    iVar10 = (int)(param_2 + ((int)param_2 >> 0x1f & 7U)) >> 3;
    if (local_30 == 0) {
      uVar4 = *(undefined4 *)((int)local_24 + iVar10);
      *param_4 = *(undefined4 *)((int)&local_28 + iVar10);
      uVar5 = *(undefined4 *)((int)local_24 + iVar10 + 4);
      param_4[1] = uVar4;
      uVar4 = *(undefined4 *)(abStack_18 + iVar10 + -4);
      param_4[2] = uVar5;
      param_4[3] = uVar4;
      ___security_check_cookie_4();
      return;
    }
    bVar7 = (byte)local_30;
    bStack_31 = 8 - bVar7;
    pbVar11 = (byte *)((int)&local_28 + iVar10 + 1);
    iVar10 = 4;
    pbVar12 = (byte *)((int)param_4 + 1);
    do {
      bVar2 = *pbVar11;
      pbVar12[-1] = pbVar11[-1] << (bVar7 & 0x1f) | bVar2 >> (bStack_31 & 0x1f);
      bVar3 = pbVar11[1];
      *pbVar12 = bVar2 << (bVar7 & 0x1f) | bVar3 >> (bStack_31 & 0x1f);
      bVar2 = pbVar11[2];
      pbVar12[1] = bVar3 << (bVar7 & 0x1f) | bVar2 >> (bStack_31 & 0x1f);
      pbVar1 = pbVar11 + 3;
      pbVar11 = pbVar11 + 4;
      iVar10 = iVar10 + -1;
      pbVar12[2] = *pbVar1 >> (bStack_31 & 0x1f) | bVar2 << (bVar7 & 0x1f);
      pbVar12 = pbVar12 + 4;
    } while (iVar10 != 0);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aba940(int param_1,int param_2,uint param_3,undefined4 param_4,undefined4 param_5,
                 undefined4 param_6,undefined4 param_7)

{
  byte bVar1;
  byte bVar2;
  uint uVar3;
  uint uVar4;
  undefined4 uStack_4;
  
  uStack_4 = 0xaba94a;
  uVar3 = 0;
  if (param_3 != 0) {
    do {
      bVar1 = (byte)uVar3 & 7;
      uVar4 = uVar3 >> 3;
      bVar2 = 7 - bVar1;
      uStack_4 = CONCAT13(uStack_4._3_1_,
                          CONCAT12(-((*(byte *)(uVar4 + param_1) & (byte)(1 << (bVar2 & 0x1f))) != 0
                                    ),(undefined2)uStack_4)) & 0xff80ffff;
      FUN_00aba770((int)&uStack_4 + 3,1,param_4,param_5,param_7);
      uVar3 = uVar3 + 1;
      *(byte *)(uVar4 + param_2) =
           ~('\x01' << (bVar2 & 0x1f)) & *(byte *)(uVar4 + param_2) |
           (uStack_4._3_1_ & 0x80) >> bVar1;
    } while (uVar3 < param_3);
  }
  return;
}



void __fastcall FUN_00abaa30(undefined4 param_1,int param_2)

{
  int iVar1;
  char cVar2;
  int iVar3;
  
  iVar3 = 0x10;
  do {
    iVar1 = iVar3 + -1;
    iVar3 = iVar3 + -1;
    cVar2 = *(char *)(iVar1 + param_2) + '\x01';
    *(char *)(iVar3 + param_2) = cVar2;
    if (cVar2 != '\0') {
      return;
    }
  } while (iVar3 != 0);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abaa50(byte *param_1,byte *param_2,uint param_3,undefined4 param_4,undefined4 param_5,
                 int param_6,uint *param_7,code *param_8)

{
  byte *pbVar1;
  uint *puVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  uint local_4;
  
  uVar6 = *param_7;
  pbVar1 = param_2;
  for (uVar4 = param_3; (uVar6 != 0 && (uVar4 != 0)); uVar4 = uVar4 - 1) {
    *pbVar1 = *(byte *)(uVar6 + param_6) ^ *param_1;
    pbVar1 = pbVar1 + 1;
    param_1 = param_1 + 1;
    uVar6 = uVar6 + 1 & 0xf;
  }
  param_2 = pbVar1;
  if (0xf < uVar4) {
    param_3 = (int)param_1 - param_6;
    local_4 = uVar4 >> 4;
    param_2 = pbVar1 + local_4 * 0x10;
    iVar5 = (int)pbVar1 - param_6;
    param_1 = param_1 + local_4 * 0x10;
    do {
      (*param_8)(param_5,param_6,param_4);
      FUN_00abaa30();
      if (uVar6 < 0x10) {
        iVar3 = (0xf - uVar6 >> 2) + 1;
        puVar2 = (uint *)(uVar6 + param_6);
        do {
          iVar3 = iVar3 + -1;
          *(uint *)((int)puVar2 + iVar5) = *(uint *)(param_3 + (int)puVar2) ^ *puVar2;
          puVar2 = puVar2 + 1;
        } while (iVar3 != 0);
      }
      param_3 = param_3 + 0x10;
      uVar4 = uVar4 - 0x10;
      iVar5 = iVar5 + 0x10;
      uVar6 = 0;
      local_4 = local_4 - 1;
    } while (local_4 != 0);
  }
  if (uVar4 == 0) {
    *param_7 = uVar6;
    return;
  }
  (*param_8)(param_5,param_6,param_4);
  FUN_00abaa30();
  pbVar1 = (byte *)(uVar6 + param_6);
  uVar6 = uVar6 + uVar4;
  do {
    uVar4 = uVar4 - 1;
    pbVar1[(int)param_2 - param_6] = pbVar1[(int)param_1 - param_6] ^ *pbVar1;
    pbVar1 = pbVar1 + 1;
  } while (uVar4 != 0);
  *param_7 = uVar6;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abab80(byte *param_1,byte *param_2,uint param_3,undefined4 param_4,int param_5,
                 undefined4 *param_6,uint *param_7,code *param_8)

{
  int iVar1;
  char cVar2;
  uint uVar3;
  byte *pbVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  
  uVar3 = *param_7;
  for (; (uVar3 != 0 && (param_3 != 0)); param_3 = param_3 - 1) {
    *param_2 = *(byte *)(uVar3 + (int)param_6) ^ *param_1;
    param_2 = param_2 + 1;
    param_1 = param_1 + 1;
    uVar3 = uVar3 + 1 & 0xf;
  }
  uVar7 = *(uint *)(param_5 + 0xc);
  uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;
  for (; 0xf < param_3; param_3 = param_3 + uVar6 * -0x10) {
    uVar6 = param_3 >> 4;
    uVar7 = uVar7 + uVar6;
    if (uVar7 < uVar6) {
      uVar6 = uVar6 - uVar7;
      uVar7 = 0;
    }
    (*param_8)(param_1,param_2,uVar6,param_4,param_5);
    *(uint *)(param_5 + 0xc) =
         uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;
    if (uVar7 == 0) {
      iVar5 = 0xc;
      do {
        iVar1 = iVar5 + -1;
        iVar5 = iVar5 + -1;
        cVar2 = *(char *)(iVar1 + param_5) + '\x01';
        *(char *)(iVar5 + param_5) = cVar2;
        if (cVar2 != '\0') break;
      } while (iVar5 != 0);
    }
    param_2 = param_2 + uVar6 * 0x10;
    param_1 = param_1 + uVar6 * 0x10;
  }
  if (param_3 == 0) {
    *param_7 = uVar3;
    return;
  }
  *param_6 = 0;
  param_6[1] = 0;
  param_6[2] = 0;
  param_6[3] = 0;
  (*param_8)(param_6,param_6,1,param_4,param_5);
  uVar7 = uVar7 + 1;
  *(uint *)(param_5 + 0xc) =
       uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 * 0x1000000;
  if (uVar7 == 0) {
    iVar5 = 0xc;
    do {
      iVar1 = iVar5 + -1;
      iVar5 = iVar5 + -1;
      cVar2 = *(char *)(iVar1 + param_5) + '\x01';
      *(char *)(iVar5 + param_5) = cVar2;
      if (cVar2 != '\0') break;
    } while (iVar5 != 0);
  }
  pbVar4 = (byte *)(uVar3 + (int)param_6);
  uVar3 = uVar3 + param_3;
  do {
    param_3 = param_3 - 1;
    pbVar4[(int)param_2 - (int)param_6] = pbVar4[(int)param_1 - (int)param_6] ^ *pbVar4;
    pbVar4 = pbVar4 + 1;
  } while (param_3 != 0);
  *param_7 = uVar3;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abacc0(undefined4 *param_1,uint *param_2,uint *param_3,uint *param_4,uint param_5,
                 int param_6)

{
  uint uVar1;
  undefined uVar2;
  uint uVar3;
  uint uVar4;
  uint *puVar5;
  uint *puVar6;
  uint uVar7;
  uint uVar8;
  undefined auStack_4c [3];
  undefined uStack_49;
  uint uStack_48;
  undefined *puStack_44;
  undefined4 *local_40;
  int iStack_3c;
  uint uStack_38;
  uint uStack_34;
  uint uStack_30;
  uint uStack_2c;
  uint uStack_28;
  uint local_24;
  uint local_20;
  uint local_1c;
  uint local_18;
  int iStack_14;
  uint uStack_10;
  uint uStack_8;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_4c;
  local_40 = param_1;
  if (param_5 < 0x10) {
    ___security_check_cookie_4();
    return;
  }
  local_24 = *param_2;
  local_20 = param_2[1];
  local_1c = param_2[2];
  local_18 = param_2[3];
  (*(code *)param_1[3])(&local_24,&local_24,param_1[1]);
  uVar7 = local_24;
  uVar8 = local_20;
  uVar3 = local_1c;
  uVar4 = local_18;
  if ((param_6 == 0) && ((param_5 & 0xf) != 0)) {
    param_5 = param_5 - 0x10;
  }
  while (local_24 = uVar7, local_20 = uVar8, local_1c = uVar3, local_18 = uVar4, 0xf < param_5) {
    uStack_34 = *param_3 ^ uVar7;
    uStack_30 = param_3[1] ^ uVar8;
    uStack_2c = param_3[2] ^ uVar3;
    uStack_28 = param_3[3] ^ uVar4;
    (*(code *)local_40[2])(&uStack_34,&uStack_34,*local_40);
    param_4[1] = uStack_30 ^ local_20;
    uStack_30 = uStack_30 ^ local_20;
    *param_4 = uStack_34 ^ local_24;
    uStack_34 = uStack_34 ^ local_24;
    uStack_2c = uStack_2c ^ local_1c;
    param_4[2] = uStack_2c;
    param_4[3] = uStack_28 ^ local_18;
    param_3 = param_3 + 4;
    param_4 = param_4 + 4;
    param_5 = param_5 - 0x10;
    uStack_28 = uStack_28 ^ local_18;
    if (param_5 == 0) goto LAB_00abb054;
    uVar7 = local_24 >> 0x1f;
    puStack_44 = (undefined *)(local_20 >> 0x1f);
    uStack_38 = local_18 << 1 | local_1c >> 0x1f;
    local_24 = (int)local_18 >> 0x1f & 0x87U ^ local_24 * 2;
    local_20 = local_20 << 1 | uVar7;
    local_1c = local_1c * 2 | (uint)puStack_44;
    local_18 = uStack_38;
    uVar7 = local_24;
    uVar8 = local_20;
    uVar3 = local_1c;
    uVar4 = local_18;
  }
  if (param_6 != 0) {
    uStack_48 = 0;
    if (param_5 != 0) {
      iStack_3c = (int)param_3 - (int)param_4;
      iStack_14 = (int)param_4 - (int)&uStack_34;
      do {
        puStack_44 = (undefined *)((int)&uStack_34 + iStack_14 + uStack_48);
        uStack_49 = puStack_44[iStack_3c];
        *puStack_44 = *(undefined *)((int)&uStack_34 + uStack_48);
        uVar1 = uStack_48 + 1;
        *(undefined *)((int)&uStack_34 + uStack_48) = uStack_49;
        uStack_48 = uVar1;
      } while (uVar1 < param_5);
    }
    uStack_2c = uStack_2c ^ uVar3;
    uStack_30 = uStack_30 ^ uVar8;
    uStack_28 = uStack_28 ^ uVar4;
    uStack_34 = uStack_34 ^ uVar7;
    (*(code *)local_40[2])(&uStack_34,&uStack_34,*local_40);
    param_4[-4] = uStack_34 ^ local_24;
    param_4[-3] = uStack_30 ^ local_20;
    param_4[-2] = uStack_2c ^ local_1c;
    param_4[-1] = uStack_28 ^ local_18;
    ___security_check_cookie_4();
    return;
  }
  uStack_10 = uVar8 << 1 | uVar7 >> 0x1f;
  uVar7 = (int)uVar4 >> 0x1f & 0x87U ^ uVar7 * 2;
  uStack_8 = uVar4 << 1 | uVar3 >> 0x1f;
  uVar8 = uVar8 >> 0x1f | uVar3 * 2;
  uStack_38 = 0;
  uStack_34 = *param_3 ^ uVar7;
  uStack_30 = param_3[1] ^ uStack_10;
  uStack_28 = param_3[3] ^ uStack_8;
  uStack_2c = param_3[2] ^ uVar8;
  (*(code *)local_40[2])(&uStack_34,&uStack_34,*local_40);
  uStack_34 = uStack_34 ^ uVar7;
  uStack_30 = uStack_30 ^ uStack_10;
  uStack_2c = uStack_2c ^ uVar8;
  uStack_28 = uStack_28 ^ uStack_8;
  if (param_5 != 0) {
    puVar6 = &uStack_34;
    puVar5 = param_4 + 4;
    do {
      uVar2 = *(undefined *)((int)puVar5 + ((int)param_3 - (int)param_4));
      *(undefined *)puVar5 = *(undefined *)puVar6;
      *(undefined *)puVar6 = uVar2;
      puVar5 = (uint *)((int)puVar5 + 1);
      puVar6 = (uint *)((int)puVar6 + 1);
      param_5 = param_5 - 1;
    } while (param_5 != 0);
  }
  uStack_34 = uStack_34 ^ local_24;
  uStack_30 = uStack_30 ^ local_20;
  uStack_2c = uStack_2c ^ local_1c;
  uStack_28 = uStack_28 ^ local_18;
  (*(code *)local_40[2])(&uStack_34,&uStack_34,*local_40);
  *param_4 = uStack_34 ^ local_24;
  param_4[1] = uStack_30 ^ local_20;
  param_4[2] = uStack_2c ^ local_1c;
  param_4[3] = uStack_28 ^ local_18;
LAB_00abb054:
  ___security_check_cookie_4();
  return;
}



void FUN_00abb080(uint *param_1,int *param_2)

{
  byte bVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  
  uVar2 = *param_2 + param_1[1];
  bVar1 = (byte)param_2[1] & 0x1f;
  uVar2 = uVar2 << bVar1 | uVar2 >> 0x20 - bVar1;
  uVar4 = *param_1 ^
          (((&DAT_00dbec50)[uVar2 >> 8 & 0xff] ^ *(uint *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)) -
          *(int *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4)) +
          *(int *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
  uVar2 = param_2[2] ^ uVar4;
  bVar1 = (byte)param_2[3] & 0x1f;
  uVar2 = uVar2 << bVar1 | uVar2 >> 0x20 - bVar1;
  uVar3 = param_1[1] ^
          ((&DAT_00dbec50)[uVar2 >> 8 & 0xff] - *(int *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)) +
          *(int *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
  uVar2 = param_2[4] - uVar3;
  bVar1 = (byte)param_2[5] & 0x1f;
  uVar2 = uVar2 << bVar1 | uVar2 >> 0x20 - bVar1;
  uVar4 = uVar4 ^ ((&DAT_00dbec50)[uVar2 >> 8 & 0xff] + *(int *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)
                  ^ *(uint *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4)) -
                  *(int *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
  uVar2 = param_2[6] + uVar4;
  bVar1 = (byte)param_2[7] & 0x1f;
  uVar2 = uVar2 << bVar1 | uVar2 >> 0x20 - bVar1;
  uVar3 = uVar3 ^ (((&DAT_00dbec50)[uVar2 >> 8 & 0xff] ^
                   *(uint *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)) -
                  *(int *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4)) +
                  *(int *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
  uVar2 = param_2[8] ^ uVar3;
  bVar1 = (byte)param_2[9] & 0x1f;
  uVar2 = uVar2 << bVar1 | uVar2 >> 0x20 - bVar1;
  uVar4 = uVar4 ^ ((&DAT_00dbec50)[uVar2 >> 8 & 0xff] - *(int *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)
                  ) + *(int *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4) ^
                  *(uint *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
  uVar2 = param_2[10] - uVar4;
  bVar1 = (byte)param_2[0xb] & 0x1f;
  uVar2 = uVar2 << bVar1 | uVar2 >> 0x20 - bVar1;
  uVar3 = uVar3 ^ ((&DAT_00dbec50)[uVar2 >> 8 & 0xff] + *(int *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)
                  ^ *(uint *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4)) -
                  *(int *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
  uVar2 = param_2[0xc] + uVar3;
  bVar1 = (byte)param_2[0xd] & 0x1f;
  uVar2 = uVar2 << bVar1 | uVar2 >> 0x20 - bVar1;
  uVar4 = uVar4 ^ (((&DAT_00dbec50)[uVar2 >> 8 & 0xff] ^
                   *(uint *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)) -
                  *(int *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4)) +
                  *(int *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
  uVar2 = param_2[0xe] ^ uVar4;
  bVar1 = (byte)param_2[0xf] & 0x1f;
  uVar2 = uVar2 << bVar1 | uVar2 >> 0x20 - bVar1;
  uVar3 = uVar3 ^ ((&DAT_00dbec50)[uVar2 >> 8 & 0xff] - *(int *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)
                  ) + *(int *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4) ^
                  *(uint *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
  uVar2 = param_2[0x10] - uVar3;
  bVar1 = (byte)param_2[0x11] & 0x1f;
  uVar2 = uVar2 << bVar1 | uVar2 >> 0x20 - bVar1;
  uVar4 = uVar4 ^ ((&DAT_00dbec50)[uVar2 >> 8 & 0xff] + *(int *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)
                  ^ *(uint *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4)) -
                  *(int *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
  uVar2 = param_2[0x12] + uVar4;
  bVar1 = (byte)param_2[0x13] & 0x1f;
  uVar2 = uVar2 << bVar1 | uVar2 >> 0x20 - bVar1;
  uVar3 = uVar3 ^ (((&DAT_00dbec50)[uVar2 >> 8 & 0xff] ^
                   *(uint *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)) -
                  *(int *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4)) +
                  *(int *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
  uVar2 = param_2[0x14] ^ uVar3;
  bVar1 = (byte)param_2[0x15] & 0x1f;
  uVar2 = uVar2 << bVar1 | uVar2 >> 0x20 - bVar1;
  uVar4 = uVar4 ^ ((&DAT_00dbec50)[uVar2 >> 8 & 0xff] - *(int *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)
                  ) + *(int *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4) ^
                  *(uint *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
  bVar1 = (byte)param_2[0x17] & 0x1f;
  uVar2 = param_2[0x16] - uVar4 << bVar1 | param_2[0x16] - uVar4 >> 0x20 - bVar1;
  uVar3 = uVar3 ^ ((&DAT_00dbec50)[uVar2 >> 8 & 0xff] + *(int *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)
                  ^ *(uint *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4)) -
                  *(int *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
  if (param_2[0x20] == 0) {
    bVar1 = (byte)param_2[0x19] & 0x1f;
    uVar2 = param_2[0x18] + uVar3 << bVar1 | param_2[0x18] + uVar3 >> 0x20 - bVar1;
    uVar4 = uVar4 ^ (((&DAT_00dbec50)[uVar2 >> 8 & 0xff] ^
                     *(uint *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)) -
                    *(int *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4)) +
                    *(int *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
    uVar2 = param_2[0x1a] ^ uVar4;
    bVar1 = (byte)param_2[0x1b] & 0x1f;
    uVar2 = uVar2 << bVar1 | uVar2 >> 0x20 - bVar1;
    uVar3 = uVar3 ^ ((&DAT_00dbec50)[uVar2 >> 8 & 0xff] -
                    *(int *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)) +
                    *(int *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4) ^
                    *(uint *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
    uVar2 = param_2[0x1c] - uVar3;
    bVar1 = (byte)param_2[0x1d] & 0x1f;
    uVar2 = uVar2 << bVar1 | uVar2 >> 0x20 - bVar1;
    uVar4 = uVar4 ^ ((&DAT_00dbec50)[uVar2 >> 8 & 0xff] +
                     *(int *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4) ^
                    *(uint *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4)) -
                    *(int *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
    bVar1 = (byte)param_2[0x1f] & 0x1f;
    uVar2 = param_2[0x1e] + uVar4 << bVar1 | param_2[0x1e] + uVar4 >> 0x20 - bVar1;
    uVar3 = uVar3 ^ (((&DAT_00dbec50)[uVar2 >> 8 & 0xff] ^
                     *(uint *)(&DAT_00dbf050 + (uVar2 & 0xff) * 4)) -
                    *(int *)(&DAT_00dbf450 + (uVar2 >> 0x18) * 4)) +
                    *(int *)(&DAT_00dbf850 + (uVar2 >> 0x10 & 0xff) * 4);
  }
  param_1[1] = uVar4;
  *param_1 = uVar3;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abbed0(byte *param_1,byte *param_2,int param_3,undefined4 param_4,byte *param_5,
                 uint *param_6)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  int local_28;
  uint *local_24;
  int local_20;
  uint local_1c;
  uint local_18;
  undefined4 local_14;
  byte *local_10;
  byte local_c [4];
  byte local_8;
  byte local_7;
  byte local_6;
  byte local_5;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_28;
  local_14 = param_4;
  local_24 = param_6;
  uVar3 = *param_6;
  local_20 = param_3;
  local_10 = param_5 + 1;
  uVar1 = (uint)*param_5 << 0x18 | (uint)param_5[1] << 0x10 | (uint)param_5[2] << 8 |
          (uint)param_5[3];
  local_c[0] = *param_5;
  local_c[1] = param_5[1];
  uVar2 = (uint)param_5[4] << 0x18 | (uint)param_5[5] << 0x10 |
          (uint)CONCAT11(param_5[6],param_5[7]);
  local_c[2] = param_5[2];
  local_8 = param_5[4];
  local_7 = param_5[5];
  local_28 = 0;
  local_c[3] = param_5[3];
  local_6 = param_5[6];
  local_5 = param_5[7];
  local_1c = uVar1;
  local_18 = uVar2;
  if (param_3 == 0) {
    *param_6 = uVar3;
    ___security_check_cookie_4();
    return;
  }
  do {
    local_20 = local_20 + -1;
    if (uVar3 == 0) {
      FUN_00abb080(&local_1c,local_14);
      local_c[0] = (byte)(local_1c >> 0x18);
      local_c[2] = (byte)(local_1c >> 8);
      local_c[1] = (byte)(local_1c >> 0x10);
      local_8 = (byte)(local_18 >> 0x18);
      local_7 = (byte)(local_18 >> 0x10);
      local_28 = local_28 + 1;
      local_c[3] = (byte)local_1c;
      local_6 = (byte)(local_18 >> 8);
      local_5 = (byte)local_18;
      uVar1 = local_1c;
      uVar2 = local_18;
    }
    *param_2 = local_c[uVar3] ^ *param_1;
    param_2 = param_2 + 1;
    param_1 = param_1 + 1;
    uVar3 = uVar3 + 1 & 7;
  } while (local_20 != 0);
  if (local_28 == 0) {
    *local_24 = uVar3;
    ___security_check_cookie_4();
    return;
  }
  *param_5 = (byte)(uVar1 >> 0x18);
  *local_10 = (byte)(uVar1 >> 0x10);
  local_10[1] = (byte)(uVar1 >> 8);
  local_10[2] = (byte)uVar1;
  local_10[3] = (byte)(uVar2 >> 0x18);
  local_10[4] = (byte)(uVar2 >> 0x10);
  local_10[5] = (byte)(uVar2 >> 8);
  local_10[6] = (byte)uVar2;
  *local_24 = uVar3;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abc0c0(int param_1,int param_2,int param_3)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint local_114 [4];
  int local_104;
  uint local_100;
  uint local_fc;
  uint local_f8;
  int local_f4;
  uint local_f0;
  uint local_ec;
  uint local_e8;
  int local_e4;
  uint local_e0;
  uint local_dc;
  uint local_d8;
  uint local_80 [16];
  uint local_40 [16];
  
  local_114[0] = 0;
  local_114[1] = 0;
  local_114[2] = 0;
  local_114[3] = 0;
  local_104 = 0;
  local_100 = 0;
  local_fc = 0;
  local_f8 = 0;
  local_f4 = 0;
  local_f0 = 0;
  local_ec = 0;
  local_e8 = 0;
  local_e4 = 0;
  local_e0 = 0;
  local_dc = 0;
  local_d8 = 0;
  if (0x10 < param_2) {
    param_2 = 0x10;
  }
  iVar7 = 0;
  iVar4 = 0;
  uVar2 = 0;
  uVar15 = 0;
  uVar6 = 0;
  uVar11 = 0;
  if (0 < param_2) {
    do {
      local_114[iVar7] = (uint)*(byte *)(iVar7 + param_3);
      iVar7 = iVar7 + 1;
      iVar4 = local_104;
      uVar2 = local_114[0];
      uVar15 = local_e0;
      uVar6 = local_dc;
      uVar11 = local_d8;
    } while (iVar7 < param_2);
  }
  *(uint *)(param_1 + 0x80) = (uint)(param_2 < 0xb);
  uVar1 = (&DAT_00dc0050)[uVar11] ^ (&DAT_00dc0850)[uVar6] ^ (&DAT_00dbfc50)[uVar15] ^
          *(uint *)(&DAT_00dc0450 + local_e4 * 4) ^ *(uint *)(&DAT_00dc0450 + local_f4 * 4) ^
          (((uVar2 << 8 | local_114[1]) << 8 | local_114[2]) << 8 | local_114[3]);
  uVar13 = uVar1 & 0xff;
  uVar12 = uVar1 >> 0x10 & 0xff;
  uVar2 = uVar1 >> 0x18;
  uVar16 = uVar1 >> 8 & 0xff;
  uVar5 = (&DAT_00dc0850)[local_ec] ^ (&DAT_00dc0850)[uVar13] ^ (&DAT_00dc0050)[uVar16] ^
          (&DAT_00dbfc50)[uVar2] ^ *(uint *)(&DAT_00dc0450 + uVar12 * 4) ^
          (((local_f4 << 8 | local_f0) << 8 | local_ec) << 8 | local_e8);
  uVar8 = uVar5 & 0xff;
  uVar14 = uVar5 >> 0x10 & 0xff;
  uVar3 = uVar5 >> 8 & 0xff;
  uVar9 = (&DAT_00dbfc50)[local_f0] ^ (&DAT_00dbfc50)[uVar8] ^ (&DAT_00dc0050)[uVar3] ^
          *(uint *)(&DAT_00dc0450 + uVar14 * 4) ^ (&DAT_00dc0850)[uVar5 >> 0x18] ^
          (((local_e4 << 8 | uVar15) << 8 | uVar6) << 8 | uVar11);
  uVar15 = uVar9 >> 0x10 & 0xff;
  uVar10 = (&DAT_00dc0050)[local_e8] ^ *(uint *)(&DAT_00dc0450 + (uVar9 & 0xff) * 4) ^
           (&DAT_00dc0850)[uVar9 >> 0x18] ^ (&DAT_00dbfc50)[uVar9 >> 8 & 0xff] ^
           (&DAT_00dc0050)[uVar15] ^ (((iVar4 << 8 | local_100) << 8 | local_fc) << 8 | local_f8);
  local_80[0] = (&DAT_00dbfc50)[uVar9 >> 0x18] ^ *(uint *)(&DAT_00dc0450 + uVar8 * 4) ^
                (&DAT_00dbfc50)[uVar16] ^ (&DAT_00dc0850)[uVar3] ^ (&DAT_00dc0050)[uVar15];
  local_80[1] = (&DAT_00dc0050)[uVar9 & 0xff] ^ (&DAT_00dbfc50)[uVar9 >> 8 & 0xff] ^
                (&DAT_00dc0050)[uVar3] ^ *(uint *)(&DAT_00dc0450 + uVar14 * 4) ^
                (&DAT_00dc0850)[uVar5 >> 0x18];
  local_80[2] = (&DAT_00dc0050)[uVar10 >> 0x10 & 0xff] ^ (&DAT_00dbfc50)[uVar10 >> 0x18] ^
                *(uint *)(&DAT_00dc0450 + uVar15 * 4) ^ *(uint *)(&DAT_00dc0450 + uVar13 * 4) ^
                (&DAT_00dc0850)[uVar16];
  local_80[3] = (&DAT_00dbfc50)[uVar10 >> 8 & 0xff] ^ (&DAT_00dc0050)[uVar10 & 0xff] ^
                (&DAT_00dc0850)[uVar10 >> 0x18] ^ (&DAT_00dc0850)[uVar2] ^
                *(uint *)(&DAT_00dc0450 + uVar12 * 4);
  uVar9 = (&DAT_00dc0050)[uVar8] ^ (&DAT_00dbfc50)[uVar14] ^
          *(uint *)(&DAT_00dc0450 + (uVar5 >> 0x18) * 4) ^ *(uint *)(&DAT_00dc0450 + uVar2 * 4) ^
          (&DAT_00dc0850)[uVar3] ^ uVar9;
  uVar8 = uVar9 & 0xff;
  uVar3 = uVar9 >> 0x10 & 0xff;
  uVar1 = (&DAT_00dbfc50)[uVar9 >> 0x18] ^ *(uint *)(&DAT_00dc0450 + uVar3 * 4) ^
          (&DAT_00dc0850)[uVar8] ^ (&DAT_00dc0050)[uVar9 >> 8 & 0xff] ^ (&DAT_00dc0850)[uVar16] ^
          uVar1;
  uVar14 = uVar1 & 0xff;
  uVar11 = uVar1 >> 0x10 & 0xff;
  uVar15 = (&DAT_00dbfc50)[uVar12] ^ (&DAT_00dc0850)[uVar1 >> 0x18] ^
           *(uint *)(&DAT_00dc0450 + uVar11 * 4) ^ uVar5 ^ (&DAT_00dc0050)[uVar1 >> 8 & 0xff] ^
           (&DAT_00dbfc50)[uVar14];
  uVar16 = uVar15 & 0xff;
  uVar2 = uVar15 >> 0x18;
  uVar5 = uVar15 >> 0x10 & 0xff;
  uVar6 = uVar15 >> 8 & 0xff;
  uVar10 = *(uint *)(&DAT_00dc0450 + uVar16 * 4) ^ (&DAT_00dc0050)[uVar5] ^ (&DAT_00dbfc50)[uVar6] ^
           (&DAT_00dc0050)[uVar13] ^ (&DAT_00dc0850)[uVar2] ^ uVar10;
  uVar12 = uVar10 >> 8 & 0xff;
  uVar13 = uVar10 >> 0x10 & 0xff;
  local_80[4] = (&DAT_00dbfc50)[uVar8] ^ (&DAT_00dbfc50)[uVar2] ^ (&DAT_00dc0850)[uVar13] ^
                (&DAT_00dc0050)[uVar9 >> 8 & 0xff] ^ *(uint *)(&DAT_00dc0450 + (uVar10 >> 0x18) * 4)
  ;
  local_80[5] = (&DAT_00dc0050)[uVar9 >> 0x18] ^ (&DAT_00dbfc50)[uVar3] ^ (&DAT_00dc0050)[uVar13] ^
                *(uint *)(&DAT_00dc0450 + uVar12 * 4) ^ (&DAT_00dc0850)[uVar10 & 0xff];
  local_80[6] = *(uint *)(&DAT_00dc0450 + uVar8 * 4) ^ (&DAT_00dc0850)[uVar5] ^
                *(uint *)(&DAT_00dc0450 + uVar2 * 4) ^ (&DAT_00dc0050)[uVar1 >> 8 & 0xff] ^
                (&DAT_00dbfc50)[uVar14];
  local_80[7] = (&DAT_00dc0850)[uVar16] ^ *(uint *)(&DAT_00dc0450 + uVar6 * 4) ^
                (&DAT_00dc0050)[uVar1 >> 0x18] ^ (&DAT_00dbfc50)[uVar11] ^ (&DAT_00dc0850)[uVar14];
  uVar9 = (&DAT_00dbfc50)[uVar13] ^ (&DAT_00dc0850)[uVar12] ^ (&DAT_00dc0050)[uVar10 & 0xff] ^
          *(uint *)(&DAT_00dc0450 + uVar2 * 4) ^ *(uint *)(&DAT_00dc0450 + (uVar10 >> 0x18) * 4) ^
          uVar9;
  uVar12 = uVar9 & 0xff;
  uVar2 = uVar9 >> 0x18;
  uVar8 = uVar9 >> 8 & 0xff;
  uVar17 = uVar9 >> 0x10 & 0xff;
  uVar15 = (&DAT_00dc0850)[uVar6] ^ (&DAT_00dc0850)[uVar12] ^ *(uint *)(&DAT_00dc0450 + uVar17 * 4)
           ^ (&DAT_00dbfc50)[uVar2] ^ (&DAT_00dc0050)[uVar8] ^ uVar15;
  uVar11 = uVar15 & 0xff;
  uVar6 = uVar15 >> 0x18;
  uVar13 = uVar15 >> 8 & 0xff;
  uVar14 = uVar15 >> 0x10 & 0xff;
  uVar10 = (&DAT_00dbfc50)[uVar5] ^ *(uint *)(&DAT_00dc0450 + uVar14 * 4) ^ (&DAT_00dc0850)[uVar6] ^
           (&DAT_00dbfc50)[uVar11] ^ (&DAT_00dc0050)[uVar13] ^ uVar10;
  uVar3 = uVar10 >> 8 & 0xff;
  uVar5 = uVar10 >> 0x10 & 0xff;
  uVar1 = (&DAT_00dc0050)[uVar16] ^ *(uint *)(&DAT_00dc0450 + (uVar10 & 0xff) * 4) ^
          (&DAT_00dbfc50)[uVar3] ^ (&DAT_00dc0050)[uVar5] ^ (&DAT_00dc0850)[uVar10 >> 0x18] ^ uVar1;
  local_80[8] = (&DAT_00dc0850)[uVar1 >> 0x10 & 0xff] ^
                *(uint *)(&DAT_00dc0450 + (uVar1 >> 0x18) * 4) ^ (&DAT_00dbfc50)[uVar5] ^
                (&DAT_00dbfc50)[uVar12] ^ (&DAT_00dc0050)[uVar8];
  local_80[9] = *(uint *)(&DAT_00dc0450 + (uVar1 >> 8 & 0xff) * 4) ^ (&DAT_00dc0850)[uVar1 & 0xff] ^
                (&DAT_00dc0050)[uVar1 >> 0x18] ^ (&DAT_00dc0050)[uVar2] ^ (&DAT_00dbfc50)[uVar17];
  local_80[10] = (&DAT_00dc0850)[uVar5] ^ *(uint *)(&DAT_00dc0450 + (uVar10 >> 0x18) * 4) ^
                 *(uint *)(&DAT_00dc0450 + uVar8 * 4) ^ (&DAT_00dbfc50)[uVar11] ^
                 (&DAT_00dc0050)[uVar13];
  local_80[0xb] =
       (&DAT_00dc0850)[uVar10 & 0xff] ^ *(uint *)(&DAT_00dc0450 + uVar3 * 4) ^
       (&DAT_00dc0050)[uVar6] ^ (&DAT_00dbfc50)[uVar14] ^ (&DAT_00dc0850)[uVar13];
  uVar10 = (&DAT_00dc0050)[uVar11] ^ *(uint *)(&DAT_00dc0450 + uVar6 * 4) ^
           *(uint *)(&DAT_00dc0450 + uVar2 * 4) ^ (&DAT_00dbfc50)[uVar14] ^ (&DAT_00dc0850)[uVar13]
           ^ uVar10;
  uVar13 = uVar10 & 0xff;
  uVar16 = uVar10 >> 8 & 0xff;
  uVar9 = (&DAT_00dbfc50)[uVar10 >> 0x18] ^ (&DAT_00dc0050)[uVar16] ^ (&DAT_00dc0850)[uVar13] ^
          (&DAT_00dc0850)[uVar8] ^ *(uint *)(&DAT_00dc0450 + (uVar10 >> 0x10 & 0xff) * 4) ^ uVar9;
  uVar8 = uVar9 & 0xff;
  uVar5 = uVar9 >> 8 & 0xff;
  uVar2 = (&DAT_00dc0050)[uVar5] ^ (&DAT_00dbfc50)[uVar8] ^ uVar15 ^ (&DAT_00dc0850)[uVar9 >> 0x18]
          ^ *(uint *)(&DAT_00dc0450 + (uVar9 >> 0x10 & 0xff) * 4) ^ (&DAT_00dbfc50)[uVar17];
  uVar15 = uVar2 >> 0x18;
  uVar17 = uVar2 >> 8 & 0xff;
  uVar14 = uVar2 >> 0x10 & 0xff;
  uVar3 = *(uint *)(&DAT_00dc0450 + (uVar2 & 0xff) * 4) ^ (&DAT_00dc0050)[uVar12] ^
          (&DAT_00dc0850)[uVar15] ^ uVar1 ^ (&DAT_00dc0050)[uVar14] ^ (&DAT_00dbfc50)[uVar17];
  uVar6 = uVar3 >> 8 & 0xff;
  uVar11 = uVar3 >> 0x10 & 0xff;
  local_80[0xc] =
       (&DAT_00dbfc50)[uVar13] ^ (&DAT_00dbfc50)[uVar15] ^ (&DAT_00dc0850)[uVar5] ^
       *(uint *)(&DAT_00dc0450 + uVar8 * 4) ^ (&DAT_00dc0050)[uVar14];
  local_80[0xd] =
       (&DAT_00dc0050)[uVar8] ^ (&DAT_00dc0050)[uVar2 & 0xff] ^ (&DAT_00dbfc50)[uVar17] ^
       (&DAT_00dc0850)[uVar9 >> 0x18] ^ *(uint *)(&DAT_00dc0450 + (uVar9 >> 0x10 & 0xff) * 4);
  local_80[0xe] =
       (&DAT_00dc0850)[uVar16] ^ *(uint *)(&DAT_00dc0450 + uVar13 * 4) ^
       (&DAT_00dbfc50)[uVar3 >> 0x18] ^ (&DAT_00dc0050)[uVar11] ^
       *(uint *)(&DAT_00dc0450 + uVar15 * 4);
  local_80[0xf] =
       (&DAT_00dc0850)[uVar10 >> 0x18] ^ (&DAT_00dc0850)[uVar11] ^ (&DAT_00dbfc50)[uVar6] ^
       *(uint *)(&DAT_00dc0450 + (uVar10 >> 0x10 & 0xff) * 4) ^ (&DAT_00dc0050)[uVar3 & 0xff];
  uVar10 = *(uint *)(&DAT_00dc0450 + (uVar3 >> 0x18) * 4) ^ (&DAT_00dbfc50)[uVar11] ^
           (&DAT_00dc0850)[uVar6] ^ *(uint *)(&DAT_00dc0450 + uVar15 * 4) ^
           (&DAT_00dc0050)[uVar3 & 0xff] ^ uVar10;
  uVar1 = uVar10 & 0xff;
  uVar15 = uVar10 >> 0x18;
  uVar13 = uVar10 >> 0x10 & 0xff;
  uVar16 = uVar10 >> 8 & 0xff;
  uVar6 = (&DAT_00dc0850)[uVar17] ^ (&DAT_00dc0850)[uVar1] ^ (&DAT_00dc0050)[uVar16] ^
          (&DAT_00dbfc50)[uVar15] ^ *(uint *)(&DAT_00dc0450 + uVar13 * 4) ^ uVar2;
  uVar5 = uVar6 >> 0x10 & 0xff;
  uVar8 = uVar6 & 0xff;
  uVar17 = uVar6 >> 8 & 0xff;
  uVar11 = uVar6 >> 0x18;
  uVar3 = (&DAT_00dbfc50)[uVar14] ^ (&DAT_00dbfc50)[uVar8] ^ (&DAT_00dc0050)[uVar17] ^
          *(uint *)(&DAT_00dc0450 + uVar5 * 4) ^ (&DAT_00dc0850)[uVar11] ^ uVar3;
  uVar12 = uVar3 >> 0x10 & 0xff;
  uVar9 = *(uint *)(&DAT_00dc0450 + (uVar3 & 0xff) * 4) ^ (&DAT_00dc0850)[uVar3 >> 0x18] ^
          (&DAT_00dc0050)[uVar2 & 0xff] ^ (&DAT_00dbfc50)[uVar3 >> 8 & 0xff] ^
          (&DAT_00dc0050)[uVar12] ^ uVar9;
  local_40[0] = (&DAT_00dbfc50)[uVar3 >> 0x18] ^ *(uint *)(&DAT_00dc0450 + uVar8 * 4) ^
                (&DAT_00dbfc50)[uVar16] ^ (&DAT_00dc0850)[uVar17] ^ (&DAT_00dc0050)[uVar12];
  local_40[1] = (&DAT_00dc0050)[uVar3 & 0xff] ^ (&DAT_00dbfc50)[uVar3 >> 8 & 0xff] ^
                (&DAT_00dc0050)[uVar17] ^ *(uint *)(&DAT_00dc0450 + uVar5 * 4) ^
                (&DAT_00dc0850)[uVar11];
  local_40[2] = (&DAT_00dc0050)[uVar9 >> 0x10 & 0xff] ^ (&DAT_00dbfc50)[uVar9 >> 0x18] ^
                *(uint *)(&DAT_00dc0450 + uVar12 * 4) ^ *(uint *)(&DAT_00dc0450 + uVar1 * 4) ^
                (&DAT_00dc0850)[uVar16];
  local_40[3] = (&DAT_00dbfc50)[uVar9 >> 8 & 0xff] ^ (&DAT_00dc0050)[uVar9 & 0xff] ^
                (&DAT_00dc0850)[uVar9 >> 0x18] ^ (&DAT_00dc0850)[uVar15] ^
                *(uint *)(&DAT_00dc0450 + uVar13 * 4);
  uVar3 = (&DAT_00dc0050)[uVar8] ^ (&DAT_00dbfc50)[uVar5] ^ *(uint *)(&DAT_00dc0450 + uVar11 * 4) ^
          *(uint *)(&DAT_00dc0450 + uVar15 * 4) ^ (&DAT_00dc0850)[uVar17] ^ uVar3;
  uVar12 = uVar3 & 0xff;
  uVar5 = uVar3 >> 0x10 & 0xff;
  uVar10 = (&DAT_00dbfc50)[uVar3 >> 0x18] ^ *(uint *)(&DAT_00dc0450 + uVar5 * 4) ^
           (&DAT_00dc0850)[uVar12] ^ (&DAT_00dc0050)[uVar3 >> 8 & 0xff] ^ (&DAT_00dc0850)[uVar16] ^
           uVar10;
  uVar8 = uVar10 & 0xff;
  uVar11 = uVar10 >> 0x10 & 0xff;
  uVar15 = (&DAT_00dbfc50)[uVar13] ^ (&DAT_00dc0850)[uVar10 >> 0x18] ^
           *(uint *)(&DAT_00dc0450 + uVar11 * 4) ^ uVar6 ^ (&DAT_00dc0050)[uVar10 >> 8 & 0xff] ^
           (&DAT_00dbfc50)[uVar8];
  uVar17 = uVar15 & 0xff;
  uVar2 = uVar15 >> 0x18;
  uVar16 = uVar15 >> 0x10 & 0xff;
  uVar6 = uVar15 >> 8 & 0xff;
  uVar9 = *(uint *)(&DAT_00dc0450 + uVar17 * 4) ^ (&DAT_00dc0050)[uVar16] ^ (&DAT_00dbfc50)[uVar6] ^
          (&DAT_00dc0050)[uVar1] ^ (&DAT_00dc0850)[uVar2] ^ uVar9;
  uVar1 = uVar9 >> 8 & 0xff;
  uVar13 = uVar9 >> 0x10 & 0xff;
  local_40[4] = (&DAT_00dbfc50)[uVar12] ^ (&DAT_00dbfc50)[uVar2] ^ (&DAT_00dc0850)[uVar13] ^
                (&DAT_00dc0050)[uVar3 >> 8 & 0xff] ^ *(uint *)(&DAT_00dc0450 + (uVar9 >> 0x18) * 4);
  local_40[5] = (&DAT_00dc0050)[uVar3 >> 0x18] ^ (&DAT_00dbfc50)[uVar5] ^ (&DAT_00dc0050)[uVar13] ^
                *(uint *)(&DAT_00dc0450 + uVar1 * 4) ^ (&DAT_00dc0850)[uVar9 & 0xff];
  local_40[6] = *(uint *)(&DAT_00dc0450 + uVar12 * 4) ^ (&DAT_00dc0850)[uVar16] ^
                *(uint *)(&DAT_00dc0450 + uVar2 * 4) ^ (&DAT_00dc0050)[uVar10 >> 8 & 0xff] ^
                (&DAT_00dbfc50)[uVar8];
  local_40[7] = (&DAT_00dc0850)[uVar17] ^ *(uint *)(&DAT_00dc0450 + uVar6 * 4) ^
                (&DAT_00dc0050)[uVar10 >> 0x18] ^ (&DAT_00dbfc50)[uVar11] ^ (&DAT_00dc0850)[uVar8];
  uVar3 = (&DAT_00dbfc50)[uVar13] ^ (&DAT_00dc0850)[uVar1] ^ (&DAT_00dc0050)[uVar9 & 0xff] ^
          *(uint *)(&DAT_00dc0450 + uVar2 * 4) ^ *(uint *)(&DAT_00dc0450 + (uVar9 >> 0x18) * 4) ^
          uVar3;
  uVar12 = uVar3 & 0xff;
  uVar2 = uVar3 >> 0x18;
  uVar11 = uVar3 >> 8 & 0xff;
  uVar18 = uVar3 >> 0x10 & 0xff;
  uVar15 = (&DAT_00dc0850)[uVar6] ^ (&DAT_00dc0850)[uVar12] ^ *(uint *)(&DAT_00dc0450 + uVar18 * 4)
           ^ (&DAT_00dbfc50)[uVar2] ^ (&DAT_00dc0050)[uVar11] ^ uVar15;
  uVar1 = uVar15 & 0xff;
  uVar6 = uVar15 >> 0x18;
  uVar13 = uVar15 >> 8 & 0xff;
  uVar14 = uVar15 >> 0x10 & 0xff;
  uVar9 = (&DAT_00dbfc50)[uVar16] ^ *(uint *)(&DAT_00dc0450 + uVar14 * 4) ^ (&DAT_00dc0850)[uVar6] ^
          (&DAT_00dbfc50)[uVar1] ^ (&DAT_00dc0050)[uVar13] ^ uVar9;
  uVar5 = uVar9 >> 8 & 0xff;
  uVar8 = uVar9 >> 0x10 & 0xff;
  uVar10 = (&DAT_00dc0050)[uVar17] ^ *(uint *)(&DAT_00dc0450 + (uVar9 & 0xff) * 4) ^
           (&DAT_00dbfc50)[uVar5] ^ (&DAT_00dc0050)[uVar8] ^ (&DAT_00dc0850)[uVar9 >> 0x18] ^ uVar10
  ;
  local_40[8] = (&DAT_00dc0850)[uVar10 >> 0x10 & 0xff] ^
                *(uint *)(&DAT_00dc0450 + (uVar10 >> 0x18) * 4) ^ (&DAT_00dbfc50)[uVar8] ^
                (&DAT_00dbfc50)[uVar12] ^ (&DAT_00dc0050)[uVar11];
  local_40[9] = *(uint *)(&DAT_00dc0450 + (uVar10 >> 8 & 0xff) * 4) ^ (&DAT_00dc0850)[uVar10 & 0xff]
                ^ (&DAT_00dc0050)[uVar10 >> 0x18] ^ (&DAT_00dc0050)[uVar2] ^ (&DAT_00dbfc50)[uVar18]
  ;
  local_40[10] = (&DAT_00dc0850)[uVar8] ^ *(uint *)(&DAT_00dc0450 + (uVar9 >> 0x18) * 4) ^
                 *(uint *)(&DAT_00dc0450 + uVar11 * 4) ^ (&DAT_00dbfc50)[uVar1] ^
                 (&DAT_00dc0050)[uVar13];
  local_40[0xb] =
       (&DAT_00dc0850)[uVar9 & 0xff] ^ *(uint *)(&DAT_00dc0450 + uVar5 * 4) ^ (&DAT_00dc0050)[uVar6]
       ^ (&DAT_00dbfc50)[uVar14] ^ (&DAT_00dc0850)[uVar13];
  uVar9 = (&DAT_00dc0050)[uVar1] ^ *(uint *)(&DAT_00dc0450 + uVar6 * 4) ^
          *(uint *)(&DAT_00dc0450 + uVar2 * 4) ^ (&DAT_00dbfc50)[uVar14] ^ (&DAT_00dc0850)[uVar13] ^
          uVar9;
  uVar8 = uVar9 & 0xff;
  uVar1 = uVar9 >> 8 & 0xff;
  uVar3 = (&DAT_00dbfc50)[uVar9 >> 0x18] ^ (&DAT_00dc0050)[uVar1] ^ (&DAT_00dc0850)[uVar8] ^
          (&DAT_00dc0850)[uVar11] ^ *(uint *)(&DAT_00dc0450 + (uVar9 >> 0x10 & 0xff) * 4) ^ uVar3;
  uVar5 = uVar3 & 0xff;
  uVar11 = uVar3 >> 8 & 0xff;
  uVar2 = (&DAT_00dc0050)[uVar11] ^ (&DAT_00dbfc50)[uVar5] ^ uVar15 ^ (&DAT_00dc0850)[uVar3 >> 0x18]
          ^ *(uint *)(&DAT_00dc0450 + (uVar3 >> 0x10 & 0xff) * 4) ^ (&DAT_00dbfc50)[uVar18];
  uVar15 = uVar2 >> 0x18;
  uVar6 = *(uint *)(&DAT_00dc0450 + (uVar2 & 0xff) * 4) ^ (&DAT_00dc0050)[uVar12] ^
          (&DAT_00dc0850)[uVar15] ^ uVar10 ^ (&DAT_00dc0050)[uVar2 >> 0x10 & 0xff] ^
          (&DAT_00dbfc50)[uVar2 >> 8 & 0xff];
  uVar10 = uVar6 >> 0x10 & 0xff;
  local_40[0xc] =
       (&DAT_00dbfc50)[uVar8] ^ (&DAT_00dbfc50)[uVar15] ^ (&DAT_00dc0850)[uVar11] ^
       *(uint *)(&DAT_00dc0450 + uVar5 * 4) ^ (&DAT_00dc0050)[uVar2 >> 0x10 & 0xff];
  local_40[0xd] =
       (&DAT_00dc0050)[uVar2 & 0xff] ^ (&DAT_00dc0050)[uVar5] ^ (&DAT_00dbfc50)[uVar2 >> 8 & 0xff] ^
       (&DAT_00dc0850)[uVar3 >> 0x18] ^ *(uint *)(&DAT_00dc0450 + (uVar3 >> 0x10 & 0xff) * 4);
  local_40[0xe] =
       (&DAT_00dbfc50)[uVar6 >> 0x18] ^ (&DAT_00dc0850)[uVar1] ^
       *(uint *)(&DAT_00dc0450 + uVar8 * 4) ^ *(uint *)(&DAT_00dc0450 + uVar15 * 4) ^
       (&DAT_00dc0050)[uVar10];
  local_40[0xf] =
       (&DAT_00dc0050)[uVar6 & 0xff] ^ (&DAT_00dbfc50)[uVar6 >> 8 & 0xff] ^
       (&DAT_00dc0850)[uVar9 >> 0x18] ^ (&DAT_00dc0850)[uVar10] ^
       *(uint *)(&DAT_00dc0450 + (uVar9 >> 0x10 & 0xff) * 4);
  iVar4 = 0;
  do {
    *(uint *)(param_1 + iVar4 * 8) = local_80[iVar4];
    *(uint *)(param_1 + 4 + iVar4 * 8) = local_40[iVar4] - 0x10 & 0x1f;
    iVar4 = iVar4 + 1;
  } while (iVar4 < 0x10);
  return;
}



void FUN_00abd480(uint *param_1,uint *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = *param_1 ^ *param_2;
  uVar1 = param_1[1] ^ param_2[1] ^
          (param_2[(uVar2 >> 0x10 & 0xff) + 0x112] + param_2[(uVar2 >> 0x18) + 0x12] ^
          param_2[(uVar2 >> 8 & 0xff) + 0x212]) + param_2[(uVar2 & 0xff) + 0x312];
  uVar2 = uVar2 ^ param_2[2] ^
          (param_2[(uVar1 >> 0x10 & 0xff) + 0x112] + param_2[(uVar1 >> 0x18) + 0x12] ^
          param_2[(uVar1 >> 8 & 0xff) + 0x212]) + param_2[(uVar1 & 0xff) + 0x312];
  uVar1 = uVar1 ^ param_2[3] ^
          (param_2[(uVar2 >> 0x10 & 0xff) + 0x112] + param_2[(uVar2 >> 0x18) + 0x12] ^
          param_2[(uVar2 >> 8 & 0xff) + 0x212]) + param_2[(uVar2 & 0xff) + 0x312];
  uVar2 = uVar2 ^ param_2[4] ^
          (param_2[(uVar1 >> 0x10 & 0xff) + 0x112] + param_2[(uVar1 >> 0x18) + 0x12] ^
          param_2[(uVar1 >> 8 & 0xff) + 0x212]) + param_2[(uVar1 & 0xff) + 0x312];
  uVar1 = uVar1 ^ param_2[5] ^
          (param_2[(uVar2 >> 0x10 & 0xff) + 0x112] + param_2[(uVar2 >> 0x18) + 0x12] ^
          param_2[(uVar2 >> 8 & 0xff) + 0x212]) + param_2[(uVar2 & 0xff) + 0x312];
  uVar2 = uVar2 ^ param_2[6] ^
          (param_2[(uVar1 >> 0x10 & 0xff) + 0x112] + param_2[(uVar1 >> 0x18) + 0x12] ^
          param_2[(uVar1 >> 8 & 0xff) + 0x212]) + param_2[(uVar1 & 0xff) + 0x312];
  uVar1 = uVar1 ^ param_2[7] ^
          (param_2[(uVar2 >> 0x10 & 0xff) + 0x112] + param_2[(uVar2 >> 0x18) + 0x12] ^
          param_2[(uVar2 >> 8 & 0xff) + 0x212]) + param_2[(uVar2 & 0xff) + 0x312];
  uVar2 = uVar2 ^ param_2[8] ^
          (param_2[(uVar1 >> 0x10 & 0xff) + 0x112] + param_2[(uVar1 >> 0x18) + 0x12] ^
          param_2[(uVar1 >> 8 & 0xff) + 0x212]) + param_2[(uVar1 & 0xff) + 0x312];
  uVar1 = uVar1 ^ param_2[9] ^
          (param_2[(uVar2 >> 0x10 & 0xff) + 0x112] + param_2[(uVar2 >> 0x18) + 0x12] ^
          param_2[(uVar2 >> 8 & 0xff) + 0x212]) + param_2[(uVar2 & 0xff) + 0x312];
  uVar2 = uVar2 ^ param_2[10] ^
          (param_2[(uVar1 >> 0x10 & 0xff) + 0x112] + param_2[(uVar1 >> 0x18) + 0x12] ^
          param_2[(uVar1 >> 8 & 0xff) + 0x212]) + param_2[(uVar1 & 0xff) + 0x312];
  uVar1 = uVar1 ^ param_2[0xb] ^
          (param_2[(uVar2 >> 0x10 & 0xff) + 0x112] + param_2[(uVar2 >> 0x18) + 0x12] ^
          param_2[(uVar2 >> 8 & 0xff) + 0x212]) + param_2[(uVar2 & 0xff) + 0x312];
  uVar2 = uVar2 ^ param_2[0xc] ^
          (param_2[(uVar1 >> 0x10 & 0xff) + 0x112] + param_2[(uVar1 >> 0x18) + 0x12] ^
          param_2[(uVar1 >> 8 & 0xff) + 0x212]) + param_2[(uVar1 & 0xff) + 0x312];
  uVar1 = uVar1 ^ param_2[0xd] ^
          (param_2[(uVar2 >> 0x10 & 0xff) + 0x112] + param_2[(uVar2 >> 0x18) + 0x12] ^
          param_2[(uVar2 >> 8 & 0xff) + 0x212]) + param_2[(uVar2 & 0xff) + 0x312];
  uVar3 = uVar2 ^ param_2[0xe] ^
          (param_2[(uVar1 >> 0x10 & 0xff) + 0x112] + param_2[(uVar1 >> 0x18) + 0x12] ^
          param_2[(uVar1 >> 8 & 0xff) + 0x212]) + param_2[(uVar1 & 0xff) + 0x312];
  uVar2 = uVar1 ^ param_2[0xf] ^
          (param_2[(uVar3 >> 0x10 & 0xff) + 0x112] + param_2[(uVar3 >> 0x18) + 0x12] ^
          param_2[(uVar3 >> 8 & 0xff) + 0x212]) + param_2[(uVar3 & 0xff) + 0x312];
  uVar1 = param_2[0x11];
  param_1[1] = uVar3 ^ param_2[0x10] ^
               (param_2[(uVar2 >> 0x10 & 0xff) + 0x112] + param_2[(uVar2 >> 0x18) + 0x12] ^
               param_2[(uVar2 >> 8 & 0xff) + 0x212]) + param_2[(uVar2 & 0xff) + 0x312];
  *param_1 = uVar2 ^ uVar1;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abe1d0(byte *param_1,byte *param_2,int param_3,undefined4 param_4,byte *param_5,
                 uint *param_6)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  int local_28;
  uint *local_24;
  int local_20;
  uint local_1c;
  uint local_18;
  undefined4 local_14;
  byte *local_10;
  byte local_c [4];
  byte local_8;
  byte local_7;
  byte local_6;
  byte local_5;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_28;
  local_14 = param_4;
  local_24 = param_6;
  uVar3 = *param_6;
  local_20 = param_3;
  local_10 = param_5 + 1;
  uVar1 = (uint)*param_5 << 0x18 | (uint)param_5[1] << 0x10 | (uint)param_5[2] << 8 |
          (uint)param_5[3];
  local_c[0] = *param_5;
  local_c[1] = param_5[1];
  uVar2 = (uint)param_5[4] << 0x18 | (uint)param_5[5] << 0x10 |
          (uint)CONCAT11(param_5[6],param_5[7]);
  local_c[2] = param_5[2];
  local_8 = param_5[4];
  local_7 = param_5[5];
  local_28 = 0;
  local_c[3] = param_5[3];
  local_6 = param_5[6];
  local_5 = param_5[7];
  local_1c = uVar1;
  local_18 = uVar2;
  if (param_3 == 0) {
    *param_6 = uVar3;
    ___security_check_cookie_4();
    return;
  }
  do {
    local_20 = local_20 + -1;
    if (uVar3 == 0) {
      FUN_00abd480(&local_1c,local_14);
      local_c[0] = (byte)(local_1c >> 0x18);
      local_c[2] = (byte)(local_1c >> 8);
      local_c[1] = (byte)(local_1c >> 0x10);
      local_8 = (byte)(local_18 >> 0x18);
      local_7 = (byte)(local_18 >> 0x10);
      local_28 = local_28 + 1;
      local_c[3] = (byte)local_1c;
      local_6 = (byte)(local_18 >> 8);
      local_5 = (byte)local_18;
      uVar1 = local_1c;
      uVar2 = local_18;
    }
    *param_2 = local_c[uVar3] ^ *param_1;
    param_2 = param_2 + 1;
    param_1 = param_1 + 1;
    uVar3 = uVar3 + 1 & 7;
  } while (local_20 != 0);
  if (local_28 == 0) {
    *local_24 = uVar3;
    ___security_check_cookie_4();
    return;
  }
  *param_5 = (byte)(uVar1 >> 0x18);
  *local_10 = (byte)(uVar1 >> 0x10);
  local_10[1] = (byte)(uVar1 >> 8);
  local_10[2] = (byte)uVar1;
  local_10[3] = (byte)(uVar2 >> 0x18);
  local_10[4] = (byte)(uVar2 >> 0x10);
  local_10[5] = (byte)(uVar2 >> 8);
  local_10[6] = (byte)uVar2;
  *local_24 = uVar3;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abe3c0(void *param_1,int param_2,undefined *param_3)

{
  void *pvVar1;
  undefined *puVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined *puVar5;
  undefined *puVar6;
  undefined *puVar7;
  uint *puVar8;
  int iVar9;
  undefined4 local_8;
  undefined4 local_4;
  
  pvVar1 = param_1;
  local_4 = 0xabe3ca;
  _memcpy(param_1,&DAT_00dc0c80,0x1048);
  if (0x48 < param_2) {
    param_2 = 0x48;
  }
  puVar7 = param_3 + param_2;
  puVar8 = (uint *)((int)param_1 + 8);
  param_1 = (void *)0x6;
  puVar6 = param_3;
  do {
    puVar3 = puVar6 + 1;
    if (puVar7 <= puVar6 + 1) {
      puVar3 = param_3;
    }
    puVar4 = puVar3 + 1;
    if (puVar7 <= puVar3 + 1) {
      puVar4 = param_3;
    }
    puVar2 = puVar4 + 1;
    if (puVar7 <= puVar4 + 1) {
      puVar2 = param_3;
    }
    puVar5 = puVar2 + 1;
    if (puVar7 <= puVar2 + 1) {
      puVar5 = param_3;
    }
    puVar8[-2] = puVar8[-2] ^ CONCAT31(CONCAT21(CONCAT11(*puVar6,*puVar3),*puVar4),*puVar2);
    puVar6 = puVar5 + 1;
    if (puVar7 <= puVar5 + 1) {
      puVar6 = param_3;
    }
    puVar3 = puVar6 + 1;
    if (puVar7 <= puVar6 + 1) {
      puVar3 = param_3;
    }
    puVar4 = puVar3 + 1;
    if (puVar7 <= puVar3 + 1) {
      puVar4 = param_3;
    }
    puVar2 = puVar4 + 1;
    if (puVar7 <= puVar4 + 1) {
      puVar2 = param_3;
    }
    puVar8[-1] = puVar8[-1] ^ CONCAT31(CONCAT21(CONCAT11(*puVar5,*puVar6),*puVar3),*puVar4);
    puVar3 = puVar2 + 1;
    if (puVar7 <= puVar2 + 1) {
      puVar3 = param_3;
    }
    puVar4 = puVar3 + 1;
    if (puVar7 <= puVar3 + 1) {
      puVar4 = param_3;
    }
    puVar5 = puVar4 + 1;
    if (puVar7 <= puVar4 + 1) {
      puVar5 = param_3;
    }
    puVar6 = puVar5 + 1;
    if (puVar7 <= puVar5 + 1) {
      puVar6 = param_3;
    }
    *puVar8 = *puVar8 ^ CONCAT31(CONCAT21(CONCAT11(*puVar2,*puVar3),*puVar4),*puVar5);
    puVar8 = puVar8 + 3;
    param_1 = (void *)((int)param_1 + -1);
  } while (param_1 != (void *)0x0);
  local_8 = 0;
  local_4 = 0;
  iVar9 = 0;
  do {
    FUN_00abd480(&local_8,pvVar1);
    *(undefined4 *)((int)pvVar1 + iVar9 * 4) = local_8;
    *(undefined4 *)((int)pvVar1 + iVar9 * 4 + 4) = local_4;
    iVar9 = iVar9 + 2;
  } while (iVar9 < 0x12);
  iVar9 = 0;
  do {
    FUN_00abd480(&local_8,pvVar1);
    *(undefined4 *)((int)pvVar1 + iVar9 * 4 + 0x48) = local_8;
    *(undefined4 *)((int)pvVar1 + iVar9 * 4 + 0x4c) = local_4;
    iVar9 = iVar9 + 2;
  } while (iVar9 < 0x400);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abe530(uint *param_1,int *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  int *piVar9;
  uint uVar10;
  uint uVar11;
  int local_8;
  int local_4;
  
  uVar10 = *param_1 & 0xffff;
  uVar7 = *param_1 >> 0x10;
  uVar11 = param_1[1] & 0xffff;
  uVar8 = param_1[1] >> 0x10;
  local_8 = 3;
  local_4 = 5;
  piVar9 = param_2;
  while( true ) {
    do {
      uVar3 = (~uVar8 & uVar7) + (uVar8 & uVar11) + *piVar9 + uVar10 & 0xffff;
      uVar1 = uVar3 * 2;
      uVar3 = uVar3 >> 0xf;
      uVar10 = uVar3 | uVar1;
      uVar7 = (~uVar10 & uVar11) + (uVar8 & uVar10) + piVar9[1] + uVar7 & 0xffff;
      uVar7 = uVar7 >> 0xe | uVar7 * 4;
      uVar4 = (~uVar7 & uVar8) + (uVar7 & uVar10) + piVar9[2] + uVar11 & 0xffff;
      uVar2 = uVar4 * 8;
      uVar4 = uVar4 >> 0xd;
      uVar11 = uVar4 | uVar2;
      uVar5 = (~uVar11 & uVar10) + (uVar11 & uVar7) + piVar9[3] + uVar8 & 0xffff;
      uVar6 = uVar5 << 5;
      uVar5 = uVar5 >> 0xb;
      uVar8 = uVar5 | uVar6;
      piVar9 = piVar9 + 4;
      local_4 = local_4 + -1;
    } while (local_4 != 0);
    local_8 = local_8 + -1;
    if (local_8 == 0) break;
    local_4 = (local_8 == 2) + 5;
    uVar10 = uVar10 + param_2[uVar5 | uVar6 & 0x3f];
    uVar7 = uVar7 + param_2[uVar10 & 0x3f];
    uVar11 = uVar11 + param_2[uVar7 & 0x3f];
    uVar8 = uVar8 + param_2[uVar11 & 0x3f];
  }
  *param_1 = uVar7 << 0x10 | uVar3 | uVar1 & 0xffff;
  param_1[1] = uVar8 << 0x10 | uVar4 | uVar2 & 0xffff;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abe670(uint *param_1,int param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  int *piVar7;
  uint uVar8;
  uint uVar9;
  int local_8;
  
  uVar9 = *param_1 & 0xffff;
  uVar8 = param_1[1] & 0xffff;
  uVar2 = *param_1 >> 0x10;
  uVar1 = param_1[1] >> 0x10;
  local_8 = 3;
  iVar3 = 5;
  piVar7 = (int *)(param_2 + 0xfc);
  while( true ) {
    do {
      uVar1 = (((uVar1 << 0xb | uVar1 >> 5) - (~uVar8 & uVar9)) - (uVar8 & uVar2)) - *piVar7 &
              0xffff;
      uVar4 = (((uVar8 << 0xd | uVar8 >> 3) - (~uVar2 & uVar1)) - (uVar2 & uVar9)) - piVar7[-1];
      uVar8 = uVar4 & 0xffff;
      uVar5 = (((uVar2 << 0xe | uVar2 >> 2) - (~uVar9 & uVar8)) - (uVar1 & uVar9)) - piVar7[-2];
      uVar2 = uVar5 & 0xffff;
      uVar6 = (((uVar9 << 0xf | uVar9 >> 1) - (~uVar1 & uVar2)) - (uVar1 & uVar8)) - piVar7[-3];
      piVar7 = piVar7 + -4;
      uVar9 = uVar6 & 0xffff;
      iVar3 = iVar3 + -1;
    } while (iVar3 != 0);
    local_8 = local_8 + -1;
    if (local_8 == 0) break;
    iVar3 = (local_8 == 2) + 5;
    uVar4 = uVar1 - *(int *)(param_2 + (uVar4 & 0x3f) * 4);
    uVar1 = uVar4 & 0xffff;
    uVar8 = uVar8 - *(int *)(param_2 + (uVar5 & 0x3f) * 4) & 0xffff;
    uVar2 = uVar2 - *(int *)(param_2 + (uVar6 & 0x3f) * 4) & 0xffff;
    uVar9 = uVar9 - *(int *)(param_2 + (uVar4 & 0x3f) * 4) & 0xffff;
  }
  *param_1 = uVar2 << 0x10 | uVar9;
  param_1[1] = uVar1 << 0x10 | uVar8;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abe7d0(uint *param_1,undefined *param_2,uint param_3,undefined4 param_4,uint *param_5,
                 uint param_6)

{
  byte *pbVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  uint local_10;
  uint local_c;
  uint local_8;
  uint local_4;
  
  if (param_6 == 0) {
    uVar3 = *param_5;
    uVar8 = param_5[1];
    iVar6 = param_3 - 8;
    iVar7 = iVar6;
    if (-1 < iVar6) {
      local_c = param_3 >> 3;
      iVar2 = local_c * -8;
      uVar4 = uVar3;
      param_6 = uVar8;
      do {
        uVar3 = *param_1;
        uVar8 = param_1[1];
        param_1 = param_1 + 2;
        local_8 = uVar3;
        local_4 = uVar8;
        FUN_00abe670(&local_8,param_4);
        param_6 = param_6 ^ local_4;
        uVar4 = uVar4 ^ local_8;
        *param_2 = (char)uVar4;
        param_2[1] = (char)(uVar4 >> 8);
        param_2[2] = (char)(uVar4 >> 0x10);
        param_2[3] = (char)(uVar4 >> 0x18);
        param_2[4] = (char)param_6;
        param_2[5] = (char)(param_6 >> 8);
        param_2[6] = (char)(param_6 >> 0x10);
        param_2[7] = (char)(param_6 >> 0x18);
        param_2 = param_2 + 8;
        local_c = local_c - 1;
        uVar4 = uVar3;
        iVar7 = iVar6 + iVar2;
        param_6 = uVar8;
      } while (local_c != 0);
    }
    param_3 = iVar7;
    uVar5 = uVar8;
    uVar4 = uVar3;
    if (param_3 != -8) {
      uVar4 = *param_1;
      uVar5 = param_1[1];
      local_8 = uVar4;
      local_4 = uVar5;
      FUN_00abe670(&local_8,param_4);
      uVar3 = uVar3 ^ local_8;
      uVar8 = uVar8 ^ local_4;
      param_2 = param_2 + param_3 + 8;
      switch(param_3) {
      case 0:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar8 >> 0x18);
      case 0xffffffff:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar8 >> 0x10);
      case 0xfffffffe:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar8 >> 8);
      case 0xfffffffd:
        param_2 = param_2 + -1;
        *param_2 = (char)uVar8;
      case 0xfffffffc:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar3 >> 0x18);
      case 0xfffffffb:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar3 >> 0x10);
      case 0xfffffffa:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar3 >> 8);
      case 0xfffffff9:
        param_2[-1] = (char)uVar3;
      }
    }
    *(char *)param_5 = (char)uVar4;
    *(char *)((int)param_5 + 1) = (char)(uVar4 >> 8);
    *(char *)((int)param_5 + 2) = (char)(uVar4 >> 0x10);
    *(char *)((int)param_5 + 3) = (char)(uVar4 >> 0x18);
    *(char *)(param_5 + 1) = (char)uVar5;
    *(char *)((int)param_5 + 5) = (char)(uVar5 >> 8);
    *(char *)((int)param_5 + 6) = (char)(uVar5 >> 0x10);
    *(char *)((int)param_5 + 7) = (char)(uVar5 >> 0x18);
    return;
  }
  local_8 = *param_5;
  local_4 = param_5[1];
  iVar7 = param_3 - 8;
  if (-1 < iVar7) {
    local_10 = param_3 >> 3;
    iVar7 = iVar7 + local_10 * -8;
    param_6 = local_4;
    do {
      local_8 = *param_1 ^ local_8;
      local_4 = param_1[1] ^ param_6;
      param_1 = param_1 + 2;
      FUN_00abe530(&local_8,param_4);
      *param_2 = (char)local_8;
      param_2[1] = (char)(local_8 >> 8);
      param_2[2] = (char)(local_8 >> 0x10);
      param_2[3] = (char)(local_8 >> 0x18);
      param_2[4] = (char)local_4;
      param_2[5] = (char)(local_4 >> 8);
      param_2[6] = (char)(local_4 >> 0x10);
      param_6 = local_4;
      param_2[7] = (char)(local_4 >> 0x18);
      param_2 = param_2 + 8;
      local_10 = local_10 - 1;
    } while (local_10 != 0);
  }
  if (iVar7 != -8) {
    iVar6 = (int)param_1 + iVar7 + 8;
    uVar8 = 0;
    uVar3 = 0;
    switch(iVar7) {
    case 0:
      pbVar1 = (byte *)(iVar6 + -1);
      iVar6 = iVar6 + -1;
      uVar8 = (uint)*pbVar1 << 0x18;
    case -1:
      pbVar1 = (byte *)(iVar6 + -1);
      iVar6 = iVar6 + -1;
      uVar8 = uVar8 | (uint)*pbVar1 << 0x10;
    case -2:
      pbVar1 = (byte *)(iVar6 + -1);
      iVar6 = iVar6 + -1;
      uVar8 = uVar8 | (uint)*pbVar1 << 8;
    case -3:
      pbVar1 = (byte *)(iVar6 + -1);
      iVar6 = iVar6 + -1;
      uVar8 = uVar8 | *pbVar1;
    case -4:
      pbVar1 = (byte *)(iVar6 + -1);
      iVar6 = iVar6 + -1;
      uVar3 = (uint)*pbVar1 << 0x18;
    case -5:
      pbVar1 = (byte *)(iVar6 + -1);
      iVar6 = iVar6 + -1;
      uVar3 = uVar3 | (uint)*pbVar1 << 0x10;
    case -6:
      pbVar1 = (byte *)(iVar6 + -1);
      iVar6 = iVar6 + -1;
      uVar3 = uVar3 | (uint)*pbVar1 << 8;
    case -7:
      uVar3 = uVar3 | *(byte *)(iVar6 + -1);
    default:
      local_4 = uVar8 ^ local_4;
      local_8 = uVar3 ^ local_8;
      FUN_00abe530(&local_8,param_4);
      *param_2 = (char)local_8;
      param_2[1] = (char)(local_8 >> 8);
      param_2[2] = (char)(local_8 >> 0x10);
      param_2[3] = (char)(local_8 >> 0x18);
      param_2[4] = (char)local_4;
      param_2[5] = (char)(local_4 >> 8);
      param_2[6] = (char)(local_4 >> 0x10);
      param_2[7] = (char)(local_4 >> 0x18);
    }
  }
  *(char *)param_5 = (char)local_8;
  *(char *)((int)param_5 + 1) = (char)(local_8 >> 8);
  *(char *)((int)param_5 + 2) = (char)(local_8 >> 0x10);
  *(char *)((int)param_5 + 3) = (char)(local_8 >> 0x18);
  *(char *)(param_5 + 1) = (char)local_4;
  *(char *)((int)param_5 + 5) = (char)(local_4 >> 8);
  *(char *)((int)param_5 + 6) = (char)(local_4 >> 0x10);
  *(char *)((int)param_5 + 7) = (char)(local_4 >> 0x18);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abecb0(byte *param_1,byte *param_2,int param_3,undefined4 param_4,undefined4 *param_5,
                 uint *param_6,int param_7)

{
  byte bVar1;
  byte bVar2;
  uint uVar3;
  undefined4 local_8;
  undefined4 local_4;
  
  uVar3 = *param_6;
  if (param_7 == 0) {
    if (param_3 != 0) {
      do {
        param_3 = param_3 + -1;
        if (uVar3 == 0) {
          local_8 = *param_5;
          local_4 = param_5[1];
          FUN_00abe530(&local_8,param_4);
          *(char *)param_5 = (char)local_8;
          *(char *)((int)param_5 + 1) = (char)((uint)local_8 >> 8);
          *(char *)((int)param_5 + 2) = (char)((uint)local_8 >> 0x10);
          *(char *)((int)param_5 + 3) = (char)((uint)local_8 >> 0x18);
          *(char *)(param_5 + 1) = (char)local_4;
          *(char *)((int)param_5 + 5) = (char)((uint)local_4 >> 8);
          *(char *)((int)param_5 + 6) = (char)((uint)local_4 >> 0x10);
          *(char *)((int)param_5 + 7) = (char)((uint)local_4 >> 0x18);
        }
        bVar2 = *param_1;
        param_1 = param_1 + 1;
        bVar1 = *(byte *)(uVar3 + (int)param_5);
        *(byte *)(uVar3 + (int)param_5) = bVar2;
        *param_2 = bVar2 ^ bVar1;
        param_2 = param_2 + 1;
        uVar3 = uVar3 + 1 & 7;
      } while (param_3 != 0);
    }
  }
  else if (param_3 != 0) {
    do {
      param_3 = param_3 + -1;
      if (uVar3 == 0) {
        local_8 = *param_5;
        local_4 = param_5[1];
        FUN_00abe530(&local_8,param_4);
        *(char *)param_5 = (char)local_8;
        *(char *)((int)param_5 + 1) = (char)((uint)local_8 >> 8);
        *(char *)((int)param_5 + 2) = (char)((uint)local_8 >> 0x10);
        *(char *)((int)param_5 + 3) = (char)((uint)local_8 >> 0x18);
        *(char *)(param_5 + 1) = (char)local_4;
        *(char *)((int)param_5 + 5) = (char)((uint)local_4 >> 8);
        *(char *)((int)param_5 + 6) = (char)((uint)local_4 >> 0x10);
        *(char *)((int)param_5 + 7) = (char)((uint)local_4 >> 0x18);
      }
      bVar2 = *param_1 ^ *(byte *)(uVar3 + (int)param_5);
      param_1 = param_1 + 1;
      *param_2 = bVar2;
      *(byte *)(uVar3 + (int)param_5) = bVar2;
      param_2 = param_2 + 1;
      uVar3 = uVar3 + 1 & 7;
    } while (param_3 != 0);
    *param_6 = uVar3;
    return;
  }
  *param_6 = uVar3;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abeea0(undefined4 *param_1,undefined *param_2,undefined4 param_3,int param_4)

{
  undefined4 local_8;
  undefined4 local_4;
  
  local_8 = *param_1;
  local_4 = param_1[1];
  if (param_4 == 0) {
    FUN_00abe670(&local_8,param_3);
  }
  else {
    FUN_00abe530(&local_8,param_3);
  }
  *param_2 = (char)local_8;
  param_2[1] = (char)((uint)local_8 >> 8);
  param_2[2] = (char)((uint)local_8 >> 0x10);
  param_2[3] = (char)((uint)local_8 >> 0x18);
  param_2[4] = (char)local_4;
  param_2[5] = (char)((uint)local_4 >> 8);
  param_2[6] = (char)((uint)local_4 >> 0x10);
  param_2[7] = (char)((uint)local_4 >> 0x18);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abef70(byte *param_1,byte *param_2,int param_3,undefined4 param_4,undefined4 *param_5,
                 uint *param_6)

{
  undefined4 uVar1;
  uint uVar2;
  int local_28;
  uint *local_24;
  int local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined *local_10;
  byte local_c [4];
  undefined local_8;
  undefined local_7;
  undefined local_6;
  undefined local_5;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_28;
  local_14 = param_4;
  local_24 = param_6;
  uVar2 = *param_6;
  local_20 = param_3;
  local_10 = (undefined *)((int)param_5 + 1);
  uVar1 = *param_5;
  local_18 = param_5[1];
  local_c[1] = *(undefined *)((int)param_5 + 1);
  local_c[0] = *(byte *)param_5;
  local_c[2] = *(undefined *)((int)param_5 + 2);
  local_c[3] = *(undefined *)((int)param_5 + 3);
  local_8 = (char)*(undefined2 *)(param_5 + 1);
  local_28 = 0;
  local_7 = (char)((uint)local_18 >> 8);
  local_6 = (char)((uint)local_18 >> 0x10);
  local_5 = (char)((uint)local_18 >> 0x18);
  local_1c = uVar1;
  if (param_3 == 0) {
    *param_6 = uVar2;
    ___security_check_cookie_4();
    return;
  }
  do {
    local_20 = local_20 + -1;
    if (uVar2 == 0) {
      FUN_00abe530(&local_1c,local_14);
      local_c[1] = (char)((uint)local_1c >> 8);
      local_c[2] = (char)((uint)local_1c >> 0x10);
      local_c[3] = (char)((uint)local_1c >> 0x18);
      local_8 = (char)local_18;
      local_28 = local_28 + 1;
      local_c[0] = (byte)local_1c;
      local_7 = (char)((uint)local_18 >> 8);
      local_6 = (char)((uint)local_18 >> 0x10);
      local_5 = (char)((uint)local_18 >> 0x18);
      uVar1 = local_1c;
    }
    *param_2 = local_c[uVar2] ^ *param_1;
    param_1 = param_1 + 1;
    param_2 = param_2 + 1;
    uVar2 = uVar2 + 1 & 7;
  } while (local_20 != 0);
  if (local_28 != 0) {
    *(char *)param_5 = (char)uVar1;
    *local_10 = (char)((uint)uVar1 >> 8);
    local_10[1] = (char)((uint)uVar1 >> 0x10);
    local_10[2] = (char)((uint)uVar1 >> 0x18);
    local_10[3] = (char)local_18;
    local_10[4] = (char)((uint)local_18 >> 8);
    local_10[5] = (char)((uint)local_18 >> 0x10);
    local_10[6] = (char)((uint)local_18 >> 0x18);
    *local_24 = uVar2;
    ___security_check_cookie_4();
    return;
  }
  *local_24 = uVar2;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abf330(undefined *param_1,uint *param_2)

{
  byte bVar1;
  undefined uVar2;
  undefined uVar3;
  byte bVar4;
  uint3 uVar5;
  uint3 uVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  int iVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  
  bVar1 = param_1[0xc];
  uVar2 = param_1[3];
  uVar5 = CONCAT21(CONCAT11(*param_1,param_1[1]),param_1[2]);
  uVar3 = param_1[7];
  uVar6 = CONCAT21(CONCAT11(param_1[4],param_1[5]),param_1[6]);
  bVar4 = param_1[8];
  iVar7 = CONCAT31(CONCAT21(CONCAT11(bVar4,param_1[9]),param_1[10]),param_1[0xb]);
  iVar14 = CONCAT31(CONCAT21(CONCAT11(bVar1,param_1[0xd]),param_1[0xe]),param_1[0xf]);
  uVar8 = iVar7 + 0x61c88647 + CONCAT31(uVar5,uVar2);
  *param_2 = *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
             *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
             *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
             *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  uVar8 = (CONCAT31(uVar6,uVar3) - iVar14) + 0x9e3779b9;
  param_2[1] = *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
               *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  uVar9 = CONCAT31(uVar6,uVar3) << 0x18 ^ (uint)uVar5;
  uVar8 = iVar7 + -0x3c6ef373 + uVar9;
  uVar12 = CONCAT31(uVar5,uVar2) << 0x18 ^ (uint)uVar6;
  uVar17 = (uVar12 - iVar14) + 0x3c6ef373;
  param_2[2] = *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
               *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  param_2[3] = *(uint *)(&DAT_00dc29f0 + (uVar17 >> 0x18) * 4) ^
               *(uint *)(&DAT_00dc25f0 + (uVar17 >> 0x10 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc21f0 + (uVar17 >> 8 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc1df0 + (uVar17 & 0xff) * 4);
  uVar13 = (uint)bVar4 ^ iVar14 << 8;
  uVar18 = (uint)bVar1 ^ iVar7 << 8;
  uVar8 = uVar18 + 0x8722191a + uVar9;
  uVar17 = (uVar12 - uVar13) + 0x78dde6e6;
  param_2[4] = *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
               *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  param_2[5] = *(uint *)(&DAT_00dc29f0 + (uVar17 >> 0x18) * 4) ^
               *(uint *)(&DAT_00dc25f0 + (uVar17 >> 0x10 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc21f0 + (uVar17 >> 8 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc1df0 + (uVar17 & 0xff) * 4);
  uVar17 = (uint)uVar6 << 0x18 ^ uVar9 >> 8;
  uVar15 = (uint)uVar5 << 0x18 ^ uVar12 >> 8;
  uVar8 = uVar18 + 0xe443234 + uVar17;
  param_2[6] = *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
               *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  uVar8 = (uVar15 - uVar13) + 0xf1bbcdcc;
  param_2[7] = *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
               *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  uVar10 = (uint)(iVar7 << 8) >> 0x18 ^ uVar13 << 8;
  uVar16 = (uint)(iVar14 << 8) >> 0x18 ^ uVar18 << 8;
  uVar8 = uVar16 + 0x1c886467 + uVar17;
  uVar11 = (uVar15 - uVar10) + 0xe3779b99;
  param_2[8] = *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
               *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  param_2[9] = *(uint *)(&DAT_00dc29f0 + (uVar11 >> 0x18) * 4) ^
               *(uint *)(&DAT_00dc25f0 + (uVar11 >> 0x10 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc21f0 + (uVar11 >> 8 & 0xff) * 4) ^
               *(uint *)(&DAT_00dc1df0 + (uVar11 & 0xff) * 4);
  uVar12 = (uVar12 >> 8) << 0x18 ^ uVar17 >> 8;
  uVar19 = (uVar9 >> 8) << 0x18 ^ uVar15 >> 8;
  uVar8 = uVar16 + 0x3910c8cd + uVar12;
  param_2[10] = *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
                *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
                *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
                *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  uVar8 = (uVar19 - uVar10) + 0xc6ef3733;
  param_2[0xb] = *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
                 *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
                 *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
                 *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  uVar9 = (uVar18 << 8) >> 0x18 ^ uVar10 << 8;
  uVar18 = (uVar13 << 8) >> 0x18 ^ uVar16 << 8;
  uVar8 = uVar18 + 0x72219199 + uVar12;
  uVar11 = (uVar19 - uVar9) + 0x8dde6e67;
  param_2[0xc] = *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
                 *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
                 *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
                 *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  param_2[0xd] = *(uint *)(&DAT_00dc29f0 + (uVar11 >> 0x18) * 4) ^
                 *(uint *)(&DAT_00dc25f0 + (uVar11 >> 0x10 & 0xff) * 4) ^
                 *(uint *)(&DAT_00dc21f0 + (uVar11 >> 8 & 0xff) * 4) ^
                 *(uint *)(&DAT_00dc1df0 + (uVar11 & 0xff) * 4);
  uVar11 = (uVar15 >> 8) << 0x18 ^ uVar12 >> 8;
  uVar15 = (uVar17 >> 8) << 0x18 ^ uVar19 >> 8;
  uVar8 = uVar18 + 0xe4432331 + uVar11;
  param_2[0xe] = *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
                 *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
                 *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
                 *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  uVar8 = (uVar15 - uVar9) + 0x1bbcdccf;
  param_2[0xf] = *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
                 *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
                 *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
                 *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  uVar13 = (uVar16 << 8) >> 0x18 ^ uVar9 << 8;
  uVar16 = (uVar10 << 8) >> 0x18 ^ uVar18 << 8;
  uVar8 = uVar16 + 0xc8864662 + uVar11;
  uVar17 = (uVar15 - uVar13) + 0x3779b99e;
  param_2[0x10] =
       *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  param_2[0x11] =
       *(uint *)(&DAT_00dc29f0 + (uVar17 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar17 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar17 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar17 & 0xff) * 4);
  uVar10 = (uVar19 >> 8) << 0x18 ^ uVar11 >> 8;
  uVar19 = (uVar12 >> 8) << 0x18 ^ uVar15 >> 8;
  uVar8 = uVar16 + 0x910c8cc4 + uVar10;
  param_2[0x12] =
       *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  uVar8 = (uVar19 - uVar13) + 0x6ef3733c;
  param_2[0x13] =
       *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  uVar17 = (uVar18 << 8) >> 0x18 ^ uVar13 << 8;
  uVar20 = (uVar9 << 8) >> 0x18 ^ uVar16 << 8;
  uVar8 = uVar20 + 0x22191988 + uVar10;
  uVar9 = (uVar19 - uVar17) + 0xdde6e678;
  param_2[0x14] =
       *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  param_2[0x15] =
       *(uint *)(&DAT_00dc29f0 + (uVar9 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar9 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar9 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar9 & 0xff) * 4);
  uVar18 = (uVar11 >> 8) << 0x18 ^ uVar19 >> 8;
  uVar9 = (uVar15 >> 8) << 0x18 ^ uVar10 >> 8;
  uVar8 = uVar20 + 0x4432330f + uVar9;
  param_2[0x16] =
       *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  uVar8 = (uVar18 - uVar17) + 0xbbcdccf1;
  param_2[0x17] =
       *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  uVar11 = (uVar16 << 8) >> 0x18 ^ uVar17 << 8;
  uVar13 = (uVar13 << 8) >> 0x18 ^ uVar20 << 8;
  uVar8 = uVar13 + 0x8864661d + uVar9;
  uVar12 = (uVar18 - uVar11) + 0x779b99e3;
  param_2[0x18] =
       *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  param_2[0x19] =
       *(uint *)(&DAT_00dc29f0 + (uVar12 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar12 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar12 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar12 & 0xff) * 4);
  uVar12 = (uVar19 >> 8) << 0x18 ^ uVar9 >> 8;
  uVar8 = uVar13 + 0x10c8cc3a + uVar12;
  uVar15 = (uVar10 >> 8) << 0x18 ^ uVar18 >> 8;
  param_2[0x1a] =
       *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  uVar8 = (uVar15 - uVar11) + 0xef3733c6;
  param_2[0x1b] =
       *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  uVar17 = (uVar17 << 8) >> 0x18 ^ uVar13 << 8;
  uVar11 = (uVar20 << 8) >> 0x18 ^ uVar11 << 8;
  uVar8 = uVar12 + 0x21919873 + uVar17;
  uVar10 = (uVar15 - uVar11) + 0xde6e678d;
  param_2[0x1c] =
       *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  param_2[0x1d] =
       *(uint *)(&DAT_00dc29f0 + (uVar10 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar10 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar10 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar10 & 0xff) * 4);
  uVar17 = ((uVar18 >> 8) << 0x18 ^ uVar12 >> 8) + 0x432330e5 + uVar17;
  uVar8 = (((uVar9 >> 8) << 0x18 ^ uVar15 >> 8) - uVar11) + 0xbcdccf1b;
  param_2[0x1e] =
       *(uint *)(&DAT_00dc29f0 + (uVar17 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar17 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar17 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar17 & 0xff) * 4);
  param_2[0x1f] =
       *(uint *)(&DAT_00dc29f0 + (uVar8 >> 0x18) * 4) ^
       *(uint *)(&DAT_00dc25f0 + (uVar8 >> 0x10 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc21f0 + (uVar8 >> 8 & 0xff) * 4) ^
       *(uint *)(&DAT_00dc1df0 + (uVar8 & 0xff) * 4);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00abfe00(undefined *param_1,undefined *param_2,uint *param_3)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  
  uVar2 = CONCAT31(CONCAT21(CONCAT11(param_1[8],param_1[9]),param_1[10]),param_1[0xb]);
  uVar1 = CONCAT31(CONCAT21(CONCAT11(param_1[0xc],param_1[0xd]),param_1[0xe]),param_1[0xf]);
  uVar3 = *param_3 ^ uVar2;
  uVar4 = param_3[1] ^ uVar3 ^ uVar1;
  uVar4 = *(uint *)(&DAT_00dc29f0 + (uVar4 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar4 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar4 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar4 & 0xff) * 4);
  uVar3 = uVar3 + uVar4;
  uVar3 = *(uint *)(&DAT_00dc29f0 + (uVar3 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar3 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar3 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar3 & 0xff) * 4);
  uVar4 = uVar4 + uVar3;
  uVar4 = *(uint *)(&DAT_00dc29f0 + (uVar4 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar4 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar4 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar4 & 0xff) * 4);
  uVar3 = CONCAT31(CONCAT21(CONCAT11(*param_1,param_1[1]),param_1[2]),param_1[3]) ^ uVar3 + uVar4;
  uVar6 = param_3[2] ^ uVar3;
  uVar4 = CONCAT31(CONCAT21(CONCAT11(param_1[4],param_1[5]),param_1[6]),param_1[7]) ^ uVar4;
  uVar5 = param_3[3] ^ uVar6 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar1 = uVar1 ^ uVar5;
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar6 = param_3[4] ^ uVar2;
  uVar5 = param_3[5] ^ uVar6 ^ uVar1;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar4 = uVar4 ^ uVar5;
  uVar3 = uVar3 ^ uVar5 + uVar6;
  uVar6 = param_3[6] ^ uVar3;
  uVar5 = param_3[7] ^ uVar6 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar1 = uVar1 ^ uVar5;
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar6 = param_3[8] ^ uVar2;
  uVar5 = param_3[9] ^ uVar6 ^ uVar1;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar4 = uVar4 ^ uVar5;
  uVar3 = uVar3 ^ uVar5 + uVar6;
  uVar6 = param_3[10] ^ uVar3;
  uVar5 = param_3[0xb] ^ uVar6 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar1 = uVar1 ^ uVar5;
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar6 = param_3[0xc] ^ uVar2;
  uVar5 = param_3[0xd] ^ uVar6 ^ uVar1;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar4 = uVar4 ^ uVar5;
  uVar3 = uVar3 ^ uVar5 + uVar6;
  uVar6 = param_3[0xe] ^ uVar3;
  uVar5 = param_3[0xf] ^ uVar6 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar1 = uVar1 ^ uVar5;
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar6 = param_3[0x10] ^ uVar2;
  uVar5 = param_3[0x11] ^ uVar6 ^ uVar1;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar4 = uVar4 ^ uVar5;
  uVar3 = uVar3 ^ uVar5 + uVar6;
  uVar6 = param_3[0x12] ^ uVar3;
  uVar5 = param_3[0x13] ^ uVar6 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar1 = uVar1 ^ uVar5;
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar6 = param_3[0x14] ^ uVar2;
  uVar5 = param_3[0x15] ^ uVar6 ^ uVar1;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar4 = uVar4 ^ uVar5;
  uVar3 = uVar3 ^ uVar5 + uVar6;
  uVar6 = param_3[0x16] ^ uVar3;
  uVar5 = param_3[0x17] ^ uVar6 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar1 = uVar1 ^ uVar5;
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar6 = param_3[0x18] ^ uVar2;
  uVar5 = param_3[0x19] ^ uVar6 ^ uVar1;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar4 = uVar4 ^ uVar5;
  uVar3 = uVar3 ^ uVar5 + uVar6;
  uVar6 = param_3[0x1a] ^ uVar3;
  uVar5 = param_3[0x1b] ^ uVar6 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar1 = uVar1 ^ uVar5;
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar6 = param_3[0x1c] ^ uVar2;
  uVar5 = param_3[0x1d] ^ uVar6 ^ uVar1;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar4 = uVar4 ^ uVar5;
  uVar3 = uVar3 ^ uVar5 + uVar6;
  uVar5 = param_3[0x1f] ^ param_3[0x1e] ^ uVar3 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = (param_3[0x1e] ^ uVar3) + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar1 = uVar1 ^ uVar5;
  *param_2 = (char)(uVar2 >> 0x18);
  param_2[3] = (char)uVar2;
  param_2[1] = (char)(uVar2 >> 0x10);
  param_2[4] = (char)(uVar1 >> 0x18);
  param_2[7] = (char)uVar1;
  param_2[5] = (char)(uVar1 >> 0x10);
  param_2[6] = (char)(uVar1 >> 8);
  param_2[8] = (char)(uVar3 >> 0x18);
  param_2[9] = (char)(uVar3 >> 0x10);
  param_2[10] = (char)(uVar3 >> 8);
  param_2[0xb] = (char)uVar3;
  param_2[0xc] = (char)(uVar4 >> 0x18);
  param_2[0xd] = (char)(uVar4 >> 0x10);
  param_2[2] = (char)(uVar2 >> 8);
  param_2[0xe] = (char)(uVar4 >> 8);
  param_2[0xf] = (char)uVar4;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac0bc0(undefined *param_1,undefined *param_2,uint *param_3)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  
  uVar2 = CONCAT31(CONCAT21(CONCAT11(param_1[8],param_1[9]),param_1[10]),param_1[0xb]);
  uVar1 = CONCAT31(CONCAT21(CONCAT11(param_1[0xc],param_1[0xd]),param_1[0xe]),param_1[0xf]);
  uVar3 = param_3[0x1e] ^ uVar2;
  uVar4 = param_3[0x1f] ^ uVar3 ^ uVar1;
  uVar4 = *(uint *)(&DAT_00dc29f0 + (uVar4 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar4 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar4 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar4 & 0xff) * 4);
  uVar3 = uVar3 + uVar4;
  uVar3 = *(uint *)(&DAT_00dc29f0 + (uVar3 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar3 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar3 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar3 & 0xff) * 4);
  uVar4 = uVar4 + uVar3;
  uVar4 = *(uint *)(&DAT_00dc29f0 + (uVar4 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar4 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar4 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar4 & 0xff) * 4);
  uVar3 = CONCAT31(CONCAT21(CONCAT11(*param_1,param_1[1]),param_1[2]),param_1[3]) ^ uVar3 + uVar4;
  uVar6 = param_3[0x1c] ^ uVar3;
  uVar4 = CONCAT31(CONCAT21(CONCAT11(param_1[4],param_1[5]),param_1[6]),param_1[7]) ^ uVar4;
  uVar5 = param_3[0x1d] ^ uVar6 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar1 = uVar1 ^ uVar5;
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar6 = param_3[0x1a] ^ uVar2;
  uVar5 = param_3[0x1b] ^ uVar6 ^ uVar1;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar4 = uVar4 ^ uVar5;
  uVar3 = uVar3 ^ uVar5 + uVar6;
  uVar6 = param_3[0x18] ^ uVar3;
  uVar5 = param_3[0x19] ^ uVar6 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar1 = uVar1 ^ uVar5;
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar6 = param_3[0x16] ^ uVar2;
  uVar5 = param_3[0x17] ^ uVar6 ^ uVar1;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar4 = uVar4 ^ uVar5;
  uVar3 = uVar3 ^ uVar5 + uVar6;
  uVar6 = param_3[0x14] ^ uVar3;
  uVar5 = param_3[0x15] ^ uVar6 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar1 = uVar1 ^ uVar5;
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar6 = param_3[0x12] ^ uVar2;
  uVar5 = param_3[0x13] ^ uVar6 ^ uVar1;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar4 = uVar4 ^ uVar5;
  uVar3 = uVar3 ^ uVar5 + uVar6;
  uVar6 = param_3[0x10] ^ uVar3;
  uVar5 = param_3[0x11] ^ uVar6 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar1 = uVar1 ^ uVar5;
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar6 = param_3[0xe] ^ uVar2;
  uVar5 = param_3[0xf] ^ uVar6 ^ uVar1;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar4 = uVar4 ^ uVar5;
  uVar3 = uVar3 ^ uVar5 + uVar6;
  uVar6 = param_3[0xc] ^ uVar3;
  uVar5 = param_3[0xd] ^ uVar6 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar1 = uVar1 ^ uVar5;
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar6 = param_3[10] ^ uVar2;
  uVar5 = param_3[0xb] ^ uVar6 ^ uVar1;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar4 = uVar4 ^ uVar5;
  uVar3 = uVar3 ^ uVar5 + uVar6;
  uVar6 = param_3[8] ^ uVar3;
  uVar5 = param_3[9] ^ uVar6 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar1 = uVar1 ^ uVar5;
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar6 = param_3[6] ^ uVar2;
  uVar5 = param_3[7] ^ uVar6 ^ uVar1;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar4 = uVar4 ^ uVar5;
  uVar3 = uVar3 ^ uVar5 + uVar6;
  uVar6 = param_3[4] ^ uVar3;
  uVar5 = param_3[5] ^ uVar6 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar1 = uVar1 ^ uVar5;
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar6 = param_3[2] ^ uVar2;
  uVar5 = param_3[3] ^ uVar6 ^ uVar1;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = uVar6 + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar4 = uVar4 ^ uVar5;
  uVar3 = uVar3 ^ uVar5 + uVar6;
  uVar5 = param_3[1] ^ *param_3 ^ uVar3 ^ uVar4;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar6 = (*param_3 ^ uVar3) + uVar5;
  uVar6 = *(uint *)(&DAT_00dc29f0 + (uVar6 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar6 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar6 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar6 & 0xff) * 4);
  uVar5 = uVar5 + uVar6;
  uVar5 = *(uint *)(&DAT_00dc29f0 + (uVar5 >> 0x18) * 4) ^
          *(uint *)(&DAT_00dc25f0 + (uVar5 >> 0x10 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc21f0 + (uVar5 >> 8 & 0xff) * 4) ^
          *(uint *)(&DAT_00dc1df0 + (uVar5 & 0xff) * 4);
  uVar2 = uVar2 ^ uVar5 + uVar6;
  uVar1 = uVar1 ^ uVar5;
  *param_2 = (char)(uVar2 >> 0x18);
  param_2[3] = (char)uVar2;
  param_2[1] = (char)(uVar2 >> 0x10);
  param_2[4] = (char)(uVar1 >> 0x18);
  param_2[7] = (char)uVar1;
  param_2[5] = (char)(uVar1 >> 0x10);
  param_2[6] = (char)(uVar1 >> 8);
  param_2[8] = (char)(uVar3 >> 0x18);
  param_2[9] = (char)(uVar3 >> 0x10);
  param_2[10] = (char)(uVar3 >> 8);
  param_2[0xb] = (char)uVar3;
  param_2[0xc] = (char)(uVar4 >> 0x18);
  param_2[0xd] = (char)(uVar4 >> 0x10);
  param_2[2] = (char)(uVar2 >> 8);
  param_2[0xe] = (char)(uVar4 >> 8);
  param_2[0xf] = (char)uVar4;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac1980(byte *param_1,undefined *param_2,undefined4 param_3)

{
  uint local_8;
  uint local_4;
  
  local_8 = (uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[2] << 8 |
            (uint)param_1[3];
  local_4 = (uint)CONCAT11(param_1[6],param_1[7]) |
            (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10;
  FUN_00ac1a30(&local_8,param_3);
  *param_2 = (char)(local_8 >> 0x18);
  param_2[1] = (char)(local_8 >> 0x10);
  param_2[2] = (char)(local_8 >> 8);
  param_2[3] = (char)local_8;
  param_2[4] = (char)(local_4 >> 0x18);
  param_2[5] = (char)(local_4 >> 0x10);
  param_2[6] = (char)(local_4 >> 8);
  param_2[7] = (char)local_4;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac1a30(uint *param_1,int *param_2)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  int iVar10;
  uint uVar11;
  uint uVar12;
  
  piVar2 = param_2;
  uVar3 = *param_1 >> 0x10;
  uVar6 = *param_2 * uVar3;
  if (uVar6 == 0) {
    uVar6 = 1 - *param_2;
  }
  else {
    uVar6 = (uVar6 & 0xffff) - (uVar6 >> 0x10);
    uVar3 = uVar6 >> 0x10;
  }
  uVar9 = *param_1 + param_2[1];
  uVar8 = (param_1[1] >> 0x10) + param_2[2];
  uVar11 = param_1[1] & 0xffff;
  uVar4 = param_2[3] * uVar11;
  if (uVar4 == 0) {
    uVar11 = (1 - param_2[3]) - uVar11;
  }
  else {
    uVar11 = (uVar4 & 0xffff) - (uVar4 >> 0x10);
    uVar11 = uVar11 - (uVar11 >> 0x10);
  }
  uVar4 = (uVar8 ^ uVar6 - uVar3) & 0xffff;
  uVar7 = param_2[4] * uVar4;
  if (uVar7 == 0) {
    uVar7 = 1 - param_2[4];
  }
  else {
    uVar7 = (uVar7 & 0xffff) - (uVar7 >> 0x10);
    uVar4 = uVar7 >> 0x10;
  }
  uVar12 = (uVar11 ^ uVar9) + (uVar7 - uVar4) & 0xffff;
  uVar5 = param_2[5] * uVar12;
  if (uVar5 == 0) {
    uVar5 = 1 - param_2[5];
  }
  else {
    uVar5 = (uVar5 & 0xffff) - (uVar5 >> 0x10);
    uVar12 = uVar5 >> 0x10;
  }
  uVar5 = uVar5 - uVar12;
  uVar4 = (uVar7 - uVar4) + uVar5;
  uVar3 = (uVar5 ^ uVar6 - uVar3) & 0xffff;
  uVar6 = param_2[6] * uVar3;
  if (uVar6 == 0) {
    param_2 = (int *)((1 - param_2[6]) - uVar3);
  }
  else {
    uVar3 = (uVar6 & 0xffff) - (uVar6 >> 0x10);
    param_2 = (int *)(uVar3 - (uVar3 >> 0x10));
  }
  uVar8 = (uVar5 ^ uVar8) + piVar2[7];
  uVar6 = (uVar4 ^ uVar9) + piVar2[8];
  uVar4 = (uVar11 ^ uVar4) & 0xffff;
  uVar3 = piVar2[9] * uVar4;
  if (uVar3 == 0) {
    uVar4 = (1 - piVar2[9]) - uVar4;
  }
  else {
    uVar4 = (uVar3 & 0xffff) - (uVar3 >> 0x10);
    uVar4 = uVar4 - (uVar4 >> 0x10);
  }
  uVar3 = (uVar6 ^ (uint)param_2) & 0xffff;
  uVar9 = piVar2[10] * uVar3;
  if (uVar9 == 0) {
    uVar9 = 1 - piVar2[10];
  }
  else {
    uVar9 = (uVar9 & 0xffff) - (uVar9 >> 0x10);
    uVar3 = uVar9 >> 0x10;
  }
  uVar7 = (uVar4 ^ uVar8) + (uVar9 - uVar3) & 0xffff;
  uVar11 = piVar2[0xb] * uVar7;
  if (uVar11 == 0) {
    uVar11 = 1 - piVar2[0xb];
  }
  else {
    uVar11 = (uVar11 & 0xffff) - (uVar11 >> 0x10);
    uVar7 = uVar11 >> 0x10;
  }
  uVar11 = uVar11 - uVar7;
  uVar9 = (uVar9 - uVar3) + uVar11;
  uVar3 = (uVar11 ^ (uint)param_2) & 0xffff;
  uVar7 = piVar2[0xc] * uVar3;
  if (uVar7 == 0) {
    param_2 = (int *)((1 - piVar2[0xc]) - uVar3);
  }
  else {
    uVar3 = (uVar7 & 0xffff) - (uVar7 >> 0x10);
    param_2 = (int *)(uVar3 - (uVar3 >> 0x10));
  }
  uVar11 = (uVar11 ^ uVar6) + piVar2[0xd];
  uVar6 = (uVar9 ^ uVar8) + piVar2[0xe];
  uVar4 = (uVar4 ^ uVar9) & 0xffff;
  uVar3 = piVar2[0xf] * uVar4;
  if (uVar3 == 0) {
    uVar4 = (1 - piVar2[0xf]) - uVar4;
  }
  else {
    uVar4 = (uVar3 & 0xffff) - (uVar3 >> 0x10);
    uVar4 = uVar4 - (uVar4 >> 0x10);
  }
  uVar3 = (uVar6 ^ (uint)param_2) & 0xffff;
  uVar8 = piVar2[0x10] * uVar3;
  if (uVar8 == 0) {
    uVar8 = 1 - piVar2[0x10];
  }
  else {
    uVar8 = (uVar8 & 0xffff) - (uVar8 >> 0x10);
    uVar3 = uVar8 >> 0x10;
  }
  uVar7 = (uVar4 ^ uVar11) + (uVar8 - uVar3) & 0xffff;
  uVar9 = piVar2[0x11] * uVar7;
  if (uVar9 == 0) {
    uVar9 = 1 - piVar2[0x11];
  }
  else {
    uVar9 = (uVar9 & 0xffff) - (uVar9 >> 0x10);
    uVar7 = uVar9 >> 0x10;
  }
  uVar9 = uVar9 - uVar7;
  uVar8 = (uVar8 - uVar3) + uVar9;
  uVar3 = (uVar9 ^ (uint)param_2) & 0xffff;
  uVar7 = piVar2[0x12] * uVar3;
  if (uVar7 == 0) {
    param_2 = (int *)((1 - piVar2[0x12]) - uVar3);
  }
  else {
    uVar3 = (uVar7 & 0xffff) - (uVar7 >> 0x10);
    param_2 = (int *)(uVar3 - (uVar3 >> 0x10));
  }
  uVar7 = (uVar9 ^ uVar6) + piVar2[0x13];
  uVar9 = (uVar8 ^ uVar11) + piVar2[0x14];
  uVar6 = (uVar4 ^ uVar8) & 0xffff;
  uVar3 = piVar2[0x15] * uVar6;
  if (uVar3 == 0) {
    uVar6 = (1 - piVar2[0x15]) - uVar6;
  }
  else {
    uVar6 = (uVar3 & 0xffff) - (uVar3 >> 0x10);
    uVar6 = uVar6 - (uVar6 >> 0x10);
  }
  uVar3 = (uVar9 ^ (uint)param_2) & 0xffff;
  uVar4 = piVar2[0x16] * uVar3;
  if (uVar4 == 0) {
    uVar4 = 1 - piVar2[0x16];
  }
  else {
    uVar4 = (uVar4 & 0xffff) - (uVar4 >> 0x10);
    uVar3 = uVar4 >> 0x10;
  }
  uVar11 = (uVar6 ^ uVar7) + (uVar4 - uVar3) & 0xffff;
  uVar8 = piVar2[0x17] * uVar11;
  if (uVar8 == 0) {
    uVar8 = 1 - piVar2[0x17];
  }
  else {
    uVar8 = (uVar8 & 0xffff) - (uVar8 >> 0x10);
    uVar11 = uVar8 >> 0x10;
  }
  uVar8 = uVar8 - uVar11;
  uVar4 = (uVar4 - uVar3) + uVar8;
  uVar3 = (uVar8 ^ (uint)param_2) & 0xffff;
  uVar11 = piVar2[0x18] * uVar3;
  if (uVar11 == 0) {
    param_2 = (int *)((1 - piVar2[0x18]) - uVar3);
  }
  else {
    uVar3 = (uVar11 & 0xffff) - (uVar11 >> 0x10);
    param_2 = (int *)(uVar3 - (uVar3 >> 0x10));
  }
  uVar9 = (uVar8 ^ uVar9) + piVar2[0x19];
  uVar8 = (uVar4 ^ uVar7) + piVar2[0x1a];
  uVar6 = (uVar6 ^ uVar4) & 0xffff;
  uVar3 = piVar2[0x1b] * uVar6;
  if (uVar3 == 0) {
    uVar6 = (1 - piVar2[0x1b]) - uVar6;
  }
  else {
    uVar6 = (uVar3 & 0xffff) - (uVar3 >> 0x10);
    uVar6 = uVar6 - (uVar6 >> 0x10);
  }
  uVar3 = (uVar8 ^ (uint)param_2) & 0xffff;
  uVar4 = piVar2[0x1c] * uVar3;
  if (uVar4 == 0) {
    uVar4 = 1 - piVar2[0x1c];
  }
  else {
    uVar4 = (uVar4 & 0xffff) - (uVar4 >> 0x10);
    uVar3 = uVar4 >> 0x10;
  }
  uVar7 = (uVar6 ^ uVar9) + (uVar4 - uVar3) & 0xffff;
  uVar11 = piVar2[0x1d] * uVar7;
  if (uVar11 == 0) {
    uVar11 = 1 - piVar2[0x1d];
  }
  else {
    uVar11 = (uVar11 & 0xffff) - (uVar11 >> 0x10);
    uVar7 = uVar11 >> 0x10;
  }
  uVar11 = uVar11 - uVar7;
  uVar4 = (uVar4 - uVar3) + uVar11;
  uVar3 = (uVar11 ^ (uint)param_2) & 0xffff;
  uVar7 = piVar2[0x1e] * uVar3;
  if (uVar7 == 0) {
    param_2 = (int *)((1 - piVar2[0x1e]) - uVar3);
  }
  else {
    uVar3 = (uVar7 & 0xffff) - (uVar7 >> 0x10);
    param_2 = (int *)(uVar3 - (uVar3 >> 0x10));
  }
  uVar11 = (uVar11 ^ uVar8) + piVar2[0x1f];
  uVar8 = (uVar4 ^ uVar9) + piVar2[0x20];
  uVar6 = (uVar6 ^ uVar4) & 0xffff;
  uVar3 = piVar2[0x21] * uVar6;
  if (uVar3 == 0) {
    uVar6 = (1 - piVar2[0x21]) - uVar6;
  }
  else {
    uVar6 = (uVar3 & 0xffff) - (uVar3 >> 0x10);
    uVar6 = uVar6 - (uVar6 >> 0x10);
  }
  uVar3 = (uVar8 ^ (uint)param_2) & 0xffff;
  uVar4 = piVar2[0x22] * uVar3;
  if (uVar4 == 0) {
    uVar4 = 1 - piVar2[0x22];
  }
  else {
    uVar4 = (uVar4 & 0xffff) - (uVar4 >> 0x10);
    uVar3 = uVar4 >> 0x10;
  }
  uVar7 = (uVar6 ^ uVar11) + (uVar4 - uVar3) & 0xffff;
  uVar9 = piVar2[0x23] * uVar7;
  if (uVar9 == 0) {
    uVar9 = 1 - piVar2[0x23];
  }
  else {
    uVar9 = (uVar9 & 0xffff) - (uVar9 >> 0x10);
    uVar7 = uVar9 >> 0x10;
  }
  uVar9 = uVar9 - uVar7;
  uVar4 = (uVar4 - uVar3) + uVar9;
  uVar3 = (uVar9 ^ (uint)param_2) & 0xffff;
  uVar7 = piVar2[0x24] * uVar3;
  if (uVar7 == 0) {
    param_2 = (int *)((1 - piVar2[0x24]) - uVar3);
  }
  else {
    uVar3 = (uVar7 & 0xffff) - (uVar7 >> 0x10);
    param_2 = (int *)(uVar3 - (uVar3 >> 0x10));
  }
  uVar9 = (uVar9 ^ uVar8) + piVar2[0x25];
  uVar8 = (uVar4 ^ uVar11) + piVar2[0x26];
  uVar6 = (uVar6 ^ uVar4) & 0xffff;
  uVar3 = piVar2[0x27] * uVar6;
  if (uVar3 == 0) {
    uVar6 = (1 - piVar2[0x27]) - uVar6;
  }
  else {
    uVar6 = (uVar3 & 0xffff) - (uVar3 >> 0x10);
    uVar6 = uVar6 - (uVar6 >> 0x10);
  }
  uVar3 = (uVar8 ^ (uint)param_2) & 0xffff;
  uVar4 = piVar2[0x28] * uVar3;
  if (uVar4 == 0) {
    uVar4 = 1 - piVar2[0x28];
  }
  else {
    uVar4 = (uVar4 & 0xffff) - (uVar4 >> 0x10);
    uVar3 = uVar4 >> 0x10;
  }
  uVar7 = (uVar6 ^ uVar9) + (uVar4 - uVar3) & 0xffff;
  uVar11 = piVar2[0x29] * uVar7;
  if (uVar11 == 0) {
    uVar11 = 1 - piVar2[0x29];
  }
  else {
    uVar11 = (uVar11 & 0xffff) - (uVar11 >> 0x10);
    uVar7 = uVar11 >> 0x10;
  }
  uVar11 = uVar11 - uVar7;
  uVar4 = (uVar4 - uVar3) + uVar11;
  uVar3 = (uVar11 ^ (uint)param_2) & 0xffff;
  uVar7 = piVar2[0x2a] * uVar3;
  if (uVar7 == 0) {
    param_2 = (int *)((1 - piVar2[0x2a]) - uVar3);
  }
  else {
    uVar3 = (uVar7 & 0xffff) - (uVar7 >> 0x10);
    param_2 = (int *)(uVar3 - (uVar3 >> 0x10));
  }
  uVar11 = (uVar11 ^ uVar8) + piVar2[0x2b];
  uVar8 = (uVar4 ^ uVar9) + piVar2[0x2c];
  uVar6 = (uVar6 ^ uVar4) & 0xffff;
  uVar3 = piVar2[0x2d] * uVar6;
  if (uVar3 == 0) {
    uVar6 = (1 - piVar2[0x2d]) - uVar6;
  }
  else {
    uVar6 = (uVar3 & 0xffff) - (uVar3 >> 0x10);
    uVar6 = uVar6 - (uVar6 >> 0x10);
  }
  uVar3 = (uVar8 ^ (uint)param_2) & 0xffff;
  uVar4 = piVar2[0x2e] * uVar3;
  if (uVar4 == 0) {
    uVar4 = 1 - piVar2[0x2e];
  }
  else {
    uVar4 = (uVar4 & 0xffff) - (uVar4 >> 0x10);
    uVar3 = uVar4 >> 0x10;
  }
  uVar7 = (uVar6 ^ uVar11) + (uVar4 - uVar3) & 0xffff;
  uVar9 = piVar2[0x2f] * uVar7;
  if (uVar9 == 0) {
    uVar9 = 1 - piVar2[0x2f];
  }
  else {
    uVar9 = (uVar9 & 0xffff) - (uVar9 >> 0x10);
    uVar7 = uVar9 >> 0x10;
  }
  uVar9 = uVar9 - uVar7;
  uVar4 = (uVar4 - uVar3) + uVar9;
  uVar3 = (uVar9 ^ (uint)param_2) & 0xffff;
  uVar7 = piVar2[0x30] * uVar3;
  if (uVar7 == 0) {
    iVar10 = (1 - piVar2[0x30]) - uVar3;
  }
  else {
    uVar3 = (uVar7 & 0xffff) - (uVar7 >> 0x10);
    iVar10 = uVar3 - (uVar3 >> 0x10);
  }
  iVar1 = piVar2[0x32];
  uVar6 = (uVar6 ^ uVar4) & 0xffff;
  uVar3 = piVar2[0x33] * uVar6;
  if (uVar3 == 0) {
    uVar6 = (1 - piVar2[0x33]) - uVar6;
  }
  else {
    uVar6 = (uVar3 & 0xffff) - (uVar3 >> 0x10);
    uVar6 = uVar6 - (uVar6 >> 0x10);
  }
  *param_1 = piVar2[0x31] + (uVar4 ^ uVar11) & 0xffff | iVar10 << 0x10;
  param_1[1] = (iVar1 + (uVar9 ^ uVar8)) * 0x10000 | uVar6 & 0xffff;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac2290(byte *param_1,undefined *param_2,uint param_3,undefined4 param_4,byte *param_5,
                 uint param_6)

{
  byte *pbVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int local_10;
  uint local_c;
  uint local_8;
  uint local_4;
  
  if (param_6 == 0) {
    uVar6 = (uint)*param_5 << 0x18 | (uint)param_5[1] << 0x10 | (uint)param_5[2] << 8 |
            (uint)param_5[3];
    uVar4 = (uint)param_5[4] << 0x18 | (uint)param_5[5] << 0x10 | (uint)param_5[6] << 8 |
            (uint)param_5[7];
    local_10 = param_3 - 8;
    if (-1 < local_10) {
      param_3 = param_3 >> 3;
      local_10 = local_10 + param_3 * -8;
      param_6 = uVar4;
      local_c = uVar6;
      do {
        uVar6 = (uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[2] << 8 |
                (uint)param_1[3];
        uVar4 = (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[6] << 8 |
                (uint)param_1[7];
        param_1 = param_1 + 8;
        local_8 = uVar6;
        local_4 = uVar4;
        FUN_00ac1a30(&local_8,param_4);
        local_c = local_c ^ local_8;
        param_6 = param_6 ^ local_4;
        *param_2 = (char)(local_c >> 0x18);
        param_2[1] = (char)(local_c >> 0x10);
        param_2[2] = (char)(local_c >> 8);
        param_2[3] = (char)local_c;
        param_2[4] = (char)(param_6 >> 0x18);
        param_2[5] = (char)(param_6 >> 0x10);
        param_2[6] = (char)(param_6 >> 8);
        param_2[7] = (char)param_6;
        param_2 = param_2 + 8;
        param_3 = param_3 - 1;
        param_6 = uVar4;
        local_c = uVar6;
      } while (param_3 != 0);
    }
    uVar3 = uVar4;
    uVar2 = uVar6;
    if (local_10 != -8) {
      uVar2 = (uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[2] << 8 |
              (uint)param_1[3];
      uVar3 = (uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 |
              (uint)CONCAT11(param_1[6],param_1[7]);
      local_8 = uVar2;
      local_4 = uVar3;
      FUN_00ac1a30(&local_8,param_4);
      uVar6 = uVar6 ^ local_8;
      uVar4 = uVar4 ^ local_4;
      param_2 = param_2 + local_10 + 8;
      switch(local_10) {
      case 0:
        param_2 = param_2 + -1;
        *param_2 = (char)uVar4;
      case -1:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar4 >> 8);
      case -2:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar4 >> 0x10);
      case -3:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar4 >> 0x18);
      case -4:
        param_2 = param_2 + -1;
        *param_2 = (char)uVar6;
      case -5:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar6 >> 8);
      case -6:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar6 >> 0x10);
      case -7:
        param_2[-1] = (char)(uVar6 >> 0x18);
      }
    }
    *param_5 = (byte)(uVar2 >> 0x18);
    param_5[1] = (byte)(uVar2 >> 0x10);
    param_5[2] = (byte)(uVar2 >> 8);
    param_5[3] = (byte)uVar2;
  }
  else {
    local_8 = (uint)*param_5 << 0x18 | (uint)param_5[1] << 0x10 | (uint)param_5[2] << 8 |
              (uint)param_5[3];
    local_4 = (uint)param_5[4] << 0x18 | (uint)param_5[5] << 0x10 | (uint)param_5[6] << 8 |
              (uint)param_5[7];
    iVar5 = param_3 - 8;
    if (-1 < iVar5) {
      param_3 = param_3 >> 3;
      iVar5 = iVar5 + param_3 * -8;
      param_6 = local_4;
      do {
        local_8 = ((uint)*param_1 << 0x18 | (uint)param_1[1] << 0x10 | (uint)param_1[2] << 8 |
                  (uint)param_1[3]) ^ local_8;
        local_4 = ((uint)param_1[4] << 0x18 | (uint)param_1[5] << 0x10 | (uint)param_1[6] << 8 |
                  (uint)param_1[7]) ^ param_6;
        param_1 = param_1 + 8;
        FUN_00ac1a30(&local_8,param_4);
        *param_2 = (char)(local_8 >> 0x18);
        param_2[1] = (char)(local_8 >> 0x10);
        param_2[2] = (char)(local_8 >> 8);
        param_2[3] = (char)local_8;
        param_2[4] = (char)(local_4 >> 0x18);
        param_2[5] = (char)(local_4 >> 0x10);
        param_2[6] = (char)(local_4 >> 8);
        param_2[7] = (char)local_4;
        param_2 = param_2 + 8;
        param_3 = param_3 - 1;
        param_6 = local_4;
      } while (param_3 != 0);
    }
    if (iVar5 != -8) {
      param_1 = param_1 + iVar5 + 8;
      uVar4 = 0;
      param_3 = 0;
      switch(iVar5) {
      case 0:
        param_3 = (uint)param_1[-1];
        param_1 = param_1 + -1;
      case -1:
        pbVar1 = param_1 + -1;
        param_1 = param_1 + -1;
        param_3 = param_3 | (uint)*pbVar1 << 8;
      case -2:
        pbVar1 = param_1 + -1;
        param_1 = param_1 + -1;
        param_3 = param_3 | (uint)*pbVar1 << 0x10;
      case -3:
        pbVar1 = param_1 + -1;
        param_1 = param_1 + -1;
        param_3 = param_3 | (uint)*pbVar1 << 0x18;
      case -4:
        uVar4 = (uint)param_1[-1];
        param_1 = param_1 + -1;
      case -5:
        pbVar1 = param_1 + -1;
        param_1 = param_1 + -1;
        uVar4 = uVar4 | (uint)*pbVar1 << 8;
      case -6:
        pbVar1 = param_1 + -1;
        param_1 = param_1 + -1;
        uVar4 = uVar4 | (uint)*pbVar1 << 0x10;
      case -7:
        uVar4 = uVar4 | (uint)param_1[-1] << 0x18;
      default:
        local_8 = uVar4 ^ local_8;
        local_4 = param_3 ^ local_4;
        FUN_00ac1a30(&local_8,param_4);
        *param_2 = (char)(local_8 >> 0x18);
        param_2[1] = (char)(local_8 >> 0x10);
        param_2[2] = (char)(local_8 >> 8);
        param_2[3] = (char)local_8;
        param_2[4] = (char)(local_4 >> 0x18);
        param_2[5] = (char)(local_4 >> 0x10);
        param_2[6] = (char)(local_4 >> 8);
        param_2[7] = (char)local_4;
      }
    }
    *param_5 = (byte)(local_8 >> 0x18);
    param_5[1] = (byte)(local_8 >> 0x10);
    param_5[2] = (byte)(local_8 >> 8);
    param_5[3] = (byte)local_8;
    uVar3 = local_4;
  }
  param_5[4] = (byte)(uVar3 >> 0x18);
  param_5[5] = (byte)(uVar3 >> 0x10);
  param_5[6] = (byte)(uVar3 >> 8);
  param_5[7] = (byte)uVar3;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac2780(byte *param_1,byte *param_2,int param_3,undefined4 param_4,byte *param_5,
                 uint *param_6)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  int local_28;
  uint *local_24;
  int local_20;
  uint local_1c;
  uint local_18;
  undefined4 local_14;
  byte *local_10;
  byte local_c [4];
  byte local_8;
  byte local_7;
  byte local_6;
  byte local_5;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_28;
  local_14 = param_4;
  local_24 = param_6;
  uVar3 = *param_6;
  local_20 = param_3;
  local_10 = param_5 + 1;
  uVar1 = (uint)*param_5 << 0x18 | (uint)param_5[1] << 0x10 | (uint)param_5[2] << 8 |
          (uint)param_5[3];
  local_c[0] = *param_5;
  local_c[1] = param_5[1];
  uVar2 = (uint)param_5[4] << 0x18 | (uint)param_5[5] << 0x10 |
          (uint)CONCAT11(param_5[6],param_5[7]);
  local_c[2] = param_5[2];
  local_8 = param_5[4];
  local_7 = param_5[5];
  local_28 = 0;
  local_c[3] = param_5[3];
  local_6 = param_5[6];
  local_5 = param_5[7];
  local_1c = uVar1;
  local_18 = uVar2;
  if (param_3 == 0) {
    *param_6 = uVar3;
    ___security_check_cookie_4();
    return;
  }
  do {
    local_20 = local_20 + -1;
    if (uVar3 == 0) {
      FUN_00ac1a30(&local_1c,local_14);
      local_c[0] = (byte)(local_1c >> 0x18);
      local_c[2] = (byte)(local_1c >> 8);
      local_c[1] = (byte)(local_1c >> 0x10);
      local_8 = (byte)(local_18 >> 0x18);
      local_7 = (byte)(local_18 >> 0x10);
      local_28 = local_28 + 1;
      local_c[3] = (byte)local_1c;
      local_6 = (byte)(local_18 >> 8);
      local_5 = (byte)local_18;
      uVar1 = local_1c;
      uVar2 = local_18;
    }
    *param_2 = local_c[uVar3] ^ *param_1;
    param_2 = param_2 + 1;
    param_1 = param_1 + 1;
    uVar3 = uVar3 + 1 & 7;
  } while (local_20 != 0);
  if (local_28 == 0) {
    *local_24 = uVar3;
    ___security_check_cookie_4();
    return;
  }
  *param_5 = (byte)(uVar1 >> 0x18);
  *local_10 = (byte)(uVar1 >> 0x10);
  local_10[1] = (byte)(uVar1 >> 8);
  local_10[2] = (byte)uVar1;
  local_10[3] = (byte)(uVar2 >> 0x18);
  local_10[4] = (byte)(uVar2 >> 0x10);
  local_10[5] = (byte)(uVar2 >> 8);
  local_10[6] = (byte)uVar2;
  *local_24 = uVar3;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac2970(byte *param_1,byte *param_2,int param_3,undefined4 param_4,byte *param_5,
                 uint *param_6,int param_7)

{
  byte bVar1;
  byte bVar2;
  uint uVar3;
  uint local_8;
  uint local_4;
  
  uVar3 = *param_6;
  if (param_7 == 0) {
    if (param_3 != 0) {
      do {
        param_3 = param_3 + -1;
        if (uVar3 == 0) {
          local_8 = (uint)*param_5 << 0x18 | (uint)param_5[1] << 0x10 | (uint)param_5[2] << 8 |
                    (uint)param_5[3];
          local_4 = (uint)CONCAT11(param_5[6],param_5[7]) |
                    (uint)param_5[4] << 0x18 | (uint)param_5[5] << 0x10;
          FUN_00ac1a30(&local_8,param_4);
          *param_5 = (byte)(local_8 >> 0x18);
          param_5[1] = (byte)(local_8 >> 0x10);
          param_5[2] = (byte)(local_8 >> 8);
          param_5[3] = (byte)local_8;
          param_5[4] = (byte)(local_4 >> 0x18);
          param_5[5] = (byte)(local_4 >> 0x10);
          param_5[6] = (byte)(local_4 >> 8);
          param_5[7] = (byte)local_4;
        }
        bVar1 = *param_1;
        param_1 = param_1 + 1;
        bVar2 = param_5[uVar3];
        param_5[uVar3] = bVar1;
        *param_2 = bVar1 ^ bVar2;
        param_2 = param_2 + 1;
        uVar3 = uVar3 + 1 & 7;
      } while (param_3 != 0);
    }
  }
  else if (param_3 != 0) {
    do {
      param_3 = param_3 + -1;
      if (uVar3 == 0) {
        local_8 = (uint)*param_5 << 0x18 | (uint)param_5[1] << 0x10 | (uint)param_5[2] << 8 |
                  (uint)param_5[3];
        local_4 = (uint)CONCAT11(param_5[6],param_5[7]) |
                  (uint)param_5[4] << 0x18 | (uint)param_5[5] << 0x10;
        FUN_00ac1a30(&local_8,param_4);
        *param_5 = (byte)(local_8 >> 0x18);
        param_5[1] = (byte)(local_8 >> 0x10);
        param_5[2] = (byte)(local_8 >> 8);
        param_5[3] = (byte)local_8;
        param_5[4] = (byte)(local_4 >> 0x18);
        param_5[5] = (byte)(local_4 >> 0x10);
        param_5[6] = (byte)(local_4 >> 8);
        param_5[7] = (byte)local_4;
      }
      bVar1 = *param_1;
      bVar2 = param_5[uVar3];
      param_1 = param_1 + 1;
      *param_2 = bVar1 ^ bVar2;
      param_5[uVar3] = bVar1 ^ bVar2;
      param_2 = param_2 + 1;
      uVar3 = uVar3 + 1 & 7;
    } while (param_3 != 0);
    *param_6 = uVar3;
    return;
  }
  *param_6 = uVar3;
  return;
}



void FUN_00ac2b70(byte *param_1,uint *param_2)

{
  byte bVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint *puVar5;
  int iVar6;
  
  *param_2 = (uint)*param_1 << 8;
  *param_2 = *param_2 | (uint)param_1[1];
  param_2[1] = (uint)param_1[2] << 8;
  param_2[1] = param_2[1] | (uint)param_1[3];
  param_2[2] = (uint)param_1[4] << 8;
  param_2[2] = param_2[2] | (uint)param_1[5];
  puVar5 = param_2 + 2;
  param_2[3] = (uint)param_1[6] << 8;
  param_2[3] = param_2[3] | (uint)param_1[7];
  param_2[4] = (uint)param_1[8] << 8;
  param_2[4] = param_2[4] | (uint)param_1[9];
  param_2[5] = (uint)param_1[10] << 8;
  param_2[5] = param_2[5] | (uint)param_1[0xb];
  param_2[6] = (uint)param_1[0xc] << 8;
  param_2[6] = param_2[6] | (uint)param_1[0xd];
  bVar1 = param_1[0xe];
  param_2[7] = (uint)bVar1 << 8;
  param_2[7] = (uint)CONCAT11(bVar1,param_1[0xf]);
  iVar6 = 0;
  do {
    uVar2 = *puVar5;
    uVar3 = puVar5[-1];
    param_2[8] = (uVar2 >> 7 | uVar3 << 9) & 0xffff;
    uVar4 = puVar5[1];
    param_2[9] = (uVar4 >> 7 | uVar2 << 9) & 0xffff;
    uVar2 = puVar5[2];
    param_2[10] = (uVar4 << 9 | uVar2 >> 7) & 0xffff;
    uVar4 = puVar5[3];
    param_2[0xb] = (uVar4 >> 7 | uVar2 << 9) & 0xffff;
    uVar2 = puVar5[4];
    param_2[0xc] = (uVar4 << 9 | uVar2 >> 7) & 0xffff;
    uVar4 = puVar5[5];
    param_2[0xd] = (uVar4 >> 7 | uVar2 << 9) & 0xffff;
    uVar2 = puVar5[-2];
    if (4 < iVar6) {
      return;
    }
    param_2[0xe] = (uVar4 << 9 | uVar2 >> 7) & 0xffff;
    param_2[0xf] = (uVar2 << 9 | uVar3 >> 7) & 0xffff;
    iVar6 = iVar6 + 1;
    puVar5 = puVar5 + 8;
    param_2 = param_2 + 8;
  } while (iVar6 < 6);
  return;
}



int __fastcall FUN_00ac2cf0(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  if (param_1 == 0) {
    return 0;
  }
  iVar2 = 0x10001;
  iVar3 = 0;
  iVar5 = 1;
  while( true ) {
    iVar1 = param_1;
    param_1 = iVar2 % iVar1;
    if (param_1 == 0) break;
    iVar4 = iVar3 - ((iVar2 - param_1) / iVar1) * iVar5;
    iVar2 = iVar1;
    iVar3 = iVar5;
    iVar5 = iVar4;
  }
  if (iVar5 < 0) {
    iVar5 = iVar5 + 0x10001;
  }
  return iVar5;
}



int __fastcall FUN_00ac2cf7(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  iVar2 = 0x10001;
  iVar3 = 0;
  iVar5 = 1;
  while( true ) {
    iVar1 = param_1;
    param_1 = iVar2 % iVar1;
    if (param_1 == 0) break;
    iVar4 = iVar3 - ((iVar2 - param_1) / iVar1) * iVar5;
    iVar2 = iVar1;
    iVar3 = iVar5;
    iVar5 = iVar4;
  }
  if (iVar5 < 0) {
    iVar5 = iVar5 + 0x10001;
  }
  return iVar5;
}



void FUN_00ac2d40(int param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 *puVar4;
  int iVar5;
  
  iVar3 = 0;
  puVar4 = param_2;
  iVar5 = param_1 + 0xc0;
  do {
    uVar2 = FUN_00ac2cf0();
    *puVar4 = uVar2;
    puVar4[1] = -*(int *)(iVar5 + 8) & 0xffff;
    puVar4[2] = -*(int *)(iVar5 + 4) & 0xffff;
    uVar2 = FUN_00ac2cf0();
    puVar4[3] = uVar2;
    if (iVar3 == 8) break;
    puVar4[4] = *(undefined4 *)(iVar5 + -8);
    puVar4[5] = *(undefined4 *)(iVar5 + -4);
    iVar3 = iVar3 + 1;
    puVar4 = puVar4 + 6;
    iVar5 = iVar5 + -0x18;
  } while (iVar3 < 9);
  uVar2 = param_2[2];
  param_2[2] = param_2[1];
  uVar1 = param_2[0x31];
  param_2[1] = uVar2;
  param_2[0x31] = param_2[0x32];
  param_2[0x32] = uVar1;
  return;
}



char FUN_00ac2e00(char *param_1,uint param_2,ulonglong *param_3,int param_4)

{
  ulonglong *puVar1;
  ulonglong *puVar2;
  char cVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  char cVar10;
  uint uVar11;
  int iVar12;
  int iVar13;
  byte bVar14;
  uint uVar15;
  byte bVar16;
  uint uVar17;
  bool bVar18;
  ulonglong uVar19;
  ulonglong uVar20;
  
  if (param_2 == 0) {
    return '\0';
  }
  bVar16 = param_1[4];
  uVar17 = (uint)bVar16;
  puVar1 = (ulonglong *)((int)param_3 + param_2);
  param_4 = param_4 - (int)param_3;
  uVar11 = (uint)(byte)(*param_1 + 1);
  if (*(int *)(param_1 + 0x108) == -1) {
    cVar10 = param_1[uVar11 + 8];
    do {
      uVar17 = (uint)(byte)((char)uVar17 + cVar10);
      cVar3 = param_1[uVar17 + 8];
      param_1[uVar17 + 8] = cVar10;
      param_1[uVar11 + 8] = cVar3;
      bVar14 = cVar3 + cVar10;
      uVar11 = (uint)(byte)((char)uVar11 + 1);
      bVar16 = *(byte *)param_3;
      param_3 = (ulonglong *)((int)param_3 + 1);
      cVar10 = param_1[uVar11 + 8];
      *(byte *)(param_4 + -1 + (int)param_3) = param_1[bVar14 + 8] ^ bVar16;
    } while (param_3 < puVar1);
  }
  else {
    iVar13 = *(int *)(param_1 + uVar11 * 4 + 8);
    if ((param_2 & 0xfffffffc) != 0) {
      if (((param_2 & 0xfffffff8) == 0) || ((DAT_032f16d0 >> 0x1a & 1) == 0)) {
        puVar2 = (ulonglong *)((int)param_3 + ((param_2 & 0xfffffffc) - 4));
        do {
          bVar16 = (char)uVar17 + (char)iVar13;
          iVar4 = *(int *)(param_1 + (uint)bVar16 * 4 + 8);
          *(int *)(param_1 + (uint)bVar16 * 4 + 8) = iVar13;
          *(int *)(param_1 + uVar11 * 4 + 8) = iVar4;
          cVar10 = (char)uVar11;
          iVar12 = *(int *)(param_1 + (uint)(byte)(cVar10 + 1) * 4 + 8);
          uVar11 = *(uint *)(param_1 + (iVar4 + iVar13 & 0xffU) * 4 + 8);
          bVar16 = bVar16 + (char)iVar12;
          iVar13 = *(int *)(param_1 + (uint)bVar16 * 4 + 8);
          *(int *)(param_1 + (uint)bVar16 * 4 + 8) = iVar12;
          *(int *)(param_1 + (uint)(byte)(cVar10 + 1) * 4 + 8) = iVar13;
          iVar4 = *(int *)(param_1 + (uint)(byte)(cVar10 + 2) * 4 + 8);
          uVar11 = uVar11 >> 8 | uVar11 << 0x18 |
                   *(uint *)(param_1 + (iVar13 + iVar12 & 0xffU) * 4 + 8);
          bVar16 = bVar16 + (char)iVar4;
          iVar13 = *(int *)(param_1 + (uint)bVar16 * 4 + 8);
          *(int *)(param_1 + (uint)bVar16 * 4 + 8) = iVar4;
          *(int *)(param_1 + (uint)(byte)(cVar10 + 2) * 4 + 8) = iVar13;
          iVar12 = *(int *)(param_1 + (uint)(byte)(cVar10 + 3) * 4 + 8);
          uVar15 = uVar11 >> 8 | uVar11 << 0x18 |
                   *(uint *)(param_1 + (iVar13 + iVar4 & 0xffU) * 4 + 8);
          uVar17 = (uint)(byte)(bVar16 + (char)iVar12);
          iVar13 = *(int *)(param_1 + uVar17 * 4 + 8);
          *(int *)(param_1 + uVar17 * 4 + 8) = iVar12;
          *(int *)(param_1 + (uint)(byte)(cVar10 + 3) * 4 + 8) = iVar13;
          uVar11 = (uint)(byte)(cVar10 + 4);
          uVar15 = uVar15 >> 8 | uVar15 << 0x18 |
                   *(uint *)(param_1 + (iVar13 + iVar12 & 0xffU) * 4 + 8);
          bVar18 = param_3 < puVar2;
          *(uint *)(param_4 + (int)param_3) = (uVar15 >> 8 | uVar15 << 0x18) ^ *(uint *)param_3;
          param_3 = (ulonglong *)((int)param_3 + 4);
          iVar13 = *(int *)(param_1 + uVar11 * 4 + 8);
        } while (bVar18);
      }
      else {
        *(uint *)(param_1 + 4) = (int)param_3 + ((param_2 & 0xfffffff8) - 8);
        uVar15 = (uint)(byte)(bVar16 + (char)iVar13);
        iVar4 = *(int *)(param_1 + uVar15 * 4 + 8);
        *(int *)(param_1 + uVar15 * 4 + 8) = iVar13;
        *(int *)(param_1 + uVar11 * 4 + 8) = iVar4;
        uVar11 = uVar11 + 1 & 0xff;
        uVar19 = *param_3;
        iVar12 = *(int *)(param_1 + uVar11 * 4 + 8);
        uVar17 = *(uint *)(param_1 + (iVar4 + iVar13 & 0xffU) * 4 + 8);
        while( true ) {
          bVar16 = (char)uVar15 + (char)iVar12;
          iVar13 = *(int *)(param_1 + (uint)bVar16 * 4 + 8);
          *(int *)(param_1 + (uint)bVar16 * 4 + 8) = iVar12;
          *(int *)(param_1 + uVar11 * 4 + 8) = iVar13;
          uVar11 = uVar11 + 1 & 0xff;
          iVar4 = *(int *)(param_1 + uVar11 * 4 + 8);
          uVar15 = *(uint *)(param_1 + (iVar13 + iVar12 & 0xffU) * 4 + 8);
          bVar16 = bVar16 + (char)iVar4;
          iVar13 = *(int *)(param_1 + (uint)bVar16 * 4 + 8);
          *(int *)(param_1 + (uint)bVar16 * 4 + 8) = iVar4;
          *(int *)(param_1 + uVar11 * 4 + 8) = iVar13;
          uVar11 = uVar11 + 1 & 0xff;
          iVar12 = *(int *)(param_1 + uVar11 * 4 + 8);
          uVar5 = *(uint *)(param_1 + (iVar13 + iVar4 & 0xffU) * 4 + 8);
          bVar16 = bVar16 + (char)iVar12;
          iVar13 = *(int *)(param_1 + (uint)bVar16 * 4 + 8);
          *(int *)(param_1 + (uint)bVar16 * 4 + 8) = iVar12;
          *(int *)(param_1 + uVar11 * 4 + 8) = iVar13;
          uVar11 = uVar11 + 1 & 0xff;
          iVar4 = *(int *)(param_1 + uVar11 * 4 + 8);
          uVar6 = *(uint *)(param_1 + (iVar13 + iVar12 & 0xffU) * 4 + 8);
          bVar16 = bVar16 + (char)iVar4;
          iVar13 = *(int *)(param_1 + (uint)bVar16 * 4 + 8);
          *(int *)(param_1 + (uint)bVar16 * 4 + 8) = iVar4;
          *(int *)(param_1 + uVar11 * 4 + 8) = iVar13;
          uVar11 = uVar11 + 1 & 0xff;
          iVar12 = *(int *)(param_1 + uVar11 * 4 + 8);
          uVar7 = *(uint *)(param_1 + (iVar13 + iVar4 & 0xffU) * 4 + 8);
          bVar16 = bVar16 + (char)iVar12;
          iVar13 = *(int *)(param_1 + (uint)bVar16 * 4 + 8);
          *(int *)(param_1 + (uint)bVar16 * 4 + 8) = iVar12;
          *(int *)(param_1 + uVar11 * 4 + 8) = iVar13;
          uVar11 = uVar11 + 1 & 0xff;
          iVar4 = *(int *)(param_1 + uVar11 * 4 + 8);
          uVar8 = *(uint *)(param_1 + (iVar13 + iVar12 & 0xffU) * 4 + 8);
          bVar16 = bVar16 + (char)iVar4;
          iVar13 = *(int *)(param_1 + (uint)bVar16 * 4 + 8);
          *(int *)(param_1 + (uint)bVar16 * 4 + 8) = iVar4;
          *(int *)(param_1 + uVar11 * 4 + 8) = iVar13;
          uVar11 = uVar11 + 1 & 0xff;
          iVar12 = *(int *)(param_1 + uVar11 * 4 + 8);
          uVar9 = *(uint *)(param_1 + (iVar13 + iVar4 & 0xffU) * 4 + 8);
          bVar16 = bVar16 + (char)iVar12;
          iVar4 = *(int *)(param_1 + (uint)bVar16 * 4 + 8);
          *(int *)(param_1 + (uint)bVar16 * 4 + 8) = iVar12;
          *(int *)(param_1 + uVar11 * 4 + 8) = iVar4;
          uVar11 = uVar11 + 1 & 0xff;
          uVar20 = uVar17 ^ uVar19 ^ (ulonglong)uVar15 << 8 ^ (ulonglong)uVar5 << 0x10 ^
                   (ulonglong)uVar6 << 0x18 ^ (ulonglong)uVar7 << 0x20 ^ (ulonglong)uVar8 << 0x28 ^
                   (ulonglong)uVar9 << 0x30;
          iVar13 = *(int *)(param_1 + uVar11 * 4 + 8);
          uVar5 = *(uint *)(param_1 + (iVar4 + iVar12 & 0xffU) * 4 + 8);
          uVar17 = (uint)bVar16;
          bVar18 = *(ulonglong **)(param_1 + 4) <= param_3;
          param_3 = param_3 + 1;
          if (bVar18) break;
          uVar15 = (uint)(byte)(bVar16 + (char)iVar13);
          iVar4 = *(int *)(param_1 + uVar15 * 4 + 8);
          *(int *)(param_1 + uVar15 * 4 + 8) = iVar13;
          *(int *)(param_1 + uVar11 * 4 + 8) = iVar4;
          uVar11 = uVar11 + 1 & 0xff;
          uVar19 = *param_3;
          *(ulonglong *)(param_4 + -8 + (int)param_3) = uVar20 ^ (ulonglong)uVar5 << 0x38;
          iVar12 = *(int *)(param_1 + uVar11 * 4 + 8);
          uVar17 = *(uint *)(param_1 + (iVar4 + iVar13 & 0xffU) * 4 + 8);
        }
        *(ulonglong *)(param_4 + -8 + (int)param_3) = uVar20 ^ (ulonglong)uVar5 << 0x38;
      }
      if (param_3 == puVar1) goto LAB_00ac310f;
    }
    do {
      uVar17 = (uint)(byte)((char)uVar17 + (char)iVar13);
      iVar4 = *(int *)(param_1 + uVar17 * 4 + 8);
      *(int *)(param_1 + uVar17 * 4 + 8) = iVar13;
      *(int *)(param_1 + uVar11 * 4 + 8) = iVar4;
      uVar15 = iVar4 + iVar13;
      uVar11 = (uint)(byte)((char)uVar11 + 1);
      bVar16 = *(byte *)param_3;
      param_3 = (ulonglong *)((int)param_3 + 1);
      iVar13 = *(int *)(param_1 + uVar11 * 4 + 8);
      *(byte *)(param_4 + -1 + (int)param_3) =
           (byte)*(undefined4 *)(param_1 + (uVar15 & 0xff) * 4 + 8) ^ bVar16;
    } while (param_3 < puVar1);
  }
LAB_00ac310f:
  cVar10 = (char)uVar11 + -1;
  *(uint *)(param_1 + 4) = uVar17;
  *param_1 = cVar10;
  return cVar10;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac33a0(byte *param_1,byte *param_2,int param_3,undefined4 param_4,undefined4 param_5,
                 undefined4 param_6,undefined4 *param_7,uint *param_8)

{
  byte bVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint uVar4;
  uint *local_34;
  int local_30;
  int local_2c;
  undefined4 local_28;
  undefined4 local_24;
  byte *local_20;
  undefined4 local_1c;
  undefined *local_18;
  undefined4 local_14;
  undefined4 local_10;
  byte local_c [4];
  undefined local_8;
  undefined local_7;
  undefined local_6;
  undefined local_5;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_34;
  local_20 = param_2;
  local_1c = param_6;
  local_34 = param_8;
  local_14 = param_5;
  uVar4 = *param_8;
  local_18 = (undefined *)((int)param_7 + 1);
  local_10 = param_4;
  uVar2 = *param_7;
  uVar3 = param_7[1];
  local_c[1] = *(undefined *)((int)param_7 + 1);
  local_c[2] = *(undefined *)((int)param_7 + 2);
  local_c[3] = *(undefined *)((int)param_7 + 3);
  local_7 = (char)((uint)uVar3 >> 8);
  local_6 = (char)((uint)uVar3 >> 0x10);
  local_30 = param_3;
  local_2c = 0;
  local_c[0] = *(byte *)param_7;
  local_8 = (char)*(undefined2 *)(param_7 + 1);
  local_5 = (char)((uint)uVar3 >> 0x18);
  local_28 = uVar2;
  local_24 = uVar3;
  if (param_3 == 0) {
    *param_8 = uVar4;
    ___security_check_cookie_4();
    return;
  }
  do {
    local_30 = local_30 + -1;
    if (uVar4 == 0) {
      FUN_00ac4560(&local_28,local_10,local_14,local_1c);
      local_c[1] = (char)((uint)local_28 >> 8);
      local_c[0] = (byte)local_28;
      local_c[2] = (char)((uint)local_28 >> 0x10);
      local_c[3] = (char)((uint)local_28 >> 0x18);
      local_7 = (char)((uint)local_24 >> 8);
      local_8 = (char)local_24;
      local_2c = local_2c + 1;
      local_6 = (char)((uint)local_24 >> 0x10);
      local_5 = (char)((uint)local_24 >> 0x18);
      uVar2 = local_28;
      uVar3 = local_24;
    }
    bVar1 = *param_1;
    param_1 = param_1 + 1;
    *local_20 = local_c[uVar4] ^ bVar1;
    local_20 = local_20 + 1;
    uVar4 = uVar4 + 1 & 7;
  } while (local_30 != 0);
  if (local_2c == 0) {
    *local_34 = uVar4;
    ___security_check_cookie_4();
    return;
  }
  *(char *)param_7 = (char)uVar2;
  *local_18 = (char)((uint)uVar2 >> 8);
  local_18[1] = (char)((uint)uVar2 >> 0x10);
  local_18[2] = (char)((uint)uVar2 >> 0x18);
  local_18[3] = (char)uVar3;
  local_18[4] = (char)((uint)uVar3 >> 8);
  local_18[5] = (char)((uint)uVar3 >> 0x10);
  local_18[6] = (char)((uint)uVar3 >> 0x18);
  *local_34 = uVar4;
  ___security_check_cookie_4();
  return;
}



void FUN_00ac35c0(void)

{
  return;
}



void FUN_00ac3ce0(void)

{
  return;
}



void FUN_00ac4400(uint *param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  uVar1 = *param_1 << 4 | *param_1 >> 0x1c;
  uVar2 = (uVar1 ^ param_1[1]) & 0xf0f0f0f0;
  uVar1 = uVar1 ^ uVar2;
  uVar2 = param_1[1] ^ uVar2;
  uVar2 = uVar2 << 0x14 | uVar2 >> 0xc;
  uVar3 = (uVar2 ^ uVar1) & 0xfff0000f;
  uVar2 = uVar2 ^ uVar3;
  uVar1 = uVar1 ^ uVar3;
  uVar2 = uVar2 << 0xe | uVar2 >> 0x12;
  uVar3 = (uVar2 ^ uVar1) & 0x33333333;
  uVar2 = uVar2 ^ uVar3;
  uVar1 = uVar1 ^ uVar3;
  uVar1 = uVar1 << 0x16 | uVar1 >> 10;
  uVar3 = (uVar1 ^ uVar2) & 0x3fc03fc;
  uVar1 = uVar1 ^ uVar3;
  uVar2 = uVar2 ^ uVar3;
  uVar1 = uVar1 << 9 | uVar1 >> 0x17;
  uVar3 = (uVar1 ^ uVar2) & 0xaaaaaaaa;
  uVar1 = uVar1 ^ uVar3;
  uVar2 = uVar2 ^ uVar3;
  uVar2 = uVar2 << 1 | (uint)((int)uVar2 < 0);
  if (param_3 == 0) {
    FUN_00ac3ce0();
  }
  else {
    FUN_00ac35c0();
  }
  uVar3 = uVar1 >> 1 | (uint)((uVar1 & 1) != 0) << 0x1f;
  uVar1 = (uVar2 ^ uVar3) & 0xaaaaaaaa;
  uVar2 = uVar2 ^ uVar1;
  uVar3 = uVar3 ^ uVar1;
  uVar1 = uVar2 << 0x17 | uVar2 >> 9;
  uVar2 = (uVar1 ^ uVar3) & 0x3fc03fc;
  uVar1 = uVar1 ^ uVar2;
  uVar3 = uVar3 ^ uVar2;
  uVar1 = uVar1 << 10 | uVar1 >> 0x16;
  uVar2 = (uVar1 ^ uVar3) & 0x33333333;
  uVar1 = uVar1 ^ uVar2;
  uVar3 = uVar3 ^ uVar2;
  uVar2 = uVar3 << 0x12 | uVar3 >> 0xe;
  uVar3 = (uVar2 ^ uVar1) & 0xfff0000f;
  uVar2 = uVar2 ^ uVar3;
  uVar1 = uVar1 ^ uVar3;
  uVar2 = uVar2 << 0xc | uVar2 >> 0x14;
  uVar3 = (uVar2 ^ uVar1) & 0xf0f0f0f0;
  *param_1 = (uVar1 ^ uVar3) >> 4 | uVar1 << 0x1c;
  param_1[1] = uVar2 ^ uVar3;
  return;
}



void FUN_00ac4500(undefined4 *param_1,undefined4 param_2,int param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar1 = *param_1;
  uVar2 = param_1[1];
  if (param_3 == 0) {
    FUN_00ac3ce0();
  }
  else {
    FUN_00ac35c0();
  }
  *param_1 = uVar2;
  param_1[1] = uVar1;
  return;
}



void FUN_00ac4560(uint *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  uVar2 = *param_1 << 4 | *param_1 >> 0x1c;
  uVar3 = (uVar2 ^ param_1[1]) & 0xf0f0f0f0;
  uVar2 = uVar2 ^ uVar3;
  uVar3 = param_1[1] ^ uVar3;
  uVar3 = uVar3 << 0x14 | uVar3 >> 0xc;
  uVar1 = (uVar3 ^ uVar2) & 0xfff0000f;
  uVar3 = uVar3 ^ uVar1;
  uVar2 = uVar2 ^ uVar1;
  uVar1 = uVar3 << 0xe | uVar3 >> 0x12;
  uVar3 = (uVar1 ^ uVar2) & 0x33333333;
  uVar1 = uVar1 ^ uVar3;
  uVar2 = uVar2 ^ uVar3;
  uVar2 = uVar2 << 0x16 | uVar2 >> 10;
  uVar3 = (uVar2 ^ uVar1) & 0x3fc03fc;
  uVar2 = uVar2 ^ uVar3;
  uVar1 = uVar1 ^ uVar3;
  uVar2 = uVar2 << 9 | uVar2 >> 0x17;
  uVar3 = (uVar2 ^ uVar1) & 0xaaaaaaaa;
  uVar2 = uVar2 ^ uVar3;
  uVar1 = uVar1 ^ uVar3;
  param_1[1] = uVar1 >> 2 | uVar1 << 0x1e;
  *param_1 = uVar2 >> 3 | uVar2 << 0x1d;
  FUN_00ac4500(param_1,param_2,1);
  FUN_00ac4500(param_1,param_3,0);
  FUN_00ac4500(param_1,param_4,1);
  uVar1 = param_1[1] << 2 | param_1[1] >> 0x1e;
  uVar2 = *param_1 << 3 | *param_1 >> 0x1d;
  uVar3 = (uVar2 ^ uVar1) & 0xaaaaaaaa;
  uVar2 = uVar2 ^ uVar3;
  uVar1 = uVar1 ^ uVar3;
  uVar2 = uVar2 << 0x17 | uVar2 >> 9;
  uVar3 = (uVar2 ^ uVar1) & 0x3fc03fc;
  uVar2 = uVar2 ^ uVar3;
  uVar1 = uVar1 ^ uVar3;
  uVar2 = uVar2 << 10 | uVar2 >> 0x16;
  uVar3 = (uVar2 ^ uVar1) & 0x33333333;
  uVar2 = uVar2 ^ uVar3;
  uVar1 = uVar1 ^ uVar3;
  uVar3 = uVar1 << 0x12 | uVar1 >> 0xe;
  uVar1 = (uVar3 ^ uVar2) & 0xfff0000f;
  uVar3 = uVar3 ^ uVar1;
  uVar2 = uVar2 ^ uVar1;
  uVar3 = uVar3 << 0xc | uVar3 >> 0x14;
  uVar1 = (uVar3 ^ uVar2) & 0xf0f0f0f0;
  *param_1 = (uVar2 ^ uVar1) >> 4 | uVar2 << 0x1c;
  param_1[1] = uVar3 ^ uVar1;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac55e0(int param_1,byte *param_2,uint param_3,uint param_4,undefined4 param_5,
                 undefined4 param_6,undefined4 param_7,uint *param_8,int param_9)

{
  byte *pbVar1;
  uint uVar2;
  byte bVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  byte bVar8;
  byte bVar12;
  uint uVar13;
  uint uVar14;
  uint local_40;
  uint local_3c;
  uint local_38;
  uint local_34;
  uint local_30;
  uint local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined *local_1c;
  uint *local_18;
  undefined4 local_14;
  undefined4 local_10;
  byte local_c;
  byte local_b;
  byte local_a;
  byte local_9;
  byte local_8;
  byte local_7;
  byte local_6;
  byte local_5;
  uint local_4;
  byte bVar9;
  byte bVar10;
  byte bVar11;
  
  local_4 = DAT_0323f878 ^ (uint)&local_40;
  local_28 = param_6;
  local_3c = param_4;
  local_20 = param_5;
  uVar14 = param_3 + 7 >> 3;
  local_24 = param_7;
  local_18 = param_8;
  if ((int)param_3 < 0x41) {
    local_1c = (undefined *)((int)param_8 + 1);
    uVar5 = *param_8;
    local_40 = param_8[1];
    uVar7 = uVar5;
    if (param_9 == 0) {
      if (uVar14 <= param_4) {
        do {
          local_3c = local_3c - uVar14;
          local_30 = uVar5;
          local_2c = local_40;
          FUN_00ac4560(&local_30,local_20,local_28,local_24);
          uVar7 = 0;
          uVar4 = 0;
          param_1 = param_1 + uVar14;
          local_34 = 0;
          local_38 = 0;
          switch(uVar14) {
          case 8:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar7 = (uint)*pbVar1 << 0x18;
          case 7:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar7 = uVar7 | (uint)*pbVar1 << 0x10;
          case 6:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar7 = uVar7 | (uint)*pbVar1 << 8;
          case 5:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            local_34 = uVar7 | *pbVar1;
          case 4:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar4 = (uint)*pbVar1 << 0x18;
          case 3:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar4 = uVar4 | (uint)*pbVar1 << 0x10;
          case 2:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar4 = uVar4 | (uint)*pbVar1 << 8;
          case 1:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            local_38 = uVar4 | *pbVar1;
          default:
            param_1 = param_1 + uVar14;
            uVar7 = local_40;
            uVar4 = local_38;
            if ((param_3 != 0x20) && (uVar7 = local_38, uVar4 = local_34, param_3 != 0x40)) {
              local_b = (byte)(local_38 >> 8);
              local_c = (byte)local_38;
              local_9 = (byte)(local_38 >> 0x18);
              local_a = (byte)(local_38 >> 0x10);
              local_7 = (byte)(local_34 >> 8);
              local_10 = local_40;
              local_8 = (byte)local_34;
              uVar7 = param_3 & 0x80000007;
              local_6 = (byte)(local_34 >> 0x10);
              local_5 = (byte)(local_34 >> 0x18);
              if ((int)uVar7 < 0) {
                uVar7 = (uVar7 - 1 | 0xfffffff8) + 1;
              }
              local_14 = uVar5;
              _memmove(&local_14,
                       (void *)((int)&local_14 + ((int)(param_3 + ((int)param_3 >> 0x1f & 7U)) >> 3)
                               ),(uVar7 != 0) + 8);
              if (uVar7 != 0) {
                bVar12 = (byte)uVar7;
                bVar3 = 8 - bVar12;
                local_14._0_2_ =
                     CONCAT11(local_14._1_1_ << (bVar12 & 0x1f) | local_14._2_1_ >> (bVar3 & 0x1f),
                              (char)local_14 << (bVar12 & 0x1f) | local_14._1_1_ >> (bVar3 & 0x1f));
                local_14._0_3_ =
                     CONCAT12(local_14._2_1_ << (bVar12 & 0x1f) | local_14._3_1_ >> (bVar3 & 0x1f),
                              (undefined2)local_14);
                local_14 = CONCAT13(local_14._3_1_ << (bVar12 & 0x1f) |
                                    (byte)local_10 >> (bVar3 & 0x1f),(undefined3)local_14);
                local_10._0_2_ =
                     CONCAT11(local_10._1_1_ << (bVar12 & 0x1f) | local_10._2_1_ >> (bVar3 & 0x1f),
                              (byte)local_10 << (bVar12 & 0x1f) | local_10._1_1_ >> (bVar3 & 0x1f));
                local_10._0_3_ =
                     CONCAT12(local_10._2_1_ << (bVar12 & 0x1f) | local_10._3_1_ >> (bVar3 & 0x1f),
                              (undefined2)local_10);
                local_10 = CONCAT13(local_10._3_1_ << (bVar12 & 0x1f) | local_c >> (bVar3 & 0x1f),
                                    (undefined3)local_10);
              }
              local_40 = local_10;
              uVar7 = local_14;
              uVar4 = local_40;
            }
          }
          local_40 = uVar4;
          uVar5 = local_38 ^ local_30;
          uVar4 = local_34 ^ local_2c;
          param_2 = param_2 + uVar14;
          switch(uVar14) {
          case 8:
            param_2 = param_2 + -1;
            *param_2 = (byte)(uVar4 >> 0x18);
          case 7:
            param_2 = param_2 + -1;
            *param_2 = (byte)(uVar4 >> 0x10);
          case 6:
            param_2 = param_2 + -1;
            *param_2 = (byte)(uVar4 >> 8);
          case 5:
            param_2 = param_2 + -1;
            *param_2 = (byte)uVar4;
          case 4:
            param_2 = param_2 + -1;
            *param_2 = (byte)(uVar5 >> 0x18);
          case 3:
            param_2 = param_2 + -1;
            *param_2 = (byte)(uVar5 >> 0x10);
          case 2:
            param_2 = param_2 + -1;
            *param_2 = (byte)(uVar5 >> 8);
          case 1:
            param_2 = param_2 + -1;
            *param_2 = (byte)uVar5;
          }
          param_2 = param_2 + uVar14;
          uVar5 = uVar7;
        } while (uVar14 <= local_3c);
      }
    }
    else if (uVar14 <= param_4) {
      do {
        local_3c = local_3c - uVar14;
        local_30 = uVar5;
        local_2c = local_40;
        FUN_00ac4560(&local_30,local_20,local_28,local_24);
        param_1 = param_1 + uVar14;
        uVar6 = 0;
        uVar4 = 0;
        switch(uVar14) {
        case 8:
          pbVar1 = (byte *)(param_1 + -1);
          param_1 = param_1 + -1;
          uVar6 = (uint)*pbVar1 << 0x18;
        case 7:
          pbVar1 = (byte *)(param_1 + -1);
          param_1 = param_1 + -1;
          uVar6 = uVar6 | (uint)*pbVar1 << 0x10;
        case 6:
          pbVar1 = (byte *)(param_1 + -1);
          param_1 = param_1 + -1;
          uVar6 = uVar6 | (uint)*pbVar1 << 8;
        case 5:
          pbVar1 = (byte *)(param_1 + -1);
          param_1 = param_1 + -1;
          uVar6 = uVar6 | *pbVar1;
        case 4:
          pbVar1 = (byte *)(param_1 + -1);
          param_1 = param_1 + -1;
          uVar4 = (uint)*pbVar1 << 0x18;
        case 3:
          pbVar1 = (byte *)(param_1 + -1);
          param_1 = param_1 + -1;
          uVar4 = uVar4 | (uint)*pbVar1 << 0x10;
        case 2:
          pbVar1 = (byte *)(param_1 + -1);
          param_1 = param_1 + -1;
          uVar4 = uVar4 | (uint)*pbVar1 << 8;
        case 1:
          pbVar1 = (byte *)(param_1 + -1);
          param_1 = param_1 + -1;
          uVar4 = uVar4 | *pbVar1;
        }
        uVar4 = uVar4 ^ local_30;
        uVar6 = uVar6 ^ local_2c;
        param_1 = param_1 + uVar14;
        param_2 = param_2 + uVar14;
        bVar8 = (byte)(uVar4 >> 8);
        bVar3 = (byte)(uVar4 >> 0x18);
        bVar9 = (byte)(uVar6 >> 8);
        bVar10 = (byte)(uVar6 >> 0x10);
        bVar12 = (byte)(uVar6 >> 0x18);
        bVar11 = (byte)(uVar4 >> 0x10);
        switch(uVar14) {
        case 8:
          param_2 = param_2 + -1;
          *param_2 = bVar12;
        case 7:
          param_2 = param_2 + -1;
          *param_2 = bVar10;
        case 6:
          param_2 = param_2 + -1;
          *param_2 = bVar9;
        case 5:
          param_2 = param_2 + -1;
          *param_2 = (byte)uVar6;
        case 4:
          param_2 = param_2 + -1;
          *param_2 = bVar3;
        case 3:
          param_2 = param_2 + -1;
          *param_2 = bVar11;
        case 2:
          param_2 = param_2 + -1;
          *param_2 = bVar8;
        case 1:
          param_2 = param_2 + -1;
          *param_2 = (byte)uVar4;
        }
        param_2 = param_2 + uVar14;
        uVar7 = local_40;
        uVar2 = uVar4;
        if ((param_3 != 0x20) && (uVar7 = uVar4, uVar2 = uVar6, param_3 != 0x40)) {
          local_10 = local_40;
          uVar13 = param_3 & 0x80000007;
          if ((int)uVar13 < 0) {
            uVar13 = (uVar13 - 1 | 0xfffffff8) + 1;
          }
          local_14 = uVar5;
          local_c = (byte)uVar4;
          local_b = bVar8;
          local_a = bVar11;
          local_9 = bVar3;
          local_8 = (byte)uVar6;
          local_7 = bVar9;
          local_6 = bVar10;
          local_5 = bVar12;
          _memmove(&local_14,
                   (void *)((int)&local_14 + ((int)(param_3 + ((int)param_3 >> 0x1f & 7U)) >> 3)),
                   (uVar13 != 0) + 8);
          uVar7 = local_14;
          uVar2 = local_10;
          if (uVar13 != 0) {
            bVar12 = (byte)uVar13;
            bVar3 = 8 - bVar12;
            local_14._0_2_ =
                 CONCAT11(local_14._1_1_ << (bVar12 & 0x1f) | local_14._2_1_ >> (bVar3 & 0x1f),
                          (char)local_14 << (bVar12 & 0x1f) | local_14._1_1_ >> (bVar3 & 0x1f));
            local_14._0_3_ =
                 CONCAT12(local_14._2_1_ << (bVar12 & 0x1f) | local_14._3_1_ >> (bVar3 & 0x1f),
                          (undefined2)local_14);
            local_14 = CONCAT13(local_14._3_1_ << (bVar12 & 0x1f) | (byte)local_10 >> (bVar3 & 0x1f)
                                ,(undefined3)local_14);
            local_10._0_2_ =
                 CONCAT11(local_10._1_1_ << (bVar12 & 0x1f) | local_10._2_1_ >> (bVar3 & 0x1f),
                          (byte)local_10 << (bVar12 & 0x1f) | local_10._1_1_ >> (bVar3 & 0x1f));
            local_10._0_3_ =
                 CONCAT12(local_10._2_1_ << (bVar12 & 0x1f) | local_10._3_1_ >> (bVar3 & 0x1f),
                          (undefined2)local_10);
            local_10 = CONCAT13(local_10._3_1_ << (bVar12 & 0x1f) | local_c >> (bVar3 & 0x1f),
                                (undefined3)local_10);
            uVar7 = local_14;
            uVar2 = local_10;
          }
        }
        local_40 = uVar2;
        uVar5 = uVar7;
      } while (uVar14 <= local_3c);
    }
    *(char *)local_18 = (char)uVar7;
    *local_1c = (char)(uVar7 >> 8);
    local_1c[1] = (char)(uVar7 >> 0x10);
    local_1c[2] = (char)(uVar7 >> 0x18);
    local_1c[3] = (char)local_40;
    local_1c[4] = (char)(local_40 >> 8);
    local_1c[5] = (char)(local_40 >> 0x10);
    local_1c[6] = (char)(local_40 >> 0x18);
  }
  ___security_check_cookie_4();
  return;
}



void FUN_00ac5d00(byte *param_1)

{
  *param_1 = (&DAT_00dc2e18)[*param_1];
  param_1[1] = (&DAT_00dc2e18)[param_1[1]];
  param_1[2] = (&DAT_00dc2e18)[param_1[2]];
  param_1[3] = (&DAT_00dc2e18)[param_1[3]];
  param_1[4] = (&DAT_00dc2e18)[param_1[4]];
  param_1[5] = (&DAT_00dc2e18)[param_1[5]];
  param_1[6] = (&DAT_00dc2e18)[param_1[6]];
  param_1[7] = (&DAT_00dc2e18)[param_1[7]];
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac5d80(uint *param_1,uint *param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  int *local_4;
  
  uVar6 = (param_1[1] >> 4 ^ *param_1) & 0xf0f0f0f;
  uVar3 = *param_1 ^ uVar6;
  uVar6 = param_1[1] ^ uVar6 << 4;
  uVar7 = (uVar3 << 0x12 ^ uVar3) & 0xcccc0000;
  uVar8 = (uVar6 << 0x12 ^ uVar6) & 0xcccc0000;
  uVar3 = uVar3 ^ uVar7 >> 0x12 ^ uVar7;
  uVar6 = uVar6 ^ uVar8 >> 0x12 ^ uVar8;
  uVar7 = (uVar6 >> 1 ^ uVar3) & 0x55555555;
  uVar3 = uVar3 ^ uVar7;
  uVar6 = uVar6 ^ uVar7 * 2;
  uVar7 = (uVar3 >> 8 ^ uVar6) & 0xff00ff;
  uVar6 = uVar6 ^ uVar7;
  uVar3 = uVar3 ^ uVar7 << 8;
  uVar7 = (uVar6 >> 1 ^ uVar3) & 0x55555555;
  uVar3 = uVar3 ^ uVar7;
  uVar6 = uVar6 ^ uVar7 * 2;
  uVar6 = (uVar6 >> 0xc & 0xff0 | uVar3 & 0xf000000f) >> 4 | (uVar6 & 0xff) << 0x10 | uVar6 & 0xff00
  ;
  uVar3 = uVar3 & 0xfffffff;
  local_4 = &DAT_00dc379c;
  do {
    if (local_4[-1] == 0) {
      iVar1 = 0x1b;
      uVar7 = uVar3 >> 1;
      iVar2 = 0x1b;
      uVar8 = uVar6 >> 1;
    }
    else {
      iVar1 = 0x1a;
      uVar7 = uVar3 >> 2;
      iVar2 = 0x1a;
      uVar8 = uVar6 >> 2;
    }
    uVar5 = uVar6 << iVar2 | uVar8;
    uVar9 = uVar3 << iVar1 | uVar7;
    uVar7 = uVar3 << iVar1 & 0xfffffff | uVar7;
    uVar4 = uVar7 >> 1;
    uVar8 = uVar6 << iVar2 & 0xfffffff | uVar8;
    uVar3 = *(uint *)(&DAT_00dc3298 +
                     (((uVar4 & 0x7000000 | uVar9 & 0xc00000) >> 1 | uVar9 & 0x100000) >> 0x14) * 4)
            | *(uint *)(&DAT_00dc3198 + ((uVar4 & 0x60000 | uVar9 & 0x1e000) >> 0xd) * 4) |
            *(uint *)(&DAT_00dc3098 + ((uVar4 & 0xf00 | uVar9 & 0xc0) >> 6) * 4) |
            *(uint *)(&DAT_00dc2f98 + (uVar9 & 0x3f) * 4);
    uVar6 = uVar8 >> 1;
    uVar5 = *(uint *)(&DAT_00dc3698 + ((uVar6 & 0x6000000 | uVar5 & 0x1e00000) >> 0x15) * 4) |
            *(uint *)(&DAT_00dc3498 + ((uVar6 & 0x1e00 | uVar5 & 0x180) >> 7) * 4) |
            *(uint *)(&DAT_00dc3598 + (uVar8 >> 0xf & 0x3f) * 4) |
            *(uint *)(&DAT_00dc3398 + (uVar5 & 0x3f) * 4);
    *param_2 = (uVar5 << 0x10) >> 0x1e | (uVar3 & 0xffff | uVar5 << 0x10) << 2;
    param_2[1] = uVar5 >> 0x1a | (uVar3 >> 0x10 | uVar5 & 0xffff0000) << 6;
    if (*local_4 == 0) {
      uVar4 = uVar7 << 0x1b | uVar4;
      uVar6 = uVar8 << 0x1b | uVar6;
    }
    else {
      uVar4 = uVar7 << 0x1a | uVar7 >> 2;
      uVar6 = uVar8 << 0x1a | uVar8 >> 2;
    }
    uVar9 = uVar4 & 0xfffffff;
    uVar7 = uVar9 >> 1;
    uVar5 = uVar6 & 0xfffffff;
    uVar3 = *(uint *)(&DAT_00dc3298 +
                     (((uVar7 & 0x7000000 | uVar4 & 0xc00000) >> 1 | uVar4 & 0x100000) >> 0x14) * 4)
            | *(uint *)(&DAT_00dc3198 + ((uVar7 & 0x60000 | uVar4 & 0x1e000) >> 0xd) * 4) |
            *(uint *)(&DAT_00dc3098 + ((uVar7 & 0xf00 | uVar4 & 0xc0) >> 6) * 4) |
            *(uint *)(&DAT_00dc2f98 + (uVar4 & 0x3f) * 4);
    uVar8 = uVar5 >> 1;
    uVar6 = *(uint *)(&DAT_00dc3698 + ((uVar8 & 0x6000000 | uVar6 & 0x1e00000) >> 0x15) * 4) |
            *(uint *)(&DAT_00dc3498 + ((uVar8 & 0x1e00 | uVar6 & 0x180) >> 7) * 4) |
            *(uint *)(&DAT_00dc3598 + (uVar5 >> 0xf & 0x3f) * 4) |
            *(uint *)(&DAT_00dc3398 + (uVar6 & 0x3f) * 4);
    param_2[2] = (uVar6 << 0x10) >> 0x1e | (uVar3 & 0xffff | uVar6 << 0x10) << 2;
    param_2[3] = uVar6 >> 0x1a | (uVar3 >> 0x10 | uVar6 & 0xffff0000) << 6;
    if (local_4[1] == 0) {
      uVar7 = uVar9 << 0x1b | uVar7;
      uVar8 = uVar5 << 0x1b | uVar8;
    }
    else {
      uVar7 = uVar9 << 0x1a | uVar9 >> 2;
      uVar8 = uVar5 << 0x1a | uVar5 >> 2;
    }
    uVar9 = uVar7 & 0xfffffff;
    uVar4 = uVar9 >> 1;
    uVar5 = uVar8 & 0xfffffff;
    uVar3 = *(uint *)(&DAT_00dc3298 +
                     (((uVar4 & 0x7000000 | uVar7 & 0xc00000) >> 1 | uVar7 & 0x100000) >> 0x14) * 4)
            | *(uint *)(&DAT_00dc3198 + ((uVar4 & 0x60000 | uVar7 & 0x1e000) >> 0xd) * 4) |
            *(uint *)(&DAT_00dc3098 + ((uVar4 & 0xf00 | uVar7 & 0xc0) >> 6) * 4) |
            *(uint *)(&DAT_00dc2f98 + (uVar7 & 0x3f) * 4);
    uVar7 = uVar5 >> 1;
    uVar6 = *(uint *)(&DAT_00dc3698 + ((uVar7 & 0x6000000 | uVar8 & 0x1e00000) >> 0x15) * 4) |
            *(uint *)(&DAT_00dc3498 + ((uVar7 & 0x1e00 | uVar8 & 0x180) >> 7) * 4) |
            *(uint *)(&DAT_00dc3598 + (uVar5 >> 0xf & 0x3f) * 4) |
            *(uint *)(&DAT_00dc3398 + (uVar8 & 0x3f) * 4);
    param_2[4] = (uVar6 << 0x10) >> 0x1e | (uVar3 & 0xffff | uVar6 << 0x10) << 2;
    param_2[5] = uVar6 >> 0x1a | (uVar3 >> 0x10 | uVar6 & 0xffff0000) << 6;
    if (local_4[2] == 0) {
      uVar4 = uVar9 << 0x1b | uVar4;
      uVar7 = uVar5 << 0x1b | uVar7;
    }
    else {
      uVar4 = uVar9 << 0x1a | uVar9 >> 2;
      uVar7 = uVar5 << 0x1a | uVar5 >> 2;
    }
    uVar3 = uVar4 & 0xfffffff;
    uVar8 = uVar3 >> 1;
    uVar6 = uVar7 & 0xfffffff;
    uVar8 = *(uint *)(&DAT_00dc3298 +
                     (((uVar8 & 0x7000000 | uVar4 & 0xc00000) >> 1 | uVar4 & 0x100000) >> 0x14) * 4)
            | *(uint *)(&DAT_00dc3198 + ((uVar8 & 0x60000 | uVar4 & 0x1e000) >> 0xd) * 4) |
            *(uint *)(&DAT_00dc3098 + ((uVar8 & 0xf00 | uVar4 & 0xc0) >> 6) * 4) |
            *(uint *)(&DAT_00dc2f98 + (uVar4 & 0x3f) * 4);
    uVar7 = *(uint *)(&DAT_00dc3698 + ((uVar6 >> 1 & 0x6000000 | uVar7 & 0x1e00000) >> 0x15) * 4) |
            *(uint *)(&DAT_00dc3498 + ((uVar6 >> 1 & 0x1e00 | uVar7 & 0x180) >> 7) * 4) |
            *(uint *)(&DAT_00dc3598 + (uVar6 >> 0xf & 0x3f) * 4) |
            *(uint *)(&DAT_00dc3398 + (uVar7 & 0x3f) * 4);
    param_2[6] = (uVar7 << 0x10) >> 0x1e | (uVar8 & 0xffff | uVar7 << 0x10) << 2;
    param_2[7] = uVar7 >> 0x1a | (uVar8 >> 0x10 | uVar7 & 0xffff0000) << 6;
    local_4 = local_4 + 4;
    param_2 = param_2 + 8;
  } while ((int)local_4 < 0xdc37dc);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac6350(undefined4 *param_1,undefined *param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 local_8;
  undefined4 local_4;
  
  local_8 = *param_1;
  local_4 = param_1[1];
  FUN_00ac4400(&local_8,param_3,param_4);
  *param_2 = (char)local_8;
  param_2[1] = (char)((uint)local_8 >> 8);
  param_2[2] = (char)((uint)local_8 >> 0x10);
  param_2[3] = (char)((uint)local_8 >> 0x18);
  param_2[4] = (char)local_4;
  param_2[5] = (char)((uint)local_4 >> 8);
  param_2[6] = (char)((uint)local_4 >> 0x10);
  param_2[7] = (char)((uint)local_4 >> 0x18);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac6400(byte *param_1,byte *param_2,int param_3,undefined4 param_4,undefined4 *param_5,
                 uint *param_6)

{
  undefined4 uVar1;
  uint uVar2;
  int local_28;
  uint *local_24;
  int local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined *local_10;
  byte local_c [4];
  undefined local_8;
  undefined local_7;
  undefined local_6;
  undefined local_5;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_28;
  local_14 = param_4;
  local_24 = param_6;
  uVar2 = *param_6;
  local_20 = param_3;
  local_10 = (undefined *)((int)param_5 + 1);
  uVar1 = *param_5;
  local_18 = param_5[1];
  local_c[1] = *(undefined *)((int)param_5 + 1);
  local_c[0] = *(byte *)param_5;
  local_c[2] = *(undefined *)((int)param_5 + 2);
  local_c[3] = *(undefined *)((int)param_5 + 3);
  local_8 = (char)*(undefined2 *)(param_5 + 1);
  local_28 = 0;
  local_7 = (char)((uint)local_18 >> 8);
  local_6 = (char)((uint)local_18 >> 0x10);
  local_5 = (char)((uint)local_18 >> 0x18);
  local_1c = uVar1;
  if (param_3 == 0) {
    *param_6 = uVar2;
    ___security_check_cookie_4();
    return;
  }
  do {
    local_20 = local_20 + -1;
    if (uVar2 == 0) {
      FUN_00ac4400(&local_1c,local_14,1);
      local_c[1] = (char)((uint)local_1c >> 8);
      local_c[2] = (char)((uint)local_1c >> 0x10);
      local_c[3] = (char)((uint)local_1c >> 0x18);
      local_8 = (char)local_18;
      local_28 = local_28 + 1;
      local_c[0] = (byte)local_1c;
      local_7 = (char)((uint)local_18 >> 8);
      local_6 = (char)((uint)local_18 >> 0x10);
      local_5 = (char)((uint)local_18 >> 0x18);
      uVar1 = local_1c;
    }
    *param_2 = local_c[uVar2] ^ *param_1;
    param_1 = param_1 + 1;
    param_2 = param_2 + 1;
    uVar2 = uVar2 + 1 & 7;
  } while (local_20 != 0);
  if (local_28 != 0) {
    *(char *)param_5 = (char)uVar1;
    *local_10 = (char)((uint)uVar1 >> 8);
    local_10[1] = (char)((uint)uVar1 >> 0x10);
    local_10[2] = (char)((uint)uVar1 >> 0x18);
    local_10[3] = (char)local_18;
    local_10[4] = (char)((uint)local_18 >> 8);
    local_10[5] = (char)((uint)local_18 >> 0x10);
    local_10[6] = (char)((uint)local_18 >> 0x18);
    *local_24 = uVar2;
    ___security_check_cookie_4();
    return;
  }
  *local_24 = uVar2;
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac65f0(byte *param_1,byte *param_2,int param_3,undefined4 param_4,undefined4 *param_5,
                 uint *param_6,int param_7)

{
  byte bVar1;
  byte bVar2;
  uint uVar3;
  undefined4 local_8;
  undefined4 local_4;
  
  uVar3 = *param_6;
  if (param_7 == 0) {
    if (param_3 != 0) {
      do {
        param_3 = param_3 + -1;
        if (uVar3 == 0) {
          local_8 = *param_5;
          local_4 = param_5[1];
          FUN_00ac4400(&local_8,param_4,1);
          *(char *)param_5 = (char)local_8;
          *(char *)((int)param_5 + 1) = (char)((uint)local_8 >> 8);
          *(char *)((int)param_5 + 2) = (char)((uint)local_8 >> 0x10);
          *(char *)((int)param_5 + 3) = (char)((uint)local_8 >> 0x18);
          *(char *)(param_5 + 1) = (char)local_4;
          *(char *)((int)param_5 + 5) = (char)((uint)local_4 >> 8);
          *(char *)((int)param_5 + 6) = (char)((uint)local_4 >> 0x10);
          *(char *)((int)param_5 + 7) = (char)((uint)local_4 >> 0x18);
        }
        bVar2 = *param_1;
        param_1 = param_1 + 1;
        bVar1 = *(byte *)(uVar3 + (int)param_5);
        *(byte *)(uVar3 + (int)param_5) = bVar2;
        *param_2 = bVar2 ^ bVar1;
        param_2 = param_2 + 1;
        uVar3 = uVar3 + 1 & 7;
      } while (param_3 != 0);
    }
  }
  else if (param_3 != 0) {
    do {
      param_3 = param_3 + -1;
      if (uVar3 == 0) {
        local_8 = *param_5;
        local_4 = param_5[1];
        FUN_00ac4400(&local_8,param_4,1);
        *(char *)param_5 = (char)local_8;
        *(char *)((int)param_5 + 1) = (char)((uint)local_8 >> 8);
        *(char *)((int)param_5 + 2) = (char)((uint)local_8 >> 0x10);
        *(char *)((int)param_5 + 3) = (char)((uint)local_8 >> 0x18);
        *(char *)(param_5 + 1) = (char)local_4;
        *(char *)((int)param_5 + 5) = (char)((uint)local_4 >> 8);
        *(char *)((int)param_5 + 6) = (char)((uint)local_4 >> 0x10);
        *(char *)((int)param_5 + 7) = (char)((uint)local_4 >> 0x18);
      }
      bVar2 = *param_1 ^ *(byte *)(uVar3 + (int)param_5);
      param_1 = param_1 + 1;
      *param_2 = bVar2;
      *(byte *)(uVar3 + (int)param_5) = bVar2;
      param_2 = param_2 + 1;
      uVar3 = uVar3 + 1 & 7;
    } while (param_3 != 0);
    *param_6 = uVar3;
    return;
  }
  *param_6 = uVar3;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac67e0(int param_1,undefined *param_2,uint param_3,uint param_4,undefined4 param_5,
                 uint *param_6,int param_7)

{
  byte *pbVar1;
  uint uVar2;
  uint uVar3;
  byte bVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  byte bVar8;
  uint uVar9;
  byte bVar10;
  uint uVar11;
  bool bVar12;
  uint local_28;
  uint local_24;
  uint local_20;
  uint local_18;
  uint local_14;
  undefined4 local_10;
  undefined4 local_c;
  uint local_8;
  uint local_4;
  
  local_4 = 0xac67ea;
  iVar5 = (int)(param_3 + ((int)param_3 >> 0x1f & 7U)) >> 3;
  uVar11 = (int)(param_3 + 7 + ((int)(param_3 + 7) >> 0x1f & 7U)) >> 3;
  uVar6 = param_3 & 0x80000007;
  local_24 = param_4;
  if ((int)uVar6 < 0) {
    uVar6 = (uVar6 - 1 | 0xfffffff8) + 1;
  }
  if (param_3 - 1 < 0x40) {
    local_28 = *param_6;
    uVar7 = param_6[1];
    bVar8 = (byte)uVar6;
    if (param_7 == 0) {
      bVar12 = uVar11 <= param_4;
      param_4 = uVar7;
      if (bVar12) {
        do {
          local_24 = local_24 - uVar11;
          local_18 = local_28;
          local_14 = param_4;
          FUN_00ac4400(&local_18,param_5,1);
          uVar7 = 0;
          param_1 = param_1 + uVar11;
          uVar9 = 0;
          local_20 = 0;
          switch(uVar11) {
          case 8:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar7 = (uint)*pbVar1 << 0x18;
          case 7:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar7 = uVar7 | (uint)*pbVar1 << 0x10;
          case 6:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar7 = uVar7 | (uint)*pbVar1 << 8;
          case 5:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            local_20 = uVar7 | *pbVar1;
          case 4:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar9 = (uint)*pbVar1 << 0x18;
          case 3:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar9 = uVar9 | (uint)*pbVar1 << 0x10;
          case 2:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar9 = uVar9 | (uint)*pbVar1 << 8;
          case 1:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar9 = uVar9 | *pbVar1;
          default:
            param_1 = param_1 + uVar11;
            if (param_3 == 0x20) {
              local_28 = param_4;
              uVar7 = uVar9;
              uVar2 = local_28;
            }
            else {
              uVar7 = local_20;
              uVar2 = uVar9;
              if (param_3 != 0x40) {
                local_4 = local_20;
                local_10 = local_28;
                local_c = param_4;
                local_8 = uVar9;
                if (uVar6 == 0) {
                  _memmove(&local_10,(void *)((int)&local_10 + iVar5),8);
                }
                else {
                  bVar4 = 8 - bVar8;
                  bVar10 = *(byte *)((int)&local_10 + iVar5 + 1) >> (bVar4 & 0x1f) |
                           *(char *)((int)&local_10 + iVar5) << (bVar8 & 0x1f);
                  local_10._1_3_ = (undefined3)(local_28 >> 8);
                  local_10 = CONCAT31(local_10._1_3_,bVar10);
                  local_10._2_2_ = (undefined2)(local_28 >> 0x10);
                  local_10._0_2_ =
                       CONCAT11(*(char *)((int)&local_10 + iVar5 + 1) << (bVar8 & 0x1f) |
                                *(byte *)((int)&local_10 + iVar5 + 2) >> (bVar4 & 0x1f),bVar10);
                  local_10._3_1_ = (undefined)(local_28 >> 0x18);
                  local_10._0_3_ =
                       CONCAT12(*(char *)((int)&local_10 + iVar5 + 2) << (bVar8 & 0x1f) |
                                *(byte *)((int)&local_10 + iVar5 + 3) >> (bVar4 & 0x1f),
                                (undefined2)local_10);
                  local_10 = CONCAT13(*(byte *)((int)&local_c + iVar5) >> (bVar4 & 0x1f) |
                                      *(char *)((int)&local_10 + iVar5 + 3) << (bVar8 & 0x1f),
                                      (undefined3)local_10);
                  bVar10 = *(char *)((int)&local_c + iVar5) << (bVar8 & 0x1f) |
                           *(byte *)((int)&local_c + iVar5 + 1) >> (bVar4 & 0x1f);
                  local_c._1_3_ = (undefined3)(param_4 >> 8);
                  local_c = CONCAT31(local_c._1_3_,bVar10);
                  local_c._2_2_ = (undefined2)(param_4 >> 0x10);
                  local_c._0_2_ =
                       CONCAT11(*(char *)((int)&local_c + iVar5 + 1) << (bVar8 & 0x1f) |
                                *(byte *)((int)&local_c + iVar5 + 2) >> (bVar4 & 0x1f),bVar10);
                  local_c._3_1_ = (undefined)(param_4 >> 0x18);
                  local_c._0_3_ =
                       CONCAT12(*(char *)((int)&local_c + iVar5 + 2) << (bVar8 & 0x1f) |
                                *(byte *)((int)&local_c + iVar5 + 3) >> (bVar4 & 0x1f),
                                (undefined2)local_c);
                  local_c = CONCAT13(*(byte *)((int)&local_8 + iVar5) >> (bVar4 & 0x1f) |
                                     *(char *)((int)&local_c + iVar5 + 3) << (bVar8 & 0x1f),
                                     (undefined3)local_c);
                }
                local_28 = local_10;
                param_4 = local_c;
                uVar7 = param_4;
                uVar2 = local_28;
              }
            }
          }
          local_28 = uVar2;
          param_4 = uVar7;
          uVar9 = uVar9 ^ local_18;
          local_20 = local_20 ^ local_14;
          param_2 = param_2 + uVar11;
          switch(uVar11) {
          case 8:
            param_2 = param_2 + -1;
            *param_2 = (char)(local_20 >> 0x18);
          case 7:
            param_2 = param_2 + -1;
            *param_2 = (char)(local_20 >> 0x10);
          case 6:
            param_2 = param_2 + -1;
            *param_2 = (char)(local_20 >> 8);
          case 5:
            param_2 = param_2 + -1;
            *param_2 = (char)local_20;
          case 4:
            param_2 = param_2 + -1;
            *param_2 = (char)(uVar9 >> 0x18);
          case 3:
            param_2 = param_2 + -1;
            *param_2 = (char)(uVar9 >> 0x10);
          case 2:
            param_2 = param_2 + -1;
            *param_2 = (char)(uVar9 >> 8);
          case 1:
            param_2 = param_2 + -1;
            *param_2 = (char)uVar9;
          }
          param_2 = param_2 + uVar11;
        } while (uVar11 <= local_24);
      }
    }
    else {
      bVar12 = uVar11 <= param_4;
      param_4 = uVar7;
      if (bVar12) {
        do {
          local_24 = local_24 - uVar11;
          local_18 = local_28;
          local_14 = param_4;
          FUN_00ac4400(&local_18,param_5,1);
          param_1 = param_1 + uVar11;
          uVar9 = 0;
          uVar7 = 0;
          switch(uVar11) {
          case 8:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar9 = (uint)*pbVar1 << 0x18;
          case 7:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar9 = uVar9 | (uint)*pbVar1 << 0x10;
          case 6:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar9 = uVar9 | (uint)*pbVar1 << 8;
          case 5:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar9 = uVar9 | *pbVar1;
          case 4:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar7 = (uint)*pbVar1 << 0x18;
          case 3:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar7 = uVar7 | (uint)*pbVar1 << 0x10;
          case 2:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar7 = uVar7 | (uint)*pbVar1 << 8;
          case 1:
            pbVar1 = (byte *)(param_1 + -1);
            param_1 = param_1 + -1;
            uVar7 = uVar7 | *pbVar1;
          }
          uVar7 = uVar7 ^ local_18;
          uVar9 = uVar9 ^ local_14;
          param_1 = param_1 + uVar11;
          param_2 = param_2 + uVar11;
          switch(uVar11) {
          case 8:
            param_2 = param_2 + -1;
            *param_2 = (char)(uVar9 >> 0x18);
          case 7:
            param_2 = param_2 + -1;
            *param_2 = (char)(uVar9 >> 0x10);
          case 6:
            param_2 = param_2 + -1;
            *param_2 = (char)(uVar9 >> 8);
          case 5:
            param_2 = param_2 + -1;
            *param_2 = (char)uVar9;
          case 4:
            param_2 = param_2 + -1;
            *param_2 = (char)(uVar7 >> 0x18);
          case 3:
            param_2 = param_2 + -1;
            *param_2 = (char)(uVar7 >> 0x10);
          case 2:
            param_2 = param_2 + -1;
            *param_2 = (char)(uVar7 >> 8);
          case 1:
            param_2 = param_2 + -1;
            *param_2 = (char)uVar7;
          }
          param_2 = param_2 + uVar11;
          uVar2 = uVar7;
          uVar3 = param_4;
          if ((param_3 != 0x20) && (uVar2 = uVar9, uVar3 = uVar7, param_3 != 0x40)) {
            local_4 = uVar9;
            local_10 = local_28;
            local_c = param_4;
            local_8 = uVar7;
            if (uVar6 == 0) {
              _memmove(&local_10,(void *)((int)&local_10 + iVar5),8);
            }
            else {
              bVar4 = 8 - bVar8;
              bVar10 = *(byte *)((int)&local_10 + iVar5 + 1) >> (bVar4 & 0x1f) |
                       *(char *)((int)&local_10 + iVar5) << (bVar8 & 0x1f);
              local_10._1_3_ = (undefined3)(local_28 >> 8);
              local_10 = CONCAT31(local_10._1_3_,bVar10);
              local_10._2_2_ = (undefined2)(local_28 >> 0x10);
              local_10._0_2_ =
                   CONCAT11(*(char *)((int)&local_10 + iVar5 + 1) << (bVar8 & 0x1f) |
                            *(byte *)((int)&local_10 + iVar5 + 2) >> (bVar4 & 0x1f),bVar10);
              local_10._3_1_ = (undefined)(local_28 >> 0x18);
              local_10._0_3_ =
                   CONCAT12(*(char *)((int)&local_10 + iVar5 + 2) << (bVar8 & 0x1f) |
                            *(byte *)((int)&local_10 + iVar5 + 3) >> (bVar4 & 0x1f),
                            (undefined2)local_10);
              local_10 = CONCAT13(*(byte *)((int)&local_c + iVar5) >> (bVar4 & 0x1f) |
                                  *(char *)((int)&local_10 + iVar5 + 3) << (bVar8 & 0x1f),
                                  (undefined3)local_10);
              bVar10 = *(char *)((int)&local_c + iVar5) << (bVar8 & 0x1f) |
                       *(byte *)((int)&local_c + iVar5 + 1) >> (bVar4 & 0x1f);
              local_c._1_3_ = (undefined3)(param_4 >> 8);
              local_c = CONCAT31(local_c._1_3_,bVar10);
              local_c._2_2_ = (undefined2)(param_4 >> 0x10);
              local_c._0_2_ =
                   CONCAT11(*(char *)((int)&local_c + iVar5 + 1) << (bVar8 & 0x1f) |
                            *(byte *)((int)&local_c + iVar5 + 2) >> (bVar4 & 0x1f),bVar10);
              local_c._3_1_ = (undefined)(param_4 >> 0x18);
              local_c._0_3_ =
                   CONCAT12(*(char *)((int)&local_c + iVar5 + 2) << (bVar8 & 0x1f) |
                            *(byte *)((int)&local_c + iVar5 + 3) >> (bVar4 & 0x1f),
                            (undefined2)local_c);
              local_c = CONCAT13(*(byte *)((int)&local_8 + iVar5) >> (bVar4 & 0x1f) |
                                 *(char *)((int)&local_c + iVar5 + 3) << (bVar8 & 0x1f),
                                 (undefined3)local_c);
            }
            param_4 = local_c;
            uVar2 = param_4;
            uVar3 = local_10;
          }
          local_28 = uVar3;
          param_4 = uVar2;
        } while (uVar11 <= local_24);
      }
    }
    *(char *)param_6 = (char)local_28;
    *(char *)((int)param_6 + 1) = (char)(local_28 >> 8);
    *(char *)((int)param_6 + 2) = (char)(local_28 >> 0x10);
    *(char *)((int)param_6 + 3) = (char)(local_28 >> 0x18);
    *(char *)(param_6 + 1) = (char)param_4;
    *(char *)((int)param_6 + 5) = (char)(param_4 >> 8);
    *(char *)((int)param_6 + 6) = (char)(param_4 >> 0x10);
    *(char *)((int)param_6 + 7) = (char)(param_4 >> 0x18);
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac6e20(uint *param_1,undefined *param_2,uint param_3,undefined4 param_4,uint *param_5,
                 uint *param_6,uint *param_7,int param_8)

{
  byte *pbVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  int local_c;
  uint local_8;
  uint local_4;
  
  uVar11 = *param_6;
  uVar7 = param_6[1];
  uVar4 = *param_7;
  uVar3 = param_7[1];
  if (param_8 == 0) {
    uVar9 = *param_5;
    uVar10 = param_5[1];
    iVar5 = param_3 - 8;
    iVar12 = iVar5;
    if (0 < iVar5) {
      local_c = (param_3 - 9 >> 3) + 1;
      iVar2 = local_c * -8;
      uVar6 = uVar9;
      param_6 = (uint *)uVar10;
      do {
        uVar9 = *param_1;
        local_8 = uVar9 ^ uVar4;
        uVar10 = param_1[1];
        local_4 = uVar10 ^ uVar3;
        param_1 = param_1 + 2;
        FUN_00ac4400(&local_8,param_4,0);
        uVar8 = (uint)param_6 ^ local_4 ^ uVar7;
        uVar6 = uVar6 ^ local_8 ^ uVar11;
        *param_2 = (char)uVar6;
        param_2[1] = (char)(uVar6 >> 8);
        param_2[2] = (char)(uVar6 >> 0x10);
        param_2[3] = (char)(uVar6 >> 0x18);
        param_2[4] = (char)uVar8;
        param_2[5] = (char)(uVar8 >> 8);
        param_2[6] = (char)(uVar8 >> 0x10);
        param_2[7] = (char)(uVar8 >> 0x18);
        param_2 = param_2 + 8;
        local_c = local_c + -1;
        uVar6 = uVar9;
        iVar12 = iVar5 + iVar2;
        param_6 = (uint *)uVar10;
      } while (local_c != 0);
    }
    param_3 = iVar12;
    uVar8 = uVar10;
    uVar6 = uVar9;
    if (param_3 != -8) {
      uVar6 = *param_1;
      local_8 = uVar6 ^ uVar4;
      uVar8 = param_1[1];
      local_4 = uVar8 ^ uVar3;
      FUN_00ac4400(&local_8,param_4,0);
      uVar11 = uVar9 ^ local_8 ^ uVar11;
      uVar7 = uVar10 ^ local_4 ^ uVar7;
      param_2 = param_2 + param_3 + 8;
      switch(param_3) {
      case 0:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar7 >> 0x18);
      case 0xffffffff:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar7 >> 0x10);
      case 0xfffffffe:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar7 >> 8);
      case 0xfffffffd:
        param_2 = param_2 + -1;
        *param_2 = (char)uVar7;
      case 0xfffffffc:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar11 >> 0x18);
      case 0xfffffffb:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar11 >> 0x10);
      case 0xfffffffa:
        param_2 = param_2 + -1;
        *param_2 = (char)(uVar11 >> 8);
      case 0xfffffff9:
        param_2[-1] = (char)uVar11;
      }
    }
    *(char *)param_5 = (char)uVar6;
    *(char *)((int)param_5 + 1) = (char)(uVar6 >> 8);
    *(char *)((int)param_5 + 2) = (char)(uVar6 >> 0x10);
    *(char *)((int)param_5 + 3) = (char)(uVar6 >> 0x18);
    *(char *)(param_5 + 1) = (char)uVar8;
    *(char *)((int)param_5 + 5) = (char)(uVar8 >> 8);
    *(char *)((int)param_5 + 6) = (char)(uVar8 >> 0x10);
    *(char *)((int)param_5 + 7) = (char)(uVar8 >> 0x18);
    return;
  }
  local_8 = *param_5;
  local_4 = param_5[1];
  iVar12 = param_3 - 8;
  if (-1 < iVar12) {
    param_6 = (uint *)(param_3 >> 3);
    iVar12 = iVar12 + (int)param_6 * -8;
    do {
      local_8 = *param_1 ^ local_8 ^ uVar11;
      local_4 = param_1[1] ^ local_4 ^ uVar7;
      param_1 = param_1 + 2;
      FUN_00ac4400(&local_8,param_4,1);
      local_8 = local_8 ^ uVar4;
      *param_2 = (char)local_8;
      param_2[1] = (char)(local_8 >> 8);
      param_2[2] = (char)(local_8 >> 0x10);
      local_4 = local_4 ^ uVar3;
      param_2[3] = (char)(local_8 >> 0x18);
      param_2[4] = (char)local_4;
      param_2[5] = (char)(local_4 >> 8);
      param_2[6] = (char)(local_4 >> 0x10);
      param_2[7] = (char)(local_4 >> 0x18);
      param_2 = param_2 + 8;
      param_6 = (uint *)((int)param_6 - 1);
    } while (param_6 != (uint *)0x0);
  }
  if (iVar12 != -8) {
    iVar5 = (int)param_1 + iVar12 + 8;
    uVar10 = 0;
    uVar9 = 0;
    switch(iVar12) {
    case 0:
      pbVar1 = (byte *)(iVar5 + -1);
      iVar5 = iVar5 + -1;
      uVar10 = (uint)*pbVar1 << 0x18;
    case -1:
      pbVar1 = (byte *)(iVar5 + -1);
      iVar5 = iVar5 + -1;
      uVar10 = uVar10 | (uint)*pbVar1 << 0x10;
    case -2:
      pbVar1 = (byte *)(iVar5 + -1);
      iVar5 = iVar5 + -1;
      uVar10 = uVar10 | (uint)*pbVar1 << 8;
    case -3:
      pbVar1 = (byte *)(iVar5 + -1);
      iVar5 = iVar5 + -1;
      uVar10 = uVar10 | *pbVar1;
    case -4:
      pbVar1 = (byte *)(iVar5 + -1);
      iVar5 = iVar5 + -1;
      uVar9 = (uint)*pbVar1 << 0x18;
    case -5:
      pbVar1 = (byte *)(iVar5 + -1);
      iVar5 = iVar5 + -1;
      uVar9 = uVar9 | (uint)*pbVar1 << 0x10;
    case -6:
      pbVar1 = (byte *)(iVar5 + -1);
      iVar5 = iVar5 + -1;
      uVar9 = uVar9 | (uint)*pbVar1 << 8;
    case -7:
      uVar9 = uVar9 | *(byte *)(iVar5 + -1);
    default:
      local_8 = uVar9 ^ local_8 ^ uVar11;
      local_4 = uVar10 ^ local_4 ^ uVar7;
      FUN_00ac4400(&local_8,param_4,1);
      local_8 = local_8 ^ uVar4;
      *param_2 = (char)local_8;
      param_2[1] = (char)(local_8 >> 8);
      param_2[2] = (char)(local_8 >> 0x10);
      local_4 = local_4 ^ uVar3;
      param_2[3] = (char)(local_8 >> 0x18);
      param_2[4] = (char)local_4;
      param_2[5] = (char)(local_4 >> 8);
      param_2[6] = (char)(local_4 >> 0x10);
      param_2[7] = (char)(local_4 >> 0x18);
    }
  }
  *(char *)param_5 = (char)local_8;
  *(char *)((int)param_5 + 1) = (char)(local_8 >> 8);
  *(char *)((int)param_5 + 2) = (char)(local_8 >> 0x10);
  *(char *)((int)param_5 + 3) = (char)(local_8 >> 0x18);
  *(char *)(param_5 + 1) = (char)local_4;
  *(char *)((int)param_5 + 5) = (char)(local_4 >> 8);
  *(char *)((int)param_5 + 6) = (char)(local_4 >> 0x10);
  *(char *)((int)param_5 + 7) = (char)(local_4 >> 0x18);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00ac8450(int param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  undefined *puVar4;
  undefined local_c [8];
  undefined4 uStack_4;
  
  uStack_4 = 0xac845a;
  puVar4 = local_c;
  puVar1 = *(undefined4 **)(param_1 + 0x14);
  if (*(int *)(param_1 + 0x1c) == 0) {
    puVar4 = (undefined *)0x0;
  }
  else {
    FUN_00ae2c20(local_c,param_1);
  }
  iVar2 = FUN_00a8e890();
  if (iVar2 == 0) {
    return 0;
  }
  iVar3 = FUN_00ae23c0(iVar2,*puVar1,puVar1[1],puVar1[2],0,0,0,0,0,puVar4);
  if (iVar3 != 0) {
    FUN_00a816a0(param_2,0x74);
    return iVar3;
  }
  FUN_00a8e750(iVar2);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00ac8700(int param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  undefined *puVar4;
  undefined local_c [8];
  undefined4 uStack_4;
  
  uStack_4 = 0xac870a;
  puVar4 = local_c;
  puVar1 = *(undefined4 **)(param_1 + 0x14);
  if (*(int *)(param_1 + 0x1c) == 0) {
    puVar4 = (undefined *)0x0;
  }
  else {
    FUN_00ae2c20(local_c,param_1);
  }
  iVar2 = FUN_00a8f060();
  if (iVar2 == 0) {
    return 0;
  }
  iVar3 = FUN_00ae2f80(iVar2,*puVar1,puVar1[1],puVar4);
  if (iVar3 != 0) {
    FUN_00a816a0(param_2,0x1c);
    return iVar3;
  }
  FUN_00a8ef50(iVar2);
  return 0;
}



undefined4 __thiscall FUN_00ac8ed0(int param_1_00,int param_1)

{
  undefined4 uVar1;
  int iVar2;
  
  if (param_1_00 != 0) {
    if (param_1 == 3) {
      FUN_00a7f3c0(4,0x8c,0x8d,".\\crypto\\rsa\\rsa_pmeth.c",0x1c3);
      return 0;
    }
    if (param_1 == 5) {
      uVar1 = FUN_00a814c0(param_1_00);
      iVar2 = FUN_00ad19f0(uVar1);
      if (iVar2 == -1) {
        FUN_00a7f3c0(4,0x8c,0x8e,".\\crypto\\rsa\\rsa_pmeth.c",0x1cc);
        return 0;
      }
    }
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00ac9520(int param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  undefined *puVar4;
  undefined local_c [8];
  undefined4 uStack_4;
  
  uStack_4 = 0xac952a;
  puVar1 = *(undefined4 **)(param_1 + 0x14);
  if (puVar1[1] == 0) {
    iVar2 = FUN_00a9aa10();
    puVar1[1] = iVar2;
    if (iVar2 != 0) {
      iVar2 = FUN_00a9ac50(iVar2,0x10001);
      if (iVar2 != 0) goto LAB_00ac955f;
    }
    return 0;
  }
LAB_00ac955f:
  iVar2 = FUN_00a8e5e0();
  if (iVar2 == 0) {
    return 0;
  }
  if (*(int *)(param_1 + 0x1c) == 0) {
    puVar4 = (undefined *)0x0;
  }
  else {
    puVar4 = local_c;
    FUN_00ae2c20(puVar4,param_1);
  }
  iVar3 = FUN_00ae3af0(iVar2,*puVar1,puVar1[1],puVar4);
  if (0 < iVar3) {
    FUN_00a816a0(param_2,6);
    return iVar3;
  }
  FUN_00a8e490(iVar2);
  return iVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac95d0(void)

{
  BOOL BVar1;
  DWORD DStack_c;
  LARGE_INTEGER local_8;
  
  local_8.s.HighPart = 0xac95da;
  if (DAT_03243220 != 0) {
    BVar1 = QueryPerformanceCounter(&local_8);
    if (BVar1 == 0) {
      DAT_03243220 = 0;
    }
    else {
      FUN_00a86df0(&local_8,8,0);
      if (DAT_03243220 != 0) {
        return;
      }
    }
  }
  DStack_c = GetTickCount();
  FUN_00a86df0(&DStack_c,4,0);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ac9650(void)

{
  FARPROC pFVar1;
  HMODULE hModule;
  HMODULE pHVar2;
  int iVar3;
  FARPROC pFVar4;
  int iVar5;
  DWORD DVar6;
  HANDLE hObject;
  uint uStack_50c;
  _MEMORYSTATUS local_4fc;
  undefined4 local_4dc [7];
  undefined4 local_4c0;
  undefined4 local_4bc;
  undefined4 local_4b8;
  undefined4 local_4b4;
  undefined4 local_4b0;
  undefined4 local_4ac;
  undefined4 local_4a8;
  undefined4 local_4a4;
  undefined4 local_4a0;
  int local_49c;
  FARPROC local_498;
  HMODULE local_494;
  FARPROC local_490;
  FARPROC local_48c;
  FARPROC local_488;
  undefined4 local_484;
  undefined4 local_480;
  undefined4 local_47c;
  undefined4 local_478;
  undefined4 local_474;
  FARPROC local_470;
  DWORD local_46c;
  FARPROC local_468;
  undefined4 local_464;
  FARPROC local_460;
  FARPROC local_45c;
  FARPROC local_458;
  HMODULE local_454;
  int local_450;
  FARPROC local_44c;
  HANDLE local_448;
  FARPROC local_444;
  uint *local_440;
  void *local_438;
  code *pcStack_434;
  uint local_430;
  undefined4 local_42c;
  undefined4 local_428 [137];
  undefined4 local_204 [74];
  _OSVERSIONINFOA local_dc;
  undefined local_48 [64];
  uint local_8;
  
  local_42c = 0xfffffffe;
  pcStack_434 = __except_handler4;
  local_438 = ExceptionList;
  local_444 = (FARPROC)0xac9682;
  local_430 = DAT_0323f878 ^ 0x3113b68;
  uStack_50c = DAT_0323f878 ^ (uint)local_428;
  local_440 = &uStack_50c;
  ExceptionList = &local_438;
  local_464 = 0;
  local_450 = 0;
  local_dc.dwOSVersionInfoSize = 0x94;
  local_8 = uStack_50c;
  GetVersionExA(&local_dc);
  local_454 = LoadLibraryA("ADVAPI32.DLL");
  hModule = LoadLibraryA("KERNEL32.DLL");
  local_494 = hModule;
  pHVar2 = LoadLibraryA("NETAPI32.DLL");
  local_44c = (FARPROC)0x0;
  local_45c = (FARPROC)0x0;
  local_458 = (FARPROC)0x0;
  local_444 = (FARPROC)0x0;
  local_460 = (FARPROC)0x0;
  if (pHVar2 != (HMODULE)0x0) {
    local_444 = GetProcAddress(pHVar2,"NetStatisticsGet");
    local_460 = GetProcAddress(pHVar2,"NetApiBufferFree");
  }
  if ((local_444 != (FARPROC)0x0) && (local_460 != (FARPROC)0x0)) {
    iVar3 = (*local_444)(0,L"LanmanWorkstation",0,0);
    if (iVar3 == 0) {
      FUN_00a86df0();
      (*local_460)(local_448);
    }
    iVar3 = (*local_444)(0,L"LanmanServer",0,0,&local_448);
    if (iVar3 == 0) {
      FUN_00a86df0(local_448,0x44,0x4031000000000000);
      (*local_460)();
    }
  }
  if (pHVar2 != (HMODULE)0x0) {
    FreeLibrary(pHVar2);
  }
  pHVar2 = local_454;
  if (local_454 != (HMODULE)0x0) {
    local_44c = GetProcAddress(local_454,"CryptAcquireContextW");
    local_45c = GetProcAddress(pHVar2,"CryptGenRandom");
    local_458 = GetProcAddress(pHVar2,"CryptReleaseContext");
  }
  pFVar1 = local_44c;
  if (((local_44c != (FARPROC)0x0) && (local_45c != (FARPROC)0x0)) && (local_458 != (FARPROC)0x0)) {
    iVar3 = (*local_44c)(&local_464,0,0,1);
    if (iVar3 != 0) {
      iVar3 = (*local_45c)(local_464,0x40,local_48);
      if (iVar3 != 0) {
        FUN_00a86df0(local_48,0x40,0);
        local_450 = 1;
      }
      (*local_458)(local_464,0);
    }
    iVar3 = (*pFVar1)(&local_464,0,L"Intel Hardware Cryptographic Service Provider",0x16,0);
    if (iVar3 != 0) {
      iVar3 = (*local_45c)(local_464,0x40);
      if (iVar3 != 0) {
        FUN_00a86df0(local_48,0x40,0,0x40500000);
        local_450 = 1;
      }
      (*local_458)(local_464,0);
    }
  }
  if (local_454 != (HMODULE)0x0) {
    FreeLibrary(local_454);
  }
  if (((local_dc.dwPlatformId != 2) || (iVar3 = FUN_00a7fb00(), iVar3 == 0)) &&
     (pHVar2 = LoadLibraryA("USER32.DLL"), pHVar2 != (HMODULE)0x0)) {
    local_44c = GetProcAddress(pHVar2,"GetForegroundWindow");
    local_454 = (HMODULE)GetProcAddress(pHVar2,"GetCursorInfo");
    local_458 = GetProcAddress(pHVar2,"GetQueueStatus");
    if (local_44c != (FARPROC)0x0) {
      local_468 = (FARPROC)(*local_44c)();
      FUN_00a86df0(&local_468,4,0);
    }
    if (((local_454 != (HMODULE)0x0) &&
        ((local_dc.dwPlatformId != 2 || (4 < local_dc.dwMajorVersion)))) &&
       (local_454 != (HMODULE)0x0)) {
      local_484 = 0x14;
      iVar3 = (*(code *)local_454)();
      if (iVar3 != 0) {
        FUN_00a86df0(&local_484,local_484,0x4000000000000000);
      }
    }
    if (local_458 != (FARPROC)0x0) {
      local_46c = (*local_458)();
      FUN_00a86df0(&local_46c,4,0x3ff0000000000000);
    }
    FreeLibrary(pHVar2);
  }
  if (hModule != (HMODULE)0x0) {
    local_444 = (FARPROC)0x0;
    pFVar4 = GetProcAddress(hModule,"CreateToolhelp32Snapshot");
    local_498 = GetProcAddress(hModule,"CloseToolhelp32Snapshot");
    local_454 = (HMODULE)GetProcAddress(hModule,"Heap32First");
    local_458 = GetProcAddress(hModule,"Heap32Next");
    local_44c = GetProcAddress(hModule,"Heap32ListFirst");
    local_45c = GetProcAddress(hModule,"Heap32ListNext");
    local_460 = GetProcAddress(hModule,"Process32First");
    local_488 = GetProcAddress(hModule,"Process32Next");
    local_48c = GetProcAddress(hModule,"Thread32First");
    local_470 = GetProcAddress(hModule,"Thread32Next");
    local_490 = GetProcAddress(hModule,"Module32First");
    local_468 = GetProcAddress(hModule,"Module32Next");
    pFVar1 = local_44c;
    if ((((((pFVar4 != (FARPROC)0x0) && (local_454 != (HMODULE)0x0)) && (local_458 != (FARPROC)0x0))
         && ((local_44c != (FARPROC)0x0 && (local_45c != (FARPROC)0x0)))) &&
        ((local_460 != (FARPROC)0x0 && ((local_488 != (FARPROC)0x0 && (local_48c != (FARPROC)0x0))))
        )) && ((local_470 != (FARPROC)0x0 &&
               (((local_490 != (FARPROC)0x0 && (local_468 != (FARPROC)0x0)) &&
                (local_448 = (HANDLE)(*pFVar4)(0xf), local_448 != (HANDLE)0xffffffff)))))) {
      local_47c = 0;
      local_478 = 0;
      local_474 = 0;
      local_480 = 0x10;
      if (local_450 != 0) {
        local_444 = (FARPROC)GetTickCount();
      }
      hObject = local_448;
      iVar3 = (*pFVar1)(local_448);
      if (iVar3 != 0) {
        local_44c = (FARPROC)0x2a;
        do {
          FUN_00a86df0(&local_480,local_480,0,0x40080000);
          local_42c = 0;
          local_4bc = 0;
          local_4b8 = 0;
          local_4b4 = 0;
          local_4b0 = 0;
          local_4ac = 0;
          local_4a8 = 0;
          local_4a4 = 0;
          local_4a0 = 0;
          local_4c0 = 0x24;
          iVar3 = (*(code *)local_454)(&local_4c0,local_47c,local_478);
          pFVar1 = local_444;
          if (iVar3 != 0) {
            local_49c = 0x50;
            do {
              iVar3 = local_49c;
              FUN_00a86df0();
              iVar5 = (*local_458)(&local_4c0);
              hObject = local_448;
              if ((iVar5 == 0) ||
                 ((local_450 != 0 &&
                  (DVar6 = GetTickCount(), hObject = local_448, 999 < DVar6 - (int)pFVar1)))) break;
              local_49c = iVar3 + -1;
              hObject = local_448;
            } while (0 < local_49c);
          }
          local_42c = 0xfffffffe;
          iVar3 = (*local_45c)(hObject,&local_480);
        } while (((iVar3 != 0) &&
                 ((local_450 == 0 || (DVar6 = GetTickCount(), DVar6 - (int)local_444 < 1000)))) &&
                (0 < (int)local_44c));
      }
      local_204[0] = 0x128;
      if (local_450 != 0) {
        local_444 = (FARPROC)GetTickCount();
      }
      iVar3 = (*local_460)(hObject,local_204);
      pFVar4 = local_444;
      pFVar1 = local_488;
      if (iVar3 != 0) {
        do {
          FUN_00a86df0(local_204,local_204[0],0,0x40220000);
          iVar3 = (*pFVar1)(local_448,local_204);
          hObject = local_448;
          if (iVar3 == 0) break;
        } while ((local_450 == 0) ||
                (DVar6 = GetTickCount(), hObject = local_448, DVar6 - (int)pFVar4 < 1000));
      }
      local_4dc[0] = 0x1c;
      if (local_450 != 0) {
        local_444 = (FARPROC)GetTickCount();
      }
      iVar3 = (*local_48c)(hObject,local_4dc);
      pFVar1 = local_444;
      if (iVar3 != 0) {
        do {
          FUN_00a86df0(local_4dc,local_4dc[0],0,0x40180000);
          iVar3 = (*local_470)(local_448,local_4dc);
          hObject = local_448;
          if (iVar3 == 0) break;
        } while ((local_450 == 0) ||
                (DVar6 = GetTickCount(), hObject = local_448, DVar6 - (int)pFVar1 < 1000));
      }
      local_428[0] = 0x224;
      if (local_450 != 0) {
        local_444 = (FARPROC)GetTickCount();
      }
      iVar3 = (*local_490)(hObject,local_428);
      pFVar1 = local_468;
      if (iVar3 != 0) {
        do {
          FUN_00a86df0(local_428,local_428[0],0x4022000000000000);
          iVar3 = (*pFVar1)(hObject);
          if (iVar3 == 0) break;
        } while ((local_450 == 0) || (DVar6 = GetTickCount(), DVar6 - (int)local_444 < 1000));
      }
      if (local_498 == (FARPROC)0x0) {
        CloseHandle(hObject);
      }
      else {
        (*local_498)();
      }
    }
    FreeLibrary(hModule);
  }
  FUN_00ac95d0();
  GlobalMemoryStatus(&local_4fc);
  FUN_00a86df0(&local_4fc,0x20,0x3ff0000000000000);
  local_46c = GetCurrentProcessId();
  FUN_00a86df0(&local_46c,4,0x3ff0000000000000);
  ExceptionList = local_438;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00ac9f40(int param_1)

{
  int iVar1;
  HMODULE *ppHVar2;
  BOOL BVar3;
  
  if (param_1 == 0) {
    FUN_00a7f3c0(0x25,0x79,0x43,".\\crypto\\dso\\dso_win32.c",0xd7);
    return 0;
  }
  iVar1 = FUN_00a80ed0(*(undefined4 *)(param_1 + 4));
  if (iVar1 < 1) {
    return 1;
  }
  ppHVar2 = (HMODULE *)FUN_00a80e50(*(undefined4 *)(param_1 + 4));
  if (ppHVar2 == (HMODULE *)0x0) {
    FUN_00a7f3c0(0x25,0x79,0x68,".\\crypto\\dso\\dso_win32.c",0xdf);
    return 0;
  }
  BVar3 = FreeLibrary(*ppHVar2);
  if (BVar3 == 0) {
    FUN_00a7f3c0(0x25,0x79,0x6b,".\\crypto\\dso\\dso_win32.c",0xe4);
    FUN_00a80df0(*(undefined4 *)(param_1 + 4),ppHVar2);
    return 0;
  }
  FUN_00a85120(ppHVar2);
  return 1;
}



FARPROC FUN_00aca000(int param_1,LPCSTR param_2)

{
  int iVar1;
  HMODULE *ppHVar2;
  FARPROC pFVar3;
  
  if ((param_1 == 0) || (param_2 == (LPCSTR)0x0)) {
    FUN_00a7f3c0(0x25,0x77,0x43,".\\crypto\\dso\\dso_win32.c",0xf8);
    pFVar3 = (FARPROC)0x0;
  }
  else {
    iVar1 = FUN_00a80ed0(*(undefined4 *)(param_1 + 4));
    if (iVar1 < 1) {
      FUN_00a7f3c0(0x25,0x77,0x69,".\\crypto\\dso\\dso_win32.c",0xfd);
      return (FARPROC)0x0;
    }
    iVar1 = FUN_00a80ed0(*(undefined4 *)(param_1 + 4));
    ppHVar2 = (HMODULE *)FUN_00a80ee0(*(undefined4 *)(param_1 + 4),iVar1 + -1);
    if (ppHVar2 == (HMODULE *)0x0) {
      FUN_00a7f3c0(0x25,0x77,0x68,".\\crypto\\dso\\dso_win32.c",0x103);
      return (FARPROC)0x0;
    }
    pFVar3 = GetProcAddress(*ppHVar2,param_2);
    if (pFVar3 == (FARPROC)0x0) {
      FUN_00a7f3c0(0x25,0x77,0x6a,".\\crypto\\dso\\dso_win32.c",0x109);
      FUN_00a7f690(3,"symname(",param_2,&DAT_03065e6c);
      return (FARPROC)0x0;
    }
  }
  return pFVar3;
}



FARPROC FUN_00aca0e0(int param_1,LPCSTR param_2)

{
  int iVar1;
  HMODULE *ppHVar2;
  FARPROC pFVar3;
  
  if ((param_1 == 0) || (param_2 == (LPCSTR)0x0)) {
    FUN_00a7f3c0(0x25,0x76,0x43,".\\crypto\\dso\\dso_win32.c",0x117);
    pFVar3 = (FARPROC)0x0;
  }
  else {
    iVar1 = FUN_00a80ed0(*(undefined4 *)(param_1 + 4));
    if (iVar1 < 1) {
      FUN_00a7f3c0(0x25,0x76,0x69,".\\crypto\\dso\\dso_win32.c",0x11c);
      return (FARPROC)0x0;
    }
    iVar1 = FUN_00a80ed0(*(undefined4 *)(param_1 + 4));
    ppHVar2 = (HMODULE *)FUN_00a80ee0(*(undefined4 *)(param_1 + 4),iVar1 + -1);
    if (ppHVar2 == (HMODULE *)0x0) {
      FUN_00a7f3c0(0x25,0x76,0x68,".\\crypto\\dso\\dso_win32.c",0x122);
      return (FARPROC)0x0;
    }
    pFVar3 = GetProcAddress(*ppHVar2,param_2);
    if (pFVar3 == (FARPROC)0x0) {
      FUN_00a7f3c0(0x25,0x76,0x6a,".\\crypto\\dso\\dso_win32.c",0x128);
      FUN_00a7f690(3,"symname(",param_2,&DAT_03065e6c);
      return (FARPROC)0x0;
    }
  }
  return pFVar3;
}



char * FUN_00aca3e0(undefined4 param_1,char *param_2)

{
  char cVar1;
  bool bVar2;
  int iVar3;
  char *pcVar4;
  char *pcVar5;
  undefined4 uVar6;
  
  pcVar4 = param_2;
  do {
    cVar1 = *pcVar4;
    pcVar4 = pcVar4 + 1;
  } while (cVar1 != '\0');
  pcVar5 = _strstr(param_2,"/");
  if (pcVar5 == (char *)0x0) {
    pcVar5 = _strstr(param_2,"\\");
    if (pcVar5 == (char *)0x0) {
      pcVar5 = _strstr(param_2,(char *)&DAT_00d37a38);
      if (pcVar5 == (char *)0x0) {
        bVar2 = true;
        uVar6 = 0x281;
        iVar3 = 5 - (int)(param_2 + 1);
        goto LAB_00aca446;
      }
    }
  }
  bVar2 = false;
  uVar6 = 0x284;
  iVar3 = 1 - (int)(param_2 + 1);
LAB_00aca446:
  pcVar4 = (char *)FUN_00a84f80(pcVar4 + iVar3,".\\crypto\\dso\\dso_win32.c",uVar6);
  if (pcVar4 == (char *)0x0) {
    FUN_00a7f3c0(0x25,0x7d,0x6d,".\\crypto\\dso\\dso_win32.c",0x288);
    return (char *)0x0;
  }
  if (bVar2) {
    _sprintf(pcVar4,"%s.dll",param_2);
    return pcVar4;
  }
  _sprintf(pcVar4,"%s",param_2);
  return pcVar4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aca4b0(code *param_1,undefined4 param_2)

{
  char cVar1;
  HMODULE hModule;
  FARPROC pFVar2;
  FARPROC pFVar3;
  HANDLE hObject;
  int iVar4;
  char *pcVar5;
  code *_Size;
  void *unaff_EBX;
  code *unaff_ESI;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 local_230;
  FARPROC pFStack_22c;
  uint uStack_21c;
  int iStack_218;
  char acStack_110 [268];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_230;
  local_230 = param_2;
  if (param_1 == (code *)0x0) {
    param_1 = FUN_00aca4b0;
  }
  hModule = LoadLibraryA("KERNEL32.DLL");
  if (hModule == (HMODULE)0x0) {
    FUN_00a7f3c0(0x25,0x8d,0x6c,".\\crypto\\dso\\dso_win32.c",0x2c0);
    ___security_check_cookie_4();
    return;
  }
  pFVar2 = GetProcAddress(hModule,"CreateToolhelp32Snapshot");
  if (pFVar2 == (FARPROC)0x0) {
    FreeLibrary(hModule);
    FUN_00a7f3c0(0x25,0x8d,0x6c,".\\crypto\\dso\\dso_win32.c",0x2c9);
    ___security_check_cookie_4();
    return;
  }
  pFVar3 = GetProcAddress(hModule,"Module32First");
  pFStack_22c = GetProcAddress(hModule,"Module32Next");
  hObject = (HANDLE)(*pFVar2)(8,0);
  if (hObject == (HANDLE)0xffffffff) {
    FreeLibrary(hModule);
    uVar7 = 0x2da;
    uVar6 = 0x6c;
  }
  else {
    local_230 = 0x224;
    iVar4 = (*pFVar3)(hObject,&local_230);
    if (iVar4 != 0) {
      do {
        if ((uStack_21c <= local_4) && (local_4 < iStack_218 + uStack_21c)) {
          CloseHandle(hObject);
          FreeLibrary(hModule);
          pcVar5 = acStack_110;
          do {
            cVar1 = *pcVar5;
            pcVar5 = pcVar5 + 1;
          } while (cVar1 != '\0');
          _Size = (code *)(pcVar5 + -(int)(acStack_110 + 1));
          if (0 < (int)param_1) {
            if ((int)param_1 <= (int)_Size) {
              _Size = param_1 + -1;
            }
            _memcpy(unaff_EBX,acStack_110,(size_t)_Size);
            *(code *)((int)unaff_EBX + (int)_Size) = (code)0x0;
          }
          goto LAB_00aca637;
        }
        iVar4 = (*unaff_ESI)(hObject,&local_230);
      } while (iVar4 != 0);
      CloseHandle(hObject);
      FreeLibrary(hModule);
      goto LAB_00aca637;
    }
    CloseHandle(hObject);
    FreeLibrary(hModule);
    uVar7 = 0x2e4;
    uVar6 = 0x72;
  }
  FUN_00a7f3c0(0x25,0x8d,uVar6,".\\crypto\\dso\\dso_win32.c",uVar7);
LAB_00aca637:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aca6b0(undefined4 param_1)

{
  HMODULE hModule;
  FARPROC pFVar1;
  FARPROC pFVar2;
  HANDLE hObject;
  int iVar3;
  code *unaff_EBX;
  LPCSTR unaff_ESI;
  FARPROC pFStack_230;
  undefined4 local_22c;
  HMODULE pHStack_214;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&pFStack_230;
  local_22c = param_1;
  hModule = LoadLibraryA("KERNEL32.DLL");
  if (hModule == (HMODULE)0x0) {
    FUN_00a7f3c0(0x25,0x8e,0x6c,".\\crypto\\dso\\dso_win32.c",0x318);
    ___security_check_cookie_4();
    return;
  }
  pFVar1 = GetProcAddress(hModule,"CreateToolhelp32Snapshot");
  if (pFVar1 == (FARPROC)0x0) {
    FreeLibrary(hModule);
    FUN_00a7f3c0(0x25,0x8e,0x6c,".\\crypto\\dso\\dso_win32.c",0x321);
    ___security_check_cookie_4();
    return;
  }
  pFVar2 = GetProcAddress(hModule,"Module32First");
  pFStack_230 = GetProcAddress(hModule,"Module32Next");
  hObject = (HANDLE)(*pFVar1)(8,0);
  if (hObject == (HANDLE)0xffffffff) {
    FreeLibrary(hModule);
    FUN_00a7f3c0(0x25,0x8e,0x6c,".\\crypto\\dso\\dso_win32.c",0x332);
  }
  else {
    pFStack_230 = (FARPROC)0x224;
    iVar3 = (*pFVar2)(hObject,&pFStack_230);
    while (iVar3 != 0) {
      pFVar1 = GetProcAddress(pHStack_214,unaff_ESI);
      if (pFVar1 != (FARPROC)0x0) {
        CloseHandle(hObject);
        FreeLibrary(hModule);
        goto LAB_00aca7f6;
      }
      iVar3 = (*unaff_EBX)(hObject,&pFStack_230);
    }
    CloseHandle(hObject);
    FreeLibrary(hModule);
  }
LAB_00aca7f6:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined2 * FUN_00aca830(void)

{
  char *pcVar1;
  char *pcVar2;
  undefined2 *_Dest;
  char *pcVar3;
  char *pcVar4;
  size_t sVar5;
  char **unaff_ESI;
  char *pcVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  char *local_8;
  
  pcVar2 = (char *)0x0;
  pcVar6 = (char *)0x0;
  if (unaff_ESI == (char **)0x0) {
    uVar8 = 0x1bb;
    uVar7 = 0x43;
    goto LAB_00aca84f;
  }
  if (*unaff_ESI == (char *)0x0) {
    if (unaff_ESI[2] != (char *)0x0) {
      pcVar2 = unaff_ESI[3];
      goto LAB_00aca888;
    }
  }
  else {
    pcVar2 = unaff_ESI[1] + 2;
    if (((unaff_ESI[4] != (char *)0x0) || (unaff_ESI[6] != (char *)0x0)) ||
       (unaff_ESI[8] != (char *)0x0)) {
LAB_00aca888:
      pcVar2 = pcVar2 + 1;
    }
  }
  pcVar2 = pcVar2 + (int)unaff_ESI[5];
  if ((unaff_ESI[4] != (char *)0x0) &&
     ((unaff_ESI[6] != (char *)0x0 || (unaff_ESI[8] != (char *)0x0)))) {
    pcVar2 = pcVar2 + 1;
  }
  pcVar2 = pcVar2 + (int)unaff_ESI[7];
  if ((unaff_ESI[6] != (char *)0x0) && (unaff_ESI[8] != (char *)0x0)) {
    pcVar2 = pcVar2 + 1;
  }
  if (pcVar2 + (int)unaff_ESI[9] == (char *)0x0) {
    uVar8 = 0x1d6;
    uVar7 = 0x71;
LAB_00aca84f:
    FUN_00a7f3c0(0x25,0x87,uVar7,".\\crypto\\dso\\dso_win32.c",uVar8);
    return (undefined2 *)0x0;
  }
  _Dest = (undefined2 *)
          FUN_00a84f80(pcVar2 + (int)unaff_ESI[9] + 1,".\\crypto\\dso\\dso_win32.c",0x1da);
  if (_Dest == (undefined2 *)0x0) {
    FUN_00a7f3c0(0x25,0x87,0x41,".\\crypto\\dso\\dso_win32.c",0x1de);
    return (undefined2 *)0x0;
  }
  if (*unaff_ESI == (char *)0x0) {
    if (unaff_ESI[2] == (char *)0x0) goto LAB_00aca960;
    _strncpy((char *)_Dest,unaff_ESI[2],(size_t)unaff_ESI[3]);
    pcVar6 = unaff_ESI[3];
    pcVar6[(int)_Dest] = ':';
  }
  else {
    *_Dest = 0x5c5c;
    *(undefined *)(_Dest + 1) = 0;
    _strncpy((char *)(_Dest + 1),*unaff_ESI,(size_t)unaff_ESI[1]);
    pcVar6 = unaff_ESI[1] + 2;
    if (((unaff_ESI[4] == (char *)0x0) && (unaff_ESI[6] == (char *)0x0)) &&
       (unaff_ESI[8] == (char *)0x0)) goto LAB_00aca960;
    pcVar6[(int)_Dest] = '\\';
  }
  pcVar6 = pcVar6 + 1;
LAB_00aca960:
  pcVar2 = unaff_ESI[4];
  pcVar4 = unaff_ESI[5];
  pcVar3 = pcVar2;
  if (0 < (int)pcVar4) {
    do {
      pcVar3 = pcVar3 + (int)pcVar4;
      local_8 = (char *)0x0;
      pcVar4 = pcVar2;
      pcVar1 = pcVar3;
      if (pcVar3 != pcVar2) {
        do {
          pcVar1 = pcVar3;
          if ((*pcVar4 == '\0') || (pcVar1 = pcVar4, *pcVar4 == '/')) break;
          local_8 = (char *)((int)local_8 + 1);
          pcVar4 = pcVar4 + 1;
          pcVar1 = pcVar3;
        } while (local_8 < (uint)((int)pcVar3 - (int)pcVar2));
      }
      local_8 = pcVar1;
      sVar5 = (int)local_8 - (int)pcVar2;
      _strncpy(pcVar6 + (int)_Dest,pcVar2,sVar5);
      (pcVar6 + sVar5)[(int)_Dest] = '\\';
      pcVar3 = unaff_ESI[4];
      pcVar4 = unaff_ESI[5];
      pcVar2 = local_8 + 1;
      pcVar6 = pcVar6 + sVar5 + 1;
    } while ((int)pcVar2 - (int)pcVar3 < (int)pcVar4);
  }
  pcVar2 = unaff_ESI[6];
  pcVar4 = unaff_ESI[7];
  pcVar3 = pcVar2;
  if (0 < (int)pcVar4) {
    do {
      pcVar3 = pcVar3 + (int)pcVar4;
      local_8 = (char *)0x0;
      pcVar4 = pcVar2;
      pcVar1 = pcVar3;
      if (pcVar3 != pcVar2) {
        do {
          pcVar1 = pcVar3;
          if ((*pcVar4 == '\0') || (pcVar1 = pcVar4, *pcVar4 == '/')) break;
          local_8 = (char *)((int)local_8 + 1);
          pcVar4 = pcVar4 + 1;
          pcVar1 = pcVar3;
        } while (local_8 < (uint)((int)pcVar3 - (int)pcVar2));
      }
      local_8 = pcVar1;
      sVar5 = (int)local_8 - (int)pcVar2;
      _strncpy(pcVar6 + (int)_Dest,pcVar2,sVar5);
      (pcVar6 + sVar5)[(int)_Dest] = '\\';
      pcVar3 = unaff_ESI[6];
      pcVar4 = unaff_ESI[7];
      pcVar2 = local_8 + 1;
      pcVar6 = pcVar6 + sVar5 + 1;
    } while ((int)pcVar2 - (int)pcVar3 < (int)pcVar4);
  }
  _strncpy(pcVar6 + (int)_Dest,unaff_ESI[8],(size_t)unaff_ESI[9]);
  (unaff_ESI[9] + (int)_Dest)[(int)pcVar6] = '\0';
  return _Dest;
}



uint FUN_00acac80(uint *param_1,uint *param_2,uint param_3,uint param_4)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  longlong lVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  ulonglong uVar8;
  
  if ((DAT_032f16d0 >> 0x1a & 1) == 0) {
    uVar7 = 0;
    for (uVar6 = param_3 & 0xfffffff8; uVar6 != 0; uVar6 = uVar6 - 8) {
      lVar4 = (ulonglong)*param_2 * (ulonglong)param_4 + (ulonglong)uVar7;
      uVar5 = (uint)lVar4;
      uVar7 = *param_1;
      *param_1 = uVar5 + *param_1;
      lVar4 = (ulonglong)param_2[1] * (ulonglong)param_4 +
              (ulonglong)((int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar5,uVar7));
      uVar5 = (uint)lVar4;
      uVar7 = param_1[1];
      param_1[1] = uVar5 + param_1[1];
      lVar4 = (ulonglong)param_2[2] * (ulonglong)param_4 +
              (ulonglong)((int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar5,uVar7));
      uVar5 = (uint)lVar4;
      uVar7 = param_1[2];
      param_1[2] = uVar5 + param_1[2];
      lVar4 = (ulonglong)param_2[3] * (ulonglong)param_4 +
              (ulonglong)((int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar5,uVar7));
      uVar5 = (uint)lVar4;
      uVar7 = param_1[3];
      param_1[3] = uVar5 + param_1[3];
      lVar4 = (ulonglong)param_2[4] * (ulonglong)param_4 +
              (ulonglong)((int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar5,uVar7));
      uVar5 = (uint)lVar4;
      uVar7 = param_1[4];
      param_1[4] = uVar5 + param_1[4];
      lVar4 = (ulonglong)param_2[5] * (ulonglong)param_4 +
              (ulonglong)((int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar5,uVar7));
      uVar5 = (uint)lVar4;
      uVar7 = param_1[5];
      param_1[5] = uVar5 + param_1[5];
      lVar4 = (ulonglong)param_2[6] * (ulonglong)param_4 +
              (ulonglong)((int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar5,uVar7));
      uVar5 = (uint)lVar4;
      uVar7 = param_1[6];
      param_1[6] = uVar5 + param_1[6];
      lVar4 = (ulonglong)param_2[7] * (ulonglong)param_4 +
              (ulonglong)((int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar5,uVar7));
      uVar5 = (uint)lVar4;
      uVar7 = (int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar5,param_1[7]);
      param_1[7] = uVar5 + param_1[7];
      param_2 = param_2 + 8;
      param_1 = param_1 + 8;
    }
    param_3 = param_3 & 7;
    if (param_3 != 0) {
      lVar4 = (ulonglong)*param_2 * (ulonglong)param_4 + (ulonglong)uVar7;
      uVar6 = (uint)lVar4;
      uVar7 = (int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar6,*param_1);
      *param_1 = uVar6 + *param_1;
      if (param_3 != 1) {
        lVar4 = (ulonglong)param_2[1] * (ulonglong)param_4 + (ulonglong)uVar7;
        uVar6 = (uint)lVar4;
        uVar7 = (int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar6,param_1[1]);
        param_1[1] = uVar6 + param_1[1];
        if (param_3 != 2) {
          lVar4 = (ulonglong)param_2[2] * (ulonglong)param_4 + (ulonglong)uVar7;
          uVar6 = (uint)lVar4;
          uVar7 = (int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar6,param_1[2]);
          param_1[2] = uVar6 + param_1[2];
          if (param_3 != 3) {
            lVar4 = (ulonglong)param_2[3] * (ulonglong)param_4 + (ulonglong)uVar7;
            uVar6 = (uint)lVar4;
            uVar7 = (int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar6,param_1[3]);
            param_1[3] = uVar6 + param_1[3];
            if (param_3 != 4) {
              lVar4 = (ulonglong)param_2[4] * (ulonglong)param_4 + (ulonglong)uVar7;
              uVar6 = (uint)lVar4;
              uVar7 = (int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar6,param_1[4]);
              param_1[4] = uVar6 + param_1[4];
              if (param_3 != 5) {
                lVar4 = (ulonglong)param_2[5] * (ulonglong)param_4 + (ulonglong)uVar7;
                uVar6 = (uint)lVar4;
                uVar7 = (int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar6,param_1[5]);
                param_1[5] = uVar6 + param_1[5];
                if (param_3 != 6) {
                  lVar4 = (ulonglong)param_2[6] * (ulonglong)param_4 + (ulonglong)uVar7;
                  uVar6 = (uint)lVar4;
                  uVar7 = (int)((ulonglong)lVar4 >> 0x20) + (uint)CARRY4(uVar6,param_1[6]);
                  param_1[6] = uVar6 + param_1[6];
                }
              }
            }
          }
        }
      }
    }
    return uVar7;
  }
  uVar8 = 0;
  do {
    if ((param_3 & 0xfffffff8) == 0) goto LAB_00acad90;
    uVar7 = param_2[1];
    uVar6 = param_2[2];
    uVar5 = param_2[3];
    uVar8 = uVar8 + *param_1 + (ulonglong)*param_2 * (ulonglong)param_4;
    *param_1 = (uint)uVar8;
    uVar1 = param_2[4];
    uVar2 = param_2[5];
    uVar8 = (uVar8 >> 0x20) + (ulonglong)param_1[1] + (ulonglong)uVar7 * (ulonglong)param_4;
    uVar7 = param_2[6];
    param_1[1] = (uint)uVar8;
    uVar3 = param_2[7];
    param_2 = param_2 + 8;
    uVar8 = (uVar8 >> 0x20) + (ulonglong)param_1[2] + (ulonglong)uVar6 * (ulonglong)param_4;
    param_1[2] = (uint)uVar8;
    uVar8 = (uVar8 >> 0x20) + (ulonglong)uVar5 * (ulonglong)param_4 + (ulonglong)param_1[3];
    param_1[3] = (uint)uVar8;
    uVar8 = (uVar8 >> 0x20) + (ulonglong)uVar1 * (ulonglong)param_4 + (ulonglong)param_1[4];
    param_1[4] = (uint)uVar8;
    uVar8 = (uVar8 >> 0x20) + (ulonglong)uVar2 * (ulonglong)param_4 + (ulonglong)param_1[5];
    param_1[5] = (uint)uVar8;
    uVar8 = (uVar8 >> 0x20) + (ulonglong)uVar7 * (ulonglong)param_4 + (ulonglong)param_1[6];
    param_1[6] = (uint)uVar8;
    uVar8 = (uVar8 >> 0x20) + (ulonglong)uVar3 * (ulonglong)param_4 + (ulonglong)param_1[7];
    param_1[7] = (uint)uVar8;
    param_1 = param_1 + 8;
    uVar8 = uVar8 >> 0x20;
    param_3 = param_3 - 8;
  } while (param_3 != 0);
LAB_00acadb5:
  return (uint)uVar8;
LAB_00acad90:
  do {
    uVar7 = *param_2;
    param_2 = param_2 + 1;
    uVar8 = uVar8 + *param_1 + (ulonglong)uVar7 * (ulonglong)param_4;
    *param_1 = (uint)uVar8;
    param_3 = param_3 - 1;
    uVar8 = uVar8 >> 0x20;
    param_1 = param_1 + 1;
  } while (param_3 != 0);
  goto LAB_00acadb5;
}



uint FUN_00acaf70(undefined4 *param_1,uint *param_2,uint param_3,uint param_4)

{
  longlong lVar1;
  uint uVar2;
  uint uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  
  if ((DAT_032f16d0 >> 0x1a & 1) != 0) {
    uVar4 = 0;
    do {
      uVar3 = *param_2;
      param_2 = param_2 + 1;
      uVar5 = uVar4 + (ulonglong)uVar3 * (ulonglong)param_4;
      *param_1 = (int)uVar5;
      param_3 = param_3 - 1;
      uVar4 = uVar5 >> 0x20;
      param_1 = param_1 + 1;
    } while (param_3 != 0);
    return (uint)(uVar5 >> 0x20);
  }
  uVar3 = 0;
  for (uVar2 = param_3 & 0xfffffff8; uVar2 != 0; uVar2 = uVar2 - 8) {
    uVar4 = (ulonglong)*param_2 * (ulonglong)param_4 + (ulonglong)uVar3;
    *param_1 = (int)uVar4;
    uVar4 = (ulonglong)param_2[1] * (ulonglong)param_4 + (uVar4 >> 0x20);
    param_1[1] = (int)uVar4;
    uVar4 = (ulonglong)param_2[2] * (ulonglong)param_4 + (uVar4 >> 0x20);
    param_1[2] = (int)uVar4;
    uVar4 = (ulonglong)param_2[3] * (ulonglong)param_4 + (uVar4 >> 0x20);
    param_1[3] = (int)uVar4;
    uVar4 = (ulonglong)param_2[4] * (ulonglong)param_4 + (uVar4 >> 0x20);
    param_1[4] = (int)uVar4;
    uVar4 = (ulonglong)param_2[5] * (ulonglong)param_4 + (uVar4 >> 0x20);
    param_1[5] = (int)uVar4;
    uVar4 = (ulonglong)param_2[6] * (ulonglong)param_4 + (uVar4 >> 0x20);
    param_1[6] = (int)uVar4;
    lVar1 = (ulonglong)param_2[7] * (ulonglong)param_4 + (uVar4 >> 0x20);
    uVar3 = (uint)((ulonglong)lVar1 >> 0x20);
    param_1[7] = (int)lVar1;
    param_2 = param_2 + 8;
    param_1 = param_1 + 8;
  }
  param_3 = param_3 & 7;
  if (param_3 != 0) {
    lVar1 = (ulonglong)*param_2 * (ulonglong)param_4 + (ulonglong)uVar3;
    uVar3 = (uint)((ulonglong)lVar1 >> 0x20);
    *param_1 = (int)lVar1;
    if (param_3 != 1) {
      lVar1 = (ulonglong)param_2[1] * (ulonglong)param_4 + (ulonglong)uVar3;
      uVar3 = (uint)((ulonglong)lVar1 >> 0x20);
      param_1[1] = (int)lVar1;
      if (param_3 != 2) {
        lVar1 = (ulonglong)param_2[2] * (ulonglong)param_4 + (ulonglong)uVar3;
        uVar3 = (uint)((ulonglong)lVar1 >> 0x20);
        param_1[2] = (int)lVar1;
        if (param_3 != 3) {
          lVar1 = (ulonglong)param_2[3] * (ulonglong)param_4 + (ulonglong)uVar3;
          uVar3 = (uint)((ulonglong)lVar1 >> 0x20);
          param_1[3] = (int)lVar1;
          if (param_3 != 4) {
            lVar1 = (ulonglong)param_2[4] * (ulonglong)param_4 + (ulonglong)uVar3;
            uVar3 = (uint)((ulonglong)lVar1 >> 0x20);
            param_1[4] = (int)lVar1;
            if (param_3 != 5) {
              lVar1 = (ulonglong)param_2[5] * (ulonglong)param_4 + (ulonglong)uVar3;
              uVar3 = (uint)((ulonglong)lVar1 >> 0x20);
              param_1[5] = (int)lVar1;
              if (param_3 != 6) {
                lVar1 = (ulonglong)param_2[6] * (ulonglong)param_4 + (ulonglong)uVar3;
                uVar3 = (uint)((ulonglong)lVar1 >> 0x20);
                param_1[6] = (int)lVar1;
              }
            }
          }
        }
      }
    }
  }
  return uVar3;
}



void FUN_00acb130(longlong *param_1,uint *param_2,uint param_3)

{
  uint uVar1;
  
  if ((DAT_032f16d0 >> 0x1a & 1) != 0) {
    do {
      uVar1 = *param_2;
      param_2 = param_2 + 1;
      *param_1 = (ulonglong)uVar1 * (ulonglong)uVar1;
      param_3 = param_3 - 1;
      param_1 = param_1 + 1;
    } while (param_3 != 0);
    return;
  }
  for (uVar1 = param_3 & 0xfffffff8; uVar1 != 0; uVar1 = uVar1 - 8) {
    *param_1 = (ulonglong)*param_2 * (ulonglong)*param_2;
    param_1[1] = (ulonglong)param_2[1] * (ulonglong)param_2[1];
    param_1[2] = (ulonglong)param_2[2] * (ulonglong)param_2[2];
    param_1[3] = (ulonglong)param_2[3] * (ulonglong)param_2[3];
    param_1[4] = (ulonglong)param_2[4] * (ulonglong)param_2[4];
    param_1[5] = (ulonglong)param_2[5] * (ulonglong)param_2[5];
    param_1[6] = (ulonglong)param_2[6] * (ulonglong)param_2[6];
    param_1[7] = (ulonglong)param_2[7] * (ulonglong)param_2[7];
    param_2 = param_2 + 8;
    param_1 = param_1 + 8;
  }
  param_3 = param_3 & 7;
  if ((((param_3 != 0) && (*param_1 = (ulonglong)*param_2 * (ulonglong)*param_2, param_3 != 1)) &&
      (param_1[1] = (ulonglong)param_2[1] * (ulonglong)param_2[1], param_3 != 2)) &&
     (((param_1[2] = (ulonglong)param_2[2] * (ulonglong)param_2[2], param_3 != 3 &&
       (param_1[3] = (ulonglong)param_2[3] * (ulonglong)param_2[3], param_3 != 4)) &&
      ((param_1[4] = (ulonglong)param_2[4] * (ulonglong)param_2[4], param_3 != 5 &&
       (param_1[5] = (ulonglong)param_2[5] * (ulonglong)param_2[5], param_3 != 6)))))) {
    param_1[6] = (ulonglong)param_2[6] * (ulonglong)param_2[6];
  }
  return;
}



undefined4 FUN_00acb280(undefined4 param_1,undefined4 param_2,uint param_3)

{
  return (int)(CONCAT44(param_1,param_2) / (ulonglong)param_3);
}



uint FUN_00acb290(int *param_1,uint *param_2,uint *param_3,uint param_4)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  uVar1 = 0;
  for (uVar3 = param_4 & 0xfffffff8; uVar3 != 0; uVar3 = uVar3 - 8) {
    uVar2 = *param_2 + uVar1;
    uVar1 = (uint)CARRY4(*param_2,uVar1) + (uint)CARRY4(uVar2,*param_3);
    *param_1 = uVar2 + *param_3;
    uVar2 = param_2[1] + uVar1;
    uVar1 = (uint)CARRY4(param_2[1],uVar1) + (uint)CARRY4(uVar2,param_3[1]);
    param_1[1] = uVar2 + param_3[1];
    uVar2 = param_2[2] + uVar1;
    uVar1 = (uint)CARRY4(param_2[2],uVar1) + (uint)CARRY4(uVar2,param_3[2]);
    param_1[2] = uVar2 + param_3[2];
    uVar2 = param_2[3] + uVar1;
    uVar1 = (uint)CARRY4(param_2[3],uVar1) + (uint)CARRY4(uVar2,param_3[3]);
    param_1[3] = uVar2 + param_3[3];
    uVar2 = param_2[4] + uVar1;
    uVar1 = (uint)CARRY4(param_2[4],uVar1) + (uint)CARRY4(uVar2,param_3[4]);
    param_1[4] = uVar2 + param_3[4];
    uVar2 = param_2[5] + uVar1;
    uVar1 = (uint)CARRY4(param_2[5],uVar1) + (uint)CARRY4(uVar2,param_3[5]);
    param_1[5] = uVar2 + param_3[5];
    uVar2 = param_2[6] + uVar1;
    uVar1 = (uint)CARRY4(param_2[6],uVar1) + (uint)CARRY4(uVar2,param_3[6]);
    param_1[6] = uVar2 + param_3[6];
    uVar2 = param_2[7] + uVar1;
    uVar1 = (uint)CARRY4(param_2[7],uVar1) + (uint)CARRY4(uVar2,param_3[7]);
    param_1[7] = uVar2 + param_3[7];
    param_2 = param_2 + 8;
    param_3 = param_3 + 8;
    param_1 = param_1 + 8;
  }
  param_4 = param_4 & 7;
  if (param_4 != 0) {
    uVar3 = *param_2 + uVar1;
    uVar1 = (uint)CARRY4(*param_2,uVar1) + (uint)CARRY4(uVar3,*param_3);
    *param_1 = uVar3 + *param_3;
    if (param_4 != 1) {
      uVar3 = param_2[1] + uVar1;
      uVar1 = (uint)CARRY4(param_2[1],uVar1) + (uint)CARRY4(uVar3,param_3[1]);
      param_1[1] = uVar3 + param_3[1];
      if (param_4 != 2) {
        uVar3 = param_2[2] + uVar1;
        uVar1 = (uint)CARRY4(param_2[2],uVar1) + (uint)CARRY4(uVar3,param_3[2]);
        param_1[2] = uVar3 + param_3[2];
        if (param_4 != 3) {
          uVar3 = param_2[3] + uVar1;
          uVar1 = (uint)CARRY4(param_2[3],uVar1) + (uint)CARRY4(uVar3,param_3[3]);
          param_1[3] = uVar3 + param_3[3];
          if (param_4 != 4) {
            uVar3 = param_2[4] + uVar1;
            uVar1 = (uint)CARRY4(param_2[4],uVar1) + (uint)CARRY4(uVar3,param_3[4]);
            param_1[4] = uVar3 + param_3[4];
            if (param_4 != 5) {
              uVar3 = param_2[5] + uVar1;
              uVar1 = (uint)CARRY4(param_2[5],uVar1) + (uint)CARRY4(uVar3,param_3[5]);
              param_1[5] = uVar3 + param_3[5];
              if (param_4 != 6) {
                uVar3 = param_2[6] + uVar1;
                uVar1 = (uint)CARRY4(param_2[6],uVar1) + (uint)CARRY4(uVar3,param_3[6]);
                param_1[6] = uVar3 + param_3[6];
              }
            }
          }
        }
      }
    }
  }
  return uVar1;
}



uint FUN_00acb450(int *param_1,uint *param_2,uint *param_3,uint param_4)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  uVar1 = 0;
  for (uVar3 = param_4 & 0xfffffff8; uVar3 != 0; uVar3 = uVar3 - 8) {
    uVar2 = *param_2 - uVar1;
    uVar1 = (uint)(*param_2 < uVar1) + (uint)(uVar2 < *param_3);
    *param_1 = uVar2 - *param_3;
    uVar2 = param_2[1] - uVar1;
    uVar1 = (uint)(param_2[1] < uVar1) + (uint)(uVar2 < param_3[1]);
    param_1[1] = uVar2 - param_3[1];
    uVar2 = param_2[2] - uVar1;
    uVar1 = (uint)(param_2[2] < uVar1) + (uint)(uVar2 < param_3[2]);
    param_1[2] = uVar2 - param_3[2];
    uVar2 = param_2[3] - uVar1;
    uVar1 = (uint)(param_2[3] < uVar1) + (uint)(uVar2 < param_3[3]);
    param_1[3] = uVar2 - param_3[3];
    uVar2 = param_2[4] - uVar1;
    uVar1 = (uint)(param_2[4] < uVar1) + (uint)(uVar2 < param_3[4]);
    param_1[4] = uVar2 - param_3[4];
    uVar2 = param_2[5] - uVar1;
    uVar1 = (uint)(param_2[5] < uVar1) + (uint)(uVar2 < param_3[5]);
    param_1[5] = uVar2 - param_3[5];
    uVar2 = param_2[6] - uVar1;
    uVar1 = (uint)(param_2[6] < uVar1) + (uint)(uVar2 < param_3[6]);
    param_1[6] = uVar2 - param_3[6];
    uVar2 = param_2[7] - uVar1;
    uVar1 = (uint)(param_2[7] < uVar1) + (uint)(uVar2 < param_3[7]);
    param_1[7] = uVar2 - param_3[7];
    param_2 = param_2 + 8;
    param_3 = param_3 + 8;
    param_1 = param_1 + 8;
  }
  param_4 = param_4 & 7;
  if (param_4 != 0) {
    uVar3 = *param_2 - uVar1;
    uVar1 = (uint)(*param_2 < uVar1) + (uint)(uVar3 < *param_3);
    *param_1 = uVar3 - *param_3;
    if (param_4 != 1) {
      uVar3 = param_2[1] - uVar1;
      uVar1 = (uint)(param_2[1] < uVar1) + (uint)(uVar3 < param_3[1]);
      param_1[1] = uVar3 - param_3[1];
      if (param_4 != 2) {
        uVar3 = param_2[2] - uVar1;
        uVar1 = (uint)(param_2[2] < uVar1) + (uint)(uVar3 < param_3[2]);
        param_1[2] = uVar3 - param_3[2];
        if (param_4 != 3) {
          uVar3 = param_2[3] - uVar1;
          uVar1 = (uint)(param_2[3] < uVar1) + (uint)(uVar3 < param_3[3]);
          param_1[3] = uVar3 - param_3[3];
          if (param_4 != 4) {
            uVar3 = param_2[4] - uVar1;
            uVar1 = (uint)(param_2[4] < uVar1) + (uint)(uVar3 < param_3[4]);
            param_1[4] = uVar3 - param_3[4];
            if (param_4 != 5) {
              uVar3 = param_2[5] - uVar1;
              uVar1 = (uint)(param_2[5] < uVar1) + (uint)(uVar3 < param_3[5]);
              param_1[5] = uVar3 - param_3[5];
              if (param_4 != 6) {
                uVar3 = param_2[6] - uVar1;
                uVar1 = (uint)(param_2[6] < uVar1) + (uint)(uVar3 < param_3[6]);
                param_1[6] = uVar3 - param_3[6];
              }
            }
          }
        }
      }
    }
  }
  return uVar1;
}



uint FUN_00acb610(uint *param_1,uint *param_2,uint *param_3,uint param_4,uint param_5)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint *puVar4;
  uint uVar5;
  uint *puVar6;
  uint *puVar7;
  
  uVar1 = 0;
  for (uVar5 = param_4 & 0xfffffff8; uVar5 != 0; uVar5 = uVar5 - 8) {
    uVar3 = *param_2 - uVar1;
    uVar1 = (uint)(*param_2 < uVar1) + (uint)(uVar3 < *param_3);
    *param_1 = uVar3 - *param_3;
    uVar3 = param_2[1] - uVar1;
    uVar1 = (uint)(param_2[1] < uVar1) + (uint)(uVar3 < param_3[1]);
    param_1[1] = uVar3 - param_3[1];
    uVar3 = param_2[2] - uVar1;
    uVar1 = (uint)(param_2[2] < uVar1) + (uint)(uVar3 < param_3[2]);
    param_1[2] = uVar3 - param_3[2];
    uVar3 = param_2[3] - uVar1;
    uVar1 = (uint)(param_2[3] < uVar1) + (uint)(uVar3 < param_3[3]);
    param_1[3] = uVar3 - param_3[3];
    uVar3 = param_2[4] - uVar1;
    uVar1 = (uint)(param_2[4] < uVar1) + (uint)(uVar3 < param_3[4]);
    param_1[4] = uVar3 - param_3[4];
    uVar3 = param_2[5] - uVar1;
    uVar1 = (uint)(param_2[5] < uVar1) + (uint)(uVar3 < param_3[5]);
    param_1[5] = uVar3 - param_3[5];
    uVar3 = param_2[6] - uVar1;
    uVar1 = (uint)(param_2[6] < uVar1) + (uint)(uVar3 < param_3[6]);
    param_1[6] = uVar3 - param_3[6];
    uVar3 = param_2[7] - uVar1;
    uVar1 = (uint)(param_2[7] < uVar1) + (uint)(uVar3 < param_3[7]);
    param_1[7] = uVar3 - param_3[7];
    param_2 = param_2 + 8;
    param_3 = param_3 + 8;
    param_1 = param_1 + 8;
  }
  param_4 = param_4 & 7;
  puVar4 = param_1;
  puVar6 = param_2;
  puVar7 = param_3;
  if (param_4 != 0) {
    uVar5 = *param_2 - uVar1;
    uVar1 = (uint)(*param_2 < uVar1) + (uint)(uVar5 < *param_3);
    *param_1 = uVar5 - *param_3;
    puVar6 = param_2 + 1;
    puVar7 = param_3 + 1;
    puVar4 = param_1 + 1;
    if (param_4 != 1) {
      uVar5 = *puVar6 - uVar1;
      uVar1 = (uint)(*puVar6 < uVar1) + (uint)(uVar5 < *puVar7);
      *puVar4 = uVar5 - *puVar7;
      puVar6 = param_2 + 2;
      puVar7 = param_3 + 2;
      puVar4 = param_1 + 2;
      if (param_4 != 2) {
        uVar5 = *puVar6 - uVar1;
        uVar1 = (uint)(*puVar6 < uVar1) + (uint)(uVar5 < *puVar7);
        *puVar4 = uVar5 - *puVar7;
        puVar6 = param_2 + 3;
        puVar7 = param_3 + 3;
        puVar4 = param_1 + 3;
        if (param_4 != 3) {
          uVar5 = *puVar6 - uVar1;
          uVar1 = (uint)(*puVar6 < uVar1) + (uint)(uVar5 < *puVar7);
          *puVar4 = uVar5 - *puVar7;
          puVar6 = param_2 + 4;
          puVar7 = param_3 + 4;
          puVar4 = param_1 + 4;
          if (param_4 != 4) {
            uVar5 = *puVar6 - uVar1;
            uVar1 = (uint)(*puVar6 < uVar1) + (uint)(uVar5 < *puVar7);
            *puVar4 = uVar5 - *puVar7;
            puVar6 = param_2 + 5;
            puVar7 = param_3 + 5;
            puVar4 = param_1 + 5;
            if (param_4 != 5) {
              uVar5 = *puVar6 - uVar1;
              uVar1 = (uint)(*puVar6 < uVar1) + (uint)(uVar5 < *puVar7);
              *puVar4 = uVar5 - *puVar7;
              puVar6 = param_2 + 6;
              puVar7 = param_3 + 6;
              puVar4 = param_1 + 6;
              if (param_4 != 6) {
                uVar5 = *puVar6 - uVar1;
                uVar1 = (uint)(*puVar6 < uVar1) + (uint)(uVar5 < *puVar7);
                *puVar4 = uVar5 - *puVar7;
                puVar6 = param_2 + 7;
                puVar7 = param_3 + 7;
                puVar4 = param_1 + 7;
              }
            }
          }
        }
      }
    }
  }
  if (param_5 == 0) {
    return uVar1;
  }
  if (param_5 == 0) {
    return uVar1;
  }
  if ((int)param_5 < 0) {
    for (uVar5 = -param_5 & 0xfffffff8; uVar5 != 0; uVar5 = uVar5 - 8) {
      iVar2 = (uint)(uVar1 != 0) + (uint)(-uVar1 < *puVar7);
      *puVar4 = -uVar1 - *puVar7;
      uVar1 = -iVar2;
      iVar2 = (uint)(iVar2 != 0) + (uint)(uVar1 < puVar7[1]);
      puVar4[1] = uVar1 - puVar7[1];
      uVar1 = -iVar2;
      iVar2 = (uint)(iVar2 != 0) + (uint)(uVar1 < puVar7[2]);
      puVar4[2] = uVar1 - puVar7[2];
      uVar1 = -iVar2;
      iVar2 = (uint)(iVar2 != 0) + (uint)(uVar1 < puVar7[3]);
      puVar4[3] = uVar1 - puVar7[3];
      uVar1 = -iVar2;
      iVar2 = (uint)(iVar2 != 0) + (uint)(uVar1 < puVar7[4]);
      puVar4[4] = uVar1 - puVar7[4];
      uVar1 = -iVar2;
      iVar2 = (uint)(iVar2 != 0) + (uint)(uVar1 < puVar7[5]);
      puVar4[5] = uVar1 - puVar7[5];
      uVar1 = -iVar2;
      iVar2 = (uint)(iVar2 != 0) + (uint)(uVar1 < puVar7[6]);
      puVar4[6] = uVar1 - puVar7[6];
      uVar3 = -iVar2;
      uVar1 = (uint)(iVar2 != 0) + (uint)(uVar3 < puVar7[7]);
      puVar4[7] = uVar3 - puVar7[7];
      puVar7 = puVar7 + 8;
      puVar4 = puVar4 + 8;
    }
    uVar5 = -param_5 & 7;
    if (uVar5 == 0) {
      return uVar1;
    }
    uVar3 = (uint)(uVar1 != 0) + (uint)(-uVar1 < *puVar7);
    *puVar4 = -uVar1 - *puVar7;
    if (uVar5 == 1) {
      return uVar3;
    }
    uVar1 = (uint)(uVar3 != 0) + (uint)(-uVar3 < puVar7[1]);
    puVar4[1] = -uVar3 - puVar7[1];
    if (uVar5 == 2) {
      return uVar1;
    }
    uVar3 = (uint)(uVar1 != 0) + (uint)(-uVar1 < puVar7[2]);
    puVar4[2] = -uVar1 - puVar7[2];
    if (uVar5 == 3) {
      return uVar3;
    }
    uVar1 = (uint)(uVar3 != 0) + (uint)(-uVar3 < puVar7[3]);
    puVar4[3] = -uVar3 - puVar7[3];
    if (uVar5 == 4) {
      return uVar1;
    }
    uVar3 = (uint)(uVar1 != 0) + (uint)(-uVar1 < puVar7[4]);
    puVar4[4] = -uVar1 - puVar7[4];
    if (uVar5 == 5) {
      return uVar3;
    }
    uVar1 = (uint)(uVar3 != 0) + (uint)(-uVar3 < puVar7[5]);
    puVar4[5] = -uVar3 - puVar7[5];
    if (uVar5 != 6) {
      uVar5 = puVar7[6];
      puVar4[6] = -uVar1 - uVar5;
      return (uint)(uVar1 != 0) + (uint)(-uVar1 < uVar5);
    }
    return uVar1;
  }
  for (uVar5 = param_5 & 0xfffffff8; uVar5 != 0; uVar5 = uVar5 - 8) {
    uVar3 = *puVar6;
    *puVar4 = uVar3 - uVar1;
    if (uVar1 <= uVar3) goto LAB_00acbb18;
    uVar3 = puVar6[1];
    puVar4[1] = uVar3 - uVar1;
    if (uVar1 <= uVar3) goto LAB_00acbb1e;
    uVar3 = puVar6[2];
    puVar4[2] = uVar3 - uVar1;
    if (uVar1 <= uVar3) goto LAB_00acbb24;
    uVar3 = puVar6[3];
    puVar4[3] = uVar3 - uVar1;
    if (uVar1 <= uVar3) goto LAB_00acbb2a;
    uVar3 = puVar6[4];
    puVar4[4] = uVar3 - uVar1;
    if (uVar1 <= uVar3) goto LAB_00acbb30;
    uVar3 = puVar6[5];
    puVar4[5] = uVar3 - uVar1;
    if (uVar1 <= uVar3) goto LAB_00acbb36;
    uVar3 = puVar6[6];
    puVar4[6] = uVar3 - uVar1;
    if (uVar1 <= uVar3) goto LAB_00acbb3c;
    uVar3 = puVar6[7];
    puVar4[7] = uVar3 - uVar1;
    if (uVar1 <= uVar3) goto LAB_00acbb42;
    puVar6 = puVar6 + 8;
    puVar4 = puVar4 + 8;
  }
  uVar5 = param_5 & 7;
  if (uVar5 == 0) {
    return uVar1;
  }
  uVar3 = *puVar6;
  *puVar4 = uVar3 - uVar1;
  if (uVar1 <= uVar3) goto LAB_00acbb62;
  iVar2 = uVar5 - 1;
  if (iVar2 == 0) {
    return uVar1;
  }
  uVar3 = puVar6[1];
  puVar4[1] = uVar3 - uVar1;
  if (uVar1 <= uVar3) goto LAB_00acbb6f;
  iVar2 = uVar5 - 2;
  if (iVar2 == 0) {
    return uVar1;
  }
  uVar3 = puVar6[2];
  puVar4[2] = uVar3 - uVar1;
  if (uVar1 <= uVar3) goto LAB_00acbb7c;
  iVar2 = uVar5 - 3;
  if (iVar2 == 0) {
    return uVar1;
  }
  uVar3 = puVar6[3];
  puVar4[3] = uVar3 - uVar1;
  if (uVar1 <= uVar3) goto LAB_00acbb89;
  iVar2 = uVar5 - 4;
  if (iVar2 == 0) {
    return uVar1;
  }
  uVar3 = puVar6[4];
  puVar4[4] = uVar3 - uVar1;
  if (uVar3 < uVar1) {
    iVar2 = uVar5 - 5;
    if (iVar2 == 0) {
      return uVar1;
    }
    uVar5 = puVar6[5];
    puVar4[5] = uVar5 - uVar1;
    if (uVar5 < uVar1) {
      if (iVar2 == 1) {
        return uVar1;
      }
      uVar5 = puVar6[6];
      puVar4[6] = uVar5 - uVar1;
      if (uVar1 <= uVar5) {
        return 0;
      }
      return 1;
    }
    goto LAB_00acbba3;
  }
LAB_00acbb96:
  iVar2 = iVar2 + -1;
  if (iVar2 == 0) {
    return 0;
  }
  puVar4[5] = puVar6[5];
LAB_00acbba3:
  if (iVar2 != 1) {
    puVar4[6] = puVar6[6];
  }
  return 0;
LAB_00acbb42:
  while( true ) {
    puVar6 = puVar6 + 8;
    puVar4 = puVar4 + 8;
    uVar5 = uVar5 - 8;
    if (uVar5 == 0) break;
    *puVar4 = *puVar6;
LAB_00acbb18:
    puVar4[1] = puVar6[1];
LAB_00acbb1e:
    puVar4[2] = puVar6[2];
LAB_00acbb24:
    puVar4[3] = puVar6[3];
LAB_00acbb2a:
    puVar4[4] = puVar6[4];
LAB_00acbb30:
    puVar4[5] = puVar6[5];
LAB_00acbb36:
    puVar4[6] = puVar6[6];
LAB_00acbb3c:
    puVar4[7] = puVar6[7];
  }
  if ((param_5 & 7) == 0) {
    return 0;
  }
  *puVar4 = *puVar6;
LAB_00acbb62:
  iVar2 = (param_5 & 7) - 1;
  if (iVar2 == 0) {
    return 0;
  }
  puVar4[1] = puVar6[1];
LAB_00acbb6f:
  iVar2 = iVar2 + -1;
  if (iVar2 == 0) {
    return 0;
  }
  puVar4[2] = puVar6[2];
LAB_00acbb7c:
  iVar2 = iVar2 + -1;
  if (iVar2 == 0) {
    return 0;
  }
  puVar4[3] = puVar6[3];
LAB_00acbb89:
  iVar2 = iVar2 + -1;
  if (iVar2 == 0) {
    return 0;
  }
  puVar4[4] = puVar6[4];
  goto LAB_00acbb96;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00acbbc0(int *param_1,void *param_2,uint param_3,int param_4,undefined4 param_5)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  bool bVar5;
  undefined4 local_8c;
  void *local_88;
  byte abStack_84 [128];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_8c;
  local_8c = param_5;
  local_88 = param_2;
  bVar5 = param_4 == 0;
  if (bVar5) {
    param_4 = *param_1;
  }
  else {
    *param_1 = param_4;
  }
  if (param_2 == (void *)0x0) {
    if (!bVar5) goto LAB_00acbcfc;
  }
  else {
    iVar2 = FUN_00a925f0(param_4);
    if (0x80 < iVar2) {
      FUN_00a7fd60(".\\crypto\\hmac\\hmac.c",0x68,"j <= (int)sizeof(ctx->key)");
    }
    if (iVar2 < (int)param_3) {
      piVar1 = param_1 + 1;
      iVar2 = FUN_00a91380(piVar1,param_4,local_8c);
      if (((iVar2 == 0) || (iVar2 = FUN_00a91530(piVar1,local_88,param_3), iVar2 == 0)) ||
         (iVar2 = FUN_00a91540(piVar1,param_1 + 0x14,param_1 + 0x13), iVar2 == 0))
      goto LAB_00acbd9f;
    }
    else {
      if (0x80 < param_3) {
        FUN_00a7fd60(".\\crypto\\hmac\\hmac.c",0x75,"len>=0 && len<=(int)sizeof(ctx->key)");
      }
      _memcpy(param_1 + 0x14,local_88,param_3);
      param_1[0x13] = param_3;
    }
    iVar2 = param_1[0x13];
    if (iVar2 != 0x80) {
      _memset((void *)(iVar2 + 0x50 + (int)param_1),0,0x80 - iVar2);
    }
LAB_00acbcfc:
    uVar4 = local_8c;
    iVar2 = 0;
    do {
      abStack_84[iVar2] = *(byte *)((int)param_1 + iVar2 + 0x50) ^ 0x36;
      iVar2 = iVar2 + 1;
    } while (iVar2 < 0x80);
    iVar2 = FUN_00a91380(param_1 + 7,param_4,local_8c);
    if (iVar2 == 0) goto LAB_00acbd9f;
    uVar3 = FUN_00a925f0(param_4);
    iVar2 = FUN_00a91530(param_1 + 7,abStack_84,uVar3);
    if (iVar2 == 0) goto LAB_00acbd9f;
    iVar2 = 0;
    do {
      abStack_84[iVar2] = *(byte *)((int)param_1 + iVar2 + 0x50) ^ 0x5c;
      iVar2 = iVar2 + 1;
    } while (iVar2 < 0x80);
    iVar2 = FUN_00a91380(param_1 + 0xd,param_4,uVar4);
    if (iVar2 == 0) goto LAB_00acbd9f;
    uVar4 = FUN_00a925f0(param_4);
    iVar2 = FUN_00a91530(param_1 + 0xd,abStack_84,uVar4);
    if (iVar2 == 0) goto LAB_00acbd9f;
  }
  FUN_00a916d0(param_1 + 1,param_1 + 7);
LAB_00acbd9f:
  ___security_check_cookie_4();
  return;
}



void FUN_00acbdc0(void)

{
  FUN_00a91530();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00acbdd0(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  undefined4 local_48;
  undefined local_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_48;
  iVar2 = param_1 + 4;
  iVar1 = FUN_00a91540(iVar2,local_44,&local_48);
  if (iVar1 != 0) {
    iVar1 = FUN_00a916d0(iVar2,param_1 + 0x34);
    if (iVar1 != 0) {
      iVar1 = FUN_00a91530(iVar2,local_44,local_48);
      if (iVar1 != 0) {
        iVar2 = FUN_00a91540(iVar2,param_2,param_3);
        if (iVar2 != 0) {
          ___security_check_cookie_4();
          return;
        }
      }
    }
  }
  ___security_check_cookie_4();
  return;
}



void FUN_00acbe80(int param_1)

{
  FUN_00a91330(param_1 + 0x1c);
  FUN_00a91330(param_1 + 0x34);
  FUN_00a91330(param_1 + 4);
  return;
}



void FUN_00acbf20(void *param_1)

{
  FUN_00a915c0((int)param_1 + 0x1c);
  FUN_00a915c0((int)param_1 + 0x34);
  FUN_00a915c0((int)param_1 + 4);
  _memset(param_1,0,0xd0);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00acbf90(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,
                 undefined *param_6,undefined4 param_7)

{
  int iVar1;
  undefined4 local_d8;
  undefined local_d4 [4];
  undefined local_d0 [24];
  undefined local_b8 [24];
  undefined local_a0 [156];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_d8;
  local_d8 = param_4;
  if (param_6 == (undefined *)0x0) {
    param_6 = &DAT_032edae0;
  }
  FUN_00a91330(local_b8);
  FUN_00a91330(local_a0);
  FUN_00a91330(local_d0);
  if ((param_2 != 0) && (param_1 != 0)) {
    FUN_00a91330(local_b8);
    FUN_00a91330(local_a0);
    FUN_00a91330(local_d0);
  }
  iVar1 = FUN_00acbbc0(local_d4,param_2,param_3,param_1,0);
  if (((iVar1 != 0) && (iVar1 = FUN_00a91530(local_d0,local_d8,param_5), iVar1 != 0)) &&
     (iVar1 = FUN_00acbdd0(local_d4,param_6,param_7), iVar1 != 0)) {
    FUN_00acbf20(local_d4);
  }
  ___security_check_cookie_4();
  return;
}



void FUN_00acc120(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00dc4064);
  return;
}



void FUN_00acc140(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00dc4064);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00acc160(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,size_t param_7,
            void *param_8,undefined4 param_9)

{
  size_t _Size;
  size_t sVar1;
  void *_Dst;
  void *_Src;
  int iVar2;
  int iVar3;
  undefined *puVar4;
  int iVar5;
  int iVar6;
  size_t _Size_00;
  undefined *puVar7;
  undefined *puVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int local_30;
  undefined4 local_20;
  undefined local_18 [20];
  undefined4 uStack_4;
  
  uStack_4 = 0xacc16a;
  iVar10 = 0;
  local_20 = 0;
  FUN_00a91330(local_18);
  _Size = FUN_00a925f0(param_9);
  sVar1 = FUN_00a92600(param_9);
  if ((int)sVar1 < 0) {
    return 0;
  }
  _Dst = (void *)FUN_00a84f80(_Size,".\\crypto\\pkcs12\\p12_key.c",0x8a);
  _Src = (void *)FUN_00a84f80(sVar1,".\\crypto\\pkcs12\\p12_key.c",0x8b);
  iVar2 = FUN_00a84f80(_Size + 1,".\\crypto\\pkcs12\\p12_key.c",0x8c);
  iVar11 = ((int)((_Size - 1) + param_4) / (int)_Size) * _Size;
  if (param_2 == 0) {
    local_30 = 0;
  }
  else {
    local_30 = ((int)((_Size - 1) + param_2) / (int)_Size) * _Size;
  }
  iVar3 = local_30 + iVar11;
  puVar4 = (undefined *)FUN_00a84f80(iVar3,".\\crypto\\pkcs12\\p12_key.c",0x91);
  iVar5 = FUN_00a9aa10();
  iVar6 = FUN_00a9aa10();
  if (((((_Dst != (void *)0x0) && (_Src != (void *)0x0)) && (iVar2 != 0)) &&
      ((puVar4 != (undefined *)0x0 && (iVar5 != 0)))) && (iVar6 != 0)) {
    if (0 < (int)_Size) {
      _memset(_Dst,param_5,_Size);
    }
    puVar7 = puVar4;
    puVar8 = puVar4;
    if (0 < iVar11) {
      do {
        iVar9 = iVar10 % param_4;
        iVar10 = iVar10 + 1;
        puVar8 = puVar7 + 1;
        *puVar7 = *(undefined *)(iVar9 + param_3);
        puVar7 = puVar8;
      } while (iVar10 < iVar11);
    }
    iVar10 = 0;
    if (0 < local_30) {
      do {
        iVar11 = iVar10 % param_2;
        iVar10 = iVar10 + 1;
        *puVar8 = *(undefined *)(iVar11 + param_1);
        puVar8 = puVar8 + 1;
      } while (iVar10 < local_30);
    }
    iVar10 = FUN_00a91380(local_18,param_9,0);
    if (iVar10 != 0) {
      while (((iVar10 = FUN_00a91530(local_18,_Dst,_Size), iVar10 != 0 &&
              (iVar10 = FUN_00a91530(local_18,puVar4,iVar3), iVar10 != 0)) &&
             (iVar10 = FUN_00a91540(local_18,_Src,0), iVar10 != 0))) {
        iVar10 = 1;
        if (1 < param_6) {
          do {
            iVar11 = FUN_00a91380(local_18,param_9,0);
            if (((iVar11 == 0) || (iVar11 = FUN_00a91530(local_18,_Src,sVar1), iVar11 == 0)) ||
               (iVar11 = FUN_00a91540(local_18,_Src,0), iVar11 == 0)) goto LAB_00acc2e1;
            iVar10 = iVar10 + 1;
          } while (iVar10 < param_6);
        }
        _Size_00 = param_7;
        if ((int)sVar1 <= (int)param_7) {
          _Size_00 = sVar1;
        }
        _memcpy(param_8,_Src,_Size_00);
        if ((int)param_7 <= (int)sVar1) {
          local_20 = 1;
          goto LAB_00acc2f9;
        }
        param_8 = (void *)((int)param_8 + sVar1);
        param_7 = param_7 - sVar1;
        iVar10 = 0;
        if (0 < (int)_Size) {
          do {
            iVar11 = iVar10 + 1;
            *(undefined *)(iVar10 + iVar2) = *(undefined *)(iVar10 % (int)sVar1 + (int)_Src);
            iVar10 = iVar11;
          } while (iVar11 < (int)_Size);
        }
        iVar10 = FUN_00a9acb0(iVar2,_Size,iVar6);
        if ((iVar10 == 0) || (iVar10 = FUN_00a9b7f0(iVar6,1), iVar10 == 0)) break;
        iVar10 = 0;
        puVar8 = puVar4;
        if (0 < iVar3) {
          do {
            iVar11 = FUN_00a9acb0(puVar8,_Size,iVar5);
            if (((iVar11 == 0) || (iVar11 = FUN_00ad17f0(iVar5,iVar5,iVar6), iVar11 == 0)) ||
               (iVar11 = FUN_00a9ad90(iVar5,iVar2), iVar11 == 0)) goto LAB_00acc2e1;
            iVar11 = FUN_00a9a920(iVar5);
            iVar11 = (int)(iVar11 + 7 + (iVar11 + 7 >> 0x1f & 7U)) >> 3;
            if ((int)_Size < iVar11) {
              iVar11 = FUN_00a9ad90(iVar5,iVar2);
              if (iVar11 == 0) goto LAB_00acc2e1;
              _memcpy(puVar8,(void *)(iVar2 + 1),_Size);
            }
            else {
              if (iVar11 < (int)_Size) {
                _memset(puVar8,0,_Size - iVar11);
                iVar11 = FUN_00a9ad90(iVar5,puVar4 + _Size + (iVar10 - iVar11));
              }
              else {
                iVar11 = FUN_00a9ad90(iVar5,puVar8);
              }
              if (iVar11 == 0) goto LAB_00acc2e1;
            }
            iVar10 = iVar10 + _Size;
            puVar8 = puVar8 + _Size;
          } while (iVar10 < iVar3);
        }
        iVar10 = FUN_00a91380(local_18,param_9,0);
        if (iVar10 == 0) break;
      }
    }
  }
LAB_00acc2e1:
  FUN_00a7f3c0(0x23,0x6f,0x41,".\\crypto\\pkcs12\\p12_key.c",0xd1);
LAB_00acc2f9:
  FUN_00a85120(_Src);
  FUN_00a85120(iVar2);
  FUN_00a85120(_Dst);
  FUN_00a85120(puVar4);
  FUN_00a9a9b0(iVar5);
  FUN_00a9a9b0(iVar6);
  FUN_00a915c0(local_18);
  return local_20;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00acc5c0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
                undefined4 param_9)

{
  int iVar1;
  int local_4;
  
  local_4 = 0xacc5ca;
  if (param_1 == 0) {
    local_4 = param_1;
  }
  else {
    iVar1 = FUN_00ae3b20(param_1,param_2,&param_1,&local_4);
    if (iVar1 == 0) {
      FUN_00a7f3c0(0x23,0x6e,0x41,".\\crypto\\pkcs12\\p12_key.c",0x59);
      return 0;
    }
  }
  iVar1 = FUN_00acc160(param_1,local_4,param_3,param_4,param_5,param_6,param_7,param_8,param_9);
  if (iVar1 < 1) {
    return 0;
  }
  if (param_1 != 0) {
    FUN_00a84330(param_1,local_4);
    FUN_00a85120(param_1);
  }
  return iVar1;
}



bool FUN_00acc680(int *param_1)

{
  int iVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  char cVar6;
  int iVar7;
  
  if (param_1[1] != 0x18) {
    return false;
  }
  iVar3 = *param_1;
  iVar4 = param_1[2];
  iVar5 = 0;
  if (iVar3 < 0xd) {
    return false;
  }
  iVar7 = 0;
  do {
    if ((iVar7 == 6) &&
       (((cVar6 = *(char *)(iVar5 + iVar4), cVar6 == 'Z' || (cVar6 == '+')) || (cVar6 == '-'))))
    break;
    cVar6 = *(char *)(iVar5 + iVar4);
    if (cVar6 < '0') {
      return false;
    }
    if ('9' < cVar6) {
      return false;
    }
    if (iVar3 < iVar5 + 1) {
      return false;
    }
    cVar2 = *(char *)(iVar5 + 1 + iVar4);
    if (cVar2 < '0') {
      return false;
    }
    if ('9' < cVar2) {
      return false;
    }
    iVar5 = iVar5 + 2;
    iVar1 = cVar2 + -0x30 + (cVar6 + -0x30) * 10;
    if (iVar3 < iVar5) {
      return false;
    }
    if (iVar1 < (int)(&DAT_00dc409c)[iVar7]) {
      return false;
    }
    if ((int)(&DAT_00dc40c0)[iVar7] < iVar1) {
      return false;
    }
    iVar7 = iVar7 + 1;
  } while (iVar7 < 7);
  if (*(char *)(iVar5 + iVar4) == '.') {
    iVar7 = iVar5 + 1;
    if (iVar3 < iVar7) {
      return false;
    }
    cVar6 = *(char *)(iVar7 + iVar4);
    iVar5 = iVar7;
    if (cVar6 < '0') {
      return false;
    }
    do {
      if (('9' < cVar6) || (iVar3 < iVar5)) break;
      cVar6 = *(char *)(iVar5 + 1 + iVar4);
      iVar5 = iVar5 + 1;
    } while ('/' < cVar6);
    if (iVar7 == iVar5) {
      return false;
    }
  }
  cVar6 = *(char *)(iVar5 + iVar4);
  if (cVar6 == 'Z') {
    return iVar5 + 1 == iVar3;
  }
  if (((cVar6 == '+') || (cVar6 == '-')) && (iVar7 = iVar5 + 1, iVar5 + 5 <= iVar3)) {
    iVar5 = 0;
    while ((cVar6 = *(char *)(iVar7 + iVar4), '/' < cVar6 && (cVar6 < ':'))) {
      cVar2 = *(char *)(iVar7 + 1 + iVar4);
      if (cVar2 < '0') {
        return false;
      }
      if ('9' < cVar2) {
        return false;
      }
      iVar1 = cVar2 + -0x30 + (cVar6 + -0x30) * 10;
      if (iVar1 < *(int *)((int)&DAT_00dc40b8 + iVar5)) {
        return false;
      }
      if (*(int *)((int)&DAT_00dc40dc + iVar5) < iVar1) {
        return false;
      }
      iVar5 = iVar5 + 4;
      iVar7 = iVar7 + 2;
      if (7 < iVar5) {
        return iVar7 == iVar3;
      }
    }
  }
  return false;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint * FUN_00acc7f0(uint *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5)

{
  char *pcVar1;
  char cVar2;
  undefined4 *puVar3;
  int iVar4;
  char *pcVar5;
  undefined local_24 [32];
  undefined4 uStack_4;
  
  uStack_4 = 0xacc7fa;
  if ((param_1 == (uint *)0x0) && (param_1 = (uint *)FUN_00a90d30(0x18), param_1 == (uint *)0x0)) {
    return (uint *)0x0;
  }
  puVar3 = (undefined4 *)FUN_00accb80(&param_2,local_24);
  if (puVar3 == (undefined4 *)0x0) {
    return (uint *)0x0;
  }
  if (((param_4 != 0) || (param_5 != 0)) &&
     (iVar4 = FUN_00accd20(puVar3,param_4,param_5), iVar4 == 0)) {
    return (uint *)0x0;
  }
  pcVar5 = (char *)param_1[2];
  if ((pcVar5 == (char *)0x0) || (*param_1 < 0x14)) {
    pcVar5 = (char *)FUN_00a84f80(0x14,".\\crypto\\asn1\\a_gentm.c",0xf3);
    if (pcVar5 == (char *)0x0) {
      FUN_00a7f3c0(0xd,0xd8,0x41,".\\crypto\\asn1\\a_gentm.c",0xf7);
      return (uint *)0x0;
    }
    if (param_1[2] != 0) {
      FUN_00a85120(param_1[2]);
    }
    param_1[2] = (uint)pcVar5;
  }
  FUN_00a86220(pcVar5,0x14,"%04d%02d%02d%02d%02d%02dZ",puVar3[5] + 0x76c,puVar3[4] + 1,puVar3[3],
               puVar3[2],puVar3[1],*puVar3);
  pcVar1 = pcVar5 + 1;
  do {
    cVar2 = *pcVar5;
    pcVar5 = pcVar5 + 1;
  } while (cVar2 != '\0');
  *param_1 = (int)pcVar5 - (int)pcVar1;
  param_1[1] = 0x18;
  return param_1;
}



bool FUN_00acc910(int *param_1)

{
  int iVar1;
  char cVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  
  if (param_1[1] != 0x17) {
    return false;
  }
  iVar4 = *param_1;
  iVar5 = param_1[2];
  iVar6 = 0;
  if (iVar4 < 0xb) {
    return false;
  }
  iVar7 = 0;
  do {
    if ((iVar7 == 5) &&
       (((cVar2 = *(char *)(iVar6 + iVar5), cVar2 == 'Z' || (cVar2 == '+')) || (cVar2 == '-'))))
    break;
    cVar2 = *(char *)(iVar6 + iVar5);
    if (cVar2 < '0') {
      return false;
    }
    if ('9' < cVar2) {
      return false;
    }
    if (iVar4 < iVar6 + 1) {
      return false;
    }
    cVar3 = *(char *)(iVar6 + 1 + iVar5);
    if (cVar3 < '0') {
      return false;
    }
    if ('9' < cVar3) {
      return false;
    }
    iVar6 = iVar6 + 2;
    iVar1 = cVar3 + -0x30 + (cVar2 + -0x30) * 10;
    if (iVar4 < iVar6) {
      return false;
    }
    if (iVar1 < (int)(&DAT_00dc4118)[iVar7]) {
      return false;
    }
    if ((int)(&DAT_00dc4138)[iVar7] < iVar1) {
      return false;
    }
    iVar7 = iVar7 + 1;
  } while (iVar7 < 6);
  cVar2 = *(char *)(iVar6 + iVar5);
  if (cVar2 == 'Z') {
    iVar6 = iVar6 + 1;
  }
  else if ((cVar2 == '+') || (cVar2 == '-')) {
    iVar7 = iVar6 + 1;
    if (iVar4 < iVar6 + 5) {
      return false;
    }
    iVar6 = 0;
    while( true ) {
      cVar2 = *(char *)(iVar7 + iVar5);
      if (cVar2 < '0') {
        return false;
      }
      if ('9' < cVar2) {
        return false;
      }
      cVar3 = *(char *)(iVar7 + 1 + iVar5);
      if (cVar3 < '0') {
        return false;
      }
      if ('9' < cVar3) break;
      iVar1 = cVar3 + -0x30 + (cVar2 + -0x30) * 10;
      if (iVar1 < *(int *)((int)&DAT_00dc4130 + iVar6)) {
        return false;
      }
      if (*(int *)((int)&DAT_00dc4150 + iVar6) < iVar1) {
        return false;
      }
      iVar6 = iVar6 + 4;
      iVar7 = iVar7 + 2;
      if (7 < iVar6) {
        return iVar7 == iVar4;
      }
    }
    return false;
  }
  return iVar6 == iVar4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint * FUN_00acca40(uint *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5)

{
  char *pcVar1;
  char cVar2;
  undefined4 *puVar3;
  int iVar4;
  char *pcVar5;
  undefined local_24 [32];
  undefined4 uStack_4;
  
  uStack_4 = 0xacca4a;
  if ((param_1 == (uint *)0x0) && (param_1 = (uint *)FUN_00a90d30(0x17), param_1 == (uint *)0x0)) {
    return (uint *)0x0;
  }
  puVar3 = (undefined4 *)FUN_00accb80(&param_2,local_24);
  if (puVar3 != (undefined4 *)0x0) {
    if (((param_4 != 0) || (param_5 != 0)) &&
       (iVar4 = FUN_00accd20(puVar3,param_4,param_5), iVar4 == 0)) {
      return (uint *)0x0;
    }
    if ((0x31 < (int)puVar3[5]) && ((int)puVar3[5] < 0x96)) {
      pcVar5 = (char *)param_1[2];
      if ((pcVar5 == (char *)0x0) || (*param_1 < 0x14)) {
        pcVar5 = (char *)FUN_00a84f80(0x14,".\\crypto\\asn1\\a_utctm.c",0xdd);
        if (pcVar5 == (char *)0x0) {
          FUN_00a7f3c0(0xd,0xda,0x41,".\\crypto\\asn1\\a_utctm.c",0xe0);
          return (uint *)0x0;
        }
        if (param_1[2] != 0) {
          FUN_00a85120(param_1[2]);
        }
        param_1[2] = (uint)pcVar5;
      }
      FUN_00a86220(pcVar5,0x14,"%02d%02d%02d%02d%02d%02dZ",(int)puVar3[5] % 100,puVar3[4] + 1,
                   puVar3[3],puVar3[2],puVar3[1],*puVar3);
      pcVar1 = pcVar5 + 1;
      do {
        cVar2 = *pcVar5;
        pcVar5 = pcVar5 + 1;
      } while (cVar2 != '\0');
      *param_1 = (int)pcVar5 - (int)pcVar1;
      param_1[1] = 0x17;
      return param_1;
    }
  }
  return (uint *)0x0;
}



void FUN_00accb80(__time64_t *param_1,int *param_2)

{
  tm *ptVar1;
  int iVar2;
  
  ptVar1 = __gmtime64(param_1);
  if (ptVar1 == (tm *)0x0) {
    return;
  }
  for (iVar2 = 9; iVar2 != 0; iVar2 = iVar2 + -1) {
    *param_2 = ptVar1->tm_sec;
    ptVar1 = (tm *)&ptVar1->tm_min;
    param_2 = param_2 + 1;
  }
  return;
}



int __thiscall FUN_00accbb0(int param_1_00,int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int unaff_EDI;
  
  iVar2 = (param_1_00 + -0xe) / 0xc;
  iVar1 = ((iVar2 + 0x1324 + unaff_EDI) / 100) * 3;
  iVar3 = (iVar2 + 0x12c0 + unaff_EDI) * 0x5b5;
  return ((int)(iVar3 + (iVar3 >> 0x1f & 3U)) >> 2) + -0x7d4b +
         (((param_1_00 + iVar2 * -0xc + -2) * 0x16f) / 0xc -
         ((int)(iVar1 + (iVar1 >> 0x1f & 3U)) >> 2)) + param_1;
}



void __thiscall FUN_00accc40(int param_1_00,int *param_1,int *param_2,int *param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar1 = ((param_1_00 + 0x10bd9) * 4) / 0x23ab1;
  iVar2 = iVar1 * 0x23ab1 + 3;
  iVar4 = (param_1_00 + 0x10bd9) - ((int)(iVar2 + (iVar2 >> 0x1f & 3U)) >> 2);
  iVar2 = ((iVar4 + 1) * 4000) / 0x164b09;
  iVar3 = iVar2 * 0x5b5;
  iVar4 = iVar4 + (0x1f - ((int)(iVar3 + (iVar3 >> 0x1f & 3U)) >> 2));
  iVar3 = (iVar4 * 0x50) / 0x98f;
  *param_3 = iVar4 - (iVar3 * 0x98f) / 0x50;
  *param_2 = iVar3 + (iVar3 / 0xb) * -0xc + 2;
  *param_1 = (iVar1 + -0x31) * 100 + iVar2 + iVar3 / 0xb;
  return;
}



undefined4 FUN_00accd20(int *param_1,int param_2,int param_3)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  piVar2 = param_1;
  iVar5 = param_3 / 0x15180 + param_2;
  iVar4 = param_3 % 0x15180 + *param_1 + (param_1[1] + param_1[2] * 0x3c) * 0x3c;
  if (iVar4 < 0x15180) {
    if (iVar4 < 0) {
      iVar5 = iVar5 + -1;
      iVar4 = iVar4 + 0x15180;
    }
  }
  else {
    iVar5 = iVar5 + 1;
    iVar4 = iVar4 + -0x15180;
  }
  piVar1 = param_1 + 3;
  param_3 = param_1[5] + 0x76c;
  param_2 = param_1[4] + 1;
  param_1 = (int *)*piVar1;
  iVar3 = FUN_00accbb0(*piVar1);
  if (-1 < iVar3 + iVar5) {
    FUN_00accc40(&param_3,&param_2,&param_1);
    if (param_3 - 0x76cU < 0x1fa4) {
      piVar2[5] = param_3 + -0x76c;
      piVar2[4] = param_2 + -1;
      piVar2[2] = iVar4 / 0xe10;
      piVar2[3] = (int)param_1;
      piVar2[1] = (iVar4 / 0x3c) % 0x3c;
      *piVar2 = iVar4 % 0x3c;
      return 1;
    }
  }
  return 0;
}



undefined4 FUN_00acce50(byte *param_1,int param_2,uint *param_3)

{
  byte bVar1;
  uint uVar2;
  
  if (param_2 < 1) {
    return 0;
  }
  bVar1 = *param_1;
  if (-1 < (char)bVar1) {
    *param_3 = bVar1 & 0x7f;
    return 1;
  }
  if ((bVar1 & 0xe0) == 0xc0) {
    if (1 < param_2) {
      if ((param_1[1] & 0xc0) != 0x80) {
        return 0xfffffffd;
      }
      uVar2 = (bVar1 & 0x1f) << 6 | param_1[1] & 0x3f;
      if (uVar2 < 0x80) {
        return 0xfffffffc;
      }
      *param_3 = uVar2;
      return 2;
    }
  }
  else if ((bVar1 & 0xf0) == 0xe0) {
    if (2 < param_2) {
      if ((param_1[1] & 0xc0) != 0x80) {
        return 0xfffffffd;
      }
      if ((param_1[2] & 0xc0) != 0x80) {
        return 0xfffffffd;
      }
      uVar2 = (bVar1 & 0xf) << 0xc | (param_1[1] & 0x3f) << 6 | param_1[2] & 0x3f;
      if (uVar2 < 0x800) {
        return 0xfffffffc;
      }
      *param_3 = uVar2;
      return 3;
    }
  }
  else if ((bVar1 & 0xf8) == 0xf0) {
    if (3 < param_2) {
      if ((param_1[1] & 0xc0) != 0x80) {
        return 0xfffffffd;
      }
      if ((param_1[2] & 0xc0) != 0x80) {
        return 0xfffffffd;
      }
      if ((param_1[3] & 0xc0) != 0x80) {
        return 0xfffffffd;
      }
      uVar2 = (bVar1 & 7) << 0x12 | (param_1[1] & 0x3f) << 0xc |
              (param_1[2] & 0x3f) << 6 | param_1[3] & 0x3f;
      if (uVar2 < 0x10000) {
        return 0xfffffffc;
      }
      *param_3 = uVar2;
      return 4;
    }
  }
  else if ((bVar1 & 0xfc) == 0xf8) {
    if (4 < param_2) {
      if (((((param_1[1] & 0xc0) == 0x80) && ((param_1[2] & 0xc0) == 0x80)) &&
          ((param_1[3] & 0xc0) == 0x80)) && ((param_1[4] & 0xc0) == 0x80)) {
        uVar2 = (bVar1 & 3) << 0x18 | (param_1[1] & 0x3f) << 0x12 | (param_1[2] & 0x3f) << 0xc |
                (param_1[3] & 0x3f) << 6 | param_1[4] & 0x3f;
        if (uVar2 < 0x200000) {
          return 0xfffffffc;
        }
        *param_3 = uVar2;
        return 5;
      }
      return 0xfffffffd;
    }
  }
  else {
    if ((bVar1 & 0xfe) != 0xfc) {
      return 0xfffffffe;
    }
    if (5 < param_2) {
      if ((param_1[1] & 0xc0) != 0x80) {
        return 0xfffffffd;
      }
      if ((param_1[2] & 0xc0) != 0x80) {
        return 0xfffffffd;
      }
      if ((param_1[3] & 0xc0) != 0x80) {
        return 0xfffffffd;
      }
      if ((param_1[4] & 0xc0) != 0x80) {
        return 0xfffffffd;
      }
      if ((param_1[5] & 0xc0) != 0x80) {
        return 0xfffffffd;
      }
      uVar2 = (bVar1 & 1) << 0x1e | (param_1[1] & 0x3f) << 0x18 | (param_1[2] & 0x3f) << 0x12 |
              (param_1[3] & 0x3f) << 0xc | (param_1[4] & 0x3f) << 6 | param_1[5] & 0x3f;
      if (uVar2 < 0x4000000) {
        return 0xfffffffc;
      }
      *param_3 = uVar2;
      return 6;
    }
  }
  return 0xffffffff;
}



undefined4 FUN_00acd100(byte *param_1,int param_2,uint param_3)

{
  byte bVar1;
  byte bVar2;
  
  if (param_1 == (byte *)0x0) {
    param_2 = 6;
  }
  else if (param_2 < 1) {
    return 0xffffffff;
  }
  bVar1 = (byte)param_3;
  if (0x7f < param_3) {
    if (param_3 < 0x800) {
      if (1 < param_2) {
        if (param_1 != (byte *)0x0) {
          *param_1 = (byte)(param_3 >> 6) & 0x1f | 0xc0;
          param_1[1] = bVar1 & 0x3f | 0x80;
        }
        return 2;
      }
    }
    else if (param_3 < 0x10000) {
      if (2 < param_2) {
        if (param_1 != (byte *)0x0) {
          *param_1 = (byte)(param_3 >> 0xc) & 0xf | 0xe0;
          param_1[1] = (byte)(param_3 >> 6) & 0x3f | 0x80;
          param_1[2] = bVar1 & 0x3f | 0x80;
        }
        return 3;
      }
    }
    else if (param_3 < 0x200000) {
      if (3 < param_2) {
        if (param_1 != (byte *)0x0) {
          *param_1 = (byte)(param_3 >> 0x12) & 7 | 0xf0;
          param_1[1] = (byte)(param_3 >> 0xc) & 0x3f | 0x80;
          param_1[2] = (byte)(param_3 >> 6) & 0x3f | 0x80;
          param_1[3] = bVar1 & 0x3f | 0x80;
        }
        return 4;
      }
    }
    else {
      bVar2 = (byte)(param_3 >> 0x18);
      if (param_3 < 0x4000000) {
        if (4 < param_2) {
          if (param_1 != (byte *)0x0) {
            *param_1 = bVar2 & 3 | 0xf8;
            param_1[1] = (byte)(param_3 >> 0x12) & 0x3f | 0x80;
            param_1[2] = (byte)(param_3 >> 0xc) & 0x3f | 0x80;
            param_1[3] = (byte)(param_3 >> 6) & 0x3f | 0x80;
            param_1[4] = bVar1 & 0x3f | 0x80;
          }
          return 5;
        }
      }
      else if (5 < param_2) {
        if (param_1 != (byte *)0x0) {
          *param_1 = bVar2 >> 6 & 1 | 0xfc;
          param_1[1] = bVar2 & 0x3f | 0x80;
          param_1[2] = (byte)(param_3 >> 0x12) & 0x3f | 0x80;
          param_1[3] = (byte)(param_3 >> 0xc) & 0x3f | 0x80;
          param_1[4] = (byte)(param_3 >> 6) & 0x3f | 0x80;
          param_1[5] = bVar1 & 0x3f | 0x80;
        }
        return 6;
      }
    }
    return 0xffffffff;
  }
  if (param_1 != (byte *)0x0) {
    *param_1 = bVar1;
  }
  return 1;
}



char * FUN_00acd2a0(uint param_1)

{
  if ((param_1 == 0x102) || (param_1 == 0x10a)) {
    param_1 = param_1 & 0xfffffeff;
  }
  if (param_1 < 0x1f) {
    return (&PTR_DAT_00dc4308)[param_1];
  }
  return "(unknown)";
}



bool FUN_00acd2d0(undefined4 param_1,undefined4 *param_2,undefined4 param_3)

{
  undefined *puVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  undefined **ppuVar5;
  int iVar6;
  
  iVar4 = param_2[2];
  puVar2 = (undefined *)*param_2;
  iVar6 = 0;
  if (0 < (int)puVar2) {
    do {
      if (iVar6 == (iVar6 / 0x12) * 0x12) {
        iVar3 = FUN_00a833e0(param_1,&DAT_030651b4,1);
        if (iVar3 < 1) {
          return false;
        }
        iVar3 = FUN_00a83600(param_1,param_3,param_3);
        if (iVar3 < 1) {
          return false;
        }
      }
      puVar1 = (undefined *)(iVar6 + iVar4);
      ppuVar5 = &PTR_02bd3fc0;
      if (puVar1 + (1 - iVar4) != puVar2) {
        ppuVar5 = (undefined **)&DAT_00d37a38;
      }
      iVar3 = FUN_00a86200(param_1,"%02x%s",*puVar1,ppuVar5);
      if (iVar3 < 1) {
        return false;
      }
      iVar6 = iVar6 + 1;
    } while (iVar6 < (int)puVar2);
  }
  iVar4 = FUN_00a833e0(param_1,&DAT_030651b4,1);
  return iVar4 == 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00acd390(undefined4 param_1,int *param_2)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  char local_54 [80];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_54;
  if (param_2 == (int *)0x0) {
    ___security_check_cookie_4();
    return;
  }
  iVar2 = param_2[2];
  iVar3 = 0;
  iVar4 = 0;
  if (0 < *param_2) {
    do {
      cVar1 = *(char *)(iVar4 + iVar2);
      if ((cVar1 == '\x7f') || (((cVar1 < ' ' && (cVar1 != '\n')) && (cVar1 != '\r')))) {
        local_54[iVar3] = '.';
      }
      else {
        local_54[iVar3] = cVar1;
      }
      iVar3 = iVar3 + 1;
      if (0x4f < iVar3) {
        iVar3 = FUN_00a833e0(param_1,local_54,iVar3);
        if (iVar3 < 1) goto LAB_00acd428;
        iVar3 = 0;
      }
      iVar4 = iVar4 + 1;
    } while (iVar4 < *param_2);
    if (0 < iVar3) {
      iVar2 = FUN_00a833e0(param_1,local_54,iVar3);
      if (iVar2 < 1) {
LAB_00acd428:
        ___security_check_cookie_4();
        return;
      }
    }
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

bool FUN_00acd460(undefined4 param_1,int *param_2)

{
  char cVar1;
  char cVar2;
  char *pcVar3;
  bool bVar4;
  char *pcVar5;
  char *pcVar6;
  undefined **ppuVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  char *local_18;
  int local_10;
  
  iVar8 = *param_2;
  pcVar3 = (char *)param_2[2];
  iVar9 = 0;
  bVar4 = false;
  local_10 = 0;
  local_18 = (char *)0x0;
  if (0xb < iVar8) {
    if (pcVar3[iVar8 + -1] == 'Z') {
      bVar4 = true;
    }
    do {
      iVar10 = 0;
      if (('9' < pcVar3[iVar9]) || (pcVar3[iVar9] < '0')) goto LAB_00acd611;
      iVar9 = iVar9 + 1;
    } while (iVar9 < 0xc);
    iVar9 = pcVar3[5] + -0x210 + pcVar3[4] * 10;
    if (iVar9 - 1U < 0xc) {
      if (((((0xd < iVar8) && (cVar1 = pcVar3[0xc], '/' < cVar1)) && (cVar1 < ':')) &&
          ((cVar2 = pcVar3[0xd], '/' < cVar2 && (cVar2 < ':')))) &&
         ((local_10 = cVar2 + -0x210 + cVar1 * 10, 0xe < iVar8 &&
          ((pcVar5 = pcVar3 + 0xe, *pcVar5 == '.' && (iVar10 = 1, local_18 = pcVar5, 0xf < iVar8))))
         )) {
        pcVar6 = pcVar3 + 0xf;
        do {
          if ((*pcVar6 < '0') || ('9' < *pcVar6)) break;
          pcVar6 = pcVar6 + 1;
          iVar10 = iVar10 + 1;
        } while ((int)(pcVar6 + (0xe - (int)pcVar5)) < iVar8);
      }
      ppuVar7 = (undefined **)&DAT_00dc43e0;
      if (!bVar4) {
        ppuVar7 = &PTR_02bd3fc0;
      }
      iVar8 = FUN_00a86200(param_1,"%s %2d %02d:%02d:%02d%.*s %d%s",(&PTR_FUN_03243250)[iVar9],
                           pcVar3[7] + -0x210 + pcVar3[6] * 10,pcVar3[9] + -0x210 + pcVar3[8] * 10,
                           pcVar3[0xb] + -0x210 + pcVar3[10] * 10,local_10,iVar10,local_18,
                           pcVar3[3] + -0xd050 +
                           ((int)pcVar3[2] + ((int)pcVar3[1] + *pcVar3 * 10) * 10) * 10,ppuVar7);
      return 0 < iVar8;
    }
  }
LAB_00acd611:
  FUN_00a833e0(param_1,"Bad time value",0xe);
  return false;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00acd630(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  char *pcVar2;
  int iVar3;
  char *pcVar4;
  char *pcVar5;
  undefined4 uVar6;
  
  uVar6 = 0;
  pcVar2 = (char *)FUN_00a8df10(param_2,0,0,0,0xacd63a);
  if (*pcVar2 == '\0') {
    FUN_00a85120(pcVar2);
    return 1;
  }
  pcVar4 = pcVar2 + 1;
  for (pcVar5 = pcVar4;
      ((((*pcVar5 != '/' || (pcVar5[1] < 'A')) || ('Z' < pcVar5[1])) ||
       ((cVar1 = pcVar5[2], cVar1 != '=' && (((cVar1 < 'A' || ('Z' < cVar1)) || (pcVar5[3] != '=')))
        ))) && (*pcVar5 != '\0')); pcVar5 = pcVar5 + 1) {
LAB_00acd6e0:
  }
  iVar3 = FUN_00a833e0(param_1,pcVar4,(int)pcVar5 - (int)pcVar4);
  if (iVar3 == (int)pcVar5 - (int)pcVar4) {
    pcVar4 = pcVar5 + 1;
    if (*pcVar5 != '\0') {
      iVar3 = FUN_00a833e0(param_1,&DAT_00db6508,2);
      if (iVar3 != 2) goto LAB_00acd6e3;
      if (*pcVar5 != '\0') goto LAB_00acd6e0;
    }
    uVar6 = 1;
  }
  else {
LAB_00acd6e3:
    FUN_00a7f3c0(0xb,0x75,7,".\\crypto\\asn1\\t_x509.c",0x20c);
  }
  FUN_00a85120(pcVar2);
  return uVar6;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00acd720(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  int *local_3c;
  int local_38 [13];
  undefined4 uStack_4;
  
  uStack_4 = 0xacd72a;
  local_3c = local_38;
  if (-1 < param_1) {
    local_38[0] = param_1;
    puVar1 = (undefined4 *)FUN_00a877b0(&local_3c,&PTR_DAT_03243288,0x28,4,&LAB_00afc130);
    if (puVar1 != (undefined4 *)0x0) {
      return *puVar1;
    }
    if (DAT_032edb20 != 0) {
      iVar2 = FUN_00a81100(DAT_032edb20,local_38);
      if (iVar2 != -1) {
        uVar3 = FUN_00a80ee0(DAT_032edb20,iVar2);
        return uVar3;
      }
    }
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00acd7a0(undefined4 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 local_4;
  
  local_4 = 0xacd7aa;
  iVar1 = FUN_00a877e0(*param_1);
  if (iVar1 != 0) {
    iVar1 = FUN_00acd720(iVar1);
    if (iVar1 != 0) {
      local_4 = ((undefined4 *)param_1[2])[2];
      if (*(code **)(iVar1 + 8) != (code *)0x0) {
        uVar2 = (**(code **)(iVar1 + 8))();
        uVar2 = FUN_00a8ae20(0,&local_4,*(undefined4 *)param_1[2],uVar2);
        return uVar2;
      }
      uVar2 = (**(code **)(iVar1 + 0x14))(0,&local_4,*(undefined4 *)param_1[2]);
      return uVar2;
    }
  }
  return 0;
}



undefined4 FUN_00acd820(int param_1,int param_2,undefined4 *param_3,int *param_4)

{
  int iVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int iVar5;
  bool bVar6;
  
  puVar4 = (undefined4 *)0x0;
  if (param_1 == 0) {
    if (param_4 != (int *)0x0) {
      *param_4 = -1;
    }
    if (param_3 != (undefined4 *)0x0) {
      *param_3 = 0xffffffff;
    }
    return 0;
  }
  if ((param_4 == (int *)0x0) || (iVar5 = *param_4 + 1, iVar5 < 0)) {
    iVar5 = 0;
  }
  iVar1 = FUN_00a80ed0(param_1);
  if (iVar5 < iVar1) {
    do {
      puVar2 = (undefined4 *)FUN_00a80ee0(param_1,iVar5);
      iVar1 = FUN_00a877e0(*puVar2);
      if (iVar1 == param_2) {
        if (param_4 != (int *)0x0) {
          *param_4 = iVar5;
          break;
        }
        bVar6 = puVar4 != (undefined4 *)0x0;
        puVar4 = puVar2;
        if (bVar6) {
          if (param_3 == (undefined4 *)0x0) {
            return 0;
          }
          *param_3 = 0xfffffffe;
          return 0;
        }
      }
      iVar5 = iVar5 + 1;
      iVar1 = FUN_00a80ed0(param_1);
      puVar2 = puVar4;
    } while (iVar5 < iVar1);
    if (puVar2 != (undefined4 *)0x0) {
      if (param_3 != (undefined4 *)0x0) {
        uVar3 = FUN_00aaa0a0(puVar2);
        *param_3 = uVar3;
      }
      uVar3 = FUN_00acd7a0(puVar2);
      return uVar3;
    }
  }
  if (param_4 != (int *)0x0) {
    *param_4 = -1;
  }
  if (param_3 != (undefined4 *)0x0) {
    *param_3 = 0xffffffff;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __fastcall FUN_00acd910(int param_1_00,char *param_2,ulong *param_1)

{
  ulong uVar1;
  undefined4 *unaff_EBX;
  char local_8;
  undefined local_7;
  char *local_4;
  
  local_4 = (char *)0xacd91a;
  if ((param_2 != (char *)0x0) &&
     (((uVar1 = _strtoul(param_2,&local_4,10), local_4 == (char *)0x0 || (*local_4 == '\0')) ||
      (local_4 <= param_2 + param_1_00)))) {
    if (-1 < (int)uVar1) {
      *param_1 = uVar1;
      if ((local_4 != (char *)0x0) && (param_2 + (param_1_00 - (int)local_4) != (char *)0x0)) {
        local_8 = *local_4;
        switch(local_8) {
        case 'A':
          *unaff_EBX = 0x40;
          return 1;
        default:
          local_7 = 0;
          FUN_00a7f3c0(0xd,0xb6,0xba,".\\crypto\\asn1\\asn1_gen.c",0x1b0);
          FUN_00a7f690(2,"Char=",&local_8);
          return 0;
        case 'C':
          break;
        case 'P':
          *unaff_EBX = 0xc0;
          return 1;
        case 'U':
          *unaff_EBX = 0;
          return 1;
        }
      }
      *unaff_EBX = 0x80;
      return 1;
    }
    FUN_00a7f3c0(0xd,0xb6,0xbb,".\\crypto\\asn1\\asn1_gen.c",399);
  }
  return 0;
}



undefined4 FUN_00acda60(int *param_1,int param_2,int param_3,int param_4,int param_5,int param_6)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  
  iVar2 = *param_1;
  if ((iVar2 != -1) && (param_6 == 0)) {
    FUN_00a7f3c0(0xd,0xb0,0xb3,".\\crypto\\asn1\\asn1_gen.c",0x206);
    return 0;
  }
  iVar3 = param_1[0x69];
  if (iVar3 == 0x14) {
    FUN_00a7f3c0(0xd,0xb0,0xae,".\\crypto\\asn1\\asn1_gen.c",0x20c);
    return 0;
  }
  piVar1 = param_1 + iVar3 * 5 + 5;
  param_1[0x69] = iVar3 + 1;
  if (iVar2 != -1) {
    *piVar1 = iVar2;
    piVar1[1] = param_1[1];
    *param_1 = -1;
    param_1[1] = -1;
    piVar1[2] = param_4;
    piVar1[3] = param_5;
    return 1;
  }
  *piVar1 = param_2;
  piVar1[1] = param_3;
  piVar1[2] = param_4;
  piVar1[3] = param_5;
  return 1;
}



char * __fastcall FUN_00acdb20(char *param_1)

{
  char cVar1;
  int iVar2;
  char *unaff_EBX;
  uint uVar3;
  
  if (param_1 == (char *)0xffffffff) {
    param_1 = unaff_EBX;
    do {
      cVar1 = *param_1;
      param_1 = param_1 + 1;
    } while (cVar1 != '\0');
    param_1 = param_1 + -(int)(unaff_EBX + 1);
  }
  DAT_032edb24 = &PTR_DAT_00dc4500;
  uVar3 = 0;
  while ((param_1 != DAT_032edb24[1] ||
         (iVar2 = _strncmp(*DAT_032edb24,unaff_EBX,(size_t)param_1), iVar2 != 0))) {
    uVar3 = uVar3 + 1;
    DAT_032edb24 = DAT_032edb24 + 3;
    if (0x30 < uVar3) {
      return (char *)0xffffffff;
    }
  }
  return DAT_032edb24[2];
}



undefined4 FUN_00acdb90(char *param_1,int param_2,undefined4 param_3)

{
  char *pcVar1;
  ulong uVar2;
  int iVar3;
  
  pcVar1 = param_1;
  if (param_1 != (char *)0x0) {
    uVar2 = _strtoul(param_1,&param_1,10);
    if (((param_1 == (char *)0x0) || (*param_1 == '\0')) || (param_1 == pcVar1 + param_2)) {
      if (-1 < (int)uVar2) {
        iVar3 = FUN_00a9df00(param_3,uVar2,1);
        if (iVar3 == 0) {
          FUN_00a7f3c0(0xd,0xb4,0x41,".\\crypto\\asn1\\asn1_gen.c",0x351);
          return 0;
        }
        return 1;
      }
      FUN_00a7f3c0(0xd,0xb4,0xbb,".\\crypto\\asn1\\asn1_gen.c",0x34c);
    }
  }
  return 0;
}



undefined4 FUN_00acdc20(char *param_1,char *param_2,int *param_3)

{
  char **ppcVar1;
  char *pcVar2;
  char *pcVar3;
  uint uVar4;
  int iVar5;
  char *pcVar6;
  char *_Str1;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  
  pcVar2 = param_1;
  _Str1 = (char *)0x0;
  iVar5 = 0;
  pcVar3 = param_1;
  pcVar6 = param_2;
  if (0 < (int)param_2) {
    do {
      if (*pcVar3 == ':') {
        _Str1 = pcVar3 + 1;
        pcVar6 = pcVar3 + -(int)param_1;
        break;
      }
      iVar5 = iVar5 + 1;
      pcVar3 = pcVar3 + 1;
    } while (iVar5 < (int)param_2);
  }
  uVar4 = FUN_00acdb20();
  if (uVar4 == 0xffffffff) {
    FUN_00a7f3c0(0xd,0xb1,0xc2,".\\crypto\\asn1\\asn1_gen.c",0x12f);
    FUN_00a7f690(2,&DAT_00dc477c,pcVar2);
    return 0xffffffff;
  }
  if ((uVar4 & 0x10000) == 0) {
    param_3[2] = uVar4;
    param_3[4] = (int)_Str1;
    if ((_Str1 != (char *)0x0) || (pcVar2[(int)pcVar6] == '\0')) {
      return 0;
    }
    uVar9 = 0x13c;
    uVar7 = 0xbd;
    goto LAB_00acdcbb;
  }
  switch(uVar4) {
  case 0x10001:
    if (*param_3 == -1) {
      iVar5 = FUN_00acd910(param_3);
      if (iVar5 == 0) {
        return 0xffffffff;
      }
      return 1;
    }
    uVar9 = 0x149;
    uVar7 = 0xb5;
    goto LAB_00acdcbb;
  case 0x10002:
    iVar5 = FUN_00acd910(&param_1);
    if (iVar5 == 0) {
      return 0xffffffff;
    }
    if (*param_3 == -1) {
      iVar5 = param_3[0x69];
      if (iVar5 != 0x14) {
        ppcVar1 = (char **)(param_3 + iVar5 * 5 + 5);
        param_3[0x69] = iVar5 + 1;
        *ppcVar1 = param_1;
        ppcVar1[1] = param_2;
        ppcVar1[2] = (char *)0x1;
        ppcVar1[3] = (char *)0x0;
        return 1;
      }
      uVar9 = 0x20c;
      uVar7 = 0xae;
    }
    else {
      uVar9 = 0x206;
      uVar7 = 0xb3;
    }
    FUN_00a7f3c0(0xd,0xb0,uVar7,".\\crypto\\asn1\\asn1_gen.c",uVar9);
    return 0xffffffff;
  default:
    goto switchD_00acdce3_caseD_10003;
  case 0x10004:
    uVar8 = 1;
    uVar9 = 0;
    uVar7 = 3;
    break;
  case 0x10005:
    uVar9 = 0;
    uVar7 = 4;
    goto LAB_00acddc7;
  case 0x10006:
    uVar9 = 1;
    uVar7 = 0x10;
LAB_00acddc7:
    uVar8 = 0;
    break;
  case 0x10007:
    uVar8 = 0;
    uVar9 = 1;
    uVar7 = 0x11;
    break;
  case 0x10008:
    iVar5 = _strncmp(_Str1,"ASCII",5);
    if (iVar5 == 0) {
      param_3[3] = 1;
      return 1;
    }
    iVar5 = _strncmp(_Str1,"UTF8",4);
    if (iVar5 == 0) {
      param_3[3] = 2;
      return 1;
    }
    iVar5 = _strncmp(_Str1,"HEX",3);
    if (iVar5 == 0) {
      param_3[3] = 3;
      return 1;
    }
    iVar5 = _strncmp(_Str1,"BITLIST",3);
    if (iVar5 == 0) {
      param_3[3] = 4;
      return 1;
    }
    uVar9 = 0x177;
    uVar7 = 0xc3;
LAB_00acdcbb:
    FUN_00a7f3c0(0xd,0xb1,uVar7,".\\crypto\\asn1\\asn1_gen.c",uVar9);
    return 0xffffffff;
  }
  iVar5 = FUN_00acda60(param_3,uVar7,0,uVar9,uVar8,1);
  if (iVar5 == 0) {
    return 0xffffffff;
  }
switchD_00acdce3_caseD_10003:
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int * __thiscall FUN_00acdef0(undefined **param_1_00,int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined **local_4;
  
  local_4 = (undefined **)0xacdefa;
  piVar1 = (int *)FUN_00a889c0();
  if (piVar1 == (int *)0x0) {
    FUN_00a7f3c0(0xd,0xb3,0x41,".\\crypto\\asn1\\asn1_gen.c",0x282);
    return (int *)0x0;
  }
  if (param_1_00 == (undefined **)0x0) {
    param_1_00 = &PTR_02bd3fc0;
  }
  switch(param_2) {
  case 1:
    if (param_1 != 1) {
      FUN_00a7f3c0(0xd,0xb3,0xbe,".\\crypto\\asn1\\asn1_gen.c",0x297);
      FUN_00a889d0(piVar1);
      return (int *)0x0;
    }
    local_8 = 0;
    local_c = 0;
    local_4 = param_1_00;
    iVar2 = FUN_00aa0660(&local_c,piVar1 + 1);
    if (iVar2 != 0) goto LAB_00ace27b;
    uVar4 = 0x29f;
    uVar3 = 0xb0;
    break;
  case 2:
  case 10:
    if (param_1 != 1) {
      FUN_00a7f3c0(0xd,0xb3,0xb9,".\\crypto\\asn1\\asn1_gen.c",0x2a8);
      FUN_00a889d0(piVar1);
      return (int *)0x0;
    }
    iVar2 = FUN_00aa0500(0,param_1_00);
    piVar1[1] = iVar2;
    if (iVar2 != 0) goto LAB_00ace27b;
    uVar4 = 0x2ad;
    uVar3 = 0xb4;
    break;
  case 3:
  case 4:
    iVar2 = FUN_00a91170();
    piVar1[1] = iVar2;
    if (iVar2 == 0) {
      FUN_00a7f3c0(0xd,0xb3,0x41,".\\crypto\\asn1\\asn1_gen.c",0x2fe);
      FUN_00a889d0(piVar1);
      return (int *)0x0;
    }
    if (param_1 == 3) {
      iVar2 = FUN_00aa0ad0(param_1_00,&local_10);
      if (iVar2 == 0) {
        uVar4 = 0x307;
        uVar3 = 0xb2;
        break;
      }
      *(int *)(piVar1[1] + 8) = iVar2;
      *(undefined4 *)piVar1[1] = local_10;
      *(int *)(piVar1[1] + 4) = param_2;
    }
    else {
      if (param_1 != 1) {
        if ((param_1 != 4) || (param_2 != 3)) {
          FUN_00a7f3c0(0xd,0xb3,0xaf,".\\crypto\\asn1\\asn1_gen.c",0x31e);
          FUN_00a889d0(piVar1);
          return (int *)0x0;
        }
        iVar2 = FUN_00a7ff80(param_1_00,0x2c,1,FUN_00acdb90,iVar2);
        if (iVar2 != 0) goto LAB_00ace27b;
        uVar4 = 0x316;
        uVar3 = 0xbc;
        break;
      }
      FUN_00a90c30(iVar2,param_1_00,0xffffffff);
    }
    if (param_2 == 3) {
      *(uint *)(piVar1[1] + 0xc) = *(uint *)(piVar1[1] + 0xc) & 0xfffffff0;
      *(uint *)(piVar1[1] + 0xc) = *(uint *)(piVar1[1] + 0xc) | 8;
    }
    goto LAB_00ace27b;
  case 5:
    if ((param_1_00 != (undefined **)0x0) && (*(char *)param_1_00 != '\0')) {
      FUN_00a7f3c0(0xd,0xb3,0xb6,".\\crypto\\asn1\\asn1_gen.c",0x28f);
      FUN_00a889d0(piVar1);
      return (int *)0x0;
    }
LAB_00ace27b:
    *piVar1 = param_2;
    return piVar1;
  case 6:
    if (param_1 != 1) {
      FUN_00a7f3c0(0xd,0xb3,0xbf,".\\crypto\\asn1\\asn1_gen.c",0x2b5);
      FUN_00a889d0(piVar1);
      return (int *)0x0;
    }
    iVar2 = FUN_00a87dc0(param_1_00,0);
    piVar1[1] = iVar2;
    if (iVar2 != 0) goto LAB_00ace27b;
    uVar4 = 0x2ba;
    uVar3 = 0xb7;
    break;
  default:
    uVar4 = 0x32e;
    uVar3 = 0xc4;
    break;
  case 0xc:
  case 0x12:
  case 0x13:
  case 0x14:
  case 0x16:
  case 0x1a:
  case 0x1b:
  case 0x1c:
  case 0x1e:
    if (param_1 == 1) {
      uVar3 = 0x1001;
    }
    else {
      if (param_1 != 2) {
        FUN_00a7f3c0(0xd,0xb3,0xb1,".\\crypto\\asn1\\asn1_gen.c",0x2e9);
        FUN_00a889d0(piVar1);
        return (int *)0x0;
      }
      uVar3 = 0x1000;
    }
    uVar4 = FUN_00a896e0(param_2);
    iVar2 = FUN_00aa9700(piVar1 + 1,param_1_00,0xffffffff,uVar3,uVar4);
    if (0 < iVar2) goto LAB_00ace27b;
    uVar4 = 0x2f1;
    uVar3 = 0x41;
    break;
  case 0x17:
  case 0x18:
    if (param_1 != 1) {
      FUN_00a7f3c0(0xd,0xb3,0xc1,".\\crypto\\asn1\\asn1_gen.c",0x2c3);
      FUN_00a889d0(piVar1);
      return (int *)0x0;
    }
    iVar2 = FUN_00a91170();
    piVar1[1] = iVar2;
    if (iVar2 == 0) {
      uVar4 = 0x2c8;
      uVar3 = 0x41;
    }
    else {
      iVar2 = FUN_00a90c30(iVar2,param_1_00,0xffffffff);
      if (iVar2 == 0) {
        uVar4 = 0x2cd;
        uVar3 = 0x41;
      }
      else {
        *(int *)(piVar1[1] + 4) = param_2;
        iVar2 = FUN_00a9c950(piVar1[1]);
        if (iVar2 != 0) goto LAB_00ace27b;
        uVar4 = 0x2d3;
        uVar3 = 0xb8;
      }
    }
  }
  FUN_00a7f3c0(0xd,0xb3,uVar3,".\\crypto\\asn1\\asn1_gen.c",uVar4);
  FUN_00a7f690(2,"string=",param_1_00);
  FUN_00a889d0(piVar1);
  return (int *)0x0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00ace390(undefined4 param_1,int param_2)

{
  int iVar1;
  size_t sVar2;
  uint uVar3;
  undefined *puVar4;
  int *piVar5;
  undefined4 *puVar6;
  undefined *local_1d0;
  void *local_1cc;
  uint local_1c8;
  undefined4 local_1c4;
  void *local_1c0;
  size_t local_1bc;
  int local_1b8;
  undefined *local_1b4;
  undefined local_1b0 [4];
  undefined local_1ac [4];
  int local_1a8 [4];
  undefined4 local_198;
  undefined4 local_184 [96];
  int local_4;
  
  puVar4 = (undefined *)0x0;
  local_1cc = (void *)0x0;
  local_1c8 = 0;
  local_1a8[0] = -1;
  local_1a8[1] = -1;
  local_1a8[3] = 1;
  local_4 = 0;
  iVar1 = FUN_00a7ff80(param_1,0x2c,1,FUN_00acdc20,local_1a8);
  if (iVar1 != 0) {
    return 0;
  }
  if ((local_1a8[2] == 0x10) || (local_1a8[2] == 0x11)) {
    if (param_2 == 0) {
      FUN_00a7f3c0(0xd,0xb2,0xc0,".\\crypto\\asn1\\asn1_gen.c",0xa3);
      return 0;
    }
    iVar1 = FUN_00ace640(local_1a8[2],local_198,param_2);
  }
  else {
    iVar1 = FUN_00acdef0(local_1a8[3],local_1a8[2]);
  }
  if (iVar1 == 0) {
    return 0;
  }
  if ((local_1a8[0] == -1) && (local_4 == 0)) {
    return iVar1;
  }
  sVar2 = FUN_00a889a0(iVar1,&local_1cc);
  local_1bc = sVar2;
  FUN_00a889d0(iVar1);
  local_1b8 = 0;
  local_1c0 = local_1cc;
  if (local_1a8[0] != -1) {
    uVar3 = FUN_00a90eb0(&local_1c0,&local_1c4,local_1ac,local_1b0,sVar2);
    if ((char)uVar3 < '\0') goto LAB_00ace611;
    local_1bc = (int)local_1cc + (sVar2 - (int)local_1c0);
    if ((uVar3 & 1) == 0) {
      local_1c8 = uVar3 & 0x20;
    }
    else {
      local_1c8 = 2;
      local_1c4 = 0;
    }
    sVar2 = FUN_00a90b80(0,local_1c4,local_1a8[0]);
  }
  iVar1 = 0;
  piVar5 = local_1a8 + local_4 * 5;
  if (0 < local_4) {
    do {
      piVar5[4] = sVar2 + piVar5[3];
      sVar2 = FUN_00a90b80(0,sVar2 + piVar5[3],*piVar5);
      iVar1 = iVar1 + 1;
      piVar5 = piVar5 + -5;
    } while (iVar1 < local_4);
  }
  puVar4 = (undefined *)FUN_00a84f80(sVar2,".\\crypto\\asn1\\asn1_gen.c",0xe5);
  if (puVar4 != (undefined *)0x0) {
    iVar1 = 0;
    local_1d0 = puVar4;
    if (0 < local_4) {
      puVar6 = local_184;
      do {
        FUN_00a90fd0(&local_1d0,puVar6[-2],*puVar6,puVar6[-4],puVar6[-3]);
        if (puVar6[-1] != 0) {
          *local_1d0 = 0;
          local_1d0 = local_1d0 + 1;
        }
        iVar1 = iVar1 + 1;
        puVar6 = puVar6 + 5;
      } while (iVar1 < local_4);
    }
    if (local_1a8[0] != -1) {
      uVar3 = local_1c8;
      if ((local_1a8[1] == 0) && ((local_1a8[0] == 0x10 || (local_1a8[0] == 0x11)))) {
        uVar3 = 0x20;
      }
      FUN_00a90fd0(&local_1d0,uVar3,local_1c4,local_1a8[0],local_1a8[1]);
    }
    _memcpy(local_1d0,local_1c0,local_1bc);
    local_1b4 = puVar4;
    local_1b8 = FUN_00a88980(0,&local_1b4,sVar2);
  }
LAB_00ace611:
  if (local_1cc != (void *)0x0) {
    FUN_00a85120(local_1cc);
  }
  if (puVar4 != (undefined *)0x0) {
    FUN_00a85120(puVar4);
  }
  return local_1b8;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int * FUN_00ace640(int param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  int local_4;
  
  iVar5 = 0;
  piVar3 = (int *)0x0;
  local_4 = 0;
  iVar1 = FUN_00a81010();
  if (iVar1 != 0) {
    if (param_2 != 0) {
      if ((param_3 == 0) || (iVar5 = FUN_00aa13f0(param_3,param_2), iVar5 == 0)) goto LAB_00ace75b;
      iVar4 = 0;
      iVar2 = FUN_00a80ed0(iVar5);
      if (0 < iVar2) {
        do {
          iVar2 = FUN_00a80ee0(iVar5,iVar4,param_3);
          iVar2 = FUN_00ace390(*(undefined4 *)(iVar2 + 8));
          if ((iVar2 == 0) || (iVar2 = FUN_00a80df0(iVar1,iVar2), iVar2 == 0)) goto LAB_00ace75b;
          iVar4 = iVar4 + 1;
          iVar2 = FUN_00a80ed0(iVar5);
        } while (iVar4 < iVar2);
      }
    }
    if (param_1 == 0x11) {
      iVar2 = FUN_00a88a90(iVar1,&local_4);
    }
    else {
      iVar2 = FUN_00a88a70(iVar1,&local_4);
    }
    if ((-1 < iVar2) && (piVar3 = (int *)FUN_00a889c0(), piVar3 != (int *)0x0)) {
      iVar4 = FUN_00a90d30(param_1);
      piVar3[1] = iVar4;
      if (iVar4 != 0) {
        *piVar3 = param_1;
        *(int *)(iVar4 + 8) = local_4;
        *(int *)piVar3[1] = iVar2;
        local_4 = 0;
        goto LAB_00ace76c;
      }
    }
  }
LAB_00ace75b:
  if (local_4 != 0) {
    FUN_00a85120(local_4);
  }
LAB_00ace76c:
  if (iVar1 != 0) {
    FUN_00a81120(iVar1,FUN_00a889d0);
  }
  if (iVar5 != 0) {
    FUN_00aa1430(param_3,iVar5);
  }
  return piVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ace7e0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 local_a8;
  undefined local_a4 [80];
  undefined local_54 [80];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_a8;
  local_a8 = param_3;
  iVar3 = 0;
  iVar1 = FUN_00a80ed0(param_2);
  if (0 < iVar1) {
    do {
      puVar2 = (undefined4 *)FUN_00a80ee0(param_2,iVar3);
      FUN_00a905e0(local_54,0x50,*puVar2);
      FUN_00a905e0(local_a4,0x50,puVar2[1]);
      FUN_00aa02e0(local_54,local_a4,&local_a8);
      iVar3 = iVar3 + 1;
      iVar1 = FUN_00a80ed0(param_2);
    } while (iVar3 < iVar1);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00ace890(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  
  iVar1 = FUN_00a81010(0xace89a);
  if (iVar1 == 0) {
    FUN_00a7f3c0(0x22,0x91,0x41,".\\crypto\\x509v3\\v3_pmaps.c",0x7c);
    return 0;
  }
  iVar6 = 0;
  iVar2 = FUN_00a80ed0(param_3);
  if (0 < iVar2) {
    do {
      puVar3 = (undefined4 *)FUN_00a80ee0(param_3,iVar6);
      if ((puVar3[2] == 0) || (puVar3[1] == 0)) {
        FUN_00a81120(iVar1,&LAB_00ace7c0);
        FUN_00a7f3c0(0x22,0x91,0x6e,".\\crypto\\x509v3\\v3_pmaps.c",0x84);
        uVar9 = puVar3[2];
        uVar8 = puVar3[1];
        uVar7 = *puVar3;
LAB_00acea10:
        FUN_00a7f690(6,"section:",uVar7,",name:",uVar8,",value:",uVar9);
        return 0;
      }
      iVar2 = FUN_00a87dc0(puVar3[1],0);
      iVar4 = FUN_00a87dc0(puVar3[2],0);
      if ((iVar2 == 0) || (iVar4 == 0)) {
        FUN_00a81120(iVar1,&LAB_00ace7c0);
        FUN_00a7f3c0(0x22,0x91,0x6e,".\\crypto\\x509v3\\v3_pmaps.c",0x8c);
        uVar9 = puVar3[2];
        uVar8 = puVar3[1];
        uVar7 = *puVar3;
        goto LAB_00acea10;
      }
      piVar5 = (int *)FUN_00a8bf10(&DAT_00dc4834);
      if (piVar5 == (int *)0x0) {
        FUN_00a81120(iVar1,&LAB_00ace7c0);
        FUN_00a7f3c0(0x22,0x91,0x41,".\\crypto\\x509v3\\v3_pmaps.c",0x93);
        return 0;
      }
      *piVar5 = iVar2;
      piVar5[1] = iVar4;
      FUN_00a80df0(iVar1,piVar5);
      iVar6 = iVar6 + 1;
      iVar2 = FUN_00a80ed0(param_3);
    } while (iVar6 < iVar2);
  }
  return iVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00acea70(undefined4 param_1,undefined4 param_2,int param_3)

{
  char *pcVar1;
  char cVar2;
  int iVar3;
  undefined4 *puVar4;
  char *pcVar5;
  char *pcVar6;
  int iVar7;
  int iVar8;
  int local_60;
  undefined4 local_5c;
  undefined4 local_58;
  char local_54 [80];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_60;
  local_58 = param_1;
  local_5c = param_2;
  iVar8 = 0;
  iVar3 = FUN_00a80ed0(param_2);
  if (0 < iVar3) {
    do {
      puVar4 = (undefined4 *)FUN_00a80ee0(param_2,iVar8);
      local_60 = FUN_00a9e330(local_58,puVar4[1],param_3);
      if (local_60 == 0) goto LAB_00aceab4;
      iVar3 = FUN_00a80ee0(local_60,iVar8);
      FUN_00a905e0(local_54,0x50,*puVar4);
      pcVar5 = local_54;
      do {
        cVar2 = *pcVar5;
        pcVar5 = pcVar5 + 1;
      } while (cVar2 != '\0');
      pcVar6 = *(char **)(iVar3 + 4);
      pcVar1 = pcVar6 + 1;
      do {
        cVar2 = *pcVar6;
        pcVar6 = pcVar6 + 1;
      } while (cVar2 != '\0');
      pcVar5 = pcVar5 + (int)(pcVar6 + ((5 - (int)pcVar1) - (int)(local_54 + 1)));
      iVar7 = FUN_00a84f80(pcVar5,".\\crypto\\x509v3\\v3_info.c",0x76);
      if (iVar7 == 0) {
        FUN_00a7f3c0(0x22,0x8a,0x41,".\\crypto\\x509v3\\v3_info.c",0x79);
        ___security_check_cookie_4();
        return;
      }
      FUN_00a851b0(iVar7,local_54,pcVar5);
      FUN_00a851f0(iVar7,&DAT_00d24ba4,pcVar5);
      FUN_00a851f0(iVar7,*(undefined4 *)(iVar3 + 4),pcVar5);
      FUN_00a85120(*(undefined4 *)(iVar3 + 4));
      *(int *)(iVar3 + 4) = iVar7;
      iVar8 = iVar8 + 1;
      iVar3 = FUN_00a80ed0(local_5c);
      param_2 = local_5c;
      param_3 = local_60;
    } while (iVar8 < iVar3);
  }
  if (param_3 != 0) {
    ___security_check_cookie_4();
    return;
  }
LAB_00aceab4:
  FUN_00a81010();
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00acebf0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  char *pcVar5;
  size_t _Count;
  undefined4 uVar6;
  undefined4 uVar7;
  int local_14;
  undefined local_c [4];
  char *local_8;
  undefined4 local_4;
  
  local_4 = 0xacebfa;
  iVar1 = FUN_00a81010();
  if (iVar1 == 0) {
    FUN_00a7f3c0(0x22,0x8b,0x41,".\\crypto\\x509v3\\v3_info.c",0x90);
    return 0;
  }
  local_14 = 0;
  iVar2 = FUN_00a80ed0(param_3);
  if (0 < iVar2) {
    do {
      iVar2 = FUN_00a80ee0(param_3,local_14);
      piVar3 = (int *)FUN_00a8bf10(&DAT_00dc4974);
      if ((piVar3 == (int *)0x0) || (iVar4 = FUN_00a80df0(iVar1,piVar3), iVar4 == 0)) {
        uVar7 = 0x97;
LAB_00aced94:
        uVar6 = 0x41;
LAB_00aced9b:
        FUN_00a7f3c0(0x22,0x8b,uVar6,".\\crypto\\x509v3\\v3_info.c",uVar7);
LAB_00acedaa:
        FUN_00a81120(iVar1,&LAB_00acea40);
        return 0;
      }
      pcVar5 = _strchr(*(char **)(iVar2 + 4),0x3b);
      if (pcVar5 == (char *)0x0) {
        uVar7 = 0x9c;
        uVar6 = 0x8f;
        goto LAB_00aced9b;
      }
      _Count = (int)pcVar5 - *(int *)(iVar2 + 4);
      local_8 = pcVar5 + 1;
      local_4 = *(undefined4 *)(iVar2 + 8);
      iVar4 = FUN_00a9ed70(piVar3[1],param_1,param_2,local_c,0);
      if (iVar4 == 0) goto LAB_00acedaa;
      pcVar5 = (char *)FUN_00a84f80(_Count + 1,".\\crypto\\x509v3\\v3_info.c",0xa4);
      if (pcVar5 == (char *)0x0) {
        uVar7 = 0xa5;
        goto LAB_00aced94;
      }
      _strncpy(pcVar5,*(char **)(iVar2 + 4),_Count);
      pcVar5[_Count] = '\0';
      iVar2 = FUN_00a87dc0(pcVar5,0);
      *piVar3 = iVar2;
      if (iVar2 == 0) {
        FUN_00a7f3c0(0x22,0x8b,0x77,".\\crypto\\x509v3\\v3_info.c",0xac);
        FUN_00a7f690(2,"value=",pcVar5);
        FUN_00a85120(pcVar5);
        goto LAB_00acedaa;
      }
      FUN_00a85120(pcVar5);
      local_14 = local_14 + 1;
      iVar2 = FUN_00a80ed0(param_3);
    } while (local_14 < iVar2);
  }
  return iVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00acedd0(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5)

{
  bool bVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  uint local_c0;
  int local_bc;
  undefined4 local_b8;
  undefined local_b4 [48];
  int aiStack_84 [32];
  undefined4 uStack_4;
  
  uStack_4 = 0xacedda;
  local_b8 = 0;
  if ((*(byte *)(param_3 + 0x10) & 4) != 0) {
    FUN_00a7f3c0(3,0x7d,0x42,".\\crypto\\bn\\bn_exp.c",0x108);
    return 0xffffffff;
  }
  local_bc = FUN_00a9a920(param_3);
  if (local_bc == 0) {
    uVar2 = FUN_00a9ac50(param_1,1);
    return uVar2;
  }
  FUN_00aa4a50(param_5);
  iVar3 = FUN_00aa4ae0(param_5);
  iVar4 = FUN_00aa4ae0(param_5);
  aiStack_84[1] = iVar4;
  if ((iVar3 == 0) || (iVar4 == 0)) goto LAB_00acf111;
  FUN_00ae5b60(local_b4);
  iVar5 = param_4;
  if (*(int *)(param_4 + 0xc) != 0) {
    iVar5 = FUN_00a9aba0(iVar3,param_4);
    if (iVar5 == 0) goto LAB_00acf111;
    *(undefined4 *)(iVar3 + 0xc) = 0;
    iVar5 = iVar3;
  }
  iVar5 = FUN_00ae5bc0(local_b4,iVar5,param_5);
  if ((iVar5 < 1) || (iVar5 = FUN_00ad2c10(iVar4,param_2,param_4,param_5), iVar5 == 0))
  goto LAB_00acf111;
  if (*(int *)(iVar4 + 4) == 0) {
    FUN_00a9ac50(param_1,0);
    local_b8 = 1;
    goto LAB_00acf111;
  }
  if (local_bc < 0x2a0) {
    if (0xef < local_bc) {
      local_c0 = 5;
      goto LAB_00acef4f;
    }
    if (0x4f < local_bc) {
      local_c0 = 4;
      goto LAB_00acef4f;
    }
    local_c0 = (uint)(0x17 < local_bc) * 2 + 1;
    if (1 < local_c0) goto LAB_00acef4f;
  }
  else {
    local_c0 = 6;
LAB_00acef4f:
    iVar4 = FUN_00ae5ec0(iVar3,iVar4,iVar4,local_b4,param_5);
    if (iVar4 == 0) goto LAB_00acf111;
    iVar5 = 1 << ((char)local_c0 - 1U & 0x1f);
    iVar4 = 1;
    if (1 < iVar5) {
      do {
        iVar6 = FUN_00aa4ae0(param_5);
        aiStack_84[iVar4 + 1] = iVar6;
        if ((iVar6 == 0) ||
           (iVar6 = FUN_00ae5ec0(iVar6,aiStack_84[iVar4],iVar3,local_b4,param_5), iVar6 == 0))
        goto LAB_00acf111;
        iVar4 = iVar4 + 1;
      } while (iVar4 < iVar5);
    }
  }
  local_bc = local_bc + -1;
  bVar1 = true;
  iVar3 = FUN_00a9ac50(param_1,1);
  if (iVar3 != 0) {
    do {
      while (iVar3 = FUN_00a9af90(param_3,local_bc), iVar3 == 0) {
        if ((!bVar1) && (iVar3 = FUN_00ae5ec0(param_1,param_1,param_1,local_b4,param_5), iVar3 == 0)
           ) goto LAB_00acf111;
        if (local_bc == 0) goto LAB_00acf0ff;
        local_bc = local_bc + -1;
      }
      uVar7 = 1;
      iVar5 = 1;
      iVar3 = 0;
      iVar4 = local_bc;
      if (1 < local_c0) {
        do {
          iVar4 = iVar4 + -1;
          if (iVar4 < 0) break;
          iVar6 = FUN_00a9af90(param_3,iVar4);
          if (iVar6 != 0) {
            uVar7 = uVar7 << ((char)iVar5 - (char)iVar3 & 0x1fU) | 1;
            iVar3 = iVar5;
          }
          iVar5 = iVar5 + 1;
        } while (iVar5 < (int)local_c0);
      }
      if ((!bVar1) && (iVar4 = 0, 0 < iVar3 + 1)) {
        do {
          iVar5 = FUN_00ae5ec0(param_1,param_1,param_1,local_b4,param_5);
          if (iVar5 == 0) goto LAB_00acf111;
          iVar4 = iVar4 + 1;
        } while (iVar4 < iVar3 + 1);
      }
      iVar4 = FUN_00ae5ec0(param_1,param_1,aiStack_84[((int)uVar7 >> 1) + 1],local_b4,param_5);
      if (iVar4 == 0) goto LAB_00acf111;
      local_bc = local_bc + (-1 - iVar3);
      bVar1 = false;
    } while (-1 < local_bc);
LAB_00acf0ff:
    local_b8 = 1;
  }
LAB_00acf111:
  FUN_00aa4aa0(param_5);
  FUN_00ae5b90(local_b4);
  return local_b8;
}



undefined4 __fastcall FUN_00acf140(int param_1_00,int param_2_00,int param_1,int param_2)

{
  uint uVar1;
  undefined *puVar2;
  int *unaff_EDI;
  
  if (unaff_EDI[1] < param_1_00) {
    param_1_00 = unaff_EDI[1];
  }
  uVar1 = 0;
  if (param_1_00 * 4 != 0) {
    puVar2 = (undefined *)(param_1 + param_2_00);
    do {
      *puVar2 = *(undefined *)(uVar1 + *unaff_EDI);
      uVar1 = uVar1 + 1;
      puVar2 = puVar2 + param_2;
    } while (uVar1 < (uint)(param_1_00 * 4));
  }
  return 1;
}



undefined4 FUN_00acf180(int param_1,int param_2,int param_3,int param_4)

{
  uint uVar1;
  undefined uVar2;
  int iVar3;
  int *piVar4;
  uint uVar5;
  undefined *puVar6;
  int *unaff_EDI;
  
  piVar4 = unaff_EDI;
  if (unaff_EDI[2] < param_1) {
    piVar4 = (int *)FUN_00a9ab60();
  }
  if (piVar4 == (int *)0x0) {
    return 0;
  }
  uVar1 = param_1 * 4;
  uVar5 = 0;
  if (uVar1 != 0) {
    puVar6 = (undefined *)(param_3 + param_2);
    do {
      uVar2 = *puVar6;
      puVar6 = puVar6 + param_4;
      *(undefined *)(uVar5 + *unaff_EDI) = uVar2;
      uVar5 = uVar5 + 1;
    } while (uVar5 < uVar1);
  }
  unaff_EDI[1] = param_1;
  if (0 < param_1) {
    piVar4 = (int *)(*unaff_EDI + -4 + uVar1);
    do {
      iVar3 = *piVar4;
      piVar4 = piVar4 + -1;
      if (iVar3 != 0) break;
      param_1 = param_1 + -1;
    } while (0 < param_1);
    unaff_EDI[1] = param_1;
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe
// WARNING: Function: __alloca_probe_16 replaced with injection: alloca_probe

void FUN_00acf1f0(undefined4 param_1,int param_2,undefined4 param_3,byte **param_4,
                 undefined4 param_5,int param_6)

{
  size_t _Size;
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined *puVar6;
  undefined *local_54;
  undefined4 local_50;
  byte *local_4c;
  undefined4 local_48;
  undefined4 local_44;
  size_t local_40;
  undefined4 local_3c;
  undefined *local_38;
  undefined4 local_34;
  byte *local_30;
  undefined4 local_2c;
  undefined4 local_28;
  byte *local_24;
  int local_20;
  undefined *local_1c;
  int local_18;
  undefined *local_14;
  int local_10;
  int local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_24 = param_4[1];
  puVar6 = (undefined *)0x0;
  local_3c = 0;
  local_40 = 0;
  local_14 = (undefined *)0x0;
  if ((**param_4 & 1) == 0) {
    FUN_00a7f3c0(3,0x7c,0x66,".\\crypto\\bn\\bn_exp.c",599);
    ___security_check_cookie_4();
    return;
  }
  iVar1 = FUN_00a9a920(param_3);
  if (iVar1 == 0) {
    FUN_00a9ac50(param_1,1);
    ___security_check_cookie_4();
    return;
  }
  FUN_00aa4a50(param_5);
  if (param_6 == 0) {
    local_c = FUN_00ad0520();
    if (local_c == 0) goto LAB_00acf668;
    iVar4 = FUN_00ad0180(local_c,param_4,param_5);
    if (iVar4 != 0) goto LAB_00acf2c5;
LAB_00acf637:
    if (local_c != 0) {
      FUN_00ad0140(local_c);
    }
  }
  else {
    local_c = param_6;
LAB_00acf2c5:
    if (iVar1 < 0x3aa) {
      if (iVar1 < 0x133) {
        if (iVar1 < 0x5a) {
          local_18 = (uint)(0x16 < iVar1) * 2 + 1;
        }
        else {
          local_18 = 4;
        }
      }
      else {
        local_18 = 5;
      }
    }
    else {
      local_18 = 6;
    }
    local_10 = 1 << (sbyte)local_18;
    iVar4 = (int)local_24 * 2;
    if ((int)local_24 * 2 <= local_10) {
      iVar4 = local_10;
    }
    local_20 = local_10 * (int)local_24;
    _Size = (local_20 + iVar4) * 4;
    local_40 = _Size;
    if ((int)_Size < 0xc00) {
      local_1c = &stack0xffffffa0;
LAB_00acf367:
      puVar6 = local_1c + (0x40 - ((uint)local_1c & 0x3f));
      local_14 = puVar6;
      _memset(puVar6,0,_Size);
      if ((int)_Size < 0xc00) {
        local_1c = (undefined *)0x0;
      }
      local_38 = puVar6 + local_20 * 4;
      local_54 = local_38 + (int)local_24 * 4;
      local_50 = 0;
      local_34 = 0;
      local_48 = 0;
      local_2c = 0;
      local_44 = 2;
      local_28 = 2;
      iVar4 = local_c + 4;
      local_4c = local_24;
      local_30 = local_24;
      uVar2 = FUN_00a9a8c0(iVar4,local_c,param_5);
      iVar3 = FUN_00ad0400(&local_38,uVar2);
      if (iVar3 != 0) {
        if ((*(int *)(param_2 + 0xc) == 0) && (iVar3 = FUN_00a9ae10(param_2,param_4), iVar3 < 0)) {
          iVar4 = FUN_00ad0400(&local_54,param_2,iVar4,local_c,param_5);
        }
        else {
          iVar3 = FUN_00ad26e0(0,&local_54,param_2,param_4,param_5);
          if (iVar3 == 0) goto LAB_00acf62e;
          iVar4 = FUN_00ad0400(&local_54,&local_54,iVar4,local_c,param_5);
        }
        if ((iVar4 != 0) && (iVar4 = FUN_00acf140(0,local_10), iVar4 != 0)) {
          iVar4 = FUN_00acf140(1,local_10);
          if (iVar4 != 0) {
            if (1 < local_18) {
              iVar4 = FUN_00ad0400(&local_38,&local_54,&local_54,local_c,param_5);
              if ((iVar4 == 0) || (iVar4 = FUN_00acf140(2,local_10), iVar4 == 0)) goto LAB_00acf62e;
              local_20 = 3;
              if (3 < local_10) {
                do {
                  iVar4 = FUN_00ad0400(&local_38,&local_54,&local_38,local_c,param_5);
                  if ((iVar4 == 0) || (iVar4 = FUN_00acf140(local_20,local_10), iVar4 == 0))
                  goto LAB_00acf62e;
                  local_20 = local_20 + 1;
                } while (local_20 < local_10);
              }
            }
            iVar1 = iVar1 + -1;
            iVar4 = 0;
            for (iVar3 = iVar1 % local_18; -1 < iVar3; iVar3 = iVar3 + -1) {
              iVar5 = FUN_00a9af90(param_3,iVar1);
              iVar1 = iVar1 + -1;
              iVar4 = iVar5 + iVar4 * 2;
            }
            iVar4 = FUN_00acf180(local_24,local_14,iVar4,local_10);
            if (iVar4 != 0) {
              while (-1 < iVar1) {
                iVar3 = 0;
                iVar4 = 0;
                if (0 < local_18) {
                  do {
                    iVar5 = FUN_00ad0400(&local_38,&local_38,&local_38,local_c,param_5);
                    if (iVar5 == 0) goto LAB_00acf62e;
                    iVar5 = FUN_00a9af90(param_3,iVar1);
                    iVar3 = iVar3 + 1;
                    iVar1 = iVar1 + -1;
                    iVar4 = iVar5 + iVar4 * 2;
                  } while (iVar3 < local_18);
                }
                iVar4 = FUN_00acf180(local_24,local_14,iVar4,local_10);
                if ((iVar4 == 0) ||
                   (iVar4 = FUN_00ad0400(&local_38,&local_38,&local_54,local_c,param_5), iVar4 == 0)
                   ) goto LAB_00acf62e;
              }
              iVar1 = FUN_00ad00e0(param_1,&local_38,local_c,param_5);
              if (iVar1 != 0) {
                local_3c = 1;
              }
            }
          }
        }
      }
    }
    else {
      local_1c = (undefined *)FUN_00a84f80(_Size + 0x40,".\\crypto\\bn\\bn_exp.c",0x27f);
      if (local_1c != (undefined *)0x0) goto LAB_00acf367;
    }
LAB_00acf62e:
    puVar6 = local_1c;
    if (param_6 == 0) goto LAB_00acf637;
  }
  if ((local_14 != (undefined *)0x0) &&
     (FUN_00a84330(local_14,local_40), puVar6 != (undefined *)0x0)) {
    FUN_00a85120(puVar6);
  }
LAB_00acf668:
  FUN_00aa4aa0(param_5);
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00acf690(undefined4 param_1,uint param_2,int param_3,uint **param_4,undefined4 param_5,
            int param_6)

{
  bool bVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  int local_14;
  int local_c;
  undefined4 local_4;
  
  local_14 = 0;
  local_4 = 0;
  if ((*(byte *)(param_3 + 0x10) & 4) != 0) {
    FUN_00a7f3c0(3,0x75,0x42,".\\crypto\\bn\\bn_exp.c",0x35b);
    return 0xffffffff;
  }
  if (((int)param_4[1] < 1) || ((**param_4 & 1) == 0)) {
    FUN_00a7f3c0(3,0x75,0x66,".\\crypto\\bn\\bn_exp.c",0x364);
    return 0;
  }
  if (param_4[1] == (uint *)0x1) {
    param_2 = param_2 % **param_4;
  }
  iVar2 = FUN_00a9a920(param_3);
  if (iVar2 == 0) {
    uVar3 = FUN_00a9ac50(param_1,1);
    return uVar3;
  }
  if (param_2 == 0) {
    FUN_00a9ac50(param_1,0);
    return 1;
  }
  FUN_00aa4a50(param_5);
  iVar4 = FUN_00aa4ae0(param_5);
  iVar5 = FUN_00aa4ae0(param_5);
  iVar6 = FUN_00aa4ae0(param_5);
  if (((iVar4 == 0) || (iVar5 == 0)) || (iVar6 == 0)) goto LAB_00acf991;
  if (param_6 == 0) {
    local_14 = FUN_00ad0520();
    if (local_14 == 0) goto LAB_00acf9a9;
    iVar4 = FUN_00ad0180(local_14,param_4,param_5);
    if (iVar4 != 0) goto LAB_00acf7bc;
  }
  else {
    local_14 = param_6;
LAB_00acf7bc:
    bVar1 = true;
    uVar8 = param_2;
    for (iVar2 = iVar2 + -2; local_c = iVar5, -1 < iVar2; iVar2 = iVar2 + -1) {
      uVar7 = uVar8 * uVar8;
      iVar4 = local_c;
      if (uVar7 / uVar8 != uVar8) {
        if (bVar1) {
          iVar5 = FUN_00a9ac50();
          if ((iVar5 == 0) ||
             (iVar5 = FUN_00ad0400(local_c,local_c,local_14 + 4,local_14,param_5), iVar5 == 0))
          goto LAB_00acf991;
          bVar1 = false;
          local_c = iVar6;
        }
        else {
          iVar5 = FUN_00a9b970(local_c,uVar8);
          if ((iVar5 == 0) ||
             (iVar5 = FUN_00ad26e0(0,iVar6,local_c,param_4,param_5), iVar4 = iVar6, iVar5 == 0))
          goto LAB_00acf991;
        }
        uVar7 = 1;
        iVar6 = local_c;
      }
      local_c = iVar6;
      if ((!bVar1) && (iVar6 = FUN_00ad0400(iVar4,iVar4,iVar4,local_14,param_5), iVar6 == 0))
      goto LAB_00acf991;
      iVar6 = FUN_00a9af90(param_3,iVar2);
      iVar5 = iVar4;
      uVar8 = uVar7;
      if ((iVar6 != 0) && (uVar8 = uVar7 * param_2, (uVar7 * param_2) / param_2 != uVar7)) {
        if (bVar1) {
          iVar6 = FUN_00a9ac50();
          if ((iVar6 == 0) ||
             (iVar6 = FUN_00ad0400(iVar4,iVar4,local_14 + 4,local_14,param_5), iVar6 == 0))
          goto LAB_00acf991;
          bVar1 = false;
          uVar8 = param_2;
        }
        else {
          iVar6 = FUN_00a9b970(iVar4,uVar7);
          if ((iVar6 == 0) ||
             (iVar6 = FUN_00ad26e0(0,local_c,iVar4,param_4,param_5), iVar5 = local_c,
             uVar8 = param_2, local_c = iVar4, iVar6 == 0)) goto LAB_00acf991;
        }
      }
      iVar6 = local_c;
    }
    if (uVar8 == 1) {
      if (bVar1) {
        iVar2 = FUN_00a9ac50(param_1,1);
      }
      else {
LAB_00acf971:
        iVar2 = FUN_00ad00e0(param_1,local_c,local_14,param_5);
      }
      if (iVar2 != 0) {
        local_4 = 1;
      }
    }
    else if (bVar1) {
      iVar2 = FUN_00a9ac50();
      if (iVar2 != 0) {
        iVar2 = FUN_00ad0400(local_c,local_c,local_14 + 4,local_14,param_5);
joined_r0x00acf9de:
        if (iVar2 != 0) goto LAB_00acf971;
      }
    }
    else {
      iVar2 = FUN_00a9b970(local_c,uVar8);
      if (iVar2 != 0) {
        iVar2 = FUN_00ad26e0(0,iVar6,local_c,param_4,param_5);
        local_c = iVar6;
        goto joined_r0x00acf9de;
      }
    }
LAB_00acf991:
    if (param_6 != 0) goto LAB_00acf9a9;
  }
  if (local_14 != 0) {
    FUN_00ad0140(local_14);
  }
LAB_00acf9a9:
  FUN_00aa4aa0(param_5);
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00acfa20(undefined4 param_1,int param_2,int param_3,byte **param_4,undefined4 param_5,
            int param_6)

{
  bool bVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  int local_9c;
  int local_98;
  uint local_90;
  undefined4 local_88;
  int local_84 [32];
  undefined4 uStack_4;
  
  uStack_4 = 0xacfa2a;
  local_88 = 0;
  local_9c = 0;
  if ((*(byte *)(param_3 + 0x10) & 4) != 0) {
    uVar2 = FUN_00acf1f0();
    return uVar2;
  }
  if (((int)param_4[1] < 1) || ((**param_4 & 1) == 0)) {
    FUN_00a7f3c0(3,0x6d,0x66,".\\crypto\\bn\\bn_exp.c",0x196);
    return 0;
  }
  local_98 = FUN_00a9a920(param_3);
  if (local_98 == 0) {
    uVar2 = FUN_00a9ac50(param_1,1);
    return uVar2;
  }
  FUN_00aa4a50(param_5);
  iVar3 = FUN_00aa4ae0(param_5);
  iVar4 = FUN_00aa4ae0(param_5);
  iVar5 = FUN_00aa4ae0(param_5);
  local_84[1] = iVar5;
  if (((iVar3 == 0) || (iVar4 == 0)) || (iVar5 == 0)) goto LAB_00acfdc9;
  if (param_6 == 0) {
    local_9c = FUN_00ad0520();
    if (local_9c == 0) goto LAB_00acfde4;
    iVar6 = FUN_00ad0180(local_9c,param_4,param_5);
    if (iVar6 != 0) goto LAB_00acfb1f;
  }
  else {
    local_9c = param_6;
LAB_00acfb1f:
    if (((*(int *)(param_2 + 0xc) == 0) && (iVar6 = FUN_00a9ae10(param_2,param_4), iVar6 < 0)) ||
       (iVar6 = FUN_00ad2c10(iVar5,param_2,param_4,param_5), param_2 = iVar5, iVar6 != 0)) {
      if (*(int *)(param_2 + 4) == 0) {
        FUN_00a9ac50(param_1,0);
        local_88 = 1;
      }
      else {
        local_84[0] = local_9c + 4;
        iVar6 = FUN_00ad0400(iVar5,param_2,local_84[0],local_9c,param_5);
        if (iVar6 != 0) {
          if (local_98 < 0x2a0) {
            if (0xef < local_98) {
              local_90 = 5;
              goto LAB_00acfbe5;
            }
            if (0x4f < local_98) {
              local_90 = 4;
              goto LAB_00acfbe5;
            }
            local_90 = (uint)(0x17 < local_98) * 2 + 1;
            if (1 < local_90) goto LAB_00acfbe5;
          }
          else {
            local_90 = 6;
LAB_00acfbe5:
            iVar5 = FUN_00ad0400(iVar3,iVar5,iVar5,local_9c,param_5);
            if (iVar5 == 0) goto LAB_00acfdc9;
            iVar5 = 1 << ((char)local_90 - 1U & 0x1f);
            iVar6 = 1;
            if (1 < iVar5) {
              do {
                iVar7 = FUN_00aa4ae0(param_5);
                local_84[iVar6 + 1] = iVar7;
                if ((iVar7 == 0) ||
                   (iVar7 = FUN_00ad0400(iVar7,local_84[iVar6],iVar3,local_9c,param_5), iVar7 == 0))
                goto LAB_00acfdc9;
                iVar6 = iVar6 + 1;
              } while (iVar6 < iVar5);
            }
          }
          local_98 = local_98 + -1;
          bVar1 = true;
          uVar2 = FUN_00a9a8c0(local_84[0],local_9c,param_5);
          iVar3 = FUN_00ad0400(iVar4,uVar2);
          if (iVar3 != 0) {
            do {
              while (iVar3 = FUN_00a9af90(param_3,local_98), iVar3 == 0) {
                if ((!bVar1) &&
                   (iVar3 = FUN_00ad0400(iVar4,iVar4,iVar4,local_9c,param_5), iVar3 == 0))
                goto LAB_00acfdc9;
                if (local_98 == 0) goto LAB_00acfd9d;
                local_98 = local_98 + -1;
              }
              uVar8 = 1;
              iVar6 = 1;
              iVar3 = 0;
              iVar5 = local_98;
              if (1 < local_90) {
                do {
                  iVar5 = iVar5 + -1;
                  if (iVar5 < 0) break;
                  iVar7 = FUN_00a9af90(param_3,iVar5);
                  if (iVar7 != 0) {
                    uVar8 = uVar8 << ((char)iVar6 - (char)iVar3 & 0x1fU) | 1;
                    iVar3 = iVar6;
                  }
                  iVar6 = iVar6 + 1;
                } while (iVar6 < (int)local_90);
              }
              if ((!bVar1) && (iVar5 = 0, 0 < iVar3 + 1)) {
                do {
                  iVar6 = FUN_00ad0400(iVar4,iVar4,iVar4,local_9c,param_5);
                  if (iVar6 == 0) goto LAB_00acfdc9;
                  iVar5 = iVar5 + 1;
                } while (iVar5 < iVar3 + 1);
              }
              iVar5 = FUN_00ad0400(iVar4,iVar4,local_84[((int)uVar8 >> 1) + 1],local_9c,param_5);
              if (iVar5 == 0) goto LAB_00acfdc9;
              local_98 = local_98 + (-1 - iVar3);
              bVar1 = false;
            } while (-1 < local_98);
LAB_00acfd9d:
            iVar3 = FUN_00ad00e0(param_1,iVar4,local_9c,param_5);
            if (iVar3 != 0) {
              local_88 = 1;
            }
          }
        }
      }
    }
LAB_00acfdc9:
    if (param_6 != 0) goto LAB_00acfde4;
  }
  if (local_9c != 0) {
    FUN_00ad0140(local_9c);
  }
LAB_00acfde4:
  FUN_00aa4aa0(param_5);
  return local_88;
}



void FUN_00acfe20(undefined4 param_1,undefined4 *param_2,int param_3,byte **param_4,
                 undefined4 param_5)

{
  if (((int)param_4[1] < 1) || ((**param_4 & 1) == 0)) {
    FUN_00acedd0();
    return;
  }
  if (((param_2[1] == 1) && (param_2[3] == 0)) && ((*(byte *)(param_3 + 0x10) & 4) == 0)) {
    FUN_00acf690(param_1,*(undefined4 *)*param_2,param_3,param_4,param_5,0);
    return;
  }
  FUN_00acfa20(param_1,param_2,param_3,param_4,param_5,0);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00acfe90(uint *param_1,int **param_2,uint param_3)

{
  undefined4 uVar1;
  uint uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int **ppiVar6;
  int iVar7;
  uint uVar8;
  uint *puVar9;
  undefined4 *puVar10;
  undefined4 *puVar11;
  int *piVar12;
  uint uVar13;
  int iVar14;
  int *piVar15;
  uint uVar16;
  
  uVar13 = *(uint *)(param_3 + 0x1c);
  if (uVar13 == 0) {
    param_1[1] = 0;
    return 1;
  }
  iVar14 = uVar13 * 2;
  ppiVar6 = param_2;
  if ((int)param_2[2] < iVar14) {
    ppiVar6 = (int **)FUN_00a9ab60(param_2,iVar14);
  }
  if (ppiVar6 != (int **)0x0) {
    param_2[3] = (int *)((uint)param_2[3] ^ *(uint *)(param_3 + 0x24));
    uVar1 = *(undefined4 *)(param_3 + 0x18);
    piVar12 = param_2[1];
    piVar15 = *param_2;
    if ((int)piVar12 < iVar14) {
      iVar14 = iVar14 - (int)piVar12;
      piVar12 = piVar15 + (int)piVar12;
      for (; iVar14 != 0; iVar14 = iVar14 + -1) {
        *piVar12 = 0;
        piVar12 = piVar12 + 1;
      }
    }
    param_2[1] = (int *)(uVar13 * 2);
    iVar14 = *(int *)(param_3 + 0x40);
    uVar16 = 0;
    param_3 = uVar13;
    if (0 < (int)uVar13) {
      do {
        iVar7 = FUN_00acac80(piVar15,uVar1,uVar13,*piVar15 * iVar14);
        uVar2 = piVar15[uVar13];
        uVar8 = iVar7 + uVar2 + uVar16;
        piVar15[uVar13] = uVar8;
        uVar16 = (uVar8 != uVar2 | uVar16) & (uint)(uVar8 <= uVar2);
        piVar15 = piVar15 + 1;
        param_3 = param_3 - 1;
      } while (param_3 != 0);
    }
    puVar9 = param_1;
    if ((int)param_1[2] < (int)uVar13) {
      puVar9 = (uint *)FUN_00a9ab60(param_1,uVar13);
    }
    if (puVar9 != (uint *)0x0) {
      uVar2 = *param_1;
      param_1[1] = uVar13;
      param_1[3] = (uint)param_2[3];
      piVar12 = *param_2 + uVar13;
      iVar14 = FUN_00acb450(uVar2,piVar12,uVar1,uVar13);
      uVar16 = ~(uVar16 - iVar14) & uVar2 | uVar16 - iVar14 & (uint)piVar12;
      iVar14 = 0;
      if (0 < (int)(uVar13 - 4)) {
        puVar11 = (undefined4 *)(uVar2 + 4);
        puVar10 = (undefined4 *)(uVar16 + 8);
        do {
          uVar1 = puVar10[-1];
          uVar3 = puVar10[-2];
          uVar4 = *puVar10;
          piVar12[iVar14] = 0;
          uVar5 = puVar10[1];
          *(undefined4 *)((int)puVar11 + ((int)piVar12 - uVar2)) = 0;
          puVar11[-1] = uVar3;
          *(undefined4 *)(((int)piVar12 - uVar16) + (int)puVar10) = 0;
          *puVar11 = uVar1;
          piVar12[iVar14 + 3] = 0;
          *(undefined4 *)((int)puVar10 + (uVar2 - uVar16)) = uVar4;
          puVar11[2] = uVar5;
          iVar14 = iVar14 + 4;
          puVar11 = puVar11 + 4;
          puVar10 = puVar10 + 4;
        } while (iVar14 < (int)(uVar13 - 4));
      }
      if (iVar14 < (int)uVar13) {
        puVar11 = (undefined4 *)(uVar2 + iVar14 * 4);
        iVar14 = uVar13 - iVar14;
        do {
          *puVar11 = *(undefined4 *)((int)puVar11 + (uVar16 - uVar2));
          *(undefined4 *)(((int)piVar12 - uVar2) + (int)puVar11) = 0;
          puVar11 = puVar11 + 1;
          iVar14 = iVar14 + -1;
        } while (iVar14 != 0);
      }
      piVar12 = param_2[1];
      if (0 < (int)piVar12) {
        piVar15 = *param_2 + (int)piVar12 + -1;
        do {
          iVar14 = *piVar15;
          piVar15 = piVar15 + -1;
          if (iVar14 != 0) break;
          piVar12 = (int *)((int)piVar12 + -1);
        } while (0 < (int)piVar12);
        param_2[1] = piVar12;
      }
      uVar13 = param_1[1];
      if (0 < (int)uVar13) {
        piVar12 = (int *)((*param_1 - 4) + uVar13 * 4);
        do {
          iVar14 = *piVar12;
          piVar12 = piVar12 + -1;
          if (iVar14 != 0) break;
          uVar13 = uVar13 - 1;
        } while (0 < (int)uVar13);
        param_1[1] = uVar13;
      }
      return 1;
    }
  }
  return 0;
}



undefined4 FUN_00ad00e0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  
  uVar3 = 0;
  FUN_00aa4a50(param_4);
  iVar1 = FUN_00aa4ae0(param_4);
  if (iVar1 != 0) {
    iVar2 = FUN_00a9aba0(iVar1,param_2);
    if (iVar2 != 0) {
      uVar3 = FUN_00acfe90(param_1,iVar1,param_3);
    }
  }
  FUN_00aa4aa0(param_4);
  return uVar3;
}



void FUN_00ad0140(int param_1)

{
  if (param_1 != 0) {
    FUN_00a9a9b0(param_1 + 4);
    FUN_00a9a9b0(param_1 + 0x18);
    FUN_00a9a9b0(param_1 + 0x2c);
    if ((*(byte *)(param_1 + 0x48) & 1) != 0) {
      FUN_00a85120(param_1);
    }
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ad0180(int *param_1,int **param_2,undefined4 param_3)

{
  int *piVar1;
  int **ppiVar2;
  int iVar3;
  int **ppiVar4;
  undefined4 local_24;
  int local_1c;
  int local_18;
  int *local_14;
  uint local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xad018a;
  local_24 = 0;
  FUN_00aa4a50(param_3);
  ppiVar2 = (int **)FUN_00aa4ae0(param_3);
  if (ppiVar2 != (int **)0x0) {
    piVar1 = param_1 + 1;
    iVar3 = FUN_00a9aba0(param_1 + 6,param_2);
    if (iVar3 != 0) {
      param_1[9] = 0;
      FUN_00a9a9f0(&local_14);
      local_14 = &local_1c;
      local_c = 2;
      local_8 = 0;
      iVar3 = FUN_00a9a920(param_2);
      *param_1 = ((int)(iVar3 + 0x1f + (iVar3 + 0x1f >> 0x1f & 0x1fU)) >> 5) << 5;
      FUN_00a9ac50(piVar1,0);
      iVar3 = FUN_00a9af00(piVar1,0x40);
      if (iVar3 != 0) {
        local_1c = **param_2;
        local_10 = (uint)(local_1c != 0);
        if ((int)param_2[1] < 2) {
          local_18 = 0;
        }
        else {
          local_18 = (*param_2)[1];
          if (local_18 != 0) {
            local_10 = 2;
          }
        }
        iVar3 = FUN_00ad3370(ppiVar2,piVar1,&local_14,param_3);
        if ((iVar3 != 0) && (iVar3 = FUN_00a9bb30(ppiVar2,ppiVar2,0x40), iVar3 != 0)) {
          if (ppiVar2[1] == (int *)0x0) {
            ppiVar4 = ppiVar2;
            if ((int)ppiVar2[2] < 1) {
              ppiVar4 = (int **)FUN_00a9ab60(ppiVar2,1);
            }
            if (ppiVar4 == (int **)0x0) goto LAB_00ad0370;
            ppiVar2[3] = (int *)0x0;
            **ppiVar2 = -1;
            (*ppiVar2)[1] = -1;
            ppiVar2[1] = (int *)0x2;
          }
          else {
            iVar3 = FUN_00a9b8a0(ppiVar2,1);
            if (iVar3 == 0) goto LAB_00ad0370;
          }
          iVar3 = FUN_00ad26e0(ppiVar2,0,ppiVar2,&local_14,param_3);
          if (iVar3 != 0) {
            if ((int)ppiVar2[1] < 1) {
              iVar3 = 0;
            }
            else {
              iVar3 = **ppiVar2;
            }
            param_1[0x10] = iVar3;
            if ((int)ppiVar2[1] < 2) {
              iVar3 = 0;
            }
            else {
              iVar3 = (*ppiVar2)[1];
            }
            param_1[0x11] = iVar3;
            FUN_00a9ac50(piVar1,0);
            iVar3 = FUN_00a9af00(piVar1,*param_1 * 2);
            if ((iVar3 != 0) &&
               (iVar3 = FUN_00ad26e0(0,piVar1,piVar1,param_1 + 6,param_3), iVar3 != 0)) {
              local_24 = 1;
            }
          }
        }
      }
    }
  }
LAB_00ad0370:
  FUN_00aa4aa0(param_3);
  return local_24;
}



undefined4 * FUN_00ad0390(undefined4 *param_1,undefined4 *param_2)

{
  int iVar1;
  
  if (param_1 == param_2) {
    return param_1;
  }
  iVar1 = FUN_00a9aba0(param_1 + 1,param_2 + 1);
  if (((iVar1 != 0) && (iVar1 = FUN_00a9aba0(param_1 + 6,param_2 + 6), iVar1 != 0)) &&
     (iVar1 = FUN_00a9aba0(param_1 + 0xb,param_2 + 0xb), iVar1 != 0)) {
    *param_1 = *param_2;
    param_1[0x10] = param_2[0x10];
    param_1[0x11] = param_2[0x11];
    return param_1;
  }
  return (undefined4 *)0x0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00ad0400(int *param_1,undefined4 *param_2,undefined4 *param_3,int param_4,undefined4 param_5)

{
  uint uVar1;
  uint uVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  undefined4 local_4;
  
  iVar5 = *(int *)(param_4 + 0x1c);
  local_4 = 0;
  if (((1 < iVar5) && (param_2[1] == iVar5)) && (param_3[1] == iVar5)) {
    piVar3 = param_1;
    if (param_1[2] < iVar5) {
      piVar3 = (int *)FUN_00a9ab60(param_1,iVar5);
    }
    if (piVar3 == (int *)0x0) {
      return 0;
    }
    iVar4 = FUN_00ae5f40(*param_1,*param_2,*param_3,*(undefined4 *)(param_4 + 0x18),param_4 + 0x40,
                         iVar5);
    if (iVar4 != 0) {
      uVar1 = param_2[3];
      uVar2 = param_3[3];
      param_1[1] = iVar5;
      param_1[3] = uVar1 ^ uVar2;
      if (0 < iVar5) {
        piVar3 = (int *)(*param_1 + -4 + iVar5 * 4);
        do {
          iVar4 = *piVar3;
          piVar3 = piVar3 + -1;
          if (iVar4 != 0) break;
          iVar5 = iVar5 + -1;
        } while (0 < iVar5);
        param_1[1] = iVar5;
      }
      return 1;
    }
  }
  FUN_00aa4a50(param_5);
  iVar5 = FUN_00aa4ae0(param_5);
  if (iVar5 != 0) {
    if (param_2 == param_3) {
      iVar4 = FUN_00ae59a0(iVar5,param_2,param_5);
    }
    else {
      iVar4 = FUN_00ad2400(iVar5,param_2,param_3,param_5);
    }
    if ((iVar4 != 0) && (iVar5 = FUN_00acfe90(param_1,iVar5,param_4), iVar5 != 0)) {
      local_4 = 1;
    }
  }
  FUN_00aa4aa0(param_5);
  return local_4;
}



undefined4 * FUN_00ad0520(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x4c,".\\crypto\\bn\\bn_mont.c",0x145);
  if (puVar1 == (undefined4 *)0x0) {
    return (undefined4 *)0x0;
  }
  *puVar1 = 0;
  FUN_00a9a9f0(puVar1 + 1);
  FUN_00a9a9f0(puVar1 + 6);
  FUN_00a9a9f0(puVar1 + 0xb);
  puVar1[0x11] = 0;
  puVar1[0x10] = 0;
  puVar1[0x12] = 1;
  return puVar1;
}



int FUN_00ad0580(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  
  bVar1 = false;
  FUN_00a7fdc0(5,param_2,".\\crypto\\bn\\bn_mont.c",0x1e4);
  if (*param_1 == 0) {
    FUN_00a7fdc0(6,param_2,".\\crypto\\bn\\bn_mont.c",0x1e7);
    FUN_00a7fdc0(9,param_2,".\\crypto\\bn\\bn_mont.c",0x1e8);
    bVar1 = true;
    if (*param_1 == 0) {
      iVar2 = FUN_00ad0520();
      if ((iVar2 == 0) || (iVar3 = FUN_00ad0180(iVar2,param_3,param_4), iVar3 != 0)) {
        *param_1 = iVar2;
      }
      else {
        FUN_00ad0140(iVar2);
      }
    }
  }
  iVar2 = *param_1;
  if (!bVar1) {
    FUN_00a7fdc0(6,param_2,".\\crypto\\bn\\bn_mont.c",0x1fa);
    return iVar2;
  }
  FUN_00a7fdc0(10,param_2,".\\crypto\\bn\\bn_mont.c",0x1f8);
  return iVar2;
}



undefined4 FUN_00ad0650(void *param_1,int param_2,void *param_3,size_t param_4)

{
  if (param_2 < (int)param_4) {
    FUN_00a7f3c0(4,0x6b,0x6e,".\\crypto\\rsa\\rsa_none.c",0x46);
    return 0;
  }
  if ((int)param_4 < param_2) {
    FUN_00a7f3c0(4,0x6b,0x7a,".\\crypto\\rsa\\rsa_none.c",0x4c);
    return 0;
  }
  _memcpy(param_1,param_3,param_4);
  return 1;
}



int FUN_00ad06b0(void *param_1,int param_2,void *param_3,size_t param_4)

{
  if (param_2 < (int)param_4) {
    FUN_00a7f3c0(4,0x6f,0x6d,".\\crypto\\rsa\\rsa_none.c",0x5a);
    return -1;
  }
  _memset(param_1,0,param_2 - param_4);
  _memcpy((void *)((int)param_1 + (param_2 - param_4)),param_3,param_4);
  return param_2;
}



undefined4 FUN_00ad0710(undefined *param_1,int param_2,void *param_3,size_t param_4)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  
  if (param_2 + -0xb < (int)param_4) {
    FUN_00a7f3c0(4,0x6e,0x6e,".\\crypto\\rsa\\rsa_ssl.c",0x49);
    return 0;
  }
  iVar2 = (param_2 - param_4) + -0xb;
  *param_1 = 0;
  param_1[1] = 2;
  puVar5 = (undefined4 *)(param_1 + 2);
  iVar3 = FUN_00a86e60(puVar5,iVar2);
  if (iVar3 < 1) {
    return 0;
  }
  iVar3 = 0;
  if (0 < iVar2) {
    do {
      cVar1 = *(char *)puVar5;
      while (cVar1 == '\0') {
        iVar4 = FUN_00a86e60(puVar5,1);
        if (iVar4 < 1) {
          return 0;
        }
        cVar1 = *(char *)puVar5;
      }
      iVar3 = iVar3 + 1;
      puVar5 = (undefined4 *)((int)puVar5 + 1);
    } while (iVar3 < iVar2);
  }
  *puVar5 = &DAT_03030303;
  puVar5[1] = &DAT_03030303;
  *(undefined *)(puVar5 + 2) = 0;
  _memcpy((undefined *)((int)puVar5 + 9),param_3,param_4);
  return 1;
}



size_t FUN_00ad07c0(void *param_1,int param_2,char *param_3,int param_4,int param_5)

{
  char cVar1;
  int iVar2;
  int iVar3;
  char *_Src;
  size_t _Size;
  
  if (param_4 < 10) {
    FUN_00a7f3c0(4,0x72,0x6f,".\\crypto\\rsa\\rsa_ssl.c",0x72);
    return 0xffffffff;
  }
  if ((param_5 != param_4 + 1) || (_Src = param_3 + 1, *param_3 != '\x02')) {
    FUN_00a7f3c0(4,0x72,0x6b,".\\crypto\\rsa\\rsa_ssl.c",0x77);
    return 0xffffffff;
  }
  param_4 = param_4 + -1;
  iVar3 = 0;
  if (0 < param_4) {
    do {
      cVar1 = *_Src;
      _Src = _Src + 1;
      if (cVar1 == '\0') break;
      iVar3 = iVar3 + 1;
    } while (iVar3 < param_4);
  }
  if ((iVar3 == param_4) || (iVar3 < 8)) {
    FUN_00a7f3c0(4,0x72,0x71,".\\crypto\\rsa\\rsa_ssl.c",0x82);
    return 0xffffffff;
  }
  iVar2 = -9;
  do {
    if (_Src[iVar2] != '\x03') break;
    iVar2 = iVar2 + 1;
  } while (iVar2 < -1);
  if (iVar2 == -1) {
    FUN_00a7f3c0(4,0x72,0x73,".\\crypto\\rsa\\rsa_ssl.c",0x8b);
    return 0xffffffff;
  }
  _Size = param_4 + (-1 - iVar3);
  if ((int)_Size <= param_2) {
    _memcpy(param_1,_Src,_Size);
    return _Size;
  }
  FUN_00a7f3c0(4,0x72,0x6d,".\\crypto\\rsa\\rsa_ssl.c",0x93);
  return 0xffffffff;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ad08e0(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined local_74;
  undefined local_73;
  undefined local_72;
  undefined local_71;
  int local_70;
  undefined4 local_6c;
  undefined4 local_68;
  int local_64;
  undefined4 local_60;
  undefined local_5c [24];
  undefined auStack_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_74;
  local_70 = param_1;
  local_60 = param_3;
  local_68 = param_5;
  local_6c = 0xffffffff;
  FUN_00a91330(local_5c);
  local_64 = FUN_00a92600(param_5);
  if (-1 < local_64) {
    iVar3 = 0;
    iVar2 = 0;
    if (0 < param_2) {
      do {
        local_74 = (undefined)((uint)iVar3 >> 0x18);
        local_73 = (undefined)((uint)iVar3 >> 0x10);
        local_72 = (undefined)((uint)iVar3 >> 8);
        local_71 = (undefined)iVar3;
        iVar1 = FUN_00a91380(local_5c,param_5,0);
        if (((iVar1 == 0) || (iVar1 = FUN_00a91530(local_5c,local_60,param_4), iVar1 == 0)) ||
           (iVar1 = FUN_00a91530(local_5c,&local_74,4), iVar1 == 0)) goto LAB_00ad0a35;
        iVar1 = local_64 + iVar2;
        if (param_2 < iVar1) {
          iVar1 = FUN_00a91540(local_5c,auStack_44,0);
          if (iVar1 == 0) goto LAB_00ad0a35;
          _memcpy((void *)(local_70 + iVar2),auStack_44,param_2 - iVar2);
          iVar1 = param_2;
        }
        else {
          iVar2 = FUN_00a91540(local_5c,local_70 + iVar2,0);
          if (iVar2 == 0) goto LAB_00ad0a35;
        }
        iVar3 = iVar3 + 1;
        param_5 = local_68;
        iVar2 = iVar1;
      } while (iVar1 < param_2);
    }
    local_6c = 0;
  }
LAB_00ad0a35:
  FUN_00a915c0(local_5c);
  ___security_check_cookie_4();
  return;
}



void FUN_00ad0a60(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00a924c0();
  FUN_00ad08e0(param_1,param_2,param_3,param_4,uVar1);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ad0a90(undefined *param_1,int param_2,byte *param_3,size_t param_4,int param_5,
                 undefined4 param_6)

{
  byte *pbVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  byte *pbVar6;
  byte *pbVar7;
  int iVar8;
  int iVar9;
  byte *local_20;
  int local_1c;
  byte local_18 [20];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_20;
  iVar8 = param_2 + -1;
  local_20 = param_3;
  local_1c = param_5;
  if (param_2 + -0x2a < (int)param_4) {
    FUN_00a7f3c0(4,0x79,0x6e,".\\crypto\\rsa\\rsa_oaep.c",0x2d);
    ___security_check_cookie_4();
    return;
  }
  if (iVar8 < 0x29) {
    FUN_00a7f3c0(4,0x79,0x78,".\\crypto\\rsa\\rsa_oaep.c",0x33);
    ___security_check_cookie_4();
    return;
  }
  *param_1 = 0;
  pbVar7 = param_1 + 1;
  pbVar1 = param_1 + 0x15;
  uVar4 = FUN_00a924c0(0);
  iVar5 = FUN_00a91830(local_1c,param_6,pbVar1,0,uVar4);
  if (iVar5 != 0) {
    _memset(param_1 + 0x29,0,(iVar8 - param_4) - 0x29);
    pbVar1[(iVar8 - param_4) + -0x15] = 1;
    _memcpy(pbVar1 + (iVar8 - param_4) + -0x14,local_20,param_4);
    iVar8 = FUN_00a86e60(pbVar7,0x14);
    if (0 < iVar8) {
      param_2 = param_2 + -0x15;
      iVar8 = FUN_00a84f80(param_2,".\\crypto\\rsa\\rsa_oaep.c",0x49);
      local_1c = iVar8;
      if (iVar8 == 0) {
        FUN_00a7f3c0(4,0x79,0x41,".\\crypto\\rsa\\rsa_oaep.c",0x4c);
      }
      else {
        iVar5 = FUN_00ad0a60(iVar8,param_2,pbVar7,0x14);
        if (-1 < iVar5) {
          if (0 < param_2) {
            pbVar6 = pbVar1;
            iVar8 = param_2;
            do {
              *pbVar6 = *pbVar6 ^ pbVar6[iVar8 - (int)pbVar1];
              pbVar6 = pbVar6 + 1;
              iVar8 = iVar8 + -1;
            } while (iVar8 != 0);
          }
          uVar4 = FUN_00a924c0();
          iVar8 = FUN_00ad08e0(local_18,0x14,pbVar1,param_2,uVar4);
          if (-1 < iVar8) {
            iVar8 = -(int)pbVar7;
            iVar5 = 1 - (int)pbVar7;
            iVar2 = 2 - (int)pbVar7;
            iVar3 = 3 - (int)pbVar7;
            local_20 = local_18 + (4 - (int)pbVar7);
            iVar9 = 4;
            do {
              *pbVar7 = *pbVar7 ^ pbVar7[(int)(local_18 + iVar8)];
              pbVar7[1] = pbVar7[1] ^ pbVar7[(int)(local_18 + iVar5)];
              pbVar7[2] = pbVar7[2] ^ pbVar7[(int)(local_18 + iVar2)];
              pbVar7[3] = pbVar7[3] ^ pbVar7[(int)(local_18 + iVar3)];
              pbVar7[4] = pbVar7[4] ^ pbVar7[(int)local_20];
              pbVar7 = pbVar7 + 5;
              iVar9 = iVar9 + -1;
            } while (iVar9 != 0);
            FUN_00a85120(local_1c);
            ___security_check_cookie_4();
            return;
          }
        }
      }
    }
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ad0ca0(void *param_1,int param_2,byte *param_3,size_t param_4,int param_5,
                 undefined4 param_6,undefined4 param_7)

{
  byte *pbVar1;
  size_t sVar2;
  undefined4 uVar3;
  int iVar4;
  byte *pbVar5;
  size_t _Size;
  byte *pbVar6;
  bool bVar7;
  byte *local_3c;
  uint local_38;
  undefined4 local_34;
  void *local_30;
  byte local_2c [20];
  undefined local_18 [3];
  byte abStack_15 [17];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_3c;
  local_30 = param_1;
  pbVar6 = (byte *)0x0;
  sVar2 = param_5 - 1;
  local_3c = param_3;
  local_34 = param_6;
  local_38 = 0;
  if (0x28 < (int)sVar2) {
    _Size = sVar2 - param_4;
    bVar7 = (int)_Size < 0;
    if (bVar7) {
      _Size = 0;
      param_4 = sVar2;
    }
    local_38 = (uint)bVar7;
    param_5 = param_5 + -0x15;
    pbVar6 = (byte *)FUN_00a84f80(sVar2 + param_5,".\\crypto\\rsa\\rsa_oaep.c",0x7c);
    if (pbVar6 == (byte *)0x0) {
      FUN_00a7f3c0(4,0x7a,0x41,".\\crypto\\rsa\\rsa_oaep.c",0x7f);
      goto LAB_00ad0eeb;
    }
    pbVar5 = pbVar6 + param_5;
    _memset(pbVar5,0,_Size);
    _memcpy(pbVar5 + _Size,local_3c,param_4);
    local_3c = pbVar5 + 0x14;
    uVar3 = FUN_00a924c0();
    iVar4 = FUN_00ad08e0(local_2c,0x14,pbVar5 + 0x14,param_5,uVar3);
    if (iVar4 != 0) goto LAB_00ad0eeb;
    iVar4 = 0;
    do {
      pbVar1 = local_2c + iVar4;
      *pbVar1 = *pbVar1 ^ pbVar1[(int)pbVar5 - (int)local_2c];
      local_2c[iVar4 + 1] = local_2c[iVar4 + 1] ^ pbVar5[iVar4 + 1];
      local_2c[iVar4 + 2] = local_2c[iVar4 + 2] ^ pbVar5[iVar4 + 2];
      local_2c[iVar4 + 3] = local_2c[iVar4 + 3] ^ pbVar5[iVar4 + 3];
      local_2c[iVar4 + 4] = local_2c[iVar4 + 4] ^ pbVar5[iVar4 + 4];
      iVar4 = iVar4 + 5;
    } while (iVar4 < 0x14);
    uVar3 = FUN_00a924c0();
    iVar4 = FUN_00ad08e0(pbVar6,param_5,local_2c,0x14,uVar3);
    if (iVar4 != 0) goto LAB_00ad0eeb;
    if (0 < param_5) {
      pbVar5 = pbVar6;
      iVar4 = param_5;
      do {
        *pbVar5 = *pbVar5 ^ pbVar5[(int)local_3c - (int)pbVar6];
        pbVar5 = pbVar5 + 1;
        iVar4 = iVar4 + -1;
      } while (iVar4 != 0);
    }
    uVar3 = FUN_00a924c0(0);
    iVar4 = FUN_00a91830(local_34,param_7,local_18,0,uVar3);
    if (iVar4 == 0) goto LAB_00ad0eeb;
    iVar4 = FUN_00a7fd90(pbVar6,local_18,0x14);
    if ((iVar4 == 0) && (local_38 == 0)) {
      iVar4 = 0x14;
      bVar7 = param_5 == 0x14;
      if (0x14 < param_5) {
        do {
          if (pbVar6[iVar4] != 0) break;
          iVar4 = iVar4 + 1;
        } while (iVar4 < param_5);
        bVar7 = iVar4 == param_5;
      }
      if ((!bVar7) && (pbVar6[iVar4] == 1)) {
        sVar2 = param_5 - (iVar4 + 1);
        if (param_2 < (int)sVar2) {
          FUN_00a7f3c0(4,0x7a,0x6d,".\\crypto\\rsa\\rsa_oaep.c",0xa8);
          FUN_00a85120(pbVar6);
          ___security_check_cookie_4();
          return;
        }
        _memcpy(local_30,pbVar6 + iVar4 + 1,sVar2);
        FUN_00a85120(pbVar6);
        ___security_check_cookie_4();
        return;
      }
    }
  }
  FUN_00a7f3c0(4,0x7a,0x79,".\\crypto\\rsa\\rsa_oaep.c",0xb5);
  if (pbVar6 != (byte *)0x0) {
    FUN_00a85120(pbVar6);
  }
LAB_00ad0eeb:
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00ad0f10(undefined *param_1,int param_2,void *param_3,size_t param_4)

{
  size_t _Size;
  
  if (param_2 + -0xb < (int)param_4) {
    FUN_00a7f3c0(4,0x6c,0x6e,".\\crypto\\rsa\\rsa_pk1.c",0x49);
    return 0;
  }
  *param_1 = 0;
  _Size = (param_2 - param_4) - 3;
  param_1[1] = 1;
  param_1 = param_1 + 2;
  _memset(param_1,0xff,_Size);
  param_1[_Size] = 0;
  _memcpy(param_1 + _Size + 1,param_3,param_4);
  return 1;
}



size_t FUN_00ad0f80(void *param_1,int param_2,char *param_3,int param_4,int param_5)

{
  int iVar1;
  char *_Src;
  size_t _Size;
  
  if ((param_5 != param_4 + 1) || (_Src = param_3 + 1, *param_3 != '\x01')) {
    FUN_00a7f3c0(4,0x70,0x6a,".\\crypto\\rsa\\rsa_pk1.c",100);
    return 0xffffffff;
  }
  param_4 = param_4 + -1;
  iVar1 = 0;
  if (0 < param_4) {
    do {
      if (*_Src != -1) {
        if (*_Src != '\0') {
          FUN_00a7f3c0(4,0x70,0x66,".\\crypto\\rsa\\rsa_pk1.c",0x71);
          return 0xffffffff;
        }
        _Src = _Src + 1;
        break;
      }
      iVar1 = iVar1 + 1;
      _Src = _Src + 1;
    } while (iVar1 < param_4);
  }
  if (iVar1 == param_4) {
    FUN_00a7f3c0(4,0x70,0x71,".\\crypto\\rsa\\rsa_pk1.c",0x7a);
    return 0xffffffff;
  }
  if (7 < iVar1) {
    _Size = param_4 + (-1 - iVar1);
    if ((int)_Size <= param_2) {
      _memcpy(param_1,_Src,_Size);
      return _Size;
    }
    FUN_00a7f3c0(4,0x70,0x6d,".\\crypto\\rsa\\rsa_pk1.c",0x87);
    return 0xffffffff;
  }
  FUN_00a7f3c0(4,0x70,0x67,".\\crypto\\rsa\\rsa_pk1.c",0x80);
  return 0xffffffff;
}



undefined4 FUN_00ad1080(undefined *param_1,int param_2,void *param_3,size_t param_4)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  char *pcVar5;
  
  if (param_2 + -0xb < (int)param_4) {
    FUN_00a7f3c0(4,0x6d,0x6e,".\\crypto\\rsa\\rsa_pk1.c",0x97);
    return 0;
  }
  iVar2 = (param_2 - param_4) + -3;
  *param_1 = 0;
  param_1[1] = 2;
  pcVar5 = param_1 + 2;
  iVar3 = FUN_00a86e60(pcVar5,iVar2);
  if (iVar3 < 1) {
    return 0;
  }
  iVar3 = 0;
  if (0 < iVar2) {
    do {
      cVar1 = *pcVar5;
      while (cVar1 == '\0') {
        iVar4 = FUN_00a86e60(pcVar5,1);
        if (iVar4 < 1) {
          return 0;
        }
        cVar1 = *pcVar5;
      }
      iVar3 = iVar3 + 1;
      pcVar5 = pcVar5 + 1;
    } while (iVar3 < iVar2);
  }
  *pcVar5 = '\0';
  _memcpy(pcVar5 + 1,param_3,param_4);
  return 1;
}



size_t FUN_00ad1130(void *param_1,int param_2,char *param_3,int param_4,int param_5)

{
  char cVar1;
  int iVar2;
  char *_Src;
  size_t _Size;
  
  if ((param_5 != param_4 + 1) || (_Src = param_3 + 1, *param_3 != '\x02')) {
    FUN_00a7f3c0(4,0x71,0x6b,".\\crypto\\rsa\\rsa_pk1.c",0xbe);
    return 0xffffffff;
  }
  param_4 = param_4 + -1;
  iVar2 = 0;
  if (0 < param_4) {
    do {
      cVar1 = *_Src;
      _Src = _Src + 1;
      if (cVar1 == '\0') break;
      iVar2 = iVar2 + 1;
    } while (iVar2 < param_4);
  }
  if (iVar2 == param_4) {
    FUN_00a7f3c0(4,0x71,0x71,".\\crypto\\rsa\\rsa_pk1.c",0xcc);
    return 0xffffffff;
  }
  if (7 < iVar2) {
    _Size = param_4 + (-1 - iVar2);
    if ((int)_Size <= param_2) {
      _memcpy(param_1,_Src,_Size);
      return _Size;
    }
    FUN_00a7f3c0(4,0x71,0x6d,".\\crypto\\rsa\\rsa_pk1.c",0xd9);
    return 0xffffffff;
  }
  FUN_00a7f3c0(4,0x71,0x67,".\\crypto\\rsa\\rsa_pk1.c",0xd2);
  return 0xffffffff;
}



int FUN_00ad1210(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_00a9a920(*(undefined4 *)(param_1 + 0x10));
  return (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
}



void FUN_00ad1230(void)

{
  int param_4;
  
                    // WARNING: Could not recover jumptable at 0x00ad123e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_4 + 8) + 4))();
  return;
}



void FUN_00ad1240(void)

{
  int param_4;
  
                    // WARNING: Could not recover jumptable at 0x00ad124e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_4 + 8) + 0xc))();
  return;
}



void FUN_00ad1250(void)

{
  int param_4;
  
                    // WARNING: Could not recover jumptable at 0x00ad125e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_4 + 8) + 0x10))();
  return;
}



void FUN_00ad1260(void)

{
  int param_4;
  
                    // WARNING: Could not recover jumptable at 0x00ad126e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_4 + 8) + 8))();
  return;
}



int FUN_00ad1270(int param_1)

{
  if (param_1 == 0) {
    return param_1;
  }
  return *(int *)(*(int *)(param_1 + 8) + 0x24);
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ad1280(int param_1,int param_2,int param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  
  if (((param_1 != 0) && (param_2 != 0)) && (param_3 != 0)) {
    FUN_00aa4a50();
    uVar1 = FUN_00aa4ae0();
    uVar2 = FUN_00aa4ae0();
    iVar3 = FUN_00aa4ae0();
    if (iVar3 != 0) {
      uVar4 = FUN_00a9a8c0();
      iVar5 = FUN_00ad1720(uVar2,param_2,uVar4);
      if (iVar5 != 0) {
        uVar4 = FUN_00a9a8c0();
        iVar5 = FUN_00ad1720(iVar3,param_3,uVar4);
        if (iVar5 != 0) {
          iVar3 = FUN_00ad2400(uVar1,uVar2,iVar3);
          if (iVar3 != 0) {
            uVar1 = FUN_00ad3370(0,param_1,uVar1);
            FUN_00aa4aa0();
            return uVar1;
          }
        }
      }
    }
    FUN_00aa4aa0();
    return 0;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00ad1360(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 *puVar5;
  int iVar6;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  uint local_4;
  
  local_4 = 0xad136a;
  iVar6 = 0;
  iVar2 = param_2;
  if (param_2 == 0) {
    iVar2 = FUN_00aa49c0();
    if (iVar2 == 0) {
      return 0;
    }
  }
  FUN_00aa4a50();
  iVar3 = FUN_00aa4ae0(iVar2);
  if (iVar3 == 0) {
    FUN_00a7f3c0(4,0x88,0x41,".\\crypto\\rsa\\rsa_crpt.c",0xd0);
  }
  else {
    iVar3 = *(int *)(param_1 + 0x14);
    if (iVar3 == 0) {
      iVar3 = FUN_00ad1280(*(undefined4 *)(param_1 + 0x18),*(undefined4 *)(param_1 + 0x1c),
                           *(undefined4 *)(param_1 + 0x20));
      if (iVar3 == 0) {
        FUN_00a7f3c0(4,0x88,0x8c,".\\crypto\\rsa\\rsa_crpt.c",0xd9);
        goto LAB_00ad14ce;
      }
    }
    iVar6 = FUN_00a86f20();
    if (((iVar6 == 0) && (piVar1 = *(int **)(param_1 + 0x18), piVar1 != (int *)0x0)) &&
       (*piVar1 != 0)) {
      FUN_00a86df0(*piVar1,piVar1[2] * 4,0);
    }
    if ((*(uint *)(param_1 + 0x3c) & 0x100) == 0) {
      puVar5 = *(undefined4 **)(param_1 + 0x10);
      local_14 = *puVar5;
      local_10 = puVar5[1];
      local_c = puVar5[2];
      local_8 = puVar5[3];
      local_4 = puVar5[4] & 0xfffffffe | local_4 & 1 | 6;
      puVar5 = &local_14;
    }
    else {
      puVar5 = *(undefined4 **)(param_1 + 0x10);
    }
    iVar6 = FUN_00aa2920(0,iVar3,puVar5,iVar2,*(undefined4 *)(*(int *)(param_1 + 8) + 0x18),
                         *(undefined4 *)(param_1 + 0x40));
    if (iVar6 == 0) {
      FUN_00a7f3c0(4,0x88,3,".\\crypto\\rsa\\rsa_crpt.c",0xf5);
    }
    else {
      uVar4 = FUN_00aa2910();
      FUN_00a7f970(uVar4);
    }
  }
LAB_00ad14ce:
  FUN_00aa4aa0();
  if (param_2 == 0) {
    FUN_00aa4a20();
  }
  if (*(int *)(param_1 + 0x14) == 0) {
    FUN_00a9a9b0();
  }
  return iVar6;
}



undefined4 FUN_00ad1500(int *param_1,int *param_2,int *param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  int *piVar7;
  
  piVar6 = param_2;
  if (param_2[1] < param_3[1]) {
    param_2 = param_3;
    param_3 = piVar6;
  }
  iVar1 = param_3[1];
  iVar2 = param_2[1];
  iVar5 = iVar2 - iVar1;
  piVar6 = param_1;
  if (param_1[2] < iVar2 + 1) {
    piVar6 = (int *)FUN_00a9ab60(param_1,iVar2 + 1);
  }
  if (piVar6 == (int *)0x0) {
    return 0;
  }
  param_1[1] = iVar2;
  iVar2 = *param_2;
  iVar3 = *param_1;
  iVar4 = FUN_00acb290(iVar3,iVar2,*param_3,iVar1);
  piVar6 = (int *)(iVar3 + iVar1 * 4);
  piVar7 = (int *)(iVar2 + iVar1 * 4);
  if (iVar4 != 0) {
    do {
      if (iVar5 == 0) {
        *piVar6 = 1;
        param_1[1] = param_1[1] + 1;
        iVar5 = 0;
        break;
      }
      iVar1 = *piVar7;
      *piVar6 = iVar1 + 1;
      iVar5 = iVar5 + -1;
      piVar7 = piVar7 + 1;
      piVar6 = piVar6 + 1;
    } while (iVar1 + 1 == 0);
  }
  if ((iVar5 != 0) && (piVar6 != piVar7)) {
    do {
      iVar5 = iVar5 + -1;
      *piVar6 = *piVar7;
      piVar6 = piVar6 + 1;
      piVar7 = piVar7 + 1;
    } while (iVar5 != 0);
  }
  param_1[3] = 0;
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ad15d0(uint **param_1,uint **param_2,uint **param_3)

{
  uint uVar1;
  uint uVar2;
  uint **ppuVar3;
  uint *puVar4;
  uint *puVar5;
  uint *puVar6;
  uint *puVar7;
  int iVar8;
  uint *puVar9;
  int iVar10;
  bool bVar11;
  
  puVar5 = param_2[1];
  puVar7 = param_3[1];
  iVar10 = (int)puVar5 - (int)puVar7;
  if (iVar10 < 0) {
    FUN_00a7f3c0(3,0x73,100,".\\crypto\\bn\\bn_add.c",0xb8);
  }
  else {
    ppuVar3 = param_1;
    if ((int)param_1[2] < (int)puVar5) {
      ppuVar3 = (uint **)FUN_00a9ab60(param_1,puVar5);
    }
    if (ppuVar3 != (uint **)0x0) {
      puVar4 = *param_2;
      puVar9 = *param_3;
      puVar6 = *param_1;
      bVar11 = false;
      param_2 = (uint **)puVar7;
      if (puVar7 != (uint *)0x0) {
        do {
          uVar1 = *puVar9;
          uVar2 = *puVar4;
          puVar4 = puVar4 + 1;
          puVar9 = puVar9 + 1;
          if (bVar11) {
            bVar11 = uVar2 <= uVar1;
            iVar8 = -1 - uVar1;
          }
          else {
            bVar11 = uVar2 < uVar1;
            iVar8 = -uVar1;
          }
          *puVar6 = uVar2 + iVar8;
          puVar6 = puVar6 + 1;
          param_2 = (uint **)((int)param_2 + -1);
        } while (param_2 != (uint **)0x0);
        if (bVar11) {
          if (iVar10 == 0) {
            return 0;
          }
          do {
            uVar1 = *puVar4;
            *puVar6 = uVar1 - 1;
            iVar10 = iVar10 + -1;
            puVar4 = puVar4 + 1;
            puVar6 = puVar6 + 1;
            if (uVar1 != 0) break;
          } while (iVar10 != 0);
        }
      }
      if (puVar6 != puVar4) {
        while (((iVar10 != 0 && (*puVar6 = *puVar4, iVar10 != 1)) &&
               (puVar6[1] = puVar4[1], iVar10 != 2))) {
          puVar6[2] = puVar4[2];
          if (iVar10 == 3) break;
          puVar6[3] = puVar4[3];
          puVar6 = puVar6 + 4;
          puVar4 = puVar4 + 4;
          iVar10 = iVar10 + -4;
        }
      }
      param_1[1] = puVar5;
      param_1[3] = (uint *)0x0;
      if (0 < (int)puVar5) {
        puVar7 = *param_1 + (int)puVar5 + -1;
        do {
          uVar1 = *puVar7;
          puVar7 = puVar7 + -1;
          if (uVar1 != 0) break;
          puVar5 = (uint *)((int)puVar5 + -1);
        } while (0 < (int)puVar5);
        param_1[1] = puVar5;
      }
      return 1;
    }
  }
  return 0;
}



undefined4 FUN_00ad1720(int param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  
  if (*(int *)(param_2 + 0xc) == 0) {
    iVar3 = param_2;
    iVar4 = param_3;
    if (*(int *)(param_3 + 0xc) != 0) {
      uVar5 = 0;
      goto LAB_00ad1765;
    }
  }
  else {
    iVar3 = param_3;
    iVar4 = param_2;
    if (*(int *)(param_3 + 0xc) == 0) {
      uVar5 = 1;
LAB_00ad1765:
      iVar3 = FUN_00ad1500(param_1,param_2,param_3);
      if (iVar3 == 0) {
        return 0;
      }
      *(undefined4 *)(param_1 + 0xc) = uVar5;
      return 1;
    }
  }
  iVar2 = *(int *)(iVar3 + 4);
  if (*(int *)(iVar3 + 4) <= *(int *)(iVar4 + 4)) {
    iVar2 = *(int *)(iVar4 + 4);
  }
  iVar1 = param_1;
  if (*(int *)(param_1 + 8) < iVar2) {
    iVar1 = FUN_00a9ab60(param_1,iVar2);
  }
  if (iVar1 != 0) {
    iVar2 = FUN_00a9ae10(iVar3,iVar4);
    if (iVar2 < 0) {
      iVar3 = FUN_00ad15d0(param_1,iVar4,iVar3);
      if (iVar3 != 0) {
        *(undefined4 *)(param_1 + 0xc) = 1;
        return 1;
      }
    }
    else {
      iVar3 = FUN_00ad15d0(param_1,iVar3,iVar4);
      if (iVar3 != 0) {
        *(undefined4 *)(param_1 + 0xc) = 0;
        return 1;
      }
    }
  }
  return 0;
}



undefined4 FUN_00ad17f0(int param_1,int param_2,int param_3)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  
  iVar1 = *(int *)(param_2 + 0xc);
  if (*(int *)(param_3 + 0xc) == iVar1) {
    uVar2 = FUN_00ad1500(param_1,param_2,param_3);
    *(int *)(param_1 + 0xc) = iVar1;
    return uVar2;
  }
  iVar3 = param_2;
  if (iVar1 != 0) {
    iVar3 = param_3;
    param_3 = param_2;
  }
  iVar1 = FUN_00a9ae10(iVar3,param_3);
  if (iVar1 < 0) {
    iVar1 = FUN_00ad15d0(param_1,param_3,iVar3);
    if (iVar1 != 0) {
      *(undefined4 *)(param_1 + 0xc) = 1;
      return 1;
    }
  }
  else {
    iVar1 = FUN_00ad15d0(param_1,iVar3,param_3);
    if (iVar1 != 0) {
      *(undefined4 *)(param_1 + 0xc) = 0;
      return 1;
    }
  }
  return 0;
}



undefined4 FUN_00ad1880(undefined *param_1,int param_2,void *param_3,size_t param_4)

{
  undefined *_Dst;
  int iVar1;
  
  iVar1 = (param_2 - param_4) + -2;
  if (iVar1 < 0) {
    FUN_00a7f3c0(4,0x7f,0x6e,".\\crypto\\rsa\\rsa_x931.c",0x50);
    return 0xffffffff;
  }
  _Dst = param_1 + 1;
  if (iVar1 == 0) {
    *param_1 = 0x6a;
  }
  else {
    *param_1 = 0x6b;
    if (1 < iVar1) {
      _memset(_Dst,0xbb,(param_2 - param_4) - 3);
      _Dst = param_1 + iVar1;
    }
    *_Dst = 0xba;
    _Dst = _Dst + 1;
  }
  _memcpy(_Dst,param_3,param_4);
  _Dst[param_4] = 0xcc;
  return 1;
}



size_t FUN_00ad1900(void *param_1,undefined4 param_2,char *param_3,int param_4,int param_5)

{
  char cVar1;
  int iVar2;
  size_t _Size;
  
  if (param_5 == param_4) {
    cVar1 = *param_3;
    if ((cVar1 == 'j') || (cVar1 == 'k')) {
      param_3 = param_3 + 1;
      if (cVar1 == 'k') {
        param_4 = param_4 + -3;
        iVar2 = 0;
        if (0 < param_4) {
          do {
            cVar1 = *param_3;
            param_3 = param_3 + 1;
            if (cVar1 == -0x46) break;
            if (cVar1 != -0x45) {
              FUN_00a7f3c0(4,0x80,0x8a,".\\crypto\\rsa\\rsa_x931.c",0x81);
              return 0xffffffff;
            }
            iVar2 = iVar2 + 1;
          } while (iVar2 < param_4);
        }
        _Size = param_4 - iVar2;
        if (iVar2 == 0) {
          FUN_00a7f3c0(4,0x80,0x8a,".\\crypto\\rsa\\rsa_x931.c",0x8a);
          return 0xffffffff;
        }
      }
      else {
        _Size = param_4 - 2;
      }
      if (param_3[_Size] != -0x34) {
        FUN_00a7f3c0(4,0x80,0x8b,".\\crypto\\rsa\\rsa_x931.c",0x93);
        return 0xffffffff;
      }
      _memcpy(param_1,param_3,_Size);
      return _Size;
    }
  }
  FUN_00a7f3c0(4,0x80,0x89,".\\crypto\\rsa\\rsa_x931.c",0x72);
  return 0xffffffff;
}



undefined4 FUN_00ad19f0(int param_1)

{
  if (param_1 < 0x2a2) {
    if (param_1 == 0x2a1) {
      return 0x36;
    }
    if (param_1 == 0x40) {
      return 0x33;
    }
    if (param_1 == 0x2a0) {
      return 0x34;
    }
  }
  else if (param_1 == 0x2a2) {
    return 0x35;
  }
  return 0xffffffff;
}



void FUN_00ad1a30(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
                 int param_5)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  int iVar3;
  int iVar4;
  
  puVar2 = param_2;
  iVar3 = param_5;
  iVar4 = (int)param_3;
  if ((int)param_3 < param_5) {
    param_2 = param_4;
    param_4 = puVar2;
    iVar3 = (int)param_3;
    iVar4 = param_5;
  }
  if (iVar3 < 1) {
    FUN_00acaf70(param_1,param_2,iVar4,0);
    return;
  }
  uVar1 = FUN_00acaf70(param_1,param_2,iVar4,*param_4);
  iVar3 = iVar3 + -1;
  *(undefined4 *)(param_1 + iVar4 * 4) = uVar1;
  if (0 < iVar3) {
    puVar2 = (undefined4 *)(param_1 + 8 + iVar4 * 4);
    param_1 = param_1 + 8;
    param_3 = param_4 + 2;
    do {
      uVar1 = FUN_00acac80(param_1 + -4,param_2,iVar4,param_3[-1]);
      puVar2[-1] = uVar1;
      if (iVar3 + -1 < 1) {
        return;
      }
      uVar1 = FUN_00acac80(param_1,param_2,iVar4,*param_3);
      *puVar2 = uVar1;
      if (iVar3 + -2 < 1) {
        return;
      }
      uVar1 = FUN_00acac80(param_1 + 4,param_2,iVar4,param_3[1]);
      puVar2[1] = uVar1;
      if (iVar3 + -3 < 1) {
        return;
      }
      uVar1 = FUN_00acac80(param_1 + 8,param_2,iVar4,param_3[2]);
      param_3 = param_3 + 4;
      puVar2[2] = uVar1;
      iVar3 = iVar3 + -4;
      puVar2 = puVar2 + 4;
      param_1 = param_1 + 0x10;
    } while (0 < iVar3);
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ad1b50(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
                 int param_7)

{
  int iVar1;
  bool bVar2;
  bool bVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  uint uVar11;
  undefined4 *puVar12;
  void *_Dst;
  uint *puVar13;
  int iVar14;
  uint uVar15;
  int local_18;
  
  iVar14 = param_4 / 2;
  iVar8 = iVar14 + param_5;
  iVar9 = iVar14 + param_6;
  if (param_4 == 8) {
    if ((param_5 == 0) && (param_6 == 0)) {
      FUN_00ae6540(param_1,param_2,param_3);
      return;
    }
LAB_00ad1baa:
    FUN_00ad1a30(param_1,param_2,param_5 + param_4,param_3,param_6 + param_4);
    if (-1 < param_5 + param_6) {
      return;
    }
    _memset((void *)(param_1 + (param_5 + param_4 * 2 + param_6) * 4),0,(param_5 + param_6) * -4);
    return;
  }
  if (param_4 < 0x10) goto LAB_00ad1baa;
  iVar4 = iVar14 - iVar8;
  iVar10 = param_2 + iVar14 * 4;
  iVar5 = FUN_00a9b0c0(param_2,iVar10,iVar8,iVar4);
  bVar3 = false;
  bVar2 = false;
  iVar6 = iVar9 - iVar14;
  iVar1 = param_3 + iVar14 * 4;
  iVar7 = FUN_00a9b0c0(iVar1,param_3,iVar9,iVar6);
  switch(iVar7 + 4 + iVar5 * 3) {
  case 0:
    FUN_00acb610(param_7,iVar10,param_2,iVar8,iVar8 - iVar14);
    iVar6 = iVar14 - iVar9;
    iVar8 = iVar1;
    iVar4 = param_3;
    goto LAB_00ad1d26;
  case 1:
  case 3:
  case 4:
  case 5:
  case 7:
    bVar2 = true;
    break;
  case 2:
    FUN_00acb610(param_7,iVar10,param_2,iVar8,iVar8 - iVar14);
    FUN_00acb610(param_7 + iVar14 * 4,iVar1,param_3,iVar9,iVar6);
    bVar3 = true;
    break;
  case 6:
    FUN_00acb610(param_7,param_2,iVar10,iVar8,iVar4);
    FUN_00acb610(param_7 + iVar14 * 4,param_3,iVar1,iVar9,iVar14 - iVar9);
    bVar3 = true;
    break;
  case 8:
    FUN_00acb610(param_7,param_2,iVar10,iVar8,iVar4);
    iVar8 = param_3;
    iVar4 = iVar1;
LAB_00ad1d26:
    FUN_00acb610(param_7 + iVar14 * 4,iVar4,iVar8,iVar9,iVar6);
  }
  if (iVar14 == 4) {
    if ((param_5 == 0) && (param_6 == 0)) {
      local_18 = param_4 * 4;
      if (bVar2) {
        puVar12 = (undefined4 *)(local_18 + param_7);
        *puVar12 = 0;
        puVar12[1] = 0;
        puVar12[2] = 0;
        puVar12[3] = 0;
        puVar12[4] = 0;
        puVar12[5] = 0;
        puVar12[6] = 0;
        puVar12[7] = 0;
      }
      else {
        FUN_00ae6990(local_18 + param_7,param_7,param_7 + 0x10);
      }
      _Dst = (void *)(local_18 + param_7);
      FUN_00ae6990(param_1,param_2,param_3);
      local_18 = local_18 + param_1;
      FUN_00ae6990(local_18,param_2 + 0x10,param_3 + 0x10);
      goto LAB_00ad1ee6;
    }
  }
  else if (((iVar14 == 8) && (param_5 == 0)) && (param_6 == 0)) {
    local_18 = param_4 * 4;
    if (bVar2) {
      _memset((void *)(local_18 + param_7),0,0x40);
    }
    else {
      FUN_00ae6540(local_18 + param_7,param_7,param_7 + 0x20);
    }
    _Dst = (void *)(local_18 + param_7);
    FUN_00ae6540(param_1,param_2,param_3);
    local_18 = local_18 + param_1;
    FUN_00ae6540(local_18,param_2 + 0x20,param_3 + 0x20);
    goto LAB_00ad1ee6;
  }
  iVar8 = param_7 + param_4 * 8;
  if (bVar2) {
    _Dst = (void *)(param_4 * 4 + param_7);
    _memset(_Dst,0,param_4 * 4);
  }
  else {
    _Dst = (void *)(param_4 * 4 + param_7);
    FUN_00ad1b50(_Dst,param_7,param_7 + iVar14 * 4,iVar14,0,0,iVar8);
  }
  local_18 = param_4 * 4;
  FUN_00ad1b50(param_1,param_2,param_3,iVar14,0,0,iVar8);
  local_18 = local_18 + param_1;
  FUN_00ad1b50(local_18,iVar10,iVar1,iVar14,param_5,param_6,iVar8);
LAB_00ad1ee6:
  iVar8 = FUN_00acb290(param_7,param_1,local_18,param_4);
  if (bVar3) {
    iVar9 = FUN_00acb450(_Dst,param_7,_Dst,param_4);
    iVar9 = -iVar9;
  }
  else {
    iVar9 = FUN_00acb290(_Dst,_Dst,param_7,param_4);
  }
  iVar10 = param_1 + iVar14 * 4;
  iVar10 = FUN_00acb290(iVar10,iVar10,_Dst,param_4);
  uVar15 = iVar8 + iVar9 + iVar10;
  if (uVar15 != 0) {
    puVar13 = (uint *)(param_1 + (iVar14 + param_4) * 4);
    uVar11 = *(int *)(param_1 + (iVar14 + param_4) * 4) + uVar15;
    *puVar13 = uVar11;
    if (uVar11 < uVar15) {
      do {
        uVar15 = puVar13[1];
        puVar13 = puVar13 + 1;
        *puVar13 = uVar15 + 1;
      } while (uVar15 + 1 == 0);
    }
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ad1fa0(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
                 int param_7)

{
  size_t _Size;
  bool bVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  uint *puVar8;
  uint uVar9;
  uint uVar10;
  void *local_18;
  int local_c;
  
  if (param_4 < 8) {
    FUN_00ad1a30(param_1,param_2,param_4 + param_5,param_3,param_4 + param_6);
    return;
  }
  iVar2 = param_4 - param_5;
  iVar7 = param_2 + param_4 * 4;
  iVar3 = FUN_00a9b0c0(param_2,iVar7,param_5,iVar2);
  iVar4 = param_6 - param_4;
  iVar6 = param_3 + param_4 * 4;
  bVar1 = false;
  iVar5 = FUN_00a9b0c0(iVar6,param_3,param_6,iVar4);
  switch(iVar5 + 4 + iVar3 * 3) {
  case 0:
    FUN_00acb610(param_7,iVar7,param_2,param_5,param_5 - param_4);
    iVar4 = param_4 - param_6;
    iVar2 = iVar6;
    iVar3 = param_3;
    goto LAB_00ad2108;
  case 1:
  case 2:
    FUN_00acb610(param_7,iVar7,param_2,param_5,param_5 - param_4);
    FUN_00acb610(param_7 + param_4 * 4,iVar6,param_3,param_6,iVar4);
    bVar1 = true;
    break;
  case 3:
  case 4:
  case 5:
  case 6:
    FUN_00acb610(param_7,param_2,iVar7,param_5,iVar2);
    FUN_00acb610(param_7 + param_4 * 4,param_3,iVar6,param_6,param_4 - param_6);
    bVar1 = true;
    break;
  case 7:
  case 8:
    FUN_00acb610(param_7,param_2,iVar7,param_5,iVar2);
    iVar2 = param_3;
    iVar3 = iVar6;
LAB_00ad2108:
    FUN_00acb610(param_7 + param_4 * 4,iVar3,iVar2,param_6,iVar4);
  }
  if (param_4 == 8) {
    local_c = param_7 + 0x40;
    FUN_00ae6540(local_c,param_7,param_7 + 0x20);
    FUN_00ae6540(param_1,param_2,param_3);
    local_18 = (void *)(param_1 + 0x40);
    FUN_00ad1a30(local_18,param_2 + 0x20,param_5,param_3 + 0x20,param_6);
    _memset((void *)(param_1 + (param_5 + 0x10 + param_6) * 4),0,((0x10 - param_5) - param_6) * 4);
  }
  else {
    iVar2 = param_7 + param_4 * 0x10;
    _Size = param_4 * 8;
    local_c = _Size + param_7;
    FUN_00ad1b50(local_c,param_7,param_7 + param_4 * 4,param_4,0,0,iVar2);
    FUN_00ad1b50(param_1,param_2,param_3,param_4,0,0,iVar2);
    iVar3 = param_4 / 2;
    iVar4 = param_5;
    if (param_5 <= param_6) {
      iVar4 = param_6;
    }
    if (iVar4 == iVar3) {
      local_18 = (void *)(_Size + param_1);
      FUN_00ad1b50(local_18,iVar7,iVar6,iVar3,param_5 - iVar3,param_6 - iVar3,iVar2);
      _memset((void *)(param_1 + (param_4 * 2 + iVar3 * 2) * 4),0,_Size + iVar3 * -8);
    }
    else if (iVar4 == iVar3 || iVar4 - iVar3 < 0) {
      local_18 = (void *)(_Size + param_1);
      _memset(local_18,0,_Size);
      if ((param_5 < 0x10) && (param_6 < 0x10)) {
        FUN_00ad1a30(local_18,iVar7,param_5,iVar6,param_6);
      }
      else {
        do {
          iVar3 = iVar3 / 2;
          if ((iVar3 < param_5) || (iVar3 < param_6)) {
            FUN_00ad1fa0(local_18,iVar7,iVar6,iVar3,param_5 - iVar3,param_6 - iVar3,iVar2);
            goto LAB_00ad2328;
          }
        } while ((iVar3 != param_5) && (iVar3 != param_6));
        FUN_00ad1b50(local_18,iVar7,iVar6,iVar3,param_5 - iVar3,param_6 - iVar3,iVar2);
      }
    }
    else {
      local_18 = (void *)(_Size + param_1);
      FUN_00ad1fa0(local_18,iVar7,iVar6,iVar3,param_5 - iVar3,param_6 - iVar3,iVar2);
      _memset((void *)(param_1 + (param_4 * 2 + param_5 + param_6) * 4),0,
              ((param_4 * 2 - param_5) - param_6) * 4);
    }
  }
LAB_00ad2328:
  iVar7 = param_4 * 2;
  iVar6 = FUN_00acb290(param_7,param_1,local_18,iVar7);
  if (bVar1) {
    iVar2 = FUN_00acb450(local_c,param_7,local_c);
    iVar2 = -iVar2;
  }
  else {
    iVar2 = FUN_00acb290(local_c,local_c,param_7,iVar7);
  }
  iVar3 = param_1 + param_4 * 4;
  iVar7 = FUN_00acb290(iVar3,iVar3,local_c,iVar7);
  uVar10 = iVar6 + iVar2 + iVar7;
  if (uVar10 != 0) {
    puVar8 = (uint *)(param_1 + param_4 * 0xc);
    uVar9 = *(int *)(param_1 + param_4 * 0xc) + uVar10;
    *puVar8 = uVar9;
    if (uVar9 < uVar10) {
      do {
        uVar10 = puVar8[1];
        puVar8 = puVar8 + 1;
        *puVar8 = uVar10 + 1;
      } while (uVar10 + 1 == 0);
    }
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ad2400(int *param_1,int *param_2,int *param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  int *piVar5;
  undefined4 *puVar6;
  undefined4 *puVar7;
  int iVar8;
  int iVar9;
  char local_10;
  undefined4 local_8;
  
  iVar8 = param_3[1];
  iVar3 = param_2[1];
  local_8 = 0;
  local_10 = '\0';
  if ((iVar3 == 0) || (iVar8 == 0)) {
    FUN_00a9ac50(param_1,0);
    return 1;
  }
  iVar1 = iVar3 + iVar8;
  FUN_00aa4a50(param_4);
  if (((param_1 == param_2) || (piVar4 = param_1, param_1 == param_3)) &&
     (piVar4 = (int *)FUN_00aa4ae0(param_4), piVar4 == (int *)0x0)) goto LAB_00ad26a0;
  iVar9 = iVar3 - iVar8;
  piVar4[3] = param_2[3] ^ param_3[3];
  if ((iVar9 == 0) && (iVar3 == 8)) {
    piVar5 = piVar4;
    if (piVar4[2] < 0x10) {
      piVar5 = (int *)FUN_00a9ab60(piVar4,0x10);
    }
    if (piVar5 == (int *)0x0) goto LAB_00ad26a0;
    piVar4[1] = 0x10;
    FUN_00ae6540(*piVar4,*param_2,*param_3);
  }
  else if ((iVar3 < 0x10) || ((iVar8 < 0x10 || (2 < iVar9 + 1U)))) {
    piVar5 = piVar4;
    if (piVar4[2] < iVar1) {
      piVar5 = (int *)FUN_00a9ab60(piVar4,iVar1);
    }
    if (piVar5 == (int *)0x0) goto LAB_00ad26a0;
    piVar4[1] = iVar1;
    FUN_00ad1a30(*piVar4,*param_2,iVar3,*param_3,iVar8);
  }
  else {
    if (-1 < iVar9) {
      local_10 = FUN_00a9a8d0(iVar3);
    }
    if (iVar9 == -1) {
      local_10 = FUN_00a9a8d0(iVar8);
    }
    iVar9 = 1 << (local_10 - 1U & 0x1f);
    puVar6 = (undefined4 *)FUN_00aa4ae0(param_4);
    if (puVar6 == (undefined4 *)0x0) goto LAB_00ad26a0;
    if ((iVar9 < iVar3) || (iVar9 < iVar8)) {
      iVar2 = iVar9 * 8;
      puVar7 = puVar6;
      if (iVar2 - puVar6[2] != 0 && (int)puVar6[2] <= iVar2) {
        puVar7 = (undefined4 *)FUN_00a9ab60(puVar6,iVar2);
      }
      if (puVar7 == (undefined4 *)0x0) goto LAB_00ad26a0;
      piVar5 = piVar4;
      if (piVar4[2] < iVar2) {
        piVar5 = (int *)FUN_00a9ab60(piVar4,iVar2);
      }
      if (piVar5 == (int *)0x0) goto LAB_00ad26a0;
      FUN_00ad1fa0(*piVar4,*param_2,*param_3,iVar9,iVar3 - iVar9,iVar8 - iVar9,*puVar6);
      piVar4[1] = iVar1;
    }
    else {
      iVar2 = iVar9 << 2;
      puVar7 = puVar6;
      if ((int)puVar6[2] < iVar2) {
        puVar7 = (undefined4 *)FUN_00a9ab60(puVar6,iVar2);
      }
      if (puVar7 == (undefined4 *)0x0) goto LAB_00ad26a0;
      piVar5 = piVar4;
      if (piVar4[2] < iVar2) {
        piVar5 = (int *)FUN_00a9ab60(piVar4,iVar2);
      }
      if (piVar5 == (int *)0x0) goto LAB_00ad26a0;
      FUN_00ad1b50(*piVar4,*param_2,*param_3,iVar9,iVar3 - iVar9,iVar8 - iVar9,*puVar6);
      piVar4[1] = iVar1;
    }
  }
  iVar8 = piVar4[1];
  if (0 < iVar8) {
    piVar5 = (int *)(*piVar4 + -4 + iVar8 * 4);
    do {
      iVar3 = *piVar5;
      piVar5 = piVar5 + -1;
      if (iVar3 != 0) break;
      iVar8 = iVar8 + -1;
    } while (0 < iVar8);
    piVar4[1] = iVar8;
  }
  if (param_1 != piVar4) {
    FUN_00a9aba0(param_1,piVar4);
  }
  local_8 = 1;
LAB_00ad26a0:
  FUN_00aa4aa0(param_4);
  return local_8;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe
// WARNING: Removing unreachable block (ram,0x00ad2a9d)

undefined4 FUN_00ad26e0(int *param_1,int param_2,int *param_3,int param_4,undefined4 param_5)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  uint uVar6;
  int *piVar7;
  int iVar8;
  undefined4 uVar9;
  int iVar10;
  uint uVar11;
  int iVar12;
  uint uVar13;
  ulonglong uVar14;
  uint *local_48;
  int local_44;
  int *local_40;
  uint local_38;
  int local_24;
  uint local_1c;
  int local_14;
  int local_10;
  int local_c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xad26ea;
  local_44 = 0;
  if ((param_3[1] < 1) || (*(int *)(*param_3 + -4 + param_3[1] * 4) != 0)) {
    if (((*(byte *)(param_3 + 4) & 4) != 0) || ((*(byte *)(param_4 + 0x10) & 4) != 0)) {
      local_44 = 1;
    }
    if (*(int *)(param_4 + 4) == 0) {
      FUN_00a7f3c0(3,0x6b,0x67,".\\crypto\\bn\\bn_div.c",0xd6);
      return 0;
    }
    if ((local_44 != 0) || (iVar2 = FUN_00a9ae10(param_3,param_4), -1 < iVar2)) {
      FUN_00aa4a50(param_5);
      piVar3 = (int *)FUN_00aa4ae0(param_5);
      piVar4 = (int *)FUN_00aa4ae0(param_5);
      piVar5 = (int *)FUN_00aa4ae0(param_5);
      if (param_1 == (int *)0x0) {
        param_1 = (int *)FUN_00aa4ae0(param_5);
      }
      if ((((piVar5 != (int *)0x0) && (param_1 != (int *)0x0)) && (piVar3 != (int *)0x0)) &&
         (piVar4 != (int *)0x0)) {
        uVar6 = FUN_00a9a920(param_4);
        uVar6 = uVar6 & 0x8000001f;
        if ((int)uVar6 < 0) {
          uVar6 = (uVar6 - 1 | 0xffffffe0) + 1;
        }
        iVar2 = FUN_00a9bb30(piVar5,param_4,-uVar6 + 0x20);
        if (iVar2 != 0) {
          iVar12 = -uVar6 + 0x40;
          piVar5[3] = 0;
          iVar2 = FUN_00a9bb30(piVar4,param_3,iVar12);
          if (iVar2 != 0) {
            piVar4[3] = 0;
            if (local_44 != 0) {
              if (piVar5[1] + 1 < piVar4[1]) {
                iVar2 = piVar4[1] + 1;
                piVar7 = piVar4;
                if (piVar4[2] < iVar2) {
                  piVar7 = (int *)FUN_00a9ab60(piVar4,iVar2);
                }
                if (piVar7 == (int *)0x0) goto LAB_00ad2bf1;
                *(undefined4 *)(*piVar4 + piVar4[1] * 4) = 0;
                piVar4[1] = piVar4[1] + 1;
              }
              else {
                iVar2 = piVar5[1] + 2;
                piVar7 = piVar4;
                if (piVar4[2] < iVar2) {
                  piVar7 = (int *)FUN_00a9ab60(piVar4,iVar2);
                }
                if (piVar7 == (int *)0x0) goto LAB_00ad2bf1;
                iVar2 = piVar4[1];
                if (iVar2 < piVar5[1] + 2) {
                  do {
                    *(undefined4 *)(*piVar4 + iVar2 * 4) = 0;
                    iVar2 = iVar2 + 1;
                  } while (iVar2 < piVar5[1] + 2);
                }
                piVar4[1] = piVar5[1] + 2;
              }
            }
            iVar2 = piVar5[1];
            local_24 = piVar4[1] - iVar2;
            local_8 = 0;
            local_14 = *piVar4 + local_24 * 4;
            local_c = piVar4[2] - local_24;
            uVar6 = *(uint *)(*piVar5 + -4 + iVar2 * 4);
            if (iVar2 == 1) {
              local_38 = 0;
            }
            else {
              local_38 = *(uint *)(*piVar5 + -8 + iVar2 * 4);
            }
            local_48 = (uint *)(*piVar4 + -4 + piVar4[1] * 4);
            param_1[3] = *(uint *)(param_4 + 0xc) ^ param_3[3];
            piVar7 = param_1;
            local_10 = iVar2;
            if (param_1[2] < local_24 + 1) {
              piVar7 = (int *)FUN_00a9ab60(param_1,local_24 + 1);
            }
            if (piVar7 != (int *)0x0) {
              param_1[1] = local_24 - local_44;
              local_40 = (int *)(*param_1 + -4 + local_24 * 4);
              piVar7 = piVar3;
              if (piVar3[2] < iVar2 + 1) {
                piVar7 = (int *)FUN_00a9ab60(piVar3,iVar2 + 1);
              }
              if (piVar7 != (int *)0x0) {
                if (local_44 == 0) {
                  iVar8 = FUN_00a9ae10(&local_14,piVar5);
                  if (iVar8 < 0) {
                    param_1[1] = param_1[1] + -1;
                  }
                  else {
                    FUN_00acb450(local_14,local_14,*piVar5,iVar2);
                    *local_40 = 1;
                  }
                }
                if (param_1[1] == 0) {
                  param_1[3] = 0;
                }
                else {
                  local_40 = local_40 + -1;
                }
                local_24 = local_24 + -1;
                if (0 < local_24) {
                  do {
                    uVar13 = local_48[-1];
                    if (*local_48 == uVar6) {
                      iVar8 = -1;
                    }
                    else {
                      iVar8 = __aulldiv(uVar13,*local_48,uVar6,0);
                      uVar13 = uVar13 - iVar8 * uVar6;
                      uVar14 = __allmul(iVar8,0,local_38,0);
                      if (CONCAT44(uVar13,local_48[-2]) < uVar14) {
                        while( true ) {
                          local_1c = (uint)uVar14;
                          uVar13 = uVar13 + uVar6;
                          iVar8 = iVar8 + -1;
                          if (uVar13 < uVar6) break;
                          uVar1 = local_1c - local_38;
                          uVar11 = (int)(uVar14 >> 0x20) - (uint)(local_1c < local_38);
                          uVar14 = CONCAT44(uVar11,uVar1);
                          if ((uVar11 <= uVar13) &&
                             ((uVar11 < uVar13 ||
                              (uVar14 = CONCAT44(uVar11,uVar1), uVar1 <= local_48[-2])))) break;
                        }
                      }
                    }
                    uVar9 = FUN_00acaf70(*piVar3,*piVar5,iVar2,iVar8);
                    *(undefined4 *)(*piVar3 + iVar2 * 4) = uVar9;
                    local_14 = local_14 + -4;
                    iVar10 = FUN_00acb450(local_14,local_14,*piVar3,iVar2 + 1);
                    if (iVar10 != 0) {
                      iVar8 = iVar8 + -1;
                      iVar10 = FUN_00acb290(local_14,local_14,*piVar5,iVar2);
                      if (iVar10 != 0) {
                        *local_48 = *local_48 + 1;
                      }
                    }
                    *local_40 = iVar8;
                    local_48 = local_48 + -1;
                    local_40 = local_40 + -1;
                    local_24 = local_24 + -1;
                  } while (local_24 != 0);
                }
                iVar2 = piVar4[1];
                if (0 < iVar2) {
                  piVar3 = (int *)(*piVar4 + -4 + iVar2 * 4);
                  do {
                    iVar8 = *piVar3;
                    piVar3 = piVar3 + -1;
                    if (iVar8 != 0) break;
                    iVar2 = iVar2 + -1;
                  } while (0 < iVar2);
                  piVar4[1] = iVar2;
                }
                if (param_2 != 0) {
                  iVar2 = param_3[3];
                  FUN_00a9bc70(param_2,piVar4,iVar12);
                  if (*(int *)(param_2 + 4) != 0) {
                    *(int *)(param_2 + 0xc) = iVar2;
                  }
                }
                if ((local_44 != 0) && (iVar2 = param_1[1], 0 < iVar2)) {
                  piVar3 = (int *)(*param_1 + -4 + iVar2 * 4);
                  do {
                    iVar12 = *piVar3;
                    piVar3 = piVar3 + -1;
                    if (iVar12 != 0) break;
                    iVar2 = iVar2 + -1;
                  } while (0 < iVar2);
                  param_1[1] = iVar2;
                }
                FUN_00aa4aa0(param_5);
                return 1;
              }
            }
          }
        }
      }
LAB_00ad2bf1:
      FUN_00aa4aa0(param_5);
      return 0;
    }
    if ((param_2 == 0) || (iVar2 = FUN_00a9aba0(param_2,param_3), iVar2 != 0)) {
      if (param_1 != (int *)0x0) {
        FUN_00a9ac50(param_1,0);
      }
      return 1;
    }
  }
  else {
    FUN_00a7f3c0(3,0x6b,0x6b,".\\crypto\\bn\\bn_div.c",0xc4);
  }
  return 0;
}



undefined4 FUN_00ad2c10(int param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  code *pcVar2;
  undefined4 uVar3;
  
  iVar1 = FUN_00ad26e0(0,param_1,param_2,param_3,param_4);
  if (iVar1 == 0) {
    return 0;
  }
  if (*(int *)(param_1 + 0xc) == 0) {
    return 1;
  }
  pcVar2 = FUN_00ad1720;
  if (*(int *)(param_3 + 0xc) == 0) {
    pcVar2 = FUN_00ad17f0;
  }
  uVar3 = (*pcVar2)(param_1,param_1,param_3);
  return uVar3;
}



void FUN_00ad2c60(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  int iVar1;
  
  iVar1 = FUN_00ad17f0(param_1,param_2,param_3);
  if (iVar1 == 0) {
    return;
  }
  FUN_00ad2c10(param_1,param_1,param_4,param_5);
  return;
}



undefined4 FUN_00ad2ca0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_00ad1500(param_1,param_2,param_3);
  if (iVar1 == 0) {
    return 0;
  }
  iVar1 = FUN_00a9ae10(param_1,param_4);
  if (-1 < iVar1) {
    uVar2 = FUN_00ad15d0(param_1,param_1,param_4);
    return uVar2;
  }
  return 1;
}



void FUN_00ad2cf0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  int iVar1;
  
  iVar1 = FUN_00ad1720(param_1,param_2,param_3);
  if (iVar1 == 0) {
    return;
  }
  FUN_00ad2c10(param_1,param_1,param_4,param_5);
  return;
}



undefined4 FUN_00ad2d30(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_00ad1720(param_1,param_2,param_3);
  if (iVar1 == 0) {
    return 0;
  }
  if (*(int *)(param_1 + 0xc) != 0) {
    uVar2 = FUN_00ad17f0(param_1,param_1,param_4);
    return uVar2;
  }
  return 1;
}



undefined4
FUN_00ad2d70(undefined4 param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  
  uVar3 = 0;
  FUN_00aa4a50(param_5);
  iVar1 = FUN_00aa4ae0(param_5);
  if (iVar1 != 0) {
    if (param_2 == param_3) {
      iVar2 = FUN_00ae59a0(iVar1,param_2);
    }
    else {
      iVar2 = FUN_00ad2400(iVar1,param_2,param_3,param_5);
    }
    if (iVar2 != 0) {
      iVar1 = FUN_00ad2c10(param_1,iVar1,param_4,param_5);
      if (iVar1 != 0) {
        uVar3 = 1;
      }
    }
  }
  FUN_00aa4aa0(param_5);
  return uVar3;
}



void FUN_00ad2df0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  
  iVar1 = FUN_00ae59a0(param_1,param_2,param_4);
  if (iVar1 == 0) {
    return;
  }
  FUN_00ad26e0(0,param_1,param_1,param_3,param_4);
  return;
}



undefined4 FUN_00ad2e30(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_00a9b9e0(param_1,param_2);
  if (iVar1 == 0) {
    return 0;
  }
  iVar1 = FUN_00a9ae60(param_1,param_3);
  if (-1 < iVar1) {
    uVar2 = FUN_00ad1720(param_1,param_1,param_3);
    return uVar2;
  }
  return 1;
}



undefined4 FUN_00ad2e80(int param_1,int param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  
  if ((param_1 != param_2) && (iVar1 = FUN_00a9aba0(param_1,param_2), iVar1 == 0)) {
    return 0;
  }
  if (0 < param_3) {
    do {
      iVar2 = FUN_00a9a920(param_1);
      iVar1 = FUN_00a9a920(param_4);
      iVar1 = iVar1 - iVar2;
      if (iVar1 < 0) {
        FUN_00a7f3c0(3,0x77,0x6e,".\\crypto\\bn\\bn_mod.c",0x111);
        return 0;
      }
      if (param_3 < iVar1) {
        iVar1 = param_3;
      }
      if (iVar1 == 0) {
        iVar1 = FUN_00a9b9e0(param_1,param_1);
        if (iVar1 == 0) {
          return 0;
        }
        iVar1 = -1;
      }
      else {
        iVar2 = FUN_00a9bb30(param_1,param_1,iVar1);
        if (iVar2 == 0) {
          return 0;
        }
        iVar1 = -iVar1;
      }
      param_3 = param_3 + iVar1;
      iVar1 = FUN_00a9ae60(param_1,param_4);
      if ((-1 < iVar1) && (iVar1 = FUN_00ad1720(param_1,param_1,param_4), iVar1 == 0)) {
        return 0;
      }
    } while (0 < param_3);
  }
  return 1;
}



byte ** __fastcall FUN_00ad2f50(byte **param_1,byte **param_2)

{
  byte *pbVar1;
  int iVar2;
  int iVar3;
  byte **ppbVar4;
  byte **ppbVar5;
  
  pbVar1 = param_1[1];
  iVar3 = 0;
  if (pbVar1 != (byte *)0x0) {
    do {
      ppbVar4 = param_1;
      if (((int)param_2[1] < 1) || ((**param_2 & 1) == 0)) {
        if ((0 < (int)pbVar1) && (ppbVar5 = param_2, (**param_1 & 1) != 0)) goto LAB_00ad2f9e;
        iVar2 = FUN_00a9ba80(param_2,param_2);
        if (iVar2 == 0) {
          return (byte **)0x0;
        }
        iVar2 = FUN_00a9ba80(param_1,param_1);
        if (iVar2 == 0) {
          return (byte **)0x0;
        }
        iVar3 = iVar3 + 1;
      }
      else {
        ppbVar5 = param_1;
        if (((0 < (int)pbVar1) && ((**param_1 & 1) != 0)) &&
           (iVar2 = FUN_00ad1720(param_2,param_2,param_1), ppbVar5 = param_2, iVar2 == 0)) {
          return (byte **)0x0;
        }
LAB_00ad2f9e:
        iVar2 = FUN_00a9ba80(ppbVar5,ppbVar5);
        if (iVar2 == 0) {
          return (byte **)0x0;
        }
        iVar2 = FUN_00a9ae60(param_2,param_1);
        if (iVar2 < 0) {
          ppbVar4 = param_2;
          param_2 = param_1;
        }
      }
      pbVar1 = ppbVar4[1];
      param_1 = ppbVar4;
    } while (pbVar1 != (byte *)0x0);
    if ((iVar3 != 0) && (iVar3 = FUN_00a9bb30(param_2,param_2,iVar3), iVar3 == 0)) {
      return (byte **)0x0;
    }
  }
  return param_2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00ad3010(int param_1,undefined4 param_2,undefined4 param_3)

{
  int **ppiVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int **ppiVar5;
  undefined4 uVar6;
  int iVar7;
  int local_44;
  int **local_40;
  int **local_3c;
  int **local_38;
  int local_34;
  int *local_28;
  int *local_24;
  int *local_20;
  int *local_1c;
  uint local_18;
  int *local_14;
  int *local_10;
  int *local_c;
  int *local_8;
  uint local_4;
  
  local_4 = 0xad301a;
  local_44 = 0;
  FUN_00aa4a50();
  ppiVar3 = (int **)FUN_00aa4ae0();
  ppiVar4 = (int **)FUN_00aa4ae0();
  ppiVar5 = (int **)FUN_00aa4ae0();
  uVar6 = FUN_00aa4ae0();
  local_38 = (int **)FUN_00aa4ae0();
  local_3c = (int **)FUN_00aa4ae0();
  iVar7 = FUN_00aa4ae0();
  if (iVar7 == 0) goto LAB_00ad32a1;
  local_44 = param_1;
  if (param_1 == 0) {
    local_44 = FUN_00a9aa10();
  }
  if (local_44 == 0) goto LAB_00ad32a1;
  FUN_00a9ac50(ppiVar5,1);
  FUN_00a9ac50(local_3c,0);
  iVar7 = FUN_00a9aba0(ppiVar4,param_2);
  if ((iVar7 == 0) || (iVar7 = FUN_00a9aba0(ppiVar3,param_3), iVar7 == 0)) goto LAB_00ad32a1;
  ppiVar3[3] = (int *)0x0;
  if ((ppiVar4[3] != (int *)0x0) || (iVar7 = FUN_00a9ae10(ppiVar4,ppiVar3), -1 < iVar7)) {
    local_28 = *ppiVar4;
    local_24 = ppiVar4[1];
    local_20 = ppiVar4[2];
    local_1c = ppiVar4[3];
    local_18 = (uint)ppiVar4[4] & 0xfffffffe | local_18 & 1 | 6;
    iVar7 = FUN_00ad2c10(ppiVar4,&local_28,ppiVar3);
    if (iVar7 == 0) goto LAB_00ad32a1;
  }
  local_34 = -1;
  ppiVar2 = ppiVar3;
  local_40 = local_3c;
  iVar7 = local_34;
  if (ppiVar4[1] == (int *)0x0) {
LAB_00ad3202:
    iVar7 = FUN_00ad1720(local_3c,param_3,local_3c);
    if (iVar7 == 0) goto LAB_00ad32a1;
  }
  else {
    do {
      local_34 = iVar7;
      local_3c = ppiVar5;
      ppiVar3 = ppiVar4;
      ppiVar5 = ppiVar2;
      ppiVar4 = local_38;
      local_14 = *ppiVar5;
      local_10 = ppiVar5[1];
      local_c = ppiVar5[2];
      local_8 = ppiVar5[3];
      local_4 = (uint)ppiVar5[4] & 0xfffffffe | local_4 & 1 | 6;
      iVar7 = FUN_00ad26e0(uVar6,local_38,&local_14,ppiVar3);
      if (((iVar7 == 0) || (iVar7 = FUN_00ad2400(ppiVar5,uVar6,local_3c), iVar7 == 0)) ||
         (iVar7 = FUN_00ad17f0(ppiVar5,ppiVar5,local_40), iVar7 == 0)) goto LAB_00ad32a1;
      ppiVar1 = local_38 + 1;
      local_38 = local_40;
      local_40 = local_3c;
      ppiVar2 = ppiVar3;
      iVar7 = -local_34;
    } while (*ppiVar1 != (int *)0x0);
    if (0 < local_34) goto LAB_00ad3202;
  }
  if (((ppiVar3[1] == (int *)0x1) && (**ppiVar3 == 1)) && (ppiVar3[3] == (int *)0x0)) {
    if ((local_3c[3] == (int *)0x0) && (iVar7 = FUN_00a9ae10(local_3c,param_3), iVar7 < 0)) {
      iVar7 = FUN_00a9aba0(local_44,local_3c);
    }
    else {
      iVar7 = FUN_00ad2c10(local_44,local_3c,param_3);
    }
    if (iVar7 != 0) {
      FUN_00aa4aa0();
      return local_44;
    }
  }
  else {
    FUN_00a7f3c0(3,0x8b,0x6c,".\\crypto\\bn\\bn_gcd.c",0x286);
  }
LAB_00ad32a1:
  if (param_1 == 0) {
    FUN_00a9a9b0(local_44);
  }
  FUN_00aa4aa0();
  return 0;
}



undefined4 FUN_00ad32d0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  
  uVar4 = 0;
  FUN_00aa4a50(param_4);
  iVar1 = FUN_00aa4ae0(param_4);
  iVar2 = FUN_00aa4ae0(param_4);
  if ((((iVar1 != 0) && (iVar2 != 0)) && (iVar3 = FUN_00a9aba0(iVar1,param_2), iVar3 != 0)) &&
     (iVar3 = FUN_00a9aba0(iVar2,param_3), iVar3 != 0)) {
    *(undefined4 *)(iVar1 + 0xc) = 0;
    *(undefined4 *)(iVar2 + 0xc) = 0;
    FUN_00a9ae60(iVar1,iVar2);
    iVar1 = FUN_00ad2f50();
    if ((iVar1 != 0) && (iVar1 = FUN_00a9aba0(param_1,iVar1), iVar1 != 0)) {
      uVar4 = 1;
    }
  }
  FUN_00aa4aa0(param_4);
  return uVar4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00ad3370(int param_1,int param_2,byte **param_3,undefined4 param_4)

{
  int *piVar1;
  int **ppiVar2;
  int **ppiVar3;
  int **ppiVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int **ppiVar8;
  int **ppiVar9;
  int **local_1c;
  int **local_18;
  int **local_14;
  int local_10;
  int local_8;
  
  local_10 = 0;
  local_8 = 0;
  if (((*(byte *)(param_2 + 0x10) & 4) != 0) || ((*(byte *)(param_3 + 4) & 4) != 0)) {
    iVar5 = FUN_00ad3010(param_1,param_2,param_3);
    return iVar5;
  }
  FUN_00aa4a50(param_4);
  local_1c = (int **)FUN_00aa4ae0(param_4);
  ppiVar2 = (int **)FUN_00aa4ae0(param_4);
  local_14 = (int **)FUN_00aa4ae0(param_4);
  ppiVar3 = (int **)FUN_00aa4ae0(param_4);
  ppiVar4 = (int **)FUN_00aa4ae0(param_4);
  local_18 = (int **)FUN_00aa4ae0(param_4);
  iVar5 = FUN_00aa4ae0(param_4);
  if (iVar5 != 0) {
    local_10 = param_1;
    if (param_1 == 0) {
      local_10 = FUN_00a9aa10();
    }
    if (local_10 != 0) {
      FUN_00a9ac50(local_14,1);
      FUN_00a9ac50(local_18,0);
      iVar6 = FUN_00a9aba0(ppiVar2,param_2);
      if (((iVar6 != 0) && (iVar6 = FUN_00a9aba0(local_1c,param_3), iVar6 != 0)) &&
         (((local_1c[3] = (int *)0x0, ppiVar2[3] == (int *)0x0 &&
           (iVar6 = FUN_00a9ae10(ppiVar2,local_1c), iVar6 < 0)) ||
          (iVar6 = FUN_00ad2c10(ppiVar2,ppiVar2,local_1c,param_4), iVar6 != 0)))) {
        param_2 = -1;
        if ((((int)param_3[1] < 1) || ((**param_3 & 1) == 0)) ||
           (iVar6 = FUN_00a9a920(param_3), 0x800 < iVar6)) {
          iVar6 = param_2;
          if (ppiVar2[1] != (int *)0x0) {
LAB_00ad3630:
            param_2 = iVar6;
            ppiVar8 = ppiVar2;
            ppiVar2 = ppiVar4;
            ppiVar4 = local_18;
            iVar6 = FUN_00a9a920(ppiVar8);
            iVar7 = FUN_00a9a920(local_1c);
            if (iVar7 == iVar6) {
              iVar6 = FUN_00a9ac50(ppiVar3,1);
              if (iVar6 == 0) goto LAB_00ad38f7;
              iVar6 = FUN_00ad1720(ppiVar2,local_1c,ppiVar8);
            }
            else {
              iVar6 = FUN_00a9a920(ppiVar8);
              iVar7 = FUN_00a9a920(local_1c);
              if (iVar7 == iVar6 + 1) {
                iVar6 = FUN_00a9b9e0(iVar5,ppiVar8);
                if (iVar6 == 0) goto LAB_00ad38f7;
                iVar6 = FUN_00a9ae10(local_1c,iVar5);
                if (iVar6 < 0) {
                  iVar6 = FUN_00a9ac50(ppiVar3,1);
                  if (iVar6 == 0) goto LAB_00ad38f7;
                  iVar6 = FUN_00ad1720(ppiVar2,local_1c,ppiVar8);
                }
                else {
                  iVar6 = FUN_00ad1720(ppiVar2,local_1c,iVar5);
                  if ((iVar6 == 0) || (iVar6 = FUN_00ad17f0(ppiVar3,iVar5,ppiVar8), iVar6 == 0))
                  goto LAB_00ad38f7;
                  iVar6 = FUN_00a9ae10(local_1c,ppiVar3);
                  if (iVar6 < 0) {
                    iVar6 = FUN_00a9ac50(ppiVar3,2);
                  }
                  else {
                    iVar6 = FUN_00a9ac50(ppiVar3,3);
                    if (iVar6 == 0) goto LAB_00ad38f7;
                    iVar6 = FUN_00ad1720(ppiVar2,ppiVar2,ppiVar8);
                  }
                }
              }
              else {
                iVar6 = FUN_00ad26e0(ppiVar3,ppiVar2,local_1c,ppiVar8,param_4);
              }
            }
            if (iVar6 == 0) goto LAB_00ad38f7;
            if (ppiVar3[1] == (int *)0x1) {
              if ((**ppiVar3 == 1) && (ppiVar9 = local_14, ppiVar3[3] == (int *)0x0))
              goto LAB_00ad3820;
              if ((**ppiVar3 == 2) && (ppiVar3[3] == (int *)0x0)) {
                iVar6 = FUN_00a9b9e0(local_1c,local_14);
                goto LAB_00ad3812;
              }
              if ((**ppiVar3 == 4) && (ppiVar3[3] == (int *)0x0)) {
                iVar6 = FUN_00a9bb30(local_1c,local_14,2);
              }
              else {
                iVar6 = FUN_00a9aba0(local_1c,local_14);
                if (iVar6 == 0) goto LAB_00ad38f7;
                iVar6 = FUN_00a9b970(local_1c,**ppiVar3);
              }
            }
            else {
              iVar6 = FUN_00ad2400(local_1c,ppiVar3,local_14,param_4);
            }
LAB_00ad3812:
            ppiVar9 = local_1c;
            if (iVar6 == 0) goto LAB_00ad38f7;
LAB_00ad3820:
            iVar6 = FUN_00ad17f0(local_1c,ppiVar9,local_18);
            if (iVar6 == 0) goto LAB_00ad38f7;
            local_18 = local_14;
            local_14 = local_1c;
            iVar6 = -param_2;
            local_1c = ppiVar8;
            if (ppiVar2[1] == (int *)0x0) goto code_r0x00ad3855;
            goto LAB_00ad3630;
          }
        }
        else {
          piVar1 = ppiVar2[1];
          while (piVar1 != (int *)0x0) {
            iVar6 = 0;
            iVar5 = FUN_00a9af90(ppiVar2,0);
            if (iVar5 == 0) {
              do {
                iVar6 = iVar6 + 1;
                if ((((0 < (int)local_14[1]) && ((*(byte *)*local_14 & 1) != 0)) &&
                    (iVar5 = FUN_00ad1500(local_14,local_14,param_3), iVar5 == 0)) ||
                   (iVar5 = FUN_00a9ba80(local_14,local_14), iVar5 == 0)) goto LAB_00ad38f7;
                iVar5 = FUN_00a9af90(ppiVar2,iVar6);
              } while (iVar5 == 0);
              if ((0 < iVar6) && (iVar5 = FUN_00a9bc70(ppiVar2,ppiVar2,iVar6), iVar5 == 0))
              goto LAB_00ad38f7;
            }
            iVar6 = 0;
            iVar5 = FUN_00a9af90(local_1c,0);
            if (iVar5 == 0) {
              do {
                iVar6 = iVar6 + 1;
                if ((((0 < (int)local_18[1]) && ((*(byte *)*local_18 & 1) != 0)) &&
                    (iVar5 = FUN_00ad1500(local_18,local_18,param_3), iVar5 == 0)) ||
                   (iVar5 = FUN_00a9ba80(local_18,local_18), iVar5 == 0)) goto LAB_00ad38f7;
                iVar5 = FUN_00a9af90(local_1c,iVar6);
              } while (iVar5 == 0);
              if ((0 < iVar6) && (iVar5 = FUN_00a9bc70(local_1c,local_1c,iVar6), iVar5 == 0))
              goto LAB_00ad38f7;
            }
            iVar5 = FUN_00a9ae10(ppiVar2,local_1c);
            if (iVar5 < 0) {
              iVar5 = FUN_00ad1500(local_18,local_18,local_14);
              ppiVar4 = local_1c;
              ppiVar3 = ppiVar2;
            }
            else {
              iVar5 = FUN_00ad1500(local_14,local_14,local_18);
              ppiVar4 = ppiVar2;
              ppiVar3 = local_1c;
            }
            if ((iVar5 == 0) || (iVar5 = FUN_00ad15d0(ppiVar4,ppiVar4,ppiVar3), iVar5 == 0))
            goto LAB_00ad38f7;
            piVar1 = ppiVar2[1];
          }
        }
        goto LAB_00ad3859;
      }
    }
  }
LAB_00ad38f7:
  iVar6 = local_8;
  if (param_1 == 0) {
    FUN_00a9a9b0(local_10);
  }
LAB_00ad390b:
  local_8 = iVar6;
  FUN_00aa4aa0(param_4);
  return local_8;
code_r0x00ad3855:
  if (0 < param_2) {
LAB_00ad3859:
    iVar5 = FUN_00ad1720(local_18,param_3,local_18);
    if (iVar5 == 0) goto LAB_00ad38f7;
  }
  if (((local_1c[1] == (int *)0x1) && (**local_1c == 1)) && (local_1c[3] == (int *)0x0)) {
    if ((local_18[3] == (int *)0x0) && (iVar5 = FUN_00a9ae10(local_18,param_3), iVar5 < 0)) {
      iVar5 = FUN_00a9aba0(local_10,local_18);
    }
    else {
      iVar5 = FUN_00ad2c10(local_10,local_18,param_3,param_4);
    }
    iVar6 = local_10;
    if (iVar5 != 0) goto LAB_00ad390b;
  }
  else {
    FUN_00a7f3c0(3,0x6e,0x6c,".\\crypto\\bn\\bn_gcd.c",0x1ec);
  }
  goto LAB_00ad38f7;
}



void FUN_00ad3940(undefined4 param_1,undefined4 param_2,int param_3)

{
                    // WARNING: Could not recover jumptable at 0x00ad394e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_3 + 0x3c) + 4))();
  return;
}



void FUN_00ad3950(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x00ad395e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + 0x3c) + 8))();
  return;
}



void FUN_00ad3960(void)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00a84f80(8,".\\crypto\\dsa\\dsa_sign.c",0x5f);
  if (puVar1 == (undefined4 *)0x0) {
    return;
  }
  *puVar1 = 0;
  puVar1[1] = 0;
  return;
}



void FUN_00ad3990(int *param_1)

{
  if (param_1 != (int *)0x0) {
    if (*param_1 != 0) {
      FUN_00a9a9b0(*param_1);
    }
    if (param_1[1] != 0) {
      FUN_00a9a9b0(param_1[1]);
    }
    FUN_00a85120(param_1);
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00ad39d0(undefined4 param_1,int param_2,undefined4 param_3,int param_4,undefined4 param_5,
            byte **param_6,undefined4 param_7,int param_8)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int local_12c;
  int local_128;
  uint local_124;
  int local_118;
  undefined4 local_114;
  uint local_110;
  int local_10c;
  int local_104 [32];
  int aiStack_84 [32];
  undefined4 uStack_4;
  
  uStack_4 = 0xad39da;
  local_114 = 0;
  local_128 = 0;
  if ((**param_6 & 1) == 0) {
    FUN_00a7f3c0(3,0x76,0x66,".\\crypto\\bn\\bn_exp2.c",0x8a);
    return 0;
  }
  iVar2 = FUN_00a9a920(param_3);
  iVar3 = FUN_00a9a920(param_5);
  if ((iVar2 == 0) && (iVar3 == 0)) {
    uVar4 = FUN_00a9ac50(param_1,1);
    return uVar4;
  }
  local_118 = iVar2;
  if (iVar2 <= iVar3) {
    local_118 = iVar3;
  }
  FUN_00aa4a50(param_7);
  iVar5 = FUN_00aa4ae0(param_7);
  iVar6 = FUN_00aa4ae0(param_7);
  aiStack_84[1] = FUN_00aa4ae0(param_7);
  local_104[1] = FUN_00aa4ae0(param_7);
  if ((((iVar5 == 0) || (iVar6 == 0)) || (aiStack_84[1] == 0)) || (local_104[1] == 0)) {
LAB_00ad3fca:
    if (param_8 != 0) goto LAB_00ad3fec;
  }
  else {
    if (param_8 != 0) {
      local_128 = param_8;
LAB_00ad3b0d:
      if (iVar2 < 0x2a0) {
        if (iVar2 < 0xf0) {
          if (iVar2 < 0x50) {
            local_110 = (uint)(0x17 < iVar2) * 2 + 1;
          }
          else {
            local_110 = 4;
          }
        }
        else {
          local_110 = 5;
        }
      }
      else {
        local_110 = 6;
      }
      if (iVar3 < 0x2a0) {
        if (iVar3 < 0xf0) {
          if (iVar3 < 0x50) {
            local_124 = (uint)(0x17 < iVar3) * 2 + 1;
          }
          else {
            local_124 = 4;
          }
        }
        else {
          local_124 = 5;
        }
      }
      else {
        local_124 = 6;
      }
      if (((*(int *)(param_2 + 0xc) == 0) &&
          (iVar3 = FUN_00a9ae10(param_2,param_6), iVar2 = aiStack_84[1], iVar3 < 0)) ||
         (iVar2 = aiStack_84[1], iVar3 = FUN_00ad26e0(0,aiStack_84[1],param_2,param_6,param_7),
         param_2 = iVar2, iVar3 != 0)) {
        if (*(int *)(param_2 + 4) == 0) {
          FUN_00a9ac50(param_1,0);
LAB_00ad3fc2:
          local_114 = 1;
        }
        else {
          iVar3 = local_128 + 4;
          iVar7 = FUN_00ad0400(iVar2,param_2,iVar3,local_128,param_7);
          if (iVar7 != 0) {
            if (1 < local_110) {
              iVar2 = FUN_00ad0400(iVar5,iVar2,iVar2,local_128,param_7);
              if (iVar2 == 0) goto LAB_00ad3fca;
              iVar7 = 1 << ((char)local_110 - 1U & 0x1f);
              iVar2 = 1;
              if (1 < iVar7) {
                do {
                  iVar8 = FUN_00aa4ae0(param_7);
                  aiStack_84[iVar2 + 1] = iVar8;
                  if ((iVar8 == 0) ||
                     (iVar8 = FUN_00ad0400(iVar8,aiStack_84[iVar2],iVar5,local_128,param_7),
                     iVar8 == 0)) goto LAB_00ad3fca;
                  iVar2 = iVar2 + 1;
                } while (iVar2 < iVar7);
              }
            }
            if (((*(int *)(param_4 + 0xc) == 0) &&
                (iVar2 = FUN_00a9ae10(param_4,param_6), iVar2 < 0)) ||
               (iVar2 = FUN_00ad26e0(0,local_104[1],param_4,param_6,param_7), param_4 = local_104[1]
               , iVar2 != 0)) {
              if (*(int *)(param_4 + 4) == 0) {
                FUN_00a9ac50(param_1,0);
                goto LAB_00ad3fc2;
              }
              iVar2 = FUN_00ad0400(local_104[1],param_4,iVar3,local_128,param_7);
              if (iVar2 != 0) {
                if (1 < local_124) {
                  iVar2 = FUN_00ad0400(iVar5,local_104[1],local_104[1],local_128,param_7);
                  if (iVar2 == 0) goto LAB_00ad3fca;
                  iVar7 = 1 << ((char)local_124 - 1U & 0x1f);
                  iVar2 = 1;
                  if (1 < iVar7) {
                    do {
                      iVar8 = FUN_00aa4ae0(param_7);
                      local_104[iVar2 + 1] = iVar8;
                      if ((iVar8 == 0) ||
                         (iVar8 = FUN_00ad0400(iVar8,local_104[iVar2],iVar5,local_128,param_7),
                         iVar8 == 0)) goto LAB_00ad3fca;
                      iVar2 = iVar2 + 1;
                    } while (iVar2 < iVar7);
                  }
                }
                iVar2 = 0;
                bVar1 = true;
                iVar5 = 0;
                local_10c = 0;
                local_104[0] = 0;
                uVar4 = FUN_00a9a8c0(iVar3,local_128,param_7);
                iVar3 = FUN_00ad0400(iVar6,uVar4);
                if (iVar3 != 0) {
                  local_12c = local_118 + -1;
                  if (-1 < local_12c) {
                    local_118 = local_118 + -2;
                    do {
                      if ((!bVar1) &&
                         (iVar3 = FUN_00ad0400(iVar6,iVar6,iVar6,local_128,param_7), iVar3 == 0))
                      goto LAB_00ad3fca;
                      if ((iVar2 == 0) && (iVar3 = FUN_00a9af90(param_3,local_12c), iVar3 != 0)) {
                        local_10c = (2 - local_124) + (local_124 - local_110) + local_118;
                        iVar2 = FUN_00a9af90(param_3,local_10c);
                        while (iVar2 == 0) {
                          local_10c = local_10c + 1;
                          iVar2 = FUN_00a9af90(param_3,local_10c);
                        }
                        iVar2 = 1;
                        for (iVar3 = local_118; local_10c <= iVar3; iVar3 = iVar3 + -1) {
                          iVar2 = iVar2 * 2;
                          iVar7 = FUN_00a9af90(param_3,iVar3);
                          if (iVar7 != 0) {
                            iVar2 = iVar2 + 1;
                          }
                        }
                      }
                      if ((iVar5 == 0) && (iVar3 = FUN_00a9af90(param_5,local_12c), iVar3 != 0)) {
                        iVar3 = (2 - local_124) + local_118;
                        iVar5 = FUN_00a9af90(param_5,iVar3);
                        while (iVar5 == 0) {
                          iVar3 = iVar3 + 1;
                          iVar5 = FUN_00a9af90(param_5,iVar3);
                        }
                        iVar5 = 1;
                        iVar7 = local_118;
                        local_104[0] = iVar3;
                        if (iVar3 <= local_118) {
                          do {
                            iVar5 = iVar5 * 2;
                            iVar3 = FUN_00a9af90(param_5,iVar7);
                            if (iVar3 != 0) {
                              iVar5 = iVar5 + 1;
                            }
                            iVar7 = iVar7 + -1;
                          } while (local_104[0] <= iVar7);
                        }
                      }
                      if ((iVar2 != 0) && (local_12c == local_10c)) {
                        iVar2 = FUN_00ad0400(iVar6,iVar6,aiStack_84[(iVar2 >> 1) + 1],local_128,
                                             param_7);
                        if (iVar2 == 0) goto LAB_00ad3fca;
                        iVar2 = 0;
                        bVar1 = false;
                      }
                      if ((iVar5 != 0) && (local_12c == local_104[0])) {
                        iVar3 = FUN_00ad0400(iVar6,iVar6,local_104[(iVar5 >> 1) + 1],local_128,
                                             param_7);
                        if (iVar3 == 0) goto LAB_00ad3fca;
                        iVar5 = 0;
                        bVar1 = false;
                      }
                      local_12c = local_12c + -1;
                      local_118 = local_118 + -1;
                    } while (-1 < local_12c);
                  }
                  iVar2 = FUN_00ad00e0(param_1,iVar6,local_128,param_7);
                  if (iVar2 != 0) goto LAB_00ad3fc2;
                }
              }
            }
          }
        }
      }
      goto LAB_00ad3fca;
    }
    local_128 = FUN_00ad0520();
    if (local_128 == 0) goto LAB_00ad3fec;
    iVar7 = FUN_00ad0180(local_128,param_6,param_7);
    if (iVar7 != 0) goto LAB_00ad3b0d;
  }
  if (local_128 != 0) {
    FUN_00ad0140(local_128);
  }
LAB_00ad3fec:
  FUN_00aa4aa0(param_7);
  return local_114;
}



int * FUN_00ad4010(void)

{
  int *piVar1;
  int unaff_EDI;
  
  if (unaff_EDI != 0) {
    piVar1 = (int *)FUN_00a84f80(0x1c,".\\crypto\\ec\\ec_mult.c",0x69);
    if (piVar1 != (int *)0x0) {
      *piVar1 = unaff_EDI;
      piVar1[1] = 8;
      piVar1[2] = 0;
      piVar1[3] = 4;
      piVar1[4] = 0;
      piVar1[5] = 0;
      piVar1[6] = 1;
      return piVar1;
    }
    FUN_00a7f3c0(0x10,0xc4,0x41,".\\crypto\\ec\\ec_mult.c",0x6c);
  }
  return (int *)0x0;
}



int FUN_00ad4080(int param_1)

{
  FUN_00a7fe40(param_1 + 0x18,1,0x24,".\\crypto\\ec\\ec_mult.c",0x7f);
  return param_1;
}



void FUN_00ad40a0(int param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  
  if ((param_1 != 0) &&
     (iVar2 = FUN_00a7fe40(param_1 + 0x18,0xffffffff,0x24,".\\crypto\\ec\\ec_mult.c",0x8c),
     iVar2 < 1)) {
    piVar3 = *(int **)(param_1 + 0x10);
    if (piVar3 != (int *)0x0) {
      iVar2 = *piVar3;
      while (iVar2 != 0) {
        FUN_00aa3a10(iVar2);
        piVar1 = piVar3 + 1;
        piVar3 = piVar3 + 1;
        iVar2 = *piVar1;
      }
      FUN_00a85120(*(undefined4 *)(param_1 + 0x10));
    }
    FUN_00a85120(param_1);
  }
  return;
}



void FUN_00ad4100(int param_1)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  
  if ((param_1 != 0) &&
     (iVar2 = FUN_00a7fe40(param_1 + 0x18,0xffffffff,0x24,".\\crypto\\ec\\ec_mult.c",0xa3),
     iVar2 < 1)) {
    piVar3 = *(int **)(param_1 + 0x10);
    if (piVar3 != (int *)0x0) {
      iVar2 = *piVar3;
      while (iVar2 != 0) {
        FUN_00aa3a40(iVar2);
        FUN_00a84330(piVar3,4);
        piVar1 = piVar3 + 1;
        piVar3 = piVar3 + 1;
        iVar2 = *piVar1;
      }
      FUN_00a85120(*(undefined4 *)(param_1 + 0x10));
    }
    FUN_00a84330(param_1,0x1c);
    FUN_00a85120(param_1);
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined * FUN_00ad4170(uint **param_1,uint *param_2)

{
  undefined *puVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  char *pcVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  int unaff_EDI;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined *local_14;
  char local_c;
  
  local_14 = (undefined *)0x0;
  local_c = '\x01';
  if (param_1[1] == (uint *)0x0) {
    puVar1 = (undefined *)FUN_00a84f80(1,".\\crypto\\ec\\ec_mult.c",0xcc);
    if (puVar1 != (undefined *)0x0) {
      *puVar1 = 0;
      *param_2 = 1;
      return puVar1;
    }
    uVar10 = 0xcf;
    uVar9 = 0x41;
    local_14 = (undefined *)0x0;
  }
  else {
    if (unaff_EDI - 1U < 7) {
      uVar7 = 1 << ((byte)unaff_EDI & 0x1f);
      if (param_1[3] != (uint *)0x0) {
        local_c = -1;
      }
      if (*param_1 == (uint *)0x0) {
        uVar10 = 0xe7;
      }
      else {
        uVar2 = FUN_00a9a920(param_1);
        local_14 = (undefined *)FUN_00a84f80(uVar2 + 1,".\\crypto\\ec\\ec_mult.c",0xec);
        if (local_14 == (undefined *)0x0) {
          uVar10 = 0xf1;
          uVar9 = 0x41;
          goto LAB_00ad4311;
        }
        uVar6 = **param_1 & uVar7 * 2 - 1;
        uVar8 = 0;
        do {
          if ((uVar6 == 0) && (uVar2 <= uVar8 + 1 + unaff_EDI)) {
            if (uVar8 <= uVar2 + 1) {
              *param_2 = uVar8;
              return local_14;
            }
            uVar10 = 0x135;
            goto LAB_00ad430a;
          }
          uVar4 = 0;
          if ((uVar6 & 1) != 0) {
            uVar4 = uVar6;
            if (((uVar7 & uVar6) != 0) &&
               (uVar4 = uVar6 + uVar7 * -2, uVar2 <= uVar8 + 1 + unaff_EDI)) {
              uVar4 = (int)(uVar7 * 2 + -1) >> 1 & uVar6;
            }
            if ((((int)uVar4 <= (int)-uVar7) || ((int)uVar7 <= (int)uVar4)) || ((uVar4 & 1) == 0)) {
              uVar10 = 0x117;
              goto LAB_00ad430a;
            }
            uVar6 = uVar6 - uVar4;
            if (((uVar6 != 0) && (uVar6 != uVar7 * 2)) && (uVar6 != uVar7)) {
              uVar10 = 0x122;
              goto LAB_00ad430a;
            }
          }
          pcVar5 = local_14 + uVar8;
          uVar8 = uVar8 + 1;
          *pcVar5 = local_c * (char)uVar4;
          iVar3 = FUN_00a9af90(param_1,uVar8 + unaff_EDI);
          uVar6 = ((int)uVar6 >> 1) + iVar3 * uVar7;
        } while ((int)uVar6 <= (int)(uVar7 * 2));
        uVar10 = 0x12e;
      }
    }
    else {
      uVar10 = 0xd9;
    }
LAB_00ad430a:
    uVar9 = 0x44;
  }
LAB_00ad4311:
  FUN_00a7f3c0(0x10,0x8f,uVar9,".\\crypto\\ec\\ec_mult.c",uVar10);
  FUN_00a85120(local_14);
  return (undefined *)0x0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00ad4360(int *param_1,int *param_2,int param_3,uint param_4,int param_5,int param_6,int param_7)

{
  int *piVar1;
  uint *puVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int *piVar8;
  void *_Dst;
  int iVar9;
  uint uVar10;
  int *piVar11;
  uint uVar12;
  size_t *psVar13;
  bool bVar14;
  undefined4 uVar15;
  int *local_5c;
  uint local_58;
  uint local_54;
  int local_50;
  int *local_4c;
  uint local_48;
  uint local_44;
  uint local_40;
  int local_3c;
  int *local_38;
  void *local_34;
  int local_30;
  uint local_2c;
  uint local_28;
  int local_24;
  int *local_20;
  void *local_1c;
  int local_18;
  int *local_14;
  int local_10;
  int local_c;
  undefined4 local_8;
  int local_4;
  
  local_4 = 0xad436a;
  uVar12 = 0;
  local_c = 0;
  local_10 = 0;
  local_24 = 0;
  local_2c = 0;
  local_44 = 0;
  local_14 = (int *)0x0;
  local_28 = 0;
  local_38 = (int *)0x0;
  local_4c = (int *)0x0;
  local_50 = 0;
  local_48 = 0;
  local_20 = (int *)0x0;
  local_5c = (int *)0x0;
  local_30 = 0;
  local_34 = (void *)0x0;
  local_8 = 0;
  if (*param_1 != *param_2) {
    FUN_00a7f3c0(0x10,0xbb,0x65,".\\crypto\\ec\\ec_mult.c",0x176);
    return 0;
  }
  if ((param_3 == 0) && (param_4 == 0)) {
    uVar4 = FUN_00aa3b50(param_1,param_2);
    return uVar4;
  }
  uVar10 = 0;
  if (param_4 != 0) {
    do {
      if (*param_1 != **(int **)(param_5 + uVar10 * 4)) {
        FUN_00a7f3c0(0x10,0xbb,0x65,".\\crypto\\ec\\ec_mult.c",0x183);
        return 0;
      }
      uVar10 = uVar10 + 1;
    } while (uVar10 < param_4);
  }
  if ((param_7 == 0) && (param_7 = FUN_00aa49c0(), local_c = param_7, param_7 == 0)) {
    return local_8;
  }
  if (param_3 != 0) {
    iVar5 = FUN_00a7fa30(param_1);
    local_10 = iVar5;
    if (iVar5 != 0) {
      iVar6 = FUN_00aa3840(param_1[0x11],FUN_00ad4080,FUN_00ad40a0,FUN_00ad4100);
      if (((iVar6 == 0) || (*(int *)(iVar6 + 8) == 0)) ||
         (local_30 = iVar6,
         iVar5 = FUN_00aa4000(param_1,iVar5,**(undefined4 **)(iVar6 + 0x10),param_7), iVar5 != 0)) {
        uVar12 = 1;
        local_30 = 0;
        local_44 = 1;
        local_34 = (void *)0x1;
      }
      else {
        uVar12 = *(uint *)(iVar6 + 4);
        local_2c = uVar12;
        uVar7 = FUN_00a9a920(param_3);
        uVar10 = *(uint *)(iVar6 + 8);
        uVar12 = uVar7 / uVar12 + 1;
        if (uVar10 < uVar12) {
          uVar12 = uVar10;
        }
        local_14 = (int *)(1 << ((char)*(undefined4 *)(iVar6 + 0xc) - 1U & 0x1f));
        local_44 = uVar12;
        if (*(int *)(iVar6 + 0x14) != uVar10 * (int)local_14) {
          uVar15 = 0x1ad;
          uVar4 = 0x44;
          goto LAB_00ad4c83;
        }
      }
      goto LAB_00ad4548;
    }
    uVar15 = 0x194;
    uVar4 = 0x71;
    goto LAB_00ad4c83;
  }
LAB_00ad4548:
  local_54 = uVar12 + param_4;
  iVar5 = local_54 * 4;
  piVar8 = (int *)FUN_00a84f80(iVar5,".\\crypto\\ec\\ec_mult.c",0x1bc);
  local_38 = piVar8;
  local_50 = FUN_00a84f80(iVar5,".\\crypto\\ec\\ec_mult.c",0x1bd);
  local_4c = (int *)FUN_00a84f80(iVar5 + 4,".\\crypto\\ec\\ec_mult.c",0x1be);
  local_5c = (int *)FUN_00a84f80(iVar5,".\\crypto\\ec\\ec_mult.c",0x1bf);
  if (((piVar8 == (int *)0x0) || (local_50 == 0)) ||
     ((local_4c == (int *)0x0 || (local_5c == (int *)0x0)))) {
    uVar15 = 0x1c3;
LAB_00ad4c7c:
    uVar4 = 0x41;
  }
  else {
    *local_4c = 0;
    local_40 = (int)local_34 + param_4;
    local_3c = 0;
    local_58 = 0;
    piVar11 = piVar8;
    if (local_40 != 0) {
      local_1c = (void *)(param_6 - (int)piVar8);
      local_18 = (int)local_4c - (int)piVar8;
      local_4 = local_50 - (int)piVar8;
      do {
        iVar5 = local_18;
        iVar6 = param_3;
        if (local_58 < param_4) {
          iVar6 = *(int *)((int)local_1c + (int)piVar8);
        }
        uVar12 = FUN_00a9a920(iVar6);
        if (uVar12 < 2000) {
          if (uVar12 < 800) {
            if (uVar12 < 300) {
              if (uVar12 < 0x46) {
                iVar6 = 2 - (uint)(uVar12 < 0x14);
              }
              else {
                iVar6 = 3;
              }
            }
            else {
              iVar6 = 4;
            }
          }
          else {
            iVar6 = 5;
          }
        }
        else {
          iVar6 = 6;
        }
        *piVar8 = iVar6;
        *(undefined4 *)(iVar5 + 4 + (int)piVar8) = 0;
        local_3c = local_3c + (1 << ((char)iVar6 - 1U & 0x1f));
        iVar5 = param_3;
        if (local_58 < param_4) {
          iVar5 = *(int *)((int)local_1c + (int)piVar8);
        }
        puVar2 = (uint *)(local_4 + (int)piVar8);
        iVar5 = FUN_00ad4170(iVar5,puVar2);
        *(int *)(local_18 + (int)piVar8) = iVar5;
        if (iVar5 == 0) goto LAB_00ad4c92;
        uVar12 = *puVar2;
        if (local_48 < uVar12) {
          local_48 = uVar12;
        }
        local_58 = local_58 + 1;
        piVar8 = piVar8 + 1;
        piVar11 = local_38;
      } while (local_58 < local_40);
    }
    iVar5 = local_30;
    if (local_44 == 0) {
LAB_00ad48a4:
      piVar8 = (int *)FUN_00a84f80(local_3c * 4 + 4,".\\crypto\\ec\\ec_mult.c",0x250);
      local_20 = piVar8;
      if (piVar8 == (int *)0x0) {
        uVar15 = 0x253;
        goto LAB_00ad4c7c;
      }
      local_14 = piVar8 + local_3c;
      uVar12 = 0;
      *local_14 = 0;
      if (local_40 != 0) {
        iVar5 = (int)local_5c - (int)local_38;
        piVar11 = local_38;
        local_4 = iVar5;
        do {
          *(int **)(iVar5 + (int)piVar11) = piVar8;
          uVar10 = 0;
          if (1 << ((char)*piVar11 - 1U & 0x1f) != 0) {
            do {
              iVar5 = FUN_00aa3960(param_1);
              *piVar8 = iVar5;
              if (iVar5 == 0) goto LAB_00ad4c92;
              uVar10 = uVar10 + 1;
              piVar8 = piVar8 + 1;
              iVar5 = local_4;
            } while (uVar10 < (uint)(1 << ((char)*piVar11 - 1U & 0x1f)));
          }
          uVar12 = uVar12 + 1;
          piVar11 = piVar11 + 1;
        } while (uVar12 < local_40);
      }
      if (piVar8 != local_14) {
        uVar15 = 0x266;
        uVar4 = 0x44;
        goto LAB_00ad4c83;
      }
      local_24 = FUN_00aa3960(param_1);
      if (local_24 == 0) goto LAB_00ad4c92;
      uVar12 = 0;
      if (local_40 != 0) {
        param_5 = param_5 - (int)local_5c;
        iVar5 = (int)local_38 - (int)local_5c;
        piVar8 = local_5c;
        local_4 = param_5;
        do {
          iVar6 = local_10;
          if (uVar12 < param_4) {
            iVar6 = *(int *)(param_5 + (int)piVar8);
          }
          iVar6 = FUN_00aa3a80(*(undefined4 *)*piVar8,iVar6);
          if (iVar6 == 0) goto LAB_00ad4c92;
          if (1 < *(uint *)(iVar5 + (int)piVar8)) {
            iVar6 = FUN_00aa3e60(param_1,local_24,*(undefined4 *)*piVar8,param_7);
            if (iVar6 == 0) goto LAB_00ad4c92;
            uVar10 = 1;
            param_5 = local_4;
            if (1 < (uint)(1 << ((char)*(undefined4 *)(iVar5 + (int)piVar8) - 1U & 0x1f))) {
              do {
                puVar3 = (undefined4 *)(*piVar8 + uVar10 * 4);
                iVar6 = FUN_00aa3de0(param_1,*puVar3,puVar3[-1],local_24,param_7);
                if (iVar6 == 0) goto LAB_00ad4c92;
                uVar10 = uVar10 + 1;
                param_5 = local_4;
              } while (uVar10 < (uint)(1 << ((char)*(undefined4 *)(iVar5 + (int)piVar8) - 1U & 0x1f)
                                      ));
            }
          }
          uVar12 = uVar12 + 1;
          piVar8 = piVar8 + 1;
        } while (uVar12 < local_40);
      }
      iVar5 = FUN_00aa40d0(param_1,local_3c,local_20,param_7);
      if (iVar5 == 0) goto LAB_00ad4c92;
      uVar10 = local_48 - 1;
      uVar12 = 1;
      local_2c = 1;
      if ((int)uVar10 < 0) {
LAB_00ad4c34:
        iVar5 = FUN_00aa3b50(param_1,param_2);
LAB_00ad4c69:
        if (iVar5 == 0) goto LAB_00ad4c92;
      }
      else {
        do {
          if ((uVar12 == 0) && (iVar5 = FUN_00aa3e60(param_1,param_2,param_2,param_7), iVar5 == 0))
          goto LAB_00ad4c92;
          local_58 = 0;
          if (local_54 != 0) {
            iVar5 = local_50 - (int)local_4c;
            local_4 = (int)local_4c - (int)local_5c;
            piVar8 = local_5c;
            do {
              if ((uVar10 < *(uint *)((int)(int *)(local_4 + (int)piVar8) + iVar5)) &&
                 (iVar6 = (int)*(char *)(*(int *)(local_4 + (int)piVar8) + uVar10), iVar6 != 0)) {
                bVar14 = iVar6 < 0;
                if (bVar14 != 0) {
                  iVar6 = -iVar6;
                }
                if (bVar14 != local_28) {
                  if ((local_2c == 0) && (iVar9 = FUN_00aa3ed0(param_1,param_2,param_7), iVar9 == 0)
                     ) goto LAB_00ad4c92;
                  local_28 = (uint)(local_28 == 0);
                }
                if (local_2c == 0) {
                  iVar6 = FUN_00aa3de0(param_1,param_2,param_2,
                                       *(undefined4 *)(*piVar8 + (iVar6 >> 1) * 4),param_7);
                  if (iVar6 == 0) goto LAB_00ad4c92;
                }
                else {
                  iVar6 = FUN_00aa3a80(param_2,*(undefined4 *)(*piVar8 + (iVar6 >> 1) * 4));
                  if (iVar6 == 0) goto LAB_00ad4c92;
                  local_2c = 0;
                }
              }
              local_58 = local_58 + 1;
              piVar8 = piVar8 + 1;
              uVar12 = local_2c;
            } while (local_58 < local_54);
          }
          uVar10 = uVar10 - 1;
        } while (-1 < (int)uVar10);
        if (uVar12 != 0) goto LAB_00ad4c34;
        if (local_28 != 0) {
          iVar5 = FUN_00aa3ed0(param_1,param_2,param_7);
          goto LAB_00ad4c69;
        }
      }
      local_8 = 1;
      goto LAB_00ad4c92;
    }
    if (local_30 == 0) {
      if (local_34 == (void *)0x1) goto LAB_00ad48a4;
      uVar15 = 0x1e3;
      uVar4 = 0x44;
    }
    else {
      local_58 = 0;
      if (local_34 == (void *)0x0) {
        piVar11[param_4] = *(int *)(local_30 + 0xc);
        local_1c = (void *)FUN_00ad4170(param_3,&local_58);
        if (local_1c == (void *)0x0) goto LAB_00ad4c92;
        if (local_48 < local_58) {
          if (local_58 < local_44 * local_2c) {
            uVar12 = ((local_58 - 1) + local_2c) / local_2c;
            if (*(uint *)(iVar5 + 8) < uVar12) {
              uVar15 = 0x217;
              uVar4 = 0x44;
              goto LAB_00ad4c83;
            }
            local_54 = uVar12 + param_4;
          }
          piVar8 = *(int **)(local_30 + 0x10);
          local_34 = local_1c;
          if (param_4 < local_54) {
            psVar13 = (size_t *)(local_50 + param_4 * 4);
            iVar5 = (int)local_4c - local_50;
            local_4 = (int)local_5c - local_50;
            uVar12 = param_4;
            do {
              if (uVar12 < local_54 - 1) {
                *psVar13 = local_2c;
                if (local_58 < local_2c) {
                  uVar15 = 0x228;
                  uVar4 = 0x44;
                  goto LAB_00ad4c83;
                }
                local_58 = local_58 - local_2c;
              }
              else {
                *psVar13 = local_58;
              }
              *(undefined4 *)((int)psVar13 + iVar5 + 4) = 0;
              _Dst = (void *)FUN_00a84f80(*psVar13,".\\crypto\\ec\\ec_mult.c",0x233);
              *(void **)((int)psVar13 + iVar5) = _Dst;
              if (_Dst == (void *)0x0) {
                FUN_00a7f3c0(0x10,0xbb,0x41,".\\crypto\\ec\\ec_mult.c",0x236);
                FUN_00a85120(local_1c);
                goto LAB_00ad4c92;
              }
              _memcpy(_Dst,local_34,*psVar13);
              if (local_48 < *psVar13) {
                local_48 = *psVar13;
              }
              if (*piVar8 == 0) {
                FUN_00a7f3c0(0x10,0xbb,0x44,".\\crypto\\ec\\ec_mult.c",0x240);
                FUN_00a85120(local_1c);
                goto LAB_00ad4c92;
              }
              local_34 = (void *)((int)local_34 + local_2c);
              *(int **)(local_4 + (int)psVar13) = piVar8;
              uVar12 = uVar12 + 1;
              psVar13 = psVar13 + 1;
              piVar8 = piVar8 + (int)local_14;
            } while (uVar12 < local_54);
          }
          FUN_00a85120(local_1c);
        }
        else {
          local_54 = param_4 + 1;
          local_4c[param_4] = (int)local_1c;
          local_4c[param_4 + 1] = 0;
          *(uint *)(local_50 + param_4 * 4) = local_58;
          local_5c[param_4] = *(int *)(iVar5 + 0x10);
        }
        goto LAB_00ad48a4;
      }
      uVar15 = 0x1ef;
      uVar4 = 0x44;
    }
  }
LAB_00ad4c83:
  FUN_00a7f3c0(0x10,0xbb,uVar4,".\\crypto\\ec\\ec_mult.c",uVar15);
LAB_00ad4c92:
  if (local_c != 0) {
    FUN_00aa4a20(local_c);
  }
  if (local_24 != 0) {
    FUN_00aa3a10(local_24);
  }
  if (local_38 != (int *)0x0) {
    FUN_00a85120(local_38);
  }
  if (local_50 != 0) {
    FUN_00a85120(local_50);
  }
  piVar8 = local_4c;
  if (local_4c != (int *)0x0) {
    iVar5 = *local_4c;
    piVar11 = local_4c;
    while (iVar5 != 0) {
      FUN_00a85120(iVar5);
      piVar1 = piVar11 + 1;
      piVar11 = piVar11 + 1;
      iVar5 = *piVar1;
    }
    FUN_00a85120(piVar8);
  }
  piVar8 = local_20;
  if (local_20 != (int *)0x0) {
    iVar5 = *local_20;
    piVar11 = local_20;
    while (iVar5 != 0) {
      FUN_00aa3a40(iVar5);
      piVar1 = piVar11 + 1;
      piVar11 = piVar11 + 1;
      iVar5 = *piVar1;
    }
    FUN_00a85120(piVar8);
  }
  if (local_5c != (int *)0x0) {
    FUN_00a85120(local_5c);
  }
  return local_8;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ad4d50(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  int *piVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  undefined4 uVar13;
  undefined4 uVar14;
  int *local_28;
  int local_24;
  int local_20;
  uint local_18;
  int local_c;
  undefined4 local_8;
  
  iVar2 = param_1;
  iVar8 = param_1 + 0x44;
  local_20 = 0;
  local_24 = 0;
  local_c = 0;
  local_28 = (int *)0x0;
  local_8 = 0;
  FUN_00aa3880(iVar8,FUN_00ad4080,FUN_00ad40a0,FUN_00ad4100);
  piVar3 = (int *)FUN_00ad4010();
  if (piVar3 == (int *)0x0) {
    return 0;
  }
  iVar4 = FUN_00a7fa30(param_1);
  if (iVar4 == 0) {
    uVar14 = 0x311;
    uVar13 = 0x71;
LAB_00ad50eb:
    FUN_00a7f3c0(0x10,0xbc,uVar13,".\\crypto\\ec\\ec_mult.c",uVar14);
  }
  else {
    if ((param_2 == 0) &&
       (param_2 = FUN_00aa49c0(), piVar9 = (int *)0x0, local_c = param_2, param_2 == 0))
    goto LAB_00ad5122;
    FUN_00aa4a50(param_2);
    iVar5 = FUN_00aa4ae0(param_2);
    if ((iVar5 != 0) && (iVar6 = FUN_00aa3530(param_1,iVar5,param_2), iVar6 != 0)) {
      if (*(int *)(iVar5 + 4) == 0) {
        uVar14 = 0x323;
        uVar13 = 0x72;
        goto LAB_00ad50eb;
      }
      uVar7 = FUN_00a9a920(iVar5);
      param_1 = 4;
      if (uVar7 < 2000) {
        if (uVar7 < 800) {
          if (((uVar7 < 300) && (uVar7 < 0x46)) && (4 < 2 - (uVar7 < 0x14))) {
            if (799 < uVar7) goto LAB_00ad4e71;
            if (uVar7 < 300) {
              if (uVar7 < 0x46) {
                param_1 = 2 - (uint)(uVar7 < 0x14);
              }
              else {
                param_1 = 3;
              }
            }
            else {
              param_1 = 4;
            }
          }
        }
        else {
LAB_00ad4e71:
          param_1 = 5;
        }
      }
      else {
        param_1 = 6;
      }
      uVar10 = 1 << ((char)param_1 - 1U & 0x1f);
      uVar7 = uVar7 + 7 >> 3;
      uVar11 = uVar10 * uVar7;
      local_28 = (int *)FUN_00a84f80(uVar11 * 4 + 4,".\\crypto\\ec\\ec_mult.c",0x33c);
      if (local_28 == (int *)0x0) {
        uVar14 = 0x33f;
      }
      else {
        local_28[uVar11] = 0;
        uVar12 = 0;
        if (uVar11 != 0) {
          do {
            iVar5 = FUN_00aa3960(iVar2);
            local_28[uVar12] = iVar5;
            if (iVar5 == 0) {
              uVar14 = 0x349;
              goto LAB_00ad50e4;
            }
            uVar12 = uVar12 + 1;
          } while (uVar12 < uVar11);
        }
        local_20 = FUN_00aa3960(iVar2);
        if ((local_20 != 0) && (local_24 = FUN_00aa3960(iVar2), local_24 != 0)) {
          iVar4 = FUN_00aa3a80(local_24,iVar4);
          if (iVar4 != 0) {
            local_18 = 0;
            piVar9 = local_28;
            if (uVar7 != 0) {
              do {
                iVar4 = FUN_00aa3e60(iVar2,local_20,local_24,param_2);
                if (iVar4 == 0) goto LAB_00ad50fa;
                iVar4 = FUN_00aa3a80(*piVar9,local_24);
                piVar9 = piVar9 + 1;
                if (iVar4 == 0) goto LAB_00ad50fa;
                uVar12 = 1;
                if (1 < uVar10) {
                  do {
                    iVar4 = FUN_00aa3de0(iVar2,*piVar9,local_20,piVar9[-1],param_2);
                    if (iVar4 == 0) goto LAB_00ad50fa;
                    uVar12 = uVar12 + 1;
                    piVar9 = piVar9 + 1;
                  } while (uVar12 < uVar10);
                }
                if (local_18 < uVar7 - 1) {
                  iVar4 = FUN_00aa3e60(iVar2,local_24,local_20,param_2);
                  if (iVar4 == 0) goto LAB_00ad50fa;
                  uVar12 = 2;
                  do {
                    iVar4 = FUN_00aa3e60(iVar2,local_24,local_24,param_2);
                    if (iVar4 == 0) goto LAB_00ad50fa;
                    uVar12 = uVar12 + 1;
                  } while (uVar12 < 8);
                }
                local_18 = local_18 + 1;
              } while (local_18 < uVar7);
            }
            iVar4 = FUN_00aa40d0(iVar2,uVar11,local_28,param_2);
            if (iVar4 != 0) {
              piVar3[2] = uVar7;
              *piVar3 = iVar2;
              piVar3[1] = 8;
              piVar3[3] = param_1;
              piVar3[4] = (int)local_28;
              local_28 = (int *)0x0;
              piVar3[5] = uVar11;
              iVar8 = FUN_00aa37a0(iVar8,piVar3,FUN_00ad4080,FUN_00ad40a0,FUN_00ad4100);
              if (iVar8 != 0) {
                piVar3 = (int *)0x0;
                local_8 = 1;
              }
            }
          }
          goto LAB_00ad50fa;
        }
        uVar14 = 0x350;
      }
LAB_00ad50e4:
      uVar13 = 0x41;
      goto LAB_00ad50eb;
    }
  }
LAB_00ad50fa:
  if (param_2 != 0) {
    FUN_00aa4aa0(param_2);
  }
  piVar9 = local_28;
  if (local_c != 0) {
    FUN_00aa4a20(local_c);
  }
LAB_00ad5122:
  if (piVar3 != (int *)0x0) {
    FUN_00ad40a0(piVar3);
  }
  if (piVar9 != (int *)0x0) {
    iVar8 = *piVar9;
    piVar3 = piVar9;
    while (iVar8 != 0) {
      FUN_00aa3a10(iVar8);
      piVar1 = piVar3 + 1;
      piVar3 = piVar3 + 1;
      iVar8 = *piVar1;
    }
    FUN_00a85120(piVar9);
  }
  if (local_20 != 0) {
    FUN_00aa3a10(local_20);
  }
  if (local_24 != 0) {
    FUN_00aa3a10(local_24);
  }
  return local_8;
}



bool FUN_00ad5190(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_00aa3840(*(undefined4 *)(param_1 + 0x44),FUN_00ad4080,FUN_00ad40a0,FUN_00ad4100);
  return iVar1 != 0;
}



int FUN_00ad51c0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  
  uVar1 = FUN_00ae7370();
  iVar2 = FUN_00aa3460(uVar1);
  if (iVar2 == 0) {
    return 0;
  }
  iVar3 = FUN_00aa3670(iVar2,param_1,param_2,param_3,param_4);
  if (iVar3 != 0) {
    return iVar2;
  }
  uVar4 = FUN_00a7f7d0();
  if (((uVar4 & 0xff000000) == 0x10000000) &&
     (((uVar4 & 0xfff) == 0x87 || ((uVar4 & 0xfff) == 0x88)))) {
    FUN_00a7f4b0();
    FUN_00aa4290(iVar2);
    uVar1 = FUN_00ae7370();
    iVar2 = FUN_00aa3460(uVar1);
    if (iVar2 == 0) {
      return 0;
    }
    iVar3 = FUN_00aa3670(iVar2,param_1,param_2,param_3,param_4);
    if (iVar3 != 0) {
      return iVar2;
    }
  }
  FUN_00aa4290(iVar2);
  return 0;
}



int FUN_00ad5270(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  
  uVar1 = FUN_00ae82d0();
  iVar2 = FUN_00aa3460(uVar1);
  if (iVar2 != 0) {
    iVar3 = FUN_00aa36e0(iVar2,param_1,param_2,param_3,param_4);
    if (iVar3 != 0) {
      return iVar2;
    }
    FUN_00aa4290(iVar2);
  }
  return 0;
}



undefined4 FUN_00ad52c0(int param_1,undefined4 param_2,uint *param_3)

{
  int iVar1;
  int iVar2;
  
  *param_3 = 0;
  iVar1 = FUN_00a9aa10();
  if (iVar1 != 0) {
    FUN_00a9ac50(iVar1,1);
    iVar2 = FUN_00a9ae60(param_2,iVar1);
    if (iVar2 < 1) {
      *param_3 = *param_3 | 1;
    }
    FUN_00a9aba0(iVar1,*(undefined4 *)(param_1 + 8));
    FUN_00a9b8a0(iVar1,1);
    iVar2 = FUN_00a9ae60(param_2,iVar1);
    if (-1 < iVar2) {
      *param_3 = *param_3 | 2;
    }
    FUN_00a9a9b0(iVar1);
    return 1;
  }
  return 0;
}



undefined4 FUN_00ad5762(undefined4 param_1,undefined4 param_2,byte *param_3,int *param_4)

{
  byte *pbVar1;
  byte bVar2;
  int iVar3;
  byte *pbVar4;
  byte *pbVar5;
  int iVar6;
  int unaff_EDI;
  
  iVar3 = FUN_00a925b0();
  *param_4 = iVar3;
  if (param_3 != (byte *)0x0) {
    iVar6 = *(int *)(unaff_EDI + 0x10c);
    if (iVar6 == iVar3) {
      if (0 < iVar3) {
        pbVar4 = (byte *)(unaff_EDI + 0x8c);
        pbVar5 = param_3;
        iVar6 = iVar3;
        do {
          pbVar1 = pbVar4 + 0x60;
          bVar2 = *pbVar4;
          pbVar4 = pbVar4 + 1;
          *pbVar5 = *pbVar1 ^ bVar2;
          pbVar5 = pbVar5 + 1;
          iVar6 = iVar6 + -1;
        } while (iVar6 != 0);
      }
    }
    else {
      *(undefined *)(iVar6 + 0xec + unaff_EDI) = 0x80;
      if (1 < iVar3 - iVar6) {
        _memset((void *)(iVar6 + 0xed + unaff_EDI),0,(iVar3 - iVar6) - 1);
      }
      if (0 < iVar3) {
        pbVar4 = (byte *)(unaff_EDI + 0xac);
        pbVar5 = param_3;
        iVar6 = iVar3;
        do {
          pbVar1 = pbVar4 + 0x40;
          bVar2 = *pbVar4;
          pbVar4 = pbVar4 + 1;
          *pbVar5 = *pbVar1 ^ bVar2;
          pbVar5 = pbVar5 + 1;
          iVar6 = iVar6 + -1;
        } while (iVar6 != 0);
      }
    }
    iVar6 = FUN_00a925c0();
    if (iVar6 == 0) {
      FUN_00a84330(param_3,iVar3);
      return 0;
    }
  }
  return 1;
}



undefined4 FUN_00ad5820(int param_1)

{
  undefined4 uVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  
  iVar4 = 0;
  uVar1 = FUN_00a814c0(param_1);
  iVar2 = FUN_00a7fa30(uVar1);
  if ((iVar2 == 0x197) && (piVar3 = (int *)(param_1 + 0x5c), *(int *)(param_1 + 0x5c) != 0)) {
    do {
      piVar3 = piVar3 + 1;
      iVar4 = iVar4 + 1;
    } while (*piVar3 != 0);
    if (iVar4 == 4) {
      return 0x2ab;
    }
    if (iVar4 == 2) {
      return 0x2aa;
    }
  }
  return 0;
}



undefined4 FUN_00ad5870(int param_1,int *param_2)

{
  int iVar1;
  
  if (param_1 != 0) {
    iVar1 = FUN_00a814c0(param_1);
    if ((((*(undefined **)(iVar1 + 0x18) == &LAB_00ae7540) && (*(int *)(param_1 + 0x5c) != 0)) &&
        (*(int *)(param_1 + 0x60) != 0)) && (*(int *)(param_1 + 100) == 0)) {
      if (param_2 != (int *)0x0) {
        *param_2 = *(int *)(param_1 + 0x60);
      }
      return 1;
    }
    FUN_00a7f3c0(0x10,0xc2,0x42,".\\crypto\\ec\\ec_asn1.c",0x5f);
  }
  return 0;
}



undefined4 FUN_00ad58d0(int param_1,int *param_2,undefined4 *param_3,undefined4 *param_4)

{
  int iVar1;
  
  if (param_1 != 0) {
    iVar1 = FUN_00a814c0(param_1);
    if ((((*(undefined **)(iVar1 + 0x18) == &LAB_00ae7540) && (*(int *)(param_1 + 0x5c) != 0)) &&
        (*(int *)(param_1 + 0x60) != 0)) &&
       (((*(int *)(param_1 + 100) != 0 && (*(int *)(param_1 + 0x68) != 0)) &&
        (*(int *)(param_1 + 0x6c) == 0)))) {
      if (param_2 != (int *)0x0) {
        *param_2 = *(int *)(param_1 + 0x68);
      }
      if (param_3 != (undefined4 *)0x0) {
        *param_3 = *(undefined4 *)(param_1 + 100);
      }
      if (param_4 != (undefined4 *)0x0) {
        *param_4 = *(undefined4 *)(param_1 + 0x60);
      }
      return 1;
    }
    FUN_00a7f3c0(0x10,0xc1,0x42,".\\crypto\\ec\\ec_asn1.c",0x71);
  }
  return 0;
}



void FUN_00ad59e0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00dc5020);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __fastcall FUN_00ad5a00(int *param_1)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int unaff_EBX;
  int iVar6;
  undefined4 uVar7;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  
  iVar6 = 0;
  local_10 = 0;
  if ((unaff_EBX == 0) || (param_1 == (int *)0x0)) {
    return 0;
  }
  if (*param_1 != 0) {
    FUN_00a90760(*param_1);
  }
  if (param_1[1] != 0) {
    FUN_00a889d0(param_1[1]);
  }
  uVar1 = FUN_00a814c0();
  iVar2 = FUN_00a7fa30(uVar1);
  iVar3 = FUN_00a87490(iVar2);
  *param_1 = iVar3;
  if (iVar3 == 0) {
    uVar1 = 0x13c;
LAB_00ad5a66:
    uVar7 = 8;
LAB_00ad5a6d:
    FUN_00a7f3c0(0x10,0x9a,uVar7,".\\crypto\\ec\\ec_asn1.c",uVar1);
    return 0;
  }
  if (iVar2 == 0x196) {
    iVar6 = FUN_00a9aa10();
    if (iVar6 == 0) {
      FUN_00a7f3c0(0x10,0x9a,0x41,".\\crypto\\ec\\ec_asn1.c",0x144);
      goto LAB_00ad5c84;
    }
    iVar2 = FUN_00aa36a0();
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x10,0x9a,0x10,".\\crypto\\ec\\ec_asn1.c",0x14a);
      goto LAB_00ad5c84;
    }
    iVar2 = FUN_00a9dbd0(iVar6,0);
    param_1[1] = iVar2;
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x10,0x9a,0xd,".\\crypto\\ec\\ec_asn1.c",0x151);
      goto LAB_00ad5c84;
    }
  }
  else {
    puVar4 = (undefined4 *)FUN_00a8bf10(&DAT_00dc4dcc);
    param_1[1] = (int)puVar4;
    if (puVar4 == (undefined4 *)0x0) {
      FUN_00a7f3c0(0x10,0x9a,0x41,".\\crypto\\ec\\ec_asn1.c",0x165);
      return 0;
    }
    uVar1 = FUN_00aa3760();
    *puVar4 = uVar1;
    iVar2 = FUN_00ad5820();
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x10,0x9a,0x10,".\\crypto\\ec\\ec_asn1.c",0x16f);
      return 0;
    }
    iVar3 = FUN_00a87490(iVar2);
    puVar4[1] = iVar3;
    if (iVar3 == 0) {
      uVar1 = 0x175;
      goto LAB_00ad5a66;
    }
    if (iVar2 == 0x2aa) {
      iVar2 = FUN_00ad5870();
      if (iVar2 == 0) {
        return 0;
      }
      iVar2 = FUN_00a887c0();
      puVar4[2] = iVar2;
      if (iVar2 == 0) {
        uVar1 = 0x183;
        uVar7 = 0x41;
        goto LAB_00ad5a6d;
      }
      iVar2 = FUN_00a9da80(iVar2,local_c);
      if (iVar2 == 0) {
        uVar1 = 0x189;
        uVar7 = 0xd;
        goto LAB_00ad5a6d;
      }
    }
    else if (iVar2 == 0x2ab) {
      iVar2 = FUN_00ad58d0();
      if (iVar2 == 0) {
        return 0;
      }
      puVar5 = (undefined4 *)FUN_00a8bf10(&DAT_00dc4cfc);
      puVar4[2] = puVar5;
      if (puVar5 == (undefined4 *)0x0) {
        uVar1 = 0x197;
        uVar7 = 0x41;
        goto LAB_00ad5a6d;
      }
      *puVar5 = local_c;
      *(undefined4 *)(puVar4[2] + 4) = local_8;
      *(undefined4 *)(puVar4[2] + 8) = 0xad5a0a;
    }
    else {
      iVar2 = FUN_00a88910();
      puVar4[2] = iVar2;
      if (iVar2 == 0) {
        uVar1 = 0x1a6;
        uVar7 = 0x41;
        goto LAB_00ad5a6d;
      }
    }
  }
  local_10 = 1;
LAB_00ad5c84:
  if (iVar6 != 0) {
    FUN_00a9a9b0(iVar6);
  }
  return local_10;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ad5cd0(int param_1,int *param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  undefined *puVar4;
  int iVar5;
  undefined4 uVar6;
  undefined local_19;
  int local_18;
  undefined *local_14;
  undefined *local_10;
  undefined *local_c;
  int local_8;
  undefined4 local_4;
  
  local_4 = 0;
  local_18 = 0;
  local_10 = (undefined *)0x0;
  local_c = (undefined *)0x0;
  local_19 = 0;
  if ((((param_1 == 0) || (param_2 == (int *)0x0)) || (*param_2 == 0)) || (param_2[1] == 0)) {
    return 0;
  }
  iVar1 = FUN_00a9aa10();
  local_8 = iVar1;
  if ((iVar1 == 0) || (local_18 = FUN_00a9aa10(), local_18 == 0)) {
    FUN_00a7f3c0(0x10,0x99,0x41,".\\crypto\\ec\\ec_asn1.c",0x1c2);
    goto LAB_00ad5e6a;
  }
  uVar2 = FUN_00a814c0(param_1);
  iVar3 = FUN_00a7fa30(uVar2);
  if (iVar3 == 0x196) {
    iVar3 = FUN_00aa36a0(param_1,0,iVar1,local_18);
    if (iVar3 != 0) {
LAB_00ad5da9:
      iVar3 = FUN_00a9a920(iVar1);
      iVar5 = (int)(iVar3 + 7 + (iVar3 + 7 >> 0x1f & 7U)) >> 3;
      iVar3 = FUN_00a9a920(local_18);
      iVar3 = (int)(iVar3 + 7 + (iVar3 + 7 >> 0x1f & 7U)) >> 3;
      if (iVar5 == 0) {
        iVar1 = 1;
        puVar4 = &local_19;
LAB_00ad5e98:
        local_14 = puVar4;
        if (iVar3 == 0) {
          puVar4 = &local_19;
          iVar3 = 1;
        }
        else {
          puVar4 = (undefined *)FUN_00a84f80(iVar3,".\\crypto\\ec\\ec_asn1.c",0x1fc);
          local_c = puVar4;
          if (puVar4 == (undefined *)0x0) {
            uVar2 = 0x1ff;
            uVar6 = 0x41;
            goto LAB_00ad5e33;
          }
          iVar3 = FUN_00a9ad90(local_18,puVar4);
          if (iVar3 == 0) {
            uVar2 = 0x204;
            goto LAB_00ad5e2c;
          }
        }
        iVar1 = FUN_00a90c30(*param_2,local_14,iVar1);
        if ((iVar1 == 0) || (iVar1 = FUN_00a90c30(param_2[1],puVar4,iVar3), iVar1 == 0)) {
          uVar2 = 0x20e;
          uVar6 = 0xd;
          goto LAB_00ad5e33;
        }
        if (*(int *)(param_1 + 0x3c) == 0) {
          if (param_2[2] != 0) {
            FUN_00a88860(param_2[2]);
            param_2[2] = 0;
          }
        }
        else {
          if (param_2[2] == 0) {
            iVar1 = FUN_00a88850();
            param_2[2] = iVar1;
            if (iVar1 == 0) {
              uVar2 = 0x218;
              uVar6 = 0x41;
              goto LAB_00ad5e33;
            }
          }
          *(uint *)(param_2[2] + 0xc) = *(uint *)(param_2[2] + 0xc) & 0xfffffff0;
          *(uint *)(param_2[2] + 0xc) = *(uint *)(param_2[2] + 0xc) | 8;
          iVar1 = thunk_FUN_00a90c30(param_2[2],*(undefined4 *)(param_1 + 0x3c),
                                     *(undefined4 *)(param_1 + 0x40));
          if (iVar1 == 0) {
            uVar2 = 0x220;
            uVar6 = 0xd;
            goto LAB_00ad5e33;
          }
        }
        local_4 = 1;
      }
      else {
        puVar4 = (undefined *)FUN_00a84f80(iVar5,".\\crypto\\ec\\ec_asn1.c",0x1e6);
        local_10 = puVar4;
        if (puVar4 == (undefined *)0x0) {
          uVar2 = 0x1e9;
          uVar6 = 0x41;
        }
        else {
          iVar1 = FUN_00a9ad90(iVar1,puVar4);
          if (iVar1 != 0) goto LAB_00ad5e98;
          uVar2 = 0x1ee;
LAB_00ad5e2c:
          uVar6 = 3;
        }
LAB_00ad5e33:
        FUN_00a7f3c0(0x10,0x99,uVar6,".\\crypto\\ec\\ec_asn1.c",uVar2);
      }
      if (local_10 != (undefined *)0x0) {
        FUN_00a85120(local_10);
      }
      iVar1 = local_8;
      if (local_c != (undefined *)0x0) {
        FUN_00a85120(local_c);
        iVar1 = local_8;
      }
      goto LAB_00ad5e6a;
    }
    uVar2 = 0x1cd;
  }
  else {
    iVar3 = FUN_00aa3720(param_1,0,iVar1,local_18,0);
    if (iVar3 != 0) goto LAB_00ad5da9;
    uVar2 = 0x1d6;
  }
  FUN_00a7f3c0(0x10,0x99,0x10,".\\crypto\\ec\\ec_asn1.c",uVar2);
LAB_00ad5e6a:
  if (iVar1 != 0) {
    FUN_00a9a9b0(iVar1);
  }
  if (local_18 != 0) {
    FUN_00a9a9b0(local_18);
  }
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 * __thiscall FUN_00ad5ff0(undefined4 param_1_00,undefined4 *param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  int local_8;
  
  local_8 = 0;
  iVar1 = FUN_00a9aa10();
  if (iVar1 == 0) {
    FUN_00a7f3c0(0x10,0x9b,0x41,".\\crypto\\ec\\ec_asn1.c",0x247);
  }
  else {
    puVar4 = param_1;
    if (param_1 == (undefined4 *)0x0) {
      puVar4 = (undefined4 *)FUN_00a8bf10(&DAT_00dc4ee4);
      if (puVar4 != (undefined4 *)0x0) goto LAB_00ad6061;
      uVar6 = 0x250;
      uVar5 = 0x41;
    }
    else {
LAB_00ad6061:
      *puVar4 = 1;
      iVar2 = FUN_00ad5a00();
      if (iVar2 == 0) {
        uVar6 = 0x25d;
        uVar5 = 0x10;
      }
      else {
        iVar2 = FUN_00ad5cd0(param_1_00,puVar4[2]);
        if (iVar2 == 0) {
          uVar6 = 0x264;
          uVar5 = 0x10;
        }
        else {
          iVar2 = FUN_00a7fa30(param_1_00);
          if (iVar2 == 0) {
            uVar6 = 0x26b;
            uVar5 = 0x71;
          }
          else {
            uVar6 = FUN_00aa35e0(param_1_00);
            iVar3 = FUN_00ae8f00(param_1_00,iVar2,uVar6,0,0,0);
            if (iVar3 == 0) {
              uVar6 = 0x274;
              uVar5 = 0x10;
            }
            else {
              local_8 = FUN_00a84f80(iVar3,".\\crypto\\ec\\ec_asn1.c",0x277);
              if (local_8 == 0) {
                uVar6 = 0x279;
                uVar5 = 0x41;
              }
              else {
                iVar2 = FUN_00ae8f00(param_1_00,iVar2,uVar6,local_8,iVar3,0);
                if (iVar2 == 0) {
                  uVar6 = 0x27e;
                  uVar5 = 0x10;
                }
                else {
                  if (puVar4[3] == 0) {
                    iVar2 = FUN_00a888d0();
                    puVar4[3] = iVar2;
                    if (iVar2 == 0) {
                      uVar6 = 0x283;
                      uVar5 = 0x41;
                      goto LAB_00ad61fb;
                    }
                  }
                  iVar2 = thunk_FUN_00a90c30(puVar4[3],local_8,iVar3);
                  if (iVar2 == 0) {
                    uVar6 = 0x288;
                  }
                  else {
                    iVar2 = FUN_00aa3530(param_1_00,iVar1,0);
                    if (iVar2 == 0) {
                      uVar6 = 0x28f;
                      uVar5 = 0x10;
                      goto LAB_00ad61fb;
                    }
                    iVar2 = FUN_00a9dbd0(iVar1,puVar4[4]);
                    puVar4[4] = iVar2;
                    if (iVar2 == 0) {
                      uVar6 = 0x295;
                    }
                    else {
                      iVar2 = FUN_00aa3560(param_1_00,iVar1,0);
                      if (iVar2 == 0) goto LAB_00ad6225;
                      iVar2 = FUN_00a9dbd0(iVar1,puVar4[5]);
                      puVar4[5] = iVar2;
                      if (iVar2 != 0) goto LAB_00ad6225;
                      uVar6 = 0x29f;
                    }
                  }
                  uVar5 = 0xd;
                }
              }
            }
          }
        }
      }
    }
LAB_00ad61fb:
    FUN_00a7f3c0(0x10,0x9b,uVar5,".\\crypto\\ec\\ec_asn1.c",uVar6);
    if ((puVar4 != (undefined4 *)0x0) && (param_1 == (undefined4 *)0x0)) {
      FUN_00a8c2c0(puVar4,&DAT_00dc4ee4);
    }
  }
  puVar4 = (undefined4 *)0x0;
LAB_00ad6225:
  if (iVar1 != 0) {
    FUN_00a9a9b0(iVar1);
  }
  if (local_8 != 0) {
    FUN_00a85120(local_8);
  }
  return puVar4;
}



int * __fastcall FUN_00ad6260(int *param_1)

{
  int iVar1;
  
  if (param_1 == (int *)0x0) {
    param_1 = (int *)FUN_00a8bf10(&DAT_00dc4fb4);
    if (param_1 == (int *)0x0) {
      FUN_00a7f3c0(0x10,0x9c,0x41,".\\crypto\\ec\\ec_asn1.c",0x2be);
      return (int *)0x0;
    }
  }
  else if ((*param_1 == 0) && (param_1[1] != 0)) {
    FUN_00a90760(param_1[1]);
  }
  else if ((*param_1 == 1) && (param_1[1] != 0)) {
    FUN_00a8c2c0(param_1[1],&DAT_00dc4ee4);
  }
  iVar1 = FUN_00aa35c0();
  if (iVar1 == 0) {
    *param_1 = 1;
    iVar1 = FUN_00ad5ff0(0);
  }
  else {
    iVar1 = FUN_00aa35a0();
    if (iVar1 == 0) goto LAB_00ad630c;
    *param_1 = 0;
    iVar1 = FUN_00a87490(iVar1);
  }
  param_1[1] = iVar1;
  if (iVar1 != 0) {
    return param_1;
  }
LAB_00ad630c:
  FUN_00a8c2c0(param_1,&DAT_00dc4fb4);
  return (int *)0x0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int __fastcall FUN_00ad6330(int param_1)

{
  int *piVar1;
  undefined4 *puVar2;
  int *piVar3;
  size_t *psVar4;
  int iVar5;
  void *_Dst;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  iVar6 = 0;
  piVar1 = *(int **)(param_1 + 4);
  local_c = 0;
  local_10 = 0;
  local_8 = 0;
  if (((piVar1 == (int *)0x0) || (*piVar1 == 0)) || (piVar1[1] == 0)) {
    FUN_00a7f3c0(0x10,0x9d,0x73,".\\crypto\\ec\\ec_asn1.c",0x2f6);
  }
  else {
    piVar1 = *(int **)(param_1 + 8);
    if (((piVar1 == (int *)0x0) || (*piVar1 == 0)) ||
       ((*(int *)(*piVar1 + 8) == 0 || ((piVar1[1] == 0 || (*(int *)(piVar1[1] + 8) == 0)))))) {
      FUN_00a7f3c0(0x10,0x9d,0x73,".\\crypto\\ec\\ec_asn1.c",0x2ff);
    }
    else {
      local_c = FUN_00a9acb0(((undefined4 *)**(int **)(param_1 + 8))[2],
                             *(undefined4 *)**(int **)(param_1 + 8),0);
      if (local_c == 0) {
        uVar8 = 0x305;
      }
      else {
        puVar2 = *(undefined4 **)(*(int *)(param_1 + 8) + 4);
        local_10 = FUN_00a9acb0(puVar2[2],*puVar2,0);
        if (local_10 != 0) {
          iVar7 = FUN_00a877e0(**(undefined4 **)(param_1 + 4));
          if (iVar7 == 0x197) {
            piVar1 = *(int **)(*(int *)(param_1 + 4) + 4);
            local_4 = *piVar1;
            if (local_4 < 0x296) {
              iVar6 = FUN_00a9aa10();
              if (iVar6 == 0) {
                FUN_00a7f3c0(0x10,0x9d,0x41,".\\crypto\\ec\\ec_asn1.c",0x326);
              }
              else {
                iVar7 = FUN_00a877e0(piVar1[1]);
                if (iVar7 == 0x2aa) {
                  if (piVar1[2] == 0) {
                    FUN_00a7f3c0(0x10,0x9d,0x73,".\\crypto\\ec\\ec_asn1.c",0x333);
                  }
                  else {
                    iVar7 = FUN_00a9db70(piVar1[2]);
                    if ((iVar7 < *piVar1) && (0 < iVar7)) {
                      iVar5 = FUN_00a9af00(iVar6,*piVar1);
                      if (iVar5 != 0) {
LAB_00ad6599:
                        iVar7 = FUN_00a9af00(iVar6,iVar7);
                        if ((iVar7 != 0) && (iVar7 = FUN_00a9af00(iVar6,0), iVar7 != 0)) {
                          iVar7 = FUN_00ad5270(iVar6,local_c,local_10,0);
                          goto LAB_00ad66f9;
                        }
                      }
                    }
                    else {
                      FUN_00a7f3c0(0x10,0x9d,0x89,".\\crypto\\ec\\ec_asn1.c",0x33b);
                    }
                  }
                }
                else if (iVar7 == 0x2ab) {
                  piVar3 = (int *)piVar1[2];
                  if (piVar3 == (int *)0x0) {
                    FUN_00a7f3c0(0x10,0x9d,0x73,".\\crypto\\ec\\ec_asn1.c",0x34e);
                  }
                  else if ((((piVar3[2] < *piVar1) && (piVar3[1] < piVar3[2])) &&
                           (*piVar3 < piVar3[1])) && (0 < *piVar3)) {
                    iVar7 = FUN_00a9af00(iVar6,*piVar1);
                    if (((iVar7 != 0) && (iVar7 = FUN_00a9af00(iVar6,*piVar3), iVar7 != 0)) &&
                       (iVar7 = FUN_00a9af00(iVar6,piVar3[1]), iVar7 != 0)) {
                      iVar7 = piVar3[2];
                      goto LAB_00ad6599;
                    }
                  }
                  else {
                    FUN_00a7f3c0(0x10,0x9d,0x84,".\\crypto\\ec\\ec_asn1.c",0x354);
                  }
                }
                else if (iVar7 == 0x2a9) {
                  FUN_00a7f3c0(0x10,0x9d,0x7e,".\\crypto\\ec\\ec_asn1.c",0x361);
                }
                else {
                  FUN_00a7f3c0(0x10,0x9d,0x73,".\\crypto\\ec\\ec_asn1.c",0x366);
                }
              }
            }
            else {
              FUN_00a7f3c0(0x10,0x9d,0x8f,".\\crypto\\ec\\ec_asn1.c",800);
            }
          }
          else if (iVar7 == 0x196) {
            iVar7 = *(int *)(*(int *)(param_1 + 4) + 4);
            if (iVar7 == 0) {
              FUN_00a7f3c0(0x10,0x9d,0x73,".\\crypto\\ec\\ec_asn1.c",0x374);
            }
            else {
              iVar6 = FUN_00a9dcb0(iVar7,0);
              if (iVar6 == 0) {
                FUN_00a7f3c0(0x10,0x9d,0xd,".\\crypto\\ec\\ec_asn1.c",0x37a);
              }
              else if ((*(int *)(iVar6 + 0xc) == 0) && (*(int *)(iVar6 + 4) != 0)) {
                local_4 = FUN_00a9a920(iVar6);
                if (local_4 < 0x296) {
                  iVar7 = FUN_00ad51c0(iVar6,local_c,local_10,0);
LAB_00ad66f9:
                  if (iVar7 == 0) {
                    FUN_00a7f3c0(0x10,0x9d,0x10,".\\crypto\\ec\\ec_asn1.c",0x396);
                  }
                  else {
                    if (*(int *)(*(int *)(param_1 + 8) + 8) == 0) {
LAB_00ad678f:
                      if (((*(int *)(param_1 + 0x10) == 0) || (*(int *)(param_1 + 0xc) == 0)) ||
                         (*(int *)(*(int *)(param_1 + 0xc) + 8) == 0)) {
                        uVar9 = 0x3ac;
                        uVar8 = 0x73;
                        goto LAB_00ad685b;
                      }
                      local_8 = FUN_00aa3960(iVar7);
                      if (local_8 != 0) {
                        FUN_00aa35d0(iVar7,**(byte **)(*(int *)(param_1 + 0xc) + 8) & 0xfe);
                        iVar5 = FUN_00ae8fb0(iVar7,local_8,(*(undefined4 **)(param_1 + 0xc))[2],
                                             **(undefined4 **)(param_1 + 0xc),0);
                        if (iVar5 == 0) {
                          uVar9 = 0x3ba;
                          uVar8 = 0x10;
                        }
                        else {
                          local_c = FUN_00a9dcb0(*(undefined4 *)(param_1 + 0x10),local_c);
                          if (local_c == 0) {
                            uVar9 = 0x3c1;
                            uVar8 = 0xd;
                          }
                          else {
                            if ((*(int *)(local_c + 0xc) == 0) && (*(int *)(local_c + 4) != 0)) {
                              iVar5 = FUN_00a9a920(local_c);
                              if (iVar5 <= local_4 + 1) {
                                if (*(int *)(param_1 + 0x14) == 0) {
                                  FUN_00a9a9b0(local_10);
                                  local_10 = 0;
                                }
                                else {
                                  local_10 = FUN_00a9dcb0(*(int *)(param_1 + 0x14),local_10);
                                  if (local_10 == 0) {
                                    uVar9 = 0x3db;
                                    uVar8 = 0xd;
                                    goto LAB_00ad685b;
                                  }
                                }
                                iVar5 = FUN_00aa4520(iVar7,local_8,local_c,local_10);
                                if (iVar5 != 0) goto LAB_00ad687d;
                                uVar9 = 0x3e1;
                                uVar8 = 0x10;
                                goto LAB_00ad685b;
                              }
                              uVar9 = 0x3cb;
                            }
                            else {
                              uVar9 = 0x3c6;
                            }
                            uVar8 = 0x7a;
                          }
                        }
                        goto LAB_00ad685b;
                      }
                    }
                    else {
                      if (*(int *)(iVar7 + 0x3c) != 0) {
                        FUN_00a85120(*(int *)(iVar7 + 0x3c));
                      }
                      _Dst = (void *)FUN_00a84f80(**(undefined4 **)(*(int *)(param_1 + 8) + 8),
                                                  ".\\crypto\\ec\\ec_asn1.c",0x39f);
                      *(void **)(iVar7 + 0x3c) = _Dst;
                      if (_Dst != (void *)0x0) {
                        psVar4 = *(size_t **)(*(int *)(param_1 + 8) + 8);
                        _memcpy(_Dst,(void *)psVar4[2],*psVar4);
                        *(undefined4 *)(iVar7 + 0x40) = **(undefined4 **)(*(int *)(param_1 + 8) + 8)
                        ;
                        goto LAB_00ad678f;
                      }
                      uVar9 = 0x3a2;
                      uVar8 = 0x41;
LAB_00ad685b:
                      FUN_00a7f3c0(0x10,0x9d,uVar8,".\\crypto\\ec\\ec_asn1.c",uVar9);
                    }
                    FUN_00aa4290(iVar7);
                  }
                }
                else {
                  FUN_00a7f3c0(0x10,0x9d,0x8f,".\\crypto\\ec\\ec_asn1.c",0x387);
                }
              }
              else {
                FUN_00a7f3c0(0x10,0x9d,0x67,".\\crypto\\ec\\ec_asn1.c",0x380);
              }
            }
          }
          else {
            FUN_00a7f3c0(0x10,0x9d,0x67,".\\crypto\\ec\\ec_asn1.c",0x390);
          }
          goto LAB_00ad6873;
        }
        uVar8 = 0x30b;
      }
      FUN_00a7f3c0(0x10,0x9d,3,".\\crypto\\ec\\ec_asn1.c",uVar8);
    }
  }
LAB_00ad6873:
  iVar7 = 0;
LAB_00ad687d:
  if (iVar6 != 0) {
    FUN_00a9a9b0(iVar6);
  }
  if (local_c != 0) {
    FUN_00a9a9b0(local_c);
  }
  if (local_10 != 0) {
    FUN_00a9a9b0(local_10);
  }
  if (local_8 != 0) {
    FUN_00aa3a10(local_8);
  }
  return iVar7;
}



int FUN_00ad69d0(int *param_1)

{
  undefined4 uVar1;
  int iVar2;
  
  if (param_1 == (int *)0x0) {
    FUN_00a7f3c0(0x10,0x9e,0x7c,".\\crypto\\ec\\ec_asn1.c",0x401);
    return 0;
  }
  iVar2 = *param_1;
  if (iVar2 == 0) {
    uVar1 = FUN_00a877e0(param_1[1]);
    iVar2 = FUN_00aa5210(uVar1);
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x10,0x9e,0x77,".\\crypto\\ec\\ec_asn1.c",0x40b);
      return 0;
    }
    FUN_00aa35b0(iVar2,1);
    return iVar2;
  }
  if (iVar2 != 1) {
    if (iVar2 != 2) {
      FUN_00a7f3c0(0x10,0x9e,0x73,".\\crypto\\ec\\ec_asn1.c",0x421);
    }
    return 0;
  }
  iVar2 = FUN_00ad6330();
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x10,0x9e,0x10,".\\crypto\\ec\\ec_asn1.c",0x416);
    return 0;
  }
  FUN_00aa35b0(iVar2,0);
  return iVar2;
}



int FUN_00ad6ab0(int *param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_00a8ae20(0,param_2,param_3,&DAT_00dc4fb4);
  if (iVar1 == 0) {
    FUN_00a7f3c0(0x10,0x91,0x75,".\\crypto\\ec\\ec_asn1.c",0x431);
    FUN_00a8c2c0(0,&DAT_00dc4fb4);
    return 0;
  }
  iVar2 = FUN_00ad69d0(iVar1);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x10,0x91,0x7f,".\\crypto\\ec\\ec_asn1.c",0x438);
    FUN_00a8c2c0(iVar1,&DAT_00dc4fb4);
    return 0;
  }
  if (param_1 != (int *)0x0) {
    if (*param_1 != 0) {
      FUN_00aa4290(*param_1);
    }
    *param_1 = iVar2;
  }
  FUN_00a8c2c0(iVar1,&DAT_00dc4fb4);
  return iVar2;
}



int FUN_00ad6b70(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_00ad6260();
  if (iVar1 == 0) {
    FUN_00a7f3c0(0x10,0xbf,0x78,".\\crypto\\ec\\ec_asn1.c",0x44d);
    return 0;
  }
  iVar2 = FUN_00a8ba30(iVar1,param_2,&DAT_00dc4fb4);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x10,0xbf,0x79,".\\crypto\\ec\\ec_asn1.c",0x452);
    FUN_00a8c2c0(iVar1,&DAT_00dc4fb4);
    return 0;
  }
  FUN_00a8c2c0(iVar1,&DAT_00dc4fb4);
  return iVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 * FUN_00ad6c00(int *param_1,undefined4 param_2,undefined4 param_3)

{
  byte *pbVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 *local_4;
  
  local_4 = (undefined4 *)0x0;
  local_4 = (undefined4 *)FUN_00a8bf10(&DAT_00dc5020);
  if (local_4 == (undefined4 *)0x0) {
    FUN_00a7f3c0(0x10,0x92,0x41,".\\crypto\\ec\\ec_asn1.c",0x464);
    return (undefined4 *)0x0;
  }
  local_4 = (undefined4 *)FUN_00a8ae20(&local_4,param_2,param_3,&DAT_00dc5020);
  if (local_4 == (undefined4 *)0x0) {
    FUN_00a7f3c0(0x10,0x92,0x10,".\\crypto\\ec\\ec_asn1.c",0x46a);
    FUN_00a8c2c0(local_4,&DAT_00dc5020);
    return (undefined4 *)0x0;
  }
  if ((param_1 == (int *)0x0) || (puVar2 = (undefined4 *)*param_1, puVar2 == (undefined4 *)0x0)) {
    puVar2 = (undefined4 *)FUN_00a8e8a0();
    if (puVar2 != (undefined4 *)0x0) {
      if (param_1 != (int *)0x0) {
        *param_1 = (int)puVar2;
      }
      goto LAB_00ad6cd7;
    }
    FUN_00a7f3c0(0x10,0x92,0x41,".\\crypto\\ec\\ec_asn1.c",0x474);
  }
  else {
LAB_00ad6cd7:
    if (local_4[2] != 0) {
      if (puVar2[1] != 0) {
        FUN_00aa4290(puVar2[1]);
      }
      uVar3 = FUN_00ad69d0(local_4[2]);
      puVar2[1] = uVar3;
    }
    if (puVar2[1] == 0) {
      uVar5 = 0x486;
      uVar3 = 0x10;
    }
    else {
      *puVar2 = *local_4;
      if (local_4[1] == 0) {
        uVar5 = 0x49c;
        uVar3 = 0x7d;
      }
      else {
        iVar4 = FUN_00a9acb0(((undefined4 *)local_4[1])[2],*(undefined4 *)local_4[1],puVar2[3]);
        puVar2[3] = iVar4;
        if (iVar4 == 0) {
          uVar5 = 0x495;
          uVar3 = 3;
        }
        else {
          if (local_4[3] == 0) goto LAB_00ad6dfc;
          if (puVar2[2] != 0) {
            FUN_00aa3a40(puVar2[2]);
          }
          iVar4 = FUN_00aa3960(puVar2[1]);
          puVar2[2] = iVar4;
          if (iVar4 == 0) {
            uVar5 = 0x4aa;
            uVar3 = 0x10;
          }
          else {
            pbVar1 = (byte *)((undefined4 *)local_4[3])[2];
            uVar3 = *(undefined4 *)local_4[3];
            puVar2[5] = *pbVar1 & 0xfffffffe;
            iVar4 = FUN_00ae8fb0(puVar2[1],iVar4,pbVar1,uVar3,0);
            if (iVar4 != 0) goto LAB_00ad6dfc;
            uVar5 = 0x4b4;
            uVar3 = 0x10;
          }
        }
      }
    }
    FUN_00a7f3c0(0x10,0x92,uVar3,".\\crypto\\ec\\ec_asn1.c",uVar5);
    FUN_00a8e900(puVar2);
  }
  puVar2 = (undefined4 *)0x0;
LAB_00ad6dfc:
  if (local_4 != (undefined4 *)0x0) {
    FUN_00a8c2c0(local_4,&DAT_00dc5020);
  }
  return puVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00ad6e20(undefined4 *param_1,undefined4 param_2)

{
  byte bVar1;
  undefined4 *puVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  uint local_8;
  
  local_8 = 0;
  bVar1 = 0;
  if (((param_1 == (undefined4 *)0x0) || (param_1[1] == 0)) || (param_1[3] == 0)) {
    FUN_00a7f3c0(0x10,0xc0,0x43,".\\crypto\\ec\\ec_asn1.c",0x4d2);
    return 0;
  }
  puVar2 = (undefined4 *)FUN_00a8bf10(&DAT_00dc5020);
  if (puVar2 == (undefined4 *)0x0) {
    FUN_00a7f3c0(0x10,0xc0,0x41,".\\crypto\\ec\\ec_asn1.c",0x4d9);
    goto LAB_00ad7015;
  }
  *puVar2 = *param_1;
  iVar3 = FUN_00a9a920(param_1[3]);
  uVar7 = (int)(iVar3 + 7 + (iVar3 + 7 >> 0x1f & 7U)) >> 3;
  iVar4 = FUN_00a84f80(uVar7,".\\crypto\\ec\\ec_asn1.c",0x4e0);
  iVar3 = iVar4;
  if (iVar4 == 0) {
    uVar9 = 0x4e4;
    uVar8 = 0x41;
LAB_00ad6ff8:
    FUN_00a7f3c0(0x10,0xc0,uVar8,".\\crypto\\ec\\ec_asn1.c",uVar9);
    iVar4 = iVar3;
  }
  else {
    iVar5 = FUN_00a9ad90(param_1[3],iVar4);
    if (iVar5 == 0) {
      uVar9 = 0x4ea;
      uVar8 = 3;
      goto LAB_00ad6ff8;
    }
    iVar5 = FUN_00a90c30(puVar2[1],iVar4,uVar7);
    if (iVar5 == 0) {
      uVar9 = 0x4f0;
      uVar8 = 0xd;
      goto LAB_00ad6ff8;
    }
    if ((*(byte *)(param_1 + 4) & 1) != 0) {
LAB_00ad6f55:
      if ((*(byte *)(param_1 + 4) & 2) == 0) {
        iVar5 = FUN_00a90d30(3);
        puVar2[3] = iVar5;
        if (iVar5 == 0) {
          uVar9 = 0x504;
          uVar8 = 0x41;
        }
        else {
          uVar6 = FUN_00ae8f00(param_1[1],param_1[2],param_1[5],0,0,0);
          if ((uVar7 < uVar6) &&
             (iVar3 = FUN_00a84ff0(iVar4,uVar6,".\\crypto\\ec\\ec_asn1.c",0x50d), uVar7 = uVar6,
             iVar3 == 0)) {
            uVar9 = 0x510;
            uVar8 = 0x41;
            iVar3 = iVar4;
          }
          else {
            iVar4 = FUN_00ae8f00(param_1[1],param_1[2],param_1[5],iVar3,uVar7,0);
            if (iVar4 == 0) {
              uVar9 = 0x51a;
              goto LAB_00ad6ff1;
            }
            *(uint *)(puVar2[3] + 0xc) = *(uint *)(puVar2[3] + 0xc) & 0xfffffff0;
            *(uint *)(puVar2[3] + 0xc) = *(uint *)(puVar2[3] + 0xc) | 8;
            iVar4 = FUN_00a90c30(puVar2[3],iVar3,uVar7);
            if (iVar4 != 0) goto LAB_00ad7068;
            uVar9 = 0x523;
            uVar8 = 0xd;
          }
        }
      }
      else {
LAB_00ad7068:
        local_8 = FUN_00ad59e0(puVar2,param_2);
        if (local_8 != 0) {
          bVar1 = 1;
          iVar4 = iVar3;
          goto LAB_00ad7007;
        }
        uVar9 = 0x52a;
LAB_00ad6ff1:
        uVar8 = 0x10;
      }
      goto LAB_00ad6ff8;
    }
    iVar5 = FUN_00ad6260();
    puVar2[2] = iVar5;
    if (iVar5 != 0) goto LAB_00ad6f55;
    FUN_00a7f3c0(0x10,0xc0,0x10,".\\crypto\\ec\\ec_asn1.c",0x4f9);
  }
LAB_00ad7007:
  if (iVar4 != 0) {
    FUN_00a85120(iVar4);
  }
LAB_00ad7015:
  if (puVar2 != (undefined4 *)0x0) {
    FUN_00a8c2c0(puVar2,&DAT_00dc5020);
  }
  return -(uint)bVar1 & local_8;
}



undefined4 FUN_00ad70d0(int param_1)

{
  undefined4 uVar1;
  
  if (param_1 == 0) {
    FUN_00a7f3c0(0x10,0xbe,0x43,".\\crypto\\ec\\ec_asn1.c",0x53a);
    return 0;
  }
  uVar1 = FUN_00ad6b70();
  return uVar1;
}



int FUN_00ad7110(int *param_1,int *param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  if ((param_2 == (int *)0x0) || (*param_2 == 0)) {
    FUN_00a7f3c0(0x10,0x90,0x43,".\\crypto\\ec\\ec_asn1.c",0x546);
    return 0;
  }
  if ((param_1 == (int *)0x0) || (iVar1 = *param_1, iVar1 == 0)) {
    iVar1 = FUN_00a8e8a0();
    if (iVar1 == 0) {
      uVar4 = 0x54e;
      uVar3 = 0x41;
      goto LAB_00ad716f;
    }
    if (param_1 != (int *)0x0) {
      *param_1 = iVar1;
    }
  }
  iVar2 = FUN_00ad6ab0(iVar1 + 4,param_2,param_3);
  if (iVar2 != 0) {
    return iVar1;
  }
  uVar4 = 0x559;
  uVar3 = 0x10;
LAB_00ad716f:
  FUN_00a7f3c0(0x10,0x90,uVar3,".\\crypto\\ec\\ec_asn1.c",uVar4);
  return 0;
}



int FUN_00ad71b0(int *param_1,byte **param_2,int param_3)

{
  int iVar1;
  int iVar2;
  
  if (((param_1 == (int *)0x0) || (iVar1 = *param_1, iVar1 == 0)) || (*(int *)(iVar1 + 4) == 0)) {
    FUN_00a7f3c0(0x10,0x98,0x43,".\\crypto\\ec\\ec_asn1.c",0x568);
    return 0;
  }
  if (*(int *)(iVar1 + 8) == 0) {
    iVar2 = FUN_00aa3960(*(undefined4 *)(iVar1 + 4));
    *(int *)(iVar1 + 8) = iVar2;
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x10,0x98,0x41,".\\crypto\\ec\\ec_asn1.c",0x56f);
      return 0;
    }
  }
  iVar2 = FUN_00ae8fb0(*(undefined4 *)(iVar1 + 4),*(undefined4 *)(iVar1 + 8),*param_2,param_3,0);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x10,0x98,0x10,".\\crypto\\ec\\ec_asn1.c",0x574);
    return 0;
  }
  *(uint *)(iVar1 + 0x14) = **param_2 & 0xfffffffe;
  *param_2 = *param_2 + param_3;
  return iVar1;
}



int FUN_00ad7280(int param_1,int *param_2)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  
  bVar1 = false;
  if (param_1 == 0) {
    FUN_00a7f3c0(0x10,0x97,0x43,".\\crypto\\ec\\ec_asn1.c",0x584);
    return 0;
  }
  iVar2 = FUN_00ae8f00(*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 8),
                       *(undefined4 *)(param_1 + 0x14),0,0,0);
  if ((param_2 != (int *)0x0) && (iVar2 != 0)) {
    if (*param_2 == 0) {
      iVar3 = FUN_00a84f80(iVar2,".\\crypto\\ec\\ec_asn1.c",0x591);
      *param_2 = iVar3;
      if (iVar3 == 0) {
        FUN_00a7f3c0(0x10,0x97,0x41,".\\crypto\\ec\\ec_asn1.c",0x593);
        return 0;
      }
      bVar1 = true;
    }
    iVar3 = FUN_00ae8f00(*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_1 + 8),
                         *(undefined4 *)(param_1 + 0x14),*param_2,iVar2,0);
    if (iVar3 == 0) {
      FUN_00a7f3c0(0x10,0x97,0x10,".\\crypto\\ec\\ec_asn1.c",0x59b);
      FUN_00a85120(*param_2);
      *param_2 = 0;
      return 0;
    }
    if (!bVar1) {
      *param_2 = *param_2 + iVar2;
    }
  }
  return iVar2;
}



undefined4 * FUN_00ad7380(void)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  int unaff_EDI;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x18,".\\crypto\\ecdsa\\ecs_lib.c",0x79);
  iVar2 = DAT_032edb48;
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(0x2a,100,0x41,".\\crypto\\ecdsa\\ecs_lib.c",0x7c);
    return (undefined4 *)0x0;
  }
  *puVar1 = 0;
  if (iVar2 == 0) {
    iVar2 = FUN_00ae9060();
    DAT_032edb48 = iVar2;
  }
  puVar1[3] = iVar2;
  puVar1[1] = unaff_EDI;
  if (unaff_EDI == 0) {
    uVar3 = FUN_00ae9a80();
    puVar1[1] = uVar3;
  }
  if (puVar1[1] != 0) {
    iVar2 = FUN_00a83810(puVar1[1]);
    puVar1[3] = iVar2;
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x2a,100,0x26,".\\crypto\\ecdsa\\ecs_lib.c",0x8c);
      FUN_00a8f1b0(puVar1[1]);
      FUN_00a85120(puVar1);
      return (undefined4 *)0x0;
    }
  }
  puVar1[2] = *(undefined4 *)(puVar1[3] + 0x10);
  FUN_00a80700(0xc,puVar1,puVar1 + 4);
  return puVar1;
}



void FUN_00ad7460(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    FUN_00a8f1b0(*(int *)(param_1 + 4));
  }
  FUN_00a80760(0xc,param_1,param_1 + 0x10);
  FUN_00a84330(param_1,0x18);
  FUN_00a85120(param_1);
  return;
}



int FUN_00ad74a0(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_00a8ed20(param_1,&LAB_00ad7440,FUN_00ad7460,FUN_00ad7460);
  if (iVar1 == 0) {
    iVar1 = FUN_00ad7380();
    if (iVar1 == 0) {
      return 0;
    }
    iVar2 = FUN_00a8ed70(param_1,iVar1,&LAB_00ad7440,FUN_00ad7460,FUN_00ad7460);
    if (iVar2 != 0) {
      FUN_00ad7460(iVar1);
      return iVar2;
    }
  }
  return iVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00ad7510(int param_1)

{
  int iVar1;
  int iVar2;
  int local_10;
  undefined4 local_c;
  undefined4 *local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xad751a;
  if (param_1 == 0) {
    return param_1;
  }
  iVar1 = FUN_00a7fa30(param_1);
  if (iVar1 == 0) {
    return 0;
  }
  iVar2 = FUN_00a9aa10();
  if (iVar2 != 0) {
    iVar1 = FUN_00aa3530(iVar1,iVar2,0);
    if (iVar1 != 0) {
      iVar1 = FUN_00a9a920(iVar2);
      local_10 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
      local_8 = &param_1;
      local_c = 2;
      param_1 = CONCAT31(param_1._1_3_,0xff);
      iVar1 = FUN_00a887a0(&local_10,0);
      iVar1 = FUN_00a90b80(1,iVar1 * 2,0x10);
      FUN_00a9a950(iVar2);
      return iVar1;
    }
    FUN_00a9a950();
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ad75c0(uint param_1,size_t param_2)

{
  int iVar1;
  int unaff_EBX;
  uint uVar2;
  int local_88;
  undefined local_84;
  undefined local_83 [127];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_88;
  if (unaff_EBX == 0) {
    ___security_check_cookie_4();
    return;
  }
  if (param_2 != 0) {
    if (0x80 < (int)param_2) {
      param_2 = 0x80;
    }
    _memset(&local_84,0x20,param_2);
    iVar1 = FUN_00a833e0();
    if (iVar1 < 1) goto LAB_00ad7632;
  }
  iVar1 = FUN_00a86200();
  if (0 < iVar1) {
    uVar2 = 0;
    if (param_1 != 0) {
      local_88 = 1 - unaff_EBX;
      do {
        if (uVar2 == (uVar2 / 0xf) * 0xf) {
          local_84 = 10;
          _memset(local_83,0x20,param_2 + 4);
          iVar1 = FUN_00a833e0();
          if (iVar1 < 1) goto LAB_00ad7632;
        }
        iVar1 = FUN_00a86200();
        if (iVar1 < 1) goto LAB_00ad7632;
        uVar2 = uVar2 + 1;
      } while (uVar2 < param_1);
    }
    FUN_00a833e0();
    ___security_check_cookie_4();
    return;
  }
LAB_00ad7632:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ad7740(undefined4 param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  char *pcVar9;
  undefined *puVar10;
  undefined4 local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  int local_1c;
  undefined4 local_18;
  undefined4 local_14;
  int local_10;
  
  iVar7 = 0;
  local_18 = 0;
  local_34 = 0x20;
  local_10 = 0;
  local_28 = 0;
  local_30 = 0;
  local_2c = 0;
  local_24 = 0;
  local_20 = 0;
  local_1c = 0;
  local_14 = 0;
  if (param_2 == 0) {
    local_34 = 0x43;
  }
  else {
    local_10 = FUN_00aa49c0();
    if (local_10 == 0) {
LAB_00ad7bcf:
      local_34 = 0x41;
    }
    else {
      iVar1 = FUN_00aa35c0(param_2);
      if (iVar1 == 0) {
        uVar2 = FUN_00a814c0(param_2);
        iVar1 = FUN_00a7fa30(uVar2);
        local_28 = FUN_00a9aa10();
        if ((((local_28 == 0) || (local_30 = FUN_00a9aa10(), local_30 == 0)) ||
            (local_2c = FUN_00a9aa10(), local_2c == 0)) ||
           ((local_20 = FUN_00a9aa10(), local_20 == 0 || (local_1c = FUN_00a9aa10(), local_1c == 0))
           )) goto LAB_00ad7bcf;
        if (iVar1 != 0x197) {
          iVar3 = FUN_00aa36a0(param_2,local_28,local_30,local_2c,local_10);
        }
        else {
          iVar3 = FUN_00aa3720(param_2,local_28,local_30,local_2c);
        }
        if (iVar3 == 0) {
          local_34 = 0x10;
        }
        else {
          iVar3 = FUN_00a7fa30(param_2);
          if (iVar3 == 0) {
            local_34 = 0x10;
          }
          else {
            iVar4 = FUN_00aa3530(param_2,local_20,0);
            if ((iVar4 != 0) && (iVar4 = FUN_00aa3560(param_2,local_1c,0), iVar4 != 0)) {
              iVar4 = FUN_00aa35e0(param_2);
              local_24 = FUN_00ad7e50(param_2,iVar3,iVar4,0,local_10);
              if (local_24 != 0) {
                iVar7 = FUN_00a9a920(local_28);
                uVar8 = (int)(iVar7 + 7 + (iVar7 + 7 >> 0x1f & 7U)) >> 3;
                iVar7 = FUN_00a9a920(local_30);
                uVar5 = (int)(iVar7 + 7 + (iVar7 + 7 >> 0x1f & 7U)) >> 3;
                if (uVar8 < uVar5) {
                  uVar8 = uVar5;
                }
                iVar7 = FUN_00a9a920(local_2c);
                uVar5 = (int)(iVar7 + 7 + (iVar7 + 7 >> 0x1f & 7U)) >> 3;
                if (uVar8 < uVar5) {
                  uVar8 = uVar5;
                }
                iVar7 = FUN_00a9a920(local_24);
                uVar5 = (int)(iVar7 + 7 + (iVar7 + 7 >> 0x1f & 7U)) >> 3;
                if (uVar8 < uVar5) {
                  uVar8 = uVar5;
                }
                iVar7 = FUN_00a9a920(local_20);
                uVar5 = (int)(iVar7 + 7 + (iVar7 + 7 >> 0x1f & 7U)) >> 3;
                if (uVar8 < uVar5) {
                  uVar8 = uVar5;
                }
                iVar7 = FUN_00a9a920(local_1c);
                uVar5 = (int)(iVar7 + 7 + (iVar7 + 7 >> 0x1f & 7U)) >> 3;
                if (uVar8 < uVar5) {
                  uVar8 = uVar5;
                }
                iVar3 = FUN_00aa3660(param_2);
                if (iVar3 != 0) {
                  local_14 = FUN_00a925f0(param_2);
                }
                iVar7 = FUN_00a84f80(uVar8 + 10,".\\crypto\\ec\\eck_prn.c",0x10a);
                if (iVar7 == 0) goto LAB_00ad7bcf;
                iVar6 = FUN_00a83600(param_1,param_3,0x80);
                if (iVar6 != 0) {
                  uVar2 = FUN_00a87520(iVar1);
                  iVar6 = FUN_00a86200(param_1,"Field Type: %s\n",uVar2);
                  if (0 < iVar6) {
                    if (iVar1 != 0x197) {
                      pcVar9 = "Prime:";
LAB_00ad7ae5:
                      iVar1 = FUN_00ad7c90(param_1,pcVar9,local_28,iVar7,param_3);
                      if (((iVar1 != 0) &&
                          (iVar1 = FUN_00ad7c90(param_1,"A:   ",local_30,iVar7,param_3), iVar1 != 0)
                          ) && (iVar1 = FUN_00ad7c90(param_1,"B:   ",local_2c,iVar7,param_3),
                               iVar1 != 0)) {
                        puVar10 = PTR_s_Generator__compressed___03243338;
                        if ((iVar4 != 2) &&
                           (puVar10 = PTR_s_Generator__hybrid___03243340, iVar4 == 4)) {
                          puVar10 = PTR_s_Generator__uncompressed___0324333c;
                        }
                        iVar1 = FUN_00ad7c90(param_1,puVar10,local_24,iVar7,param_3);
                        if (((iVar1 != 0) &&
                            (iVar1 = FUN_00ad7c90(param_1,"Order: ",local_20,iVar7,param_3),
                            iVar1 != 0)) &&
                           ((iVar1 = FUN_00ad7c90(param_1,"Cofactor: ",local_1c,iVar7,param_3),
                            iVar1 != 0 &&
                            ((iVar3 == 0 || (iVar1 = FUN_00ad75c0(local_14,param_3), iVar1 != 0)))))
                           ) {
                          local_18 = 1;
                          goto LAB_00ad7bf5;
                        }
                      }
                    }
                    else {
                      iVar1 = FUN_00ad5820(param_2);
                      if ((iVar1 != 0) && (iVar6 = FUN_00a83600(param_1,param_3,0x80), iVar6 != 0))
                      {
                        uVar2 = FUN_00a87520(iVar1);
                        iVar1 = FUN_00a86200(param_1,"Basis Type: %s\n",uVar2);
                        if (0 < iVar1) {
                          pcVar9 = "Polynomial:";
                          goto LAB_00ad7ae5;
                        }
                      }
                    }
                  }
                }
                goto LAB_00ad7bd7;
              }
            }
            local_34 = 0x10;
          }
        }
      }
      else {
        iVar1 = FUN_00a83600(param_1,param_3,0x80);
        if ((iVar1 != 0) && (iVar1 = FUN_00aa35a0(param_2), iVar1 != 0)) {
          uVar2 = FUN_00a87520(iVar1);
          iVar1 = FUN_00a86200(param_1,"ASN1 OID: %s",uVar2);
          if ((0 < iVar1) && (iVar1 = FUN_00a86200(param_1,&DAT_030651b4), 0 < iVar1)) {
            local_18 = 1;
            goto LAB_00ad7bf5;
          }
        }
      }
    }
  }
LAB_00ad7bd7:
  FUN_00a7f3c0(0x10,0x95,local_34,".\\crypto\\ec\\eck_prn.c",0x150);
LAB_00ad7bf5:
  if (local_28 != 0) {
    FUN_00a9a9b0(local_28);
  }
  if (local_30 != 0) {
    FUN_00a9a9b0(local_30);
  }
  if (local_2c != 0) {
    FUN_00a9a9b0(local_2c);
  }
  if (local_24 != 0) {
    FUN_00a9a9b0(local_24);
  }
  if (local_20 != 0) {
    FUN_00a9a9b0(local_20);
  }
  if (local_1c != 0) {
    FUN_00a9a9b0(local_1c);
  }
  if (local_10 != 0) {
    FUN_00aa4a20(local_10);
  }
  if (iVar7 != 0) {
    FUN_00a85120(iVar7);
  }
  return local_18;
}



bool FUN_00ad7c90(undefined4 param_1,undefined4 param_2,undefined4 *param_3,byte *param_4,
                 int param_5)

{
  int iVar1;
  char *pcVar2;
  byte *pbVar3;
  int iVar4;
  byte *pbVar5;
  undefined **ppuVar6;
  
  if (param_3 == (undefined4 *)0x0) {
    return true;
  }
  ppuVar6 = (undefined **)&DAT_00d2b6d8;
  if (param_3[3] == 0) {
    ppuVar6 = &PTR_02bd3fc0;
  }
  iVar1 = FUN_00a83600(param_1,param_5,0x80);
  if (iVar1 == 0) {
    return false;
  }
  if (param_3[1] == 0) {
    iVar1 = FUN_00a86200(param_1,"%s 0\n",param_2);
    return 0 < iVar1;
  }
  iVar1 = FUN_00a9a920(param_3);
  if ((int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3 < 5) {
    iVar1 = FUN_00a86200(param_1,"%s %s%lu (%s0x%lx)\n",param_2,ppuVar6,*(undefined4 *)*param_3,
                         ppuVar6,*(undefined4 *)*param_3);
    if (0 < iVar1) {
      return true;
    }
    return false;
  }
  *param_4 = 0;
  pcVar2 = " (Negative)";
  if (*(char *)ppuVar6 != '-') {
    pcVar2 = (char *)&PTR_02bd3fc0;
  }
  iVar1 = FUN_00a86200(param_1,&DAT_00dc516c,param_2,pcVar2);
  if (0 < iVar1) {
    pbVar5 = param_4 + 1;
    pbVar3 = (byte *)FUN_00a9ad90(param_3,pbVar5);
    if ((*pbVar5 & 0x80) != 0) {
      pbVar3 = pbVar3 + 1;
      pbVar5 = param_4;
    }
    iVar1 = 0;
    if (0 < (int)pbVar3) {
      do {
        if (iVar1 == (iVar1 / 0xf) * 0xf) {
          iVar4 = FUN_00a834a0(param_1,&DAT_030651b4);
          if (iVar4 < 1) {
            return false;
          }
          iVar4 = FUN_00a83600(param_1,param_5 + 4,0x80);
          if (iVar4 == 0) {
            return false;
          }
        }
        ppuVar6 = &PTR_02bd3fc0;
        if (pbVar5 + iVar1 + (1 - (int)pbVar5) != pbVar3) {
          ppuVar6 = (undefined **)&DAT_00d37a38;
        }
        iVar4 = FUN_00a86200(param_1,"%02x%s",pbVar5[iVar1],ppuVar6);
        if (iVar4 < 1) {
          return false;
        }
        iVar1 = iVar1 + 1;
      } while (iVar1 < (int)pbVar3);
    }
    iVar1 = FUN_00a833e0(param_1,&DAT_030651b4,1);
    if (0 < iVar1) {
      return true;
    }
  }
  return false;
}



undefined4
FUN_00ad7e50(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  
  iVar1 = FUN_00ae8f00(param_1,param_2,param_3,0,0,param_5);
  if (iVar1 == 0) {
    return 0;
  }
  iVar2 = FUN_00a84f80(iVar1,".\\crypto\\ec\\ec_print.c",0x49);
  if (iVar2 != 0) {
    iVar3 = FUN_00ae8f00(param_1,param_2,param_3,iVar2,iVar1,param_5);
    if (iVar3 != 0) {
      uVar4 = FUN_00a9acb0(iVar2,iVar1,param_4);
      FUN_00a85120(iVar2);
      return uVar4;
    }
    FUN_00a85120(iVar2);
  }
  return 0;
}



int FUN_00ad7ee0(int param_1,int param_2,int param_3)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_00a877e0(*(undefined4 *)(param_1 + 0x10));
  if (param_2 == 1) {
    if (iVar1 == 0x16) {
      *(int *)(param_1 + 0xc) = param_3;
      if (param_3 != 0) {
        iVar1 = FUN_00a877e0(*(undefined4 *)(*(int *)(*(int *)(param_1 + 0x14) + 0x14) + 0x10));
        if (iVar1 == 0x15) {
          FUN_00a888e0(*(undefined4 *)(*(int *)(*(int *)(param_1 + 0x14) + 0x14) + 0x14));
          *(undefined4 *)(*(int *)(*(int *)(param_1 + 0x14) + 0x14) + 0x14) = 0;
        }
      }
      return param_3;
    }
    uVar2 = 0x58;
  }
  else {
    if (param_2 != 2) {
      FUN_00a7f3c0(0x21,0x68,0x6e,".\\crypto\\pkcs7\\pk7_lib.c",0x6d);
      return 0;
    }
    if (iVar1 == 0x16) {
      if ((*(int *)(param_1 + 0x14) != 0) &&
         (*(int *)(*(int *)(*(int *)(param_1 + 0x14) + 0x14) + 0x14) != 0)) {
        *(undefined4 *)(param_1 + 0xc) = 0;
        return 0;
      }
      *(undefined4 *)(param_1 + 0xc) = 1;
      return 1;
    }
    uVar2 = 0x67;
  }
  FUN_00a7f3c0(0x21,0x68,0x68,".\\crypto\\pkcs7\\pk7_lib.c",uVar2);
  return 0;
}



void FUN_00ad7fb0(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)

{
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *(undefined4 *)(param_1 + 0x1c);
  }
  if (param_3 != (undefined4 *)0x0) {
    *param_3 = *(undefined4 *)(param_1 + 8);
  }
  if (param_4 != (undefined4 *)0x0) {
    *param_4 = *(undefined4 *)(param_1 + 0x10);
  }
  return;
}



void FUN_00ad7fe0(int param_1,undefined4 *param_2)

{
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *(undefined4 *)(param_1 + 8);
  }
  return;
}



void FUN_00ad80a0(void)

{
  int iVar1;
  int *piVar2;
  int *unaff_ESI;
  int iVar3;
  
  iVar3 = 0;
  iVar1 = FUN_00a80ed0(unaff_ESI[3]);
  if (0 < iVar1) {
    do {
      piVar2 = (int *)FUN_00a80ee0(unaff_ESI[3],iVar3);
      iVar1 = *piVar2;
      if (iVar1 == 4) {
        if (*unaff_ESI < 5) {
          *unaff_ESI = 5;
        }
      }
      else if (iVar1 == 3) {
        if (*unaff_ESI < 4) {
          *unaff_ESI = 4;
        }
      }
      else if ((iVar1 == 2) && (*unaff_ESI < 3)) {
        *unaff_ESI = 3;
      }
      iVar3 = iVar3 + 1;
      iVar1 = FUN_00a80ed0(unaff_ESI[3]);
    } while (iVar3 < iVar1);
  }
  iVar3 = 0;
  iVar1 = FUN_00a80ed0(unaff_ESI[4]);
  if (0 < iVar1) {
    do {
      piVar2 = (int *)FUN_00a80ee0(unaff_ESI[4],iVar3);
      if ((*piVar2 == 1) && (*unaff_ESI < 5)) {
        *unaff_ESI = 5;
      }
      iVar3 = iVar3 + 1;
      iVar1 = FUN_00a80ed0(unaff_ESI[4]);
    } while (iVar3 < iVar1);
  }
  iVar1 = FUN_00a877e0(*(undefined4 *)unaff_ESI[2]);
  if ((iVar1 != 0x15) && (*unaff_ESI < 3)) {
    *unaff_ESI = 3;
  }
  iVar1 = FUN_00a80ed0(unaff_ESI[5]);
  if (0 < iVar1) {
    iVar1 = 0;
    do {
      piVar2 = (int *)FUN_00a80ee0(unaff_ESI[5],iVar1);
      if (*(int *)piVar2[1] == 1) {
        if (*piVar2 < 3) {
          *piVar2 = 3;
        }
        if (*unaff_ESI < 3) {
          *unaff_ESI = 3;
        }
      }
      else {
        *unaff_ESI = 1;
      }
      iVar1 = iVar1 + 1;
      iVar3 = FUN_00a80ed0(unaff_ESI[5]);
    } while (iVar1 < iVar3);
  }
  if (*unaff_ESI < 1) {
    *unaff_ESI = 1;
  }
  return;
}



void FUN_00ad81e0(int param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4,
                 undefined4 *param_5)

{
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *(undefined4 *)(param_1 + 0x20);
  }
  if (param_3 != (undefined4 *)0x0) {
    *param_3 = *(undefined4 *)(param_1 + 0x1c);
  }
  if (param_4 != (undefined4 *)0x0) {
    *param_4 = *(undefined4 *)(param_1 + 8);
  }
  if (param_5 != (undefined4 *)0x0) {
    *param_5 = *(undefined4 *)(param_1 + 0x10);
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ad8220(int param_1)

{
  bool bVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  int local_20;
  undefined4 local_1c;
  undefined local_18 [20];
  undefined4 uStack_4;
  
  iVar2 = param_1;
  uStack_4 = 0xad822a;
  bVar1 = false;
  local_20 = 0;
  uVar3 = FUN_00a877e0(**(undefined4 **)(param_1 + 8));
  uVar3 = FUN_00a87520(uVar3);
  iVar4 = FUN_00a802c0(uVar3);
  if (iVar4 == 0) {
    return 0;
  }
  FUN_00a91330(local_18);
  iVar5 = FUN_00ae9dd0(iVar2,0x34,0xffffffff);
  if (iVar5 < 0) {
    iVar5 = FUN_00aead80(0,0);
    if ((iVar5 != 0) &&
       (iVar6 = FUN_00ae9de0(iVar2,0x34,*(undefined4 *)(iVar5 + 4),iVar5,0xffffffff), 0 < iVar6)) {
      bVar1 = true;
    }
    FUN_00a9c870(iVar5);
    if (bVar1) goto LAB_00ad82c3;
    uVar3 = 0x1e6;
    uVar8 = 0x41;
    uVar7 = 0x67;
LAB_00ad83c5:
    FUN_00a7f3c0(0x2e,uVar7,uVar8,".\\crypto\\cms\\cms_sd.c",uVar3);
  }
  else {
LAB_00ad82c3:
    iVar4 = FUN_00ad8fc0(local_18,&local_1c,iVar4,0,*(undefined4 *)(iVar2 + 0x20));
    if (0 < iVar4) {
      iVar4 = FUN_00a988b0(local_1c,0xffffffff,8,0xb,0,iVar2);
      if (iVar4 < 1) {
        uVar3 = 0x2d9;
LAB_00ad83b9:
        uVar8 = 0x6e;
        uVar7 = 0x97;
        goto LAB_00ad83c5;
      }
      uVar3 = FUN_00ae9da0();
      uVar3 = FUN_00a8ba30(*(undefined4 *)(iVar2 + 0xc),&local_20,uVar3);
      if (local_20 == 0) goto LAB_00ad83e0;
      iVar4 = FUN_00a91530(local_18,local_20,uVar3);
      if ((0 < iVar4) && (iVar4 = FUN_00ad9020(local_18,0,&param_1), 0 < iVar4)) {
        FUN_00a85120(local_20);
        local_20 = FUN_00a84f80(param_1,".\\crypto\\cms\\cms_sd.c",0x2e6);
        if (local_20 == 0) goto LAB_00ad83e0;
        iVar4 = FUN_00ad9020(local_18,local_20,&param_1);
        if (0 < iVar4) {
          iVar4 = FUN_00a988b0(local_1c,0xffffffff,8,0xb,1,iVar2);
          if (0 < iVar4) {
            FUN_00a915c0(local_18);
            FUN_00a90cf0(*(undefined4 *)(iVar2 + 0x14),local_20,param_1);
            return 1;
          }
          uVar3 = 0x2ef;
          goto LAB_00ad83b9;
        }
      }
    }
  }
  if (local_20 != 0) {
    FUN_00a85120(local_20);
  }
LAB_00ad83e0:
  FUN_00a915c0(local_18);
  return 0;
}



int FUN_00ad8430(undefined4 *param_1)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  
  iVar4 = 0;
  iVar1 = FUN_00a877e0(*param_1);
  if (iVar1 != 0x16) {
    FUN_00a7f3c0(0x2e,0x85,0x6c,".\\crypto\\cms\\cms_sd.c",0x47);
    return 0;
  }
  iVar1 = param_1[1];
  if (iVar1 != 0) {
    if (*(int *)(*(int *)(iVar1 + 8) + 8) != 0) {
      FUN_00ad80a0();
    }
    iVar6 = 0;
    iVar2 = FUN_00a80ed0(*(undefined4 *)(iVar1 + 4));
    iVar5 = iVar4;
    if (0 < iVar2) {
      do {
        uVar3 = FUN_00a80ee0(*(undefined4 *)(iVar1 + 4),iVar6);
        iVar4 = FUN_00aec020(uVar3);
        if (iVar4 == 0) {
          if (iVar5 != 0) {
            FUN_00a83870(iVar5);
          }
          return 0;
        }
        if (iVar5 != 0) {
          FUN_00a83770(iVar5,iVar4);
          iVar4 = iVar5;
        }
        iVar6 = iVar6 + 1;
        iVar2 = FUN_00a80ed0(*(undefined4 *)(iVar1 + 4));
        iVar5 = iVar4;
      } while (iVar6 < iVar2);
    }
    return iVar4;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __fastcall FUN_00ad84f0(undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int unaff_ESI;
  undefined4 local_60;
  undefined local_5c [24];
  undefined local_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_60;
  FUN_00a91330(local_5c);
  if (*(int *)(unaff_ESI + 0x20) != 0) {
    iVar1 = FUN_00aec0e0(local_5c,param_1,*(undefined4 *)(unaff_ESI + 8));
    if (iVar1 != 0) {
      iVar1 = FUN_00ae9dc0();
      if (iVar1 < 0) {
        uVar2 = FUN_00a81360(*(undefined4 *)(unaff_ESI + 0x20),".\\crypto\\cms\\cms_sd.c",0x295);
        iVar1 = FUN_00a84f80(uVar2);
        if (iVar1 == 0) {
          FUN_00a7f3c0(0x2e,0x96,0x41,".\\crypto\\cms\\cms_sd.c",0x299);
        }
        else {
          iVar3 = FUN_00aec430(local_5c,iVar1,&local_60,*(undefined4 *)(unaff_ESI + 0x20));
          if (iVar3 == 0) {
            FUN_00a7f3c0(0x2e,0x96,0x8b,".\\crypto\\cms\\cms_sd.c",0x29f);
            FUN_00a85120(iVar1);
          }
          else {
            FUN_00a90cf0(*(undefined4 *)(unaff_ESI + 0x14),iVar1,local_60);
          }
        }
      }
      else {
        iVar1 = FUN_00a91540(local_5c,local_44,&local_60);
        if (((iVar1 != 0) && (iVar1 = FUN_00ae9de0(), iVar1 != 0)) &&
           (iVar1 = FUN_00ae9de0(), 0 < iVar1)) {
          FUN_00ad8220();
        }
      }
    }
    FUN_00a915c0(local_5c);
    ___security_check_cookie_4();
    return;
  }
  FUN_00a7f3c0(0x2e,0x96,0x85,".\\crypto\\cms\\cms_sd.c",0x275);
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00ad86b0(undefined4 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  
  iVar1 = FUN_00a877e0(*param_1);
  if (iVar1 == 0x16) {
    if (param_1[1] == 0) {
      uVar2 = 0;
    }
    else {
      uVar2 = *(undefined4 *)(param_1[1] + 0x14);
    }
  }
  else {
    FUN_00a7f3c0(0x2e,0x85,0x6c,".\\crypto\\cms\\cms_sd.c",0x47);
    uVar2 = 0;
  }
  iVar3 = 0;
  iVar1 = FUN_00a80ed0(uVar2);
  if (0 < iVar1) {
    do {
      FUN_00a80ee0(uVar2,iVar3);
      iVar1 = FUN_00ad84f0();
      if (iVar1 == 0) {
        return 0;
      }
      iVar3 = iVar3 + 1;
      iVar1 = FUN_00a80ed0(uVar2);
    } while (iVar3 < iVar1);
  }
  *(undefined4 *)(*(int *)(param_1[1] + 8) + 8) = 0;
  return 1;
}



void FUN_00ad87a0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00dc5238);
  return;
}



void FUN_00ad87c0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00dc5238);
  return;
}



void FUN_00ad87e0(undefined4 param_1)

{
  FUN_00a8e270(&DAT_00dc5238,param_1);
  return;
}



undefined * FUN_00ad8850(void)

{
  return &DAT_00dc5404;
}



void FUN_00ad8860(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00dc5404);
  return;
}



void FUN_00ad8880(void)

{
  FUN_00a8bf10(&DAT_00dc5404);
  return;
}



void FUN_00ad8890(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00dc5404);
  return;
}



void FUN_00ad88b0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00dc538c);
  return;
}



void FUN_00ad88d0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00dc538c);
  return;
}



void FUN_00ad88f0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00dc53e8);
  return;
}



void FUN_00ad8910(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00dc53e8);
  return;
}



void FUN_00ad8930(undefined4 param_1)

{
  FUN_00a8e270(&DAT_00dc538c,param_1);
  return;
}



int FUN_00ad8950(undefined4 param_1,int *param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  piVar1 = param_2;
  iVar4 = 0;
  if (param_2 == (int *)0x0) {
    return 0;
  }
  if ((param_2[1] & 0x100U) != 0) {
    iVar4 = FUN_00a833e0(param_1,&DAT_00d2b6d8,1);
    if (iVar4 != 1) {
      return -1;
    }
    iVar4 = 1;
  }
  if (*piVar1 == 0) {
    iVar2 = FUN_00a833e0(param_1,&DAT_00d3c900,2);
    if (iVar2 != 2) {
      return -1;
    }
    iVar4 = iVar4 + 2;
  }
  else {
    iVar2 = 0;
    if (0 < *piVar1) {
      while( true ) {
        if ((iVar2 != 0) && (iVar2 == (iVar2 / 0x23) * 0x23)) {
          iVar3 = FUN_00a833e0(param_1,&DAT_00dc5470,2);
          if (iVar3 != 2) {
            return -1;
          }
          iVar4 = iVar4 + 2;
        }
        iVar3 = FUN_00a833e0(param_1,&param_2,2);
        if (iVar3 != 2) break;
        iVar2 = iVar2 + 1;
        iVar4 = iVar4 + 2;
        if (*piVar1 <= iVar2) {
          return iVar4;
        }
      }
      return -1;
    }
  }
  return iVar4;
}



undefined4 FUN_00ad8a50(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)

{
  int iVar1;
  
  if (*param_1 != 0) {
    FUN_00a7f3c0(0x2e,0x8e,0x7c,".\\crypto\\cms\\cms_env.c",0xf3);
    return 0;
  }
  iVar1 = param_1[1];
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = *(undefined4 *)(iVar1 + 0x14);
  }
  if (param_3 != (undefined4 *)0x0) {
    *param_3 = *(undefined4 *)(iVar1 + 0x10);
  }
  if (param_4 != (undefined4 *)0x0) {
    *param_4 = *(undefined4 *)(iVar1 + 8);
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ad8ab0(int param_1,int *param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 local_8;
  
  piVar2 = param_2;
  iVar6 = 0;
  local_8 = 0;
  if (*param_2 != 0) {
    FUN_00a7f3c0(0x2e,0x8d,0x7c,".\\crypto\\cms\\cms_env.c",0x13a);
    return 0;
  }
  iVar1 = param_2[1];
  iVar5 = *(int *)(*(int *)(param_1 + 4) + 0xc);
  iVar3 = FUN_00a98af0(*(undefined4 *)(iVar1 + 0x14),0);
  if (iVar3 == 0) {
    return 0;
  }
  iVar4 = FUN_00aecbd0(iVar3);
  if (0 < iVar4) {
    iVar4 = FUN_00a988b0(iVar3,0xffffffff,0x100,9,0,piVar2);
    if (iVar4 < 1) {
      FUN_00a7f3c0(0x2e,0x8d,0x6e,".\\crypto\\cms\\cms_env.c",0x14a);
    }
    else {
      iVar4 = FUN_00aecc40(iVar3,0,&param_2,*(undefined4 *)(iVar5 + 0x10),
                           *(undefined4 *)(iVar5 + 0x14));
      if (0 < iVar4) {
        iVar6 = FUN_00a84f80(param_2,".\\crypto\\cms\\cms_env.c",0x151);
        if (iVar6 == 0) {
          FUN_00a7f3c0(0x2e,0x8d,0x41,".\\crypto\\cms\\cms_env.c",0x156);
        }
        else {
          iVar5 = FUN_00aecc40(iVar3,iVar6,&param_2,*(undefined4 *)(iVar5 + 0x10),
                               *(undefined4 *)(iVar5 + 0x14));
          if (0 < iVar5) {
            FUN_00a90cf0(*(undefined4 *)(iVar1 + 0xc),iVar6,param_2);
            iVar6 = 0;
            local_8 = 1;
          }
        }
      }
    }
  }
  FUN_00a98850(iVar3);
  if (iVar6 != 0) {
    FUN_00a85120(iVar6);
  }
  return local_8;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __fastcall FUN_00ad8c20(undefined4 param_1_00,int param_2,int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined local_f4 [240];
  undefined4 uStack_4;
  
  uStack_4 = 0xad8c2a;
  iVar1 = *(int *)(param_2 + 4);
  uVar4 = 0;
  iVar3 = *(int *)(*(int *)(param_1 + 4) + 0xc);
  if (*(int *)(iVar1 + 0x10) == 0) {
    FUN_00a7f3c0(0x2e,0x88,0x82,".\\crypto\\cms\\cms_env.c",0x297);
    return 0;
  }
  iVar2 = thunk_FUN_00ab9090(*(int *)(iVar1 + 0x10),*(int *)(iVar1 + 0x14) * 8,local_f4);
  if (iVar2 == 0) {
    iVar2 = FUN_00a84f80(*(int *)(iVar3 + 0x14) + 8,".\\crypto\\cms\\cms_env.c",0x2a2);
    if (iVar2 == 0) {
      uVar6 = 0x2a7;
      uVar5 = 0x41;
    }
    else {
      iVar3 = FUN_00aecff0(local_f4,0,iVar2,*(undefined4 *)(iVar3 + 0x10),
                           *(undefined4 *)(iVar3 + 0x14));
      if (0 < iVar3) {
        FUN_00a90cf0(*(undefined4 *)(iVar1 + 0xc),iVar2,iVar3);
        uVar4 = 1;
        goto LAB_00ad8cf2;
      }
      uVar6 = 0x2af;
      uVar5 = 0x9f;
    }
    FUN_00a7f3c0(0x2e,0x88,uVar5,".\\crypto\\cms\\cms_env.c",uVar6);
    if (iVar2 != 0) {
      FUN_00a85120(iVar2);
    }
  }
  else {
    FUN_00a7f3c0(0x2e,0x88,0x73,".\\crypto\\cms\\cms_env.c",0x29e);
  }
LAB_00ad8cf2:
  FUN_00a84330(local_f4,0xf4);
  return uVar4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00ad8d60(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  bool bVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  int iVar7;
  
  iVar1 = *(int *)(*(int *)(param_1 + 4) + 0xc);
  iVar7 = 0;
  bVar3 = false;
  iVar4 = FUN_00aec610(iVar1);
  if ((iVar4 != 0) && (*(int *)(iVar1 + 0xc) != 0)) {
    uVar2 = *(undefined4 *)(*(int *)(param_1 + 4) + 8);
    iVar5 = FUN_00a80ed0(uVar2);
    if (0 < iVar5) {
      do {
        piVar6 = (int *)FUN_00a80ee0(uVar2,iVar7);
        iVar5 = *piVar6;
        if (iVar5 == 0) {
          iVar5 = FUN_00ad8ab0(param_1,piVar6);
        }
        else if (iVar5 == 2) {
          iVar5 = FUN_00ad8c20(param_1);
        }
        else {
          if (iVar5 != 3) {
            FUN_00a7f3c0(0x2e,0x7d,0x9a,".\\crypto\\cms\\cms_env.c",0x350);
            goto LAB_00ad8e0a;
          }
          iVar5 = FUN_00aed300(param_1,piVar6,1);
        }
        if (iVar5 < 1) {
          FUN_00a7f3c0(0x2e,0x7d,0x74,".\\crypto\\cms\\cms_env.c",0x357);
          goto LAB_00ad8e0a;
        }
        iVar7 = iVar7 + 1;
        iVar5 = FUN_00a80ed0(uVar2);
      } while (iVar7 < iVar5);
    }
    bVar3 = true;
LAB_00ad8e0a:
    *(undefined4 *)(iVar1 + 0xc) = 0;
    if (*(int *)(iVar1 + 0x10) != 0) {
      FUN_00a84330(*(int *)(iVar1 + 0x10),*(undefined4 *)(iVar1 + 0x14));
      FUN_00a85120(*(undefined4 *)(iVar1 + 0x10));
      *(undefined4 *)(iVar1 + 0x10) = 0;
      *(undefined4 *)(iVar1 + 0x14) = 0;
    }
    if (bVar3) {
      return iVar4;
    }
    FUN_00a83270(iVar4);
    iVar4 = 0;
  }
  return iVar4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

bool __thiscall FUN_00ad8e90(int param_1_00,undefined4 *param_1,undefined4 param_2,int param_3)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0x10) == 0) {
    iVar2 = FUN_00a98af0();
    *(int *)(unaff_ESI + 0x10) = iVar2;
    if (iVar2 == 0) {
      return false;
    }
  }
  if (param_1_00 != 0) {
LAB_00ad8f09:
    piVar1 = *(int **)(unaff_ESI + 0x10);
    if (param_3 == 0) {
      if (*(code **)(*piVar1 + 0x3c) == (code *)0x0) {
        iVar2 = FUN_00aec9c0(piVar1);
        if (iVar2 < 1) {
          return false;
        }
      }
      else {
        iVar2 = (**(code **)(*piVar1 + 0x3c))(piVar1);
        if (iVar2 < 1) {
          return false;
        }
        *(undefined4 *)(*(int *)(unaff_ESI + 0x10) + 0x10) = 0x40;
      }
    }
    else if (*(code **)(*piVar1 + 0x44) == (code *)0x0) {
      iVar2 = FUN_00aecb00(piVar1);
      if (iVar2 < 1) {
        return false;
      }
    }
    else {
      iVar2 = (**(code **)(*piVar1 + 0x44))(piVar1);
      if (iVar2 < 1) {
        return false;
      }
      *(undefined4 *)(*(int *)(unaff_ESI + 0x10) + 0x10) = 0x80;
    }
    iVar2 = FUN_00a988b0(*(undefined4 *)(unaff_ESI + 0x10),0xffffffff,0xf8,1,0,param_1_00);
    if (iVar2 < 1) {
      return false;
    }
    if (param_1 != (undefined4 *)0x0) {
      *param_1 = *(undefined4 *)(unaff_ESI + 0x10);
    }
    iVar2 = FUN_00a91380();
    return iVar2 != 0;
  }
  iVar2 = FUN_00a814d0();
  if (0 < iVar2) {
    uVar3 = FUN_00a87520(0xad8e9a);
    param_1_00 = FUN_00a802c0(uVar3);
    if (param_1_00 != 0) goto LAB_00ad8f09;
  }
  FUN_00a7f3c0(6,0xa1,0x9e,".\\crypto\\evp\\m_sigver.c",0x54);
  return false;
}



void FUN_00ad8fc0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00ad8e90(param_2,param_4,0);
  return;
}



void FUN_00ad8ff0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00ad8e90(param_2,param_4,1);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ad9020(undefined4 *param_1,int param_2,undefined4 param_3)

{
  int *piVar1;
  int iVar2;
  bool bVar3;
  int local_64;
  undefined4 local_60;
  undefined local_5c [16];
  int *local_4c;
  undefined local_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_64;
  piVar1 = (int *)param_1[4];
  bVar3 = *(int *)(*piVar1 + 0x40) != 0;
  if (param_2 == 0) {
    if (!bVar3) {
      iVar2 = FUN_00a92600(*param_1);
      if (-1 < iVar2) {
        iVar2 = FUN_00aeca20(param_1[4],0,param_3,0,iVar2);
        if (iVar2 < 1) goto LAB_00ad90e5;
        goto LAB_00ad914b;
      }
      goto LAB_00ad90e5;
    }
    iVar2 = (**(code **)(*piVar1 + 0x40))(piVar1,0,param_3,param_1);
  }
  else {
    FUN_00a91330(local_5c);
    iVar2 = FUN_00a916d0(local_5c,param_1);
    if (iVar2 == 0) goto LAB_00ad90e5;
    if (bVar3) {
      local_64 = (**(code **)(*local_4c + 0x40))(local_4c,param_2,param_3,local_5c);
    }
    else {
      local_64 = FUN_00a91540(local_5c,local_44,&local_60);
    }
    FUN_00a915c0(local_5c);
    if ((bVar3) || (local_64 == 0)) {
      ___security_check_cookie_4();
      return;
    }
    iVar2 = FUN_00aeca20(param_1[4],param_2,param_3,local_44,local_60);
  }
  if (0 < iVar2) {
LAB_00ad914b:
    ___security_check_cookie_4();
    return;
  }
LAB_00ad90e5:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ad9170(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  bool bVar2;
  undefined4 local_60;
  undefined local_5c [16];
  int *local_4c;
  undefined local_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_60;
  bVar2 = *(int *)(**(int **)(param_1 + 0x10) + 0x48) == 0;
  FUN_00a91330(local_5c);
  iVar1 = FUN_00a916d0(local_5c,param_1);
  if (iVar1 == 0) {
    ___security_check_cookie_4();
    return;
  }
  if (bVar2) {
    iVar1 = FUN_00a91540(local_5c,local_44,&local_60);
  }
  else {
    iVar1 = (**(code **)(*local_4c + 0x48))(local_4c,param_2,param_3,local_5c);
  }
  FUN_00a915c0(local_5c);
  if ((bVar2) && (iVar1 != 0)) {
    FUN_00aecb60(*(undefined4 *)(param_1 + 0x10),param_2,param_3,local_44,local_60);
    ___security_check_cookie_4();
    return;
  }
  ___security_check_cookie_4();
  return;
}



int * FUN_00ad9270(undefined4 param_1,undefined4 param_2,int **param_3)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  undefined4 uVar4;
  
  if ((param_3 == (int **)0x0) || (piVar2 = *param_3, piVar2 == (int *)0x0)) {
    piVar2 = (int *)FUN_00a91170();
    if (piVar2 == (int *)0x0) {
      uVar4 = 0x9e;
      goto LAB_00ad9290;
    }
    if (param_3 != (int **)0x0) {
      *param_3 = piVar2;
    }
  }
  piVar1 = piVar2 + 2;
  if (piVar2[2] != 0) {
    FUN_00a85120(piVar2[2]);
    *piVar1 = 0;
  }
  iVar3 = FUN_00a8ba30(param_1,piVar1,param_2);
  *piVar2 = iVar3;
  if (iVar3 == 0) {
    FUN_00a7f3c0(0xd,0xc6,0x70,".\\crypto\\asn1\\asn_pack.c",0xaa);
    return (int *)0x0;
  }
  if (*piVar1 != 0) {
    return piVar2;
  }
  uVar4 = 0xae;
LAB_00ad9290:
  FUN_00a7f3c0(0xd,0xc6,0x41,".\\crypto\\asn1\\asn_pack.c",uVar4);
  return (int *)0x0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ad9320(int *param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  undefined4 *puVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  undefined4 local_64;
  undefined4 local_60;
  undefined local_5c [24];
  undefined local_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_64;
  local_60 = param_2;
  iVar4 = 0;
  FUN_00a91330(local_5c);
  iVar2 = FUN_00a916d0(local_5c,param_1);
  if (iVar2 != 0) {
    iVar2 = FUN_00a91540(local_5c,local_44,&local_64);
    if (iVar2 != 0) {
      FUN_00a915c0(local_5c);
      puVar1 = (undefined4 *)*param_1;
      if ((*(byte *)(puVar1 + 3) & 4) == 0) {
        iVar2 = 0;
        piVar3 = puVar1 + 0xb;
        do {
          if (*piVar3 == 0) break;
          if (*param_4 == *piVar3) {
            if ((code *)puVar1[10] == (code *)0x0) {
              FUN_00a7f3c0(6,0x6c,0x69,".\\crypto\\evp\\p_verify.c",0x72);
              ___security_check_cookie_4();
              return;
            }
            (*(code *)puVar1[10])(*puVar1,local_44,local_64,local_60,param_3,param_4[5]);
            ___security_check_cookie_4();
            return;
          }
          iVar2 = iVar2 + 1;
          piVar3 = piVar3 + 1;
        } while (iVar2 < 4);
        FUN_00a7f3c0(6,0x6c,0x6e,".\\crypto\\evp\\p_verify.c",0x6d);
        ___security_check_cookie_4();
        return;
      }
      iVar4 = FUN_00a98af0(param_4,0);
      if (iVar4 != 0) {
        iVar2 = FUN_00aecb00(iVar4);
        if (0 < iVar2) {
          iVar2 = FUN_00a988b0(iVar4,0xffffffff,0xf8,1,0,*param_1);
          if (0 < iVar2) {
            FUN_00aecb60(iVar4,local_60,param_3,local_44,local_64);
          }
        }
      }
    }
  }
  FUN_00a98850(iVar4);
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00ad9520(undefined4 param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  int local_30;
  int local_2c [3];
  uint local_20;
  int local_1c;
  undefined local_18 [4];
  uint local_14 [4];
  undefined4 uStack_4;
  
  uStack_4 = 0xad952a;
  local_30 = 0;
  iVar1 = FUN_00a929e0();
  if (iVar1 == 0) {
    FUN_00a7f3c0(0xd,0x6b,0x41,".\\crypto\\asn1\\a_d2i_fp.c",0x9c);
    return 0xffffffff;
  }
  FUN_00a7f4b0();
  uVar7 = 0;
  uVar4 = 0;
  do {
    while( true ) {
      while( true ) {
        uVar3 = uVar4;
        if (uVar4 - uVar7 < 9) {
          iVar6 = (uVar7 - uVar4) + 8;
          uVar5 = uVar4 + iVar6;
          if ((uVar5 < uVar4) || (iVar2 = FUN_00a92b40(iVar1,uVar5), iVar2 == 0)) {
            uVar9 = 0xa9;
            uVar8 = 0x41;
            goto LAB_00ad968c;
          }
          iVar6 = FUN_00a83320(param_1,*(int *)(iVar1 + 4) + uVar4,iVar6);
          if ((iVar6 < 0) && (uVar4 == uVar7)) {
            uVar9 = 0xaf;
            uVar8 = 0x8e;
            goto LAB_00ad968c;
          }
          if ((0 < iVar6) && (uVar3 = iVar6 + uVar4, uVar3 < uVar4)) {
            uVar9 = 0xb6;
            goto LAB_00ad9682;
          }
        }
        iVar6 = *(int *)(iVar1 + 4) + uVar7;
        local_2c[0] = iVar6;
        local_20 = FUN_00a90eb0(local_2c,local_14,&local_1c,local_18,uVar3 - uVar7);
        if ((char)local_20 < '\0') {
          uVar4 = FUN_00a7f7a0();
          if ((uVar4 & 0xfff) != 0x9b) goto LAB_00ad9698;
          FUN_00a7f4b0();
        }
        uVar5 = uVar7 + (local_2c[0] - iVar6);
        uVar7 = uVar5;
        uVar4 = uVar3;
        if ((local_20 & 1) == 0) break;
        local_30 = local_30 + 1;
        if (local_30 < 0) {
          uVar9 = 0xd5;
          uVar8 = 0x7b;
          goto LAB_00ad968c;
        }
      }
      if (((local_30 == 0) || (local_14[0] != 0)) || (local_1c != 0)) break;
      local_30 = local_30 + -1;
      if (local_30 < 1) goto LAB_00ad9671;
    }
    if (uVar3 - uVar5 < local_14[0]) {
      uVar7 = (local_14[0] - uVar3) + uVar5;
      if ((0x7fffffff < uVar7) || (uVar3 + uVar7 < uVar3)) {
        uVar9 = 0xed;
        goto LAB_00ad9682;
      }
      iVar6 = FUN_00a92b40(iVar1,uVar3 + uVar7);
      if (iVar6 == 0) {
        uVar9 = 0xf2;
        uVar8 = 0x41;
        goto LAB_00ad968c;
      }
      for (; uVar7 != 0; uVar7 = uVar7 - iVar6) {
        iVar6 = FUN_00a83320(param_1,*(int *)(iVar1 + 4) + uVar3,uVar7);
        if (iVar6 < 1) {
          uVar9 = 0xfb;
          uVar8 = 0x8e;
          goto LAB_00ad968c;
        }
        uVar3 = uVar3 + iVar6;
      }
    }
    uVar7 = local_14[0] + uVar5;
    if (uVar7 < uVar5) {
      uVar9 = 0x106;
      goto LAB_00ad9682;
    }
    uVar5 = uVar7;
    uVar4 = uVar3;
  } while (0 < local_30);
LAB_00ad9671:
  if (uVar5 < 0x80000000) {
    *param_2 = iVar1;
    return uVar5;
  }
  uVar9 = 0x115;
LAB_00ad9682:
  uVar8 = 0x9b;
LAB_00ad968c:
  FUN_00a7f3c0(0xd,0x6b,uVar8,".\\crypto\\asn1\\a_d2i_fp.c",uVar9);
LAB_00ad9698:
  FUN_00a92a20(iVar1);
  return 0xffffffff;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ad97b0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int local_8;
  undefined4 local_4;
  
  local_4 = 0xad97ba;
  local_8 = 0;
  uVar3 = 0;
  iVar2 = FUN_00ad9520(param_2,&local_8);
  iVar1 = local_8;
  if (-1 < iVar2) {
    local_4 = *(undefined4 *)(local_8 + 4);
    uVar3 = FUN_00a8ae20(param_3,&local_4,iVar2,param_1);
  }
  if (iVar1 != 0) {
    FUN_00a92a20(iVar1);
  }
  return uVar3;
}



undefined * FUN_00ad9990(void)

{
  return &DAT_00dc5e3c;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00ad99a0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  undefined4 uVar1;
  int iVar2;
  int local_4;
  
  local_4 = 0;
  uVar1 = FUN_00a8ba30(param_3,&local_4,param_1);
  if (local_4 != 0) {
    iVar2 = FUN_00a91830(local_4,uVar1,param_4,param_5,param_2,0);
    if (iVar2 != 0) {
      FUN_00a85120(local_4);
      return 1;
    }
  }
  return 0;
}



int * FUN_00ad9a40(int *param_1,int *param_2,int param_3)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  
  piVar3 = param_2 + param_3 * 0x10 + -0x10;
  iVar2 = *param_1;
  uVar6 = param_1[1];
  uVar4 = param_1[2];
  uVar5 = param_1[3];
  do {
    uVar1 = iVar2 + -0x28955b88 + *param_2 + ((uVar4 ^ uVar5) & uVar6 ^ uVar5);
    uVar1 = (uVar1 * 0x80 | uVar1 >> 0x19) + uVar6;
    uVar5 = uVar5 + 0xe8c7b756 + param_2[1] + ((uVar6 ^ uVar4) & uVar1 ^ uVar4);
    uVar5 = (uVar5 * 0x1000 | uVar5 >> 0x14) + uVar1;
    uVar4 = uVar4 + 0x242070db + param_2[2] + ((uVar1 ^ uVar6) & uVar5 ^ uVar6);
    uVar4 = (uVar4 * 0x20000 | uVar4 >> 0xf) + uVar5;
    uVar6 = uVar6 + 0xc1bdceee + param_2[3] + ((uVar5 ^ uVar1) & uVar4 ^ uVar1);
    uVar7 = (uVar6 * 0x400000 | uVar6 >> 10) + uVar4;
    uVar6 = uVar1 + 0xf57c0faf + param_2[4] + ((uVar4 ^ uVar5) & uVar7 ^ uVar5);
    uVar6 = (uVar6 * 0x80 | uVar6 >> 0x19) + uVar7;
    uVar5 = uVar5 + 0x4787c62a + param_2[5] + ((uVar7 ^ uVar4) & uVar6 ^ uVar4);
    uVar5 = (uVar5 * 0x1000 | uVar5 >> 0x14) + uVar6;
    uVar4 = uVar4 + 0xa8304613 + param_2[6] + ((uVar6 ^ uVar7) & uVar5 ^ uVar7);
    uVar4 = (uVar4 * 0x20000 | uVar4 >> 0xf) + uVar5;
    uVar1 = uVar7 + 0xfd469501 + param_2[7] + ((uVar5 ^ uVar6) & uVar4 ^ uVar6);
    uVar1 = (uVar1 * 0x400000 | uVar1 >> 10) + uVar4;
    uVar6 = uVar6 + 0x698098d8 + param_2[8] + ((uVar4 ^ uVar5) & uVar1 ^ uVar5);
    uVar6 = (uVar6 * 0x80 | uVar6 >> 0x19) + uVar1;
    uVar5 = uVar5 + 0x8b44f7af + param_2[9] + ((uVar1 ^ uVar4) & uVar6 ^ uVar4);
    uVar5 = (uVar5 * 0x1000 | uVar5 >> 0x14) + uVar6;
    uVar4 = (uVar4 - 0xa44f) + param_2[10] + ((uVar6 ^ uVar1) & uVar5 ^ uVar1);
    uVar4 = (uVar4 * 0x20000 | uVar4 >> 0xf) + uVar5;
    uVar1 = uVar1 + 0x895cd7be + param_2[0xb] + ((uVar5 ^ uVar6) & uVar4 ^ uVar6);
    uVar1 = (uVar1 * 0x400000 | uVar1 >> 10) + uVar4;
    uVar6 = uVar6 + 0x6b901122 + param_2[0xc] + ((uVar4 ^ uVar5) & uVar1 ^ uVar5);
    uVar6 = (uVar6 * 0x80 | uVar6 >> 0x19) + uVar1;
    uVar5 = uVar5 + 0xfd987193 + param_2[0xd] + ((uVar1 ^ uVar4) & uVar6 ^ uVar4);
    uVar5 = (uVar5 * 0x1000 | uVar5 >> 0x14) + uVar6;
    uVar4 = uVar4 + 0xa679438e + param_2[0xe] + ((uVar6 ^ uVar1) & uVar5 ^ uVar1);
    uVar4 = (uVar4 * 0x20000 | uVar4 >> 0xf) + uVar5;
    uVar1 = uVar1 + 0x49b40821 + param_2[0xf] + ((uVar5 ^ uVar6) & uVar4 ^ uVar6);
    uVar1 = (uVar1 * 0x400000 | uVar1 >> 10) + uVar4;
    uVar6 = uVar6 + 0xf61e2562 + param_2[1] + ((uVar4 ^ uVar1) & uVar5 ^ uVar4);
    uVar6 = (uVar6 * 0x20 | uVar6 >> 0x1b) + uVar1;
    uVar5 = uVar5 + 0xc040b340 + param_2[6] + ((uVar1 ^ uVar6) & uVar4 ^ uVar1);
    uVar5 = (uVar5 * 0x200 | uVar5 >> 0x17) + uVar6;
    uVar4 = uVar4 + 0x265e5a51 + param_2[0xb] + ((uVar6 ^ uVar5) & uVar1 ^ uVar6);
    uVar4 = (uVar4 * 0x4000 | uVar4 >> 0x12) + uVar5;
    uVar1 = uVar1 + 0xe9b6c7aa + *param_2 + ((uVar5 ^ uVar4) & uVar6 ^ uVar5);
    uVar1 = (uVar1 * 0x100000 | uVar1 >> 0xc) + uVar4;
    uVar6 = uVar6 + 0xd62f105d + param_2[5] + ((uVar4 ^ uVar1) & uVar5 ^ uVar4);
    uVar6 = (uVar6 * 0x20 | uVar6 >> 0x1b) + uVar1;
    uVar5 = ((int)(&DAT_02441453 + ((uVar1 ^ uVar6) & uVar4 ^ uVar1) + param_2[10] + uVar5) * 0x200
            | (uint)(&DAT_02441453 + ((uVar1 ^ uVar6) & uVar4 ^ uVar1) + param_2[10] + uVar5) >>
              0x17) + uVar6;
    uVar4 = uVar4 + 0xd8a1e681 + param_2[0xf] + ((uVar6 ^ uVar5) & uVar1 ^ uVar6);
    uVar4 = (uVar4 * 0x4000 | uVar4 >> 0x12) + uVar5;
    uVar1 = uVar1 + 0xe7d3fbc8 + param_2[4] + ((uVar5 ^ uVar4) & uVar6 ^ uVar5);
    uVar1 = (uVar1 * 0x100000 | uVar1 >> 0xc) + uVar4;
    uVar6 = uVar6 + 0x21e1cde6 + param_2[9] + ((uVar4 ^ uVar1) & uVar5 ^ uVar4);
    uVar6 = (uVar6 * 0x20 | uVar6 >> 0x1b) + uVar1;
    uVar5 = uVar5 + 0xc33707d6 + param_2[0xe] + ((uVar1 ^ uVar6) & uVar4 ^ uVar1);
    uVar5 = (uVar5 * 0x200 | uVar5 >> 0x17) + uVar6;
    uVar4 = uVar4 + 0xf4d50d87 + param_2[3] + ((uVar6 ^ uVar5) & uVar1 ^ uVar6);
    uVar4 = (uVar4 * 0x4000 | uVar4 >> 0x12) + uVar5;
    uVar1 = uVar1 + 0x455a14ed + param_2[8] + ((uVar5 ^ uVar4) & uVar6 ^ uVar5);
    uVar1 = (uVar1 * 0x100000 | uVar1 >> 0xc) + uVar4;
    uVar6 = uVar6 + 0xa9e3e905 + param_2[0xd] + ((uVar4 ^ uVar1) & uVar5 ^ uVar4);
    uVar6 = (uVar6 * 0x20 | uVar6 >> 0x1b) + uVar1;
    uVar5 = uVar5 + 0xfcefa3f8 + param_2[2] + ((uVar1 ^ uVar6) & uVar4 ^ uVar1);
    uVar5 = (uVar5 * 0x200 | uVar5 >> 0x17) + uVar6;
    uVar4 = uVar4 + 0x676f02d9 + param_2[7] + ((uVar6 ^ uVar5) & uVar1 ^ uVar6);
    uVar4 = (uVar4 * 0x4000 | uVar4 >> 0x12) + uVar5;
    uVar1 = uVar1 + 0x8d2a4c8a + param_2[0xc] + ((uVar5 ^ uVar4) & uVar6 ^ uVar5);
    uVar1 = (uVar1 * 0x100000 | uVar1 >> 0xc) + uVar4;
    uVar6 = (uVar6 - 0x5c6be) + param_2[5] + (uVar4 ^ uVar5 ^ uVar1);
    uVar6 = (uVar6 * 0x10 | uVar6 >> 0x1c) + uVar1;
    uVar5 = uVar5 + 0x8771f681 + param_2[8] + (uVar1 ^ uVar4 ^ uVar6);
    uVar5 = (uVar5 * 0x800 | uVar5 >> 0x15) + uVar6;
    uVar4 = uVar4 + 0x6d9d6122 + param_2[0xb] + (uVar6 ^ uVar1 ^ uVar5);
    uVar4 = (uVar4 * 0x10000 | uVar4 >> 0x10) + uVar5;
    uVar1 = uVar1 + 0xfde5380c + param_2[0xe] + (uVar5 ^ uVar6 ^ uVar4);
    uVar1 = (uVar1 * 0x800000 | uVar1 >> 9) + uVar4;
    uVar6 = uVar6 + 0xa4beea44 + param_2[1] + (uVar4 ^ uVar5 ^ uVar1);
    uVar6 = (uVar6 * 0x10 | uVar6 >> 0x1c) + uVar1;
    uVar5 = uVar5 + 0x4bdecfa9 + param_2[4] + (uVar1 ^ uVar4 ^ uVar6);
    uVar5 = (uVar5 * 0x800 | uVar5 >> 0x15) + uVar6;
    uVar4 = uVar4 + 0xf6bb4b60 + param_2[7] + (uVar6 ^ uVar1 ^ uVar5);
    uVar4 = (uVar4 * 0x10000 | uVar4 >> 0x10) + uVar5;
    uVar1 = uVar1 + 0xbebfbc70 + param_2[10] + (uVar5 ^ uVar6 ^ uVar4);
    uVar1 = (uVar1 * 0x800000 | uVar1 >> 9) + uVar4;
    uVar6 = uVar6 + 0x289b7ec6 + param_2[0xd] + (uVar4 ^ uVar5 ^ uVar1);
    uVar6 = (uVar6 * 0x10 | uVar6 >> 0x1c) + uVar1;
    uVar5 = uVar5 + 0xeaa127fa + *param_2 + (uVar1 ^ uVar4 ^ uVar6);
    uVar5 = (uVar5 * 0x800 | uVar5 >> 0x15) + uVar6;
    uVar4 = uVar4 + 0xd4ef3085 + param_2[3] + (uVar6 ^ uVar1 ^ uVar5);
    uVar4 = (uVar4 * 0x10000 | uVar4 >> 0x10) + uVar5;
    uVar1 = uVar1 + 0x4881d05 + param_2[6] + (uVar5 ^ uVar6 ^ uVar4);
    uVar1 = (uVar1 * 0x800000 | uVar1 >> 9) + uVar4;
    uVar6 = uVar6 + 0xd9d4d039 + param_2[9] + (uVar4 ^ uVar5 ^ uVar1);
    uVar6 = (uVar6 * 0x10 | uVar6 >> 0x1c) + uVar1;
    uVar5 = uVar5 + 0xe6db99e5 + param_2[0xc] + (uVar1 ^ uVar4 ^ uVar6);
    uVar5 = (uVar5 * 0x800 | uVar5 >> 0x15) + uVar6;
    uVar4 = uVar4 + 0x1fa27cf8 + param_2[0xf] + (uVar6 ^ uVar1 ^ uVar5);
    uVar4 = (uVar4 * 0x10000 | uVar4 >> 0x10) + uVar5;
    uVar1 = uVar1 + 0xc4ac5665 + param_2[2] + (uVar5 ^ uVar6 ^ uVar4);
    uVar1 = (uVar1 * 0x800000 | uVar1 >> 9) + uVar4;
    uVar6 = uVar6 + 0xf4292244 + *param_2 + ((uVar5 ^ 0xffffffff | uVar1) ^ uVar4);
    uVar6 = (uVar6 * 0x40 | uVar6 >> 0x1a) + uVar1;
    uVar5 = uVar5 + 0x432aff97 + param_2[7] + ((uVar4 ^ 0xffffffff | uVar6) ^ uVar1);
    uVar5 = (uVar5 * 0x400 | uVar5 >> 0x16) + uVar6;
    uVar4 = uVar4 + 0xab9423a7 + param_2[0xe] + ((uVar1 ^ 0xffffffff | uVar5) ^ uVar6);
    uVar4 = (uVar4 * 0x8000 | uVar4 >> 0x11) + uVar5;
    uVar1 = uVar1 + 0xfc93a039 + param_2[5] + ((uVar6 ^ 0xffffffff | uVar4) ^ uVar5);
    uVar1 = (uVar1 * 0x200000 | uVar1 >> 0xb) + uVar4;
    uVar6 = uVar6 + 0x655b59c3 + param_2[0xc] + ((uVar5 ^ 0xffffffff | uVar1) ^ uVar4);
    uVar6 = (uVar6 * 0x40 | uVar6 >> 0x1a) + uVar1;
    uVar5 = uVar5 + 0x8f0ccc92 + param_2[3] + ((uVar4 ^ 0xffffffff | uVar6) ^ uVar1);
    uVar5 = (uVar5 * 0x400 | uVar5 >> 0x16) + uVar6;
    uVar4 = (uVar4 - 0x100b83) + param_2[10] + ((uVar1 ^ 0xffffffff | uVar5) ^ uVar6);
    uVar4 = (uVar4 * 0x8000 | uVar4 >> 0x11) + uVar5;
    uVar1 = uVar1 + 0x85845dd1 + param_2[1] + ((uVar6 ^ 0xffffffff | uVar4) ^ uVar5);
    uVar1 = (uVar1 * 0x200000 | uVar1 >> 0xb) + uVar4;
    uVar6 = uVar6 + 0x6fa87e4f + param_2[8] + ((uVar5 ^ 0xffffffff | uVar1) ^ uVar4);
    uVar6 = (uVar6 * 0x40 | uVar6 >> 0x1a) + uVar1;
    uVar5 = uVar5 + 0xfe2ce6e0 + param_2[0xf] + ((uVar4 ^ 0xffffffff | uVar6) ^ uVar1);
    uVar5 = (uVar5 * 0x400 | uVar5 >> 0x16) + uVar6;
    uVar4 = uVar4 + 0xa3014314 + param_2[6] + ((uVar1 ^ 0xffffffff | uVar5) ^ uVar6);
    uVar4 = (uVar4 * 0x8000 | uVar4 >> 0x11) + uVar5;
    uVar1 = uVar1 + 0x4e0811a1 + param_2[0xd] + ((uVar6 ^ 0xffffffff | uVar4) ^ uVar5);
    uVar1 = (uVar1 * 0x200000 | uVar1 >> 0xb) + uVar4;
    uVar6 = uVar6 + 0xf7537e82 + param_2[4] + ((uVar5 ^ 0xffffffff | uVar1) ^ uVar4);
    uVar6 = (uVar6 * 0x40 | uVar6 >> 0x1a) + uVar1;
    uVar5 = uVar5 + 0xbd3af235 + param_2[0xb] + ((uVar4 ^ 0xffffffff | uVar6) ^ uVar1);
    uVar5 = (uVar5 * 0x400 | uVar5 >> 0x16) + uVar6;
    uVar4 = uVar4 + 0x2ad7d2bb + param_2[2] + ((uVar1 ^ 0xffffffff | uVar5) ^ uVar6);
    uVar4 = (uVar4 * 0x8000 | uVar4 >> 0x11) + uVar5;
    uVar1 = uVar1 + 0xeb86d391 + param_2[9] + ((uVar6 ^ 0xffffffff | uVar4) ^ uVar5);
    param_2 = param_2 + 0x10;
    iVar2 = uVar6 + *param_1;
    uVar6 = (uVar1 * 0x200000 | uVar1 >> 0xb) + uVar4 + param_1[1];
    uVar4 = uVar4 + param_1[2];
    uVar5 = uVar5 + param_1[3];
    *param_1 = iVar2;
    param_1[1] = uVar6;
    param_1[2] = uVar4;
    param_1[3] = uVar5;
  } while (param_2 <= piVar3);
  return piVar3;
}



// WARNING: Removing unreachable block (ram,0x00adb351)
// WARNING: Removing unreachable block (ram,0x00adb41c)
// WARNING: Removing unreachable block (ram,0x00adb28c)
// WARNING: Removing unreachable block (ram,0x00adb1c8)
// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_00ada100(uint *param_1,undefined (*param_2) [16],int param_3)

{
  undefined (*pauVar1) [16];
  undefined (*pauVar2) [16];
  undefined auVar3 [32];
  undefined auVar4 [32];
  undefined auVar5 [32];
  undefined auVar6 [32];
  undefined auVar7 [32];
  undefined auVar8 [32];
  undefined auVar9 [32];
  undefined auVar10 [32];
  undefined auVar11 [32];
  undefined auVar12 [32];
  undefined auVar13 [32];
  undefined auVar14 [32];
  undefined auVar15 [32];
  undefined auVar16 [32];
  undefined auVar17 [32];
  undefined auVar18 [32];
  undefined auVar19 [16];
  undefined auVar20 [16];
  undefined auVar21 [16];
  undefined (*pauVar22) [16];
  uint uVar23;
  uint uVar24;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  uint uVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  uint uVar32;
  uint uVar33;
  uint uVar34;
  uint uVar35;
  uint uVar36;
  uint uVar37;
  uint uVar38;
  uint uVar39;
  uint uVar40;
  uint uVar41;
  uint uVar42;
  uint uVar43;
  uint uVar44;
  uint uVar45;
  uint uVar46;
  uint uVar47;
  uint uVar48;
  undefined auVar49 [16];
  undefined auVar50 [16];
  undefined auVar51 [16];
  undefined auVar52 [16];
  undefined auVar53 [16];
  undefined auVar54 [16];
  undefined auVar55 [16];
  undefined auVar56 [16];
  undefined auVar57 [16];
  undefined auVar58 [16];
  undefined auVar59 [16];
  undefined auVar60 [16];
  undefined auVar61 [16];
  undefined auVar62 [16];
  undefined auVar63 [16];
  undefined in_ZMM3 [64];
  undefined auVar64 [64];
  undefined auVar65 [16];
  undefined auVar66 [16];
  undefined auVar67 [16];
  undefined auVar68 [16];
  undefined auVar69 [16];
  undefined auVar70 [16];
  undefined auVar71 [16];
  int iVar72;
  int iVar78;
  int iVar79;
  undefined auVar73 [16];
  undefined auVar74 [16];
  undefined auVar75 [16];
  undefined auVar76 [16];
  int iVar80;
  undefined auVar77 [16];
  int iVar81;
  int iVar87;
  int iVar88;
  undefined auVar82 [16];
  undefined auVar83 [16];
  undefined auVar84 [16];
  undefined auVar85 [16];
  undefined auVar86 [16];
  int iVar89;
  int iVar90;
  int iVar98;
  int iVar100;
  int iVar102;
  undefined auVar92 [16];
  undefined auVar93 [16];
  undefined auVar94 [16];
  undefined auVar95 [16];
  undefined auVar96 [16];
  int iVar91;
  int iVar99;
  int iVar101;
  int iVar103;
  undefined auVar97 [16];
  undefined local_100 [8];
  int iStack_f8;
  int iStack_f4;
  undefined local_f0 [8];
  int iStack_e8;
  int iStack_e4;
  undefined local_e0 [8];
  int iStack_d8;
  int iStack_d4;
  int local_d0;
  int iStack_cc;
  int iStack_c8;
  int iStack_c4;
  undefined (*local_3c) [16];
  
  auVar21 = _DAT_00adce40;
  auVar49 = _DAT_00adce00;
  if (((DAT_032f16d4 & 0x200) != 0) && ((DAT_032f16d0 & 0x1000000) != 0)) {
    if ((DAT_032f16d0 & 0x40000000 | DAT_032f16d4 & 0x10000000) != 0x50000000) {
      local_3c = param_2 + 4;
      uVar29 = *param_1;
      uVar24 = param_1[1];
      uVar30 = param_1[2];
      uVar35 = param_1[3];
      uVar36 = param_1[4];
      auVar64._16_48_ = in_ZMM3._16_48_;
      auVar49 = pshufb(*param_2,_DAT_00adce40);
      auVar51 = pshufb(param_2[1],_DAT_00adce40);
      auVar54 = pshufb(param_2[2],_DAT_00adce40);
      auVar64._0_16_ = pshufb(param_2[3],_DAT_00adce40);
      iVar90 = SUB164(_DAT_00adce00,0);
      local_100._0_4_ = auVar49._0_4_ + iVar90;
      iVar98 = SUB164(_DAT_00adce00,4);
      local_100._4_4_ = auVar49._4_4_ + iVar98;
      iVar100 = SUB164(_DAT_00adce00,8);
      iStack_f8 = auVar49._8_4_ + iVar100;
      iVar102 = SUB164(_DAT_00adce00,0xc);
      iStack_f4 = auVar49._12_4_ + iVar102;
      local_f0._0_4_ = auVar51._0_4_ + iVar90;
      local_f0._4_4_ = auVar51._4_4_ + iVar98;
      iStack_e8 = auVar51._8_4_ + iVar100;
      iStack_e4 = auVar51._12_4_ + iVar102;
      local_e0._0_4_ = auVar54._0_4_ + iVar90;
      local_e0._4_4_ = auVar54._4_4_ + iVar98;
      iStack_d8 = auVar54._8_4_ + iVar100;
      iStack_d4 = auVar54._12_4_ + iVar102;
      auVar49._0_4_ = local_100._0_4_ - iVar90;
      auVar49._4_4_ = local_100._4_4_ - iVar98;
      auVar49._8_4_ = iStack_f8 - iVar100;
      auVar49._12_4_ = iStack_f4 - iVar102;
      auVar51._0_4_ = local_f0._0_4_ - iVar90;
      auVar51._4_4_ = local_f0._4_4_ - iVar98;
      auVar51._8_4_ = iStack_e8 - iVar100;
      auVar51._12_4_ = iStack_e4 - iVar102;
      auVar54._0_4_ = local_e0._0_4_ - iVar90;
      auVar54._4_4_ = local_e0._4_4_ - iVar98;
      auVar54._8_4_ = iStack_d8 - iVar100;
      auVar54._12_4_ = iStack_d4 - iVar102;
      while( true ) {
        auVar3._16_16_ = auVar51;
        auVar3._0_16_ = auVar49;
        auVar71 = auVar64._0_16_;
        uVar23 = uVar29 << 5 | uVar29 >> 0x1b;
        uVar42 = uVar24 >> 2 | uVar24 << 0x1e;
        uVar47 = uVar36 + local_100._0_4_ + uVar23 + (uVar24 & (uVar30 ^ uVar35) ^ uVar35);
        uVar48 = uVar47 * 0x20 | uVar47 >> 0x1b;
        auVar65 = auVar3._8_16_ ^ auVar49 ^ auVar71 >> 0x20 ^ auVar54;
        uVar24 = (uVar29 << 5) >> 7 | uVar23 << 0x19;
        uVar35 = uVar35 + local_100._4_4_ + uVar48 + (uVar29 & (uVar42 ^ uVar30) ^ uVar30);
        uVar23 = auVar65._0_4_;
        auVar66._4_4_ = auVar65._4_4_ * 2;
        auVar66._0_4_ = uVar23 * 2;
        auVar66._8_4_ = auVar65._8_4_ * 2;
        auVar66._12_4_ = auVar65._12_4_ * 2;
        uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
        auVar82._0_4_ = uVar23 >> 0x1f;
        auVar82._4_4_ = auVar65._4_4_ >> 0x1f;
        auVar82._8_4_ = auVar65._8_4_ >> 0x1f;
        auVar82._12_4_ = auVar65._12_4_ >> 0x1f;
        uVar48 = uVar47 * 0x20 >> 7 | uVar48 << 0x19;
        uVar29 = uVar30 + iStack_f8 + uVar36 + (uVar47 & (uVar24 ^ uVar42) ^ uVar42);
        uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
        auVar67 = (auVar66 | auVar82) ^ ZEXT416(uVar23 >> 0x1e) << 0x60 ^
                  ZEXT416(uVar23 << 2) << 0x60;
        uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
        uVar35 = uVar42 + iStack_f4 + uVar30 + (uVar35 & (uVar48 ^ uVar24) ^ uVar24);
        auVar4._16_16_ = auVar54;
        auVar4._0_16_ = auVar51;
        uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
        uVar29 = uVar24 + local_f0._0_4_ + uVar23 + (uVar29 & (uVar36 ^ uVar48) ^ uVar48);
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        auVar65 = auVar4._8_16_ ^ auVar51 ^ auVar67 >> 0x20 ^ auVar71;
        uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
        uVar42 = uVar48 + local_f0._4_4_ + uVar24 + (uVar35 & (uVar30 ^ uVar36) ^ uVar36);
        uVar48 = auVar65._0_4_;
        auVar73._4_4_ = auVar65._4_4_ * 2;
        auVar73._0_4_ = uVar48 * 2;
        auVar73._8_4_ = auVar65._8_4_ * 2;
        auVar73._12_4_ = auVar65._12_4_ * 2;
        uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
        auVar92._0_4_ = uVar48 >> 0x1f;
        auVar92._4_4_ = auVar65._4_4_ >> 0x1f;
        auVar92._8_4_ = auVar65._8_4_ >> 0x1f;
        auVar92._12_4_ = auVar65._12_4_ >> 0x1f;
        uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        uVar35 = uVar36 + iStack_e8 + uVar47 + (uVar29 & (uVar23 ^ uVar30) ^ uVar30);
        uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
        auVar74 = (auVar73 | auVar92) ^ ZEXT416(uVar48 >> 0x1e) << 0x60 ^
                  ZEXT416(uVar48 << 2) << 0x60;
        uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
        uVar29 = uVar30 + iStack_e4 + uVar36 + (uVar42 & (uVar24 ^ uVar23) ^ uVar23);
        auVar5._16_16_ = auVar71;
        auVar5._0_16_ = auVar54;
        uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
        uVar35 = uVar23 + local_e0._0_4_ + uVar30 + (uVar35 & (uVar47 ^ uVar24) ^ uVar24);
        uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
        auVar83 = auVar5._8_16_ ^ auVar54 ^ auVar74 >> 0x20 ^ auVar67;
        uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
        uVar29 = uVar24 + local_e0._4_4_ + uVar23 + (uVar29 & (uVar36 ^ uVar47) ^ uVar47);
        uVar48 = auVar83._0_4_;
        auVar84._4_4_ = auVar83._4_4_ * 2;
        auVar84._0_4_ = uVar48 * 2;
        auVar84._8_4_ = auVar83._8_4_ * 2;
        auVar84._12_4_ = auVar83._12_4_ * 2;
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        auVar65._0_4_ = uVar48 >> 0x1f;
        auVar65._4_4_ = auVar83._4_4_ >> 0x1f;
        auVar65._8_4_ = auVar83._8_4_ >> 0x1f;
        auVar65._12_4_ = auVar83._12_4_ >> 0x1f;
        uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
        uVar42 = uVar47 + iStack_d8 + uVar24 + (uVar35 & (uVar30 ^ uVar36) ^ uVar36);
        uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
        auVar65 = (auVar84 | auVar65) ^ ZEXT416(uVar48 >> 0x1e) << 0x60 ^
                  ZEXT416(uVar48 << 2) << 0x60;
        uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        uVar35 = uVar36 + iStack_d4 + uVar47 + (uVar29 & (uVar23 ^ uVar30) ^ uVar30);
        auVar6._16_16_ = auVar67;
        auVar6._0_16_ = auVar71;
        uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
        uVar29 = uVar30 + iVar90 + auVar64._0_4_ + uVar36 + (uVar42 & (uVar24 ^ uVar23) ^ uVar23);
        uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
        auVar83 = auVar6._8_16_ ^ auVar71 ^ auVar65 >> 0x20 ^ auVar74;
        uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
        uVar35 = uVar23 + iVar98 + auVar64._4_4_ + uVar30 + (uVar35 & (uVar47 ^ uVar24) ^ uVar24);
        uVar42 = auVar83._0_4_;
        auVar93._4_4_ = auVar83._4_4_ * 2;
        auVar93._0_4_ = uVar42 * 2;
        auVar93._8_4_ = auVar83._8_4_ * 2;
        auVar93._12_4_ = auVar83._12_4_ * 2;
        uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
        auVar97._0_4_ = uVar42 >> 0x1f;
        auVar97._4_4_ = auVar83._4_4_ >> 0x1f;
        auVar97._8_4_ = auVar83._8_4_ >> 0x1f;
        auVar97._12_4_ = auVar83._12_4_ >> 0x1f;
        uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
        uVar29 = uVar24 + iVar100 + auVar64._8_4_ + uVar23 + (uVar29 & (uVar36 ^ uVar47) ^ uVar47);
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        auVar94 = (auVar93 | auVar97) ^ ZEXT416(uVar42 >> 0x1e) << 0x60 ^
                  ZEXT416(uVar42 << 2) << 0x60;
        uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
        uVar42 = uVar47 + iVar102 + auVar64._12_4_ + uVar24 + (uVar35 & (uVar30 ^ uVar36) ^ uVar36);
        auVar7._16_16_ = auVar94;
        auVar7._0_16_ = auVar65;
        uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
        auVar49 = auVar49 ^ auVar67 ^ auVar51 ^ auVar7._8_16_;
        uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        uVar35 = uVar36 + iVar90 + auVar67._0_4_ + uVar47 + (uVar29 & (uVar23 ^ uVar30) ^ uVar30);
        uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
        auVar83._0_4_ = auVar49._0_4_ << 2;
        auVar83._4_4_ = auVar49._4_4_ << 2;
        auVar83._8_4_ = auVar49._8_4_ << 2;
        auVar83._12_4_ = auVar49._12_4_ << 2;
        auVar58._0_4_ = auVar49._0_4_ >> 0x1e;
        auVar58._4_4_ = auVar49._4_4_ >> 0x1e;
        auVar58._8_4_ = auVar49._8_4_ >> 0x1e;
        auVar58._12_4_ = auVar49._12_4_ >> 0x1e;
        uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
        uVar29 = uVar30 + iVar98 + auVar67._4_4_ + uVar36 + (uVar42 & (uVar24 ^ uVar23) ^ uVar23);
        uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
        auVar83 = auVar83 | auVar58;
        uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
        uVar35 = uVar23 + iVar100 + auVar67._8_4_ + uVar30 + (uVar35 & (uVar47 ^ uVar24) ^ uVar24);
        uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
        uVar29 = uVar24 + iVar102 + auVar67._12_4_ + uVar23 + (uVar29 & (uVar36 ^ uVar47) ^ uVar47);
        auVar8._16_16_ = auVar83;
        auVar8._0_16_ = auVar94;
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
        uVar42 = uVar47 + auVar74._0_4_ + 0x6ed9eba1 + uVar24 + (uVar35 ^ uVar36 ^ uVar30);
        auVar49 = auVar51 ^ auVar74 ^ auVar54 ^ auVar8._8_16_;
        uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
        uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        uVar35 = uVar36 + auVar74._4_4_ + 0x6ed9eba1 + uVar47 + (uVar29 ^ uVar30 ^ uVar23);
        auVar52._0_4_ = auVar49._0_4_ << 2;
        auVar52._4_4_ = auVar49._4_4_ << 2;
        auVar52._8_4_ = auVar49._8_4_ << 2;
        auVar52._12_4_ = auVar49._12_4_ << 2;
        auVar60._0_4_ = auVar49._0_4_ >> 0x1e;
        auVar60._4_4_ = auVar49._4_4_ >> 0x1e;
        auVar60._8_4_ = auVar49._8_4_ >> 0x1e;
        auVar60._12_4_ = auVar49._12_4_ >> 0x1e;
        uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
        uVar29 = uVar30 + auVar74._8_4_ + 0x6ed9eba1 + uVar36 + (uVar42 ^ uVar23 ^ uVar24);
        auVar52 = auVar52 | auVar60;
        uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
        uVar35 = uVar23 + auVar74._12_4_ + 0x6ed9eba1 + uVar30 + (uVar35 ^ uVar24 ^ uVar47);
        auVar9._16_16_ = auVar52;
        auVar9._0_16_ = auVar83;
        uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
        uVar29 = uVar24 + auVar65._0_4_ + 0x6ed9eba1 + uVar23 + (uVar29 ^ uVar47 ^ uVar36);
        auVar49 = auVar54 ^ auVar65 ^ auVar71 ^ auVar9._8_16_;
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
        uVar42 = uVar47 + auVar65._4_4_ + 0x6ed9eba1 + uVar24 + (uVar35 ^ uVar36 ^ uVar30);
        auVar55._0_4_ = auVar49._0_4_ << 2;
        auVar55._4_4_ = auVar49._4_4_ << 2;
        auVar55._8_4_ = auVar49._8_4_ << 2;
        auVar55._12_4_ = auVar49._12_4_ << 2;
        auVar68._0_4_ = auVar49._0_4_ >> 0x1e;
        auVar68._4_4_ = auVar49._4_4_ >> 0x1e;
        auVar68._8_4_ = auVar49._8_4_ >> 0x1e;
        auVar68._12_4_ = auVar49._12_4_ >> 0x1e;
        uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
        uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        uVar35 = uVar36 + auVar65._8_4_ + 0x6ed9eba1 + uVar47 + (uVar29 ^ uVar30 ^ uVar23);
        auVar55 = auVar55 | auVar68;
        uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
        uVar29 = uVar30 + auVar65._12_4_ + 0x6ed9eba1 + uVar36 + (uVar42 ^ uVar23 ^ uVar24);
        auVar10._16_16_ = auVar55;
        auVar10._0_16_ = auVar52;
        uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
        uVar35 = uVar23 + auVar94._0_4_ + 0x6ed9eba1 + uVar30 + (uVar35 ^ uVar24 ^ uVar47);
        auVar49 = auVar71 ^ auVar94 ^ auVar67 ^ auVar10._8_16_;
        uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
        uVar29 = uVar24 + auVar94._4_4_ + 0x6ed9eba1 + uVar23 + (uVar29 ^ uVar47 ^ uVar36);
        auVar61._0_4_ = auVar49._0_4_ << 2;
        auVar61._4_4_ = auVar49._4_4_ << 2;
        auVar61._8_4_ = auVar49._8_4_ << 2;
        auVar61._12_4_ = auVar49._12_4_ << 2;
        auVar75._0_4_ = auVar49._0_4_ >> 0x1e;
        auVar75._4_4_ = auVar49._4_4_ >> 0x1e;
        auVar75._8_4_ = auVar49._8_4_ >> 0x1e;
        auVar75._12_4_ = auVar49._12_4_ >> 0x1e;
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
        uVar42 = uVar47 + auVar94._8_4_ + 0x6ed9eba1 + uVar24 + (uVar35 ^ uVar36 ^ uVar30);
        auVar61 = auVar61 | auVar75;
        uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
        uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        uVar35 = uVar36 + auVar94._12_4_ + 0x6ed9eba1 + uVar47 + (uVar29 ^ uVar30 ^ uVar23);
        auVar11._16_16_ = auVar61;
        auVar11._0_16_ = auVar55;
        uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
        uVar29 = uVar30 + auVar83._0_4_ + 0x6ed9eba1 + uVar36 + (uVar42 ^ uVar23 ^ uVar24);
        auVar49 = auVar67 ^ auVar83 ^ auVar74 ^ auVar11._8_16_;
        uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
        uVar35 = uVar23 + auVar83._4_4_ + 0x6ed9eba1 + uVar30 + (uVar35 ^ uVar24 ^ uVar47);
        auVar69._0_4_ = auVar49._0_4_ << 2;
        auVar69._4_4_ = auVar49._4_4_ << 2;
        auVar69._8_4_ = auVar49._8_4_ << 2;
        auVar69._12_4_ = auVar49._12_4_ << 2;
        auVar85._0_4_ = auVar49._0_4_ >> 0x1e;
        auVar85._4_4_ = auVar49._4_4_ >> 0x1e;
        auVar85._8_4_ = auVar49._8_4_ >> 0x1e;
        auVar85._12_4_ = auVar49._12_4_ >> 0x1e;
        uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
        uVar29 = uVar24 + auVar83._8_4_ + 0x6ed9eba1 + uVar23 + (uVar29 ^ uVar47 ^ uVar36);
        auVar69 = auVar69 | auVar85;
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
        uVar42 = uVar47 + auVar83._12_4_ + 0x6ed9eba1 + uVar24 + (uVar35 ^ uVar36 ^ uVar30);
        auVar12._16_16_ = auVar69;
        auVar12._0_16_ = auVar61;
        uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
        uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        uVar35 = uVar36 + auVar52._0_4_ + 0x6ed9eba1 + uVar47 + (uVar29 ^ uVar30 ^ uVar23);
        auVar49 = auVar74 ^ auVar52 ^ auVar65 ^ auVar12._8_16_;
        uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
        uVar29 = uVar30 + auVar52._4_4_ + 0x6ed9eba1 + uVar36 + (uVar42 ^ uVar23 ^ uVar24);
        auVar76._0_4_ = auVar49._0_4_ << 2;
        auVar76._4_4_ = auVar49._4_4_ << 2;
        auVar76._8_4_ = auVar49._8_4_ << 2;
        auVar76._12_4_ = auVar49._12_4_ << 2;
        auVar95._0_4_ = auVar49._0_4_ >> 0x1e;
        auVar95._4_4_ = auVar49._4_4_ >> 0x1e;
        auVar95._8_4_ = auVar49._8_4_ >> 0x1e;
        auVar95._12_4_ = auVar49._12_4_ >> 0x1e;
        uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
        uVar35 = uVar23 + auVar52._8_4_ + 0x6ed9eba1 + uVar30 + (uVar35 ^ uVar24 ^ uVar47);
        auVar76 = auVar76 | auVar95;
        uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
        uVar29 = uVar24 + auVar52._12_4_ + 0x6ed9eba1 + uVar23 + (uVar29 ^ uVar47 ^ uVar36);
        auVar13._16_16_ = auVar76;
        auVar13._0_16_ = auVar69;
        uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
        auVar49 = auVar65 ^ auVar55 ^ auVar94 ^ auVar13._8_16_;
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar42 = uVar47 + auVar55._0_4_ + -0x70e44324 + (uVar30 & uVar36) +
                 (uVar35 & (uVar30 ^ uVar36)) + uVar24;
        auVar86._0_4_ = auVar49._0_4_ << 2;
        auVar86._4_4_ = auVar49._4_4_ << 2;
        auVar86._8_4_ = auVar49._8_4_ << 2;
        auVar86._12_4_ = auVar49._12_4_ << 2;
        uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        auVar71._0_4_ = auVar49._0_4_ >> 0x1e;
        auVar71._4_4_ = auVar49._4_4_ >> 0x1e;
        auVar71._8_4_ = auVar49._8_4_ >> 0x1e;
        auVar71._12_4_ = auVar49._12_4_ >> 0x1e;
        uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
        uVar35 = uVar36 + auVar55._4_4_ + -0x70e44324 + (uVar23 & uVar30) +
                 (uVar29 & (uVar23 ^ uVar30)) + uVar47;
        auVar86 = auVar86 | auVar71;
        uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
        uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar29 = uVar30 + auVar55._8_4_ + -0x70e44324 + (uVar24 & uVar23) +
                 (uVar42 & (uVar24 ^ uVar23)) + uVar36;
        uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
        uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar35 = uVar23 + auVar55._12_4_ + -0x70e44324 + (uVar47 & uVar24) +
                 (uVar35 & (uVar47 ^ uVar24)) + uVar30;
        auVar14._16_16_ = auVar86;
        auVar14._0_16_ = auVar76;
        uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
        auVar49 = auVar94 ^ auVar61 ^ auVar83 ^ auVar14._8_16_;
        uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar29 = uVar24 + auVar61._0_4_ + -0x70e44324 + (uVar36 & uVar47) +
                 (uVar29 & (uVar36 ^ uVar47)) + uVar23;
        auVar96._0_4_ = auVar49._0_4_ << 2;
        auVar96._4_4_ = auVar49._4_4_ << 2;
        auVar96._8_4_ = auVar49._8_4_ << 2;
        auVar96._12_4_ = auVar49._12_4_ << 2;
        uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
        auVar50._0_4_ = auVar49._0_4_ >> 0x1e;
        auVar50._4_4_ = auVar49._4_4_ >> 0x1e;
        auVar50._8_4_ = auVar49._8_4_ >> 0x1e;
        auVar50._12_4_ = auVar49._12_4_ >> 0x1e;
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar42 = uVar47 + auVar61._4_4_ + -0x70e44324 + (uVar30 & uVar36) +
                 (uVar35 & (uVar30 ^ uVar36)) + uVar24;
        auVar96 = auVar96 | auVar50;
        uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
        uVar35 = uVar36 + auVar61._8_4_ + -0x70e44324 + (uVar23 & uVar30) +
                 (uVar29 & (uVar23 ^ uVar30)) + uVar47;
        uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
        uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar29 = uVar30 + auVar61._12_4_ + -0x70e44324 + (uVar24 & uVar23) +
                 (uVar42 & (uVar24 ^ uVar23)) + uVar36;
        auVar15._16_16_ = auVar96;
        auVar15._0_16_ = auVar86;
        uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
        auVar49 = auVar83 ^ auVar69 ^ auVar52 ^ auVar15._8_16_;
        uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar35 = uVar23 + auVar69._0_4_ + -0x70e44324 + (uVar47 & uVar24) +
                 (uVar35 & (uVar47 ^ uVar24)) + uVar30;
        auVar67._0_4_ = auVar49._0_4_ << 2;
        auVar67._4_4_ = auVar49._4_4_ << 2;
        auVar67._8_4_ = auVar49._8_4_ << 2;
        auVar67._12_4_ = auVar49._12_4_ << 2;
        uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
        auVar56._0_4_ = auVar49._0_4_ >> 0x1e;
        auVar56._4_4_ = auVar49._4_4_ >> 0x1e;
        auVar56._8_4_ = auVar49._8_4_ >> 0x1e;
        auVar56._12_4_ = auVar49._12_4_ >> 0x1e;
        uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar29 = uVar24 + auVar69._4_4_ + -0x70e44324 + (uVar36 & uVar47) +
                 (uVar29 & (uVar36 ^ uVar47)) + uVar23;
        auVar67 = auVar67 | auVar56;
        uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar42 = uVar47 + auVar69._8_4_ + -0x70e44324 + (uVar30 & uVar36) +
                 (uVar35 & (uVar30 ^ uVar36)) + uVar24;
        uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
        uVar35 = uVar36 + auVar69._12_4_ + -0x70e44324 + (uVar23 & uVar30) +
                 (uVar29 & (uVar23 ^ uVar30)) + uVar47;
        auVar16._16_16_ = auVar67;
        auVar16._0_16_ = auVar96;
        uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
        auVar49 = auVar52 ^ auVar76 ^ auVar55 ^ auVar16._8_16_;
        uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar29 = uVar30 + auVar76._0_4_ + -0x70e44324 + (uVar24 & uVar23) +
                 (uVar42 & (uVar24 ^ uVar23)) + uVar36;
        auVar53._0_4_ = auVar49._0_4_ << 2;
        auVar53._4_4_ = auVar49._4_4_ << 2;
        auVar53._8_4_ = auVar49._8_4_ << 2;
        auVar53._12_4_ = auVar49._12_4_ << 2;
        uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
        auVar62._0_4_ = auVar49._0_4_ >> 0x1e;
        auVar62._4_4_ = auVar49._4_4_ >> 0x1e;
        auVar62._8_4_ = auVar49._8_4_ >> 0x1e;
        auVar62._12_4_ = auVar49._12_4_ >> 0x1e;
        uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar35 = uVar23 + auVar76._4_4_ + -0x70e44324 + (uVar47 & uVar24) +
                 (uVar35 & (uVar47 ^ uVar24)) + uVar30;
        auVar53 = auVar53 | auVar62;
        uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
        uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar29 = uVar24 + auVar76._8_4_ + -0x70e44324 + (uVar36 & uVar47) +
                 (uVar29 & (uVar36 ^ uVar47)) + uVar23;
        uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar42 = uVar47 + auVar76._12_4_ + -0x70e44324 + (uVar30 & uVar36) +
                 (uVar35 & (uVar30 ^ uVar36)) + uVar24;
        auVar17._16_16_ = auVar53;
        auVar17._0_16_ = auVar67;
        uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        iVar72 = auVar53._0_4_ + -0x359d3e2a;
        iVar78 = auVar53._4_4_ + -0x359d3e2a;
        iVar79 = auVar53._8_4_ + -0x359d3e2a;
        iVar80 = auVar53._12_4_ + -0x359d3e2a;
        auVar49 = auVar55 ^ auVar86 ^ auVar61 ^ auVar17._8_16_;
        uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
        uVar35 = uVar36 + auVar86._0_4_ + -0x70e44324 + (uVar23 & uVar30) +
                 (uVar29 & (uVar23 ^ uVar30)) + uVar47;
        auVar57._0_4_ = auVar49._0_4_ << 2;
        auVar57._4_4_ = auVar49._4_4_ << 2;
        auVar57._8_4_ = auVar49._8_4_ << 2;
        auVar57._12_4_ = auVar49._12_4_ << 2;
        uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
        auVar70._0_4_ = auVar49._0_4_ >> 0x1e;
        auVar70._4_4_ = auVar49._4_4_ >> 0x1e;
        auVar70._8_4_ = auVar49._8_4_ >> 0x1e;
        auVar70._12_4_ = auVar49._12_4_ >> 0x1e;
        uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar29 = uVar30 + auVar86._4_4_ + -0x70e44324 + (uVar24 & uVar23) +
                 (uVar42 & (uVar24 ^ uVar23)) + uVar36;
        auVar57 = auVar57 | auVar70;
        uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
        uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar35 = uVar23 + auVar86._8_4_ + -0x70e44324 + (uVar47 & uVar24) +
                 (uVar35 & (uVar47 ^ uVar24)) + uVar30;
        uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
        uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar29 = uVar24 + auVar86._12_4_ + -0x70e44324 + (uVar36 & uVar47) +
                 (uVar29 & (uVar36 ^ uVar47)) + uVar23;
        auVar18._16_16_ = auVar57;
        auVar18._0_16_ = auVar53;
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        iVar81 = auVar57._0_4_ + -0x359d3e2a;
        iVar87 = auVar57._4_4_ + -0x359d3e2a;
        iVar88 = auVar57._8_4_ + -0x359d3e2a;
        iVar89 = auVar57._12_4_ + -0x359d3e2a;
        uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
        uVar42 = uVar47 + auVar96._0_4_ + -0x359d3e2a + uVar24 + (uVar35 ^ uVar36 ^ uVar30);
        auVar49 = auVar61 ^ auVar96 ^ auVar69 ^ auVar18._8_16_;
        uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
        uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        uVar35 = uVar36 + auVar96._4_4_ + -0x359d3e2a + uVar47 + (uVar29 ^ uVar30 ^ uVar23);
        auVar63._0_4_ = auVar49._0_4_ << 2;
        auVar63._4_4_ = auVar49._4_4_ << 2;
        auVar63._8_4_ = auVar49._8_4_ << 2;
        auVar63._12_4_ = auVar49._12_4_ << 2;
        auVar77._0_4_ = auVar49._0_4_ >> 0x1e;
        auVar77._4_4_ = auVar49._4_4_ >> 0x1e;
        auVar77._8_4_ = auVar49._8_4_ >> 0x1e;
        auVar77._12_4_ = auVar49._12_4_ >> 0x1e;
        uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
        uVar29 = uVar30 + auVar96._8_4_ + -0x359d3e2a + uVar36 + (uVar42 ^ uVar23 ^ uVar24);
        auVar63 = auVar63 | auVar77;
        uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
        uVar35 = uVar23 + auVar96._12_4_ + -0x359d3e2a + uVar30 + (uVar35 ^ uVar24 ^ uVar47);
        iVar91 = auVar63._0_4_ + -0x359d3e2a;
        iVar99 = auVar63._4_4_ + -0x359d3e2a;
        iVar101 = auVar63._8_4_ + -0x359d3e2a;
        iVar103 = auVar63._12_4_ + -0x359d3e2a;
        uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
        uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
        uVar29 = uVar24 + auVar67._0_4_ + -0x359d3e2a + uVar23 + (uVar29 ^ uVar47 ^ uVar36);
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
        uVar42 = uVar47 + auVar67._4_4_ + -0x359d3e2a + uVar24 + (uVar35 ^ uVar36 ^ uVar30);
        uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
        uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        uVar35 = uVar36 + auVar67._8_4_ + -0x359d3e2a + uVar47 + (uVar29 ^ uVar30 ^ uVar23);
        uVar29 = uVar35 * 0x20;
        uVar36 = uVar29 | uVar35 >> 0x1b;
        uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
        uVar30 = uVar30 + auVar67._12_4_ + -0x359d3e2a + uVar36 + (uVar42 ^ uVar23 ^ uVar24);
        if (local_3c == param_2 + param_3 * 4) break;
        auVar49 = *local_3c;
        pauVar22 = local_3c + 1;
        pauVar1 = local_3c + 2;
        pauVar2 = local_3c + 3;
        local_3c = local_3c + 4;
        auVar49 = pshufb(auVar49,auVar21);
        auVar51 = pshufb(*pauVar22,auVar21);
        uVar42 = uVar30 * 0x20 | uVar30 >> 0x1b;
        local_100._0_4_ = auVar49._0_4_ + iVar90;
        local_100._4_4_ = auVar49._4_4_ + iVar98;
        iStack_f8 = auVar49._8_4_ + iVar100;
        iStack_f4 = auVar49._12_4_ + iVar102;
        uVar36 = uVar29 >> 7 | uVar36 << 0x19;
        uVar23 = uVar23 + iVar72 + uVar42 + (uVar35 ^ uVar24 ^ uVar47);
        auVar49._0_4_ = local_100._0_4_ - iVar90;
        auVar49._4_4_ = local_100._4_4_ - iVar98;
        auVar49._8_4_ = iStack_f8 - iVar100;
        auVar49._12_4_ = iStack_f4 - iVar102;
        uVar48 = uVar23 * 0x20 | uVar23 >> 0x1b;
        uVar35 = uVar30 * 0x20 >> 7 | uVar42 << 0x19;
        uVar29 = uVar24 + iVar78 + uVar48 + (uVar30 ^ uVar47 ^ uVar36);
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar42 = uVar23 * 0x20 >> 7 | uVar48 << 0x19;
        uVar30 = uVar47 + iVar79 + uVar24 + (uVar23 ^ uVar36 ^ uVar35);
        uVar47 = uVar30 * 0x20 | uVar30 >> 0x1b;
        uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        uVar36 = uVar36 + iVar80 + uVar47 + (uVar29 ^ uVar35 ^ uVar42);
        auVar54 = pshufb(*pauVar1,auVar21);
        uVar23 = uVar36 * 0x20 | uVar36 >> 0x1b;
        local_f0._0_4_ = auVar51._0_4_ + iVar90;
        local_f0._4_4_ = auVar51._4_4_ + iVar98;
        iStack_e8 = auVar51._8_4_ + iVar100;
        iStack_e4 = auVar51._12_4_ + iVar102;
        uVar48 = uVar30 * 0x20 >> 7 | uVar47 << 0x19;
        uVar29 = uVar35 + iVar81 + uVar23 + (uVar30 ^ uVar42 ^ uVar24);
        auVar51._0_4_ = local_f0._0_4_ - iVar90;
        auVar51._4_4_ = local_f0._4_4_ - iVar98;
        auVar51._8_4_ = iStack_e8 - iVar100;
        auVar51._12_4_ = iStack_e4 - iVar102;
        uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar23 = uVar36 * 0x20 >> 7 | uVar23 << 0x19;
        uVar36 = uVar42 + iVar87 + uVar30 + (uVar36 ^ uVar24 ^ uVar48);
        uVar42 = uVar36 * 0x20 | uVar36 >> 0x1b;
        uVar35 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
        uVar29 = uVar24 + iVar88 + uVar42 + (uVar29 ^ uVar48 ^ uVar23);
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar47 = uVar36 * 0x20 >> 7 | uVar42 << 0x19;
        uVar42 = uVar48 + iVar89 + uVar24 + (uVar36 ^ uVar23 ^ uVar35);
        auVar64._0_16_ = pshufb(*pauVar2,auVar21);
        uVar36 = uVar42 * 0x20 | uVar42 >> 0x1b;
        local_e0._0_4_ = auVar54._0_4_ + iVar90;
        local_e0._4_4_ = auVar54._4_4_ + iVar98;
        iStack_d8 = auVar54._8_4_ + iVar100;
        iStack_d4 = auVar54._12_4_ + iVar102;
        uVar30 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        uVar29 = uVar23 + iVar91 + uVar36 + (uVar29 ^ uVar35 ^ uVar47);
        auVar54._0_4_ = local_e0._0_4_ - iVar90;
        auVar54._4_4_ = local_e0._4_4_ - iVar98;
        auVar54._8_4_ = iStack_d8 - iVar100;
        auVar54._12_4_ = iStack_d4 - iVar102;
        uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
        uVar36 = uVar42 * 0x20 >> 7 | uVar36 << 0x19;
        uVar23 = uVar35 + iVar99 + uVar24 + (uVar42 ^ uVar47 ^ uVar30);
        uVar42 = uVar23 * 0x20 | uVar23 >> 0x1b;
        uVar35 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
        uVar24 = uVar47 + iVar101 + uVar42 + (uVar29 ^ uVar30 ^ uVar36);
        uVar29 = uVar30 + iVar103 + (uVar24 * 0x20 | uVar24 >> 0x1b) + (uVar23 ^ uVar36 ^ uVar35) +
                 *param_1;
        uVar24 = uVar24 + param_1[1];
        uVar30 = (uVar23 * 0x20 >> 7 | uVar42 << 0x19) + param_1[2];
        *param_1 = uVar29;
        uVar35 = uVar35 + param_1[3];
        param_1[1] = uVar24;
        uVar36 = uVar36 + param_1[4];
        param_1[2] = uVar30;
        param_1[3] = uVar35;
        param_1[4] = uVar36;
      }
      uVar42 = uVar30 * 0x20 | uVar30 >> 0x1b;
      uVar36 = uVar29 >> 7 | uVar36 << 0x19;
      uVar23 = uVar23 + iVar72 + uVar42 + (uVar35 ^ uVar24 ^ uVar47);
      uVar48 = uVar23 * 0x20 | uVar23 >> 0x1b;
      uVar35 = uVar30 * 0x20 >> 7 | uVar42 << 0x19;
      uVar29 = uVar24 + iVar78 + uVar48 + (uVar30 ^ uVar47 ^ uVar36);
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar42 = uVar23 * 0x20 >> 7 | uVar48 << 0x19;
      uVar30 = uVar47 + iVar79 + uVar24 + (uVar23 ^ uVar36 ^ uVar35);
      uVar47 = uVar30 * 0x20 | uVar30 >> 0x1b;
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar36 = uVar36 + iVar80 + uVar47 + (uVar29 ^ uVar35 ^ uVar42);
      uVar23 = uVar36 * 0x20 | uVar36 >> 0x1b;
      uVar47 = uVar30 * 0x20 >> 7 | uVar47 << 0x19;
      uVar29 = uVar35 + iVar81 + uVar23 + (uVar30 ^ uVar42 ^ uVar24);
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar35 = uVar36 * 0x20 >> 7 | uVar23 << 0x19;
      uVar36 = uVar42 + iVar87 + uVar30 + (uVar36 ^ uVar24 ^ uVar47);
      uVar23 = uVar36 * 0x20 | uVar36 >> 0x1b;
      uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      uVar29 = uVar24 + iVar88 + uVar23 + (uVar29 ^ uVar47 ^ uVar35);
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar23 = uVar36 * 0x20 >> 7 | uVar23 << 0x19;
      uVar42 = uVar47 + iVar89 + uVar24 + (uVar36 ^ uVar35 ^ uVar30);
      uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar35 = uVar35 + iVar91 + uVar47 + (uVar29 ^ uVar30 ^ uVar23);
      uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
      uVar29 = uVar30 + iVar99 + uVar36 + (uVar42 ^ uVar23 ^ uVar24);
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
      uVar35 = uVar23 + iVar101 + uVar30 + (uVar35 ^ uVar24 ^ uVar47);
      *param_1 = uVar24 + iVar103 + (uVar35 * 0x20 | uVar35 >> 0x1b) + (uVar29 ^ uVar47 ^ uVar36) +
                 *param_1;
      param_1[1] = uVar35 + param_1[1];
      param_1[2] = (uVar29 * 0x20 >> 7 | uVar30 << 0x19) + param_1[2];
      param_1[3] = uVar36 + param_1[3];
      param_1[4] = uVar47 + param_1[4];
      return;
    }
    local_3c = param_2 + 4;
    uVar29 = *param_1;
    uVar24 = param_1[1];
    uVar30 = param_1[2];
    uVar35 = param_1[3];
    uVar36 = param_1[4];
    auVar51 = vpshufb_avx(*param_2,_DAT_00adce40);
    auVar83 = vpshufb_avx(param_2[1],_DAT_00adce40);
    auVar54 = vpshufb_avx(param_2[2],_DAT_00adce40);
    auVar65 = vpshufb_avx(param_2[3],_DAT_00adce40);
    _local_100 = vpaddd_avx(auVar51,_DAT_00adce00);
    _local_f0 = vpaddd_avx(auVar83,_DAT_00adce00);
    _local_e0 = vpaddd_avx(auVar54,_DAT_00adce00);
    while( true ) {
      auVar67 = vpalignr_avx(auVar83,auVar51,8);
      uVar23 = uVar29 << 5 | uVar29 >> 0x1b;
      auVar71 = vpaddd_avx(auVar49,auVar65);
      auVar74 = vpsrldq_avx(auVar65,4);
      uVar42 = uVar24 >> 2 | uVar24 << 0x1e;
      uVar47 = uVar36 + local_100._0_4_ + uVar23 + (uVar24 & (uVar30 ^ uVar35) ^ uVar35);
      uVar48 = uVar47 * 0x20 | uVar47 >> 0x1b;
      auVar67 = auVar67 ^ auVar51 ^ auVar74 ^ auVar54;
      auVar94 = vpsrld_avx(auVar67,0x1f);
      uVar24 = (uVar29 << 5) >> 7 | uVar23 << 0x19;
      uVar35 = uVar35 + local_100._4_4_ + uVar48 + (uVar29 & (uVar42 ^ uVar30) ^ uVar30);
      auVar74 = vpslldq_avx(auVar67,0xc);
      auVar67 = vpaddd_avx(auVar67,auVar67);
      uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
      auVar97 = vpsrld_avx(auVar74,0x1e);
      auVar67 = vpor_avx(auVar67,auVar94);
      uVar48 = uVar47 * 0x20 >> 7 | uVar48 << 0x19;
      uVar29 = uVar30 + iStack_f8 + uVar36 + (uVar47 & (uVar24 ^ uVar42) ^ uVar42);
      auVar50 = vpslld_avx(auVar74,2);
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      auVar50 = auVar67 ^ auVar97 ^ auVar50;
      uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
      uVar35 = uVar42 + iStack_f4 + uVar30 + (uVar35 & (uVar48 ^ uVar24) ^ uVar24);
      auVar74 = vpalignr_avx(auVar54,auVar83,8);
      uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
      auVar67 = vpaddd_avx(auVar49,auVar50);
      auVar94 = vpsrldq_avx(auVar50,4);
      uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      uVar29 = uVar24 + local_f0._0_4_ + uVar23 + (uVar29 & (uVar36 ^ uVar48) ^ uVar48);
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      auVar74 = auVar74 ^ auVar83 ^ auVar94 ^ auVar65;
      auVar52 = vpsrld_avx(auVar74,0x1f);
      uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
      uVar42 = uVar48 + local_f0._4_4_ + uVar24 + (uVar35 & (uVar30 ^ uVar36) ^ uVar36);
      auVar97 = vpslldq_avx(auVar74,0xc);
      auVar74 = vpaddd_avx(auVar74,auVar74);
      uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
      auVar94 = vpsrld_avx(auVar97,0x1e);
      auVar74 = vpor_avx(auVar74,auVar52);
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar35 = uVar36 + iStack_e8 + uVar47 + (uVar29 & (uVar23 ^ uVar30) ^ uVar30);
      auVar53 = vpslld_avx(auVar97,2);
      uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
      auVar53 = auVar74 ^ auVar94 ^ auVar53;
      auVar74._8_4_ = 0x6ed9eba1;
      auVar74._0_8_ = 0x6ed9eba16ed9eba1;
      auVar74._12_4_ = 0x6ed9eba1;
      uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
      uVar29 = uVar30 + iStack_e4 + uVar36 + (uVar42 & (uVar24 ^ uVar23) ^ uVar23);
      auVar94 = vpalignr_avx(auVar65,auVar54,8);
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      auVar74 = vpaddd_avx(auVar74,auVar53);
      auVar97 = vpsrldq_avx(auVar53,4);
      uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
      uVar35 = uVar23 + local_e0._0_4_ + uVar30 + (uVar35 & (uVar47 ^ uVar24) ^ uVar24);
      uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
      auVar94 = auVar94 ^ auVar54 ^ auVar97 ^ auVar50;
      auVar97 = vpsrld_avx(auVar94,0x1f);
      uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      uVar29 = uVar24 + local_e0._4_4_ + uVar23 + (uVar29 & (uVar36 ^ uVar47) ^ uVar47);
      auVar58 = vpslldq_avx(auVar94,0xc);
      auVar94 = vpaddd_avx(auVar94,auVar94);
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      auVar52 = vpsrld_avx(auVar58,0x1e);
      auVar94 = vpor_avx(auVar94,auVar97);
      uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
      uVar42 = uVar47 + iStack_d8 + uVar24 + (uVar35 & (uVar30 ^ uVar36) ^ uVar36);
      auVar58 = vpslld_avx(auVar58,2);
      uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
      auVar58 = auVar94 ^ auVar52 ^ auVar58;
      auVar94._8_4_ = 0x6ed9eba1;
      auVar94._0_8_ = 0x6ed9eba16ed9eba1;
      auVar94._12_4_ = 0x6ed9eba1;
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar35 = uVar36 + iStack_d4 + uVar47 + (uVar29 & (uVar23 ^ uVar30) ^ uVar30);
      local_d0 = auVar71._0_4_;
      auVar97 = vpalignr_avx(auVar50,auVar65,8);
      uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
      auVar94 = vpaddd_avx(auVar94,auVar58);
      auVar52 = vpsrldq_avx(auVar58,4);
      uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
      uVar29 = uVar30 + local_d0 + uVar36 + (uVar42 & (uVar24 ^ uVar23) ^ uVar23);
      iStack_cc = auVar71._4_4_;
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      auVar97 = auVar97 ^ auVar65 ^ auVar52 ^ auVar53;
      auVar52 = vpsrld_avx(auVar97,0x1f);
      uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
      uVar35 = uVar23 + iStack_cc + uVar30 + (uVar35 & (uVar47 ^ uVar24) ^ uVar24);
      iStack_c8 = auVar71._8_4_;
      auVar55 = vpslldq_avx(auVar97,0xc);
      auVar97 = vpaddd_avx(auVar97,auVar97);
      uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
      auVar59 = vpsrld_avx(auVar55,0x1e);
      auVar97 = vpor_avx(auVar97,auVar52);
      uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      uVar29 = uVar24 + iStack_c8 + uVar23 + (uVar29 & (uVar36 ^ uVar47) ^ uVar47);
      auVar55 = vpslld_avx(auVar55,2);
      iStack_c4 = auVar71._12_4_;
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      auVar55 = auVar97 ^ auVar59 ^ auVar55;
      auVar59._8_4_ = 0x6ed9eba1;
      auVar59._0_8_ = 0x6ed9eba16ed9eba1;
      auVar59._12_4_ = 0x6ed9eba1;
      uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
      uVar42 = uVar47 + iStack_c4 + uVar24 + (uVar35 & (uVar30 ^ uVar36) ^ uVar36);
      auVar97 = vpalignr_avx(auVar55,auVar58,8);
      local_100._0_4_ = auVar67._0_4_;
      uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
      auVar71 = vpaddd_avx(auVar59,auVar55);
      auVar97 = auVar51 ^ auVar50 ^ auVar83 ^ auVar97;
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar35 = uVar36 + local_100._0_4_ + uVar47 + (uVar29 & (uVar23 ^ uVar30) ^ uVar30);
      local_100._4_4_ = auVar67._4_4_;
      auVar52 = vpsrld_avx(auVar97,0x1e);
      uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
      auVar51 = vpslld_avx(auVar97,2);
      uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
      uVar29 = uVar30 + local_100._4_4_ + uVar36 + (uVar42 & (uVar24 ^ uVar23) ^ uVar23);
      iStack_f8 = auVar67._8_4_;
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      auVar97 = vpor_avx(auVar51,auVar52);
      uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
      uVar35 = uVar23 + iStack_f8 + uVar30 + (uVar35 & (uVar47 ^ uVar24) ^ uVar24);
      iStack_f4 = auVar67._12_4_;
      uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      uVar29 = uVar24 + iStack_f4 + uVar23 + (uVar29 & (uVar36 ^ uVar47) ^ uVar47);
      auVar67 = vpalignr_avx(auVar97,auVar55,8);
      local_f0._0_4_ = auVar74._0_4_;
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      auVar51 = vpaddd_avx(auVar59,auVar97);
      uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
      uVar42 = uVar47 + local_f0._0_4_ + uVar24 + (uVar35 ^ uVar36 ^ uVar30);
      auVar67 = auVar83 ^ auVar53 ^ auVar54 ^ auVar67;
      local_f0._4_4_ = auVar74._4_4_;
      uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
      auVar52 = vpsrld_avx(auVar67,0x1e);
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar35 = uVar36 + local_f0._4_4_ + uVar47 + (uVar29 ^ uVar30 ^ uVar23);
      auVar83 = vpslld_avx(auVar67,2);
      iStack_e8 = auVar74._8_4_;
      uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
      uVar29 = uVar30 + iStack_e8 + uVar36 + (uVar42 ^ uVar23 ^ uVar24);
      auVar52 = vpor_avx(auVar83,auVar52);
      iStack_e4 = auVar74._12_4_;
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
      uVar35 = uVar23 + iStack_e4 + uVar30 + (uVar35 ^ uVar24 ^ uVar47);
      auVar67 = vpalignr_avx(auVar52,auVar97,8);
      local_e0._0_4_ = auVar94._0_4_;
      uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
      auVar19._8_4_ = 0x8f1bbcdc;
      auVar19._0_8_ = 0x8f1bbcdc8f1bbcdc;
      auVar19._12_4_ = 0x8f1bbcdc;
      auVar83 = vpaddd_avx(auVar59,auVar52);
      uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      uVar29 = uVar24 + local_e0._0_4_ + uVar23 + (uVar29 ^ uVar47 ^ uVar36);
      auVar67 = auVar54 ^ auVar58 ^ auVar65 ^ auVar67;
      local_e0._4_4_ = auVar94._4_4_;
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      auVar74 = vpsrld_avx(auVar67,0x1e);
      uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
      uVar42 = uVar47 + local_e0._4_4_ + uVar24 + (uVar35 ^ uVar36 ^ uVar30);
      auVar54 = vpslld_avx(auVar67,2);
      iStack_d8 = auVar94._8_4_;
      uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar35 = uVar36 + iStack_d8 + uVar47 + (uVar29 ^ uVar30 ^ uVar23);
      auVar74 = vpor_avx(auVar54,auVar74);
      iStack_d4 = auVar94._12_4_;
      uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
      uVar29 = uVar30 + iStack_d4 + uVar36 + (uVar42 ^ uVar23 ^ uVar24);
      auVar67 = vpalignr_avx(auVar74,auVar52,8);
      local_d0 = auVar71._0_4_;
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      auVar54 = vpaddd_avx(auVar19,auVar74);
      uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
      uVar35 = uVar23 + local_d0 + uVar30 + (uVar35 ^ uVar24 ^ uVar47);
      auVar67 = auVar65 ^ auVar55 ^ auVar50 ^ auVar67;
      iStack_cc = auVar71._4_4_;
      uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
      auVar94 = vpsrld_avx(auVar67,0x1e);
      uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      uVar29 = uVar24 + iStack_cc + uVar23 + (uVar29 ^ uVar47 ^ uVar36);
      auVar65 = vpslld_avx(auVar67,2);
      iStack_c8 = auVar71._8_4_;
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
      uVar42 = uVar47 + iStack_c8 + uVar24 + (uVar35 ^ uVar36 ^ uVar30);
      auVar67 = vpor_avx(auVar65,auVar94);
      iStack_c4 = auVar71._12_4_;
      uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar35 = uVar36 + iStack_c4 + uVar47 + (uVar29 ^ uVar30 ^ uVar23);
      auVar71 = vpalignr_avx(auVar67,auVar74,8);
      local_100._0_4_ = auVar51._0_4_;
      uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
      auVar65 = vpaddd_avx(auVar19,auVar67);
      uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
      uVar29 = uVar30 + local_100._0_4_ + uVar36 + (uVar42 ^ uVar23 ^ uVar24);
      auVar71 = auVar50 ^ auVar97 ^ auVar53 ^ auVar71;
      local_100._4_4_ = auVar51._4_4_;
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      auVar94 = vpsrld_avx(auVar71,0x1e);
      uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
      uVar35 = uVar23 + local_100._4_4_ + uVar30 + (uVar35 ^ uVar24 ^ uVar47);
      auVar71 = vpslld_avx(auVar71,2);
      iStack_f8 = auVar51._8_4_;
      uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      uVar29 = uVar24 + iStack_f8 + uVar23 + (uVar29 ^ uVar47 ^ uVar36);
      auVar94 = vpor_avx(auVar71,auVar94);
      iStack_f4 = auVar51._12_4_;
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
      uVar42 = uVar47 + iStack_f4 + uVar24 + (uVar35 ^ uVar36 ^ uVar30);
      auVar71 = vpalignr_avx(auVar94,auVar67,8);
      local_f0._0_4_ = auVar83._0_4_;
      uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
      auVar51 = vpaddd_avx(auVar19,auVar94);
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar35 = uVar36 + local_f0._0_4_ + uVar47 + (uVar29 ^ uVar30 ^ uVar23);
      auVar71 = auVar53 ^ auVar52 ^ auVar58 ^ auVar71;
      local_f0._4_4_ = auVar83._4_4_;
      uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
      auVar50 = vpsrld_avx(auVar71,0x1e);
      uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
      uVar29 = uVar30 + local_f0._4_4_ + uVar36 + (uVar42 ^ uVar23 ^ uVar24);
      auVar71 = vpslld_avx(auVar71,2);
      iStack_e8 = auVar83._8_4_;
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
      uVar35 = uVar23 + iStack_e8 + uVar30 + (uVar35 ^ uVar24 ^ uVar47);
      auVar50 = vpor_avx(auVar71,auVar50);
      iStack_e4 = auVar83._12_4_;
      uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      uVar29 = uVar24 + iStack_e4 + uVar23 + (uVar29 ^ uVar47 ^ uVar36);
      auVar71 = vpalignr_avx(auVar50,auVar94,8);
      local_e0._0_4_ = auVar54._0_4_;
      uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
      auVar83 = vpaddd_avx(auVar19,auVar50);
      auVar71 = auVar58 ^ auVar74 ^ auVar55 ^ auVar71;
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar42 = uVar47 + local_e0._0_4_ + (uVar30 & uVar36) + (uVar35 & (uVar30 ^ uVar36)) + uVar24;
      auVar53 = vpsrld_avx(auVar71,0x1e);
      local_e0._4_4_ = auVar54._4_4_;
      auVar71 = vpslld_avx(auVar71,2);
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
      uVar35 = uVar36 + local_e0._4_4_ + (uVar23 & uVar30) + (uVar29 & (uVar23 ^ uVar30)) + uVar47;
      auVar53 = vpor_avx(auVar71,auVar53);
      iStack_d8 = auVar54._8_4_;
      uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
      uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar29 = uVar30 + iStack_d8 + (uVar24 & uVar23) + (uVar42 & (uVar24 ^ uVar23)) + uVar36;
      iStack_d4 = auVar54._12_4_;
      uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar35 = uVar23 + iStack_d4 + (uVar47 & uVar24) + (uVar35 & (uVar47 ^ uVar24)) + uVar30;
      auVar71 = vpalignr_avx(auVar53,auVar50,8);
      local_d0 = auVar65._0_4_;
      uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      auVar20._8_4_ = 0xca62c1d6;
      auVar20._0_8_ = 0xca62c1d6ca62c1d6;
      auVar20._12_4_ = 0xca62c1d6;
      auVar54 = vpaddd_avx(auVar19,auVar53);
      auVar71 = auVar55 ^ auVar67 ^ auVar97 ^ auVar71;
      uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar29 = uVar24 + local_d0 + (uVar36 & uVar47) + (uVar29 & (uVar36 ^ uVar47)) + uVar23;
      auVar58 = vpsrld_avx(auVar71,0x1e);
      iStack_cc = auVar65._4_4_;
      auVar71 = vpslld_avx(auVar71,2);
      uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar42 = uVar47 + iStack_cc + (uVar30 & uVar36) + (uVar35 & (uVar30 ^ uVar36)) + uVar24;
      auVar58 = vpor_avx(auVar71,auVar58);
      iStack_c8 = auVar65._8_4_;
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
      uVar35 = uVar36 + iStack_c8 + (uVar23 & uVar30) + (uVar29 & (uVar23 ^ uVar30)) + uVar47;
      iStack_c4 = auVar65._12_4_;
      uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
      uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar29 = uVar30 + iStack_c4 + (uVar24 & uVar23) + (uVar42 & (uVar24 ^ uVar23)) + uVar36;
      auVar71 = vpalignr_avx(auVar58,auVar53,8);
      local_100._0_4_ = auVar51._0_4_;
      uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
      auVar65 = vpaddd_avx(auVar20,auVar58);
      auVar71 = auVar97 ^ auVar94 ^ auVar52 ^ auVar71;
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar35 = uVar23 + local_100._0_4_ + (uVar47 & uVar24) + (uVar35 & (uVar47 ^ uVar24)) + uVar30;
      auVar97 = vpsrld_avx(auVar71,0x1e);
      local_100._4_4_ = auVar51._4_4_;
      auVar71 = vpslld_avx(auVar71,2);
      uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar29 = uVar24 + local_100._4_4_ + (uVar36 & uVar47) + (uVar29 & (uVar36 ^ uVar47)) + uVar23;
      auVar97 = vpor_avx(auVar71,auVar97);
      iStack_f8 = auVar51._8_4_;
      uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar42 = uVar47 + iStack_f8 + (uVar30 & uVar36) + (uVar35 & (uVar30 ^ uVar36)) + uVar24;
      iStack_f4 = auVar51._12_4_;
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
      uVar35 = uVar36 + iStack_f4 + (uVar23 & uVar30) + (uVar29 & (uVar23 ^ uVar30)) + uVar47;
      auVar71 = vpalignr_avx(auVar97,auVar58,8);
      local_f0._0_4_ = auVar83._0_4_;
      uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
      auVar51 = vpaddd_avx(auVar20,auVar97);
      auVar71 = auVar52 ^ auVar50 ^ auVar74 ^ auVar71;
      uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar29 = uVar30 + local_f0._0_4_ + (uVar24 & uVar23) + (uVar42 & (uVar24 ^ uVar23)) + uVar36;
      auVar52 = vpsrld_avx(auVar71,0x1e);
      local_f0._4_4_ = auVar83._4_4_;
      auVar71 = vpslld_avx(auVar71,2);
      uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar35 = uVar23 + local_f0._4_4_ + (uVar47 & uVar24) + (uVar35 & (uVar47 ^ uVar24)) + uVar30;
      auVar52 = vpor_avx(auVar71,auVar52);
      iStack_e8 = auVar83._8_4_;
      uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar29 = uVar24 + iStack_e8 + (uVar36 & uVar47) + (uVar29 & (uVar36 ^ uVar47)) + uVar23;
      iStack_e4 = auVar83._12_4_;
      uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar42 = uVar47 + iStack_e4 + (uVar30 & uVar36) + (uVar35 & (uVar30 ^ uVar36)) + uVar24;
      auVar71 = vpalignr_avx(auVar52,auVar97,8);
      local_e0._0_4_ = auVar54._0_4_;
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      auVar83 = vpaddd_avx(auVar20,auVar52);
      auVar71 = auVar74 ^ auVar53 ^ auVar67 ^ auVar71;
      uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
      uVar35 = uVar36 + local_e0._0_4_ + (uVar23 & uVar30) + (uVar29 & (uVar23 ^ uVar30)) + uVar47;
      auVar74 = vpsrld_avx(auVar71,0x1e);
      local_e0._4_4_ = auVar54._4_4_;
      auVar71 = vpslld_avx(auVar71,2);
      uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
      uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar29 = uVar30 + local_e0._4_4_ + (uVar24 & uVar23) + (uVar42 & (uVar24 ^ uVar23)) + uVar36;
      auVar74 = vpor_avx(auVar71,auVar74);
      iStack_d8 = auVar54._8_4_;
      uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar35 = uVar23 + iStack_d8 + (uVar47 & uVar24) + (uVar35 & (uVar47 ^ uVar24)) + uVar30;
      iStack_d4 = auVar54._12_4_;
      uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar29 = uVar24 + iStack_d4 + (uVar36 & uVar47) + (uVar29 & (uVar36 ^ uVar47)) + uVar23;
      auVar71 = vpalignr_avx(auVar74,auVar52,8);
      local_d0 = auVar65._0_4_;
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      auVar54 = vpaddd_avx(auVar20,auVar74);
      uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
      uVar42 = uVar47 + local_d0 + uVar24 + (uVar35 ^ uVar36 ^ uVar30);
      auVar71 = auVar67 ^ auVar58 ^ auVar94 ^ auVar71;
      iStack_cc = auVar65._4_4_;
      uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
      auVar67 = vpsrld_avx(auVar71,0x1e);
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar35 = uVar36 + iStack_cc + uVar47 + (uVar29 ^ uVar30 ^ uVar23);
      auVar71 = vpslld_avx(auVar71,2);
      iStack_c8 = auVar65._8_4_;
      uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
      uVar29 = uVar30 + iStack_c8 + uVar36 + (uVar42 ^ uVar23 ^ uVar24);
      auVar71 = vpor_avx(auVar71,auVar67);
      iStack_c4 = auVar65._12_4_;
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
      uVar35 = uVar23 + iStack_c4 + uVar30 + (uVar35 ^ uVar24 ^ uVar47);
      local_100._0_4_ = auVar51._0_4_;
      auVar65 = vpaddd_avx(auVar20,auVar71);
      uVar23 = uVar35 * 0x20 | uVar35 >> 0x1b;
      uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      uVar29 = uVar24 + local_100._0_4_ + uVar23 + (uVar29 ^ uVar47 ^ uVar36);
      local_100._4_4_ = auVar51._4_4_;
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar23 = uVar35 * 0x20 >> 7 | uVar23 << 0x19;
      uVar42 = uVar47 + local_100._4_4_ + uVar24 + (uVar35 ^ uVar36 ^ uVar30);
      iStack_f8 = auVar51._8_4_;
      uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar35 = uVar36 + iStack_f8 + uVar47 + (uVar29 ^ uVar30 ^ uVar23);
      iStack_f4 = auVar51._12_4_;
      uVar29 = uVar35 * 0x20;
      uVar36 = uVar29 | uVar35 >> 0x1b;
      uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
      uVar30 = uVar30 + iStack_f4 + uVar36 + (uVar42 ^ uVar23 ^ uVar24);
      local_f0._0_4_ = auVar83._0_4_;
      local_f0._4_4_ = auVar83._4_4_;
      iStack_e8 = auVar83._8_4_;
      iStack_e4 = auVar83._12_4_;
      local_e0._0_4_ = auVar54._0_4_;
      local_e0._4_4_ = auVar54._4_4_;
      iStack_d8 = auVar54._8_4_;
      iStack_d4 = auVar54._12_4_;
      local_d0 = auVar65._0_4_;
      iStack_cc = auVar65._4_4_;
      iStack_c8 = auVar65._8_4_;
      iStack_c4 = auVar65._12_4_;
      if (local_3c == param_2 + param_3 * 4) break;
      auVar51 = *local_3c;
      pauVar22 = local_3c + 1;
      pauVar1 = local_3c + 2;
      pauVar2 = local_3c + 3;
      local_3c = local_3c + 4;
      auVar51 = vpshufb_avx(auVar51,auVar21);
      auVar83 = vpshufb_avx(*pauVar22,auVar21);
      uVar42 = uVar30 * 0x20 | uVar30 >> 0x1b;
      _local_100 = vpaddd_avx(auVar51,auVar49);
      uVar36 = uVar29 >> 7 | uVar36 << 0x19;
      uVar23 = uVar23 + local_f0._0_4_ + uVar42 + (uVar35 ^ uVar24 ^ uVar47);
      uVar48 = uVar23 * 0x20 | uVar23 >> 0x1b;
      uVar35 = uVar30 * 0x20 >> 7 | uVar42 << 0x19;
      uVar29 = uVar24 + local_f0._4_4_ + uVar48 + (uVar30 ^ uVar47 ^ uVar36);
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar42 = uVar23 * 0x20 >> 7 | uVar48 << 0x19;
      uVar30 = uVar47 + iStack_e8 + uVar24 + (uVar23 ^ uVar36 ^ uVar35);
      uVar47 = uVar30 * 0x20 | uVar30 >> 0x1b;
      uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar36 = uVar36 + iStack_e4 + uVar47 + (uVar29 ^ uVar35 ^ uVar42);
      auVar54 = vpshufb_avx(*pauVar1,auVar21);
      uVar23 = uVar36 * 0x20 | uVar36 >> 0x1b;
      _local_f0 = vpaddd_avx(auVar83,auVar49);
      uVar48 = uVar30 * 0x20 >> 7 | uVar47 << 0x19;
      uVar29 = uVar35 + local_e0._0_4_ + uVar23 + (uVar30 ^ uVar42 ^ uVar24);
      uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar23 = uVar36 * 0x20 >> 7 | uVar23 << 0x19;
      uVar36 = uVar42 + local_e0._4_4_ + uVar30 + (uVar36 ^ uVar24 ^ uVar48);
      uVar42 = uVar36 * 0x20 | uVar36 >> 0x1b;
      uVar35 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
      uVar29 = uVar24 + iStack_d8 + uVar42 + (uVar29 ^ uVar48 ^ uVar23);
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar47 = uVar36 * 0x20 >> 7 | uVar42 << 0x19;
      uVar42 = uVar48 + iStack_d4 + uVar24 + (uVar36 ^ uVar23 ^ uVar35);
      auVar65 = vpshufb_avx(*pauVar2,auVar21);
      uVar36 = uVar42 * 0x20 | uVar42 >> 0x1b;
      _local_e0 = vpaddd_avx(auVar54,auVar49);
      uVar30 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar29 = uVar23 + local_d0 + uVar36 + (uVar29 ^ uVar35 ^ uVar47);
      uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
      uVar36 = uVar42 * 0x20 >> 7 | uVar36 << 0x19;
      uVar23 = uVar35 + iStack_cc + uVar24 + (uVar42 ^ uVar47 ^ uVar30);
      uVar42 = uVar23 * 0x20 | uVar23 >> 0x1b;
      uVar35 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
      uVar24 = uVar47 + iStack_c8 + uVar42 + (uVar29 ^ uVar30 ^ uVar36);
      uVar29 = uVar30 + iStack_c4 + (uVar24 * 0x20 | uVar24 >> 0x1b) + (uVar23 ^ uVar36 ^ uVar35) +
               *param_1;
      uVar24 = uVar24 + param_1[1];
      uVar30 = (uVar23 * 0x20 >> 7 | uVar42 << 0x19) + param_1[2];
      *param_1 = uVar29;
      uVar35 = uVar35 + param_1[3];
      param_1[1] = uVar24;
      uVar36 = uVar36 + param_1[4];
      param_1[2] = uVar30;
      param_1[3] = uVar35;
      param_1[4] = uVar36;
    }
    uVar42 = uVar30 * 0x20 | uVar30 >> 0x1b;
    uVar36 = uVar29 >> 7 | uVar36 << 0x19;
    uVar23 = uVar23 + local_f0._0_4_ + uVar42 + (uVar35 ^ uVar24 ^ uVar47);
    uVar48 = uVar23 * 0x20 | uVar23 >> 0x1b;
    uVar35 = uVar30 * 0x20 >> 7 | uVar42 << 0x19;
    uVar29 = uVar24 + local_f0._4_4_ + uVar48 + (uVar30 ^ uVar47 ^ uVar36);
    uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
    uVar42 = uVar23 * 0x20 >> 7 | uVar48 << 0x19;
    uVar30 = uVar47 + iStack_e8 + uVar24 + (uVar23 ^ uVar36 ^ uVar35);
    uVar47 = uVar30 * 0x20 | uVar30 >> 0x1b;
    uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
    uVar36 = uVar36 + iStack_e4 + uVar47 + (uVar29 ^ uVar35 ^ uVar42);
    uVar23 = uVar36 * 0x20 | uVar36 >> 0x1b;
    uVar47 = uVar30 * 0x20 >> 7 | uVar47 << 0x19;
    uVar29 = uVar35 + local_e0._0_4_ + uVar23 + (uVar30 ^ uVar42 ^ uVar24);
    uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
    uVar35 = uVar36 * 0x20 >> 7 | uVar23 << 0x19;
    uVar36 = uVar42 + local_e0._4_4_ + uVar30 + (uVar36 ^ uVar24 ^ uVar47);
    uVar23 = uVar36 * 0x20 | uVar36 >> 0x1b;
    uVar30 = uVar29 * 0x20 >> 7 | uVar30 << 0x19;
    uVar29 = uVar24 + iStack_d8 + uVar23 + (uVar29 ^ uVar47 ^ uVar35);
    uVar24 = uVar29 * 0x20 | uVar29 >> 0x1b;
    uVar23 = uVar36 * 0x20 >> 7 | uVar23 << 0x19;
    uVar42 = uVar47 + iStack_d4 + uVar24 + (uVar36 ^ uVar35 ^ uVar30);
    uVar47 = uVar42 * 0x20 | uVar42 >> 0x1b;
    uVar24 = uVar29 * 0x20 >> 7 | uVar24 << 0x19;
    uVar35 = uVar35 + local_d0 + uVar47 + (uVar29 ^ uVar30 ^ uVar23);
    uVar36 = uVar35 * 0x20 | uVar35 >> 0x1b;
    uVar47 = uVar42 * 0x20 >> 7 | uVar47 << 0x19;
    uVar29 = uVar30 + iStack_cc + uVar36 + (uVar42 ^ uVar23 ^ uVar24);
    uVar30 = uVar29 * 0x20 | uVar29 >> 0x1b;
    uVar36 = uVar35 * 0x20 >> 7 | uVar36 << 0x19;
    uVar35 = uVar23 + iStack_c8 + uVar30 + (uVar35 ^ uVar24 ^ uVar47);
    *param_1 = uVar24 + iStack_c4 + (uVar35 * 0x20 | uVar35 >> 0x1b) + (uVar29 ^ uVar47 ^ uVar36) +
               *param_1;
    param_1[1] = uVar35 + param_1[1];
    param_1[2] = (uVar29 * 0x20 >> 7 | uVar30 << 0x19) + param_1[2];
    param_1[3] = uVar36 + param_1[3];
    param_1[4] = uVar47 + param_1[4];
    return;
  }
  pauVar22 = param_2 + param_3 * 4;
  uVar29 = param_1[4];
  do {
    uVar24 = *(uint *)*param_2;
    uVar30 = *(uint *)(*param_2 + 4);
    uVar35 = *(uint *)(*param_2 + 8);
    uVar36 = *(uint *)(*param_2 + 0xc);
    uVar23 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 | uVar24 << 0x18;
    uVar37 = uVar30 >> 0x18 | (uVar30 & 0xff0000) >> 8 | (uVar30 & 0xff00) << 8 | uVar30 << 0x18;
    uVar25 = uVar35 >> 0x18 | (uVar35 & 0xff0000) >> 8 | (uVar35 & 0xff00) << 8 | uVar35 << 0x18;
    uVar31 = uVar36 >> 0x18 | (uVar36 & 0xff0000) >> 8 | (uVar36 & 0xff00) << 8 | uVar36 << 0x18;
    uVar24 = *(uint *)param_2[1];
    uVar30 = *(uint *)(param_2[1] + 4);
    uVar35 = *(uint *)(param_2[1] + 8);
    uVar36 = *(uint *)(param_2[1] + 0xc);
    uVar42 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 | uVar24 << 0x18;
    uVar38 = uVar30 >> 0x18 | (uVar30 & 0xff0000) >> 8 | (uVar30 & 0xff00) << 8 | uVar30 << 0x18;
    uVar26 = uVar35 >> 0x18 | (uVar35 & 0xff0000) >> 8 | (uVar35 & 0xff00) << 8 | uVar35 << 0x18;
    uVar32 = uVar36 >> 0x18 | (uVar36 & 0xff0000) >> 8 | (uVar36 & 0xff00) << 8 | uVar36 << 0x18;
    uVar24 = *(uint *)param_2[2];
    uVar30 = *(uint *)(param_2[2] + 4);
    uVar35 = *(uint *)(param_2[2] + 8);
    uVar36 = *(uint *)(param_2[2] + 0xc);
    uVar47 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 | uVar24 << 0x18;
    uVar39 = uVar30 >> 0x18 | (uVar30 & 0xff0000) >> 8 | (uVar30 & 0xff00) << 8 | uVar30 << 0x18;
    uVar27 = uVar35 >> 0x18 | (uVar35 & 0xff0000) >> 8 | (uVar35 & 0xff00) << 8 | uVar35 << 0x18;
    uVar33 = uVar36 >> 0x18 | (uVar36 & 0xff0000) >> 8 | (uVar36 & 0xff00) << 8 | uVar36 << 0x18;
    uVar24 = *(uint *)param_2[3];
    uVar30 = *(uint *)(param_2[3] + 4);
    uVar35 = *(uint *)(param_2[3] + 8);
    uVar36 = *(uint *)(param_2[3] + 0xc);
    uVar48 = uVar24 >> 0x18 | (uVar24 & 0xff0000) >> 8 | (uVar24 & 0xff00) << 8 | uVar24 << 0x18;
    uVar40 = uVar30 >> 0x18 | (uVar30 & 0xff0000) >> 8 | (uVar30 & 0xff00) << 8 | uVar30 << 0x18;
    uVar28 = uVar35 >> 0x18 | (uVar35 & 0xff0000) >> 8 | (uVar35 & 0xff00) << 8 | uVar35 << 0x18;
    uVar34 = uVar36 >> 0x18 | (uVar36 & 0xff0000) >> 8 | (uVar36 & 0xff00) << 8 | uVar36 << 0x18;
    uVar24 = *param_1;
    uVar30 = param_1[1];
    uVar35 = param_1[2];
    uVar36 = param_1[3];
    uVar41 = uVar30 >> 2 | uVar30 << 0x1e;
    uVar30 = (uVar24 << 5 | uVar24 >> 0x1b) + uVar29 + 0x5a827999 + uVar23 +
             ((uVar35 ^ uVar36) & uVar30 ^ uVar36);
    uVar29 = uVar24 >> 2 | uVar24 << 0x1e;
    uVar24 = (uVar30 * 0x20 | uVar30 >> 0x1b) + uVar36 + 0x5a827999 + uVar37 +
             ((uVar41 ^ uVar35) & uVar24 ^ uVar35);
    uVar43 = uVar30 >> 2 | uVar30 * 0x40000000;
    uVar35 = (uVar24 * 0x20 | uVar24 >> 0x1b) + uVar35 + 0x5a827999 + uVar25 +
             ((uVar29 ^ uVar41) & uVar30 ^ uVar41);
    uVar44 = uVar24 >> 2 | uVar24 * 0x40000000;
    uVar36 = (uVar35 * 0x20 | uVar35 >> 0x1b) + uVar41 + 0x5a827999 + uVar31 +
             ((uVar43 ^ uVar29) & uVar24 ^ uVar29);
    uVar30 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar29 = (uVar36 * 0x20 | uVar36 >> 0x1b) + uVar29 + 0x5a827999 + uVar42 +
             ((uVar44 ^ uVar43) & uVar35 ^ uVar43);
    uVar24 = uVar36 >> 2 | uVar36 * 0x40000000;
    uVar36 = (uVar29 * 0x20 | uVar29 >> 0x1b) + uVar43 + 0x5a827999 + uVar38 +
             ((uVar30 ^ uVar44) & uVar36 ^ uVar44);
    uVar35 = uVar29 >> 2 | uVar29 * 0x40000000;
    uVar41 = (uVar36 * 0x20 | uVar36 >> 0x1b) + uVar44 + 0x5a827999 + uVar26 +
             ((uVar24 ^ uVar30) & uVar29 ^ uVar30);
    uVar29 = uVar36 >> 2 | uVar36 * 0x40000000;
    uVar30 = (uVar41 * 0x20 | uVar41 >> 0x1b) + uVar30 + 0x5a827999 + uVar32 +
             ((uVar35 ^ uVar24) & uVar36 ^ uVar24);
    uVar36 = uVar41 >> 2 | uVar41 * 0x40000000;
    uVar24 = (uVar30 * 0x20 | uVar30 >> 0x1b) + uVar24 + 0x5a827999 + uVar47 +
             ((uVar29 ^ uVar35) & uVar41 ^ uVar35);
    uVar41 = uVar30 >> 2 | uVar30 * 0x40000000;
    uVar35 = (uVar24 * 0x20 | uVar24 >> 0x1b) + uVar35 + 0x5a827999 + uVar39 +
             ((uVar36 ^ uVar29) & uVar30 ^ uVar29);
    uVar30 = uVar24 >> 2 | uVar24 * 0x40000000;
    uVar29 = (uVar35 * 0x20 | uVar35 >> 0x1b) + uVar29 + 0x5a827999 + uVar27 +
             ((uVar41 ^ uVar36) & uVar24 ^ uVar36);
    uVar24 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar36 = (uVar29 * 0x20 | uVar29 >> 0x1b) + uVar36 + 0x5a827999 + uVar33 +
             ((uVar30 ^ uVar41) & uVar35 ^ uVar41);
    uVar35 = uVar29 >> 2 | uVar29 * 0x40000000;
    uVar41 = (uVar36 * 0x20 | uVar36 >> 0x1b) + uVar41 + 0x5a827999 + uVar48 +
             ((uVar24 ^ uVar30) & uVar29 ^ uVar30);
    uVar29 = uVar36 >> 2 | uVar36 * 0x40000000;
    uVar30 = (uVar41 * 0x20 | uVar41 >> 0x1b) + uVar30 + 0x5a827999 + uVar40 +
             ((uVar35 ^ uVar24) & uVar36 ^ uVar24);
    uVar44 = uVar41 >> 2 | uVar41 * 0x40000000;
    uVar43 = (uVar30 * 0x20 | uVar30 >> 0x1b) + uVar24 + 0x5a827999 + uVar28 +
             ((uVar29 ^ uVar35) & uVar41 ^ uVar35);
    uVar45 = uVar30 >> 2 | uVar30 * 0x40000000;
    uVar24 = ((uVar44 ^ uVar29) & uVar30 ^ uVar29) +
             (uVar43 * 0x20 | uVar43 >> 0x1b) + uVar35 + 0x5a827999 + uVar34;
    uVar30 = uVar23 ^ uVar25 ^ uVar47 ^ uVar40;
    uVar41 = uVar30 << 1 | (uint)((int)uVar30 < 0);
    uVar36 = uVar43 >> 2 | uVar43 * 0x40000000;
    uVar30 = uVar41 + 0x5a827999 + uVar29 + ((uVar45 ^ uVar44) & uVar43 ^ uVar44) +
             (uVar24 * 0x20 | uVar24 >> 0x1b);
    uVar29 = uVar37 ^ uVar31 ^ uVar39 ^ uVar28;
    uVar29 = uVar29 << 1 | (uint)((int)uVar29 < 0);
    uVar35 = uVar24 >> 2 | uVar24 * 0x40000000;
    uVar24 = uVar29 + 0x5a827999 + uVar44 + ((uVar36 ^ uVar45) & uVar24 ^ uVar45) +
             (uVar30 * 0x20 | uVar30 >> 0x1b);
    uVar23 = uVar25 ^ uVar42 ^ uVar27 ^ uVar34;
    uVar43 = uVar23 << 1 | (uint)((int)uVar23 < 0);
    uVar37 = uVar30 >> 2 | uVar30 * 0x40000000;
    uVar23 = uVar43 + 0x5a827999 + uVar45 + ((uVar35 ^ uVar36) & uVar30 ^ uVar36) +
             (uVar24 * 0x20 | uVar24 >> 0x1b);
    uVar30 = uVar31 ^ uVar38 ^ uVar33 ^ uVar41;
    uVar45 = uVar30 << 1 | (uint)((int)uVar30 < 0);
    uVar30 = uVar24 >> 2 | uVar24 * 0x40000000;
    uVar31 = uVar45 + 0x5a827999 + uVar36 + ((uVar37 ^ uVar35) & uVar24 ^ uVar35) +
             (uVar23 * 0x20 | uVar23 >> 0x1b);
    uVar24 = uVar42 ^ uVar26 ^ uVar48 ^ uVar29;
    uVar25 = uVar24 << 1 | (uint)((int)uVar24 < 0);
    uVar44 = uVar23 >> 2 | uVar23 * 0x40000000;
    uVar36 = uVar25 + 0x6ed9eba1 + uVar35 + (uVar23 ^ uVar30 ^ uVar37) +
             (uVar31 * 0x20 | uVar31 >> 0x1b);
    uVar24 = uVar38 ^ uVar32 ^ uVar40 ^ uVar43;
    uVar23 = uVar24 << 1 | (uint)((int)uVar24 < 0);
    uVar38 = uVar31 >> 2 | uVar31 * 0x40000000;
    uVar35 = uVar23 + 0x6ed9eba1 + uVar37 + (uVar31 ^ uVar44 ^ uVar30) +
             (uVar36 * 0x20 | uVar36 >> 0x1b);
    uVar24 = uVar26 ^ uVar47 ^ uVar28 ^ uVar45;
    uVar31 = uVar24 << 1 | (uint)((int)uVar24 < 0);
    uVar42 = uVar36 >> 2 | uVar36 * 0x40000000;
    uVar26 = uVar31 + 0x6ed9eba1 + uVar30 + (uVar36 ^ uVar38 ^ uVar44) +
             (uVar35 * 0x20 | uVar35 >> 0x1b);
    uVar24 = uVar32 ^ uVar39 ^ uVar34 ^ uVar25;
    uVar24 = uVar24 << 1 | (uint)((int)uVar24 < 0);
    uVar36 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar30 = uVar24 + 0x6ed9eba1 + uVar44 + (uVar35 ^ uVar42 ^ uVar38) +
             (uVar26 * 0x20 | uVar26 >> 0x1b);
    uVar35 = uVar47 ^ uVar27 ^ uVar41 ^ uVar23;
    uVar37 = uVar35 << 1 | (uint)((int)uVar35 < 0);
    uVar32 = uVar26 >> 2 | uVar26 * 0x40000000;
    uVar47 = uVar37 + 0x6ed9eba1 + uVar38 + (uVar26 ^ uVar36 ^ uVar42) +
             (uVar30 * 0x20 | uVar30 >> 0x1b);
    uVar35 = uVar39 ^ uVar33 ^ uVar29 ^ uVar31;
    uVar44 = uVar35 << 1 | (uint)((int)uVar35 < 0);
    uVar35 = uVar30 >> 2 | uVar30 * 0x40000000;
    uVar39 = uVar44 + 0x6ed9eba1 + uVar42 + (uVar30 ^ uVar32 ^ uVar36) +
             (uVar47 * 0x20 | uVar47 >> 0x1b);
    uVar30 = uVar27 ^ uVar48 ^ uVar43 ^ uVar24;
    uVar26 = uVar30 << 1 | (uint)((int)uVar30 < 0);
    uVar38 = uVar47 >> 2 | uVar47 * 0x40000000;
    uVar47 = uVar26 + 0x6ed9eba1 + uVar36 + (uVar47 ^ uVar35 ^ uVar32) +
             (uVar39 * 0x20 | uVar39 >> 0x1b);
    uVar30 = uVar33 ^ uVar40 ^ uVar45 ^ uVar37;
    uVar42 = uVar30 << 1 | (uint)((int)uVar30 < 0);
    uVar33 = uVar39 >> 2 | uVar39 * 0x40000000;
    uVar36 = uVar42 + 0x6ed9eba1 + uVar32 + (uVar39 ^ uVar38 ^ uVar35) +
             (uVar47 * 0x20 | uVar47 >> 0x1b);
    uVar30 = uVar48 ^ uVar28 ^ uVar25 ^ uVar44;
    uVar32 = uVar30 << 1 | (uint)((int)uVar30 < 0);
    uVar48 = uVar47 >> 2 | uVar47 * 0x40000000;
    uVar27 = uVar32 + 0x6ed9eba1 + uVar35 + (uVar47 ^ uVar33 ^ uVar38) +
             (uVar36 * 0x20 | uVar36 >> 0x1b);
    uVar30 = uVar40 ^ uVar34 ^ uVar23 ^ uVar26;
    uVar30 = uVar30 << 1 | (uint)((int)uVar30 < 0);
    uVar47 = uVar36 >> 2 | uVar36 * 0x40000000;
    uVar35 = uVar30 + 0x6ed9eba1 + uVar38 + (uVar36 ^ uVar48 ^ uVar33) +
             (uVar27 * 0x20 | uVar27 >> 0x1b);
    uVar36 = uVar28 ^ uVar41 ^ uVar31 ^ uVar42;
    uVar38 = uVar36 << 1 | (uint)((int)uVar36 < 0);
    uVar28 = uVar27 >> 2 | uVar27 * 0x40000000;
    uVar33 = uVar38 + 0x6ed9eba1 + uVar33 + (uVar27 ^ uVar47 ^ uVar48) +
             (uVar35 * 0x20 | uVar35 >> 0x1b);
    uVar36 = uVar34 ^ uVar29 ^ uVar24 ^ uVar32;
    uVar46 = uVar36 << 1 | (uint)((int)uVar36 < 0);
    uVar36 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar39 = uVar46 + 0x6ed9eba1 + uVar48 + (uVar35 ^ uVar28 ^ uVar47) +
             (uVar33 * 0x20 | uVar33 >> 0x1b);
    uVar35 = uVar41 ^ uVar43 ^ uVar37 ^ uVar30;
    uVar27 = uVar35 << 1 | (uint)((int)uVar35 < 0);
    uVar34 = uVar33 >> 2 | uVar33 * 0x40000000;
    uVar48 = uVar27 + 0x6ed9eba1 + uVar47 + (uVar33 ^ uVar36 ^ uVar28) +
             (uVar39 * 0x20 | uVar39 >> 0x1b);
    uVar29 = uVar29 ^ uVar45 ^ uVar44 ^ uVar38;
    uVar47 = uVar29 << 1 | (uint)((int)uVar29 < 0);
    uVar40 = uVar39 >> 2 | uVar39 * 0x40000000;
    uVar35 = uVar47 + 0x6ed9eba1 + uVar28 + (uVar39 ^ uVar34 ^ uVar36) +
             (uVar48 * 0x20 | uVar48 >> 0x1b);
    uVar29 = uVar43 ^ uVar25 ^ uVar26 ^ uVar46;
    uVar33 = uVar29 << 1 | (uint)((int)uVar29 < 0);
    uVar28 = uVar48 >> 2 | uVar48 * 0x40000000;
    uVar36 = uVar33 + 0x6ed9eba1 + uVar36 + (uVar48 ^ uVar40 ^ uVar34) +
             (uVar35 * 0x20 | uVar35 >> 0x1b);
    uVar29 = uVar45 ^ uVar23 ^ uVar42 ^ uVar27;
    uVar29 = uVar29 << 1 | (uint)((int)uVar29 < 0);
    uVar48 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar35 = uVar29 + 0x6ed9eba1 + uVar34 + (uVar35 ^ uVar28 ^ uVar40) +
             (uVar36 * 0x20 | uVar36 >> 0x1b);
    uVar25 = uVar25 ^ uVar31 ^ uVar32 ^ uVar47;
    uVar39 = uVar25 << 1 | (uint)((int)uVar25 < 0);
    uVar34 = uVar36 >> 2 | uVar36 * 0x40000000;
    uVar40 = uVar39 + 0x6ed9eba1 + uVar40 + (uVar36 ^ uVar48 ^ uVar28) +
             (uVar35 * 0x20 | uVar35 >> 0x1b);
    uVar36 = uVar23 ^ uVar24 ^ uVar30 ^ uVar33;
    uVar43 = uVar36 << 1 | (uint)((int)uVar36 < 0);
    uVar36 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar28 = uVar43 + 0x6ed9eba1 + uVar28 + (uVar35 ^ uVar34 ^ uVar48) +
             (uVar40 * 0x20 | uVar40 >> 0x1b);
    uVar35 = uVar31 ^ uVar37 ^ uVar38 ^ uVar29;
    uVar25 = uVar35 << 1 | (uint)((int)uVar35 < 0);
    uVar41 = uVar40 >> 2 | uVar40 * 0x40000000;
    uVar48 = uVar25 + 0x6ed9eba1 + uVar48 + (uVar40 ^ uVar36 ^ uVar34) +
             (uVar28 * 0x20 | uVar28 >> 0x1b);
    uVar24 = uVar24 ^ uVar44 ^ uVar46 ^ uVar39;
    uVar23 = uVar24 << 1 | (uint)((int)uVar24 < 0);
    uVar40 = uVar28 >> 2 | uVar28 * 0x40000000;
    uVar35 = uVar23 + 0x6ed9eba1 + uVar34 + (uVar28 ^ uVar41 ^ uVar36) +
             (uVar48 * 0x20 | uVar48 >> 0x1b);
    uVar24 = uVar37 ^ uVar26 ^ uVar27 ^ uVar43;
    uVar31 = uVar24 << 1 | (uint)((int)uVar24 < 0);
    uVar28 = uVar48 >> 2 | uVar48 * 0x40000000;
    uVar36 = uVar31 + 0x8f1bbcdc + ((uVar40 ^ uVar41) & uVar48) + uVar36 +
             (uVar35 * 0x20 | uVar35 >> 0x1b) + (uVar40 & uVar41);
    uVar24 = uVar44 ^ uVar42 ^ uVar47 ^ uVar25;
    uVar24 = uVar24 << 1 | (uint)((int)uVar24 < 0);
    uVar48 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar35 = uVar24 + 0x8f1bbcdc + ((uVar28 ^ uVar40) & uVar35) + uVar41 +
             (uVar36 * 0x20 | uVar36 >> 0x1b) + (uVar28 & uVar40);
    uVar26 = uVar26 ^ uVar32 ^ uVar33 ^ uVar23;
    uVar37 = uVar26 << 1 | (uint)((int)uVar26 < 0);
    uVar34 = uVar36 >> 2 | uVar36 * 0x40000000;
    uVar40 = uVar37 + 0x8f1bbcdc + ((uVar48 ^ uVar28) & uVar36) + uVar40 +
             (uVar35 * 0x20 | uVar35 >> 0x1b) + (uVar48 & uVar28);
    uVar36 = uVar42 ^ uVar30 ^ uVar29 ^ uVar31;
    uVar44 = uVar36 << 1 | (uint)((int)uVar36 < 0);
    uVar36 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar28 = uVar44 + 0x8f1bbcdc + ((uVar34 ^ uVar48) & uVar35) + uVar28 +
             (uVar40 * 0x20 | uVar40 >> 0x1b) + (uVar34 & uVar48);
    uVar35 = uVar32 ^ uVar38 ^ uVar39 ^ uVar24;
    uVar26 = uVar35 << 1 | (uint)((int)uVar35 < 0);
    uVar41 = uVar40 >> 2 | uVar40 * 0x40000000;
    uVar48 = uVar26 + 0x8f1bbcdc + ((uVar36 ^ uVar34) & uVar40) + uVar48 +
             (uVar28 * 0x20 | uVar28 >> 0x1b) + (uVar36 & uVar34);
    uVar30 = uVar30 ^ uVar46 ^ uVar43 ^ uVar37;
    uVar42 = uVar30 << 1 | (uint)((int)uVar30 < 0);
    uVar40 = uVar28 >> 2 | uVar28 * 0x40000000;
    uVar35 = uVar42 + 0x8f1bbcdc + ((uVar41 ^ uVar36) & uVar28) + uVar34 +
             (uVar48 * 0x20 | uVar48 >> 0x1b) + (uVar41 & uVar36);
    uVar30 = uVar38 ^ uVar27 ^ uVar25 ^ uVar44;
    uVar32 = uVar30 << 1 | (uint)((int)uVar30 < 0);
    uVar28 = uVar48 >> 2 | uVar48 * 0x40000000;
    uVar36 = uVar32 + 0x8f1bbcdc + ((uVar40 ^ uVar41) & uVar48) + uVar36 +
             (uVar35 * 0x20 | uVar35 >> 0x1b) + (uVar40 & uVar41);
    uVar30 = uVar46 ^ uVar47 ^ uVar23 ^ uVar26;
    uVar30 = uVar30 << 1 | (uint)((int)uVar30 < 0);
    uVar48 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar35 = uVar30 + 0x8f1bbcdc + ((uVar28 ^ uVar40) & uVar35) + uVar41 +
             (uVar36 * 0x20 | uVar36 >> 0x1b) + (uVar28 & uVar40);
    uVar27 = uVar27 ^ uVar33 ^ uVar31 ^ uVar42;
    uVar38 = uVar27 << 1 | (uint)((int)uVar27 < 0);
    uVar34 = uVar36 >> 2 | uVar36 * 0x40000000;
    uVar40 = uVar38 + 0x8f1bbcdc + ((uVar48 ^ uVar28) & uVar36) + uVar40 +
             (uVar35 * 0x20 | uVar35 >> 0x1b) + (uVar48 & uVar28);
    uVar36 = uVar47 ^ uVar29 ^ uVar24 ^ uVar32;
    uVar45 = uVar36 << 1 | (uint)((int)uVar36 < 0);
    uVar36 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar28 = uVar45 + 0x8f1bbcdc + ((uVar34 ^ uVar48) & uVar35) + uVar28 +
             (uVar40 * 0x20 | uVar40 >> 0x1b) + (uVar34 & uVar48);
    uVar35 = uVar33 ^ uVar39 ^ uVar37 ^ uVar30;
    uVar27 = uVar35 << 1 | (uint)((int)uVar35 < 0);
    uVar41 = uVar40 >> 2 | uVar40 * 0x40000000;
    uVar48 = uVar27 + 0x8f1bbcdc + ((uVar36 ^ uVar34) & uVar40) + uVar48 +
             (uVar28 * 0x20 | uVar28 >> 0x1b) + (uVar36 & uVar34);
    uVar29 = uVar29 ^ uVar43 ^ uVar44 ^ uVar38;
    uVar47 = uVar29 << 1 | (uint)((int)uVar29 < 0);
    uVar40 = uVar28 >> 2 | uVar28 * 0x40000000;
    uVar35 = uVar47 + 0x8f1bbcdc + ((uVar41 ^ uVar36) & uVar28) + uVar34 +
             (uVar48 * 0x20 | uVar48 >> 0x1b) + (uVar41 & uVar36);
    uVar29 = uVar39 ^ uVar25 ^ uVar26 ^ uVar45;
    uVar33 = uVar29 << 1 | (uint)((int)uVar29 < 0);
    uVar28 = uVar48 >> 2 | uVar48 * 0x40000000;
    uVar36 = uVar33 + 0x8f1bbcdc + ((uVar40 ^ uVar41) & uVar48) + uVar36 +
             (uVar35 * 0x20 | uVar35 >> 0x1b) + (uVar40 & uVar41);
    uVar29 = uVar43 ^ uVar23 ^ uVar42 ^ uVar27;
    uVar29 = uVar29 << 1 | (uint)((int)uVar29 < 0);
    uVar48 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar35 = uVar29 + 0x8f1bbcdc + ((uVar28 ^ uVar40) & uVar35) + uVar41 +
             (uVar36 * 0x20 | uVar36 >> 0x1b) + (uVar28 & uVar40);
    uVar25 = uVar25 ^ uVar31 ^ uVar32 ^ uVar47;
    uVar39 = uVar25 << 1 | (uint)((int)uVar25 < 0);
    uVar34 = uVar36 >> 2 | uVar36 * 0x40000000;
    uVar40 = uVar39 + 0x8f1bbcdc + ((uVar48 ^ uVar28) & uVar36) + uVar40 +
             (uVar35 * 0x20 | uVar35 >> 0x1b) + (uVar48 & uVar28);
    uVar36 = uVar23 ^ uVar24 ^ uVar30 ^ uVar33;
    uVar43 = uVar36 << 1 | (uint)((int)uVar36 < 0);
    uVar36 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar28 = uVar43 + 0x8f1bbcdc + ((uVar34 ^ uVar48) & uVar35) + uVar28 +
             (uVar40 * 0x20 | uVar40 >> 0x1b) + (uVar34 & uVar48);
    uVar35 = uVar31 ^ uVar37 ^ uVar38 ^ uVar29;
    uVar25 = uVar35 << 1 | (uint)((int)uVar35 < 0);
    uVar41 = uVar40 >> 2 | uVar40 * 0x40000000;
    uVar48 = uVar25 + 0x8f1bbcdc + ((uVar36 ^ uVar34) & uVar40) + uVar48 +
             (uVar28 * 0x20 | uVar28 >> 0x1b) + (uVar36 & uVar34);
    uVar24 = uVar24 ^ uVar44 ^ uVar45 ^ uVar39;
    uVar23 = uVar24 << 1 | (uint)((int)uVar24 < 0);
    uVar46 = uVar28 >> 2 | uVar28 * 0x40000000;
    uVar35 = uVar23 + 0x8f1bbcdc + ((uVar41 ^ uVar36) & uVar28) + uVar34 +
             (uVar48 * 0x20 | uVar48 >> 0x1b) + (uVar41 & uVar36);
    uVar24 = uVar37 ^ uVar26 ^ uVar27 ^ uVar43;
    uVar31 = uVar24 << 1 | (uint)((int)uVar24 < 0);
    uVar28 = uVar48 >> 2 | uVar48 * 0x40000000;
    uVar36 = uVar31 + 0x8f1bbcdc + ((uVar46 ^ uVar41) & uVar48) + uVar36 +
             (uVar35 * 0x20 | uVar35 >> 0x1b) + (uVar46 & uVar41);
    uVar24 = uVar44 ^ uVar42 ^ uVar47 ^ uVar25;
    uVar24 = uVar24 << 1 | (uint)((int)uVar24 < 0);
    uVar48 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar35 = uVar24 + 0x8f1bbcdc + ((uVar28 ^ uVar46) & uVar35) + uVar41 +
             (uVar36 * 0x20 | uVar36 >> 0x1b) + (uVar28 & uVar46);
    uVar26 = uVar26 ^ uVar32 ^ uVar33 ^ uVar23;
    uVar40 = uVar26 << 1 | (uint)((int)uVar26 < 0);
    uVar34 = uVar36 >> 2 | uVar36 * 0x40000000;
    uVar37 = uVar40 + 0xca62c1d6 + uVar46 + (uVar36 ^ uVar48 ^ uVar28) +
             (uVar35 * 0x20 | uVar35 >> 0x1b);
    uVar36 = uVar42 ^ uVar30 ^ uVar29 ^ uVar31;
    uVar44 = uVar36 << 1 | (uint)((int)uVar36 < 0);
    uVar36 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar28 = uVar44 + 0xca62c1d6 + uVar28 + (uVar35 ^ uVar34 ^ uVar48) +
             (uVar37 * 0x20 | uVar37 >> 0x1b);
    uVar35 = uVar32 ^ uVar38 ^ uVar39 ^ uVar24;
    uVar26 = uVar35 << 1 | (uint)((int)uVar35 < 0);
    uVar41 = uVar37 >> 2 | uVar37 * 0x40000000;
    uVar48 = uVar26 + 0xca62c1d6 + uVar48 + (uVar37 ^ uVar36 ^ uVar34) +
             (uVar28 * 0x20 | uVar28 >> 0x1b);
    uVar30 = uVar30 ^ uVar45 ^ uVar43 ^ uVar40;
    uVar42 = uVar30 << 1 | (uint)((int)uVar30 < 0);
    uVar37 = uVar28 >> 2 | uVar28 * 0x40000000;
    uVar35 = uVar42 + 0xca62c1d6 + uVar34 + (uVar28 ^ uVar41 ^ uVar36) +
             (uVar48 * 0x20 | uVar48 >> 0x1b);
    uVar30 = uVar38 ^ uVar27 ^ uVar25 ^ uVar44;
    uVar32 = uVar30 << 1 | (uint)((int)uVar30 < 0);
    uVar28 = uVar48 >> 2 | uVar48 * 0x40000000;
    uVar36 = uVar32 + 0xca62c1d6 + uVar36 + (uVar48 ^ uVar37 ^ uVar41) +
             (uVar35 * 0x20 | uVar35 >> 0x1b);
    uVar30 = uVar45 ^ uVar47 ^ uVar23 ^ uVar26;
    uVar30 = uVar30 << 1 | (uint)((int)uVar30 < 0);
    uVar48 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar35 = uVar30 + 0xca62c1d6 + uVar41 + (uVar35 ^ uVar28 ^ uVar37) +
             (uVar36 * 0x20 | uVar36 >> 0x1b);
    uVar27 = uVar27 ^ uVar33 ^ uVar31 ^ uVar42;
    uVar38 = uVar27 << 1 | (uint)((int)uVar27 < 0);
    uVar34 = uVar36 >> 2 | uVar36 * 0x40000000;
    uVar37 = uVar38 + 0xca62c1d6 + uVar37 + (uVar36 ^ uVar48 ^ uVar28) +
             (uVar35 * 0x20 | uVar35 >> 0x1b);
    uVar36 = uVar47 ^ uVar29 ^ uVar24 ^ uVar32;
    uVar45 = uVar36 << 1 | (uint)((int)uVar36 < 0);
    uVar36 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar28 = uVar45 + 0xca62c1d6 + uVar28 + (uVar35 ^ uVar34 ^ uVar48) +
             (uVar37 * 0x20 | uVar37 >> 0x1b);
    uVar35 = uVar33 ^ uVar39 ^ uVar40 ^ uVar30;
    uVar27 = uVar35 << 1 | (uint)((int)uVar35 < 0);
    uVar41 = uVar37 >> 2 | uVar37 * 0x40000000;
    uVar48 = uVar27 + 0xca62c1d6 + uVar48 + (uVar37 ^ uVar36 ^ uVar34) +
             (uVar28 * 0x20 | uVar28 >> 0x1b);
    uVar29 = uVar29 ^ uVar43 ^ uVar44 ^ uVar38;
    uVar47 = uVar29 << 1 | (uint)((int)uVar29 < 0);
    uVar37 = uVar28 >> 2 | uVar28 * 0x40000000;
    uVar35 = uVar47 + 0xca62c1d6 + uVar34 + (uVar28 ^ uVar41 ^ uVar36) +
             (uVar48 * 0x20 | uVar48 >> 0x1b);
    uVar29 = uVar39 ^ uVar25 ^ uVar26 ^ uVar45;
    uVar33 = uVar29 << 1 | (uint)((int)uVar29 < 0);
    uVar28 = uVar48 >> 2 | uVar48 * 0x40000000;
    uVar36 = uVar33 + 0xca62c1d6 + uVar36 + (uVar48 ^ uVar37 ^ uVar41) +
             (uVar35 * 0x20 | uVar35 >> 0x1b);
    uVar29 = uVar43 ^ uVar23 ^ uVar42 ^ uVar27;
    uVar29 = uVar29 << 1 | (uint)((int)uVar29 < 0);
    uVar48 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar35 = uVar29 + 0xca62c1d6 + uVar41 + (uVar35 ^ uVar28 ^ uVar37) +
             (uVar36 * 0x20 | uVar36 >> 0x1b);
    uVar25 = uVar25 ^ uVar31 ^ uVar32 ^ uVar47;
    uVar25 = uVar25 << 1 | (uint)((int)uVar25 < 0);
    uVar34 = uVar36 >> 2 | uVar36 * 0x40000000;
    uVar39 = uVar25 + 0xca62c1d6 + uVar37 + (uVar36 ^ uVar48 ^ uVar28) +
             (uVar35 * 0x20 | uVar35 >> 0x1b);
    uVar36 = uVar23 ^ uVar24 ^ uVar30 ^ uVar33;
    uVar37 = uVar36 << 1 | (uint)((int)uVar36 < 0);
    uVar36 = uVar35 >> 2 | uVar35 * 0x40000000;
    uVar41 = uVar37 + 0xca62c1d6 + uVar28 + (uVar35 ^ uVar34 ^ uVar48) +
             (uVar39 * 0x20 | uVar39 >> 0x1b);
    uVar35 = uVar31 ^ uVar40 ^ uVar38 ^ uVar29;
    uVar35 = uVar35 << 1 | (uint)((int)uVar35 < 0);
    uVar28 = uVar39 >> 2 | uVar39 * 0x40000000;
    uVar48 = uVar35 + 0xca62c1d6 + uVar48 + (uVar39 ^ uVar36 ^ uVar34) +
             (uVar41 * 0x20 | uVar41 >> 0x1b);
    uVar25 = uVar24 ^ uVar44 ^ uVar45 ^ uVar25;
    uVar23 = uVar25 << 1 | (uint)((int)uVar25 < 0);
    uVar31 = uVar41 >> 2 | uVar41 * 0x40000000;
    uVar24 = uVar23 + 0xca62c1d6 + uVar34 + (uVar41 ^ uVar28 ^ uVar36) +
             (uVar48 * 0x20 | uVar48 >> 0x1b);
    uVar37 = uVar40 ^ uVar26 ^ uVar27 ^ uVar37;
    uVar27 = uVar37 << 1 | (uint)((int)uVar37 < 0);
    uVar25 = uVar48 >> 2 | uVar48 * 0x40000000;
    uVar48 = uVar27 + 0xca62c1d6 + uVar36 + (uVar48 ^ uVar31 ^ uVar28) +
             (uVar24 * 0x20 | uVar24 >> 0x1b);
    uVar35 = uVar44 ^ uVar42 ^ uVar47 ^ uVar35;
    uVar36 = uVar24 >> 2 | uVar24 * 0x40000000;
    uVar24 = (uVar35 << 1 | (uint)((int)uVar35 < 0)) + 0xca62c1d6 +
             uVar28 + (uVar24 ^ uVar25 ^ uVar31) + (uVar48 * 0x20 | uVar48 >> 0x1b);
    uVar23 = uVar26 ^ uVar32 ^ uVar33 ^ uVar23;
    uVar35 = uVar48 >> 2 | uVar48 * 0x40000000;
    uVar23 = (uVar23 << 1 | (uint)((int)uVar23 < 0)) + 0xca62c1d6 +
             uVar31 + (uVar48 ^ uVar36 ^ uVar25) + (uVar24 * 0x20 | uVar24 >> 0x1b);
    uVar27 = uVar42 ^ uVar30 ^ uVar29 ^ uVar27;
    uVar29 = uVar36 + param_1[4];
    *param_1 = (uVar27 << 1 | (uint)((int)uVar27 < 0)) + 0xca62c1d6 +
               uVar25 + (uVar24 ^ uVar35 ^ uVar36) + (uVar23 * 0x20 | uVar23 >> 0x1b) + *param_1;
    param_2 = param_2 + 4;
    param_1[1] = uVar23 + param_1[1];
    param_1[2] = (uVar24 >> 2 | uVar24 * 0x40000000) + param_1[2];
    param_1[3] = uVar35 + param_1[3];
    param_1[4] = uVar29;
  } while (param_2 < pauVar22);
  return;
}



void FUN_00adcec0(ulonglong *param_1,uint *param_2,int param_3,undefined4 param_4,undefined4 param_5
                 ,ulonglong param_6,ulonglong param_7,longlong param_8,uint param_9_00,uint param_9,
                 uint param_10,int param_11)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  longlong *plVar14;
  longlong *plVar15;
  int unaff_ESI;
  uint unaff_EDI;
  uint *puVar16;
  bool bVar17;
  ulonglong uVar18;
  ulonglong uVar19;
  ulonglong uVar20;
  ulonglong uVar21;
  ulonglong uVar22;
  longlong lVar23;
  ulonglong uVar24;
  ulonglong uVar25;
  ulonglong uVar26;
  ulonglong uVar27;
  ulonglong uVar28;
  ulonglong uVar29;
  ulonglong uVar30;
  uint *in_stack_00000230;
  ulonglong *in_stack_00000238;
  uint *in_stack_0000023c;
  uint *in_stack_00000240;
  uint local_100 [4];
  uint local_f0;
  uint local_ec;
  uint local_e8;
  int local_e4;
  uint local_e0;
  uint local_dc;
  uint local_d8;
  uint local_d4;
  uint local_d0;
  uint local_cc;
  uint local_c8;
  int local_c4;
  undefined4 local_98;
  undefined4 uStack_94;
  uint local_48;
  uint uStack_44;
  uint *local_38;
  undefined *local_34;
  longlong local_20;
  
  local_34 = &stack0xfffffff0;
  plVar14 = (longlong *)&DAT_00add800;
  local_38 = param_2 + param_3 * 0x20;
  if ((DAT_032f16d0 >> 0x1a & 1) != 0) {
    uVar20 = *param_1;
    uVar21 = param_1[1];
    uVar22 = param_1[2];
    uVar24 = param_1[3];
    uVar27 = param_1[4];
    uVar28 = param_1[5];
    uVar29 = param_1[6];
    uVar30 = param_1[7];
    do {
      uVar8 = *param_2;
      uVar12 = param_2[1];
      param_2 = param_2 + 2;
      uVar8 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
      uVar12 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;
      do {
        uVar25 = uVar27;
        uVar18 = uVar20;
        plVar15 = plVar14;
        uVar2 = *param_2;
        uVar13 = param_2[1];
        param_2 = param_2 + 2;
        uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
        uVar13 = uVar13 >> 0x18 | (uVar13 & 0xff0000) >> 8 | (uVar13 & 0xff00) << 8 | uVar13 << 0x18
        ;
        lVar23 = (uVar25 >> 0xe ^ uVar25 << 0x17 ^ uVar25 >> 0x12 ^ uVar25 << 0x2e ^ uVar25 >> 0x29
                 ^ uVar25 << 0x32) + ((uVar28 ^ uVar29) & uVar25 ^ uVar29) + uVar30 + *plVar15 +
                 CONCAT44(uVar8,uVar12);
        uVar26 = uVar24 + lVar23;
        uVar19 = lVar23 + (uVar18 >> 0x1c ^ uVar18 << 0x19 ^ uVar18 >> 0x22 ^ uVar18 << 0x1e ^
                           uVar18 >> 0x27 ^ uVar18 << 0x24) +
                          (uVar18 & uVar22 | (uVar18 | uVar22) & uVar21);
        plVar14 = plVar15 + 1;
        uVar20 = uVar19;
        uVar27 = uVar26;
      } while (*(char *)plVar15 != '5');
      lVar23 = (uVar26 >> 0xe ^ uVar26 * 0x800000 ^ uVar26 >> 0x12 ^ uVar26 << 0x2e ^ uVar26 >> 0x29
               ^ uVar26 << 0x32) + ((uVar25 ^ uVar28) & uVar26 ^ uVar28) + uVar29 + plVar15[1] +
               CONCAT44(uVar2,uVar13);
      uVar24 = CONCAT44(uVar8,uVar12);
      plVar15 = plVar15 + 2;
      uVar20 = lVar23 + (uVar19 >> 0x1c ^ uVar19 * 0x2000000 ^ uVar19 >> 0x22 ^ uVar19 * 0x40000000
                         ^ uVar19 >> 0x27 ^ uVar19 << 0x24) +
                        (uVar19 & uVar21 | (uVar19 | uVar21) & uVar18);
      uVar29 = param_7;
      uVar27 = uVar22 + lVar23;
      do {
        uVar30 = uVar27;
        uVar22 = uVar20;
        plVar14 = plVar15;
        lVar23 = (uVar30 >> 0xe ^ uVar30 << 0x17 ^ uVar30 >> 0x12 ^ uVar30 << 0x2e ^ uVar30 >> 0x29
                 ^ uVar30 << 0x32) + ((uVar26 ^ uVar25) & uVar30 ^ uVar25) + uVar28 + *plVar14 +
                 (uVar29 >> 1 ^ uVar29 >> 7 ^ uVar29 >> 8 ^ uVar29 << 0x38 ^ uVar29 << 0x3f) +
                 (uVar24 >> 6 ^ uVar24 >> 0x13 ^ uVar24 >> 0x3d ^ uVar24 << 3 ^ uVar24 << 0x2d) +
                 param_8 + local_20;
        uVar27 = uVar21 + lVar23;
        uVar24 = CONCAT44(uVar2,uVar13);
        uVar20 = lVar23 + (uVar22 >> 0x1c ^ uVar22 << 0x19 ^ uVar22 >> 0x22 ^ uVar22 << 0x1e ^
                           uVar22 >> 0x27 ^ uVar22 << 0x24) +
                          (uVar22 & uVar19 | (uVar22 | uVar19) & CONCAT44(uStack_94,local_98));
        plVar15 = plVar14 + 1;
        uVar29 = param_6;
      } while (*(char *)plVar14 != '\x17');
      uVar20 = uVar20 + *param_1;
      uVar21 = uVar22 + param_1[1];
      uVar22 = CONCAT44(uStack_94,local_98) + param_1[2];
      uVar24 = uVar19 + param_1[3];
      uVar27 = uVar27 + param_1[4];
      uVar28 = uVar30 + param_1[5];
      uVar29 = uVar26 + param_1[6];
      uVar30 = uVar25 + param_1[7];
      *param_1 = uVar20;
      param_1[1] = uVar21;
      param_1[2] = uVar22;
      param_1[3] = uVar24;
      param_1[4] = uVar27;
      param_1[5] = uVar28;
      param_1[6] = uVar29;
      param_1[7] = uVar30;
      plVar14 = plVar14 + -0x4f;
    } while (param_2 < in_stack_00000230);
    return;
  }
  do {
    uVar8 = *param_2;
    uVar12 = param_2[1];
    uStack_44 = uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 | (uVar8 & 0xff00) << 8 | uVar8 << 0x18;
    local_48 = uVar12 >> 0x18 | (uVar12 & 0xff0000) >> 8 | (uVar12 & 0xff00) << 8 | uVar12 << 0x18;
    puVar16 = local_100;
    for (iVar9 = 0x10; iVar9 != 0; iVar9 = iVar9 + -1) {
      *puVar16 = *(uint *)param_1;
      param_1 = (ulonglong *)((int)param_1 + 4);
      puVar16 = puVar16 + 1;
    }
    do {
      uVar8 = local_dc >> 9 ^ local_dc << 0xe ^ local_e0 >> 0xe ^ local_dc << 0x12 ^
              local_e0 >> 0x12 ^ local_e0 << 0x17;
      uVar12 = uVar8 + local_c8;
      uVar2 = uVar12 + local_48;
      uVar10 = (local_d8 ^ local_d0) & local_e0 ^ local_d0;
      uVar13 = uVar2 + uVar10;
      uVar3 = uVar13 + *(uint *)plVar14;
      bVar17 = CARRY4(uVar3,local_e8);
      local_e8 = uVar3 + local_e8;
      local_e4 = (local_e0 >> 9 ^ local_e0 << 0xe ^ local_dc >> 0xe ^ local_e0 << 0x12 ^
                  local_dc >> 0x12 ^ local_dc << 0x17) + local_c4 + (uint)CARRY4(uVar8,local_c8) +
                 uStack_44 + (uint)CARRY4(uVar12,local_48) +
                 ((local_d4 ^ local_cc) & local_dc ^ local_cc) + (uint)CARRY4(uVar2,uVar10) +
                 *(int *)((int)plVar14 + 4) + (uint)CARRY4(uVar13,*(uint *)plVar14) + local_e4 +
                 (uint)bVar17;
      cVar1 = *(char *)plVar14;
      plVar14 = plVar14 + 1;
    } while (cVar1 != -0x6c);
    do {
      plVar15 = plVar14;
      uVar8 = param_9_00 >> 1 ^ param_9 << 0x18 ^ param_9_00 >> 7 ^ param_9 << 0x19 ^
              param_9_00 >> 8 ^ param_9 << 0x1f;
      uVar12 = (uint)local_38 >> 6 ^ (int)local_38 << 3 ^ (uint)local_38 >> 0x13 ^
               (int)local_34 << 0xd ^ (uint)local_34 >> 0x1d ^ (int)local_34 << 0x1a;
      uVar2 = uVar12 + uVar8;
      uVar13 = uVar2 + param_10;
      uVar3 = uVar13 + unaff_EDI;
      uVar10 = local_dc >> 9 ^ local_dc << 0xe ^ local_e0 >> 0xe ^ local_dc << 0x12 ^
               local_e0 >> 0x12 ^ local_e0 << 0x17;
      uVar4 = uVar10 + local_c8;
      uVar5 = uVar4 + uVar3;
      uVar11 = (local_d8 ^ local_d0) & local_e0 ^ local_d0;
      uVar6 = uVar5 + uVar11;
      uVar7 = uVar6 + *(uint *)plVar15;
      iVar9 = (local_e0 >> 9 ^ local_e0 << 0xe ^ local_dc >> 0xe ^ local_e0 << 0x12 ^
               local_dc >> 0x12 ^ local_dc << 0x17) + local_c4 + (uint)CARRY4(uVar10,local_c8) +
              ((uint)local_34 >> 6 ^ (int)local_34 << 3 ^ (uint)local_34 >> 0x13 ^
               (int)local_38 << 0xd ^ (uint)local_38 >> 0x1d) +
              (param_9 >> 1 ^ param_9_00 << 0x18 ^ param_9 >> 7 ^ param_9_00 << 0x1f ^ param_9 >> 8)
              + (uint)CARRY4(uVar12,uVar8) + param_11 + (uint)CARRY4(uVar2,param_10) + unaff_ESI +
              (uint)CARRY4(uVar13,unaff_EDI) + (uint)CARRY4(uVar4,uVar3) +
              ((local_d4 ^ local_cc) & local_dc ^ local_cc) + (uint)CARRY4(uVar5,uVar11) +
              *(int *)((int)plVar15 + 4) + (uint)CARRY4(uVar6,*(uint *)plVar15);
      bVar17 = CARRY4(uVar7,local_e8);
      local_e8 = uVar7 + local_e8;
      local_e4 = iVar9 + local_e4 + (uint)bVar17;
      uVar8 = local_100[1] >> 2 ^ local_100[1] << 4 ^ local_100[1] >> 7 ^ local_100[0] << 0x19 ^
              local_100[0] >> 0x1c ^ local_100[0] << 0x1e;
      uVar12 = uVar8 + uVar7;
      uVar13 = (local_100[0] | local_100[2]) & local_f0 | local_100[2] & local_100[0];
      uVar2 = uVar12 + uVar13;
      plVar14 = plVar15 + 1;
    } while (*(char *)plVar15 != '\x17');
    uVar3 = *(uint *)in_stack_00000238;
    uVar10 = *(uint *)(in_stack_00000238 + 1);
    *(uint *)in_stack_00000238 = uVar3 + uVar2;
    *(uint *)((int)in_stack_00000238 + 4) =
         *(int *)((int)in_stack_00000238 + 4) +
         (local_100[0] >> 2 ^ local_100[0] << 4 ^ local_100[0] >> 7 ^ local_100[1] << 0x19 ^
          local_100[1] >> 0x1c ^ local_100[1] << 0x1e) + iVar9 + (uint)CARRY4(uVar8,uVar7) +
         ((local_100[1] | local_100[3]) & local_ec | local_100[3] & local_100[1]) +
         (uint)CARRY4(uVar12,uVar13) + (uint)CARRY4(uVar3,uVar2);
    *(uint *)(in_stack_00000238 + 1) = uVar10 + local_100[0];
    *(uint *)((int)in_stack_00000238 + 0xc) =
         *(int *)((int)in_stack_00000238 + 0xc) + local_100[1] + (uint)CARRY4(uVar10,local_100[0]);
    uVar8 = *(uint *)(in_stack_00000238 + 2);
    uVar12 = *(uint *)(in_stack_00000238 + 3);
    *(uint *)(in_stack_00000238 + 2) = uVar8 + local_100[2];
    *(uint *)((int)in_stack_00000238 + 0x14) =
         *(int *)((int)in_stack_00000238 + 0x14) + local_100[3] + (uint)CARRY4(uVar8,local_100[2]);
    *(uint *)(in_stack_00000238 + 3) = uVar12 + local_f0;
    *(uint *)((int)in_stack_00000238 + 0x1c) =
         *(int *)((int)in_stack_00000238 + 0x1c) + local_ec + (uint)CARRY4(uVar12,local_f0);
    uVar8 = *(uint *)(in_stack_00000238 + 4);
    uVar12 = *(uint *)(in_stack_00000238 + 5);
    *(uint *)(in_stack_00000238 + 4) = uVar8 + local_e8;
    *(uint *)((int)in_stack_00000238 + 0x24) =
         *(int *)((int)in_stack_00000238 + 0x24) + local_e4 + (uint)CARRY4(uVar8,local_e8);
    *(uint *)(in_stack_00000238 + 5) = uVar12 + local_e0;
    *(uint *)((int)in_stack_00000238 + 0x2c) =
         *(int *)((int)in_stack_00000238 + 0x2c) + local_dc + (uint)CARRY4(uVar12,local_e0);
    uVar8 = *(uint *)(in_stack_00000238 + 6);
    uVar12 = *(uint *)(in_stack_00000238 + 7);
    *(uint *)(in_stack_00000238 + 6) = uVar8 + local_d8;
    *(uint *)((int)in_stack_00000238 + 0x34) =
         *(int *)((int)in_stack_00000238 + 0x34) + local_d4 + (uint)CARRY4(uVar8,local_d8);
    *(uint *)(in_stack_00000238 + 7) = uVar12 + local_d0;
    *(uint *)((int)in_stack_00000238 + 0x3c) =
         *(int *)((int)in_stack_00000238 + 0x3c) + local_cc + (uint)CARRY4(uVar12,local_d0);
    plVar14 = plVar15 + -0x4f;
    param_1 = in_stack_00000238;
    param_2 = in_stack_0000023c;
  } while (in_stack_0000023c < in_stack_00000240);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00addad0(size_t *param_1,void **param_2,int param_3,undefined4 param_4)

{
  size_t sVar1;
  size_t *psVar2;
  void **ppvVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  
  iVar4 = param_3;
  psVar2 = param_1;
  if (param_1 == (size_t *)0x0) {
    return 0;
  }
  if (param_3 == 3) {
    uVar5 = FUN_00a88830(param_1,param_2);
    return uVar5;
  }
  sVar1 = *param_1;
  uVar5 = FUN_00a90b80(0,sVar1,param_3);
  ppvVar3 = param_2;
  if (param_2 != (void **)0x0) {
    param_1 = (size_t *)*param_2;
    if ((iVar4 == 0x10) || (iVar4 == 0x11)) {
      uVar6 = 1;
    }
    else {
      uVar6 = 0;
    }
    FUN_00a90fd0(&param_1,uVar6,sVar1,iVar4,param_4);
    _memcpy(param_1,(void *)psVar2[2],*psVar2);
    *ppvVar3 = (void *)(*psVar2 + (int)param_1);
  }
  return uVar5;
}



void FUN_00addb80(int *param_1)

{
  if ((*(byte *)(param_1 + 7) & 1) != 0) {
    FUN_00a85120(param_1[1]);
    if (*param_1 == 3) {
      FUN_00a85120(param_1[4]);
      FUN_00a85120(param_1[5]);
      FUN_00a85120(param_1[6]);
    }
  }
  FUN_00a85120(param_1);
  return;
}



void FUN_00addbd0(int param_1)

{
  if (param_1 != 0) {
    FUN_00a81120(*(undefined4 *)(param_1 + 4),FUN_00addb80);
    FUN_00a80760(0xb,param_1,param_1 + 0xc);
    FUN_00a85120(param_1);
  }
  return;
}



int * FUN_00addc00(int param_1,int param_2)

{
  int *piVar1;
  int unaff_EBX;
  int unaff_ESI;
  int unaff_EDI;
  
  if (unaff_ESI == 0) {
    FUN_00a7f3c0(0x28,0x6d,0x43,".\\crypto\\ui\\ui_lib.c",0x93);
    return (int *)0x0;
  }
  if ((((unaff_EDI == 1) || (unaff_EDI == 2)) || (unaff_EDI == 3)) && (unaff_EBX == 0)) {
    FUN_00a7f3c0(0x28,0x6d,0x69,".\\crypto\\ui\\ui_lib.c",0x98);
    return (int *)0x0;
  }
  piVar1 = (int *)FUN_00a84f80(0x20,".\\crypto\\ui\\ui_lib.c",0x9a);
  if (piVar1 != (int *)0x0) {
    piVar1[1] = unaff_ESI;
    piVar1[2] = param_2;
    *piVar1 = unaff_EDI;
    piVar1[3] = unaff_EBX;
    piVar1[7] = (uint)(param_1 != 0);
  }
  return piVar1;
}



int __thiscall
FUN_00addc90(undefined4 param_1_00,int param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_00addc00(param_1_00,param_3);
  if (iVar1 == 0) {
LAB_00addcfa:
    iVar1 = -1;
  }
  else {
    if (*(int *)(param_1 + 4) == 0) {
      iVar2 = FUN_00a81010();
      *(int *)(param_1 + 4) = iVar2;
      if (iVar2 == 0) {
        FUN_00addb80(iVar1);
        goto LAB_00addcfa;
      }
    }
    *(undefined4 *)(iVar1 + 0x10) = param_4;
    *(undefined4 *)(iVar1 + 0x14) = param_5;
    *(undefined4 *)(iVar1 + 0x18) = param_6;
    iVar1 = FUN_00a80df0(*(undefined4 *)(param_1 + 4),iVar1);
    if (iVar1 < 1) {
      return iVar1 + -1;
    }
  }
  return iVar1;
}



void FUN_00addd00(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  FUN_00addc90(param_1,param_2,param_3,param_5,param_6,0);
  return;
}



void FUN_00addd40(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  FUN_00addc90(param_1,param_2,param_3,param_5,param_6,param_7);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00addd80(undefined4 param_1,undefined4 param_2,int *param_3)

{
  int iVar1;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_18 = 0;
  local_14 = 0;
  local_10 = 0;
  local_c = 0;
  local_8 = 0;
  local_4 = 0;
  local_20 = 5;
  local_1c = param_1;
  if (*(code **)(*param_3 + 8) != (code *)0x0) {
    iVar1 = (**(code **)(*param_3 + 8))(param_3,&local_20);
    if (iVar1 == 0) {
      return 0xffffffff;
    }
  }
  return 0;
}



undefined4 FUN_00adddf0(int *param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  
  if ((*(code **)(*param_1 + 4) != (code *)0x0) &&
     (iVar1 = (**(code **)(*param_1 + 4))(param_1), iVar1 == 0)) {
    return 0xffffffff;
  }
  if ((param_1[5] & 0x100U) != 0) {
    FUN_00ae3ba0(FUN_00addd80,param_1);
  }
  iVar3 = 0;
  iVar1 = FUN_00a80ed0(param_1[1]);
  if (0 < iVar1) {
    do {
      iVar1 = *param_1;
      if (*(int *)(iVar1 + 8) != 0) {
        uVar2 = FUN_00a80ee0(param_1[1],iVar3);
        iVar1 = (**(code **)(iVar1 + 8))(param_1,uVar2);
        if (iVar1 == 0) goto LAB_00addeda;
      }
      iVar3 = iVar3 + 1;
      iVar1 = FUN_00a80ed0(param_1[1]);
    } while (iVar3 < iVar1);
  }
  if (*(code **)(*param_1 + 0xc) != (code *)0x0) {
    iVar1 = (**(code **)(*param_1 + 0xc))(param_1);
    if (iVar1 == -1) {
LAB_00addedf:
      uVar2 = 0xfffffffe;
      goto LAB_00addee4;
    }
    if (iVar1 == 0) {
LAB_00addeda:
      uVar2 = 0xffffffff;
      goto LAB_00addee4;
    }
  }
  uVar2 = 0;
  iVar3 = 0;
  iVar1 = FUN_00a80ed0(param_1[1]);
  if (0 < iVar1) {
    do {
      iVar1 = *param_1;
      if (*(int *)(iVar1 + 0x10) != 0) {
        uVar2 = FUN_00a80ee0(param_1[1],iVar3);
        iVar1 = (**(code **)(iVar1 + 0x10))(param_1,uVar2);
        if (iVar1 == -1) goto LAB_00addedf;
        if (iVar1 == 0) goto LAB_00addeda;
      }
      uVar2 = 0;
      iVar3 = iVar3 + 1;
      iVar1 = FUN_00a80ed0(param_1[1]);
    } while (iVar3 < iVar1);
  }
LAB_00addee4:
  if ((*(code **)(*param_1 + 0x14) != (code *)0x0) &&
     (iVar1 = (**(code **)(*param_1 + 0x14))(param_1), iVar1 == 0)) {
    return 0xffffffff;
  }
  return uVar2;
}



int FUN_00addf10(int param_1)

{
  if (param_1 == 0) {
    return param_1;
  }
  return *(int *)(param_1 + 4);
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00addf80(int param_1,int *param_2,char *param_3)

{
  char cVar1;
  int iVar2;
  char *pcVar3;
  undefined4 uVar4;
  undefined local_24 [16];
  undefined local_14 [16];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_24;
  pcVar3 = param_3;
  do {
    cVar1 = *pcVar3;
    pcVar3 = pcVar3 + 1;
  } while (cVar1 != '\0');
  *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) & 0xfffffffe;
  if (param_2 == (int *)0x0) goto LAB_00ade0ec;
  iVar2 = *param_2;
  if (iVar2 < 1) goto LAB_00ade165;
  if (iVar2 < 3) {
    FUN_00a86220(local_14,0xd,&DAT_00d26cac,param_2[4]);
    FUN_00a86220(local_24,0xd,&DAT_00d26cac,param_2[5]);
    if ((int)pcVar3 - (int)(param_3 + 1) < param_2[4]) {
      *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | 1;
      FUN_00a7f3c0(0x28,0x69,0x65,".\\crypto\\ui\\ui_lib.c",0x365);
    }
    else {
      if ((int)pcVar3 - (int)(param_3 + 1) <= param_2[5]) {
        if (param_2[3] != 0) {
          FUN_00a851b0(param_2[3],param_3,param_2[5] + 1);
          goto LAB_00ade165;
        }
        uVar4 = 0x376;
        goto LAB_00ade144;
      }
      *(uint *)(param_1 + 0x14) = *(uint *)(param_1 + 0x14) | 1;
      FUN_00a7f3c0(0x28,0x69,100,".\\crypto\\ui\\ui_lib.c",0x36d);
    }
    FUN_00a7f690(5,"You must type in ",local_14,&DAT_00dc5eb4,local_24," characters");
  }
  else {
    if (iVar2 != 3) {
LAB_00ade165:
      ___security_check_cookie_4();
      return;
    }
    if ((undefined *)param_2[3] != (undefined *)0x0) {
      *(undefined *)param_2[3] = 0;
      if (*param_3 != '\0') {
        while( true ) {
          pcVar3 = _strchr((char *)param_2[5],(int)*param_3);
          if (pcVar3 != (char *)0x0) {
            *(undefined *)param_2[3] = *(undefined *)param_2[5];
            ___security_check_cookie_4();
            return;
          }
          pcVar3 = _strchr((char *)param_2[6],(int)*param_3);
          if (pcVar3 != (char *)0x0) break;
          param_3 = param_3 + 1;
          if (*param_3 == '\0') {
            ___security_check_cookie_4();
            return;
          }
        }
        *(undefined *)param_2[3] = *(undefined *)param_2[6];
        ___security_check_cookie_4();
        return;
      }
      goto LAB_00ade165;
    }
    uVar4 = 899;
LAB_00ade144:
    FUN_00a7f3c0(0x28,0x69,0x69,".\\crypto\\ui\\ui_lib.c",uVar4);
  }
LAB_00ade0ec:
  ___security_check_cookie_4();
  return;
}



int * FUN_00ade180(void)

{
  int *piVar1;
  
  piVar1 = (int *)FUN_00a84f80(0x18,".\\crypto\\ui\\ui_lib.c",0x50);
  if (piVar1 == (int *)0x0) {
    FUN_00a7f3c0(0x28,0x68,0x41,".\\crypto\\ui\\ui_lib.c",0x53);
    return (int *)0x0;
  }
  if (DAT_032edb4c == 0) {
    DAT_032edb4c = FUN_00aee5d0();
  }
  *piVar1 = DAT_032edb4c;
  piVar1[1] = 0;
  piVar1[2] = 0;
  piVar1[5] = 0;
  FUN_00a80700(0xb,piVar1,piVar1 + 3);
  return piVar1;
}



void FUN_00ade1f0(undefined4 param_1)

{
  FUN_00a98620(&DAT_032edb50,param_1);
  return;
}



int FUN_00ade210(int param_1,undefined4 param_2)

{
  int iVar1;
  
  if (*(code **)(param_1 + 0x24) != (code *)0x0) {
    iVar1 = (**(code **)(param_1 + 0x24))(param_1,&param_1,0,param_2);
    if (iVar1 != 0) {
      return param_1;
    }
  }
  FUN_00a7f3c0(0x26,0xb9,0x92,".\\crypto\\engine\\tb_cipher.c",0x7e);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ade260(byte *param_1,int param_2,int param_3)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  byte *pbVar7;
  byte *pbVar8;
  byte *pbVar9;
  int iVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  int iVar17;
  uint *puVar18;
  uint *puVar19;
  uint local_260;
  uint local_25c;
  uint local_258;
  uint local_254;
  int local_250;
  uint local_24c;
  uint local_248;
  int local_244;
  uint local_240;
  uint local_23c;
  byte *local_238;
  uint local_234;
  uint local_230;
  uint local_22c;
  uint local_228;
  uint local_224;
  uint local_220;
  uint local_21c;
  uint local_218;
  uint local_214;
  uint local_210;
  uint local_20c;
  uint local_208;
  uint local_204;
  uint local_200;
  uint local_1fc;
  uint local_1f8;
  uint local_1f4;
  uint local_1f0;
  uint local_1ec;
  uint local_1e8;
  uint local_1e4;
  uint local_1e0;
  uint local_1dc;
  uint local_1d8;
  uint local_1d4;
  uint local_1d0;
  uint local_1cc;
  uint local_1c8;
  uint local_1c4;
  uint local_1c0;
  uint local_1bc;
  uint local_1b8;
  uint local_1b4;
  uint local_1b0;
  uint local_1ac;
  uint local_1a8;
  uint local_1a4;
  uint local_1a0;
  uint *local_19c;
  uint local_198;
  uint local_194;
  uint local_190;
  uint local_18c;
  uint local_188;
  uint local_184;
  uint local_180;
  uint local_17c;
  uint local_178;
  uint local_174;
  uint local_170;
  uint local_16c;
  uint local_168;
  uint local_164;
  uint local_160;
  uint local_15c;
  uint local_158;
  uint local_154;
  uint local_150;
  uint local_14c;
  uint local_148;
  uint local_144;
  uint local_140;
  uint local_13c;
  uint local_138;
  uint local_134;
  uint local_130;
  uint local_12c;
  uint local_128;
  uint local_124;
  uint local_120;
  uint local_11c;
  uint local_118;
  uint local_114;
  uint local_110;
  uint local_10c;
  uint local_108;
  uint local_104;
  uint local_100;
  uint local_fc;
  uint local_f8;
  uint local_f4;
  uint local_f0;
  byte *local_ec;
  int local_e8;
  uint local_e4;
  uint local_e0;
  byte *local_dc;
  uint local_d8;
  uint local_d4;
  byte *local_d0;
  byte *local_cc;
  byte *local_c8;
  uint local_c4 [5];
  uint local_b0;
  uint local_ac;
  uint local_a8;
  uint local_a4;
  uint local_a0;
  uint local_9c;
  uint local_98;
  uint local_94;
  uint local_90;
  uint local_8c;
  uint local_88;
  undefined4 local_84;
  byte local_80;
  byte local_7f;
  byte local_7e;
  byte local_7d;
  byte local_7c;
  byte local_7b;
  byte local_7a;
  byte local_79;
  byte local_78;
  byte local_77;
  byte local_76;
  byte local_75;
  byte local_74;
  byte local_73;
  byte local_72;
  byte local_71;
  byte local_70;
  byte local_6f;
  byte local_6e;
  byte local_6d;
  byte local_6c;
  byte local_6b;
  byte local_6a;
  byte local_69;
  byte local_68;
  byte local_67;
  byte local_66;
  byte local_65;
  byte local_64;
  byte local_63;
  byte local_62;
  byte local_61;
  byte local_60;
  byte local_5f;
  byte local_5e;
  byte local_5d;
  byte local_5c;
  byte local_5b;
  byte local_5a;
  byte local_59;
  byte local_58;
  byte local_57;
  byte local_56;
  byte local_55;
  byte local_54;
  byte local_53;
  byte local_52;
  byte local_51;
  byte local_50;
  byte local_4f;
  byte local_4e;
  byte local_4d;
  byte local_4c;
  byte local_4b;
  byte local_4a;
  byte local_49;
  byte local_48;
  byte local_47;
  byte local_46;
  byte local_45;
  undefined4 local_44;
  byte abStack_40 [60];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_260;
  local_cc = param_1;
  if ((DAT_032f16d0 & 0x800000) != 0) {
    FUN_00aeeb40(param_1,param_2,param_3);
    ___security_check_cookie_4();
    return;
  }
  local_e8 = (int)param_1 - (int)&local_84;
  local_dc = abStack_40 + (-4 - (int)param_1);
  local_c8 = abStack_40 + -(int)param_1 + -3;
  local_d0 = abStack_40 + -(int)param_1 + -2;
  local_ec = abStack_40 + -(int)param_1 + -1;
  local_244 = param_2 - (int)&local_44;
  local_238 = (byte *)(param_2 + 2);
  local_250 = param_2 - (int)&local_84;
  do {
    iVar2 = 0;
    do {
      pbVar7 = (byte *)((int)&local_84 + iVar2);
      bVar1 = pbVar7[local_e8];
      *pbVar7 = bVar1;
      abStack_40[iVar2 + -4] = pbVar7[local_250] ^ bVar1;
      iVar2 = iVar2 + 1;
    } while (iVar2 < 0x40);
    local_19c = &DAT_00dc66e8;
    do {
      local_138 = *(uint *)(&DAT_00dc5ee8 + (uint)local_59 * 8);
      local_134 = *(uint *)(&DAT_00dc5eec + (uint)local_59 * 8);
      local_22c = *(uint *)(&DAT_00dc5ee8 + (uint)local_60 * 8);
      local_228 = *(uint *)(&DAT_00dc5eec + (uint)local_60 * 8);
      local_190 = *(uint *)(&DAT_00dc5ee8 + (uint)local_67 * 8);
      local_18c = *(uint *)(&DAT_00dc5eec + (uint)local_67 * 8);
      local_120 = *(uint *)(&DAT_00dc5ee8 + (uint)local_6e * 8);
      local_11c = *(uint *)(&DAT_00dc5eec + (uint)local_6e * 8);
      local_e4 = *(uint *)(&DAT_00dc5ee8 + (uint)local_75 * 8);
      local_e0 = *(uint *)(&DAT_00dc5eec + (uint)local_75 * 8);
      uVar13 = ((local_e4 << 8 ^ local_120) << 8 ^ local_190) << 8 ^ local_22c;
      uVar14 = uVar13 << 8 ^ local_138;
      uVar15 = uVar14 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_52 * 8);
      uVar16 = uVar15 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_4b * 8);
      uVar3 = ((*(uint *)(&DAT_00dc5eec + (uint)local_4b * 8) >> 8 ^
               *(uint *)(&DAT_00dc5eec + (uint)local_52 * 8)) >> 8 ^ local_134) >> 8 ^ local_228;
      uVar4 = uVar3 >> 8 ^ local_18c;
      uVar5 = uVar4 >> 8 ^ local_11c;
      uVar6 = uVar5 >> 8 ^ local_e0;
      local_c4[0] = *local_19c ^
                    uVar16 << 8 ^
                    ((((((uVar3 << 0x18 ^ local_190) >> 8 | uVar4 << 0x18) ^ local_120) >> 8 |
                      uVar5 << 0x18) ^ local_e4) >> 8 | uVar6 << 0x18) ^
                    *(uint *)(&DAT_00dc5ee8 + (uint)(byte)local_84 * 8);
      local_c4[1] = local_19c[1] ^
                    ((((((uVar13 >> 0x18 ^ local_134) << 8 | uVar14 >> 0x18) ^
                       *(uint *)(&DAT_00dc5eec + (uint)local_52 * 8)) << 8 | uVar15 >> 0x18) ^
                     *(uint *)(&DAT_00dc5eec + (uint)local_4b * 8)) << 8 | uVar16 >> 0x18) ^
                    uVar6 >> 8 ^ *(uint *)(&DAT_00dc5eec + (uint)(byte)local_84 * 8);
      local_fc = *(uint *)(&DAT_00dc5eec + (uint)local_4a * 8);
      local_100 = *(uint *)(&DAT_00dc5ee8 + (uint)local_4a * 8);
      local_180 = *(uint *)(&DAT_00dc5ee8 + (uint)local_51 * 8);
      local_17c = *(uint *)(&DAT_00dc5eec + (uint)local_51 * 8);
      local_20c = *(uint *)(&DAT_00dc5ee8 + (uint)local_58 * 8);
      local_208 = *(uint *)(&DAT_00dc5eec + (uint)local_58 * 8);
      uVar13 = ((*(uint *)(&DAT_00dc5eec + (uint)local_84._1_1_ * 8) >> 8 ^ local_fc) >> 8 ^
               local_17c) >> 8 ^ local_208;
      local_160 = *(uint *)(&DAT_00dc5ee8 + (uint)local_5f * 8);
      local_15c = *(uint *)(&DAT_00dc5eec + (uint)local_5f * 8);
      uVar14 = uVar13 >> 8 ^ local_15c;
      local_21c = *(uint *)(&DAT_00dc5ee8 + (uint)local_66 * 8);
      local_218 = *(uint *)(&DAT_00dc5eec + (uint)local_66 * 8);
      uVar15 = uVar14 >> 8 ^ local_218;
      uVar16 = uVar15 >> 8 ^ *(uint *)(&DAT_00dc5eec + (uint)local_6d * 8);
      uVar3 = ((*(uint *)(&DAT_00dc5ee8 + (uint)local_6d * 8) << 8 ^ local_21c) << 8 ^ local_160) <<
              8 ^ local_20c;
      uVar4 = uVar3 << 8 ^ local_180;
      uVar5 = uVar4 << 8 ^ local_100;
      uVar6 = uVar5 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_84._1_1_ * 8);
      local_12c = *(uint *)(&DAT_00dc5eec + (uint)local_84._2_1_ * 8);
      local_130 = *(uint *)(&DAT_00dc5ee8 + (uint)local_84._2_1_ * 8);
      local_c4[3] = uVar16 >> 8 ^
                    ((((((uVar3 >> 0x18 ^ local_17c) << 8 | uVar4 >> 0x18) ^ local_fc) << 8 |
                      uVar5 >> 0x18) ^ *(uint *)(&DAT_00dc5eec + (uint)local_84._1_1_ * 8)) << 8 |
                    uVar6 >> 0x18) ^ *(uint *)(&DAT_00dc5eec + (uint)local_7c * 8);
      local_c4[2] = ((((((uVar13 << 0x18 ^ local_160) >> 8 | uVar14 << 0x18) ^ local_21c) >> 8 |
                      uVar15 << 0x18) ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_6d * 8)) >> 8 |
                    uVar16 << 0x18) ^ uVar6 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_7c * 8);
      local_170 = *(uint *)(&DAT_00dc5ee8 + (uint)local_49 * 8);
      local_16c = *(uint *)(&DAT_00dc5eec + (uint)local_49 * 8);
      local_1ec = *(uint *)(&DAT_00dc5ee8 + (uint)local_50 * 8);
      local_1e8 = *(uint *)(&DAT_00dc5eec + (uint)local_50 * 8);
      uVar13 = ((*(uint *)(&DAT_00dc5eec + (uint)local_7b * 8) >> 8 ^ local_12c) >> 8 ^ local_16c)
               >> 8 ^ local_1e8;
      local_150 = *(uint *)(&DAT_00dc5ee8 + (uint)local_57 * 8);
      local_14c = *(uint *)(&DAT_00dc5eec + (uint)local_57 * 8);
      uVar14 = uVar13 >> 8 ^ local_14c;
      local_1fc = *(uint *)(&DAT_00dc5ee8 + (uint)local_5e * 8);
      local_1f8 = *(uint *)(&DAT_00dc5eec + (uint)local_5e * 8);
      uVar15 = uVar14 >> 8 ^ local_1f8;
      uVar16 = uVar15 >> 8 ^ *(uint *)(&DAT_00dc5eec + (uint)local_65 * 8);
      uVar3 = ((*(uint *)(&DAT_00dc5ee8 + (uint)local_65 * 8) << 8 ^ local_1fc) << 8 ^ local_150) <<
              8 ^ local_1ec;
      uVar4 = uVar3 << 8 ^ local_170;
      uVar5 = uVar4 << 8 ^ local_130;
      uVar6 = uVar5 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_7b * 8);
      local_128 = *(uint *)(&DAT_00dc5ee8 + (uint)local_7a * 8);
      local_124 = *(uint *)(&DAT_00dc5eec + (uint)local_7a * 8);
      local_148 = *(uint *)(&DAT_00dc5ee8 + (uint)local_84._3_1_ * 8);
      local_144 = *(uint *)(&DAT_00dc5eec + (uint)local_84._3_1_ * 8);
      local_b0 = uVar16 >> 8 ^
                 ((((((uVar3 >> 0x18 ^ local_16c) << 8 | uVar4 >> 0x18) ^ local_12c) << 8 |
                   uVar5 >> 0x18) ^ *(uint *)(&DAT_00dc5eec + (uint)local_7b * 8)) << 8 |
                 uVar6 >> 0x18) ^ *(uint *)(&DAT_00dc5eec + (uint)local_74 * 8);
      local_c4[4] = ((((((uVar13 << 0x18 ^ local_150) >> 8 | uVar14 << 0x18) ^ local_1fc) >> 8 |
                      uVar15 << 0x18) ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_65 * 8)) >> 8 |
                    uVar16 << 0x18) ^ uVar6 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_74 * 8);
      local_1cc = *(uint *)(&DAT_00dc5ee8 + (uint)local_48 * 8);
      local_1c8 = *(uint *)(&DAT_00dc5eec + (uint)local_48 * 8);
      local_140 = *(uint *)(&DAT_00dc5ee8 + (uint)local_4f * 8);
      local_13c = *(uint *)(&DAT_00dc5eec + (uint)local_4f * 8);
      local_1dc = *(uint *)(&DAT_00dc5ee8 + (uint)local_56 * 8);
      local_1d8 = *(uint *)(&DAT_00dc5eec + (uint)local_56 * 8);
      uVar13 = ((*(uint *)(&DAT_00dc5eec + (uint)local_73 * 8) >> 8 ^ local_124) >> 8 ^ local_144)
               >> 8 ^ local_1c8;
      uVar14 = uVar13 >> 8 ^ local_13c;
      uVar15 = uVar14 >> 8 ^ local_1d8;
      uVar16 = uVar15 >> 8 ^ *(uint *)(&DAT_00dc5eec + (uint)local_5d * 8);
      uVar3 = ((*(uint *)(&DAT_00dc5ee8 + (uint)local_5d * 8) << 8 ^ local_1dc) << 8 ^ local_140) <<
              8 ^ local_1cc;
      uVar4 = uVar3 << 8 ^ local_148;
      uVar5 = uVar4 << 8 ^ local_128;
      uVar6 = uVar5 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_73 * 8);
      local_114 = *(uint *)(&DAT_00dc5eec + (uint)local_72 * 8);
      local_118 = *(uint *)(&DAT_00dc5ee8 + (uint)local_72 * 8);
      local_168 = *(uint *)(&DAT_00dc5ee8 + (uint)local_79 * 8);
      local_164 = *(uint *)(&DAT_00dc5eec + (uint)local_79 * 8);
      local_1ac = *(uint *)(&DAT_00dc5ee8 + (uint)local_80 * 8);
      local_1a8 = *(uint *)(&DAT_00dc5eec + (uint)local_80 * 8);
      local_158 = *(uint *)(&DAT_00dc5ee8 + (uint)local_47 * 8);
      local_154 = *(uint *)(&DAT_00dc5eec + (uint)local_47 * 8);
      local_1bc = *(uint *)(&DAT_00dc5ee8 + (uint)local_4e * 8);
      local_1b8 = *(uint *)(&DAT_00dc5eec + (uint)local_4e * 8);
      local_ac = ((((((uVar13 << 0x18 ^ local_140) >> 8 | uVar14 << 0x18) ^ local_1dc) >> 8 |
                   uVar15 << 0x18) ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_5d * 8)) >> 8 |
                 uVar16 << 0x18) ^ uVar6 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_6c * 8);
      local_a8 = uVar16 >> 8 ^
                 ((((((uVar3 >> 0x18 ^ local_144) << 8 | uVar4 >> 0x18) ^ local_124) << 8 |
                   uVar5 >> 0x18) ^ *(uint *)(&DAT_00dc5eec + (uint)local_73 * 8)) << 8 |
                 uVar6 >> 0x18) ^ *(uint *)(&DAT_00dc5eec + (uint)local_6c * 8);
      uVar13 = ((*(uint *)(&DAT_00dc5eec + (uint)local_6b * 8) >> 8 ^ local_114) >> 8 ^ local_164)
               >> 8 ^ local_1a8;
      uVar14 = uVar13 >> 8 ^ local_154;
      uVar15 = uVar14 >> 8 ^ local_1b8;
      uVar16 = uVar15 >> 8 ^ *(uint *)(&DAT_00dc5eec + (uint)local_55 * 8);
      uVar3 = ((*(uint *)(&DAT_00dc5ee8 + (uint)local_55 * 8) << 8 ^ local_1bc) << 8 ^ local_158) <<
              8 ^ local_1ac;
      uVar4 = uVar3 << 8 ^ local_168;
      uVar5 = uVar4 << 8 ^ local_118;
      uVar6 = uVar5 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_6b * 8);
      local_104 = *(uint *)(&DAT_00dc5eec + (uint)local_6a * 8);
      local_108 = *(uint *)(&DAT_00dc5ee8 + (uint)local_6a * 8);
      local_240 = *(uint *)(&DAT_00dc5ee8 + (uint)local_71 * 8);
      local_23c = *(uint *)(&DAT_00dc5eec + (uint)local_71 * 8);
      local_24c = *(uint *)(&DAT_00dc5ee8 + (uint)local_78 * 8);
      local_248 = *(uint *)(&DAT_00dc5eec + (uint)local_78 * 8);
      local_258 = *(uint *)(&DAT_00dc5ee8 + (uint)local_7f * 8);
      local_254 = *(uint *)(&DAT_00dc5eec + (uint)local_7f * 8);
      local_a4 = ((((((uVar13 << 0x18 ^ local_158) >> 8 | uVar14 << 0x18) ^ local_1bc) >> 8 |
                   uVar15 << 0x18) ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_55 * 8)) >> 8 |
                 uVar16 << 0x18) ^ uVar6 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_64 * 8);
      local_a0 = uVar16 >> 8 ^
                 ((((((uVar3 >> 0x18 ^ local_164) << 8 | uVar4 >> 0x18) ^ local_114) << 8 |
                   uVar5 >> 0x18) ^ *(uint *)(&DAT_00dc5eec + (uint)local_6b * 8)) << 8 |
                 uVar6 >> 0x18) ^ *(uint *)(&DAT_00dc5eec + (uint)local_64 * 8);
      local_260 = *(uint *)(&DAT_00dc5ee8 + (uint)local_46 * 8);
      local_25c = *(uint *)(&DAT_00dc5eec + (uint)local_46 * 8);
      uVar13 = ((*(uint *)(&DAT_00dc5eec + (uint)local_63 * 8) >> 8 ^ local_104) >> 8 ^ local_23c)
               >> 8 ^ local_248;
      uVar14 = uVar13 >> 8 ^ local_254;
      uVar15 = uVar14 >> 8 ^ local_25c;
      uVar16 = uVar15 >> 8 ^ *(uint *)(&DAT_00dc5eec + (uint)local_4d * 8);
      uVar3 = ((*(uint *)(&DAT_00dc5ee8 + (uint)local_4d * 8) << 8 ^ local_260) << 8 ^ local_258) <<
              8 ^ local_24c;
      uVar4 = uVar3 << 8 ^ local_240;
      uVar5 = uVar4 << 8 ^ local_108;
      uVar6 = uVar5 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_63 * 8);
      local_f4 = *(uint *)(&DAT_00dc5eec + (uint)local_62 * 8);
      local_f8 = *(uint *)(&DAT_00dc5ee8 + (uint)local_62 * 8);
      local_204 = *(uint *)(&DAT_00dc5ee8 + (uint)local_69 * 8);
      local_9c = ((((((uVar13 << 0x18 ^ local_258) >> 8 | uVar14 << 0x18) ^ local_260) >> 8 |
                   uVar15 << 0x18) ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_4d * 8)) >> 8 |
                 uVar16 << 0x18) ^ uVar6 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_5c * 8);
      local_98 = uVar16 >> 8 ^
                 ((((((uVar3 >> 0x18 ^ local_23c) << 8 | uVar4 >> 0x18) ^ local_104) << 8 |
                   uVar5 >> 0x18) ^ *(uint *)(&DAT_00dc5eec + (uint)local_63 * 8)) << 8 |
                 uVar6 >> 0x18) ^ *(uint *)(&DAT_00dc5eec + (uint)local_5c * 8);
      local_200 = *(uint *)(&DAT_00dc5eec + (uint)local_69 * 8);
      local_214 = *(uint *)(&DAT_00dc5ee8 + (uint)local_70 * 8);
      local_210 = *(uint *)(&DAT_00dc5eec + (uint)local_70 * 8);
      local_224 = *(uint *)(&DAT_00dc5ee8 + (uint)local_77 * 8);
      local_220 = *(uint *)(&DAT_00dc5eec + (uint)local_77 * 8);
      uVar13 = ((*(uint *)(&DAT_00dc5eec + (uint)local_5b * 8) >> 8 ^ local_f4) >> 8 ^ local_200) >>
               8 ^ local_210;
      local_234 = *(uint *)(&DAT_00dc5ee8 + (uint)local_7e * 8);
      local_230 = *(uint *)(&DAT_00dc5eec + (uint)local_7e * 8);
      uVar14 = uVar13 >> 8 ^ local_220;
      uVar15 = uVar14 >> 8 ^ local_230;
      uVar16 = uVar15 >> 8 ^ *(uint *)(&DAT_00dc5eec + (uint)local_45 * 8);
      uVar3 = ((*(uint *)(&DAT_00dc5ee8 + (uint)local_45 * 8) << 8 ^ local_234) << 8 ^ local_224) <<
              8 ^ local_214;
      uVar4 = uVar3 << 8 ^ local_204;
      uVar5 = uVar4 << 8 ^ local_f8;
      uVar6 = uVar5 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_5b * 8);
      local_94 = ((((((uVar13 << 0x18 ^ local_224) >> 8 | uVar14 << 0x18) ^ local_234) >> 8 |
                   uVar15 << 0x18) ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_45 * 8)) >> 8 |
                 uVar16 << 0x18) ^ uVar6 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_54 * 8);
      local_90 = uVar16 >> 8 ^
                 ((((((uVar3 >> 0x18 ^ local_200) << 8 | uVar4 >> 0x18) ^ local_f4) << 8 |
                   uVar5 >> 0x18) ^ *(uint *)(&DAT_00dc5eec + (uint)local_5b * 8)) << 8 |
                 uVar6 >> 0x18) ^ *(uint *)(&DAT_00dc5eec + (uint)local_54 * 8);
      local_10c = *(uint *)(&DAT_00dc5eec + (uint)local_5a * 8);
      local_110 = *(uint *)(&DAT_00dc5ee8 + (uint)local_5a * 8);
      local_1c4 = *(uint *)(&DAT_00dc5ee8 + (uint)local_61 * 8);
      local_1c0 = *(uint *)(&DAT_00dc5eec + (uint)local_61 * 8);
      local_1d4 = *(uint *)(&DAT_00dc5ee8 + (uint)local_68 * 8);
      local_1d0 = *(uint *)(&DAT_00dc5eec + (uint)local_68 * 8);
      local_1e4 = *(uint *)(&DAT_00dc5ee8 + (uint)local_6f * 8);
      local_1e0 = *(uint *)(&DAT_00dc5eec + (uint)local_6f * 8);
      uVar13 = ((*(uint *)(&DAT_00dc5eec + (uint)local_53 * 8) >> 8 ^ local_10c) >> 8 ^ local_1c0)
               >> 8 ^ local_1d0;
      local_1f4 = *(uint *)(&DAT_00dc5ee8 + (uint)local_76 * 8);
      local_1f0 = *(uint *)(&DAT_00dc5eec + (uint)local_76 * 8);
      uVar14 = uVar13 >> 8 ^ local_1e0;
      uVar15 = uVar14 >> 8 ^ local_1f0;
      uVar16 = uVar15 >> 8 ^ *(uint *)(&DAT_00dc5eec + (uint)local_7d * 8);
      uVar3 = ((*(uint *)(&DAT_00dc5ee8 + (uint)local_7d * 8) << 8 ^ local_1f4) << 8 ^ local_1e4) <<
              8 ^ local_1d4;
      uVar4 = uVar3 << 8 ^ local_1c4;
      uVar5 = uVar4 << 8 ^ local_110;
      uVar6 = uVar5 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_53 * 8);
      local_8c = ((((((uVar13 << 0x18 ^ local_1e4) >> 8 | uVar14 << 0x18) ^ local_1f4) >> 8 |
                   uVar15 << 0x18) ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_7d * 8)) >> 8 |
                 uVar16 << 0x18) ^ uVar6 << 8 ^ *(uint *)(&DAT_00dc5ee8 + (uint)local_4c * 8);
      local_88 = uVar16 >> 8 ^
                 ((((((uVar3 >> 0x18 ^ local_1c0) << 8 | uVar4 >> 0x18) ^ local_10c) << 8 |
                   uVar5 >> 0x18) ^ *(uint *)(&DAT_00dc5eec + (uint)local_53 * 8)) << 8 |
                 uVar6 >> 0x18) ^ *(uint *)(&DAT_00dc5eec + (uint)local_4c * 8);
      puVar18 = local_c4;
      puVar19 = &local_84;
      for (iVar2 = 0x10; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar19 = *puVar18;
        puVar18 = puVar18 + 1;
        puVar19 = puVar19 + 1;
      }
      uVar3 = 2;
      iVar2 = 0;
      iVar10 = 8;
      do {
        iVar17 = iVar10;
        local_d8 = *(uint *)(&DAT_00dc5ee8 + (uint)abStack_40[(uVar3 - 3 & 7) * 8 + -3] * 8);
        local_d4 = *(uint *)(&DAT_00dc5eec + (uint)abStack_40[(uVar3 - 3 & 7) * 8 + -3] * 8);
        local_178 = *(uint *)(&DAT_00dc5ee8 + (uint)abStack_40[(uVar3 - 4 & 7) * 8 + -2] * 8);
        local_174 = *(uint *)(&DAT_00dc5eec + (uint)abStack_40[(uVar3 - 4 & 7) * 8 + -2] * 8);
        local_188 = *(uint *)(&DAT_00dc5ee8 + (uint)abStack_40[(uVar3 + 3 & 7) * 8 + -1] * 8);
        local_184 = *(uint *)(&DAT_00dc5eec + (uint)abStack_40[(uVar3 + 3 & 7) * 8 + -1] * 8);
        local_198 = *(uint *)(&DAT_00dc5ee8 + (uint)abStack_40[(uVar3 + 2 & 7) * 8] * 8);
        local_194 = *(uint *)(&DAT_00dc5eec + (uint)abStack_40[(uVar3 + 2 & 7) * 8] * 8);
        local_f0 = uVar3 + 1;
        uVar15 = ((local_d4 >> 8 ^ local_174) >> 8 ^ local_184) >> 8 ^ local_194;
        local_1a4 = *(uint *)(&DAT_00dc5ee8 + (uint)abStack_40[(local_f0 & 7) * 8 + 1] * 8);
        local_1a0 = *(uint *)(&DAT_00dc5eec + (uint)abStack_40[(local_f0 & 7) * 8 + 1] * 8);
        uVar16 = uVar15 >> 8 ^ local_1a0;
        local_1b4 = *(uint *)(&DAT_00dc5ee8 + (uint)abStack_40[(uVar3 & 7) * 8 + 2] * 8);
        local_1b0 = *(uint *)(&DAT_00dc5eec + (uint)abStack_40[(uVar3 & 7) * 8 + 2] * 8);
        uVar11 = uVar16 >> 8 ^ local_1b0;
        uVar12 = uVar11 >> 8 ^
                 *(uint *)(&DAT_00dc5eec + (uint)abStack_40[(uVar3 - 1 & 7) * 8 + 3] * 8);
        uVar5 = ((*(uint *)(&DAT_00dc5ee8 + (uint)abStack_40[(uVar3 - 1 & 7) * 8 + 3] * 8) << 8 ^
                 local_1b4) << 8 ^ local_1a4) << 8 ^ local_198;
        uVar6 = uVar5 << 8 ^ local_188;
        uVar13 = uVar6 << 8 ^ local_178;
        uVar14 = uVar13 << 8 ^ local_d8;
        uVar4 = *(uint *)(&DAT_00dc5eec + (uint)abStack_40[iVar2 + -4] * 8);
        *(uint *)((int)local_c4 + iVar2) =
             *(uint *)((int)local_c4 + iVar2) ^
             ((((((uVar15 << 0x18 ^ local_1a4) >> 8 | uVar16 << 0x18) ^ local_1b4) >> 8 |
               uVar11 << 0x18) ^
              *(uint *)(&DAT_00dc5ee8 + (uint)abStack_40[(uVar3 - 1 & 7) * 8 + 3] * 8)) >> 8 |
             uVar12 << 0x18) ^ uVar14 << 8 ^
             *(uint *)(&DAT_00dc5ee8 + (uint)abStack_40[iVar2 + -4] * 8);
        puVar18 = (uint *)((int)local_c4 + iVar2 + 4);
        *puVar18 = *puVar18 ^
                   uVar12 >> 8 ^
                   ((((((uVar5 >> 0x18 ^ local_184) << 8 | uVar6 >> 0x18) ^ local_174) << 8 |
                     uVar13 >> 0x18) ^ local_d4) << 8 | uVar14 >> 0x18) ^ uVar4;
        iVar10 = iVar17 + -1;
        uVar3 = local_f0;
        iVar2 = iVar2 + 8;
      } while (iVar10 != 0);
      local_19c = local_19c + 2;
      puVar18 = local_c4;
      puVar19 = &local_44;
      for (iVar2 = 0x10; iVar2 != 0; iVar2 = iVar2 + -1) {
        *puVar19 = *puVar18;
        puVar18 = puVar18 + 1;
        puVar19 = puVar19 + 1;
      }
    } while ((int)local_19c < 0xdc6738);
    iVar17 = iVar17 + 0xf;
    pbVar7 = param_1;
    pbVar9 = local_238;
    do {
      pbVar8 = pbVar7 + 4;
      *pbVar7 = (pbVar7 + (int)local_dc)[local_244] ^ *pbVar7 ^ pbVar7[(int)local_dc];
      pbVar7[1] = pbVar7[1] ^ pbVar8[(int)(&local_47 + -(int)param_1)] ^ pbVar9[-1];
      local_238 = pbVar9 + 4;
      pbVar7[2] = pbVar8[(int)(&local_46 + -(int)param_1)] ^ pbVar7[2] ^ *pbVar9;
      pbVar7[3] = pbVar7[3] ^ pbVar8[(int)(&local_45 + -(int)param_1)] ^ pbVar9[1];
      iVar17 = iVar17 + -1;
      pbVar7 = pbVar8;
      pbVar9 = local_238;
    } while (iVar17 != 0);
    local_250 = local_250 + 0x40;
    local_244 = local_244 + 0x40;
    param_3 = param_3 + -1;
  } while (param_3 != 0);
  ___security_check_cookie_4();
  return;
}



void FUN_00adf5c0(int *param_1,int *param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  uint uVar17;
  int iVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  uint uVar24;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  uint uVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  
  iVar18 = *param_1;
  uVar19 = param_1[1];
  uVar17 = param_1[2];
  while( true ) {
    iVar1 = *param_2;
    iVar2 = param_2[1];
    iVar3 = param_2[2];
    iVar4 = param_2[3];
    iVar5 = param_2[4];
    iVar6 = param_2[5];
    iVar7 = param_2[6];
    iVar8 = param_2[7];
    iVar9 = param_2[8];
    iVar10 = param_2[9];
    iVar11 = param_2[10];
    iVar12 = param_2[0xb];
    iVar13 = param_2[0xc];
    iVar14 = param_2[0xd];
    iVar15 = param_2[0xe];
    iVar16 = param_2[0xf];
    uVar25 = param_1[3];
    uVar24 = uVar17 << 10 | uVar17 >> 0x16;
    uVar17 = iVar18 + iVar1 + (uVar17 ^ uVar25 ^ uVar19);
    uVar17 = (uVar17 * 0x800 | uVar17 >> 0x15) + param_1[4];
    uVar22 = uVar19 << 10 | uVar19 >> 0x16;
    uVar19 = param_1[4] + (uVar19 ^ uVar24 ^ uVar17) + iVar2;
    uVar20 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar25;
    uVar19 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar17 = uVar25 + iVar3 + (uVar17 ^ uVar22 ^ uVar20);
    uVar17 = (uVar17 * 0x8000 | uVar17 >> 0x11) + uVar24;
    uVar21 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar25 = uVar24 + (uVar20 ^ uVar19 ^ uVar17) + iVar4;
    uVar20 = (uVar25 * 0x1000 | uVar25 >> 0x14) + uVar22;
    uVar25 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar17 = uVar22 + iVar5 + (uVar17 ^ uVar21 ^ uVar20);
    uVar17 = (uVar17 * 0x20 | uVar17 >> 0x1b) + uVar19;
    uVar24 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar19 + (uVar20 ^ uVar25 ^ uVar17) + iVar6;
    uVar19 = (uVar19 * 0x100 | uVar19 >> 0x18) + uVar21;
    uVar22 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar17 = uVar21 + iVar7 + (uVar17 ^ uVar24 ^ uVar19);
    uVar20 = (uVar17 * 0x80 | uVar17 >> 0x19) + uVar25;
    uVar17 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar25 + (uVar19 ^ uVar22 ^ uVar20) + iVar8;
    uVar19 = (uVar19 * 0x200 | uVar19 >> 0x17) + uVar24;
    uVar21 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar25 = uVar24 + iVar9 + (uVar20 ^ uVar17 ^ uVar19);
    uVar24 = (uVar25 * 0x800 | uVar25 >> 0x15) + uVar22;
    uVar25 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar22 + (uVar19 ^ uVar21 ^ uVar24) + iVar10;
    uVar20 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar17;
    uVar26 = uVar24 * 0x400 | uVar24 >> 0x16;
    uVar19 = uVar17 + iVar11 + (uVar24 ^ uVar25 ^ uVar20);
    uVar19 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar21;
    uVar22 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar17 = uVar21 + (uVar20 ^ uVar26 ^ uVar19) + iVar12;
    uVar20 = (uVar17 * 0x8000 | uVar17 >> 0x11) + uVar25;
    uVar17 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar25 + iVar13 + (uVar19 ^ uVar22 ^ uVar20);
    uVar19 = (uVar19 * 0x40 | uVar19 >> 0x1a) + uVar26;
    uVar25 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar20 = uVar26 + (uVar20 ^ uVar17 ^ uVar19) + iVar14;
    uVar24 = (uVar20 * 0x80 | uVar20 >> 0x19) + uVar22;
    uVar20 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar22 + iVar15 + (uVar19 ^ uVar25 ^ uVar24);
    uVar21 = (uVar19 * 0x200 | uVar19 >> 0x17) + uVar17;
    uVar26 = uVar24 * 0x400 | uVar24 >> 0x16;
    uVar19 = uVar17 + (uVar24 ^ uVar20 ^ uVar21) + iVar16;
    uVar17 = (uVar19 * 0x100 | uVar19 >> 0x18) + uVar25;
    uVar24 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar25 + iVar8 + 0x5a827999 + (uVar21 & uVar17 | -uVar17 - 1 & uVar26);
    uVar21 = (uVar19 * 0x80 | uVar19 >> 0x19) + uVar20;
    uVar25 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar20 + iVar5 + 0x5a827999 + (uVar17 & uVar21 | -uVar21 - 1 & uVar24);
    uVar17 = (uVar19 * 0x40 | uVar19 >> 0x1a) + uVar26;
    uVar22 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar26 + iVar14 + 0x5a827999 + (uVar21 & uVar17 | -uVar17 - 1 & uVar25);
    uVar26 = (uVar19 * 0x100 | uVar19 >> 0x18) + uVar24;
    uVar20 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar24 + iVar2 + 0x5a827999 + (uVar17 & uVar26 | -uVar26 - 1 & uVar22);
    uVar21 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar25;
    uVar27 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar19 = uVar25 + iVar11 + 0x5a827999 + (uVar26 & uVar21 | -uVar21 - 1 & uVar20);
    uVar17 = (uVar19 * 0x800 | uVar19 >> 0x15) + uVar22;
    uVar24 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar22 + iVar7 + 0x5a827999 + (uVar21 & uVar17 | -uVar17 - 1 & uVar27);
    uVar21 = (uVar19 * 0x200 | uVar19 >> 0x17) + uVar20;
    uVar25 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar20 + iVar16 + 0x5a827999 + (uVar17 & uVar21 | -uVar21 - 1 & uVar24);
    uVar17 = (uVar19 * 0x80 | uVar19 >> 0x19) + uVar27;
    uVar22 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar27 + iVar4 + 0x5a827999 + (uVar21 & uVar17 | -uVar17 - 1 & uVar25);
    uVar26 = (uVar19 * 0x8000 | uVar19 >> 0x11) + uVar24;
    uVar20 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar24 + iVar13 + 0x5a827999 + (uVar17 & uVar26 | -uVar26 - 1 & uVar22);
    uVar21 = (uVar19 * 0x80 | uVar19 >> 0x19) + uVar25;
    uVar27 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar19 = uVar25 + iVar1 + 0x5a827999 + (uVar26 & uVar21 | -uVar21 - 1 & uVar20);
    uVar17 = (uVar19 * 0x1000 | uVar19 >> 0x14) + uVar22;
    uVar24 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar22 + iVar10 + 0x5a827999 + (uVar21 & uVar17 | -uVar17 - 1 & uVar27);
    uVar21 = (uVar19 * 0x8000 | uVar19 >> 0x11) + uVar20;
    uVar25 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar20 + iVar6 + 0x5a827999 + (uVar17 & uVar21 | -uVar21 - 1 & uVar24);
    uVar17 = (uVar19 * 0x200 | uVar19 >> 0x17) + uVar27;
    uVar22 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar27 + iVar3 + 0x5a827999 + (uVar21 & uVar17 | -uVar17 - 1 & uVar25);
    uVar26 = (uVar19 * 0x800 | uVar19 >> 0x15) + uVar24;
    uVar20 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar24 + iVar15 + 0x5a827999 + (uVar17 & uVar26 | -uVar26 - 1 & uVar22);
    uVar21 = (uVar19 * 0x80 | uVar19 >> 0x19) + uVar25;
    uVar27 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar19 = uVar25 + iVar12 + 0x5a827999 + (uVar26 & uVar21 | -uVar21 - 1 & uVar20);
    uVar17 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar22;
    uVar24 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar22 + iVar9 + 0x5a827999 + (uVar21 & uVar17 | -uVar17 - 1 & uVar27);
    uVar21 = (uVar19 * 0x1000 | uVar19 >> 0x14) + uVar20;
    uVar25 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar20 + iVar4 + 0x6ed9eba1 + ((-uVar17 - 1 | uVar21) ^ uVar24);
    uVar17 = (uVar19 * 0x800 | uVar19 >> 0x15) + uVar27;
    uVar22 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar27 + iVar11 + 0x6ed9eba1 + ((-uVar21 - 1 | uVar17) ^ uVar25);
    uVar26 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar24;
    uVar20 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar24 + iVar15 + 0x6ed9eba1 + ((-uVar17 - 1 | uVar26) ^ uVar22);
    uVar21 = (uVar19 * 0x40 | uVar19 >> 0x1a) + uVar25;
    uVar27 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar19 = uVar25 + iVar5 + 0x6ed9eba1 + ((-uVar26 - 1 | uVar21) ^ uVar20);
    uVar17 = (uVar19 * 0x80 | uVar19 >> 0x19) + uVar22;
    uVar24 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar22 + iVar10 + 0x6ed9eba1 + ((-uVar21 - 1 | uVar17) ^ uVar27);
    uVar21 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar20;
    uVar25 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar20 + iVar16 + 0x6ed9eba1 + ((-uVar17 - 1 | uVar21) ^ uVar24);
    uVar17 = (uVar19 * 0x200 | uVar19 >> 0x17) + uVar27;
    uVar22 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar27 + iVar9 + 0x6ed9eba1 + ((-uVar21 - 1 | uVar17) ^ uVar25);
    uVar26 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar24;
    uVar20 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar24 + iVar2 + 0x6ed9eba1 + ((-uVar17 - 1 | uVar26) ^ uVar22);
    uVar21 = (uVar19 * 0x8000 | uVar19 >> 0x11) + uVar25;
    uVar27 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar19 = uVar25 + iVar3 + 0x6ed9eba1 + ((-uVar26 - 1 | uVar21) ^ uVar20);
    uVar17 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar22;
    uVar24 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar22 + iVar8 + 0x6ed9eba1 + ((-uVar21 - 1 | uVar17) ^ uVar27);
    uVar21 = (uVar19 * 0x100 | uVar19 >> 0x18) + uVar20;
    uVar25 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar20 + iVar1 + 0x6ed9eba1 + ((-uVar17 - 1 | uVar21) ^ uVar24);
    uVar17 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar27;
    uVar22 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar27 + iVar7 + 0x6ed9eba1 + ((-uVar21 - 1 | uVar17) ^ uVar25);
    uVar26 = (uVar19 * 0x40 | uVar19 >> 0x1a) + uVar24;
    uVar20 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar24 + iVar14 + 0x6ed9eba1 + ((-uVar17 - 1 | uVar26) ^ uVar22);
    uVar21 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar25;
    uVar27 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar19 = uVar25 + iVar12 + 0x6ed9eba1 + ((-uVar26 - 1 | uVar21) ^ uVar20);
    uVar17 = (uVar19 * 0x1000 | uVar19 >> 0x14) + uVar22;
    uVar24 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar22 + iVar6 + 0x6ed9eba1 + ((-uVar21 - 1 | uVar17) ^ uVar27);
    uVar21 = (uVar19 * 0x80 | uVar19 >> 0x19) + uVar20;
    uVar25 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar20 + iVar13 + 0x6ed9eba1 + ((-uVar17 - 1 | uVar21) ^ uVar24);
    uVar19 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar27;
    uVar17 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar20 = uVar27 + 0x8f1bbcdc + (-uVar25 - 1 & uVar21 | uVar25 & uVar19) + iVar2;
    uVar22 = (uVar20 * 0x800 | uVar20 >> 0x15) + uVar24;
    uVar20 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar24 + 0x8f1bbcdc + (-uVar17 - 1 & uVar19 | uVar17 & uVar22) + iVar10;
    uVar21 = (uVar19 * 0x1000 | uVar19 >> 0x14) + uVar25;
    uVar24 = uVar22 * 0x400 | uVar22 >> 0x16;
    uVar19 = uVar25 + 0x8f1bbcdc + (-uVar20 - 1 & uVar22 | uVar20 & uVar21) + iVar12;
    uVar19 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar17;
    uVar22 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar17 = uVar17 + 0x8f1bbcdc + (-uVar24 - 1 & uVar21 | uVar24 & uVar19) + iVar11;
    uVar25 = (uVar17 * 0x8000 | uVar17 >> 0x11) + uVar20;
    uVar17 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar20 + 0x8f1bbcdc + (-uVar22 - 1 & uVar19 | uVar22 & uVar25) + iVar1;
    uVar19 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar24;
    uVar20 = uVar25 * 0x400 | uVar25 >> 0x16;
    uVar25 = uVar24 + 0x8f1bbcdc + (-uVar17 - 1 & uVar25 | uVar17 & uVar19) + iVar9;
    uVar24 = (uVar25 * 0x8000 | uVar25 >> 0x11) + uVar22;
    uVar25 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar22 + 0x8f1bbcdc + (-uVar20 - 1 & uVar19 | uVar20 & uVar24) + iVar13;
    uVar21 = (uVar19 * 0x200 | uVar19 >> 0x17) + uVar17;
    uVar26 = uVar24 * 0x400 | uVar24 >> 0x16;
    uVar19 = uVar17 + 0x8f1bbcdc + (-uVar25 - 1 & uVar24 | uVar25 & uVar21) + iVar5;
    uVar19 = (uVar19 * 0x100 | uVar19 >> 0x18) + uVar20;
    uVar22 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar17 = uVar20 + 0x8f1bbcdc + (-uVar26 - 1 & uVar21 | uVar26 & uVar19) + iVar14;
    uVar20 = (uVar17 * 0x200 | uVar17 >> 0x17) + uVar25;
    uVar17 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar25 + 0x8f1bbcdc + (-uVar22 - 1 & uVar19 | uVar22 & uVar20) + iVar4;
    uVar19 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar26;
    uVar21 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar25 = uVar26 + 0x8f1bbcdc + (-uVar17 - 1 & uVar20 | uVar17 & uVar19) + iVar8;
    uVar24 = (uVar25 * 0x20 | uVar25 >> 0x1b) + uVar22;
    uVar25 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar22 + 0x8f1bbcdc + (-uVar21 - 1 & uVar19 | uVar21 & uVar24) + iVar16;
    uVar20 = (uVar19 * 0x40 | uVar19 >> 0x1a) + uVar17;
    uVar26 = uVar24 * 0x400 | uVar24 >> 0x16;
    uVar19 = uVar17 + 0x8f1bbcdc + (-uVar25 - 1 & uVar24 | uVar25 & uVar20) + iVar15;
    uVar19 = (uVar19 * 0x100 | uVar19 >> 0x18) + uVar21;
    uVar22 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar17 = uVar21 + 0x8f1bbcdc + (-uVar26 - 1 & uVar20 | uVar26 & uVar19) + iVar6;
    uVar20 = (uVar17 * 0x40 | uVar17 >> 0x1a) + uVar25;
    uVar17 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar25 + 0x8f1bbcdc + (-uVar22 - 1 & uVar19 | uVar22 & uVar20) + iVar7;
    uVar19 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar26;
    uVar25 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar20 = uVar26 + 0x8f1bbcdc + (-uVar17 - 1 & uVar20 | uVar17 & uVar19) + iVar3;
    uVar24 = (uVar20 * 0x1000 | uVar20 >> 0x14) + uVar22;
    uVar20 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar22 + iVar5 + -0x56ac02b2 + ((-uVar25 - 1 | uVar19) ^ uVar24);
    uVar21 = (uVar19 * 0x200 | uVar19 >> 0x17) + uVar17;
    uVar26 = uVar24 * 0x400 | uVar24 >> 0x16;
    uVar19 = uVar17 + iVar1 + -0x56ac02b2 + ((-uVar20 - 1 | uVar24) ^ uVar21);
    uVar17 = (uVar19 * 0x8000 | uVar19 >> 0x11) + uVar25;
    uVar24 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar25 + iVar6 + -0x56ac02b2 + ((-uVar26 - 1 | uVar21) ^ uVar17);
    uVar21 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar20;
    uVar25 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar20 + iVar10 + -0x56ac02b2 + ((-uVar24 - 1 | uVar17) ^ uVar21);
    uVar17 = (uVar19 * 0x800 | uVar19 >> 0x15) + uVar26;
    uVar22 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar26 + iVar8 + -0x56ac02b2 + ((-uVar25 - 1 | uVar21) ^ uVar17);
    uVar26 = (uVar19 * 0x40 | uVar19 >> 0x1a) + uVar24;
    uVar20 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar24 + iVar13 + -0x56ac02b2 + ((-uVar22 - 1 | uVar17) ^ uVar26);
    uVar21 = (uVar19 * 0x100 | uVar19 >> 0x18) + uVar25;
    uVar27 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar19 = uVar25 + iVar3 + -0x56ac02b2 + ((-uVar20 - 1 | uVar26) ^ uVar21);
    uVar17 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar22;
    uVar24 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar22 + iVar11 + -0x56ac02b2 + ((-uVar27 - 1 | uVar21) ^ uVar17);
    uVar21 = (uVar19 * 0x1000 | uVar19 >> 0x14) + uVar20;
    uVar25 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar20 + iVar15 + -0x56ac02b2 + ((-uVar24 - 1 | uVar17) ^ uVar21);
    uVar17 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar27;
    uVar22 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar27 + iVar2 + -0x56ac02b2 + ((-uVar25 - 1 | uVar21) ^ uVar17);
    uVar26 = (uVar19 * 0x1000 | uVar19 >> 0x14) + uVar24;
    uVar20 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar24 + iVar4 + -0x56ac02b2 + ((-uVar22 - 1 | uVar17) ^ uVar26);
    uVar21 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar25;
    uVar27 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar19 = uVar25 + iVar9 + -0x56ac02b2 + ((-uVar20 - 1 | uVar26) ^ uVar21);
    uVar17 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar22;
    uVar26 = uVar21 * 0x400 | uVar21 >> 0x16;
    uVar19 = uVar22 + iVar12 + -0x56ac02b2 + ((-uVar27 - 1 | uVar21) ^ uVar17);
    uVar25 = (uVar19 * 0x800 | uVar19 >> 0x15) + uVar20;
    uVar21 = uVar17 * 0x400 | uVar17 >> 0x16;
    uVar19 = uVar20 + iVar7 + -0x56ac02b2 + ((-uVar26 - 1 | uVar17) ^ uVar25);
    uVar24 = (uVar19 * 0x100 | uVar19 >> 0x18) + uVar27;
    uVar17 = uVar25 * 0x400 | uVar25 >> 0x16;
    uVar19 = uVar27 + iVar16 + -0x56ac02b2 + ((-uVar21 - 1 | uVar25) ^ uVar24);
    uVar28 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar26;
    uVar25 = uVar26 + iVar14 + -0x56ac02b2 + ((-uVar17 - 1 | uVar24) ^ uVar28);
    uVar20 = param_1[1];
    uVar19 = param_1[2];
    iVar18 = param_1[3];
    uVar29 = uVar19 << 10 | uVar19 >> 0x16;
    uVar19 = *param_1 + iVar6 + 0x50a28be6 + ((-iVar18 - 1U | uVar19) ^ uVar20);
    uVar22 = (uVar19 * 0x100 | uVar19 >> 0x18) + param_1[4];
    uVar23 = uVar20 << 10 | uVar20 >> 0x16;
    uVar19 = param_1[4] + iVar15 + 0x50a28be6 + ((-uVar29 - 1 | uVar20) ^ uVar22);
    uVar26 = (uVar19 * 0x200 | uVar19 >> 0x17) + iVar18;
    uVar20 = uVar22 * 0x400 | uVar22 >> 0x16;
    uVar19 = iVar18 + iVar8 + 0x50a28be6 + ((-uVar23 - 1 | uVar22) ^ uVar26);
    uVar22 = (uVar19 * 0x200 | uVar19 >> 0x17) + uVar29;
    uVar27 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar19 = uVar29 + iVar1 + 0x50a28be6 + ((-uVar20 - 1 | uVar26) ^ uVar22);
    uVar29 = (uVar19 * 0x800 | uVar19 >> 0x15) + uVar23;
    uVar26 = uVar22 * 0x400 | uVar22 >> 0x16;
    uVar19 = uVar23 + iVar10 + 0x50a28be6 + ((-uVar27 - 1 | uVar22) ^ uVar29);
    uVar22 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar20;
    uVar30 = uVar29 * 0x400 | uVar29 >> 0x16;
    uVar19 = uVar20 + iVar3 + 0x50a28be6 + ((-uVar26 - 1 | uVar29) ^ uVar22);
    uVar20 = (uVar19 * 0x8000 | uVar19 >> 0x11) + uVar27;
    uVar29 = uVar22 * 0x400 | uVar22 >> 0x16;
    uVar19 = uVar27 + iVar12 + 0x50a28be6 + ((-uVar30 - 1 | uVar22) ^ uVar20);
    uVar27 = (uVar19 * 0x8000 | uVar19 >> 0x11) + uVar26;
    uVar22 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar26 + iVar5 + 0x50a28be6 + ((-uVar29 - 1 | uVar20) ^ uVar27);
    uVar20 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar30;
    uVar23 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar30 + iVar14 + 0x50a28be6 + ((-uVar22 - 1 | uVar27) ^ uVar20);
    uVar30 = (uVar19 * 0x80 | uVar19 >> 0x19) + uVar29;
    uVar26 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar29 + iVar7 + 0x50a28be6 + ((-uVar23 - 1 | uVar20) ^ uVar30);
    uVar27 = (uVar19 * 0x80 | uVar19 >> 0x19) + uVar22;
    uVar31 = uVar30 * 0x400 | uVar30 >> 0x16;
    uVar19 = uVar22 + iVar16 + 0x50a28be6 + ((-uVar26 - 1 | uVar30) ^ uVar27);
    uVar20 = (uVar19 * 0x100 | uVar19 >> 0x18) + uVar23;
    uVar29 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar23 + iVar9 + 0x50a28be6 + ((-uVar31 - 1 | uVar27) ^ uVar20);
    uVar27 = (uVar19 * 0x800 | uVar19 >> 0x15) + uVar26;
    uVar22 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar26 + iVar2 + 0x50a28be6 + ((-uVar29 - 1 | uVar20) ^ uVar27);
    uVar20 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar31;
    uVar23 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar31 + iVar11 + 0x50a28be6 + ((-uVar22 - 1 | uVar27) ^ uVar20);
    uVar27 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar29;
    uVar26 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar29 + iVar4 + 0x50a28be6 + ((-uVar23 - 1 | uVar20) ^ uVar27);
    uVar20 = (uVar19 * 0x1000 | uVar19 >> 0x14) + uVar22;
    uVar29 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar22 + iVar13 + 0x50a28be6 + ((-uVar26 - 1 | uVar27) ^ uVar20);
    uVar19 = (uVar19 * 0x40 | uVar19 >> 0x1a) + uVar23;
    uVar27 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar20 = uVar23 + 0x5c4dd124 + (-uVar29 - 1 & uVar20 | uVar29 & uVar19) + iVar7;
    uVar22 = (uVar20 * 0x200 | uVar20 >> 0x17) + uVar26;
    uVar20 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar26 + 0x5c4dd124 + (-uVar27 - 1 & uVar19 | uVar27 & uVar22) + iVar12;
    uVar19 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar29;
    uVar26 = uVar22 * 0x400 | uVar22 >> 0x16;
    uVar22 = uVar29 + 0x5c4dd124 + (-uVar20 - 1 & uVar22 | uVar20 & uVar19) + iVar4;
    uVar23 = (uVar22 * 0x8000 | uVar22 >> 0x11) + uVar27;
    uVar22 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar27 + 0x5c4dd124 + (-uVar26 - 1 & uVar19 | uVar26 & uVar23) + iVar8;
    uVar27 = (uVar19 * 0x80 | uVar19 >> 0x19) + uVar20;
    uVar29 = uVar23 * 0x400 | uVar23 >> 0x16;
    uVar19 = uVar20 + 0x5c4dd124 + (-uVar22 - 1 & uVar23 | uVar22 & uVar27) + iVar1;
    uVar19 = (uVar19 * 0x1000 | uVar19 >> 0x14) + uVar26;
    uVar23 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar20 = uVar26 + 0x5c4dd124 + (-uVar29 - 1 & uVar27 | uVar29 & uVar19) + iVar14;
    uVar26 = (uVar20 * 0x100 | uVar20 >> 0x18) + uVar22;
    uVar20 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar22 + 0x5c4dd124 + (-uVar23 - 1 & uVar19 | uVar23 & uVar26) + iVar6;
    uVar19 = (uVar19 * 0x200 | uVar19 >> 0x17) + uVar29;
    uVar27 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar22 = uVar29 + 0x5c4dd124 + (-uVar20 - 1 & uVar26 | uVar20 & uVar19) + iVar11;
    uVar29 = (uVar22 * 0x800 | uVar22 >> 0x15) + uVar23;
    uVar22 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar23 + 0x5c4dd124 + (-uVar27 - 1 & uVar19 | uVar27 & uVar29) + iVar15;
    uVar26 = (uVar19 * 0x80 | uVar19 >> 0x19) + uVar20;
    uVar30 = uVar29 * 0x400 | uVar29 >> 0x16;
    uVar19 = uVar20 + 0x5c4dd124 + (-uVar22 - 1 & uVar29 | uVar22 & uVar26) + iVar16;
    uVar19 = (uVar19 * 0x80 | uVar19 >> 0x19) + uVar27;
    uVar23 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar20 = uVar27 + 0x5c4dd124 + (-uVar30 - 1 & uVar26 | uVar30 & uVar19) + iVar9;
    uVar26 = (uVar20 * 0x1000 | uVar20 >> 0x14) + uVar22;
    uVar20 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar22 + 0x5c4dd124 + (-uVar23 - 1 & uVar19 | uVar23 & uVar26) + iVar13;
    uVar19 = (uVar19 * 0x80 | uVar19 >> 0x19) + uVar30;
    uVar27 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar22 = uVar30 + 0x5c4dd124 + (-uVar20 - 1 & uVar26 | uVar20 & uVar19) + iVar5;
    uVar29 = (uVar22 * 0x40 | uVar22 >> 0x1a) + uVar23;
    uVar22 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar23 + 0x5c4dd124 + (-uVar27 - 1 & uVar19 | uVar27 & uVar29) + iVar10;
    uVar26 = (uVar19 * 0x8000 | uVar19 >> 0x11) + uVar20;
    uVar30 = uVar29 * 0x400 | uVar29 >> 0x16;
    uVar19 = uVar20 + 0x5c4dd124 + (-uVar22 - 1 & uVar29 | uVar22 & uVar26) + iVar2;
    uVar19 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar27;
    uVar23 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar20 = uVar27 + 0x5c4dd124 + (-uVar30 - 1 & uVar26 | uVar30 & uVar19) + iVar3;
    uVar26 = (uVar20 * 0x800 | uVar20 >> 0x15) + uVar22;
    uVar20 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar22 + iVar16 + 0x6d703ef3 + ((-uVar19 - 1 | uVar26) ^ uVar23);
    uVar22 = (uVar19 * 0x200 | uVar19 >> 0x17) + uVar30;
    uVar27 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar19 = uVar30 + iVar6 + 0x6d703ef3 + ((-uVar26 - 1 | uVar22) ^ uVar20);
    uVar29 = (uVar19 * 0x80 | uVar19 >> 0x19) + uVar23;
    uVar26 = uVar22 * 0x400 | uVar22 >> 0x16;
    uVar19 = uVar23 + iVar2 + 0x6d703ef3 + ((-uVar22 - 1 | uVar29) ^ uVar27);
    uVar22 = (uVar19 * 0x8000 | uVar19 >> 0x11) + uVar20;
    uVar30 = uVar29 * 0x400 | uVar29 >> 0x16;
    uVar19 = uVar20 + iVar4 + 0x6d703ef3 + ((-uVar29 - 1 | uVar22) ^ uVar26);
    uVar20 = (uVar19 * 0x800 | uVar19 >> 0x15) + uVar27;
    uVar29 = uVar22 * 0x400 | uVar22 >> 0x16;
    uVar19 = uVar27 + iVar8 + 0x6d703ef3 + ((-uVar22 - 1 | uVar20) ^ uVar30);
    uVar27 = (uVar19 * 0x100 | uVar19 >> 0x18) + uVar26;
    uVar22 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar26 + iVar15 + 0x6d703ef3 + ((-uVar20 - 1 | uVar27) ^ uVar29);
    uVar20 = (uVar19 * 0x40 | uVar19 >> 0x1a) + uVar30;
    uVar23 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar30 + iVar7 + 0x6d703ef3 + ((-uVar27 - 1 | uVar20) ^ uVar22);
    uVar30 = (uVar19 * 0x40 | uVar19 >> 0x1a) + uVar29;
    uVar26 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar29 + iVar10 + 0x6d703ef3 + ((-uVar20 - 1 | uVar30) ^ uVar23);
    uVar27 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar22;
    uVar31 = uVar30 * 0x400 | uVar30 >> 0x16;
    uVar19 = uVar22 + iVar12 + 0x6d703ef3 + ((-uVar30 - 1 | uVar27) ^ uVar26);
    uVar20 = (uVar19 * 0x1000 | uVar19 >> 0x14) + uVar23;
    uVar29 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar23 + iVar9 + 0x6d703ef3 + ((-uVar27 - 1 | uVar20) ^ uVar31);
    uVar27 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar26;
    uVar22 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar26 + iVar13 + 0x6d703ef3 + ((-uVar20 - 1 | uVar27) ^ uVar29);
    uVar20 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar31;
    uVar23 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar31 + iVar3 + 0x6d703ef3 + ((-uVar27 - 1 | uVar20) ^ uVar22);
    uVar30 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar29;
    uVar26 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar29 + iVar11 + 0x6d703ef3 + ((-uVar20 - 1 | uVar30) ^ uVar23);
    uVar27 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar22;
    uVar31 = uVar30 * 0x400 | uVar30 >> 0x16;
    uVar19 = uVar22 + iVar1 + 0x6d703ef3 + ((-uVar30 - 1 | uVar27) ^ uVar26);
    uVar20 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar23;
    uVar29 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar23 + iVar5 + 0x6d703ef3 + ((-uVar27 - 1 | uVar20) ^ uVar31);
    uVar27 = (uVar19 * 0x80 | uVar19 >> 0x19) + uVar26;
    uVar22 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar26 + iVar14 + 0x6d703ef3 + ((-uVar20 - 1 | uVar27) ^ uVar29);
    uVar20 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar31;
    uVar23 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar31 + iVar9 + 0x7a6d76e9 + (uVar27 & uVar20 | -uVar20 - 1 & uVar22);
    uVar30 = (uVar19 * 0x8000 | uVar19 >> 0x11) + uVar29;
    uVar26 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar29 + iVar7 + 0x7a6d76e9 + (uVar20 & uVar30 | -uVar30 - 1 & uVar23);
    uVar27 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar22;
    uVar31 = uVar30 * 0x400 | uVar30 >> 0x16;
    uVar19 = uVar22 + iVar5 + 0x7a6d76e9 + (uVar30 & uVar27 | -uVar27 - 1 & uVar26);
    uVar20 = (uVar19 * 0x100 | uVar19 >> 0x18) + uVar23;
    uVar29 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar23 + iVar2 + 0x7a6d76e9 + (uVar27 & uVar20 | -uVar20 - 1 & uVar31);
    uVar27 = (uVar19 * 0x800 | uVar19 >> 0x15) + uVar26;
    uVar22 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar26 + iVar4 + 0x7a6d76e9 + (uVar20 & uVar27 | -uVar27 - 1 & uVar29);
    uVar20 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar31;
    uVar23 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar31 + iVar12 + 0x7a6d76e9 + (uVar27 & uVar20 | -uVar20 - 1 & uVar22);
    uVar30 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar29;
    uVar26 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar29 + iVar16 + 0x7a6d76e9 + (uVar20 & uVar30 | -uVar30 - 1 & uVar23);
    uVar27 = (uVar19 * 0x40 | uVar19 >> 0x1a) + uVar22;
    uVar31 = uVar30 * 0x400 | uVar30 >> 0x16;
    uVar19 = uVar22 + iVar1 + 0x7a6d76e9 + (uVar30 & uVar27 | -uVar27 - 1 & uVar26);
    uVar20 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar23;
    uVar29 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar23 + iVar6 + 0x7a6d76e9 + (uVar27 & uVar20 | -uVar20 - 1 & uVar31);
    uVar27 = (uVar19 * 0x40 | uVar19 >> 0x1a) + uVar26;
    uVar22 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar26 + iVar13 + 0x7a6d76e9 + (uVar20 & uVar27 | -uVar27 - 1 & uVar29);
    uVar20 = (uVar19 * 0x200 | uVar19 >> 0x17) + uVar31;
    uVar23 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar31 + iVar3 + 0x7a6d76e9 + (uVar27 & uVar20 | -uVar20 - 1 & uVar22);
    uVar30 = (uVar19 * 0x1000 | uVar19 >> 0x14) + uVar29;
    uVar26 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar29 + iVar14 + 0x7a6d76e9 + (uVar20 & uVar30 | -uVar30 - 1 & uVar23);
    uVar27 = (uVar19 * 0x200 | uVar19 >> 0x17) + uVar22;
    uVar31 = uVar30 * 0x400 | uVar30 >> 0x16;
    uVar19 = uVar22 + iVar10 + 0x7a6d76e9 + (uVar30 & uVar27 | -uVar27 - 1 & uVar26);
    uVar20 = (uVar19 * 0x1000 | uVar19 >> 0x14) + uVar23;
    uVar29 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar23 + iVar8 + 0x7a6d76e9 + (uVar27 & uVar20 | -uVar20 - 1 & uVar31);
    uVar27 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar26;
    uVar22 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar26 + iVar11 + 0x7a6d76e9 + (uVar20 & uVar27 | -uVar27 - 1 & uVar29);
    uVar20 = (uVar19 * 0x8000 | uVar19 >> 0x11) + uVar31;
    uVar23 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar31 + iVar15 + 0x7a6d76e9 + (-uVar20 - 1 & uVar22 | uVar27 & uVar20);
    uVar27 = (uVar19 * 0x100 | uVar19 >> 0x18) + uVar29;
    uVar26 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar19 = uVar29 + iVar13 + (uVar20 ^ uVar23 ^ uVar27);
    uVar20 = (uVar19 * 0x100 | uVar19 >> 0x18) + uVar22;
    uVar29 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar19 = uVar22 + (uVar27 ^ uVar26 ^ uVar20) + iVar16;
    uVar19 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar23;
    uVar27 = uVar20 * 0x400 | uVar20 >> 0x16;
    uVar20 = uVar23 + iVar11 + (uVar20 ^ uVar29 ^ uVar19);
    uVar22 = (uVar20 * 0x1000 | uVar20 >> 0x14) + uVar26;
    uVar20 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar26 + (uVar19 ^ uVar27 ^ uVar22) + iVar5;
    uVar19 = (uVar19 * 0x200 | uVar19 >> 0x17) + uVar29;
    uVar26 = uVar22 * 0x400 | uVar22 >> 0x16;
    uVar22 = uVar29 + iVar2 + (uVar22 ^ uVar20 ^ uVar19);
    uVar23 = (uVar22 * 0x1000 | uVar22 >> 0x14) + uVar27;
    uVar22 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar27 + (uVar19 ^ uVar26 ^ uVar23) + iVar6;
    uVar27 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar20;
    uVar29 = uVar23 * 0x400 | uVar23 >> 0x16;
    uVar19 = uVar20 + iVar9 + (uVar23 ^ uVar22 ^ uVar27);
    uVar19 = (uVar19 * 0x4000 | uVar19 >> 0x12) + uVar26;
    uVar23 = uVar27 * 0x400 | uVar27 >> 0x16;
    uVar20 = uVar26 + (uVar27 ^ uVar29 ^ uVar19) + iVar8;
    uVar26 = (uVar20 * 0x40 | uVar20 >> 0x1a) + uVar22;
    uVar20 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar22 + iVar7 + (uVar19 ^ uVar23 ^ uVar26);
    uVar19 = (uVar19 * 0x100 | uVar19 >> 0x18) + uVar29;
    uVar27 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar22 = uVar29 + (uVar26 ^ uVar20 ^ uVar19) + iVar3;
    uVar29 = (uVar22 * 0x2000 | uVar22 >> 0x13) + uVar23;
    uVar22 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar23 + iVar14 + (uVar19 ^ uVar27 ^ uVar29);
    uVar26 = (uVar19 * 0x40 | uVar19 >> 0x1a) + uVar20;
    uVar30 = uVar29 * 0x400 | uVar29 >> 0x16;
    uVar19 = uVar20 + (uVar29 ^ uVar22 ^ uVar26) + iVar15;
    uVar19 = (uVar19 * 0x20 | uVar19 >> 0x1b) + uVar27;
    uVar23 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar20 = uVar27 + iVar1 + (uVar26 ^ uVar30 ^ uVar19);
    uVar26 = (uVar20 * 0x8000 | uVar20 >> 0x11) + uVar22;
    uVar20 = uVar19 * 0x400 | uVar19 >> 0x16;
    uVar19 = uVar22 + (uVar19 ^ uVar23 ^ uVar26) + iVar4;
    uVar19 = (uVar19 * 0x2000 | uVar19 >> 0x13) + uVar30;
    uVar22 = uVar26 * 0x400 | uVar26 >> 0x16;
    uVar26 = uVar30 + iVar10 + (uVar26 ^ uVar20 ^ uVar19);
    uVar27 = (uVar26 * 0x800 | uVar26 >> 0x15) + uVar23;
    uVar26 = uVar23 + (uVar19 ^ uVar22 ^ uVar27) + iVar12;
    iVar18 = (uVar19 * 0x400 | uVar19 >> 0x16) + param_1[1] + uVar28;
    uVar19 = uVar22 + param_1[2] + (uVar24 * 0x400 | uVar24 >> 0x16);
    uVar17 = uVar20 + param_1[3] + uVar17;
    iVar1 = *param_1;
    *param_1 = iVar18;
    param_1[1] = uVar19;
    param_1[2] = uVar17;
    param_1[3] = (uVar26 * 0x800 | uVar26 >> 0x15) + uVar20 + param_1[4] + uVar21;
    param_1[4] = uVar27 + iVar1 + (uVar25 * 0x40 | uVar25 >> 0x1a) + uVar21;
    if (param_3 + -1 == 0 || param_3 < 1) break;
    param_2 = param_2 + 0x10;
    param_3 = param_3 + -1;
  }
  return;
}



void FUN_00ae0ab0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00dc676c);
  return;
}



void FUN_00ae0ad0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00dc676c);
  return;
}



void FUN_00ae0af0(void)

{
  FUN_00a8bf10(&DAT_00dc676c);
  return;
}



void FUN_00ae0b00(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00dc676c);
  return;
}



int FUN_00ae0cd5(undefined4 param_1,undefined4 param_2,char *param_3)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  uint unaff_EDI;
  
  uVar4 = unaff_EDI;
  if ((int)unaff_EDI < 0) {
    uVar4 = -unaff_EDI - 1;
  }
  uVar2 = FUN_00a9a8d0(uVar4);
  uVar3 = (uint)((uVar2 & 7) == 0);
  iVar5 = (int)(uVar2 + 7) >> 3;
  if (param_3 != (char *)0x0) {
    iVar1 = iVar5;
    if (uVar3 != 0) {
      *param_3 = (-1 < (int)unaff_EDI) + -1;
      param_3 = param_3 + 1;
    }
    while (iVar1 = iVar1 + -1, -1 < iVar1) {
      param_3[iVar1] = (byte)uVar4;
      if ((int)unaff_EDI < 0) {
        param_3[iVar1] = ~(byte)uVar4;
      }
      uVar4 = uVar4 >> 8;
    }
  }
  return uVar3 + iVar5;
}



undefined4
FUN_00ae0d40(uint *param_1,byte *param_2,int param_3,undefined4 param_4,undefined4 param_5,
            int param_6)

{
  bool bVar1;
  int iVar2;
  uint uVar3;
  byte bVar4;
  undefined4 uVar5;
  
  if (param_3 < 5) {
    if ((param_3 == 0) || ((*param_2 & 0x80) == 0)) {
      bVar1 = false;
    }
    else {
      bVar1 = true;
    }
    uVar3 = 0;
    iVar2 = 0;
    if (0 < param_3) {
      do {
        if (bVar1) {
          bVar4 = ~param_2[iVar2];
        }
        else {
          bVar4 = param_2[iVar2];
        }
        iVar2 = iVar2 + 1;
        uVar3 = uVar3 << 8 | (uint)bVar4;
      } while (iVar2 < param_3);
    }
    if (bVar1) {
      uVar3 = -uVar3 - 1;
    }
    if (uVar3 != *(uint *)(param_6 + 0x14)) {
      *param_1 = uVar3;
      return 1;
    }
    uVar5 = 0xa8;
  }
  else {
    uVar5 = 0x96;
  }
  FUN_00a7f3c0(0xd,0xa6,0x80,".\\crypto\\asn1\\x_long.c",uVar5);
  return 0;
}



void FUN_00ae0e00(void)

{
  int param_4;
  
                    // WARNING: Could not recover jumptable at 0x00ae0e0e. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_4 + 0x3c) + 0xc))();
  return;
}



void FUN_00ae2380(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  int iVar1;
  
  iVar1 = FUN_00af0470(param_4);
  if (iVar1 == 0) {
    return;
  }
  (**(code **)(*(int *)(iVar1 + 0xc) + 4))(param_1,param_2,param_3,param_4,param_5);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ae23c0(int param_1,uint param_2,uint param_3,int param_4,void *param_5,uint param_6,
                 void *param_7,int *param_8,int *param_9,undefined4 param_10)

{
  char *pcVar1;
  uint uVar2;
  int **ppiVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  int iVar8;
  int iVar9;
  undefined4 uVar10;
  bool bVar11;
  undefined4 local_d0;
  undefined4 local_cc;
  undefined4 local_c8;
  undefined4 local_c4;
  int local_c0;
  int local_bc;
  int local_b8;
  undefined4 local_b4;
  int local_b0;
  undefined4 local_ac;
  undefined4 local_a8;
  int local_a4;
  int **local_a0;
  int *local_9c;
  void *local_98;
  undefined4 local_94;
  int *local_90;
  undefined4 local_8c;
  undefined4 local_88;
  byte local_84 [31];
  char acStack_65 [33];
  undefined local_44 [32];
  byte local_24 [32];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_d0;
  local_88 = param_1;
  local_98 = param_7;
  local_9c = param_8;
  param_3 = param_3 >> 3;
  local_c0 = param_4;
  local_90 = param_9;
  local_cc = param_10;
  local_ac = 0;
  local_a4 = 0;
  local_b0 = 2;
  if (((param_3 != 0x14) && (param_3 != 0x1c)) && (param_3 != 0x20)) {
    ___security_check_cookie_4();
    return;
  }
  if (param_4 == 0) {
    local_c0 = FUN_00a924c0();
  }
  if (param_2 < 0x200) {
    param_2 = 0x200;
  }
  uVar4 = param_2 + 0x3f & 0xffffffc0;
  if ((param_6 != 0) && (param_6 < param_3)) {
    param_5 = (void *)0x0;
  }
  if (param_3 < param_6) {
    param_6 = param_3;
  }
  if (param_5 != (void *)0x0) {
    _memcpy(local_44,param_5,param_6);
  }
  iVar5 = FUN_00aa49c0();
  if (iVar5 != 0) {
    local_b8 = FUN_00ad0520();
    if (local_b8 != 0) {
      FUN_00aa4a50(iVar5);
      local_d0 = FUN_00aa4ae0(iVar5);
      local_a0 = (int **)FUN_00aa4ae0(iVar5);
      local_b4 = FUN_00aa4ae0(iVar5);
      local_c4 = FUN_00aa4ae0(iVar5);
      local_8c = FUN_00aa4ae0(iVar5);
      local_a8 = FUN_00aa4ae0(iVar5);
      local_94 = FUN_00aa4ae0(iVar5);
      uVar6 = FUN_00aa4ae0(iVar5);
      local_c8 = uVar6;
      uVar7 = FUN_00a9a8c0(uVar4 - 1);
      iVar8 = FUN_00a9bb30(uVar6,uVar7);
      if (iVar8 != 0) {
LAB_00ae2570:
        do {
          iVar8 = local_a4;
          iVar9 = FUN_00ae82e0(local_cc,0,local_a4);
          local_a4 = iVar8 + 1;
          if (iVar9 == 0) break;
          bVar11 = param_6 != 0;
          if (bVar11) {
            param_6 = 0;
          }
          else {
            FUN_00a86ec0(local_44,param_3);
          }
          _memcpy(acStack_65 + 1,local_44,param_3);
          _memcpy(local_24,local_44,param_3);
          uVar2 = param_3;
          do {
            if ((int)(uVar2 - 1) < 0) break;
            pcVar1 = acStack_65 + uVar2;
            *pcVar1 = *pcVar1 + '\x01';
            uVar2 = uVar2 - 1;
          } while (*pcVar1 == '\0');
          iVar8 = FUN_00a91830(local_44,param_3,local_84,0,local_c0,0);
          if ((iVar8 == 0) ||
             (iVar8 = FUN_00a91830(acStack_65 + 1,param_3,local_24,0,local_c0,0), iVar8 == 0))
          break;
          iVar8 = 0;
          if (param_3 != 0) {
            do {
              local_84[iVar8] = local_84[iVar8] ^ local_24[iVar8];
              iVar8 = iVar8 + 1;
            } while (iVar8 < (int)param_3);
          }
          local_84[0] = local_84[0] | 0x80;
          local_84[param_3 - 1] = local_84[param_3 - 1] | 1;
          iVar8 = FUN_00a9acb0(local_84,param_3,local_c4);
          uVar6 = local_cc;
          if (iVar8 == 0) break;
          iVar8 = FUN_00ae8740(local_c4,0x32,iVar5,!bVar11,local_cc);
          if (0 < iVar8) {
            iVar8 = FUN_00ae82e0(uVar6,2,0);
            if ((iVar8 == 0) || (iVar8 = FUN_00ae82e0(uVar6,3,0), iVar8 == 0)) break;
            local_bc = 0;
            do {
              if ((local_bc != 0) && (iVar8 = FUN_00ae82e0(local_cc,0,local_bc), iVar8 == 0))
              goto LAB_00ae2aa3;
              FUN_00a9ac50(local_b4,0);
              iVar8 = 0;
              uVar2 = param_3;
joined_r0x00ae2745:
              do {
                if (-1 < (int)(uVar2 - 1)) {
                  pcVar1 = acStack_65 + uVar2;
                  *pcVar1 = *pcVar1 + '\x01';
                  uVar2 = uVar2 - 1;
                  if (*pcVar1 == '\0') goto joined_r0x00ae2745;
                }
                iVar9 = FUN_00a91830(acStack_65 + 1,param_3,local_84,0,local_c0,0);
                if ((((iVar9 == 0) || (iVar9 = FUN_00a9acb0(local_84,param_3,local_d0), iVar9 == 0))
                    || (iVar9 = FUN_00a9bb30(local_d0,local_d0,param_3 * 8 * iVar8), iVar9 == 0)) ||
                   (iVar9 = FUN_00ad17f0(local_b4,local_b4,local_d0), uVar6 = local_b4, iVar9 == 0))
                goto LAB_00ae2aa3;
                iVar8 = iVar8 + 1;
                uVar2 = param_3;
              } while (iVar8 <= (int)((uVar4 - 1) / 0xa0));
              iVar8 = FUN_00a9afd0(local_b4,uVar4 - 1);
              uVar7 = local_8c;
              if (((iVar8 == 0) || (iVar8 = FUN_00a9aba0(local_8c,uVar6), iVar8 == 0)) ||
                 ((iVar8 = FUN_00ad17f0(uVar7,uVar7,local_c8), iVar8 == 0 ||
                  ((iVar8 = FUN_00a9b9e0(local_d0,local_c4), iVar8 == 0 ||
                   (iVar8 = FUN_00ad26e0(0,local_a8,uVar7,local_d0,iVar5), iVar8 == 0))))))
              goto LAB_00ae2aa3;
              uVar6 = FUN_00a9a8c0();
              iVar8 = FUN_00ad1720(local_d0,local_a8,uVar6);
              uVar6 = local_94;
              if ((iVar8 == 0) || (iVar8 = FUN_00ad1720(local_94,uVar7,local_d0), iVar8 == 0))
              goto LAB_00ae2aa3;
              iVar8 = FUN_00a9ae60(uVar6,local_c8);
              if (-1 < iVar8) {
                iVar8 = FUN_00ae8740(uVar6,0x32,iVar5,1,local_cc);
                if (0 < iVar8) {
                  iVar8 = FUN_00ae82e0(local_cc,2,1);
                  if (iVar8 == 0) goto LAB_00ae2aa3;
                  uVar10 = FUN_00a9a8c0();
                  uVar7 = local_c8;
                  iVar8 = FUN_00ad1720(local_c8,uVar6,uVar10);
                  if ((((iVar8 == 0) ||
                       (iVar8 = FUN_00ad26e0(local_d0,0,uVar7,local_c4,iVar5), iVar8 == 0)) ||
                      (iVar8 = FUN_00a9ac50(uVar7,2), iVar8 == 0)) ||
                     (iVar8 = FUN_00ad0180(local_b8,uVar6,iVar5), ppiVar3 = local_a0, iVar8 == 0))
                  goto LAB_00ae2aa3;
                  iVar8 = FUN_00acfa20(local_a0,uVar7,local_d0,uVar6,iVar5,local_b8);
                  goto joined_r0x00ae297b;
                }
                if (iVar8 != 0) goto LAB_00ae2aa3;
              }
              local_bc = local_bc + 1;
            } while (local_bc < 0x1000);
            goto LAB_00ae2570;
          }
        } while (iVar8 == 0);
      }
    }
LAB_00ae2aa3:
    FUN_00aa4aa0(iVar5);
    FUN_00aa4a20(iVar5);
    if (local_b8 != 0) {
      FUN_00ad0140(local_b8);
    }
  }
  ___security_check_cookie_4();
  return;
joined_r0x00ae297b:
  if (iVar8 == 0) goto LAB_00ae2aa3;
  if (((ppiVar3[1] != (int *)0x1) || (**ppiVar3 != 1)) || (ppiVar3[3] != (int *)0x0)) {
    iVar9 = FUN_00ae82e0(local_cc,3,1);
    iVar8 = local_88;
    if (iVar9 != 0) {
      local_ac = 1;
      if (*(int *)(local_88 + 0xc) != 0) {
        FUN_00a9a9b0(*(int *)(local_88 + 0xc));
      }
      if (*(int *)(iVar8 + 0x10) != 0) {
        FUN_00a9a9b0(*(int *)(iVar8 + 0x10));
      }
      if (*(int *)(iVar8 + 0x14) != 0) {
        FUN_00a9a9b0(*(int *)(iVar8 + 0x14));
      }
      uVar6 = FUN_00a9b160(uVar6);
      *(undefined4 *)(iVar8 + 0xc) = uVar6;
      uVar6 = FUN_00a9b160(local_c4);
      *(undefined4 *)(iVar8 + 0x10) = uVar6;
      iVar9 = FUN_00a9b160(local_a0);
      *(int *)(iVar8 + 0x14) = iVar9;
      if (((*(int *)(iVar8 + 0xc) == 0) || (*(int *)(iVar8 + 0x10) == 0)) || (iVar9 == 0)) {
        local_ac = 0;
      }
      else {
        if (local_9c != (int *)0x0) {
          *local_9c = local_bc;
        }
        if (local_90 != (int *)0x0) {
          *local_90 = local_b0;
        }
        if (local_98 != (void *)0x0) {
          _memcpy(local_98,local_44,param_3);
        }
      }
    }
    goto LAB_00ae2aa3;
  }
  uVar7 = FUN_00a9a8c0();
  iVar8 = FUN_00ad17f0(local_c8,local_c8,uVar7);
  if (iVar8 == 0) goto LAB_00ae2aa3;
  local_b0 = local_b0 + 1;
  iVar8 = FUN_00acfa20(ppiVar3,local_c8,local_d0,uVar6,iVar5,local_b8);
  goto joined_r0x00ae297b;
}



int FUN_00ae2ae0(int *param_1)

{
  int iVar1;
  
  if (((param_1 == (int *)0x0) || (iVar1 = *param_1, iVar1 == 0)) || (*(int *)(iVar1 + 0x20) == 0))
  {
    FUN_00a7f3c0(6,0x93,0x96,".\\crypto\\evp\\pmeth_gn.c",0x7a);
    iVar1 = -2;
  }
  else {
    param_1[4] = 4;
    if (*(code **)(iVar1 + 0x1c) == (code *)0x0) {
      return 1;
    }
    iVar1 = (**(code **)(iVar1 + 0x1c))(param_1);
    if (iVar1 < 1) {
      param_1[4] = 0;
      return iVar1;
    }
  }
  return iVar1;
}



int FUN_00ae2b40(int *param_1,int *param_2)

{
  int iVar1;
  
  if (((param_1 == (int *)0x0) || (*param_1 == 0)) || (*(int *)(*param_1 + 0x20) == 0)) {
    FUN_00a7f3c0(6,0x92,0x96,".\\crypto\\evp\\pmeth_gn.c",0x8d);
    return -2;
  }
  if (param_1[4] != 4) {
    FUN_00a7f3c0(6,0x92,0x97,".\\crypto\\evp\\pmeth_gn.c",0x92);
    return -1;
  }
  if (param_2 == (int *)0x0) {
    return -1;
  }
  if (*param_2 == 0) {
    iVar1 = FUN_00a81420();
    *param_2 = iVar1;
  }
  iVar1 = (**(code **)(*param_1 + 0x20))(param_1,*param_2);
  if (iVar1 < 1) {
    FUN_00a816d0(*param_2);
    *param_2 = 0;
  }
  return iVar1;
}



void FUN_00ae2c20(undefined4 *param_1,undefined4 param_2)

{
  *param_1 = 2;
  param_1[1] = param_2;
  param_1[2] = &LAB_00ae2bf0;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ae2c40(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  undefined4 local_4;
  
  local_4 = 0;
  iVar1 = FUN_00a98c30(param_1,param_2);
  if (iVar1 == 0) {
    return 0;
  }
  iVar2 = FUN_00ae2ae0(iVar1);
  if (0 < iVar2) {
    iVar2 = FUN_00a988b0(iVar1,0xffffffff,4,6,param_4,param_3);
    if (0 < iVar2) {
      FUN_00ae2b40(iVar1,&local_4);
    }
  }
  FUN_00a98850(iVar1);
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

bool FUN_00ae2cc0(void)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  undefined4 *puVar4;
  int iVar5;
  int unaff_EDI;
  bool bVar6;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  uint local_4;
  
  local_4 = 0xae2cca;
  bVar6 = false;
  iVar1 = FUN_00aa49c0();
  if (iVar1 == 0) {
    return false;
  }
  puVar2 = *(undefined4 **)(unaff_EDI + 0x1c);
  if ((puVar2 != (undefined4 *)0x0) ||
     (puVar2 = (undefined4 *)FUN_00a9aa10(), puVar2 != (undefined4 *)0x0)) {
    do {
      iVar3 = FUN_00aa4eb0(puVar2,*(undefined4 *)(unaff_EDI + 0x10));
      if (iVar3 == 0) goto LAB_00ae2dae;
    } while (puVar2[1] == 0);
    iVar3 = *(int *)(unaff_EDI + 0x18);
    if ((iVar3 != 0) || (iVar3 = FUN_00a9aa10(), iVar3 != 0)) {
      puVar4 = puVar2;
      if ((*(byte *)(unaff_EDI + 0x28) & 2) == 0) {
        FUN_00a9a9f0(&local_14);
        local_14 = *puVar2;
        local_10 = puVar2[1];
        local_c = puVar2[2];
        local_8 = puVar2[3];
        local_4 = puVar2[4] & 0xfffffffe | local_4 & 1 | 6;
        puVar4 = &local_14;
      }
      iVar5 = FUN_00acfe20(iVar3,*(undefined4 *)(unaff_EDI + 0x14),puVar4,
                           *(undefined4 *)(unaff_EDI + 0xc),iVar1);
      bVar6 = iVar5 != 0;
      if (bVar6) {
        *(undefined4 **)(unaff_EDI + 0x1c) = puVar2;
        *(int *)(unaff_EDI + 0x18) = iVar3;
      }
      if ((iVar3 != 0) && (*(int *)(unaff_EDI + 0x18) == 0)) {
        FUN_00a9a9b0(iVar3);
      }
    }
LAB_00ae2dae:
    if ((puVar2 != (undefined4 *)0x0) && (*(int *)(unaff_EDI + 0x1c) == 0)) {
      FUN_00a9a9b0(puVar2);
    }
  }
  FUN_00aa4a20(iVar1);
  return bVar6;
}



undefined4 FUN_00ae2e00(int param_1,undefined4 param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  
  iVar1 = FUN_00aa49c0();
  if (iVar1 != 0) {
    FUN_00aa4a50(iVar1);
    iVar2 = FUN_00aa4ae0(iVar1);
    iVar3 = FUN_00aa4ae0(iVar1);
    if ((iVar2 != 0) && (iVar3 != 0)) {
      if (*(int *)(param_1 + 8) == 0) {
        iVar4 = FUN_00a9aa10();
        *(int *)(param_1 + 8) = iVar4;
        if (iVar4 == 0) goto LAB_00ae2e79;
      }
      if (*(int *)(param_1 + 0xc) == 0) {
        iVar4 = FUN_00a9aa10();
        *(int *)(param_1 + 0xc) = iVar4;
        if (iVar4 == 0) goto LAB_00ae2e79;
      }
      if (param_3 < 2) {
        FUN_00a7f3c0(5,0x6a,0x65,".\\crypto\\dh\\dh_gen.c",0x8b);
      }
      else if (param_3 == 2) {
        iVar4 = FUN_00a9ac50(iVar2,0x18);
        if (iVar4 != 0) {
          iVar4 = FUN_00a9ac50(iVar3,0xb);
          goto joined_r0x00ae2f17;
        }
      }
      else if (param_3 == 5) {
        iVar4 = FUN_00a9ac50(iVar2,10);
        if (iVar4 != 0) {
          iVar4 = FUN_00a9ac50(iVar3,3);
joined_r0x00ae2f17:
          if ((((iVar4 != 0) &&
               (iVar2 = FUN_00ae8b20(*(undefined4 *)(param_1 + 8),param_2,1,iVar2,iVar3,param_4),
               iVar2 != 0)) && (iVar2 = FUN_00ae82e0(param_4,3,0), iVar2 != 0)) &&
             (iVar2 = FUN_00a9ac50(*(undefined4 *)(param_1 + 0xc),param_3), iVar2 != 0)) {
            uVar5 = 1;
            goto LAB_00ae2e93;
          }
        }
      }
      else {
        iVar4 = FUN_00a9ac50(iVar2,2);
        if (iVar4 != 0) {
          iVar4 = FUN_00a9ac50(iVar3,1);
          goto joined_r0x00ae2f17;
        }
      }
    }
  }
LAB_00ae2e79:
  FUN_00a7f3c0(5,0x6a,3,".\\crypto\\dh\\dh_gen.c",0xb6);
  uVar5 = 0;
LAB_00ae2e93:
  if (iVar1 != 0) {
    FUN_00aa4aa0(iVar1);
    FUN_00aa4a20(iVar1);
  }
  return uVar5;
}



void FUN_00ae2f80(int param_1)

{
  code *UNRECOVERED_JUMPTABLE;
  
  UNRECOVERED_JUMPTABLE = *(code **)(*(int *)(param_1 + 0x44) + 0x20);
  if (UNRECOVERED_JUMPTABLE != (code *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00ae2f92. Too many branches
                    // WARNING: Treating indirect jump as call
    (*UNRECOVERED_JUMPTABLE)();
    return;
  }
  FUN_00ae2e00();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ae2fa0(int param_1,undefined4 param_2,int param_3,int param_4,byte *param_5,uint param_6)

{
  uint uVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  byte *pbVar6;
  int iVar7;
  byte *pbVar8;
  byte bVar9;
  int *piVar10;
  int *piVar11;
  undefined4 local_74;
  int *local_70;
  uint local_6c;
  int local_68;
  int local_64;
  undefined4 local_60;
  undefined local_5c [24];
  undefined4 uStack_44;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_74;
  local_60 = param_2;
  local_64 = param_3;
  local_68 = param_4;
  local_74 = 0;
  FUN_00a91330(local_5c);
  if (param_4 == 0) {
    local_68 = param_3;
  }
  uVar3 = FUN_00a92600(param_3);
  local_6c = uVar3;
  if (-1 < (int)uVar3) {
    uVar1 = uVar3;
    if (((param_6 == 0xffffffff) || (uVar1 = param_6, param_6 == 0xfffffffe)) || (-3 < (int)param_6)
       ) {
      param_6 = uVar1;
      cVar2 = FUN_00a9a920(*(undefined4 *)(param_1 + 0x10));
      bVar9 = cVar2 - 1U & 7;
      iVar4 = FUN_00ad1210(param_1);
      if ((*param_5 & (byte)(0xff << bVar9)) == 0) {
        if (bVar9 == 0) {
          param_5 = param_5 + 1;
          iVar4 = iVar4 + -1;
        }
        if (iVar4 < (int)(uVar3 + 2 + param_6)) {
          FUN_00a7f3c0(4,0x95,0x6d,".\\crypto\\rsa\\rsa_pss.c",0x7e);
        }
        else if (param_5[iVar4 + -1] == 0xbc) {
          iVar5 = (iVar4 - uVar3) + -1;
          local_70 = (int *)(param_5 + iVar5);
          pbVar6 = (byte *)FUN_00a84f80(iVar5,".\\crypto\\rsa\\rsa_pss.c",0x88);
          if (pbVar6 == (byte *)0x0) {
            FUN_00a7f3c0(4,0x95,0x41,".\\crypto\\rsa\\rsa_pss.c",0x8b);
          }
          else {
            iVar7 = FUN_00ad08e0(pbVar6,iVar5,local_70,local_6c,local_68);
            if (-1 < iVar7) {
              if (0 < iVar5) {
                pbVar8 = pbVar6;
                iVar7 = iVar5;
                do {
                  *pbVar8 = *pbVar8 ^ pbVar8[(int)param_5 - (int)pbVar6];
                  pbVar8 = pbVar8 + 1;
                  iVar7 = iVar7 + -1;
                } while (iVar7 != 0);
              }
              if (bVar9 != 0) {
                *pbVar6 = *pbVar6 & (byte)(0xff >> (8 - bVar9 & 0x1f));
              }
              iVar7 = 0;
              if (*pbVar6 == 0) {
                do {
                  if ((int)((iVar4 - uVar3) + -2) <= iVar7) break;
                  iVar7 = iVar7 + 1;
                } while (pbVar6[iVar7] == 0);
              }
              iVar4 = iVar7 + 1;
              if (pbVar6[iVar7] == 1) {
                if (((int)param_6 < 0) || (iVar5 - iVar4 == param_6)) {
                  iVar7 = FUN_00a91380(local_5c,local_64,0);
                  if ((((iVar7 != 0) &&
                       ((iVar7 = FUN_00a91530(local_5c,&DAT_00dc6860,8), uVar3 = local_6c,
                        iVar7 != 0 && (iVar7 = FUN_00a91530(local_5c,local_60,local_6c), iVar7 != 0)
                        ))) && ((iVar5 - iVar4 == 0 ||
                                (iVar4 = FUN_00a91530(local_5c,pbVar6 + iVar4,iVar5 - iVar4),
                                iVar4 != 0)))) &&
                     (iVar4 = FUN_00a91540(local_5c,&uStack_44,0), iVar4 != 0)) {
                    piVar11 = &uStack_44;
                    piVar10 = local_70;
                    for (; 3 < uVar3; uVar3 = uVar3 - 4) {
                      if (*piVar11 != *piVar10) goto LAB_00ae32e0;
                      piVar10 = piVar10 + 1;
                      piVar11 = piVar11 + 1;
                    }
                    if ((uVar3 == 0) ||
                       ((*(char *)piVar10 == *(char *)piVar11 &&
                        ((uVar3 < 2 ||
                         ((*(char *)((int)piVar10 + 1) == *(char *)((int)piVar11 + 1) &&
                          ((uVar3 < 3 ||
                           (*(char *)((int)piVar10 + 2) == *(char *)((int)piVar11 + 2))))))))))) {
                      local_74 = 1;
                    }
                    else {
LAB_00ae32e0:
                      FUN_00a7f3c0(4,0x95,0x68,".\\crypto\\rsa\\rsa_pss.c",0xac);
                      local_74 = 0;
                    }
                  }
                }
                else {
                  FUN_00a7f3c0(4,0x95,0x88,".\\crypto\\rsa\\rsa_pss.c",0x9c);
                }
              }
              else {
                FUN_00a7f3c0(4,0x95,0x87,".\\crypto\\rsa\\rsa_pss.c",0x97);
              }
            }
          }
          if (pbVar6 != (byte *)0x0) {
            FUN_00a85120(pbVar6);
          }
        }
        else {
          FUN_00a7f3c0(4,0x95,0x86,".\\crypto\\rsa\\rsa_pss.c",0x83);
        }
      }
      else {
        FUN_00a7f3c0(4,0x95,0x85,".\\crypto\\rsa\\rsa_pss.c",0x74);
      }
    }
    else {
      FUN_00a7f3c0(4,0x95,0x88,".\\crypto\\rsa\\rsa_pss.c",0x6c);
    }
  }
  FUN_00a915c0(local_5c);
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00ae3350(int param_1,byte *param_2,undefined4 param_3,int param_4,int param_5,int param_6)

{
  char cVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  byte *pbVar6;
  byte bVar7;
  int iVar8;
  int local_2c;
  undefined4 local_28;
  undefined local_18 [20];
  undefined4 uStack_4;
  
  uStack_4 = 0xae335a;
  local_28 = 0;
  local_2c = 0;
  if (param_5 == 0) {
    param_5 = param_4;
  }
  iVar2 = FUN_00a92600(param_4);
  if (iVar2 < 0) {
    return 0;
  }
  iVar8 = iVar2;
  if (((param_6 != -1) && (iVar8 = param_6, param_6 != -2)) && (param_6 < -2)) {
    FUN_00a7f3c0(4,0x94,0x88,".\\crypto\\rsa\\rsa_pss.c",0xdc);
    return 0;
  }
  cVar1 = FUN_00a9a920(*(undefined4 *)(param_1 + 0x10));
  bVar7 = cVar1 - 1U & 7;
  iVar3 = FUN_00ad1210(param_1);
  if (bVar7 == 0) {
    *param_2 = 0;
    param_2 = param_2 + 1;
    iVar3 = iVar3 + -1;
  }
  if (iVar8 == -2) {
    iVar8 = (iVar3 - iVar2) + -2;
  }
  else if (iVar3 < iVar2 + 2 + iVar8) {
    FUN_00a7f3c0(4,0x94,0x6e,".\\crypto\\rsa\\rsa_pss.c",0xed);
    return 0;
  }
  if (0 < iVar8) {
    local_2c = FUN_00a84f80(iVar8,".\\crypto\\rsa\\rsa_pss.c",0xf2);
    if (local_2c == 0) {
      FUN_00a7f3c0(4,0x94,0x41,".\\crypto\\rsa\\rsa_pss.c",0xf5);
      goto LAB_00ae35cd;
    }
    iVar4 = FUN_00a86e60(local_2c,iVar8);
    if (iVar4 < 1) goto LAB_00ae35cd;
  }
  iVar4 = (iVar3 - iVar2) + -1;
  FUN_00a91330(local_18);
  iVar5 = FUN_00a91380(local_18,param_4,0);
  if ((((iVar5 != 0) && (iVar5 = FUN_00a91530(local_18,&DAT_00dc6860,8), iVar5 != 0)) &&
      ((iVar5 = FUN_00a91530(local_18,param_3,iVar2), iVar5 != 0 &&
       ((iVar8 == 0 || (iVar5 = FUN_00a91530(local_18,local_2c,iVar8), iVar5 != 0)))))) &&
     (iVar5 = FUN_00a91540(local_18,param_2 + iVar4,0), iVar5 != 0)) {
    FUN_00a915c0(local_18);
    iVar4 = FUN_00ad08e0(param_2,iVar4,param_2 + iVar4,iVar2,param_5);
    if (iVar4 == 0) {
      iVar2 = (iVar3 - iVar2) - iVar8;
      param_2[iVar2 + -2] = param_2[iVar2 + -2] ^ 1;
      pbVar6 = param_2 + iVar2 + -2;
      if ((0 < iVar8) && (iVar2 = 0, 0 < iVar8)) {
        do {
          pbVar6 = pbVar6 + 1;
          *pbVar6 = *pbVar6 ^ *(byte *)(iVar2 + local_2c);
          iVar2 = iVar2 + 1;
        } while (iVar2 < iVar8);
      }
      if (bVar7 != 0) {
        *param_2 = *param_2 & (byte)(0xff >> (8 - bVar7 & 0x1f));
      }
      param_2[iVar3 + -1] = 0xbc;
      local_28 = 1;
    }
  }
LAB_00ae35cd:
  if (local_2c == 0) {
    return local_28;
  }
  FUN_00a85120(local_2c);
  return local_28;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __fastcall
FUN_00ae3600(int param_1_00,int param_2_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 *puVar2;
  int **ppiVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  uint uVar8;
  int local_50;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  uint local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  uint local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  uint local_4;
  
  local_4 = 0xae360a;
  local_50 = 0;
  iVar1 = FUN_00aa49c0();
  if (iVar1 != 0) {
    FUN_00aa4a50(iVar1);
    puVar2 = (undefined4 *)FUN_00aa4ae0(iVar1);
    ppiVar3 = (int **)FUN_00aa4ae0(iVar1);
    uVar4 = FUN_00aa4ae0(iVar1);
    iVar5 = FUN_00aa4ae0(iVar1);
    if (iVar5 != 0) {
      iVar5 = (param_1_00 + 1) / 2;
      if (*(int *)(param_2_00 + 0x10) == 0) {
        iVar6 = FUN_00a9aa10();
        *(int *)(param_2_00 + 0x10) = iVar6;
        if (iVar6 == 0) goto LAB_00ae37ce;
      }
      if (*(int *)(param_2_00 + 0x18) == 0) {
        iVar6 = FUN_00a9aa10();
        *(int *)(param_2_00 + 0x18) = iVar6;
        if (iVar6 == 0) goto LAB_00ae37ce;
      }
      if (*(int *)(param_2_00 + 0x14) == 0) {
        iVar6 = FUN_00a9aa10();
        *(int *)(param_2_00 + 0x14) = iVar6;
        if (iVar6 == 0) goto LAB_00ae37ce;
      }
      if (*(int *)(param_2_00 + 0x1c) == 0) {
        iVar6 = FUN_00a9aa10();
        *(int *)(param_2_00 + 0x1c) = iVar6;
        if (iVar6 == 0) goto LAB_00ae37ce;
      }
      if (*(int *)(param_2_00 + 0x20) == 0) {
        iVar6 = FUN_00a9aa10();
        *(int *)(param_2_00 + 0x20) = iVar6;
        if (iVar6 == 0) goto LAB_00ae37ce;
      }
      if (*(int *)(param_2_00 + 0x24) == 0) {
        iVar6 = FUN_00a9aa10();
        *(int *)(param_2_00 + 0x24) = iVar6;
        if (iVar6 == 0) goto LAB_00ae37ce;
      }
      if (*(int *)(param_2_00 + 0x28) == 0) {
        iVar6 = FUN_00a9aa10();
        *(int *)(param_2_00 + 0x28) = iVar6;
        if (iVar6 == 0) goto LAB_00ae37ce;
      }
      if (*(int *)(param_2_00 + 0x2c) == 0) {
        iVar6 = FUN_00a9aa10();
        *(int *)(param_2_00 + 0x2c) = iVar6;
        if (iVar6 == 0) goto LAB_00ae37ce;
      }
      FUN_00a9aba0(*(undefined4 *)(param_2_00 + 0x14),param_1);
      iVar6 = FUN_00ae8b20(*(undefined4 *)(param_2_00 + 0x1c),iVar5,0,0,0,param_2);
      if (iVar6 != 0) {
        while( true ) {
          uVar7 = FUN_00a9a8c0();
          iVar6 = FUN_00ad1720(uVar4,*(undefined4 *)(param_2_00 + 0x1c),uVar7);
          if ((iVar6 == 0) ||
             (iVar6 = FUN_00ad32d0(ppiVar3,uVar4,*(undefined4 *)(param_2_00 + 0x14),iVar1),
             iVar6 == 0)) goto LAB_00ae37ce;
          if ((ppiVar3[1] == (int *)0x1) && ((**ppiVar3 == 1 && (ppiVar3[3] == (int *)0x0)))) break;
          iVar6 = FUN_00ae82e0(param_2,2,local_50);
          local_50 = local_50 + 1;
          if ((iVar6 == 0) ||
             (iVar6 = FUN_00ae8b20(*(undefined4 *)(param_2_00 + 0x1c),iVar5,0,0,0,param_2),
             iVar6 == 0)) goto LAB_00ae37ce;
        }
        iVar6 = FUN_00ae82e0(param_2,3,0);
        if (iVar6 != 0) goto LAB_00ae3820;
      }
    }
  }
  goto LAB_00ae37ce;
  while( true ) {
    iVar6 = FUN_00ae82e0(param_2,2,local_50);
    local_50 = local_50 + 1;
    if (iVar6 == 0) break;
LAB_00ae3820:
    uVar8 = 0;
    do {
      iVar6 = FUN_00ae8b20(*(undefined4 *)(param_2_00 + 0x20),param_1_00 - iVar5,0,0,0,param_2);
      if (iVar6 == 0) goto LAB_00ae37ce;
      iVar6 = FUN_00a9ae60(*(undefined4 *)(param_2_00 + 0x1c),*(undefined4 *)(param_2_00 + 0x20));
    } while ((iVar6 == 0) && (uVar8 = uVar8 + 1, uVar8 < 3));
    if (uVar8 == 3) {
      uVar4 = 0;
      FUN_00a7f3c0(4,0x81,0x78,".\\crypto\\rsa\\rsa_gen.c",0x9f);
      goto LAB_00ae37eb;
    }
    uVar7 = FUN_00a9a8c0();
    iVar6 = FUN_00ad1720(uVar4,*(undefined4 *)(param_2_00 + 0x20),uVar7);
    if ((iVar6 == 0) ||
       (iVar6 = FUN_00ad32d0(ppiVar3,uVar4,*(undefined4 *)(param_2_00 + 0x14),iVar1), iVar6 == 0))
    break;
    if ((ppiVar3[1] == (int *)0x1) && ((**ppiVar3 == 1 && (ppiVar3[3] == (int *)0x0)))) {
      iVar5 = FUN_00ae82e0(param_2,3,1);
      if (iVar5 != 0) {
        iVar5 = FUN_00a9ae60(*(undefined4 *)(param_2_00 + 0x1c),*(undefined4 *)(param_2_00 + 0x20));
        if (iVar5 < 0) {
          uVar7 = *(undefined4 *)(param_2_00 + 0x1c);
          *(undefined4 *)(param_2_00 + 0x1c) = *(undefined4 *)(param_2_00 + 0x20);
          *(undefined4 *)(param_2_00 + 0x20) = uVar7;
        }
        iVar5 = FUN_00ad2400(*(undefined4 *)(param_2_00 + 0x10),*(undefined4 *)(param_2_00 + 0x1c),
                             *(undefined4 *)(param_2_00 + 0x20),iVar1);
        if (iVar5 != 0) {
          uVar7 = FUN_00a9a8c0();
          iVar5 = FUN_00ad1720(ppiVar3,*(undefined4 *)(param_2_00 + 0x1c),uVar7);
          if (iVar5 != 0) {
            uVar7 = FUN_00a9a8c0();
            iVar5 = FUN_00ad1720(uVar4,*(undefined4 *)(param_2_00 + 0x20),uVar7);
            if ((iVar5 != 0) && (iVar5 = FUN_00ad2400(puVar2,ppiVar3,uVar4,iVar1), iVar5 != 0)) {
              if ((*(uint *)(param_2_00 + 0x3c) & 0x100) == 0) {
                local_3c = *puVar2;
                local_38 = puVar2[1];
                local_34 = puVar2[2];
                local_30 = puVar2[3];
                local_2c = puVar2[4] & 0xfffffffe | local_2c & 1 | 6;
                puVar2 = &local_3c;
              }
              iVar5 = FUN_00ad3370(*(undefined4 *)(param_2_00 + 0x18),
                                   *(undefined4 *)(param_2_00 + 0x14),puVar2,iVar1);
              if (iVar5 != 0) {
                if ((*(uint *)(param_2_00 + 0x3c) & 0x100) == 0) {
                  puVar2 = *(undefined4 **)(param_2_00 + 0x18);
                  local_28 = *puVar2;
                  local_24 = puVar2[1];
                  local_20 = puVar2[2];
                  local_1c = puVar2[3];
                  local_18 = puVar2[4] & 0xfffffffe | local_18 & 1 | 6;
                  puVar2 = &local_28;
                }
                else {
                  puVar2 = *(undefined4 **)(param_2_00 + 0x18);
                }
                iVar5 = FUN_00ad26e0(0,*(undefined4 *)(param_2_00 + 0x24),puVar2,ppiVar3,iVar1);
                if ((iVar5 != 0) &&
                   (iVar5 = FUN_00ad26e0(0,*(undefined4 *)(param_2_00 + 0x28),puVar2,uVar4,iVar1),
                   iVar5 != 0)) {
                  if ((*(uint *)(param_2_00 + 0x3c) & 0x100) == 0) {
                    puVar2 = *(undefined4 **)(param_2_00 + 0x1c);
                    local_14 = *puVar2;
                    local_10 = puVar2[1];
                    local_c = puVar2[2];
                    local_8 = puVar2[3];
                    local_4 = puVar2[4] & 0xfffffffe | local_4 & 1 | 6;
                    puVar2 = &local_14;
                  }
                  else {
                    puVar2 = *(undefined4 **)(param_2_00 + 0x1c);
                  }
                  iVar5 = FUN_00ad3370(*(undefined4 *)(param_2_00 + 0x2c),
                                       *(undefined4 *)(param_2_00 + 0x20),puVar2,iVar1);
                  if (iVar5 != 0) {
                    uVar4 = 1;
                    goto LAB_00ae37eb;
                  }
                }
              }
            }
          }
        }
      }
      break;
    }
  }
LAB_00ae37ce:
  FUN_00a7f3c0(4,0x81,3,".\\crypto\\rsa\\rsa_gen.c",0xdf);
  uVar4 = 0;
LAB_00ae37eb:
  if (iVar1 != 0) {
    FUN_00aa4aa0(iVar1);
    FUN_00aa4a20(iVar1);
  }
  return uVar4;
}



void FUN_00ae3af0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  code *UNRECOVERED_JUMPTABLE;
  
  UNRECOVERED_JUMPTABLE = *(code **)(*(int *)(param_1 + 8) + 0x34);
  if (UNRECOVERED_JUMPTABLE != (code *)0x0) {
                    // WARNING: Could not recover jumptable at 0x00ae3b02. Too many branches
                    // WARNING: Treating indirect jump as call
    (*UNRECOVERED_JUMPTABLE)();
    return;
  }
  FUN_00ae3600(param_3,param_4);
  return;
}



void FUN_00ae3b20(char *param_1,int param_2,int *param_3,int *param_4)

{
  int iVar1;
  char cVar2;
  char *pcVar3;
  int iVar4;
  int iVar5;
  
  if (param_2 == -1) {
    pcVar3 = param_1;
    do {
      cVar2 = *pcVar3;
      pcVar3 = pcVar3 + 1;
    } while (cVar2 != '\0');
    param_2 = (int)pcVar3 - (int)(param_1 + 1);
  }
  param_2 = param_2 * 2;
  iVar1 = param_2 + 2;
  iVar4 = FUN_00a84f80(iVar1,".\\crypto\\pkcs12\\p12_utl.c",0x47);
  if (iVar4 == 0) {
    return;
  }
  iVar5 = 0;
  if (0 < param_2) {
    do {
      *(undefined *)(iVar4 + iVar5) = 0;
      *(char *)(iVar4 + 1 + iVar5) = param_1[iVar5 >> 1];
      iVar5 = iVar5 + 2;
    } while (iVar5 < param_2);
  }
  *(undefined *)(iVar4 + -2 + iVar1) = 0;
  *(undefined *)(iVar4 + -1 + iVar1) = 0;
  if (param_4 != (int *)0x0) {
    *param_4 = iVar1;
  }
  if (param_3 != (int *)0x0) {
    *param_3 = iVar4;
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ae3ba0(code *param_1,undefined4 param_2)

{
  char cVar1;
  undefined4 uVar2;
  int iVar3;
  undefined **ppuVar4;
  char *pcVar5;
  undefined4 local_111c;
  byte local_1118 [4];
  undefined4 local_1114;
  undefined **local_1110;
  undefined local_110c [8];
  undefined local_1104 [256];
  char local_1004 [4096];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_111c;
  FUN_00a7f970(local_110c);
  uVar2 = FUN_00a7fa30(local_110c);
  iVar3 = FUN_00a7f6b0(&local_111c,&local_1114,&local_1110,local_1118);
  while (iVar3 != 0) {
    FUN_00a7f530(iVar3,local_1104,0x100);
    ppuVar4 = local_1110;
    if ((local_1118[0] & 2) == 0) {
      ppuVar4 = &PTR_02bd3fc0;
    }
    FUN_00a86220(local_1004,0x1000,"%lu:%s:%s:%d:%s\n",uVar2,local_1104,local_111c,local_1114,
                 ppuVar4);
    pcVar5 = local_1004;
    do {
      cVar1 = *pcVar5;
      pcVar5 = pcVar5 + 1;
    } while (cVar1 != '\0');
    iVar3 = (*param_1)(local_1004,(int)pcVar5 - (int)(local_1004 + 1),param_2);
    if (iVar3 < 1) break;
    iVar3 = FUN_00a7f6b0(&local_111c,&local_1114,&local_1110,local_1118);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __thiscall FUN_00ae3d90(int *param_1_00,int *param_1)

{
  byte bVar1;
  char cVar2;
  byte *pbVar3;
  int iVar4;
  byte *pbVar5;
  int *piVar6;
  int iVar7;
  void *_Src;
  size_t _Size;
  char *pcVar8;
  undefined4 *unaff_EBX;
  int **unaff_ESI;
  bool bVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  size_t local_810;
  int *local_80c;
  int local_808;
  undefined local_804 [2048];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_810;
  pbVar5 = (byte *)unaff_EBX[1];
  local_80c = param_1;
  local_808 = 0;
  pcVar8 = "language";
  pbVar3 = pbVar5;
  do {
    bVar1 = *pbVar3;
    bVar9 = bVar1 < (byte)*pcVar8;
    if (bVar1 != *pcVar8) {
LAB_00ae3df0:
      iVar4 = (1 - (uint)bVar9) - (uint)(bVar9 != 0);
      goto LAB_00ae3df5;
    }
    if (bVar1 == 0) break;
    bVar1 = pbVar3[1];
    bVar9 = bVar1 < ((byte *)pcVar8)[1];
    if (bVar1 != ((byte *)pcVar8)[1]) goto LAB_00ae3df0;
    pbVar3 = pbVar3 + 2;
    pcVar8 = (char *)((byte *)pcVar8 + 2);
  } while (bVar1 != 0);
  iVar4 = 0;
LAB_00ae3df5:
  if (iVar4 == 0) {
    if (*param_1_00 == 0) {
      iVar4 = FUN_00a87dc0(unaff_EBX[2],0);
      *param_1_00 = iVar4;
      if (iVar4 != 0) goto LAB_00ae42bc;
      uVar12 = 0x5b;
      uVar11 = 0x6e;
LAB_00ae3e77:
      FUN_00a7f3c0(0x22,0x96,uVar11,".\\crypto\\x509v3\\v3_pci.c",uVar12);
      uVar11 = unaff_EBX[2];
      uVar12 = unaff_EBX[1];
      uVar10 = *unaff_EBX;
    }
    else {
      FUN_00a7f3c0(0x22,0x96,0x9b,".\\crypto\\x509v3\\v3_pci.c",0x55);
      uVar11 = unaff_EBX[2];
      uVar12 = unaff_EBX[1];
      uVar10 = *unaff_EBX;
    }
    FUN_00a7f690(6,"section:",uVar10,",name:",uVar12,",value:",uVar11);
    goto LAB_00ae3e3d;
  }
  pcVar8 = "pathlen";
  pbVar3 = pbVar5;
  do {
    bVar1 = *pbVar3;
    bVar9 = bVar1 < (byte)*pcVar8;
    if (bVar1 != *pcVar8) {
LAB_00ae3ec1:
      iVar4 = (1 - (uint)bVar9) - (uint)(bVar9 != 0);
      goto LAB_00ae3ec6;
    }
    if (bVar1 == 0) break;
    bVar1 = pbVar3[1];
    bVar9 = bVar1 < ((byte *)pcVar8)[1];
    if (bVar1 != ((byte *)pcVar8)[1]) goto LAB_00ae3ec1;
    pbVar3 = pbVar3 + 2;
    pcVar8 = (char *)((byte *)pcVar8 + 2);
  } while (bVar1 != 0);
  iVar4 = 0;
LAB_00ae3ec6:
  if (iVar4 == 0) {
    if (*param_1 == 0) {
      iVar4 = FUN_00aa0950();
      if (iVar4 != 0) goto LAB_00ae42bc;
      uVar12 = 0x6a;
      uVar11 = 0x9c;
    }
    else {
      uVar12 = 100;
      uVar11 = 0x9d;
    }
    goto LAB_00ae3e77;
  }
  pcVar8 = "policy";
  do {
    bVar1 = *pbVar5;
    bVar9 = bVar1 < (byte)*pcVar8;
    if (bVar1 != *pcVar8) {
LAB_00ae3f30:
      iVar4 = (1 - (uint)bVar9) - (uint)(bVar9 != 0);
      goto LAB_00ae3f35;
    }
    if (bVar1 == 0) break;
    bVar1 = pbVar5[1];
    bVar9 = bVar1 < ((byte *)pcVar8)[1];
    if (bVar1 != ((byte *)pcVar8)[1]) goto LAB_00ae3f30;
    pbVar5 = pbVar5 + 2;
    pcVar8 = (char *)((byte *)pcVar8 + 2);
  } while (bVar1 != 0);
  iVar4 = 0;
LAB_00ae3f35:
  if (iVar4 != 0) goto LAB_00ae42bc;
  iVar4 = 0;
  if (*unaff_ESI == (int *)0x0) {
    piVar6 = (int *)FUN_00a888d0();
    *unaff_ESI = piVar6;
    if (piVar6 == (int *)0x0) {
      uVar12 = 0x78;
      uVar11 = 0x41;
      goto LAB_00ae3e77;
    }
    local_808 = 1;
  }
  iVar7 = _strncmp((char *)unaff_EBX[2],"hex:",4);
  if (iVar7 == 0) {
    _Src = (void *)FUN_00aa0ad0(unaff_EBX[2] + 4,&local_810);
    if (_Src == (void *)0x0) {
      uVar12 = 0x85;
      uVar11 = 0x71;
LAB_00ae426b:
      FUN_00a7f3c0(0x22,0x96,uVar11,".\\crypto\\x509v3\\v3_pci.c",uVar12);
      uVar11 = unaff_EBX[2];
      uVar12 = unaff_EBX[1];
      uVar10 = *unaff_EBX;
      goto LAB_00ae428c;
    }
    iVar4 = FUN_00a84ff0((*unaff_ESI)[2],local_810 + 1 + **unaff_ESI,".\\crypto\\x509v3\\v3_pci.c",
                         0x8b);
    if (iVar4 != 0) {
      (*unaff_ESI)[2] = iVar4;
      _memcpy((void *)((*unaff_ESI)[2] + **unaff_ESI),_Src,local_810);
      **unaff_ESI = **unaff_ESI + local_810;
      *(undefined *)((*unaff_ESI)[2] + **unaff_ESI) = 0;
      FUN_00a85120(_Src);
      goto LAB_00ae4206;
    }
    FUN_00a85120(_Src);
    (*unaff_ESI)[2] = 0;
    **unaff_ESI = 0;
    FUN_00a7f3c0(0x22,0x96,0x41,".\\crypto\\x509v3\\v3_pci.c",0x9a);
    FUN_00a7f690(6,"section:",*unaff_EBX,",name:",unaff_EBX[1],",value:",unaff_EBX[2]);
  }
  else {
    iVar7 = _strncmp((char *)unaff_EBX[2],"file:",5);
    if (iVar7 != 0) {
      iVar4 = _strncmp((char *)unaff_EBX[2],"text:",5);
      if (iVar4 == 0) {
        pcVar8 = (char *)(unaff_EBX[2] + 5);
        do {
          cVar2 = *pcVar8;
          pcVar8 = pcVar8 + 1;
        } while (cVar2 != '\0');
        local_810 = (int)pcVar8 - (unaff_EBX[2] + 6);
        iVar4 = FUN_00a84ff0((*unaff_ESI)[2],local_810 + 1 + **unaff_ESI,
                             ".\\crypto\\x509v3\\v3_pci.c",0xc9);
        if (iVar4 != 0) {
          (*unaff_ESI)[2] = iVar4;
          _memcpy((void *)((*unaff_ESI)[2] + **unaff_ESI),(void *)(unaff_EBX[2] + 5),local_810);
          **unaff_ESI = **unaff_ESI + local_810;
          *(undefined *)((*unaff_ESI)[2] + **unaff_ESI) = 0;
          goto LAB_00ae4206;
        }
        uVar12 = 0xd7;
        (*unaff_ESI)[2] = 0;
        **unaff_ESI = 0;
        uVar11 = 0x41;
      }
      else {
        uVar12 = 0xde;
        uVar11 = 0x98;
      }
      goto LAB_00ae426b;
    }
    local_80c = (int *)FUN_00a947f0(unaff_EBX[2] + 5,&DAT_00d1fefc);
    if (local_80c == (int *)0x0) {
      FUN_00a7f3c0(0x22,0x96,0x20,".\\crypto\\x509v3\\v3_pci.c",0xa7);
      uVar11 = unaff_EBX[2];
      uVar12 = unaff_EBX[1];
      uVar10 = *unaff_EBX;
    }
    else {
      do {
        while( true ) {
          _Size = FUN_00a83320(local_80c,local_804,0x800);
          if ((int)_Size < 1) break;
          iVar4 = FUN_00a84ff0((*unaff_ESI)[2],**unaff_ESI + 1 + _Size,".\\crypto\\x509v3\\v3_pci.c"
                               ,0xb1);
          if (iVar4 == 0) goto LAB_00ae4102;
          (*unaff_ESI)[2] = iVar4;
          _memcpy((void *)((*unaff_ESI)[2] + **unaff_ESI),local_804,_Size);
          **unaff_ESI = **unaff_ESI + _Size;
          *(undefined *)((*unaff_ESI)[2] + **unaff_ESI) = 0;
        }
        if (_Size != 0) break;
        iVar7 = FUN_00a83300(local_80c,8);
      } while (iVar7 != 0);
LAB_00ae4102:
      FUN_00a83870(local_80c);
      if ((int)_Size < 0) {
        uVar12 = 0xc0;
        uVar11 = 0x20;
        goto LAB_00ae426b;
      }
LAB_00ae4206:
      if (iVar4 != 0) {
LAB_00ae42bc:
        ___security_check_cookie_4();
        return;
      }
      FUN_00a7f3c0(0x22,0x96,0x41,".\\crypto\\x509v3\\v3_pci.c",0xe4);
      uVar11 = unaff_EBX[2];
      uVar12 = unaff_EBX[1];
      uVar10 = *unaff_EBX;
    }
LAB_00ae428c:
    FUN_00a7f690(6,"section:",uVar10,",name:",uVar12,",value:",uVar11);
  }
  if (local_808 != 0) {
    FUN_00a888e0(*unaff_ESI);
    *unaff_ESI = (int *)0x0;
  }
LAB_00ae3e3d:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int * FUN_00ae42e0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  char *pcVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 *puVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  int local_18;
  int local_14;
  int local_10;
  int local_c;
  undefined4 local_8;
  int *local_4;
  
  iVar7 = 0;
  local_4 = (int *)0x0;
  local_14 = 0;
  local_18 = 0;
  local_10 = 0;
  uVar2 = FUN_00aa0e80(param_3);
  local_c = 0;
  local_8 = uVar2;
  iVar3 = FUN_00a80ed0(uVar2);
  if (iVar3 < 1) {
LAB_00ae4402:
    FUN_00a7f3c0(0x22,0x9b,0x9a,".\\crypto\\x509v3\\v3_pci.c",299);
  }
  else {
    do {
      puVar4 = (undefined4 *)FUN_00a80ee0(uVar2,iVar7);
      pcVar1 = (char *)puVar4[1];
      if (pcVar1 == (char *)0x0) {
LAB_00ae445f:
        uVar9 = 0x103;
        uVar8 = 0x99;
LAB_00ae446e:
        FUN_00a7f3c0(0x22,0x9b,uVar8,".\\crypto\\x509v3\\v3_pci.c",uVar9);
        FUN_00a7f690(6,"section:",*puVar4,",name:",puVar4[1],",value:",puVar4[2]);
        goto LAB_00ae44f8;
      }
      if (*pcVar1 == '@') {
LAB_00ae4352:
        iVar3 = 1;
        iVar7 = FUN_00aa13f0(param_2,pcVar1 + 1);
        if (iVar7 == 0) {
          uVar9 = 0x10f;
          uVar8 = 0x87;
          goto LAB_00ae446e;
        }
        iVar6 = 0;
        do {
          iVar5 = FUN_00a80ed0(iVar7);
          if (iVar5 <= iVar6) break;
          FUN_00a80ee0(iVar7,iVar6,&local_18);
          iVar3 = FUN_00ae3d90();
          iVar6 = iVar6 + 1;
        } while (iVar3 != 0);
        FUN_00aa1430(param_2,iVar7);
        uVar2 = local_8;
        iVar7 = local_c;
        if (iVar3 == 0) goto LAB_00ae44f8;
      }
      else {
        if (puVar4[2] == 0) goto LAB_00ae445f;
        if (*pcVar1 == '@') goto LAB_00ae4352;
        iVar3 = FUN_00ae3d90(&local_18);
        if (iVar3 == 0) {
          FUN_00a7f690(6,"section:",*puVar4,",name:",puVar4[1],",value:",puVar4[2]);
          goto LAB_00ae44f8;
        }
      }
      iVar7 = iVar7 + 1;
      local_c = iVar7;
      iVar6 = FUN_00a80ed0(uVar2);
      iVar3 = local_14;
    } while (iVar7 < iVar6);
    if (local_14 == 0) goto LAB_00ae4402;
    iVar6 = FUN_00a877e0(local_14);
    iVar7 = local_10;
    if (((iVar6 == 0x29b) || (iVar6 == 0x299)) && (local_10 != 0)) {
      uVar9 = 0x131;
      uVar8 = 0x9f;
    }
    else {
      local_4 = (int *)FUN_00aaa0e0();
      if (local_4 != (int *)0x0) {
        *(int *)local_4[1] = iVar3;
        *(int *)(local_4[1] + 4) = iVar7;
        *local_4 = local_18;
        local_18 = 0;
        goto LAB_00ae454e;
      }
      uVar9 = 0x138;
      uVar8 = 0x41;
    }
    FUN_00a7f3c0(0x22,0x9b,uVar8,".\\crypto\\x509v3\\v3_pci.c",uVar9);
LAB_00ae44f8:
    if (local_14 != 0) {
      FUN_00a90760(local_14);
    }
  }
  if (local_18 != 0) {
    FUN_00a887d0(local_18);
    local_18 = 0;
  }
  if (local_10 != 0) {
    FUN_00a888e0(local_10);
  }
LAB_00ae454e:
  FUN_00a81120(uVar2,FUN_00aa03c0);
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ae4910(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 local_58;
  undefined local_54 [80];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_58;
  local_58 = param_3;
  iVar3 = 0;
  iVar1 = FUN_00a80ed0(param_2);
  if (0 < iVar1) {
    do {
      uVar2 = FUN_00a80ee0(param_2,iVar3);
      FUN_00a905e0(local_54,0x50,uVar2);
      FUN_00aa02e0(0,local_54,&local_58);
      iVar3 = iVar3 + 1;
      iVar1 = FUN_00a80ed0(param_2);
    } while (iVar3 < iVar1);
  }
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00ae4b30(int param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  
  iVar3 = 0;
  iVar1 = FUN_00a80ed0(*(undefined4 *)(param_1 + 4));
  if (0 < iVar1) {
    do {
      puVar2 = (undefined4 *)FUN_00a80ee0(*(undefined4 *)(param_1 + 4),iVar3);
      iVar1 = FUN_00a90db0(*puVar2,param_2);
      if (iVar1 == 0) {
        return puVar2[1];
      }
      iVar3 = iVar3 + 1;
      iVar1 = FUN_00a80ed0(*(undefined4 *)(param_1 + 4));
    } while (iVar3 < iVar1);
  }
  return 0;
}



undefined4 FUN_00ae4b90(int *param_1,int param_2,char *param_3,int param_4)

{
  char cVar1;
  char *pcVar2;
  undefined4 *puVar3;
  int iVar4;
  int *piVar5;
  
  piVar5 = (int *)0x0;
  if (((param_1 == (int *)0x0) || (param_2 == 0)) || (param_3 == (char *)0x0)) {
    FUN_00a7f3c0(0x22,0x7e,0x6b,".\\crypto\\x509v3\\v3_sxnet.c",0xbd);
    return 0;
  }
  if (param_4 == -1) {
    pcVar2 = param_3;
    do {
      cVar1 = *pcVar2;
      pcVar2 = pcVar2 + 1;
    } while (cVar1 != '\0');
    param_4 = (int)pcVar2 - (int)(param_3 + 1);
  }
  if (0x40 < param_4) {
    FUN_00a7f3c0(0x22,0x7e,0x84,".\\crypto\\x509v3\\v3_sxnet.c",0xc2);
    return 0;
  }
  puVar3 = (undefined4 *)*param_1;
  if (puVar3 == (undefined4 *)0x0) {
    puVar3 = (undefined4 *)FUN_00a8bf10(&DAT_00dc6db4);
    if (puVar3 == (undefined4 *)0x0) goto LAB_00ae4cb2;
    iVar4 = FUN_00a9da80(*puVar3,0);
    if (iVar4 == 0) goto LAB_00ae4cb2;
    *param_1 = (int)puVar3;
  }
  iVar4 = FUN_00ae4b30(puVar3,param_2);
  if (iVar4 != 0) {
    FUN_00a7f3c0(0x22,0x7e,0x85,".\\crypto\\x509v3\\v3_sxnet.c",0xcb);
    return 0;
  }
  piVar5 = (int *)FUN_00a8bf10(&DAT_00dc6d70);
  if (piVar5 != (int *)0x0) {
    if (param_4 == -1) {
      pcVar2 = param_3;
      do {
        cVar1 = *pcVar2;
        pcVar2 = pcVar2 + 1;
      } while (cVar1 != '\0');
      param_4 = (int)pcVar2 - (int)(param_3 + 1);
    }
    iVar4 = FUN_00a90c30(piVar5[1],param_3,param_4);
    if (iVar4 != 0) {
      iVar4 = FUN_00a80df0(puVar3[1],piVar5);
      if (iVar4 != 0) {
        *piVar5 = param_2;
        return 1;
      }
    }
  }
LAB_00ae4cb2:
  FUN_00a7f3c0(0x22,0x7e,0x41,".\\crypto\\x509v3\\v3_sxnet.c",0xd8);
  FUN_00a8c2c0(piVar5,&DAT_00dc6d70);
  FUN_00a8c2c0(puVar3,&DAT_00dc6db4);
  *param_1 = 0;
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ae4d20(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  undefined4 local_4;
  
  local_4 = 0;
  iVar3 = 0;
  iVar2 = FUN_00a80ed0(param_3);
  if (0 < iVar2) {
    do {
      iVar2 = FUN_00a80ee0(param_3,iVar3);
      uVar1 = *(undefined4 *)(iVar2 + 8);
      iVar2 = FUN_00aa0500(0,*(undefined4 *)(iVar2 + 4));
      if (iVar2 == 0) {
        FUN_00a7f3c0(0x22,0x7d,0x83,".\\crypto\\x509v3\\v3_sxnet.c",0x9d);
        return 0;
      }
      iVar2 = FUN_00ae4b90(&local_4,iVar2,uVar1,0xffffffff);
      if (iVar2 == 0) {
        return 0;
      }
      iVar3 = iVar3 + 1;
      iVar2 = FUN_00a80ed0(param_3);
    } while (iVar3 < iVar2);
  }
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int * FUN_00ae4ea0(undefined4 param_1,int *param_2,undefined4 param_3)

{
  byte bVar1;
  int iVar2;
  byte *pbVar3;
  int iVar4;
  byte *pbVar5;
  int *piVar6;
  undefined4 *puVar7;
  byte *pbVar8;
  char *pcVar9;
  char cVar10;
  int iVar12;
  bool bVar13;
  undefined4 uVar14;
  undefined4 uVar15;
  char local_11;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  char cVar11;
  
  iVar12 = 0;
  local_11 = '\0';
  cVar11 = '\0';
  cVar10 = '\0';
  local_10 = 0;
  local_c = 0;
  local_4 = 0;
  local_8 = 0;
  iVar2 = FUN_00a80ed0(param_3);
  if (0 < iVar2) {
    do {
      iVar2 = FUN_00a80ee0(param_3,iVar12);
      pbVar5 = *(byte **)(iVar2 + 4);
      pbVar8 = &DAT_00db663c;
      pbVar3 = pbVar5;
      do {
        bVar1 = *pbVar3;
        bVar13 = bVar1 < *pbVar8;
        if (bVar1 != *pbVar8) {
LAB_00ae4f20:
          iVar4 = (1 - (uint)bVar13) - (uint)(bVar13 != 0);
          goto LAB_00ae4f25;
        }
        if (bVar1 == 0) break;
        bVar1 = pbVar3[1];
        bVar13 = bVar1 < pbVar8[1];
        if (bVar1 != pbVar8[1]) goto LAB_00ae4f20;
        pbVar3 = pbVar3 + 2;
        pbVar8 = pbVar8 + 2;
      } while (bVar1 != 0);
      iVar4 = 0;
LAB_00ae4f25:
      if (iVar4 == 0) {
        pbVar5 = *(byte **)(iVar2 + 8);
        local_11 = '\x01';
        cVar10 = cVar11;
        if (pbVar5 != (byte *)0x0) {
          pbVar3 = &DAT_00dc6ee0;
          do {
            bVar1 = *pbVar5;
            bVar13 = bVar1 < *pbVar3;
            if (bVar1 != *pbVar3) {
LAB_00ae4f60:
              iVar2 = (1 - (uint)bVar13) - (uint)(bVar13 != 0);
              goto LAB_00ae4f65;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar5[1];
            bVar13 = bVar1 < pbVar3[1];
            if (bVar1 != pbVar3[1]) goto LAB_00ae4f60;
            pbVar5 = pbVar5 + 2;
            pbVar3 = pbVar3 + 2;
          } while (bVar1 != 0);
          iVar2 = 0;
LAB_00ae4f65:
          if (iVar2 == 0) {
            local_11 = '\x02';
          }
        }
      }
      else {
        pcVar9 = "issuer";
        do {
          bVar1 = *pbVar5;
          bVar13 = bVar1 < (byte)*pcVar9;
          if (bVar1 != *pcVar9) {
LAB_00ae4f97:
            iVar4 = (1 - (uint)bVar13) - (uint)(bVar13 != 0);
            goto LAB_00ae4f9c;
          }
          if (bVar1 == 0) break;
          bVar1 = pbVar5[1];
          bVar13 = bVar1 < ((byte *)pcVar9)[1];
          if (bVar1 != ((byte *)pcVar9)[1]) goto LAB_00ae4f97;
          pbVar5 = pbVar5 + 2;
          pcVar9 = (char *)((byte *)pcVar9 + 2);
        } while (bVar1 != 0);
        iVar4 = 0;
LAB_00ae4f9c:
        if (iVar4 != 0) {
          FUN_00a7f3c0(0x22,0x77,0x78,".\\crypto\\x509v3\\v3_akey.c",0x8f);
          FUN_00a7f690(2,"name=",*(undefined4 *)(iVar2 + 4));
          return (int *)0x0;
        }
        pbVar5 = *(byte **)(iVar2 + 8);
        cVar10 = '\x01';
        if (pbVar5 != (byte *)0x0) {
          pbVar3 = &DAT_00dc6ee0;
          do {
            bVar1 = *pbVar5;
            bVar13 = bVar1 < *pbVar3;
            if (bVar1 != *pbVar3) {
LAB_00ae4fd2:
              iVar2 = (1 - (uint)bVar13) - (uint)(bVar13 != 0);
              goto LAB_00ae4fd7;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar5[1];
            bVar13 = bVar1 < pbVar3[1];
            if (bVar1 != pbVar3[1]) goto LAB_00ae4fd2;
            pbVar5 = pbVar5 + 2;
            pbVar3 = pbVar3 + 2;
          } while (bVar1 != 0);
          iVar2 = 0;
LAB_00ae4fd7:
          if (iVar2 == 0) {
            cVar10 = '\x02';
          }
        }
      }
      iVar12 = iVar12 + 1;
      iVar2 = FUN_00a80ed0(param_3);
      cVar11 = cVar10;
    } while (iVar12 < iVar2);
  }
  if (param_2 != (int *)0x0) {
    iVar2 = param_2[1];
    if (iVar2 != 0) {
      if (local_11 != '\0') {
        iVar12 = FUN_00aa0270(iVar2,0x52,0xffffffff);
        if ((-1 < iVar12) && (iVar12 = FUN_00aa0290(iVar2,iVar12), iVar12 != 0)) {
          local_10 = FUN_00acd7a0(iVar12);
        }
        if ((local_11 == '\x02') && (local_10 == 0)) {
          uVar15 = 0xa6;
          uVar14 = 0x7b;
          goto LAB_00ae519d;
        }
      }
      if (((cVar10 == '\0') || (local_10 != 0)) && (cVar10 != '\x02')) {
LAB_00ae50d9:
        piVar6 = (int *)FUN_00a8dea0();
        if (piVar6 == (int *)0x0) goto LAB_00ae5155;
        if (local_c == 0) {
LAB_00ae511f:
          piVar6[2] = local_8;
          piVar6[1] = local_4;
          *piVar6 = local_10;
          return piVar6;
        }
        local_4 = FUN_00a81010();
        if (((local_4 != 0) && (puVar7 = (undefined4 *)FUN_00a8cb80(), puVar7 != (undefined4 *)0x0))
           && (iVar2 = FUN_00a80df0(local_4,puVar7), iVar2 != 0)) {
          *puVar7 = 4;
          puVar7[1] = local_c;
          goto LAB_00ae511f;
        }
        uVar15 = 0xbe;
        uVar14 = 0x41;
      }
      else {
        uVar14 = FUN_00a82a40(iVar2);
        local_c = FUN_00a88de0(uVar14);
        uVar14 = FUN_00a925b0(iVar2);
        local_8 = FUN_00a911d0(uVar14);
        if ((local_c != 0) && (local_8 != 0)) goto LAB_00ae50d9;
        uVar15 = 0xb1;
        uVar14 = 0x7a;
      }
      FUN_00a7f3c0(0x22,0x77,uVar14,".\\crypto\\x509v3\\v3_akey.c",uVar15);
LAB_00ae5155:
      FUN_00a88dc0(local_c);
      FUN_00a90d80(local_8);
      FUN_00a90d80(local_10);
      return (int *)0x0;
    }
    if (*param_2 == 1) {
      piVar6 = (int *)FUN_00a8dea0();
      return piVar6;
    }
  }
  uVar15 = 0x99;
  uVar14 = 0x79;
LAB_00ae519d:
  FUN_00a7f3c0(0x22,0x77,uVar14,".\\crypto\\x509v3\\v3_akey.c",uVar15);
  return (int *)0x0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00ae52a0(int param_1,undefined4 param_2,undefined4 param_3)

{
  byte bVar1;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  byte *pbVar5;
  byte *pbVar6;
  byte *pbVar7;
  int iVar8;
  undefined4 *puVar9;
  bool bVar10;
  
  iVar2 = FUN_00a90d30(3);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x22,0x65,0x41,".\\crypto\\x509v3\\v3_bitst.c",0x71);
    return 0;
  }
  iVar8 = 0;
  iVar3 = FUN_00a80ed0(param_3);
  if (0 < iVar3) {
    do {
      puVar4 = (undefined4 *)FUN_00a80ee0(param_3,iVar8);
      puVar9 = *(undefined4 **)(param_1 + 0x34);
      pbVar5 = (byte *)puVar9[1];
      if (pbVar5 != (byte *)0x0) {
        do {
          pbVar6 = (byte *)puVar9[2];
          pbVar7 = (byte *)puVar4[1];
          do {
            bVar1 = *pbVar6;
            bVar10 = bVar1 < *pbVar7;
            if (bVar1 != *pbVar7) {
LAB_00ae5345:
              iVar3 = (1 - (uint)bVar10) - (uint)(bVar10 != 0);
              goto LAB_00ae534a;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar6[1];
            bVar10 = bVar1 < pbVar7[1];
            if (bVar1 != pbVar7[1]) goto LAB_00ae5345;
            pbVar6 = pbVar6 + 2;
            pbVar7 = pbVar7 + 2;
          } while (bVar1 != 0);
          iVar3 = 0;
LAB_00ae534a:
          pbVar6 = (byte *)puVar4[1];
          if (iVar3 == 0) {
LAB_00ae5385:
            iVar3 = FUN_00a9df00(iVar2,*puVar9,1);
            if (iVar3 == 0) {
              FUN_00a7f3c0(0x22,0x65,0x41,".\\crypto\\x509v3\\v3_bitst.c",0x7b);
              FUN_00a90d80(iVar2);
              return 0;
            }
            break;
          }
          do {
            bVar1 = *pbVar5;
            bVar10 = bVar1 < *pbVar6;
            if (bVar1 != *pbVar6) {
LAB_00ae5370:
              iVar3 = (1 - (uint)bVar10) - (uint)(bVar10 != 0);
              goto LAB_00ae5375;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar5[1];
            bVar10 = bVar1 < pbVar6[1];
            if (bVar1 != pbVar6[1]) goto LAB_00ae5370;
            pbVar5 = pbVar5 + 2;
            pbVar6 = pbVar6 + 2;
          } while (bVar1 != 0);
          iVar3 = 0;
LAB_00ae5375:
          if (iVar3 == 0) goto LAB_00ae5385;
          pbVar5 = (byte *)puVar9[4];
          puVar9 = puVar9 + 3;
        } while (pbVar5 != (byte *)0x0);
      }
      if (puVar9[1] == 0) {
        FUN_00a7f3c0(0x22,0x65,0x6f,".\\crypto\\x509v3\\v3_bitst.c",0x84);
        FUN_00a7f690(6,"section:",*puVar4,",name:",puVar4[1],",value:",puVar4[2]);
        FUN_00a90d80(iVar2);
        return 0;
      }
      iVar8 = iVar8 + 1;
      iVar3 = FUN_00a80ed0(param_3);
    } while (iVar8 < iVar3);
  }
  return iVar2;
}



undefined4
FUN_00ae52db(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,undefined4 param_5
            ,undefined4 param_6)

{
  byte bVar1;
  int iVar2;
  undefined4 *puVar3;
  byte *pbVar4;
  byte *pbVar5;
  byte *pbVar6;
  int iVar7;
  undefined4 *puVar8;
  undefined4 unaff_EDI;
  bool bVar9;
  
  iVar7 = 0;
  iVar2 = FUN_00a80ed0(param_6);
  if (0 < iVar2) {
    do {
      puVar3 = (undefined4 *)FUN_00a80ee0(param_6,iVar7);
      puVar8 = *(undefined4 **)(param_4 + 0x34);
      pbVar4 = (byte *)puVar8[1];
      if (pbVar4 != (byte *)0x0) {
        do {
          pbVar5 = (byte *)puVar8[2];
          pbVar6 = (byte *)puVar3[1];
          do {
            bVar1 = *pbVar5;
            bVar9 = bVar1 < *pbVar6;
            if (bVar1 != *pbVar6) {
LAB_00ae5345:
              iVar2 = (1 - (uint)bVar9) - (uint)(bVar9 != 0);
              goto LAB_00ae534a;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar5[1];
            bVar9 = bVar1 < pbVar6[1];
            if (bVar1 != pbVar6[1]) goto LAB_00ae5345;
            pbVar5 = pbVar5 + 2;
            pbVar6 = pbVar6 + 2;
          } while (bVar1 != 0);
          iVar2 = 0;
LAB_00ae534a:
          pbVar5 = (byte *)puVar3[1];
          if (iVar2 == 0) {
LAB_00ae5385:
            iVar2 = FUN_00a9df00(param_1,*puVar8,1);
            if (iVar2 == 0) {
              FUN_00a7f3c0(0x22,0x65,0x41,".\\crypto\\x509v3\\v3_bitst.c",0x7b);
              FUN_00a90d80(param_1);
              return 0;
            }
            break;
          }
          do {
            bVar1 = *pbVar4;
            bVar9 = bVar1 < *pbVar5;
            if (bVar1 != *pbVar5) {
LAB_00ae5370:
              iVar2 = (1 - (uint)bVar9) - (uint)(bVar9 != 0);
              goto LAB_00ae5375;
            }
            if (bVar1 == 0) break;
            bVar1 = pbVar4[1];
            bVar9 = bVar1 < pbVar5[1];
            if (bVar1 != pbVar5[1]) goto LAB_00ae5370;
            pbVar4 = pbVar4 + 2;
            pbVar5 = pbVar5 + 2;
          } while (bVar1 != 0);
          iVar2 = 0;
LAB_00ae5375:
          if (iVar2 == 0) goto LAB_00ae5385;
          pbVar4 = (byte *)puVar8[4];
          puVar8 = puVar8 + 3;
        } while (pbVar4 != (byte *)0x0);
      }
      if (puVar8[1] == 0) {
        FUN_00a7f3c0(0x22,0x65,0x6f,".\\crypto\\x509v3\\v3_bitst.c",0x84);
        FUN_00a7f690(6,"section:",*puVar3,",name:",puVar3[1],",value:",puVar3[2]);
        FUN_00a90d80(param_1);
        return 0;
      }
      iVar7 = iVar7 + 1;
      iVar2 = FUN_00a80ed0(param_6);
      unaff_EDI = param_1;
    } while (iVar7 < iVar2);
  }
  return unaff_EDI;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 * FUN_00ae5460(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 local_4;
  
  local_4 = 0xae546a;
  puVar1 = (undefined4 *)FUN_00a90d30(4);
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(0x22,0x70,0x41,".\\crypto\\x509v3\\v3_skey.c",0x56);
    return (undefined4 *)0x0;
  }
  iVar2 = FUN_00aa0ad0(param_3,&local_4);
  puVar1[2] = iVar2;
  if (iVar2 == 0) {
    FUN_00a90d80(puVar1);
    return (undefined4 *)0x0;
  }
  *puVar1 = local_4;
  return puVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ae54d0(undefined4 param_1,int *param_2,byte *param_3)

{
  byte bVar1;
  undefined4 *puVar2;
  byte *pbVar3;
  int iVar4;
  int iVar5;
  byte *pbVar6;
  bool bVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 local_48;
  undefined local_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_48;
  pbVar6 = &DAT_00dc7210;
  pbVar3 = param_3;
  do {
    bVar1 = *pbVar3;
    bVar7 = bVar1 < *pbVar6;
    if (bVar1 != *pbVar6) {
LAB_00ae5516:
      iVar4 = (1 - (uint)bVar7) - (uint)(bVar7 != 0);
      goto LAB_00ae551b;
    }
    if (bVar1 == 0) break;
    bVar1 = pbVar3[1];
    bVar7 = bVar1 < pbVar6[1];
    if (bVar1 != pbVar6[1]) goto LAB_00ae5516;
    pbVar3 = pbVar3 + 2;
    pbVar6 = pbVar6 + 2;
  } while (bVar1 != 0);
  iVar4 = 0;
LAB_00ae551b:
  if (iVar4 != 0) {
    FUN_00ae5460(param_1,param_2,param_3);
    ___security_check_cookie_4();
    return;
  }
  iVar4 = FUN_00a90d30(4);
  if (iVar4 == 0) {
    FUN_00a7f3c0(0x22,0x73,0x41,".\\crypto\\x509v3\\v3_skey.c",0x70);
    ___security_check_cookie_4();
    return;
  }
  if (param_2 == (int *)0x0) {
LAB_00ae5612:
    uVar9 = 0x77;
LAB_00ae5614:
    uVar8 = 0x72;
LAB_00ae561b:
    FUN_00a7f3c0(0x22,0x73,uVar8,".\\crypto\\x509v3\\v3_skey.c",uVar9);
  }
  else {
    if (*param_2 == 1) goto LAB_00ae5632;
    if ((int *)param_2[3] == (int *)0x0) {
      if (param_2[2] == 0) goto LAB_00ae5612;
      iVar5 = *(int *)(*(int *)param_2[2] + 0x18);
    }
    else {
      iVar5 = *(int *)(*(int *)param_2[3] + 0x14);
    }
    puVar2 = *(undefined4 **)(iVar5 + 4);
    if (puVar2 == (undefined4 *)0x0) {
      uVar9 = 0x80;
      goto LAB_00ae5614;
    }
    uVar9 = FUN_00a924c0(0);
    iVar5 = FUN_00a91830(puVar2[2],*puVar2,local_44,&local_48,uVar9);
    if (iVar5 != 0) {
      iVar5 = FUN_00a90c30(iVar4,local_44,local_48);
      if (iVar5 != 0) {
        ___security_check_cookie_4();
        return;
      }
      uVar9 = 0x88;
      uVar8 = 0x41;
      goto LAB_00ae561b;
    }
  }
  FUN_00a90d80(iVar4);
LAB_00ae5632:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ae5740(undefined4 *param_1,undefined4 *param_2,int param_3,undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 *puVar5;
  
  puVar1 = param_1;
  iVar4 = param_3 + -1;
  param_1[param_3 * 2 + -1] = 0;
  *param_1 = 0;
  puVar3 = param_1 + 1;
  puVar5 = param_2;
  if (0 < iVar4) {
    puVar5 = param_2 + 1;
    uVar2 = FUN_00acaf70(puVar3,puVar5,iVar4,*param_2);
    puVar3[iVar4] = uVar2;
    puVar3 = param_1 + 3;
  }
  if (param_3 != 2 && -1 < param_3 + -2) {
    param_1 = (undefined4 *)(param_3 + -2);
    do {
      uVar2 = *puVar5;
      param_1 = (undefined4 *)((int)param_1 + -1);
      puVar5 = puVar5 + 1;
      iVar4 = iVar4 + -1;
      uVar2 = FUN_00acac80(puVar3,puVar5,iVar4,uVar2);
      puVar3[iVar4] = uVar2;
      puVar3 = puVar3 + 2;
    } while (0 < (int)param_1);
  }
  FUN_00acb290(puVar1,puVar1,puVar1,param_3 * 2);
  FUN_00acb130(param_4,param_2,param_3);
  FUN_00acb290(puVar1,puVar1,param_4,param_3 * 2);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ae5800(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uint *puVar6;
  int iVar7;
  void *_Dst;
  bool bVar8;
  
  iVar7 = param_3 / 2;
  if (param_3 == 4) {
    FUN_00ae6e00(param_1,param_2);
    return;
  }
  if (param_3 != 8) {
    if (0xf < param_3) {
      iVar3 = param_2 + iVar7 * 4;
      iVar1 = FUN_00a9b070(param_2,iVar3,iVar7);
      bVar8 = -1 < iVar1;
      if (iVar1 < 1) {
        if (!bVar8) {
          FUN_00acb450(param_4,iVar3,param_2,iVar7);
        }
      }
      else {
        FUN_00acb450(param_4,param_2,iVar3,iVar7);
        bVar8 = false;
      }
      iVar1 = param_4 + param_3 * 8;
      if (bVar8) {
        _Dst = (void *)(param_4 + param_3 * 4);
        _memset(_Dst,0,param_3 * 4);
      }
      else {
        _Dst = (void *)(param_4 + param_3 * 4);
        FUN_00ae5800(_Dst,param_4,iVar7,iVar1);
      }
      FUN_00ae5800(param_1,param_2,iVar7,iVar1);
      iVar1 = param_1 + param_3 * 4;
      FUN_00ae5800(iVar1,iVar3,iVar7,param_4 + param_3 * 8);
      iVar1 = FUN_00acb290(param_4,param_1,iVar1,param_3);
      iVar2 = FUN_00acb450(_Dst,param_4,_Dst,param_3);
      iVar3 = param_1 + iVar7 * 4;
      iVar3 = FUN_00acb290(iVar3,iVar3,_Dst,param_3);
      uVar5 = (iVar1 - iVar2) + iVar3;
      if (uVar5 != 0) {
        puVar6 = (uint *)(param_1 + (iVar7 + param_3) * 4);
        uVar4 = *(int *)(param_1 + (iVar7 + param_3) * 4) + uVar5;
        *puVar6 = uVar4;
        if (uVar4 < uVar5) {
          do {
            uVar5 = puVar6[1];
            puVar6 = puVar6 + 1;
            *puVar6 = uVar5 + 1;
          } while (uVar5 + 1 == 0);
        }
      }
      return;
    }
    FUN_00ae5740(param_1,param_2,param_3,param_4);
    return;
  }
  FUN_00ae6ad0(param_1,param_2);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ae59a0(int *param_1,int *param_2,undefined4 param_3)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  char cVar4;
  int *piVar5;
  int *piVar6;
  int iVar7;
  int *piVar8;
  undefined *puVar9;
  undefined4 local_84;
  undefined local_80 [124];
  undefined4 uStack_4;
  
  uStack_4 = 0xae59aa;
  iVar1 = param_2[1];
  local_84 = 0;
  if (iVar1 < 1) {
    param_1[1] = 0;
    return 1;
  }
  FUN_00aa4a50(param_3);
  piVar5 = param_1;
  if (param_2 == param_1) {
    piVar5 = (int *)FUN_00aa4ae0(param_3);
  }
  piVar6 = (int *)FUN_00aa4ae0(param_3);
  if ((piVar5 == (int *)0x0) || (piVar6 == (int *)0x0)) goto LAB_00ae5b38;
  iVar3 = iVar1 * 2;
  piVar8 = piVar5;
  if (piVar5[2] < iVar3) {
    piVar8 = (int *)FUN_00a9ab60(piVar5,iVar3);
  }
  if (piVar8 == (int *)0x0) goto LAB_00ae5b38;
  if (iVar1 == 4) {
    FUN_00ae6e00(*piVar5,*param_2);
  }
  else if (iVar1 == 8) {
    FUN_00ae6ad0(*piVar5,*param_2);
  }
  else {
    if (iVar1 < 0x10) {
      puVar9 = local_80;
    }
    else {
      cVar4 = FUN_00a9a8d0(iVar1);
      iVar7 = 1 << (cVar4 - 1U & 0x1f);
      if (iVar1 == iVar7) {
        iVar7 = iVar7 << 2;
        piVar8 = piVar6;
        if (piVar6[2] < iVar7) {
          piVar8 = (int *)FUN_00a9ab60(piVar6,iVar7);
        }
        if (piVar8 == (int *)0x0) goto LAB_00ae5b38;
        FUN_00ae5800(*piVar5,*param_2,iVar1,*piVar6);
        goto LAB_00ae5af2;
      }
      piVar8 = piVar6;
      if (piVar6[2] < iVar3) {
        piVar8 = (int *)FUN_00a9ab60(piVar6,iVar3);
      }
      if (piVar8 == (int *)0x0) goto LAB_00ae5b38;
      puVar9 = (undefined *)*piVar6;
    }
    FUN_00ae5740(*piVar5,*param_2,iVar1,puVar9);
  }
LAB_00ae5af2:
  piVar5[3] = 0;
  uVar2 = *(uint *)(*param_2 + -4 + iVar1 * 4);
  if (uVar2 == (uVar2 & 0xffff)) {
    piVar5[1] = iVar3 + -1;
  }
  else {
    piVar5[1] = iVar3;
  }
  if (piVar5 != param_1) {
    FUN_00a9aba0(param_1,piVar5);
  }
  local_84 = 1;
LAB_00ae5b38:
  FUN_00aa4aa0(param_3);
  return local_84;
}



void FUN_00ae5b60(int param_1)

{
  FUN_00a9a9f0(param_1);
  FUN_00a9a9f0(param_1 + 0x14);
  *(undefined4 *)(param_1 + 0x28) = 0;
  *(undefined4 *)(param_1 + 0x30) = 0;
  return;
}



void FUN_00ae5b90(int param_1)

{
  if (param_1 != 0) {
    FUN_00a9a9b0(param_1);
    FUN_00a9a9b0(param_1 + 0x14);
    if ((*(byte *)(param_1 + 0x30) & 1) != 0) {
      FUN_00a85120(param_1);
    }
  }
  return;
}



undefined4 FUN_00ae5bc0(int param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_00a9aba0(param_1,param_2);
  if (iVar1 == 0) {
    return 0;
  }
  FUN_00a9ac50(param_1 + 0x14,0);
  uVar2 = FUN_00a9a920(param_2);
  *(undefined4 *)(param_1 + 0x28) = uVar2;
  *(undefined4 *)(param_1 + 0x2c) = 0;
  return 1;
}



undefined4 FUN_00ae5c10(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  
  uVar3 = 0xffffffff;
  FUN_00aa4a50(param_4);
  iVar1 = FUN_00aa4ae0(param_4);
  if (((iVar1 != 0) && (iVar2 = FUN_00a9af00(iVar1,param_3), iVar2 != 0)) &&
     (iVar1 = FUN_00ad26e0(param_1,0,iVar1,param_2,param_4), iVar1 != 0)) {
    uVar3 = param_3;
  }
  FUN_00aa4aa0(param_4);
  return uVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ae5c70(int param_1,int param_2,int param_3,int param_4,undefined4 param_5)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 local_4;
  
  local_4 = 0;
  FUN_00aa4a50(param_5);
  iVar1 = FUN_00aa4ae0(param_5);
  iVar2 = FUN_00aa4ae0(param_5);
  if (param_1 == 0) {
    param_1 = FUN_00aa4ae0(param_5);
  }
  if (param_2 == 0) {
    param_2 = FUN_00aa4ae0(param_5);
  }
  if ((((iVar1 != 0) && (iVar2 != 0)) && (param_1 != 0)) && (param_2 != 0)) {
    iVar3 = FUN_00a9ae10(param_3,param_4);
    if (iVar3 < 0) {
      FUN_00a9ac50(param_1,0);
      iVar1 = FUN_00a9aba0(param_2,param_3);
      if (iVar1 == 0) {
        return 0;
      }
      FUN_00aa4aa0(param_5);
      return 1;
    }
    iVar4 = FUN_00a9a920(param_3);
    iVar3 = *(int *)(param_4 + 0x28) * 2;
    if (iVar4 < iVar3) {
      iVar4 = iVar3;
    }
    if (iVar4 != *(int *)(param_4 + 0x2c)) {
      uVar5 = FUN_00ae5c10(param_4 + 0x14,param_4,iVar4,param_5);
      *(undefined4 *)(param_4 + 0x2c) = uVar5;
    }
    if (((*(int *)(param_4 + 0x2c) != -1) &&
        (iVar3 = FUN_00a9bc70(iVar1,param_3,*(undefined4 *)(param_4 + 0x28)), iVar3 != 0)) &&
       ((iVar1 = FUN_00ad2400(iVar2,iVar1,param_4 + 0x14,param_5), iVar1 != 0 &&
        (iVar1 = FUN_00a9bc70(param_1,iVar2,iVar4 - *(int *)(param_4 + 0x28)), iVar1 != 0)))) {
      *(undefined4 *)(param_1 + 0xc) = 0;
      iVar1 = FUN_00ad2400(iVar2,param_4,param_1,param_5);
      if ((iVar1 != 0) && (iVar1 = FUN_00ad15d0(param_2,param_3,iVar2), iVar1 != 0)) {
        *(undefined4 *)(param_2 + 0xc) = 0;
        iVar2 = FUN_00a9ae10(param_2,param_4);
        iVar1 = 0;
        while (-1 < iVar2) {
          if (2 < iVar1) {
            FUN_00a7f3c0(3,0x82,0x65,".\\crypto\\bn\\bn_recp.c",0xc2);
            goto LAB_00ae5ea1;
          }
          iVar2 = FUN_00ad15d0(param_2,param_2,param_4);
          if ((iVar2 == 0) || (iVar2 = FUN_00a9b7f0(param_1,1), iVar2 == 0)) goto LAB_00ae5ea1;
          iVar2 = FUN_00a9ae10(param_2,param_4);
          iVar1 = iVar1 + 1;
        }
        if (*(int *)(param_2 + 4) == 0) {
          uVar5 = 0;
        }
        else {
          uVar5 = *(undefined4 *)(param_3 + 0xc);
        }
        *(undefined4 *)(param_2 + 0xc) = uVar5;
        local_4 = 1;
        *(uint *)(param_1 + 0xc) = *(uint *)(param_3 + 0xc) ^ *(uint *)(param_4 + 0xc);
      }
    }
  }
LAB_00ae5ea1:
  FUN_00aa4aa0(param_5);
  return local_4;
}



undefined4
FUN_00ae5ec0(undefined4 param_1,int param_2,int param_3,undefined4 param_4,undefined4 param_5)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  
  uVar3 = 0;
  FUN_00aa4a50(param_5);
  iVar1 = FUN_00aa4ae0(param_5);
  if (iVar1 != 0) {
    if (param_3 != 0) {
      if (param_2 == param_3) {
        iVar2 = FUN_00ae59a0(iVar1,param_2);
      }
      else {
        iVar2 = FUN_00ad2400(iVar1,param_2,param_3,param_5);
      }
      param_2 = iVar1;
      if (iVar2 == 0) goto LAB_00ae5f28;
    }
    uVar3 = FUN_00ae5c70(0,param_1,param_2,param_4,param_5);
  }
LAB_00ae5f28:
  FUN_00aa4aa0(param_5);
  return uVar3;
}



// WARNING: Unable to track spacebase fully for stack

undefined4 FUN_00ae5f40(int param_1,int param_2,int param_3,int param_4,int *param_5,uint param_6)

{
  uint *puVar1;
  uint *puVar2;
  bool bVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  int iVar14;
  int *piVar15;
  uint *puVar16;
  bool bVar17;
  ulonglong uVar18;
  longlong lVar19;
  ulonglong uVar20;
  ulonglong uVar21;
  ulonglong uVar22;
  undefined auStack_38 [8];
  undefined auStack_30 [32];
  
  uVar4 = 0;
  if (3 < (int)param_6) {
    iVar5 = (param_6 + 2) * -4 + -0x30;
    piVar15 = (int *)((uint)(auStack_30 +
                            ((-((uint)(auStack_30 + (iVar5 - (int)&param_2) + 0x30) & 0x7ff) + iVar5
                             ) - (((uint)&param_2 ^
                                  (uint)(auStack_30 +
                                        -((uint)(auStack_30 + (iVar5 - (int)&param_2) + 0x30) &
                                         0x7ff) + iVar5 + 0x30)) & 0x800 ^ 0x800)) + 0x30) &
                     0xffffffc0);
    iVar5 = *param_5;
    piVar15[1] = param_1;
    piVar15[2] = param_2;
    piVar15[3] = param_3;
    piVar15[4] = param_4;
    piVar15[5] = iVar5;
    iVar5 = param_6 - 1;
    piVar15[6] = (int)&stack0xfffffff0;
    if ((DAT_032f16d0 >> 0x1a & 1) == 0) {
      puVar16 = (uint *)piVar15[2];
      puVar1 = (uint *)piVar15[3];
      uVar12 = *puVar1;
      if ((param_6 & 1 | (int)puVar16 - (int)puVar1) == 0) {
        *piVar15 = iVar5;
        piVar15[3] = 0;
        uVar10 = (uint)((ulonglong)uVar12 * (ulonglong)uVar12 >> 0x20);
        piVar15[8] = (int)((ulonglong)uVar12 * (ulonglong)uVar12);
        uVar9 = uVar10 >> 1;
        uVar10 = uVar10 & 1;
        iVar5 = 1;
        do {
          iVar6 = iVar5;
          lVar19 = (ulonglong)puVar16[iVar6] * (ulonglong)uVar12 + (ulonglong)uVar9;
          iVar14 = (int)lVar19;
          iVar5 = iVar6 + 1;
          uVar9 = (uint)((ulonglong)lVar19 >> 0x20);
          iVar8 = uVar10 + iVar14 * 2;
          uVar10 = -(iVar14 >> 0x1f);
          iVar14 = *piVar15;
          piVar15[iVar6 + 8] = iVar8;
        } while (iVar5 < iVar14);
        lVar19 = (ulonglong)puVar16[iVar5] * (ulonglong)uVar12 + (ulonglong)uVar9;
        iVar8 = (int)lVar19;
        uVar9 = (uint)((ulonglong)lVar19 >> 0x20);
        puVar16 = (uint *)piVar15[4];
        uVar13 = piVar15[5] * piVar15[8];
        piVar15[iVar6 + 9] = uVar10 + iVar8 * 2;
        uVar12 = *puVar16;
        piVar15[iVar6 + 10] = uVar9 * 2 - (iVar8 >> 0x1f);
        piVar15[iVar6 + 0xb] = uVar9 >> 0x1f;
        uVar10 = (int)((ulonglong)uVar12 * (ulonglong)uVar13 >> 0x20) +
                 (uint)CARRY4((uint)((ulonglong)uVar12 * (ulonglong)uVar13),piVar15[8]);
        uVar12 = puVar16[1];
        iVar8 = 1;
        while( true ) {
          do {
            lVar19 = (ulonglong)uVar12 * (ulonglong)uVar13 +
                     (ulonglong)
                     CONCAT14(CARRY4(uVar10,piVar15[iVar8 + 8]),uVar10 + piVar15[iVar8 + 8]);
            uVar12 = puVar16[iVar8 + 1];
            uVar10 = (uint)((ulonglong)lVar19 >> 0x20);
            piVar15[iVar8 + 7] = (int)lVar19;
            iVar14 = iVar8 + 2;
            lVar19 = (ulonglong)uVar12 * (ulonglong)uVar13 +
                     (ulonglong)
                     CONCAT14(CARRY4(uVar10,piVar15[iVar8 + 9]),uVar10 + piVar15[iVar8 + 9]);
            uVar12 = puVar16[iVar14];
            uVar10 = (uint)((ulonglong)lVar19 >> 0x20);
            piVar15[iVar8 + 8] = (int)lVar19;
            iVar8 = iVar14;
          } while (iVar14 < iVar5);
          lVar19 = (ulonglong)uVar12 * (ulonglong)uVar13 +
                   (ulonglong)
                   CONCAT14(CARRY4(uVar10,piVar15[iVar5 + 8]),uVar10 + piVar15[iVar5 + 8]);
          uVar12 = (uint)((ulonglong)lVar19 >> 0x20);
          piVar15[iVar5 + 7] = (int)lVar19;
          iVar8 = piVar15[3];
          iVar14 = piVar15[2];
          piVar15[iVar5 + 8] = uVar12 + piVar15[iVar5 + 9];
          piVar15[iVar5 + 9] = piVar15[iVar5 + 10] + (uint)CARRY4(uVar12,piVar15[iVar5 + 9]);
          if (iVar8 == iVar5) break;
          uVar12 = *(uint *)(iVar14 + 4 + iVar8 * 4);
          piVar15[3] = iVar8 + 1;
          uVar10 = (uint)((ulonglong)uVar12 * (ulonglong)uVar12);
          uVar9 = (int)((ulonglong)uVar12 * (ulonglong)uVar12 >> 0x20) +
                  (uint)CARRY4(uVar10,piVar15[iVar8 + 9]);
          piVar15[iVar8 + 9] = uVar10 + piVar15[iVar8 + 9];
          iVar7 = 0;
          iVar6 = iVar8 + 2;
          if (iVar8 + 1 != iVar5) {
            uVar13 = uVar9 >> 1;
            uVar10 = uVar9 & 1;
            iVar5 = iVar6;
            do {
              lVar19 = (ulonglong)*(uint *)(iVar14 + iVar5 * 4) * (ulonglong)uVar12 +
                       (ulonglong)uVar13;
              iVar8 = (int)lVar19;
              uVar9 = iVar8 * 2;
              uVar13 = (uint)((ulonglong)lVar19 >> 0x20);
              uVar11 = uVar9 + piVar15[iVar5 + 8];
              iVar6 = iVar5 + 1;
              iVar7 = uVar11 + uVar10;
              uVar10 = ((uint)CARRY4(uVar9,piVar15[iVar5 + 8]) - (iVar8 >> 0x1f)) +
                       (uint)CARRY4(uVar11,uVar10);
              iVar8 = *piVar15;
              piVar15[iVar5 + 8] = iVar7;
              iVar5 = iVar6;
            } while (iVar6 <= iVar8);
            uVar9 = uVar13 * 2 + uVar10;
            iVar7 = (uint)CARRY4(uVar13 * 2,uVar10) - ((int)uVar13 >> 0x1f);
          }
          puVar16 = (uint *)piVar15[4];
          uVar13 = piVar15[5] * piVar15[8];
          uVar12 = piVar15[iVar6 + 8];
          uVar10 = *puVar16;
          piVar15[iVar6 + 8] = uVar9 + piVar15[iVar6 + 8];
          piVar15[iVar6 + 9] = iVar7 + (uint)CARRY4(uVar9,uVar12);
          iVar5 = iVar6 + -1;
          uVar10 = (int)((ulonglong)uVar10 * (ulonglong)uVar13 >> 0x20) +
                   (uint)CARRY4((uint)((ulonglong)uVar10 * (ulonglong)uVar13),piVar15[8]);
          iVar8 = 1;
          uVar12 = puVar16[1];
        }
      }
      else {
        piVar15[7] = (int)(puVar1 + param_6);
        uVar10 = *puVar16;
        uVar9 = 0;
        iVar8 = 0;
        do {
          lVar19 = (ulonglong)uVar10 * (ulonglong)uVar12 + (ulonglong)uVar9;
          iVar14 = iVar8 + 1;
          uVar9 = (uint)((ulonglong)lVar19 >> 0x20);
          uVar10 = puVar16[iVar14];
          piVar15[iVar8 + 8] = (int)lVar19;
          iVar8 = iVar14;
        } while (iVar14 < iVar5);
        lVar19 = (ulonglong)uVar10 * (ulonglong)uVar12 + (ulonglong)uVar9;
        puVar16 = (uint *)piVar15[4];
        uVar9 = piVar15[5] * piVar15[8];
        piVar15[param_6 + 7] = (int)lVar19;
        piVar15[param_6 + 8] = (int)((ulonglong)lVar19 >> 0x20);
        piVar15[param_6 + 9] = 0;
        uVar12 = puVar16[1];
        uVar10 = (int)((ulonglong)*puVar16 * (ulonglong)uVar9 >> 0x20) +
                 (uint)CARRY4((uint)((ulonglong)*puVar16 * (ulonglong)uVar9),piVar15[8]);
        iVar8 = 1;
        while( true ) {
          do {
            iVar14 = iVar8 + 1;
            lVar19 = (ulonglong)uVar12 * (ulonglong)uVar9 +
                     (ulonglong)
                     CONCAT14(CARRY4(uVar10,piVar15[iVar8 + 8]),uVar10 + piVar15[iVar8 + 8]);
            uVar12 = puVar16[iVar14];
            uVar10 = (uint)((ulonglong)lVar19 >> 0x20);
            piVar15[iVar8 + 7] = (int)lVar19;
            iVar8 = iVar14;
          } while (iVar14 < iVar5);
          lVar19 = (ulonglong)uVar12 * (ulonglong)uVar9 +
                   (ulonglong)
                   CONCAT14(CARRY4(uVar10,piVar15[param_6 + 7]),uVar10 + piVar15[param_6 + 7]);
          uVar12 = (uint)((ulonglong)lVar19 >> 0x20);
          piVar15[param_6 + 6] = (int)lVar19;
          puVar16 = (uint *)(piVar15[3] + 4);
          piVar15[param_6 + 7] = uVar12 + piVar15[param_6 + 8];
          puVar1 = (uint *)piVar15[7];
          piVar15[param_6 + 8] = piVar15[param_6 + 9] + (uint)CARRY4(uVar12,piVar15[param_6 + 8]);
          if (puVar16 == puVar1) break;
          uVar12 = *puVar16;
          puVar1 = (uint *)piVar15[2];
          piVar15[3] = (int)puVar16;
          uVar13 = 0;
          uVar10 = *puVar1;
          iVar8 = 0;
          do {
            iVar14 = iVar8 + 1;
            lVar19 = (ulonglong)uVar10 * (ulonglong)uVar12 +
                     (ulonglong)
                     CONCAT14(CARRY4(uVar13,piVar15[iVar8 + 8]),uVar13 + piVar15[iVar8 + 8]);
            uVar10 = puVar1[iVar14];
            uVar13 = (uint)((ulonglong)lVar19 >> 0x20);
            piVar15[iVar8 + 8] = (int)lVar19;
            iVar8 = iVar14;
          } while (iVar14 < iVar5);
          lVar19 = (ulonglong)uVar10 * (ulonglong)uVar12;
          uVar12 = (uint)lVar19;
          uVar10 = uVar12 + piVar15[param_6 + 7];
          puVar16 = (uint *)piVar15[4];
          uVar11 = (int)((ulonglong)lVar19 >> 0x20) + (uint)CARRY4(uVar12,piVar15[param_6 + 7]) +
                   (uint)CARRY4(uVar13,uVar10);
          uVar9 = piVar15[5] * piVar15[8];
          uVar12 = piVar15[param_6 + 8];
          piVar15[param_6 + 7] = uVar13 + uVar10;
          uVar10 = *puVar16;
          piVar15[param_6 + 8] = uVar11 + piVar15[param_6 + 8];
          piVar15[param_6 + 9] = (uint)CARRY4(uVar11,uVar12);
          uVar12 = puVar16[1];
          uVar10 = (int)((ulonglong)uVar10 * (ulonglong)uVar9 >> 0x20) +
                   (uint)CARRY4((uint)((ulonglong)uVar10 * (ulonglong)uVar9),piVar15[8]);
          iVar8 = 1;
        }
      }
    }
    else {
      puVar16 = (uint *)piVar15[2];
      puVar1 = (uint *)piVar15[3];
      puVar2 = (uint *)piVar15[4];
      uVar12 = *puVar1;
      uVar21 = (ulonglong)*puVar16 * (ulonglong)uVar12;
      uVar22 = (uVar21 & 0xffffffff) * (ulonglong)(uint)piVar15[5];
      uVar10 = puVar2[1];
      uVar9 = puVar16[1];
      uVar18 = uVar21 >> 0x20;
      uVar21 = (ulonglong)*puVar2 * (uVar22 & 0xffffffff) + (uVar21 & 0xffffffff) >> 0x20;
      iVar8 = 1;
      do {
        iVar14 = iVar8;
        uVar20 = (ulonglong)uVar10;
        uVar18 = uVar18 + (ulonglong)uVar9 * (ulonglong)uVar12;
        uVar10 = puVar2[iVar14 + 1];
        uVar21 = uVar21 + uVar20 * (uVar22 & 0xffffffff) + (uVar18 & 0xffffffff);
        uVar9 = puVar16[iVar14 + 1];
        uVar18 = uVar18 >> 0x20;
        piVar15[iVar14 + 7] = (int)uVar21;
        uVar21 = uVar21 >> 0x20;
        iVar8 = iVar14 + 1;
      } while (iVar14 + 1 < iVar5);
      uVar18 = uVar18 + (ulonglong)uVar9 * (ulonglong)uVar12;
      uVar21 = uVar21 + (ulonglong)uVar10 * (uVar22 & 0xffffffff) + (uVar18 & 0xffffffff);
      piVar15[iVar14 + 8] = (int)uVar21;
      *(ulonglong *)(piVar15 + param_6 + 7) = (uVar21 >> 0x20) + (uVar18 >> 0x20);
      iVar8 = 1;
      do {
        uVar12 = puVar1[iVar8];
        uVar21 = (ulonglong)*puVar16 * (ulonglong)uVar12 + (ulonglong)(uint)piVar15[8];
        uVar22 = (uVar21 & 0xffffffff) * (ulonglong)(uint)piVar15[5];
        uVar10 = puVar2[1];
        uVar9 = puVar16[1];
        uVar18 = (ulonglong)*puVar2 * (uVar22 & 0xffffffff) + (uVar21 & 0xffffffff) >> 0x20;
        lVar19 = (uVar21 >> 0x20) + (ulonglong)(uint)piVar15[9];
        iVar14 = iVar5 + -1;
        iVar5 = 1;
        do {
          iVar6 = iVar5;
          uVar21 = (ulonglong)uVar10;
          uVar20 = lVar19 + (ulonglong)uVar9 * (ulonglong)uVar12;
          uVar10 = puVar2[iVar6 + 1];
          uVar18 = uVar18 + uVar21 * (uVar22 & 0xffffffff) + (uVar20 & 0xffffffff);
          uVar9 = puVar16[iVar6 + 1];
          piVar15[iVar6 + 7] = (int)uVar18;
          uVar18 = uVar18 >> 0x20;
          lVar19 = (uVar20 >> 0x20) + (ulonglong)(uint)piVar15[iVar6 + 9];
          iVar14 = iVar14 + -1;
          iVar5 = iVar6 + 1;
        } while (iVar14 != 0);
        uVar21 = lVar19 + (ulonglong)uVar9 * (ulonglong)uVar12;
        uVar18 = uVar18 + (ulonglong)uVar10 * (uVar22 & 0xffffffff) + (uVar21 & 0xffffffff);
        piVar15[iVar6 + 8] = (int)uVar18;
        *(ulonglong *)(piVar15 + iVar6 + 9) =
             (uVar18 >> 0x20) + (uVar21 >> 0x20) + (ulonglong)(uint)piVar15[iVar6 + 10];
        iVar8 = iVar8 + 1;
      } while (iVar8 <= iVar5);
    }
    iVar14 = piVar15[4];
    uVar12 = piVar15[1];
    uVar10 = piVar15[8];
    bVar17 = false;
    iVar8 = 0;
    iVar6 = iVar5;
    do {
      uVar9 = (uint)bVar17;
      uVar13 = uVar10 - *(uint *)(iVar14 + iVar8 * 4);
      bVar17 = uVar10 < *(uint *)(iVar14 + iVar8 * 4) || uVar13 < uVar9;
      *(uint *)(uVar12 + iVar8 * 4) = uVar13 - uVar9;
      iVar7 = iVar6 + -1;
      uVar10 = piVar15[iVar8 + 9];
      iVar8 = iVar8 + 1;
      bVar3 = 0 < iVar6;
      iVar6 = iVar7;
    } while (bVar3);
    do {
      *(undefined4 *)(uVar12 + iVar5 * 4) =
           *(undefined4 *)
            (((uint)(piVar15 + 8) & uVar10 - bVar17 | uVar12 & ~(uVar10 - bVar17)) + iVar5 * 4);
      piVar15[iVar5 + 8] = iVar7;
      bVar3 = 0 < iVar5;
      iVar5 = iVar5 + -1;
    } while (bVar3);
    uVar4 = 1;
  }
  return uVar4;
}



void FUN_00ae6540(undefined4 *param_1,uint *param_2,uint *param_3)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  uint uVar24;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  uint uVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  uint uVar32;
  uint uVar33;
  uint uVar34;
  uint uVar35;
  uint uVar36;
  uint uVar37;
  uint uVar38;
  
  uVar7 = (uint)((ulonglong)*param_2 * (ulonglong)*param_3 >> 0x20);
  uVar5 = *param_3;
  *param_1 = (int)((ulonglong)*param_2 * (ulonglong)*param_3);
  lVar2 = (ulonglong)param_2[1] * (ulonglong)uVar5;
  lVar3 = lVar2 + (ulonglong)uVar7;
  uVar6 = (uint)lVar3;
  uVar26 = (uint)((ulonglong)lVar3 >> 0x20);
  uVar8 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[1] >> 0x20);
  uVar4 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[1]);
  uVar1 = (uint)CARRY4(uVar6,uVar4);
  uVar28 = uVar26 + uVar8;
  uVar27 = uVar28 + uVar1;
  uVar5 = *param_3;
  uVar17 = (uint)CARRY4((uint)((ulonglong)lVar2 >> 0x20),(uint)CARRY4(uVar7,(uint)lVar2)) +
           (uint)(CARRY4(uVar26,uVar8) || CARRY4(uVar28,uVar1));
  param_1[1] = uVar6 + uVar4;
  uVar9 = (uint)((ulonglong)param_2[2] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[2] * (ulonglong)uVar5);
  uVar28 = uVar27 + uVar5;
  uVar1 = (uint)CARRY4(uVar27,uVar5);
  uVar6 = uVar17 + uVar9;
  uVar18 = uVar6 + uVar1;
  uVar27 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[1] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[1]);
  uVar29 = uVar28 + uVar5;
  uVar28 = (uint)CARRY4(uVar28,uVar5);
  uVar7 = uVar18 + uVar27;
  uVar19 = uVar7 + uVar28;
  uVar10 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[2] >> 0x20);
  uVar26 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[2]);
  uVar4 = (uint)CARRY4(uVar29,uVar26);
  uVar8 = uVar19 + uVar10;
  uVar20 = uVar8 + uVar4;
  uVar5 = *param_3;
  uVar10 = (uint)(CARRY4(uVar17,uVar9) || CARRY4(uVar6,uVar1)) +
           (uint)(CARRY4(uVar18,uVar27) || CARRY4(uVar7,uVar28)) +
           (uint)(CARRY4(uVar19,uVar10) || CARRY4(uVar8,uVar4));
  param_1[2] = uVar29 + uVar26;
  uVar29 = (uint)((ulonglong)param_2[3] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[3] * (ulonglong)uVar5);
  uVar28 = uVar20 + uVar5;
  uVar1 = (uint)CARRY4(uVar20,uVar5);
  uVar7 = uVar10 + uVar29;
  uVar17 = uVar7 + uVar1;
  uVar11 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[1] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[1]);
  uVar4 = uVar28 + uVar5;
  uVar28 = (uint)CARRY4(uVar28,uVar5);
  uVar8 = uVar17 + uVar11;
  uVar18 = uVar8 + uVar28;
  uVar12 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[2] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[2]);
  uVar21 = uVar4 + uVar5;
  uVar4 = (uint)CARRY4(uVar4,uVar5);
  uVar26 = uVar18 + uVar12;
  uVar19 = uVar26 + uVar4;
  uVar13 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[3] >> 0x20);
  uVar27 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[3]);
  uVar6 = (uint)CARRY4(uVar21,uVar27);
  uVar9 = uVar19 + uVar13;
  uVar20 = uVar9 + uVar6;
  uVar5 = *param_3;
  uVar13 = (uint)(CARRY4(uVar10,uVar29) || CARRY4(uVar7,uVar1)) +
           (uint)(CARRY4(uVar17,uVar11) || CARRY4(uVar8,uVar28)) +
           (uint)(CARRY4(uVar18,uVar12) || CARRY4(uVar26,uVar4)) +
           (uint)(CARRY4(uVar19,uVar13) || CARRY4(uVar9,uVar6));
  param_1[3] = uVar21 + uVar27;
  uVar19 = (uint)((ulonglong)param_2[4] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[4] * (ulonglong)uVar5);
  uVar28 = uVar20 + uVar5;
  uVar1 = (uint)CARRY4(uVar20,uVar5);
  uVar8 = uVar13 + uVar19;
  uVar21 = uVar8 + uVar1;
  uVar20 = (uint)((ulonglong)param_2[3] * (ulonglong)param_3[1] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[3] * (ulonglong)param_3[1]);
  uVar4 = uVar28 + uVar5;
  uVar28 = (uint)CARRY4(uVar28,uVar5);
  uVar26 = uVar21 + uVar20;
  uVar30 = uVar26 + uVar28;
  uVar29 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[2] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[2]);
  uVar6 = uVar4 + uVar5;
  uVar4 = (uint)CARRY4(uVar4,uVar5);
  uVar9 = uVar30 + uVar29;
  uVar31 = uVar9 + uVar4;
  uVar11 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[3] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[3]);
  uVar18 = uVar6 + uVar5;
  uVar6 = (uint)CARRY4(uVar6,uVar5);
  uVar27 = uVar31 + uVar11;
  uVar32 = uVar27 + uVar6;
  uVar12 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[4] >> 0x20);
  uVar17 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[4]);
  uVar7 = (uint)CARRY4(uVar18,uVar17);
  uVar10 = uVar32 + uVar12;
  uVar33 = uVar10 + uVar7;
  uVar5 = *param_3;
  uVar30 = (uint)(CARRY4(uVar13,uVar19) || CARRY4(uVar8,uVar1)) +
           (uint)(CARRY4(uVar21,uVar20) || CARRY4(uVar26,uVar28)) +
           (uint)(CARRY4(uVar30,uVar29) || CARRY4(uVar9,uVar4)) +
           (uint)(CARRY4(uVar31,uVar11) || CARRY4(uVar27,uVar6)) +
           (uint)(CARRY4(uVar32,uVar12) || CARRY4(uVar10,uVar7));
  param_1[4] = uVar18 + uVar17;
  uVar20 = (uint)((ulonglong)param_2[5] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[5] * (ulonglong)uVar5);
  uVar28 = uVar33 + uVar5;
  uVar1 = (uint)CARRY4(uVar33,uVar5);
  uVar26 = uVar30 + uVar20;
  uVar31 = uVar26 + uVar1;
  uVar29 = (uint)((ulonglong)param_2[4] * (ulonglong)param_3[1] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[4] * (ulonglong)param_3[1]);
  uVar4 = uVar28 + uVar5;
  uVar28 = (uint)CARRY4(uVar28,uVar5);
  uVar9 = uVar31 + uVar29;
  uVar32 = uVar9 + uVar28;
  uVar11 = (uint)((ulonglong)param_2[3] * (ulonglong)param_3[2] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[3] * (ulonglong)param_3[2]);
  uVar6 = uVar4 + uVar5;
  uVar4 = (uint)CARRY4(uVar4,uVar5);
  uVar27 = uVar32 + uVar11;
  uVar33 = uVar27 + uVar4;
  uVar12 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[3] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[3]);
  uVar7 = uVar6 + uVar5;
  uVar6 = (uint)CARRY4(uVar6,uVar5);
  uVar10 = uVar33 + uVar12;
  uVar22 = uVar10 + uVar6;
  uVar13 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[4] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[4]);
  uVar34 = uVar7 + uVar5;
  uVar7 = (uint)CARRY4(uVar7,uVar5);
  uVar17 = uVar22 + uVar13;
  uVar23 = uVar17 + uVar7;
  uVar21 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[5] >> 0x20);
  uVar19 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[5]);
  uVar8 = (uint)CARRY4(uVar34,uVar19);
  uVar18 = uVar23 + uVar21;
  uVar24 = uVar18 + uVar8;
  uVar5 = *param_3;
  uVar11 = (uint)(CARRY4(uVar30,uVar20) || CARRY4(uVar26,uVar1)) +
           (uint)(CARRY4(uVar31,uVar29) || CARRY4(uVar9,uVar28)) +
           (uint)(CARRY4(uVar32,uVar11) || CARRY4(uVar27,uVar4)) +
           (uint)(CARRY4(uVar33,uVar12) || CARRY4(uVar10,uVar6)) +
           (uint)(CARRY4(uVar22,uVar13) || CARRY4(uVar17,uVar7)) +
           (uint)(CARRY4(uVar23,uVar21) || CARRY4(uVar18,uVar8));
  param_1[5] = uVar34 + uVar19;
  uVar22 = (uint)((ulonglong)param_2[6] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[6] * (ulonglong)uVar5);
  uVar28 = uVar24 + uVar5;
  uVar1 = (uint)CARRY4(uVar24,uVar5);
  uVar9 = uVar11 + uVar22;
  uVar12 = uVar9 + uVar1;
  uVar23 = (uint)((ulonglong)param_2[5] * (ulonglong)param_3[1] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[5] * (ulonglong)param_3[1]);
  uVar4 = uVar28 + uVar5;
  uVar28 = (uint)CARRY4(uVar28,uVar5);
  uVar27 = uVar12 + uVar23;
  uVar13 = uVar27 + uVar28;
  uVar24 = (uint)((ulonglong)param_2[4] * (ulonglong)param_3[2] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[4] * (ulonglong)param_3[2]);
  uVar6 = uVar4 + uVar5;
  uVar4 = (uint)CARRY4(uVar4,uVar5);
  uVar10 = uVar13 + uVar24;
  uVar21 = uVar10 + uVar4;
  uVar34 = (uint)((ulonglong)param_2[3] * (ulonglong)param_3[3] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[3] * (ulonglong)param_3[3]);
  uVar7 = uVar6 + uVar5;
  uVar6 = (uint)CARRY4(uVar6,uVar5);
  uVar17 = uVar21 + uVar34;
  uVar30 = uVar17 + uVar6;
  uVar14 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[4] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[4]);
  uVar8 = uVar7 + uVar5;
  uVar7 = (uint)CARRY4(uVar7,uVar5);
  uVar18 = uVar30 + uVar14;
  uVar31 = uVar18 + uVar7;
  uVar15 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[5] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[5]);
  uVar25 = uVar8 + uVar5;
  uVar8 = (uint)CARRY4(uVar8,uVar5);
  uVar19 = uVar31 + uVar15;
  uVar32 = uVar19 + uVar8;
  uVar16 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[6] >> 0x20);
  uVar29 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[6]);
  uVar26 = (uint)CARRY4(uVar25,uVar29);
  uVar20 = uVar32 + uVar16;
  uVar33 = uVar20 + uVar26;
  uVar5 = *param_3;
  uVar34 = (uint)(CARRY4(uVar11,uVar22) || CARRY4(uVar9,uVar1)) +
           (uint)(CARRY4(uVar12,uVar23) || CARRY4(uVar27,uVar28)) +
           (uint)(CARRY4(uVar13,uVar24) || CARRY4(uVar10,uVar4)) +
           (uint)(CARRY4(uVar21,uVar34) || CARRY4(uVar17,uVar6)) +
           (uint)(CARRY4(uVar30,uVar14) || CARRY4(uVar18,uVar7)) +
           (uint)(CARRY4(uVar31,uVar15) || CARRY4(uVar19,uVar8)) +
           (uint)(CARRY4(uVar32,uVar16) || CARRY4(uVar20,uVar26));
  param_1[6] = uVar25 + uVar29;
  uVar21 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar5);
  uVar28 = uVar33 + uVar5;
  uVar1 = (uint)CARRY4(uVar33,uVar5);
  uVar27 = uVar34 + uVar21;
  uVar14 = uVar27 + uVar1;
  uVar30 = (uint)((ulonglong)param_2[6] * (ulonglong)param_3[1] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[6] * (ulonglong)param_3[1]);
  uVar4 = uVar28 + uVar5;
  uVar28 = (uint)CARRY4(uVar28,uVar5);
  uVar10 = uVar14 + uVar30;
  uVar15 = uVar10 + uVar28;
  uVar31 = (uint)((ulonglong)param_2[5] * (ulonglong)param_3[2] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[5] * (ulonglong)param_3[2]);
  uVar6 = uVar4 + uVar5;
  uVar4 = (uint)CARRY4(uVar4,uVar5);
  uVar17 = uVar15 + uVar31;
  uVar16 = uVar17 + uVar4;
  uVar32 = (uint)((ulonglong)param_2[4] * (ulonglong)param_3[3] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[4] * (ulonglong)param_3[3]);
  uVar7 = uVar6 + uVar5;
  uVar6 = (uint)CARRY4(uVar6,uVar5);
  uVar18 = uVar16 + uVar32;
  uVar25 = uVar18 + uVar6;
  uVar33 = (uint)((ulonglong)param_2[3] * (ulonglong)param_3[4] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[3] * (ulonglong)param_3[4]);
  uVar8 = uVar7 + uVar5;
  uVar7 = (uint)CARRY4(uVar7,uVar5);
  uVar19 = uVar25 + uVar33;
  uVar35 = uVar19 + uVar7;
  uVar22 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[5] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[5]);
  uVar26 = uVar8 + uVar5;
  uVar8 = (uint)CARRY4(uVar8,uVar5);
  uVar20 = uVar35 + uVar22;
  uVar36 = uVar20 + uVar8;
  uVar23 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[6] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[6]);
  uVar13 = uVar26 + uVar5;
  uVar26 = (uint)CARRY4(uVar26,uVar5);
  uVar29 = uVar36 + uVar23;
  uVar37 = uVar29 + uVar26;
  uVar24 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[7] >> 0x20);
  uVar12 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[7]);
  uVar9 = (uint)CARRY4(uVar13,uVar12);
  uVar11 = uVar37 + uVar24;
  uVar38 = uVar11 + uVar9;
  uVar5 = param_3[1];
  uVar33 = (uint)(CARRY4(uVar34,uVar21) || CARRY4(uVar27,uVar1)) +
           (uint)(CARRY4(uVar14,uVar30) || CARRY4(uVar10,uVar28)) +
           (uint)(CARRY4(uVar15,uVar31) || CARRY4(uVar17,uVar4)) +
           (uint)(CARRY4(uVar16,uVar32) || CARRY4(uVar18,uVar6)) +
           (uint)(CARRY4(uVar25,uVar33) || CARRY4(uVar19,uVar7)) +
           (uint)(CARRY4(uVar35,uVar22) || CARRY4(uVar20,uVar8)) +
           (uint)(CARRY4(uVar36,uVar23) || CARRY4(uVar29,uVar26)) +
           (uint)(CARRY4(uVar37,uVar24) || CARRY4(uVar11,uVar9));
  param_1[7] = uVar13 + uVar12;
  uVar11 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar5);
  uVar28 = uVar38 + uVar5;
  uVar1 = (uint)CARRY4(uVar38,uVar5);
  uVar9 = uVar33 + uVar11;
  uVar22 = uVar9 + uVar1;
  uVar12 = (uint)((ulonglong)param_2[6] * (ulonglong)param_3[2] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[6] * (ulonglong)param_3[2]);
  uVar4 = uVar28 + uVar5;
  uVar28 = (uint)CARRY4(uVar28,uVar5);
  uVar27 = uVar22 + uVar12;
  uVar23 = uVar27 + uVar28;
  uVar13 = (uint)((ulonglong)param_2[5] * (ulonglong)param_3[3] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[5] * (ulonglong)param_3[3]);
  uVar6 = uVar4 + uVar5;
  uVar4 = (uint)CARRY4(uVar4,uVar5);
  uVar10 = uVar23 + uVar13;
  uVar24 = uVar10 + uVar4;
  uVar21 = (uint)((ulonglong)param_2[4] * (ulonglong)param_3[4] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[4] * (ulonglong)param_3[4]);
  uVar7 = uVar6 + uVar5;
  uVar6 = (uint)CARRY4(uVar6,uVar5);
  uVar17 = uVar24 + uVar21;
  uVar34 = uVar17 + uVar6;
  uVar30 = (uint)((ulonglong)param_2[3] * (ulonglong)param_3[5] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[3] * (ulonglong)param_3[5]);
  uVar8 = uVar7 + uVar5;
  uVar7 = (uint)CARRY4(uVar7,uVar5);
  uVar18 = uVar34 + uVar30;
  uVar14 = uVar18 + uVar7;
  uVar31 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[6] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[6]);
  uVar25 = uVar8 + uVar5;
  uVar8 = (uint)CARRY4(uVar8,uVar5);
  uVar19 = uVar14 + uVar31;
  uVar15 = uVar19 + uVar8;
  uVar32 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[7] >> 0x20);
  uVar29 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[7]);
  uVar26 = (uint)CARRY4(uVar25,uVar29);
  uVar20 = uVar15 + uVar32;
  uVar16 = uVar20 + uVar26;
  uVar5 = param_3[2];
  uVar20 = (uint)(CARRY4(uVar33,uVar11) || CARRY4(uVar9,uVar1)) +
           (uint)(CARRY4(uVar22,uVar12) || CARRY4(uVar27,uVar28)) +
           (uint)(CARRY4(uVar23,uVar13) || CARRY4(uVar10,uVar4)) +
           (uint)(CARRY4(uVar24,uVar21) || CARRY4(uVar17,uVar6)) +
           (uint)(CARRY4(uVar34,uVar30) || CARRY4(uVar18,uVar7)) +
           (uint)(CARRY4(uVar14,uVar31) || CARRY4(uVar19,uVar8)) +
           (uint)(CARRY4(uVar15,uVar32) || CARRY4(uVar20,uVar26));
  param_1[8] = uVar25 + uVar29;
  uVar31 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar5);
  uVar28 = uVar16 + uVar5;
  uVar1 = (uint)CARRY4(uVar16,uVar5);
  uVar26 = uVar20 + uVar31;
  uVar29 = uVar26 + uVar1;
  uVar32 = (uint)((ulonglong)param_2[6] * (ulonglong)param_3[3] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[6] * (ulonglong)param_3[3]);
  uVar4 = uVar28 + uVar5;
  uVar28 = (uint)CARRY4(uVar28,uVar5);
  uVar9 = uVar29 + uVar32;
  uVar11 = uVar9 + uVar28;
  uVar33 = (uint)((ulonglong)param_2[5] * (ulonglong)param_3[4] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[5] * (ulonglong)param_3[4]);
  uVar6 = uVar4 + uVar5;
  uVar4 = (uint)CARRY4(uVar4,uVar5);
  uVar27 = uVar11 + uVar33;
  uVar12 = uVar27 + uVar4;
  uVar22 = (uint)((ulonglong)param_2[4] * (ulonglong)param_3[5] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[4] * (ulonglong)param_3[5]);
  uVar7 = uVar6 + uVar5;
  uVar6 = (uint)CARRY4(uVar6,uVar5);
  uVar10 = uVar12 + uVar22;
  uVar13 = uVar10 + uVar6;
  uVar23 = (uint)((ulonglong)param_2[3] * (ulonglong)param_3[6] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[3] * (ulonglong)param_3[6]);
  uVar34 = uVar7 + uVar5;
  uVar7 = (uint)CARRY4(uVar7,uVar5);
  uVar17 = uVar13 + uVar23;
  uVar21 = uVar17 + uVar7;
  uVar24 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[7] >> 0x20);
  uVar19 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[7]);
  uVar8 = (uint)CARRY4(uVar34,uVar19);
  uVar18 = uVar21 + uVar24;
  uVar30 = uVar18 + uVar8;
  uVar5 = param_3[3];
  uVar13 = (uint)(CARRY4(uVar20,uVar31) || CARRY4(uVar26,uVar1)) +
           (uint)(CARRY4(uVar29,uVar32) || CARRY4(uVar9,uVar28)) +
           (uint)(CARRY4(uVar11,uVar33) || CARRY4(uVar27,uVar4)) +
           (uint)(CARRY4(uVar12,uVar22) || CARRY4(uVar10,uVar6)) +
           (uint)(CARRY4(uVar13,uVar23) || CARRY4(uVar17,uVar7)) +
           (uint)(CARRY4(uVar21,uVar24) || CARRY4(uVar18,uVar8));
  param_1[9] = uVar34 + uVar19;
  uVar19 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar5);
  uVar28 = uVar30 + uVar5;
  uVar1 = (uint)CARRY4(uVar30,uVar5);
  uVar8 = uVar13 + uVar19;
  uVar21 = uVar8 + uVar1;
  uVar20 = (uint)((ulonglong)param_2[6] * (ulonglong)param_3[4] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[6] * (ulonglong)param_3[4]);
  uVar4 = uVar28 + uVar5;
  uVar28 = (uint)CARRY4(uVar28,uVar5);
  uVar26 = uVar21 + uVar20;
  uVar30 = uVar26 + uVar28;
  uVar29 = (uint)((ulonglong)param_2[5] * (ulonglong)param_3[5] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[5] * (ulonglong)param_3[5]);
  uVar6 = uVar4 + uVar5;
  uVar4 = (uint)CARRY4(uVar4,uVar5);
  uVar9 = uVar30 + uVar29;
  uVar31 = uVar9 + uVar4;
  uVar11 = (uint)((ulonglong)param_2[4] * (ulonglong)param_3[6] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[4] * (ulonglong)param_3[6]);
  uVar18 = uVar6 + uVar5;
  uVar6 = (uint)CARRY4(uVar6,uVar5);
  uVar27 = uVar31 + uVar11;
  uVar32 = uVar27 + uVar6;
  uVar12 = (uint)((ulonglong)param_2[3] * (ulonglong)param_3[7] >> 0x20);
  uVar17 = (uint)((ulonglong)param_2[3] * (ulonglong)param_3[7]);
  uVar7 = (uint)CARRY4(uVar18,uVar17);
  uVar10 = uVar32 + uVar12;
  uVar33 = uVar10 + uVar7;
  uVar5 = param_3[4];
  uVar20 = (uint)(CARRY4(uVar13,uVar19) || CARRY4(uVar8,uVar1)) +
           (uint)(CARRY4(uVar21,uVar20) || CARRY4(uVar26,uVar28)) +
           (uint)(CARRY4(uVar30,uVar29) || CARRY4(uVar9,uVar4)) +
           (uint)(CARRY4(uVar31,uVar11) || CARRY4(uVar27,uVar6)) +
           (uint)(CARRY4(uVar32,uVar12) || CARRY4(uVar10,uVar7));
  param_1[10] = uVar18 + uVar17;
  uVar10 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar5);
  uVar28 = uVar33 + uVar5;
  uVar1 = (uint)CARRY4(uVar33,uVar5);
  uVar7 = uVar20 + uVar10;
  uVar29 = uVar7 + uVar1;
  uVar17 = (uint)((ulonglong)param_2[6] * (ulonglong)param_3[5] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[6] * (ulonglong)param_3[5]);
  uVar4 = uVar28 + uVar5;
  uVar28 = (uint)CARRY4(uVar28,uVar5);
  uVar8 = uVar29 + uVar17;
  uVar11 = uVar8 + uVar28;
  uVar18 = (uint)((ulonglong)param_2[5] * (ulonglong)param_3[6] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[5] * (ulonglong)param_3[6]);
  uVar21 = uVar4 + uVar5;
  uVar4 = (uint)CARRY4(uVar4,uVar5);
  uVar26 = uVar11 + uVar18;
  uVar12 = uVar26 + uVar4;
  uVar19 = (uint)((ulonglong)param_2[4] * (ulonglong)param_3[7] >> 0x20);
  uVar27 = (uint)((ulonglong)param_2[4] * (ulonglong)param_3[7]);
  uVar6 = (uint)CARRY4(uVar21,uVar27);
  uVar9 = uVar12 + uVar19;
  uVar13 = uVar9 + uVar6;
  uVar5 = param_3[5];
  uVar9 = (uint)(CARRY4(uVar20,uVar10) || CARRY4(uVar7,uVar1)) +
          (uint)(CARRY4(uVar29,uVar17) || CARRY4(uVar8,uVar28)) +
          (uint)(CARRY4(uVar11,uVar18) || CARRY4(uVar26,uVar4)) +
          (uint)(CARRY4(uVar12,uVar19) || CARRY4(uVar9,uVar6));
  param_1[0xb] = uVar21 + uVar27;
  uVar18 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar5);
  uVar28 = uVar13 + uVar5;
  uVar1 = (uint)CARRY4(uVar13,uVar5);
  uVar6 = uVar9 + uVar18;
  uVar27 = uVar6 + uVar1;
  uVar19 = (uint)((ulonglong)param_2[6] * (ulonglong)param_3[6] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[6] * (ulonglong)param_3[6]);
  uVar29 = uVar28 + uVar5;
  uVar28 = (uint)CARRY4(uVar28,uVar5);
  uVar7 = uVar27 + uVar19;
  uVar10 = uVar7 + uVar28;
  uVar20 = (uint)((ulonglong)param_2[5] * (ulonglong)param_3[7] >> 0x20);
  uVar26 = (uint)((ulonglong)param_2[5] * (ulonglong)param_3[7]);
  uVar4 = (uint)CARRY4(uVar29,uVar26);
  uVar8 = uVar10 + uVar20;
  uVar17 = uVar8 + uVar4;
  uVar5 = param_3[6];
  uVar27 = (uint)(CARRY4(uVar9,uVar18) || CARRY4(uVar6,uVar1)) +
           (uint)(CARRY4(uVar27,uVar19) || CARRY4(uVar7,uVar28)) +
           (uint)(CARRY4(uVar10,uVar20) || CARRY4(uVar8,uVar4));
  param_1[0xc] = uVar29 + uVar26;
  uVar26 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar5);
  uVar8 = uVar17 + uVar5;
  uVar1 = (uint)CARRY4(uVar17,uVar5);
  uVar4 = uVar27 + uVar26;
  uVar10 = uVar4 + uVar1;
  uVar9 = (uint)((ulonglong)param_2[6] * (ulonglong)param_3[7] >> 0x20);
  uVar7 = (uint)((ulonglong)param_2[6] * (ulonglong)param_3[7]);
  uVar28 = (uint)CARRY4(uVar8,uVar7);
  uVar6 = uVar10 + uVar9;
  uVar5 = param_3[7];
  param_1[0xd] = uVar8 + uVar7;
  *(ulonglong *)(param_1 + 0xe) =
       (ulonglong)param_2[7] * (ulonglong)uVar5 +
       CONCAT44((uint)(CARRY4(uVar27,uVar26) || CARRY4(uVar4,uVar1)) +
                (uint)(CARRY4(uVar10,uVar9) || CARRY4(uVar6,uVar28)),uVar6 + uVar28);
  return;
}



void FUN_00ae6990(undefined4 *param_1,uint *param_2,uint *param_3)

{
  uint uVar1;
  longlong lVar2;
  longlong lVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  
  uVar7 = (uint)((ulonglong)*param_2 * (ulonglong)*param_3 >> 0x20);
  uVar5 = *param_3;
  *param_1 = (int)((ulonglong)*param_2 * (ulonglong)*param_3);
  lVar2 = (ulonglong)param_2[1] * (ulonglong)uVar5;
  lVar3 = lVar2 + (ulonglong)uVar7;
  uVar6 = (uint)lVar3;
  uVar19 = (uint)((ulonglong)lVar3 >> 0x20);
  uVar8 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[1] >> 0x20);
  uVar4 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[1]);
  uVar1 = (uint)CARRY4(uVar6,uVar4);
  uVar21 = uVar19 + uVar8;
  uVar20 = uVar21 + uVar1;
  uVar5 = *param_3;
  uVar14 = (uint)CARRY4((uint)((ulonglong)lVar2 >> 0x20),(uint)CARRY4(uVar7,(uint)lVar2)) +
           (uint)(CARRY4(uVar19,uVar8) || CARRY4(uVar21,uVar1));
  param_1[1] = uVar6 + uVar4;
  uVar9 = (uint)((ulonglong)param_2[2] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[2] * (ulonglong)uVar5);
  uVar21 = uVar20 + uVar5;
  uVar1 = (uint)CARRY4(uVar20,uVar5);
  uVar6 = uVar14 + uVar9;
  uVar15 = uVar6 + uVar1;
  uVar20 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[1] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[1]);
  uVar22 = uVar21 + uVar5;
  uVar21 = (uint)CARRY4(uVar21,uVar5);
  uVar7 = uVar15 + uVar20;
  uVar16 = uVar7 + uVar21;
  uVar10 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[2] >> 0x20);
  uVar19 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[2]);
  uVar4 = (uint)CARRY4(uVar22,uVar19);
  uVar8 = uVar16 + uVar10;
  uVar17 = uVar8 + uVar4;
  uVar5 = *param_3;
  uVar10 = (uint)(CARRY4(uVar14,uVar9) || CARRY4(uVar6,uVar1)) +
           (uint)(CARRY4(uVar15,uVar20) || CARRY4(uVar7,uVar21)) +
           (uint)(CARRY4(uVar16,uVar10) || CARRY4(uVar8,uVar4));
  param_1[2] = uVar22 + uVar19;
  uVar22 = (uint)((ulonglong)param_2[3] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[3] * (ulonglong)uVar5);
  uVar21 = uVar17 + uVar5;
  uVar1 = (uint)CARRY4(uVar17,uVar5);
  uVar7 = uVar10 + uVar22;
  uVar14 = uVar7 + uVar1;
  uVar11 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[1] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[1]);
  uVar4 = uVar21 + uVar5;
  uVar21 = (uint)CARRY4(uVar21,uVar5);
  uVar8 = uVar14 + uVar11;
  uVar15 = uVar8 + uVar21;
  uVar12 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[2] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[2]);
  uVar18 = uVar4 + uVar5;
  uVar4 = (uint)CARRY4(uVar4,uVar5);
  uVar19 = uVar15 + uVar12;
  uVar16 = uVar19 + uVar4;
  uVar13 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[3] >> 0x20);
  uVar20 = (uint)((ulonglong)*param_2 * (ulonglong)param_3[3]);
  uVar6 = (uint)CARRY4(uVar18,uVar20);
  uVar9 = uVar16 + uVar13;
  uVar17 = uVar9 + uVar6;
  uVar5 = param_3[1];
  uVar15 = (uint)(CARRY4(uVar10,uVar22) || CARRY4(uVar7,uVar1)) +
           (uint)(CARRY4(uVar14,uVar11) || CARRY4(uVar8,uVar21)) +
           (uint)(CARRY4(uVar15,uVar12) || CARRY4(uVar19,uVar4)) +
           (uint)(CARRY4(uVar16,uVar13) || CARRY4(uVar9,uVar6));
  param_1[3] = uVar18 + uVar20;
  uVar20 = (uint)((ulonglong)param_2[3] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[3] * (ulonglong)uVar5);
  uVar21 = uVar17 + uVar5;
  uVar1 = (uint)CARRY4(uVar17,uVar5);
  uVar6 = uVar15 + uVar20;
  uVar16 = uVar6 + uVar1;
  uVar10 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[2] >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[2]);
  uVar9 = uVar21 + uVar5;
  uVar21 = (uint)CARRY4(uVar21,uVar5);
  uVar7 = uVar16 + uVar10;
  uVar17 = uVar7 + uVar21;
  uVar14 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[3] >> 0x20);
  uVar19 = (uint)((ulonglong)param_2[1] * (ulonglong)param_3[3]);
  uVar4 = (uint)CARRY4(uVar9,uVar19);
  uVar8 = uVar17 + uVar14;
  uVar22 = uVar8 + uVar4;
  uVar5 = param_3[2];
  uVar20 = (uint)(CARRY4(uVar15,uVar20) || CARRY4(uVar6,uVar1)) +
           (uint)(CARRY4(uVar16,uVar10) || CARRY4(uVar7,uVar21)) +
           (uint)(CARRY4(uVar17,uVar14) || CARRY4(uVar8,uVar4));
  param_1[4] = uVar9 + uVar19;
  uVar8 = (uint)((ulonglong)param_2[3] * (ulonglong)uVar5 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[3] * (ulonglong)uVar5);
  uVar10 = uVar22 + uVar5;
  uVar1 = (uint)CARRY4(uVar22,uVar5);
  uVar4 = uVar20 + uVar8;
  uVar9 = uVar4 + uVar1;
  uVar19 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[3] >> 0x20);
  uVar7 = (uint)((ulonglong)param_2[2] * (ulonglong)param_3[3]);
  uVar21 = (uint)CARRY4(uVar10,uVar7);
  uVar6 = uVar9 + uVar19;
  uVar5 = param_3[3];
  param_1[5] = uVar10 + uVar7;
  *(ulonglong *)(param_1 + 6) =
       (ulonglong)param_2[3] * (ulonglong)uVar5 +
       CONCAT44((uint)(CARRY4(uVar20,uVar8) || CARRY4(uVar4,uVar1)) +
                (uint)(CARRY4(uVar9,uVar19) || CARRY4(uVar6,uVar21)),uVar6 + uVar21);
  return;
}



void FUN_00ae6ad0(undefined4 *param_1,uint *param_2)

{
  uint uVar1;
  longlong lVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  uint uVar20;
  uint uVar21;
  uint uVar22;
  uint uVar23;
  uint uVar24;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  uint uVar28;
  
  lVar2 = (ulonglong)*param_2 * (ulonglong)*param_2;
  uVar5 = (uint)((ulonglong)lVar2 >> 0x20);
  uVar4 = *param_2;
  *param_1 = (int)lVar2;
  uVar6 = (uint)((ulonglong)param_2[1] * (ulonglong)uVar4 >> 0x20);
  uVar3 = (uint)((ulonglong)param_2[1] * (ulonglong)uVar4);
  uVar7 = uVar6 * 2 + (uint)CARRY4(uVar3,uVar3);
  uVar1 = (uint)CARRY4(uVar5,uVar3 * 2);
  uVar22 = uVar7 + uVar1;
  uVar4 = param_2[2];
  uVar16 = (uint)(CARRY4(uVar6,uVar6) || CARRY4(uVar6 * 2,(uint)CARRY4(uVar3,uVar3))) +
           (uint)CARRY4(uVar7,uVar1);
  param_1[1] = uVar5 + uVar3 * 2;
  uVar8 = (uint)((ulonglong)uVar4 * (ulonglong)*param_2 >> 0x20);
  uVar7 = (uint)((ulonglong)uVar4 * (ulonglong)*param_2);
  uVar9 = uVar8 * 2 + (uint)CARRY4(uVar7,uVar7);
  uVar23 = uVar22 + uVar7 * 2;
  uVar1 = (uint)CARRY4(uVar22,uVar7 * 2);
  uVar5 = uVar16 + uVar9;
  uVar17 = uVar5 + uVar1;
  lVar2 = (ulonglong)param_2[1] * (ulonglong)param_2[1];
  uVar10 = (uint)((ulonglong)lVar2 >> 0x20);
  uVar22 = (uint)lVar2;
  uVar3 = (uint)CARRY4(uVar23,uVar22);
  uVar6 = uVar17 + uVar10;
  uVar18 = uVar6 + uVar3;
  uVar4 = *param_2;
  uVar8 = (uint)(CARRY4(uVar8,uVar8) || CARRY4(uVar8 * 2,(uint)CARRY4(uVar7,uVar7))) +
          (uint)(CARRY4(uVar16,uVar9) || CARRY4(uVar5,uVar1)) +
          (uint)(CARRY4(uVar17,uVar10) || CARRY4(uVar6,uVar3));
  param_1[2] = uVar23 + uVar22;
  uVar16 = (uint)((ulonglong)param_2[3] * (ulonglong)uVar4 >> 0x20);
  uVar7 = (uint)((ulonglong)param_2[3] * (ulonglong)uVar4);
  uVar17 = uVar16 * 2 + (uint)CARRY4(uVar7,uVar7);
  uVar19 = uVar18 + uVar7 * 2;
  uVar1 = (uint)CARRY4(uVar18,uVar7 * 2);
  uVar5 = uVar8 + uVar17;
  uVar9 = uVar5 + uVar1;
  uVar18 = (uint)((ulonglong)param_2[2] * (ulonglong)param_2[1] >> 0x20);
  uVar22 = (uint)((ulonglong)param_2[2] * (ulonglong)param_2[1]);
  uVar23 = uVar18 * 2 + (uint)CARRY4(uVar22,uVar22);
  uVar3 = (uint)CARRY4(uVar19,uVar22 * 2);
  uVar6 = uVar9 + uVar23;
  uVar10 = uVar6 + uVar3;
  uVar4 = param_2[4];
  uVar24 = (uint)(CARRY4(uVar16,uVar16) || CARRY4(uVar16 * 2,(uint)CARRY4(uVar7,uVar7))) +
           (uint)(CARRY4(uVar8,uVar17) || CARRY4(uVar5,uVar1)) +
           (uint)(CARRY4(uVar18,uVar18) || CARRY4(uVar18 * 2,(uint)CARRY4(uVar22,uVar22))) +
           (uint)(CARRY4(uVar9,uVar23) || CARRY4(uVar6,uVar3));
  param_1[3] = uVar19 + uVar22 * 2;
  uVar17 = (uint)((ulonglong)uVar4 * (ulonglong)*param_2 >> 0x20);
  uVar8 = (uint)((ulonglong)uVar4 * (ulonglong)*param_2);
  uVar18 = uVar17 * 2 + (uint)CARRY4(uVar8,uVar8);
  uVar4 = uVar10 + uVar8 * 2;
  uVar1 = (uint)CARRY4(uVar10,uVar8 * 2);
  uVar6 = uVar24 + uVar18;
  uVar25 = uVar6 + uVar1;
  uVar23 = (uint)((ulonglong)param_2[3] * (ulonglong)param_2[1] >> 0x20);
  uVar9 = (uint)((ulonglong)param_2[3] * (ulonglong)param_2[1]);
  uVar19 = uVar23 * 2 + (uint)CARRY4(uVar9,uVar9);
  uVar16 = uVar4 + uVar9 * 2;
  uVar3 = (uint)CARRY4(uVar4,uVar9 * 2);
  uVar7 = uVar25 + uVar19;
  uVar26 = uVar7 + uVar3;
  lVar2 = (ulonglong)param_2[2] * (ulonglong)param_2[2];
  uVar11 = (uint)((ulonglong)lVar2 >> 0x20);
  uVar10 = (uint)lVar2;
  uVar5 = (uint)CARRY4(uVar16,uVar10);
  uVar22 = uVar26 + uVar11;
  uVar27 = uVar22 + uVar5;
  uVar4 = *param_2;
  uVar24 = (uint)(CARRY4(uVar17,uVar17) || CARRY4(uVar17 * 2,(uint)CARRY4(uVar8,uVar8))) +
           (uint)(CARRY4(uVar24,uVar18) || CARRY4(uVar6,uVar1)) +
           (uint)(CARRY4(uVar23,uVar23) || CARRY4(uVar23 * 2,(uint)CARRY4(uVar9,uVar9))) +
           (uint)(CARRY4(uVar25,uVar19) || CARRY4(uVar7,uVar3)) +
           (uint)(CARRY4(uVar26,uVar11) || CARRY4(uVar22,uVar5));
  param_1[4] = uVar16 + uVar10;
  uVar16 = (uint)((ulonglong)param_2[5] * (ulonglong)uVar4 >> 0x20);
  uVar8 = (uint)((ulonglong)param_2[5] * (ulonglong)uVar4);
  uVar17 = uVar16 * 2 + (uint)CARRY4(uVar8,uVar8);
  uVar4 = uVar27 + uVar8 * 2;
  uVar1 = (uint)CARRY4(uVar27,uVar8 * 2);
  uVar6 = uVar24 + uVar17;
  uVar25 = uVar6 + uVar1;
  uVar18 = (uint)((ulonglong)param_2[4] * (ulonglong)param_2[1] >> 0x20);
  uVar9 = (uint)((ulonglong)param_2[4] * (ulonglong)param_2[1]);
  uVar23 = uVar18 * 2 + (uint)CARRY4(uVar9,uVar9);
  uVar27 = uVar4 + uVar9 * 2;
  uVar3 = (uint)CARRY4(uVar4,uVar9 * 2);
  uVar7 = uVar25 + uVar23;
  uVar26 = uVar7 + uVar3;
  uVar19 = (uint)((ulonglong)param_2[3] * (ulonglong)param_2[2] >> 0x20);
  uVar10 = (uint)((ulonglong)param_2[3] * (ulonglong)param_2[2]);
  uVar11 = uVar19 * 2 + (uint)CARRY4(uVar10,uVar10);
  uVar5 = (uint)CARRY4(uVar27,uVar10 * 2);
  uVar22 = uVar26 + uVar11;
  uVar20 = uVar22 + uVar5;
  uVar4 = param_2[6];
  uVar23 = (uint)(CARRY4(uVar16,uVar16) || CARRY4(uVar16 * 2,(uint)CARRY4(uVar8,uVar8))) +
           (uint)(CARRY4(uVar24,uVar17) || CARRY4(uVar6,uVar1)) +
           (uint)(CARRY4(uVar18,uVar18) || CARRY4(uVar18 * 2,(uint)CARRY4(uVar9,uVar9))) +
           (uint)(CARRY4(uVar25,uVar23) || CARRY4(uVar7,uVar3)) +
           (uint)(CARRY4(uVar19,uVar19) || CARRY4(uVar19 * 2,(uint)CARRY4(uVar10,uVar10))) +
           (uint)(CARRY4(uVar26,uVar11) || CARRY4(uVar22,uVar5));
  param_1[5] = uVar27 + uVar10 * 2;
  uVar26 = (uint)((ulonglong)uVar4 * (ulonglong)*param_2 >> 0x20);
  uVar10 = (uint)((ulonglong)uVar4 * (ulonglong)*param_2);
  uVar27 = uVar26 * 2 + (uint)CARRY4(uVar10,uVar10);
  uVar4 = uVar20 + uVar10 * 2;
  uVar1 = (uint)CARRY4(uVar20,uVar10 * 2);
  uVar7 = uVar23 + uVar27;
  uVar19 = uVar7 + uVar1;
  uVar20 = (uint)((ulonglong)param_2[5] * (ulonglong)param_2[1] >> 0x20);
  uVar16 = (uint)((ulonglong)param_2[5] * (ulonglong)param_2[1]);
  uVar12 = uVar20 * 2 + (uint)CARRY4(uVar16,uVar16);
  uVar5 = uVar4 + uVar16 * 2;
  uVar3 = (uint)CARRY4(uVar4,uVar16 * 2);
  uVar22 = uVar19 + uVar12;
  uVar11 = uVar22 + uVar3;
  uVar13 = (uint)((ulonglong)param_2[4] * (ulonglong)param_2[2] >> 0x20);
  uVar17 = (uint)((ulonglong)param_2[4] * (ulonglong)param_2[2]);
  uVar14 = uVar13 * 2 + (uint)CARRY4(uVar17,uVar17);
  uVar21 = uVar5 + uVar17 * 2;
  uVar5 = (uint)CARRY4(uVar5,uVar17 * 2);
  uVar8 = uVar11 + uVar14;
  uVar24 = uVar8 + uVar5;
  lVar2 = (ulonglong)param_2[3] * (ulonglong)param_2[3];
  uVar15 = (uint)((ulonglong)lVar2 >> 0x20);
  uVar18 = (uint)lVar2;
  uVar6 = (uint)CARRY4(uVar21,uVar18);
  uVar9 = uVar24 + uVar15;
  uVar25 = uVar9 + uVar6;
  uVar4 = *param_2;
  uVar13 = (uint)(CARRY4(uVar26,uVar26) || CARRY4(uVar26 * 2,(uint)CARRY4(uVar10,uVar10))) +
           (uint)(CARRY4(uVar23,uVar27) || CARRY4(uVar7,uVar1)) +
           (uint)(CARRY4(uVar20,uVar20) || CARRY4(uVar20 * 2,(uint)CARRY4(uVar16,uVar16))) +
           (uint)(CARRY4(uVar19,uVar12) || CARRY4(uVar22,uVar3)) +
           (uint)(CARRY4(uVar13,uVar13) || CARRY4(uVar13 * 2,(uint)CARRY4(uVar17,uVar17))) +
           (uint)(CARRY4(uVar11,uVar14) || CARRY4(uVar8,uVar5)) +
           (uint)(CARRY4(uVar24,uVar15) || CARRY4(uVar9,uVar6));
  param_1[6] = uVar21 + uVar18;
  uVar19 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar4 >> 0x20);
  uVar10 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar4);
  uVar11 = uVar19 * 2 + (uint)CARRY4(uVar10,uVar10);
  uVar4 = uVar25 + uVar10 * 2;
  uVar1 = (uint)CARRY4(uVar25,uVar10 * 2);
  uVar7 = uVar13 + uVar11;
  uVar14 = uVar7 + uVar1;
  uVar24 = (uint)((ulonglong)param_2[6] * (ulonglong)param_2[1] >> 0x20);
  uVar16 = (uint)((ulonglong)param_2[6] * (ulonglong)param_2[1]);
  uVar25 = uVar24 * 2 + (uint)CARRY4(uVar16,uVar16);
  uVar5 = uVar4 + uVar16 * 2;
  uVar3 = (uint)CARRY4(uVar4,uVar16 * 2);
  uVar22 = uVar14 + uVar25;
  uVar15 = uVar22 + uVar3;
  uVar26 = (uint)((ulonglong)param_2[5] * (ulonglong)param_2[2] >> 0x20);
  uVar17 = (uint)((ulonglong)param_2[5] * (ulonglong)param_2[2]);
  uVar27 = uVar26 * 2 + (uint)CARRY4(uVar17,uVar17);
  uVar23 = uVar5 + uVar17 * 2;
  uVar5 = (uint)CARRY4(uVar5,uVar17 * 2);
  uVar8 = uVar15 + uVar27;
  uVar21 = uVar8 + uVar5;
  uVar20 = (uint)((ulonglong)param_2[4] * (ulonglong)param_2[3] >> 0x20);
  uVar18 = (uint)((ulonglong)param_2[4] * (ulonglong)param_2[3]);
  uVar12 = uVar20 * 2 + (uint)CARRY4(uVar18,uVar18);
  uVar6 = (uint)CARRY4(uVar23,uVar18 * 2);
  uVar9 = uVar21 + uVar12;
  uVar28 = uVar9 + uVar6;
  uVar4 = param_2[7];
  uVar20 = (uint)(CARRY4(uVar19,uVar19) || CARRY4(uVar19 * 2,(uint)CARRY4(uVar10,uVar10))) +
           (uint)(CARRY4(uVar13,uVar11) || CARRY4(uVar7,uVar1)) +
           (uint)(CARRY4(uVar24,uVar24) || CARRY4(uVar24 * 2,(uint)CARRY4(uVar16,uVar16))) +
           (uint)(CARRY4(uVar14,uVar25) || CARRY4(uVar22,uVar3)) +
           (uint)(CARRY4(uVar26,uVar26) || CARRY4(uVar26 * 2,(uint)CARRY4(uVar17,uVar17))) +
           (uint)(CARRY4(uVar15,uVar27) || CARRY4(uVar8,uVar5)) +
           (uint)(CARRY4(uVar20,uVar20) || CARRY4(uVar20 * 2,(uint)CARRY4(uVar18,uVar18))) +
           (uint)(CARRY4(uVar21,uVar12) || CARRY4(uVar9,uVar6));
  param_1[7] = uVar23 + uVar18 * 2;
  uVar23 = (uint)((ulonglong)uVar4 * (ulonglong)param_2[1] >> 0x20);
  uVar10 = (uint)((ulonglong)uVar4 * (ulonglong)param_2[1]);
  uVar19 = uVar23 * 2 + (uint)CARRY4(uVar10,uVar10);
  uVar4 = uVar28 + uVar10 * 2;
  uVar1 = (uint)CARRY4(uVar28,uVar10 * 2);
  uVar7 = uVar20 + uVar19;
  uVar12 = uVar7 + uVar1;
  uVar11 = (uint)((ulonglong)param_2[6] * (ulonglong)param_2[2] >> 0x20);
  uVar16 = (uint)((ulonglong)param_2[6] * (ulonglong)param_2[2]);
  uVar24 = uVar11 * 2 + (uint)CARRY4(uVar16,uVar16);
  uVar5 = uVar4 + uVar16 * 2;
  uVar3 = (uint)CARRY4(uVar4,uVar16 * 2);
  uVar22 = uVar12 + uVar24;
  uVar13 = uVar22 + uVar3;
  uVar25 = (uint)((ulonglong)param_2[5] * (ulonglong)param_2[3] >> 0x20);
  uVar17 = (uint)((ulonglong)param_2[5] * (ulonglong)param_2[3]);
  uVar26 = uVar25 * 2 + (uint)CARRY4(uVar17,uVar17);
  uVar21 = uVar5 + uVar17 * 2;
  uVar5 = (uint)CARRY4(uVar5,uVar17 * 2);
  uVar8 = uVar13 + uVar26;
  uVar14 = uVar8 + uVar5;
  lVar2 = (ulonglong)param_2[4] * (ulonglong)param_2[4];
  uVar27 = (uint)((ulonglong)lVar2 >> 0x20);
  uVar18 = (uint)lVar2;
  uVar6 = (uint)CARRY4(uVar21,uVar18);
  uVar9 = uVar14 + uVar27;
  uVar15 = uVar9 + uVar6;
  uVar4 = param_2[2];
  uVar16 = (uint)(CARRY4(uVar23,uVar23) || CARRY4(uVar23 * 2,(uint)CARRY4(uVar10,uVar10))) +
           (uint)(CARRY4(uVar20,uVar19) || CARRY4(uVar7,uVar1)) +
           (uint)(CARRY4(uVar11,uVar11) || CARRY4(uVar11 * 2,(uint)CARRY4(uVar16,uVar16))) +
           (uint)(CARRY4(uVar12,uVar24) || CARRY4(uVar22,uVar3)) +
           (uint)(CARRY4(uVar25,uVar25) || CARRY4(uVar25 * 2,(uint)CARRY4(uVar17,uVar17))) +
           (uint)(CARRY4(uVar13,uVar26) || CARRY4(uVar8,uVar5)) +
           (uint)(CARRY4(uVar14,uVar27) || CARRY4(uVar9,uVar6));
  param_1[8] = uVar21 + uVar18;
  uVar19 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar4 >> 0x20);
  uVar8 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar4);
  uVar11 = uVar19 * 2 + (uint)CARRY4(uVar8,uVar8);
  uVar4 = uVar15 + uVar8 * 2;
  uVar1 = (uint)CARRY4(uVar15,uVar8 * 2);
  uVar6 = uVar16 + uVar11;
  uVar17 = uVar6 + uVar1;
  uVar24 = (uint)((ulonglong)param_2[6] * (ulonglong)param_2[3] >> 0x20);
  uVar9 = (uint)((ulonglong)param_2[6] * (ulonglong)param_2[3]);
  uVar25 = uVar24 * 2 + (uint)CARRY4(uVar9,uVar9);
  uVar20 = uVar4 + uVar9 * 2;
  uVar3 = (uint)CARRY4(uVar4,uVar9 * 2);
  uVar7 = uVar17 + uVar25;
  uVar18 = uVar7 + uVar3;
  uVar26 = (uint)((ulonglong)param_2[5] * (ulonglong)param_2[4] >> 0x20);
  uVar10 = (uint)((ulonglong)param_2[5] * (ulonglong)param_2[4]);
  uVar27 = uVar26 * 2 + (uint)CARRY4(uVar10,uVar10);
  uVar5 = (uint)CARRY4(uVar20,uVar10 * 2);
  uVar22 = uVar18 + uVar27;
  uVar23 = uVar22 + uVar5;
  uVar4 = param_2[7];
  uVar24 = (uint)(CARRY4(uVar19,uVar19) || CARRY4(uVar19 * 2,(uint)CARRY4(uVar8,uVar8))) +
           (uint)(CARRY4(uVar16,uVar11) || CARRY4(uVar6,uVar1)) +
           (uint)(CARRY4(uVar24,uVar24) || CARRY4(uVar24 * 2,(uint)CARRY4(uVar9,uVar9))) +
           (uint)(CARRY4(uVar17,uVar25) || CARRY4(uVar7,uVar3)) +
           (uint)(CARRY4(uVar26,uVar26) || CARRY4(uVar26 * 2,(uint)CARRY4(uVar10,uVar10))) +
           (uint)(CARRY4(uVar18,uVar27) || CARRY4(uVar22,uVar5));
  param_1[9] = uVar20 + uVar10 * 2;
  uVar17 = (uint)((ulonglong)uVar4 * (ulonglong)param_2[3] >> 0x20);
  uVar8 = (uint)((ulonglong)uVar4 * (ulonglong)param_2[3]);
  uVar18 = uVar17 * 2 + (uint)CARRY4(uVar8,uVar8);
  uVar4 = uVar23 + uVar8 * 2;
  uVar1 = (uint)CARRY4(uVar23,uVar8 * 2);
  uVar6 = uVar24 + uVar18;
  uVar25 = uVar6 + uVar1;
  uVar23 = (uint)((ulonglong)param_2[6] * (ulonglong)param_2[4] >> 0x20);
  uVar9 = (uint)((ulonglong)param_2[6] * (ulonglong)param_2[4]);
  uVar19 = uVar23 * 2 + (uint)CARRY4(uVar9,uVar9);
  uVar16 = uVar4 + uVar9 * 2;
  uVar3 = (uint)CARRY4(uVar4,uVar9 * 2);
  uVar7 = uVar25 + uVar19;
  uVar26 = uVar7 + uVar3;
  lVar2 = (ulonglong)param_2[5] * (ulonglong)param_2[5];
  uVar11 = (uint)((ulonglong)lVar2 >> 0x20);
  uVar10 = (uint)lVar2;
  uVar5 = (uint)CARRY4(uVar16,uVar10);
  uVar22 = uVar26 + uVar11;
  uVar27 = uVar22 + uVar5;
  uVar4 = param_2[4];
  uVar17 = (uint)(CARRY4(uVar17,uVar17) || CARRY4(uVar17 * 2,(uint)CARRY4(uVar8,uVar8))) +
           (uint)(CARRY4(uVar24,uVar18) || CARRY4(uVar6,uVar1)) +
           (uint)(CARRY4(uVar23,uVar23) || CARRY4(uVar23 * 2,(uint)CARRY4(uVar9,uVar9))) +
           (uint)(CARRY4(uVar25,uVar19) || CARRY4(uVar7,uVar3)) +
           (uint)(CARRY4(uVar26,uVar11) || CARRY4(uVar22,uVar5));
  param_1[10] = uVar16 + uVar10;
  uVar8 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar4 >> 0x20);
  uVar7 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar4);
  uVar9 = uVar8 * 2 + (uint)CARRY4(uVar7,uVar7);
  uVar19 = uVar27 + uVar7 * 2;
  uVar1 = (uint)CARRY4(uVar27,uVar7 * 2);
  uVar5 = uVar17 + uVar9;
  uVar18 = uVar5 + uVar1;
  uVar10 = (uint)((ulonglong)param_2[6] * (ulonglong)param_2[5] >> 0x20);
  uVar22 = (uint)((ulonglong)param_2[6] * (ulonglong)param_2[5]);
  uVar16 = uVar10 * 2 + (uint)CARRY4(uVar22,uVar22);
  uVar3 = (uint)CARRY4(uVar19,uVar22 * 2);
  uVar6 = uVar18 + uVar16;
  uVar23 = uVar6 + uVar3;
  uVar4 = param_2[7];
  uVar8 = (uint)(CARRY4(uVar8,uVar8) || CARRY4(uVar8 * 2,(uint)CARRY4(uVar7,uVar7))) +
          (uint)(CARRY4(uVar17,uVar9) || CARRY4(uVar5,uVar1)) +
          (uint)(CARRY4(uVar10,uVar10) || CARRY4(uVar10 * 2,(uint)CARRY4(uVar22,uVar22))) +
          (uint)(CARRY4(uVar18,uVar16) || CARRY4(uVar6,uVar3));
  param_1[0xb] = uVar19 + uVar22 * 2;
  uVar16 = (uint)((ulonglong)uVar4 * (ulonglong)param_2[5] >> 0x20);
  uVar7 = (uint)((ulonglong)uVar4 * (ulonglong)param_2[5]);
  uVar17 = uVar16 * 2 + (uint)CARRY4(uVar7,uVar7);
  uVar19 = uVar23 + uVar7 * 2;
  uVar1 = (uint)CARRY4(uVar23,uVar7 * 2);
  uVar5 = uVar8 + uVar17;
  uVar9 = uVar5 + uVar1;
  lVar2 = (ulonglong)param_2[6] * (ulonglong)param_2[6];
  uVar18 = (uint)((ulonglong)lVar2 >> 0x20);
  uVar22 = (uint)lVar2;
  uVar3 = (uint)CARRY4(uVar19,uVar22);
  uVar6 = uVar9 + uVar18;
  uVar10 = uVar6 + uVar3;
  uVar4 = param_2[6];
  uVar8 = (uint)(CARRY4(uVar16,uVar16) || CARRY4(uVar16 * 2,(uint)CARRY4(uVar7,uVar7))) +
          (uint)(CARRY4(uVar8,uVar17) || CARRY4(uVar5,uVar1)) +
          (uint)(CARRY4(uVar9,uVar18) || CARRY4(uVar6,uVar3));
  param_1[0xc] = uVar19 + uVar22;
  uVar6 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar4 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[7] * (ulonglong)uVar4);
  uVar7 = uVar6 * 2 + (uint)CARRY4(uVar5,uVar5);
  uVar1 = (uint)CARRY4(uVar10,uVar5 * 2);
  uVar3 = uVar8 + uVar7;
  uVar4 = param_2[7];
  param_1[0xd] = uVar10 + uVar5 * 2;
  *(ulonglong *)(param_1 + 0xe) =
       (ulonglong)uVar4 * (ulonglong)uVar4 +
       CONCAT44((uint)(CARRY4(uVar6,uVar6) || CARRY4(uVar6 * 2,(uint)CARRY4(uVar5,uVar5))) +
                (uint)(CARRY4(uVar8,uVar7) || CARRY4(uVar3,uVar1)),uVar3 + uVar1);
  return;
}



void FUN_00ae6e00(undefined4 *param_1,uint *param_2)

{
  uint uVar1;
  uint uVar2;
  longlong lVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  
  lVar3 = (ulonglong)*param_2 * (ulonglong)*param_2;
  uVar5 = (uint)((ulonglong)lVar3 >> 0x20);
  uVar1 = *param_2;
  *param_1 = (int)lVar3;
  uVar6 = (uint)((ulonglong)param_2[1] * (ulonglong)uVar1 >> 0x20);
  uVar4 = (uint)((ulonglong)param_2[1] * (ulonglong)uVar1);
  uVar7 = uVar6 * 2 + (uint)CARRY4(uVar4,uVar4);
  uVar2 = (uint)CARRY4(uVar5,uVar4 * 2);
  uVar15 = uVar7 + uVar2;
  uVar1 = param_2[2];
  uVar11 = (uint)(CARRY4(uVar6,uVar6) || CARRY4(uVar6 * 2,(uint)CARRY4(uVar4,uVar4))) +
           (uint)CARRY4(uVar7,uVar2);
  param_1[1] = uVar5 + uVar4 * 2;
  uVar8 = (uint)((ulonglong)uVar1 * (ulonglong)*param_2 >> 0x20);
  uVar7 = (uint)((ulonglong)uVar1 * (ulonglong)*param_2);
  uVar9 = uVar8 * 2 + (uint)CARRY4(uVar7,uVar7);
  uVar16 = uVar15 + uVar7 * 2;
  uVar2 = (uint)CARRY4(uVar15,uVar7 * 2);
  uVar5 = uVar11 + uVar9;
  uVar12 = uVar5 + uVar2;
  lVar3 = (ulonglong)param_2[1] * (ulonglong)param_2[1];
  uVar10 = (uint)((ulonglong)lVar3 >> 0x20);
  uVar15 = (uint)lVar3;
  uVar4 = (uint)CARRY4(uVar16,uVar15);
  uVar6 = uVar12 + uVar10;
  uVar13 = uVar6 + uVar4;
  uVar1 = *param_2;
  uVar8 = (uint)(CARRY4(uVar8,uVar8) || CARRY4(uVar8 * 2,(uint)CARRY4(uVar7,uVar7))) +
          (uint)(CARRY4(uVar11,uVar9) || CARRY4(uVar5,uVar2)) +
          (uint)(CARRY4(uVar12,uVar10) || CARRY4(uVar6,uVar4));
  param_1[2] = uVar16 + uVar15;
  uVar11 = (uint)((ulonglong)param_2[3] * (ulonglong)uVar1 >> 0x20);
  uVar7 = (uint)((ulonglong)param_2[3] * (ulonglong)uVar1);
  uVar12 = uVar11 * 2 + (uint)CARRY4(uVar7,uVar7);
  uVar14 = uVar13 + uVar7 * 2;
  uVar2 = (uint)CARRY4(uVar13,uVar7 * 2);
  uVar5 = uVar8 + uVar12;
  uVar9 = uVar5 + uVar2;
  uVar13 = (uint)((ulonglong)param_2[2] * (ulonglong)param_2[1] >> 0x20);
  uVar15 = (uint)((ulonglong)param_2[2] * (ulonglong)param_2[1]);
  uVar16 = uVar13 * 2 + (uint)CARRY4(uVar15,uVar15);
  uVar4 = (uint)CARRY4(uVar14,uVar15 * 2);
  uVar6 = uVar9 + uVar16;
  uVar10 = uVar6 + uVar4;
  uVar1 = param_2[3];
  uVar12 = (uint)(CARRY4(uVar11,uVar11) || CARRY4(uVar11 * 2,(uint)CARRY4(uVar7,uVar7))) +
           (uint)(CARRY4(uVar8,uVar12) || CARRY4(uVar5,uVar2)) +
           (uint)(CARRY4(uVar13,uVar13) || CARRY4(uVar13 * 2,(uint)CARRY4(uVar15,uVar15))) +
           (uint)(CARRY4(uVar9,uVar16) || CARRY4(uVar6,uVar4));
  param_1[3] = uVar14 + uVar15 * 2;
  uVar9 = (uint)((ulonglong)uVar1 * (ulonglong)param_2[1] >> 0x20);
  uVar7 = (uint)((ulonglong)uVar1 * (ulonglong)param_2[1]);
  uVar11 = uVar9 * 2 + (uint)CARRY4(uVar7,uVar7);
  uVar8 = uVar10 + uVar7 * 2;
  uVar2 = (uint)CARRY4(uVar10,uVar7 * 2);
  uVar5 = uVar12 + uVar11;
  uVar13 = uVar5 + uVar2;
  lVar3 = (ulonglong)param_2[2] * (ulonglong)param_2[2];
  uVar10 = (uint)((ulonglong)lVar3 >> 0x20);
  uVar15 = (uint)lVar3;
  uVar4 = (uint)CARRY4(uVar8,uVar15);
  uVar6 = uVar13 + uVar10;
  uVar16 = uVar6 + uVar4;
  uVar1 = param_2[2];
  uVar9 = (uint)(CARRY4(uVar9,uVar9) || CARRY4(uVar9 * 2,(uint)CARRY4(uVar7,uVar7))) +
          (uint)(CARRY4(uVar12,uVar11) || CARRY4(uVar5,uVar2)) +
          (uint)(CARRY4(uVar13,uVar10) || CARRY4(uVar6,uVar4));
  param_1[4] = uVar8 + uVar15;
  uVar6 = (uint)((ulonglong)param_2[3] * (ulonglong)uVar1 >> 0x20);
  uVar5 = (uint)((ulonglong)param_2[3] * (ulonglong)uVar1);
  uVar7 = uVar6 * 2 + (uint)CARRY4(uVar5,uVar5);
  uVar2 = (uint)CARRY4(uVar16,uVar5 * 2);
  uVar4 = uVar9 + uVar7;
  uVar1 = param_2[3];
  param_1[5] = uVar16 + uVar5 * 2;
  *(ulonglong *)(param_1 + 6) =
       (ulonglong)uVar1 * (ulonglong)uVar1 +
       CONCAT44((uint)(CARRY4(uVar6,uVar6) || CARRY4(uVar6 * 2,(uint)CARRY4(uVar5,uVar5))) +
                (uint)(CARRY4(uVar9,uVar7) || CARRY4(uVar4,uVar2)),uVar4 + uVar2);
  return;
}



void FUN_00ae6ef0(int param_1)

{
  FUN_00af0730(param_1);
  *(undefined4 *)(param_1 + 0xa0) = 0;
  *(undefined4 *)(param_1 + 0xa4) = 0;
  return;
}



void FUN_00ae6f10(int param_1)

{
  if (*(int *)(param_1 + 0xa0) != 0) {
    FUN_00ad0140(*(int *)(param_1 + 0xa0));
    *(undefined4 *)(param_1 + 0xa0) = 0;
  }
  if (*(int *)(param_1 + 0xa4) != 0) {
    FUN_00a9a9b0(*(int *)(param_1 + 0xa4));
    *(undefined4 *)(param_1 + 0xa4) = 0;
  }
  FUN_00ae73b0(param_1);
  return;
}



void FUN_00ae6f60(int param_1)

{
  if (*(int *)(param_1 + 0xa0) != 0) {
    FUN_00ad0140(*(int *)(param_1 + 0xa0));
    *(undefined4 *)(param_1 + 0xa0) = 0;
  }
  if (*(int *)(param_1 + 0xa4) != 0) {
    FUN_00a9a950(*(int *)(param_1 + 0xa4));
    *(undefined4 *)(param_1 + 0xa4) = 0;
  }
  FUN_00af0770(param_1);
  return;
}



undefined4 FUN_00ae6fb0(int param_1,int param_2)

{
  int iVar1;
  
  if (*(int *)(param_1 + 0xa0) != 0) {
    FUN_00ad0140(*(int *)(param_1 + 0xa0));
    *(undefined4 *)(param_1 + 0xa0) = 0;
  }
  if (*(int *)(param_1 + 0xa4) != 0) {
    FUN_00a9a950(*(int *)(param_1 + 0xa4));
    *(undefined4 *)(param_1 + 0xa4) = 0;
  }
  iVar1 = FUN_00af07a0(param_1,param_2);
  if (iVar1 == 0) {
    return 0;
  }
  if (*(int *)(param_2 + 0xa0) != 0) {
    iVar1 = FUN_00ad0520();
    *(int *)(param_1 + 0xa0) = iVar1;
    if (iVar1 == 0) {
      return 0;
    }
    iVar1 = FUN_00ad0390(iVar1,*(undefined4 *)(param_2 + 0xa0));
    if (iVar1 == 0) goto LAB_00ae704b;
  }
  if (*(int *)(param_2 + 0xa4) == 0) {
    return 1;
  }
  iVar1 = FUN_00a9b160(*(int *)(param_2 + 0xa4));
  *(int *)(param_1 + 0xa4) = iVar1;
  if (iVar1 != 0) {
    return 1;
  }
LAB_00ae704b:
  if (*(int *)(param_1 + 0xa0) != 0) {
    FUN_00ad0140(*(int *)(param_1 + 0xa0));
    *(undefined4 *)(param_1 + 0xa0) = 0;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00ae7080(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int local_8;
  int local_4;
  
  local_8 = 0;
  local_4 = 0;
  if (*(int *)(param_1 + 0xa0) != 0) {
    FUN_00ad0140(*(int *)(param_1 + 0xa0));
    *(undefined4 *)(param_1 + 0xa0) = 0;
  }
  if (*(int *)(param_1 + 0xa4) != 0) {
    FUN_00a9a9b0(*(int *)(param_1 + 0xa4));
    *(undefined4 *)(param_1 + 0xa4) = 0;
  }
  if ((param_5 == 0) && (param_5 = FUN_00aa49c0(), local_8 = param_5, param_5 == 0)) {
    return 0;
  }
  iVar1 = FUN_00ad0520();
  if (iVar1 != 0) {
    iVar2 = FUN_00ad0180(iVar1,param_2,param_5);
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x10,0xbd,3,".\\crypto\\ec\\ecp_mont.c",0xe9);
    }
    else {
      iVar2 = FUN_00a9aa10();
      if (iVar2 != 0) {
        uVar3 = FUN_00a9a8c0(iVar1 + 4,iVar1,param_5);
        iVar4 = FUN_00ad0400(iVar2,uVar3);
        if (iVar4 != 0) {
          *(int *)(param_1 + 0xa0) = iVar1;
          iVar1 = 0;
          *(int *)(param_1 + 0xa4) = iVar2;
          local_4 = FUN_00af0810(param_1,param_2,param_3,param_4,param_5);
          if (local_4 == 0) {
            FUN_00ad0140(*(undefined4 *)(param_1 + 0xa0));
            *(undefined4 *)(param_1 + 0xa0) = 0;
            FUN_00a9a9b0(*(undefined4 *)(param_1 + 0xa4));
            *(undefined4 *)(param_1 + 0xa4) = 0;
          }
        }
      }
    }
  }
  if (local_8 != 0) {
    FUN_00aa4a20(local_8);
  }
  if (iVar1 != 0) {
    FUN_00ad0140(iVar1);
  }
  return local_4;
}



undefined * FUN_00ae7370(void)

{
  return &DAT_00dc7410;
}



undefined4 FUN_00ae7380(int param_1)

{
  FUN_00a9a9f0(param_1 + 0x48);
  FUN_00a9a9f0(param_1 + 0x74);
  FUN_00a9a9f0(param_1 + 0x88);
  return 1;
}



void FUN_00ae73b0(int param_1)

{
  FUN_00a9a9b0(param_1 + 0x48);
  FUN_00a9a9b0(param_1 + 0x74);
  FUN_00a9a9b0(param_1 + 0x88);
  return;
}



void FUN_00ae73e0(int param_1)

{
  FUN_00a9a950(param_1 + 0x48);
  FUN_00a9a950(param_1 + 0x74);
  FUN_00a9a950(param_1 + 0x88);
  *(undefined4 *)(param_1 + 0x5c) = 0;
  *(undefined4 *)(param_1 + 0x60) = 0;
  *(undefined4 *)(param_1 + 100) = 0;
  *(undefined4 *)(param_1 + 0x68) = 0;
  *(undefined4 *)(param_1 + 0x6c) = 0;
  *(undefined4 *)(param_1 + 0x70) = 0xffffffff;
  return;
}



undefined4 FUN_00ae7420(int param_1,int param_2)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  int *piVar4;
  
  iVar3 = FUN_00a9aba0(param_1 + 0x48,param_2 + 0x48);
  if (iVar3 == 0) {
    return 0;
  }
  piVar1 = (int *)(param_1 + 0x74);
  iVar3 = FUN_00a9aba0(piVar1,param_2 + 0x74);
  if (iVar3 != 0) {
    piVar2 = (int *)(param_1 + 0x88);
    iVar3 = FUN_00a9aba0(piVar2,param_2 + 0x88);
    if (iVar3 != 0) {
      *(undefined4 *)(param_1 + 0x5c) = *(undefined4 *)(param_2 + 0x5c);
      *(undefined4 *)(param_1 + 0x60) = *(undefined4 *)(param_2 + 0x60);
      *(undefined4 *)(param_1 + 100) = *(undefined4 *)(param_2 + 100);
      *(undefined4 *)(param_1 + 0x68) = *(undefined4 *)(param_2 + 0x68);
      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_2 + 0x6c);
      *(undefined4 *)(param_1 + 0x70) = *(undefined4 *)(param_2 + 0x70);
      iVar3 = *(int *)(param_1 + 0x5c) + 0x1f;
      iVar3 = (int)(iVar3 + (iVar3 >> 0x1f & 0x1fU)) >> 5;
      piVar4 = piVar1;
      if (*(int *)(param_1 + 0x7c) < iVar3) {
        piVar4 = (int *)FUN_00a9ab60(piVar1,iVar3);
      }
      if (piVar4 != (int *)0x0) {
        iVar3 = *(int *)(param_1 + 0x5c) + 0x1f;
        iVar3 = (int)(iVar3 + (iVar3 >> 0x1f & 0x1fU)) >> 5;
        piVar4 = piVar2;
        if (*(int *)(param_1 + 0x90) < iVar3) {
          piVar4 = (int *)FUN_00a9ab60(piVar2,iVar3);
        }
        if (piVar4 != (int *)0x0) {
          iVar3 = *(int *)(param_1 + 0x78);
          if (iVar3 < *(int *)(param_1 + 0x7c)) {
            do {
              *(undefined4 *)(*piVar1 + iVar3 * 4) = 0;
              iVar3 = iVar3 + 1;
            } while (iVar3 < *(int *)(param_1 + 0x7c));
          }
          iVar3 = *(int *)(param_1 + 0x8c);
          if (iVar3 < *(int *)(param_1 + 0x90)) {
            do {
              *(undefined4 *)(*piVar2 + iVar3 * 4) = 0;
              iVar3 = iVar3 + 1;
            } while (iVar3 < *(int *)(param_1 + 0x90));
          }
          return 1;
        }
      }
    }
    return 0;
  }
  return 0;
}



undefined4 FUN_00ae77a0(int param_1)

{
  FUN_00a9a9f0(param_1 + 4);
  FUN_00a9a9f0(param_1 + 0x18);
  FUN_00a9a9f0(param_1 + 0x2c);
  return 1;
}



void FUN_00ae77d0(int param_1)

{
  FUN_00a9a950(param_1 + 4);
  FUN_00a9a950(param_1 + 0x18);
  FUN_00a9a950(param_1 + 0x2c);
  *(undefined4 *)(param_1 + 0x40) = 0;
  return;
}



undefined4 FUN_00ae7800(int param_1,int param_2)

{
  int iVar1;
  
  iVar1 = FUN_00a9aba0(param_1 + 4,param_2 + 4);
  if (iVar1 != 0) {
    iVar1 = FUN_00a9aba0(param_1 + 0x18,param_2 + 0x18);
    if (iVar1 != 0) {
      iVar1 = FUN_00a9aba0(param_1 + 0x2c,param_2 + 0x2c);
      if (iVar1 != 0) {
        *(undefined4 *)(param_1 + 0x40) = *(undefined4 *)(param_2 + 0x40);
        return 1;
      }
    }
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

bool FUN_00ae79d0(int *param_1,undefined4 param_2,int param_3,int param_4,int param_5)

{
  bool bVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  int *piVar9;
  int iVar10;
  int local_4;
  
  local_4 = 0;
  bVar1 = false;
  iVar2 = FUN_00aa3f40(param_1,param_3);
  if (iVar2 != 0) {
    iVar2 = FUN_00aa3a80(param_2,param_4);
    return iVar2 != 0;
  }
  iVar2 = FUN_00aa3f40(param_1,param_4);
  if (iVar2 != 0) {
    iVar2 = FUN_00aa3a80(param_2,param_3);
    return iVar2 != 0;
  }
  if ((param_5 == 0) && (param_5 = FUN_00aa49c0(), local_4 = param_5, param_5 == 0)) {
    return false;
  }
  FUN_00aa4a50(param_5);
  uVar3 = FUN_00aa4ae0(param_5);
  uVar4 = FUN_00aa4ae0(param_5);
  iVar2 = FUN_00aa4ae0(param_5);
  uVar5 = FUN_00aa4ae0(param_5);
  uVar6 = FUN_00aa4ae0(param_5);
  uVar7 = FUN_00aa4ae0(param_5);
  uVar8 = FUN_00aa4ae0(param_5);
  piVar9 = (int *)FUN_00aa4ae0(param_5);
  if (piVar9 == (int *)0x0) goto LAB_00ae7d51;
  if (*(int *)(param_3 + 0x40) == 0) {
    iVar10 = FUN_00aa3d70(param_1,param_3,uVar3,uVar4,param_5);
  }
  else {
    iVar10 = FUN_00a9aba0(uVar3,param_3 + 4);
    if (iVar10 == 0) goto LAB_00ae7d51;
    iVar10 = FUN_00a9aba0(uVar4,param_3 + 0x18);
  }
  if (iVar10 == 0) goto LAB_00ae7d51;
  if (*(int *)(param_4 + 0x40) == 0) {
    iVar10 = FUN_00aa3d70(param_1,param_4,iVar2,uVar5,param_5);
  }
  else {
    iVar10 = FUN_00a9aba0(iVar2,param_4 + 4);
    if (iVar10 == 0) goto LAB_00ae7d51;
    iVar10 = FUN_00a9aba0(uVar5,param_4 + 0x18);
  }
  if (iVar10 == 0) goto LAB_00ae7d51;
  iVar10 = FUN_00a9ae10(uVar3,iVar2);
  if (iVar10 == 0) {
    iVar10 = FUN_00a9ae10(uVar4,uVar5);
    if ((iVar10 == 0) && (*(int *)(iVar2 + 4) != 0)) {
      iVar10 = (**(code **)(*param_1 + 0x8c))(param_1,uVar8,uVar5,iVar2,param_5);
      if ((iVar10 == 0) ||
         (((iVar10 = FUN_00af30e0(uVar8,uVar8,iVar2), iVar10 == 0 ||
           (iVar10 = (**(code **)(*param_1 + 0x88))(param_1,uVar6,uVar8,param_5), iVar10 == 0)) ||
          (iVar10 = FUN_00af30e0(uVar6,uVar6,uVar8), iVar10 == 0)))) goto LAB_00ae7d51;
      piVar9 = param_1 + 0x1d;
      goto LAB_00ae7cbe;
    }
    iVar2 = FUN_00aa3b50(param_1,param_2);
  }
  else {
    iVar10 = FUN_00af30e0(piVar9,uVar3,iVar2);
    if ((((iVar10 == 0) || (iVar10 = FUN_00af30e0(uVar8,uVar4,uVar5), iVar10 == 0)) ||
        ((iVar10 = (**(code **)(*param_1 + 0x8c))(param_1,uVar8,uVar8,piVar9,param_5), iVar10 == 0
         || ((iVar10 = (**(code **)(*param_1 + 0x88))(param_1,uVar6,uVar8,param_5), iVar10 == 0 ||
             (iVar10 = FUN_00af30e0(uVar6,uVar6,param_1 + 0x1d), iVar10 == 0)))))) ||
       (iVar10 = FUN_00af30e0(uVar6,uVar6,uVar8), iVar10 == 0)) goto LAB_00ae7d51;
LAB_00ae7cbe:
    iVar10 = FUN_00af30e0(uVar6,uVar6,piVar9);
    if ((((iVar10 == 0) || (iVar2 = FUN_00af30e0(uVar7,iVar2,uVar6), iVar2 == 0)) ||
        (iVar2 = (**(code **)(*param_1 + 0x84))(param_1,uVar7,uVar7,uVar8,param_5), iVar2 == 0)) ||
       ((iVar2 = FUN_00af30e0(uVar7,uVar7,uVar6), iVar2 == 0 ||
        (iVar2 = FUN_00af30e0(uVar7,uVar7,uVar5), iVar2 == 0)))) goto LAB_00ae7d51;
    iVar2 = FUN_00aa3c90(param_1,param_2,uVar6,uVar7,param_5);
  }
  if (iVar2 != 0) {
    bVar1 = true;
  }
LAB_00ae7d51:
  FUN_00aa4aa0(param_5);
  if (local_4 != 0) {
    FUN_00aa4a20(local_4);
  }
  return bVar1;
}



undefined4 FUN_00ae7da0(undefined4 param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_00aa3f40(param_1,param_2);
  if ((iVar1 == 0) && (*(int *)(param_2 + 0x1c) != 0)) {
    iVar1 = FUN_00aa4070(param_1,param_2,param_3);
    if (iVar1 == 0) {
      return 0;
    }
    uVar2 = FUN_00af30e0(param_2 + 0x18,param_2 + 4,param_2 + 0x18);
    return uVar2;
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00ae7e00(int *param_1,int param_2,int param_3)

{
  code *pcVar1;
  code *pcVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  int local_14;
  uint local_10;
  
  local_10 = 0xffffffff;
  local_14 = 0;
  iVar3 = FUN_00aa3f40(param_1,param_2);
  if (iVar3 != 0) {
    return 1;
  }
  pcVar1 = *(code **)(*param_1 + 0x84);
  pcVar2 = *(code **)(*param_1 + 0x88);
  if (*(int *)(param_2 + 0x40) == 0) {
    return 0xffffffff;
  }
  if (param_3 == 0) {
    param_3 = FUN_00aa49c0();
    local_14 = param_3;
    if (param_3 == 0) {
      return 0xffffffff;
    }
  }
  FUN_00aa4a50(param_3);
  uVar4 = FUN_00aa4ae0(param_3);
  iVar3 = FUN_00aa4ae0(param_3);
  if (iVar3 != 0) {
    iVar6 = param_2 + 4;
    iVar5 = FUN_00af30e0(iVar3,iVar6,param_1 + 0x1d);
    if (iVar5 != 0) {
      iVar5 = (*pcVar1)(param_1,iVar3,iVar3,iVar6,param_3);
      if (iVar5 != 0) {
        iVar5 = FUN_00af30e0(iVar3,iVar3,param_2 + 0x18);
        if (iVar5 != 0) {
          iVar5 = (*pcVar1)(param_1,iVar3,iVar3,iVar6,param_3);
          if (iVar5 != 0) {
            iVar5 = FUN_00af30e0(iVar3,iVar3,param_1 + 0x22);
            if (iVar5 != 0) {
              iVar5 = (*pcVar2)(param_1,uVar4,param_2 + 0x18,param_3);
              if (iVar5 != 0) {
                iVar5 = FUN_00af30e0(iVar3,iVar3,uVar4);
                if (iVar5 != 0) {
                  local_10 = (uint)(*(int *)(iVar3 + 4) == 0);
                }
              }
            }
          }
        }
      }
    }
  }
  if (param_3 != 0) {
    FUN_00aa4aa0(param_3);
  }
  if (local_14 != 0) {
    FUN_00aa4a20(local_14);
  }
  return local_10;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00ae7f70(undefined4 param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int iVar5;
  uint local_10;
  int local_4;
  
  local_4 = 0;
  local_10 = 0xffffffff;
  iVar1 = FUN_00aa3f40(param_1,param_2);
  if (iVar1 != 0) {
    iVar1 = FUN_00aa3f40(param_1,param_3);
    return (uint)(iVar1 == 0);
  }
  iVar1 = FUN_00aa3f40(param_1,param_3);
  if (iVar1 == 0) {
    if ((*(int *)(param_2 + 0x40) == 0) || (*(int *)(param_3 + 0x40) == 0)) {
      if (param_4 == 0) {
        param_4 = FUN_00aa49c0();
        local_4 = param_4;
        if (param_4 == 0) {
          return 0xffffffff;
        }
      }
      FUN_00aa4a50(param_4);
      uVar2 = FUN_00aa4ae0(param_4);
      uVar3 = FUN_00aa4ae0(param_4);
      uVar4 = FUN_00aa4ae0(param_4);
      iVar1 = FUN_00aa4ae0(param_4);
      if (iVar1 != 0) {
        iVar5 = FUN_00aa3d70(param_1,param_2,uVar2,uVar3,param_4);
        if (iVar5 != 0) {
          iVar5 = FUN_00aa3d70(param_1,param_3,uVar4,iVar1,param_4);
          if (iVar5 != 0) {
            iVar5 = FUN_00a9ae60(uVar2,uVar4);
            if (iVar5 == 0) {
              iVar1 = FUN_00a9ae60(uVar3,iVar1);
              local_10 = 0;
              if (iVar1 == 0) goto LAB_00ae80cc;
            }
            local_10 = 1;
          }
        }
      }
LAB_00ae80cc:
      if (param_4 != 0) {
        FUN_00aa4aa0(param_4);
      }
      if (local_4 != 0) {
        FUN_00aa4a20(local_4);
      }
      return local_10;
    }
    iVar1 = FUN_00a9ae60(param_2 + 4,param_3 + 4);
    if (iVar1 == 0) {
      iVar1 = FUN_00a9ae60(param_2 + 0x18,param_3 + 0x18);
      if (iVar1 == 0) {
        return 0;
      }
    }
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ae8100(undefined4 param_1,int param_2,int param_3)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int local_8;
  undefined4 local_4;
  
  local_8 = 0;
  local_4 = 0;
  if (*(int *)(param_2 + 0x40) == 0) {
    iVar1 = FUN_00aa3f40(param_1,param_2);
    if (iVar1 == 0) {
      if (param_3 == 0) {
        param_3 = FUN_00aa49c0();
        local_8 = param_3;
        if (param_3 == 0) {
          return 0;
        }
      }
      FUN_00aa4a50(param_3);
      uVar2 = FUN_00aa4ae0(param_3);
      iVar1 = FUN_00aa4ae0(param_3);
      if (iVar1 != 0) {
        iVar3 = FUN_00aa3d70(param_1,param_2,uVar2,iVar1,param_3);
        if (iVar3 != 0) {
          iVar3 = FUN_00a9aba0(param_2 + 4,uVar2);
          if (iVar3 != 0) {
            iVar1 = FUN_00a9aba0(param_2 + 0x18,iVar1);
            if (iVar1 != 0) {
              iVar1 = FUN_00a9ac50(param_2 + 0x2c,1);
              if (iVar1 != 0) {
                local_4 = 1;
              }
            }
          }
        }
      }
      if (param_3 != 0) {
        FUN_00aa4aa0(param_3);
      }
      if (local_8 != 0) {
        FUN_00aa4a20(local_8);
      }
      return local_4;
    }
  }
  return 1;
}



undefined4 FUN_00ae8200(int *param_1,uint param_2,int param_3,undefined4 param_4)

{
  int iVar1;
  uint uVar2;
  
  uVar2 = 0;
  if (param_2 != 0) {
    do {
      iVar1 = (**(code **)(*param_1 + 0x70))(param_1,*(undefined4 *)(param_3 + uVar2 * 4),param_4);
      if (iVar1 == 0) {
        return 0;
      }
      uVar2 = uVar2 + 1;
    } while (uVar2 < param_2);
  }
  return 1;
}



undefined * FUN_00ae82d0(void)

{
  return &DAT_00dc74c8;
}



undefined4 FUN_00ae82e0(int *param_1,undefined4 param_2,undefined4 param_3)

{
  undefined4 uVar1;
  
  if (param_1 != (int *)0x0) {
    if (*param_1 != 1) {
      if (*param_1 != 2) {
        return 0;
      }
      uVar1 = (*(code *)param_1[2])(param_2,param_3,param_1);
      return uVar1;
    }
    if ((code *)param_1[2] != (code *)0x0) {
      (*(code *)param_1[2])(param_2,param_3,param_1[1]);
    }
  }
  return 1;
}



undefined4 FUN_00ae8330(undefined4 param_1,int param_2)

{
  int iVar1;
  int **unaff_ESI;
  
  iVar1 = FUN_00acfa20();
  if (iVar1 == 0) {
    return 0xffffffff;
  }
  if ((((unaff_ESI[1] != (int *)0x1) || (**unaff_ESI != 1)) || (unaff_ESI[3] != (int *)0x0)) &&
     (iVar1 = FUN_00a9ae60(), iVar1 != 0)) {
    param_2 = param_2 + -1;
    while( true ) {
      if (param_2 == 0) {
        return 1;
      }
      iVar1 = FUN_00ad2d70();
      if (iVar1 == 0) break;
      if (((unaff_ESI[1] == (int *)0x1) && (**unaff_ESI == 1)) && (unaff_ESI[3] == (int *)0x0)) {
        return 1;
      }
      iVar1 = FUN_00a9ae60();
      if (iVar1 == 0) {
        return 0;
      }
      param_2 = param_2 + -1;
    }
    return 0xffffffff;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00ae83d0(void)

{
  undefined2 uVar1;
  int iVar2;
  uint uVar3;
  undefined auStack_1004 [2];
  ushort auStack_1002 [2047];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_1004;
  iVar2 = FUN_00aa4d00();
  do {
    if (iVar2 == 0) {
      ___security_check_cookie_4();
      return;
    }
    iVar2 = 0;
    do {
      uVar1 = FUN_00a9b6d0();
      *(undefined2 *)((int)auStack_1002 + iVar2) = uVar1;
      iVar2 = iVar2 + 2;
    } while (iVar2 < 0xffe);
    uVar3 = 0;
    do {
      iVar2 = 0;
      while( true ) {
        if (0xffd < iVar2) {
          FUN_00a9b7f0();
          ___security_check_cookie_4();
          return;
        }
        if ((*(ushort *)((int)auStack_1002 + iVar2) + uVar3) %
            (uint)*(ushort *)((int)&DAT_00dc7582 + iVar2) < 2) break;
        iVar2 = iVar2 + 2;
      }
      uVar3 = uVar3 + 2;
    } while (uVar3 < 0xffffba39);
    iVar2 = FUN_00aa4d00();
  } while( true );
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ae84b0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  int unaff_EBX;
  undefined2 *puVar4;
  undefined4 local_4;
  
  local_4 = 0;
  FUN_00aa4a50(param_3);
  iVar1 = FUN_00aa4ae0(param_3);
  if ((((iVar1 != 0) && (iVar2 = FUN_00aa4d00(), iVar2 != 0)) &&
      (iVar1 = FUN_00ad26e0(0,iVar1), iVar1 != 0)) && (iVar1 = FUN_00ad1720(), iVar1 != 0)) {
    if (unaff_EBX == 0) {
      iVar1 = FUN_00a9b7f0();
    }
    else {
      iVar1 = FUN_00ad17f0();
    }
    if (iVar1 != 0) {
      do {
        puVar4 = &DAT_00dc7582;
        while( true ) {
          if (0xdc857f < (int)puVar4) {
            local_4 = 1;
            goto LAB_00ae85a0;
          }
          uVar3 = FUN_00a9b6d0();
          if (uVar3 < 2) break;
          puVar4 = puVar4 + 1;
        }
        iVar1 = FUN_00ad17f0();
        if (iVar1 == 0) {
          FUN_00aa4aa0(param_3);
          return 0;
        }
      } while( true );
    }
  }
LAB_00ae85a0:
  FUN_00aa4aa0(param_3);
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ae85c0(undefined4 param_1,int param_2,undefined4 param_3,int param_4)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  undefined2 *puVar5;
  
  FUN_00aa4a50();
  uVar1 = FUN_00aa4ae0();
  uVar2 = FUN_00aa4ae0();
  iVar3 = FUN_00aa4ae0();
  if ((((iVar3 != 0) && (iVar4 = FUN_00a9ba80(iVar3,param_3), iVar4 != 0)) &&
      (iVar4 = FUN_00aa4d00(uVar2,param_2 + -1,0,1), iVar4 != 0)) &&
     ((iVar4 = FUN_00ad26e0(0,uVar1,uVar2,iVar3), iVar4 != 0 &&
      (iVar4 = FUN_00ad1720(uVar2,uVar2,uVar1), iVar4 != 0)))) {
    if (param_4 == 0) {
      iVar4 = FUN_00a9b7f0(uVar2,1);
    }
    else {
      iVar4 = FUN_00a9ba80(uVar1,param_4);
      if (iVar4 == 0) goto LAB_00ae8711;
      iVar4 = FUN_00ad17f0(uVar2,uVar2,uVar1);
    }
    if ((iVar4 != 0) && (iVar4 = FUN_00a9b9e0(param_1,uVar2), iVar4 != 0)) {
      iVar4 = FUN_00a9b7f0(param_1,1);
      while (iVar4 != 0) {
        puVar5 = &DAT_00dc7582;
        while( true ) {
          if (0xdc857f < (int)puVar5) {
            FUN_00aa4aa0();
            return 1;
          }
          iVar4 = FUN_00a9b6d0(param_1,*puVar5);
          if ((iVar4 == 0) || (iVar4 = FUN_00a9b6d0(uVar2,*puVar5), iVar4 == 0)) break;
          puVar5 = puVar5 + 1;
        }
        iVar4 = FUN_00ad17f0(param_1,param_1,param_3);
        if (iVar4 == 0) break;
        iVar4 = FUN_00ad17f0(uVar2,uVar2,iVar3);
      }
    }
  }
LAB_00ae8711:
  FUN_00aa4aa0();
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int * FUN_00ae8740(int **param_1,int param_2,int param_3,int param_4,undefined4 param_5)

{
  int *piVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  undefined2 *puVar8;
  int **local_18;
  int local_14;
  int *local_10;
  int local_4;
  
  local_10 = (int *)0xffffffff;
  local_14 = 0;
  uVar2 = FUN_00a9a8c0();
  iVar3 = FUN_00a9ae60(param_1,uVar2);
  if (iVar3 < 1) {
    return (int *)0x0;
  }
  if (param_2 == 0) {
    iVar3 = FUN_00a9a920(param_1);
    if (iVar3 < 0x514) {
      iVar3 = FUN_00a9a920(param_1);
      if (iVar3 < 0x352) {
        iVar3 = FUN_00a9a920(param_1);
        if (iVar3 < 0x28a) {
          iVar3 = FUN_00a9a920(param_1);
          if (iVar3 < 0x226) {
            iVar3 = FUN_00a9a920(param_1);
            if (iVar3 < 0x1c2) {
              iVar3 = FUN_00a9a920(param_1);
              if (iVar3 < 400) {
                iVar3 = FUN_00a9a920(param_1);
                if (iVar3 < 0x15e) {
                  iVar3 = FUN_00a9a920(param_1);
                  if (iVar3 < 300) {
                    iVar3 = FUN_00a9a920(param_1);
                    if (iVar3 < 0xfa) {
                      iVar3 = FUN_00a9a920(param_1);
                      if (iVar3 < 200) {
                        iVar3 = FUN_00a9a920(param_1);
                        param_2 = ((iVar3 < 0x96) - 1 & 0xfffffff7) + 0x1b;
                      }
                      else {
                        param_2 = 0xf;
                      }
                    }
                    else {
                      param_2 = 0xc;
                    }
                  }
                  else {
                    param_2 = 9;
                  }
                }
                else {
                  param_2 = 8;
                }
              }
              else {
                param_2 = 7;
              }
            }
            else {
              param_2 = 6;
            }
          }
          else {
            param_2 = 5;
          }
        }
        else {
          param_2 = 4;
        }
      }
      else {
        param_2 = 3;
      }
    }
    else {
      param_2 = 2;
    }
  }
  piVar1 = param_1[1];
  if (((int)piVar1 < 1) || ((*(byte *)*param_1 & 1) == 0)) {
    if (piVar1 != (int *)0x1) {
      return (int *)0x0;
    }
    if (**param_1 != 2) {
      return (int *)0x0;
    }
    if (param_1[3] != (int *)0x0) {
      return (int *)0x0;
    }
    return piVar1;
  }
  if (param_4 != 0) {
    puVar8 = &DAT_00dc7582;
    do {
      iVar3 = FUN_00a9b6d0(param_1,*puVar8);
      if (iVar3 == 0) {
        return (int *)0x0;
      }
      puVar8 = puVar8 + 1;
    } while ((int)puVar8 < 0xdc8580);
    iVar3 = FUN_00ae82e0(param_5,1,0xffffffff);
    if (iVar3 == 0) {
      return (int *)0xffffffff;
    }
  }
  iVar3 = param_3;
  if ((param_3 == 0) && (iVar3 = FUN_00aa49c0(), iVar3 == 0)) {
    return (int *)0xffffffff;
  }
  FUN_00aa4a50(iVar3);
  if (param_1[3] == (int *)0x0) {
    local_18 = param_1;
  }
  else {
    local_18 = (int **)FUN_00aa4ae0(iVar3);
    if (local_18 == (int **)0x0) goto LAB_00ae8ac0;
    FUN_00a9aba0(local_18,param_1);
    local_18[3] = (int *)0x0;
  }
  iVar4 = FUN_00aa4ae0(iVar3);
  uVar2 = FUN_00aa4ae0(iVar3);
  iVar5 = FUN_00aa4ae0(iVar3);
  if (((iVar5 != 0) && (iVar6 = FUN_00a9aba0(iVar4,local_18), iVar6 != 0)) &&
     (iVar6 = FUN_00a9b8a0(iVar4,1), iVar6 != 0)) {
    if (*(int *)(iVar4 + 4) == 0) {
LAB_00ae89c2:
      local_10 = (int *)0x0;
    }
    else {
      iVar6 = 1;
      iVar7 = FUN_00a9af90(iVar4,1);
      while (iVar7 == 0) {
        iVar6 = iVar6 + 1;
        iVar7 = FUN_00a9af90(iVar4,iVar6);
      }
      iVar7 = FUN_00a9bc70(uVar2,iVar4,iVar6);
      if (((iVar7 != 0) && (local_14 = FUN_00ad0520(), local_14 != 0)) &&
         (iVar7 = FUN_00ad0180(local_14,local_18,iVar3), iVar7 != 0)) {
        local_4 = 0;
        if (0 < param_2) {
          do {
            iVar7 = FUN_00aa4ed0(iVar5,iVar4);
            if (((iVar7 == 0) || (iVar7 = FUN_00a9b7f0(iVar5,1), iVar7 == 0)) ||
               (iVar7 = FUN_00ae8330(iVar4,iVar6,local_14), iVar7 == -1)) goto LAB_00ae8ac0;
            if (iVar7 != 0) goto LAB_00ae89c2;
            iVar7 = FUN_00ae82e0(param_5,1,local_4);
            if (iVar7 == 0) goto LAB_00ae8ac0;
            local_4 = local_4 + 1;
          } while (local_4 < param_2);
        }
        local_10 = (int *)0x1;
      }
    }
  }
LAB_00ae8ac0:
  if ((iVar3 != 0) && (FUN_00aa4aa0(iVar3), param_3 == 0)) {
    FUN_00aa4a20(iVar3);
  }
  if (local_14 != 0) {
    FUN_00ad0140(local_14);
  }
  return local_10;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00ae8b20(undefined4 param_1,int param_2,int param_3,int param_4,undefined4 param_5,int *param_6)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int local_10;
  int local_c;
  undefined4 local_4;
  
  local_4 = 0;
  local_c = 0;
  if (param_2 < 0x514) {
    if (param_2 < 0x352) {
      if (param_2 < 0x28a) {
        if (param_2 < 0x226) {
          if (param_2 < 0x1c2) {
            if (param_2 < 400) {
              if (param_2 < 0x15e) {
                if (param_2 < 300) {
                  if (param_2 < 0xfa) {
                    if (param_2 < 200) {
                      local_10 = ((param_2 < 0x96) - 1 & 0xfffffff7) + 0x1b;
                    }
                    else {
                      local_10 = 0xf;
                    }
                  }
                  else {
                    local_10 = 0xc;
                  }
                }
                else {
                  local_10 = 9;
                }
              }
              else {
                local_10 = 8;
              }
            }
            else {
              local_10 = 7;
            }
          }
          else {
            local_10 = 6;
          }
        }
        else {
          local_10 = 5;
        }
      }
      else {
        local_10 = 4;
      }
    }
    else {
      local_10 = 3;
    }
  }
  else {
    local_10 = 2;
  }
  iVar1 = FUN_00aa49c0();
  if (iVar1 == 0) {
    return 0;
  }
  FUN_00aa4a50(iVar1);
  iVar2 = FUN_00aa4ae0(iVar1);
  iVar3 = local_c;
  if (iVar2 != 0) {
LAB_00ae8c50:
    do {
      local_c = iVar3;
      if (param_4 == 0) {
        iVar3 = FUN_00ae83d0();
      }
      else if (param_3 == 0) {
        iVar3 = FUN_00ae84b0(param_2,param_4,iVar1);
      }
      else {
        iVar3 = FUN_00ae85c0(param_1,param_2,param_4,param_5);
      }
      if (iVar3 == 0) goto LAB_00ae8d06;
      if (param_6 == (int *)0x0) {
LAB_00ae8cca:
        iVar4 = 1;
      }
      else {
        if (*param_6 == 1) {
          if ((code *)param_6[2] != (code *)0x0) {
            (*(code *)param_6[2])(0,local_c,param_6[1]);
          }
          goto LAB_00ae8cca;
        }
        if (*param_6 == 2) {
          iVar4 = (*(code *)param_6[2])(0,local_c,param_6);
        }
        else {
          iVar4 = 0;
        }
      }
      iVar3 = local_c + 1;
      if (iVar4 == 0) goto LAB_00ae8d06;
      if (param_3 != 0) {
        iVar4 = FUN_00a9ba80(iVar2,param_1);
        if (iVar4 == 0) goto LAB_00ae8d06;
        iVar4 = 0;
        while( true ) {
          if (local_10 <= iVar4) goto LAB_00ae8cfd;
          iVar5 = FUN_00ae8740(param_1,1,iVar1,0,param_6);
          if (iVar5 == -1) goto LAB_00ae8d06;
          if (iVar5 == 0) break;
          iVar5 = FUN_00ae8740(iVar2,1,iVar1,0,param_6);
          if (iVar5 == -1) goto LAB_00ae8d06;
          if (iVar5 == 0) break;
          iVar5 = FUN_00ae82e0(param_6,2,local_c);
          if (iVar5 == 0) goto LAB_00ae8d06;
          iVar4 = iVar4 + 1;
        }
        goto LAB_00ae8c50;
      }
      iVar4 = FUN_00ae8740(param_1,local_10,iVar1,0,param_6);
      if (iVar4 == -1) goto LAB_00ae8d06;
    } while (iVar4 == 0);
LAB_00ae8cfd:
    local_4 = 1;
  }
LAB_00ae8d06:
  FUN_00aa4aa0(iVar1);
  FUN_00aa4a20(iVar1);
  return local_4;
}



undefined4
FUN_00ae8da0(byte **param_1,byte **param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  byte *pbVar1;
  undefined4 uVar2;
  
  pbVar1 = *param_1;
  if ((*(code **)(pbVar1 + 0x4c) == (code *)0x0) && ((*pbVar1 & 1) == 0)) {
    FUN_00a7f3c0(0x10,0x7d,0x42,".\\crypto\\ec\\ec_oct.c",0x4d);
    return 0;
  }
  if (pbVar1 != *param_2) {
    FUN_00a7f3c0(0x10,0x7d,0x65,".\\crypto\\ec\\ec_oct.c",0x52);
    return 0;
  }
  if ((*pbVar1 & 1) != 0) {
    if (*(int *)(pbVar1 + 4) == 0x196) {
      uVar2 = FUN_00af49f0(param_1,param_2,param_3,param_4,param_5);
      return uVar2;
    }
    uVar2 = FUN_00af41e0(param_1,param_2,param_3,param_4,param_5);
    return uVar2;
  }
  uVar2 = (**(code **)(pbVar1 + 0x4c))(param_1,param_2,param_3,param_4,param_5);
  return uVar2;
}



undefined4
FUN_00ae8e50(byte **param_1,byte **param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  byte *pbVar1;
  undefined4 uVar2;
  
  pbVar1 = *param_1;
  if ((*(code **)(pbVar1 + 0x4c) == (code *)0x0) && ((*pbVar1 & 1) == 0)) {
    FUN_00a7f3c0(0x10,0xba,0x42,".\\crypto\\ec\\ec_oct.c",0x6f);
    return 0;
  }
  if (pbVar1 != *param_2) {
    FUN_00a7f3c0(0x10,0xba,0x65,".\\crypto\\ec\\ec_oct.c",0x74);
    return 0;
  }
  if ((*pbVar1 & 1) != 0) {
    if (*(int *)(pbVar1 + 4) == 0x196) {
      uVar2 = FUN_00af49f0(param_1,param_2,param_3,param_4,param_5);
      return uVar2;
    }
    uVar2 = FUN_00af41e0(param_1,param_2,param_3,param_4,param_5);
    return uVar2;
  }
  uVar2 = (**(code **)(pbVar1 + 0x4c))(param_1,param_2,param_3,param_4,param_5);
  return uVar2;
}



undefined4
FUN_00ae8f00(byte **param_1,byte **param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,
            undefined4 param_6)

{
  byte *pbVar1;
  undefined4 uVar2;
  
  pbVar1 = *param_1;
  if ((*(code **)(pbVar1 + 0x50) == (code *)0x0) && ((*pbVar1 & 1) == 0)) {
    FUN_00a7f3c0(0x10,0x7b,0x42,".\\crypto\\ec\\ec_oct.c",0x8a);
    return 0;
  }
  if (pbVar1 != *param_2) {
    FUN_00a7f3c0(0x10,0x7b,0x65,".\\crypto\\ec\\ec_oct.c",0x8f);
    return 0;
  }
  if ((*pbVar1 & 1) != 0) {
    if (*(int *)(pbVar1 + 4) == 0x196) {
      uVar2 = FUN_00af4d80();
      return uVar2;
    }
    uVar2 = FUN_00af4420(param_1,param_2,param_3,param_4,param_5,param_6);
    return uVar2;
  }
  uVar2 = (**(code **)(pbVar1 + 0x50))(param_1,param_2,param_3,param_4,param_5,param_6);
  return uVar2;
}



undefined4
FUN_00ae8fb0(byte **param_1,byte **param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  byte *pbVar1;
  undefined4 uVar2;
  
  pbVar1 = *param_1;
  if ((*(code **)(pbVar1 + 0x54) == (code *)0x0) && ((*pbVar1 & 1) == 0)) {
    FUN_00a7f3c0(0x10,0x7a,0x42,".\\crypto\\ec\\ec_oct.c",0xad);
    return 0;
  }
  if (pbVar1 != *param_2) {
    FUN_00a7f3c0(0x10,0x7a,0x65,".\\crypto\\ec\\ec_oct.c",0xb2);
    return 0;
  }
  if ((*pbVar1 & 1) != 0) {
    if (*(int *)(pbVar1 + 4) == 0x196) {
      uVar2 = FUN_00af5050(param_1,param_2,param_3,param_4,param_5);
      return uVar2;
    }
    uVar2 = FUN_00af4720(param_1,param_2,param_3,param_4,param_5);
    return uVar2;
  }
  uVar2 = (**(code **)(pbVar1 + 0x54))(param_1,param_2,param_3,param_4,param_5);
  return uVar2;
}



undefined ** FUN_00ae9060(void)

{
  return &PTR_s_OpenSSL_ECDSA_method_03243500;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ae9070(int param_1,int param_2,int *param_3,int *param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  int local_8;
  undefined4 local_4;
  
  local_8 = 0;
  local_4 = 0;
  if ((param_1 == 0) || (iVar1 = FUN_00a7fa30(param_1), iVar1 == 0)) {
    FUN_00a7f3c0(0x2a,0x67,0x43,".\\crypto\\ecdsa\\ecs_ossl.c",100);
    return 0;
  }
  iVar2 = param_2;
  if ((param_2 == 0) && (iVar2 = FUN_00aa49c0(), iVar2 == 0)) {
    FUN_00a7f3c0(0x2a,0x67,0x41,".\\crypto\\ecdsa\\ecs_ossl.c",0x6c);
    return 0;
  }
  iVar3 = FUN_00a9aa10();
  iVar4 = FUN_00a9aa10();
  iVar5 = FUN_00a9aa10();
  iVar6 = FUN_00a9aa10();
  if ((((iVar3 == 0) || (iVar4 == 0)) || (iVar5 == 0)) || (iVar6 == 0)) {
    FUN_00a7f3c0(0x2a,0x67,0x41,".\\crypto\\ecdsa\\ecs_ossl.c",0x79);
  }
  else {
    local_8 = FUN_00aa3960(iVar1);
    if (local_8 == 0) {
      uVar10 = 0x7e;
    }
    else {
      iVar7 = FUN_00aa3530(iVar1,iVar5,iVar2);
      if (iVar7 != 0) {
        do {
          do {
            iVar7 = FUN_00aa4eb0(iVar3,iVar5);
            if (iVar7 == 0) {
              FUN_00a7f3c0(0x2a,0x67,0x68,".\\crypto\\ecdsa\\ecs_ossl.c",0x8e);
              goto LAB_00ae9286;
            }
          } while (*(int *)(iVar3 + 4) == 0);
          iVar7 = FUN_00ad17f0(iVar3,iVar3,iVar5);
          if (iVar7 == 0) goto LAB_00ae9286;
          iVar7 = FUN_00a9a920(iVar5);
          iVar8 = FUN_00a9a920(iVar3);
          if ((iVar8 <= iVar7) && (iVar7 = FUN_00ad17f0(iVar3,iVar3,iVar5), iVar7 == 0))
          goto LAB_00ae9286;
          iVar7 = FUN_00aa4160(iVar1,local_8,iVar3,0,0,iVar2);
          if (iVar7 == 0) {
            uVar10 = 0x9e;
LAB_00ae926f:
            uVar9 = 0x10;
            goto LAB_00ae9276;
          }
          uVar10 = FUN_00a814c0(iVar1);
          iVar7 = FUN_00a7fa30(uVar10);
          if (iVar7 == 0x196) {
            iVar7 = FUN_00aa3d00(iVar1,local_8,iVar6);
            if (iVar7 == 0) {
              uVar10 = 0xa6;
              goto LAB_00ae926f;
            }
          }
          else {
            iVar7 = FUN_00aa3d70(iVar1,local_8,iVar6,0,iVar2);
            if (iVar7 == 0) {
              uVar10 = 0xb0;
              goto LAB_00ae926f;
            }
          }
          iVar7 = FUN_00ad2c10(iVar4,iVar6,iVar5,iVar2);
          if (iVar7 == 0) {
            uVar10 = 0xb7;
            uVar9 = 3;
            goto LAB_00ae9276;
          }
        } while (*(int *)(iVar4 + 4) == 0);
        iVar1 = FUN_00ad3370(iVar3,iVar3,iVar5,iVar2);
        if (iVar1 != 0) {
          if (*param_4 != 0) {
            FUN_00a9a950(*param_4);
          }
          if (*param_3 != 0) {
            FUN_00a9a950(*param_3);
          }
          *param_4 = iVar4;
          *param_3 = iVar3;
          local_4 = 1;
          goto LAB_00ae92a4;
        }
        uVar10 = 0xc0;
        uVar9 = 3;
LAB_00ae9276:
        FUN_00a7f3c0(0x2a,0x67,uVar9,".\\crypto\\ecdsa\\ecs_ossl.c",uVar10);
        goto LAB_00ae9286;
      }
      uVar10 = 0x83;
    }
    FUN_00a7f3c0(0x2a,0x67,0x10,".\\crypto\\ecdsa\\ecs_ossl.c",uVar10);
  }
LAB_00ae9286:
  if (iVar3 != 0) {
    FUN_00a9a950(iVar3);
  }
  if (iVar4 != 0) {
    FUN_00a9a950(iVar4);
  }
LAB_00ae92a4:
  if (param_2 == 0) {
    FUN_00aa4a20(iVar2);
  }
  if (iVar5 != 0) {
    FUN_00a9a9b0(iVar5);
  }
  if (local_8 != 0) {
    FUN_00aa3a10(local_8);
  }
  if (iVar6 != 0) {
    FUN_00a9a950(iVar6);
  }
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 * FUN_00ae93b0(undefined4 param_1,int param_2,int param_3,int param_4,undefined4 param_5)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 *local_18;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  int local_4;
  
  local_4 = 0xae93ba;
  iVar6 = 0;
  local_c = 0;
  local_14 = 0;
  local_10 = 0;
  iVar1 = FUN_00ad74a0(param_5);
  iVar2 = FUN_00a7fa30(param_5);
  local_8 = FUN_00aa3450(param_5);
  if (((iVar2 == 0) || (local_8 == 0)) || (iVar1 == 0)) {
    uVar8 = 0xf0;
    uVar7 = 0x43;
  }
  else {
    local_18 = (undefined4 *)FUN_00ae0af0();
    if (local_18 != (undefined4 *)0x0) {
      local_4 = local_18[1];
      iVar1 = FUN_00aa49c0();
      if (((iVar1 == 0) || (iVar6 = FUN_00a9aa10(), iVar6 == 0)) ||
         ((local_10 = FUN_00a9aa10(), local_10 == 0 || (local_14 = FUN_00a9aa10(), local_14 == 0))))
      {
        uVar8 = 0xff;
LAB_00ae9614:
        uVar7 = 0x41;
      }
      else {
        iVar2 = FUN_00aa3530(iVar2,iVar6,iVar1);
        if (iVar2 == 0) {
          uVar8 = 0x105;
          uVar7 = 0x10;
        }
        else {
          uVar3 = FUN_00a9a920(iVar6);
          if (param_2 * 8 - uVar3 != 0 && (int)uVar3 <= param_2 * 8) {
            param_2 = (int)(uVar3 + 7 + ((int)(uVar3 + 7) >> 0x1f & 7U)) >> 3;
          }
          iVar2 = FUN_00a9acb0(param_1,param_2,local_14);
          if (iVar2 == 0) {
            uVar8 = 0x110;
            uVar7 = 3;
          }
          else if ((param_2 * 8 - uVar3 == 0 || param_2 * 8 < (int)uVar3) ||
                  (iVar2 = FUN_00a9bc70(local_14,local_14,8 - (uVar3 & 7)), iVar2 != 0)) {
            do {
              if ((param_3 == 0) || (param_4 == 0)) {
                iVar4 = FUN_00aad790(param_5,iVar1,&local_c,local_18);
                iVar2 = local_c;
                if (iVar4 == 0) {
                  uVar8 = 0x11f;
                  uVar7 = 0x2a;
                  goto LAB_00ae961b;
                }
              }
              else {
                iVar4 = FUN_00a9aba0(*local_18,param_4);
                iVar2 = param_3;
                if (iVar4 == 0) {
                  uVar8 = 0x129;
                  goto LAB_00ae9614;
                }
              }
              iVar5 = FUN_00ad2d70(local_10,local_8,*local_18,iVar6,iVar1);
              iVar4 = local_4;
              if (iVar5 == 0) {
                uVar8 = 0x130;
                uVar7 = 3;
                goto LAB_00ae961b;
              }
              iVar5 = FUN_00ad2ca0(local_4,local_10,local_14,iVar6);
              if (iVar5 == 0) {
                uVar8 = 0x135;
                uVar7 = 3;
                goto LAB_00ae961b;
              }
              iVar2 = FUN_00ad2d70(iVar4,iVar4,iVar2,iVar6,iVar1);
              if (iVar2 == 0) {
                uVar8 = 0x13a;
                uVar7 = 3;
                goto LAB_00ae961b;
              }
              if (*(int *)(iVar4 + 4) != 0) goto LAB_00ae963c;
            } while ((param_3 == 0) || (param_4 == 0));
            uVar8 = 0x143;
            uVar7 = 0x6a;
          }
          else {
            uVar8 = 0x116;
            uVar7 = 3;
          }
        }
      }
LAB_00ae961b:
      FUN_00a7f3c0(0x2a,0x65,uVar7,".\\crypto\\ecdsa\\ecs_ossl.c",uVar8);
      FUN_00ae0b00(local_18);
      local_18 = (undefined4 *)0x0;
LAB_00ae963c:
      if (iVar1 != 0) {
        FUN_00aa4a20(iVar1);
      }
      if (local_14 != 0) {
        FUN_00a9a950(local_14);
      }
      if (local_10 != 0) {
        FUN_00a9a950(local_10);
      }
      if (iVar6 != 0) {
        FUN_00a9a9b0(iVar6);
      }
      if (local_c != 0) {
        FUN_00a9a950(local_c);
      }
      return local_18;
    }
    uVar8 = 0xf7;
    uVar7 = 0x41;
  }
  FUN_00a7f3c0(0x2a,0x65,uVar7,".\\crypto\\ecdsa\\ecs_ossl.c",uVar8);
  return (undefined4 *)0x0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00ae96c0(undefined4 param_1,int param_2,int *param_3,int param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  uint local_10;
  int local_c;
  
  local_10 = 0xffffffff;
  local_c = 0;
  if ((((param_4 == 0) || (iVar1 = FUN_00a7fa30(param_4), iVar1 == 0)) ||
      (iVar2 = FUN_00a989a0(param_4), iVar2 == 0)) || (param_3 == (int *)0x0)) {
    uVar10 = 0x16f;
    uVar9 = 0x67;
LAB_00ae9a5d:
    FUN_00a7f3c0(0x2a,0x66,uVar9,".\\crypto\\ecdsa\\ecs_ossl.c",uVar10);
    return 0xffffffff;
  }
  iVar3 = FUN_00aa49c0();
  if (iVar3 == 0) {
    uVar10 = 0x176;
    uVar9 = 0x41;
    goto LAB_00ae9a5d;
  }
  FUN_00aa4a50(iVar3);
  uVar9 = FUN_00aa4ae0(iVar3);
  uVar10 = FUN_00aa4ae0(iVar3);
  uVar4 = FUN_00aa4ae0(iVar3);
  uVar5 = FUN_00aa4ae0(iVar3);
  iVar6 = FUN_00aa4ae0(iVar3);
  if (iVar6 == 0) {
    uVar9 = 0x181;
  }
  else {
    iVar7 = FUN_00aa3530(iVar1,uVar9,iVar3);
    if (iVar7 == 0) {
      FUN_00a7f3c0(0x2a,0x66,0x10,".\\crypto\\ecdsa\\ecs_ossl.c",0x187);
      goto LAB_00ae9a25;
    }
    iVar7 = *param_3;
    if ((((*(int *)(iVar7 + 4) == 0) || (*(int *)(iVar7 + 0xc) != 0)) ||
        ((iVar7 = FUN_00a9ae10(iVar7,uVar9), -1 < iVar7 ||
         ((iVar7 = param_3[1], *(int *)(iVar7 + 4) == 0 || (*(int *)(iVar7 + 0xc) != 0)))))) ||
       (iVar7 = FUN_00a9ae10(iVar7,uVar9), -1 < iVar7)) {
      FUN_00a7f3c0(0x2a,0x66,100,".\\crypto\\ecdsa\\ecs_ossl.c",399);
      local_10 = 0;
      goto LAB_00ae9a25;
    }
    iVar7 = FUN_00ad3370(uVar4,param_3[1],uVar9,iVar3);
    if (iVar7 == 0) {
      uVar9 = 0x196;
    }
    else {
      uVar8 = FUN_00a9a920(uVar9);
      if (param_2 * 8 - uVar8 != 0 && (int)uVar8 <= param_2 * 8) {
        param_2 = (int)(uVar8 + 7 + ((int)(uVar8 + 7) >> 0x1f & 7U)) >> 3;
      }
      iVar7 = FUN_00a9acb0(param_1,param_2,uVar5);
      if (iVar7 == 0) {
        uVar9 = 0x1a2;
      }
      else if ((param_2 * 8 - uVar8 == 0 || param_2 * 8 < (int)uVar8) ||
              (iVar7 = FUN_00a9bc70(uVar5,uVar5,8 - (uVar8 & 7)), iVar7 != 0)) {
        iVar7 = FUN_00ad2d70(uVar10,uVar5,uVar4,uVar9,iVar3);
        if (iVar7 == 0) {
          uVar9 = 0x1ae;
        }
        else {
          iVar7 = FUN_00ad2d70(uVar4,*param_3,uVar4,uVar9,iVar3);
          if (iVar7 == 0) {
            uVar9 = 0x1b4;
          }
          else {
            local_c = FUN_00aa3960(iVar1);
            if (local_c == 0) {
              FUN_00a7f3c0(0x2a,0x66,0x41,".\\crypto\\ecdsa\\ecs_ossl.c",0x1ba);
              goto LAB_00ae9a25;
            }
            iVar2 = FUN_00aa4160(iVar1,local_c,uVar10,iVar2,uVar4,iVar3);
            if (iVar2 == 0) {
              FUN_00a7f3c0(0x2a,0x66,0x10,".\\crypto\\ecdsa\\ecs_ossl.c",0x1bf);
              goto LAB_00ae9a25;
            }
            uVar4 = FUN_00a814c0(iVar1);
            iVar2 = FUN_00a7fa30(uVar4);
            if (iVar2 == 0x196) {
              iVar1 = FUN_00aa3d00(iVar1,local_c,iVar6);
              if (iVar1 == 0) {
                FUN_00a7f3c0(0x2a,0x66,0x10,".\\crypto\\ecdsa\\ecs_ossl.c",0x1c7);
                goto LAB_00ae9a25;
              }
            }
            else {
              iVar1 = FUN_00aa3d70(iVar1,local_c,iVar6,0,iVar3);
              if (iVar1 == 0) {
                FUN_00a7f3c0(0x2a,0x66,0x10,".\\crypto\\ecdsa\\ecs_ossl.c",0x1d1);
                goto LAB_00ae9a25;
              }
            }
            iVar1 = FUN_00ad2c10(uVar10,iVar6,uVar9,iVar3);
            if (iVar1 != 0) {
              iVar1 = FUN_00a9ae10(uVar10,*param_3);
              local_10 = (uint)(iVar1 == 0);
              goto LAB_00ae9a25;
            }
            uVar9 = 0x1d8;
          }
        }
      }
      else {
        uVar9 = 0x1a8;
      }
    }
  }
  FUN_00a7f3c0(0x2a,0x66,3,".\\crypto\\ecdsa\\ecs_ossl.c",uVar9);
LAB_00ae9a25:
  FUN_00aa4aa0(iVar3);
  FUN_00aa4a20(iVar3);
  if (local_c != 0) {
    FUN_00aa3a10(local_c);
  }
  return local_10;
}



void FUN_00ae9a80(void)

{
  FUN_00a98620(&DAT_032edb54,1);
  return;
}



undefined * FUN_00ae9da0(void)

{
  return &DAT_00dc998c;
}



void FUN_00ae9dc0(void)

{
  thunk_FUN_00a80ed0();
  return;
}



void FUN_00ae9dd0(void)

{
  FUN_00aac940();
  return;
}



bool FUN_00ae9de0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  int iVar1;
  
  iVar1 = FUN_00aaca70(param_1 + 0xc,param_2,param_3,param_4,param_5);
  return iVar1 != 0;
}



undefined4 FUN_00ae9e10(int param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  
  iVar3 = 0;
  iVar1 = FUN_00a80ed0();
  if (0 < iVar1) {
    do {
      uVar2 = FUN_00a80ee0();
      iVar1 = (**(code **)(param_1 + 0x28))(param_1,param_2,uVar2);
      if (iVar1 != 0) {
        return uVar2;
      }
      iVar3 = iVar3 + 1;
      iVar1 = FUN_00a80ed0();
    } while (iVar3 < iVar1);
  }
  return 0;
}



undefined4 FUN_00ae9e60(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_00a92420(param_3,param_2);
  if (iVar1 == 0) {
    return 1;
  }
  if ((*(byte *)(*(int *)(param_1 + 0x14) + 0x14) & 1) == 0) {
    return 0;
  }
  *(int *)(param_1 + 100) = iVar1;
  *(undefined4 *)(param_1 + 0x68) = param_2;
  *(undefined4 *)(param_1 + 0x6c) = param_3;
  uVar2 = (**(code **)(param_1 + 0x20))(0,param_1);
  return uVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00ae9eb0(void)

{
  code *pcVar1;
  char *pcVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int unaff_ESI;
  bool bVar6;
  int local_14;
  uint local_10;
  int local_c;
  int local_8;
  undefined4 local_4;
  
  pcVar1 = *(code **)(unaff_ESI + 0x20);
  iVar5 = 0;
  local_c = 0;
  local_8 = 0;
  local_14 = -1;
  if (*(int *)(unaff_ESI + 0x7c) == 0) {
    local_10 = *(uint *)(*(int *)(unaff_ESI + 0x14) + 0x14) >> 6 & 1;
    pcVar2 = _getenv("OPENSSL_ALLOW_PROXY_CERTS");
    if (pcVar2 != (char *)0x0) {
      local_10 = 1;
    }
    local_4 = *(undefined4 *)(*(int *)(unaff_ESI + 0x14) + 0x18);
  }
  else {
    local_10 = 0;
    local_4 = 6;
  }
  if (0 < *(int *)(unaff_ESI + 0x50)) {
    do {
      iVar3 = FUN_00a80ee0(*(undefined4 *)(unaff_ESI + 0x54),iVar5);
      if (((*(byte *)(*(int *)(unaff_ESI + 0x14) + 0x14) & 0x10) == 0) &&
         ((*(uint *)(iVar3 + 0x28) & 0x200) != 0)) {
        *(undefined4 *)(unaff_ESI + 100) = 0x22;
        *(int *)(unaff_ESI + 0x60) = iVar5;
        *(int *)(unaff_ESI + 0x68) = iVar3;
        iVar4 = (*pcVar1)(0);
        if (iVar4 == 0) {
          return 0;
        }
      }
      if ((local_10 == 0) && ((*(uint *)(iVar3 + 0x28) & 0x400) != 0)) {
        *(undefined4 *)(unaff_ESI + 100) = 0x28;
        *(int *)(unaff_ESI + 0x60) = iVar5;
        *(int *)(unaff_ESI + 0x68) = iVar3;
        iVar4 = (*pcVar1)(0);
        if (iVar4 == 0) {
          return 0;
        }
      }
      iVar4 = FUN_00a91f40(iVar3);
      if (local_14 == -1) {
        if (((*(byte *)(*(int *)(unaff_ESI + 0x14) + 0x14) & 0x20) != 0) && (iVar4 != 1)) {
          bVar6 = iVar4 == 0;
LAB_00ae9fd1:
          if (!bVar6) {
LAB_00ae9fd3:
            *(undefined4 *)(unaff_ESI + 100) = 0x18;
LAB_00ae9fda:
            *(int *)(unaff_ESI + 0x60) = iVar5;
            *(int *)(unaff_ESI + 0x68) = iVar3;
            iVar4 = (*pcVar1)(0);
            if (iVar4 == 0) {
              return 0;
            }
          }
        }
      }
      else if (local_14 == 0) {
        if (iVar4 != 0) {
          *(undefined4 *)(unaff_ESI + 100) = 0x25;
          goto LAB_00ae9fda;
        }
      }
      else {
        if (iVar4 == 0) goto LAB_00ae9fd3;
        if ((*(byte *)(*(int *)(unaff_ESI + 0x14) + 0x14) & 0x20) != 0) {
          bVar6 = iVar4 == 1;
          goto LAB_00ae9fd1;
        }
      }
      if ((0 < *(int *)(*(int *)(unaff_ESI + 0x14) + 0x18)) &&
         ((iVar4 = FUN_00a92360(iVar3,local_4,0 < local_14), iVar4 == 0 ||
          (((*(byte *)(*(int *)(unaff_ESI + 0x14) + 0x14) & 0x20) != 0 && (iVar4 != 1)))))) {
        *(undefined4 *)(unaff_ESI + 100) = 0x1a;
        *(int *)(unaff_ESI + 0x60) = iVar5;
        *(int *)(unaff_ESI + 0x68) = iVar3;
        iVar4 = (*pcVar1)(0);
        if (iVar4 == 0) {
          return 0;
        }
      }
      if ((((1 < iVar5) && ((*(byte *)(iVar3 + 0x28) & 0x20) == 0)) &&
          (*(int *)(iVar3 + 0x20) != -1)) && (*(int *)(iVar3 + 0x20) + 1 + local_8 < local_c)) {
        *(undefined4 *)(unaff_ESI + 100) = 0x19;
        *(int *)(unaff_ESI + 0x60) = iVar5;
        *(int *)(unaff_ESI + 0x68) = iVar3;
        iVar4 = (*pcVar1)(0);
        if (iVar4 == 0) {
          return 0;
        }
      }
      if ((*(uint *)(iVar3 + 0x28) & 0x20) == 0) {
        local_c = local_c + 1;
      }
      if ((*(uint *)(iVar3 + 0x28) & 0x400) == 0) {
        local_14 = 1;
      }
      else {
        if ((*(int *)(iVar3 + 0x24) != -1) && (*(int *)(iVar3 + 0x24) < iVar5)) {
          *(undefined4 *)(unaff_ESI + 100) = 0x26;
          *(int *)(unaff_ESI + 0x60) = iVar5;
          *(int *)(unaff_ESI + 0x68) = iVar3;
          iVar3 = (*pcVar1)(0);
          if (iVar3 == 0) {
            return 0;
          }
        }
        local_8 = local_8 + 1;
        local_14 = 0;
      }
      iVar5 = iVar5 + 1;
    } while (iVar5 < *(int *)(unaff_ESI + 0x50));
  }
  return 1;
}



undefined4 FUN_00aea0e0(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int unaff_ESI;
  
  iVar1 = FUN_00a80ed0(*(undefined4 *)(unaff_ESI + 0x54));
  do {
    do {
      iVar1 = iVar1 + -1;
      if (iVar1 < 0) {
        return 1;
      }
      iVar2 = FUN_00a80ee0(*(undefined4 *)(unaff_ESI + 0x54),iVar1);
    } while ((iVar1 != 0) && ((*(byte *)(iVar2 + 0x28) & 0x20) != 0));
    iVar3 = FUN_00a80ed0(*(undefined4 *)(unaff_ESI + 0x54));
    while (iVar3 = iVar3 + -1, iVar1 < iVar3) {
      iVar4 = FUN_00a80ee0(*(undefined4 *)(unaff_ESI + 0x54),iVar3);
      if ((*(int *)(iVar4 + 0x4c) != 0) &&
         (iVar4 = FUN_00a8ca40(iVar2,*(int *)(iVar4 + 0x4c)), iVar4 != 0)) {
        *(int *)(unaff_ESI + 100) = iVar4;
        *(int *)(unaff_ESI + 0x60) = iVar1;
        *(int *)(unaff_ESI + 0x68) = iVar2;
        iVar4 = (**(code **)(unaff_ESI + 0x20))(0);
        if (iVar4 == 0) {
          return 0;
        }
      }
    }
  } while( true );
}



void FUN_00aea180(void)

{
  code *pcVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int unaff_ESI;
  
  pcVar1 = *(code **)(unaff_ESI + 0x20);
  iVar2 = FUN_00a80ed0(*(undefined4 *)(unaff_ESI + 0x54));
  uVar3 = FUN_00a80ee0(*(undefined4 *)(unaff_ESI + 0x54),iVar2 + -1);
  iVar4 = FUN_00aa8b70(uVar3,*(undefined4 *)(*(int *)(unaff_ESI + 0x14) + 0x1c),0);
  if (iVar4 == 1) {
    return;
  }
  *(int *)(unaff_ESI + 0x60) = iVar2 + -1;
  *(undefined4 *)(unaff_ESI + 0x68) = uVar3;
  *(uint *)(unaff_ESI + 100) = (iVar4 == 2) + 0x1b;
  (*pcVar1)(0);
  return;
}



bool __thiscall FUN_00aea1e0(undefined4 param_1_00,undefined4 param_1)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  
  iVar1 = FUN_00aa01f0(param_1_00);
  if (iVar1 < 0) {
    iVar1 = 0;
  }
  else {
    iVar2 = FUN_00aa01f0(param_1_00);
    if (iVar2 != -1) {
      return false;
    }
    uVar3 = FUN_00aa0210(param_1_00,iVar1);
    iVar1 = FUN_00aaa090(uVar3);
  }
  iVar2 = FUN_00aa01f0(param_1);
  if (iVar2 < 0) {
    iVar2 = 0;
  }
  else {
    iVar4 = FUN_00aa01f0(param_1);
    if (iVar4 != -1) {
      return false;
    }
    uVar3 = FUN_00aa0210(param_1,iVar2);
    iVar2 = FUN_00aaa090(uVar3);
  }
  if (iVar1 == 0) {
    if (iVar2 == 0) {
      return true;
    }
  }
  else if (iVar2 != 0) {
    iVar1 = thunk_FUN_00a90db0(iVar1,iVar2);
    return iVar1 == 0;
  }
  return false;
}



bool FUN_00aea290(void)

{
  int iVar1;
  int *unaff_EBX;
  int *unaff_ESI;
  
  if ((unaff_EBX[10] != 0) && (unaff_ESI[9] != 0)) {
    iVar1 = FUN_00a82ae0(*(undefined4 *)(*unaff_ESI + 8),*(undefined4 *)(*unaff_EBX + 8));
    if (iVar1 == 0) {
      iVar1 = FUN_00aea1e0();
      if (iVar1 != 0) {
        iVar1 = FUN_00aea1e0();
        if (iVar1 != 0) {
          iVar1 = FUN_00a9d660(unaff_EBX[10],unaff_ESI[9]);
          if (iVar1 < 1) {
            iVar1 = FUN_00a9d660(unaff_EBX[9],unaff_ESI[9]);
            return 0 < iVar1;
          }
        }
      }
      return false;
    }
  }
  return false;
}



void FUN_00aea320(int *param_1,undefined4 *param_2,uint *param_3)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int unaff_ESI;
  int iVar5;
  
  uVar1 = *(undefined4 *)(*param_1 + 8);
  iVar5 = *(int *)(unaff_ESI + 0x60);
  iVar2 = FUN_00a80ed0(*(undefined4 *)(unaff_ESI + 0x54));
  if (iVar5 != iVar2 + -1) {
    iVar5 = iVar5 + 1;
  }
  uVar3 = FUN_00a80ee0(*(undefined4 *)(unaff_ESI + 0x54),iVar5);
  iVar2 = FUN_00a922a0(uVar3,param_1[5]);
  if ((iVar2 == 0) && ((*param_3 & 0x20) != 0)) {
    *param_3 = *param_3 | 0x1c;
    *param_2 = uVar3;
    return;
  }
  iVar5 = iVar5 + 1;
  iVar2 = FUN_00a80ed0(*(undefined4 *)(unaff_ESI + 0x54));
  if (iVar5 < iVar2) {
    do {
      uVar3 = FUN_00a80ee0(*(undefined4 *)(unaff_ESI + 0x54),iVar5);
      uVar4 = FUN_00a82a50(uVar3,uVar1);
      iVar2 = FUN_00a82ae0(uVar4);
      if ((iVar2 == 0) && (iVar2 = FUN_00a922a0(uVar3,param_1[5]), iVar2 == 0)) {
        *param_3 = *param_3 | 0xc;
        *param_2 = uVar3;
        return;
      }
      iVar5 = iVar5 + 1;
      iVar2 = FUN_00a80ed0(*(undefined4 *)(unaff_ESI + 0x54));
    } while (iVar5 < iVar2);
  }
  if ((*(uint *)(*(int *)(unaff_ESI + 0x14) + 0x14) & 0x1000) != 0) {
    iVar2 = 0;
    iVar5 = FUN_00a80ed0(*(undefined4 *)(unaff_ESI + 0xc));
    if (0 < iVar5) {
      while( true ) {
        uVar3 = FUN_00a80ee0(*(undefined4 *)(unaff_ESI + 0xc),iVar2);
        uVar4 = FUN_00a82a50(uVar3,uVar1);
        iVar5 = FUN_00a82ae0(uVar4);
        if ((iVar5 == 0) && (iVar5 = FUN_00a922a0(uVar3,param_1[5]), iVar5 == 0)) break;
        iVar2 = iVar2 + 1;
        iVar5 = FUN_00a80ed0(*(undefined4 *)(unaff_ESI + 0xc));
        if (iVar5 <= iVar2) {
          return;
        }
      }
      *param_2 = uVar3;
      *param_3 = *param_3 | 4;
    }
  }
  return;
}



bool __fastcall FUN_00aea480(undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  
  iVar1 = FUN_00a80ed0(param_1);
  uVar2 = FUN_00a80ee0(param_1,iVar1 + -1);
  FUN_00a80ed0();
  uVar3 = FUN_00a80ee0();
  iVar1 = FUN_00a82a60(uVar2,uVar3);
  return iVar1 == 0;
}



bool __thiscall FUN_00aea4c0(int *param_1_00,int *param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  
  if ((param_1 == (int *)0x0) || (param_1_00 == (int *)0x0)) {
    return true;
  }
  if (*param_1 == 1) {
    iVar1 = param_1[2];
    if (iVar1 == 0) {
      return false;
    }
    if (*param_1_00 == 1) {
      if (param_1_00[2] == 0) {
        return false;
      }
      iVar1 = FUN_00a82ae0(iVar1,param_1_00[2]);
      return iVar1 == 0;
    }
    iVar6 = param_1_00[1];
  }
  else {
    if (*param_1_00 != 1) goto LAB_00aea569;
    iVar1 = param_1_00[2];
    if (iVar1 == 0) {
      return false;
    }
    iVar6 = param_1[1];
  }
  if (iVar1 != 0) {
    iVar7 = 0;
    iVar2 = FUN_00a80ed0(iVar6);
    if (iVar2 < 1) {
      return false;
    }
    while ((piVar3 = (int *)FUN_00a80ee0(iVar6,iVar7), *piVar3 != 4 ||
           (iVar2 = FUN_00a82ae0(iVar1,piVar3[1]), iVar2 != 0))) {
      iVar7 = iVar7 + 1;
      iVar2 = FUN_00a80ed0(iVar6);
      if (iVar2 <= iVar7) {
        return false;
      }
    }
    return true;
  }
LAB_00aea569:
  iVar6 = 0;
  iVar1 = FUN_00a80ed0(param_1[1]);
  if (iVar1 < 1) {
    return false;
  }
  do {
    uVar4 = FUN_00a80ee0(param_1[1],iVar6);
    iVar2 = 0;
    iVar1 = FUN_00a80ed0(param_1_00[1]);
    if (0 < iVar1) {
      do {
        uVar5 = FUN_00a80ee0(param_1_00[1],iVar2);
        iVar1 = FUN_00a8cc30(uVar4,uVar5);
        if (iVar1 == 0) {
          return true;
        }
        iVar2 = iVar2 + 1;
        iVar1 = FUN_00a80ed0(param_1_00[1]);
      } while (iVar2 < iVar1);
    }
    iVar6 = iVar6 + 1;
    iVar1 = FUN_00a80ed0(param_1[1]);
  } while (iVar6 < iVar1);
  return false;
}



uint FUN_00aea600(int *param_1,uint param_2)

{
  undefined4 uVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int unaff_EDI;
  
  uVar1 = *(undefined4 *)(*param_1 + 8);
  if (*(int *)(unaff_EDI + 8) == 0) {
    return param_2 >> 5 & 1;
  }
  iVar4 = 0;
  iVar2 = FUN_00a80ed0(*(int *)(unaff_EDI + 8));
  if (0 < iVar2) {
    do {
      piVar3 = (int *)FUN_00a80ee0(*(undefined4 *)(unaff_EDI + 8),iVar4);
      if ((*piVar3 == 4) && (iVar2 = FUN_00a82ae0(piVar3[1],uVar1), iVar2 == 0)) {
        return 1;
      }
      iVar4 = iVar4 + 1;
      iVar2 = FUN_00a80ed0(*(undefined4 *)(unaff_EDI + 8));
    } while (iVar4 < iVar2);
  }
  return 0;
}



undefined4 __thiscall FUN_00aea680(int param_1_00,uint param_1,uint *param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 *puVar3;
  int unaff_EBX;
  int iVar4;
  
  uVar1 = *(uint *)(param_1_00 + 0x1c);
  if ((uVar1 & 0x10) != 0) {
    return 0;
  }
  if ((*(byte *)(unaff_EBX + 0x28) & 0x10) == 0) {
    if ((uVar1 & 8) != 0) {
      return 0;
    }
  }
  else if ((uVar1 & 4) != 0) {
    return 0;
  }
  *param_2 = *(uint *)(param_1_00 + 0x20);
  iVar4 = 0;
  iVar2 = FUN_00a80ed0(*(undefined4 *)(unaff_EBX + 0x44));
  if (0 < iVar2) {
    do {
      puVar3 = (undefined4 *)FUN_00a80ee0(*(undefined4 *)(unaff_EBX + 0x44),iVar4);
      iVar2 = FUN_00aea600(param_1_00,param_1);
      if ((iVar2 != 0) &&
         ((*(int *)(param_1_00 + 0x18) == 0 || (iVar2 = FUN_00aea4c0(*puVar3), iVar2 != 0)))) {
        *param_2 = *param_2 & puVar3[3];
        return 1;
      }
      iVar4 = iVar4 + 1;
      iVar2 = FUN_00a80ed0(*(undefined4 *)(unaff_EBX + 0x44));
    } while (iVar4 < iVar2);
  }
  if (((*(int **)(param_1_00 + 0x18) == (int *)0x0) || (**(int **)(param_1_00 + 0x18) == 0)) &&
     ((param_1 & 0x20) != 0)) {
    return 1;
  }
  return 0;
}



undefined4 FUN_00aea740(int param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  
  iVar2 = param_2;
  if ((*(uint *)(param_2 + 0x10) & 0x200) != 0) {
    if ((*(byte *)(*(int *)(param_1 + 0x14) + 0x14) & 0x10) != 0) {
      return 1;
    }
    *(undefined4 *)(param_1 + 100) = 0x24;
    iVar1 = (**(code **)(param_1 + 0x20))(0,param_1);
    if (iVar1 == 0) {
      return 0;
    }
  }
  iVar2 = FUN_00a8fc00(iVar2,&param_2,param_3);
  if (iVar2 != 0) {
    if (*(int *)(param_2 + 0x10) == 8) {
      return 2;
    }
    *(undefined4 *)(param_1 + 100) = 0x17;
    iVar2 = (**(code **)(param_1 + 0x20))(0,param_1);
    if (iVar2 == 0) {
      return 0;
    }
  }
  return 1;
}



undefined4 FUN_00aea7c0(int param_1)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  
  if (*(int *)(param_1 + 0x7c) == 0) {
    iVar1 = FUN_00af5de0(param_1 + 0x58,param_1 + 0x5c,*(undefined4 *)(param_1 + 0x54),
                         *(undefined4 *)(*(int *)(param_1 + 0x14) + 0x24),
                         *(undefined4 *)(*(int *)(param_1 + 0x14) + 0x14));
    if (iVar1 == 0) {
      FUN_00a7f3c0(0xb,0x91,0x41,".\\crypto\\x509\\x509_vfy.c",0x5d0);
      return 0;
    }
    if (iVar1 == -1) {
      iVar1 = 1;
      iVar2 = FUN_00a80ed0(*(undefined4 *)(param_1 + 0x54));
      if (1 < iVar2) {
        do {
          iVar2 = FUN_00a80ee0(*(undefined4 *)(param_1 + 0x54),iVar1);
          if ((*(uint *)(iVar2 + 0x28) & 0x800) != 0) {
            *(int *)(param_1 + 0x68) = iVar2;
            *(undefined4 *)(param_1 + 100) = 0x2a;
            iVar2 = (**(code **)(param_1 + 0x20))(0,param_1);
            if (iVar2 == 0) {
              return 0;
            }
          }
          iVar1 = iVar1 + 1;
          iVar2 = FUN_00a80ed0(*(undefined4 *)(param_1 + 0x54));
        } while (iVar1 < iVar2);
        return 1;
      }
    }
    else {
      if (iVar1 == -2) {
        *(undefined4 *)(param_1 + 0x68) = 0;
        *(undefined4 *)(param_1 + 100) = 0x2b;
        uVar3 = (**(code **)(param_1 + 0x20))(0,param_1);
        return uVar3;
      }
      if ((*(uint *)(*(int *)(param_1 + 0x14) + 0x14) & 0x800) != 0) {
        *(undefined4 *)(param_1 + 0x68) = 0;
        *(undefined4 *)(param_1 + 100) = 0;
        iVar1 = (**(code **)(param_1 + 0x20))(2,param_1);
        if (iVar1 == 0) {
          return 0;
        }
      }
    }
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aea8d0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  undefined4 local_8;
  undefined4 local_4;
  
  local_4 = 0xaea8da;
  if (param_4 == (undefined4 *)0x0) {
    __time64((__time64_t *)&local_8);
  }
  else {
    local_8 = *param_4;
    local_4 = param_4[1];
  }
  if ((param_1 != 0) && ((*(byte *)(param_1 + 0xc) & 0x40) == 0)) {
    if (*(int *)(param_1 + 4) == 0x17) {
      FUN_00acca40(param_1,local_8,local_4,param_2,param_3);
      return;
    }
    if (*(int *)(param_1 + 4) == 0x18) {
      FUN_00acc7f0(param_1,local_8,local_4,param_2,param_3);
      return;
    }
  }
  FUN_00a9c890(param_1,local_8,local_4,param_2,param_3);
  return;
}



undefined4 FUN_00aea970(int param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  
  if ((param_1 != 0) && (iVar1 = FUN_00a81380(param_1), iVar1 == 0)) {
    return 1;
  }
  iVar1 = 0;
  iVar2 = FUN_00a80ed0(param_2);
  if (0 < iVar2) {
    do {
      uVar3 = FUN_00a80ee0(param_2,iVar1);
      iVar2 = FUN_00a82c40(uVar3);
      if (iVar2 == 0) {
        FUN_00a7f3c0(0xb,0x6e,0x6c,".\\crypto\\x509\\x509_vfy.c",0x6ff);
        return 0;
      }
      iVar4 = FUN_00a81380(iVar2);
      if (iVar4 == 0) {
        while (iVar1 = iVar1 + -1, -1 < iVar1) {
          uVar3 = FUN_00a80ee0(param_2,iVar1);
          uVar3 = FUN_00a82c40(uVar3);
          FUN_00a81500(uVar3,iVar2);
          FUN_00a816d0(uVar3);
        }
        if (param_1 != 0) {
          FUN_00a81500(param_1,iVar2);
        }
        FUN_00a816d0(iVar2);
        return 1;
      }
      FUN_00a816d0(iVar2);
      iVar1 = iVar1 + 1;
      iVar2 = FUN_00a80ed0(param_2);
    } while (iVar1 < iVar2);
  }
  FUN_00a7f3c0(0xb,0x6e,0x6b,".\\crypto\\x509\\x509_vfy.c",0x70c);
  return 0;
}



void FUN_00aeaa70(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5)

{
  FUN_00a806a0(5,param_1,param_2,param_3,param_4,param_5);
  return;
}



void FUN_00aeaaa0(void)

{
  FUN_00a807c0();
  return;
}



void FUN_00aeaab0(int param_1)

{
  if (*(code **)(param_1 + 0x48) != (code *)0x0) {
    (**(code **)(param_1 + 0x48))(param_1);
  }
  if (*(int *)(param_1 + 0x14) != 0) {
    if (*(int *)(param_1 + 0x7c) == 0) {
      FUN_00a8f680(*(int *)(param_1 + 0x14));
    }
    *(undefined4 *)(param_1 + 0x14) = 0;
  }
  if (*(int *)(param_1 + 0x58) != 0) {
    FUN_00af5a70(*(int *)(param_1 + 0x58));
    *(undefined4 *)(param_1 + 0x58) = 0;
  }
  if (*(int *)(param_1 + 0x54) != 0) {
    FUN_00a81120(*(int *)(param_1 + 0x54),FUN_00a812c0);
    *(undefined4 *)(param_1 + 0x54) = 0;
  }
  FUN_00a80760(5,param_1,(undefined4 *)(param_1 + 0x80));
  *(undefined4 *)(param_1 + 0x80) = 0;
  *(undefined4 *)(param_1 + 0x84) = 0;
  return;
}



void FUN_00aeab30(int param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1 + 0x20) = param_2;
  return;
}



void FUN_00aeab40(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  
  iVar1 = FUN_00a8f7d0(param_2);
  if (iVar1 == 0) {
    return;
  }
  FUN_00a8f830();
  return;
}



undefined4 FUN_00aeab70(int param_1)

{
  return *(undefined4 *)(param_1 + 0x14);
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aeab80(int *param_1,undefined4 param_2)

{
  char *pcVar1;
  byte *pbVar2;
  char cVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int iVar6;
  int iVar7;
  char *pcVar8;
  byte *pbVar9;
  undefined4 local_44;
  int local_40;
  byte *local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  char local_28 [12];
  byte local_1c [24];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_44;
  puVar4 = (undefined4 *)param_1[2];
  iVar7 = param_1[1];
  if (iVar7 == 0x17) {
    if (6 < *param_1 - 0xbU) goto LAB_00aeabd4;
    local_34 = *puVar4;
    local_30 = puVar4[1];
    local_2c = CONCAT22(local_2c._2_2_,*(undefined2 *)(puVar4 + 2));
    pcVar8 = (char *)((int)&local_2c + 2);
    puVar4 = (undefined4 *)((int)puVar4 + 10);
  }
  else {
    if (*param_1 < 0xd) goto LAB_00aeabd4;
    local_34 = *puVar4;
    local_30 = puVar4[1];
    local_2c = puVar4[2];
    pcVar8 = local_28;
    puVar4 = puVar4 + 3;
  }
  cVar3 = *(char *)puVar4;
  if (((cVar3 == 'Z') || (cVar3 == '-')) || (cVar3 == '+')) {
    *pcVar8 = '0';
    pcVar8[1] = '0';
    puVar5 = puVar4;
  }
  else {
    *pcVar8 = cVar3;
    pcVar8[1] = *(char *)((int)puVar4 + 1);
    puVar5 = (undefined4 *)((int)puVar4 + 2);
    if (*(char *)(undefined4 *)((int)puVar4 + 2) == '.') {
      puVar5 = (undefined4 *)((int)puVar4 + 3);
      cVar3 = *(char *)((int)puVar4 + 3);
      while (('/' < cVar3 && (cVar3 < ':'))) {
        pcVar1 = (char *)((int)puVar5 + 1);
        puVar5 = (undefined4 *)((int)puVar5 + 1);
        cVar3 = *pcVar1;
      }
    }
  }
  cVar3 = *(char *)puVar5;
  pcVar8[2] = 'Z';
  pcVar8[3] = '\0';
  if (cVar3 == 'Z') {
    iVar6 = 0;
  }
  else {
    if ((cVar3 != '+') && (cVar3 != '-')) goto LAB_00aeabd4;
    iVar6 = *(char *)(puVar5 + 1) + -0x7dd0 +
            ((int)*(char *)((int)puVar5 + 3) +
            ((int)*(char *)((int)puVar5 + 2) + *(char *)((int)puVar5 + 1) * 10) * 6) * 10;
    if (cVar3 == '-') {
      iVar6 = -iVar6;
    }
  }
  local_3c = local_1c;
  local_38 = 0;
  local_44 = 0x18;
  local_40 = iVar7;
  iVar7 = FUN_00aea8d0(&local_44,0,iVar6 * 0x3c,param_2);
  if (iVar7 == 0) {
LAB_00aeabd4:
    ___security_check_cookie_4();
    return;
  }
  if (param_1[1] == 0x17) {
    iVar7 = local_34._1_1_ + -0x210 + (char)local_34 * 10;
    if (iVar7 < 0x32) {
      iVar7 = iVar7 + 100;
    }
    iVar6 = (char)local_1c[1] + -0x210 + (char)local_1c[0] * 10;
    if (iVar6 < 0x32) {
      iVar6 = iVar6 + 100;
    }
    if (iVar7 < iVar6) goto LAB_00aead6c;
    if (iVar6 < iVar7) {
      ___security_check_cookie_4();
      return;
    }
  }
  pbVar9 = local_1c;
  puVar4 = &local_34;
  do {
    if (((*(byte *)puVar4 != *pbVar9) || (*(byte *)puVar4 == 0)) ||
       (pbVar2 = (byte *)((int)puVar4 + 1), *pbVar2 != pbVar9[1])) break;
    puVar4 = (undefined4 *)((int)puVar4 + 2);
    pbVar9 = pbVar9 + 2;
  } while (*pbVar2 != 0);
LAB_00aead6c:
  ___security_check_cookie_4();
  return;
}



void FUN_00aead80(undefined4 param_1,undefined4 param_2)

{
  FUN_00aea8d0(param_1,0,param_2,0);
  return;
}



void __thiscall
FUN_00aeada0(int param_1_00,int param_1,int **param_2,uint *param_3,undefined4 param_4)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  
  if (((*(uint *)(*(int *)(param_1 + 0x14) + 0x14) & 0x2000) != 0) &&
     (((*(uint *)(*(int *)(param_1 + 0x68) + 0x28) | *(uint *)(param_1_00 + 0x10)) & 0x1000) != 0))
  {
    iVar3 = 0;
    iVar1 = FUN_00a80ed0(param_4);
    if (0 < iVar1) {
      do {
        piVar2 = (int *)FUN_00a80ee0(param_4,iVar3);
        iVar1 = FUN_00aea290();
        if (iVar1 != 0) {
          if ((*(byte *)(*(int *)(param_1 + 0x14) + 0x14) & 2) == 0) {
            iVar1 = 0;
          }
          else {
            iVar1 = *(int *)(param_1 + 0x14) + 8;
          }
          iVar3 = FUN_00aeab80(*(undefined4 *)(*piVar2 + 0xc),iVar1);
          if ((iVar3 != 0) && (iVar3 < 1)) {
            if (*(int *)(*piVar2 + 0x10) != 0) {
              iVar1 = FUN_00aeab80(*(int *)(*piVar2 + 0x10),iVar1);
              if ((iVar1 == 0) || ((iVar1 < 0 && ((*(byte *)(param_1 + 0x74) & 2) == 0))))
              goto LAB_00aeae61;
            }
            *param_3 = *param_3 | 2;
          }
LAB_00aeae61:
          FUN_00a7fe40(piVar2 + 3,1,6,".\\crypto\\x509\\x509_vfy.c",0x3bf);
          *param_2 = piVar2;
          return;
        }
        iVar3 = iVar3 + 1;
        iVar1 = FUN_00a80ed0(param_4);
      } while (iVar3 < iVar1);
    }
    *param_2 = (int *)0x0;
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe
// WARNING: Removing unreachable block (ram,0x00aeaf94)
// WARNING: Removing unreachable block (ram,0x00aeafac)
// WARNING: Removing unreachable block (ram,0x00aeafbc)
// WARNING: Removing unreachable block (ram,0x00aeafc6)

undefined4 __thiscall
FUN_00aeae90(int param_1_00,undefined4 param_1,uint *param_2,undefined4 param_3)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int *unaff_EDI;
  
  uVar1 = unaff_EDI[7];
  iVar4 = 0;
  if ((uVar1 & 2) == 0) {
    if ((*(uint *)(*(int *)(param_1_00 + 0x14) + 0x14) & 0x1000) == 0) {
      if ((uVar1 & 0x60) != 0) {
        return 0;
      }
    }
    else if ((uVar1 & 0x40) == 0) {
      if (unaff_EDI[10] != 0) {
        return 0;
      }
    }
    else if ((unaff_EDI[8] & ~*param_2) == 0) {
      return 0;
    }
    uVar2 = FUN_00a82a40(param_3,*(undefined4 *)(*unaff_EDI + 8));
    iVar3 = FUN_00a82ae0(uVar2);
    if ((iVar3 != 0) && ((*(byte *)(unaff_EDI + 7) & 0x20) == 0)) {
      return 0;
    }
    if ((*(byte *)(*(int *)(param_1_00 + 0x14) + 0x14) & 2) != 0) {
      iVar4 = *(int *)(param_1_00 + 0x14) + 8;
    }
    iVar3 = FUN_00aeab80(*(undefined4 *)(*unaff_EDI + 0xc),iVar4);
    if (((iVar3 != 0) && (iVar3 < 1)) && (*(int *)(*unaff_EDI + 0x10) != 0)) {
      FUN_00aeab80(*(int *)(*unaff_EDI + 0x10),iVar4);
    }
    FUN_00aea320();
  }
  return 0;
}



undefined4 FUN_00aeafe0(void)

{
  int iVar1;
  int iVar2;
  int unaff_ESI;
  int *unaff_EDI;
  
  if ((*(byte *)(*(int *)(unaff_ESI + 0x14) + 0x14) & 2) == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = *(int *)(unaff_ESI + 0x14) + 8;
  }
  iVar1 = FUN_00aeab80(**(undefined4 **)(*unaff_EDI + 0x10),iVar2);
  if (iVar1 == 0) {
    *(undefined4 *)(unaff_ESI + 100) = 0xd;
    *(int **)(unaff_ESI + 0x68) = unaff_EDI;
    iVar1 = (**(code **)(unaff_ESI + 0x20))(0);
    if (iVar1 == 0) {
      return 0;
    }
  }
  else if (0 < iVar1) {
    *(undefined4 *)(unaff_ESI + 100) = 9;
    *(int **)(unaff_ESI + 0x68) = unaff_EDI;
    iVar1 = (**(code **)(unaff_ESI + 0x20))(0);
    if (iVar1 == 0) {
      return 0;
    }
  }
  iVar2 = FUN_00aeab80(*(undefined4 *)(*(int *)(*unaff_EDI + 0x10) + 4),iVar2);
  if (iVar2 == 0) {
    *(undefined4 *)(unaff_ESI + 100) = 0xe;
    *(int **)(unaff_ESI + 0x68) = unaff_EDI;
    iVar2 = (**(code **)(unaff_ESI + 0x20))(0);
    if (iVar2 == 0) {
      return 0;
    }
  }
  else if (iVar2 < 0) {
    *(undefined4 *)(unaff_ESI + 100) = 10;
    *(int **)(unaff_ESI + 0x68) = unaff_EDI;
    iVar2 = (**(code **)(unaff_ESI + 0x20))(0);
    if (iVar2 == 0) {
      return 0;
    }
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aeb0a0(int param_1)

{
  code *pcVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  int local_8;
  
  pcVar1 = *(code **)(param_1 + 0x20);
  iVar2 = FUN_00a80ed0(*(undefined4 *)(param_1 + 0x54));
  local_8 = iVar2 + -1;
  *(int *)(param_1 + 0x60) = local_8;
  iVar3 = FUN_00a80ee0(*(undefined4 *)(param_1 + 0x54),local_8);
  iVar4 = (**(code **)(param_1 + 0x28))(param_1,iVar3,iVar3);
  iVar6 = iVar3;
  if (iVar4 == 0) {
    if (local_8 < 1) {
      *(undefined4 *)(param_1 + 100) = 0x15;
      *(int *)(param_1 + 0x68) = iVar3;
      uVar5 = (*pcVar1)(0,param_1);
      return uVar5;
    }
    local_8 = iVar2 + -2;
    *(int *)(param_1 + 0x60) = local_8;
    iVar6 = FUN_00a80ee0(*(undefined4 *)(param_1 + 0x54),local_8);
  }
  if (-1 < local_8) {
    while( true ) {
      *(int *)(param_1 + 0x60) = local_8;
      if ((*(int *)(iVar6 + 0xc) == 0) &&
         ((iVar6 != iVar3 || ((*(uint *)(*(int *)(param_1 + 0x14) + 0x14) & 0x4000) != 0)))) {
        iVar2 = FUN_00a82c40(iVar3);
        if (iVar2 == 0) {
          *(undefined4 *)(param_1 + 100) = 6;
          *(int *)(param_1 + 0x68) = iVar3;
          iVar4 = (*pcVar1)(0,param_1);
          if (iVar4 == 0) {
            return 0;
          }
        }
        else {
          iVar4 = FUN_00aa8fa0(iVar6,iVar2);
          if (iVar4 < 1) {
            *(undefined4 *)(param_1 + 100) = 7;
            *(int *)(param_1 + 0x68) = iVar6;
            iVar4 = (*pcVar1)(0,param_1);
            if (iVar4 == 0) {
              FUN_00a816d0(iVar2);
              return 0;
            }
          }
        }
        FUN_00a816d0(iVar2);
      }
      *(undefined4 *)(iVar6 + 0xc) = 1;
      iVar2 = FUN_00aeafe0();
      if (iVar2 == 0) {
        return 0;
      }
      *(int *)(param_1 + 0x6c) = iVar3;
      *(int *)(param_1 + 0x68) = iVar6;
      iVar3 = (*pcVar1)(1,param_1);
      if (iVar3 == 0) {
        return 0;
      }
      local_8 = local_8 + -1;
      if (local_8 < 0) break;
      iVar2 = FUN_00a80ee0(*(undefined4 *)(param_1 + 0x54),local_8);
      iVar3 = iVar6;
      iVar6 = iVar2;
    }
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aeb220(int param_1)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  int iStack_1c;
  int local_18;
  int local_14;
  int local_10;
  int local_c;
  code *local_8;
  int local_4;
  
  iVar2 = param_1;
  iVar6 = *(int *)(param_1 + 0x14);
  local_14 = 0;
  local_10 = 0;
  param_1 = 0;
  local_18 = 0;
  local_4 = iVar6;
  if (*(int *)(iVar2 + 8) == 0) {
    FUN_00a7f3c0(0xb,0x7f,0x69,".\\crypto\\x509\\x509_vfy.c",0xa4);
    return -1;
  }
  local_8 = *(code **)(iVar2 + 0x20);
  if (*(int *)(iVar2 + 0x54) == 0) {
    iVar3 = FUN_00a81010();
    *(int *)(iVar2 + 0x54) = iVar3;
    if ((iVar3 != 0) && (iVar3 = FUN_00a80df0(iVar3,*(undefined4 *)(iVar2 + 8)), iVar3 != 0)) {
      FUN_00a7fe40(*(int *)(iVar2 + 8) + 0x10,1,3,".\\crypto\\x509\\x509_vfy.c",0xb4);
      *(undefined4 *)(iVar2 + 0x50) = 1;
      goto LAB_00aeb2bf;
    }
    uVar8 = 0xb1;
LAB_00aeb2e3:
    FUN_00a7f3c0(0xb,0x7f,0x41,".\\crypto\\x509\\x509_vfy.c",uVar8);
  }
  else {
LAB_00aeb2bf:
    if ((*(int *)(iVar2 + 0xc) != 0) &&
       (local_18 = FUN_00a80f80(*(int *)(iVar2 + 0xc)), local_18 == 0)) {
      uVar8 = 0xbc;
      goto LAB_00aeb2e3;
    }
    iVar3 = FUN_00a80ed0(*(undefined4 *)(iVar2 + 0x54));
    iVar4 = FUN_00a80ee0(*(undefined4 *)(iVar2 + 0x54),iVar3 + -1);
    local_c = *(int *)(iVar6 + 0x20);
    if (iVar3 <= local_c) {
      do {
        iVar5 = (**(code **)(iVar2 + 0x28))(iVar2,iVar4,iVar4);
        iVar6 = local_18;
        if (((iVar5 != 0) || (*(int *)(iVar2 + 0xc) == 0)) ||
           (iStack_1c = FUN_00ae9e10(iVar2,iVar4), iStack_1c == 0)) break;
        iVar4 = FUN_00a80df0(*(undefined4 *)(iVar2 + 0x54),iStack_1c);
        if (iVar4 == 0) {
          uVar8 = 0xd9;
          goto LAB_00aeb2e3;
        }
        FUN_00a7fe40(iStack_1c + 0x10,1,3,".\\crypto\\x509\\x509_vfy.c",0xdc);
        FUN_00a81020(iVar6,iStack_1c);
        *(int *)(iVar2 + 0x50) = *(int *)(iVar2 + 0x50) + 1;
        iVar3 = iVar3 + 1;
        iVar4 = iStack_1c;
      } while (iVar3 <= local_c);
    }
    iVar6 = FUN_00a80ed0(*(undefined4 *)(iVar2 + 0x54));
    iVar6 = iVar6 + -1;
    iVar4 = FUN_00a80ee0(*(undefined4 *)(iVar2 + 0x54),iVar6);
    iVar7 = (**(code **)(iVar2 + 0x28))(iVar2,iVar4,iVar4);
    iVar5 = local_c;
    if (iVar7 == 0) {
joined_r0x00aeb49b:
      while ((iVar6 = local_c, bVar1 = iVar3 <= local_c, local_c = iVar5, bVar1 &&
             (iVar5 = (**(code **)(iVar2 + 0x28))(iVar2,iVar4,iVar4), iVar5 == 0))) {
        iVar7 = (**(code **)(iVar2 + 0x24))(&iStack_1c,iVar2,iVar4);
        iVar5 = iStack_1c;
        if (iVar7 < 0) {
          return iVar7;
        }
        if (iVar7 == 0) break;
        iVar4 = FUN_00a80df0(*(undefined4 *)(iVar2 + 0x54),iStack_1c);
        if (iVar4 == 0) {
          FUN_00a812c0(iStack_1c);
          FUN_00a7f3c0(0xb,0x7f,0x41,".\\crypto\\x509\\x509_vfy.c",0x12e);
          return 0;
        }
        iVar3 = iVar3 + 1;
        iVar4 = iVar5;
        iVar5 = local_c;
        local_c = iVar6;
      }
      iVar5 = (**(code **)(iVar2 + 0x28))(iVar2,iVar4,iVar4);
      iVar6 = local_14;
      if (iVar5 == 0) {
        if ((local_14 == 0) ||
           (iVar5 = (**(code **)(iVar2 + 0x28))(iVar2,iVar4,local_14), iVar5 == 0)) {
          *(int *)(iVar2 + 0x68) = iVar4;
          *(uint *)(iVar2 + 100) = ((*(int *)(iVar2 + 0x50) < iVar3) - 1 & 0x12) + 2;
        }
        else {
          FUN_00a80df0(*(undefined4 *)(iVar2 + 0x54),iVar6);
          iVar3 = iVar3 + 1;
          *(int *)(iVar2 + 0x50) = iVar3;
          *(int *)(iVar2 + 0x68) = iVar6;
          *(undefined4 *)(iVar2 + 100) = 0x13;
          local_14 = 0;
        }
        *(int *)(iVar2 + 0x60) = iVar3 + -1;
        local_10 = 1;
        param_1 = (*local_8)(0,iVar2);
        if (param_1 == 0) goto LAB_00aeb5fc;
      }
      param_1 = FUN_00ae9eb0();
      if ((param_1 != 0) && (param_1 = FUN_00aea0e0(), param_1 != 0)) {
        if (0 < *(int *)(local_4 + 0x1c)) {
          param_1 = FUN_00aea180();
        }
        if (param_1 != 0) {
          FUN_00aea970(0,*(undefined4 *)(iVar2 + 0x54));
          param_1 = (**(code **)(iVar2 + 0x2c))(iVar2);
          if (param_1 != 0) {
            if (*(code **)(iVar2 + 0x1c) == (code *)0x0) {
              param_1 = FUN_00aeb0a0(iVar2);
            }
            else {
              param_1 = (**(code **)(iVar2 + 0x1c))();
            }
            if (param_1 != 0) {
              if ((local_10 == 0) && ((*(byte *)(*(int *)(iVar2 + 0x14) + 0x14) & 0x80) != 0)) {
                param_1 = (**(code **)(iVar2 + 0x3c))(iVar2);
              }
              if (param_1 != 0) goto LAB_00aeb60a;
            }
          }
        }
      }
    }
    else {
      iVar5 = FUN_00a80ed0(*(undefined4 *)(iVar2 + 0x54));
      if (iVar5 != 1) {
        local_14 = FUN_00a80e50(*(undefined4 *)(iVar2 + 0x54));
        *(int *)(iVar2 + 0x50) = *(int *)(iVar2 + 0x50) + -1;
        iVar4 = FUN_00a80ee0(*(undefined4 *)(iVar2 + 0x54),iVar3 + -2);
        iVar3 = iVar3 + -1;
        iVar5 = local_c;
        goto joined_r0x00aeb49b;
      }
      iVar5 = (**(code **)(iVar2 + 0x24))(&iStack_1c,iVar2,iVar4);
      if ((0 < iVar5) && (iVar7 = FUN_00a82a60(iVar4,iStack_1c), iVar7 == 0)) {
        FUN_00a812c0(iVar4);
        iVar4 = iStack_1c;
        FUN_00a80f00(*(undefined4 *)(iVar2 + 0x54),iVar6,iStack_1c);
        *(undefined4 *)(iVar2 + 0x50) = 0;
        iVar5 = local_c;
        goto joined_r0x00aeb49b;
      }
      *(undefined4 *)(iVar2 + 100) = 0x12;
      *(int *)(iVar2 + 0x68) = iVar4;
      *(int *)(iVar2 + 0x60) = iVar6;
      if (iVar5 == 1) {
        FUN_00a812c0(iStack_1c);
      }
      local_10 = 1;
      param_1 = (*local_8)(0,iVar2);
      iVar5 = local_c;
      if (param_1 != 0) goto joined_r0x00aeb49b;
    }
  }
LAB_00aeb5fc:
  FUN_00aea970(0,*(undefined4 *)(iVar2 + 0x54));
LAB_00aeb60a:
  if (local_18 != 0) {
    FUN_00a80ea0(local_18);
  }
  if (local_14 != 0) {
    FUN_00a812c0(local_14);
  }
  return param_1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

bool FUN_00aeb670(int param_1,int *param_2,int *param_3,undefined4 *param_4,int *param_5,
                 undefined4 *param_6,undefined4 param_7)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  local_4 = *(undefined4 *)(param_1 + 0x68);
  iVar5 = *param_5;
  iVar3 = 0;
  local_8 = 0;
  local_14 = 0;
  local_c = 0;
  iVar4 = 0;
  iVar1 = FUN_00a80ed0(param_7);
  if (0 < iVar1) {
    do {
      iVar1 = FUN_00a80ee0(param_7,iVar4);
      local_10 = *param_6;
      iVar2 = FUN_00aeae90(&local_14,&local_10,local_4);
      if (iVar5 < iVar2) {
        local_c = local_14;
        local_8 = local_10;
        iVar3 = iVar1;
        iVar5 = iVar2;
      }
      iVar4 = iVar4 + 1;
      iVar1 = FUN_00a80ed0(param_7);
    } while (iVar4 < iVar1);
    if (iVar3 != 0) {
      if (*param_2 != 0) {
        FUN_00a8fba0(*param_2);
      }
      *param_2 = iVar3;
      *param_4 = local_c;
      *param_5 = iVar5;
      *param_6 = local_8;
      FUN_00a7fe40(iVar3 + 0xc,1,6,".\\crypto\\x509\\x509_vfy.c",0x354);
      if (*param_3 != 0) {
        FUN_00a8fba0(*param_3);
        *param_3 = 0;
      }
      FUN_00aeada0(param_1,param_3,param_5,param_7);
    }
  }
  return 0x1bf < iVar5;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int __fastcall FUN_00aeb7a0(undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 *unaff_EDI;
  undefined local_88 [16];
  undefined4 local_78;
  int local_74;
  undefined4 local_68;
  
  if (unaff_EDI[0x1f] != 0) {
    return 0;
  }
  iVar2 = FUN_00aebd60(local_88,*unaff_EDI,param_1,unaff_EDI[3]);
  if (iVar2 == 0) {
    return -1;
  }
  local_78 = unaff_EDI[4];
  uVar1 = unaff_EDI[5];
  if (local_74 != 0) {
    FUN_00a8f680(local_74);
  }
  local_68 = unaff_EDI[8];
  local_74 = uVar1;
  iVar2 = FUN_00aeb220(local_88);
  if (0 < iVar2) {
    iVar2 = FUN_00aea480();
  }
  FUN_00aeaab0(local_88);
  return iVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe
// WARNING: Removing unreachable block (ram,0x00aeb8f9)

undefined4 FUN_00aeb850(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  int unaff_ESI;
  
  FUN_00a82a40(param_3);
  iVar1 = FUN_00aeb670();
  if (iVar1 == 0) {
    uVar2 = (**(code **)(unaff_ESI + 0x44))();
    FUN_00aeb670();
    FUN_00a81120(uVar2,FUN_00a8fba0);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aeb940(int param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int local_4;
  
  iVar3 = *(int *)(param_1 + 0x60);
  local_4 = 0;
  iVar1 = FUN_00a80ed0(*(undefined4 *)(param_1 + 0x54));
  iVar2 = *(int *)(param_1 + 0x6c);
  if (iVar2 == 0) {
    if (iVar3 < iVar1 + -1) {
      iVar2 = FUN_00a80ee0(*(undefined4 *)(param_1 + 0x54),iVar3 + 1);
    }
    else {
      iVar2 = FUN_00a80ee0(*(undefined4 *)(param_1 + 0x54),iVar1 + -1);
      iVar3 = (**(code **)(param_1 + 0x28))(param_1,iVar2,iVar2);
      if (iVar3 == 0) {
        *(undefined4 *)(param_1 + 100) = 0x21;
        iVar3 = (**(code **)(param_1 + 0x20))(0,param_1);
        if (iVar3 == 0) goto LAB_00aebba0;
      }
    }
  }
  if (iVar2 != 0) {
    if (param_2[10] == 0) {
      if (((*(byte *)(iVar2 + 0x28) & 2) != 0) && ((*(byte *)(iVar2 + 0x2c) & 2) == 0)) {
        *(undefined4 *)(param_1 + 100) = 0x23;
        iVar3 = (**(code **)(param_1 + 0x20))(0,param_1);
        if (iVar3 == 0) goto LAB_00aebba0;
      }
      if ((*(byte *)(param_1 + 0x74) & 0x80) == 0) {
        *(undefined4 *)(param_1 + 100) = 0x2c;
        iVar3 = (**(code **)(param_1 + 0x20))(0,param_1);
        if (iVar3 == 0) goto LAB_00aebba0;
      }
      if (((*(byte *)(param_1 + 0x74) & 8) == 0) && (iVar3 = FUN_00aeb7a0(), iVar3 < 1)) {
        *(undefined4 *)(param_1 + 100) = 0x36;
        iVar3 = (**(code **)(param_1 + 0x20))(0,param_1);
        if (iVar3 == 0) goto LAB_00aebba0;
      }
      if ((*(byte *)(param_2 + 7) & 2) != 0) {
        *(undefined4 *)(param_1 + 100) = 0x29;
        iVar3 = (**(code **)(param_1 + 0x20))(0,param_1);
        if (iVar3 == 0) goto LAB_00aebba0;
      }
    }
    if ((*(byte *)(param_1 + 0x74) & 0x40) == 0) {
      *(int **)(param_1 + 0x70) = param_2;
      if ((*(byte *)(*(int *)(param_1 + 0x14) + 0x14) & 2) == 0) {
        iVar3 = 0;
      }
      else {
        iVar3 = *(int *)(param_1 + 0x14) + 8;
      }
      iVar1 = FUN_00aeab80(*(undefined4 *)(*param_2 + 0xc),iVar3);
      if (iVar1 == 0) {
        *(undefined4 *)(param_1 + 100) = 0xf;
        iVar1 = (**(code **)(param_1 + 0x20))(0,param_1);
joined_r0x00aebae4:
        if (iVar1 == 0) goto LAB_00aebab7;
      }
      else if (0 < iVar1) {
        *(undefined4 *)(param_1 + 100) = 0xb;
        iVar1 = (**(code **)(param_1 + 0x20))(0,param_1);
        goto joined_r0x00aebae4;
      }
      if (*(int *)(*param_2 + 0x10) != 0) {
        iVar3 = FUN_00aeab80(*(int *)(*param_2 + 0x10),iVar3);
        if (iVar3 == 0) {
          *(undefined4 *)(param_1 + 100) = 0x10;
          iVar3 = (**(code **)(param_1 + 0x20))(0,param_1);
          if (iVar3 == 0) {
            FUN_00a816d0(0);
            return 0;
          }
        }
        else if ((iVar3 < 0) && ((*(byte *)(param_1 + 0x74) & 2) == 0)) {
          *(undefined4 *)(param_1 + 100) = 0xc;
          iVar3 = (**(code **)(param_1 + 0x20))(0,param_1);
          if (iVar3 == 0) {
LAB_00aebab7:
            FUN_00a816d0(0);
            return 0;
          }
        }
      }
      *(undefined4 *)(param_1 + 0x70) = 0;
    }
    local_4 = FUN_00a82c40(iVar2);
    if (local_4 == 0) {
      *(undefined4 *)(param_1 + 100) = 6;
      iVar3 = (**(code **)(param_1 + 0x20))(0,param_1);
    }
    else {
      iVar3 = FUN_00a8fbe0(param_2,local_4);
      if (0 < iVar3) goto LAB_00aebb9a;
      *(undefined4 *)(param_1 + 100) = 8;
      iVar3 = (**(code **)(param_1 + 0x20))(0,param_1);
    }
    if (iVar3 == 0) goto LAB_00aebba0;
  }
LAB_00aebb9a:
  iVar3 = 1;
LAB_00aebba0:
  FUN_00a816d0(local_4);
  return iVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int __fastcall FUN_00aebbc0(int param_1)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  undefined4 local_8;
  int local_4;
  
  local_8 = 0;
  local_4 = 0;
  uVar1 = FUN_00a80ee0(*(undefined4 *)(param_1 + 0x54),*(undefined4 *)(param_1 + 0x60));
  *(undefined4 *)(param_1 + 0x68) = uVar1;
  *(undefined4 *)(param_1 + 0x6c) = 0;
  *(undefined4 *)(param_1 + 0x74) = 0;
  *(undefined4 *)(param_1 + 0x78) = 0;
  while( true ) {
    if (*(code **)(param_1 + 0x30) == (code *)0x0) {
      iVar2 = FUN_00aeb850(&local_8,&local_4,uVar1);
      iVar3 = local_4;
    }
    else {
      iVar2 = (**(code **)(param_1 + 0x30))(param_1,&local_8);
      iVar3 = 0;
    }
    if (iVar2 == 0) break;
    *(undefined4 *)(param_1 + 0x70) = local_8;
    iVar2 = (**(code **)(param_1 + 0x34))(param_1,local_8);
    if (iVar2 == 0) goto LAB_00aebcc7;
    if (iVar3 == 0) {
LAB_00aebc73:
      iVar2 = (**(code **)(param_1 + 0x38))(param_1,local_8,uVar1);
      if (iVar2 == 0) goto LAB_00aebcc7;
    }
    else {
      iVar2 = (**(code **)(param_1 + 0x34))(param_1,iVar3);
      if ((iVar2 == 0) || (iVar2 = (**(code **)(param_1 + 0x38))(param_1,iVar3,uVar1), iVar2 == 0))
      goto LAB_00aebcc7;
      if (iVar2 != 2) goto LAB_00aebc73;
    }
    FUN_00a8fba0(local_8);
    FUN_00a8fba0(iVar3);
    iVar3 = 0;
    local_8 = 0;
    local_4 = 0;
    if (*(int *)(param_1 + 0x78) == 0x807f) goto LAB_00aebcc7;
  }
  *(undefined4 *)(param_1 + 100) = 3;
  iVar2 = (**(code **)(param_1 + 0x20))(0,param_1);
LAB_00aebcc7:
  FUN_00a8fba0(local_8);
  FUN_00a8fba0(iVar3);
  *(undefined4 *)(param_1 + 0x70) = 0;
  return iVar2;
}



undefined4 FUN_00aebcf0(int param_1)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  uVar1 = *(uint *)(*(int *)(param_1 + 0x14) + 0x14);
  if ((uVar1 & 4) == 0) {
    return 1;
  }
  if ((uVar1 & 8) == 0) {
    if (*(int *)(param_1 + 0x7c) != 0) {
      return 1;
    }
    iVar2 = 0;
  }
  else {
    iVar2 = FUN_00a80ed0(*(undefined4 *)(param_1 + 0x54));
    iVar2 = iVar2 + -1;
  }
  iVar4 = 0;
  if (-1 < iVar2) {
    do {
      *(int *)(param_1 + 0x60) = iVar4;
      iVar3 = FUN_00aebbc0();
      if (iVar3 == 0) {
        return 0;
      }
      iVar4 = iVar4 + 1;
    } while (iVar4 <= iVar2);
  }
  return 1;
}



undefined4 FUN_00aebd60(int *param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  undefined4 uVar2;
  
  *param_1 = param_2;
  param_1[1] = 0;
  param_1[2] = param_3;
  param_1[3] = param_4;
  param_1[4] = 0;
  param_1[0x14] = 0;
  param_1[6] = 0;
  param_1[0x13] = 0;
  param_1[0x15] = 0;
  param_1[0x19] = 0;
  param_1[0x17] = 0;
  param_1[0x18] = 0;
  param_1[0x1a] = 0;
  param_1[0x1b] = 0;
  param_1[0x1c] = 0;
  param_1[0x1d] = 0;
  param_1[0x1e] = 0;
  param_1[0x16] = 0;
  param_1[0x1f] = 0;
  iVar1 = FUN_00a8f610();
  param_1[5] = iVar1;
  if (iVar1 == 0) {
    uVar2 = 0x7e8;
    goto LAB_00aebdbe;
  }
  if (param_2 == 0) {
    *(uint *)(iVar1 + 0x10) = *(uint *)(iVar1 + 0x10) | 0x11;
    param_1[0x12] = 0;
LAB_00aebdfb:
    uVar2 = FUN_00a8f7d0("default");
    iVar1 = FUN_00a8f830(param_1[5],uVar2);
    if (iVar1 != 0) {
      if ((param_2 == 0) || (*(int *)(param_2 + 0x1c) == 0)) {
        param_1[10] = (int)FUN_00ae9e60;
      }
      else {
        param_1[10] = *(int *)(param_2 + 0x1c);
      }
      if ((param_2 == 0) || (*(int *)(param_2 + 0x18) == 0)) {
        param_1[9] = (int)&LAB_00a82240;
      }
      else {
        param_1[9] = *(int *)(param_2 + 0x18);
      }
      if ((param_2 == 0) || (*(int *)(param_2 + 0x14) == 0)) {
        param_1[8] = (int)&LAB_00893da0;
      }
      else {
        param_1[8] = *(int *)(param_2 + 0x14);
      }
      if ((param_2 == 0) || (*(int *)(param_2 + 0x10) == 0)) {
        param_1[7] = (int)FUN_00aeb0a0;
      }
      else {
        param_1[7] = *(int *)(param_2 + 0x10);
      }
      if ((param_2 == 0) || (*(int *)(param_2 + 0x20) == 0)) {
        param_1[0xb] = (int)FUN_00aebcf0;
      }
      else {
        param_1[0xb] = *(int *)(param_2 + 0x20);
      }
      if ((param_2 == 0) || (*(int *)(param_2 + 0x24) == 0)) {
        param_1[0xc] = 0;
      }
      else {
        param_1[0xc] = *(int *)(param_2 + 0x24);
      }
      if ((param_2 == 0) || (*(int *)(param_2 + 0x28) == 0)) {
        param_1[0xd] = (int)FUN_00aeb940;
      }
      else {
        param_1[0xd] = *(int *)(param_2 + 0x28);
      }
      if ((param_2 == 0) || (*(int *)(param_2 + 0x2c) == 0)) {
        param_1[0xe] = (int)FUN_00aea740;
      }
      else {
        param_1[0xe] = *(int *)(param_2 + 0x2c);
      }
      if ((param_2 == 0) || (*(int *)(param_2 + 0x30) == 0)) {
        param_1[0x10] = (int)FUN_00a81ec0;
      }
      else {
        param_1[0x10] = *(int *)(param_2 + 0x30);
      }
      if ((param_2 == 0) || (*(int *)(param_2 + 0x34) == 0)) {
        param_1[0x11] = (int)FUN_00a82090;
      }
      else {
        param_1[0x11] = *(int *)(param_2 + 0x34);
      }
      param_1[0xf] = (int)FUN_00aea7c0;
      iVar1 = FUN_00a80700(5,param_1,param_1 + 0x20);
      if (iVar1 == 0) {
        FUN_00a85120(param_1);
        FUN_00a7f3c0(0xb,0x8f,0x41,".\\crypto\\x509\\x509_vfy.c",0x845);
        return 0;
      }
      return 1;
    }
  }
  else {
    iVar1 = FUN_00a8f830(iVar1,*(undefined4 *)(param_2 + 0xc));
    param_1[8] = *(int *)(param_2 + 0x14);
    param_1[0x12] = *(int *)(param_2 + 0x38);
    if (iVar1 != 0) goto LAB_00aebdfb;
  }
  uVar2 = 0x804;
LAB_00aebdbe:
  FUN_00a7f3c0(0xb,0x8f,0x41,".\\crypto\\x509\\x509_vfy.c",uVar2);
  return 0;
}



int * FUN_00aebf60(int *param_1)

{
  int iVar1;
  
  iVar1 = FUN_00a877e0(*param_1);
  if (iVar1 < 0xce) {
    if (iVar1 == 0xcd) {
      return (int *)(*(int *)(param_1[1] + 0x14) + 4);
    }
    switch(iVar1) {
    case 0x15:
switchD_00aebf81_caseD_15:
      return param_1 + 1;
    case 0x16:
      return (int *)(*(int *)(param_1[1] + 8) + 4);
    case 0x17:
      return (int *)(*(int *)(param_1[1] + 0xc) + 8);
    case 0x19:
      return (int *)(*(int *)(param_1[1] + 8) + 4);
    case 0x1a:
      return (int *)(*(int *)(param_1[1] + 4) + 8);
    }
  }
  else if (iVar1 == 0x312) {
    return (int *)(*(int *)(param_1[1] + 0xc) + 4);
  }
  param_1 = (int *)param_1[1];
  if (*param_1 != 4) {
    FUN_00a7f3c0(0x2e,0x81,0x98,".\\crypto\\cms\\cms_lib.c",0xee);
    return (int *)0x0;
  }
  goto switchD_00aebf81_caseD_15;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aec020(undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  undefined4 local_4;
  
  local_4 = 0xaec02a;
  FUN_00a89660(&local_4,0,0,param_1);
  uVar1 = FUN_00a877e0(local_4);
  uVar1 = FUN_00a87520(uVar1);
  iVar2 = FUN_00a802c0(uVar1);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x2e,0x74,0x95,".\\crypto\\cms\\cms_lib.c",0x173);
    return 0;
  }
  uVar1 = FUN_00af5f40();
  iVar3 = FUN_00a838c0(uVar1);
  if (iVar3 != 0) {
    iVar2 = FUN_00a83650(iVar3,0x6f,0,iVar2);
    if (iVar2 != 0) {
      return iVar3;
    }
  }
  FUN_00a7f3c0(0x2e,0x74,0x77,".\\crypto\\cms\\cms_lib.c",0x17a);
  if (iVar3 != 0) {
    FUN_00a83270(iVar3);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aec0e0(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 local_4;
  
  local_4 = 0xaec0ea;
  FUN_00a89660(&local_4,0,0,param_3);
  iVar1 = FUN_00a877e0(local_4);
  iVar2 = FUN_00a83820(param_2,0x208);
  while( true ) {
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x2e,0x73,0x83,".\\crypto\\cms\\cms_lib.c",0x195);
      return 0;
    }
    FUN_00a83650(iVar2,0x78,0,&param_2);
    uVar3 = FUN_00a92630(param_2);
    iVar4 = FUN_00a814c0(uVar3);
    if (iVar4 == iVar1) break;
    uVar3 = FUN_00a92630(param_2);
    iVar4 = FUN_00a7fa30(uVar3);
    if (iVar4 == iVar1) break;
    uVar3 = FUN_00a83860(iVar2);
    iVar2 = FUN_00a83820(uVar3,0x208);
  }
  uVar3 = FUN_00a916d0(param_1,param_2);
  return uVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aec2f0(undefined4 *param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 local_4;
  
  local_4 = 0xaec2fa;
  piVar1 = (int *)FUN_00aebf60(param_1);
  if (piVar1 == (int *)0x0) {
    return 0;
  }
  if ((*piVar1 != 0) && ((*(byte *)(*piVar1 + 0xc) & 0x20) != 0)) {
    iVar2 = FUN_00a83820(param_2,0x401);
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x2e,0x6e,0x69,".\\crypto\\cms\\cms_lib.c",0xac);
      return 0;
    }
    uVar3 = FUN_00a83650(iVar2,3,0,&local_4);
    FUN_00a83310(iVar2,0x200);
    FUN_00a83650(iVar2,0x82,0,0);
    FUN_00a90cf0(*piVar1,local_4,uVar3);
    *(uint *)(*piVar1 + 0xc) = *(uint *)(*piVar1 + 0xc) & 0xffffffdf;
  }
  iVar2 = FUN_00a877e0(*param_1);
  if (0x312 < iVar2) {
switchD_00aec3bc_caseD_18:
    FUN_00a7f3c0(0x2e,0x6e,0x9c,".\\crypto\\cms\\cms_lib.c",200);
    return 0;
  }
  if (iVar2 != 0x312) {
    switch(iVar2) {
    case 0x15:
    case 0x17:
    case 0x1a:
      break;
    case 0x16:
      uVar3 = FUN_00ad86b0(param_1,param_2);
      return uVar3;
    default:
      goto switchD_00aec3bc_caseD_18;
    case 0x19:
      uVar3 = FUN_00af63b0(param_1,param_2,0);
      return uVar3;
    }
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aec430(int *param_1,undefined4 param_2,undefined4 *param_3,int *param_4)

{
  undefined4 *puVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  undefined4 local_6c;
  undefined4 local_68;
  undefined4 *local_64;
  undefined4 local_60;
  undefined local_5c [24];
  undefined local_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_6c;
  local_6c = param_2;
  local_64 = param_3;
  iVar4 = 0;
  *param_3 = 0;
  FUN_00a91330(local_5c);
  iVar2 = FUN_00a916d0(local_5c,param_1);
  if (iVar2 != 0) {
    iVar2 = FUN_00a91540(local_5c,local_44,&local_68);
    if (iVar2 != 0) {
      FUN_00a915c0(local_5c);
      puVar1 = (undefined4 *)*param_1;
      if ((*(byte *)(puVar1 + 3) & 4) == 0) {
        iVar2 = 0;
        piVar3 = puVar1 + 0xb;
        do {
          if (*piVar3 == 0) break;
          if (*param_4 == *piVar3) {
            if ((code *)puVar1[9] == (code *)0x0) {
              FUN_00a7f3c0(6,0x6b,0x68,".\\crypto\\evp\\p_sign.c",0x85);
              ___security_check_cookie_4();
              return;
            }
            (*(code *)puVar1[9])(*puVar1,local_44,local_68,local_6c,local_64,param_4[5]);
            ___security_check_cookie_4();
            return;
          }
          iVar2 = iVar2 + 1;
          piVar3 = piVar3 + 1;
        } while (iVar2 < 4);
        FUN_00a7f3c0(6,0x6b,0x6e,".\\crypto\\evp\\p_sign.c",0x7f);
        ___security_check_cookie_4();
        return;
      }
      local_60 = FUN_00a81360(param_4);
      iVar4 = FUN_00a98af0(param_4,0);
      if (iVar4 != 0) {
        iVar2 = FUN_00aec9c0(iVar4);
        if (0 < iVar2) {
          iVar2 = FUN_00a988b0(iVar4,0xffffffff,0xf8,1,0,*param_1);
          if (0 < iVar2) {
            iVar2 = FUN_00aeca20(iVar4,local_6c,&local_60,local_44,local_68);
            if (0 < iVar2) {
              *local_64 = local_60;
            }
          }
        }
      }
    }
  }
  FUN_00a98850(iVar4);
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aec610(int param_1)

{
  undefined *puVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  bool bVar6;
  undefined4 local_2c;
  undefined4 *local_28;
  int local_24;
  int local_20;
  int local_1c;
  undefined *local_18;
  undefined local_14 [16];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_2c;
  iVar4 = 0;
  local_28 = *(undefined4 **)(param_1 + 4);
  iVar5 = 0;
  bVar6 = *(int *)(param_1 + 0xc) != 0;
  local_18 = (undefined *)0x0;
  local_20 = 0;
  local_24 = 0;
  uVar2 = FUN_00af64f0();
  local_1c = FUN_00a838c0(uVar2);
  if (local_1c == 0) {
    FUN_00a7f3c0(0x2e,0x78,0x41,".\\crypto\\cms\\cms_enc.c",0x59);
    ___security_check_cookie_4();
    return;
  }
  FUN_00a83650(local_1c,0x81,0,&local_2c);
  if (bVar6) {
    iVar3 = *(int *)(param_1 + 0xc);
    if (*(int *)(param_1 + 0x10) != 0) {
      *(undefined4 *)(param_1 + 0xc) = 0;
    }
  }
  else {
    uVar2 = FUN_00a877e0(*local_28);
    uVar2 = FUN_00a87520(uVar2);
    iVar3 = FUN_00a802b0(uVar2);
    if (iVar3 == 0) {
      FUN_00a7f3c0(0x2e,0x78,0x94,".\\crypto\\cms\\cms_enc.c",0x6f);
      goto LAB_00aec920;
    }
  }
  iVar3 = FUN_00aabb10(local_2c,iVar3,0,0,0,bVar6);
  if (iVar3 < 1) {
    uVar2 = 0x77;
  }
  else {
    if (bVar6) {
      uVar2 = FUN_00a814c0(local_2c);
      uVar2 = FUN_00a92730(uVar2);
      uVar2 = FUN_00a87490(uVar2);
      *local_28 = uVar2;
      iVar3 = FUN_00a82a40(local_2c);
      if (0 < iVar3) {
        iVar3 = FUN_00a86ec0(local_14,iVar3);
        if (iVar3 < 1) goto LAB_00aec920;
        local_18 = local_14;
      }
    }
    else {
      iVar3 = FUN_00a929b0(local_2c,local_28[1]);
      if (iVar3 < 1) {
        FUN_00a7f3c0(0x2e,0x78,0x66,".\\crypto\\cms\\cms_enc.c",0x8b);
        goto LAB_00aec920;
      }
    }
    iVar5 = FUN_00a925e0(local_2c);
    if ((!bVar6) || (*(int *)(param_1 + 0x10) == 0)) {
      iVar4 = FUN_00a84f80(iVar5,".\\crypto\\cms\\cms_enc.c",0x92);
      if (iVar4 == 0) {
        FUN_00a7f3c0(0x2e,0x78,0x41,".\\crypto\\cms\\cms_enc.c",0x96);
        goto LAB_00aec920;
      }
      iVar3 = FUN_00aab9c0(local_2c,iVar4);
      if (iVar3 < 1) goto LAB_00aec920;
    }
    if (*(int *)(param_1 + 0x10) == 0) {
      *(int *)(param_1 + 0x10) = iVar4;
      iVar4 = 0;
      *(int *)(param_1 + 0x14) = iVar5;
      if (bVar6) {
        local_24 = 1;
      }
      else {
        FUN_00a7f4b0();
      }
    }
    if (*(int *)(param_1 + 0x14) != iVar5) {
      iVar3 = FUN_00aabe70(local_2c,*(int *)(param_1 + 0x14));
      if (iVar3 < 1) {
        if ((bVar6) || (*(int *)(param_1 + 0x18) != 0)) {
          FUN_00a7f3c0(0x2e,0x78,0x76,".\\crypto\\cms\\cms_enc.c",0xb4);
          goto LAB_00aec920;
        }
        FUN_00a84330(*(undefined4 *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x14));
        FUN_00a85120(*(undefined4 *)(param_1 + 0x10));
        *(int *)(param_1 + 0x10) = iVar4;
        *(int *)(param_1 + 0x14) = iVar5;
        iVar4 = 0;
        FUN_00a7f4b0();
      }
    }
    puVar1 = local_18;
    iVar3 = FUN_00aabb10(local_2c,0,0,*(undefined4 *)(param_1 + 0x10),local_18,bVar6);
    if (0 < iVar3) {
      if (puVar1 != (undefined *)0x0) {
        iVar3 = FUN_00a889c0();
        local_28[1] = iVar3;
        if (iVar3 == 0) {
          FUN_00a7f3c0(0x2e,0x78,0x41,".\\crypto\\cms\\cms_enc.c",0xd1);
          goto LAB_00aec920;
        }
        iVar3 = FUN_00a92980(local_2c,iVar3);
        if (iVar3 < 1) {
          FUN_00a7f3c0(0x2e,0x78,0x66,".\\crypto\\cms\\cms_enc.c",0xd7);
          goto LAB_00aec920;
        }
      }
      local_20 = 1;
      goto LAB_00aec920;
    }
    uVar2 = 199;
  }
  FUN_00a7f3c0(0x2e,0x78,0x65,".\\crypto\\cms\\cms_enc.c",uVar2);
LAB_00aec920:
  if ((*(int *)(param_1 + 0x10) != 0) && (local_24 == 0)) {
    FUN_00a84330(*(int *)(param_1 + 0x10),*(undefined4 *)(param_1 + 0x14));
    FUN_00a85120(*(undefined4 *)(param_1 + 0x10));
    *(undefined4 *)(param_1 + 0x10) = 0;
  }
  if (iVar4 != 0) {
    FUN_00a84330(iVar4,iVar5);
    FUN_00a85120(iVar4);
  }
  if (local_20 == 0) {
    FUN_00a83270(local_1c);
  }
  ___security_check_cookie_4();
  return;
}



void FUN_00aec990(int param_1)

{
  undefined4 *puVar1;
  
  puVar1 = *(undefined4 **)(param_1 + 4);
  if ((*(int *)(puVar1[1] + 0xc) != 0) && (puVar1[2] != 0)) {
    *puVar1 = 2;
  }
  FUN_00aec610();
  return;
}



int FUN_00aec9c0(int *param_1)

{
  int iVar1;
  
  if (((param_1 == (int *)0x0) || (iVar1 = *param_1, iVar1 == 0)) || (*(int *)(iVar1 + 0x28) == 0))
  {
    FUN_00a7f3c0(6,0x8d,0x96,".\\crypto\\evp\\pmeth_fn.c",0x58);
    iVar1 = -2;
  }
  else {
    param_1[4] = 8;
    if (*(code **)(iVar1 + 0x24) == (code *)0x0) {
      return 1;
    }
    iVar1 = (**(code **)(iVar1 + 0x24))(param_1);
    if (iVar1 < 1) {
      param_1[4] = 0;
      return iVar1;
    }
  }
  return iVar1;
}



undefined4
FUN_00aeca20(int *param_1,int param_2,uint *param_3,undefined4 param_4,undefined4 param_5)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  
  if (((param_1 == (int *)0x0) || (iVar1 = *param_1, iVar1 == 0)) || (*(int *)(iVar1 + 0x28) == 0))
  {
    FUN_00a7f3c0(6,0x8c,0x96,".\\crypto\\evp\\pmeth_fn.c",0x6b);
    return 0xfffffffe;
  }
  if (param_1[4] != 8) {
    FUN_00a7f3c0(6,0x8c,0x97,".\\crypto\\evp\\pmeth_fn.c",0x70);
    return 0xffffffff;
  }
  if ((*(byte *)(iVar1 + 4) & 2) != 0) {
    uVar2 = FUN_00a81360(param_1[2]);
    if (param_2 == 0) {
      *param_3 = uVar2;
      return 1;
    }
    if (*param_3 < uVar2) {
      FUN_00a7f3c0(6,0x8c,0x9b,".\\crypto\\evp\\pmeth_fn.c",0x73);
      return 0;
    }
  }
  uVar3 = (**(code **)(*param_1 + 0x28))(param_1,param_2,param_3,param_4,param_5);
  return uVar3;
}



int FUN_00aecb00(int *param_1)

{
  int iVar1;
  
  if (((param_1 == (int *)0x0) || (iVar1 = *param_1, iVar1 == 0)) || (*(int *)(iVar1 + 0x30) == 0))
  {
    FUN_00a7f3c0(6,0x8f,0x96,".\\crypto\\evp\\pmeth_fn.c",0x7d);
    iVar1 = -2;
  }
  else {
    param_1[4] = 0x10;
    if (*(code **)(iVar1 + 0x2c) == (code *)0x0) {
      return 1;
    }
    iVar1 = (**(code **)(iVar1 + 0x2c))(param_1);
    if (iVar1 < 1) {
      param_1[4] = 0;
      return iVar1;
    }
  }
  return iVar1;
}



undefined4 FUN_00aecb60(int *param_1)

{
  code *UNRECOVERED_JUMPTABLE;
  undefined4 uVar1;
  
  if (((param_1 != (int *)0x0) && (*param_1 != 0)) &&
     (UNRECOVERED_JUMPTABLE = *(code **)(*param_1 + 0x30), UNRECOVERED_JUMPTABLE != (code *)0x0)) {
    if (param_1[4] != 0x10) {
      FUN_00a7f3c0(6,0x8e,0x97,".\\crypto\\evp\\pmeth_fn.c",0x95);
      return 0xffffffff;
    }
                    // WARNING: Could not recover jumptable at 0x00aecba1. Too many branches
                    // WARNING: Treating indirect jump as call
    uVar1 = (*UNRECOVERED_JUMPTABLE)();
    return uVar1;
  }
  FUN_00a7f3c0(6,0x8e,0x96,".\\crypto\\evp\\pmeth_fn.c",0x90);
  return 0xfffffffe;
}



int FUN_00aecbd0(int *param_1)

{
  int iVar1;
  
  if (((param_1 == (int *)0x0) || (iVar1 = *param_1, iVar1 == 0)) || (*(int *)(iVar1 + 0x50) == 0))
  {
    FUN_00a7f3c0(6,0x8b,0x96,".\\crypto\\evp\\pmeth_fn.c",0xc6);
    iVar1 = -2;
  }
  else {
    param_1[4] = 0x100;
    if (*(code **)(iVar1 + 0x4c) == (code *)0x0) {
      return 1;
    }
    iVar1 = (**(code **)(iVar1 + 0x4c))(param_1);
    if (iVar1 < 1) {
      param_1[4] = 0;
      return iVar1;
    }
  }
  return iVar1;
}



undefined4
FUN_00aecc40(int *param_1,int param_2,uint *param_3,undefined4 param_4,undefined4 param_5)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  
  if (((param_1 == (int *)0x0) || (iVar1 = *param_1, iVar1 == 0)) || (*(int *)(iVar1 + 0x50) == 0))
  {
    FUN_00a7f3c0(6,0x69,0x96,".\\crypto\\evp\\pmeth_fn.c",0xd9);
    return 0xfffffffe;
  }
  if (param_1[4] != 0x100) {
    FUN_00a7f3c0(6,0x69,0x97,".\\crypto\\evp\\pmeth_fn.c",0xde);
    return 0xffffffff;
  }
  if ((*(byte *)(iVar1 + 4) & 2) != 0) {
    uVar2 = FUN_00a81360(param_1[2]);
    if (param_2 == 0) {
      *param_3 = uVar2;
      return 1;
    }
    if (*param_3 < uVar2) {
      FUN_00a7f3c0(6,0x69,0x9b,".\\crypto\\evp\\pmeth_fn.c",0xe1);
      return 0;
    }
  }
  uVar3 = (**(code **)(*param_1 + 0x50))(param_1,param_2,param_3,param_4,param_5);
  return uVar3;
}



int FUN_00aecd20(int *param_1)

{
  int iVar1;
  
  if (((param_1 == (int *)0x0) || (iVar1 = *param_1, iVar1 == 0)) || (*(int *)(iVar1 + 0x58) == 0))
  {
    FUN_00a7f3c0(6,0x8a,0x96,".\\crypto\\evp\\pmeth_fn.c",0xeb);
    iVar1 = -2;
  }
  else {
    param_1[4] = 0x200;
    if (*(code **)(iVar1 + 0x54) == (code *)0x0) {
      return 1;
    }
    iVar1 = (**(code **)(iVar1 + 0x54))(param_1);
    if (iVar1 < 1) {
      param_1[4] = 0;
      return iVar1;
    }
  }
  return iVar1;
}



undefined4
FUN_00aecd90(int *param_1,int param_2,uint *param_3,undefined4 param_4,undefined4 param_5)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  
  if (((param_1 == (int *)0x0) || (iVar1 = *param_1, iVar1 == 0)) || (*(int *)(iVar1 + 0x58) == 0))
  {
    FUN_00a7f3c0(6,0x68,0x96,".\\crypto\\evp\\pmeth_fn.c",0xfe);
    return 0xfffffffe;
  }
  if (param_1[4] != 0x200) {
    FUN_00a7f3c0(6,0x68,0x97,".\\crypto\\evp\\pmeth_fn.c",0x103);
    return 0xffffffff;
  }
  if ((*(byte *)(iVar1 + 4) & 2) != 0) {
    uVar2 = FUN_00a81360(param_1[2]);
    if (param_2 == 0) {
      *param_3 = uVar2;
      return 1;
    }
    if (*param_3 < uVar2) {
      FUN_00a7f3c0(6,0x68,0x9b,".\\crypto\\evp\\pmeth_fn.c",0x106);
      return 0;
    }
  }
  uVar3 = (**(code **)(*param_1 + 0x58))(param_1,param_2,param_3,param_4,param_5);
  return uVar3;
}



int FUN_00aece70(int *param_1,int *param_2)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  if ((((param_1 == (int *)0x0) || (iVar2 = *param_1, iVar2 == 0)) ||
      ((*(int *)(iVar2 + 0x60) == 0 &&
       ((*(int *)(iVar2 + 0x50) == 0 && (*(int *)(iVar2 + 0x58) == 0)))))) ||
     (*(code **)(iVar2 + 100) == (code *)0x0)) {
    FUN_00a7f3c0(6,0x9b,0x96,".\\crypto\\evp\\pmeth_fn.c",0x123);
    return -2;
  }
  iVar1 = param_1[4];
  if (((iVar1 != 0x400) && (iVar1 != 0x100)) && (iVar1 != 0x200)) {
    FUN_00a7f3c0(6,0x9b,0x97,".\\crypto\\evp\\pmeth_fn.c",0x129);
    return -1;
  }
  iVar2 = (**(code **)(iVar2 + 100))(param_1,2,0,param_2);
  if (iVar2 < 1) {
    return iVar2;
  }
  if (iVar2 != 2) {
    if ((int *)param_1[2] == (int *)0x0) {
      uVar4 = 0x137;
      uVar3 = 0x9a;
    }
    else if (*(int *)param_1[2] == *param_2) {
      iVar2 = FUN_00a81380(param_2);
      if ((iVar2 != 0) || (iVar2 = FUN_00a813a0(param_1[2],param_2), iVar2 != 0)) {
        if (param_1[3] != 0) {
          FUN_00a816d0(param_1[3]);
        }
        param_1[3] = (int)param_2;
        iVar2 = (**(code **)(*param_1 + 100))(param_1,2,1,param_2);
        if (0 < iVar2) {
          FUN_00a7fe40(param_2 + 2,1,10,".\\crypto\\evp\\pmeth_fn.c",0x15b);
          return 1;
        }
        param_1[3] = 0;
        return iVar2;
      }
      uVar4 = 0x14b;
      uVar3 = 0x99;
    }
    else {
      uVar4 = 0x13e;
      uVar3 = 0x65;
    }
    FUN_00a7f3c0(6,0x9b,uVar3,".\\crypto\\evp\\pmeth_fn.c",uVar4);
    return -1;
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aecff0(undefined4 param_1,undefined4 *param_2,undefined4 *param_3,void *param_4,
                 uint param_5)

{
  byte bVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  uint uVar4;
  undefined4 *puVar5;
  int iVar6;
  int local_1c;
  undefined4 *local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_1c;
  local_18 = param_3;
  if (((param_5 & 7) == 0) && (7 < param_5)) {
    uVar4 = 1;
    _memcpy(param_3 + 2,param_4,param_5);
    if (param_2 == (undefined4 *)0x0) {
      param_2 = &DAT_00dc9ba4;
    }
    local_14 = *param_2;
    local_10 = param_2[1];
    local_1c = 6;
    do {
      if (param_5 != 0) {
        iVar6 = (param_5 - 1 >> 3) + 1;
        puVar2 = param_3;
        do {
          puVar5 = puVar2 + 2;
          local_c = *puVar5;
          local_8 = puVar2[3];
          FUN_00ab7040(&local_14,&local_14,param_1);
          uVar3 = local_10;
          bVar1 = local_10._3_1_ ^ (byte)uVar4;
          local_10 = CONCAT13(bVar1,(undefined3)local_10);
          if (0xff < uVar4) {
            local_10._2_1_ = SUB41(uVar3,2);
            local_10._1_1_ = SUB41(uVar3,1);
            local_10._1_1_ = local_10._1_1_ ^ (byte)(uVar4 >> 0x10);
            local_10._0_1_ = (byte)uVar3;
            local_10 = CONCAT22(CONCAT11(bVar1,local_10._2_1_ ^ (byte)(uVar4 >> 8)),
                                CONCAT11(local_10._1_1_,(byte)local_10));
            local_10 = CONCAT31(local_10._1_3_,(byte)local_10 ^ (byte)(uVar4 >> 0x18));
          }
          *puVar5 = local_c;
          puVar2[3] = local_8;
          uVar4 = uVar4 + 1;
          iVar6 = iVar6 + -1;
          param_3 = local_18;
          puVar2 = puVar5;
        } while (iVar6 != 0);
      }
      local_1c = local_1c + -1;
    } while (local_1c != 0);
    *param_3 = local_14;
    param_3[1] = local_10;
    ___security_check_cookie_4();
    return;
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __thiscall FUN_00aed120(undefined4 param_1_00,void *param_1,uint *param_2,int param_3)

{
  uint uVar1;
  byte *pbVar2;
  undefined4 uVar3;
  uint unaff_EDI;
  undefined local_8 [4];
  undefined4 local_4;
  
  local_4 = 0xaed12a;
  uVar1 = FUN_00a925b0(param_1_00);
  local_4 = 0;
  if ((uVar1 * 2 <= unaff_EDI) && (unaff_EDI % uVar1 == 0)) {
    pbVar2 = (byte *)FUN_00a84f80();
    FUN_00aab5f0(param_1_00,pbVar2 + unaff_EDI + uVar1 * -2,local_8,param_3 + uVar1 * -2 + unaff_EDI
                 ,uVar1 * 2);
    FUN_00aab5f0(param_1_00,pbVar2,local_8,pbVar2 + (unaff_EDI - uVar1),uVar1);
    FUN_00aab5f0(param_1_00,pbVar2,local_8,param_3,unaff_EDI - uVar1);
    FUN_00aabe20(param_1_00,0,0,0,0);
    FUN_00aab5f0(param_1_00,pbVar2,local_8,pbVar2);
    uVar3 = local_4;
    if (((byte)((pbVar2[6] ^ pbVar2[3]) & (pbVar2[5] ^ pbVar2[2]) & (pbVar2[1] ^ pbVar2[4])) == 0xff
        ) && (uVar1 = (uint)*pbVar2, uVar1 - 4 <= unaff_EDI)) {
      *param_2 = uVar1;
      _memcpy(param_1,pbVar2 + 4,uVar1);
      uVar3 = 1;
    }
    FUN_00a84330(pbVar2);
    FUN_00a85120(pbVar2);
    return uVar3;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __thiscall FUN_00aed240(uint param_1_00,uint *param_1,byte *param_2,undefined4 param_3)

{
  uint uVar1;
  uint uVar2;
  undefined *unaff_EDI;
  
  uVar1 = FUN_00a925b0(param_3);
  uVar2 = ((uVar1 + 3 + param_1_00) / uVar1) * uVar1;
  if ((uVar1 * 2 <= uVar2) && (param_1_00 < 0x100)) {
    if (unaff_EDI != (undefined *)0x0) {
      *unaff_EDI = (char)param_1_00;
      unaff_EDI[1] = ~*param_2;
      unaff_EDI[2] = ~param_2[1];
      unaff_EDI[3] = ~param_2[2];
      _memcpy(unaff_EDI + 4,param_2,param_1_00);
      if (param_1_00 + 4 <= uVar2 && uVar2 - (param_1_00 + 4) != 0) {
        FUN_00a86ec0(unaff_EDI + param_1_00 + 4,(uVar2 - param_1_00) + -4);
      }
      FUN_00aab370(param_3);
      FUN_00aab370(param_3);
    }
    *param_1 = uVar2;
    return 1;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aed300(int param_1,int param_2,int param_3)

{
  undefined4 *puVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  uint local_a0;
  int local_9c;
  undefined4 *local_98;
  undefined4 local_94;
  undefined local_90 [140];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_a0;
  iVar7 = *(int *)(param_2 + 4);
  iVar8 = 0;
  local_94 = 0;
  iVar6 = *(int *)(*(int *)(param_1 + 4) + 0xc);
  local_9c = 0;
  FUN_00aab350(local_90);
  if (*(int *)(iVar7 + 0x10) == 0) {
    FUN_00a7f3c0(0x2e,0xa7,0xb2,".\\crypto\\cms\\cms_pwri.c",0x157);
    ___security_check_cookie_4();
    return;
  }
  puVar1 = *(undefined4 **)(iVar7 + 8);
  if (puVar1 == (undefined4 *)0x0) {
LAB_00aed62e:
    uVar10 = 0x15f;
    uVar9 = 0xb3;
  }
  else {
    iVar3 = FUN_00a877e0(*puVar1);
    if (iVar3 != 0x37d) goto LAB_00aed62e;
    if (*(int *)puVar1[1] == 0x10) {
      local_94 = *(undefined4 *)(((int *)puVar1[1])[1] + 8);
      local_98 = (undefined4 *)FUN_00a89580(0,&local_94,**(undefined4 **)(puVar1[1] + 4));
      if (local_98 != (undefined4 *)0x0) {
        uVar9 = FUN_00a877e0(*local_98);
        uVar9 = FUN_00a87520(uVar9);
        iVar3 = FUN_00a802b0(uVar9);
        if (iVar3 == 0) {
          FUN_00a7f3c0(0x2e,0xa7,0x94,".\\crypto\\cms\\cms_pwri.c",0x175);
        }
        else {
          iVar3 = FUN_00aabb10(local_90,iVar3,0,0,0,param_3);
          if (iVar3 != 0) {
            FUN_00aab900(local_90,0);
            iVar3 = FUN_00a929b0(local_90,local_98[1]);
            if (iVar3 < 0) {
              FUN_00a7f3c0(0x2e,0xa7,0x66,".\\crypto\\cms\\cms_pwri.c",0x180);
            }
            else {
              iVar3 = FUN_00a88510(**(undefined4 **)(iVar7 + 4),*(undefined4 *)(iVar7 + 0x10),
                                   *(undefined4 *)(iVar7 + 0x14),(*(undefined4 **)(iVar7 + 4))[1],
                                   local_90,param_3);
              if (iVar3 < 0) {
                FUN_00a7f3c0(0x2e,0xa7,6,".\\crypto\\cms\\cms_pwri.c",0x18c);
              }
              else if (param_3 == 0) {
                iVar8 = FUN_00a84f80(**(undefined4 **)(iVar7 + 0xc),".\\crypto\\cms\\cms_pwri.c",
                                     0x1a4);
                if (iVar8 == 0) {
                  FUN_00a7f3c0(0x2e,0xa7,0x41,".\\crypto\\cms\\cms_pwri.c",0x1a9);
                }
                else {
                  iVar7 = FUN_00aed120(iVar8,&local_a0,*(undefined4 *)(*(int *)(iVar7 + 0xc) + 8));
                  if (iVar7 == 0) {
                    FUN_00a7f3c0(0x2e,0xa7,0xb4,".\\crypto\\cms\\cms_pwri.c",0x1b1);
                  }
                  else {
                    *(int *)(iVar6 + 0x10) = iVar8;
                    *(uint *)(iVar6 + 0x14) = local_a0;
LAB_00aed5f3:
                    local_9c = 1;
                  }
                }
              }
              else {
                uVar2 = *(uint *)(iVar6 + 0x14);
                uVar4 = FUN_00a925b0(local_90);
                uVar5 = ((uVar4 + 3 + uVar2) / uVar4) * uVar4;
                if ((uVar4 * 2 <= uVar5) && (uVar2 < 0x100)) {
                  local_a0 = uVar5;
                  iVar8 = FUN_00a84f80(uVar5,".\\crypto\\cms\\cms_pwri.c",0x198);
                  if (iVar8 != 0) {
                    iVar6 = FUN_00aed240(&local_a0,*(undefined4 *)(iVar6 + 0x10),local_90);
                    if (iVar6 != 0) {
                      *(int *)(*(int *)(iVar7 + 0xc) + 8) = iVar8;
                      **(uint **)(iVar7 + 0xc) = local_a0;
                      goto LAB_00aed5f3;
                    }
                  }
                }
              }
            }
          }
        }
        FUN_00aab890(local_90);
        if ((local_9c == 0) && (iVar8 != 0)) {
          FUN_00a85120(iVar8);
        }
        FUN_00a895b0(local_98);
        goto LAB_00aed64e;
      }
    }
    uVar10 = 0x16c;
    uVar9 = 0xb0;
  }
  FUN_00a7f3c0(0x2e,0xa7,uVar9,".\\crypto\\cms\\cms_pwri.c",uVar10);
LAB_00aed64e:
  ___security_check_cookie_4();
  return;
}



int FUN_00aed670(void)

{
  int *piVar1;
  int iVar2;
  int unaff_ESI;
  
  iVar2 = FUN_00a877e0(*(undefined4 *)(unaff_ESI + 0x10));
  if (iVar2 == 0x15) {
    return *(int *)(unaff_ESI + 0x14);
  }
  iVar2 = FUN_00a877e0(*(undefined4 *)(unaff_ESI + 0x10));
  if (((5 < iVar2 - 0x15U) && (piVar1 = *(int **)(unaff_ESI + 0x14), piVar1 != (int *)0x0)) &&
     (*piVar1 == 4)) {
    return piVar1[1];
  }
  return 0;
}



undefined4 FUN_00aed6b0(undefined4 *param_1)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  int *unaff_EDI;
  undefined4 uVar4;
  
  uVar1 = FUN_00af5f40();
  iVar2 = FUN_00a838c0(uVar1);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x21,0x7d,0x20,".\\crypto\\pkcs7\\pk7_doit.c",0x6f);
    return 0;
  }
  uVar1 = FUN_00a877e0(*param_1);
  uVar1 = FUN_00a87520(uVar1);
  iVar3 = FUN_00a802c0(uVar1);
  if (iVar3 == 0) {
    uVar4 = 0x76;
    uVar1 = 0x6d;
LAB_00aed73c:
    FUN_00a7f3c0(0x21,0x7d,uVar1,".\\crypto\\pkcs7\\pk7_doit.c",uVar4);
    FUN_00a83270(iVar2);
    return 0;
  }
  FUN_00a83650(iVar2,0x6f,0,iVar3);
  if (*unaff_EDI == 0) {
    *unaff_EDI = iVar2;
  }
  else {
    iVar3 = FUN_00a83770(*unaff_EDI,iVar2);
    if (iVar3 == 0) {
      uVar4 = 0x7f;
      uVar1 = 0x20;
      goto LAB_00aed73c;
    }
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aed760(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 local_4;
  
  iVar1 = param_1;
  iVar5 = 0;
  local_4 = 0;
  iVar2 = FUN_00a82c40(*(undefined4 *)(param_1 + 0x10));
  if (iVar2 == 0) {
    return 0;
  }
  iVar3 = FUN_00a98af0(iVar2,0);
  if (iVar3 == 0) {
    return 0;
  }
  iVar4 = FUN_00aecbd0(iVar3);
  if (0 < iVar4) {
    iVar4 = FUN_00a988b0(iVar3,0xffffffff,0x100,3,0,iVar1);
    if (iVar4 < 1) {
      FUN_00a7f3c0(0x21,0x84,0x98,".\\crypto\\pkcs7\\pk7_doit.c",0xa5);
    }
    else {
      iVar4 = FUN_00aecc40(iVar3,0,&param_1,param_2,param_3);
      if (0 < iVar4) {
        iVar5 = FUN_00a84f80(param_1,".\\crypto\\pkcs7\\pk7_doit.c",0xac);
        if (iVar5 == 0) {
          FUN_00a7f3c0(0x21,0x84,0x41,".\\crypto\\pkcs7\\pk7_doit.c",0xb0);
        }
        else {
          iVar4 = FUN_00aecc40(iVar3,iVar5,&param_1,param_2,param_3);
          if (0 < iVar4) {
            FUN_00a90cf0(*(undefined4 *)(iVar1 + 0xc),iVar5,param_1);
            iVar5 = 0;
            local_4 = 1;
          }
        }
      }
    }
  }
  FUN_00a816d0(iVar2);
  FUN_00a98850(iVar3);
  if (iVar5 != 0) {
    FUN_00a85120(iVar5);
  }
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aed8b0(int param_1,int param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  int iVar7;
  int local_74;
  int local_70;
  int local_6c;
  int local_68;
  int local_64;
  undefined4 *local_60;
  undefined4 local_5c;
  int *local_58;
  undefined local_54 [16];
  undefined local_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_74;
  local_64 = param_1;
  local_70 = param_2;
  local_74 = 0;
  local_68 = 0;
  local_6c = 0;
  iVar5 = 0;
  uVar6 = 0;
  local_5c = 0;
  local_60 = (undefined4 *)0x0;
  local_58 = (int *)0x0;
  uVar2 = FUN_00a877e0(*(undefined4 *)(param_1 + 0x10));
  *(undefined4 *)(param_1 + 8) = 0;
  switch(uVar2) {
  case 0x15:
    break;
  case 0x16:
    uVar6 = *(undefined4 *)(*(int *)(param_1 + 0x14) + 4);
    goto LAB_00aed9a1;
  case 0x17:
    local_5c = *(undefined4 *)(*(int *)(param_1 + 0x14) + 4);
    iVar3 = *(int *)(*(int *)(param_1 + 0x14) + 8);
    iVar5 = *(int *)(iVar3 + 0xc);
    local_60 = *(undefined4 **)(iVar3 + 4);
    if (iVar5 == 0) {
      uVar2 = 0x12f;
LAB_00aed94a:
      uVar6 = 0x74;
LAB_00aed951:
      FUN_00a7f3c0(0x21,0x69,uVar6,".\\crypto\\pkcs7\\pk7_doit.c",uVar2);
      ___security_check_cookie_4();
      return;
    }
    break;
  case 0x18:
    iVar3 = *(int *)(param_1 + 0x14);
    local_5c = *(undefined4 *)(iVar3 + 0x18);
    uVar6 = *(undefined4 *)(iVar3 + 4);
    iVar5 = *(int *)(*(int *)(iVar3 + 0x14) + 0xc);
    local_60 = *(undefined4 **)(*(int *)(iVar3 + 0x14) + 4);
    if (iVar5 == 0) {
      uVar2 = 0x124;
      goto LAB_00aed94a;
    }
    break;
  case 0x19:
    local_6c = *(int *)(*(int *)(param_1 + 0x14) + 4);
LAB_00aed9a1:
    local_58 = (int *)FUN_00aed670();
    break;
  default:
    uVar2 = 0x13a;
    uVar6 = 0x70;
    goto LAB_00aed951;
  }
  iVar7 = 0;
  iVar3 = FUN_00a80ed0(uVar6);
  if (0 < iVar3) {
    do {
      uVar2 = FUN_00a80ee0(uVar6,iVar7);
      iVar4 = FUN_00aed6b0(uVar2);
      iVar3 = local_74;
      if (iVar4 == 0) goto LAB_00aeda41;
      iVar7 = iVar7 + 1;
      iVar3 = FUN_00a80ed0(uVar6);
      param_1 = local_64;
    } while (iVar7 < iVar3);
  }
  if ((local_6c != 0) &&
     (iVar7 = FUN_00aed6b0(local_6c), iVar3 = local_74, param_1 = local_64, iVar7 == 0))
  goto LAB_00aeda41;
  iVar3 = local_74;
  if (iVar5 != 0) {
    uVar6 = FUN_00af64f0();
    local_68 = FUN_00a838c0(uVar6);
    if (local_68 == 0) {
      FUN_00a7f3c0(0x21,0x69,0x20,".\\crypto\\pkcs7\\pk7_doit.c",0x14e);
      iVar3 = local_74;
      goto LAB_00aeda41;
    }
    FUN_00a83650(local_68,0x81,0,&local_6c);
    local_64 = FUN_00a989a0(iVar5);
    iVar7 = FUN_00aa3450(iVar5);
    uVar6 = FUN_00a92730(iVar5);
    uVar6 = FUN_00a87490(uVar6);
    puVar1 = local_60;
    *local_60 = uVar6;
    if ((((0 < iVar7) && (iVar4 = FUN_00a86ec0(local_54,iVar7), iVar3 = local_74, iVar4 < 1)) ||
        (iVar5 = FUN_00aabb10(local_6c,iVar5,0,0,0,1), iVar3 = local_74, iVar5 < 1)) ||
       ((iVar5 = FUN_00aab9c0(local_6c,local_44), iVar3 = local_74, iVar5 < 1 ||
        (iVar5 = FUN_00aabb10(local_6c,0,0,local_44,local_54,1), iVar3 = local_74, iVar5 < 1))))
    goto LAB_00aeda41;
    if (0 < iVar7) {
      if (puVar1[1] == 0) {
        iVar5 = FUN_00a889c0();
        puVar1[1] = iVar5;
        iVar3 = local_74;
        if (iVar5 == 0) goto LAB_00aeda41;
      }
      iVar5 = FUN_00a92980(local_6c,puVar1[1]);
      iVar3 = local_74;
      if (iVar5 < 0) goto LAB_00aeda41;
    }
    uVar6 = local_5c;
    iVar7 = 0;
    iVar5 = FUN_00a80ed0(local_5c);
    if (0 < iVar5) {
      do {
        uVar2 = FUN_00a80ee0(uVar6,iVar7);
        iVar5 = FUN_00aed760(uVar2,local_44,local_64);
        iVar3 = local_74;
        if (iVar5 < 1) goto LAB_00aeda41;
        iVar7 = iVar7 + 1;
        iVar5 = FUN_00a80ed0(uVar6);
      } while (iVar7 < iVar5);
    }
    FUN_00a84330(local_44,local_64);
    iVar5 = local_68;
    iVar3 = local_74;
    if (local_74 == 0) {
      local_74 = local_68;
      local_68 = 0;
      iVar3 = iVar5;
    }
    else {
      FUN_00a83770(local_74,local_68);
      local_68 = 0;
    }
  }
  if (local_70 != 0) goto LAB_00aedc78;
  iVar5 = FUN_00a877e0(*(undefined4 *)(param_1 + 0x10));
  if ((iVar5 == 0x16) && (iVar5 = FUN_00ad7ee0(param_1,2,0,0), iVar5 != 0)) {
    uVar6 = FUN_00af62e0();
    local_70 = FUN_00a838c0(uVar6);
LAB_00aedc44:
    if (local_70 != 0) goto LAB_00aedc78;
  }
  else if ((local_58 != (int *)0x0) && (0 < *local_58)) {
    local_70 = FUN_00a82d50(local_58[2],*local_58);
    goto LAB_00aedc44;
  }
  uVar6 = FUN_00a82d40();
  local_70 = FUN_00a838c0(uVar6);
  if (local_70 == 0) {
LAB_00aeda41:
    if (iVar3 != 0) {
      FUN_00a83870(iVar3);
    }
    if (local_68 != 0) {
      FUN_00a83870(local_68);
    }
    ___security_check_cookie_4();
    return;
  }
  FUN_00a83650(local_70,0x82,0,0);
LAB_00aedc78:
  if (iVar3 == 0) {
    ___security_check_cookie_4();
    return;
  }
  FUN_00a83770(iVar3,local_70);
  ___security_check_cookie_4();
  return;
}



int FUN_00aedce0(undefined4 param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int unaff_EBX;
  int *unaff_EDI;
  
  iVar1 = FUN_00a83820(param_1,0x208);
  while( true ) {
    if (iVar1 == 0) {
      FUN_00a7f3c0(0x21,0x7f,0x6c,".\\crypto\\pkcs7\\pk7_doit.c",0x2af);
      return 0;
    }
    FUN_00a83650(iVar1,0x78,0);
    if (*unaff_EDI == 0) break;
    uVar2 = FUN_00a92630(*unaff_EDI);
    iVar3 = FUN_00a814c0(uVar2);
    if (iVar3 == unaff_EBX) {
      return iVar1;
    }
    uVar2 = FUN_00a83860(iVar1);
    iVar1 = FUN_00a83820(uVar2,0x208);
  }
  FUN_00a7f3c0(0x21,0x7f,0x44,".\\crypto\\pkcs7\\pk7_doit.c",0x2b5);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aedd80(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int local_20;
  undefined4 local_1c;
  undefined local_18 [20];
  undefined4 uStack_4;
  
  iVar1 = param_1;
  uStack_4 = 0xaedd8a;
  local_20 = 0;
  uVar2 = FUN_00a877e0(**(undefined4 **)(param_1 + 8));
  uVar2 = FUN_00a87520(uVar2);
  iVar3 = FUN_00a802c0(uVar2);
  if (iVar3 == 0) {
    return 0;
  }
  FUN_00a91330(local_18);
  iVar3 = FUN_00ad8fc0(local_18,&local_1c,iVar3,0,*(undefined4 *)(iVar1 + 0x1c));
  if (0 < iVar3) {
    iVar3 = FUN_00a988b0(local_1c,0xffffffff,8,5,0,iVar1);
    if (iVar3 < 1) {
      uVar2 = 0x398;
LAB_00aedebc:
      FUN_00a7f3c0(0x21,0x8b,0x98,".\\crypto\\pkcs7\\pk7_doit.c",uVar2);
    }
    else {
      uVar2 = FUN_00ad9990();
      uVar2 = FUN_00a8ba30(*(undefined4 *)(iVar1 + 0xc),&local_20,uVar2);
      if (local_20 == 0) goto LAB_00aedee6;
      iVar3 = FUN_00a91530(local_18,local_20,uVar2);
      if (0 < iVar3) {
        FUN_00a85120(local_20);
        iVar3 = FUN_00ad9020(local_18,0,&param_1);
        if (0 < iVar3) {
          local_20 = FUN_00a84f80(param_1,".\\crypto\\pkcs7\\pk7_doit.c",0x3a5);
          if (local_20 == 0) goto LAB_00aedee6;
          iVar3 = FUN_00ad9020(local_18,local_20,&param_1);
          if (0 < iVar3) {
            iVar3 = FUN_00a988b0(local_1c,0xffffffff,8,5,1,iVar1);
            if (0 < iVar3) {
              FUN_00a915c0(local_18);
              FUN_00a90cf0(*(undefined4 *)(iVar1 + 0x14),local_20,param_1);
              return 1;
            }
            uVar2 = 0x3ae;
            goto LAB_00aedebc;
          }
        }
      }
    }
  }
  if (local_20 != 0) {
    FUN_00a85120(local_20);
  }
LAB_00aedee6:
  FUN_00a915c0(local_18);
  return 0;
}



undefined4 FUN_00aedf30(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  int unaff_EBX;
  int iVar5;
  
  iVar1 = FUN_00a87490(param_1);
  if ((iVar1 == 0) || (unaff_EBX == 0)) {
    return 0;
  }
  iVar5 = 0;
  iVar2 = FUN_00a80ed0();
  if (0 < iVar2) {
    do {
      puVar3 = (undefined4 *)FUN_00a80ee0();
      iVar2 = FUN_00a90180(*puVar3,iVar1);
      if (iVar2 == 0) {
        if (puVar3[1] != 0) {
          return 0;
        }
        iVar1 = FUN_00a80ed0(puVar3[2]);
        if (iVar1 == 0) {
          return 0;
        }
        uVar4 = FUN_00a80ee0(puVar3[2],0);
        return uVar4;
      }
      iVar5 = iVar5 + 1;
      iVar2 = FUN_00a80ed0();
    } while (iVar5 < iVar2);
  }
  return 0;
}



undefined4 FUN_00aedfc0(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 *puVar2;
  int iVar3;
  int *unaff_EBX;
  
  if (*unaff_EBX == 0) {
    iVar1 = FUN_00a81010();
    *unaff_EBX = iVar1;
    if (iVar1 == 0) {
      return 0;
    }
  }
  else {
    iVar3 = 0;
    iVar1 = FUN_00a80ed0(*unaff_EBX);
    if (0 < iVar1) {
      do {
        puVar2 = (undefined4 *)FUN_00a80ee0(*unaff_EBX,iVar3);
        iVar1 = FUN_00a877e0(*puVar2);
        if (iVar1 == param_1) {
          FUN_00a8f540(puVar2);
          iVar1 = FUN_00a8f580(param_1,param_2,param_3);
          if (iVar1 == 0) {
            return 0;
          }
          iVar3 = FUN_00a80f00(*unaff_EBX,iVar3,iVar1);
          if (iVar3 != 0) {
            return 1;
          }
          FUN_00a8f540(iVar1);
          return 0;
        }
        iVar3 = iVar3 + 1;
        iVar1 = FUN_00a80ed0(*unaff_EBX);
      } while (iVar3 < iVar1);
    }
  }
  iVar1 = FUN_00a8f580(param_1,param_2,param_3);
  if (iVar1 == 0) {
    return 0;
  }
  iVar3 = FUN_00a80df0(*unaff_EBX,iVar1);
  if (iVar3 != 0) {
    return 1;
  }
  FUN_00a8f540(iVar1);
  return 0;
}



void FUN_00aee0a0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00aedfc0(param_2,param_3,param_4);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aee0d0(void)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined local_48 [68];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_48;
  iVar1 = FUN_00aedf30(0x34);
  if (iVar1 == 0) {
    iVar1 = FUN_00af6b10();
    if (iVar1 != 0) goto LAB_00aee132;
    uVar3 = 0x2ca;
  }
  else {
LAB_00aee132:
    iVar1 = FUN_00a91540();
    if (iVar1 == 0) {
      uVar3 = 0x2d2;
      uVar2 = 6;
      goto LAB_00aee112;
    }
    iVar1 = FUN_00af6b60();
    if (iVar1 != 0) {
      FUN_00aedd80();
      ___security_check_cookie_4();
      return;
    }
    uVar3 = 0x2d7;
  }
  uVar2 = 0x41;
LAB_00aee112:
  FUN_00a7f3c0(0x21,0x88,uVar2,".\\crypto\\pkcs7\\pk7_doit.c",uVar3);
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aee1a0(int param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  int local_78;
  int local_74;
  undefined4 local_70;
  undefined4 local_6c;
  int local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined local_5c [24];
  undefined local_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_78;
  local_6c = param_2;
  local_60 = 0;
  FUN_00a91330(local_5c);
  iVar1 = FUN_00a877e0(*(undefined4 *)(param_1 + 0x10));
  *(undefined4 *)(param_1 + 8) = 0;
  switch(iVar1) {
  case 0x15:
    local_78 = *(int *)(param_1 + 0x14);
    break;
  case 0x16:
    local_68 = *(int *)(*(int *)(param_1 + 0x14) + 0x10);
    local_78 = FUN_00aed670();
    iVar2 = FUN_00a877e0(*(undefined4 *)(*(int *)(*(int *)(param_1 + 0x14) + 0x14) + 0x10));
    if ((iVar2 == 0x15) && (*(int *)(param_1 + 0xc) != 0)) {
      FUN_00a90d80(local_78);
      *(undefined4 *)(*(int *)(*(int *)(param_1 + 0x14) + 0x14) + 0x14) = 0;
    }
    goto LAB_00aee313;
  case 0x17:
    local_78 = *(int *)(*(int *)(*(int *)(param_1 + 0x14) + 8) + 8);
    if (local_78 == 0) {
      local_78 = FUN_00a90d30(4);
      if (local_78 == 0) {
        uVar5 = 0x30e;
        uVar4 = 0x41;
        goto LAB_00aee57b;
      }
      *(int *)(*(int *)(*(int *)(param_1 + 0x14) + 8) + 8) = local_78;
    }
    break;
  case 0x18:
    local_68 = *(int *)(*(int *)(param_1 + 0x14) + 0x10);
    local_78 = *(int *)(*(int *)(*(int *)(param_1 + 0x14) + 0x14) + 8);
    if (local_78 == 0) {
      local_78 = FUN_00a90d30(4);
      if (local_78 == 0) {
        uVar5 = 0x300;
        uVar4 = 0x41;
        goto LAB_00aee57b;
      }
      *(int *)(*(int *)(*(int *)(param_1 + 0x14) + 0x14) + 8) = local_78;
    }
LAB_00aee313:
    iVar2 = local_68;
    if (local_68 == 0) break;
    iVar3 = 0;
    local_74 = 0;
    iVar1 = FUN_00a80ed0(local_68);
    if (0 < iVar1) {
      do {
        iVar1 = FUN_00a80ee0(iVar2,iVar3);
        if (*(int *)(iVar1 + 0x1c) != 0) {
          FUN_00a877e0(**(undefined4 **)(iVar1 + 8));
          iVar2 = FUN_00aedce0(local_6c);
          if ((iVar2 == 0) || (iVar2 = FUN_00a916d0(local_5c,local_70), iVar2 == 0))
          goto LAB_00aee58a;
          iVar2 = FUN_00a80ed0(*(undefined4 *)(iVar1 + 0xc));
          if (iVar2 < 1) {
            local_64 = FUN_00a81360(*(undefined4 *)(iVar1 + 0x1c));
            iVar2 = FUN_00a84f80(local_64,".\\crypto\\pkcs7\\pk7_doit.c",0x351);
            if (iVar2 == 0) goto LAB_00aee58a;
            iVar3 = FUN_00aec430(local_5c,iVar2,&local_64,*(undefined4 *)(iVar1 + 0x1c));
            if (iVar3 == 0) {
              uVar5 = 0x359;
              uVar4 = 6;
              goto LAB_00aee57b;
            }
            FUN_00a90cf0(*(undefined4 *)(iVar1 + 0x14),iVar2,local_64);
          }
          else {
            iVar1 = FUN_00aee0d0();
            if (iVar1 == 0) goto LAB_00aee58a;
          }
        }
        iVar2 = local_68;
        iVar3 = local_74 + 1;
        local_74 = iVar3;
        iVar1 = FUN_00a80ed0(local_68);
      } while (iVar3 < iVar1);
    }
    goto LAB_00aee26c;
  case 0x19:
    local_78 = FUN_00aed670();
    iVar2 = FUN_00a877e0(*(undefined4 *)(*(int *)(*(int *)(param_1 + 0x14) + 8) + 0x10));
    if ((iVar2 == 0x15) && (*(int *)(param_1 + 0xc) != 0)) {
      FUN_00a90d80(local_78);
      *(undefined4 *)(*(int *)(*(int *)(param_1 + 0x14) + 8) + 0x14) = 0;
    }
    break;
  default:
    uVar5 = 0x329;
    uVar4 = 0x70;
    goto LAB_00aee57b;
  }
  if (iVar1 == 0x19) {
    FUN_00a877e0(**(undefined4 **)(*(int *)(param_1 + 0x14) + 4));
    iVar1 = FUN_00aedce0(local_6c);
    if ((iVar1 == 0) || (iVar1 = FUN_00a91540(local_70,local_44,&local_74), iVar1 == 0))
    goto LAB_00aee58a;
    FUN_00a90c30(*(undefined4 *)(*(int *)(param_1 + 0x14) + 0xc),local_44,local_74);
  }
LAB_00aee26c:
  iVar1 = FUN_00a877e0(*(undefined4 *)(param_1 + 0x10));
  if (((iVar1 != 0x16) || (iVar1 = FUN_00ad7ee0(param_1,2,0,0), iVar1 == 0)) &&
     ((*(byte *)(local_78 + 0xc) & 0x10) == 0)) {
    iVar1 = FUN_00a83820(local_6c,0x401);
    if (iVar1 == 0) {
      uVar5 = 0x373;
      uVar4 = 0x6b;
LAB_00aee57b:
      FUN_00a7f3c0(0x21,0x80,uVar4,".\\crypto\\pkcs7\\pk7_doit.c",uVar5);
      goto LAB_00aee58a;
    }
    uVar4 = FUN_00a83650(iVar1,3,0,&local_74);
    FUN_00a83310(iVar1,0x200);
    FUN_00a83650(iVar1,0x82,0,0);
    FUN_00a90cf0(local_78,local_74,uVar4);
  }
  local_60 = 1;
LAB_00aee58a:
  FUN_00a915c0(local_5c);
  ___security_check_cookie_4();
  return;
}



undefined ** FUN_00aee5d0(void)

{
  return &PTR_s_OpenSSL_default_user_interface_03243544;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aee630(void)

{
  char *pcVar1;
  FILE *unaff_ESI;
  char local_c [8];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_c;
  do {
    pcVar1 = _fgets(local_c,4,unaff_ESI);
    if (pcVar1 == (char *)0x0) {
      ___security_check_cookie_4();
      return;
    }
    pcVar1 = _strchr(local_c,10);
  } while (pcVar1 == (char *)0x0);
  ___security_check_cookie_4();
  return;
}



void FUN_00aee750(void)

{
  _signal(0x16);
  _signal(8);
  _signal(4);
  _signal(2);
  _signal(0xb);
  _signal(0xf);
  return;
}



int __fastcall FUN_00aee7c0(int param_1)

{
  char cVar1;
  int iVar2;
  HANDLE hConsoleInput;
  char *unaff_EBX;
  char *pcVar3;
  
  pcVar3 = unaff_EBX;
  if (param_1 != 0) {
    do {
      param_1 = param_1 + -1;
      iVar2 = __getch();
      if (iVar2 == 0xd) {
        iVar2 = 10;
      }
      *pcVar3 = (char)iVar2;
      pcVar3 = pcVar3 + 1;
    } while ((iVar2 != 10) && (param_1 != 0));
  }
  *pcVar3 = '\0';
  hConsoleInput = GetStdHandle(0xfffffff6);
  FlushConsoleInputBuffer(hConsoleInput);
  pcVar3 = unaff_EBX + 1;
  do {
    cVar1 = *unaff_EBX;
    unaff_EBX = unaff_EBX + 1;
  } while (cVar1 != '\0');
  return (int)unaff_EBX - (int)pcVar3;
}



void FUN_00aee810(void)

{
  undefined4 in_EAX;
  
  _signal(0x16);
  DAT_032edbc8 = in_EAX;
  _signal(8);
  DAT_032edb90 = in_EAX;
  _signal(4);
  DAT_032edb80 = in_EAX;
  _signal(2);
  DAT_032edb78 = in_EAX;
  _signal(0xb);
  DAT_032edb9c = in_EAX;
  _signal(0xf);
  DAT_032edbac = in_EAX;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00aee880(undefined4 param_1,int param_2,int param_3)

{
  int iVar1;
  char *pcVar2;
  undefined4 local_208;
  char local_204 [512];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_208;
  DAT_032edb68 = 0;
  local_208 = 0;
  DAT_032edb5c = 0;
  FUN_00aee810();
  DAT_032edb5c = 2;
  local_204[0] = '\0';
  if (param_2 == 0) {
    FUN_00aee7c0();
  }
  else {
    pcVar2 = _fgets(local_204,0x1ff,DAT_032edb64);
    if (pcVar2 == (char *)0x0) goto LAB_00aee96e;
  }
  iVar1 = _feof(DAT_032edb64);
  if (iVar1 == 0) {
    iVar1 = _ferror(DAT_032edb64);
    if (iVar1 == 0) {
      pcVar2 = _strchr(local_204,10);
      if (pcVar2 == (char *)0x0) {
        iVar1 = FUN_00aee630();
        if (iVar1 == 0) goto LAB_00aee96e;
      }
      else if (param_3 != 0) {
        *pcVar2 = '\0';
      }
      iVar1 = FUN_00addf80();
      if (-1 < iVar1) {
        local_208 = 1;
      }
    }
  }
LAB_00aee96e:
  if (DAT_032edb68 == 2) {
    local_208 = 0xffffffff;
  }
  if (param_2 == 0) {
    _fprintf(DAT_032edb60,"\n");
  }
  if (0 < DAT_032edb5c) {
    FUN_00aee750();
  }
  FUN_00a84330(local_204,0x200);
  ___security_check_cookie_4();
  return;
}



void FUN_00aeeb40(ulonglong *param_1,ulonglong *param_2,int param_3)

{
  ulonglong uVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  ulonglong uVar9;
  ulonglong uVar10;
  ulonglong uVar11;
  ulonglong uVar12;
  ulonglong uVar13;
  ulonglong uVar14;
  ulonglong uVar15;
  ulonglong uVar16;
  ulonglong uVar17;
  ulonglong uVar18;
  ulonglong uVar19;
  ulonglong uVar20;
  ulonglong uVar21;
  ulonglong uVar22;
  ulonglong uVar23;
  ulonglong local_c0;
  ulonglong local_b8;
  ulonglong local_b0;
  ulonglong local_a8;
  ulonglong local_a0;
  ulonglong local_98;
  ulonglong local_90;
  ulonglong local_88;
  ulonglong local_80;
  ulonglong local_78;
  ulonglong local_70;
  ulonglong local_68;
  ulonglong local_60;
  ulonglong local_58;
  ulonglong local_50;
  ulonglong local_48;
  ulonglong *local_3c;
  int local_38;
  int local_34;
  
  local_3c = param_2;
  local_38 = param_3;
  local_c0 = *param_1;
  local_b8 = param_1[1];
  local_b0 = param_1[2];
  local_a8 = param_1[3];
  local_a0 = param_1[4];
  local_98 = param_1[5];
  local_90 = param_1[6];
  local_88 = param_1[7];
  do {
    local_80 = local_c0 ^ *local_3c;
    local_78 = local_b8 ^ local_3c[1];
    local_70 = local_b0 ^ local_3c[2];
    local_68 = local_a8 ^ local_3c[3];
    local_60 = local_a0 ^ local_3c[4];
    local_58 = local_98 ^ local_3c[5];
    local_50 = local_90 ^ local_3c[6];
    local_34 = 0;
    local_48 = local_88 ^ local_3c[7];
    do {
      uVar1 = local_c0 >> 8;
      uVar2 = local_c0 >> 0x10;
      uVar3 = local_c0 >> 0x18;
      uVar4 = local_c0 >> 0x20;
      uVar5 = local_c0 >> 0x28;
      uVar6 = local_c0 >> 0x30;
      uVar7 = local_b8 >> 8;
      uVar8 = local_b8 >> 0x10;
      uVar9 = local_b8 >> 0x18;
      uVar10 = local_b8 >> 0x20;
      uVar11 = local_b8 >> 0x28;
      uVar12 = local_b0 >> 8;
      uVar13 = local_b0 >> 0x10;
      uVar14 = local_b0 >> 0x18;
      uVar15 = local_b0 >> 0x20;
      uVar16 = local_a8 >> 8;
      uVar17 = local_a8 >> 0x10;
      uVar18 = local_a8 >> 0x18;
      uVar19 = local_a0 >> 8;
      uVar20 = local_a0 >> 0x10;
      uVar21 = local_98 >> 8;
      uVar22 = *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_c0 >> 0x38) * 0x10) ^
               *(ulonglong *)(&DAT_00aef302 + (uint)(byte)(local_b8 >> 0x30) * 0x10) ^
               *(ulonglong *)(&DAT_00aef303 + (uint)(byte)(local_b0 >> 0x28) * 0x10) ^
               *(ulonglong *)(&DAT_00aef304 + (uint)(byte)(local_a8 >> 0x20) * 0x10) ^
               *(ulonglong *)(&DAT_00aef305 + (uint)(byte)(local_a0 >> 0x18) * 0x10) ^
               *(ulonglong *)(&DAT_00aef306 + (uint)(byte)(local_98 >> 0x10) * 0x10) ^
               *(ulonglong *)(&DAT_00aef307 + (uint)(byte)(local_90 >> 8) * 0x10) ^
               *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_88 * 0x10);
      local_c0 = (&DAT_00af0300)[local_34] ^
                 *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_c0 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_b8 >> 0x38) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef302 + (uint)(byte)(local_b0 >> 0x30) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef303 + (uint)(byte)(local_a8 >> 0x28) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef304 + (uint)(byte)(local_a0 >> 0x20) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef305 + (uint)(byte)(local_98 >> 0x18) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef306 + (uint)(byte)(local_90 >> 0x10) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef307 + (uint)(byte)(local_88 >> 8) * 0x10);
      local_b8 = *(ulonglong *)(&DAT_00aef307 + (uint)(byte)uVar1 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_b8 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_b0 >> 0x38) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef302 + (uint)(byte)(local_a8 >> 0x30) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef303 + (uint)(byte)(local_a0 >> 0x28) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef304 + (uint)(byte)(local_98 >> 0x20) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef305 + (uint)(byte)(local_90 >> 0x18) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef306 + (uint)(byte)(local_88 >> 0x10) * 0x10);
      local_b0 = *(ulonglong *)(&DAT_00aef306 + (uint)(byte)uVar2 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef307 + (uint)(byte)uVar7 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_b0 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_a8 >> 0x38) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef302 + (uint)(byte)(local_a0 >> 0x30) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef303 + (uint)(byte)(local_98 >> 0x28) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef304 + (uint)(byte)(local_90 >> 0x20) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef305 + (uint)(byte)(local_88 >> 0x18) * 0x10);
      local_a8 = *(ulonglong *)(&DAT_00aef305 + (uint)(byte)uVar3 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef306 + (uint)(byte)uVar8 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef307 + (uint)(byte)uVar12 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_a8 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_a0 >> 0x38) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef302 + (uint)(byte)(local_98 >> 0x30) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef303 + (uint)(byte)(local_90 >> 0x28) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef304 + (uint)(byte)(local_88 >> 0x20) * 0x10);
      local_a0 = *(ulonglong *)(&DAT_00aef304 + (uint)(byte)uVar4 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef305 + (uint)(byte)uVar9 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef306 + (uint)(byte)uVar13 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef307 + (uint)(byte)uVar16 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_a0 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_98 >> 0x38) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef302 + (uint)(byte)(local_90 >> 0x30) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef303 + (uint)(byte)(local_88 >> 0x28) * 0x10);
      local_98 = *(ulonglong *)(&DAT_00aef303 + (uint)(byte)uVar5 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef304 + (uint)(byte)uVar10 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef305 + (uint)(byte)uVar14 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef306 + (uint)(byte)uVar17 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef307 + (uint)(byte)uVar19 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_98 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_90 >> 0x38) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef302 + (uint)(byte)(local_88 >> 0x30) * 0x10);
      local_90 = *(ulonglong *)(&DAT_00aef302 + (uint)(byte)uVar6 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef303 + (uint)(byte)uVar11 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef304 + (uint)(byte)uVar15 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef305 + (uint)(byte)uVar18 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef306 + (uint)(byte)uVar20 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef307 + (uint)(byte)uVar21 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_90 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_88 >> 0x38) * 0x10);
      uVar1 = local_80 >> 8;
      uVar2 = local_80 >> 0x10;
      uVar3 = local_80 >> 0x18;
      uVar4 = local_80 >> 0x20;
      uVar5 = local_80 >> 0x28;
      uVar6 = local_80 >> 0x30;
      uVar7 = local_78 >> 8;
      uVar8 = local_78 >> 0x10;
      uVar9 = local_78 >> 0x18;
      uVar10 = local_78 >> 0x20;
      uVar11 = local_78 >> 0x28;
      uVar12 = local_70 >> 8;
      uVar13 = local_70 >> 0x10;
      uVar14 = local_70 >> 0x18;
      uVar15 = local_70 >> 0x20;
      uVar16 = local_68 >> 8;
      uVar17 = local_68 >> 0x10;
      uVar18 = local_68 >> 0x18;
      uVar19 = local_60 >> 8;
      uVar20 = local_60 >> 0x10;
      uVar21 = local_58 >> 8;
      uVar23 = uVar22 ^ *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_80 >> 0x38) * 0x10) ^
               *(ulonglong *)(&DAT_00aef302 + (uint)(byte)(local_78 >> 0x30) * 0x10) ^
               *(ulonglong *)(&DAT_00aef303 + (uint)(byte)(local_70 >> 0x28) * 0x10) ^
               *(ulonglong *)(&DAT_00aef304 + (uint)(byte)(local_68 >> 0x20) * 0x10) ^
               *(ulonglong *)(&DAT_00aef305 + (uint)(byte)(local_60 >> 0x18) * 0x10) ^
               *(ulonglong *)(&DAT_00aef306 + (uint)(byte)(local_58 >> 0x10) * 0x10) ^
               *(ulonglong *)(&DAT_00aef307 + (uint)(byte)(local_50 >> 8) * 0x10) ^
               *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_48 * 0x10);
      local_80 = local_c0 ^ *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_80 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_78 >> 0x38) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef302 + (uint)(byte)(local_70 >> 0x30) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef303 + (uint)(byte)(local_68 >> 0x28) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef304 + (uint)(byte)(local_60 >> 0x20) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef305 + (uint)(byte)(local_58 >> 0x18) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef306 + (uint)(byte)(local_50 >> 0x10) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef307 + (uint)(byte)(local_48 >> 8) * 0x10);
      local_78 = local_b8 ^ *(ulonglong *)(&DAT_00aef307 + (uint)(byte)uVar1 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_78 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_70 >> 0x38) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef302 + (uint)(byte)(local_68 >> 0x30) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef303 + (uint)(byte)(local_60 >> 0x28) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef304 + (uint)(byte)(local_58 >> 0x20) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef305 + (uint)(byte)(local_50 >> 0x18) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef306 + (uint)(byte)(local_48 >> 0x10) * 0x10);
      local_70 = local_b0 ^ *(ulonglong *)(&DAT_00aef306 + (uint)(byte)uVar2 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef307 + (uint)(byte)uVar7 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_70 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_68 >> 0x38) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef302 + (uint)(byte)(local_60 >> 0x30) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef303 + (uint)(byte)(local_58 >> 0x28) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef304 + (uint)(byte)(local_50 >> 0x20) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef305 + (uint)(byte)(local_48 >> 0x18) * 0x10);
      local_68 = local_a8 ^ *(ulonglong *)(&DAT_00aef305 + (uint)(byte)uVar3 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef306 + (uint)(byte)uVar8 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef307 + (uint)(byte)uVar12 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_68 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_60 >> 0x38) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef302 + (uint)(byte)(local_58 >> 0x30) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef303 + (uint)(byte)(local_50 >> 0x28) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef304 + (uint)(byte)(local_48 >> 0x20) * 0x10);
      local_60 = local_a0 ^ *(ulonglong *)(&DAT_00aef304 + (uint)(byte)uVar4 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef305 + (uint)(byte)uVar9 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef306 + (uint)(byte)uVar13 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef307 + (uint)(byte)uVar16 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_60 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_58 >> 0x38) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef302 + (uint)(byte)(local_50 >> 0x30) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef303 + (uint)(byte)(local_48 >> 0x28) * 0x10);
      local_58 = local_98 ^ *(ulonglong *)(&DAT_00aef303 + (uint)(byte)uVar5 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef304 + (uint)(byte)uVar10 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef305 + (uint)(byte)uVar14 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef306 + (uint)(byte)uVar17 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef307 + (uint)(byte)uVar19 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_58 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_50 >> 0x38) * 0x10) ^
                 *(ulonglong *)(&DAT_00aef302 + (uint)(byte)(local_48 >> 0x30) * 0x10);
      local_50 = local_90 ^ *(ulonglong *)(&DAT_00aef302 + (uint)(byte)uVar6 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef303 + (uint)(byte)uVar11 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef304 + (uint)(byte)uVar15 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef305 + (uint)(byte)uVar18 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef306 + (uint)(byte)uVar20 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef307 + (uint)(byte)uVar21 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef300 + (uint)(byte)local_50 * 0x10) ^
                 *(ulonglong *)(&DAT_00aef301 + (uint)(byte)(local_48 >> 0x38) * 0x10);
      local_34 = local_34 + 1;
      local_88 = uVar22;
      local_48 = uVar23;
    } while (local_34 != 10);
    local_c0 = local_80 ^ *local_3c ^ *param_1;
    local_b8 = local_78 ^ local_3c[1] ^ param_1[1];
    local_b0 = local_70 ^ local_3c[2] ^ param_1[2];
    local_a8 = local_68 ^ local_3c[3] ^ param_1[3];
    local_a0 = local_60 ^ local_3c[4] ^ param_1[4];
    local_98 = local_58 ^ local_3c[5] ^ param_1[5];
    local_90 = local_50 ^ local_3c[6] ^ param_1[6];
    local_88 = uVar23 ^ local_3c[7] ^ param_1[7];
    *param_1 = local_c0;
    param_1[1] = local_b8;
    param_1[2] = local_b0;
    param_1[3] = local_a8;
    param_1[4] = local_a0;
    param_1[5] = local_98;
    param_1[6] = local_90;
    param_1[7] = local_88;
    local_3c = local_3c + 8;
    local_38 = local_38 + -1;
  } while (local_38 != 0);
  return;
}



undefined4 * FUN_00af0350(void)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  int unaff_EDI;
  
  puVar1 = (undefined4 *)FUN_00a84f80(0x18,".\\crypto\\ecdh\\ech_lib.c",0x8e);
  iVar2 = DAT_032edbf0;
  if (puVar1 == (undefined4 *)0x0) {
    FUN_00a7f3c0(0x2b,0x65,0x41,".\\crypto\\ecdh\\ech_lib.c",0x91);
    return (undefined4 *)0x0;
  }
  *puVar1 = 0;
  if (iVar2 == 0) {
    iVar2 = FUN_00af6bb0();
    DAT_032edbf0 = iVar2;
  }
  puVar1[3] = iVar2;
  puVar1[1] = unaff_EDI;
  if (unaff_EDI == 0) {
    uVar3 = FUN_00af6e80();
    puVar1[1] = uVar3;
  }
  if (puVar1[1] != 0) {
    iVar2 = FUN_00aeab70(puVar1[1]);
    puVar1[3] = iVar2;
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x2b,0x65,0x26,".\\crypto\\ecdh\\ech_lib.c",0xa1);
      FUN_00a8f1b0(puVar1[1]);
      FUN_00a85120(puVar1);
      return (undefined4 *)0x0;
    }
  }
  puVar1[2] = *(undefined4 *)(puVar1[3] + 8);
  FUN_00a80700(0xd,puVar1,puVar1 + 4);
  return puVar1;
}



void FUN_00af0430(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    FUN_00a8f1b0(*(int *)(param_1 + 4));
  }
  FUN_00a80760(0xd,param_1,param_1 + 0x10);
  FUN_00a84330(param_1,0x18);
  FUN_00a85120(param_1);
  return;
}



int FUN_00af0470(undefined4 param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_00a8ed20(param_1,&LAB_00af0410,FUN_00af0430,FUN_00af0430);
  if (iVar1 == 0) {
    iVar1 = FUN_00af0350();
    if (iVar1 == 0) {
      return 0;
    }
    iVar2 = FUN_00a8ed70(param_1,iVar1,&LAB_00af0410,FUN_00af0430,FUN_00af0430);
    if (iVar2 != 0) {
      FUN_00af0430(iVar1);
      return iVar2;
    }
  }
  return iVar1;
}



void FUN_00af0590(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a8ae20(param_1,param_2,param_3,&DAT_00dca578);
  return;
}



void FUN_00af05b0(undefined4 param_1,undefined4 param_2)

{
  FUN_00a8ba30(param_1,param_2,&DAT_00dca578);
  return;
}



void FUN_00af05d0(undefined4 param_1)

{
  FUN_00a8c2c0(param_1,&DAT_00dca578);
  return;
}



undefined4 FUN_00af0730(int param_1)

{
  FUN_00a9a9f0(param_1 + 0x48);
  FUN_00a9a9f0(param_1 + 0x74);
  FUN_00a9a9f0(param_1 + 0x88);
  *(undefined4 *)(param_1 + 0x9c) = 0;
  return 1;
}



void FUN_00af0770(int param_1)

{
  FUN_00a9a950(param_1 + 0x48);
  FUN_00a9a950(param_1 + 0x74);
  FUN_00a9a950(param_1 + 0x88);
  return;
}



undefined4 FUN_00af07a0(int param_1,int param_2)

{
  int iVar1;
  
  iVar1 = FUN_00a9aba0(param_1 + 0x48,param_2 + 0x48);
  if (iVar1 != 0) {
    iVar1 = FUN_00a9aba0(param_1 + 0x74,param_2 + 0x74);
    if (iVar1 != 0) {
      iVar1 = FUN_00a9aba0(param_1 + 0x88,param_2 + 0x88);
      if (iVar1 != 0) {
        *(undefined4 *)(param_1 + 0x9c) = *(undefined4 *)(param_2 + 0x9c);
        return 1;
      }
    }
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00af0810(int *param_1,byte **param_2,undefined4 param_3,undefined4 param_4,int param_5)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int local_8;
  undefined4 local_4;
  
  local_4 = 0;
  local_8 = 0;
  iVar2 = FUN_00a9a920(param_2);
  if (((iVar2 < 3) || ((int)param_2[1] < 1)) || ((**param_2 & 1) == 0)) {
    FUN_00a7f3c0(0x10,0xa6,0x67,".\\crypto\\ec\\ecp_smpl.c",0xb9);
    return 0;
  }
  if (param_5 == 0) {
    param_5 = FUN_00aa49c0();
    local_8 = param_5;
    if (param_5 == 0) {
      return 0;
    }
  }
  FUN_00aa4a50(param_5);
  iVar2 = FUN_00aa4ae0(param_5);
  if (iVar2 != 0) {
    iVar3 = FUN_00a9aba0(param_1 + 0x12,param_2);
    if (iVar3 != 0) {
      FUN_00a9b040(param_1 + 0x12,0);
      iVar3 = FUN_00ad2c10(iVar2,param_3,param_2,param_5);
      if (iVar3 != 0) {
        if (*(code **)(*param_1 + 0x90) == (code *)0x0) {
          iVar3 = FUN_00a9aba0(param_1 + 0x1d,iVar2);
        }
        else {
          iVar3 = (**(code **)(*param_1 + 0x90))(param_1,param_1 + 0x1d,iVar2,param_5);
        }
        if (iVar3 != 0) {
          piVar1 = param_1 + 0x22;
          iVar3 = FUN_00ad2c10(piVar1,param_4,param_2,param_5);
          if (iVar3 != 0) {
            if (*(code **)(*param_1 + 0x90) != (code *)0x0) {
              iVar3 = (**(code **)(*param_1 + 0x90))(param_1,piVar1,piVar1,param_5);
              if (iVar3 == 0) goto LAB_00af095d;
            }
            iVar3 = FUN_00a9b7f0(iVar2,3);
            if (iVar3 != 0) {
              iVar2 = FUN_00a9ae60(iVar2,param_1 + 0x12);
              param_1[0x27] = (uint)(iVar2 == 0);
              local_4 = 1;
            }
          }
        }
      }
    }
  }
LAB_00af095d:
  FUN_00aa4aa0(param_5);
  if (local_8 != 0) {
    FUN_00aa4a20(local_8);
  }
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af09b0(int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  int local_8;
  undefined4 local_4;
  
  local_4 = 0;
  local_8 = 0;
  if ((param_2 != 0) && (iVar1 = FUN_00a9aba0(param_2,param_1 + 0x12), iVar1 == 0)) {
    return 0;
  }
  if ((param_3 != 0) || (param_4 != 0)) {
    if (*(int *)(*param_1 + 0x94) == 0) {
      if ((param_3 != 0) && (iVar1 = FUN_00a9aba0(param_3,param_1 + 0x1d), iVar1 == 0)) {
        return 0;
      }
      if ((param_4 != 0) && (iVar1 = FUN_00a9aba0(param_4,param_1 + 0x22), iVar1 == 0)) {
        return 0;
      }
    }
    else {
      if ((param_5 == 0) && (param_5 = FUN_00aa49c0(), local_8 = param_5, param_5 == 0)) {
        return 0;
      }
      if (((param_3 != 0) &&
          (iVar1 = (**(code **)(*param_1 + 0x94))(param_1,param_3,param_1 + 0x1d,param_5),
          iVar1 == 0)) ||
         ((param_4 != 0 &&
          (iVar1 = (**(code **)(*param_1 + 0x94))(param_1,param_4,param_1 + 0x22,param_5),
          iVar1 == 0)))) goto LAB_00af0a9a;
    }
  }
  local_4 = 1;
LAB_00af0a9a:
  if (local_8 != 0) {
    FUN_00aa4a20(local_8);
  }
  return local_4;
}



undefined4 FUN_00af0cb0(int param_1)

{
  FUN_00a9a9f0(param_1 + 4);
  FUN_00a9a9f0(param_1 + 0x18);
  FUN_00a9a9f0(param_1 + 0x2c);
  *(undefined4 *)(param_1 + 0x40) = 0;
  return 1;
}



void FUN_00af0cf0(int param_1)

{
  FUN_00a9a9b0(param_1 + 4);
  FUN_00a9a9b0(param_1 + 0x18);
  FUN_00a9a9b0(param_1 + 0x2c);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af1010(int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  int **ppiVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  int iVar5;
  int local_8;
  undefined4 local_4;
  
  local_8 = 0;
  local_4 = 0;
  iVar1 = FUN_00aa3f40(param_1,param_2);
  if (iVar1 != 0) {
    FUN_00a7f3c0(0x10,0xa7,0x6a,".\\crypto\\ec\\ecp_smpl.c",0x21a);
    return 0;
  }
  if ((param_5 == 0) && (param_5 = FUN_00aa49c0(), local_8 = param_5, param_5 == 0)) {
    return 0;
  }
  FUN_00aa4a50(param_5);
  ppiVar2 = (int **)FUN_00aa4ae0(param_5);
  uVar3 = FUN_00aa4ae0(param_5);
  uVar4 = FUN_00aa4ae0(param_5);
  iVar1 = FUN_00aa4ae0(param_5);
  if (iVar1 == 0) goto LAB_00af128a;
  if (*(code **)(*param_1 + 0x94) == (code *)0x0) {
    ppiVar2 = (int **)(param_2 + 0x2c);
  }
  else {
    iVar5 = (**(code **)(*param_1 + 0x94))(param_1,ppiVar2,param_2 + 0x2c,param_5);
    if (iVar5 == 0) goto LAB_00af128a;
  }
  if (((ppiVar2[1] == (int *)0x1) && (**ppiVar2 == 1)) && (ppiVar2[3] == (int *)0x0)) {
    if (*(code **)(*param_1 + 0x94) == (code *)0x0) {
      if ((param_3 != 0) && (iVar1 = FUN_00a9aba0(param_3,param_2 + 4), iVar1 == 0))
      goto LAB_00af128a;
      if (param_4 != 0) {
        iVar1 = FUN_00a9aba0(param_4,param_2 + 0x18);
        goto LAB_00af127e;
      }
    }
    else {
      if ((param_3 != 0) &&
         (iVar1 = (**(code **)(*param_1 + 0x94))(param_1,param_3,param_2 + 4,param_5), iVar1 == 0))
      goto LAB_00af128a;
      if (param_4 != 0) {
        iVar1 = (**(code **)(*param_1 + 0x94))(param_1,param_4,param_2 + 0x18,param_5);
LAB_00af127e:
        if (iVar1 == 0) goto LAB_00af128a;
      }
    }
  }
  else {
    iVar5 = FUN_00ad3370(uVar3,ppiVar2,param_1 + 0x12,param_5);
    if (iVar5 == 0) {
      FUN_00a7f3c0(0x10,0xa7,3,".\\crypto\\ec\\ecp_smpl.c",0x255);
      goto LAB_00af128a;
    }
    if (*(int *)(*param_1 + 0x90) == 0) {
      iVar5 = (**(code **)(*param_1 + 0x88))(param_1,uVar4,uVar3);
    }
    else {
      iVar5 = FUN_00ad2df0(uVar4,uVar3,param_1 + 0x12,param_5);
    }
    if ((iVar5 == 0) ||
       ((param_3 != 0 &&
        (iVar5 = (**(code **)(*param_1 + 0x84))(param_1,param_3,param_2 + 4,uVar4,param_5),
        iVar5 == 0)))) goto LAB_00af128a;
    if (param_4 != 0) {
      if (*(int *)(*param_1 + 0x90) == 0) {
        iVar5 = (**(code **)(*param_1 + 0x84))(param_1,iVar1,uVar4,uVar3);
      }
      else {
        iVar5 = FUN_00ad2d70(iVar1,uVar4,uVar3,param_1 + 0x12,param_5);
      }
      if (iVar5 == 0) goto LAB_00af128a;
      iVar1 = (**(code **)(*param_1 + 0x84))(param_1,param_4,param_2 + 0x18,iVar1,param_5);
      goto LAB_00af127e;
    }
  }
  local_4 = 1;
LAB_00af128a:
  FUN_00aa4aa0(param_5);
  if (local_8 != 0) {
    FUN_00aa4a20(local_8);
  }
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af1800(int *param_1,int param_2,int param_3,int param_4)

{
  int *piVar1;
  code *pcVar2;
  code *pcVar3;
  int iVar4;
  int *piVar5;
  int *piVar6;
  undefined4 uVar7;
  int iVar8;
  int *piVar9;
  int *piVar10;
  int local_10;
  int iStack_c;
  int local_8;
  undefined4 local_4;
  
  local_8 = 0;
  local_4 = 0;
  iVar4 = FUN_00aa3f40(param_1,param_3);
  if (iVar4 != 0) {
    FUN_00a9ac50(param_2 + 0x2c,0);
    *(undefined4 *)(param_2 + 0x40) = 0;
    return 1;
  }
  pcVar2 = *(code **)(*param_1 + 0x84);
  pcVar3 = *(code **)(*param_1 + 0x88);
  piVar1 = param_1 + 0x12;
  if ((param_4 == 0) && (param_4 = FUN_00aa49c0(), local_8 = param_4, param_4 == 0)) {
    return 0;
  }
  FUN_00aa4a50(param_4);
  piVar5 = (int *)FUN_00aa4ae0(param_4);
  piVar6 = (int *)FUN_00aa4ae0(param_4);
  uVar7 = FUN_00aa4ae0(param_4);
  iVar4 = FUN_00aa4ae0(param_4);
  if (iVar4 != 0) {
    piVar9 = piVar5;
    if (*(int *)(param_3 + 0x40) == 0) {
      if (param_1[0x27] == 0) {
        iVar8 = (*pcVar3)(param_1,piVar5,param_3 + 4,param_4);
        if ((((iVar8 != 0) && (iVar8 = FUN_00ad2e30(piVar6,piVar5,piVar1), iVar8 != 0)) &&
            (iVar8 = FUN_00ad2ca0(piVar5,piVar5,piVar6,piVar1), iVar8 != 0)) &&
           ((iVar8 = (*pcVar3)(param_1,piVar6,param_3 + 0x2c,param_4), iVar8 != 0 &&
            (iVar8 = (*pcVar3)(param_1,piVar6,piVar6,param_4), iVar8 != 0)))) {
          iVar8 = (*pcVar2)(param_1,piVar6,piVar6,param_1 + 0x1d,param_4);
          piVar10 = piVar5;
          piVar9 = piVar6;
joined_r0x00af1a46:
          if (iVar8 != 0) goto LAB_00af1a53;
        }
      }
      else {
        iVar8 = (*pcVar3)(param_1,piVar6,param_3 + 0x2c);
        if (iVar8 != 0) {
          iVar8 = FUN_00ad2ca0(piVar5,param_3 + 4,piVar6,piVar1);
          if (((iVar8 != 0) && (iVar8 = FUN_00ad2d30(uVar7,param_3 + 4,piVar6,piVar1), iVar8 != 0))
             && (iVar8 = (*pcVar2)(param_1,piVar6,piVar5,uVar7,param_4), iVar8 != 0)) {
            iVar8 = FUN_00ad2e30(piVar5,piVar6,piVar1);
            piVar10 = piVar6;
            goto joined_r0x00af1a46;
          }
        }
      }
    }
    else {
      iVar8 = (*pcVar3)(param_1,piVar5,param_3 + 4);
      if (((iVar8 != 0) && (iVar8 = FUN_00ad2e30(piVar6,piVar5,piVar1), iVar8 != 0)) &&
         (iVar8 = FUN_00ad2ca0(piVar5,piVar5,piVar6,piVar1), iVar8 != 0)) {
        piVar10 = param_1 + 0x1d;
LAB_00af1a53:
        local_10 = param_3 + 4;
        iVar8 = FUN_00ad2ca0(piVar6,piVar9,piVar10,piVar1);
        if (iVar8 != 0) {
          if (*(int *)(param_3 + 0x40) == 0) {
            iVar8 = (*pcVar2)(param_1,piVar5,param_3 + 0x18,param_3 + 0x2c,param_4);
          }
          else {
            iVar8 = FUN_00a9aba0(piVar5,param_3 + 0x18);
          }
          iStack_c = param_3 + 0x18;
          if ((iVar8 != 0) && (iVar8 = FUN_00ad2e30(param_2 + 0x2c,piVar5,piVar1), iVar8 != 0)) {
            *(undefined4 *)(param_2 + 0x40) = 0;
            iVar8 = (*pcVar3)(param_1,iVar4,iStack_c,param_4);
            if (((iVar8 != 0) &&
                ((iVar8 = (*pcVar2)(param_1,uVar7,local_10,iVar4,param_4), iVar8 != 0 &&
                 (iVar8 = FUN_00ad2e80(uVar7,uVar7,2,piVar1), iVar8 != 0)))) &&
               ((iVar8 = FUN_00ad2e30(piVar5,uVar7,piVar1), iVar8 != 0 &&
                (((((iVar8 = (*pcVar3)(param_1,param_2 + 4,piVar6,param_4), iVar8 != 0 &&
                    (iVar8 = FUN_00ad2d30(param_2 + 4,param_2 + 4,piVar5,piVar1), iVar8 != 0)) &&
                   (iVar8 = (*pcVar3)(param_1,piVar5,iVar4,param_4), iVar8 != 0)) &&
                  ((iVar8 = FUN_00ad2e80(iVar4,piVar5,3,piVar1), iVar8 != 0 &&
                   (iVar8 = FUN_00ad2d30(piVar5,uVar7,param_2 + 4,piVar1), iVar8 != 0)))) &&
                 (iVar8 = (*pcVar2)(param_1,piVar5,piVar6,piVar5,param_4), iVar8 != 0)))))) {
              iVar4 = FUN_00ad2d30(param_2 + 0x18,piVar5,iVar4,piVar1);
              uVar7 = 1;
              if (iVar4 != 0) goto LAB_00af1bf3;
            }
          }
        }
      }
    }
  }
  uVar7 = local_4;
LAB_00af1bf3:
  FUN_00aa4aa0(param_4);
  if (local_8 != 0) {
    FUN_00aa4a20(local_8);
  }
  return uVar7;
}



undefined4 FUN_00af1c20(int param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = FUN_00aa3f40(param_1,param_2);
  if ((iVar1 == 0) && (*(int *)(param_2 + 0x1c) != 0)) {
    uVar2 = FUN_00ad15d0(param_2 + 0x18,param_1 + 0x48,param_2 + 0x18);
    return uVar2;
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00af1c60(int *param_1,int param_2,int param_3)

{
  code *pcVar1;
  code *pcVar2;
  int iVar3;
  undefined4 uVar4;
  int *piVar5;
  undefined4 uVar6;
  int iVar7;
  int *piVar8;
  int local_8;
  uint local_4;
  
  local_8 = 0;
  local_4 = 0xffffffff;
  iVar3 = FUN_00aa3f40(param_1,param_2);
  if (iVar3 != 0) {
    return 1;
  }
  pcVar1 = *(code **)(*param_1 + 0x84);
  pcVar2 = *(code **)(*param_1 + 0x88);
  if ((param_3 == 0) && (param_3 = FUN_00aa49c0(), local_8 = param_3, param_3 == 0)) {
    return 0xffffffff;
  }
  FUN_00aa4a50(param_3);
  uVar4 = FUN_00aa4ae0(param_3);
  piVar5 = (int *)FUN_00aa4ae0(param_3);
  uVar6 = FUN_00aa4ae0(param_3);
  iVar3 = FUN_00aa4ae0(param_3);
  if ((iVar3 == 0) || (iVar7 = (*pcVar2)(param_1,uVar4,param_2 + 4,param_3), iVar7 == 0))
  goto LAB_00af1ea7;
  if (*(int *)(param_2 + 0x40) == 0) {
    iVar7 = (*pcVar2)(param_1,piVar5,param_2 + 0x2c,param_3);
    if (((iVar7 == 0) || (iVar7 = (*pcVar2)(param_1,uVar6,piVar5,param_3), iVar7 == 0)) ||
       (iVar7 = (*pcVar1)(param_1,iVar3,uVar6,piVar5,param_3), iVar7 == 0)) goto LAB_00af1ea7;
    if (param_1[0x27] == 0) {
      iVar7 = (*pcVar1)(param_1,piVar5,uVar6,param_1 + 0x1d,param_3);
      if (iVar7 == 0) goto LAB_00af1ea7;
      iVar7 = FUN_00ad2ca0(uVar4,uVar4,piVar5,param_1 + 0x12);
    }
    else {
      iVar7 = FUN_00ad2e30(piVar5,uVar6,param_1 + 0x12);
      if ((iVar7 == 0) || (iVar7 = FUN_00ad2ca0(piVar5,piVar5,uVar6,param_1 + 0x12), iVar7 == 0))
      goto LAB_00af1ea7;
      iVar7 = FUN_00ad2d30(uVar4,uVar4,piVar5,param_1 + 0x12);
    }
    if (((iVar7 == 0) || (iVar7 = (*pcVar1)(param_1,uVar4,uVar4,param_2 + 4,param_3), iVar7 == 0))
       || (iVar3 = (*pcVar1)(param_1,piVar5,param_1 + 0x22,iVar3,param_3), piVar8 = piVar5,
          iVar3 == 0)) goto LAB_00af1ea7;
  }
  else {
    iVar3 = FUN_00ad2ca0(uVar4,uVar4,param_1 + 0x1d,param_1 + 0x12);
    if ((iVar3 == 0) || (iVar3 = (*pcVar1)(param_1,uVar4,uVar4,param_2 + 4,param_3), iVar3 == 0))
    goto LAB_00af1ea7;
    piVar8 = param_1 + 0x22;
  }
  iVar3 = FUN_00ad2ca0(uVar4,uVar4,piVar8,param_1 + 0x12);
  if ((iVar3 != 0) && (iVar3 = (*pcVar2)(param_1,piVar5,param_2 + 0x18,param_3), iVar3 != 0)) {
    iVar3 = FUN_00a9ae10(piVar5,uVar4);
    local_4 = (uint)(iVar3 == 0);
  }
LAB_00af1ea7:
  FUN_00aa4aa0(param_3);
  if (local_8 != 0) {
    FUN_00aa4a20(local_8);
  }
  return local_4;
}



uint FUN_00af1cd2(undefined4 param_1,code *param_2,undefined4 param_3,code *param_4,
                 undefined4 param_5,int param_6,uint param_7,undefined4 param_8,undefined4 param_9,
                 int param_10)

{
  undefined4 uVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int unaff_EDI;
  
  FUN_00aa4a50();
  uVar1 = FUN_00aa4ae0();
  iVar2 = FUN_00aa4ae0();
  uVar3 = FUN_00aa4ae0();
  iVar4 = FUN_00aa4ae0();
  if ((iVar4 == 0) || (iVar4 = (*param_4)(), iVar4 == 0)) goto LAB_00af1ea7;
  if (*(int *)(param_10 + 0x40) == 0) {
    iVar4 = (*param_4)();
    if (((iVar4 == 0) || (iVar4 = (*param_4)(), iVar4 == 0)) || (iVar4 = (*param_2)(), iVar4 == 0))
    goto LAB_00af1ea7;
    if (*(int *)(unaff_EDI + 0x9c) == 0) {
      iVar4 = (*param_2)();
      if (iVar4 == 0) goto LAB_00af1ea7;
      iVar4 = FUN_00ad2ca0(uVar1,uVar1,iVar2,unaff_EDI + 0x48);
    }
    else {
      iVar4 = FUN_00ad2e30(iVar2,uVar3,unaff_EDI + 0x48);
      if ((iVar4 == 0) || (iVar4 = FUN_00ad2ca0(iVar2,iVar2,uVar3,unaff_EDI + 0x48), iVar4 == 0))
      goto LAB_00af1ea7;
      iVar4 = FUN_00ad2d30(uVar1,uVar1,iVar2,unaff_EDI + 0x48);
    }
    if (((iVar4 == 0) || (iVar4 = (*param_2)(), iVar4 == 0)) ||
       (iVar5 = (*param_2)(), iVar4 = iVar2, iVar5 == 0)) goto LAB_00af1ea7;
  }
  else {
    iVar4 = FUN_00ad2ca0(uVar1,uVar1,unaff_EDI + 0x74,unaff_EDI + 0x48);
    if ((iVar4 == 0) || (iVar4 = (*param_2)(), iVar4 == 0)) goto LAB_00af1ea7;
    iVar4 = unaff_EDI + 0x88;
  }
  iVar4 = FUN_00ad2ca0(uVar1,uVar1,iVar4,unaff_EDI + 0x48);
  if ((iVar4 != 0) && (iVar4 = (*param_4)(), iVar4 != 0)) {
    iVar2 = FUN_00a9ae10(iVar2,uVar1);
    param_7 = (uint)(iVar2 == 0);
  }
LAB_00af1ea7:
  FUN_00aa4aa0();
  if (param_6 != 0) {
    FUN_00aa4a20(param_6);
  }
  return param_7;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00af1ed0(int *param_1,int param_2,int param_3,int param_4)

{
  code *pcVar1;
  code *pcVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int local_1c;
  uint local_8;
  int local_4;
  
  local_4 = 0;
  local_8 = 0xffffffff;
  iVar3 = FUN_00aa3f40(param_1,param_2);
  if (iVar3 != 0) {
    iVar3 = FUN_00aa3f40(param_1,param_3);
    return (uint)(iVar3 == 0);
  }
  iVar3 = FUN_00aa3f40(param_1,param_3);
  if (iVar3 == 0) {
    if ((*(int *)(param_2 + 0x40) == 0) || (*(int *)(param_3 + 0x40) == 0)) {
      pcVar1 = *(code **)(*param_1 + 0x84);
      pcVar2 = *(code **)(*param_1 + 0x88);
      if ((param_4 == 0) && (param_4 = FUN_00aa49c0(), local_4 = param_4, param_4 == 0)) {
        return 0xffffffff;
      }
      FUN_00aa4a50(param_4);
      iVar3 = FUN_00aa4ae0(param_4);
      iVar4 = FUN_00aa4ae0(param_4);
      uVar5 = FUN_00aa4ae0(param_4);
      iVar6 = FUN_00aa4ae0(param_4);
      if (iVar6 != 0) {
        if (*(int *)(param_3 + 0x40) == 0) {
          iVar7 = (*pcVar2)(param_1,iVar6,param_3 + 0x2c,param_4);
          if ((iVar7 == 0) ||
             (iVar7 = (*pcVar1)(param_1,iVar3,param_2 + 4,iVar6,param_4), local_1c = iVar3,
             iVar7 == 0)) goto LAB_00af214a;
        }
        else {
          local_1c = param_2 + 4;
        }
        if (*(int *)(param_2 + 0x40) == 0) {
          iVar7 = (*pcVar2)(param_1,uVar5,param_2 + 0x2c,param_4);
          if ((iVar7 == 0) ||
             (iVar8 = (*pcVar1)(param_1,iVar4,param_3 + 4,uVar5,param_4), iVar7 = iVar4, iVar8 == 0)
             ) goto LAB_00af214a;
        }
        else {
          iVar7 = param_3 + 4;
        }
        iVar8 = FUN_00a9ae60(local_1c,iVar7);
        if (iVar8 == 0) {
          if (*(int *)(param_3 + 0x40) == 0) {
            iVar8 = (*pcVar1)(param_1,iVar6,iVar6,param_3 + 0x2c,param_4);
            if ((iVar8 == 0) ||
               (iVar3 = (*pcVar1)(param_1,iVar3,param_2 + 0x18,iVar6,param_4), iVar3 == 0))
            goto LAB_00af214a;
          }
          else {
            local_1c = param_2 + 0x18;
          }
          if (*(int *)(param_2 + 0x40) == 0) {
            iVar3 = (*pcVar1)(param_1,uVar5,uVar5,param_2 + 0x2c,param_4);
            if ((iVar3 == 0) ||
               (iVar3 = (*pcVar1)(param_1,iVar4,param_3 + 0x18,uVar5,param_4), iVar3 == 0))
            goto LAB_00af214a;
          }
          else {
            iVar7 = param_3 + 0x18;
          }
          iVar3 = FUN_00a9ae60(local_1c,iVar7);
          local_8 = (uint)(iVar3 != 0);
        }
        else {
          local_8 = 1;
        }
      }
LAB_00af214a:
      FUN_00aa4aa0(param_4);
      if (local_4 != 0) {
        FUN_00aa4a20(local_4);
      }
      return local_8;
    }
    iVar3 = FUN_00a9ae60(param_2 + 4,param_3 + 4);
    if ((iVar3 == 0) && (iVar3 = FUN_00a9ae60(param_2 + 0x18,param_3 + 0x18), iVar3 == 0)) {
      return 0;
    }
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af2270(int *param_1,uint param_2,int param_3,int param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  int *piVar8;
  undefined4 *puVar9;
  int iVar10;
  int iVar11;
  undefined4 *local_20;
  uint local_1c;
  uint local_14;
  int local_c;
  undefined4 local_8;
  
  local_c = 0;
  local_1c = 0;
  local_20 = (undefined4 *)0x0;
  local_8 = 0;
  if (param_2 == 0) {
    return 1;
  }
  if ((param_4 == 0) && (param_4 = FUN_00aa49c0(), local_c = param_4, param_4 == 0)) {
    return 0;
  }
  FUN_00aa4a50(param_4);
  iVar3 = FUN_00aa4ae0(param_4);
  iVar4 = FUN_00aa4ae0(param_4);
  if ((iVar3 != 0) && (iVar4 != 0)) {
    uVar5 = 1;
    if (1 < param_2) {
      do {
        uVar5 = uVar5 * 2;
      } while (uVar5 < param_2);
    }
    local_1c = uVar5 * 2;
    local_20 = (undefined4 *)FUN_00a84f80(uVar5 * 8,".\\crypto\\ec\\ecp_smpl.c",0x4c1);
    if (local_20 != (undefined4 *)0x0) {
      *local_20 = 0;
      uVar5 = uVar5 & 0x7fffffff;
      iVar10 = uVar5 - 1;
      for (iVar6 = iVar10; iVar6 != 0; iVar6 = iVar6 + -1) {
        local_20[iVar6] = 0;
      }
      uVar7 = 0;
      if (param_2 != 0) {
        piVar8 = local_20 + uVar5;
        do {
          *piVar8 = *(int *)(param_3 + uVar7 * 4) + 0x2c;
          uVar7 = uVar7 + 1;
          piVar8 = piVar8 + 1;
        } while (uVar7 < param_2);
      }
      uVar5 = uVar5 + param_2;
      if (uVar5 < local_1c) {
        puVar9 = local_20 + uVar5;
        for (iVar6 = local_1c - uVar5; iVar6 != 0; iVar6 = iVar6 + -1) {
          *puVar9 = 0;
          puVar9 = puVar9 + 1;
        }
      }
      for (; iVar10 != 0; iVar10 = iVar10 + -1) {
        iVar6 = FUN_00a9aa10();
        local_20[iVar10] = iVar6;
        if (iVar6 == 0) goto LAB_00af263c;
        iVar1 = local_20[iVar10 * 2];
        if (iVar1 != 0) {
          iVar2 = local_20[iVar10 * 2 + 1];
          iVar11 = iVar1;
          if (((iVar2 == 0) || (*(int *)(iVar2 + 4) == 0)) ||
             (iVar11 = iVar2, *(int *)(iVar1 + 4) == 0)) {
            iVar6 = FUN_00a9aba0(iVar6,iVar11);
          }
          else {
            iVar6 = (**(code **)(*param_1 + 0x84))(param_1,iVar6,iVar1,iVar2,param_4);
          }
          if (iVar6 == 0) goto LAB_00af263c;
        }
      }
      iVar10 = local_20[1];
      if ((*(int *)(iVar10 + 4) == 0) ||
         (iVar10 = FUN_00ad3370(iVar10,iVar10,param_1 + 0x12,param_4), iVar10 != 0)) {
        if ((*(code **)(*param_1 + 0x90) == (code *)0x0) ||
           ((iVar10 = (**(code **)(*param_1 + 0x90))(param_1,local_20[1],local_20[1],param_4),
            iVar10 != 0 &&
            (iVar10 = (**(code **)(*param_1 + 0x90))(param_1,local_20[1],local_20[1],param_4),
            iVar10 != 0)))) {
          uVar7 = 2;
          if (2 < uVar5) {
            piVar8 = local_20 + 3;
            do {
              iVar10 = *piVar8;
              if ((iVar10 == 0) || (*(int *)(iVar10 + 4) == 0)) {
                iVar6 = local_20[uVar7 >> 1];
                iVar10 = piVar8[-1];
              }
              else {
                iVar10 = (**(code **)(*param_1 + 0x84))
                                   (param_1,iVar3,local_20[uVar7 >> 1],iVar10,param_4);
                if (((iVar10 == 0) ||
                    (iVar10 = (**(code **)(*param_1 + 0x84))
                                        (param_1,iVar4,local_20[uVar7 >> 1],piVar8[-1],param_4),
                    iVar10 == 0)) || (iVar10 = FUN_00a9aba0(piVar8[-1],iVar3), iVar10 == 0))
                goto LAB_00af263c;
                iVar10 = *piVar8;
                iVar6 = iVar4;
              }
              iVar10 = FUN_00a9aba0(iVar10,iVar6);
              if (iVar10 == 0) goto LAB_00af263c;
              uVar7 = uVar7 + 2;
              piVar8 = piVar8 + 2;
            } while (uVar7 < uVar5);
          }
          local_14 = 0;
          if (param_2 != 0) {
            do {
              iVar3 = *(int *)(param_3 + local_14 * 4);
              if (*(int *)(iVar3 + 0x30) != 0) {
                iVar10 = iVar3 + 0x2c;
                iVar6 = (**(code **)(*param_1 + 0x88))(param_1,iVar4,iVar10,param_4);
                if (((iVar6 == 0) ||
                    (iVar6 = (**(code **)(*param_1 + 0x84))
                                       (param_1,iVar3 + 4,iVar3 + 4,iVar4,param_4), iVar6 == 0)) ||
                   ((iVar6 = (**(code **)(*param_1 + 0x84))(param_1,iVar4,iVar4,iVar10,param_4),
                    iVar6 == 0 ||
                    (iVar6 = (**(code **)(*param_1 + 0x84))
                                       (param_1,iVar3 + 0x18,iVar3 + 0x18,iVar4,param_4), iVar6 == 0
                    )))) goto LAB_00af263c;
                if (*(code **)(*param_1 + 0x98) == (code *)0x0) {
                  iVar10 = FUN_00a9ac50(iVar10,1);
                }
                else {
                  iVar10 = (**(code **)(*param_1 + 0x98))(param_1,iVar10,param_4);
                }
                if (iVar10 == 0) goto LAB_00af263c;
                *(undefined4 *)(iVar3 + 0x40) = 1;
              }
              local_14 = local_14 + 1;
            } while (local_14 < param_2);
          }
          local_8 = 1;
        }
      }
      else {
        FUN_00a7f3c0(0x10,0x89,3,".\\crypto\\ec\\ecp_smpl.c",0x4fa);
      }
    }
  }
LAB_00af263c:
  FUN_00aa4aa0(param_4);
  if (local_c != 0) {
    FUN_00aa4a20(local_c);
  }
  if (local_20 != (undefined4 *)0x0) {
    local_1c = local_1c >> 1;
    while (local_1c = local_1c - 1, local_1c != 0) {
      if (local_20[local_1c] != 0) {
        FUN_00a9a950(local_20[local_1c]);
      }
    }
    FUN_00a85120(local_20);
  }
  return local_8;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __thiscall FUN_00af26f0(int *param_1_00,undefined4 param_1,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 local_4;
  
  local_4 = 0;
  FUN_00aa4a50();
  iVar1 = FUN_00aa4ae0();
  if (iVar1 != 0) {
    iVar2 = (**(code **)(*param_1_00 + 0x88))(param_1_00,param_1,param_1);
    if (iVar2 != 0) {
      iVar2 = (**(code **)(*param_1_00 + 0x88))(param_1_00,iVar1,param_3);
      if (iVar2 != 0) {
        iVar2 = (**(code **)(*param_1_00 + 0x84))(param_1_00,param_3,param_1,iVar1);
        if (iVar2 != 0) {
          iVar2 = (**(code **)(*param_1_00 + 0x88))(param_1_00,param_1,param_1);
          if (iVar2 != 0) {
            iVar2 = (**(code **)(*param_1_00 + 0x88))(param_1_00,iVar1,iVar1);
            if (iVar2 != 0) {
              iVar2 = (**(code **)(*param_1_00 + 0x84))(param_1_00,iVar1,param_1_00 + 0x22,iVar1);
              if (iVar2 != 0) {
                iVar1 = FUN_00af30e0(param_1,param_1,iVar1);
                uVar3 = 1;
                if (iVar1 != 0) goto LAB_00af27ce;
              }
            }
          }
        }
      }
    }
  }
  uVar3 = local_4;
LAB_00af27ce:
  FUN_00aa4aa0();
  return uVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __thiscall
FUN_00af27e0(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  undefined4 local_4;
  
  local_4 = 0;
  FUN_00aa4a50();
  uVar1 = FUN_00aa4ae0();
  iVar2 = FUN_00aa4ae0();
  if (iVar2 != 0) {
    iVar3 = FUN_00a9aba0(uVar1,param_1);
    if (iVar3 != 0) {
      iVar3 = (**(code **)(*param_1_00 + 0x84))(param_1_00,param_2,param_2,param_4);
      if (iVar3 != 0) {
        iVar3 = (**(code **)(*param_1_00 + 0x84))(param_1_00);
        if (iVar3 != 0) {
          iVar3 = (**(code **)(*param_1_00 + 0x84))(param_1_00,iVar2,param_2);
          if (iVar3 != 0) {
            iVar3 = FUN_00af30e0();
            if (iVar3 != 0) {
              iVar3 = (**(code **)(*param_1_00 + 0x88))(param_1_00);
              if (iVar3 != 0) {
                iVar3 = (**(code **)(*param_1_00 + 0x84))(param_1_00,param_2);
                if (iVar3 != 0) {
                  iVar2 = FUN_00af30e0(param_2,param_2,iVar2);
                  uVar1 = 1;
                  if (iVar2 != 0) goto LAB_00af28e5;
                }
              }
            }
          }
        }
      }
    }
  }
  uVar1 = local_4;
LAB_00af28e5:
  FUN_00aa4aa0();
  return uVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

byte __thiscall
FUN_00af2900(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,
            undefined4 param_5)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  int unaff_EBX;
  byte bVar5;
  
  if (*(int *)(param_4 + 4) == 0) {
    FUN_00a9ac50(param_5,0);
    FUN_00a9ac50();
    return 1;
  }
  if (*(int *)(unaff_EBX + 4) == 0) {
    iVar1 = FUN_00a9aba0(param_5,param_1);
    if (iVar1 == 0) {
      return 0;
    }
    iVar1 = FUN_00af30e0();
    return -(iVar1 != 0) & 2;
  }
  FUN_00aa4a50();
  uVar2 = FUN_00aa4ae0();
  uVar3 = FUN_00aa4ae0();
  iVar1 = FUN_00aa4ae0();
  if (iVar1 != 0) {
    iVar4 = FUN_00a9ac50(iVar1,1);
    if (iVar4 != 0) {
      iVar4 = (**(code **)(*param_1_00 + 0x84))(param_1_00,uVar2,param_4);
      if (iVar4 != 0) {
        iVar4 = (**(code **)(*param_1_00 + 0x84))(param_1_00,param_4,param_4,param_1);
        if (iVar4 != 0) {
          iVar4 = FUN_00af30e0(param_4,param_4,param_3);
          if (iVar4 != 0) {
            iVar4 = (**(code **)(*param_1_00 + 0x84))(param_1_00);
            if (iVar4 != 0) {
              iVar4 = (**(code **)(*param_1_00 + 0x84))(param_1_00,param_3);
              if (iVar4 != 0) {
                iVar4 = FUN_00af30e0();
                if (iVar4 != 0) {
                  iVar4 = (**(code **)(*param_1_00 + 0x84))(param_1_00);
                  if (iVar4 != 0) {
                    iVar4 = (**(code **)(*param_1_00 + 0x88))(param_1_00,uVar3,param_1);
                    if (iVar4 != 0) {
                      iVar4 = FUN_00af30e0(uVar3,uVar3,param_2);
                      if (iVar4 != 0) {
                        iVar4 = (**(code **)(*param_1_00 + 0x84))(param_1_00,uVar3,uVar3,uVar2);
                        if (iVar4 != 0) {
                          iVar4 = FUN_00af30e0(uVar3,uVar3);
                          if (iVar4 != 0) {
                            iVar4 = (**(code **)(*param_1_00 + 0x84))
                                              (param_1_00,uVar2,uVar2,param_1);
                            if (iVar4 != 0) {
                              iVar1 = (**(code **)(*param_1_00 + 0x8c))
                                                (param_1_00,uVar2,iVar1,uVar2);
                              if (iVar1 != 0) {
                                iVar1 = (**(code **)(*param_1_00 + 0x84))
                                                  (param_1_00,uVar3,uVar2,uVar3);
                                if (iVar1 != 0) {
                                  iVar1 = (**(code **)(*param_1_00 + 0x84))
                                                    (param_1_00,param_5,param_3,uVar2);
                                  if (iVar1 != 0) {
                                    iVar1 = FUN_00af30e0();
                                    if (iVar1 != 0) {
                                      iVar1 = (**(code **)(*param_1_00 + 0x84))(param_1_00);
                                      if (iVar1 != 0) {
                                        iVar1 = FUN_00af30e0();
                                        bVar5 = 2;
                                        if (iVar1 != 0) goto LAB_00af2bb3;
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  bVar5 = 0;
LAB_00af2bb3:
  FUN_00aa4aa0();
  return bVar5;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __thiscall
FUN_00af2bd0(undefined4 param_1_00,int *param_1,int param_2,int *param_3,int param_4)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  int iVar9;
  uint uStack_1c;
  undefined4 local_4;
  
  local_4 = 0;
  if (param_2 == param_4) {
    FUN_00a7f3c0(0x10,0xd0,0x70,".\\crypto\\ec\\ec2_mult.c",0xe2);
  }
  else {
    if ((((param_3 == (int *)0x0) || (param_3[1] == 0)) || (param_4 == 0)) ||
       (iVar2 = FUN_00aa3f40(param_1,param_4), iVar2 != 0)) {
      uVar8 = FUN_00aa3b50(param_1,param_2);
      return uVar8;
    }
    if (*(int *)(param_4 + 0x40) != 0) {
      FUN_00aa4a50(param_1_00);
      iVar2 = FUN_00aa4ae0(param_1_00);
      iVar3 = FUN_00aa4ae0(param_1_00);
      if (iVar3 != 0) {
        iVar4 = param_4 + 4;
        iVar5 = FUN_00af3180(iVar2,iVar4,param_1 + 0x17);
        if (((iVar5 != 0) && (iVar5 = FUN_00a9ac50(iVar3,1), iVar5 != 0)) &&
           ((iVar5 = (**(code **)(*param_1 + 0x88))(param_1,param_2 + 0x18,iVar2,param_1_00),
            iVar5 != 0 &&
            ((iVar5 = (**(code **)(*param_1 + 0x88))(param_1,param_2 + 4,param_2 + 0x18,param_1_00),
             iVar5 != 0 &&
             (iVar5 = FUN_00af30e0(param_2 + 4,param_2 + 4,param_1 + 0x22), iVar5 != 0)))))) {
          iVar5 = param_3[1];
          uVar1 = *(uint *)(*param_3 + -4 + iVar5 * 4);
          iVar6 = iVar5 + -1;
          uStack_1c = 0x80000000;
          if (-1 < (int)uVar1) {
            do {
              uStack_1c = uStack_1c >> 1;
            } while ((uStack_1c & uVar1) == 0);
          }
          uStack_1c = uStack_1c >> 1;
          if (uStack_1c == 0) {
            iVar6 = iVar5 + -2;
            uStack_1c = 0x80000000;
          }
          for (; -1 < iVar6; iVar6 = iVar6 + -1) {
            uVar1 = *(uint *)(*param_3 + iVar6 * 4);
            for (; uStack_1c != 0; uStack_1c = uStack_1c >> 1) {
              if ((uVar1 & uStack_1c) == 0) {
                iVar7 = FUN_00af27e0(iVar4,param_2 + 4,iVar2,iVar3);
                iVar5 = iVar2;
                iVar9 = iVar3;
                if (iVar7 == 0) goto LAB_00af2e98;
              }
              else {
                iVar5 = FUN_00af27e0(iVar4,iVar2,param_2 + 4,param_2 + 0x18);
                if (iVar5 == 0) goto LAB_00af2e98;
                iVar5 = param_2 + 4;
                iVar9 = param_2 + 0x18;
              }
              iVar5 = FUN_00af26f0(iVar5,iVar9);
              if (iVar5 == 0) goto LAB_00af2e98;
            }
            uStack_1c = 0x80000000;
          }
          iVar2 = FUN_00af2900(iVar4,param_4 + 0x18,iVar2,iVar3,param_2 + 4);
          if (iVar2 != 0) {
            if (iVar2 == 1) {
              iVar2 = FUN_00aa3b50(param_1,param_2);
              if (iVar2 == 0) goto LAB_00af2e98;
            }
            else {
              iVar2 = FUN_00a9ac50(param_2 + 0x2c,1);
              if (iVar2 == 0) goto LAB_00af2e98;
              *(undefined4 *)(param_2 + 0x40) = 1;
            }
            FUN_00a9b040(param_2 + 4,0);
            FUN_00a9b040(param_2 + 0x18,0);
            local_4 = 1;
          }
        }
      }
LAB_00af2e98:
      FUN_00aa4aa0(param_1_00);
      return local_4;
    }
  }
  return 0;
}



undefined4 FUN_00af30e0(int *param_1,int *param_2,int *param_3)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int *piVar4;
  
  piVar4 = param_2;
  if (param_2[1] < param_3[1]) {
    piVar4 = param_3;
    param_3 = param_2;
  }
  piVar2 = param_1;
  if (param_1[2] < piVar4[1]) {
    piVar2 = (int *)FUN_00a9ab60(param_1,piVar4[1]);
  }
  if (piVar2 == (int *)0x0) {
    return 0;
  }
  iVar3 = 0;
  if (0 < param_3[1]) {
    do {
      *(uint *)(*param_1 + iVar3 * 4) =
           *(uint *)(*piVar4 + iVar3 * 4) ^ *(uint *)(*param_3 + iVar3 * 4);
      iVar3 = iVar3 + 1;
    } while (iVar3 < param_3[1]);
  }
  if (iVar3 < piVar4[1]) {
    do {
      *(undefined4 *)(*param_1 + iVar3 * 4) = *(undefined4 *)(*piVar4 + iVar3 * 4);
      iVar3 = iVar3 + 1;
    } while (iVar3 < piVar4[1]);
  }
  iVar3 = piVar4[1];
  param_1[1] = iVar3;
  if (0 < iVar3) {
    piVar4 = (int *)(*param_1 + -4 + iVar3 * 4);
    do {
      iVar1 = *piVar4;
      piVar4 = piVar4 + -1;
      if (iVar1 != 0) break;
      iVar3 = iVar3 + -1;
    } while (0 < iVar3);
    param_1[1] = iVar3;
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af3180(uint **param_1,uint **param_2,uint *param_3)

{
  uint **ppuVar1;
  int iVar2;
  uint *puVar3;
  int iVar4;
  byte bVar5;
  uint *puVar6;
  uint uVar7;
  int iVar8;
  uint uVar9;
  uint uVar10;
  bool bVar11;
  int local_8;
  uint *local_4;
  
  if (*param_3 == 0) {
    FUN_00a9ac50(param_1,0);
    return 1;
  }
  if (param_2 != param_1) {
    ppuVar1 = param_1;
    if ((int)param_1[2] < (int)param_2[1]) {
      ppuVar1 = (uint **)FUN_00a9ab60(param_1,param_2[1]);
    }
    if (ppuVar1 == (uint **)0x0) {
      return 0;
    }
    iVar2 = 0;
    if (0 < (int)param_2[1]) {
      do {
        (*param_1)[iVar2] = (*param_2)[iVar2];
        iVar2 = iVar2 + 1;
      } while (iVar2 < (int)param_2[1]);
    }
    param_1[1] = param_2[1];
  }
  puVar3 = *param_1;
  iVar2 = (int)(*param_3 + ((int)*param_3 >> 0x1f & 0x1fU)) >> 5;
  iVar8 = (int)param_1[1] + -1;
  bVar11 = iVar8 == iVar2;
  if (iVar2 < iVar8) {
    local_4 = puVar3 + (iVar8 - iVar2);
    do {
      uVar7 = puVar3[iVar8];
      if (uVar7 == 0) {
        iVar8 = iVar8 + -1;
        local_4 = local_4 + -1;
      }
      else {
        puVar6 = param_3 + 1;
        puVar3[iVar8] = 0;
        uVar9 = *puVar6;
        local_8 = 1;
        while (uVar9 != 0) {
          uVar9 = *param_3 - *puVar6;
          uVar10 = uVar9 & 0x8000001f;
          if ((int)uVar10 < 0) {
            uVar10 = (uVar10 - 1 | 0xffffffe0) + 1;
          }
          puVar6 = puVar3 + (iVar8 - ((int)(uVar9 + ((int)uVar9 >> 0x1f & 0x1fU)) >> 5));
          *puVar6 = *puVar6 ^ uVar7 >> ((byte)uVar10 & 0x1f);
          if (uVar10 != 0) {
            puVar6[-1] = puVar6[-1] ^ uVar7 << (0x20 - (byte)uVar10 & 0x1f);
          }
          local_8 = local_8 + 1;
          puVar6 = param_3 + local_8;
          uVar9 = param_3[local_8];
        }
        uVar9 = *param_3 & 0x8000001f;
        if ((int)uVar9 < 0) {
          uVar9 = (uVar9 - 1 | 0xffffffe0) + 1;
        }
        *local_4 = *local_4 ^ uVar7 >> ((byte)uVar9 & 0x1f);
        if (uVar9 != 0) {
          local_4[-1] = local_4[-1] ^ uVar7 << (0x20 - (byte)uVar9 & 0x1f);
        }
      }
      bVar11 = iVar8 == iVar2;
    } while (!bVar11 && iVar2 <= iVar8);
  }
  if (bVar11) {
    while( true ) {
      uVar7 = *param_3 & 0x8000001f;
      if ((int)uVar7 < 0) {
        uVar7 = (uVar7 - 1 | 0xffffffe0) + 1;
      }
      uVar9 = puVar3[iVar2] >> ((byte)uVar7 & 0x1f);
      if (uVar9 == 0) break;
      bVar5 = 0x20 - (byte)uVar7;
      if (uVar7 == 0) {
        puVar3[iVar2] = 0;
      }
      else {
        puVar3[iVar2] = (puVar3[iVar2] << (bVar5 & 0x1f)) >> (bVar5 & 0x1f);
      }
      *puVar3 = *puVar3 ^ uVar9;
      puVar6 = param_3 + 1;
      iVar8 = 1;
      uVar7 = param_3[1];
      while (uVar7 != 0) {
        uVar7 = *puVar6;
        iVar4 = (int)(uVar7 + ((int)uVar7 >> 0x1f & 0x1fU)) >> 5;
        uVar7 = uVar7 & 0x8000001f;
        if ((int)uVar7 < 0) {
          uVar7 = (uVar7 - 1 | 0xffffffe0) + 1;
        }
        puVar3[iVar4] = puVar3[iVar4] ^ uVar9 << ((byte)uVar7 & 0x1f);
        uVar10 = uVar9 >> (0x20 - (byte)uVar7 & 0x1f);
        if ((uVar7 != 0) && (uVar10 != 0)) {
          puVar3[iVar4 + 1] = puVar3[iVar4 + 1] ^ uVar10;
        }
        iVar8 = iVar8 + 1;
        puVar6 = param_3 + iVar8;
        uVar7 = param_3[iVar8];
      }
    }
  }
  puVar3 = param_1[1];
  if (0 < (int)puVar3) {
    puVar6 = *param_1 + (int)puVar3 + -1;
    do {
      uVar7 = *puVar6;
      puVar6 = puVar6 + -1;
      if (uVar7 != 0) break;
      puVar3 = (uint *)((int)puVar3 + -1);
    } while (0 < (int)puVar3);
    param_1[1] = puVar3;
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af33d0(undefined4 param_1,int *param_2,undefined4 param_3,undefined4 param_4)

{
  uint uVar1;
  int *piVar2;
  int *piVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  
  uVar5 = 0;
  FUN_00aa4a50(param_4);
  piVar2 = (int *)FUN_00aa4ae0(param_4);
  if (piVar2 == (int *)0x0) {
    return 0;
  }
  piVar3 = piVar2;
  if (piVar2[2] < param_2[1] * 2) {
    piVar3 = (int *)FUN_00a9ab60(piVar2,param_2[1] * 2);
  }
  if (piVar3 != (int *)0x0) {
    iVar4 = param_2[1] + -1;
    while (-1 < iVar4) {
      uVar1 = *(uint *)(*param_2 + iVar4 * 4);
      *(uint *)(*piVar2 + 4 + iVar4 * 8) =
           ((*(int *)(&DAT_00dca908 + (uVar1 >> 0x1c) * 4) << 8 |
            *(uint *)(&DAT_00dca908 + (uVar1 >> 0x18 & 0xf) * 4)) << 8 |
           *(uint *)(&DAT_00dca908 + (uVar1 >> 0x14 & 0xf) * 4)) << 8 |
           *(uint *)(&DAT_00dca908 + (uVar1 >> 0x10 & 0xf) * 4);
      uVar1 = *(uint *)(*param_2 + iVar4 * 4);
      iVar4 = iVar4 + -1;
      *(uint *)(*piVar2 + 8 + iVar4 * 8) =
           ((*(int *)(&DAT_00dca908 + (uVar1 >> 0xc & 0xf) * 4) << 8 |
            *(uint *)(&DAT_00dca908 + (uVar1 >> 8 & 0xf) * 4)) << 8 |
           *(uint *)(&DAT_00dca908 + (uVar1 >> 4 & 0xf) * 4)) << 8 |
           *(uint *)(&DAT_00dca908 + (uVar1 & 0xf) * 4);
    }
    uVar5 = 0;
    iVar4 = param_2[1];
    iVar6 = iVar4 * 2;
    piVar2[1] = iVar6;
    if (0 < iVar6) {
      piVar3 = (int *)(*piVar2 + -4 + iVar4 * 8);
      do {
        iVar4 = *piVar3;
        piVar3 = piVar3 + -1;
        if (iVar4 != 0) break;
        iVar6 = iVar6 + -1;
      } while (0 < iVar6);
      piVar2[1] = iVar6;
    }
    iVar4 = FUN_00af3180(param_1,piVar2,param_3);
    if (iVar4 != 0) {
      uVar5 = 1;
    }
  }
  FUN_00aa4aa0(param_4);
  return uVar5;
}



int FUN_00af3530(int *param_1,int param_2,int param_3)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  iVar1 = 0;
  if (param_1[1] != 0) {
    iVar4 = param_1[1] + -1;
    if (-1 < iVar4) {
      iVar5 = iVar4 * 0x20 + -2;
      do {
        if (*(int *)(*param_1 + iVar4 * 4) != 0) {
          uVar2 = 0x80000000;
          iVar3 = 0x1f;
          do {
            if ((*(uint *)(*param_1 + iVar4 * 4) & uVar2) != 0) {
              if (iVar1 < param_3) {
                *(int *)(param_2 + iVar1 * 4) = iVar5 + 2 + iVar3;
              }
              iVar1 = iVar1 + 1;
            }
            if ((*(uint *)(*param_1 + iVar4 * 4) & uVar2 >> 1) != 0) {
              if (iVar1 < param_3) {
                *(int *)(param_2 + iVar1 * 4) = iVar5 + 1 + iVar3;
              }
              iVar1 = iVar1 + 1;
            }
            if ((*(uint *)(*param_1 + iVar4 * 4) & uVar2 >> 2) != 0) {
              if (iVar1 < param_3) {
                *(int *)(param_2 + iVar1 * 4) = iVar5 + iVar3;
              }
              iVar1 = iVar1 + 1;
            }
            if ((*(uint *)(*param_1 + iVar4 * 4) & uVar2 >> 3) != 0) {
              if (iVar1 < param_3) {
                *(int *)(param_2 + iVar1 * 4) = iVar5 + -1 + iVar3;
              }
              iVar1 = iVar1 + 1;
            }
            uVar2 = uVar2 >> 4;
            iVar3 = iVar3 + -4;
          } while (-1 < iVar3);
        }
        iVar4 = iVar4 + -1;
        iVar5 = iVar5 + -0x20;
      } while (-1 < iVar4);
    }
    if (iVar1 < param_3) {
      *(undefined4 *)(param_2 + iVar1 * 4) = 0xffffffff;
      iVar1 = iVar1 + 1;
    }
    return iVar1;
  }
  return iVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af3630(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  undefined local_18 [20];
  undefined4 uStack_4;
  
  uStack_4 = 0xaf363a;
  iVar1 = FUN_00af3530(param_3,local_18,6);
  if ((iVar1 != 0) && (iVar1 < 7)) {
    uVar2 = FUN_00af3180(param_1,param_2,local_18);
    return uVar2;
  }
  FUN_00a7f3c0(3,0x83,0x6a,".\\crypto\\bn\\bn_gf2m.c",0x176);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00af36a0(undefined4 param_1,int *param_2,int *param_3,undefined4 param_4,undefined4 param_5)

{
  undefined4 *puVar1;
  uint *puVar2;
  undefined4 uVar3;
  int *piVar4;
  int *piVar5;
  int iVar6;
  undefined4 uVar7;
  int *piVar8;
  int iVar9;
  int iVar10;
  int local_20;
  undefined4 local_1c;
  uint local_10;
  uint local_c;
  uint local_8;
  uint local_4;
  
  piVar8 = param_2;
  local_4 = 0xaf36aa;
  local_1c = 0;
  if (param_2 == param_3) {
    uVar3 = FUN_00af33d0(param_1,param_2,param_4,param_5);
    return uVar3;
  }
  FUN_00aa4a50(param_5);
  piVar4 = (int *)FUN_00aa4ae0(param_5);
  if (piVar4 != (int *)0x0) {
    iVar9 = param_2[1] + 4 + param_3[1];
    piVar5 = piVar4;
    if (piVar4[2] < iVar9) {
      piVar5 = (int *)FUN_00a9ab60(piVar4,iVar9);
    }
    if (piVar5 != (int *)0x0) {
      iVar6 = 0;
      piVar4[1] = iVar9;
      if (0 < iVar9) {
        do {
          *(undefined4 *)(*piVar4 + iVar6 * 4) = 0;
          iVar6 = iVar6 + 1;
        } while (iVar6 < iVar9);
      }
      iVar9 = param_3[1];
      local_20 = 0;
      if (0 < iVar9) {
        iVar6 = param_2[1];
        do {
          iVar10 = local_20 * 4;
          uVar3 = *(undefined4 *)(*param_3 + iVar10);
          if (local_20 + 1 == iVar9) {
            param_2 = (int *)0x0;
          }
          else {
            param_2 = (int *)((undefined4 *)(*param_3 + iVar10))[1];
          }
          iVar9 = 0;
          if (0 < iVar6) {
            do {
              puVar1 = (undefined4 *)(*piVar8 + iVar9 * 4);
              if (iVar9 + 1 == iVar6) {
                uVar7 = 0;
              }
              else {
                uVar7 = puVar1[1];
              }
              FUN_00af7180(&local_10,uVar7,*puVar1,param_2,uVar3);
              *(uint *)(*piVar4 + iVar10) = *(uint *)(*piVar4 + iVar10) ^ local_10;
              puVar2 = (uint *)(*piVar4 + 4 + iVar10);
              *puVar2 = *puVar2 ^ local_c;
              puVar2 = (uint *)(*piVar4 + 8 + iVar10);
              *puVar2 = *puVar2 ^ local_8;
              puVar2 = (uint *)(*piVar4 + 0xc + iVar10);
              *puVar2 = *puVar2 ^ local_4;
              iVar6 = piVar8[1];
              iVar9 = iVar9 + 2;
              iVar10 = iVar10 + 8;
            } while (iVar9 < iVar6);
          }
          iVar9 = param_3[1];
          local_20 = local_20 + 2;
        } while (local_20 < iVar9);
      }
      iVar9 = piVar4[1];
      if (0 < iVar9) {
        piVar8 = (int *)(*piVar4 + -4 + iVar9 * 4);
        do {
          iVar6 = *piVar8;
          piVar8 = piVar8 + -1;
          if (iVar6 != 0) break;
          iVar9 = iVar9 + -1;
        } while (0 < iVar9);
        piVar4[1] = iVar9;
      }
      iVar9 = FUN_00af3180(param_1,piVar4,param_4);
      if (iVar9 != 0) {
        local_1c = 1;
      }
    }
  }
  FUN_00aa4aa0(param_5);
  return local_1c;
}



int FUN_00af3880(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                undefined4 param_5)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  iVar1 = FUN_00a9a920(param_4);
  iVar1 = iVar1 + 1;
  iVar2 = FUN_00a84f80(iVar1 * 4,".\\crypto\\bn\\bn_gf2m.c",0x1bf);
  if (iVar2 == 0) {
    return 0;
  }
  iVar3 = FUN_00af3530(param_4,iVar2,iVar1);
  if ((iVar3 != 0) && (iVar3 <= iVar1)) {
    iVar1 = FUN_00af36a0(param_1,param_2,param_3,iVar2,param_5);
    FUN_00a85120(iVar2);
    return iVar1;
  }
  FUN_00a7f3c0(3,0x85,0x6a,".\\crypto\\bn\\bn_gf2m.c",0x1c3);
  FUN_00a85120(iVar2);
  return iVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af3930(undefined4 param_1,undefined4 param_2,uint **param_3,undefined4 param_4)

{
  uint *puVar1;
  uint **ppuVar2;
  uint **ppuVar3;
  int iVar4;
  uint *puVar5;
  uint *puVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  int iVar11;
  uint *puVar12;
  uint uVar13;
  uint uVar14;
  uint *puVar15;
  int local_38;
  uint **local_34;
  uint *local_30;
  uint **local_28;
  uint **local_24;
  uint *local_20;
  uint *local_1c;
  uint *local_18;
  int local_14;
  uint **local_10;
  undefined4 local_c;
  
  local_c = 0;
  FUN_00aa4a50(param_4);
  local_28 = (uint **)FUN_00aa4ae0(param_4);
  if (((((local_28 != (uint **)0x0) &&
        (local_24 = (uint **)FUN_00aa4ae0(param_4), local_24 != (uint **)0x0)) &&
       (local_10 = (uint **)FUN_00aa4ae0(param_4), local_10 != (uint **)0x0)) &&
      ((local_34 = (uint **)FUN_00aa4ae0(param_4), local_34 != (uint **)0x0 &&
       (iVar4 = FUN_00af3630(local_10,param_2,param_3), iVar4 != 0)))) &&
     ((local_10[1] != (uint *)0x0 && (iVar4 = FUN_00a9aba0(local_34,param_3), iVar4 != 0)))) {
    iVar4 = FUN_00a9a920(local_10);
    local_14 = FUN_00a9a920(local_34);
    puVar6 = param_3[1];
    if ((int)local_10[2] < (int)puVar6) {
      FUN_00a9ab60(local_10,puVar6);
    }
    puVar5 = local_10[1];
    puVar12 = *local_10;
    if ((int)puVar5 < (int)puVar6) {
      iVar7 = (int)puVar6 - (int)puVar5;
      puVar5 = puVar12 + (int)puVar5;
      for (; iVar7 != 0; iVar7 = iVar7 + -1) {
        *puVar5 = 0;
        puVar5 = puVar5 + 1;
      }
    }
    local_10[1] = puVar6;
    if ((int)local_28[2] < (int)puVar6) {
      FUN_00a9ab60(local_28,puVar6);
    }
    local_30 = *local_28;
    *local_30 = 1;
    puVar5 = puVar6;
    puVar15 = local_30;
    if (1 < (int)puVar6) {
      while( true ) {
        if ((uint *)((int)puVar5 + -1) == (uint *)0x0) break;
        puVar15[1] = 0;
        puVar5 = (uint *)((int)puVar5 + -1);
        puVar15 = puVar15 + 1;
      }
    }
    local_28[1] = puVar6;
    if ((int)local_24[2] < (int)puVar6) {
      FUN_00a9ab60(local_24,puVar6);
    }
    local_18 = *local_24;
    puVar5 = puVar6;
    puVar15 = local_18;
    if (0 < (int)puVar6) {
      for (; puVar5 != (uint *)0x0; puVar5 = (uint *)((int)puVar5 + -1)) {
        *puVar15 = 0;
        puVar15 = puVar15 + 1;
      }
    }
    local_24[1] = puVar6;
    local_1c = *local_34;
    local_20 = puVar12;
    while( true ) {
      while ((ppuVar3 = local_10, ppuVar2 = local_28, iVar4 != 0 &&
             (uVar14 = *puVar12, (uVar14 & 1) == 0))) {
        uVar10 = -(*local_30 & 1);
        uVar8 = *local_30 ^ **param_3 & uVar10;
        iVar7 = 0;
        if (puVar6 != (uint *)0x1 && -1 < (int)puVar6 + -1) {
          iVar11 = (int)puVar12 - (int)local_30;
          uVar9 = uVar8;
          uVar13 = uVar14;
          puVar5 = local_30;
          do {
            puVar15 = puVar5 + 1;
            uVar14 = *(uint *)(iVar11 + (int)puVar15);
            local_20[iVar7] = uVar14 << 0x1f | uVar13 >> 1;
            uVar8 = *(uint *)(((int)puVar15 - (int)local_30) + (int)*param_3) & uVar10 ^ *puVar15;
            *puVar5 = uVar8 << 0x1f | uVar9 >> 1;
            iVar7 = iVar7 + 1;
            uVar9 = uVar8;
            puVar12 = local_20;
            uVar13 = uVar14;
            puVar5 = puVar15;
          } while (iVar7 < (int)puVar6 + -1);
        }
        puVar12[iVar7] = uVar14 >> 1;
        local_30[iVar7] = uVar8 >> 1;
        iVar4 = iVar4 + -1;
      }
      if ((iVar4 < 0x21) && (*puVar12 == 1)) break;
      local_38 = iVar4;
      if (iVar4 < local_14) {
        local_10 = local_34;
        local_34 = ppuVar3;
        local_38 = local_14;
        local_28 = local_24;
        local_24 = ppuVar2;
        local_20 = local_1c;
        local_30 = local_18;
        puVar12 = local_1c;
        local_1c = *ppuVar3;
        local_18 = *ppuVar2;
        local_14 = iVar4;
      }
      if (0 < (int)puVar6) {
        puVar5 = puVar12;
        puVar15 = puVar6;
        do {
          *puVar5 = *puVar5 ^ *(uint *)(((int)local_1c - (int)puVar12) + (int)puVar5);
          puVar1 = (uint *)(((int)local_30 - (int)puVar12) + (int)puVar5);
          *puVar1 = *puVar1 ^ *(uint *)(((int)local_18 - (int)puVar12) + (int)puVar5);
          puVar5 = puVar5 + 1;
          puVar15 = (uint *)((int)puVar15 + -1);
        } while (puVar15 != (uint *)0x0);
      }
      iVar4 = local_38;
      if (local_38 == local_14) {
        iVar7 = (int)(local_38 + -1 + (local_38 + -1 >> 0x1f & 0x1fU)) >> 5;
        uVar14 = puVar12[iVar7];
        for (; (uVar14 == 0 && (iVar7 != 0)); iVar7 = iVar7 + -1) {
          uVar14 = puVar12[iVar7 + -1];
        }
        iVar4 = FUN_00a9a8d0(uVar14);
        iVar4 = iVar4 + iVar7 * 0x20;
      }
    }
    puVar6 = local_28[1];
    if (0 < (int)puVar6) {
      puVar5 = *local_28 + (int)puVar6 + -1;
      do {
        uVar14 = *puVar5;
        puVar5 = puVar5 + -1;
        if (uVar14 != 0) break;
        puVar6 = (uint *)((int)puVar6 + -1);
      } while (0 < (int)puVar6);
      local_28[1] = puVar6;
    }
    iVar4 = FUN_00a9aba0(param_1,local_28);
    if (iVar4 != 0) {
      local_c = 1;
    }
  }
  FUN_00aa4aa0(param_4);
  return local_c;
}



undefined4
FUN_00af3ca0(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  
  uVar3 = 0;
  FUN_00aa4a50(param_5);
  iVar1 = FUN_00aa4ae0(param_5);
  if (((iVar1 != 0) && (iVar2 = FUN_00af3930(iVar1,param_3,param_4,param_5), iVar2 != 0)) &&
     (iVar1 = FUN_00af3880(param_1,param_2,iVar1,param_4,param_5), iVar1 != 0)) {
    uVar3 = 1;
  }
  FUN_00aa4aa0(param_5);
  return uVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00af3d10(undefined4 param_1,undefined4 param_2,int **param_3,undefined4 param_4,
                 undefined4 param_5)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint local_4;
  
  local_4 = 0;
  if (param_3[1] == (int *)0x0) {
    uVar1 = FUN_00a9ac50(param_1,1);
    return uVar1;
  }
  if ((param_3[1] == (int *)0x1) && (**param_3 == 1)) {
    iVar2 = FUN_00a9aba0(param_1,param_2);
    return (uint)(iVar2 != 0);
  }
  FUN_00aa4a50(param_5);
  iVar2 = FUN_00aa4ae0(param_5);
  if ((iVar2 != 0) && (iVar3 = FUN_00af3180(iVar2,param_2,param_4), iVar3 != 0)) {
    iVar3 = FUN_00a9a920(param_3);
    for (iVar3 = iVar3 + -2; -1 < iVar3; iVar3 = iVar3 + -1) {
      iVar4 = FUN_00af33d0(iVar2,iVar2,param_4,param_5);
      if ((iVar4 == 0) ||
         ((iVar4 = FUN_00a9af90(param_3,iVar3), iVar4 != 0 &&
          (iVar4 = FUN_00af36a0(iVar2,iVar2,param_2,param_4,param_5), iVar4 == 0))))
      goto LAB_00af3e07;
    }
    iVar2 = FUN_00a9aba0(param_1,iVar2);
    if (iVar2 != 0) {
      local_4 = 1;
    }
  }
LAB_00af3e07:
  FUN_00aa4aa0(param_5);
  return local_4;
}



undefined4 FUN_00af3e20(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  
  uVar3 = 0;
  if (*param_3 == 0) {
    FUN_00a9ac50(param_1,0);
    return 1;
  }
  FUN_00aa4a50(param_4);
  iVar1 = FUN_00aa4ae0(param_4);
  if (iVar1 != 0) {
    iVar2 = FUN_00a9af00(iVar1,*param_3 + -1);
    if (iVar2 != 0) {
      uVar3 = FUN_00af3d10(param_1,param_2,iVar1,param_3,param_4);
    }
  }
  FUN_00aa4aa0(param_4);
  return uVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af3ea0(undefined4 param_1,undefined4 param_2,int *param_3,undefined4 param_4)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  int local_14;
  undefined4 local_c;
  int local_4;
  
  local_c = 0;
  local_14 = 0;
  if (*param_3 == 0) {
    FUN_00a9ac50(param_1,0);
    return 1;
  }
  FUN_00aa4a50(param_4);
  iVar1 = FUN_00aa4ae0(param_4);
  uVar2 = FUN_00aa4ae0(param_4);
  iVar3 = FUN_00aa4ae0(param_4);
  if ((iVar3 == 0) || (iVar4 = FUN_00af3180(iVar1,param_2,param_3), iVar4 == 0)) goto LAB_00af41be;
  if (*(int *)(iVar1 + 4) == 0) {
    FUN_00a9ac50(param_1,0);
  }
  else {
    if ((*(byte *)param_3 & 1) == 0) {
      uVar6 = FUN_00aa4ae0(param_4);
      uVar7 = FUN_00aa4ae0(param_4);
      iVar4 = FUN_00aa4ae0(param_4);
      if (iVar4 == 0) goto LAB_00af41be;
      do {
        iVar5 = FUN_00aa4d00(uVar6,*param_3,0,0);
        if ((iVar5 == 0) || (iVar5 = FUN_00af3180(uVar6,uVar6,param_3), iVar5 == 0))
        goto LAB_00af41be;
        FUN_00a9ac50(uVar2,0);
        iVar5 = FUN_00a9aba0(iVar3,uVar6);
        if (iVar5 == 0) goto LAB_00af41be;
        local_4 = 1;
        if (0 < *param_3 + -1) {
          do {
            iVar5 = FUN_00af33d0(uVar2,uVar2,param_3,param_4);
            if ((((iVar5 == 0) || (iVar5 = FUN_00af33d0(uVar7,iVar3,param_3,param_4), iVar5 == 0))
                || (iVar5 = FUN_00af36a0(iVar4,uVar7,iVar1,param_3,param_4), iVar5 == 0)) ||
               ((iVar5 = FUN_00af30e0(uVar2,uVar2,iVar4), iVar5 == 0 ||
                (iVar5 = FUN_00af30e0(iVar3,uVar7,uVar6), iVar5 == 0)))) goto LAB_00af41be;
            local_4 = local_4 + 1;
          } while (local_4 <= *param_3 + -1);
        }
        local_14 = local_14 + 1;
      } while ((*(int *)(iVar3 + 4) == 0) && (local_14 < 0x32));
      if (*(int *)(iVar3 + 4) == 0) {
        FUN_00a7f3c0(3,0x87,0x71,".\\crypto\\bn\\bn_gf2m.c",0x3ec);
        FUN_00aa4aa0(param_4);
        return 0;
      }
    }
    else {
      iVar4 = FUN_00a9aba0(uVar2,iVar1);
      if (iVar4 == 0) goto LAB_00af41be;
      iVar4 = 1;
      if (0 < (*param_3 + -1) / 2) {
        do {
          iVar5 = FUN_00af33d0(uVar2,uVar2,param_3,param_4);
          if (((iVar5 == 0) || (iVar5 = FUN_00af33d0(uVar2,uVar2,param_3,param_4), iVar5 == 0)) ||
             (iVar5 = FUN_00af30e0(uVar2,uVar2,iVar1), iVar5 == 0)) goto LAB_00af41be;
          iVar4 = iVar4 + 1;
        } while (iVar4 <= (*param_3 + -1) / 2);
      }
    }
    iVar4 = FUN_00af33d0(iVar3,uVar2,param_3,param_4);
    if ((iVar4 == 0) || (iVar4 = FUN_00af30e0(iVar3,uVar2,iVar3), iVar4 == 0)) goto LAB_00af41be;
    iVar1 = FUN_00a9ae10(iVar3,iVar1);
    if (iVar1 != 0) {
      FUN_00a7f3c0(3,0x87,0x74,".\\crypto\\bn\\bn_gf2m.c",0x3f5);
      FUN_00aa4aa0(param_4);
      return 0;
    }
    iVar1 = FUN_00a9aba0(param_1,uVar2);
    if (iVar1 == 0) goto LAB_00af41be;
  }
  local_c = 1;
LAB_00af41be:
  FUN_00aa4aa0(param_4);
  return local_c;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af41e0(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5)

{
  bool bVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  byte **ppbVar5;
  int iVar6;
  uint uVar7;
  int local_8;
  undefined4 local_4;
  
  local_8 = 0;
  local_4 = 0;
  FUN_00a7f4b0();
  if (param_5 == 0) {
    param_5 = FUN_00aa49c0();
    local_8 = param_5;
    if (param_5 == 0) {
      return 0;
    }
  }
  FUN_00aa4a50(param_5);
  uVar2 = FUN_00aa4ae0(param_5);
  iVar3 = FUN_00aa4ae0(param_5);
  uVar4 = FUN_00aa4ae0(param_5);
  ppbVar5 = (byte **)FUN_00aa4ae0(param_5);
  if (ppbVar5 == (byte **)0x0) goto LAB_00af43ee;
  iVar6 = FUN_00af3180(iVar3,param_3,param_1 + 0x17);
  if (iVar6 == 0) goto LAB_00af43ee;
  if (*(int *)(iVar3 + 4) == 0) {
    iVar6 = FUN_00af3e20(uVar4,param_1 + 0x22,param_1 + 0x17);
LAB_00af43c9:
    if (iVar6 == 0) goto LAB_00af43ee;
  }
  else {
    iVar6 = (**(code **)(*param_1 + 0x88))(param_1,uVar2,iVar3,param_5);
    if (iVar6 == 0) goto LAB_00af43ee;
    iVar6 = (**(code **)(*param_1 + 0x8c))(param_1,uVar2,param_1 + 0x22,uVar2,param_5);
    if (iVar6 == 0) goto LAB_00af43ee;
    iVar6 = FUN_00af30e0(uVar2,param_1 + 0x1d,uVar2);
    if (iVar6 == 0) goto LAB_00af43ee;
    iVar6 = FUN_00af30e0(uVar2,iVar3,uVar2);
    if (iVar6 == 0) goto LAB_00af43ee;
    iVar6 = FUN_00af3ea0(ppbVar5,uVar2,param_1 + 0x17,param_5);
    if (iVar6 == 0) {
      uVar7 = FUN_00a7f7d0();
      if (((uVar7 & 0xff000000) == 0x3000000) && ((uVar7 & 0xfff) == 0x74)) {
        FUN_00a7f4b0();
        FUN_00a7f3c0(0x10,0xa4,0x6e,".\\crypto\\ec\\ec2_oct.c",0x87);
      }
      else {
        FUN_00a7f3c0(0x10,0xa4,3,".\\crypto\\ec\\ec2_oct.c",0x8a);
      }
      goto LAB_00af43ee;
    }
    if (((int)ppbVar5[1] < 1) || (bVar1 = true, (**ppbVar5 & 1) == 0)) {
      bVar1 = false;
    }
    iVar6 = (**(code **)(*param_1 + 0x84))(param_1,uVar4,iVar3,ppbVar5,param_5);
    if (iVar6 == 0) goto LAB_00af43ee;
    if (bVar1 != (param_4 != 0)) {
      iVar6 = FUN_00af30e0(uVar4,uVar4,iVar3);
      goto LAB_00af43c9;
    }
  }
  iVar3 = FUN_00aa3c90(param_1,param_2,iVar3,uVar4,param_5);
  if (iVar3 != 0) {
    local_4 = 1;
  }
LAB_00af43ee:
  FUN_00aa4aa0(param_5);
  if (local_8 != 0) {
    FUN_00aa4a20(local_8);
  }
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00af4420(int *param_1,undefined4 param_2,int param_3,char *param_4,uint param_5,int param_6
                 )

{
  int iVar1;
  undefined4 uVar2;
  byte **ppbVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  uint _Size;
  uint local_c;
  int local_4;
  
  local_4 = 0;
  if (((param_3 != 2) && (param_3 != 4)) && (param_3 != 6)) {
    FUN_00a7f3c0(0x10,0xa1,0x68,".\\crypto\\ec\\ec2_oct.c",0xb2);
    return 0;
  }
  iVar1 = FUN_00aa3f40(param_1,param_2);
  if (iVar1 != 0) {
    if (param_4 != (char *)0x0) {
      if (param_5 == 0) {
        FUN_00a7f3c0(0x10,0xa1,100,".\\crypto\\ec\\ec2_oct.c",0xbd);
        return 0;
      }
      *param_4 = '\0';
    }
    return 1;
  }
  iVar1 = FUN_00aa3760(param_1);
  uVar6 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
  local_c = uVar6;
  if (param_3 != 2) {
    local_c = uVar6 * 2;
  }
  local_c = local_c + 1;
  if (param_4 == (char *)0x0) {
    return local_c;
  }
  if (param_5 < local_c) {
    FUN_00a7f3c0(0x10,0xa1,100,".\\crypto\\ec\\ec2_oct.c",0xcf);
    return 0;
  }
  if ((param_6 == 0) && (param_6 = FUN_00aa49c0(), local_4 = param_6, param_6 == 0)) {
    return 0;
  }
  FUN_00aa4a50(param_6);
  iVar1 = FUN_00aa4ae0(param_6);
  uVar2 = FUN_00aa4ae0(param_6);
  ppbVar3 = (byte **)FUN_00aa4ae0(param_6);
  if ((ppbVar3 == (byte **)0x0) ||
     (iVar4 = FUN_00aa3d70(param_1,param_2,iVar1,uVar2,param_6), iVar4 == 0)) goto LAB_00af46d0;
  *param_4 = (char)param_3;
  if ((param_3 != 4) && (*(int *)(iVar1 + 4) != 0)) {
    iVar4 = (**(code **)(*param_1 + 0x8c))(param_1,ppbVar3,uVar2,iVar1,param_6);
    if (iVar4 == 0) goto LAB_00af46d0;
    if ((0 < (int)ppbVar3[1]) && ((**ppbVar3 & 1) != 0)) {
      *param_4 = *param_4 + '\x01';
    }
  }
  iVar4 = 1;
  iVar5 = FUN_00a9a920(iVar1);
  uVar7 = uVar6 - ((int)(iVar5 + 7 + (iVar5 + 7 >> 0x1f & 7U)) >> 3);
  if (uVar6 < uVar7) {
    uVar2 = 0xef;
  }
  else {
    if (uVar7 != 0) {
      _memset(param_4 + 1,0,uVar7);
      iVar4 = uVar7 + 1;
    }
    iVar1 = FUN_00a9ad90(iVar1,param_4 + iVar4);
    uVar7 = iVar4 + iVar1;
    if (uVar7 == uVar6 + 1) {
      if ((param_3 == 4) || (param_3 == 6)) {
        iVar1 = FUN_00a9a920(uVar2);
        _Size = uVar6 - ((int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3);
        if (uVar6 < _Size) {
          uVar2 = 0x104;
          goto LAB_00af46b6;
        }
        if (_Size != 0) {
          _memset(param_4 + uVar7,0,_Size);
          uVar7 = uVar7 + _Size;
        }
        iVar1 = FUN_00a9ad90(uVar2,param_4 + uVar7);
        uVar7 = uVar7 + iVar1;
      }
      if (uVar7 == local_c) {
        FUN_00aa4aa0(param_6);
        if (local_4 != 0) {
          FUN_00aa4a20(local_4);
        }
        return local_c;
      }
      uVar2 = 0x112;
    }
    else {
      uVar2 = 0xfb;
    }
  }
LAB_00af46b6:
  FUN_00a7f3c0(0x10,0xa1,0x44,".\\crypto\\ec\\ec2_oct.c",uVar2);
LAB_00af46d0:
  FUN_00aa4aa0(param_6);
  if (local_4 != 0) {
    FUN_00aa4a20(local_4);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af4720(int *param_1,undefined4 param_2,byte *param_3,int param_4,int param_5)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  byte **ppbVar4;
  int iVar5;
  byte bVar6;
  undefined4 uVar7;
  int local_c;
  undefined4 local_8;
  
  local_c = 0;
  local_8 = 0;
  if (param_4 == 0) {
    FUN_00a7f3c0(0x10,0xa0,100,".\\crypto\\ec\\ec2_oct.c",0x135);
    return 0;
  }
  bVar1 = *param_3;
  bVar6 = bVar1 & 0xfe;
  if ((bVar1 & 0xfe) == 0) {
LAB_00af4792:
    if ((bVar1 & 1) != 0) {
      uVar7 = 0x144;
      goto LAB_00af47ab;
    }
  }
  else {
    if (bVar6 != 2) {
      if (bVar6 == 4) goto LAB_00af4792;
      if (bVar6 != 6) {
        uVar7 = 0x13f;
        goto LAB_00af47ab;
      }
    }
    if (bVar6 == 4) goto LAB_00af4792;
  }
  if ((bVar1 & 0xfe) == 0) {
    if (param_4 == 1) {
      uVar7 = FUN_00aa3b50(param_1,param_2);
      return uVar7;
    }
    uVar7 = 0x14c;
LAB_00af47ab:
    FUN_00a7f3c0(0x10,0xa0,0x66,".\\crypto\\ec\\ec2_oct.c",uVar7);
    return 0;
  }
  iVar2 = FUN_00aa3760(param_1);
  iVar5 = (int)(iVar2 + 7 + (iVar2 + 7 >> 0x1f & 7U)) >> 3;
  iVar2 = iVar5;
  if (bVar6 != 2) {
    iVar2 = iVar5 * 2;
  }
  if (param_4 != iVar2 + 1) {
    FUN_00a7f3c0(0x10,0xa0,0x66,".\\crypto\\ec\\ec2_oct.c",0x158);
    return 0;
  }
  if ((param_5 == 0) && (param_5 = FUN_00aa49c0(), local_c = param_5, param_5 == 0)) {
    return 0;
  }
  FUN_00aa4a50(param_5);
  uVar7 = FUN_00aa4ae0(param_5);
  uVar3 = FUN_00aa4ae0(param_5);
  ppbVar4 = (byte **)FUN_00aa4ae0(param_5);
  if ((ppbVar4 == (byte **)0x0) || (iVar2 = FUN_00a9acb0(param_3 + 1,iVar5,uVar7), iVar2 == 0))
  goto LAB_00af49c2;
  iVar2 = FUN_00a9ae10(uVar7,param_1 + 0x12);
  if (iVar2 < 0) {
    if (bVar6 == 2) {
      iVar2 = FUN_00ae8e50(param_1,param_2,uVar7,bVar1 & 1,param_5);
    }
    else {
      iVar2 = FUN_00a9acb0(param_3 + iVar5 + 1,iVar5,uVar3);
      if (iVar2 == 0) goto LAB_00af49c2;
      iVar2 = FUN_00a9ae10(uVar3,param_1 + 0x12);
      if (-1 < iVar2) {
        uVar7 = 0x179;
        goto LAB_00af48aa;
      }
      if (bVar6 == 6) {
        iVar2 = (**(code **)(*param_1 + 0x8c))(param_1,ppbVar4,uVar3,uVar7,param_5);
        if (iVar2 == 0) goto LAB_00af49c2;
        if (((int)ppbVar4[1] < 1) || ((**ppbVar4 & 1) == 0)) {
          bVar6 = 0;
        }
        else {
          bVar6 = 1;
        }
        if ((bVar1 & 1) != bVar6) {
          uVar7 = 0x181;
          goto LAB_00af48aa;
        }
      }
      iVar2 = FUN_00aa3c90(param_1,param_2,uVar7,uVar3,param_5);
    }
    if (iVar2 != 0) {
      iVar2 = FUN_00aa3fa0(param_1,param_2,param_5);
      if (iVar2 == 0) {
        FUN_00a7f3c0(0x10,0xa0,0x6b,".\\crypto\\ec\\ec2_oct.c",0x18b);
      }
      else {
        local_8 = 1;
      }
    }
  }
  else {
    uVar7 = 0x16c;
LAB_00af48aa:
    FUN_00a7f3c0(0x10,0xa0,0x66,".\\crypto\\ec\\ec2_oct.c",uVar7);
  }
LAB_00af49c2:
  FUN_00aa4aa0(param_5);
  if (local_c != 0) {
    FUN_00aa4a20(local_c);
  }
  return local_8;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af49f0(int *param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5)

{
  int *piVar1;
  code *pcVar2;
  bool bVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  byte **ppbVar7;
  int iVar8;
  uint uVar9;
  int local_c;
  undefined4 local_8;
  
  local_c = 0;
  local_8 = 0;
  FUN_00a7f4b0();
  if ((param_5 == 0) && (param_5 = FUN_00aa49c0(), local_c = param_5, param_5 == 0)) {
    return 0;
  }
  FUN_00aa4a50(param_5);
  uVar4 = FUN_00aa4ae0(param_5);
  uVar5 = FUN_00aa4ae0(param_5);
  uVar6 = FUN_00aa4ae0(param_5);
  ppbVar7 = (byte **)FUN_00aa4ae0(param_5);
  if (ppbVar7 == (byte **)0x0) goto LAB_00af4d55;
  piVar1 = param_1 + 0x12;
  iVar8 = FUN_00ad2c10(uVar6,param_3,piVar1,param_5);
  if (iVar8 == 0) goto LAB_00af4d55;
  if (*(int *)(*param_1 + 0x94) == 0) {
    iVar8 = (**(code **)(*param_1 + 0x88))(param_1,uVar5,param_3);
    if (iVar8 == 0) goto LAB_00af4d55;
    iVar8 = (**(code **)(*param_1 + 0x84))(param_1,uVar4,uVar5,param_3,param_5);
  }
  else {
    iVar8 = FUN_00ad2df0(uVar5,param_3,piVar1,param_5);
    if (iVar8 == 0) goto LAB_00af4d55;
    iVar8 = FUN_00ad2d70(uVar4,uVar5,param_3,piVar1,param_5);
  }
  if (iVar8 == 0) goto LAB_00af4d55;
  if (param_1[0x27] == 0) {
    pcVar2 = *(code **)(*param_1 + 0x94);
    if (pcVar2 == (code *)0x0) {
      iVar8 = (**(code **)(*param_1 + 0x84))(param_1,uVar5,param_1 + 0x1d,uVar6,param_5);
    }
    else {
      iVar8 = (*pcVar2)(param_1,uVar5,param_1 + 0x1d);
      if (iVar8 == 0) goto LAB_00af4d55;
      iVar8 = FUN_00ad2d70(uVar5,uVar5,uVar6,piVar1,param_5);
    }
    if (iVar8 == 0) goto LAB_00af4d55;
    iVar8 = FUN_00ad2ca0(uVar4,uVar4,uVar5,piVar1);
  }
  else {
    iVar8 = FUN_00ad2e30(uVar5,uVar6,piVar1);
    if ((iVar8 == 0) || (iVar8 = FUN_00ad2ca0(uVar5,uVar5,uVar6,piVar1), iVar8 == 0))
    goto LAB_00af4d55;
    iVar8 = FUN_00ad2d30(uVar4,uVar4,uVar5,piVar1);
  }
  if (iVar8 == 0) goto LAB_00af4d55;
  if (*(code **)(*param_1 + 0x94) == (code *)0x0) {
    iVar8 = FUN_00ad2ca0(uVar4,uVar4,param_1 + 0x22,piVar1);
  }
  else {
    iVar8 = (**(code **)(*param_1 + 0x94))(param_1,uVar5,param_1 + 0x22,param_5);
    if (iVar8 == 0) goto LAB_00af4d55;
    iVar8 = FUN_00ad2ca0(uVar4,uVar4,uVar5,piVar1);
  }
  if (iVar8 == 0) goto LAB_00af4d55;
  iVar8 = FUN_00af7570(ppbVar7,uVar4,piVar1,param_5);
  if (iVar8 == 0) {
    uVar9 = FUN_00a7f7d0();
    if (((uVar9 & 0xff000000) != 0x3000000) || ((uVar9 & 0xfff) != 0x6f)) {
      FUN_00a7f3c0(0x10,0xa9,3,".\\crypto\\ec\\ecp_oct.c",0x9f);
      goto LAB_00af4d55;
    }
    FUN_00a7f4b0();
    uVar4 = 0x9c;
LAB_00af4cd3:
    FUN_00a7f3c0(0x10,0xa9,0x6e,".\\crypto\\ec\\ecp_oct.c",uVar4);
  }
  else {
    if (((int)ppbVar7[1] < 1) || ((**ppbVar7 & 1) == 0)) {
      bVar3 = false;
    }
    else {
      bVar3 = true;
    }
    if ((param_4 != 0) != bVar3) {
      if (ppbVar7[1] == (byte *)0x0) {
        iVar8 = FUN_00af7300(uVar6,piVar1,param_5);
        if (iVar8 == -2) goto LAB_00af4d55;
        if (iVar8 == 1) {
          FUN_00a7f3c0(0x10,0xa9,0x6d,".\\crypto\\ec\\ecp_oct.c",0xad);
          goto LAB_00af4d55;
        }
        uVar4 = 0xb0;
        goto LAB_00af4cd3;
      }
      iVar8 = FUN_00ad15d0(ppbVar7,piVar1,ppbVar7);
      if (iVar8 == 0) goto LAB_00af4d55;
    }
    if (((int)ppbVar7[1] < 1) || ((**ppbVar7 & 1) == 0)) {
      bVar3 = false;
    }
    else {
      bVar3 = true;
    }
    if ((param_4 != 0) == bVar3) {
      iVar8 = FUN_00aa3c20(param_1,param_2,uVar6,ppbVar7,param_5);
      if (iVar8 != 0) {
        local_8 = 1;
      }
    }
    else {
      FUN_00a7f3c0(0x10,0xa9,0x44,".\\crypto\\ec\\ecp_oct.c",0xb7);
    }
  }
LAB_00af4d55:
  FUN_00aa4aa0(param_5);
  if (local_c != 0) {
    FUN_00aa4a20(local_c);
  }
  return local_8;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00af4d80(int param_1,undefined4 param_2,int param_3,char *param_4,uint param_5,int param_6)

{
  int iVar1;
  undefined4 uVar2;
  byte **ppbVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint _Size;
  uint local_c;
  int local_8;
  
  local_8 = 0;
  if (((param_3 != 2) && (param_3 != 4)) && (param_3 != 6)) {
    FUN_00a7f3c0(0x10,0x68,0x68,".\\crypto\\ec\\ecp_oct.c",0xd4);
    return 0;
  }
  iVar1 = FUN_00aa3f40(param_1,param_2);
  if (iVar1 != 0) {
    if (param_4 != (char *)0x0) {
      if (param_5 == 0) {
        FUN_00a7f3c0(0x10,0x68,100,".\\crypto\\ec\\ecp_oct.c",0xdf);
        return 0;
      }
      *param_4 = '\0';
    }
    return 1;
  }
  iVar1 = FUN_00a9a920(param_1 + 0x48);
  uVar5 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
  local_c = uVar5;
  if (param_3 != 2) {
    local_c = uVar5 * 2;
  }
  local_c = local_c + 1;
  if (param_4 == (char *)0x0) {
    return local_c;
  }
  if (param_5 < local_c) {
    FUN_00a7f3c0(0x10,0x68,100,".\\crypto\\ec\\ecp_oct.c",0xf1);
    return 0;
  }
  if ((param_6 == 0) && (param_6 = FUN_00aa49c0(), local_8 = param_6, param_6 == 0)) {
    return 0;
  }
  FUN_00aa4a50(param_6);
  uVar2 = FUN_00aa4ae0(param_6);
  ppbVar3 = (byte **)FUN_00aa4ae0(param_6);
  if ((ppbVar3 == (byte **)0x0) ||
     (iVar1 = FUN_00aa3d00(param_1,param_2,uVar2,ppbVar3,param_6), iVar1 == 0)) goto LAB_00af4ffa;
  if (((param_3 == 2) || (param_3 == 6)) && ((0 < (int)ppbVar3[1] && ((**ppbVar3 & 1) != 0)))) {
    *param_4 = (char)param_3 + '\x01';
  }
  else {
    *param_4 = (char)param_3;
  }
  iVar1 = 1;
  iVar4 = FUN_00a9a920(uVar2);
  uVar6 = uVar5 - ((int)(iVar4 + 7 + (iVar4 + 7 >> 0x1f & 7U)) >> 3);
  if (uVar5 < uVar6) {
    uVar2 = 0x10e;
  }
  else {
    if (uVar6 != 0) {
      _memset(param_4 + 1,0,uVar6);
      iVar1 = uVar6 + 1;
    }
    iVar4 = FUN_00a9ad90(uVar2,param_4 + iVar1);
    uVar6 = iVar1 + iVar4;
    if (uVar6 == uVar5 + 1) {
      if ((param_3 == 4) || (param_3 == 6)) {
        iVar1 = FUN_00a9a920(ppbVar3);
        _Size = uVar5 - ((int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3);
        if (uVar5 < _Size) {
          uVar2 = 0x123;
          goto LAB_00af4fe7;
        }
        if (_Size != 0) {
          _memset(param_4 + uVar6,0,_Size);
          uVar6 = uVar6 + _Size;
        }
        iVar1 = FUN_00a9ad90(ppbVar3,param_4 + uVar6);
        uVar6 = uVar6 + iVar1;
      }
      if (uVar6 == local_c) {
        FUN_00aa4aa0(param_6);
        if (local_8 != 0) {
          FUN_00aa4a20(local_8);
        }
        return local_c;
      }
      uVar2 = 0x131;
    }
    else {
      uVar2 = 0x11a;
    }
  }
LAB_00af4fe7:
  FUN_00a7f3c0(0x10,0x68,0x44,".\\crypto\\ec\\ecp_oct.c",uVar2);
LAB_00af4ffa:
  FUN_00aa4aa0(param_6);
  if (local_8 != 0) {
    FUN_00aa4a20(local_8);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af5050(int param_1,undefined4 param_2,byte *param_3,int param_4,int param_5)

{
  byte bVar1;
  int iVar2;
  byte **ppbVar3;
  byte bVar4;
  int iVar5;
  undefined4 uVar6;
  int local_8;
  undefined4 local_4;
  
  local_8 = 0;
  local_4 = 0;
  if (param_4 == 0) {
    FUN_00a7f3c0(0x10,0x67,100,".\\crypto\\ec\\ecp_oct.c",0x151);
    return 0;
  }
  bVar1 = *param_3;
  bVar4 = bVar1 & 0xfe;
  if ((bVar1 & 0xfe) == 0) {
LAB_00af50bf:
    if ((bVar1 & 1) != 0) {
      uVar6 = 0x160;
      goto LAB_00af50d8;
    }
  }
  else {
    if (bVar4 != 2) {
      if (bVar4 == 4) goto LAB_00af50bf;
      if (bVar4 != 6) {
        uVar6 = 0x15b;
        goto LAB_00af50d8;
      }
    }
    if (bVar4 == 4) goto LAB_00af50bf;
  }
  if ((bVar1 & 0xfe) == 0) {
    if (param_4 == 1) {
      uVar6 = FUN_00aa3b50(param_1,param_2);
      return uVar6;
    }
    uVar6 = 0x168;
LAB_00af50d8:
    FUN_00a7f3c0(0x10,0x67,0x66,".\\crypto\\ec\\ecp_oct.c",uVar6);
    return 0;
  }
  iVar2 = FUN_00a9a920(param_1 + 0x48);
  iVar5 = (int)(iVar2 + 7 + (iVar2 + 7 >> 0x1f & 7U)) >> 3;
  iVar2 = iVar5;
  if (bVar4 != 2) {
    iVar2 = iVar5 * 2;
  }
  if (param_4 != iVar2 + 1) {
    FUN_00a7f3c0(0x10,0x67,0x66,".\\crypto\\ec\\ecp_oct.c",0x174);
    return 0;
  }
  if ((param_5 == 0) && (param_5 = FUN_00aa49c0(), local_8 = param_5, param_5 == 0)) {
    return 0;
  }
  FUN_00aa4a50(param_5);
  uVar6 = FUN_00aa4ae0(param_5);
  ppbVar3 = (byte **)FUN_00aa4ae0(param_5);
  if ((ppbVar3 == (byte **)0x0) || (iVar2 = FUN_00a9acb0(param_3 + 1,iVar5,uVar6), iVar2 == 0))
  goto LAB_00af52be;
  iVar2 = FUN_00a9ae10(uVar6,param_1 + 0x48);
  if (-1 < iVar2) {
    uVar6 = 0x187;
    goto LAB_00af51d2;
  }
  if (bVar4 == 2) {
    iVar2 = FUN_00ae8da0(param_1,param_2,uVar6,bVar1 & 1,param_5);
  }
  else {
    iVar2 = FUN_00a9acb0(param_3 + iVar5 + 1,iVar5,ppbVar3);
    if (iVar2 == 0) goto LAB_00af52be;
    iVar2 = FUN_00a9ae10(ppbVar3,param_1 + 0x48);
    if (-1 < iVar2) {
      uVar6 = 0x194;
LAB_00af51d2:
      FUN_00a7f3c0(0x10,0x67,0x66,".\\crypto\\ec\\ecp_oct.c",uVar6);
      goto LAB_00af52be;
    }
    if (bVar4 == 6) {
      if (((int)ppbVar3[1] < 1) || ((**ppbVar3 & 1) == 0)) {
        bVar4 = 0;
      }
      else {
        bVar4 = 1;
      }
      if ((bVar1 & 1) != bVar4) {
        uVar6 = 0x19b;
        goto LAB_00af51d2;
      }
    }
    iVar2 = FUN_00aa3c20(param_1,param_2,uVar6,ppbVar3,param_5);
  }
  if (iVar2 != 0) {
    iVar2 = FUN_00aa3fa0(param_1,param_2,param_5);
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x10,0x67,0x6b,".\\crypto\\ec\\ecp_oct.c",0x1a5);
    }
    else {
      local_4 = 1;
    }
  }
LAB_00af52be:
  FUN_00aa4aa0(param_5);
  if (local_8 != 0) {
    FUN_00aa4a20(local_8);
  }
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af5350(int param_1,int param_2)

{
  bool bVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  
  iVar4 = 0;
  bVar1 = false;
  iVar2 = FUN_00a80ed0(*(undefined4 *)(param_1 + -0xc));
  if (0 < iVar2) {
    do {
      uVar3 = FUN_00a80ee0(*(undefined4 *)(param_1 + -0xc),iVar4);
      iVar2 = FUN_00af7da0(param_1 + -0x10,uVar3,*(undefined4 *)(param_2 + 4));
      if (iVar2 != 0) {
        iVar2 = FUN_00af7e30(param_1,param_2,uVar3,0);
        if (iVar2 == 0) {
          return 0;
        }
        bVar1 = true;
      }
      iVar4 = iVar4 + 1;
      iVar2 = FUN_00a80ed0(*(undefined4 *)(param_1 + -0xc));
    } while (iVar4 < iVar2);
    if (bVar1) {
      return 1;
    }
  }
  if ((*(int *)(param_1 + -8) != 0) &&
     (iVar2 = FUN_00af7e30(param_1,param_2,*(int *)(param_1 + -8),0), iVar2 == 0)) {
    return 0;
  }
  return 1;
}



undefined4 FUN_00af5410(void)

{
  int iVar1;
  int iVar2;
  int unaff_EDI;
  
  iVar2 = 0;
  iVar1 = FUN_00a80ed0(*(undefined4 *)(unaff_EDI + 4));
  if (0 < iVar1) {
    do {
      FUN_00a80ee0(*(undefined4 *)(unaff_EDI + 4),iVar2);
      iVar1 = FUN_00af5350();
      if (iVar1 == 0) {
        return 0;
      }
      iVar2 = iVar2 + 1;
      iVar1 = FUN_00a80ed0(*(undefined4 *)(unaff_EDI + 4));
    } while (iVar2 < iVar1);
  }
  return 1;
}



undefined4 FUN_00af5460(undefined4 param_1,int *param_2,uint param_3)

{
  uint uVar1;
  uint *puVar2;
  int iVar3;
  uint **unaff_EDI;
  
  if (param_3 == 0) {
    param_3 = (*unaff_EDI)[1];
  }
  puVar2 = (uint *)FUN_00a9f250(0,param_3,**unaff_EDI & 0x10);
  if (puVar2 != (uint *)0x0) {
    uVar1 = *(uint *)(*param_2 + 8);
    *puVar2 = *puVar2 | 4;
    puVar2[2] = uVar1;
    iVar3 = FUN_00af7e30(param_1,puVar2);
    if (iVar3 != 0) {
      return 1;
    }
    FUN_00a9f210(puVar2);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __thiscall FUN_00af54d0(uint **param_1_00,int *param_1)

{
  uint uVar1;
  uint *puVar2;
  int iVar3;
  int unaff_EBX;
  int iVar4;
  
  if (((*(uint *)(unaff_EBX + -4) & 0x400) == 0) && ((*(byte *)*param_1_00 & 1) != 0)) {
    uVar1 = (*param_1_00)[3];
    puVar2 = (uint *)FUN_00a80ed0(uVar1);
    if (param_1_00[2] != puVar2) {
      iVar4 = 0;
      iVar3 = FUN_00a80ed0(uVar1);
      if (0 < iVar3) {
        while( true ) {
          FUN_00a80ee0(uVar1,iVar4);
          iVar3 = FUN_00af7d20();
          if ((iVar3 == 0) && (iVar3 = FUN_00af5460(), iVar3 == 0)) break;
          iVar4 = iVar4 + 1;
          iVar3 = FUN_00a80ed0(uVar1);
          if (iVar3 <= iVar4) {
            return 1;
          }
        }
        return 0;
      }
    }
  }
  else if (param_1_00[2] == (uint *)0x0) {
    puVar2 = (uint *)FUN_00a9f250(0,(*param_1_00)[1],**param_1_00 & 0x10);
    if (puVar2 != (uint *)0x0) {
      uVar1 = *(uint *)(*param_1 + 8);
      *puVar2 = *puVar2 | 4;
      puVar2[2] = uVar1;
      iVar3 = FUN_00af7e30();
      if (iVar3 != 0) {
        return 1;
      }
      FUN_00a9f210(puVar2);
    }
    return 0;
  }
  return 1;
}



undefined4 __fastcall FUN_00af55d0(int param_1)

{
  int iVar1;
  int iVar2;
  undefined4 *unaff_EDI;
  
  iVar2 = 0;
  iVar1 = FUN_00a80ed0(*(undefined4 *)(param_1 + -0xc));
  if (0 < iVar1) {
    do {
      FUN_00a80ee0(*(undefined4 *)(param_1 + -0xc),iVar2);
      iVar1 = FUN_00af54d0();
      if (iVar1 == 0) {
        return 0;
      }
      iVar2 = iVar2 + 1;
      iVar1 = FUN_00a80ed0(*(undefined4 *)(param_1 + -0xc));
    } while (iVar2 < iVar1);
  }
  if ((*(int *)(param_1 + -8) != 0) &&
     (iVar1 = FUN_00af7e30(param_1,*unaff_EDI,*(int *)(param_1 + -8),0), iVar1 == 0)) {
    return 0;
  }
  return 1;
}



int __thiscall FUN_00af5650(int param_1_00,int *param_1)

{
  int *piVar1;
  undefined4 uVar2;
  int iVar3;
  byte **ppbVar4;
  int iVar5;
  int iVar6;
  
  uVar2 = *(undefined4 *)(param_1_00 + 4);
  if ((*(uint *)(param_1_00 + 0xc) & 0x400) != 0) {
    iVar3 = FUN_00a80ed0(uVar2);
    while (iVar3 = iVar3 + -1, -1 < iVar3) {
      ppbVar4 = (byte **)FUN_00a80ee0(uVar2,iVar3);
      if ((**ppbVar4 & 3) != 0) {
        *(int *)(ppbVar4[1] + 8) = *(int *)(ppbVar4[1] + 8) + -1;
        FUN_00a85120(ppbVar4);
        FUN_00a80da0(uVar2,iVar3);
      }
    }
  }
  do {
    iVar6 = param_1_00;
    uVar2 = *(undefined4 *)(iVar6 + -0xc);
    iVar3 = FUN_00a80ed0(uVar2);
    while (iVar3 = iVar3 + -1, -1 < iVar3) {
      iVar5 = FUN_00a80ee0(uVar2,iVar3);
      if (*(int *)(iVar5 + 8) == 0) {
        piVar1 = (int *)(*(int *)(iVar5 + 4) + 8);
        *piVar1 = *piVar1 + -1;
        FUN_00a85120(iVar5);
        FUN_00a80da0(uVar2,iVar3);
      }
    }
    iVar3 = *(int *)(iVar6 + -8);
    if ((iVar3 != 0) && (*(int *)(iVar3 + 8) == 0)) {
      if (*(int *)(iVar3 + 4) != 0) {
        piVar1 = (int *)(*(int *)(iVar3 + 4) + 8);
        *piVar1 = *piVar1 + -1;
      }
      FUN_00a85120(*(undefined4 *)(iVar6 + -8));
      *(undefined4 *)(iVar6 + -8) = 0;
    }
    param_1_00 = iVar6 + -0x10;
  } while (iVar6 + -0x10 != *param_1);
  return 2 - (uint)(*(int *)(iVar6 + -8) != 0);
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af5730(int *param_1,int *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  undefined4 *puVar7;
  int local_c;
  int *local_8;
  
  iVar3 = *(int *)(param_1[1] * 0x10 + -8 + *param_1);
  if (iVar3 == 0) {
    piVar6 = param_1 + 3;
  }
  else {
    piVar6 = param_2;
    if (param_1[3] == 0) {
      iVar2 = FUN_00af7cc0();
      param_1[3] = iVar2;
      if (iVar2 == 0) {
        return 0;
      }
    }
    else {
      iVar2 = FUN_00a81100(param_1[3],iVar3);
      if (iVar2 != -1) goto LAB_00af57a7;
    }
    iVar3 = FUN_00a80df0(param_1[3],iVar3);
    if (iVar3 == 0) {
      return 0;
    }
  }
LAB_00af57a7:
  local_8 = param_1 + 3;
  local_c = 1;
  if (1 < param_1[1]) {
    puVar7 = (undefined4 *)(*param_1 + 4);
    do {
      iVar3 = puVar7[1];
      if (iVar3 == 0) break;
      puVar1 = puVar7 + 4;
      puVar7 = puVar7 + 4;
      iVar5 = 0;
      iVar2 = FUN_00a80ed0(*puVar1);
      if (0 < iVar2) {
        do {
          iVar2 = FUN_00a80ee0(*puVar7,iVar5);
          if (*(int *)(iVar2 + 4) == iVar3) {
            if (*piVar6 == 0) {
              iVar4 = FUN_00af7cc0();
              *piVar6 = iVar4;
              if (iVar4 == 0) {
                return 0;
              }
            }
            else {
              iVar4 = FUN_00a81100(*piVar6,iVar2);
              if (iVar4 != -1) goto LAB_00af5834;
            }
            iVar2 = FUN_00a80df0(*piVar6,iVar2);
            if (iVar2 == 0) {
              return 0;
            }
          }
LAB_00af5834:
          iVar5 = iVar5 + 1;
          iVar2 = FUN_00a80ed0(*puVar7);
        } while (iVar5 < iVar2);
      }
      local_c = local_c + 1;
    } while (local_c < param_1[1]);
  }
  if (piVar6 == param_2) {
    return 2;
  }
  *param_2 = *local_8;
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af5890(int *param_1,undefined4 param_2)

{
  uint **ppuVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int iVar5;
  int local_4;
  
  iVar2 = FUN_00a80ed0();
  if (iVar2 < 1) {
    return 1;
  }
  ppuVar1 = *(uint ***)(param_1[1] * 0x10 + -8 + *param_1);
  iVar5 = 0;
  iVar2 = FUN_00a80ed0();
  if (0 < iVar2) {
    do {
      uVar3 = FUN_00a80ee0();
      iVar2 = FUN_00a877e0(uVar3);
      if (iVar2 == 0x2ea) {
        param_1[5] = param_1[5] | 2;
        return 1;
      }
      iVar5 = iVar5 + 1;
      iVar2 = FUN_00a80ed0();
    } while (iVar5 < iVar2);
  }
  local_4 = 0;
  iVar2 = FUN_00a80ed0();
  if (iVar2 < 1) {
    return 1;
  }
  do {
    uVar3 = FUN_00a80ee0();
    iVar2 = FUN_00af7cd0(param_2,uVar3);
    if (iVar2 == 0) {
      if (ppuVar1 != (uint **)0x0) {
        puVar4 = (undefined4 *)FUN_00a9f250(0,uVar3,**ppuVar1 & 0x10);
        if (puVar4 == (undefined4 *)0x0) {
          return 0;
        }
        puVar4[2] = (*ppuVar1)[2];
        *puVar4 = 0xc;
        iVar2 = FUN_00af7e30(0,puVar4,ppuVar1[1],param_1);
        goto LAB_00af5984;
      }
    }
    else {
LAB_00af5984:
      if (param_1[4] == 0) {
        iVar5 = FUN_00a81010();
        param_1[4] = iVar5;
        if (iVar5 == 0) {
          return 1;
        }
      }
      iVar2 = FUN_00a80df0(param_1[4],iVar2);
      if (iVar2 == 0) {
        return 0;
      }
    }
    local_4 = local_4 + 1;
    iVar2 = FUN_00a80ed0();
    if (iVar2 <= local_4) {
      return 1;
    }
  } while( true );
}



int FUN_00af59e0(void)

{
  undefined4 *puVar1;
  int iVar2;
  int iVar3;
  undefined4 *unaff_ESI;
  
  iVar3 = 1;
  puVar1 = (undefined4 *)*unaff_ESI;
  if (1 < (int)unaff_ESI[1]) {
    do {
      FUN_00a8d0c0(puVar1[4]);
      iVar2 = FUN_00af5410();
      if (iVar2 == 0) {
        return 0;
      }
      if (((puVar1[7] & 0x200) == 0) && (iVar2 = FUN_00af55d0(), iVar2 == 0)) {
        return 0;
      }
      iVar2 = FUN_00af5650();
      if (iVar2 != 1) {
        return iVar2;
      }
      iVar3 = iVar3 + 1;
      puVar1 = puVar1 + 4;
    } while (iVar3 < (int)unaff_ESI[1]);
  }
  return 1;
}



void FUN_00af5a70(int **param_1)

{
  int iVar1;
  int *piVar2;
  
  if (param_1 != (int **)0x0) {
    FUN_00a80ea0(param_1[3]);
    FUN_00a81120(param_1[4],&LAB_00af5a50);
    piVar2 = *param_1;
    iVar1 = 0;
    if (0 < (int)param_1[1]) {
      do {
        if (*piVar2 != 0) {
          FUN_00a812c0(*piVar2);
        }
        if (piVar2[1] != 0) {
          FUN_00a81120(piVar2[1],thunk_FUN_00a85120);
        }
        if (piVar2[2] != 0) {
          thunk_FUN_00a85120(piVar2[2]);
        }
        iVar1 = iVar1 + 1;
        piVar2 = piVar2 + 4;
      } while (iVar1 < (int)param_1[1]);
    }
    if (param_1[2] != (int *)0x0) {
      FUN_00a81120(param_1[2],FUN_00a9f210);
    }
    FUN_00a85120(*param_1);
    FUN_00a85120(param_1);
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int __thiscall FUN_00af5b10(uint param_1_00,int **param_1,undefined4 param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  int **ppiVar5;
  int *piVar6;
  undefined4 uVar7;
  int iVar8;
  int iVar9;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  
  local_10 = 1;
  *param_1 = (int *)0x0;
  piVar2 = (int *)FUN_00a80ed0(param_2);
  if ((param_1_00 & 0x100) == 0) {
    local_14 = (int)piVar2 + 1;
  }
  else {
    local_14 = 0;
  }
  if ((param_1_00 & 0x200) == 0) {
    local_c = (int)piVar2 + 1;
  }
  else {
    local_c = 0;
  }
  if ((param_1_00 & 0x400) == 0) {
    local_8 = (int)piVar2 + 1;
  }
  else {
    local_8 = 0;
  }
  if (piVar2 == (int *)0x1) {
    return 1;
  }
  iVar1 = (int)piVar2 + -2;
  iVar8 = local_14;
  iVar9 = iVar1;
  if (-1 < iVar1) {
    do {
      iVar3 = FUN_00a80ee0(param_2,iVar9);
      FUN_00a92360(iVar3,0xffffffff,0xffffffff);
      iVar4 = FUN_00a8d0c0(iVar3);
      if (iVar4 == 0) {
        return 0;
      }
      if ((*(uint *)(iVar3 + 0x28) & 0x800) == 0) {
        if ((local_10 == 1) && (*(int *)(iVar4 + 4) == 0)) {
          local_10 = 2;
        }
      }
      else {
        local_10 = -1;
      }
      if (0 < iVar8) {
        if ((*(uint *)(iVar3 + 0x28) & 0x20) == 0) {
          iVar8 = iVar8 + -1;
          local_14 = iVar8;
        }
        iVar3 = *(int *)(iVar4 + 0xc);
        if ((iVar3 != -1) && (iVar3 < iVar8)) {
          iVar8 = iVar3;
          local_14 = iVar3;
        }
      }
      iVar9 = iVar9 + -1;
    } while (-1 < iVar9);
    if (local_10 != 1) {
      if (local_10 != 2) {
        return local_10;
      }
      if (iVar8 == 0) {
        return 6;
      }
      return 2;
    }
  }
  ppiVar5 = (int **)FUN_00a84f80(0x18,".\\crypto\\x509v3\\pcy_tree.c",0xde);
  if (ppiVar5 != (int **)0x0) {
    ppiVar5[5] = (int *)0x0;
    piVar6 = (int *)FUN_00a84f80((int)piVar2 << 4,".\\crypto\\x509v3\\pcy_tree.c",0xe4);
    *ppiVar5 = piVar6;
    ppiVar5[1] = (int *)0x0;
    ppiVar5[2] = (int *)0x0;
    ppiVar5[3] = (int *)0x0;
    ppiVar5[4] = (int *)0x0;
    if (piVar6 == (int *)0x0) {
      FUN_00a85120(ppiVar5);
      return 0;
    }
    _memset(piVar6,0,(int)piVar2 << 4);
    piVar6 = *ppiVar5;
    ppiVar5[1] = piVar2;
    uVar7 = FUN_00a87490(0x2ea,0);
    iVar8 = FUN_00a9f250(0,uVar7);
    if ((iVar8 != 0) && (iVar8 = FUN_00af7e30(piVar6,iVar8,0,ppiVar5), iVar8 != 0)) {
      for (; -1 < iVar1; iVar1 = iVar1 + -1) {
        iVar8 = FUN_00a80ee0(param_2,iVar1);
        piVar2 = (int *)FUN_00a8d0c0(iVar8);
        FUN_00a7fe40(iVar8 + 0x10,1,3,".\\crypto\\x509v3\\pcy_tree.c",0x102);
        piVar6[4] = iVar8;
        if (*piVar2 == 0) {
          piVar6[7] = piVar6[7] | 0x200;
        }
        if (local_c == 0) {
          if (((*(byte *)(iVar8 + 0x28) & 0x20) == 0) || (iVar1 == 0)) {
            piVar6[7] = piVar6[7] | 0x200;
          }
        }
        else {
          if ((*(byte *)(iVar8 + 0x28) & 0x20) == 0) {
            local_c = local_c + -1;
          }
          iVar9 = piVar2[2];
          if ((-1 < iVar9) && (iVar9 < local_c)) {
            local_c = iVar9;
          }
        }
        if (local_8 == 0) {
          piVar6[7] = piVar6[7] | 0x400;
        }
        else {
          if ((*(byte *)(iVar8 + 0x28) & 0x20) == 0) {
            local_8 = local_8 + -1;
          }
          iVar8 = piVar2[4];
          if ((-1 < iVar8) && (iVar8 < local_8)) {
            local_8 = iVar8;
          }
        }
        piVar6 = piVar6 + 4;
      }
      *param_1 = (int *)ppiVar5;
      return (uint)(local_14 == 0) * 4 + 1;
    }
    FUN_00af5a70(ppiVar5);
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00af5de0(int *param_1,int *param_2,undefined4 param_3)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int local_8;
  undefined4 local_4;
  
  *param_1 = 0;
  local_8 = 0;
  local_4 = 0;
  *param_2 = 0;
  uVar1 = FUN_00af5b10(&local_8,param_3);
  iVar4 = local_8;
  switch(uVar1) {
  case 0:
    goto switchD_00af5e20_caseD_0;
  case 1:
    if (local_8 == 0) {
      return 1;
    }
    goto LAB_00af5e53;
  case 2:
    goto LAB_00af5f0c;
  case 5:
    *param_2 = 1;
    break;
  case 6:
    *param_2 = 1;
    return -2;
  case 0xffffffff:
    return -1;
  }
  if (local_8 != 0) {
LAB_00af5e53:
    iVar2 = FUN_00af59e0();
    if (0 < iVar2) {
      if (iVar2 == 2) {
        FUN_00af5a70(iVar4);
        return (-(uint)(*param_2 != 0) & 0xfffffffd) + 1;
      }
      iVar2 = FUN_00af5730(iVar4,&local_4);
      uVar1 = local_4;
      if ((iVar2 != 0) && (iVar3 = FUN_00af5890(iVar4,local_4), iVar3 != 0)) {
        if (iVar2 == 2) {
          FUN_00a80ea0(uVar1);
        }
        if (iVar4 != 0) {
          *param_1 = iVar4;
        }
        if (*param_2 != 0) {
          uVar1 = FUN_00af7f00(iVar4);
          iVar4 = FUN_00a80ed0(uVar1);
          if (iVar4 < 1) {
            return -2;
          }
        }
LAB_00af5f0c:
        return 1;
      }
    }
  }
  FUN_00af5a70(iVar4);
switchD_00af5e20_caseD_0:
  return 0;
}



undefined * FUN_00af5f40(void)

{
  return &DAT_03243564;
}



undefined4 FUN_00af5f80(int param_1)

{
  if (param_1 == 0) {
    return 0;
  }
  FUN_00a918e0(*(undefined4 *)(param_1 + 0x20));
  *(undefined4 *)(param_1 + 0x20) = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  return 1;
}



int FUN_00af60d0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 *param_4)

{
  undefined4 *puVar1;
  int iVar2;
  
  puVar1 = *(undefined4 **)(param_1 + 0x20);
  switch(param_2) {
  case 1:
    if (*(int *)(param_1 + 0xc) == 0) {
      return 0;
    }
    iVar2 = FUN_00a91380(puVar1,*puVar1,0);
    if (iVar2 < 1) {
      return iVar2;
    }
  default:
    iVar2 = FUN_00a83650(*(undefined4 *)(param_1 + 0x24),param_2,param_3,param_4);
    return iVar2;
  case 0xc:
    iVar2 = FUN_00a916d0(param_4[8],puVar1);
    if (iVar2 == 0) {
      return 0;
    }
    break;
  case 0x65:
    FUN_00a832f0(param_1,0xf);
    iVar2 = FUN_00a83650(*(undefined4 *)(param_1 + 0x24),param_2,param_3,param_4);
    FUN_00a838a0(param_1);
    return iVar2;
  case 0x6f:
    iVar2 = FUN_00a91380(puVar1,param_4,0);
    if (0 < iVar2) {
      *(undefined4 *)(param_1 + 0xc) = 1;
      return iVar2;
    }
    return iVar2;
  case 0x70:
    if (*(int *)(param_1 + 0xc) == 0) {
      return 0;
    }
    *param_4 = *puVar1;
    return 1;
  case 0x78:
    *param_4 = puVar1;
    break;
  case 0x94:
    if (*(int *)(param_1 + 0xc) == 0) {
      return 0;
    }
    *(undefined4 **)(param_1 + 0x20) = param_4;
    return 1;
  }
  *(undefined4 *)(param_1 + 0xc) = 1;
  return 1;
}



undefined * FUN_00af62e0(void)

{
  return &DAT_0324358c;
}



undefined4 FUN_00af6320(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  return param_3;
}



void FUN_00af6390(void)

{
  FUN_00aec020();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00af63b0(int param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int *piVar4;
  uint local_60;
  undefined local_5c [24];
  undefined4 local_44;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_60;
  FUN_00a91330(local_5c);
  iVar1 = *(int *)(param_1 + 4);
  iVar2 = FUN_00aec0e0(local_5c,param_2,*(undefined4 *)(iVar1 + 4));
  if ((iVar2 != 0) && (iVar2 = FUN_00a91540(local_5c,&local_44,&local_60), 0 < iVar2)) {
    if (param_3 == 0) {
      FUN_00a90c30(*(undefined4 *)(iVar1 + 0xc),&local_44,local_60);
    }
    else if (local_60 == **(uint **)(iVar1 + 0xc)) {
      piVar3 = (int *)(*(uint **)(iVar1 + 0xc))[2];
      piVar4 = &local_44;
      for (; 3 < local_60; local_60 = local_60 - 4) {
        if (*piVar4 != *piVar3) goto LAB_00af648b;
        piVar3 = piVar3 + 1;
        piVar4 = piVar4 + 1;
      }
      if ((local_60 != 0) &&
         ((*(char *)piVar3 != *(char *)piVar4 ||
          ((1 < local_60 &&
           ((*(char *)((int)piVar3 + 1) != *(char *)((int)piVar4 + 1) ||
            ((2 < local_60 && (*(char *)((int)piVar3 + 2) != *(char *)((int)piVar4 + 2))))))))))) {
LAB_00af648b:
        FUN_00a7f3c0(0x2e,0x75,0x9e,".\\crypto\\cms\\cms_dd.c",0x84);
      }
    }
    else {
      FUN_00a7f3c0(0x2e,0x75,0x79,".\\crypto\\cms\\cms_dd.c",0x7e);
    }
  }
  FUN_00a915c0(local_5c);
  ___security_check_cookie_4();
  return;
}



undefined * FUN_00af64f0(void)

{
  return &DAT_032435b4;
}



int FUN_00af6750(int param_1,int param_2,int param_3)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  piVar1 = *(int **)(param_1 + 0x20);
  FUN_00a832f0(param_1,0xf);
  for (iVar4 = *piVar1 - piVar1[1]; 0 < iVar4; iVar4 = iVar4 - iVar2) {
    iVar2 = FUN_00a833e0(*(undefined4 *)(param_1 + 0x24),piVar1[1] + 0xa0 + (int)piVar1,iVar4);
    if (iVar2 < 1) {
      FUN_00a838a0(param_1);
      return iVar2;
    }
    piVar1[1] = piVar1[1] + iVar2;
  }
  if ((param_2 != 0) && (0 < param_3)) {
    piVar1[1] = 0;
    iVar4 = param_3;
    do {
      iVar2 = 0x1000;
      if (iVar4 < 0x1001) {
        iVar2 = iVar4;
      }
      FUN_00aabdb0(piVar1 + 5,piVar1 + 0x28,piVar1,param_2,iVar2);
      param_2 = param_2 + iVar2;
      iVar4 = iVar4 - iVar2;
      iVar2 = *piVar1;
      piVar1[1] = 0;
      for (; 0 < iVar2; iVar2 = iVar2 - iVar3) {
        iVar3 = FUN_00a833e0(*(undefined4 *)(param_1 + 0x24),piVar1[1] + 0xa0 + (int)piVar1,iVar2);
        if (iVar3 < 1) {
          FUN_00a838a0(param_1);
          if (param_3 == iVar4) {
            return iVar3;
          }
          return param_3 - iVar4;
        }
        piVar1[1] = piVar1[1] + iVar3;
      }
      *piVar1 = 0;
      piVar1[1] = 0;
    } while (0 < iVar4);
    FUN_00a838a0(param_1);
    return param_3;
  }
  return 0;
}



undefined4 FUN_00af6b10(undefined4 param_1,int param_2)

{
  undefined4 uVar1;
  
  if (param_2 == 0) {
    param_2 = FUN_00aead80(0,0);
    if (param_2 == 0) {
      FUN_00a7f3c0(0x21,0x87,0x41,".\\crypto\\pkcs7\\pk7_attr.c",0x8f);
      return 0;
    }
  }
  uVar1 = FUN_00aee0a0(param_1,0x34,0x17,param_2);
  return uVar1;
}



undefined4 FUN_00af6b60(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_00a888d0();
  if (iVar1 != 0) {
    iVar2 = FUN_00a90c30(iVar1,param_2,param_3);
    if (iVar2 != 0) {
      iVar2 = FUN_00aee0a0(param_1,0x33,4,iVar1);
      if (iVar2 != 0) {
        return 1;
      }
    }
    FUN_00a888e0(iVar1);
  }
  return 0;
}



undefined ** FUN_00af6bb0(void)

{
  return &PTR_s_OpenSSL_ECDH_method_032435dc;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00af6bc0(void *param_1,uint param_2,undefined4 param_3,undefined4 param_4,code *param_5)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  undefined4 uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  void *local_18;
  size_t local_10;
  
  local_10 = 0xffffffff;
  local_18 = (void *)0x0;
  if (0x7fffffff < param_2) {
    FUN_00a7f3c0(0x2b,100,0x41,".\\crypto\\ecdh\\ech_ossl.c",0x7b);
    return 0xffffffff;
  }
  iVar1 = FUN_00aa49c0();
  if (iVar1 == 0) {
    return 0xffffffff;
  }
  FUN_00aa4a50(iVar1);
  uVar2 = FUN_00aa4ae0(iVar1);
  uVar3 = FUN_00aa4ae0(iVar1);
  uVar5 = param_4;
  iVar4 = FUN_00aa3450(param_4);
  if (iVar4 == 0) {
    FUN_00a7f3c0(0x2b,100,100,".\\crypto\\ecdh\\ech_ossl.c",0x87);
    goto LAB_00af6e4d;
  }
  uVar5 = FUN_00a7fa30(uVar5);
  iVar6 = FUN_00aa3960(uVar5);
  if (iVar6 == 0) {
    uVar5 = 0x8e;
LAB_00af6c80:
    FUN_00a7f3c0(0x2b,100,0x41,".\\crypto\\ecdh\\ech_ossl.c",uVar5);
  }
  else {
    iVar4 = FUN_00aa4160(uVar5,iVar6,0,param_3,iVar4,iVar1);
    if (iVar4 == 0) {
      uVar5 = 0x94;
    }
    else {
      uVar7 = FUN_00a814c0(uVar5);
      iVar4 = FUN_00a7fa30(uVar7);
      if (iVar4 == 0x196) {
        iVar4 = FUN_00aa3d00(uVar5,iVar6,uVar2,uVar3);
        if (iVar4 != 0) {
LAB_00af6d1d:
          iVar4 = FUN_00aa3760(uVar5);
          uVar9 = (int)(iVar4 + 7 + (iVar4 + 7 >> 0x1f & 7U)) >> 3;
          iVar4 = FUN_00a9a920(uVar2);
          uVar10 = (int)(iVar4 + 7 + (iVar4 + 7 >> 0x1f & 7U)) >> 3;
          if (uVar9 < uVar10) {
            FUN_00a7f3c0(0x2b,100,0x44,".\\crypto\\ecdh\\ech_ossl.c",0xaf);
          }
          else {
            local_18 = (void *)FUN_00a84f80(uVar9,".\\crypto\\ecdh\\ech_ossl.c",0xb2);
            if (local_18 == (void *)0x0) {
              uVar5 = 0xb4;
              goto LAB_00af6c80;
            }
            _memset(local_18,0,uVar9 - uVar10);
            uVar8 = FUN_00a9ad90(uVar2,(uVar9 - uVar10) + (int)local_18);
            if (uVar10 == uVar8) {
              if (param_5 == (code *)0x0) {
                if (uVar9 < param_2) {
                  param_2 = uVar9;
                }
                local_10 = param_2;
                _memcpy(param_1,local_18,param_2);
              }
              else {
                iVar4 = (*param_5)(local_18,uVar9,param_1,&param_2);
                if (iVar4 == 0) {
                  FUN_00a7f3c0(0x2b,100,0x66,".\\crypto\\ecdh\\ech_ossl.c",0xc3);
                }
                else {
                  local_10 = param_2;
                }
              }
            }
            else {
              FUN_00a7f3c0(0x2b,100,3,".\\crypto\\ecdh\\ech_ossl.c",0xbb);
            }
          }
          goto LAB_00af6e3f;
        }
        uVar5 = 0x9c;
      }
      else {
        iVar4 = FUN_00aa3d70(uVar5,iVar6,uVar2,uVar3,iVar1);
        if (iVar4 != 0) goto LAB_00af6d1d;
        uVar5 = 0xa5;
      }
    }
    FUN_00a7f3c0(0x2b,100,0x65,".\\crypto\\ecdh\\ech_ossl.c",uVar5);
  }
LAB_00af6e3f:
  if (iVar6 != 0) {
    FUN_00aa3a10(iVar6);
  }
LAB_00af6e4d:
  FUN_00aa4aa0(iVar1);
  FUN_00aa4a20(iVar1);
  if (local_18 != (void *)0x0) {
    FUN_00a85120(local_18);
  }
  return local_10;
}



void FUN_00af6e80(void)

{
  FUN_00a98620(&DAT_032edbf4,1);
  return;
}



ulonglong FUN_00af6ec0(void)

{
  uint in_EAX;
  uint unaff_EBX;
  uint local_24 [4];
  uint local_14;
  uint local_10;
  uint local_c;
  uint local_8;
  
  local_24[0] = 0;
  local_24[2] = in_EAX * 2 & 0x7fffffff;
  local_24[1] = in_EAX & 0x3fffffff;
  local_24[3] = in_EAX & 0x3fffffff ^ local_24[2];
  local_c = local_24[2] ^ in_EAX << 2;
  local_10 = local_24[3] ^ local_c;
  local_14 = in_EAX << 2;
  local_8 = local_24[2] ^ local_10;
  return (ulonglong)local_24[unaff_EBX & 7] ^ (ulonglong)local_24[unaff_EBX >> 3 & 7] << 3 ^
         (ulonglong)local_24[unaff_EBX >> 6 & 7] << 6 ^ (ulonglong)local_24[unaff_EBX >> 9 & 7] << 9
         ^ (ulonglong)local_24[unaff_EBX >> 0xc & 7] << 0xc ^
         (ulonglong)local_24[unaff_EBX >> 0xf & 7] << 0xf ^
         (ulonglong)local_24[unaff_EBX >> 0x12 & 7] << 0x12 ^
         (ulonglong)local_24[unaff_EBX >> 0x15 & 7] << 0x15 ^
         (ulonglong)local_24[unaff_EBX >> 0x18 & 7] << 0x18 ^
         (ulonglong)(-(uint)((int)(in_EAX * 2) < 0) & unaff_EBX) << 0x1e ^
         (ulonglong)local_24[unaff_EBX >> 0x1b & 7] << 0x1b ^
         (ulonglong)(-(uint)((int)in_EAX < 0) & unaff_EBX) << 0x1f ^
         (ulonglong)local_24[unaff_EBX >> 0x1e] << 0x1e;
}



undefined8 FUN_00af7000(void)

{
  uint in_EAX;
  uint uVar1;
  uint unaff_EBX;
  uint uVar2;
  uint local_24 [4];
  uint local_14;
  uint local_10;
  uint local_c;
  uint local_8;
  
  local_24[0] = 0;
  local_24[2] = in_EAX * 2 & 0x7fffffff;
  local_24[1] = in_EAX & 0x3fffffff;
  local_24[3] = in_EAX & 0x3fffffff ^ local_24[2];
  local_c = local_24[2] ^ in_EAX * 4;
  local_10 = local_24[3] ^ local_c;
  local_14 = in_EAX * 4;
  uVar1 = (int)in_EAX >> 0x1f & unaff_EBX;
  uVar2 = (int)(in_EAX * 2) >> 0x1f & unaff_EBX;
  local_8 = local_24[2] ^ local_10;
  return CONCAT44(uVar1 >> 1 ^ uVar2 >> 2 ^ local_24[unaff_EBX >> 3 & 7] >> 0x1d ^
                  local_24[unaff_EBX >> 6 & 7] >> 0x1a ^ local_24[unaff_EBX >> 9 & 7] >> 0x17 ^
                  local_24[unaff_EBX >> 0xc & 7] >> 0x14 ^ local_24[unaff_EBX >> 0xf & 7] >> 0x11 ^
                  local_24[unaff_EBX >> 0x12 & 7] >> 0xe ^ local_24[unaff_EBX >> 0x15 & 7] >> 0xb ^
                  local_24[unaff_EBX >> 0x18 & 7] >> 8 ^ local_24[unaff_EBX >> 0x1b & 7] >> 5 ^
                  local_24[unaff_EBX >> 0x1e] >> 2,
                  uVar1 << 0x1f ^ uVar2 << 0x1e ^ local_24[unaff_EBX & 7] ^
                  local_24[unaff_EBX >> 3 & 7] << 3 ^ local_24[unaff_EBX >> 6 & 7] << 6 ^
                  local_24[unaff_EBX >> 9 & 7] << 9 ^ local_24[unaff_EBX >> 0xc & 7] << 0xc ^
                  local_24[unaff_EBX >> 0xf & 7] << 0xf ^ local_24[unaff_EBX >> 0x12 & 7] << 0x12 ^
                  local_24[unaff_EBX >> 0x15 & 7] << 0x15 ^ local_24[unaff_EBX >> 0x18 & 7] << 0x18
                  ^ local_24[unaff_EBX >> 0x1b & 7] << 0x1b ^ local_24[unaff_EBX >> 0x1e] << 0x1e);
}



void FUN_00af7180(undefined (*param_1) [16],undefined4 param_2,undefined4 param_3,undefined4 param_4
                 ,undefined4 param_5)

{
  undefined auVar1 [16];
  undefined auVar2 [16];
  uint uVar3;
  uint uVar4;
  uint uVar5;
  ulonglong uVar6;
  ulonglong uVar7;
  ulonglong uVar8;
  undefined auVar9 [16];
  undefined8 uVar10;
  undefined8 uVar11;
  undefined8 uVar12;
  
  if ((DAT_032f16d0 & 0x800000) == 0) {
    uVar10 = FUN_00af7000();
    uVar3 = (uint)((ulonglong)uVar10 >> 0x20);
    uVar11 = FUN_00af7000();
    uVar12 = FUN_00af7000();
    uVar4 = (uint)((ulonglong)uVar12 >> 0x20);
    *(uint *)*param_1 = (uint)uVar11;
    *(uint *)(*param_1 + 0xc) = uVar3;
    uVar5 = uVar4 ^ (uint)((ulonglong)uVar11 >> 0x20) ^ (uint)uVar10 ^ uVar3;
    *(uint *)(*param_1 + 8) = uVar5;
    *(uint *)(*param_1 + 4) = (uint)uVar12 ^ uVar4 ^ (uint)uVar11 ^ uVar3 ^ uVar5;
    return;
  }
  if (((DAT_032f16d0 & 0x1000000) != 0) && ((DAT_032f16d4 & 2) != 0)) {
    auVar9._0_8_ = CONCAT44(param_2,param_3);
    auVar9._8_4_ = param_5;
    auVar9._12_4_ = param_4;
    auVar1._8_8_ = 0;
    auVar1._0_8_ = auVar9._8_8_;
    auVar2._8_8_ = 0;
    auVar2._0_8_ = auVar9._0_8_;
    auVar9 = (undefined  [16])0x0;
    for (uVar3 = 0; uVar3 < 0x40; uVar3 = uVar3 + 1) {
      if ((auVar1 & (undefined  [16])0x1 << uVar3) != (undefined  [16])0x0) {
        auVar9 = auVar9 ^ auVar2 << uVar3;
      }
    }
    *param_1 = auVar9;
    return;
  }
  uVar6 = FUN_00af6ec0();
  uVar7 = FUN_00af6ec0();
  uVar8 = FUN_00af6ec0();
  uVar8 = uVar8 ^ uVar6 ^ uVar7;
  *(ulonglong *)*param_1 = uVar8 << 0x20 ^ uVar7;
  *(ulonglong *)(*param_1 + 8) = uVar8 >> 0x20 ^ uVar6;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00af7300(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  uint *puVar1;
  uint **ppuVar2;
  uint **ppuVar3;
  uint **ppuVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  bool bVar8;
  int local_4;
  
  local_4 = -2;
  bVar8 = false;
  FUN_00aa4a50(param_3);
  ppuVar3 = (uint **)FUN_00aa4ae0(param_3);
  ppuVar4 = (uint **)FUN_00aa4ae0(param_3);
  uVar7 = 0;
  if (ppuVar4 != (uint **)0x0) {
    iVar5 = FUN_00a9aba0(ppuVar3,param_1);
    bVar8 = iVar5 == 0;
    if (!bVar8) {
      iVar5 = FUN_00a9aba0(ppuVar4,param_2);
      bVar8 = iVar5 == 0;
      if (!bVar8) {
        if (ppuVar4[1] == (uint *)0x0) {
          if ((ppuVar3[1] == (uint *)0x1) && (**ppuVar3 == 1)) {
            local_4 = 1;
            goto LAB_00af754e;
          }
        }
        else if (((0 < (int)ppuVar3[1]) && ((*(byte *)*ppuVar3 & 1) != 0)) ||
                ((0 < (int)ppuVar4[1] && ((*(byte *)*ppuVar4 & 1) != 0)))) {
          iVar5 = FUN_00a9af90(ppuVar4,0);
          while (iVar5 == 0) {
            uVar7 = uVar7 + 1;
            iVar5 = FUN_00a9af90(ppuVar4,uVar7);
          }
          iVar5 = FUN_00a9bc70(ppuVar4,ppuVar4,uVar7);
          bVar8 = iVar5 == 0;
          if (!bVar8) {
            if ((uVar7 & 1) == 0) {
              local_4 = 1;
            }
            else if (ppuVar3[1] == (uint *)0x0) {
              local_4 = 0;
            }
            else {
              local_4 = (&DAT_00dcaa54)[**ppuVar3 & 7];
            }
            if ((ppuVar4[3] != (uint *)0x0) && (ppuVar4[3] = (uint *)0x0, ppuVar3[3] != (uint *)0x0)
               ) {
              local_4 = -local_4;
            }
            puVar1 = ppuVar3[1];
            while (ppuVar2 = ppuVar3, puVar1 != (uint *)0x0) {
              uVar7 = 0;
              iVar5 = FUN_00a9af90(ppuVar2,0);
              while (iVar5 == 0) {
                uVar7 = uVar7 + 1;
                iVar5 = FUN_00a9af90(ppuVar2,uVar7);
              }
              iVar5 = FUN_00a9bc70(ppuVar2,ppuVar2,uVar7);
              bVar8 = iVar5 == 0;
              if (bVar8) goto LAB_00af754e;
              if ((uVar7 & 1) != 0) {
                if (ppuVar4[1] == (uint *)0x0) {
                  uVar7 = 0;
                }
                else {
                  uVar7 = **ppuVar4;
                }
                local_4 = (&DAT_00dcaa54)[uVar7 & 7] * local_4;
              }
              if (ppuVar2[3] == (uint *)0x0) {
                if (ppuVar2[1] == (uint *)0x0) {
                  uVar7 = 0;
                }
                else {
                  uVar7 = **ppuVar2;
                }
              }
              else if (ppuVar2[1] == (uint *)0x0) {
                uVar7 = 0xffffffff;
              }
              else {
                uVar7 = ~**ppuVar2;
              }
              if (ppuVar4[1] == (uint *)0x0) {
                uVar6 = 0;
              }
              else {
                uVar6 = **ppuVar4;
              }
              if ((uVar6 & uVar7 & 2) != 0) {
                local_4 = -local_4;
              }
              iVar5 = FUN_00ad2c10(ppuVar4,ppuVar4,ppuVar2,param_3);
              bVar8 = iVar5 == 0;
              if (bVar8) goto LAB_00af754e;
              ppuVar2[3] = (uint *)0x0;
              puVar1 = ppuVar4[1];
              ppuVar3 = ppuVar4;
              ppuVar4 = ppuVar2;
            }
            if (((ppuVar4[1] != (uint *)0x1) || (**ppuVar4 != 1)) || (ppuVar4[3] != (uint *)0x0)) {
              local_4 = 0;
            }
          }
          goto LAB_00af754e;
        }
        local_4 = 0;
      }
    }
  }
LAB_00af754e:
  FUN_00aa4aa0(param_3);
  iVar5 = -2;
  if (!bVar8) {
    iVar5 = local_4;
  }
  return iVar5;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00af7570(int param_1,int **param_2,uint **param_3,undefined4 param_4)

{
  uint *puVar1;
  undefined4 uVar2;
  int **ppiVar3;
  int iVar4;
  int **ppiVar5;
  int iVar6;
  int **ppiVar7;
  int iVar8;
  code *pcVar9;
  undefined4 uVar10;
  int local_1c;
  int local_14;
  int local_8;
  
  puVar1 = param_3[1];
  local_1c = param_1;
  iVar4 = param_1;
  if ((((int)puVar1 < 1) || ((**param_3 & 1) == 0)) || ((puVar1 == (uint *)0x1 && (**param_3 == 1)))
     ) {
    if ((puVar1 != (uint *)0x1) || (**param_3 != 2)) {
      FUN_00a7f3c0(3,0x79,0x70,".\\crypto\\bn\\bn_sqrt.c",0x5e);
      return 0;
    }
    if ((param_1 != 0) || (iVar4 = FUN_00a9aa10(), iVar4 != 0)) {
      uVar2 = FUN_00a9af90(param_2,0);
      iVar6 = FUN_00a9ac50(iVar4,uVar2);
joined_r0x00af7c64:
      if (iVar6 != 0) {
        return iVar4;
      }
      if (iVar4 == param_1) {
        return 0;
      }
      FUN_00a9a9b0(iVar4);
      return 0;
    }
  }
  else if ((param_2[1] == (int *)0x0) ||
          (((param_2[1] == (int *)0x1 && (**param_2 == 1)) && (param_2[3] == (int *)0x0)))) {
    if ((param_1 != 0) || (iVar4 = FUN_00a9aa10(), iVar4 != 0)) {
      if ((param_2[1] == (int *)0x1) && ((**param_2 == 1 && (param_2[3] == (int *)0x0)))) {
        uVar2 = 1;
      }
      else {
        uVar2 = 0;
      }
      iVar6 = FUN_00a9ac50(iVar4,uVar2);
      goto joined_r0x00af7c64;
    }
  }
  else {
    FUN_00aa4a50(param_4);
    uVar2 = FUN_00aa4ae0(param_4);
    ppiVar3 = (int **)FUN_00aa4ae0(param_4);
    iVar4 = FUN_00aa4ae0(param_4);
    ppiVar5 = (int **)FUN_00aa4ae0(param_4);
    iVar6 = FUN_00aa4ae0(param_4);
    ppiVar7 = (int **)FUN_00aa4ae0(param_4);
    if (ppiVar7 == (int **)0x0) goto LAB_00af7803;
    if ((param_1 == 0) && (local_1c = FUN_00a9aa10(), local_1c == 0)) goto LAB_00af781a;
    iVar8 = FUN_00ad2c10(uVar2,param_2,param_3,param_4);
    if (iVar8 == 0) goto LAB_00af7803;
    local_8 = 1;
    iVar8 = FUN_00a9af90(param_3,1);
    if (iVar8 == 0) {
      do {
        local_8 = local_8 + 1;
        iVar8 = FUN_00a9af90(param_3,local_8);
      } while (iVar8 == 0);
      if (local_8 == 1) goto LAB_00af7691;
      if (local_8 == 2) {
        iVar8 = FUN_00ad2e30(ppiVar5,uVar2);
        if ((iVar8 != 0) && (iVar8 = FUN_00a9bc70(iVar4,param_3,3), iVar8 != 0)) {
          *(undefined4 *)(iVar4 + 0xc) = 0;
          iVar4 = FUN_00acfe20(ppiVar3,ppiVar5,iVar4,param_3,param_4);
          if ((iVar4 == 0) ||
             ((((iVar4 = FUN_00ad2df0(ppiVar7,ppiVar3,param_3,param_4), iVar4 == 0 ||
                (iVar4 = FUN_00ad2d70(ppiVar5,ppiVar5,ppiVar7,param_3,param_4), iVar4 == 0)) ||
               (iVar4 = FUN_00a9b8a0(ppiVar5,1), iVar4 == 0)) ||
              ((iVar4 = FUN_00ad2d70(iVar6,uVar2,ppiVar3,param_3,param_4), iVar4 == 0 ||
               (iVar4 = FUN_00ad2d70(iVar6,iVar6,ppiVar5,param_3,param_4), iVar4 == 0))))))
          goto LAB_00af7803;
LAB_00af77ab:
          iVar4 = FUN_00a9aba0(local_1c,iVar6);
          goto LAB_00af77bd;
        }
      }
      else {
        iVar8 = FUN_00a9aba0(iVar4,param_3);
        if (iVar8 == 0) goto LAB_00af7803;
        *(undefined4 *)(iVar4 + 0xc) = 0;
        local_14 = 2;
        do {
          if (local_14 < 0x16) {
LAB_00af78c6:
            iVar8 = FUN_00a9ac50(ppiVar7,local_14);
            if (iVar8 == 0) goto LAB_00af7803;
          }
          else {
            uVar10 = FUN_00a9a920(param_3,0,0);
            iVar8 = FUN_00aa4d20(ppiVar7,uVar10);
            if (iVar8 == 0) goto LAB_00af7803;
            iVar8 = FUN_00a9ae10(ppiVar7,param_3);
            if (-1 < iVar8) {
              pcVar9 = FUN_00ad17f0;
              if (param_3[3] == (uint *)0x0) {
                pcVar9 = FUN_00ad1720;
              }
              iVar8 = (*pcVar9)(ppiVar7,ppiVar7,param_3);
              if (iVar8 == 0) goto LAB_00af7803;
            }
            if (ppiVar7[1] == (int *)0x0) goto LAB_00af78c6;
          }
          iVar8 = FUN_00af7300(ppiVar7,iVar4,param_4);
          if (iVar8 < -1) goto LAB_00af7803;
          if (iVar8 == 0) {
            uVar10 = 0xec;
            uVar2 = 0x70;
            goto LAB_00af77f7;
          }
          if (iVar8 != 1) {
            if (iVar8 != -1) {
              uVar10 = 0xf9;
              uVar2 = 0x71;
              goto LAB_00af77f7;
            }
            iVar8 = FUN_00a9bc70(iVar4,iVar4,local_8);
            if ((iVar8 == 0) ||
               (iVar8 = FUN_00acfe20(ppiVar7,ppiVar7,iVar4,param_3,param_4), iVar8 == 0))
            goto LAB_00af7803;
            if ((ppiVar7[1] == (int *)0x1) && ((**ppiVar7 == 1 && (ppiVar7[3] == (int *)0x0)))) {
              uVar10 = 0x105;
              uVar2 = 0x70;
              goto LAB_00af77f7;
            }
            iVar4 = FUN_00a9ba80(ppiVar5,iVar4);
            if (iVar4 == 0) goto LAB_00af7803;
            if (ppiVar5[1] == (int *)0x0) {
              iVar4 = FUN_00ad2c10(ppiVar5,uVar2);
              if (iVar4 == 0) goto LAB_00af7803;
              if (ppiVar5[1] == (int *)0x0) {
                FUN_00a9ac50(local_1c,0);
                FUN_00aa4aa0(param_4);
                return local_1c;
              }
              iVar4 = FUN_00a9ac50(iVar6,1);
              if (iVar4 == 0) goto LAB_00af7803;
            }
            else {
              iVar4 = FUN_00acfe20(iVar6,uVar2,ppiVar5,param_3,param_4);
              if (iVar4 == 0) goto LAB_00af7803;
              if (*(int *)(iVar6 + 4) == 0) {
                FUN_00a9ac50(local_1c,0);
                FUN_00aa4aa0(param_4);
                return local_1c;
              }
            }
            iVar4 = FUN_00ad2df0(ppiVar3,iVar6,param_3,param_4);
            if ((iVar4 == 0) ||
               (iVar4 = FUN_00ad2d70(ppiVar3,ppiVar3,uVar2,param_3,param_4), iVar4 == 0))
            goto LAB_00af7803;
            iVar4 = FUN_00ad2d70(iVar6,iVar6,uVar2,param_3,param_4);
            goto joined_r0x00af7a63;
          }
          local_14 = local_14 + 1;
        } while (local_14 < 0x52);
        uVar10 = 0xf9;
        uVar2 = 0x71;
LAB_00af77f7:
        FUN_00a7f3c0(3,0x79,uVar2,".\\crypto\\bn\\bn_sqrt.c",uVar10);
      }
    }
    else {
LAB_00af7691:
      iVar8 = FUN_00a9bc70(iVar4,param_3,2);
      if (iVar8 != 0) {
        *(undefined4 *)(iVar4 + 0xc) = 0;
        iVar8 = FUN_00a9b7f0(iVar4,1);
        if (iVar8 != 0) {
          iVar4 = FUN_00acfe20(local_1c,uVar2,iVar4,param_3,param_4);
LAB_00af77bd:
          if ((iVar4 != 0) && (iVar4 = FUN_00ad2df0(iVar6,local_1c,param_3,param_4), iVar4 != 0)) {
            iVar4 = FUN_00a9ae60(iVar6,uVar2);
            if (iVar4 == 0) goto LAB_00af7822;
            uVar10 = 0x178;
LAB_00af77f0:
            uVar2 = 0x6f;
            goto LAB_00af77f7;
          }
        }
      }
    }
LAB_00af7803:
    if ((local_1c != 0) && (local_1c != param_1)) {
      FUN_00a9a950(local_1c);
    }
  }
LAB_00af781a:
  local_1c = 0;
LAB_00af7822:
  FUN_00aa4aa0(param_4);
  return local_1c;
joined_r0x00af7a63:
  if (iVar4 == 0) goto LAB_00af7803;
  if (((ppiVar3[1] == (int *)0x1) && (**ppiVar3 == 1)) && (ppiVar3[3] == (int *)0x0))
  goto LAB_00af77ab;
  local_14 = 1;
  iVar4 = FUN_00ad2df0(ppiVar5,ppiVar3,param_3,param_4);
  while( true ) {
    if (iVar4 == 0) goto LAB_00af7803;
    if (((ppiVar5[1] == (int *)0x1) && (**ppiVar5 == 1)) && (ppiVar5[3] == (int *)0x0)) break;
    local_14 = local_14 + 1;
    if (local_14 == local_8) {
      uVar10 = 0x15a;
      goto LAB_00af77f0;
    }
    iVar4 = FUN_00ad2d70(ppiVar5,ppiVar5,ppiVar5,param_3,param_4);
  }
  iVar4 = FUN_00a9aba0(ppiVar5,ppiVar7);
  if (iVar4 == 0) goto LAB_00af7803;
  local_8 = local_8 - local_14;
  while (local_8 = local_8 + -1, 0 < local_8) {
    iVar4 = FUN_00ad2df0(ppiVar5,ppiVar5,param_3,param_4);
    if (iVar4 == 0) goto LAB_00af7803;
  }
  iVar4 = FUN_00ad2d70(ppiVar7,ppiVar5,ppiVar5,param_3,param_4);
  if ((iVar4 == 0) || (iVar4 = FUN_00ad2d70(iVar6,iVar6,ppiVar5,param_3,param_4), iVar4 == 0))
  goto LAB_00af7803;
  iVar4 = FUN_00ad2d70(ppiVar3,ppiVar3,ppiVar7,param_3,param_4);
  local_8 = local_14;
  goto joined_r0x00af7a63;
}



void FUN_00af7cc0(void)

{
  FUN_00a80c80(&LAB_00af7c90);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00af7cd0(undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined *local_1c [3];
  undefined local_10 [4];
  undefined4 local_c;
  undefined4 uStack_4;
  
  uStack_4 = 0xaf7cda;
  local_1c[0] = local_10;
  local_c = param_2;
  iVar1 = FUN_00a81100(param_1,local_1c);
  if (iVar1 == -1) {
    return 0;
  }
  uVar2 = FUN_00a80ee0(param_1,iVar1);
  return uVar2;
}



int * FUN_00af7d20(int param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  
  iVar1 = FUN_00a80ed0(*(undefined4 *)(param_1 + 4));
  if (0 < iVar1) {
    iVar1 = 0;
    do {
      piVar2 = (int *)FUN_00a80ee0(*(undefined4 *)(param_1 + 4),iVar1);
      if (piVar2[1] == param_2) {
        iVar3 = FUN_00a90180(*(undefined4 *)(*piVar2 + 4),param_3);
        if (iVar3 == 0) {
          return piVar2;
        }
      }
      iVar1 = iVar1 + 1;
      iVar3 = FUN_00a80ed0(*(undefined4 *)(param_1 + 4));
    } while (iVar1 < iVar3);
  }
  return (int *)0x0;
}



void thunk_FUN_00a85120(undefined4 param_1)

{
  if (DAT_032ed4ac != (code *)0x0) {
    (*DAT_032ed4ac)(param_1,0);
  }
  (*(code *)PTR__free_03242a54)(param_1);
  if (DAT_032ed4ac != (code *)0x0) {
    (*DAT_032ed4ac)(0,1);
  }
  return;
}



bool FUN_00af7da0(int param_1,byte **param_2,undefined4 param_3)

{
  byte *pbVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  
  pbVar1 = *param_2;
  if (((*(uint *)(param_1 + 0xc) & 0x400) == 0) && ((*pbVar1 & 3) != 0)) {
    iVar4 = 0;
    iVar2 = FUN_00a80ed0(*(undefined4 *)(pbVar1 + 0xc));
    if (0 < iVar2) {
      do {
        uVar3 = FUN_00a80ee0(*(undefined4 *)(pbVar1 + 0xc),iVar4);
        iVar2 = FUN_00a90180(uVar3,param_3);
        if (iVar2 == 0) {
          return true;
        }
        iVar4 = iVar4 + 1;
        iVar2 = FUN_00a80ed0(*(undefined4 *)(pbVar1 + 0xc));
      } while (iVar4 < iVar2);
    }
    return false;
  }
  iVar2 = FUN_00a90180(*(undefined4 *)(pbVar1 + 4),param_3);
  return iVar2 == 0;
}



int * FUN_00af7e30(int param_1,int param_2,int param_3,int param_4)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  
  piVar1 = (int *)FUN_00a84f80(0xc,".\\crypto\\x509v3\\pcy_node.c",0x76);
  if (piVar1 == (int *)0x0) {
    return (int *)0x0;
  }
  *piVar1 = param_2;
  piVar1[1] = param_3;
  piVar1[2] = 0;
  if (param_1 != 0) {
    iVar2 = FUN_00a877e0(*(undefined4 *)(param_2 + 4));
    if (iVar2 == 0x2ea) {
      if (*(int *)(param_1 + 8) != 0) goto LAB_00af7edd;
      *(int **)(param_1 + 8) = piVar1;
    }
    else {
      if (*(int *)(param_1 + 4) == 0) {
        uVar3 = FUN_00a80c80(&LAB_00af7c90);
        *(undefined4 *)(param_1 + 4) = uVar3;
      }
      if (*(int *)(param_1 + 4) == 0) goto LAB_00af7edd;
      iVar2 = FUN_00a80df0(*(int *)(param_1 + 4),piVar1);
      if (iVar2 == 0) goto LAB_00af7edd;
    }
  }
  if (param_4 != 0) {
    if (*(int *)(param_4 + 8) == 0) {
      uVar3 = FUN_00a81010();
      *(undefined4 *)(param_4 + 8) = uVar3;
    }
    if (*(int *)(param_4 + 8) != 0) {
      iVar2 = FUN_00a80df0(*(int *)(param_4 + 8),param_2);
      if (iVar2 != 0) goto LAB_00af7eed;
    }
LAB_00af7edd:
    FUN_00a85120(piVar1);
    return (int *)0x0;
  }
LAB_00af7eed:
  if (param_3 != 0) {
    *(int *)(param_3 + 8) = *(int *)(param_3 + 8) + 1;
  }
  return piVar1;
}



int FUN_00af7f00(int param_1)

{
  if (param_1 == 0) {
    return param_1;
  }
  if ((*(byte *)(param_1 + 0x14) & 2) != 0) {
    return *(int *)(param_1 + 0xc);
  }
  return *(int *)(param_1 + 0x10);
}



int FUN_00af7f70(int param_1,code *param_2,undefined4 param_3)

{
  int *piVar1;
  int iVar2;
  undefined4 *unaff_ESI;
  
  piVar1 = unaff_ESI + 0xd;
  if ((int)unaff_ESI[0xd] < 1) {
    return 1;
  }
  iVar2 = FUN_00a833e0(*(undefined4 *)(param_1 + 0x24),unaff_ESI[0xc] + unaff_ESI[0xe],
                       unaff_ESI[0xd]);
  if (0 < iVar2) {
    while (*piVar1 = *piVar1 - iVar2, 0 < *piVar1) {
      unaff_ESI[0xe] = unaff_ESI[0xe] + iVar2;
      iVar2 = FUN_00a833e0(*(undefined4 *)(param_1 + 0x24),unaff_ESI[0xc] + unaff_ESI[0xe],*piVar1);
      if (iVar2 < 1) {
        return iVar2;
      }
    }
    if (param_2 != (code *)0x0) {
      (*param_2)(param_1,unaff_ESI + 0xc,piVar1,unaff_ESI + 0xf);
    }
    *unaff_ESI = param_3;
    unaff_ESI[0xe] = 0;
  }
  return iVar2;
}



undefined4 FUN_00af8000(code *param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 *unaff_ESI;
  
  if (param_1 != (code *)0x0) {
    iVar1 = (*param_1)();
    if (iVar1 == 0) {
      FUN_00a832f0();
      return 0;
    }
  }
  if (0 < (int)unaff_ESI[0xd]) {
    *unaff_ESI = param_2;
    return 1;
  }
  *unaff_ESI = param_3;
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00af8300(int param_1,int param_2,int param_3)

{
  int *piVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  int iVar4;
  int local_8;
  undefined4 local_4;
  
  local_4 = 0xaf830a;
  if (((param_2 == 0) || (param_3 < 0)) || (*(int *)(param_1 + 0x24) == 0)) {
    return 0;
  }
  puVar2 = *(undefined4 **)(param_1 + 0x20);
  if (puVar2 == (undefined4 *)0x0) {
    return 0;
  }
  uVar3 = *puVar2;
  local_8 = 0;
  do {
    switch(uVar3) {
    case 0:
      iVar4 = FUN_00af8000(puVar2[8],1,2);
      if (iVar4 == 0) {
        return 0;
      }
      break;
    case 1:
      iVar4 = FUN_00af7f70(param_1,puVar2[9],2);
      if (iVar4 < 1) {
LAB_00af8393:
        FUN_00a832f0(param_1,0xf);
        FUN_00a838a0(param_1);
        if (local_8 < 1) {
          local_8 = iVar4;
        }
        return local_8;
      }
      break;
    case 2:
      iVar4 = FUN_00a90b80(0,param_3,puVar2[7]);
      puVar2[4] = iVar4 - param_3;
      if ((int)puVar2[2] < iVar4 - param_3) {
        FUN_00a7fd60(".\\crypto\\asn1\\bio_asn1.c",0xed,"ctx->buflen <= ctx->bufsize");
      }
      local_4 = puVar2[1];
      FUN_00a90fd0(&local_4,0,param_3,puVar2[7],puVar2[6]);
      puVar2[5] = param_3;
      *puVar2 = 3;
      break;
    case 3:
      iVar4 = FUN_00a833e0(*(undefined4 *)(param_1 + 0x24),puVar2[1] + puVar2[3],puVar2[4]);
      if (iVar4 < 1) goto LAB_00af8393;
      piVar1 = puVar2 + 4;
      *piVar1 = *piVar1 - iVar4;
      if (*piVar1 == 0) {
        puVar2[3] = 0;
        *puVar2 = 4;
      }
      else {
        puVar2[3] = puVar2[3] + iVar4;
      }
      break;
    case 4:
      iVar4 = puVar2[5];
      if (param_3 <= (int)puVar2[5]) {
        iVar4 = param_3;
      }
      iVar4 = FUN_00a833e0(*(undefined4 *)(param_1 + 0x24),param_2,iVar4);
      if (0 < iVar4) {
        puVar2[5] = puVar2[5] - iVar4;
        local_8 = local_8 + iVar4;
        param_2 = param_2 + iVar4;
        param_3 = param_3 - iVar4;
        if (puVar2[5] == 0) {
          *puVar2 = 2;
        }
        if (param_3 == 0) goto LAB_00af8393;
      }
      break;
    default:
      FUN_00a832f0(param_1,0xf);
      return 0;
    }
    uVar3 = *puVar2;
  } while( true );
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

size_t FUN_00af85a0(int param_1,void *param_2,size_t param_3)

{
  void *_Dst;
  char cVar1;
  size_t *psVar2;
  size_t sVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  char *pcVar7;
  size_t sVar8;
  char *pcVar9;
  size_t local_10;
  size_t sStack_c;
  size_t local_8;
  int iStack_4;
  
  iStack_4 = 0xaf85aa;
  local_10 = 0;
  if (param_2 == (void *)0x0) {
    return 0;
  }
  psVar2 = *(size_t **)(param_1 + 0x20);
  if ((psVar2 == (size_t *)0x0) || (*(int *)(param_1 + 0x24) == 0)) {
    return 0;
  }
  FUN_00a832f0(param_1,0xf);
  if (psVar2[4] != 2) {
    psVar2[4] = 2;
    *psVar2 = 0;
    psVar2[1] = 0;
    psVar2[2] = 0;
    FUN_00aabfe0(psVar2 + 7);
  }
  if (0 < (int)*psVar2) {
    if ((int)*psVar2 < (int)psVar2[1]) {
      FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0xa9,"ctx->buf_len >= ctx->buf_off");
    }
    local_10 = *psVar2 - psVar2[1];
    if ((int)param_3 < (int)(*psVar2 - psVar2[1])) {
      local_10 = param_3;
    }
    if (0x5dd < (int)(psVar2[1] + local_10)) {
      FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0xac,"ctx->buf_off+i < (int)sizeof(ctx->buf)");
    }
    _memcpy(param_2,(void *)(psVar2[1] + 0x7c + (int)psVar2),local_10);
    psVar2[1] = psVar2[1] + local_10;
    param_2 = (void *)((int)param_2 + local_10);
    param_3 = param_3 - local_10;
    if (*psVar2 == psVar2[1]) {
      *psVar2 = 0;
      psVar2[1] = 0;
    }
  }
  local_8 = 0;
  sVar3 = local_8;
joined_r0x00af869d:
  while( true ) {
    local_8 = sVar3;
    if (((int)param_3 < 1) || ((int)psVar2[6] < 1)) goto LAB_00af893d;
    local_8 = FUN_00a83320(*(undefined4 *)(param_1 + 0x24),psVar2[2] + 0x65a + (int)psVar2,
                           0x400 - psVar2[2]);
    sVar8 = local_8;
    if ((int)local_8 < 1) {
      iVar4 = FUN_00a83300(*(undefined4 *)(param_1 + 0x24),8);
      if ((iVar4 != 0) || (psVar2[6] = local_8, psVar2[2] == 0)) goto LAB_00af893d;
      sVar8 = 0;
      sVar3 = local_8;
    }
    local_8 = sVar3;
    psVar2[2] = psVar2[2] + sVar8;
    uVar6 = psVar2[2];
    sVar3 = local_8;
    if (psVar2[5] == 0) goto LAB_00af884c;
    uVar5 = FUN_00a83300(param_1,0xffffffff);
    if ((uVar5 & 0x100) != 0) break;
    if (psVar2[5] == 0) goto LAB_00af884c;
    pcVar7 = (char *)((int)psVar2 + 0x65a);
    sStack_c = 0;
    pcVar9 = pcVar7;
    if (0 < (int)uVar6) {
LAB_00af8750:
      cVar1 = *pcVar7;
      pcVar7 = pcVar7 + 1;
      if (cVar1 != '\n') goto LAB_00af87a1;
      if (psVar2[3] != 0) {
        psVar2[3] = 0;
        pcVar9 = pcVar7;
        goto LAB_00af87a1;
      }
      iVar4 = FUN_00aac2e0(psVar2 + 7,psVar2 + 0x1f,&iStack_4,pcVar9,(int)pcVar7 - (int)pcVar9);
      if (((iVar4 < 1) && (iStack_4 == 0)) && (psVar2[5] != 0)) {
        FUN_00aabfe0(psVar2 + 7);
        pcVar9 = pcVar7;
        goto LAB_00af87a1;
      }
      if (pcVar9 != (char *)((int)psVar2 + 0x65a)) {
        uVar6 = (int)psVar2 + ((uVar6 + 0x65a) - (int)pcVar9);
        iVar4 = 0;
        if (0 < (int)uVar6) {
          do {
            ((char *)((int)psVar2 + 0x65a))[iVar4] = pcVar9[iVar4];
            iVar4 = iVar4 + 1;
          } while (iVar4 < (int)uVar6);
        }
      }
      FUN_00aabfe0(psVar2 + 7);
      psVar2[5] = 0;
    }
LAB_00af87ee:
    if (sStack_c != uVar6) {
      psVar2[2] = 0;
      goto LAB_00af8859;
    }
    if (pcVar9 == (char *)((int)psVar2 + 0x65a)) {
      if (uVar6 == 0x400) {
        psVar2[3] = 1;
        psVar2[2] = 0;
      }
    }
    else if (pcVar9 != pcVar7) {
      sVar8 = (int)pcVar7 - (int)pcVar9;
      iVar4 = 0;
      if (0 < (int)sVar8) {
        do {
          ((char *)((int)psVar2 + 0x65a))[iVar4] = pcVar9[iVar4];
          iVar4 = iVar4 + 1;
        } while (iVar4 < (int)sVar8);
      }
      psVar2[2] = sVar8;
    }
  }
  psVar2[2] = 0;
  goto LAB_00af8859;
LAB_00af884c:
  if ((0x3ff < (int)uVar6) || ((int)psVar2[6] < 1)) {
LAB_00af8859:
    uVar5 = FUN_00a83300(param_1,0xffffffff);
    if ((uVar5 & 0x100) == 0) {
      sStack_c = FUN_00aac2e0(psVar2 + 7,psVar2 + 0x1f,psVar2,(int)psVar2 + 0x65a,uVar6);
      psVar2[2] = 0;
    }
    else {
      uVar5 = uVar6 & 0xfffffffc;
      _Dst = (void *)((int)psVar2 + 0x65a);
      sVar8 = FUN_00aac000(psVar2 + 0x1f,_Dst,uVar5);
      sStack_c = sVar8;
      if (((2 < (int)uVar5) && (*(char *)(uVar5 + 0x659 + (int)psVar2) == '=')) &&
         (sStack_c = sVar8 - 1, *(char *)(uVar5 + 0x658 + (int)psVar2) == '=')) {
        sStack_c = sVar8 - 2;
      }
      if (uVar5 != uVar6) {
        _memmove(_Dst,(void *)(uVar5 + (int)_Dst),uVar6 - uVar5);
        psVar2[2] = uVar6 - uVar5;
      }
      *psVar2 = 0;
      if (0 < (int)sStack_c) {
        *psVar2 = sStack_c;
      }
    }
    psVar2[1] = 0;
    if ((int)sStack_c < 0) {
      local_8 = 0;
      *psVar2 = 0;
LAB_00af893d:
      FUN_00a838a0(param_1);
      if (local_10 != 0) {
        return local_10;
      }
      return local_8;
    }
    sVar8 = *psVar2;
    if ((int)param_3 < (int)*psVar2) {
      sVar8 = param_3;
    }
    _memcpy(param_2,psVar2 + 0x1f,sVar8);
    local_10 = local_10 + sVar8;
    psVar2[1] = sVar8;
    if (sVar8 == *psVar2) {
      *psVar2 = 0;
      psVar2[1] = 0;
    }
    param_3 = param_3 - sVar8;
    param_2 = (void *)((int)param_2 + sVar8);
  }
  goto joined_r0x00af869d;
LAB_00af87a1:
  sStack_c = sStack_c + 1;
  if ((int)uVar6 <= (int)sStack_c) goto LAB_00af87ee;
  goto LAB_00af8750;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00af8970(int param_1,void *param_2,size_t param_3)

{
  int *piVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  size_t _Size;
  undefined4 uVar5;
  int local_4;
  
  piVar1 = *(int **)(param_1 + 0x20);
  local_4 = 0;
  FUN_00a832f0(param_1,0xf);
  if (piVar1[4] != 1) {
    piVar1[4] = 1;
    *piVar1 = 0;
    piVar1[1] = 0;
    piVar1[2] = 0;
    FUN_00aabed0(piVar1 + 7);
  }
  if (0x5dd < piVar1[1]) {
    FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0x188,"ctx->buf_off < (int)sizeof(ctx->buf)");
  }
  if (0x5de < *piVar1) {
    FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0x189,"ctx->buf_len <= (int)sizeof(ctx->buf)");
  }
  if (*piVar1 < piVar1[1]) {
    FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0x18a,"ctx->buf_len >= ctx->buf_off");
  }
  for (iVar4 = *piVar1 - piVar1[1]; 0 < iVar4; iVar4 = iVar4 - iVar3) {
    iVar3 = FUN_00a833e0(*(undefined4 *)(param_1 + 0x24),(int)piVar1 + piVar1[1] + 0x7c,iVar4);
    if (iVar3 < 1) {
      FUN_00a838a0(param_1);
      return iVar3;
    }
    if (iVar4 < iVar3) {
      FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0x194,"i <= n");
    }
    piVar1[1] = piVar1[1] + iVar3;
    if (0x5de < piVar1[1]) {
      FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0x196,"ctx->buf_off <= (int)sizeof(ctx->buf)");
    }
    if (*piVar1 < piVar1[1]) {
      FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0x197,"ctx->buf_len >= ctx->buf_off");
    }
  }
  piVar1[1] = 0;
  *piVar1 = 0;
  if ((param_2 == (void *)0x0) || ((int)param_3 < 1)) {
    return 0;
  }
  do {
    _Size = 0x400;
    if ((int)param_3 < 0x401) {
      _Size = param_3;
    }
    uVar2 = FUN_00a83300(param_1,0xffffffff);
    if ((uVar2 & 0x100) == 0) {
      FUN_00aac180(piVar1 + 7,piVar1 + 0x1f,piVar1,param_2,_Size);
      if (0x5de < *piVar1) {
        FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0x1ce,"ctx->buf_len <= (int)sizeof(ctx->buf)");
      }
      if (*piVar1 < piVar1[1]) {
        uVar5 = 0x1cf;
LAB_00af8c67:
        FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",uVar5,"ctx->buf_len >= ctx->buf_off");
      }
LAB_00af8c74:
      local_4 = local_4 + _Size;
    }
    else {
      if (piVar1[2] < 1) {
        if ((int)_Size < 3) {
          _memcpy((void *)((int)piVar1 + 0x65a),param_2,_Size);
          piVar1[2] = _Size;
          return local_4 + _Size;
        }
        _Size = ((int)_Size / 3) * 3;
        iVar4 = FUN_00aabef0(piVar1 + 0x1f,param_2,_Size);
        *piVar1 = iVar4;
        if (0x5de < iVar4) {
          FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0x1c4,"ctx->buf_len <= (int)sizeof(ctx->buf)");
        }
        if (*piVar1 < piVar1[1]) {
          uVar5 = 0x1c5;
          goto LAB_00af8c67;
        }
        goto LAB_00af8c74;
      }
      if (3 < piVar1[2]) {
        FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0x1a8,"ctx->tmp_len <= 3");
      }
      _Size = 3U - piVar1[2];
      if ((int)param_3 < (int)(3U - piVar1[2])) {
        _Size = param_3;
      }
      _memcpy((void *)(piVar1[2] + 0x65a + (int)piVar1),param_2,_Size);
      piVar1[2] = piVar1[2] + _Size;
      local_4 = local_4 + _Size;
      if (piVar1[2] < 3) {
        return local_4;
      }
      iVar4 = FUN_00aabef0(piVar1 + 0x1f,(int)piVar1 + 0x65a,piVar1[2]);
      *piVar1 = iVar4;
      if (0x5de < iVar4) {
        FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0x1b3,"ctx->buf_len <= (int)sizeof(ctx->buf)");
      }
      if (*piVar1 < piVar1[1]) {
        FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0x1b4,"ctx->buf_len >= ctx->buf_off");
      }
      piVar1[2] = 0;
    }
    param_3 = param_3 - _Size;
    iVar4 = *piVar1;
    param_2 = (void *)((int)param_2 + _Size);
    piVar1[1] = 0;
    while (0 < iVar4) {
      iVar3 = FUN_00a833e0(*(undefined4 *)(param_1 + 0x24),(int)piVar1 + piVar1[1] + 0x7c,iVar4);
      if (iVar3 < 1) {
        FUN_00a838a0(param_1);
        if (local_4 != 0) {
          return local_4;
        }
        return iVar3;
      }
      if (iVar4 < iVar3) {
        FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0x1df,"i <= n");
      }
      piVar1[1] = piVar1[1] + iVar3;
      iVar4 = iVar4 - iVar3;
      if (0x5de < piVar1[1]) {
        FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0x1e2,"ctx->buf_off <= (int)sizeof(ctx->buf)");
      }
      if (*piVar1 < piVar1[1]) {
        FUN_00a7fd60(".\\crypto\\evp\\bio_b64.c",0x1e3,"ctx->buf_len >= ctx->buf_off");
      }
    }
    *piVar1 = 0;
    piVar1[1] = 0;
    if ((int)param_3 < 1) {
      return local_4;
    }
  } while( true );
}



undefined * FUN_00af9010(void)

{
  return &DAT_0324363c;
}



undefined4 FUN_00af90d0(int param_1)

{
  int iVar1;
  int iVar2;
  
  if (param_1 == 0) {
    return 0;
  }
  iVar1 = *(int *)(param_1 + 0x20);
  iVar2 = *(int *)(iVar1 + 8);
  if (iVar2 != 0) {
    FUN_00a85120(iVar2);
  }
  iVar1 = *(int *)(iVar1 + 0x14);
  if (iVar1 != 0) {
    FUN_00a85120(iVar1);
  }
  FUN_00a85120(*(undefined4 *)(param_1 + 0x20));
  *(undefined4 *)(param_1 + 0x20) = 0;
  *(undefined4 *)(param_1 + 0xc) = 0;
  *(undefined4 *)(param_1 + 0x14) = 0;
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

size_t FUN_00af9130(int param_1,void *param_2,size_t param_3)

{
  int *piVar1;
  size_t sVar2;
  size_t local_4;
  
  if (param_2 == (void *)0x0) {
    return 0;
  }
  piVar1 = *(int **)(param_1 + 0x20);
  if ((piVar1 == (int *)0x0) || (*(int *)(param_1 + 0x24) == 0)) {
    return 0;
  }
  local_4 = 0;
  FUN_00a832f0(param_1,0xf);
  while( true ) {
    sVar2 = piVar1[3];
    if (sVar2 != 0) {
      if ((int)param_3 < (int)sVar2) {
        sVar2 = param_3;
      }
      _memcpy(param_2,(void *)(piVar1[2] + piVar1[4]),sVar2);
      piVar1[4] = piVar1[4] + sVar2;
      piVar1[3] = piVar1[3] - sVar2;
      local_4 = local_4 + sVar2;
      if (param_3 == sVar2) {
        return local_4;
      }
      param_3 = param_3 - sVar2;
      param_2 = (void *)((int)param_2 + sVar2);
    }
    if (*piVar1 < (int)param_3) break;
    sVar2 = FUN_00a83320(*(undefined4 *)(param_1 + 0x24),piVar1[2],*piVar1);
    if ((int)sVar2 < 1) {
      FUN_00a838a0(param_1);
      if ((int)sVar2 < 0) {
        if (0 < (int)local_4) {
          return local_4;
        }
        return sVar2;
      }
      if (sVar2 == 0) {
        return local_4;
      }
    }
    piVar1[4] = 0;
    piVar1[3] = sVar2;
  }
  do {
    sVar2 = FUN_00a83320(*(undefined4 *)(param_1 + 0x24),param_2,param_3);
    if ((int)sVar2 < 1) {
      FUN_00a838a0(param_1);
      if ((int)sVar2 < 0) {
        if ((int)local_4 < 1) {
          local_4 = sVar2;
        }
        return local_4;
      }
      if (sVar2 == 0) {
        return local_4;
      }
    }
    local_4 = local_4 + sVar2;
    if (param_3 == sVar2) {
      return local_4;
    }
    param_2 = (void *)((int)param_2 + sVar2);
    param_3 = param_3 - sVar2;
  } while( true );
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00af9260(int param_1,void *param_2,size_t param_3)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  size_t _Size;
  int local_4;
  
  local_4 = 0;
  if ((param_2 == (void *)0x0) || ((int)param_3 < 1)) {
    return 0;
  }
  iVar2 = *(int *)(param_1 + 0x20);
  if ((iVar2 == 0) || (*(int *)(param_1 + 0x24) == 0)) {
    return 0;
  }
  FUN_00a832f0(param_1,0xf);
  _Size = (*(int *)(iVar2 + 4) - *(int *)(iVar2 + 0x1c)) - *(int *)(iVar2 + 0x18);
  if ((int)_Size < (int)param_3) {
    do {
      if (*(int *)(iVar2 + 0x18) != 0) {
        if (0 < (int)_Size) {
          _memcpy((void *)(*(int *)(iVar2 + 0x14) + *(int *)(iVar2 + 0x1c) + *(int *)(iVar2 + 0x18))
                  ,param_2,_Size);
          param_2 = (void *)((int)param_2 + _Size);
          local_4 = local_4 + _Size;
          param_3 = param_3 - _Size;
          *(int *)(iVar2 + 0x18) = *(int *)(iVar2 + 0x18) + _Size;
        }
        do {
          iVar3 = FUN_00a833e0(*(undefined4 *)(param_1 + 0x24),
                               *(int *)(iVar2 + 0x1c) + *(int *)(iVar2 + 0x14),
                               *(undefined4 *)(iVar2 + 0x18));
          if (iVar3 < 1) {
            FUN_00a838a0(param_1);
            if (iVar3 < 0) goto LAB_00af93b1;
            if (iVar3 == 0) {
              return local_4;
            }
          }
          *(int *)(iVar2 + 0x1c) = *(int *)(iVar2 + 0x1c) + iVar3;
          piVar1 = (int *)(iVar2 + 0x18);
          *piVar1 = *piVar1 - iVar3;
        } while (*piVar1 != 0);
      }
      *(undefined4 *)(iVar2 + 0x1c) = 0;
      if (*(int *)(iVar2 + 4) <= (int)param_3) {
        do {
          iVar3 = FUN_00a833e0(*(undefined4 *)(param_1 + 0x24),param_2,param_3);
          if (iVar3 < 1) {
            FUN_00a838a0(param_1);
            if (iVar3 < 0) {
LAB_00af93b1:
              if (0 < local_4) {
                return local_4;
              }
              return iVar3;
            }
            if (iVar3 == 0) {
              return local_4;
            }
          }
          local_4 = local_4 + iVar3;
          param_2 = (void *)((int)param_2 + iVar3);
          param_3 = param_3 - iVar3;
          if (param_3 == 0) {
            return local_4;
          }
        } while (*(int *)(iVar2 + 4) <= (int)param_3);
      }
      _Size = (*(int *)(iVar2 + 4) - *(int *)(iVar2 + 0x1c)) - *(int *)(iVar2 + 0x18);
    } while ((int)_Size < (int)param_3);
  }
  _memcpy((void *)(*(int *)(iVar2 + 0x14) + *(int *)(iVar2 + 0x1c) + *(int *)(iVar2 + 0x18)),param_2
          ,param_3);
  *(int *)(iVar2 + 0x18) = *(int *)(iVar2 + 0x18) + param_3;
  return local_4 + param_3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00af9800(int param_1,undefined *param_2,int param_3)

{
  undefined4 *puVar1;
  bool bVar2;
  int iVar3;
  int iVar4;
  int local_4;
  
  puVar1 = *(undefined4 **)(param_1 + 0x20);
  local_4 = 0;
  param_3 = param_3 + -1;
  FUN_00a832f0(param_1,0xf);
  do {
    while( true ) {
      if (0 < (int)puVar1[3]) break;
      iVar3 = FUN_00a83320(*(undefined4 *)(param_1 + 0x24),puVar1[2],*puVar1);
      if (iVar3 < 1) {
        FUN_00a838a0(param_1);
        *param_2 = 0;
        if (iVar3 < 0) {
          if (0 < local_4) {
            return local_4;
          }
          return iVar3;
        }
        if (iVar3 == 0) {
          return local_4;
        }
      }
      puVar1[3] = iVar3;
      puVar1[4] = 0;
    }
    iVar4 = puVar1[2] + puVar1[4];
    bVar2 = false;
    iVar3 = 0;
    if (0 < (int)puVar1[3]) {
      do {
        if (param_3 <= iVar3) break;
        *param_2 = *(undefined *)(iVar3 + iVar4);
        param_2 = param_2 + 1;
        if (*(char *)(iVar3 + iVar4) == '\n') {
          bVar2 = true;
          iVar3 = iVar3 + 1;
          break;
        }
        iVar3 = iVar3 + 1;
      } while (iVar3 < (int)puVar1[3]);
    }
    local_4 = local_4 + iVar3;
    puVar1[3] = puVar1[3] - iVar3;
    puVar1[4] = puVar1[4] + iVar3;
    param_3 = param_3 - iVar3;
    if ((bVar2) || (param_3 == 0)) {
      *param_2 = 0;
      return local_4;
    }
  } while( true );
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00af9910(int *param_1,void *param_2,uint param_3)

{
  int local_f8 [17];
  uint local_b4;
  undefined local_b0 [172];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_f8;
  if (0x20 < param_3) {
    ___security_check_cookie_4();
    return;
  }
  local_f8[0] = *param_1;
  local_b4 = param_3;
  _memcpy(local_b0,param_2,param_3);
  if ((local_f8[0] == 2) && (param_3 < 0x10)) {
    _memset(local_b0 + param_3,0,0x10 - param_3);
    local_b4 = 0x10;
  }
  FUN_00a7fdc0(5,0xc,".\\ssl\\ssl_lib.c",0x1d5);
  FUN_00a84ed0(*(undefined4 *)(param_1[0x39] + 0x10),local_f8);
  FUN_00a7fdc0(6,0xc,".\\ssl\\ssl_lib.c",0x1d7);
  ___security_check_cookie_4();
  return;
}



void FUN_00af9a00(int param_1,int param_2,int param_3)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x14);
  if ((iVar1 != 0) && (*(int *)(param_1 + 0x10) == iVar1)) {
    *(undefined4 *)(param_1 + 0x10) = *(undefined4 *)(*(int *)(param_1 + 0x10) + 0x24);
    *(undefined4 *)(iVar1 + 0x24) = 0;
  }
  iVar1 = *(int *)(param_1 + 0xc);
  if ((iVar1 != 0) && (iVar1 != param_2)) {
    FUN_00a83870(iVar1);
  }
  iVar1 = *(int *)(param_1 + 0x10);
  if (iVar1 != 0) {
    if ((iVar1 != param_3) && (*(int *)(param_1 + 0xc) != iVar1)) {
      FUN_00a83870(iVar1);
    }
    *(int *)(param_1 + 0x10) = param_3;
    *(int *)(param_1 + 0xc) = param_2;
    return;
  }
  *(int *)(param_1 + 0xc) = param_2;
  *(int *)(param_1 + 0x10) = param_3;
  return;
}



void FUN_00af9b30(int param_1)

{
                    // WARNING: Could not recover jumptable at 0x00af9b3a. Too many branches
                    // WARNING: Treating indirect jump as call
  (**(code **)(*(int *)(param_1 + 8) + 0x60))();
  return;
}



undefined4 FUN_00af9b40(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0x20) == 0) {
    FUN_00a7f3c0(0x14,0xdf,0x114,".\\ssl\\ssl_lib.c",0x3c1);
    return 0xffffffff;
  }
  if ((*(byte *)(param_1 + 0x30) & 2) != 0) {
    *(undefined4 *)(param_1 + 0x18) = 1;
    return 0;
  }
                    // WARNING: Could not recover jumptable at 0x00af9b86. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (**(code **)(*(int *)(param_1 + 8) + 0x18))();
  return uVar1;
}



undefined4 FUN_00af9b90(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0x20) == 0) {
    FUN_00a7f3c0(0x14,0x10e,0x114,".\\ssl\\ssl_lib.c",0x3d1);
    return 0xffffffff;
  }
  if ((*(byte *)(param_1 + 0x30) & 2) != 0) {
    return 0;
  }
                    // WARNING: Could not recover jumptable at 0x00af9bcf. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (**(code **)(*(int *)(param_1 + 8) + 0x1c))();
  return uVar1;
}



undefined4 FUN_00af9be0(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0x20) == 0) {
    FUN_00a7f3c0(0x14,0xd0,0x114,".\\ssl\\ssl_lib.c",0x3e0);
    return 0xffffffff;
  }
  if ((*(byte *)(param_1 + 0x30) & 1) != 0) {
    *(undefined4 *)(param_1 + 0x18) = 1;
    FUN_00a7f3c0(0x14,0xd0,0xcf,".\\ssl\\ssl_lib.c",999);
    return 0xffffffff;
  }
                    // WARNING: Could not recover jumptable at 0x00af9c45. Too many branches
                    // WARNING: Treating indirect jump as call
  uVar1 = (**(code **)(*(int *)(param_1 + 8) + 0x20))();
  return uVar1;
}



int FUN_00af9c50(int *param_1,undefined4 param_2,uint param_3,int param_4)

{
  int iVar1;
  
  switch(param_2) {
  case 0x10:
    param_1[0x2f] = param_4;
    return 1;
  default:
    iVar1 = (**(code **)(*param_1 + 0x44))(param_1,param_2,param_3,param_4);
    return iVar1;
  case 0x14:
    iVar1 = FUN_00a84cf0(param_1[4]);
    return iVar1;
  case 0x15:
    return param_1[0xd];
  case 0x16:
    return param_1[0xf];
  case 0x17:
    return param_1[0xe];
  case 0x18:
    return param_1[0x10];
  case 0x19:
    return param_1[0x12];
  case 0x1a:
    return param_1[0x11];
  case 0x1b:
    return param_1[0x16];
  case 0x1c:
    return param_1[0x17];
  case 0x1d:
    return param_1[0x13];
  case 0x1e:
    return param_1[0x14];
  case 0x1f:
    return param_1[0x15];
  case 0x20:
    param_1[0x29] = param_1[0x29] | param_3;
    return param_1[0x29];
  case 0x21:
    param_1[0x2a] = param_1[0x2a] | param_3;
    return param_1[0x2a];
  case 0x28:
    return param_1[0x2d];
  case 0x29:
    iVar1 = param_1[0x2d];
    param_1[0x2d] = param_3;
    return iVar1;
  case 0x2a:
    iVar1 = param_1[5];
    param_1[5] = param_3;
    return iVar1;
  case 0x2b:
    return param_1[5];
  case 0x2c:
    iVar1 = param_1[8];
    param_1[8] = param_3;
    return iVar1;
  case 0x2d:
    return param_1[8];
  case 0x32:
    return param_1[0x2b];
  case 0x33:
    iVar1 = param_1[0x2b];
    param_1[0x2b] = param_3;
    return iVar1;
  case 0x34:
    break;
  case 0x4d:
    param_1[0x29] = param_1[0x29] & ~param_3;
    return param_1[0x29];
  case 0x4e:
    param_1[0x2a] = param_1[0x2a] & ~param_3;
    return param_1[0x2a];
  }
  if (param_3 - 0x200 < 0x3e01) {
    param_1[0x3e] = param_3;
    return 1;
  }
  return 0;
}



int FUN_00af9ed0(int param_1)

{
  int iVar1;
  
  if ((param_1 == 0) ||
     ((iVar1 = *(int *)(param_1 + 0x74), iVar1 == 0 &&
      ((*(int *)(param_1 + 0xe4) == 0 ||
       (iVar1 = *(int *)(*(int *)(param_1 + 0xe4) + 4), iVar1 == 0)))))) {
    iVar1 = 0;
  }
  return iVar1;
}



int FUN_00af9f00(int param_1)

{
  int iVar1;
  
  if ((param_1 == 0) ||
     ((iVar1 = *(int *)(param_1 + 0x78), iVar1 == 0 &&
      ((*(int *)(param_1 + 0xe4) == 0 ||
       (iVar1 = *(int *)(*(int *)(param_1 + 0xe4) + 8), iVar1 == 0)))))) {
    iVar1 = 0;
  }
  return iVar1;
}



int FUN_00af9f30(int param_1,int param_2,int param_3,code *param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  if (param_2 == 0) {
    return 0;
  }
  iVar2 = 0;
  iVar1 = FUN_00a80ed0(param_2);
  iVar3 = param_3;
  if (0 < iVar1) {
    do {
      iVar1 = FUN_00a80ee0(param_2,iVar2);
      if ((((*(byte *)(iVar1 + 0x1c) & 4) == 0) ||
          (((*(uint *)(param_1 + 0x110) & 0xffffff00) == 0x300 &&
           (0x302 < (int)*(uint *)(param_1 + 0x110))))) &&
         ((((*(uint *)(iVar1 + 0xc) & 0x100) == 0 && ((*(byte *)(iVar1 + 0x10) & 0x80) == 0)) ||
          (*(int *)(param_1 + 0xdc) != 0)))) {
        if (param_4 == (code *)0x0) {
          iVar1 = (**(code **)(*(int *)(param_1 + 8) + 0x4c))(iVar1,iVar3);
        }
        else {
          iVar1 = (*param_4)();
        }
        iVar3 = iVar3 + iVar1;
      }
      iVar2 = iVar2 + 1;
      iVar1 = FUN_00a80ed0(param_2);
    } while (iVar2 < iVar1);
    if ((iVar3 != param_3) && (*(int *)(param_1 + 400) == 0)) {
      if (param_4 != (code *)0x0) {
        iVar1 = (*param_4)();
        return (iVar3 + iVar1) - param_3;
      }
      iVar1 = (**(code **)(*(int *)(param_1 + 8) + 0x4c))(&DAT_032436a0,iVar3);
      iVar3 = iVar3 + iVar1;
    }
  }
  return iVar3 - param_3;
}



int FUN_00afa020(int param_1,char *param_2,int param_3,int *param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar1 = param_1;
  iVar4 = 0;
  if (*(int *)(param_1 + 0x58) != 0) {
    *(undefined4 *)(*(int *)(param_1 + 0x58) + 0x418) = 0;
  }
  iVar2 = (**(code **)(*(int *)(param_1 + 8) + 0x4c))(0,0);
  if (param_3 % iVar2 != 0) {
    FUN_00a7f3c0(0x14,0xa1,0x97,".\\ssl\\ssl_lib.c",0x59f);
    return 0;
  }
  if ((param_4 == (int *)0x0) || (param_1 = *param_4, param_1 == 0)) {
    param_1 = FUN_00a81010();
  }
  else {
    FUN_00a80e70(param_1);
  }
  if (0 < param_3) {
    do {
      if ((*(int *)(iVar1 + 0x58) == 0) ||
         ((((iVar2 == 3 && (*param_2 != '\0')) || (param_2[iVar2 + -2] != '\0')) ||
          (param_2[iVar2 + -1] != -1)))) {
        iVar3 = (**(code **)(*(int *)(iVar1 + 8) + 0x48))(param_2);
        if ((iVar3 != 0) && (iVar3 = FUN_00a80df0(param_1,iVar3), iVar3 == 0)) {
          FUN_00a7f3c0(0x14,0xa1,0x41,".\\ssl\\ssl_lib.c",0x5c6);
          goto LAB_00afa163;
        }
      }
      else {
        if (*(int *)(iVar1 + 400) != 0) {
          FUN_00a7f3c0(0x14,0xa1,0x159,".\\ssl\\ssl_lib.c",0x5b4);
          FUN_00b00df0(iVar1,2,0x28);
LAB_00afa163:
          if ((param_4 == (int *)0x0) || (*param_4 == 0)) {
            FUN_00a80ea0(param_1);
          }
          return 0;
        }
        *(undefined4 *)(*(int *)(iVar1 + 0x58) + 0x418) = 1;
      }
      param_2 = param_2 + iVar2;
      iVar4 = iVar4 + iVar2;
    } while (iVar4 < param_3);
  }
  if (param_4 != (int *)0x0) {
    *param_4 = param_1;
  }
  return param_1;
}



void FUN_00afa270(void)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int unaff_EDI;
  
  puVar2 = *(undefined4 **)(unaff_EDI + 8);
  while (puVar2 != (undefined4 *)0x0) {
    puVar1 = (undefined4 *)*puVar2;
    FUN_00a85120(puVar2);
    puVar2 = puVar1;
  }
  FUN_00a85120();
  return;
}



void FUN_00afa2a0(int param_1)

{
  int iVar1;
  
  if (param_1 != 0) {
    iVar1 = FUN_00a7fe40(param_1 + 0x60,0xffffffff,0xc,".\\ssl\\ssl_lib.c",0x771);
    if (iVar1 < 1) {
      if (*(int *)(param_1 + 0xf0) != 0) {
        FUN_00a8f680(*(int *)(param_1 + 0xf0));
      }
      if (*(int *)(param_1 + 0x10) != 0) {
        FUN_00b00260(param_1,0);
      }
      FUN_00a80760(2,param_1,param_1 + 0x80);
      if (*(int *)(param_1 + 0x10) != 0) {
        FUN_00a84990(*(int *)(param_1 + 0x10));
      }
      if (*(int *)(param_1 + 0xc) != 0) {
        FUN_00a81880(*(int *)(param_1 + 0xc));
      }
      if (*(int *)(param_1 + 4) != 0) {
        FUN_00a80ea0(*(int *)(param_1 + 4));
      }
      if (*(int *)(param_1 + 8) != 0) {
        FUN_00a80ea0(*(int *)(param_1 + 8));
      }
      if (*(int *)(param_1 + 0xb0) != 0) {
        FUN_00aff6d0(*(int *)(param_1 + 0xb0));
      }
      if (*(int *)(param_1 + 0xa0) != 0) {
        FUN_00a81120(*(int *)(param_1 + 0xa0),FUN_00a88dc0);
      }
      if (*(int *)(param_1 + 0x94) != 0) {
        FUN_00a81120(*(int *)(param_1 + 0x94),FUN_00a812c0);
      }
      *(undefined4 *)(param_1 + 0x98) = 0;
      if (*(int *)(param_1 + 0x1b4) != 0) {
        FUN_00a80ea0(*(int *)(param_1 + 0x1b4));
      }
      if (*(int *)(param_1 + 0x14c) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0x14c));
      }
      FUN_00b02730(param_1);
      if (*(int *)(param_1 + 0xfc) != 0) {
        FUN_00a8f1b0(*(int *)(param_1 + 0xfc));
      }
      if (*(int *)(param_1 + 0x15c) != 0) {
        FUN_00afa270();
      }
      if (*(int *)(param_1 + 0x160) != 0) {
        FUN_00afa270();
      }
      FUN_00a85120(param_1);
    }
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00afa400(uint param_1,int param_2)

{
  int *piVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  bool bVar5;
  bool bVar6;
  bool bVar7;
  bool bVar8;
  bool bVar9;
  bool bVar10;
  bool bVar11;
  bool bVar12;
  bool bVar13;
  bool bVar14;
  int iVar15;
  int iVar16;
  uint uVar17;
  undefined4 uVar18;
  uint uVar19;
  uint uVar20;
  int iVar21;
  uint local_3c;
  uint local_38;
  int local_34;
  uint local_14;
  uint local_10;
  int local_c;
  int local_8;
  undefined4 local_4;
  
  iVar15 = param_1;
  local_c = 0;
  local_4 = 0;
  if (param_1 == 0) {
    return;
  }
  iVar21 = (-(uint)((*(uint *)(param_2 + 0x20) & 8) != 0) & 0xfffffe00) + 0x400;
  if ((*(int *)(param_1 + 0x18) == 0) && (*(int *)(param_1 + 0x1c) == 0)) {
    bVar2 = false;
    bVar7 = false;
  }
  else {
    bVar2 = true;
    bVar7 = true;
  }
  bVar4 = true;
  if ((*(int *)(param_1 + 0x1c) != 0) ||
     ((bVar2 && (iVar16 = FUN_00ad1210(*(int *)(param_1 + 0x18)), iVar16 * 8 <= iVar21)))) {
    bVar2 = true;
  }
  else {
    bVar2 = false;
  }
  if ((*(int *)(param_1 + 0x20) == 0) && (*(int *)(param_1 + 0x24) == 0)) {
    bVar9 = false;
    bVar3 = false;
  }
  else {
    bVar9 = true;
    bVar3 = bVar4;
  }
  if ((*(int *)(param_1 + 0x24) != 0) ||
     ((bVar3 && (iVar16 = FUN_00a8f040(*(int *)(param_1 + 0x20)), iVar16 * 8 <= iVar21)))) {
    bVar3 = true;
  }
  else {
    bVar3 = false;
  }
  if ((*(int *)(param_1 + 0x28) != 0) || (local_8 = 0, *(int *)(param_1 + 0x2c) != 0)) {
    local_8 = 1;
  }
  if ((*(int *)(param_1 + 0x30) == 0) || (*(int *)(param_1 + 0x34) == 0)) {
    bVar13 = false;
LAB_00afa506:
    bVar8 = false;
  }
  else {
    bVar13 = true;
    iVar16 = FUN_00a81360(*(int *)(param_1 + 0x34));
    bVar8 = true;
    if (iVar21 < iVar16 * 8) goto LAB_00afa506;
  }
  if ((*(int *)(param_1 + 0x3c) == 0) || (bVar5 = true, *(int *)(param_1 + 0x40) == 0)) {
    bVar5 = false;
  }
  if ((*(int *)(param_1 + 0x48) == 0) || (bVar12 = true, *(int *)(param_1 + 0x4c) == 0)) {
    bVar12 = false;
  }
  if ((*(int *)(param_1 + 0x54) == 0) || (*(int *)(param_1 + 0x58) == 0)) {
    bVar14 = false;
LAB_00afa555:
    bVar10 = false;
  }
  else {
    bVar14 = true;
    iVar16 = FUN_00a81360(*(int *)(param_1 + 0x58));
    bVar10 = true;
    if (iVar21 < iVar16 * 8) goto LAB_00afa555;
  }
  if ((*(int *)(param_1 + 0x60) == 0) || (*(int *)(param_1 + 100) == 0)) {
    bVar4 = false;
  }
  else {
    iVar16 = FUN_00a81360(*(int *)(param_1 + 100));
    bVar11 = true;
    if (iVar16 * 8 <= iVar21) goto LAB_00afa594;
  }
  bVar11 = false;
LAB_00afa594:
  if ((*(int *)(param_1 + 0x6c) == 0) || (*(int *)(param_1 + 0x70) == 0)) {
    bVar6 = false;
  }
  else {
    bVar6 = true;
  }
  uVar17 = 0;
  uVar19 = 0;
  param_1 = 0;
  local_3c = 0;
  if ((*(int *)(iVar15 + 0x84) != 0) && (*(int *)(iVar15 + 0x88) != 0)) {
    param_1 = 0x200;
    uVar19 = 0x200;
  }
  if ((*(int *)(iVar15 + 0x78) != 0) && (*(int *)(iVar15 + 0x7c) != 0)) {
    param_1 = 0x200;
    uVar19 = uVar19 | 0x100;
  }
  if ((bVar13) || ((bVar7 && (bVar5)))) {
    param_1 = param_1 | 1;
  }
  if ((bVar8) || ((bVar2 && ((bVar5 || (bVar13)))))) {
    local_3c = 1;
  }
  if (bVar3) {
    local_3c = local_3c | 8;
  }
  if (bVar9) {
    param_1 = param_1 | 8;
  }
  if (bVar14) {
    param_1 = param_1 | 2;
  }
  if (bVar10) {
    local_3c = local_3c | 2;
  }
  if (bVar4) {
    param_1 = param_1 | 4;
  }
  if (bVar11) {
    local_3c = local_3c | 4;
  }
  if ((bVar13) || (bVar5)) {
    uVar19 = uVar19 | 1;
    uVar17 = 1;
  }
  if (bVar12) {
    uVar19 = uVar19 | 2;
    uVar17 = uVar17 | 2;
  }
  local_38 = uVar17 | 4;
  uVar20 = uVar19 | 4;
  if (bVar6) {
    iVar21 = *(int *)(iVar15 + 0x6c);
    FUN_00a92360(iVar21,0xffffffff,0);
    if ((*(uint *)(iVar21 + 0x28) & 2) == 0) {
      local_10 = 1;
      local_14 = 1;
    }
    else {
      local_10 = *(uint *)(iVar21 + 0x2c) & 8;
      local_14 = *(uint *)(iVar21 + 0x2c) & 0x80;
    }
    iVar16 = FUN_00a82c40(iVar21);
    if (iVar16 == 0) {
      local_34 = 0;
    }
    else {
      local_34 = FUN_00a81340(iVar16);
    }
    FUN_00a816d0(iVar16);
    piVar1 = *(int **)(iVar21 + 4);
    if ((piVar1 != (int *)0x0) && (*piVar1 != 0)) {
      uVar18 = FUN_00a877e0(*piVar1);
      FUN_00a882d0(uVar18,&local_4,&local_c);
    }
    if (local_10 != 0) {
      if ((local_c == 6) || (local_c == 0x13)) {
        param_1 = param_1 | 0x20;
        uVar20 = uVar19 | 0x14;
        if (local_34 < 0xa4) {
          local_3c = local_3c | 0x20;
          local_38 = uVar17 | 0x14;
        }
      }
      if (local_c == 0x198) {
        param_1 = param_1 | 0x40;
        uVar20 = uVar20 | 0x10;
        if (local_34 < 0xa4) {
          local_3c = local_3c | 0x40;
          local_38 = local_38 | 0x10;
        }
      }
    }
    if (local_14 != 0) {
      uVar20 = uVar20 | 0x40;
      local_38 = local_38 | 0x40;
    }
  }
  if (local_8 != 0) {
    param_1 = param_1 | 0x80;
    local_3c = local_3c | 0x80;
  }
  *(uint *)(iVar15 + 8) = param_1 | 0x100;
  *(uint *)(iVar15 + 0xc) = uVar20 | 0x80;
  *(uint *)(iVar15 + 0x10) = local_3c | 0x100;
  *(uint *)(iVar15 + 0x14) = local_38 | 0x80;
  *(undefined4 *)(iVar15 + 4) = 1;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00afa7e0(int param_1,uint *param_2)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  int local_c;
  undefined4 local_8;
  uint local_4;
  
  local_8 = 0;
  local_c = 0;
  iVar3 = *(int *)(param_2[0x16] + 0x344);
  local_4 = *(uint *)(iVar3 + 0x10);
  uVar1 = *(uint *)(iVar3 + 0xc);
  if ((*(byte *)(iVar3 + 0x20) & 2) != 0) {
    iVar3 = FUN_00a82c40(param_1);
    if (iVar3 == 0) {
      return 0;
    }
    iVar4 = FUN_00a81340(iVar3);
    FUN_00a816d0(iVar3);
    if (0xa3 < iVar4) {
      return 0;
    }
  }
  FUN_00a92360(param_1,0xffffffff,0);
  piVar2 = *(int **)(param_1 + 4);
  if ((piVar2 != (int *)0x0) && (*piVar2 != 0)) {
    uVar5 = FUN_00a877e0(*piVar2);
    FUN_00a882d0(uVar5,&local_8,&local_c);
  }
  if (((uVar1 & 0x40) != 0) || ((uVar1 & 0x20) != 0)) {
    if (((*(byte *)(param_1 + 0x28) & 2) != 0) && ((*(byte *)(param_1 + 0x2c) & 8) == 0)) {
      uVar6 = 0x8cf;
      uVar5 = 0x13d;
      goto LAB_00afa8b1;
    }
    if (((uVar1 & 0x40) != 0) &&
       ((((*param_2 & 0xffffff00) != 0x300 || ((int)*param_2 < 0x303)) && (local_c != 0x198)))) {
      uVar6 = 0x8d7;
      uVar5 = 0x143;
      goto LAB_00afa8b1;
    }
    if (((((uVar1 & 0x20) != 0) && (((*param_2 & 0xffffff00) != 0x300 || ((int)*param_2 < 0x303))))
        && (local_c != 6)) && (local_c != 0x13)) {
      uVar6 = 0x8e1;
      uVar5 = 0x142;
      goto LAB_00afa8b1;
    }
  }
  if ((((local_4 & 0x40) == 0) || ((*(byte *)(param_1 + 0x28) & 2) == 0)) ||
     ((*(byte *)(param_1 + 0x2c) & 0x80) != 0)) {
    return 1;
  }
  uVar6 = 0x8eb;
  uVar5 = 0x13e;
LAB_00afa8b1:
  FUN_00a7f3c0(0x14,0x117,uVar5,".\\ssl\\ssl_lib.c",uVar6);
  return 0;
}



int FUN_00afa980(int param_1)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  
  iVar1 = *(int *)(param_1 + 0x98);
  FUN_00afa400(iVar1,*(undefined4 *)(*(int *)(param_1 + 0x58) + 0x344));
  iVar2 = *(int *)(*(int *)(param_1 + 0x58) + 0x344);
  uVar3 = *(uint *)(iVar2 + 0xc);
  uVar4 = *(uint *)(iVar2 + 0x10);
  if (((uVar3 & 0x60) != 0) || ((uVar4 & 0x40) != 0)) {
    return iVar1 + 0x6c;
  }
  if ((uVar3 & 2) != 0) {
    return iVar1 + 0x54;
  }
  if ((uVar3 & 4) != 0) {
    return iVar1 + 0x60;
  }
  if ((uVar4 & 2) != 0) {
    return iVar1 + 0x48;
  }
  if ((uVar4 & 1) != 0) {
    return iVar1 + ((uint)(*(int *)(iVar1 + 0x30) == 0) * 3 + 0xc) * 4;
  }
  if ((uVar4 & 0x20) == 0) {
    if ((uVar4 & 0x100) != 0) {
      return iVar1 + 0x78;
    }
    if ((uVar4 & 0x200) != 0) {
      return iVar1 + 0x84;
    }
    FUN_00a7f3c0(0x14,0x13d,0x44,".\\ssl\\ssl_lib.c",0x92d);
  }
  return 0;
}



undefined4 FUN_00afaa70(undefined4 param_1)

{
  undefined4 *puVar1;
  
  puVar1 = (undefined4 *)FUN_00afa980(param_1);
  if (puVar1 == (undefined4 *)0x0) {
    return 0;
  }
  return *puVar1;
}



undefined4 FUN_00afaa90(int param_1,int param_2,undefined4 *param_3)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  
  uVar1 = *(uint *)(param_2 + 0x10);
  iVar2 = *(int *)(param_1 + 0x98);
  if (((uVar1 & 2) == 0) || (*(int *)(iVar2 + 0x4c) == 0)) {
    if ((uVar1 & 1) == 0) {
      if (((uVar1 & 0x40) == 0) || (*(int *)(iVar2 + 0x70) == 0)) {
LAB_00afaaf7:
        FUN_00a7f3c0(0x14,0xb7,0x44,".\\ssl\\ssl_lib.c",0x955);
        return 0;
      }
      iVar3 = 5;
    }
    else if (*(int *)(iVar2 + 0x40) == 0) {
      if (*(int *)(iVar2 + 0x34) == 0) goto LAB_00afaaf7;
      iVar3 = 0;
    }
    else {
      iVar3 = 1;
    }
  }
  else {
    iVar3 = 2;
  }
  if (param_3 != (undefined4 *)0x0) {
    *param_3 = *(undefined4 *)(iVar2 + 0x38 + iVar3 * 0xc);
  }
  return *(undefined4 *)(iVar2 + 0x34 + iVar3 * 0xc);
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00afab20(int param_1,uint param_2)

{
  uint uVar1;
  char cVar2;
  int iVar3;
  __time64_t _Var4;
  
  if (*(int *)(*(int *)(param_1 + 0xc0) + 0x44) != 0) {
    uVar1 = *(uint *)(*(int *)(param_1 + 0x170) + 0x20);
    if (((((uVar1 & param_2) != 0) && (*(int *)(param_1 + 0x6c) == 0)) &&
        (((uVar1 & 0x200) != 0 ||
         (iVar3 = FUN_00b002e0(*(int *)(param_1 + 0x170),*(int *)(param_1 + 0xc0)), iVar3 != 0))))
       && (*(int *)(*(int *)(param_1 + 0x170) + 0x28) != 0)) {
      FUN_00a7fe40(*(int *)(param_1 + 0xc0) + 0xa4,1,0xe,".\\ssl\\ssl_lib.c",0x96b);
      iVar3 = (**(code **)(*(int *)(param_1 + 0x170) + 0x28))
                        (param_1,*(undefined4 *)(param_1 + 0xc0));
      if (iVar3 == 0) {
        FUN_00affbb0(*(undefined4 *)(param_1 + 0xc0));
      }
    }
    if ((-1 < (char)uVar1) && ((uVar1 & param_2) == param_2)) {
      if ((param_2 & 1) == 0) {
        cVar2 = (char)*(undefined4 *)(*(int *)(param_1 + 0x170) + 0x48);
      }
      else {
        cVar2 = (char)*(undefined4 *)(*(int *)(param_1 + 0x170) + 0x3c);
      }
      if (cVar2 == -1) {
        _Var4 = __time64((__time64_t *)0x0);
        FUN_00b00260(*(undefined4 *)(param_1 + 0x170),(int)_Var4);
      }
    }
  }
  return;
}



undefined4 FUN_00afac10(void)

{
  FUN_00a7f3c0(0x14,0xc5,0x42,".\\ssl\\ssl_lib.c",0xa23);
  return 0;
}



void FUN_00afac70(int param_1)

{
  if (*(int *)(param_1 + 0x80) != 0) {
    FUN_00aab890(*(int *)(param_1 + 0x80));
    FUN_00a85120(*(undefined4 *)(param_1 + 0x80));
    *(undefined4 *)(param_1 + 0x80) = 0;
  }
  if (*(int *)(param_1 + 0x8c) != 0) {
    FUN_00aab890(*(int *)(param_1 + 0x8c));
    FUN_00a85120(*(undefined4 *)(param_1 + 0x8c));
    *(undefined4 *)(param_1 + 0x8c) = 0;
  }
  if (*(int *)(param_1 + 0x88) != 0) {
    FUN_00b545e0(*(int *)(param_1 + 0x88));
    *(undefined4 *)(param_1 + 0x88) = 0;
  }
  if (*(int *)(param_1 + 0x94) != 0) {
    FUN_00b545e0(*(int *)(param_1 + 0x94));
    *(undefined4 *)(param_1 + 0x94) = 0;
  }
  return;
}



undefined4 FUN_00afad00(int param_1,int param_2)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  
  iVar2 = *(int *)(param_1 + 0x14);
  if (iVar2 == 0) {
    uVar1 = FUN_00af9010();
    iVar2 = FUN_00a838c0(uVar1);
    if (iVar2 == 0) {
      return 0;
    }
    *(int *)(param_1 + 0x14) = iVar2;
  }
  else if (iVar2 == *(int *)(param_1 + 0x10)) {
    uVar1 = FUN_00a837c0(*(int *)(param_1 + 0x10));
    *(undefined4 *)(param_1 + 0x10) = uVar1;
  }
  FUN_00a83650(iVar2,1,0,0);
  iVar3 = FUN_00a83920(iVar2,0x75,1,0);
  if (iVar3 == 0) {
    FUN_00a7f3c0(0x14,0xb8,7,".\\ssl\\ssl_lib.c",0xb30);
    return 0;
  }
  if (param_2 == 0) {
    if (*(int *)(param_1 + 0x10) == iVar2) {
      uVar1 = FUN_00a837c0(iVar2);
      *(undefined4 *)(param_1 + 0x10) = uVar1;
    }
  }
  else if (*(int *)(param_1 + 0x10) != iVar2) {
    uVar1 = FUN_00a83770(iVar2,*(int *)(param_1 + 0x10));
    *(undefined4 *)(param_1 + 0x10) = uVar1;
    return 1;
  }
  return 1;
}



void FUN_00afadc0(int param_1)

{
  undefined4 uVar1;
  
  if (*(int *)(param_1 + 0x14) != 0) {
    if (*(int *)(param_1 + 0x14) == *(int *)(param_1 + 0x10)) {
      uVar1 = FUN_00a837c0(*(int *)(param_1 + 0x10));
      *(undefined4 *)(param_1 + 0x10) = uVar1;
    }
    FUN_00a83270(*(undefined4 *)(param_1 + 0x14));
    *(undefined4 *)(param_1 + 0x14) = 0;
  }
  return;
}



void FUN_00afae60(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00a877b0(param_1,param_2,param_3,0x30,&LAB_00afae40);
  return;
}



undefined4 FUN_00afae80(undefined4 *param_1)

{
  undefined4 uVar1;
  int iVar2;
  
  if (param_1[2] == 0) {
    FUN_00a7f3c0(0x14,0xa4,0xbc,".\\ssl\\ssl_lib.c",0xbe);
    return 0;
  }
  iVar2 = FUN_00b00450(param_1);
  if (iVar2 != 0) {
    FUN_00affbb0(param_1[0x30]);
    param_1[0x30] = 0;
  }
  param_1[0x35] = 0;
  param_1[0x1b] = 0;
  param_1[0xc] = 0;
  if (param_1[100] != 0) {
    FUN_00a7f3c0(0x14,0xa4,0x44,".\\ssl\\ssl_lib.c",0xd4);
    return 0;
  }
  param_1[1] = 0;
  param_1[0xd] = (-(uint)(param_1[9] != 0) & 0x1000) + 0x1000 | 0x4000;
  uVar1 = *(undefined4 *)param_1[2];
  *param_1 = uVar1;
  param_1[0x44] = uVar1;
  param_1[6] = 1;
  param_1[0xe] = 0xf0;
  if (param_1[0xf] != 0) {
    FUN_00a92a20(param_1[0xf]);
    param_1[0xf] = 0;
  }
  FUN_00afac70(param_1);
  if (param_1[0x21] != 0) {
    FUN_00a918e0(param_1[0x21]);
  }
  param_1[0x21] = 0;
  if (param_1[0x24] != 0) {
    FUN_00a918e0(param_1[0x24]);
  }
  param_1[0x24] = 0;
  param_1[0x43] = 0;
  if (((param_1[7] == 0) && (param_1[0x30] == 0)) && (param_1[2] != *(int *)param_1[0x39])) {
    (**(code **)(param_1[2] + 0xc))(param_1);
    iVar2 = *(int *)param_1[0x39];
    param_1[2] = iVar2;
    iVar2 = (**(code **)(iVar2 + 4))(param_1);
    if (iVar2 == 0) {
      return 0;
    }
  }
  else {
    (**(code **)(param_1[2] + 8))(param_1);
  }
  return 1;
}



void * FUN_00afb000(int *param_1)

{
  uint uVar1;
  void *_Dst;
  int iVar2;
  int *piVar3;
  int *piVar4;
  
  if (param_1 == (int *)0x0) {
    FUN_00a7f3c0(0x14,0xba,0xc3,".\\ssl\\ssl_lib.c",0x119);
    return (void *)0x0;
  }
  if (*param_1 == 0) {
    FUN_00a7f3c0(0x14,0xba,0xe4,".\\ssl\\ssl_lib.c",0x11e);
    return (void *)0x0;
  }
  _Dst = (void *)FUN_00a84f80(0x1d4,".\\ssl\\ssl_lib.c",0x122);
  if (_Dst == (void *)0x0) goto LAB_00afb244;
  _memset(_Dst,0,0x1d4);
  *(int *)((int)_Dst + 0x100) = param_1[0x29];
  *(int *)((int)_Dst + 0x104) = param_1[0x2a];
  *(int *)((int)_Dst + 0x108) = param_1[0x2b];
  if (param_1[0x2c] == 0) {
    *(undefined4 *)((int)_Dst + 0x98) = 0;
LAB_00afb0d8:
    *(int *)((int)_Dst + 0x60) = param_1[0x2d];
    *(int *)((int)_Dst + 100) = param_1[0x2e];
    *(int *)((int)_Dst + 0x68) = param_1[0x2f];
    *(int *)((int)_Dst + 200) = param_1[0x30];
    uVar1 = param_1[0x31];
    *(uint *)((int)_Dst + 0x9c) = uVar1;
    if (0x20 < uVar1) {
      FUN_00a7fd60(".\\ssl\\ssl_lib.c",0x149,"s->sid_ctx_length <= sizeof s->sid_ctx");
    }
    piVar3 = param_1 + 0x32;
    piVar4 = (int *)((int)_Dst + 0xa0);
    for (iVar2 = 8; iVar2 != 0; iVar2 = iVar2 + -1) {
      *piVar4 = *piVar3;
      piVar3 = piVar3 + 1;
      piVar4 = piVar4 + 1;
    }
    *(int *)((int)_Dst + 0xcc) = param_1[0x3a];
    *(int *)((int)_Dst + 0xc4) = param_1[0x3b];
    iVar2 = FUN_00a8f610();
    *(int *)((int)_Dst + 0x70) = iVar2;
    if (iVar2 != 0) {
      FUN_00a8f830(iVar2,param_1[0x3c]);
      *(int *)((int)_Dst + 0x2c) = param_1[0x3d];
      *(int *)((int)_Dst + 0x114) = param_1[0x3e];
      FUN_00a7fe40(param_1 + 0x18,1,0xc,".\\ssl\\ssl_lib.c",0x159);
      *(int **)((int)_Dst + 0xe4) = param_1;
      *(undefined4 *)((int)_Dst + 0x118) = 0;
      *(undefined4 *)((int)_Dst + 0x11c) = 0;
      *(undefined4 *)((int)_Dst + 0x140) = 0;
      *(undefined4 *)((int)_Dst + 0x128) = 0xffffffff;
      *(undefined4 *)((int)_Dst + 300) = 0;
      *(undefined4 *)((int)_Dst + 0x130) = 0;
      *(undefined4 *)((int)_Dst + 0x134) = 0;
      *(undefined4 *)((int)_Dst + 0x138) = 0;
      *(undefined4 *)((int)_Dst + 0x13c) = 0xffffffff;
      FUN_00a7fe40(param_1 + 0x18,1,0xc,".\\ssl\\ssl_lib.c",0x165);
      *(int **)((int)_Dst + 0x170) = param_1;
      *(undefined4 *)((int)_Dst + 0x174) = 0;
      *(undefined4 *)((int)_Dst + 0xec) = 0;
      iVar2 = *param_1;
      *(int *)((int)_Dst + 8) = iVar2;
      iVar2 = (**(code **)(iVar2 + 4))(_Dst);
      if (iVar2 != 0) {
        *(undefined4 *)((int)_Dst + 0xfc) = 1;
        *(uint *)((int)_Dst + 0x24) = (uint)(*(code **)(*param_1 + 0x10) != FUN_00afac10);
        FUN_00afae80(_Dst);
        FUN_00a80700(1,_Dst,(int)_Dst + 0xf0);
        *(int *)((int)_Dst + 0xdc) = param_1[0x54];
        *(int *)((int)_Dst + 0xe0) = param_1[0x55];
        return _Dst;
      }
    }
  }
  else {
    iVar2 = FUN_00aff420(param_1[0x2c]);
    *(int *)((int)_Dst + 0x98) = iVar2;
    if (iVar2 != 0) goto LAB_00afb0d8;
  }
  if (*(int *)((int)_Dst + 0x98) != 0) {
    FUN_00aff6d0(*(int *)((int)_Dst + 0x98));
  }
  if (*(int *)((int)_Dst + 0xe4) != 0) {
    FUN_00afa2a0(*(int *)((int)_Dst + 0xe4));
  }
  FUN_00a85120(_Dst);
LAB_00afb244:
  FUN_00a7f3c0(0x14,0xba,0x41,".\\ssl\\ssl_lib.c",0x189);
  return (void *)0x0;
}



void * FUN_00afb053(void)

{
  uint uVar1;
  void *_Dst;
  int iVar2;
  int *unaff_EBP;
  int *piVar3;
  int *piVar4;
  
  _Dst = (void *)FUN_00a84f80(0x1d4,".\\ssl\\ssl_lib.c",0x122);
  if (_Dst == (void *)0x0) goto LAB_00afb244;
  _memset(_Dst,0,0x1d4);
  *(int *)((int)_Dst + 0x100) = unaff_EBP[0x29];
  *(int *)((int)_Dst + 0x104) = unaff_EBP[0x2a];
  *(int *)((int)_Dst + 0x108) = unaff_EBP[0x2b];
  if (unaff_EBP[0x2c] == 0) {
    *(undefined4 *)((int)_Dst + 0x98) = 0;
LAB_00afb0d8:
    *(int *)((int)_Dst + 0x60) = unaff_EBP[0x2d];
    *(int *)((int)_Dst + 100) = unaff_EBP[0x2e];
    *(int *)((int)_Dst + 0x68) = unaff_EBP[0x2f];
    *(int *)((int)_Dst + 200) = unaff_EBP[0x30];
    uVar1 = unaff_EBP[0x31];
    *(uint *)((int)_Dst + 0x9c) = uVar1;
    if (0x20 < uVar1) {
      FUN_00a7fd60(".\\ssl\\ssl_lib.c",0x149,"s->sid_ctx_length <= sizeof s->sid_ctx");
    }
    piVar3 = unaff_EBP + 0x32;
    piVar4 = (int *)((int)_Dst + 0xa0);
    for (iVar2 = 8; iVar2 != 0; iVar2 = iVar2 + -1) {
      *piVar4 = *piVar3;
      piVar3 = piVar3 + 1;
      piVar4 = piVar4 + 1;
    }
    *(int *)((int)_Dst + 0xcc) = unaff_EBP[0x3a];
    *(int *)((int)_Dst + 0xc4) = unaff_EBP[0x3b];
    iVar2 = FUN_00a8f610();
    *(int *)((int)_Dst + 0x70) = iVar2;
    if (iVar2 != 0) {
      FUN_00a8f830(iVar2,unaff_EBP[0x3c]);
      *(int *)((int)_Dst + 0x2c) = unaff_EBP[0x3d];
      *(int *)((int)_Dst + 0x114) = unaff_EBP[0x3e];
      FUN_00a7fe40(unaff_EBP + 0x18,1,0xc,".\\ssl\\ssl_lib.c",0x159);
      *(int **)((int)_Dst + 0xe4) = unaff_EBP;
      *(undefined4 *)((int)_Dst + 0x118) = 0;
      *(undefined4 *)((int)_Dst + 0x11c) = 0;
      *(undefined4 *)((int)_Dst + 0x140) = 0;
      *(undefined4 *)((int)_Dst + 0x128) = 0xffffffff;
      *(undefined4 *)((int)_Dst + 300) = 0;
      *(undefined4 *)((int)_Dst + 0x130) = 0;
      *(undefined4 *)((int)_Dst + 0x134) = 0;
      *(undefined4 *)((int)_Dst + 0x138) = 0;
      *(undefined4 *)((int)_Dst + 0x13c) = 0xffffffff;
      FUN_00a7fe40(unaff_EBP + 0x18,1,0xc,".\\ssl\\ssl_lib.c",0x165);
      *(int **)((int)_Dst + 0x170) = unaff_EBP;
      *(undefined4 *)((int)_Dst + 0x174) = 0;
      *(undefined4 *)((int)_Dst + 0xec) = 0;
      iVar2 = *unaff_EBP;
      *(int *)((int)_Dst + 8) = iVar2;
      iVar2 = (**(code **)(iVar2 + 4))(_Dst);
      if (iVar2 != 0) {
        *(undefined4 *)((int)_Dst + 0xfc) = 1;
        *(uint *)((int)_Dst + 0x24) = (uint)(*(code **)(*unaff_EBP + 0x10) != FUN_00afac10);
        FUN_00afae80(_Dst);
        FUN_00a80700(1,_Dst,(int)_Dst + 0xf0);
        *(int *)((int)_Dst + 0xdc) = unaff_EBP[0x54];
        *(int *)((int)_Dst + 0xe0) = unaff_EBP[0x55];
        return _Dst;
      }
    }
  }
  else {
    iVar2 = FUN_00aff420(unaff_EBP[0x2c]);
    *(int *)((int)_Dst + 0x98) = iVar2;
    if (iVar2 != 0) goto LAB_00afb0d8;
  }
  if (*(int *)((int)_Dst + 0x98) != 0) {
    FUN_00aff6d0(*(int *)((int)_Dst + 0x98));
  }
  if (*(int *)((int)_Dst + 0xe4) != 0) {
    FUN_00afa2a0(*(int *)((int)_Dst + 0xe4));
  }
  FUN_00a85120(_Dst);
LAB_00afb244:
  FUN_00a7f3c0(0x14,0xba,0x41,".\\ssl\\ssl_lib.c",0x189);
  return (void *)0x0;
}



void FUN_00afb2c0(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  if (param_1 != 0) {
    iVar1 = FUN_00a7fe40(param_1 + 0xfc,0xffffffff,0x10,".\\ssl\\ssl_lib.c",0x200);
    if (iVar1 < 1) {
      if (*(int *)(param_1 + 0x70) != 0) {
        FUN_00a8f680(*(int *)(param_1 + 0x70));
      }
      FUN_00a80760(1,param_1,param_1 + 0xf0);
      if (*(int *)(param_1 + 0x14) != 0) {
        if (*(int *)(param_1 + 0x14) == *(int *)(param_1 + 0x10)) {
          uVar2 = FUN_00a837c0(*(int *)(param_1 + 0x10));
          *(undefined4 *)(param_1 + 0x10) = uVar2;
        }
        FUN_00a83270(*(undefined4 *)(param_1 + 0x14));
        *(undefined4 *)(param_1 + 0x14) = 0;
      }
      if (*(int *)(param_1 + 0xc) != 0) {
        FUN_00a83870(*(int *)(param_1 + 0xc));
      }
      iVar1 = *(int *)(param_1 + 0x10);
      if ((iVar1 != 0) && (iVar1 != *(int *)(param_1 + 0xc))) {
        FUN_00a83870(iVar1);
      }
      if (*(int *)(param_1 + 0x3c) != 0) {
        FUN_00a92a20(*(int *)(param_1 + 0x3c));
      }
      if (*(int *)(param_1 + 0x74) != 0) {
        FUN_00a80ea0(*(int *)(param_1 + 0x74));
      }
      if (*(int *)(param_1 + 0x78) != 0) {
        FUN_00a80ea0(*(int *)(param_1 + 0x78));
      }
      if (*(int *)(param_1 + 0xc0) != 0) {
        FUN_00b00450(param_1);
        FUN_00affbb0(*(undefined4 *)(param_1 + 0xc0));
      }
      FUN_00afac70(param_1);
      if (*(int *)(param_1 + 0x84) != 0) {
        FUN_00a918e0(*(int *)(param_1 + 0x84));
      }
      *(undefined4 *)(param_1 + 0x84) = 0;
      if (*(int *)(param_1 + 0x90) != 0) {
        FUN_00a918e0(*(int *)(param_1 + 0x90));
      }
      *(undefined4 *)(param_1 + 0x90) = 0;
      if (*(int *)(param_1 + 0x98) != 0) {
        FUN_00aff6d0(*(int *)(param_1 + 0x98));
      }
      if (*(int *)(param_1 + 0x120) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0x120));
      }
      if (*(int *)(param_1 + 0x170) != 0) {
        FUN_00afa2a0(*(int *)(param_1 + 0x170));
      }
      if (*(int *)(param_1 + 0x148) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0x148));
      }
      if (*(int *)(param_1 + 0x150) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0x150));
      }
      if (*(int *)(param_1 + 0x154) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0x154));
      }
      if (*(int *)(param_1 + 0x134) != 0) {
        FUN_00a81120(*(int *)(param_1 + 0x134),&LAB_00a88710);
      }
      if (*(int *)(param_1 + 0x130) != 0) {
        FUN_00a81120(*(int *)(param_1 + 0x130),FUN_00af05d0);
      }
      if (*(int *)(param_1 + 0x138) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0x138));
      }
      if (*(int *)(param_1 + 0xf8) != 0) {
        FUN_00a81120(*(int *)(param_1 + 0xf8),FUN_00a88dc0);
      }
      if (*(int *)(param_1 + 8) != 0) {
        (**(code **)(*(int *)(param_1 + 8) + 0xc))(param_1);
      }
      if (*(int *)(param_1 + 0xe4) != 0) {
        FUN_00afa2a0(*(int *)(param_1 + 0xe4));
      }
      if (*(int *)(param_1 + 0x174) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0x174));
      }
      if (*(int *)(param_1 + 0x17c) != 0) {
        FUN_00a80ea0(*(int *)(param_1 + 0x17c));
      }
      FUN_00a85120(param_1);
    }
  }
  return;
}



uint FUN_00afb520(int *param_1,undefined4 param_2,uint param_3,int param_4)

{
  int iVar1;
  uint uVar2;
  
  switch(param_2) {
  case 0x10:
    param_1[0x1a] = param_4;
    return 1;
  case 0x11:
    iVar1 = FUN_00b030c0();
    if ((iVar1 <= (int)param_3) && ((*param_1 == 0xfeff || (*param_1 == 0x100)))) {
      *(uint *)(param_1[0x17] + 600) = param_3;
      return param_3;
    }
    break;
  default:
    uVar2 = (**(code **)(param_1[2] + 0x40))(param_1,param_2,param_3,param_4);
    return uVar2;
  case 0x20:
    param_1[0x40] = param_1[0x40] | param_3;
    return param_1[0x40];
  case 0x21:
    param_1[0x41] = param_1[0x41] | param_3;
    return param_1[0x41];
  case 0x28:
    return param_1[0x18];
  case 0x29:
    uVar2 = param_1[0x18];
    param_1[0x18] = param_3;
    return uVar2;
  case 0x32:
    return param_1[0x42];
  case 0x33:
    uVar2 = param_1[0x42];
    param_1[0x42] = param_3;
    return uVar2;
  case 0x34:
    if (param_3 - 0x200 < 0x3e01) {
      param_1[0x45] = param_3;
      return 1;
    }
    break;
  case 0x4c:
    if (param_1[0x16] != 0) {
      return *(uint *)(param_1[0x16] + 0x418);
    }
    break;
  case 0x4d:
    param_1[0x40] = param_1[0x40] & ~param_3;
    return param_1[0x40];
  case 0x4e:
    param_1[0x41] = param_1[0x41] & ~param_3;
    return param_1[0x41];
  }
  return 0;
}



int FUN_00afbab0(int *param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  
  if (0 < param_2) {
    return 0;
  }
  uVar1 = FUN_00a7f7a0();
  if (uVar1 != 0) {
    return (uint)((uVar1 & 0xff000000) == 0x2000000) * 4 + 1;
  }
  if (param_2 < 0) {
    if (param_1[6] == 3) {
      iVar3 = param_1[3];
      iVar2 = FUN_00a83300(iVar3,1);
      if (iVar2 != 0) {
        return 2;
      }
      iVar2 = FUN_00a83300(iVar3,2);
      if (iVar2 != 0) {
        return 3;
      }
      iVar2 = FUN_00a83300(iVar3,4);
      if (iVar2 != 0) goto LAB_00afbb6c;
    }
    if (param_1[6] == 2) {
      iVar3 = param_1[4];
      iVar2 = FUN_00a83300(iVar3,2);
      if (iVar2 != 0) {
        return 3;
      }
      iVar2 = FUN_00a83300(iVar3,1);
      if (iVar2 != 0) {
        return 2;
      }
      iVar2 = FUN_00a83300(iVar3,4);
      if (iVar2 != 0) {
LAB_00afbb6c:
        iVar3 = FUN_00a83810(iVar3);
        if (iVar3 == 2) {
          return 7;
        }
        return (-(uint)(iVar3 != 3) & 0xfffffffd) + 8;
      }
    }
    if (param_1[6] == 4) {
      return 4;
    }
  }
  if (param_2 == 0) {
    if (*param_1 == 2) {
      return 6;
    }
    if (((*(byte *)(param_1 + 0xc) & 2) != 0) && (*(int *)(param_1[0x16] + 0x184) == 0)) {
      return 6;
    }
  }
  return 5;
}



void FUN_00afbbd0(int param_1)

{
  *(undefined4 *)(param_1 + 0x24) = 1;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined4 *)(param_1 + 0x34) = 0x6000;
  *(undefined4 *)(param_1 + 0x20) = *(undefined4 *)(*(int *)(param_1 + 8) + 0x10);
  FUN_00afac70(param_1);
  if (*(int *)(param_1 + 0x84) != 0) {
    FUN_00a918e0(*(int *)(param_1 + 0x84));
  }
  *(undefined4 *)(param_1 + 0x84) = 0;
  if (*(int *)(param_1 + 0x90) != 0) {
    FUN_00a918e0(*(int *)(param_1 + 0x90));
  }
  *(undefined4 *)(param_1 + 0x90) = 0;
  return;
}



void FUN_00afbc30(int param_1)

{
  *(undefined4 *)(param_1 + 0x24) = 0;
  *(undefined4 *)(param_1 + 0x30) = 0;
  *(undefined4 *)(param_1 + 0x34) = 0x5000;
  *(undefined4 *)(param_1 + 0x20) = *(undefined4 *)(*(int *)(param_1 + 8) + 0x14);
  FUN_00afac70(param_1);
  if (*(int *)(param_1 + 0x84) != 0) {
    FUN_00a918e0(*(int *)(param_1 + 0x84));
  }
  *(undefined4 *)(param_1 + 0x84) = 0;
  if (*(int *)(param_1 + 0x90) != 0) {
    FUN_00a918e0(*(int *)(param_1 + 0x90));
  }
  *(undefined4 *)(param_1 + 0x90) = 0;
  return;
}



int FUN_00afbc90(int *param_1,int param_2)

{
  int iVar1;
  
  if (*param_1 != 0) {
    FUN_00a918e0(*param_1);
  }
  *param_1 = 0;
  iVar1 = FUN_00a91350();
  *param_1 = iVar1;
  if (param_2 != 0) {
    FUN_00a91380(iVar1,param_2,0);
    iVar1 = *param_1;
  }
  return iVar1;
}



void FUN_00afbcd0(int param_1)

{
  if (*(int *)(param_1 + 0x20) == 0) {
    FUN_00afbbd0(param_1);
  }
  (**(code **)(*(int *)(param_1 + 8) + 0x10))(param_1);
  return;
}



void FUN_00afbd00(int param_1)

{
  if (*(int *)(param_1 + 0x20) == 0) {
    FUN_00afbc30(param_1);
  }
  (**(code **)(*(int *)(param_1 + 8) + 0x14))(param_1);
  return;
}



undefined4 FUN_00afbd30(void)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00a98460();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97f70();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97680();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97b30();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96fe0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97030();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a957c0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a958a0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a95980();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96210();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a96250();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_006d14e0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_006d14e0();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94c60();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a94e40();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a97470();
  FUN_00a801a0(uVar1);
  uVar1 = FUN_00a91950();
  FUN_00a80200(uVar1);
  FUN_00a881c0("ssl2-md5",0x8001,&DAT_00da6060);
  FUN_00a881c0("ssl3-md5",0x8001,&DAT_00da6060);
  uVar1 = FUN_00a924c0();
  FUN_00a80200(uVar1);
  FUN_00a881c0("ssl3-sha1",0x8001,&DAT_00da6040);
  FUN_00a881c0("RSA-SHA1-2",0x8001,"RSA-SHA1");
  uVar1 = FUN_00a92520();
  FUN_00a80200(uVar1);
  uVar1 = FUN_00a92530();
  FUN_00a80200(uVar1);
  uVar1 = FUN_00a92590();
  FUN_00a80200(uVar1);
  uVar1 = FUN_00a925a0();
  FUN_00a80200(uVar1);
  uVar1 = FUN_00a94b50();
  FUN_00a80200(uVar1);
  FUN_00a881c0("DSA-SHA1-old",0x8001,"DSA-SHA1");
  FUN_00a881c0(&DAT_00da5ff8,0x8001,"DSA-SHA1");
  FUN_00a881c0(&DAT_00da5ff0,0x8001,"DSA-SHA1");
  uVar1 = FUN_00a94b10();
  FUN_00a80200(uVar1);
  FUN_00afda30();
  FUN_00afbf50();
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00afbee0(undefined4 param_1)

{
  int iVar1;
  undefined4 local_8;
  int local_4;
  
  local_4 = 0;
  local_8 = 0;
  iVar1 = FUN_00a8f370(&local_4,param_1,0xffffffff);
  if (iVar1 != 0) {
    FUN_00a8f480(&local_8,0,0,0,0,iVar1);
  }
  if (local_4 != 0) {
    FUN_00a8f1b0(local_4);
  }
  return local_8;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

void FUN_00afbf50(void)

{
  DAT_032edbf8 = FUN_00a802b0("DES-CBC");
  DAT_032edbfc = FUN_00a802b0("DES-EDE3-CBC");
  DAT_032edc00 = FUN_00a802b0(&DAT_00dab660);
  DAT_032edc04 = FUN_00a802b0("RC2-CBC");
  DAT_032edc08 = FUN_00a802b0("IDEA-CBC");
  DAT_032edc10 = FUN_00a802b0("AES-128-CBC");
  DAT_032edc14 = FUN_00a802b0("AES-256-CBC");
  DAT_032edc18 = FUN_00a802b0("CAMELLIA-128-CBC");
  DAT_032edc1c = FUN_00a802b0("CAMELLIA-256-CBC");
  DAT_032edc20 = FUN_00a802b0("gost89-cnt");
  DAT_032edc24 = FUN_00a802b0("SEED-CBC");
  DAT_032edc28 = FUN_00a802b0("id-aes128-GCM");
  DAT_032edc2c = FUN_00a802b0("id-aes256-GCM");
  DAT_032edc34 = FUN_00a802c0(&DAT_00da6060);
  _DAT_032edc4c = FUN_00a92600(DAT_032edc34);
  if (_DAT_032edc4c < 0) {
    FUN_00a7fd60(".\\ssl\\ssl_ciph.c",0x193,"ssl_mac_secret_size[SSL_MD_MD5_IDX] >= 0");
  }
  DAT_032edc38 = FUN_00a802c0(&DAT_00da6040);
  _DAT_032edc50 = FUN_00a92600(DAT_032edc38);
  if (_DAT_032edc50 < 0) {
    FUN_00a7fd60(".\\ssl\\ssl_ciph.c",0x198,"ssl_mac_secret_size[SSL_MD_SHA1_IDX] >= 0");
  }
  DAT_032edc3c = FUN_00a802c0("md_gost94");
  if (DAT_032edc3c != 0) {
    _DAT_032edc54 = FUN_00a92600(DAT_032edc3c);
    if (_DAT_032edc54 < 0) {
      FUN_00a7fd60(".\\ssl\\ssl_ciph.c",0x19f,"ssl_mac_secret_size[SSL_MD_GOST94_IDX] >= 0");
    }
  }
  DAT_032edc40 = FUN_00a802c0("gost-mac");
  DAT_032436dc = FUN_00afbee0("gost-mac");
  if (DAT_032436dc != 0) {
    _DAT_032edc58 = 0x20;
  }
  DAT_032edc44 = FUN_00a802c0("SHA256");
  DAT_032edc5c = FUN_00a92600(DAT_032edc44);
  DAT_032edc48 = FUN_00a802c0("SHA384");
  _DAT_032edc60 = FUN_00a92600(DAT_032edc48);
  return;
}



void FUN_00afc150(void)

{
  int iVar1;
  undefined4 *puVar2;
  int *piVar3;
  
  FUN_00a7fdc0(5,0x10,".\\ssl\\ssl_ciph.c",0x1bd);
  if (DAT_032edc30 == 0) {
    FUN_00a7fdc0(6,0x10,".\\ssl\\ssl_ciph.c",0x1c0);
    FUN_00a7fdc0(9,0x10,".\\ssl\\ssl_ciph.c",0x1c1);
    if (DAT_032edc30 == 0) {
      FUN_00a843c0(3);
      DAT_032edc30 = FUN_00a80c80(&LAB_00afc130);
      if (DAT_032edc30 != 0) {
        puVar2 = (undefined4 *)FUN_00a84f80(0xc,".\\ssl\\ssl_ciph.c",0x1cc);
        if (puVar2 != (undefined4 *)0x0) {
          piVar3 = (int *)FUN_00b54690();
          puVar2[2] = piVar3;
          iVar1 = DAT_032edc30;
          if ((piVar3 == (int *)0x0) || (*piVar3 != 0)) {
            *puVar2 = 1;
            puVar2[1] = piVar3[1];
            FUN_00a80df0(iVar1,puVar2);
          }
          else {
            FUN_00a85120(puVar2);
          }
        }
        FUN_00a80f30(DAT_032edc30);
      }
      FUN_00a843c0(2);
    }
    FUN_00a7fdc0(10,0x10,".\\ssl\\ssl_ciph.c",0x1e1);
    return;
  }
  FUN_00a7fdc0(6,0x10,".\\ssl\\ssl_ciph.c",0x1e3);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00afc270(uint *param_1,int *param_2,int *param_3,int *param_4,undefined4 *param_5,
            undefined4 *param_6)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  uint local_c [2];
  undefined4 uStack_4;
  
  uStack_4 = 0xafc27a;
  uVar1 = param_1[0x2d];
  if (uVar1 == 0) {
    return 0;
  }
  if (param_6 != (undefined4 *)0x0) {
    FUN_00afc150();
    *param_6 = 0;
    local_c[0] = param_1[0x2c];
    if (DAT_032edc30 != 0) {
      iVar2 = FUN_00a81100(DAT_032edc30,local_c);
      if (iVar2 < 0) {
        *param_6 = 0;
      }
      else {
        uVar3 = FUN_00a80ee0(DAT_032edc30,iVar2);
        *param_6 = uVar3;
      }
    }
  }
  if (param_2 == (int *)0x0) {
    return 0;
  }
  if (param_3 == (int *)0x0) {
    return 0;
  }
  uVar4 = *(uint *)(uVar1 + 0x14);
  if (uVar4 < 0x81) {
    if (uVar4 == 0x80) {
      *param_2 = DAT_032edc14;
    }
    else {
      switch(uVar4) {
      case 1:
        *param_2 = DAT_032edbf8;
        break;
      case 2:
        *param_2 = DAT_032edbfc;
        break;
      default:
switchD_00afc323_caseD_3:
        *param_2 = 0;
        break;
      case 4:
        *param_2 = DAT_032edc00;
        break;
      case 8:
        *param_2 = DAT_032edc04;
        break;
      case 0x10:
        *param_2 = DAT_032edc08;
        break;
      case 0x20:
        iVar2 = FUN_00b546a0();
        *param_2 = iVar2;
        break;
      case 0x40:
        *param_2 = DAT_032edc10;
      }
    }
  }
  else if (uVar4 < 0x801) {
    if (uVar4 == 0x800) {
      *param_2 = DAT_032edc24;
    }
    else if (uVar4 == 0x100) {
      *param_2 = DAT_032edc18;
    }
    else if (uVar4 == 0x200) {
      *param_2 = DAT_032edc1c;
    }
    else {
      if (uVar4 != 0x400) goto switchD_00afc323_caseD_3;
      *param_2 = DAT_032edc20;
    }
  }
  else if (uVar4 == 0x1000) {
    *param_2 = DAT_032edc28;
  }
  else {
    if (uVar4 != 0x2000) goto switchD_00afc323_caseD_3;
    *param_2 = DAT_032edc2c;
  }
  switch(*(undefined4 *)(uVar1 + 0x18)) {
  case 1:
    iVar2 = 0;
    break;
  case 2:
    iVar2 = 1;
    break;
  default:
    *param_3 = 0;
    if (param_4 != (int *)0x0) {
      *param_4 = 0;
    }
    if (param_5 != (undefined4 *)0x0) {
      *param_5 = 0;
    }
    if (*(int *)(uVar1 + 0x18) == 0x40) {
      param_4 = (int *)0x0;
    }
    goto LAB_00afc4e0;
  case 4:
    iVar2 = 2;
    break;
  case 8:
    iVar2 = 3;
    break;
  case 0x10:
    iVar2 = 4;
    break;
  case 0x20:
    iVar2 = 5;
  }
  *param_3 = (&DAT_032edc34)[iVar2];
  if (param_4 != (int *)0x0) {
    *param_4 = *(int *)(iVar2 * 4 + 0x32436d0);
  }
  if (param_5 != (undefined4 *)0x0) {
    *param_5 = *(undefined4 *)(&DAT_032edc4c + iVar2 * 4);
  }
LAB_00afc4e0:
  if (((*param_2 == 0) ||
      ((*param_3 == 0 && (uVar4 = FUN_00aa5680(*param_2), (uVar4 & 0x200000) == 0)))) ||
     ((param_4 != (int *)0x0 && (*param_4 == 0)))) {
    return 0;
  }
  if (((*param_1 & 0xffffff00) == 0x300) && (0x300 < (int)*param_1)) {
    if ((*(int *)(uVar1 + 0x14) != 4) ||
       ((*(int *)(uVar1 + 0x18) != 1 || (iVar2 = FUN_00a802b0("RC4-HMAC-MD5"), iVar2 == 0)))) {
      if ((*(int *)(uVar1 + 0x14) == 0x40) &&
         ((*(int *)(uVar1 + 0x18) == 2 &&
          (iVar2 = FUN_00a802b0("AES-128-CBC-HMAC-SHA1"), iVar2 != 0)))) {
        *param_2 = iVar2;
        *param_3 = 0;
        return 1;
      }
      if (*(int *)(uVar1 + 0x14) != 0x80) {
        return 1;
      }
      if (*(int *)(uVar1 + 0x18) != 2) {
        return 1;
      }
      iVar2 = FUN_00a802b0("AES-256-CBC-HMAC-SHA1");
      if (iVar2 == 0) {
        return 1;
      }
    }
    *param_2 = iVar2;
    *param_3 = 0;
  }
  return 1;
}



undefined4 FUN_00afc670(uint param_1,int *param_2,undefined4 *param_3)

{
  int iVar1;
  
  if (5 < param_1) {
    return 0;
  }
  iVar1 = *(int *)(&DAT_032436e8 + param_1 * 4);
  *param_2 = iVar1;
  if (iVar1 != 0) {
    *param_3 = (&DAT_032edc34)[param_1];
    return 1;
  }
  *param_3 = 0;
  return 1;
}



void __fastcall FUN_00afc6b0(int *param_1_00,int *param_2,int param_1)

{
  if (param_1 != *param_2) {
    if (param_1 == *param_1_00) {
      *param_1_00 = *(int *)(param_1 + 0x10);
    }
    if (*(int *)(param_1 + 0xc) != 0) {
      *(undefined4 *)(*(int *)(param_1 + 0xc) + 0x10) = *(undefined4 *)(param_1 + 0x10);
    }
    if (*(int *)(param_1 + 0x10) != 0) {
      *(undefined4 *)(*(int *)(param_1 + 0x10) + 0xc) = *(undefined4 *)(param_1 + 0xc);
    }
    *(int *)(*param_2 + 0x10) = param_1;
    *(int *)(param_1 + 0xc) = *param_2;
    *(undefined4 *)(param_1 + 0x10) = 0;
    *param_2 = param_1;
  }
  return;
}



void FUN_00afc700(uint *param_1,undefined4 *param_2)

{
  int iVar1;
  uint uVar2;
  uint *unaff_EBX;
  uint *unaff_ESI;
  uint *unaff_EDI;
  
  *param_1 = 0;
  *unaff_EBX = 0;
  *unaff_ESI = 0;
  *unaff_EDI = 0;
  *param_2 = 0;
  *param_1 = *param_1 | 6;
  *unaff_EBX = *unaff_EBX | 8;
  *param_1 = *param_1 | 0x10;
  *unaff_EBX = *unaff_EBX | 0x20;
  iVar1 = FUN_00afbee0("gost94");
  if (iVar1 == 0) {
    *unaff_EBX = *unaff_EBX | 0x100;
  }
  iVar1 = FUN_00afbee0("gost2001");
  if (iVar1 == 0) {
    *unaff_EBX = *unaff_EBX | 0x200;
  }
  if ((*unaff_EBX & 0x300) == 0x300) {
    *param_1 = *param_1 | 0x200;
  }
  *unaff_ESI = *unaff_ESI | (uint)(DAT_032edbf8 == 0);
  uVar2 = (-(uint)(DAT_032edbfc != 0) & 0xfffffffe) + 2 | *unaff_ESI;
  *unaff_ESI = uVar2;
  uVar2 = (-(uint)(DAT_032edc00 != 0) & 0xfffffffc) + 4 | uVar2;
  *unaff_ESI = uVar2;
  uVar2 = (-(uint)(DAT_032edc04 != 0) & 0xfffffff8) + 8 | uVar2;
  *unaff_ESI = uVar2;
  uVar2 = (-(uint)(DAT_032edc08 != 0) & 0xfffffff0) + 0x10 | uVar2;
  *unaff_ESI = uVar2;
  uVar2 = (-(uint)(DAT_032edc10 != 0) & 0xffffffc0) + 0x40 | uVar2;
  *unaff_ESI = uVar2;
  uVar2 = (-(uint)(DAT_032edc14 != 0) & 0xffffff80) + 0x80 | uVar2;
  *unaff_ESI = uVar2;
  uVar2 = (-(uint)(DAT_032edc28 != 0) & 0xfffff000) + 0x1000 | uVar2;
  *unaff_ESI = uVar2;
  uVar2 = (-(uint)(DAT_032edc2c != 0) & 0xffffe000) + 0x2000 | uVar2;
  *unaff_ESI = uVar2;
  uVar2 = (-(uint)(DAT_032edc18 != 0) & 0xffffff00) + 0x100 | uVar2;
  *unaff_ESI = uVar2;
  uVar2 = (-(uint)(DAT_032edc1c != 0) & 0xfffffe00) + 0x200 | uVar2;
  *unaff_ESI = uVar2;
  uVar2 = (-(uint)(DAT_032edc20 != 0) & 0xfffffc00) + 0x400 | uVar2;
  *unaff_ESI = uVar2;
  *unaff_ESI = (-(uint)(DAT_032edc24 != 0) & 0xfffff800) + 0x800 | uVar2;
  *unaff_EDI = *unaff_EDI | (uint)(DAT_032edc34 == 0);
  uVar2 = (-(uint)(DAT_032edc38 != 0) & 0xfffffffe) + 2 | *unaff_EDI;
  *unaff_EDI = uVar2;
  uVar2 = (-(uint)(DAT_032edc44 != 0) & 0xfffffff0) + 0x10 | uVar2;
  *unaff_EDI = uVar2;
  uVar2 = (-(uint)(DAT_032edc48 != 0) & 0xffffffe0) + 0x20 | uVar2;
  *unaff_EDI = uVar2;
  uVar2 = (-(uint)(DAT_032edc3c != 0) & 0xfffffffc) + 4 | uVar2;
  *unaff_EDI = uVar2;
  if ((DAT_032edc40 != 0) && (DAT_032436dc != 0)) {
    *unaff_EDI = uVar2;
    return;
  }
  *unaff_EDI = uVar2 | 8;
  return;
}



void FUN_00afc920(int param_1,int param_2,uint param_3,uint param_4,uint param_5,uint param_6,
                 uint param_7,int param_8,int *param_9,int *param_10)

{
  int *piVar1;
  int iVar2;
  undefined4 *puVar3;
  int iVar4;
  
  iVar2 = 0;
  iVar4 = 0;
  if (0 < param_2) {
    puVar3 = (undefined4 *)(param_8 + 0x10);
    do {
      piVar1 = (int *)(**(code **)(param_1 + 0x58))(iVar2);
      if ((((piVar1 != (int *)0x0) && (*piVar1 != 0)) && ((piVar1[3] & param_3) == 0)) &&
         ((((piVar1[4] & param_4) == 0 && ((piVar1[5] & param_5) == 0)) &&
          (((piVar1[6] & param_6) == 0 && ((piVar1[7] & param_7) == 0)))))) {
        puVar3[-4] = piVar1;
        puVar3[-1] = 0;
        *puVar3 = 0;
        puVar3[-3] = 0;
        iVar4 = iVar4 + 1;
        puVar3 = puVar3 + 5;
      }
      iVar2 = iVar2 + 1;
    } while (iVar2 < param_2);
    if (0 < iVar4) {
      *(undefined4 *)(param_8 + 0x10) = 0;
      if (1 < iVar4) {
        *(int *)(param_8 + 0xc) = param_8 + 0x14;
        if (1 < iVar4 + -1) {
          piVar1 = (int *)(param_8 + 0x24);
          iVar2 = iVar4 + -2;
          do {
            *piVar1 = (int)(piVar1 + -9);
            piVar1[-1] = (int)(piVar1 + 1);
            piVar1 = piVar1 + 5;
            iVar2 = iVar2 + -1;
          } while (iVar2 != 0);
        }
        *(int *)(param_8 + -4 + iVar4 * 0x14) = param_8 + (iVar4 * 5 + -10) * 4;
      }
      iVar2 = param_8 + iVar4 * 0x14;
      *(undefined4 *)(iVar2 + -8) = 0;
      *param_9 = param_8;
      *param_10 = iVar2 + -0x14;
    }
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __fastcall
FUN_00afca10(uint param_1_00,uint param_2_00,uint **param_1,int param_2,uint param_3,uint param_4,
            uint param_5,uint **param_6)

{
  uint *puVar1;
  
  if (param_6 != (uint **)0x0) {
    do {
      *param_1 = *param_6;
      param_6 = (uint **)param_6[3];
      param_1 = param_1 + 1;
    } while (param_6 != (uint **)0x0);
  }
  if (0 < param_2) {
    puVar1 = &DAT_00dcae68;
    param_6 = (uint **)param_2;
    do {
      if ((((((puVar1[-1] == 0) || ((~param_3 & puVar1[-1]) != 0)) &&
            ((*puVar1 == 0 || ((~param_4 & *puVar1) != 0)))) &&
           ((puVar1[1] == 0 || ((~param_2_00 & puVar1[1]) != 0)))) &&
          ((puVar1[2] == 0 || ((~param_1_00 & puVar1[2]) != 0)))) &&
         ((puVar1[3] == 0 || ((~param_5 & puVar1[3]) != 0)))) {
        *param_1 = puVar1 + -4;
        param_1 = param_1 + 1;
      }
      puVar1 = puVar1 + 0xc;
      param_6 = (uint **)((int)param_6 + -1);
    } while (param_6 != (uint **)0x0);
  }
  *param_1 = (uint *)0x0;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00afcaf0(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,uint param_6,
                 int param_7,int param_8,int **param_9,int **param_10)

{
  int iVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  int *piVar6;
  int *local_14;
  int *local_10;
  int *local_4;
  
  local_14 = *param_9;
  piVar6 = *param_10;
  piVar4 = local_14;
  local_4 = piVar6;
  if (param_7 == 3) {
    piVar4 = piVar6;
    local_4 = local_14;
  }
  piVar2 = local_14;
  piVar5 = piVar4;
  local_10 = piVar6;
  if (piVar4 == (int *)0x0) {
    *param_9 = local_14;
    *param_10 = piVar6;
    return;
  }
LAB_00afcb45:
  do {
    piVar3 = piVar4;
    if (piVar5 == local_4) {
      *param_9 = piVar2;
      *param_10 = piVar6;
      return;
    }
    if (param_7 != 3) {
      piVar4 = (int *)piVar3[3];
    }
    else {
      piVar4 = (int *)piVar3[4];
    }
    iVar1 = *piVar3;
    piVar5 = piVar3;
    if (param_8 < 0) goto LAB_00afcb79;
  } while (param_8 != *(int *)(iVar1 + 0x28));
  goto LAB_00afcbf9;
LAB_00afcb79:
  if ((((((param_1 == 0) || ((*(uint *)(iVar1 + 0xc) & param_1) != 0)) &&
        ((param_2 == 0 || ((*(uint *)(iVar1 + 0x10) & param_2) != 0)))) &&
       ((param_3 == 0 || ((*(uint *)(iVar1 + 0x14) & param_3) != 0)))) &&
      ((param_4 == 0 || ((*(uint *)(iVar1 + 0x18) & param_4) != 0)))) &&
     ((((param_5 == 0 || ((*(uint *)(iVar1 + 0x1c) & param_5) != 0)) &&
       (((param_6 & 3) == 0 || ((*(uint *)(iVar1 + 0x20) & param_6 & 3) != 0)))) &&
      (((param_6 & 0x1fc) == 0 || ((*(uint *)(iVar1 + 0x20) & param_6 & 0x1fc) != 0)))))) {
LAB_00afcbf9:
    if (param_7 == 1) {
      if (piVar3[1] == 0) {
        if (piVar3 != piVar6) {
          if (piVar3 == piVar2) {
            piVar2 = (int *)piVar3[3];
            local_14 = piVar2;
          }
          if (piVar3[4] != 0) {
            *(int *)(piVar3[4] + 0xc) = piVar3[3];
          }
          if (piVar3[3] != 0) {
            *(int *)(piVar3[3] + 0x10) = piVar3[4];
          }
          piVar6[3] = (int)piVar3;
          piVar3[4] = (int)piVar6;
          piVar3[3] = 0;
          piVar6 = piVar3;
          local_10 = piVar3;
        }
        piVar3[1] = 1;
      }
    }
    else if (param_7 == 4) {
      if ((piVar3[1] != 0) && (piVar3 != piVar6)) {
        if (piVar3 == piVar2) {
          piVar2 = (int *)piVar3[3];
          local_14 = piVar2;
        }
        if (piVar3[4] != 0) {
          *(int *)(piVar3[4] + 0xc) = piVar3[3];
        }
        if (piVar3[3] != 0) {
          *(int *)(piVar3[3] + 0x10) = piVar3[4];
        }
        piVar6[3] = (int)piVar3;
        piVar3[4] = (int)piVar6;
        piVar3[3] = 0;
        piVar6 = piVar3;
        local_10 = piVar3;
      }
    }
    else if (param_7 == 3) {
      if (piVar3[1] != 0) {
        FUN_00afc6b0(piVar3);
        piVar3[1] = 0;
        piVar2 = local_14;
        piVar6 = local_10;
      }
    }
    else if (param_7 == 2) {
      if (piVar2 == piVar3) {
        piVar2 = (int *)piVar3[3];
        local_14 = piVar2;
      }
      else {
        *(int *)(piVar3[4] + 0xc) = piVar3[3];
      }
      if (piVar6 == piVar3) {
        piVar6 = (int *)piVar3[4];
        local_10 = piVar6;
      }
      piVar3[1] = 0;
      if (piVar3[3] != 0) {
        *(int *)(piVar3[3] + 0x10) = piVar3[4];
      }
      if (piVar3[4] != 0) {
        *(int *)(piVar3[4] + 0xc) = piVar3[3];
      }
      piVar3[3] = 0;
      piVar3[4] = 0;
    }
  }
  goto LAB_00afcb45;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00afcd40(int **param_1,int **param_2)

{
  int **ppiVar1;
  int *piVar2;
  size_t _Size;
  int *piVar3;
  void *_Dst;
  int *piVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  int iVar8;
  
  iVar8 = 0;
  for (piVar7 = *param_1; piVar7 != (int *)0x0; piVar7 = (int *)piVar7[3]) {
    if ((piVar7[1] != 0) && (iVar8 < *(int *)(*piVar7 + 0x28))) {
      iVar8 = *(int *)(*piVar7 + 0x28);
    }
  }
  _Size = iVar8 * 4 + 4;
  _Dst = (void *)FUN_00a84f80(_Size,".\\ssl\\ssl_ciph.c",0x431);
  if (_Dst == (void *)0x0) {
    FUN_00a7f3c0(0x14,0xe7,0x41,".\\ssl\\ssl_ciph.c",0x434);
    return 0;
  }
  _memset(_Dst,0,_Size);
  for (piVar7 = *param_1; piVar7 != (int *)0x0; piVar7 = (int *)piVar7[3]) {
    if (piVar7[1] != 0) {
      piVar2 = (int *)((int)_Dst + *(int *)(*piVar7 + 0x28) * 4);
      *piVar2 = *piVar2 + 1;
    }
  }
  for (; -1 < iVar8; iVar8 = iVar8 + -1) {
    if (0 < *(int *)((int)_Dst + iVar8 * 4)) {
      piVar7 = *param_1;
      piVar2 = *param_2;
      piVar4 = piVar7;
      piVar5 = piVar2;
      piVar3 = piVar7;
      if (piVar7 != (int *)0x0) {
        while (piVar6 = piVar3, piVar4 != piVar2) {
          ppiVar1 = (int **)(piVar6 + 3);
          piVar3 = *ppiVar1;
          piVar4 = piVar6;
          if ((((iVar8 < 0) || (iVar8 == *(int *)(*piVar6 + 0x28))) && (piVar6[1] != 0)) &&
             (piVar6 != piVar5)) {
            if (piVar6 == piVar7) {
              piVar7 = piVar3;
            }
            if (piVar6[4] != 0) {
              *(int **)(piVar6[4] + 0xc) = piVar3;
            }
            if (*ppiVar1 != (int *)0x0) {
              (*ppiVar1)[4] = piVar6[4];
            }
            piVar5[3] = (int)piVar6;
            piVar6[4] = (int)piVar5;
            *ppiVar1 = (int *)0x0;
            piVar5 = piVar6;
          }
        }
      }
      *param_1 = piVar7;
      *param_2 = piVar5;
    }
  }
  FUN_00a85120(_Dst);
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00afceb0(char *param_1,undefined4 param_2,undefined4 param_3,int *param_4)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  bool bVar4;
  char cVar5;
  int iVar6;
  size_t _MaxCount;
  char *pcVar7;
  char *_Str1;
  int iVar8;
  undefined4 local_28;
  int local_24;
  uint local_20;
  uint local_1c;
  uint local_18;
  uint local_14;
  uint local_10;
  
  cVar5 = *param_1;
  local_28 = 1;
  pcVar7 = param_1;
  if (cVar5 == '\0') {
    return 1;
  }
  do {
    if (cVar5 == '-') {
      local_24 = 3;
      pcVar7 = pcVar7 + 1;
LAB_00afcf3b:
      local_10 = 0;
      local_14 = 0;
      local_18 = 0;
      local_1c = 0;
      local_20 = 0;
      param_1 = (char *)0x0;
      do {
        _Str1 = pcVar7;
        iVar8 = 0;
        _MaxCount = 0;
        for (pcVar7 = _Str1;
            (((((cVar5 = *pcVar7, '@' < cVar5 && (cVar5 < '[')) || (('/' < cVar5 && (cVar5 < ':'))))
              || (('`' < cVar5 && (cVar5 < '{')))) || (cVar5 == '-')) || (cVar5 == '.'));
            pcVar7 = pcVar7 + 1) {
          _MaxCount = _MaxCount + 1;
        }
        if (_MaxCount == 0) {
          FUN_00a7f3c0(0x14,0xe6,0x118,".\\ssl\\ssl_ciph.c",0x493);
          bVar4 = false;
          local_28 = 0;
          pcVar7 = pcVar7 + 1;
          break;
        }
        if (local_24 == 5) goto LAB_00afd02b;
        if (cVar5 == '+') {
          pcVar7 = pcVar7 + 1;
        }
        bVar4 = false;
        iVar6 = *param_4;
        piVar1 = param_4;
        while( true ) {
          if (iVar6 == 0) goto LAB_00afd020;
          iVar6 = _strncmp(_Str1,*(char **)(*piVar1 + 4),_MaxCount);
          if ((iVar6 == 0) && (*(char *)(_MaxCount + *(int *)(*piVar1 + 4)) == '\0')) break;
          iVar8 = iVar8 + 1;
          iVar6 = param_4[iVar8];
          piVar1 = param_4 + iVar8;
        }
        piVar1 = (int *)param_4[iVar8];
        uVar2 = piVar1[3];
        bVar4 = true;
        uVar3 = local_10;
        if (((((uVar2 != 0) &&
              ((uVar3 = uVar2, local_10 != 0 &&
               (local_10 = local_10 & uVar2, uVar3 = local_10, local_10 == 0)))) ||
             ((local_10 = uVar3, uVar2 = piVar1[4], uVar3 = local_14, uVar2 != 0 &&
              ((uVar3 = uVar2, local_14 != 0 &&
               (local_14 = local_14 & uVar2, uVar3 = local_14, local_14 == 0)))))) ||
            ((local_14 = uVar3, uVar2 = piVar1[5], uVar3 = local_18, uVar2 != 0 &&
             ((uVar3 = uVar2, local_18 != 0 &&
              (local_18 = local_18 & uVar2, uVar3 = local_18, local_18 == 0)))))) ||
           ((local_18 = uVar3, uVar2 = piVar1[6], uVar3 = local_1c, uVar2 != 0 &&
            ((uVar3 = uVar2, local_1c != 0 &&
             (local_1c = local_1c & uVar2, uVar3 = local_1c, local_1c == 0)))))) {
LAB_00afd01e:
          bVar4 = false;
          break;
        }
        local_1c = uVar3;
        uVar2 = piVar1[8];
        if ((uVar2 & 3) != 0) {
          if (((uint)param_1 & 3) == 0) {
            param_1 = (char *)((uint)param_1 | uVar2 & 3);
          }
          else {
            param_1 = (char *)((uint)param_1 & (uVar2 | 0xfffffffc));
            if (((uint)param_1 & 3) == 0) goto LAB_00afd01e;
          }
        }
        if ((uVar2 & 0x1fc) != 0) {
          if (((uint)param_1 & 0x1fc) == 0) {
            param_1 = (char *)((uint)param_1 | uVar2 & 0x1fc);
          }
          else {
            param_1 = (char *)((uint)param_1 & (uVar2 | 0xfffffe03));
            if (((uint)param_1 & 0x1fc) == 0) goto LAB_00afd01e;
          }
        }
        uVar2 = local_20;
        if ((((*piVar1 == 0) && (uVar3 = piVar1[7], uVar3 != 0)) && (uVar2 = uVar3, local_20 != 0))
           && (local_20 = local_20 & uVar3, uVar2 = local_20, local_20 == 0)) goto LAB_00afd01e;
        local_20 = uVar2;
      } while (cVar5 == '+');
LAB_00afd020:
      if (local_24 == 5) {
LAB_00afd02b:
        if ((_MaxCount == 8) && (iVar8 = _strncmp(_Str1,"STRENGTH",8), iVar8 == 0)) {
          iVar8 = FUN_00afcd40(param_2,param_3);
          if (iVar8 == 0) goto LAB_00afd068;
        }
        else {
          FUN_00a7f3c0(0x14,0xe6,0x118,".\\ssl\\ssl_ciph.c",0x52c);
LAB_00afd068:
          local_28 = 0;
        }
        cVar5 = *pcVar7;
        while( true ) {
          if (cVar5 == '\0') {
            return local_28;
          }
          if ((((cVar5 == ':') || (cVar5 == ' ')) || (cVar5 == ';')) || (cVar5 == ',')) break;
          cVar5 = pcVar7[1];
          pcVar7 = pcVar7 + 1;
        }
      }
      else if (bVar4) {
        FUN_00afcaf0(local_10,local_14,local_18,local_1c,local_20,param_1,local_24,0xffffffff,
                     param_2,param_3);
      }
      else {
        cVar5 = *pcVar7;
        if (cVar5 == '\0') {
          return local_28;
        }
        while (((cVar5 != ':' && (cVar5 != ' ')) && ((cVar5 != ';' && (cVar5 != ','))))) {
          cVar5 = pcVar7[1];
          pcVar7 = pcVar7 + 1;
          if (cVar5 == '\0') {
            return local_28;
          }
        }
      }
      if (*pcVar7 == '\0') {
        return local_28;
      }
    }
    else {
      if (cVar5 == '+') {
        local_24 = 4;
        pcVar7 = pcVar7 + 1;
        goto LAB_00afcf3b;
      }
      if (cVar5 == '!') {
        local_24 = 2;
        pcVar7 = pcVar7 + 1;
        goto LAB_00afcf3b;
      }
      if (cVar5 == '@') {
        local_24 = 5;
        pcVar7 = pcVar7 + 1;
        goto LAB_00afcf3b;
      }
      local_24 = 1;
      if ((((cVar5 != ':') && (cVar5 != ' ')) && (cVar5 != ';')) && (cVar5 != ','))
      goto LAB_00afcf3b;
      pcVar7 = pcVar7 + 1;
    }
    cVar5 = *pcVar7;
    if (cVar5 == '\0') {
      return local_28;
    }
  } while( true );
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00afd290(int param_1,int *param_2,int *param_3,char *param_4)

{
  int **ppiVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  int *piVar5;
  int iVar6;
  char *pcVar7;
  int *piVar8;
  int *piVar9;
  int iVar10;
  int *piVar11;
  int *piVar12;
  char *pcVar13;
  int *local_24;
  int *local_20;
  int iStack_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  int iStack_4;
  
  iStack_4 = 0xafd29a;
  local_20 = (int *)0x0;
  local_24 = (int *)0x0;
  if (((param_4 == (char *)0x0) || (param_2 == (int *)0x0)) || (param_3 == (int *)0x0)) {
    return 0;
  }
  FUN_00afc700(&local_10,&local_18);
  iVar3 = (**(code **)(param_1 + 0x54))();
  iStack_4 = iVar3;
  iStack_1c = FUN_00a84f80(iVar3 * 0x14,".\\ssl\\ssl_ciph.c",0x56a);
  if (iStack_1c == 0) {
    FUN_00a7f3c0(0x14,0xa6,0x41,".\\ssl\\ssl_ciph.c",0x56d);
    return 0;
  }
  FUN_00afc920(param_1,iVar3,local_10,local_14,local_8,local_c,local_18,iStack_1c,&local_20,
               &local_24);
  piVar4 = local_20;
  piVar5 = local_24;
  piVar8 = local_20;
  if (local_20 != (int *)0x0) {
    while (piVar9 = piVar8, piVar8 = local_20, piVar4 != local_24) {
      ppiVar1 = (int **)(piVar9 + 3);
      piVar8 = *ppiVar1;
      piVar4 = piVar9;
      if (((*(byte *)(*piVar9 + 0xc) & 0x80) != 0) && (piVar9[1] == 0)) {
        if (piVar9 != piVar5) {
          if (piVar9 == local_20) {
            local_20 = piVar8;
          }
          if (piVar9[4] != 0) {
            *(int **)(piVar9[4] + 0xc) = piVar8;
          }
          if (*ppiVar1 != (int *)0x0) {
            (*ppiVar1)[4] = piVar9[4];
          }
          piVar5[3] = (int)piVar9;
          piVar9[4] = (int)piVar5;
          *ppiVar1 = (int *)0x0;
          piVar5 = piVar9;
        }
        piVar9[1] = 1;
      }
    }
  }
  local_24 = piVar8;
  piVar4 = piVar5;
  local_20 = piVar5;
  if (piVar5 != (int *)0x0) {
    while (piVar9 = piVar4, piVar5 != piVar8) {
      piVar4 = (int *)piVar9[4];
      piVar5 = piVar9;
      if (((*(byte *)(*piVar9 + 0xc) & 0x80) != 0) && (piVar9[1] != 0)) {
        FUN_00afc6b0(piVar9);
        piVar9[1] = 0;
      }
    }
  }
  piVar4 = local_24;
  piVar5 = local_20;
  piVar8 = local_24;
  if (local_24 != (int *)0x0) {
    while (piVar9 = piVar8, piVar4 != local_20) {
      ppiVar1 = (int **)(piVar9 + 3);
      piVar8 = *ppiVar1;
      piVar4 = piVar9;
      if (((*(uint *)(*piVar9 + 0x14) & 0x30c0) != 0) && (piVar9[1] == 0)) {
        if (piVar9 != piVar5) {
          if (piVar9 == local_24) {
            local_24 = piVar8;
          }
          if (piVar9[4] != 0) {
            *(int **)(piVar9[4] + 0xc) = piVar8;
          }
          if (*ppiVar1 != (int *)0x0) {
            (*ppiVar1)[4] = piVar9[4];
          }
          piVar5[3] = (int)piVar9;
          piVar9[4] = (int)piVar5;
          *ppiVar1 = (int *)0x0;
          piVar5 = piVar9;
        }
        piVar9[1] = 1;
      }
    }
  }
  piVar4 = local_24;
  piVar9 = piVar5;
  piVar8 = local_24;
  if (local_24 != (int *)0x0) {
    while (piVar11 = piVar8, piVar4 != piVar5) {
      ppiVar1 = (int **)(piVar11 + 3);
      piVar8 = *ppiVar1;
      piVar4 = piVar11;
      if (piVar11[1] == 0) {
        if (piVar11 != piVar9) {
          if (piVar11 == local_24) {
            local_24 = piVar8;
          }
          if (piVar11[4] != 0) {
            *(int **)(piVar11[4] + 0xc) = piVar8;
          }
          if (*ppiVar1 != (int *)0x0) {
            (*ppiVar1)[4] = piVar11[4];
          }
          piVar9[3] = (int)piVar11;
          piVar11[4] = (int)piVar9;
          *ppiVar1 = (int *)0x0;
          piVar9 = piVar11;
        }
        piVar11[1] = 1;
      }
    }
  }
  piVar4 = local_24;
  piVar5 = piVar9;
  piVar8 = local_24;
  if (local_24 != (int *)0x0) {
    while (piVar11 = piVar8, piVar4 != piVar9) {
      ppiVar1 = (int **)(piVar11 + 3);
      piVar8 = *ppiVar1;
      piVar4 = piVar11;
      if ((((*(byte *)(*piVar11 + 0x18) & 1) != 0) && (piVar11[1] != 0)) && (piVar11 != piVar5)) {
        if (piVar11 == local_24) {
          local_24 = piVar8;
        }
        if (piVar11[4] != 0) {
          *(int **)(piVar11[4] + 0xc) = piVar8;
        }
        if (*ppiVar1 != (int *)0x0) {
          (*ppiVar1)[4] = piVar11[4];
        }
        piVar5[3] = (int)piVar11;
        piVar11[4] = (int)piVar5;
        *ppiVar1 = (int *)0x0;
        piVar5 = piVar11;
      }
    }
  }
  piVar4 = local_24;
  piVar9 = piVar5;
  piVar8 = local_24;
  if (local_24 != (int *)0x0) {
    while (piVar11 = piVar8, piVar4 != piVar5) {
      ppiVar1 = (int **)(piVar11 + 3);
      piVar8 = *ppiVar1;
      piVar4 = piVar11;
      if ((((*(byte *)(*piVar11 + 0x10) & 4) != 0) && (piVar11[1] != 0)) && (piVar11 != piVar9)) {
        if (piVar11 == local_24) {
          local_24 = piVar8;
        }
        if (piVar11[4] != 0) {
          *(int **)(piVar11[4] + 0xc) = piVar8;
        }
        if (*ppiVar1 != (int *)0x0) {
          (*ppiVar1)[4] = piVar11[4];
        }
        piVar9[3] = (int)piVar11;
        piVar11[4] = (int)piVar9;
        *ppiVar1 = (int *)0x0;
        piVar9 = piVar11;
      }
    }
  }
  piVar4 = local_24;
  piVar5 = piVar9;
  piVar8 = local_24;
  local_20 = piVar9;
  if (local_24 != (int *)0x0) {
    while (piVar11 = piVar8, piVar4 != piVar9) {
      ppiVar1 = (int **)(piVar11 + 3);
      piVar8 = *ppiVar1;
      piVar4 = piVar11;
      if ((((*(byte *)(*piVar11 + 0x10) & 0x10) != 0) && (piVar11[1] != 0)) && (piVar11 != piVar5))
      {
        if (piVar11 == local_24) {
          local_24 = piVar8;
        }
        if (piVar11[4] != 0) {
          *(int **)(piVar11[4] + 0xc) = piVar8;
          piVar5 = local_20;
        }
        if (*ppiVar1 != (int *)0x0) {
          (*ppiVar1)[4] = piVar11[4];
          piVar5 = local_20;
        }
        piVar5[3] = (int)piVar11;
        piVar11[4] = (int)piVar5;
        *ppiVar1 = (int *)0x0;
        piVar5 = piVar11;
        local_20 = piVar11;
      }
    }
  }
  piVar4 = local_24;
  piVar9 = piVar5;
  piVar8 = local_24;
  local_20 = piVar5;
  if (local_24 != (int *)0x0) {
    while (piVar11 = piVar8, local_24 != piVar5) {
      ppiVar1 = (int **)(piVar11 + 3);
      piVar8 = *ppiVar1;
      local_24 = piVar11;
      if ((((*(byte *)(*piVar11 + 0xc) & 1) != 0) && (piVar11[1] != 0)) && (piVar11 != piVar9)) {
        if (piVar11 == piVar4) {
          piVar4 = piVar8;
        }
        if (piVar11[4] != 0) {
          *(int **)(piVar11[4] + 0xc) = piVar8;
          piVar9 = local_20;
        }
        if (*ppiVar1 != (int *)0x0) {
          (*ppiVar1)[4] = piVar11[4];
          piVar9 = local_20;
        }
        piVar9[3] = (int)piVar11;
        piVar11[4] = (int)piVar9;
        *ppiVar1 = (int *)0x0;
        piVar9 = piVar11;
        local_20 = piVar11;
      }
    }
  }
  piVar5 = piVar4;
  piVar11 = piVar9;
  piVar8 = piVar4;
  local_20 = piVar9;
  if (piVar4 != (int *)0x0) {
    while (piVar12 = piVar8, piVar5 != piVar9) {
      ppiVar1 = (int **)(piVar12 + 3);
      piVar8 = *ppiVar1;
      piVar5 = piVar12;
      if ((((*(uint *)(*piVar12 + 0xc) & 0x100) != 0) && (piVar12[1] != 0)) && (piVar12 != piVar11))
      {
        if (piVar12 == piVar4) {
          piVar4 = piVar8;
        }
        if (piVar12[4] != 0) {
          *(int **)(piVar12[4] + 0xc) = piVar8;
          piVar11 = local_20;
        }
        if (*ppiVar1 != (int *)0x0) {
          (*ppiVar1)[4] = piVar12[4];
          piVar11 = local_20;
        }
        piVar11[3] = (int)piVar12;
        piVar12[4] = (int)piVar11;
        *ppiVar1 = (int *)0x0;
        piVar11 = piVar12;
        local_20 = piVar12;
      }
    }
  }
  piVar5 = piVar4;
  piVar9 = piVar11;
  piVar8 = piVar4;
  local_20 = piVar11;
  if (piVar4 != (int *)0x0) {
    while (piVar12 = piVar8, piVar5 != piVar11) {
      ppiVar1 = (int **)(piVar12 + 3);
      piVar8 = *ppiVar1;
      piVar5 = piVar12;
      if ((((*(byte *)(*piVar12 + 0xc) & 0x10) != 0) && (piVar12[1] != 0)) && (piVar12 != piVar9)) {
        if (piVar12 == piVar4) {
          piVar4 = piVar8;
        }
        if (piVar12[4] != 0) {
          *(int **)(piVar12[4] + 0xc) = piVar8;
          piVar9 = local_20;
        }
        if (*ppiVar1 != (int *)0x0) {
          (*ppiVar1)[4] = piVar12[4];
          piVar9 = local_20;
        }
        piVar9[3] = (int)piVar12;
        piVar12[4] = (int)piVar9;
        *ppiVar1 = (int *)0x0;
        piVar9 = piVar12;
        local_20 = piVar12;
      }
    }
  }
  piVar5 = piVar4;
  local_24 = piVar9;
  piVar8 = piVar4;
  local_20 = piVar4;
  if (piVar4 != (int *)0x0) {
    while (piVar11 = piVar8, piVar5 != piVar9) {
      ppiVar1 = (int **)(piVar11 + 3);
      piVar8 = *ppiVar1;
      piVar5 = piVar11;
      if ((((*(byte *)(*piVar11 + 0x14) & 4) != 0) && (piVar11[1] != 0)) && (piVar11 != local_24)) {
        if (piVar11 == piVar4) {
          local_20 = piVar8;
        }
        if (piVar11[4] != 0) {
          *(int **)(piVar11[4] + 0xc) = piVar8;
        }
        if (*ppiVar1 != (int *)0x0) {
          (*ppiVar1)[4] = piVar11[4];
        }
        local_24[3] = (int)piVar11;
        piVar11[4] = (int)local_24;
        *ppiVar1 = (int *)0x0;
        piVar4 = local_20;
        local_24 = piVar11;
      }
    }
  }
  local_20 = piVar4;
  iVar3 = FUN_00afcd40(&local_20,&local_24);
  piVar8 = local_20;
  if (iVar3 == 0) goto LAB_00afd900;
  piVar4 = local_24;
  piVar5 = local_24;
  piVar9 = local_20;
  if (local_24 != (int *)0x0) {
    while (piVar11 = piVar4, piVar9 = local_20, piVar5 != piVar8) {
      piVar4 = (int *)piVar11[4];
      piVar5 = piVar11;
      if (piVar11[1] != 0) {
        FUN_00afc6b0(piVar11);
        piVar11[1] = 0;
      }
    }
  }
  local_20 = piVar9;
  iVar3 = FUN_00a84f80(iStack_4 * 4 + 0x128,".\\ssl\\ssl_ciph.c",0x5aa);
  if (iVar3 == 0) {
    FUN_00a85120(iStack_1c);
    FUN_00a7f3c0(0x14,0xa6,0x41,".\\ssl\\ssl_ciph.c",0x5ae);
    return 0;
  }
  FUN_00afca10(iVar3,0x49,local_10,local_14,local_18,piVar9);
  iVar10 = 1;
  iVar6 = _strncmp(param_4,"DEFAULT",7);
  pcVar13 = param_4;
  if (iVar6 == 0) {
    iVar10 = FUN_00afceb0("ALL:!aNULL:!eNULL:!SSLv2",&local_20,&local_24,iVar3);
    pcVar13 = param_4 + 7;
    if (*pcVar13 == ':') {
      pcVar13 = param_4 + 8;
    }
    if (iVar10 != 0) goto LAB_00afd8cd;
  }
  else {
LAB_00afd8cd:
    pcVar7 = pcVar13;
    do {
      cVar2 = *pcVar7;
      pcVar7 = pcVar7 + 1;
    } while (cVar2 != '\0');
    if (pcVar7 != pcVar13 + 1) {
      iVar10 = FUN_00afceb0(pcVar13,&local_20,&local_24,iVar3);
    }
  }
  FUN_00a85120(iVar3);
  if (iVar10 != 0) {
    iVar3 = FUN_00a81010();
    piVar8 = local_20;
    if (iVar3 == 0) {
      FUN_00a85120(iStack_1c);
      return 0;
    }
    for (; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[3]) {
      if (piVar8[1] != 0) {
        FUN_00a80df0(iVar3,*piVar8);
      }
    }
    FUN_00a85120(iStack_1c);
    iVar6 = FUN_00a80f80(iVar3);
    if (iVar6 == 0) {
      FUN_00a80ea0(iVar3);
      return 0;
    }
    if (*param_2 != 0) {
      FUN_00a80ea0(*param_2);
    }
    *param_2 = iVar3;
    if (*param_3 != 0) {
      FUN_00a80ea0(*param_3);
    }
    *param_3 = iVar6;
    FUN_00a80c60(iVar6,&LAB_00af9ea0);
    FUN_00a80f30(*param_3);
    return iVar3;
  }
LAB_00afd900:
  FUN_00a85120(iStack_1c);
  return 0;
}



int * FUN_00afd9e0(int param_1,int param_2)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  
  if ((param_2 != 0) && (param_1 != 0)) {
    iVar1 = FUN_00a80ed0(param_1);
    iVar3 = 0;
    if (0 < iVar1) {
      do {
        piVar2 = (int *)FUN_00a80ee0(param_1,iVar3);
        if (*piVar2 == param_2) {
          return piVar2;
        }
        iVar3 = iVar3 + 1;
      } while (iVar3 < iVar1);
    }
    return (int *)0x0;
  }
  return (int *)0x0;
}



undefined4 FUN_00afda30(void)

{
  FUN_00afc150();
  return DAT_032edc30;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00afda90(int *param_1)

{
  undefined4 *_Str2;
  byte *pbVar1;
  undefined *puVar2;
  void *pvVar3;
  short sVar4;
  byte bVar5;
  int iVar6;
  uint uVar7;
  short sVar8;
  uint uVar9;
  int iVar10;
  uint uVar11;
  size_t sVar12;
  undefined *puVar13;
  undefined4 uVar14;
  undefined4 uVar15;
  uint local_24;
  undefined *puStack_20;
  uint local_1c;
  int local_18;
  undefined *puStack_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined2 local_8;
  char local_6;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_24;
  sVar12 = 0;
  iVar10 = 0;
  if (param_1[0xd] != 0x2210) goto LAB_00afdcaf;
  iVar6 = FUN_00b05b70(param_1);
  if ((iVar6 == 0) || (iVar6 = FUN_00b0fc20(param_1,0xb), iVar6 != 0xb)) goto LAB_00afe12a;
  _Str2 = (undefined4 *)param_1[0x13];
  local_10 = *_Str2;
  local_c = _Str2[1];
  local_8 = *(undefined2 *)(_Str2 + 2);
  local_6 = *(char *)((int)_Str2 + 10);
  sVar12 = 0xb;
  if ((*(char *)_Str2 < '\0') && (*(char *)((int)_Str2 + 2) == '\x01')) {
    if ((*(char *)((int)_Str2 + 3) == '\0') && (*(char *)(_Str2 + 1) == '\x02')) {
      if ((param_1[0x40] & 0x1000000U) == 0) {
        iVar10 = 1;
      }
    }
    else if (*(char *)((int)_Str2 + 3) == '\x03') {
      if (*(char *)(_Str2 + 1) == '\0') {
        uVar7 = param_1[0x40];
LAB_00afdbb9:
        if ((uVar7 & 0x2000000) == 0) {
          *param_1 = 0x300;
          param_1[0xd] = 0x2211;
        }
        else if ((uVar7 & 0x1000000) == 0) {
          iVar10 = 1;
        }
      }
      else if ((*(byte *)(_Str2 + 1) < 3) || ((param_1[0x40] & 0x8000000U) != 0)) {
        if ((*(byte *)(_Str2 + 1) < 2) || ((param_1[0x40] & 0x10000000U) != 0)) {
          uVar7 = param_1[0x40];
          if ((uVar7 & 0x4000000) != 0) goto LAB_00afdbb9;
          *param_1 = 0x301;
          param_1[0xd] = 0x2211;
        }
        else {
          *param_1 = 0x302;
          param_1[0xd] = 0x2211;
        }
      }
      else {
        *param_1 = 0x303;
        param_1[0xd] = 0x2211;
      }
    }
LAB_00afdcaf:
    if (param_1[0xd] == 0x2211) {
      pbVar1 = (byte *)param_1[0x13];
      local_1c = (uint)pbVar1[4];
      local_24 = (*pbVar1 & 0x7f) << 8 | (uint)pbVar1[1];
      local_18 = 2;
      if (local_24 < 0x1001) {
        iVar10 = FUN_00b0fc20(param_1,local_24 + 2);
        if (iVar10 < 1) goto LAB_00afe12a;
        FUN_00b0f000(param_1,param_1[0x13] + 2,param_1[0x14] + -2);
        if ((code *)param_1[0x19] != (code *)0x0) {
          (*(code *)param_1[0x19])(0,2,0,param_1[0x13] + 2,param_1[0x14] + -2,param_1,param_1[0x1a])
          ;
        }
        iVar10 = param_1[0x13];
        uVar9 = (uint)CONCAT11(*(undefined *)(iVar10 + 7),*(undefined *)(iVar10 + 8));
        uVar11 = (uint)CONCAT11(*(undefined *)(iVar10 + 5),*(undefined *)(iVar10 + 6));
        uVar7 = (uint)CONCAT11(*(undefined *)(iVar10 + 9),*(undefined *)(iVar10 + 10));
        puVar2 = *(undefined **)(param_1[0xf] + 4);
        iVar10 = iVar10 + 0xb;
        if (uVar7 + uVar9 + 0xb + uVar11 == param_1[0x14]) {
          *puVar2 = 1;
          puStack_14 = puVar2 + 1;
          puVar2[4] = 3;
          puVar2[5] = (undefined)local_1c;
          sVar12 = 0x20;
          if (uVar7 < 0x21) {
            sVar12 = uVar7;
          }
          *(undefined4 *)(puVar2 + 6) = 0;
          *(undefined4 *)(puVar2 + 10) = 0;
          *(undefined4 *)(puVar2 + 0xe) = 0;
          *(undefined4 *)(puVar2 + 0x12) = 0;
          *(undefined4 *)(puVar2 + 0x16) = 0;
          *(undefined4 *)(puVar2 + 0x1a) = 0;
          *(undefined4 *)(puVar2 + 0x1e) = 0;
          *(undefined4 *)(puVar2 + 0x22) = 0;
          _memcpy((void *)((int)(puVar2 + 6) + (0x20 - sVar12)),(void *)(uVar9 + uVar11 + iVar10),
                  sVar12);
          puVar2[0x26] = 0;
          puStack_20 = puVar2 + 0x27;
          sVar8 = 0;
          puVar13 = puVar2 + 0x29;
          uVar7 = 0;
          sVar4 = 0;
          if (uVar11 != 0) {
            do {
              sVar8 = sVar4;
              if (*(char *)(uVar7 + iVar10) == '\0') {
                *puVar13 = *(undefined *)(uVar7 + 1 + iVar10);
                puVar13[1] = *(undefined *)(uVar7 + 2 + iVar10);
                puVar13 = puVar13 + 2;
                sVar8 = sVar8 + 2;
              }
              uVar7 = uVar7 + 3;
              sVar4 = sVar8;
            } while (uVar7 < uVar11);
          }
          puVar2[0x28] = (char)sVar8;
          *puStack_20 = (char)((ushort)sVar8 >> 8);
          *puVar13 = 1;
          puVar13[1] = 0;
          puVar13 = puVar13 + (-2 - *(int *)(param_1[0xf] + 4));
          *puStack_14 = (char)((uint)puVar13 >> 0x10);
          puStack_14[2] = (char)puVar13;
          puStack_14[1] = (char)((uint)puVar13 >> 8);
          *(undefined4 *)(param_1[0x16] + 0x354) = 1;
          *(undefined4 *)(param_1[0x16] + 0x340) = 1;
          *(undefined **)(param_1[0x16] + 0x33c) = puVar13;
          iVar10 = local_18;
          sVar12 = local_24;
          goto LAB_00afe015;
        }
        uVar15 = 0x1d7;
        uVar14 = 0xd5;
      }
      else {
        uVar15 = 0x1c2;
        uVar14 = 0xd6;
      }
    }
    else {
      if (iVar10 == 1) {
        if (param_1[0x15] == 0) {
          iVar10 = FUN_00b0e600();
          if (iVar10 == 0) goto LAB_00afe12a;
        }
        else {
          FUN_00b0e270(param_1);
        }
        if (param_1[0x16] != 0) {
          FUN_00b03300(param_1);
        }
        iVar10 = FUN_00a92b40(param_1[0xf],0x3fff);
        if (iVar10 != 0) {
          param_1[0xd] = 0x2010;
          if (((param_1[0x40] & 0x4000000U) == 0) || ((param_1[0x40] & 0x2000000U) == 0)) {
            *(undefined4 *)(param_1[0x15] + 0xc) = 1;
          }
          else {
            *(undefined4 *)(param_1[0x15] + 0xc) = 0;
          }
          param_1[0xe] = 0xf0;
          param_1[0x14] = sVar12;
          pvVar3 = *(void **)(param_1[0x15] + 0x30);
          param_1[0x13] = (int)pvVar3;
          _memcpy(pvVar3,&local_10,sVar12);
          *(size_t *)(param_1[0x15] + 0x28) = sVar12;
          *(undefined4 *)(param_1[0x15] + 0x2c) = 0;
          iVar10 = FUN_00b0e1b0();
          param_1[2] = iVar10;
          param_1[8] = *(int *)(iVar10 + 0x10);
          param_1[0x11] = 0;
          FUN_00afbcd0(param_1);
          ___security_check_cookie_4();
          return;
        }
        goto LAB_00afe12a;
      }
      if ((iVar10 == 2) || (iVar10 == 3)) {
LAB_00afe015:
        iVar6 = FUN_00afad00(param_1,1);
        if (iVar6 == 0) goto LAB_00afe12a;
        param_1[0xd] = 0x2110;
        if (iVar10 == 3) {
          param_1[0xe] = 0xf0;
          param_1[0x14] = sVar12;
          if ((*(int *)(param_1[0x16] + 0xec) == 0) && (iVar6 = FUN_00b059e0(param_1), iVar6 == 0))
          goto LAB_00afe12a;
          pvVar3 = *(void **)(param_1[0x16] + 0xec);
          param_1[0x13] = (int)pvVar3;
          _memcpy(pvVar3,&local_10,sVar12);
          *(size_t *)(param_1[0x16] + 0xf8) = sVar12;
          *(undefined4 *)(param_1[0x16] + 0xf4) = 0;
        }
        else {
          param_1[0x14] = 0;
          *(undefined4 *)(param_1[0x16] + 0xf8) = 0;
          *(undefined4 *)(param_1[0x16] + 0xf4) = 0;
        }
        iVar6 = *param_1;
        if (iVar6 == 0x303) {
          iVar6 = FUN_00b08780();
        }
        else if (iVar6 == 0x302) {
          iVar6 = FUN_00b08790();
        }
        else if (iVar6 == 0x301) {
          iVar6 = FUN_00b087e0();
        }
        else {
          iVar6 = FUN_00b0ca90();
        }
        param_1[2] = iVar6;
        param_1[8] = *(int *)(iVar6 + 0x10);
      }
      if ((0 < iVar10) && (iVar10 < 4)) {
        param_1[0x11] = 0;
        FUN_00afbcd0(param_1);
        ___security_check_cookie_4();
        return;
      }
      uVar15 = 0x274;
      uVar14 = 0xfc;
    }
  }
  else {
    if ((((*(char *)_Str2 == '\x16') && (*(char *)((int)_Str2 + 1) == '\x03')) &&
        (*(char *)((int)_Str2 + 5) == '\x01')) &&
       (((*(char *)((int)_Str2 + 3) == '\0' && (*(byte *)(_Str2 + 1) < 5)) ||
        (2 < *(byte *)((int)_Str2 + 9))))) {
      if ((*(char *)((int)_Str2 + 3) == '\0') && (*(byte *)(_Str2 + 1) < 6)) {
LAB_00afdc6c:
        if ((param_1[0x40] & 0x4000000U) == 0) {
LAB_00afdca4:
          *param_1 = 0x301;
        }
        else {
          if ((param_1[0x40] & 0x2000000U) != 0) goto LAB_00afdcaf;
          *param_1 = 0x300;
        }
      }
      else {
        if (*(byte *)((int)_Str2 + 9) < 4) {
          bVar5 = *(byte *)((int)_Str2 + 10);
          if (bVar5 != 0) {
            if (2 < bVar5) goto LAB_00afdc3f;
            goto LAB_00afdc53;
          }
          if ((param_1[0x40] & 0x2000000U) == 0) {
            *param_1 = 0x300;
            goto LAB_00afdcaa;
          }
          if ((param_1[0x40] & 0x4000000U) != 0) goto LAB_00afdcaf;
          goto LAB_00afdca4;
        }
        bVar5 = 0xff;
LAB_00afdc3f:
        if ((param_1[0x40] & 0x8000000U) == 0) {
          *param_1 = 0x303;
        }
        else {
LAB_00afdc53:
          if ((bVar5 < 2) || ((param_1[0x40] & 0x10000000U) != 0)) goto LAB_00afdc6c;
          *param_1 = 0x302;
        }
      }
LAB_00afdcaa:
      iVar10 = 3;
      goto LAB_00afdcaf;
    }
    iVar6 = _strncmp("GET ",(char *)_Str2,4);
    if ((((iVar6 == 0) || (iVar6 = _strncmp("POST ",(char *)_Str2,5), iVar6 == 0)) ||
        (iVar6 = _strncmp("HEAD ",(char *)_Str2,5), iVar6 == 0)) ||
       (iVar6 = _strncmp("PUT ",(char *)_Str2,4), iVar6 == 0)) {
      uVar15 = 0x1a2;
      uVar14 = 0x9c;
    }
    else {
      iVar6 = _strncmp("CONNECT",(char *)_Str2,7);
      if (iVar6 != 0) goto LAB_00afdcaf;
      uVar15 = 0x1a7;
      uVar14 = 0x9b;
    }
  }
  FUN_00a7f3c0(0x14,0x76,uVar14,".\\ssl\\s23_srvr.c",uVar15);
LAB_00afe12a:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00afe140(int param_1)

{
  int *piVar1;
  code *pcVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  code *pcVar6;
  undefined4 unaff_EBP;
  int iVar7;
  bool bVar8;
  __time64_t _Var9;
  undefined4 local_4;
  
  local_4 = 0xafe14a;
  _Var9 = __time64((__time64_t *)0x0);
  local_4 = (undefined4)_Var9;
  FUN_00a86df0(&local_4,4,0);
  FUN_00a7f4b0();
  SetLastError(0);
  pcVar2 = *(code **)(param_1 + 0xd0);
  if ((pcVar2 != (code *)0x0) ||
     (pcVar2 = *(code **)(*(int *)(param_1 + 0xe4) + 0x9c), pcVar6 = (code *)0x0,
     pcVar2 != (code *)0x0)) {
    pcVar6 = pcVar2;
  }
  *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + 1;
  uVar3 = FUN_00aa35c0();
  if (((uVar3 & 0x3000) == 0) || (uVar3 = FUN_00aa35c0(), (uVar3 & 0x4000) != 0)) {
    FUN_00afae80();
  }
  do {
    iVar7 = *(int *)(param_1 + 0x34);
    if (iVar7 < 0x2212) {
      if (0x220f < iVar7) {
        *(undefined4 *)(param_1 + 0x30) = 0;
        iVar7 = FUN_00afda90(param_1,unaff_EBP);
        if (-1 < iVar7) {
          pcVar6 = (code *)0x0;
        }
        goto LAB_00afe2d4;
      }
      if (iVar7 != 0x2000) {
        bVar8 = iVar7 == 0x2003;
        goto LAB_00afe201;
      }
    }
    else if (iVar7 != 0x4000) {
      bVar8 = iVar7 == 0x6000;
LAB_00afe201:
      if (!bVar8) {
        FUN_00a7f3c0(0x14,0x73,0xff,".\\ssl\\s23_srvr.c",0xd8);
LAB_00afe2d1:
        iVar7 = -1;
LAB_00afe2d4:
        *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + -1;
        if (pcVar6 != (code *)0x0) {
          (*pcVar6)(param_1,0x2002,iVar7);
        }
        return iVar7;
      }
    }
    *(undefined4 *)(param_1 + 0x24) = 1;
    if (pcVar6 != (code *)0x0) {
      (*pcVar6)(param_1,0x10,1);
    }
    *(undefined4 *)(param_1 + 4) = 0x2000;
    if (*(int *)(param_1 + 0x3c) == 0) {
      iVar4 = FUN_00a929e0();
      if ((iVar4 == 0) || (iVar5 = FUN_00a92a60(iVar4,0x4000), iVar5 == 0)) goto LAB_00afe2d1;
      *(int *)(param_1 + 0x3c) = iVar4;
    }
    FUN_00b0f810();
    *(undefined4 *)(param_1 + 0x34) = 0x2210;
    piVar1 = (int *)(*(int *)(param_1 + 0xe4) + 0x40);
    *piVar1 = *piVar1 + 1;
    *(undefined4 *)(param_1 + 0x44) = 0;
    if ((pcVar6 != (code *)0x0) && (iVar4 = *(int *)(param_1 + 0x34), iVar4 != iVar7)) {
      *(int *)(param_1 + 0x34) = iVar7;
      (*pcVar6)(param_1,0x2001);
      *(int *)(param_1 + 0x34) = iVar4;
    }
  } while( true );
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00afe300(void)

{
  int **ppiVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  int iVar5;
  int **unaff_EBX;
  int *unaff_EDI;
  
  iVar2 = FUN_00b05790(0);
  if (iVar2 < 0) {
    FUN_00a7f3c0(0x14,0xc1,0xf7,".\\ssl\\ssl_rsa.c",0xbd);
    return 0;
  }
  ppiVar1 = unaff_EBX + iVar2 * 3 + 0xc;
  if (*ppiVar1 != (int *)0x0) {
    uVar3 = FUN_00a82c40(*ppiVar1);
    FUN_00a81500(uVar3);
    FUN_00a816d0(uVar3);
    FUN_00a7f4b0();
    if (*unaff_EDI == 6) {
      uVar4 = FUN_00ad1270(unaff_EDI[5]);
      if ((uVar4 & 1) != 0) goto LAB_00afe3b0;
    }
    iVar5 = FUN_00a82c60(*ppiVar1);
    if (iVar5 == 0) {
      FUN_00a812c0(*ppiVar1);
      *ppiVar1 = (int *)0x0;
      return 0;
    }
  }
LAB_00afe3b0:
  if (unaff_EBX[iVar2 * 3 + 0xd] != (int *)0x0) {
    FUN_00a816d0(unaff_EBX[iVar2 * 3 + 0xd]);
  }
  FUN_00a7fe40(unaff_EDI + 2,1,10,".\\ssl\\ssl_rsa.c",0xdb);
  unaff_EBX[iVar2 * 3 + 0xd] = unaff_EDI;
  *unaff_EBX = (int *)ppiVar1;
  unaff_EBX[1] = (int *)0x0;
  return 1;
}



undefined4 FUN_00afe400(int param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  if (param_2 == 0) {
    FUN_00a7f3c0(0x14,0xc9,0x43,".\\ssl\\ssl_rsa.c",0x12d);
    return 0;
  }
  iVar1 = FUN_00aff770(param_1 + 0x98);
  if (iVar1 == 0) {
    FUN_00a7f3c0(0x14,0xc9,0x41,".\\ssl\\ssl_rsa.c",0x132);
    return 0;
  }
  uVar2 = FUN_00afe300();
  return uVar2;
}



undefined4 FUN_00afe470(int *param_1,int param_2)

{
  int **ppiVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  
  iVar2 = FUN_00a82c40(param_2);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x14,0xbf,0x10c,".\\ssl\\ssl_rsa.c",0x192);
    return 0;
  }
  iVar3 = FUN_00b05790(param_2,iVar2);
  if (iVar3 < 0) {
    FUN_00a7f3c0(0x14,0xbf,0xf7,".\\ssl\\ssl_rsa.c",0x199);
    FUN_00a816d0(iVar2);
    return 0;
  }
  ppiVar1 = (int **)(param_1 + iVar3 * 3 + 0xd);
  if (*ppiVar1 != (int *)0x0) {
    FUN_00a81500(iVar2,*ppiVar1);
    FUN_00a7f4b0();
    if (**ppiVar1 == 6) {
      uVar4 = FUN_00ad1270((*ppiVar1)[5]);
      if ((uVar4 & 1) != 0) goto LAB_00afe546;
    }
    iVar5 = FUN_00a82c60(param_2,*ppiVar1);
    if (iVar5 == 0) {
      FUN_00a816d0(*ppiVar1);
      *ppiVar1 = (int *)0x0;
      FUN_00a7f4b0();
    }
  }
LAB_00afe546:
  FUN_00a816d0(iVar2);
  iVar2 = iVar3 * 3 + 0xc;
  if (param_1[iVar2] != 0) {
    FUN_00a812c0(param_1[iVar2]);
  }
  FUN_00a7fe40(param_2 + 0x10,1,3,".\\ssl\\ssl_rsa.c",0x1bd);
  param_1[iVar2] = param_2;
  *param_1 = (int)(param_1 + iVar2);
  param_1[1] = 0;
  return 1;
}



undefined4 FUN_00afe610(int param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  
  if (param_2 == 0) {
    FUN_00a7f3c0(0x14,0xc6,0x43,".\\ssl\\ssl_rsa.c",0x49);
    return 0;
  }
  iVar1 = FUN_00aff770((undefined4 *)(param_1 + 0x98));
  if (iVar1 == 0) {
    FUN_00a7f3c0(0x14,0xc6,0x41,".\\ssl\\ssl_rsa.c",0x4e);
    return 0;
  }
  uVar2 = FUN_00afe470(*(undefined4 *)(param_1 + 0x98),param_2);
  return uVar2;
}



undefined4 FUN_00afe740(undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  
  uVar1 = FUN_00af9ed0(param_1);
  iVar3 = 0;
  iVar2 = FUN_00a80ed0(uVar1);
  if (0 < iVar2) {
    do {
      iVar2 = FUN_00a80ee0(uVar1,iVar3);
      if (*(int *)(iVar2 + 0x1c) == 1) {
        return 0;
      }
      iVar3 = iVar3 + 1;
      iVar2 = FUN_00a80ed0(uVar1);
    } while (iVar3 < iVar2);
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00afe790(int param_1)

{
  byte *pbVar1;
  code *pcVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  undefined4 uVar7;
  byte *pbVar8;
  uint uVar9;
  size_t _Size;
  undefined4 *puVar10;
  byte *pbVar11;
  undefined4 *puVar12;
  __time64_t _Var13;
  undefined4 uVar14;
  byte local_14;
  byte local_10;
  uint local_c;
  
  iVar3 = param_1;
  uVar9 = *(uint *)(param_1 + 0x100);
  local_c = ~(uVar9 >> 0x18) & 1;
  if ((local_c != 0) && (iVar4 = FUN_00afe740(param_1), iVar4 != 0)) {
    local_c = 0;
  }
  uVar5 = -(uint)(local_c != 0) & 0x1000000;
  iVar4 = 0x303;
  param_1 = 0x303;
  if (((uVar9 & 0x8000000) != 0) && (((uVar5 | 0x16000000) & uVar9) != (uVar5 | 0x16000000))) {
    param_1 = 0x302;
    iVar4 = 0x302;
  }
  if (((uVar9 & 0x10000000) != 0) && (((uVar5 | 0x6000000) & uVar9) != (uVar5 | 0x6000000))) {
    param_1 = 0x301;
    iVar4 = 0x301;
  }
  if (((uVar9 & 0x4000000) != 0) && (((uVar5 | 0x2000000) & uVar9) != (uVar5 | 0x2000000))) {
    param_1 = 0x300;
    iVar4 = 0x300;
  }
  if (((uVar9 & 0x2000000) == 0) || ((uVar5 & uVar9) == uVar5)) {
    if (iVar4 != 2) {
      if (*(int *)(iVar3 + 0x120) != 0) {
        local_c = 0;
      }
      if (*(int *)(iVar3 + 0x128) != -1) {
        local_c = 0;
      }
    }
  }
  else {
    param_1 = 2;
    iVar4 = 2;
  }
  pbVar1 = *(byte **)(*(int *)(iVar3 + 0x3c) + 4);
  if (*(int *)(iVar3 + 0x34) != 0x1210) goto LAB_00afec42;
  iVar6 = *(int *)(iVar3 + 0x58);
  _Var13 = __time64((__time64_t *)0x0);
  *(char *)(iVar6 + 0xc0) = (char)((ulonglong)_Var13 >> 0x18);
  *(char *)(iVar6 + 0xc1) = (char)((ulonglong)_Var13 >> 0x10);
  *(char *)(iVar6 + 0xc2) = (char)((ulonglong)_Var13 >> 8);
  *(char *)(iVar6 + 0xc3) = (char)_Var13;
  iVar6 = FUN_00a86ec0(iVar6 + 0xc4,0x1c);
  if (iVar6 < 1) {
    return -1;
  }
  if (iVar4 == 0x303) {
    local_14 = 3;
    local_10 = 3;
  }
  else if (iVar4 == 0x302) {
    local_14 = 3;
LAB_00afe94b:
    local_10 = 2;
  }
  else if (iVar4 == 0x301) {
    local_14 = 3;
    local_10 = 1;
  }
  else {
    if (iVar4 != 0x300) {
      if (iVar4 != 2) {
        FUN_00a7f3c0(0x14,0x74,0xbf,".\\ssl\\s23_clnt.c",0x18e);
        return -1;
      }
      local_14 = 0;
      goto LAB_00afe94b;
    }
    local_14 = 3;
    local_10 = 0;
  }
  *(int *)(iVar3 + 0x110) = iVar4;
  if (local_c == 0) {
    pbVar1[9] = local_14;
    pbVar1[10] = local_10;
    puVar10 = (undefined4 *)(*(int *)(iVar3 + 0x58) + 0xc0);
    puVar12 = (undefined4 *)(pbVar1 + 0xb);
    for (iVar4 = 8; iVar4 != 0; iVar4 = iVar4 + -1) {
      *puVar12 = *puVar10;
      puVar10 = puVar10 + 1;
      puVar12 = puVar12 + 1;
    }
    pbVar1[0x2b] = 0;
    uVar7 = FUN_00af9ed0(iVar3,pbVar1 + 0x2e,FUN_00b042e0);
    iVar4 = FUN_00af9f30(iVar3,uVar7);
    if (iVar4 != 0) {
      pbVar1[0x2c] = (byte)((uint)iVar4 >> 8);
      pbVar1[0x2d] = (byte)iVar4;
      if (((*(uint *)(iVar3 + 0x100) & 0x20000) == 0) &&
         (iVar6 = *(int *)(*(int *)(iVar3 + 0xe4) + 0x98), iVar6 != 0)) {
        iVar6 = FUN_00a80ed0(iVar6);
      }
      else {
        iVar6 = 0;
      }
      pbVar1[iVar4 + 0x2e] = (char)iVar6 + 1;
      pbVar11 = pbVar1 + iVar4 + 0x2e + 1;
      iVar4 = 0;
      if (0 < iVar6) {
        do {
          pbVar8 = (byte *)FUN_00a80ee0(*(undefined4 *)(*(int *)(iVar3 + 0xe4) + 0x98),iVar4);
          *pbVar11 = *pbVar8;
          iVar4 = iVar4 + 1;
          pbVar11 = pbVar11 + 1;
        } while (iVar4 < iVar6);
      }
      *pbVar11 = 0;
      iVar4 = FUN_00b070f0(iVar3);
      if (iVar4 < 1) {
        uVar14 = 0x20b;
        uVar7 = 0xe2;
        goto LAB_00afe9a9;
      }
      iVar4 = FUN_00b05e40(iVar3,pbVar11 + 1,pbVar1 + 0x4000);
      if (iVar4 == 0) {
        uVar14 = 0x210;
        uVar7 = 0x44;
        goto LAB_00afe9a9;
      }
      iVar6 = iVar4 - (int)(pbVar1 + 9);
      pbVar1[5] = 1;
      pbVar1[6] = (byte)((uint)iVar6 >> 0x10);
      pbVar1[8] = (byte)iVar6;
      uVar9 = iVar6 + 4;
      pbVar1[7] = (byte)((uint)iVar6 >> 8);
      if (0x4000 < uVar9) {
        uVar14 = 0x220;
        uVar7 = 0x44;
        goto LAB_00afe9a9;
      }
      *pbVar1 = 0x16;
      pbVar1[1] = local_14;
      if (((*(uint *)(iVar3 + 0x110) & 0xffffff00) == 0x300) &&
         (0x301 < (int)*(uint *)(iVar3 + 0x110))) {
        pbVar1[2] = 1;
      }
      else {
        pbVar1[2] = local_10;
      }
      pbVar1[4] = (byte)uVar9;
      pbVar1[3] = (byte)(uVar9 >> 8);
      *(int *)(iVar3 + 0x44) = iVar4 - (int)pbVar1;
      *(undefined4 *)(iVar3 + 0x48) = 0;
      FUN_00b0f000(iVar3,pbVar1 + 5,(iVar4 - (int)pbVar1) + -5);
      goto LAB_00afec30;
    }
    uVar14 = 0x1e6;
  }
  else {
    pbVar1[2] = 1;
    pbVar11 = pbVar1 + 0xb;
    pbVar1[3] = local_14;
    pbVar1[4] = local_10;
    uVar7 = FUN_00af9ed0(iVar3,pbVar11,0);
    iVar4 = FUN_00af9f30(iVar3,uVar7);
    if (iVar4 != 0) {
      pbVar1[6] = (byte)iVar4;
      pbVar1[5] = (byte)((uint)iVar4 >> 8);
      pbVar1[7] = 0;
      pbVar1[8] = 0;
      _Size = (-(uint)((*(byte *)(iVar3 + 0x100) & 2) != 0) & 0xfffffff0) + 0x20;
      pbVar1[10] = (byte)_Size;
      pbVar1[9] = (byte)(_Size >> 8);
      iVar6 = *(int *)(iVar3 + 0x58);
      *(undefined4 *)(iVar6 + 0xc0) = 0;
      *(undefined4 *)(iVar6 + 0xc4) = 0;
      *(undefined4 *)(iVar6 + 200) = 0;
      *(undefined4 *)(iVar6 + 0xcc) = 0;
      *(undefined4 *)(iVar6 + 0xd0) = 0;
      *(undefined4 *)(iVar6 + 0xd4) = 0;
      *(undefined4 *)(iVar6 + 0xd8) = 0;
      *(undefined4 *)(iVar6 + 0xdc) = 0;
      iVar6 = FUN_00a86ec0((*(int *)(iVar3 + 0x58) - _Size) + 0xe0,_Size);
      if (iVar6 < 1) {
        return -1;
      }
      _memcpy(pbVar11 + iVar4,(void *)((*(int *)(iVar3 + 0x58) - _Size) + 0xe0),_Size);
      pbVar11 = pbVar11 + iVar4 + (_Size - (int)pbVar1) + -2;
      *pbVar1 = (byte)((uint)pbVar11 >> 8) | 0x80;
      pbVar1[1] = (byte)pbVar11;
      *(byte **)(iVar3 + 0x44) = pbVar11 + 2;
      *(undefined4 *)(iVar3 + 0x48) = 0;
      FUN_00b0f000(iVar3,pbVar1 + 2,pbVar11);
LAB_00afec30:
      *(undefined4 *)(iVar3 + 0x34) = 0x1211;
      *(undefined4 *)(iVar3 + 0x48) = 0;
      iVar4 = param_1;
LAB_00afec42:
      iVar6 = FUN_00b0fbb0(iVar3);
      if ((1 < iVar6) && (pcVar2 = *(code **)(iVar3 + 100), pcVar2 != (code *)0x0)) {
        if (local_c != 0) {
          (*pcVar2)(1,2,0,*(int *)(*(int *)(iVar3 + 0x3c) + 4) + 2,iVar6 + -2,iVar3,
                    *(undefined4 *)(iVar3 + 0x68));
          return iVar6;
        }
        (*pcVar2)(1,iVar4,0x16,*(int *)(*(int *)(iVar3 + 0x3c) + 4) + 5,iVar6 + -5,iVar3,
                  *(undefined4 *)(iVar3 + 0x68));
      }
      return iVar6;
    }
    uVar14 = 0x1a5;
  }
  uVar7 = 0xb5;
LAB_00afe9a9:
  FUN_00a7f3c0(0x14,0x74,uVar7,".\\ssl\\s23_clnt.c",uVar14);
  return -1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00afecd0(void)

{
  byte bVar1;
  undefined4 *puVar2;
  int iVar3;
  size_t _Size;
  undefined4 uVar4;
  code *pcVar5;
  char cVar6;
  undefined2 uVar7;
  undefined4 *unaff_ESI;
  undefined4 uVar8;
  undefined auStack_c [4];
  undefined2 local_8;
  char local_6;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_c;
  iVar3 = FUN_00b0fc20();
  if (iVar3 != 7) goto LAB_00aff076;
  puVar2 = (undefined4 *)unaff_ESI[0x13];
  local_6 = *(char *)((int)puVar2 + 6);
  uVar8 = *puVar2;
  uVar7 = *(undefined2 *)(puVar2 + 1);
  cVar6 = (char)uVar8;
  local_8 = uVar7;
  if ((((cVar6 < '\0') && (*(char *)((int)puVar2 + 2) == '\x04')) &&
      (*(char *)((int)puVar2 + 5) == '\0')) && (*(char *)((int)puVar2 + 6) == '\x02')) {
    if ((unaff_ESI[0x40] & 0x1000000) == 0) {
      if (unaff_ESI[0x15] == 0) {
        iVar3 = FUN_00b0e600();
        if (iVar3 == 0) goto LAB_00aff076;
      }
      else {
        FUN_00b0e270();
      }
      _Size = (-(uint)((*(byte *)(unaff_ESI + 0x40) & 2) != 0) & 0xfffffff0) + 0x20;
      *(size_t *)(unaff_ESI[0x15] + 100) = _Size;
      _memcpy((void *)(unaff_ESI[0x15] + 0x68),(void *)((unaff_ESI[0x16] - _Size) + 0xe0),_Size);
      if (unaff_ESI[0x16] != 0) {
        FUN_00b03300();
      }
      iVar3 = FUN_00a92b40(unaff_ESI[0xf],0x3fff);
      if (iVar3 != 0) {
        unaff_ESI[0xd] = 0x1020;
        if (unaff_ESI[0x44] != 2) {
          *(undefined4 *)(unaff_ESI[0x15] + 0xc) = 1;
        }
        unaff_ESI[0xe] = 0xf0;
        unaff_ESI[0x14] = 7;
        puVar2 = *(undefined4 **)(unaff_ESI[0x15] + 0x30);
        unaff_ESI[0x13] = puVar2;
        *puVar2 = uVar8;
        *(undefined2 *)(puVar2 + 1) = uVar7;
        *(char *)((int)puVar2 + 6) = local_6;
        *(undefined4 *)(unaff_ESI[0x15] + 0x28) = 7;
        *(undefined4 *)(unaff_ESI[0x15] + 0x2c) = 0;
        *(undefined4 *)(unaff_ESI[0x15] + 0xd4) = 1;
        iVar3 = FUN_00b15510();
        unaff_ESI[2] = iVar3;
        unaff_ESI[8] = *(undefined4 *)(iVar3 + 0x14);
LAB_00aff013:
        unaff_ESI[0x11] = 0;
        iVar3 = FUN_00affdf0();
        if (iVar3 != 0) {
          FUN_00afbd00();
          ___security_check_cookie_4();
          return;
        }
        goto LAB_00aff076;
      }
      uVar8 = 0x288;
      iVar3 = 7;
    }
    else {
      uVar8 = 0x268;
      iVar3 = 0x102;
    }
  }
  else if (((*(char *)((int)puVar2 + 1) == '\x03') &&
           (bVar1 = *(byte *)((int)puVar2 + 2), bVar1 < 4)) &&
          (((cVar6 == '\x16' && (*(char *)((int)puVar2 + 5) == '\x02')) ||
           (((cVar6 == '\x15' && (*(char *)((int)puVar2 + 3) == '\0')) &&
            (*(char *)(puVar2 + 1) == '\x02')))))) {
    if ((bVar1 == 0) && ((unaff_ESI[0x40] & 0x2000000) == 0)) {
      *unaff_ESI = 0x300;
      uVar4 = FUN_00b13e60();
    }
    else if ((bVar1 == 1) && ((unaff_ESI[0x40] & 0x4000000) == 0)) {
      *unaff_ESI = 0x301;
      uVar4 = FUN_00b0fd00();
    }
    else if ((bVar1 == 2) && ((unaff_ESI[0x40] & 0x10000000) == 0)) {
      *unaff_ESI = 0x302;
      uVar4 = FUN_00b0fcb0();
    }
    else {
      if ((bVar1 != 3) || ((unaff_ESI[0x40] & 0x8000000) != 0)) {
        uVar8 = 0x2ca;
        iVar3 = 0x102;
        goto LAB_00aff064;
      }
      *unaff_ESI = 0x303;
      uVar4 = FUN_00b0fca0();
    }
    unaff_ESI[2] = uVar4;
    if ((*(char *)puVar2 != '\x15') || (uVar7 = local_8, *(char *)((int)puVar2 + 5) == '\x01')) {
      iVar3 = FUN_00afad00();
      if (iVar3 == 0) goto LAB_00aff076;
      unaff_ESI[0xd] = 0x1120;
      unaff_ESI[0xe] = 0xf0;
      unaff_ESI[0x14] = 7;
      if ((*(int *)(unaff_ESI[0x16] + 0xec) == 0) && (iVar3 = FUN_00b059e0(), iVar3 == 0))
      goto LAB_00aff076;
      puVar2 = *(undefined4 **)(unaff_ESI[0x16] + 0xec);
      unaff_ESI[0x13] = puVar2;
      *puVar2 = uVar8;
      *(undefined2 *)(puVar2 + 1) = uVar7;
      *(char *)((int)puVar2 + 6) = local_6;
      *(undefined4 *)(unaff_ESI[0x16] + 0xf8) = 7;
      *(undefined4 *)(unaff_ESI[0x16] + 0xf4) = 0;
      unaff_ESI[8] = *(undefined4 *)(unaff_ESI[2] + 0x14);
      goto LAB_00aff013;
    }
    pcVar5 = (code *)unaff_ESI[0x34];
    if ((pcVar5 != (code *)0x0) ||
       (pcVar5 = *(code **)(unaff_ESI[0x39] + 0x9c), pcVar5 != (code *)0x0)) {
      (*pcVar5)();
    }
    if ((code *)unaff_ESI[0x19] != (code *)0x0) {
      (*(code *)unaff_ESI[0x19])(0,*unaff_ESI,0x15,(char *)((int)puVar2 + 5),2);
    }
    unaff_ESI[6] = 1;
    uVar8 = 0x2e5;
    iVar3 = *(byte *)((int)puVar2 + 6) + 1000;
  }
  else {
    uVar8 = 0x2fe;
    iVar3 = 0xfc;
  }
LAB_00aff064:
  FUN_00a7f3c0(0x14,0x77,iVar3,".\\ssl\\s23_clnt.c",uVar8);
LAB_00aff076:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00aff090(int param_1)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  uint uVar4;
  int iVar5;
  code *pcVar6;
  undefined4 unaff_EBP;
  bool bVar7;
  __time64_t _Var8;
  undefined4 uVar9;
  undefined8 uVar10;
  int local_8;
  undefined4 local_4;
  
  local_4 = 0xaff09a;
  _Var8 = __time64((__time64_t *)0x0);
  local_4 = (undefined4)_Var8;
  FUN_00a86df0(&local_4,4,0);
  FUN_00a7f4b0();
  SetLastError(0);
  pcVar3 = *(code **)(param_1 + 0xd0);
  if ((pcVar3 != (code *)0x0) ||
     (pcVar3 = *(code **)(*(int *)(param_1 + 0xe4) + 0x9c), pcVar6 = (code *)0x0,
     pcVar3 != (code *)0x0)) {
    pcVar6 = pcVar3;
  }
  *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + 1;
  uVar4 = FUN_00aa35c0();
  if (((uVar4 & 0x3000) == 0) || (uVar4 = FUN_00aa35c0(), (uVar4 & 0x4000) != 0)) {
    FUN_00afae80();
  }
  while( true ) {
    local_8 = 0;
    iVar2 = *(int *)(param_1 + 0x34);
    if (0x1221 < iVar2) break;
    if (0x121f < iVar2) {
      iVar5 = FUN_00afecd0();
      if (-1 < iVar5) {
        pcVar6 = (code *)0x0;
      }
      goto LAB_00aff2b2;
    }
    if (iVar2 < 0x1004) {
      if (iVar2 != 0x1003) {
        bVar7 = iVar2 == 0x1000;
        goto LAB_00aff194;
      }
      goto LAB_00aff19a;
    }
    if ((iVar2 < 0x1210) || (0x1211 < iVar2)) goto LAB_00aff283;
    *(undefined4 *)(param_1 + 0x30) = 0;
    iVar5 = FUN_00afe790(param_1,unaff_EBP);
    if (iVar5 < 1) goto LAB_00aff2b2;
    *(undefined4 *)(param_1 + 0x34) = 0x1220;
LAB_00aff227:
    *(undefined4 *)(param_1 + 0x44) = 0;
    if (*(int *)(param_1 + 0xe8) != 0) {
      FUN_00a83650(*(undefined4 *)(param_1 + 0x10),0xb,0);
    }
    if ((pcVar6 != (code *)0x0) && (iVar5 = *(int *)(param_1 + 0x34), iVar5 != iVar2)) {
      *(int *)(param_1 + 0x34) = iVar2;
      (*pcVar6)(param_1,0x1001);
      *(int *)(param_1 + 0x34) = iVar5;
    }
  }
  if (iVar2 == 0x4000) {
LAB_00aff19a:
    if (*(int *)(param_1 + 0xc0) == 0) {
      *(undefined4 *)(param_1 + 0x24) = 0;
      if (pcVar6 != (code *)0x0) {
        (*pcVar6)(param_1,0x10,1);
      }
      *(undefined4 *)(param_1 + 4) = 0x1000;
      if (*(int *)(param_1 + 0x3c) == 0) {
        local_8 = FUN_00a929e0();
        if ((local_8 == 0) || (iVar5 = FUN_00a92a60(local_8,0x4000), iVar5 == 0)) goto LAB_00aff2af;
        *(int *)(param_1 + 0x3c) = local_8;
      }
      local_8 = 0;
      iVar5 = FUN_00b05b70(param_1);
      if (iVar5 != 0) {
        FUN_00b0f810();
        *(undefined4 *)(param_1 + 0x34) = 0x1210;
        piVar1 = (int *)(*(int *)(param_1 + 0xe4) + 0x34);
        *piVar1 = *piVar1 + 1;
        goto LAB_00aff227;
      }
      goto LAB_00aff2af;
    }
    uVar10 = CONCAT44(unaff_EBP,0xb2);
    uVar9 = 0xdd;
  }
  else {
    bVar7 = iVar2 == 0x5000;
LAB_00aff194:
    if (bVar7) goto LAB_00aff19a;
LAB_00aff283:
    uVar10 = CONCAT44(unaff_EBP,0xe8);
    uVar9 = 0xff;
  }
  FUN_00a7f3c0(0x14,0x75,uVar9,".\\ssl\\s23_clnt.c",uVar10);
LAB_00aff2af:
  iVar5 = -1;
LAB_00aff2b2:
  *(int *)(param_1 + 0x1c) = *(int *)(param_1 + 0x1c) + -1;
  if (local_8 != 0) {
    FUN_00a92a20();
  }
  if (pcVar6 != (code *)0x0) {
    (*pcVar6)(param_1,0x1002,iVar5);
  }
  return iVar5;
}



int FUN_00aff2f0(void)

{
  FUN_00a7fdc0(5,0xc,".\\ssl\\ssl_cert.c",0x8c);
  if (DAT_03243704 < 0) {
    FUN_00a7fdc0(6,0xc,".\\ssl\\ssl_cert.c",0x90);
    FUN_00a7fdc0(9,0xc,".\\ssl\\ssl_cert.c",0x91);
    if (DAT_03243704 < 0) {
      DAT_03243704 = FUN_00aeaa70(0,"SSL for verify callback",0,0,0);
    }
    FUN_00a7fdc0(10,0xc,".\\ssl\\ssl_cert.c",0x9c);
    return DAT_03243704;
  }
  FUN_00a7fdc0(6,0xc,".\\ssl\\ssl_cert.c",0x9e);
  return DAT_03243704;
}



int * FUN_00aff3a0(void)

{
  int *_Dst;
  int iVar1;
  
  _Dst = (int *)FUN_00a84f80(0x94,".\\ssl\\ssl_cert.c",0xb6);
  if (_Dst == (int *)0x0) {
    FUN_00a7f3c0(0x14,0xa2,0x41,".\\ssl\\ssl_cert.c",0xb9);
    return (int *)0x0;
  }
  _memset(_Dst,0,0x94);
  *_Dst = (int)(_Dst + 0xc);
  _Dst[0x24] = 1;
  iVar1 = FUN_00a924c0();
  _Dst[0x14] = iVar1;
  iVar1 = FUN_00a924c0();
  _Dst[0x11] = iVar1;
  iVar1 = FUN_00a924c0();
  _Dst[0xe] = iVar1;
  iVar1 = FUN_00a924c0();
  _Dst[0x1d] = iVar1;
  return _Dst;
}



int * FUN_00aff420(int *param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  
  piVar3 = (int *)FUN_00a84f80(0x94,".\\ssl\\ssl_cert.c",0xc9);
  if (piVar3 == (int *)0x0) {
    FUN_00a7f3c0(0x14,0xdd,0x41,".\\ssl\\ssl_cert.c",0xcc);
    return (int *)0x0;
  }
  _memset(piVar3,0,0x94);
  *piVar3 = (int)(piVar3 + (((*param_1 - (int)param_1) + -0x30) / 0xc + 4) * 3);
  piVar3[1] = param_1[1];
  piVar3[2] = param_1[2];
  piVar3[3] = param_1[3];
  piVar3[4] = param_1[4];
  piVar3[5] = param_1[5];
  if (param_1[6] != 0) {
    FUN_00a8e5b0(param_1[6]);
    piVar3[6] = param_1[6];
  }
  piVar3[7] = param_1[7];
  if (param_1[8] != 0) {
    iVar4 = FUN_00ad87e0(param_1[8]);
    piVar3[8] = iVar4;
    if (iVar4 == 0) {
      uVar6 = 0xeb;
      uVar5 = 5;
      goto LAB_00aff57c;
    }
    if (*(int *)(param_1[8] + 0x18) != 0) {
      iVar4 = FUN_00a9b160(*(int *)(param_1[8] + 0x18));
      if (iVar4 == 0) {
        uVar6 = 0xf3;
        uVar5 = 3;
        goto LAB_00aff57c;
      }
      *(int *)(piVar3[8] + 0x18) = iVar4;
    }
    if (*(int *)(param_1[8] + 0x14) != 0) {
      iVar4 = FUN_00a9b160(*(int *)(param_1[8] + 0x14));
      if (iVar4 == 0) {
        uVar6 = 0xfd;
        uVar5 = 3;
        goto LAB_00aff57c;
      }
      *(int *)(piVar3[8] + 0x14) = iVar4;
    }
  }
  piVar3[9] = param_1[9];
  if (param_1[10] != 0) {
    iVar4 = FUN_00a8ead0(param_1[10]);
    piVar3[10] = iVar4;
    if (iVar4 == 0) {
      uVar6 = 0x10c;
      uVar5 = 0x10;
LAB_00aff57c:
      FUN_00a7f3c0(0x14,0xdd,uVar5,".\\ssl\\ssl_cert.c",uVar6);
      if (piVar3[6] != 0) {
        FUN_00a8e490(piVar3[6]);
      }
      if (piVar3[8] != 0) {
        FUN_00a8ef50(piVar3[8]);
      }
      if (piVar3[10] != 0) {
        FUN_00a8e900(piVar3[10]);
      }
      piVar3 = piVar3 + 0xd;
      iVar4 = 8;
      do {
        if (piVar3[-1] != 0) {
          FUN_00a812c0(piVar3[-1]);
        }
        if (*piVar3 != 0) {
          FUN_00a816d0(*piVar3);
        }
        piVar3 = piVar3 + 3;
        iVar4 = iVar4 + -1;
      } while (iVar4 != 0);
      return (int *)0x0;
    }
  }
  piVar3[0xb] = param_1[0xb];
  iVar4 = 0;
  do {
    iVar1 = iVar4 * 3 + 0xc;
    iVar2 = param_1[iVar1];
    if (iVar2 != 0) {
      piVar3[iVar1] = iVar2;
      FUN_00a7fe40(iVar2 + 0x10,1,3,".\\ssl\\ssl_cert.c",0x119);
    }
    iVar1 = param_1[iVar4 * 3 + 0xd];
    if (iVar1 != 0) {
      piVar3[iVar4 * 3 + 0xd] = iVar1;
      FUN_00a7fe40(iVar1 + 8,1,10,".\\ssl\\ssl_cert.c",0x120);
      switch(iVar4) {
      case 0:
      case 1:
      case 2:
      case 3:
      case 4:
      case 5:
        break;
      default:
        FUN_00a7f3c0(0x14,0xdd,0x112,".\\ssl\\ssl_cert.c",0x13c);
      }
    }
    iVar4 = iVar4 + 1;
  } while (iVar4 < 8);
  piVar3[0x24] = 1;
  iVar4 = FUN_00a924c0();
  piVar3[0x14] = iVar4;
  iVar4 = FUN_00a924c0();
  piVar3[0x11] = iVar4;
  iVar4 = FUN_00a924c0();
  piVar3[0xe] = iVar4;
  iVar4 = FUN_00a924c0();
  piVar3[0x1d] = iVar4;
  return piVar3;
}



void FUN_00aff6d0(int param_1)

{
  int iVar1;
  int *piVar2;
  
  if (param_1 != 0) {
    iVar1 = FUN_00a7fe40(param_1 + 0x90,0xffffffff,0xd,".\\ssl\\ssl_cert.c",0x16f);
    if (iVar1 < 1) {
      if (*(int *)(param_1 + 0x18) != 0) {
        FUN_00a8e490(*(int *)(param_1 + 0x18));
      }
      if (*(int *)(param_1 + 0x20) != 0) {
        FUN_00a8ef50(*(int *)(param_1 + 0x20));
      }
      if (*(int *)(param_1 + 0x28) != 0) {
        FUN_00a8e900(*(int *)(param_1 + 0x28));
      }
      piVar2 = (int *)(param_1 + 0x34);
      iVar1 = 8;
      do {
        if (piVar2[-1] != 0) {
          FUN_00a812c0(piVar2[-1]);
        }
        if (*piVar2 != 0) {
          FUN_00a816d0(*piVar2);
        }
        piVar2 = piVar2 + 3;
        iVar1 = iVar1 + -1;
      } while (iVar1 != 0);
      FUN_00a85120(param_1);
    }
  }
  return;
}



undefined4 FUN_00aff770(int *param_1)

{
  int iVar1;
  
  if (param_1 == (int *)0x0) {
    FUN_00a7f3c0(0x14,0xde,0x43,".\\ssl\\ssl_cert.c",0x1a2);
    return 0;
  }
  if (*param_1 == 0) {
    iVar1 = FUN_00aff3a0();
    *param_1 = iVar1;
    if (iVar1 == 0) {
      FUN_00a7f3c0(0x14,0xde,0x41,".\\ssl\\ssl_cert.c",0x1a9);
      return 0;
    }
  }
  return 1;
}



void * FUN_00aff7d0(void)

{
  void *_Dst;
  
  _Dst = (void *)FUN_00a84f80(0x7c,".\\ssl\\ssl_cert.c",0x1b5);
  if (_Dst == (void *)0x0) {
    FUN_00a7f3c0(0x14,0xe1,0x41,".\\ssl\\ssl_cert.c",0x1b8);
    return (void *)0x0;
  }
  _memset(_Dst,0,0x7c);
  *(int *)((int)_Dst + 8) = (int)_Dst + 0xc;
  *(undefined4 *)((int)_Dst + 0x78) = 1;
  return _Dst;
}



void FUN_00aff830(int *param_1)

{
  int iVar1;
  int *piVar2;
  
  if (param_1 != (int *)0x0) {
    iVar1 = FUN_00a7fe40(param_1 + 0x1e,0xffffffff,0xf,".\\ssl\\ssl_cert.c",0x1ca);
    if (iVar1 < 1) {
      if (*param_1 != 0) {
        FUN_00a81120(*param_1,FUN_00a812c0);
      }
      iVar1 = 8;
      piVar2 = param_1;
      do {
        piVar2 = piVar2 + 3;
        if (*piVar2 != 0) {
          FUN_00a812c0(*piVar2);
        }
        iVar1 = iVar1 + -1;
      } while (iVar1 != 0);
      if (param_1[0x1b] != 0) {
        FUN_00a8e490(param_1[0x1b]);
      }
      if (param_1[0x1c] != 0) {
        FUN_00a8ef50(param_1[0x1c]);
      }
      if (param_1[0x1d] != 0) {
        FUN_00a8e900(param_1[0x1d]);
      }
      FUN_00a85120(param_1);
    }
  }
  return;
}



undefined4 FUN_00aff8e0(int param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1 + 4) = param_2;
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00aff900(int param_1,int param_2)

{
  code *pcVar1;
  int iVar2;
  undefined4 uVar3;
  char *pcVar4;
  undefined local_88 [100];
  undefined4 local_24;
  undefined4 uStack_4;
  
  uStack_4 = 0xaff90a;
  if (param_2 != 0) {
    iVar2 = FUN_00a80ed0(param_2);
    if (iVar2 != 0) {
      uVar3 = FUN_00a80ee0(param_2,0);
      iVar2 = FUN_00aebd60(local_88,*(undefined4 *)(*(int *)(param_1 + 0xe4) + 0xc),uVar3,param_2);
      if (iVar2 == 0) {
        FUN_00a7f3c0(0x14,0xcf,0xb,".\\ssl\\ssl_cert.c",0x209);
        return 0;
      }
      uVar3 = FUN_00aff2f0(param_1);
      FUN_00aeaaa0(local_88,uVar3);
      pcVar4 = "ssl_client";
      if (*(int *)(param_1 + 0x24) == 0) {
        pcVar4 = "ssl_server";
      }
      FUN_00aeab40(local_88,pcVar4);
      uVar3 = FUN_00aeab70(local_88,*(undefined4 *)(param_1 + 0x70));
      FUN_00a8f920(uVar3);
      if (*(int *)(param_1 + 0xcc) != 0) {
        FUN_00aeab30(local_88,*(int *)(param_1 + 0xcc));
      }
      pcVar1 = *(code **)(*(int *)(param_1 + 0xe4) + 100);
      if (pcVar1 == (code *)0x0) {
        uVar3 = FUN_00aeb220(local_88);
      }
      else {
        uVar3 = (*pcVar1)(local_88,*(undefined4 *)(*(int *)(param_1 + 0xe4) + 0x68));
      }
      *(undefined4 *)(param_1 + 0xec) = local_24;
      FUN_00aeaab0(local_88);
      return uVar3;
    }
  }
  return 0;
}



uint FUN_00affa40(uint *param_1)

{
  uint uVar1;
  
  if (param_1[1] != 0x1000) {
    uVar1 = param_1[0x3e];
    if (uVar1 == 0) {
      uVar1 = *(uint *)(param_1[0x39] + 0xa0);
    }
    return uVar1;
  }
  if (((*param_1 & 0xffffff00) == 0x300) && (param_1[0x16] != 0)) {
    return *(uint *)(param_1[0x16] + 0x36c);
  }
  return 0;
}



void * FUN_00affa90(void)

{
  void *_Dst;
  __time64_t _Var1;
  
  _Dst = (void *)FUN_00a84f80(0xf4,".\\ssl\\ssl_sess.c",0xc0);
  if (_Dst == (void *)0x0) {
    FUN_00a7f3c0(0x14,0xbd,0x41,".\\ssl\\ssl_sess.c",0xc3);
    return (void *)0x0;
  }
  _memset(_Dst,0,0xf4);
  *(undefined4 *)((int)_Dst + 0xa0) = 1;
  *(undefined4 *)((int)_Dst + 0xa4) = 1;
  *(undefined4 *)((int)_Dst + 0xa8) = 0x130;
  _Var1 = __time64((__time64_t *)0x0);
  *(int *)((int)_Dst + 0xac) = (int)_Var1;
  *(undefined4 *)((int)_Dst + 200) = 0;
  *(undefined4 *)((int)_Dst + 0xcc) = 0;
  *(undefined4 *)((int)_Dst + 0xb0) = 0;
  *(undefined4 *)((int)_Dst + 0xd0) = 0;
  *(undefined4 *)((int)_Dst + 0xd4) = 0;
  *(undefined4 *)((int)_Dst + 0xd8) = 0;
  *(undefined4 *)((int)_Dst + 0xdc) = 0;
  *(undefined4 *)((int)_Dst + 0xe0) = 0;
  FUN_00a80700(3,_Dst,(int)_Dst + 0xc0);
  *(undefined4 *)((int)_Dst + 0x8c) = 0;
  *(undefined4 *)((int)_Dst + 0x90) = 0;
  *(undefined4 *)((int)_Dst + 0xf0) = 0;
  return _Dst;
}



undefined4 FUN_00affb60(undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  int iVar1;
  uint uVar2;
  
  uVar2 = 0;
  while( true ) {
    iVar1 = FUN_00a86ec0(param_2,*param_3);
    if (iVar1 < 1) {
      return 0;
    }
    iVar1 = FUN_00af9910(param_1,param_2,*param_3);
    if (iVar1 == 0) break;
    uVar2 = uVar2 + 1;
    if (9 < uVar2) {
      return 0;
    }
  }
  if (9 < uVar2) {
    return 0;
  }
  return 1;
}



void FUN_00affbb0(int param_1)

{
  int iVar1;
  
  if (param_1 != 0) {
    iVar1 = FUN_00a7fe40(param_1 + 0xa4,0xffffffff,0xe,".\\ssl\\ssl_sess.c",0x2e4);
    if (iVar1 < 1) {
      FUN_00a80760(3,param_1,param_1 + 0xc0);
      FUN_00a84330(param_1 + 8,8);
      FUN_00a84330(param_1 + 0x14,0x30);
      FUN_00a84330(param_1 + 0x48,0x20);
      if (*(int *)(param_1 + 0x98) != 0) {
        FUN_00aff830(*(int *)(param_1 + 0x98));
      }
      if (*(int *)(param_1 + 0x9c) != 0) {
        FUN_00a812c0(*(int *)(param_1 + 0x9c));
      }
      if (*(int *)(param_1 + 0xbc) != 0) {
        FUN_00a80ea0(*(int *)(param_1 + 0xbc));
      }
      if (*(int *)(param_1 + 0xd0) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0xd0));
      }
      if (*(int *)(param_1 + 0xe4) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0xe4));
      }
      *(undefined4 *)(param_1 + 0xd4) = 0;
      if (*(int *)(param_1 + 0xd8) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0xd8));
      }
      *(undefined4 *)(param_1 + 0xdc) = 0;
      if (*(int *)(param_1 + 0xe0) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0xe0));
      }
      if (*(int *)(param_1 + 0x8c) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0x8c));
      }
      if (*(int *)(param_1 + 0x90) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0x90));
      }
      if (*(int *)(param_1 + 0xf0) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0xf0));
      }
      FUN_00a84330(param_1,0xf4);
      FUN_00a85120(param_1);
    }
  }
  return;
}



void FUN_00affd00(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int unaff_EDI;
  
  puVar2 = *(undefined4 **)(param_1 + 0xcc);
  if ((puVar2 != (undefined4 *)0x0) &&
     (puVar3 = *(undefined4 **)(param_1 + 200), puVar3 != (undefined4 *)0x0)) {
    puVar1 = (undefined4 *)(unaff_EDI + 0x1c);
    if (puVar2 == puVar1) {
      if (puVar3 == (undefined4 *)(unaff_EDI + 0x18)) {
        *(undefined4 *)(unaff_EDI + 0x18) = 0;
        *puVar1 = 0;
      }
      else {
        *puVar1 = puVar3;
        *(undefined4 **)(*(int *)(param_1 + 200) + 0xcc) = puVar1;
      }
    }
    else {
      puVar1 = (undefined4 *)(unaff_EDI + 0x18);
      if (puVar3 == puVar1) {
        *puVar1 = puVar2;
        *(undefined4 **)(*(int *)(param_1 + 0xcc) + 200) = puVar1;
      }
      else {
        puVar2[0x32] = puVar3;
        *(undefined4 *)(*(int *)(param_1 + 200) + 0xcc) = *(undefined4 *)(param_1 + 0xcc);
      }
    }
    *(undefined4 *)(param_1 + 0xcc) = 0;
    *(undefined4 *)(param_1 + 200) = 0;
  }
  return;
}



void __fastcall FUN_00affd90(int param_1)

{
  int *piVar1;
  int iVar2;
  int unaff_ESI;
  
  if ((*(int *)(unaff_ESI + 0xcc) != 0) && (*(int *)(unaff_ESI + 200) != 0)) {
    FUN_00affd00();
  }
  iVar2 = *(int *)(param_1 + 0x18);
  piVar1 = (int *)(param_1 + 0x18);
  if (iVar2 == 0) {
    *piVar1 = unaff_ESI;
    *(int *)(param_1 + 0x1c) = unaff_ESI;
    *(int **)(unaff_ESI + 200) = piVar1;
    *(int **)(unaff_ESI + 0xcc) = (int *)(param_1 + 0x1c);
    return;
  }
  *(int *)(unaff_ESI + 0xcc) = iVar2;
  *(int *)(iVar2 + 200) = unaff_ESI;
  *(int **)(unaff_ESI + 200) = piVar1;
  *piVar1 = unaff_ESI;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00affdf0(int *param_1,int param_2)

{
  uint uVar1;
  int *piVar2;
  int iVar3;
  code *pcVar4;
  void *pvVar5;
  code *pcVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  uint uStack_4;
  
  uStack_4 = 0xaffdfa;
  piVar2 = (int *)FUN_00affa90();
  if (piVar2 == (int *)0x0) {
    return 0;
  }
  iVar3 = *(int *)(param_1[0x5c] + 0x24);
  if (iVar3 == 0) {
    iVar3 = FUN_00af9b30(param_1);
  }
  piVar2[0x2a] = iVar3;
  if (param_1[0x30] != 0) {
    FUN_00affbb0(param_1[0x30]);
    param_1[0x30] = 0;
  }
  if (param_2 == 0) {
    piVar2[0x11] = 0;
LAB_00b000ca:
    if ((uint)param_1[0x27] < 0x21) {
      _memcpy(piVar2 + 0x1b,param_1 + 0x28,param_1[0x27]);
      piVar2[0x1a] = param_1[0x27];
      iVar3 = *param_1;
      param_1[0x30] = (int)piVar2;
      piVar2[0x28] = 0;
      *piVar2 = iVar3;
      return 1;
    }
    uVar8 = 0x1af;
  }
  else {
    iVar3 = *param_1;
    if (iVar3 == 2) {
      *piVar2 = 2;
      piVar2[0x11] = 0x10;
    }
    else {
      if (iVar3 == 0x300) {
        *piVar2 = 0x300;
      }
      else if (iVar3 == 0x301) {
        *piVar2 = 0x301;
      }
      else if (iVar3 == 0x302) {
        *piVar2 = 0x302;
      }
      else if (iVar3 == 0x303) {
        *piVar2 = 0x303;
      }
      else if (iVar3 == 0x100) {
        *piVar2 = 0x100;
      }
      else {
        if (iVar3 != 0xfeff) {
          uVar8 = 0x14d;
          uVar7 = 0x103;
          goto LAB_00b000e1;
        }
        *piVar2 = 0xfeff;
      }
      piVar2[0x11] = 0x20;
    }
    if (param_1[0x50] == 0) {
      FUN_00a7fdc0(5,0xc,".\\ssl\\ssl_sess.c",0x15a);
      pcVar4 = (code *)param_1[0x31];
      if ((pcVar4 != (code *)0x0) ||
         (pcVar4 = *(code **)(param_1[0x5c] + 0xec), pcVar6 = FUN_00affb60, pcVar4 != (code *)0x0))
      {
        pcVar6 = pcVar4;
      }
      FUN_00a7fdc0(6,0xc,".\\ssl\\ssl_sess.c",0x15f);
      uStack_4 = piVar2[0x11];
      iVar3 = (*pcVar6)(param_1,piVar2 + 0x12,&uStack_4);
      if (iVar3 == 0) {
        uVar8 = 0x166;
        uVar7 = 0x12d;
        goto LAB_00b000e1;
      }
      if (uStack_4 != 0) {
        uVar1 = piVar2[0x11];
        if (uStack_4 <= uVar1) {
          if ((uStack_4 < uVar1) && (*param_1 == 2)) {
            _memset((void *)(uStack_4 + 0x48 + (int)piVar2),0,uVar1 - uStack_4);
          }
          else {
            piVar2[0x11] = uStack_4;
          }
          iVar3 = FUN_00af9910(param_1,piVar2 + 0x12,piVar2[0x11]);
          if (iVar3 != 0) {
            uVar8 = 0x17e;
            uVar7 = 0x12e;
            goto LAB_00b000e1;
          }
          goto LAB_00afff97;
        }
      }
      uVar8 = 0x170;
      uVar7 = 0x12f;
      goto LAB_00b000e1;
    }
    piVar2[0x11] = 0;
LAB_00afff97:
    if (param_1[0x48] == 0) {
LAB_00afffbe:
      if (param_1[0x52] != 0) {
        if (piVar2[0x36] != 0) {
          FUN_00a85120(piVar2[0x36]);
        }
        pvVar5 = (void *)FUN_00a84f80(param_1[0x51],".\\ssl\\ssl_sess.c",400);
        piVar2[0x36] = (int)pvVar5;
        if (pvVar5 == (void *)0x0) {
          uVar8 = 0x192;
          uVar7 = 0x41;
          goto LAB_00b000e1;
        }
        piVar2[0x35] = param_1[0x51];
        _memcpy(pvVar5,(void *)param_1[0x52],param_1[0x51]);
      }
      if (param_1[0x54] != 0) {
        if (piVar2[0x38] != 0) {
          FUN_00a85120(piVar2[0x38]);
        }
        pvVar5 = (void *)FUN_00a84f80(param_1[0x53],".\\ssl\\ssl_sess.c",0x19c);
        piVar2[0x38] = (int)pvVar5;
        if (pvVar5 == (void *)0x0) {
          uVar8 = 0x19e;
          uVar7 = 0x41;
          goto LAB_00b000e1;
        }
        piVar2[0x37] = param_1[0x53];
        _memcpy(pvVar5,(void *)param_1[0x54],param_1[0x53]);
      }
      goto LAB_00b000ca;
    }
    iVar3 = FUN_00a852b0(param_1[0x48]);
    piVar2[0x34] = iVar3;
    if (iVar3 != 0) goto LAB_00afffbe;
    uVar8 = 0x187;
  }
  uVar7 = 0x44;
LAB_00b000e1:
  FUN_00a7f3c0(0x14,0xb5,uVar7,".\\ssl\\ssl_sess.c",uVar8);
  FUN_00affbb0(piVar2);
  return 0;
}



bool __thiscall FUN_00b00140(int param_1_00,int param_1)

{
  int iVar1;
  int unaff_ESI;
  bool bVar2;
  
  if ((unaff_ESI != 0) && (*(int *)(unaff_ESI + 0x44) != 0)) {
    if (param_1 != 0) {
      FUN_00a7fdc0(9,0xc,".\\ssl\\ssl_sess.c",0x2c6);
    }
    iVar1 = FUN_00a84ed0(*(undefined4 *)(param_1_00 + 0x10));
    bVar2 = iVar1 == unaff_ESI;
    if (bVar2) {
      iVar1 = FUN_00a84e60(*(undefined4 *)(param_1_00 + 0x10));
      FUN_00affd00();
    }
    if (param_1 != 0) {
      FUN_00a7fdc0(10,0xc,".\\ssl\\ssl_sess.c",0x2ce);
    }
    if (bVar2) {
      *(undefined4 *)(iVar1 + 0x94) = 1;
      if (*(code **)(param_1_00 + 0x2c) != (code *)0x0) {
        (**(code **)(param_1_00 + 0x2c))(param_1_00,iVar1);
      }
      FUN_00affbb0(iVar1);
    }
    return bVar2;
  }
  return false;
}



void __fastcall FUN_00b001f0(int *param_1)

{
  code *pcVar1;
  int unaff_ESI;
  
  if ((param_1[1] == 0) || (*(int *)(unaff_ESI + 0xac) + *(int *)(unaff_ESI + 0xa8) < param_1[1])) {
    FUN_00a84e60(param_1[2]);
    FUN_00affd00();
    *(undefined4 *)(unaff_ESI + 0x94) = 1;
    pcVar1 = *(code **)(*param_1 + 0x2c);
    if (pcVar1 != (code *)0x0) {
      (*pcVar1)(*param_1);
    }
    FUN_00affbb0();
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b00260(int param_1,undefined4 param_2)

{
  undefined4 uVar1;
  int local_c;
  undefined4 local_8;
  int local_4;
  
  local_c = param_1;
  local_4 = *(int *)(param_1 + 0x10);
  if (local_4 != 0) {
    local_8 = param_2;
    FUN_00a7fdc0(9,0xc,".\\ssl\\ssl_sess.c",0x3e2);
    uVar1 = *(undefined4 *)(local_4 + 0x20);
    *(undefined4 *)(local_4 + 0x20) = 0;
    FUN_00a84a80(local_4,&LAB_00b00250,&local_c);
    *(undefined4 *)(local_4 + 0x20) = uVar1;
    FUN_00a7fdc0(10,0xc,".\\ssl\\ssl_sess.c",1000);
  }
  return;
}



undefined4 FUN_00b002e0(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  
  uVar3 = 1;
  FUN_00a7fe40(param_2 + 0xa4,1,0xe,".\\ssl\\ssl_sess.c",0x281);
  FUN_00a7fdc0(9,0xc,".\\ssl\\ssl_sess.c",0x284);
  iVar1 = FUN_00a84dd0(*(undefined4 *)(param_1 + 0x10),param_2);
  if (iVar1 == 0) {
LAB_00b00345:
    FUN_00affd90();
    if (iVar1 == 0) {
      iVar1 = FUN_00af9c50(param_1,0x2b,0,0);
      if (0 < iVar1) {
        iVar1 = FUN_00af9c50(param_1,0x2b,0,0);
        iVar2 = FUN_00af9c50(param_1,0x14,0,0);
        if (iVar1 < iVar2) {
          do {
            iVar1 = *(int *)(param_1 + 0x1c);
            if ((iVar1 == 0) || (*(int *)(iVar1 + 0x44) == 0)) break;
            iVar2 = FUN_00a84ed0(*(undefined4 *)(param_1 + 0x10),iVar1);
            if (iVar2 != iVar1) break;
            iVar2 = FUN_00a84e60(*(undefined4 *)(param_1 + 0x10),iVar1);
            FUN_00affd00(iVar1);
            *(undefined4 *)(iVar2 + 0x94) = 1;
            if (*(code **)(param_1 + 0x2c) != (code *)0x0) {
              (**(code **)(param_1 + 0x2c))(param_1,iVar2);
            }
            FUN_00affbb0(iVar2);
            *(int *)(param_1 + 0x54) = *(int *)(param_1 + 0x54) + 1;
            iVar1 = FUN_00af9c50(param_1,0x2b,0,0);
            iVar2 = FUN_00af9c50(param_1,0x14,0,0);
          } while (iVar1 < iVar2);
        }
      }
      goto LAB_00b00409;
    }
  }
  else if (iVar1 != param_2) {
    FUN_00affd00(iVar1);
    FUN_00affbb0(iVar1);
    iVar1 = 0;
    goto LAB_00b00345;
  }
  FUN_00affbb0(iVar1);
  uVar3 = 0;
LAB_00b00409:
  FUN_00a7fdc0(10,0xc,".\\ssl\\ssl_sess.c",0x2b6);
  return uVar3;
}



void FUN_00b00430(void)

{
  FUN_00b00140(1);
  return;
}



undefined4 FUN_00b00450(int param_1)

{
  uint uVar1;
  
  if ((*(int *)(param_1 + 0xc0) != 0) && ((*(byte *)(param_1 + 0x30) & 1) == 0)) {
    uVar1 = FUN_00aa35c0(param_1);
    if ((uVar1 & 0x3000) == 0) {
      uVar1 = FUN_00aa35c0(param_1);
      if ((uVar1 & 0x4000) == 0) {
        FUN_00b00140(1);
        return 1;
      }
    }
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b004b0(undefined4 *param_1,void *param_2,size_t param_3,undefined4 param_4)

{
  int *piVar1;
  undefined4 uVar2;
  uint uVar3;
  uint *puVar4;
  uint *puVar5;
  __time64_t _Var6;
  uint *local_10c;
  uint local_108;
  undefined4 local_104;
  undefined4 local_100 [17];
  size_t local_bc;
  undefined local_b8 [172];
  undefined4 local_c;
  undefined4 uStack_8;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_10c;
  local_10c = (uint *)0x0;
  local_104 = 0;
  local_108 = 1;
  if (0x20 < (int)param_3) goto LAB_00b008a2;
  local_108 = (uint)(param_3 != 0);
  uVar2 = FUN_00b085a0(param_1,param_2,param_3,param_4,&local_10c);
  switch(uVar2) {
  case 0:
  case 1:
    if (local_108 == 0) goto LAB_00b0069b;
    if (local_10c == (uint *)0x0) {
      if ((*(uint *)(param_1[0x5c] + 0x20) & 0x100) == 0) {
        local_100[0] = *param_1;
        local_bc = param_3;
        if (param_3 == 0) goto LAB_00b008a2;
        _memcpy(local_b8,param_2,param_3);
        FUN_00a7fdc0(5,0xc,".\\ssl\\ssl_sess.c",0x1fe);
        local_10c = (uint *)FUN_00a84ed0(*(undefined4 *)(param_1[0x5c] + 0x10),local_100);
        if (local_10c != (uint *)0x0) {
          FUN_00a7fe40(local_10c + 0x29,1,0xe,".\\ssl\\ssl_sess.c",0x203);
        }
        FUN_00a7fdc0(6,0xc,".\\ssl\\ssl_sess.c",0x205);
        if (local_10c != (uint *)0x0) break;
        *(int *)(param_1[0x5c] + 0x4c) = *(int *)(param_1[0x5c] + 0x4c) + 1;
      }
      if (*(int *)(param_1[0x5c] + 0x30) == 0) goto LAB_00b008a2;
      local_c = 1;
      local_10c = (uint *)(**(code **)(param_1[0x5c] + 0x30))(param_1,param_2,param_3,&local_c);
      if (local_10c == (uint *)0x0) goto LAB_00b008a2;
      *(int *)(param_1[0x5c] + 0x5c) = *(int *)(param_1[0x5c] + 0x5c) + 1;
      if (local_c != 0) {
        FUN_00a7fe40(local_10c + 0x29,1,0xe,".\\ssl\\ssl_sess.c",0x21a);
      }
      if ((*(uint *)(param_1[0x5c] + 0x20) & 0x200) == 0) {
        FUN_00b002e0(param_1[0x5c],local_10c);
      }
      goto LAB_00b0069b;
    }
    break;
  case 2:
  case 3:
    local_108 = 0;
LAB_00b0069b:
    if (local_10c == (uint *)0x0) goto LAB_00b008a2;
    break;
  case 0xffffffff:
    local_104 = 1;
    goto LAB_00b0087a;
  default:
                    // WARNING: Subroutine does not return
    _abort();
  }
  uVar3 = local_10c[0x1a];
  if (uVar3 == param_1[0x27]) {
    puVar5 = param_1 + 0x28;
    puVar4 = local_10c + 0x1b;
    for (; 3 < uVar3; uVar3 = uVar3 - 4) {
      if (*puVar4 != *puVar5) goto LAB_00b0087a;
      puVar5 = puVar5 + 1;
      puVar4 = puVar4 + 1;
    }
    if ((uVar3 == 0) ||
       ((*(char *)puVar5 == *(char *)puVar4 &&
        ((uVar3 < 2 ||
         ((*(char *)((int)puVar5 + 1) == *(char *)((int)puVar4 + 1) &&
          ((uVar3 < 3 || (*(char *)((int)puVar5 + 2) == *(char *)((int)puVar4 + 2))))))))))) {
      if (((*(byte *)(param_1 + 0x32) & 1) == 0) || (param_1[0x27] != 0)) {
        if (local_10c[0x2d] == 0) {
          uVar3 = local_10c[0x2e];
          local_c = CONCAT13((char)uVar3,
                             CONCAT12((char)(uVar3 >> 8),
                                      CONCAT11((char)(uVar3 >> 0x10),(char)(uVar3 >> 0x18))));
          if ((int)(*local_10c & 0xffffff00) < 0x300) {
            uVar3 = (**(code **)(param_1[2] + 0x48))((int)&local_c + 1);
            local_10c[0x2d] = uVar3;
          }
          else {
            uVar3 = (**(code **)(param_1[2] + 0x48))((int)&local_c + 2);
            local_10c[0x2d] = uVar3;
          }
          if (local_10c[0x2d] == 0) goto LAB_00b0087a;
        }
        _Var6 = __time64((__time64_t *)0x0);
        uStack_8 = (undefined4)((ulonglong)_Var6 >> 0x20);
        if ((int)((int)_Var6 - local_10c[0x2b]) <= (int)local_10c[0x2a]) {
          piVar1 = (int *)(param_1[0x5c] + 0x58);
          *piVar1 = *piVar1 + 1;
          if (param_1[0x30] != 0) {
            FUN_00affbb0(param_1[0x30]);
          }
          param_1[0x30] = local_10c;
          param_1[0x3b] = local_10c[0x28];
          goto LAB_00b008a2;
        }
        piVar1 = (int *)(param_1[0x5c] + 0x50);
        *piVar1 = *piVar1 + 1;
        if (local_108 != 0) {
          FUN_00b00140(1);
        }
      }
      else {
        FUN_00a7f3c0(0x14,0xd9,0x115,".\\ssl\\ssl_sess.c",0x23e);
        local_104 = 1;
      }
    }
  }
LAB_00b0087a:
  if ((local_10c != (uint *)0x0) && (FUN_00affbb0(local_10c), local_108 == 0)) {
    param_1[0x50] = 1;
  }
LAB_00b008a2:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

size_t FUN_00b008d0(int param_1,size_t param_2,size_t param_3,int param_4)

{
  int iVar1;
  char *_Src;
  void *_Dst;
  size_t sVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  uint uVar6;
  size_t _Size;
  
  if ((int)param_2 < 1) {
    return param_2;
  }
  iVar4 = *(int *)(param_1 + 0x58);
  piVar5 = (int *)(iVar4 + 0xec);
  if ((*piVar5 == 0) && (iVar1 = FUN_00b059e0(param_1), iVar1 == 0)) {
    return 0xffffffff;
  }
  uVar6 = 3U - *piVar5 & 7;
  _Size = *(size_t *)(iVar4 + 0xf8);
  if (param_4 != 0) goto LAB_00b00975;
  if (_Size == 0) {
LAB_00b00963:
    *(uint *)(iVar4 + 0xf4) = uVar6;
  }
  else if ((((uVar6 != 0) && (4 < (int)_Size)) &&
           (_Src = (char *)(*(int *)(iVar4 + 0xf4) + *piVar5), *_Src == '\x17')) &&
          (0x7f < CONCAT11(_Src[3],_Src[4]))) {
    _memmove((void *)(*piVar5 + uVar6),_Src,_Size);
    goto LAB_00b00963;
  }
  iVar1 = *(int *)(iVar4 + 0xf4);
  iVar3 = *piVar5;
  *(undefined4 *)(param_1 + 0x50) = 0;
  *(int *)(param_1 + 0x4c) = iVar1 + iVar3;
LAB_00b00975:
  iVar1 = FUN_00a814c0(param_1);
  if (((iVar1 == 0xfeff) || (iVar1 = FUN_00a814c0(param_1), iVar1 == 0x100)) && (0 < (int)_Size)) {
    if ((int)_Size < (int)param_2) {
      *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + _Size;
      *(int *)(iVar4 + 0xf4) = *(int *)(iVar4 + 0xf4) + _Size;
      *(undefined4 *)(iVar4 + 0xf8) = 0;
      return _Size;
    }
  }
  else if ((int)_Size < (int)param_2) {
    iVar1 = *(int *)(param_1 + 0x50);
    _Dst = (void *)(*piVar5 + uVar6);
    if (*(void **)(param_1 + 0x4c) != _Dst) {
      _memmove(_Dst,*(void **)(param_1 + 0x4c),iVar1 + _Size);
      *(void **)(param_1 + 0x4c) = _Dst;
      *(uint *)(iVar4 + 0xf4) = iVar1 + uVar6;
    }
    sVar2 = *(int *)(iVar4 + 0xf0) - *(int *)(iVar4 + 0xf4);
    if ((int)sVar2 < (int)param_2) {
      FUN_00a7f3c0(0x14,0x95,0x44,".\\ssl\\s3_pkt.c",0xd6);
      return 0xffffffff;
    }
    if (*(int *)(param_1 + 0x60) == 0) {
      param_3 = param_2;
    }
    else {
      if ((int)param_3 < (int)param_2) {
        param_3 = param_2;
      }
      if ((int)sVar2 < (int)param_3) {
        param_3 = sVar2;
      }
    }
    do {
      SetLastError(0);
      if (*(int *)(param_1 + 0xc) == 0) {
        FUN_00a7f3c0(0x14,0x95,0xd3,".\\ssl\\s3_pkt.c",0xf3);
        sVar2 = 0xffffffff;
LAB_00b00aea:
        *(size_t *)(iVar4 + 0xf8) = _Size;
        if ((((*(byte *)(param_1 + 0x104) & 0x10) != 0) &&
            (iVar4 = FUN_00a814c0(param_1), iVar4 != 0xfeff)) &&
           ((iVar4 = FUN_00a814c0(param_1), iVar4 != 0x100 && (iVar1 + _Size == 0)))) {
          FUN_00b05bf0(param_1);
        }
        return sVar2;
      }
      *(undefined4 *)(param_1 + 0x18) = 3;
      sVar2 = FUN_00a83320(*(int *)(param_1 + 0xc),(int)_Dst + _Size + iVar1,param_3 - _Size);
      if ((int)sVar2 < 1) goto LAB_00b00aea;
      _Size = _Size + sVar2;
      iVar3 = FUN_00a814c0(param_1);
      if ((iVar3 == 0xfeff) || (iVar3 = FUN_00a814c0(param_1), iVar3 == 0x100)) {
        if ((int)_Size < (int)param_2) {
          param_2 = _Size;
        }
        goto LAB_00b00b3f;
      }
      if ((int)param_2 <= (int)_Size) {
LAB_00b00b3f:
        *(int *)(iVar4 + 0xf4) = *(int *)(iVar4 + 0xf4) + param_2;
        *(size_t *)(iVar4 + 0xf8) = _Size - param_2;
        *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + param_2;
        *(undefined4 *)(param_1 + 0x18) = 1;
        return param_2;
      }
    } while( true );
  }
  *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + param_2;
  *(int *)(iVar4 + 0xf4) = *(int *)(iVar4 + 0xf4) + param_2;
  *(size_t *)(iVar4 + 0xf8) = _Size - param_2;
  return param_2;
}



undefined4 FUN_00b00b60(int param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = *(int *)(param_1 + 0x58);
  iVar2 = FUN_00b54610(*(undefined4 *)(param_1 + 0x94),*(undefined4 *)(iVar1 + 0x13c),0x4400,
                       *(undefined4 *)(iVar1 + 0x140),*(undefined4 *)(iVar1 + 0x134));
  if (iVar2 < 0) {
    return 0;
  }
  *(int *)(iVar1 + 0x134) = iVar2;
  *(undefined4 *)(iVar1 + 0x140) = *(undefined4 *)(iVar1 + 0x13c);
  return 1;
}



int FUN_00b00bb0(int *param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int iVar2;
  
  iVar2 = param_1[0x16];
  if ((*(int *)(iVar2 + 0x168) <= param_4) &&
     (((*(int *)(iVar2 + 0x174) == param_3 || ((*(byte *)(param_1 + 0x41) & 2) != 0)) &&
      (*(int *)(iVar2 + 0x16c) == param_2)))) {
    while( true ) {
      SetLastError(0);
      if (param_1[4] == 0) {
        FUN_00a7f3c0(0x14,0x9f,0x80,".\\ssl\\s3_pkt.c",0x377);
        iVar1 = -1;
      }
      else {
        param_1[6] = 2;
        iVar1 = FUN_00a833e0(param_1[4],*(int *)(iVar2 + 0x104) + *(int *)(iVar2 + 0xfc),
                             *(undefined4 *)(iVar2 + 0x108));
      }
      if (iVar1 == *(int *)(iVar2 + 0x108)) break;
      if (iVar1 < 1) {
        if ((*param_1 != 0xfeff) && (*param_1 != 0x100)) {
          return iVar1;
        }
        *(undefined4 *)(iVar2 + 0x108) = 0;
        return iVar1;
      }
      *(int *)(iVar2 + 0x104) = *(int *)(iVar2 + 0x104) + iVar1;
      *(int *)(iVar2 + 0x108) = *(int *)(iVar2 + 0x108) - iVar1;
    }
    *(int *)(iVar2 + 0x104) = *(int *)(iVar2 + 0x104) + iVar1;
    *(undefined4 *)(iVar2 + 0x108) = 0;
    if ((((*(byte *)(param_1 + 0x41) & 0x10) != 0) &&
        (iVar2 = FUN_00a814c0(param_1), iVar2 != 0xfeff)) &&
       (iVar2 = FUN_00a814c0(param_1), iVar2 != 0x100)) {
      FUN_00b05ba0(param_1);
    }
    param_1[6] = 1;
    return *(int *)(param_1[0x16] + 0x170);
  }
  FUN_00a7f3c0(0x14,0x9f,0x7f,".\\ssl\\s3_pkt.c",0x367);
  return -1;
}



undefined4 FUN_00b00d10(int param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  uVar1 = *(uint *)(param_1 + 0x34);
  if (*(int *)(*(int *)(param_1 + 0x58) + 0x378) == 0) {
    if (*(int *)(param_1 + 0xc0) == 0) {
      FUN_00a7f3c0(0x14,0x124,0x85,".\\ssl\\s3_pkt.c",0x59d);
      return 0;
    }
    *(undefined4 *)(*(int *)(param_1 + 0xc0) + 0xb4) =
         *(undefined4 *)(*(int *)(param_1 + 0x58) + 0x344);
    iVar2 = (**(code **)(*(int *)(*(int *)(param_1 + 8) + 100) + 8))(param_1);
    if (iVar2 == 0) {
      return 0;
    }
  }
  iVar2 = (**(code **)(*(int *)(*(int *)(param_1 + 8) + 100) + 0x10))
                    (param_1,(-((uVar1 & 0x2000) != 0) & 0x10U) + 0x11);
  if (iVar2 == 0) {
    return 0;
  }
  if ((*(uint *)(param_1 + 0x34) & 0x1000) == 0) {
    iVar2 = *(int *)(*(int *)(param_1 + 8) + 100);
    uVar4 = *(undefined4 *)(iVar2 + 0x20);
    uVar3 = *(undefined4 *)(iVar2 + 0x24);
  }
  else {
    iVar2 = *(int *)(*(int *)(param_1 + 8) + 100);
    uVar4 = *(undefined4 *)(iVar2 + 0x28);
    uVar3 = *(undefined4 *)(iVar2 + 0x2c);
  }
  uVar4 = (**(code **)(*(int *)(*(int *)(param_1 + 8) + 100) + 0x14))
                    (param_1,uVar4,uVar3,*(int *)(param_1 + 0x58) + 0x2b8);
  *(undefined4 *)(*(int *)(param_1 + 0x58) + 0x338) = uVar4;
  return 1;
}



undefined4 FUN_00b00df0(int *param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = (**(code **)(*(int *)(param_1[2] + 100) + 0x30))(param_3);
  if ((*param_1 == 0x300) && (iVar1 == 0x46)) {
    iVar1 = 0x28;
  }
  else if (iVar1 < 0) {
    return 0xffffffff;
  }
  if ((param_2 == 2) && (param_1[0x30] != 0)) {
    FUN_00b00430(param_1[0x39],param_1[0x30]);
  }
  *(undefined4 *)(param_1[0x16] + 0x18c) = 1;
  *(undefined *)(param_1[0x16] + 400) = (undefined)param_2;
  *(char *)(param_1[0x16] + 0x191) = (char)iVar1;
  if (*(int *)(param_1[0x16] + 0x108) != 0) {
    return 0xffffffff;
  }
  uVar2 = (**(code **)(param_1[2] + 0x3c))(param_1);
  return uVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b00e90(void)

{
  uint *puVar1;
  byte bVar2;
  byte bVar3;
  byte bVar4;
  uint uVar5;
  byte *pbVar6;
  ushort uVar7;
  int iVar8;
  int iVar9;
  undefined4 uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  undefined *puVar14;
  uint *unaff_ESI;
  undefined4 uVar15;
  int local_94;
  int iStack_90;
  uint local_8c;
  uint uStack_88;
  undefined auStack_84 [64];
  undefined auStack_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_94;
  uVar5 = unaff_ESI[0x16];
  local_8c = unaff_ESI[0x30];
  puVar1 = (uint *)(uVar5 + 0x10c);
  if ((*(byte *)(unaff_ESI + 0x40) & 0x20) == 0) {
    local_94 = 0;
  }
  else {
    local_94 = 0x4000;
    if (*(int *)(uVar5 + 0xe8) == 0) {
      FUN_00a7f3c0(0x14,0x8f,0x44,".\\ssl\\s3_pkt.c",0x133);
      ___security_check_cookie_4();
      return;
    }
  }
  do {
    if ((unaff_ESI[0xe] != 0xf1) || (unaff_ESI[0x14] < 5)) {
      iVar8 = FUN_00b008d0();
      if (iVar8 < 1) break;
      pbVar6 = (byte *)unaff_ESI[0x13];
      unaff_ESI[0xe] = 0xf1;
      *puVar1 = (uint)*pbVar6;
      bVar2 = pbVar6[1];
      uVar7 = CONCAT11(bVar2,pbVar6[2]);
      bVar3 = pbVar6[3];
      bVar4 = pbVar6[4];
      *(uint *)(uVar5 + 0x110) = (uint)CONCAT11(bVar3,bVar4);
      if ((unaff_ESI[0x43] == 0) && ((int)(short)uVar7 != *unaff_ESI)) {
        FUN_00a7f3c0(0x14,0x8f,0x10b,".\\ssl\\s3_pkt.c",0x151);
        if (((*unaff_ESI ^ (uint)uVar7) & 0xff00) == 0) {
          *unaff_ESI = (uint)uVar7;
        }
        FUN_00b00df0();
        ___security_check_cookie_4();
        return;
      }
      if (bVar2 != 3) {
        FUN_00a7f3c0(0x14,0x8f,0x10b,".\\ssl\\s3_pkt.c",0x15c);
        ___security_check_cookie_4();
        return;
      }
      if (*(int *)(unaff_ESI[0x16] + 0xf0) - 5U < (uint)CONCAT11(bVar3,bVar4)) {
        uVar15 = 0x163;
        uVar10 = 0xc6;
        goto LAB_00b0131a;
      }
    }
    if ((unaff_ESI[0x14] - 5 < *(uint *)(uVar5 + 0x110)) && (iVar8 = FUN_00b008d0(), iVar8 < 1))
    break;
    uVar11 = unaff_ESI[0x13];
    unaff_ESI[0xe] = 0xf0;
    *(uint *)(uVar5 + 0x11c) = uVar11 + 5;
    if (local_94 + 0x4540U < *(uint *)(uVar5 + 0x110)) {
      uVar15 = 0x18b;
      uVar10 = 0x96;
      goto LAB_00b0131a;
    }
    *(uint *)(uVar5 + 0x118) = uVar11 + 5;
    iVar8 = (***(code ***)(unaff_ESI[2] + 100))();
    iStack_90 = iVar8;
    if (iVar8 == 0) {
      uVar15 = 0x19a;
      uVar10 = 0x81;
      goto LAB_00b0131a;
    }
    if (((local_8c != 0) && (unaff_ESI[0x20] != 0)) &&
       (iVar9 = FUN_00a92630(unaff_ESI[0x21]), iVar9 != 0)) {
      uVar10 = FUN_00a92630(unaff_ESI[0x21]);
      uVar11 = FUN_00a92600(uVar10);
      if (0x40 < uVar11) {
        FUN_00a7fd60(".\\ssl\\s3_pkt.c",0x1ad,"mac_size <= EVP_MAX_MD_SIZE");
      }
      uVar13 = (*puVar1 >> 8) + *(int *)(uVar5 + 0x110);
      uStack_88 = uVar13;
      if ((uVar13 < uVar11) ||
         ((uVar12 = FUN_00a925d0(unaff_ESI[0x20]), (uVar12 & 0xf0007) == 2 && (uVar13 < uVar11 + 1))
         )) {
        uVar15 = 0x1bd;
        uVar10 = 0xa0;
        goto LAB_00b0131a;
      }
      uVar13 = FUN_00a925d0(unaff_ESI[0x20]);
      if ((uVar13 & 0xf0007) == 2) {
        puVar14 = auStack_84;
        FUN_00b17190(puVar14,puVar1,uVar11,uStack_88);
        *(int *)(uVar5 + 0x110) = *(int *)(uVar5 + 0x110) - uVar11;
      }
      else {
        *(int *)(uVar5 + 0x110) = *(int *)(uVar5 + 0x110) - uVar11;
        puVar14 = (undefined *)(*(int *)(uVar5 + 0x118) + *(int *)(uVar5 + 0x110));
      }
      iVar8 = (**(code **)(*(int *)(unaff_ESI[2] + 100) + 4))();
      if (((iVar8 < 0) || (puVar14 == (undefined *)0x0)) ||
         (iVar8 = FUN_00a7fd90(auStack_44,puVar14,uVar11), iVar8 != 0)) {
        iStack_90 = -1;
      }
      iVar8 = iStack_90;
      if (*(uint *)(uVar5 + 0x110) <= uVar11 + 0x4400 + local_94) goto LAB_00b0114a;
LAB_00b012cc:
      uVar15 = 0x1e4;
      uVar10 = 0x119;
LAB_00b0131a:
      FUN_00a7f3c0(0x14,0x8f,uVar10,".\\ssl\\s3_pkt.c",uVar15);
      FUN_00b00df0();
      ___security_check_cookie_4();
      return;
    }
LAB_00b0114a:
    if (iVar8 < 0) goto LAB_00b012cc;
    if (unaff_ESI[0x22] != 0) {
      if (local_94 + 0x4400U < *(uint *)(uVar5 + 0x110)) {
        uVar15 = 0x1ee;
        uVar10 = 0x8c;
        goto LAB_00b0131a;
      }
      uVar11 = unaff_ESI[0x16];
      iVar8 = FUN_00b54650(unaff_ESI[0x22],*(undefined4 *)(uVar11 + 0x120),0x4000,
                           *(undefined4 *)(uVar11 + 0x118),*(undefined4 *)(uVar11 + 0x110));
      if (iVar8 < 0) {
        uVar15 = 500;
        uVar10 = 0x6b;
        goto LAB_00b0131a;
      }
      *(int *)(uVar11 + 0x110) = iVar8;
      *(undefined4 *)(uVar11 + 0x118) = *(undefined4 *)(uVar11 + 0x120);
    }
    if (local_94 + 0x4000U < *(uint *)(uVar5 + 0x110)) {
      uVar15 = 0x1fc;
      uVar10 = 0x92;
      goto LAB_00b0131a;
    }
    *(undefined4 *)(uVar5 + 0x114) = 0;
    unaff_ESI[0x14] = 0;
  } while (*(int *)(uVar5 + 0x110) == 0);
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00b01350(uint *param_1,int param_2,void *param_3,size_t param_4,int param_5)

{
  uint *puVar1;
  uint uVar2;
  uint uVar3;
  uint *puVar4;
  int iVar5;
  undefined4 uVar6;
  uint uVar7;
  int *piVar8;
  undefined *puVar9;
  undefined *puVar10;
  int local_c;
  
  puVar4 = param_1;
  uVar2 = param_1[0x16];
  piVar8 = (int *)(uVar2 + 0xfc);
  local_c = 0;
  if ((*piVar8 == 0) && (iVar5 = FUN_00b05ab0(param_1), iVar5 == 0)) {
    return -1;
  }
  if (*(int *)(uVar2 + 0x108) != 0) {
    iVar5 = FUN_00b00bb0(param_1,param_2,param_3,param_4);
    return iVar5;
  }
  if ((*(int *)(param_1[0x16] + 0x18c) != 0) &&
     (iVar5 = (**(code **)(param_1[2] + 0x3c))(param_1), iVar5 < 1)) {
    return iVar5;
  }
  if ((param_4 == 0) && (param_5 == 0)) {
    return 0;
  }
  uVar3 = param_1[0x16];
  if (((param_1[0x30] == 0) || (param_1[0x23] == 0)) ||
     (iVar5 = FUN_00a92630(param_1[0x24]), iVar5 == 0)) {
    puVar1 = param_1 + 0x23;
    param_1 = (uint *)0x0;
    if (*puVar1 != 0) goto LAB_00b0145f;
    if (param_5 == 0) goto LAB_00b014f6;
LAB_00b014ef:
    iVar5 = -2;
LAB_00b014fb:
    uVar7 = iVar5 - *piVar8 & 7;
    *(uint *)(uVar2 + 0x104) = uVar7;
    puVar9 = (undefined *)(*piVar8 + uVar7);
  }
  else {
    uVar6 = FUN_00a92630(param_1[0x24]);
    param_1 = (uint *)FUN_00a92600(uVar6);
    if ((int)param_1 < 0) {
      return -1;
    }
LAB_00b0145f:
    if (param_5 != 0) goto LAB_00b014ef;
    if (*(int *)(puVar4[0x16] + 0xe4) != 0) {
LAB_00b014f6:
      iVar5 = 3;
      goto LAB_00b014fb;
    }
    if ((*(int *)(puVar4[0x16] + 0xe0) != 0) && (param_2 == 0x17)) {
      local_c = FUN_00b01350(puVar4,0x17,param_3,0,1);
      if (local_c < 1) {
        return -1;
      }
      if (0x55 < local_c) {
        FUN_00a7f3c0(0x14,0x68,0x44,".\\ssl\\s3_pkt.c",0x2c2);
        return -1;
      }
    }
    *(undefined4 *)(puVar4[0x16] + 0xe4) = 1;
    if (local_c == 0) goto LAB_00b014f6;
    puVar9 = (undefined *)(*(int *)(uVar2 + 0x104) + *piVar8 + local_c);
  }
  *puVar9 = (char)param_2;
  *(int *)(uVar3 + 0x130) = param_2;
  puVar9[1] = (char)(*puVar4 >> 8);
  if (((puVar4[0xd] == 0x1111) && (puVar4[100] == 0)) &&
     (((*puVar4 & 0xffffff00) == 0x300 && (0x301 < (int)*puVar4)))) {
    puVar9[2] = 1;
  }
  else {
    puVar9[2] = *(undefined *)puVar4;
  }
  puVar10 = puVar9 + 5;
  if ((puVar4[0x23] != 0) && (0x301 < (int)*puVar4)) {
    uVar7 = FUN_00a925d0(puVar4[0x23]);
    if ((uVar7 & 0xf0007) != 2) {
      uVar7 = ((uVar7 & 0xf0007) != 6) - 1 & 8;
      goto LAB_00b01595;
    }
    uVar7 = FUN_00a82a40(puVar4[0x23]);
    if (1 < (int)uVar7) goto LAB_00b01595;
  }
  uVar7 = 0;
LAB_00b01595:
  *(undefined **)(uVar3 + 0x13c) = puVar10 + uVar7;
  *(size_t *)(uVar3 + 0x134) = param_4;
  *(void **)(uVar3 + 0x140) = param_3;
  if (puVar4[0x25] == 0) {
    _memcpy(puVar10 + uVar7,param_3,param_4);
    *(undefined4 *)(uVar3 + 0x140) = *(undefined4 *)(uVar3 + 0x13c);
  }
  else {
    iVar5 = FUN_00b00b60(puVar4);
    if (iVar5 == 0) {
      FUN_00a7f3c0(0x14,0x68,0x8d,".\\ssl\\s3_pkt.c",0x318);
      return -1;
    }
  }
  if (param_1 != (uint *)0x0) {
    iVar5 = (**(code **)(*(int *)(puVar4[2] + 100) + 4))
                      (puVar4,puVar10 + *(int *)(uVar3 + 0x134) + uVar7,1);
    if (iVar5 < 0) {
      return -1;
    }
    *(int *)(uVar3 + 0x134) = *(int *)(uVar3 + 0x134) + (int)param_1;
  }
  *(undefined **)(uVar3 + 0x140) = puVar10;
  *(undefined **)(uVar3 + 0x13c) = puVar10;
  if (uVar7 != 0) {
    *(int *)(uVar3 + 0x134) = *(int *)(uVar3 + 0x134) + uVar7;
  }
  (***(code ***)(puVar4[2] + 100))(puVar4,1);
  puVar9[3] = *(undefined *)(uVar3 + 0x135);
  puVar9[4] = *(undefined *)(uVar3 + 0x134);
  *(int *)(uVar3 + 0x134) = *(int *)(uVar3 + 0x134) + 5;
  *(int *)(uVar3 + 0x130) = param_2;
  if (param_5 == 0) {
    *(int *)(uVar2 + 0x108) = *(int *)(uVar3 + 0x134) + local_c;
    *(size_t *)(puVar4[0x16] + 0x168) = param_4;
    *(void **)(puVar4[0x16] + 0x174) = param_3;
    *(int *)(puVar4[0x16] + 0x16c) = param_2;
    *(size_t *)(puVar4[0x16] + 0x170) = param_4;
    iVar5 = FUN_00b00bb0(puVar4,param_2,param_3,param_4);
    return iVar5;
  }
  return *(int *)(uVar3 + 0x134);
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b016e0(int *param_1,int param_2,void *param_3,uint param_4,int param_5)

{
  byte bVar1;
  byte bVar2;
  int iVar3;
  byte *pbVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  uint *puVar8;
  code *pcVar9;
  undefined *puVar10;
  uint uVar11;
  int *piVar12;
  undefined4 uVar13;
  undefined4 uVar14;
  undefined4 uVar15;
  code *local_24;
  uint uStack_20;
  void *local_1c;
  int iStack_18;
  undefined auStack_14 [16];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_24;
  local_1c = param_3;
  local_24 = (code *)0x0;
  if ((*(int *)(param_1[0x16] + 0xec) == 0) && (iVar6 = FUN_00b059e0(param_1), iVar6 == 0)) {
LAB_00b01759:
    ___security_check_cookie_4();
    return;
  }
  if (((param_2 != 0) && ((param_2 != 0x17 && (param_2 != 0x16)))) ||
     ((param_5 != 0 && (param_2 != 0x17)))) {
    FUN_00a7f3c0(0x14,0x94,0x44,".\\ssl\\s3_pkt.c",0x3bb);
    goto LAB_00b01759;
  }
  if ((param_2 == 0x16) && (*(int *)(param_1[0x16] + 0x160) != 0)) {
    puVar10 = (undefined *)(param_1[0x16] + 0x15c);
    iVar6 = 0;
    if (0 < (int)param_4) {
      do {
        if (*(int *)(param_1[0x16] + 0x160) == 0) break;
        *(undefined *)((int)local_1c + iVar6) = *puVar10;
        *(int *)(param_1[0x16] + 0x160) = *(int *)(param_1[0x16] + 0x160) + -1;
        param_4 = param_4 - 1;
        puVar10 = puVar10 + 1;
        iVar6 = iVar6 + 1;
      } while (0 < (int)param_4);
    }
    uVar11 = 0;
    if (*(int *)(param_1[0x16] + 0x160) != 0) {
      do {
        *(undefined *)(uVar11 + 0x15c + param_1[0x16]) = *puVar10;
        uVar11 = uVar11 + 1;
        puVar10 = puVar10 + 1;
      } while (uVar11 < *(uint *)(param_1[0x16] + 0x160));
      ___security_check_cookie_4();
      return;
    }
    goto LAB_00b01f89;
  }
  if ((param_1[7] == 0) && (uVar11 = FUN_00aa35c0(param_1), (uVar11 & 0x3000) != 0)) {
    iVar6 = (*(code *)param_1[8])(param_1);
    if (iVar6 < 0) goto LAB_00b01f89;
    if (iVar6 == 0) {
      uVar14 = 0x3dd;
LAB_00b01839:
      FUN_00a7f3c0(0x14,0x94,0xe5,".\\ssl\\s3_pkt.c",uVar14);
      goto LAB_00b01f89;
    }
  }
LAB_00b01870:
  iVar6 = param_1[0x16];
  piVar12 = (int *)(iVar6 + 0x10c);
  param_1[6] = 1;
  if (((*(int *)(iVar6 + 0x110) == 0) || (param_1[0xe] == 0xf1)) &&
     (iVar7 = FUN_00b00e90(), iVar7 < 1)) goto LAB_00b01f89;
  iVar7 = param_1[0x16];
  if ((*(int *)(iVar7 + 0x180) == 0) || (*piVar12 == 0x16)) {
    if ((*(byte *)(param_1 + 0xc) & 2) != 0) {
      *(undefined4 *)(iVar6 + 0x110) = 0;
      param_1[6] = 1;
      ___security_check_cookie_4();
      return;
    }
    iVar3 = *piVar12;
    if (param_2 == iVar3) {
      uVar11 = FUN_00aa35c0(param_1);
      if ((((uVar11 & 0x3000) != 0) && (param_2 == 0x17)) && (param_1[0x20] == 0)) {
        uVar15 = 0x40e;
        uVar14 = 100;
        goto LAB_00b01f66;
      }
      if (0 < (int)param_4) {
        uVar11 = *(uint *)(iVar6 + 0x110);
        if (param_4 <= *(uint *)(iVar6 + 0x110)) {
          uVar11 = param_4;
        }
        _memcpy(local_1c,(void *)(*(int *)(iVar6 + 0x118) + *(int *)(iVar6 + 0x114)),uVar11);
        if (param_5 == 0) {
          *(int *)(iVar6 + 0x110) = *(int *)(iVar6 + 0x110) - uVar11;
          *(int *)(iVar6 + 0x114) = *(int *)(iVar6 + 0x114) + uVar11;
          if (*(int *)(iVar6 + 0x110) == 0) {
            param_1[0xe] = 0xf0;
            *(undefined4 *)(iVar6 + 0x114) = 0;
            if ((*(byte *)(param_1 + 0x41) & 0x10) != 0) {
              FUN_00b05bf0(param_1);
            }
          }
        }
        ___security_check_cookie_4();
        return;
      }
      goto LAB_00b01f89;
    }
    if (iVar3 == 0x16) {
      iStack_18 = iVar7 + 0x15c;
      uVar11 = 4;
      uStack_20 = 4;
      puVar8 = (uint *)(iVar7 + 0x160);
LAB_00b018e2:
      uVar5 = uVar11 - *puVar8;
      if (*(uint *)(iVar6 + 0x110) < uVar11 - *puVar8) {
        uVar5 = *(uint *)(iVar6 + 0x110);
      }
      for (; uVar5 != 0; uVar5 = uVar5 - 1) {
        *(undefined *)(iStack_18 + *puVar8) =
             *(undefined *)(*(int *)(iVar6 + 0x118) + *(int *)(iVar6 + 0x114));
        *puVar8 = *puVar8 + 1;
        *(int *)(iVar6 + 0x114) = *(int *)(iVar6 + 0x114) + 1;
        *(int *)(iVar6 + 0x110) = *(int *)(iVar6 + 0x110) + -1;
        uVar11 = uStack_20;
      }
      if (*puVar8 < uVar11) goto LAB_00b01870;
    }
    else {
      if (iVar3 == 0x15) {
        iStack_18 = iVar7 + 0x154;
        uVar11 = 2;
        uStack_20 = 2;
        puVar8 = (uint *)(iVar7 + 0x158);
        goto LAB_00b018e2;
      }
      if (iVar3 == 0x18) {
        FUN_00b07a50(param_1);
        *(undefined4 *)(iVar6 + 0x110) = 0;
        param_1[6] = 3;
        uVar14 = FUN_00aa3450(param_1,0xf);
        FUN_00a832f0(uVar14);
        uVar14 = FUN_00aa3450(param_1,9);
        FUN_00a83310(uVar14);
        goto LAB_00b01f89;
      }
    }
    if (param_1[9] == 0) {
      iVar7 = param_1[0x16];
      if ((((*(uint *)(iVar7 + 0x160) < 4) || (*(char *)(iVar7 + 0x15c) != '\0')) ||
          (param_1[0x30] == 0)) || (*(int *)(param_1[0x30] + 0xb4) == 0)) goto LAB_00b01b27;
      *(undefined4 *)(iVar7 + 0x160) = 0;
      iVar6 = param_1[0x16];
      if (((*(char *)(iVar6 + 0x15d) != '\0') || (*(char *)(iVar6 + 0x15e) != '\0')) ||
         (*(char *)(iVar6 + 0x15f) != '\0')) {
        uVar15 = 0x472;
        uVar13 = 0x32;
        uVar14 = 0x69;
        goto LAB_00b01f6b;
      }
      if ((code *)param_1[0x19] != (code *)0x0) {
        (*(code *)param_1[0x19])(0,*param_1,0x16,iVar6 + 0x15c,4,param_1,param_1[0x1a]);
      }
      iVar6 = FUN_00aa35c0(param_1);
      if (((iVar6 != 3) || ((*(byte *)param_1[0x16] & 1) != 0)) ||
         (*(int *)((byte *)param_1[0x16] + 0x194) != 0)) goto LAB_00b01870;
      FUN_00b04970(param_1);
      iVar6 = FUN_00b049a0(param_1);
      if (iVar6 == 0) goto LAB_00b01870;
      iVar6 = (*(code *)param_1[8])(param_1);
      if (iVar6 < 0) goto LAB_00b01f89;
      if (iVar6 == 0) {
        uVar14 = 0x484;
        goto LAB_00b01839;
      }
      if ((*(byte *)(param_1 + 0x41) & 4) != 0) goto LAB_00b01870;
      iVar6 = *(int *)(param_1[0x16] + 0xf8);
LAB_00b01a20:
      if (iVar6 != 0) goto LAB_00b01870;
      param_1[6] = 3;
      uVar14 = FUN_00aa3450(param_1);
      FUN_00a832f0(uVar14,0xf);
      FUN_00a83310(uVar14,9);
LAB_00b01f89:
      ___security_check_cookie_4();
      return;
    }
    iVar7 = FUN_00aa35c0(param_1);
    if ((((iVar7 == 3) && (iVar7 = param_1[0x16], *(int *)(iVar7 + 0x418) == 0)) &&
        (0x300 < *param_1)) &&
       (((3 < *(uint *)(iVar7 + 0x160) && (*(char *)(iVar7 + 0x15c) == '\x01')) &&
        ((param_1[0x30] != 0 &&
         ((*(int *)(param_1[0x30] + 0xb4) != 0 && ((*(uint *)(param_1[0x39] + 0xa4) & 0x40000) == 0)
          ))))))) {
      *(undefined4 *)(iVar6 + 0x110) = 0;
      FUN_00b00df0(param_1,1,100);
      goto LAB_00b01870;
    }
LAB_00b01b27:
    pbVar4 = (byte *)param_1[0x16];
    if (*(uint *)(pbVar4 + 0x158) < 2) {
      if ((*(byte *)(param_1 + 0xc) & 1) != 0) {
        param_1[6] = 1;
        *(undefined4 *)(iVar6 + 0x110) = 0;
        ___security_check_cookie_4();
        return;
      }
      iVar7 = *piVar12;
      if (iVar7 != 0x14) {
        if ((*(uint *)(pbVar4 + 0x160) < 4) || (param_1[7] != 0)) {
          if (iVar7 < 0x14) {
LAB_00b01ce0:
            if ((0x300 < *param_1) && (*param_1 < 0x303)) {
              *(undefined4 *)(iVar6 + 0x110) = 0;
              goto LAB_00b01870;
            }
            uVar15 = 0x55b;
          }
          else {
            if (iVar7 < 0x17) {
              uVar15 = 0x564;
              uVar14 = 0x44;
              goto LAB_00b01f66;
            }
            if (iVar7 != 0x17) goto LAB_00b01ce0;
            iVar6 = param_1[0x16];
            if (((*(int *)(iVar6 + 0x1a0) != 0) && (*(int *)(iVar6 + 0x198) != 0)) &&
               (((uVar11 = param_1[0xd], (uVar11 & 0x1000) != 0 &&
                 ((0x110f < (int)uVar11 && ((int)uVar11 < 0x1121)))) ||
                (((uVar11 & 0x2000) != 0 && (((int)uVar11 < 0x2121 && (0x210f < (int)uVar11))))))))
            {
              *(undefined4 *)(iVar6 + 0x1a0) = 2;
              goto LAB_00b01f89;
            }
            uVar15 = 0x581;
          }
          uVar14 = 0xf5;
          goto LAB_00b01f66;
        }
        if (((param_1[0xd] & 0xfffU) == 3) && ((*pbVar4 & 1) == 0)) {
          param_1[0xd] = (-(uint)(param_1[9] != 0) & 0x1000) + 0x1000;
          param_1[100] = 1;
          param_1[10] = 1;
        }
        iVar6 = (*(code *)param_1[8])(param_1);
        if (iVar6 < 0) goto LAB_00b01f89;
        if (iVar6 == 0) {
          uVar14 = 0x536;
          goto LAB_00b01839;
        }
        if ((*(byte *)(param_1 + 0x41) & 4) == 0) {
          iVar6 = *(int *)(param_1[0x16] + 0xf8);
          goto LAB_00b01a20;
        }
        goto LAB_00b01870;
      }
      if (((*(int *)(iVar6 + 0x110) == 1) && (*(int *)(iVar6 + 0x114) == 0)) &&
         (**(char **)(iVar6 + 0x118) == '\x01')) {
        if (*(int *)(pbVar4 + 0x344) == 0) {
          uVar15 = 0x510;
          uVar14 = 0x85;
          goto LAB_00b01f66;
        }
        *(undefined4 *)(iVar6 + 0x110) = 0;
        if ((code *)param_1[0x19] != (code *)0x0) {
          (*(code *)param_1[0x19])
                    (0,*param_1,0x14,*(char **)(iVar6 + 0x118),1,param_1,param_1[0x1a]);
        }
        *(undefined4 *)(param_1[0x16] + 0x180) = 1;
        iVar6 = FUN_00b00d10(param_1);
        if (iVar6 == 0) goto LAB_00b01f89;
        goto LAB_00b01870;
      }
      uVar15 = 0x508;
      uVar13 = 0x2f;
      uVar14 = 0x67;
    }
    else {
      bVar1 = pbVar4[0x154];
      bVar2 = pbVar4[0x155];
      uVar11 = (uint)bVar2;
      *(undefined4 *)(pbVar4 + 0x158) = 0;
      if ((code *)param_1[0x19] != (code *)0x0) {
        (*(code *)param_1[0x19])(0,*param_1,0x15,param_1[0x16] + 0x154,2,param_1,param_1[0x1a]);
      }
      pcVar9 = (code *)param_1[0x34];
      if ((pcVar9 != (code *)0x0) ||
         (pcVar9 = *(code **)(param_1[0x39] + 0x9c), pcVar9 != (code *)0x0)) {
        local_24 = pcVar9;
      }
      if (local_24 != (code *)0x0) {
        (*local_24)(param_1,0x4004,CONCAT11(bVar1,bVar2));
      }
      if (bVar1 == 1) {
        *(uint *)(param_1[0x16] + 0x184) = uVar11;
        if (uVar11 == 0) {
          param_1[0xc] = param_1[0xc] | 2;
          ___security_check_cookie_4();
          return;
        }
        if (uVar11 == 100) {
          uVar15 = 0x4da;
          uVar13 = 0x28;
          uVar14 = 0x153;
          goto LAB_00b01f6b;
        }
        goto LAB_00b01870;
      }
      if (bVar1 == 2) {
        param_1[6] = 1;
        *(uint *)(param_1[0x16] + 0x188) = uVar11;
        FUN_00a7f3c0(0x14,0x94,uVar11 + 1000,".\\ssl\\s3_pkt.c",0x4e8);
        FUN_00a86220(auStack_14,0x10,&DAT_00d26cac,uVar11);
        FUN_00a7f690(2,"SSL alert number ",auStack_14);
        param_1[0xc] = param_1[0xc] | 2;
        FUN_00b00430(param_1[0x39],param_1[0x30]);
        ___security_check_cookie_4();
        return;
      }
      uVar15 = 0x4f2;
      uVar13 = 0x2f;
      uVar14 = 0xf6;
    }
  }
  else {
    uVar15 = 0x3f8;
    uVar14 = 0x91;
LAB_00b01f66:
    uVar13 = 10;
  }
LAB_00b01f6b:
  FUN_00a7f3c0(0x14,0x94,uVar14,".\\ssl\\s3_pkt.c",uVar15);
  FUN_00b00df0(param_1,2,uVar13);
  goto LAB_00b01f89;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00b01fa0(uint *param_1)

{
  undefined2 *puVar1;
  uint *puVar2;
  uint uVar3;
  uint uVar4;
  uint *puVar5;
  int iVar6;
  undefined4 uVar7;
  uint uVar8;
  code *pcVar9;
  undefined *puVar10;
  undefined *puVar11;
  
  puVar5 = param_1;
  *(undefined4 *)(param_1[0x16] + 0x18c) = 0;
  uVar3 = param_1[0x16];
  puVar1 = (undefined2 *)(uVar3 + 400);
  if ((*(int *)(uVar3 + 0xfc) == 0) && (iVar6 = FUN_00b05ab0(param_1), iVar6 == 0))
  goto LAB_00b01fe3;
  if (*(int *)(uVar3 + 0x108) != 0) {
    iVar6 = FUN_00b00bb0(param_1,0x15,puVar1,2);
    goto LAB_00b02265;
  }
  if ((*(int *)(param_1[0x16] + 0x18c) != 0) &&
     (iVar6 = (**(code **)(param_1[2] + 0x3c))(param_1), iVar6 < 1)) goto LAB_00b02265;
  uVar4 = param_1[0x16];
  if ((param_1[0x30] == 0) ||
     ((param_1[0x23] == 0 || (iVar6 = FUN_00a92630(param_1[0x24]), iVar6 == 0)))) {
    puVar2 = param_1 + 0x23;
    param_1 = (uint *)0x0;
    if (*puVar2 != 0) goto LAB_00b02098;
  }
  else {
    uVar7 = FUN_00a92630(param_1[0x24]);
    param_1 = (uint *)FUN_00a92600(uVar7);
    if ((int)param_1 < 0) goto LAB_00b01fe3;
LAB_00b02098:
    if (*(int *)(puVar5[0x16] + 0xe4) == 0) {
      *(undefined4 *)(puVar5[0x16] + 0xe4) = 1;
    }
  }
  uVar8 = 3U - *(int *)(uVar3 + 0xfc) & 7;
  puVar10 = (undefined *)(*(int *)(uVar3 + 0xfc) + uVar8);
  *(uint *)(uVar3 + 0x104) = uVar8;
  *puVar10 = 0x15;
  *(undefined4 *)(uVar4 + 0x130) = 0x15;
  puVar10[1] = (char)(*puVar5 >> 8);
  if ((((puVar5[0xd] == 0x1111) && (puVar5[100] == 0)) && ((*puVar5 & 0xffffff00) == 0x300)) &&
     (0x301 < (int)*puVar5)) {
    puVar10[2] = 1;
  }
  else {
    puVar10[2] = *(undefined *)puVar5;
  }
  puVar11 = puVar10 + 5;
  if ((puVar5[0x23] == 0) || ((int)*puVar5 < 0x302)) {
LAB_00b02152:
    uVar8 = 0;
  }
  else {
    uVar8 = FUN_00a925d0(puVar5[0x23]);
    if ((uVar8 & 0xf0007) == 2) {
      uVar8 = FUN_00a82a40(puVar5[0x23]);
      if ((int)uVar8 < 2) goto LAB_00b02152;
    }
    else {
      uVar8 = ((uVar8 & 0xf0007) != 6) - 1 & 8;
    }
  }
  *(undefined **)(uVar4 + 0x13c) = puVar11 + uVar8;
  *(undefined4 *)(uVar4 + 0x134) = 2;
  *(undefined2 **)(uVar4 + 0x140) = puVar1;
  if (puVar5[0x25] == 0) {
    *(undefined2 *)(puVar11 + uVar8) = *puVar1;
    *(undefined4 *)(uVar4 + 0x140) = *(undefined4 *)(uVar4 + 0x13c);
  }
  else {
    iVar6 = FUN_00b00b60(puVar5);
    if (iVar6 == 0) {
      FUN_00a7f3c0(0x14,0x68,0x8d,".\\ssl\\s3_pkt.c",0x318);
      goto LAB_00b01fe3;
    }
  }
  if (param_1 != (uint *)0x0) {
    iVar6 = (**(code **)(*(int *)(puVar5[2] + 100) + 4))
                      (puVar5,puVar11 + *(int *)(uVar4 + 0x134) + uVar8,1);
    if (iVar6 < 0) {
LAB_00b01fe3:
      *(undefined4 *)(puVar5[0x16] + 0x18c) = 1;
      return -1;
    }
    *(int *)(uVar4 + 0x134) = *(int *)(uVar4 + 0x134) + (int)param_1;
  }
  *(undefined **)(uVar4 + 0x140) = puVar11;
  *(undefined **)(uVar4 + 0x13c) = puVar11;
  if (uVar8 != 0) {
    *(int *)(uVar4 + 0x134) = *(int *)(uVar4 + 0x134) + uVar8;
  }
  (***(code ***)(puVar5[2] + 100))(puVar5,1);
  puVar10[3] = *(undefined *)(uVar4 + 0x135);
  puVar10[4] = *(undefined *)(uVar4 + 0x134);
  *(int *)(uVar4 + 0x134) = *(int *)(uVar4 + 0x134) + 5;
  *(undefined4 *)(uVar4 + 0x130) = 0x15;
  *(undefined4 *)(uVar3 + 0x108) = *(undefined4 *)(uVar4 + 0x134);
  *(undefined4 *)(puVar5[0x16] + 0x168) = 2;
  *(undefined2 **)(puVar5[0x16] + 0x174) = puVar1;
  *(undefined4 *)(puVar5[0x16] + 0x16c) = 0x15;
  *(undefined4 *)(puVar5[0x16] + 0x170) = 2;
  iVar6 = FUN_00b00bb0(puVar5,0x15,puVar1,2);
LAB_00b02265:
  if (0 < iVar6) {
    if (*(char *)(puVar5[0x16] + 400) == '\x02') {
      FUN_00a83650(puVar5[4],0xb,0,0);
    }
    if ((code *)puVar5[0x19] != (code *)0x0) {
      (*(code *)puVar5[0x19])(1,*puVar5,0x15,puVar5[0x16] + 400,2,puVar5,puVar5[0x1a]);
    }
    pcVar9 = (code *)puVar5[0x34];
    if ((pcVar9 != (code *)0x0) || (pcVar9 = *(code **)(puVar5[0x39] + 0x9c), pcVar9 != (code *)0x0)
       ) {
      (*pcVar9)(puVar5,0x4008,
                CONCAT11(*(undefined *)(puVar5[0x16] + 400),*(undefined *)(puVar5[0x16] + 0x191)));
    }
    return iVar6;
  }
  *(undefined4 *)(puVar5[0x16] + 0x18c) = 1;
  return iVar6;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00b02310(uint *param_1,int param_2,int param_3,int param_4)

{
  uint uVar1;
  uint *puVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  undefined4 uVar6;
  uint uVar7;
  int *piVar8;
  void *_Src;
  undefined *puVar9;
  undefined *puVar10;
  undefined4 uVar11;
  int iStack_1c;
  uint local_14;
  int iStack_10;
  
  puVar2 = param_1;
  param_1[6] = 1;
  iVar4 = *(int *)(param_1[0x16] + 0x164);
  *(undefined4 *)(param_1[0x16] + 0x164) = 0;
  uVar3 = FUN_00aa35c0(param_1);
  if (((uVar3 & 0x3000) != 0) && (param_1[7] == 0)) {
    uVar3 = (*(code *)param_1[8])(param_1);
    if ((int)uVar3 < 0) {
      return uVar3;
    }
    if (uVar3 == 0) {
      FUN_00a7f3c0(0x14,0x9e,0xe5,".\\ssl\\s3_pkt.c",0x254);
      return 0xffffffff;
    }
  }
  local_14 = param_4 - iVar4;
  param_1 = (uint *)iVar4;
  do {
    uVar3 = local_14;
    if (puVar2[0x45] < local_14) {
      uVar3 = puVar2[0x45];
    }
    uVar1 = puVar2[0x16];
    piVar8 = (int *)(uVar1 + 0xfc);
    _Src = (void *)((int)param_1 + param_3);
    iStack_1c = 0;
    if ((*piVar8 == 0) && (iVar4 = FUN_00b05ab0(puVar2), iVar4 == 0)) goto LAB_00b025dc;
    if (*(int *)(uVar1 + 0x108) == 0) {
      if ((*(int *)(puVar2[0x16] + 0x18c) != 0) &&
         (uVar5 = (**(code **)(puVar2[2] + 0x3c))(puVar2), (int)uVar5 < 1)) goto LAB_00b025df;
      if (uVar3 == 0) {
        *(uint **)(puVar2[0x16] + 0x164) = param_1;
        return 0;
      }
      uVar5 = puVar2[0x16];
      if (((puVar2[0x30] != 0) && (puVar2[0x23] != 0)) &&
         (iVar4 = FUN_00a92630(puVar2[0x24]), iVar4 != 0)) {
        uVar6 = FUN_00a92630(puVar2[0x24]);
        iStack_10 = FUN_00a92600(uVar6);
        if (iStack_10 < 0) goto LAB_00b025dc;
LAB_00b02498:
        if (*(int *)(puVar2[0x16] + 0xe4) != 0) goto LAB_00b024f8;
        if ((*(int *)(puVar2[0x16] + 0xe0) == 0) || (param_2 != 0x17)) {
LAB_00b024d9:
          *(undefined4 *)(puVar2[0x16] + 0xe4) = 1;
          if (iStack_1c == 0) goto LAB_00b024f8;
          puVar9 = (undefined *)(*(int *)(uVar1 + 0x104) + *piVar8 + iStack_1c);
          goto LAB_00b02509;
        }
        iStack_1c = FUN_00b01350(puVar2,0x17,_Src,0,1);
        if (iStack_1c < 1) goto LAB_00b025dc;
        if (iStack_1c < 0x56) goto LAB_00b024d9;
        uVar11 = 0x2c2;
        uVar6 = 0x44;
LAB_00b025d0:
        FUN_00a7f3c0(0x14,0x68,uVar6,".\\ssl\\s3_pkt.c",uVar11);
LAB_00b025dc:
        uVar5 = 0xffffffff;
        goto LAB_00b025df;
      }
      iStack_10 = 0;
      if (puVar2[0x23] != 0) goto LAB_00b02498;
LAB_00b024f8:
      uVar7 = 3U - *piVar8 & 7;
      puVar9 = (undefined *)(*piVar8 + uVar7);
      *(uint *)(uVar1 + 0x104) = uVar7;
LAB_00b02509:
      *puVar9 = (char)param_2;
      *(int *)(uVar5 + 0x130) = param_2;
      puVar9[1] = (char)(*puVar2 >> 8);
      if (((puVar2[0xd] == 0x1111) && (puVar2[100] == 0)) &&
         (((*puVar2 & 0xffffff00) == 0x300 && (0x301 < (int)*puVar2)))) {
        puVar9[2] = 1;
      }
      else {
        puVar9[2] = *(undefined *)puVar2;
      }
      puVar10 = puVar9 + 5;
      if ((puVar2[0x23] == 0) || ((int)*puVar2 < 0x302)) {
LAB_00b02595:
        uVar7 = 0;
      }
      else {
        uVar7 = FUN_00a925d0(puVar2[0x23]);
        if ((uVar7 & 0xf0007) == 2) {
          uVar7 = FUN_00a82a40(puVar2[0x23]);
          if ((int)uVar7 < 2) goto LAB_00b02595;
        }
        else {
          uVar7 = ((uVar7 & 0xf0007) != 6) - 1 & 8;
        }
      }
      *(undefined **)(uVar5 + 0x13c) = puVar10 + uVar7;
      *(uint *)(uVar5 + 0x134) = uVar3;
      *(void **)(uVar5 + 0x140) = _Src;
      if (puVar2[0x25] == 0) {
        _memcpy(puVar10 + uVar7,_Src,uVar3);
        *(undefined4 *)(uVar5 + 0x140) = *(undefined4 *)(uVar5 + 0x13c);
      }
      else {
        iVar4 = FUN_00b00b60(puVar2);
        if (iVar4 == 0) {
          uVar11 = 0x318;
          uVar6 = 0x8d;
          goto LAB_00b025d0;
        }
      }
      if (iStack_10 != 0) {
        iVar4 = (**(code **)(*(int *)(puVar2[2] + 100) + 4))
                          (puVar2,puVar10 + *(int *)(uVar5 + 0x134) + uVar7,1);
        if (iVar4 < 0) goto LAB_00b025dc;
        *(int *)(uVar5 + 0x134) = *(int *)(uVar5 + 0x134) + iStack_10;
      }
      *(undefined **)(uVar5 + 0x140) = puVar10;
      *(undefined **)(uVar5 + 0x13c) = puVar10;
      if (uVar7 != 0) {
        *(int *)(uVar5 + 0x134) = *(int *)(uVar5 + 0x134) + uVar7;
      }
      (***(code ***)(puVar2[2] + 100))(puVar2,1);
      puVar9[3] = *(undefined *)(uVar5 + 0x135);
      puVar9[4] = *(undefined *)(uVar5 + 0x134);
      *(int *)(uVar5 + 0x134) = *(int *)(uVar5 + 0x134) + 5;
      *(int *)(uVar5 + 0x130) = param_2;
      *(int *)(uVar1 + 0x108) = *(int *)(uVar5 + 0x134) + iStack_1c;
      *(uint *)(puVar2[0x16] + 0x168) = uVar3;
      *(void **)(puVar2[0x16] + 0x174) = _Src;
      *(int *)(puVar2[0x16] + 0x16c) = param_2;
      *(uint *)(puVar2[0x16] + 0x170) = uVar3;
      uVar5 = FUN_00b00bb0(puVar2,param_2,_Src,uVar3);
    }
    else {
      uVar5 = FUN_00b00bb0(puVar2,param_2,_Src,uVar3);
    }
    if ((int)uVar5 < 1) {
LAB_00b025df:
      *(uint **)(puVar2[0x16] + 0x164) = param_1;
      return uVar5;
    }
    if ((uVar5 == local_14) || ((param_2 == 0x17 && ((*(byte *)(puVar2 + 0x41) & 1) != 0)))) {
      *(undefined4 *)(puVar2[0x16] + 0xe4) = 0;
      return uVar5 + (int)param_1;
    }
    local_14 = local_14 - uVar5;
    param_1 = (uint *)((int)param_1 + uVar5);
  } while( true );
}



undefined4 FUN_00b02730(int param_1)

{
  if (param_1 == 0) {
    return 0;
  }
  FUN_00a85120(*(undefined4 *)(param_1 + 0x174));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x178));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x17c));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x180));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x184));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x188));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x18c));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 400));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x194));
  *(undefined4 *)(param_1 + 0x168) = 0;
  *(undefined4 *)(param_1 + 0x164) = 0;
  *(undefined4 *)(param_1 + 0x16c) = 0;
  *(undefined4 *)(param_1 + 0x170) = 0;
  *(undefined4 *)(param_1 + 0x178) = 0;
  *(undefined4 *)(param_1 + 0x17c) = 0;
  *(undefined4 *)(param_1 + 0x180) = 0;
  *(undefined4 *)(param_1 + 0x184) = 0;
  *(undefined4 *)(param_1 + 0x188) = 0;
  *(undefined4 *)(param_1 + 0x18c) = 0;
  *(undefined4 *)(param_1 + 400) = 0;
  *(undefined4 *)(param_1 + 0x194) = 0;
  *(undefined4 *)(param_1 + 0x174) = 0;
  *(undefined4 *)(param_1 + 0x198) = 0;
  *(undefined4 *)(param_1 + 0x1a0) = 0;
  *(undefined4 *)(param_1 + 0x19c) = 0x400;
  return 1;
}



undefined4 FUN_00b02820(int param_1)

{
  if (param_1 == 0) {
    return 0;
  }
  FUN_00a85120(*(undefined4 *)(param_1 + 0x1a4));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1a8));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1ac));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1b0));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1b4));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1b8));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1bc));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1c0));
  FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1c4));
  *(undefined4 *)(param_1 + 0x198) = 0;
  *(undefined4 *)(param_1 + 0x194) = 0;
  *(undefined4 *)(param_1 + 0x19c) = 0;
  *(undefined4 *)(param_1 + 0x1a0) = 0;
  *(undefined4 *)(param_1 + 0x1a8) = 0;
  *(undefined4 *)(param_1 + 0x1ac) = 0;
  *(undefined4 *)(param_1 + 0x1b0) = 0;
  *(undefined4 *)(param_1 + 0x1b4) = 0;
  *(undefined4 *)(param_1 + 0x1b8) = 0;
  *(undefined4 *)(param_1 + 0x1bc) = 0;
  *(undefined4 *)(param_1 + 0x1c0) = 0;
  *(undefined4 *)(param_1 + 0x1c4) = 0;
  *(undefined4 *)(param_1 + 0x1a4) = 0;
  *(undefined4 *)(param_1 + 0x1c8) = 0;
  *(undefined4 *)(param_1 + 0x1d0) = 0;
  *(undefined4 *)(param_1 + 0x1cc) = 0x400;
  return 1;
}



undefined4 FUN_00b02910(int param_1)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  if (param_1 == 0) {
    return 0;
  }
  iVar1 = *(int *)(param_1 + 0xe4);
  if (iVar1 == 0) {
    return 0;
  }
  *(undefined4 *)(param_1 + 0x194) = *(undefined4 *)(iVar1 + 0x164);
  *(undefined4 *)(param_1 + 0x198) = *(undefined4 *)(iVar1 + 0x168);
  *(undefined4 *)(param_1 + 0x19c) = *(undefined4 *)(iVar1 + 0x16c);
  *(undefined4 *)(param_1 + 0x1a0) = *(undefined4 *)(iVar1 + 0x170);
  *(undefined4 *)(param_1 + 0x1a8) = 0;
  *(undefined4 *)(param_1 + 0x1ac) = 0;
  *(undefined4 *)(param_1 + 0x1b0) = 0;
  *(undefined4 *)(param_1 + 0x1b4) = 0;
  *(undefined4 *)(param_1 + 0x1b8) = 0;
  *(undefined4 *)(param_1 + 0x1bc) = 0;
  *(undefined4 *)(param_1 + 0x1c0) = 0;
  *(undefined4 *)(param_1 + 0x1c4) = 0;
  *(undefined4 *)(param_1 + 0x1a4) = 0;
  *(undefined4 *)(param_1 + 0x1c8) = *(undefined4 *)(iVar1 + 0x198);
  *(undefined4 *)(param_1 + 0x1cc) = *(undefined4 *)(iVar1 + 0x19c);
  if (*(int *)(iVar1 + 0x178) != 0) {
    iVar2 = FUN_00a9b160(*(int *)(iVar1 + 0x178));
    *(int *)(param_1 + 0x1a8) = iVar2;
    if (iVar2 != 0) goto LAB_00b029ce;
LAB_00b02aa1:
    uVar4 = 0xad;
    uVar3 = 3;
LAB_00b02ae0:
    FUN_00a7f3c0(0x14,0x139,uVar3,".\\ssl\\tls_srp.c",uVar4);
    FUN_00a85120(*(undefined4 *)(param_1 + 0x1a4));
    FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1a8));
    FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1ac));
    FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1b0));
    FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1b4));
    FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1b8));
    FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1bc));
    FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1c0));
    FUN_00a9a9b0(*(undefined4 *)(param_1 + 0x1c4));
    return 0;
  }
LAB_00b029ce:
  if (*(int *)(iVar1 + 0x17c) != 0) {
    iVar2 = FUN_00a9b160(*(int *)(iVar1 + 0x17c));
    *(int *)(param_1 + 0x1ac) = iVar2;
    if (iVar2 == 0) goto LAB_00b02aa1;
  }
  if (*(int *)(iVar1 + 0x180) != 0) {
    iVar2 = FUN_00a9b160(*(int *)(iVar1 + 0x180));
    *(int *)(param_1 + 0x1b0) = iVar2;
    if (iVar2 == 0) goto LAB_00b02aa1;
  }
  if (*(int *)(iVar1 + 0x184) != 0) {
    iVar2 = FUN_00a9b160(*(int *)(iVar1 + 0x184));
    *(int *)(param_1 + 0x1b4) = iVar2;
    if (iVar2 == 0) goto LAB_00b02aa1;
  }
  if (*(int *)(iVar1 + 0x188) != 0) {
    iVar2 = FUN_00a9b160(*(int *)(iVar1 + 0x188));
    *(int *)(param_1 + 0x1b8) = iVar2;
    if (iVar2 == 0) goto LAB_00b02aa1;
  }
  if (*(int *)(iVar1 + 0x18c) != 0) {
    iVar2 = FUN_00a9b160(*(int *)(iVar1 + 0x18c));
    *(int *)(param_1 + 0x1bc) = iVar2;
    if (iVar2 == 0) goto LAB_00b02aa1;
  }
  if (*(int *)(iVar1 + 0x194) != 0) {
    iVar2 = FUN_00a9b160(*(int *)(iVar1 + 0x194));
    *(int *)(param_1 + 0x1c4) = iVar2;
    if (iVar2 == 0) goto LAB_00b02aa1;
  }
  if (*(int *)(iVar1 + 400) != 0) {
    iVar2 = FUN_00a9b160(*(int *)(iVar1 + 400));
    *(int *)(param_1 + 0x1c0) = iVar2;
    if (iVar2 == 0) goto LAB_00b02aa1;
  }
  if (*(int *)(iVar1 + 0x174) != 0) {
    iVar2 = FUN_00a852b0(*(int *)(iVar1 + 0x174));
    *(int *)(param_1 + 0x1a4) = iVar2;
    if (iVar2 == 0) {
      uVar4 = 0xb3;
      uVar3 = 0x44;
      goto LAB_00b02ae0;
    }
  }
  *(undefined4 *)(param_1 + 0x1d0) = *(undefined4 *)(iVar1 + 0x1a0);
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b02c00(int param_1,undefined4 *param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined auStack_34 [48];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_34;
  *param_2 = 0x73;
  if ((((*(code **)(param_1 + 0x198) == (code *)0x0) ||
       (iVar1 = (**(code **)(param_1 + 0x198))(param_1,param_2,*(undefined4 *)(param_1 + 0x194)),
       iVar1 == 0)) && (*param_2 = 0x50, *(int *)(param_1 + 0x1a8) != 0)) &&
     (((*(int *)(param_1 + 0x1ac) != 0 && (*(int *)(param_1 + 0x1b0) != 0)) &&
      ((*(int *)(param_1 + 0x1c4) != 0 && (iVar1 = FUN_00a86e60(auStack_34,0x30), 0 < iVar1)))))) {
    uVar2 = FUN_00a9acb0(auStack_34,0x30,0);
    *(undefined4 *)(param_1 + 0x1c0) = uVar2;
    FUN_00a84330(auStack_34,0x30);
    uVar2 = FUN_00b54b30(*(undefined4 *)(param_1 + 0x1c0),*(undefined4 *)(param_1 + 0x1a8),
                         *(undefined4 *)(param_1 + 0x1ac),*(undefined4 *)(param_1 + 0x1c4));
    *(undefined4 *)(param_1 + 0x1b4) = uVar2;
    ___security_check_cookie_4();
    return;
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b02d10(int param_1,undefined4 param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int local_8;
  undefined4 local_4;
  
  iVar2 = 0;
  local_8 = 0;
  local_4 = 0xffffffff;
  iVar1 = thunk_FUN_00b54ff0(*(undefined4 *)(param_1 + 0x1b8),*(undefined4 *)(param_1 + 0x1a8));
  if (((iVar1 != 0) &&
      (local_8 = FUN_00b54930(*(undefined4 *)(param_1 + 0x1b8),*(undefined4 *)(param_1 + 0x1b4),
                              *(undefined4 *)(param_1 + 0x1a8)), local_8 != 0)) &&
     (iVar2 = FUN_00b54a80(*(undefined4 *)(param_1 + 0x1b8),*(undefined4 *)(param_1 + 0x1c4),local_8
                           ,*(undefined4 *)(param_1 + 0x1c0),*(undefined4 *)(param_1 + 0x1a8)),
     iVar2 != 0)) {
    iVar1 = FUN_00a9a920(iVar2);
    iVar3 = (int)(iVar1 + 7 + (iVar1 + 7 >> 0x1f & 7U)) >> 3;
    iVar1 = FUN_00a84f80(iVar3,".\\ssl\\tls_srp.c",0x166);
    if (iVar1 != 0) {
      FUN_00a9ad90(iVar2,iVar1);
      local_4 = (**(code **)(*(int *)(*(int *)(param_1 + 8) + 100) + 0xc))
                          (param_1,param_2,iVar1,iVar3);
      FUN_00a84330(iVar1,iVar3);
      FUN_00a85120(iVar1);
    }
  }
  FUN_00a9a950(iVar2);
  FUN_00a9a950(local_8);
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b02e20(int param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  char *pcVar3;
  int iVar4;
  char *pcVar5;
  int iVar6;
  int local_c;
  int local_8;
  undefined4 local_4;
  
  pcVar5 = (char *)0x0;
  local_c = 0;
  local_8 = 0;
  iVar4 = 0;
  local_4 = 0xffffffff;
  iVar2 = FUN_00b54ff0(*(undefined4 *)(param_1 + 0x1b4),*(undefined4 *)(param_1 + 0x1a8));
  if ((((iVar2 != 0) &&
       (local_8 = FUN_00b54930(*(undefined4 *)(param_1 + 0x1b8),*(undefined4 *)(param_1 + 0x1b4),
                               *(undefined4 *)(param_1 + 0x1a8)), local_8 != 0)) &&
      (*(code **)(param_1 + 0x1a0) != (code *)0x0)) &&
     (((pcVar5 = (char *)(**(code **)(param_1 + 0x1a0))(param_1,*(undefined4 *)(param_1 + 0x194)),
       pcVar5 != (char *)0x0 &&
       (local_c = FUN_00b54c50(*(undefined4 *)(param_1 + 0x1b0),*(undefined4 *)(param_1 + 0x1a4),
                               pcVar5), local_c != 0)) &&
      (iVar4 = FUN_00b54e60(*(undefined4 *)(param_1 + 0x1a8),*(undefined4 *)(param_1 + 0x1b4),
                            *(undefined4 *)(param_1 + 0x1ac),local_c,
                            *(undefined4 *)(param_1 + 0x1bc),local_8), iVar4 != 0)))) {
    iVar2 = FUN_00a9a920(iVar4);
    iVar6 = (int)(iVar2 + 7 + (iVar2 + 7 >> 0x1f & 7U)) >> 3;
    iVar2 = FUN_00a84f80(iVar6,".\\ssl\\tls_srp.c",0x187);
    if (iVar2 != 0) {
      FUN_00a9ad90(iVar4,iVar2);
      local_4 = (**(code **)(*(int *)(*(int *)(param_1 + 8) + 100) + 0xc))
                          (param_1,param_2,iVar2,iVar6);
      FUN_00a84330(iVar2,iVar6);
      FUN_00a85120(iVar2);
    }
  }
  FUN_00a9a950(iVar4);
  FUN_00a9a950(local_c);
  if (pcVar5 != (char *)0x0) {
    pcVar3 = pcVar5;
    do {
      cVar1 = *pcVar3;
      pcVar3 = pcVar3 + 1;
    } while (cVar1 != '\0');
    FUN_00a84330(pcVar5,(int)pcVar3 - (int)(pcVar5 + 1));
    FUN_00a85120(pcVar5);
  }
  FUN_00a9a950(local_8);
  return local_4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b02fc0(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined local_34 [48];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_34;
  iVar1 = FUN_00a9a920(*(undefined4 *)(param_1 + 0x1a8));
  if (*(int *)(param_1 + 0x1cc) <= iVar1) {
    if (*(int *)(param_1 + 0x19c) == 0) {
      iVar1 = FUN_00b55060(*(undefined4 *)(param_1 + 0x1ac),*(undefined4 *)(param_1 + 0x1a8));
      if (iVar1 == 0) goto LAB_00b02ff1;
    }
    FUN_00a86e60(local_34,0x30);
    uVar2 = FUN_00a9acb0(local_34,0x30,*(undefined4 *)(param_1 + 0x1bc));
    *(undefined4 *)(param_1 + 0x1bc) = uVar2;
    FUN_00a84330(local_34,0x30);
    iVar1 = FUN_00b54df0(*(undefined4 *)(param_1 + 0x1bc),*(undefined4 *)(param_1 + 0x1a8),
                         *(undefined4 *)(param_1 + 0x1ac));
    *(int *)(param_1 + 0x1b8) = iVar1;
    if (iVar1 != 0) {
      if (*(code **)(param_1 + 0x19c) != (code *)0x0) {
        (**(code **)(param_1 + 0x19c))(param_1,*(undefined4 *)(param_1 + 0x194));
        ___security_check_cookie_4();
        return;
      }
      ___security_check_cookie_4();
      return;
    }
  }
LAB_00b02ff1:
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00b030c0(void)

{
  return DAT_03243720;
}



int FUN_00b030d0(undefined4 *param_1)

{
  uint uVar1;
  undefined *puVar2;
  int iVar3;
  
  if (((param_1[0x61] & 1) == 0) || ((param_1[0x61] & 2) != 0)) {
    FUN_00a7f3c0(0x14,0x131,0x16d,".\\ssl\\d1_both.c",0x5f9);
    return -1;
  }
  if (param_1[0x62] != 0) {
    FUN_00a7f3c0(0x14,0x131,0x16e,".\\ssl\\d1_both.c",0x600);
    return -1;
  }
  uVar1 = FUN_00aa35c0(param_1);
  if (((uVar1 & 0x3000) == 0) && (param_1[7] == 0)) {
    puVar2 = (undefined *)FUN_00a84f80(0x25,".\\ssl\\d1_both.c",0x619);
    *puVar2 = 1;
    puVar2[1] = 0;
    puVar2[2] = 0x12;
    puVar2[3] = *(undefined *)((int)param_1 + 0x18d);
    puVar2[4] = *(undefined *)(param_1 + 99);
    FUN_00a86ec0(puVar2 + 5,0x10);
    FUN_00a86ec0(puVar2 + 0x15,0x10);
    iVar3 = FUN_00b17e00(param_1,0x18,puVar2,0x25);
    if (-1 < iVar3) {
      if ((code *)param_1[0x19] != (code *)0x0) {
        (*(code *)param_1[0x19])(1,*param_1,0x18,puVar2,0x25,param_1,param_1[0x1a]);
      }
      FUN_00b17d70(param_1);
      param_1[0x62] = 1;
    }
    FUN_00a85120(puVar2);
    return iVar3;
  }
  FUN_00a7f3c0(0x14,0x131,0xf4,".\\ssl\\d1_both.c",0x607);
  return -1;
}



undefined4 FUN_00b03230(void)

{
  return 0x8c;
}



undefined * FUN_00b03240(uint param_1)

{
  if (param_1 < 0x8c) {
    return &DAT_03245138 + param_1 * -0x30;
  }
  return (undefined *)0x0;
}



undefined4 FUN_00b03290(int param_1)

{
  void *_Dst;
  
  _Dst = (void *)FUN_00a84f80(0x420,".\\ssl\\s3_lib.c",0xb80);
  if (_Dst == (void *)0x0) {
    return 0;
  }
  _memset(_Dst,0,0x420);
  *(undefined4 *)((int)_Dst + 0x128) = 0;
  *(undefined4 *)((int)_Dst + 300) = 0;
  *(undefined4 *)((int)_Dst + 0x14c) = 0;
  *(undefined4 *)((int)_Dst + 0x150) = 0;
  *(void **)(param_1 + 0x58) = _Dst;
  FUN_00b02910(param_1);
  (**(code **)(*(int *)(param_1 + 8) + 8))(param_1);
  return 1;
}



void FUN_00b03300(int param_1)

{
  int iVar1;
  
  if (param_1 != 0) {
    FUN_00b0eda0(param_1);
    if (*(int *)(*(int *)(param_1 + 0x58) + 0xec) != 0) {
      FUN_00b05bf0(param_1);
    }
    if (*(int *)(*(int *)(param_1 + 0x58) + 0xfc) != 0) {
      FUN_00b05ba0(param_1);
    }
    iVar1 = *(int *)(*(int *)(param_1 + 0x58) + 0x120);
    if (iVar1 != 0) {
      FUN_00a85120(iVar1);
    }
    iVar1 = *(int *)(*(int *)(param_1 + 0x58) + 0x348);
    if (iVar1 != 0) {
      FUN_00a8ef50(iVar1);
    }
    iVar1 = *(int *)(*(int *)(param_1 + 0x58) + 0x34c);
    if (iVar1 != 0) {
      FUN_00a8e900(iVar1);
    }
    iVar1 = *(int *)(*(int *)(param_1 + 0x58) + 0x36c);
    if (iVar1 != 0) {
      FUN_00a81120(iVar1,FUN_00a88dc0);
    }
    iVar1 = *(int *)(*(int *)(param_1 + 0x58) + 0x178);
    if (iVar1 != 0) {
      FUN_00a83270(iVar1);
    }
    if (*(int *)(*(int *)(param_1 + 0x58) + 0x17c) != 0) {
      FUN_00b0ef90(param_1);
    }
    FUN_00b02820(param_1);
    FUN_00a84330(*(undefined4 *)(param_1 + 0x58),0x420);
    FUN_00a85120(*(undefined4 *)(param_1 + 0x58));
    *(undefined4 *)(param_1 + 0x58) = 0;
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b03400(undefined4 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  
  FUN_00b0eda0(param_1);
  if (*(int *)(param_1[0x16] + 0x36c) != 0) {
    FUN_00a81120(*(int *)(param_1[0x16] + 0x36c),FUN_00a88dc0);
  }
  if (*(int *)(param_1[0x16] + 0x120) != 0) {
    FUN_00a85120(*(int *)(param_1[0x16] + 0x120));
    *(undefined4 *)(param_1[0x16] + 0x120) = 0;
  }
  if (*(int *)(param_1[0x16] + 0x348) != 0) {
    FUN_00a8ef50(*(int *)(param_1[0x16] + 0x348));
    *(undefined4 *)(param_1[0x16] + 0x348) = 0;
  }
  if (*(int *)(param_1[0x16] + 0x34c) != 0) {
    FUN_00a8e900(*(int *)(param_1[0x16] + 0x34c));
    *(undefined4 *)(param_1[0x16] + 0x34c) = 0;
  }
  iVar1 = param_1[0x16];
  uVar2 = *(undefined4 *)(iVar1 + 0xf0);
  uVar3 = *(undefined4 *)(iVar1 + 0x100);
  uVar4 = *(undefined4 *)(iVar1 + 0xfc);
  uVar5 = *(undefined4 *)(iVar1 + 0xec);
  uVar6 = *(undefined4 *)(iVar1 + 0xe8);
  if (*(int *)(iVar1 + 0x178) != 0) {
    FUN_00a83270(*(int *)(iVar1 + 0x178));
    *(undefined4 *)(param_1[0x16] + 0x178) = 0;
  }
  if (*(int *)(param_1[0x16] + 0x17c) != 0) {
    FUN_00b0ef90(param_1);
  }
  _memset((void *)param_1[0x16],0,0x420);
  *(undefined4 *)(param_1[0x16] + 0xec) = uVar5;
  *(undefined4 *)(param_1[0x16] + 0xfc) = uVar4;
  *(undefined4 *)(param_1[0x16] + 0xf0) = uVar2;
  *(undefined4 *)(param_1[0x16] + 0x100) = uVar3;
  *(undefined4 *)(param_1[0x16] + 0xe8) = uVar6;
  FUN_00afadc0(param_1);
  param_1[0x14] = 0;
  *(undefined4 *)(param_1[0x16] + 0x194) = 0;
  *(undefined4 *)(param_1[0x16] + 0x198) = 0;
  *(undefined4 *)(param_1[0x16] + 0x19c) = 0;
  *(undefined4 *)(param_1[0x16] + 0x1a0) = 0;
  *param_1 = 0x300;
  if (param_1[0x5d] != 0) {
    FUN_00a85120(param_1[0x5d]);
    param_1[0x5d] = 0;
    *(undefined *)(param_1 + 0x5e) = 0;
  }
  return;
}



undefined4 FUN_00b035c0(int param_1,int param_2,int param_3,undefined4 *param_4)

{
  char cVar1;
  int iVar2;
  int iVar3;
  undefined4 *puVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  
  uVar5 = 0;
  if (((((param_2 == 2) || (param_2 == 5)) || (param_2 == 3)) || (param_2 == 6)) &&
     (iVar2 = FUN_00aff770(param_1 + 0x98), iVar2 == 0)) {
    uVar6 = 0xc20;
    uVar5 = 0x41;
    goto LAB_00b03600;
  }
  switch(param_2) {
  case 1:
    iVar2 = *(int *)(param_1 + 0x98);
    if (iVar2 == 0) {
      return 0;
    }
    if (*(int *)(iVar2 + 0x18) != 0) {
      return 0;
    }
    if (*(int *)(iVar2 + 0x34) != 0) {
      iVar2 = FUN_00a81360(*(int *)(iVar2 + 0x34));
      if (iVar2 < 0x41) {
        return 0;
      }
      return 1;
    }
    goto LAB_00b03a5b;
  case 2:
    if (param_4 == (undefined4 *)0x0) {
      uVar6 = 0xc46;
      uVar5 = 0x43;
    }
    else {
      iVar2 = FUN_00ad8930(param_4);
      if (iVar2 != 0) {
        iVar3 = *(int *)(*(int *)(param_1 + 0x98) + 0x18);
        if (iVar3 != 0) {
          FUN_00a8e490(iVar3);
        }
        *(int *)(*(int *)(param_1 + 0x98) + 0x18) = iVar2;
        return 1;
      }
      uVar6 = 0xc4b;
      uVar5 = 4;
    }
    break;
  case 3:
    if (param_4 == (undefined4 *)0x0) {
      uVar6 = 0xc61;
      uVar5 = 0x43;
    }
    else {
      iVar2 = FUN_00ad87e0(param_4);
      if (iVar2 != 0) {
        if (((*(uint *)(param_1 + 0x100) & 0x100000) == 0) &&
           (iVar3 = FUN_00aa52a0(iVar2), iVar3 == 0)) {
          FUN_00a8ef50(iVar2);
          FUN_00a7f3c0(0x14,0xd5,5,".\\ssl\\s3_lib.c",0xc6e);
          return 0;
        }
        iVar3 = *(int *)(*(int *)(param_1 + 0x98) + 0x20);
        if (iVar3 != 0) {
          FUN_00a8ef50(iVar3);
        }
        *(int *)(*(int *)(param_1 + 0x98) + 0x20) = iVar2;
        return 1;
      }
      uVar6 = 0xc66;
      uVar5 = 5;
    }
    break;
  case 4:
    if (param_4 == (undefined4 *)0x0) {
      uVar6 = 0xc86;
      uVar5 = 0x43;
    }
    else {
      iVar2 = FUN_00a8eb00(param_4);
      if (iVar2 != 0) {
        if (((*(uint *)(param_1 + 0x100) & 0x80000) == 0) &&
           (iVar2 = FUN_00a8eb30(param_4), iVar2 == 0)) {
          FUN_00a8e900(param_4);
          FUN_00a7f3c0(0x14,0xd5,0x2b,".\\ssl\\s3_lib.c",0xc94);
          return 0;
        }
        iVar2 = *(int *)(*(int *)(param_1 + 0x98) + 0x28);
        if (iVar2 != 0) {
          FUN_00a8e900(iVar2);
        }
        *(undefined4 **)(*(int *)(param_1 + 0x98) + 0x28) = param_4;
        return 1;
      }
      uVar6 = 0xc8b;
      uVar5 = 0x2b;
    }
    break;
  case 5:
    uVar6 = 0xc56;
    uVar5 = 0x42;
    break;
  case 6:
    uVar6 = 0xc7a;
    uVar5 = 0x42;
    break;
  case 7:
    uVar6 = 0xca0;
    uVar5 = 0x42;
    break;
  case 8:
    return *(undefined4 *)(param_1 + 0x6c);
  default:
    goto switchD_00b03628_caseD_9;
  case 10:
    return *(undefined4 *)(*(int *)(param_1 + 0x58) + 0x19c);
  case 0xb:
    uVar5 = *(undefined4 *)(*(int *)(param_1 + 0x58) + 0x19c);
    *(undefined4 *)(*(int *)(param_1 + 0x58) + 0x19c) = 0;
    return uVar5;
  case 0xc:
    return *(undefined4 *)(*(int *)(param_1 + 0x58) + 0x198);
  case 0xd:
    return **(undefined4 **)(param_1 + 0x58);
  case 0x37:
    if (param_3 == 0) {
      if (*(int *)(param_1 + 0x120) != 0) {
        FUN_00a85120(*(int *)(param_1 + 0x120));
      }
      *(undefined4 *)(param_1 + 0x120) = 0;
      if (param_4 == (undefined4 *)0x0) {
        return 1;
      }
      puVar4 = param_4;
      do {
        cVar1 = *(char *)puVar4;
        puVar4 = (undefined4 *)((int)puVar4 + 1);
      } while (cVar1 != '\0');
      if ((uint)((int)puVar4 - (int)((int)param_4 + 1)) < 0x100) {
        iVar2 = FUN_00a852b0(param_4);
        *(int *)(param_1 + 0x120) = iVar2;
        if (iVar2 != 0) {
          return 1;
        }
        uVar6 = 0xcb7;
        uVar5 = 0x44;
      }
      else {
        uVar6 = 0xcb2;
        uVar5 = 0x13f;
      }
    }
    else {
      uVar6 = 0xcbd;
      uVar5 = 0x140;
    }
    break;
  case 0x39:
    *(undefined4 **)(param_1 + 0x11c) = param_4;
    return 1;
  case 0x41:
    *(int *)(param_1 + 0x128) = param_3;
    return 1;
  case 0x42:
    *param_4 = *(undefined4 *)(param_1 + 0x134);
    return 1;
  case 0x43:
    *(undefined4 **)(param_1 + 0x134) = param_4;
    return 1;
  case 0x44:
    *param_4 = *(undefined4 *)(param_1 + 0x130);
    return 1;
  case 0x45:
    *(undefined4 **)(param_1 + 0x130) = param_4;
    return 1;
  case 0x46:
    *param_4 = *(undefined4 *)(param_1 + 0x138);
    return *(undefined4 *)(param_1 + 0x13c);
  case 0x47:
    if (*(int *)(param_1 + 0x138) != 0) {
      FUN_00a85120(*(int *)(param_1 + 0x138));
    }
    *(undefined4 **)(param_1 + 0x138) = param_4;
    *(int *)(param_1 + 0x13c) = param_3;
    return 1;
  case 0x55:
    iVar2 = FUN_00a814c0(param_1);
    if ((iVar2 != 0xfeff) && (iVar2 = FUN_00a814c0(param_1), iVar2 != 0x100)) {
      uVar5 = FUN_00b07b80(param_1);
      return uVar5;
    }
    uVar5 = FUN_00b030d0(param_1);
    return uVar5;
  case 0x56:
    return *(undefined4 *)(param_1 + 0x188);
  case 0x57:
    if (param_3 != 0) {
      *(uint *)(param_1 + 0x184) = *(uint *)(param_1 + 0x184) | 4;
      return 1;
    }
    *(uint *)(param_1 + 0x184) = *(uint *)(param_1 + 0x184) & 0xfffffffb;
LAB_00b03a5b:
    uVar5 = 1;
switchD_00b03628_caseD_9:
    return uVar5;
  }
LAB_00b03600:
  FUN_00a7f3c0(0x14,0xd5,uVar5,".\\ssl\\s3_lib.c",uVar6);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int * FUN_00b04290(byte *param_1)

{
  int *piVar1;
  undefined local_30 [8];
  uint local_28;
  undefined4 uStack_4;
  
  uStack_4 = 0xb0429a;
  local_28 = (*param_1 | 0x30000) << 8 | (uint)param_1[1];
  piVar1 = (int *)FUN_00afae60(local_30,&DAT_03243728,0x8c);
  if ((piVar1 == (int *)0x0) || (*piVar1 == 0)) {
    piVar1 = (int *)0x0;
  }
  return piVar1;
}



undefined4 FUN_00b042e0(int param_1,undefined *param_2)

{
  uint uVar1;
  
  if (param_2 != (undefined *)0x0) {
    uVar1 = *(uint *)(param_1 + 8);
    if ((uVar1 & 0xff000000) != 0x3000000) {
      return 0;
    }
    *param_2 = (char)(uVar1 >> 8);
    param_2[1] = (char)uVar1;
  }
  return 2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b04320(uint *param_1,undefined4 param_2,undefined4 param_3)

{
  char cVar1;
  uint uVar2;
  int *piVar3;
  bool bVar4;
  bool bVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  undefined4 uVar11;
  char *pcVar12;
  uint uVar13;
  char local_1a;
  char local_19;
  undefined4 local_10;
  int local_c;
  
  uVar2 = param_1[0x26];
  local_19 = '\0';
  local_1a = '\0';
  if ((param_1[0x40] & 0x400000) == 0) {
    local_10 = param_3;
    param_3 = param_2;
  }
  else {
    local_10 = param_2;
  }
  local_c = 0;
  iVar6 = FUN_00a80ed0(param_3);
  if (iVar6 < 1) {
    return 0;
  }
LAB_00b04387:
  iVar6 = FUN_00a80ee0(param_3,local_c);
  if (((*(byte *)(iVar6 + 0x1c) & 4) == 0) ||
     (((*param_1 & 0xffffff00) == 0x300 && (0x302 < (int)*param_1)))) {
    FUN_00afa400(uVar2,iVar6);
    uVar13 = *(uint *)(uVar2 + 0x14);
    uVar10 = *(uint *)(iVar6 + 0xc);
    uVar9 = *(uint *)(iVar6 + 0x10);
    if (((uVar10 & 0x100) != 0) && (param_1[0x38] == 0)) goto LAB_00b047d8;
    if ((*(byte *)(iVar6 + 0x20) & 2) == 0) {
      uVar13 = *(uint *)(uVar2 + 0xc);
      if ((uVar10 & (*(uint *)(uVar2 + 8) | param_1[0x74])) != 0) goto LAB_00b04423;
LAB_00b0442d:
      bVar5 = false;
    }
    else {
      if ((uVar10 & (*(uint *)(uVar2 + 0x10) | param_1[0x74])) == 0) goto LAB_00b0442d;
LAB_00b04423:
      bVar5 = true;
      if ((uVar13 & uVar9) == 0) goto LAB_00b0442d;
    }
    if (((uVar9 & 0x40) != 0) || ((uVar9 & 0x10) != 0)) {
      piVar3 = *(int **)(param_1[0x26] + 0x6c);
      if (((piVar3 == (int *)0x0) ||
          (((((*(int *)(param_1[0x30] + 0xd4) == 0 || (*(int *)(param_1[0x30] + 0xd8) == 0)) ||
             (*piVar3 == 0)) ||
            ((*(int *)(*piVar3 + 0x18) == 0 ||
             (iVar7 = *(int *)(*(int *)(*piVar3 + 0x18) + 4), iVar7 == 0)))) ||
           (pcVar12 = *(char **)(iVar7 + 8), pcVar12 == (char *)0x0)))) ||
         ((cVar1 = *pcVar12, cVar1 != '\x02' && (cVar1 != '\x03')))) goto LAB_00b04564;
      iVar7 = *(int *)(*(int *)(param_1[0x26] + 0x70) + 0x14);
      bVar4 = false;
      if ((iVar7 == 0) ||
         (((piVar3 = *(int **)(iVar7 + 4), piVar3 == (int *)0x0 || (*piVar3 == 0)) ||
          (iVar7 = FUN_00a7fa30(*piVar3), iVar7 != 0x196)))) {
        iVar7 = FUN_00a7fa30(**(undefined4 **)(*(int *)(*(int *)(param_1[0x26] + 0x70) + 0x14) + 4))
        ;
        if (iVar7 == 0x197) {
          uVar13 = *(uint *)(param_1[0x30] + 0xd4);
          uVar8 = 0;
          if (uVar13 != 0) {
            do {
              if (*(char *)(*(int *)(param_1[0x30] + 0xd8) + uVar8) == '\x02') goto LAB_00b04544;
              uVar8 = uVar8 + 1;
            } while (uVar8 < uVar13);
          }
        }
      }
      else {
        uVar13 = *(uint *)(param_1[0x30] + 0xd4);
        uVar8 = 0;
        if (uVar13 != 0) {
          do {
            if (*(char *)(*(int *)(param_1[0x30] + 0xd8) + uVar8) == '\x01') goto LAB_00b04544;
            uVar8 = uVar8 + 1;
          } while (uVar8 < uVar13);
        }
      }
      goto LAB_00b04549;
    }
    goto LAB_00b04564;
  }
  goto LAB_00b047d8;
LAB_00b04544:
  bVar4 = true;
LAB_00b04549:
  if ((!bVar5) || (bVar5 = true, !bVar4)) {
    bVar5 = false;
  }
LAB_00b04564:
  if ((((uVar9 & 0x40) != 0) || ((uVar9 & 0x10) != 0)) &&
     ((*(int *)(param_1[0x26] + 0x6c) != 0 &&
      ((*(int *)(param_1[0x30] + 0xdc) != 0 && (*(int *)(param_1[0x30] + 0xe0) != 0)))))) {
    iVar7 = *(int *)(*(int *)(param_1[0x26] + 0x70) + 0x14);
    bVar4 = false;
    if ((iVar7 != 0) && (iVar7 = *(int *)(iVar7 + 4), iVar7 != 0)) {
      iVar7 = FUN_00aa35a0(iVar7);
      if ((iVar7 == 0) &&
         (piVar3 = *(int **)(*(int *)(*(int *)(param_1[0x26] + 0x70) + 0x14) + 4), *piVar3 != 0)) {
        iVar7 = FUN_00a7fa30(*piVar3);
        if (iVar7 == 0x196) {
          local_19 = -1;
          local_1a = '\x01';
        }
        else {
          iVar7 = FUN_00a7fa30(**(undefined4 **)
                                 (*(int *)(*(int *)(param_1[0x26] + 0x70) + 0x14) + 4));
          if (iVar7 == 0x197) {
            local_19 = -1;
            local_1a = '\x02';
          }
          else if (local_19 == '\0') goto LAB_00b04650;
        }
      }
      else {
        local_19 = '\0';
        local_1a = FUN_00b05ce0(iVar7);
LAB_00b04650:
        if (local_1a == '\0') goto LAB_00b04688;
      }
      uVar9 = 0;
      uVar13 = *(uint *)(param_1[0x30] + 0xdc) >> 1;
      if (uVar13 != 0) {
        pcVar12 = *(char **)(param_1[0x30] + 0xe0);
        do {
          if ((*pcVar12 == local_19) && (pcVar12[1] == local_1a)) {
            bVar4 = true;
            break;
          }
          uVar9 = uVar9 + 1;
          pcVar12 = pcVar12 + 2;
        } while (uVar9 < uVar13);
      }
    }
LAB_00b04688:
    if ((!bVar5) || (bVar5 = true, !bVar4)) {
      bVar5 = false;
    }
  }
  bVar4 = bVar5;
  if (((((uVar10 & 0x80) != 0) && (*(int *)(param_1[0x26] + 0x28) != 0)) &&
      (*(int *)(param_1[0x30] + 0xdc) != 0)) && (*(int *)(param_1[0x30] + 0xe0) != 0)) {
    iVar7 = *(int *)(*(int *)(param_1[0x26] + 0x28) + 4);
    bVar4 = false;
    if (iVar7 != 0) {
      iVar7 = FUN_00aa35a0(iVar7);
      if ((iVar7 == 0) && (piVar3 = *(int **)(*(int *)(param_1[0x26] + 0x28) + 4), *piVar3 != 0)) {
        iVar7 = FUN_00a7fa30(*piVar3);
        if (iVar7 == 0x196) {
          local_19 = -1;
          local_1a = '\x01';
        }
        else {
          iVar7 = FUN_00a7fa30(**(undefined4 **)(*(int *)(param_1[0x26] + 0x28) + 4));
          if (iVar7 == 0x197) {
            local_19 = -1;
            local_1a = '\x02';
          }
          else if (local_19 == '\0') goto LAB_00b0477a;
        }
      }
      else {
        local_19 = '\0';
        local_1a = FUN_00b05ce0(iVar7);
LAB_00b0477a:
        if (local_1a == '\0') goto LAB_00b047ae;
      }
      uVar10 = 0;
      uVar9 = *(uint *)(param_1[0x30] + 0xdc) >> 1;
      if (uVar9 != 0) {
        pcVar12 = *(char **)(param_1[0x30] + 0xe0);
        do {
          if ((*pcVar12 == local_19) && (pcVar12[1] == local_1a)) {
            bVar4 = true;
            break;
          }
          uVar10 = uVar10 + 1;
          pcVar12 = pcVar12 + 2;
        } while (uVar10 < uVar9);
      }
    }
LAB_00b047ae:
    if (!bVar5) goto LAB_00b047d8;
  }
  if ((bVar4) && (iVar6 = FUN_00a81100(local_10,iVar6), -1 < iVar6)) {
    uVar11 = FUN_00a80ee0(local_10,iVar6);
    return uVar11;
  }
LAB_00b047d8:
  local_c = local_c + 1;
  iVar6 = FUN_00a80ed0(param_3);
  if (iVar6 <= local_c) {
    return 0;
  }
  goto LAB_00b04387;
}



int FUN_00b04820(int *param_1,undefined *param_2)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  
  uVar1 = *(uint *)(*(int *)(param_1[0x16] + 0x344) + 0xc);
  iVar2 = 0;
  if ((0x300 < *param_1) && ((uVar1 & 0x200) != 0)) {
    *param_2 = 0x15;
    param_2[1] = 0x16;
    return 2;
  }
  if ((uVar1 & 10) != 0) {
    *param_2 = 3;
    param_2[1] = 4;
    iVar2 = 2;
  }
  if ((*param_1 == 0x300) && ((uVar1 & 0xe) != 0)) {
    param_2[iVar2] = 5;
    param_2[iVar2 + 1] = 6;
    iVar2 = iVar2 + 2;
  }
  param_2[iVar2] = 1;
  param_2[iVar2 + 1] = 2;
  iVar3 = iVar2 + 2;
  if ((uVar1 & 0x60) != 0) {
    if (*param_1 < 0x301) {
      return iVar3;
    }
    param_2[iVar3] = 0x41;
    param_2[iVar2 + 3] = 0x42;
    iVar3 = iVar2 + 4;
  }
  if (0x300 < *param_1) {
    param_2[iVar3] = 0x40;
    iVar3 = iVar3 + 1;
  }
  return iVar3;
}



undefined4 FUN_00b048c0(int param_1)

{
  uint uVar1;
  int iVar2;
  
  if ((*(int *)(param_1 + 0x2c) == 0) && (*(int *)(param_1 + 0x34) != 0x4000)) {
    uVar1 = *(uint *)(param_1 + 0x30);
    if ((uVar1 & 1) == 0) {
      *(uint *)(param_1 + 0x30) = uVar1 | 1;
      FUN_00b00df0(param_1,1,0);
      if (*(int *)(*(int *)(param_1 + 0x58) + 0x18c) != 0) {
        return 0xffffffff;
      }
    }
    else if (*(int *)(*(int *)(param_1 + 0x58) + 0x18c) == 0) {
      if (((uVar1 & 2) == 0) &&
         ((**(code **)(*(int *)(param_1 + 8) + 0x34))(param_1,0,0,0,0),
         (*(byte *)(param_1 + 0x30) & 2) == 0)) {
        return 0xffffffff;
      }
    }
    else {
      iVar2 = (**(code **)(*(int *)(param_1 + 8) + 0x3c))(param_1);
      if (iVar2 == -1) {
        return 0xffffffff;
      }
    }
    if ((*(int *)(param_1 + 0x30) != 3) || (*(int *)(*(int *)(param_1 + 0x58) + 0x18c) != 0)) {
      return 0;
    }
  }
  else {
    *(undefined4 *)(param_1 + 0x30) = 3;
  }
  return 1;
}



undefined4 FUN_00b04970(int param_1)

{
  if (*(int *)(param_1 + 0x20) != 0) {
    if ((**(byte **)(param_1 + 0x58) & 1) != 0) {
      return 0;
    }
    *(undefined4 *)(*(byte **)(param_1 + 0x58) + 0x194) = 1;
  }
  return 1;
}



undefined4 FUN_00b049a0(int param_1)

{
  int *piVar1;
  int iVar2;
  uint uVar3;
  
  iVar2 = *(int *)(param_1 + 0x58);
  if (((*(int *)(iVar2 + 0x194) != 0) && (*(int *)(iVar2 + 0xf8) == 0)) &&
     (*(int *)(iVar2 + 0x108) == 0)) {
    uVar3 = FUN_00aa35c0(param_1);
    if ((uVar3 & 0x3000) == 0) {
      *(undefined4 *)(param_1 + 0x34) = 0x3004;
      *(undefined4 *)(*(int *)(param_1 + 0x58) + 0x194) = 0;
      piVar1 = (int *)(*(int *)(param_1 + 0x58) + 0x19c);
      *piVar1 = *piVar1 + 1;
      piVar1 = (int *)(*(int *)(param_1 + 0x58) + 0x198);
      *piVar1 = *piVar1 + 1;
      return 1;
    }
  }
  return 0;
}



int FUN_00b04a10(uint *param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(*(int *)(param_1[0x16] + 0x344) + 0x24);
  if ((((*param_1 & 0xffffff00) == 0x300) && (0x302 < (int)*param_1)) && (iVar1 == 0xc030)) {
    iVar1 = 0x20080;
  }
  return iVar1;
}



void FUN_00b04b10(void)

{
  int iVar1;
  int unaff_ESI;
  
  SetLastError(0);
  if (*(int *)(*(int *)(unaff_ESI + 0x58) + 0x194) != 0) {
    FUN_00b049a0();
  }
  *(undefined4 *)(*(int *)(unaff_ESI + 0x58) + 0x1a0) = 1;
  iVar1 = (**(code **)(*(int *)(unaff_ESI + 8) + 0x34))();
  if ((iVar1 == -1) && (*(int *)(*(int *)(unaff_ESI + 0x58) + 0x1a0) == 2)) {
    *(int *)(unaff_ESI + 0x1c) = *(int *)(unaff_ESI + 0x1c) + 1;
    (**(code **)(*(int *)(unaff_ESI + 8) + 0x34))();
    *(int *)(unaff_ESI + 0x1c) = *(int *)(unaff_ESI + 0x1c) + -1;
    return;
  }
  *(undefined4 *)(*(int *)(unaff_ESI + 0x58) + 0x1a0) = 0;
  return;
}



void FUN_00b04c40(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_00b04290(param_1);
  if (iVar1 == 0) {
    FUN_00b0e2e0(param_1);
  }
  return;
}



undefined4 FUN_00b04e10(undefined4 *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  
  iVar2 = FUN_00b02310(param_1,param_2,*(int *)(param_1[0xf] + 4) + param_1[0x12],param_1[0x11]);
  if (iVar2 < 0) {
    return 0xffffffff;
  }
  if (param_2 == 0x16) {
    FUN_00b0f000(param_1,*(int *)(param_1[0xf] + 4) + param_1[0x12],iVar2);
  }
  iVar1 = param_1[0x11];
  if (iVar2 == iVar1) {
    if ((code *)param_1[0x19] != (code *)0x0) {
      (*(code *)param_1[0x19])
                (1,*param_1,param_2,*(undefined4 *)(param_1[0xf] + 4),param_1[0x12] + iVar1,param_1,
                 param_1[0x1a]);
    }
    return 1;
  }
  param_1[0x12] = param_1[0x12] + iVar2;
  param_1[0x11] = iVar1 - iVar2;
  return 0;
}



void FUN_00b04ea0(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  undefined *puVar1;
  size_t _Size;
  undefined uVar2;
  
  if (*(int *)(param_1 + 0x34) == param_2) {
    puVar1 = *(undefined **)(*(int *)(param_1 + 0x3c) + 4);
    _Size = (**(code **)(*(int *)(*(int *)(param_1 + 8) + 100) + 0x14))
                      (param_1,param_4,param_5,*(int *)(param_1 + 0x58) + 0x234);
    *(size_t *)(*(int *)(param_1 + 0x58) + 0x2b4) = _Size;
    _memcpy(puVar1 + 4,(void *)(*(int *)(param_1 + 0x58) + 0x234),_Size);
    uVar2 = (undefined)_Size;
    if (*(int *)(param_1 + 4) == 0x1000) {
      if (0x40 < (int)_Size) {
        FUN_00a7fd60(".\\ssl\\s3_both.c",0xad,"i <= EVP_MAX_MD_SIZE");
      }
      _memcpy((void *)(*(int *)(param_1 + 0x58) + 0x394),(void *)(*(int *)(param_1 + 0x58) + 0x234),
              _Size);
      *(undefined *)(*(int *)(param_1 + 0x58) + 0x3d4) = uVar2;
    }
    else {
      if (0x40 < (int)_Size) {
        FUN_00a7fd60(".\\ssl\\s3_both.c",0xb4,"i <= EVP_MAX_MD_SIZE");
      }
      _memcpy((void *)(*(int *)(param_1 + 0x58) + 0x3d5),(void *)(*(int *)(param_1 + 0x58) + 0x234),
              _Size);
      *(undefined *)(*(int *)(param_1 + 0x58) + 0x415) = uVar2;
    }
    *puVar1 = 0x14;
    puVar1[3] = uVar2;
    puVar1[1] = (char)(_Size >> 0x10);
    puVar1[2] = (char)(_Size >> 8);
    *(size_t *)(param_1 + 0x44) = _Size + 4;
    *(undefined4 *)(param_1 + 0x48) = 0;
    *(undefined4 *)(param_1 + 0x34) = param_3;
  }
  FUN_00b04e10(param_1,0x16);
  return;
}



void FUN_00b04fc0(void)

{
  undefined4 uVar1;
  int unaff_ESI;
  
  uVar1 = (**(code **)(*(int *)(*(int *)(unaff_ESI + 8) + 100) + 0x14))();
  *(undefined4 *)(*(int *)(unaff_ESI + 0x58) + 0x338) = uVar1;
  return;
}



size_t FUN_00b05010(int param_1,undefined4 param_2,undefined4 param_3)

{
  size_t _Size;
  int iVar1;
  size_t sVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  
  iVar1 = param_1;
  sVar2 = (**(code **)(*(int *)(param_1 + 8) + 0x30))(param_1,param_2,param_3,0x14,0x40,&param_1);
  if (param_1 == 0) {
    return sVar2;
  }
  if (*(int *)(*(int *)(iVar1 + 0x58) + 0x180) == 0) {
    uVar6 = 0xfd;
    uVar4 = 10;
    uVar5 = 0x9a;
  }
  else {
    *(undefined4 *)(*(int *)(iVar1 + 0x58) + 0x180) = 0;
    _Size = *(size_t *)(*(int *)(iVar1 + 0x58) + 0x338);
    if (_Size == sVar2) {
      iVar3 = FUN_00a7fd90(*(undefined4 *)(iVar1 + 0x40),*(int *)(iVar1 + 0x58) + 0x2b8,_Size);
      if (iVar3 == 0) {
        if (*(int *)(iVar1 + 4) != 0x2000) {
          if (0x40 < (int)_Size) {
            FUN_00a7fd60(".\\ssl\\s3_both.c",0x11e,"i <= EVP_MAX_MD_SIZE");
          }
          _memcpy((void *)(*(int *)(iVar1 + 0x58) + 0x3d5),(void *)(*(int *)(iVar1 + 0x58) + 0x2b8),
                  _Size);
          *(char *)(*(int *)(iVar1 + 0x58) + 0x415) = (char)_Size;
          return 1;
        }
        if (0x40 < (int)_Size) {
          FUN_00a7fd60(".\\ssl\\s3_both.c",0x117,"i <= EVP_MAX_MD_SIZE");
        }
        _memcpy((void *)(*(int *)(iVar1 + 0x58) + 0x394),(void *)(*(int *)(iVar1 + 0x58) + 0x2b8),
                _Size);
        *(char *)(*(int *)(iVar1 + 0x58) + 0x3d4) = (char)_Size;
        return 1;
      }
      uVar6 = 0x10f;
      uVar4 = 0x33;
      uVar5 = 0x95;
    }
    else {
      uVar6 = 0x108;
      uVar4 = 0x32;
      uVar5 = 0x6f;
    }
  }
  FUN_00a7f3c0(0x14,0x8c,uVar5,".\\ssl\\s3_both.c",uVar6);
  FUN_00b00df0(iVar1,2,uVar4);
  return 0;
}



void FUN_00b05180(int param_1,int param_2,undefined4 param_3)

{
  if (*(int *)(param_1 + 0x34) == param_2) {
    **(undefined **)(*(int *)(param_1 + 0x3c) + 4) = 1;
    *(undefined4 *)(param_1 + 0x44) = 1;
    *(undefined4 *)(param_1 + 0x48) = 0;
    *(undefined4 *)(param_1 + 0x34) = param_3;
  }
  FUN_00b04e10(param_1,0x14);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b051c0(int param_1)

{
  int iVar1;
  int iVar2;
  undefined *puVar3;
  int *unaff_ESI;
  
  iVar1 = FUN_00a812a0();
  iVar2 = FUN_00a92b40(param_1,*unaff_ESI + 3 + iVar1);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x14,0x128,7,".\\ssl\\s3_both.c",0x14c);
    return 0xffffffff;
  }
  puVar3 = (undefined *)(*(int *)(param_1 + 4) + *unaff_ESI);
  *puVar3 = (char)((uint)iVar1 >> 0x10);
  puVar3[1] = (char)((uint)iVar1 >> 8);
  puVar3[2] = (char)iVar1;
  FUN_00a812a0();
  *unaff_ESI = *unaff_ESI + iVar1 + 3;
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b05260(int param_1,int param_2)

{
  int iVar1;
  undefined *puVar2;
  bool bVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined local_88 [84];
  undefined4 local_34;
  undefined4 uStack_4;
  
  uStack_4 = 0xb0526a;
  if (((*(byte *)(param_1 + 0x104) & 8) == 0) && (*(int *)(*(int *)(param_1 + 0xe4) + 0x94) == 0)) {
    bVar3 = false;
  }
  else {
    bVar3 = true;
  }
  iVar1 = *(int *)(param_1 + 0x3c);
  iVar4 = FUN_00a92b40(iVar1,10);
  if (iVar4 != 0) {
    if (param_2 != 0) {
      if (bVar3) {
        iVar4 = FUN_00b051c0(iVar1);
        if (iVar4 != 0) {
          return 0;
        }
      }
      else {
        iVar4 = FUN_00aebd60(local_88,*(undefined4 *)(*(int *)(param_1 + 0xe4) + 0xc),param_2,0);
        if (iVar4 == 0) {
          uVar7 = 0x178;
          uVar6 = 0xb;
          goto LAB_00b052c1;
        }
        FUN_00aeb220(local_88);
        FUN_00a7f4b0();
        iVar5 = 0;
        iVar4 = FUN_00a80ed0(local_34);
        if (0 < iVar4) {
          do {
            FUN_00a80ee0(local_34,iVar5);
            iVar4 = FUN_00b051c0(iVar1);
            if (iVar4 != 0) {
              FUN_00aeaab0(local_88);
              return 0;
            }
            iVar5 = iVar5 + 1;
            iVar4 = FUN_00a80ed0(local_34);
          } while (iVar5 < iVar4);
        }
        FUN_00aeaab0(local_88);
      }
    }
    iVar5 = 0;
    iVar4 = FUN_00a80ed0(*(undefined4 *)(*(int *)(param_1 + 0xe4) + 0x94));
    if (0 < iVar4) {
      do {
        FUN_00a80ee0(*(undefined4 *)(*(int *)(param_1 + 0xe4) + 0x94),iVar5);
        iVar4 = FUN_00b051c0(iVar1);
        if (iVar4 != 0) {
          return 0;
        }
        iVar5 = iVar5 + 1;
        iVar4 = FUN_00a80ed0(*(undefined4 *)(*(int *)(param_1 + 0xe4) + 0x94));
      } while (iVar5 < iVar4);
    }
    iVar4 = *(int *)(iVar1 + 4);
    *(undefined *)(iVar4 + 6) = 0;
    *(undefined *)(iVar4 + 4) = 0;
    *(undefined *)(iVar4 + 5) = 0;
    puVar2 = *(undefined **)(iVar1 + 4);
    *puVar2 = 0xb;
    puVar2[3] = 3;
    puVar2[1] = 0;
    puVar2[2] = 0;
    return 7;
  }
  uVar7 = 0x168;
  uVar6 = 7;
LAB_00b052c1:
  FUN_00a7f3c0(0x14,0x93,uVar6,".\\ssl\\s3_both.c",uVar7);
  return 0;
}



int FUN_00b054b0(undefined4 *param_1,int param_2,int param_3,uint param_4,uint param_5,
                undefined4 *param_6)

{
  byte *pbVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  undefined4 uVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  
  if (*(int *)(param_1[0x16] + 0x354) == 0) {
    pbVar1 = *(byte **)(param_1[0xf] + 4);
    if (param_1[0xd] != param_2) {
LAB_00b056e0:
      iVar6 = *(int *)(param_1[0x16] + 0x33c) - param_1[0x11];
      iVar2 = param_1[0x10];
      while( true ) {
        if (iVar6 < 1) {
          if (**(char **)(param_1[0xf] + 4) == '\x14') {
            FUN_00b04fc0();
          }
          FUN_00b0f000(param_1,*(undefined4 *)(param_1[0xf] + 4),param_1[0x11] + 4);
          if ((code *)param_1[0x19] != (code *)0x0) {
            (*(code *)param_1[0x19])
                      (0,*param_1,0x16,*(undefined4 *)(param_1[0xf] + 4),param_1[0x11] + 4,param_1,
                       param_1[0x1a]);
          }
          *param_6 = 1;
          return param_1[0x11];
        }
        iVar3 = (**(code **)(param_1[2] + 0x34))(param_1,0x16,param_1[0x11] + iVar2,iVar6,0);
        if (iVar3 < 1) break;
        param_1[0x11] = param_1[0x11] + iVar3;
        iVar6 = iVar6 - iVar3;
      }
      param_1[6] = 3;
      *param_6 = 0;
      return iVar3;
    }
    while( true ) {
      iVar2 = param_1[0x11];
      while (iVar2 < 4) {
        iVar2 = (**(code **)(param_1[2] + 0x34))
                          (param_1,0x16,pbVar1 + param_1[0x11],4 - param_1[0x11],0);
        if (iVar2 < 1) {
          param_1[6] = 3;
          *param_6 = 0;
          return iVar2;
        }
        param_1[0x11] = param_1[0x11] + iVar2;
        iVar2 = param_1[0x11];
      }
      if ((((param_1[9] != 0) || (*pbVar1 != 0)) || (pbVar1[1] != 0)) ||
         ((pbVar1[2] != 0 || (pbVar1[3] != 0)))) break;
      param_1[0x11] = 0;
      if ((code *)param_1[0x19] != (code *)0x0) {
        (*(code *)param_1[0x19])(0,*param_1,0x16,pbVar1,4,param_1,param_1[0x1a]);
      }
    }
    if ((int)param_4 < 0) {
      if (((*pbVar1 == 1) && (param_2 == 0x2180)) && (param_3 == 0x2181)) {
        FUN_00b0f810(param_1);
      }
    }
    else if (*pbVar1 != param_4) {
      uVar8 = 0x1e5;
      uVar5 = 10;
      uVar7 = 0xf4;
      goto LAB_00b0564f;
    }
    *(uint *)(param_1[0x16] + 0x340) = (uint)*pbVar1;
    uVar4 = (uint)CONCAT21(CONCAT11(pbVar1[1],pbVar1[2]),pbVar1[3]);
    if (param_5 < uVar4) {
      uVar8 = 0x1fa;
    }
    else {
      if (uVar4 < 0x7ffffffc) {
        if ((uVar4 != 0) && (iVar2 = FUN_00a92b40(param_1[0xf],uVar4 + 4), iVar2 == 0)) {
          FUN_00a7f3c0(0x14,0x8e,7,".\\ssl\\s3_both.c",0x205);
          *param_6 = 0;
          return -1;
        }
        *(uint *)(param_1[0x16] + 0x33c) = uVar4;
        param_1[0xd] = param_3;
        param_1[0x10] = *(int *)(param_1[0xf] + 4) + 4;
        param_1[0x11] = 0;
        goto LAB_00b056e0;
      }
      uVar8 = 0x200;
    }
    uVar7 = 0x98;
    uVar5 = 0x2f;
  }
  else {
    *(undefined4 *)(param_1[0x16] + 0x354) = 0;
    if (((int)param_4 < 0) || (*(uint *)(param_1[0x16] + 0x340) == param_4)) {
      *param_6 = 1;
      param_1[0x10] = *(int *)(param_1[0xf] + 4) + 4;
      iVar2 = *(int *)(param_1[0x16] + 0x33c);
      param_1[0x11] = iVar2;
      return iVar2;
    }
    uVar8 = 0x1b0;
    uVar5 = 10;
    uVar7 = 0xf4;
  }
LAB_00b0564f:
  FUN_00a7f3c0(0x14,0x8e,uVar7,".\\ssl\\s3_both.c",uVar8);
  FUN_00b00df0(param_1,2,uVar5);
  *param_6 = 0;
  return -1;
}



undefined4 FUN_00b05790(undefined4 param_1,int *param_2)

{
  int iVar1;
  int *piVar2;
  undefined4 uVar3;
  
  uVar3 = 0xffffffff;
  piVar2 = param_2;
  if (param_2 == (int *)0x0) {
    piVar2 = (int *)FUN_00a82c40(param_1);
  }
  if (piVar2 != (int *)0x0) {
    iVar1 = *piVar2;
    if (iVar1 == 6) {
      uVar3 = 0;
    }
    else if (iVar1 == 0x74) {
      uVar3 = 2;
    }
    else if (iVar1 == 0x198) {
      uVar3 = 5;
    }
    else if ((iVar1 == 0x32c) || (iVar1 == 0x352)) {
      uVar3 = 6;
    }
    else if ((iVar1 == 0x32b) || (iVar1 == 0x353)) {
      uVar3 = 7;
    }
  }
  if (param_2 == (int *)0x0) {
    FUN_00a816d0(piVar2);
  }
  return uVar3;
}



undefined4 FUN_00b05820(undefined4 param_1)

{
  switch(param_1) {
  case 2:
  case 3:
  case 0x12:
  case 0x13:
  case 0x14:
  case 0x15:
  case 0x16:
  case 0x18:
  case 0x19:
  case 0x21:
    return 0x30;
  case 4:
  case 5:
  case 6:
  case 9:
  case 0xb:
  case 0xd:
  case 0xe:
  case 0xf:
  case 0x10:
  case 0x1b:
  case 0x1c:
    return 0x2a;
  case 7:
  case 8:
    return 0x33;
  case 10:
  case 0xc:
    return 0x2d;
  case 0x11:
    return 0x50;
  case 0x17:
    return 0x2c;
  case 0x1a:
    return 0x2b;
  default:
    return 0x2e;
  case 0x32:
    return 0x28;
  }
}



int * FUN_00b058d0(int param_1)

{
  int *piVar1;
  int *piVar2;
  int iVar3;
  int *piVar4;
  int unaff_EBX;
  int *piVar5;
  int unaff_EDI;
  
  piVar5 = (int *)0x0;
  FUN_00a7fdc0(9,0xc,".\\ssl\\s3_both.c",0x2b1);
  if (param_1 == 0) {
    piVar4 = *(int **)(unaff_EDI + 0x15c);
  }
  else {
    piVar4 = *(int **)(unaff_EDI + 0x160);
  }
  if (((piVar4 != (int *)0x0) && (unaff_EBX == *piVar4)) &&
     (piVar2 = (int *)piVar4[2], piVar2 != (int *)0x0)) {
    iVar3 = *piVar2;
    piVar1 = piVar4 + 1;
    *piVar1 = *piVar1 + -1;
    piVar4[2] = iVar3;
    piVar5 = piVar2;
    if (*piVar1 == 0) {
      *piVar4 = 0;
    }
  }
  FUN_00a7fdc0(10,0xc,".\\ssl\\s3_both.c",700);
  if (piVar5 == (int *)0x0) {
    piVar5 = (int *)FUN_00a84f80();
    return piVar5;
  }
  return piVar5;
}



void __thiscall FUN_00b05960(uint *param_1_00,int param_1)

{
  uint *puVar1;
  int unaff_EBX;
  uint unaff_EDI;
  
  FUN_00a7fdc0(9,0xc,".\\ssl\\s3_both.c",0x2c8);
  if (param_1 == 0) {
    puVar1 = *(uint **)(unaff_EBX + 0x15c);
  }
  else {
    puVar1 = *(uint **)(unaff_EBX + 0x160);
  }
  if (((puVar1 != (uint *)0x0) &&
      (((unaff_EDI == *puVar1 || (*puVar1 == 0)) && (puVar1[1] < *(uint *)(unaff_EBX + 0x158))))) &&
     (3 < unaff_EDI)) {
    *puVar1 = unaff_EDI;
    *param_1_00 = puVar1[2];
    puVar1[1] = puVar1[1] + 1;
    puVar1[2] = (uint)param_1_00;
    param_1_00 = (uint *)0x0;
  }
  FUN_00a7fdc0(10,0xc,".\\ssl\\s3_both.c",0x2d7);
  if (param_1_00 != (uint *)0x0) {
    FUN_00a85120(param_1_00);
  }
  return;
}



undefined4 FUN_00b059e0(int param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_00a814c0(param_1);
  if (iVar1 != 0xfeff) {
    iVar1 = FUN_00a814c0(param_1);
    iVar2 = 5;
    if (iVar1 != 0x100) goto LAB_00b05a10;
  }
  iVar2 = 0xd;
LAB_00b05a10:
  if (*(int *)(*(int *)(param_1 + 0x58) + 0xec) == 0) {
    iVar1 = iVar2 + 0x4143;
    if ((*(byte *)(param_1 + 0x100) & 0x20) != 0) {
      *(undefined4 *)(*(int *)(param_1 + 0x58) + 0xe8) = 1;
      iVar1 = iVar2 + 0x8143;
    }
    if ((*(uint *)(param_1 + 0x100) & 0x20000) == 0) {
      iVar1 = iVar1 + 0x400;
    }
    iVar2 = FUN_00b058d0(1);
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x14,0x9c,0x41,".\\ssl\\s3_both.c",0x306);
      return 0;
    }
    *(int *)(*(int *)(param_1 + 0x58) + 0xec) = iVar2;
    *(int *)(*(int *)(param_1 + 0x58) + 0xf0) = iVar1;
  }
  *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(*(int *)(param_1 + 0x58) + 0xec);
  return 1;
}



undefined4 FUN_00b05ab0(int param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = FUN_00a814c0(param_1);
  if (iVar1 != 0xfeff) {
    iVar1 = FUN_00a814c0(param_1);
    iVar2 = 5;
    if (iVar1 != 0x100) goto LAB_00b05ae0;
  }
  iVar2 = 0xe;
LAB_00b05ae0:
  if (*(int *)(*(int *)(param_1 + 0x58) + 0xfc) == 0) {
    iVar1 = *(int *)(param_1 + 0x114) + 0x53 + iVar2;
    if ((*(uint *)(param_1 + 0x100) & 0x20000) == 0) {
      iVar1 = iVar1 + 0x400;
    }
    if ((*(uint *)(param_1 + 0x100) & 0x800) == 0) {
      iVar1 = iVar1 + 0x53 + iVar2;
    }
    iVar2 = FUN_00b058d0(0);
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x14,0x123,0x41,".\\ssl\\s3_both.c",0x32e);
      return 0;
    }
    *(int *)(*(int *)(param_1 + 0x58) + 0xfc) = iVar2;
    *(int *)(*(int *)(param_1 + 0x58) + 0x100) = iVar1;
  }
  return 1;
}



bool FUN_00b05b70(undefined4 param_1)

{
  int iVar1;
  
  iVar1 = FUN_00b059e0(param_1);
  if (iVar1 == 0) {
    return false;
  }
  iVar1 = FUN_00b05ab0(param_1);
  return iVar1 != 0;
}



undefined4 FUN_00b05ba0(int param_1)

{
  if (*(int *)(*(int *)(param_1 + 0x58) + 0xfc) != 0) {
    FUN_00b05960(0);
    *(undefined4 *)(*(int *)(param_1 + 0x58) + 0xfc) = 0;
  }
  return 1;
}



undefined4 FUN_00b05bf0(int param_1)

{
  if (*(int *)(*(int *)(param_1 + 0x58) + 0xec) != 0) {
    FUN_00b05960(1);
    *(undefined4 *)(*(int *)(param_1 + 0x58) + 0xec) = 0;
  }
  return 1;
}



undefined4 FUN_00b05c40(int param_1)

{
  int iVar1;
  
  iVar1 = FUN_00b03290(param_1);
  if (iVar1 == 0) {
    return 0;
  }
  (**(code **)(*(int *)(param_1 + 8) + 8))(param_1);
  return 1;
}



void FUN_00b05c70(int param_1)

{
  if (*(int *)(param_1 + 0x15c) != 0) {
    FUN_00a85120(*(int *)(param_1 + 0x15c));
  }
  FUN_00b03300(param_1);
  return;
}



void FUN_00b05ca0(undefined4 *param_1)

{
  FUN_00b03400(param_1);
  *param_1 = *(undefined4 *)param_1[2];
  return;
}



undefined * FUN_00b05cc0(uint param_1)

{
  if ((0 < (int)param_1) && (param_1 < 0x1a)) {
    return (&PTR_LAB_032451d4)[param_1];
  }
  return (undefined *)0x0;
}



undefined4 FUN_00b05ce0(int param_1)

{
  if (param_1 < 0x2c5) {
    if (param_1 == 0x2c4) {
      return 0xf;
    }
    if (param_1 == 0x199) {
      return 0x13;
    }
    if (param_1 == 0x19f) {
      return 0x17;
    }
  }
  else {
    switch(param_1) {
    case 0x2c5:
      return 0x10;
    case 0x2c6:
      return 0x11;
    case 0x2c7:
      return 0x12;
    case 0x2c8:
      return 0x14;
    case 0x2c9:
      return 0x15;
    case 0x2ca:
      return 0x16;
    case 0x2cb:
      return 0x18;
    case 0x2cc:
      return 0x19;
    case 0x2d1:
      return 1;
    case 0x2d2:
      return 2;
    case 0x2d3:
      return 3;
    case 0x2d4:
      return 4;
    case 0x2d5:
      return 5;
    case 0x2d6:
      return 6;
    case 0x2d7:
      return 7;
    case 0x2d8:
      return 8;
    case 0x2d9:
      return 9;
    case 0x2da:
      return 10;
    case 0x2db:
      return 0xb;
    case 0x2dc:
      return 0xc;
    case 0x2dd:
      return 0xd;
    case 0x2de:
      return 0xe;
    }
  }
  return 0;
}



undefined4 FUN_00b05e20(undefined4 param_1,void *param_2)

{
  if (param_2 != (void *)0x0) {
    _memcpy(param_2,&DAT_032452a4,0x20);
  }
  return 0x20;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined * FUN_00b05e40(int *param_1,undefined *param_2,undefined *param_3)

{
  char *pcVar1;
  undefined *puVar2;
  ushort *puVar3;
  int *piVar4;
  undefined2 uVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  undefined *puVar9;
  char cVar10;
  char *pcVar11;
  size_t sVar12;
  undefined4 *puVar13;
  int iVar14;
  undefined4 *puVar15;
  undefined4 uVar16;
  undefined *local_4;
  
  puVar9 = param_3;
  piVar4 = param_1;
  if ((param_1[0x44] == 0x300) && (*(int *)(param_1[0x16] + 0x418) == 0)) {
    return param_2;
  }
  local_4 = param_2 + 2;
  if (param_3 <= local_4) {
    return (undefined *)0x0;
  }
  pcVar11 = (char *)param_1[0x48];
  if (pcVar11 != (char *)0x0) {
    if ((int)(param_3 + (-9 - (int)local_4)) < 0) {
      return (undefined *)0x0;
    }
    pcVar1 = pcVar11 + 1;
    do {
      cVar10 = *pcVar11;
      pcVar11 = pcVar11 + 1;
    } while (cVar10 != '\0');
    pcVar11 = pcVar11 + -(int)pcVar1;
    if (param_3 + (-9 - (int)local_4) < pcVar11) {
      return (undefined *)0x0;
    }
    *local_4 = 0;
    param_2[3] = 0;
    param_2[4] = (char)((uint)(pcVar11 + 5) >> 8);
    cVar10 = (char)pcVar11;
    param_2[5] = cVar10 + '\x05';
    param_2[6] = (char)((uint)(pcVar11 + 3) >> 8);
    param_2[7] = cVar10 + '\x03';
    param_2[8] = 0;
    param_2[9] = (char)((uint)pcVar11 >> 8);
    param_2[10] = cVar10;
    local_4 = param_2 + 0xb;
    _memcpy(local_4,(void *)param_1[0x48],(size_t)pcVar11);
    local_4 = local_4 + (int)pcVar11;
  }
  if (piVar4[100] != 0) {
    iVar6 = FUN_00b1a210(piVar4,0,&param_1,0);
    if (iVar6 == 0) {
      uVar16 = 0x1a0;
      goto LAB_00b066a3;
    }
    if ((int)(puVar9 + (-(int)param_2 - (int)param_1) + -4) < 0) {
      return (undefined *)0x0;
    }
    *local_4 = 0xff;
    local_4[1] = 1;
    local_4[2] = (char)((uint)param_1 >> 8);
    local_4[3] = param_1._0_1_;
    local_4 = local_4 + 4;
    iVar6 = FUN_00b1a210(piVar4,local_4,&param_1,param_1);
    if (iVar6 == 0) {
      uVar16 = 0x1ab;
      goto LAB_00b066a3;
    }
    local_4 = local_4 + (int)param_1;
  }
  pcVar11 = (char *)piVar4[0x69];
  if (pcVar11 != (char *)0x0) {
    pcVar1 = pcVar11 + 1;
    do {
      cVar10 = *pcVar11;
      pcVar11 = pcVar11 + 1;
    } while (cVar10 != '\0');
    sVar12 = (int)pcVar11 - (int)pcVar1;
    if ((0xff < (int)sVar12) || (sVar12 == 0)) {
      uVar16 = 0x1ba;
      goto LAB_00b066a3;
    }
    if ((int)(puVar9 + (-(int)local_4 - sVar12) + -5) < 0) {
      return (undefined *)0x0;
    }
    *local_4 = 0;
    local_4[1] = 0xc;
    local_4[2] = (char)(sVar12 + 1 >> 8);
    local_4[3] = (char)sVar12 + '\x01';
    local_4[4] = (char)sVar12;
    local_4 = local_4 + 5;
    _memcpy(local_4,(void *)piVar4[0x69],sVar12);
    local_4 = local_4 + sVar12;
  }
  if ((piVar4[0x52] != 0) && (*piVar4 != 0xfeff)) {
    if ((int)(puVar9 + (-5 - (int)local_4)) < 0) {
      return (undefined *)0x0;
    }
    if (puVar9 + (-5 - (int)local_4) < (undefined *)piVar4[0x51]) {
      return (undefined *)0x0;
    }
    if ((undefined *)0xff < (undefined *)piVar4[0x51]) {
      uVar16 = 0x1d9;
      goto LAB_00b066a3;
    }
    *local_4 = 0;
    local_4[1] = 0xb;
    local_4[2] = (char)((uint)(piVar4[0x51] + 1) >> 8);
    local_4[3] = *(char *)(piVar4 + 0x51) + '\x01';
    local_4[4] = *(undefined *)(piVar4 + 0x51);
    local_4 = local_4 + 5;
    _memcpy(local_4,(void *)piVar4[0x52],piVar4[0x51]);
    local_4 = local_4 + piVar4[0x51];
  }
  if ((piVar4[0x54] != 0) && (*piVar4 != 0xfeff)) {
    if ((int)(puVar9 + (-6 - (int)local_4)) < 0) {
      return (undefined *)0x0;
    }
    if (puVar9 + (-6 - (int)local_4) < (undefined *)piVar4[0x53]) {
      return (undefined *)0x0;
    }
    if ((undefined *)0xfffc < (undefined *)piVar4[0x53]) {
      uVar16 = 0x1ed;
      goto LAB_00b066a3;
    }
    *local_4 = 0;
    local_4[1] = 10;
    local_4[2] = (char)((uint)(piVar4[0x53] + 2) >> 8);
    local_4[3] = *(char *)(piVar4 + 0x53) + '\x02';
    local_4[4] = *(undefined *)((int)piVar4 + 0x14d);
    local_4[5] = *(undefined *)(piVar4 + 0x53);
    local_4 = local_4 + 6;
    _memcpy(local_4,(void *)piVar4[0x54],piVar4[0x53]);
    local_4 = local_4 + piVar4[0x53];
  }
  uVar7 = FUN_00afb520(piVar4,0x20,0,0);
  if ((uVar7 & 0x4000) == 0) {
    if (((piVar4[10] == 0) && (iVar6 = piVar4[0x30], iVar6 != 0)) && (*(int *)(iVar6 + 0xe4) != 0))
    {
      sVar12 = *(size_t *)(iVar6 + 0xe8);
LAB_00b06267:
      if (sVar12 == 0) goto LAB_00b0626b;
    }
    else {
      if (((piVar4[0x30] != 0) && (puVar3 = (ushort *)piVar4[0x57], puVar3 != (ushort *)0x0)) &&
         (*(int *)(puVar3 + 2) != 0)) {
        sVar12 = (size_t)*puVar3;
        uVar16 = FUN_00a84f80(sVar12,".\\ssl\\t1_lib.c",0x208);
        *(undefined4 *)(piVar4[0x30] + 0xe4) = uVar16;
        if (*(int *)(piVar4[0x30] + 0xe4) == 0) {
          return (undefined *)0x0;
        }
        _memcpy(*(void **)(piVar4[0x30] + 0xe4),*(void **)(piVar4[0x57] + 4),sVar12);
        *(size_t *)(piVar4[0x30] + 0xe8) = sVar12;
        goto LAB_00b06267;
      }
      sVar12 = 0;
LAB_00b0626b:
      if ((piVar4[0x57] != 0) && (*(int *)(piVar4[0x57] + 4) == 0)) goto LAB_00b062da;
    }
    if ((int)(puVar9 + (-(int)local_4 - sVar12) + -4) < 0) {
      return (undefined *)0x0;
    }
    *local_4 = 0;
    local_4[1] = 0x23;
    local_4[2] = (char)(sVar12 >> 8);
    local_4[3] = (char)sVar12;
    local_4 = local_4 + 4;
    if (sVar12 != 0) {
      _memcpy(local_4,*(void **)(piVar4[0x30] + 0xe4),sVar12);
      local_4 = local_4 + sVar12;
    }
  }
LAB_00b062da:
  if (((piVar4[0x44] & 0xffffff00U) == 0x300) && (0x302 < piVar4[0x44])) {
    if ((uint)((int)puVar9 - (int)local_4) < 0x26) {
      return (undefined *)0x0;
    }
    *local_4 = 0;
    local_4[1] = 0xd;
    local_4[2] = 0;
    local_4[3] = 0x22;
    local_4[4] = 0;
    local_4[5] = 0x20;
    puVar13 = &DAT_032452a4;
    puVar15 = (undefined4 *)(local_4 + 6);
    for (iVar6 = 8; iVar6 != 0; iVar6 = iVar6 + -1) {
      *puVar15 = *puVar13;
      puVar13 = puVar13 + 1;
      puVar15 = puVar15 + 1;
    }
    local_4 = local_4 + 0x26;
    puVar9 = param_3;
  }
  if ((piVar4[0x4a] == 1) && (*piVar4 != 0xfeff)) {
    iVar6 = 0;
    iVar14 = 0;
    iVar8 = FUN_00a80ed0(piVar4[0x4c]);
    if (0 < iVar8) {
      do {
        uVar16 = FUN_00a80ee0(piVar4[0x4c],iVar14);
        iVar8 = FUN_00af05b0(uVar16,0);
        if (iVar8 < 1) {
          return (undefined *)0x0;
        }
        iVar6 = iVar6 + 2 + iVar8;
        iVar14 = iVar14 + 1;
        iVar8 = FUN_00a80ed0(piVar4[0x4c]);
      } while (iVar14 < iVar8);
    }
    if (piVar4[0x4d] == 0) {
      param_1 = (int *)0x0;
    }
    else {
      param_1 = (int *)FUN_00a88750(piVar4[0x4d],0);
      if ((int)param_1 < 0) {
        return (undefined *)0x0;
      }
    }
    if ((int)(puVar9 + ((-iVar6 - (int)param_1) - (int)local_4) + -7) < 0) {
      return (undefined *)0x0;
    }
    *local_4 = 0;
    local_4[1] = 5;
    if (0xfff0 < (int)param_1 + iVar6) {
      return (undefined *)0x0;
    }
    local_4[2] = (char)((uint)((int)param_1 + iVar6 + 5) >> 8);
    local_4[3] = (char)iVar6 + (char)param_1 + '\x05';
    local_4[4] = 1;
    local_4[5] = (char)((uint)iVar6 >> 8);
    local_4[6] = (char)iVar6;
    local_4 = local_4 + 7;
    iVar8 = 0;
    iVar6 = FUN_00a80ed0(piVar4[0x4c]);
    if (0 < iVar6) {
      do {
        puVar2 = local_4;
        uVar16 = FUN_00a80ee0(piVar4[0x4c],iVar8);
        local_4 = local_4 + 2;
        uVar5 = FUN_00af05b0(uVar16,&local_4);
        *puVar2 = (char)((ushort)uVar5 >> 8);
        puVar2[1] = (char)uVar5;
        iVar8 = iVar8 + 1;
        iVar6 = FUN_00a80ed0(piVar4[0x4c]);
      } while (iVar8 < iVar6);
    }
    *local_4 = (char)((uint)param_1 >> 8);
    local_4[1] = (char)param_1;
    local_4 = local_4 + 2;
    if (0 < (int)param_1) {
      FUN_00a88750(piVar4[0x4d],&local_4);
    }
  }
  *local_4 = 0;
  local_4[1] = 0xf;
  local_4[2] = 0;
  local_4[3] = 1;
  if ((*(byte *)(piVar4 + 0x61) & 4) == 0) {
    local_4[4] = 1;
  }
  else {
    local_4[4] = 2;
  }
  puVar2 = local_4 + 5;
  if ((*(int *)(piVar4[0x39] + 0x1ac) != 0) && (*(int *)(piVar4[0x16] + 0x2b4) == 0)) {
    if ((int)(puVar9 + (-4 - (int)puVar2)) < 0) {
      return (undefined *)0x0;
    }
    *puVar2 = 0x33;
    local_4[6] = 0x74;
    local_4[7] = 0;
    local_4[8] = 0;
    puVar2 = local_4 + 9;
  }
  local_4 = puVar2;
  iVar6 = FUN_00b19cf0(piVar4);
  if (iVar6 != 0) {
    FUN_00b19d20(piVar4,0,&param_1,0);
    puVar2 = param_2;
    if ((int)(puVar9 + (-(int)param_2 - (int)param_1) + -4) < 0) {
      return (undefined *)0x0;
    }
    *local_4 = 0;
    local_4[1] = 0xe;
    local_4[2] = (char)((uint)param_1 >> 8);
    local_4[3] = param_1._0_1_;
    local_4 = local_4 + 4;
    iVar6 = FUN_00b19d20(piVar4,local_4,&param_1,param_1);
    if (iVar6 != 0) {
      uVar16 = 0x29a;
LAB_00b066a3:
      FUN_00a7f3c0(0x14,0x115,0x44,".\\ssl\\t1_lib.c",uVar16);
      return (undefined *)0x0;
    }
    local_4 = local_4 + (int)param_1;
    param_2 = puVar2;
  }
  puVar9 = local_4 + (-2 - (int)param_2);
  if (puVar9 != (undefined *)0x0) {
    *param_2 = (char)((uint)puVar9 >> 8);
    param_2[1] = (char)puVar9;
    return local_4;
  }
  return param_2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b06700(int *param_1,undefined *param_2,undefined4 *param_3)

{
  int iVar1;
  undefined *puVar2;
  uint uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 uVar7;
  undefined *local_38;
  int local_34;
  int local_30;
  void *local_2c;
  undefined local_28;
  undefined local_27;
  undefined local_26;
  undefined local_25;
  undefined local_24;
  undefined local_23;
  undefined local_22;
  undefined local_21;
  undefined local_20;
  undefined local_1f;
  undefined local_1e;
  undefined local_1d;
  undefined local_1c;
  undefined local_1b;
  undefined local_1a;
  undefined local_19;
  undefined local_18;
  undefined local_17;
  undefined local_16;
  undefined local_15;
  undefined local_14;
  undefined local_13;
  undefined local_12;
  undefined local_11;
  undefined local_10;
  undefined local_f;
  undefined local_e;
  undefined local_d;
  undefined local_c;
  undefined local_b;
  undefined local_a;
  undefined local_9;
  undefined local_8;
  undefined local_7;
  undefined local_6;
  undefined local_5;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_38;
  local_38 = param_2;
  if ((*param_1 == 0x300) && (*(int *)(param_1[0x16] + 0x418) == 0)) {
    ___security_check_cookie_4();
    return;
  }
  puVar4 = (undefined4 *)(param_2 + 2);
  if (param_3 <= puVar4) goto LAB_00b06989;
  if (((param_1[0x1b] == 0) && (param_1[0x49] == 1)) && (*(int *)(param_1[0x30] + 0xd0) != 0)) {
    if ((int)((int)param_3 + (-4 - (int)puVar4)) < 0) goto LAB_00b06989;
    *(undefined *)puVar4 = 0;
    param_2[3] = 0;
    param_2[4] = 0;
    param_2[5] = 0;
    puVar4 = (undefined4 *)(param_2 + 6);
  }
  if (*(int *)(param_1[0x16] + 0x418) != 0) {
    iVar1 = FUN_00b1a3d0(param_1,0,&local_34,0);
    if (iVar1 == 0) {
      uVar7 = 0x2c5;
    }
    else {
      if ((int)((int)param_3 + (-local_34 - (int)param_2) + -4) < 0) goto LAB_00b06989;
      *(undefined *)puVar4 = 0xff;
      *(undefined *)((int)puVar4 + 1) = 1;
      *(char *)((int)puVar4 + 2) = (char)((uint)local_34 >> 8);
      *(char *)((int)puVar4 + 3) = (char)local_34;
      iVar1 = FUN_00b1a3d0(param_1,puVar4 + 1,&local_34,local_34);
      if (iVar1 != 0) {
        puVar4 = (undefined4 *)((int)(puVar4 + 1) + local_34);
        goto LAB_00b06816;
      }
      uVar7 = 0x2d0;
    }
LAB_00b06973:
    FUN_00a7f3c0(0x14,0x116,0x44,".\\ssl\\t1_lib.c",uVar7);
LAB_00b06989:
    ___security_check_cookie_4();
    return;
  }
LAB_00b06816:
  if ((param_1[0x52] != 0) && (*param_1 != 0xfeff)) {
    puVar2 = (undefined *)((int)param_3 + (-5 - (int)puVar4));
    if (((int)puVar2 < 0) || (puVar2 < (undefined *)param_1[0x51])) goto LAB_00b06989;
    if ((undefined *)0xff < (undefined *)param_1[0x51]) {
      uVar7 = 0x2e2;
      goto LAB_00b06973;
    }
    *(undefined *)puVar4 = 0;
    *(undefined *)((int)puVar4 + 1) = 0xb;
    *(char *)((int)puVar4 + 2) = (char)((uint)(param_1[0x51] + 1) >> 8);
    *(char *)((int)puVar4 + 3) = *(char *)(param_1 + 0x51) + '\x01';
    *(undefined *)(puVar4 + 1) = *(undefined *)(param_1 + 0x51);
    _memcpy((undefined *)((int)puVar4 + 5),(void *)param_1[0x52],param_1[0x51]);
    puVar4 = (undefined4 *)((undefined *)((int)puVar4 + 5) + param_1[0x51]);
  }
  if (param_1[0x50] != 0) {
    uVar3 = FUN_00afb520(param_1,0x20,0,0);
    if ((uVar3 & 0x4000) == 0) {
      if ((int)((int)param_3 + (-4 - (int)puVar4)) < 0) goto LAB_00b06989;
      *(undefined *)puVar4 = 0;
      *(undefined *)((int)puVar4 + 1) = 0x23;
      *(undefined *)((int)puVar4 + 2) = 0;
      *(undefined *)((int)puVar4 + 3) = 0;
      puVar4 = puVar4 + 1;
    }
  }
  if (param_1[0x4b] != 0) {
    if ((int)((int)param_3 + (-4 - (int)puVar4)) < 0) goto LAB_00b06989;
    *(undefined *)puVar4 = 0;
    *(undefined *)((int)puVar4 + 1) = 5;
    *(undefined *)((int)puVar4 + 2) = 0;
    *(undefined *)((int)puVar4 + 3) = 0;
    puVar4 = puVar4 + 1;
  }
  if (param_1[0x60] != 0) {
    FUN_00b1a010(param_1,0,&local_30,0);
    if ((int)((int)param_3 + (-local_30 - (int)param_2) + -4) < 0) goto LAB_00b06989;
    *(undefined *)puVar4 = 0;
    *(undefined *)((int)puVar4 + 1) = 0xe;
    *(char *)((int)puVar4 + 2) = (char)((uint)local_30 >> 8);
    *(char *)((int)puVar4 + 3) = (char)local_30;
    iVar1 = FUN_00b1a010(param_1,puVar4 + 1,&local_30,local_30);
    if (iVar1 != 0) {
      uVar7 = 800;
      goto LAB_00b06973;
    }
    puVar4 = (undefined4 *)((int)(puVar4 + 1) + local_30);
  }
  uVar3 = *(uint *)(*(int *)(param_1[0x16] + 0x344) + 8) & 0xffff;
  if ((uVar3 == 0x80) || (uVar3 == 0x81)) {
    iVar1 = FUN_00afb520(param_1,0x20,0,0);
    if (iVar1 < 0) {
      local_28 = 0xfd;
      local_27 = 0xe8;
      local_26 = 0;
      local_25 = 0x20;
      local_24 = 0x30;
      local_23 = 0x1e;
      local_22 = 0x30;
      local_21 = 8;
      local_20 = 6;
      local_1f = 6;
      local_1e = 0x2a;
      local_1d = 0x85;
      local_1c = 3;
      local_1b = 2;
      local_1a = 2;
      local_19 = 9;
      local_18 = 0x30;
      local_17 = 8;
      local_16 = 6;
      local_15 = 6;
      local_14 = 0x2a;
      local_13 = 0x85;
      local_12 = 3;
      local_11 = 2;
      local_10 = 2;
      local_f = 0x16;
      local_e = 0x30;
      local_d = 8;
      local_c = 6;
      local_b = 6;
      local_a = 0x2a;
      local_9 = 0x85;
      local_8 = 3;
      local_7 = 2;
      local_6 = 2;
      local_5 = 0x17;
      if ((int)param_3 - (int)puVar4 < 0x24) goto LAB_00b06989;
      puVar5 = (undefined4 *)&local_28;
      puVar6 = puVar4;
      for (iVar1 = 9; iVar1 != 0; iVar1 = iVar1 + -1) {
        *puVar6 = *puVar5;
        puVar5 = puVar5 + 1;
        puVar6 = puVar6 + 1;
      }
      puVar4 = puVar4 + 9;
      param_2 = local_38;
    }
  }
  if ((*(byte *)(param_1 + 0x61) & 1) != 0) {
    *(undefined *)puVar4 = 0;
    *(undefined *)((int)puVar4 + 1) = 0xf;
    *(undefined *)((int)puVar4 + 2) = 0;
    *(undefined *)((int)puVar4 + 3) = 1;
    if ((*(byte *)(param_1 + 0x61) & 4) == 0) {
      *(undefined *)(puVar4 + 1) = 1;
    }
    else {
      *(undefined *)(puVar4 + 1) = 2;
    }
    puVar4 = (undefined4 *)((int)puVar4 + 5);
  }
  iVar1 = *(int *)(param_1[0x16] + 0x41c);
  *(undefined4 *)(param_1[0x16] + 0x41c) = 0;
  if ((iVar1 != 0) && (iVar1 = param_1[0x39], *(int *)(iVar1 + 0x1a4) != 0)) {
    iVar1 = (**(code **)(iVar1 + 0x1a4))(param_1,&local_2c,&local_38,*(undefined4 *)(iVar1 + 0x1a8))
    ;
    if (iVar1 == 0) {
      if ((int)((int)param_3 + (-(int)puVar4 - (int)local_38) + -4) < 0) goto LAB_00b06989;
      *(undefined *)puVar4 = 0x33;
      *(undefined *)((int)puVar4 + 1) = 0x74;
      *(char *)((int)puVar4 + 2) = (char)((uint)local_38 >> 8);
      *(char *)((int)puVar4 + 3) = (char)local_38;
      _memcpy(puVar4 + 1,local_2c,(size_t)local_38);
      puVar4 = (undefined4 *)((int)(puVar4 + 1) + (int)local_38);
      *(undefined4 *)(param_1[0x16] + 0x41c) = 1;
    }
  }
  puVar2 = (undefined *)((int)puVar4 + (-2 - (int)param_2));
  if (puVar2 == (undefined *)0x0) {
    ___security_check_cookie_4();
    return;
  }
  param_2[1] = (char)puVar2;
  *param_2 = (char)((uint)puVar2 >> 8);
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint FUN_00b06bb0(int *param_1,byte **param_2,void *param_3,uint param_4,undefined4 *param_5)

{
  code *pcVar1;
  bool bVar2;
  bool bVar3;
  int *piVar4;
  short sVar5;
  ushort uVar6;
  int iVar7;
  void *_Dst;
  undefined4 uVar8;
  uint uVar9;
  byte *pbVar10;
  uint uVar11;
  byte *pbVar12;
  byte *pbVar13;
  byte *pbVar14;
  
  piVar4 = param_1;
  pbVar13 = *param_2;
  *(undefined4 *)(param_1[0x16] + 0x41c) = 0;
  param_1[0x61] = param_1[0x61] & 0xfffffffc;
  bVar2 = false;
  bVar3 = false;
  pbVar10 = (byte *)(param_4 + (int)param_3);
  if (pbVar10 + -2 <= pbVar13) {
LAB_00b07096:
    if (((piVar4[0x40] & 4U) == 0) && ((piVar4[0x40] & 0x40000U) == 0)) {
      *param_5 = 0x28;
      FUN_00a7f3c0(0x14,0x12f,0x152,".\\ssl\\t1_lib.c",0x66c);
      return 0;
    }
    return 1;
  }
  pbVar12 = pbVar13 + 2;
  if (pbVar12 + CONCAT11(*pbVar13,pbVar13[1]) == pbVar10) {
    pbVar13 = pbVar12;
    if (pbVar12 <= pbVar10 + -4) {
      do {
        sVar5 = CONCAT11(*pbVar13,pbVar13[1]);
        uVar6 = CONCAT11(pbVar13[2],pbVar13[3]);
        uVar9 = (uint)uVar6;
        pbVar14 = pbVar13 + 4;
        pbVar12 = pbVar14 + uVar9;
        param_4 = uVar9;
        if (pbVar10 < pbVar12) goto LAB_00b0708f;
        if ((code *)piVar4[0x46] != (code *)0x0) {
          (*(code *)piVar4[0x46])(piVar4,1,sVar5,pbVar14,uVar9,piVar4[0x47]);
          uVar6 = (ushort)param_4;
        }
        if (sVar5 == 0) {
          if ((piVar4[0x48] == 0) || (uVar6 != 0)) {
            *param_5 = 0x70;
            return 0;
          }
          bVar2 = true;
        }
        else if (sVar5 == 0xb) {
          if (*piVar4 != 0xfeff) {
            uVar11 = (uint)*pbVar14;
            if ((uVar11 != uVar9 - 1) || (uVar11 == 0)) goto LAB_00b06c1a;
            *(undefined4 *)(piVar4[0x30] + 0xd4) = 0;
            if (*(int *)(piVar4[0x30] + 0xd8) != 0) {
              FUN_00a85120(*(int *)(piVar4[0x30] + 0xd8));
            }
            uVar8 = FUN_00a84f80(uVar11,".\\ssl\\t1_lib.c",0x5ab);
            *(undefined4 *)(piVar4[0x30] + 0xd8) = uVar8;
            if (*(int *)(piVar4[0x30] + 0xd8) == 0) {
              *param_5 = 0x50;
              return 0;
            }
            *(uint *)(piVar4[0x30] + 0xd4) = uVar11;
            _memcpy(*(void **)(piVar4[0x30] + 0xd8),pbVar13 + 5,uVar11);
          }
        }
        else if (sVar5 == 0x23) {
          if (((code *)piVar4[0x58] != (code *)0x0) &&
             (iVar7 = (*(code *)piVar4[0x58])(piVar4,pbVar14,uVar9,piVar4[0x59]), iVar7 == 0)) {
LAB_00b06fff:
            *param_5 = 0x50;
            return 0;
          }
          uVar9 = FUN_00afb520(piVar4,0x20,0,0);
          if (((uVar9 & 0x4000) != 0) || ((short)param_4 != 0)) {
            *param_5 = 0x6e;
            return 0;
          }
          piVar4[0x50] = 1;
        }
        else if (sVar5 == 5) {
          if (*piVar4 != 0xfeff) {
            if ((piVar4[0x4a] == -1) || (uVar6 != 0)) {
              *param_5 = 0x6e;
              return 0;
            }
            piVar4[0x4b] = 1;
          }
        }
        else if (sVar5 == 0x3374) {
          if (*(int *)(piVar4[0x16] + 0x2b4) == 0) {
            pcVar1 = *(code **)(piVar4[0x39] + 0x1ac);
            uVar11 = 0;
            if (pcVar1 == (code *)0x0) {
              *param_5 = 0x6e;
              return uVar11;
            }
            if (uVar9 != 0) {
              do {
                if (pbVar14[uVar11] == 0) goto LAB_00b0704d;
                uVar11 = uVar11 + 1 + (uint)pbVar14[uVar11];
              } while (uVar11 < uVar9);
            }
            if (uVar11 != uVar9) {
LAB_00b0704d:
              *param_5 = 0x32;
              return 0;
            }
            iVar7 = (*pcVar1)(piVar4,&param_3,&param_1,pbVar14,uVar9,
                              *(undefined4 *)(piVar4[0x39] + 0x1b0));
            if (iVar7 != 0) {
              *param_5 = 0x50;
              return 0;
            }
            _Dst = (void *)FUN_00a84f80((uint)param_1 & 0xff,".\\ssl\\t1_lib.c",0x612);
            piVar4[0x5d] = (int)_Dst;
            if (_Dst == (void *)0x0) goto LAB_00b06fff;
            _memcpy(_Dst,param_3,(uint)param_1 & 0xff);
            *(undefined *)(piVar4 + 0x5e) = param_1._0_1_;
            *(undefined4 *)(piVar4[0x16] + 0x41c) = 1;
          }
        }
        else if (sVar5 == -0xff) {
          iVar7 = FUN_00b1a4a0(piVar4,pbVar14,uVar9,param_5);
          if (iVar7 == 0) {
            return 0;
          }
          bVar3 = true;
        }
        else if (sVar5 == 0xf) {
          if (*pbVar14 == 1) {
            piVar4[0x61] = piVar4[0x61] | 1;
          }
          else {
            if (*pbVar14 != 2) {
              *param_5 = 0x2f;
              return 0;
            }
            piVar4[0x61] = piVar4[0x61] | 3;
          }
        }
        else if ((sVar5 == 0xe) && (iVar7 = FUN_00b1a0b0(piVar4,pbVar14,uVar9,param_5), iVar7 != 0))
        {
          return 0;
        }
        pbVar13 = pbVar12;
      } while (pbVar12 <= pbVar10 + -4);
    }
    if (pbVar12 == pbVar10) {
      if (((piVar4[0x1b] == 0) && (bVar2)) && (piVar4[0x48] != 0)) {
        if (*(int *)(piVar4[0x30] + 0xd0) != 0) goto LAB_00b06c1a;
        uVar8 = FUN_00a852b0(piVar4[0x48]);
        *(undefined4 *)(piVar4[0x30] + 0xd0) = uVar8;
        if (*(int *)(piVar4[0x30] + 0xd0) == 0) {
          *param_5 = 0x70;
          return 0;
        }
      }
      *param_2 = pbVar12;
LAB_00b0708f:
      if (bVar3) {
        return 1;
      }
      goto LAB_00b07096;
    }
  }
LAB_00b06c1a:
  *param_5 = 0x32;
  return 0;
}



undefined4 FUN_00b070f0(int *param_1)

{
  undefined2 uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined *puVar4;
  undefined *extraout_ECX;
  uint uVar5;
  int extraout_EDX;
  int iVar6;
  
  uVar2 = FUN_00af9ed0(param_1);
  iVar6 = 0;
  iVar3 = FUN_00a80ed0(uVar2);
  if (0 < iVar3) {
    while ((iVar3 = FUN_00a80ee0(uVar2,iVar6), (*(byte *)(iVar3 + 0xc) & 0xe0) == 0 &&
           ((*(byte *)(iVar3 + 0x10) & 0x40) == 0))) {
      iVar6 = iVar6 + 1;
      iVar3 = FUN_00a80ed0(uVar2);
      if (iVar3 <= iVar6) {
        return 1;
      }
    }
    if (0x300 < *param_1) {
      if (param_1[0x52] != 0) {
        FUN_00a85120(param_1[0x52]);
      }
      puVar4 = (undefined *)FUN_00a84f80(3,".\\ssl\\t1_lib.c",0x690);
      param_1[0x52] = (int)puVar4;
      if (puVar4 == (undefined *)0x0) {
        uVar2 = 0x692;
      }
      else {
        param_1[0x51] = 3;
        *puVar4 = 0;
        *(undefined *)(param_1[0x52] + 1) = 1;
        *(undefined *)(param_1[0x52] + 2) = 2;
        if (param_1[0x54] != 0) {
          FUN_00a85120(param_1[0x54]);
        }
        param_1[0x53] = 0x32;
        iVar3 = FUN_00a84f80(0x32,".\\ssl\\t1_lib.c",0x69d);
        param_1[0x54] = iVar3;
        if (iVar3 != 0) {
          uVar5 = 0;
          do {
            uVar1 = FUN_00b05ce0(*(undefined4 *)((int)&DAT_03245240 + uVar5));
            *extraout_ECX = (char)((ushort)uVar1 >> 8);
            extraout_ECX[1] = (char)uVar1;
            uVar5 = extraout_EDX + 4;
          } while (uVar5 < 100);
          return 1;
        }
        param_1[0x53] = 0;
        uVar2 = 0x6a0;
      }
      FUN_00a7f3c0(0x14,0x119,0x41,".\\ssl\\t1_lib.c",uVar2);
      return 0xffffffff;
    }
  }
  return 1;
}



undefined4 FUN_00b07240(int param_1)

{
  int iVar1;
  undefined *puVar2;
  
  iVar1 = *(int *)(*(int *)(param_1 + 0x58) + 0x344);
  if ((((*(byte *)(iVar1 + 0xc) & 0xe0) != 0) || ((*(byte *)(iVar1 + 0x10) & 0x40) != 0)) &&
     (*(int *)(*(int *)(param_1 + 0xc0) + 0xd8) != 0)) {
    if (*(int *)(param_1 + 0x148) != 0) {
      FUN_00a85120(*(int *)(param_1 + 0x148));
    }
    puVar2 = (undefined *)FUN_00a84f80(3,".\\ssl\\t1_lib.c",0x6e1);
    *(undefined **)(param_1 + 0x148) = puVar2;
    if (puVar2 == (undefined *)0x0) {
      FUN_00a7f3c0(0x14,0x11a,0x41,".\\ssl\\t1_lib.c",0x6e3);
      return 0xffffffff;
    }
    *(undefined4 *)(param_1 + 0x144) = 3;
    *puVar2 = 0;
    *(undefined *)(*(int *)(param_1 + 0x148) + 1) = 1;
    *(undefined *)(*(int *)(param_1 + 0x148) + 2) = 2;
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b072f0(int param_1)

{
  int iVar1;
  int iVar2;
  code *pcVar3;
  undefined4 local_4;
  
  iVar2 = *(int *)(param_1 + 0xe4);
  iVar1 = 3;
  local_4 = 0x70;
  if (((iVar2 != 0) && (pcVar3 = *(code **)(iVar2 + 0x100), pcVar3 != (code *)0x0)) ||
     ((iVar2 = *(int *)(param_1 + 0x170), iVar2 != 0 &&
      (pcVar3 = *(code **)(iVar2 + 0x100), pcVar3 != (code *)0x0)))) {
    iVar1 = (*pcVar3)(param_1,&local_4,*(undefined4 *)(iVar2 + 0x104));
  }
  if (iVar1 == 1) {
    FUN_00b00df0(param_1,1,local_4);
  }
  else {
    if (iVar1 == 2) {
      FUN_00b00df0(param_1,2,local_4);
      return 0xffffffff;
    }
    if (iVar1 == 3) {
      *(undefined4 *)(param_1 + 0x124) = 0;
      return 1;
    }
  }
  return 1;
}



undefined4 FUN_00b073a0(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  
  iVar1 = param_1;
  iVar3 = 0;
  if (((*(int *)(param_1 + 0x128) != -1) && (*(int *)(param_1 + 0xe4) != 0)) &&
     (*(int *)(*(int *)(param_1 + 0xe4) + 0x13c) != 0)) {
    iVar2 = FUN_00afa980(param_1);
    if (iVar2 == 0) {
      *(undefined4 *)(param_1 + 300) = 0;
      return 1;
    }
    **(int **)(param_1 + 0x98) = iVar2;
    iVar2 = (**(code **)(*(int *)(param_1 + 0xe4) + 0x13c))
                      (param_1,*(undefined4 *)(*(int *)(param_1 + 0xe4) + 0x140));
    if (iVar2 == 0) {
      *(uint *)(param_1 + 300) = (uint)(*(int *)(param_1 + 0x138) != 0);
      goto LAB_00b07411;
    }
    if (iVar2 == 2) {
      iVar3 = 2;
      param_1 = 0x50;
      goto LAB_00b07411;
    }
    if (iVar2 != 3) goto LAB_00b07411;
  }
  *(undefined4 *)(param_1 + 300) = 0;
LAB_00b07411:
  if (iVar3 == 1) {
    FUN_00b00df0(iVar1,1,param_1);
  }
  else if (iVar3 == 2) {
    FUN_00b00df0(iVar1,2,param_1);
    return 0xffffffff;
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b07470(int param_1)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  char *pcVar4;
  code *pcVar5;
  int iVar6;
  undefined4 local_4;
  
  local_4 = 0x70;
  if ((*(int *)(param_1 + 0x148) != 0) && (*(int *)(param_1 + 0x144) != 0)) {
    pcVar4 = *(char **)(*(int *)(param_1 + 0xc0) + 0xd8);
    if (((pcVar4 != (char *)0x0) && (iVar3 = *(int *)(*(int *)(param_1 + 0xc0) + 0xd4), iVar3 != 0))
       && ((iVar6 = *(int *)(*(int *)(param_1 + 0x58) + 0x344), (*(byte *)(iVar6 + 0xc) & 0xe0) != 0
           || ((*(byte *)(iVar6 + 0x10) & 0x40) != 0)))) {
      uVar2 = 0;
      if (iVar3 != 0) {
        do {
          cVar1 = *pcVar4;
          pcVar4 = pcVar4 + 1;
          if (cVar1 == '\0') goto LAB_00b0750a;
          uVar2 = uVar2 + 1;
        } while (uVar2 < *(uint *)(*(int *)(param_1 + 0xc0) + 0xd4));
      }
      FUN_00a7f3c0(0x14,0x118,0x9d,".\\ssl\\t1_lib.c",0x7af);
      return 0xffffffff;
    }
  }
LAB_00b0750a:
  iVar3 = *(int *)(param_1 + 0xe4);
  iVar6 = 0;
  if (((iVar3 != 0) && (pcVar5 = *(code **)(iVar3 + 0x100), pcVar5 != (code *)0x0)) ||
     ((iVar3 = *(int *)(param_1 + 0x170), iVar3 != 0 &&
      (pcVar5 = *(code **)(iVar3 + 0x100), pcVar5 != (code *)0x0)))) {
    iVar6 = (*pcVar5)(param_1,&local_4,*(undefined4 *)(iVar3 + 0x104));
  }
  if ((((*(int *)(param_1 + 0x128) != -1) && (*(int *)(param_1 + 300) == 0)) &&
      (*(int *)(param_1 + 0xe4) != 0)) && (*(int *)(*(int *)(param_1 + 0xe4) + 0x13c) != 0)) {
    if (*(int *)(param_1 + 0x138) != 0) {
      FUN_00a85120(*(int *)(param_1 + 0x138));
      *(undefined4 *)(param_1 + 0x138) = 0;
    }
    *(undefined4 *)(param_1 + 0x13c) = 0xffffffff;
    iVar3 = (**(code **)(*(int *)(param_1 + 0xe4) + 0x13c))
                      (param_1,*(undefined4 *)(*(int *)(param_1 + 0xe4) + 0x140));
    if (iVar3 == 0) {
      local_4 = 0x71;
    }
    else {
      if (-1 < iVar3) goto LAB_00b075cb;
      local_4 = 0x50;
    }
    iVar6 = 2;
  }
LAB_00b075cb:
  if (iVar6 == 1) {
    FUN_00b00df0(param_1,1,local_4);
  }
  else {
    if (iVar6 == 2) {
      FUN_00b00df0(param_1,2,local_4);
      return 0xffffffff;
    }
    if (iVar6 == 3) {
      *(undefined4 *)(param_1 + 0x124) = 0;
      return 1;
    }
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __fastcall
FUN_00b07620(int *param_1_00,int param_2_00,int param_1,int param_2,void *param_3,size_t param_6)

{
  int iVar1;
  int *piVar2;
  undefined4 uVar3;
  int iVar4;
  uint uVar5;
  int iStack_1b8;
  int iStack_1b4;
  int iStack_1b0;
  undefined4 local_1ac;
  void *local_1a8;
  int *local_1a4;
  undefined local_1a0 [140];
  undefined4 local_114 [52];
  undefined auStack_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&iStack_1b8;
  iVar1 = *(int *)(param_2_00 + 0x170);
  local_1a8 = param_3;
  local_1ac = 0;
  local_1a4 = param_1_00;
  if (0x2f < param_2) {
    FUN_00acbe80(local_114);
    FUN_00aab350(local_1a0);
    if (*(code **)(iVar1 + 0x138) == (code *)0x0) {
      piVar2 = (int *)(iVar1 + 0x108);
      uVar5 = 0x10;
      iVar4 = param_1 - (int)piVar2;
      do {
        if (*(int *)(iVar4 + (int)piVar2) != *piVar2) goto LAB_00b078b0;
        uVar5 = uVar5 - 4;
        piVar2 = piVar2 + 1;
      } while (3 < uVar5);
      uVar3 = FUN_00a92530(0);
      FUN_00acbbc0(local_114,iVar1 + 0x118,0x10,uVar3);
      uVar3 = FUN_00a957c0(0,iVar1 + 0x128,param_1 + 0x10);
      FUN_00aabe20(local_1a0,uVar3);
    }
    else {
      iVar1 = (**(code **)(iVar1 + 0x138))(param_2_00,param_1,param_1 + 0x10,local_1a0,local_114,0);
      if ((iVar1 < 0) || (iVar1 == 0)) goto LAB_00b078b0;
      if (iVar1 == 2) {
        local_1ac = 1;
      }
    }
    iStack_1b4 = FUN_00a92600(local_114[0]);
    if (iStack_1b4 < 0) {
      FUN_00aab890(local_1a0);
    }
    else {
      param_2 = param_2 - iStack_1b4;
      FUN_00acbdc0(local_114,param_1,param_2);
      FUN_00acbdd0(local_114,auStack_44,0);
      FUN_00acbf20(local_114);
      iVar1 = FUN_00a7fd90(auStack_44,param_2 + param_1,iStack_1b4);
      if (iVar1 == 0) {
        iVar1 = FUN_00a82a40(local_1a0);
        iStack_1b0 = iVar1 + 0x10 + param_1;
        iVar1 = FUN_00a82a40(local_1a0);
        param_2 = param_2 + (-0x10 - iVar1);
        iVar1 = FUN_00a84f80(param_2,".\\ssl\\t1_lib.c",0x8c3);
        if (iVar1 == 0) {
          FUN_00aab890(local_1a0);
        }
        else {
          FUN_00aab5f0(local_1a0,iVar1,&iStack_1b8,iStack_1b0,param_2);
          iVar4 = thunk_FUN_00aab730(local_1a0,iStack_1b8 + iVar1,&iStack_1b4);
          if (0 < iVar4) {
            iStack_1b8 = iStack_1b8 + iStack_1b4;
            FUN_00aab890(local_1a0);
            iStack_1b0 = iVar1;
            iVar4 = FUN_00b15e60(0,&iStack_1b0,iStack_1b8);
            FUN_00a85120(iVar1);
            if (iVar4 == 0) {
              FUN_00a7f4b0();
            }
            else {
              if (param_6 != 0) {
                _memcpy((void *)(iVar4 + 0x48),local_1a8,param_6);
              }
              *(size_t *)(iVar4 + 0x44) = param_6;
              *local_1a4 = iVar4;
            }
          }
        }
      }
    }
  }
LAB_00b078b0:
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00b078d0(int *param_1)

{
  uint uVar1;
  
  uVar1 = 0;
  do {
    if ((&DAT_032452f4)[uVar1 * 2] == *param_1) {
      return (&DAT_032452f8)[uVar1 * 2];
    }
    uVar1 = uVar1 + 1;
  } while (uVar1 < 3);
  return 0xffffffff;
}



undefined4 FUN_00b07900(undefined param_1)

{
  undefined4 uVar1;
  
  switch(param_1) {
  case 1:
    uVar1 = FUN_00a91950();
    return uVar1;
  case 2:
    uVar1 = FUN_00a924c0();
    return uVar1;
  case 3:
    uVar1 = FUN_00a92520();
    return uVar1;
  case 4:
    uVar1 = FUN_00a92530();
    return uVar1;
  case 5:
    uVar1 = FUN_00a92590();
    return uVar1;
  case 6:
    uVar1 = FUN_00a925a0();
    return uVar1;
  default:
    return 0;
  }
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b07950(uint *param_1,int param_2,int param_3)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  char *pcVar5;
  int iVar6;
  undefined4 local_4;
  
  local_4 = 0xb0795a;
  uVar2 = param_1[0x26];
  if (((*param_1 & 0xffffff00) != 0x300) || ((int)*param_1 < 0x303)) {
    return 1;
  }
  if (uVar2 == 0) {
    return 0;
  }
  *(undefined4 *)(uVar2 + 0x50) = 0;
  *(undefined4 *)(uVar2 + 0x44) = 0;
  *(undefined4 *)(uVar2 + 0x38) = 0;
  *(undefined4 *)(uVar2 + 0x74) = 0;
  if (0 < param_3) {
    pcVar5 = (char *)(param_2 + 1);
    param_1 = (uint *)((param_3 - 1U >> 1) + 1);
    do {
      cVar1 = *pcVar5;
      local_4 = CONCAT31(local_4._1_3_,pcVar5[-1]);
      if (cVar1 == '\x01') {
        iVar6 = 1;
LAB_00b079e1:
        if (((*(int *)(uVar2 + 0x38 + iVar6 * 0xc) == 0) &&
            (iVar3 = FUN_00b07900(local_4), iVar3 != 0)) &&
           (*(int *)(uVar2 + 0x38 + iVar6 * 0xc) = iVar3, iVar6 == 1)) {
          *(int *)(uVar2 + 0x38) = iVar3;
        }
      }
      else {
        if (cVar1 == '\x02') {
          iVar6 = 2;
          goto LAB_00b079e1;
        }
        if (cVar1 == '\x03') {
          iVar6 = 5;
          goto LAB_00b079e1;
        }
      }
      pcVar5 = pcVar5 + 2;
      param_1 = (uint *)((int)param_1 + -1);
    } while (param_1 != (uint *)0x0);
  }
  if (*(int *)(uVar2 + 0x50) == 0) {
    uVar4 = FUN_00a924c0();
    *(undefined4 *)(uVar2 + 0x50) = uVar4;
  }
  if (*(int *)(uVar2 + 0x44) == 0) {
    uVar4 = FUN_00a924c0();
    *(undefined4 *)(uVar2 + 0x44) = uVar4;
    uVar4 = FUN_00a924c0();
    *(undefined4 *)(uVar2 + 0x38) = uVar4;
  }
  if (*(int *)(uVar2 + 0x74) == 0) {
    uVar4 = FUN_00a924c0();
    *(undefined4 *)(uVar2 + 0x74) = uVar4;
  }
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00b07a50(undefined4 *param_1)

{
  int iVar1;
  char cVar2;
  char cVar3;
  char cVar4;
  char *pcVar5;
  undefined *puVar6;
  int iVar7;
  uint _Size;
  
  pcVar5 = *(char **)(param_1[0x16] + 0x118);
  cVar2 = *pcVar5;
  cVar3 = pcVar5[1];
  cVar4 = pcVar5[2];
  _Size = (uint)CONCAT11(cVar3,cVar4);
  if ((code *)param_1[0x19] != (code *)0x0) {
    (*(code *)param_1[0x19])
              (0,*param_1,0x18,pcVar5,*(undefined4 *)(param_1[0x16] + 0x110),param_1,param_1[0x1a]);
  }
  if (cVar2 == '\x01') {
    iVar1 = _Size + 0x13;
    puVar6 = (undefined *)FUN_00a84f80(iVar1,".\\ssl\\t1_lib.c",0x9cc);
    *puVar6 = 2;
    puVar6[1] = cVar3;
    puVar6[2] = cVar4;
    _memcpy(puVar6 + 3,pcVar5 + 3,_Size);
    FUN_00a86ec0(puVar6 + 3 + _Size,0x10);
    iVar7 = FUN_00b02310(param_1,0x18,puVar6,iVar1);
    if ((-1 < iVar7) && ((code *)param_1[0x19] != (code *)0x0)) {
      (*(code *)param_1[0x19])(1,*param_1,0x18,puVar6,iVar1,param_1,param_1[0x1a]);
    }
    FUN_00a85120(puVar6);
    if (iVar7 < 0) {
      return iVar7;
    }
  }
  else if (((cVar2 == '\x02') && (_Size == 0x12)) &&
          ((uint)CONCAT11(pcVar5[3],pcVar5[4]) == param_1[99])) {
    param_1[99] = param_1[99] + 1;
    param_1[0x62] = 0;
  }
  return 0;
}



int FUN_00b07b80(undefined4 *param_1)

{
  uint uVar1;
  undefined *puVar2;
  int iVar3;
  
  if (((param_1[0x61] & 1) == 0) || ((param_1[0x61] & 2) != 0)) {
    FUN_00a7f3c0(0x14,0x13b,0x16d,".\\ssl\\t1_lib.c",0xa02);
    return -1;
  }
  if (param_1[0x62] != 0) {
    FUN_00a7f3c0(0x14,0x13b,0x16e,".\\ssl\\t1_lib.c",0xa09);
    return -1;
  }
  uVar1 = FUN_00aa35c0(param_1);
  if (((uVar1 & 0x3000) == 0) && (param_1[7] == 0)) {
    puVar2 = (undefined *)FUN_00a84f80(0x25,".\\ssl\\t1_lib.c",0xa22);
    *puVar2 = 1;
    puVar2[1] = 0;
    puVar2[2] = 0x12;
    puVar2[3] = *(undefined *)((int)param_1 + 0x18d);
    puVar2[4] = *(undefined *)(param_1 + 99);
    FUN_00a86ec0(puVar2 + 5,0x10);
    FUN_00a86ec0(puVar2 + 0x15,0x10);
    iVar3 = FUN_00b02310(param_1,0x18,puVar2,0x25);
    if (-1 < iVar3) {
      if ((code *)param_1[0x19] != (code *)0x0) {
        (*(code *)param_1[0x19])(1,*param_1,0x18,puVar2,0x25,param_1,param_1[0x1a]);
      }
      param_1[0x62] = 1;
    }
    FUN_00a85120(puVar2);
    return iVar3;
  }
  FUN_00a7f3c0(0x14,0x13b,0xf4,".\\ssl\\t1_lib.c",0xa10);
  return -1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b07cc0(int *param_1,byte **param_2,uint param_3,byte *param_4,undefined4 *param_5)

{
  byte *pbVar1;
  char *pcVar2;
  byte *pbVar3;
  char cVar4;
  byte bVar5;
  bool bVar6;
  bool bVar7;
  int *piVar8;
  uint uVar9;
  undefined4 uVar10;
  char *pcVar11;
  int iVar12;
  void *_Dst;
  uint uVar13;
  int iVar14;
  short sVar15;
  ushort uVar16;
  byte *_Str2;
  uint uVar17;
  byte *pbVar18;
  byte *pbVar19;
  
  piVar8 = param_1;
  pbVar19 = *param_2;
  param_1[0x49] = 0;
  param_1[0x4a] = -1;
  *(undefined4 *)(param_1[0x16] + 0x41c) = 0;
  param_1[0x61] = param_1[0x61] & 0xfffffffc;
  bVar7 = false;
  bVar6 = false;
  pbVar3 = param_4 + param_3;
  if ((pbVar19 < pbVar3 + -2) &&
     (pbVar18 = pbVar19 + 2, pbVar18 <= param_4 + (param_3 - CONCAT11(*pbVar19,pbVar19[1])))) {
    if (pbVar18 <= pbVar3 + -4) {
      do {
        sVar15 = CONCAT11(*pbVar18,pbVar18[1]);
        uVar16 = CONCAT11(pbVar18[2],pbVar18[3]);
        param_1 = (int *)(uint)uVar16;
        pbVar19 = pbVar18 + 4;
        if (pbVar3 < pbVar19 + (int)param_1) goto LAB_00b08451;
        if ((code *)piVar8[0x46] != (code *)0x0) {
          (*(code *)piVar8[0x46])(piVar8,0,sVar15,pbVar19,param_1,piVar8[0x47]);
        }
        if (sVar15 == 0) {
          if (uVar16 < 2) goto LAB_00b07fe3;
          bVar5 = *pbVar19;
          param_3 = (uint)CONCAT11(bVar5,pbVar18[5]);
          pbVar19 = pbVar18 + 6;
          if (((int)param_1 + 0xfffeU & 0xffff) < param_3) {
LAB_00b07f4e:
            *param_5 = 0x32;
            return 0;
          }
          _Str2 = pbVar19;
          if (3 < CONCAT11(bVar5,pbVar18[5])) {
            do {
              bVar5 = *_Str2;
              pbVar18 = _Str2 + 1;
              pbVar1 = _Str2 + 2;
              uVar9 = (uint)CONCAT11(*pbVar18,*pbVar1);
              _Str2 = _Str2 + 3;
              if ((int)(param_3 - 3) < (int)uVar9) goto LAB_00b08524;
              if ((piVar8[0x49] == 0) && (bVar5 == 0)) {
                if (piVar8[0x1b] == 0) {
                  if (*(int *)(piVar8[0x30] + 0xd0) != 0) goto LAB_00b07fe3;
                  if (0xff < CONCAT11(*pbVar18,*pbVar1)) {
                    *param_5 = 0x70;
                    return 0;
                  }
                  uVar10 = FUN_00a84f80(uVar9 + 1,".\\ssl\\t1_lib.c",0x3d3);
                  *(undefined4 *)(piVar8[0x30] + 0xd0) = uVar10;
                  if (*(void **)(piVar8[0x30] + 0xd0) == (void *)0x0) goto LAB_00b084bf;
                  _memcpy(*(void **)(piVar8[0x30] + 0xd0),_Str2,uVar9);
                  *(undefined *)(*(int *)(piVar8[0x30] + 0xd0) + uVar9) = 0;
                  pcVar11 = *(char **)(piVar8[0x30] + 0xd0);
                  pcVar2 = pcVar11 + 1;
                  do {
                    cVar4 = *pcVar11;
                    pcVar11 = pcVar11 + 1;
                  } while (cVar4 != '\0');
                  if ((int)pcVar11 - (int)pcVar2 != uVar9) {
                    FUN_00a85120(*(undefined4 *)(piVar8[0x30] + 0xd0));
                    *(undefined4 *)(piVar8[0x30] + 0xd0) = 0;
                    *param_5 = 0x70;
                    return 0;
                  }
                  piVar8[0x49] = 1;
                }
                else {
                  pcVar2 = *(char **)(piVar8[0x30] + 0xd0);
                  if (pcVar2 == (char *)0x0) {
LAB_00b07f2b:
                    iVar12 = 0;
                  }
                  else {
                    pcVar11 = pcVar2;
                    do {
                      cVar4 = *pcVar11;
                      pcVar11 = pcVar11 + 1;
                    } while (cVar4 != '\0');
                    if (((int)pcVar11 - (int)(pcVar2 + 1) != uVar9) ||
                       (iVar12 = _strncmp(pcVar2,(char *)_Str2,uVar9), iVar12 != 0))
                    goto LAB_00b07f2b;
                    iVar12 = 1;
                  }
                  piVar8[0x49] = iVar12;
                }
              }
              param_3 = (param_3 - 3) - uVar9;
            } while (3 < (int)param_3);
          }
          param_1 = (int *)((int)param_1 + 0xfffeU);
          if (param_3 != 0) goto LAB_00b07f4e;
        }
        else if (sVar15 == 0xc) {
          if ((uVar16 == 0) || (uVar9 = (uint)*pbVar19, uVar9 != (int)param_1 - 1U))
          goto LAB_00b07f4e;
          if (piVar8[0x69] != 0) goto LAB_00b08524;
          _Dst = (void *)FUN_00a84f80(uVar9 + 1,".\\ssl\\t1_lib.c",0x404);
          piVar8[0x69] = (int)_Dst;
          if (_Dst == (void *)0x0) {
            return 0xffffffff;
          }
          _memcpy(_Dst,pbVar18 + 5,uVar9);
          *(undefined *)(uVar9 + piVar8[0x69]) = 0;
          pcVar11 = (char *)piVar8[0x69];
          pcVar2 = pcVar11 + 1;
          do {
            cVar4 = *pcVar11;
            pcVar11 = pcVar11 + 1;
          } while (cVar4 != '\0');
          if ((int)pcVar11 - (int)pcVar2 != uVar9) goto LAB_00b07fe3;
        }
        else if (sVar15 == 0xb) {
          if (*piVar8 != 0xfeff) {
            uVar9 = (uint)*pbVar19;
            if (uVar9 != (int)param_1 - 1U) goto LAB_00b08524;
            if (piVar8[0x1b] == 0) {
              if (*(int *)(piVar8[0x30] + 0xd8) != 0) {
                FUN_00a85120(*(int *)(piVar8[0x30] + 0xd8));
                *(undefined4 *)(piVar8[0x30] + 0xd8) = 0;
              }
              *(undefined4 *)(piVar8[0x30] + 0xd4) = 0;
              uVar10 = FUN_00a84f80(uVar9,".\\ssl\\t1_lib.c",0x425);
              *(undefined4 *)(piVar8[0x30] + 0xd8) = uVar10;
              if (*(int *)(piVar8[0x30] + 0xd8) == 0) {
LAB_00b08566:
                *param_5 = 0x50;
                return 0;
              }
              *(uint *)(piVar8[0x30] + 0xd4) = uVar9;
              _memcpy(*(void **)(piVar8[0x30] + 0xd8),pbVar18 + 5,uVar9);
            }
          }
        }
        else if (sVar15 == 10) {
          if (*piVar8 != 0xfeff) {
            uVar9 = (uint)CONCAT11(*pbVar19,pbVar18[5]);
            if ((uVar9 != (int)param_1 - 2U) || (CONCAT11(*pbVar19,pbVar18[5]) == 0))
            goto LAB_00b07fe3;
            if (piVar8[0x1b] == 0) {
              if (*(int *)(piVar8[0x30] + 0xe0) != 0) goto LAB_00b07f4e;
              *(undefined4 *)(piVar8[0x30] + 0xdc) = 0;
              uVar10 = FUN_00a84f80(uVar9,".\\ssl\\t1_lib.c",0x44a);
              *(undefined4 *)(piVar8[0x30] + 0xe0) = uVar10;
              if (*(int *)(piVar8[0x30] + 0xe0) == 0) {
LAB_00b084bf:
                *param_5 = 0x50;
                return 0;
              }
              *(uint *)(piVar8[0x30] + 0xdc) = uVar9;
              _memcpy(*(void **)(piVar8[0x30] + 0xe0),pbVar18 + 6,uVar9);
            }
          }
        }
        else if (sVar15 == 0x23) {
          if (((code *)piVar8[0x58] != (code *)0x0) &&
             (iVar12 = (*(code *)piVar8[0x58])(piVar8,pbVar19,param_1,piVar8[0x59]), iVar12 == 0)) {
LAB_00b08545:
            *param_5 = 0x50;
            return 0;
          }
        }
        else if (sVar15 == -0xff) {
          iVar12 = FUN_00b1a290(piVar8,pbVar19,param_1,param_5);
          if (iVar12 == 0) {
            return 0;
          }
          bVar7 = true;
        }
        else if (sVar15 == 0xd) {
          if ((bVar6) || (uVar16 < 2)) goto LAB_00b07f4e;
          param_1 = (int *)((int)param_1 + 0xfffe);
          bVar6 = true;
          uVar9 = (uint)CONCAT11(*pbVar19,pbVar18[5]);
          pbVar19 = pbVar18 + 6;
          if ((uVar9 != ((uint)param_1 & 0xffff)) || ((pbVar18[5] & 1) != 0)) goto LAB_00b07fe3;
          iVar12 = FUN_00b07950(piVar8,pbVar19,uVar9);
          if (iVar12 == 0) goto LAB_00b08524;
        }
        else if (sVar15 == 5) {
          if ((*piVar8 != 0xfeff) && (*(int *)(piVar8[0x39] + 0x13c) != 0)) {
            if (uVar16 < 5) {
LAB_00b08524:
              *param_5 = 0x32;
              return 0;
            }
            bVar5 = *pbVar19;
            pbVar19 = pbVar18 + 5;
            piVar8[0x4a] = (uint)bVar5;
            if (bVar5 == 1) {
              uVar9 = (int)param_1 + 0x1fffd;
              uVar17 = (uint)CONCAT11(*pbVar19,pbVar18[6]);
              pbVar18 = pbVar18 + 7;
              if ((uVar9 & 0xffff) < uVar17) {
LAB_00b07fe3:
                *param_5 = 0x32;
                return 0;
              }
              if (uVar17 != 0) {
                do {
                  if ((int)uVar17 < 4) goto LAB_00b07f4e;
                  uVar13 = (uint)CONCAT11(*pbVar18,pbVar18[1]);
                  uVar17 = uVar17 + (-2 - uVar13);
                  param_4 = pbVar18 + 2;
                  uVar9 = uVar9 + (0xfffe - uVar13);
                  if ((int)uVar17 < 0) goto LAB_00b08524;
                  pbVar18 = param_4 + uVar13;
                  iVar12 = FUN_00af0590(0,&param_4,uVar13);
                  if (iVar12 == 0) goto LAB_00b07fe3;
                  if (pbVar18 != param_4) {
                    FUN_00af05d0(iVar12);
                    goto LAB_00b08524;
                  }
                  if (piVar8[0x4c] == 0) {
                    iVar14 = FUN_00a81010();
                    piVar8[0x4c] = iVar14;
                    if (iVar14 == 0) {
                      FUN_00af05d0(iVar12);
                      goto LAB_00b08545;
                    }
                  }
                  iVar14 = FUN_00a80df0(piVar8[0x4c],iVar12);
                  if (iVar14 == 0) {
                    FUN_00af05d0(iVar12);
                    goto LAB_00b08566;
                  }
                } while (0 < (int)uVar17);
              }
              if ((ushort)uVar9 < 2) goto LAB_00b07f4e;
              param_1 = (int *)(uVar9 + 0xfffe);
              uVar9 = (uint)CONCAT11(*pbVar18,pbVar18[1]);
              pbVar19 = pbVar18 + 2;
              if (uVar9 != ((uint)param_1 & 0xffff)) goto LAB_00b08524;
              param_4 = pbVar19;
              if (uVar9 != 0) {
                if (piVar8[0x4d] != 0) {
                  FUN_00a81120(piVar8[0x4d],&LAB_00a88710);
                }
                iVar12 = FUN_00a88730(0,&param_4,uVar9);
                piVar8[0x4d] = iVar12;
                if ((iVar12 == 0) || (pbVar19 + uVar9 != param_4)) goto LAB_00b07fe3;
              }
            }
            else {
              piVar8[0x4a] = -1;
              param_1 = (int *)((int)param_1 + 0xffff);
            }
          }
        }
        else if (sVar15 == 0xf) {
          if (*pbVar19 == 1) {
            piVar8[0x61] = piVar8[0x61] | 1;
          }
          else {
            if (*pbVar19 != 2) {
              *param_5 = 0x2f;
              return 0;
            }
            piVar8[0x61] = piVar8[0x61] | 3;
          }
        }
        else if (sVar15 == 0x3374) {
          if (*(int *)(piVar8[0x16] + 0x2b4) == 0) {
            *(undefined4 *)(piVar8[0x16] + 0x41c) = 1;
          }
        }
        else if ((sVar15 == 0xe) &&
                (iVar12 = FUN_00b19e10(piVar8,pbVar19,param_1,param_5), iVar12 != 0)) {
          return 0;
        }
        pbVar18 = pbVar19 + ((uint)param_1 & 0xffff);
      } while (pbVar18 <= pbVar3 + -4);
    }
    *param_2 = pbVar18;
LAB_00b08451:
    if (bVar7) {
      return 1;
    }
  }
  if ((piVar8[100] != 0) && ((piVar8[0x40] & 0x40000U) == 0)) {
    *param_5 = 0x28;
    FUN_00a7f3c0(0x14,0x12e,0x152,".\\ssl\\t1_lib.c",0x54f);
    return 0;
  }
  return 1;
}



undefined4 FUN_00b085a0(int *param_1,int param_2,int param_3,byte *param_4,undefined4 *param_5)

{
  byte bVar1;
  uint uVar2;
  byte *pbVar3;
  byte *pbVar4;
  int iVar5;
  ushort uVar6;
  byte *pbVar7;
  
  *param_5 = 0;
  pbVar7 = (byte *)(param_3 + param_2);
  param_1[0x50] = 0;
  uVar2 = FUN_00afb520(param_1,0x20,0,0);
  if ((((uVar2 & 0x4000) == 0) && (iVar5 = *param_1, 0x300 < iVar5)) && (param_4 != (byte *)0x0)) {
    if ((param_4 <= pbVar7) ||
       ((((iVar5 == 0xfeff || (iVar5 == 0x100)) &&
         (pbVar7 = pbVar7 + *pbVar7 + 1, param_4 <= pbVar7)) ||
        ((pbVar7 = pbVar7 + CONCAT11(*pbVar7,pbVar7[1]) + 2, param_4 <= pbVar7 ||
         (pbVar7 = pbVar7 + *pbVar7 + 1, param_4 < pbVar7)))))) {
      return 0xffffffff;
    }
    pbVar3 = pbVar7 + 2;
    if (pbVar3 < param_4) {
      pbVar7 = pbVar7 + 6;
      while( true ) {
        if (param_4 < pbVar7) {
          return 0;
        }
        bVar1 = *pbVar3;
        pbVar7 = pbVar3 + 1;
        uVar6 = CONCAT11(pbVar3[2],pbVar3[3]);
        pbVar4 = pbVar3 + 4;
        pbVar3 = pbVar4 + uVar6;
        if (param_4 < pbVar3) break;
        if (CONCAT11(bVar1,*pbVar7) == 0x23) {
          if (uVar6 == 0) {
            param_1[0x50] = 1;
            return 1;
          }
          if (param_1[0x5a] == 0) {
            iVar5 = FUN_00b07620(pbVar4,(uint)uVar6,param_2,param_3);
            if (iVar5 != 2) {
              if (iVar5 != 3) {
                if (iVar5 != 4) {
                  return 0xffffffff;
                }
                param_1[0x50] = 1;
              }
              return 3;
            }
            param_1[0x50] = 1;
          }
          return 2;
        }
        pbVar7 = pbVar3 + 4;
      }
      return 0;
    }
  }
  return 0;
}



undefined4 FUN_00b08720(undefined *param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  uint uVar2;
  undefined extraout_DL;
  
  if (param_3 != 0) {
    iVar1 = FUN_00a814c0(param_3);
    uVar2 = 0;
    while ((&DAT_032452c4)[uVar2 * 2] != iVar1) {
      uVar2 = uVar2 + 1;
      if (5 < uVar2) {
        return 0;
      }
    }
    if ((&DAT_032452c8)[uVar2 * 2] != -1) {
      iVar1 = FUN_00b078d0(param_2);
      if (iVar1 != -1) {
        param_1[1] = (char)iVar1;
        *param_1 = extraout_DL;
        return 1;
      }
    }
  }
  return 0;
}



undefined * FUN_00b08780(void)

{
  return &DAT_00dccb48;
}



undefined * FUN_00b08790(void)

{
  return &DAT_00dccbc0;
}



undefined * FUN_00b087e0(void)

{
  return &DAT_00dccc38;
}



undefined4 __fastcall FUN_00b08810(int param_1,undefined4 *param_2)

{
  undefined4 uVar1;
  
  *param_2 = 0x70;
  uVar1 = 0;
  if (((*(uint *)(*(int *)(*(int *)(param_1 + 0x58) + 0x344) + 0xc) & 0x400) != 0) &&
     (*(int *)(param_1 + 0x198) != 0)) {
    if (*(int *)(param_1 + 0x1a4) == 0) {
      *param_2 = 0x73;
      return 2;
    }
    uVar1 = FUN_00b02c00(param_1,param_2);
  }
  return uVar1;
}



void FUN_00b08860(int param_1)

{
  undefined *puVar1;
  
  if (*(int *)(param_1 + 0x34) == 0x2120) {
    puVar1 = *(undefined **)(*(int *)(param_1 + 0x3c) + 4);
    *puVar1 = 0;
    puVar1[1] = 0;
    puVar1[2] = 0;
    puVar1[3] = 0;
    *(undefined4 *)(param_1 + 0x34) = 0x2121;
    *(undefined4 *)(param_1 + 0x44) = 4;
    *(undefined4 *)(param_1 + 0x48) = 0;
  }
  FUN_00b04e10(param_1,0x16);
  return;
}



undefined4 FUN_00b088a0(int param_1)

{
  byte *pbVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  
  iVar3 = param_1;
  uVar4 = (**(code **)(*(int *)(param_1 + 8) + 0x30))
                    (param_1,0x2180,0x2181,0xffffffff,*(undefined4 *)(param_1 + 0x108),&param_1);
  if (param_1 != 0) {
    uVar4 = 1;
    *(undefined4 *)(*(int *)(iVar3 + 0x58) + 0x354) = 1;
    pbVar1 = *(byte **)(iVar3 + 0x58);
    if (*(int *)(pbVar1 + 0x340) == 1) {
      if ((*pbVar1 & 0x40) != 0) {
        FUN_00a7f3c0(0x14,0x130,0x15a,".\\ssl\\s3_srvr.c",0x37b);
        return 0xffffffff;
      }
      if (*(int *)(pbVar1 + 0x348) != 0) {
        FUN_00a8ef50(*(int *)(pbVar1 + 0x348));
        *(undefined4 *)(*(int *)(iVar3 + 0x58) + 0x348) = 0;
      }
      iVar2 = *(int *)(*(int *)(iVar3 + 0x58) + 0x34c);
      if (iVar2 != 0) {
        FUN_00a8e900(iVar2);
        *(undefined4 *)(*(int *)(iVar3 + 0x58) + 0x34c) = 0;
      }
      **(uint **)(iVar3 + 0x58) = **(uint **)(iVar3 + 0x58) | 0x40;
      uVar4 = 2;
    }
  }
  return uVar4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00b08970(uint *param_1)

{
  uint *puVar1;
  byte *pbVar2;
  uint uVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined *puVar6;
  undefined *puVar7;
  uint uVar8;
  int iVar9;
  int *piVar10;
  undefined4 *puVar11;
  int *piVar12;
  int iVar13;
  __time64_t _Var14;
  undefined4 uVar15;
  undefined4 uVar16;
  undefined4 uStack_20;
  int local_1c;
  uint *local_18;
  int local_14;
  undefined4 *puStack_10;
  int iStack_c;
  undefined *puStack_8;
  int local_4;
  
  puVar1 = param_1;
  local_4 = 0xb0897a;
  local_14 = -1;
  local_18 = (uint *)0x0;
  local_1c = 0;
  if (param_1[0xd] == 0x2110) {
    param_1[0xd] = 0x2111;
  }
  param_1[0x43] = 1;
  iStack_c = (**(code **)(param_1[2] + 0x30))(param_1,0x2111,0x2112,1,0x4000,&local_4);
  if (local_4 == 0) {
    return iStack_c;
  }
  puVar6 = (undefined *)puVar1[0x10];
  puVar1[0x43] = 0;
  param_1 = (uint *)(puVar6 + 2);
  uVar8 = (uint)CONCAT11(*puVar6,puVar6[1]);
  puVar1[0x44] = uVar8;
  puStack_8 = puVar6;
  if (*puVar1 == 0xfeff) {
    if (0xfeff < uVar8) goto LAB_00b08a4c;
  }
  else if ((int)uVar8 < (int)*puVar1) {
LAB_00b08a4c:
    FUN_00a7f3c0(0x14,0x8a,0x10b,".\\ssl\\s3_srvr.c",0x3c0);
    if ((puVar1[0x44] & 0xffffff00) == 0x300) {
      *puVar1 = puVar1[0x44];
    }
    uStack_20 = 0x46;
    FUN_00b00df0(puVar1,2,0x46);
    goto LAB_00b0930b;
  }
  uVar8 = FUN_00afb520(puVar1,0x20,0,0);
  if (((uVar8 & 0x2000) != 0) && (*(char *)(*(byte *)(param_1 + 8) + 0x21 + (int)param_1) == '\0'))
  {
    return 1;
  }
  puVar11 = param_1;
  puVar5 = (undefined4 *)(puVar1[0x16] + 0xc0);
  for (iVar9 = 8; iVar9 != 0; iVar9 = iVar9 + -1) {
    *puVar5 = *puVar11;
    puVar11 = puVar11 + 1;
    puVar5 = puVar5 + 1;
  }
  puStack_10 = (undefined4 *)(uint)*(byte *)(param_1 + 8);
  param_1 = (uint *)((int)param_1 + 0x21);
  puVar1[0x1b] = 0;
  if ((puVar1[10] == 0) || ((puVar1[0x40] & 0x10000) == 0)) {
    iVar9 = FUN_00b004b0(puVar1,param_1,puStack_10,puVar6 + iStack_c);
    if (iVar9 != 1) {
      if (iVar9 == -1) goto LAB_00b0930b;
      goto LAB_00b08b05;
    }
    puVar1[0x1b] = 1;
  }
  else {
LAB_00b08b05:
    iVar9 = FUN_00affdf0(puVar1,1);
    if (iVar9 == 0) goto LAB_00b0930b;
  }
  pbVar2 = (byte *)((int)param_1 + (int)puStack_10);
  if ((*puVar1 == 0xfeff) || (*puVar1 == 0x100)) {
    uVar8 = (uint)*pbVar2;
    param_1 = (uint *)(pbVar2 + 1);
    if (0x100 < uVar8) {
      uStack_20 = 0x32;
      uVar16 = 0x411;
      goto LAB_00b08b58;
    }
    uVar3 = FUN_00afb520(puVar1,0x20,0,0);
    if (((uVar3 & 0x2000) == 0) || (uVar8 == 0)) {
LAB_00b08c62:
      pbVar2 = (byte *)((int)param_1 + uVar8);
      goto LAB_00b08c6c;
    }
    _memcpy((void *)(puVar1[0x17] + 0x104),param_1,uVar8);
    if (*(code **)(puVar1[0x39] + 0x7c) == (code *)0x0) {
      uVar3 = puVar1[0x17];
      piVar10 = (int *)(uVar3 + 4);
      piVar12 = (int *)(uVar3 + 0x104);
      for (uVar3 = *(uint *)(uVar3 + 0x204); 3 < uVar3; uVar3 = uVar3 - 4) {
        if (*piVar12 != *piVar10) goto LAB_00b08c48;
        piVar10 = piVar10 + 1;
        piVar12 = piVar12 + 1;
      }
      if ((uVar3 == 0) ||
         ((*(char *)piVar10 == *(char *)piVar12 &&
          ((uVar3 < 2 ||
           ((*(char *)((int)piVar10 + 1) == *(char *)((int)piVar12 + 1) &&
            ((uVar3 < 3 || (*(char *)((int)piVar10 + 2) == *(char *)((int)piVar12 + 2)))))))))))
      goto LAB_00b08c5a;
LAB_00b08c48:
      uStack_20 = 0x28;
      uVar16 = 0x42c;
    }
    else {
      iVar9 = (**(code **)(puVar1[0x39] + 0x7c))(puVar1,puVar1[0x17] + 0x104,uVar8);
      if (iVar9 != 0) {
LAB_00b08c5a:
        local_14 = 2;
        goto LAB_00b08c62;
      }
      uStack_20 = 0x28;
      uVar16 = 0x422;
    }
LAB_00b08b58:
    uVar15 = 0x134;
  }
  else {
LAB_00b08c6c:
    uVar8 = (uint)CONCAT11(*pbVar2,pbVar2[1]);
    param_1 = (uint *)(pbVar2 + 2);
    if ((uVar8 == 0) && (puStack_10 != (undefined4 *)0x0)) {
      uVar16 = 0x43b;
      uStack_20 = 0x2f;
      uVar15 = 0xb7;
    }
    else {
      puVar11 = (undefined4 *)(puStack_8 + iStack_c);
      if ((undefined4 *)(uVar8 + (int)param_1) < puVar11) {
        if ((uVar8 != 0) && (iVar9 = FUN_00afa020(puVar1,param_1,uVar8,&local_1c), iVar9 == 0))
        goto LAB_00b0930b;
        param_1 = (uint *)((int)param_1 + uVar8);
        if ((puVar1[0x1b] == 0) || (uVar8 == 0)) {
LAB_00b08d6a:
          uVar8 = (uint)*(byte *)param_1;
          puVar5 = (undefined4 *)((int)param_1 + 1);
          param_1 = (uint *)(uVar8 + (int)puVar5);
          if (puVar11 < param_1) {
            uVar16 = 0x485;
            uStack_20 = 0x32;
            uVar15 = 0x9f;
            param_1 = puVar5;
          }
          else {
            iVar9 = 0;
            if (uVar8 != 0) {
              do {
                if (*(char *)(iVar9 + (int)puVar5) == '\0') break;
                iVar9 = iVar9 + 1;
              } while (iVar9 < (int)uVar8);
            }
            puStack_10 = puVar5;
            if (iVar9 < (int)uVar8) {
              if (((int)*puVar1 < 0x300) ||
                 (iVar9 = FUN_00b07cc0(puVar1,&param_1,puStack_8,iStack_c,&uStack_20), iVar9 != 0))
              {
                iVar9 = FUN_00b072f0(puVar1);
                if (iVar9 < 1) {
                  uVar16 = 0x4a3;
LAB_00b08e20:
                  FUN_00a7f3c0(0x14,0x8a,0xe2,".\\ssl\\s3_srvr.c",uVar16);
                  goto LAB_00b0930b;
                }
                _Var14 = __time64((__time64_t *)0x0);
                uVar3 = puVar1[0x16];
                *(char *)(uVar3 + 0xa0) = (char)((ulonglong)_Var14 >> 0x18);
                *(char *)(uVar3 + 0xa1) = (char)((ulonglong)_Var14 >> 0x10);
                *(char *)(uVar3 + 0xa2) = (char)((ulonglong)_Var14 >> 8);
                *(char *)(uVar3 + 0xa3) = (char)_Var14;
                iVar9 = FUN_00a86ec0(uVar3 + 0xa4,0x1c);
                if (iVar9 < 1) {
LAB_00b092c2:
                  uStack_20 = 0x50;
                  FUN_00b00df0(puVar1,2,0x50);
                  goto LAB_00b0930b;
                }
                if (((puVar1[0x1b] == 0) && (0x300 < (int)*puVar1)) && (puVar1[0x5a] != 0)) {
                  iStack_c = 0;
                  *(undefined4 *)(puVar1[0x30] + 0x10) = 0x30;
                  iVar9 = (*(code *)puVar1[0x5a])
                                    (puVar1,puVar1[0x30] + 0x14,puVar1[0x30] + 0x10,local_1c,
                                     &iStack_c,puVar1[0x5b]);
                  if (iVar9 != 0) {
                    puVar1[0x1b] = 1;
                    *(int *)(puVar1[0x30] + 0xbc) = local_1c;
                    *(undefined4 *)(puVar1[0x30] + 0xa0) = 0;
                    local_1c = 0;
                    if (iStack_c == 0) {
                      uVar16 = FUN_00af9ed0(puVar1);
                      iStack_c = FUN_00b04320(puVar1,*(undefined4 *)(puVar1[0x30] + 0xbc),uVar16);
                      if (iStack_c == 0) {
                        uVar16 = 0x4cb;
                        uStack_20 = 0x28;
                        uVar15 = 0xc1;
                        goto LAB_00b08b62;
                      }
                    }
                    *(int *)(puVar1[0x30] + 0xb4) = iStack_c;
                    if (puVar1[0x1d] != 0) {
                      FUN_00a80ea0(puVar1[0x1d]);
                    }
                    if (puVar1[0x1e] != 0) {
                      FUN_00a80ea0(puVar1[0x1e]);
                    }
                    uVar3 = FUN_00a80f80(*(undefined4 *)(puVar1[0x30] + 0xbc));
                    puVar1[0x1d] = uVar3;
                    uVar3 = FUN_00a80f80(*(undefined4 *)(puVar1[0x30] + 0xbc));
                    puVar1[0x1e] = uVar3;
                  }
                }
                *(undefined4 *)(puVar1[0x16] + 0x38c) = 0;
                uVar3 = *(uint *)(puVar1[0x30] + 0xb0);
                if (uVar3 == 0) {
                  if (puVar1[0x1b] == 0) {
                    if (((puVar1[0x40] & 0x20000) == 0) && (*(int *)(puVar1[0x39] + 0x98) != 0)) {
                      puVar6 = (undefined *)FUN_00a80ed0(*(int *)(puVar1[0x39] + 0x98));
                      iVar9 = 0;
                      puStack_8 = puVar6;
                      if (0 < (int)puVar6) {
                        do {
                          local_18 = (uint *)FUN_00a80ee0(*(undefined4 *)(puVar1[0x39] + 0x98),iVar9
                                                         );
                          iVar4 = 0;
                          if (uVar8 != 0) {
                            do {
                              if (*local_18 == (uint)*(byte *)(iVar4 + (int)puStack_10)) {
                                *(uint **)(puVar1[0x16] + 0x38c) = local_18;
                                goto LAB_00b09146;
                              }
                              iVar4 = iVar4 + 1;
                              puVar6 = puStack_8;
                            } while (iVar4 < (int)uVar8);
                          }
                          iVar9 = iVar9 + 1;
                        } while (iVar9 < (int)puVar6);
                      }
                      local_18 = (uint *)0x0;
                    }
                  }
                  else {
                    local_18 = (uint *)0x0;
                  }
LAB_00b09146:
                  iVar9 = 0;
                  if (puVar1[0x1b] != 0) {
                    uVar8 = puVar1[0x30];
                    puVar6 = (undefined *)0x0;
                    puStack_8 = (undefined *)0x0;
                    if ((puVar1[0x40] & 0x40000000) != 0) {
                      uVar16 = *(undefined4 *)(uVar8 + 0xbc);
                      iVar4 = FUN_00a80ed0(uVar16);
                      if (0 < iVar4) {
                        do {
                          puVar7 = (undefined *)FUN_00a80ee0(uVar16,iVar9);
                          if ((puVar7[0x14] & 0x20) != 0) {
                            puVar6 = puVar7;
                          }
                          if ((puVar7[0x20] & 2) != 0) {
                            puStack_8 = puVar7;
                          }
                          iVar9 = iVar9 + 1;
                          iVar4 = FUN_00a80ed0(uVar16);
                        } while (iVar9 < iVar4);
                        if (puVar6 != (undefined *)0x0) {
                          *(undefined **)(puVar1[0x16] + 0x344) = puVar6;
                          goto LAB_00b09292;
                        }
                        puVar6 = puStack_8;
                        if (puStack_8 != (undefined *)0x0) goto LAB_00b09272;
                      }
                      uVar8 = puVar1[0x30];
                    }
                    *(undefined4 *)(puVar1[0x16] + 0x344) = *(undefined4 *)(uVar8 + 0xb4);
LAB_00b09292:
                    if (((((*puVar1 & 0xffffff00) == 0x300) && (0x302 < (int)*puVar1)) &&
                        ((*(byte *)(puVar1 + 0x32) & 1) != 0)) ||
                       (iVar9 = FUN_00b0f060(puVar1), iVar9 != 0)) {
                      if (((int)*puVar1 < 0x300) || (iVar9 = FUN_00b073a0(puVar1), 0 < iVar9)) {
                        if (local_14 < 0) {
                          local_14 = 1;
                        }
                        goto LAB_00b0930b;
                      }
                      uVar16 = 0x588;
                      goto LAB_00b08e20;
                    }
                    goto LAB_00b092c2;
                  }
                  if (local_18 == (uint *)0x0) {
                    uVar8 = 0;
                  }
                  else {
                    uVar8 = *local_18;
                  }
                  *(uint *)(puVar1[0x30] + 0xb0) = uVar8;
                  if (*(int *)(puVar1[0x30] + 0xbc) != 0) {
                    FUN_00a80ea0(*(int *)(puVar1[0x30] + 0xbc));
                  }
                  *(int *)(puVar1[0x30] + 0xbc) = local_1c;
                  if (local_1c == 0) {
                    uVar16 = 0x541;
                    uStack_20 = 0x2f;
                    uVar15 = 0xb6;
                  }
                  else {
                    local_1c = 0;
                    uVar16 = FUN_00af9ed0(puVar1);
                    puVar6 = (undefined *)
                             FUN_00b04320(puVar1,*(undefined4 *)(puVar1[0x30] + 0xbc),uVar16);
                    if (puVar6 != (undefined *)0x0) {
LAB_00b09272:
                      *(undefined **)(puVar1[0x16] + 0x344) = puVar6;
                      goto LAB_00b09292;
                    }
                    uVar16 = 0x54b;
                    uStack_20 = 0x28;
                    uVar15 = 0xc1;
                  }
                }
                else if ((puVar1[0x40] & 0x20000) == 0) {
                  iVar4 = 0;
                  iVar9 = FUN_00a80ed0(*(undefined4 *)(puVar1[0x39] + 0x98));
                  if (0 < iVar9) {
                    do {
                      local_18 = (uint *)FUN_00a80ee0(*(undefined4 *)(puVar1[0x39] + 0x98),iVar4);
                      if (uVar3 == *local_18) {
                        *(uint **)(puVar1[0x16] + 0x38c) = local_18;
                        break;
                      }
                      iVar4 = iVar4 + 1;
                      iVar9 = FUN_00a80ed0(*(undefined4 *)(puVar1[0x39] + 0x98));
                    } while (iVar4 < iVar9);
                  }
                  if (*(int *)(puVar1[0x16] + 0x38c) == 0) {
                    uVar16 = 0x4fb;
                    uStack_20 = 0x50;
                    uVar15 = 0x155;
                  }
                  else {
                    iVar9 = 0;
                    if (uVar8 != 0) {
                      do {
                        if (*(byte *)(iVar9 + (int)puStack_10) == uVar3) {
                          if (iVar9 < (int)uVar8) goto LAB_00b09146;
                          break;
                        }
                        iVar9 = iVar9 + 1;
                      } while (iVar9 < (int)uVar8);
                    }
                    uVar16 = 0x507;
                    uStack_20 = 0x2f;
                    uVar15 = 0x156;
                  }
                }
                else {
                  uVar16 = 0x4eb;
                  uStack_20 = 0x50;
                  uVar15 = 0x154;
                }
              }
              else {
                uVar16 = 0x49e;
                uVar15 = 0xe3;
              }
            }
            else {
              uVar16 = 0x493;
              uStack_20 = 0x32;
              uVar15 = 0xbb;
            }
          }
        }
        else {
          iVar9 = *(int *)(*(int *)(puVar1[0x30] + 0xb4) + 8);
          iVar13 = 0;
          iVar4 = FUN_00a80ed0(local_1c);
          if (0 < iVar4) {
            do {
              iVar4 = FUN_00a80ee0(local_1c,iVar13);
              if (*(int *)(iVar4 + 8) == iVar9) goto LAB_00b08d6a;
              iVar13 = iVar13 + 1;
              iVar4 = FUN_00a80ed0(local_1c);
            } while (iVar13 < iVar4);
          }
          uVar16 = 0x47a;
          uStack_20 = 0x2f;
          uVar15 = 0xd7;
        }
      }
      else {
        uVar16 = 0x442;
        uStack_20 = 0x32;
        uVar15 = 0x9f;
      }
    }
  }
LAB_00b08b62:
  FUN_00a7f3c0(0x14,0x8a,uVar15,".\\ssl\\s3_srvr.c",uVar16);
  FUN_00b00df0(puVar1,2,uStack_20);
LAB_00b0930b:
  if (local_1c != 0) {
    FUN_00a80ea0(local_1c);
  }
  return local_14;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b09330(undefined4 *param_1)

{
  undefined *puVar1;
  size_t _Size;
  int iVar2;
  int iVar3;
  undefined *puVar4;
  undefined4 *puVar5;
  undefined4 *puVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  
  if (param_1[0xd] != 0x2130) {
LAB_00b09493:
    uVar8 = FUN_00b04e10(param_1,0x16);
    return uVar8;
  }
  puVar1 = *(undefined **)(param_1[0xf] + 4);
  puVar1[4] = (char)((uint)*param_1 >> 8);
  puVar1[5] = *(undefined *)param_1;
  puVar5 = (undefined4 *)(param_1[0x16] + 0xa0);
  puVar6 = (undefined4 *)(puVar1 + 6);
  for (iVar2 = 8; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar6 = *puVar5;
    puVar5 = puVar5 + 1;
    puVar6 = puVar6 + 1;
  }
  if (((*(byte *)(param_1[0x39] + 0x20) & 2) == 0) && (param_1[0x1b] == 0)) {
    *(undefined4 *)(param_1[0x30] + 0x44) = 0;
  }
  _Size = *(size_t *)(param_1[0x30] + 0x44);
  if ((int)_Size < 0x21) {
    puVar1[0x26] = (char)_Size;
    puVar4 = puVar1 + 0x27;
    _memcpy(puVar4,(void *)(param_1[0x30] + 0x48),_Size);
    iVar2 = FUN_00b042e0(*(undefined4 *)(param_1[0x16] + 0x344),puVar4 + _Size);
    puVar4 = puVar4 + _Size + iVar2;
    if (*(undefined **)(param_1[0x16] + 0x38c) == (undefined *)0x0) {
      *puVar4 = 0;
    }
    else {
      *puVar4 = **(undefined **)(param_1[0x16] + 0x38c);
    }
    iVar2 = FUN_00b07240(param_1);
    if (iVar2 < 1) {
      uVar8 = 0x5e4;
      uVar7 = 0x113;
      goto LAB_00b093c1;
    }
    iVar2 = FUN_00b06700(param_1,puVar4 + 1,puVar1 + 0x4000);
    if (iVar2 != 0) {
      iVar3 = iVar2 - (int)(puVar1 + 4);
      *puVar1 = 2;
      puVar1[1] = (char)((uint)iVar3 >> 0x10);
      puVar1[2] = (char)((uint)iVar3 >> 8);
      puVar1[3] = (char)iVar3;
      param_1[0xd] = 0x2131;
      param_1[0x11] = iVar2 - (int)puVar1;
      param_1[0x12] = 0;
      goto LAB_00b09493;
    }
    uVar8 = 0x5e9;
  }
  else {
    uVar8 = 0x5cd;
  }
  uVar7 = 0x44;
LAB_00b093c1:
  FUN_00a7f3c0(0x14,0xf2,uVar7,".\\ssl\\s3_srvr.c",uVar8);
  return 0xffffffff;
}



void FUN_00b094b0(int param_1)

{
  undefined *puVar1;
  
  if (*(int *)(param_1 + 0x34) == 0x2170) {
    puVar1 = *(undefined **)(*(int *)(param_1 + 0x3c) + 4);
    *puVar1 = 0xe;
    puVar1[1] = 0;
    puVar1[2] = 0;
    puVar1[3] = 0;
    *(undefined4 *)(param_1 + 0x34) = 0x2171;
    *(undefined4 *)(param_1 + 0x44) = 4;
    *(undefined4 *)(param_1 + 0x48) = 0;
  }
  FUN_00b04e10(param_1,0x16);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b094f0(uint *param_1)

{
  char cVar1;
  char cVar2;
  size_t _Size;
  void *_Src;
  int iVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  char *pcVar7;
  char *pcVar8;
  uint uVar9;
  undefined *puVar10;
  char *pcVar11;
  undefined4 uVar12;
  undefined4 uVar13;
  undefined4 uVar14;
  char *local_8c;
  int local_88;
  size_t local_84;
  int local_80;
  void *local_7c;
  int *piStack_78;
  undefined *local_74;
  uint local_70 [4];
  uint local_60;
  int iStack_5c;
  int local_58;
  int local_54;
  undefined local_50 [24];
  int aiStack_38 [2];
  char cStack_30;
  undefined auStack_28 [36];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_8c;
  local_7c = (void *)0x0;
  local_84 = 0;
  local_54 = 0;
  local_80 = 0;
  local_58 = 0;
  FUN_00a91330(local_50);
  if (param_1[0xd] != 0x2150) {
LAB_00b09e17:
    param_1[0xd] = 0x2151;
    FUN_00a915c0(local_50);
    FUN_00b04e10(param_1,0x16);
    goto LAB_00b09e33;
  }
  iVar6 = *(int *)(param_1[0x16] + 0x344);
  local_60 = *(uint *)(iVar6 + 0xc);
  local_74 = (undefined *)param_1[0xf];
  uVar9 = param_1[0x26];
  local_70[3] = 0;
  local_70[2] = 0;
  local_70[1] = 0;
  local_70[0] = 0;
  local_8c = (char *)0x0;
  if ((local_60 & 1) == 0) {
    if ((local_60 & 8) != 0) {
      iVar3 = *(int *)(uVar9 + 0x20);
      if ((iVar3 == 0) &&
         ((*(code **)(uVar9 + 0x24) == (code *)0x0 ||
          (iVar3 = (**(code **)(uVar9 + 0x24))
                             (param_1,*(uint *)(iVar6 + 0x20) & 2,
                              (-(uint)((*(uint *)(iVar6 + 0x20) & 8) != 0) & 0xfffffe00) + 0x400),
          iVar3 == 0)))) {
        uVar14 = 0x667;
        uVar13 = 0xab;
        goto LAB_00b09fb5;
      }
      if (*(int *)(param_1[0x16] + 0x348) != 0) {
        uVar13 = 0x66d;
LAB_00b0966e:
        FUN_00a7f3c0(0x14,0x9b,0x44,".\\ssl\\s3_srvr.c",uVar13);
        goto LAB_00b09fe6;
      }
      iVar6 = FUN_00ad87e0(iVar3);
      if (iVar6 == 0) {
        uVar13 = 0x673;
      }
      else {
        *(int *)(param_1[0x16] + 0x348) = iVar6;
        if (((*(int *)(iVar3 + 0x14) == 0) || (*(int *)(iVar3 + 0x18) == 0)) ||
           ((param_1[0x40] & 0x100000) != 0)) {
          iVar3 = FUN_00aa52a0(iVar6);
          if (iVar3 != 0) goto LAB_00b09715;
          uVar13 = 0x67f;
        }
        else {
          uVar13 = FUN_00a9b160(*(int *)(iVar3 + 0x14));
          *(undefined4 *)(iVar6 + 0x14) = uVar13;
          iVar3 = FUN_00a9b160(*(undefined4 *)(iVar3 + 0x18));
          *(int *)(iVar6 + 0x18) = iVar3;
          if ((*(int *)(iVar6 + 0x14) != 0) && (iVar3 != 0)) {
LAB_00b09715:
            uVar9 = *(uint *)(iVar6 + 8);
            local_70[1] = *(uint *)(iVar6 + 0xc);
            local_70[2] = *(uint *)(iVar6 + 0x14);
            goto LAB_00b09a66;
          }
          uVar13 = 0x68a;
        }
      }
      FUN_00a7f3c0(0x14,0x9b,5,".\\ssl\\s3_srvr.c",uVar13);
      goto LAB_00b09fe6;
    }
    if (-1 < (char)local_60) {
      if ((local_60 & 0x100) == 0) {
        if ((local_60 & 0x400) == 0) {
          uVar14 = 0x72e;
          uVar13 = 0xfa;
          goto LAB_00b09fb5;
        }
        uVar9 = param_1[0x6a];
        if (((uVar9 == 0) || (param_1[0x6b] == 0)) ||
           ((param_1[0x6c] == 0 || (uVar5 = param_1[0x6d], uVar5 == 0)))) {
          FUN_00a7f3c0(0x14,0x9b,0x166,".\\ssl\\s3_srvr.c",0x722);
          goto LAB_00b09fe6;
        }
        local_70[1] = param_1[0x6b];
        local_70[2] = param_1[0x6c];
LAB_00b09a62:
        local_70[3] = uVar5;
        goto LAB_00b09a66;
      }
      local_8c = *(char **)(param_1[0x39] + 0x14c);
      pcVar11 = local_8c + 1;
      do {
        cVar1 = *local_8c;
        local_8c = local_8c + 1;
      } while (cVar1 != '\0');
      local_8c = local_8c + (2 - (int)pcVar11);
      goto LAB_00b09a6a;
    }
    iVar3 = *(int *)(uVar9 + 0x28);
    if ((iVar3 == 0) &&
       ((*(code **)(uVar9 + 0x2c) == (code *)0x0 ||
        (iVar3 = (**(code **)(uVar9 + 0x2c))
                           (param_1,*(uint *)(iVar6 + 0x20) & 2,
                            (-(uint)((*(uint *)(iVar6 + 0x20) & 8) != 0) & 0xfffffe00) + 0x400),
        iVar3 == 0)))) {
      uVar14 = 0x6a3;
      uVar13 = 0x137;
      goto LAB_00b09fb5;
    }
    if (*(int *)(param_1[0x16] + 0x34c) != 0) {
      uVar13 = 0x6a9;
      goto LAB_00b0966e;
    }
    if (iVar3 != 0) {
      iVar6 = FUN_00a8ead0(iVar3);
      if (iVar6 == 0) {
        FUN_00a7f3c0(0x14,0x9b,0x2b,".\\ssl\\s3_srvr.c",0x6b5);
        goto LAB_00b09fe6;
      }
      *(int *)(param_1[0x16] + 0x34c) = iVar6;
      iVar3 = FUN_00a989a0(iVar6);
      if ((((iVar3 == 0) || (iVar3 = FUN_00aa3450(iVar6), iVar3 == 0)) ||
          ((param_1[0x40] & 0x80000) != 0)) && (iVar3 = FUN_00a8eb30(iVar6), iVar3 == 0)) {
        FUN_00a7f3c0(0x14,0x9b,0x2b,".\\ssl\\s3_srvr.c",0x6c0);
        goto LAB_00b09fe6;
      }
      iVar3 = FUN_00a7fa30(iVar6);
      if (((iVar3 == 0) || (iVar4 = FUN_00a989a0(iVar6), iVar4 == 0)) ||
         (iVar4 = FUN_00aa3450(iVar6), iVar4 == 0)) {
        FUN_00a7f3c0(0x14,0x9b,0x2b,".\\ssl\\s3_srvr.c",0x6c9);
        goto LAB_00b09fe6;
      }
      if (((*(byte *)(*(int *)(param_1[0x16] + 0x344) + 0x20) & 2) != 0) &&
         (iVar4 = FUN_00aa3760(iVar3), 0xa3 < iVar4)) {
        FUN_00a7f3c0(0x14,0x9b,0x136,".\\ssl\\s3_srvr.c",0x6d0);
        goto LAB_00b09fe6;
      }
      uVar13 = FUN_00aa35a0(iVar3);
      local_54 = FUN_00b05ce0(uVar13);
      if (local_54 == 0) {
        FUN_00a7f3c0(0x14,0x9b,0x13b,".\\ssl\\s3_srvr.c",0x6dc);
        goto LAB_00b09fe6;
      }
      uVar13 = FUN_00a989a0(iVar6,4,0,0,0);
      uVar13 = FUN_00ae8f00(iVar3,uVar13);
      local_7c = (void *)FUN_00a84f80(uVar13,".\\ssl\\s3_srvr.c",0x6ea);
      local_80 = FUN_00aa49c0();
      if ((local_7c == (void *)0x0) || (local_80 == 0)) {
        FUN_00a7f3c0(0x14,0x9b,0x41,".\\ssl\\s3_srvr.c",0x6ee);
      }
      else {
        uVar13 = FUN_00a989a0(iVar6,4,local_7c,uVar13,local_80);
        local_84 = FUN_00ae8f00(iVar3,uVar13);
        if (local_84 != 0) {
          FUN_00aa4a20(local_80);
          uVar5 = 0;
          local_8c = (char *)(local_84 + 4);
          uVar9 = 0;
          local_80 = 0;
          local_70[1] = 0;
          local_70[2] = 0;
          goto LAB_00b09a62;
        }
        FUN_00a7f3c0(0x14,0x9b,0x2b,".\\ssl\\s3_srvr.c",0x6fa);
      }
      goto LAB_00b09fd5;
    }
    FUN_00a7f3c0(0x14,0x9b,0x2b,".\\ssl\\s3_srvr.c",0x6b0);
  }
  else {
    iVar3 = *(int *)(uVar9 + 0x18);
    if (iVar3 == 0) {
      if (*(code **)(uVar9 + 0x1c) == (code *)0x0) {
        uVar14 = 0x653;
        uVar13 = 0xac;
      }
      else {
        iVar3 = (**(code **)(uVar9 + 0x1c))
                          (param_1,*(uint *)(iVar6 + 0x20) & 2,
                           (-(uint)((*(uint *)(iVar6 + 0x20) & 8) != 0) & 0xfffffe00) + 0x400);
        if (iVar3 != 0) {
          FUN_00a8e5b0(iVar3);
          *(int *)(uVar9 + 0x18) = iVar3;
          goto LAB_00b095d8;
        }
        uVar14 = 0x64a;
        uVar13 = 0x11a;
      }
LAB_00b09fb5:
      uVar12 = 0x28;
LAB_00b09fba:
      FUN_00a7f3c0(0x14,0x9b,uVar13,".\\ssl\\s3_srvr.c",uVar14);
LAB_00b09fc9:
      FUN_00b00df0(param_1,2,uVar12);
    }
    else {
LAB_00b095d8:
      uVar9 = *(uint *)(iVar3 + 0x10);
      local_70[1] = *(uint *)(iVar3 + 0x14);
      *(undefined4 *)(param_1[0x16] + 0x370) = 1;
LAB_00b09a66:
      local_70[0] = uVar9;
LAB_00b09a6a:
      uVar5 = local_70[0];
      local_88 = 0;
      uVar9 = local_70[0];
      while ((uVar9 != 0 && (local_88 < 4))) {
        iVar6 = FUN_00a9a920(local_70[local_88]);
        iVar6 = (int)(iVar6 + 7 + (iVar6 + 7 >> 0x1f & 7U)) >> 3;
        aiStack_38[local_88] = iVar6;
        if ((local_88 == 2) && ((local_60 & 0x400) != 0)) {
          local_8c = local_8c + 1;
        }
        else {
          local_8c = local_8c + 2;
        }
        local_8c = local_8c + iVar6;
        local_88 = local_88 + 1;
        uVar9 = local_70[local_88];
      }
      iVar6 = *(int *)(param_1[0x16] + 0x344);
      if (((*(byte *)(iVar6 + 0x10) & 4) == 0) && ((*(uint *)(iVar6 + 0xc) & 0x100) == 0)) {
        piStack_78 = (int *)FUN_00afaa90(param_1,iVar6,&local_58);
        if (piStack_78 != (int *)0x0) {
          iVar6 = FUN_00a81360(piStack_78);
          goto LAB_00b09b13;
        }
        uVar12 = 0x32;
        goto LAB_00b09fc9;
      }
      iVar6 = 0;
      piStack_78 = (int *)0x0;
LAB_00b09b13:
      iVar6 = FUN_00a92b40(local_74,local_8c + iVar6 + 4);
      if (iVar6 == 0) {
        FUN_00a7f3c0(0x14,0x9b,7,".\\ssl\\s3_srvr.c",0x74f);
        goto LAB_00b09fd5;
      }
      puVar10 = *(undefined **)(param_1[0xf] + 4);
      pcVar11 = puVar10 + 4;
      local_88 = 0;
      local_74 = puVar10;
      _Size = local_84;
      _Src = local_7c;
      while ((local_84 = _Size, local_7c = _Src, uVar5 != 0 && (local_88 < 4))) {
        if ((local_88 == 2) && ((local_60 & 0x400) != 0)) {
          *pcVar11 = cStack_30;
          pcVar11 = pcVar11 + 1;
        }
        else {
          *pcVar11 = (char)((uint)aiStack_38[local_88] >> 8);
          pcVar11[1] = *(char *)(aiStack_38 + local_88);
          pcVar11 = pcVar11 + 2;
        }
        FUN_00a9ad90(local_70[local_88],pcVar11);
        pcVar11 = pcVar11 + aiStack_38[local_88];
        local_88 = local_88 + 1;
        uVar5 = local_70[local_88];
        _Size = local_84;
        _Src = local_7c;
      }
      if ((local_60 & 0x80) != 0) {
        *pcVar11 = '\x03';
        pcVar11[1] = '\0';
        pcVar11[2] = (char)local_54;
        pcVar11[3] = (char)_Size;
        _memcpy(pcVar11 + 4,_Src,_Size);
        FUN_00a85120(_Src);
        local_7c = (void *)0x0;
        pcVar11 = pcVar11 + 4 + _Size;
        puVar10 = local_74;
      }
      if ((local_60 & 0x100) != 0) {
        pcVar7 = *(char **)(param_1[0x39] + 0x14c);
        pcVar8 = pcVar7 + 1;
        do {
          cVar1 = *pcVar7;
          pcVar7 = pcVar7 + 1;
        } while (cVar1 != '\0');
        *pcVar11 = (char)((uint)((int)pcVar7 - (int)pcVar8) >> 8);
        pcVar8 = *(char **)(param_1[0x39] + 0x14c);
        cVar1 = (char)pcVar8;
        do {
          cVar2 = *pcVar8;
          pcVar8 = pcVar8 + 1;
        } while (cVar2 != '\0');
        pcVar11[1] = (char)pcVar8 - (cVar1 + '\x01');
        pcVar8 = *(char **)(param_1[0x39] + 0x14c);
        pcVar7 = pcVar8;
        do {
          cVar1 = *pcVar7;
          pcVar7 = pcVar7 + 1;
        } while (cVar1 != '\0');
        _strncpy(pcVar11 + 2,pcVar8,(int)pcVar7 - (int)(pcVar8 + 1));
        pcVar7 = *(char **)(param_1[0x39] + 0x14c);
        pcVar8 = pcVar7 + 1;
        do {
          cVar1 = *pcVar7;
          pcVar7 = pcVar7 + 1;
        } while (cVar1 != '\0');
        pcVar11 = pcVar11 + 2 + ((int)pcVar7 - (int)pcVar8);
        puVar10 = local_74;
      }
      if (piStack_78 == (int *)0x0) {
LAB_00b09dee:
        *puVar10 = 0xc;
        puVar10[3] = (char)local_8c;
        puVar10[1] = (char)((uint)local_8c >> 0x10);
        puVar10[2] = (char)((uint)local_8c >> 8);
        param_1[0x11] = (uint)(local_8c + 4);
        param_1[0x12] = 0;
        goto LAB_00b09e17;
      }
      if ((*piStack_78 == 6) && (((*param_1 & 0xffffff00) != 0x300 || ((int)*param_1 < 0x303)))) {
        puVar10 = auStack_28;
        local_84 = 0;
        iVar6 = 2;
        do {
          FUN_00a92640(local_50,8);
          if (iVar6 == 2) {
            uVar13 = *(undefined4 *)(param_1[0x39] + 0x8c);
          }
          else {
            uVar13 = *(undefined4 *)(param_1[0x39] + 0x90);
          }
          FUN_00a91380(local_50,uVar13,0);
          FUN_00a91530(local_50,param_1[0x16] + 0xc0,0x20);
          FUN_00a91530(local_50,param_1[0x16] + 0xa0,0x20);
          FUN_00a91530(local_50,local_74 + 4,local_8c);
          FUN_00a91540(local_50,puVar10,&local_88);
          local_84 = local_84 + local_88;
          iVar6 = iVar6 + -1;
          puVar10 = puVar10 + local_88;
        } while (0 < iVar6);
        iVar6 = FUN_00aa97a0(0x72,auStack_28,local_84,pcVar11 + 2,&iStack_5c,piStack_78[5]);
        if (0 < iVar6) {
          *pcVar11 = (char)((uint)iStack_5c >> 8);
          pcVar11[1] = (char)iStack_5c;
          local_8c = local_8c + iStack_5c + 2;
          puVar10 = local_74;
          goto LAB_00b09dee;
        }
        FUN_00a7f3c0(0x14,0x9b,4,".\\ssl\\s3_srvr.c",0x7a4);
      }
      else {
        if (local_58 == 0) {
          uVar14 = 0x7d2;
          uVar13 = 0xfb;
          goto LAB_00b09fb5;
        }
        if (((*param_1 & 0xffffff00) == 0x300) && (0x302 < (int)*param_1)) {
          iVar6 = FUN_00b08720(pcVar11,piStack_78,local_58);
          if (iVar6 == 0) {
            uVar14 = 0x7b6;
            uVar12 = 0x50;
            uVar13 = 0x44;
            goto LAB_00b09fba;
          }
          pcVar11 = pcVar11 + 2;
        }
        FUN_00a91380(local_50,local_58,0);
        FUN_00a91530(local_50,param_1[0x16] + 0xc0,0x20);
        FUN_00a91530(local_50,param_1[0x16] + 0xa0,0x20);
        pcVar8 = local_8c;
        FUN_00a91530(local_50,puVar10 + 4,local_8c);
        iVar6 = FUN_00aec430(local_50,pcVar11 + 2,&local_88,piStack_78);
        if (iVar6 != 0) {
          *pcVar11 = (char)((uint)local_88 >> 8);
          pcVar11[1] = (char)local_88;
          local_8c = pcVar8 + local_88 + 2;
          if (((*param_1 & 0xffffff00) == 0x300) && (0x302 < (int)*param_1)) {
            local_8c = local_8c + 2;
          }
          goto LAB_00b09dee;
        }
        FUN_00a7f3c0(0x14,0x9b,6,".\\ssl\\s3_srvr.c",0x7c6);
      }
    }
LAB_00b09fd5:
    if (local_7c != (void *)0x0) {
      FUN_00a85120(local_7c);
    }
  }
LAB_00b09fe6:
  FUN_00aa4a20(local_80);
  FUN_00a915c0(local_50);
LAB_00b09e33:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b0a010(uint *param_1)

{
  uint uVar1;
  uint *puVar2;
  int iVar3;
  int iVar4;
  undefined *puVar5;
  undefined4 uVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  int local_18;
  int local_10;
  
  puVar2 = param_1;
  if (param_1[0xd] == 0x2160) {
    uVar1 = param_1[0xf];
    iVar8 = *(int *)(uVar1 + 4);
    param_1 = (uint *)(iVar8 + 5);
    iVar3 = FUN_00b04820(puVar2,param_1);
    *(char *)(iVar8 + 4) = (char)iVar3;
    param_1 = (uint *)((int)param_1 + iVar3);
    iVar8 = iVar3 + 1;
    if (((*puVar2 & 0xffffff00) == 0x300) && (0x302 < (int)*puVar2)) {
      iVar8 = FUN_00b05e20(puVar2,(undefined *)((int)param_1 + 2));
      *(char *)param_1 = (char)((uint)iVar8 >> 8);
      *(char *)((int)param_1 + 1) = (char)iVar8;
      param_1 = (uint *)((int)param_1 + iVar8 + 4);
      iVar8 = iVar3 + 3 + iVar8;
    }
    param_1 = (uint *)((int)param_1 + 2);
    iVar9 = iVar8 + 2;
    iVar3 = FUN_00affa40(puVar2);
    local_18 = 0;
    local_18._0_2_ = 0;
    if (iVar3 != 0) {
      local_10 = 0;
      iVar4 = FUN_00a80ed0(iVar3);
      if (0 < iVar4) {
        do {
          uVar6 = FUN_00a80ee0(iVar3,local_10);
          iVar4 = FUN_00a88d90(uVar6,0);
          iVar7 = FUN_00a92b40(uVar1,iVar4 + 6 + iVar9);
          if (iVar7 == 0) {
            FUN_00a7f3c0(0x14,0x96,7,".\\ssl\\s3_srvr.c",0x819);
            return 0xffffffff;
          }
          puVar5 = (undefined *)(*(int *)(uVar1 + 4) + 4 + iVar9);
          if ((puVar2[0x40] & 0x20000000) == 0) {
            *puVar5 = (char)((uint)iVar4 >> 8);
            puVar5[1] = (char)iVar4;
            param_1 = (uint *)(puVar5 + 2);
            FUN_00a88d90(uVar6,&param_1);
            local_18 = local_18 + 2;
            iVar7 = iVar4 + 2;
          }
          else {
            param_1 = (uint *)puVar5;
            FUN_00a88d90(uVar6,&param_1);
            puVar5[1] = (char)(iVar4 + -2);
            *puVar5 = (char)((uint)(iVar4 + -2) >> 8);
            iVar7 = iVar4;
          }
          local_18 = local_18 + iVar4;
          iVar9 = iVar7 + iVar9;
          local_10 = local_10 + 1;
          iVar4 = FUN_00a80ed0(iVar3);
        } while (local_10 < iVar4);
      }
    }
    puVar5 = (undefined *)(*(int *)(uVar1 + 4) + 4 + iVar8);
    *puVar5 = (char)((ushort)(undefined2)local_18 >> 8);
    puVar5[1] = (char)(undefined2)local_18;
    puVar5 = *(undefined **)(uVar1 + 4);
    *puVar5 = 0xd;
    puVar5[3] = (char)iVar9;
    puVar5[1] = (char)((uint)iVar9 >> 0x10);
    puVar5[2] = (char)((uint)iVar9 >> 8);
    puVar2[0x11] = iVar9 + 4U;
    puVar2[0x12] = 0;
    puVar5 = (undefined *)(*(int *)(puVar2[0xf] + 4) + iVar9 + 4U);
    *puVar5 = 0xe;
    puVar5[1] = 0;
    puVar5[2] = 0;
    puVar5[3] = 0;
    param_1 = (uint *)(puVar5 + 4);
    puVar2[0x11] = puVar2[0x11] + 4;
    puVar2[0xd] = 0x2161;
  }
  uVar6 = FUN_00b04e10(puVar2,0x16);
  return uVar6;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b0a280(int *param_1)

{
  byte bVar1;
  int *piVar2;
  code *pcVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  byte *pbVar7;
  char cVar8;
  uint uVar9;
  byte *pbVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  undefined4 uStack_2cc;
  uint uStack_2c8;
  int iStack_2c4;
  int local_2c0;
  int local_2bc;
  int local_2b8;
  int *local_2b4;
  int local_2b0;
  undefined auStack_2ac [32];
  undefined auStack_28c [132];
  undefined uStack_208;
  undefined uStack_207;
  undefined auStack_206 [514];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&uStack_2cc;
  local_2c0 = 0;
  local_2b4 = (int *)0x0;
  local_2bc = 0;
  local_2b8 = 0;
  uVar4 = (**(code **)(param_1[2] + 0x30))(param_1,0x2190,0x2191,0x10,0x800,&local_2b0);
  if (local_2b0 == 0) goto LAB_00b0ae2a;
  iVar5 = param_1[0x16];
  pbVar7 = (byte *)param_1[0x10];
  uVar9 = *(uint *)(*(int *)(iVar5 + 0x344) + 0xc);
  if ((uVar9 & 1) == 0) {
    if ((uVar9 & 0xe) == 0) {
      if ((uVar9 & 0xe0) == 0) {
        if ((uVar9 & 0x100) != 0) {
          uVar9 = (uint)CONCAT11(*pbVar7,pbVar7[1]);
          iStack_2c4 = 1;
          uStack_2cc = 0x28;
          if (uVar4 == uVar9 + 2) {
            if (CONCAT11(*pbVar7,pbVar7[1]) < 0x81) {
              pcVar3 = (code *)param_1[0x38];
              if (pcVar3 == (code *)0x0) {
                FUN_00a7f3c0(0x14,0x8b,0xe1,".\\ssl\\s3_srvr.c",0xa96);
              }
              else {
                _memcpy(auStack_28c,pbVar7 + 2,uVar9);
                _memset(auStack_28c + uVar9,0,0x81 - uVar9);
                uVar4 = (*pcVar3)(param_1,auStack_28c,&uStack_208,0x204);
                FUN_00a84330(auStack_28c,0x81);
                if (uVar4 < 0x101) {
                  if (uVar4 == 0) {
                    FUN_00a7f3c0(0x14,0x8b,0xdf,".\\ssl\\s3_srvr.c",0xaac);
                    uStack_2cc = 0x73;
                  }
                  else {
                    _memmove(auStack_206 + uVar4 + 2,&uStack_208,uVar4);
                    uStack_2c8 = uVar4 >> 8;
                    uStack_208 = (undefined)(uVar4 >> 8);
                    uStack_207 = (char)uVar4;
                    _memset(auStack_206,0,uVar4);
                    auStack_206[uVar4] = (undefined)uStack_2c8;
                    auStack_206[uVar4 + 1] = (char)uVar4;
                    if (*(int *)(param_1[0x30] + 0x90) != 0) {
                      FUN_00a85120(*(int *)(param_1[0x30] + 0x90));
                    }
                    uVar11 = FUN_00a852b0(pbVar7 + 2);
                    *(undefined4 *)(param_1[0x30] + 0x90) = uVar11;
                    if (*(int *)(param_1[0x30] + 0x90) == 0) {
                      uVar11 = 0xac0;
                    }
                    else {
                      iVar5 = *(int *)(param_1[0x30] + 0x8c);
                      if (iVar5 != 0) {
                        FUN_00a85120(iVar5);
                      }
                      uVar11 = FUN_00a852b0(*(undefined4 *)(param_1[0x39] + 0x14c));
                      *(undefined4 *)(param_1[0x30] + 0x8c) = uVar11;
                      if ((*(int *)(param_1[0x39] + 0x14c) == 0) ||
                         (*(int *)(param_1[0x30] + 0x8c) != 0)) {
                        uVar11 = (**(code **)(*(int *)(param_1[2] + 100) + 0xc))
                                           (param_1,param_1[0x30] + 0x14,&uStack_208,uVar4 * 2 + 4);
                        *(undefined4 *)(param_1[0x30] + 0x10) = uVar11;
                        iStack_2c4 = 0;
                        goto LAB_00b0ab3f;
                      }
                      uVar11 = 0xacb;
                    }
                    FUN_00a7f3c0(0x14,0x8b,0x41,".\\ssl\\s3_srvr.c",uVar11);
                  }
                }
                else {
                  FUN_00a7f3c0(0x14,0x8b,0x44,".\\ssl\\s3_srvr.c",0xaa5);
                }
              }
            }
            else {
              FUN_00a7f3c0(0x14,0x8b,0x92,".\\ssl\\s3_srvr.c",0xa90);
            }
          }
          else {
            FUN_00a7f3c0(0x14,0x8b,0x9f,".\\ssl\\s3_srvr.c",0xa8a);
          }
LAB_00b0ab3f:
          FUN_00a84330(&uStack_208,0x204);
          if (iStack_2c4 == 0) goto LAB_00b0ae2a;
          goto LAB_00b0ade1;
        }
        if ((uVar9 & 0x400) != 0) {
          if ((int)(CONCAT11(*pbVar7,pbVar7[1]) + 2) <= (int)uVar4) {
            iVar5 = FUN_00a9acb0(pbVar7 + 2,(uint)CONCAT11(*pbVar7,pbVar7[1]),0);
            param_1[0x6e] = iVar5;
            if (iVar5 == 0) {
              FUN_00a7f3c0(0x14,0x8b,3,".\\ssl\\s3_srvr.c",0xae9);
            }
            else {
              if (*(int *)(param_1[0x30] + 0xf0) != 0) {
                FUN_00a85120(*(int *)(param_1[0x30] + 0xf0));
              }
              uVar11 = FUN_00a852b0(param_1[0x69]);
              *(undefined4 *)(param_1[0x30] + 0xf0) = uVar11;
              if (*(int *)(param_1[0x30] + 0xf0) == 0) {
                uVar11 = 0xaf2;
                goto LAB_00b0a5d8;
              }
              uVar11 = FUN_00b02d10(param_1,param_1[0x30] + 0x14);
              *(undefined4 *)(param_1[0x30] + 0x10) = uVar11;
              if (-1 < *(int *)(param_1[0x30] + 0x10)) goto LAB_00b0ae2a;
              FUN_00a7f3c0(0x14,0x8b,0x44,".\\ssl\\s3_srvr.c",0xaf8);
            }
            goto LAB_00b0adf1;
          }
          uVar12 = 0xae4;
          uStack_2cc = 0x32;
          uVar11 = 0x15b;
          goto LAB_00b0add2;
        }
        if ((uVar9 & 0x200) == 0) {
          uVar12 = 0xb4c;
          uVar11 = 0xf9;
          goto LAB_00b0adca;
        }
        uStack_2c8 = 0x20;
        uVar4 = *(uint *)(*(int *)(iVar5 + 0x344) + 0x10);
        cVar8 = '\0';
        uVar11 = 0;
        if ((uVar4 & 0x100) == 0) {
          if ((uVar4 & 0x200) != 0) {
            uVar11 = *(undefined4 *)(param_1[0x26] + 0x88);
          }
        }
        else {
          uVar11 = *(undefined4 *)(param_1[0x26] + 0x7c);
        }
        uVar11 = FUN_00a98af0(uVar11,0);
        FUN_00aecd20(uVar11);
        iStack_2c4 = FUN_00a82c40(*(undefined4 *)(param_1[0x30] + 0x9c));
        if ((iStack_2c4 != 0) && (iVar5 = FUN_00aece70(uVar11,iStack_2c4), iVar5 < 1)) {
          FUN_00a7f4b0();
        }
        if (*pbVar7 == 0x30) {
          bVar1 = pbVar7[1];
          if (bVar1 == 0x81) {
            bVar1 = pbVar7[2];
            pbVar7 = pbVar7 + 3;
          }
          else {
            if (0x7f < bVar1) {
              uVar12 = 0xb2e;
              goto LAB_00b0ad87;
            }
            pbVar7 = pbVar7 + 2;
          }
          iVar5 = FUN_00aecd90(uVar11,auStack_2ac,&uStack_2c8,pbVar7,bVar1);
          if (iVar5 < 1) {
            uVar12 = 0xb34;
            goto LAB_00b0ad87;
          }
          uVar12 = (**(code **)(*(int *)(param_1[2] + 100) + 0xc))
                             (param_1,param_1[0x30] + 0x14,auStack_2ac,0x20);
          *(undefined4 *)(param_1[0x30] + 0x10) = uVar12;
          iVar5 = FUN_00a988b0(uVar11,0xffffffff,0xffffffff,2,2,0);
          cVar8 = (0 < iVar5) + '\x01';
        }
        else {
          uVar12 = 0xb1f;
LAB_00b0ad87:
          FUN_00a7f3c0(0x14,0x8b,0x93,".\\ssl\\s3_srvr.c",uVar12);
        }
        FUN_00a816d0(iStack_2c4);
        FUN_00a98850(uVar11);
        if (cVar8 != '\0') goto LAB_00b0ae2a;
      }
      else {
        iStack_2c4 = 1;
        local_2c0 = FUN_00a8e8a0();
        if (local_2c0 == 0) {
          uVar11 = 0x9ec;
        }
        else {
          if ((uVar9 & 0x60) == 0) {
            uStack_2c8 = *(uint *)(param_1[0x16] + 0x34c);
          }
          else {
            uStack_2c8 = *(uint *)(*(int *)(param_1[0x26] + 0x70) + 0x14);
          }
          uStack_2cc = FUN_00a7fa30(uStack_2c8);
          uStack_2c8 = FUN_00aa3450(uStack_2c8);
          iVar5 = FUN_00a8ec70(local_2c0,uStack_2cc);
          if ((iVar5 == 0) || (iVar5 = FUN_00a8eca0(local_2c0,uStack_2c8), iVar5 == 0)) {
            FUN_00a7f3c0(0x14,0x8b,0x10,".\\ssl\\s3_srvr.c",0xa05);
            goto LAB_00b0adf1;
          }
          local_2bc = FUN_00aa3960(uStack_2cc);
          if (local_2bc == 0) {
            uVar11 = 0xa0d;
          }
          else {
            if (uVar4 == 0) {
              if ((char)uVar9 < '\0') {
                uVar12 = 0xa18;
                uVar11 = 0x137;
              }
              else {
                local_2b4 = (int *)FUN_00a82c40(*(undefined4 *)(param_1[0x30] + 0x9c));
                if ((local_2b4 != (int *)0x0) && (*local_2b4 == 0x198)) {
                  uVar11 = FUN_00a989a0(local_2b4[5]);
                  iVar5 = FUN_00aa3a80(local_2bc,uVar11);
                  if (iVar5 != 0) {
                    iStack_2c4 = 2;
                    goto LAB_00b0a7a8;
                  }
                  FUN_00a7f3c0(0x14,0x8b,0x10,".\\ssl\\s3_srvr.c",0xa34);
                  goto LAB_00b0adf1;
                }
                uVar12 = 0xa2c;
                uVar11 = 0x139;
              }
              goto LAB_00b0adca;
            }
            local_2b8 = FUN_00aa49c0();
            if (local_2b8 != 0) {
              if (uVar4 == *pbVar7 + 1) {
                iVar5 = FUN_00ae8fb0(uStack_2cc,local_2bc,pbVar7 + 1,(uint)*pbVar7,local_2b8);
                if (iVar5 == 0) {
                  FUN_00a7f3c0(0x14,0x8b,0x10,".\\ssl\\s3_srvr.c",0xa52);
                }
                else {
                  pbVar7 = *(byte **)(param_1[0xf] + 4);
LAB_00b0a7a8:
                  iVar6 = FUN_00aa3760(uStack_2cc);
                  iVar5 = local_2bc;
                  if (iVar6 < 1) {
                    FUN_00a7f3c0(0x14,0x8b,0x2b,".\\ssl\\s3_srvr.c",0xa60);
                  }
                  else {
                    iVar6 = FUN_00ae2380(pbVar7,(int)(iVar6 + 7 + (iVar6 + 7 >> 0x1f & 7U)) >> 3,
                                         local_2bc,local_2c0,0);
                    if (0 < iVar6) {
                      FUN_00a816d0(local_2b4);
                      FUN_00aa3a10(iVar5);
                      FUN_00a8e900(local_2c0);
                      FUN_00aa4a20(local_2b8);
                      FUN_00a8e900(*(undefined4 *)(param_1[0x16] + 0x34c));
                      *(undefined4 *)(param_1[0x16] + 0x34c) = 0;
                      uVar11 = (**(code **)(*(int *)(param_1[2] + 100) + 0xc))
                                         (param_1,param_1[0x30] + 0x14,pbVar7,iVar6);
                      *(undefined4 *)(param_1[0x30] + 0x10) = uVar11;
                      FUN_00a84330(pbVar7,iVar6);
                      goto LAB_00b0ae2a;
                    }
                    FUN_00a7f3c0(0x14,0x8b,0x2b,".\\ssl\\s3_srvr.c",0xa67);
                  }
                }
              }
              else {
                FUN_00a7f3c0(0x14,0x8b,0x10,".\\ssl\\s3_srvr.c",0xa4b);
              }
              goto LAB_00b0adf1;
            }
            uVar11 = 0xa41;
          }
        }
LAB_00b0a5d8:
        FUN_00a7f3c0(0x14,0x8b,0x41,".\\ssl\\s3_srvr.c",uVar11);
      }
    }
    else {
      uVar9 = (uint)CONCAT11(*pbVar7,pbVar7[1]);
      pbVar10 = pbVar7 + 2;
      if ((uVar4 == CONCAT11(*pbVar7,pbVar7[1]) + 2) ||
         (uVar9 = uVar4, pbVar10 = pbVar7, (*(byte *)(param_1 + 0x40) & 0x80) != 0)) {
        if (uVar4 == 0) {
          uVar12 = 0x8f3;
          uVar11 = 0xec;
        }
        else {
          iVar5 = *(int *)(iVar5 + 0x348);
          if (iVar5 != 0) {
            iVar6 = FUN_00a9acb0(pbVar10,uVar9,0);
            if (iVar6 == 0) {
              FUN_00a7f3c0(0x14,0x8b,0x82,".\\ssl\\s3_srvr.c",0x905);
            }
            else {
              iVar5 = FUN_00aa52b0(pbVar10,iVar6,iVar5);
              if (0 < iVar5) {
                FUN_00a8ef50(*(undefined4 *)(param_1[0x16] + 0x348));
                *(undefined4 *)(param_1[0x16] + 0x348) = 0;
                FUN_00a9a950(iVar6);
                uVar11 = (**(code **)(*(int *)(param_1[2] + 100) + 0xc))
                                   (param_1,param_1[0x30] + 0x14,pbVar10,iVar5);
                *(undefined4 *)(param_1[0x30] + 0x10) = uVar11;
                FUN_00a84330(pbVar10,iVar5);
                goto LAB_00b0ae2a;
              }
              FUN_00a7f3c0(0x14,0x8b,5,".\\ssl\\s3_srvr.c",0x90d);
              FUN_00a9a950(iVar6);
            }
            goto LAB_00b0adf1;
          }
          uVar12 = 0x8fb;
          uVar11 = 0xab;
        }
        goto LAB_00b0adca;
      }
      FUN_00a7f3c0(0x14,0x8b,0x94,".\\ssl\\s3_srvr.c",0x8e6);
    }
LAB_00b0adf1:
    FUN_00a816d0(local_2b4);
    FUN_00aa3a10(local_2bc);
    if (local_2c0 != 0) {
      FUN_00a8e900(local_2c0);
    }
    FUN_00aa4a20(local_2b8);
  }
  else {
    if (*(int *)(iVar5 + 0x370) == 0) {
      piVar2 = *(int **)(param_1[0x26] + 0x34);
      if (((piVar2 == (int *)0x0) || (*piVar2 != 6)) || (iVar5 = piVar2[5], iVar5 == 0)) {
        uVar12 = 0x88e;
        uVar11 = 0xa8;
        goto LAB_00b0adca;
      }
    }
    else if ((param_1[0x26] == 0) || (iVar5 = *(int *)(param_1[0x26] + 0x18), iVar5 == 0)) {
      uVar12 = 0x881;
      uVar11 = 0xad;
LAB_00b0adca:
      uStack_2cc = 0x28;
LAB_00b0add2:
      FUN_00a7f3c0(0x14,0x8b,uVar11,".\\ssl\\s3_srvr.c",uVar12);
LAB_00b0ade1:
      FUN_00b00df0(param_1,2,uStack_2cc);
      goto LAB_00b0adf1;
    }
    uVar9 = uVar4;
    pbVar10 = pbVar7;
    if ((0x300 < *param_1) && (*param_1 != 0x100)) {
      uVar9 = (uint)CONCAT11(*pbVar7,pbVar7[1]);
      pbVar10 = pbVar7 + 2;
      if ((uVar4 != CONCAT11(*pbVar7,pbVar7[1]) + 2) &&
         (uVar9 = uVar4, pbVar10 = pbVar7, (param_1[0x40] & 0x100U) == 0)) {
        FUN_00a7f3c0(0x14,0x8b,0xea,".\\ssl\\s3_srvr.c",0x89c);
        goto LAB_00b0adf1;
      }
    }
    iVar5 = FUN_00ad1250(uVar9,pbVar10,pbVar10,iVar5,1);
    if (iVar5 == 0x30) {
      if ((((uint)*pbVar10 != param_1[0x44] >> 8) || (pbVar10[1] != (byte)param_1[0x44])) &&
         (((param_1[0x40] & 0x800000U) == 0 ||
          (((uint)*pbVar10 != *param_1 >> 8 || (pbVar10[1] != (byte)*param_1))))))
      goto LAB_00b0a3f2;
    }
    else {
LAB_00b0a3f2:
      FUN_00a7f4b0();
      *pbVar10 = (byte)((uint)param_1[0x44] >> 8);
      pbVar10[1] = *(byte *)(param_1 + 0x44);
      iVar5 = FUN_00a86ec0(pbVar10 + 2,0x2e);
      if (iVar5 < 1) goto LAB_00b0adf1;
    }
    uVar11 = (**(code **)(*(int *)(param_1[2] + 100) + 0xc))
                       (param_1,param_1[0x30] + 0x14,pbVar10,0x30);
    *(undefined4 *)(param_1[0x30] + 0x10) = uVar11;
    FUN_00a84330(pbVar10,0x30);
  }
LAB_00b0ae2a:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b0ae50(uint *param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  undefined *puVar5;
  undefined *puVar6;
  undefined4 uVar7;
  char *_Format;
  undefined4 uVar8;
  int *piStack_70;
  undefined4 local_6c;
  uint local_68;
  int local_64;
  int local_60;
  undefined local_5c [24];
  undefined auStack_44 [63];
  undefined uStack_5;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&piStack_70;
  local_6c = 0;
  local_68 = 0;
  local_64 = 0;
  FUN_00a91330(local_5c);
  iVar2 = (**(code **)(param_1[2] + 0x30))(param_1,0x21a0,0x21a1,0xffffffff,0x204,&local_60);
  if (local_60 == 0) goto LAB_00b0b3b1;
  iVar4 = *(int *)(param_1[0x30] + 0x9c);
  if (iVar4 == 0) {
    uVar3 = local_68 & 0xff;
    iVar4 = 0;
    piStack_70 = (int *)0x0;
  }
  else {
    piStack_70 = (int *)FUN_00a82c40(iVar4);
    uVar3 = FUN_00b550d0(iVar4,piStack_70);
  }
  uVar1 = param_1[0x16];
  if (*(int *)(uVar1 + 0x340) == 0xf) {
    if (iVar4 == 0) {
      uVar8 = 0xb90;
      uVar7 = 0xba;
LAB_00b0af41:
      FUN_00a7f3c0(0x14,0x88,uVar7,".\\ssl\\s3_srvr.c",uVar8);
      uVar7 = 10;
    }
    else {
      if ((uVar3 & 0x10) == 0) {
        FUN_00a7f3c0(0x14,0x88,0xdc,".\\ssl\\s3_srvr.c",0xb97);
        uVar7 = 0x2f;
        goto LAB_00b0b35c;
      }
      if (*(int *)(uVar1 + 0x180) != 0) {
        uVar8 = 0xb9e;
        uVar7 = 0x85;
        goto LAB_00b0af41;
      }
      puVar6 = (undefined *)param_1[0x10];
      if ((iVar2 == 0x40) && ((*piStack_70 == 0x32c || (*piStack_70 == 0x32b)))) {
        uVar3 = 0x40;
        iVar2 = 0x40;
LAB_00b0afbe:
        iVar4 = FUN_00a81360(piStack_70);
        if ((((int)uVar3 <= iVar4) && (iVar2 <= iVar4)) && (0 < iVar2)) {
          if (((*param_1 & 0xffffff00) == 0x300) && (0x302 < (int)*param_1)) {
            iVar2 = FUN_00a83650(*(undefined4 *)(param_1[0x16] + 0x178),3,0,&local_68);
            if (iVar2 < 1) {
              uVar7 = 0xbe5;
              goto LAB_00b0b066;
            }
            iVar4 = FUN_00a91380(local_5c,local_64,0);
            if (iVar4 != 0) {
              iVar2 = FUN_00a91530(local_5c,local_68,iVar2);
              if (iVar2 != 0) {
                iVar2 = FUN_00ad9320(local_5c,puVar6,uVar3,piStack_70);
                if (0 < iVar2) goto LAB_00b0b332;
                uVar7 = 0x33;
                FUN_00a7f3c0(0x14,0x88,0x7b,".\\ssl\\s3_srvr.c",0xbf8);
                goto LAB_00b0b35c;
              }
            }
            uVar7 = 0xbf0;
            uVar8 = 6;
LAB_00b0b06d:
            FUN_00a7f3c0(0x14,0x88,uVar8,".\\ssl\\s3_srvr.c",uVar7);
            uVar7 = 0x50;
          }
          else {
            iVar2 = *piStack_70;
            if (iVar2 == 6) {
              iVar2 = FUN_00aa9d60(0x72,param_1[0x16] + 0x1b4,0x24,puVar6,uVar3,piStack_70[5]);
              if (iVar2 < 0) {
                uVar7 = 0x33;
                FUN_00a7f3c0(0x14,0x88,0x76,".\\ssl\\s3_srvr.c",0xc06);
              }
              else {
                if (iVar2 != 0) goto LAB_00b0b332;
                uVar7 = 0x33;
                FUN_00a7f3c0(0x14,0x88,0x7a,".\\ssl\\s3_srvr.c",0xc0c);
              }
            }
            else if (iVar2 == 0x74) {
              iVar2 = FUN_00aad9e0(piStack_70[1],param_1[0x16] + 0x1c4,0x14,puVar6,uVar3,
                                   piStack_70[5]);
              if (0 < iVar2) goto LAB_00b0b332;
              uVar7 = 0x33;
              FUN_00a7f3c0(0x14,0x88,0x70,".\\ssl\\s3_srvr.c",0xc1c);
            }
            else if (iVar2 == 0x198) {
              iVar2 = FUN_00aad670(piStack_70[1],param_1[0x16] + 0x1c4,0x14,puVar6,uVar3,
                                   piStack_70[5]);
              if (0 < iVar2) {
LAB_00b0b332:
                local_6c = 1;
                goto LAB_00b0b36b;
              }
              uVar8 = 0xc2d;
LAB_00b0b26e:
              uVar7 = 0x33;
              FUN_00a7f3c0(0x14,0x88,0x131,".\\ssl\\s3_srvr.c",uVar8);
            }
            else {
              if ((iVar2 == 0x32c) || (iVar2 == 0x32b)) {
                uVar7 = FUN_00a98af0(piStack_70,0);
                FUN_00aecb00(uVar7);
                if (uVar3 != 0x40) {
                  _Format = "GOST signature length is %d";
                  iVar2 = FUN_00a475e9("GOST signature length is %d",uVar3);
                  _fprintf((FILE *)(iVar2 + 0x40),_Format);
                }
                iVar2 = 0;
                puVar5 = &uStack_5;
                do {
                  *puVar5 = puVar6[iVar2];
                  iVar2 = iVar2 + 1;
                  puVar5 = puVar5 + -1;
                } while (iVar2 < 0x40);
                iVar2 = FUN_00aecb60(uVar7,auStack_44,0x40,param_1[0x16] + 0x1b4,0x20);
                FUN_00a98850(uVar7);
                if (iVar2 < 1) {
                  uVar8 = 0xc44;
                  goto LAB_00b0b26e;
                }
                goto LAB_00b0b332;
              }
              FUN_00a7f3c0(0x14,0x88,0x44,".\\ssl\\s3_srvr.c",0xc4a);
              uVar7 = 0x2b;
            }
          }
          goto LAB_00b0b35c;
        }
        uVar8 = 0xbd9;
        uVar7 = 0x109;
      }
      else if (((*param_1 & 0xffffff00) == 0x300) && (0x302 < (int)*param_1)) {
        uVar3 = FUN_00b078d0(piStack_70);
        if (uVar3 == 0xffffffff) {
          uVar7 = 0xbb5;
LAB_00b0b066:
          uVar8 = 0x44;
          goto LAB_00b0b06d;
        }
        if (uVar3 == (byte)puVar6[1]) {
          local_64 = FUN_00b07900(*puVar6);
          if (local_64 != 0) {
            puVar6 = puVar6 + 2;
            iVar2 = iVar2 + -2;
            goto LAB_00b0b0cd;
          }
          uVar8 = 0xbc3;
          uVar7 = 0x170;
        }
        else {
          uVar8 = 0xbbc;
          uVar7 = 0x172;
        }
      }
      else {
LAB_00b0b0cd:
        uVar3 = (uint)CONCAT11(*puVar6,puVar6[1]);
        iVar2 = iVar2 + -2;
        puVar6 = puVar6 + 2;
        if ((int)uVar3 <= iVar2) goto LAB_00b0afbe;
        uVar8 = 0xbd1;
        uVar7 = 0x9f;
      }
      FUN_00a7f3c0(0x14,0x88,uVar7,".\\ssl\\s3_srvr.c",uVar8);
      uVar7 = 0x32;
    }
LAB_00b0b35c:
    FUN_00b00df0(param_1,2,uVar7);
  }
  else {
    *(undefined4 *)(uVar1 + 0x354) = 1;
    if ((iVar4 != 0) && ((uVar3 & 0x10) != 0)) {
      uVar7 = 10;
      FUN_00a7f3c0(0x14,0x88,0xae,".\\ssl\\s3_srvr.c",0xb87);
      goto LAB_00b0b35c;
    }
    local_6c = 1;
  }
LAB_00b0b36b:
  if (*(int *)(param_1[0x16] + 0x178) != 0) {
    FUN_00a83270(*(int *)(param_1[0x16] + 0x178));
    *(undefined4 *)(param_1[0x16] + 0x178) = 0;
    *(uint *)param_1[0x16] = *(uint *)param_1[0x16] & 0xffffffdf;
  }
  FUN_00a915c0(local_5c);
  FUN_00a816d0(piStack_70);
LAB_00b0b3b1:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00b0b3d0(int *param_1)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  int local_14;
  int local_10;
  int local_8;
  int *piStack_4;
  
  piVar2 = param_1;
  piStack_4 = (int *)0xb0b3da;
  local_10 = 0;
  local_14 = 0;
  iVar3 = (**(code **)(param_1[2] + 0x30))(param_1,0x2180,0x2181,0xffffffff,param_1[0x42],&local_8);
  if (local_8 == 0) {
    return iVar3;
  }
  iVar1 = piVar2[0x16];
  if (*(int *)(iVar1 + 0x340) == 0x10) {
    if (((piVar2[0x32] & 1U) == 0) || ((piVar2[0x32] & 2U) == 0)) {
      if ((*piVar2 < 0x301) || (*(int *)(iVar1 + 0x390) == 0)) {
        *(undefined4 *)(iVar1 + 0x354) = 1;
        return 1;
      }
      FUN_00a7f3c0(0x14,0x89,0xe9,".\\ssl\\s3_srvr.c",0xc80);
      FUN_00b00df0(piVar2,2,10);
    }
    else {
      uVar7 = 0xc79;
LAB_00b0b44b:
      local_10 = 0;
      FUN_00a7f3c0(0x14,0x89,199,".\\ssl\\s3_srvr.c",uVar7);
      FUN_00b00df0(piVar2,2,0x28);
    }
  }
  else if (*(int *)(iVar1 + 0x340) == 0xb) {
    param_1 = (int *)piVar2[0x10];
    local_14 = FUN_00a81010();
    if (local_14 == 0) {
      uVar7 = 0xc92;
LAB_00b0b529:
      FUN_00a7f3c0(0x14,0x89,0x41,".\\ssl\\s3_srvr.c",uVar7);
      goto LAB_00b0b6de;
    }
    uVar6 = (uint)CONCAT21(CONCAT11(*(undefined *)param_1,*(undefined *)((int)param_1 + 1)),
                           *(undefined *)((int)param_1 + 2));
    param_1 = (int *)((int)param_1 + 3);
    if (uVar6 + 3 == iVar3) {
      uVar4 = 0;
      if (uVar6 != 0) {
        do {
          local_10 = 0;
          uVar5 = (uint)CONCAT21(CONCAT11(*(undefined *)param_1,*(undefined *)((int)param_1 + 1)),
                                 *(undefined *)((int)param_1 + 2));
          param_1 = (int *)((int)param_1 + 3);
          uVar4 = uVar5 + 3 + uVar4;
          if (uVar6 < uVar4) {
            uVar7 = 0xca3;
LAB_00b0b686:
            FUN_00a7f3c0(0x14,0x89,0x87,".\\ssl\\s3_srvr.c",uVar7);
            FUN_00b00df0(piVar2,2,0x32);
            goto LAB_00b0b6cd;
          }
          piStack_4 = param_1;
          local_10 = FUN_00a81280(0,&param_1,uVar5);
          if (local_10 == 0) {
            uVar8 = 0xcab;
            uVar7 = 0xd;
LAB_00b0b6be:
            FUN_00a7f3c0(0x14,0x89,uVar7,".\\ssl\\s3_srvr.c",uVar8);
            goto LAB_00b0b6cd;
          }
          if (param_1 != (int *)((int)piStack_4 + uVar5)) {
            uVar7 = 0xcb1;
            goto LAB_00b0b686;
          }
          iVar3 = FUN_00a80df0(local_14,local_10);
          if (iVar3 == 0) {
            uVar8 = 0xcb6;
            uVar7 = 0x41;
            goto LAB_00b0b6be;
          }
        } while (uVar4 < uVar6);
      }
      local_10 = 0;
      iVar3 = FUN_00a80ed0(local_14);
      if (iVar3 < 1) {
        if (*piVar2 == 0x300) {
          FUN_00a7f3c0(0x14,0x89,0xb0,".\\ssl\\s3_srvr.c",0xcc3);
          FUN_00b00df0(piVar2,2,0x28);
        }
        else {
          if (((piVar2[0x32] & 1U) != 0) && ((piVar2[0x32] & 2U) != 0)) {
            uVar7 = 0xcca;
            goto LAB_00b0b44b;
          }
          if ((*(int *)(piVar2[0x16] + 0x178) == 0) || (iVar3 = FUN_00b0f060(piVar2), iVar3 != 0))
          goto LAB_00b0b7aa;
          FUN_00b00df0(piVar2,2,0x50);
        }
      }
      else {
        iVar3 = FUN_00aff900(piVar2,local_14);
        if (0 < iVar3) {
LAB_00b0b7aa:
          if (*(int *)(piVar2[0x30] + 0x9c) != 0) {
            FUN_00a812c0(*(int *)(piVar2[0x30] + 0x9c));
          }
          uVar7 = FUN_00a80e10(local_14);
          *(undefined4 *)(piVar2[0x30] + 0x9c) = uVar7;
          *(int *)(piVar2[0x30] + 0xa0) = piVar2[0x3b];
          if (*(int *)(piVar2[0x30] + 0x98) != 0) {
LAB_00b0b823:
            if (**(int **)(piVar2[0x30] + 0x98) != 0) {
              FUN_00a81120(**(int **)(piVar2[0x30] + 0x98),FUN_00a812c0);
            }
            **(int **)(piVar2[0x30] + 0x98) = local_14;
            return 1;
          }
          uVar7 = FUN_00aff7d0();
          *(undefined4 *)(piVar2[0x30] + 0x98) = uVar7;
          if (*(int *)(piVar2[0x30] + 0x98) != 0) goto LAB_00b0b823;
          uVar7 = 0xcec;
          goto LAB_00b0b529;
        }
        uVar7 = FUN_00b05820(piVar2[0x3b]);
        FUN_00a7f3c0(0x14,0x89,0xb2,".\\ssl\\s3_srvr.c",0xcdb);
        FUN_00b00df0(piVar2,2,uVar7);
      }
    }
    else {
      FUN_00a7f3c0(0x14,0x89,0x9f,".\\ssl\\s3_srvr.c",0xc9a);
      FUN_00b00df0(piVar2,2,0x32);
    }
  }
  else {
    FUN_00a7f3c0(0x14,0x89,0x106,".\\ssl\\s3_srvr.c",0xc8b);
    FUN_00b00df0(piVar2,2,10);
  }
LAB_00b0b6cd:
  if (local_10 != 0) {
    FUN_00a812c0(local_10);
  }
LAB_00b0b6de:
  if (local_14 != 0) {
    FUN_00a81120(local_14,FUN_00a812c0);
  }
  return -1;
}



undefined4 FUN_00b0b870(int param_1)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  
  if (*(int *)(param_1 + 0x34) == 0x2140) {
    iVar2 = FUN_00afaa70(param_1);
    if ((iVar2 == 0) &&
       ((iVar1 = *(int *)(*(int *)(param_1 + 0x58) + 0x344), *(int *)(iVar1 + 0x10) != 0x20 ||
        ((*(byte *)(iVar1 + 0xc) & 0x10) != 0)))) {
      FUN_00a7f3c0(0x14,0x9a,0x44,".\\ssl\\s3_srvr.c",0xd12);
      return 0;
    }
    uVar3 = FUN_00b05260(param_1,iVar2);
    *(undefined4 *)(param_1 + 0x34) = 0x2141;
    *(undefined4 *)(param_1 + 0x44) = uVar3;
    *(undefined4 *)(param_1 + 0x48) = 0;
  }
  uVar3 = FUN_00b04e10(param_1,0x16);
  return uVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b0b8f0(int param_1)

{
  undefined uVar1;
  int iVar2;
  undefined *puVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  size_t _Size;
  undefined *local_198;
  undefined *puStack_194;
  int local_190;
  int local_18c;
  int iStack_188;
  undefined *local_184;
  undefined local_180 [140];
  undefined local_f4 [208];
  undefined4 local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined local_14 [16];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_198;
  if (*(int *)(param_1 + 0x34) == 0x21f0) {
    iVar4 = *(int *)(param_1 + 0x170);
    iVar2 = FUN_00b15520(*(undefined4 *)(param_1 + 0xc0),0);
    local_18c = iVar2;
    if ((0xff00 < iVar2) ||
       (puVar3 = (undefined *)FUN_00a84f80(iVar2,".\\ssl\\s3_srvr.c",0xd39),
       puVar3 == (undefined *)0x0)) goto LAB_00b0bd07;
    local_198 = puVar3;
    FUN_00b15520(*(undefined4 *)(param_1 + 0xc0),&local_198);
    local_184 = puVar3;
    iVar2 = FUN_00b15e60(0,&local_184,iVar2);
    if (iVar2 != 0) {
      *(undefined4 *)(iVar2 + 0x44) = 0;
      local_190 = FUN_00b15520(iVar2,0);
      if (local_190 <= local_18c) {
        local_198 = puVar3;
        FUN_00b15520(iVar2,&local_198);
        FUN_00affbb0(iVar2);
        iVar2 = FUN_00a92a60(*(undefined4 *)(param_1 + 0x3c),local_190 + 0x8a);
        if (iVar2 == 0) goto LAB_00b0bd07;
        local_198 = *(undefined **)(*(int *)(param_1 + 0x3c) + 4);
        *local_198 = 4;
        local_198 = local_198 + 4;
        FUN_00aab350(local_180);
        FUN_00acbe80(local_f4);
        if (*(code **)(iVar4 + 0x138) == (code *)0x0) {
          FUN_00a86ec0(local_14,0x10);
          uVar5 = FUN_00a957c0(0,iVar4 + 0x128,local_14);
          FUN_00aabdf0(local_180,uVar5);
          uVar5 = FUN_00a92530(0);
          FUN_00acbbc0(local_f4,iVar4 + 0x118,0x10,uVar5);
          local_24 = *(undefined4 *)(iVar4 + 0x108);
          local_20 = *(undefined4 *)(iVar4 + 0x10c);
          local_1c = *(undefined4 *)(iVar4 + 0x110);
          local_18 = *(undefined4 *)(iVar4 + 0x114);
        }
        else {
          iVar4 = (**(code **)(iVar4 + 0x138))(param_1,&local_24,local_14,local_180,local_f4,1);
          if (iVar4 < 0) goto LAB_00b0ba50;
        }
        if (*(int *)(param_1 + 0x6c) == 0) {
          uVar1 = (undefined)((uint)*(undefined4 *)(*(int *)(param_1 + 0xc0) + 0xa8) >> 0x18);
        }
        else {
          uVar1 = 0;
        }
        *local_198 = uVar1;
        if (*(int *)(param_1 + 0x6c) == 0) {
          uVar1 = (undefined)((uint)*(undefined4 *)(*(int *)(param_1 + 0xc0) + 0xa8) >> 0x10);
        }
        else {
          uVar1 = 0;
        }
        local_198[1] = uVar1;
        if (*(int *)(param_1 + 0x6c) == 0) {
          uVar1 = (undefined)((uint)*(undefined4 *)(*(int *)(param_1 + 0xc0) + 0xa8) >> 8);
        }
        else {
          uVar1 = 0;
        }
        local_198[2] = uVar1;
        if (*(int *)(param_1 + 0x6c) == 0) {
          uVar1 = (undefined)*(undefined4 *)(*(int *)(param_1 + 0xc0) + 0xa8);
        }
        else {
          uVar1 = 0;
        }
        local_198[3] = uVar1;
        puVar6 = (undefined4 *)(local_198 + 6);
        *puVar6 = local_24;
        *(undefined4 *)(local_198 + 10) = local_20;
        *(undefined4 *)(local_198 + 0xe) = local_1c;
        *(undefined4 *)(local_198 + 0x12) = local_18;
        local_198 = local_198 + 0x16;
        _Size = FUN_00a82a40(local_180);
        _memcpy(local_198,local_14,_Size);
        iVar4 = FUN_00a82a40(local_180);
        local_198 = local_198 + iVar4;
        FUN_00aab370(local_180,local_198,&puStack_194,puVar3,local_190);
        local_198 = local_198 + (int)puStack_194;
        thunk_FUN_00aab500(local_180,local_198,&puStack_194);
        local_198 = local_198 + (int)puStack_194;
        FUN_00aab890(local_180);
        FUN_00acbdc0(local_f4,puVar6,(int)local_198 - (int)puVar6);
        FUN_00acbdd0(local_f4,local_198,&iStack_188);
        FUN_00acbf20(local_f4);
        puStack_194 = local_198 + (iStack_188 - *(int *)(*(int *)(param_1 + 0x3c) + 4));
        iVar4 = *(int *)(*(int *)(param_1 + 0x3c) + 4);
        *(char *)(iVar4 + 1) = (char)((uint)(puStack_194 + -4) >> 0x10);
        *(char *)(iVar4 + 2) = (char)((uint)(puStack_194 + -4) >> 8);
        *(char *)(iVar4 + 3) = (char)puStack_194 + -4;
        *(char *)(iVar4 + 8) = (char)((uint)(puStack_194 + -10) >> 8);
        *(char *)(iVar4 + 9) = (char)puStack_194 + -10;
        local_198 = (undefined *)(iVar4 + 10);
        *(undefined **)(param_1 + 0x44) = puStack_194;
        *(undefined4 *)(param_1 + 0x34) = 0x21f1;
        *(undefined4 *)(param_1 + 0x48) = 0;
        FUN_00a85120(puVar3);
        goto LAB_00b0bcfc;
      }
    }
LAB_00b0ba50:
    FUN_00a85120(puVar3);
  }
  else {
LAB_00b0bcfc:
    FUN_00b04e10(param_1,0x16);
  }
LAB_00b0bd07:
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00b0bd20(int param_1)

{
  undefined *puVar1;
  int iVar2;
  undefined4 uVar3;
  
  if (*(int *)(param_1 + 0x34) == 0x2200) {
    iVar2 = FUN_00a92a60(*(undefined4 *)(param_1 + 0x3c),*(int *)(param_1 + 0x13c) + 8);
    if (iVar2 == 0) {
      return 0xffffffff;
    }
    puVar1 = *(undefined **)(*(int *)(param_1 + 0x3c) + 4);
    *puVar1 = 0x16;
    puVar1[1] = (char)((uint)(*(int *)(param_1 + 0x13c) + 4) >> 0x10);
    puVar1[2] = (char)((uint)(*(int *)(param_1 + 0x13c) + 4) >> 8);
    puVar1[3] = *(char *)(param_1 + 0x13c) + '\x04';
    puVar1[4] = *(undefined *)(param_1 + 0x128);
    puVar1[5] = *(undefined *)(param_1 + 0x13e);
    puVar1[6] = (char)((uint)*(undefined4 *)(param_1 + 0x13c) >> 8);
    puVar1[7] = *(undefined *)(param_1 + 0x13c);
    _memcpy(puVar1 + 8,*(void **)(param_1 + 0x138),*(size_t *)(param_1 + 0x13c));
    *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x13c) + 8;
    *(undefined4 *)(param_1 + 0x34) = 0x2201;
    *(undefined4 *)(param_1 + 0x48) = 0;
  }
  uVar3 = FUN_00b04e10(param_1,0x16);
  return uVar3;
}



int FUN_00b0be00(int param_1)

{
  byte bVar1;
  byte *pbVar2;
  int iVar3;
  int iVar4;
  void *_Dst;
  uint _Size;
  
  iVar3 = param_1;
  if (*(int *)(*(int *)(param_1 + 0x58) + 0x41c) == 0) {
    FUN_00a7f3c0(0x14,0x132,0x164,".\\ssl\\s3_srvr.c",0xddc);
    return -1;
  }
  iVar4 = (**(code **)(*(int *)(param_1 + 8) + 0x30))(param_1,0x2210,0x2211,0x43,0x202,&param_1);
  if (param_1 == 0) {
    return iVar4;
  }
  if (*(int *)(*(int *)(iVar3 + 0x58) + 0x180) == 0) {
    FUN_00a7f3c0(0x14,0x132,0x163,".\\ssl\\s3_srvr.c",0xdef);
    return -1;
  }
  if (1 < iVar4) {
    pbVar2 = *(byte **)(iVar3 + 0x40);
    bVar1 = *pbVar2;
    _Size = (uint)bVar1;
    if (((int)(_Size + 2) <= *(int *)(iVar3 + 0x44)) &&
       (pbVar2[_Size + 1] + 2 + _Size == *(int *)(iVar3 + 0x44))) {
      _Dst = (void *)FUN_00a84f80(_Size,".\\ssl\\s3_srvr.c",0xe05);
      *(void **)(iVar3 + 0x174) = _Dst;
      if (_Dst != (void *)0x0) {
        _memcpy(_Dst,pbVar2 + 1,_Size);
        *(byte *)(iVar3 + 0x178) = bVar1;
        return 1;
      }
      FUN_00a7f3c0(0x14,0x132,0x41,".\\ssl\\s3_srvr.c",0xe08);
    }
    return 0;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00b0bf20(uint *param_1)

{
  uint uVar1;
  uint *puVar2;
  bool bVar3;
  code *pcVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  __time64_t _Var9;
  undefined4 uVar10;
  undefined8 uVar11;
  code *local_10;
  int iStack_8;
  undefined4 local_4;
  
  local_4 = 0xb0bf2a;
  _Var9 = __time64((__time64_t *)0x0);
  local_4 = (undefined4)_Var9;
  local_10 = (code *)0x0;
  FUN_00a86df0(&local_4,4,0);
  FUN_00a7f4b0();
  SetLastError(0);
  pcVar4 = (code *)param_1[0x34];
  if (((code *)param_1[0x34] == (code *)0x0) &&
     (pcVar4 = local_10, *(code **)(param_1[0x39] + 0x9c) != (code *)0x0)) {
    pcVar4 = *(code **)(param_1[0x39] + 0x9c);
  }
  local_10 = pcVar4;
  param_1[7] = param_1[7] + 1;
  uVar5 = FUN_00aa35c0();
  if (((uVar5 & 0x3000) == 0) || (uVar5 = FUN_00aa35c0(), (uVar5 & 0x4000) != 0)) {
    FUN_00afae80();
  }
  if (param_1[0x26] == 0) {
    uVar11 = 0xec00dccd24;
    uVar10 = 0xb3;
LAB_00b0bfe3:
    FUN_00a7f3c0(0x14,0x80,uVar10,uVar11);
    return -1;
  }
  if (param_1[0x62] != 0) {
    param_1[99] = param_1[99] + 1;
    param_1[0x62] = 0;
  }
  do {
    bVar3 = false;
    uVar5 = param_1[0xd];
    if ((int)uVar5 < 0x2101) {
      if (uVar5 == 0x2100) {
        param_1[6] = 2;
        iVar8 = FUN_00a83650(param_1[4],0xb);
        if (0 < iVar8) {
          param_1[6] = 1;
          param_1[0xd] = *(uint *)(param_1[0x16] + 0x350);
          goto LAB_00b0c7cf;
        }
        goto LAB_00b0c92b;
      }
      if (uVar5 == 3) {
        FUN_00b0eda0();
        FUN_00a92a20(param_1[0xf]);
        param_1[0xf] = 0;
        FUN_00afadc0(param_1);
        param_1[0x11] = 0;
        if (param_1[100] == 2) {
          param_1[100] = 0;
          param_1[10] = 0;
          FUN_00afab20(param_1,2);
          *(int *)(param_1[0x39] + 0x48) = *(int *)(param_1[0x39] + 0x48) + 1;
          param_1[8] = (uint)FUN_00b0bf20;
          if (local_10 != (code *)0x0) {
            (*local_10)(param_1,0x20,1);
          }
        }
        iVar8 = 1;
        goto LAB_00b0c92e;
      }
      if ((uVar5 != 0x2000) && (uVar5 != 0x2003)) goto switchD_00b0c0bd_caseD_2113;
LAB_00b0c6fe:
      param_1[9] = 1;
      if (local_10 != (code *)0x0) {
        (*local_10)(param_1,0x10);
      }
      if ((*param_1 & 0xffffff00) != 0x300) {
        uVar11 = 0x11000dccd24;
        uVar10 = 0x44;
        goto LAB_00b0bfe3;
      }
      param_1[1] = 0x2000;
      if (param_1[0xf] == 0) {
        uVar7 = FUN_00a929e0();
        if ((uVar7 == 0) || (iVar8 = FUN_00a92a60(uVar7), iVar8 == 0)) goto LAB_00b0c92b;
        param_1[0xf] = uVar7;
      }
      iVar8 = FUN_00b05b70();
      if (iVar8 == 0) goto LAB_00b0c92b;
      param_1[0x11] = 0;
      *(uint *)param_1[0x16] = *(uint *)param_1[0x16] & 0xffffffbf;
      if (param_1[0xd] == 0x3004) {
        if ((*(int *)(param_1[0x16] + 0x418) == 0) && ((param_1[0x40] & 0x40000) == 0)) {
          FUN_00a7f3c0(0x14,0x80,0x152,".\\ssl\\s3_srvr.c",0x13f);
          FUN_00b00df0(param_1,2,0x28);
          goto LAB_00b0c92b;
        }
        *(int *)(param_1[0x39] + 0x44) = *(int *)(param_1[0x39] + 0x44) + 1;
        param_1[0xd] = 0x2120;
      }
      else {
        iVar8 = FUN_00afad00(param_1);
        if (iVar8 == 0) goto LAB_00b0c92b;
        FUN_00b0f810();
        param_1[0xd] = 0x2110;
        *(int *)(param_1[0x39] + 0x40) = *(int *)(param_1[0x39] + 0x40) + 1;
      }
    }
    else {
      if (0x2211 < (int)uVar5) {
        if (uVar5 == 0x3004) {
          param_1[100] = 1;
        }
        else if ((uVar5 != 0x4000) && (uVar5 != 0x6000)) goto switchD_00b0c0bd_caseD_2113;
        goto LAB_00b0c6fe;
      }
      if ((int)uVar5 < 0x2210) {
        switch(uVar5) {
        case 0x2110:
        case 0x2111:
        case 0x2112:
          param_1[0xc] = 0;
          if ((param_1[6] != 4) && (iVar8 = FUN_00b08970(), iVar8 < 1)) goto LAB_00b0c92e;
          iVar8 = FUN_00b08810();
          if (iVar8 < 0) {
            param_1[6] = 4;
            goto LAB_00b0c92e;
          }
          if (iVar8 != 0) {
            FUN_00b00df0(param_1,2,iStack_8);
            if (iStack_8 != 0x73) {
              FUN_00a7f3c0(0x14,0x80,0xe2,".\\ssl\\s3_srvr.c",0x177);
            }
            goto LAB_00b0c92b;
          }
          param_1[100] = 2;
          param_1[0xd] = 0x2130;
          param_1[0x11] = 0;
          break;
        default:
switchD_00b0c0bd_caseD_2113:
          FUN_00a7f3c0(0x14,0x80,0xff,".\\ssl\\s3_srvr.c",0x32e);
LAB_00b0c92b:
          iVar8 = -1;
LAB_00b0c92e:
          param_1[7] = param_1[7] - 1;
          if (local_10 != (code *)0x0) {
            (*local_10)(param_1,0x2002,iVar8);
          }
          return iVar8;
        case 0x2120:
        case 0x2121:
          param_1[0xc] = 0;
          iVar8 = FUN_00b08860();
          if (iVar8 < 1) goto LAB_00b0c92e;
          *(undefined4 *)(param_1[0x16] + 0x350) = 0x2122;
          param_1[0xd] = 0x2100;
          param_1[0x11] = 0;
          FUN_00b0f810();
          break;
        case 0x2122:
          param_1[0xd] = 3;
          break;
        case 0x2130:
        case 0x2131:
          iVar8 = FUN_00b09330();
          if (iVar8 < 1) goto LAB_00b0c92e;
          if (param_1[0x1b] == 0) {
            param_1[0xd] = 0x2140;
            param_1[0x11] = 0;
          }
          else {
            param_1[0xd] = (-(uint)(param_1[0x50] != 0) & 0x20) + 0x21d0;
            param_1[0x11] = 0;
          }
          break;
        case 0x2140:
        case 0x2141:
          if (((*(byte *)(*(int *)(param_1[0x16] + 0x344) + 0x10) & 0x24) == 0) &&
             ((*(uint *)(*(int *)(param_1[0x16] + 0x344) + 0xc) & 0x100) == 0)) {
            iVar8 = FUN_00b0b870();
            if (iVar8 < 1) goto LAB_00b0c92e;
            param_1[0xd] = (-(uint)(param_1[0x4b] != 0) & 0xb0) + 0x2150;
            param_1[0x11] = 0;
          }
          else {
            bVar3 = true;
            param_1[0xd] = 0x2150;
            param_1[0x11] = 0;
          }
          break;
        case 0x2150:
        case 0x2151:
          uVar7 = *(uint *)(*(int *)(param_1[0x16] + 0x344) + 0xc);
          *(uint *)(param_1[0x16] + 0x370) = param_1[0x40] >> 0x15 & 1;
          if (((*(int *)(param_1[0x16] + 0x370) == 0) &&
              (((((uVar7 & 0x100) == 0 || (*(int *)(param_1[0x39] + 0x14c) == 0)) &&
                ((uVar7 & 0x400) == 0)) && ((uVar7 & 0x8e) == 0)))) &&
             (((uVar7 & 1) == 0 ||
              ((*(int *)(param_1[0x26] + 0x34) != 0 &&
               (((*(byte *)(*(int *)(param_1[0x16] + 0x344) + 0x20) & 2) == 0 ||
                (iVar8 = FUN_00a81360(),
                iVar8 * 8 <=
                (int)((-(uint)((*(uint *)(*(int *)(param_1[0x16] + 0x344) + 0x20) & 8) != 0) &
                      0xfffffe00) + 0x400))))))))) {
            bVar3 = true;
            param_1[0xd] = 0x2160;
            param_1[0x11] = 0;
          }
          else {
            iVar8 = FUN_00b094f0();
            if (iVar8 < 1) goto LAB_00b0c92e;
            param_1[0xd] = 0x2160;
            param_1[0x11] = 0;
          }
          break;
        case 0x2160:
        case 0x2161:
          uVar7 = param_1[0x32];
          if (((uVar7 & 1) != 0) && ((*(int *)(param_1[0x30] + 0x9c) == 0 || ((uVar7 & 4) == 0)))) {
            iVar8 = *(int *)(param_1[0x16] + 0x344);
            uVar1 = *(uint *)(iVar8 + 0x10);
            if ((((uVar1 & 4) == 0) || ((uVar7 & 2) != 0)) &&
               (((uVar1 & 0x20) == 0 && ((*(uint *)(iVar8 + 0xc) & 0x100) == 0)))) {
              *(undefined4 *)(param_1[0x16] + 0x390) = 1;
              iVar8 = FUN_00b0a010();
              if (0 < iVar8) {
                param_1[0xd] = 0x2100;
                *(undefined4 *)(param_1[0x16] + 0x350) = 0x2180;
                param_1[0x11] = 0;
                break;
              }
              goto LAB_00b0c92e;
            }
          }
          *(undefined4 *)(param_1[0x16] + 0x390) = 0;
          param_1[0xd] = 0x2170;
          bVar3 = true;
          if (*(int *)(param_1[0x16] + 0x178) != 0) {
LAB_00b0c36e:
            iVar8 = FUN_00b0f060();
            if (iVar8 == 0) {
              return -1;
            }
          }
          break;
        case 0x2170:
        case 0x2171:
          iVar8 = FUN_00b094b0();
          if (iVar8 < 1) goto LAB_00b0c92e;
          *(undefined4 *)(param_1[0x16] + 0x350) = 0x2180;
          param_1[0xd] = 0x2100;
          param_1[0x11] = 0;
          break;
        case 0x2180:
        case 0x2181:
          iVar8 = FUN_00b088a0();
          if (iVar8 < 1) goto LAB_00b0c92e;
          if (iVar8 == 2) {
            param_1[0xd] = 0x2112;
          }
          else {
            if ((*(int *)(param_1[0x16] + 0x390) != 0) && (iVar8 = FUN_00b0b3d0(), iVar8 < 1))
            goto LAB_00b0c92e;
            param_1[0x11] = 0;
            param_1[0xd] = 0x2190;
          }
          break;
        case 0x2190:
        case 0x2191:
          iVar8 = FUN_00b0a280();
          if (iVar8 < 1) goto LAB_00b0c92e;
          if (iVar8 == 2) goto LAB_00b0c526;
          if (((*param_1 & 0xffffff00) == 0x300) && (0x302 < (int)*param_1)) {
            param_1[0xd] = 0x21a0;
            param_1[0x11] = 0;
            if (*(int *)(param_1[0x30] + 0x9c) != 0) {
              puVar2 = (uint *)param_1[0x16];
              if (puVar2[0x5e] != 0) {
                *puVar2 = *puVar2 | 0x20;
                goto LAB_00b0c36e;
              }
              uVar11 = 0x27900dccd24;
              uVar10 = 0x44;
              goto LAB_00b0bfe3;
            }
          }
          else {
            param_1[0xd] = 0x21a0;
            param_1[0x11] = 0;
            if ((*(int *)(param_1[0x16] + 0x178) != 0) && (iVar8 = FUN_00b0f060(), iVar8 == 0)) {
              return -1;
            }
            iVar8 = 0;
            do {
              if (*(int *)(*(int *)(param_1[0x16] + 0x17c) + iVar8) != 0) {
                iVar6 = *(int *)(param_1[2] + 100);
                uVar10 = FUN_00a92630(*(undefined4 *)(*(int *)(param_1[0x16] + 0x17c) + iVar8));
                FUN_00a814c0(uVar10);
                (**(code **)(iVar6 + 0x1c))(param_1);
                uVar10 = FUN_00a92630(*(undefined4 *)(*(int *)(param_1[0x16] + 0x17c) + iVar8));
                iVar6 = FUN_00a92600(uVar10);
                if (iVar6 < 0) {
                  iVar8 = -1;
                  goto LAB_00b0c92e;
                }
              }
              iVar8 = iVar8 + 4;
            } while (iVar8 < 0x18);
          }
          break;
        case 0x21a0:
        case 0x21a1:
          iVar8 = FUN_00b0ae50();
          if (iVar8 < 1) goto LAB_00b0c92e;
LAB_00b0c526:
          param_1[0xd] = (-(uint)(*(int *)(param_1[0x16] + 0x41c) != 0) & 0x50) + 0x21c0;
          param_1[0x11] = 0;
          break;
        case 0x21c0:
        case 0x21c1:
          iVar8 = FUN_00b05010(param_1);
          if (iVar8 < 1) goto LAB_00b0c92e;
          if (param_1[0x1b] == 0) {
            param_1[0xd] = (-(uint)(param_1[0x50] != 0) & 0x20) + 0x21d0;
            param_1[0x11] = 0;
          }
          else {
            param_1[0xd] = 3;
            param_1[0x11] = 0;
          }
          break;
        case 0x21d0:
        case 0x21d1:
          *(undefined4 *)(param_1[0x30] + 0xb4) = *(undefined4 *)(param_1[0x16] + 0x344);
          iVar8 = (**(code **)(*(int *)(param_1[2] + 100) + 8))();
          if (iVar8 == 0) goto LAB_00b0c92b;
          iVar8 = FUN_00b05180(param_1,0x21d0);
          if (iVar8 < 1) goto LAB_00b0c92e;
          param_1[0xd] = 0x21e0;
          param_1[0x11] = 0;
          iVar8 = (**(code **)(*(int *)(param_1[2] + 100) + 0x10))();
          if (iVar8 == 0) goto LAB_00b0c92b;
          break;
        case 0x21e0:
        case 0x21e1:
          iVar8 = FUN_00b04ea0(param_1,0x21e0,0x21e1,
                               *(undefined4 *)(*(int *)(param_1[2] + 100) + 0x28),
                               *(undefined4 *)(*(int *)(param_1[2] + 100) + 0x2c));
          if (iVar8 < 1) goto LAB_00b0c92e;
          param_1[0xd] = 0x2100;
          if (param_1[0x1b] == 0) {
            *(undefined4 *)(param_1[0x16] + 0x350) = 3;
            param_1[0x11] = 0;
          }
          else {
            *(uint *)(param_1[0x16] + 0x350) =
                 (-(uint)(*(int *)(param_1[0x16] + 0x41c) != 0) & 0x50) + 0x21c0;
            param_1[0x11] = 0;
          }
          break;
        case 0x21f0:
        case 0x21f1:
          iVar8 = FUN_00b0b8f0();
          if (iVar8 < 1) goto LAB_00b0c92e;
          param_1[0xd] = 0x21d0;
          param_1[0x11] = 0;
          break;
        case 0x2200:
        case 0x2201:
          iVar8 = FUN_00b0bd20();
          if (iVar8 < 1) goto LAB_00b0c92e;
          param_1[0xd] = 0x2150;
          param_1[0x11] = 0;
        }
      }
      else {
        iVar8 = FUN_00b0be00();
        if (iVar8 < 1) goto LAB_00b0c92e;
        param_1[0x11] = 0;
        param_1[0xd] = 0x21c0;
      }
    }
LAB_00b0c7cf:
    if ((*(int *)(param_1[0x16] + 0x354) == 0) && (!bVar3)) {
      if ((param_1[0x3a] != 0) && (iVar8 = FUN_00a83650(param_1[4],0xb), iVar8 < 1))
      goto LAB_00b0c92e;
      if ((local_10 != (code *)0x0) && (uVar7 = param_1[0xd], uVar7 != uVar5)) {
        param_1[0xd] = uVar5;
        (*local_10)(param_1);
        param_1[0xd] = uVar7;
      }
    }
  } while( true );
}



undefined * FUN_00b0ca90(void)

{
  return &DAT_00dcccb0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b0cac0(void)

{
  char cVar1;
  char cVar2;
  char *pcVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  undefined4 uVar7;
  int iVar8;
  int iVar9;
  uint *unaff_ESI;
  int iVar10;
  int iStack_4;
  
  if (unaff_ESI[0xd] == 0x2010) {
    unaff_ESI[0x43] = 1;
    unaff_ESI[0xd] = 0x2011;
  }
  pcVar3 = *(char **)(unaff_ESI[0xf] + 4);
  if (unaff_ESI[0xd] == 0x2011) {
    iVar6 = FUN_00b1af10();
    if (iVar6 < (int)(9 - unaff_ESI[0x11])) {
      uVar7 = FUN_00b1b040();
      return uVar7;
    }
    unaff_ESI[0x11] = 9;
    if (*pcVar3 != '\x01') {
      if (*pcVar3 != '\0') {
        FUN_00b0e6b0();
        FUN_00a7f3c0(0x14,0x6a,0xd4,".\\ssl\\s2_srvr.c",0x228);
        return 0xffffffff;
      }
      FUN_00a7f3c0(0x14,0x6a,200,".\\ssl\\s2_srvr.c",0x22b);
      return 0xffffffff;
    }
    if ((int)(uint)CONCAT11(pcVar3[1],pcVar3[2]) < (int)*unaff_ESI) {
      *unaff_ESI = (uint)CONCAT11(pcVar3[1],pcVar3[2]);
    }
    *(uint *)(unaff_ESI[0x15] + 0x110) = (uint)CONCAT11(pcVar3[3],pcVar3[4]);
    *(uint *)(unaff_ESI[0x15] + 0x114) = (uint)CONCAT11(pcVar3[5],pcVar3[6]);
    cVar1 = pcVar3[7];
    cVar2 = pcVar3[8];
    *(uint *)(unaff_ESI[0x15] + 100) = (uint)CONCAT11(cVar1,cVar2);
    if (0x10 < CONCAT11(cVar1,cVar2) - 0x10) {
      FUN_00b0e6b0();
      FUN_00a7f3c0(0x14,0x6a,0x9e,".\\ssl\\s2_srvr.c",0x237);
      return 0xffffffff;
    }
    unaff_ESI[0xd] = 0x2012;
  }
  uVar4 = unaff_ESI[0x15];
  iVar6 = *(int *)(unaff_ESI[0xf] + 4);
  uVar4 = *(int *)(uVar4 + 0x114) + *(int *)(uVar4 + 0x110) + 9 + *(int *)(uVar4 + 100);
  if (0x3fff < uVar4) {
    FUN_00b0e6b0();
    FUN_00a7f3c0(0x14,0x6a,0x128,".\\ssl\\s2_srvr.c",0x243);
    return 0xffffffff;
  }
  uVar5 = unaff_ESI[0x11];
  iVar8 = FUN_00b1af10();
  if (iVar8 != uVar4 - uVar5) {
    uVar7 = FUN_00b1b040();
    return uVar7;
  }
  if ((code *)unaff_ESI[0x19] != (code *)0x0) {
    (*(code *)unaff_ESI[0x19])(0,*unaff_ESI,0,iVar6,uVar4);
  }
  if (*(int *)(unaff_ESI[0x15] + 0x114) != 0) {
    if (*(int *)(unaff_ESI[0x15] + 0x114) != 0x10) {
      FUN_00b0e6b0();
      FUN_00a7f3c0(0x14,0x6a,0x7d,".\\ssl\\s2_srvr.c",0x254);
      return 0xffffffff;
    }
    iVar8 = FUN_00b004b0();
    if (iVar8 == 1) {
      unaff_ESI[0x1b] = 1;
      goto LAB_00b0cd11;
    }
    if (iVar8 == -1) goto LAB_00b0cdd5;
    if (unaff_ESI[0x26] == 0) {
      FUN_00b0e6b0();
      FUN_00a7f3c0(0x14,0x6a,0xb3,".\\ssl\\s2_srvr.c",0x272);
      return 0xffffffff;
    }
  }
  iVar8 = FUN_00affdf0();
  if (iVar8 == 0) {
LAB_00b0cdd5:
    FUN_00b0e6b0();
    return 0xffffffff;
  }
LAB_00b0cd11:
  if (unaff_ESI[0x1b] == 0) {
    iVar8 = FUN_00afa020();
    if ((iVar8 == 0) ||
       ((iStack_4 = FUN_00af9ed0(), iVar9 = iVar8, (unaff_ESI[0x40] & 0x400000) != 0 &&
        (iVar9 = FUN_00a80f80(iStack_4), iStack_4 = iVar8, iVar9 == 0)))) {
      FUN_00a7f3c0(0x14,0x6a,0x41,".\\ssl\\s2_srvr.c",0x2b5);
      return 0;
    }
    iVar10 = 0;
    iVar8 = FUN_00a80ed0(iVar9);
    if (0 < iVar8) {
      do {
        uVar7 = FUN_00a80ee0(iVar9,iVar10);
        iVar8 = FUN_00a81100(iStack_4,uVar7);
        if (iVar8 < 0) {
          FUN_00a80da0(iVar9,iVar10);
          iVar10 = iVar10 + -1;
        }
        iVar10 = iVar10 + 1;
        iVar8 = FUN_00a80ed0(iVar9);
      } while (iVar10 < iVar8);
    }
    if ((unaff_ESI[0x40] & 0x400000) != 0) {
      FUN_00a80ea0(*(undefined4 *)(unaff_ESI[0x30] + 0xbc));
      *(int *)(unaff_ESI[0x30] + 0xbc) = iVar9;
    }
  }
  uVar4 = unaff_ESI[0x15];
  if (0x20 < *(uint *)(uVar4 + 100)) {
    FUN_00b0e6b0();
    FUN_00a7f3c0(0x14,0x6a,0x44,".\\ssl\\s2_srvr.c",0x2af);
    return 0xffffffff;
  }
  _memcpy((void *)(uVar4 + 0x68),
          (void *)(iVar6 + 9 + *(int *)(uVar4 + 0x114) + *(int *)(uVar4 + 0x110)),
          *(uint *)(uVar4 + 100));
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b0cec0(void)

{
  undefined *puVar1;
  undefined2 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 *unaff_EDI;
  undefined4 *local_4;
  
  local_4 = (undefined4 *)0xb0ceca;
  puVar1 = *(undefined **)(unaff_EDI[0xf] + 4);
  if (unaff_EDI[0xd] == 0x2020) {
    local_4 = (undefined4 *)(puVar1 + 0xb);
    *puVar1 = 4;
    iVar4 = unaff_EDI[0x1b];
    puVar1[1] = (char)iVar4;
    if (iVar4 == 0) {
      if (*(int *)(unaff_EDI[0x30] + 0x98) != 0) {
        FUN_00aff830(*(int *)(unaff_EDI[0x30] + 0x98));
      }
      uVar3 = FUN_00aff7d0();
      *(undefined4 *)(unaff_EDI[0x30] + 0x98) = uVar3;
      if (*(int *)(unaff_EDI[0x30] + 0x98) == 0) {
        FUN_00a7f3c0(0x14,0x72,0x41,".\\ssl\\s2_srvr.c",0x2d0);
        return 0xffffffff;
      }
    }
    if (unaff_EDI[0x26] == 0) {
      FUN_00b0e6b0();
      FUN_00a7f3c0(0x14,0x72,0xb4,".\\ssl\\s2_srvr.c",0x2f5);
      return 0xffffffff;
    }
    if (iVar4 == 0) {
      puVar1[2] = 1;
      puVar1[3] = (char)((uint)*unaff_EDI >> 8);
      puVar1[4] = *(undefined *)unaff_EDI;
      uVar2 = FUN_00a812a0(*(undefined4 *)(unaff_EDI[0x26] + 0x30),0);
      puVar1[5] = (char)((ushort)uVar2 >> 8);
      puVar1[6] = (char)uVar2;
      FUN_00a812a0(*(undefined4 *)(unaff_EDI[0x26] + 0x30),&local_4);
      iVar4 = FUN_00af9f30();
      local_4 = (undefined4 *)((int)local_4 + iVar4);
      puVar1[7] = (char)((uint)iVar4 >> 8);
      puVar1[8] = (char)iVar4;
    }
    else {
      puVar1[2] = 0;
      puVar1[3] = (char)((uint)*unaff_EDI >> 8);
      puVar1[4] = *(undefined *)unaff_EDI;
      puVar1[5] = 0;
      puVar1[6] = 0;
      puVar1[7] = 0;
      puVar1[8] = 0;
    }
    puVar1[9] = 0;
    puVar1[10] = 0x10;
    *(undefined4 *)(unaff_EDI[0x15] + 0x88) = 0x10;
    iVar4 = FUN_00a86ec0(unaff_EDI[0x15] + 0x8c,*(undefined4 *)(unaff_EDI[0x15] + 0x88));
    if (iVar4 < 1) {
      return 0xffffffff;
    }
    iVar4 = unaff_EDI[0x15];
    *local_4 = *(undefined4 *)(iVar4 + 0x8c);
    local_4[1] = *(undefined4 *)(iVar4 + 0x90);
    local_4[2] = *(undefined4 *)(iVar4 + 0x94);
    local_4[3] = *(undefined4 *)(iVar4 + 0x98);
    local_4 = local_4 + 4;
    unaff_EDI[0xd] = 0x2021;
    iVar4 = *(int *)(unaff_EDI[0xf] + 4);
    unaff_EDI[0x12] = 0;
    unaff_EDI[0x11] = (int)local_4 - iVar4;
  }
  if ((unaff_EDI[0x1b] != 0) && (iVar4 = FUN_00afad00(), iVar4 == 0)) {
    return 0xffffffff;
  }
  uVar3 = FUN_00b1b0b0();
  return uVar3;
}



undefined4 FUN_00b0d0d0(void)

{
  char *pcVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  uint uVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  
  pcVar1 = *(char **)(unaff_ESI[0xf] + 4);
  if (unaff_ESI[0xd] == 0x2050) {
    iVar3 = FUN_00b1af10();
    if (iVar3 < 1 - unaff_ESI[0x11]) {
      uVar4 = FUN_00b1b040();
      return uVar4;
    }
    unaff_ESI[0x11] = unaff_ESI[0x11] + iVar3;
    if (*pcVar1 != '\x03') {
      if (*pcVar1 == '\0') {
        FUN_00a7f3c0(0x14,0x69,200,".\\ssl\\s2_srvr.c",0x342);
        FUN_00b1af10();
        uVar4 = FUN_00b1b040();
        return uVar4;
      }
      FUN_00b0e6b0();
      FUN_00a7f3c0(0x14,0x69,0xd4,".\\ssl\\s2_srvr.c",0x33e);
      return 0xffffffff;
    }
    unaff_ESI[0xd] = 0x2051;
  }
  if (0x10 < *(uint *)(unaff_ESI[0x15] + 0x88)) {
    FUN_00b0e6b0();
    FUN_00a7f3c0(0x14,0x69,0x44,".\\ssl\\s2_srvr.c",0x350);
    return 0xffffffff;
  }
  iVar3 = *(uint *)(unaff_ESI[0x15] + 0x88) + 1;
  iVar2 = unaff_ESI[0x11];
  iVar5 = FUN_00b1af10();
  if (iVar5 < iVar3 - iVar2) {
    uVar4 = FUN_00b1b040();
    return uVar4;
  }
  if ((code *)unaff_ESI[0x19] != (code *)0x0) {
    (*(code *)unaff_ESI[0x19])(0,*unaff_ESI,0,pcVar1,iVar3);
  }
  piVar7 = (int *)(unaff_ESI[0x15] + 0x8c);
  piVar8 = (int *)(pcVar1 + 1);
  for (uVar6 = *(uint *)(unaff_ESI[0x15] + 0x88); 3 < uVar6; uVar6 = uVar6 - 4) {
    if (*piVar8 != *piVar7) goto LAB_00b0d258;
    piVar7 = piVar7 + 1;
    piVar8 = piVar8 + 1;
  }
  if ((uVar6 == 0) ||
     ((*(char *)piVar7 == *(char *)piVar8 &&
      ((uVar6 < 2 ||
       ((*(char *)((int)piVar7 + 1) == *(char *)((int)piVar8 + 1) &&
        ((uVar6 < 3 || (*(char *)((int)piVar7 + 2) == *(char *)((int)piVar8 + 2))))))))))) {
    return 1;
  }
LAB_00b0d258:
  FUN_00b0e6b0();
  FUN_00a7f3c0(0x14,0x69,0x8f,".\\ssl\\s2_srvr.c",0x360);
  return 0xffffffff;
}



undefined4 FUN_00b0d290(void)

{
  undefined *puVar1;
  uint _Size;
  undefined4 uVar2;
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0x34) == 0x2040) {
    puVar1 = *(undefined **)(*(int *)(unaff_ESI + 0x3c) + 4);
    *puVar1 = 5;
    _Size = *(uint *)(*(int *)(unaff_ESI + 0x54) + 100);
    if (0x20 < _Size) {
      FUN_00a7f3c0(0x14,0xf0,0x44,".\\ssl\\s2_srvr.c",0x370);
      return 0xffffffff;
    }
    _memcpy(puVar1 + 1,(void *)(*(int *)(unaff_ESI + 0x54) + 0x68),_Size);
    *(undefined4 *)(unaff_ESI + 0x34) = 0x2041;
    *(int *)(unaff_ESI + 0x44) = *(int *)(*(int *)(unaff_ESI + 0x54) + 100) + 1;
    *(undefined4 *)(unaff_ESI + 0x48) = 0;
  }
  uVar2 = FUN_00b1b0b0();
  return uVar2;
}



undefined4 FUN_00b0d300(void)

{
  undefined *puVar1;
  uint _Size;
  undefined4 uVar2;
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0x34) == 0x2060) {
    puVar1 = *(undefined **)(*(int *)(unaff_ESI + 0x3c) + 4);
    *puVar1 = 6;
    _Size = *(uint *)(*(int *)(unaff_ESI + 0xc0) + 0x44);
    if (0x20 < _Size) {
      FUN_00a7f3c0(0x14,0xef,0x44,".\\ssl\\s2_srvr.c",0x388);
      return 0xffffffff;
    }
    _memcpy(puVar1 + 1,(void *)(*(int *)(unaff_ESI + 0xc0) + 0x48),_Size);
    *(undefined4 *)(unaff_ESI + 0x34) = 0x2061;
    *(int *)(unaff_ESI + 0x44) = *(int *)(*(int *)(unaff_ESI + 0xc0) + 0x44) + 1;
    *(undefined4 *)(unaff_ESI + 0x48) = 0;
  }
  uVar2 = FUN_00b1b0b0();
  return uVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00b0d380(void)

{
  undefined *puVar1;
  char *pcVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 *puVar6;
  undefined4 *unaff_ESI;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  uint local_20;
  int iStack_1c;
  undefined auStack_18 [20];
  undefined4 uStack_4;
  
  uStack_4 = 0xb0d38a;
  iVar4 = unaff_ESI[0x15];
  puVar6 = (undefined4 *)(iVar4 + 0xf0);
  local_30 = -1;
  local_2c = 0;
  local_24 = 0;
  if (unaff_ESI[0xd] == 0x2070) {
    puVar1 = *(undefined **)(unaff_ESI[0xf] + 4);
    *puVar1 = 7;
    puVar1[1] = 1;
    iVar3 = FUN_00a86ec0(puVar6,0x10);
    if (iVar3 < 1) {
      return -1;
    }
    *(undefined4 *)(puVar1 + 2) = *puVar6;
    *(undefined4 *)(puVar1 + 6) = *(undefined4 *)(iVar4 + 0xf4);
    *(undefined4 *)(puVar1 + 10) = *(undefined4 *)(iVar4 + 0xf8);
    *(undefined4 *)(puVar1 + 0xe) = *(undefined4 *)(iVar4 + 0xfc);
    unaff_ESI[0xd] = 0x2071;
    unaff_ESI[0x11] = 0x12;
    unaff_ESI[0x12] = 0;
  }
  if (unaff_ESI[0xd] == 0x2071) {
    iVar4 = FUN_00b1b0b0();
    if (iVar4 < 1) goto LAB_00b0d854;
    unaff_ESI[0x11] = 0;
    unaff_ESI[0xd] = 0x2072;
  }
  iVar4 = local_30;
  if (unaff_ESI[0xd] == 0x2072) {
    pcVar2 = *(char **)(unaff_ESI[0xf] + 4);
    iVar3 = FUN_00b1af10();
    if (3 - unaff_ESI[0x11] <= iVar3) {
      iVar3 = iVar3 + unaff_ESI[0x11];
      unaff_ESI[0x11] = iVar3;
      if ((iVar3 < 3) || (*pcVar2 != '\0')) {
        if ((*pcVar2 != '\b') || (iVar3 < 6)) {
          FUN_00b0e6b0();
          FUN_00a7f3c0(0x14,0x71,0xdb,".\\ssl\\s2_srvr.c",0x3e6);
          goto LAB_00b0d854;
        }
        if (iVar3 != 6) {
          FUN_00a7f3c0(0x14,0x71,0x44,".\\ssl\\s2_srvr.c",0x3eb);
          goto LAB_00b0d854;
        }
        if (pcVar2[1] != '\x01') {
          FUN_00b0e6b0();
          FUN_00a7f3c0(0x14,0x71,0x75,".\\ssl\\s2_srvr.c",0x3f5);
          goto LAB_00b0d854;
        }
        *(uint *)(unaff_ESI[0x15] + 0x118) = (uint)CONCAT11(pcVar2[2],pcVar2[3]);
        *(uint *)(unaff_ESI[0x15] + 0x11c) = (uint)CONCAT11(pcVar2[4],pcVar2[5]);
        unaff_ESI[0xd] = 0x2073;
        goto LAB_00b0d58a;
      }
      if (pcVar2[1] != '\x02') {
        unaff_ESI[0x11] = iVar3 + -3;
        iVar4 = FUN_00b1b040();
        goto LAB_00b0d854;
      }
      if ((code *)unaff_ESI[0x19] != (code *)0x0) {
        (*(code *)unaff_ESI[0x19])(0,*unaff_ESI,0,pcVar2 + 2,3);
      }
      if ((*(byte *)(unaff_ESI + 0x32) & 2) != 0) {
        FUN_00b0e6b0();
        FUN_00a7f3c0(0x14,0x71,199,".\\ssl\\s2_srvr.c",0x3dd);
        goto LAB_00b0d854;
      }
LAB_00b0d819:
      local_30 = 1;
      iVar4 = local_30;
      goto LAB_00b0d854;
    }
LAB_00b0d45a:
    iVar4 = FUN_00b1b040();
    goto LAB_00b0d854;
  }
LAB_00b0d58a:
  iVar3 = *(int *)(unaff_ESI[0xf] + 4);
  local_20 = *(int *)(unaff_ESI[0x15] + 0x11c) + 6 + *(int *)(unaff_ESI[0x15] + 0x118);
  if (0x3fff < local_20) {
    FUN_00a7f3c0(0x14,0x71,0x128,".\\ssl\\s2_srvr.c",0x402);
    goto LAB_00b0d854;
  }
  iVar7 = local_20 - unaff_ESI[0x11];
  iVar5 = FUN_00b1af10();
  if (iVar5 < iVar7) goto LAB_00b0d45a;
  if ((code *)unaff_ESI[0x19] != (code *)0x0) {
    (*(code *)unaff_ESI[0x19])(0,*unaff_ESI,0,iVar3,local_20);
  }
  local_28 = iVar3 + 6;
  local_2c = FUN_00a81280(0,&local_28,*(undefined4 *)(unaff_ESI[0x15] + 0x118));
  if (local_2c == 0) {
    uVar9 = 0x414;
    uVar8 = 0xb;
LAB_00b0d83d:
    FUN_00a7f3c0(0x14,0x71,uVar8,".\\ssl\\s2_srvr.c",uVar9);
  }
  else {
    local_24 = FUN_00a81010();
    if ((local_24 == 0) || (iVar3 = FUN_00a80df0(local_24,local_2c), iVar3 == 0)) {
      uVar9 = 0x41a;
LAB_00b0d836:
      uVar8 = 0x41;
      goto LAB_00b0d83d;
    }
    iVar3 = FUN_00aff900();
    if (0 < iVar3) {
      FUN_00a91330(auStack_18);
      iVar3 = FUN_00a91380(auStack_18,*(undefined4 *)(unaff_ESI[0x39] + 0x88),0);
      if (((iVar3 != 0) &&
          (iVar3 = FUN_00a91530(auStack_18,unaff_ESI[0x15] + 0xa0,
                                *(undefined4 *)(unaff_ESI[0x15] + 0x9c)), iVar3 != 0)) &&
         (iVar3 = FUN_00a91530(auStack_18,puVar6,0x10), iVar3 != 0)) {
        uVar9 = FUN_00a812a0(*(undefined4 *)(unaff_ESI[0x26] + 0x30),0);
        iVar3 = FUN_00a84f80(uVar9,".\\ssl\\s2_srvr.c",0x42e);
        if (iVar3 == 0) {
          uVar9 = 0x431;
          goto LAB_00b0d836;
        }
        iStack_1c = iVar3;
        uVar9 = FUN_00a812a0(*(undefined4 *)(unaff_ESI[0x26] + 0x30),&iStack_1c);
        iVar5 = FUN_00a91530(auStack_18,iVar3,uVar9);
        if (iVar5 != 0) {
          FUN_00a85120(iVar3);
          iVar3 = FUN_00a82c40(local_2c);
          if (iVar3 == 0) goto LAB_00b0d854;
          iVar5 = FUN_00ad9320(auStack_18,local_28,*(undefined4 *)(unaff_ESI[0x15] + 0x11c),iVar3);
          FUN_00a816d0(iVar3);
          FUN_00a915c0(auStack_18);
          if (0 < iVar5) {
            if (*(int *)(unaff_ESI[0x30] + 0x9c) != 0) {
              FUN_00a812c0(*(int *)(unaff_ESI[0x30] + 0x9c));
            }
            *(int *)(unaff_ESI[0x30] + 0x9c) = local_2c;
            FUN_00a7fe40(local_2c + 0x10,1,3,".\\ssl\\s2_srvr.c",0x448);
            *(undefined4 *)(unaff_ESI[0x30] + 0xa0) = unaff_ESI[0x3b];
            goto LAB_00b0d819;
          }
          uVar9 = 0x44f;
          uVar8 = 0x68;
          goto LAB_00b0d83d;
        }
        FUN_00a85120(iVar3);
      }
    }
  }
  FUN_00b0e6b0();
LAB_00b0d854:
  local_30 = iVar4;
  FUN_00a80ea0(local_24);
  FUN_00a812c0(local_2c);
  return local_30;
}



int FUN_00b0d880(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                undefined4 param_5)

{
  int *piVar1;
  int iVar2;
  
  if ((param_1 != 0) && (piVar1 = *(int **)(param_1 + 0x34), piVar1 != (int *)0x0)) {
    if (*piVar1 != 6) {
      FUN_00a7f3c0(0x14,0xbb,0xd1,".\\ssl\\s2_srvr.c",0x46b);
      return -1;
    }
    iVar2 = FUN_00ad1250(param_2,param_3,param_4,piVar1[5],param_5);
    if (iVar2 < 0) {
      FUN_00a7f3c0(0x14,0xbb,4,".\\ssl\\s2_srvr.c",0x473);
    }
    return iVar2;
  }
  FUN_00a7f3c0(0x14,0xbb,0xbd,".\\ssl\\s2_srvr.c",0x466);
  return -1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b0d920(void)

{
  uint uVar1;
  char *pcVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  size_t sVar6;
  size_t sVar7;
  void *_Src;
  undefined4 *unaff_ESI;
  uint uVar8;
  size_t local_c;
  undefined4 uStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb0d92a;
  pcVar2 = *(char **)(unaff_ESI[0xf] + 4);
  if (unaff_ESI[0xd] == 0x2030) {
    iVar3 = FUN_00b1af10();
    if (iVar3 < 10 - unaff_ESI[0x11]) {
      uVar4 = FUN_00b1b040();
      return uVar4;
    }
    unaff_ESI[0x11] = 10;
    if (*pcVar2 != '\x02') {
      if (*pcVar2 != '\0') {
        FUN_00b0e6b0();
        FUN_00a7f3c0(0x14,0x6b,0xd4,".\\ssl\\s2_srvr.c",0x183);
        return 0xffffffff;
      }
      FUN_00a7f3c0(0x14,0x6b,200,".\\ssl\\s2_srvr.c",0x186);
      return 0xffffffff;
    }
    iVar3 = FUN_00b0e2e0(pcVar2 + 1);
    if (iVar3 == 0) {
      FUN_00b0e6b0();
      FUN_00a7f3c0(0x14,0x6b,0xb9,".\\ssl\\s2_srvr.c",0x18e);
      return 0xffffffff;
    }
    *(int *)(unaff_ESI[0x30] + 0xb4) = iVar3;
    *(uint *)(unaff_ESI[0x15] + 0xe8) = (uint)CONCAT11(pcVar2[4],pcVar2[5]);
    *(uint *)(unaff_ESI[0x15] + 0xec) = (uint)CONCAT11(pcVar2[6],pcVar2[7]);
    if (8 < CONCAT11(pcVar2[8],pcVar2[9])) {
      FUN_00b0e6b0();
      FUN_00a7f3c0(0x14,0x6b,0x11c,".\\ssl\\s2_srvr.c",0x19a);
      return 0xffffffff;
    }
    *(uint *)(unaff_ESI[0x30] + 4) = (uint)CONCAT11(pcVar2[8],pcVar2[9]);
    unaff_ESI[0xd] = 0x2031;
  }
  uVar8 = ((uint *)unaff_ESI[0xf])[1];
  if (*(uint *)unaff_ESI[0xf] < 0x3fff) {
    FUN_00b0e6b0();
    FUN_00a7f3c0(0x14,0x6b,0x44,".\\ssl\\s2_srvr.c",0x1a6);
    return 0xffffffff;
  }
  sVar6 = *(size_t *)(unaff_ESI[0x30] + 4);
  uVar1 = *(int *)(unaff_ESI[0x15] + 0xec) + *(int *)(unaff_ESI[0x15] + 0xe8) + 10 + sVar6;
  if (0x3fff < uVar1) {
    FUN_00b0e6b0();
    FUN_00a7f3c0(0x14,0x6b,0x128,".\\ssl\\s2_srvr.c",0x1ae);
    return 0xffffffff;
  }
  iVar3 = unaff_ESI[0x11];
  iVar5 = FUN_00b1af10();
  if (iVar5 != uVar1 - iVar3) {
    uVar4 = FUN_00b1b040();
    return uVar4;
  }
  if ((code *)unaff_ESI[0x19] != (code *)0x0) {
    (*(code *)unaff_ESI[0x19])(0,*unaff_ESI,0,uVar8,uVar1);
  }
  _Src = (void *)(uVar8 + 10);
  _memcpy((void *)(unaff_ESI[0x30] + 8),
          (void *)(*(int *)(unaff_ESI[0x15] + 0xec) + *(int *)(unaff_ESI[0x15] + 0xe8) + (int)_Src),
          sVar6);
  if (*(int *)(unaff_ESI[0x26] + 0x34) == 0) {
    FUN_00b0e6b0();
    FUN_00a7f3c0(0x14,0x6b,0xbd,".\\ssl\\s2_srvr.c",0x1be);
    return 0xffffffff;
  }
  iVar3 = unaff_ESI[0x15];
  iVar5 = *(int *)(iVar3 + 0xe8) + (int)_Src;
  sVar6 = FUN_00b0d880(unaff_ESI[0x26],*(undefined4 *)(iVar3 + 0xec),iVar5,iVar5,
                       (*(int *)(iVar3 + 0xc) != 0) + '\x01');
  uVar8 = *(uint *)(*(int *)(unaff_ESI[0x30] + 0xb4) + 0x20) & 2;
  iVar3 = FUN_00afc270(unaff_ESI[0x30],&uStack_8,&uStack_4,0,0,0);
  if (iVar3 == 0) {
    FUN_00b0e6b0();
    FUN_00a7f3c0(0x14,0x6b,0xce,".\\ssl\\s2_srvr.c",0x1ca);
    return 0;
  }
  if ((*(byte *)(*(int *)(unaff_ESI[0x30] + 0xb4) + 0x24) & 2) == 0) {
    local_c = 5;
  }
  else {
    uVar8 = 1;
    local_c = 8;
  }
  if ((int)sVar6 < 0) {
LAB_00b0dcb8:
    FUN_00a7f4b0();
    if (uVar8 == 0) {
      local_c = FUN_00a989a0(uStack_8);
    }
    iVar3 = FUN_00a86ec0(_Src,local_c);
    sVar6 = local_c;
    if (iVar3 < 1) {
      return 0;
    }
  }
  else {
    if (uVar8 == 0) {
      sVar7 = FUN_00a989a0(uStack_8);
      if (sVar6 == sVar7) goto LAB_00b0dcf5;
      goto LAB_00b0dcb8;
    }
    if ((sVar6 != local_c) ||
       (iVar3 = FUN_00a989a0(uStack_8), *(int *)(unaff_ESI[0x15] + 0xe8) + sVar6 != iVar3))
    goto LAB_00b0dcb8;
  }
  if (uVar8 != 0) {
    sVar6 = sVar6 + *(int *)(unaff_ESI[0x15] + 0xe8);
  }
LAB_00b0dcf5:
  if (0x30 < (int)sVar6) {
    FUN_00b0e6b0();
    FUN_00a7f3c0(0x14,0x6b,0x44,".\\ssl\\s2_srvr.c",0x201);
    return 0xffffffff;
  }
  *(size_t *)(unaff_ESI[0x30] + 0x10) = sVar6;
  _memcpy((void *)(unaff_ESI[0x30] + 0x14),_Src,sVar6);
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00b0dd50(undefined4 *param_1)

{
  int iVar1;
  code *pcVar2;
  uint uVar3;
  undefined4 uVar4;
  int iVar5;
  code *pcVar6;
  int iVar7;
  __time64_t _Var8;
  undefined4 local_4;
  
  local_4 = 0xb0dd5a;
  _Var8 = __time64((__time64_t *)0x0);
  local_4 = (undefined4)_Var8;
  FUN_00a86df0(&local_4,4,0);
  FUN_00a7f4b0();
  SetLastError(0);
  pcVar2 = (code *)param_1[0x34];
  if ((pcVar2 != (code *)0x0) ||
     (pcVar2 = *(code **)(param_1[0x39] + 0x9c), pcVar6 = (code *)0x0, pcVar2 != (code *)0x0)) {
    pcVar6 = pcVar2;
  }
  param_1[7] = param_1[7] + 1;
  uVar3 = FUN_00aa35c0();
  if (((uVar3 & 0x3000) == 0) || (uVar3 = FUN_00aa35c0(), (uVar3 & 0x4000) != 0)) {
    FUN_00afae80();
  }
  if (param_1[0x26] == 0) {
    FUN_00a7f3c0(0x14,0x7a,0xb3,".\\ssl\\s2_srvr.c",0xa9);
    return -1;
  }
  SetLastError(0);
  do {
    iVar1 = param_1[0xd];
    if (iVar1 < 0x2001) {
      if (iVar1 != 0x2000) {
        if (iVar1 == 3) {
          FUN_00a92a20();
          FUN_00afadc0(param_1);
          param_1[0xf] = 0;
          param_1[0x11] = 0;
          FUN_00afab20(param_1,2);
          iVar7 = 1;
          *(int *)(param_1[0x39] + 0x48) = *(int *)(param_1[0x39] + 0x48) + 1;
          if (pcVar6 != (code *)0x0) {
            (*pcVar6)(param_1,0x20,1);
          }
          goto LAB_00b0e0df;
        }
switchD_00b0de9b_caseD_2004:
        FUN_00a7f3c0(0x14,0x7a,0xff,".\\ssl\\s2_srvr.c",0x157);
        goto LAB_00b0e0dc;
      }
switchD_00b0de9b_caseD_2003:
      param_1[9] = 1;
      if (pcVar6 != (code *)0x0) {
        (*pcVar6)(param_1,0x10);
      }
      iVar7 = param_1[0xf];
      *param_1 = 2;
      param_1[1] = 0x2000;
      if (((iVar7 == 0) && (iVar7 = FUN_00a929e0(), iVar7 == 0)) ||
         (iVar5 = FUN_00a92a60(), iVar5 == 0)) goto LAB_00b0e0dc;
      param_1[0xf] = iVar7;
      param_1[0x11] = 0;
      *(int *)(param_1[0x39] + 0x40) = *(int *)(param_1[0x39] + 0x40) + 1;
      param_1[8] = FUN_00b0dd50;
      param_1[0xd] = 0x2010;
    }
    else {
      if (0x4000 < iVar1) {
        if (iVar1 != 0x6000) goto switchD_00b0de9b_caseD_2004;
        goto switchD_00b0de9b_caseD_2003;
      }
      if (iVar1 == 0x4000) goto switchD_00b0de9b_caseD_2003;
      switch(iVar1) {
      case 0x2003:
        goto switchD_00b0de9b_caseD_2003;
      default:
        goto switchD_00b0de9b_caseD_2004;
      case 0x2010:
      case 0x2011:
      case 0x2012:
        param_1[0xc] = 0;
        iVar7 = FUN_00b0cac0();
        if (iVar7 < 1) goto LAB_00b0e0df;
        param_1[0x11] = 0;
        param_1[0xd] = 0x2020;
        break;
      case 0x2020:
      case 0x2021:
        iVar7 = FUN_00b0cec0();
        if (iVar7 < 1) goto LAB_00b0e0df;
        param_1[0x11] = 0;
        param_1[0xd] = (-(uint)(param_1[0x1b] != 0) & 0x50) + 0x2030;
        break;
      case 0x2030:
      case 0x2031:
        iVar7 = FUN_00b0d920();
        if (iVar7 < 1) goto LAB_00b0e0df;
        param_1[0x11] = 0;
        param_1[0xd] = 0x2080;
        break;
      case 0x2040:
      case 0x2041:
        iVar7 = FUN_00b0d290();
        if (iVar7 < 1) goto LAB_00b0e0df;
        param_1[0x11] = 0;
        param_1[0xd] = (-(uint)(param_1[0x1b] != 0) & 0xfffffff2) + 0x2050;
        break;
      case 0x2042:
        iVar7 = FUN_00a83650(param_1[4],3,0);
        if (0 < iVar7) {
          param_1[6] = 2;
          iVar7 = FUN_00a83650(param_1[4],0xb,0);
          if (iVar7 < 1) {
LAB_00b0e0dc:
            iVar7 = -1;
LAB_00b0e0df:
            param_1[7] = param_1[7] + -1;
            if (pcVar6 != (code *)0x0) {
              (*pcVar6)(param_1,0x2002,iVar7);
            }
            return iVar7;
          }
          param_1[6] = 1;
        }
        uVar4 = FUN_00a837c0();
        param_1[4] = uVar4;
        param_1[0xd] = 0x2050;
        break;
      case 0x2050:
      case 0x2051:
        iVar7 = FUN_00b0d0d0();
        if (iVar7 < 1) goto LAB_00b0e0df;
        param_1[0x11] = 0;
        param_1[0xd] = 0x2070;
        break;
      case 0x2060:
      case 0x2061:
        iVar7 = FUN_00b0d300();
        if (iVar7 < 1) goto LAB_00b0e0df;
        param_1[0x11] = 0;
        param_1[0xd] = 3;
        break;
      case 0x2070:
      case 0x2071:
      case 0x2072:
      case 0x2073:
        if (((param_1[0x32] & 1) != 0) &&
           ((*(int *)(param_1[0x30] + 0x9c) == 0 || ((param_1[0x32] & 4) == 0)))) {
          iVar7 = FUN_00b0d380();
          if (iVar7 < 1) goto LAB_00b0e0df;
          param_1[0x11] = 0;
        }
        param_1[0xd] = 0x2060;
        break;
      case 0x2080:
        iVar7 = FUN_00b1b120(param_1,0);
        if (iVar7 == 0) goto LAB_00b0e0dc;
        *(undefined4 *)(param_1[0x15] + 4) = 0;
        param_1[0xd] = 0x2040;
      }
    }
    if ((pcVar6 != (code *)0x0) && (iVar7 = param_1[0xd], iVar7 != iVar1)) {
      param_1[0xd] = iVar1;
      (*pcVar6)(param_1);
      param_1[0xd] = iVar7;
    }
  } while( true );
}



undefined * FUN_00b0e1b0(void)

{
  return &DAT_00dccd50;
}



undefined4 FUN_00b0e1c0(void)

{
  return 7;
}



undefined * FUN_00b0e1d0(uint param_1)

{
  if (param_1 < 7) {
    return &DAT_00dccf60 + param_1 * -0x30;
  }
  return (undefined *)0x0;
}



undefined4 FUN_00b0e1f0(int param_1)

{
  uint uVar1;
  
  uVar1 = FUN_00aa35c0(param_1);
  if ((uVar1 & 0x3000) != 0) {
    return 0;
  }
  return *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x44);
}



void FUN_00b0e220(int param_1)

{
  int iVar1;
  
  if (param_1 != 0) {
    iVar1 = *(int *)(param_1 + 0x54);
    if (*(int *)(iVar1 + 0x30) != 0) {
      FUN_00a85120(*(int *)(iVar1 + 0x30));
    }
    if (*(int *)(iVar1 + 0x34) != 0) {
      FUN_00a85120(*(int *)(iVar1 + 0x34));
    }
    FUN_00a84330(iVar1,0x120);
    FUN_00a85120(iVar1);
    *(undefined4 *)(param_1 + 0x54) = 0;
  }
  return;
}



void FUN_00b0e270(undefined4 *param_1)

{
  void *_Dst;
  undefined4 uVar1;
  undefined4 uVar2;
  
  _Dst = (void *)param_1[0x15];
  uVar1 = *(undefined4 *)((int)_Dst + 0x30);
  uVar2 = *(undefined4 *)((int)_Dst + 0x34);
  _memset(_Dst,0,0x120);
  *(undefined4 *)((int)_Dst + 0x30) = uVar1;
  *(undefined4 *)((int)_Dst + 0x34) = uVar2;
  *(undefined4 *)((int)_Dst + 4) = 1;
  param_1[0x13] = uVar1;
  *param_1 = 2;
  param_1[0x14] = 0;
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int * FUN_00b0e2e0(byte *param_1)

{
  int *piVar1;
  undefined local_30 [8];
  uint local_28;
  undefined4 uStack_4;
  
  uStack_4 = 0xb0e2ea;
  local_28 = ((*param_1 | 0x200) << 8 | (uint)param_1[1]) << 8 | (uint)param_1[2];
  piVar1 = (int *)FUN_00afae60(local_30,&DAT_00dcce40,7);
  if ((piVar1 == (int *)0x0) || (*piVar1 == 0)) {
    piVar1 = (int *)0x0;
  }
  return piVar1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b0e370(int param_1)

{
  undefined4 uVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  char local_1d;
  undefined4 local_1c;
  undefined local_18 [20];
  undefined4 uStack_4;
  
  uStack_4 = 0xb0e37a;
  local_1d = '0';
  uVar1 = FUN_00a91950();
  local_1c = uVar1;
  FUN_00a91330(local_18);
  iVar2 = *(int *)(*(int *)(param_1 + 0xc0) + 0x10);
  iVar5 = *(int *)(param_1 + 0x54) + 0xa0;
  if ((iVar2 < 0) || (0x30 < iVar2)) {
    FUN_00a7f3c0(0x14,0xf1,0x44,".\\ssl\\s2_lib.c",0x1d5);
  }
  else {
    iVar2 = FUN_00a92600(uVar1);
    if (-1 < iVar2) {
      iVar3 = *(int *)(param_1 + 0x54);
      uVar4 = 0;
      if (*(int *)(iVar3 + 0x9c) != 0) {
        do {
          if (0x30 < (iVar2 - iVar3) + -0xa0 + iVar5) {
            FUN_00a7f3c0(0x14,0xf1,0x44,".\\ssl\\s2_lib.c",0x1e1);
            return 0;
          }
          FUN_00a91380(local_18,local_1c,0);
          iVar3 = *(int *)(*(int *)(param_1 + 0xc0) + 0x10);
          if ((iVar3 < 0) || (0x2f < iVar3)) {
            FUN_00a7fd60(".\\ssl\\s2_lib.c",0x1e9,
                         "s->session->master_key_length >= 0 && s->session->master_key_length < (int)sizeof(s->session->master_key)"
                        );
          }
          FUN_00a91530(local_18,*(int *)(param_1 + 0xc0) + 0x14,
                       *(undefined4 *)(*(int *)(param_1 + 0xc0) + 0x10));
          FUN_00a91530(local_18,&local_1d,1);
          local_1d = local_1d + '\x01';
          FUN_00a91530(local_18,*(int *)(param_1 + 0x54) + 0x68,
                       *(undefined4 *)(*(int *)(param_1 + 0x54) + 100));
          FUN_00a91530(local_18,*(int *)(param_1 + 0x54) + 0x8c,
                       *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x88));
          FUN_00a91540(local_18,iVar5,0);
          iVar3 = *(int *)(param_1 + 0x54);
          uVar4 = uVar4 + iVar2;
          iVar5 = iVar5 + iVar2;
        } while (uVar4 < *(uint *)(iVar3 + 0x9c));
      }
      FUN_00a915c0(local_18);
      return 1;
    }
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b0e530(undefined4 *param_1)

{
  uint uVar1;
  int iVar2;
  undefined4 local_4;
  
  uVar1 = param_1[0x35];
  local_4 = (uint)CONCAT11(*(undefined *)(param_1 + 0x36),(char)((uint)param_1[0x36] >> 8)) << 8;
  param_1[0x35] = 0;
  if (3 < uVar1) {
    FUN_00a7fd60(".\\ssl\\s2_lib.c",0x210,"error >= 0 && error <= (int)sizeof(buf)");
  }
  iVar2 = FUN_00b1af50(param_1,(int)&local_4 + (3 - uVar1),uVar1);
  if (iVar2 < 0) {
    param_1[0x35] = uVar1;
    return;
  }
  param_1[0x35] = uVar1 - iVar2;
  if ((uVar1 - iVar2 == 0) && ((code *)param_1[0x19] != (code *)0x0)) {
    (*(code *)param_1[0x19])(1,*param_1,0,&local_4,3,param_1,param_1[0x1a]);
  }
  return;
}



undefined4 FUN_00b0e600(int param_1)

{
  void *_Dst;
  int iVar1;
  
  _Dst = (void *)FUN_00a84f80(0x120,".\\ssl\\s2_lib.c",0x143);
  if (_Dst != (void *)0x0) {
    _memset(_Dst,0,0x120);
    iVar1 = FUN_00a84f80(0x8001,".\\ssl\\s2_lib.c",0x14b);
    *(int *)((int)_Dst + 0x30) = iVar1;
    if (iVar1 != 0) {
      iVar1 = FUN_00a84f80(0x8002,".\\ssl\\s2_lib.c",0x14f);
      *(int *)((int)_Dst + 0x34) = iVar1;
      if (iVar1 != 0) {
        *(void **)(param_1 + 0x54) = _Dst;
        FUN_00b0e270(param_1);
        return 1;
      }
    }
    if (*(int *)((int)_Dst + 0x34) != 0) {
      FUN_00a85120(*(int *)((int)_Dst + 0x34));
    }
    if (*(int *)((int)_Dst + 0x30) != 0) {
      FUN_00a85120(*(int *)((int)_Dst + 0x30));
    }
    FUN_00a85120(_Dst);
  }
  return 0;
}



void FUN_00b0e6b0(int param_1,undefined4 param_2)

{
  if (*(int *)(param_1 + 0xd4) == 0) {
    *(undefined4 *)(param_1 + 0xd4) = 3;
    *(undefined4 *)(param_1 + 0xd8) = param_2;
    FUN_00b0e530(param_1);
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b0e6e0(void *param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int unaff_ESI;
  uint uVar4;
  void *local_64;
  undefined4 local_60;
  uint local_5c;
  undefined local_58 [24];
  undefined local_40 [24];
  undefined local_28 [20];
  undefined local_14 [16];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_64;
  local_64 = param_1;
  local_60 = CONCAT31(local_60._1_3_,0x41);
  FUN_00a91330(local_58);
  FUN_00a92640(local_58,8);
  FUN_00a91330(local_40);
  iVar3 = 0;
  uVar4 = 0;
  if (0 < param_2) {
    do {
      uVar4 = uVar4 + 1;
      local_5c = uVar4;
      if (0x10 < uVar4) {
        FUN_00a7f3c0(0x14,0xee,0x44,".\\ssl\\s3_enc.c",0xb5);
        ___security_check_cookie_4();
        return;
      }
      if (uVar4 != 0) {
        _memset(local_14,local_60,uVar4);
      }
      local_60 = CONCAT31(local_60._1_3_,(char)local_60 + '\x01');
      uVar2 = FUN_00a924c0(0);
      FUN_00a91380(local_40,uVar2);
      FUN_00a91530(local_40,local_14,uVar4);
      FUN_00a91530(local_40,*(int *)(unaff_ESI + 0xc0) + 0x14,
                   *(undefined4 *)(*(int *)(unaff_ESI + 0xc0) + 0x10));
      FUN_00a91530(local_40,*(int *)(unaff_ESI + 0x58) + 0xa0,0x20);
      FUN_00a91530(local_40,*(int *)(unaff_ESI + 0x58) + 0xc0,0x20);
      FUN_00a91540(local_40,local_28,0);
      uVar2 = FUN_00a91950(0);
      FUN_00a91380(local_58,uVar2);
      FUN_00a91530(local_58,*(int *)(unaff_ESI + 0xc0) + 0x14,
                   *(undefined4 *)(*(int *)(unaff_ESI + 0xc0) + 0x10));
      FUN_00a91530(local_58,local_28,0x14);
      iVar1 = iVar3 + 0x10;
      if (param_2 < iVar1) {
        FUN_00a91540(local_58,local_28,0);
        _memcpy(local_64,local_28,param_2 - iVar3);
      }
      else {
        FUN_00a91540(local_58,local_64,0);
      }
      local_64 = (void *)((int)local_64 + 0x10);
      iVar3 = iVar1;
      uVar4 = local_5c;
    } while (iVar1 < param_2);
  }
  FUN_00a84330(local_28,0x14);
  FUN_00a915c0(local_58);
  FUN_00a915c0(local_40);
  ___security_check_cookie_4();
  return;
}



void FUN_00b0eda0(int param_1)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0x58);
  if (*(int *)(iVar1 + 0x378) != 0) {
    FUN_00a84330(*(undefined4 *)(iVar1 + 0x378),*(undefined4 *)(iVar1 + 0x374));
    FUN_00a85120(*(undefined4 *)(*(int *)(param_1 + 0x58) + 0x378));
    *(undefined4 *)(*(int *)(param_1 + 0x58) + 0x378) = 0;
    *(undefined4 *)(*(int *)(param_1 + 0x58) + 0x374) = 0;
    return;
  }
  *(undefined4 *)(iVar1 + 0x374) = 0;
  return;
}



void FUN_00b0ef90(int param_1)

{
  int iVar1;
  int iVar2;
  
  if (*(int *)(*(int *)(param_1 + 0x58) + 0x17c) != 0) {
    iVar2 = 0;
    do {
      iVar1 = *(int *)(*(int *)(param_1 + 0x58) + 0x17c);
      if (*(int *)(iVar1 + iVar2) != 0) {
        FUN_00a918e0(*(undefined4 *)(iVar1 + iVar2));
      }
      iVar2 = iVar2 + 4;
    } while (iVar2 < 0x18);
    FUN_00a85120(*(undefined4 *)(*(int *)(param_1 + 0x58) + 0x17c));
    *(undefined4 *)(*(int *)(param_1 + 0x58) + 0x17c) = 0;
  }
  return;
}



void FUN_00b0f000(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  
  if ((*(int *)(*(byte **)(param_1 + 0x58) + 0x178) != 0) &&
     ((**(byte **)(param_1 + 0x58) & 0x20) == 0)) {
    FUN_00a833e0();
    return;
  }
  iVar2 = 0;
  do {
    iVar1 = *(int *)(*(int *)(param_1 + 0x58) + 0x17c);
    if (*(int *)(iVar1 + iVar2) != 0) {
      FUN_00a91530(*(undefined4 *)(iVar1 + iVar2),param_2,param_3);
    }
    iVar2 = iVar2 + 4;
  } while (iVar2 < 0x18);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b0f060(int param_1)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  int iVar7;
  uint local_8;
  undefined4 local_4;
  
  iVar2 = param_1;
  local_4 = 0xb0f06a;
  FUN_00b0ef90(param_1);
  uVar3 = FUN_00a84f80(0x18,".\\ssl\\s3_enc.c",0x256);
  *(undefined4 *)(*(int *)(iVar2 + 0x58) + 0x17c) = uVar3;
  puVar1 = *(undefined4 **)(*(int *)(iVar2 + 0x58) + 0x17c);
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[2] = 0;
  puVar1[3] = 0;
  puVar1[4] = 0;
  puVar1[5] = 0;
  iVar4 = FUN_00a83650(*(undefined4 *)(*(int *)(iVar2 + 0x58) + 0x178),3,0,&local_4);
  if (0 < iVar4) {
    iVar7 = 0;
    iVar5 = FUN_00afc670(0,&local_8,&param_1);
    while (iVar5 != 0) {
      uVar6 = FUN_00b04a10(iVar2);
      if (((local_8 & uVar6) == 0) || (param_1 == 0)) {
        *(undefined4 *)(*(int *)(*(int *)(iVar2 + 0x58) + 0x17c) + iVar7 * 4) = 0;
      }
      else {
        uVar3 = FUN_00a91350();
        *(undefined4 *)(*(int *)(*(int *)(iVar2 + 0x58) + 0x17c) + iVar7 * 4) = uVar3;
        FUN_00a91380(*(undefined4 *)(*(int *)(*(int *)(iVar2 + 0x58) + 0x17c) + iVar7 * 4),param_1,0
                    );
        FUN_00a91530(*(undefined4 *)(*(int *)(*(int *)(iVar2 + 0x58) + 0x17c) + iVar7 * 4),local_4,
                     iVar4);
      }
      iVar7 = iVar7 + 1;
      iVar5 = FUN_00afc670(iVar7,&local_8,&param_1);
    }
    if ((**(byte **)(iVar2 + 0x58) & 0x20) == 0) {
      FUN_00a83270(*(undefined4 *)(*(byte **)(iVar2 + 0x58) + 0x178));
      *(undefined4 *)(*(int *)(iVar2 + 0x58) + 0x178) = 0;
    }
    return 1;
  }
  FUN_00a7f3c0(0x14,0x125,0x14c,".\\ssl\\s3_enc.c",0x25b);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __fastcall FUN_00b0f1d0(int param_1_00,int param_2_00,undefined4 param_1,undefined4 param_2)

{
  int iVar1;
  undefined4 uVar2;
  int unaff_EBX;
  uint local_64;
  undefined local_60 [24];
  undefined auStack_48 [4];
  undefined auStack_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_64;
  if ((*(int *)(*(int *)(param_2_00 + 0x58) + 0x178) == 0) ||
     (iVar1 = FUN_00b0f060(param_2_00), iVar1 != 0)) {
    local_64 = 0;
    do {
      iVar1 = *(int *)(*(int *)(param_2_00 + 0x58) + 0x17c);
      if (*(int *)(iVar1 + local_64 * 4) != 0) {
        uVar2 = FUN_00a92630(*(undefined4 *)(iVar1 + local_64 * 4));
        iVar1 = FUN_00a814c0(uVar2);
        if (iVar1 == param_1_00) {
          iVar1 = *(int *)(*(int *)(*(int *)(param_2_00 + 0x58) + 0x17c) + local_64 * 4);
          if (iVar1 != 0) {
            FUN_00a91330(local_60);
            FUN_00a92640(local_60,8);
            FUN_00a916d0(local_60,iVar1);
            uVar2 = FUN_00a92630(local_60);
            iVar1 = FUN_00a92600(uVar2);
            if (-1 < iVar1) {
              iVar1 = (int)(0x30 / (longlong)iVar1) * iVar1;
              if (unaff_EBX != 0) {
                FUN_00a91530(local_60);
              }
              FUN_00a91530(local_60,*(int *)(param_2_00 + 0xc0) + 0x14,
                           *(undefined4 *)(*(int *)(param_2_00 + 0xc0) + 0x10));
              FUN_00a91530(local_60,&DAT_0324530c,iVar1);
              FUN_00a91540(local_60,auStack_44,&local_64);
              uVar2 = FUN_00a92630(local_60,0);
              FUN_00a91380(local_60,uVar2);
              FUN_00a91530(local_60,*(int *)(param_2_00 + 0xc0) + 0x14,
                           *(undefined4 *)(*(int *)(param_2_00 + 0xc0) + 0x10));
              FUN_00a91530(local_60,&DAT_0324533c,iVar1);
              FUN_00a91530(local_60,auStack_44,local_64);
              FUN_00a91540(local_60,param_2,auStack_48);
              FUN_00a915c0(local_60);
              ___security_check_cookie_4();
              return;
            }
            goto LAB_00b0f275;
          }
          break;
        }
      }
      local_64 = local_64 + 1;
    } while (local_64 < 6);
    FUN_00a7f3c0(0x14,0x11d,0x144,".\\ssl\\s3_enc.c",0x2a3);
  }
LAB_00b0f275:
  ___security_check_cookie_4();
  return;
}



void FUN_00b0f3c0(int param_1)

{
  char *pcVar1;
  int iVar2;
  
  iVar2 = 7;
  do {
    pcVar1 = (char *)(iVar2 + param_1);
    *pcVar1 = *pcVar1 + '\x01';
    if (*pcVar1 != '\0') {
      return;
    }
    iVar2 = iVar2 + -1;
  } while (-1 < iVar2);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b0f3e0(int param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  char cVar1;
  char *pcVar2;
  char *pcVar3;
  undefined **ppuVar4;
  int iStack_68;
  int local_64;
  char *local_60;
  undefined local_5c [24];
  undefined auStack_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&iStack_68;
  local_64 = 0;
  FUN_00a91330(local_5c);
  ppuVar4 = &PTR_DAT_0324536c;
  do {
    FUN_00a91380(local_5c,*(undefined4 *)(*(int *)(param_1 + 0xe4) + 0x90),0);
    pcVar2 = *ppuVar4;
    local_60 = pcVar2 + 1;
    pcVar3 = pcVar2;
    do {
      cVar1 = *pcVar3;
      pcVar3 = pcVar3 + 1;
    } while (cVar1 != '\0');
    FUN_00a91530(local_5c,pcVar2,(int)pcVar3 - (int)local_60);
    FUN_00a91530(local_5c,param_3,param_4);
    FUN_00a91530(local_5c,*(int *)(param_1 + 0x58) + 0xc0,0x20);
    FUN_00a91530(local_5c,*(int *)(param_1 + 0x58) + 0xa0,0x20);
    FUN_00a91540(local_5c,auStack_44,&iStack_68);
    FUN_00a91380(local_5c,*(undefined4 *)(*(int *)(param_1 + 0xe4) + 0x8c),0);
    FUN_00a91530(local_5c,param_3,param_4);
    FUN_00a91530(local_5c,auStack_44,iStack_68);
    FUN_00a91540(local_5c,param_2,&iStack_68);
    local_64 = local_64 + iStack_68;
    ppuVar4 = ppuVar4 + 1;
    param_2 = param_2 + iStack_68;
  } while ((int)ppuVar4 < 0x3245378);
  FUN_00a915c0(local_5c);
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b0f670(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 local_c;
  undefined4 local_8;
  int local_4;
  
  iVar1 = param_1;
  local_4 = 0xb0f67a;
  if (*(int *)(*(int *)(param_1 + 0x58) + 0x374) != 0) {
    return 1;
  }
  iVar2 = FUN_00afc270(*(undefined4 *)(param_1 + 0xc0),&param_1,&local_c,0,0,&local_8);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x14,0x9d,0x8a,".\\ssl\\s3_enc.c",0x192);
    return 0;
  }
  *(int *)(*(int *)(iVar1 + 0x58) + 0x37c) = param_1;
  *(undefined4 *)(*(int *)(iVar1 + 0x58) + 0x380) = local_c;
  *(undefined4 *)(*(int *)(iVar1 + 0x58) + 0x38c) = local_8;
  iVar2 = FUN_00a92600(local_c);
  if (iVar2 < 0) {
    return 0;
  }
  local_4 = FUN_00a989a0(param_1);
  iVar3 = FUN_00aa3450(param_1);
  iVar2 = (iVar3 + local_4 + iVar2) * 2;
  FUN_00b0eda0(iVar1);
  iVar3 = FUN_00a84f80(iVar2,".\\ssl\\s3_enc.c",0x1a7);
  if (iVar3 == 0) {
    FUN_00a7f3c0(0x14,0x9d,0x41,".\\ssl\\s3_enc.c",0x1c5);
    return 0;
  }
  *(int *)(*(int *)(iVar1 + 0x58) + 0x374) = iVar2;
  *(int *)(*(int *)(iVar1 + 0x58) + 0x378) = iVar3;
  uVar4 = FUN_00b0e6e0(iVar3,iVar2);
  if ((*(uint *)(iVar1 + 0x100) & 0x800) == 0) {
    *(undefined4 *)(*(int *)(iVar1 + 0x58) + 0xe0) = 1;
    iVar2 = *(int *)(*(int *)(iVar1 + 0xc0) + 0xb4);
    if (iVar2 != 0) {
      if (*(int *)(iVar2 + 0x14) == 0x20) {
        *(undefined4 *)(*(int *)(iVar1 + 0x58) + 0xe0) = 0;
      }
      if (*(int *)(*(int *)(*(int *)(iVar1 + 0xc0) + 0xb4) + 0x14) == 4) {
        *(undefined4 *)(*(int *)(iVar1 + 0x58) + 0xe0) = 0;
      }
    }
  }
  return uVar4;
}



void FUN_00b0f810(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = *(int *)(*(int *)(param_1 + 0x58) + 0x178);
  if (iVar1 != 0) {
    FUN_00a83270(iVar1);
  }
  if (*(int *)(*(int *)(param_1 + 0x58) + 0x17c) != 0) {
    FUN_00b0ef90(param_1);
  }
  uVar2 = FUN_00a82d40();
  uVar2 = FUN_00a838c0(uVar2);
  *(undefined4 *)(*(int *)(param_1 + 0x58) + 0x178) = uVar2;
  FUN_00a83650(*(undefined4 *)(*(int *)(param_1 + 0x58) + 0x178),9,1,0);
  return;
}



int FUN_00b0fbb0(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  iVar1 = *(int *)(*(int *)(param_1 + 0x3c) + 4);
  iVar3 = *(int *)(param_1 + 0x48);
  iVar4 = *(int *)(param_1 + 0x44);
  *(undefined4 *)(param_1 + 0x18) = 2;
  iVar2 = FUN_00a833e0(*(undefined4 *)(param_1 + 0x10),iVar3 + iVar1,iVar4);
  while( true ) {
    if (iVar2 < 1) {
      *(int *)(param_1 + 0x44) = iVar4;
      *(int *)(param_1 + 0x48) = iVar3;
      return iVar2;
    }
    *(undefined4 *)(param_1 + 0x18) = 1;
    if (iVar2 == iVar4) break;
    iVar4 = iVar4 - iVar2;
    iVar3 = iVar3 + iVar2;
    *(undefined4 *)(param_1 + 0x18) = 2;
    iVar2 = FUN_00a833e0(*(undefined4 *)(param_1 + 0x10),iVar3 + iVar1,iVar4);
  }
  return iVar2 + iVar3;
}



uint FUN_00b0fc20(int param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  
  uVar2 = *(uint *)(param_1 + 0x50);
  if (param_2 <= uVar2) {
    return param_2;
  }
  iVar1 = *(int *)(param_1 + 0x4c);
  *(undefined4 *)(param_1 + 0x18) = 3;
  uVar2 = FUN_00a83320(*(undefined4 *)(param_1 + 0xc),uVar2 + iVar1,param_2 - uVar2);
  while( true ) {
    if ((int)uVar2 < 1) {
      return uVar2;
    }
    *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + uVar2;
    *(undefined4 *)(param_1 + 0x18) = 1;
    if (param_2 <= *(uint *)(param_1 + 0x50)) break;
    *(undefined4 *)(param_1 + 0x18) = 3;
    uVar2 = FUN_00a83320(*(undefined4 *)(param_1 + 0xc),*(int *)(param_1 + 0x50) + iVar1,
                         param_2 - *(int *)(param_1 + 0x50));
  }
  return *(uint *)(param_1 + 0x50);
}



undefined * FUN_00b0fca0(void)

{
  return &DAT_00dcd050;
}



undefined * FUN_00b0fcb0(void)

{
  return &DAT_00dcd0c8;
}



undefined * FUN_00b0fd00(void)

{
  return &DAT_00dcd140;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b0fd30(int *param_1)

{
  undefined *puVar1;
  int *piVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  char *pcVar6;
  undefined *_Dst;
  undefined4 *puVar7;
  char *pcVar8;
  undefined4 *puVar9;
  __time64_t _Var10;
  undefined4 uVar11;
  undefined4 uVar12;
  
  piVar3 = param_1;
  puVar1 = *(undefined **)(param_1[0xf] + 4);
  if (param_1[0xd] != 0x1110) goto LAB_00b0ff80;
  piVar2 = (int *)param_1[0x30];
  if (((((piVar2 == (int *)0x0) || (*piVar2 != *param_1)) ||
       ((piVar2[0x11] == 0 && (piVar2[0x39] == 0)))) || (piVar2[0x25] != 0)) &&
     (iVar4 = FUN_00affdf0(param_1,0), iVar4 == 0)) {
    return 0xffffffff;
  }
  iVar4 = param_1[0x16];
  _Var10 = __time64((__time64_t *)0x0);
  *(char *)(iVar4 + 0xc0) = (char)((ulonglong)_Var10 >> 0x18);
  *(char *)(iVar4 + 0xc1) = (char)((ulonglong)_Var10 >> 0x10);
  *(char *)(iVar4 + 0xc2) = (char)((ulonglong)_Var10 >> 8);
  *(char *)(iVar4 + 0xc3) = (char)_Var10;
  iVar4 = FUN_00a86ec0(iVar4 + 0xc4,0x1c);
  if (iVar4 < 1) {
    return 0xffffffff;
  }
  puVar1[4] = (char)((uint)param_1[0x44] >> 8);
  puVar1[5] = *(undefined *)(param_1 + 0x44);
  puVar7 = (undefined4 *)(param_1[0x16] + 0xc0);
  puVar9 = (undefined4 *)(puVar1 + 6);
  for (iVar4 = 8; iVar4 != 0; iVar4 = iVar4 + -1) {
    *puVar9 = *puVar7;
    puVar7 = puVar7 + 1;
    puVar9 = puVar9 + 1;
  }
  if (param_1[10] == 0) {
    param_1 = *(int **)(param_1[0x30] + 0x44);
  }
  else {
    param_1 = (int *)0x0;
  }
  puVar1[0x26] = (char)param_1;
  _Dst = puVar1 + 0x27;
  if (param_1 == (int *)0x0) {
LAB_00b0fe4d:
    uVar12 = FUN_00af9ed0(piVar3,_Dst + 2,0);
    iVar4 = FUN_00af9f30(piVar3,uVar12);
    if (iVar4 == 0) {
      uVar12 = 0x2f2;
      uVar11 = 0xb5;
      goto LAB_00b0ff37;
    }
    *_Dst = (char)((uint)iVar4 >> 8);
    _Dst[1] = (char)iVar4;
    if (((piVar3[0x40] & 0x20000U) == 0) && (*(int *)(piVar3[0x39] + 0x98) != 0)) {
      iVar5 = FUN_00a80ed0(*(int *)(piVar3[0x39] + 0x98));
    }
    else {
      iVar5 = 0;
    }
    _Dst[iVar4 + 2] = (char)iVar5 + '\x01';
    pcVar8 = _Dst + iVar4 + 2 + 1;
    iVar4 = 0;
    if (0 < iVar5) {
      do {
        pcVar6 = (char *)FUN_00a80ee0(*(undefined4 *)(piVar3[0x39] + 0x98),iVar4);
        *pcVar8 = *pcVar6;
        iVar4 = iVar4 + 1;
        pcVar8 = pcVar8 + 1;
      } while (iVar4 < iVar5);
    }
    *pcVar8 = '\0';
    iVar4 = FUN_00b070f0(piVar3);
    if (iVar4 < 1) {
      uVar12 = 0x318;
      uVar11 = 0xe2;
      goto LAB_00b0ff37;
    }
    iVar4 = FUN_00b05e40(piVar3,pcVar8 + 1,puVar1 + 0x4000);
    if (iVar4 != 0) {
      iVar5 = iVar4 - (int)(puVar1 + 4);
      *puVar1 = 1;
      puVar1[1] = (char)((uint)iVar5 >> 0x10);
      puVar1[2] = (char)((uint)iVar5 >> 8);
      puVar1[3] = (char)iVar5;
      piVar3[0xd] = 0x1111;
      piVar3[0x11] = iVar4 - (int)puVar1;
      piVar3[0x12] = 0;
LAB_00b0ff80:
      uVar12 = FUN_00b04e10(piVar3,0x16);
      return uVar12;
    }
    uVar12 = 0x31d;
  }
  else {
    if ((int)param_1 < 0x21) {
      _memcpy(_Dst,(void *)(piVar3[0x30] + 0x48),(size_t)param_1);
      _Dst = _Dst + (int)param_1;
      goto LAB_00b0fe4d;
    }
    uVar12 = 0x2e7;
  }
  uVar11 = 0x44;
LAB_00b0ff37:
  FUN_00a7f3c0(0x14,0x83,uVar11,".\\ssl\\s3_clnt.c",uVar12);
  return 0xffffffff;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00b0ffa0(uint *param_1)

{
  uint uVar1;
  uint *puVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  uint uVar6;
  uint *puVar7;
  uint uVar8;
  undefined4 *puVar9;
  uint *puVar10;
  undefined4 uVar11;
  undefined4 uStack_18;
  uint uStack_14;
  int iStack_10;
  uint *puStack_c;
  int iStack_8;
  int local_4;
  
  puVar2 = param_1;
  local_4 = 0xb0ffaa;
  iStack_8 = (**(code **)(param_1[2] + 0x30))(param_1,0x1120,0x1121,0xffffffff,20000,&local_4);
  if (local_4 == 0) {
    return iStack_8;
  }
  iVar3 = FUN_00a814c0(puVar2);
  if (((iVar3 == 0xfeff) || (iVar3 = FUN_00a814c0(puVar2), iVar3 == 0x100)) &&
     (*(int *)(puVar2[0x16] + 0x340) == 3)) {
    if (*(int *)puVar2[0x17] == 0) {
      *(undefined4 *)(puVar2[0x16] + 0x354) = 1;
      return 1;
    }
    uVar11 = 0x354;
  }
  else {
    if (*(int *)(puVar2[0x16] + 0x340) == 2) {
      param_1 = (uint *)puVar2[0x10];
      puStack_c = param_1;
      if (((uint)*(byte *)param_1 != (int)*puVar2 >> 8) ||
         (*(byte *)((int)param_1 + 1) != (byte)*puVar2)) {
        FUN_00a7f3c0(0x14,0x92,0x10a,".\\ssl\\s3_clnt.c",0x365);
        *puVar2 = (uint)*(byte *)((int)param_1 + 1) | *puVar2 & 0xff00;
        uStack_18 = 0x46;
        goto LAB_00b105f1;
      }
      puVar5 = (undefined4 *)((int)param_1 + 2);
      puVar9 = (undefined4 *)(puVar2[0x16] + 0xa0);
      for (iVar3 = 8; iVar3 != 0; iVar3 = iVar3 + -1) {
        *puVar9 = *puVar5;
        puVar5 = puVar5 + 1;
        puVar9 = puVar9 + 1;
      }
      uVar6 = (uint)*(byte *)((int)param_1 + 0x22);
      param_1 = (uint *)((int)param_1 + 0x23);
      uStack_14 = uVar6;
      if (0x20 < uVar6) {
        uStack_18 = 0x2f;
        FUN_00a7f3c0(0x14,0x92,300,".\\ssl\\s3_clnt.c",0x377);
        goto LAB_00b105f1;
      }
      if ((0x300 < (int)*puVar2) && (puVar2[0x5a] != 0)) {
        iStack_10 = 0;
        *(undefined4 *)(puVar2[0x30] + 0x10) = 0x30;
        iVar3 = (*(code *)puVar2[0x5a])
                          (puVar2,puVar2[0x30] + 0x14,puVar2[0x30] + 0x10,0,&iStack_10,puVar2[0x5b])
        ;
        if (iVar3 != 0) {
          iVar3 = iStack_10;
          if (iStack_10 == 0) {
            iVar3 = (**(code **)(puVar2[2] + 0x48))((byte *)(uVar6 + (int)param_1));
          }
          *(int *)(puVar2[0x30] + 0xb4) = iVar3;
        }
      }
      uVar8 = uVar6;
      if ((uVar6 == 0) || (uVar1 = puVar2[0x30], uVar6 != *(uint *)(uVar1 + 0x44))) {
LAB_00b10236:
        puVar2[0x1b] = 0;
        if ((*(int *)(puVar2[0x30] + 0x44) == 0) || (iVar3 = FUN_00affdf0(puVar2,0), iVar3 != 0)) {
          *(uint *)(puVar2[0x30] + 0x44) = uVar8;
          _memcpy((void *)(puVar2[0x30] + 0x48),param_1,uVar8);
          goto LAB_00b10286;
        }
      }
      else {
        puVar7 = (uint *)(uVar1 + 0x48);
        puVar10 = param_1;
        for (; uVar8 = uStack_14, 3 < uVar6; uVar6 = uVar6 - 4) {
          if (*puVar10 != *puVar7) goto LAB_00b10236;
          puVar7 = puVar7 + 1;
          puVar10 = puVar10 + 1;
        }
        if ((uVar6 != 0) &&
           ((*(byte *)puVar7 != *(byte *)puVar10 ||
            ((1 < uVar6 &&
             ((*(byte *)((int)puVar7 + 1) != *(byte *)((int)puVar10 + 1) ||
              ((2 < uVar6 && (*(byte *)((int)puVar7 + 2) != *(byte *)((int)puVar10 + 2)))))))))))
        goto LAB_00b10236;
        uVar6 = puVar2[0x27];
        if (uVar6 != *(uint *)(uVar1 + 0x68)) {
LAB_00b10207:
          uStack_18 = 0x2f;
          FUN_00a7f3c0(0x14,0x92,0x110,".\\ssl\\s3_clnt.c",0x394);
          goto LAB_00b105f1;
        }
        puVar10 = puVar2 + 0x28;
        puVar7 = (uint *)(uVar1 + 0x6c);
        for (; 3 < uVar6; uVar6 = uVar6 - 4) {
          if (*puVar7 != *puVar10) goto LAB_00b10207;
          puVar10 = puVar10 + 1;
          puVar7 = puVar7 + 1;
        }
        if ((uVar6 != 0) &&
           ((*(char *)puVar10 != *(char *)puVar7 ||
            ((1 < uVar6 &&
             ((*(char *)((int)puVar10 + 1) != *(char *)((int)puVar7 + 1) ||
              ((2 < uVar6 && (*(char *)((int)puVar10 + 2) != *(char *)((int)puVar7 + 2)))))))))))
        goto LAB_00b10207;
        puVar2[0x1b] = 1;
LAB_00b10286:
        param_1 = (uint *)((int)param_1 + uVar8);
        iVar3 = (**(code **)(puVar2[2] + 0x48))(param_1);
        if (iVar3 == 0) {
          uStack_18 = 0x2f;
          FUN_00a7f3c0(0x14,0x92,0xf8,".\\ssl\\s3_clnt.c",0x3af);
          goto LAB_00b105f1;
        }
        if (((*(byte *)(iVar3 + 0x1c) & 4) != 0) &&
           (((*puVar2 & 0xffffff00) != 0x300 || ((int)*puVar2 < 0x303)))) {
          uStack_18 = 0x2f;
          FUN_00a7f3c0(0x14,0x92,0x105,".\\ssl\\s3_clnt.c",0x3b7);
          goto LAB_00b105f1;
        }
        iVar4 = (**(code **)(puVar2[2] + 0x4c))(0,0);
        param_1 = (uint *)((int)param_1 + iVar4);
        uVar11 = FUN_00af9f00(puVar2);
        iVar4 = FUN_00a81100(uVar11,iVar3);
        if (iVar4 < 0) {
          uStack_18 = 0x2f;
          FUN_00a7f3c0(0x14,0x92,0x105,".\\ssl\\s3_clnt.c",0x3c2);
          goto LAB_00b105f1;
        }
        iVar4 = *(int *)(puVar2[0x30] + 0xb4);
        if (iVar4 != 0) {
          *(undefined4 *)(puVar2[0x30] + 0xb8) = *(undefined4 *)(iVar4 + 8);
        }
        if ((puVar2[0x1b] != 0) && (*(int *)(puVar2[0x30] + 0xb8) != *(int *)(iVar3 + 8))) {
          uStack_18 = 0x2f;
          FUN_00a7f3c0(0x14,0x92,0xc5,".\\ssl\\s3_clnt.c",0x3d4);
          goto LAB_00b105f1;
        }
        *(int *)(puVar2[0x16] + 0x344) = iVar3;
        if ((((*puVar2 & 0xffffff00) == 0x300) && (0x302 < (int)*puVar2)) ||
           (iVar3 = FUN_00b0f060(puVar2), iVar3 != 0)) {
          uVar6 = (uint)*(byte *)param_1;
          param_1 = (uint *)((int)param_1 + 1);
          if ((puVar2[0x1b] != 0) && (uVar6 != *(uint *)(puVar2[0x30] + 0xb0))) {
            uStack_18 = 0x2f;
            FUN_00a7f3c0(0x14,0x92,0x158,".\\ssl\\s3_clnt.c",0x3f8);
            goto LAB_00b105f1;
          }
          if (uVar6 != 0) {
            if ((puVar2[0x40] & 0x20000) != 0) {
              uStack_18 = 0x2f;
              FUN_00a7f3c0(0x14,0x92,0x157,".\\ssl\\s3_clnt.c",0x400);
              goto LAB_00b105f1;
            }
            uVar6 = FUN_00afd9e0(*(undefined4 *)(puVar2[0x39] + 0x98),uVar6);
            if (uVar6 == 0) {
              uStack_18 = 0x2f;
              FUN_00a7f3c0(0x14,0x92,0x101,".\\ssl\\s3_clnt.c",0x409);
              goto LAB_00b105f1;
            }
          }
          *(uint *)(puVar2[0x16] + 0x38c) = uVar6;
          if (0x2ff < (int)*puVar2) {
            iVar3 = FUN_00b06bb0(puVar2,&param_1,puStack_c,iStack_8,&uStack_18);
            if (iVar3 == 0) {
              FUN_00a7f3c0(0x14,0x92,0xe3,".\\ssl\\s3_clnt.c",0x419);
              goto LAB_00b105f1;
            }
            iVar3 = FUN_00b07470(puVar2);
            if (iVar3 < 1) {
              FUN_00a7f3c0(0x14,0x92,0x113,".\\ssl\\s3_clnt.c",0x41e);
              return -1;
            }
          }
          if (param_1 == (uint *)((int)puStack_c + iStack_8)) {
            return 1;
          }
          uStack_18 = 0x32;
          FUN_00a7f3c0(0x14,0x92,0x73,".\\ssl\\s3_clnt.c",0x428);
          goto LAB_00b105f1;
        }
      }
      uStack_18 = 0x50;
      goto LAB_00b105f1;
    }
    uVar11 = 0x35d;
  }
  uStack_18 = 10;
  FUN_00a7f3c0(0x14,0x92,0x72,".\\ssl\\s3_clnt.c",uVar11);
LAB_00b105f1:
  FUN_00b00df0(puVar2,2,uStack_18);
  return -1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00b10610(undefined *param_1)

{
  int iVar1;
  bool bVar2;
  undefined *puVar3;
  int iVar4;
  int *piVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  undefined4 uVar9;
  uint uVar10;
  undefined *puVar11;
  undefined4 uVar12;
  undefined4 uVar13;
  int local_18;
  int local_14;
  int local_10;
  int local_c;
  int local_8;
  uint uStack_4;
  
  puVar3 = param_1;
  uStack_4 = 0xb1061a;
  local_c = -1;
  local_18 = 0;
  local_14 = 0;
  local_10 = 0;
  iVar4 = (**(code **)(*(int *)(param_1 + 8) + 0x30))
                    (param_1,0x1130,0x1131,0xffffffff,*(undefined4 *)(param_1 + 0x108),&local_8);
  if (local_8 == 0) {
    return iVar4;
  }
  iVar6 = *(int *)(puVar3 + 0x58);
  iVar1 = *(int *)(iVar6 + 0x340);
  if ((iVar1 == 0xc) ||
     (((*(byte *)(*(int *)(iVar6 + 0x344) + 0x10) & 0x20) != 0 && (iVar1 == 0xe)))) {
    *(undefined4 *)(iVar6 + 0x354) = 1;
    return 1;
  }
  if (iVar1 == 0xb) {
    puVar11 = *(undefined **)(puVar3 + 0x40);
    local_14 = FUN_00a81010();
    if (local_14 == 0) {
      uVar9 = 0x45a;
LAB_00b106bf:
      FUN_00a7f3c0(0x14,0x90,0x41,".\\ssl\\s3_clnt.c",uVar9);
      goto LAB_00b10a1a;
    }
    uVar8 = (uint)CONCAT21(CONCAT11(*puVar11,puVar11[1]),puVar11[2]);
    puVar11 = puVar11 + 3;
    if (uVar8 + 3 != iVar4) {
      uVar13 = 0x462;
      uVar9 = 0x32;
      uVar12 = 0x9f;
      goto LAB_00b10901;
    }
    uVar7 = 0;
    if (uVar8 != 0) {
      do {
        local_18 = 0;
        uVar10 = (uint)CONCAT21(CONCAT11(*puVar11,puVar11[1]),puVar11[2]);
        uStack_4 = uVar10 + 3 + uVar7;
        if (uVar8 < uStack_4) {
          uVar13 = 0x46b;
          uVar9 = 0x32;
          uVar12 = 0x87;
          goto LAB_00b10901;
        }
        param_1 = puVar11 + 3;
        local_18 = FUN_00a81280(0,&param_1,uVar10);
        if (local_18 == 0) {
          uVar13 = 0x474;
          uVar9 = 0x2a;
          uVar12 = 0xd;
          goto LAB_00b10901;
        }
        if (param_1 != puVar11 + 3 + uVar10) {
          uVar13 = 0x47a;
          uVar9 = 0x32;
          uVar12 = 0x87;
          goto LAB_00b10901;
        }
        iVar4 = FUN_00a80df0(local_14,local_18);
        if (iVar4 == 0) {
          uVar9 = 0x47f;
          goto LAB_00b106bf;
        }
        uVar7 = uStack_4;
        puVar11 = param_1;
      } while (uStack_4 < uVar8);
    }
    local_18 = 0;
    iVar4 = FUN_00aff900(puVar3,local_14);
    if ((*(int *)(puVar3 + 200) != 0) && (iVar4 < 1)) {
      uVar9 = FUN_00b05820(*(undefined4 *)(puVar3 + 0xec));
      FUN_00a7f3c0(0x14,0x90,0x86,".\\ssl\\s3_clnt.c",0x490);
      FUN_00b00df0(puVar3,2,uVar9);
      goto LAB_00b10a1a;
    }
    FUN_00a7f4b0();
    piVar5 = (int *)FUN_00aff7d0();
    if (piVar5 == (int *)0x0) goto LAB_00b10a1a;
    if (*(int *)(*(int *)(puVar3 + 0xc0) + 0x98) != 0) {
      FUN_00aff830(*(int *)(*(int *)(puVar3 + 0xc0) + 0x98));
    }
    *(int **)(*(int *)(puVar3 + 0xc0) + 0x98) = piVar5;
    *piVar5 = local_14;
    iVar4 = FUN_00a80ee0(local_14,0);
    local_14 = 0;
    local_10 = FUN_00a82c40(iVar4);
    if (((*(byte *)(*(int *)(*(int *)(puVar3 + 0x58) + 0x344) + 0xc) & 0x10) != 0) &&
       ((*(byte *)(*(int *)(*(int *)(puVar3 + 0x58) + 0x344) + 0x10) & 0x20) != 0)) {
      bVar2 = false;
LAB_00b108cd:
      iVar6 = FUN_00b05790(iVar4,local_10);
      if (bVar2) {
        if (iVar6 < 0) {
          uVar13 = 0x4bf;
          uVar12 = 0xf7;
          goto LAB_00b108fc;
        }
        piVar5[1] = iVar6;
        FUN_00a7fe40(iVar4 + 0x10,1,3,".\\ssl\\s3_clnt.c",0x4c6);
        iVar6 = iVar6 * 3 + 3;
        if (piVar5[iVar6] != 0) {
          FUN_00a812c0(piVar5[iVar6]);
        }
        piVar5[iVar6] = iVar4;
        piVar5[2] = (int)(piVar5 + iVar6);
        if (*(int *)(*(int *)(puVar3 + 0xc0) + 0x9c) != 0) {
          FUN_00a812c0(*(int *)(*(int *)(puVar3 + 0xc0) + 0x9c));
        }
        FUN_00a7fe40(iVar4 + 0x10,1,3,".\\ssl\\s3_clnt.c",0x4d0);
        *(int *)(*(int *)(puVar3 + 0xc0) + 0x9c) = iVar4;
      }
      else {
        piVar5[1] = iVar6;
        piVar5[2] = 0;
        if (*(int *)(*(int *)(puVar3 + 0xc0) + 0x9c) != 0) {
          FUN_00a812c0(*(int *)(*(int *)(puVar3 + 0xc0) + 0x9c));
        }
        *(undefined4 *)(*(int *)(puVar3 + 0xc0) + 0x9c) = 0;
      }
      *(undefined4 *)(*(int *)(puVar3 + 0xc0) + 0xa0) = *(undefined4 *)(puVar3 + 0xec);
      local_18 = 0;
      local_c = 1;
      goto LAB_00b10a1a;
    }
    bVar2 = true;
    if ((local_10 != 0) && (iVar6 = FUN_00a81380(local_10), iVar6 == 0)) goto LAB_00b108cd;
    uVar13 = 0x4b5;
    uVar12 = 0xef;
LAB_00b108fc:
    local_18 = 0;
    uVar9 = 2;
  }
  else {
    uVar13 = 0x453;
    uVar9 = 10;
    uVar12 = 0x72;
  }
LAB_00b10901:
  FUN_00a7f3c0(0x14,0x90,uVar12,".\\ssl\\s3_clnt.c",uVar13);
  FUN_00b00df0(puVar3,2,uVar9);
LAB_00b10a1a:
  FUN_00a816d0(local_10);
  FUN_00a812c0(local_18);
  FUN_00a81120(local_14,FUN_00a812c0);
  return local_c;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b10a70(uint *param_1)

{
  uint uVar1;
  undefined4 uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  undefined *puVar8;
  char *pcVar9;
  byte *pbVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  uint uStack_158;
  uint uStack_154;
  int *local_150;
  uint uStack_14c;
  int iStack_148;
  int local_144;
  int local_140;
  int local_13c;
  int local_138;
  int local_134;
  char *pcStack_130;
  undefined auStack_12c [24];
  undefined4 uStack_114;
  int local_110;
  uint uStack_10c;
  undefined auStack_108 [132];
  undefined auStack_84 [128];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&uStack_158;
  local_150 = (int *)0x0;
  local_138 = 0;
  local_140 = 0;
  local_134 = 0;
  local_13c = 0;
  local_144 = 0;
  uVar1 = (**(code **)(param_1[2] + 0x30))
                    (param_1,0x1140,0x1141,0xffffffff,param_1[0x42],&local_110);
  uStack_154 = uVar1;
  if (local_110 == 0) goto LAB_00b117e7;
  if (*(int *)(param_1[0x16] + 0x340) != 0xc) {
    if ((*(uint *)(*(int *)(param_1[0x16] + 0x344) + 0xc) & 0x100) != 0) {
      uVar2 = FUN_00aff7d0();
      *(undefined4 *)(param_1[0x30] + 0x98) = uVar2;
      if (*(int *)(param_1[0x39] + 0x14c) != 0) {
        FUN_00a85120(*(int *)(param_1[0x39] + 0x14c));
      }
      *(undefined4 *)(param_1[0x39] + 0x14c) = 0;
    }
    *(undefined4 *)(param_1[0x16] + 0x354) = 1;
    ___security_check_cookie_4();
    return;
  }
  pcVar9 = (char *)param_1[0x10];
  pcStack_130 = pcVar9;
  if (*(int *)(param_1[0x30] + 0x98) == 0) {
    uVar2 = FUN_00aff7d0();
    *(undefined4 *)(param_1[0x30] + 0x98) = uVar2;
  }
  else {
    iVar7 = *(int *)(*(int *)(param_1[0x30] + 0x98) + 0x6c);
    if (iVar7 != 0) {
      FUN_00a8e490(iVar7);
      *(undefined4 *)(*(int *)(param_1[0x30] + 0x98) + 0x6c) = 0;
    }
    iVar7 = *(int *)(*(int *)(param_1[0x30] + 0x98) + 0x70);
    if (iVar7 != 0) {
      FUN_00a8ef50(iVar7);
      *(undefined4 *)(*(int *)(param_1[0x30] + 0x98) + 0x70) = 0;
    }
    iVar7 = *(int *)(*(int *)(param_1[0x30] + 0x98) + 0x74);
    if (iVar7 != 0) {
      FUN_00a8e900(iVar7);
      *(undefined4 *)(*(int *)(param_1[0x30] + 0x98) + 0x74) = 0;
    }
  }
  uStack_14c = *(uint *)(*(int *)(param_1[0x16] + 0x344) + 0x10);
  uVar3 = *(uint *)(*(int *)(param_1[0x16] + 0x344) + 0xc);
  FUN_00a91330(auStack_12c);
  uStack_10c = uVar3 & 0x100;
  if (uStack_10c != 0) {
    uVar1 = (uint)CONCAT11(*pcVar9,pcVar9[1]);
    iStack_148 = uVar1 + 2;
    uVar2 = 0x28;
    uStack_158 = uVar1;
    if (CONCAT11(*pcVar9,pcVar9[1]) < 0x81) {
      if ((int)uStack_154 < iStack_148) {
        uVar12 = 0x55c;
        uVar2 = 0x32;
        uVar11 = 0x13c;
      }
      else {
        _memcpy(auStack_108,pcVar9 + 2,uVar1);
        _memset(auStack_108 + uVar1,0,0x81 - uVar1);
        if (*(int *)(param_1[0x39] + 0x14c) != 0) {
          FUN_00a85120(*(int *)(param_1[0x39] + 0x14c));
        }
        uVar11 = FUN_00a852b0(auStack_108);
        *(undefined4 *)(param_1[0x39] + 0x14c) = uVar11;
        if (*(int *)(param_1[0x39] + 0x14c) != 0) {
          uStack_154 = uStack_154 - iStack_148;
          goto LAB_00b10cff;
        }
        uVar12 = 0x56a;
        uVar11 = 0x41;
      }
    }
    else {
      uVar12 = 0x555;
      uVar11 = 0x92;
    }
    goto LAB_00b11764;
  }
  if ((uVar3 & 0x400) != 0) {
    uVar3 = (uint)CONCAT11(*pcVar9,pcVar9[1]);
    uStack_158 = uVar3;
    if ((int)(uVar3 + 2) <= (int)uVar1) {
      uVar4 = FUN_00a9acb0(pcVar9 + 2,uVar3,0);
      param_1[0x6a] = uVar4;
      if (uVar4 == 0) {
        uVar2 = 0x580;
      }
      else {
        pcVar9 = pcVar9 + 2 + uStack_158;
        uStack_158 = (uint)CONCAT11(*pcVar9,pcVar9[1]);
        iVar7 = uVar3 + 4 + uStack_158;
        pcVar9 = pcVar9 + 2;
        if ((int)uVar1 < iVar7) {
          uVar12 = 0x58a;
          uVar2 = 0x32;
          uVar11 = 0x15d;
          goto LAB_00b11764;
        }
        uVar3 = FUN_00a9acb0(pcVar9,uStack_158,0);
        param_1[0x6b] = uVar3;
        if (uVar3 == 0) {
          uVar2 = 0x58f;
        }
        else {
          pbVar10 = (byte *)(pcVar9 + uStack_158);
          uStack_158 = (uint)*pbVar10;
          iVar7 = iVar7 + 1 + uStack_158;
          if ((int)uVar1 < iVar7) {
            uVar12 = 0x59a;
            uVar2 = 0x32;
            uVar11 = 0x15f;
            goto LAB_00b11764;
          }
          uVar1 = FUN_00a9acb0(pbVar10 + 1,uStack_158,0);
          param_1[0x6c] = uVar1;
          if (uVar1 == 0) {
            uVar2 = 0x59f;
          }
          else {
            pbVar10 = pbVar10 + 1 + uStack_158;
            uStack_158 = (uint)CONCAT11(*pbVar10,pbVar10[1]);
            iVar7 = iVar7 + 2 + uStack_158;
            iStack_148 = iVar7;
            if ((int)uStack_154 < iVar7) {
              uVar12 = 0x5a9;
              uVar2 = 0x32;
              uVar11 = 0x15c;
              goto LAB_00b11764;
            }
            uVar1 = FUN_00a9acb0(pbVar10 + 2,uStack_158,0);
            param_1[0x6d] = uVar1;
            if (uVar1 != 0) {
              pbVar10 = pbVar10 + 2 + uStack_158;
              uStack_154 = uStack_154 - iVar7;
              if ((uStack_14c & 1) == 0) {
                if ((uStack_14c & 2) == 0) goto LAB_00b10cff;
                uVar2 = *(undefined4 *)(*(int *)(param_1[0x30] + 0x98) + 0x24);
              }
              else {
                uVar2 = *(undefined4 *)(*(int *)(param_1[0x30] + 0x98) + 0xc);
              }
              local_150 = (int *)FUN_00a82c40(uVar2);
              goto LAB_00b10ed6;
            }
            uVar2 = 0x5ae;
          }
        }
      }
LAB_00b10d8f:
      FUN_00a7f3c0(0x14,0x8d,3,".\\ssl\\s3_clnt.c",uVar2);
      goto LAB_00b1177f;
    }
    uVar12 = 0x57b;
    uVar2 = 0x32;
    uVar11 = 0x15e;
    goto LAB_00b11764;
  }
  if ((uVar3 & 1) == 0) {
    if ((uVar3 & 8) != 0) {
      local_140 = FUN_00a8f060();
      if (local_140 == 0) {
        FUN_00a7f3c0(0x14,0x8d,5,".\\ssl\\s3_clnt.c",0x5fe);
        goto LAB_00b1177f;
      }
      uVar3 = (uint)CONCAT11(*pcVar9,pcVar9[1]);
      uStack_158 = uVar3;
      if ((int)uVar1 < (int)(uVar3 + 2)) {
        uVar12 = 0x606;
        uVar2 = 0x32;
        uVar11 = 0x6e;
        goto LAB_00b11764;
      }
      iVar7 = FUN_00a9acb0(pcVar9 + 2,uVar3,0);
      *(int *)(local_140 + 8) = iVar7;
      if (iVar7 == 0) {
        uVar2 = 0x60b;
        goto LAB_00b10d8f;
      }
      pcVar9 = pcVar9 + 2 + uStack_158;
      uStack_158 = (uint)CONCAT11(*pcVar9,pcVar9[1]);
      iVar7 = uVar3 + 4 + uStack_158;
      if ((int)uVar1 < iVar7) {
        uVar12 = 0x615;
        uVar2 = 0x32;
        uVar11 = 0x6c;
        goto LAB_00b11764;
      }
      iVar6 = FUN_00a9acb0(pcVar9 + 2,uStack_158,0);
      *(int *)(local_140 + 0xc) = iVar6;
      if (iVar6 == 0) {
        uVar2 = 0x61a;
        goto LAB_00b10d8f;
      }
      pcVar9 = pcVar9 + 2 + uStack_158;
      uStack_158 = (uint)CONCAT11(*pcVar9,pcVar9[1]);
      iVar7 = iVar7 + 2 + uStack_158;
      iStack_148 = iVar7;
      if ((int)uStack_154 < iVar7) {
        uVar12 = 0x624;
        uVar2 = 0x32;
        uVar11 = 0x6d;
        goto LAB_00b11764;
      }
      iVar5 = FUN_00a9acb0(pcVar9 + 2,uStack_158,0);
      iVar6 = local_140;
      *(int *)(local_140 + 0x14) = iVar5;
      if (iVar5 == 0) {
        uVar2 = 0x629;
        goto LAB_00b10d8f;
      }
      pbVar10 = (byte *)(pcVar9 + 2 + uStack_158);
      uStack_154 = uStack_154 - iVar7;
      if ((uStack_14c & 1) == 0) {
        if ((uStack_14c & 2) != 0) {
          uVar2 = *(undefined4 *)(*(int *)(param_1[0x30] + 0x98) + 0x24);
          goto LAB_00b1120b;
        }
      }
      else {
        uVar2 = *(undefined4 *)(*(int *)(param_1[0x30] + 0x98) + 0xc);
LAB_00b1120b:
        local_150 = (int *)FUN_00a82c40(uVar2);
      }
      *(int *)(*(int *)(param_1[0x30] + 0x98) + 0x70) = iVar6;
      local_140 = 0;
      goto LAB_00b10ed6;
    }
    if ((uVar3 & 6) != 0) {
      uVar12 = 0x642;
      uVar2 = 0x2f;
      uVar11 = 0xeb;
      goto LAB_00b11764;
    }
    if (-1 < (char)uVar3) {
      if (uVar3 == 0) goto LAB_00b10cff;
      uVar12 = 0x6af;
      uVar2 = 10;
      uVar11 = 0xf4;
      goto LAB_00b11764;
    }
    iVar7 = FUN_00a8e8a0();
    local_134 = iVar7;
    if (iVar7 == 0) {
      FUN_00a7f3c0(0x14,0x8d,0x41,".\\ssl\\s3_clnt.c",0x64f);
      goto LAB_00b1177f;
    }
    if ((((int)uVar1 < 3) || (*pcVar9 != '\x03')) || (iVar6 = FUN_00b05cc0(pcVar9[2]), iVar6 == 0))
    {
      uVar12 = 0x662;
      uVar2 = 0x50;
      uVar11 = 0x13a;
      goto LAB_00b11764;
    }
    iVar6 = FUN_00aa5210(iVar6);
    if (iVar6 == 0) {
      FUN_00a7f3c0(0x14,0x8d,0x10,".\\ssl\\s3_clnt.c",0x669);
    }
    else {
      iVar5 = FUN_00a8ec70(iVar7,iVar6);
      if (iVar5 != 0) {
        FUN_00aa4210(iVar6);
        uVar2 = FUN_00a7fa30(iVar7);
        uStack_114 = uVar2;
        if (((*(byte *)(*(int *)(param_1[0x16] + 0x344) + 0x20) & 2) != 0) &&
           (iVar7 = FUN_00aa3760(uVar2), 0xa3 < iVar7)) {
          uVar12 = 0x679;
          uVar2 = 0x3c;
          uVar11 = 0x136;
          goto LAB_00b11764;
        }
        local_144 = FUN_00aa3960(uVar2);
        if ((local_144 == 0) || (local_13c = FUN_00aa49c0(), local_13c == 0)) {
          FUN_00a7f3c0(0x14,0x8d,0x41,".\\ssl\\s3_clnt.c",0x683);
          goto LAB_00b1177f;
        }
        uVar1 = (uint)(byte)pcVar9[3];
        iVar7 = uVar1 + 4;
        iStack_148 = iVar7;
        if (((int)uStack_154 < iVar7) ||
           (iVar6 = FUN_00ae8fb0(uStack_114,local_144,pcVar9 + 4,uVar1,local_13c), iVar6 == 0)) {
          uVar12 = 0x68f;
          uVar2 = 0x32;
          uVar11 = 0x132;
          goto LAB_00b11764;
        }
        uStack_154 = uStack_154 - iVar7;
        pbVar10 = (byte *)(pcVar9 + 4 + uVar1);
        if ((uStack_14c & 1) == 0) {
          if ((uStack_14c & 0x40) != 0) {
            uVar2 = *(undefined4 *)(*(int *)(param_1[0x30] + 0x98) + 0x48);
            goto LAB_00b113d4;
          }
        }
        else {
          uVar2 = *(undefined4 *)(*(int *)(param_1[0x30] + 0x98) + 0xc);
LAB_00b113d4:
          local_150 = (int *)FUN_00a82c40(uVar2);
        }
        iVar6 = local_134;
        FUN_00a8ecd0(local_134,local_144);
        *(int *)(*(int *)(param_1[0x30] + 0x98) + 0x74) = iVar6;
        local_134 = 0;
        FUN_00aa4a20(local_13c);
        local_13c = 0;
        FUN_00aa3a10(local_144);
        local_144 = 0;
        goto LAB_00b10ed6;
      }
      FUN_00a7f3c0(0x14,0x8d,0x10,".\\ssl\\s3_clnt.c",0x66e);
    }
  }
  else {
    local_138 = FUN_00a8e5e0();
    if (local_138 == 0) {
      FUN_00a7f3c0(0x14,0x8d,0x41,".\\ssl\\s3_clnt.c",0x5c8);
      goto LAB_00b1177f;
    }
    uVar3 = (uint)CONCAT11(*pcVar9,pcVar9[1]);
    uStack_158 = uVar3;
    if ((int)uVar1 < (int)(uVar3 + 2)) {
      uVar12 = 0x5d0;
      uVar2 = 0x32;
      uVar11 = 0x79;
      goto LAB_00b11764;
    }
    iVar7 = FUN_00a9acb0(pcVar9 + 2,uVar3,*(undefined4 *)(local_138 + 0x10));
    iVar6 = local_138;
    *(int *)(local_138 + 0x10) = iVar7;
    if (iVar7 == 0) {
      uVar2 = 0x5d5;
      goto LAB_00b10d8f;
    }
    pcVar9 = pcVar9 + 2 + uStack_158;
    uStack_158 = (uint)CONCAT11(*pcVar9,pcVar9[1]);
    iVar7 = uVar3 + 4 + uStack_158;
    iStack_148 = iVar7;
    if ((int)uStack_154 < iVar7) {
      uVar12 = 0x5df;
      uVar2 = 0x32;
      uVar11 = 0x78;
      goto LAB_00b11764;
    }
    iVar5 = FUN_00a9acb0(pcVar9 + 2,uStack_158,*(undefined4 *)(local_138 + 0x14));
    *(int *)(iVar6 + 0x14) = iVar5;
    if (iVar5 == 0) {
      uVar2 = 0x5e4;
      goto LAB_00b10d8f;
    }
    pbVar10 = (byte *)(pcVar9 + 2 + uStack_158);
    uStack_154 = uStack_154 - iVar7;
    if ((uStack_14c & 1) == 0) {
      FUN_00a7f3c0(0x14,0x8d,0x44,".\\ssl\\s3_clnt.c",0x5ef);
      goto LAB_00b1177f;
    }
    local_150 = (int *)FUN_00a82c40(*(undefined4 *)(*(int *)(param_1[0x30] + 0x98) + 0xc));
    *(int *)(*(int *)(param_1[0x30] + 0x98) + 0x6c) = iVar6;
    local_138 = 0;
LAB_00b10ed6:
    if (local_150 == (int *)0x0) {
LAB_00b10cff:
      if (((uStack_14c & 4) != 0) || (uStack_10c != 0)) {
        if (uStack_154 != 0) {
          uVar12 = 0x726;
          uVar2 = 0x32;
          uVar11 = 0x99;
          goto LAB_00b11764;
        }
        goto LAB_00b1172f;
      }
      FUN_00a7f3c0(0x14,0x8d,0x44,".\\ssl\\s3_clnt.c",0x71f);
    }
    else {
      if (((*param_1 & 0xffffff00) == 0x300) && (0x302 < (int)*param_1)) {
        uVar1 = FUN_00b078d0(local_150);
        if (uVar1 == 0xffffffff) {
          FUN_00a7f3c0(0x14,0x8d,0x44,".\\ssl\\s3_clnt.c",0x6c0);
          goto LAB_00b1177f;
        }
        if (uVar1 == pbVar10[1]) {
          uStack_14c = FUN_00b07900(*pbVar10);
          if (uStack_14c != 0) {
            pbVar10 = pbVar10 + 2;
            uStack_154 = uStack_154 - 2;
            goto LAB_00b11507;
          }
          uVar11 = 0x6cd;
          uVar2 = 0x170;
        }
        else {
          uVar11 = 0x6c6;
          uVar2 = 0x172;
        }
        FUN_00a7f3c0(0x14,0x8d,uVar2,".\\ssl\\s3_clnt.c",uVar11);
        uVar2 = 0x32;
      }
      else {
        uStack_14c = FUN_00a924c0();
LAB_00b11507:
        uStack_158 = (uint)CONCAT11(*pbVar10,pbVar10[1]);
        uVar1 = uStack_154 - 2;
        uStack_154 = uVar1;
        iVar6 = FUN_00a81360(local_150);
        if (((uStack_158 == uVar1) && ((int)uVar1 <= iVar6)) && (0 < (int)uVar1)) {
          if ((*local_150 == 6) && (((*param_1 & 0xffffff00) != 0x300 || ((int)*param_1 < 0x303))))
          {
            uStack_14c = 0;
            puVar8 = auStack_84;
            iVar7 = 2;
            do {
              FUN_00a92640(auStack_12c,8);
              if (iVar7 == 2) {
                uVar2 = *(undefined4 *)(param_1[0x39] + 0x8c);
              }
              else {
                uVar2 = *(undefined4 *)(param_1[0x39] + 0x90);
              }
              FUN_00a91380(auStack_12c,uVar2,0);
              FUN_00a91530(auStack_12c,param_1[0x16] + 0xc0,0x20);
              FUN_00a91530(auStack_12c,param_1[0x16] + 0xa0,0x20);
              FUN_00a91530(auStack_12c,pcStack_130,iStack_148);
              FUN_00a91540(auStack_12c,puVar8,&uStack_158);
              uStack_14c = uStack_14c + uStack_158;
              iVar7 = iVar7 + -1;
              puVar8 = puVar8 + uStack_158;
            } while (0 < iVar7);
            uStack_158 = FUN_00aa9d60(0x72,auStack_84,uStack_14c,pbVar10 + 2,uStack_154,local_150[5]
                                     );
            if ((int)uStack_158 < 0) {
              uVar12 = 0x6ff;
              uVar2 = 0x33;
              uVar11 = 0x76;
            }
            else {
              if (uStack_158 != 0) goto LAB_00b1172f;
              uVar12 = 0x706;
              uVar2 = 0x33;
              uVar11 = 0x7b;
            }
          }
          else {
            FUN_00a91380(auStack_12c,uStack_14c,0);
            FUN_00a91530(auStack_12c,param_1[0x16] + 0xc0,0x20);
            FUN_00a91530(auStack_12c,param_1[0x16] + 0xa0,0x20);
            FUN_00a91530(auStack_12c,pcStack_130,iVar7);
            iVar7 = FUN_00ad9320(auStack_12c,pbVar10 + 2,uVar1,local_150);
            if (0 < iVar7) {
LAB_00b1172f:
              FUN_00a816d0(local_150);
              FUN_00a915c0(auStack_12c);
              goto LAB_00b117e7;
            }
            uVar12 = 0x715;
            uVar2 = 0x33;
            uVar11 = 0x7b;
          }
        }
        else {
          uVar12 = 0x6e2;
          uVar2 = 0x32;
          uVar11 = 0x108;
        }
LAB_00b11764:
        FUN_00a7f3c0(0x14,0x8d,uVar11,".\\ssl\\s3_clnt.c",uVar12);
      }
      FUN_00b00df0(param_1,2,uVar2);
    }
  }
LAB_00b1177f:
  FUN_00a816d0(local_150);
  if (local_138 != 0) {
    FUN_00a8e490(local_138);
  }
  if (local_140 != 0) {
    FUN_00a8ef50(local_140);
  }
  FUN_00aa4a20(local_13c);
  FUN_00aa3a10(local_144);
  if (local_134 != 0) {
    FUN_00a8e900(local_134);
  }
  FUN_00a915c0(auStack_12c);
LAB_00b117e7:
  ___security_check_cookie_4();
  return;
}



int FUN_00b11820(int param_1)

{
  uint *puVar1;
  int iVar2;
  byte *pbVar3;
  int iVar4;
  int iVar5;
  uint _Size;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  
  iVar4 = param_1;
  iVar5 = (**(code **)(*(int *)(param_1 + 8) + 0x30))
                    (param_1,0x11e0,0x11e1,0xffffffff,0x4000,&param_1);
  if (param_1 == 0) {
    return iVar5;
  }
  iVar2 = *(int *)(*(int *)(iVar4 + 0x58) + 0x340);
  if (iVar2 != 0x14) {
    if (iVar2 == 4) {
      if (iVar5 < 6) {
        uVar8 = 0x812;
      }
      else {
        pbVar3 = *(byte **)(iVar4 + 0x40);
        *(uint *)(*(int *)(iVar4 + 0xc0) + 0xec) = (uint)*pbVar3 << 0x18;
        puVar1 = (uint *)(*(int *)(iVar4 + 0xc0) + 0xec);
        *puVar1 = *puVar1 | (uint)pbVar3[1] << 0x10;
        puVar1 = (uint *)(*(int *)(iVar4 + 0xc0) + 0xec);
        *puVar1 = *puVar1 | (uint)pbVar3[2] << 8;
        puVar1 = (uint *)(*(int *)(iVar4 + 0xc0) + 0xec);
        *puVar1 = *puVar1 | (uint)pbVar3[3];
        _Size = (uint)CONCAT11(pbVar3[4],pbVar3[5]);
        if (_Size + 6 == iVar5) {
          iVar5 = *(int *)(*(int *)(iVar4 + 0xc0) + 0xe4);
          if (iVar5 != 0) {
            FUN_00a85120(iVar5);
            *(undefined4 *)(*(int *)(iVar4 + 0xc0) + 0xe8) = 0;
          }
          uVar8 = FUN_00a84f80(_Size,".\\ssl\\s3_clnt.c",0x825);
          *(undefined4 *)(*(int *)(iVar4 + 0xc0) + 0xe4) = uVar8;
          if (*(int *)(*(int *)(iVar4 + 0xc0) + 0xe4) != 0) {
            _memcpy(*(void **)(*(int *)(iVar4 + 0xc0) + 0xe4),pbVar3 + 6,_Size);
            *(uint *)(*(int *)(iVar4 + 0xc0) + 0xe8) = _Size;
            iVar4 = *(int *)(iVar4 + 0xc0);
            uVar8 = FUN_00a92530(0);
            FUN_00a91830(pbVar3 + 6,_Size,iVar4 + 0x48,iVar4 + 0x44,uVar8);
            return 1;
          }
          FUN_00a7f3c0(0x14,0x11b,0x41,".\\ssl\\s3_clnt.c",0x828);
          return -1;
        }
        uVar8 = 0x81d;
      }
      uVar7 = 0x9f;
      uVar6 = 0x32;
    }
    else {
      uVar8 = 0x80b;
      uVar6 = 10;
      uVar7 = 0x72;
    }
    FUN_00a7f3c0(0x14,0x11b,uVar7,".\\ssl\\s3_clnt.c",uVar8);
    FUN_00b00df0(iVar4,2,uVar6);
    return -1;
  }
  *(undefined4 *)(*(int *)(iVar4 + 0x58) + 0x354) = 1;
  return 1;
}



uint FUN_00b11a00(int param_1)

{
  char *pcVar1;
  code *pcVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  uint uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  
  iVar3 = param_1;
  uVar4 = (**(code **)(*(int *)(param_1 + 8) + 0x30))(param_1,0x11f0,0x11f1,0x16,0x4000,&param_1);
  if (param_1 == 0) {
    return uVar4;
  }
  if (uVar4 < 4) {
    uVar9 = 0x85d;
    uVar6 = 0x32;
    uVar8 = 0x9f;
  }
  else {
    pcVar1 = *(char **)(iVar3 + 0x40);
    if (*pcVar1 == '\x01') {
      uVar7 = (uint)CONCAT21(CONCAT11(pcVar1[1],pcVar1[2]),pcVar1[3]);
      if (uVar7 + 4 == uVar4) {
        if (*(int *)(iVar3 + 0x138) != 0) {
          FUN_00a85120(*(int *)(iVar3 + 0x138));
        }
        iVar5 = FUN_00a85160(pcVar1 + 4,uVar7);
        *(int *)(iVar3 + 0x138) = iVar5;
        if (iVar5 == 0) {
          uVar9 = 0x874;
        }
        else {
          *(uint *)(iVar3 + 0x13c) = uVar7;
          pcVar2 = *(code **)(*(int *)(iVar3 + 0xe4) + 0x13c);
          if (pcVar2 == (code *)0x0) {
            return 1;
          }
          iVar5 = (*pcVar2)(iVar3,*(undefined4 *)(*(int *)(iVar3 + 0xe4) + 0x140));
          if (iVar5 == 0) {
            uVar9 = 0x87f;
            uVar6 = 0x71;
            uVar8 = 0x148;
            goto LAB_00b11b27;
          }
          if (-1 < iVar5) {
            return 1;
          }
          uVar9 = 0x885;
        }
        uVar8 = 0x41;
        uVar6 = 0x50;
      }
      else {
        uVar9 = 0x86b;
        uVar6 = 0x32;
        uVar8 = 0x9f;
      }
    }
    else {
      uVar9 = 0x864;
      uVar6 = 0x32;
      uVar8 = 0x149;
    }
  }
LAB_00b11b27:
  FUN_00a7f3c0(0x14,0x121,uVar8,".\\ssl\\s3_clnt.c",uVar9);
  FUN_00b00df0(iVar3,2,uVar6);
  return 0xffffffff;
}



int FUN_00b11b60(int param_1)

{
  int iVar1;
  int iVar2;
  
  iVar1 = param_1;
  iVar2 = (**(code **)(*(int *)(param_1 + 8) + 0x30))(param_1,0x1160,0x1161,0xe,0x1e,&param_1);
  if (param_1 != 0) {
    if (0 < iVar2) {
      FUN_00b00df0(iVar1,2,0x32);
      FUN_00a7f3c0(0x14,0x91,0x9f,".\\ssl\\s3_clnt.c",0x8a1);
      return -1;
    }
    iVar2 = 1;
  }
  return iVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b11be0(int *param_1)

{
  char cVar1;
  undefined *puVar2;
  uint uVar3;
  void *pvVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 uVar8;
  int iVar9;
  size_t sVar10;
  undefined4 uVar11;
  char *pcVar12;
  undefined *puVar13;
  undefined *puVar14;
  undefined4 uVar15;
  int local_378;
  int local_374;
  void *local_370;
  uint uStack_36c;
  int local_368;
  int *local_364;
  uint uStack_360;
  undefined *local_35c;
  undefined local_358;
  undefined local_357;
  undefined local_356 [46];
  undefined local_328 [32];
  char local_308 [256];
  undefined local_208;
  undefined uStack_207;
  undefined auStack_206 [514];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_378;
  local_378 = 0;
  local_364 = (int *)0x0;
  local_370 = (void *)0x0;
  local_374 = 0;
  if (param_1[0xd] == 0x1180) {
    puVar2 = *(undefined **)(param_1[0xf] + 4);
    uVar3 = *(uint *)(*(int *)(param_1[0x16] + 0x344) + 0xc);
    puVar13 = puVar2 + 4;
    local_35c = puVar2;
    if ((uVar3 & 1) == 0) {
      if ((uVar3 & 0xe) == 0) {
        if ((uVar3 & 0xe0) == 0) {
          if ((uVar3 & 0x200) == 0) {
            if ((uVar3 & 0x400) != 0) {
              if (param_1[0x6e] == 0) {
                uVar8 = 0xaea;
              }
              else {
                iVar7 = FUN_00a9a920(param_1[0x6e]);
                iVar7 = (int)(iVar7 + 7 + (iVar7 + 7 >> 0x1f & 7U)) >> 3;
                *puVar13 = (char)((uint)iVar7 >> 8);
                puVar2[5] = (char)iVar7;
                FUN_00a9ad90(param_1[0x6e],puVar2 + 6);
                iVar7 = iVar7 + 2;
                if (*(int *)(param_1[0x30] + 0xf0) != 0) {
                  FUN_00a85120(*(int *)(param_1[0x30] + 0xf0));
                }
                uVar8 = FUN_00a852b0(param_1[0x69]);
                *(undefined4 *)(param_1[0x30] + 0xf0) = uVar8;
                if (*(int *)(param_1[0x30] + 0xf0) == 0) {
                  FUN_00a7f3c0(0x14,0x98,0x41,".\\ssl\\s3_clnt.c",0xaf3);
                  goto LAB_00b12739;
                }
                uVar8 = FUN_00b02e20(param_1,param_1[0x30] + 0x14);
                *(undefined4 *)(param_1[0x30] + 0x10) = uVar8;
                if (-1 < *(int *)(param_1[0x30] + 0x10)) goto LAB_00b11d59;
                uVar8 = 0xaf9;
              }
              goto LAB_00b11db0;
            }
            if ((uVar3 & 0x100) == 0) {
              FUN_00b00df0(param_1,2,0x28);
              uVar15 = 0xb55;
              uVar8 = 0x44;
              goto LAB_00b1272a;
            }
            iVar7 = 0;
            local_368 = 1;
            if ((code *)param_1[0x37] == (code *)0x0) {
              FUN_00a7f3c0(0x14,0x98,0xe0,".\\ssl\\s3_clnt.c",0xb0b);
              goto LAB_00b12739;
            }
            uStack_36c = (*(code *)param_1[0x37])
                                   (param_1,*(undefined4 *)(param_1[0x39] + 0x14c),local_308,0x80,
                                    &local_208,0x204);
            if (uStack_36c < 0x101) {
              if (uStack_36c == 0) {
                FUN_00a7f3c0(0x14,0x98,0xdf,".\\ssl\\s3_clnt.c",0xb1b);
              }
              else {
                iVar6 = uStack_36c * 2;
                _memmove(auStack_206 + uStack_36c + 2,&local_208,uStack_36c);
                uStack_360 = uStack_36c >> 8;
                local_208 = (undefined)(uStack_36c >> 8);
                uStack_207 = (undefined)uStack_36c;
                _memset(auStack_206,0,uStack_36c);
                auStack_206[uStack_36c] = (undefined)uStack_360;
                auStack_206[uStack_36c + 1] = (char)uStack_36c;
                if (*(int *)(param_1[0x30] + 0x8c) != 0) {
                  FUN_00a85120(*(int *)(param_1[0x30] + 0x8c));
                }
                uVar8 = FUN_00a852b0(*(undefined4 *)(param_1[0x39] + 0x14c));
                *(undefined4 *)(param_1[0x30] + 0x8c) = uVar8;
                if ((*(int *)(param_1[0x39] + 0x14c) == 0) || (*(int *)(param_1[0x30] + 0x8c) != 0))
                {
                  if (*(int *)(param_1[0x30] + 0x90) != 0) {
                    FUN_00a85120(*(int *)(param_1[0x30] + 0x90));
                  }
                  uVar8 = FUN_00a852b0(local_308);
                  *(undefined4 *)(param_1[0x30] + 0x90) = uVar8;
                  if (*(int *)(param_1[0x30] + 0x90) != 0) {
                    uVar8 = (**(code **)(*(int *)(param_1[2] + 100) + 0xc))
                                      (param_1,param_1[0x30] + 0x14,&local_208,iVar6 + 4);
                    pcVar12 = local_308;
                    *(undefined4 *)(param_1[0x30] + 0x10) = uVar8;
                    do {
                      cVar1 = *pcVar12;
                      pcVar12 = pcVar12 + 1;
                    } while (cVar1 != '\0');
                    sVar10 = (int)pcVar12 - (int)(local_308 + 1);
                    *puVar13 = (char)(sVar10 >> 8);
                    puVar2[5] = (char)sVar10;
                    _memcpy(puVar2 + 6,local_308,sVar10);
                    iVar7 = sVar10 + 2;
                    local_368 = 0;
                    goto LAB_00b126d3;
                  }
                  uVar8 = 0xb39;
                }
                else {
                  uVar8 = 0xb2f;
                }
                FUN_00a7f3c0(0x14,0x98,0x41,".\\ssl\\s3_clnt.c",uVar8);
              }
            }
            else {
              FUN_00a7f3c0(0x14,0x98,0x44,".\\ssl\\s3_clnt.c",0xb15);
            }
LAB_00b126d3:
            FUN_00a84330(local_308,0x80);
            FUN_00a84330(&local_208,0x204);
            if (local_368 == 0) goto LAB_00b11d59;
            FUN_00b00df0(param_1,2,0x28);
          }
          else {
            iVar7 = *(int *)(*(int *)(param_1[0x30] + 0x98) + 0x60);
            if ((iVar7 == 0) &&
               (iVar7 = *(int *)(*(int *)(param_1[0x30] + 0x98) + 0x54), iVar7 == 0)) {
              FUN_00a7f3c0(0x14,0x98,0x14a,".\\ssl\\s3_clnt.c",0xa94);
            }
            else {
              local_368 = FUN_00a82c40(iVar7);
              uVar8 = FUN_00a98af0(local_368,0);
              FUN_00aecbd0(uVar8);
              FUN_00a86e60(local_328,0x20);
              if ((*(int *)(param_1[0x16] + 0x358) != 0) &&
                 ((*(int *)(*(int *)param_1[0x26] + 4) != 0 &&
                  (iVar7 = FUN_00aece70(uVar8,*(int *)(*(int *)param_1[0x26] + 4)), iVar7 < 1)))) {
                FUN_00a7f4b0();
              }
              uVar15 = FUN_00a91350();
              uVar11 = FUN_00a87520(0x329);
              uVar11 = FUN_00a802c0(uVar11);
              FUN_00a91670(uVar15,uVar11);
              FUN_00a91530(uVar15,param_1[0x16] + 0xc0,0x20);
              FUN_00a91530(uVar15,param_1[0x16] + 0xa0,0x20);
              FUN_00a91540(uVar15,&local_358,&uStack_360);
              FUN_00a918e0(uVar15);
              iVar7 = FUN_00a988b0(uVar8,0xffffffff,0x100,8,8,&local_358);
              if (iVar7 < 0) {
                FUN_00a7f3c0(0x14,0x98,0x112,".\\ssl\\s3_clnt.c",0xab8);
              }
              else {
                *puVar13 = 0x30;
                puVar13 = puVar2 + 5;
                uStack_36c = 0xff;
                iVar7 = FUN_00aecc40(uVar8,local_308,&uStack_36c,local_328,0x20);
                if (-1 < iVar7) {
                  if (uStack_36c < 0x80) {
                    iVar7 = uStack_36c + 2;
                  }
                  else {
                    *puVar13 = 0x81;
                    puVar13 = puVar2 + 6;
                    iVar7 = uStack_36c + 3;
                  }
                  *puVar13 = (char)uStack_36c;
                  _memcpy(puVar13 + 1,local_308,uStack_36c);
                  iVar6 = FUN_00a988b0(uVar8,0xffffffff,0xffffffff,2,2,0);
                  if (0 < iVar6) {
                    *(uint *)param_1[0x16] = *(uint *)param_1[0x16] | 0x10;
                  }
                  FUN_00a98850(uVar8);
                  uVar8 = (**(code **)(*(int *)(param_1[2] + 100) + 0xc))
                                    (param_1,param_1[0x30] + 0x14,local_328,0x20);
                  *(undefined4 *)(param_1[0x30] + 0x10) = uVar8;
                  FUN_00a816d0(local_368);
                  goto LAB_00b11d59;
                }
                FUN_00a7f3c0(0x14,0x98,0x112,".\\ssl\\s3_clnt.c",0xac1);
              }
            }
          }
        }
        else {
          iVar7 = *(int *)(*(int *)(param_1[0x30] + 0x98) + 0x74);
          if ((iVar7 == 0) &&
             (((local_364 = (int *)FUN_00a82c40(*(undefined4 *)
                                                 (*(int *)(param_1[0x30] + 0x98) + 0x48)),
               local_364 == (int *)0x0 || (*local_364 != 0x198)) ||
              (iVar7 = local_364[5], iVar7 == 0)))) {
            uVar8 = 0x9fc;
          }
          else {
            iVar6 = FUN_00a7fa30(iVar7);
            iVar7 = FUN_00a989a0(iVar7);
            if ((iVar6 != 0) && (iVar7 != 0)) {
              local_378 = FUN_00a8e8a0();
              if (local_378 == 0) {
                FUN_00a7f3c0(0x14,0x98,0x41,".\\ssl\\s3_clnt.c",0xa0f);
              }
              else {
                iVar9 = FUN_00a8ec70(local_378,iVar6);
                if (iVar9 == 0) {
                  FUN_00a7f3c0(0x14,0x98,0x10,".\\ssl\\s3_clnt.c",0xa15);
                }
                else {
                  iVar9 = FUN_00a8eb30(local_378);
                  if (iVar9 == 0) {
                    FUN_00a7f3c0(0x14,0x98,0x2b,".\\ssl\\s3_clnt.c",0xa31);
                  }
                  else {
                    iVar9 = FUN_00aa3760(iVar6);
                    if (iVar9 < 1) {
                      FUN_00a7f3c0(0x14,0x98,0x2b,".\\ssl\\s3_clnt.c",0xa3e);
                    }
                    else {
                      sVar10 = FUN_00ae2380(puVar13,(int)(iVar9 + 7 + (iVar9 + 7 >> 0x1f & 7U)) >> 3
                                            ,iVar7,local_378,0);
                      if ((int)sVar10 < 1) {
                        FUN_00a7f3c0(0x14,0x98,0x2b,".\\ssl\\s3_clnt.c",0xa45);
                      }
                      else {
                        uVar8 = (**(code **)(*(int *)(param_1[2] + 100) + 0xc))
                                          (param_1,param_1[0x30] + 0x14,puVar13,sVar10);
                        *(undefined4 *)(param_1[0x30] + 0x10) = uVar8;
                        _memset(puVar13,0,sVar10);
                        uVar8 = FUN_00a989a0(local_378,4,0,0,0);
                        uVar8 = FUN_00ae8f00(iVar6,uVar8);
                        local_370 = (void *)FUN_00a84f80(uVar8,".\\ssl\\s3_clnt.c",0xa63);
                        local_374 = FUN_00aa49c0();
                        if ((local_370 != (void *)0x0) && (local_374 != 0)) {
                          uVar8 = FUN_00a989a0(local_378,4,local_370,uVar8,local_374);
                          sVar10 = FUN_00ae8f00(iVar6,uVar8);
                          pvVar4 = local_370;
                          *puVar13 = (char)sVar10;
                          _memcpy(puVar2 + 5,local_370,sVar10);
                          iVar7 = sVar10 + 1;
                          FUN_00aa4a20(local_374);
                          FUN_00a85120(pvVar4);
                          FUN_00a8e900(local_378);
                          FUN_00a816d0(local_364);
                          goto LAB_00b11d59;
                        }
                        FUN_00a7f3c0(0x14,0x98,0x41,".\\ssl\\s3_clnt.c",0xa68);
                      }
                    }
                  }
                }
              }
              goto LAB_00b12739;
            }
            uVar8 = 0xa09;
          }
LAB_00b11db0:
          FUN_00a7f3c0(0x14,0x98,0x44,".\\ssl\\s3_clnt.c",uVar8);
        }
      }
      else {
        if (*(int *)(param_1[0x30] + 0x98) == 0) {
          FUN_00b00df0(param_1,2,10);
          uVar15 = 0x990;
          uVar8 = 0xf4;
        }
        else {
          iVar7 = *(int *)(*(int *)(param_1[0x30] + 0x98) + 0x70);
          if (iVar7 != 0) {
            iVar6 = FUN_00ad87e0(iVar7);
            if (iVar6 == 0) {
              FUN_00a7f3c0(0x14,0x98,5,".\\ssl\\s3_clnt.c",0x9a1);
            }
            else {
              iVar9 = FUN_00aa52a0(iVar6);
              if (iVar9 == 0) {
                FUN_00a7f3c0(0x14,0x98,5,".\\ssl\\s3_clnt.c",0x9a6);
                FUN_00a8ef50(iVar6);
              }
              else {
                sVar10 = FUN_00aa52b0(puVar13,*(undefined4 *)(iVar7 + 0x14),iVar6);
                if (0 < (int)sVar10) {
                  uVar8 = (**(code **)(*(int *)(param_1[2] + 100) + 0xc))
                                    (param_1,param_1[0x30] + 0x14,puVar13,sVar10);
                  *(undefined4 *)(param_1[0x30] + 0x10) = uVar8;
                  _memset(puVar13,0,sVar10);
                  iVar7 = FUN_00a9a920(*(undefined4 *)(iVar6 + 0x14));
                  iVar7 = (int)(iVar7 + 7 + (iVar7 + 7 >> 0x1f & 7U)) >> 3;
                  *puVar13 = (char)((uint)iVar7 >> 8);
                  puVar2[5] = (char)iVar7;
                  FUN_00a9ad90(*(undefined4 *)(iVar6 + 0x14),puVar2 + 6);
                  iVar7 = iVar7 + 2;
                  FUN_00a8ef50(iVar6);
                  goto LAB_00b11d59;
                }
                FUN_00a7f3c0(0x14,0x98,5,".\\ssl\\s3_clnt.c",0x9b2);
                FUN_00a8ef50(iVar6);
              }
            }
            goto LAB_00b12739;
          }
          FUN_00b00df0(param_1,2,0x28);
          uVar15 = 0x99a;
          uVar8 = 0xee;
        }
LAB_00b1272a:
        FUN_00a7f3c0(0x14,0x98,uVar8,".\\ssl\\s3_clnt.c",uVar15);
      }
    }
    else {
      iVar7 = *(int *)(*(int *)(param_1[0x30] + 0x98) + 0x6c);
      if (iVar7 == 0) {
        piVar5 = (int *)FUN_00a82c40(*(undefined4 *)(*(int *)(param_1[0x30] + 0x98) + 0xc));
        if (((piVar5 == (int *)0x0) || (*piVar5 != 6)) || (iVar7 = piVar5[5], iVar7 == 0)) {
          uVar8 = 0x8d6;
          goto LAB_00b11db0;
        }
        FUN_00a816d0(piVar5);
      }
      local_357 = *(undefined *)(param_1 + 0x44);
      local_358 = (undefined)((uint)param_1[0x44] >> 8);
      iVar6 = FUN_00a86e60(local_356,0x2e);
      if (0 < iVar6) {
        *(undefined4 *)(param_1[0x30] + 0x10) = 0x30;
        puVar14 = puVar13;
        if (0x300 < *param_1) {
          puVar14 = puVar2 + 6;
        }
        iVar7 = FUN_00ad1230(0x30,&local_358,puVar14,iVar7,1);
        if (0 < iVar7) {
          if (0x300 < *param_1) {
            puVar2[5] = (char)iVar7;
            *puVar13 = (char)((uint)iVar7 >> 8);
            iVar7 = iVar7 + 2;
          }
          uVar8 = (**(code **)(*(int *)(param_1[2] + 100) + 0xc))
                            (param_1,param_1[0x30] + 0x14,&local_358,0x30);
          *(undefined4 *)(param_1[0x30] + 0x10) = uVar8;
          FUN_00a84330(&local_358,0x30);
LAB_00b11d59:
          *local_35c = 0x10;
          local_35c[3] = (char)iVar7;
          local_35c[1] = (char)((uint)iVar7 >> 0x10);
          local_35c[2] = (char)((uint)iVar7 >> 8);
          param_1[0xd] = 0x1181;
          param_1[0x11] = iVar7 + 4;
          param_1[0x12] = 0;
          goto LAB_00b11d87;
        }
        FUN_00a7f3c0(0x14,0x98,0x77,".\\ssl\\s3_clnt.c",0x8f0);
      }
    }
LAB_00b12739:
    FUN_00aa4a20(local_374);
    if (local_370 != (void *)0x0) {
      FUN_00a85120(local_370);
    }
    if (local_378 != 0) {
      FUN_00a8e900(local_378);
    }
    FUN_00a816d0(local_364);
  }
  else {
LAB_00b11d87:
    FUN_00b04e10(param_1,0x16);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b12780(uint *param_1)

{
  undefined *puVar1;
  int *piVar2;
  undefined *puVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  int iStack_98;
  int local_94;
  undefined4 local_90;
  undefined4 uStack_8c;
  undefined4 uStack_88;
  int iStack_84;
  undefined local_80 [24];
  undefined auStack_68 [16];
  undefined local_58 [20];
  undefined auStack_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&iStack_98;
  local_94 = 0;
  FUN_00a91330(local_80);
  uVar4 = 0;
  if (param_1[0xd] == 0x1190) {
    piVar2 = *(int **)(*(int *)param_1[0x26] + 4);
    puVar3 = *(undefined **)(param_1[0xf] + 4);
    puVar1 = puVar3 + 4;
    local_90 = FUN_00a98af0(piVar2,0);
    FUN_00aec9c0(local_90);
    uVar4 = FUN_00a924c0();
    iVar5 = FUN_00a988b0(local_90,0xffffffff,0xf8,1,0,uVar4);
    if (iVar5 < 1) {
      FUN_00a7f4b0();
    }
    else if (((*param_1 & 0xffffff00) != 0x300) || ((int)*param_1 < 0x303)) {
      (**(code **)(*(int *)(param_1[2] + 100) + 0x1c))(param_1,0x40,local_58);
    }
    if (((*param_1 & 0xffffff00) == 0x300) && (0x302 < (int)*param_1)) {
      uStack_88 = *(undefined4 *)(*(int *)param_1[0x26] + 8);
      iStack_84 = FUN_00a83650(*(undefined4 *)(param_1[0x16] + 0x178),3,0,&uStack_8c);
      if ((iStack_84 < 1) || (iVar5 = FUN_00b08720(puVar1,piVar2,uStack_88), iVar5 == 0)) {
        uVar7 = 0xb9c;
        goto LAB_00b12a9e;
      }
      iVar5 = FUN_00a91380(local_80,uStack_88,0);
      if (((iVar5 == 0) || (iVar5 = FUN_00a91530(local_80,uStack_8c,iStack_84), iVar5 == 0)) ||
         (iVar5 = FUN_00aec430(local_80,puVar3 + 8,&local_94,piVar2), iVar5 == 0)) {
        uVar7 = 0xba9;
        uVar4 = 6;
        goto LAB_00b12aa5;
      }
      puVar3[6] = (char)((uint)local_94 >> 8);
      puVar3[7] = (undefined)local_94;
      iVar5 = local_94 + 4;
      iVar6 = FUN_00b0f060(param_1);
      if (iVar6 != 0) goto LAB_00b12b09;
    }
    else {
      iVar5 = *piVar2;
      if (iVar5 == 6) {
        (**(code **)(*(int *)(param_1[2] + 100) + 0x1c))(param_1,4,auStack_68);
        iVar5 = FUN_00aa97a0(0x72,auStack_68,0x24,puVar3 + 6,&local_94,piVar2[5]);
        if (0 < iVar5) {
          *puVar1 = (char)((uint)local_94 >> 8);
          puVar3[5] = (undefined)local_94;
          iVar5 = local_94;
LAB_00b12b06:
          iVar5 = iVar5 + 2;
LAB_00b12b09:
          *puVar3 = 0xf;
          puVar3[3] = (char)iVar5;
          puVar3[1] = (char)((uint)iVar5 >> 0x10);
          puVar3[2] = (char)((uint)iVar5 >> 8);
          param_1[0xd] = 0x1191;
          param_1[0x11] = iVar5 + 4;
          param_1[0x12] = 0;
          uVar4 = local_90;
          goto LAB_00b12b39;
        }
        uVar7 = 0xbbc;
        uVar4 = 4;
      }
      else if (iVar5 == 0x74) {
        iVar5 = FUN_00aad980(piVar2[1],local_58,0x14,puVar3 + 6,&iStack_98,piVar2[5]);
        if (iVar5 != 0) {
          *puVar1 = (char)((uint)iStack_98 >> 8);
          puVar3[5] = (undefined)iStack_98;
          iVar5 = iStack_98;
          goto LAB_00b12b06;
        }
        uVar7 = 0xbcc;
        uVar4 = 10;
      }
      else if (iVar5 == 0x198) {
        iVar5 = FUN_00aad7d0(piVar2[1],local_58,0x14,puVar3 + 6,&iStack_98,piVar2[5]);
        if (iVar5 != 0) {
          *puVar1 = (char)((uint)iStack_98 >> 8);
LAB_00b12afb:
          puVar3[5] = (undefined)iStack_98;
          iVar5 = iStack_98;
          goto LAB_00b12b06;
        }
        uVar7 = 0xbdd;
        uVar4 = 0x2a;
      }
      else {
        if ((iVar5 == 0x32c) || (iVar5 == 0x32b)) {
          uStack_8c = 0x40;
          (**(code **)(*(int *)(param_1[2] + 100) + 0x1c))(param_1,0x329,auStack_68);
          iVar5 = FUN_00aeca20(local_90,auStack_44,&uStack_8c,auStack_68,0x20);
          if (0 < iVar5) {
            iVar5 = 0x3f;
            iStack_98 = 0;
            do {
              puVar3[iStack_98 + 6] = auStack_44[iVar5];
              iStack_98 = iStack_98 + 1;
              iVar5 = iVar5 + -1;
            } while (-1 < iVar5);
            *puVar1 = (char)((uint)iStack_98 >> 8);
            goto LAB_00b12afb;
          }
          uVar7 = 0xbef;
        }
        else {
          uVar7 = 0xbfa;
        }
LAB_00b12a9e:
        uVar4 = 0x44;
      }
LAB_00b12aa5:
      FUN_00a7f3c0(0x14,0x99,uVar4,".\\ssl\\s3_clnt.c",uVar7);
    }
    FUN_00a915c0(local_80);
    FUN_00a98850(local_90);
  }
  else {
LAB_00b12b39:
    FUN_00a915c0(local_80);
    FUN_00a98850(uVar4);
    FUN_00b04e10(param_1,0x16);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b12b70(int param_1)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  byte bVar6;
  int iVar7;
  uint uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  
  iVar7 = *(int *)(*(int *)(param_1 + 0x58) + 0x344);
  uVar2 = *(uint *)(iVar7 + 0x10);
  uVar3 = *(uint *)(iVar7 + 0xc);
  if (((uVar2 & 0x2c) != 0) || ((uVar3 & 0x100) != 0)) {
    return 1;
  }
  iVar7 = *(int *)(*(int *)(param_1 + 0xc0) + 0x98);
  if (iVar7 == 0) {
    FUN_00a7f3c0(0x14,0x82,0x44,".\\ssl\\s3_clnt.c",0xc72);
    return 0;
  }
  iVar4 = *(int *)(*(int *)(param_1 + 0xc0) + 0x98);
  iVar5 = *(int *)(iVar4 + 0x6c);
  iVar4 = *(int *)(iVar4 + 0x70);
  if (*(int *)(iVar7 + 4) == 5) {
    iVar7 = FUN_00afa7e0(*(undefined4 *)(iVar7 + 0x48),param_1);
    if (iVar7 != 0) {
      return 1;
    }
    uVar10 = 0xc86;
    uVar9 = 0x130;
  }
  else {
    iVar1 = *(int *)(iVar7 + 4) * 3 + 3;
    uVar9 = FUN_00a82c40(*(undefined4 *)(iVar7 + iVar1 * 4));
    uVar8 = FUN_00b550d0(*(undefined4 *)(iVar7 + iVar1 * 4),uVar9);
    FUN_00a816d0(uVar9);
    bVar6 = (byte)uVar8;
    if (((uVar2 & 1) == 0) || ((bVar6 & 0x11) == 0x11)) {
      if (((uVar2 & 2) == 0) || ((bVar6 & 0x12) == 0x12)) {
        if ((((uVar3 & 1) == 0) || ((bVar6 & 0x21) == 0x21)) || (iVar5 != 0)) {
          if ((((uVar3 & 8) == 0) || ((bVar6 & 0x44) == 0x44)) || (iVar4 != 0)) {
            if (((uVar3 & 2) == 0) || ((uVar8 & 0x104) == 0x104)) {
              if (((uVar3 & 4) == 0) || ((uVar8 & 0x204) == 0x204)) {
                if (((*(byte *)(*(int *)(*(int *)(param_1 + 0x58) + 0x344) + 0x20) & 2) == 0) ||
                   ((uVar8 & 0x1000) != 0)) {
                  return 1;
                }
                if ((uVar3 & 1) == 0) {
                  if ((uVar3 & 0xe) == 0) {
                    uVar10 = 0xcd9;
                    uVar9 = 0xfa;
                  }
                  else {
                    if ((iVar4 != 0) &&
                       (iVar7 = FUN_00a8f040(iVar4),
                       iVar7 * 8 <=
                       (int)((-(uint)((*(uint *)(*(int *)(*(int *)(param_1 + 0x58) + 0x344) + 0x20)
                                      & 8) != 0) & 0xfffffe00) + 0x400))) {
                      return 1;
                    }
                    uVar10 = 0xcd2;
                    uVar9 = 0xa6;
                  }
                }
                else {
                  if ((iVar5 != 0) &&
                     (iVar7 = FUN_00ad1210(iVar5),
                     iVar7 * 8 <=
                     (int)((-(uint)((*(uint *)(*(int *)(*(int *)(param_1 + 0x58) + 0x344) + 0x20) &
                                    8) != 0) & 0xfffffe00) + 0x400))) {
                    return 1;
                  }
                  uVar10 = 0xcc6;
                  uVar9 = 0xa7;
                }
              }
              else {
                uVar10 = 0xcb8;
                uVar9 = 0xa2;
              }
            }
            else {
              uVar10 = 0xcb2;
              uVar9 = 0xa4;
            }
          }
          else {
            uVar10 = 0xcad;
            uVar9 = 0xa3;
          }
        }
        else {
          uVar10 = 0xca5;
          uVar9 = 0xa9;
        }
      }
      else {
        uVar10 = 0xc9d;
        uVar9 = 0xa5;
      }
    }
    else {
      uVar10 = 0xc97;
      uVar9 = 0xaa;
    }
  }
  FUN_00a7f3c0(0x14,0x82,uVar9,".\\ssl\\s3_clnt.c",uVar10);
  FUN_00b00df0(param_1,2,0x28);
  return 0;
}



void FUN_00b12e60(int param_1)

{
  int iVar1;
  byte bVar2;
  undefined *puVar3;
  int iVar4;
  char cVar5;
  uint _Size;
  
  if (*(int *)(param_1 + 0x34) == 0x1200) {
    bVar2 = *(byte *)(param_1 + 0x178);
    _Size = (uint)bVar2;
    puVar3 = *(undefined **)(*(int *)(param_1 + 0x3c) + 4);
    iVar4 = -(_Size + 2 & 0x1f);
    puVar3[4] = bVar2;
    _memcpy(puVar3 + 5,*(void **)(param_1 + 0x174),_Size);
    cVar5 = (char)(iVar4 + 0x20U);
    puVar3[_Size + 5] = cVar5;
    _memset(puVar3 + _Size + 6,0,iVar4 + 0x20U);
    *puVar3 = 0x43;
    iVar1 = iVar4 + 0x22 + _Size;
    puVar3[1] = (char)((uint)iVar1 >> 0x10);
    puVar3[2] = (char)((uint)iVar1 >> 8);
    puVar3[3] = cVar5 + bVar2 + '\x02';
    *(undefined4 *)(param_1 + 0x34) = 0x1201;
    *(uint *)(param_1 + 0x44) = iVar4 + 0x26 + _Size;
    *(undefined4 *)(param_1 + 0x48) = 0;
  }
  FUN_00b04e10(param_1,0x16);
  return;
}



undefined4 FUN_00b12f10(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  iVar1 = param_1;
  if (*(int *)(*(int *)(param_1 + 0xc0) + 0xe4) == 0) {
    return 1;
  }
  uVar2 = (**(code **)(*(int *)(param_1 + 8) + 0x30))
                    (param_1,0x1130,0x1131,0xffffffff,*(undefined4 *)(param_1 + 0x108),&param_1);
  if (param_1 != 0) {
    uVar2 = 1;
    *(undefined4 *)(*(int *)(iVar1 + 0x58) + 0x354) = 1;
    iVar1 = *(int *)(iVar1 + 0x58);
    if ((*(int *)(iVar1 + 0x340) == 0x14) || (*(int *)(iVar1 + 0x340) == 4)) {
      uVar2 = 2;
    }
  }
  return uVar2;
}



void FUN_00b12f90(int param_1,undefined4 param_2,undefined4 param_3)

{
  code *pcVar1;
  undefined4 uVar2;
  int iVar3;
  
  if (*(int *)(*(int *)(param_1 + 0xe4) + 0xfc) != 0) {
    uVar2 = FUN_00affa40(param_1,param_2,param_3,0,0,0);
    iVar3 = FUN_00b54740(*(undefined4 *)(*(int *)(param_1 + 0xe4) + 0xfc),param_1,uVar2);
    if (iVar3 != 0) {
      return;
    }
  }
  pcVar1 = *(code **)(*(int *)(param_1 + 0xe4) + 0x74);
  if (pcVar1 != (code *)0x0) {
    (*pcVar1)(param_1,param_2,param_3);
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

byte * FUN_00b13000(uint *param_1)

{
  byte *pbVar1;
  uint *puVar2;
  byte *pbVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  byte *pbVar8;
  byte *pbVar9;
  uint uVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  byte *pbStack_c;
  byte *local_8;
  int local_4;
  
  puVar2 = param_1;
  local_4 = 0xb1300a;
  local_8 = (byte *)0x0;
  pbVar3 = (byte *)(**(code **)(param_1[2] + 0x30))
                             (param_1,0x1150,0x1151,0xffffffff,param_1[0x42],&local_4);
  if (local_4 == 0) {
    return pbVar3;
  }
  *(undefined4 *)(param_1[0x16] + 0x358) = 0;
  uVar5 = param_1[0x16];
  if (*(int *)(uVar5 + 0x340) == 0xe) {
    *(undefined4 *)(uVar5 + 0x354) = 1;
    if ((*(int *)(param_1[0x16] + 0x178) != 0) && (iVar4 = FUN_00b0f060(param_1), iVar4 == 0)) {
      return local_8;
    }
    return (byte *)0x1;
  }
  if (*(int *)(uVar5 + 0x340) != 0xd) {
    FUN_00b00df0(param_1,2,10);
    FUN_00a7f3c0(0x14,0x87,0x106,".\\ssl\\s3_clnt.c",0x769);
    return local_8;
  }
  if ((0x300 < (int)*param_1) && ((*(byte *)(*(int *)(uVar5 + 0x344) + 0x10) & 4) != 0)) {
    FUN_00b00df0(param_1,2,10);
    FUN_00a7f3c0(0x14,0x87,0xe8,".\\ssl\\s3_clnt.c",0x773);
    return local_8;
  }
  pbVar1 = (byte *)param_1[0x10];
  iVar4 = FUN_00a80c80(&LAB_00b11800);
  if (iVar4 == 0) {
    uVar12 = 0x77c;
LAB_00b13131:
    FUN_00a7f3c0(0x14,0x87,0x41,".\\ssl\\s3_clnt.c",uVar12);
    goto LAB_00b131eb;
  }
  param_1 = (uint *)(uint)*pbVar1;
  if (9 < param_1) {
    param_1 = (uint *)0x9;
  }
  uVar5 = 0;
  if (param_1 != (uint *)0x0) {
    do {
      *(byte *)(puVar2[0x16] + 0x360 + uVar5) = pbVar1[uVar5 + 1];
      uVar5 = uVar5 + 1;
    } while (uVar5 < param_1);
  }
  pbVar8 = pbVar1 + (int)param_1 + 1;
  if (((*puVar2 & 0xffffff00) == 0x300) && (0x302 < (int)*puVar2)) {
    uVar5 = (uint)CONCAT11(*pbVar8,pbVar8[1]);
    pbVar9 = pbVar8 + 2;
    if (pbVar3 < pbVar9 + (uVar5 - (int)pbVar1) + 2) {
      FUN_00b00df0(puVar2,2,0x32);
      uVar11 = 0x790;
      uVar12 = 0x92;
    }
    else {
      if (((pbVar8[1] & 1) == 0) && (iVar6 = FUN_00b07950(puVar2,pbVar9,uVar5), iVar6 != 0)) {
        pbVar8 = pbVar9 + uVar5;
        goto LAB_00b13227;
      }
      FUN_00b00df0(puVar2,2,0x32);
      uVar11 = 0x796;
      uVar12 = 0x168;
    }
  }
  else {
LAB_00b13227:
    uVar5 = (uint)CONCAT11(*pbVar8,pbVar8[1]);
    pbVar8 = pbVar8 + 2;
    if (pbVar8 + (uVar5 - (int)pbVar1) == pbVar3) {
      uVar7 = 0;
      if (uVar5 != 0) {
        do {
          uVar10 = (uint)CONCAT11(*pbVar8,pbVar8[1]);
          uVar7 = uVar10 + 2 + uVar7;
          if (uVar5 < uVar7) {
            if ((puVar2[0x40] & 0x20000000) == 0) {
              FUN_00b00df0(puVar2,2,0x32);
              uVar11 = 0x7b6;
              uVar12 = 0x84;
              goto LAB_00b131dc;
            }
LAB_00b13379:
            FUN_00a7f4b0();
            break;
          }
          pbStack_c = pbVar8 + 2;
          iVar6 = FUN_00a88d70(0,&pbStack_c,uVar10);
          if (iVar6 == 0) {
            if ((puVar2[0x40] & 0x20000000) != 0) goto LAB_00b13379;
            FUN_00b00df0(puVar2,2,0x32);
            uVar11 = 0x7c4;
            uVar12 = 0xd;
            goto LAB_00b131dc;
          }
          pbVar8 = pbVar8 + 2 + uVar10;
          if (pbStack_c != pbVar8) {
            FUN_00b00df0(puVar2,2,0x32);
            uVar11 = 0x7cc;
            uVar12 = 0x83;
            goto LAB_00b131dc;
          }
          iVar6 = FUN_00a80df0(iVar4,iVar6);
          if (iVar6 == 0) {
            uVar12 = 0x7d1;
            goto LAB_00b13131;
          }
        } while (uVar7 < uVar5);
      }
      *(undefined4 *)(puVar2[0x16] + 0x358) = 1;
      *(uint **)(puVar2[0x16] + 0x35c) = param_1;
      if (*(int *)(puVar2[0x16] + 0x36c) != 0) {
        FUN_00a81120(*(undefined4 *)(puVar2[0x16] + 0x36c),FUN_00a88dc0);
      }
      *(int *)(puVar2[0x16] + 0x36c) = iVar4;
      return (byte *)0x1;
    }
    FUN_00b00df0(puVar2,2,0x32);
    uVar11 = 0x7aa;
    uVar12 = 0x9f;
  }
LAB_00b131dc:
  FUN_00a7f3c0(0x14,0x87,uVar12,".\\ssl\\s3_clnt.c",uVar11);
LAB_00b131eb:
  if (iVar4 != 0) {
    FUN_00a81120(iVar4,FUN_00a88dc0);
  }
  return local_8;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b133d0(int *param_1)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int local_8;
  int local_4;
  
  local_4 = 0;
  local_8 = 0;
  if (param_1[0xd] == 0x1170) {
    if ((((int **)param_1[0x26] == (int **)0x0) || (piVar1 = *(int **)param_1[0x26], *piVar1 == 0))
       || (piVar1[1] == 0)) {
      param_1[0xd] = 0x1171;
    }
    else {
      param_1[0xd] = 0x1172;
    }
  }
  if (param_1[0xd] != 0x1171) goto LAB_00b13516;
  iVar2 = FUN_00b12f90(param_1,&local_4,&local_8);
  if (iVar2 < 0) {
    param_1[6] = 4;
    return 0xffffffff;
  }
  param_1[6] = 1;
  if (iVar2 == 1) {
    if ((local_8 == 0) || (local_4 == 0)) {
      iVar2 = 0;
      FUN_00a7f3c0(0x14,0x97,0x6a,".\\ssl\\s3_clnt.c",0xc36);
    }
    else {
      param_1[0xd] = 0x1171;
      iVar3 = FUN_00afe610(param_1,local_4);
      if (iVar3 != 0) {
        iVar3 = FUN_00afe400(param_1,local_8);
        if (iVar3 != 0) goto LAB_00b134b2;
      }
      iVar2 = 0;
    }
  }
LAB_00b134b2:
  if (local_4 != 0) {
    FUN_00a812c0(local_4);
  }
  if (local_8 != 0) {
    FUN_00a816d0(local_8);
  }
  if (iVar2 == 0) {
    if (*param_1 == 0x300) {
      *(undefined4 *)(param_1[0x16] + 0x358) = 0;
      FUN_00b00df0(param_1,1,0x29);
      return 1;
    }
    *(undefined4 *)(param_1[0x16] + 0x358) = 2;
  }
  param_1[0xd] = 0x1172;
LAB_00b13516:
  if (param_1[0xd] == 0x1172) {
    param_1[0xd] = 0x1173;
    if (*(int *)(param_1[0x16] + 0x358) == 2) {
      uVar4 = 0;
    }
    else {
      uVar4 = **(undefined4 **)param_1[0x26];
    }
    iVar2 = FUN_00b05260(param_1,uVar4);
    param_1[0x11] = iVar2;
    param_1[0x12] = 0;
  }
  uVar4 = FUN_00b04e10(param_1,0x16);
  return uVar4;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00b13570(uint *param_1)

{
  uint *puVar1;
  bool bVar2;
  code *pcVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  undefined4 unaff_EBX;
  bool bVar7;
  __time64_t _Var8;
  undefined4 uVar9;
  undefined8 uVar10;
  code *local_10;
  uint local_8;
  undefined4 local_4;
  
  local_4 = 0xb1357a;
  _Var8 = __time64((__time64_t *)0x0);
  local_4 = (undefined4)_Var8;
  local_10 = (code *)0x0;
  FUN_00a86df0(&local_4,4,0);
  FUN_00a7f4b0();
  SetLastError(0);
  pcVar3 = (code *)param_1[0x34];
  if (((code *)param_1[0x34] == (code *)0x0) &&
     (pcVar3 = local_10, *(code **)(param_1[0x39] + 0x9c) != (code *)0x0)) {
    pcVar3 = *(code **)(param_1[0x39] + 0x9c);
  }
  local_10 = pcVar3;
  param_1[7] = param_1[7] + 1;
  uVar4 = FUN_00aa35c0(param_1);
  if (((uVar4 & 0x3000) == 0) || (uVar4 = FUN_00aa35c0(param_1), (uVar4 & 0x4000) != 0)) {
    FUN_00afae80(param_1);
  }
  if (param_1[0x62] != 0) {
    param_1[99] = param_1[99] + 1;
    param_1[0x62] = 0;
  }
  while( true ) {
    local_8 = 0;
    bVar2 = false;
    uVar4 = param_1[0xd];
    if ((int)uVar4 < 0x1101) break;
    if (0x3004 < (int)uVar4) {
      if (uVar4 != 0x4000) {
        bVar7 = uVar4 == 0x5000;
LAB_00b13b15:
        if (!bVar7) goto switchD_00b136bf_caseD_1112;
      }
      goto LAB_00b13b1b;
    }
    if (uVar4 == 0x3004) {
      param_1[100] = 1;
      param_1[0xd] = 0x1000;
      *(int *)(param_1[0x39] + 0x38) = *(int *)(param_1[0x39] + 0x38) + 1;
      goto LAB_00b13b1b;
    }
    switch(uVar4) {
    case 0x1110:
    case 0x1111:
      param_1[0xc] = 0;
      iVar6 = FUN_00b0fd30(param_1);
      if (0 < iVar6) {
        param_1[0xd] = 0x1120;
        param_1[0x11] = 0;
        if (param_1[5] != param_1[4]) {
          uVar5 = FUN_00a83770(param_1[5],param_1[4]);
          param_1[4] = uVar5;
        }
        goto LAB_00b13bbb;
      }
      goto LAB_00b13cf5;
    default:
switchD_00b136bf_caseD_1112:
      uVar10 = CONCAT44(unaff_EBX,0x26a);
      uVar9 = 0xff;
      goto LAB_00b13ce3;
    case 0x1120:
    case 0x1121:
      iVar6 = FUN_00b0ffa0(param_1);
      if (iVar6 < 1) goto LAB_00b13cf5;
      if (param_1[0x1b] == 0) {
        param_1[0xd] = 0x1130;
      }
      else {
        param_1[0xd] = 0x11d0;
        if (param_1[0x50] != 0) {
          param_1[0xd] = 0x11e0;
        }
      }
      break;
    case 0x1130:
    case 0x1131:
      iVar6 = FUN_00b12f10(param_1);
      if (iVar6 < 1) goto LAB_00b13cf5;
      if (iVar6 == 2) {
        param_1[0x1b] = 1;
        param_1[0xd] = (-(uint)(param_1[0x50] != 0) & 0x10) + 0x11d0;
      }
      else if (((*(byte *)(*(int *)(param_1[0x16] + 0x344) + 0x10) & 4) == 0) &&
              ((*(uint *)(*(int *)(param_1[0x16] + 0x344) + 0xc) & 0x100) == 0)) {
        iVar6 = FUN_00b10610(param_1);
        if (iVar6 < 1) goto LAB_00b13cf5;
        param_1[0xd] = (-(uint)(param_1[0x4b] != 0) & 0xb0) + 0x1140;
      }
      else {
        bVar2 = true;
        param_1[0xd] = 0x1140;
      }
      break;
    case 0x1140:
    case 0x1141:
      iVar6 = FUN_00b10a70(param_1);
      if (0 < iVar6) {
        param_1[0xd] = 0x1150;
        param_1[0x11] = 0;
        iVar6 = FUN_00b12b70(param_1);
        goto joined_r0x00b139c1;
      }
      goto LAB_00b13cf5;
    case 0x1150:
    case 0x1151:
      iVar6 = FUN_00b13000(param_1);
      if (iVar6 < 1) goto LAB_00b13cf5;
      param_1[0xd] = 0x1160;
      break;
    case 0x1160:
    case 0x1161:
      iVar6 = FUN_00b11b60(param_1);
      if (iVar6 < 1) goto LAB_00b13cf5;
      if (((*(uint *)(*(int *)(param_1[0x16] + 0x344) + 0xc) & 0x400) != 0) &&
         (iVar6 = FUN_00b02fc0(param_1), iVar6 < 1)) {
        FUN_00a7f3c0(0x14,0x84,0x169,".\\ssl\\s3_clnt.c",0x186);
        FUN_00b00df0(param_1,2,0x50);
        goto LAB_00b13cf5;
      }
      param_1[0xd] = (-(uint)(*(int *)(param_1[0x16] + 0x358) != 0) & 0xfffffff0) + 0x1180;
      break;
    case 0x1170:
    case 0x1171:
    case 0x1172:
    case 0x1173:
      iVar6 = FUN_00b133d0(param_1);
      if (iVar6 < 1) goto LAB_00b13cf5;
      param_1[0xd] = 0x1180;
      break;
    case 0x1180:
    case 0x1181:
      iVar6 = FUN_00b11be0(param_1);
      if (iVar6 < 1) goto LAB_00b13cf5;
      if (*(int *)(param_1[0x16] + 0x358) == 1) {
        param_1[0xd] = 0x1190;
      }
      else {
        param_1[0xd] = 0x11a0;
        *(undefined4 *)(param_1[0x16] + 0x180) = 0;
      }
      if ((*(byte *)param_1[0x16] & 0x10) != 0) {
        param_1[0xd] = 0x11a0;
        *(undefined4 *)((byte *)param_1[0x16] + 0x180) = 0;
      }
      break;
    case 0x1190:
    case 0x1191:
      iVar6 = FUN_00b12780(param_1);
      if (0 < iVar6) {
        param_1[0xd] = 0x11a0;
        param_1[0x11] = 0;
        *(undefined4 *)(param_1[0x16] + 0x180) = 0;
        goto LAB_00b13bbb;
      }
      goto LAB_00b13cf5;
    case 0x11a0:
    case 0x11a1:
      iVar6 = FUN_00b05180(param_1,0x11a0,0x11a1);
      if (iVar6 < 1) goto LAB_00b13cf5;
      param_1[0xd] = (-(uint)(*(int *)(param_1[0x16] + 0x41c) != 0) & 0x50) + 0x11b0;
      param_1[0x11] = 0;
      *(undefined4 *)(param_1[0x30] + 0xb4) = *(undefined4 *)(param_1[0x16] + 0x344);
      if (*(undefined4 **)(param_1[0x16] + 0x38c) == (undefined4 *)0x0) {
        *(undefined4 *)(param_1[0x30] + 0xb0) = 0;
      }
      else {
        *(undefined4 *)(param_1[0x30] + 0xb0) = **(undefined4 **)(param_1[0x16] + 0x38c);
      }
      iVar6 = (**(code **)(*(int *)(param_1[2] + 100) + 8))(param_1);
      if (iVar6 != 0) {
        iVar6 = (**(code **)(*(int *)(param_1[2] + 100) + 0x10))(param_1,0x12);
joined_r0x00b139c1:
        if (iVar6 != 0) goto LAB_00b13bbb;
      }
      goto LAB_00b13cf2;
    case 0x11b0:
    case 0x11b1:
      iVar6 = FUN_00b04ea0(param_1,0x11b0,0x11b1,*(undefined4 *)(*(int *)(param_1[2] + 100) + 0x20),
                           *(undefined4 *)(*(int *)(param_1[2] + 100) + 0x24));
      if (iVar6 < 1) goto LAB_00b13cf5;
      param_1[0xd] = 0x1100;
      *(uint *)param_1[0x16] = *(uint *)param_1[0x16] & 0xfffffffb;
      if (param_1[0x1b] == 0) {
        if (param_1[0x50] == 0) {
          *(undefined4 *)(param_1[0x16] + 0x350) = 0x11d0;
        }
        else {
          *(undefined4 *)(param_1[0x16] + 0x350) = 0x11e0;
        }
      }
      else {
        *(undefined4 *)(param_1[0x16] + 0x350) = 3;
        puVar1 = (uint *)param_1[0x16];
        if ((*(byte *)puVar1 & 2) != 0) {
          param_1[0xd] = 3;
          *puVar1 = *puVar1 | 4;
          *(undefined4 *)(param_1[0x16] + 4) = 0;
        }
      }
      break;
    case 0x11d0:
    case 0x11d1:
      iVar6 = FUN_00b05010(param_1,0x11d0,0x11d1);
      if (iVar6 < 1) goto LAB_00b13cf5;
      param_1[0xd] = (-(uint)(param_1[0x1b] != 0) & 0x119d) + 3;
      break;
    case 0x11e0:
    case 0x11e1:
      iVar6 = FUN_00b11820(param_1);
      if (iVar6 < 1) goto LAB_00b13cf5;
      param_1[0xd] = 0x11d0;
      break;
    case 0x11f0:
    case 0x11f1:
      iVar6 = FUN_00b11a00(param_1);
      if (iVar6 < 1) goto LAB_00b13cf5;
      param_1[0xd] = 0x1140;
      break;
    case 0x1200:
    case 0x1201:
      iVar6 = FUN_00b12e60(param_1);
      if (0 < iVar6) {
        param_1[0xd] = 0x11b0;
        goto LAB_00b13bbb;
      }
      goto LAB_00b13cf5;
    }
LAB_00b13bb8:
    param_1[0x11] = 0;
LAB_00b13bbb:
    local_8 = 0;
    if ((*(int *)(param_1[0x16] + 0x354) == 0) && (!bVar2)) {
      if ((param_1[0x3a] != 0) && (iVar6 = FUN_00a83650(param_1[4],0xb,0,0), iVar6 < 1))
      goto LAB_00b13cf5;
      if ((local_10 != (code *)0x0) && (uVar5 = param_1[0xd], uVar5 != uVar4)) {
        param_1[0xd] = uVar4;
        (*local_10)(param_1,0x1001,1);
        param_1[0xd] = uVar5;
      }
    }
  }
  if (uVar4 == 0x1100) {
    param_1[6] = 2;
    iVar6 = FUN_00a83650(param_1[4],0xb,0,0);
    if (0 < iVar6) {
      param_1[6] = 1;
      param_1[0xd] = *(uint *)(param_1[0x16] + 0x350);
      goto LAB_00b13bbb;
    }
  }
  else {
    if (uVar4 == 3) {
      FUN_00b0eda0(param_1);
      if (param_1[0xf] != 0) {
        FUN_00a92a20(param_1[0xf]);
        param_1[0xf] = 0;
      }
      if ((*(byte *)param_1[0x16] & 4) == 0) {
        FUN_00afadc0(param_1);
      }
      param_1[0x11] = 0;
      param_1[100] = 0;
      param_1[10] = 0;
      FUN_00afab20(param_1,1);
      if (param_1[0x1b] != 0) {
        *(int *)(param_1[0x39] + 0x58) = *(int *)(param_1[0x39] + 0x58) + 1;
      }
      iVar6 = 1;
      param_1[8] = (uint)FUN_00b13570;
      *(int *)(param_1[0x39] + 0x3c) = *(int *)(param_1[0x39] + 0x3c) + 1;
      if (local_10 != (code *)0x0) {
        (*local_10)(param_1,0x20,1);
      }
      goto LAB_00b13cf5;
    }
    if (uVar4 != 0x1000) {
      bVar7 = uVar4 == 0x1003;
      goto LAB_00b13b15;
    }
LAB_00b13b1b:
    param_1[9] = 0;
    if (local_10 != (code *)0x0) {
      (*local_10)(param_1,0x10,1);
    }
    if ((*param_1 & 0xff00) == 0x300) {
      param_1[1] = 0x1000;
      if (param_1[0xf] == 0) {
        local_8 = FUN_00a929e0();
        if ((local_8 == 0) || (iVar6 = FUN_00a92a60(local_8,0x4000), iVar6 == 0)) goto LAB_00b13cf2;
        param_1[0xf] = local_8;
      }
      local_8 = 0;
      iVar6 = FUN_00b05b70(param_1);
      if ((iVar6 != 0) && (iVar6 = FUN_00afad00(param_1,0), iVar6 != 0)) {
        FUN_00b0f810(param_1);
        param_1[0xd] = 0x1110;
        *(int *)(param_1[0x39] + 0x34) = *(int *)(param_1[0x39] + 0x34) + 1;
        goto LAB_00b13bb8;
      }
    }
    else {
      uVar10 = CONCAT44(unaff_EBX,0xef);
      uVar9 = 0x44;
LAB_00b13ce3:
      FUN_00a7f3c0(0x14,0x84,uVar9,".\\ssl\\s3_clnt.c",uVar10);
    }
  }
LAB_00b13cf2:
  iVar6 = -1;
LAB_00b13cf5:
  param_1[7] = param_1[7] - 1;
  if (local_8 != 0) {
    FUN_00a92a20();
  }
  if (local_10 != (code *)0x0) {
    (*local_10)(param_1,0x1002,iVar6);
  }
  return iVar6;
}



undefined * FUN_00b13e60(void)

{
  return &DAT_00dcd1b8;
}



undefined4 FUN_00b13e90(int *param_1)

{
  undefined *puVar1;
  uint _Size;
  int iVar2;
  undefined4 uVar3;
  undefined4 *_Dst;
  
  puVar1 = *(undefined **)(param_1[0xf] + 4);
  if (param_1[0xd] == 0x1010) {
    if ((((int *)param_1[0x30] == (int *)0x0) || (*(int *)param_1[0x30] != *param_1)) &&
       (iVar2 = FUN_00affdf0(param_1,0), iVar2 == 0)) {
      FUN_00b0e6b0(param_1,0);
      return 0xffffffff;
    }
    *puVar1 = 1;
    puVar1[1] = 0;
    puVar1[2] = 2;
    uVar3 = FUN_00af9ed0(param_1,puVar1 + 9,0);
    iVar2 = FUN_00af9f30(param_1,uVar3);
    _Dst = (undefined4 *)(puVar1 + 9 + iVar2);
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x14,0x65,0xb5,".\\ssl\\s2_clnt.c",0x241);
      return 0xffffffff;
    }
    puVar1[3] = (char)((uint)iVar2 >> 8);
    puVar1[4] = (char)iVar2;
    _Size = *(uint *)(param_1[0x30] + 0x44);
    if ((_Size == 0) || (0x20 < _Size)) {
      puVar1[5] = 0;
      puVar1[6] = 0;
    }
    else {
      puVar1[5] = (char)(_Size >> 8);
      puVar1[6] = (char)_Size;
      _memcpy(_Dst,(void *)(param_1[0x30] + 0x48),_Size);
      _Dst = (undefined4 *)((int)_Dst + _Size);
    }
    *(undefined4 *)(param_1[0x15] + 100) = 0x10;
    puVar1[7] = 0;
    puVar1[8] = 0x10;
    iVar2 = FUN_00a86ec0(param_1[0x15] + 0x68,0x10);
    if (iVar2 < 1) {
      return 0xffffffff;
    }
    iVar2 = param_1[0x15];
    *_Dst = *(undefined4 *)(iVar2 + 0x68);
    _Dst[1] = *(undefined4 *)(iVar2 + 0x6c);
    _Dst[2] = *(undefined4 *)(iVar2 + 0x70);
    _Dst[3] = *(undefined4 *)(iVar2 + 0x74);
    param_1[0xd] = 0x1011;
    param_1[0x11] = (int)((int)_Dst + (0x10 - (int)puVar1));
    param_1[0x12] = 0;
  }
  uVar3 = FUN_00b1b0b0(param_1);
  return uVar3;
}



undefined4 FUN_00b13ff0(void)

{
  undefined *puVar1;
  uint _Size;
  undefined4 uVar2;
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0x34) == 0x1040) {
    puVar1 = *(undefined **)(*(int *)(unaff_ESI + 0x3c) + 4);
    *puVar1 = 3;
    _Size = *(uint *)(*(int *)(unaff_ESI + 0x54) + 0x88);
    if (0x10 < _Size) {
      FUN_00a7f3c0(0x14,0xa7,0x44,".\\ssl\\s2_clnt.c",0x2df);
      return 0xffffffff;
    }
    _memcpy(puVar1 + 1,(void *)(*(int *)(unaff_ESI + 0x54) + 0x8c),_Size);
    *(undefined4 *)(unaff_ESI + 0x34) = 0x1041;
    *(int *)(unaff_ESI + 0x44) = *(int *)(*(int *)(unaff_ESI + 0x54) + 0x88) + 1;
    *(undefined4 *)(unaff_ESI + 0x48) = 0;
  }
  uVar2 = FUN_00b1b0b0();
  return uVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b14070(void)

{
  undefined *puVar1;
  int *piVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  undefined4 *unaff_ESI;
  undefined *puStack_2c;
  int iStack_28;
  int iStack_24;
  undefined *puStack_20;
  int iStack_1c;
  undefined auStack_18 [20];
  undefined4 uStack_4;
  
  uStack_4 = 0xb1407a;
  puVar1 = *(undefined **)(unaff_ESI[0xf] + 4);
  if (unaff_ESI[0xd] == 0x1050) {
    iVar3 = FUN_00b1af10();
    if (iVar3 < 0x12 - unaff_ESI[0x11]) {
      uVar4 = FUN_00b1b040();
      return uVar4;
    }
    iVar3 = iVar3 + unaff_ESI[0x11];
    unaff_ESI[0x11] = iVar3;
    if ((code *)unaff_ESI[0x19] != (code *)0x0) {
      (*(code *)unaff_ESI[0x19])(0,*unaff_ESI,0,puVar1,iVar3);
    }
    if (puVar1[1] != '\x01') {
      FUN_00b0e6b0();
      FUN_00a7f3c0(0x14,100,0x66,".\\ssl\\s2_clnt.c",0x309);
      return 0xffffffff;
    }
    if ((((int **)unaff_ESI[0x26] == (int **)0x0) ||
        (piVar2 = *(int **)unaff_ESI[0x26], *piVar2 == 0)) || (piVar2[1] == 0)) {
      unaff_ESI[0xd] = 0x1090;
    }
    else {
      unaff_ESI[0xd] = 0x1052;
    }
  }
  iVar3 = unaff_ESI[0x11];
  if (unaff_ESI[0xd] != 0x1090) goto LAB_00b1422b;
  iStack_1c = 0;
  iStack_28 = 0;
  iVar6 = 0;
  if ((*(code **)(unaff_ESI[0x39] + 0x74) != (code *)0x0) &&
     (iVar6 = (**(code **)(unaff_ESI[0x39] + 0x74))(), iVar6 < 0)) {
    unaff_ESI[6] = 4;
    return 0xffffffff;
  }
  unaff_ESI[6] = 1;
  if (iVar6 == 1) {
    if (iStack_28 == 0) {
      if (iStack_1c != 0) {
        FUN_00a812c0(iStack_1c);
        goto LAB_00b143a3;
      }
    }
    else {
      if (iStack_1c != 0) {
        unaff_ESI[0xd] = 0x1052;
        iVar5 = FUN_00afe610();
        if ((iVar5 == 0) || (iVar5 = FUN_00afe400(), iVar5 == 0)) {
          iVar6 = 0;
        }
        FUN_00a812c0(iStack_1c);
        FUN_00a816d0(iStack_28);
        goto LAB_00b141f2;
      }
LAB_00b143a3:
      if (iStack_28 != 0) {
        FUN_00a816d0(iStack_28);
      }
    }
    FUN_00a7f3c0(0x14,100,0x6a,".\\ssl\\s2_clnt.c",0x341);
  }
  else {
LAB_00b141f2:
    if (iVar6 != 0) goto LAB_00b1422b;
  }
  unaff_ESI[0xd] = 0x1051;
  *puVar1 = 0;
  puVar1[1] = 0;
  puVar1[2] = 2;
  puStack_2c = puVar1 + 3;
  unaff_ESI[0x12] = 0;
  unaff_ESI[0x11] = 3;
LAB_00b1422b:
  if ((unaff_ESI[0xd] != 0x1051) && (unaff_ESI[0xd] == 0x1052)) {
    puStack_2c = puVar1;
    FUN_00a91330(auStack_18);
    FUN_00a91380(auStack_18,*(undefined4 *)(unaff_ESI[0x39] + 0x88),0);
    FUN_00a91530(auStack_18,unaff_ESI[0x15] + 0xa0,*(undefined4 *)(unaff_ESI[0x15] + 0x9c));
    FUN_00a91530(auStack_18,puVar1 + 2,iVar3 + -2);
    iVar3 = FUN_00a812a0(**(undefined4 **)(*(int *)(unaff_ESI[0x30] + 0x98) + 8),&puStack_2c);
    if (0 < iVar3) {
      FUN_00a91530(auStack_18,puVar1,iVar3);
    }
    puStack_20 = puVar1 + 6;
    *puVar1 = 8;
    puVar1[1] = 1;
    puStack_2c = puVar1 + 2;
    iStack_24 = FUN_00a812a0(**(undefined4 **)unaff_ESI[0x26],&puStack_20);
    *puStack_2c = (char)((uint)iStack_24 >> 8);
    puStack_2c[1] = (undefined)iStack_24;
    puStack_2c = puStack_2c + 2;
    FUN_00aec430(auStack_18,puStack_20,&iStack_24,*(undefined4 *)(*(int *)unaff_ESI[0x26] + 4));
    FUN_00a915c0(auStack_18);
    *puStack_2c = (char)((uint)iStack_24 >> 8);
    puStack_2c[1] = (undefined)iStack_24;
    puStack_20 = puStack_20 + iStack_24;
    puStack_2c = puStack_2c + 2;
    unaff_ESI[0xd] = 0x1053;
    unaff_ESI[0x11] = (int)puStack_20 - (int)puVar1;
    unaff_ESI[0x12] = 0;
  }
  uVar4 = FUN_00b1b0b0();
  return uVar4;
}



undefined4 FUN_00b143d0(void)

{
  char *pcVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  undefined4 *unaff_ESI;
  
  pcVar1 = *(char **)(unaff_ESI[0xf] + 4);
  if (unaff_ESI[0xd] == 0x1060) {
    iVar3 = FUN_00b1af10();
    if (iVar3 < 1 - unaff_ESI[0x11]) {
      uVar4 = FUN_00b1b040();
      return uVar4;
    }
    unaff_ESI[0x11] = unaff_ESI[0x11] + iVar3;
    unaff_ESI[0xd] = 0x1061;
    if (*pcVar1 != '\x05') {
      if (*pcVar1 != '\0') {
        FUN_00b0e6b0();
        FUN_00a7f3c0(0x14,0x6e,0xd4,".\\ssl\\s2_clnt.c",0x397);
        return 0xffffffff;
      }
      FUN_00a7f3c0(0x14,0x6e,200,".\\ssl\\s2_clnt.c",0x39b);
      FUN_00b1af10();
      uVar4 = FUN_00b1b040();
      return uVar4;
    }
  }
  iVar3 = unaff_ESI[0x11];
  iVar2 = *(int *)(unaff_ESI[0xf] + 4);
  iVar6 = *(int *)(unaff_ESI[0x15] + 100) + 1;
  iVar5 = FUN_00b1af10();
  if (iVar5 < iVar6 - iVar3) {
    uVar4 = FUN_00b1b040();
    return uVar4;
  }
  if ((code *)unaff_ESI[0x19] != (code *)0x0) {
    (*(code *)unaff_ESI[0x19])(0,*unaff_ESI,0,iVar2,iVar6);
  }
  iVar3 = FUN_00a7fd90(iVar2 + 1,unaff_ESI[0x15] + 0x68,*(undefined4 *)(unaff_ESI[0x15] + 100));
  if (iVar3 != 0) {
    FUN_00b0e6b0();
    FUN_00a7f3c0(0x14,0x6e,0x88,".\\ssl\\s2_clnt.c",0x3b1);
    return 0xffffffff;
  }
  return 1;
}



undefined4 FUN_00b14530(void)

{
  char cVar1;
  char *pcVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  uint uVar6;
  int *piVar7;
  undefined4 *unaff_ESI;
  int *piVar8;
  
  pcVar2 = *(char **)(unaff_ESI[0xf] + 4);
  if (unaff_ESI[0xd] == 0x1070) {
    iVar3 = FUN_00b1af10();
    if (iVar3 < 1 - unaff_ESI[0x11]) {
      uVar4 = FUN_00b1b040();
      return uVar4;
    }
    unaff_ESI[0x11] = unaff_ESI[0x11] + iVar3;
    cVar1 = *pcVar2;
    if (cVar1 == '\a') {
      unaff_ESI[0xd] = 0x1050;
      return 1;
    }
    if (cVar1 != '\x06') {
      if (cVar1 == '\0') {
        FUN_00a7f3c0(0x14,0x6c,200,".\\ssl\\s2_clnt.c",0x3d4);
        FUN_00b1af10();
        uVar4 = FUN_00b1b040();
        return uVar4;
      }
      FUN_00b0e6b0();
      FUN_00a7f3c0(0x14,0x6c,0xd4,".\\ssl\\s2_clnt.c",0x3d0);
      return 0xffffffff;
    }
    unaff_ESI[0xd] = 0x1071;
  }
  iVar3 = unaff_ESI[0x11];
  iVar5 = FUN_00b1af10();
  if (iVar5 < 0x11 - iVar3) {
    uVar4 = FUN_00b1b040();
    return uVar4;
  }
  unaff_ESI[0x11] = unaff_ESI[0x11] + iVar5;
  if ((code *)unaff_ESI[0x19] != (code *)0x0) {
    (*(code *)unaff_ESI[0x19])(0,*unaff_ESI,0,pcVar2,unaff_ESI[0x11]);
  }
  if (unaff_ESI[0x1b] == 0) {
    *(undefined4 *)(unaff_ESI[0x30] + 0x44) = 0x10;
    iVar3 = unaff_ESI[0x30];
    *(undefined4 *)(iVar3 + 0x48) = *(undefined4 *)(pcVar2 + 1);
    *(undefined4 *)(iVar3 + 0x4c) = *(undefined4 *)(pcVar2 + 5);
    *(undefined4 *)(iVar3 + 0x50) = *(undefined4 *)(pcVar2 + 9);
    *(undefined4 *)(iVar3 + 0x54) = *(undefined4 *)(pcVar2 + 0xd);
  }
  else if ((*(byte *)(unaff_ESI + 0x40) & 1) == 0) {
    uVar6 = *(uint *)(unaff_ESI[0x30] + 0x44);
    if (0x20 < uVar6) {
LAB_00b1470f:
      FUN_00b0e6b0();
      FUN_00a7f3c0(0x14,0x6c,0xe7,".\\ssl\\s2_clnt.c",0x3f9);
      return 0xffffffff;
    }
    piVar7 = (int *)(unaff_ESI[0x30] + 0x48);
    piVar8 = (int *)(pcVar2 + 1);
    for (; 3 < uVar6; uVar6 = uVar6 - 4) {
      if (*piVar8 != *piVar7) goto LAB_00b146c8;
      piVar7 = piVar7 + 1;
      piVar8 = piVar8 + 1;
    }
    if (uVar6 != 0) {
LAB_00b146c8:
      iVar3 = (uint)*(byte *)piVar8 - (uint)*(byte *)piVar7;
      if (iVar3 == 0) {
        if (uVar6 < 2) goto LAB_00b14680;
        iVar3 = (uint)*(byte *)((int)piVar8 + 1) - (uint)*(byte *)((int)piVar7 + 1);
        if (iVar3 == 0) {
          if (uVar6 < 3) goto LAB_00b14680;
          iVar3 = (uint)*(byte *)((int)piVar8 + 2) - (uint)*(byte *)((int)piVar7 + 2);
          if (iVar3 == 0) {
            if (uVar6 < 4) goto LAB_00b14680;
            iVar3 = (uint)*(byte *)((int)piVar8 + 3) - (uint)*(byte *)((int)piVar7 + 3);
          }
        }
      }
      if ((iVar3 >> 0x1f | 1U) != 0) goto LAB_00b1470f;
    }
  }
LAB_00b14680:
  unaff_ESI[0xd] = 3;
  return 1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b14740(int param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 local_8;
  int local_4;
  
  piVar4 = (int *)0x0;
  local_4 = 0;
  local_8 = 0;
  iVar2 = FUN_00a81280(0,&stack0x00000010,param_3);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x14,0x7e,0xb,".\\ssl\\s2_clnt.c",0x40f);
    goto LAB_00b148a8;
  }
  local_4 = FUN_00a81010();
  if ((local_4 == 0) || (iVar3 = FUN_00a80df0(local_4,iVar2), iVar3 == 0)) {
    uVar6 = 0x415;
    uVar5 = 0x41;
  }
  else {
    iVar3 = FUN_00aff900(param_1,local_4);
    if ((*(int *)(param_1 + 200) == 0) || (0 < iVar3)) {
      FUN_00a7f4b0();
      *(undefined4 *)(*(int *)(param_1 + 0xc0) + 0xa0) = *(undefined4 *)(param_1 + 0xec);
      iVar3 = FUN_00aff7d0();
      if (iVar3 == 0) {
        local_8 = 0xffffffff;
        goto LAB_00b148a8;
      }
      iVar1 = *(int *)(*(int *)(param_1 + 0xc0) + 0x98);
      if (iVar1 != 0) {
        FUN_00aff830(iVar1);
      }
      *(int *)(*(int *)(param_1 + 0xc0) + 0x98) = iVar3;
      *(int *)(iVar3 + 0xc) = iVar2;
      *(int **)(iVar3 + 8) = (int *)(iVar3 + 0xc);
      piVar4 = (int *)FUN_00a82c40(iVar2);
      iVar2 = 0;
      if (piVar4 == (int *)0x0) {
        uVar6 = 0x434;
        uVar5 = 0xed;
      }
      else {
        if (*piVar4 == 6) {
          iVar3 = FUN_00aff8e0(iVar3,1);
          if (iVar3 != 0) {
            local_8 = 1;
          }
          goto LAB_00b148a8;
        }
        uVar6 = 0x439;
        uVar5 = 0xd2;
      }
    }
    else {
      uVar6 = 0x41d;
      uVar5 = 0x86;
    }
  }
  FUN_00a7f3c0(0x14,0x7e,uVar5,".\\ssl\\s2_clnt.c",uVar6);
LAB_00b148a8:
  FUN_00a80ea0(local_4);
  FUN_00a812c0(iVar2);
  FUN_00a816d0(piVar4);
  return local_8;
}



int FUN_00b148d0(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                undefined4 param_5)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  
  iVar2 = -1;
  if ((param_1 == 0) || (**(int **)(param_1 + 8) == 0)) {
LAB_00b1495b:
    FUN_00a7f3c0(0x14,0xbc,0xc0,".\\ssl\\s2_clnt.c",0x450);
    return -1;
  }
  piVar1 = (int *)FUN_00a82c40(**(int **)(param_1 + 8));
  if (piVar1 == (int *)0x0) goto LAB_00b1495b;
  if (*piVar1 == 6) {
    iVar2 = FUN_00ad1230(param_2,param_3,param_4,piVar1[5],param_5);
    if (-1 < iVar2) goto LAB_00b1494d;
    uVar4 = 0x45c;
    uVar3 = 4;
  }
  else {
    uVar4 = 0x455;
    uVar3 = 0xd1;
  }
  FUN_00a7f3c0(0x14,0xbc,uVar3,".\\ssl\\s2_clnt.c",uVar4);
LAB_00b1494d:
  FUN_00a816d0(piVar1);
  return iVar2;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b14980(void)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  uint *unaff_ESI;
  char *pcVar8;
  
  pcVar8 = *(char **)(unaff_ESI[0xf] + 4);
  if (unaff_ESI[0xd] == 0x1020) {
    iVar3 = FUN_00b1af10();
    if (iVar3 < (int)(0xb - unaff_ESI[0x11])) {
      uVar4 = FUN_00b1b040();
      return uVar4;
    }
    unaff_ESI[0x11] = 0xb;
    if (*pcVar8 != '\x04') {
      if (*pcVar8 == '\0') {
        FUN_00a7f3c0(0x14,0x6d,200,".\\ssl\\s2_clnt.c",0x167);
        return 0xffffffff;
      }
      FUN_00b0e6b0();
      FUN_00a7f3c0(0x14,0x6d,0xd4,".\\ssl\\s2_clnt.c",0x163);
      return 0xffffffff;
    }
    unaff_ESI[0x1b] = (uint)(pcVar8[1] != '\0');
    *(uint *)(unaff_ESI[0x15] + 0xdc) = (uint)(byte)pcVar8[2];
    if ((int)(uint)CONCAT11(pcVar8[3],pcVar8[4]) < (int)*unaff_ESI) {
      *unaff_ESI = (uint)CONCAT11(pcVar8[3],pcVar8[4]);
    }
    *(uint *)(unaff_ESI[0x15] + 0xe0) = (uint)CONCAT11(pcVar8[5],pcVar8[6]);
    *(uint *)(unaff_ESI[0x15] + 0xe4) = (uint)CONCAT11(pcVar8[7],pcVar8[8]);
    *(uint *)(unaff_ESI[0x15] + 0xd8) = (uint)CONCAT11(pcVar8[9],pcVar8[10]);
    unaff_ESI[0xd] = 0x1021;
  }
  uVar1 = unaff_ESI[0x15];
  uVar1 = *(int *)(uVar1 + 0xe4) + *(int *)(uVar1 + 0xe0) + 0xb + *(int *)(uVar1 + 0xd8);
  if (0x3fff < uVar1) {
    FUN_00a7f3c0(0x14,0x6d,0x128,".\\ssl\\s2_clnt.c",0x180);
    return 0xffffffff;
  }
  uVar2 = unaff_ESI[0x11];
  iVar3 = FUN_00b1af10();
  if (iVar3 != uVar1 - uVar2) {
    uVar4 = FUN_00b1b040();
    return uVar4;
  }
  if ((code *)unaff_ESI[0x19] != (code *)0x0) {
    (*(code *)unaff_ESI[0x19])(0,*unaff_ESI,0,pcVar8,uVar1);
  }
  pcVar8 = pcVar8 + 0xb;
  if (unaff_ESI[0x1b] == 0) {
    if ((*(int *)(unaff_ESI[0x30] + 0x44) != 0) && (iVar3 = FUN_00affdf0(), iVar3 == 0)) {
      FUN_00b0e6b0();
      return 0xffffffff;
    }
    iVar3 = FUN_00b14740();
    if (iVar3 < 1) {
      FUN_00b0e6b0();
      return 0xffffffff;
    }
    iVar3 = *(int *)(unaff_ESI[0x15] + 0xe0);
    if (*(int *)(unaff_ESI[0x15] + 0xe4) == 0) {
      FUN_00b0e6b0();
      FUN_00a7f3c0(0x14,0x6d,0xb8,".\\ssl\\s2_clnt.c",0x1c4);
      return 0xffffffff;
    }
    iVar5 = FUN_00afa020();
    pcVar8 = pcVar8 + *(int *)(unaff_ESI[0x15] + 0xe4) + iVar3;
    if (iVar5 == 0) {
      FUN_00b0e6b0();
      FUN_00a7f3c0(0x14,0x6d,0x41,".\\ssl\\s2_clnt.c",0x1d3);
      return 0xffffffff;
    }
    FUN_00a80c60(iVar5,&LAB_00af9ea0);
    iVar6 = FUN_00af9ed0();
    FUN_00a80c60(iVar6,&LAB_00af9ea0);
    iVar3 = iVar5;
    if ((unaff_ESI[0x40] & 0x400000) != 0) {
      iVar3 = iVar6;
      iVar6 = iVar5;
    }
    iVar7 = 0;
    iVar5 = FUN_00a80ed0(iVar6);
    if (0 < iVar5) {
      do {
        uVar4 = FUN_00a80ee0(iVar6,iVar7);
        iVar5 = FUN_00a81100(iVar3,uVar4);
        if (-1 < iVar5) break;
        iVar7 = iVar7 + 1;
        iVar5 = FUN_00a80ed0(iVar6);
      } while (iVar7 < iVar5);
    }
    iVar3 = FUN_00a80ed0(iVar6);
    if (iVar3 <= iVar7) {
      FUN_00b0e6b0();
      FUN_00a7f3c0(0x14,0x6d,0xb9,".\\ssl\\s2_clnt.c",0x1fb);
      return 0xffffffff;
    }
    uVar4 = FUN_00a80ee0(iVar6,iVar7);
    *(undefined4 *)(unaff_ESI[0x30] + 0xb4) = uVar4;
    uVar1 = unaff_ESI[0x30];
    if (*(int *)(uVar1 + 0x9c) != 0) {
      FUN_00b0e6b0();
      uVar4 = 0x204;
      goto LAB_00b14e65;
    }
    *(undefined4 *)(uVar1 + 0x9c) = **(undefined4 **)(*(int *)(uVar1 + 0x98) + 8);
    FUN_00a7fe40(*(int *)(unaff_ESI[0x30] + 0x9c) + 0x10,1,3,".\\ssl\\s2_clnt.c",0x20a);
  }
  else {
    uVar1 = unaff_ESI[0x15];
    if (*(int *)(uVar1 + 0xe0) != 0) {
      FUN_00a7f3c0(0x14,0x6d,0xd8,".\\ssl\\s2_clnt.c",400);
      return 0xffffffff;
    }
    if ((*(int *)(uVar1 + 0xdc) != 0) && ((*(byte *)(unaff_ESI + 0x40) & 0x10) == 0)) {
      FUN_00a7f3c0(0x14,0x6d,0xd9,".\\ssl\\s2_clnt.c",0x198);
      return 0xffffffff;
    }
    if (*(int *)(uVar1 + 0xe4) != 0) {
      FUN_00a7f3c0(0x14,0x6d,0xda,".\\ssl\\s2_clnt.c",0x19e);
      return 0xffffffff;
    }
  }
  iVar3 = *(int *)(unaff_ESI[0x30] + 0x98);
  if ((iVar3 != 0) && (*(int *)(unaff_ESI[0x30] + 0x9c) == **(int **)(iVar3 + 8))) {
    *(undefined4 *)(unaff_ESI[0x15] + 0x88) = *(undefined4 *)(unaff_ESI[0x15] + 0xd8);
    uVar1 = unaff_ESI[0x15];
    if (*(uint *)(uVar1 + 0x88) < 0x11) {
      _memcpy((void *)(uVar1 + 0x8c),pcVar8,*(size_t *)(uVar1 + 0xd8));
      return 1;
    }
    FUN_00b0e6b0();
    FUN_00a7f3c0(0x14,0x6d,299,".\\ssl\\s2_clnt.c",0x21a);
    return 0xffffffff;
  }
  FUN_00b0e6b0();
  uVar4 = 0x212;
LAB_00b14e65:
  FUN_00a7f3c0(0x14,0x6d,0x44,".\\ssl\\s2_clnt.c",uVar4);
  return 0xffffffff;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b14e80(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined *puVar4;
  size_t sVar5;
  undefined *puVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  int iStack_10;
  undefined4 local_c;
  undefined *local_8;
  undefined4 local_4;
  
  local_4 = 0xb14e8a;
  puVar6 = *(undefined **)(*(int *)(param_1 + 0x3c) + 4);
  local_8 = puVar6;
  if (*(int *)(param_1 + 0x34) != 0x1030) goto LAB_00b150e2;
  iVar1 = FUN_00afc270(*(undefined4 *)(param_1 + 0xc0),&local_c,&local_4,0,0,0);
  if (iVar1 == 0) {
    FUN_00b0e6b0(param_1,1);
    FUN_00a7f3c0(0x14,0x66,0xce,".\\ssl\\s2_clnt.c",0x275);
    return 0xffffffff;
  }
  iVar1 = *(int *)(param_1 + 0xc0);
  *puVar6 = 2;
  puVar4 = puVar6 + 10;
  iVar2 = (**(code **)(*(int *)(param_1 + 8) + 0x4c))(*(undefined4 *)(iVar1 + 0xb4),puVar6 + 1);
  puVar6 = puVar6 + 1 + iVar2;
  iVar2 = FUN_00aa3450(local_c);
  *(int *)(iVar1 + 4) = iVar2;
  if (iVar2 < 9) {
    if ((0 < iVar2) && (iVar2 = FUN_00a86ec0(iVar1 + 8,iVar2), iVar2 < 1)) {
      return 0xffffffff;
    }
    iVar2 = FUN_00a989a0(local_c);
    *(int *)(iVar1 + 0x10) = iVar2;
    if (0 < iVar2) {
      if (0x30 < iVar2) {
        FUN_00b0e6b0(param_1,0);
        uVar8 = 0x295;
        goto LAB_00b14f3f;
      }
      iVar3 = FUN_00a86e60(iVar1 + 0x14,iVar2);
      if (iVar3 < 1) {
        FUN_00b0e6b0(param_1,0);
        return 0xffffffff;
      }
    }
    if ((*(byte *)(*(int *)(iVar1 + 0xb4) + 0x24) & 2) == 0) {
      iStack_10 = iVar2;
      if ((*(byte *)(*(int *)(iVar1 + 0xb4) + 0x20) & 2) != 0) {
        iStack_10 = 5;
        goto LAB_00b14fdb;
      }
    }
    else {
      iStack_10 = 8;
LAB_00b14fdb:
      if (iVar2 < iStack_10) {
        FUN_00b0e6b0(param_1,0);
        uVar8 = 0x2a9;
        uVar7 = 0x8b;
        goto LAB_00b14f46;
      }
    }
    sVar5 = iVar2 - iStack_10;
    *puVar6 = (char)(sVar5 >> 8);
    puVar6[1] = (char)sVar5;
    _memcpy(puVar4,(void *)(iVar1 + 0x14),sVar5);
    puVar4 = puVar4 + sVar5;
    iVar2 = FUN_00b148d0(*(undefined4 *)(iVar1 + 0x98),iStack_10,sVar5 + 0x14 + iVar1,puVar4,
                         (*(int *)(*(int *)(param_1 + 0x54) + 0xc) != 0) + '\x01');
    if (iVar2 < 1) {
      FUN_00b0e6b0(param_1,0);
      uVar8 = 0x2b7;
      uVar7 = 0xd0;
      goto LAB_00b14f46;
    }
    puVar6[2] = (char)((uint)iVar2 >> 8);
    puVar6[3] = (char)iVar2;
    sVar5 = *(size_t *)(iVar1 + 4);
    puVar6[4] = (char)(sVar5 >> 8);
    puVar6[5] = (char)sVar5;
    if ((int)sVar5 < 9) {
      _memcpy(puVar4 + iVar2,(void *)(iVar1 + 8),sVar5);
      *(undefined4 *)(param_1 + 0x34) = 0x1031;
      *(undefined **)(param_1 + 0x44) = puVar4 + iVar2 + (sVar5 - (int)local_8);
      *(undefined4 *)(param_1 + 0x48) = 0;
LAB_00b150e2:
      uVar8 = FUN_00b1b0b0(param_1);
      return uVar8;
    }
    FUN_00b0e6b0(param_1,0);
    uVar8 = 0x2c6;
  }
  else {
    FUN_00b0e6b0(param_1,0);
    uVar8 = 0x286;
  }
LAB_00b14f3f:
  uVar7 = 0x44;
LAB_00b14f46:
  FUN_00a7f3c0(0x14,0x66,uVar7,".\\ssl\\s2_clnt.c",uVar8);
  return 0xffffffff;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00b15100(undefined4 *param_1)

{
  int iVar1;
  code *pcVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  __time64_t _Var6;
  code *local_8;
  undefined4 local_4;
  
  local_4 = 0xb1510a;
  _Var6 = __time64((__time64_t *)0x0);
  local_4 = (undefined4)_Var6;
  local_8 = (code *)0x0;
  FUN_00a86df0(&local_4,4,0);
  FUN_00a7f4b0();
  SetLastError(0);
  pcVar2 = (code *)param_1[0x34];
  if ((pcVar2 != (code *)0x0) || (pcVar2 = *(code **)(param_1[0x39] + 0x9c), pcVar2 != (code *)0x0))
  {
    local_8 = pcVar2;
  }
  param_1[7] = param_1[7] + 1;
  uVar3 = FUN_00aa35c0();
  if (((uVar3 & 0x3000) == 0) || (uVar3 = FUN_00aa35c0(), (uVar3 & 0x4000) != 0)) {
    FUN_00afae80();
  }
  while( true ) {
    iVar4 = 0;
    iVar1 = param_1[0xd];
    if (iVar1 < 0x1001) break;
    if (0x4000 < iVar1) {
      if (iVar1 != 0x5000) goto switchD_00b1523c_caseD_1004;
      goto switchD_00b1523c_caseD_1003;
    }
    if (iVar1 == 0x4000) goto switchD_00b1523c_caseD_1003;
    switch(iVar1) {
    case 0x1003:
      goto switchD_00b1523c_caseD_1003;
    default:
      goto switchD_00b1523c_caseD_1004;
    case 0x1010:
    case 0x1011:
      param_1[0xc] = 0;
      iVar5 = FUN_00b13e90();
      if (iVar5 < 1) goto LAB_00b1541c;
      param_1[0x11] = 0;
      param_1[0xd] = 0x1020;
      break;
    case 0x1020:
    case 0x1021:
      iVar5 = FUN_00b14980();
      if (iVar5 < 1) goto LAB_00b1541c;
      param_1[0x11] = 0;
      param_1[0xd] = (-(uint)(param_1[0x1b] != 0) & 0x50) + 0x1030;
      break;
    case 0x1030:
    case 0x1031:
      iVar5 = FUN_00b14e80();
      if (iVar5 < 1) goto LAB_00b1541c;
      param_1[0x11] = 0;
      param_1[0xd] = 0x1080;
      break;
    case 0x1040:
    case 0x1041:
      iVar5 = FUN_00b13ff0();
      if (iVar5 < 1) goto LAB_00b1541c;
      param_1[0x11] = 0;
      param_1[0xd] = 0x1060;
      break;
    case 0x1050:
    case 0x1051:
    case 0x1052:
    case 0x1053:
    case 0x1090:
      iVar5 = FUN_00b14070();
      if (iVar5 < 1) goto LAB_00b1541c;
      param_1[0x11] = 0;
      param_1[0xd] = 0x1070;
      break;
    case 0x1060:
    case 0x1061:
      iVar5 = FUN_00b143d0();
      if (iVar5 < 1) goto LAB_00b1541c;
      param_1[0x11] = 0;
      param_1[0xd] = 0x1070;
      break;
    case 0x1070:
    case 0x1071:
      iVar5 = FUN_00b14530();
      if (iVar5 < 1) goto LAB_00b1541c;
      break;
    case 0x1080:
      iVar5 = FUN_00b1b120(param_1,1);
      if (iVar5 != 0) {
        *(undefined4 *)(param_1[0x15] + 4) = 0;
        param_1[0xd] = 0x1040;
        break;
      }
      goto LAB_00b15419;
    }
LAB_00b153b7:
    if ((local_8 != (code *)0x0) && (iVar4 = param_1[0xd], iVar4 != iVar1)) {
      param_1[0xd] = iVar1;
      (*local_8)(param_1);
      param_1[0xd] = iVar4;
    }
  }
  if (iVar1 == 0x1000) {
switchD_00b1523c_caseD_1003:
    param_1[9] = 0;
    if (local_8 != (code *)0x0) {
      (*local_8)(param_1,0x10);
    }
    iVar4 = param_1[0xf];
    *param_1 = 2;
    param_1[1] = 0x1000;
    if ((iVar4 != 0) || (iVar4 = FUN_00a929e0(), iVar4 != 0)) {
      iVar5 = FUN_00a92a60();
      if (iVar5 != 0) {
        param_1[0xf] = iVar4;
        param_1[0x11] = 0;
        param_1[0xd] = 0x1010;
        *(int *)(param_1[0x39] + 0x34) = *(int *)(param_1[0x39] + 0x34) + 1;
        param_1[8] = FUN_00b15100;
        goto LAB_00b153b7;
      }
      if (iVar4 == param_1[0xf]) {
        iVar4 = 0;
      }
    }
LAB_00b15419:
    iVar5 = -1;
  }
  else {
    if (iVar1 != 3) {
switchD_00b1523c_caseD_1004:
      FUN_00a7f3c0(0x14,0x7b,0xff,".\\ssl\\s2_clnt.c",0x136);
      return -1;
    }
    if (param_1[0xf] != 0) {
      FUN_00a92a20();
      param_1[0xf] = 0;
    }
    iVar5 = 1;
    param_1[0x11] = 0;
    FUN_00afab20(param_1,1);
    if (param_1[0x1b] != 0) {
      *(int *)(param_1[0x39] + 0x58) = *(int *)(param_1[0x39] + 0x58) + 1;
    }
    *(int *)(param_1[0x39] + 0x3c) = *(int *)(param_1[0x39] + 0x3c) + 1;
    if (local_8 != (code *)0x0) {
      (*local_8)(param_1,0x20,1);
    }
  }
LAB_00b1541c:
  param_1[7] = param_1[7] + -1;
  if (iVar4 != 0) {
    FUN_00a92a20();
  }
  if (local_8 != (code *)0x0) {
    (*local_8)(param_1,0x1002,iVar5);
  }
  return iVar5;
}



undefined * FUN_00b15510(void)

{
  return &DAT_00dcd240;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b15520(int *param_1,byte **param_2)

{
  char cVar1;
  char *pcVar2;
  byte *pbVar3;
  char *pcVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  undefined4 uVar10;
  byte *local_180;
  undefined local_179;
  undefined local_178;
  undefined local_177;
  undefined local_176;
  byte **local_174;
  undefined4 local_170;
  undefined4 local_16c;
  undefined4 local_168;
  undefined4 local_164;
  undefined4 local_160;
  undefined4 local_15c;
  undefined4 local_158;
  undefined4 local_154;
  undefined4 local_150;
  undefined4 local_14c;
  undefined4 local_148;
  undefined4 local_144;
  undefined4 local_140;
  undefined *local_13c;
  undefined4 local_134;
  undefined4 local_130;
  undefined *local_12c;
  undefined4 local_124;
  undefined4 local_120;
  undefined *local_11c;
  undefined4 local_114;
  undefined4 local_110;
  undefined *local_10c;
  int local_104;
  undefined4 local_100;
  int *local_fc;
  int local_f4;
  undefined4 local_f0;
  int *local_ec;
  int local_e4;
  undefined4 local_e0;
  int *local_dc;
  int local_d4;
  undefined4 local_d0;
  int *local_cc;
  undefined4 local_c4;
  undefined4 local_c0;
  undefined *local_bc;
  undefined4 local_b4;
  undefined4 local_b0;
  undefined *local_ac;
  undefined4 local_a4;
  undefined4 local_a0;
  undefined *local_9c;
  int local_94;
  undefined4 local_90;
  char *local_8c;
  undefined4 local_84;
  undefined4 local_80;
  undefined *local_7c;
  int local_74;
  undefined4 local_70;
  int local_6c;
  int local_64;
  undefined4 local_60;
  char *local_5c;
  int local_54;
  undefined4 local_50;
  char *local_4c;
  int local_44;
  undefined4 local_40;
  char *local_3c;
  undefined local_34 [8];
  undefined local_2c [8];
  undefined local_24 [8];
  undefined local_1c [8];
  undefined local_14 [8];
  undefined local_c [8];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_180;
  local_174 = param_2;
  local_158 = 0;
  local_168 = 0;
  local_150 = 0;
  local_160 = 0;
  local_154 = 0;
  local_170 = 0;
  local_148 = 0;
  local_14c = 0;
  local_15c = 0;
  local_16c = 0;
  local_164 = 0;
  if ((param_1 != (int *)0x0) && ((param_1[0x2d] != 0 || (param_1[0x2e] != 0)))) {
    local_13c = local_34;
    local_144 = 8;
    local_140 = 2;
    FUN_00a9da80(&local_144,1);
    local_12c = local_c;
    local_134 = 8;
    local_130 = 2;
    FUN_00a9da80(&local_134,*param_1);
    local_11c = &local_178;
    local_120 = 4;
    if (param_1[0x2d] == 0) {
      iVar5 = param_1[0x2e];
    }
    else {
      iVar5 = *(int *)(param_1[0x2d] + 8);
    }
    local_177 = (undefined)((uint)iVar5 >> 8);
    if (*param_1 == 2) {
      local_124 = 3;
      local_178 = (char)((uint)iVar5 >> 0x10);
      local_176 = (char)iVar5;
    }
    else {
      local_124 = 2;
      local_178 = local_177;
      local_177 = (char)iVar5;
    }
    if (param_1[0x2c] != 0) {
      local_179 = *(undefined *)(param_1 + 0x2c);
      local_10c = &local_179;
      local_114 = 1;
      local_110 = 4;
    }
    local_104 = param_1[4];
    local_f4 = param_1[0x11];
    local_fc = param_1 + 5;
    local_e4 = param_1[0x1a];
    local_ec = param_1 + 0x12;
    local_d4 = param_1[1];
    local_dc = param_1 + 0x1b;
    local_cc = param_1 + 2;
    local_100 = 4;
    local_f0 = 4;
    local_e0 = 4;
    local_d0 = 4;
    if (param_1[0x2b] != 0) {
      local_bc = local_24;
      local_c4 = 8;
      local_c0 = 2;
      FUN_00a9da80(&local_c4,param_1[0x2b]);
    }
    if (param_1[0x2a] != 0) {
      local_ac = local_14;
      local_b4 = 8;
      local_b0 = 2;
      FUN_00a9da80(&local_b4,param_1[0x2a]);
    }
    if (param_1[0x28] != 0) {
      local_9c = local_2c;
      local_a4 = 8;
      local_a0 = 2;
      FUN_00a9da80(&local_a4,param_1[0x28]);
    }
    pcVar2 = (char *)param_1[0x34];
    if (pcVar2 != (char *)0x0) {
      pcVar4 = pcVar2;
      do {
        cVar1 = *pcVar4;
        pcVar4 = pcVar4 + 1;
      } while (cVar1 != '\0');
      local_94 = (int)pcVar4 - (int)(pcVar2 + 1);
      local_90 = 4;
      local_8c = pcVar2;
    }
    if (param_1[0x39] != 0) {
      local_74 = param_1[0x3a];
      local_70 = 4;
      local_6c = param_1[0x39];
    }
    if (0 < param_1[0x3b]) {
      local_7c = local_1c;
      local_84 = 8;
      local_80 = 2;
      FUN_00a9da80(&local_84,param_1[0x3b]);
    }
    pcVar2 = (char *)param_1[0x23];
    if (pcVar2 != (char *)0x0) {
      pcVar4 = pcVar2;
      do {
        cVar1 = *pcVar4;
        pcVar4 = pcVar4 + 1;
      } while (cVar1 != '\0');
      local_64 = (int)pcVar4 - (int)(pcVar2 + 1);
      local_60 = 4;
      local_5c = pcVar2;
    }
    pcVar2 = (char *)param_1[0x24];
    if (pcVar2 != (char *)0x0) {
      pcVar4 = pcVar2;
      do {
        cVar1 = *pcVar4;
        pcVar4 = pcVar4 + 1;
      } while (cVar1 != '\0');
      local_54 = (int)pcVar4 - (int)(pcVar2 + 1);
      local_50 = 4;
      local_4c = pcVar2;
    }
    pcVar2 = (char *)param_1[0x3c];
    if (pcVar2 != (char *)0x0) {
      pcVar4 = pcVar2;
      do {
        cVar1 = *pcVar4;
        pcVar4 = pcVar4 + 1;
      } while (cVar1 != '\0');
      local_44 = (int)pcVar4 - (int)(pcVar2 + 1);
      local_40 = 4;
      local_3c = pcVar2;
    }
    iVar5 = FUN_00a887a0(&local_144,0);
    iVar6 = FUN_00a887a0(&local_134,0);
    iVar7 = FUN_00a888b0(&local_124,0);
    iVar8 = FUN_00a888b0(&local_f4,0);
    iVar9 = FUN_00a888b0(&local_104,0);
    iVar9 = iVar5 + iVar6 + iVar7 + iVar8 + iVar9;
    if (param_1[1] != 0) {
      iVar5 = FUN_00a888b0(&local_d4,0);
      iVar9 = iVar9 + iVar5;
    }
    if (param_1[0x2b] != 0) {
      local_158 = FUN_00a887a0(&local_c4,0);
      iVar5 = FUN_00a90b80(1,local_158,1);
      iVar9 = iVar9 + iVar5;
    }
    if (param_1[0x2a] != 0) {
      local_168 = FUN_00a887a0(&local_b4,0);
      iVar5 = FUN_00a90b80(1,local_168,2);
      iVar9 = iVar9 + iVar5;
    }
    if (param_1[0x27] != 0) {
      local_150 = FUN_00a812a0(param_1[0x27],0);
      iVar5 = FUN_00a90b80(1,local_150,3);
      iVar9 = iVar9 + iVar5;
    }
    uVar10 = FUN_00a888b0(&local_e4,0);
    iVar5 = FUN_00a90b80(1,uVar10,4);
    iVar9 = iVar9 + iVar5;
    if (param_1[0x28] != 0) {
      local_160 = FUN_00a887a0(&local_a4,0);
      iVar5 = FUN_00a90b80(1,local_160,5);
      iVar9 = iVar9 + iVar5;
    }
    if (0 < param_1[0x3b]) {
      local_14c = FUN_00a887a0(&local_84,0);
      iVar5 = FUN_00a90b80(1,local_14c,9);
      iVar9 = iVar9 + iVar5;
    }
    if (param_1[0x39] != 0) {
      local_15c = FUN_00a888b0(&local_74,0);
      iVar5 = FUN_00a90b80(1,local_15c,10);
      iVar9 = iVar9 + iVar5;
    }
    if (param_1[0x34] != 0) {
      local_148 = FUN_00a888b0(&local_94,0);
      iVar5 = FUN_00a90b80(1,local_148,6);
      iVar9 = iVar9 + iVar5;
    }
    if (param_1[0x2c] != 0) {
      local_16c = FUN_00a888b0(&local_114,0);
      iVar5 = FUN_00a90b80(1,local_16c,0xb);
      iVar9 = iVar9 + iVar5;
    }
    if (param_1[0x23] != 0) {
      local_154 = FUN_00a888b0(&local_64,0);
      iVar5 = FUN_00a90b80(1,local_154,7);
      iVar9 = iVar9 + iVar5;
    }
    if (param_1[0x24] != 0) {
      local_170 = FUN_00a888b0(&local_54,0);
      iVar5 = FUN_00a90b80(1,local_170,8);
      iVar9 = iVar9 + iVar5;
    }
    if (param_1[0x3c] != 0) {
      local_164 = FUN_00a888b0(&local_44,0);
      iVar5 = FUN_00a90b80(1,local_164,0xc);
      iVar9 = iVar9 + iVar5;
    }
    FUN_00a90b80(1,iVar9,0x10);
    if (local_174 != (byte **)0x0) {
      local_180 = *local_174;
      FUN_00a90fd0(&local_180,1,iVar9,0x10,0);
      FUN_00a887a0(&local_144,&local_180);
      FUN_00a887a0(&local_134,&local_180);
      FUN_00a888b0(&local_124,&local_180);
      FUN_00a888b0(&local_f4,&local_180);
      FUN_00a888b0(&local_104,&local_180);
      pbVar3 = local_180;
      if (param_1[1] != 0) {
        FUN_00a888b0(&local_d4,&local_180);
        *pbVar3 = *pbVar3 & 0x20 | 0x80;
      }
      if (param_1[0x2b] != 0) {
        FUN_00a90fd0(&local_180,1,local_158,1,0x80);
        FUN_00a887a0(&local_c4,&local_180);
      }
      if (param_1[0x2a] != 0) {
        FUN_00a90fd0(&local_180,1,local_168,2,0x80);
        FUN_00a887a0(&local_b4,&local_180);
      }
      if (param_1[0x27] != 0) {
        FUN_00a90fd0(&local_180,1,local_150,3,0x80);
        FUN_00a812a0(param_1[0x27],&local_180);
      }
      FUN_00a90fd0(&local_180,1,uVar10,4,0x80);
      FUN_00a888b0(&local_e4,&local_180);
      if (param_1[0x28] != 0) {
        FUN_00a90fd0(&local_180,1,local_160,5,0x80);
        FUN_00a887a0(&local_a4,&local_180);
      }
      if (param_1[0x34] != 0) {
        FUN_00a90fd0(&local_180,1,local_148,6,0x80);
        FUN_00a888b0(&local_94,&local_180);
      }
      if (param_1[0x23] != 0) {
        FUN_00a90fd0(&local_180,1,local_154,7,0x80);
        FUN_00a888b0(&local_64,&local_180);
      }
      if (param_1[0x24] != 0) {
        FUN_00a90fd0(&local_180,1,local_170,8,0x80);
        FUN_00a888b0(&local_54,&local_180);
      }
      if (0 < param_1[0x3b]) {
        FUN_00a90fd0(&local_180,1,local_14c,9,0x80);
        FUN_00a887a0(&local_84,&local_180);
      }
      if (param_1[0x39] != 0) {
        FUN_00a90fd0(&local_180,1,local_15c,10,0x80);
        FUN_00a888b0(&local_74,&local_180);
      }
      if (param_1[0x2c] != 0) {
        FUN_00a90fd0(&local_180,1,local_16c,0xb,0x80);
        FUN_00a888b0(&local_114,&local_180);
      }
      if (param_1[0x3c] != 0) {
        FUN_00a90fd0(&local_180,1,local_164,0xc,0x80);
        FUN_00a888b0(&local_44,&local_180);
      }
      *local_174 = local_180;
    }
    ___security_check_cookie_4();
    return;
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

uint * FUN_00b15e60(uint **param_1,byte **param_2,int param_3)

{
  byte bVar1;
  uint *puVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  __time64_t _Var6;
  undefined4 *local_60;
  uint *local_5c;
  byte *pbStack_58;
  undefined auStack_54 [4];
  undefined auStack_50 [4];
  uint local_4c [2];
  byte *local_44;
  undefined4 local_3c [2];
  int local_34;
  byte *local_2c [2];
  undefined4 local_24;
  byte *local_14;
  byte *local_10;
  byte *local_c;
  byte **local_8;
  undefined4 local_4;
  
  local_4 = 0xb15e6a;
  local_c = *param_2;
  local_8 = param_2;
  local_24 = 0x3a;
  if (((param_1 == (uint **)0x0) || (puVar2 = *param_1, puVar2 == (uint *)0x0)) &&
     (puVar2 = (uint *)FUN_00affa90(), puVar2 == (uint *)0x0)) {
    local_4 = 0x182;
    goto LAB_00b16f67;
  }
  local_2c[0] = *param_2;
  local_60 = local_3c;
  local_5c = local_4c;
  if (param_3 == 0) {
    local_10 = (byte *)0x0;
  }
  else {
    local_10 = local_2c[0] + param_3;
  }
  iVar3 = FUN_00a910a0(local_2c,&param_3);
  if (iVar3 == 0) {
    local_4 = 0x188;
    goto LAB_00b16f67;
  }
  local_c = local_2c[0];
  local_34 = 0;
  local_3c[0] = 0;
  iVar3 = FUN_00a88780(&local_60,local_2c,local_14);
  if (iVar3 == 0) {
    local_4 = 0x18b;
    goto LAB_00b16f67;
  }
  local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
  if (local_34 != 0) {
    FUN_00a85120(local_34);
    local_34 = 0;
    local_3c[0] = 0;
  }
  local_c = local_2c[0];
  iVar3 = FUN_00a88780(&local_60,local_2c,local_14);
  if (iVar3 == 0) {
    local_4 = 399;
    goto LAB_00b16f67;
  }
  local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
  uVar4 = FUN_00a9db70(local_60);
  *puVar2 = uVar4;
  if (local_34 != 0) {
    FUN_00a85120(local_34);
    local_34 = 0;
    local_3c[0] = 0;
  }
  local_c = local_2c[0];
  local_44 = (byte *)0x0;
  local_4c[0] = 0;
  iVar3 = FUN_00a88890(&local_5c,local_2c,local_14);
  if (iVar3 == 0) {
    local_4 = 0x195;
    goto LAB_00b16f67;
  }
  local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
  if (uVar4 == 2) {
    if (local_4c[0] != 3) {
      local_24 = 0x89;
      goto LAB_00b16f67;
    }
    uVar4 = ((*local_44 | 0x200) << 8 | (uint)local_44[1]) << 8 | (uint)local_44[2];
  }
  else {
    if ((int)(uVar4 & 0xffffff00) < 0x300) {
      local_24 = 0xfe;
      goto LAB_00b16f67;
    }
    if (local_4c[0] != 2) {
      local_24 = 0x89;
      goto LAB_00b16f67;
    }
    uVar4 = (*local_44 | 0x30000) << 8 | (uint)local_44[1];
  }
  puVar2[0x2e] = uVar4;
  puVar2[0x2d] = 0;
  local_c = local_2c[0];
  iVar3 = FUN_00a88890(&local_5c,local_2c,local_14);
  if (iVar3 == 0) {
    local_4 = 0x1b6;
    goto LAB_00b16f67;
  }
  local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
  if (0x20 < (int)local_4c[0]) {
    local_4c[0] = 0x20;
  }
  puVar2[0x11] = local_4c[0];
  if (0x20 < (int)local_4c[0]) {
    FUN_00a7fd60(".\\ssl\\ssl_asn1.c",0x1c2,"os.length <= (int)sizeof(ret->session_id)");
  }
  _memcpy(puVar2 + 0x12,local_44,local_4c[0]);
  local_c = local_2c[0];
  iVar3 = FUN_00a88890(&local_5c,local_2c,local_14);
  if (iVar3 == 0) {
    local_4 = 0x1c5;
    goto LAB_00b16f67;
  }
  local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
  if ((int)local_4c[0] < 0x31) {
    puVar2[4] = local_4c[0];
  }
  else {
    puVar2[4] = 0x30;
  }
  _memcpy(puVar2 + 5,local_44,puVar2[4]);
  local_4c[0] = 0;
  if ((local_14 == (byte *)0x0) || (bVar1 = *local_2c[0], (bVar1 & 0xdf) != 0x80)) {
LAB_00b161ee:
    puVar2[1] = local_4c[0];
  }
  else {
    *local_2c[0] = bVar1 & 0x20 | 4;
    local_c = local_2c[0];
    iVar3 = FUN_00a88890(&local_5c,local_2c,local_14);
    if (iVar3 == 0) {
      local_4 = 0x1e0;
      *local_c = bVar1;
      goto LAB_00b16f67;
    }
    local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
    *local_c = bVar1;
    if ((int)local_4c[0] < 9) goto LAB_00b161ee;
    puVar2[1] = 8;
  }
  _memcpy(puVar2 + 2,local_44,puVar2[1]);
  if (local_44 != (byte *)0x0) {
    FUN_00a85120(local_44);
  }
  local_3c[0] = 0;
  if ((local_14 != (byte *)0x0) && (*local_2c[0] == 0xa1)) {
    local_c = local_2c[0];
    iVar3 = FUN_00a90eb0(local_2c,&pbStack_58,auStack_50,auStack_54,local_14);
    if ((char)iVar3 < '\0') {
      local_24 = 0x3b;
      local_4 = 0x1e9;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + (int)(local_14 + (-2 - (int)local_2c[0]));
    }
    iVar5 = FUN_00a88780(&local_60,local_2c,pbStack_58);
    if (iVar5 == 0) {
      local_4 = 0x1e9;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + ((int)local_14 - (int)local_2c[0]);
      iVar3 = FUN_00a90aa0(local_2c,pbStack_58);
      if (iVar3 == 0) {
        local_24 = 0x3f;
        local_4 = 0x1e9;
        goto LAB_00b16f67;
      }
    }
    local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
  }
  if (local_34 == 0) {
    _Var6 = __time64((__time64_t *)0x0);
    puVar2[0x2b] = (uint)_Var6;
  }
  else {
    uVar4 = FUN_00a9db70(local_60);
    puVar2[0x2b] = uVar4;
    FUN_00a85120(local_34);
    local_34 = 0;
  }
  local_3c[0] = 0;
  if ((local_14 != (byte *)0x0) && (*local_2c[0] == 0xa2)) {
    local_c = local_2c[0];
    iVar3 = FUN_00a90eb0(local_2c,&pbStack_58,auStack_54,auStack_50,local_14);
    if ((char)iVar3 < '\0') {
      local_24 = 0x3b;
      local_4 = 499;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + (int)(local_14 + (-2 - (int)local_2c[0]));
    }
    iVar5 = FUN_00a88780(&local_60,local_2c,pbStack_58);
    if (iVar5 == 0) {
      local_4 = 499;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + ((int)local_14 - (int)local_2c[0]);
      iVar3 = FUN_00a90aa0(local_2c,pbStack_58);
      if (iVar3 == 0) {
        local_24 = 0x3f;
        local_4 = 499;
        goto LAB_00b16f67;
      }
    }
    local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
  }
  if (local_34 == 0) {
    puVar2[0x2a] = 3;
  }
  else {
    uVar4 = FUN_00a9db70(local_60);
    puVar2[0x2a] = uVar4;
    FUN_00a85120(local_34);
    local_34 = 0;
    local_3c[0] = 0;
  }
  if (puVar2[0x27] != 0) {
    FUN_00a812c0(puVar2[0x27]);
    puVar2[0x27] = 0;
  }
  if ((local_14 != (byte *)0x0) && (*local_2c[0] == 0xa3)) {
    local_c = local_2c[0];
    iVar3 = FUN_00a90eb0(local_2c,&pbStack_58,auStack_54,auStack_50,local_14);
    if ((char)iVar3 < '\0') {
      local_24 = 0x3b;
      local_4 = 0x201;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + (int)(local_14 + (-2 - (int)local_2c[0]));
    }
    iVar5 = FUN_00a81280(puVar2 + 0x27,local_2c,pbStack_58);
    if (iVar5 == 0) {
      local_4 = 0x201;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + ((int)local_14 - (int)local_2c[0]);
      iVar3 = FUN_00a90aa0(local_2c,pbStack_58);
      if (iVar3 == 0) {
        local_24 = 0x3f;
        local_4 = 0x201;
        goto LAB_00b16f67;
      }
    }
    local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
  }
  local_4c[0] = 0;
  local_44 = (byte *)0x0;
  if ((local_14 == (byte *)0x0) || (*local_2c[0] != 0xa4)) {
LAB_00b1666e:
    puVar2[0x1a] = 0;
  }
  else {
    local_c = local_2c[0];
    iVar3 = FUN_00a90eb0(local_2c,&pbStack_58,auStack_54,auStack_50,local_14);
    if ((char)iVar3 < '\0') {
      local_24 = 0x3b;
      local_4 = 0x205;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + (int)(local_14 + (-2 - (int)local_2c[0]));
    }
    iVar5 = FUN_00a88890(&local_5c,local_2c,pbStack_58);
    if (iVar5 == 0) {
      local_4 = 0x205;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + ((int)local_14 - (int)local_2c[0]);
      iVar3 = FUN_00a90aa0(local_2c,pbStack_58);
      if (iVar3 == 0) {
        local_24 = 0x3f;
        local_4 = 0x205;
        goto LAB_00b16f67;
      }
    }
    local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
    if (local_44 == (byte *)0x0) goto LAB_00b1666e;
    if (0x20 < (int)local_4c[0]) {
      local_24 = 0x10f;
      goto LAB_00b16f67;
    }
    puVar2[0x1a] = local_4c[0];
    _memcpy(puVar2 + 0x1b,local_44,local_4c[0]);
    FUN_00a85120(local_44);
    local_44 = (byte *)0x0;
    local_4c[0] = 0;
  }
  local_3c[0] = 0;
  if ((local_14 != (byte *)0x0) && (*local_2c[0] == 0xa5)) {
    local_c = local_2c[0];
    iVar3 = FUN_00a90eb0(local_2c,&pbStack_58,auStack_54,auStack_50,local_14);
    if ((char)iVar3 < '\0') {
      local_24 = 0x3b;
      local_4 = 0x219;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + (int)(local_14 + (-2 - (int)local_2c[0]));
    }
    iVar5 = FUN_00a88780(&local_60,local_2c,pbStack_58);
    if (iVar5 == 0) {
      local_4 = 0x219;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + ((int)local_14 - (int)local_2c[0]);
      iVar3 = FUN_00a90aa0(local_2c,pbStack_58);
      if (iVar3 == 0) {
        local_24 = 0x3f;
        local_4 = 0x219;
        goto LAB_00b16f67;
      }
    }
    local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
  }
  if (local_34 == 0) {
    puVar2[0x28] = 0;
  }
  else {
    uVar4 = FUN_00a9db70(local_60);
    puVar2[0x28] = uVar4;
    FUN_00a85120(local_34);
    local_34 = 0;
    local_3c[0] = 0;
  }
  local_4c[0] = 0;
  local_44 = (byte *)0x0;
  if ((local_14 == (byte *)0x0) || (*local_2c[0] != 0xa6)) {
LAB_00b16894:
    puVar2[0x34] = 0;
  }
  else {
    local_c = local_2c[0];
    iVar3 = FUN_00a90eb0(local_2c,&pbStack_58,auStack_54,auStack_50,local_14);
    if ((char)iVar3 < '\0') {
      local_24 = 0x3b;
      local_4 = 0x225;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + (int)(local_14 + (-2 - (int)local_2c[0]));
    }
    iVar5 = FUN_00a88890(&local_5c,local_2c,pbStack_58);
    if (iVar5 == 0) {
      local_4 = 0x225;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + ((int)local_14 - (int)local_2c[0]);
      iVar3 = FUN_00a90aa0(local_2c,pbStack_58);
      if (iVar3 == 0) {
        local_24 = 0x3f;
        local_4 = 0x225;
        goto LAB_00b16f67;
      }
    }
    local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
    if (local_44 == (byte *)0x0) goto LAB_00b16894;
    uVar4 = FUN_00a85250(local_44,local_4c[0]);
    puVar2[0x34] = uVar4;
    FUN_00a85120(local_44);
  }
  local_4c[0] = 0;
  local_44 = (byte *)0x0;
  if ((local_14 == (byte *)0x0) || (*local_2c[0] != 0xa7)) {
LAB_00b169a8:
    puVar2[0x23] = 0;
  }
  else {
    local_c = local_2c[0];
    iVar3 = FUN_00a90eb0(local_2c,&pbStack_58,auStack_54,auStack_50,local_14);
    if ((char)iVar3 < '\0') {
      local_24 = 0x3b;
      local_4 = 0x234;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + (int)(local_14 + (-2 - (int)local_2c[0]));
    }
    iVar5 = FUN_00a88890(&local_5c,local_2c,pbStack_58);
    if (iVar5 == 0) {
      local_4 = 0x234;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + ((int)local_14 - (int)local_2c[0]);
      iVar3 = FUN_00a90aa0(local_2c,pbStack_58);
      if (iVar3 == 0) {
        local_24 = 0x3f;
        local_4 = 0x234;
        goto LAB_00b16f67;
      }
    }
    local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
    if (local_44 == (byte *)0x0) goto LAB_00b169a8;
    uVar4 = FUN_00a85250(local_44,local_4c[0]);
    puVar2[0x23] = uVar4;
    FUN_00a85120(local_44);
  }
  local_4c[0] = 0;
  local_44 = (byte *)0x0;
  if ((local_14 == (byte *)0x0) || (*local_2c[0] != 0xa8)) {
LAB_00b16ac4:
    puVar2[0x24] = 0;
  }
  else {
    local_c = local_2c[0];
    iVar3 = FUN_00a90eb0(local_2c,&pbStack_58,auStack_54,auStack_50,local_14);
    if ((char)iVar3 < '\0') {
      local_24 = 0x3b;
      local_4 = 0x241;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + (int)(local_14 + (-2 - (int)local_2c[0]));
    }
    iVar5 = FUN_00a88890(&local_5c,local_2c,pbStack_58);
    if (iVar5 == 0) {
      local_4 = 0x241;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + ((int)local_14 - (int)local_2c[0]);
      iVar3 = FUN_00a90aa0(local_2c,pbStack_58);
      if (iVar3 == 0) {
        local_24 = 0x3f;
        local_4 = 0x241;
        goto LAB_00b16f67;
      }
    }
    local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
    if (local_44 == (byte *)0x0) goto LAB_00b16ac4;
    uVar4 = FUN_00a85250(local_44,local_4c[0]);
    puVar2[0x24] = uVar4;
    FUN_00a85120(local_44);
    local_44 = (byte *)0x0;
    local_4c[0] = 0;
  }
  local_3c[0] = 0;
  if ((local_14 != (byte *)0x0) && (*local_2c[0] == 0xa9)) {
    local_c = local_2c[0];
    iVar3 = FUN_00a90eb0(local_2c,&pbStack_58,auStack_54,auStack_50,local_14);
    if ((char)iVar3 < '\0') {
      local_24 = 0x3b;
      local_4 = 0x24f;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + (int)(local_14 + (-2 - (int)local_2c[0]));
    }
    iVar5 = FUN_00a88780(&local_60,local_2c,pbStack_58);
    if (iVar5 == 0) {
      local_4 = 0x24f;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + ((int)local_14 - (int)local_2c[0]);
      iVar3 = FUN_00a90aa0(local_2c,pbStack_58);
      if (iVar3 == 0) {
        local_24 = 0x3f;
        local_4 = 0x24f;
        goto LAB_00b16f67;
      }
    }
    local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
  }
  if (local_34 == 0) {
    if ((puVar2[0x3a] == 0) || (puVar2[0x11] == 0)) {
      puVar2[0x3b] = 0;
    }
    else {
      puVar2[0x3b] = 0xffffffff;
    }
  }
  else {
    uVar4 = FUN_00a9db70(local_60);
    puVar2[0x3b] = uVar4;
    FUN_00a85120(local_34);
    local_34 = 0;
    local_3c[0] = 0;
  }
  local_4c[0] = 0;
  local_44 = (byte *)0x0;
  if ((local_14 == (byte *)0x0) || (*local_2c[0] != 0xaa)) {
LAB_00b16cf8:
    puVar2[0x39] = 0;
  }
  else {
    local_c = local_2c[0];
    iVar3 = FUN_00a90eb0(local_2c,&pbStack_58,auStack_54,auStack_50,local_14);
    if ((char)iVar3 < '\0') {
      local_24 = 0x3b;
      local_4 = 0x25b;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + (int)(local_14 + (-2 - (int)local_2c[0]));
    }
    iVar5 = FUN_00a88890(&local_5c,local_2c,pbStack_58);
    if (iVar5 == 0) {
      local_4 = 0x25b;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + ((int)local_14 - (int)local_2c[0]);
      iVar3 = FUN_00a90aa0(local_2c,pbStack_58);
      if (iVar3 == 0) {
        local_24 = 0x3f;
        local_4 = 0x25b;
        goto LAB_00b16f67;
      }
    }
    local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
    if (local_44 == (byte *)0x0) goto LAB_00b16cf8;
    puVar2[0x39] = (uint)local_44;
    puVar2[0x3a] = local_4c[0];
  }
  local_4c[0] = 0;
  local_44 = (byte *)0x0;
  if ((local_14 != (byte *)0x0) && (*local_2c[0] == 0xab)) {
    local_c = local_2c[0];
    iVar3 = FUN_00a90eb0(local_2c,&pbStack_58,auStack_54,auStack_50,local_14);
    if ((char)iVar3 < '\0') {
      local_24 = 0x3b;
      local_4 = 0x269;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + (int)(local_14 + (-2 - (int)local_2c[0]));
    }
    iVar5 = FUN_00a88890(&local_5c,local_2c,pbStack_58);
    if (iVar5 == 0) {
      local_4 = 0x269;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + ((int)local_14 - (int)local_2c[0]);
      iVar3 = FUN_00a90aa0(local_2c,pbStack_58);
      if (iVar3 == 0) {
        local_24 = 0x3f;
        local_4 = 0x269;
        goto LAB_00b16f67;
      }
    }
    local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
    if (local_44 != (byte *)0x0) {
      puVar2[0x2c] = (uint)*local_44;
      FUN_00a85120(local_44);
    }
  }
  local_4c[0] = 0;
  local_44 = (byte *)0x0;
  if ((local_14 == (byte *)0x0) || (*local_2c[0] != 0xac)) {
LAB_00b16f20:
    puVar2[0x3c] = 0;
  }
  else {
    local_c = local_2c[0];
    iVar3 = FUN_00a90eb0(local_2c,&pbStack_58,auStack_54,auStack_50,local_14);
    if ((char)iVar3 < '\0') {
      local_24 = 0x3b;
      local_4 = 0x275;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + (int)(local_14 + (-2 - (int)local_2c[0]));
    }
    iVar5 = FUN_00a88890(&local_5c,local_2c,pbStack_58);
    if (iVar5 == 0) {
      local_4 = 0x275;
      goto LAB_00b16f67;
    }
    if (iVar3 == 0x21) {
      pbStack_58 = local_c + ((int)local_14 - (int)local_2c[0]);
      iVar3 = FUN_00a90aa0(local_2c,pbStack_58);
      if (iVar3 == 0) {
        local_24 = 0x3f;
        local_4 = 0x275;
        goto LAB_00b16f67;
      }
    }
    local_14 = local_c + ((int)local_14 - (int)local_2c[0]);
    if (local_44 == (byte *)0x0) goto LAB_00b16f20;
    uVar4 = FUN_00a85250(local_44,local_4c[0]);
    puVar2[0x3c] = uVar4;
    FUN_00a85120(local_44);
    local_44 = (byte *)0x0;
    local_4c[0] = 0;
  }
  iVar3 = thunk_FUN_00a90bc0(local_2c);
  if (iVar3 != 0) {
    *param_2 = local_2c[0];
    if (param_1 != (uint **)0x0) {
      *param_1 = puVar2;
    }
    return puVar2;
  }
  local_4 = 0x281;
LAB_00b16f67:
  FUN_00a7f3c0(0xd,0x67,local_24,".\\ssl\\ssl_asn1.c",local_4);
  FUN_00a90e40(*param_2,(int)local_c - (int)*param_2);
  if ((puVar2 != (uint *)0x0) && ((param_1 == (uint **)0x0 || (*param_1 != puVar2)))) {
    FUN_00affbb0(puVar2);
  }
  return (uint *)0x0;
}



uint FUN_00b16fc0(undefined4 param_1,uint *param_2,int param_3,int param_4)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  uVar1 = param_2[1];
  if (uVar1 < param_4 + 1U) {
    return 0;
  }
  uVar2 = (uint)*(byte *)((param_2[3] - 1) + uVar1);
  uVar3 = (int)(~((uVar1 - uVar2) - (param_4 + 1U)) & ~((param_3 - uVar2) - 1)) >> 0x1f;
  uVar2 = uVar2 + 1 & uVar3;
  *param_2 = *param_2 | uVar2 << 8;
  param_2[1] = uVar1 - uVar2;
  return uVar3 & 1 | ~uVar3;
}



uint FUN_00b17020(int *param_1,uint *param_2,int param_3,uint param_4)

{
  byte bVar1;
  int *piVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  byte *pbVar6;
  
  param_4 = param_4 + 1;
  if ((*param_1 < 0x302) && (*param_1 != 0xfeff)) {
    if (param_4 <= param_2[1]) {
LAB_00b17069:
      bVar1 = *(byte *)((param_2[3] - 1) + param_2[1]);
      uVar5 = (uint)bVar1;
      if (((param_1[0x40] & 0x200U) != 0) && (param_1[0x22] == 0)) {
        uVar4 = 8;
        piVar2 = &DAT_00dcd304;
        do {
          if (*(int *)(param_1[0x16] + -0xdcd2fc + (int)piVar2) != *piVar2) goto LAB_00b170bd;
          uVar4 = uVar4 - 4;
          piVar2 = piVar2 + 1;
        } while (3 < uVar4);
        if ((bVar1 & 1) == 0) {
          *(uint *)param_1[0x16] = *(uint *)param_1[0x16] | 8;
        }
LAB_00b170bd:
        if (((*(byte *)param_1[0x16] & 8) != 0) && (uVar5 != 0)) {
          uVar5 = uVar5 - 1;
        }
      }
      uVar4 = FUN_00aa5680(*(undefined4 *)param_1[0x20]);
      if ((uVar4 & 0x200000) != 0) {
        param_2[1] = param_2[1] + (-1 - uVar5);
        return 1;
      }
      uVar4 = param_2[1];
      uVar3 = (int)~((uVar4 - uVar5) - param_4) >> 0x1f;
      param_1 = (int *)0xff;
      if (uVar4 - 1 < 0xff) {
        param_1 = (int *)(uVar4 - 1);
      }
      if (param_1 != (int *)0x0) {
        pbVar6 = (byte *)((param_2[3] - 1) + uVar4);
        param_4 = uVar5;
        do {
          uVar3 = uVar3 & ~((int)~param_4 >> 0x1f & 0xffU & (*pbVar6 ^ uVar5));
          param_4 = param_4 - 1;
          pbVar6 = pbVar6 + -1;
          param_1 = (int *)((int)param_1 - 1);
        } while (param_1 != (int *)0x0);
      }
      uVar3 = uVar3 & uVar3 >> 4;
      uVar3 = uVar3 & uVar3 >> 2;
      uVar3 = (int)((uVar3 * 2 & uVar3) << 0x1e) >> 0x1f;
      uVar5 = uVar5 + 1 & uVar3;
      *param_2 = *param_2 | uVar5 << 8;
      param_2[1] = uVar4 - uVar5;
      return uVar3 & 1 | ~uVar3;
    }
  }
  else if (param_4 + param_3 <= param_2[1]) {
    param_2[3] = param_2[3] + param_3;
    param_2[4] = param_2[4] + param_3;
    param_2[1] = param_2[1] - param_3;
    goto LAB_00b17069;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b17190(int param_1,int param_2,uint param_3,uint param_4)

{
  byte *_Dst;
  uint uVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  int local_98;
  int local_94;
  byte *pbStack_90;
  uint uStack_8c;
  int local_88;
  byte abStack_84 [128];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_98;
  local_98 = *(int *)(param_2 + 4);
  iVar4 = local_98 - param_3;
  uVar3 = 0;
  local_88 = param_1;
  local_94 = iVar4;
  if (param_4 < param_3) {
    FUN_00a7fd60(".\\ssl\\s3_cbc.c",0x113,"orig_len >= md_size");
  }
  if (0x40 < param_3) {
    FUN_00a7fd60(".\\ssl\\s3_cbc.c",0x114,"md_size <= EVP_MAX_MD_SIZE");
  }
  _Dst = abStack_84 + (-(int)abStack_84 & 0x3f);
  if (param_3 + 0x100 < param_4) {
    uVar3 = (param_4 - param_3) - 0x100;
  }
  uVar2 = (((param_3 & 0xfffffffe) * 0x800000 - uVar3) + iVar4) % param_3;
  uStack_8c = uVar2;
  _memset(_Dst,0,param_3);
  uVar1 = 0;
  if (uVar3 < param_4) {
    pbStack_90 = (byte *)(*(int *)(param_2 + 0xc) + uVar3);
    iVar4 = uVar3 - local_98;
    local_94 = local_98 - local_94;
    local_98 = param_4 - uVar3;
    do {
      _Dst[uVar1] = _Dst[uVar1] |
                    ~((char)~(byte)((uint)iVar4 >> 0x18) >> 7) & *pbStack_90 &
                    (char)~(byte)((uint)(local_94 + iVar4) >> 0x18) >> 7;
      pbStack_90 = pbStack_90 + 1;
      uVar1 = uVar1 + 1 & (int)((uVar1 + 1) - param_3) >> 0x1f;
      iVar4 = iVar4 + 1;
      local_98 = local_98 + -1;
    } while (local_98 != 0);
    local_98 = 0;
    uVar2 = uStack_8c;
  }
  uVar3 = 0;
  if (param_3 != 0) {
    do {
      *(byte *)(local_88 + uVar3) = _Dst[uVar2];
      uVar3 = uVar3 + 1;
      uVar2 = uVar2 + 1 & (int)((uVar2 + 1) - param_3) >> 0x1f;
    } while (uVar3 < param_3);
  }
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00b175c0(undefined4 param_1)

{
  undefined4 uVar1;
  int iVar2;
  
  uVar1 = FUN_00a92630(param_1);
  iVar2 = FUN_00a814c0(uVar1);
  if (iVar2 < 0x41) {
    if ((iVar2 == 0x40) || (iVar2 == 4)) {
      return 1;
    }
  }
  else if (iVar2 - 0x2a0U < 4) {
    return 1;
  }
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b175f0(undefined4 *param_1,undefined4 param_2,undefined4 *param_3,undefined4 *param_4,
                 void *param_5,int param_6,uint param_7,void *param_8,uint param_9,char param_10)

{
  code *pcVar1;
  uint uVar2;
  void *pvVar3;
  byte bVar4;
  undefined4 uVar5;
  int iVar6;
  byte *pbVar7;
  byte bVar8;
  byte bVar9;
  uint uVar10;
  undefined4 *puVar11;
  byte bVar12;
  int iVar13;
  code *pcVar14;
  size_t sVar15;
  uint _Size;
  undefined auStack_320 [3];
  byte local_31d;
  code *pcStack_31c;
  size_t local_318;
  uint uStack_314;
  byte bStack_30e;
  byte bStack_30d;
  code *pcStack_30c;
  byte *pbStack_308;
  byte *pbStack_304;
  uint uStack_300;
  uint uStack_2fc;
  undefined4 *local_2f8;
  void *local_2f4;
  size_t local_2f0;
  void *local_2ec;
  uint uStack_2e8;
  undefined4 uStack_2e4;
  uint uStack_2e0;
  undefined4 local_2dc;
  undefined4 *local_2d8;
  byte *pbStack_2d4;
  uint uStack_2d0;
  undefined4 *local_2cc;
  uint uStack_2c8;
  undefined auStack_2c4 [24];
  undefined auStack_2ac [208];
  byte abStack_1dc [24];
  byte abStack_1c4 [64];
  byte abStack_184 [128];
  undefined4 uStack_104;
  undefined4 uStack_100;
  undefined4 uStack_fc;
  undefined uStack_f8;
  undefined auStack_f7 [115];
  byte abStack_84 [128];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)auStack_320;
  local_2dc = param_2;
  local_2cc = param_1;
  local_2d8 = param_3;
  local_2f8 = param_4;
  local_2f4 = param_5;
  local_2ec = param_8;
  _Size = 0x40;
  local_2f0 = 0x28;
  local_318 = 8;
  local_31d = 1;
  if (0xfffff < param_7) {
    FUN_00a7fd60(".\\ssl\\s3_cbc.c",0x1d7,"data_plus_mac_plus_padding_size < 1024*1024");
  }
  uVar5 = FUN_00a92630(param_1);
  iVar6 = FUN_00a814c0(uVar5);
  if (iVar6 < 0x2a1) {
    if (iVar6 == 0x2a0) {
      FUN_00a7e170(auStack_2ac);
      pcStack_30c = (code *)&LAB_00b17460;
      pcStack_31c = (code *)&LAB_00a7e2b0;
      uStack_314 = 0x20;
    }
    else if (iVar6 == 4) {
      FUN_00aaf190(auStack_2ac);
      pcStack_30c = (code *)&LAB_00b17320;
      pcStack_31c = (code *)&LAB_00aa9e90;
      uStack_314 = 0x10;
      local_2f0 = 0x30;
      local_31d = 0;
    }
    else {
      if (iVar6 != 0x40) {
LAB_00b17754:
        FUN_00a7fd60(".\\ssl\\s3_cbc.c",0x20d,&DAT_00fb763c);
        if (param_3 != (undefined4 *)0x0) {
          *param_3 = 0xffffffff;
        }
        goto LAB_00b17d4f;
      }
      FUN_00aaa530(auStack_2ac);
      pcStack_30c = (code *)&LAB_00b173b0;
      pcStack_31c = (code *)&LAB_00aaa3c0;
      uStack_314 = 0x14;
    }
  }
  else {
    if (iVar6 == 0x2a1) {
      FUN_00aaa570(auStack_2ac);
      uStack_314 = 0x30;
    }
    else {
      if (iVar6 != 0x2a2) {
        if (iVar6 != 0x2a3) goto LAB_00b17754;
        FUN_00a7e110(auStack_2ac);
        pcStack_30c = (code *)&LAB_00b17460;
        pcStack_31c = (code *)&LAB_00a7e2b0;
        uStack_314 = 0x1c;
        goto LAB_00b177ea;
      }
      FUN_00aaa610(auStack_2ac);
      uStack_314 = 0x40;
    }
    local_318 = 0x10;
    _Size = 0x80;
    pcStack_31c = (code *)&LAB_00aaac40;
    pcStack_30c = (code *)&LAB_00b17560;
  }
LAB_00b177ea:
  uStack_300 = 0xd;
  if (param_10 != '\0') {
    uStack_300 = local_2f0 + 0xb + param_9;
  }
  pbStack_308 = (byte *)0x0;
  uStack_2fc = 0;
  pbStack_304 = (byte *)((uint)(param_10 == '\0') * 4 + 2);
  pbVar7 = (byte *)(((uStack_300 - uStack_314) + local_318 + _Size + -1 + param_7) / _Size);
  uVar10 = (uStack_300 - uStack_314) + param_6;
  uStack_2e8 = uVar10 / _Size;
  uStack_2d0 = uVar10 % _Size;
  uStack_2e0 = (local_318 + uVar10) / _Size;
  if (pbStack_304 + (param_10 != '\0') < pbVar7) {
    pbStack_308 = pbVar7 + -(int)pbStack_304;
    uStack_2fc = (int)pbStack_308 * _Size;
  }
  uVar2 = uStack_2fc;
  iVar6 = uVar10 * 8;
  pcVar14 = pcStack_31c;
  if (param_10 == '\0') {
    iVar6 = iVar6 + _Size * 8;
    _memset(abStack_184,0,_Size);
    if (0x80 < param_9) {
      FUN_00a7fd60(".\\ssl\\s3_cbc.c",0x266,"mac_secret_length <= sizeof(hmac_pad)");
    }
    _memcpy(abStack_184,local_2ec,param_9);
    pcVar14 = pcStack_31c;
    uVar10 = 0;
    if (_Size != 0) {
      do {
        abStack_184[uVar10] = abStack_184[uVar10] ^ 0x36;
        uVar10 = uVar10 + 1;
      } while (uVar10 < _Size);
    }
    (*pcStack_31c)(auStack_2ac,abStack_184);
  }
  sVar15 = local_318;
  bVar12 = (byte)((uint)iVar6 >> 8);
  bVar9 = (byte)((uint)iVar6 >> 0x10);
  bVar8 = (byte)((uint)iVar6 >> 0x18);
  if (local_31d == 0) {
    _memset(abStack_1dc + 8,0,local_318);
    abStack_1dc[sVar15 + 3] = bVar8;
    abStack_1dc[sVar15 + 2] = bVar9;
    abStack_1dc[sVar15 + 1] = bVar12;
    abStack_1dc[sVar15] = (byte)iVar6;
    pcVar14 = pcStack_31c;
  }
  else {
    _memset(abStack_1dc + 8,0,local_318 - 4);
    abStack_1dc[local_318 + 4] = bVar8;
    abStack_1dc[local_318 + 5] = bVar9;
    abStack_1dc[local_318 + 6] = bVar12;
    abStack_1dc[local_318 + 7] = (byte)iVar6;
  }
  pvVar3 = local_2f4;
  pcVar1 = pcStack_31c;
  if (uVar2 != 0) {
    if (param_10 == '\0') {
      uStack_104 = *local_2f8;
      uStack_100 = local_2f8[1];
      uStack_fc = local_2f8[2];
      uStack_f8 = *(undefined *)(local_2f8 + 3);
      _memcpy(auStack_f7,local_2f4,_Size - 0xd);
      (*pcVar14)(auStack_2ac,&uStack_104);
      if (1 < uVar2 / _Size) {
        iVar13 = (int)pvVar3 + -0xd;
        iVar6 = uVar2 / _Size - 1;
        do {
          iVar13 = iVar13 + _Size;
          (*pcVar14)(auStack_2ac,iVar13);
          iVar6 = iVar6 + -1;
        } while (iVar6 != 0);
      }
    }
    else {
      sVar15 = uStack_300 - _Size;
      (*pcStack_31c)(auStack_2ac,local_2f8);
      _memcpy(&uStack_104,(void *)((int)local_2f8 + _Size),sVar15);
      _memcpy((void *)((int)&uStack_104 + sVar15),local_2f4,_Size - sVar15);
      (*pcVar1)(auStack_2ac,&uStack_104);
      if (1 < uVar2 / _Size - 1) {
        iVar13 = (int)local_2f4 - sVar15;
        iVar6 = uVar2 / _Size - 2;
        do {
          iVar13 = iVar13 + _Size;
          (*pcStack_31c)(auStack_2ac,iVar13);
          iVar6 = iVar6 + -1;
        } while (iVar6 != 0);
      }
    }
  }
  _memset(abStack_1c4,0,0x40);
  pbStack_2d4 = pbStack_304 + (int)pbStack_308;
  if (pbStack_308 <= pbStack_2d4) {
    do {
      bVar12 = (byte)((int)(((uint)pbStack_308 ^ uStack_2e0) - 1) >> 0x1f);
      uVar10 = 0;
      if (_Size != 0) {
        uStack_2c8 = _Size - local_318;
        bStack_30e = ~bVar12;
        bVar8 = (byte)(((uint)pbStack_308 ^ uStack_2e8) - 1 >> 0x18);
        bStack_30d = bStack_30e | (char)bVar8 >> 7;
        iVar6 = -uStack_2d0;
        pbStack_304 = abStack_1dc + (local_318 - _Size) + 8;
        do {
          bVar9 = 0;
          puVar11 = local_2f8;
          if (uStack_2fc < uStack_300) {
LAB_00b17b8d:
            bVar9 = *(byte *)((int)puVar11 + uStack_2fc);
          }
          else if (uStack_2fc < uStack_300 + param_7) {
            puVar11 = (undefined4 *)((int)local_2f4 - uStack_300);
            goto LAB_00b17b8d;
          }
          uStack_2fc = uStack_2fc + 1;
          bVar4 = (char)(~(byte)((uint)iVar6 >> 0x18) & bVar8) >> 7;
          bVar9 = (~bVar4 & bVar9 | bVar4 & 0x80) &
                  ~((char)(~(byte)((uint)(iVar6 + -1) >> 0x18) & bVar8) >> 7) & bStack_30d;
          if (uStack_2c8 <= uVar10) {
            bVar9 = *pbStack_304 & bVar12 | bStack_30e & bVar9;
          }
          pbStack_304 = pbStack_304 + 1;
          abStack_84[uVar10] = bVar9;
          uVar10 = uVar10 + 1;
          iVar6 = iVar6 + 1;
        } while (uVar10 < _Size);
      }
      local_31d = bVar12;
      (*pcStack_31c)(auStack_2ac,abStack_84);
      (*pcStack_30c)(auStack_2ac,abStack_84);
      uVar10 = 0;
      if (uStack_314 != 0) {
        do {
          abStack_1c4[uVar10] = abStack_1c4[uVar10] | abStack_84[uVar10] & bVar12;
          uVar10 = uVar10 + 1;
        } while (uVar10 < uStack_314);
      }
      pbStack_308 = pbStack_308 + 1;
    } while (pbStack_308 <= pbStack_2d4);
  }
  FUN_00a91330(auStack_2c4);
  FUN_00a91380(auStack_2c4,*local_2cc,0);
  sVar15 = local_2f0;
  if (param_10 == '\0') {
    uVar10 = 0;
    if (_Size != 0) {
      do {
        abStack_184[uVar10] = abStack_184[uVar10] ^ 0x6a;
        uVar10 = uVar10 + 1;
      } while (uVar10 < _Size);
    }
    FUN_00a91530(auStack_2c4,abStack_184,_Size);
    FUN_00a91530(auStack_2c4,abStack_1c4,uStack_314);
  }
  else {
    _memset(abStack_184,0x5c,local_2f0);
    FUN_00a91530(auStack_2c4,local_2ec,param_9);
    FUN_00a91530(auStack_2c4,abStack_184,sVar15);
    FUN_00a91530(auStack_2c4,abStack_1c4,uStack_314);
  }
  FUN_00a916a0(auStack_2c4,local_2dc,&uStack_2e4);
  if (local_2d8 != (undefined4 *)0x0) {
    *local_2d8 = uStack_2e4;
  }
  FUN_00a915c0(auStack_2c4);
LAB_00b17d4f:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b17d70(int param_1)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 local_10 [2];
  ushort local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xb17d7a;
  iVar2 = *(int *)(param_1 + 0x5c);
  if ((*(int *)(iVar2 + 0x2c0) == 0) && (*(int *)(iVar2 + 0x2c4) == 0)) {
    *(undefined2 *)(iVar2 + 0x2c8) = 1;
  }
  iVar2 = *(int *)(param_1 + 0x5c);
  FUN_00b5206b(local_10);
  *(undefined4 *)(iVar2 + 0x2c0) = local_10[0];
  *(uint *)(iVar2 + 0x2c4) = (uint)local_8 * 1000;
  piVar1 = (int *)(*(int *)(param_1 + 0x5c) + 0x2c0);
  *piVar1 = *piVar1 + (uint)*(ushort *)(*(int *)(param_1 + 0x5c) + 0x2c8);
  uVar3 = FUN_00aa3450(param_1,0x2d,0,*(int *)(param_1 + 0x5c) + 0x2c0);
  FUN_00a83650(uVar3);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00b17e00(undefined4 *param_1,undefined4 param_2,void *param_3,size_t param_4)

{
  undefined *puVar1;
  undefined4 *puVar2;
  int iVar3;
  int iVar4;
  undefined4 uVar5;
  uint uVar6;
  undefined *puVar7;
  int iStack_4;
  
  puVar2 = param_1;
  if (0x4000 < (int)param_4) {
    FUN_00a7fd60(".\\ssl\\d1_pkt.c",0x5b1,"len <= SSL3_RT_MAX_PLAIN_LENGTH");
  }
  param_1[6] = 1;
  if (*(int *)(param_1[0x16] + 0x108) == 0) {
    if ((*(int *)(param_1[0x16] + 0x18c) != 0) &&
       (iVar3 = (**(code **)(param_1[2] + 0x3c))(param_1), iVar3 < 1)) {
      return iVar3;
    }
    if (param_4 == 0) {
      return 0;
    }
    iVar3 = param_1[0x16];
    if (((param_1[0x30] == 0) || (param_1[0x23] == 0)) ||
       (iVar4 = FUN_00a92630(param_1[0x24]), iVar4 == 0)) {
      iStack_4 = 0;
    }
    else {
      uVar5 = FUN_00a92630(param_1[0x24]);
      iStack_4 = FUN_00a92600(uVar5);
      if (iStack_4 < 0) {
        return -1;
      }
    }
    puVar1 = *(undefined **)(iVar3 + 0xfc);
    *puVar1 = (char)param_2;
    *(undefined4 *)(iVar3 + 0x130) = param_2;
    puVar1[1] = (char)((uint)*param_1 >> 8);
    puVar1[2] = *(undefined *)param_1;
    puVar7 = puVar1 + 0xd;
    if (((undefined4 *)param_1[0x23] == (undefined4 *)0x0) ||
       (uVar6 = FUN_00aa5680(*(undefined4 *)param_1[0x23]), (uVar6 & 2) == 0)) {
      param_1 = (undefined4 *)0x0;
    }
    else {
      param_1 = (undefined4 *)FUN_00a7fa30(*(undefined4 *)param_1[0x23]);
    }
    *(undefined **)(iVar3 + 0x13c) = puVar7 + (int)param_1;
    *(size_t *)(iVar3 + 0x134) = param_4;
    *(void **)(iVar3 + 0x140) = param_3;
    if (puVar2[0x25] == 0) {
      _memcpy(puVar7 + (int)param_1,param_3,param_4);
      *(undefined4 *)(iVar3 + 0x140) = *(undefined4 *)(iVar3 + 0x13c);
    }
    else {
      iVar4 = FUN_00b00b60(puVar2);
      if (iVar4 == 0) {
        FUN_00a7f3c0(0x14,0xf5,0x8d,".\\ssl\\d1_pkt.c",0x62b);
        return -1;
      }
    }
    if (iStack_4 != 0) {
      iVar4 = (**(code **)(*(int *)(puVar2[2] + 100) + 4))
                        (puVar2,puVar7 + *(int *)(iVar3 + 0x134) + (int)param_1,1);
      if (iVar4 < 0) {
        return -1;
      }
      *(int *)(iVar3 + 0x134) = *(int *)(iVar3 + 0x134) + iStack_4;
    }
    *(undefined **)(iVar3 + 0x140) = puVar7;
    *(undefined **)(iVar3 + 0x13c) = puVar7;
    if (param_1 != (undefined4 *)0x0) {
      FUN_00a86ec0(puVar7,param_1);
      *(int *)(iVar3 + 0x134) = *(int *)(iVar3 + 0x134) + (int)param_1;
    }
    (***(code ***)(puVar2[2] + 100))(puVar2,1);
    puVar1[3] = *(undefined *)(puVar2[0x17] + 0x20b);
    puVar1[4] = *(undefined *)(puVar2[0x17] + 0x20a);
    iVar4 = puVar2[0x16];
    *(undefined4 *)(puVar1 + 5) = *(undefined4 *)(iVar4 + 0x56);
    *(undefined2 *)(puVar1 + 9) = *(undefined2 *)(iVar4 + 0x5a);
    puVar1[0xb] = *(undefined *)(iVar3 + 0x135);
    puVar1[0xc] = *(undefined *)(iVar3 + 0x134);
    *(int *)(iVar3 + 0x134) = *(int *)(iVar3 + 0x134) + 0xd;
    *(undefined4 *)(iVar3 + 0x130) = param_2;
    FUN_00b0f3c0(puVar2[0x16] + 0x54);
    *(undefined4 *)(iVar3 + 0x108) = *(undefined4 *)(iVar3 + 0x134);
    *(undefined4 *)(iVar3 + 0x104) = 0;
    *(size_t *)(puVar2[0x16] + 0x168) = param_4;
    *(void **)(puVar2[0x16] + 0x174) = param_3;
    *(undefined4 *)(puVar2[0x16] + 0x16c) = param_2;
    *(size_t *)(puVar2[0x16] + 0x170) = param_4;
    iVar3 = FUN_00b00bb0(puVar2,param_2,param_3,param_4);
    return iVar3;
  }
  FUN_00a7fd60(".\\ssl\\d1_pkt.c",0x5c5,&DAT_00fb763c);
  iVar3 = FUN_00b00bb0(param_1,param_2,param_3,param_4);
  return iVar3;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void __fastcall
FUN_00b180f0(undefined4 param_1_00,int param_2_00,undefined4 param_1,undefined4 param_2,int param_3,
            undefined4 param_4,int param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
            int param_9,undefined4 param_10,void *param_11,size_t param_14)

{
  int iVar1;
  int iVar2;
  int iVar3;
  void *local_94;
  undefined4 uStack_90;
  undefined local_8c [24];
  int local_74;
  int local_70;
  undefined4 local_6c;
  int local_68;
  int local_64;
  int iStack_60;
  undefined auStack_5c [24];
  undefined auStack_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_94;
  local_70 = param_5;
  local_74 = param_9;
  local_94 = param_11;
  local_6c = 0;
  local_64 = param_2_00;
  iVar1 = FUN_00a92600();
  if (iVar1 < 0) {
    FUN_00a7fd60(".\\ssl\\t1_enc.c",0xaa,"chunk >= 0");
  }
  FUN_00a91330(local_8c);
  FUN_00a91330(auStack_5c);
  FUN_00a92640(local_8c,8);
  FUN_00a92640(auStack_5c,8);
  iVar2 = FUN_00ae2c40(0x357,0,param_1,param_2);
  if ((((((iVar2 != 0) && (iVar3 = FUN_00ad8fc0(local_8c,0), iVar3 != 0)) &&
        (iVar3 = FUN_00ad8fc0(auStack_5c,0), iVar3 != 0)) &&
       ((param_3 == 0 || (iVar3 = FUN_00a91530(local_8c,param_3,param_4), iVar3 != 0)))) &&
      ((local_70 == 0 || (iVar3 = FUN_00a91530(local_8c,local_70,param_6), iVar3 != 0)))) &&
     ((((local_68 == 0 || (iVar3 = FUN_00a91530(local_8c,local_68,param_7), iVar3 != 0)) &&
       ((local_64 == 0 || (iVar3 = FUN_00a91530(local_8c,local_64,param_8), iVar3 != 0)))) &&
      ((((local_74 == 0 || (iVar3 = FUN_00a91530(local_8c,local_74,param_10), iVar3 != 0)) &&
        (iVar3 = FUN_00ad9020(local_8c,auStack_44,&uStack_90), iVar3 != 0)) &&
       (iVar3 = FUN_00ad8fc0(local_8c,0), iVar3 != 0)))))) {
    while( true ) {
      iVar3 = FUN_00ad8fc0(auStack_5c,0);
      if (((((iVar3 == 0) || (iVar3 = FUN_00a91530(local_8c,auStack_44,uStack_90), iVar3 == 0)) ||
           ((iVar3 = FUN_00a91530(auStack_5c,auStack_44,uStack_90), iVar3 == 0 ||
            ((param_3 != 0 && (iVar3 = FUN_00a91530(local_8c,param_3,param_4), iVar3 == 0)))))) ||
          ((local_70 != 0 && (iVar3 = FUN_00a91530(local_8c,local_70,param_6), iVar3 == 0)))) ||
         (((local_68 != 0 && (iVar3 = FUN_00a91530(local_8c,local_68,param_7), iVar3 == 0)) ||
          (((local_64 != 0 && (iVar3 = FUN_00a91530(local_8c,local_64,param_8), iVar3 == 0)) ||
           ((local_74 != 0 && (iVar3 = FUN_00a91530(local_8c,local_74,param_10), iVar3 == 0))))))))
      goto LAB_00b184a7;
      if ((int)param_14 <= iVar1) break;
      iVar3 = FUN_00ad9020(local_8c,local_94,&iStack_60);
      if (iVar3 == 0) goto LAB_00b184a7;
      local_94 = (void *)((int)local_94 + iStack_60);
      param_14 = param_14 - iStack_60;
      iVar3 = FUN_00ad9020(auStack_5c,auStack_44,&uStack_90);
      if ((iVar3 == 0) || (iVar3 = FUN_00ad8fc0(local_8c,0), iVar3 == 0)) goto LAB_00b184a7;
    }
    iVar1 = FUN_00ad9020(local_8c,auStack_44,&uStack_90);
    if (iVar1 != 0) {
      _memcpy(local_94,auStack_44,param_14);
      local_6c = 1;
    }
  }
LAB_00b184a7:
  FUN_00a816d0(iVar2);
  FUN_00a915c0(local_8c);
  FUN_00a915c0(auStack_5c);
  FUN_00a84330(auStack_44,0x40);
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4
FUN_00b184f0(uint param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8,
            undefined4 param_9,undefined4 param_10,undefined4 param_11,int param_12,uint param_13,
            byte *param_14,int param_15,size_t param_16)

{
  int iVar1;
  byte *pbVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  size_t sVar6;
  int local_8;
  int local_4;
  
  iVar4 = param_12;
  local_4 = 0xb184fa;
  iVar3 = 0;
  iVar5 = 0;
  iVar1 = FUN_00afc670(0,&local_8,&local_4);
  while (iVar1 != 0) {
    if ((param_1 & local_8 << 10) != 0) {
      iVar5 = iVar5 + 1;
    }
    iVar3 = iVar3 + 1;
    iVar1 = FUN_00afc670(iVar3,&local_8,&local_4);
  }
  iVar3 = (int)param_13 / iVar5;
  if (iVar5 == 1) {
    param_13 = 0;
  }
  _memset(param_14,0,param_16);
  param_12 = 0;
  iVar5 = FUN_00afc670(0,&local_8,&local_4);
  do {
    if (iVar5 == 0) {
      return 1;
    }
    if ((param_1 & local_8 << 10) != 0) {
      if (local_4 == 0) {
        FUN_00a7f3c0(0x14,0x11c,0x146,".\\ssl\\t1_enc.c",0x114);
        return 0;
      }
      iVar5 = FUN_00b180f0(iVar4,(param_13 & 1) + iVar3,param_2,param_3,param_4,param_5,param_7,
                           param_9,param_10,param_11,param_15,param_16);
      if (iVar5 == 0) {
        return 0;
      }
      iVar4 = iVar4 + iVar3;
      if (0 < (int)param_16) {
        pbVar2 = param_14;
        sVar6 = param_16;
        do {
          *pbVar2 = *pbVar2 ^ pbVar2[param_15 - (int)param_14];
          pbVar2 = pbVar2 + 1;
          sVar6 = sVar6 - 1;
        } while (sVar6 != 0);
      }
    }
    param_12 = param_12 + 1;
    iVar5 = FUN_00afc670(param_12,&local_8,&local_4);
  } while( true );
}



void FUN_00b18680(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00b04a10(param_1,"key expansion",0xd,*(int *)(param_1 + 0x58) + 0xa0,0x20,
                       *(int *)(param_1 + 0x58) + 0xc0,0x20,0,0,0,0,*(int *)(param_1 + 0xc0) + 0x14,
                       *(undefined4 *)(*(int *)(param_1 + 0xc0) + 0x10),param_2,param_3,param_4);
  FUN_00b184f0(uVar1);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b186e0(int *param_1,uint param_2)

{
  void *pvVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  void *_Src;
  uint uVar7;
  undefined *puVar8;
  undefined *puVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  size_t local_f4;
  int local_f0;
  undefined4 local_ec;
  void *local_e8;
  size_t *local_e4;
  undefined *local_e0;
  uint local_dc;
  undefined4 local_d8;
  char *local_d4;
  int local_d0;
  undefined4 local_cc;
  undefined4 local_c8;
  undefined local_c4 [32];
  undefined local_a4 [32];
  undefined local_84 [64];
  undefined local_44 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_f4;
  iVar2 = param_1[0x16];
  local_ec = *(undefined4 *)(iVar2 + 0x37c);
  iVar3 = *(int *)(iVar2 + 0x344);
  local_c8 = *(undefined4 *)(iVar2 + 0x380);
  uVar7 = *(uint *)(iVar3 + 0x20) & 2;
  local_d8 = *(undefined4 *)(iVar2 + 900);
  iVar2 = *(int *)(iVar2 + 0x38c);
  local_f4 = 0;
  local_dc = uVar7;
  if ((param_2 & 1) == 0) {
    if ((*(byte *)(iVar3 + 0x24) & 4) == 0) {
      param_1[0x1f] = param_1[0x1f] & 0xfffffffd;
    }
    else {
      param_1[0x1f] = param_1[0x1f] | 2;
    }
    if (param_1[0x23] == 0) {
      iVar3 = FUN_00a84f80(0x8c,".\\ssl\\t1_enc.c",0x1a3);
      param_1[0x23] = iVar3;
      if (iVar3 == 0) goto LAB_00b188b4;
      FUN_00aab350(iVar3);
    }
    else {
      local_f4 = 1;
    }
    local_f0 = param_1[0x23];
    local_cc = FUN_00afbc90(param_1 + 0x24,0);
    if (param_1[0x25] != 0) {
      FUN_00b545e0(param_1[0x25]);
      param_1[0x25] = 0;
    }
    if (iVar2 == 0) {
LAB_00b18929:
      if (*param_1 != 0xfeff) {
        iVar2 = param_1[0x16];
        *(undefined4 *)(iVar2 + 0x54) = 0;
        *(undefined4 *)(iVar2 + 0x58) = 0;
      }
      local_e8 = (void *)(param_1[0x16] + 0x60);
      local_e4 = (size_t *)(param_1[0x16] + 0x5c);
      goto LAB_00b1894b;
    }
    iVar2 = FUN_00b54580(*(undefined4 *)(iVar2 + 8));
    param_1[0x25] = iVar2;
    if (iVar2 != 0) goto LAB_00b18929;
    uVar11 = 0x1b5;
LAB_00b187f4:
    uVar10 = 0x8e;
  }
  else {
    if ((*(byte *)(iVar3 + 0x24) & 4) == 0) {
      param_1[0x1f] = param_1[0x1f] & 0xfffffffe;
    }
    else {
      param_1[0x1f] = param_1[0x1f] | 1;
    }
    if (param_1[0x20] == 0) {
      iVar3 = FUN_00a84f80(0x8c,".\\ssl\\t1_enc.c",0x179);
      param_1[0x20] = iVar3;
      if (iVar3 != 0) {
        FUN_00aab350(iVar3);
        goto LAB_00b1879e;
      }
LAB_00b188b4:
      uVar11 = 0x23d;
      uVar10 = 0x41;
    }
    else {
      local_f4 = 1;
LAB_00b1879e:
      local_f0 = param_1[0x20];
      local_cc = FUN_00afbc90(param_1 + 0x21,0);
      if (param_1[0x22] != 0) {
        FUN_00b545e0(param_1[0x22]);
        param_1[0x22] = 0;
      }
      if (iVar2 != 0) {
        iVar2 = FUN_00b54580(*(undefined4 *)(iVar2 + 8));
        param_1[0x22] = iVar2;
        if (iVar2 == 0) {
          uVar11 = 0x18b;
          goto LAB_00b187f4;
        }
        if (*(int *)(param_1[0x16] + 0x120) == 0) {
          uVar11 = FUN_00a84f80(0x4540,".\\ssl\\t1_enc.c",400);
          *(undefined4 *)(param_1[0x16] + 0x120) = uVar11;
        }
        if (*(int *)(param_1[0x16] + 0x120) == 0) goto LAB_00b188b4;
      }
      if (*param_1 != 0xfeff) {
        iVar2 = param_1[0x16];
        *(undefined4 *)(iVar2 + 8) = 0;
        *(undefined4 *)(iVar2 + 0xc) = 0;
      }
      local_e8 = (void *)(param_1[0x16] + 0x14);
      local_e4 = (size_t *)(param_1[0x16] + 0x10);
LAB_00b1894b:
      if (local_f4 != 0) {
        FUN_00aab890(local_f0);
      }
      pvVar1 = *(void **)(param_1[0x16] + 0x378);
      local_f4 = *(size_t *)(param_1[0x16] + 0x388);
      *local_e4 = local_f4;
      iVar2 = FUN_00a989a0(local_ec);
      uVar11 = local_ec;
      if (uVar7 != 0) {
        iVar3 = *(int *)(param_1[0x16] + 0x344);
        uVar7 = *(uint *)(iVar3 + 0x20) & 8;
        if (uVar7 == 0) {
          iVar6 = 8 - (uint)(*(int *)(iVar3 + 0x14) != 1);
        }
        else {
          iVar6 = 5;
        }
        if (iVar6 <= iVar2) {
          if (uVar7 == 0) {
            iVar2 = 8 - (uint)(*(int *)(iVar3 + 0x14) != 1);
          }
          else {
            iVar2 = 5;
          }
        }
      }
      uVar7 = FUN_00aa5680(local_ec);
      if ((uVar7 & 0xf0007) == 6) {
        iVar3 = 4;
      }
      else {
        iVar3 = FUN_00aa3450(uVar11);
      }
      if ((param_2 == 0x12) || (param_2 == 0x21)) {
        iVar6 = local_f4 * 2;
        iVar4 = iVar6 + iVar2 * 2;
        iVar5 = iVar4 + iVar3 * 2;
        local_d4 = "client write key";
        local_d0 = 1;
        _Src = pvVar1;
      }
      else {
        iVar6 = iVar2 + local_f4 * 2;
        iVar4 = iVar6 + iVar3 + iVar2;
        iVar5 = iVar4 + iVar3;
        local_d4 = "server write key";
        local_d0 = 0;
        _Src = (void *)(local_f4 + (int)pvVar1);
      }
      local_e0 = (undefined *)(iVar6 + (int)pvVar1);
      puVar8 = (undefined *)((int)pvVar1 + iVar4);
      if (iVar5 <= *(int *)(param_1[0x16] + 0x374)) {
        _memcpy(local_e8,_Src,local_f4);
        uVar7 = FUN_00aa5680(local_ec);
        if ((uVar7 & 0x200000) == 0) {
          local_d8 = FUN_00ae2c40(local_d8,0,local_e8,*local_e4);
          FUN_00ad8fc0(local_cc,0,local_c8,0,local_d8);
          FUN_00a816d0(local_d8);
        }
        puVar9 = local_e0;
        if (local_dc != 0) {
          local_dc = param_1[0x16];
          uVar11 = FUN_00a989a0(local_ec);
          uVar11 = FUN_00b04a10(param_1,local_d4,0x10,local_dc + 0xc0,0x20,local_dc + 0xa0,0x20,0,0,
                                0,0,local_e0,iVar2,local_84,local_44,uVar11);
          iVar2 = FUN_00b184f0(uVar11);
          if (iVar2 == 0) goto LAB_00b18c8d;
          puVar9 = local_84;
          if (0 < iVar3) {
            uVar11 = FUN_00b04a10(param_1,"IV block",8,param_1[0x16] + 0xc0,0x20,
                                  param_1[0x16] + 0xa0,0x20,0,0,0,0,&DAT_00dcd400,0,local_c4,
                                  local_a4,iVar3 * 2);
            iVar2 = FUN_00b184f0(uVar11);
            if (iVar2 == 0) goto LAB_00b18c8d;
            if (local_d0 == 0) {
              puVar8 = local_c4 + iVar3;
            }
            else {
              puVar8 = local_c4;
            }
          }
        }
        uVar11 = local_ec;
        *(undefined4 *)(param_1[0x30] + 4) = 0;
        uVar7 = FUN_00aa5680(local_ec);
        iVar2 = local_f0;
        if ((uVar7 & 0xf0007) == 6) {
          FUN_00aabb10(local_f0,uVar11,0,puVar9,0,param_2 & 2);
          FUN_00aab930(iVar2,0x12,iVar3,puVar8);
        }
        else {
          FUN_00aabb10(local_f0,uVar11,0,puVar9,puVar8,param_2 & 2);
          iVar2 = local_f0;
        }
        uVar7 = FUN_00aa5680(uVar11);
        if (((uVar7 & 0x200000) != 0) && (*local_e4 != 0)) {
          FUN_00aab930(iVar2,0x17,*local_e4,local_e8);
        }
        FUN_00a84330(local_84,0x40);
        FUN_00a84330(local_44,0x40);
        FUN_00a84330(local_c4,0x20);
        FUN_00a84330(local_a4,0x20);
        goto LAB_00b18c8d;
      }
      uVar11 = 0x1e7;
      uVar10 = 0x44;
    }
  }
  FUN_00a7f3c0(0x14,0xd1,uVar10,".\\ssl\\t1_enc.c",uVar11);
LAB_00b18c8d:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b18cb0(int param_1)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int local_14;
  undefined4 local_10;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  iVar1 = param_1;
  local_4 = 0xb18cba;
  local_10 = 0;
  local_14 = 0;
  local_c = 0;
  if (*(int *)(*(int *)(param_1 + 0x58) + 0x374) != 0) {
    return 1;
  }
  iVar2 = FUN_00afc270(*(undefined4 *)(param_1 + 0xc0),&param_1,&local_8,&local_10,&local_14,
                       &local_4);
  if (iVar2 == 0) {
    FUN_00a7f3c0(0x14,0xd3,0x8a,".\\ssl\\t1_enc.c",0x255);
    return 0;
  }
  *(int *)(*(int *)(iVar1 + 0x58) + 0x37c) = param_1;
  *(undefined4 *)(*(int *)(iVar1 + 0x58) + 0x380) = local_8;
  *(undefined4 *)(*(int *)(iVar1 + 0x58) + 900) = local_10;
  *(int *)(*(int *)(iVar1 + 0x58) + 0x388) = local_14;
  iVar2 = FUN_00a989a0(param_1);
  iVar3 = FUN_00aa3450(param_1);
  iVar2 = (iVar3 + iVar2 + local_14) * 2;
  FUN_00b0eda0(iVar1);
  iVar3 = FUN_00a84f80(iVar2,".\\ssl\\t1_enc.c",0x262);
  if (iVar3 == 0) {
    FUN_00a7f3c0(0x14,0xd3,0x41,".\\ssl\\t1_enc.c",0x264);
    return local_c;
  }
  *(int *)(*(int *)(iVar1 + 0x58) + 0x374) = iVar2;
  *(int *)(*(int *)(iVar1 + 0x58) + 0x378) = iVar3;
  iVar4 = FUN_00a84f80(iVar2,".\\ssl\\t1_enc.c",0x26b);
  if (iVar4 == 0) {
    FUN_00a7f3c0(0x14,0xd3,0x41,".\\ssl\\t1_enc.c",0x26d);
  }
  else {
    iVar3 = FUN_00b18680(iVar1,iVar3,iVar4,iVar2);
    if (iVar3 != 0) {
      if (((*(uint *)(iVar1 + 0x100) & 0x800) == 0) && (**(int **)(iVar1 + 8) < 0x302)) {
        *(undefined4 *)(*(int *)(iVar1 + 0x58) + 0xe0) = 1;
        iVar3 = *(int *)(*(int *)(iVar1 + 0xc0) + 0xb4);
        if (iVar3 != 0) {
          if (*(int *)(iVar3 + 0x14) == 0x20) {
            *(undefined4 *)(*(int *)(iVar1 + 0x58) + 0xe0) = 0;
          }
          if (*(int *)(*(int *)(*(int *)(iVar1 + 0xc0) + 0xb4) + 0x14) == 4) {
            *(undefined4 *)(*(int *)(iVar1 + 0x58) + 0xe0) = 0;
          }
        }
      }
      local_c = 1;
    }
  }
  if (iVar4 != 0) {
    FUN_00a84330(iVar4,iVar2);
    FUN_00a85120(iVar4);
  }
  return local_c;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b18eb0(int *param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  undefined4 *puVar5;
  uint uVar6;
  int iVar7;
  undefined4 *puVar8;
  undefined *puVar9;
  bool bVar10;
  char *pcVar11;
  int iStack_38;
  undefined4 *local_34;
  int local_30;
  uint uStack_2c;
  undefined4 local_28;
  uint uStack_24;
  undefined4 uStack_20;
  undefined4 uStack_1c;
  undefined uStack_18;
  undefined uStack_17;
  undefined uStack_16;
  undefined uStack_15;
  undefined uStack_14;
  undefined uStack_10;
  undefined uStack_f;
  undefined2 uStack_e;
  undefined2 uStack_c;
  undefined2 uStack_a;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&iStack_38;
  local_30 = 0;
  local_28 = 0;
  if (param_2 == 0) {
    iVar2 = FUN_00a92630(param_1[0x21]);
    if (iVar2 != 0) {
      uVar3 = FUN_00a92630(param_1[0x21]);
      iVar2 = FUN_00a92600(uVar3);
      if (iVar2 < 0) {
        FUN_00a7fd60(".\\ssl\\t1_enc.c",0x2d7,"n >= 0");
      }
    }
    local_34 = (undefined4 *)param_1[0x20];
    puVar9 = (undefined *)(param_1[0x16] + 0x10c);
    if (local_34 == (undefined4 *)0x0) {
      iStack_38 = 0;
      puVar8 = local_34;
    }
    else {
      iStack_38 = FUN_00a814c0(local_34);
      puVar8 = local_34;
    }
  }
  else {
    iVar2 = FUN_00a92630(param_1[0x24]);
    if (iVar2 != 0) {
      uVar3 = FUN_00a92630(param_1[0x24]);
      iVar2 = FUN_00a92600(uVar3);
      if (iVar2 < 0) {
        FUN_00a7fd60(".\\ssl\\t1_enc.c",0x2b4,"n >= 0");
      }
    }
    puVar8 = (undefined4 *)param_1[0x23];
    iVar2 = param_1[0x16];
    puVar9 = (undefined *)(iVar2 + 0x130);
    local_34 = puVar8;
    if (puVar8 == (undefined4 *)0x0) {
      iStack_38 = 0;
    }
    else {
      iStack_38 = FUN_00a814c0(puVar8);
      if (((0x301 < *param_1) && (uVar6 = FUN_00aa5680(iStack_38), (uVar6 & 0xf0007) == 2)) &&
         (iVar7 = FUN_00aa3450(iStack_38), 1 < iVar7)) {
        if (*(int *)(iVar2 + 0x13c) == *(int *)(iVar2 + 0x140)) {
          iVar2 = FUN_00a86e60(*(int *)(iVar2 + 0x140),iVar7);
          if (iVar2 < 1) {
            ___security_check_cookie_4();
            return;
          }
        }
        else {
          pcVar11 = "%s:%d: rec->data != rec->input\n";
          iVar2 = FUN_00a475e9("%s:%d: rec->data != rec->input\n",".\\ssl\\t1_enc.c",0x2cc);
          _fprintf((FILE *)(iVar2 + 0x40),pcVar11);
        }
      }
    }
  }
  if (((param_1[0x30] == 0) || (puVar8 == (undefined4 *)0x0)) || (iStack_38 == 0)) {
    _memmove(*(void **)(puVar9 + 0xc),*(void **)(puVar9 + 0x10),*(size_t *)(puVar9 + 4));
    *(undefined4 *)(puVar9 + 0x10) = *(undefined4 *)(puVar9 + 0xc);
    goto LAB_00b19318;
  }
  uVar6 = *(uint *)(puVar9 + 4);
  uStack_24 = uVar6;
  uStack_2c = FUN_00a7fa30(*puVar8);
  uVar4 = FUN_00aa5680(*puVar8);
  if ((uVar4 & 0x200000) == 0) {
    uVar4 = uVar6;
    if (uStack_2c != 1) {
      if (param_2 == 0) goto LAB_00b191e1;
      iVar7 = uStack_2c - (int)uVar6 % (int)uStack_2c;
      iVar2 = iVar7 + -1;
      if (((param_1[0x40] & 0x200U) != 0) && ((*(byte *)param_1[0x16] & 8) != 0)) {
        iVar2 = iVar7;
      }
      uVar4 = uVar6 + iVar7;
      uVar1 = uStack_24;
      while ((int)uVar1 < (int)uVar4) {
        *(char *)(uVar6 + *(int *)(puVar9 + 0x10)) = (char)iVar2;
        uVar6 = uVar6 + 1;
        uVar1 = uVar6;
      }
      *(int *)(puVar9 + 4) = *(int *)(puVar9 + 4) + iVar7;
      puVar8 = local_34;
    }
LAB_00b191da:
    uVar6 = uVar4;
    if (param_2 == 0) goto LAB_00b191e1;
  }
  else {
    if (param_2 == 0) {
      puVar5 = (undefined4 *)(param_1[0x16] + 8);
    }
    else {
      puVar5 = (undefined4 *)(param_1[0x16] + 0x54);
    }
    if ((*param_1 == 0xfeff) || (*param_1 == 0x100)) {
      iVar2 = param_1[0x17];
      if (param_2 == 0) {
        uStack_10 = (undefined)((ushort)*(undefined2 *)(iVar2 + 0x208) >> 8);
        uStack_f = (undefined)*(undefined2 *)(iVar2 + 0x208);
      }
      else {
        uStack_10 = (undefined)((ushort)*(undefined2 *)(iVar2 + 0x20a) >> 8);
        uStack_f = (undefined)*(undefined2 *)(iVar2 + 0x20a);
      }
      uStack_a = *(undefined2 *)((int)puVar5 + 6);
      uStack_e = (undefined2)*(undefined4 *)((int)puVar5 + 2);
      uStack_c = (undefined2)((uint)*(undefined4 *)((int)puVar5 + 2) >> 0x10);
      uStack_20 = CONCAT22(uStack_e,CONCAT11(uStack_f,uStack_10));
      uStack_1c = CONCAT22(uStack_a,uStack_c);
      puVar8 = local_34;
    }
    else {
      uStack_20 = *puVar5;
      uStack_1c = puVar5[1];
      iVar2 = 7;
      do {
        pcVar11 = (char *)(iVar2 + (int)puVar5);
        *pcVar11 = *pcVar11 + '\x01';
        if (*pcVar11 != '\0') break;
        iVar2 = iVar2 + -1;
      } while (-1 < iVar2);
    }
    uStack_16 = *(undefined *)param_1;
    uStack_18 = *puVar9;
    uStack_17 = (undefined)((uint)*param_1 >> 8);
    uStack_14 = puVar9[4];
    uStack_15 = (undefined)((uint)*(undefined4 *)(puVar9 + 4) >> 8);
    local_30 = FUN_00aab930(puVar8,0x16,0xd,&uStack_20);
    if (param_2 != 0) {
      *(int *)(puVar9 + 4) = *(int *)(puVar9 + 4) + local_30;
      uVar4 = uVar6 + local_30;
      goto LAB_00b191da;
    }
LAB_00b191e1:
    if ((uVar6 == 0) || (uVar6 % uStack_2c != 0)) {
      ___security_check_cookie_4();
      return;
    }
  }
  iVar2 = FUN_00a925c0(puVar8,*(undefined4 *)(puVar9 + 0xc),*(undefined4 *)(puVar9 + 0x10),uVar6);
  uVar6 = FUN_00aa5680(*local_34);
  if ((uVar6 & 0x100000) == 0) {
    bVar10 = iVar2 == 0;
  }
  else {
    bVar10 = iVar2 < 0;
  }
  if (bVar10) {
    ___security_check_cookie_4();
    return;
  }
  uVar6 = FUN_00aa5680(iStack_38);
  if (((uVar6 & 0xf0007) == 6) && (param_2 == 0)) {
    *(int *)(puVar9 + 0xc) = *(int *)(puVar9 + 0xc) + 8;
    *(int *)(puVar9 + 0x10) = *(int *)(puVar9 + 0x10) + 8;
    *(int *)(puVar9 + 4) = *(int *)(puVar9 + 4) + -8;
  }
  iVar2 = FUN_00a92630(param_1[0x21]);
  uVar3 = local_28;
  if (iVar2 != 0) {
    uVar3 = FUN_00a92630(param_1[0x21]);
    uVar3 = FUN_00a92600(uVar3);
  }
  if ((uStack_2c != 1) && (param_2 == 0)) {
    FUN_00b17020(param_1,puVar9,uStack_2c,uVar3);
  }
  if ((local_30 != 0) && (param_2 == 0)) {
    *(int *)(puVar9 + 4) = *(int *)(puVar9 + 4) - local_30;
    ___security_check_cookie_4();
    return;
  }
LAB_00b19318:
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

int FUN_00b19330(int param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  undefined local_18 [20];
  undefined4 uStack_4;
  
  iVar1 = param_1;
  uStack_4 = 0xb1933a;
  if ((*(int *)(*(int *)(param_1 + 0x58) + 0x178) != 0) &&
     (iVar2 = FUN_00b0f060(param_1), iVar2 == 0)) {
    return 0;
  }
  iVar2 = param_2;
  iVar5 = 0;
  do {
    iVar4 = *(int *)(*(int *)(iVar1 + 0x58) + 0x17c);
    if (*(int *)(iVar4 + iVar5 * 4) != 0) {
      uVar3 = FUN_00a92630(*(undefined4 *)(iVar4 + iVar5 * 4));
      iVar4 = FUN_00a814c0(uVar3);
      if (iVar4 == iVar2) {
        iVar1 = *(int *)(*(int *)(*(int *)(iVar1 + 0x58) + 0x17c) + iVar5 * 4);
        if (iVar1 != 0) {
          FUN_00a91330(local_18);
          FUN_00a916d0(local_18,iVar1);
          FUN_00a91540(local_18,param_3,&param_1);
          FUN_00a915c0(local_18);
          return param_1;
        }
        break;
      }
    }
    iVar5 = iVar5 + 1;
  } while (iVar5 < 6);
  FUN_00a7f3c0(0x14,0x11e,0x144,".\\ssl\\t1_enc.c",0x372);
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b19420(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined *puVar5;
  undefined4 local_c0;
  undefined4 local_bc;
  uint local_b8;
  undefined4 local_b4;
  undefined4 local_b0;
  int local_ac;
  undefined local_a8 [24];
  undefined local_90 [12];
  undefined local_84 [128];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_c0;
  iVar4 = 0;
  local_b0 = param_2;
  local_b4 = param_4;
  local_c0 = 0;
  puVar5 = local_84;
  if ((*(int *)(*(int *)(param_1 + 0x58) + 0x178) != 0) &&
     (iVar1 = FUN_00b0f060(param_1), iVar1 == 0)) {
    ___security_check_cookie_4();
    return;
  }
  FUN_00a91330(local_a8);
  iVar1 = FUN_00afc670(0,&local_b8,&local_bc);
  while (iVar1 != 0) {
    uVar2 = FUN_00b04a10(param_1);
    if ((local_b8 & uVar2) != 0) {
      iVar1 = FUN_00a92600(local_bc);
      if ((iVar1 < 0) || ((int)&local_4 - (int)puVar5 < iVar1)) {
        local_c0 = 1;
      }
      else {
        FUN_00a916d0(local_a8,*(undefined4 *)
                               (*(int *)(*(int *)(param_1 + 0x58) + 0x17c) + iVar4 * 4));
        FUN_00a91540(local_a8,puVar5,&local_ac);
        if (local_ac != iVar1) {
          local_c0 = 1;
        }
        puVar5 = puVar5 + local_ac;
      }
    }
    iVar4 = iVar4 + 1;
    iVar1 = FUN_00afc670(iVar4,&local_b8,&local_bc);
  }
  uVar3 = FUN_00b04a10(param_1,local_b0,param_3,local_84,(int)puVar5 - (int)local_84,0,0,0,0,0,0,
                       *(int *)(param_1 + 0xc0) + 0x14,
                       *(undefined4 *)(*(int *)(param_1 + 0xc0) + 0x10),local_b4,local_90,0xc);
  iVar4 = FUN_00b184f0(uVar3);
  if (iVar4 == 0) {
    local_c0 = 1;
  }
  FUN_00a915c0(local_a8);
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b195e0(int *param_1,undefined4 param_2,int param_3)

{
  char *pcVar1;
  char cVar2;
  undefined4 uVar3;
  uint uVar4;
  undefined *puVar5;
  int iVar6;
  uint *puVar7;
  int local_44;
  undefined4 *local_40;
  uint local_3c;
  undefined4 local_38;
  undefined auStack_34 [24];
  undefined4 uStack_1c;
  undefined4 uStack_18;
  undefined uStack_14;
  undefined uStack_13;
  undefined uStack_12;
  undefined uStack_11;
  undefined uStack_10;
  undefined uStack_c;
  undefined uStack_b;
  undefined2 uStack_a;
  undefined2 uStack_8;
  undefined2 uStack_6;
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_44;
  local_38 = param_2;
  if (param_3 == 0) {
    puVar5 = (undefined *)param_1[0x21];
    local_3c = param_1[0x1f] & 1;
    puVar7 = (uint *)(param_1[0x16] + 0x10c);
    local_40 = (undefined4 *)(param_1[0x16] + 8);
  }
  else {
    puVar5 = (undefined *)param_1[0x24];
    local_3c = param_1[0x1f] & 2;
    puVar7 = (uint *)(param_1[0x16] + 0x130);
    local_40 = (undefined4 *)(param_1[0x16] + 0x54);
  }
  uVar3 = FUN_00a92630(puVar5);
  local_44 = FUN_00a92600(uVar3);
  if (local_44 < 0) {
    FUN_00a7fd60(".\\ssl\\t1_enc.c",0x3cd,"t >= 0");
  }
  if (local_3c == 0) {
    FUN_00a91900(auStack_34,puVar5);
    puVar5 = auStack_34;
  }
  if ((*param_1 == 0xfeff) || (*param_1 == 0x100)) {
    iVar6 = param_1[0x17];
    if (param_3 == 0) {
      uStack_c = (undefined)((ushort)*(undefined2 *)(iVar6 + 0x208) >> 8);
      uStack_b = (undefined)*(undefined2 *)(iVar6 + 0x208);
    }
    else {
      uStack_c = (undefined)((ushort)*(undefined2 *)(iVar6 + 0x20a) >> 8);
      uStack_b = (undefined)*(undefined2 *)(iVar6 + 0x20a);
    }
    uStack_6 = *(undefined2 *)((int)local_40 + 6);
    uStack_a = (undefined2)*(undefined4 *)((int)local_40 + 2);
    uStack_8 = (undefined2)((uint)*(undefined4 *)((int)local_40 + 2) >> 0x10);
    uStack_1c = CONCAT22(uStack_a,CONCAT11(uStack_b,uStack_c));
    uStack_18 = CONCAT22(uStack_6,uStack_8);
  }
  else {
    uStack_1c = *local_40;
    uStack_18 = local_40[1];
  }
  uVar4 = *puVar7;
  iVar6 = (uVar4 >> 8) + puVar7[1] + local_44;
  *puVar7 = uVar4 & 0xff;
  uStack_14 = (undefined)uVar4;
  uStack_12 = *(undefined *)param_1;
  uStack_13 = (undefined)((uint)*param_1 >> 8);
  uStack_11 = (undefined)(puVar7[1] >> 8);
  uStack_10 = *(undefined *)(puVar7 + 1);
  if (((param_3 == 0) && (uVar4 = FUN_00a925d0(param_1[0x20]), (uVar4 & 0xf0007) == 2)) &&
     (cVar2 = FUN_00b175c0(puVar5), cVar2 != '\0')) {
    FUN_00b175f0(puVar5,local_38,&local_44,&uStack_1c,puVar7[4],puVar7[1] + local_44,iVar6,
                 param_1[0x16] + 0x14,*(undefined4 *)(param_1[0x16] + 0x10),0);
  }
  else {
    FUN_00a91530(puVar5,&uStack_1c,0xd);
    FUN_00a91530(puVar5,puVar7[4],puVar7[1]);
    iVar6 = FUN_00ad9020(puVar5,local_38,&local_44);
    if (iVar6 < 1) {
      FUN_00a7fd60(".\\ssl\\t1_enc.c",0x407,"t > 0");
    }
  }
  if (local_3c == 0) {
    FUN_00a915c0(auStack_34);
  }
  if ((*param_1 != 0xfeff) && (*param_1 != 0x100)) {
    iVar6 = 7;
    do {
      pcVar1 = (char *)(iVar6 + (int)local_40);
      *pcVar1 = *pcVar1 + '\x01';
      if (*pcVar1 != '\0') break;
      iVar6 = iVar6 + -1;
    } while (-1 < iVar6);
  }
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b19850(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 uVar1;
  undefined local_34 [48];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)local_34;
  uVar1 = FUN_00b04a10(param_1,"master secret",0xd,*(int *)(param_1 + 0x58) + 0xc0,0x20,0,0,
                       *(int *)(param_1 + 0x58) + 0xa0,0x20,0,0,param_3,param_4,
                       *(int *)(param_1 + 0xc0) + 0x14,local_34,0x30);
  FUN_00b184f0(uVar1);
  ___security_check_cookie_4();
  return;
}



int FUN_00b19cf0(int param_1)

{
  int iVar1;
  
  if ((param_1 == 0) ||
     ((iVar1 = *(int *)(param_1 + 0x17c), iVar1 == 0 &&
      ((*(int *)(param_1 + 0xe4) == 0 ||
       (iVar1 = *(int *)(*(int *)(param_1 + 0xe4) + 0x1b4), iVar1 == 0)))))) {
    iVar1 = 0;
  }
  return iVar1;
}



undefined4 FUN_00b19d20(int param_1,undefined *param_2,int *param_3,int param_4)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  
  if ((param_1 == 0) ||
     ((iVar3 = *(int *)(param_1 + 0x17c), iVar3 == 0 &&
      ((*(int *)(param_1 + 0xe4) == 0 ||
       (iVar3 = *(int *)(*(int *)(param_1 + 0xe4) + 0x1b4), iVar3 == 0)))))) {
    iVar3 = 0;
  }
  iVar1 = FUN_00a80ed0(iVar3);
  if (param_2 != (undefined *)0x0) {
    if (iVar1 == 0) {
      FUN_00a7f3c0(0x14,0x133,0x162,".\\ssl\\d1_srtp.c",0x116);
      return 1;
    }
    if (param_4 < iVar1 * 2 + 3) {
      FUN_00a7f3c0(0x14,0x133,0x16b,".\\ssl\\d1_srtp.c",0x11c);
      return 1;
    }
    *param_2 = (char)((uint)(iVar1 * 2) >> 8);
    param_2[1] = (char)iVar1 * '\x02';
    param_2 = param_2 + 2;
    iVar4 = 0;
    if (0 < iVar1) {
      do {
        iVar2 = FUN_00a80ee0(iVar3,iVar4);
        *param_2 = *(undefined *)(iVar2 + 5);
        param_2[1] = *(undefined *)(iVar2 + 4);
        iVar4 = iVar4 + 1;
        param_2 = param_2 + 2;
      } while (iVar4 < iVar1);
    }
    *param_2 = 0;
  }
  *param_3 = iVar1 * 2 + 3;
  return 0;
}



// WARNING: Removing unreachable block (ram,0x00b19e6b)

undefined4 FUN_00b19e10(int param_1,undefined *param_2,int param_3,undefined4 *param_4)

{
  byte *pbVar1;
  byte bVar2;
  undefined *puVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  undefined **ppuVar8;
  int iVar9;
  byte *pbVar10;
  int iVar11;
  uint uVar12;
  
  if (param_3 < 3) {
    FUN_00a7f3c0(0x14,0x136,0x161,".\\ssl\\d1_srtp.c",0x13f);
    *param_4 = 0x32;
    return 1;
  }
  uVar12 = (uint)CONCAT11(*param_2,param_2[1]);
  pbVar10 = param_2 + 2;
  param_3 = param_3 + -2;
  if ((param_2[1] & 1) != 0) {
    FUN_00a7f3c0(0x14,0x136,0x161,".\\ssl\\d1_srtp.c",0x14b);
    *param_4 = 0x32;
    return 1;
  }
  if (param_3 < (int)(uVar12 + 1)) {
    FUN_00a7f3c0(0x14,0x136,0x161,".\\ssl\\d1_srtp.c",0x153);
    *param_4 = 0x32;
    return 1;
  }
  iVar4 = FUN_00a81010();
  do {
    if (uVar12 == 0) {
      if ((uint)*pbVar10 != param_3 - 1U) {
        FUN_00a7f3c0(0x14,0x136,0x160,".\\ssl\\d1_srtp.c",0x171);
        *param_4 = 0x32;
        return 1;
      }
      uVar5 = FUN_00b19cf0(param_1);
      iVar9 = 0;
      iVar6 = FUN_00a80ed0(uVar5);
      if (0 < iVar6) {
        do {
          iVar6 = FUN_00a80ee0(uVar5,iVar9);
          iVar11 = 0;
          iVar7 = FUN_00a80ed0(iVar4);
          if (0 < iVar7) {
            do {
              iVar7 = FUN_00a80ee0(iVar4,iVar11);
              if (*(int *)(iVar7 + 4) == *(int *)(iVar6 + 4)) {
                *(int *)(param_1 + 0x180) = iVar6;
                *param_4 = 0;
                goto LAB_00b19ff8;
              }
              iVar11 = iVar11 + 1;
              iVar7 = FUN_00a80ed0(iVar4);
            } while (iVar11 < iVar7);
          }
          iVar9 = iVar9 + 1;
          iVar6 = FUN_00a80ed0(uVar5);
        } while (iVar9 < iVar6);
      }
LAB_00b19ff8:
      if (iVar4 != 0) {
        FUN_00a80ea0(iVar4);
      }
      return 0;
    }
    bVar2 = *pbVar10;
    pbVar1 = pbVar10 + 1;
    pbVar10 = pbVar10 + 2;
    uVar12 = uVar12 - 2;
    param_3 = param_3 + -2;
    ppuVar8 = &PTR_s_SRTP_AES128_CM_SHA1_80_032453b0;
    puVar3 = PTR_s_SRTP_AES128_CM_SHA1_80_032453b0;
    while (puVar3 != (undefined *)0x0) {
      if (ppuVar8[1] == (undefined *)(uint)CONCAT11(bVar2,*pbVar1)) {
        FUN_00a80df0(iVar4,ppuVar8);
        break;
      }
      ppuVar8 = ppuVar8 + 2;
      puVar3 = *ppuVar8;
    }
  } while( true );
}



undefined4 FUN_00b1a010(int param_1,undefined *param_2,undefined4 *param_3,int param_4)

{
  if (param_2 != (undefined *)0x0) {
    if (param_4 < 5) {
      FUN_00a7f3c0(0x14,0x134,0x16b,".\\ssl\\d1_srtp.c",0x19c);
      return 1;
    }
    if (*(int *)(param_1 + 0x180) == 0) {
      FUN_00a7f3c0(0x14,0x134,0x171,".\\ssl\\d1_srtp.c",0x1a2);
      return 1;
    }
    *param_2 = 0;
    param_2[1] = 2;
    param_2[2] = *(undefined *)(*(int *)(param_1 + 0x180) + 5);
    param_2[3] = *(undefined *)(*(int *)(param_1 + 0x180) + 4);
    param_2[4] = 0;
  }
  *param_3 = 5;
  return 0;
}



undefined4 FUN_00b1a0b0(int param_1,undefined *param_2,int param_3,undefined4 *param_4)

{
  undefined uVar1;
  undefined uVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  undefined4 uVar6;
  
  if (param_3 == 5) {
    if (CONCAT11(*param_2,param_2[1]) == 2) {
      uVar1 = param_2[3];
      uVar2 = param_2[2];
      if (param_2[4] != '\0') {
        FUN_00a7f3c0(0x14,0x137,0x160,".\\ssl\\d1_srtp.c",0x1ca);
        *param_4 = 0x2f;
        return 1;
      }
      iVar3 = FUN_00b19cf0(param_1);
      if (iVar3 != 0) {
        iVar5 = 0;
        iVar4 = FUN_00a80ed0(iVar3);
        if (0 < iVar4) {
          do {
            iVar4 = FUN_00a80ee0(iVar3,iVar5);
            if (*(uint *)(iVar4 + 4) == (uint)CONCAT11(uVar2,uVar1)) {
              *(int *)(param_1 + 0x180) = iVar4;
              *param_4 = 0;
              return 0;
            }
            iVar5 = iVar5 + 1;
            iVar4 = FUN_00a80ed0(iVar3);
          } while (iVar5 < iVar4);
        }
        FUN_00a7f3c0(0x14,0x137,0x161,".\\ssl\\d1_srtp.c",0x1e8);
        *param_4 = 0x32;
        return 1;
      }
      FUN_00a7f3c0(0x14,0x137,0x167,".\\ssl\\d1_srtp.c",0x1d4);
      *param_4 = 0x32;
      return 1;
    }
    uVar6 = 0x1c2;
  }
  else {
    uVar6 = 0x1ba;
  }
  FUN_00a7f3c0(0x14,0x137,0x161,".\\ssl\\d1_srtp.c",uVar6);
  *param_4 = 0x32;
  return 1;
}



undefined4 FUN_00b1a210(int param_1,undefined *param_2,int *param_3,int param_4)

{
  if (param_2 != (undefined *)0x0) {
    if (param_4 < (int)(*(byte *)(*(int *)(param_1 + 0x58) + 0x3d4) + 1)) {
      FUN_00a7f3c0(0x14,0x12a,0x14f,".\\ssl\\t1_reneg.c",0x7b);
      return 0;
    }
    *param_2 = *(undefined *)(*(int *)(param_1 + 0x58) + 0x3d4);
    _memcpy(param_2 + 1,(void *)(*(int *)(param_1 + 0x58) + 0x394),
            (uint)*(byte *)(*(int *)(param_1 + 0x58) + 0x3d4));
  }
  *param_3 = *(byte *)(*(int *)(param_1 + 0x58) + 0x3d4) + 1;
  return 1;
}



undefined4 FUN_00b1a290(int param_1,byte *param_2,int param_3,undefined4 *param_4)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  int *piVar4;
  
  if (param_3 < 1) {
    FUN_00a7f3c0(0x14,300,0x150,".\\ssl\\t1_reneg.c",0x9b);
    *param_4 = 0x2f;
    return 0;
  }
  if (*param_2 + 1 != param_3) {
    FUN_00a7f3c0(0x14,300,0x150,".\\ssl\\t1_reneg.c",0xa5);
    *param_4 = 0x2f;
    return 0;
  }
  iVar1 = *(int *)(param_1 + 0x58);
  if ((uint)*param_2 != (uint)*(byte *)(iVar1 + 0x3d4)) {
    FUN_00a7f3c0(0x14,300,0x151,".\\ssl\\t1_reneg.c",0xad);
    *param_4 = 0x28;
    return 0;
  }
  piVar3 = (int *)(iVar1 + 0x394);
  piVar4 = (int *)(param_2 + 1);
  for (uVar2 = (uint)*(byte *)(iVar1 + 0x3d4); 3 < uVar2; uVar2 = uVar2 - 4) {
    if (*piVar4 != *piVar3) goto LAB_00b1a38e;
    piVar3 = piVar3 + 1;
    piVar4 = piVar4 + 1;
  }
  if ((uVar2 == 0) ||
     ((*(byte *)piVar3 == *(byte *)piVar4 &&
      ((uVar2 < 2 ||
       ((*(byte *)((int)piVar3 + 1) == *(byte *)((int)piVar4 + 1) &&
        ((uVar2 < 3 || (*(byte *)((int)piVar3 + 2) == *(byte *)((int)piVar4 + 2))))))))))) {
    *(undefined4 *)(iVar1 + 0x418) = 1;
    return 1;
  }
LAB_00b1a38e:
  FUN_00a7f3c0(0x14,300,0x151,".\\ssl\\t1_reneg.c",0xb5);
  *param_4 = 0x28;
  return 0;
}



undefined4 FUN_00b1a3d0(int param_1,char *param_2,int *param_3,int param_4)

{
  int iVar1;
  
  if (param_2 != (char *)0x0) {
    if (param_4 < (int)(*(byte *)(*(int *)(param_1 + 0x58) + 0x415) + 1 +
                       (uint)*(byte *)(*(int *)(param_1 + 0x58) + 0x3d4))) {
      FUN_00a7f3c0(0x14,299,0x14f,".\\ssl\\t1_reneg.c",0xcc);
      return 0;
    }
    *param_2 = *(char *)(*(int *)(param_1 + 0x58) + 0x415) +
               *(char *)(*(int *)(param_1 + 0x58) + 0x3d4);
    _memcpy(param_2 + 1,(void *)(*(int *)(param_1 + 0x58) + 0x394),
            (uint)*(byte *)(*(int *)(param_1 + 0x58) + 0x3d4));
    iVar1 = *(int *)(param_1 + 0x58);
    _memcpy(param_2 + 1 + *(byte *)(iVar1 + 0x3d4),(void *)(iVar1 + 0x3d5),
            (uint)*(byte *)(iVar1 + 0x415));
  }
  *param_3 = *(byte *)(*(int *)(param_1 + 0x58) + 0x415) + 1 +
             (uint)*(byte *)(*(int *)(param_1 + 0x58) + 0x3d4);
  return 1;
}



undefined4 FUN_00b1a4a0(int param_1,byte *param_2,int param_3,undefined4 *param_4)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  int *piVar4;
  undefined4 uVar5;
  
  uVar3 = (uint)*(byte *)(*(int *)(param_1 + 0x58) + 0x415) +
          (uint)*(byte *)(*(int *)(param_1 + 0x58) + 0x3d4);
  if (uVar3 != 0) {
    if (*(char *)(*(int *)(param_1 + 0x58) + 0x3d4) == '\0') {
      FUN_00a7fd60(".\\ssl\\t1_reneg.c",0xf0,"!expected_len || s->s3->previous_client_finished_len")
      ;
    }
    if (*(char *)(*(int *)(param_1 + 0x58) + 0x415) == '\0') {
      FUN_00a7fd60(".\\ssl\\t1_reneg.c",0xf1,"!expected_len || s->s3->previous_server_finished_len")
      ;
    }
  }
  if (param_3 < 1) {
    FUN_00a7f3c0(0x14,0x12d,0x150,".\\ssl\\t1_reneg.c",0xf6);
    *param_4 = 0x2f;
    return 0;
  }
  if (*param_2 + 1 != param_3) {
    FUN_00a7f3c0(0x14,0x12d,0x150,".\\ssl\\t1_reneg.c",0x100);
    *param_4 = 0x2f;
    return 0;
  }
  if (*param_2 == uVar3) {
    piVar2 = (int *)(*(int *)(param_1 + 0x58) + 0x394);
    piVar4 = (int *)(param_2 + 1);
    for (uVar3 = (uint)*(byte *)(*(int *)(param_1 + 0x58) + 0x3d4); 3 < uVar3; uVar3 = uVar3 - 4) {
      if (*piVar4 != *piVar2) goto LAB_00b1a5cf;
      piVar2 = piVar2 + 1;
      piVar4 = piVar4 + 1;
    }
    if ((uVar3 == 0) ||
       ((*(byte *)piVar2 == *(byte *)piVar4 &&
        ((uVar3 < 2 ||
         ((*(byte *)((int)piVar2 + 1) == *(byte *)((int)piVar4 + 1) &&
          ((uVar3 < 3 || (*(byte *)((int)piVar2 + 2) == *(byte *)((int)piVar4 + 2))))))))))) {
      iVar1 = *(int *)(param_1 + 0x58);
      piVar4 = (int *)(iVar1 + 0x3d5);
      piVar2 = (int *)((uint)*(byte *)(iVar1 + 0x3d4) + (int)(param_2 + 1));
      for (uVar3 = (uint)*(byte *)(iVar1 + 0x415); 3 < uVar3; uVar3 = uVar3 - 4) {
        if (*piVar2 != *piVar4) goto LAB_00b1a658;
        piVar4 = piVar4 + 1;
        piVar2 = piVar2 + 1;
      }
      if ((uVar3 == 0) ||
         ((*(byte *)piVar4 == *(byte *)piVar2 &&
          ((uVar3 < 2 ||
           ((*(byte *)((int)piVar4 + 1) == *(byte *)((int)piVar2 + 1) &&
            ((uVar3 < 3 || (*(byte *)((int)piVar4 + 2) == *(byte *)((int)piVar2 + 2))))))))))) {
        *(undefined4 *)(*(int *)(param_1 + 0x58) + 0x418) = 1;
        return 1;
      }
LAB_00b1a658:
      FUN_00a7f3c0(0x14,0x12d,0x151,".\\ssl\\t1_reneg.c",0x119);
      *param_4 = 0x2f;
      return 0;
    }
LAB_00b1a5cf:
    uVar5 = 0x110;
  }
  else {
    uVar5 = 0x108;
  }
  FUN_00a7f3c0(0x14,0x12d,0x151,".\\ssl\\t1_reneg.c",uVar5);
  *param_4 = 0x28;
  return 0;
}



size_t __thiscall FUN_00b1a6a0(int param_1,size_t param_2_00,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  size_t sVar4;
  size_t unaff_EBX;
  int iVar5;
  size_t _Size;
  
  iVar2 = *(int *)(param_1 + 0x54);
  _Size = *(size_t *)(iVar2 + 0x28);
  if ((int)unaff_EBX <= (int)_Size) {
    if (param_2 == 0) {
      iVar5 = *(int *)(iVar2 + 0x30);
      iVar3 = *(int *)(iVar2 + 0x2c);
      *(size_t *)(param_1 + 0x50) = unaff_EBX;
      *(int *)(param_1 + 0x4c) = iVar5 + iVar3;
      *(int *)(iVar2 + 0x28) = *(int *)(iVar2 + 0x28) - unaff_EBX;
      piVar1 = (int *)(*(int *)(param_1 + 0x54) + 0x2c);
      *piVar1 = *piVar1 + unaff_EBX;
      return unaff_EBX;
    }
    *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + unaff_EBX;
    *(int *)(iVar2 + 0x28) = *(int *)(iVar2 + 0x28) - unaff_EBX;
    piVar1 = (int *)(*(int *)(param_1 + 0x54) + 0x2c);
    *piVar1 = *piVar1 + unaff_EBX;
    return unaff_EBX;
  }
  if (*(int *)(param_1 + 0x60) == 0) {
    param_2_00 = unaff_EBX;
  }
  if (0x8001 < param_2_00) {
    param_2_00 = 0x8001;
  }
  iVar5 = 0;
  if (_Size == 0) {
    if ((*(int *)(param_1 + 0x50) == 0) || (param_2 == 0)) {
      _Size = 0;
      goto LAB_00b1a756;
    }
LAB_00b1a715:
    iVar5 = *(int *)(param_1 + 0x50);
    if (*(void **)(param_1 + 0x4c) != *(void **)(iVar2 + 0x30)) {
      _memcpy(*(void **)(iVar2 + 0x30),*(void **)(param_1 + 0x4c),_Size + iVar5);
    }
  }
  else {
    if (param_2 != 0) goto LAB_00b1a715;
    if (*(int *)(iVar2 + 0x2c) != 0) {
      _memcpy(*(void **)(iVar2 + 0x30),
              (void *)(*(int *)(iVar2 + 0x2c) + (int)*(void **)(iVar2 + 0x30)),_Size);
      *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x2c) = 0;
    }
  }
  *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x28) = 0;
LAB_00b1a756:
  iVar2 = _Size - unaff_EBX;
  *(undefined4 *)(param_1 + 0x4c) = *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x30);
  if ((int)_Size < (int)unaff_EBX) {
    do {
      SetLastError(0);
      if (*(int *)(param_1 + 0xc) == 0) {
        FUN_00a7f3c0(0x14,0x70,0xd3,".\\ssl\\s2_pkt.c",0x180);
        sVar4 = 0xffffffff;
LAB_00b1a7d2:
        piVar1 = (int *)(*(int *)(param_1 + 0x54) + 0x28);
        *piVar1 = *piVar1 + _Size;
        return sVar4;
      }
      *(undefined4 *)(param_1 + 0x18) = 3;
      sVar4 = FUN_00a83320(*(int *)(param_1 + 0xc),
                           *(int *)(*(int *)(param_1 + 0x54) + 0x30) + _Size + iVar5,
                           param_2_00 - _Size);
      if ((int)sVar4 < 1) goto LAB_00b1a7d2;
      _Size = _Size + sVar4;
    } while ((int)_Size < (int)unaff_EBX);
    iVar2 = _Size - unaff_EBX;
  }
  if (_Size == unaff_EBX || SBORROW4(_Size,unaff_EBX) != iVar2 < 0) {
    *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x2c) = 0;
    *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x28) = 0;
  }
  else {
    *(size_t *)(*(int *)(param_1 + 0x54) + 0x2c) = iVar5 + unaff_EBX;
    *(size_t *)(*(int *)(param_1 + 0x54) + 0x28) = _Size - unaff_EBX;
  }
  if (param_2 == 0) {
    *(size_t *)(param_1 + 0x50) = unaff_EBX;
    *(undefined4 *)(param_1 + 0x18) = 1;
    return unaff_EBX;
  }
  *(int *)(param_1 + 0x50) = *(int *)(param_1 + 0x50) + unaff_EBX;
  *(undefined4 *)(param_1 + 0x18) = 1;
  return unaff_EBX;
}



int FUN_00b1a820(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int unaff_ESI;
  
  if ((*(int *)(*(int *)(unaff_ESI + 0x54) + 0x14) <= param_2) &&
     ((*(int *)(*(int *)(unaff_ESI + 0x54) + 0x18) == param_1 ||
      ((*(byte *)(unaff_ESI + 0x104) & 2) != 0)))) {
    while( true ) {
      SetLastError(0);
      if (*(int *)(unaff_ESI + 0x10) == 0) {
        FUN_00a7f3c0(0x14,0xd4,0x104,".\\ssl\\s2_pkt.c",0x1f0);
        iVar3 = -1;
      }
      else {
        iVar3 = *(int *)(unaff_ESI + 0x54);
        *(undefined4 *)(unaff_ESI + 0x18) = 2;
        iVar3 = FUN_00a833e0(*(int *)(unaff_ESI + 0x10),
                             *(int *)(iVar3 + 0x38) + *(int *)(iVar3 + 0x1c),
                             *(undefined4 *)(iVar3 + 0x20));
      }
      iVar2 = *(int *)(unaff_ESI + 0x54);
      if (iVar3 == *(int *)(iVar2 + 0x20)) break;
      if (iVar3 < 1) {
        return iVar3;
      }
      *(int *)(iVar2 + 0x1c) = *(int *)(iVar2 + 0x1c) + iVar3;
      piVar1 = (int *)(*(int *)(unaff_ESI + 0x54) + 0x20);
      *piVar1 = *piVar1 - iVar3;
    }
    *(undefined4 *)(iVar2 + 0x20) = 0;
    *(undefined4 *)(unaff_ESI + 0x18) = 1;
    return *(int *)(*(int *)(unaff_ESI + 0x54) + 0x24);
  }
  FUN_00a7f3c0(0x14,0xd4,0x7f,".\\ssl\\s2_pkt.c",0x1e0);
  return -1;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 __fastcall FUN_00b1a8f0(uint param_1_00,int param_2,void *param_1)

{
  int *piVar1;
  uint *puVar2;
  int iVar3;
  undefined4 uVar4;
  uint uVar5;
  byte *pbVar6;
  byte bVar7;
  uint uVar8;
  uint uVar9;
  size_t _Size;
  int local_8;
  
  _Size = 0;
  if (*(int *)(*(int *)(param_2 + 0x54) + 0x20) != 0) {
    uVar4 = FUN_00b1a820(param_1,param_1_00);
    return uVar4;
  }
  if (*(int *)(*(int *)(param_2 + 0x54) + 4) == 0) {
    uVar4 = FUN_00a92630(*(undefined4 *)(param_2 + 0x90));
    local_8 = FUN_00a92600(uVar4);
    if (local_8 < 0) {
      return 0xffffffff;
    }
  }
  else {
    local_8 = 0;
  }
  uVar9 = param_1_00;
  if ((*(undefined4 **)(param_2 + 0x54))[1] == 0) {
    uVar5 = FUN_00a925b0(*(undefined4 *)(param_2 + 0x80));
    uVar8 = local_8 + param_1_00;
    if ((uVar8 < 0x4000) || ((*(undefined4 **)(param_2 + 0x54))[2] != 0)) {
      if ((uVar5 < 2) && ((*(undefined4 **)(param_2 + 0x54))[2] == 0)) {
        **(undefined4 **)(param_2 + 0x54) = 0;
        _Size = 0;
      }
      else {
        if (uVar8 % uVar5 == 0) {
          _Size = 0;
        }
        else {
          _Size = uVar5 - uVar8 % uVar5;
        }
        puVar2 = *(uint **)(param_2 + 0x54);
        if (puVar2[2] == 0) {
          *puVar2 = (uint)(_Size != 0);
        }
        else {
          *puVar2 = 1;
        }
      }
    }
    else {
      if (0x7fff < uVar8) {
        uVar8 = 0x7fff;
      }
      **(undefined4 **)(param_2 + 0x54) = 0;
      _Size = 0;
      uVar9 = (uVar8 - uVar8 % uVar5) - local_8;
    }
  }
  else {
    if (0x7fff < param_1_00) {
      uVar9 = 0x7fff;
    }
    **(undefined4 **)(param_2 + 0x54) = 0;
  }
  *(uint *)(*(int *)(param_2 + 0x54) + 0x48) = uVar9;
  *(size_t *)(*(int *)(param_2 + 0x54) + 0x3c) = _Size;
  *(int *)(*(int *)(param_2 + 0x54) + 0x58) = *(int *)(*(int *)(param_2 + 0x54) + 0x34) + 3;
  *(int *)(*(int *)(param_2 + 0x54) + 0x54) =
       *(int *)(*(int *)(param_2 + 0x54) + 0x34) + 3 + local_8;
  _memcpy(*(void **)(*(int *)(param_2 + 0x54) + 0x54),param_1,uVar9);
  if (_Size != 0) {
    _memset((void *)(*(int *)(*(int *)(param_2 + 0x54) + 0x54) + uVar9),0,_Size);
  }
  if (*(int *)(*(int *)(param_2 + 0x54) + 4) == 0) {
    *(size_t *)(*(int *)(param_2 + 0x54) + 0x4c) = _Size + uVar9;
    FUN_00b1b390(param_2,*(undefined4 *)(*(int *)(param_2 + 0x54) + 0x58),1);
    piVar1 = (int *)(*(int *)(param_2 + 0x54) + 0x48);
    *piVar1 = *piVar1 + _Size + local_8;
    FUN_00b1b330(param_2,1);
  }
  *(undefined4 *)(*(int *)(param_2 + 0x54) + 0x20) =
       *(undefined4 *)(*(int *)(param_2 + 0x54) + 0x48);
  piVar1 = *(int **)(param_2 + 0x54);
  if (*piVar1 == 0) {
    iVar3 = piVar1[0x16];
    pbVar6 = (byte *)(iVar3 + -2);
    *pbVar6 = (byte)((uint)piVar1[0x12] >> 8) | 0x80;
    *(undefined *)(iVar3 + -1) = *(undefined *)(*(int *)(param_2 + 0x54) + 0x48);
    piVar1 = (int *)(*(int *)(param_2 + 0x54) + 0x20);
    *piVar1 = *piVar1 + 2;
  }
  else {
    iVar3 = piVar1[0x16];
    pbVar6 = (byte *)(iVar3 + -3);
    bVar7 = (byte)((uint)piVar1[0x12] >> 8) & 0x3f;
    *pbVar6 = bVar7;
    if (*(int *)(*(int *)(param_2 + 0x54) + 8) != 0) {
      *pbVar6 = bVar7 | 0x40;
    }
    *(undefined *)(iVar3 + -2) = *(undefined *)(*(int *)(param_2 + 0x54) + 0x48);
    *(undefined *)(iVar3 + -1) = *(undefined *)(*(int *)(param_2 + 0x54) + 0x3c);
    piVar1 = (int *)(*(int *)(param_2 + 0x54) + 0x20);
    *piVar1 = *piVar1 + 3;
  }
  *(byte **)(*(int *)(param_2 + 0x54) + 0x38) = pbVar6;
  piVar1 = (int *)(*(int *)(param_2 + 0x54) + 0xd4);
  *piVar1 = *piVar1 + 1;
  *(uint *)(*(int *)(param_2 + 0x54) + 0x14) = param_1_00;
  *(void **)(*(int *)(param_2 + 0x54) + 0x18) = param_1;
  *(uint *)(*(int *)(param_2 + 0x54) + 0x24) = uVar9;
  *(undefined4 *)(*(int *)(param_2 + 0x54) + 0x1c) = 0;
  uVar4 = FUN_00b1a820(param_1,param_1_00);
  return uVar4;
}



// Library Function - Single Match
//  _getPNSStr
// 
// Library: Visual Studio 2019 Release

undefined4 _getPNSStr(undefined4 param_1)

{
  switch(param_1) {
  case 1:
    return 0xcb;
  case 2:
    return 0xca;
  default:
    return 0xfd;
  case 4:
    return 0xc9;
  case 6:
    return 0xcc;
  }
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b1aba0(void *param_1,size_t param_2,int param_3)

{
  uint *puVar1;
  byte bVar2;
  int *piVar3;
  uint uVar4;
  int iVar5;
  int unaff_ESI;
  byte *pbVar6;
  size_t _Size;
  undefined4 uVar7;
  undefined4 uVar8;
  void *local_1c;
  undefined auStack_18 [20];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&local_1c;
  local_1c = param_1;
  do {
    uVar4 = FUN_00aa35c0();
    if (((uVar4 & 0x3000) != 0) && (*(int *)(unaff_ESI + 0x1c) == 0)) {
      iVar5 = (**(code **)(unaff_ESI + 0x20))();
      if (iVar5 < 0) goto LAB_00b1aefa;
      if (iVar5 == 0) {
        uVar8 = 0x8e;
        uVar7 = 0xe5;
        goto LAB_00b1aee8;
      }
    }
    SetLastError(0);
    *(undefined4 *)(unaff_ESI + 0x18) = 1;
    if ((int)param_2 < 1) {
      ___security_check_cookie_4();
      return;
    }
    iVar5 = *(int *)(unaff_ESI + 0x54);
    if (*(int *)(iVar5 + 0x44) != 0) {
      _Size = *(size_t *)(iVar5 + 0x44);
      if ((int)param_2 <= (int)*(size_t *)(iVar5 + 0x44)) {
        _Size = param_2;
      }
      _memcpy(local_1c,*(void **)(iVar5 + 0x50),_Size);
      if (param_3 == 0) {
        piVar3 = (int *)(*(int *)(unaff_ESI + 0x54) + 0x44);
        *piVar3 = *piVar3 - _Size;
        piVar3 = (int *)(*(int *)(unaff_ESI + 0x54) + 0x50);
        *piVar3 = *piVar3 + _Size;
        if (*(int *)(*(int *)(unaff_ESI + 0x54) + 0x44) == 0) {
          *(undefined4 *)(unaff_ESI + 0x38) = 0xf0;
        }
      }
      ___security_check_cookie_4();
      return;
    }
    if (*(int *)(unaff_ESI + 0x38) == 0xf0) {
      if (*(int *)(unaff_ESI + 0x10c) == 0) {
        iVar5 = FUN_00b1a6a0(0x8001,0);
        if (iVar5 < 1) goto LAB_00b1aefa;
      }
      else {
        iVar5 = FUN_00b1a6a0(0x8001,0);
        if (iVar5 < 1) goto LAB_00b1aefa;
        *(undefined4 *)(unaff_ESI + 0x10c) = 0;
        if (((**(byte **)(unaff_ESI + 0x4c) & 0x80) == 0) ||
           ((bVar2 = (*(byte **)(unaff_ESI + 0x4c))[2], bVar2 != 1 && (bVar2 != 4)))) {
          uVar8 = 0xbb;
          uVar7 = 0xaf;
          goto LAB_00b1aee8;
        }
      }
      pbVar6 = *(byte **)(unaff_ESI + 0x4c);
      *(undefined4 *)(unaff_ESI + 0x38) = 0xf1;
      *(undefined4 *)(*(int *)(unaff_ESI + 0x54) + 8) = 0;
      *(uint *)(*(int *)(unaff_ESI + 0x54) + 0x40) = (uint)CONCAT11(*pbVar6,pbVar6[1]);
      if ((*pbVar6 & 0x80) == 0) {
        **(undefined4 **)(unaff_ESI + 0x54) = 1;
        puVar1 = (uint *)(*(int *)(unaff_ESI + 0x54) + 0x40);
        *puVar1 = *puVar1 & 0x3fff;
        *(uint *)(*(int *)(unaff_ESI + 0x54) + 8) = *pbVar6 >> 6 & 1;
      }
      else {
        **(undefined4 **)(unaff_ESI + 0x54) = 0;
        puVar1 = (uint *)(*(int *)(unaff_ESI + 0x54) + 0x40);
        *puVar1 = *puVar1 & 0x7fff;
      }
    }
    if (*(int *)(unaff_ESI + 0x38) != 0xf1) {
      uVar8 = 0x12f;
      uVar7 = 0x7e;
      goto LAB_00b1aee8;
    }
    iVar5 = (*(int **)(unaff_ESI + 0x54))[0x10] + 2 + **(int **)(unaff_ESI + 0x54);
    if ((*(int *)(unaff_ESI + 0x50) < iVar5) &&
       (iVar5 = FUN_00b1a6a0(iVar5 - *(int *)(unaff_ESI + 0x50),1), iVar5 < 1)) goto LAB_00b1aefa;
    iVar5 = *(int *)(unaff_ESI + 0x4c);
    piVar3 = *(int **)(unaff_ESI + 0x54);
    pbVar6 = (byte *)(iVar5 + 2);
    *(undefined4 *)(unaff_ESI + 0x38) = 0xf0;
    if (*piVar3 == 0) {
      piVar3[0xf] = 0;
    }
    else {
      piVar3[0xf] = (uint)*pbVar6;
      pbVar6 = (byte *)(iVar5 + 3);
    }
    if (*(int *)(*(int *)(unaff_ESI + 0x54) + 4) == 0) {
      uVar7 = FUN_00a92630(*(undefined4 *)(unaff_ESI + 0x84));
      uVar4 = FUN_00a92600(uVar7);
      if ((int)uVar4 < 0) goto LAB_00b1aefa;
      if (0x14 < (int)uVar4) {
        FUN_00a7fd60(".\\ssl\\s2_pkt.c",0xfc,"mac_size <= MAX_MAC_SIZE");
      }
      *(byte **)(*(int *)(unaff_ESI + 0x54) + 0x58) = pbVar6;
      *(byte **)(*(int *)(unaff_ESI + 0x54) + 0x50) = pbVar6 + uVar4;
      iVar5 = *(int *)(unaff_ESI + 0x54);
      if (*(uint *)(iVar5 + 0x40) < *(int *)(iVar5 + 0x3c) + uVar4) {
        uVar8 = 0x101;
        uVar7 = 0x11b;
        goto LAB_00b1aee8;
      }
    }
    else {
      *(byte **)(*(int *)(unaff_ESI + 0x54) + 0x58) = pbVar6;
      *(byte **)(*(int *)(unaff_ESI + 0x54) + 0x50) = pbVar6;
      iVar5 = *(int *)(unaff_ESI + 0x54);
      uVar4 = 0;
      if (*(int *)(iVar5 + 0x3c) != 0) {
        uVar8 = 0xf3;
        uVar7 = 0x11b;
        goto LAB_00b1aee8;
      }
    }
    *(undefined4 *)(iVar5 + 0x44) = *(undefined4 *)(iVar5 + 0x40);
    iVar5 = *(int *)(unaff_ESI + 0x54);
    if ((*(int *)(iVar5 + 4) == 0) && (uVar4 <= *(uint *)(iVar5 + 0x40))) {
      FUN_00b1b330();
      piVar3 = (int *)(*(int *)(unaff_ESI + 0x54) + 0x44);
      *piVar3 = *piVar3 - uVar4;
      FUN_00b1b390();
      piVar3 = (int *)(*(int *)(unaff_ESI + 0x54) + 0x44);
      *piVar3 = *piVar3 - *(int *)(*(int *)(unaff_ESI + 0x54) + 0x3c);
      iVar5 = FUN_00a7fd90(auStack_18,*(undefined4 *)(*(int *)(unaff_ESI + 0x54) + 0x58),uVar4);
      if (iVar5 != 0) {
LAB_00b1aece:
        uVar8 = 0x113;
        uVar7 = 0x71;
LAB_00b1aee8:
        FUN_00a7f3c0(0x14,0xec,uVar7,".\\ssl\\s2_pkt.c",uVar8);
LAB_00b1aefa:
        ___security_check_cookie_4();
        return;
      }
      iVar5 = *(int *)(unaff_ESI + 0x54);
      uVar4 = FUN_00a925b0(*(undefined4 *)(unaff_ESI + 0x80));
      if (*(uint *)(iVar5 + 0x40) % uVar4 != 0) goto LAB_00b1aece;
    }
    *(int *)(iVar5 + 0xd0) = *(int *)(iVar5 + 0xd0) + 1;
  } while( true );
}



void FUN_00b1af10(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_00b1aba0(param_2,param_3,0);
  return;
}



int FUN_00b1af50(int param_1,int param_2,int param_3)

{
  uint uVar1;
  int iVar2;
  int iVar3;
  
  uVar1 = FUN_00aa35c0(param_1);
  if (((uVar1 & 0x3000) != 0) && (*(int *)(param_1 + 0x1c) == 0)) {
    iVar2 = (**(code **)(param_1 + 0x20))(param_1);
    if (iVar2 < 0) {
      return iVar2;
    }
    if (iVar2 == 0) {
      FUN_00a7f3c0(0x14,0x7f,0xe5,".\\ssl\\s2_pkt.c",0x1ad);
      return -1;
    }
  }
  if ((*(int *)(param_1 + 0xd4) != 0) && (FUN_00b0e530(param_1), *(int *)(param_1 + 0xd4) != 0)) {
    return -1;
  }
  SetLastError(0);
  *(undefined4 *)(param_1 + 0x18) = 1;
  if (0 < param_3) {
    iVar2 = *(int *)(*(int *)(param_1 + 0x54) + 0x10);
    *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x10) = 0;
    param_3 = param_3 - iVar2;
    iVar3 = FUN_00b1a8f0(iVar2 + param_2);
    while( true ) {
      if (iVar3 < 1) {
        *(int *)(*(int *)(param_1 + 0x54) + 0x10) = iVar2;
        return iVar3;
      }
      if ((iVar3 == param_3) || ((*(byte *)(param_1 + 0x104) & 1) != 0)) break;
      iVar2 = iVar2 + iVar3;
      param_3 = param_3 - iVar3;
      iVar3 = FUN_00b1a8f0(iVar2 + param_2);
    }
    param_3 = iVar3 + iVar2;
  }
  return param_3;
}



int FUN_00b1b040(int param_1,undefined4 param_2,int param_3)

{
  char *_Dst;
  undefined4 uVar1;
  
  if (-1 < param_3) {
    *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x44) + param_3;
    if ((2 < *(int *)(param_1 + 0x44)) &&
       (_Dst = *(char **)(*(int *)(param_1 + 0x3c) + 4), *_Dst == '\0')) {
      uVar1 = _getPNSStr(CONCAT11(_Dst[1],_Dst[2]),".\\ssl\\s2_pkt.c",0x2a9);
      FUN_00a7f3c0(0x14,param_2,uVar1);
      *(int *)(param_1 + 0x44) = *(int *)(param_1 + 0x44) + -3;
      if (0 < (int)*(size_t *)(param_1 + 0x44)) {
        _memmove(_Dst,_Dst + 3,*(size_t *)(param_1 + 0x44));
      }
    }
    param_3 = 0;
  }
  return param_3;
}



undefined4 FUN_00b1b0b0(undefined4 *param_1)

{
  int iVar1;
  int iVar2;
  
  iVar2 = FUN_00b1af50(param_1,*(int *)(param_1[0xf] + 4) + param_1[0x12],param_1[0x11]);
  iVar1 = param_1[0x11];
  if (iVar2 == iVar1) {
    if ((code *)param_1[0x19] != (code *)0x0) {
      (*(code *)param_1[0x19])
                (1,*param_1,0,*(undefined4 *)(param_1[0xf] + 4),param_1[0x12] + iVar1,param_1,
                 param_1[0x1a]);
    }
    return 1;
  }
  if (iVar2 < 0) {
    return 0xffffffff;
  }
  param_1[0x12] = param_1[0x12] + iVar2;
  param_1[0x11] = iVar1 - iVar2;
  return 0;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b1b120(int param_1,int param_2)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  undefined4 local_c;
  undefined4 local_8;
  undefined4 local_4;
  
  iVar1 = param_1;
  local_4 = 0xb1b12a;
  iVar2 = FUN_00afc270(*(undefined4 *)(param_1 + 0xc0),&param_1,&local_c,0,0,0);
  if (iVar2 == 0) {
    FUN_00b0e6b0(iVar1,1);
    FUN_00a7f3c0(0x14,0x7c,0xce,".\\ssl\\s2_enc.c",0x4a);
    return 0;
  }
  FUN_00afbc90(iVar1 + 0x84,local_c);
  FUN_00afbc90(iVar1 + 0x90,local_c);
  if (*(int *)(iVar1 + 0x80) == 0) {
    iVar2 = FUN_00a84f80(0x8c,".\\ssl\\s2_enc.c",0x52);
    *(int *)(iVar1 + 0x80) = iVar2;
    if (iVar2 == 0) goto LAB_00b1b1ff;
  }
  local_4 = *(undefined4 *)(iVar1 + 0x80);
  FUN_00aab350(local_4);
  if (*(int *)(iVar1 + 0x8c) == 0) {
    iVar2 = FUN_00a84f80(0x8c,".\\ssl\\s2_enc.c",0x5c);
    *(int *)(iVar1 + 0x8c) = iVar2;
    if (iVar2 == 0) {
LAB_00b1b1ff:
      FUN_00a7f3c0(0x14,0x7c,0x41,".\\ssl\\s2_enc.c",0x72);
      return 0;
    }
  }
  local_8 = *(undefined4 *)(iVar1 + 0x8c);
  FUN_00aab350(local_8);
  uVar4 = *(uint *)(param_1 + 8);
  *(uint *)(*(int *)(iVar1 + 0x54) + 0x9c) = uVar4 * 2;
  if (0x30 < *(uint *)(*(int *)(iVar1 + 0x54) + 0x9c)) {
    FUN_00a7fd60(".\\ssl\\s2_enc.c",100,"s->s2->key_material_length <= sizeof s->s2->key_material");
  }
  iVar2 = FUN_00b0e370(iVar1);
  if (iVar2 < 1) {
    return 0;
  }
  if (8 < *(int *)(param_1 + 0xc)) {
    FUN_00a7fd60(".\\ssl\\s2_enc.c",0x69,"c->iv_len <= (int)sizeof(s->session->key_arg)");
  }
  iVar2 = param_2;
  uVar3 = -(uint)(param_2 != 0) & uVar4;
  FUN_00aabdf0(local_8,param_1,0,*(int *)(iVar1 + 0x54) + 0xa0 + uVar3,*(int *)(iVar1 + 0xc0) + 8);
  uVar4 = ~-(uint)(iVar2 != 0) & uVar4;
  FUN_00aabe20(local_4,param_1,0,*(int *)(iVar1 + 0x54) + 0xa0 + uVar4,*(int *)(iVar1 + 0xc0) + 8);
  *(uint *)(*(int *)(iVar1 + 0x54) + 0x5c) = uVar4 + 0xa0 + *(int *)(iVar1 + 0x54);
  *(uint *)(*(int *)(iVar1 + 0x54) + 0x60) = uVar3 + 0xa0 + *(int *)(iVar1 + 0x54);
  return 1;
}



void FUN_00b1b330(int param_1,int param_2)

{
  undefined4 uVar1;
  int *piVar2;
  uint uVar3;
  
  if (param_2 == 0) {
    piVar2 = *(int **)(param_1 + 0x80);
    uVar3 = *(uint *)(*(int *)(param_1 + 0x54) + 0x40);
  }
  else {
    piVar2 = *(int **)(param_1 + 0x8c);
    uVar3 = *(uint *)(*(int *)(param_1 + 0x54) + 0x48);
  }
  if (piVar2 != (int *)0x0) {
    if (*(int *)(*piVar2 + 4) == 8) {
      uVar3 = uVar3 + 7 & 0xfffffff8;
    }
    uVar1 = *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x58);
    FUN_00a925c0(piVar2,uVar1,uVar1,uVar3);
  }
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

void FUN_00b1b390(int param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined local_18 [20];
  undefined4 uStack_4;
  
  iVar2 = param_1;
  uStack_4 = 0xb1b39a;
  iVar1 = *(int *)(param_1 + 0x54);
  if (param_3 == 0) {
    uVar3 = *(undefined4 *)(iVar1 + 0xd0);
    uVar6 = *(undefined4 *)(iVar1 + 0x5c);
    uVar4 = *(undefined4 *)(iVar1 + 0x44);
    uVar5 = *(undefined4 *)(iVar1 + 0x50);
  }
  else {
    uVar3 = *(undefined4 *)(iVar1 + 0xd4);
    uVar6 = *(undefined4 *)(iVar1 + 0x60);
    uVar4 = *(undefined4 *)(iVar1 + 0x4c);
    uVar5 = *(undefined4 *)(iVar1 + 0x54);
  }
  param_1 = CONCAT13((char)uVar3,
                     CONCAT12((char)((uint)uVar3 >> 8),
                              CONCAT11((char)((uint)uVar3 >> 0x10),(char)((uint)uVar3 >> 0x18))));
  FUN_00a91330(local_18);
  FUN_00a91900(local_18,*(undefined4 *)(iVar2 + 0x84));
  uVar3 = FUN_00a925e0(*(undefined4 *)(iVar2 + 0x80));
  FUN_00a91530(local_18,uVar6,uVar3);
  FUN_00a91530(local_18,uVar5,uVar4);
  FUN_00a91530(local_18,&param_1,4);
  FUN_00a91540(local_18,param_2,0);
  FUN_00a915c0(local_18);
  return;
}



// WARNING: Function: __alloca_probe replaced with injection: alloca_probe

undefined4 FUN_00b1b470(int param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  char *_Format;
  undefined4 *local_8;
  int local_4;
  
  iVar7 = 0;
  local_4 = 0;
  if (param_2 == 0) {
    iVar1 = FUN_00a92630(*(undefined4 *)(param_1 + 0x84));
    if (iVar1 != 0) {
      uVar2 = FUN_00a92630(*(undefined4 *)(param_1 + 0x84));
      local_4 = FUN_00a92600(uVar2);
      if (local_4 < 0) {
        FUN_00a7fd60(".\\ssl\\d1_enc.c",0xb0,"mac_size >= 0");
      }
    }
    local_8 = *(undefined4 **)(param_1 + 0x80);
    iVar1 = *(int *)(param_1 + 0x58) + 0x10c;
    if (local_8 != (undefined4 *)0x0) {
      iVar7 = FUN_00a814c0(local_8);
    }
  }
  else {
    iVar1 = FUN_00a92630(*(undefined4 *)(param_1 + 0x90));
    if (iVar1 != 0) {
      uVar2 = FUN_00a92630(*(undefined4 *)(param_1 + 0x90));
      local_4 = FUN_00a92600(uVar2);
      if (local_4 < 0) {
        return 0xffffffff;
      }
    }
    local_8 = *(undefined4 **)(param_1 + 0x8c);
    iVar3 = *(int *)(param_1 + 0x58);
    iVar1 = iVar3 + 0x130;
    if (local_8 != (undefined4 *)0x0) {
      iVar7 = FUN_00a814c0(local_8);
      if (*(int *)(iVar3 + 0x13c) == *(int *)(iVar3 + 0x140)) {
        iVar4 = FUN_00a7fa30(*local_8);
        if (1 < iVar4) {
          uVar2 = FUN_00a7fa30(*local_8);
          iVar3 = FUN_00a86e60(*(undefined4 *)(iVar3 + 0x140),uVar2);
          if (iVar3 < 1) {
            return 0xffffffff;
          }
        }
      }
      else {
        _Format = "%s:%d: rec->data != rec->input\n";
        iVar3 = FUN_00a475e9("%s:%d: rec->data != rec->input\n",".\\ssl\\d1_enc.c",0xa3);
        _fprintf((FILE *)(iVar3 + 0x40),_Format);
      }
    }
  }
  if (((*(int *)(param_1 + 0xc0) == 0) || (local_8 == (undefined4 *)0x0)) || (iVar7 == 0)) {
    _memmove(*(void **)(iVar1 + 0xc),*(void **)(iVar1 + 0x10),*(size_t *)(iVar1 + 4));
    *(undefined4 *)(iVar1 + 0x10) = *(undefined4 *)(iVar1 + 0xc);
    return 1;
  }
  uVar6 = *(uint *)(iVar1 + 4);
  uVar5 = FUN_00a7fa30(*local_8);
  uVar8 = uVar6;
  if (uVar5 == 1) {
LAB_00b1b64c:
    if (param_2 != 0) goto LAB_00b1b66b;
  }
  else if (param_2 != 0) {
    iVar3 = uVar5 - (int)uVar6 % (int)uVar5;
    iVar7 = iVar3 + -1;
    if (((*(uint *)(param_1 + 0x100) & 0x200) != 0) && ((**(byte **)(param_1 + 0x58) & 8) != 0)) {
      iVar7 = iVar3;
    }
    uVar8 = uVar6 + iVar3;
    for (; (int)uVar6 < (int)uVar8; uVar6 = uVar6 + 1) {
      *(char *)(uVar6 + *(int *)(iVar1 + 0x10)) = (char)iVar7;
    }
    *(int *)(iVar1 + 4) = *(int *)(iVar1 + 4) + iVar3;
    goto LAB_00b1b64c;
  }
  if ((uVar8 == 0) || (uVar8 % uVar5 != 0)) {
    return 0;
  }
LAB_00b1b66b:
  FUN_00a925c0(local_8,*(undefined4 *)(iVar1 + 0xc),*(undefined4 *)(iVar1 + 0x10),uVar8);
  if ((uVar5 != 1) && (param_2 == 0)) {
    uVar2 = FUN_00b17020(param_1,iVar1,uVar5,local_4);
    return uVar2;
  }
  return 1;
}



void RtlUnwind(PVOID TargetFrame,PVOID TargetIp,PEXCEPTION_RECORD ExceptionRecord,PVOID ReturnValue)

{
                    // WARNING: Could not recover jumptable at 0x00b1b6cc. Too many branches
                    // WARNING: Treating indirect jump as call
  RtlUnwind(TargetFrame,TargetIp,ExceptionRecord,ReturnValue);
  return;
}



BOOL DdeFreeStringHandle(DWORD idInst,HSZ hsz)

{
  BOOL BVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b6d2. Too many branches
                    // WARNING: Treating indirect jump as call
  BVar1 = DdeFreeStringHandle(idInst,hsz);
  return BVar1;
}



BOOL DdeUninitialize(DWORD idInst)

{
  BOOL BVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b6d8. Too many branches
                    // WARNING: Treating indirect jump as call
  BVar1 = DdeUninitialize(idInst);
  return BVar1;
}



DWORD DdeQueryStringW(DWORD idInst,HSZ hsz,LPWSTR psz,DWORD cchMax,int iCodePage)

{
  DWORD DVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b6de. Too many branches
                    // WARNING: Treating indirect jump as call
  DVar1 = DdeQueryStringW(idInst,hsz,psz,cchMax,iCodePage);
  return DVar1;
}



BOOL DdeFreeDataHandle(HDDEDATA hData)

{
  BOOL BVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b6e4. Too many branches
                    // WARNING: Treating indirect jump as call
  BVar1 = DdeFreeDataHandle(hData);
  return BVar1;
}



DWORD DdeGetData(HDDEDATA hData,LPBYTE pDst,DWORD cbMax,DWORD cbOff)

{
  DWORD DVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b6ea. Too many branches
                    // WARNING: Treating indirect jump as call
  DVar1 = DdeGetData(hData,pDst,cbMax,cbOff);
  return DVar1;
}



HDDEDATA DdeCreateDataHandle(DWORD idInst,LPBYTE pSrc,DWORD cb,DWORD cbOff,HSZ hszItem,UINT wFmt,
                            UINT afCmd)

{
  HDDEDATA pHVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b6f0. Too many branches
                    // WARNING: Treating indirect jump as call
  pHVar1 = DdeCreateDataHandle(idInst,pSrc,cb,cbOff,hszItem,wFmt,afCmd);
  return pHVar1;
}



UINT DdeGetLastError(DWORD idInst)

{
  UINT UVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b6f6. Too many branches
                    // WARNING: Treating indirect jump as call
  UVar1 = DdeGetLastError(idInst);
  return UVar1;
}



UINT DdeInitializeW(LPDWORD pidInst,PFNCALLBACK pfnCallback,DWORD afCmd,DWORD ulRes)

{
  UINT UVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b6fc. Too many branches
                    // WARNING: Treating indirect jump as call
  UVar1 = DdeInitializeW(pidInst,pfnCallback,afCmd,ulRes);
  return UVar1;
}



BOOL DdeDisconnect(HCONV hConv)

{
  BOOL BVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b702. Too many branches
                    // WARNING: Treating indirect jump as call
  BVar1 = DdeDisconnect(hConv);
  return BVar1;
}



HDDEDATA DdeClientTransaction
                   (LPBYTE pData,DWORD cbData,HCONV hConv,HSZ hszItem,UINT wFmt,UINT wType,
                   DWORD dwTimeout,LPDWORD pdwResult)

{
  HDDEDATA pHVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b708. Too many branches
                    // WARNING: Treating indirect jump as call
  pHVar1 = DdeClientTransaction(pData,cbData,hConv,hszItem,wFmt,wType,dwTimeout,pdwResult);
  return pHVar1;
}



HSZ DdeCreateStringHandleW(DWORD idInst,LPCWSTR psz,int iCodePage)

{
  HSZ pHVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b70e. Too many branches
                    // WARNING: Treating indirect jump as call
  pHVar1 = DdeCreateStringHandleW(idInst,psz,iCodePage);
  return pHVar1;
}



HDDEDATA DdeNameService(DWORD idInst,HSZ hsz1,HSZ hsz2,UINT afCmd)

{
  HDDEDATA pHVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b714. Too many branches
                    // WARNING: Treating indirect jump as call
  pHVar1 = DdeNameService(idInst,hsz1,hsz2,afCmd);
  return pHVar1;
}



HCONV DdeConnect(DWORD idInst,HSZ hszService,HSZ hszTopic,PCONVCONTEXT pCC)

{
  HCONV pHVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b71a. Too many branches
                    // WARNING: Treating indirect jump as call
  pHVar1 = DdeConnect(idInst,hszService,hszTopic,pCC);
  return pHVar1;
}



BOOL DdePostAdvise(DWORD idInst,HSZ hszTopic,HSZ hszItem)

{
  BOOL BVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b720. Too many branches
                    // WARNING: Treating indirect jump as call
  BVar1 = DdePostAdvise(idInst,hszTopic,hszItem);
  return BVar1;
}



BOOL ClosePrinter(HANDLE hPrinter)

{
  BOOL BVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b726. Too many branches
                    // WARNING: Treating indirect jump as call
  BVar1 = ClosePrinter(hPrinter);
  return BVar1;
}



BOOL OpenPrinterW(LPWSTR pPrinterName,LPHANDLE phPrinter,LPPRINTER_DEFAULTSW pDefault)

{
  BOOL BVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b72c. Too many branches
                    // WARNING: Treating indirect jump as call
  BVar1 = OpenPrinterW(pPrinterName,phPrinter,pDefault);
  return BVar1;
}



LONG DocumentPropertiesW(HWND hWnd,HANDLE hPrinter,LPWSTR pDeviceName,PDEVMODEW pDevModeOutput,
                        PDEVMODEW pDevModeInput,DWORD fMode)

{
  LONG LVar1;
  
                    // WARNING: Could not recover jumptable at 0x00b1b732. Too many branches
                    // WARNING: Treating indirect jump as call
  LVar1 = DocumentPropertiesW(hWnd,hPrinter,pDeviceName,pDevModeOutput,pDevModeInput,fMode);
  return LVar1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  private: static void __cdecl std::locale::_Locimp::_Locimp_Addfac(class std::locale::_Locimp
// *,class std::locale::facet *,unsigned int)
// 
// Library: Visual Studio 2008 Release

void __cdecl std::locale::_Locimp::_Locimp_Addfac(_Locimp *param_1,facet *param_2,uint param_3)

{
  void *pvVar1;
  facet **ppfVar2;
  undefined4 *puVar3;
  uint uVar4;
  undefined local_20 [12];
  _Lockit local_14 [12];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0xb1b744;
  _Lockit::_Lockit(local_14,0);
  local_8 = 0;
  if (*(uint *)(param_1 + 0xc) <= param_3) {
    uVar4 = param_3 + 1;
    if (uVar4 < 0x28) {
      uVar4 = 0x28;
    }
    pvVar1 = __realloc_crt(*(void **)(param_1 + 8),uVar4 << 2);
    if (pvVar1 == (void *)0x0) {
      param_1 = (_Locimp *)&DAT_032edc64;
      if ((DAT_032edc70 & 1) == 0) {
        DAT_032edc70 = DAT_032edc70 | 1;
        bad_alloc::bad_alloc((bad_alloc *)&DAT_032edc64);
        _atexit((_func_4879 *)&LAB_00c798a2);
      }
      FUN_00401da3(&DAT_032edc64);
      pvVar1 = (void *)__CxxThrowException_8(local_20,&DAT_031153a4);
    }
    *(void **)(param_1 + 8) = pvVar1;
    while (*(uint *)(param_1 + 0xc) < uVar4) {
      *(undefined4 *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc) * 4) = 0;
      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
    }
  }
  facet::_Incref(param_2);
  ppfVar2 = (facet **)(*(int *)(param_1 + 8) + param_3 * 4);
  if (*ppfVar2 != (facet *)0x0) {
    puVar3 = (undefined4 *)facet::_Decref(*ppfVar2);
    if (puVar3 != (undefined4 *)0x0) {
      (**(code **)*puVar3)(1);
    }
  }
  local_8 = 0xffffffff;
  *(facet **)(param_3 * 4 + *(int *)(param_1 + 8)) = param_2;
  FUN_00823810();
  return;
}



// Library Function - Single Match
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// __thiscall std::_Locinfo::_Getname(void)const 
// 
// Library: Visual Studio 2008 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::_Locinfo::_Getname
          (_Locinfo *this,
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1,(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
                     )(this + 0x58));
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  private: static class std::locale::_Locimp * __cdecl std::locale::_Locimp::_Makeloc(class
// std::_Locinfo const &,int,class std::locale::_Locimp *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

_Locimp * __cdecl
std::locale::_Locimp::_Makeloc(_Locinfo *param_1,int param_2,_Locimp *param_3,locale *param_4)

{
  void *pvVar1;
  undefined4 uVar2;
  uint uVar3;
  uint uVar4;
  undefined4 *puVar5;
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x20;
  local_8 = 0xb1b83f;
  local_14 = param_2 & 2;
  if (local_14 != 0) {
    if (param_4 == (locale *)0x0) {
      pvVar1 = operator_new(0x18);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = FUN_00422900(param_1,0);
      }
      uVar3 = id::operator_unsigned_int((id *)&DAT_032bc81c);
    }
    else {
      uVar3 = id::operator_unsigned_int((id *)&DAT_032bc81c);
      uVar2 = FUN_00422a40(param_4,uVar3);
    }
    FUN_007cc31d(uVar2,uVar3);
  }
  uVar3 = param_2 & 8;
  if (uVar3 != 0) {
    if (param_4 == (locale *)0x0) {
      pvVar1 = operator_new(0x10);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = collate<>(param_1,0);
      }
      uVar4 = id::operator_unsigned_int((id *)&DAT_032f11e4);
    }
    else {
      uVar4 = id::operator_unsigned_int((id *)&DAT_032f11e4);
      uVar2 = FUN_00440e5e(param_4,uVar4);
    }
    FUN_007cc31d(uVar2,uVar4);
  }
  if (uVar3 != 0) {
    if (param_4 == (locale *)0x0) {
      pvVar1 = operator_new(0x10);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = collate<>(param_1,0);
      }
      uVar4 = id::operator_unsigned_int((id *)&DAT_032f11bc);
    }
    else {
      uVar4 = id::operator_unsigned_int((id *)&DAT_032f11bc);
      uVar2 = FUN_00424900(param_4,uVar4);
    }
    FUN_007cc31d(uVar2,uVar4);
    if (uVar3 != 0) {
      if (param_4 == (locale *)0x0) {
        pvVar1 = operator_new(0x18);
        local_8 = 0xe;
        if (pvVar1 == (void *)0x0) {
          uVar2 = 0;
        }
        else {
          uVar2 = FUN_00424cf0(param_1,0,0);
        }
        local_8 = 0xffffffff;
        uVar3 = id::operator_unsigned_int((id *)&DAT_032f11c0);
      }
      else {
        uVar3 = id::operator_unsigned_int((id *)&DAT_032f11c0);
        uVar2 = FUN_00424e70(param_4,uVar3);
      }
      FUN_007cc31d(uVar2,uVar3);
    }
  }
  if (local_14 != 0) {
    if (param_4 == (locale *)0x0) {
      puVar5 = (undefined4 *)operator_new(8);
      if (puVar5 == (undefined4 *)0x0) {
        puVar5 = (undefined4 *)0x0;
      }
      else {
        puVar5[1] = 0;
        *puVar5 = codecvt<char,char,int>::vftable;
      }
      uVar3 = id::operator_unsigned_int((id *)&DAT_032f11f4);
    }
    else {
      uVar3 = id::operator_unsigned_int((id *)&DAT_032f11f4);
      puVar5 = (undefined4 *)FUN_0043f704(param_4,uVar3);
    }
    FUN_007cc31d(puVar5,uVar3);
  }
  _Makexloc(param_1,param_2,param_3,param_4);
  FID_conflict__Makewloc(param_1,param_2,param_3,param_4);
  FID_conflict__Makewloc(param_1,param_2,param_3,param_4);
  *(uint *)(param_3 + 0x10) = *(uint *)(param_3 + 0x10) | param_2;
  uVar2 = _Locinfo::_Getname(param_1,local_30);
  local_8 = 0x12;
  FUN_00424570(uVar2);
  FUN_004017b2(1,0);
  return param_3;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Single Match
//  private: static void __cdecl std::locale::_Locimp::_Locimp_ctor(class std::locale::_Locimp
// *,class std::locale::_Locimp const &)
// 
// Library: Visual Studio 2008 Release

void __cdecl std::locale::_Locimp::_Locimp_ctor(_Locimp *param_1,_Locimp *param_2)

{
  facet *this;
  void *pvVar1;
  int iVar2;
  undefined local_98 [12];
  _Lockit local_8c [4];
  _Locinfo local_88 [128];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x88;
  local_8 = 0xb1ba69;
  if (param_2 == DAT_032bc814) {
    FUN_00825ca0(&DAT_00d23f30);
    local_8 = 0;
    _Makeloc(local_88,0x3f,param_1,(locale *)0x0);
    local_8 = 0xffffffff;
    _Locinfo::~_Locinfo(local_88);
  }
  else {
    _Lockit::_Lockit(local_8c,0);
    local_8 = 1;
    if (*(int *)(param_1 + 0xc) != 0) {
      pvVar1 = __malloc_crt(*(int *)(param_1 + 0xc) << 2);
      *(void **)(param_1 + 8) = pvVar1;
      if (pvVar1 == (void *)0x0) {
        param_1 = (_Locimp *)&DAT_032edc74;
        if ((DAT_032edc80 & 1) == 0) {
          DAT_032edc80 = DAT_032edc80 | 1;
          bad_alloc::bad_alloc((bad_alloc *)&DAT_032edc74);
          _atexit((_func_4879 *)&LAB_00c7988e);
        }
        FUN_00401da3(&DAT_032edc74);
        __CxxThrowException_8(local_98,&DAT_031153a4);
      }
      iVar2 = *(int *)(param_1 + 0xc);
      while (iVar2 != 0) {
        iVar2 = iVar2 + -1;
        this = *(facet **)(*(int *)(param_2 + 8) + iVar2 * 4);
        *(facet **)(*(int *)(param_1 + 8) + iVar2 * 4) = this;
        if (this != (facet *)0x0) {
          facet::_Incref(this);
        }
      }
    }
    local_8 = 0xffffffff;
    FUN_00823810();
  }
  FUN_00a421fb();
  return;
}



// Library Function - Single Match
//  public: struct _Collvec __thiscall std::_Locinfo::_Getcoll(void)const 
// 
// Library: Visual Studio 2008 Release

_Collvec __thiscall std::_Locinfo::_Getcoll(_Locinfo *this)

{
  _Collvec _Var1;
  _Collvec *in_stack_00000004;
  
  _Var1 = __Getcoll();
  *in_stack_00000004 = _Var1;
  _Var1._Page = (uint)in_stack_00000004;
  return _Var1;
}



// Library Function - Multiple Matches With Same Base Name
//  unsigned short __cdecl std::_Maklocchr<unsigned short>(char,unsigned short *,struct _Cvtvec
// const &)
//  wchar_t __cdecl std::_Maklocchr<wchar_t>(char,wchar_t *,struct _Cvtvec const &)
// 
// Library: Visual Studio 2008 Release

uint _Maklocchr<>(undefined4 param_1,undefined4 param_2,_Cvtvec *param_3)

{
  mbstate_t local_c;
  uint local_8;
  
  local_8 = 0;
  local_c = 0;
  __Mbrtowc((wchar_t *)&local_8,(char *)&param_1,1,&local_c,param_3);
  return local_8 & 0xffff;
}



// Library Function - Multiple Matches With Same Base Name
//  unsigned short * __cdecl std::_Maklocstr<unsigned short>(char const *,unsigned short *,struct
// _Cvtvec const &)
//  wchar_t * __cdecl std::_Maklocstr<wchar_t>(char const *,wchar_t *,struct _Cvtvec const &)
// 
// Library: Visual Studio 2008 Release

wchar_t * _Maklocstr<>(char *param_1,undefined4 param_2,_Cvtvec *param_3)

{
  size_t sVar1;
  int iVar2;
  wchar_t *pwVar3;
  size_t sVar4;
  int iVar5;
  uint uVar6;
  mbstate_t local_14;
  mbstate_t local_10;
  wchar_t *local_c;
  wchar_t local_8 [2];
  
  iVar5 = 0;
  local_10 = 0;
  sVar1 = _strlen(param_1);
  sVar4 = sVar1 + 1;
  local_c = (wchar_t *)param_1;
  while ((sVar4 != 0 &&
         (iVar2 = __Mbrtowc(local_8,(char *)local_c,sVar4,&local_10,param_3), 0 < iVar2))) {
    local_c = (wchar_t *)((int)local_c + iVar2);
    sVar4 = sVar4 - iVar2;
    iVar5 = iVar5 + 1;
  }
  uVar6 = iVar5 + 1;
  pwVar3 = (wchar_t *)
           FUN_00823c23(-(uint)((int)((ulonglong)uVar6 * 2 >> 0x20) != 0) |
                        (uint)((ulonglong)uVar6 * 2));
  local_14 = 0;
  local_c = pwVar3;
  while ((uVar6 != 0 && (iVar5 = __Mbrtowc(pwVar3,param_1,sVar1 + 1,&local_14,param_3), 0 < iVar5)))
  {
    param_1 = param_1 + iVar5;
    uVar6 = uVar6 - 1;
    pwVar3 = pwVar3 + 1;
  }
  *pwVar3 = L'\0';
  return local_c;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: void __thiscall std::ctype<unsigned short>::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::ctype<wchar_t>::_Init(class std::_Locinfo const &)
// 
// Library: Visual Studio 2008 Release

void __thiscall Init(int param_1_00,_Locinfo *param_1)

{
  _Ctypevec *p_Var1;
  undefined4 *puVar2;
  undefined local_14 [16];
  
  p_Var1 = std::_Locinfo::_Getctype(param_1,(_Ctypevec *)local_14);
  *(uint *)(param_1_00 + 8) = p_Var1->_Page;
  *(short **)(param_1_00 + 0xc) = p_Var1->_Table;
  *(int *)(param_1_00 + 0x10) = p_Var1->_Delfl;
  *(wchar_t **)(param_1_00 + 0x14) = p_Var1->_LocaleName;
  puVar2 = (undefined4 *)FUN_004170cc(local_14 + 8);
  *(undefined4 *)(param_1_00 + 0x18) = *puVar2;
  *(undefined4 *)(param_1_00 + 0x1c) = puVar2[1];
  return;
}



void __fastcall FUN_00b1bcac(undefined4 *param_1)

{
  *param_1 = std::locale::facet::vftable;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: void __thiscall std::codecvt<unsigned short,char,int>::_Init(class std::_Locinfo
// const &)
//  protected: void __thiscall std::codecvt<wchar_t,char,int>::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::collate<char>::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::collate<unsigned short>::_Init(class std::_Locinfo const &)
//   17 names - too many to list
// 
// Library: Visual Studio 2008 Release

void __fastcall Init(int param_1)

{
  undefined4 *puVar1;
  int local_c;
  int iStack_8;
  
  local_c = param_1;
  iStack_8 = param_1;
  puVar1 = (undefined4 *)FUN_004170cc(&local_c);
  *(undefined4 *)(param_1 + 8) = *puVar1;
  *(undefined4 *)(param_1 + 0xc) = puVar1[1];
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  private: void __thiscall std::_Mpunct<char>::_Tidy(void)
//  private: void __thiscall std::_Mpunct<unsigned short>::_Tidy(void)
//  private: void __thiscall std::_Mpunct<wchar_t>::_Tidy(void)
// 
// Library: Visual Studio

void __fastcall Tidy(int param_1)

{
  FUN_00a3f66c(*(undefined4 *)(param_1 + 8));
  FUN_00a3f66c(*(undefined4 *)(param_1 + 0x10));
  FUN_00a3f66c(*(undefined4 *)(param_1 + 0x14));
  FUN_00a3f66c(*(undefined4 *)(param_1 + 0x18));
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  private: void __thiscall std::numpunct<char>::_Tidy(void)
//  private: void __thiscall std::numpunct<unsigned short>::_Tidy(void)
//  private: void __thiscall std::numpunct<wchar_t>::_Tidy(void)
// 
// Library: Visual Studio

void __fastcall Tidy(int param_1)

{
  FUN_00a3f66c(*(undefined4 *)(param_1 + 8));
  FUN_00a3f66c(*(undefined4 *)(param_1 + 0x10));
  FUN_00a3f66c(*(undefined4 *)(param_1 + 0x14));
  return;
}



void __fastcall FUN_00b1bd25(int param_1)

{
  FUN_00a3f66c(*(undefined4 *)(param_1 + 8));
  FUN_00a3f66c(*(undefined4 *)(param_1 + 0xc));
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::codecvt<unsigned short,char,int>::codecvt<unsigned short,char,int>(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::codecvt<wchar_t,char,int>::codecvt<wchar_t,char,int>(class std::_Locinfo
// const &,unsigned int)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall codecvt<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::codecvt<unsigned_short,char,int>::vftable;
  Init(param_1);
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual int __thiscall std::codecvt<unsigned short,char,int>::do_in(int &,char const
// *,char const *,char const * &,unsigned short *,unsigned short *,unsigned short * &)const 
//  protected: virtual int __thiscall std::codecvt<wchar_t,char,int>::do_in(int &,char const *,char
// const *,char const * &,wchar_t *,wchar_t *,wchar_t * &)const 
// 
// Library: Visual Studio 2008 Release

bool __thiscall
do_in(int param_1_00,mbstate_t *param_1,char *param_2,char *param_3,char **param_4,wchar_t *param_5,
     wchar_t *param_6,wchar_t **param_7)

{
  char *pcVar1;
  int iVar2;
  size_t sVar3;
  bool bVar4;
  
  *param_4 = param_2;
  *param_7 = param_5;
  pcVar1 = *param_4;
  bVar4 = pcVar1 != param_3;
  do {
    if (pcVar1 == param_3) {
      return bVar4;
    }
    if (*param_7 == param_6) {
      return bVar4;
    }
    iVar2 = __Mbrtowc(*param_7,*param_4,(int)param_3 - (int)*param_4,param_1,
                      (_Cvtvec *)(param_1_00 + 8));
    if (iVar2 == -2) {
      *param_4 = param_3;
      return bVar4;
    }
    if (iVar2 == -1) {
      return (bool)2;
    }
    if (iVar2 == 0) {
      if (**param_7 == L'\0') {
        sVar3 = _strlen(*param_4);
        iVar2 = sVar3 + 1;
        goto LAB_00b1bdd0;
      }
    }
    else {
LAB_00b1bdd0:
      if (iVar2 == -3) {
        iVar2 = 0;
      }
    }
    *param_4 = *param_4 + iVar2;
    *param_7 = *param_7 + 1;
    bVar4 = false;
    pcVar1 = *param_4;
  } while( true );
}



// Library Function - Single Match
//  protected: virtual int __thiscall std::codecvt<unsigned short,char,int>::do_out(int &,unsigned
// short const *,unsigned short const *,unsigned short const * &,char *,char *,char * &)const 
// 
// Library: Visual Studio 2008 Release

int __thiscall
std::codecvt<unsigned_short,char,int>::do_out
          (codecvt<unsigned_short,char,int> *this,int *param_1,ushort *param_2,ushort *param_3,
          ushort **param_4,char *param_5,char *param_6,char **param_7)

{
  ushort *puVar1;
  char *pcVar2;
  int iVar3;
  rsize_t _MaxCount;
  rsize_t _DstSize;
  char local_10 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  *param_4 = param_2;
  *param_7 = param_5;
  puVar1 = *param_4;
  do {
    if ((puVar1 == param_3) || (pcVar2 = *param_7, pcVar2 == param_6)) goto LAB_00b1beda;
    if ((int)param_6 - (int)pcVar2 < 5) {
      iVar3 = *param_1;
      _MaxCount = __Wcrtomb(local_10,**param_4,param_1,(_Cvtvec *)(this + 8));
      if ((int)_MaxCount < 0) goto LAB_00b1beda;
      _DstSize = (int)param_6 - (int)*param_7;
      if ((int)_DstSize < (int)_MaxCount) {
        *param_1 = iVar3;
LAB_00b1beda:
        iVar3 = ___security_check_cookie_4();
        return iVar3;
      }
      _memcpy_s(*param_7,_DstSize,local_10,_MaxCount);
      *param_4 = *param_4 + 1;
      *param_7 = *param_7 + _MaxCount;
    }
    else {
      iVar3 = __Wcrtomb(pcVar2,**param_4,param_1,(_Cvtvec *)(this + 8));
      if (iVar3 < 0) goto LAB_00b1beda;
      *param_4 = *param_4 + 1;
      *param_7 = *param_7 + iVar3;
    }
    puVar1 = *param_4;
  } while( true );
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual int __thiscall std::codecvt<unsigned short,char,int>::do_unshift(int &,char
// *,char *,char * &)const 
//  protected: virtual int __thiscall std::codecvt<wchar_t,char,int>::do_unshift(int &,char *,char
// *,char * &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_unshift(int param_1_00,mbstate_t *param_1,void *param_2,int param_3,void **param_4)

{
  int iVar1;
  rsize_t _DstSize;
  rsize_t _MaxCount;
  mbstate_t mVar2;
  undefined4 uVar3;
  char local_10 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  uVar3 = 0;
  *param_4 = param_2;
  mVar2 = *param_1;
  iVar1 = __Wcrtomb(local_10,L'\0',param_1,(_Cvtvec *)(param_1_00 + 8));
  if (iVar1 < 1) {
    uVar3 = 2;
  }
  else {
    _MaxCount = iVar1 - 1;
    _DstSize = param_3 - (int)*param_4;
    if ((int)_DstSize < (int)_MaxCount) {
      *param_1 = mVar2;
      uVar3 = 1;
    }
    else if (0 < (int)_MaxCount) {
      _memcpy_s(*param_4,_DstSize,local_10,_MaxCount);
      *param_4 = (void *)((int)*param_4 + _MaxCount);
    }
  }
  ___security_check_cookie_4(mVar2,param_3,uVar3);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual int __thiscall std::codecvt<unsigned short,char,int>::do_length(int const
// &,char const *,char const *,unsigned int)const 
//  protected: virtual int __thiscall std::codecvt<wchar_t,char,int>::do_length(int const &,char
// const *,char const *,unsigned int)const 
// 
// Library: Visual Studio 2008 Release

uint __thiscall
do_length(int param_1_00,mbstate_t *param_1,char *param_2,char *param_3,uint param_4)

{
  int iVar1;
  size_t sVar2;
  uint uVar3;
  char *_Str;
  mbstate_t local_8;
  
  local_8 = *param_1;
  uVar3 = 0;
  _Str = param_2;
  if (param_4 != 0) {
    while (_Str != param_3) {
      iVar1 = __Mbrtowc((wchar_t *)&param_1,_Str,(int)param_3 - (int)_Str,&local_8,
                        (_Cvtvec *)(param_1_00 + 8));
      if (iVar1 == -2) {
        return uVar3;
      }
      if (iVar1 == -1) {
        return uVar3;
      }
      if (iVar1 == 0) {
        if ((short)param_1 == 0) {
          sVar2 = _strlen(_Str);
          iVar1 = sVar2 + 1;
          goto LAB_00b1bfda;
        }
      }
      else {
LAB_00b1bfda:
        if (iVar1 == -3) {
          iVar1 = 0;
        }
      }
      _Str = _Str + iVar1;
      uVar3 = uVar3 + 1;
      if (param_4 <= uVar3) {
        return uVar3;
      }
    }
  }
  return uVar3;
}



undefined4 FUN_00b1bff2(void)

{
  return 5;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::ctype<unsigned short>::ctype<unsigned short>(class std::_Locinfo const
// &,unsigned int)
//  public: __thiscall std::ctype<wchar_t>::ctype<wchar_t>(class std::_Locinfo const &,unsigned int)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall ctype<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::ctype<unsigned_short>::vftable;
  Init(param_1);
  return param_1_00;
}



void __fastcall FUN_00b1c019(undefined4 *param_1)

{
  *param_1 = std::ctype<unsigned_short>::vftable;
  if (param_1[5] != 0) {
    _free((void *)param_1[4]);
  }
  *param_1 = std::locale::facet::vftable;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual bool __thiscall std::ctype<unsigned short>::do_is(short,unsigned short)const 
//  protected: virtual bool __thiscall std::ctype<wchar_t>::do_is(short,wchar_t)const 
// 
// Library: Visual Studio 2008 Release

bool __thiscall do_is(int param_1_00,ushort param_1,wchar_t param_2)

{
  ushort uVar1;
  
  uVar1 = __Getwctype(param_2,(_Ctypevec *)(param_1_00 + 8));
  return (param_1 & uVar1) != 0;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short const * __thiscall std::ctype<unsigned short>::do_is(unsigned
// short const *,unsigned short const *,short *)const 
//  protected: virtual wchar_t const * __thiscall std::ctype<wchar_t>::do_is(wchar_t const *,wchar_t
// const *,short *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall do_is(int param_1_00,wchar_t *param_1,wchar_t *param_2,short *param_3)

{
  __Getwctypes(param_1,param_2,param_3,(_Ctypevec *)(param_1_00 + 8));
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short const * __thiscall std::ctype<unsigned
// short>::do_scan_is(short,unsigned short const *,unsigned short const *)const 
//  protected: virtual wchar_t const * __thiscall std::ctype<wchar_t>::do_scan_is(short,wchar_t
// const *,wchar_t const *)const 
// 
// Library: Visual Studio 2008 Release

undefined2 * __thiscall
do_scan_is(int *param_1_00,undefined4 param_1,undefined2 *param_2,undefined2 *param_3)

{
  char cVar1;
  
  while( true ) {
    if (param_2 == param_3) {
      return param_2;
    }
    cVar1 = (**(code **)(*param_1_00 + 8))(param_1,*param_2);
    if (cVar1 != '\0') break;
    param_2 = param_2 + 1;
  }
  return param_2;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short const * __thiscall std::ctype<unsigned
// short>::do_scan_not(short,unsigned short const *,unsigned short const *)const 
//  protected: virtual wchar_t const * __thiscall std::ctype<wchar_t>::do_scan_not(short,wchar_t
// const *,wchar_t const *)const 
// 
// Library: Visual Studio 2008 Release

undefined2 * __thiscall
do_scan_not(int *param_1_00,undefined4 param_1,undefined2 *param_2,undefined2 *param_3)

{
  char cVar1;
  
  while( true ) {
    if (param_2 == param_3) {
      return param_2;
    }
    cVar1 = (**(code **)(*param_1_00 + 8))(param_1,*param_2);
    if (cVar1 == '\0') break;
    param_2 = param_2 + 1;
  }
  return param_2;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short __thiscall std::ctype<unsigned short>::do_tolower(unsigned
// short)const 
//  protected: virtual wchar_t __thiscall std::ctype<wchar_t>::do_tolower(wchar_t)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall do_tolower(int param_1_00,wchar_t param_1)

{
  __Towlower(param_1,(_Ctypevec *)(param_1_00 + 8));
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short const * __thiscall std::ctype<unsigned
// short>::do_tolower(unsigned short *,unsigned short const *)const 
//  protected: virtual wchar_t const * __thiscall std::ctype<wchar_t>::do_tolower(wchar_t *,wchar_t
// const *)const 
// 
// Library: Visual Studio 2008 Release

wchar_t * __thiscall do_tolower(int param_1_00,wchar_t *param_1,wchar_t *param_2)

{
  wchar_t wVar1;
  
  if (param_1 != param_2) {
    do {
      wVar1 = __Towlower(*param_1,(_Ctypevec *)(param_1_00 + 8));
      *param_1 = wVar1;
      param_1 = param_1 + 1;
    } while (param_1 != param_2);
  }
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short __thiscall std::ctype<unsigned short>::do_toupper(unsigned
// short)const 
//  protected: virtual wchar_t __thiscall std::ctype<wchar_t>::do_toupper(wchar_t)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall do_toupper(int param_1_00,wchar_t param_1)

{
  __Towupper(param_1,(_Ctypevec *)(param_1_00 + 8));
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short const * __thiscall std::ctype<unsigned
// short>::do_toupper(unsigned short *,unsigned short const *)const 
//  protected: virtual wchar_t const * __thiscall std::ctype<wchar_t>::do_toupper(wchar_t *,wchar_t
// const *)const 
// 
// Library: Visual Studio 2008 Release

wchar_t * __thiscall do_toupper(int param_1_00,wchar_t *param_1,wchar_t *param_2)

{
  wchar_t wVar1;
  
  if (param_1 != param_2) {
    do {
      wVar1 = __Towupper(*param_1,(_Ctypevec *)(param_1_00 + 8));
      *param_1 = wVar1;
      param_1 = param_1 + 1;
    } while (param_1 != param_2);
  }
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: unsigned short __thiscall std::ctype<unsigned short>::_Dowiden(char)const 
//  protected: wchar_t __thiscall std::ctype<wchar_t>::_Dowiden(char)const 
// 
// Library: Visual Studio 2008 Release

uint __fastcall Dowiden(uint param_1)

{
  int iVar1;
  uint uVar2;
  mbstate_t local_c;
  uint local_8;
  
  local_c = 0;
  local_8 = param_1;
  iVar1 = __Mbrtowc((wchar_t *)&local_8,&stack0x00000004,1,&local_c,(_Cvtvec *)(param_1 + 0x18));
  uVar2 = 0xffff;
  if (-1 < iVar1) {
    uVar2 = local_8 & 0xffff;
  }
  return uVar2;
}



void FUN_00b1c19c(void)

{
  Dowiden();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual char const * __thiscall std::ctype<unsigned short>::do_widen(char const
// *,char const *,unsigned short *)const 
//  protected: virtual char const * __thiscall std::ctype<wchar_t>::do_widen(char const *,char const
// *,wchar_t *)const 
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void __thiscall do_widen(int *param_1_00,int param_1,int param_2,undefined4 param_3)

{
  (**(code **)(*param_1_00 + 0x2c))(param_1,param_2,param_3,param_2 - param_1);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual char const * __thiscall std::ctype<unsigned short>::_Do_widen_s(char const
// *,char const *,unsigned short *,unsigned int)const 
//  protected: virtual char const * __thiscall std::ctype<wchar_t>::_Do_widen_s(char const *,char
// const *,wchar_t *,unsigned int)const 
// 
// Library: Visual Studio 2008 Release

undefined * Do_widen_s(undefined *param_1,undefined *param_2,undefined2 *param_3,uint param_4)

{
  undefined2 uVar1;
  
  if (param_4 < (uint)((int)param_2 - (int)param_1)) {
    FUN_00a3fb10();
  }
  if (param_1 != param_2) {
    do {
      uVar1 = Dowiden(*param_1);
      *param_3 = uVar1;
      param_1 = param_1 + 1;
      param_3 = param_3 + 1;
    } while (param_1 != param_2);
  }
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: char __thiscall std::ctype<unsigned short>::_Donarrow(unsigned short,char)const 
//  protected: char __thiscall std::ctype<wchar_t>::_Donarrow(wchar_t,char)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall Donarrow(int param_1_00,wchar_t param_1)

{
  mbstate_t local_14;
  char local_10 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_14 = 0;
  __Wcrtomb(local_10,param_1,&local_14,(_Cvtvec *)(param_1_00 + 0x18));
  ___security_check_cookie_4();
  return;
}



void FUN_00b1c250(void)

{
  Donarrow();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short const * __thiscall std::ctype<unsigned
// short>::do_narrow(unsigned short const *,unsigned short const *,char,char *)const 
//  protected: virtual wchar_t const * __thiscall std::ctype<wchar_t>::do_narrow(wchar_t const
// *,wchar_t const *,char,char *)const 
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

void __thiscall
do_narrow(int *param_1_00,int param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  (**(code **)(*param_1_00 + 0x38))(param_1,param_2,param_3,param_4,param_2 - param_1 >> 1);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual unsigned short const * __thiscall std::ctype<unsigned
// short>::_Do_narrow_s(unsigned short const *,unsigned short const *,char,char *,unsigned int)const
// 
//  protected: virtual wchar_t const * __thiscall std::ctype<wchar_t>::_Do_narrow_s(wchar_t const
// *,wchar_t const *,char,char *,unsigned int)const 
// 
// Library: Visual Studio 2008 Release

undefined2 *
Do_narrow_s(undefined2 *param_1,undefined2 *param_2,undefined4 param_3,undefined *param_4,
           uint param_5)

{
  undefined uVar1;
  
  if (param_5 < (uint)((int)param_2 - (int)param_1 >> 1)) {
    FUN_00a3fb10();
  }
  if (param_1 != param_2) {
    do {
      uVar1 = Donarrow(*param_1,param_3);
      param_1 = param_1 + 1;
      *param_4 = uVar1;
      param_4 = param_4 + 1;
    } while (param_1 != param_2);
  }
  return param_1;
}



undefined4 __thiscall FUN_00b1c2c5(undefined4 param_1_00,byte param_1)

{
  FUN_00b1c019();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::collate<unsigned short>::collate<unsigned short>(class std::_Locinfo
// const &,unsigned int)
//  public: __thiscall std::collate<wchar_t>::collate<wchar_t>(class std::_Locinfo const &,unsigned
// int)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall collate<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::collate<wchar_t>::vftable;
  Init(param_1);
  return param_1_00;
}



// Library Function - Single Match
//  protected: virtual int __thiscall std::collate<wchar_t>::do_compare(wchar_t const *,wchar_t
// const *,wchar_t const *,wchar_t const *)const 
// 
// Library: Visual Studio 2008 Release

int __thiscall
std::collate<wchar_t>::do_compare
          (collate<wchar_t> *this,wchar_t *param_1,wchar_t *param_2,wchar_t *param_3,
          wchar_t *param_4)

{
  int iVar1;
  
  iVar1 = __Wcscoll(param_1,param_2,param_3,param_4,(_Collvec *)(this + 8));
  return iVar1;
}



// Library Function - Multiple Matches With Different Base Names
//  public: __thiscall std::money_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::money_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
//   8 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
          (undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::
                money_get<wchar_t,class_std::istreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                ::vftable;
  Init(param_1);
  return param_1_00;
}



// Library Function - Multiple Matches With Different Base Names
//  public: __thiscall std::money_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::money_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
//   8 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
          (undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::
                money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                ::vftable;
  Init(param_1);
  return param_1_00;
}



void __fastcall FUN_00b1c370(undefined4 *param_1)

{
  *param_1 = std::_Mpunct<wchar_t>::vftable;
  Tidy();
  *param_1 = std::locale::facet::vftable;
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  public: __thiscall std::money_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::money_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
//   8 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
          (undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::
                num_get<unsigned_short,class_std::istreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>
                ::vftable;
  Init(param_1);
  return param_1_00;
}



undefined4 FUN_00b1c3ab(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_004010a5(param_1,param_2,param_3,param_4);
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned short * __cdecl std::char_traits<unsigned short>::assign(unsigned short
// *,unsigned int,unsigned short)
//  public: static wchar_t * __cdecl std::char_traits<wchar_t>::assign(wchar_t *,unsigned
// int,wchar_t)
// 
// Library: Visual Studio 2008 Release

void assign(undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  FUN_004128c4(param_1,param_3,param_2);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  char __cdecl std::_Maklocbyte<unsigned short>(unsigned short,struct _Cvtvec const &)
//  char __cdecl std::_Maklocbyte<wchar_t>(wchar_t,struct _Cvtvec const &)
// 
// Library: Visual Studio 2008 Release

undefined __thiscall _Maklocbyte<>(uint3 param_1_00,wchar_t param_1,_Cvtvec *param_2)

{
  mbstate_t local_c;
  undefined4 uStack_8;
  
  local_c = 0;
  uStack_8 = (uint)param_1_00;
  __Wcrtomb((char *)((int)&uStack_8 + 3),param_1,&local_c,param_2);
  return uStack_8._3_1_;
}



// Library Function - Multiple Matches With Same Base Name
//  unsigned short * __cdecl std::_Allocate<unsigned short>(unsigned int,unsigned short *)
//  wchar_t * __cdecl std::_Allocate<wchar_t>(unsigned int,wchar_t *)
// 
// Library: Visual Studio 2008 Release

void _Allocate<>(uint param_1)

{
  code *pcVar1;
  undefined local_10 [12];
  
  if (param_1 == 0) {
    param_1 = 0;
  }
  else if ((uint)(0xffffffff / (ulonglong)param_1) < 2) {
    FUN_00401046(0);
    __CxxThrowException_8(local_10,&DAT_031153a4);
    pcVar1 = (code *)swi(3);
    (*pcVar1)();
    return;
  }
  operator_new(param_1 * 2);
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  unsigned short * __cdecl std::_Traits_helper::copy_s<struct std::char_traits<unsigned short>
// >(unsigned short *,unsigned int,unsigned short const *,unsigned int,struct
// std::_Secure_char_traits_tag)
//  wchar_t * __cdecl std::_Traits_helper::copy_s<struct std::char_traits<wchar_t> >(wchar_t
// *,unsigned int,wchar_t const *,unsigned int,struct std::_Secure_char_traits_tag)
//  char * __cdecl std::_Traits_helper::move_s<struct std::char_traits<char> >(char *,unsigned
// int,char const *,unsigned int,struct std::_Secure_char_traits_tag)
//  unsigned short * __cdecl std::_Traits_helper::move_s<struct std::char_traits<unsigned short>
// >(unsigned short *,unsigned int,unsigned short const *,unsigned int,struct
// std::_Secure_char_traits_tag)
//   5 names - too many to list
// 
// Library: Visual Studio 2008 Release

void FID_conflict_copy_s<struct_std::char_traits<wchar_t>_>
               (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00b1c3ab(param_1,param_2,param_3,param_4);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: unsigned short __thiscall std::basic_streambuf<unsigned short,struct
// std::char_traits<unsigned short> >::sgetc(void)
//  public: unsigned short __thiscall std::basic_streambuf<wchar_t,struct std::char_traits<wchar_t>
// >::sgetc(void)
// 
// Library: Visual Studio 2008 Release

undefined2 __fastcall sgetc(int *param_1)

{
  undefined2 uVar1;
  int iVar2;
  
  if (*(int *)param_1[8] == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = *(int *)param_1[0xc];
  }
  if (0 < iVar2) {
    return **(undefined2 **)(int *)param_1[8];
  }
  uVar1 = (**(code **)(*param_1 + 0x10))();
  return uVar1;
}



// Library Function - Multiple Matches With Different Base Names
//  public: __thiscall std::money_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::money_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
//   8 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
          (undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::
                num_put<unsigned_short,class_std::ostreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>
                ::vftable;
  Init(param_1);
  return param_1_00;
}



undefined4 FUN_00b1c4af(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_004180e3(param_1,param_2,param_3,param_4);
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  private: char * __cdecl std::num_put<char,class std::ostreambuf_iterator<char,struct
// std::char_traits<char> > >::_Ffmt(char *,char,int)const 
//  private: char * __cdecl std::num_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Ffmt(char *,char,int)const 
//  private: char * __cdecl std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Ffmt(char *,char,int)const 
// 
// Library: Visual Studio 2008 Release

void Ffmt(undefined4 param_1,undefined *param_2,char param_3,uint param_4)

{
  undefined *puVar1;
  char *pcVar2;
  char cVar3;
  
  *param_2 = 0x25;
  puVar1 = param_2 + 1;
  if ((param_4 & 0x20) != 0) {
    *puVar1 = 0x2b;
    puVar1 = param_2 + 2;
  }
  if ((param_4 & 0x10) != 0) {
    *puVar1 = 0x23;
    puVar1 = puVar1 + 1;
  }
  *puVar1 = 0x2e;
  puVar1[1] = 0x2a;
  pcVar2 = puVar1 + 2;
  if (param_3 != '\0') {
    *pcVar2 = param_3;
    pcVar2 = puVar1 + 3;
  }
  param_4 = param_4 & 0x3000;
  if (param_4 == 0x2000) {
    cVar3 = 'f';
  }
  else if (param_4 == 0x3000) {
    cVar3 = 'a';
  }
  else {
    cVar3 = (param_4 != 0x1000) * '\x02' + 'e';
  }
  *pcVar2 = cVar3;
  pcVar2[1] = '\0';
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  private: char * __cdecl std::num_put<char,class std::ostreambuf_iterator<char,struct
// std::char_traits<char> > >::_Ifmt(char *,char const *,int)const 
//  private: char * __cdecl std::num_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Ifmt(char *,char const *,int)const 
//  private: char * __cdecl std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Ifmt(char *,char const *,int)const 
// 
// Library: Visual Studio 2008 Release

void Ifmt(undefined4 param_1,undefined *param_2,char *param_3,uint param_4)

{
  char *pcVar1;
  byte bVar2;
  
  *param_2 = 0x25;
  pcVar1 = param_2 + 1;
  if ((param_4 & 0x20) != 0) {
    *pcVar1 = '+';
    pcVar1 = param_2 + 2;
  }
  if ((param_4 & 8) != 0) {
    *pcVar1 = '#';
    pcVar1 = pcVar1 + 1;
  }
  if (*param_3 == 'L') {
    *pcVar1 = 'I';
    pcVar1[1] = '6';
    pcVar1 = pcVar1 + 2;
    *pcVar1 = '4';
  }
  else {
    *pcVar1 = *param_3;
  }
  if ((param_4 & 0xe00) == 0x400) {
    bVar2 = 0x6f;
  }
  else if ((param_4 & 0xe00) == 0x800) {
    bVar2 = ~((char)param_4 << 3) & 0x20U | 0x58;
  }
  else {
    bVar2 = param_3[1];
  }
  pcVar1[1] = bVar2;
  pcVar1[2] = '\0';
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  unsigned short * __cdecl std::_Traits_helper::copy_s<struct std::char_traits<unsigned short>
// >(unsigned short *,unsigned int,unsigned short const *,unsigned int,struct
// std::_Secure_char_traits_tag)
//  wchar_t * __cdecl std::_Traits_helper::copy_s<struct std::char_traits<wchar_t> >(wchar_t
// *,unsigned int,wchar_t const *,unsigned int,struct std::_Secure_char_traits_tag)
//  char * __cdecl std::_Traits_helper::move_s<struct std::char_traits<char> >(char *,unsigned
// int,char const *,unsigned int,struct std::_Secure_char_traits_tag)
//  unsigned short * __cdecl std::_Traits_helper::move_s<struct std::char_traits<unsigned short>
// >(unsigned short *,unsigned int,unsigned short const *,unsigned int,struct
// std::_Secure_char_traits_tag)
//   5 names - too many to list
// 
// Library: Visual Studio 2008 Release

void FID_conflict_copy_s<struct_std::char_traits<wchar_t>_>
               (undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  FUN_00b1c4af(param_1,param_2,param_3,param_4);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::collate<unsigned short>::collate<unsigned short>(class std::_Locinfo
// const &,unsigned int)
//  public: __thiscall std::collate<wchar_t>::collate<wchar_t>(class std::_Locinfo const &,unsigned
// int)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall collate<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::collate<unsigned_short>::vftable;
  Init(param_1);
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual long __thiscall std::collate<unsigned short>::do_hash(unsigned short const
// *,unsigned short const *)const 
//  protected: virtual long __thiscall std::collate<wchar_t>::do_hash(wchar_t const *,wchar_t const
// *)const 
// 
// Library: Visual Studio 2008 Release

uint do_hash(ushort *param_1,ushort *param_2)

{
  uint uVar1;
  
  uVar1 = 0;
  for (; param_1 != param_2; param_1 = param_1 + 1) {
    uVar1 = (uVar1 << 8 | uVar1 >> 0x18) + (uint)*param_1;
  }
  return uVar1;
}



// Library Function - Single Match
//  public: unsigned short const & __thiscall std::_String_const_iterator<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::operator*(void)const 
// 
// Library: Visual Studio 2008 Release

ushort * __thiscall
std::
_String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
::operator*(_String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
            *this)

{
  int iVar1;
  int iVar2;
  
  if (*(int *)this != -4) {
    if (*(int *)this == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *(int *)this;
    if (*(uint *)(iVar1 + 0x18) < 8) {
      iVar2 = iVar1 + 4;
    }
    else {
      iVar2 = *(int *)(iVar1 + 4);
    }
    if ((uint)(iVar2 + *(int *)(iVar1 + 0x14) * 2) <= *(uint *)(this + 4)) {
      FUN_00a3fb10();
    }
  }
  return *(ushort **)(this + 4);
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::_String_const_iterator<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::_String_const_iterator<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >(unsigned short const
// *,class std::_Container_base_secure const *)
//  public: __thiscall std::_String_const_iterator<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::_String_const_iterator<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >(wchar_t const *,class std::_Container_base_secure const *)
// 
// Library: Visual Studio 2008 Release

int * __thiscall _String_const_iterator<>(int *param_1_00,undefined4 *param_1,int param_2)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  
  *param_1_00 = 0;
  if ((param_2 != 0) && (param_1 != (undefined4 *)0x0)) {
    puVar1 = (undefined4 *)(param_2 + 4);
    puVar2 = puVar1;
    if (7 < *(uint *)(param_2 + 0x18)) {
      puVar2 = (undefined4 *)*puVar1;
    }
    if (puVar2 <= param_1) {
      if (7 < *(uint *)(param_2 + 0x18)) {
        puVar1 = (undefined4 *)*puVar1;
      }
      if (param_1 <= (undefined4 *)((int)puVar1 + *(int *)(param_2 + 0x14) * 2)) goto LAB_00b1c688;
    }
  }
  FUN_00a3fb10();
LAB_00b1c688:
  *param_1_00 = param_2;
  param_1_00[1] = (int)param_1;
  return param_1_00;
}



// Library Function - Single Match
//  int __cdecl std::_LStrcoll<unsigned short>(unsigned short const *,unsigned short const
// *,unsigned short const *,unsigned short const *,struct _Collvec const *)
// 
// Library: Visual Studio 2008 Release

int __cdecl
std::_LStrcoll<unsigned_short>
          (ushort *param_1,ushort *param_2,ushort *param_3,ushort *param_4,_Collvec *param_5)

{
  ushort uVar1;
  ushort uVar2;
  uint uVar3;
  
  for (; param_1 != param_2; param_1 = param_1 + 1) {
    if (param_3 == param_4) goto LAB_00b1c6c4;
    uVar1 = *param_1;
    uVar2 = *param_3;
    if (uVar2 >= uVar1 && uVar2 != uVar1) goto LAB_00b1c6cf;
    if (uVar2 < uVar1) {
      return 1;
    }
    param_3 = param_3 + 1;
  }
  if (param_3 == param_4) {
LAB_00b1c6c4:
    uVar3 = (uint)(param_1 != param_2);
  }
  else {
LAB_00b1c6cf:
    uVar3 = 0xffffffff;
  }
  return uVar3;
}



// Library Function - Single Match
//  unsigned int __cdecl std::_LStrxfrm<unsigned short>(unsigned short *,unsigned short *,unsigned
// short const *,unsigned short const *,struct _Collvec const *)
// 
// Libraries: Visual Studio 2005 Release, Visual Studio 2008 Release

uint __cdecl
std::_LStrxfrm<unsigned_short>
          (ushort *param_1,ushort *param_2,ushort *param_3,ushort *param_4,_Collvec *param_5)

{
  uint uVar1;
  uint uVar2;
  
  uVar1 = (int)param_2 - (int)param_1 >> 1;
  uVar2 = (int)param_4 - (int)param_3 >> 1;
  if (uVar2 <= uVar1) {
    _memcpy_s(param_1,uVar1 * 2,param_3,uVar2 * 2);
  }
  return uVar2;
}



// Library Function - Single Match
//  protected: virtual int __thiscall std::collate<unsigned short>::do_compare(unsigned short const
// *,unsigned short const *,unsigned short const *,unsigned short const *)const 
// 
// Library: Visual Studio 2008 Release

int __thiscall
std::collate<unsigned_short>::do_compare
          (collate<unsigned_short> *this,ushort *param_1,ushort *param_2,ushort *param_3,
          ushort *param_4)

{
  int iVar1;
  
  iVar1 = _LStrcoll<unsigned_short>(param_1,param_2,param_3,param_4,(_Collvec *)(this + 8));
  return iVar1;
}



// Library Function - Multiple Matches With Different Base Names
//  public: __thiscall std::money_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::money_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
//   8 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
          (undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::
                money_get<unsigned_short,class_std::istreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>
                ::vftable;
  Init(param_1);
  return param_1_00;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::_String_const_iterator<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> > & __thiscall std::_String_const_iterator<unsigned
// short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short>
// >::operator++(void)
//  public: class std::_String_const_iterator<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::_String_const_iterator<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::operator++(void)
// 
// Library: Visual Studio 2008 Release

int * __fastcall FID_conflict_operator__(int *param_1)

{
  int iVar1;
  int iVar2;
  
  if (*param_1 != -4) {
    if (*param_1 == 0) {
      FUN_00a3fb10();
    }
    iVar1 = *param_1;
    if (*(uint *)(iVar1 + 0x18) < 8) {
      iVar2 = iVar1 + 4;
    }
    else {
      iVar2 = *(int *)(iVar1 + 4);
    }
    if ((uint)(iVar2 + *(int *)(iVar1 + 0x14) * 2) <= (uint)param_1[1]) {
      FUN_00a3fb10();
    }
  }
  param_1[1] = param_1[1] + 2;
  return param_1;
}



// Library Function - Multiple Matches With Different Base Names
//  public: bool __thiscall std::_String_const_iterator<char,struct std::char_traits<char>,class
// std::allocator<char> >::operator==(class std::_String_const_iterator<char,struct
// std::char_traits<char>,class std::allocator<char> > const &)const 
//  public: bool __thiscall std::_String_const_iterator<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::operator==(class
// std::_String_const_iterator<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > const &)const 
//  public: bool __thiscall std::_String_const_iterator<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::operator==(class
// std::_String_const_iterator<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > const &)const 
// 
// Library: Visual Studio 2008 Release

bool __thiscall FID_conflict_operator__(int *param_1_00,int *param_1)

{
  int iVar1;
  
  iVar1 = *param_1_00;
  if ((iVar1 != -4) && ((iVar1 == 0 || (iVar1 != *param_1)))) {
    FUN_00a3fb10();
  }
  return param_1_00[1] == param_1[1];
}



// Library Function - Multiple Matches With Different Base Names
//  public: __thiscall std::money_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::money_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
//   8 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
          (undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::
                money_put<unsigned_short,class_std::ostreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>
                ::vftable;
  Init(param_1);
  return param_1_00;
}



// Library Function - Multiple Matches With Different Base Names
//  protected: bool __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::_Inside(unsigned short const *)
//  protected: bool __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::_Inside(wchar_t const *)
// 
// Library: Visual Studio 2008 Release

uint __thiscall FID_conflict__Inside(int param_1_00,undefined4 *param_1)

{
  undefined4 *in_EAX;
  undefined4 *puVar1;
  
  if (param_1 != (undefined4 *)0x0) {
    in_EAX = (undefined4 *)(param_1_00 + 4);
    puVar1 = in_EAX;
    if (7 < *(uint *)(param_1_00 + 0x18)) {
      puVar1 = (undefined4 *)*in_EAX;
    }
    if (puVar1 <= param_1) {
      if (7 < *(uint *)(param_1_00 + 0x18)) {
        in_EAX = (undefined4 *)*in_EAX;
      }
      in_EAX = (undefined4 *)((int)in_EAX + *(int *)(param_1_00 + 0x14) * 2);
      if (param_1 < in_EAX) {
        return CONCAT31((int3)((uint)in_EAX >> 8),1);
      }
    }
  }
  return (uint)in_EAX & 0xffffff00;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::_String_const_iterator<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> > & __thiscall std::_String_const_iterator<unsigned
// short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short>
// >::operator+=(int)
//  public: class std::_String_const_iterator<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::_String_const_iterator<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::operator+=(int)
// 
// Library: Visual Studio 2008 Release

int * __thiscall FID_conflict_operator__(int *param_1_00,int param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  
  if (*param_1_00 != -4) {
    if (*param_1_00 == 0) {
      FUN_00a3fb10();
    }
    iVar2 = *param_1_00;
    if (*(uint *)(iVar2 + 0x18) < 8) {
      iVar4 = iVar2 + 4;
    }
    else {
      iVar4 = *(int *)(iVar2 + 4);
    }
    uVar1 = param_1_00[1] + param_1 * 2;
    if (uVar1 <= (uint)(iVar4 + *(int *)(iVar2 + 0x14) * 2)) {
      if (*(uint *)(iVar2 + 0x18) < 8) {
        uVar3 = iVar2 + 4;
      }
      else {
        uVar3 = *(uint *)(iVar2 + 4);
      }
      if (uVar3 <= uVar1) goto LAB_00b1c876;
    }
    FUN_00a3fb10();
  }
LAB_00b1c876:
  param_1_00[1] = param_1_00[1] + param_1 * 2;
  return param_1_00;
}



void __fastcall FUN_00b1c884(undefined4 *param_1)

{
  *param_1 = std::_Mpunct<unsigned_short>::vftable;
  Tidy();
  *param_1 = std::locale::facet::vftable;
  return;
}



undefined4 __fastcall FUN_00b1c89c(int param_1)

{
  return *(undefined4 *)(param_1 + 0x1c);
}



void __thiscall FUN_00b1c8a0(int param_1_00,undefined4 *param_1)

{
  *param_1 = *(undefined4 *)(param_1_00 + 0x24);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::time_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::time_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::time_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::time_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall time_put<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::
                time_put<unsigned_short,class_std::ostreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>
                ::vftable;
  param_1_00[2] = 0;
  Init(param_1);
  return param_1_00;
}



void __fastcall FUN_00b1c8d8(undefined4 *param_1)

{
  *param_1 = std::
             time_put<unsigned_short,class_std::ostreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>
             ::vftable;
  _free((void *)param_1[2]);
  *param_1 = std::locale::facet::vftable;
  return;
}



undefined4 __thiscall FUN_00b1c8f4(undefined4 param_1_00,byte param_1)

{
  FUN_00b1c8d8();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00b1c915(undefined4 param_1_00,byte param_1)

{
  FUN_00b1c370();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00b1c936(undefined4 param_1_00,byte param_1)

{
  FUN_00b1c884();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: unsigned short __thiscall std::basic_streambuf<unsigned short,struct
// std::char_traits<unsigned short> >::sputc(unsigned short)
//  public: unsigned short __thiscall std::basic_streambuf<wchar_t,struct std::char_traits<wchar_t>
// >::sputc(wchar_t)
// 
// Library: Visual Studio 2008 Release

uint __thiscall sputc(int *param_1_00,uint param_1)

{
  undefined2 *puVar1;
  int iVar2;
  
  if (*(int *)param_1_00[9] == 0) {
    iVar2 = 0;
  }
  else {
    iVar2 = *(int *)param_1_00[0xd];
  }
  if (iVar2 < 1) {
    param_1 = (**(code **)(*param_1_00 + 4))(param_1);
  }
  else {
    *(int *)param_1_00[0xd] = *(int *)param_1_00[0xd] + -1;
    puVar1 = *(undefined2 **)(int *)param_1_00[9];
    *(int *)param_1_00[9] = (int)(puVar1 + 1);
    *puVar1 = (short)param_1;
  }
  return param_1 & 0xffff;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// & __thiscall std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short>
// >::operator=(unsigned short)
//  public: class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > & __thiscall
// std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >::operator=(wchar_t)
// 
// Library: Visual Studio 2008 Release

undefined * __thiscall FID_conflict_operator_(undefined *param_1_00,undefined4 param_1)

{
  short sVar1;
  
  if ((*(int *)(param_1_00 + 4) != 0) && (sVar1 = sputc(param_1), sVar1 != -1)) {
    return param_1_00;
  }
  *param_1_00 = 1;
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  private: class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __cdecl std::num_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::_Put(class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,unsigned short const *,unsigned int)const 
//  private: class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > __cdecl
// std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// >::_Put(class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >,wchar_t const
// *,unsigned int)const 
// 
// Library: Visual Studio 2008 Release

void Put(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4,
        undefined2 *param_5,int param_6)

{
  if (param_6 != 0) {
    do {
      FID_conflict_operator_(*param_5);
      param_6 = param_6 + -1;
      param_5 = param_5 + 1;
    } while (param_6 != 0);
  }
  *param_2 = param_3;
  param_2[1] = param_4;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  private: class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __cdecl std::num_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::_Rep(class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,unsigned short,unsigned int)const 
//  private: class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > __cdecl
// std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// >::_Rep(class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t>
// >,wchar_t,unsigned int)const 
// 
// Library: Visual Studio 2008 Release

void Rep(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4,
        undefined4 param_5,int param_6)

{
  if (param_6 != 0) {
    do {
      FID_conflict_operator_(param_5);
      param_6 = param_6 + -1;
    } while (param_6 != 0);
  }
  *param_2 = param_3;
  param_2[1] = param_4;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  protected: void __thiscall std::numpunct<unsigned short>::_Init(class std::_Locinfo const
// &,bool)
//  protected: void __thiscall std::numpunct<wchar_t>::_Init(class std::_Locinfo const &,bool)
// 
// Library: Visual Studio 2008 Release

void __thiscall Init(int param_1_00,undefined4 param_1,char param_2)

{
  undefined2 uVar1;
  lconv *plVar2;
  undefined4 uVar3;
  undefined local_24 [8];
  undefined local_1c [4];
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1ca30;
  local_18 = param_1_00;
  plVar2 = _localeconv();
  *(undefined4 *)(param_1_00 + 8) = 0;
  *(undefined4 *)(param_1_00 + 0x10) = 0;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  local_8 = 0;
  uVar3 = FUN_004170cc(local_24);
  uVar3 = FUN_0041709c(plVar2->grouping,0,uVar3);
  *(undefined4 *)(param_1_00 + 8) = uVar3;
  uVar3 = FUN_004170cc(local_24);
  uVar3 = _Maklocstr<>("false",0,uVar3);
  *(undefined4 *)(param_1_00 + 0x10) = uVar3;
  uVar3 = FUN_004170cc(local_24);
  uVar3 = _Maklocstr<>(&DAT_00fad868,0,uVar3);
  local_8 = 0xffffffff;
  *(undefined4 *)(param_1_00 + 0x14) = uVar3;
  uVar3 = FUN_004170cc(local_24);
  uVar1 = _Maklocchr<>(*plVar2->decimal_point,0,uVar3);
  *(undefined2 *)(param_1_00 + 0xc) = uVar1;
  uVar3 = FUN_004170cc(local_24);
  uVar1 = _Maklocchr<>(*plVar2->thousands_sep,0,uVar3);
  *(undefined2 *)(param_1_00 + 0xe) = uVar1;
  if (param_2 != '\0') {
    uVar3 = FUN_004170cc(local_24);
    uVar3 = FUN_0041709c(&PTR_02bd3fc0,0,uVar3);
    *(undefined4 *)(param_1_00 + 8) = uVar3;
    uVar3 = FUN_004170cc(local_24);
    uVar1 = _Maklocchr<>(0x2e,0,uVar3);
    *(undefined2 *)(param_1_00 + 0xc) = uVar1;
    uVar3 = FUN_004170cc(local_1c);
    uVar1 = _Maklocchr<>(0x2c,0,uVar3);
    *(undefined2 *)(param_1_00 + 0xe) = uVar1;
  }
  return;
}



void Catch_All_00b1cb4a(void)

{
  code *pcVar1;
  
  Tidy();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  public: unsigned short & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::operator[](unsigned int)
//  public: wchar_t & __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::operator[](unsigned int)
// 
// Library: Visual Studio 2008 Release

int __thiscall FID_conflict_operator__(int param_1_00,uint param_1)

{
  if (*(uint *)(param_1_00 + 0x14) < param_1) {
    FUN_00a3fb10();
  }
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    param_1_00 = param_1_00 + 4;
  }
  else {
    param_1_00 = *(int *)(param_1_00 + 4);
  }
  return param_1_00 + param_1 * 2;
}



// Library Function - Multiple Matches With Same Base Name
//  private: static class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> > __cdecl std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Put(class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> >,class std::_String_const_iterator<unsigned
// short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >,unsigned
// int)
//  private: static class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __cdecl std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::_String_const_iterator<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >,unsigned int)
// 
// Library: Visual Studio 2008 Release

void Put(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
        undefined4 param_5,int param_6)

{
  wchar_t *pwVar1;
  
  while (param_6 != 0) {
    pwVar1 = std::
             _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                          *)&param_4);
    FUN_0041767b(*pwVar1);
    param_6 = param_6 + -1;
    FUN_00847800();
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  private: static class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> > __cdecl std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Rep(class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> >,unsigned short,unsigned int)
//  private: static class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __cdecl std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Rep(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,wchar_t,unsigned int)
// 
// Library: Visual Studio 2008 Release

void Rep(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5)

{
  if (param_5 != 0) {
    do {
      FUN_0041767b(param_4);
      param_5 = param_5 + -1;
    } while (param_5 != 0);
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  protected: void __thiscall std::_Mpunct<unsigned short>::_Init(class std::_Locinfo const &,bool)
//  protected: void __thiscall std::_Mpunct<wchar_t>::_Init(class std::_Locinfo const &,bool)
// 
// Library: Visual Studio 2008 Release

void __thiscall Init(int param_1_00,undefined4 param_1,char param_2)

{
  undefined4 *puVar1;
  char cVar2;
  undefined2 uVar3;
  undefined4 *puVar4;
  lconv *plVar5;
  undefined4 uVar6;
  undefined **ppuVar7;
  char *pcVar8;
  undefined local_20 [8];
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  int iVar9;
  
  uStack_4 = 0x10;
  local_8 = 0xb1cbfc;
  local_18 = param_1_00;
  puVar4 = (undefined4 *)FUN_004170cc(local_20);
  puVar1 = (undefined4 *)(param_1_00 + 0x2c);
  *puVar1 = *puVar4;
  *(undefined4 *)(param_1_00 + 0x30) = puVar4[1];
  plVar5 = _localeconv();
  *(undefined4 *)(param_1_00 + 8) = 0;
  *(undefined4 *)(param_1_00 + 0x10) = 0;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined4 *)(param_1_00 + 0x18) = 0;
  local_8 = 0;
  uVar6 = FUN_0041709c(plVar5->mon_grouping,0,puVar1);
  *(undefined4 *)(param_1_00 + 8) = uVar6;
  if (*(char *)(param_1_00 + 0x28) == '\0') {
    pcVar8 = plVar5->currency_symbol;
  }
  else {
    pcVar8 = plVar5->int_curr_symbol;
  }
  uVar6 = FUN_00416fd9(pcVar8,0,puVar1);
  *(undefined4 *)(param_1_00 + 0x10) = uVar6;
  ppuVar7 = &PTR_02bd3fc0;
  if ((byte)plVar5->p_sign_posn < 5) {
    ppuVar7 = (undefined **)plVar5->positive_sign;
  }
  uVar6 = FUN_00416fd9(ppuVar7,0,puVar1);
  *(undefined4 *)(param_1_00 + 0x14) = uVar6;
  pcVar8 = "-";
  if ((byte)plVar5->n_sign_posn < 5) {
    pcVar8 = plVar5->negative_sign;
  }
  uVar6 = FUN_00416fd9(pcVar8,0,puVar1);
  *(undefined4 *)(param_1_00 + 0x18) = uVar6;
  uVar3 = _Maklocchr<>(*plVar5->mon_decimal_point,0,puVar1);
  *(undefined2 *)(param_1_00 + 0xc) = uVar3;
  uVar3 = _Maklocchr<>(*plVar5->mon_thousands_sep,0,puVar1);
  *(undefined2 *)(param_1_00 + 0xe) = uVar3;
  if (*(char *)(param_1_00 + 0x28) == '\0') {
    cVar2 = plVar5->frac_digits;
  }
  else {
    cVar2 = plVar5->int_frac_digits;
  }
  iVar9 = (int)cVar2;
  *(int *)(param_1_00 + 0x1c) = iVar9;
  if ((iVar9 < 0) || (0x7e < iVar9)) {
    *(undefined4 *)(param_1_00 + 0x1c) = 0;
  }
  Makpat((void *)(param_1_00 + 0x20),(int)plVar5->p_sep_by_space,(int)plVar5->p_cs_precedes,
         (int)plVar5->p_sign_posn);
  Makpat((void *)(param_1_00 + 0x24),(int)plVar5->n_sep_by_space,(int)plVar5->n_cs_precedes,
         (int)plVar5->n_sign_posn);
  if (param_2 != '\0') {
    _memcpy((void *)(param_1_00 + 0x20),&DAT_00dcdb38,4);
    _memcpy((void *)(param_1_00 + 0x24),&DAT_00dcdb38,4);
  }
  return;
}



void Catch_All_00b1cd44(void)

{
  code *pcVar1;
  
  Tidy();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  private: class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __cdecl std::num_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::_Putc(class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,char const *,unsigned int)const 
//  private: class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > __cdecl
// std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// >::_Putc(class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >,char const
// *,unsigned int)const 
// 
// Library: Visual Studio 2008 Release

void Putc(int param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4,undefined *param_5,
         int param_6)

{
  undefined2 uVar1;
  
  if (param_6 != 0) {
    do {
      uVar1 = _Maklocchr<>(*param_5,0,param_1 + 8);
      FID_conflict_operator_(uVar1);
      param_6 = param_6 + -1;
      param_5 = param_5 + 1;
    } while (param_6 != 0);
  }
  *param_2 = param_3;
  param_2[1] = param_4;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  private: class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __cdecl std::num_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::_Putgrouped(class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> >,char const *,unsigned int,unsigned short)const 
//  private: class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > __cdecl
// std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// >::_Putgrouped(class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >,char
// const *,unsigned int,wchar_t)const 
// 
// Library: Visual Studio 2008 Release

undefined4 *
Putgrouped(undefined4 param_1,undefined4 *param_2,undefined4 param_3,undefined4 param_4,
          void *param_5,size_t param_6,undefined4 param_7)

{
  undefined4 uVar1;
  void *pvVar2;
  undefined4 *puVar3;
  size_t sVar4;
  undefined local_14 [8];
  undefined local_c [8];
  
  while( true ) {
    pvVar2 = _memchr(param_5,0,param_6);
    sVar4 = param_6;
    if (pvVar2 != (void *)0x0) {
      sVar4 = (int)pvVar2 - (int)param_5;
    }
    puVar3 = (undefined4 *)Putc(param_1,local_c,param_3,param_4,param_5,sVar4);
    param_3 = *puVar3;
    param_4 = puVar3[1];
    if (param_6 - sVar4 == 0) break;
    if ((short)param_7 != 0) {
      puVar3 = (undefined4 *)Rep(param_1,local_14,*puVar3,puVar3[1],param_7,1);
      param_3 = *puVar3;
      param_4 = puVar3[1];
    }
    param_5 = (void *)((int)param_5 + sVar4 + 1);
    param_6 = (param_6 - sVar4) - 1;
  }
  uVar1 = *puVar3;
  param_2[1] = puVar3[1];
  *param_2 = uVar1;
  return param_2;
}



// Library Function - Multiple Matches With Same Base Name
//  private: static class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> > __cdecl std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Put(class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> >,class std::_String_const_iterator<unsigned
// short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >,unsigned
// int)
//  private: static class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __cdecl std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::_String_const_iterator<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >,unsigned int)
// 
// Library: Visual Studio 2008 Release

void Put(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
        undefined4 param_5,int param_6)

{
  ushort *puVar1;
  
  while (param_6 != 0) {
    puVar1 = std::
             _String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
             ::operator*((_String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                          *)&param_4);
    FID_conflict_operator_(*puVar1);
    param_6 = param_6 + -1;
    FID_conflict_operator__();
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  private: static class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> > __cdecl std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Rep(class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> >,unsigned short,unsigned int)
//  private: static class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __cdecl std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Rep(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,wchar_t,unsigned int)
// 
// Library: Visual Studio 2008 Release

void Rep(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5)

{
  if (param_5 != 0) {
    do {
      FID_conflict_operator_(param_4);
      param_5 = param_5 + -1;
    } while (param_5 != 0);
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  protected: void __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::_Chassign(unsigned int,unsigned int,unsigned
// short)
//  protected: void __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::_Chassign(unsigned int,unsigned int,wchar_t)
// 
// Library: Visual Studio 2008 Release

void __thiscall FID_conflict__Chassign(int param_1_00,int param_1,int param_2,undefined4 param_3)

{
  if (param_2 == 1) {
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      param_1_00 = param_1_00 + 4;
    }
    else {
      param_1_00 = *(int *)(param_1_00 + 4);
    }
    *(undefined2 *)(param_1_00 + param_1 * 2) = (undefined2)param_3;
  }
  else {
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      param_1_00 = param_1_00 + 4;
    }
    else {
      param_1_00 = *(int *)(param_1_00 + 4);
    }
    assign(param_1_00 + param_1 * 2,param_2,param_3);
  }
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  protected: void __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::_Eos(unsigned int)
//  protected: void __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::_Eos(unsigned int)
// 
// Library: Visual Studio 2008 Release

void __thiscall FID_conflict__Eos(int param_1_00,int param_1)

{
  *(int *)(param_1_00 + 0x14) = param_1;
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    param_1_00 = param_1_00 + 4;
  }
  else {
    param_1_00 = *(int *)(param_1_00 + 4);
  }
  *(undefined2 *)(param_1_00 + param_1 * 2) = 0;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  protected: void __thiscall std::_Mpunct<unsigned short>::_Init(class std::_Locinfo const &,bool)
//  protected: void __thiscall std::_Mpunct<wchar_t>::_Init(class std::_Locinfo const &,bool)
// 
// Library: Visual Studio 2008 Release

void __thiscall Init(int param_1_00,undefined4 param_1,char param_2)

{
  undefined4 *puVar1;
  char cVar2;
  undefined2 uVar3;
  undefined4 *puVar4;
  lconv *plVar5;
  undefined4 uVar6;
  undefined **ppuVar7;
  char *pcVar8;
  undefined local_20 [8];
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  int iVar9;
  
  uStack_4 = 0x10;
  local_8 = 0xb1cf1a;
  local_18 = param_1_00;
  puVar4 = (undefined4 *)FUN_004170cc(local_20);
  puVar1 = (undefined4 *)(param_1_00 + 0x2c);
  *puVar1 = *puVar4;
  *(undefined4 *)(param_1_00 + 0x30) = puVar4[1];
  plVar5 = _localeconv();
  *(undefined4 *)(param_1_00 + 8) = 0;
  *(undefined4 *)(param_1_00 + 0x10) = 0;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined4 *)(param_1_00 + 0x18) = 0;
  local_8 = 0;
  uVar6 = FUN_0041709c(plVar5->mon_grouping,0,puVar1);
  *(undefined4 *)(param_1_00 + 8) = uVar6;
  if (*(char *)(param_1_00 + 0x28) == '\0') {
    pcVar8 = plVar5->currency_symbol;
  }
  else {
    pcVar8 = plVar5->int_curr_symbol;
  }
  uVar6 = _Maklocstr<>(pcVar8,0,puVar1);
  *(undefined4 *)(param_1_00 + 0x10) = uVar6;
  ppuVar7 = &PTR_02bd3fc0;
  if ((byte)plVar5->p_sign_posn < 5) {
    ppuVar7 = (undefined **)plVar5->positive_sign;
  }
  uVar6 = _Maklocstr<>(ppuVar7,0,puVar1);
  *(undefined4 *)(param_1_00 + 0x14) = uVar6;
  pcVar8 = "-";
  if ((byte)plVar5->n_sign_posn < 5) {
    pcVar8 = plVar5->negative_sign;
  }
  uVar6 = _Maklocstr<>(pcVar8,0,puVar1);
  *(undefined4 *)(param_1_00 + 0x18) = uVar6;
  uVar3 = _Maklocchr<>(*plVar5->mon_decimal_point,0,puVar1);
  *(undefined2 *)(param_1_00 + 0xc) = uVar3;
  uVar3 = _Maklocchr<>(*plVar5->mon_thousands_sep,0,puVar1);
  *(undefined2 *)(param_1_00 + 0xe) = uVar3;
  if (*(char *)(param_1_00 + 0x28) == '\0') {
    cVar2 = plVar5->frac_digits;
  }
  else {
    cVar2 = plVar5->int_frac_digits;
  }
  iVar9 = (int)cVar2;
  *(int *)(param_1_00 + 0x1c) = iVar9;
  if ((iVar9 < 0) || (0x7e < iVar9)) {
    *(undefined4 *)(param_1_00 + 0x1c) = 0;
  }
  Makpat((void *)(param_1_00 + 0x20),(int)plVar5->p_sep_by_space,(int)plVar5->p_cs_precedes,
         (int)plVar5->p_sign_posn);
  Makpat((void *)(param_1_00 + 0x24),(int)plVar5->n_sep_by_space,(int)plVar5->n_cs_precedes,
         (int)plVar5->n_sign_posn);
  if (param_2 != '\0') {
    _memcpy((void *)(param_1_00 + 0x20),&DAT_00dcdb38,4);
    _memcpy((void *)(param_1_00 + 0x24),&DAT_00dcdb38,4);
  }
  return;
}



void Catch_All_00b1d062(void)

{
  code *pcVar1;
  
  Tidy();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  private: void __thiscall std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >::_Inc(void)
//  private: void __thiscall std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t>
// >::_Inc(void)
// 
// Library: Visual Studio 2008 Release

void __fastcall Inc(int *param_1)

{
  short sVar1;
  
  if (*param_1 != 0) {
    sVar1 = sbumpc();
    if (sVar1 != -1) {
      *(undefined *)(param_1 + 1) = 0;
      return;
    }
  }
  *param_1 = 0;
  *(undefined *)(param_1 + 1) = 1;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  private: unsigned short __thiscall std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >::_Peek(void)
//  private: unsigned short __thiscall std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >::_Peek(void)const 
//  private: wchar_t __thiscall std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t>
// >::_Peek(void)
//  private: wchar_t __thiscall std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t>
// >::_Peek(void)const 
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

undefined2 __fastcall Peek(int *param_1)

{
  short sVar1;
  
  if (*param_1 != 0) {
    sVar1 = sgetc();
    if (sVar1 != -1) {
      *(short *)((int)param_1 + 6) = sVar1;
      goto LAB_00b1d0c3;
    }
  }
  *param_1 = 0;
LAB_00b1d0c3:
  *(undefined *)(param_1 + 1) = 1;
  return *(undefined2 *)((int)param_1 + 6);
}



// Library Function - Multiple Matches With Different Base Names
//  public: bool __thiscall std::_String_const_iterator<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::operator!=(class
// std::_String_const_iterator<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > const &)const 
//  public: bool __thiscall std::_String_const_iterator<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::operator!=(class
// std::_String_const_iterator<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > const &)const 
// 
// Library: Visual Studio 2008 Release

bool FID_conflict_operator__(undefined4 param_1)

{
  char cVar1;
  
  cVar1 = FID_conflict_operator__(param_1);
  return cVar1 == '\0';
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::_String_iterator<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::_String_iterator<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >(unsigned short *,class
// std::_Container_base_secure const *)
//  public: __thiscall std::_String_iterator<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::_String_iterator<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >(wchar_t *,class std::_Container_base_secure const *)
// 
// Library: Visual Studio 2008 Release

undefined4 __thiscall
_String_iterator<>(undefined4 param_1_00,undefined4 param_1,undefined4 param_2)

{
  _String_const_iterator<>(param_1,param_2);
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: unsigned short * __thiscall std::allocator<unsigned short>::allocate(unsigned int)
//  public: wchar_t * __thiscall std::allocator<wchar_t>::allocate(unsigned int)
// 
// Library: Visual Studio 2008 Release

void allocate(undefined4 param_1)

{
  _Allocate<>(param_1,0);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  unsigned short * __cdecl std::_Traits_helper::copy_s<struct std::char_traits<unsigned short>
// >(unsigned short *,unsigned int,unsigned short const *,unsigned int)
//  wchar_t * __cdecl std::_Traits_helper::copy_s<struct std::char_traits<wchar_t> >(wchar_t
// *,unsigned int,wchar_t const *,unsigned int)
// 
// Library: Visual Studio 2008 Release

void __thiscall
copy_s<>(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
        undefined4 param_4)

{
  FID_conflict_copy_s<struct_std::char_traits<wchar_t>_>(param_1,param_2,param_3,param_4,param_1_00)
  ;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  unsigned short * __cdecl std::_Traits_helper::move_s<struct std::char_traits<unsigned short>
// >(unsigned short *,unsigned int,unsigned short const *,unsigned int)
//  wchar_t * __cdecl std::_Traits_helper::move_s<struct std::char_traits<wchar_t> >(wchar_t
// *,unsigned int,wchar_t const *,unsigned int)
// 
// Library: Visual Studio 2008 Release

void __thiscall
move_s<>(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
        undefined4 param_4)

{
  FID_conflict_copy_s<struct_std::char_traits<wchar_t>_>(param_1,param_2,param_3,param_4,param_1_00)
  ;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: bool __thiscall std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> >::equal(class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> > const &)const 
//  public: bool __thiscall std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t>
// >::equal(class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > const &)const 
// 
// Library: Visual Studio 2008 Release

undefined4 __thiscall equal(int *param_1_00,int *param_1)

{
  if (*(char *)(param_1_00 + 1) == '\0') {
    Peek();
  }
  if (*(char *)(param_1 + 1) == '\0') {
    Peek();
  }
  if (*param_1_00 == 0) {
    if (*param_1 == 0) {
      return 1;
    }
  }
  else if (*param_1 != 0) {
    return 1;
  }
  return 0;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::numpunct<unsigned short>::numpunct<unsigned short>(class std::_Locinfo
// const &,unsigned int,bool)
//  public: __thiscall std::numpunct<wchar_t>::numpunct<wchar_t>(class std::_Locinfo const
// &,unsigned int,bool)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
numpunct<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::numpunct<unsigned_short>::vftable;
  Init(param_1,param_3);
  return param_1_00;
}



undefined2 __fastcall FUN_00b1d1c9(int param_1)

{
  return *(undefined2 *)(param_1 + 0xc);
}



undefined2 __fastcall FUN_00b1d1ce(int param_1)

{
  return *(undefined2 *)(param_1 + 0xe);
}



void __fastcall FUN_00b1d1d3(undefined4 *param_1)

{
  *param_1 = std::numpunct<unsigned_short>::vftable;
  Tidy();
  *param_1 = std::locale::facet::vftable;
  return;
}



undefined4 __thiscall FUN_00b1d1eb(undefined4 param_1_00,byte param_1)

{
  FUN_00b1d1d3();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::_Mpunct<unsigned short>::_Mpunct<unsigned short>(class std::_Locinfo
// const &,unsigned int,bool,bool)
//  public: __thiscall std::_Mpunct<wchar_t>::_Mpunct<wchar_t>(class std::_Locinfo const &,unsigned
// int,bool,bool)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
_Mpunct<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined param_3,
         undefined4 param_4)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::_Mpunct<wchar_t>::vftable;
  *(undefined *)(param_1_00 + 10) = param_3;
  Init(param_1,param_4);
  return param_1_00;
}



// Library Function - Single Match
//  public: class std::_String_iterator<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::begin(void)
// 
// Library: Visual Studio 2008 Release

undefined4 __thiscall
std::
basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
::begin(basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
        *this,undefined4 param_1)

{
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  *pbVar1;
  
  if (*(uint *)(this + 0x18) < 8) {
    pbVar1 = this + 4;
  }
  else {
    pbVar1 = *(basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
               **)(this + 4);
  }
  _String_iterator<>(pbVar1,this);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::_Mpunct<unsigned short>::_Mpunct<unsigned short>(class std::_Locinfo
// const &,unsigned int,bool,bool)
//  public: __thiscall std::_Mpunct<wchar_t>::_Mpunct<wchar_t>(class std::_Locinfo const &,unsigned
// int,bool,bool)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
_Mpunct<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined param_3,
         undefined4 param_4)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::_Mpunct<unsigned_short>::vftable;
  *(undefined *)(param_1_00 + 10) = param_3;
  Init(param_1,param_4);
  return param_1_00;
}



// Library Function - Multiple Matches With Different Base Names
//  public: unsigned short __thiscall std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >::operator*(void)const 
//  public: wchar_t __thiscall std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t>
// >::operator*(void)const 
// 
// Library: Visual Studio 2008 Release

undefined2 __fastcall FID_conflict_operator_(int param_1)

{
  if (*(char *)(param_1 + 4) == '\0') {
    Peek();
  }
  return *(undefined2 *)(param_1 + 6);
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::erase(unsigned
// int,unsigned int)
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::erase(unsigned int,unsigned int)
// 
// Library: Visual Studio 2008 Release

int __thiscall FID_conflict_erase(int param_1_00,undefined4 *param_1,uint param_2)

{
  uint uVar1;
  uint uVar2;
  undefined4 *puVar3;
  
  uVar1 = (uint)param_1;
  if (*(uint *)(param_1_00 + 0x14) < param_1) {
    std::_String_base::_Xran();
  }
  uVar2 = *(int *)(param_1_00 + 0x14) - (int)param_1;
  if (uVar2 < param_2) {
    param_2 = uVar2;
  }
  if (param_2 != 0) {
    puVar3 = (undefined4 *)(param_1_00 + 4);
    param_1 = puVar3;
    if (7 < *(uint *)(param_1_00 + 0x18)) {
      param_1 = (undefined4 *)*puVar3;
      puVar3 = (undefined4 *)*puVar3;
    }
    move_s<>((int)puVar3 + uVar1 * 2,*(uint *)(param_1_00 + 0x18) - uVar1,
             (int)param_1 + (uVar1 + param_2) * 2,uVar2 - param_2);
    FID_conflict__Eos(*(int *)(param_1_00 + 0x14) - param_2);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::_String_iterator<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::end(void)
//  public: class std::_String_iterator<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::end(void)
// 
// Library: Visual Studio 2008 Release

undefined4 __thiscall FID_conflict_end(int param_1_00,undefined4 param_1)

{
  int iVar1;
  
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    iVar1 = param_1_00 + 4;
  }
  else {
    iVar1 = *(int *)(param_1_00 + 4);
  }
  _String_iterator<>(iVar1 + *(int *)(param_1_00 + 0x14) * 2,param_1_00);
  return param_1;
}



void __thiscall FUN_00b1d36a(int param_1_00,char param_1,int param_2)

{
  undefined4 uVar1;
  
  if ((param_1 != '\0') && (7 < *(uint *)(param_1_00 + 0x18))) {
    uVar1 = *(undefined4 *)(param_1_00 + 4);
    if (param_2 != 0) {
      copy_s<>((undefined4 *)(param_1_00 + 4),8,uVar1,param_2);
    }
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(uVar1);
  }
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  FID_conflict__Eos(param_2);
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::_String_iterator<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > __thiscall std::_String_iterator<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::operator+(int)const 
//  public: class std::_String_iterator<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::_String_iterator<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::operator+(int)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
FID_conflict_operator_(undefined4 *param_1_00,undefined4 *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar1 = *param_1_00;
  uVar2 = param_1_00[1];
  FID_conflict_operator__(param_2);
  *param_1 = uVar1;
  param_1[1] = uVar2;
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::_String_iterator<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > __thiscall std::_String_iterator<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::operator-(int)const 
//  public: class std::_String_iterator<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::_String_iterator<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::operator-(int)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall FID_conflict_operator_(undefined4 *param_1_00,undefined4 *param_1,int param_2)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar1 = *param_1_00;
  uVar2 = param_1_00[1];
  FID_conflict_operator__(-param_2);
  *param_1 = uVar1;
  param_1[1] = uVar2;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3

void __thiscall FUN_00b1d418(int param_1_00,uint param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  
  uVar3 = param_1 | 7;
  if (uVar3 < 0x7fffffff) {
    uVar1 = *(uint *)(param_1_00 + 0x18);
    uVar2 = uVar1 >> 1;
    param_1 = uVar3;
    if ((uVar3 / 3 < uVar2) && (uVar1 <= 0x7ffffffe - uVar2)) {
      param_1 = uVar2 + uVar1;
    }
  }
  allocate(param_1 + 1);
  FUN_00b1d49f();
  return;
}



undefined * Catch_All_00b1d476(void)

{
  int iVar1;
  undefined4 uVar2;
  int unaff_EBP;
  
  iVar1 = *(int *)(unaff_EBP + 8);
  *(int *)(unaff_EBP + 8) = iVar1;
  *(BADSPACEBASE **)(unaff_EBP + -0x10) = register0x00000010;
  *(undefined *)(unaff_EBP + -4) = 2;
  uVar2 = allocate(iVar1 + 1);
  *(undefined4 *)(unaff_EBP + -0x14) = uVar2;
  return &DAT_00b1d496;
}



// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3

void FUN_00b1d49f(void)

{
  undefined4 uVar1;
  undefined4 unaff_EBX;
  int unaff_EBP;
  undefined4 unaff_ESI;
  int unaff_EDI;
  
  if (*(int *)(unaff_EBP + 0xc) != 0) {
    copy_s<>();
  }
  FUN_00b1d36a(1,0);
  uVar1 = *(undefined4 *)(unaff_EBP + 0xc);
  *(undefined4 *)(unaff_EDI + 4) = unaff_EBX;
  *(undefined4 *)(unaff_EDI + 0x18) = unaff_ESI;
  FID_conflict__Eos(uVar1);
  return;
}



void Catch_All_00b1d4e7(void)

{
  code *pcVar1;
  
  FUN_00b1d36a(1,0);
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  bool __cdecl std::operator!=<unsigned short,struct std::char_traits<unsigned short> >(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > const &,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > const &)
//  bool __cdecl std::operator!=<wchar_t,struct std::char_traits<wchar_t> >(class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > const &,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > const &)
// 
// Library: Visual Studio 2008 Release

bool operator!=<>(undefined4 param_1,undefined4 param_2)

{
  char cVar1;
  
  cVar1 = equal(param_2);
  return cVar1 == '\0';
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::moneypunct<unsigned short,0>::moneypunct<unsigned short,0>(class
// std::_Locinfo const &,unsigned int,bool)
//  public: __thiscall std::moneypunct<wchar_t,0>::moneypunct<wchar_t,0>(class std::_Locinfo const
// &,unsigned int,bool)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
moneypunct<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  _Mpunct<>(param_1,param_2,0,param_3);
  *param_1_00 = std::moneypunct<wchar_t,0>::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_00b1d53c(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::moneypunct<wchar_t,0>::vftable;
  FUN_00b1c370();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::moneypunct<unsigned short,1>::moneypunct<unsigned short,1>(class
// std::_Locinfo const &,unsigned int,bool)
//  public: __thiscall std::moneypunct<wchar_t,1>::moneypunct<wchar_t,1>(class std::_Locinfo const
// &,unsigned int,bool)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
moneypunct<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  _Mpunct<>(param_1,param_2,1,param_3);
  *param_1_00 = std::moneypunct<wchar_t,1>::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_00b1d588(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::moneypunct<wchar_t,1>::vftable;
  FUN_00b1c370();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::moneypunct<unsigned short,0>::moneypunct<unsigned short,0>(class
// std::_Locinfo const &,unsigned int,bool)
//  public: __thiscall std::moneypunct<wchar_t,0>::moneypunct<wchar_t,0>(class std::_Locinfo const
// &,unsigned int,bool)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
moneypunct<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  _Mpunct<>(param_1,param_2,0,param_3);
  *param_1_00 = std::moneypunct<unsigned_short,0>::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_00b1d5d4(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::moneypunct<unsigned_short,0>::vftable;
  FUN_00b1c884();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::moneypunct<unsigned short,1>::moneypunct<unsigned short,1>(class
// std::_Locinfo const &,unsigned int,bool)
//  public: __thiscall std::moneypunct<wchar_t,1>::moneypunct<wchar_t,1>(class std::_Locinfo const
// &,unsigned int,bool)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
moneypunct<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3)

{
  _Mpunct<>(param_1,param_2,1,param_3);
  *param_1_00 = std::moneypunct<unsigned_short,1>::vftable;
  return param_1_00;
}



undefined4 * __thiscall FUN_00b1d620(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::moneypunct<unsigned_short,1>::vftable;
  FUN_00b1c884();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Single Match
//  public: __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >(void)
// 
// Library: Visual Studio 2008 Release

basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
* __thiscall
std::
basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
::
basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
          (basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
           *this)

{
  *(undefined4 *)(this + 0x18) = 7;
  FID_conflict__Eos(0);
  return this;
}



void FUN_00b1d65e(void)

{
  FUN_00b1d36a(1,0);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// __thiscall std::numpunct<unsigned short>::grouping(void)const 
//  public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// __thiscall std::numpunct<wchar_t>::grouping(void)const 
// 
// Library: Visual Studio 2008 Release

undefined4 __thiscall grouping(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0xc))(param_1,0);
  return param_1;
}



// Library Function - Multiple Matches With Different Base Names
//  protected: bool __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::_Grow(unsigned int,bool)
//  protected: bool __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::_Grow(unsigned int,bool)
// 
// Library: Visual Studio 2008 Release

bool __thiscall FID_conflict__Grow(int param_1_00,uint param_1,char param_2)

{
  uint uVar1;
  
  if (0x7ffffffe < param_1) {
    std::_String_base::_Xlen();
  }
  if (*(uint *)(param_1_00 + 0x18) < param_1) {
    FUN_00b1d418(param_1,*(undefined4 *)(param_1_00 + 0x14));
  }
  else if ((param_2 == '\0') || (7 < param_1)) {
    if (param_1 == 0) {
      FID_conflict__Eos(0);
    }
  }
  else {
    uVar1 = *(uint *)(param_1_00 + 0x14);
    if (param_1 < *(uint *)(param_1_00 + 0x14)) {
      uVar1 = param_1;
    }
    FUN_00b1d36a(1,uVar1);
  }
  return param_1 != 0;
}



// Library Function - Multiple Matches With Same Base Name
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > __thiscall std::_Mpunct<unsigned short>::curr_symbol(void)const 
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::_Mpunct<wchar_t>::curr_symbol(void)const 
// 
// Library: Visual Studio 2008 Release

undefined4 __thiscall curr_symbol(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0x10))(param_1,0);
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > __thiscall std::_Mpunct<unsigned
// short>::positive_sign(void)const 
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::_Mpunct<wchar_t>::positive_sign(void)const 
// 
// Library: Visual Studio 2008 Release

undefined4 __thiscall positive_sign(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0x14))(param_1,0);
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > __thiscall std::_Mpunct<unsigned
// short>::negative_sign(void)const 
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::_Mpunct<wchar_t>::negative_sign(void)const 
// 
// Library: Visual Studio 2008 Release

undefined4 __thiscall negative_sign(int *param_1_00,undefined4 param_1)

{
  (**(code **)(*param_1_00 + 0x18))(param_1,0);
  return param_1;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::append(class
// std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > const &,unsigned int,unsigned int)
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::append(class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const
// &,unsigned int,unsigned int)
// 
// Library: Visual Studio 2008 Release

int __thiscall FID_conflict_append(int param_1_00,int param_1,uint param_2,uint param_3)

{
  char cVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  
  if (*(uint *)(param_1 + 0x14) < param_2) {
    std::_String_base::_Xran();
  }
  uVar2 = *(int *)(param_1 + 0x14) - param_2;
  if (uVar2 < param_3) {
    param_3 = uVar2;
  }
  if ((-*(int *)(param_1_00 + 0x14) - 1U <= param_3) ||
     (*(uint *)(param_1_00 + 0x14) + param_3 < *(uint *)(param_1_00 + 0x14))) {
    std::_String_base::_Xlen();
  }
  if (param_3 != 0) {
    iVar3 = *(int *)(param_1_00 + 0x14) + param_3;
    cVar1 = FID_conflict__Grow(iVar3,0);
    if (cVar1 != '\0') {
      if (*(uint *)(param_1 + 0x18) < 8) {
        param_1 = param_1 + 4;
      }
      else {
        param_1 = *(int *)(param_1 + 4);
      }
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar4 = param_1_00 + 4;
      }
      else {
        iVar4 = *(int *)(param_1_00 + 4);
      }
      copy_s<>(iVar4 + *(int *)(param_1_00 + 0x14) * 2,
               *(uint *)(param_1_00 + 0x18) - *(int *)(param_1_00 + 0x14),param_1 + param_2 * 2,
               param_3);
      FID_conflict__Eos(iVar3);
    }
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::append(unsigned
// int,unsigned short)
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::append(unsigned int,wchar_t)
// 
// Library: Visual Studio 2008 Release

int __thiscall FID_conflict_append(int param_1_00,uint param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  
  if (-*(int *)(param_1_00 + 0x14) - 1U <= param_1) {
    std::_String_base::_Xlen();
  }
  if (param_1 != 0) {
    iVar2 = *(int *)(param_1_00 + 0x14) + param_1;
    cVar1 = FID_conflict__Grow(iVar2,0);
    if (cVar1 != '\0') {
      FID_conflict__Chassign(*(undefined4 *)(param_1_00 + 0x14),param_1,param_2);
      FID_conflict__Eos(iVar2);
    }
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::assign(class
// std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > const &,unsigned int,unsigned int)
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::assign(class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const
// &,unsigned int,unsigned int)
// 
// Library: Visual Studio 2008 Release

int __thiscall FID_conflict_assign(int param_1_00,int param_1,uint param_2,uint param_3)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  
  if (*(uint *)(param_1 + 0x14) < param_2) {
    std::_String_base::_Xran();
  }
  uVar3 = *(int *)(param_1 + 0x14) - param_2;
  if (param_3 < uVar3) {
    uVar3 = param_3;
  }
  if (param_1_00 == param_1) {
    FID_conflict_erase(uVar3 + param_2,0xffffffff);
    FID_conflict_erase(0,param_2);
  }
  else {
    cVar1 = FID_conflict__Grow(uVar3,0);
    if (cVar1 != '\0') {
      if (*(uint *)(param_1 + 0x18) < 8) {
        param_1 = param_1 + 4;
      }
      else {
        param_1 = *(int *)(param_1 + 4);
      }
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar2 = param_1_00 + 4;
      }
      else {
        iVar2 = *(int *)(param_1_00 + 4);
      }
      copy_s<>(iVar2,*(uint *)(param_1_00 + 0x18),param_1 + param_2 * 2,uVar3);
      FID_conflict__Eos(uVar3);
    }
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::assign(unsigned short
// const *,unsigned int)
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::assign(wchar_t const *,unsigned int)
// 
// Library: Visual Studio 2008 Release

int __thiscall FID_conflict_assign(int param_1_00,int param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  
  cVar1 = FID_conflict__Inside(param_1);
  if (cVar1 == '\0') {
    cVar1 = FID_conflict__Grow(param_2,0);
    if (cVar1 != '\0') {
      if (*(uint *)(param_1_00 + 0x18) < 8) {
        iVar2 = param_1_00 + 4;
      }
      else {
        iVar2 = *(int *)(param_1_00 + 4);
      }
      copy_s<>(iVar2,*(uint *)(param_1_00 + 0x18),param_1,param_2);
      FID_conflict__Eos(param_2);
    }
  }
  else {
    if (*(uint *)(param_1_00 + 0x18) < 8) {
      iVar2 = param_1_00 + 4;
    }
    else {
      iVar2 = *(int *)(param_1_00 + 4);
    }
    param_1_00 = FID_conflict_assign(param_1_00,param_1 - iVar2 >> 1,param_2);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::assign(unsigned short
// const *)
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::assign(wchar_t const *)
// 
// Library: Visual Studio 2008 Release

void FID_conflict_assign(undefined4 param_1)

{
  undefined4 uVar1;
  
  uVar1 = FUN_00a51355(param_1);
  FID_conflict_assign(param_1,uVar1);
  return;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::assign(unsigned
// int,unsigned short)
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::assign(unsigned int,wchar_t)
// 
// Library: Visual Studio 2008 Release

undefined4 __thiscall FID_conflict_assign(undefined4 param_1_00,int param_1,undefined4 param_2)

{
  char cVar1;
  
  if (param_1 == -1) {
    std::_String_base::_Xlen();
  }
  cVar1 = FID_conflict__Grow(param_1,0);
  if (cVar1 != '\0') {
    FID_conflict__Chassign(0,param_1,param_2);
    FID_conflict__Eos(param_1);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Different Base Names
//  public: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > & __thiscall std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >::insert(unsigned
// int,unsigned int,unsigned short)
//  public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > & __thiscall std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >::insert(unsigned int,unsigned
// int,wchar_t)
// 
// Library: Visual Studio 2008 Release

int __thiscall
FID_conflict_insert(int param_1_00,undefined4 *param_1,uint param_2,undefined4 param_3)

{
  uint uVar1;
  char cVar2;
  undefined4 *puVar3;
  int iVar4;
  
  uVar1 = (uint)param_1;
  if (*(uint *)(param_1_00 + 0x14) < param_1) {
    std::_String_base::_Xran();
  }
  if (-*(int *)(param_1_00 + 0x14) - 1U <= param_2) {
    std::_String_base::_Xlen();
  }
  if (param_2 != 0) {
    iVar4 = *(int *)(param_1_00 + 0x14) + param_2;
    cVar2 = FID_conflict__Grow(iVar4,0);
    if (cVar2 != '\0') {
      puVar3 = (undefined4 *)(param_1_00 + 4);
      param_1 = puVar3;
      if (7 < *(uint *)(param_1_00 + 0x18)) {
        param_1 = (undefined4 *)*puVar3;
        puVar3 = (undefined4 *)*puVar3;
      }
      move_s<>((int)puVar3 + (uVar1 + param_2) * 2,(*(uint *)(param_1_00 + 0x18) - uVar1) - param_2,
               (int)param_1 + uVar1 * 2,*(int *)(param_1_00 + 0x14) - uVar1);
      FID_conflict__Chassign(uVar1,param_2,param_3);
      FID_conflict__Eos(iVar4);
    }
  }
  return param_1_00;
}



// Library Function - Single Match
//  public: void __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::resize(unsigned int,unsigned short)
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::
basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
::resize(basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
         *this,uint param_1,ushort param_2)

{
  undefined2 in_stack_0000000a;
  
  if (*(uint *)(this + 0x14) < param_1) {
    FID_conflict_append(param_1 - *(uint *)(this + 0x14),_param_2);
  }
  else {
    FID_conflict_erase(param_1,0xffffffff);
  }
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  int __cdecl std::_Getloctxt<unsigned short,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >(class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > &,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > &,unsigned int,unsigned short const *)
//  int __cdecl std::_Getloctxt<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,unsigned int,wchar_t const *)
// 
// Library: Visual Studio 2008 Release

void _Getloctxt<>(undefined4 param_1,undefined4 param_2,uint param_3,short *param_4)

{
  bool bVar1;
  char cVar2;
  short sVar3;
  char *pcVar4;
  int iVar5;
  uint uVar6;
  uint local_3c;
  uint local_38;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x38;
  local_8 = 0xb1da6f;
  iVar5 = 0;
  sVar3 = *param_4;
  while (sVar3 != 0) {
    if (sVar3 == *param_4) {
      param_3 = param_3 + 1;
    }
    iVar5 = iVar5 + 1;
    sVar3 = param_4[iVar5];
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_30,param_3,'\0');
  local_8 = 0;
  local_3c = 1;
  while( true ) {
    iVar5 = 0;
    bVar1 = false;
    local_38 = 0;
    if (param_3 == 0) break;
    do {
      sVar3 = param_4[iVar5];
      if (sVar3 != 0) {
        do {
          if (sVar3 == *param_4) break;
          iVar5 = iVar5 + 1;
          sVar3 = param_4[iVar5];
        } while (sVar3 != 0);
      }
      pcVar4 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
               operator[](local_30,local_38);
      if (*pcVar4 == '\0') {
        iVar5 = iVar5 + local_3c;
        if ((param_4[iVar5] == *param_4) || (param_4[iVar5] == 0)) {
          uVar6 = 0x7f;
          if (local_3c < 0x7f) {
            uVar6 = local_3c;
          }
          pcVar4 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                   ::operator[](local_30,local_38);
          *pcVar4 = (char)uVar6;
        }
        else {
          cVar2 = equal(param_2);
          if ((cVar2 == '\0') && (sVar3 = FID_conflict_operator_(), param_4[iVar5] == sVar3)) {
            bVar1 = true;
          }
          else {
            uVar6 = 0x7f;
            if (local_3c < 0x7f) {
              uVar6 = local_3c;
            }
            pcVar4 = std::
                     basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                     operator[](local_30,local_38);
            *pcVar4 = (char)uVar6;
          }
        }
      }
      else {
        pcVar4 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                 operator[](local_30,local_38);
        iVar5 = iVar5 + *pcVar4;
      }
      local_38 = local_38 + 1;
    } while (local_38 < param_3);
    if ((!bVar1) || (cVar2 = equal(param_2), cVar2 != '\0')) break;
    local_3c = local_3c + 1;
    Inc();
  }
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::time_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_put(class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,unsigned short,struct tm const *,char,char)const 
//  protected: virtual class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::time_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,wchar_t,struct tm const *,char,char)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_put(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
      undefined4 param_5,tm *param_6,undefined param_7,char param_8)

{
  void *pvVar1;
  _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this;
  char *pcVar2;
  size_t sVar3;
  _String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *p_Var4;
  undefined4 *puVar5;
  int iVar6;
  size_t sVar7;
  uint uVar8;
  undefined *puVar9;
  mbstate_t *pmVar10;
  undefined4 uVar11;
  _Cvtvec *p_Var12;
  undefined local_5c [8];
  mbstate_t local_54;
  undefined local_50 [4];
  size_t local_4c;
  undefined4 local_48;
  undefined4 *local_44;
  undefined4 local_40;
  tm *local_3c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_38 [20];
  size_t local_24;
  undefined4 local_1c;
  undefined uStack_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x4c;
  local_8 = 0xb1dbd0;
  local_1c = 0x782521;
  local_44 = param_1;
  local_3c = param_6;
  uStack_18 = 0;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_38);
  local_8 = 0;
  if (param_8 == '\0') {
    local_1c._0_3_ = CONCAT12(param_7,(undefined2)local_1c);
  }
  else {
    local_1c._0_3_ = CONCAT12(param_8,(undefined2)local_1c);
    local_1c = CONCAT13(param_7,(undefined3)local_1c);
  }
  uVar8 = 0x10;
  while( true ) {
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (local_38,uVar8,'\0');
    pvVar1 = *(void **)(param_1_00 + 8);
    local_4c = local_24;
    this = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
           )FUN_0042a0d0(local_5c);
    pcVar2 = std::
             _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             ::operator*(this);
    sVar3 = __Strftime(pcVar2,local_4c,(char *)&local_1c,local_3c,pvVar1);
    if (sVar3 != 0) break;
    uVar8 = uVar8 * 2;
  }
  local_54 = 0;
  uVar11 = 1;
  puVar9 = local_5c;
  sVar3 = sVar3 - 1;
  p_Var4 = (_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
           FUN_0042a0d0(local_50);
  puVar5 = (undefined4 *)
           std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
           operator+(p_Var4,puVar9,uVar11);
  local_40 = *puVar5;
  local_3c = (tm *)puVar5[1];
  if (sVar3 != 0) {
    do {
      pmVar10 = &local_54;
      sVar7 = sVar3;
      p_Var12 = (_Cvtvec *)(param_1_00 + 0xc);
      pcVar2 = std::
               _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
               ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                            *)&local_40);
      iVar6 = __Mbrtowc((wchar_t *)&local_48,pcVar2,sVar7,pmVar10,p_Var12);
      if (iVar6 == -3) {
        iVar6 = 0;
      }
      else if (-3 < iVar6) {
        if (iVar6 < 0) break;
        if ((iVar6 == 0) && ((short)local_48 == 0)) {
          pcVar2 = std::
                   _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                   ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                                *)&local_40);
          sVar7 = _strlen(pcVar2);
          iVar6 = sVar7 + 1;
        }
      }
      sVar3 = sVar3 - iVar6;
      FUN_005e0be0(iVar6);
      FID_conflict_operator_(local_48);
    } while (sVar3 != 0);
  }
  *local_44 = param_2;
  local_44[1] = param_3;
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >(unsigned short const
// *,unsigned int)
//  public: __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >(wchar_t const *,unsigned int)
// 
// Library: Visual Studio 2008 Release

int __thiscall basic_string<>(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  FID_conflict__Eos(0);
  FID_conflict_assign(param_1,param_2);
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >(unsigned short const *)
//  public: __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >(wchar_t const *)
// 
// Library: Visual Studio 2008 Release

int __thiscall basic_string<>(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  FID_conflict__Eos(0);
  FID_conflict_assign(param_1);
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >(unsigned int,unsigned
// short)
//  public: __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >(unsigned int,wchar_t)
// 
// Library: Visual Studio 2008 Release

int __thiscall basic_string<>(int param_1_00,undefined4 param_1,undefined4 param_2)

{
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  FID_conflict__Eos(0);
  FID_conflict_assign(param_1,param_2);
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> >::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> >(class
// std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > const &)
//  public: __thiscall std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> >(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > const &)
// 
// Library: Visual Studio 2008 Release

int __thiscall basic_string<>(int param_1_00,undefined4 param_1)

{
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  FID_conflict__Eos(0);
  FID_conflict_assign(param_1,0,0xffffffff);
  return param_1_00;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::codecvt<unsigned short,char,int>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::codecvt<wchar_t,char,int>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1ddba;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x10);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = codecvt<>(uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::ctype<unsigned short>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::ctype<wchar_t>::_Getcat(class std::locale::facet const
// * *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1de5b;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x20);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = ctype<>(uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 2;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::collate<char>::_Getcat(class std::locale::facet const *
// *,class std::locale const *)
//  public: static unsigned int __cdecl std::collate<unsigned short>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::collate<wchar_t>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1defc;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x10);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = collate<>(uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  protected: virtual class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::collate<wchar_t>::do_transform(wchar_t const *,wchar_t
// const *)const 
// 
// Library: Visual Studio 2008 Release

basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> * __thiscall
std::collate<wchar_t>::do_transform
          (undefined4 param_1_00,
          basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
          *param_1,wchar_t *param_2,wchar_t *param_4)

{
  int iVar1;
  size_t sVar2;
  _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
  *p_Var3;
  wchar_t *pwVar4;
  wchar_t *_String1;
  undefined local_34 [8];
  undefined local_2c [8];
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_24;
  undefined4 local_20;
  wchar_t *local_1c;
  wchar_t *local_18;
  _Collvec *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0xb1df93;
  local_20 = 0;
  local_24 = param_1;
  local_18 = param_2;
  local_1c = param_4;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  local_8 = 0;
  sVar2 = (int)param_4 - (int)param_2 >> 1;
  local_20 = 1;
  if (sVar2 != 0) {
    local_14 = local_14 + 1;
    do {
      FUN_00422120(sVar2,0);
      p_Var3 = (_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  ::begin(param_1,local_2c);
      pwVar4 = _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
               ::operator*(p_Var3);
      iVar1 = *(int *)(param_1 + 0x14);
      p_Var3 = (_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                *)basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  ::begin(param_1,local_34);
      _String1 = _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                 ::operator*(p_Var3);
      sVar2 = __Wcsxfrm(_String1,pwVar4 + iVar1,local_18,local_1c,local_14);
      if (sVar2 <= *(uint *)(param_1 + 0x14)) break;
    } while (sVar2 != 0);
  }
  FUN_00422120(sVar2,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::messages<char>::_Getcat(class std::locale::facet const
// * *,class std::locale const *)
//  public: static unsigned int __cdecl std::messages<unsigned short>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::messages<wchar_t>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  undefined4 *puVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1e044;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    puVar1 = (undefined4 *)operator_new(8);
    local_8 = 0;
    if (puVar1 == (undefined4 *)0x0) {
      puVar1 = (undefined4 *)0x0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      std::_Locinfo::_Locinfo(local_a4,pbVar2);
      puVar1[1] = 0;
      local_14 = 3;
      *puVar1 = std::messages<wchar_t>::vftable;
    }
    local_8 = 2;
    *param_1 = (int)puVar1;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 6;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> > __thiscall std::messages<char>::do_get(int,int,int,class
// std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)const 
//  protected: virtual class std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> > __thiscall std::messages<unsigned
// short>::do_get(int,int,int,class std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &)const 
//  protected: virtual class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::messages<wchar_t>::do_get(int,int,int,class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const
// &)const 
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release

undefined4 do_get(undefined4 param_1)

{
  undefined4 param_5;
  
  basic_string<>(param_5);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::money_get<char,class
// std::istreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_put<char,class
// std::ostreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//   6 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1e0fc;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x10);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                        (uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::money_get<char,class
// std::istreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_put<char,class
// std::ostreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//   6 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1e19b;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x10);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                        (uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::moneypunct<char,1>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<char,0>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<unsigned short,1>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<unsigned short,0>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//   6 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1e23a;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x34);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_8 = 2;
      local_14 = 3;
      iVar4 = moneypunct<>(uVar3,0,1);
    }
    *param_1 = iVar4;
    local_8 = 3;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 3;
}



undefined4 __thiscall FUN_00b1e2ca(int param_1_00,undefined4 param_1)

{
  basic_string<>(*(undefined4 *)(param_1_00 + 0x10));
  return param_1;
}



undefined4 __thiscall FUN_00b1e2e6(int param_1_00,undefined4 param_1)

{
  basic_string<>(*(undefined4 *)(param_1_00 + 0x14));
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> > __thiscall std::_Mpunct<unsigned
// short>::do_negative_sign(void)const 
//  protected: virtual class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::_Mpunct<wchar_t>::do_negative_sign(void)const 
// 
// Library: Visual Studio 2005 Release

undefined4 __thiscall do_negative_sign(int param_1_00,undefined4 param_1)

{
  basic_string<>(*(undefined4 *)(param_1_00 + 0x18));
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::moneypunct<char,1>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<char,0>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<unsigned short,1>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<unsigned short,0>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//   6 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1e32d;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x34);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_8 = 2;
      local_14 = 3;
      iVar4 = moneypunct<>(uVar3,0,1);
    }
    *param_1 = iVar4;
    local_8 = 3;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::num_get<char,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::num_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::num_put<char,class std::ostreambuf_iterator<char,struct
// std::char_traits<char> > >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//   6 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1e3cc;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x10);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                        (uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::num_get<char,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::num_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::num_put<char,class std::ostreambuf_iterator<char,struct
// std::char_traits<char> > >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//   6 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1e46b;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x10);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                        (uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 4;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::numpunct<char>::_Getcat(class std::locale::facet const
// * *,class std::locale const *)
//  public: static unsigned int __cdecl std::numpunct<unsigned short>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::numpunct<wchar_t>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  undefined4 uVar2;
  int iVar3;
  _Locinfo local_a8 [116];
  undefined local_34 [28];
  void *local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x98;
  local_8 = 0xb1e50a;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    local_18 = operator_new(0x18);
    local_8 = 0;
    if (local_18 == (void *)0x0) {
      iVar3 = 0;
    }
    else {
      pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_34);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar2 = std::_Locinfo::_Locinfo(local_a8,pbVar1);
      local_8 = 2;
      local_14 = 3;
      iVar3 = numpunct<>(uVar2,0,1);
    }
    *param_1 = iVar3;
    local_8 = 3;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a8);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 4;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00b1e59e(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1,*(char **)(param_1_00 + 8));
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::collate<char>::_Getcat(class std::locale::facet const *
// *,class std::locale const *)
//  public: static unsigned int __cdecl std::collate<unsigned short>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::collate<wchar_t>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1e5c9;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x10);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = collate<>(uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  protected: virtual class std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> > __thiscall std::collate<unsigned
// short>::do_transform(unsigned short const *,unsigned short const *)const 
// 
// Library: Visual Studio 2008 Release

basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
* __thiscall
std::collate<unsigned_short>::do_transform
          (undefined4 param_1_00,
          basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
          *param_1,ushort *param_2,ushort *param_4)

{
  int iVar1;
  uint uVar2;
  _String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  *p_Var3;
  ushort *puVar4;
  ushort *puVar5;
  undefined local_34 [8];
  undefined local_2c [8];
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  *local_24;
  undefined4 local_20;
  ushort *local_1c;
  ushort *local_18;
  _Collvec *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0xb1e660;
  local_20 = 0;
  local_24 = param_1;
  local_18 = param_2;
  local_1c = param_4;
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  ::
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
            (param_1);
  local_8 = 0;
  uVar2 = (int)param_4 - (int)param_2 >> 1;
  local_20 = 1;
  if (uVar2 != 0) {
    local_14 = local_14 + 1;
    do {
      basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
      ::resize(param_1,uVar2,0);
      p_Var3 = (_String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                *)basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                  ::begin(param_1,local_2c);
      puVar4 = _String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
               ::operator*(p_Var3);
      iVar1 = *(int *)(param_1 + 0x14);
      p_Var3 = (_String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                *)basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                  ::begin(param_1,local_34);
      puVar5 = _String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
               ::operator*(p_Var3);
      uVar2 = _LStrxfrm<unsigned_short>(puVar5,puVar4 + iVar1,local_18,local_1c,local_14);
      if (uVar2 <= *(uint *)(param_1 + 0x14)) break;
    } while (uVar2 != 0);
  }
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  ::resize(param_1,uVar2,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::messages<char>::_Getcat(class std::locale::facet const
// * *,class std::locale const *)
//  public: static unsigned int __cdecl std::messages<unsigned short>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::messages<wchar_t>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  undefined4 *puVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1e711;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    puVar1 = (undefined4 *)operator_new(8);
    local_8 = 0;
    if (puVar1 == (undefined4 *)0x0) {
      puVar1 = (undefined4 *)0x0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      std::_Locinfo::_Locinfo(local_a4,pbVar2);
      puVar1[1] = 0;
      local_14 = 3;
      *puVar1 = std::messages<unsigned_short>::vftable;
    }
    local_8 = 2;
    *param_1 = (int)puVar1;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 6;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> > __thiscall std::messages<char>::do_get(int,int,int,class
// std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)const 
//  protected: virtual class std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char>,class _STL70> __thiscall std::messages<char>::do_get(int,int,int,class
// std::basic_string<char,struct std::char_traits<char>,class std::allocator<char>,class _STL70>
// const &)const 
//  protected: virtual class std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> > __thiscall std::messages<unsigned
// short>::do_get(int,int,int,class std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &)const 
//  protected: virtual class std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short>,class _STL70> __thiscall std::messages<unsigned
// short>::do_get(int,int,int,class std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short>,class _STL70> const &)const
// 
//   6 names - too many to list
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2012 Release

undefined4 do_get(undefined4 param_1)

{
  undefined4 param_5;
  
  basic_string<>(param_5);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::money_get<char,class
// std::istreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_put<char,class
// std::ostreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//   6 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1e7c9;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x10);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                        (uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::money_get<char,class
// std::istreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_put<char,class
// std::ostreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//   6 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1e868;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x10);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                        (uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::moneypunct<char,1>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<char,0>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<unsigned short,1>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<unsigned short,0>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//   6 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1e907;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x34);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_8 = 2;
      local_14 = 3;
      iVar4 = moneypunct<>(uVar3,0,1);
    }
    *param_1 = iVar4;
    local_8 = 3;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 3;
}



undefined4 __thiscall FUN_00b1e997(int param_1_00,undefined4 param_1)

{
  basic_string<>(*(undefined4 *)(param_1_00 + 0x10));
  return param_1;
}



undefined4 __thiscall FUN_00b1e9b3(int param_1_00,undefined4 param_1)

{
  basic_string<>(*(undefined4 *)(param_1_00 + 0x14));
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char>,class _STL70> __thiscall std::_Mpunct<char>::do_negative_sign(void)const 
//  protected: virtual class std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> > __thiscall std::_Mpunct<unsigned
// short>::do_negative_sign(void)const 
//  protected: virtual class std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short>,class _STL70> __thiscall std::_Mpunct<unsigned
// short>::do_negative_sign(void)const 
//  protected: virtual class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::_Mpunct<wchar_t>::do_negative_sign(void)const 
//   5 names - too many to list
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2012 Release

undefined4 __thiscall do_negative_sign(int param_1_00,undefined4 param_1)

{
  basic_string<>(*(undefined4 *)(param_1_00 + 0x18));
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::moneypunct<char,1>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<char,0>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<unsigned short,1>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<unsigned short,0>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//   6 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1e9fa;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x34);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_8 = 2;
      local_14 = 3;
      iVar4 = moneypunct<>(uVar3,0,1);
    }
    *param_1 = iVar4;
    local_8 = 3;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::time_put<char,class
// std::ostreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::time_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::time_put<wchar_t,class
// std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb1ea99;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x14);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = time_put<>(uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 5;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::ctype<unsigned short> const & __cdecl std::use_facet<class std::ctype<unsigned short>
// >(class std::locale const &)
//  class std::ctype<wchar_t> const & __cdecl std::use_facet<class std::ctype<wchar_t> >(class
// std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1eb35;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd14;
  local_8 = 0;
  local_14[0] = DAT_032edd14;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032bc830);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd14 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::collate<unsigned short> const & __cdecl std::use_facet<class std::collate<unsigned
// short> >(class std::locale const &)
//  class std::collate<wchar_t> const & __cdecl std::use_facet<class std::collate<wchar_t> >(class
// std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1ebd2;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd18;
  local_8 = 0;
  local_14[0] = DAT_032edd18;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd8c);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd18 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::messages<unsigned short> const & __cdecl std::use_facet<class std::messages<unsigned
// short> >(class std::locale const &)
//  class std::messages<wchar_t> const & __cdecl std::use_facet<class std::messages<wchar_t> >(class
// std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1ec6f;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd1c;
  local_8 = 0;
  local_14[0] = DAT_032edd1c;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd80);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd1c = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::money_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::money_get<unsigned
// short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
//  class std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::money_put<unsigned
// short,class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::money_put<wchar_t,class
// std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
//   10 names - too many to list
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1ed0c;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd20;
  local_8 = 0;
  local_14[0] = DAT_032edd20;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd9c);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd20 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::money_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::money_get<unsigned
// short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
//  class std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::money_put<unsigned
// short,class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::money_put<wchar_t,class
// std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
//   10 names - too many to list
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1eda9;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd24;
  local_8 = 0;
  local_14[0] = DAT_032edd24;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edda0);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd24 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::moneypunct<unsigned short,1> const & __cdecl std::use_facet<class
// std::moneypunct<unsigned short,1> >(class std::locale const &)
//  class std::moneypunct<unsigned short,0> const & __cdecl std::use_facet<class
// std::moneypunct<unsigned short,0> >(class std::locale const &)
//  class std::moneypunct<wchar_t,1> const & __cdecl std::use_facet<class std::moneypunct<wchar_t,1>
// >(class std::locale const &)
//  class std::moneypunct<wchar_t,0> const & __cdecl std::use_facet<class std::moneypunct<wchar_t,0>
// >(class std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1ee46;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd28;
  local_8 = 0;
  local_14[0] = DAT_032edd28;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd84);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd28 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::moneypunct<unsigned short,1> const & __cdecl std::use_facet<class
// std::moneypunct<unsigned short,1> >(class std::locale const &)
//  class std::moneypunct<unsigned short,0> const & __cdecl std::use_facet<class
// std::moneypunct<unsigned short,0> >(class std::locale const &)
//  class std::moneypunct<wchar_t,1> const & __cdecl std::use_facet<class std::moneypunct<wchar_t,1>
// >(class std::locale const &)
//  class std::moneypunct<wchar_t,0> const & __cdecl std::use_facet<class std::moneypunct<wchar_t,0>
// >(class std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1eee3;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd2c;
  local_8 = 0;
  local_14[0] = DAT_032edd2c;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd6c);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd2c = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::money_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::money_get<unsigned
// short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
//  class std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::money_put<unsigned
// short,class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::money_put<wchar_t,class
// std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
//   10 names - too many to list
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1ef80;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd30;
  local_8 = 0;
  local_14[0] = DAT_032edd30;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd98);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd30 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::money_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::money_get<unsigned
// short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
//  class std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::money_put<unsigned
// short,class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::money_put<wchar_t,class
// std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
//   10 names - too many to list
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1f01d;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd34;
  local_8 = 0;
  local_14[0] = DAT_032edd34;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd90);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd34 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::numpunct<unsigned short> const & __cdecl std::use_facet<class std::numpunct<unsigned
// short> >(class std::locale const &)
//  class std::numpunct<wchar_t> const & __cdecl std::use_facet<class std::numpunct<wchar_t> >(class
// std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1f0ba;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd38;
  local_8 = 0;
  local_14[0] = DAT_032edd38;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd88);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd38 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::collate<unsigned short> const & __cdecl std::use_facet<class std::collate<unsigned
// short> >(class std::locale const &)
//  class std::collate<wchar_t> const & __cdecl std::use_facet<class std::collate<wchar_t> >(class
// std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1f157;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd3c;
  local_8 = 0;
  local_14[0] = DAT_032edd3c;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd78);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd3c = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::messages<unsigned short> const & __cdecl std::use_facet<class std::messages<unsigned
// short> >(class std::locale const &)
//  class std::messages<wchar_t> const & __cdecl std::use_facet<class std::messages<wchar_t> >(class
// std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1f1f4;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd40;
  local_8 = 0;
  local_14[0] = DAT_032edd40;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd7c);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd40 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::money_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::money_get<unsigned
// short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
//  class std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::money_put<unsigned
// short,class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::money_put<wchar_t,class
// std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
//   10 names - too many to list
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1f291;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd44;
  local_8 = 0;
  local_14[0] = DAT_032edd44;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd64);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd44 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::money_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::money_get<unsigned
// short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
//  class std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::money_put<unsigned
// short,class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::money_put<wchar_t,class
// std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
//   10 names - too many to list
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1f32e;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd48;
  local_8 = 0;
  local_14[0] = DAT_032edd48;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edda4);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd48 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::moneypunct<unsigned short,1> const & __cdecl std::use_facet<class
// std::moneypunct<unsigned short,1> >(class std::locale const &)
//  class std::moneypunct<unsigned short,0> const & __cdecl std::use_facet<class
// std::moneypunct<unsigned short,0> >(class std::locale const &)
//  class std::moneypunct<wchar_t,1> const & __cdecl std::use_facet<class std::moneypunct<wchar_t,1>
// >(class std::locale const &)
//  class std::moneypunct<wchar_t,0> const & __cdecl std::use_facet<class std::moneypunct<wchar_t,0>
// >(class std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1f3cb;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd4c;
  local_8 = 0;
  local_14[0] = DAT_032edd4c;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd94);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd4c = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::moneypunct<unsigned short,1> const & __cdecl std::use_facet<class
// std::moneypunct<unsigned short,1> >(class std::locale const &)
//  class std::moneypunct<unsigned short,0> const & __cdecl std::use_facet<class
// std::moneypunct<unsigned short,0> >(class std::locale const &)
//  class std::moneypunct<wchar_t,1> const & __cdecl std::use_facet<class std::moneypunct<wchar_t,1>
// >(class std::locale const &)
//  class std::moneypunct<wchar_t,0> const & __cdecl std::use_facet<class std::moneypunct<wchar_t,0>
// >(class std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1f468;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd50;
  local_8 = 0;
  local_14[0] = DAT_032edd50;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edda8);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd50 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::money_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::money_get<unsigned
// short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
//  class std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::money_put<unsigned
// short,class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::money_put<wchar_t,class
// std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
//   10 names - too many to list
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1f505;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd54;
  local_8 = 0;
  local_14[0] = DAT_032edd54;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd74);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd54 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::codecvt<unsigned short,char,int> const & __cdecl std::use_facet<class
// std::codecvt<unsigned short,char,int> >(class std::locale const &)
//  class std::codecvt<wchar_t,char,int> const & __cdecl std::use_facet<class
// std::codecvt<wchar_t,char,int> >(class std::locale const &)
//  class std::ctype<unsigned short> const & __cdecl std::use_facet<class std::ctype<unsigned short>
// >(class std::locale const &)
//  class std::ctype<wchar_t> const & __cdecl std::use_facet<class std::ctype<wchar_t> >(class
// std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb1f5a2;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd58;
  local_8 = 0;
  local_14[0] = DAT_032edd58;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032bc820);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd58 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// Library Function - Single Match
//  public: char const * __thiscall std::_Locinfo::_Getdays(void)const 
// 
// Library: Visual Studio 2008 Release

char * __thiscall std::_Locinfo::_Getdays(_Locinfo *this)

{
  char *pcVar1;
  
  pcVar1 = __Getdays();
  if (pcVar1 != (char *)0x0) {
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (this + 4),pcVar1);
    _free(pcVar1);
  }
  if (*(int *)(this + 0x18) == 0) {
    pcVar1 = ":Sun:Sunday:Mon:Monday:Tue:Tuesday:Wed:Wednesday:Thu:Thursday:Fri:Friday:Sat:Saturday"
    ;
  }
  else if (*(uint *)(this + 0x1c) < 0x10) {
    pcVar1 = (char *)(this + 8);
  }
  else {
    pcVar1 = *(char **)(this + 8);
  }
  return pcVar1;
}



// Library Function - Single Match
//  public: char const * __thiscall std::_Locinfo::_Getmonths(void)const 
// 
// Library: Visual Studio 2008 Release

char * __thiscall std::_Locinfo::_Getmonths(_Locinfo *this)

{
  char *pcVar1;
  
  pcVar1 = __Getmonths();
  if (pcVar1 != (char *)0x0) {
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               (this + 0x20),pcVar1);
    _free(pcVar1);
  }
  if (*(int *)(this + 0x34) == 0) {
    pcVar1 = 
    ":Jan:January:Feb:February:Mar:March:Apr:April:May:May:Jun:June:Jul:July:Aug:August:Sep:September:Oct:October:Nov:November:Dec:December"
    ;
  }
  else if (*(uint *)(this + 0x38) < 0x10) {
    pcVar1 = (char *)(this + 0x24);
  }
  else {
    pcVar1 = *(char **)(this + 0x24);
  }
  return pcVar1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_put(class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,unsigned short,bool)const 
//  protected: virtual class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,wchar_t,bool)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_put(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,
      undefined4 param_5,char param_6)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined local_60 [28];
  undefined local_44 [4];
  locale local_40 [4];
  undefined4 local_3c;
  undefined4 local_38;
  int *local_34;
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  local_30 [4];
  undefined4 ***local_2c [4];
  uint local_1c;
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x50;
  local_8 = 0xb1f6bd;
  local_38 = param_1;
  local_34 = param_1_00;
  if ((*(uint *)(param_4 + 0x10) & 0x4000) == 0) {
    (**(code **)(*param_1_00 + 0x1c))(param_1,param_2,param_3,param_4,param_5,param_6);
  }
  else {
    uVar3 = FUN_00417498(local_40);
    local_8 = 0;
    local_3c = use_facet<>(uVar3);
    std::locale::~locale(local_40);
    std::
    basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
    ::
    basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
              (local_30);
    local_8 = 1;
    if (param_6 == '\0') {
      uVar3 = curr_symbol(local_60);
      local_8._0_1_ = 3;
    }
    else {
      uVar3 = positive_sign(local_60);
      local_8._0_1_ = 2;
    }
    FID_conflict_assign(uVar3,0,0xffffffff);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_00b1d36a(1,0);
    uVar1 = *(uint *)(param_4 + 0x18);
    if (((int)uVar1 < 1) || (uVar1 <= local_1c)) {
      iVar4 = 0;
    }
    else {
      iVar4 = uVar1 - local_1c;
    }
    if ((*(uint *)(param_4 + 0x10) & 0x1c0) != 0x40) {
      puVar5 = (undefined4 *)Rep(local_34,local_44,param_2,param_3,param_5,iVar4);
      param_2 = *puVar5;
      param_3 = puVar5[1];
      iVar4 = 0;
    }
    if (local_18 < 8) {
      local_2c[0] = local_2c;
    }
    puVar5 = (undefined4 *)Put(local_34,local_44,param_2,param_3,local_2c[0],local_1c);
    uVar3 = *puVar5;
    uVar2 = puVar5[1];
    *(undefined4 *)(param_4 + 0x18) = 0;
    Rep(local_34,local_38,uVar3,uVar2,param_5,iVar4);
    FUN_00b1d36a(1,0);
  }
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  private: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > __thiscall std::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getmfld(class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short>
// > &,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// &,bool,class std::ios_base &)const 
//  private: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getmfld(class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > &,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > &,bool,class std::ios_base
// &)const 
// 
// Library: Visual Studio 2008 Release

void Getmfld(basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
             *param_1,undefined4 param_2,undefined4 param_3,char param_4,int param_5)

{
  bool bVar1;
  char cVar2;
  ushort uVar3;
  short sVar4;
  short sVar5;
  wchar_t wVar6;
  undefined2 uVar7;
  undefined4 uVar8;
  int *piVar9;
  undefined4 ****ppppuVar10;
  uint uVar11;
  char *pcVar12;
  byte *pbVar13;
  short *psVar14;
  undefined4 *puVar15;
  wchar_t *pwVar16;
  locale *this;
  int iVar17;
  uint uVar18;
  undefined local_17c [28];
  undefined local_160 [28];
  undefined local_144 [28];
  undefined local_128 [28];
  undefined local_10c [28];
  undefined local_f0 [28];
  undefined local_d4 [8];
  undefined local_cc [8];
  undefined local_c4 [8];
  uint local_bc;
  char local_b8 [4];
  locale local_b4 [4];
  locale local_b0 [4];
  int local_ac;
  int local_a8;
  int *local_a4;
  int local_a0;
  undefined4 local_9c;
  undefined4 local_98;
  uint local_94;
  undefined4 local_90;
  undefined4 local_8c;
  int local_88;
  uint local_84;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_> *local_80;
  char local_7a;
  char local_79;
  undefined4 local_78;
  uint local_74;
  undefined4 local_70;
  char local_69;
  undefined local_68 [4];
  undefined4 ****local_64 [4];
  int local_54;
  uint local_50;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
  local_4c [20];
  uint local_38;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [4];
  undefined4 ****local_2c [5];
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x16c;
  local_8 = 0xb1f809;
  local_74 = 0;
  local_70 = param_2;
  local_80 = param_1;
  local_78 = param_3;
  local_ac = param_5;
  if (param_4 == '\0') {
    uVar8 = FUN_00417498(local_b0);
    local_8 = 2;
    piVar9 = (int *)use_facet<>(uVar8);
    this = local_b0;
  }
  else {
    uVar8 = FUN_00417498(local_b4);
    local_8 = 1;
    piVar9 = (int *)use_facet<>(uVar8);
    this = local_b4;
  }
  local_a4 = piVar9;
  std::locale::~locale(this);
  local_69 = '\0';
  local_79 = '\0';
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(local_4c);
  local_8 = 3;
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(param_1);
  local_74 = 1;
  (**(code **)(*piVar9 + 0x24))(local_b8);
  local_94 = 0;
  do {
    if (3 < local_94) break;
    cVar2 = local_b8[local_94];
    if (cVar2 == ' ') {
LAB_00b1f910:
      if (local_94 != 3) {
        uVar8 = FUN_00417498(&local_8c);
        local_8._0_1_ = 0xd;
        piVar9 = (int *)FUN_00413d06(uVar8);
        local_8 = CONCAT31(local_8._1_3_,3);
        std::locale::~locale((locale *)&local_8c);
        uVar8 = local_70;
        while (cVar2 = FUN_0040e881(uVar8,local_78), cVar2 != '\0') {
          uVar7 = FID_conflict_operator_();
          cVar2 = (**(code **)(*piVar9 + 8))(0x48,uVar7);
          if (cVar2 == '\0') break;
          Inc();
        }
      }
      goto LAB_00b1ff5b;
    }
    if (cVar2 == '$') {
      curr_symbol(local_30);
      local_8 = CONCAT31(local_8._1_3_,4);
      if ((*(byte *)(param_5 + 0x10) & 8) == 0) {
        ppppuVar10 = local_2c[0];
        if (local_18 < 8) {
          ppppuVar10 = local_2c;
        }
        sVar4 = FID_conflict_operator_();
        if (sVar4 == *(short *)ppppuVar10) goto LAB_00b1fe36;
LAB_00b1fe6d:
        FID_conflict_erase(0,0xffffffff);
      }
      else {
LAB_00b1fe36:
        if ((local_94 == 3) && (local_38 < 2)) {
          cVar2 = equal(local_78);
          if (cVar2 == '\0') {
            ppppuVar10 = local_2c[0];
            if (local_18 < 8) {
              ppppuVar10 = local_2c;
            }
            sVar4 = FID_conflict_operator_();
            if (sVar4 == *(short *)ppppuVar10) goto LAB_00b1fe79;
          }
          goto LAB_00b1fe6d;
        }
      }
LAB_00b1fe79:
      puVar15 = (undefined4 *)
                std::
                basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                ::begin((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                         *)local_30,local_d4);
      local_9c = *puVar15;
      local_98 = puVar15[1];
      while (cVar2 = FUN_0040e881(local_70,local_78), cVar2 != '\0') {
        uVar8 = FUN_00412721(local_cc);
        cVar2 = FUN_008477d0(uVar8);
        if (cVar2 == '\0') break;
        pwVar16 = std::
                  _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                               *)&local_9c);
        wVar6 = FID_conflict_operator_();
        if (wVar6 != *pwVar16) break;
        FUN_00847800();
        Inc();
      }
      uVar8 = FUN_00412721(local_c4);
      cVar2 = FUN_008477d0(uVar8);
      if (cVar2 != '\0') {
        local_69 = '\x01';
      }
LAB_00b1ff20:
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_00401829(1,0);
    }
    else {
      if (cVar2 == '+') {
        cVar2 = equal(local_78);
        if (cVar2 != '\0') goto LAB_00b1ff5b;
        iVar17 = positive_sign(local_128);
        local_74 = local_74 | 2;
        local_8 = CONCAT31(local_8._1_3_,5);
        if (*(int *)(iVar17 + 0x14) == 0) {
LAB_00b1fcba:
          local_7a = '\0';
        }
        else {
          positive_sign(local_f0);
          local_74 = local_74 | 4;
          local_8 = 6;
          psVar14 = (short *)FUN_004220c0(0);
          sVar4 = FID_conflict_operator_();
          local_7a = '\x01';
          if (*psVar14 != sVar4) goto LAB_00b1fcba;
        }
        if ((local_74 & 4) != 0) {
          local_74 = local_74 & 0xfffffffb;
          FUN_00401829(1,0);
        }
        local_8 = 3;
        if ((local_74 & 2) != 0) {
          local_74 = local_74 & 0xfffffffd;
          FUN_00401829(1,0);
        }
        if (local_7a == '\0') {
          iVar17 = negative_sign(local_144);
          local_74 = local_74 | 8;
          local_8 = CONCAT31(local_8._1_3_,8);
          if (*(int *)(iVar17 + 0x14) == 0) {
LAB_00b1fd7e:
            bVar1 = false;
          }
          else {
            negative_sign(local_10c);
            local_74 = local_74 | 0x10;
            local_8 = 9;
            psVar14 = (short *)FUN_004220c0(0);
            sVar4 = FID_conflict_operator_();
            if (*psVar14 != sVar4) goto LAB_00b1fd7e;
            bVar1 = true;
          }
          if ((local_74 & 0x10) != 0) {
            local_74 = local_74 & 0xffffffef;
            FUN_00401829(1,0);
          }
          local_8 = 3;
          if ((local_74 & 8) != 0) {
            local_74 = local_74 & 0xfffffff7;
            FUN_00401829(1,0);
          }
          if (bVar1) {
            Inc();
            uVar8 = negative_sign(local_17c);
            local_8._0_1_ = 10;
            FID_conflict_assign(uVar8,0,0xffffffff);
            local_8 = CONCAT31(local_8._1_3_,3);
            FUN_00401829(1,0);
            local_79 = '\x01';
          }
          goto LAB_00b1ff5b;
        }
        Inc();
        uVar8 = positive_sign(local_160);
        local_8 = CONCAT31(local_8._1_3_,7);
        FID_conflict_assign(uVar8,0,0xffffffff);
        goto LAB_00b1ff20;
      }
      if (cVar2 == 'v') {
        local_88 = 0;
        local_a0 = (**(code **)(*piVar9 + 0x1c))();
        local_84 = _Maklocchr<>(0x30,0,local_a8 + 8);
        local_84 = local_84 & 0xffff;
        grouping(local_68);
        local_8._0_1_ = 0xb;
        if (local_54 == 0) {
LAB_00b1fb5d:
          while (cVar2 = FUN_0040e881(local_70,local_78), cVar2 != '\0') {
            uVar3 = FID_conflict_operator_();
            if ((uVar3 < (ushort)local_84) ||
               (uVar18 = FID_conflict_operator_(), (local_84 & 0xffff) + 9 < (uVar18 & 0xffff)))
            break;
            uVar7 = FID_conflict_operator_();
            FID_conflict_append(1,uVar7);
            Inc();
          }
LAB_00b1fb6e:
          sVar4 = (**(code **)(*piVar9 + 4))();
          uVar8 = local_70;
          cVar2 = FUN_0040e881(local_70,local_78);
          if (((cVar2 != '\0') && (sVar4 != 0)) &&
             (sVar5 = FID_conflict_operator_(), sVar5 == sVar4)) {
            while( true ) {
              Inc();
              cVar2 = FUN_0040e881(uVar8,local_78);
              if (cVar2 == '\0') break;
              if (local_a0 <= local_88) goto LAB_00b1fc18;
              uVar3 = FID_conflict_operator_();
              if ((uVar3 < (ushort)local_84) ||
                 (uVar18 = FID_conflict_operator_(), (local_84 & 0xffff) + 9 < (uVar18 & 0xffff)))
              break;
              uVar7 = FID_conflict_operator_();
              FID_conflict_append(1,uVar7);
              local_88 = local_88 + 1;
            }
            if (local_88 < local_a0) {
              local_69 = '\x01';
            }
          }
LAB_00b1fc18:
          if (*(int *)(local_80 + 0x14) == 0) {
            local_69 = '\x01';
          }
          else if (local_88 < local_a0) {
            iVar17 = local_a0 - local_88;
            do {
              FID_conflict_append(1,local_84);
              iVar17 = iVar17 + -1;
            } while (iVar17 != 0);
          }
        }
        else {
          uVar3 = (**(code **)(*piVar9 + 8))();
          local_bc = (uint)uVar3;
          if (uVar3 == 0) goto LAB_00b1fb5d;
          ppppuVar10 = local_64[0];
          if (local_50 < 0x10) {
            ppppuVar10 = local_64;
          }
          if (0x7e < *(byte *)ppppuVar10) goto LAB_00b1fb5d;
          uVar18 = 0;
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,1,'\0');
          uVar8 = local_70;
          local_8._0_1_ = 0xc;
          cVar2 = FUN_0040e881(local_70,local_78);
          if (cVar2 != '\0') {
            do {
              uVar3 = FID_conflict_operator_();
              if ((uVar3 < (ushort)local_84) ||
                 (uVar11 = FID_conflict_operator_(), (local_84 & 0xffff) + 9 < (uVar11 & 0xffff))) {
                pcVar12 = std::
                          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          ::operator[](local_30,uVar18);
                if (*pcVar12 == '\0') break;
                sVar4 = FID_conflict_operator_();
                if (sVar4 != (short)local_bc) break;
                std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                append(local_30,1,'\0');
                uVar18 = uVar18 + 1;
              }
              else {
                uVar7 = FID_conflict_operator_();
                FID_conflict_append(1,uVar7);
                pcVar12 = std::
                          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          ::operator[](local_30,uVar18);
                if (*pcVar12 != '\x7f') {
                  pcVar12 = std::
                            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                            ::operator[](local_30,uVar18);
                  *pcVar12 = *pcVar12 + '\x01';
                }
              }
              Inc();
              cVar2 = FUN_0040e881(uVar8,local_78);
            } while (cVar2 != '\0');
            if (uVar18 != 0) {
              pcVar12 = std::
                        basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        ::operator[](local_30,uVar18);
              if (*pcVar12 < '\x01') {
                local_69 = '\x01';
              }
              else {
                uVar18 = uVar18 + 1;
              }
            }
          }
          ppppuVar10 = local_64[0];
          if (local_50 < 0x10) {
            ppppuVar10 = local_64;
          }
          if (local_69 == '\0') {
            while ((uVar18 != 0 && (*(byte *)ppppuVar10 != 0x7f))) {
              uVar18 = uVar18 - 1;
              if (((uVar18 != 0) &&
                  (pbVar13 = (byte *)std::
                                     basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                                     ::operator[](local_30,uVar18), *(byte *)ppppuVar10 != *pbVar13)
                  ) || ((uVar18 == 0 &&
                        (pcVar12 = std::
                                   basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                                   ::operator[](local_30,0), (char)*(byte *)ppppuVar10 < *pcVar12)))
                 ) {
                local_69 = '\x01';
                goto LAB_00b1fae8;
              }
              if ('\0' < (char)*(byte *)(undefined4 ****)((int)ppppuVar10 + 1)) {
                ppppuVar10 = (undefined4 ****)((int)ppppuVar10 + 1);
              }
            }
            local_8._0_1_ = 0xb;
            FUN_004017b2(1,0);
            goto LAB_00b1fb6e;
          }
LAB_00b1fae8:
          FUN_004017b2(1,0);
        }
        local_8 = CONCAT31(local_8._1_3_,3);
        FUN_004017b2(1,0);
      }
      else if (cVar2 == 'x') goto LAB_00b1f910;
    }
LAB_00b1ff5b:
    local_94 = local_94 + 1;
    piVar9 = local_a4;
    param_5 = local_ac;
  } while (local_69 == '\0');
  if (local_69 == '\0') {
    if (1 < local_38) {
      local_90 = 0;
      local_8c = 0;
      puVar15 = (undefined4 *)
                std::
                basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                ::begin(local_4c,local_c4);
      local_90 = *puVar15;
      local_8c = puVar15[1];
      while( true ) {
        uVar8 = FUN_00412721(&local_9c);
        FUN_00847800(uVar8);
        cVar2 = FUN_008477d0(uVar8);
        if ((cVar2 == '\0') || (cVar2 = FUN_0040e881(local_70,local_78), cVar2 == '\0')) break;
        pwVar16 = std::
                  _String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                  ::operator*((_String_const_iterator<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                               *)&local_90);
        wVar6 = FID_conflict_operator_();
        if (wVar6 != *pwVar16) break;
        Inc();
      }
      uVar8 = FUN_00412721(local_c4);
      cVar2 = FUN_008477d0(uVar8);
      if (cVar2 != '\0') goto LAB_00b20027;
    }
    if (local_79 != '\0') {
      uVar7 = _Maklocchr<>(0x2d,0,local_a8 + 8);
      FID_conflict_insert(0,1,uVar7);
    }
  }
  else {
LAB_00b20027:
    FID_conflict_erase(0,0xffffffff);
  }
  FUN_00401829(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  private: class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __thiscall std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::_Putmfld(class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> >,bool,class std::ios_base &,unsigned
// short,bool,class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> >)const 
//  private: class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > __thiscall
// std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// >::_Putmfld(class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >,bool,class
// std::ios_base &,wchar_t,bool,class std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
Putmfld(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,char param_4,
       int param_5,undefined4 param_6,char param_7)

{
  char cVar1;
  undefined2 uVar2;
  undefined4 uVar3;
  int *piVar4;
  uint uVar5;
  undefined4 ****ppppuVar6;
  int iVar7;
  undefined4 *puVar8;
  undefined *puVar9;
  locale *this;
  uint uVar10;
  uint param_11;
  undefined4 uVar11;
  undefined local_12c [8];
  undefined local_124 [8];
  undefined local_11c [8];
  undefined local_114 [8];
  undefined local_10c [8];
  undefined local_104 [8];
  undefined local_fc [8];
  undefined local_f4 [8];
  undefined local_ec [8];
  undefined local_e4 [8];
  undefined local_dc [8];
  undefined local_d4 [8];
  undefined local_cc [8];
  undefined local_c4 [28];
  undefined local_a8 [8];
  undefined local_a0 [8];
  undefined local_98 [8];
  locale local_90 [4];
  locale local_8c [4];
  undefined4 local_88;
  undefined local_84 [4];
  uint local_80;
  uint local_7c;
  int local_78;
  uint local_74;
  uint local_70;
  char local_69;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
  local_68 [20];
  uint local_54;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
  local_4c [20];
  uint local_38;
  undefined local_30 [4];
  undefined4 ****local_2c [5];
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x11c;
  local_88 = param_1;
  local_78 = param_5;
  local_8 = 0;
  if (param_4 == '\0') {
    uVar3 = FUN_00417498(local_90);
    local_8 = CONCAT31(local_8._1_3_,2);
    piVar4 = (int *)use_facet<>(uVar3);
    this = local_90;
  }
  else {
    uVar3 = FUN_00417498(local_8c);
    local_8 = CONCAT31(local_8._1_3_,1);
    piVar4 = (int *)use_facet<>(uVar3);
    this = local_8c;
  }
  local_8 = local_8 & 0xffffff00;
  std::locale::~locale(this);
  uVar5 = _Maklocchr<>(0x30,0,param_1_00 + 8);
  local_7c = uVar5 & 0xffff;
  grouping(local_30);
  local_8 = CONCAT31(local_8._1_3_,3);
  local_70 = (**(code **)(*piVar4 + 0x1c))();
  if ((int)local_70 < 0) {
    local_70 = -local_70;
  }
  if (local_70 < param_11) {
    ppppuVar6 = local_2c[0];
    if (local_18 < 0x10) {
      ppppuVar6 = local_2c;
    }
    if (*(char *)ppppuVar6 != '\x7f') {
      ppppuVar6 = local_2c[0];
      if (local_18 < 0x10) {
        ppppuVar6 = local_2c;
      }
      if ('\0' < *(char *)ppppuVar6) {
        uVar5 = (**(code **)(*piVar4 + 8))();
        local_74 = uVar5 & 0xffff;
        if (local_18 < 0x10) {
          local_2c[0] = local_2c;
        }
        uVar5 = param_11 - local_70;
        ppppuVar6 = local_2c[0];
        while (((cVar1 = *(char *)ppppuVar6, cVar1 != '\x7f' && ('\0' < cVar1)) &&
               ((uint)(int)cVar1 < uVar5))) {
          uVar5 = uVar5 - (int)cVar1;
          FID_conflict_insert(uVar5,1,local_74);
          if ('\0' < *(char *)(undefined4 ****)((int)ppppuVar6 + 1)) {
            ppppuVar6 = (undefined4 ****)((int)ppppuVar6 + 1);
          }
        }
      }
    }
  }
  else {
    FID_conflict_insert(0,(local_70 - param_11) + 1,uVar5 & 0xffff);
  }
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(local_4c);
  local_8._0_1_ = 4;
  if (param_7 == '\0') {
    (**(code **)(*piVar4 + 0x20))(&local_74);
    uVar3 = positive_sign(local_c4);
    local_8._0_1_ = 6;
  }
  else {
    (**(code **)(*piVar4 + 0x24))();
    uVar3 = negative_sign(local_c4);
    local_8._0_1_ = 5;
  }
  FID_conflict_assign(uVar3,0,0xffffffff);
  FUN_00401829(1,0);
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(local_68);
  local_8._0_1_ = 7;
  if ((*(uint *)(local_78 + 0x10) & 8) != 0) {
    uVar3 = curr_symbol(local_c4);
    local_8._0_1_ = 8;
    FID_conflict_assign(uVar3,0,0xffffffff);
    local_8._0_1_ = 7;
    FUN_00401829(1,0);
  }
  uVar10 = 0;
  local_69 = '\0';
  uVar5 = 0;
  do {
    cVar1 = *(char *)((int)&local_74 + uVar5);
    if (cVar1 == ' ') {
      uVar10 = uVar10 + 1;
LAB_00b202b0:
      if (uVar5 != 3) {
        local_69 = '\x01';
      }
    }
    else if (cVar1 == '$') {
      uVar10 = uVar10 + local_54;
    }
    else if (cVar1 == '+') {
      uVar10 = uVar10 + local_38;
    }
    else if (cVar1 == 'v') {
      if (local_70 < param_11) {
        iVar7 = 0;
      }
      else {
        iVar7 = (local_70 - param_11) + 1;
      }
      uVar10 = uVar10 + (local_70 != 0) + param_11 + iVar7;
    }
    else if (cVar1 == 'x') goto LAB_00b202b0;
    uVar5 = uVar5 + 1;
  } while (uVar5 < 4);
  uVar5 = *(uint *)(local_78 + 0x18);
  if (((int)uVar5 < 1) || (uVar5 <= uVar10)) {
    iVar7 = 0;
  }
  else {
    iVar7 = uVar5 - uVar10;
  }
  uVar5 = *(uint *)(local_78 + 0x10) & 0x1c0;
  if ((uVar5 != 0x40) && ((uVar5 != 0x100 || (local_69 == '\0')))) {
    puVar8 = (undefined4 *)Rep(local_84,param_2,param_3,param_6,iVar7);
    param_2 = *puVar8;
    param_3 = puVar8[1];
    iVar7 = 0;
  }
  local_80 = 0;
  do {
    cVar1 = *(char *)((int)&local_74 + local_80);
    if (cVar1 == ' ') {
      puVar8 = (undefined4 *)Rep(local_98,param_2,param_3,param_6,1);
      param_2 = *puVar8;
      param_3 = puVar8[1];
LAB_00b204e4:
      if (uVar5 != 0x100) goto LAB_00b20512;
      puVar8 = (undefined4 *)Rep(local_a8,param_2,param_3,param_6,iVar7);
      iVar7 = 0;
LAB_00b20507:
      param_2 = *puVar8;
      param_3 = puVar8[1];
    }
    else {
      if (cVar1 == '$') {
        puVar8 = (undefined4 *)
                 std::
                 basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                 ::begin(local_68,local_114);
        uVar3 = puVar8[1];
        uVar11 = *puVar8;
        puVar9 = local_a0;
        uVar10 = local_54;
LAB_00b20371:
        puVar8 = (undefined4 *)Put(puVar9,param_2,param_3,uVar11,uVar3,uVar10);
        goto LAB_00b20507;
      }
      if (cVar1 == '+') {
        if (local_38 != 0) {
          puVar8 = (undefined4 *)
                   std::
                   basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                   ::begin(local_4c,local_124);
          uVar10 = 1;
          uVar3 = puVar8[1];
          uVar11 = *puVar8;
          puVar9 = local_f4;
          goto LAB_00b20371;
        }
      }
      else {
        if (cVar1 == 'v') {
          if (local_70 == 0) {
            puVar8 = (undefined4 *)
                     std::
                     basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                     ::begin((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                              *)&stack0x00000020,local_10c);
            uVar3 = puVar8[1];
            uVar11 = *puVar8;
            puVar9 = local_d4;
            uVar10 = param_11;
          }
          else if (local_70 < param_11) {
            puVar8 = (undefined4 *)
                     std::
                     basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                     ::begin((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                              *)&stack0x00000020,local_cc);
            puVar8 = (undefined4 *)
                     Put(local_11c,param_2,param_3,*puVar8,puVar8[1],param_11 - local_70);
            param_2 = *puVar8;
            param_3 = puVar8[1];
            uVar2 = (**(code **)(*piVar4 + 4))();
            FUN_0041767b(uVar2);
            puVar9 = local_12c;
            uVar10 = local_70;
            FUN_00412721(local_104);
            puVar8 = (undefined4 *)FUN_00825340(puVar9,uVar10);
            uVar3 = puVar8[1];
            uVar11 = *puVar8;
            puVar9 = local_e4;
            uVar10 = local_70;
          }
          else {
            FUN_0041767b(local_7c);
            uVar2 = (**(code **)(*piVar4 + 4))();
            FUN_0041767b(uVar2);
            puVar8 = (undefined4 *)Rep(local_dc,param_2,param_3,local_7c,local_70 - param_11);
            param_2 = *puVar8;
            param_3 = puVar8[1];
            puVar8 = (undefined4 *)
                     std::
                     basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                     ::begin((basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
                              *)&stack0x00000020,local_ec);
            uVar3 = puVar8[1];
            uVar11 = *puVar8;
            puVar9 = local_fc;
            uVar10 = param_11;
          }
          goto LAB_00b20371;
        }
        if (cVar1 == 'x') goto LAB_00b204e4;
      }
    }
LAB_00b20512:
    local_80 = local_80 + 1;
    if (3 < local_80) {
      if (1 < local_38) {
        uVar3 = 1;
        puVar9 = local_a8;
        std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
        begin(local_4c,local_98);
        puVar8 = (undefined4 *)FUN_00422680(puVar9,uVar3);
        puVar8 = (undefined4 *)Put(local_a0,param_2,param_3,*puVar8,puVar8[1],local_38 - 1);
        param_2 = *puVar8;
        param_3 = puVar8[1];
      }
      *(undefined4 *)(local_78 + 0x18) = 0;
      Rep(local_88,param_2,param_3,param_6,iVar7);
      FUN_00401829(1,0);
      FUN_00401829(1,0);
      FUN_004017b2(1,0);
      FUN_00401829(1,0);
      FUN_00a421fb();
      return;
    }
  } while( true );
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  protected: void __thiscall std::time_get<char,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > >::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::time_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Init(class std::_Locinfo const &)
// 
// Library: Visual Studio 2008 Release

void __thiscall Init(int param_1_00,_Locinfo *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  char *pcVar3;
  undefined4 uVar4;
  int iVar5;
  undefined local_20 [8];
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0xb205d2;
  local_18 = param_1_00;
  puVar2 = (undefined4 *)FUN_004170cc(local_20);
  puVar1 = (undefined4 *)(param_1_00 + 0x14);
  *puVar1 = *puVar2;
  *(undefined4 *)(param_1_00 + 0x18) = puVar2[1];
  *(undefined4 *)(param_1_00 + 8) = 0;
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  local_8 = 0;
  pcVar3 = std::_Locinfo::_Getdays(param_1);
  uVar4 = FUN_00416fd9(pcVar3,0,puVar1);
  *(undefined4 *)(param_1_00 + 8) = uVar4;
  pcVar3 = std::_Locinfo::_Getmonths(param_1);
  uVar4 = FUN_00416fd9(pcVar3,0,puVar1);
  *(undefined4 *)(param_1_00 + 0xc) = uVar4;
  iVar5 = __Getdateorder();
  *(int *)(param_1_00 + 0x10) = iVar5;
  return;
}



void Catch_All_00b20637(void)

{
  code *pcVar1;
  
  FUN_00b1bd25();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  private: int __cdecl std::num_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Getifld(char *,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > &,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > &,int,class
// std::locale const &)const 
//  private: int __cdecl std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Getifld(char *,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,int,class std::locale const &)const 
// 
// Library: Visual Studio 2008 Release

void Getifld(int param_1,char *param_2,undefined4 param_3,undefined4 param_4,uint param_5,
            undefined4 param_6)

{
  bool bVar1;
  char cVar2;
  byte bVar3;
  char cVar4;
  short sVar5;
  short sVar6;
  short sVar7;
  short sVar8;
  undefined2 uVar9;
  int *piVar10;
  void *pvVar11;
  char *pcVar12;
  uint uVar13;
  undefined4 ****ppppuVar14;
  size_t local_68;
  char *local_58;
  undefined local_4c [4];
  undefined4 ****local_48 [4];
  int local_38;
  uint local_34;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 100;
  local_8 = 0xb20655;
  piVar10 = (int *)use_facet<>(param_6);
  grouping(local_4c);
  sVar5 = 0;
  local_8 = 0;
  if (local_38 != 0) {
    sVar5 = (**(code **)(*piVar10 + 8))();
  }
  param_1 = param_1 + 8;
  sVar6 = _Maklocchr<>(0x30,0,param_1);
  local_58 = param_2;
  cVar2 = equal(param_4);
  if (cVar2 == '\0') {
    sVar7 = _Maklocchr<>(0x2b,0,param_1);
    sVar8 = FID_conflict_operator_();
    if (sVar8 == sVar7) {
      *param_2 = '+';
    }
    else {
      sVar7 = _Maklocchr<>(0x2d,0,param_1);
      sVar8 = FID_conflict_operator_();
      if (sVar8 != sVar7) goto LAB_00b20711;
      *param_2 = '-';
    }
    local_58 = param_2 + 1;
    Inc();
  }
LAB_00b20711:
  param_5 = param_5 & 0xe00;
  if (param_5 == 0x400) {
    bVar3 = 8;
  }
  else if (param_5 == 0x800) {
    bVar3 = 0x10;
  }
  else {
    bVar3 = -(param_5 != 0) & 10;
  }
  cVar2 = '\0';
  bVar1 = false;
  cVar4 = operator!=<>(param_3,param_4);
  if (cVar4 == '\0') {
LAB_00b207f2:
    if (bVar3 != 0) {
LAB_00b207f8:
      if (bVar3 != 10) goto LAB_00b207fe;
    }
    local_68 = 10;
  }
  else {
    sVar7 = FID_conflict_operator_();
    if (sVar7 != sVar6) goto LAB_00b207f2;
    cVar2 = '\x01';
    Inc();
    cVar4 = operator!=<>(param_3,param_4);
    if (cVar4 == '\0') {
LAB_00b207e5:
      if (bVar3 == 0) {
        bVar3 = 8;
        goto LAB_00b207f2;
      }
      goto LAB_00b207f8;
    }
    sVar6 = _Maklocchr<>(0x78,0,param_1);
    sVar7 = FID_conflict_operator_();
    if (sVar7 != sVar6) {
      sVar6 = _Maklocchr<>(0x58,0,param_1);
      sVar7 = FID_conflict_operator_();
      if (sVar7 != sVar6) goto LAB_00b207e5;
    }
    if ((bVar3 != 0) && (bVar3 != 0x10)) goto LAB_00b207e5;
    bVar3 = 0x10;
    cVar2 = '\0';
    Inc();
LAB_00b207fe:
    local_68 = ((bVar3 != 8) - 1 & 0xfffffff2) + 0x16;
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_30,1,cVar2);
  local_8 = CONCAT31(local_8._1_3_,1);
  uVar13 = 0;
  cVar4 = operator!=<>(param_3,param_4);
  if (cVar4 != '\0') {
    do {
      uVar9 = FID_conflict_operator_(param_1);
      cVar4 = _Maklocbyte<>(uVar9);
      *local_58 = cVar4;
      pvVar11 = _memchr("0123456789abcdefABCDEF",(int)cVar4,local_68);
      if (pvVar11 == (void *)0x0) {
        pcVar12 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  ::operator[](local_30,uVar13);
        if ((*pcVar12 == '\0') || (sVar5 == 0)) break;
        sVar6 = FID_conflict_operator_();
        if (sVar6 != sVar5) break;
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                  (local_30,1,'\0');
        uVar13 = uVar13 + 1;
      }
      else {
        if (((bVar1) || (*local_58 != '0')) && (local_58 < param_2 + 0x1f)) {
          local_58 = local_58 + 1;
          bVar1 = true;
        }
        cVar2 = '\x01';
        pcVar12 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  ::operator[](local_30,uVar13);
        if (*pcVar12 != '\x7f') {
          pcVar12 = std::
                    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                    operator[](local_30,uVar13);
          *pcVar12 = *pcVar12 + '\x01';
        }
      }
      Inc();
      cVar4 = operator!=<>(param_3,param_4);
    } while (cVar4 != '\0');
    if (uVar13 != 0) {
      pcVar12 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                operator[](local_30,uVar13);
      if (*pcVar12 < '\x01') {
        cVar2 = '\0';
      }
      else {
        uVar13 = uVar13 + 1;
      }
    }
  }
  if (local_34 < 0x10) {
    local_48[0] = local_48;
  }
  ppppuVar14 = local_48[0];
  if (cVar2 == '\0') {
LAB_00b2096c:
    local_58 = param_2;
  }
  else {
    while ((uVar13 != 0 && (*(char *)ppppuVar14 != '\x7f'))) {
      uVar13 = uVar13 - 1;
      if (uVar13 != 0) {
        pcVar12 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  ::operator[](local_30,uVar13);
        if (*(char *)ppppuVar14 != *pcVar12) goto LAB_00b2096c;
      }
      if (uVar13 == 0) {
        pcVar12 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  ::operator[](local_30,0);
        if (*(char *)ppppuVar14 < *pcVar12) goto LAB_00b2096c;
      }
      if ('\0' < *(char *)(undefined4 ****)((int)ppppuVar14 + 1)) {
        ppppuVar14 = (undefined4 ****)((int)ppppuVar14 + 1);
      }
    }
    if (!bVar1) {
      *local_58 = '0';
      local_58 = local_58 + 1;
    }
  }
  *local_58 = '\0';
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  private: int __cdecl std::num_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Getffld(char *,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > &,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > &,class
// std::locale const &)const 
//  private: int __cdecl std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Getffld(char *,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,class std::locale const &)const 
// 
// Library: Visual Studio 2008 Release

void Getffld(int param_1,char *param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5)

{
  bool bVar1;
  bool bVar2;
  char cVar3;
  ushort uVar4;
  short sVar5;
  short sVar6;
  ushort uVar7;
  int *piVar8;
  uint uVar9;
  undefined4 ****ppppuVar10;
  uint uVar11;
  char *pcVar12;
  lconv *plVar13;
  char *pcVar14;
  int local_64;
  uint local_60;
  char local_58;
  int local_54;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [28];
  undefined local_30 [4];
  undefined4 ****local_2c [5];
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x60;
  local_8 = 0xb209a5;
  piVar8 = (int *)use_facet<>(param_5);
  grouping(local_30);
  local_8 = 0;
  param_1 = param_1 + 8;
  uVar4 = _Maklocchr<>(0x30,0,param_1);
  uVar9 = (uint)uVar4;
  bVar1 = false;
  cVar3 = equal(param_4);
  pcVar14 = param_2;
  if (cVar3 == '\0') {
    sVar5 = _Maklocchr<>(0x2b,0,param_1);
    sVar6 = FID_conflict_operator_();
    if (sVar6 == sVar5) {
      *param_2 = '+';
    }
    else {
      sVar5 = _Maklocchr<>(0x2d,0,param_1);
      sVar6 = FID_conflict_operator_();
      if (sVar6 != sVar5) goto LAB_00b20a4b;
      *param_2 = '-';
    }
    Inc();
    pcVar14 = param_2 + 1;
  }
LAB_00b20a4b:
  local_54 = 0;
  local_64 = 0;
  bVar2 = false;
  ppppuVar10 = local_2c[0];
  if (local_18 < 0x10) {
    ppppuVar10 = local_2c;
  }
  local_58 = (char)uVar4;
  if (*(char *)ppppuVar10 == '\x7f') {
LAB_00b20bff:
    cVar3 = operator!=<>(param_3,param_4);
    if (cVar3 != '\0') {
      do {
        uVar7 = FID_conflict_operator_();
        if ((uVar7 < uVar4) || (uVar11 = FID_conflict_operator_(), uVar9 + 9 < (uVar11 & 0xffff)))
        break;
        if (local_54 < 0x24) {
          uVar7 = FID_conflict_operator_();
          if ((uVar7 != uVar4) || (local_54 != 0)) {
            cVar3 = FID_conflict_operator_();
            *pcVar14 = cVar3 + ('0' - local_58);
            pcVar14 = pcVar14 + 1;
            local_54 = local_54 + 1;
          }
        }
        else {
          local_64 = local_64 + 1;
        }
        bVar2 = true;
        Inc();
        cVar3 = operator!=<>(param_3,param_4);
      } while (cVar3 != '\0');
      goto LAB_00b20c7c;
    }
  }
  else {
    ppppuVar10 = local_2c[0];
    if (local_18 < 0x10) {
      ppppuVar10 = local_2c;
    }
    if (*(char *)ppppuVar10 < '\x01') goto LAB_00b20bff;
    sVar5 = (**(code **)(*piVar8 + 8))();
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_4c,1,'\0');
    local_60 = 0;
    local_8 = CONCAT31(local_8._1_3_,1);
    cVar3 = operator!=<>(param_3,param_4);
    if (cVar3 != '\0') {
      do {
        uVar7 = FID_conflict_operator_();
        if ((uVar7 < uVar4) || (uVar11 = FID_conflict_operator_(), uVar9 + 9 < (uVar11 & 0xffff))) {
          pcVar12 = std::
                    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                    operator[](local_4c,local_60);
          if ((*pcVar12 == '\0') ||
             ((sVar5 == 0 || (sVar6 = FID_conflict_operator_(), sVar6 != sVar5)))) break;
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                    (local_4c,1,'\0');
          local_60 = local_60 + 1;
        }
        else {
          bVar2 = true;
          if (local_54 < 0x24) {
            uVar7 = FID_conflict_operator_();
            if ((uVar7 != uVar4) || (local_54 != 0)) {
              cVar3 = FID_conflict_operator_();
              *pcVar14 = cVar3 + ('0' - local_58);
              pcVar14 = pcVar14 + 1;
              local_54 = local_54 + 1;
            }
          }
          else {
            local_64 = local_64 + 1;
          }
          pcVar12 = std::
                    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                    operator[](local_4c,local_60);
          if (*pcVar12 != '\x7f') {
            pcVar12 = std::
                      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                      operator[](local_4c,local_60);
            *pcVar12 = *pcVar12 + '\x01';
          }
        }
        Inc();
        cVar3 = operator!=<>(param_3,param_4);
      } while (cVar3 != '\0');
      if (local_60 != 0) {
        pcVar12 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  ::operator[](local_4c,local_60);
        if (*pcVar12 < '\x01') {
          bVar1 = true;
        }
        else {
          local_60 = local_60 + 1;
        }
      }
    }
    if (local_18 < 0x10) {
      local_2c[0] = local_2c;
    }
    ppppuVar10 = local_2c[0];
    if (!bVar1) {
      while( true ) {
        if ((local_60 == 0) || (*(char *)ppppuVar10 == '\x7f')) goto LAB_00b20bed;
        local_60 = local_60 - 1;
        if (((local_60 != 0) &&
            (pcVar12 = std::
                       basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       ::operator[](local_4c,local_60), *(char *)ppppuVar10 != *pcVar12)) ||
           ((local_60 == 0 &&
            (pcVar12 = std::
                       basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       ::operator[](local_4c,0), *(char *)ppppuVar10 < *pcVar12)))) break;
        if ('\0' < *(char *)(undefined4 ****)((int)ppppuVar10 + 1)) {
          ppppuVar10 = (undefined4 ****)((int)ppppuVar10 + 1);
        }
      }
      bVar1 = true;
    }
LAB_00b20bed:
    local_8 = local_8 & 0xffffff00;
    FUN_004017b2(1,0);
LAB_00b20c7c:
    if ((bVar2) && (local_54 == 0)) {
      *pcVar14 = '0';
      pcVar14 = pcVar14 + 1;
    }
  }
  cVar3 = operator!=<>(param_3,param_4);
  if (cVar3 != '\0') {
    sVar5 = (**(code **)(*piVar8 + 4))();
    sVar6 = FID_conflict_operator_();
    if (sVar6 == sVar5) {
      plVar13 = _localeconv();
      *pcVar14 = *plVar13->decimal_point;
      pcVar14 = pcVar14 + 1;
      Inc();
    }
  }
  if (local_54 == 0) {
    while ((cVar3 = operator!=<>(param_3,param_4), cVar3 != '\0' &&
           (uVar7 = FID_conflict_operator_(), uVar7 == uVar4))) {
      local_64 = local_64 + -1;
      bVar2 = true;
      Inc();
    }
    if (local_64 < 0) {
      *pcVar14 = '0';
      pcVar14 = pcVar14 + 1;
    }
  }
  while (((cVar3 = operator!=<>(param_3,param_4), cVar3 != '\0' &&
          (uVar7 = FID_conflict_operator_(), uVar4 <= uVar7)) &&
         (uVar11 = FID_conflict_operator_(), (uVar11 & 0xffff) <= uVar9 + 9))) {
    if (local_54 < 0x24) {
      cVar3 = FID_conflict_operator_();
      *pcVar14 = cVar3 + ('0' - local_58);
      pcVar14 = pcVar14 + 1;
      local_54 = local_54 + 1;
    }
    bVar2 = true;
    Inc();
  }
  if ((!bVar2) || (cVar3 = operator!=<>(param_3,param_4), cVar3 == '\0')) goto LAB_00b20ec2;
  sVar5 = _Maklocchr<>(0x65,0,param_1);
  sVar6 = FID_conflict_operator_();
  if (sVar6 != sVar5) {
    sVar5 = _Maklocchr<>(0x45,0,param_1);
    sVar6 = FID_conflict_operator_();
    if (sVar6 != sVar5) goto LAB_00b20ec2;
  }
  *pcVar14 = 'e';
  pcVar12 = pcVar14 + 1;
  Inc();
  local_54 = 0;
  bVar2 = false;
  cVar3 = equal(param_4);
  if (cVar3 == '\0') {
    sVar5 = _Maklocchr<>(0x2b,0,param_1);
    sVar6 = FID_conflict_operator_();
    if (sVar6 == sVar5) {
      *pcVar12 = '+';
    }
    else {
      sVar5 = _Maklocchr<>(0x2d,0,param_1);
      sVar6 = FID_conflict_operator_();
      if (sVar6 != sVar5) goto LAB_00b20e2a;
      *pcVar12 = '-';
    }
    Inc();
    pcVar12 = pcVar14 + 2;
  }
LAB_00b20e2a:
  pcVar14 = pcVar12;
  cVar3 = operator!=<>(param_3,param_4);
  if (cVar3 != '\0') {
    do {
      uVar7 = FID_conflict_operator_();
      if (uVar7 != uVar4) break;
      bVar2 = true;
      Inc();
      cVar3 = operator!=<>(param_3,param_4);
    } while (cVar3 != '\0');
    if (bVar2) {
      *pcVar14 = '0';
      pcVar14 = pcVar14 + 1;
    }
  }
  while (((cVar3 = operator!=<>(param_3,param_4), cVar3 != '\0' &&
          (uVar7 = FID_conflict_operator_(), uVar4 <= uVar7)) &&
         (uVar11 = FID_conflict_operator_(), (uVar11 & 0xffff) <= uVar9 + 9))) {
    if (local_54 < 8) {
      cVar3 = FID_conflict_operator_();
      *pcVar14 = cVar3 + ('0' - local_58);
      pcVar14 = pcVar14 + 1;
      local_54 = local_54 + 1;
    }
    bVar2 = true;
    Inc();
  }
LAB_00b20ec2:
  if ((bVar1) || (!bVar2)) {
    pcVar14 = param_2;
  }
  *pcVar14 = '\0';
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  private: class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __cdecl std::num_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::_Fput(class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,class std::ios_base &,unsigned short,char const *,unsigned
// int,unsigned int,unsigned int,unsigned int)const 
//  private: class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > __cdecl
// std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// >::_Fput(class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >,class
// std::ios_base &,wchar_t,char const *,unsigned int,unsigned int,unsigned int,unsigned int)const 
// 
// Library: Visual Studio 2008 Release

void Fput(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5,
         undefined4 param_6,char *param_7,uint param_8,uint param_9,uint param_10,size_t param_11)

{
  char cVar1;
  undefined4 uVar2;
  undefined2 uVar3;
  undefined4 uVar4;
  int *piVar5;
  lconv *plVar6;
  undefined4 ****ppppuVar7;
  char *_Str;
  uint uVar8;
  uint uVar9;
  undefined4 *puVar10;
  void *pvVar11;
  int iVar12;
  undefined *puVar13;
  char *_Control;
  locale local_7c [4];
  undefined4 local_78;
  int local_74;
  uint local_70;
  undefined local_6c [4];
  int *local_68;
  int local_64;
  undefined local_60 [4];
  void *local_5c;
  uint local_58;
  char local_54;
  undefined local_53;
  undefined local_52;
  void *local_50;
  undefined local_4c [4];
  undefined4 ****local_48 [5];
  uint local_34;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [20];
  uint local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x6c;
  local_8 = 0xb20ef5;
  local_78 = param_2;
  local_64 = param_5;
  uVar4 = FUN_00417498(local_7c);
  local_8 = 0;
  piVar5 = (int *)use_facet<>(uVar4);
  local_8 = 0xffffffff;
  local_68 = piVar5;
  std::locale::~locale(local_7c);
  grouping(local_4c);
  local_8 = 1;
  local_70 = (**(code **)(*piVar5 + 8))();
  local_70 = local_70 & 0xffff;
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_30);
  local_8 = CONCAT31(local_8._1_3_,2);
  local_58 = _Maklocchr<>(0x30,0,param_1 + 8);
  local_58 = local_58 & 0xffff;
  if ((*param_7 == '+') || (local_74 = 0, *param_7 == '-')) {
    local_74 = 1;
  }
  plVar6 = _localeconv();
  local_54 = *plVar6->decimal_point;
  local_53 = 0x65;
  local_52 = 0;
  local_5c = _memchr(param_7,0x65,param_11);
  local_50 = _memchr(param_7,(int)local_54,param_11);
  if (local_50 == (void *)0x0) {
    param_10 = 0;
  }
  ppppuVar7 = local_48[0];
  if (local_34 < 0x10) {
    ppppuVar7 = local_48;
  }
  if (*(char *)ppppuVar7 != '\x7f') {
    ppppuVar7 = local_48[0];
    if (local_34 < 0x10) {
      ppppuVar7 = local_48;
    }
    if ('\0' < *(char *)ppppuVar7) {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                (local_30,param_7,param_11);
      if (local_5c == (void *)0x0) {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                  (local_30,param_10,'0');
      }
      else {
        if (local_50 == (void *)0x0) {
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                    (local_30,param_8,'0');
          param_8 = 0;
        }
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
                  (local_30,(int)local_5c - (int)param_7,param_10,'0');
      }
      if (local_50 == (void *)0x0) {
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                  (local_30,param_8,'0');
      }
      else {
        uVar9 = (int)local_50 - (int)param_7;
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
                  (local_30,uVar9 + 1,param_9,'0');
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
                  (local_30,uVar9,param_8,'0');
        param_9 = 0;
      }
      param_8 = 0;
      ppppuVar7 = local_48[0];
      if (local_34 < 0x10) {
        ppppuVar7 = local_48;
      }
      _Control = &local_54;
      _Str = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
             operator[](local_30,0);
      local_50 = (void *)_strcspn(_Str,_Control);
      while (((cVar1 = *(char *)ppppuVar7, cVar1 != '\x7f' && ('\0' < cVar1)) &&
             ((uint)(int)cVar1 < (uint)((int)local_50 - local_74)))) {
        local_50 = (void *)((int)local_50 - (int)cVar1);
        std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
                  (local_30,(uint)local_50,1,'\0');
        if ('\0' < *(char *)(undefined4 ****)((int)ppppuVar7 + 1)) {
          ppppuVar7 = (undefined4 ****)((int)ppppuVar7 + 1);
        }
      }
      param_7 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                operator[](local_30,0);
      param_10 = 0;
      param_11 = local_1c;
    }
  }
  uVar9 = *(uint *)(local_64 + 0x18);
  uVar8 = param_8 + param_9 + param_10 + param_11;
  if (((int)uVar9 < 1) || (uVar9 <= uVar8)) {
    local_50 = (void *)0x0;
  }
  else {
    local_50 = (void *)(uVar9 - uVar8);
  }
  uVar9 = *(uint *)(local_64 + 0x10) & 0x1c0;
  if (uVar9 != 0x40) {
    if ((uVar9 == 0x100) && (local_74 != 0)) {
      puVar10 = (undefined4 *)Putc(param_1,local_60,param_3,param_4,param_7,1);
      param_3 = *puVar10;
      param_4 = puVar10[1];
      param_7 = param_7 + 1;
      param_11 = param_11 - 1;
    }
    puVar10 = (undefined4 *)Rep(param_1,local_60,param_3,param_4,param_6,local_50);
    param_3 = *puVar10;
    param_4 = puVar10[1];
    local_50 = (void *)0x0;
  }
  pvVar11 = _memchr(param_7,(int)local_54,param_11);
  if (pvVar11 != (void *)0x0) {
    iVar12 = ((int)pvVar11 - (int)param_7) + 1;
    puVar10 = (undefined4 *)
              Putgrouped(param_1,local_60,param_3,param_4,param_7,(int)pvVar11 - (int)param_7,
                         local_70);
    puVar10 = (undefined4 *)Rep(param_1,local_60,*puVar10,puVar10[1],local_58,param_8);
    uVar4 = *puVar10;
    uVar2 = puVar10[1];
    uVar3 = (**(code **)(*local_68 + 4))();
    puVar10 = (undefined4 *)Rep(param_1,local_6c,uVar4,uVar2,uVar3,1);
    puVar10 = (undefined4 *)Rep(param_1,local_6c,*puVar10,puVar10[1],local_58,param_9);
    param_3 = *puVar10;
    param_11 = param_11 - iVar12;
    param_4 = puVar10[1];
    param_7 = param_7 + iVar12;
  }
  pvVar11 = _memchr(param_7,0x65,param_11);
  if (pvVar11 != (void *)0x0) {
    iVar12 = ((int)pvVar11 - (int)param_7) + 1;
    puVar10 = (undefined4 *)
              Putgrouped(param_1,local_6c,param_3,param_4,param_7,(int)pvVar11 - (int)param_7,
                         local_70);
    puVar10 = (undefined4 *)Rep(param_1,local_6c,*puVar10,puVar10[1],local_58,param_10);
    param_10 = 0;
    puVar13 = &DAT_00fad9b4;
    if ((*(byte *)(local_64 + 0x10) & 4) == 0) {
      puVar13 = &DAT_00fad9b8;
    }
    puVar10 = (undefined4 *)Putc(param_1,local_6c,*puVar10,puVar10[1],puVar13,1);
    param_3 = *puVar10;
    param_11 = param_11 - iVar12;
    param_4 = puVar10[1];
    param_7 = param_7 + iVar12;
  }
  puVar10 = (undefined4 *)Putgrouped(param_1,local_6c,param_3,param_4,param_7,param_11,local_70);
  puVar10 = (undefined4 *)Rep(param_1,local_60,*puVar10,puVar10[1],local_58,param_10);
  uVar4 = *puVar10;
  uVar2 = puVar10[1];
  *(undefined4 *)(local_64 + 0x18) = 0;
  Rep(param_1,local_78,uVar4,uVar2,param_6,local_50);
  FUN_004017b2(1,0);
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  private: class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __cdecl std::num_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::_Iput(class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,class std::ios_base &,unsigned short,char *,unsigned int)const
// 
//  private: class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > __cdecl
// std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// >::_Iput(class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >,class
// std::ios_base &,wchar_t,char *,unsigned int)const 
// 
// Library: Visual Studio 2008 Release

void Iput(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,int param_5,
         undefined4 param_6,char *param_7,uint param_8)

{
  char cVar1;
  undefined4 uVar2;
  undefined2 uVar3;
  undefined4 uVar4;
  undefined4 ****ppppuVar5;
  rsize_t _DstSize;
  uint uVar6;
  undefined4 *puVar7;
  int iVar8;
  locale local_54 [4];
  undefined4 local_50;
  int *local_4c;
  undefined local_48 [4];
  int local_44;
  undefined local_40 [4];
  int local_3c;
  undefined4 local_38;
  undefined4 ****local_34;
  undefined local_30 [4];
  undefined4 ****local_2c [5];
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x44;
  local_8 = 0xb21341;
  local_38 = param_1;
  local_50 = param_2;
  local_44 = param_5;
  uVar4 = FUN_00417498(local_54);
  local_8 = 0;
  local_4c = (int *)use_facet<>(uVar4);
  local_8 = 0xffffffff;
  std::locale::~locale(local_54);
  grouping(local_30);
  cVar1 = *param_7;
  local_8 = 1;
  if ((cVar1 == '+') || (cVar1 == '-')) {
    local_3c = 1;
  }
  else if ((cVar1 == '0') && ((param_7[1] == 'x' || (param_7[1] == 'X')))) {
    local_3c = 2;
  }
  else {
    local_3c = 0;
  }
  ppppuVar5 = local_2c[0];
  if (local_18 < 0x10) {
    ppppuVar5 = local_2c;
  }
  if (*(char *)ppppuVar5 != '\x7f') {
    ppppuVar5 = local_2c[0];
    if (local_18 < 0x10) {
      ppppuVar5 = local_2c;
    }
    if ('\0' < *(char *)ppppuVar5) {
      uVar6 = param_8;
      if (local_18 < 0x10) {
        local_34 = local_2c;
      }
      else {
        local_34 = local_2c[0];
      }
      while (((cVar1 = *(char *)local_34, cVar1 != '\x7f' && ('\0' < cVar1)) &&
             ((uint)(int)cVar1 < uVar6 - local_3c))) {
        uVar6 = uVar6 - (int)cVar1;
        _DstSize = (param_8 - uVar6) + 1;
        _memmove_s(param_7 + uVar6 + 1,_DstSize,param_7 + uVar6,_DstSize);
        param_8 = param_8 + 1;
        param_7[uVar6] = '\0';
        param_5 = local_44;
        if ('\0' < *(char *)(undefined4 ****)((int)local_34 + 1)) {
          local_34 = (undefined4 ****)((int)local_34 + 1);
        }
      }
    }
  }
  uVar6 = *(uint *)(param_5 + 0x18);
  if (((int)uVar6 < 1) || (uVar6 <= param_8)) {
    iVar8 = 0;
  }
  else {
    iVar8 = uVar6 - param_8;
  }
  uVar6 = *(uint *)(param_5 + 0x10) & 0x1c0;
  if (uVar6 != 0x40) {
    if (uVar6 == 0x100) {
      puVar7 = (undefined4 *)Putc(local_38,local_48,param_3,param_4,param_7,local_3c);
      param_8 = param_8 - local_3c;
      param_7 = param_7 + local_3c;
      puVar7 = (undefined4 *)Rep(local_38,local_48,*puVar7,puVar7[1],param_6,iVar8);
    }
    else {
      puVar7 = (undefined4 *)Rep(local_38,local_48,param_3,param_4,param_6,iVar8);
    }
    param_3 = *puVar7;
    param_4 = puVar7[1];
    iVar8 = 0;
  }
  uVar3 = (**(code **)(*local_4c + 8))();
  puVar7 = (undefined4 *)Putgrouped(local_38,local_40,param_3,param_4,param_7,param_8,uVar3);
  uVar4 = *puVar7;
  uVar2 = puVar7[1];
  *(undefined4 *)(param_5 + 0x18) = 0;
  Rep(local_38,local_50,uVar4,uVar2,param_6,iVar8);
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  private: class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> > __thiscall std::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getmfld(class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short>
// > &,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// &,bool,class std::ios_base &)const 
//  private: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getmfld(class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > &,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > &,bool,class std::ios_base
// &)const 
// 
// Library: Visual Studio 2008 Release

void Getmfld(basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
             *param_1,undefined4 param_2,undefined4 param_3,char param_4,int param_5)

{
  bool bVar1;
  char cVar2;
  short sVar3;
  short sVar4;
  ushort uVar5;
  undefined2 uVar6;
  undefined4 uVar7;
  int *piVar8;
  undefined4 ****ppppuVar9;
  uint uVar10;
  char *pcVar11;
  byte *pbVar12;
  short *psVar13;
  undefined4 *puVar14;
  ushort *puVar15;
  locale *this;
  int iVar16;
  uint uVar17;
  undefined local_17c [28];
  undefined local_160 [28];
  undefined local_144 [28];
  undefined local_128 [28];
  undefined local_10c [28];
  undefined local_f0 [28];
  undefined local_d4 [8];
  undefined local_cc [8];
  undefined local_c4 [8];
  uint local_bc;
  char local_b8 [4];
  locale local_b4 [4];
  locale local_b0 [4];
  int local_ac;
  int local_a8;
  int *local_a4;
  int local_a0;
  undefined4 local_9c;
  undefined4 local_98;
  uint local_94;
  undefined4 local_90;
  undefined4 local_8c;
  int local_88;
  uint local_84;
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  *local_80;
  char local_7a;
  char local_79;
  undefined4 local_78;
  uint local_74;
  undefined4 local_70;
  char local_69;
  undefined local_68 [4];
  undefined4 ****local_64 [4];
  int local_54;
  uint local_50;
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  local_4c [20];
  uint local_38;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [4];
  undefined4 ****local_2c [5];
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x16c;
  local_8 = 0xb21530;
  local_74 = 0;
  local_70 = param_2;
  local_80 = param_1;
  local_78 = param_3;
  local_ac = param_5;
  if (param_4 == '\0') {
    uVar7 = FUN_00417498(local_b0);
    local_8 = 2;
    piVar8 = (int *)use_facet<>(uVar7);
    this = local_b0;
  }
  else {
    uVar7 = FUN_00417498(local_b4);
    local_8 = 1;
    piVar8 = (int *)use_facet<>(uVar7);
    this = local_b4;
  }
  local_a4 = piVar8;
  std::locale::~locale(this);
  local_69 = '\0';
  local_79 = '\0';
  std::
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  ::
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
            (local_4c);
  local_8 = 3;
  std::
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  ::
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
            (param_1);
  local_74 = 1;
  (**(code **)(*piVar8 + 0x24))(local_b8);
  local_94 = 0;
  do {
    if (3 < local_94) break;
    cVar2 = local_b8[local_94];
    if (cVar2 == ' ') {
LAB_00b21637:
      if (local_94 != 3) {
        uVar7 = FUN_00417498(&local_8c);
        local_8._0_1_ = 0xd;
        piVar8 = (int *)use_facet<>(uVar7);
        local_8 = CONCAT31(local_8._1_3_,3);
        std::locale::~locale((locale *)&local_8c);
        uVar7 = local_70;
        while (cVar2 = operator!=<>(uVar7,local_78), cVar2 != '\0') {
          uVar6 = FID_conflict_operator_();
          cVar2 = (**(code **)(*piVar8 + 8))(0x48,uVar6);
          if (cVar2 == '\0') break;
          Inc();
        }
      }
      goto LAB_00b21c82;
    }
    if (cVar2 == '$') {
      curr_symbol(local_30);
      local_8 = CONCAT31(local_8._1_3_,4);
      if ((*(byte *)(param_5 + 0x10) & 8) == 0) {
        ppppuVar9 = local_2c[0];
        if (local_18 < 8) {
          ppppuVar9 = local_2c;
        }
        sVar3 = FID_conflict_operator_();
        if (sVar3 == *(short *)ppppuVar9) goto LAB_00b21b5d;
LAB_00b21b94:
        FID_conflict_erase(0,0xffffffff);
      }
      else {
LAB_00b21b5d:
        if ((local_94 == 3) && (local_38 < 2)) {
          cVar2 = equal(local_78);
          if (cVar2 == '\0') {
            ppppuVar9 = local_2c[0];
            if (local_18 < 8) {
              ppppuVar9 = local_2c;
            }
            sVar3 = FID_conflict_operator_();
            if (sVar3 == *(short *)ppppuVar9) goto LAB_00b21ba0;
          }
          goto LAB_00b21b94;
        }
      }
LAB_00b21ba0:
      puVar14 = (undefined4 *)
                std::
                basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                ::begin((basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                         *)local_30,local_d4);
      local_9c = *puVar14;
      local_98 = puVar14[1];
      while (cVar2 = operator!=<>(local_70,local_78), cVar2 != '\0') {
        uVar7 = FID_conflict_end(local_cc);
        cVar2 = FID_conflict_operator__(uVar7);
        if (cVar2 == '\0') break;
        puVar15 = std::
                  _String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                  ::operator*((_String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                               *)&local_9c);
        uVar5 = FID_conflict_operator_();
        if (uVar5 != *puVar15) break;
        FID_conflict_operator__();
        Inc();
      }
      uVar7 = FID_conflict_end(local_c4);
      cVar2 = FID_conflict_operator__(uVar7);
      if (cVar2 != '\0') {
        local_69 = '\x01';
      }
LAB_00b21c47:
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_00b1d36a(1,0);
    }
    else {
      if (cVar2 == '+') {
        cVar2 = equal(local_78);
        if (cVar2 != '\0') goto LAB_00b21c82;
        iVar16 = positive_sign(local_128);
        local_74 = local_74 | 2;
        local_8 = CONCAT31(local_8._1_3_,5);
        if (*(int *)(iVar16 + 0x14) == 0) {
LAB_00b219e1:
          local_7a = '\0';
        }
        else {
          positive_sign(local_f0);
          local_74 = local_74 | 4;
          local_8 = 6;
          psVar13 = (short *)FID_conflict_operator__(0);
          sVar3 = FID_conflict_operator_();
          local_7a = '\x01';
          if (*psVar13 != sVar3) goto LAB_00b219e1;
        }
        if ((local_74 & 4) != 0) {
          local_74 = local_74 & 0xfffffffb;
          FUN_00b1d36a(1,0);
        }
        local_8 = 3;
        if ((local_74 & 2) != 0) {
          local_74 = local_74 & 0xfffffffd;
          FUN_00b1d36a(1,0);
        }
        if (local_7a == '\0') {
          iVar16 = negative_sign(local_144);
          local_74 = local_74 | 8;
          local_8 = CONCAT31(local_8._1_3_,8);
          if (*(int *)(iVar16 + 0x14) == 0) {
LAB_00b21aa5:
            bVar1 = false;
          }
          else {
            negative_sign(local_10c);
            local_74 = local_74 | 0x10;
            local_8 = 9;
            psVar13 = (short *)FID_conflict_operator__(0);
            sVar3 = FID_conflict_operator_();
            if (*psVar13 != sVar3) goto LAB_00b21aa5;
            bVar1 = true;
          }
          if ((local_74 & 0x10) != 0) {
            local_74 = local_74 & 0xffffffef;
            FUN_00b1d36a(1,0);
          }
          local_8 = 3;
          if ((local_74 & 8) != 0) {
            local_74 = local_74 & 0xfffffff7;
            FUN_00b1d36a(1,0);
          }
          if (bVar1) {
            Inc();
            uVar7 = negative_sign(local_17c);
            local_8._0_1_ = 10;
            FID_conflict_assign(uVar7,0,0xffffffff);
            local_8 = CONCAT31(local_8._1_3_,3);
            FUN_00b1d36a(1,0);
            local_79 = '\x01';
          }
          goto LAB_00b21c82;
        }
        Inc();
        uVar7 = positive_sign(local_160);
        local_8 = CONCAT31(local_8._1_3_,7);
        FID_conflict_assign(uVar7,0,0xffffffff);
        goto LAB_00b21c47;
      }
      if (cVar2 == 'v') {
        local_88 = 0;
        local_a0 = (**(code **)(*piVar8 + 0x1c))();
        local_84 = _Maklocchr<>(0x30,0,local_a8 + 8);
        local_84 = local_84 & 0xffff;
        grouping(local_68);
        local_8._0_1_ = 0xb;
        if (local_54 == 0) {
LAB_00b21884:
          while (cVar2 = operator!=<>(local_70,local_78), cVar2 != '\0') {
            uVar5 = FID_conflict_operator_();
            if ((uVar5 < (ushort)local_84) ||
               (uVar17 = FID_conflict_operator_(), (local_84 & 0xffff) + 9 < (uVar17 & 0xffff)))
            break;
            uVar6 = FID_conflict_operator_();
            FID_conflict_append(1,uVar6);
            Inc();
          }
LAB_00b21895:
          sVar3 = (**(code **)(*piVar8 + 4))();
          uVar7 = local_70;
          cVar2 = operator!=<>(local_70,local_78);
          if (((cVar2 != '\0') && (sVar3 != 0)) &&
             (sVar4 = FID_conflict_operator_(), sVar4 == sVar3)) {
            while( true ) {
              Inc();
              cVar2 = operator!=<>(uVar7,local_78);
              if (cVar2 == '\0') break;
              if (local_a0 <= local_88) goto LAB_00b2193f;
              uVar5 = FID_conflict_operator_();
              if ((uVar5 < (ushort)local_84) ||
                 (uVar17 = FID_conflict_operator_(), (local_84 & 0xffff) + 9 < (uVar17 & 0xffff)))
              break;
              uVar6 = FID_conflict_operator_();
              FID_conflict_append(1,uVar6);
              local_88 = local_88 + 1;
            }
            if (local_88 < local_a0) {
              local_69 = '\x01';
            }
          }
LAB_00b2193f:
          if (*(int *)(local_80 + 0x14) == 0) {
            local_69 = '\x01';
          }
          else if (local_88 < local_a0) {
            iVar16 = local_a0 - local_88;
            do {
              FID_conflict_append(1,local_84);
              iVar16 = iVar16 + -1;
            } while (iVar16 != 0);
          }
        }
        else {
          uVar5 = (**(code **)(*piVar8 + 8))();
          local_bc = (uint)uVar5;
          if (uVar5 == 0) goto LAB_00b21884;
          ppppuVar9 = local_64[0];
          if (local_50 < 0x10) {
            ppppuVar9 = local_64;
          }
          if (0x7e < *(byte *)ppppuVar9) goto LAB_00b21884;
          uVar17 = 0;
          std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,1,'\0');
          uVar7 = local_70;
          local_8._0_1_ = 0xc;
          cVar2 = operator!=<>(local_70,local_78);
          if (cVar2 != '\0') {
            do {
              uVar5 = FID_conflict_operator_();
              if ((uVar5 < (ushort)local_84) ||
                 (uVar10 = FID_conflict_operator_(), (local_84 & 0xffff) + 9 < (uVar10 & 0xffff))) {
                pcVar11 = std::
                          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          ::operator[](local_30,uVar17);
                if (*pcVar11 == '\0') break;
                sVar3 = FID_conflict_operator_();
                if (sVar3 != (short)local_bc) break;
                std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                append(local_30,1,'\0');
                uVar17 = uVar17 + 1;
              }
              else {
                uVar6 = FID_conflict_operator_();
                FID_conflict_append(1,uVar6);
                pcVar11 = std::
                          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          ::operator[](local_30,uVar17);
                if (*pcVar11 != '\x7f') {
                  pcVar11 = std::
                            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                            ::operator[](local_30,uVar17);
                  *pcVar11 = *pcVar11 + '\x01';
                }
              }
              Inc();
              cVar2 = operator!=<>(uVar7,local_78);
            } while (cVar2 != '\0');
            if (uVar17 != 0) {
              pcVar11 = std::
                        basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        ::operator[](local_30,uVar17);
              if (*pcVar11 < '\x01') {
                local_69 = '\x01';
              }
              else {
                uVar17 = uVar17 + 1;
              }
            }
          }
          ppppuVar9 = local_64[0];
          if (local_50 < 0x10) {
            ppppuVar9 = local_64;
          }
          if (local_69 == '\0') {
            while ((uVar17 != 0 && (*(byte *)ppppuVar9 != 0x7f))) {
              uVar17 = uVar17 - 1;
              if (((uVar17 != 0) &&
                  (pbVar12 = (byte *)std::
                                     basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                                     ::operator[](local_30,uVar17), *(byte *)ppppuVar9 != *pbVar12))
                 || ((uVar17 == 0 &&
                     (pcVar11 = std::
                                basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                                ::operator[](local_30,0), (char)*(byte *)ppppuVar9 < *pcVar11)))) {
                local_69 = '\x01';
                goto LAB_00b2180f;
              }
              if ('\0' < (char)*(byte *)(undefined4 ****)((int)ppppuVar9 + 1)) {
                ppppuVar9 = (undefined4 ****)((int)ppppuVar9 + 1);
              }
            }
            local_8._0_1_ = 0xb;
            FUN_004017b2(1,0);
            goto LAB_00b21895;
          }
LAB_00b2180f:
          FUN_004017b2(1,0);
        }
        local_8 = CONCAT31(local_8._1_3_,3);
        FUN_004017b2(1,0);
      }
      else if (cVar2 == 'x') goto LAB_00b21637;
    }
LAB_00b21c82:
    local_94 = local_94 + 1;
    piVar8 = local_a4;
    param_5 = local_ac;
  } while (local_69 == '\0');
  if (local_69 == '\0') {
    if (1 < local_38) {
      local_90 = 0;
      local_8c = 0;
      puVar14 = (undefined4 *)
                std::
                basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                ::begin(local_4c,local_c4);
      local_90 = *puVar14;
      local_8c = puVar14[1];
      while( true ) {
        uVar7 = FID_conflict_end(&local_9c);
        FID_conflict_operator__(uVar7);
        cVar2 = FID_conflict_operator__(uVar7);
        if ((cVar2 == '\0') || (cVar2 = operator!=<>(local_70,local_78), cVar2 == '\0')) break;
        puVar15 = std::
                  _String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                  ::operator*((_String_const_iterator<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                               *)&local_90);
        uVar5 = FID_conflict_operator_();
        if (uVar5 != *puVar15) break;
        Inc();
      }
      uVar7 = FID_conflict_end(local_c4);
      cVar2 = FID_conflict_operator__(uVar7);
      if (cVar2 != '\0') goto LAB_00b21d4e;
    }
    if (local_79 != '\0') {
      uVar6 = _Maklocchr<>(0x2d,0,local_a8 + 8);
      FID_conflict_insert(0,1,uVar6);
    }
  }
  else {
LAB_00b21d4e:
    FID_conflict_erase(0,0xffffffff);
  }
  FUN_00b1d36a(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  private: class std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __thiscall std::money_put<unsigned short,class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::_Putmfld(class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> >,bool,class std::ios_base &,unsigned
// short,bool,class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class
// std::allocator<unsigned short> >)const 
//  private: class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > __thiscall
// std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// >::_Putmfld(class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >,bool,class
// std::ios_base &,wchar_t,bool,class std::basic_string<wchar_t,struct
// std::char_traits<wchar_t>,class std::allocator<wchar_t> >)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
Putmfld(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,char param_4,
       int param_5,undefined4 param_6,char param_7)

{
  char cVar1;
  undefined2 uVar2;
  undefined4 uVar3;
  int *piVar4;
  uint uVar5;
  undefined4 ****ppppuVar6;
  int iVar7;
  undefined4 *puVar8;
  undefined *puVar9;
  locale *this;
  uint uVar10;
  uint param_11;
  undefined4 uVar11;
  undefined local_12c [8];
  undefined local_124 [8];
  undefined local_11c [8];
  undefined local_114 [8];
  undefined local_10c [8];
  undefined local_104 [8];
  undefined local_fc [8];
  undefined local_f4 [8];
  undefined local_ec [8];
  undefined local_e4 [8];
  undefined local_dc [8];
  undefined local_d4 [8];
  undefined local_cc [8];
  undefined local_c4 [28];
  undefined local_a8 [8];
  undefined local_a0 [8];
  undefined local_98 [8];
  locale local_90 [4];
  locale local_8c [4];
  undefined4 local_88;
  undefined local_84 [4];
  uint local_80;
  uint local_7c;
  int local_78;
  uint local_74;
  uint local_70;
  char local_69;
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  local_68 [20];
  uint local_54;
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  local_4c [20];
  uint local_38;
  undefined local_30 [4];
  undefined4 ****local_2c [5];
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x11c;
  local_88 = param_1;
  local_78 = param_5;
  local_8 = 0;
  if (param_4 == '\0') {
    uVar3 = FUN_00417498(local_90);
    local_8 = CONCAT31(local_8._1_3_,2);
    piVar4 = (int *)use_facet<>(uVar3);
    this = local_90;
  }
  else {
    uVar3 = FUN_00417498(local_8c);
    local_8 = CONCAT31(local_8._1_3_,1);
    piVar4 = (int *)use_facet<>(uVar3);
    this = local_8c;
  }
  local_8 = local_8 & 0xffffff00;
  std::locale::~locale(this);
  uVar5 = _Maklocchr<>(0x30,0,param_1_00 + 8);
  local_7c = uVar5 & 0xffff;
  grouping(local_30);
  local_8 = CONCAT31(local_8._1_3_,3);
  local_70 = (**(code **)(*piVar4 + 0x1c))();
  if ((int)local_70 < 0) {
    local_70 = -local_70;
  }
  if (local_70 < param_11) {
    ppppuVar6 = local_2c[0];
    if (local_18 < 0x10) {
      ppppuVar6 = local_2c;
    }
    if (*(char *)ppppuVar6 != '\x7f') {
      ppppuVar6 = local_2c[0];
      if (local_18 < 0x10) {
        ppppuVar6 = local_2c;
      }
      if ('\0' < *(char *)ppppuVar6) {
        uVar5 = (**(code **)(*piVar4 + 8))();
        local_74 = uVar5 & 0xffff;
        if (local_18 < 0x10) {
          local_2c[0] = local_2c;
        }
        uVar5 = param_11 - local_70;
        ppppuVar6 = local_2c[0];
        while (((cVar1 = *(char *)ppppuVar6, cVar1 != '\x7f' && ('\0' < cVar1)) &&
               ((uint)(int)cVar1 < uVar5))) {
          uVar5 = uVar5 - (int)cVar1;
          FID_conflict_insert(uVar5,1,local_74);
          if ('\0' < *(char *)(undefined4 ****)((int)ppppuVar6 + 1)) {
            ppppuVar6 = (undefined4 ****)((int)ppppuVar6 + 1);
          }
        }
      }
    }
  }
  else {
    FID_conflict_insert(0,(local_70 - param_11) + 1,uVar5 & 0xffff);
  }
  std::
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  ::
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
            (local_4c);
  local_8._0_1_ = 4;
  if (param_7 == '\0') {
    (**(code **)(*piVar4 + 0x20))(&local_74);
    uVar3 = positive_sign(local_c4);
    local_8._0_1_ = 6;
  }
  else {
    (**(code **)(*piVar4 + 0x24))();
    uVar3 = negative_sign(local_c4);
    local_8._0_1_ = 5;
  }
  FID_conflict_assign(uVar3,0,0xffffffff);
  FUN_00b1d36a(1,0);
  std::
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  ::
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
            (local_68);
  local_8._0_1_ = 7;
  if ((*(uint *)(local_78 + 0x10) & 8) != 0) {
    uVar3 = curr_symbol(local_c4);
    local_8._0_1_ = 8;
    FID_conflict_assign(uVar3,0,0xffffffff);
    local_8._0_1_ = 7;
    FUN_00b1d36a(1,0);
  }
  uVar10 = 0;
  local_69 = '\0';
  uVar5 = 0;
  do {
    cVar1 = *(char *)((int)&local_74 + uVar5);
    if (cVar1 == ' ') {
      uVar10 = uVar10 + 1;
LAB_00b21fd7:
      if (uVar5 != 3) {
        local_69 = '\x01';
      }
    }
    else if (cVar1 == '$') {
      uVar10 = uVar10 + local_54;
    }
    else if (cVar1 == '+') {
      uVar10 = uVar10 + local_38;
    }
    else if (cVar1 == 'v') {
      if (local_70 < param_11) {
        iVar7 = 0;
      }
      else {
        iVar7 = (local_70 - param_11) + 1;
      }
      uVar10 = uVar10 + (local_70 != 0) + param_11 + iVar7;
    }
    else if (cVar1 == 'x') goto LAB_00b21fd7;
    uVar5 = uVar5 + 1;
  } while (uVar5 < 4);
  uVar5 = *(uint *)(local_78 + 0x18);
  if (((int)uVar5 < 1) || (uVar5 <= uVar10)) {
    iVar7 = 0;
  }
  else {
    iVar7 = uVar5 - uVar10;
  }
  uVar5 = *(uint *)(local_78 + 0x10) & 0x1c0;
  if ((uVar5 != 0x40) && ((uVar5 != 0x100 || (local_69 == '\0')))) {
    puVar8 = (undefined4 *)Rep(local_84,param_2,param_3,param_6,iVar7);
    param_2 = *puVar8;
    param_3 = puVar8[1];
    iVar7 = 0;
  }
  local_80 = 0;
  do {
    cVar1 = *(char *)((int)&local_74 + local_80);
    if (cVar1 == ' ') {
      puVar8 = (undefined4 *)Rep(local_98,param_2,param_3,param_6,1);
      param_2 = *puVar8;
      param_3 = puVar8[1];
LAB_00b2220b:
      if (uVar5 != 0x100) goto LAB_00b22239;
      puVar8 = (undefined4 *)Rep(local_a8,param_2,param_3,param_6,iVar7);
      iVar7 = 0;
LAB_00b2222e:
      param_2 = *puVar8;
      param_3 = puVar8[1];
    }
    else {
      if (cVar1 == '$') {
        puVar8 = (undefined4 *)
                 std::
                 basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                 ::begin(local_68,local_114);
        uVar3 = puVar8[1];
        uVar11 = *puVar8;
        puVar9 = local_a0;
        uVar10 = local_54;
LAB_00b22098:
        puVar8 = (undefined4 *)Put(puVar9,param_2,param_3,uVar11,uVar3,uVar10);
        goto LAB_00b2222e;
      }
      if (cVar1 == '+') {
        if (local_38 != 0) {
          puVar8 = (undefined4 *)
                   std::
                   basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                   ::begin(local_4c,local_124);
          uVar10 = 1;
          uVar3 = puVar8[1];
          uVar11 = *puVar8;
          puVar9 = local_f4;
          goto LAB_00b22098;
        }
      }
      else {
        if (cVar1 == 'v') {
          if (local_70 == 0) {
            puVar8 = (undefined4 *)
                     std::
                     basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                     ::begin((basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                              *)&stack0x00000020,local_10c);
            uVar3 = puVar8[1];
            uVar11 = *puVar8;
            puVar9 = local_d4;
            uVar10 = param_11;
          }
          else if (local_70 < param_11) {
            puVar8 = (undefined4 *)
                     std::
                     basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                     ::begin((basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                              *)&stack0x00000020,local_cc);
            puVar8 = (undefined4 *)
                     Put(local_11c,param_2,param_3,*puVar8,puVar8[1],param_11 - local_70);
            param_2 = *puVar8;
            param_3 = puVar8[1];
            uVar2 = (**(code **)(*piVar4 + 4))();
            FID_conflict_operator_(uVar2);
            puVar9 = local_12c;
            uVar10 = local_70;
            FID_conflict_end(local_104);
            puVar8 = (undefined4 *)FID_conflict_operator_(puVar9,uVar10);
            uVar3 = puVar8[1];
            uVar11 = *puVar8;
            puVar9 = local_e4;
            uVar10 = local_70;
          }
          else {
            FID_conflict_operator_(local_7c);
            uVar2 = (**(code **)(*piVar4 + 4))();
            FID_conflict_operator_(uVar2);
            puVar8 = (undefined4 *)Rep(local_dc,param_2,param_3,local_7c,local_70 - param_11);
            param_2 = *puVar8;
            param_3 = puVar8[1];
            puVar8 = (undefined4 *)
                     std::
                     basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                     ::begin((basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
                              *)&stack0x00000020,local_ec);
            uVar3 = puVar8[1];
            uVar11 = *puVar8;
            puVar9 = local_fc;
            uVar10 = param_11;
          }
          goto LAB_00b22098;
        }
        if (cVar1 == 'x') goto LAB_00b2220b;
      }
    }
LAB_00b22239:
    local_80 = local_80 + 1;
    if (3 < local_80) {
      if (1 < local_38) {
        uVar3 = 1;
        puVar9 = local_a8;
        std::
        basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
        ::begin(local_4c,local_98);
        puVar8 = (undefined4 *)FID_conflict_operator_(puVar9,uVar3);
        puVar8 = (undefined4 *)Put(local_a0,param_2,param_3,*puVar8,puVar8[1],local_38 - 1);
        param_2 = *puVar8;
        param_3 = puVar8[1];
      }
      *(undefined4 *)(local_78 + 0x18) = 0;
      Rep(local_88,param_2,param_3,param_6,iVar7);
      FUN_00b1d36a(1,0);
      FUN_00b1d36a(1,0);
      FUN_004017b2(1,0);
      FUN_00b1d36a(1,0);
      FUN_00a421fb();
      return;
    }
  } while( true );
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  protected: void __thiscall std::time_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Init(class std::_Locinfo const &)
// 
// Library: Visual Studio 2008 Release

void __thiscall Init(int param_1_00,_Locinfo *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  char *pcVar3;
  undefined4 uVar4;
  int iVar5;
  undefined local_20 [8];
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0xb222f9;
  local_18 = param_1_00;
  puVar2 = (undefined4 *)FUN_004170cc(local_20);
  puVar1 = (undefined4 *)(param_1_00 + 0x14);
  *puVar1 = *puVar2;
  *(undefined4 *)(param_1_00 + 0x18) = puVar2[1];
  *(undefined4 *)(param_1_00 + 8) = 0;
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  local_8 = 0;
  pcVar3 = std::_Locinfo::_Getdays(param_1);
  uVar4 = _Maklocstr<>(pcVar3,0,puVar1);
  *(undefined4 *)(param_1_00 + 8) = uVar4;
  pcVar3 = std::_Locinfo::_Getmonths(param_1);
  uVar4 = _Maklocstr<>(pcVar3,0,puVar1);
  *(undefined4 *)(param_1_00 + 0xc) = uVar4;
  iVar5 = __Getdateorder();
  *(int *)(param_1_00 + 0x10) = iVar5;
  return;
}



void Catch_All_00b2235e(void)

{
  code *pcVar1;
  
  FUN_00b1bd25();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_00b22370(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            uint *param_8,double *param_9)

{
  uint *puVar1;
  double *pdVar2;
  char cVar3;
  ushort uVar4;
  ushort *puVar5;
  char *pcVar6;
  uint uVar7;
  undefined4 ***pppuVar8;
  float10 fVar9;
  undefined4 ***local_58;
  int local_54;
  char local_4d;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [4];
  undefined4 ***local_48 [5];
  uint local_34;
  undefined local_30 [20];
  uint local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  pdVar2 = param_9;
  puVar1 = param_8;
  uStack_4 = 0x54;
  local_8 = 0xb2237c;
  Getmfld(local_30,&param_2,&param_4,param_6,param_7);
  local_8 = 0;
  cVar3 = equal(&param_4);
  if (cVar3 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  if (local_1c == 0) {
    *puVar1 = *puVar1 | 2;
    goto LAB_00b224a1;
  }
  uVar4 = _Maklocchr<>(0x30,0,param_1_00 + 8);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_4c);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
            (local_4c,local_1c);
  uVar7 = 0;
  puVar5 = (ushort *)FUN_004220c0(0);
  if (*puVar5 < uVar4) {
LAB_00b2241c:
    uVar7 = 1;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (local_4c,1,'-');
  }
  else {
    puVar5 = (ushort *)FUN_004220c0(0);
    if (uVar4 + 9 < (uint)*puVar5) goto LAB_00b2241c;
  }
  if (uVar7 < local_1c) {
    local_4d = '0' - (char)uVar4;
    do {
      pcVar6 = (char *)FUN_004220c0(uVar7);
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                (local_4c,1,*pcVar6 + local_4d);
      uVar7 = uVar7 + 1;
    } while (uVar7 < local_1c);
  }
  pppuVar8 = local_48[0];
  if (local_34 < 0x10) {
    pppuVar8 = local_48;
  }
  local_54 = 0;
  fVar9 = (float10)FUN_008245d1(pppuVar8,&local_58,0,&local_54);
  if ((local_58 == pppuVar8) || (local_54 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *pdVar2 = (double)fVar9;
  }
  FUN_004017b2(1,0);
LAB_00b224a1:
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00401829(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,bool,class
// std::ios_base &,int &,class std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> > &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,bool,class std::ios_base &,int &,class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >
// &)const 
// 
// Library: Visual Studio 2008 Release

void do_get(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
           undefined4 param_5,undefined4 param_6,undefined4 param_7,uint *param_8)

{
  uint *puVar1;
  char cVar2;
  undefined local_30 [20];
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar1 = param_8;
  uStack_4 = 0x20;
  local_8 = 0xb224ce;
  Getmfld(local_30,&param_2,&param_4,param_6,param_7);
  local_8 = 0;
  cVar2 = equal(&param_4);
  if (cVar2 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  if (local_1c == 0) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    FID_conflict_assign(local_30,0,0xffffffff);
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00401829(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00b22541(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,double param_7)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  uint local_5c;
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>
  local_58 [28];
  char local_3c [52];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x54;
  local_8 = 0xb2254d;
  bVar1 = param_7 < 0.0;
  if (bVar1) {
    param_7 = -param_7;
  }
  local_5c = 0;
  if (1e+35 < param_7 != (param_7 == 1e+35)) {
    do {
      if (4999 < local_5c) break;
      local_5c = local_5c + 10;
      param_7 = param_7 / 10000000000.0;
    } while (1e+35 <= param_7);
  }
  std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>::
  basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator<wchar_t>_>(local_58);
  local_8 = 0;
  iVar2 = _sprintf_s(local_3c,0x28,"%.0Lf");
  iVar3 = 0;
  if (0 < iVar2) {
    do {
      _Maklocchr<>();
      FID_conflict_append();
      iVar3 = iVar3 + 1;
    } while (iVar3 < iVar2);
  }
  _Maklocchr<>();
  FID_conflict_append();
  basic_string<>(local_58);
  Putmfld(param_1,param_2,param_3,param_4,param_5,param_6,bVar1);
  FUN_00401829();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::money_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_put(class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,bool,class
// std::ios_base &,unsigned short,class std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &)const 
//  protected: virtual class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,bool,class std::ios_base &,wchar_t,class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const
// &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_put(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
      undefined4 param_5,undefined4 param_6,int param_7)

{
  ushort uVar1;
  ushort uVar2;
  ushort *puVar3;
  uint uVar4;
  undefined auStack_68 [12];
  undefined4 uStack_5c;
  undefined4 uStack_58;
  ushort *puStack_54;
  uint uStack_50;
  undefined *local_3c;
  int local_38;
  undefined4 local_34;
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0xb2266d;
  puStack_54 = (ushort *)0x0;
  uStack_58 = 0x30;
  uStack_5c = 0xb22682;
  uStack_50 = param_1_00 + 8;
  local_38 = param_1_00;
  uVar1 = _Maklocchr<>();
  if (*(uint *)(param_7 + 0x18) < 8) {
    puVar3 = (ushort *)(param_7 + 4);
  }
  else {
    puVar3 = *(ushort **)(param_7 + 4);
  }
  uVar4 = 0;
  puStack_54 = (ushort *)0x0;
  uStack_58 = 0x2d;
  local_34 = local_34 & 0xffffff00;
  uStack_5c = 0xb226a5;
  uStack_50 = param_1_00 + 8;
  uVar2 = _Maklocchr<>();
  if (*puVar3 == uVar2) {
    local_34 = CONCAT31(local_34._1_3_,1);
    puVar3 = puVar3 + 1;
  }
  uVar2 = *puVar3;
  if (uVar1 <= uVar2) {
    do {
      if (uVar1 + 9 < (uint)uVar2) break;
      uVar4 = uVar4 + 1;
      uVar2 = puVar3[uVar4];
    } while (uVar1 <= uVar2);
  }
  uStack_58 = 0xb226df;
  puStack_54 = puVar3;
  uStack_50 = uVar4;
  basic_string<>();
  local_8 = 0;
  if (uVar4 == 0) {
    puStack_54 = (ushort *)0x1;
    uStack_58 = 0xb226f2;
    uStack_50 = (uint)uVar1;
    FID_conflict_append();
  }
  local_3c = auStack_68;
  basic_string<>(local_30);
  Putmfld(param_1,param_2,param_3,param_4,param_5,param_6,local_34);
  uStack_50 = 0;
  puStack_54 = (ushort *)0x1;
  uStack_58 = 0xb2272c;
  FUN_00401829();
  uStack_50 = 0xb22734;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::time_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall time_get<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::
                time_get<wchar_t,class_std::istreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                ::vftable;
  Init(param_1);
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __thiscall std::time_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::get_year(class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> >,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> >,class std::ios_base &,int &,struct tm *)const 
//  public: class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > __thiscall
// std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// >::get_year(class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >,class std::ios_base &,int
// &,struct tm *)const 
// 
// Library: Visual Studio 2008 Release

undefined4 __thiscall
get_year(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4
        ,undefined4 param_5,undefined4 param_6,undefined4 param_7,undefined4 param_8)

{
  (**(code **)(*param_1_00 + 0x18))(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)
  ;
  return param_1;
}



void __fastcall FUN_00b22793(undefined4 *param_1)

{
  *param_1 = std::
             time_get<wchar_t,class_std::istreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
             ::vftable;
  FUN_00b1bd25();
  *param_1 = std::locale::facet::vftable;
  return;
}



undefined4 __thiscall FUN_00b227ab(undefined4 param_1_00,byte param_1)

{
  FUN_00b22793();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  private: int __cdecl std::time_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Getint(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > &,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > &,int,int,int
// &)const 
//  private: int __cdecl std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Getint(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,int,int,int &)const 
// 
// Library: Visual Studio 2008 Release

void Getint(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int *param_6)

{
  bool bVar1;
  char cVar2;
  short sVar3;
  short sVar4;
  ushort uVar5;
  uint uVar6;
  int iVar7;
  char *pcVar8;
  char *local_40;
  int *local_3c;
  int local_38;
  int local_34;
  uint local_30;
  undefined4 local_2c;
  char local_28 [32];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  param_1 = param_1 + 0x14;
  local_2c = param_3;
  local_3c = param_6;
  local_38 = param_1;
  local_30 = _Maklocchr<>(0x30,0,param_1);
  local_30 = local_30 & 0xffff;
  pcVar8 = local_28;
  cVar2 = equal(local_2c);
  if (cVar2 == '\0') {
    sVar3 = _Maklocchr<>(0x2b,0,param_1);
    sVar4 = FID_conflict_operator_();
    if (sVar4 == sVar3) {
      local_28[0] = '+';
    }
    else {
      sVar3 = _Maklocchr<>(0x2d,0,local_38);
      sVar4 = FID_conflict_operator_();
      if (sVar4 != sVar3) goto LAB_00b2286b;
      local_28[0] = '-';
    }
    pcVar8 = local_28 + 1;
    Inc();
  }
LAB_00b2286b:
  bVar1 = false;
  cVar2 = FUN_0040e881(param_2,local_2c);
  if (cVar2 != '\0') {
    do {
      sVar3 = FID_conflict_operator_();
      if (sVar3 != (ushort)local_30) break;
      bVar1 = true;
      Inc();
      cVar2 = FUN_0040e881(param_2,local_2c);
    } while (cVar2 != '\0');
    if (bVar1) {
      *pcVar8 = '0';
      pcVar8 = pcVar8 + 1;
    }
  }
  while (cVar2 = FUN_0040e881(param_2,local_2c), cVar2 != '\0') {
    uVar5 = FID_conflict_operator_();
    if ((uVar5 < (ushort)local_30) ||
       (uVar6 = FID_conflict_operator_(), (local_30 & 0xffff) + 9 < (uVar6 & 0xffff))) break;
    cVar2 = FID_conflict_operator_();
    *pcVar8 = cVar2 + ('0' - (char)local_30);
    if (pcVar8 < local_28 + 0x1f) {
      pcVar8 = pcVar8 + 1;
    }
    bVar1 = true;
    Inc();
  }
  if (!bVar1) {
    pcVar8 = local_28;
  }
  *pcVar8 = '\0';
  local_34 = 0;
  iVar7 = __Stolx(local_28,&local_40,10,&local_34);
  equal(local_2c);
  if ((((local_40 != local_28) && (local_34 == 0)) && (param_4 <= iVar7)) && (iVar7 <= param_5)) {
    *local_3c = iVar7;
  }
  ___security_check_cookie_4();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::do_get_time(class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> >,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short>
// >,class std::ios_base &,int &,struct tm *)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get_time(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,struct tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get_time(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint *puVar1;
  int iVar2;
  short sVar3;
  short sVar4;
  uint uVar5;
  uint *param_7;
  int param_8;
  
  sVar3 = _Maklocchr<>(0x3a,0,param_1_00 + 0x14);
  iVar2 = param_8;
  uVar5 = Getint(param_1_00,&param_2,&stack0x00000010,0,0x17,param_8 + 8);
  puVar1 = param_7;
  *param_7 = *param_7 | uVar5;
  if (*param_7 == 0) {
    sVar4 = FID_conflict_operator_();
    if (sVar4 != sVar3) goto LAB_00b229da;
    Inc();
    uVar5 = Getint(param_1_00,&param_2,&stack0x00000010,0,0x3b,iVar2 + 4);
    *puVar1 = *puVar1 | uVar5;
  }
  else {
LAB_00b229da:
    *puVar1 = *puVar1 | 2;
  }
  if (*puVar1 == 0) {
    sVar4 = FID_conflict_operator_();
    if (sVar4 == sVar3) {
      Inc();
      uVar5 = Getint(param_1_00,&param_2,&stack0x00000010,0,0x3b,iVar2);
      *puVar1 = *puVar1 | uVar5;
      goto LAB_00b22a15;
    }
  }
  *puVar1 = *puVar1 | 2;
LAB_00b22a15:
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::do_get_date(class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> >,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short>
// >,class std::ios_base &,int &,struct tm *)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get_date(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,struct tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get_date(int *param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
           undefined4 param_4,undefined4 param_5,undefined4 param_6,uint *param_7,int param_8)

{
  uint *puVar1;
  int iVar2;
  char cVar3;
  ushort uVar4;
  short sVar5;
  uint uVar6;
  undefined4 *puVar7;
  int *piVar8;
  undefined local_24 [8];
  uint local_1c;
  uint local_18;
  uint local_14;
  uint local_10;
  uint local_c;
  int local_8;
  
  piVar8 = param_1_00 + 5;
  local_c = _Maklocchr<>(0x30,0,piVar8);
  local_c = local_c & 0xffff;
  local_14 = _Maklocchr<>(0x3a,0,piVar8);
  local_14 = local_14 & 0xffff;
  local_18 = _Maklocchr<>(0x2c,0,piVar8);
  local_18 = local_18 & 0xffff;
  local_1c = _Maklocchr<>(0x2f,0,piVar8);
  local_1c = local_1c & 0xffff;
  local_10 = _Maklocchr<>(0x20,0,piVar8);
  local_10 = local_10 & 0xffff;
  local_8 = (**(code **)(*param_1_00 + 4))();
  if (local_8 == 0) {
    local_8 = 2;
  }
  cVar3 = equal(&param_4);
  iVar2 = param_8;
  puVar1 = param_7;
  if (cVar3 == '\0') {
    uVar4 = FID_conflict_operator_();
    if ((uVar4 < (ushort)local_c) ||
       (uVar6 = FID_conflict_operator_(), (local_c & 0xffff) + 9 < (uVar6 & 0xffff))) {
      puVar7 = (undefined4 *)
               get_monthname(local_24,param_2,param_3,param_4,param_5,param_6,puVar1,iVar2);
      local_8 = 2;
LAB_00b22b6e:
      param_2 = *puVar7;
      param_3 = puVar7[1];
    }
    else if (local_8 == 2) {
      uVar6 = Getint(param_1_00,&param_2,&param_4,1,0xc,iVar2 + 0x10);
      *puVar1 = *puVar1 | uVar6;
      *(int *)(iVar2 + 0x10) = *(int *)(iVar2 + 0x10) + -1;
    }
    else {
      if (local_8 != 1) {
        puVar7 = (undefined4 *)
                 get_year(local_24,param_2,param_3,param_4,param_5,param_6,puVar1,iVar2);
        goto LAB_00b22b6e;
      }
      uVar6 = Getint(param_1_00,&param_2,&param_4,1,0x1f,iVar2 + 0xc);
      *puVar1 = *puVar1 | uVar6;
    }
  }
  while (cVar3 = FUN_0040e881(&param_2,&param_4), cVar3 != '\0') {
    sVar5 = FID_conflict_operator_();
    if (sVar5 != (short)local_10) break;
    Inc();
  }
  cVar3 = FUN_0040e881(&param_2,&param_4);
  if (cVar3 == '\0') goto LAB_00b22bf9;
  sVar5 = FID_conflict_operator_();
  if (sVar5 != (short)local_14) {
    sVar5 = FID_conflict_operator_();
    if (sVar5 != (short)local_18) {
      sVar5 = FID_conflict_operator_();
      if (sVar5 != (short)local_1c) goto LAB_00b22bf9;
    }
  }
  do {
    Inc();
LAB_00b22bf9:
    cVar3 = FUN_0040e881(&param_2,&param_4);
    if (cVar3 == '\0') break;
    sVar5 = FID_conflict_operator_();
  } while (sVar5 == (short)local_10);
  cVar3 = equal(&param_4);
  if (cVar3 == '\0') {
    uVar4 = FID_conflict_operator_();
    if ((uVar4 < (ushort)local_c) ||
       (uVar6 = FID_conflict_operator_(), (local_c & 0xffff) + 9 < (uVar6 & 0xffff))) {
      if (local_8 == 2) {
        *puVar1 = *puVar1 | 2;
      }
      else {
        puVar7 = (undefined4 *)
                 get_monthname(local_24,param_2,param_3,param_4,param_5,param_6,puVar1,iVar2);
        param_2 = *puVar7;
        param_3 = puVar7[1];
        if (local_8 == 4) {
          local_8 = 3;
        }
      }
    }
    else if ((local_8 == 1) || (local_8 == 3)) {
      uVar6 = Getint(param_1_00,&param_2,&param_4,1,0xc,iVar2 + 0x10);
      *puVar1 = *puVar1 | uVar6;
      *(int *)(iVar2 + 0x10) = *(int *)(iVar2 + 0x10) + -1;
    }
    else {
      uVar6 = Getint(param_1_00,&param_2,&param_4,1,0x1f,iVar2 + 0xc);
      *puVar1 = *puVar1 | uVar6;
    }
  }
  while (cVar3 = FUN_0040e881(&param_2,&param_4), cVar3 != '\0') {
    sVar5 = FID_conflict_operator_();
    if (sVar5 != (short)local_10) break;
    Inc();
  }
  cVar3 = FUN_0040e881(&param_2,&param_4);
  if (cVar3 == '\0') goto LAB_00b22d4c;
  sVar5 = FID_conflict_operator_();
  if (sVar5 != (short)local_14) {
    sVar5 = FID_conflict_operator_();
    if (sVar5 != (short)local_18) {
      sVar5 = FID_conflict_operator_();
      if (sVar5 != (short)local_1c) goto LAB_00b22d4c;
    }
  }
  do {
    Inc();
LAB_00b22d4c:
    cVar3 = FUN_0040e881(&param_2,&param_4);
    if (cVar3 == '\0') break;
    sVar5 = FID_conflict_operator_();
  } while (sVar5 == (short)local_10);
  cVar3 = equal(&param_4);
  if (cVar3 == '\0') {
    uVar4 = FID_conflict_operator_();
    if ((uVar4 < (ushort)local_c) ||
       (uVar6 = FID_conflict_operator_(), (local_c & 0xffff) + 9 < (uVar6 & 0xffff))) {
      if (local_8 != 4) goto LAB_00b22e03;
      puVar7 = (undefined4 *)
               get_monthname(local_24,param_2,param_3,param_4,param_5,param_6,puVar1,iVar2);
    }
    else {
      if (local_8 == 4) {
        piVar8 = (int *)(iVar2 + 0x10);
        uVar6 = Getint(param_1_00,&param_2,&param_4,1,0xc,piVar8);
        *puVar1 = *puVar1 | uVar6;
        *piVar8 = *piVar8 + -1;
        goto LAB_00b22e2f;
      }
      if (local_8 == 3) {
        uVar6 = Getint(param_1_00,&param_2,&param_4,1,0x1f,iVar2 + 0xc);
        *puVar1 = *puVar1 | uVar6;
        goto LAB_00b22e2f;
      }
      puVar7 = (undefined4 *)get_year(local_24,param_2,param_3,param_4,param_5,param_6,puVar1,iVar2)
      ;
    }
    param_2 = *puVar7;
    param_3 = puVar7[1];
  }
  else {
LAB_00b22e03:
    *puVar1 = *puVar1 | 2;
  }
LAB_00b22e2f:
  cVar3 = equal(&param_4);
  if (cVar3 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::do_get_year(class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> >,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short>
// >,class std::ios_base &,int &,struct tm *)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get_year(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,struct tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get_year(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  uint *param_7;
  int param_8;
  int local_8;
  
  local_8 = 0;
  uVar1 = Getint(param_1_00,&param_2,&stack0x00000010,0,0x7f3,&local_8);
  *param_7 = *param_7 | uVar1;
  if ((*param_7 & 2) == 0) {
    if (local_8 < 0x76c) {
      if (0x87 < local_8) {
        *param_7 = *param_7 | 2;
      }
    }
    else {
      local_8 = local_8 + -0x76c;
    }
  }
  if ((*(byte *)param_7 & 2) == 0) {
    *(int *)(param_8 + 0x14) = local_8;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::do_get_weekday(class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> >,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short>
// >,class std::ios_base &,int &,struct tm *)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get_weekday(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,struct tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get_weekday(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  uint *param_7;
  int param_8;
  
  iVar1 = _Getloctxt<>(&param_2,&stack0x00000010,0,*(undefined4 *)(param_1_00 + 8));
  if (iVar1 < 0) {
    *param_7 = *param_7 | 2;
  }
  else {
    *(int *)(param_8 + 0x18) = iVar1 >> 1;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::do_get_monthname(class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,class std::ios_base &,int &,struct tm *)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get_monthname(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,struct tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get_monthname(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  uint *param_7;
  int param_8;
  
  iVar1 = _Getloctxt<>(&param_2,&stack0x00000010,0,*(undefined4 *)(param_1_00 + 0xc));
  if (iVar1 < 0) {
    *param_7 = *param_7 | 2;
  }
  else {
    *(int *)(param_8 + 0x10) = iVar1 >> 1;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::time_get<char,class
// std::istreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::time_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  undefined4 uVar2;
  int iVar3;
  _Locinfo local_a8 [116];
  undefined local_34 [28];
  void *local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x98;
  local_8 = 0xb22f54;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    local_18 = operator_new(0x1c);
    local_8 = 0;
    if (local_18 == (void *)0x0) {
      iVar3 = 0;
    }
    else {
      pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_34);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar2 = std::_Locinfo::_Locinfo(local_a8,pbVar1);
      local_8 = 2;
      local_14 = 3;
      iVar3 = time_get<>(uVar2,0);
    }
    *param_1 = iVar3;
    local_8 = 3;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a8);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 5;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,bool &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,bool &)const 
// 
// Library: Visual Studio 2008 Release

void do_get(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
           undefined4 param_5,int param_6,uint *param_7,undefined4 param_8)

{
  int iVar1;
  undefined4 uVar2;
  char cVar3;
  undefined4 uVar4;
  uint uVar5;
  undefined *local_68;
  locale local_64 [4];
  int local_60;
  uint *local_5c;
  undefined4 local_58;
  uint local_54;
  undefined4 ***local_4c [5];
  uint local_38;
  undefined local_34 [4];
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uVar2 = param_8;
  iVar1 = param_6;
  uStack_4 = 0x60;
  local_8 = 0xb22ffb;
  local_54 = 0xffffffff;
  local_5c = param_7;
  if ((*(uint *)(param_6 + 0x10) & 0x4000) == 0) {
    local_60 = 0;
    uVar4 = FUN_00417498(local_64);
    local_8 = 4;
    uVar4 = Getifld(local_58,local_34,&param_2,&param_4,*(undefined4 *)(iVar1 + 0x10),uVar4,
                    &local_60);
    uVar5 = FUN_0082403e(local_34,&local_68,uVar4);
    local_8 = 0xffffffff;
    std::locale::~locale(local_64);
    if (((local_68 != local_34) && (local_60 == 0)) && (uVar5 < 2)) {
      local_54 = uVar5;
    }
  }
  else {
    uVar4 = FUN_00417498(&local_58);
    local_8 = 0;
    local_54 = use_facet<>(uVar4);
    local_8 = 0xffffffff;
    std::locale::~locale((locale *)&local_58);
    basic_string<>(1,0);
    local_8 = 1;
    uVar4 = curr_symbol(local_30);
    local_8._0_1_ = 2;
    FID_conflict_append(uVar4,0,0xffffffff);
    local_8._0_1_ = 1;
    FUN_00b1d36a(1,0);
    FID_conflict_append(1,0);
    uVar4 = positive_sign(local_30);
    local_8._0_1_ = 3;
    FID_conflict_append(uVar4,0,0xffffffff);
    local_8 = CONCAT31(local_8._1_3_,1);
    FUN_00b1d36a(1,0);
    if (local_38 < 8) {
      local_4c[0] = local_4c;
    }
    local_54 = _Getloctxt<>(&param_2,&param_4,2,local_4c[0]);
    local_8 = 0xffffffff;
    FUN_00b1d36a(1,0);
  }
  cVar3 = equal(&param_4);
  if (cVar3 != '\0') {
    *local_5c = *local_5c | 1;
  }
  if ((int)local_54 < 0) {
    *local_5c = *local_5c | 2;
  }
  else {
    *(bool *)uVar2 = local_54 != 0;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,unsigned short &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,unsigned short &)const 
// 
// Library: Visual Studio 2008 Release

void do_get(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
           undefined4 param_5,int param_6,uint *param_7,undefined2 *param_8)

{
  int iVar1;
  uint *puVar2;
  undefined2 *puVar3;
  char cVar4;
  undefined4 uVar5;
  uint uVar6;
  char *local_48;
  undefined4 *local_44;
  locale local_40 [4];
  int local_3c;
  char *local_38;
  char local_34;
  char local_33 [43];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar3 = param_8;
  puVar2 = param_7;
  iVar1 = param_6;
  uStack_4 = 0x38;
  local_8 = 0xb23199;
  local_3c = 0;
  local_44 = param_1;
  uVar5 = FUN_00417498(local_40);
  local_8 = 0;
  uVar5 = Getifld(local_38,&local_34,&param_2,&param_4,*(undefined4 *)(iVar1 + 0x10),uVar5);
  local_8 = 0xffffffff;
  std::locale::~locale(local_40);
  local_38 = local_33;
  if (local_34 != '-') {
    local_38 = &local_34;
  }
  uVar6 = FUN_0082403e(local_38,&local_48,uVar5,&local_3c);
  cVar4 = equal(&param_4);
  if (cVar4 != '\0') {
    *puVar2 = *puVar2 | 1;
  }
  if (((local_48 == local_38) || (local_3c != 0)) || (0xffff < uVar6)) {
    *puVar2 = *puVar2 | 2;
  }
  else {
    if (local_34 == '-') {
      uVar6 = -uVar6;
    }
    *puVar3 = (short)uVar6;
  }
  *local_44 = param_2;
  local_44[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,unsigned int &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,unsigned int &)const 
// 
// Library: Visual Studio 2008 Release

void do_get(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
           undefined4 param_5,int param_6,uint *param_7,int *param_8)

{
  uint *puVar1;
  int *piVar2;
  char cVar3;
  undefined4 uVar4;
  int iVar5;
  char *local_48;
  undefined4 *local_44;
  locale local_40 [4];
  int local_3c;
  char *local_38;
  char local_34;
  char local_33 [43];
  undefined4 local_8;
  undefined4 uStack_4;
  
  piVar2 = param_8;
  puVar1 = param_7;
  iVar5 = param_6;
  uStack_4 = 0x38;
  local_8 = 0xb23268;
  local_3c = 0;
  local_44 = param_1;
  uVar4 = FUN_00417498(local_40);
  local_8 = 0;
  uVar4 = Getifld(local_38,&local_34,&param_2,&param_4,*(undefined4 *)(iVar5 + 0x10),uVar4);
  local_8 = 0xffffffff;
  std::locale::~locale(local_40);
  local_38 = local_33;
  if (local_34 != '-') {
    local_38 = &local_34;
  }
  iVar5 = FUN_0082403e(local_38,&local_48,uVar4,&local_3c);
  cVar3 = equal(&param_4);
  if (cVar3 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_48 == local_38) || (local_3c != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    if (local_34 == '-') {
      iVar5 = -iVar5;
    }
    *piVar2 = iVar5;
  }
  *local_44 = param_2;
  local_44[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,long &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,long &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
      undefined4 param_4,undefined4 param_5,int param_6,uint *param_7,undefined4 *param_8)

{
  int iVar1;
  uint *puVar2;
  undefined4 *puVar3;
  char cVar4;
  undefined4 uVar5;
  undefined *local_44;
  undefined4 *local_40;
  locale local_3c [4];
  int local_38;
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar3 = param_8;
  puVar2 = param_7;
  iVar1 = param_6;
  uStack_4 = 0x38;
  local_8 = 0xb23333;
  local_38 = 0;
  local_40 = param_1;
  uVar5 = FUN_00417498(local_3c);
  local_8 = 0;
  uVar5 = Getifld(param_1_00,local_34,&param_2,&param_4,*(undefined4 *)(iVar1 + 0x10),uVar5,
                  &local_38);
  uVar5 = __Stolx(local_34,&local_44,uVar5);
  local_8 = 0xffffffff;
  std::locale::~locale(local_3c);
  cVar4 = equal(&param_4);
  if (cVar4 != '\0') {
    *puVar2 = *puVar2 | 1;
  }
  if ((local_44 == local_34) || (local_38 != 0)) {
    *puVar2 = *puVar2 | 2;
  }
  else {
    *puVar3 = uVar5;
  }
  *local_40 = param_2;
  local_40[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,long &)const 
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,unsigned long &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,long &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,unsigned long &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
      undefined4 param_4,undefined4 param_5,int param_6,uint *param_7,undefined4 *param_8)

{
  int iVar1;
  uint *puVar2;
  undefined4 *puVar3;
  char cVar4;
  undefined4 uVar5;
  undefined *local_44;
  undefined4 *local_40;
  locale local_3c [4];
  int local_38;
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar3 = param_8;
  puVar2 = param_7;
  iVar1 = param_6;
  uStack_4 = 0x38;
  local_8 = 0xb233e1;
  local_38 = 0;
  local_40 = param_1;
  uVar5 = FUN_00417498(local_3c);
  local_8 = 0;
  uVar5 = Getifld(param_1_00,local_34,&param_2,&param_4,*(undefined4 *)(iVar1 + 0x10),uVar5,
                  &local_38);
  uVar5 = FUN_0082403e(local_34,&local_44,uVar5);
  local_8 = 0xffffffff;
  std::locale::~locale(local_3c);
  cVar4 = equal(&param_4);
  if (cVar4 != '\0') {
    *puVar2 = *puVar2 | 1;
  }
  if ((local_44 == local_34) || (local_38 != 0)) {
    *puVar2 = *puVar2 | 2;
  }
  else {
    *puVar3 = uVar5;
  }
  *local_40 = param_2;
  local_40[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,__int64 &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,__int64 &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
      undefined4 param_4,undefined4 param_5,int param_6,uint *param_7,undefined8 *param_8)

{
  int iVar1;
  uint *puVar2;
  undefined8 *puVar3;
  char cVar4;
  undefined4 uVar5;
  undefined8 uVar6;
  undefined *local_44;
  undefined4 *local_40;
  locale local_3c [4];
  int local_38;
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar3 = param_8;
  puVar2 = param_7;
  iVar1 = param_6;
  uStack_4 = 0x3c;
  local_8 = 0xb2348f;
  local_38 = 0;
  local_40 = param_1;
  uVar5 = FUN_00417498(local_3c);
  local_8 = 0;
  uVar5 = Getifld(param_1_00,local_34,&param_2,&param_4,*(undefined4 *)(iVar1 + 0x10),uVar5,
                  &local_38);
  uVar6 = __Stollx(local_34,&local_44,uVar5);
  local_8 = 0xffffffff;
  std::locale::~locale(local_3c);
  cVar4 = equal(&param_4);
  if (cVar4 != '\0') {
    *puVar2 = *puVar2 | 1;
  }
  if ((local_44 == local_34) || (local_38 != 0)) {
    *puVar2 = *puVar2 | 2;
  }
  else {
    *puVar3 = uVar6;
  }
  *local_40 = param_2;
  local_40[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,__int64 &)const 
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,unsigned __int64 &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,__int64 &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,unsigned __int64 &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
      undefined4 param_4,undefined4 param_5,int param_6,uint *param_7,undefined8 *param_8)

{
  int iVar1;
  uint *puVar2;
  undefined8 *puVar3;
  char cVar4;
  undefined4 uVar5;
  undefined8 uVar6;
  undefined *local_44;
  undefined4 *local_40;
  locale local_3c [4];
  int local_38;
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar3 = param_8;
  puVar2 = param_7;
  iVar1 = param_6;
  uStack_4 = 0x3c;
  local_8 = 0xb23546;
  local_38 = 0;
  local_40 = param_1;
  uVar5 = FUN_00417498(local_3c);
  local_8 = 0;
  uVar5 = Getifld(param_1_00,local_34,&param_2,&param_4,*(undefined4 *)(iVar1 + 0x10),uVar5,
                  &local_38);
  uVar6 = FUN_00824341(local_34,&local_44,uVar5);
  local_8 = 0xffffffff;
  std::locale::~locale(local_3c);
  cVar4 = equal(&param_4);
  if (cVar4 != '\0') {
    *puVar2 = *puVar2 | 1;
  }
  if ((local_44 == local_34) || (local_38 != 0)) {
    *puVar2 = *puVar2 | 2;
  }
  else {
    *puVar3 = uVar6;
  }
  *local_40 = param_2;
  local_40[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,float &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,float &)const 
// 
// Library: Visual Studio 2008 Release

void do_get(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint *puVar1;
  float *pfVar2;
  char cVar3;
  undefined4 uVar4;
  float10 fVar5;
  uint *param_7;
  float *param_8;
  undefined *local_60;
  locale local_5c [4];
  int local_58;
  float local_54;
  undefined local_50 [72];
  undefined4 local_8;
  undefined4 uStack_4;
  
  pfVar2 = param_8;
  puVar1 = param_7;
  uStack_4 = 0x50;
  local_8 = 0xb235fd;
  local_58 = 0;
  uVar4 = FUN_00417498(local_5c);
  local_8 = 0;
  uVar4 = Getffld(local_54,local_50,&param_2,&stack0x00000010,uVar4,&local_58);
  fVar5 = (float10)__Stofx(local_50,&local_60,uVar4);
  local_54 = (float)fVar5;
  local_8 = 0xffffffff;
  std::locale::~locale(local_5c);
  cVar3 = equal(&stack0x00000010);
  if (cVar3 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_60 == local_50) || (local_58 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *pfVar2 = local_54;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,double &)const 
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,long double &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,double &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,long double &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint *puVar1;
  double *pdVar2;
  char cVar3;
  undefined4 uVar4;
  float10 fVar5;
  uint *param_7;
  double *param_8;
  undefined *local_5c;
  locale local_58 [4];
  int local_54;
  undefined local_50 [72];
  undefined4 local_8;
  undefined4 uStack_4;
  
  pdVar2 = param_8;
  puVar1 = param_7;
  uStack_4 = 0x54;
  local_8 = 0xb236a5;
  local_54 = 0;
  uVar4 = FUN_00417498(local_58);
  local_8 = 0;
  uVar4 = Getffld(param_1_00,local_50,&param_2,&stack0x00000010,uVar4,&local_54);
  fVar5 = (float10)FUN_00824568(local_50,&local_5c,uVar4);
  local_8 = 0xffffffff;
  std::locale::~locale(local_58);
  cVar3 = equal(&stack0x00000010);
  if (cVar3 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_5c == local_50) || (local_54 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *pdVar2 = (double)fVar5;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,long double &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,long double &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint *puVar1;
  double *pdVar2;
  char cVar3;
  undefined4 uVar4;
  float10 fVar5;
  uint *param_7;
  double *param_8;
  undefined *local_5c;
  locale local_58 [4];
  int local_54;
  undefined local_50 [72];
  undefined4 local_8;
  undefined4 uStack_4;
  
  pdVar2 = param_8;
  puVar1 = param_7;
  uStack_4 = 0x54;
  local_8 = 0xb2374d;
  local_54 = 0;
  uVar4 = FUN_00417498(local_58);
  local_8 = 0;
  uVar4 = Getffld(param_1_00,local_50,&param_2,&stack0x00000010,uVar4,&local_54);
  fVar5 = (float10)FUN_008245d1(local_50,&local_5c,uVar4);
  local_8 = 0xffffffff;
  std::locale::~locale(local_58);
  cVar3 = equal(&stack0x00000010);
  if (cVar3 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_5c == local_50) || (local_54 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *pdVar2 = (double)fVar5;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,int &,void * &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,void * &)const 
// 
// Library: Visual Studio 2008 Release

void do_get(undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint *puVar1;
  undefined4 *puVar2;
  char cVar3;
  undefined4 uVar4;
  uint *param_7;
  undefined4 *param_8;
  undefined *local_48;
  locale local_44 [4];
  int local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined local_34 [44];
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar2 = param_8;
  puVar1 = param_7;
  uStack_4 = 0x38;
  local_8 = 0xb237f5;
  local_40 = 0;
  uVar4 = FUN_00417498(local_44);
  local_8 = 0;
  local_38 = Getifld(local_38,local_34,&param_2,&stack0x00000010,0x800,uVar4);
  local_8 = 0xffffffff;
  std::locale::~locale(local_44);
  local_3c = FUN_0082403e(local_34,&local_48,local_38,&local_40);
  local_38 = 0;
  cVar3 = equal(&stack0x00000010);
  if (cVar3 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  if ((local_48 == local_34) || (local_40 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *puVar2 = local_3c;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00a421fb();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_put(class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,unsigned short,long)const 
//  protected: virtual class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_put(class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,unsigned short,unsigned long)const 
//  protected: virtual class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,wchar_t,long)const 
//  protected: virtual class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,wchar_t,unsigned long)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_put(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,
      undefined4 param_5,undefined4 param_6)

{
  char *_Format;
  int iVar1;
  char local_50 [64];
  undefined local_10 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  _Format = (char *)Ifmt(param_1_00,local_10,&DAT_00fad98c,*(undefined4 *)(param_4 + 0x10),param_6);
  iVar1 = _sprintf_s(local_50,0x40,_Format);
  Iput(param_1_00,param_1,param_2,param_3,param_4,param_5,local_50,iVar1);
  ___security_check_cookie_4();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_put(class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,unsigned short,long)const 
//  protected: virtual class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_put(class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,unsigned short,unsigned long)const 
//  protected: virtual class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,wchar_t,long)const 
//  protected: virtual class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,wchar_t,unsigned long)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_put(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,
      undefined4 param_5,undefined4 param_6)

{
  char *_Format;
  int iVar1;
  char local_50 [64];
  undefined local_10 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  _Format = (char *)Ifmt(param_1_00,local_10,&DAT_00fad990,*(undefined4 *)(param_4 + 0x10),param_6);
  iVar1 = _sprintf_s(local_50,0x40,_Format);
  Iput(param_1_00,param_1,param_2,param_3,param_4,param_5,local_50,iVar1);
  ___security_check_cookie_4();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_put(class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,unsigned short,__int64)const 
//  protected: virtual class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_put(class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,unsigned short,unsigned __int64)const 
//  protected: virtual class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,wchar_t,__int64)const 
//  protected: virtual class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,wchar_t,unsigned __int64)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_put(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,
      undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char *_Format;
  int iVar1;
  char local_50 [64];
  undefined local_10 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  _Format = (char *)Ifmt(param_1_00,local_10,&DAT_00fad994,*(undefined4 *)(param_4 + 0x10),param_6,
                         param_7);
  iVar1 = _sprintf_s(local_50,0x40,_Format);
  Iput(param_1_00,param_1,param_2,param_3,param_4,param_5,local_50,iVar1);
  ___security_check_cookie_4();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_put(class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,unsigned short,__int64)const 
//  protected: virtual class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_put(class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,unsigned short,unsigned __int64)const 
//  protected: virtual class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,wchar_t,__int64)const 
//  protected: virtual class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,wchar_t,unsigned __int64)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_put(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,
      undefined4 param_5,undefined4 param_6,undefined4 param_7)

{
  char *_Format;
  int iVar1;
  char local_50 [64];
  undefined local_10 [8];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  _Format = (char *)Ifmt(param_1_00,local_10,&DAT_00fad998,*(undefined4 *)(param_4 + 0x10),param_6,
                         param_7);
  iVar1 = _sprintf_s(local_50,0x40,_Format);
  Iput(param_1_00,param_1,param_2,param_3,param_4,param_5,local_50,iVar1);
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00b23a5d(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            int param_4,undefined4 param_5,double param_6)

{
  double dVar1;
  char *_Format;
  int iVar2;
  uint uVar3;
  int iVar4;
  uint local_84;
  char local_7c [108];
  undefined local_10 [4];
  int local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  iVar4 = *(int *)(param_4 + 0x14);
  uVar3 = 0;
  if ((iVar4 < 1) && ((*(uint *)(param_4 + 0x10) & 0x2000) == 0)) {
    iVar4 = 6;
  }
  local_c = 0x24;
  if (iVar4 < 0x25) {
    local_c = iVar4;
  }
  iVar4 = iVar4 - local_c;
  local_84 = 0;
  dVar1 = param_6;
  if (((*(uint *)(param_4 + 0x10) & 0x3000) == 0x2000) &&
     ((NAN(param_6 * 0.5) || NAN(param_6)) == (param_6 * 0.5 == param_6))) {
    if (param_6 < 0.0) {
      dVar1 = -param_6;
    }
    if (1e+35 < dVar1 != (dVar1 == 1e+35)) {
      do {
        if (4999 < local_84) break;
        dVar1 = dVar1 / 10000000000.0;
        local_84 = local_84 + 10;
      } while (1e+35 < dVar1 != (dVar1 == 1e+35));
    }
    if (0.0 < dVar1 != NAN(dVar1)) {
      for (; ((9 < iVar4 && (dVar1 <= 1e-35)) && (uVar3 < 5000)); uVar3 = uVar3 + 10) {
        iVar4 = iVar4 + -10;
        dVar1 = dVar1 * 10000000000.0;
      }
    }
    if (param_6 < 0.0) {
      dVar1 = -dVar1;
    }
  }
  _Format = (char *)Ffmt(param_1_00,local_10,0,*(uint *)(param_4 + 0x10),local_c,dVar1);
  iVar2 = _sprintf_s(local_7c,0x6c,_Format);
  Fput(param_1_00,param_1,param_2,param_3,param_4,param_5,local_7c,local_84,uVar3,iVar4,iVar2);
  ___security_check_cookie_4();
  return;
}



void __thiscall
FUN_00b23bd0(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            int param_4,undefined4 param_5,double param_6)

{
  bool bVar1;
  char *_Format;
  int iVar2;
  int iVar3;
  uint local_88;
  uint local_84;
  char local_7c [108];
  undefined local_10 [4];
  int local_c;
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  iVar3 = *(int *)(param_4 + 0x14);
  if ((iVar3 < 1) && ((*(uint *)(param_4 + 0x10) & 0x2000) == 0)) {
    iVar3 = 6;
  }
  local_c = 0x24;
  if (iVar3 < 0x25) {
    local_c = iVar3;
  }
  iVar3 = iVar3 - local_c;
  local_84 = 0;
  local_88 = 0;
  if ((*(uint *)(param_4 + 0x10) & 0x3000) == 0x2000) {
    bVar1 = param_6 < 0.0 != NAN(param_6);
    if (bVar1) {
      param_6 = -param_6;
    }
    if (1e+35 < param_6 != (param_6 == 1e+35)) {
      do {
        if (4999 < local_84) break;
        param_6 = param_6 / 10000000000.0;
        local_84 = local_84 + 10;
      } while (1e+35 < param_6 != (param_6 == 1e+35));
    }
    if (0.0 < param_6 != NAN(param_6)) {
      for (; ((9 < iVar3 && (param_6 <= 1e-35)) && (local_88 < 5000)); local_88 = local_88 + 10) {
        iVar3 = iVar3 + -10;
        param_6 = param_6 * 10000000000.0;
      }
    }
    if (bVar1) {
      param_6 = -param_6;
    }
  }
  _Format = (char *)Ffmt(param_1_00,local_10,0x4c,*(uint *)(param_4 + 0x10),local_c,param_6);
  iVar2 = _sprintf_s(local_7c,0x6c,_Format);
  Fput(param_1_00,param_1,param_2,param_3,param_4,param_5,local_7c,local_84,local_88,iVar3,iVar2);
  ___security_check_cookie_4();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::num_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_put(class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::ios_base &,unsigned short,void const *)const 
//  protected: virtual class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::num_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,wchar_t,void const *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_put(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
      undefined4 param_4,undefined4 param_5,undefined4 param_6)

{
  int iVar1;
  char local_48 [64];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  iVar1 = _sprintf_s(local_48,0x40,"%p",param_6);
  Iput(param_1_00,param_1,param_2,param_3,param_4,param_5,local_48,iVar1);
  ___security_check_cookie_4();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_00b23d9d(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            uint *param_8,double *param_9)

{
  uint *puVar1;
  double *pdVar2;
  char cVar3;
  ushort uVar4;
  ushort *puVar5;
  char *pcVar6;
  uint uVar7;
  undefined4 ***pppuVar8;
  float10 fVar9;
  undefined4 ***local_58;
  int local_54;
  char local_4d;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [4];
  undefined4 ***local_48 [5];
  uint local_34;
  undefined local_30 [20];
  uint local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  pdVar2 = param_9;
  puVar1 = param_8;
  uStack_4 = 0x54;
  local_8 = 0xb23da9;
  Getmfld(local_30,&param_2,&param_4,param_6,param_7);
  local_8 = 0;
  cVar3 = equal(&param_4);
  if (cVar3 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  if (local_1c == 0) {
    *puVar1 = *puVar1 | 2;
    goto LAB_00b23ece;
  }
  uVar4 = _Maklocchr<>(0x30,0,param_1_00 + 8);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_4c);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
            (local_4c,local_1c);
  uVar7 = 0;
  puVar5 = (ushort *)FID_conflict_operator__(0);
  if (*puVar5 < uVar4) {
LAB_00b23e49:
    uVar7 = 1;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (local_4c,1,'-');
  }
  else {
    puVar5 = (ushort *)FID_conflict_operator__(0);
    if (uVar4 + 9 < (uint)*puVar5) goto LAB_00b23e49;
  }
  if (uVar7 < local_1c) {
    local_4d = '0' - (char)uVar4;
    do {
      pcVar6 = (char *)FID_conflict_operator__(uVar7);
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                (local_4c,1,*pcVar6 + local_4d);
      uVar7 = uVar7 + 1;
    } while (uVar7 < local_1c);
  }
  pppuVar8 = local_48[0];
  if (local_34 < 0x10) {
    pppuVar8 = local_48;
  }
  local_54 = 0;
  fVar9 = (float10)FUN_008245d1(pppuVar8,&local_58,0,&local_54);
  if ((local_58 == pppuVar8) || (local_54 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *pdVar2 = (double)fVar9;
  }
  FUN_004017b2(1,0);
LAB_00b23ece:
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00b1d36a(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_get(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,bool,class
// std::ios_base &,int &,class std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> > &)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::money_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,bool,class std::ios_base &,int &,class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >
// &)const 
// 
// Library: Visual Studio 2008 Release

void do_get(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
           undefined4 param_5,undefined4 param_6,undefined4 param_7,uint *param_8)

{
  uint *puVar1;
  char cVar2;
  undefined local_30 [20];
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  puVar1 = param_8;
  uStack_4 = 0x20;
  local_8 = 0xb23efb;
  Getmfld(local_30,&param_2,&param_4,param_6,param_7);
  local_8 = 0;
  cVar2 = equal(&param_4);
  if (cVar2 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  if (local_1c == 0) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    FID_conflict_assign(local_30,0,0xffffffff);
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_00b1d36a(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void FUN_00b23f6e(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,double param_7)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  uint local_5c;
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  local_58 [28];
  char local_3c [52];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x54;
  local_8 = 0xb23f7a;
  bVar1 = param_7 < 0.0;
  if (bVar1) {
    param_7 = -param_7;
  }
  local_5c = 0;
  if (1e+35 < param_7 != (param_7 == 1e+35)) {
    do {
      if (4999 < local_5c) break;
      local_5c = local_5c + 10;
      param_7 = param_7 / 10000000000.0;
    } while (1e+35 <= param_7);
  }
  std::
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
  ::
  basic_string<unsigned_short,struct_std::char_traits<unsigned_short>,class_std::allocator<unsigned_short>_>
            (local_58);
  local_8 = 0;
  iVar2 = _sprintf_s(local_3c,0x28,"%.0Lf");
  iVar3 = 0;
  if (0 < iVar2) {
    do {
      _Maklocchr<>();
      FID_conflict_append();
      iVar3 = iVar3 + 1;
    } while (iVar3 < iVar2);
  }
  _Maklocchr<>();
  FID_conflict_append();
  basic_string<>(local_58);
  Putmfld(param_1,param_2,param_3,param_4,param_5,param_6,bVar1);
  FUN_00b1d36a();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::ostreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::money_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >::do_put(class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >,bool,class
// std::ios_base &,unsigned short,class std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &)const 
//  protected: virtual class std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::money_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_put(class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,bool,class std::ios_base &,wchar_t,class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const
// &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_put(int param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
      undefined4 param_5,undefined4 param_6,int param_7)

{
  ushort uVar1;
  ushort uVar2;
  ushort *puVar3;
  uint uVar4;
  undefined auStack_68 [12];
  undefined4 uStack_5c;
  undefined4 uStack_58;
  ushort *puStack_54;
  uint uStack_50;
  undefined *local_3c;
  int local_38;
  undefined4 local_34;
  undefined local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x2c;
  local_8 = 0xb2409a;
  puStack_54 = (ushort *)0x0;
  uStack_58 = 0x30;
  uStack_5c = 0xb240af;
  uStack_50 = param_1_00 + 8;
  local_38 = param_1_00;
  uVar1 = _Maklocchr<>();
  if (*(uint *)(param_7 + 0x18) < 8) {
    puVar3 = (ushort *)(param_7 + 4);
  }
  else {
    puVar3 = *(ushort **)(param_7 + 4);
  }
  uVar4 = 0;
  puStack_54 = (ushort *)0x0;
  uStack_58 = 0x2d;
  local_34 = local_34 & 0xffffff00;
  uStack_5c = 0xb240d2;
  uStack_50 = param_1_00 + 8;
  uVar2 = _Maklocchr<>();
  if (*puVar3 == uVar2) {
    local_34 = CONCAT31(local_34._1_3_,1);
    puVar3 = puVar3 + 1;
  }
  uVar2 = *puVar3;
  if (uVar1 <= uVar2) {
    do {
      if (uVar1 + 9 < (uint)uVar2) break;
      uVar4 = uVar4 + 1;
      uVar2 = puVar3[uVar4];
    } while (uVar1 <= uVar2);
  }
  uStack_58 = 0xb2410c;
  puStack_54 = puVar3;
  uStack_50 = uVar4;
  basic_string<>();
  local_8 = 0;
  if (uVar4 == 0) {
    puStack_54 = (ushort *)0x1;
    uStack_58 = 0xb2411f;
    uStack_50 = (uint)uVar1;
    FID_conflict_append();
  }
  local_3c = auStack_68;
  basic_string<>(local_30);
  Putmfld(param_1,param_2,param_3,param_4,param_5,param_6,local_34);
  uStack_50 = 0;
  puStack_54 = (ushort *)0x1;
  uStack_58 = 0xb24159;
  FUN_00b1d36a();
  uStack_50 = 0xb24161;
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: __thiscall std::time_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >(class
// std::_Locinfo const &,unsigned int)
//  public: __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >(class std::_Locinfo const &,unsigned int)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall time_get<>(undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::
                time_get<unsigned_short,class_std::istreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>
                ::vftable;
  Init(param_1);
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  public: class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// __thiscall std::time_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > >::get_monthname(class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> >,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> >,class std::ios_base &,int &,struct tm *)const 
//  public: class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > __thiscall
// std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// >::get_monthname(class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >,class std::ios_base &,int
// &,struct tm *)const 
// 
// Library: Visual Studio 2008 Release

undefined4 __thiscall
get_monthname(int *param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
             undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
             undefined4 param_8)

{
  (**(code **)(*param_1_00 + 0x14))(param_1,param_2,param_3,param_4,param_5,param_6,param_7,param_8)
  ;
  return param_1;
}



void __fastcall FUN_00b241c0(undefined4 *param_1)

{
  *param_1 = std::
             time_get<unsigned_short,class_std::istreambuf_iterator<unsigned_short,struct_std::char_traits<unsigned_short>_>_>
             ::vftable;
  FUN_00b1bd25();
  *param_1 = std::locale::facet::vftable;
  return;
}



undefined4 __thiscall FUN_00b241d8(undefined4 param_1_00,byte param_1)

{
  FUN_00b241c0();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  private: int __cdecl std::time_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Getint(class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > &,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > &,int,int,int
// &)const 
//  private: int __cdecl std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Getint(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > &,int,int,int &)const 
// 
// Library: Visual Studio 2008 Release

void Getint(int param_1,undefined4 param_2,undefined4 param_3,int param_4,int param_5,int *param_6)

{
  bool bVar1;
  char cVar2;
  short sVar3;
  short sVar4;
  ushort uVar5;
  uint uVar6;
  int iVar7;
  char *pcVar8;
  char *local_40;
  int *local_3c;
  int local_38;
  int local_34;
  uint local_30;
  undefined4 local_2c;
  char local_28 [32];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  param_1 = param_1 + 0x14;
  local_2c = param_3;
  local_3c = param_6;
  local_38 = param_1;
  local_30 = _Maklocchr<>(0x30,0,param_1);
  local_30 = local_30 & 0xffff;
  pcVar8 = local_28;
  cVar2 = equal(local_2c);
  if (cVar2 == '\0') {
    sVar3 = _Maklocchr<>(0x2b,0,param_1);
    sVar4 = FID_conflict_operator_();
    if (sVar4 == sVar3) {
      local_28[0] = '+';
    }
    else {
      sVar3 = _Maklocchr<>(0x2d,0,local_38);
      sVar4 = FID_conflict_operator_();
      if (sVar4 != sVar3) goto LAB_00b24298;
      local_28[0] = '-';
    }
    pcVar8 = local_28 + 1;
    Inc();
  }
LAB_00b24298:
  bVar1 = false;
  cVar2 = operator!=<>(param_2,local_2c);
  if (cVar2 != '\0') {
    do {
      sVar3 = FID_conflict_operator_();
      if (sVar3 != (ushort)local_30) break;
      bVar1 = true;
      Inc();
      cVar2 = operator!=<>(param_2,local_2c);
    } while (cVar2 != '\0');
    if (bVar1) {
      *pcVar8 = '0';
      pcVar8 = pcVar8 + 1;
    }
  }
  while (cVar2 = operator!=<>(param_2,local_2c), cVar2 != '\0') {
    uVar5 = FID_conflict_operator_();
    if ((uVar5 < (ushort)local_30) ||
       (uVar6 = FID_conflict_operator_(), (local_30 & 0xffff) + 9 < (uVar6 & 0xffff))) break;
    cVar2 = FID_conflict_operator_();
    *pcVar8 = cVar2 + ('0' - (char)local_30);
    if (pcVar8 < local_28 + 0x1f) {
      pcVar8 = pcVar8 + 1;
    }
    bVar1 = true;
    Inc();
  }
  if (!bVar1) {
    pcVar8 = local_28;
  }
  *pcVar8 = '\0';
  local_34 = 0;
  iVar7 = __Stolx(local_28,&local_40,10,&local_34);
  equal(local_2c);
  if ((((local_40 != local_28) && (local_34 == 0)) && (param_4 <= iVar7)) && (iVar7 <= param_5)) {
    *local_3c = iVar7;
  }
  ___security_check_cookie_4();
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::do_get_time(class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> >,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short>
// >,class std::ios_base &,int &,struct tm *)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get_time(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,struct tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get_time(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint *puVar1;
  int iVar2;
  short sVar3;
  short sVar4;
  uint uVar5;
  uint *param_7;
  int param_8;
  
  sVar3 = _Maklocchr<>(0x3a,0,param_1_00 + 0x14);
  iVar2 = param_8;
  uVar5 = Getint(param_1_00,&param_2,&stack0x00000010,0,0x17,param_8 + 8);
  puVar1 = param_7;
  *param_7 = *param_7 | uVar5;
  if (*param_7 == 0) {
    sVar4 = FID_conflict_operator_();
    if (sVar4 != sVar3) goto LAB_00b24407;
    Inc();
    uVar5 = Getint(param_1_00,&param_2,&stack0x00000010,0,0x3b,iVar2 + 4);
    *puVar1 = *puVar1 | uVar5;
  }
  else {
LAB_00b24407:
    *puVar1 = *puVar1 | 2;
  }
  if (*puVar1 == 0) {
    sVar4 = FID_conflict_operator_();
    if (sVar4 == sVar3) {
      Inc();
      uVar5 = Getint(param_1_00,&param_2,&stack0x00000010,0,0x3b,iVar2);
      *puVar1 = *puVar1 | uVar5;
      goto LAB_00b24442;
    }
  }
  *puVar1 = *puVar1 | 2;
LAB_00b24442:
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::do_get_date(class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> >,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short>
// >,class std::ios_base &,int &,struct tm *)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get_date(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,struct tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get_date(int *param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
           undefined4 param_4,undefined4 param_5,undefined4 param_6,uint *param_7,int param_8)

{
  uint *puVar1;
  int iVar2;
  char cVar3;
  ushort uVar4;
  short sVar5;
  uint uVar6;
  undefined4 *puVar7;
  int *piVar8;
  undefined local_24 [8];
  uint local_1c;
  uint local_18;
  uint local_14;
  uint local_10;
  uint local_c;
  int local_8;
  
  piVar8 = param_1_00 + 5;
  local_c = _Maklocchr<>(0x30,0,piVar8);
  local_c = local_c & 0xffff;
  local_14 = _Maklocchr<>(0x3a,0,piVar8);
  local_14 = local_14 & 0xffff;
  local_18 = _Maklocchr<>(0x2c,0,piVar8);
  local_18 = local_18 & 0xffff;
  local_1c = _Maklocchr<>(0x2f,0,piVar8);
  local_1c = local_1c & 0xffff;
  local_10 = _Maklocchr<>(0x20,0,piVar8);
  local_10 = local_10 & 0xffff;
  local_8 = (**(code **)(*param_1_00 + 4))();
  if (local_8 == 0) {
    local_8 = 2;
  }
  cVar3 = equal(&param_4);
  iVar2 = param_8;
  puVar1 = param_7;
  if (cVar3 == '\0') {
    uVar4 = FID_conflict_operator_();
    if ((uVar4 < (ushort)local_c) ||
       (uVar6 = FID_conflict_operator_(), (local_c & 0xffff) + 9 < (uVar6 & 0xffff))) {
      puVar7 = (undefined4 *)
               get_monthname(local_24,param_2,param_3,param_4,param_5,param_6,puVar1,iVar2);
      local_8 = 2;
LAB_00b2459b:
      param_2 = *puVar7;
      param_3 = puVar7[1];
    }
    else if (local_8 == 2) {
      uVar6 = Getint(param_1_00,&param_2,&param_4,1,0xc,iVar2 + 0x10);
      *puVar1 = *puVar1 | uVar6;
      *(int *)(iVar2 + 0x10) = *(int *)(iVar2 + 0x10) + -1;
    }
    else {
      if (local_8 != 1) {
        puVar7 = (undefined4 *)
                 get_year(local_24,param_2,param_3,param_4,param_5,param_6,puVar1,iVar2);
        goto LAB_00b2459b;
      }
      uVar6 = Getint(param_1_00,&param_2,&param_4,1,0x1f,iVar2 + 0xc);
      *puVar1 = *puVar1 | uVar6;
    }
  }
  while (cVar3 = operator!=<>(&param_2,&param_4), cVar3 != '\0') {
    sVar5 = FID_conflict_operator_();
    if (sVar5 != (short)local_10) break;
    Inc();
  }
  cVar3 = operator!=<>(&param_2,&param_4);
  if (cVar3 == '\0') goto LAB_00b24626;
  sVar5 = FID_conflict_operator_();
  if (sVar5 != (short)local_14) {
    sVar5 = FID_conflict_operator_();
    if (sVar5 != (short)local_18) {
      sVar5 = FID_conflict_operator_();
      if (sVar5 != (short)local_1c) goto LAB_00b24626;
    }
  }
  do {
    Inc();
LAB_00b24626:
    cVar3 = operator!=<>(&param_2,&param_4);
    if (cVar3 == '\0') break;
    sVar5 = FID_conflict_operator_();
  } while (sVar5 == (short)local_10);
  cVar3 = equal(&param_4);
  if (cVar3 == '\0') {
    uVar4 = FID_conflict_operator_();
    if ((uVar4 < (ushort)local_c) ||
       (uVar6 = FID_conflict_operator_(), (local_c & 0xffff) + 9 < (uVar6 & 0xffff))) {
      if (local_8 == 2) {
        *puVar1 = *puVar1 | 2;
      }
      else {
        puVar7 = (undefined4 *)
                 get_monthname(local_24,param_2,param_3,param_4,param_5,param_6,puVar1,iVar2);
        param_2 = *puVar7;
        param_3 = puVar7[1];
        if (local_8 == 4) {
          local_8 = 3;
        }
      }
    }
    else if ((local_8 == 1) || (local_8 == 3)) {
      uVar6 = Getint(param_1_00,&param_2,&param_4,1,0xc,iVar2 + 0x10);
      *puVar1 = *puVar1 | uVar6;
      *(int *)(iVar2 + 0x10) = *(int *)(iVar2 + 0x10) + -1;
    }
    else {
      uVar6 = Getint(param_1_00,&param_2,&param_4,1,0x1f,iVar2 + 0xc);
      *puVar1 = *puVar1 | uVar6;
    }
  }
  while (cVar3 = operator!=<>(&param_2,&param_4), cVar3 != '\0') {
    sVar5 = FID_conflict_operator_();
    if (sVar5 != (short)local_10) break;
    Inc();
  }
  cVar3 = operator!=<>(&param_2,&param_4);
  if (cVar3 == '\0') goto LAB_00b24779;
  sVar5 = FID_conflict_operator_();
  if (sVar5 != (short)local_14) {
    sVar5 = FID_conflict_operator_();
    if (sVar5 != (short)local_18) {
      sVar5 = FID_conflict_operator_();
      if (sVar5 != (short)local_1c) goto LAB_00b24779;
    }
  }
  do {
    Inc();
LAB_00b24779:
    cVar3 = operator!=<>(&param_2,&param_4);
    if (cVar3 == '\0') break;
    sVar5 = FID_conflict_operator_();
  } while (sVar5 == (short)local_10);
  cVar3 = equal(&param_4);
  if (cVar3 == '\0') {
    uVar4 = FID_conflict_operator_();
    if ((uVar4 < (ushort)local_c) ||
       (uVar6 = FID_conflict_operator_(), (local_c & 0xffff) + 9 < (uVar6 & 0xffff))) {
      if (local_8 != 4) goto LAB_00b24830;
      puVar7 = (undefined4 *)
               get_monthname(local_24,param_2,param_3,param_4,param_5,param_6,puVar1,iVar2);
    }
    else {
      if (local_8 == 4) {
        piVar8 = (int *)(iVar2 + 0x10);
        uVar6 = Getint(param_1_00,&param_2,&param_4,1,0xc,piVar8);
        *puVar1 = *puVar1 | uVar6;
        *piVar8 = *piVar8 + -1;
        goto LAB_00b2485c;
      }
      if (local_8 == 3) {
        uVar6 = Getint(param_1_00,&param_2,&param_4,1,0x1f,iVar2 + 0xc);
        *puVar1 = *puVar1 | uVar6;
        goto LAB_00b2485c;
      }
      puVar7 = (undefined4 *)get_year(local_24,param_2,param_3,param_4,param_5,param_6,puVar1,iVar2)
      ;
    }
    param_2 = *puVar7;
    param_3 = puVar7[1];
  }
  else {
LAB_00b24830:
    *puVar1 = *puVar1 | 2;
  }
LAB_00b2485c:
  cVar3 = equal(&param_4);
  if (cVar3 != '\0') {
    *puVar1 = *puVar1 | 1;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::do_get_year(class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> >,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short>
// >,class std::ios_base &,int &,struct tm *)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get_year(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,struct tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get_year(undefined4 param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  uint uVar1;
  uint *param_7;
  int param_8;
  int local_8;
  
  local_8 = 0;
  uVar1 = Getint(param_1_00,&param_2,&stack0x00000010,0,0x7f3,&local_8);
  *param_7 = *param_7 | uVar1;
  if ((*param_7 & 2) == 0) {
    if (local_8 < 0x76c) {
      if (0x87 < local_8) {
        *param_7 = *param_7 | 2;
      }
    }
    else {
      local_8 = local_8 + -0x76c;
    }
  }
  if ((*(byte *)param_7 & 2) == 0) {
    *(int *)(param_8 + 0x14) = local_8;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::do_get_weekday(class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned
// short> >,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short>
// >,class std::ios_base &,int &,struct tm *)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get_weekday(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,struct tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get_weekday(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  uint *param_7;
  int param_8;
  
  iVar1 = _Getloctxt<>(&param_2,&stack0x00000010,0,*(undefined4 *)(param_1_00 + 8));
  if (iVar1 < 0) {
    *param_7 = *param_7 | 2;
  }
  else {
    *(int *)(param_8 + 0x18) = iVar1 >> 1;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > __thiscall std::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::do_get_monthname(class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> >,class std::ios_base &,int &,struct tm *)const 
//  protected: virtual class std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> >
// __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::do_get_monthname(class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> >,class std::ios_base &,int &,struct tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
do_get_monthname(int param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3)

{
  int iVar1;
  uint *param_7;
  int param_8;
  
  iVar1 = _Getloctxt<>(&param_2,&stack0x00000010,0,*(undefined4 *)(param_1_00 + 0xc));
  if (iVar1 < 0) {
    *param_7 = *param_7 | 2;
  }
  else {
    *(int *)(param_8 + 0x10) = iVar1 >> 1;
  }
  *param_1 = param_2;
  param_1[1] = param_3;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::time_get<char,class
// std::istreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::time_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  undefined4 uVar2;
  int iVar3;
  _Locinfo local_a8 [116];
  undefined local_34 [28];
  void *local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x98;
  local_8 = 0xb24981;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    local_18 = operator_new(0x1c);
    local_8 = 0;
    if (local_18 == (void *)0x0) {
      iVar3 = 0;
    }
    else {
      pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_34);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar2 = std::_Locinfo::_Locinfo(local_a8,pbVar1);
      local_8 = 2;
      local_14 = 3;
      iVar3 = time_get<>(uVar2,0);
    }
    *param_1 = iVar3;
    local_8 = 3;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a8);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 5;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::time_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::time_get<unsigned
// short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::time_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb24a28;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd5c;
  local_8 = 0;
  local_14[0] = DAT_032edd5c;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd70);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd5c = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::time_get<unsigned short,class std::istreambuf_iterator<unsigned short,struct
// std::char_traits<unsigned short> > > const & __cdecl std::use_facet<class std::time_get<unsigned
// short,class std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> > >
// >(class std::locale const &)
//  class std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > > const & __cdecl std::use_facet<class std::time_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > > >(class std::locale const
// &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb24ac5;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032edd60;
  local_8 = 0;
  local_14[0] = DAT_032edd60;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd68);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032edd60 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Different Base Names
//  private: static void __cdecl std::locale::_Locimp::_Makeushloc(class std::_Locinfo const
// &,int,class std::locale::_Locimp *,class std::locale const *)
//  private: static void __cdecl std::locale::_Locimp::_Makewloc(class std::_Locinfo const
// &,int,class std::locale::_Locimp *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

void FID_conflict__Makewloc(undefined4 param_1,uint param_2,undefined4 param_3,int param_4)

{
  void *pvVar1;
  undefined4 uVar2;
  uint uVar3;
  uint uVar4;
  undefined4 *puVar5;
  
  if ((param_2 & 2) != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x20);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = ctype<>(param_1,0);
      }
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032bc824);
    }
    else {
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032bc824);
      uVar2 = FUN_00413d06(param_4,uVar3);
    }
    FUN_007cc31d(uVar2,uVar3);
  }
  uVar3 = param_2 & 8;
  if (uVar3 != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x10);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = collate<>(param_1,0);
      }
      uVar4 = std::locale::id::operator_unsigned_int((id *)0x32f11d4);
    }
    else {
      uVar4 = std::locale::id::operator_unsigned_int((id *)0x32f11d4);
      uVar2 = FUN_0040e683(param_4,uVar4);
    }
    FUN_007cc31d(uVar2,uVar4);
  }
  if (uVar3 != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x10);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = collate<>(param_1,0);
      }
      uVar4 = std::locale::id::operator_unsigned_int((id *)0x32f11d0);
    }
    else {
      uVar4 = std::locale::id::operator_unsigned_int((id *)0x32f11d0);
      uVar2 = FUN_00416e6a(param_4,uVar4);
    }
    FUN_007cc31d(uVar2,uVar4);
    if (uVar3 != 0) {
      if (param_4 == 0) {
        pvVar1 = operator_new(0x18);
        if (pvVar1 == (void *)0x0) {
          uVar2 = 0;
        }
        else {
          uVar2 = numpunct<>(param_1,0,0);
        }
        uVar3 = std::locale::id::operator_unsigned_int((id *)0x32f11cc);
      }
      else {
        uVar3 = std::locale::id::operator_unsigned_int((id *)0x32f11cc);
        uVar2 = FUN_004173bd(param_4,uVar3);
      }
      FUN_007cc31d(uVar2,uVar3);
    }
  }
  if ((param_2 & 1) != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x10);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = collate<>(param_1,0);
      }
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd8c);
    }
    else {
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd8c);
      uVar2 = use_facet<>(param_4,uVar3);
    }
    FUN_007cc31d(uVar2,uVar3);
  }
  if ((param_2 & 0x20) != 0) {
    if (param_4 == 0) {
      puVar5 = (undefined4 *)operator_new(8);
      if (puVar5 == (undefined4 *)0x0) {
        puVar5 = (undefined4 *)0x0;
      }
      else {
        puVar5[1] = 0;
        *puVar5 = std::messages<wchar_t>::vftable;
      }
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd80);
    }
    else {
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd80);
      puVar5 = (undefined4 *)use_facet<>(param_4,uVar3);
    }
    FUN_007cc31d(puVar5,uVar3);
  }
  uVar3 = param_2 & 4;
  if (uVar3 != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x10);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                          (param_1,0);
      }
      uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd9c);
    }
    else {
      uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd9c);
      uVar2 = use_facet<>(param_4,uVar4);
    }
    FUN_007cc31d(uVar2,uVar4);
  }
  if (uVar3 != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x10);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                          (param_1,0);
      }
      uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edda0);
    }
    else {
      uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edda0);
      uVar2 = use_facet<>(param_4,uVar4);
    }
    FUN_007cc31d(uVar2,uVar4);
    if (uVar3 != 0) {
      if (param_4 == 0) {
        pvVar1 = operator_new(0x34);
        if (pvVar1 == (void *)0x0) {
          uVar2 = 0;
        }
        else {
          uVar2 = moneypunct<>(param_1,0,0);
        }
        uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd84);
      }
      else {
        uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd84);
        uVar2 = use_facet<>(param_4,uVar4);
      }
      FUN_007cc31d(uVar2,uVar4);
      if (uVar3 != 0) {
        if (param_4 == 0) {
          pvVar1 = operator_new(0x34);
          if (pvVar1 == (void *)0x0) {
            uVar2 = 0;
          }
          else {
            uVar2 = moneypunct<>(param_1,0,0);
          }
          uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd6c);
        }
        else {
          uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd6c);
          uVar2 = use_facet<>(param_4,uVar3);
        }
        FUN_007cc31d(uVar2,uVar3);
      }
    }
  }
  if ((param_2 & 0x10) != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x1c);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = time_get<>(param_1,0);
      }
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd70);
    }
    else {
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd70);
      uVar2 = use_facet<>(param_4,uVar3);
    }
    FUN_007cc31d(uVar2,uVar3);
  }
  if ((param_2 & 0x10) != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x14);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = time_put<>(param_1,0);
      }
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032f148c);
    }
    else {
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032f148c);
      uVar2 = FUN_007ca469(param_4,uVar3);
    }
    FUN_007cc31d(uVar2,uVar3);
  }
  if ((param_2 & 2) != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x10);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = FUN_00824860(param_1,0);
      }
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032bc828);
    }
    else {
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032bc828);
      uVar2 = FUN_00825b50(param_4,uVar3);
    }
    FUN_007cc31d(uVar2,uVar3);
  }
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Different Base Names
//  private: static void __cdecl std::locale::_Locimp::_Makeushloc(class std::_Locinfo const
// &,int,class std::locale::_Locimp *,class std::locale const *)
//  private: static void __cdecl std::locale::_Locimp::_Makewloc(class std::_Locinfo const
// &,int,class std::locale::_Locimp *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

void FID_conflict__Makewloc(undefined4 param_1,uint param_2,undefined4 param_3,int param_4)

{
  void *pvVar1;
  undefined4 uVar2;
  uint uVar3;
  uint uVar4;
  undefined4 *puVar5;
  
  if ((param_2 & 2) != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x20);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = ctype<>(param_1,0);
      }
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032bc830);
    }
    else {
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032bc830);
      uVar2 = use_facet<>(param_4,uVar3);
    }
    FUN_007cc31d(uVar2,uVar3);
  }
  uVar3 = param_2 & 8;
  if (uVar3 != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x10);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                          (param_1,0);
      }
      uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd98);
    }
    else {
      uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd98);
      uVar2 = use_facet<>(param_4,uVar4);
    }
    FUN_007cc31d(uVar2,uVar4);
  }
  if (uVar3 != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x10);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                          (param_1,0);
      }
      uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd90);
    }
    else {
      uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd90);
      uVar2 = use_facet<>(param_4,uVar4);
    }
    FUN_007cc31d(uVar2,uVar4);
    if (uVar3 != 0) {
      if (param_4 == 0) {
        pvVar1 = operator_new(0x18);
        if (pvVar1 == (void *)0x0) {
          uVar2 = 0;
        }
        else {
          uVar2 = numpunct<>(param_1,0,0);
        }
        uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd88);
      }
      else {
        uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd88);
        uVar2 = use_facet<>(param_4,uVar3);
      }
      FUN_007cc31d(uVar2,uVar3);
    }
  }
  if ((param_2 & 1) != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x10);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = collate<>(param_1,0);
      }
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd78);
    }
    else {
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd78);
      uVar2 = use_facet<>(param_4,uVar3);
    }
    FUN_007cc31d(uVar2,uVar3);
  }
  if ((param_2 & 0x20) != 0) {
    if (param_4 == 0) {
      puVar5 = (undefined4 *)operator_new(8);
      if (puVar5 == (undefined4 *)0x0) {
        puVar5 = (undefined4 *)0x0;
      }
      else {
        puVar5[1] = 0;
        *puVar5 = std::messages<unsigned_short>::vftable;
      }
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd7c);
    }
    else {
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd7c);
      puVar5 = (undefined4 *)use_facet<>(param_4,uVar3);
    }
    FUN_007cc31d(puVar5,uVar3);
  }
  uVar3 = param_2 & 4;
  if (uVar3 != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x10);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                          (param_1,0);
      }
      uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd64);
    }
    else {
      uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd64);
      uVar2 = use_facet<>(param_4,uVar4);
    }
    FUN_007cc31d(uVar2,uVar4);
  }
  if (uVar3 != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x10);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = FID_conflict_money_put<wchar_t,class_std::ostreambuf_iterator<wchar_t,struct_std::char_traits<wchar_t>_>_>
                          (param_1,0);
      }
      uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edda4);
    }
    else {
      uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edda4);
      uVar2 = use_facet<>(param_4,uVar4);
    }
    FUN_007cc31d(uVar2,uVar4);
    if (uVar3 != 0) {
      if (param_4 == 0) {
        pvVar1 = operator_new(0x34);
        if (pvVar1 == (void *)0x0) {
          uVar2 = 0;
        }
        else {
          uVar2 = moneypunct<>(param_1,0,0);
        }
        uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd94);
      }
      else {
        uVar4 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd94);
        uVar2 = use_facet<>(param_4,uVar4);
      }
      FUN_007cc31d(uVar2,uVar4);
      if (uVar3 != 0) {
        if (param_4 == 0) {
          pvVar1 = operator_new(0x34);
          if (pvVar1 == (void *)0x0) {
            uVar2 = 0;
          }
          else {
            uVar2 = moneypunct<>(param_1,0,0);
          }
          uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edda8);
        }
        else {
          uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edda8);
          uVar2 = use_facet<>(param_4,uVar3);
        }
        FUN_007cc31d(uVar2,uVar3);
      }
    }
  }
  if ((param_2 & 0x10) != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x1c);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = time_get<>(param_1,0);
      }
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd68);
    }
    else {
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd68);
      uVar2 = use_facet<>(param_4,uVar3);
    }
    FUN_007cc31d(uVar2,uVar3);
  }
  if ((param_2 & 0x10) != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x14);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = time_put<>(param_1,0);
      }
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd74);
    }
    else {
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032edd74);
      uVar2 = use_facet<>(param_4,uVar3);
    }
    FUN_007cc31d(uVar2,uVar3);
  }
  if ((param_2 & 2) != 0) {
    if (param_4 == 0) {
      pvVar1 = operator_new(0x10);
      if (pvVar1 == (void *)0x0) {
        uVar2 = 0;
      }
      else {
        uVar2 = codecvt<>(param_1,0);
      }
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032bc820);
    }
    else {
      uVar3 = std::locale::id::operator_unsigned_int((id *)&DAT_032bc820);
      uVar2 = use_facet<>(param_4,uVar3);
    }
    FUN_007cc31d(uVar2,uVar3);
  }
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: void __thiscall std::codecvt<unsigned short,char,int>::_Init(class std::_Locinfo
// const &)
//  protected: void __thiscall std::codecvt<wchar_t,char,int>::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::collate<char>::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::collate<unsigned short>::_Init(class std::_Locinfo const &)
//   17 names - too many to list
// 
// Library: Visual Studio 2008 Release

void __thiscall Init(int param_1_00,_Locinfo *param_1)

{
  _Collvec _Var1;
  
  _Var1 = std::_Locinfo::_Getcoll(param_1);
  *(undefined4 *)(param_1_00 + 8) = *(undefined4 *)_Var1._Page;
  *(undefined4 *)(param_1_00 + 0xc) = ((undefined4 *)_Var1._Page)[1];
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: void __thiscall std::time_put<char,class std::ostreambuf_iterator<char,struct
// std::char_traits<char> > >::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::time_put<unsigned short,class std::ostreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::time_put<wchar_t,class std::ostreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Init(class std::_Locinfo const &)
// 
// Library: Visual Studio 2008 Release

void __thiscall Init(int param_1_00,void *param_1)

{
  undefined4 *puVar1;
  int local_c;
  int iStack_8;
  
  local_c = param_1_00;
  iStack_8 = param_1_00;
  puVar1 = (undefined4 *)FUN_004170cc(&local_c);
  *(undefined4 *)(param_1_00 + 0xc) = *puVar1;
  *(undefined4 *)(param_1_00 + 0x10) = puVar1[1];
  puVar1 = (undefined4 *)FUN_007cb906(&param_1);
  *(undefined4 *)(param_1_00 + 8) = *puVar1;
  *puVar1 = 0;
  _free(param_1);
  return;
}



// Library Function - Multiple Matches With Same Base Name
//  private: void __thiscall std::_Mpunct<unsigned short>::_Makpat(struct std::money_base::pattern
// &,unsigned int,unsigned int,unsigned int)
//  private: void __thiscall std::_Mpunct<wchar_t>::_Makpat(struct std::money_base::pattern
// &,unsigned int,unsigned int,unsigned int)
// 
// Library: Visual Studio 2008 Release

void __thiscall Makpat(int param_1_00,void *param_1,uint param_2,uint param_3,uint param_4)

{
  char *_Src;
  
  if ((((*(char *)(param_1_00 + 0x28) == '\0') && (param_2 < 3)) && (param_3 < 2)) && (param_4 < 5))
  {
    _Src = "+v$x+v$xv$+xv+$xv$+x+$vx+$vx$v+x+$vx$+vx+v $+v $v $+v +$v $++$ v+$ v$ v++$ v$+ v+xv$+ v$v$ +v+ $v$ ++x$v+ $v$v ++ $v$ +v"
           + ((param_3 + param_2 * 2) * 5 + param_4) * 4;
  }
  else {
    _Src = "$+xv";
  }
  _memcpy_s(param_1,4,_Src,4);
  return;
}



// Library Function - Single Match
//  public: __thiscall std::collate<char>::collate<char>(class std::_Locinfo const &,unsigned int)
// 
// Library: Visual Studio 2008 Release

collate<char> * __thiscall
std::collate<char>::collate<char>(collate<char> *this,_Locinfo *param_1,uint param_2)

{
  *(uint *)(this + 4) = param_2;
  *(undefined ***)this = vftable;
  Init(param_1);
  return this;
}



// Library Function - Single Match
//  protected: virtual int __thiscall std::collate<char>::do_compare(char const *,char const *,char
// const *,char const *)const 
// 
// Library: Visual Studio 2008 Release

int __thiscall
std::collate<char>::do_compare
          (collate<char> *this,char *param_1,char *param_2,char *param_3,char *param_4)

{
  int iVar1;
  
  iVar1 = __Strcoll(param_1,param_2,param_3,param_4,(_Collvec *)(this + 8));
  return iVar1;
}



// Library Function - Single Match
//  protected: virtual long __thiscall std::collate<char>::do_hash(char const *,char const *)const 
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

long __thiscall std::collate<char>::do_hash(collate<char> *this,char *param_1,char *param_2)

{
  uint uVar1;
  
  uVar1 = 0;
  for (; param_1 != param_2; param_1 = param_1 + 1) {
    uVar1 = (uVar1 << 8 | uVar1 >> 0x18) + (int)*param_1;
  }
  return uVar1;
}



undefined4 * __thiscall FUN_00b2558f(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::locale::facet::vftable;
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 FUN_00b255b1(void)

{
  return 0xffffffff;
}



// Library Function - Multiple Matches With Different Base Names
//  public: __thiscall std::money_get<char,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > >::money_get<char,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > >(class std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_put<char,class std::ostreambuf_iterator<char,struct
// std::char_traits<char> > >::money_put<char,class std::ostreambuf_iterator<char,struct
// std::char_traits<char> > >(class std::_Locinfo const &,unsigned int)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
FID_conflict_money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>
          (undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::
                money_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                ::vftable;
  Init(param_1);
  return param_1_00;
}



// Library Function - Multiple Matches With Different Base Names
//  public: __thiscall std::money_get<char,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > >::money_get<char,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > >(class std::_Locinfo const &,unsigned int)
//  public: __thiscall std::money_put<char,class std::ostreambuf_iterator<char,struct
// std::char_traits<char> > >::money_put<char,class std::ostreambuf_iterator<char,struct
// std::char_traits<char> > >(class std::_Locinfo const &,unsigned int)
// 
// Library: Visual Studio 2008 Release

undefined4 * __thiscall
FID_conflict_money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>
          (undefined4 *param_1_00,undefined4 param_1,undefined4 param_2)

{
  param_1_00[1] = param_2;
  *param_1_00 = std::
                money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>
                ::vftable;
  Init(param_1);
  return param_1_00;
}



void __fastcall FUN_00b255fd(undefined4 *param_1)

{
  *param_1 = std::_Mpunct<char>::vftable;
  Tidy();
  *param_1 = std::locale::facet::vftable;
  return;
}



void __thiscall FUN_00b25615(int param_1_00,undefined4 *param_1)

{
  *param_1 = *(undefined4 *)(param_1_00 + 0x20);
  return;
}



// Library Function - Single Match
//  public: __thiscall std::time_put<char,class std::ostreambuf_iterator<char,struct
// std::char_traits<char> > >::time_put<char,class std::ostreambuf_iterator<char,struct
// std::char_traits<char> > >(class std::_Locinfo const &,unsigned int)
// 
// Library: Visual Studio 2008 Release

time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_> * __thiscall
std::time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>::
time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>
          (time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_> *this
          ,_Locinfo *param_1,uint param_2)

{
  *(uint *)(this + 4) = param_2;
  *(undefined ***)this = vftable;
  *(undefined4 *)(this + 8) = 0;
  Init(param_1);
  return this;
}



void __fastcall FUN_00b2564d(undefined4 *param_1)

{
  *param_1 = std::
             time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>::
             vftable;
  _free((void *)param_1[2]);
  *param_1 = std::locale::facet::vftable;
  return;
}



undefined4 __thiscall FUN_00b25669(undefined4 param_1_00,byte param_1)

{
  FUN_00b2564d();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



undefined4 __thiscall FUN_00b2568a(undefined4 param_1_00,byte param_1)

{
  FUN_00b255fd();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Single Match
//  private: static class std::ostreambuf_iterator<char,struct std::char_traits<char> > __cdecl
// std::money_put<char,class std::ostreambuf_iterator<char,struct std::char_traits<char> >
// >::_Put(class std::ostreambuf_iterator<char,struct std::char_traits<char> >,class
// std::_String_const_iterator<char,struct std::char_traits<char>,class std::allocator<char>
// >,unsigned int)
// 
// Library: Visual Studio 2008 Release

void __cdecl
std::money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>::_Put
          (undefined4 *param_11,undefined4 param_12,undefined4 param_13,undefined4 param_14,
          undefined4 param_5,int param_15)

{
  char *pcVar1;
  
  while (param_15 != 0) {
    pcVar1 = _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          *)&param_14);
    FUN_00425110(*pcVar1);
    param_15 = param_15 + -1;
    _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
    operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)&param_14);
  }
  *param_11 = param_12;
  param_11[1] = param_13;
  return;
}



// Library Function - Single Match
//  private: static class std::ostreambuf_iterator<char,struct std::char_traits<char> > __cdecl
// std::money_put<char,class std::ostreambuf_iterator<char,struct std::char_traits<char> >
// >::_Rep(class std::ostreambuf_iterator<char,struct std::char_traits<char> >,char,unsigned int)
// 
// Library: Visual Studio 2008 Release

void __cdecl
std::money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>::_Rep
          (undefined4 *param_11,undefined4 param_12,undefined4 param_13,undefined4 param_14,
          int param_15)

{
  if (param_15 != 0) {
    do {
      FUN_00425110(param_14);
      param_15 = param_15 + -1;
    } while (param_15 != 0);
  }
  *param_11 = param_12;
  param_11[1] = param_13;
  return;
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  protected: void __thiscall std::_Mpunct<char>::_Init(class std::_Locinfo const &,bool)
// 
// Library: Visual Studio 2008 Release

void __thiscall std::_Mpunct<char>::_Init(_Mpunct<char> *this,_Locinfo *param_1,bool param_2)

{
  undefined4 *puVar1;
  char cVar2;
  undefined4 *puVar3;
  lconv *plVar4;
  undefined4 uVar5;
  undefined **ppuVar6;
  char *pcVar7;
  undefined local_20 [8];
  _Mpunct<char> *local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  int iVar8;
  
  uStack_4 = 0x10;
  local_8 = 0xb2571e;
  local_18 = this;
  puVar3 = (undefined4 *)FUN_004170cc(local_20);
  puVar1 = (undefined4 *)(this + 0x2c);
  *puVar1 = *puVar3;
  *(undefined4 *)(this + 0x30) = puVar3[1];
  plVar4 = _localeconv();
  *(undefined4 *)(this + 8) = 0;
  *(undefined4 *)(this + 0x10) = 0;
  *(undefined4 *)(this + 0x14) = 0;
  *(undefined4 *)(this + 0x18) = 0;
  local_8 = 0;
  uVar5 = FUN_0041709c(plVar4->mon_grouping,0,puVar1);
  *(undefined4 *)(this + 8) = uVar5;
  if (this[0x28] == (_Mpunct<char>)0x0) {
    pcVar7 = plVar4->currency_symbol;
  }
  else {
    pcVar7 = plVar4->int_curr_symbol;
  }
  uVar5 = FUN_0041709c(pcVar7,0,puVar1);
  *(undefined4 *)(this + 0x10) = uVar5;
  ppuVar6 = &PTR_02bd3fc0;
  if ((byte)plVar4->p_sign_posn < 5) {
    ppuVar6 = (undefined **)plVar4->positive_sign;
  }
  uVar5 = FUN_0041709c(ppuVar6,0,puVar1);
  *(undefined4 *)(this + 0x14) = uVar5;
  pcVar7 = "-";
  if ((byte)plVar4->n_sign_posn < 5) {
    pcVar7 = plVar4->negative_sign;
  }
  uVar5 = FUN_0041709c(pcVar7,0,puVar1);
  *(undefined4 *)(this + 0x18) = uVar5;
  this[0xc] = *(_Mpunct<char> *)plVar4->mon_decimal_point;
  this[0xd] = *(_Mpunct<char> *)plVar4->mon_thousands_sep;
  if (this[0x28] == (_Mpunct<char>)0x0) {
    cVar2 = plVar4->frac_digits;
  }
  else {
    cVar2 = plVar4->int_frac_digits;
  }
  iVar8 = (int)cVar2;
  *(int *)(this + 0x1c) = iVar8;
  if ((iVar8 < 0) || (0x7e < iVar8)) {
    *(undefined4 *)(this + 0x1c) = 0;
  }
  Makpat(this + 0x20,(int)plVar4->p_sep_by_space,(int)plVar4->p_cs_precedes,(int)plVar4->p_sign_posn
        );
  Makpat(this + 0x24,(int)plVar4->n_sep_by_space,(int)plVar4->n_cs_precedes,(int)plVar4->n_sign_posn
        );
  if (param_2) {
    _memcpy(this + 0x20,&DAT_00dcdb38,4);
    _memcpy(this + 0x24,&DAT_00dcdb38,4);
  }
  return;
}



void Catch_All_00b2584d(void)

{
  code *pcVar1;
  
  Tidy();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  public: __thiscall std::_Mpunct<char>::_Mpunct<char>(class std::_Locinfo const &,unsigned
// int,bool,bool)
// 
// Library: Visual Studio 2008 Release

_Mpunct<char> * __thiscall
std::_Mpunct<char>::_Mpunct<char>
          (_Mpunct<char> *this,_Locinfo *param_1,uint param_2,bool param_3,bool param_4)

{
  *(uint *)(this + 4) = param_2;
  *(undefined ***)this = vftable;
  this[0x28] = (_Mpunct<char>)param_3;
  _Init(this,param_1,param_4);
  return this;
}



// Library Function - Single Match
//  public: class std::_String_iterator<char,struct std::char_traits<char>,class
// std::allocator<char> > __thiscall std::_String_iterator<char,struct std::char_traits<char>,class
// std::allocator<char> >::operator-(int)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::operator-
          (_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this,
          undefined4 *param_1,int param_3)

{
  undefined4 uVar1;
  undefined4 uVar2;
  
  uVar1 = *(undefined4 *)this;
  uVar2 = *(undefined4 *)(this + 4);
  FUN_005e0be0(-param_3);
  *param_1 = uVar1;
  param_1[1] = uVar2;
  return;
}



// Library Function - Single Match
//  public: __thiscall std::moneypunct<char,0>::moneypunct<char,0>(class std::_Locinfo const
// &,unsigned int,bool)
// 
// Library: Visual Studio 2008 Release

moneypunct<char,0> * __thiscall
std::moneypunct<char,0>::moneypunct<char,0>
          (moneypunct<char,0> *this,_Locinfo *param_1,uint param_2,bool param_3)

{
  _Mpunct<char>::_Mpunct<char>((_Mpunct<char> *)this,param_1,param_2,false,param_3);
  *(undefined ***)this = vftable;
  return this;
}



undefined4 * __thiscall FUN_00b258f2(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::moneypunct<char,0>::vftable;
  FUN_00b255fd();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Single Match
//  public: __thiscall std::moneypunct<char,1>::moneypunct<char,1>(class std::_Locinfo const
// &,unsigned int,bool)
// 
// Library: Visual Studio 2008 Release

moneypunct<char,1> * __thiscall
std::moneypunct<char,1>::moneypunct<char,1>
          (moneypunct<char,1> *this,_Locinfo *param_1,uint param_2,bool param_3)

{
  _Mpunct<char>::_Mpunct<char>((_Mpunct<char> *)this,param_1,param_2,true,param_3);
  *(undefined ***)this = vftable;
  return this;
}



undefined4 * __thiscall FUN_00b2593e(undefined4 *param_1_00,byte param_1)

{
  *param_1_00 = std::moneypunct<char,1>::vftable;
  FUN_00b255fd();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> > __thiscall std::messages<char>::do_get(int,int,int,class
// std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)const 
//  protected: virtual class std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> > __thiscall std::messages<unsigned
// short>::do_get(int,int,int,class std::basic_string<unsigned short,struct
// std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &)const 
//  protected: virtual class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::messages<wchar_t>::do_get(int,int,int,class
// std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const
// &)const 
// 
// Libraries: Visual Studio 2003 Release, Visual Studio 2005 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
do_get(basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_5;
  
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1,param_5);
  return param_1;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Single Match
//  protected: virtual class std::ostreambuf_iterator<char,struct std::char_traits<char> >
// __thiscall std::time_put<char,class std::ostreambuf_iterator<char,struct std::char_traits<char> >
// >::do_put(class std::ostreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base
// &,char,struct tm const *,char,char)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>::do_put
          (void *this,undefined4 *param_11,undefined4 param_12,undefined4 param_13,
          undefined4 param_5,undefined4 param_6,tm *param_14,undefined param_15,char param_16)

{
  void *pvVar1;
  _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *p_Var2;
  char *pcVar3;
  size_t sVar4;
  undefined4 *puVar5;
  uint uVar6;
  undefined local_50 [8];
  undefined4 *local_48;
  undefined4 local_44;
  size_t local_40;
  undefined4 local_3c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_38 [20];
  size_t local_24;
  undefined4 local_1c;
  undefined uStack_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x40;
  local_8 = 0xb2598d;
  local_1c = 0x782521;
  local_48 = param_11;
  local_3c = param_14;
  uStack_18 = 0;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_38);
  local_8 = 0;
  if (param_16 == '\0') {
    local_1c._0_3_ = CONCAT12(param_15,(undefined2)local_1c);
  }
  else {
    local_1c._0_3_ = CONCAT12(param_16,(undefined2)local_1c);
    local_1c = CONCAT13(param_15,(undefined3)local_1c);
  }
  uVar6 = 0x10;
  while( true ) {
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (local_38,uVar6,'\0');
    pvVar1 = *(void **)((int)this + 8);
    local_40 = local_24;
    p_Var2 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
              *)FUN_0042a0d0(local_50);
    pcVar3 = _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             ::operator*(p_Var2);
    sVar4 = __Strftime(pcVar3,local_40,(char *)&local_1c,local_3c,pvVar1);
    if (sVar4 != 0) break;
    uVar6 = uVar6 * 2;
  }
  puVar5 = (undefined4 *)FUN_0042a0d0(local_50);
  local_44 = *puVar5;
  local_40 = puVar5[1];
  while (sVar4 = sVar4 - 1, sVar4 != 0) {
    p_Var2 = _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             ::operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                           *)&local_44);
    pcVar3 = _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
             ::operator*(p_Var2);
    local_3c = (tm *)CONCAT31(local_3c._1_3_,*pcVar3);
    FUN_00425110(local_3c);
  }
  *local_48 = param_12;
  local_48[1] = param_13;
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::collate<char>::_Getcat(class std::locale::facet const *
// *,class std::locale const *)
//  public: static unsigned int __cdecl std::collate<unsigned short>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::collate<wchar_t>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  collate<char> *this;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  _Locinfo *p_Var2;
  int iVar3;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb25a7e;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    this = (collate<char> *)operator_new(0x10);
    local_8 = 0;
    if (this == (collate<char> *)0x0) {
      iVar3 = 0;
    }
    else {
      pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      p_Var2 = (_Locinfo *)std::_Locinfo::_Locinfo(local_a4,pbVar1);
      local_14 = 3;
      iVar3 = std::collate<char>::collate<char>(this,p_Var2,0);
    }
    local_8 = 2;
    *param_1 = iVar3;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  protected: virtual class std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> > __thiscall std::collate<char>::do_transform(char const *,char const
// *)const 
// 
// Library: Visual Studio 2008 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
std::collate<char>::do_transform
          (undefined4 param_1_00,
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
          char *param_2,char *param_4)

{
  int iVar1;
  size_t sVar2;
  _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *p_Var3;
  char *pcVar4;
  char *_String1;
  undefined local_34 [8];
  undefined local_2c [8];
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_24;
  undefined4 local_20;
  char *local_1c;
  char *local_18;
  _Collvec *local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x24;
  local_8 = 0xb25b15;
  local_20 = 0;
  local_24 = param_1;
  local_18 = param_2;
  local_1c = param_4;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1);
  local_8 = 0;
  sVar2 = (int)param_4 - (int)param_2;
  local_20 = 1;
  if (sVar2 != 0) {
    local_14 = local_14 + 1;
    do {
      FUN_00422180(sVar2,0);
      p_Var3 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)FUN_0042a0d0(local_2c);
      pcVar4 = _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
               ::operator*(p_Var3);
      iVar1 = *(int *)(param_1 + 0x14);
      p_Var3 = (_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *)FUN_0042a0d0(local_34);
      _String1 = _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                 ::operator*(p_Var3);
      sVar2 = __Strxfrm(_String1,pcVar4 + iVar1,local_18,local_1c,local_14);
      if (sVar2 <= *(uint *)(param_1 + 0x14)) break;
    } while (sVar2 != 0);
  }
  FUN_00422180(sVar2,0);
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::messages<char>::_Getcat(class std::locale::facet const
// * *,class std::locale const *)
//  public: static unsigned int __cdecl std::messages<unsigned short>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::messages<wchar_t>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  undefined4 *puVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb25bc3;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    puVar1 = (undefined4 *)operator_new(8);
    local_8 = 0;
    if (puVar1 == (undefined4 *)0x0) {
      puVar1 = (undefined4 *)0x0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      std::_Locinfo::_Locinfo(local_a4,pbVar2);
      puVar1[1] = 0;
      local_14 = 3;
      *puVar1 = std::messages<char>::vftable;
    }
    local_8 = 2;
    *param_1 = (int)puVar1;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 6;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::money_get<char,class
// std::istreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_put<char,class
// std::ostreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//   6 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb25c5f;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x10);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = FID_conflict_money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>
                        (uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::money_get<char,class
// std::istreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::money_put<char,class
// std::ostreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//   6 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  void *pvVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar2;
  undefined4 uVar3;
  int iVar4;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb25cfe;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    pvVar1 = operator_new(0x10);
    local_8 = 0;
    if (pvVar1 == (void *)0x0) {
      iVar4 = 0;
    }
    else {
      pbVar2 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      uVar3 = std::_Locinfo::_Locinfo(local_a4,pbVar2);
      local_14 = 3;
      iVar4 = FID_conflict_money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>
                        (uVar3,0);
    }
    local_8 = 2;
    *param_1 = iVar4;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::moneypunct<char,1>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<char,0>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<unsigned short,1>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<unsigned short,0>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//   6 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  moneypunct<char,0> *this;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  _Locinfo *p_Var2;
  int iVar3;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb25d9d;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    this = (moneypunct<char,0> *)operator_new(0x34);
    local_8 = 0;
    if (this == (moneypunct<char,0> *)0x0) {
      iVar3 = 0;
    }
    else {
      pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      p_Var2 = (_Locinfo *)std::_Locinfo::_Locinfo(local_a4,pbVar1);
      local_8 = 2;
      local_14 = 3;
      iVar3 = std::moneypunct<char,0>::moneypunct<char,0>(this,p_Var2,0,true);
    }
    *param_1 = iVar3;
    local_8 = 3;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 3;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00b25e2d(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1,*(char **)(param_1_00 + 0x10));
  return param_1;
}



basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
FUN_00b25e49(int param_1_00,
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1,*(char **)(param_1_00 + 0x14));
  return param_1;
}



// Library Function - Multiple Matches With Same Base Name
//  protected: virtual class std::basic_string<unsigned short,struct std::char_traits<unsigned
// short>,class std::allocator<unsigned short> > __thiscall std::_Mpunct<unsigned
// short>::do_negative_sign(void)const 
//  protected: virtual class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class
// std::allocator<wchar_t> > __thiscall std::_Mpunct<wchar_t>::do_negative_sign(void)const 
// 
// Library: Visual Studio 2005 Release

basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> * __thiscall
do_negative_sign(int param_1_00,
                basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                *param_1)

{
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (param_1,*(char **)(param_1_00 + 0x18));
  return param_1;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::moneypunct<char,1>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<char,0>::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<unsigned short,1>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::moneypunct<unsigned short,0>::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
//   6 names - too many to list
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  moneypunct<char,1> *this;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  _Locinfo *p_Var2;
  int iVar3;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb25e90;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    this = (moneypunct<char,1> *)operator_new(0x34);
    local_8 = 0;
    if (this == (moneypunct<char,1> *)0x0) {
      iVar3 = 0;
    }
    else {
      pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      p_Var2 = (_Locinfo *)std::_Locinfo::_Locinfo(local_a4,pbVar1);
      local_8 = 2;
      local_14 = 3;
      iVar3 = std::moneypunct<char,1>::moneypunct<char,1>(this,p_Var2,0,true);
    }
    *param_1 = iVar3;
    local_8 = 3;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::time_put<char,class
// std::ostreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::time_put<unsigned short,class
// std::ostreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::time_put<wchar_t,class
// std::ostreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_> *this;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  _Locinfo *p_Var2;
  int iVar3;
  _Locinfo local_a4 [116];
  undefined local_30 [28];
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x94;
  local_8 = 0xb25f2f;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    this = (time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_> *)
           operator_new(0x14);
    local_8 = 0;
    if (this == (time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>
                 *)0x0) {
      iVar3 = 0;
    }
    else {
      pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_30);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      p_Var2 = (_Locinfo *)std::_Locinfo::_Locinfo(local_a4,pbVar1);
      local_14 = 3;
      iVar3 = std::
              time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>::
              time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>
                        (this,p_Var2,0);
    }
    local_8 = 2;
    *param_1 = iVar3;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a4);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 5;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  class std::collate<char> const & __cdecl std::use_facet<class std::collate<char> >(class
// std::locale const &)
// 
// Library: Visual Studio 2008 Release

collate<char> * __cdecl std::use_facet<class_std::collate<char>_>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb25fcb;
  _Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032eddac;
  local_8 = 0;
  local_14[0] = DAT_032eddac;
  uVar2 = locale::id::operator_unsigned_int((id *)&DAT_032eddd0);
  pfVar3 = locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = ::Getcat(local_14,param_1);
    if (iVar4 == -1) {
      bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032eddac = local_14[0];
    locale::facet::_Incref(local_14[0]);
    locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return (collate<char> *)pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  class std::messages<char> const & __cdecl std::use_facet<class std::messages<char> >(class
// std::locale const &)
// 
// Library: Visual Studio 2008 Release

messages<char> * __cdecl std::use_facet<class_std::messages<char>_>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb26068;
  _Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032eddb0;
  local_8 = 0;
  local_14[0] = DAT_032eddb0;
  uVar2 = locale::id::operator_unsigned_int((id *)&DAT_032edde8);
  pfVar3 = locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = ::Getcat(local_14,param_1);
    if (iVar4 == -1) {
      bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032eddb0 = local_14[0];
    locale::facet::_Incref(local_14[0]);
    locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return (messages<char> *)pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::money_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >
// const & __cdecl std::use_facet<class std::money_get<char,class
// std::istreambuf_iterator<char,struct std::char_traits<char> > > >(class std::locale const &)
//  class std::money_put<char,class std::ostreambuf_iterator<char,struct std::char_traits<char> > >
// const & __cdecl std::use_facet<class std::money_put<char,class
// std::ostreambuf_iterator<char,struct std::char_traits<char> > > >(class std::locale const &)
//  class std::time_put<char,class std::ostreambuf_iterator<char,struct std::char_traits<char> > >
// const & __cdecl std::use_facet<class std::time_put<char,class
// std::ostreambuf_iterator<char,struct std::char_traits<char> > > >(class std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb26105;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032eddb4;
  local_8 = 0;
  local_14[0] = DAT_032eddb4;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032eddd8);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032eddb4 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::money_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >
// const & __cdecl std::use_facet<class std::money_get<char,class
// std::istreambuf_iterator<char,struct std::char_traits<char> > > >(class std::locale const &)
//  class std::money_put<char,class std::ostreambuf_iterator<char,struct std::char_traits<char> > >
// const & __cdecl std::use_facet<class std::money_put<char,class
// std::ostreambuf_iterator<char,struct std::char_traits<char> > > >(class std::locale const &)
//  class std::time_put<char,class std::ostreambuf_iterator<char,struct std::char_traits<char> > >
// const & __cdecl std::use_facet<class std::time_put<char,class
// std::ostreambuf_iterator<char,struct std::char_traits<char> > > >(class std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb261a2;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032eddb8;
  local_8 = 0;
  local_14[0] = DAT_032eddb8;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032eddd4);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032eddb8 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::moneypunct<char,1> const & __cdecl std::use_facet<class std::moneypunct<char,1>
// >(class std::locale const &)
//  class std::moneypunct<char,0> const & __cdecl std::use_facet<class std::moneypunct<char,0>
// >(class std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb2623f;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032eddbc;
  local_8 = 0;
  local_14[0] = DAT_032eddbc;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edde4);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032eddbc = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::moneypunct<char,1> const & __cdecl std::use_facet<class std::moneypunct<char,1>
// >(class std::locale const &)
//  class std::moneypunct<char,0> const & __cdecl std::use_facet<class std::moneypunct<char,0>
// >(class std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb262dc;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032eddc0;
  local_8 = 0;
  local_14[0] = DAT_032eddc0;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edde0);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032eddc0 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  class std::money_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >
// const & __cdecl std::use_facet<class std::money_get<char,class
// std::istreambuf_iterator<char,struct std::char_traits<char> > > >(class std::locale const &)
//  class std::money_put<char,class std::ostreambuf_iterator<char,struct std::char_traits<char> > >
// const & __cdecl std::use_facet<class std::money_put<char,class
// std::ostreambuf_iterator<char,struct std::char_traits<char> > > >(class std::locale const &)
//  class std::time_put<char,class std::ostreambuf_iterator<char,struct std::char_traits<char> > >
// const & __cdecl std::use_facet<class std::time_put<char,class
// std::ostreambuf_iterator<char,struct std::char_traits<char> > > >(class std::locale const &)
// 
// Library: Visual Studio 2008 Release

facet * use_facet<>(locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb26379;
  std::_Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032eddc4;
  local_8 = 0;
  local_14[0] = DAT_032eddc4;
  uVar2 = std::locale::id::operator_unsigned_int((id *)&DAT_032edddc);
  pfVar3 = std::locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = Getcat(local_14,param_1);
    if (iVar4 == -1) {
      std::bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032eddc4 = local_14[0];
    std::locale::facet::_Incref(local_14[0]);
    std::locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return pfVar3;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Single Match
//  private: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >
// __thiscall std::money_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char>
// > >::_Getmfld(class std::istreambuf_iterator<char,struct std::char_traits<char> > &,class
// std::istreambuf_iterator<char,struct std::char_traits<char> > &,bool,class std::ios_base &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::money_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::_Getmfld
          (undefined4 param_1_00,
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_1,
          istreambuf_iterator<char,struct_std::char_traits<char>_> *param_2,
          istreambuf_iterator<char,struct_std::char_traits<char>_> *param_3,char param_4,int param_6
          )

{
  istreambuf_iterator<char,struct_std::char_traits<char>_> *this;
  char cVar1;
  bool bVar2;
  byte bVar3;
  char cVar4;
  undefined4 uVar5;
  int *piVar6;
  int iVar7;
  undefined4 ****ppppuVar8;
  byte *pbVar9;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar10;
  undefined4 *puVar11;
  char *pcVar12;
  locale *this_00;
  uint uVar13;
  undefined local_180 [28];
  undefined local_164 [28];
  undefined local_148 [28];
  undefined local_12c [28];
  undefined local_110 [28];
  undefined local_f4 [28];
  undefined local_d8 [8];
  undefined local_d0 [8];
  undefined local_c8 [8];
  locale local_c0 [4];
  locale local_bc [4];
  char local_b8 [4];
  undefined4 local_b4;
  undefined4 local_b0;
  undefined4 local_ac;
  int local_a8;
  undefined4 local_a4;
  undefined4 local_a0;
  uint local_9c;
  istreambuf_iterator<char,struct_std::char_traits<char>_> *local_98;
  int *local_94;
  undefined4 local_90;
  undefined4 local_8c;
  int local_88;
  int local_84;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *local_80;
  char local_79;
  istreambuf_iterator<char,struct_std::char_traits<char>_> *local_78;
  char local_71;
  uint local_70;
  char local_69;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_68 [20];
  uint local_54;
  undefined local_4c [4];
  undefined4 ****local_48 [4];
  int local_38;
  uint local_34;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [4];
  undefined4 ****local_2c [5];
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x170;
  local_8 = 0xb26419;
  local_70 = 0;
  local_78 = param_3;
  local_80 = param_1;
  local_98 = param_2;
  local_88 = param_6;
  if (param_4 == '\0') {
    uVar5 = FUN_00417498(local_c0);
    local_8 = 2;
    piVar6 = (int *)::use_facet<>(uVar5);
    this_00 = local_c0;
  }
  else {
    uVar5 = FUN_00417498(local_bc);
    local_8 = 1;
    piVar6 = (int *)::use_facet<>(uVar5);
    this_00 = local_bc;
  }
  local_94 = piVar6;
  locale::~locale(this_00);
  local_69 = '\0';
  local_79 = '\0';
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_68);
  local_8 = 3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(param_1);
  local_70 = 1;
  (**(code **)(*piVar6 + 0x24))(local_b8);
  local_9c = 0;
  do {
    if (3 < local_9c) break;
    cVar4 = local_b8[local_9c];
    if (cVar4 == ' ') {
LAB_00b26517:
      if (local_9c != 3) {
        uVar5 = FUN_00417498(&local_8c);
        local_8._0_1_ = 0xd;
        iVar7 = FUN_00422a40(uVar5);
        local_8 = CONCAT31(local_8._1_3_,3);
        locale::~locale((locale *)&local_8c);
        while ((cVar4 = FUN_0044104b(param_2,local_78), cVar4 != '\0' &&
               (bVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2)
               , (*(byte *)(*(int *)(iVar7 + 0x10) + (uint)bVar3 * 2) & 0x48) != 0))) {
          istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_2);
        }
      }
      goto LAB_00b26b08;
    }
    if (cVar4 == '$') {
      curr_symbol(local_30);
      local_8._0_1_ = 4;
      if ((*(byte *)(local_88 + 0x10) & 8) == 0) {
        ppppuVar8 = local_2c[0];
        if (local_18 < 0x10) {
          ppppuVar8 = local_2c;
        }
        cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2);
        if (cVar4 == *(char *)ppppuVar8) goto LAB_00b269f0;
LAB_00b26a24:
        basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
                  (local_30,0,0xffffffff);
      }
      else {
LAB_00b269f0:
        if ((local_9c == 3) && (local_54 < 2)) {
          bVar2 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal(param_2,local_78);
          if (!bVar2) {
            ppppuVar8 = local_2c[0];
            if (local_18 < 0x10) {
              ppppuVar8 = local_2c;
            }
            cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2);
            if (cVar4 == *(char *)ppppuVar8) goto LAB_00b26a30;
          }
          goto LAB_00b26a24;
        }
      }
LAB_00b26a30:
      puVar11 = (undefined4 *)FUN_0042a0d0(local_d8);
      local_a4 = *puVar11;
      local_a0 = puVar11[1];
      while (cVar4 = FUN_0044104b(param_2,local_78), cVar4 != '\0') {
        uVar5 = FUN_0042a130(local_d0);
        cVar4 = FUN_008477d0(uVar5);
        if (cVar4 == '\0') break;
        pcVar12 = _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                               *)&local_a4);
        cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2);
        if (cVar4 != *pcVar12) break;
        _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
        operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    *)&local_a4);
        istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_2);
      }
      uVar5 = FUN_0042a130(local_c8);
      cVar4 = FUN_008477d0(uVar5);
      if (cVar4 != '\0') {
        local_69 = '\x01';
      }
LAB_00b26ad2:
      local_8 = CONCAT31(local_8._1_3_,3);
      FUN_004017b2(1,0);
    }
    else {
      if (cVar4 == '+') {
        bVar2 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal(param_2,local_78);
        if (bVar2) goto LAB_00b26b08;
        iVar7 = positive_sign(local_12c);
        local_70 = local_70 | 2;
        local_8 = CONCAT31(local_8._1_3_,5);
        if (*(int *)(iVar7 + 0x14) == 0) {
LAB_00b2686f:
          local_71 = '\0';
        }
        else {
          pbVar10 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                    positive_sign(local_f4);
          local_70 = local_70 | 4;
          local_8 = 6;
          pcVar12 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                    operator[](pbVar10,0);
          cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2);
          local_71 = '\x01';
          if (*pcVar12 != cVar4) goto LAB_00b2686f;
        }
        if ((local_70 & 4) != 0) {
          local_70 = local_70 & 0xfffffffb;
          FUN_004017b2(1,0);
        }
        local_8 = 3;
        if ((local_70 & 2) != 0) {
          local_70 = local_70 & 0xfffffffd;
          FUN_004017b2(1,0);
        }
        if (local_71 == '\0') {
          iVar7 = negative_sign(local_148);
          local_70 = local_70 | 8;
          local_8 = CONCAT31(local_8._1_3_,8);
          if (*(int *)(iVar7 + 0x14) == 0) {
LAB_00b26931:
            bVar2 = false;
          }
          else {
            pbVar10 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       *)negative_sign(local_110);
            local_70 = local_70 | 0x10;
            local_8 = 9;
            pcVar12 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                      operator[](pbVar10,0);
            cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2);
            if (*pcVar12 != cVar4) goto LAB_00b26931;
            bVar2 = true;
          }
          if ((local_70 & 0x10) != 0) {
            local_70 = local_70 & 0xffffffef;
            FUN_004017b2(1,0);
          }
          local_8 = 3;
          if ((local_70 & 8) != 0) {
            local_70 = local_70 & 0xfffffff7;
            FUN_004017b2(1,0);
          }
          if (bVar2) {
            istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(local_98);
            pbVar10 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       *)negative_sign(local_180);
            local_8._0_1_ = 10;
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                      (local_68,pbVar10,0,0xffffffff);
            local_8 = CONCAT31(local_8._1_3_,3);
            FUN_004017b2(1,0);
            local_79 = '\x01';
          }
          goto LAB_00b26b08;
        }
        istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_2);
        pbVar10 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
                  positive_sign(local_164);
        local_8._0_1_ = 7;
        basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
                  (local_68,pbVar10,0,0xffffffff);
        goto LAB_00b26ad2;
      }
      if (cVar4 == 'v') {
        local_84 = 0;
        local_a8 = (**(code **)(*piVar6 + 0x1c))();
        grouping(local_4c);
        local_8._0_1_ = 0xb;
        if (local_38 == 0) {
LAB_00b2671f:
          while (((cVar4 = FUN_0044104b(param_2,local_78), cVar4 != '\0' &&
                  (cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*
                                     (param_2), '/' < cVar4)) &&
                 (cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*
                                    (param_2), cVar4 < ':'))) {
            cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2);
            local_b0 = CONCAT31(local_b0._1_3_,cVar4);
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                      (local_80,1,cVar4);
            istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_2);
          }
        }
        else {
          local_71 = (**(code **)(*piVar6 + 8))();
          if (local_71 == '\0') goto LAB_00b2671f;
          ppppuVar8 = local_48[0];
          if (local_34 < 0x10) {
            ppppuVar8 = local_48;
          }
          if (0x7e < *(byte *)ppppuVar8) goto LAB_00b2671f;
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    (local_30,1,'\0');
          local_8._0_1_ = 0xc;
          uVar13 = 0;
          cVar4 = FUN_0044104b(param_2,local_78);
          if (cVar4 != '\0') {
            do {
              cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2);
              if ((cVar4 < '0') ||
                 (cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*
                                    (param_2), '9' < cVar4)) {
                pcVar12 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          ::operator[](local_30,uVar13);
                if ((*pcVar12 == '\0') ||
                   (cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*
                                      (param_2), cVar4 != local_71)) break;
                basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                          (local_30,1,'\0');
                uVar13 = uVar13 + 1;
              }
              else {
                cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2)
                ;
                local_ac = CONCAT31(local_ac._1_3_,cVar4);
                basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                          (local_80,1,cVar4);
                pcVar12 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                          ::operator[](local_30,uVar13);
                if (*pcVar12 != '\x7f') {
                  pcVar12 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                            ::operator[](local_30,uVar13);
                  *pcVar12 = *pcVar12 + '\x01';
                }
              }
              istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_2);
              cVar4 = FUN_0044104b(param_2,local_78);
            } while (cVar4 != '\0');
            if (uVar13 != 0) {
              pcVar12 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                        ::operator[](local_30,uVar13);
              if (*pcVar12 < '\x01') {
                local_69 = '\x01';
              }
              else {
                uVar13 = uVar13 + 1;
              }
            }
          }
          ppppuVar8 = local_48[0];
          if (local_34 < 0x10) {
            ppppuVar8 = local_48;
          }
          if (local_69 != '\0') {
LAB_00b266bf:
            FUN_004017b2(1,0);
            goto LAB_00b26ad2;
          }
          while ((uVar13 != 0 && (*(byte *)ppppuVar8 != 0x7f))) {
            uVar13 = uVar13 - 1;
            if (((uVar13 != 0) &&
                (pbVar9 = (byte *)basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                                  ::operator[](local_30,uVar13), *(byte *)ppppuVar8 != *pbVar9)) ||
               ((uVar13 == 0 &&
                (pcVar12 = basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                           ::operator[](local_30,0), (char)*(byte *)ppppuVar8 < *pcVar12)))) {
              local_69 = '\x01';
              goto LAB_00b266bf;
            }
            if ('\0' < (char)*(byte *)(undefined4 ****)((int)ppppuVar8 + 1)) {
              ppppuVar8 = (undefined4 ****)((int)ppppuVar8 + 1);
            }
          }
          local_8._0_1_ = 0xb;
          FUN_004017b2(1,0);
        }
        cVar4 = (**(code **)(*local_94 + 4))();
        this = local_98;
        cVar1 = FUN_0044104b(local_98,local_78);
        iVar7 = local_a8;
        if (((cVar1 != '\0') && (cVar4 != '\0')) &&
           (cVar1 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(this),
           iVar7 = local_a8, cVar1 == cVar4)) {
          istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(this);
          cVar4 = FUN_0044104b(this,local_78);
          iVar7 = local_a8;
          while (cVar4 != '\0') {
            if (iVar7 <= local_84) goto LAB_00b267dd;
            cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(this);
            if ((cVar4 < '0') ||
               (cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(this),
               '9' < cVar4)) break;
            cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(this);
            local_b4 = CONCAT31(local_b4._1_3_,cVar4);
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                      (local_80,1,cVar4);
            local_84 = local_84 + 1;
            istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(this);
            cVar4 = FUN_0044104b(this,local_78);
          }
          if (local_84 < iVar7) {
            local_69 = '\x01';
          }
        }
LAB_00b267dd:
        pbVar10 = local_80;
        if (*(int *)(local_80 + 0x14) == 0) {
          local_69 = '\x01';
        }
        else if (local_84 < iVar7) {
          iVar7 = iVar7 - local_84;
          do {
            basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                      (pbVar10,1,'0');
            iVar7 = iVar7 + -1;
          } while (iVar7 != 0);
        }
        goto LAB_00b26ad2;
      }
      if (cVar4 == 'x') goto LAB_00b26517;
    }
LAB_00b26b08:
    local_9c = local_9c + 1;
    param_2 = local_98;
    piVar6 = local_94;
  } while (local_69 == '\0');
  if (local_69 == '\0') {
    if (1 < local_54) {
      local_90 = 0;
      local_8c = 0;
      puVar11 = (undefined4 *)FUN_0042a0d0(local_c8);
      local_90 = *puVar11;
      local_8c = puVar11[1];
      while( true ) {
        uVar5 = FUN_0042a130(&local_a4);
        _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
        operator++((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                    *)&local_90);
        cVar4 = FUN_008477d0(uVar5);
        if ((cVar4 == '\0') || (cVar4 = FUN_0044104b(param_2,local_78), cVar4 == '\0')) break;
        pcVar12 = _String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                  ::operator*((_String_const_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                               *)&local_90);
        cVar4 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2);
        if (cVar4 != *pcVar12) break;
        istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_2);
      }
      uVar5 = FUN_0042a130(local_c8);
      cVar4 = FUN_008477d0(uVar5);
      if (cVar4 != '\0') goto LAB_00b26bd5;
    }
    if (local_79 != '\0') {
      basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
                (local_80,0,1,'-');
    }
  }
  else {
LAB_00b26bd5:
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::erase
              (local_80,0,0xffffffff);
  }
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Single Match
//  private: class std::ostreambuf_iterator<char,struct std::char_traits<char> > __thiscall
// std::money_put<char,class std::ostreambuf_iterator<char,struct std::char_traits<char> >
// >::_Putmfld(class std::ostreambuf_iterator<char,struct std::char_traits<char> >,bool,class
// std::ios_base &,char,bool,class std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> >)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>::_Putmfld
          (undefined4 param_1,undefined4 param_11,undefined4 param_12,undefined4 param_13,
          char param_14,int param_15,undefined4 param_16,char param_17)

{
  char cVar1;
  undefined uVar2;
  undefined4 uVar3;
  int *piVar4;
  undefined4 ****ppppuVar5;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar6;
  int iVar7;
  undefined4 *puVar8;
  undefined *puVar9;
  _String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_> *p_Var10;
  locale *this;
  uint uVar11;
  uint uVar12;
  uint param_19;
  undefined4 uVar13;
  undefined local_130 [8];
  undefined local_128 [8];
  undefined local_120 [8];
  undefined local_118 [8];
  undefined local_110 [8];
  undefined local_108 [8];
  undefined local_100 [8];
  undefined local_f8 [8];
  undefined local_f0 [8];
  undefined local_e8 [8];
  undefined local_e0 [8];
  undefined local_d8 [8];
  undefined local_d0 [8];
  undefined local_c8 [28];
  undefined local_ac [8];
  undefined local_a4 [8];
  undefined local_9c [8];
  undefined local_94 [4];
  undefined4 local_90;
  locale local_8c [4];
  locale local_88 [4];
  undefined4 local_84;
  undefined4 local_80;
  int local_7c;
  uint local_78;
  undefined4 local_74;
  char local_6d;
  uint local_6c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_68 [20];
  uint local_54;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [20];
  uint local_38;
  undefined local_30 [4];
  undefined4 ****local_2c [5];
  uint local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x120;
  local_80 = param_11;
  local_7c = param_15;
  local_8 = 0;
  if (param_14 == '\0') {
    uVar3 = FUN_00417498(local_8c);
    local_8 = CONCAT31(local_8._1_3_,2);
    piVar4 = (int *)::use_facet<>(uVar3);
    this = local_8c;
  }
  else {
    uVar3 = FUN_00417498(local_88);
    local_8 = CONCAT31(local_8._1_3_,1);
    piVar4 = (int *)::use_facet<>(uVar3);
    this = local_88;
  }
  local_8 = local_8 & 0xffffff00;
  locale::~locale(this);
  grouping(local_30);
  local_8 = CONCAT31(local_8._1_3_,3);
  local_6c = (**(code **)(*piVar4 + 0x1c))();
  if ((int)local_6c < 0) {
    local_6c = -local_6c;
  }
  if (local_6c < param_19) {
    ppppuVar5 = local_2c[0];
    if (local_18 < 0x10) {
      ppppuVar5 = local_2c;
    }
    if (*(char *)ppppuVar5 != '\x7f') {
      ppppuVar5 = local_2c[0];
      if (local_18 < 0x10) {
        ppppuVar5 = local_2c;
      }
      if ('\0' < *(char *)ppppuVar5) {
        uVar2 = (**(code **)(*piVar4 + 8))();
        local_74 = CONCAT31(local_74._1_3_,uVar2);
        if (local_18 < 0x10) {
          local_2c[0] = local_2c;
        }
        uVar12 = param_19 - local_6c;
        ppppuVar5 = local_2c[0];
        while (((cVar1 = *(char *)ppppuVar5, param_15 = local_7c, cVar1 != '\x7f' && ('\0' < cVar1))
               && ((uint)(int)cVar1 < uVar12))) {
          uVar12 = uVar12 - (int)cVar1;
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
                    ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *
                     )&stack0x00000020,uVar12,1,(char)local_74);
          if ('\0' < *(char *)(undefined4 ****)((int)ppppuVar5 + 1)) {
            ppppuVar5 = (undefined4 ****)((int)ppppuVar5 + 1);
          }
        }
      }
    }
  }
  else {
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::insert
              ((basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               &stack0x00000020,0,(local_6c - param_19) + 1,'0');
  }
  uVar12 = 0;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_4c);
  local_8._0_1_ = 4;
  if (param_17 == '\0') {
    (**(code **)(*piVar4 + 0x20))(&local_74);
    pbVar6 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             positive_sign(local_c8);
    local_8._0_1_ = 6;
  }
  else {
    (**(code **)(*piVar4 + 0x24))();
    pbVar6 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             negative_sign(local_c8);
    local_8._0_1_ = 5;
  }
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
            (local_4c,pbVar6,0,0xffffffff);
  FUN_004017b2(1,0);
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_68);
  local_8._0_1_ = 7;
  if ((*(uint *)(param_15 + 0x10) & 8) != 0) {
    pbVar6 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
             curr_symbol(local_c8);
    local_8._0_1_ = 8;
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (local_68,pbVar6,0,0xffffffff);
    local_8._0_1_ = 7;
    FUN_004017b2(1,0);
  }
  local_6d = '\0';
  uVar11 = 0;
  do {
    cVar1 = *(char *)((int)&local_74 + uVar11);
    if (cVar1 == ' ') {
      uVar12 = uVar12 + 1;
LAB_00b26e29:
      if (uVar11 != 3) {
        local_6d = '\x01';
      }
    }
    else if (cVar1 == '$') {
      uVar12 = uVar12 + local_54;
    }
    else if (cVar1 == '+') {
      uVar12 = uVar12 + local_38;
    }
    else if (cVar1 == 'v') {
      if (local_6c < param_19) {
        iVar7 = 0;
      }
      else {
        iVar7 = (local_6c - param_19) + 1;
      }
      uVar12 = uVar12 + (local_6c != 0) + param_19 + iVar7;
    }
    else if (cVar1 == 'x') goto LAB_00b26e29;
    uVar11 = uVar11 + 1;
  } while (uVar11 < 4);
  uVar11 = *(uint *)(param_15 + 0x18);
  if (((int)uVar11 < 1) || (uVar11 <= uVar12)) {
    iVar7 = 0;
  }
  else {
    iVar7 = uVar11 - uVar12;
  }
  uVar12 = *(uint *)(param_15 + 0x10) & 0x1c0;
  if ((uVar12 != 0x40) && ((uVar12 != 0x100 || (local_6d == '\0')))) {
    puVar8 = (undefined4 *)_Rep(local_94,param_12,param_13,param_16,iVar7);
    param_12 = *puVar8;
    param_13 = puVar8[1];
    iVar7 = 0;
  }
  local_78 = 0;
  do {
    cVar1 = *(char *)((int)&local_74 + local_78);
    if (cVar1 == ' ') {
      puVar8 = (undefined4 *)_Rep(local_ac,param_12,param_13,param_16,1);
      param_12 = *puVar8;
      param_13 = puVar8[1];
LAB_00b27065:
      if (uVar12 != 0x100) goto LAB_00b27093;
      puVar8 = (undefined4 *)_Rep(local_9c,param_12,param_13,param_16,iVar7);
      iVar7 = 0;
LAB_00b27088:
      param_12 = *puVar8;
      param_13 = puVar8[1];
    }
    else {
      if (cVar1 == '$') {
        puVar8 = (undefined4 *)FUN_0042a0d0(local_118);
        uVar3 = puVar8[1];
        uVar13 = *puVar8;
        puVar9 = local_a4;
        uVar11 = local_54;
LAB_00b26eea:
        puVar8 = (undefined4 *)_Put(puVar9,param_12,param_13,uVar13,uVar3,uVar11);
        goto LAB_00b27088;
      }
      if (cVar1 == '+') {
        if (local_38 != 0) {
          puVar8 = (undefined4 *)FUN_0042a0d0(local_128);
          uVar11 = 1;
          uVar3 = puVar8[1];
          uVar13 = *puVar8;
          puVar9 = local_f8;
          goto LAB_00b26eea;
        }
      }
      else {
        if (cVar1 == 'v') {
          if (local_6c == 0) {
            puVar8 = (undefined4 *)FUN_0042a0d0(local_100);
            uVar3 = puVar8[1];
            uVar13 = *puVar8;
            puVar9 = local_d8;
            uVar11 = param_19;
          }
          else if (local_6c < param_19) {
            puVar8 = (undefined4 *)FUN_0042a0d0(local_110);
            puVar8 = (undefined4 *)
                     _Put(local_120,param_12,param_13,*puVar8,puVar8[1],param_19 - local_6c);
            param_12 = *puVar8;
            param_13 = puVar8[1];
            uVar2 = (**(code **)(*piVar4 + 4))();
            local_90 = CONCAT31(local_90._1_3_,uVar2);
            FUN_00425110(local_90);
            puVar9 = local_130;
            uVar11 = local_6c;
            p_Var10 = (_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                       *)FUN_0042a130(local_108);
            puVar8 = (undefined4 *)
                     _String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                     ::operator-(p_Var10,puVar9,uVar11);
            uVar3 = puVar8[1];
            uVar13 = *puVar8;
            puVar9 = local_e8;
            uVar11 = local_6c;
          }
          else {
            FUN_00425110(0x30);
            uVar2 = (**(code **)(*piVar4 + 4))();
            local_84 = CONCAT31(local_84._1_3_,uVar2);
            FUN_00425110(local_84);
            puVar8 = (undefined4 *)_Rep(local_e0,param_12,param_13,0x30,local_6c - param_19);
            param_12 = *puVar8;
            param_13 = puVar8[1];
            puVar8 = (undefined4 *)FUN_0042a0d0(local_f0);
            uVar3 = puVar8[1];
            uVar13 = *puVar8;
            puVar9 = local_d0;
            uVar11 = param_19;
          }
          goto LAB_00b26eea;
        }
        if (cVar1 == 'x') goto LAB_00b27065;
      }
    }
LAB_00b27093:
    local_78 = local_78 + 1;
    if (3 < local_78) {
      if (1 < local_38) {
        uVar3 = 1;
        puVar9 = local_9c;
        p_Var10 = (_String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>
                   *)FUN_0042a0d0(local_ac);
        puVar8 = (undefined4 *)
                 _String_iterator<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
                 operator+(p_Var10,puVar9,uVar3);
        puVar8 = (undefined4 *)_Put(local_a4,param_12,param_13,*puVar8,puVar8[1],local_38 - 1);
        param_12 = *puVar8;
        param_13 = puVar8[1];
      }
      *(undefined4 *)(local_7c + 0x18) = 0;
      _Rep(local_80,param_12,param_13,param_16,iVar7);
      FUN_004017b2(1,0);
      FUN_004017b2(1,0);
      FUN_004017b2(1,0);
      FUN_004017b2(1,0);
      FUN_00a421fb();
      return;
    }
  } while( true );
}



// WARNING: Function: __EH_prolog3_catch replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  protected: void __thiscall std::time_get<char,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > >::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::time_get<unsigned short,class std::istreambuf_iterator<unsigned
// short,struct std::char_traits<unsigned short> > >::_Init(class std::_Locinfo const &)
//  protected: void __thiscall std::time_get<wchar_t,class std::istreambuf_iterator<wchar_t,struct
// std::char_traits<wchar_t> > >::_Init(class std::_Locinfo const &)
// 
// Library: Visual Studio 2008 Release

void __thiscall Init(int param_1_00,_Locinfo *param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  char *pcVar3;
  undefined4 uVar4;
  int iVar5;
  undefined local_20 [8];
  int local_18;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x10;
  local_8 = 0xb2714d;
  local_18 = param_1_00;
  puVar2 = (undefined4 *)FUN_004170cc(local_20);
  puVar1 = (undefined4 *)(param_1_00 + 0x14);
  *puVar1 = *puVar2;
  *(undefined4 *)(param_1_00 + 0x18) = puVar2[1];
  *(undefined4 *)(param_1_00 + 8) = 0;
  *(undefined4 *)(param_1_00 + 0xc) = 0;
  local_8 = 0;
  pcVar3 = std::_Locinfo::_Getdays(param_1);
  uVar4 = FUN_0041709c(pcVar3,0,puVar1);
  *(undefined4 *)(param_1_00 + 8) = uVar4;
  pcVar3 = std::_Locinfo::_Getmonths(param_1);
  uVar4 = FUN_0041709c(pcVar3,0,puVar1);
  *(undefined4 *)(param_1_00 + 0xc) = uVar4;
  iVar5 = __Getdateorder();
  *(int *)(param_1_00 + 0x10) = iVar5;
  return;
}



void Catch_All_00b271b2(void)

{
  code *pcVar1;
  
  FUN_00b1bd25();
  __CxxThrowException_8(0,0);
  pcVar1 = (code *)swi(3);
  (*pcVar1)();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_00b271c4(money_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
             *param_1_00,undefined4 *param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,undefined4 param_7,
            uint *param_8,double *param_9)

{
  uint *puVar1;
  double *pdVar2;
  bool bVar3;
  char *pcVar4;
  uint uVar5;
  undefined4 ***pppuVar6;
  float10 fVar7;
  undefined4 ***local_54;
  int local_50;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_4c [4];
  undefined4 ***local_48 [5];
  uint local_34;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [20];
  uint local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  pdVar2 = param_9;
  puVar1 = param_8;
  uStack_4 = 0x4c;
  local_8 = 0xb271d0;
  std::money_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::
  _Getmfld(param_1_00,local_30,&param_2,&param_4,param_6,param_7);
  uVar5 = 0;
  local_8 = 0;
  bVar3 = std::istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_2,
                     (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_4);
  if (bVar3) {
    *puVar1 = *puVar1 | 1;
  }
  if (local_1c == 0) {
    *puVar1 = *puVar1 | 2;
    goto LAB_00b272c5;
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_4c);
  local_8 = CONCAT31(local_8._1_3_,1);
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::reserve
            (local_4c,local_1c);
  pcVar4 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
           operator[](local_30,0);
  if (*pcVar4 < '0') {
LAB_00b2724e:
    uVar5 = 1;
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (local_4c,1,'-');
  }
  else {
    pcVar4 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
             operator[](local_30,0);
    if ('9' < *pcVar4) goto LAB_00b2724e;
  }
  for (; uVar5 < local_1c; uVar5 = uVar5 + 1) {
    pcVar4 = std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
             operator[](local_30,uVar5);
    std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (local_4c,1,*pcVar4);
  }
  pppuVar6 = local_48[0];
  if (local_34 < 0x10) {
    pppuVar6 = local_48;
  }
  local_50 = 0;
  fVar7 = (float10)FUN_008245d1(pppuVar6,&local_54,0,&local_50);
  if ((local_54 == pppuVar6) || (local_50 != 0)) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    *pdVar2 = (double)fVar7;
  }
  FUN_004017b2(1,0);
LAB_00b272c5:
  *param_1 = param_2;
  param_1[1] = param_3;
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Single Match
//  protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> >
// __thiscall std::money_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char>
// > >::do_get(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class
// std::istreambuf_iterator<char,struct std::char_traits<char> >,bool,class std::ios_base &,int
// &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)const
// 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::money_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::do_get
          (void *this,undefined4 *param_11,undefined4 param_12,undefined4 param_13,
          undefined4 param_14,undefined4 param_6,undefined4 param_15,undefined4 param_16,
          uint *param_17,
          basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *param_18)

{
  uint *puVar1;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *this_00;
  bool bVar2;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [20];
  int local_1c;
  undefined4 local_8;
  undefined4 uStack_4;
  
  this_00 = param_18;
  puVar1 = param_17;
  uStack_4 = 0x20;
  local_8 = 0xb272f2;
  _Getmfld((money_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> *)
           this,local_30,&param_12,&param_14,param_15,param_16);
  local_8 = 0;
  bVar2 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                     (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_14);
  if (bVar2) {
    *puVar1 = *puVar1 | 1;
  }
  if (local_1c == 0) {
    *puVar1 = *puVar1 | 2;
  }
  else {
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::assign
              (this_00,local_30,0,0xffffffff);
  }
  *param_11 = param_12;
  param_11[1] = param_13;
  FUN_004017b2(1,0);
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3

void __thiscall
FUN_00b27365(undefined4 param_1_00,undefined4 param_1,undefined4 param_2,undefined4 param_3,
            undefined4 param_4,undefined4 param_5,undefined4 param_6,double param_7)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_90 [4];
  undefined4 uStack_8c;
  uint local_5c;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_58 [28];
  char local_3c [52];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x54;
  local_8 = 0xb27371;
  bVar1 = param_7 < 0.0;
  if (bVar1) {
    param_7 = -param_7;
  }
  local_5c = 0;
  if (1e+35 < param_7 != (param_7 == 1e+35)) {
    do {
      if (4999 < local_5c) break;
      local_5c = local_5c + 10;
      param_7 = param_7 / 10000000000.0;
    } while (1e+35 <= param_7);
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(local_58);
  local_8 = 0;
  uStack_8c = 0xb273f3;
  iVar2 = _sprintf_s(local_3c,0x28,"%.0Lf");
  iVar3 = 0;
  if (0 < iVar2) {
    do {
      std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
                (local_58,1,local_3c[iVar3]);
      iVar3 = iVar3 + 1;
    } while (iVar3 < iVar2);
  }
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
            (local_58,local_5c,'0');
  std::basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(abStack_90,local_58);
  std::money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>::
  _Putmfld(param_1_00,param_1,param_2,param_3,param_4,param_5,param_6,bVar1);
  FUN_004017b2();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3_GS replaced with injection: EH_prolog3
// Library Function - Single Match
//  protected: virtual class std::ostreambuf_iterator<char,struct std::char_traits<char> >
// __thiscall std::money_put<char,class std::ostreambuf_iterator<char,struct std::char_traits<char>
// > >::do_put(class std::ostreambuf_iterator<char,struct std::char_traits<char> >,bool,class
// std::ios_base &,char,class std::basic_string<char,struct std::char_traits<char>,class
// std::allocator<char> > const &)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>::do_put
          (void *this,undefined4 param_11,undefined4 param_12,undefined4 param_13,
          undefined4 param_14,undefined4 param_15,undefined4 param_16,int param_17)

{
  char cVar1;
  char *pcVar2;
  char cVar3;
  uint uVar4;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> abStack_64 [16];
  undefined4 uStack_54;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> local_30 [40];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x28;
  local_8 = 0xb27471;
  if (*(uint *)(param_17 + 0x18) < 0x10) {
    pcVar2 = (char *)(param_17 + 4);
  }
  else {
    pcVar2 = *(char **)(param_17 + 4);
  }
  cVar1 = *pcVar2;
  if (cVar1 == '-') {
    pcVar2 = pcVar2 + 1;
  }
  uVar4 = 0;
  cVar3 = *pcVar2;
  while (('/' < cVar3 && (cVar3 < ':'))) {
    uVar4 = uVar4 + 1;
    cVar3 = pcVar2[uVar4];
  }
  uStack_54 = 0xb274b0;
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>
            (local_30,pcVar2,uVar4);
  local_8 = 0;
  if (uVar4 == 0) {
    uStack_54 = 0xb274c4;
    basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::append
              (local_30,1,'0');
  }
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>::
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_>(abStack_64,local_30);
  _Putmfld(this,param_11,param_12,param_13,param_14,param_15,param_16,cVar1 == '-');
  uStack_54 = 0xb274fd;
  FUN_004017b2();
  FUN_00a421fb();
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  public: __thiscall std::time_get<char,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > >::time_get<char,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > >(class std::_Locinfo const &,unsigned int)
// 
// Library: Visual Studio 2008 Release

time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> * __thiscall
std::time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::
time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
          (time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> *this
          ,_Locinfo *param_1,uint param_2)

{
  *(uint *)(this + 4) = param_2;
  *(undefined ***)this = vftable;
  Init(param_1);
  return this;
}



undefined4 __fastcall FUN_00b2753b(int param_1)

{
  return *(undefined4 *)(param_1 + 0x10);
}



void __fastcall FUN_00b2753f(undefined4 *param_1)

{
  *param_1 = std::
             time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::
             vftable;
  FUN_00b1bd25();
  *param_1 = std::locale::facet::vftable;
  return;
}



undefined4 __thiscall FUN_00b27557(undefined4 param_1_00,byte param_1)

{
  FUN_00b2753f();
  if ((param_1 & 1) != 0) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(param_1_00);
  }
  return param_1_00;
}



// Library Function - Single Match
//  private: int __cdecl std::time_get<char,class std::istreambuf_iterator<char,struct
// std::char_traits<char> > >::_Getint(class std::istreambuf_iterator<char,struct
// std::char_traits<char> > &,class std::istreambuf_iterator<char,struct std::char_traits<char> >
// &,int,int,int &)const 
// 
// Library: Visual Studio 2008 Release

int __thiscall
std::time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::_Getint
          (time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> *this
          ,istreambuf_iterator<char,struct_std::char_traits<char>_> *param_1,
          istreambuf_iterator<char,struct_std::char_traits<char>_> *param_2,int param_3,int param_4,
          int *param_5)

{
  bool bVar1;
  char cVar2;
  int iVar3;
  char *pcVar4;
  int *in_stack_00000018;
  char *local_3c;
  int *local_38;
  int local_34;
  uint local_30;
  char local_29;
  char local_28 [32];
  uint local_8;
  
  local_8 = DAT_0323f878 ^ (uint)&stack0xfffffffc;
  local_38 = in_stack_00000018;
  pcVar4 = local_28;
  bVar1 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    (param_2,(istreambuf_iterator<char,struct_std::char_traits<char>_> *)param_3);
  if (!bVar1) {
    cVar2 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2);
    if (cVar2 == '+') {
      local_28[0] = '+';
    }
    else {
      cVar2 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2);
      if (cVar2 != '-') goto LAB_00b275d0;
      local_28[0] = '-';
    }
    pcVar4 = local_28 + 1;
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_2);
  }
LAB_00b275d0:
  local_29 = '\0';
  cVar2 = FUN_0044104b(param_2,param_3);
  if (cVar2 != '\0') {
    do {
      cVar2 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2);
      if (cVar2 != '0') break;
      local_29 = '\x01';
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_2);
      cVar2 = FUN_0044104b(param_2,param_3);
    } while (cVar2 != '\0');
    if (local_29 != '\0') {
      *pcVar4 = '0';
      pcVar4 = pcVar4 + 1;
    }
  }
  while( true ) {
    cVar2 = FUN_0044104b(param_2,param_3);
    if (cVar2 == '\0') break;
    cVar2 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2);
    if (cVar2 < '0') break;
    cVar2 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2);
    if ('9' < cVar2) break;
    cVar2 = istreambuf_iterator<char,struct_std::char_traits<char>_>::operator*(param_2);
    *pcVar4 = cVar2;
    if (pcVar4 < local_28 + 0x1f) {
      pcVar4 = pcVar4 + 1;
    }
    local_29 = '\x01';
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc(param_2);
  }
  if (local_29 == '\0') {
    pcVar4 = local_28;
  }
  local_34 = 0;
  *pcVar4 = '\0';
  iVar3 = __Stolx(local_28,&local_3c,10,&local_34);
  local_30 = 0;
  bVar1 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    (param_2,(istreambuf_iterator<char,struct_std::char_traits<char>_> *)param_3);
  if (bVar1) {
    local_30 = 1;
  }
  if ((((local_3c == local_28) || (local_34 != 0)) || (iVar3 < param_4)) || ((int)param_5 < iVar3))
  {
    local_30 = local_30 | 2;
  }
  else {
    *local_38 = iVar3;
  }
  iVar3 = ___security_check_cookie_4();
  return iVar3;
}



// Library Function - Single Match
//  protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> >
// __thiscall std::time_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> >
// >::do_get_time(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class
// std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,struct
// tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::
do_get_time(void *this,undefined4 *param_11,undefined4 param_12,undefined4 param_13)

{
  uint *puVar1;
  uint uVar2;
  time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> *this_00;
  time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> *this_01;
  uint *param_15;
  undefined4 param_16;
  
  uVar2 = _Getint((time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                   *)this,(istreambuf_iterator<char,struct_std::char_traits<char>_> *)this,
                  (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                  (int)&stack0x00000010,0,(int *)&DAT_00000017);
  puVar1 = param_15;
  *param_15 = *param_15 | uVar2;
  if (*param_15 == 0) {
    if ((char)param_13 == '\0') {
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
    }
    if (param_13._1_1_ != ':') goto LAB_00b2772c;
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc
              ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
    uVar2 = _Getint(this_00,(istreambuf_iterator<char,struct_std::char_traits<char>_> *)this,
                    (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                    (int)&stack0x00000010,0,(int *)0x3b);
    *puVar1 = *puVar1 | uVar2;
  }
  else {
LAB_00b2772c:
    *puVar1 = *puVar1 | 2;
  }
  if (*puVar1 == 0) {
    if ((char)param_13 == '\0') {
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
    }
    if (param_13._1_1_ == ':') {
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc
                ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
      uVar2 = _Getint(this_01,(istreambuf_iterator<char,struct_std::char_traits<char>_> *)this,
                      (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                      (int)&stack0x00000010,0,(int *)0x3b);
      *puVar1 = *puVar1 | uVar2;
      goto LAB_00b2776c;
    }
  }
  *puVar1 = *puVar1 | 2;
LAB_00b2776c:
  *param_11 = param_12;
  param_11[1] = param_13;
  return;
}



// Library Function - Single Match
//  protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> >
// __thiscall std::time_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> >
// >::do_get_date(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class
// std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,struct
// tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::
do_get_date(void *this,undefined4 *param_11,undefined4 param_12,undefined4 param_13,
           undefined4 param_14,undefined4 param_15,undefined4 param_16,uint *param_17,int param_18)

{
  uint *puVar1;
  int iVar2;
  bool bVar3;
  char cVar4;
  uint uVar5;
  undefined4 *puVar6;
  time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> *extraout_ECX;
  time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
  *extraout_ECX_00;
  time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
  *extraout_ECX_01;
  time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
  *extraout_ECX_02;
  time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
  *extraout_ECX_03;
  time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
  *extraout_ECX_04;
  time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
  *extraout_ECX_05;
  time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
  *extraout_ECX_06;
  time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
  *extraout_ECX_07;
  time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> *ptVar7;
  undefined local_14 [8];
  istreambuf_iterator<char,struct_std::char_traits<char>_> *local_c;
  int local_8;
  
                    // WARNING: Load size is inaccurate
  local_c = (istreambuf_iterator<char,struct_std::char_traits<char>_> *)this;
  local_8 = (**(code **)(*this + 4))();
  if (local_8 == 0) {
    local_8 = 2;
  }
  bVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                     (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_14);
  iVar2 = param_18;
  puVar1 = param_17;
  if (bVar3) goto LAB_00b278a4;
  ptVar7 = extraout_ECX;
  if ((char)param_13 == '\0') {
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
              ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
    ptVar7 = extraout_ECX_00;
  }
  if (param_13._1_1_ < '0') {
LAB_00b27858:
    puVar6 = (undefined4 *)
             get_monthname(local_14,param_12,param_13,param_14,param_15,param_16,puVar1,iVar2);
    local_8 = 2;
LAB_00b2787b:
    param_12 = *puVar6;
    param_13 = puVar6[1];
  }
  else {
    if ((char)param_13 == '\0') {
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
      ptVar7 = extraout_ECX_01;
    }
    if ('9' < param_13._1_1_) goto LAB_00b27858;
    if (local_8 != 2) {
      if (local_8 == 1) {
        uVar5 = _Getint(ptVar7,(istreambuf_iterator<char,struct_std::char_traits<char>_> *)this,
                        (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                        (int)&param_14,1,(int *)&DAT_0000001f);
        *puVar1 = *puVar1 | uVar5;
        goto LAB_00b278a4;
      }
      puVar6 = (undefined4 *)
               get_year(local_14,param_12,param_13,param_14,param_15,param_16,puVar1,iVar2);
      goto LAB_00b2787b;
    }
    uVar5 = _Getint(ptVar7,local_c,
                    (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                    (int)&param_14,1,(int *)0xc);
    *puVar1 = *puVar1 | uVar5;
    *(int *)(iVar2 + 0x10) = *(int *)(iVar2 + 0x10) + -1;
    this = local_c;
  }
LAB_00b278a4:
  while (cVar4 = FUN_0044104b(&param_12,&param_14), cVar4 != '\0') {
    if ((char)param_13 == '\0') {
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
    }
    if (param_13._1_1_ != ' ') break;
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc
              ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
  }
  cVar4 = FUN_0044104b(&param_12,&param_14);
  if (cVar4 == '\0') goto LAB_00b27924;
  if ((char)param_13 == '\0') {
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
              ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
  }
  if (param_13._1_1_ != ':') {
    if ((char)param_13 == '\0') {
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
    }
    if (param_13._1_1_ != ',') {
      if ((char)param_13 == '\0') {
        istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                  ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
      }
      if (param_13._1_1_ != '/') goto LAB_00b27924;
    }
  }
  do {
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc
              ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
LAB_00b27924:
    cVar4 = FUN_0044104b(&param_12,&param_14);
    if (cVar4 == '\0') break;
    if ((char)param_13 == '\0') {
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
    }
  } while (param_13._1_1_ == ' ');
  bVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                     (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_14);
  if (!bVar3) {
    ptVar7 = extraout_ECX_02;
    if ((bool)(char)param_13 == bVar3) {
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
      ptVar7 = extraout_ECX_03;
    }
    if ('/' < param_13._1_1_) {
      if ((char)param_13 == '\0') {
        istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                  ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
        ptVar7 = extraout_ECX_04;
      }
      if (param_13._1_1_ < ':') {
        if ((local_8 == 1) || (local_8 == 3)) {
          uVar5 = _Getint(ptVar7,local_c,
                          (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                          (int)&param_14,1,(int *)0xc);
          *puVar1 = *puVar1 | uVar5;
          *(int *)(iVar2 + 0x10) = *(int *)(iVar2 + 0x10) + -1;
          this = local_c;
        }
        else {
          uVar5 = _Getint(ptVar7,(istreambuf_iterator<char,struct_std::char_traits<char>_> *)this,
                          (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                          (int)&param_14,1,(int *)&DAT_0000001f);
          *puVar1 = *puVar1 | uVar5;
        }
        goto LAB_00b27a1f;
      }
    }
    if (local_8 == 2) {
      *puVar1 = *puVar1 | 2;
    }
    else {
      puVar6 = (undefined4 *)
               get_monthname(local_14,param_12,param_13,param_14,param_15,param_16,puVar1,iVar2);
      param_12 = *puVar6;
      param_13 = puVar6[1];
      if (local_8 == 4) {
        local_8 = 3;
      }
    }
  }
LAB_00b27a1f:
  while (cVar4 = FUN_0044104b(&param_12,&param_14), cVar4 != '\0') {
    if ((char)param_13 == '\0') {
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
    }
    if (param_13._1_1_ != ' ') break;
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc
              ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
  }
  cVar4 = FUN_0044104b(&param_12,&param_14);
  if (cVar4 == '\0') goto LAB_00b27a9f;
  if ((char)param_13 == '\0') {
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
              ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
  }
  if (param_13._1_1_ != ':') {
    if ((char)param_13 == '\0') {
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
    }
    if (param_13._1_1_ != ',') {
      if ((char)param_13 == '\0') {
        istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                  ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
      }
      if (param_13._1_1_ != '/') goto LAB_00b27a9f;
    }
  }
  do {
    istreambuf_iterator<char,struct_std::char_traits<char>_>::_Inc
              ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
LAB_00b27a9f:
    cVar4 = FUN_0044104b(&param_12,&param_14);
    if (cVar4 == '\0') break;
    if ((char)param_13 == '\0') {
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
    }
  } while (param_13._1_1_ == ' ');
  bVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                     (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_14);
  if (bVar3) {
LAB_00b27b5b:
    *puVar1 = *puVar1 | 2;
  }
  else {
    ptVar7 = extraout_ECX_05;
    if ((bool)(char)param_13 == bVar3) {
      istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
      ptVar7 = extraout_ECX_06;
    }
    if (param_13._1_1_ < '0') {
LAB_00b27b55:
      if (local_8 != 4) goto LAB_00b27b5b;
      puVar6 = (undefined4 *)
               get_monthname(local_14,param_12,param_13,param_14,param_15,param_16,puVar1,iVar2);
    }
    else {
      if ((char)param_13 == '\0') {
        istreambuf_iterator<char,struct_std::char_traits<char>_>::_Peek
                  ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12);
        ptVar7 = extraout_ECX_07;
      }
      if ('9' < param_13._1_1_) goto LAB_00b27b55;
      if (local_8 == 4) {
        uVar5 = _Getint(ptVar7,local_c,
                        (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                        (int)&param_14,1,(int *)0xc);
        *puVar1 = *puVar1 | uVar5;
        *(int *)(iVar2 + 0x10) = *(int *)(iVar2 + 0x10) + -1;
        goto LAB_00b27b87;
      }
      if (local_8 == 3) {
        uVar5 = _Getint(ptVar7,(istreambuf_iterator<char,struct_std::char_traits<char>_> *)this,
                        (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                        (int)&param_14,1,(int *)&DAT_0000001f);
        *puVar1 = *puVar1 | uVar5;
        goto LAB_00b27b87;
      }
      puVar6 = (undefined4 *)
               get_year(local_14,param_12,param_13,param_14,param_15,param_16,puVar1,iVar2);
    }
    param_12 = *puVar6;
    param_13 = puVar6[1];
  }
LAB_00b27b87:
  bVar3 = istreambuf_iterator<char,struct_std::char_traits<char>_>::equal
                    ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                     (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_14);
  if (bVar3) {
    *puVar1 = *puVar1 | 1;
  }
  *param_11 = param_12;
  param_11[1] = param_13;
  return;
}



// WARNING: Removing unreachable block (ram,0x00b27bf8)
// WARNING: Removing unreachable block (ram,0x00b27bea)
// Library Function - Single Match
//  protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> >
// __thiscall std::time_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> >
// >::do_get_year(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class
// std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,struct
// tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::
do_get_year(void *this,undefined4 *param_11,undefined4 param_12,undefined4 param_13)

{
  uint uVar1;
  uint *param_15;
  int param_16;
  
  uVar1 = _Getint((time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                   *)this,(istreambuf_iterator<char,struct_std::char_traits<char>_> *)this,
                  (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                  (int)&stack0x00000010,0,(int *)0x7f3);
  *param_15 = *param_15 | uVar1;
  if ((*(byte *)param_15 & 2) == 0) {
    *(undefined4 *)(param_16 + 0x14) = 0;
  }
  *param_11 = param_12;
  param_11[1] = param_13;
  return;
}



// Library Function - Single Match
//  protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> >
// __thiscall std::time_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> >
// >::do_get_weekday(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class
// std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,struct
// tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::
do_get_weekday(void *this,undefined4 *param_11,undefined4 param_12,undefined4 param_13)

{
  int iVar1;
  uint *param_15;
  int param_16;
  
  iVar1 = _Getloctxt<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                    ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                     (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&stack0x00000010,0,
                     *(char **)((int)this + 8));
  if (iVar1 < 0) {
    *param_15 = *param_15 | 2;
  }
  else {
    *(int *)(param_16 + 0x18) = iVar1 >> 1;
  }
  *param_11 = param_12;
  param_11[1] = param_13;
  return;
}



// Library Function - Single Match
//  protected: virtual class std::istreambuf_iterator<char,struct std::char_traits<char> >
// __thiscall std::time_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> >
// >::do_get_monthname(class std::istreambuf_iterator<char,struct std::char_traits<char> >,class
// std::istreambuf_iterator<char,struct std::char_traits<char> >,class std::ios_base &,int &,struct
// tm *)const 
// 
// Library: Visual Studio 2008 Release

void __thiscall
std::time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::
do_get_monthname(void *this,undefined4 *param_11,undefined4 param_12,undefined4 param_13)

{
  int iVar1;
  uint *param_15;
  int param_16;
  
  iVar1 = _Getloctxt<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                    ((istreambuf_iterator<char,struct_std::char_traits<char>_> *)&param_12,
                     (istreambuf_iterator<char,struct_std::char_traits<char>_> *)&stack0x00000010,0,
                     *(char **)((int)this + 0xc));
  if (iVar1 < 0) {
    *param_15 = *param_15 | 2;
  }
  else {
    *(int *)(param_16 + 0x10) = iVar1 >> 1;
  }
  *param_11 = param_12;
  param_11[1] = param_13;
  return;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Multiple Matches With Same Base Name
//  public: static unsigned int __cdecl std::time_get<char,class
// std::istreambuf_iterator<char,struct std::char_traits<char> > >::_Getcat(class std::locale::facet
// const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::time_get<unsigned short,class
// std::istreambuf_iterator<unsigned short,struct std::char_traits<unsigned short> >
// >::_Getcat(class std::locale::facet const * *,class std::locale const *)
//  public: static unsigned int __cdecl std::time_get<wchar_t,class
// std::istreambuf_iterator<wchar_t,struct std::char_traits<wchar_t> > >::_Getcat(class
// std::locale::facet const * *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

undefined4 Getcat(int *param_1,locale *param_2)

{
  basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *pbVar1;
  _Locinfo *p_Var2;
  int iVar3;
  _Locinfo local_a8 [116];
  undefined local_34 [28];
  time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> *local_18;
  uint local_14;
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x98;
  local_8 = 0xb27cac;
  local_14 = 0;
  if ((param_1 != (int *)0x0) && (*param_1 == 0)) {
    local_18 = (time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                *)operator_new(0x1c);
    local_8 = 0;
    if (local_18 ==
        (time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> *)0x0)
    {
      iVar3 = 0;
    }
    else {
      pbVar1 = (basic_string<char,struct_std::char_traits<char>,class_std::allocator<char>_> *)
               std::locale::name(param_2,local_34);
      local_8 = CONCAT31(local_8._1_3_,1);
      local_14 = 1;
      p_Var2 = (_Locinfo *)std::_Locinfo::_Locinfo(local_a8,pbVar1);
      local_8 = 2;
      local_14 = 3;
      iVar3 = std::
              time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>::
              time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                        (local_18,p_Var2,0);
    }
    *param_1 = iVar3;
    local_8 = 3;
    if ((local_14 & 2) != 0) {
      local_14 = local_14 & 0xfffffffd;
      std::_Locinfo::~_Locinfo(local_a8);
    }
    if ((local_14 & 1) != 0) {
      FUN_004017b2(1,0);
    }
  }
  return 5;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  class std::time_get<char,class std::istreambuf_iterator<char,struct std::char_traits<char> > >
// const & __cdecl std::use_facet<class std::time_get<char,class
// std::istreambuf_iterator<char,struct std::char_traits<char> > > >(class std::locale const &)
// 
// Library: Visual Studio 2008 Release

time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> * __cdecl
std::
use_facet<class_std::time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>_>
          (locale *param_1)

{
  facet *pfVar1;
  uint uVar2;
  facet *pfVar3;
  int iVar4;
  bad_cast local_24 [12];
  _Lockit local_18 [4];
  facet *local_14 [3];
  undefined4 local_8;
  undefined4 uStack_4;
  
  uStack_4 = 0x14;
  local_8 = 0xb27d53;
  _Lockit::_Lockit(local_18,0);
  pfVar1 = DAT_032eddc8;
  local_8 = 0;
  local_14[0] = DAT_032eddc8;
  uVar2 = locale::id::operator_unsigned_int((id *)&DAT_032eddcc);
  pfVar3 = locale::_Getfacet(param_1,uVar2);
  if ((pfVar3 == (facet *)0x0) && (pfVar3 = pfVar1, pfVar1 == (facet *)0x0)) {
    iVar4 = ::Getcat(local_14,param_1);
    if (iVar4 == -1) {
      bad_cast::bad_cast(local_24,"bad cast");
      __CxxThrowException_8(local_24,&DAT_03115570);
    }
    pfVar3 = local_14[0];
    DAT_032eddc8 = local_14[0];
    locale::facet::_Incref(local_14[0]);
    locale::facet::facet_Register(pfVar3);
  }
  local_8 = 0xffffffff;
  FUN_00823810();
  return (time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> *)
         pfVar3;
}



// WARNING: Function: __EH_prolog3 replaced with injection: EH_prolog3
// WARNING: Function: __EH_epilog3 replaced with injection: EH_epilog3
// Library Function - Single Match
//  private: static void __cdecl std::locale::_Locimp::_Makexloc(class std::_Locinfo const
// &,int,class std::locale::_Locimp *,class std::locale const *)
// 
// Library: Visual Studio 2008 Release

void __cdecl
std::locale::_Locimp::_Makexloc(_Locinfo *param_1,int param_2,_Locimp *param_3,locale *param_4)

{
  collate<char> *pcVar1;
  uint uVar2;
  undefined4 *puVar3;
  void *pvVar4;
  undefined4 uVar5;
  uint uVar6;
  moneypunct<char,0> *this;
  moneypunct<char,1> *this_00;
  time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_> *ptVar7;
  time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_> *this_01;
  
  if ((param_2 & 1U) != 0) {
    if (param_4 == (locale *)0x0) {
      pcVar1 = (collate<char> *)operator_new(0x10);
      if (pcVar1 == (collate<char> *)0x0) {
        pcVar1 = (collate<char> *)0x0;
      }
      else {
        pcVar1 = (collate<char> *)collate<char>::collate<char>(pcVar1,param_1,0);
      }
      uVar2 = id::operator_unsigned_int((id *)&DAT_032eddd0);
    }
    else {
      uVar2 = id::operator_unsigned_int((id *)&DAT_032eddd0);
      pcVar1 = use_facet<class_std::collate<char>_>(param_4);
    }
    FUN_007cc31d(pcVar1,uVar2);
  }
  if ((param_2 & 0x20U) != 0) {
    if (param_4 == (locale *)0x0) {
      puVar3 = (undefined4 *)operator_new(8);
      if (puVar3 == (undefined4 *)0x0) {
        puVar3 = (undefined4 *)0x0;
      }
      else {
        puVar3[1] = 0;
        *puVar3 = messages<char>::vftable;
      }
      uVar2 = id::operator_unsigned_int((id *)&DAT_032edde8);
    }
    else {
      uVar2 = id::operator_unsigned_int((id *)&DAT_032edde8);
      puVar3 = (undefined4 *)use_facet<class_std::messages<char>_>(param_4);
    }
    FUN_007cc31d(puVar3,uVar2);
  }
  uVar2 = param_2 & 4;
  if (uVar2 != 0) {
    if (param_4 == (locale *)0x0) {
      pvVar4 = operator_new(0x10);
      if (pvVar4 == (void *)0x0) {
        uVar5 = 0;
      }
      else {
        uVar5 = FID_conflict_money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>
                          (param_1,0);
      }
      uVar6 = id::operator_unsigned_int((id *)&DAT_032eddd8);
    }
    else {
      uVar6 = id::operator_unsigned_int((id *)&DAT_032eddd8);
      uVar5 = ::use_facet<>(param_4,uVar6);
    }
    FUN_007cc31d(uVar5,uVar6);
  }
  if (uVar2 != 0) {
    if (param_4 == (locale *)0x0) {
      pvVar4 = operator_new(0x10);
      if (pvVar4 == (void *)0x0) {
        uVar5 = 0;
      }
      else {
        uVar5 = FID_conflict_money_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>
                          (param_1,0);
      }
      uVar6 = id::operator_unsigned_int((id *)&DAT_032eddd4);
    }
    else {
      uVar6 = id::operator_unsigned_int((id *)&DAT_032eddd4);
      uVar5 = ::use_facet<>(param_4,uVar6);
    }
    FUN_007cc31d(uVar5,uVar6);
    if (uVar2 != 0) {
      if (param_4 == (locale *)0x0) {
        this = (moneypunct<char,0> *)operator_new(0x34);
        if (this == (moneypunct<char,0> *)0x0) {
          uVar5 = 0;
        }
        else {
          uVar5 = moneypunct<char,0>::moneypunct<char,0>(this,param_1,0,false);
        }
        uVar6 = id::operator_unsigned_int((id *)&DAT_032edde4);
      }
      else {
        uVar6 = id::operator_unsigned_int((id *)&DAT_032edde4);
        uVar5 = ::use_facet<>(param_4,uVar6);
      }
      FUN_007cc31d(uVar5,uVar6);
      if (uVar2 != 0) {
        if (param_4 == (locale *)0x0) {
          this_00 = (moneypunct<char,1> *)operator_new(0x34);
          if (this_00 == (moneypunct<char,1> *)0x0) {
            uVar5 = 0;
          }
          else {
            uVar5 = moneypunct<char,1>::moneypunct<char,1>(this_00,param_1,0,false);
          }
          uVar2 = id::operator_unsigned_int((id *)&DAT_032edde0);
        }
        else {
          uVar2 = id::operator_unsigned_int((id *)&DAT_032edde0);
          uVar5 = ::use_facet<>(param_4,uVar2);
        }
        FUN_007cc31d(uVar5,uVar2);
      }
    }
  }
  if ((param_2 & 0x10U) != 0) {
    if (param_4 == (locale *)0x0) {
      ptVar7 = (time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                *)operator_new(0x1c);
      if (ptVar7 == (time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                     *)0x0) {
        ptVar7 = (time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                  *)0x0;
      }
      else {
        ptVar7 = (time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                  *)time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                    ::
                    time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>
                              (ptVar7,param_1,0);
      }
      uVar2 = id::operator_unsigned_int((id *)&DAT_032eddcc);
    }
    else {
      uVar2 = id::operator_unsigned_int((id *)&DAT_032eddcc);
      ptVar7 = use_facet<class_std::time_get<char,class_std::istreambuf_iterator<char,struct_std::char_traits<char>_>_>_>
                         (param_4);
    }
    FUN_007cc31d(ptVar7,uVar2);
  }
  if ((param_2 & 0x10U) != 0) {
    if (param_4 == (locale *)0x0) {
      this_01 = (time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>
                 *)operator_new(0x14);
      if (this_01 ==
          (time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_> *)0x0
         ) {
        uVar5 = 0;
      }
      else {
        uVar5 = time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>
                ::
                time_put<char,class_std::ostreambuf_iterator<char,struct_std::char_traits<char>_>_>
                          (this_01,param_1,0);
      }
      uVar2 = id::operator_unsigned_int((id *)&DAT_032edddc);
    }
    else {
      uVar2 = id::operator_unsigned_int((id *)&DAT_032edddc);
      uVar5 = ::use_facet<>(param_4,uVar2);
    }
    FUN_007cc31d(uVar5,uVar2);
  }
  return;
}



// Library Function - Single Match
//  __Strcoll
// 
// Library: Visual Studio 2008 Release

int __cdecl __Strcoll(char *param_1,char *param_2,char *param_3,char *param_4,_Collvec *param_5)

{
  int iVar1;
  wchar_t *_Code_page;
  size_t _Size;
  int *piVar2;
  LPCWSTR _LocaleName;
  size_t _CchCount1;
  size_t _CchCount2;
  
  _CchCount1 = (int)param_2 - (int)param_1;
  _CchCount2 = (int)param_4 - (int)param_3;
  if (param_5 == (_Collvec *)0x0) {
    iVar1 = ____lc_handle_func();
    _LocaleName = *(LPCWSTR *)(iVar1 + 4);
    _Code_page = (wchar_t *)____lc_collate_cp_func();
  }
  else {
    _LocaleName = (LPCWSTR)param_5->_Page;
    _Code_page = param_5->_LocaleName;
  }
  if (_LocaleName == (LPCWSTR)0x0) {
    _Size = _CchCount1;
    if ((int)_CchCount2 <= (int)_CchCount1) {
      _Size = _CchCount2;
    }
    iVar1 = _memcmp(param_1,param_3,_Size);
    if ((iVar1 == 0) && (_CchCount1 != _CchCount2)) {
      iVar1 = (uint)((int)_CchCount2 <= (int)_CchCount1) * 2 + -1;
    }
  }
  else {
    iVar1 = ___crtCompareStringA
                      ((_locale_t)0x0,_LocaleName,0x1000,param_1,_CchCount1,param_3,_CchCount2,
                       (int)_Code_page);
    if (iVar1 == 0) {
      piVar2 = __errno();
      *piVar2 = 0x16;
      iVar1 = 0x7fffffff;
    }
    else {
      iVar1 = iVar1 + -2;
    }
  }
  return iVar1;
}



// Library Function - Single Match
//  __Getcoll
// 
// Libraries: Visual Studio 2008 Release, Visual Studio 2010 Release

_Collvec __cdecl __Getcoll(void)

{
  uint uVar1;
  int iVar2;
  wchar_t *pwVar3;
  _Collvec _Var4;
  
  iVar2 = ____lc_handle_func();
  uVar1 = *(uint *)(iVar2 + 4);
  pwVar3 = (wchar_t *)____lc_collate_cp_func();
  _Var4._LocaleName = pwVar3;
  _Var4._Page = uVar1;
  return _Var4;
}



// Library Function - Single Match
//  __Getdateorder
// 
// Library: Visual Studio 2008 Release

int __cdecl __Getdateorder(void)

{
  int iVar1;
  LCTYPE LCType;
  uint *lpLCData;
  int cchData;
  uint local_8;
  
  local_8 = 0;
  cchData = 2;
  lpLCData = &local_8;
  LCType = 0x22;
  iVar1 = ____lc_handle_func();
  GetLocaleInfoA(*(LCID *)(iVar1 + 0x14),LCType,(LPSTR)lpLCData,cchData);
  if ((char)local_8 == '0') {
    return 2;
  }
  if ((char)local_8 == '1') {
    return 1;
  }
  return ((char)local_8 != '2') - 1 & 3;
}



// Library Function - Single Match
//  __Wcscoll
// 
// Library: Visual Studio 2008 Release

int __cdecl
__Wcscoll(wchar_t *param_1,wchar_t *param_2,wchar_t *param_3,wchar_t *param_4,_Collvec *param_5)

{
  int iVar1;
  int *piVar2;
  LPCWSTR pWVar3;
  DWORD _DwCmpFlags;
  LPCWSTR _LpString2;
  LPCWSTR pWVar4;
  
  _LpString2 = (LPCWSTR)((int)param_2 - (int)param_1 >> 1);
  pWVar4 = (LPCWSTR)((int)param_4 - (int)param_3 >> 1);
  if (param_5 == (_Collvec *)0x0) {
    iVar1 = ____lc_handle_func();
    _DwCmpFlags = *(DWORD *)(iVar1 + 4);
  }
  else {
    _DwCmpFlags = param_5->_Page;
  }
  if (_DwCmpFlags == 0) {
    pWVar3 = _LpString2;
    if ((int)pWVar4 <= (int)_LpString2) {
      pWVar3 = pWVar4;
    }
    for (; 0 < (int)pWVar3; pWVar3 = (LPCWSTR)((int)pWVar3 + -1)) {
      if (*param_1 != *param_3) {
        iVar1 = (-(uint)((ushort)*param_1 < (ushort)*param_3) & 0xfffffffe) + 1;
        goto LAB_00b28205;
      }
      param_1 = param_1 + 1;
      param_3 = param_3 + 1;
    }
    iVar1 = 0;
LAB_00b28205:
    if ((iVar1 == 0) && (_LpString2 != pWVar4)) {
      iVar1 = (uint)((int)pWVar4 <= (int)_LpString2) * 2 + -1;
    }
  }
  else {
    ____lc_collate_cp_func();
    iVar1 = ___crtCompareStringW
                      ((LPCWSTR)0x0,_DwCmpFlags,(LPCWSTR)0x1000,(int)param_1,_LpString2,(int)param_3
                      );
    if (iVar1 == 0) {
      piVar2 = __errno();
      *piVar2 = 0x16;
      iVar1 = 0x7fffffff;
    }
    else {
      iVar1 = iVar1 + -2;
    }
  }
  return iVar1;
}



// Library Function - Single Match
//  __Wcsxfrm
// 
// Library: Visual Studio 2008 Release

size_t __cdecl
__Wcsxfrm(wchar_t *_String1,wchar_t *_End1,wchar_t *param_3,wchar_t *param_4,_Collvec *param_5)

{
  int iVar1;
  DWORD _DWMapFlag;
  void *_Memory;
  LPWSTR pWVar2;
  LPWSTR pWVar3;
  LPWSTR _Size;
  
  pWVar3 = (LPWSTR)((int)param_4 - (int)param_3 >> 1);
  _Size = (LPWSTR)((int)_End1 - (int)_String1 >> 1);
  if (param_5 == (_Collvec *)0x0) {
    iVar1 = ____lc_handle_func();
    _DWMapFlag = *(DWORD *)(iVar1 + 4);
  }
  else {
    _DWMapFlag = param_5->_Page;
  }
  if (_DWMapFlag == 0) {
    pWVar2 = pWVar3;
    if (pWVar3 <= _Size) {
      _memcpy(_String1,param_3,(int)pWVar3 * 2);
    }
  }
  else {
    _Memory = __malloc_crt((size_t)_Size);
    pWVar2 = (LPWSTR)0xffffffff;
    if (_Memory != (void *)0x0) {
      ____lc_collate_cp_func();
      pWVar2 = (LPWSTR)___crtLCMapStringW((LPCWSTR)0x0,_DWMapFlag,(LPCWSTR)0x400,(int)param_3,pWVar3
                                          ,(int)_Memory);
      if (pWVar2 == (LPWSTR)0x0) {
        ____lc_collate_cp_func();
        pWVar2 = (LPWSTR)___crtLCMapStringW((LPCWSTR)0x0,_DWMapFlag,(LPCWSTR)0x400,(int)param_3,
                                            pWVar3,0);
        if (pWVar2 == (LPWSTR)0x0) {
          pWVar2 = (LPWSTR)0x7fffffff;
        }
      }
      else {
        pWVar3 = (LPWSTR)0x0;
        if (pWVar2 != (LPWSTR)0x0) {
          do {
            _String1[(int)pWVar3] = (ushort)*(byte *)((int)pWVar3 + (int)_Memory);
            pWVar3 = (LPWSTR)((int)pWVar3 + 1);
          } while (pWVar3 < pWVar2);
        }
      }
      _free(_Memory);
    }
  }
  return (size_t)pWVar2;
}



// Library Function - Single Match
//  __Strxfrm
// 
// Library: Visual Studio 2008 Release

size_t __cdecl __Strxfrm(char *_String1,char *_End1,char *param_3,char *param_4,_Collvec *param_5)

{
  int iVar1;
  wchar_t *_Code_page;
  size_t sVar2;
  uint _CchDest;
  uint _Size;
  size_t local_8;
  
  local_8 = 0xffffffff;
  _CchDest = (int)_End1 - (int)_String1;
  _Size = (int)param_4 - (int)param_3;
  if (param_5 == (_Collvec *)0x0) {
    iVar1 = ____lc_handle_func();
    param_4 = *(char **)(iVar1 + 4);
    _Code_page = (wchar_t *)____lc_collate_cp_func();
  }
  else {
    param_4 = (char *)param_5->_Page;
    _Code_page = param_5->_LocaleName;
  }
  if ((param_4 == (char *)0x0) && (_Code_page == (wchar_t *)0x0)) {
    local_8 = _Size;
    if (_Size <= _CchDest) {
      _memcpy(_String1,param_3,_Size);
    }
  }
  else {
    sVar2 = ___crtLCMapStringA((_locale_t)0x0,(LPCWSTR)param_4,0x400,param_3,_Size,(LPSTR)0x0,0,
                               (int)_Code_page,1);
    if ((sVar2 != 0) && (local_8 = sVar2, (int)sVar2 <= (int)_CchDest)) {
      ___crtLCMapStringA((_locale_t)0x0,(LPCWSTR)param_4,0x400,param_3,_Size,_String1,_CchDest,
                         (int)_Code_page,1);
    }
  }
  return local_8;
}



undefined * FUN_00b283f0(void)

{
  return &DAT_03245b08;
}



undefined4 * FUN_00b28400(void)

{
  undefined4 *puVar1;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bc931b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  puVar1 = (undefined4 *)operator_new(0x2c);
  local_4 = 0;
  if (puVar1 != (undefined4 *)0x0) {
    FUN_00845a20(0,DAT_032bd44c);
    *puVar1 = wxPowerEvent::vftable;
    *(undefined *)(puVar1 + 10) = 0;
    ExceptionList = local_c;
    return puVar1;
  }
  ExceptionList = local_c;
  return (undefined4 *)0x0;
}



void __thiscall FUN_00b28480(void **param_1_00,undefined4 param_1)

{
  void *_Memory;
  void *pvVar1;
  void *_Count;
  void *pvVar2;
  
  _Count = (void *)FUN_00893ca0(param_1);
  _Memory = *param_1_00;
  pvVar1 = param_1_00[1];
  pvVar2 = _calloc((size_t)_Count,4);
  *param_1_00 = pvVar2;
  param_1_00[1] = _Count;
  FUN_00893d40(_Memory,pvVar1,param_1_00,pvVar2,&LAB_008696d0,&LAB_00893da0);
  _free(_Memory);
  return;
}



undefined4 FUN_00b284d0(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  FUN_00840a70(param_2);
  local_4 = 0;
  uVar2 = FUN_00850470(local_30);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c,uVar1);
  }
  ExceptionList = local_c;
  return uVar2;
}



undefined4 * __thiscall FUN_00b28550(undefined4 *param_1_00,int param_1)

{
  *param_1_00 = 0;
  param_1_00[7] = 7;
  param_1_00[6] = 0;
  *(undefined2 *)(param_1_00 + 2) = 0;
  FID_conflict_assign(param_1,0,0xffffffff);
  param_1_00[8] = 0;
  param_1_00[10] = *(undefined4 *)(param_1 + 0x24);
  param_1_00[0xb] = *(undefined4 *)(param_1 + 0x28);
  return param_1_00;
}



undefined4 * __thiscall FUN_00b285a0(int *param_1_00,undefined4 param_1,int param_2)

{
  int iVar1;
  float fVar2;
  float fVar3;
  void *pvVar4;
  undefined4 *puVar5;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bcd72b;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  pvVar4 = operator_new(0x30);
  puVar5 = (undefined4 *)0x0;
  local_4 = 0;
  if (pvVar4 != (void *)0x0) {
    puVar5 = (undefined4 *)FUN_00b28550(param_1);
  }
  *puVar5 = *(undefined4 *)(*param_1_00 + param_2 * 4);
  *(undefined4 **)(*param_1_00 + param_2 * 4) = puVar5;
  param_1_00[2] = param_1_00[2] + 1;
  iVar1 = param_1_00[1];
  fVar2 = (float)param_1_00[2];
  local_4 = 0xffffffff;
  if (param_1_00[2] < 0) {
    fVar2 = fVar2 + 4.294967e+09;
  }
  fVar3 = (float)iVar1;
  if (iVar1 < 0) {
    fVar3 = fVar3 + 4.294967e+09;
  }
  if (0.85 <= fVar2 / fVar3) {
    FUN_00b28480(iVar1);
  }
  ExceptionList = local_c;
  return puVar5;
}



undefined4 FUN_00b28660(undefined4 param_1,undefined4 param_2)

{
  uint uVar1;
  undefined4 uVar2;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bd1888;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffcc;
  ExceptionList = &local_c;
  uVar2 = FUN_0083fe30(local_30);
  local_4 = 0;
  uVar2 = FUN_00b284d0(uVar2,param_2,uVar1);
  _free(local_14);
  if (7 < local_18) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_2c);
  }
  ExceptionList = local_c;
  return uVar2;
}



undefined4 * __thiscall FUN_00b286e0(int *param_1_00,int param_1,undefined *param_2)

{
  uint uVar1;
  uint uVar2;
  int iVar3;
  undefined4 *puVar4;
  
  if (*(uint *)(param_1 + 0x18) < 8) {
    iVar3 = param_1 + 4;
  }
  else {
    iVar3 = *(int *)(param_1 + 4);
  }
  uVar2 = FUN_00893df0(iVar3);
  uVar1 = param_1_00[1];
  puVar4 = *(undefined4 **)(*param_1_00 + (uVar2 % uVar1) * 4);
  while( true ) {
    if (puVar4 == (undefined4 *)0x0) {
      *param_2 = 1;
      puVar4 = (undefined4 *)FUN_00b285a0(param_1,uVar2 % uVar1);
      return puVar4;
    }
    if ((puVar4[6] == *(int *)(param_1 + 0x14)) && (iVar3 = FUN_00850760(param_1), iVar3 == 0))
    break;
    puVar4 = (undefined4 *)*puVar4;
  }
  *param_2 = 0;
  return puVar4;
}



int FUN_00b28760(undefined4 param_1)

{
  uint uVar1;
  int iVar2;
  undefined local_38 [4];
  uint local_34;
  undefined4 local_24;
  uint local_20;
  void *local_1c;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf5108;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffc0;
  ExceptionList = &local_c;
  local_20 = 7;
  local_24 = 0;
  local_34 = local_34 & 0xffff0000;
  FID_conflict_assign(param_1,0,0xffffffff);
  local_1c = (void *)0x0;
  local_14 = 0;
  local_10 = 5;
  local_4 = 0;
  iVar2 = FUN_00b286e0(local_38,&param_1);
  _free(local_1c);
  if (7 < local_20) {
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_34,uVar1);
  }
  ExceptionList = local_c;
  return iVar2 + 0x28;
}



undefined4 FUN_00b28810(void)

{
  uint uVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  int local_24 [2];
  char local_1c;
  int local_18 [2];
  char local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf5140;
  local_c = ExceptionList;
  uVar1 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  uVar2 = FUN_00432231(local_18);
  local_4 = 0;
  uVar3 = FUN_00432231(local_24);
  local_4 = CONCAT31(local_4._1_3_,1);
  uVar2 = FUN_00b28660(uVar3,uVar2,uVar1);
  if ((local_1c != '\0') && (local_24[0] != 0)) {
    _free(*(void **)(local_24[0] + 0x1c));
    if (7 < *(uint *)(local_24[0] + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(local_24[0] + 4));
    }
    *(undefined4 *)(local_24[0] + 0x18) = 7;
    *(undefined4 *)(local_24[0] + 0x14) = 0;
    *(undefined2 *)(local_24[0] + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_24[0]);
  }
  if ((local_10 != '\0') && (local_18[0] != 0)) {
    _free(*(void **)(local_18[0] + 0x1c));
    if (7 < *(uint *)(local_18[0] + 0x18)) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(*(undefined4 *)(local_18[0] + 4));
    }
    *(undefined4 *)(local_18[0] + 0x18) = 7;
    *(undefined4 *)(local_18[0] + 0x14) = 0;
    *(undefined2 *)(local_18[0] + 4) = 0;
                    // WARNING: Subroutine does not return
    FUN_00a3f6a1(local_18[0]);
  }
  ExceptionList = local_c;
  return uVar2;
}



// WARNING: Globals starting with '_' overlap smaller symbols at the same address

undefined4 * FUN_00b28920(void)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf516e;
  local_c = ExceptionList;
  if ((DAT_032ede20 & 1) == 0) {
    DAT_032ede20 = DAT_032ede20 | 1;
    local_4 = 0;
    ExceptionList = &local_c;
    DAT_032ede14 = FUN_00893ca0(0x19,DAT_0323f878 ^ (uint)&local_c);
    _DAT_032ede18 = 0;
    DAT_032ede10 = _calloc(DAT_032ede14,4);
    _atexit((_func_4879 *)&LAB_00c79910);
  }
  ExceptionList = local_c;
  return &DAT_032ede10;
}



undefined4 __fastcall FUN_00b289a0(int param_1)

{
  int iVar1;
  undefined4 uVar2;
  
  if (*(char *)(param_1 + 0x48) == '\0') {
    return 5;
  }
  FUN_00b28920();
  iVar1 = FUN_00970c40(param_1);
  FUN_00b28920();
  uVar2 = 5;
  if (iVar1 != 0) {
    uVar2 = *(undefined4 *)(iVar1 + 0x2c);
  }
  return uVar2;
}



void FUN_00b289e0(void)

{
  char cVar1;
  UINT UVar2;
  DWORD_PTR DVar3;
  uint *puVar4;
  LPCWSTR unaff_EBX;
  uint uVar5;
  uint uVar6;
  undefined auStack_384 [8];
  undefined4 uStack_37c;
  undefined *puStack_378;
  undefined *puStack_350;
  undefined auStack_34c [44];
  uint uStack_320;
  void *pvStack_31c;
  SHFILEINFOW SStack_2c4;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf51b1;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&puStack_350;
  ExceptionList = &local_c;
  uVar6 = 1;
  UVar2 = GetDriveTypeW(unaff_EBX);
  switch(UVar2) {
  case 1:
    uVar6 = 0;
  default:
    uVar5 = 5;
    break;
  case 2:
    uVar6 = 3;
    uVar5 = 0;
    break;
  case 3:
    uVar5 = 1;
    break;
  case 4:
    uVar6 = 9;
    uVar5 = 4;
    break;
  case 5:
    uVar6 = 7;
    uVar5 = 2;
  }
  puStack_378 = (undefined *)0xb28a76;
  DVar3 = SHGetFileInfoW(unaff_EBX,0,&SStack_2c4,0x2b4,0x800);
  if (DVar3 == 0) {
    puStack_350 = auStack_384;
    FUN_0043c211(&DAT_00d25fa0);
    cVar1 = FUN_00846b30(6);
    if (cVar1 != '\0') {
      FUN_0081c0f1();
      uStack_4 = 0;
      puStack_378 = (undefined *)0xb28adb;
      FUN_008423d0();
      uStack_4._0_1_ = 1;
      GetLastError();
      FUN_00843700();
      GetLastError();
      puStack_378 = auStack_34c;
      uStack_37c = 0xb28b15;
      FUN_00847d90();
      uStack_4 = (uint)uStack_4._1_3_ << 8;
      FUN_00842440();
      uStack_4 = 0xffffffff;
      FUN_0081b5bc();
    }
  }
  else {
    if ((SStack_2c4.dwAttributes & 0x40000) != 0) {
      uVar6 = uVar6 | 4;
    }
    if ((SStack_2c4.dwAttributes & 0x2000000) != 0) {
      uVar6 = uVar6 | 2;
    }
  }
  FUN_004325b6();
  uStack_4 = 2;
  FUN_00b28920();
  puVar4 = (uint *)FUN_00b28760();
  *puVar4 = uVar6;
  puVar4[1] = uVar5;
  _free(pvStack_31c);
  if (uStack_320 < 8) {
    ExceptionList = local_c;
    ___security_check_cookie_4();
    return;
  }
                    // WARNING: Subroutine does not return
  FUN_00a3f6a1();
}



undefined4 __thiscall
FUN_00b28be0(undefined4 param_1_00,undefined4 param_1,byte param_2,byte param_3)

{
  uint uVar1;
  undefined local_30 [4];
  undefined4 local_2c;
  uint local_18;
  void *local_14;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00be6158;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  uVar1 = FUN_00b289e0(DAT_0323f878 ^ (uint)&stack0xffffffc8);
  if ((((((((param_2 & 1) == 0) || ((uVar1 & 1) != 0)) &&
         (((param_3 & 1) == 0 || ((uVar1 & 1) == 0)))) &&
        (((param_2 & 2) == 0 || ((uVar1 & 2) != 0)))) &&
       (((param_3 & 2) == 0 || ((uVar1 & 2) == 0)))) &&
      (((((param_2 & 4) == 0 || ((uVar1 & 4) != 0)) && (((param_3 & 4) == 0 || ((uVar1 & 4) == 0))))
       && (((param_2 & 8) == 0 || ((uVar1 & 8) != 0)))))) &&
     (((param_3 & 8) == 0 || ((uVar1 & 8) == 0)))) {
    FUN_004325b6(param_1_00);
    local_4 = 0;
    FUN_00854700(local_30,1);
    _free(local_14);
    if (7 < local_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(local_2c);
    }
    ExceptionList = local_c;
    return 1;
  }
  ExceptionList = local_c;
  return 0;
}



// WARNING: Removing unreachable block (ram,0x00b28f79)

void FUN_00b28ce0(undefined4 param_1,undefined4 param_2,byte param_3)

{
  short *psVar1;
  bool bVar2;
  uint uVar3;
  char cVar4;
  int iVar5;
  undefined4 *_Memory;
  uint *puVar6;
  undefined4 unaff_EBX;
  undefined4 unaff_EBP;
  int unaff_ESI;
  undefined4 uVar7;
  undefined *puVar8;
  uint uStack_8c;
  size_t local_78;
  undefined auStack_74 [4];
  uint local_70;
  undefined4 local_6c;
  undefined local_68 [8];
  undefined4 uStack_60;
  uint uStack_5c;
  void *pvStack_58;
  undefined auStack_50 [8];
  undefined auStack_48 [4];
  uint uStack_44;
  int iStack_34;
  uint uStack_30;
  void *pvStack_2c;
  void *pvStack_20;
  undefined4 uStack_18;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  uint uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf5201;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_78;
  uStack_8c = DAT_0323f878;
  ExceptionList = &local_c;
  local_6c = param_1;
  local_78 = 0;
  local_70 = 2;
  if ((param_3 & 1) != 0) {
    local_70 = 1;
  }
  iVar5 = (*DAT_032ede04)(local_70,1,0,param_2,local_68);
  if (iVar5 == 0) {
    local_78 = 0x100;
    _Memory = (undefined4 *)_malloc(0x100);
    uVar3 = uStack_4;
    *_Memory = 0;
    _Memory[1] = 0;
    _Memory[2] = 0;
    _Memory[3] = 0;
    _Memory[4] = 0;
    _Memory[5] = 0;
    _Memory[6] = 0;
    _Memory[7] = 0;
    while (((iVar5 = (*DAT_032ede00)(unaff_EBX,&stack0xffffff78,_Memory,&local_78), iVar5 == 0 ||
            (iVar5 == 0xea)) && (DAT_032ede08 == 0))) {
      if (iVar5 == 0xea) {
        _Memory = (undefined4 *)_realloc(_Memory,local_78);
      }
      else if ((*(byte *)(_Memory + 3) & 2) == 0) {
        FUN_004325b6(_Memory[5]);
        psVar1 = (short *)_Memory[4];
        uStack_18 = 0;
        if ((psVar1 == (short *)0x0) || (*psVar1 == 0)) {
LAB_00b28e6c:
          bVar2 = false;
        }
        else {
          FUN_004325b6(psVar1);
          uStack_8c = uStack_8c | 1;
          uStack_18 = CONCAT31(uStack_18._1_3_,1);
          cVar4 = thunk_FUN_00857710(auStack_74);
          if (cVar4 != '\0') goto LAB_00b28e6c;
          bVar2 = true;
        }
        uStack_18 = 0;
        if ((uStack_8c & 1) != 0) {
          uStack_8c = 0;
          _free(pvStack_58);
          if (7 < uStack_5c) {
                    // WARNING: Subroutine does not return
            FUN_00a3f6a1(local_70);
          }
          uStack_5c = 7;
          uStack_60 = 0;
          local_70 = local_70 & 0xffff0000;
        }
        if ((!bVar2) && (iStack_34 != 0)) {
          uVar7 = 0x5c;
          FUN_0081b3d8(auStack_50);
          cVar4 = FUN_008931c0(uVar7);
          if (cVar4 != '\0') {
            FID_conflict_append(1,0x5c);
          }
          FUN_00b28be0(unaff_EBP,puStack_8,uVar3 & 0xfffffffe);
          if (unaff_ESI == 2) {
            puVar8 = auStack_48;
            FUN_00b28920(puVar8);
            puVar6 = (uint *)FUN_00b28760(puVar8);
            *puVar6 = *puVar6 & 0xfffffffe;
          }
        }
        uStack_18 = 0xffffffff;
        _free(pvStack_2c);
        if (7 < uStack_30) {
                    // WARNING: Subroutine does not return
          FUN_00a3f6a1(uStack_44);
        }
        uStack_30 = 7;
        iStack_34 = 0;
        uStack_44 = uStack_44 & 0xffff0000;
      }
      else {
        FUN_00b28ce0(unaff_EBP,_Memory,puStack_8,uVar3);
      }
    }
    _free(_Memory);
    (*DAT_032eddfc)(unaff_EBX);
  }
  ExceptionList = pvStack_20;
  ___security_check_cookie_4();
  return;
}



void __fastcall FUN_00b28fd0(uint param_1_00,char *param_2_00,char *param_1,uint param_2)

{
  bool bVar1;
  char cVar2;
  int iVar3;
  uint *puVar4;
  undefined4 uVar5;
  uint uVar6;
  undefined auStack_174 [12];
  undefined4 uStack_168;
  char *pcStack_164;
  char *pcStack_160;
  char *pcStack_15c;
  char *pcStack_158;
  char *local_13c;
  int local_138;
  uint local_134;
  undefined *local_130;
  char local_12c [4];
  uint local_128;
  undefined local_11c [4];
  uint local_118;
  undefined4 local_108;
  uint local_104;
  void *local_100;
  int local_f8;
  char local_f0;
  int local_ec;
  char local_e4;
  uint local_b4;
  void *local_b0;
  char local_58 [72];
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf528d;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)&local_13c;
  ExceptionList = &local_c;
  local_13c = param_2_00;
  if (((DAT_032ede04 == 0) || (DAT_032ede00 == 0)) || (DAT_032eddfc == 0)) {
    local_130 = auStack_174;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 != '\0') {
      pcStack_158 = (char *)0xb293b7;
      FUN_004325b6();
      local_4 = 0;
      pcStack_158 = (char *)0xb293d0;
      FUN_0043c211();
      local_4 = CONCAT31(local_4._1_3_,1);
      iVar3 = FUN_0084a340();
      if (iVar3 == 0) {
        pcStack_158 = (char *)0xb29401;
        FUN_0084d360();
      }
      else {
        pcStack_158 = local_11c;
        pcStack_15c = (char *)0xb293f5;
        FUN_0084f210();
      }
      pcStack_158 = (char *)0xb2940e;
      FUN_008433c0();
      pcStack_158 = "BuildRemoteList";
      pcStack_15c = (char *)0x148;
      pcStack_160 = "..\\..\\src\\msw\\volume.cpp";
      pcStack_164 = (char *)0x1;
      local_4._0_1_ = 2;
      uStack_168 = 0xb29439;
      uVar5 = FUN_008423d0();
      local_4._0_1_ = 3;
      FUN_008854f0();
      pcStack_15c = (char *)0xb29453;
      pcStack_158 = (char *)uVar5;
      FUN_0083fe90();
      local_4._0_1_ = 2;
      FUN_00842440();
      local_4 = CONCAT31(local_4._1_3_,1);
      FUN_0081b5bc();
      pcStack_158 = (char *)0xb29484;
      _free(local_100);
      if (7 < local_104) {
                    // WARNING: Subroutine does not return
        pcStack_158 = &UNK_00b2949c;
        FUN_00a3f6a1();
      }
      local_104 = 7;
      local_108 = 0;
      local_118 = local_118 & 0xffff0000;
      pcStack_158 = (char *)0xb294c3;
      _free(local_b0);
      if (7 < local_b4) {
                    // WARNING: Subroutine does not return
        pcStack_158 = &UNK_00b294dc;
        FUN_00a3f6a1();
      }
    }
  }
  else if (((param_1_00 & 1) == 0) || ((param_2 & 1) == 0)) {
    pcStack_15c = param_1;
    pcStack_164 = (char *)0xb29066;
    pcStack_160 = param_2_00;
    pcStack_158 = (char *)param_1_00;
    FUN_00b28ce0();
    pcStack_158 = (char *)0xb29075;
    FUN_00855970();
    if ((param_1_00 & 1) == 0) {
      pcStack_158 = (char *)0xb29087;
      FUN_00853ce0();
      pcStack_158 = (char *)(param_1_00 | 1);
      pcStack_160 = local_12c;
      pcStack_15c = param_1;
      local_4 = 4;
      pcStack_164 = (char *)0xb290ac;
      FUN_00b28ce0();
      pcStack_158 = (char *)0xb290bd;
      FUN_00855970();
      uVar6 = *(uint *)(param_2_00 + 4);
      local_134 = local_128 - 1;
      if (-1 < (int)local_134) {
        local_130 = (undefined *)(local_134 * 0x24);
        do {
          uVar6 = uVar6 - 1;
          if ((int)uVar6 < 0) break;
          pcStack_158 = (char *)0xb290f5;
          thunk_FUN_004325d6();
          pcStack_158 = (char *)0xb29102;
          FUN_004325a0();
          local_4._0_1_ = 5;
          pcStack_158 = (char *)0xb29118;
          thunk_FUN_004325d6();
          pcStack_158 = (char *)0xb29125;
          FUN_004325a0();
          local_138 = uVar6 * 0x24;
          local_4._0_1_ = 6;
          while( true ) {
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (local_128 <= local_134)) {
              pcStack_158 = "nIndex < m_nCount";
              pcStack_15c = "wxArrayString::Item";
              pcStack_160 = (char *)0xb3;
              pcStack_164 = "d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h";
              uStack_168 = 0xb29175;
              FUN_00840480();
            }
            pcStack_158 = (char *)0xb2918d;
            FUN_00432231();
            local_4._0_1_ = 7;
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(param_2_00 + 4) <= uVar6)) {
              pcStack_158 = "nIndex < m_nCount";
              pcStack_15c = "wxArrayString::Item";
              pcStack_160 = (char *)0xb3;
              pcStack_164 = "d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h";
              uStack_168 = 0xb291c3;
              FUN_00840480();
            }
            pcStack_158 = (char *)0xb291d7;
            pcStack_158 = (char *)FUN_00432231();
            local_4._0_1_ = 8;
            pcStack_15c = (char *)0xb291e6;
            iVar3 = FUN_00b28660();
            if ((iVar3 < 1) || ((int)uVar6 < 0)) {
              bVar1 = false;
            }
            else {
              bVar1 = true;
            }
            if ((local_e4 != '\0') && (local_ec != 0)) {
              pcStack_158 = (char *)0xb29211;
              _free(*(void **)(local_ec + 0x1c));
              if (*(uint *)(local_ec + 0x18) < 8) {
                *(undefined4 *)(local_ec + 0x18) = 7;
                *(undefined4 *)(local_ec + 0x14) = 0;
                *(undefined2 *)(local_ec + 4) = 0;
                    // WARNING: Subroutine does not return
                pcStack_158 = &UNK_00b29240;
                FUN_00a3f6a1();
              }
                    // WARNING: Subroutine does not return
              pcStack_158 = &UNK_00b29223;
              FUN_00a3f6a1();
            }
            local_4._0_1_ = 6;
            if ((local_f0 != '\0') && (local_f8 != 0)) {
              pcStack_158 = (char *)0xb29263;
              _free(*(void **)(local_f8 + 0x1c));
              if (*(uint *)(local_f8 + 0x18) < 8) {
                *(undefined4 *)(local_f8 + 0x18) = 7;
                *(undefined4 *)(local_f8 + 0x14) = 0;
                *(undefined2 *)(local_f8 + 4) = 0;
                    // WARNING: Subroutine does not return
                pcStack_158 = &UNK_00b29292;
                FUN_00a3f6a1();
              }
                    // WARNING: Subroutine does not return
              pcStack_158 = &UNK_00b29275;
              FUN_00a3f6a1();
            }
            if (!bVar1) break;
            local_138 = local_138 + -0x24;
            uVar6 = uVar6 - 1;
            if ((PTR_FUN_03235c4c != (undefined *)0x0) && (*(uint *)(local_13c + 4) <= uVar6)) {
              pcStack_158 = "nIndex < m_nCount";
              pcStack_15c = "wxArrayString::Item";
              pcStack_160 = (char *)0xb3;
              pcStack_164 = "d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h";
              uStack_168 = 0xb292cf;
              FUN_00840480();
            }
            param_2_00 = local_13c;
            if (local_58 != (char *)(*(int *)(local_13c + 8) + local_138)) {
              pcStack_158 = (char *)0x0;
              pcStack_160 = (char *)0xb292f6;
              pcStack_15c = (char *)(*(int *)(local_13c + 8) + local_138);
              FID_conflict_assign();
              param_2_00 = local_13c;
            }
          }
          if (iVar3 == 0) {
            if ((param_2 & 1) == 0) {
              pcStack_158 = (char *)0xb2931d;
              thunk_FUN_004325d6();
              pcStack_158 = (char *)0xb29323;
              FUN_00b28920();
              pcStack_158 = (char *)0xb2932a;
              puVar4 = (uint *)FUN_00b28760();
              *puVar4 = *puVar4 | 1;
            }
            else {
              pcStack_15c = (char *)0xb29315;
              pcStack_158 = (char *)uVar6;
              FUN_008543e0();
            }
          }
          FUN_0040159c();
          local_4 = CONCAT31(local_4._1_3_,4);
          FUN_0040159c();
          local_130 = local_130 + -0x24;
          local_134 = local_134 - 1;
          param_2_00 = local_13c;
        } while (-1 < (int)local_134);
      }
      local_4 = 0xffffffff;
      FUN_00853f30();
    }
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00b29510(undefined4 param_1,uint param_2,uint param_3)

{
  WCHAR *pWVar1;
  LPWSTR pWVar2;
  WCHAR WVar3;
  longlong lVar4;
  bool bVar5;
  bool bVar6;
  char cVar7;
  uint uVar8;
  DWORD nBufferLength;
  LPWSTR lpBuffer;
  LPWSTR pWVar9;
  int iVar10;
  uint uStack_60;
  int iStack_5c;
  undefined auStack_54 [4];
  uint uStack_50;
  undefined4 uStack_40;
  uint uStack_3c;
  void *pvStack_38;
  undefined auStack_30 [4];
  undefined4 uStack_2c;
  uint uStack_18;
  void *pvStack_14;
  void *local_c;
  undefined *puStack_8;
  uint local_4;
  
  puStack_8 = &LAB_00bf5312;
  local_c = ExceptionList;
  uVar8 = DAT_0323f878 ^ (uint)&stack0xffffff84;
  ExceptionList = &local_c;
  bVar5 = false;
  local_4 = 0;
  InterlockedExchange(&DAT_032ede08,0);
  if (DAT_032ede0c == 0) {
    FUN_004325b6(L"mpr.dll");
    bVar5 = true;
    local_4 = 1;
    cVar7 = FUN_0089ed30(auStack_54,2);
    bVar6 = true;
    if (cVar7 != '\0') goto LAB_00b29596;
  }
  bVar6 = false;
LAB_00b29596:
  local_4 = 0;
  if (bVar5) {
    _free(pvStack_38);
    if (7 < uStack_3c) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_50,uVar8);
    }
    uStack_3c = 7;
    uStack_40 = 0;
    uStack_50 = uStack_50 & 0xffff0000;
  }
  if (bVar6) {
    FUN_004325b6(L"WNetOpenEnumW");
    local_4 = 2;
    DAT_032ede04 = FUN_0089f060(auStack_30,0);
    local_4 = local_4 & 0xffffff00;
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    FUN_004325b6(L"WNetEnumResourceW");
    local_4 = 3;
    DAT_032ede00 = FUN_0089f060(auStack_30,0);
    local_4 = local_4 & 0xffffff00;
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
    FUN_004325b6(L"WNetCloseEnum");
    local_4 = 4;
    DAT_032eddfc = FUN_0089f060(auStack_30,0);
    local_4 = local_4 & 0xffffff00;
    _free(pvStack_14);
    if (7 < uStack_18) {
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(uStack_2c);
    }
  }
  FUN_00853ce0(0);
  local_4 = 0;
  nBufferLength = GetLogicalDriveStringsW(0,(LPWSTR)0x0);
  lVar4 = (ulonglong)(nBufferLength + 1) * 2;
  lpBuffer = (LPWSTR)FUN_00823c23(-(uint)((int)((ulonglong)lVar4 >> 0x20) != 0) | (uint)lVar4);
  GetLogicalDriveStringsW(nBufferLength,lpBuffer);
  WVar3 = *lpBuffer;
  pWVar2 = lpBuffer;
  while (WVar3 != L'\0') {
    FUN_00b28be0(param_1,param_2,param_3);
    pWVar9 = pWVar2;
    do {
      WVar3 = *pWVar9;
      pWVar9 = pWVar9 + 1;
    } while (WVar3 != L'\0');
    iVar10 = (int)pWVar9 - (int)(pWVar2 + 1) >> 1;
    pWVar1 = pWVar2 + iVar10 + 1;
    pWVar2 = pWVar2 + iVar10 + 1;
    WVar3 = *pWVar1;
  }
  FUN_00a3f66c(lpBuffer);
  if (((param_3 & 8) == 0) && ((param_2 & 2) == 0)) {
    FUN_00853ce0(0);
    local_4 = 5;
    cVar7 = FUN_00b28fd0(0,param_3);
    if ((cVar7 != '\0') && (uVar8 = 0, uStack_60 != 0)) {
      iVar10 = 0;
      do {
        if ((PTR_FUN_03235c4c != (undefined *)0x0) && (uStack_60 <= uVar8)) {
          FUN_00840480("d:\\wxWidgets-2.9.3\\include\\wx/arrstr.h",0xb3,"wxArrayString::Item",
                       "nIndex < m_nCount",L"wxArrayString: index out of bounds");
        }
        FUN_00854700(iVar10 + iStack_5c,1);
        uVar8 = uVar8 + 1;
        iVar10 = iVar10 + 0x24;
      } while (uVar8 < uStack_60);
    }
    local_4 = local_4 & 0xffffff00;
    FUN_00853f30();
  }
  ExceptionList = local_c;
  return param_1;
}



void __thiscall FUN_00b29860(int param_1_00,int param_1)

{
  WCHAR WVar1;
  char cVar2;
  LPCWSTR pszPath;
  DWORD_PTR DVar3;
  int iVar4;
  WCHAR *pWVar5;
  undefined4 uStack_3a0;
  undefined4 uStack_39c;
  char *pcStack_398;
  undefined4 uStack_394;
  undefined4 *apuStack_374 [2];
  uint uStack_36c;
  undefined4 uStack_35c;
  uint uStack_358;
  void *pvStack_354;
  uint uStack_320;
  void *pvStack_31c;
  SHFILEINFOW local_2c4;
  uint local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 uStack_4;
  
  uStack_4 = 0xffffffff;
  puStack_8 = &LAB_00bf5367;
  local_c = ExceptionList;
  local_10 = DAT_0323f878 ^ (uint)apuStack_374;
  ExceptionList = &local_c;
  *(undefined *)(param_1_00 + 0x48) = 0;
  if (param_1_00 != param_1) {
    FID_conflict_assign();
  }
  if (*(uint *)(param_1_00 + 0x18) < 8) {
    pszPath = (LPCWSTR)(param_1_00 + 4);
  }
  else {
    pszPath = *(LPCWSTR *)(param_1_00 + 4);
  }
  uStack_394 = 0xb298dc;
  DVar3 = SHGetFileInfoW(pszPath,0,&local_2c4,0x2b4,0x200);
  if (DVar3 == 0) {
    apuStack_374[0] = &uStack_3a0;
    FUN_0043c211(&DAT_00d25fa0);
    cVar2 = FUN_00846b30(1);
    if (cVar2 != '\0') {
      FUN_004325b6();
      uStack_4 = 0;
      FUN_0043c211();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      iVar4 = FUN_0084a340();
      if (iVar4 == 0) {
        FUN_0084d360();
      }
      else {
        FUN_0084f210();
      }
      FUN_008433c0();
      apuStack_374[0] = (undefined4 *)&stack0xfffffc78;
      FUN_00432231();
      uStack_394 = 0x1fc;
      pcStack_398 = "..\\..\\src\\msw\\volume.cpp";
      uStack_39c = 1;
      uStack_4._0_1_ = 3;
      uStack_3a0 = 0xb299a8;
      FUN_008423d0();
      uStack_4._0_1_ = 5;
      FUN_00848860();
      uStack_4._0_1_ = 2;
      FUN_00842440();
      uStack_4 = CONCAT31(uStack_4._1_3_,1);
      FUN_0081b5bc();
      _free(pvStack_354);
      if (7 < uStack_358) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
      uStack_358 = 7;
      uStack_35c = 0;
      uStack_36c = uStack_36c & 0xffff0000;
      _free(pvStack_31c);
      if (7 < uStack_320) {
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1();
      }
    }
  }
  else {
    pWVar5 = local_2c4.szDisplayName;
    do {
      WVar1 = *pWVar5;
      pWVar5 = pWVar5 + 1;
    } while (WVar1 != L'\0');
    FID_conflict_assign();
    *(undefined *)(param_1_00 + 0x48) = 1;
  }
  ExceptionList = local_c;
  ___security_check_cookie_4();
  return;
}



int __thiscall FUN_00b29aa0(int param_1_00,undefined4 param_1)

{
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  puStack_8 = &LAB_00bf53b3;
  local_c = ExceptionList;
  ExceptionList = &local_c;
  *(undefined4 *)(param_1_00 + 0x18) = 7;
  *(undefined4 *)(param_1_00 + 0x14) = 0;
  *(undefined2 *)(param_1_00 + 4) = 0;
  *(undefined4 *)(param_1_00 + 0x1c) = 0;
  *(undefined4 *)(param_1_00 + 0x3c) = 7;
  *(undefined4 *)(param_1_00 + 0x38) = 0;
  *(undefined2 *)(param_1_00 + 0x28) = 0;
  *(undefined4 *)(param_1_00 + 0x40) = 0;
  local_4 = 1;
  FUN_00b29860(param_1);
  ExceptionList = local_c;
  return param_1_00;
}



undefined4 __fastcall FUN_00b29b20(int param_1)

{
  return *(undefined4 *)(param_1 + 0x38);
}



int * __thiscall FUN_00b29b30(int param_1_00,int *param_1,int *param_2)

{
  int **ppiVar1;
  void **ppvVar2;
  uint uVar3;
  void **ppvVar4;
  int *piVar5;
  int *piVar6;
  void **ppvVar7;
  int *local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 local_10;
  void *local_c;
  undefined *puStack_8;
  undefined4 local_4;
  
  local_4 = 0xffffffff;
  puStack_8 = &LAB_00bf53d8;
  local_c = ExceptionList;
  uVar3 = DAT_0323f878 ^ (uint)&stack0xffffffd4;
  ExceptionList = &local_c;
  ppiVar1 = (int **)(param_1_00 + 0x40);
  piVar5 = param_1;
  piVar6 = param_2;
  if (*(int *)(*(int *)(param_1_00 + 0x40) + 8) != 0) {
    FUN_0087acf0(param_1,param_2);
    piVar5 = (int *)**ppiVar1;
    piVar6 = (int *)(*ppiVar1)[2];
  }
  FUN_00862090(&local_1c,piVar5,piVar6,&local_18);
  local_4 = 0;
  if (*local_1c == 0) {
    if (piVar5 == param_1) {
      FUN_0087acf0(piVar5,piVar6);
    }
    local_4 = 0xffffffff;
    FUN_0083f900(uVar3);
  }
  else {
    ppvVar4 = (void **)operator_new(0x10);
    ppvVar7 = (void **)0x0;
    if (ppvVar4 != (void **)0x0) {
      *ppvVar4 = (void *)0x0;
      ppvVar4[1] = (void *)0x0;
      ppvVar4[2] = (void *)0x0;
      ppvVar4[3] = (void *)0x0;
      ppvVar7 = ppvVar4;
    }
    ppvVar7[3] = (void *)((int)ppvVar7[3] + 1);
    if (&param_1 != ppiVar1) {
      ppvVar2 = (void **)*ppiVar1;
      ppvVar4 = ppvVar2 + 3;
      *ppvVar4 = (void *)((int)*ppvVar4 + -1);
      if (*ppvVar4 == (void *)0x0) {
        _free(*ppvVar2);
                    // WARNING: Subroutine does not return
        FUN_00a3f6a1(ppvVar2);
      }
      *ppiVar1 = (int *)ppvVar7;
      ppvVar7[3] = (void *)((int)ppvVar7[3] + 1);
    }
    ppvVar4 = ppvVar7 + 3;
    *ppvVar4 = (void *)((int)*ppvVar4 + -1);
    if (*ppvVar4 == (void *)0x0) {
      _free(*ppvVar7);
                    // WARNING: Subroutine does not return
      FUN_00a3f6a1(ppvVar7);
    }
    FUN_00820ebc(&local_14,*local_1c,local_18);
    FUN_00473ccc(local_14,local_10);
    piVar5 = param_2;
    *(int *)(param_1_00 + 0x38) = *(int *)(param_1_00 + 0x38) + (int)param_2;
    local_4 = 0xffffffff;
    FUN_0083f900();
    param_2 = piVar5;
  }
  ExceptionList = local_c;
  return param_2;
}



undefined4 FUN_00b29ca0(void)

{
  int *piVar1;
  int iVar2;
  int *unaff_ESI;
  
  *(undefined4 *)(*unaff_ESI + 0x14) = 0x66;
  (**(code **)(*unaff_ESI + 4))();
  if (*(int *)(unaff_ESI[0x6e] + 0xc) != 0) {
    *(undefined4 *)(*unaff_ESI + 0x14) = 0x3d;
    (**(code **)*unaff_ESI)();
  }
  piVar1 = unaff_ESI + 0x3d;
  iVar2 = 0x10;
  do {
    *(undefined *)(piVar1 + -4) = 0;
    *(undefined *)piVar1 = 1;
    *(undefined *)(piVar1 + 4) = 5;
    piVar1 = (int *)((int)piVar1 + 1);
    iVar2 = iVar2 + -1;
  } while (iVar2 != 0);
  unaff_ESI[0x45] = 0;
  unaff_ESI[10] = 0;
  unaff_ESI[0x4b] = 0;
  unaff_ESI[0x46] = 0;
  *(undefined *)((int)unaff_ESI + 0x11e) = 0;
  unaff_ESI[0x49] = 0;
  *(undefined *)(unaff_ESI + 0x4a) = 0;
  *(undefined *)(unaff_ESI + 0x47) = 1;
  *(undefined *)((int)unaff_ESI + 0x11d) = 1;
  *(undefined2 *)(unaff_ESI + 0x48) = 1;
  *(undefined2 *)((int)unaff_ESI + 0x122) = 1;
  *(undefined4 *)(unaff_ESI[0x6e] + 0xc) = 1;
  return 1;
}



undefined4 __fastcall FUN_00b29d50(int param_1)

{
  byte bVar1;
  byte bVar2;
  byte **ppbVar3;
  int in_EAX;
  int iVar4;
  byte *pbVar5;
  uint *puVar6;
  int *unaff_ESI;
  byte *pbVar7;
  byte *pbVar8;
  uint local_8;
  
  ppbVar3 = (byte **)unaff_ESI[6];
  pbVar5 = ppbVar3[1];
  pbVar7 = *ppbVar3;
  unaff_ESI[0x37] = in_EAX;
  unaff_ESI[0x38] = param_1;
  if (pbVar5 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar7 = *ppbVar3;
    pbVar5 = ppbVar3[1];
  }
  bVar1 = *pbVar7;
  pbVar5 = pbVar5 + -1;
  pbVar7 = pbVar7 + 1;
  if (pbVar5 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar7 = *ppbVar3;
    pbVar5 = ppbVar3[1];
  }
  bVar2 = *pbVar7;
  pbVar5 = pbVar5 + -1;
  pbVar7 = pbVar7 + 1;
  if (pbVar5 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar7 = *ppbVar3;
    pbVar5 = ppbVar3[1];
  }
  pbVar5 = pbVar5 + -1;
  pbVar8 = pbVar7 + 1;
  unaff_ESI[0x35] = (uint)*pbVar7;
  if (pbVar5 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar8 = *ppbVar3;
    pbVar5 = ppbVar3[1];
  }
  pbVar5 = pbVar5 + -1;
  pbVar7 = pbVar8 + 1;
  unaff_ESI[8] = (uint)*pbVar8 << 8;
  if (pbVar5 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar7 = *ppbVar3;
    pbVar5 = ppbVar3[1];
  }
  unaff_ESI[8] = unaff_ESI[8] + (uint)*pbVar7;
  pbVar5 = pbVar5 + -1;
  pbVar7 = pbVar7 + 1;
  if (pbVar5 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar7 = *ppbVar3;
    pbVar5 = ppbVar3[1];
  }
  pbVar5 = pbVar5 + -1;
  pbVar8 = pbVar7 + 1;
  unaff_ESI[7] = (uint)*pbVar7 << 8;
  if (pbVar5 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar8 = *ppbVar3;
    pbVar5 = ppbVar3[1];
  }
  unaff_ESI[7] = unaff_ESI[7] + (uint)*pbVar8;
  pbVar5 = pbVar5 + -1;
  pbVar8 = pbVar8 + 1;
  if (pbVar5 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar8 = *ppbVar3;
    pbVar5 = ppbVar3[1];
  }
  iVar4 = *unaff_ESI;
  unaff_ESI[9] = (uint)*pbVar8;
  *(int *)(iVar4 + 0x18) = unaff_ESI[0x68];
  *(int *)(iVar4 + 0x1c) = unaff_ESI[7];
  *(int *)(iVar4 + 0x20) = unaff_ESI[8];
  *(int *)(iVar4 + 0x24) = unaff_ESI[9];
  *(undefined4 *)(*unaff_ESI + 0x14) = 100;
  pbVar5 = pbVar5 + -1;
  pbVar8 = pbVar8 + 1;
  (**(code **)(*unaff_ESI + 4))();
  if (*(int *)(unaff_ESI[0x6e] + 0x10) != 0) {
    *(undefined4 *)(*unaff_ESI + 0x14) = 0x3a;
    (**(code **)*unaff_ESI)();
  }
  if (((unaff_ESI[8] == 0) || (unaff_ESI[7] == 0)) || (unaff_ESI[9] < 1)) {
    *(undefined4 *)(*unaff_ESI + 0x14) = 0x20;
    (**(code **)*unaff_ESI)();
  }
  if ((uint)bVar1 * 0x100 + (uint)bVar2 + -8 != unaff_ESI[9] * 3) {
    *(undefined4 *)(*unaff_ESI + 0x14) = 0xb;
    (**(code **)*unaff_ESI)();
  }
  if (unaff_ESI[0x36] == 0) {
    iVar4 = (**(code **)unaff_ESI[1])();
    unaff_ESI[0x36] = iVar4;
  }
  puVar6 = (uint *)unaff_ESI[0x36];
  local_8 = 0;
  if (0 < unaff_ESI[9]) {
    do {
      puVar6[1] = local_8;
      if (pbVar5 == (byte *)0x0) {
        iVar4 = (*(code *)ppbVar3[3])();
        if (iVar4 == 0) {
          return 0;
        }
        pbVar8 = *ppbVar3;
        pbVar5 = ppbVar3[1];
      }
      pbVar5 = pbVar5 + -1;
      pbVar7 = pbVar8 + 1;
      *puVar6 = (uint)*pbVar8;
      if (pbVar5 == (byte *)0x0) {
        iVar4 = (*(code *)ppbVar3[3])();
        if (iVar4 == 0) {
          return 0;
        }
        pbVar7 = *ppbVar3;
        pbVar5 = ppbVar3[1];
      }
      bVar1 = *pbVar7;
      pbVar5 = pbVar5 + -1;
      pbVar7 = pbVar7 + 1;
      puVar6[2] = (int)(uint)bVar1 >> 4;
      puVar6[3] = bVar1 & 0xf;
      if (pbVar5 == (byte *)0x0) {
        iVar4 = (*(code *)ppbVar3[3])();
        if (iVar4 == 0) {
          return 0;
        }
        pbVar7 = *ppbVar3;
        pbVar5 = ppbVar3[1];
      }
      puVar6[4] = (uint)*pbVar7;
      iVar4 = *unaff_ESI;
      *(uint *)(iVar4 + 0x18) = *puVar6;
      *(uint *)(iVar4 + 0x1c) = puVar6[2];
      *(uint *)(iVar4 + 0x20) = puVar6[3];
      *(uint *)(iVar4 + 0x24) = puVar6[4];
      *(undefined4 *)(*unaff_ESI + 0x14) = 0x65;
      pbVar5 = pbVar5 + -1;
      pbVar8 = pbVar7 + 1;
      (**(code **)(*unaff_ESI + 4))();
      local_8 = local_8 + 1;
      puVar6 = puVar6 + 0x15;
    } while ((int)local_8 < unaff_ESI[9]);
  }
  *(undefined4 *)(unaff_ESI[0x6e] + 0x10) = 1;
  *ppbVar3 = pbVar8;
  ppbVar3[1] = pbVar5;
  return 1;
}



undefined4 FUN_00b2a060(void)

{
  byte bVar1;
  byte bVar2;
  byte **ppbVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  byte *pbVar7;
  byte *pbVar8;
  int *unaff_ESI;
  byte *pbVar9;
  uint *puVar10;
  uint **ppuStack_10;
  int iStack_8;
  
  ppbVar3 = (byte **)unaff_ESI[6];
  pbVar7 = *ppbVar3;
  pbVar9 = ppbVar3[1];
  if (*(int *)(unaff_ESI[0x6e] + 0x10) == 0) {
    *(undefined4 *)(*unaff_ESI + 0x14) = 0x3e;
    (**(code **)*unaff_ESI)();
  }
  if (pbVar9 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar9 = ppbVar3[1];
    pbVar7 = *ppbVar3;
  }
  bVar1 = *pbVar7;
  pbVar9 = pbVar9 + -1;
  pbVar7 = pbVar7 + 1;
  if (pbVar9 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar9 = ppbVar3[1];
    pbVar7 = *ppbVar3;
  }
  bVar2 = *pbVar7;
  pbVar9 = pbVar9 + -1;
  pbVar7 = pbVar7 + 1;
  if (pbVar9 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar9 = ppbVar3[1];
    pbVar7 = *ppbVar3;
  }
  uVar5 = (uint)*pbVar7;
  *(undefined4 *)(*unaff_ESI + 0x14) = 0x67;
  *(uint *)(*unaff_ESI + 0x18) = uVar5;
  pbVar9 = pbVar9 + -1;
  pbVar7 = pbVar7 + 1;
  (**(code **)(*unaff_ESI + 4))();
  if ((((uint)CONCAT11(bVar1,bVar2) != uVar5 * 2 + 6) || (uVar5 == 0)) || (4 < uVar5)) {
    *(undefined4 *)(*unaff_ESI + 0x14) = 0xb;
    (**(code **)*unaff_ESI)();
  }
  unaff_ESI[0x52] = uVar5;
  iStack_8 = 0;
  if (uVar5 != 0) {
    ppuStack_10 = (uint **)(unaff_ESI + 0x53);
    do {
      if (pbVar9 == (byte *)0x0) {
        iVar4 = (*(code *)ppbVar3[3])();
        if (iVar4 == 0) {
          return 0;
        }
        pbVar9 = ppbVar3[1];
        pbVar7 = *ppbVar3;
      }
      uVar6 = (uint)*pbVar7;
      pbVar9 = pbVar9 + -1;
      pbVar7 = pbVar7 + 1;
      if (pbVar9 == (byte *)0x0) {
        iVar4 = (*(code *)ppbVar3[3])();
        if (iVar4 == 0) {
          return 0;
        }
        pbVar9 = ppbVar3[1];
        pbVar7 = *ppbVar3;
      }
      bVar1 = *pbVar7;
      pbVar9 = pbVar9 + -1;
      iVar4 = 0;
      pbVar7 = pbVar7 + 1;
      puVar10 = (uint *)unaff_ESI[0x36];
      if (0 < unaff_ESI[9]) {
        do {
          if (uVar6 == *puVar10) goto LAB_00b2a202;
          iVar4 = iVar4 + 1;
          puVar10 = puVar10 + 0x15;
        } while (iVar4 < unaff_ESI[9]);
      }
      *(undefined4 *)(*unaff_ESI + 0x14) = 5;
      *(uint *)(*unaff_ESI + 0x18) = uVar6;
      (**(code **)*unaff_ESI)();
LAB_00b2a202:
      *ppuStack_10 = puVar10;
      puVar10[5] = (int)(uint)bVar1 >> 4;
      puVar10[6] = bVar1 & 0xf;
      iVar4 = *unaff_ESI;
      *(uint *)(iVar4 + 0x18) = uVar6;
      *(uint *)(iVar4 + 0x1c) = puVar10[5];
      *(uint *)(iVar4 + 0x20) = puVar10[6];
      *(undefined4 *)(*unaff_ESI + 0x14) = 0x68;
      (**(code **)(*unaff_ESI + 4))();
      ppuStack_10 = ppuStack_10 + 1;
      iStack_8 = iStack_8 + 1;
    } while (iStack_8 < (int)uVar5);
  }
  if (pbVar9 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar9 = ppbVar3[1];
    pbVar7 = *ppbVar3;
  }
  pbVar9 = pbVar9 + -1;
  pbVar8 = pbVar7 + 1;
  unaff_ESI[100] = (uint)*pbVar7;
  if (pbVar9 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar9 = ppbVar3[1];
    pbVar8 = *ppbVar3;
  }
  pbVar9 = pbVar9 + -1;
  pbVar7 = pbVar8 + 1;
  unaff_ESI[0x65] = (uint)*pbVar8;
  if (pbVar9 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar9 = ppbVar3[1];
    pbVar7 = *ppbVar3;
  }
  bVar1 = *pbVar7;
  unaff_ESI[0x67] = bVar1 & 0xf;
  iVar4 = *unaff_ESI;
  unaff_ESI[0x66] = (int)(uint)bVar1 >> 4;
  *(int *)(iVar4 + 0x18) = unaff_ESI[100];
  *(int *)(iVar4 + 0x1c) = unaff_ESI[0x65];
  *(int *)(iVar4 + 0x20) = unaff_ESI[0x66];
  *(int *)(iVar4 + 0x24) = unaff_ESI[0x67];
  *(undefined4 *)(*unaff_ESI + 0x14) = 0x69;
  (**(code **)(*unaff_ESI + 4))();
  *(undefined4 *)(unaff_ESI[0x6e] + 0x14) = 0;
  unaff_ESI[0x24] = unaff_ESI[0x24] + 1;
  ppbVar3[1] = pbVar9 + -1;
  *ppbVar3 = pbVar7 + 1;
  return 1;
}



void FUN_00b2a360(int *param_1)

{
  byte **ppbVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  uint *puVar5;
  byte *pbVar6;
  byte *pbVar7;
  uint **ppuVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  byte *pbStack_12c;
  int local_128;
  int iStack_124;
  byte **local_120;
  uint uStack_11c;
  undefined4 uStack_118;
  uint uStack_114;
  uint uStack_110;
  uint uStack_10c;
  byte bStack_108;
  undefined4 auStack_104 [64];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&pbStack_12c;
  ppbVar1 = (byte **)param_1[6];
  pbVar7 = ppbVar1[1];
  pbVar6 = *ppbVar1;
  local_120 = ppbVar1;
  if (pbVar7 == (byte *)0x0) {
    iVar2 = (*(code *)ppbVar1[3])(param_1);
    if (iVar2 == 0) goto LAB_00b2a65d;
    pbVar7 = ppbVar1[1];
    pbVar6 = *ppbVar1;
  }
  pbVar7 = pbVar7 + -1;
  local_128 = (uint)*pbVar6 << 8;
  pbVar6 = pbVar6 + 1;
  if (pbVar7 == (byte *)0x0) {
    iVar2 = (*(code *)ppbVar1[3])(param_1);
    if (iVar2 == 0) goto LAB_00b2a65d;
    pbVar7 = ppbVar1[1];
    pbVar6 = *ppbVar1;
  }
  local_128 = local_128 + (uint)*pbVar6 + -2;
  pbVar6 = pbVar6 + 1;
  pbVar7 = pbVar7 + -1;
  while (0x10 < local_128) {
    if (pbVar7 == (byte *)0x0) {
      iVar2 = (*(code *)ppbVar1[3])(param_1);
      if (iVar2 == 0) goto LAB_00b2a65d;
      pbVar7 = ppbVar1[1];
      pbVar6 = *ppbVar1;
      pbStack_12c = pbVar7;
    }
    uStack_11c = (uint)*pbVar6;
    *(undefined4 *)(*param_1 + 0x14) = 0x50;
    *(uint *)(*param_1 + 0x18) = uStack_11c;
    pbVar7 = pbVar7 + -1;
    pbVar6 = pbVar6 + 1;
    (**(code **)(*param_1 + 4))(param_1,1);
    uStack_118 = uStack_118 & 0xffffff00;
    iStack_124 = 0;
    iVar2 = 1;
    do {
      ppbVar1 = local_120;
      if (pbVar7 == (byte *)0x0) {
        iVar3 = (*(code *)local_120[3])(param_1);
        if (iVar3 == 0) goto LAB_00b2a65d;
        pbVar7 = ppbVar1[1];
        pbVar6 = *ppbVar1;
      }
      iStack_124 = iStack_124 + (uint)*pbVar6;
      *(byte *)((int)&uStack_118 + iVar2) = *pbVar6;
      pbVar7 = pbVar7 + -1;
      iVar2 = iVar2 + 1;
      pbVar6 = pbVar6 + 1;
      pbStack_12c = pbVar7;
    } while (iVar2 < 0x11);
    iVar2 = *param_1;
    local_128 = local_128 + -0x11;
    *(uint *)(iVar2 + 0x18) = uStack_118 >> 8 & 0xff;
    *(uint *)(iVar2 + 0x1c) = uStack_118 >> 0x10 & 0xff;
    *(uint *)(iVar2 + 0x20) = uStack_118 >> 0x18;
    *(uint *)(iVar2 + 0x24) = uStack_114 & 0xff;
    *(uint *)(iVar2 + 0x28) = uStack_114 >> 8 & 0xff;
    *(uint *)(iVar2 + 0x2c) = uStack_114 >> 0x10 & 0xff;
    *(uint *)(iVar2 + 0x30) = uStack_114 >> 0x18;
    *(uint *)(iVar2 + 0x34) = uStack_110 & 0xff;
    *(undefined4 *)(*param_1 + 0x14) = 0x56;
    (**(code **)(*param_1 + 4))(param_1,2);
    iVar2 = *param_1;
    *(uint *)(iVar2 + 0x18) = uStack_110 >> 8 & 0xff;
    *(uint *)(iVar2 + 0x1c) = uStack_110 >> 0x10 & 0xff;
    *(uint *)(iVar2 + 0x20) = uStack_110 >> 0x18;
    *(uint *)(iVar2 + 0x24) = uStack_10c & 0xff;
    *(uint *)(iVar2 + 0x28) = uStack_10c >> 8 & 0xff;
    *(uint *)(iVar2 + 0x2c) = uStack_10c >> 0x10 & 0xff;
    *(uint *)(iVar2 + 0x30) = uStack_10c >> 0x18;
    *(uint *)(iVar2 + 0x34) = (uint)bStack_108;
    *(undefined4 *)(*param_1 + 0x14) = 0x56;
    (**(code **)(*param_1 + 4))(param_1,2);
    if ((0x100 < iStack_124) || (local_128 < iStack_124)) {
      *(undefined4 *)(*param_1 + 0x14) = 8;
      (**(code **)*param_1)(param_1);
    }
    iVar3 = 0;
    iVar2 = iStack_124;
    if (0 < iStack_124) {
      do {
        ppbVar1 = local_120;
        if (pbVar7 == (byte *)0x0) {
          iVar2 = (*(code *)local_120[3])(param_1);
          if (iVar2 == 0) goto LAB_00b2a65d;
          pbVar7 = ppbVar1[1];
          pbVar6 = *ppbVar1;
          iVar2 = iStack_124;
        }
        *(byte *)((int)auStack_104 + iVar3) = *pbVar6;
        pbVar7 = pbVar7 + -1;
        iVar3 = iVar3 + 1;
        pbVar6 = pbVar6 + 1;
        pbStack_12c = pbVar7;
      } while (iVar3 < iVar2);
    }
    local_128 = local_128 - iVar2;
    if ((uStack_11c & 0x10) == 0) {
      iVar2 = uStack_11c + 0x2d;
      uVar4 = uStack_11c;
    }
    else {
      iVar2 = uStack_11c + 0x21;
      uVar4 = uStack_11c - 0x10;
    }
    ppuVar8 = (uint **)(param_1 + iVar2);
    if (((int)uVar4 < 0) || (3 < (int)uVar4)) {
      *(undefined4 *)(*param_1 + 0x14) = 0x1e;
      *(uint *)(*param_1 + 0x18) = uVar4;
      (**(code **)*param_1)(param_1);
    }
    if (*ppuVar8 == (uint *)0x0) {
      puVar5 = (uint *)FUN_00b2ced0(param_1);
      *ppuVar8 = puVar5;
    }
    puVar5 = *ppuVar8;
    *puVar5 = uStack_118;
    puVar5[1] = uStack_114;
    puVar5[2] = uStack_110;
    puVar5[3] = uStack_10c;
    *(byte *)(puVar5 + 4) = bStack_108;
    puVar9 = auStack_104;
    puVar10 = (undefined4 *)((int)*ppuVar8 + 0x11);
    for (iVar2 = 0x40; ppbVar1 = local_120, pbVar7 = pbStack_12c, iVar2 != 0; iVar2 = iVar2 + -1) {
      *puVar10 = *puVar9;
      puVar9 = puVar9 + 1;
      puVar10 = puVar10 + 1;
    }
  }
  if (local_128 != 0) {
    *(undefined4 *)(*param_1 + 0x14) = 0xb;
    (**(code **)*param_1)(param_1);
  }
  *ppbVar1 = pbVar6;
  ppbVar1[1] = pbVar7;
LAB_00b2a65d:
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00b2a680(void)

{
  byte bVar1;
  byte **ppbVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  byte *pbVar7;
  byte *pbVar8;
  byte *pbVar9;
  ushort uVar10;
  uint uVar11;
  ushort *puVar12;
  int *unaff_EDI;
  int *piStack_c;
  int iStack_8;
  
  ppbVar2 = (byte **)unaff_EDI[6];
  pbVar9 = ppbVar2[1];
  pbVar7 = *ppbVar2;
  if (pbVar9 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar2[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar7 = *ppbVar2;
    pbVar9 = ppbVar2[1];
  }
  bVar1 = *pbVar7;
  pbVar9 = pbVar9 + -1;
  pbVar7 = pbVar7 + 1;
  if (pbVar9 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar2[3])();
    if (iVar4 == 0) {
      return 0;
    }
    pbVar7 = *ppbVar2;
    pbVar9 = ppbVar2[1];
  }
  pbVar9 = pbVar9 + -1;
  pbVar8 = pbVar7 + 1;
  iVar4 = CONCAT11(bVar1,*pbVar7) - 2;
  do {
    iVar3 = iVar4;
    if (iVar3 < 1) {
      if (iVar3 != 0) {
        *(undefined4 *)(*unaff_EDI + 0x14) = 0xb;
        (**(code **)*unaff_EDI)();
      }
      *ppbVar2 = pbVar8;
      ppbVar2[1] = pbVar9;
      return 1;
    }
    if (pbVar9 == (byte *)0x0) {
      iVar4 = (*(code *)ppbVar2[3])();
      if (iVar4 == 0) {
        return 0;
      }
      pbVar8 = *ppbVar2;
      pbVar9 = ppbVar2[1];
    }
    bVar1 = *pbVar8;
    *(undefined4 *)(*unaff_EDI + 0x14) = 0x51;
    iVar5 = (int)(uint)bVar1 >> 4;
    uVar11 = bVar1 & 0xf;
    *(uint *)(*unaff_EDI + 0x18) = uVar11;
    *(int *)(*unaff_EDI + 0x1c) = iVar5;
    pbVar9 = pbVar9 + -1;
    pbVar8 = pbVar8 + 1;
    (**(code **)(*unaff_EDI + 4))();
    if (3 < uVar11) {
      *(undefined4 *)(*unaff_EDI + 0x14) = 0x1f;
      *(uint *)(*unaff_EDI + 0x18) = uVar11;
      (**(code **)*unaff_EDI)();
    }
    if (unaff_EDI[uVar11 + 0x29] == 0) {
      iVar4 = FUN_00b2cea0();
      unaff_EDI[uVar11 + 0x29] = iVar4;
    }
    iVar4 = unaff_EDI[uVar11 + 0x29];
    piStack_c = &DAT_00dcfa38;
    do {
      if (iVar5 == 0) {
        if (pbVar9 == (byte *)0x0) {
          iVar6 = (*(code *)ppbVar2[3])();
          if (iVar6 == 0) {
            return 0;
          }
          pbVar8 = *ppbVar2;
          pbVar9 = ppbVar2[1];
        }
        uVar10 = (ushort)*pbVar8;
      }
      else {
        if (pbVar9 == (byte *)0x0) {
          iVar6 = (*(code *)ppbVar2[3])();
          if (iVar6 == 0) {
            return 0;
          }
          pbVar8 = *ppbVar2;
          pbVar9 = ppbVar2[1];
        }
        bVar1 = *pbVar8;
        pbVar9 = pbVar9 + -1;
        pbVar8 = pbVar8 + 1;
        if (pbVar9 == (byte *)0x0) {
          iVar6 = (*(code *)ppbVar2[3])();
          if (iVar6 == 0) {
            return 0;
          }
          pbVar8 = *ppbVar2;
          pbVar9 = ppbVar2[1];
        }
        uVar10 = CONCAT11(bVar1,*pbVar8);
      }
      iVar6 = *piStack_c;
      piStack_c = piStack_c + 1;
      pbVar9 = pbVar9 + -1;
      pbVar8 = pbVar8 + 1;
      *(ushort *)(iVar4 + iVar6 * 2) = uVar10;
    } while ((int)piStack_c < 0xdcfb38);
    if (1 < *(int *)(*unaff_EDI + 0x68)) {
      puVar12 = (ushort *)(iVar4 + 4);
      iStack_8 = 8;
      do {
        iVar4 = *unaff_EDI;
        *(uint *)(iVar4 + 0x18) = (uint)puVar12[-2];
        *(uint *)(iVar4 + 0x1c) = (uint)puVar12[-1];
        *(uint *)(iVar4 + 0x20) = (uint)*puVar12;
        *(uint *)(iVar4 + 0x24) = (uint)puVar12[1];
        *(uint *)(iVar4 + 0x28) = (uint)puVar12[2];
        *(uint *)(iVar4 + 0x2c) = (uint)puVar12[3];
        *(uint *)(iVar4 + 0x30) = (uint)puVar12[4];
        *(uint *)(iVar4 + 0x34) = (uint)puVar12[5];
        *(undefined4 *)(*unaff_EDI + 0x14) = 0x5d;
        (**(code **)(*unaff_EDI + 4))();
        puVar12 = puVar12 + 8;
        iStack_8 = iStack_8 + -1;
      } while (iStack_8 != 0);
    }
    iVar4 = iVar3 + -0x41;
    if (iVar5 != 0) {
      iVar4 = iVar3 + -0x81;
    }
  } while( true );
}



undefined4 FUN_00b2a8e0(int *param_1)

{
  undefined uVar1;
  undefined uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined *puVar5;
  undefined *puVar6;
  
  puVar3 = (undefined4 *)param_1[6];
  puVar5 = (undefined *)*puVar3;
  iVar4 = puVar3[1];
  if (iVar4 == 0) {
    iVar4 = (*(code *)puVar3[3])(param_1);
    if (iVar4 == 0) {
      return 0;
    }
    puVar5 = (undefined *)*puVar3;
    iVar4 = puVar3[1];
  }
  uVar1 = *puVar5;
  iVar4 = iVar4 + -1;
  puVar5 = puVar5 + 1;
  if (iVar4 == 0) {
    iVar4 = (*(code *)puVar3[3])(param_1);
    if (iVar4 == 0) {
      return 0;
    }
    puVar5 = (undefined *)*puVar3;
    iVar4 = puVar3[1];
  }
  iVar4 = iVar4 + -1;
  puVar6 = puVar5 + 1;
  if (CONCAT11(uVar1,*puVar5) != 4) {
    *(undefined4 *)(*param_1 + 0x14) = 0xb;
    (**(code **)*param_1)(param_1);
  }
  if (iVar4 == 0) {
    iVar4 = (*(code *)puVar3[3])(param_1);
    if (iVar4 == 0) {
      return 0;
    }
    puVar6 = (undefined *)*puVar3;
    iVar4 = puVar3[1];
  }
  uVar1 = *puVar6;
  iVar4 = iVar4 + -1;
  puVar6 = puVar6 + 1;
  if (iVar4 == 0) {
    iVar4 = (*(code *)puVar3[3])(param_1);
    if (iVar4 == 0) {
      return 0;
    }
    puVar6 = (undefined *)*puVar3;
    iVar4 = puVar3[1];
  }
  uVar2 = *puVar6;
  *(undefined4 *)(*param_1 + 0x14) = 0x52;
  *(uint *)(*param_1 + 0x18) = (uint)CONCAT11(uVar1,uVar2);
  (**(code **)(*param_1 + 4))(param_1,1);
  param_1[0x45] = (uint)CONCAT11(uVar1,uVar2);
  puVar3[1] = iVar4 + -1;
  *puVar3 = puVar6 + 1;
  return 1;
}



void __fastcall FUN_00b2a9e0(int param_1)

{
  char cVar1;
  int iVar2;
  uint in_EAX;
  int *unaff_ESI;
  char *unaff_EDI;
  
  param_1 = in_EAX + param_1;
  if ((((in_EAX < 0xe) || (*unaff_EDI != 'J')) || (unaff_EDI[1] != 'F')) ||
     (((unaff_EDI[2] != 'I' || (unaff_EDI[3] != 'F')) || (unaff_EDI[4] != '\0')))) {
    if (((5 < in_EAX) && (*unaff_EDI == 'J')) &&
       ((unaff_EDI[1] == 'F' &&
        (((unaff_EDI[2] == 'X' && (unaff_EDI[3] == 'X')) && (unaff_EDI[4] == '\0')))))) {
      cVar1 = unaff_EDI[5];
      if (cVar1 == '\x10') {
        *(undefined4 *)(*unaff_ESI + 0x14) = 0x6c;
        *(int *)(*unaff_ESI + 0x18) = param_1;
        (**(code **)(*unaff_ESI + 4))();
        return;
      }
      if (cVar1 != '\x11') {
        if (cVar1 != '\x13') {
          *(undefined4 *)(*unaff_ESI + 0x14) = 0x59;
          *(uint *)(*unaff_ESI + 0x18) = (uint)(byte)unaff_EDI[5];
          *(int *)(*unaff_ESI + 0x1c) = param_1;
          (**(code **)(*unaff_ESI + 4))();
          return;
        }
        *(undefined4 *)(*unaff_ESI + 0x14) = 0x6e;
        *(int *)(*unaff_ESI + 0x18) = param_1;
        (**(code **)(*unaff_ESI + 4))();
        return;
      }
      *(undefined4 *)(*unaff_ESI + 0x14) = 0x6d;
      *(int *)(*unaff_ESI + 0x18) = param_1;
      (**(code **)(*unaff_ESI + 4))();
      return;
    }
    *(undefined4 *)(*unaff_ESI + 0x14) = 0x4d;
    *(int *)(*unaff_ESI + 0x18) = param_1;
    (**(code **)(*unaff_ESI + 4))();
  }
  else {
    unaff_ESI[0x46] = 1;
    *(char *)(unaff_ESI + 0x47) = unaff_EDI[5];
    *(char *)((int)unaff_ESI + 0x11d) = unaff_EDI[6];
    *(char *)((int)unaff_ESI + 0x11e) = unaff_EDI[7];
    *(ushort *)(unaff_ESI + 0x48) = (ushort)(byte)unaff_EDI[8] * 0x100 + (ushort)(byte)unaff_EDI[9];
    *(ushort *)((int)unaff_ESI + 0x122) =
         (ushort)(byte)unaff_EDI[10] * 0x100 + (ushort)(byte)unaff_EDI[0xb];
    if (*(char *)(unaff_ESI + 0x47) != '\x01') {
      *(undefined4 *)(*unaff_ESI + 0x14) = 0x77;
      *(uint *)(*unaff_ESI + 0x18) = (uint)*(byte *)(unaff_ESI + 0x47);
      *(uint *)(*unaff_ESI + 0x1c) = (uint)*(byte *)((int)unaff_ESI + 0x11d);
      (**(code **)(*unaff_ESI + 4))();
    }
    iVar2 = *unaff_ESI;
    *(uint *)(iVar2 + 0x18) = (uint)*(byte *)(unaff_ESI + 0x47);
    *(uint *)(iVar2 + 0x1c) = (uint)*(byte *)((int)unaff_ESI + 0x11d);
    *(uint *)(iVar2 + 0x20) = (uint)*(ushort *)(unaff_ESI + 0x48);
    *(uint *)(iVar2 + 0x24) = (uint)*(ushort *)((int)unaff_ESI + 0x122);
    *(uint *)(iVar2 + 0x28) = (uint)*(byte *)((int)unaff_ESI + 0x11e);
    *(undefined4 *)(*unaff_ESI + 0x14) = 0x57;
    (**(code **)(*unaff_ESI + 4))();
    if ((byte)(unaff_EDI[0xc] | unaff_EDI[0xd]) != 0) {
      *(undefined4 *)(*unaff_ESI + 0x14) = 0x5a;
      *(uint *)(*unaff_ESI + 0x18) = (uint)(byte)unaff_EDI[0xc];
      *(uint *)(*unaff_ESI + 0x1c) = (uint)(byte)unaff_EDI[0xd];
      (**(code **)(*unaff_ESI + 4))();
    }
    if (param_1 + -0xe != (uint)(byte)unaff_EDI[0xc] * (uint)(byte)unaff_EDI[0xd] * 3) {
      *(undefined4 *)(*unaff_ESI + 0x14) = 0x58;
      *(int *)(*unaff_ESI + 0x18) = param_1 + -0xe;
      (**(code **)(*unaff_ESI + 4))();
      return;
    }
  }
  return;
}



void __thiscall FUN_00b2ac40(uint param_1_00,int param_1)

{
  char cVar1;
  char cVar2;
  byte bVar3;
  char cVar4;
  char cVar5;
  int iVar6;
  char *in_EAX;
  int *unaff_ESI;
  
  if ((((0xb < param_1_00) && (*in_EAX == 'A')) && (in_EAX[1] == 'd')) &&
     (((in_EAX[2] == 'o' && (in_EAX[3] == 'b')) && (in_EAX[4] == 'e')))) {
    cVar1 = in_EAX[7];
    cVar2 = in_EAX[8];
    bVar3 = in_EAX[0xb];
    cVar4 = in_EAX[9];
    cVar5 = in_EAX[10];
    iVar6 = *unaff_ESI;
    *(uint *)(iVar6 + 0x18) = (uint)CONCAT11(in_EAX[5],in_EAX[6]);
    *(uint *)(iVar6 + 0x1c) = (uint)CONCAT11(cVar1,cVar2);
    *(uint *)(iVar6 + 0x20) = (uint)CONCAT11(cVar4,cVar5);
    *(uint *)(iVar6 + 0x24) = (uint)bVar3;
    *(undefined4 *)(*unaff_ESI + 0x14) = 0x4c;
    (**(code **)(*unaff_ESI + 4))();
    *(byte *)(unaff_ESI + 0x4a) = bVar3;
    unaff_ESI[0x49] = 1;
    return;
  }
  *(undefined4 *)(*unaff_ESI + 0x14) = 0x4e;
  *(uint *)(*unaff_ESI + 0x18) = param_1_00 + param_1;
  (**(code **)(*unaff_ESI + 4))();
  return;
}



void FUN_00b2ad00(int *param_1)

{
  undefined uVar1;
  int iVar2;
  uint uVar3;
  undefined *puVar4;
  undefined4 *puVar5;
  uint uVar6;
  uint uStack_24;
  int *local_20;
  uint uStack_1c;
  undefined4 *local_18;
  undefined auStack_14 [16];
  uint local_4;
  
  local_4 = DAT_0323f878 ^ (uint)&uStack_24;
  puVar5 = (undefined4 *)param_1[6];
  iVar2 = puVar5[1];
  puVar4 = (undefined *)*puVar5;
  local_20 = param_1;
  local_18 = puVar5;
  if (iVar2 == 0) {
    iVar2 = (*(code *)puVar5[3])(param_1);
    if (iVar2 == 0) {
      ___security_check_cookie_4();
      return;
    }
    puVar4 = (undefined *)*puVar5;
    iVar2 = puVar5[1];
  }
  uVar1 = *puVar4;
  iVar2 = iVar2 + -1;
  puVar4 = puVar4 + 1;
  if (iVar2 == 0) {
    iVar2 = (*(code *)puVar5[3])(local_20);
    if (iVar2 == 0) {
LAB_00b2ae18:
      ___security_check_cookie_4();
      return;
    }
    puVar4 = (undefined *)*puVar5;
    iVar2 = puVar5[1];
  }
  uVar6 = CONCAT11(uVar1,*puVar4) - 2;
  iVar2 = iVar2 + -1;
  puVar4 = puVar4 + 1;
  if ((int)uVar6 < 0xe) {
    uStack_1c = ((int)uVar6 < 1) - 1 & uVar6;
  }
  else {
    uStack_1c = 0xe;
  }
  uStack_24 = 0;
  uVar3 = uStack_1c;
  if (uStack_1c != 0) {
    do {
      if (iVar2 == 0) {
        iVar2 = (*(code *)puVar5[3])(local_20);
        if (iVar2 == 0) goto LAB_00b2ae18;
        puVar4 = (undefined *)*puVar5;
        iVar2 = puVar5[1];
        uVar3 = uStack_1c;
      }
      auStack_14[uStack_24] = *puVar4;
      uStack_24 = uStack_24 + 1;
      iVar2 = iVar2 + -1;
      puVar4 = puVar4 + 1;
    } while (uStack_24 < uVar3);
  }
  uVar6 = uVar6 - uVar3;
  uStack_24 = uVar6;
  if (local_20[0x68] == 0xe0) {
    FUN_00b2a9e0();
    puVar5 = local_18;
    uVar6 = uStack_24;
  }
  else if (local_20[0x68] == 0xee) {
    FUN_00b2ac40(uVar6);
    puVar5 = local_18;
  }
  else {
    *(undefined4 *)(*local_20 + 0x14) = 0x44;
    *(int *)(*local_20 + 0x18) = local_20[0x68];
    (**(code **)*local_20)(local_20);
  }
  *puVar5 = puVar4;
  puVar5[1] = iVar2;
  if (0 < (int)uVar6) {
    (**(code **)(local_20[6] + 0x10))(local_20,uVar6);
  }
  ___security_check_cookie_4();
  return;
}



undefined4 FUN_00b2ae90(int *param_1)

{
  byte bVar1;
  byte bVar2;
  byte **ppbVar3;
  int iVar4;
  byte *pbVar5;
  byte *pbVar6;
  
  ppbVar3 = (byte **)param_1[6];
  pbVar6 = ppbVar3[1];
  pbVar5 = *ppbVar3;
  if (pbVar6 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])(param_1);
    if (iVar4 == 0) {
      return 0;
    }
    pbVar5 = *ppbVar3;
    pbVar6 = ppbVar3[1];
  }
  bVar1 = *pbVar5;
  pbVar6 = pbVar6 + -1;
  pbVar5 = pbVar5 + 1;
  if (pbVar6 == (byte *)0x0) {
    iVar4 = (*(code *)ppbVar3[3])(param_1);
    if (iVar4 == 0) {
      return 0;
    }
    pbVar5 = *ppbVar3;
    pbVar6 = ppbVar3[1];
  }
  bVar2 = *pbVar5;
  *(undefined4 *)(*param_1 + 0x14) = 0x5b;
  iVar4 = (uint)bVar1 * 0x100 + -2 + (uint)bVar2;
  *(int *)(*param_1 + 0x18) = param_1[0x68];
  *(int *)(*param_1 + 0x1c) = iVar4;
  (**(code **)(*param_1 + 4))(param_1,1);
  *ppbVar3 = pbVar5 + 1;
  ppbVar3[1] = pbVar6 + -1;
  if (0 < iVar4) {
    (**(code **)(param_1[6] + 0x10))(param_1,iVar4);
  }
  return 1;
}



undefined4 FUN_00b2af40(int *param_1)

{
  byte bVar1;
  byte **ppbVar2;
  int iVar3;
  uint uVar4;
  byte *pbVar5;
  byte *pbVar6;
  
  ppbVar2 = (byte **)param_1[6];
  pbVar5 = *ppbVar2;
  pbVar6 = ppbVar2[1];
  while( true ) {
    if (pbVar6 == (byte *)0x0) {
      iVar3 = (*(code *)ppbVar2[3])(param_1);
      if (iVar3 == 0) {
        return 0;
      }
      pbVar5 = *ppbVar2;
      pbVar6 = ppbVar2[1];
    }
    bVar1 = *pbVar5;
    while( true ) {
      pbVar5 = pbVar5 + 1;
      pbVar6 = pbVar6 + -1;
      if (bVar1 == 0xff) break;
      *(int *)(param_1[0x6e] + 0x18) = *(int *)(param_1[0x6e] + 0x18) + 1;
      *ppbVar2 = pbVar5;
      ppbVar2[1] = pbVar6;
      if (pbVar6 == (byte *)0x0) {
        iVar3 = (*(code *)ppbVar2[3])(param_1);
        if (iVar3 == 0) {
          return 0;
        }
        pbVar5 = *ppbVar2;
        pbVar6 = ppbVar2[1];
      }
      bVar1 = *pbVar5;
    }
    do {
      if (pbVar6 == (byte *)0x0) {
        iVar3 = (*(code *)ppbVar2[3])(param_1);
        if (iVar3 == 0) {
          return 0;
        }
        pbVar5 = *ppbVar2;
        pbVar6 = ppbVar2[1];
      }
      uVar4 = (uint)*pbVar5;
      pbVar6 = pbVar6 + -1;
      pbVar5 = pbVar5 + 1;
    } while (uVar4 == 0xff);
    if (uVar4 != 0) break;
    *(int *)(param_1[0x6e] + 0x18) = *(int *)(param_1[0x6e] + 0x18) + 2;
    *ppbVar2 = pbVar5;
    ppbVar2[1] = pbVar6;
  }
  if (*(int *)(param_1[0x6e] + 0x18) != 0) {
    *(undefined4 *)(*param_1 + 0x14) = 0x74;
    *(undefined4 *)(*param_1 + 0x18) = *(undefined4 *)(param_1[0x6e] + 0x18);
    *(uint *)(*param_1 + 0x1c) = uVar4;
    (**(code **)(*param_1 + 4))(param_1,0xffffffff);
    *(undefined4 *)(param_1[0x6e] + 0x18) = 0;
  }
  param_1[0x68] = uVar4;
  ppbVar2[1] = pbVar6;
  *ppbVar2 = pbVar5;
  return 1;
}



undefined4 FUN_00b2b060(int *param_1)

{
  byte bVar1;
  byte **ppbVar2;
  int iVar3;
  uint uVar4;
  byte *pbVar5;
  byte *pbVar6;
  
  ppbVar2 = (byte **)param_1[6];
  pbVar5 = *ppbVar2;
  pbVar6 = ppbVar2[1];
  if (pbVar6 == (byte *)0x0) {
    iVar3 = (*(code *)ppbVar2[3])(param_1);
    if (iVar3 == 0) {
      return 0;
    }
    pbVar5 = *ppbVar2;
    pbVar6 = ppbVar2[1];
  }
  bVar1 = *pbVar5;
  pbVar6 = pbVar6 + -1;
  pbVar5 = pbVar5 + 1;
  if (pbVar6 == (byte *)0x0) {
    iVar3 = (*(code *)ppbVar2[3])(param_1);
    if (iVar3 == 0) {
      return 0;
    }
    pbVar5 = *ppbVar2;
    pbVar6 = ppbVar2[1];
  }
  uVar4 = (uint)*pbVar5;
  if ((bVar1 != 0xff) || (uVar4 != 0xd8)) {
    *(undefined4 *)(*param_1 + 0x14) = 0x35;
    *(uint *)(*param_1 + 0x18) = (uint)bVar1;
    *(uint *)(*param_1 + 0x1c) = uVar4;
    (**(code **)*param_1)(param_1);
  }
  param_1[0x68] = uVar4;
  ppbVar2[1] = pbVar6 + -1;
  *ppbVar2 = pbVar5 + 1;
  return 1;
}



undefined4 FUN_00b2b4a0(int *param_1)

{
  int iVar1;
  
  if ((param_1[0x68] == 0) && (iVar1 = FUN_00b2af40(param_1), iVar1 == 0)) {
    return 0;
  }
  if (param_1[0x68] == *(int *)(param_1[0x6e] + 0x14) + 0xd0) {
    *(undefined4 *)(*param_1 + 0x14) = 0x62;
    *(undefined4 *)(*param_1 + 0x18) = *(undefined4 *)(param_1[0x6e] + 0x14);
    (**(code **)(*param_1 + 4))(param_1,3);
    param_1[0x68] = 0;
  }
  else {
    iVar1 = (**(code **)(param_1[6] + 0x14))(param_1,*(int *)(param_1[0x6e] + 0x14));
    if (iVar1 == 0) {
      return 0;
    }
  }
  *(uint *)(param_1[0x6e] + 0x14) = *(int *)(param_1[0x6e] + 0x14) + 1U & 7;
  return 1;
}



void FUN_00b2b670(int param_1)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  int iVar3;
  
  puVar1 = (undefined4 *)(***(code ***)(param_1 + 4))(param_1,0,0xac);
  *(undefined4 **)(param_1 + 0x1b8) = puVar1;
  *puVar1 = &LAB_00b2b640;
  puVar1[1] = &LAB_00b2b110;
  puVar1[2] = FUN_00b2b4a0;
  puVar1[7] = FUN_00b2ae90;
  puVar1[0x18] = 0;
  puVar2 = puVar1 + 0x19;
  iVar3 = 0x10;
  do {
    puVar2[-0x11] = FUN_00b2ae90;
    *puVar2 = 0;
    puVar2 = puVar2 + 1;
    iVar3 = iVar3 + -1;
  } while (iVar3 != 0);
  puVar1[8] = FUN_00b2ad00;
  puVar1[0x16] = FUN_00b2ad00;
  iVar3 = *(int *)(param_1 + 0x1b8);
  *(undefined4 *)(param_1 + 0xd8) = 0;
  *(undefined4 *)(param_1 + 0x90) = 0;
  *(undefined4 *)(param_1 + 0x1a0) = 0;
  *(undefined4 *)(iVar3 + 0xc) = 0;
  *(undefined4 *)(iVar3 + 0x10) = 0;
  *(undefined4 *)(iVar3 + 0x18) = 0;
  *(undefined4 *)(iVar3 + 0xa4) = 0;
  return;
}



undefined4 FUN_00b2b710(void)

{
  uint *puVar1;
  uint uVar2;
  uint uVar3;
  int unaff_ESI;
  
  if (*(int *)(unaff_ESI + 0x14) != 0xcc) {
    (***(code ***)(unaff_ESI + 0x1a4))();
    *(undefined4 *)(unaff_ESI + 0x8c) = 0;
    *(undefined4 *)(unaff_ESI + 0x14) = 0xcc;
  }
  if (*(int *)(*(int *)(unaff_ESI + 0x1a4) + 8) != 0) {
    puVar1 = (uint *)(unaff_ESI + 0x8c);
    do {
      uVar3 = *puVar1;
      if (uVar3 < *(uint *)(unaff_ESI + 0x74)) {
        do {
          if (*(int *)(unaff_ESI + 8) != 0) {
            *(uint *)(*(int *)(unaff_ESI + 8) + 4) = uVar3;
            *(undefined4 *)(*(int *)(unaff_ESI + 8) + 8) = *(undefined4 *)(unaff_ESI + 0x74);
            (***(code ***)(unaff_ESI + 8))();
          }
          uVar2 = *puVar1;
          (**(code **)(*(int *)(unaff_ESI + 0x1a8) + 4))();
          uVar3 = *puVar1;
          if (uVar3 == uVar2) {
            return 0;
          }
        } while (uVar3 < *(uint *)(unaff_ESI + 0x74));
      }
      (**(code **)(*(int *)(unaff_ESI + 0x1a4) + 4))();
      (***(code ***)(unaff_ESI + 0x1a4))();
      *puVar1 = 0;
    } while (*(int *)(*(int *)(unaff_ESI + 0x1a4) + 8) != 0);
  }
  *(uint *)(unaff_ESI + 0x14) = (*(int *)(unaff_ESI + 0x44) != 0) + 0xcd;
  return 1;
}



int FUN_00b2b7f0(int *param_1,undefined4 param_2,undefined4 param_3)

{
  int *piVar1;
  
  piVar1 = param_1;
  if (param_1[5] != 0xcd) {
    *(undefined4 *)(*param_1 + 0x14) = 0x14;
    *(int *)(*param_1 + 0x18) = param_1[5];
    (**(code **)*param_1)(param_1);
  }
  if ((uint)piVar1[0x1d] <= (uint)piVar1[0x23]) {
    *(undefined4 *)(*piVar1 + 0x14) = 0x7b;
    (**(code **)(*piVar1 + 4))(piVar1,0xffffffff);
    return 0;
  }
  if (piVar1[2] != 0) {
    *(int *)(piVar1[2] + 4) = piVar1[0x23];
    *(int *)(piVar1[2] + 8) = piVar1[0x1d];
    (**(code **)piVar1[2])(piVar1);
  }
  param_1 = (int *)0x0;
  (**(code **)(piVar1[0x6a] + 4))(piVar1,param_2,&param_1,param_3);
  piVar1[0x23] = piVar1[0x23] + (int)param_1;
  return (int)param_1;
}



undefined4 FUN_00b2b890(int *param_1)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  
  if (param_1[5] == 0xca) {
    FUN_00b2d660(param_1);
    if (param_1[0x10] != 0) {
      param_1[5] = 0xcf;
      return 1;
    }
    param_1[5] = 0xcb;
  }
  if (param_1[5] == 0xcb) {
    if (*(int *)(param_1[0x6d] + 0x10) != 0) {
      while( true ) {
        if ((code **)param_1[2] != (code **)0x0) {
          (**(code **)param_1[2])(param_1);
        }
        iVar2 = (**(code **)param_1[0x6d])(param_1);
        if (iVar2 == 0) {
          return 0;
        }
        if (iVar2 == 2) break;
        if ((param_1[2] != 0) && ((iVar2 == 3 || (iVar2 == 1)))) {
          piVar1 = (int *)(param_1[2] + 4);
          *piVar1 = *piVar1 + 1;
          iVar2 = param_1[2];
          if (*(int *)(iVar2 + 8) <= *(int *)(iVar2 + 4)) {
            *(int *)(iVar2 + 8) = *(int *)(iVar2 + 8) + param_1[0x50];
          }
        }
      }
    }
    param_1[0x26] = param_1[0x24];
    uVar3 = FUN_00b2b710();
    return uVar3;
  }
  if (param_1[5] != 0xcc) {
    *(undefined4 *)(*param_1 + 0x14) = 0x14;
    *(int *)(*param_1 + 0x18) = param_1[5];
    (**(code **)*param_1)(param_1);
  }
  uVar3 = FUN_00b2b710();
  return uVar3;
}



void FUN_00b2b970(int *param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  
  param_1[1] = 0;
  if (param_2 != 0x3e) {
    *(undefined4 *)(*param_1 + 0x14) = 0xc;
    *(undefined4 *)(*param_1 + 0x18) = 0x3e;
    *(int *)(*param_1 + 0x1c) = param_2;
    (**(code **)*param_1)(param_1);
  }
  if (param_3 != 0x1d0) {
    *(undefined4 *)(*param_1 + 0x14) = 0x15;
    *(undefined4 *)(*param_1 + 0x18) = 0x1d0;
    *(int *)(*param_1 + 0x1c) = param_3;
    (**(code **)*param_1)(param_1);
  }
  iVar1 = *param_1;
  iVar2 = param_1[3];
  _memset(param_1,0,0x1d0);
  *param_1 = iVar1;
  param_1[3] = iVar2;
  param_1[4] = 1;
  FUN_00b2e7b0(param_1);
  param_1[2] = 0;
  param_1[6] = 0;
  param_1[0x29] = 0;
  param_1[0x2a] = 0;
  param_1[0x2b] = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0;
  param_1[0x31] = 0;
  param_1[0x2e] = 0;
  param_1[0x32] = 0;
  param_1[0x2f] = 0;
  param_1[0x33] = 0;
  param_1[0x30] = 0;
  param_1[0x34] = 0;
  param_1[0x4c] = 0;
  FUN_00b2b670(param_1);
  FUN_00b2dc60(param_1);
  param_1[5] = 200;
  return;
}



void FUN_00b2ba70(void)

{
  int iVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int *unaff_ESI;
  
  iVar1 = unaff_ESI[9];
  if (iVar1 == 1) {
    unaff_ESI[10] = 1;
    unaff_ESI[0xb] = 1;
  }
  else if (iVar1 == 3) {
    if (unaff_ESI[0x46] == 0) {
      if (unaff_ESI[0x49] == 0) {
        piVar2 = (int *)unaff_ESI[0x36];
        iVar1 = *piVar2;
        iVar3 = piVar2[0x15];
        iVar4 = piVar2[0x2a];
        if (iVar1 == 1) {
          if ((iVar3 == 2) && (iVar4 == 3)) {
            unaff_ESI[10] = 3;
            unaff_ESI[0xb] = 2;
            goto LAB_00b2bbf7;
          }
        }
        else if (((iVar1 == 0x52) && (iVar3 == 0x47)) && (iVar4 == 0x42)) {
          unaff_ESI[10] = 2;
          unaff_ESI[0xb] = 2;
          goto LAB_00b2bbf7;
        }
        iVar5 = *unaff_ESI;
        *(int *)(iVar5 + 0x18) = iVar1;
        *(int *)(iVar5 + 0x1c) = iVar3;
        *(int *)(iVar5 + 0x20) = iVar4;
        *(undefined4 *)(*unaff_ESI + 0x14) = 0x6f;
        (**(code **)(*unaff_ESI + 4))();
        unaff_ESI[10] = 3;
        unaff_ESI[0xb] = 2;
        goto LAB_00b2bbf7;
      }
      if (*(char *)(unaff_ESI + 0x4a) == '\0') {
        unaff_ESI[10] = 2;
        unaff_ESI[0xb] = 2;
        goto LAB_00b2bbf7;
      }
      if (*(char *)(unaff_ESI + 0x4a) != '\x01') {
        *(undefined4 *)(*unaff_ESI + 0x14) = 0x72;
        *(uint *)(*unaff_ESI + 0x18) = (uint)*(byte *)(unaff_ESI + 0x4a);
        (**(code **)(*unaff_ESI + 4))();
        unaff_ESI[10] = 3;
        unaff_ESI[0xb] = 2;
        goto LAB_00b2bbf7;
      }
    }
    unaff_ESI[10] = 3;
    unaff_ESI[0xb] = 2;
  }
  else if (iVar1 == 4) {
    if ((unaff_ESI[0x49] == 0) || (*(char *)(unaff_ESI + 0x4a) == '\0')) {
      unaff_ESI[10] = 4;
      unaff_ESI[0xb] = 4;
    }
    else {
      if (*(char *)(unaff_ESI + 0x4a) != '\x02') {
        *(undefined4 *)(*unaff_ESI + 0x14) = 0x72;
        *(uint *)(*unaff_ESI + 0x18) = (uint)*(byte *)(unaff_ESI + 0x4a);
        (**(code **)(*unaff_ESI + 4))();
      }
      unaff_ESI[10] = 5;
      unaff_ESI[0xb] = 4;
    }
  }
  else {
    unaff_ESI[10] = 0;
    unaff_ESI[0xb] = 0;
  }
LAB_00b2bbf7:
  unaff_ESI[0x10] = 0;
  *(undefined8 *)(unaff_ESI + 0xe) = 0x3ff0000000000000;
  unaff_ESI[0x11] = 0;
  unaff_ESI[0x12] = 0;
  unaff_ESI[0x15] = 0;
  unaff_ESI[0x22] = 0;
  unaff_ESI[0x19] = 0;
  unaff_ESI[0x1a] = 0;
  unaff_ESI[0x1b] = 0;
  unaff_ESI[0xc] = 1;
  unaff_ESI[0xd] = 1;
  unaff_ESI[0x13] = 1;
  unaff_ESI[0x14] = 1;
  unaff_ESI[0x17] = 1;
  unaff_ESI[0x16] = 2;
  unaff_ESI[0x18] = 0x100;
  return;
}



int FUN_00b2bc40(int *param_1)

{
  int iVar1;
  
  iVar1 = 0;
  switch(param_1[5]) {
  case 200:
    (**(code **)(param_1[0x6d] + 4))(param_1);
    (**(code **)(param_1[6] + 8))(param_1);
    param_1[5] = 0xc9;
  case 0xc9:
    iVar1 = (**(code **)param_1[0x6d])(param_1);
    if (iVar1 == 1) {
      FUN_00b2ba70();
      param_1[5] = 0xca;
      return 1;
    }
    break;
  case 0xca:
    return 1;
  case 0xcb:
  case 0xcc:
  case 0xcd:
  case 0xce:
  case 0xcf:
  case 0xd0:
  case 0xd2:
    iVar1 = (**(code **)param_1[0x6d])(param_1);
    return iVar1;
  default:
    *(undefined4 *)(*param_1 + 0x14) = 0x14;
    *(int *)(*param_1 + 0x18) = param_1[5];
    (**(code **)*param_1)(param_1);
  }
  return iVar1;
}



undefined4 FUN_00b2bd10(int *param_1)

{
  int iVar1;
  
  iVar1 = param_1[5];
  if (((iVar1 == 0xcd) || (iVar1 == 0xce)) && (param_1[0x10] == 0)) {
    if ((uint)param_1[0x23] < (uint)param_1[0x1d]) {
      *(undefined4 *)(*param_1 + 0x14) = 0x43;
      (**(code **)*param_1)(param_1);
    }
    (**(code **)(param_1[0x69] + 4))(param_1);
    param_1[5] = 0xd2;
  }
  else if (iVar1 == 0xcf) {
    param_1[5] = 0xd2;
  }
  else if (iVar1 != 0xd2) {
    *(undefined4 *)(*param_1 + 0x14) = 0x14;
    *(int *)(*param_1 + 0x18) = param_1[5];
    (**(code **)*param_1)(param_1);
  }
  iVar1 = *(int *)(param_1[0x6d] + 0x14);
  while( true ) {
    if (iVar1 != 0) {
      (**(code **)(param_1[6] + 0x18))(param_1);
      FUN_00b2ce30(param_1);
      return 1;
    }
    iVar1 = (**(code **)param_1[0x6d])(param_1);
    if (iVar1 == 0) break;
    iVar1 = *(int *)(param_1[0x6d] + 0x14);
  }
  return 0;
}



int FUN_00b2bde0(int *param_1,int param_2)

{
  int iVar1;
  
  if ((param_1[5] != 200) && (param_1[5] != 0xc9)) {
    *(undefined4 *)(*param_1 + 0x14) = 0x14;
    *(int *)(*param_1 + 0x18) = param_1[5];
    (**(code **)*param_1)(param_1);
  }
  iVar1 = FUN_00b2bc40(param_1);
  if (iVar1 == 1) {
    iVar1 = 1;
  }
  else if (iVar1 == 2) {
    if (param_2 != iVar1 + -2) {
      *(undefined4 *)(*param_1 + 0x14) = 0x33;
      (**(code **)*param_1)(param_1);
    }
    FUN_00b2ce30(param_1);
    return 2;
  }
  return iVar1;
}



void FUN_00b2be60(int *param_1)

{
  (**(code **)(*param_1 + 8))(param_1);
  FUN_00b2ce70(param_1);
                    // WARNING: Subroutine does not return
  _exit(1);
}



void FUN_00b2c000(code **param_1)

{
  *param_1 = FUN_00b2be60;
  param_1[1] = (code *)&LAB_00b2bee0;
  param_1[2] = (code *)&LAB_00b2be80;
  param_1[3] = (code *)&LAB_00b2bf20;
  param_1[4] = (code *)&LAB_00b2bfd0;
  param_1[0x1a] = (code *)0x0;
  param_1[0x1b] = (code *)0x0;
  param_1[5] = (code *)0x0;
  param_1[0x1c] = (code *)&PTR_s_Bogus_message_code__d_00dcf488;
  param_1[0x1d] = (code *)0x7b;
  param_1[0x1e] = (code *)0x0;
  param_1[0x1f] = (code *)0x0;
  param_1[0x20] = (code *)0x0;
  return;
}



void FUN_00b2c050(int *param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  
  param_1[1] = 0;
  if (param_2 != 0x3e) {
    *(undefined4 *)(*param_1 + 0x14) = 0xc;
    *(undefined4 *)(*param_1 + 0x18) = 0x3e;
    *(int *)(*param_1 + 0x1c) = param_2;
    (**(code **)*param_1)(param_1);
  }
  if (param_3 != 0x178) {
    *(undefined4 *)(*param_1 + 0x14) = 0x15;
    *(undefined4 *)(*param_1 + 0x18) = 0x178;
    *(int *)(*param_1 + 0x1c) = param_3;
    (**(code **)*param_1)(param_1);
  }
  iVar1 = *param_1;
  iVar2 = param_1[3];
  _memset(param_1,0,0x178);
  *param_1 = iVar1;
  param_1[3] = iVar2;
  param_1[4] = 0;
  FUN_00b2e7b0(param_1);
  param_1[2] = 0;
  param_1[6] = 0;
  param_1[0x11] = 0;
  param_1[0x12] = 0;
  param_1[0x13] = 0;
  param_1[0x14] = 0;
  param_1[0x15] = 0;
  param_1[0x16] = 0;
  param_1[0x1a] = 0;
  param_1[0x17] = 0;
  param_1[0x1b] = 0;
  param_1[0x18] = 0;
  param_1[0x1c] = 0;
  param_1[0x19] = 0;
  param_1[0x1d] = 0;
  *(undefined8 *)(param_1 + 0xc) = 0x3ff0000000000000;
  param_1[0x5c] = 0;
  param_1[5] = 100;
  return;
}



void thunk_FUN_00b2ce70(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    (**(code **)(*(int *)(param_1 + 4) + 0x28))(param_1);
  }
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined4 *)(param_1 + 4) = 0;
  return;
}



void FUN_00b2c130(int param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  
  if (*(int *)(param_1 + 0x48) != 0) {
    *(undefined4 *)(*(int *)(param_1 + 0x48) + 0x80) = param_2;
  }
  if (*(int *)(param_1 + 0x4c) != 0) {
    *(undefined4 *)(*(int *)(param_1 + 0x4c) + 0x80) = param_2;
  }
  if (*(int *)(param_1 + 0x50) != 0) {
    *(undefined4 *)(*(int *)(param_1 + 0x50) + 0x80) = param_2;
  }
  if (*(int *)(param_1 + 0x54) != 0) {
    *(undefined4 *)(*(int *)(param_1 + 0x54) + 0x80) = param_2;
  }
  piVar1 = (int *)(param_1 + 0x68);
  iVar2 = 4;
  do {
    if (piVar1[-4] != 0) {
      *(undefined4 *)(piVar1[-4] + 0x114) = param_2;
    }
    if (*piVar1 != 0) {
      *(undefined4 *)(*piVar1 + 0x114) = param_2;
    }
    piVar1 = piVar1 + 1;
    iVar2 = iVar2 + -1;
  } while (iVar2 != 0);
  return;
}



void FUN_00b2c1a0(int *param_1)

{
  code **ppcVar1;
  int iVar2;
  code *pcVar3;
  uint uVar4;
  
  iVar2 = param_1[5];
  if ((iVar2 == 0x65) || (iVar2 == 0x66)) {
    if ((uint)param_1[0x38] < (uint)param_1[8]) {
      *(undefined4 *)(*param_1 + 0x14) = 0x43;
      (**(code **)*param_1)(param_1);
    }
    pcVar3 = *(code **)(param_1[0x53] + 8);
  }
  else {
    if (iVar2 == 0x67) goto LAB_00b2c1fb;
    *(undefined4 *)(*param_1 + 0x14) = 0x14;
    *(int *)(*param_1 + 0x18) = param_1[5];
    pcVar3 = *(code **)*param_1;
  }
  (*pcVar3)(param_1);
LAB_00b2c1fb:
  ppcVar1 = (code **)param_1[0x53];
  pcVar3 = ppcVar1[4];
  while (pcVar3 == (code *)0x0) {
    (**ppcVar1)(param_1);
    uVar4 = 0;
    if (param_1[0x3c] != 0) {
      do {
        if (param_1[2] != 0) {
          *(uint *)(param_1[2] + 4) = uVar4;
          *(int *)(param_1[2] + 8) = param_1[0x3c];
          (**(code **)param_1[2])(param_1);
        }
        iVar2 = (**(code **)(param_1[0x56] + 4))(param_1,0);
        if (iVar2 == 0) {
          *(undefined4 *)(*param_1 + 0x14) = 0x18;
          (**(code **)*param_1)(param_1);
        }
        uVar4 = uVar4 + 1;
      } while (uVar4 < (uint)param_1[0x3c]);
    }
    (**(code **)(param_1[0x53] + 8))(param_1);
    ppcVar1 = (code **)param_1[0x53];
    pcVar3 = ppcVar1[4];
  }
  (**(code **)(param_1[0x57] + 0xc))(param_1);
  (**(code **)(param_1[6] + 0x10))(param_1);
  FUN_00b2ce30(param_1);
  return;
}



void FUN_00b2c2c0(int *param_1,int param_2)

{
  if (param_1[5] != 100) {
    *(undefined4 *)(*param_1 + 0x14) = 0x14;
    *(int *)(*param_1 + 0x18) = param_1[5];
    (**(code **)*param_1)(param_1);
  }
  if (param_2 != 0) {
    FUN_00b2c130(param_1,0);
  }
  (**(code **)(*param_1 + 0x10))(param_1);
  (**(code **)(param_1[6] + 8))(param_1);
  FUN_00b2f790(param_1);
  (**(code **)param_1[0x53])(param_1);
  param_1[0x38] = 0;
  param_1[5] = (param_1[0x2c] != 0) + 0x65;
  return;
}



void FUN_00b2c340(int *param_1,undefined4 param_2,uint param_3)

{
  int *piVar1;
  uint uVar2;
  
  piVar1 = param_1;
  if (param_1[5] != 0x65) {
    *(undefined4 *)(*param_1 + 0x14) = 0x14;
    *(int *)(*param_1 + 0x18) = param_1[5];
    (**(code **)*param_1)(param_1);
  }
  if ((uint)piVar1[8] <= (uint)piVar1[0x38]) {
    *(undefined4 *)(*piVar1 + 0x14) = 0x7b;
    (**(code **)(*piVar1 + 4))(piVar1,0xffffffff);
  }
  if (piVar1[2] != 0) {
    *(int *)(piVar1[2] + 4) = piVar1[0x38];
    *(int *)(piVar1[2] + 8) = piVar1[8];
    (**(code **)piVar1[2])(piVar1);
  }
  if (*(int *)(piVar1[0x53] + 0xc) != 0) {
    (**(code **)(piVar1[0x53] + 4))(piVar1);
  }
  uVar2 = param_3;
  if ((uint)(piVar1[8] - piVar1[0x38]) < param_3) {
    uVar2 = piVar1[8] - piVar1[0x38];
  }
  param_1 = (int *)0x0;
  (**(code **)(piVar1[0x54] + 4))(piVar1,param_2,&param_1,uVar2);
  piVar1[0x38] = piVar1[0x38] + (int)param_1;
  return;
}



void FUN_00b2c410(int *param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  
  if (param_1[5] != 100) {
    *(undefined4 *)(*param_1 + 0x14) = 0x14;
    *(int *)(*param_1 + 0x18) = param_1[5];
    (**(code **)*param_1)(param_1);
  }
  if ((param_2 < 0) || (3 < param_2)) {
    *(undefined4 *)(*param_1 + 0x14) = 0x1f;
    *(int *)(*param_1 + 0x18) = param_2;
    (**(code **)*param_1)(param_1);
  }
  if (param_1[param_2 + 0x12] == 0) {
    iVar1 = FUN_00b2cea0(param_1);
    param_1[param_2 + 0x12] = iVar1;
  }
  iVar1 = 0;
  piVar3 = (int *)(param_3 + 8);
  do {
    iVar2 = (piVar3[-2] * param_4 + 0x32) / 100;
    if (iVar2 < 1) {
      iVar2 = 1;
    }
    else if (0x7fff < iVar2) {
      iVar2 = 0x7fff;
    }
    if ((param_5 != 0) && (0xff < iVar2)) {
      iVar2 = 0xff;
    }
    *(short *)(iVar1 + param_1[param_2 + 0x12]) = (short)iVar2;
    iVar2 = (piVar3[-1] * param_4 + 0x32) / 100;
    if (iVar2 < 1) {
      iVar2 = 1;
    }
    else if (0x7fff < iVar2) {
      iVar2 = 0x7fff;
    }
    if ((param_5 != 0) && (0xff < iVar2)) {
      iVar2 = 0xff;
    }
    *(short *)(param_1[param_2 + 0x12] + 2 + iVar1) = (short)iVar2;
    iVar2 = (*piVar3 * param_4 + 0x32) / 100;
    if (iVar2 < 1) {
      iVar2 = 1;
    }
    else if (0x7fff < iVar2) {
      iVar2 = 0x7fff;
    }
    if ((param_5 != 0) && (0xff < iVar2)) {
      iVar2 = 0xff;
    }
    *(short *)(param_1[param_2 + 0x12] + 4 + iVar1) = (short)iVar2;
    iVar2 = (piVar3[1] * param_4 + 0x32) / 100;
    if (iVar2 < 1) {
      iVar2 = 1;
    }
    else if (0x7fff < iVar2) {
      iVar2 = 0x7fff;
    }
    if ((param_5 != 0) && (0xff < iVar2)) {
      iVar2 = 0xff;
    }
    *(short *)(iVar1 + 6 + param_1[param_2 + 0x12]) = (short)iVar2;
    iVar1 = iVar1 + 8;
    piVar3 = piVar3 + 4;
  } while (iVar1 < 0x80);
  *(undefined4 *)(param_1[param_2 + 0x12] + 0x80) = 0;
  return;
}



void FUN_00b2c5e0(undefined4 param_1,int param_2,undefined4 param_3)

{
  int iVar1;
  
  if (param_2 < 1) {
    iVar1 = 5000;
  }
  else {
    if (param_2 < 0x65) {
      if (param_2 < 0x32) {
        iVar1 = (int)(5000 / (longlong)param_2);
        goto LAB_00b2c60f;
      }
    }
    else {
      param_2 = 100;
    }
    iVar1 = (100 - param_2) * 2;
  }
LAB_00b2c60f:
  FUN_00b2c410(param_1,0,&DAT_00dcf680,iVar1,param_3);
  FUN_00b2c410(param_1,1,&DAT_00dcf780,iVar1,param_3);
  return;
}



void FUN_00b2c650(int *param_1,int *param_2,void *param_3)

{
  undefined4 *puVar1;
  undefined4 *in_EAX;
  int iVar2;
  byte *pbVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  size_t _Size;
  
  if (*param_2 == 0) {
    iVar2 = FUN_00b2ced0(param_1);
    *param_2 = iVar2;
  }
  puVar1 = (undefined4 *)*param_2;
  *puVar1 = *in_EAX;
  puVar1[1] = in_EAX[1];
  puVar1[2] = in_EAX[2];
  puVar1[3] = in_EAX[3];
  *(undefined *)(puVar1 + 4) = *(undefined *)(in_EAX + 4);
  iVar7 = 0;
  iVar5 = 0;
  pbVar3 = (byte *)((int)in_EAX + 2);
  iVar4 = 0;
  iVar2 = 4;
  iVar6 = 0;
  do {
    iVar7 = iVar7 + (uint)pbVar3[-1];
    iVar4 = iVar4 + (uint)*pbVar3;
    iVar5 = iVar5 + (uint)pbVar3[1];
    iVar6 = iVar6 + (uint)pbVar3[2];
    pbVar3 = pbVar3 + 4;
    iVar2 = iVar2 + -1;
  } while (iVar2 != 0);
  _Size = iVar7 + iVar6 + iVar5 + iVar4;
  if (((int)_Size < 1) || (0x100 < (int)_Size)) {
    *(undefined4 *)(*param_1 + 0x14) = 8;
    (**(code **)*param_1)(param_1);
  }
  _memcpy((void *)(*param_2 + 0x11),param_3,_Size);
  *(undefined4 *)(*param_2 + 0x114) = 0;
  return;
}



void FUN_00b2c720(void)

{
  FUN_00b2c650();
  FUN_00b2c650();
  FUN_00b2c650();
  FUN_00b2c650();
  return;
}



void FUN_00b2c780(int *param_1,int param_2)

{
  undefined4 *puVar1;
  int *piVar2;
  int iVar3;
  int iVar4;
  
  if (param_1[5] != 100) {
    *(undefined4 *)(*param_1 + 0x14) = 0x14;
    *(int *)(*param_1 + 0x18) = param_1[5];
    (**(code **)*param_1)(param_1);
  }
  param_1[0x10] = param_2;
  param_1[0x34] = 0;
  param_1[0x37] = 0;
  switch(param_2) {
  case 0:
    iVar3 = param_1[9];
    param_1[0xf] = iVar3;
    if ((iVar3 < 1) || (10 < iVar3)) {
      *(undefined4 *)(*param_1 + 0x14) = 0x1a;
      *(int *)(*param_1 + 0x18) = param_1[0xf];
      *(undefined4 *)(*param_1 + 0x1c) = 10;
      (**(code **)*param_1)(param_1);
    }
    iVar3 = 0;
    if (0 < param_1[0xf]) {
      iVar4 = 0;
      do {
        piVar2 = (int *)(param_1[0x11] + iVar4);
        *piVar2 = iVar3;
        iVar3 = iVar3 + 1;
        piVar2[2] = 1;
        piVar2[3] = 1;
        piVar2[4] = 0;
        piVar2[5] = 0;
        piVar2[6] = 0;
        iVar4 = iVar4 + 0x54;
      } while (iVar3 < param_1[0xf]);
      return;
    }
    break;
  case 1:
    param_1[0x34] = 1;
    param_1[0xf] = 1;
    puVar1 = (undefined4 *)param_1[0x11];
    *puVar1 = 1;
    puVar1[2] = 1;
    puVar1[3] = 1;
    puVar1[4] = 0;
    puVar1[5] = 0;
    puVar1[6] = 0;
    return;
  case 2:
    puVar1 = (undefined4 *)param_1[0x11];
    param_1[0xf] = 3;
    param_1[0x37] = 1;
    puVar1[2] = 1;
    puVar1[3] = 1;
    puVar1[4] = 0;
    puVar1[5] = 0;
    puVar1[6] = 0;
    *puVar1 = 0x52;
    iVar3 = param_1[0x11];
    *(undefined4 *)(iVar3 + 0x5c) = 1;
    *(undefined4 *)(iVar3 + 0x60) = 1;
    *(undefined4 *)(iVar3 + 100) = 0;
    *(undefined4 *)(iVar3 + 0x68) = 0;
    *(undefined4 *)(iVar3 + 0x6c) = 0;
    *(undefined4 *)(iVar3 + 0x54) = 0x47;
    iVar3 = param_1[0x11];
    *(undefined4 *)(iVar3 + 0xb0) = 1;
    *(undefined4 *)(iVar3 + 0xb4) = 1;
    *(undefined4 *)(iVar3 + 0xb8) = 0;
    *(undefined4 *)(iVar3 + 0xbc) = 0;
    *(undefined4 *)(iVar3 + 0xc0) = 0;
    *(undefined4 *)(iVar3 + 0xa8) = 0x42;
    return;
  case 3:
    puVar1 = (undefined4 *)param_1[0x11];
    param_1[0xf] = 3;
    param_1[0x34] = 1;
    *puVar1 = 1;
    puVar1[4] = 0;
    puVar1[5] = 0;
    puVar1[6] = 0;
    puVar1[2] = 2;
    puVar1[3] = 2;
    iVar3 = param_1[0x11];
    *(undefined4 *)(iVar3 + 0x5c) = 1;
    *(undefined4 *)(iVar3 + 0x60) = 1;
    *(undefined4 *)(iVar3 + 100) = 1;
    *(undefined4 *)(iVar3 + 0x68) = 1;
    *(undefined4 *)(iVar3 + 0x6c) = 1;
    *(undefined4 *)(iVar3 + 0x54) = 2;
    iVar3 = param_1[0x11];
    *(undefined4 *)(iVar3 + 0xb0) = 1;
    *(undefined4 *)(iVar3 + 0xb4) = 1;
    *(undefined4 *)(iVar3 + 0xb8) = 1;
    *(undefined4 *)(iVar3 + 0xbc) = 1;
    *(undefined4 *)(iVar3 + 0xc0) = 1;
    *(undefined4 *)(iVar3 + 0xa8) = 3;
    return;
  case 4:
    puVar1 = (undefined4 *)param_1[0x11];
    param_1[0xf] = 4;
    param_1[0x37] = 1;
    puVar1[2] = 1;
    puVar1[3] = 1;
    puVar1[4] = 0;
    puVar1[5] = 0;
    puVar1[6] = 0;
    *puVar1 = 0x43;
    iVar3 = param_1[0x11];
    *(undefined4 *)(iVar3 + 0x5c) = 1;
    *(undefined4 *)(iVar3 + 0x60) = 1;
    *(undefined4 *)(iVar3 + 100) = 0;
    *(undefined4 *)(iVar3 + 0x68) = 0;
    *(undefined4 *)(iVar3 + 0x6c) = 0;
    *(undefined4 *)(iVar3 + 0x54) = 0x4d;
    iVar3 = param_1[0x11];
    *(undefined4 *)(iVar3 + 0xb0) = 1;
    *(undefined4 *)(iVar3 + 0xb4) = 1;
    *(undefined4 *)(iVar3 + 0xb8) = 0;
    *(undefined4 *)(iVar3 + 0xbc) = 0;
    *(undefined4 *)(iVar3 + 0xc0) = 0;
    *(undefined4 *)(iVar3 + 0xa8) = 0x59;
    iVar3 = param_1[0x11];
    *(undefined4 *)(iVar3 + 0x104) = 1;
    *(undefined4 *)(iVar3 + 0x108) = 1;
    *(undefined4 *)(iVar3 + 0x10c) = 0;
    *(undefined4 *)(iVar3 + 0x110) = 0;
    *(undefined4 *)(iVar3 + 0x114) = 0;
    *(undefined4 *)(iVar3 + 0xfc) = 0x4b;
    return;
  case 5:
    puVar1 = (undefined4 *)param_1[0x11];
    param_1[0xf] = 4;
    param_1[0x37] = 1;
    *puVar1 = 1;
    puVar1[4] = 0;
    puVar1[5] = 0;
    puVar1[6] = 0;
    puVar1[2] = 2;
    puVar1[3] = 2;
    iVar3 = param_1[0x11];
    *(undefined4 *)(iVar3 + 0x5c) = 1;
    *(undefined4 *)(iVar3 + 0x60) = 1;
    *(undefined4 *)(iVar3 + 100) = 1;
    *(undefined4 *)(iVar3 + 0x68) = 1;
    *(undefined4 *)(iVar3 + 0x6c) = 1;
    *(undefined4 *)(iVar3 + 0x54) = 2;
    iVar3 = param_1[0x11];
    *(undefined4 *)(iVar3 + 0xb0) = 1;
    *(undefined4 *)(iVar3 + 0xb4) = 1;
    *(undefined4 *)(iVar3 + 0xb8) = 1;
    *(undefined4 *)(iVar3 + 0xbc) = 1;
    *(undefined4 *)(iVar3 + 0xc0) = 1;
    *(undefined4 *)(iVar3 + 0xa8) = 3;
    iVar3 = param_1[0x11];
    *(undefined4 *)(iVar3 + 0x10c) = 0;
    *(undefined4 *)(iVar3 + 0x110) = 0;
    *(undefined4 *)(iVar3 + 0x114) = 0;
    *(undefined4 *)(iVar3 + 0xfc) = 4;
    *(undefined4 *)(iVar3 + 0x104) = 2;
    *(undefined4 *)(iVar3 + 0x108) = 2;
    return;
  default:
    *(undefined4 *)(*param_1 + 0x14) = 10;
    (**(code **)*param_1)(param_1);
  }
  return;
}



void FUN_00b2ca60(int *param_1)

{
  undefined4 *puVar1;
  int iVar2;
  
  switch(param_1[10]) {
  case 0:
    FUN_00b2c780(param_1,0);
    return;
  case 1:
    if (param_1[5] != 100) {
      *(undefined4 *)(*param_1 + 0x14) = 0x14;
      *(int *)(*param_1 + 0x18) = param_1[5];
      (**(code **)*param_1)(param_1);
    }
    param_1[0x10] = 1;
    param_1[0x34] = 1;
    param_1[0xf] = 1;
    param_1[0x37] = 0;
    puVar1 = (undefined4 *)param_1[0x11];
    *puVar1 = 1;
    puVar1[2] = 1;
    puVar1[3] = 1;
    puVar1[4] = 0;
    puVar1[5] = 0;
    puVar1[6] = 0;
    return;
  case 2:
    if (param_1[5] != 100) {
      *(undefined4 *)(*param_1 + 0x14) = 0x14;
      *(int *)(*param_1 + 0x18) = param_1[5];
      (**(code **)*param_1)(param_1);
    }
    break;
  case 3:
    if (param_1[5] != 100) {
      *(undefined4 *)(*param_1 + 0x14) = 0x14;
      *(int *)(*param_1 + 0x18) = param_1[5];
      (**(code **)*param_1)(param_1);
    }
    break;
  case 4:
    if (param_1[5] != 100) {
      *(undefined4 *)(*param_1 + 0x14) = 0x14;
      *(int *)(*param_1 + 0x18) = param_1[5];
      (**(code **)*param_1)(param_1);
    }
    puVar1 = (undefined4 *)param_1[0x11];
    param_1[0x34] = 0;
    param_1[0x37] = 1;
    param_1[0x10] = 4;
    param_1[0xf] = 4;
    *puVar1 = 0x43;
    puVar1[2] = 1;
    puVar1[3] = 1;
    puVar1[4] = 0;
    puVar1[5] = 0;
    puVar1[6] = 0;
    iVar2 = param_1[0x11];
    *(undefined4 *)(iVar2 + 0x54) = 0x4d;
    *(undefined4 *)(iVar2 + 0x5c) = 1;
    *(undefined4 *)(iVar2 + 0x60) = 1;
    *(undefined4 *)(iVar2 + 100) = 0;
    *(undefined4 *)(iVar2 + 0x68) = 0;
    *(undefined4 *)(iVar2 + 0x6c) = 0;
    iVar2 = param_1[0x11];
    *(undefined4 *)(iVar2 + 0xa8) = 0x59;
    *(undefined4 *)(iVar2 + 0xb0) = 1;
    *(undefined4 *)(iVar2 + 0xb4) = 1;
    *(undefined4 *)(iVar2 + 0xb8) = 0;
    *(undefined4 *)(iVar2 + 0xbc) = 0;
    *(undefined4 *)(iVar2 + 0xc0) = 0;
    iVar2 = param_1[0x11];
    *(undefined4 *)(iVar2 + 0xfc) = 0x4b;
    *(undefined4 *)(iVar2 + 0x104) = 1;
    *(undefined4 *)(iVar2 + 0x108) = 1;
    *(undefined4 *)(iVar2 + 0x10c) = 0;
    *(undefined4 *)(iVar2 + 0x110) = 0;
    *(undefined4 *)(iVar2 + 0x114) = 0;
    return;
  case 5:
    if (param_1[5] != 100) {
      *(undefined4 *)(*param_1 + 0x14) = 0x14;
      *(int *)(*param_1 + 0x18) = param_1[5];
      (**(code **)*param_1)(param_1);
    }
    puVar1 = (undefined4 *)param_1[0x11];
    param_1[0x10] = 5;
    param_1[0x37] = 1;
    param_1[0x34] = 0;
    param_1[0xf] = 4;
    puVar1[2] = 2;
    puVar1[3] = 2;
    *puVar1 = 1;
    puVar1[4] = 0;
    puVar1[5] = 0;
    puVar1[6] = 0;
    iVar2 = param_1[0x11];
    *(undefined4 *)(iVar2 + 0x54) = 2;
    *(undefined4 *)(iVar2 + 0x5c) = 1;
    *(undefined4 *)(iVar2 + 0x60) = 1;
    *(undefined4 *)(iVar2 + 100) = 1;
    *(undefined4 *)(iVar2 + 0x68) = 1;
    *(undefined4 *)(iVar2 + 0x6c) = 1;
    iVar2 = param_1[0x11];
    *(undefined4 *)(iVar2 + 0xa8) = 3;
    *(undefined4 *)(iVar2 + 0xb0) = 1;
    *(undefined4 *)(iVar2 + 0xb4) = 1;
    *(undefined4 *)(iVar2 + 0xb8) = 1;
    *(undefined4 *)(iVar2 + 0xbc) = 1;
    *(undefined4 *)(iVar2 + 0xc0) = 1;
    iVar2 = param_1[0x11];
    *(undefined4 *)(iVar2 + 0x104) = 2;
    *(undefined4 *)(iVar2 + 0x108) = 2;
    *(undefined4 *)(iVar2 + 0xfc) = 4;
    *(undefined4 *)(iVar2 + 0x10c) = 0;
    *(undefined4 *)(iVar2 + 0x110) = 0;
    *(undefined4 *)(iVar2 + 0x114) = 0;
    return;
  default:
    *(undefined4 *)(*param_1 + 0x14) = 9;
    (**(code **)*param_1)(param_1);
    return;
  }
  puVar1 = (undefined4 *)param_1[0x11];
  param_1[0x34] = 1;
  param_1[0x37] = 0;
  param_1[0x10] = 3;
  param_1[0xf] = 3;
  *puVar1 = 1;
  puVar1[2] = 2;
  puVar1[3] = 2;
  puVar1[4] = 0;
  puVar1[5] = 0;
  puVar1[6] = 0;
  iVar2 = param_1[0x11];
  *(undefined4 *)(iVar2 + 0x54) = 2;
  *(undefined4 *)(iVar2 + 0x5c) = 1;
  *(undefined4 *)(iVar2 + 0x60) = 1;
  *(undefined4 *)(iVar2 + 100) = 1;
  *(undefined4 *)(iVar2 + 0x68) = 1;
  *(undefined4 *)(iVar2 + 0x6c) = 1;
  iVar2 = param_1[0x11];
  *(undefined4 *)(iVar2 + 0xa8) = 3;
  *(undefined4 *)(iVar2 + 0xb0) = 1;
  *(undefined4 *)(iVar2 + 0xb4) = 1;
  *(undefined4 *)(iVar2 + 0xb8) = 1;
  *(undefined4 *)(iVar2 + 0xbc) = 1;
  *(undefined4 *)(iVar2 + 0xc0) = 1;
  return;
}



void FUN_00b2cd20(int *param_1)

{
  int iVar1;
  int *piVar2;
  
  if (param_1[5] != 100) {
    *(undefined4 *)(*param_1 + 0x14) = 0x14;
    *(int *)(*param_1 + 0x18) = param_1[5];
    (**(code **)*param_1)(param_1);
  }
  if (param_1[0x11] == 0) {
    iVar1 = (**(code **)param_1[1])(param_1,0,0x348);
    param_1[0x11] = iVar1;
  }
  param_1[0xe] = 8;
  FUN_00b2c410(param_1,0,&DAT_00dcf680,0x32,1);
  FUN_00b2c410(param_1,1,&DAT_00dcf780,0x32,1);
  FUN_00b2c720();
  piVar2 = param_1 + 0x22;
  iVar1 = 0x10;
  do {
    *(undefined *)(piVar2 + -4) = 0;
    *(undefined *)piVar2 = 1;
    *(undefined *)(piVar2 + 4) = 5;
    piVar2 = (int *)((int)piVar2 + 1);
    iVar1 = iVar1 + -1;
  } while (iVar1 != 0);
  param_1[0x2b] = 0;
  param_1[0x2a] = 0;
  param_1[0x2c] = 0;
  param_1[0x2d] = 0;
  param_1[0x2e] = 0;
  if (8 < param_1[0xe]) {
    param_1[0x2e] = 1;
  }
  param_1[0x2f] = 0;
  param_1[0x30] = 0;
  param_1[0x31] = 0;
  param_1[0x32] = 0;
  param_1[0x33] = 0;
  *(undefined *)(param_1 + 0x35) = 1;
  *(undefined *)((int)param_1 + 0xd5) = 1;
  *(undefined *)((int)param_1 + 0xd6) = 0;
  *(undefined2 *)(param_1 + 0x36) = 1;
  *(undefined2 *)((int)param_1 + 0xda) = 1;
  FUN_00b2ca60(param_1);
  return;
}



void FUN_00b2ce30(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    (**(code **)(*(int *)(param_1 + 4) + 0x24))(param_1,1);
    if (*(int *)(param_1 + 0x10) != 0) {
      *(undefined4 *)(param_1 + 0x14) = 200;
      *(undefined4 *)(param_1 + 0x130) = 0;
      return;
    }
    *(undefined4 *)(param_1 + 0x14) = 100;
  }
  return;
}



void FUN_00b2ce70(int param_1)

{
  if (*(int *)(param_1 + 4) != 0) {
    (**(code **)(*(int *)(param_1 + 4) + 0x28))(param_1);
  }
  *(undefined4 *)(param_1 + 0x14) = 0;
  *(undefined4 *)(param_1 + 4) = 0;
  return;
}



void FUN_00b2cea0(int param_1)

{
  int iVar1;
  
  iVar1 = (***(code ***)(param_1 + 4))(param_1,0,0x84);
  *(undefined4 *)(iVar1 + 0x80) = 0;
  return;
}



void FUN_00b2ced0(int param_1)

{
  int iVar1;
  
  iVar1 = (***(code ***)(param_1 + 4))(param_1,0,0x118);
  *(undefined4 *)(iVar1 + 0x114) = 0;
  return;
}



int FUN_00b2cf00(int param_1,int param_2)

{
  return (param_1 + -1 + param_2) / param_2;
}



int FUN_00b2cf10(int param_1,int param_2)

{
  int iVar1;
  
  iVar1 = param_1 + -1 + param_2;
  return iVar1 - iVar1 % param_2;
}



void FUN_00b2cf30(int param_1,int param_2,int param_3,int param_4,int param_5,size_t param_6)

{
  void *_Src;
  void *_Dst;
  void **ppvVar1;
  void **ppvVar2;
  
  ppvVar1 = (void **)(param_1 + param_2 * 4);
  ppvVar2 = (void **)(param_3 + param_4 * 4);
  if (0 < param_5) {
    do {
      _Src = *ppvVar1;
      _Dst = *ppvVar2;
      ppvVar1 = ppvVar1 + 1;
      ppvVar2 = ppvVar2 + 1;
      _memcpy(_Dst,_Src,param_6);
      param_5 = param_5 + -1;
    } while (0 < param_5);
  }
  return;
}



void FUN_00b2cf80(void *param_1,void *param_2,int param_3)

{
  _memcpy(param_2,param_1,param_3 << 7);
  return;
}



void FUN_00b2cfa0(void *param_1,size_t param_2)

{
  _memset(param_1,0,param_2);
  return;
}



undefined4 __fastcall FUN_00b2cfc0(undefined4 param_1,int param_2)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  
  if (((((*(int *)(param_2 + 0x4c) != 0) || (*(int *)(param_2 + 300) != 0)) ||
       (*(int *)(param_2 + 0x28) != 3)) ||
      (((*(int *)(param_2 + 0x24) != 3 || (*(int *)(param_2 + 0x2c) != 2)) ||
       ((*(int *)(param_2 + 0x78) != 3 ||
        ((iVar1 = *(int *)(param_2 + 0xd8), *(int *)(iVar1 + 8) != 2 ||
         (uVar3 = 1, *(int *)(iVar1 + 0x5c) != 1)))))))) ||
     ((*(int *)(iVar1 + 0xb0) != 1 ||
      (((((2 < *(int *)(iVar1 + 0xc) || (*(int *)(iVar1 + 0x60) != 1)) ||
         (*(int *)(iVar1 + 0xb4) != 1)) ||
        ((iVar2 = *(int *)(param_2 + 0x13c), *(int *)(iVar1 + 0x24) != iVar2 ||
         (*(int *)(iVar1 + 0x78) != iVar2)))) || (*(int *)(iVar1 + 0xcc) != iVar2)))))) {
    uVar3 = 0;
  }
  return uVar3;
}



void FUN_00b2d040(int *param_1)

{
  int *piVar1;
  uint uVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  int *piVar6;
  
  piVar3 = param_1;
  if (param_1[5] != 0xca) {
    *(undefined4 *)(*param_1 + 0x14) = 0x14;
    *(int *)(*param_1 + 0x18) = param_1[5];
    (**(code **)*param_1)(param_1);
  }
  iVar4 = param_1[0xc];
  uVar2 = param_1[0xd];
  if ((uint)(iVar4 * 8) < uVar2 || iVar4 * 8 - uVar2 == 0) {
    iVar4 = FUN_00b2cf00(param_1[7],8);
    param_1[0x1c] = iVar4;
    iVar4 = FUN_00b2cf00(param_1[8],8);
    param_1[0x4f] = 1;
  }
  else if ((uint)(iVar4 * 4) < uVar2 || iVar4 * 4 - uVar2 == 0) {
    iVar4 = FUN_00b2cf00(param_1[7],4);
    param_1[0x1c] = iVar4;
    iVar4 = FUN_00b2cf00(param_1[8],4);
    param_1[0x4f] = 2;
  }
  else if (uVar2 < (uint)(iVar4 * 2)) {
    iVar4 = param_1[8];
    param_1[0x1c] = param_1[7];
    param_1[0x4f] = 8;
  }
  else {
    iVar4 = FUN_00b2cf00(param_1[7],2);
    param_1[0x1c] = iVar4;
    iVar4 = FUN_00b2cf00(param_1[8],2);
    param_1[0x4f] = 4;
  }
  piVar6 = param_1 + 9;
  piVar1 = param_1 + 0x36;
  param_1[0x1d] = iVar4;
  param_1 = (int *)0x0;
  if (0 < *piVar6) {
    piVar6 = (int *)(*piVar1 + 0xc);
    do {
      iVar4 = piVar3[0x4f];
      iVar5 = iVar4;
      if (iVar4 < 8) {
        do {
          if ((piVar3[0x4d] * iVar4 < piVar6[-1] * iVar5 * 2) ||
             (piVar3[0x4e] * iVar4 < *piVar6 * iVar5 * 2)) break;
          iVar5 = iVar5 * 2;
        } while (iVar5 < 8);
      }
      piVar6[6] = iVar5;
      param_1 = (int *)((int)param_1 + 1);
      piVar6 = piVar6 + 0x15;
    } while ((int)param_1 < piVar3[9]);
  }
  iVar4 = 0;
  if (0 < piVar3[9]) {
    piVar6 = (int *)(piVar3[0x36] + 0x24);
    do {
      iVar5 = FUN_00b2cf00(piVar6[-7] * *piVar6 * piVar3[7],piVar3[0x4d] * 8);
      piVar6[1] = iVar5;
      iVar5 = FUN_00b2cf00(piVar6[-6] * piVar3[8] * *piVar6,piVar3[0x4e] * 8);
      piVar6[2] = iVar5;
      iVar4 = iVar4 + 1;
      piVar6 = piVar6 + 0x15;
    } while (iVar4 < piVar3[9]);
  }
  switch(piVar3[0xb]) {
  case 1:
    piVar3[0x1e] = 1;
    break;
  case 2:
  case 3:
    piVar3[0x1e] = 3;
    break;
  case 4:
  case 5:
    piVar3[0x1e] = 4;
    break;
  default:
    piVar3[0x1e] = piVar3[9];
  }
  iVar4 = 1;
  if (piVar3[0x15] == 0) {
    iVar4 = piVar3[0x1e];
  }
  piVar3[0x1f] = iVar4;
  iVar4 = FUN_00b2cfc0();
  if (iVar4 == 0) {
    piVar3[0x20] = 1;
    return;
  }
  piVar3[0x20] = piVar3[0x4e];
  return;
}



void FUN_00b2d270(void)

{
  void *_Dst;
  int iVar1;
  int unaff_EBX;
  undefined4 *puVar2;
  undefined4 *puVar3;
  
  _Dst = (void *)(***(code ***)(unaff_EBX + 4))();
  *(int *)(unaff_EBX + 0x144) = (int)_Dst + 0x100;
  _memset(_Dst,0,0x100);
  iVar1 = 0;
  do {
    *(char *)(iVar1 + (int)_Dst + 0x100) = (char)iVar1;
    iVar1 = iVar1 + 1;
  } while (iVar1 < 0x100);
  _memset((void *)((int)_Dst + 0x200),0xff,0x180);
  _memset((void *)((int)_Dst + 0x380),0,0x180);
  puVar2 = *(undefined4 **)(unaff_EBX + 0x144);
  puVar3 = (undefined4 *)((int)_Dst + 0x500);
  for (iVar1 = 0x20; iVar1 != 0; iVar1 = iVar1 + -1) {
    *puVar3 = *puVar2;
    puVar2 = puVar2 + 1;
    puVar3 = puVar3 + 1;
  }
  return;
}



void FUN_00b2d300(void)

{
  int iVar1;
  int *in_EAX;
  undefined4 uVar2;
  int iVar3;
  
  iVar1 = in_EAX[0x69];
  FUN_00b2d040();
  FUN_00b2d270();
  *(undefined4 *)(iVar1 + 0xc) = 0;
  uVar2 = FUN_00b2cfc0();
  *(undefined4 *)(iVar1 + 0x10) = uVar2;
  *(undefined4 *)(iVar1 + 0x14) = 0;
  *(undefined4 *)(iVar1 + 0x18) = 0;
  if ((in_EAX[0x15] == 0) || (in_EAX[0x10] == 0)) {
    in_EAX[0x19] = 0;
    in_EAX[0x1a] = 0;
    in_EAX[0x1b] = 0;
  }
  if (in_EAX[0x15] == 0) goto LAB_00b2d3ad;
  if (in_EAX[0x11] != 0) {
    *(undefined4 *)(*in_EAX + 0x14) = 0x2f;
    (**(code **)*in_EAX)();
  }
  if (in_EAX[0x1e] == 3) {
    if (in_EAX[0x22] == 0) {
      if (in_EAX[0x17] == 0) goto LAB_00b2d377;
      in_EAX[0x1b] = 1;
    }
    else {
      in_EAX[0x1a] = 1;
    }
  }
  else {
    in_EAX[0x1a] = 0;
    in_EAX[0x1b] = 0;
    in_EAX[0x22] = 0;
LAB_00b2d377:
    in_EAX[0x19] = 1;
  }
  if (in_EAX[0x19] != 0) {
    FUN_00b35ec0();
    *(int *)(iVar1 + 0x14) = in_EAX[0x73];
  }
  if ((in_EAX[0x1b] != 0) || (in_EAX[0x1a] != 0)) {
    FUN_00b35250();
    *(int *)(iVar1 + 0x18) = in_EAX[0x73];
  }
LAB_00b2d3ad:
  if (in_EAX[0x11] == 0) {
    if (*(int *)(iVar1 + 0x10) == 0) {
      FUN_00b33890();
      FUN_00b33240();
    }
    else {
      FUN_00b33fa0();
    }
    FUN_00b32cf0();
  }
  FUN_00b329b0();
  if (in_EAX[0x38] == 0) {
    if (in_EAX[0x37] == 0) {
      FUN_00b31990();
    }
    else {
      FUN_00b32620();
    }
  }
  else {
    *(undefined4 *)(*in_EAX + 0x14) = 1;
    (**(code **)*in_EAX)();
  }
  FUN_00b30d90();
  if (in_EAX[0x11] == 0) {
    FUN_00b2fe30();
  }
  (**(code **)(in_EAX[1] + 0x18))();
  (**(code **)(in_EAX[0x6d] + 8))();
  if (((in_EAX[2] != 0) && (in_EAX[0x10] == 0)) && (*(int *)(in_EAX[0x6d] + 0x10) != 0)) {
    iVar3 = in_EAX[9];
    if (in_EAX[0x37] != 0) {
      iVar3 = iVar3 * 3 + 2;
    }
    *(undefined4 *)(in_EAX[2] + 4) = 0;
    *(int *)(in_EAX[2] + 8) = in_EAX[0x50] * iVar3;
    *(undefined4 *)(in_EAX[2] + 0xc) = 0;
    *(uint *)(in_EAX[2] + 0x10) = (in_EAX[0x1b] != 0) + 2;
    *(int *)(iVar1 + 0xc) = *(int *)(iVar1 + 0xc) + 1;
  }
  return;
}



void FUN_00b2d4d0(int *param_1)

{
  int iVar1;
  
  iVar1 = param_1[0x69];
  if (*(int *)(iVar1 + 8) == 0) {
    if ((param_1[0x15] != 0) && (param_1[0x22] == 0)) {
      if ((param_1[0x17] == 0) || (param_1[0x1b] == 0)) {
        if (param_1[0x19] == 0) {
          *(undefined4 *)(*param_1 + 0x14) = 0x2e;
          (**(code **)*param_1)(param_1);
        }
        else {
          param_1[0x73] = *(int *)(iVar1 + 0x14);
        }
      }
      else {
        param_1[0x73] = *(int *)(iVar1 + 0x18);
        *(undefined4 *)(iVar1 + 8) = 1;
      }
    }
    (**(code **)param_1[0x70])(param_1);
    (**(code **)(param_1[0x6b] + 8))(param_1);
    if (param_1[0x11] == 0) {
      if (*(int *)(iVar1 + 0x10) == 0) {
        (**(code **)param_1[0x72])(param_1);
      }
      (**(code **)param_1[0x71])(param_1);
      if (param_1[0x15] != 0) {
        (**(code **)param_1[0x73])(param_1,*(undefined4 *)(iVar1 + 8));
      }
      (**(code **)param_1[0x6c])(param_1,-(*(int *)(iVar1 + 8) != 0) & 3);
      (**(code **)param_1[0x6a])(param_1,0);
    }
  }
  else {
    *(undefined4 *)(iVar1 + 8) = 0;
    (**(code **)param_1[0x73])(param_1,0);
    (**(code **)param_1[0x6c])(param_1,2);
    (**(code **)param_1[0x6a])(param_1,2);
  }
  if (param_1[2] != 0) {
    *(undefined4 *)(param_1[2] + 0xc) = *(undefined4 *)(iVar1 + 0xc);
    *(uint *)(param_1[2] + 0x10) = (*(int *)(iVar1 + 8) != 0) + 1 + *(int *)(iVar1 + 0xc);
    if ((param_1[0x10] != 0) && (*(int *)(param_1[0x6d] + 0x14) == 0)) {
      *(int *)(param_1[2] + 0x10) = *(int *)(param_1[2] + 0x10) + (param_1[0x1b] != 0) + 1;
    }
  }
  return;
}



void FUN_00b2d660(int param_1)

{
  code **ppcVar1;
  
  ppcVar1 = (code **)(***(code ***)(param_1 + 4))(param_1,1,0x1c);
  *(code ***)(param_1 + 0x1a4) = ppcVar1;
  *ppcVar1 = FUN_00b2d4d0;
  ppcVar1[1] = (code *)&LAB_00b2d630;
  ppcVar1[2] = (code *)0x0;
  FUN_00b2d300();
  return;
}



void FUN_00b2d6a0(void)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int *unaff_ESI;
  int *piVar4;
  undefined4 *puVar5;
  
  if ((0xffdc < unaff_ESI[8]) || (0xffdc < unaff_ESI[7])) {
    *(undefined4 *)(*unaff_ESI + 0x14) = 0x29;
    *(undefined4 *)(*unaff_ESI + 0x18) = 0xffdc;
    (**(code **)*unaff_ESI)();
  }
  if (unaff_ESI[0x35] != 8) {
    *(undefined4 *)(*unaff_ESI + 0x14) = 0xf;
    *(int *)(*unaff_ESI + 0x18) = unaff_ESI[0x35];
    (**(code **)*unaff_ESI)();
  }
  if (10 < unaff_ESI[9]) {
    *(undefined4 *)(*unaff_ESI + 0x14) = 0x1a;
    *(int *)(*unaff_ESI + 0x18) = unaff_ESI[9];
    *(undefined4 *)(*unaff_ESI + 0x1c) = 10;
    (**(code **)*unaff_ESI)();
  }
  iVar3 = 0;
  unaff_ESI[0x4d] = 1;
  unaff_ESI[0x4e] = 1;
  if (0 < unaff_ESI[9]) {
    piVar4 = (int *)(unaff_ESI[0x36] + 0xc);
    do {
      if ((((piVar4[-1] < 1) || (4 < piVar4[-1])) || (*piVar4 < 1)) || (4 < *piVar4)) {
        *(undefined4 *)(*unaff_ESI + 0x14) = 0x12;
        (**(code **)*unaff_ESI)();
      }
      iVar1 = unaff_ESI[0x4d];
      if (unaff_ESI[0x4d] <= piVar4[-1]) {
        iVar1 = piVar4[-1];
      }
      unaff_ESI[0x4d] = iVar1;
      iVar1 = unaff_ESI[0x4e];
      if (unaff_ESI[0x4e] <= *piVar4) {
        iVar1 = *piVar4;
      }
      iVar3 = iVar3 + 1;
      unaff_ESI[0x4e] = iVar1;
      piVar4 = piVar4 + 0x15;
    } while (iVar3 < unaff_ESI[9]);
  }
  iVar3 = 0;
  unaff_ESI[0x4f] = 8;
  if (0 < unaff_ESI[9]) {
    puVar5 = (undefined4 *)(unaff_ESI[0x36] + 0x1c);
    do {
      puVar5[2] = 8;
      uVar2 = FUN_00b2cf00(puVar5[-5] * unaff_ESI[7],unaff_ESI[0x4d] * 8);
      *puVar5 = uVar2;
      uVar2 = FUN_00b2cf00(puVar5[-4] * unaff_ESI[8],unaff_ESI[0x4e] * 8);
      puVar5[1] = uVar2;
      uVar2 = FUN_00b2cf00(puVar5[-5] * unaff_ESI[7],unaff_ESI[0x4d]);
      puVar5[3] = uVar2;
      uVar2 = FUN_00b2cf00(puVar5[-4] * unaff_ESI[8],unaff_ESI[0x4e]);
      puVar5[4] = uVar2;
      puVar5[5] = 1;
      puVar5[0xc] = 0;
      iVar3 = iVar3 + 1;
      puVar5 = puVar5 + 0x15;
    } while (iVar3 < unaff_ESI[9]);
  }
  iVar3 = FUN_00b2cf00(unaff_ESI[8],unaff_ESI[0x4e] * 8);
  unaff_ESI[0x50] = iVar3;
  if ((unaff_ESI[9] <= unaff_ESI[0x52]) && (unaff_ESI[0x37] == 0)) {
    *(undefined4 *)(unaff_ESI[0x6d] + 0x10) = 0;
    return;
  }
  *(undefined4 *)(unaff_ESI[0x6d] + 0x10) = 1;
  return;
}



uint FUN_00b2d8a0(void)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int *unaff_ESI;
  uint uStack_8;
  int *piStack_4;
  
  iVar2 = unaff_ESI[0x52];
  if (iVar2 != 1) {
    if ((iVar2 < 1) || (4 < iVar2)) {
      *(undefined4 *)(*unaff_ESI + 0x14) = 0x1a;
      *(int *)(*unaff_ESI + 0x18) = unaff_ESI[0x52];
      *(undefined4 *)(*unaff_ESI + 0x1c) = 4;
      (**(code **)*unaff_ESI)();
    }
    iVar2 = FUN_00b2cf00(unaff_ESI[7],unaff_ESI[0x4d] * 8);
    unaff_ESI[0x57] = iVar2;
    uVar3 = FUN_00b2cf00(unaff_ESI[8],unaff_ESI[0x4e] * 8);
    unaff_ESI[0x58] = uVar3;
    unaff_ESI[0x59] = 0;
    uStack_8 = 0;
    if (0 < unaff_ESI[0x52]) {
      piStack_4 = unaff_ESI + 0x53;
      do {
        iVar2 = *piStack_4;
        uVar3 = *(uint *)(iVar2 + 8);
        uVar1 = *(uint *)(iVar2 + 0xc);
        *(uint *)(iVar2 + 0x40) = *(int *)(iVar2 + 0x24) * uVar3;
        uVar4 = *(uint *)(iVar2 + 0x1c) % uVar3;
        iVar5 = uVar1 * uVar3;
        *(uint *)(iVar2 + 0x34) = uVar3;
        *(uint *)(iVar2 + 0x38) = uVar1;
        *(int *)(iVar2 + 0x3c) = iVar5;
        if (uVar4 == 0) {
          uVar4 = uVar3;
        }
        *(uint *)(iVar2 + 0x44) = uVar4;
        uVar3 = *(uint *)(iVar2 + 0x20) % uVar1;
        if (uVar3 == 0) {
          uVar3 = uVar1;
        }
        *(uint *)(iVar2 + 0x48) = uVar3;
        if (10 < unaff_ESI[0x59] + iVar5) {
          *(undefined4 *)(*unaff_ESI + 0x14) = 0xd;
          (**(code **)*unaff_ESI)();
        }
        for (; 0 < iVar5; iVar5 = iVar5 + -1) {
          unaff_ESI[unaff_ESI[0x59] + 0x5a] = uStack_8;
          unaff_ESI[0x59] = unaff_ESI[0x59] + 1;
        }
        piStack_4 = piStack_4 + 1;
        uVar3 = uStack_8 + 1;
        uStack_8 = uVar3;
      } while ((int)uVar3 < unaff_ESI[0x52]);
    }
    return uVar3;
  }
  iVar2 = unaff_ESI[0x53];
  unaff_ESI[0x57] = *(int *)(iVar2 + 0x1c);
  unaff_ESI[0x58] = *(int *)(iVar2 + 0x20);
  uVar3 = *(uint *)(iVar2 + 0xc);
  *(undefined4 *)(iVar2 + 0x40) = *(undefined4 *)(iVar2 + 0x24);
  uVar1 = *(uint *)(iVar2 + 0x20);
  uVar4 = uVar1 % uVar3;
  *(undefined4 *)(iVar2 + 0x34) = 1;
  *(undefined4 *)(iVar2 + 0x38) = 1;
  *(undefined4 *)(iVar2 + 0x3c) = 1;
  *(undefined4 *)(iVar2 + 0x44) = 1;
  if (uVar4 == 0) {
    uVar4 = uVar3;
  }
  *(uint *)(iVar2 + 0x48) = uVar4;
  unaff_ESI[0x59] = 1;
  unaff_ESI[0x5a] = 0;
  return uVar1 / uVar3;
}



void FUN_00b2da40(void)

{
  int iVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  int *unaff_EBX;
  undefined4 *puVar5;
  undefined4 *puVar6;
  int *local_8;
  int local_4;
  
  local_4 = 0;
  if (0 < unaff_EBX[0x52]) {
    local_8 = unaff_EBX + 0x53;
    do {
      iVar1 = *local_8;
      if (*(int *)(iVar1 + 0x4c) == 0) {
        uVar2 = *(uint *)(iVar1 + 0x10);
        if ((3 < uVar2) || (unaff_EBX[uVar2 + 0x29] == 0)) {
          *(undefined4 *)(*unaff_EBX + 0x14) = 0x34;
          *(uint *)(*unaff_EBX + 0x18) = uVar2;
          (**(code **)*unaff_EBX)();
        }
        puVar3 = (undefined4 *)(**(code **)unaff_EBX[1])();
        puVar5 = (undefined4 *)unaff_EBX[uVar2 + 0x29];
        puVar6 = puVar3;
        for (iVar4 = 0x21; iVar4 != 0; iVar4 = iVar4 + -1) {
          *puVar6 = *puVar5;
          puVar5 = puVar5 + 1;
          puVar6 = puVar6 + 1;
        }
        *(undefined4 **)(iVar1 + 0x4c) = puVar3;
      }
      local_8 = local_8 + 1;
      local_4 = local_4 + 1;
    } while (local_4 < unaff_EBX[0x52]);
  }
  return;
}



void FUN_00b2dae0(int param_1)

{
  FUN_00b2d8a0();
  FUN_00b2da40();
  (***(code ***)(param_1 + 0x1bc))(param_1);
  (***(code ***)(param_1 + 0x1ac))(param_1);
  **(undefined4 **)(param_1 + 0x1b4) = *(undefined4 *)(*(int *